%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) )/*/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('"',tranwrd(symget('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('"',tranwrd(symget('syswarningtext'),'"','\"'),'"'); put ",""SYSWARNINGTEXT"" : " syswarningtext; put ',"END_DTTM" : "' "%sysfunc(datetime(),E8601DT26.6)" '" '; put "}" ; if mode ne 'SASJS' then put '>>weboutEND<<'; run; %put _all_; %if "&sysprocessmode " = "SAS Stored Process Server " %then %do; data _null_; putlog 'stpsrvset program err and syscc'; rc=stpsrvset('program error', 0); call symputx("syscc",0,"g"); run; %if &sysscp=WIN and 1=0 /* deprecating this logic until we figure out a consistent abort */ and "%substr(%str(&sysvlong ),1,8)"="9.04.01M" and "%substr(%str(&sysvlong ),9,1)">"5" %then %do; /* skip approach (below) does not work in windows m6+ envs */ endsas; %end; %else %do; /** * endsas kills 9.4m3 deployments by orphaning multibridges. * Abort variants are ungraceful (non zero return code) * This approach lets SAS run silently until the end :-) * Caution - fails when called within a %include within a macro * Use mp_include() to handle this. */ filename skip temp; data _null_; file skip; put '%macro skip();'; comment '%mend skip; -> fix lint '; put '%macro skippy();'; comment '%mend skippy; -> fix lint '; run; %inc skip; %end; %end; %else %if "&sysprocessmode " = "SAS Compute Server " %then %do; /* endsas kills the session making it harder to fetch results */ data _null_; syswarningtext=symget('syswarningtext'); syserrortext=symget('syserrortext'); abort_msg=symget('msg'); syscc=symget('syscc'); sysuserid=symget('sysuserid'); iftrue=symget('iftrue'); put (_all_)(/=); call symputx('syscc',0); abort cancel nolist; run; %end; %else %do; %abort cancel; %end; %end; %else %do; %put _all_; %abort cancel; %end; %mend mp_abort; /** @endcond */ %macro mf_isblank(param )/*/STORE SOURCE*/; %sysevalf(%superq(param)=,boolean) %mend mf_isblank; %macro mp_dropmembers( list /* space separated list of datasets / views */ ,libref=WORK /* can only drop from a single library at a time */ ,iftrue=%str(1=1) )/*/STORE SOURCE*/; %if not(%eval(%unquote(&iftrue))) %then %return; %if %mf_isblank(&list) %then %do; %put NOTE: nothing to drop!; %return; %end; proc datasets lib=&libref nolist; delete &list; delete &list /mtype=view; run; %mend mp_dropmembers; %macro mm_createstp( stpname=Macro People STP ,stpdesc=This stp was created automatically by the mm_createstp macro ,filename=mm_createstp.sas ,directory=SASEnvironment/SASCode ,tree=/User Folders/sasdemo ,package=false ,streaming=true ,outds=work.mm_createstp ,mDebug=0 ,server=SASApp ,stptype=1 ,minify=NO ,frefin=mm_in ,frefout=mm_out )/*/STORE SOURCE*/; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_CreateSTP.sas; %&mD.put _local_; %mp_abort( iftrue=(%mf_verifymacvars(stpname filename directory tree)=0) ,mac=&sysmacroname ,msg=%str(Empty inputs: stpname filename directory tree) ) %mp_dropmembers(%scan(&outds,2,.)) /** * check tree exists */ data _null_; length type uri $256; rc=metadata_pathobj("","&tree","Folder",type,uri); call symputx('foldertype',type,'l'); call symputx('treeuri',uri,'l'); run; %if &foldertype ne Tree %then %do; %put %str(WARN)ING: Tree &tree does not exist!; %return; %end; /** * Check STP does not exist already */ %local cmtype; data _null_; length type uri $256; rc=metadata_pathobj("","&tree/&stpname",'StoredProcess',type,uri); call symputx('cmtype',type,'l'); call symputx('stpuri',uri,'l'); run; %if &cmtype = ClassifierMap %then %do; %put %str(WARN)ING: Stored Process &stpname already exists in &tree!; %return; %end; /** * Check that the physical file exists */ %if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do; %put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!; %return; %end; %if &stptype=1 %then %do; /* type 1 STP - where code is stored on filesystem */ %if %sysevalf(&sysver lt 9.2) %then %do; %put %str(WARN)ING: Version 9.2 or later required; %return; %end; /* check directory object (where 9.2 source code reference is stored) */ data _null_; length id $20 dirtype $256; rc=metadata_resolve("&directory",dirtype,id); call symputx('checkdirtype',dirtype,'l'); run; %if &checkdirtype ne Directory %then %do; %mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug) %if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do; %put %str(WARN)ING: The directory object does not exist for &directory; %return; %end; %end; %else %do; data &outds; directoryuri="&directory"; run; %end; data &outds (keep=stpuri prompturi fileuri texturi); length stpuri prompturi fileuri texturi serveruri $256 ; if _n_=1 then call missing (of _all_); set &outds; /* final checks on uris */ length id $20 type $256; __rc=metadata_resolve("&treeuri",type,id); if type ne 'Tree' then do; putlog "%str(WARN)ING: Invalid tree URI: &treeuri"; stopme=1; end; __rc=metadata_resolve(directoryuri,type,id); if type ne 'Directory' then do; putlog "%str(WARN)ING: Invalid directory URI: " directoryuri; stopme=1; end; /* get server info */ __rc=metadata_resolve("&server",type,serveruri); if type ne 'LogicalServer' then do; __rc=metadata_getnobj("omsobj:LogicalServer?@Name='&server'",1,serveruri); if serveruri='' then do; putlog "%str(WARN)ING: Invalid server: &server"; stopme=1; end; end; if stopme=1 then do; putlog (_all_)(=); stop; end; /* create empty prompt */ rc1=METADATA_NEWOBJ('PromptGroup',prompturi,'Parameters'); rc2=METADATA_SETATTR(prompturi, 'UsageVersion', '1000000'); rc3=METADATA_SETATTR(prompturi, 'GroupType','2'); rc4=METADATA_SETATTR(prompturi, 'Name','Parameters'); rc5=METADATA_SETATTR(prompturi, 'PublicType','Embedded:PromptGroup'); GroupInfo= ""; rc6 = METADATA_SETATTR(prompturi, 'GroupInfo',groupinfo); if sum(of rc1-rc6) ne 0 then do; putlog "%str(WARN)ING: Issue creating prompt."; if prompturi ne . then do; putlog ' Removing orphan: ' prompturi; rc = METADATA_DELOBJ(prompturi); put rc=; end; stop; end; /* create a file uri */ rc7=METADATA_NEWOBJ('File',fileuri,'SP Source File'); rc8=METADATA_SETATTR(fileuri, 'FileName',"&filename"); rc9=METADATA_SETATTR(fileuri, 'IsARelativeName','1'); rc10=METADATA_SETASSN(fileuri, 'Directories','MODIFY',directoryuri); if sum(of rc7-rc10) ne 0 then do; putlog "%str(WARN)ING: Issue creating file."; if fileuri ne . then do; putlog ' Removing orphans:' prompturi fileuri; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); put (_all_)(=); end; stop; end; /* create a TextStore object */ rc11= METADATA_NEWOBJ('TextStore',texturi,'Stored Process'); rc12= METADATA_SETATTR(texturi, 'TextRole','StoredProcessConfiguration'); rc13= METADATA_SETATTR(texturi, 'TextType','XML'); storedtext='' !!"" !!""; rc14= METADATA_SETATTR(texturi, 'StoredText',storedtext); if sum(of rc11-rc14) ne 0 then do; putlog "%str(WARN)ING: Issue creating TextStore."; if texturi ne . then do; putlog ' Removing orphans: ' prompturi fileuri texturi; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); rc = METADATA_DELOBJ(texturi); put (_all_)(=); end; stop; end; /* create meta obj */ rc15= METADATA_NEWOBJ('ClassifierMap',stpuri,"&stpname"); rc16= METADATA_SETASSN(stpuri, 'Trees','MODIFY',treeuri); rc17= METADATA_SETASSN(stpuri, 'ComputeLocations','MODIFY',serveruri); rc18= METADATA_SETASSN(stpuri, 'SourceCode','MODIFY',fileuri); rc19= METADATA_SETASSN(stpuri, 'Prompts','MODIFY',prompturi); rc20= METADATA_SETASSN(stpuri, 'Notes','MODIFY',texturi); rc21= METADATA_SETATTR(stpuri, 'PublicType', 'StoredProcess'); rc22= METADATA_SETATTR(stpuri, 'TransformRole', 'StoredProcess'); rc23= METADATA_SETATTR(stpuri, 'UsageVersion', '1000000'); rc24= METADATA_SETATTR(stpuri, 'Desc', "&stpdesc"); /* tidy up if err */ if sum(of rc15-rc24) ne 0 then do; putlog "%str(WARN)ING: Issue creating STP."; if stpuri ne . then do; putlog ' Removing orphans: ' prompturi fileuri texturi stpuri; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); rc = METADATA_DELOBJ(texturi); rc = METADATA_DELOBJ(stpuri); put (_all_)(=); end; end; else do; fullpath=cats('_program=',treepath,"/&stpname"); putlog "NOTE: Stored Process Created!"; putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath; putlog "NOTE- "; putlog "NOTE-"; end; output; stop; run; %end; %else %if &stptype=2 %then %do; /* type 2 stp - code is stored in metadata */ %if %sysevalf(&sysver lt 9.3) %then %do; %put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs; %return; %end; /* check we have the correct ServerContext */ %mm_getservercontexts(outds=contexts) %local serveruri; %let serveruri=NOTFOUND; data _null_; set contexts; where upcase(servername)="%upcase(&server)"; call symputx('serveruri',serveruri); run; %if &serveruri=NOTFOUND %then %do; %put %str(WARN)ING: ServerContext *&server* not found!; %return; %end; /** * First, create a Hello World type 2 stored process */ filename &frefin temp; data _null_; file &frefin; treeuri=quote(symget('treeuri')); serveruri=quote(symget('serveruri')); stpdesc=quote(symget('stpdesc')); stpname=quote(symget('stpname')); put "$METAREPOSITORY "/ ''/ " "/ " "/ " "/ " "/ ' '/ ' ' / " "/ " "/ ' '/ " "/ ""/ "SAS"/ "268435456"; run; filename &frefout temp; proc metadata in= &frefin out=&frefout ; run; %if &mdebug=1 %then %do; /* write the response to the log for debugging */ data _null_; infile &frefout lrecl=1048576; input; put _infile_; run; %end; /** * Next, add the source code */ %mm_updatestpsourcecode(stp=&tree/&stpname ,stpcode="&directory/&filename" ,mdebug=&mdebug ,minify=&minify) %end; %else %do; %put %str(WARN)ING: STPTYPE=*&stptype* not recognised!; %end; %mend mm_createstp; %macro mf_getuser( )/*/STORE SOURCE*/; %local user; %if %symexist(_sasjs_username) %then %let user=&_sasjs_username; %else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do; %let user=&SYS_COMPUTE_SESSION_OWNER; %end; %else %if %symexist(_metaperson) %then %do; %if %length(&_metaperson)=0 %then %let user=&sysuserid; /* sometimes SAS will add @domain extension - remove for consistency */ /* but be sure to quote in case of usernames with commas */ %else %let user=%unquote(%scan(%quote(&_metaperson),1,@)); %end; %else %let user=&sysuserid; %quote(&user) %mend mf_getuser; %macro mm_createfolder(path=,mDebug=0); %put &sysmacroname: execution started for &path; %local dbg errorcheck; %if &mDebug=0 %then %let dbg=*; %local parentFolderObjId child errorcheck paths; %let paths=0; %let errorcheck=1; %if &syscc ge 4 %then %do; %put SYSCC=&syscc - this macro requires a clean session; %return; %end; data _null_; length objId parentId objType parent child $200 folderPath $1000; call missing (of _all_); folderPath = "%trim(&path)"; * remove any trailing slash ; if ( substr(folderPath,length(folderPath),1) = '/' ) then folderPath=substr(folderPath,1,length(folderPath)-1); * name must not be blank; if ( folderPath = '' ) then do; put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank"; end; * must have a starting slash ; if ( substr(folderPath,1,1) ne '/' ) then do; put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash"; stop; end; * check if folder already exists ; rc=metadata_pathobj('',cats(folderPath,"(Folder)"),"",objType,objId); if rc ge 1 then do; put "NOTE: Folder " folderPath " already exists!"; stop; end; * do not create a root (one level) folder ; if countc(folderPath,'/')=1 then do; put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder"; stop; end; * check that root folder exists ; root=cats('/',scan(folderpath,1,'/'),"(Folder)"); if metadata_pathobj('',root,"",objType,parentId)<1 then do; put "%str(ERR)OR: " root " does not exist!"; stop; end; * check that parent folder exists ; child=scan(folderPath,-1,'/'); parent=substr(folderpath,1,length(folderpath)-length(child)-1); rc=metadata_pathobj('',cats(parent,"(Folder)"),"",objType,parentId); if rc<1 then do; putlog 'The following folders will be created:'; /* folder does not exist - so start from top and work down */ length newpath $1000; paths=0; do x=2 to countw(folderpath,'/'); newpath=''; do i=1 to x; newpath=cats(newpath,'/',scan(folderpath,i,'/')); end; rc=metadata_pathobj('',cats(newpath,"(Folder)"),"",objType,parentId); if rc<1 then do; paths+1; call symputx(cats('path',paths),newpath); putlog newpath; end; call symputx('paths',paths); end; end; else putlog "parent " parent " exists"; call symputx('parentFolderObjId',parentId,'l'); call symputx('child',child,'l'); call symputx('errorcheck',0,'l'); &dbg put (_all_)(=); run; %if &errorcheck=1 or &syscc ge 4 %then %return; %if &paths>0 %then %do x=1 %to &paths; %put executing recursive call for &&path&x; %mm_createfolder(path=&&path&x) %end; %else %do; filename __newdir temp; options noquotelenmax; %local inmeta; %put creating: &path; %let inmeta=$METAREPOSITORY SAS268435456 ; proc metadata in="&inmeta" out=__newdir verbose; run ; /* check it was successful */ data _null_; length objId parentId objType parent child $200 ; call missing (of _all_); rc=metadata_pathobj('',cats("&path","(Folder)"),"",objType,objId); if rc ge 1 then do; putlog "SUCCCESS! &path created."; end; else do; putlog "%str(ERR)OR: unsuccessful attempt to create &path"; call symputx('syscc',8); end; run; /* write the response to the log for debugging */ %if &mDebug ne 0 %then %do; data _null_; infile __newdir lrecl=32767; input; put _infile_; run; %end; filename __newdir clear; %end; %put &sysmacroname: execution finished for &path; %mend mm_createfolder; %macro mm_deletestp( target= )/*/STORE SOURCE*/; /** * Check STP does exist */ %local cmtype; data _null_; length type uri $256; rc=metadata_pathobj("","&target",'StoredProcess',type,uri); call symputx('cmtype',type,'l'); call symputx('stpuri',uri,'l'); run; %if &cmtype ne ClassifierMap %then %do; %put NOTE: No Stored Process found at ⌖ %return; %end; filename __in temp lrecl=10000; filename __out temp lrecl=10000; data _null_ ; file __in ; put ""; put "SAS268436480"; put ""; run ; proc metadata in=__in out=__out verbose;run; /* list the result */ data _null_;infile __out; input; list; run; filename __in clear; filename __out clear; /** * Check deletion */ %local isgone; data _null_; length type uri $256; call missing (of _all_); rc=metadata_pathobj("","&target",'Note',type,uri); call symputx('isgone',type,'l'); run; %if &isgone = ClassifierMap %then %do; %put %str(ERR)OR: STP not deleted from ⌖ %let syscc=4; %return; %end; %mend mm_deletestp; /* system macro dependencies for build process end*/ /* system macros for build process */ %macro mm_createwebservice(path= ,name=initService ,precode= ,code=ft15f001 ,desc=This stp was created automagically by the mm_createwebservice macro ,mDebug=0 ,server=SASApp ,replace=YES ,adapter=sasjs )/*/STORE SOURCE*/; %if &syscc ge 4 %then %do; %put &=syscc - &sysmacroname will not execute in this state; %return; %end; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_createwebservice.sas; %&mD.put _local_; * remove any trailing slash ; %if "%substr(&path,%length(&path),1)" = "/" %then %let path=%substr(&path,1,%length(&path)-1); /** * Add webout macro * These put statements are auto generated - to change the macro, change the * source (mm_webout) and run `build.py` */ filename sasjs temp; data _null_; file sasjs lrecl=3000 ; put "/* Created on %sysfunc(datetime(),datetime19.) by %mf_getuser() */"; /* WEBOUT BEGIN */ put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y '; put ' ,engine=DATASTEP '; put ' ,missing=NULL '; put ' ,showmeta=N '; put ' ,maxobs=MAX '; put ')/*/STORE SOURCE*/; '; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval '; put ' tmpds1 tmpds2 tmpds3 tmpds4; '; put '%let numcols=0; '; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;); '; put ' '; put '%if &action=OPEN %then %do; '; put ' options nobomfile; '; put ' data _null_;file &jref encoding=''utf-8'' lrecl=200; '; put ' put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"''; '; put ' run; '; put '%end; '; put '%else %if (&action=ARR or &action=OBJ) %then %do; '; put ' /* force variable names to always be uppercase in the JSON */ '; put ' options validvarname=upcase; '; put ' /* To avoid issues with _webout on EBI - such as encoding diffs and truncation '; put ' (https://support.sas.com/kb/49/325.html) we use temporary files */ '; put ' filename _sjs1 temp lrecl=200 ; '; put ' data _null_; file _sjs1 encoding=''utf-8''; '; put ' put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":"; '; put ' run; '; put ' /* now write to _webout 1 char at a time */ '; put ' data _null_; '; put ' infile _sjs1 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs1 clear; '; put ' '; put ' /* grab col defs */ '; put ' proc contents noprint data=&ds '; put ' out=_data_(keep=name type length format formatl formatd varnum label); '; put ' run; '; put ' %let colinfo=%scan(&syslast,2,.); '; put ' proc sort data=&colinfo; '; put ' by varnum; '; put ' run; '; put ' /* move meta to mac vars */ '; put ' data &colinfo; '; put ' if _n_=1 then call symputx(''numcols'',nobs,''l''); '; put ' set &colinfo end=last nobs=nobs; '; put ' name=upcase(name); '; put ' /* fix formats */ '; put ' if type=2 or type=6 then do; '; put ' typelong=''char''; '; put ' length fmt $49.; '; put ' if format='''' then fmt=cats(''$'',length,''.''); '; put ' else if formatl=0 then fmt=cats(format,''.''); '; put ' else fmt=cats(format,formatl,''.''); '; put ' end; '; put ' else do; '; put ' typelong=''num''; '; put ' if format='''' then fmt=''best.''; '; put ' else if formatl=0 then fmt=cats(format,''.''); '; put ' else if formatd=0 then fmt=cats(format,formatl,''.''); '; put ' else fmt=cats(format,formatl,''.'',formatd); '; put ' end; '; put ' /* 32 char unique name */ '; put ' newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27); '; put ' '; put ' call symputx(cats(''name'',_n_),name,''l''); '; put ' call symputx(cats(''newname'',_n_),newname,''l''); '; put ' call symputx(cats(''length'',_n_),length,''l''); '; put ' call symputx(cats(''fmt'',_n_),fmt,''l''); '; put ' call symputx(cats(''type'',_n_),type,''l''); '; put ' call symputx(cats(''typelong'',_n_),typelong,''l''); '; put ' call symputx(cats(''label'',_n_),coalescec(label,name),''l''); '; put ' /* overwritten when fmt=Y and a custom format exists in catalog */ '; put ' if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l''); '; put ' else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l''); '; put ' run; '; put ' '; put ' %let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' proc sql; '; put ' select count(*) into: lastobs from &ds; '; put ' %if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs)); '; put ' '; put ' %if &engine=PROCJSON %then %do; '; put ' %if &missing=STRING %then %do; '; put ' %put &sysmacroname: Special Missings not supported in proc json.; '; put ' %put &sysmacroname: Switching to DATASTEP engine; '; put ' %goto datastep; '; put ' %end; '; put ' data &tempds; '; put ' set &ds; '; put ' &stmt_obs; '; put ' %if &fmt=N %then format _numeric_ best32.;; '; put ' /* PRETTY is necessary to avoid line truncation in large files */ '; put ' filename _sjs2 temp lrecl=131068 encoding=''utf-8''; '; put ' proc json out=_sjs2 pretty '; put ' %if &action=ARR %then nokeys ; '; put ' ;export &tempds / nosastags fmtnumeric; '; put ' run; '; put ' /* send back to webout */ '; put ' data _null_; '; put ' infile _sjs2 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs2 clear; '; put ' %end; '; put ' %else %if &engine=DATASTEP %then %do; '; put ' %datastep: '; put ' %if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1 '; put ' %then %do; '; put ' %put &sysmacroname: &ds NOT FOUND!!!; '; put ' %return; '; put ' %end; '; put ' '; put ' %if &fmt=Y %then %do; '; put ' /** '; put ' * Extract format definitions '; put ' * First, by getting library locations from dictionary.formats '; put ' * Then, by exporting the width using proc format '; put ' * Cannot use maxw from sashelp.vformat as not always populated '; put ' * Cannot use fmtinfo() as not supported in all flavours '; put ' */ '; put ' %let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' proc sql noprint; '; put ' create table &tmpds1 as '; put ' select cats(libname,''.'',memname) as FMTCAT, '; put ' FMTNAME '; put ' from dictionary.formats '; put ' where fmttype=''F'' and libname is not null '; put ' and fmtname in (select format from &colinfo where format is not null) '; put ' order by 1; '; put ' create table &tmpds2( '; put ' FMTNAME char(32), '; put ' LENGTH num '; put ' ); '; put ' %local catlist cat fmtlist i; '; put ' select distinct fmtcat into: catlist separated by '' '' from &tmpds1; '; put ' %do i=1 %to %sysfunc(countw(&catlist,%str( ))); '; put ' %let cat=%scan(&catlist,&i,%str( )); '; put ' proc sql; '; put ' select distinct fmtname into: fmtlist separated by '' '' '; put ' from &tmpds1 where fmtcat="&cat"; '; put ' proc format lib=&cat cntlout=&tmpds3(keep=fmtname length); '; put ' select &fmtlist; '; put ' run; '; put ' proc sql; '; put ' insert into &tmpds2 select distinct fmtname,length from &tmpds3; '; put ' %end; '; put ' '; put ' proc sql; '; put ' create table &tmpds4 as '; put ' select a.*, b.length as MAXW '; put ' from &colinfo a '; put ' left join &tmpds2 b '; put ' on cats(a.format)=cats(upcase(b.fmtname)) '; put ' order by a.varnum; '; put ' data _null_; '; put ' set &tmpds4; '; put ' if not missing(maxw); '; put ' call symputx( '; put ' cats(''fmtlen'',_n_), '; put ' /* vars need extra padding due to JSON escaping of special chars */ '; put ' min(32767,ceil((max(length,maxw)+10)*1.5)) '; put ' ,''l'' '; put ' ); '; put ' run; '; put ' '; put ' /* configure varlenchk - as we are explicitly shortening the variables */ '; put ' %let optval=%sysfunc(getoption(varlenchk)); '; put ' options varlenchk=NOWARN; '; put ' data _data_(compress=char); '; put ' /* shorten the new vars */ '; put ' length '; put ' %do i=1 %to &numcols; '; put ' &&name&i $&&fmtlen&i '; put ' %end; '; put ' ; '; put ' /* rename on entry */ '; put ' set &ds(rename=( '; put ' %do i=1 %to &numcols; '; put ' &&name&i=&&newname&i '; put ' %end; '; put ' )); '; put ' &stmt_obs; '; put ' '; put ' drop '; put ' %do i=1 %to &numcols; '; put ' &&newname&i '; put ' %end; '; put ' ; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=num %then %do; '; put ' &&name&i=cats(put(&&newname&i,&&fmt&i)); '; put ' %end; '; put ' %else %do; '; put ' &&name&i=put(&&newname&i,&&fmt&i); '; put ' %end; '; put ' %end; '; put ' if _error_ then do; '; put ' call symputx(''syscc'',1012); '; put ' stop; '; put ' end; '; put ' run; '; put ' %let fmtds=&syslast; '; put ' options varlenchk=&optval; '; put ' %end; '; put ' '; put ' proc format; /* credit yabwon for special null removal */ '; put ' value bart (default=40) '; put ' %if &missing=NULL %then %do; '; put ' ._ - .z = null '; put ' %end; '; put ' %else %do; '; put ' ._ = [quote()] '; put ' . = null '; put ' .a - .z = [quote()] '; put ' %end; '; put ' other = [best.]; '; put ' '; put ' data &tempds; '; put ' attrib _all_ label=''''; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; put ' length &&name&i $&&fmtlen&i...; '; put ' format &&name&i $&&fmtlen&i...; '; put ' %end; '; put ' %end; '; put ' %if &fmt=Y %then %do; '; put ' set &fmtds; '; put ' %end; '; put ' %else %do; '; put ' set &ds; '; put ' %end; '; put ' &stmt_obs; '; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; put ' if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; put ' prxchange(''s/\x0D/\r/'',-1, /* carriage return */ '; put ' prxchange(''s/\x09/\\t/'',-1, /* tab */ '; put ' prxchange(''s/\x00/\\u0000/'',-1, /* NUL */ '; put ' prxchange(''s/\x0E/\\u000E/'',-1, /* SS */ '; put ' prxchange(''s/\x0F/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/\x01/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/\x02/\\u0002/'',-1, /* STX */ '; put ' prxchange(''s/\x10/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else &&name&i=quote(cats(&&name&i)); '; put ' %end; '; put ' %end; '; put ' run; '; put ' '; put ' filename _sjs3 temp lrecl=131068 ; '; put ' data _null_; '; put ' file _sjs3 encoding=''utf-8''; '; put ' if _n_=1 then put "["; '; put ' set &tempds; '; put ' if _n_>1 then put "," @; put '; put ' %if &action=ARR %then "[" ; %else "{" ; '; put ' %do i=1 %to &numcols; '; put ' %if &i>1 %then "," ; '; put ' %if &action=OBJ %then """&&name&i"":" ; '; put ' "&&name&i"n /* name literal for reserved variable names */ '; put ' %end; '; put ' %if &action=ARR %then "]" ; %else "}" ; ; '; put ' '; put ' /* close out the table */ '; put ' data _null_; '; put ' file _sjs3 mod encoding=''utf-8''; '; put ' put '']''; '; put ' run; '; put ' data _null_; '; put ' infile _sjs3 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs3 clear; '; put ' %end; '; put ' '; put ' proc sql; '; put ' drop table &colinfo, &tempds; '; put ' '; put ' %if %substr(&showmeta,1,1)=Y %then %do; '; put ' filename _sjs4 temp lrecl=131068 encoding=''utf-8''; '; put ' data _null_; '; put ' file _sjs4; '; put ' length label $350; '; put ' put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{"; '; put ' do i=1 to &numcols; '; put ' name=quote(trim(symget(cats(''name'',i)))); '; put ' format=quote(trim(symget(cats(''fmt'',i)))); '; put ' label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i))))); '; put ' length=quote(trim(symget(cats(''length'',i)))); '; put ' type=quote(trim(symget(cats(''typelong'',i)))); '; put ' if i>1 then put "," @@; '; put ' put name '':{"format":'' format '',"label":'' label '; put ' '',"length":'' length '',"type":'' type ''}''; '; put ' end; '; put ' put ''}}''; '; put ' run; '; put ' /* send back to webout */ '; put ' data _null_; '; put ' infile _sjs4 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs4 clear; '; put ' %end; '; put '%end; '; put ' '; put '%else %if &action=CLOSE %then %do; '; put ' data _null_; file &jref encoding=''utf-8'' mod ; '; put ' put "}"; '; put ' run; '; put '%end; '; put '%mend mp_jsonout; '; put ' '; put '%macro mf_getuser( '; put ')/*/STORE SOURCE*/; '; put ' %local user; '; put ' '; put ' %if %symexist(_sasjs_username) %then %let user=&_sasjs_username; '; put ' %else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do; '; put ' %let user=&SYS_COMPUTE_SESSION_OWNER; '; put ' %end; '; put ' %else %if %symexist(_metaperson) %then %do; '; put ' %if %length(&_metaperson)=0 %then %let user=&sysuserid; '; put ' /* sometimes SAS will add @domain extension - remove for consistency */ '; put ' /* but be sure to quote in case of usernames with commas */ '; put ' %else %let user=%unquote(%scan(%quote(&_metaperson),1,@)); '; put ' %end; '; put ' %else %let user=&sysuserid; '; put ' '; put ' %quote(&user) '; put ' '; put '%mend mf_getuser; '; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; put '%local i tempds jsonengine; '; put ' '; put '/* see https://github.com/sasjs/core/issues/41 */ '; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON; '; put '%else %let jsonengine=DATASTEP; '; put ' '; put ' '; put '%if &action=FETCH %then %do; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' options mprint notes mprintnest; '; put ' %end; '; put ' %let _webin_file_count=%eval(&_webin_file_count+0); '; put ' /* now read in the data */ '; put ' %do i=1 %to &_webin_file_count; '; put ' %if &_webin_file_count=1 %then %do; '; put ' %let _webin_fileref1=&_webin_fileref; '; put ' %let _webin_name1=&_webin_name; '; put ' %end; '; put ' data _null_; '; put ' infile &&_webin_fileref&i termstr=crlf; '; put ' input; '; put ' call symputx(''input_statement'',_infile_); '; put ' putlog "&&_webin_name&i input statement: " _infile_; '; put ' stop; '; put ' data &&_webin_name&i; '; put ' infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8''; '; put ' input &input_statement; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' if _n_<20 then putlog _infile_; '; put ' %end; '; put ' run; '; put ' %let sasjs_tables=&sasjs_tables &&_webin_name&i; '; put ' %end; '; put '%end; '; put ' '; put '%else %if &action=OPEN %then %do; '; put ' /* fix encoding */ '; put ' OPTIONS NOBOMFILE; '; put ' '; put ' /** '; put ' * check xengine type to avoid the below err message: '; put ' * > Function is only valid for filerefs using the CACHE access method. '; put ' */ '; put ' data _null_; '; put ' set sashelp.vextfl(where=(fileref="_WEBOUT")); '; put ' if xengine=''STREAM'' then do; '; put ' rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8"); '; put ' end; '; put ' run; '; put ' '; put ' /* setup json */ '; put ' data _null_;file &fref encoding=''utf-8''; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' put ''>>weboutBEGIN<<''; '; put ' %end; '; put ' put ''{"SYSDATE" : "'' "&SYSDATE" ''"''; '; put ' put '',"SYSTIME" : "'' "&SYSTIME" ''"''; '; put ' run; '; put ' '; put '%end; '; put ' '; put '%else %if &action=ARR or &action=OBJ %then %do; '; put ' %mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref '; put ' ,engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs '; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; put ' /* To avoid issues with _webout on EBI we use a temporary file */ '; put ' filename _sjsref temp lrecl=131068; '; put ' %if %str(&workobs) > 0 %then %do; '; put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; put ' %local wtcnt;%let wtcnt=0; '; put ' data _null_; '; put ' set &tempds; '; put ' if not (upcase(name) =:"DATA"); /* ignore temp datasets */ '; put ' i+1; '; put ' call symputx(cats(''wt'',i),name,''l''); '; put ' call symputx(''wtcnt'',i,''l''); '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put ",""WORK"":{"; '; put ' %do i=1 %to &wtcnt; '; put ' %let wt=&&wt&i; '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' dsid=open("WORK.&wt",''is''); '; put ' nlobs=attrn(dsid,''NLOBS''); '; put ' nvars=attrn(dsid,''NVARS''); '; put ' rc=close(dsid); '; put ' if &i>1 then put '',''@; '; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 '; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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 ' %mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt,missing=&missing'; put ' ,showmeta=&showmeta'; 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 for SAS®'';'; 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 '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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief provides the web service to create the control tables'; put '@details'; put '

SAS Macros

'; put '@li dc_getusergroups.sas'; put '@li mf_getuser.sas'; put '@li mf_getapploc.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_ds2cards(base_ds, tgt_ds='; put ',cards_file="%sysfunc(pathname(work))/cardgen.sas"'; put ',maxobs=max'; put ',random_sample=NO'; put ',showlog=YES'; put ',outencoding='; put ',append=NO'; put ')/*/STORE SOURCE*/;'; put '%local i setds nvars;'; put '%if not %sysfunc(exist(&base_ds)) %then %do;'; put '%put %str(WARN)ING: &base_ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&base_ds,.)=0 %then %let base_ds=WORK.&base_ds;'; put '%if (&tgt_ds = ) %then %let tgt_ds=&base_ds;'; put '%if %index(&tgt_ds,.)=0 %then %let tgt_ds=WORK.%scan(&base_ds,2,.);'; put '%if ("&outencoding" ne "") %then %let outencoding=encoding="&outencoding";'; put '%if ("&append" = "" or "&append" = "NO") %then %let append=;'; put '%else %let append=mod;'; put '/* get varcount */'; put '%let nvars=0;'; put 'proc sql noprint;'; put 'select count(*) into: nvars from dictionary.columns'; put 'where upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)";'; put '%if &nvars=0 %then %do;'; put '%put %str(WARN)ING: Dataset &base_ds has no variables, will not be converted.;'; put '%return;'; put '%end;'; put '/* get indexes */'; put 'proc sort'; put 'data=sashelp.vindex('; put 'where=(upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)")'; put ')'; put 'out=_data_;'; put 'by indxname indxpos;'; put 'run;'; put '%local indexes;'; put 'data _null_;'; put 'set &syslast end=last;'; put 'if _n_=1 then call symputx(''indexes'',''(index=('',''l'');'; put 'by indxname indxpos;'; put 'length vars $32767 nom uni $8;'; put 'retain vars;'; put 'if first.indxname then do;'; put 'idxcnt+1;'; put 'nom='''';'; put 'uni='''';'; put 'vars=name;'; put 'end;'; put 'else vars=catx('' '',vars,name);'; put 'if last.indxname then do;'; put 'if nomiss=''yes'' then nom=''/nomiss'';'; put 'if unique=''yes'' then uni=''/unique'';'; put 'call symputx(''indexes'''; put ',catx('' '',symget(''indexes''),indxname,''=('',vars,'')'',nom,uni)'; put ',''l'');'; put 'end;'; put 'if last then call symputx(''indexes'',cats(symget(''indexes''),''))''),''l'');'; put 'run;'; put 'data;run;'; put '%let setds=&syslast;'; put 'proc sql'; put '%if %datatyp(&maxobs)=NUMERIC %then %do;'; put 'outobs=&maxobs;'; put '%end;'; put ';'; put 'create table &setds as select * from &base_ds'; put '%if &random_sample=YES %then %do;'; put 'order by ranuni(42)'; put '%end;'; put ';'; put 'reset outobs=max;'; put 'create table datalines1 as'; put 'select name,type,length,varnum,format,label from dictionary.columns'; put 'where upcase(libname)="%upcase(%scan(&base_ds,1))"'; put 'and upcase(memname)="%upcase(%scan(&base_ds,2))";'; put '/**'; put 'Due to long decimals cannot use best. format'; put 'So - use bestd. format and then use character functions to strip trailing'; put 'zeros, if NOT an integer or missing!! Cannot use int() as it upsets'; put 'note2err when there are missings.'; put 'resolved code = ifc( mod(coalesce(VARIABLE,0),1)=0'; put ',put(VARIABLE,best32.)'; put ',substrn(put(VARIABLE,bestd32.),1'; put ',findc(put(VARIABLE,bestd32.),''0'',''TBK'')));'; put '**/'; put 'data datalines_2;'; put 'format dataline $32000.;'; put 'set datalines1 (where=(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM'')));'; put 'if type=''num'' then dataline='; put 'cats(''ifc(mod(coalesce('',name,'',0),1)=0'; put ',put('',name,'',best32.-l)'; put ',substrn(put('',name,'',bestd32.-l),1'; put ',findc(put('',name,'',bestd32.-l),"0","TBK")))'');'; put '/**'; put '* binary data must be converted, to store in text format. It is identified'; put '* by the presence of the $HEX keyword in the format.'; put '*/'; put 'else if upcase(format)=:''$HEX'' then'; put 'dataline=cats(''put(trim('',name,''),'',format,'')'');'; put '/**'; put '* There is no easy way to store line breaks in a cards file.'; put '* To discuss this, use: https://github.com/sasjs/core/issues/80'; put '* Removing all nonprintables with kw (keep writeable)'; put '*/'; put 'else dataline=cats(''compress('',name,'', ,"kw")'');'; put 'run;'; put 'proc sql noprint;'; put 'select dataline into: datalines separated by '','' from datalines_2;'; put '%local'; put 'process_dttm_flg'; put 'valid_from_dttm_flg'; put 'valid_to_dttm_flg'; put ';'; put '%let process_dttm_flg = N;'; put '%let valid_from_dttm_flg = N;'; put '%let valid_to_dttm_flg = N;'; put 'data _null_;'; put 'set datalines1 ;'; put '/* build attrib statement */'; put 'if type=''char'' then type2=''$'';'; put 'if strip(format) ne '''' then format2=cats(''format='',format);'; put 'if strip(label) ne '''' then label2=cats(''label='',quote(trim(label)));'; put 'str1=catx('' '',(put(name,$33.)||''length='')'; put ',put(cats(type2,length),$7.)||format2,label2);'; put '/* Build input statement */'; put 'if upcase(format)=:''$HEX'' then type3='':''!!format;'; put 'else if type=''char'' then type3='':$char.'';'; put 'str2=put(name,$33.)||type3;'; put 'if(upcase(name) = "PROCESSED_DTTM") then'; put 'call symputx("process_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_FROM_DTTM") then'; put 'call symputx("valid_from_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_TO_DTTM") then'; put 'call symputx("valid_to_dttm_flg", "Y", "L");'; put 'call symputx(cats("attrib_stmt_", put(_N_, 8.)), str1, "L");'; put 'call symputx(cats("input_stmt_", put(_N_, 8.))'; put ', ifc(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM''), str2, ""), "L");'; put 'run;'; put 'data _null_;'; put 'file &cards_file. &outencoding lrecl=32767 termstr=nl &append;'; put 'length __attrib $32767;'; put 'if _n_=1 then do;'; put 'put ''/**'';'; put 'put '' @file'';'; put 'put " @brief Datalines for %upcase(%scan(&base_ds,2)) dataset";'; put 'put " @details Generated by %nrstr(%%)mp_ds2cards()";'; put 'put " Source: https://github.com/sasjs/core";'; put 'put '' @cond '';'; put 'put ''**/'';'; put 'put "data &tgt_ds &indexes;";'; put 'put "attrib ";'; put '%do i = 1 %to &nvars;'; put '__attrib=symget("attrib_stmt_&i");'; put 'put __attrib;'; put '%end;'; put 'put ";";'; put '%if &process_dttm_flg. eq Y %then %do;'; put 'put ''retain PROCESSED_DTTM %sysfunc(datetime());'';'; put '%end;'; put '%if &valid_from_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_FROM_DTTM &low_date;'';'; put '%end;'; put '%if &valid_to_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_TO_DTTM &high_date;'';'; put '%end;'; put 'if __nobs=0 then do;'; put 'put ''call missing(of _all_);/* avoid uninitialised notes */'';'; put 'put ''stop;'';'; put 'put ''run;'';'; put 'end;'; put 'else do;'; put 'put "infile cards dsd;";'; put 'put "input ";'; put '%do i = 1 %to &nvars.;'; put '%if(%length(&&input_stmt_&i..)) %then'; put 'put " &&input_stmt_&i..";'; put ';'; put '%end;'; put 'put ";";'; put 'put ''missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'';'; put 'put "datalines4;";'; put 'end;'; put 'end;'; put 'set &setds end=__lastobs nobs=__nobs;'; put '/* remove all formats for write purposes - some have long underlying decimals */'; put 'format _numeric_ best30.29;'; put 'length __dataline $32767;'; put '__dataline=catq(''cqtmb'',&datalines);'; put 'put __dataline;'; put 'if __lastobs then do;'; put 'put '';;;;'';'; put 'put ''run;'';'; put 'put ''/** @endcond **/'';'; put 'stop;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &setds;'; put 'quit;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &cards_file lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: CARDS FILE SAVED IN:;'; put '%put NOTE-;%put NOTE-;'; put '%put NOTE- %sysfunc(dequote(&cards_file.));'; put '%put NOTE-;%put NOTE-;'; put '%mend mp_ds2cards;'; put '/** @endcond **/'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Downloads zip file of DC customer configurations'; put '@details Zip contains several excel files, containing the customer specific'; put '(non-DC) configurations. Useful when migrating to a new instance of'; put 'Data Controller.'; put '

SAS Macros

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

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_getddl.sas'; put '@li mp_lib2inserts.sas'; put '@li mp_streamfile.sas'; put '@li mpe_getgroups.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_increment(macro_name,incr=1);'; put '/* iterate the value */'; put '%let ¯o_name=%eval(&&¯o_name+&incr);'; put '/* return the value */'; put '&&¯o_name'; put '%mend mf_increment;'; put '%macro mpe_makedata(lib=,mpeadmins=,path=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &lib..mpe_alerts set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',alert_event=''*ALL*'''; put ',alert_lib=''*ALL*'''; put ',alert_ds=''*ALL*'''; put ',alert_user="&sysuserid";'; put 'insert into &lib..mpe_column_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',CLS_SCOPE=''EDIT'''; put ',CLS_GROUP=''AllUsers'''; put ',CLS_LIBREF="&lib"'; put ',CLS_TABLE=''MPE_LOCKANYTABLE'''; put ',CLS_VARIABLE_NM=''LOCK_STATUS_CD'''; put ',CLS_ACTIVE=1'; put ',CLS_HIDE=0;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_EMAIL_ALERTS"'; put ',var_value=''NO'''; put ',var_active=1'; put ',var_desc=''YES or NO to enable email alerts. Note - this requires email '''; put '!!''options to be preconfigured! They can be configured in the '''; put '!!''settings stp if needed.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_VIEWLIB_CHECK"'; put ',var_value=''NO'''; put ',var_active=1'; put ',var_desc='; put '''Set to YES to enable library validity checking in viewLibs service.'''; put '!!'' Note: this can make the service very slow if there are lots of '''; put '!!''external libraries. If enabled, this removes empty libraries from '''; put '!!''the viewer library dropdown. To switch off, set to NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_MACROS"'; put ',var_value=cats(symget(''path''),"/dc_macros")'; put ',var_active=1'; put ',var_desc=''Location of underlying macros - EUC feature.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_MAXOBS_WEBEDIT"'; put ',var_value="100"'; put ',var_active=1'; put ',var_desc=''This sets the maximum number of observations that can be loaded'''; put '!!'' into the browser for editing in the EDIT screen. A higher number'''; put '!!'' will require a decent browser (ie, not IE) and more memory on the'''; put '!!'' client side.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_RESTRICT_VIEWER"'; put ',var_value="NO"'; put ',var_active=1'; put ',var_desc=''YES will restrict the list of libraries and tables in VIEWER to'''; put '!!'' those explicitly set to VIEW in the MPE_SECURITY table. Default=NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_RESTRICT_EDITRECORD"'; put ',var_value="NO"'; put ',var_active=1'; put ',var_desc=''Setting YES will prevent the EDIT RECORD dialog appearing in the'''; put '!!'' EDIT screen by removing the "Edit Row" option in the right click menu'''; put '!!'', and the "ADD RECORD" button in the bottom left. Default=NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_CATALOG"'; put ',var_name="DC_IGNORELIBS"'; put ',var_value="|MAPSSAS|MAPS|"'; put ',var_active=1'; put ',var_desc=''Pipe seperated list of librefs (uppercase) to be ignored when'''; put '!!'' running the Data Catalog refresh process. This can enable a clean'''; put '!!'' run when invalid librefs are returned by the mpe_refreshlibs macro.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_LOCALE"'; put ',var_value="SYSTEM"'; put ',var_active=1'; put ',var_desc=''Set to a locale (such as en_gb or en_be) to override the system'''; put '!!'' value (which can be driven from the browser settings). This is '''; put '!!''useful when importing ambiguous dates from CSV or Excel (eg 1/2/20 vs '''; put '!!''2/1/20) as DC uses the anydtdtm informats for import. Default=SYSTEM.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BULKLOAD"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to enable BULKLOAD=YES in redshift'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_BUCKET"'; put ',var_value="''your-aws-bucket/Exchange''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) value of the AWS bucket to'''; put '!!'' use for s3 uploads in redshift'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_AWS_CREDENTIALS_FILE"'; put ',var_value="''/path/to/your/aws/s3/.credentials''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) value of the AWS creds file'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_REGION"'; put ',var_value="''eu-west-1''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) AWS region in use'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_COMPRESS"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to perform compression ahead of the COPY command'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_USE_SSL"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to use SSL encryption'';'; put '%if &syssite=70221618 %then %do;'; 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="MIIGtwIBADANBgkqhkiG9w0BAQEFAASCBqEwggadAgEAAoIBcQDgvQiMeOR3AMX4I1hypexG7pEQp7anG7nhvUeiLvcW3O5rHqQ2CNYAgHa41zjE5b6o1M6"'; put '!!"pgTUfg7/F37XwqFNaaRalvZ+hM7jv5LAn/dsGFu/TkInvnu4O6ti4JOgE1/KPD7ikcOLzSa7aph+yel5JCbMbyn1MXLHlKG88uIQq7K8xuJife3tHAdC3m1I4YHOgkxh"'; put '!!"6OhZxv7janJwM6h/VORoVEYXQCtgaItpFjyn1b5USlk48YB8iqSPEO/KZdYeO6jiOIpA17Ryk7g989RR70qVH2JZKjvyl/FCGN2Bz8eR6+ZSQ5cRcZRE3CujFaM5sO6C"'; put '!!"qVfJ9q1pqriTkrz7XedHlNKwl6BgJlk0GgsqYpp82qhVj8jrXjXb1iLITGpHokYQ74b0Qsu7GkdPwAA+64SqzWvE23zc1+iKjMWZIjQMIy4Pj55Z1ZI9Gv1qfatrdOcq"'; put '!!"/gXU1hRTI9IiNTlO9UpI4hs7ea9YlEAfIUt25GwIDAQABAoIBcGMoFGMCHe9BmJdEZQxkl8yuCrQ6AzVU3t0yKa5toVhljw4VPWeX22/qPjeMwf/hzA7qoeoY14r5kr3"'; put '!!"n1/sAEZLE5hingwxZaUHy+SQT9bSInzUNw0ZFrYxIYulQY0xryRoE2jc3lXK5MlxHSpnxMrNwA6YB3+m2xkiw3+9/C9Vyi1PZOgG3tiscqm2wKoU0TR/udrDK+0chy5o"'; put '!!"s2g86p2Po51CfZBZoCnPxp7NkGKOxISlLxuYNlP5etKLeIshMd9Bq0Atab+J6dhznCniADAReYFssER4WHBwdmxVsRE9U0bH4uhOCXDUwhhOL5X82gW9TA9TPZk4bdoh"'; put '!!"dgthMoKccYcth/hxPglJTngguoVGsu2XDuvmPPXtl/CRfFrtrWJWUHm408i+jt7+j7DfwtiCZsjKhDDlWJbeAYT+Ex3MtN5GZK8z6V+uUNQi7spDaNBIPTWXmiPwhIF/"'; put '!!"fCOuY4FiUemB+RFJOnWofJqyMR9yRAoG5APeffJHX5N5XPJTXwwYoD7ZUHh8evgjQzrXDE/k8J0Z1K1G5zIzheZmwCWSt2KlcjNd94tu7CE0wljqxrE8P7VPQk3bcWZF"'; put '!!"xC2BAuw4WYgnx2MNLC5PEKmbbNRlT10MnhzLjnYM/V7DMV4nu3XIHlybLDZDZm84hVbV58xDqxheLRVnK7r+Cip4KywuT5GsQ6Da8MKC0z7I2LgOAozvRA/hp1ILgv4q"'; put '!!"mPhpNXXRGAcSPwT8yy+bd9DECgbkA6FdbcwoUUMkgqjdKrNNWgrRmTmUUMbFDnwxpI7hEAN9kKeBju2G7/A8BK8IPZeiDDsiqWZ8UKKN4/rAXLoZnjDAygLdFGqcLPMq"'; put '!!"Dt8WOsp2tbEGyAujpKP+f9K158r70BIreNJ46iuoS+S3O2CziUJV1e2LPEl9sb7neAyDpxp8+LTuuLSuA3+htIGMbvZ8bgmC26a4AFt7bkHB/NY0mstx7D3pM9nTxIid"'; put '!!"SNOjWHIAqPLia0FArCwKBuQDflMt/S/ZEo3P52M8osedt84m3A6UGhLL//wH72kqEHatdgWumELghAoeYtjeYxA4PTIUXbUrTl3ktydsREApz0TI08kSVRALHh+rdj2w"'; put '!!"6Gnpj61CqvUaj1G2fTspgwkIautYv+XOOGRM5Ycnk+eGKj3DSRwmdFxAyacgEkFcITyHxL4Bevtm2VXx8Ga721S82rLkjgd6+xJjLZMz+Z300QSo2egO4ht4wFYa6Q7O"'; put '!!"47SvJim39KI8hAoG5AKqFKr30oNJlus6ShADxnqWRByD0OGz8H5gEgMnRfD9ztMyzPh8RbOlijcZyx+BQVJeuGLBr+1yUFcI+tNTVmfueiAJF/7a+8JVuQFvI56EZ7mT"'; put '!!"sllxiWnVXnyrxgvXwxaDr1oehtW+sub4dq5im4HaqKq4i570hQbGCJXoAVvMKfpSuH3hRXGV47VZ+xqZVttfqaXR52uDuMRECL6q67LMK9Fp4tTGQxET/vOrOFA6Y1eb"'; put '!!"4yc6nd98CgbkAtZOgSsazcIWxTXxqgMFXa+G6YXDeqm6nqOiaR+rH4H1i1Vzl08966vfOM0kRWPB1OrvQKGxg8uYNfSo8ZqprPrUdUnA1BesJjQV0kj3KWW7i/Ir4R90"'; put '!!"8NKEjyMn/+Vbi0i2ac1nSEm+2SydOonxSZixNzW2VevUuT5d4/i3UZo5fNXeCiBEzzJNw6MjYBxmMgcGWJvxMckpsGHGdQAj+hPkub8mHOZfaSmHfnxBvAFUdhLOasRj"'; put '!!"deQ=="'; put ',var_active=1;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_name="DC_LICENCE_KEY"'; put ',var_scope="DC"'; put ',var_value="PEvKnV0EcmlJVrrx8JpXOc+/va+ksMzvkJBp05iVRtyl6xgFxhMAi+w4/7mHi4P2STbwV61mG2BGpBlO6qteDfZTmoROjRekcLw8wWxBMzghFwGvO93"'; put '!!"taapBmpyXm3cv26iAc9Yq8yiXhOX7ZO7+7PXIoH9rqCT5ILrIY0vqVYnwx+AyjUI7FMsfAwKApCaTVXOca5My3att5yCg2fz+MQhCZbEK1tbubk9kAlaJJtlYzSj"'; put '!!"J8ADuMR74rpGofk8YGOTegOjUGI+ENhkHW+ooh9fmNTkIilOBuNQ0irBvd49weejCDRtnX9/Twt8wv6r6QyYT31F5yuI2/G0NoHrjeWHjl5riD/q2NnC+aTXWVnV"'; put '!!"QP+0+e1H0ohUZd9bAw0BE7bFWpcriYovIsu6VlhzpdqFRnUZ0ULw9CesQa6X2qIazT9V9jxfM1Of53kwIxKrb1LTEMcvxKtTh1jEW4nfvwBs4UJ1W7+5u0j1FfY3"'; put '!!"FUtU="'; put ',var_active=1;'; put '%end;'; put '%else %if &syssite=70253615 %then %do;'; 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=''4bfbZtsFbfGuqbZhJdAD8p8EbNmuxiaLaxMdTZPTJreRcfd0CYarXQoxCr3BMt6aWJjwFMvwG/7IXB6'''; put '!!''nxT9X0HH4dvgykgzKmSCY5q2lwENoNrUhk'''; put '!!''sF/iSvFuwKVuccW6NFKNahQhRBpfFBps6YrUzHG62yPrCzYDM0SFtS3EdeE6gijnhv4SGt+s77xutjitgdruRBg'''; put '!!''Zyt3bzCWs0yNgt/KqLClVOktgJ3/FV8Im0v'''; put '!!''nAhkUq0CwgQ698LO150RLF6j40E9md2WpNKuJeXKSl9+ejR+aln+COvS5iUVBX8UBVv5eviOOzu8hBI80HmMt'''; put ',var_active=1'; put ',var_desc=''Licence Key Placeholder for Data Controller Full Version'';'; 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=''MIIEcAIBADANBgkqhkiG9w0BAQEFAASCBFowggRWAgEAAoHxAOlGX2CSHJjb4isZWpcXWwjrVcQrgs'''; put '!!''I6rAb7vN3c0TILF5+/Jmq2FcO02NUtYP7ai2puTv9PMvMKz3bxocvgIHiajAu1ZyK/r6IIcdgHbH'''; put '!!''xeTXv82JhTT4PlP+4NXCK1oKgthSyt1jhz0wzD9YeGEkB5Mn4IRH+6WWzrVJIG+dm4wnUpi9ia3Px9ktPoNLFA'''; put '!!''GBZopcTf7NM6O1WDQ5oaZG6r7y9G8jZWrgzTWyEiFpGytg3MCGJv7oW7YDk+2i/DKIuSZz6gc/BSSo'''; put '!!''ZcQZDKToAU+gFQZqnimWGhtv6szjNrfjCJ23b++wlvQ1C6bJE47wIDAQABAoHwciGwq36BSFaYfu6+MFtIe'''; put '!!''oItqbeCF8Z+AUKsYr5Vic78hXeP87jXyDNUvWQg50AE4xNKSka1Dk11OOQ6/ZVQPcGbkGT2K32ukC/ih0'''; put '!!''gGj4jSDz4juM9WAZmp4C4gLIlBq9btp/D7dQ5SLZY4rFBv4KSLjDc+UGHazLmFQgikMC+CBukDrZ7IvpjreII'''; put '!!''zVil18IyGnxuD22pFyY4pLG9nvrIsLhKAYaOQnRS29n34o6ZQ/tqCWJo3FaCCsXAa7zX9OEHh4lZNj5'''; put '!!''XdzN/LexaAmki9ObfXtX4W2wcMrFPX0Rt0QDznDF/a4uGS9WpHPKCxAnkA9l9P+ZJwM0hin8+B5cOuyMga5N'''; put '!!''DjMXI1vt2cpGzWUmtnFJcCNDX0nAHddWhmTXoKlCCyo1RzPHiWdO8LRhlnojptxcmhW1LfJLcn278NxD'''; put '!!''h1dFxQB0j/o7w4Js2ih3HjwD0GpVLXPPr0O1GORodb0OuZ3hXCTDFRAnkA8mQI4OLTW+VI9c1OSi5JNmXrl+jRPC'''; put '!!''BTPgjomGMAKCEvfLHfDjNQ/gN8asNo2uscgqWvGLEM83jxkpFhJ/lbcg02utPhVe4jOo+XSY3UEE'''; put '!!''wq8oGpx1k9QgbrCfRivoDZpRk+SrqQmO4PHKnHTAdLVgDQnvbISjY/AnkAoZXblx0jN49HF/d6A572+Lq9'''; put '!!''YMtb5uc4NsmUXgb//ihxAAEWsfWdS+CxRbrGNhRP8d0MLLFLryKL03+gjkZFQRI/QtS+Xm4Y6jSyEJ7awZ'''; put '!!''Ih/sI4vr5y5Amjble6PElHDaM4w590iYsyOeGAheNrJbgQP6dXuq8xAnkAi9duz9/NNO1ZZIZoLp/5mSq/'''; put '!!''+0pUvK2hmN6m4pPrWTucHAK6v4SXq5TzSN0oN3UBY9aW6FXtNOKH7Jl3Rgq02V4KP0tSa7MSHA0PqV3sBO'''; put '!!''MMvBBWlS5FCzzWiU23UlUgPAIOUCrGlZRyn4TL+G8U5a9erPePolEdAnkAltgzR4wcAzwf0HGc2sOXDrdk'''; put '!!''drjpEGPQONR72IGcC9rxLPTNFFW3xmLVy19oOikVluGTR7Pn5CmROxfXx5zT7fZHQXOM4uxA5soGs9jkQo'''; put '!!''lVw/KnvUZLLiiDKG4X/FTCyEPGnZPs131ZkGhhr6EirtwkHyG2zbly'''; put ',var_active=1'; put ',var_desc=''Activation Key Placeholder for Data Controller Full Version'';'; put '%end;'; put '%else %do;'; 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 '%end;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''LIBRARY'''; put ',DD_SOURCE="&lib"'; put ',DD_SHORTDESC="Data Controller Control Tables"'; put ',DD_LONGDESC="# The Data Controller Library"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''TABLE'''; put ',DD_SOURCE="&lib..MPE_TABLES"'; put ',DD_SHORTDESC="Configuration of new tables for Data Controller"'; put ',DD_LONGDESC="# MPE_TABLES - adding new tabels to Data Controller"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''COLUMN'''; put ',DD_SOURCE="&lib..MPE_TABLES.DSN"'; put ',DD_SHORTDESC="Dataset Name to be edited"'; put ',DD_LONGDESC="_DSN_ - must be UPCASE"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''DIRECTORY'''; put ',DD_SOURCE="/some/directory"'; put ',DD_SHORTDESC="Directory for some purpose"'; put ',DD_LONGDESC="This directory is great. It''s great directory.'; put 'It trumps all other directories."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''TABLE'''; put ',DD_SOURCE="&lib"'; put ',DD_SHORTDESC="Transaction table for capturing Data Controller users"'; put ',DD_LONGDESC="After a user accepts the Data Controller EULA they are "'; put '!!"registered as a user in this table."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''COLUMN'''; put ',DD_SOURCE="&lib..MPE_CONFIG.VAR_ACTIVE"'; put ',DD_SHORTDESC="Set to 1 to make an option active"'; put ',DD_LONGDESC="This value is used as a filter by data controller whenever "'; put '!!"querying for option settings."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_GROUPS'; put '*/'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="allbow"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="dctestuser1"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="mihmed"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="sec-sas9-prd-ext-sasplatform-300115datacontroller"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="DCTest"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_ROW_LEVEL_SECURITY'; put '*/'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=1'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib."'; put ',RLS_TABLE="MPE_GROUPS"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''GROUP_NAME'''; put ',RLS_OPERATOR_NM=''NE'''; put ',RLS_RAW_VALUE="''-1''"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=2'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib"'; put ',RLS_TABLE="MPE_ROW_LEVEL_SECURITY"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''RLS_RK'''; put ',RLS_OPERATOR_NM=''>'''; put ',RLS_RAW_VALUE=''0'''; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=3'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''DC Demo Group'''; put ',RLS_LIBREF="&lib"'; put ',RLS_TABLE="MPE_SECURITY"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''ACCESS_LEVEL'''; put ',RLS_OPERATOR_NM=''NE'''; put ',RLS_RAW_VALUE="''N/A''"'; put ',RLS_ACTIVE=1;'; put '/**'; put '* MPE_SECURITY'; put '*/'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="sec-sas9-prd-int-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="sec-sas9-prd-int-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="sec-sas9-prd-ext-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="sec-sas9-prd-ext-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="dc-admin"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="dc-admin"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* mpe_selectbox */'; put '%let rk=1;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=&rk'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_LOCKANYTABLE"'; put ',base_column="LOCK_STATUS_CD"'; put ',selectbox_value=''LOCKED'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_LOCKANYTABLE"'; put ',base_column="LOCK_STATUS_CD"'; put ',selectbox_value=''UNLOCKED'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''EDIT'''; put ',selectbox_order=0'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''APPROVE'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''VIEW'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''SIGNOFF'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''UPDATE'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''REPLACE'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''TXTEMPORAL'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''BITEMPORAL'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''FORMAT_CAT'''; put ',selectbox_order=5'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''*ALL*'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''SUBMITTED'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''APPROVED'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''REJECTED'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 1'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 2'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 3'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value="This is a long option. This option is very long. "'; put '!!"It is optional, though."'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="CASE"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="MINVAL"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="MAXVAL"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="HARDSELECT"'; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="SOFTSELECT"'; put ',selectbox_order=5'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="NOTNULL"'; put ',selectbox_order=6'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="DSN"'; put ',selectbox_value="SOME_DATASET"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="DSN"'; put ',selectbox_value="EXAMPLE"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="COLUMN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="TABLE"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="LIBRARY"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="CATALOG"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="FORMAT"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="LIBREF"'; put ',selectbox_value=''*ALL*'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''AUDIT'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="HARDSELECT_HOOK"'; put ',selectbox_order=7'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="SOFTSELECT_HOOK"'; put ',selectbox_order=7'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="ALL"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="EDIT"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="VIEW"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_GROUP_LOGIC"'; put ',selectbox_value="AND"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_GROUP_LOGIC"'; put ',selectbox_value="OR"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SUBGROUP_LOGIC"'; put ',selectbox_value="AND"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SUBGROUP_LOGIC"'; put ',selectbox_value="OR"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="="'; put ',selectbox_order=0'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value=">"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="<"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="<="'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value=">="'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="BETWEEN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="IN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="NOT IN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="NE"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="CONTAINS"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_EXCEL_CONFIG"'; put ',base_column="XL_RULE"'; put ',selectbox_value="FORMULA"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_ACTIVE"'; put ',selectbox_value="1"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_ACTIVE"'; put ',selectbox_value="0"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_ACTIVE"'; put ',selectbox_value="1"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_ACTIVE"'; put ',selectbox_value="0"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="EDIT"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="VIEW"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="ALL"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_HIDE"'; put ',selectbox_value="0"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_HIDE"'; put ',selectbox_value="1"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_TABLES'; put '*/'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_COLUMN_LEVEL_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM'''; put ',notes=''Docs: https://docs.datacontroller.io/column-level-security'''; put ',post_edit_hook=''services/hooks/mpe_column_level_security_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_LOCKANYTABLE'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''LOCK_LIB LOCK_DS'''; put ',notes=''This table may be edited when a process failed and left a lock'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_TABLES'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''LIBREF DSN'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',notes=''This entry allows the MP Editor to edit itself!'''; put ',post_edit_hook=''services/hooks/mpe_tables_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''LIBREF DSN ACCESS_LEVEL SAS_GROUP'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',notes=''Shows which metadata groups can edit which tables'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_SELECTBOX'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''SELECTBOX_RK'''; put ',var_txfrom=''VER_FROM_DTTM'''; put ',var_txto=''VER_TO_DTTM'''; put ',notes=''Can configure dropdowns for the front end'''; put ',rk_underlying=''SELECT_LIB SELECT_DS BASE_COLUMN SELECTBOX_VALUE'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_X_TEST'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''PRIMARY_KEY_FIELD'''; put ',notes=''Test table for controller'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_EMAILS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''USER_NAME'''; put ',notes=''Primary Emails Table (backup is metadata)'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_CONFIG'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''VAR_SCOPE VAR_NAME'''; put ',notes=''Configuration variables for Data Controller'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_ALERTS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''ALERT_EVENT ALERT_LIB ALERT_DS ALERT_USER'''; put ',notes=''Configuration for alert email events'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_GROUPS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''GROUP_NAME USER_NAME'''; put ',notes=''Configuration for additional groups within Data Controller'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_VALIDATIONS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''BASE_LIB BASE_DS BASE_COL RULE_TYPE'''; put ',notes=''Configuration of data quality rules in Editor component'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',post_edit_hook=''services/hooks/mpe_validations_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_DATADICTIONARY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''DD_TYPE DD_SOURCE'''; put ',notes=''Configuration of data dictionary'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_EXCEL_CONFIG'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''XL_LIBREF XL_TABLE XL_COLUMN'''; put ',notes=''Configuration of the excel import rules'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_ROW_LEVEL_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''RLS_RK'''; put ',notes=''Configuration of Row Level Security'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',rk_underlying=''RLS_SCOPE RLS_GROUP RLS_LIBREF RLS_TABLE RLS_GROUP_LOGIC '''; put '!!''RLS_SUBGROUP_LOGIC RLS_SUBGROUP_ID RLS_VARIABLE_NM RLS_OPERATOR_NM '''; put '!!''RLS_RAW_VALUE '''; put ',post_edit_hook=''services/hooks/mpe_row_level_security_postedit'''; put ';'; put '/* mpe_validations */'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_SCOPE"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_LIBREF"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_TABLE"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_VARIABLE_NM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_VARIABLE_NM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_HIDE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ALERTS"'; put ',base_col="ALERT_LIB"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="services/validations/mpe_alerts.alert_lib"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''NOTNULL'''; put ',rule_value='' '''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''NOTNULL'''; put ',rule_value='' '''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="NUM_OF_APPROVALS_REQUIRED"'; put ',rule_type=''MINVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="BUSKEY"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="BUSKEY"'; put ',rule_type=''NOTNULL'''; put ',rule_value=" "'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXFROM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXTO"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSFROM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSTO"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_PROCESSED"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="LIBREF"'; put ',rule_type=''HARDSELECT'''; put ',rule_value="&lib..MPE_TABLES.LIBREF"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="DSN"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_TABLES.DSN"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="SAS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_LIB"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_DS"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_COL"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="RULE_ACTIVE"'; put ',rule_type=''MINVAL'''; put ',rule_value="0"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="RULE_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value="1"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_COLUMN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/mpe_tables.dsn"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXFROM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXTO"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSFROM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSTO"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_PROCESSED"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="SELECT_LIB"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="SELECT_DS"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="BASE_COLUMN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_SUBGROUP_ID"'; put ',rule_type=''MINVAL'''; put ',rule_value=''0'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_VARIABLE_NM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_X_TEST"'; put ',base_col="SOME_NUM"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="services/validations/mpe_x_test.some_num"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_ACTIVE"'; put ',rule_type=''MINVAL'''; put ',rule_value=''0'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_X_TEST'; put '*/'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=0'; put ',some_char=''this is dummy data'''; put ',some_dropdown=''Option 1'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=42'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=1'; put ',some_char=''more dummy data'''; put ',some_dropdown=''Option 2'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=422'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=2'; put ',some_char=''even more dummy data'''; put ',some_dropdown=''Option 3'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=142'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=3'; put ',some_char=repeat(''It was a dark and stormy night. The wind was blowing'''; put '!!'' a gale! The captain said to his mate - mate, tell us a tale. And'''; put '!!'' this, is the tale he told: '',3)'; put ',some_dropdown=''Option 2'''; put ',some_num=1613.001'; put ',some_date=423'; put ',some_datetime=423'; put ',some_time=44'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=4'; put ',some_char=''if you can fill the unforgiving minute'''; put ',some_dropdown=''Option 1'''; put ',some_num=1613.001123456'; put ',some_date=4231'; put ',some_datetime=423123123'; put ',some_time=412'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put '%do x=10 %to 500;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=10&x'; put ',some_char="&x bottles of beer on the wall"'; put ',some_dropdown=''Option 1'''; put ',some_num=ranuni(0)'; put ',some_date=round(ranuni(0)*1000,1)'; put ',some_datetime=round(ranuni(0)*50000,1)'; put ',some_time=round(ranuni(0)*100,1)'; put ',some_shortnum=round(ranuni(0)*100,1)'; put ',some_bestnum=round(ranuni(0)*100,1);'; put '%end;'; put '%mend mpe_makedata;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mpe_makedatamodel(lib=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put '%local notnull;'; put '%if %mf_existfeature(COLCONSTRAINTS)=1 %then %let notnull=not null;'; put '%put &=notnull;'; put 'proc sql;'; put 'create table &lib..mpe_alerts('; put 'tx_from num format=datetime19.3,'; put 'alert_event char(20),'; put 'alert_lib char(8),'; put 'alert_ds char(32),'; put 'alert_user char(100) ,'; put 'tx_to num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_alerts;'; put 'index create'; put 'pk_mpealerts=(tx_from alert_event alert_lib alert_ds alert_user)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_audit('; put 'load_ref char(36) label=''unique load reference'','; put 'libref char(8) label=''Library Reference (8 chars)'','; put 'dsn char(32) label=''Dataset Name (32 chars)'','; put 'key_hash char(32) label='; put '''MD5 Hash of primary key values (pipe seperated)'','; put 'tgtvar_nm char(32) label=''Target variable name (32 chars)'','; put 'move_type char(1) label=''Either (A)ppended, (D)eleted or (M)odified'','; put 'processed_dttm num format=E8601DT26.6 label=''Processed at timestamp'','; put 'is_pk num label=''Is Primary Key Field? (1/0)'','; put 'is_diff num label='; put '''Did value change? (1/0/-1). Always -1 for appends and deletes.'','; put 'tgtvar_type char(1) label=''Either (C)haracter or (N)umeric'','; put 'oldval_num num format=best32. label=''Old (numeric) value'','; put 'newval_num num format=best32. label=''New (numeric) value'','; put 'oldval_char char(32765) label=''Old (character) value'','; put 'newval_char char(32765) label=''New (character) value'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_audit;'; put 'index create'; put 'pk_mpe_audit=(load_ref libref dsn key_hash tgtvar_nm)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_column_level_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'CLS_SCOPE char(4) ¬null,'; put 'CLS_GROUP char(64) ¬null,'; put 'CLS_LIBREF char(8) ¬null,'; put 'CLS_TABLE char(32) ¬null,'; put 'CLS_VARIABLE_NM char(32) ¬null,'; put 'CLS_ACTIVE num ¬null,'; put 'CLS_HIDE num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_column_level_security;'; put 'index create'; put 'pk_mpe_column_level_security='; put '(tx_to CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_config('; put 'tx_from num ¬null format=datetime19.3'; put ',tx_to num ¬null format=datetime19.3'; put ',var_scope varchar(10) ¬null'; put ',var_name varchar(32) ¬null'; put ',var_value varchar(5000)'; put ',var_active num'; put ',var_desc varchar(300)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_config;'; put 'index create'; put 'pk_mpe_config=(tx_to var_scope var_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_libs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Ref'','; put 'engine char(32) label=''Library Engine'','; put 'libname char(256) format=$256. label=''Library Name'','; put 'paths char(8192) label=''Library Paths'','; put 'perms char(500) label=''Library Permissions (if BASE)'','; put 'owners char(500) label=''Library Owners (if BASE)'','; put 'schemas char(500) label=''Library Schemas (if DB)'','; put 'libid char(17) label=''LibraryId'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_libs;'; put 'index create'; put 'pk_mpe_datacatalog_libs=(libref tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_TABS('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Member Name'','; put 'memtype char(8) label=''Member Type'','; put 'dbms_memtype char(32) label=''DBMS Member Type'','; put 'memlabel char(512) label=''Data Set Label'','; put 'typemem char(8) label=''Data Set Type'','; put 'nvar num label=''Number of Variables'','; put 'compress char(8) label=''Compression Routine'','; put 'pk_fields char(512)'; put 'label=''Primary Key Fields (identified by being in a constraint that is both Unique and Not Null)'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_TABS;'; put 'index create'; put 'pk_mpe_datacatalog_TABS=(libref dsn tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_vars('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Table Name'','; put 'name char(64) label=''Column Name'','; put 'memtype char(8) label=''Member Type'','; put 'type char(16) label=''Column Type'','; put 'length num label=''Column Length'','; put 'varnum num label=''Column Number in Table'','; put 'label char(512) label=''Column Label'','; put 'format char(49) label=''Column Format'','; put 'idxusage char(9) label=''Column Index Type'','; put 'notnull char(3) label=''Not NULL?'','; put 'pk_ind num label=''Primary Key Indicator (1=Primary Key field)'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_vars;'; put 'index create'; put 'pk_mpe_datacatalog_vars=(libref dsn name tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datastatus_libs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'libsize num format=SIZEKMG. label=''Size of library'','; put 'table_cnt num label=''Number of Tables'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_libs;'; put 'index create'; put 'pk_mpe_datastatus_libs=(libref tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datastatus_tabs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Member Name'','; put 'filesize num format=SIZEKMG. label=''Size of file'','; put 'crdate num format=DATETIME. informat=DATETIME. label=''Date Created'','; put 'modate num format=DATETIME. informat=DATETIME. label=''Date Modified'','; put 'nobs num label=''Number of Physical (Actual, inc. deleted) Observations'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_tabs;'; put 'index create'; put 'pk_mpe_datastatus_tabs=(libref dsn tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datadictionary'; put '('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'DD_TYPE char(16),'; put 'DD_SOURCE char(1024),'; put 'DD_SHORTDESC char(256),'; put 'DD_LONGDESC char(32767),'; put 'DD_OWNER char(128),'; put 'DD_RESPONSIBLE char(128),'; put 'DD_SENSITIVITY char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datadictionary;'; put 'index create'; put 'pk_mpe_datadictionary=(tx_to dd_type dd_source)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_dataloads('; put 'libref varchar(8) ¬null,'; put 'dsn varchar(32) ¬null,'; put 'etlsource varchar(100) ¬null,'; put 'loadtype varchar(20) ¬null,'; put 'changed_records int,'; put 'new_records int,'; put 'deleted_records int,'; put 'duration num,'; put 'user_nm varchar(50) ¬null,'; put 'processed_dttm num format=datetime19.3,'; put 'mac_ver varchar(5)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_dataloads;'; put 'index create'; put 'pk_mpe_dataloads=(processed_dttm libref dsn etlsource)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_emails('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'user_name char(50) ¬null,'; put 'user_displayname char(100),'; put 'user_email char(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_emails;'; put 'index create'; put 'pk_mpe_emails=(tx_to user_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_excel_config('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'xl_libref char(8),'; put 'xl_table char(32),'; put 'xl_column char(32),'; put 'xl_rule char(32),'; put 'xl_active num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_excel_config;'; put 'index create'; put 'pk_mpe_excel_config=(tx_to xl_libref xl_table xl_column)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_filteranytable('; put 'filter_rk num ¬null,'; put 'filter_hash char(32) ¬null,'; put 'filter_table char(41) ¬null,'; put 'processed_dttm num ¬null format=datetime19.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_filteranytable;'; put 'index create filter_rk /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_filtersource('; put 'filter_hash char(32) ¬null,'; put 'filter_line num ¬null,'; put 'group_logic char(3) ¬null,'; put 'subgroup_logic char(3) ¬null,'; put 'subgroup_id num ¬null,'; put 'variable_nm varchar(32) ¬null,'; put 'operator_nm varchar(12) ¬null,'; put 'raw_value varchar(4000) ¬null,'; put 'processed_dttm num ¬null format=datetime19.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_filtersource;'; put 'index create'; put 'pk_mpe_filtersource=(filter_hash filter_line)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_groups('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'group_name char(100) ¬null,'; put 'user_name char(50) ¬null,'; put 'group_desc char(256)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_groups;'; put 'index create'; put 'pk_mpe_groups=(tx_to group_name user_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_lineage_cols'; put '('; put 'col_id char(32),'; put 'direction char(1),'; put 'sourcecoluri char(256),'; put 'map_type char(256),'; put 'map_transform char(256),'; put 'jobname char(256),'; put 'sourcetablename char(256),'; put 'sourcecolname char(256),'; put 'targettablename char(256),'; put 'targetcolname char(256),'; put 'targetcoluri char(256),'; put 'Derived_Rule char(500),'; put 'level int,'; put 'modified_dttm num format=datetime19.3,'; put 'modified_by char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lineage_cols;'; put 'index create'; put 'pk_mpe_lineage_cols=(col_id direction sourcecoluri targetcoluri map_type map_transform)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..MPE_LINEAGE_TABS'; put '('; put 'tx_from num ¬null format=datetime19.3,'; put 'jobid char(17),'; put 'srctableid char(17),'; put 'tgttableid char(17),'; put 'jobname char(128),'; put 'srctabletype char(16),'; put 'srctablename char(64),'; put 'srclibref char(8),'; put 'tgttabletype char(16),'; put 'tgttablename char(64),'; put 'tgtlibref char(8),'; put 'tx_to num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lineage_tabs;'; put 'index create'; put 'pk_mpe_lineage_tabs=(tx_to jobid srctableid tgttableid)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_loads('; put 'csv_dir char(255),'; put 'user_nm char(50) ,'; put 'status char(15) ,'; put 'duration num ,'; put 'processed_dttm num format=datetime19.3,'; put 'reason_txt char(2048) ,'; put 'approvals char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_loads;'; put 'index create csv_dir /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_lockanytable('; put 'lock_lib varchar(8) ¬null ,'; put 'lock_ds varchar(32) ¬null,'; put 'lock_status_cd varchar(10) ¬null,'; put 'lock_user_nm varchar(100) ¬null ,'; put 'lock_ref varchar(200),'; put 'lock_pid varchar(10),'; put 'lock_start_dttm num format=E8601DT26.6,'; put 'lock_end_dttm num format=E8601DT26.6'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lockanytable;'; put 'index create'; put 'pk_mpe_lockanytable=(lock_lib lock_ds)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_maxkeyvalues('; put 'keytable varchar(41) label=''Base table in libref.dataset format'','; put 'keycolumn char(32) format=$32.'; put 'label=''The Surrogate / Retained key field containing the key values.'','; put 'max_key num label='; put '''Integer value representing current max RK or SK value in the KEYTABLE'','; put 'processed_dttm num format=E8601DT26.6'; put 'label=''Datetime this value was last updated'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_maxkeyvalues;'; put 'index create keytable /nomiss unique;'; put 'quit;'; put '/* no PK defined as it is a transaction table */'; put 'proc sql;'; put 'create table &lib..mpe_requests('; put 'request_dttm num ¬null format=datetime19.,'; put 'request_user char(64) ¬null,'; put 'request_service char(64) ¬null,'; put 'request_params char(128)'; put ');'; put 'proc sql;'; put 'create table &lib..mpe_review('; put 'table_id varchar(32) ¬null,'; put 'reviewed_by_nm varchar(100) ¬null,'; put 'base_table varchar(41) ¬null,'; put 'review_status_id varchar(10) ¬null,'; put 'reviewed_on_dttm num ¬null format=datetime19.3,'; put 'review_reason_txt varchar(400)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_review;'; put 'index create'; put 'pk_mpe_review=(table_id reviewed_by_nm)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_row_level_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'RLS_RK num ¬null,'; put 'RLS_SCOPE char(8) ¬null,'; put 'RLS_GROUP char(128) ¬null,'; put 'RLS_LIBREF char(8) ¬null,'; put 'RLS_TABLE char(32) ¬null,'; put 'RLS_GROUP_LOGIC char(3) ¬null,'; put 'RLS_SUBGROUP_LOGIC char(3) ¬null,'; put 'RLS_SUBGROUP_ID num ¬null,'; put 'RLS_VARIABLE_NM varchar(32) ¬null,'; put 'RLS_OPERATOR_NM varchar(12) ¬null,'; put 'RLS_RAW_VALUE varchar(4000) ¬null,'; put 'RLS_ACTIVE num ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_row_level_security;'; put 'index create'; put 'pk_mpe_row_level_security=(tx_to RLS_RK)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'libref char(8) ¬null,'; put 'dsn char(32) ¬null,'; put 'access_level char(10) ¬null,'; put 'sas_group char(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_security;'; put 'index create'; put 'pk_mpe_security=(tx_to libref dsn access_level sas_group)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_selectbox('; put 'ver_from_dttm num ¬null format=datetime19.3,/* timestamp for versioning*/'; put 'ver_to_dttm num ¬null format=datetime19.3, /* timestamp for versioning */'; put 'selectbox_rk num ¬null, /* surrogate key */'; put 'select_lib varchar(17) ¬null, /* libref (big enough for uri)*/'; put 'select_ds varchar(32) ¬null,'; put 'base_column varchar(36) ¬null, /* variable name against which to apply selectbox */'; put 'selectbox_value varchar(500) ¬null, /* selectbox value */'; put 'selectbox_order num , /* optional ordering (1 comes before 2) */'; put 'selectbox_type varchar(32) /* column type (blank for default, else'; put 'sas or js to indicate relevant system functions)*/'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_selectbox;'; put 'index create'; put 'pk_mpe_selectbox=(ver_to_dttm selectbox_rk)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_signoffs('; put 'tech_from_dttm num ¬null format=datetime19.3,'; put 'tech_to_dttm num ¬null format=datetime19.3,'; put 'signoff_table varchar(50) ¬null,'; put 'signoff_section_rk num ¬null,'; put 'signoff_version_rk num ¬null,'; put 'signoff_name varchar(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_signoffs;'; put 'index create'; put 'pk_mpe_signoffs=(tech_to_dttm signoff_table signoff_section_rk)'; put '/nomiss unique;'; put 'quit;'; put '/* mpe_submit */'; put 'proc sql;'; put 'create table &lib..mpe_submit('; put 'table_id varchar(32) ¬null,'; put 'submit_status_cd varchar(10) ¬null,'; put 'base_lib char(8) ¬null,'; put 'base_ds char(32) ¬null,'; put 'submitted_by_nm varchar(100) ¬null,'; put 'submitted_on_dttm date ¬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 ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mm_createdocument('; put 'tree=/User Folders/sasdemo'; put ',name=myNote'; put ',desc=Created by &sysmacroname'; put ',textrole='; put ',frefin=mm_in'; put ',frefout=mm_out'; put ',mDebug=1'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%mp_abort(iftrue= (%mf_verifymacvars(tree name)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: tree name)'; put ')'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue= (&type ne Tree)'; put ',mac=mm_createdocument.sas'; put ',msg=Tree &tree does not exist!'; put ')'; put '/**'; put '* Check object does not exist already'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&name","Note",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''docuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &type = Document %then %do;'; put '%put Document &name already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Now we can create the document'; put '*/'; put 'filename &frefin temp;'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'name=quote("&name");'; put 'desc=quote("&desc");'; put 'textrole=quote("&textrole");'; put 'treeuri=quote("&treeuri");'; put 'put "$METAREPOSITORY"/'; put '''"/'; put '" "/'; put ''' '' /'; put '''''/'; put '/*URI="Document for public note" */'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout verbose;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%mend mm_createdocument;'; put '%macro mm_createfolder(path=,mDebug=0);'; put '%put &sysmacroname: execution started for &path;'; put '%local dbg errorcheck;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%local parentFolderObjId child errorcheck paths;'; put '%let paths=0;'; put '%let errorcheck=1;'; put '%if &syscc ge 4 %then %do;'; put '%put SYSCC=&syscc - this macro requires a clean session;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'length objId parentId objType parent child $200'; put 'folderPath $1000;'; put 'call missing (of _all_);'; put 'folderPath = "%trim(&path)";'; put '* remove any trailing slash ;'; put 'if ( substr(folderPath,length(folderPath),1) = ''/'' ) then'; put 'folderPath=substr(folderPath,1,length(folderPath)-1);'; put '* name must not be blank;'; put 'if ( folderPath = '''' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank";'; put 'end;'; put '* must have a starting slash ;'; put 'if ( substr(folderPath,1,1) ne ''/'' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash";'; put 'stop;'; put 'end;'; put '* check if folder already exists ;'; put 'rc=metadata_pathobj('''',cats(folderPath,"(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'put "NOTE: Folder " folderPath " already exists!";'; put 'stop;'; put 'end;'; put '* do not create a root (one level) folder ;'; put 'if countc(folderPath,''/'')=1 then do;'; put 'put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder";'; put 'stop;'; put 'end;'; put '* check that root folder exists ;'; put 'root=cats(''/'',scan(folderpath,1,''/''),"(Folder)");'; put 'if metadata_pathobj('''',root,"",objType,parentId)<1 then do;'; put 'put "%str(ERR)OR: " root " does not exist!";'; put 'stop;'; put 'end;'; put '* check that parent folder exists ;'; put 'child=scan(folderPath,-1,''/'');'; put 'parent=substr(folderpath,1,length(folderpath)-length(child)-1);'; put 'rc=metadata_pathobj('''',cats(parent,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'putlog ''The following folders will be created:'';'; put '/* folder does not exist - so start from top and work down */'; put 'length newpath $1000;'; put 'paths=0;'; put 'do x=2 to countw(folderpath,''/'');'; put 'newpath='''';'; put 'do i=1 to x;'; put 'newpath=cats(newpath,''/'',scan(folderpath,i,''/''));'; put 'end;'; put 'rc=metadata_pathobj('''',cats(newpath,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'paths+1;'; put 'call symputx(cats(''path'',paths),newpath);'; put 'putlog newpath;'; put 'end;'; put 'call symputx(''paths'',paths);'; put 'end;'; put 'end;'; put 'else putlog "parent " parent " exists";'; put 'call symputx(''parentFolderObjId'',parentId,''l'');'; put 'call symputx(''child'',child,''l'');'; put 'call symputx(''errorcheck'',0,''l'');'; put '&dbg put (_all_)(=);'; put 'run;'; put '%if &errorcheck=1 or &syscc ge 4 %then %return;'; put '%if &paths>0 %then %do x=1 %to &paths;'; put '%put executing recursive call for &&path&x;'; put '%mm_createfolder(path=&&path&x)'; put '%end;'; put '%else %do;'; put 'filename __newdir temp;'; put 'options noquotelenmax;'; put '%local inmeta;'; put '%put creating: &path;'; put '%let inmeta=$METAREPOSITORY'; put ''; put 'SAS268435456'; put ';'; put 'proc metadata in="&inmeta" out=__newdir verbose;'; put 'run ;'; put '/* check it was successful */'; put 'data _null_;'; put 'length objId parentId objType parent child $200 ;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj('''',cats("&path","(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'putlog "SUCCCESS! &path created.";'; put 'end;'; put 'else do;'; put 'putlog "%str(ERR)OR: unsuccessful attempt to create &path";'; put 'call symputx(''syscc'',8);'; put 'end;'; put 'run;'; put '/* write the response to the log for debugging */'; put '%if &mDebug ne 0 %then %do;'; put 'data _null_;'; put 'infile __newdir lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'filename __newdir clear;'; put '%end;'; put '%put &sysmacroname: execution finished for &path;'; put '%mend mm_createfolder;'; put '%macro mm_createlibrary('; put 'libname=My New Library'; put ',libref=mynewlib'; put ',libdesc=Created automatically using the mm_createlibrary macro'; put ',engine=BASE'; put ',tree=/User Folders/sasdemo'; put ',servercontext=SASApp'; put ',directory=/tmp/somelib'; put ',IsPreassigned=0'; put ',mDebug=0'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%let libref=%upcase(&libref);'; put '/**'; put '* Check Library does not exist already with this libname'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Name=''&libname''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libname (&libname);'; put '%return;'; put '%end;'; put '/**'; put '* Check Library does not exist already with this libref'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Libref=''&libref''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libref (&libref) ;'; put '%return;'; put '%end;'; put '/**'; put '* Attempt to create tree'; put '*/'; put '%mm_createfolder(path=&tree)'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Create filerefs for proc metadata call'; put '*/'; put 'filename &frefin temp;'; put 'filename &frefout temp;'; put '%mp_abort(iftrue= ('; put '&engine=BASE & %mf_verifymacvars(libname libref engine servercontext tree)=0'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: libname libref engine servercontext tree)'; put ')'; put '%if &engine=BASE %then %do;'; put '/**'; put '* Check that the ServerContext exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:ServerContext?@Name=''&ServerContext''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''serveruri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne ServerContext %then %do;'; put '%put %str(ERR)OR: ServerContext (&ServerContext) does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Get prototype info'; put '*/'; put 'data _null_;'; put 'length type uri str $256;'; put 'str="omsobj:Prototype?@Name=''Library.SAS.Prototype.Name.xmlKey.txt''";'; put 'rc=metadata_resolve(str,type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''prototypeuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Prototype %then %do;'; put '%put %str(ERR)OR: Prototype Library.SAS.Prototype.Name.xmlKey.txt not found;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Physical location exists'; put '*/'; put '%if %sysfunc(fileexist(&directory))=0 %then %do;'; put '%put %str(ERR)OR: Physical directory (&directory) does not appear to exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Directory Object exists in metadata'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Directory %then %do;'; put '%put NOTE: Directory object does not exist for (&directory) location;'; put '%put NOTE: It will now be created;'; put 'data _null_;'; put 'file &frefin;'; put 'directory=quote(symget(''directory''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input; put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure directory (&directory) object was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype2'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &checktype2 ne Directory %then %do;'; put '%put %str(ERR)OR: Directory (&directory) object was NOT created!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Directory (&directoryuri) successfully created!;'; put '%end;'; put '/**'; put '* check SAS version'; put '*/'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: Version 9.3 or later required;'; put '%return;'; put '%end;'; put '/**'; put '* Prepare the XML and create the library'; put '*/'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'directoryuri=quote(symget(''directoryuri''));'; put 'libname=quote(symget(''libname''));'; put 'libref=quote(symget(''libref''));'; put 'IsPreassigned=quote(symget(''IsPreassigned''));'; put 'prototypeuri=quote(symget(''prototypeuri''));'; put '/* escape description so it can be stored as XML */'; put 'libdesc=tranwrd(symget(''libdesc''),''&'',''&'');'; put 'libdesc=tranwrd(libdesc,''<'',''<'');'; put 'libdesc=tranwrd(libdesc,''>'',''>'');'; put 'libdesc=tranwrd(libdesc,"''",''''');'; put 'libdesc=tranwrd(libdesc,''"'',''"'');'; put 'libdesc=tranwrd(libdesc,''0A''x,'' '');'; put 'libdesc=tranwrd(libdesc,''0D''x,'' '');'; put 'libdesc=tranwrd(libdesc,''$'',''$'');'; put 'libdesc=quote(trim(libdesc));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put ''' ''/'; put ''' "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '" "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '''SAS''/'; put '''268435456'';'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose ;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure library (&libname) was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&libname","Library",type,uri);'; put 'call symputx(''libtype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &libtype ne SASLibrary %then %do;'; put '%put %str(ERR)OR: Could not find (&libname) at (&tree)!!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Library (&libname) successfully created in (&tree)!;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Other library engine types are not yet supported!!;'; put '%end;'; put '/**'; put '* Wrap up'; put '*/'; put '%if &mdebug ne 1 %then %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_createlibrary;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mm_getDirectories('; put 'path='; put ',outds=work.mm_getDirectories'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getDirectories.sas;'; put '%&mD.put _local_;'; put 'data &outds (keep=directoryuri name directoryname directorydesc );'; put 'length directoryuri name directoryname directorydesc $256;'; put 'call missing(of _all_);'; put '__i+1;'; put '%if %length(&path)=0 %then %do;'; put 'do while'; put '(metadata_getnobj("omsobj:Directory?@Id contains ''.''",__i,directoryuri)>0);'; put '%end; %else %do;'; put 'do while('; put 'metadata_getnobj("omsobj:Directory?@DirectoryName=''&path''",__i,directoryuri)'; put '>0'; put ');'; put '%end;'; put '__rc1=metadata_getattr(directoryuri, "Name", name);'; put '__rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname);'; put '__rc3=metadata_getattr(directoryuri, "Desc", directorydesc);'; put '&mD.putlog (_all_) (=);'; put 'drop __:;'; put '__i+1;'; put 'if sum(of __rc1-__rc3)=0 then output;'; put 'end;'; put 'run;'; put '%mend mm_getDirectories;'; put '%macro mm_updatestpsourcecode(stp='; put ',stpcode='; put ',minify=NO'; put ',mdebug=0'; put ');'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&stp.(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '%if &mdebug=1 %then %do;'; put 'put tsuri= value=;'; put '%end;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%if &tsuri=stopifempty %then %do;'; put '%put %str(WARN)ING: &stp.(StoredProcess) not found!;'; put '%return;'; put '%end;'; put '%if %length(&stpcode)<2 %then %do;'; put '%put %str(WARN)ING: No SAS code supplied!!;'; put '%return;'; put '%end;'; put '%local frefin frefout;'; put '%let frefin=%mf_getuniquefileref();'; put '%let frefout=%mf_getuniquefileref();'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'put "$METAREPOSITORY'; put '2 %then %do;'; put 'data _null_;'; put 'file &frefin lrecl=32767 mod;'; put 'infile &stpcode lrecl=32767;'; put 'length outstr $32767;'; put 'input outstr ;'; put '/* escape code so it can be stored as XML */'; put 'outstr=tranwrd(_infile_,''&'',''&'');'; put 'outstr=tranwrd(outstr,''<'',''<'');'; put 'outstr=tranwrd(outstr,''>'',''>'');'; put 'outstr=tranwrd(outstr,"''",''''');'; put 'outstr=tranwrd(outstr,''"'',''"'');'; put 'outstr=tranwrd(outstr,''0A''x,'' '');'; put 'outstr=tranwrd(outstr,''0D''x,'' '');'; put 'outstr=tranwrd(outstr,''$'',''$'');'; put '%if &minify=YES %then %do;'; put 'outstr=cats(outstr);'; put 'if outstr ne '''';'; put 'if not (outstr=:''/*'' and subpad(left(reverse(outstr)),1,2)=''/*'');'; put '%end;'; put 'outstr=trim(outstr);'; put 'put outstr '' '';'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &frefin mod;'; put 'put "''>SAS268435456'; put '";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_updatestpsourcecode;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro mm_getservercontexts('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* first get list of available repos */'; put '%mm_getrepos(outds=work.repos)'; put '%let repocnt=0;'; put 'data _null_;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put 'filename __mc1 temp;'; put 'filename __mc2 temp;'; put 'data &outds;'; put 'length serveruri servername $200;'; put 'call missing (of _all_);'; put 'stop;'; put 'run;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'ServerContextSAS'; put '0"'; put 'out=__mc1;'; put 'run;'; put '/*'; put 'data _null_;'; put 'infile __mc1 lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put 'data _null_;'; put 'file __mc2;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;'; put 'proc append base=&outds data=__mc3.SASContexts;run;'; put 'libname __mc3 clear;'; put '%end;'; put 'options metarepository=&repo;'; put 'filename __mc1 clear;'; put 'filename __mc2 clear;'; put '%mend mm_getservercontexts;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mm_createstp('; put 'stpname=Macro People STP'; put ',stpdesc=This stp was created automatically by the mm_createstp macro'; put ',filename=mm_createstp.sas'; put ',directory=SASEnvironment/SASCode'; put ',tree=/User Folders/sasdemo'; put ',package=false'; put ',streaming=true'; put ',outds=work.mm_createstp'; put ',mDebug=0'; put ',server=SASApp'; put ',stptype=1'; put ',minify=NO'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_CreateSTP.sas;'; put '%&mD.put _local_;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(stpname filename directory tree)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: stpname filename directory tree)'; put ')'; put '%mp_dropmembers(%scan(&outds,2,.))'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check STP does not exist already'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&stpname",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype = ClassifierMap %then %do;'; put '%put %str(WARN)ING: Stored Process &stpname already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that the physical file exists'; put '*/'; put '%if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do;'; put '%put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!;'; put '%return;'; put '%end;'; put '%if &stptype=1 %then %do;'; put '/* type 1 STP - where code is stored on filesystem */'; put '%if %sysevalf(&sysver lt 9.2) %then %do;'; put '%put %str(WARN)ING: Version 9.2 or later required;'; put '%return;'; put '%end;'; put '/* check directory object (where 9.2 source code reference is stored) */'; put 'data _null_;'; put 'length id $20 dirtype $256;'; put 'rc=metadata_resolve("&directory",dirtype,id);'; put 'call symputx(''checkdirtype'',dirtype,''l'');'; put 'run;'; put '%if &checkdirtype ne Directory %then %do;'; put '%mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug)'; put '%if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do;'; put '%put %str(WARN)ING: The directory object does not exist for &directory;'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'directoryuri="&directory";'; put 'run;'; put '%end;'; put 'data &outds (keep=stpuri prompturi fileuri texturi);'; put 'length stpuri prompturi fileuri texturi serveruri $256 ;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &outds;'; put '/* final checks on uris */'; put 'length id $20 type $256;'; put '__rc=metadata_resolve("&treeuri",type,id);'; put 'if type ne ''Tree'' then do;'; put 'putlog "%str(WARN)ING: Invalid tree URI: &treeuri";'; put 'stopme=1;'; put 'end;'; put '__rc=metadata_resolve(directoryuri,type,id);'; put 'if type ne ''Directory'' then do;'; put 'putlog "%str(WARN)ING: Invalid directory URI: " directoryuri;'; put 'stopme=1;'; put 'end;'; put '/* get server info */'; put '__rc=metadata_resolve("&server",type,serveruri);'; put 'if type ne ''LogicalServer'' then do;'; put '__rc=metadata_getnobj("omsobj:LogicalServer?@Name=''&server''",1,serveruri);'; put 'if serveruri='''' then do;'; put 'putlog "%str(WARN)ING: Invalid server: &server";'; put 'stopme=1;'; put 'end;'; put 'end;'; put 'if stopme=1 then do;'; put 'putlog (_all_)(=);'; put 'stop;'; put 'end;'; put '/* create empty prompt */'; put 'rc1=METADATA_NEWOBJ(''PromptGroup'',prompturi,''Parameters'');'; put 'rc2=METADATA_SETATTR(prompturi, ''UsageVersion'', ''1000000'');'; put 'rc3=METADATA_SETATTR(prompturi, ''GroupType'',''2'');'; put 'rc4=METADATA_SETATTR(prompturi, ''Name'',''Parameters'');'; put 'rc5=METADATA_SETATTR(prompturi, ''PublicType'',''Embedded:PromptGroup'');'; put 'GroupInfo='; put '"";'; put 'rc6 = METADATA_SETATTR(prompturi, ''GroupInfo'',groupinfo);'; put 'if sum(of rc1-rc6) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating prompt.";'; put 'if prompturi ne . then do;'; put 'putlog '' Removing orphan: '' prompturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'put rc=;'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a file uri */'; put 'rc7=METADATA_NEWOBJ(''File'',fileuri,''SP Source File'');'; put 'rc8=METADATA_SETATTR(fileuri, ''FileName'',"&filename");'; put 'rc9=METADATA_SETATTR(fileuri, ''IsARelativeName'',''1'');'; put 'rc10=METADATA_SETASSN(fileuri, ''Directories'',''MODIFY'',directoryuri);'; put 'if sum(of rc7-rc10) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating file.";'; put 'if fileuri ne . then do;'; put 'putlog '' Removing orphans:'' prompturi fileuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a TextStore object */'; put 'rc11= METADATA_NEWOBJ(''TextStore'',texturi,''Stored Process'');'; put 'rc12= METADATA_SETATTR(texturi, ''TextRole'',''StoredProcessConfiguration'');'; put 'rc13= METADATA_SETATTR(texturi, ''TextType'',''XML'');'; put 'storedtext='''''; put '!!""'; put '!!"";'; put 'rc14= METADATA_SETATTR(texturi, ''StoredText'',storedtext);'; put 'if sum(of rc11-rc14) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating TextStore.";'; put 'if texturi ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create meta obj */'; put 'rc15= METADATA_NEWOBJ(''ClassifierMap'',stpuri,"&stpname");'; put 'rc16= METADATA_SETASSN(stpuri, ''Trees'',''MODIFY'',treeuri);'; put 'rc17= METADATA_SETASSN(stpuri, ''ComputeLocations'',''MODIFY'',serveruri);'; put 'rc18= METADATA_SETASSN(stpuri, ''SourceCode'',''MODIFY'',fileuri);'; put 'rc19= METADATA_SETASSN(stpuri, ''Prompts'',''MODIFY'',prompturi);'; put 'rc20= METADATA_SETASSN(stpuri, ''Notes'',''MODIFY'',texturi);'; put 'rc21= METADATA_SETATTR(stpuri, ''PublicType'', ''StoredProcess'');'; put 'rc22= METADATA_SETATTR(stpuri, ''TransformRole'', ''StoredProcess'');'; put 'rc23= METADATA_SETATTR(stpuri, ''UsageVersion'', ''1000000'');'; put 'rc24= METADATA_SETATTR(stpuri, ''Desc'', "&stpdesc");'; put '/* tidy up if err */'; put 'if sum(of rc15-rc24) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating STP.";'; put 'if stpuri ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi stpuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'rc = METADATA_DELOBJ(stpuri);'; put 'put (_all_)(=);'; put 'end;'; put 'end;'; put 'else do;'; put 'fullpath=cats(''_program='',treepath,"/&stpname");'; put 'putlog "NOTE: Stored Process Created!";'; put 'putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath;'; put 'putlog "NOTE- "; putlog "NOTE-";'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%end;'; put '%else %if &stptype=2 %then %do;'; put '/* type 2 stp - code is stored in metadata */'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs;'; put '%return;'; put '%end;'; put '/* check we have the correct ServerContext */'; put '%mm_getservercontexts(outds=contexts)'; put '%local serveruri; %let serveruri=NOTFOUND;'; put 'data _null_;'; put 'set contexts;'; put 'where upcase(servername)="%upcase(&server)";'; put 'call symputx(''serveruri'',serveruri);'; put 'run;'; put '%if &serveruri=NOTFOUND %then %do;'; put '%put %str(WARN)ING: ServerContext *&server* not found!;'; put '%return;'; put '%end;'; put '/**'; put '* First, create a Hello World type 2 stored process'; put '*/'; put 'filename &frefin temp;'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'stpdesc=quote(symget(''stpdesc''));'; put 'stpname=quote(symget(''stpname''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '" "/'; put '" "/'; put '" "/'; put '" "/'; put ''' ''/'; put ''' '' /'; put '" "/'; put '" "/'; put ''' ''/'; put '" "/'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout ;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '/**'; put '* Next, add the source code'; put '*/'; put '%mm_updatestpsourcecode(stp=&tree/&stpname'; put ',stpcode="&directory/&filename"'; put ',mdebug=&mdebug'; put ',minify=&minify)'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: STPTYPE=*&stptype* not recognised!;'; put '%end;'; put '%mend mm_createstp;'; put '%macro mm_deletedocument('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check document exist'; put '*/'; put '%local type;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &type ne Document %then %do;'; put '%put %str(WARN)ING: No Document found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = Document %then %do;'; put '%put %str(ERR)OR: Document not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletedocument;'; put '%macro mm_deletestp('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check STP does exist'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype ne ClassifierMap %then %do;'; put '%put NOTE: No Stored Process found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = ClassifierMap %then %do;'; put '%put %str(ERR)OR: STP not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletestp;'; put '%macro mm_getstpinfo(pgm'; put ',outds=work.mm_getstpinfo'; put ',mDebug=0'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put 'data &outds;'; put 'length type stp_uri tsuri servercontext value $200'; put 'StoredProcessConfiguration $1000 sourcecode_first32k $32767;'; put 'keep path stp_uri sourcecode_first32k StoredProcessConfiguration'; put 'servercontext;'; put 'call missing (of _all_);'; put 'path="&pgm(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,stp_uri)>0 then do;'; put '/* get attributes */'; put 'cnt=1;'; put 'do while (metadata_getnasn(stp_uri,"Notes",cnt,tsuri)>0);'; put 'rc1=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put 'rc2=metadata_getattr(tsuri,"StoredText",sourcecode_first32k);'; put 'end;'; put 'else if value="Stored Process" then do;'; put 'rc3=metadata_getattr(tsuri,"StoredText",StoredProcessConfiguration);'; put 'end;'; put 'cnt+1;'; put 'end;'; put '/* get context (should only be one) */'; put 'rc4=metadata_getnasn(stp_uri,"ComputeLocations",1,tsuri);'; put 'rc5=metadata_getattr(tsuri,"Name",servercontext);'; put 'end;'; put 'else do;'; put 'put "%str(ERR)OR: could not find " path;'; put 'put (_all_)(=);'; put 'end;'; put '&md.put (_all_)(=);'; put 'run;'; put '%mend mm_getstpinfo ;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief service for creating the configuration tables in DEMO mode.'; put '@details'; put 'STP for creating the configuration tables in DEMO mode.'; put 'It also adds the STAGING directory as subdirectory to the BASE'; put 'library location.'; put 'Note - the CURLIB var is added during the build process.'; put '@warning This STP self destructs! It will delete itself after a successful run'; put 'to avoid being executed twice (and overwriting actual data)'; put '

SAS Macros

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

SAS Macros

'; put '@li mm_createlibrary.sas'; put '@li mm_createdocument.sas'; put '@li mm_deletedocument.sas'; put '@li mp_abort.sas'; put '@li dc_assignlib.sas'; put '@li mm_deletestp.sas'; put '@li mm_createstp.sas'; put '@li mf_mkdir.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%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();'; 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 "%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()'; 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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%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();'; 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 "%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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getapprovals.sas'; put '@brief Returns a list of staged data items that need to be approved'; put '@details'; put '

SAS Macros

'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Returns the list of previously approved / rejected items.'; put '@details Is filtered according to the groups in MPE_SECURITY.'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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 hist=40;'; put '/* load parameters */'; 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 a.TABLE_ID'; put ',cats(a.base_lib,''.'',a.base_ds) as base_table'; put ',put(a.SUBMITTED_ON_DTTM,yymmddhhmmss.) as submitted'; put ',a.submitted_reason_txt'; put ',a.submitted_by_nm as submitter'; put ',put(a.REVIEWED_ON_DTTM,yymmddhhmmss.) as REVIEWED'; put ',a.submit_status_cd as status'; put ',a.reviewed_on_dttm'; put ',a.reviewed_by_nm as approver'; put 'from &mpelib..mpe_submit(where=(submit_status_cd ne ''SUBMITTED'')) a'; put '%macro gethistory();'; put '%if &authcheck=0 %then %do;'; put '/* filter for allowed items */'; put 'left join &mpelib..mpe_security(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.base_lib=b.libref'; put 'and (a.base_ds=b.dsn or b.dsn=''*ALL*'')'; put 'where upcase(b.SAS_GROUP) in (select upcase(groupname) from work.usergroups)'; put 'and b.access_level in (''VIEW'',''AUDIT'',''EDIT'',''APPROVE'')'; put '%end;'; put '%mend gethistory;'; put '%gethistory()'; put 'order by a.submitted_on_dttm desc;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after fetching submits)'; put ')'; put 'data work.fromsas;'; put 'set work.submits;'; put 'if _n_>&hist then stop;'; 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(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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) 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;'; put 'proc sql noprint;'; 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 '%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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put msg;'; 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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdiffs.sas'; put '@brief Retrieves the diff file for viewing'; put '@details'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_accesscheck.sas'; put '@li mf_getattrn.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getstagetable.sas'; put '@brief Retrieves the actual table that is being sent for update'; put '@details'; put '

SAS Macros

'; put '@li mf_getvalue.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro 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 mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; 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 ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; 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 '%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" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_loadformat(libcat,libds'; put ',loadtarget=NO'; put ',auditlibds=0'; put ',locklibds=0'; put ',delete_col=_____DELETE__THIS__RECORD_____'; put ',outds_add=0'; put ',outds_del=0'; put ',outds_mod=0'; put ',mdebug=0'; put ');'; put '/* set up local macro variables and temporary tables (with a prefix) */'; put '%local err msg prefix dslist i var fmtlist ibufsize;'; put '%let dslist=base_fmts template inlibds ds1 stagedata storediffs;'; 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 '/*'; put 'format values can be up to 32767 wide. SQL joins on such a wide column can'; put 'cause buffer issues. Update ibufsize and reset at the end.'; put '*/'; put '%let ibufsize=%sysfunc(getoption(ibufsize));'; put 'options ibufsize=32767 ;'; put '/* in DC, format catalogs maybe specified in the libds with a -FC extension */'; put '%let libcat=%scan(&libcat,1,-);'; put '/* perform input validations */'; put '%let err=0;'; put '%let msg=0;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'value=upcase(value);'; put 'if &mdebug=0 then put name ''='' value;'; put 'if name=:''LOAD'' and value not in (''YES'',''NO'') then do;'; put 'call symputx(''msg'',"invalid value for "!!name!!":"!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'else if name=''LIBCAT'' then do;'; put 'if exist(value,''CATALOG'') le 0 then do;'; put 'call symputx(''msg'',"Unable to open catalog: "!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if name=''LIBDS'' then do;'; put 'if exist(value) le 0 then do;'; put 'call symputx(''msg'',"Unable to open staging table: "!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if (name=:''OUTDS'' or name in (''DELETE_COL'',''LOCKLIBDS'',''AUDITLIBDS''))'; put 'and missing(value) then do;'; put 'call symputx(''msg'',"missing value in var: "!!name);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'run;'; put '%mp_abort('; put 'iftrue=(&err ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(&msg)'; put ')'; put '/**'; put '* First, extract only relevant formats from the catalog'; put '*/'; put 'proc sql noprint;'; put 'select distinct upcase(fmtname) into: fmtlist separated by '' '' from &libds;'; put '%mp_cntlout(libcat=&libcat,fmtlist=&fmtlist,cntlout=&base_fmts)'; put '/**'; put '* Ensure input table and base_formats have consistent lengths and types'; put '*/'; put '%mddl_sas_cntlout(libds=&template)'; put 'data &inlibds;'; put 'length &delete_col $3;'; put 'if 0 then set &template;'; put 'set &libds;'; put 'if &delete_col='''' then &delete_col=''No'';'; put 'fmtname=upcase(fmtname);'; put 'if missing(type) then do;'; put 'if substr(fmtname,1,1)=''$'' then type=''C'';'; put 'else type=''N'';'; put 'end;'; put 'if type=''N'' then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; 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.fmtname=b.fmtname'; put 'and a.start=b.start'; put 'where b.fmtname is null'; put 'and upcase(a.&delete_col) ne "YES"'; put 'order by fmtname, start;;'; 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.fmtname=b.fmtname'; put 'and a.start=b.start'; put 'where upcase(a.&delete_col)="YES"'; put 'order by fmtname, start;'; 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.fmtname=b.fmtname'; put 'and a.start=b.start'; put 'where upcase(a.&delete_col) ne "YES"'; put 'order by fmtname, start;'; put 'options ibufsize=&ibufsize;'; 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 '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 fmtname start;'; put 'run;'; put 'data &stagedata;'; put 'set &ds1 &outds_mod;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; 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 %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 '%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 ',FMTNAME START'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=&storediffs'; put ',mdebug=&mdebug'; put ')'; put 'proc append base=&auditlibds data=&storediffs;'; put 'run;'; put '%if &locklibds ne 0 %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&auditlibds,1,.)'; put ',ds=%scan(&auditlibds,2,.)'; put ',ref=MP_LOADFORMAT commencing audit table load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '%end;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc after load)'; put ')'; put '%if &mdebug=0 %then %do;'; put 'proc datasets lib=work;'; put 'delete &prefix:;'; put 'run;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%mend mp_loadformat;'; put '%macro mpe_targetloader(libds= /* library.dataset to LOAD (target) */'; put ',now= %sysfunc(datetime()) /* static processed timestamp */'; put ',etlsource= /* process from whence the data came */'; put ',STAGING_DS= STAGING_DS /* name of staging (work) dataset which should'; put 'be appended into the target. */'; put ',LOADTARGET=NO /* set to yes to actually load the target */'; put ',CLOSE_VARS= /* provide close vars to override defaults */'; put ',dclib=NOTPROVIDED'; put ',mdebug=0'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%local lib ds nobs;'; put '/**'; put '* if a format catalog (suffix "-FC") we assume the catalog has already been'; put '* created by the calling program with a libds of work.fmtextract'; put '*/'; put '%let orig_lib=%upcase(%scan(&libds,1,.));'; put '%let orig_ds=%upcase(%scan(&libds,2,.));'; put '%let orig_libds=&libds;'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%let lib=WORK;'; put '%let ds=FMTEXTRACT;'; put '%let libds=&lib..&ds;'; put '%end;'; put '%else %do;'; put '%let lib=&orig_lib;'; put '%let ds=&orig_ds;'; put '%end;'; put '%mp_abort(iftrue= (&dclib=NOTPROVIDED)'; put ',mac=&sysmacroname'; put ',msg=%str(dclib=NOTPROVIDED)'; put ')'; put '/* get table attributes */'; put '%let nobs=0;'; put 'data work.sumo_config;'; put 'set &mpelib..mpe_tables;'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="&orig_lib"'; put 'and dsn="&orig_ds";'; put 'call symputx(''LOADTYPE'',loadtype,''l'');'; put 'call symputx(''BUSKEY'',buskey,''l'');'; put 'call symputx(''VAR_TXFROM'',var_txfrom,''l'');'; put 'call symputx(''VAR_TXTO'',var_txto,''l'');'; put 'call symputx(''VAR_BUSFROM'',var_busfrom,''l'');'; put 'call symputx(''VAR_BUSTO'',var_busto,''l'');'; put 'call symputx(''VAR_PROCESSED'',VAR_PROCESSED,''l'');'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING,''l'');'; put '%if %length(&CLOSE_VARS)=0 %then %do;'; put 'call symputx(''CLOSE_VARS'',CLOSE_VARS,''l'');'; put '%end;'; put 'call symputx(''nobs'',_n_,''l'');'; put 'if missing(AUDIT_LIBDS) then AUDIT_LIBDS="&dclib..MPE_AUDIT";'; put 'call symputx(''AUDIT_LIBDS'',AUDIT_LIBDS,''l'');'; put 'put (_all_)(=);'; put 'run;'; put '/* check if table is actually configured to load */'; put '%if &nobs ne 1 %then %do;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="%mf_getuser()"'; put ',STATUS=''FAILED (BAD DS)'''; put ',CSV_DIR=symget(''ETLSOURCE'')'; put ',PROCESSED_DTTM=&now;'; put '%end;'; put '%mp_abort(iftrue= (&nobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Table not registered in &mpelib..mpe_tables)'; put ')'; put '%mp_abort(iftrue= (&nobs>1)'; put ',mac=&sysmacroname'; put ',msg=%str(Something is very wrong with the PK in &mpelib..mpe_tables)'; put ')'; put '%if &LOADTYPE=TXTEMPORAL %then %do;'; put '%bitemporal_dataloader(bus_from=,bus_to= /* explicitly empty*/'; put ',tech_from=&VAR_TXFROM'; put ',tech_to = &VAR_TXTO'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=&ETLSOURCE'; put ',LOADTYPE=&loadtype'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',CLOSE_VARS=&CLOSE_VARS'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %if &loadtype=REPLACE %then %do;'; put '%if &LOADTARGET=YES %then %do;'; put '%mp_lockanytable(LOCK,lib=&lib,ds=&ds,ref=%str(&etlsource),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put 'data WORK.&STAGING_DS;'; put 'set WORK.&STAGING_DS;'; put '%if %mf_existvar(&libds,&VAR_PROCESSED) %then %do;'; put '&VAR_PROCESSED = &now;'; put '%end;'; put 'drop _____DELETE__THIS__RECORD_____;'; put 'run;'; put 'proc sql; delete * from &libds;'; put 'proc append base=&libds data=WORK.&STAGING_DS force nowarn;run;'; put '%mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ctl_ds=&dclib..mpe_lockanytable)'; put '%end;'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '%bitemporal_dataloader(bus_from=,bus_to='; put ',tech_from= ,tech_to = /* explicitly empty*/'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=%superq(etlsource)'; put ',LOADTYPE=UPDATE'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %if &loadtype=FORMAT_CAT %then %do;'; put '/**'; put '* run mp_formatload'; put '* inputs:'; put '* - LOADTARGET'; put '* - CATALOG'; put '* - STAGEDATA'; put '* - LOADAUDIT'; put '* outputs:'; put '* work.outds_add'; put '* work.outds_del'; put '* work.outds_mod'; put '*/'; put '%mp_loadformat(&orig_libds'; put ',&staging_ds'; put ',loadtarget=&LOADTARGET'; put ',auditlibds=&AUDIT_LIBDS'; put ',locklibds=&dclib..mpe_lockanytable'; put ',delete_col=_____DELETE__THIS__RECORD_____'; put ',outds_add=outds_add'; put ',outds_del=outds_del'; put ',outds_mod=outds_mod'; put ',mdebug=&mdebug'; put ')'; put '%end;'; put '%else %if &loadtype=BITEMPORAL %then %do;'; put '%bitemporal_dataloader(bus_from=&VAR_BUSFROM,bus_to=&VAR_BUSTO'; put ',tech_from=&VAR_TXFROM'; put ',tech_to = &VAR_TXTO'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=%superq(etlsource)'; put ',LOADTYPE=BITEMPORAL'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',CLOSE_VARS=&CLOSE_VARS'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %do;'; put '%put WARNING: LOADTYPE &LOADTYPE not supported;'; put '%let syscc=4;'; put '%mp_abort(msg=LOADTYPE &LOADTYPE not supported,mac=mpe_targetloader.sas)'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc exiting MPE_TARGETLOADER macro)'; put ')'; put '%mend mpe_targetloader;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mf_getuniquelibref(prefix=mclib,maxtries=1000);'; put '%local x;'; put '%if ( %length(&prefix) gt 7 ) %then %do;'; put '%put %str(ERR)OR: The prefix parameter cannot exceed 7 characters.;'; put '0'; put '%return;'; put '%end;'; put '%else %if (%sysfunc(NVALID(&prefix,v7))=0) %then %do;'; put '%put %str(ERR)OR: Invalid prefix (&prefix);'; put '0'; put '%return;'; put '%end;'; put '/* Set maxtries equal to ''10 to the power of [# unused characters] - 1'' */'; put '%let maxtries=%eval(10**(8-%length(&prefix))-1);'; put '%do x = 0 %to &maxtries;'; put '%if %sysfunc(libref(&prefix&x)) ne 0 %then %do;'; put '&prefix&x'; put '%return;'; put '%end;'; put '%let x = %eval(&x + 1);'; put '%end;'; put '%put %str(ERR)OR: No usable libref in range &prefix.0-&maxtries;'; put '%put %str(ERR)OR- Try reducing the prefix or deleting some libraries!;'; put '0'; put '%mend mf_getuniquelibref;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file postdata.sas'; put '@brief Either returns the file diffs or actually loads the data to target'; put '@details Before loading the target, a check is made against the time the'; put 'target was last updated (backend) and the time the DIFF was generated'; put '(frontend). If the target was updated whilst the DIFF was on the screen,'; put 'then the provided diff may have been incorrect and so a new DIFF should be'; put 'generated and approved before load.'; put 'Only 100 rows (of each DIFF type) are displayed on the DIFF screen.'; put '

Service Inputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Inputs

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Inputs

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

Service Outputs

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

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_getservicecode.sas'; put '@li mf_nobs.sas'; put '@li mp_abort.sas'; put '@li mp_include.sas'; put '@li mp_validatecol.sas'; put '@li mf_getapploc.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put msg;'; 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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getsubmits.sas'; put '@brief Returns a list of staged data items that need to be approved'; put '@details'; put '

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Inputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

SAS Macros

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

Related Macros

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

Related Files

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

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_TABLES table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks MPE_TABLES to ensure modified / added records are'; put 'valid. If a non-default AUDIT_LIBDS is being used, there is also a check'; put 'to ensure that this table already exists.'; put '**/'; put '%let errmsg=;'; put '%let errflag=0;'; put '/* ensure uppercasing */'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'LIBREF=upcase(LIBREF);'; put 'DSN=upcase(DSN);'; put 'loadtype=upcase(loadtype);'; put 'buskey=upcase(buskey);'; put 'var_txfrom=upcase(var_txfrom);'; put 'var_txto=upcase(var_txto);'; put 'var_busfrom=upcase(var_busfrom);'; put 'var_busto=upcase(var_busto);'; put 'var_processed=upcase(var_processed);'; put 'close_vars=upcase(close_vars);'; put 'audit_libds=upcase(audit_libds);'; put '/* check for valid loadtype */'; put 'if LOADTYPE not in (''UPDATE'',''TXTEMPORAL'',''FORMAT_CAT'',''BITEMPORAL'',''REPLACE'')'; put 'then do;'; put 'call symputx(''errmsg'',"Invalid LOADTYPE: "!!LOADTYPE);'; put 'call symputx(''errflag'',1);'; put 'end;'; put '/* force correct BUSKEY when loading format catalogs */'; put 'if LOADTYPE=''FORMAT_CAT'' then BUSKEY=''FMTNAME START'';'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_VALIDATIONS table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming mpe_validations settings to ensure'; put 'there are no columns that have both HARDSELECT_HOOK and SOFTSELECT_HOOK.'; put '

SAS Macros

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

Related Macros

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

Related Files

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

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch Table Lineage for SAS 9'; put 'Some nice ideas for formatting are available here:'; put 'https://renenyffenegger.ch/notes/tools/Graphviz/examples/index'; put '

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

SAS Macros

'; put '@li mm_getcols.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_gettables('; put 'uri='; put ',outds=work.mm_gettables'; put ',getauth=YES'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'length uri serveruri conn_uri domainuri libname ServerContext AuthDomain'; put 'path_schema usingpkguri type tableuri $256 id $17'; put 'libdesc $200 libref engine $8 IsDBMSLibname IsPreassigned $1'; put 'tablename $50 /* metadata table names can be longer than $32 */'; put ';'; put 'keep libname libdesc libref engine ServerContext path_schema AuthDomain'; put 'tableuri tablename IsPreassigned IsDBMSLibname id;'; put 'call missing (of _all_);'; put 'uri=symget(''uri'');'; put 'rc= metadata_getattr(uri, "Name", libname);'; put 'if rc <0 then do;'; put 'put ''The library is not defined in this metadata repository.'';'; put 'stop;'; put 'end;'; put 'rc= metadata_getattr(uri, "Desc", libdesc);'; put 'rc= metadata_getattr(uri, "Libref", libref);'; put 'rc= metadata_getattr(uri, "Engine", engine);'; put 'rc= metadata_getattr(uri, "IsDBMSLibname", IsDBMSLibname);'; put 'rc= metadata_getattr(uri, "IsPreassigned", IsPreassigned);'; put 'rc= metadata_getattr(uri, "Id", Id);'; put '/*** Get associated ServerContext ***/'; put 'rc= metadata_getnasn(uri, "DeployedComponents", 1, serveruri);'; put 'if rc > 0 then rc2= metadata_getattr(serveruri, "Name", ServerContext);'; put 'else ServerContext='''';'; put '/*** If the library is a DBMS library, get the Authentication Domain'; put 'associated with the DBMS connection credentials ***/'; put 'if IsDBMSLibname="1" and "&getauth"=''YES'' then do;'; put 'rc= metadata_getnasn(uri, "LibraryConnection", 1, conn_uri);'; put 'if rc>0 then do;'; put 'rc2= metadata_getnasn(conn_uri, "Domain", 1, domainuri);'; put 'if rc2>0 then rc3= metadata_getattr(domainuri, "Name", AuthDomain);'; put 'end;'; put 'end;'; put '/*** Get the path/database schema for this library ***/'; put 'rc=metadata_getnasn(uri, "UsingPackages", 1, usingpkguri);'; put 'if rc>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put 'if type=''Directory'' then'; put 'rc=metadata_getattr(usingpkguri, "DirectoryName", path_schema);'; put 'else if type=''DatabaseSchema'' then'; put 'rc=metadata_getattr(usingpkguri, "Name", path_schema);'; put 'else path_schema="unknown";'; put 'end;'; put '/*** Get the tables associated with this library ***/'; put '/*** If DBMS, tables are associated with DatabaseSchema ***/'; put 'if type=''DatabaseSchema'' then do;'; put 't=1;'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'else if type in (''Directory'',''SASLibrary'') then do;'; put 't=1;'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by tablename tableuri;'; put 'run;'; put '%mend mm_gettables;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getmetatables.sas'; put '@brief List the tables as defined in metadata'; put '@details Provide a library uri and get list of tables'; put '

SAS Macros

'; put '@li mm_gettables.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getdetails(uri'; put ',outattrs=work.attributes'; put ',outassocs=work.associations'; put ')/*/STORE SOURCE*/;'; put 'data &outassocs;'; put 'keep assoc assocuri name;'; put 'length assoc assocuri name $256;'; put 'call missing(of _all_);'; put 'rc1=1;n1=1;'; put 'do while(rc1>0);'; put '/* Walk through all possible associations of this object. */'; put 'rc1=metadata_getnasl("&uri",n1,assoc);'; put 'rc2=1;n2=1;'; put 'do while(rc2>0);'; put '/* Walk through all the associations on this machine object. */'; put 'rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);'; put 'if (rc2>0) then do;'; put 'rc3=metadata_getattr(assocuri,"Name",name);'; put 'output;'; put 'end;'; put 'call missing(name,assocuri);'; put 'n2+1;'; put 'end;'; put 'n1+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by assoc name;'; put 'run;'; put 'data &outattrs;'; put 'keep type name value;'; put 'length type $4 name $256 value $32767;'; put 'rc1=1;n1=1;type=''Prop'';name='''';value='''';'; put 'do while(rc1>0);'; put 'rc1=metadata_getnprp("&uri",n1,name,value);'; put 'if rc1>0 then output;'; put 'n1+1;'; put 'end;'; put 'rc1=1;n1=1;type=''Attr'';'; put 'do while(rc1>0);'; put 'rc1=metadata_getnatr("&uri",n1,name,value);'; put 'if rc1>0 then output;'; put 'n1+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by type name;'; put 'run;'; put '%mend mm_getdetails;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metadetails.sas'; put '@brief Retrieves metadata attributes and associations for a particular object'; put '@details'; put '

SAS Macros

'; put '@li mm_getdetails.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getobjects('; put 'type=SASLibrary'; put ',outds=work.mm_getobjects'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"$METAREPOSITORY'; put '&typeSAS'; put '0"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type/@Id";'; put 'put "characterstring200";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type/@Name";'; put 'put "characterstring200";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getobjects;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metaobjects.sas'; put '@brief Retrieves list of objects for a particular metadata type'; put '@details'; put '

SAS Macros

'; put '@li mm_getobjects.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metarepos.sas'; put '@brief Retrieves list of metadata types'; put '@details'; put '

SAS Macros

'; put '@li mm_getrepos.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_gettypes('; put 'outds=work.mm_gettypes'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put ''; put 'SAS'; put ''; put '2048'; put ''; put ''; put '$METAREPOSITORY'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put ''//GetTypes/Types/Type'';'; put 'put ''64'';'; put 'put ''//GetTypes/Types/Type/@Id'';'; put 'put ''256'';'; put 'put ''//GetTypes/Types/Type/@Desc'';'; put 'put '''';'; put 'put ''//GetTypes/Types/Type/@HasSubtypes'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.sastypes out=&outds;'; put 'by id;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_gettypes;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metatypes.sas'; put '@brief Retrieves list of metadata types'; put '@details'; put '

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getvalue.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/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 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; 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 ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; 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 '%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_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" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Retrieves column info to enable population of dropdowns'; put '@details An optional filterquery may be provided, if so then it is validated'; put 'and then used to filter the subsequent results.'; put '

Service Inputs

'; put '
IWANT
'; put '|libds:$19.|col:$9.|'; put '|---|---|'; put '|DC258467.MPE_X_TEST|SOME_TIME|'; 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.|'; put '|---|---|'; put '|COL_NAME|DOLLAR8.2|'; 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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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 '%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 '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 '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 'options obs=2000;/* restrict num of output values */'; put 'proc sql;'; put 'create table vals as select distinct'; put 'put(&col2,%mf_getVarFormat(&libds,&col2,force=1)) as formatted,'; put '&col2 as unformatted'; put 'from work.vw_vals;'; put 'options obs=max;'; 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 'data meta;'; put 'column="&col2";'; put 'sasformat="%mf_getVarFormat(&libds,&col2)";'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; 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 ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; 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 '%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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getgroups(outds=mm_getlibs);'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getgroups(outds=&outds,repo=foundation)'; put '%do x=1 %to &repocnt;'; put '%mm_getgroups(outds=&outds.a, repo=&&repo&x)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'proc sort data=&outds noduprec;'; put 'by groupname;'; put 'run;'; put '%mend dc_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getgroups.sas'; put '@brief List all SAS Groups'; put '@details Gets a list of all SAS Groups. Runs without mpeinit() so that it'; put 'can be available to the sasjs/server configurator'; put '

SAS Macros

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

Data Outputs

'; put '
groups
'; put '|NAME:$32.|DESCRIPTION:$64.|GROUPID:best.|'; put '|---|---|---|'; put '|`SomeGroup `|`A group `|`1`|'; put '|`Another Group`|`this is a different group`|`2`|'; put '|`admin`|`Administrators `|`3`|'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/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 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; 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 ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; 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 '%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" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; 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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global table type filter ds format is_fmt txfrom txto;'; put '%mpeinit()'; put '%let user=%mf_getuser();'; put '%let is_fmt=0;'; put '%mp_abort(iftrue= (%mf_verifymacvars(type table)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid inputs: type table)'; put ')'; put '%let libds=%upcase(&table); /* actual source */'; put '%let table=%upcase(&table); /* used as label for fmt catalogs */'; put '%let lib=%scan(&table,1,.);'; put '%let ds=%scan(&table,2,.);'; put '%dc_assignlib(READ,&lib)'; put 'data _null_;'; put 'set &mpelib..MPE_TABLES;'; put 'where upcase(libref)="&lib" and upcase(dsn)="&ds";'; put '/* if a TXTEMPORAL table then filter as such */'; put 'call symputx(''txfrom'',var_txfrom);'; put 'call symputx(''txto'',var_txto);'; put 'ds=symget(''ds'');'; put 'is_fmt=0;'; put 'if subpad(cats(reverse(ds)),1,3)=:''CF-'' then do;'; put 'ds=scan(ds,1,''-'');'; put 'table=cats("&lib..",ds);'; put 'putlog "Format Catalog Captured";'; put 'is_fmt=1;'; put 'call symputx(''libds'',''work.fmtextract'');'; put 'call symputx(''table'',table);'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&table'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%put preparing query;'; put '%mpe_filtermaster(DLOAD,&libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%put printing generated filterquery:;'; put 'data _null_;'; put 'infile filtref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put 'options obs=200000;/* stop limit */'; put 'data staged(drop=&txfrom &txto);'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put 'options obs=max;'; put 'options validvarname=upcase;'; put '%macro mpestp_getrawdata();'; put '%local outfile;'; put '%if &type=SAS %then %do;'; put '%let outfile=%sysfunc(pathname(work))/&table..sas;'; put '%mp_ds2cards(base_ds=staged'; put ', tgt_ds=&table'; put ', cards_file= "&outfile"'; put ', maxobs=100000)'; put '%let ext=sas;'; put '%let mimetype=text;'; put '%end;'; put '%else %if &type=CSV or (&type=EXCEL and %mf_existfeature(EXPORTXLS) ne 1)'; put '/* cannot proc export excel if PC Files is not licensed */'; put '%then %do;'; put '%let outfile=%sysfunc(pathname(work))/&table..csv;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= "&outfile"'; put 'DBMS=csv REPLACE;'; put 'RUN;'; put '%let ext=csv;'; put '%let mimetype=csv;'; put '%end;'; put '%else %if &type=EXCEL %then %do;'; put '%let ext=xlsx;'; put '%let outfile=%sysfunc(pathname(work))/&table..&ext;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= "&outfile"'; put 'DBMS=xlsx ;'; put 'RUN;'; put '%let mimetype=XLSX;'; put '%end;'; put '%else %if &type=MARKDOWN %then %do;'; put '%let ext=md;'; put '%let outfile=%sysfunc(pathname(work))/&table..&ext;'; put 'filename mdref "&outfile" lrecl=32767;'; put '%mp_ds2md(staged,outref=mdref,showlog=NO)'; put '%let mimetype=MARKDOWN;'; put '%end;'; put '%else %if &type=WEBCSV %then %do;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= _webout'; put 'DBMS=csv REPLACE;'; put 'RUN;'; put '/* don''t set headers */'; put '%return;'; put '%end;'; put '%else %if &type=WEBTAB %then %do;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= _webout'; put 'DBMS=tab REPLACE;'; put 'RUN;'; put '/* don''t set headers */'; put '%return;'; put '%end;'; put '%else %do;'; put '%mp_abort(msg=type &type not supported,mac=mpestp_getrawdata.sas);'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mp_streamfile(contenttype=&mimetype'; put ',inloc=%str(&outfile)'; put ',outname=&table..&ext'; put ')'; put '%mend mpestp_getrawdata;'; put '%mpestp_getrawdata()'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshlibinfo; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

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

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; 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_inc)) 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;'; put 'proc sql noprint;'; 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 '%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_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 ')/*/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="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"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 "%str(ERR)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 "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; 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_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%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'; 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 'data _null_;'; put 'set work.mp_storediffs;'; 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 '%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();'; 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 "%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()'; 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. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file registeruser.sas'; put '@brief Registers a new user in Data Controller'; put '@details New users are logged after accepting EULA terms.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file startupservice.sas'; put '@brief List the libraries and tables the mp-editor user can access'; put '@details If user is in a control group (&mpeadmins, configured in mpeinit.sas)'; put 'then they have access to all libraries / tables. Otherwise a join is made'; put 'to the &mpelib..mp_editor_access table.'; put 'This service is also callable from EUCs - just add EUCDLM= parameter.'; put 'EUCDLM values: TAB or CSV'; put '

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Inputs

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

Service Outputs

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

SAS Macros

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

SAS Macros

'; put '@li dc_getlibs.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewtables.sas'; put '@brief List the tables and format catalogs the user can view'; put '@details Provide a library and get list of tables and catalogs. Also return'; put 'the libinfo details.'; put '

Service Inputs

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

Service Outputs

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

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getusers('; put 'outds=work.mm_getusers,'; put 'user=0'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put '%if %superq(user)=0 %then %do;'; put 'proc metadata in= '''; put '$METAREPOSITORY'; put 'Person'; put 'SAS'; put '0'; put ''; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename inref temp;'; put 'data _null_;'; put 'file inref;'; put 'put "";'; put 'put "$METAREPOSITORY";'; put 'put "Person";'; put 'put "SAS";'; put 'put "";'; put 'put "128";'; put 'put "";'; put 'put "";'; put 'put '''';'; put 'put "";'; put 'length string $10000;'; put 'string=cats('''');'; put 'put string;'; put 'put "";'; put 'put "";'; put 'run;'; put 'proc metadata in=inref out=response;'; put 'run;'; put '%end;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Id";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Name";'; put 'put "characterstring256";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getusers;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usergroupsbymember.sas'; put '@brief List the groups a member is in'; put '@details Runs without \%mpeinit() - this enables the dropdown to be populated'; put 'during configuration, when the settings service does not yet exist.'; put '

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

SAS Macros

'; put '@li dc_getusers.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembersbygroup.sas'; put '@brief List the members of a group'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembersbyrole.sas'; put '@brief List the members of a role'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getroles('; put 'outds=work.mm_getroles'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put 'options noquotelenmax;'; put 'proc metadata in= ''$METAREPOSITORY'; put 'IdentityGroupSAS388'; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Id";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Name";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Desc";'; put 'put "";'; put 'put "characterstring500";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.roles out=&outds;'; put 'by rolename;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getroles;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getroles(outds=mm_getroles);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getroles(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getroles(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getroles;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file userroles.sas'; put '@brief List all SAS Roles'; put '@details Gets a list of all SAS Roles'; put '

SAS Macros

'; put '@li dc_getroles.sas'; put '@li mpeinit.sas'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; 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,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for table columns'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Inputs

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for editable libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

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

Service Outputs

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

SAS Macros

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

Related Files

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

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; 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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''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(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for editable libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Inputs

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

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5|` `|'; put '|1|DISCOUNT_RT|"40%"|N|0.4|` `|'; put '|1|DISCOUNT_RT|"30%"|N|0.3|` `|'; put '|1|CURRENCY_SYMBOL|"GBP"|C|` `|"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C|` `|"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5|` `|'; put '|2|DISCOUNT_RT|"40%"|N|0.4|` `|'; put '|2|CURRENCY_SYMBOL|"EUR"|C|` `|"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C|` `|"HKD"|'; put '**/'; put '/* send back the raw and formatted values */'; put 'data _null_;'; put 'var=symget(''variable_nm'');'; put 'libds=symget(''libds'');'; put 'if libds="&mpelib..MPE_EXCEL_CONFIG" and var=''XL_TABLE'' then do;'; put 'call symputx(''srccol'',''XL_LIBREF'');'; put 'end;'; put 'else call symputx(''srccol'',''libref'');'; put 'run;'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct dsn as display_value,'; put 'upcase(dsn) as raw_value'; put 'from &mpelib..mpe_tables'; put '(where=(&dc_dttmtfmt. < tx_to))'; put 'where libref in (select &srccol from work.source_row)'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/web9; %let service=index-html; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5EYXRhIENvbnRyb2xsZXIgZm9yIFNBU8KuPC90aXRsZT4KICAgIDwhLS0gPGJhc2UgaHJlZj0iLyI+IC0tPgoKICAgIDwhLS0gbWV0YSB0YWdzIC0tPgogICAgPG1l''@;'; put 'put ''dGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIGl0ZW1wcm9wPSJuYW1lIiBjb250ZW50PSJEYXRhIENvbnRyb2xsZXIgZm9yIFNBU8KuIi8+CiAgICA8bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRl''@;'; put 'put ''bnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIGl0ZW1wcm9wPSJpbWFnZSIgY29udGVudD0iaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvL2ltZy9kY19iZ19Bc3NldC01QDJ4LnBuZyIvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVu''@;'; put 'put ''dD0iaHR0cDovL2RlbW8uZGF0YWNvbnRyb2xsZXIuaW8iLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIi8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iLz4KICAgIDxtZXRhIHBy''@;'; put 'put ''b3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iQ2FwdHVyZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSIvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8vaW1nL2RjX2JnX0Fzc2V0LTVAMngucG5nIi8+CiAg''@;'; put 'put ''ICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24i''@;'; put 'put ''IGNvbnRlbnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pby9pbWcvZGNfYmdfQXNzZXQtNUAyeC5wbmciLz4KCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y''@;'; put 'put ''dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIvPgogICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImltYWdlcy9m''@;'; put 'put ''YXZpY29uLmljbyIvPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzLjJjYzIyZjc2YWJkNThmZjUuY3NzIj48L2hlYWQ+CgogIDwhLS0KICAgICMjIFNBU0pTIEFkYXB0ZXIgY29uZmlnIGRldGFpbHMgIyMKCiAgICAqIGFwcExvYzogVGhlIGxvY2F0aW9uIGluIG1ldGFk''@;'; put 'put ''YXRhIG9yIFNBUyBkcml2ZSB3aGVyZSBEQyB3aWxsIGJlIGRlcGxveWVkCiAgICAqIHNlcnZlclR5cGU6IGVpdGhlciBTQVM5LCBTQVNWSVlBIG9yIFNBU0pTCiAgICAqIGxvZ2luTWVjaGFuaXNtOiBVc2UgJ0RlZmF1bHQnIGZvciByZWd1bGFyICh1c2VyL3Bhc3MpIGxvZ2lucywgb3IgJ1Jl''@;'; put 'put ''ZGlyZWN0ZWQnIGZvciAyRkEvU1NPCiAgICAqIGRlYnVnOiBXaGV0aGVyIHRvIGVuYWJsZSBkZWJ1ZyBvbiBzdGFydHVwCgogICAgIyMgVml5YSBvbmx5IHNldHRpbmdzICMjCiAgICAqIGFkbWluR3JvdXA6IFRoaXMgZ3JvdXAgd2lsbCBoYXZlIHVucmVzdHJpY3RlZCBhY2Nlc3MgKFZpeWEg''@;'; put 'put ''T25seSkKICAgICogZGNQYXRoOiBUaGUgcGh5c2ljYWwgbG9jYXRpb24gaW4gd2hpY2ggdG8gZGVwbG95IHRoZSBzdGFnaW5nIGFyZWEgKFZpeWEgb25seSkKICAgICogdXNlQ29tcHV0ZUFwaTogQ29ubmVjdGlvbiBtZXRob2QgKFZpeWEgb25seSkKICAgICogY29udGV4dE5hbWU6IENvbXB1''@;'; put 'put ''dGUgQ29udGV4dCAoVml5YSBvbmx5KQoKICAtLT4KCiAgPGJvZHkgY2xhc3M9Im0tMCI+CiAgICA8bXktYXBwIHNlcnZlcnVybD0iaHR0cHM6Ly9zYXMuNGdsLmlvOjUwMDIiIGFwcGxvYz0iLzMwLlNBU0FwcHMvYXBwL2RjIiBzZXJ2ZXJ0eXBlPSJTQVNKUyIgbG9naW5tZWNoYW5pc209IkRl''@;'; put 'put ''ZmF1bHQiIGRlYnVnPSJmYWxzZSIgdXNlY29tcHV0ZWFwaT0idHJ1ZSIgY29udGV4dG5hbWU9IlNBUyBKb2IgRXhlY3V0aW9uIGNvbXB1dGUgY29udGV4dCIgYWRtaW5ncm91cD0ic2VjLXNhczktcHJkLWludC1zYXNwbGF0Zm9ybS0zMDAxMTRzYXNqcyIgZGNwYXRoPSIvdG1wL2RjIiBob3Rs''@;'; put 'put ''aWNlbmNla2V5PSJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbiI+PC9teS1hcHA+CiAgPHNjcmlwdCBzcmM9InJ1bnRpbWUuNjFlNzcxYjQ3MmVjYjU4OC5qcyIgdHlwZT0ibW9kdWxlIj48L3NjcmlwdD48c2NyaXB0IHNyYz0ic2NyaXB0cy5iODEzODdkMWEyNTlkNjI2LmpzIiBkZWZl''@;'; put 'put ''cj48L3NjcmlwdD48c2NyaXB0IHNyYz0ibWFpbi4zMDY3YzM2NzBjMzQ0NTgwLmpzIiB0eXBlPSJtb2R1bGUiPjwvc2NyaXB0PjwvYm9keT4KPC9odG1sPgo='';'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=main.3067c3670c344580-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 ''dmFyIHp5dD1PYmplY3QuZGVmaW5lUHJvcGVydHksR3l0PU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLFd5dD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyx2T2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxZeXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxV''@;'; put 'put ''eXQ9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxITT1NYXRoLnBvdyxBT2U9KFhlLEplLEwpPT5KZSBpbiBYZT96eXQoWGUsSmUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkx9KTpYZVtKZV09TCxwcz0oWGUsSmUpPT57Zm9y''@;'; put 'put ''KHZhciBMIGluIEplfHwoSmU9e30pKVl5dC5jYWxsKEplLEwpJiZBT2UoWGUsTCxKZVtMXSk7aWYodk9lKWZvcih2YXIgTCBvZiB2T2UoSmUpKVV5dC5jYWxsKEplLEwpJiZBT2UoWGUsTCxKZVtMXSk7cmV0dXJuIFhlfSxnRz0oWGUsSmUpPT5HeXQoWGUsV3l0KEplKSk7KHNlbGYud2VicGFj''@;'; put 'put ''a0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1sxNzldLHs1Njc3MTpmdW5jdGlvbihYZSl7WGUuZXhwb3J0cz1mdW5jdGlvbihKZSl7dmFyIEw9e307ZnVuY3Rpb24gZ2UoQil7aWYoTFtCXSlyZXR1cm4gTFtCXS5leHBvcnRz''@;'; put 'put ''O3ZhciBFPUxbQl09e2k6QixsOiExLGV4cG9ydHM6e319O3JldHVybiBKZVtCXS5jYWxsKEUuZXhwb3J0cyxFLEUuZXhwb3J0cyxnZSksRS5sPSEwLEUuZXhwb3J0c31yZXR1cm4gZ2UubT1KZSxnZS5jPUwsZ2UuZD1mdW5jdGlvbihCLEUsTWUpe2dlLm8oQixFKXx8T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KEIsRSx7ZW51bWVyYWJsZTohMCxnZXQ6TWV9KX0sZ2Uucj1mdW5jdGlvbihCKXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoQixTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxnZS50PWZ1bmN0aW9uKEIsRSl7aWYoMSZFJiYoQj1nZShCKSksOCZFfHw0JkUmJiJvYmplY3QiPT10eXBlb2YgQiYmQiYmQi5fX2VzTW9kdWxlKXJldHVybiBCO3ZhciBNZT1PYmplY3QuY3JlYXRlKG51bGwp''@;'; put 'put ''O2lmKGdlLnIoTWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNZSwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6Qn0pLDImRSYmInN0cmluZyIhPXR5cGVvZiBCKWZvcih2YXIgVSBpbiBCKWdlLmQoTWUsVSxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0uYmluZChudWxsLFUpKTtyZXR1''@;'; put 'put ''cm4gTWV9LGdlLm49ZnVuY3Rpb24oQil7dmFyIEU9QiYmQi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIEIuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gQn07cmV0dXJuIGdlLmQoRSwiYSIsRSksRX0sZ2Uubz1mdW5jdGlvbihCLEUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhh''@;'; put 'put ''c093blByb3BlcnR5LmNhbGwoQixFKX0sZ2UucD0iIixnZShnZS5zPSIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyIpfSh7Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiOmZ1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTC5DbGFyaXR5SWNvbnNBcGk9dm9pZCAwO3ZhciBCPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLEU9e30sTWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBVKCl7fXJldHVybiBPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoVSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVS5zaW5nbGVJbnN0YW5jZXx8KFUuc2luZ2xlSW5zdGFuY2U9bmV3IFUpLFUuc2luZ2xlSW5zdGFuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksVS5wcm90b3R5cGUudmFsaWRh''@;'; put 'put ''dGVOYW1lPWZ1bmN0aW9uKFEpe2lmKDA9PT1RLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNoYXBlIG5hbWUgb3IgYWxpYXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmchIik7aWYoL1xzLy50ZXN0KFEpKXRocm93IG5ldyBFcnJvcigiU2hhcGUgbmFtZSBvciBhbGlhcyBtdXN0IG5vdCBj''@;'; put 'put ''b250YWluIGFueSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMhIik7cmV0dXJuITB9LFUucHJvdG90eXBlLm5vcm1hbGl6ZVNoYXBlTmFtZT1mdW5jdGlvbihRKXtyZXR1cm4gUS50b0xvd2VyQ2FzZSgpfSxVLnByb3RvdHlwZS5zZXRJY29uVGVtcGxhdGU9ZnVuY3Rpb24oUSxaKXt2YXIgaWU9Wi50''@;'; put 'put ''cmltKCk7dGhpcy52YWxpZGF0ZU5hbWUoUSkmJihRPXRoaXMubm9ybWFsaXplU2hhcGVOYW1lKFEpLEVbUV0mJmRlbGV0ZSBFW1FdLEVbUV09aWUsQi5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2UuZW1pdENoYW5nZXMoUSxpZSkpfSxVLnByb3RvdHlwZS5zZXRJY29uQWxpYXNlcz1m''@;'; put 'put ''dW5jdGlvbihRLFosaWUpe2Zvcih2YXIgbGU9MCxZPWllO2xlPFkubGVuZ3RoO2xlKyspe3ZhciBXPVlbbGVdO3RoaXMudmFsaWRhdGVOYW1lKFcpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoUSxXLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUVtaXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi''@;'; put 'put ''bGU6ITB9KX19LFUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihRKXtpZigib2JqZWN0IiE9dHlwZW9mIFEpdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgbGl0ZXJhbCBwYXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IHsgInNoYXBlLW5hbWUiOiAic2hhcGUtdGVtcGxhdGUiIH0nKTtmb3IodmFyIFogaW4gUSlRLmhhc093blByb3BlcnR5KFopJiZ0aGlzLnNldEljb25UZW1wbGF0ZShaLFFbWl0pfSxVLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oUSl7cmV0dXJuISFFW3RoaXMubm9ybWFsaXplU2hhcGVOYW1l''@;'; put 'put ''KFEpXX0sVS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKFEpe2lmKCFRKXJldHVybiBFO2lmKCJzdHJpbmciIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPbmx5IHN0cmluZyBhcmd1bWVudCBpcyBhbGxvd2VkIGluIHRoaXMgbWV0aG9kLiIpO3JldHVybiBFW3RoaXMubm9ybWFsaXpl''@;'; put 'put ''U2hhcGVOYW1lKFEpXX0sVS5wcm90b3R5cGUuYWxpYXM9ZnVuY3Rpb24oUSl7aWYoIm9iamVjdCIhPXR5cGVvZiBRKXRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGluIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgICAgICAg''@;'; put 'put ''ICAgICAgICB7ICJzaGFwZS1uYW1lIjogWyJhbGlhcy1uYW1lIiwgLi4uXSB9Jyk7Zm9yKHZhciBaIGluIFEpaWYoUS5oYXNPd25Qcm9wZXJ0eShaKSl7aWYoIUUuaGFzT3duUHJvcGVydHkoWikpdGhyb3cgbmV3IEVycm9yKCdBbiBpY29uICInK1orIlwiIHlvdSBhcmUgdHJ5aW5nIHRvIHNl''@;'; put 'put ''dCBhbGlhc2VzIHRvIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIENsYXJpdHkgSWNvbnMgc2V0cyEiKTt0aGlzLnNldEljb25BbGlhc2VzKEUsWixRW1pdKX19LFV9KCk7TC5DbGFyaXR5SWNvbnNBcGk9TWV9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyI6ZnVuY3Rp''@;'; put 'put ''b24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLkNsYXJpdHlJY29uRWxlbWVudD12b2lkIDA7dmFyIEI9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiKSxFPWdlKCIuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLE1lPTAsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7VS5jbGFzc05hbWU9ImlzLW9mZi1zY3JlZW4iO3ZhciBRPWZ1bmN0aW9uKCl7cmV0dXJuIEhUTUxFbGVtZW50LmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKX07ZnVuY3Rpb24gWigpe3ZhciBpZT1RLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaWUuY2xySWNvblVuaXFJZD0iX2Nscl9pY29uXyIrTWUsTWUrKyxpZX0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJihRPWZ1bmN0aW9uKCl7cmV0dXJuIFJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''KEhUTUxFbGVtZW50LGFyZ3VtZW50cyx0aGlzLmNvbnN0cnVjdG9yKX0pLEwuQ2xhcml0eUljb25FbGVtZW50PVosWi5vYnNlcnZlZEF0dHJpYnV0ZXM9WyJzaGFwZSIsInNpemUiLCJ0aXRsZSJdLChaLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSx7Y29u''@;'; put 'put ''c3RydWN0b3I6e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpafX0pKS5jb25zdHJ1Y3Rvcj1aLFoucHJvdG90eXBlLl9hcHBlbmRDdXN0b21UaXRsZT1mdW5jdGlvbigpe3ZhciBpZT1VLmNsb25lTm9kZSghMSk7aWUuaWQ9dGhpcy5jbHJJY29uVW5pcUlkLGllLnRleHRDb250''@;'; put 'put ''ZW50PXRoaXMuY3VycmVudFRpdGxlQXR0clZhbCx0aGlzLmFwcGVuZENoaWxkKGllKX0sWi5wcm90b3R5cGUuX3NldEljb25TaXplPWZ1bmN0aW9uKGllKXshTnVtYmVyKGllKXx8TnVtYmVyKGllKTwwPyh0aGlzLnN0eWxlLndpZHRoPW51bGwsdGhpcy5zdHlsZS5oZWlnaHQ9bnVsbCk6KHRo''@;'; put 'put ''aXMuc3R5bGUud2lkdGg9aWUrInB4Iix0aGlzLnN0eWxlLmhlaWdodD1pZSsicHgiKX0sWi5wcm90b3R5cGUuX25vcm1hbGl6ZVNoYXBlPWZ1bmN0aW9uKGllKXtyZXR1cm4gaWUuc3BsaXQoL1xzLylbMF0udG9Mb3dlckNhc2UoKX0sWi5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2s9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgaWU9dGhpcztpZih0aGlzLmdldEF0dHJpYnV0ZSgicm9sZSIpfHx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsIm5vbmUiKSx0aGlzLmhhc0F0dHJpYnV0ZSgic2l6ZSIpKXt2YXIgbGU9dGhpcy5nZXRBdHRyaWJ1dGUoInNpemUiKTt0aGlzLmN1cnJlbnRTaXplQXR0clZh''@;'; put 'put ''bCE9PWxlJiYodGhpcy5jdXJyZW50U2l6ZUF0dHJWYWw9bGUsdGhpcy5fc2V0SWNvblNpemUobGUpKX1pZih0aGlzLmhhc0F0dHJpYnV0ZSgic2hhcGUiKSl7dmFyIFk9dGhpcy5fbm9ybWFsaXplU2hhcGUodGhpcy5nZXRBdHRyaWJ1dGUoInNoYXBlIikpO2lmKHRoaXMuX3NoYXBlVGVtcGxh''@;'; put 'put ''dGVTdWJzY3JpcHRpb249RS5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2Uuc3Vic2NyaWJlVG8oWSxmdW5jdGlvbihlZSl7aWUuX2luamVjdFRlbXBsYXRlKGVlKX0pLHRoaXMuY3VycmVudFNoYXBlQXR0clZhbD1ZLCFCLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5oYXModGhpcy5j''@;'; put 'put ''dXJyZW50U2hhcGVBdHRyVmFsKSlyZXR1cm4gdm9pZCB0aGlzLl9pbmplY3RFcnJvclRlbXBsYXRlKCk7dmFyIFc9Qi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCk7aWYoVz09PXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUpcmV0dXJuO3Ro''@;'; put 'put ''aXMuY3VycmVudFNoYXBlVGVtcGxhdGU9V31pZih0aGlzLmhhc0F0dHJpYnV0ZSgidGl0bGUiKSl7dmFyIE49dGhpcy5nZXRBdHRyaWJ1dGUoInRpdGxlIik7aWYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsIT09TiYmKHRoaXMuY3VycmVudFRpdGxlQXR0clZhbD1OKSwhdGhpcy5jdXJyZW50''@;'; put 'put ''U2hhcGVBdHRyVmFsKXJldHVybn10aGlzLl9pbmplY3RUZW1wbGF0ZSgpfSxaLnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s9ZnVuY3Rpb24oaWUsbGUsWSl7dmFyIFc9dGhpcztpZigic2l6ZSI9PT1pZSYmdGhpcy5fc2V0SWNvblNpemUoWSksInNoYXBlIj09PWllKXtpZih0''@;'; put 'put ''aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWw9dGhpcy5fbm9ybWFsaXplU2hhcGUoWSksdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmKHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24oKSx0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uPUUuU2hhcGVUZW1wbGF0ZU9i''@;'; put 'put ''c2VydmVyLmluc3RhbmNlLnN1YnNjcmliZVRvKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCxmdW5jdGlvbihOKXtXLl9pbmplY3RUZW1wbGF0ZShOKX0pKSwhQi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuaGFzKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCkpcmV0dXJuIHZvaWQgdGhpcy5f''@;'; put 'put ''aW5qZWN0RXJyb3JUZW1wbGF0ZSgpO3RoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9Qi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCl9InRpdGxlIj09PWllJiYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsPVksIXRoaXMuY3VycmVudFNoYXBl''@;'; put 'put ''QXR0clZhbCl8fHRoaXMuX2luamVjdFRlbXBsYXRlKCl9LFoucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpfSxaLnByb3RvdHlwZS5fc2V0QXJp''@;'; put 'put ''YUxhYmVsbGVkQnk9ZnVuY3Rpb24oKXt2YXIgaWU9dGhpcy5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpLFk9dGhpcy5xdWVyeVNlbGVjdG9yKCJzdmciKXx8dGhpcztpZT9pZSYmaWUuaW5kZXhPZih0aGlzLmNsckljb25VbmlxSWQpPDAmJlkuc2V0QXR0cmlidXRlKCJhcmlhLWxh''@;'; put 'put ''YmVsbGVkYnkiLGllKyIgIit0aGlzLmNsckljb25VbmlxSWQpOlkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHRoaXMuY2xySWNvblVuaXFJZCl9LFoucHJvdG90eXBlLl9pbmplY3RUZW1wbGF0ZT1mdW5jdGlvbihpZSl7aWUmJmllIT09dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0''@;'; put 'put ''ZSYmKHRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9aWUpLHRoaXMuaW5uZXJIVE1MPXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUsdGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsJiYodGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKSx0aGlzLl9hcHBlbmRDdXN0b21UaXRsZSgpKX0sWi5wcm90b3R5''@;'; put 'put ''cGUuX2luamVjdEVycm9yVGVtcGxhdGU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPUIuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCgiZXJyb3IiKSx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRzIjpmdW5jdGlv''@;'; put 'put ''bihKZSxMLGdlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuQ2xhcml0eUljb25zPXZvaWQgMDt2YXIgQj1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyIpLEU9Z2UoIi4vcHJvamVjdHMvaWNv''@;'; put 'put ''bnMvc3JjL2Nsci1pY29ucy1lbGVtZW50LnRzIiksTWU9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpLFU9Qi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2U7TC5DbGFyaXR5SWNvbnM9VSxVLmFkZChNZS5Db3JlU2hhcGVzKSwidW5kZWZpbmVkIiE9dHlw''@;'; put 'put ''ZW9mIHdpbmRvdyYmKHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIil8fCh3aW5kb3cuQ2xhcml0eUljb25zPVUpLGN1c3RvbUVsZW1lbnRzLmdldCgiY2xyLWljb24iKXx8Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJjbHItaWNvbiIsRS5DbGFyaXR5SWNvbkVsZW1lbnQpKX0s''@;'; put 'put ''Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLkNvcmVTaGFwZXM9TC5DbHJTaGFwZUFycm93PUwuQ2xyU2hhcGVT''@;'; put 'put ''dGVwRm9yd2FyZDI9TC5DbHJTaGFwZUV5ZUhpZGU9TC5DbHJTaGFwZUV5ZT1MLkNsclNoYXBlRXZlbnQ9TC5DbHJTaGFwZUNhbGVuZGFyPUwuQ2xyU2hhcGVBbmdsZURvdWJsZT1MLkNsclNoYXBlVmlld0NvbHVtbnM9TC5DbHJTaGFwZVNlYXJjaD1MLkNsclNoYXBlVm1CdWc9TC5DbHJTaGFw''@;'; put 'put ''ZUZpbHRlckdyaWRDaXJjbGU9TC5DbHJTaGFwZUZpbHRlckdyaWQ9TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9TC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD1MLkNsclNoYXBlQ2xvdWQ9TC5DbHJTaGFwZUltYWdlPUwuQ2xyU2hhcGVCZWxsPUwuQ2xyU2hhcGVGb2xkZXJPcGVuPUwu''@;'; put 'put ''Q2xyU2hhcGVGb2xkZXI9TC5DbHJTaGFwZUFuZ2xlPUwuQ2xyU2hhcGVVc2VyPUwuQ2xyU2hhcGVCYXJzPUwuQ2xyU2hhcGVIZWxwSW5mbz1MLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPUwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPUwuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9TC5DbHJTaGFw''@;'; put 'put ''ZUluZm9TdGFuZGFyZD1MLkNsclNoYXBlSW5mb0NpcmNsZT1MLkNsclNoYXBlQ2hlY2tDaXJjbGU9TC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPUwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPUwuQ2xyU2hhcGVUaW1lcz1MLkNsclNoYXBlQ2hlY2s9TC5DbHJTaGFwZUNvZz1MLkNs''@;'; put 'put ''clNoYXBlSG9tZT1MLkNsclNoYXBlVW5rbm93blN0YXR1cz12b2lkIDA7dmFyIEI9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtMLkNsclNo''@;'; put 'put ''YXBlVW5rbm93blN0YXR1cz0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuNTgiIGN5PSIyNi4yMyIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC43LDEzYTUuMTgsNS4xOCwwLDAsMC0yLjE2LTMuNTYsNy4yNiw3LjI2LDAsMCwwLTUuNzEtMS4wOUExMS4zNCwxMS4zNCwwLDAsMCwxMiwxMC40NCwxLDEsMCwxLDAsMTMuMjYsMTJhOS4zMiw5LjMyLDAsMCwxLDMuOTQtMS43Miw1LjI5LDUuMjks''@;'; put 'put ''MCwwLDEsNC4xNi43NCwzLjIxLDMuMjEsMCwwLDEsMS4zNSwyLjE5Yy4zMywyLjY5LTMuMTksMy43NS01LjMyLDQuMTRsLS44Mi4xNXY0LjM2YTEsMSwwLDAsMCwyLDBWMTkuMTdDMjQuNjEsMTcuNzksMjQuODgsMTQuNDEsMjQuNywxM1oiLz4nKSxMLkNsclNoYXBlSG9tZT0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjcxLDE3LjI5bC0xNS0xNWExLDEsMCwwLDAtMS40MSwwbC0xNSwxNWExLDEsMCwwLDAsMS40MSwxLjQxTDE4LDQuNDEsMzIuMjksMTguNzFhMSwxLDAsMCwwLDEuNDEtMS40MVoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDMyaC01VjIySDEzVjMySDhWMThMNiwyMFYzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJWMTkuNzZsLTItMloiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTlhMSwxLDAsMCwxLS43MS0uMjlMMTgsNC40MSwzLjcxLDE4LjcxYTEsMSwwLDAsMS0xLjQxLTEuNDFsMTUtMTVhMSwxLDAsMCwxLDEuNDEsMGwxNSwxNUExLDEsMCwwLDEsMzMs''@;'; put 'put ''MTlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDcuNzksNiwxOS44M1YzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJWMTkuNzZaIi8+JyksTC5DbHJTaGFwZUNvZz0oMCxFLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjEsMTFjLTMuOSwwLTcsMy4xLTcsN3MzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03UzIyLDExLDE4LjEsMTF6IE0xOC4xLDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01''@;'; put 'put ''YzIuOCwwLDUsMi4yLDUsNVMyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC42LTEuNWwxLjQtMi42YzAuMy0wLjYsMC4yLTEuNC0wLjMtMS45''@;'; put 'put ''bC0yLjQtMi40Yy0wLjUtMC41LTEuMy0wLjYtMS45LTAuM2wtMi42LDEuNGwtMS41LTAuNmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcu''@;'; put 'put ''OSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40''@;'; put 'put ''LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIu''@;'; put 'put ''NC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiBNMzIsMTkuNGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwt''@;'; put 'put ''MC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0w''@;'; put 'put ''LjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44''@;'; put 'put ''bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS40LDAuNSwyLjEsMC45bDAuNSwwLjNsMy4zLTEuOGwyLDJsLTEuOCwzLjNsMC4zLDAuNWMwLjQsMC43LDAuNywxLjQsMC45LDIuMWwwLjEsMC41bDMuNiwxLjFWMTkuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4xLDE4YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdzLTMuMS03LTctN0MxNC4yLDExLDExLjEsMTQuMSwxMS4xLDE4eiBNMjMuMSwxOGMwLDIuOC0yLjIsNS01LDVjLTIuOCwwLTUtMi4yLTUt''@;'; put 'put ''NXMyLjItNSw1LTVDMjAuOSwxMywyMy4xLDE1LjIsMjMuMSwxOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC4xLTAuM2MtMC44LDAtMS42''@;'; put 'put ''LTAuMi0yLjQtMC40YzAuMywwLjYsMC42LDEuMywwLjgsMS45bDAuMSwwLjVsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwt''@;'; put 'put ''MC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAu''@;'; put 'put ''Mi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuMywwLjUsMS45LDAuOGMtMC4zLTAuOC0wLjQtMS42LTAuNC0yLjVs''@;'; put 'put ''LTAuNC0wLjJsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVj''@;'; put 'put ''LTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42''@;'; put 'put ''LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0x''@;'; put 'put ''LjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNywxNS40aC01LjN2MC4xbDMuNiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAu''@;'; put 'put ''MywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMs''@;'; put 'put ''MS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4y''@;'; put 'put ''LTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNGwxLjQtMi4zbC0wLjYtMkMyMSwyLjQsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1''@;'; put 'put ''LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIu''@;'; put 'put ''NGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSww''@;'; put 'put ''LjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTYsMzMuOSwxNS43LDMzLjcsMTUuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMC4yLDAsMC41LDAsMC43LDAuMWMtMC4yLTAuNi0wLjMtMS4zLTAuMi0yaC0wLjVjLTMuOSwwLTcsMy4xLTcsN2MwLDMuOSwzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03YzAtMC45LTAuMi0x''@;'; put 'put ''LjgtMC41LTIuNmgtMi4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi41QzIzLjEsMjAuOCwyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3''@;'; put 'put ''LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTEuNjUsMTEuNjUsMCwwLDAtLjk1LTIuMzNsMS42NC0zLjA3YS42MS42MSwwLDAsMC0uMTEtLjcyTDI3LjQx''@;'; put 'put ''LDYuMmEuNjEuNjEsMCwwLDAtLjcyLS4xMUwyMy42NCw3LjcyYTExLjYyLDExLjYyLDAsMCwwLTIuMzYtMWwtMS0zLjMxQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSww''@;'; put 'put ''LDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2''@;'; put 'put ''LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAs''@;'; put 'put ''MCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1''@;'; put 'put ''LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTEy''@;'; put 'put ''LjEyLDEyLjEyLDAsMCwwLS40Ny0xLjMyLDcuNDksNy40OSwwLDAsMS02LjE0LTYuMTYsMTEuODIsMTEuODIsMCwwLDAtMS4zMy0uNDhsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFs''@;'; put 'put ''LTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAs''@;'; put 'put ''MCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhh''@;'; put 'put ''MTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42''@;'; put 'put ''MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzIuNTcsMTUuNzIsMzEuNSwxNS40SDIyLjg1QTUuNSw1LjUsMCwxLDEsMTgsMTIuNWE1LjUz''@;'; put 'put ''LDUuNTMsMCwwLDEsLjY1LDBBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyLS44Ni0yLjgzQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIu''@;'; put 'put ''MTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42''@;'; put 'put ''MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45''@;'; put 'put ''NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlQ2hlY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMy43MiwyNy42OSwzLjI5LDE3LjI3YTEsMSww''@;'; put 'put ''LDAsMSwxLjQxLTEuNDFsOSw5TDMxLjI5LDcuMjlhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nKSxMLkNsclNoYXBlVGltZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOS40MSwxOGw4LjI5LTguMjlhMSwx''@;'; put 'put ''LDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSw5LjcxLDguMjlBMSwxLDAsMCwwLDguMjksOS43MUwxNi41OSwxOCw4LjI5LDI2LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsOC4yOSw4LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+JyksTC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJp''@;'; put 'put ''YW5nbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2QTEuMywxLjMsMCwwLDAsMTgsMjEuMzJaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjE3Ljk1IiBjeT0iMjQuMjciIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJN''@;'; put 'put ''MzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEsMCwwLDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCww''@;'; put 'put ''LDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMs''@;'; put 'put ''MywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNi4yNVoiLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgs''@;'; put 'put ''MTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEuMywwLDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgs''@;'; put 'put ''MjAuMDdaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE3Ljk1IiBjeT0iMjMuMDIiIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0xLjQ5LDZhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI1LjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjUuNVoi''@;'; put 'put ''Lz4nKSxMLkNsclNoYXBlQ2hlY2tDaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAs''@;'; put 'put ''MTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi4zNCwyMy43NGwtNS01YTEsMSwwLDAsMSwxLjQxLTEuNDFsMy41OSwzLjU5LDYuNzgtNi43OGExLDEsMCwwLDEsMS40MSwxLjQx''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwxOEExMiwxMiwwLDEsMSwxOCw2LDEyLDEyLDAsMCwxLDMwLDE4Wm0tNC43Ny0yLjE2YTEuNCwxLjQsMCwwLDAtMi0ybC02Ljc3LDYuNzdMMTMsMTcuMTZhMS40''@;'; put 'put ''LDEuNCwwLDAsMC0yLDJsNS40NSw1LjQ1WiIvPicpLEwuQ2xyU2hhcGVJbmZvQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiICBjeD0iMTcuOTMiIGN5PSIxMS45IiByPSIxLjQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0y''@;'; put 'put ''aDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nKSxMLkNsclNoYXBlSW5mb1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy45NyIgY3k9IjEwLjQ1IiByPSIxLjQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIxLDI1SDE5VjE0LjFIMTZhMSwxLDAsMCwwLDAsMmgxVjI1SDE1YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEuNCwwLDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40''@;'; put 'put ''LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nKSxMLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1''@;'; put 'put ''LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYs''@;'; put 'put ''MTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+JyksTC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEy''@;'; put 'put ''YTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQs''@;'; put 'put ''MCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVpNMTYuNiw4LjhhMS40LDEuNCwwLDAs''@;'; put 'put ''MSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOC42YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI4LjZaIi8+JyksTC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkEx''@;'; put 'put ''LDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNS4wNjIwNzgyLDEuNjgxMTk2IEMxNS42Mjk4ODE5LDAuNjQ5MjY2MzU1IDE2LjcxMDkwOTEsMC4wMTAyMjE5Mzk2IDE3Ljg4''@;'; put 'put ''NSwwLjAxMDIyMTkzOTYgQzE5LjA1OTA5MDksMC4wMTAyMjE5Mzk2IDIwLjE0MDExODEsMC42NDkyNjYzNTUgMjAuNzA4NjQzMywxLjY4MjUyMTI5IEwzNC41OTg2NDQsMjcuMjQyNTIyNSBDMzUuMTQwNzc0NiwyOC4yNDAxMzk3IDM1LjExNzQzNDUsMjkuNDQ5NTM3MyAzNC41MzcyMTYxLDMw''@;'; put 'put ''LjQyNTQ5NDMgQzMzLjk1Njk5NzcsMzEuNDAxNDUxNCAzMi45MDU2NzEsMzEuOTk5Njk4NCAzMS43NywzMiBMNC4wMjIzOTMyMywzMS45OTk3NDkyIEMyLjg3NDA5MDA5LDMyLjAyNTQ2OTkgMS43OTkwMjg0MywzMS40Mzc1NzUzIDEuMjAxMDYzMzUsMzAuNDU2OTEyNiBDMC42MDMwOTgyNjUs''@;'; put 'put ''MjkuNDc2MjQ5OSAwLjU3Mjc3Nzg5OSwyOC4yNTEzMTc5IDEuMTIyMDc4MTgsMjcuMjQxMTk2IEwxNS4wNjIwNzgyLDEuNjgxMTk2IFogTTIuODc4NTA3NjcsMjguMTk3NzI4MiBDMi42NzA2MDk2NiwyOC41ODAwMzc2IDIuNjgyMDk3NSwyOS4wNDQxNDIzIDIuOTA4NjU1NywyOS40MTU2OTc3''@;'; put 'put ''IEMzLjEzNTIxMzksMjkuNzg3MjUzMiAzLjU0MjUzNTQsMzAuMDA5OTk1OSA0LDMwIEwzMS43Njk3MzQ0LDMwIEMzMi4xOTk5MTkxLDI5Ljk5OTg4NTggMzIuNTk4MjQ3OCwyOS43NzMyMjA4IDMyLjgxODA4MjEsMjkuNDAzNDQ4MiBDMzMuMDM3OTE2NCwyOS4wMzM2NzU3IDMzLjA0Njc1OTUs''@;'; put 'put ''MjguNTc1NDU2NyAzMi44NDEzNTY3LDI4LjE5NzQ3ODcgTDE4Ljk1Mzg3MzksMi42NDIwODE5NSBDMTguNzM5NDIzNiwyLjI1MjM0NDM2IDE4LjMyOTg0MTksMi4wMTAyMjE5NCAxNy44ODUsMi4wMTAyMjE5NCBDMTcuNDQwNjg4OSwyLjAxMDIyMTk0IDE3LjAzMTU1MzgsMi4yNTE3NjY5MiAx''@;'; put 'put ''Ni44MTY4OTQ2LDIuNjQwNjg3NTMgTDIuODc4NTA3NjcsMjguMTk3NzI4MiBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjYsMjkuMjEsMjAuNzEsMy42NWEzLjIyLDMuMjIsMCwwLDAtNS42NiwwTDEuMTcs''@;'; put 'put ''MjkuMjFBMy4yMiwzLjIyLDAsMCwwLDQsMzRIMzEuNzdhMy4yMiwzLjIyLDAsMCwwLDIuODMtNC43NVpNMTYuNiwxMGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI5Ljg1YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1''@;'; put 'put ''WiIvPicpLEwuQ2xyU2hhcGVIZWxwSW5mbz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMzksMjUuNDVhMSwxLDAsMCwwLTEuMzguMjljLTEuNDEsMi4xNi00LDQuODEtNi4zMSw1LjdzLTQuMTIuNTctNC44NCwwYy0uMzEtLjI3LTEuMTItMS0uNDMtMy40OS40Ni0xLjY2LDMuMzIt''@;'; put 'put ''OS40OCw0LTExLjM4bC0yLjE4LjI4Yy0uNjksMS44Ni0zLjI5LDguODQtMy43NiwxMC41OC0uNjgsMi40OS0uMzQsNC4zLDEuMDksNS41NkE1LjU5LDUuNTksMCwwLDAsMTUsMzRhOS41Myw5LjUzLDAsMCwwLDMuNDUtLjdjMi43OS0xLjA5LDUuNzItNC4xMiw3LjI2LTYuNDdBMSwxLDAsMCww''@;'; put 'put ''LDI1LjM5LDI1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMywxMWE0LjUsNC41LDAsMSwwLTQuNS00LjVBNC41LDQuNSwwLDAsMCwxOS4zLDExWm0wLTdhMi41LDIuNSwwLDEsMS0yLjUsMi41QTIu''@;'; put 'put ''NSwyLjUsMCwwLDEsMTkuMyw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuODEsMTVjLjA2LDAsNi4yNy0uODIsNy43My0xLC42NS0uMSwxLjE0LDAsMS4zLjE1cy4yMS44LS4wNywxLjY4Yy0uNjEsMS44''@;'; put 'put ''Ni0zLjY5LDExLTQuNTksMTMuNzFhOCw4LDAsMCwwLDEuMjktLjM4LDcuMzIsNy4zMiwwLDAsMCwxLjE1LS42QzE5Ljg1LDI1LDIyLjE1LDE4LjEsMjIuNjcsMTYuNTJzLjM5LTIuNzgtLjMtMy42YTMuMTYsMy4xNiwwLDAsMC0zLjA4LS44M2MtMS40My4xNS03LjQ3Ljk0LTcuNzMsMWExLDEs''@;'; put 'put ''MCwwLDAsLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjIwLjc1IiBjeT0iNiIgcj0iNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNC44NCwyNi4yM2ExLDEsMCwwLDAtMS40LjI5LDE2LjYsMTYuNiwwLDAsMS0zLjUxLDMuNzdjLS4zMy4yNS0xLjU2LDEuMi0yLjA4LDEtLjM2LS4xMS0uMTUtLjgyLS4wOC0xLjEybC41My0xLjU3Yy4yMi0uNjQsNC4wNS0xMiw0LjQ3LTEzLjMuNjItMS45LjM1LTMuNzctMi40OC0z''@;'; put 'put ''LjMyLS43Ny4wOC04LjU4LDEuMDktOC43MiwxLjFhMSwxLDAsMCwwLC4xMywyczMtLjM5LDMuMzMtLjQyYS44OC44OCwwLDAsMSwuODUuNDQsMi40NywyLjQ3LDAsMCwxLS4wNywxLjcxYy0uMjYsMS00LjM3LDEyLjU4LTQuNSwxMy4yNWEyLjc4LDIuNzgsMCwwLDAsMS4xOCwzLDUsNSwwLDAs''@;'; put 'put ''MCwzLjA4LjgzaDBhOC41Myw4LjUzLDAsMCwwLDMuMDktLjYyYzIuNDktMSw1LjA5LTMuNjYsNi40Ni01Ljc1QTEsMSwwLDAsMCwyNC44NCwyNi4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUJhcnM9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwyOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTMyLDE5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzIsOUg0QTEsMSwwLDAsMSw0LDdIMzJhMSwxLDAsMCwxLDAsMloiLz4nKSxMLkNsclNo''@;'; put 'put ''YXBlVXNlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMSwwLTctN0E3LDcsMCwwLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwy''@;'; put 'put ''MiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdh''@;'; put 'put ''Nyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjZhNSw1LDAsMSwxLDEuMjQtOC40MmwxLTEuNzZBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwy''@;'; put 'put ''LDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44''@;'; put 'put ''NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwx''@;'; put 'put ''LjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIx''@;'; put 'put ''OCIgY3k9IjEwIiByPSI3IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNo''@;'; put 'put ''MjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42''@;'; put 'put ''aC0uMjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy4xNi01LjQ3QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUFuZ2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2TDE4LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCww''@;'; put 'put ''LDIuNDUtMi4zNloiLz4nKSxMLkNsclNoYXBlRm9sZGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNVYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUxYTcuNSw3LjUsMCwwLDEtMS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCww''@;'; put 'put ''LDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzAsMTUuNFYyOUg2VjEzaDcuMzFhMiwyLDAsMCww''@;'; put 'put ''LDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1''@;'; put 'put ''LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1''@;'; put 'put ''SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk02LDExVjdoNi40OWwyLjcyLDRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIzLjEzLDlI''@;'; put 'put ''MTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVGb2xkZXJPcGVuPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJM''@;'; put 'put ''MTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42''@;'; put 'put ''NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTks''@;'; put 'put ''MCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3''@;'; put 'put ''LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0zMy42OCwxNS40aC0uM0wyOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNGg5LjQyQTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCww''@;'; put 'put ''LC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAu''@;'; put 'put ''MzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJh''@;'; put 'put ''MiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwxLS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCww''@;'; put 'put ''LTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcs''@;'; put 'put ''MS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2''@;'; put 'put ''LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwxLTEuMzEtMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4x''@;'; put 'put ''OS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUJlbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAs''@;'; put 'put ''MTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45MywxLDEsMCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEs''@;'; put 'put ''MWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWk01LjEzLDI4Ljk0YTE2LjE3LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVhOC43NCw4Ljc0LDAsMSwxLDE3LjQ3LDB2NC45NGExNC4yNCwxNC4yNCwwLDAs''@;'; put 'put ''MCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAs''@;'; put 'put ''MCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjUxLDI3LjgzQTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45''@;'; put 'put ''MiwxMC45MiwwLDAsMC0uMTYtMS43OSw3LjQ0LDcuNDQsMCwwLDEtMi4yNC0uODQsOC44OSw4Ljg5LDAsMCwxLC40LDIuNjR2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzSDUuMTNhMTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0''@;'; put 'put ''LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNUE4LjgsOC44LDAsMCwxLDE4LDYuMzFhOC42MSw4LjYxLDAsMCwxLDQuNzYsMS40NEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU4LDEwLjU4LDAsMCwwLTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0y''@;'; put 'put ''LjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYxLjM2YTEsMSwwLDAsMCwxLDFoMjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSww''@;'; put 'put ''LDAsMCwzMi41MSwyNy44M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEwLjgxLDEwLjgxLDAsMCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMyww''@;'; put 'put ''LDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE1LjMyLDMyYTIuNjUsMi42NSwwLDAsMCw1LjI1LDBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcs''@;'; put 'put ''MCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNyww''@;'; put 'put ''LDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OUE3LjUsNy41LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41NywxMC41NywwLDAsMC0zLjMyLTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42Nyww''@;'; put 'put ''VjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxMLkNsclNoYXBlSW1hZ2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMtM0EzLDMsMCwwLDAsOC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3''@;'; put 'put ''LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYu''@;'; put 'put ''NzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMyww''@;'; put 'put ''LDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0tNC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCwwLDAtMS40MSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3''@;'; put 'put ''VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIyLjc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45''@;'; put 'put ''bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZUNsb3VkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQsMzNIMTAuNjJDNS42NywzMywxLDI4LjE5LDEsMjMuMWExMCwxMCwwLDAsMSw4LTkuNzUsMTAuMTksMTAuMTksMCwwLDEsMjAuMzMsMS4wNkExMC4wNywxMC4wNywwLDAsMSwyOSwxNi42NmE4LjI5LDguMjksMCwwLDEsNiw4QzM1LDI5''@;'; put 'put ''LjEsMzEuMzMsMzMsMjcuMTQsMzNaTTE5LjA5LDYuMjNhOC4yNCw4LjI0LDAsMCwwLTguMTksOGwwLC44Ny0uODYuMUE3Ljk0LDcuOTQsMCwwLDAsMywyMy4xYzAsNCwzLjc3LDcuOSw3LjYyLDcuOUgyNy4xNEMzMC4yMSwzMSwzMywyOCwzMywyNC42NWE2LjMxLDYuMzEsMCwwLDAtNS4zNy02''@;'; put 'put ''LjI2bC0xLjE4LS4xOC4zOS0xLjEzQTguMTgsOC4xOCwwLDAsMCwxOS4wOSw2LjIzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCww''@;'; put 'put ''LC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ1LDcuNDUsMCwwLDEtMi4xLS41NCw4LDgsMCwwLDEtLjMsNC4xNmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcu''@;'; put 'put ''NjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3YTguMjQsOC4yNCwwLDAsMSw4LjE5LThBOC4xMyw4LjEzLDAsMCwxLDIyLjU4LDdhNy41Myw3LjUzLDAsMCwxLS4wOC0xLDcuNTEsNy41MSwwLDAsMSwuMDktMS4xMkExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEw''@;'; put 'put ''LjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIiBkPSJNMjksMTYuNjZhMTAuMTQsMTAuMTQsMCwwLDAsLjItMS4zaC0yYTguMjgsOC4yOCwwLDAsMS0uMzcsMS43MmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkx''@;'; put 'put ''LTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3QTguMTYsOC4xNiwwLDAsMSwyMSw2LjQ3bDEtMS44QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44''@;'; put 'put ''Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''OSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSwwLTFhNy40NCw3LjQ0LDAsMCwxLTYuNi04LjU4QTEw''@;'; put 'put ''LjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTUsMTAuMTUsMCwwLDAsLjItMS4yNmgtN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLTUuMjFBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3''@;'; put 'put ''LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44''@;'; put 'put ''NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsPSgwLEUuY2xySWNvblNWRykoJzxj''@;'; put 'put ''aXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4''@;'; put 'put ''IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZUZpbHRlckdyaWQ9KDAsRS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRB''@;'; put 'put ''MS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik04LDExdjEu''@;'; put 'put ''MTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwx''@;'; put 'put ''LDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCww''@;'; put 'put ''LC4xNS0uMzVWMTFaIi8+JyksTC5DbHJTaGFwZVZtQnVnPSgwLEUuY2xySWNvblNWRykoJzxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuMTUiIHN0eWxlPSJpc29sYXRpb246aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjc5LDE0Ljgz''@;'; put 'put ''YTEuMDksMS4wOSwwLDAsMC0xLjQ3LS41NiwxLjA5LDEuMDksMCwwLDAtLjU0LDEuNDlsMi40Nyw1LjRjLjM5Ljg1LjgsMS4yOSwxLjU3LDEuMjlTNywyMiw3LjM5LDIxLjE2bDIuMTctNC43N2EuMzMuMzMsMCwwLDEsLjMxLS4yLjM1LjM1LDAsMCwxLC4zNS4zNXY0LjYxYTEuMTUsMS4xNSww''@;'; put 'put ''LDAsMCwxLjE0LDEuMywxLjE3LDEuMTcsMCwwLDAsMS4xNy0xLjNWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTcsMS4xNywwLDEsMCwyLjMyLDBWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMyww''@;'; put 'put ''LDAsMSwxLjE4LDEuMnYzLjc3YTEuMTYsMS4xNiwwLDEsMCwyLjMxLDBWMTYuODZhMi42OSwyLjY5LDAsMCwwLTIuNzgtMi42OSwzLjU3LDMuNTcsMCwwLDAtMi40NywxLjA1LDIuNzUsMi43NSwwLDAsMC0yLjM4LTEuMDVBMy45MywzLjkzLDAsMCwwLDEyLDE1LjIyYTIuODIsMi44MiwwLDAs''@;'; put 'put ''MC0yLjA4LTEuMDVBMi41NSwyLjU1LDAsMCwwLDcuNCwxNS44OUw1LjgyLDE5LjYzbC0yLTQuOCIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zMywxNC4xOEExLjE0LDEuMTQsMCwwLDAsMzEuOSwxNWwtMS4xOSwzLjczTDI5LjUsMTUuMDVhMS4xOCwxLjE4LDAsMCwwLTEuMTUtLjg3aC0u''@;'; put 'put ''MWExLjIsMS4yLDAsMCwwLTEuMTUuODdsLTEuMTksMy43MS0xLjE4LTMuNzFhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjg3LDEuMDgsMS4wOCwwLDAsMC0xLjEyLDEuMDcsMS42OCwxLjY4LDAsMCwwLC4xLjU0bDIsNS43YTEuMjcsMS4yNywwLDAsMCwxLjI3LDEsMS4yNCwxLjI0LDAsMCwwLDEu''@;'; put 'put ''Mi0uOTNsMS4yLTMuNjQsMS4yLDMuNjRhMS4yNSwxLjI1LDAsMCwwLDEuMjYuOTNBMS4yNywxLjI3LDAsMCwwLDMyLDIxLjVMMzQsMTUuNzNhMS43NywxLjc3LDAsMCwwLC4wOC0uNDhBMS4wNywxLjA3LDAsMCwwLDMzLDE0LjE4WiIgZmlsbD0iI2ZmZmZmZiIvPicpLEwuQ2xyU2hhcGVTZWFy''@;'; put 'put ''Y2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4zMyw1LjA1QTEwLjk1LDEwLjk1LDAsMSwxLDUuMzksMTYsMTEsMTEsMCwwLDEsMTYuMzMsNS4wNW0wLTIuMDVhMTMsMTMsMCwxLDAsMTMsMTMsMTMsMTMs''@;'; put 'put ''MCwwLDAtMTMtMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zNSwzMy4yOWwtNy4zNy03LjQyLTEuNDIsMS40MSw3LjM3LDcuNDJBMSwxLDAsMSwwLDM1LDMzLjI5WiIvPicpLEwuQ2xyU2hhcGVWaWV3''@;'; put 'put ''Q29sdW1ucz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFpt''@;'; put 'put ''MTAsMEgxNVY3aDhaIi8+JyksTC5DbHJTaGFwZUFuZ2xlRG91YmxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjksMTkuNDFhMSwxLDAsMCwxLS43MS0uMjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAs''@;'; put 'put ''MS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOSwzMC40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMw''@;'; put 'put ''LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPicpLEwuQ2xyU2hhcGVDYWxlbmRhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjI1LDZI''@;'; put 'put ''MjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNSIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIy''@;'; put 'put ''MCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlB''@;'; put 'put ''MSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFk''@;'; put 'put ''Z2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2Vk''@;'; put 'put ''IiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIiB4PSIxNCIgeT0iMjQiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xNC0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIgZD0iTTIy''@;'; put 'put ''LjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUs''@;'; put 'put ''MzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiB4PSIxNCIg''@;'; put 'put ''eT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIiB4PSIxNCIgeT0iMjQiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEyLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBvbHlnb24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCww''@;'; put 'put ''LDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgy''@;'; put 'put ''Wm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0x''@;'; put 'put ''MCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEs''@;'; put 'put ''MCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEw''@;'; put 'put ''SDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1i''@;'; put 'put ''YWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIu''@;'; put 'put ''MlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRW''@;'; put 'put ''MjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44''@;'; put 'put ''NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRXZlbnQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwz''@;'; put 'put ''Mi4yNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NSIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEtMS40MUwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYz''@;'; put 'put ''QTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwy''@;'; put 'put ''LDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAsLjIzLS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjgu''@;'; put 'put ''NUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAsMTBhMSwx''@;'; put 'put ''LDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2''@;'; put 'put ''LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDAsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYz''@;'; put 'put ''MC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0yNS45NCwxNi41OGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmEx''@;'; put 'put ''LjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwx''@;'; put 'put ''MFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNi4zYTEuMzQsMS4zNCwwLDAsMS0uMzYsMS4xOGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAs''@;'; put 'put ''MSwxMi45LDE5bDMuMzgsMy4zOCw3LTdoLTFBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAs''@;'; put 'put ''MzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCww''@;'; put 'put ''LDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIs''@;'; put 'put ''Mi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVptLTQuMDYsMy4wOC05LjY3LDkuNjdMMTEsMjAuOTRB''@;'; put 'put ''MS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVFeWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44Miwx''@;'; put 'put ''MHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA5LDExLjE3QTYuODYsNi44NiwwLDEsMCwyNSwxOCw2Ljg2LDYuODYsMCwwLDAsMTguMDksMTEuMTdabTAsMTEuNzJBNC44Niw0Ljg2LDAsMSwxLDIzLDE4LDQuODcsNC44NywwLDAsMSwx''@;'; put 'put ''OC4wOSwyMi44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5''@;'; put 'put ''LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxMLkNsclNoYXBlRXllSGlkZT0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0LS4wNkE0Ljg3LDQuODcsMCwwLDEsMjMuNjIsMThhNC43''@;'; put 'put ''OSw0Ljc5LDAsMCwxLS4wNi43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBh''@;'; put 'put ''MTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlpt''@;'; put 'put ''OS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44Niwx''@;'; put 'put ''LjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMzcsMTEuMTdBNi43OSw2Ljc5LDAsMCwwLDE2LDExLjZs''@;'; put 'put ''OC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjM3LDExLjE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0x''@;'; put 'put ''MGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCww''@;'; put 'put ''LDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOC4zLDguM2E2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxMLkNsclNoYXBlU3RlcEZvcndhcmQyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcuMTIsMjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRo''@;'; put 'put ''MEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI2LjQ5LDVhMS43LDEuNywwLDAsMC0xLjcsMS43VjI5LjNhMS43LDEuNywwLDAsMCwzLjQsMFY2LjdBMS43''@;'; put 'put ''LDEuNywwLDAsMCwyNi40OSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUFycm93PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDguMzQsMTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44''@;'; put 'put ''MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksTC5Db3JlU2hhcGVzPXsidW5rbm93bi1zdGF0dXMiOkwuQ2xyU2hhcGVVbmtub3duU3RhdHVzLGhvbWU6''@;'; put 'put ''TC5DbHJTaGFwZUhvbWUsY29nOkwuQ2xyU2hhcGVDb2csY2hlY2s6TC5DbHJTaGFwZUNoZWNrLHRpbWVzOkwuQ2xyU2hhcGVUaW1lcywiZXhjbGFtYXRpb24tdHJpYW5nbGUiOkwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlLCJleGNsYW1hdGlvbi1jaXJjbGUiOkwuQ2xyU2hhcGVFeGNs''@;'; put 'put ''YW1hdGlvbkNpcmNsZSwiY2hlY2stY2lyY2xlIjpMLkNsclNoYXBlQ2hlY2tDaXJjbGUsImluZm8tY2lyY2xlIjpMLkNsclNoYXBlSW5mb0NpcmNsZSwiaW5mby1zdGFuZGFyZCI6TC5DbHJTaGFwZUluZm9TdGFuZGFyZCwic3VjY2Vzcy1zdGFuZGFyZCI6TC5DbHJTaGFwZVN1Y2Nlc3NTdGFu''@;'; put 'put ''ZGFyZCwiZXJyb3Itc3RhbmRhcmQiOkwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkLCJ3YXJuaW5nLXN0YW5kYXJkIjpMLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkLCJoZWxwLWluZm8iOkwuQ2xyU2hhcGVIZWxwSW5mbyxiYXJzOkwuQ2xyU2hhcGVCYXJzLHVzZXI6TC5DbHJTaGFwZVVzZXIsYW5n''@;'; put 'put ''bGU6TC5DbHJTaGFwZUFuZ2xlLGZvbGRlcjpMLkNsclNoYXBlRm9sZGVyLCJmb2xkZXItb3BlbiI6TC5DbHJTaGFwZUZvbGRlck9wZW4sYmVsbDpMLkNsclNoYXBlQmVsbCxpbWFnZTpMLkNsclNoYXBlSW1hZ2UsY2xvdWQ6TC5DbHJTaGFwZUNsb3VkLCJlbGxpcHNpcy1ob3Jpem9udGFsIjpM''@;'; put 'put ''LkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsLCJlbGxpcHNpcy12ZXJ0aWNhbCI6TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWwsImZpbHRlci1ncmlkIjpMLkNsclNoYXBlRmlsdGVyR3JpZCwiZmlsdGVyLWdyaWQtY2lyY2xlIjpMLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZSwidm0tYnVn''@;'; put 'put ''IjpMLkNsclNoYXBlVm1CdWcsc2VhcmNoOkwuQ2xyU2hhcGVTZWFyY2gsInZpZXctY29sdW1ucyI6TC5DbHJTaGFwZVZpZXdDb2x1bW5zLCJhbmdsZS1kb3VibGUiOkwuQ2xyU2hhcGVBbmdsZURvdWJsZSxjYWxlbmRhcjpMLkNsclNoYXBlQ2FsZW5kYXIsZXZlbnQ6TC5DbHJTaGFwZUV2ZW50''@;'; put 'put ''LGV5ZTpMLkNsclNoYXBlRXllLCJleWUtaGlkZSI6TC5DbHJTaGFwZUV5ZUhpZGUsInN0ZXAtZm9yd2FyZC0yIjpMLkNsclNoYXBlU3RlcEZvcndhcmQyLGFycm93OkwuQ2xyU2hhcGVBcnJvd30sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuQ29yZVNoYXBlcywiaG91c2UiLCgwLEIuZGVzY3Jp''@;'; put 'put ''cHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmhvbWUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJzZXR0aW5ncyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY29nKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuQ29yZVNoYXBlcywic3VjY2VzcyIs''@;'; put 'put ''KDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY2hlY2spKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJjbG9zZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMudGltZXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVz''@;'; put 'put ''LCJ3YXJuaW5nIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tdHJpYW5nbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImVycm9yIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24t''@;'; put 'put ''Y2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJpbmZvIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siaW5mby1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsIm1lbnUiLCgwLEIuZGVzY3JpcHRvckNv''@;'; put 'put ''bmZpZykoTC5Db3JlU2hhcGVzLmJhcnMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJhdmF0YXIiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLnVzZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJjYXJldCIsKDAsQi5kZXNj''@;'; put 'put ''cmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYW5nbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJkaXJlY3RvcnkiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmZvbGRlcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsIm5v''@;'; put 'put ''dGlmaWNhdGlvbiIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYmVsbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImNvbGxhcHNlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siYW5nbGUtZG91YmxlIl0pKX0sIi4vcHJvamVj''@;'; put 'put ''dHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIjpmdW5jdGlvbihKZSxMLGdlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuZGVzY3JpcHRvckNvbmZpZz12b2lkIDAsTC5kZXNjcmlwdG9yQ29uZmln''@;'; put 'put ''PWZ1bmN0aW9uIEIoRSl7cmV0dXJue2VudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOkV9fX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyLnRzIjpmdW5jdGlvbihKZSxMLGdlKXsidXNlIHN0cmljdCI7T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuU2hhcGVUZW1wbGF0ZU9ic2VydmVyPUwuY2hhbmdlSGFuZGxlckNhbGxiYWNrcz12b2lkIDAsTC5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXt9O3ZhciBCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRSgpe3RoaXMu''@;'; put 'put ''Y2FsbGJhY2tzPUwuY2hhbmdlSGFuZGxlckNhbGxiYWNrc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KEUsImluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUuc2luZ2xlSW5zdGFuY2V8fChFLnNpbmdsZUluc3RhbmNlPW5ldyBFKSxFLnNpbmdsZUluc3RhbmNlfSxlbnVt''@;'; put 'put ''ZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLEUucHJvdG90eXBlLnN1YnNjcmliZVRvPWZ1bmN0aW9uKE1lLFUpe3ZhciBRPXRoaXM7cmV0dXJuIHRoaXMuY2FsbGJhY2tzW01lXT8tMT09PXRoaXMuY2FsbGJhY2tzW01lXS5pbmRleE9mKFUpJiZ0aGlzLmNhbGxiYWNrc1tNZV0ucHVzaChV''@;'; put 'put ''KTp0aGlzLmNhbGxiYWNrc1tNZV09W1VdLGZ1bmN0aW9uKCl7dmFyIFo9US5jYWxsYmFja3NbTWVdLmluZGV4T2YoVSk7US5jYWxsYmFja3NbTWVdLnNwbGljZShaLDEpLDA9PT1RLmNhbGxiYWNrc1tNZV0ubGVuZ3RoJiZkZWxldGUgUS5jYWxsYmFja3NbTWVdfX0sRS5wcm90b3R5cGUuZW1p''@;'; put 'put ''dENoYW5nZXM9ZnVuY3Rpb24oTWUsVSl7dGhpcy5jYWxsYmFja3NbTWVdJiZ0aGlzLmNhbGxiYWNrc1tNZV0ubWFwKGZ1bmN0aW9uKFEpe1EoVSl9KX0sRX0oKTtMLlNoYXBlVGVtcGxhdGVPYnNlcnZlcj1CfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3Iu''@;'; put 'put ''dHMiOmZ1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTC5jbHJJY29uU1ZHPXZvaWQgMDtMLmNsckljb25TVkc9ZnVuY3Rpb24gVShRKXt2YXIgWj0iIjtyZXR1cm4gUS5pbmRleE9mKCItLWJhZGdl''@;'; put 'put ''ZCIpPi0xJiYoWis9ImNhbi1iYWRnZSAiKSxRLmluZGV4T2YoIi0tYWxlcnRlZCIpPi0xJiYoWis9ImNhbi1hbGVydCAiKSxRLmluZGV4T2YoImNsci1pLXNvbGlkIik+LTEmJihaKz0iaGFzLXNvbGlkICIpLChaPyc8c3ZnIHZlcnNpb249IjEuMSIgY2xhc3M9IicrWisnIiB2aWV3Qm94PSIw''@;'; put 'put ''IDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nOic8c3Zn''@;'; put 'put ''IHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDM2IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZvY3VzYWJsZT0i''@;'; put 'put ''ZmFsc2UiIHJvbGU9ImltZyI+JykrUSsiPC9zdmc+In19fSl9LDkzODc3OmZ1bmN0aW9uKFhlKXtYZS5leHBvcnRzPWZ1bmN0aW9uKEplKXt2YXIgTD17fTtmdW5jdGlvbiBnZShCKXtpZihMW0JdKXJldHVybiBMW0JdLmV4cG9ydHM7dmFyIEU9TFtCXT17aTpCLGw6ITEsZXhwb3J0czp7fX07''@;'; put 'put ''cmV0dXJuIEplW0JdLmNhbGwoRS5leHBvcnRzLEUsRS5leHBvcnRzLGdlKSxFLmw9ITAsRS5leHBvcnRzfXJldHVybiBnZS5tPUplLGdlLmM9TCxnZS5kPWZ1bmN0aW9uKEIsRSxNZSl7Z2UubyhCLEUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQixFLHtlbnVtZXJhYmxlOiEwLGdldDpNZX0p''@;'; put 'put ''fSxnZS5yPWZ1bmN0aW9uKEIpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSl9LGdlLnQ9ZnVuY3Rpb24oQixFKXtpZigxJkUmJihCPWdlKEIpKSw4JkV8fDQmRSYmIm9iamVjdCI9PXR5cGVvZiBCJiZCJiZCLl9fZXNNb2R1bGUpcmV0dXJuIEI7dmFyIE1lPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZ2UucihNZSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KE1lLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTpCfSksMiZFJiYic3RyaW5nIiE9dHlwZW9mIEIpZm9yKHZhciBVIGluIEIpZ2UuZChNZSxVLGZ1bmN0aW9uKFEpe3JldHVybiBCW1FdfS5iaW5kKG51bGwsVSkpO3JldHVybiBNZX0sZ2Uubj1mdW5jdGlvbihCKXt2YXIgRT1CJiZC''@;'; put 'put ''Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gQi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBCfTtyZXR1cm4gZ2UuZChFLCJhIixFKSxFfSxnZS5vPWZ1bmN0aW9uKEIsRSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLEUpfSxnZS5wPSIiLGdl''@;'; put 'put ''KGdlLnM9Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9hbGwtc2hhcGVzLnRzIil9KHsiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMiOmZ1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksTC5BbGxTaGFwZXM9dm9pZCAwO3ZhciBCPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzIiksRT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyIpLE1lPWdlKCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxVPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyIpLFE9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9tZWRpYS1zaGFwZXMudHMiKSxaPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy9z''@;'; put 'put ''aGFwZXMvc29jaWFsLXNoYXBlcy50cyIpLGllPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiKSxsZT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RleHQtZWRpdC1zaGFwZXMudHMiKSxZPWdlKCIuL3Byb2plY3RzL2ljb25zL3Ny''@;'; put 'put ''Yy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyIpLFc9W01lLkNvcmVTaGFwZXMsRS5Db21tZXJjZVNoYXBlcyxVLkVzc2VudGlhbFNoYXBlcyxRLk1lZGlhU2hhcGVzLFouU29jaWFsU2hhcGVzLGllLlRlY2hub2xvZ3lTaGFwZXMsWS5UcmF2ZWxTaGFwZXMsQi5DaGFydFNoYXBlcyxsZS5UZXh0''@;'; put 'put ''RWRpdFNoYXBlc10sTj17fTtMLkFsbFNoYXBlcz1OO2Zvcih2YXIgZWU9MCxxPVc7ZWU8cS5sZW5ndGg7ZWUrKyl7dmFyIEo9cVtlZV07Zm9yKHZhciBzZSBpbiBKKUouaGFzT3duUHJvcGVydHkoc2UpJiYoTltzZV09SltzZV0pfSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cu''@;'; put 'put ''aGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChOKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMudHMiOmZ1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19l''@;'; put 'put ''c01vZHVsZSIse3ZhbHVlOiEwfSksTC5DaGFydFNoYXBlcz1MLkNsclNoYXBlQmVsbEN1cnZlPUwuQ2xyU2hhcGVUaWNrQ2hhcnQ9TC5DbHJTaGFwZVNjYXR0ZXJQbG90PUwuQ2xyU2hhcGVQaWVDaGFydD1MLkNsclNoYXBlTGluZUNoYXJ0PUwuQ2xyU2hhcGVIZWF0TWFwPUwuQ2xyU2hhcGVH''@;'; put 'put ''cmlkQ2hhcnQ9TC5DbHJTaGFwZUN1cnZlQ2hhcnQ9TC5DbHJTaGFwZUNsb3VkQ2hhcnQ9TC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PUwuQ2xyU2hhcGVCb3hQbG90PUwuQ2xyU2hhcGVCYXJDaGFydD1MLkNsclNoYXBlQXhpc0NoYXJ0PXZvaWQgMDt2YXIgQj1nZSgiLi9wcm9qZWN0cy9pY29ucy9z''@;'; put 'put ''cmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxFPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO0wuQ2xyU2hhcGVBeGlzQ2hhcnQ9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQg''@;'; put 'put ''NyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQu''@;'; put 'put ''NzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gNi4wMDcgMjYuNzMxIEwg''@;'; put 'put ''MjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAu''@;'; put 'put ''NjUgNiAxMS4wMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBD''@;'; put 'put ''IDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEz''@;'; put 'put ''LjAyNiAzMiAxMy4yMiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0''@;'; put 'put ''LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcgMjYuNzMxIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBD''@;'; put 'put ''IDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40Mjkg''@;'; put 'put ''MzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEw''@;'; put 'put ''LjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwg''@;'; put 'put ''MjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3Ljcz''@;'; put 'put ''IDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYg''@;'; put 'put ''MTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQg''@;'; put 'put ''MTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4w''@;'; put 'put ''MDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAx''@;'; put 'put ''OS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAx''@;'; put 'put ''MC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAx''@;'; put 'put ''MS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDEx''@;'; put 'put ''LjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLEwuQ2xyU2hhcGVCYXJDaGFydD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAgTCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAyNiBM''@;'; put 'put ''IDExLjQgMTEuNiBMIDguNiAxMS42IEwgOC42IDI2IEwgNyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAx''@;'; put 'put ''Ni42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42IEwgMjQuNiAyNiBMIDIzIDI2IFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEw''@;'; put 'put ''NSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAx''@;'; put 'put ''NiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIy''@;'; put 'put ''LjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAy''@;'; put 'put ''NiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYgMjYgTCA3IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdl''@;'; put 'put ''ZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48L3Bh''@;'; put 'put ''dGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiPjwvcGF0aD5cbiAg''@;'; put 'put ''PGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40''@;'; put 'put ''NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBaIj48L3BhdGg+''@;'; put 'put ''XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUu''@;'; put 'put ''MzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBMIDguNiAyNiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBMIDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAyNiBMIDE1IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVy''@;'; put 'put ''dGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCI+''@;'; put 'put ''PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4w''@;'; put 'put ''MDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQg''@;'; put 'put ''QyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMg''@;'; put 'put ''Mi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcg''@;'; put 'put ''TCAzNCAxNS4zNTcgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAxMCBaIE0gMTUgMjYgTCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYgTCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4''@;'; put 'put ''NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxM''@;'; put 'put ''LkNsclNoYXBlQm94UGxvdD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpN''@;'; put 'put ''NCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBMIDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUuNCAxMy42IEwgOC42IDEzLjYgTCA4LjYgMTcu''@;'; put 'put ''MiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDI0IEwgMjkgMjQgTCAyOSAxMCBMIDE5IDEwIEwgMTkgMjQgWiBNIDIwLjYgMTEuNiBMIDI3LjQgMTEuNiBMIDI3LjQg''@;'; put 'put ''MTcuMiBMIDIwLjYgMTcuMiBMIDIwLjYgMTEuNiBaIE0gMjcuNCAyMi40IEwgMjAuNiAyMi40IEwgMjAuNiAxOC44IEwgMjcuNCAxOC44IEwgMjcuNCAyMi40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3''@;'; put 'put ''IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAxOSAyNCBMIDI5IDI0IEwgMjkgMTAgTCAxOSAxMCBaIE0gMjEgMTIgTCAyNyAxMiBMIDI3IDE3IEwgMjEgMTcg''@;'; put 'put ''WiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAxOSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUy''@;'; put 'put ''NCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQg''@;'; put 'put ''MTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBN''@;'; put 'put ''IDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgMTAgTCAyMy43MjggMTAgQyAyNC4x''@;'; put 'put ''MDUgMTAuNTk2IDI0LjU2NCAxMS4xMzUgMjUuMDkgMTEuNiBMIDIwLjYgMTEuNiBMIDIwLjYgMTcuMiBMIDI3LjQgMTcuMiBMIDI3LjQgMTIuOTg3IEMgMjcuOTA5IDEzLjE3NyAyOC40NDUgMTMuMzEzIDI5IDEzLjM4NyBMIDI5IDI0IEwgMTkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTgu''@;'; put 'put ''OCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEg''@;'; put 'put ''QyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMi4zMTIgNi44MTcgMjIuNzMyIDguNTY2IDIzLjYzMyAxMCBMIDE5IDEwIEwgMTkgMjQgTCAyOSAyNCBMIDI5IDEzLjQyNyBDIDI5LjEwMyAxMy40NCAyOS4yMDYgMTMuNDUx''@;'; put 'put ''IDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAxMiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAxNyBMIDkgMTcgTCA5IDE0IEwgMTUgMTQgWiBN''@;'; put 'put ''IDIxIDEyIEwgMjUuNDcyIDEyIEMgMjUuOTQgMTIuMzUyIDI2LjQ1MiAxMi42NSAyNyAxMi44ODUgTCAyNyAxNyBMIDIxIDE3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg''@;'; put 'put ''MzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwg''@;'; put 'put ''MTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAyNCBMIDE5IDI0IEwgMTkgMTUuMzQ1IEMgMTkuMDIxIDE1LjM0OCAyMC42IDE1LjM2IDIwLjYgMTUuMzYgTCAyMC42IDE3LjIgTCAyNy40IDE3LjIgTCAyNy40IDE1''@;'; put 'put ''LjM2IEwgMjkgMTUuMzU3IEwgMjkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBMIDI3LjQgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMu''@;'; put 'put ''MDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAy''@;'; put 'put ''Ny4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4x''@;'; put 'put ''MDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE5LjAyOCAxMCBMIDE5IDEwIEwgMTkgMTAuMDQ4IEwgMTcuNjI1IDEyLjM5NSBDIDE2LjgwNyAxMy41ODMgMTcuNTcxIDE1LjE5NyAxOSAxNS4zNDUgTCAxOSAyNCBMIDI5IDI0IEwgMjkgMTUuMzU3IEwg''@;'; put 'put ''MzQgMTUuMzU3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAyNyAxNyBMIDIxIDE3IEwgMjEgMTUuMzU3IEwgMjcgMTUuMzU3IFogTSAyNyAyMiBMIDIxIDIy''@;'; put 'put ''IEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEy''@;'; put 'put ''LjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0''@;'; put 'put ''IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksTC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkg''@;'; put 'put ''WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4zNDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0MyAyOSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIyNyAx''@;'; put 'put ''Ni42IDI0LjYgMTcuMjI3IDI0LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDku''@;'; put 'put ''Njc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUgMjMgQyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3IDIwIDIxIDIxLjM0MyAyMSAyMyBaIE0gMTggMjEu''@;'; put 'put ''NiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMgMTkuNCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIxLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3''@;'; put 'put ''IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEw''@;'; put 'put ''IDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAy''@;'; put 'put ''MyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44''@;'; put 'put ''OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcgMjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQzIDIx''@;'; put 'put ''IDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAxNi42IEMgMjUuMjI3IDE2LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIyNyAxOS40IDI2IDE5LjQgQyAyNi43NzMgMTku''@;'; put 'put ''NCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcuNCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkg''@;'; put 'put ''MTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEg''@;'; put 'put ''MTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAy''@;'; put 'put ''MSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMg''@;'; put 'put ''MTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgcng9''@;'; put 'put ''IjMiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUg''@;'; put 'put ''MTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAx''@;'; put 'put ''MS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIw''@;'; put 'put ''IDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEg''@;'; put 'put ''TCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAxOCBDIDI5IDE5''@;'; put 'put ''LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAxNSBDIDI3LjY1NyAxNSAyOSAxNi4zNDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYuNiAyNC42IDE3LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43NzMg''@;'; put 'put ''MjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMgMTYuNiAyNiAxNi42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiByeD0iMyI+PC9wYXRo''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAxMCAxMSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDExLjYgQyA5LjY3NSAxMS42IDguNiAxMi42NzUg''@;'; put 'put ''OC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1IDExLjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxl''@;'; put 'put ''cnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYg''@;'; put 'put ''QyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0''@;'; put 'put ''IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEg''@;'; put 'put ''MzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAz''@;'; put 'put ''NCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBD''@;'; put 'put ''IDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNC41NzkgMTUuMzU3IEMgMjMuNjM5IDE1Ljg2MyAyMyAxNi44NTcgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2Ljg1NyAyOC4zNjEg''@;'; put 'put ''MTUuODYzIDI3LjQyMSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43OTEgNyAxNCBDIDcgMTYuMjA5IDguNzkxIDE4IDExIDE4IEMgMTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4yMDkgMTAgMTEgMTAgWiBNIDE4IDIwIEMgMTYu''@;'; put 'put ''MzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMu''@;'; put 'put ''MDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksTC5DbHJT''@;'; put 'put ''aGFwZUNsb3VkQ2hhcnQ9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQs''@;'; put 'put ''MjlWN0gzMlYyOVoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMC45NzEgMTEuMjQzIEMgMjMuMzE0IDEzLjU4NiAyMi4zNjQgMTguMzM1IDE4Ljg0OSAyMS44NDkgQyAxNS4zMzQgMjUuMzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4IDEw''@;'; put 'put ''LjM2NCAxMy4zNjQgQyAxMy44NzkgOS44NDkgMTguNjI4IDguOSAyMC45NzEgMTEuMjQzIFogTSAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDIwLjM4OCAx''@;'; put 'put ''Ny43NjUgMjEuMzM4IDE0LjE1NiAxOS42OTcgMTIuNTE2IEMgMTguMDU3IDEwLjg3NiAxNC40NDggMTEuODI1IDExLjYzNiAxNC42MzcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAy''@;'; put 'put ''Ni42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjcgMjAuNiAyMy42IDIxLjIyNyAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI3''@;'; put 'put ''IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNyAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFog''@;'; put 'put ''TSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4zMTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEuODQ5IEMgMjIuMzY0IDE4LjMzNSAyMy4zMTQgMTMuNTg2IDIwLjk3MSAxMS4yNDMgQyAxOC42MjggOC45IDEzLjg3OSA5''@;'; put 'put ''Ljg0OSAxMC4zNjQgMTMuMzY0IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIy''@;'; put 'put ''LjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8''@;'; put 'put ''cGF0aCBkPSJNIDIwLjk3MSAxMS4yNDMgQyAyMy4zMTQgMTMuNTg2IDIyLjM2NCAxOC4zMzUgMTguODQ5IDIxLjg0OSBDIDE1LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMxNCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44NzggMTAuMzY0IDEzLjM2NCBDIDEzLjg3OSA5Ljg0''@;'; put 'put ''OSAxOC42MjggOC45IDIwLjk3MSAxMS4yNDMgWiBNIDExLjYzNiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAyNC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMjAuMzg4IDE3Ljc2NSAyMS4zMzggMTQuMTU2IDE5LjY5''@;'; put 'put ''NyAxMi41MTYgQyAxOC4wNTcgMTAuODc2IDE0LjQ0OCAxMS44MjUgMTEuNjM2IDE0LjYzNyBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUg''@;'; put 'put ''MjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUg''@;'; put 'put ''MjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iNyI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''IDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMu''@;'; put 'put ''NDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMi4zNjQgMTguMzM1IDIzLjMx''@;'; put 'put ''NCAxMy41ODYgMjAuOTcxIDExLjI0MyBDIDE4LjYyOCA4LjkgMTMuODc5IDkuODQ5IDEwLjM2NCAxMy4zNjQgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAyMiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcgMjUgMjggMjMuNjU3IDI4IDIyIEMgMjggMjAu''@;'; put 'put ''MzQzIDI2LjY1NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3''@;'; put 'put ''IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1LjM2NCAxMC41ODYgMjYuMzE0IDguMjQzIDIzLjk3IEMgNS44OTkgMjEuNjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQgMTMu''@;'; put 'put ''MzY0IEMgMTMuMDQ5IDEwLjY3OSAxNi40NTMgOS40OTIgMTguOTU2IDEwLjEyNCBMIDE4LjAwOCAxMS43NDEgQyAxNi4xOCAxMS41MTggMTMuNjk1IDEyLjU3OCAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0''@;'; put 'put ''Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDE5LjIyOCAxOC45MjUgMjAuMjM3IDE2Ljk5OCAyMC40NTYgMTUuMzU3IEwgMjIuMjIgMTUuMzU3IEMgMjIuMDA2IDE3LjQ3NyAyMC44MzggMTkuODYxIDE4Ljg0OSAyMS44NDkgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjgg''@;'; put 'put ''MjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBM''@;'; put 'put ''IDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMg''@;'; put 'put ''MzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTguOTU2IDEwLjEyNCBDIDE2LjQ1MyA5LjQ5MiAxMy4wNDkgMTAuNjc5IDEw''@;'; put 'put ''LjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMC44MzggMTkuODYxIDIyLjAwNiAxNy40NzcgMjIuMjIgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBDIDIz''@;'; put 'put ''LjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEz''@;'; put 'put ''LjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVDdXJ2ZUNoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEg''@;'; put 'put ''QyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4''@;'; put 'put ''IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMz''@;'; put 'put ''MiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQy''@;'; put 'put ''NSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQg''@;'; put 'put ''NSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAy''@;'; put 'put ''NiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIg''@;'; put 'put ''MTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIy''@;'; put 'put ''IEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwg''@;'; put 'put ''MzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIgNi4yIDExIEMgNi4yIDEwLjU1OCA2LjU1OCAx''@;'; put 'put ''MC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcuODM1IDE3LjEyOSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAxOC4wMTkgMTcuNzggQyAxOS4zMzIgMjIuMzc1''@;'; put 'put ''IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAyNC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1LjggTCAyMyAyNS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAxNi40ODEgMTguMjIgQyAxNi40MjUgMTguMDI1''@;'; put 'put ''IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQgMTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDExLjggMTMgMTEuOCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4y''@;'; put 'put ''MzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgy''@;'; put 'put ''IDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAx''@;'; put 'put ''NiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1''@;'; put 'put ''IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBk''@;'; put 'put ''PSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcu''@;'; put 'put ''MTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIz''@;'; put 'put ''IDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAx''@;'; put 'put ''MS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0''@;'; put 'put ''IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDEx''@;'; put 'put ''Ljk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE3LjQ3NiAx''@;'; put 'put ''Mi42MTIgMTcuMzc5IDEyLjg0MyAxNy4zMyAxMy4wNzcgQyAxNy4yNjIgMTIuOTQ4IDE3LjE5MiAxMi44MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDExIEMgNiAxMS41NTIgNi40NDggMTIgNyAxMiBM''@;'; put 'put ''IDEzIDEyIEMgMTQuODE3IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTkuODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUyIDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMwIDI0''@;'; put 'put ''LjQ0OCAyOS41NTIgMjQgMjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2MiAxNy43MjUgQyAxOC42NCAxNi41OTggMTguMzg1IDE1Ljc0NCAxOC4xNDcgMTUuMDQ0IEMgMTguNDA3IDE1LjIxNSAxOC43MTcgMTUuMzI2IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQg''@;'; put 'put ''MTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEu''@;'; put 'put ''MDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4w''@;'; put 'put ''ODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxMLkNsclNoYXBlR3JpZENoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0YTIs''@;'; put 'put ''MiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEy''@;'; put 'put ''LDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMTUgMTcgTCA0IDE3IEMgMi44OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIgOCBD''@;'; put 'put ''IDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAxNyAxNSAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5''@;'; put 'put ''Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDMyIDYgQyAzMy4xMDUgNiAzNCA2Ljg5NSAzNCA4IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMyIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBDIDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAxNyAyOCBDIDE3IDI5LjEwNSAxNi4xMDUgMzAgMTUgMzAgWiIvPlxu''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwgMTkgMjEgQyAxOSAxOS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkgQyAzMy4xMDUgMTkgMzQgMTkuODk1IDM0IDIx''@;'; put 'put ''IEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS1hbGVydGVkIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEs''@;'; put 'put ''MiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLWFsZXJ0ZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDIwLjAxNCAxNyAxOS4xOTUgMTYuMjg3IDE5LjAzIDE1LjM0OCBD''@;'; put 'put ''IDE5LjA0MSAxNS4zNDkgMTkuMDUzIDE1LjM1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzMuOTY4IDE1LjM1NyBDIDMzLjggMTYuMjkyIDMyLjk4MyAxNyAzMiAxNyBaIE0gMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYg''@;'; put 'put ''TCAyMS4zNzIgNiBMIDE5IDEwLjA0OCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtYWxlcnRlZCIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCww''@;'; put 'put ''LDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC1hbGVydGVkIiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCww''@;'; put 'put ''LDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjEx''@;'; put 'put ''NCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDEx''@;'; put 'put ''LjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDE1IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIgMTYu''@;'; put 'put ''MTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUgMTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAyMC4wMTQgMTcgMTkuMTk1IDE2LjI4NyAxOS4wMyAxNS4zNDggQyAxOS4wNDEgMTUuMzQ5IDE5LjA1MyAxNS4zNSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDMzLjk2OCAx''@;'; put 'put ''NS4zNTcgQyAzMy44IDE2LjI5MiAzMi45ODMgMTcgMzIgMTcgWiBNIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjEuMzcyIDYgTCAxOSAxMC4wNDggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBk''@;'; put 'put ''PSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMgMTYuMTA1IDE5IDE3IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAzMCAxNSAzMCBaIi8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUg''@;'; put 'put ''MzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41''@;'; put 'put ''NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAx''@;'; put 'put ''MS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNSwxN0g0YTIsMiww''@;'; put 'put ''LDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMg''@;'; put 'put ''MTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjIuNTkgNiBDIDIyLjU5IDYuMDE5IDIyLjU5IDYuMDM3IDIyLjU5IDYuMDU2IEMgMjIuNTkgNi43MjkgMjIuNjggNy4zODEgMjIuODQ4IDggTCAyMSA4IEwgMjEgMTUgTCAzMiAxNSBM''@;'; put 'put ''IDMyIDEzLjE3NSBDIDMyLjcxNyAxMi45NzIgMzMuMzg5IDEyLjY2NCAzNCAxMi4yNjkgTCAzNCAxNSBDIDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0x''@;'; put 'put ''NSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMy''@;'; put 'put ''LDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2IDQg''@;'; put 'put ''NiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5''@;'; put 'put ''NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIyLjU5IDYgQyAyMi41OSA2LjAxOSAyMi41OSA2LjAzNyAyMi41OSA2LjA1NiBDIDIyLjU5IDEwLjE0MSAyNS45MDEgMTMuNDUyIDI5Ljk4NiAxMy40NTIgQyAzMS40NjYgMTMuNDUyIDMyLjg0''@;'; put 'put ''NCAxMy4wMTggMzQgMTIuMjY5IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0gMTUgMzAgTCA0IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUgMiAy''@;'; put 'put ''OCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcgMTkuODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00''@;'; put 'put ''LS1iYWRnZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAg''@;'; put 'put ''WiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZUhlYXRNYXA9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUg''@;'; put 'put ''MzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDI4IDEwIEwgMjggMjYgTCA4IDI2IFogTSA5LjYgMjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42IDE3''@;'; put 'put ''LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDI2IDExLjYgTCAyMS45IDExLjYgTCAyMS45IDE3LjIgTCAyNiAxNy4yIFogTSAxNS43IDExLjYgTCAxNS43IDE3LjIgTCAyMC4zIDE3LjIgTCAyMC4zIDExLjYgWiBNIDE1LjcgMjQg''@;'; put 'put ''TCAyMC4zIDI0IEwgMjAuMyAxOC44IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAx''@;'; put 'put ''My4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAz''@;'; put 'put ''MSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDIzLjcyOCAxMCBDIDI0LjEwNSAxMC41OTYgMjQuNTY0IDExLjEzNSAyNS4wOSAx''@;'; put 'put ''MS42IEwgMjEuOSAxMS42IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBMIDI2IDEyLjI4NyBDIDI2LjYxMSAxMi42NzkgMjcuMjg0IDEyLjk4MyAyOCAxMy4xODIgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwg''@;'; put 'put ''OS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAxMS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxMS42IFogTSAxNS43IDI0IEwgMjAuMyAyNCBMIDIwLjMgMTguOCBMIDE1Ljcg''@;'; put 'put ''MTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkg''@;'; put 'put ''TCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDE5LjAyOCAxMCBMIDE4LjA5MSAxMS42IEwgMTUuNyAxMS42IEwg''@;'; put 'put ''MTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxNS4zNTcgTCAyMS45IDE1LjM1NyBMIDIxLjkgMTcuMiBMIDI2IDE3LjIgTCAyNiAxNS4zNTcgTCAyOCAxNS4zNTcgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAx''@;'; put 'put ''MS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAyNCBMIDIwLjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4''@;'; put 'put ''IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQu''@;'; put 'put ''Nzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg''@;'; put 'put ''MzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gOCAyNiBMIDI4IDI2IEwgMjggMTAgTCA4IDEwIFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBa''@;'; put 'put ''IE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTIgTCAyNiAxMiBaIE0gMjAgMTIgTCAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgWiBNIDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBMIDEw''@;'; put 'put ''IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIg''@;'; put 'put ''NyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjIuMzEyIDYuODE3IDIyLjczMiA4LjU2NiAyMy42MzMgMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTMuMjMyIEMgMjguNDIxIDEzLjM0NSAyOC44NTkgMTMuNDIyIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAz''@;'; put 'put ''MS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkgTCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkgWiBNIDI2IDE3IEwgMjIgMTcgTCAyMiAxMiBM''@;'; put 'put ''IDI1LjU4NCAxMiBDIDI1LjcxOSAxMi4xIDI1Ljg1OCAxMi4xOTYgMjYgMTIuMjg3IFogTSAyMCAxMiBMIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBaIE0gMTQgMTIgTCAxNCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMjItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMu''@;'; put 'put ''MTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxOS4wMjggMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAxMCAxOSBMIDE0IDE5IEwgMTQg''@;'; put 'put ''MjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTUuMzU3IEwgMjYgMTUuMzU3IFogTSAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgTCAxNy44NTYgMTIgTCAxNy42''@;'; put 'put ''MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjAgMTUuMzU3IFogTSAxNCAxMiBMIDE0IDE3IEwgMTAgMTcgTCAxMCAxMiBaIj48L3BhdGg+XG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIu''@;'; put 'put ''MTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAw''@;'; put 'put ''LjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLEwuQ2xyU2hhcGVMaW5lQ2hhcnQ9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAy''@;'; put 'put ''OSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUu''@;'; put 'put ''MjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''PjwvcG9seWdvbj5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5''@;'; put 'put ''IEwgMzQgNyBDIDM0IDUuODk2IDMzLjEwNSA1IDMyIDUgWiBNIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuNjUgMTMgTCAzMS4zNSAxNC4yOCBa''@;'; put 'put ''Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUw''@;'; put 'put ''MSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAz''@;'; put 'put ''MiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1''@;'; put 'put ''LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BvbHlnb24+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzAuMzIgMTMuNDggTCAzMS4zOCAxNC4yOCBMIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42''@;'; put 'put ''MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuMzEgMTMuNDYgQyAyNS4wNSAxMy4xIDIxLjk2OSA5LjIzMyAyMi41NyA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMx''@;'; put 'put ''IEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgMTIuMzQgQyAzMi44OTUgMTMuMDM2IDMxLjYyNiAxMy40MjkgMzAuMzIgMTMuNDggWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIu''@;'; put 'put ''ODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUuNjIgMTUuMjIyIEwgOS42MDIgMjMu''@;'; put 'put ''OTY4IEwgNS41NSAyMC4zODQgTCA2LjYxIDE5LjE4NiBMIDkuMzA4IDIxLjU3MiBMIDE1LjYzNCAxMi4zOCBMIDIyLjM4NCAyMi4zOTUgTCAyNy43MTcgMTUuMzQ4IEwgMjkuNzI0IDE1LjM0OCBMIDIyLjMwOCAyNS4xNDUgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTgg''@;'; put 'put ''MjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43''@;'; put 'put ''ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUg''@;'; put 'put ''MzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5''@;'; put 'put ''LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjcuNDUyIDE1LjM1NyBMIDIyLjM4IDIyLjA2IEwgMTUuNjMgMTIgTCA5LjI4IDIxLjI4IEwgNi43NSAxOS4wNCBMIDUuNDIgMjAuNTMgTCA5LjY1IDI0LjI4IEwgMTUuNjEgMTUuNTYgTCAyMi4yOCAyNS41IEwgMjkuOTU5IDE1LjM1NyBMIDM0''@;'; put 'put ''IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4w''@;'; put 'put ''OTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0''@;'; put 'put ''IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksTC5DbHJTaGFwZVBpZUNoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1''@;'; put 'put ''IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMgMjUgMjMuNDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0gMjMuMjQ3IDIwLjQgTCAxNS40IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEyLjY0''@;'; put 'put ''IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMuMjYxIDIzLjI0NyAyMC40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+PC9w''@;'; put 'put ''YXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgQyAzMiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUg''@;'; put 'put ''NSAzNCA1Ljg5NiAzNCA3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkg''@;'; put 'put ''OSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIy''@;'; put 'put ''LjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAy''@;'; put 'put ''NiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBMIDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40MTggMjEuNDE4IDI3IDE3IDI3IFogTSAyMy4yNDcgMjAuNCBMIDE1LjQgMjAu''@;'; put 'put ''NCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQgMjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMuMjQ3IDIwLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwv''@;'; put 'put ''Y2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1''@;'; put 'put ''Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIg''@;'; put 'put ''OSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBDIDEy''@;'; put 'put ''LjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwgMTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcgMjcgWiBNIDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAxMi42NCAxMy41MTMgMTAuNjAxIDE2LjAxOCAx''@;'; put 'put ''MC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAyNS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBk''@;'; put 'put ''PSJNIDI3IDE3IEwgMTkgMTcgTCAxOSAxNS4zNDUgQyAxOS4wMjEgMTUuMzQ4IDE5LjA0MyAxNS4zNDkgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNi44MzEgMTUuMzU3IEMgMjYuOTQyIDE1Ljg4NyAyNyAxNi40MzcgMjcgMTcg''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0''@;'; put 'put ''IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAx''@;'; put 'put ''MS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuODA3IDEzLjU4MyAxNy41NzEg''@;'; put 'put ''MTUuMTk3IDE5IDE1LjM0NSBMIDE5IDE3IEwgMjcgMTcgQyAyNyAxNi40MzcgMjYuOTQyIDE1Ljg4NyAyNi44MzEgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBD''@;'; put 'put ''IDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4''@;'; put 'put ''IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQu''@;'; put 'put ''Nzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLEwuQ2xyU2hhcGVTY2F0dGVyUGxvdD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIg''@;'; put 'put ''NyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4y''@;'; put 'put ''NTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIu''@;'; put 'put ''NzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMg''@;'; put 'put ''OC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2''@;'; put 'put ''IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAy''@;'; put 'put ''MC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44''@;'; put 'put ''NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTSAyMi45MTIgMjAu''@;'; put 'put ''MzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEz''@;'; put 'put ''IEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMw''@;'; put 'put ''NiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2''@;'; put 'put ''IDM0IDcgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAx''@;'; put 'put ''My42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcg''@;'; put 'put ''MTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4''@;'; put 'put ''OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAy''@;'; put 'put ''My4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAu''@;'; put 'put ''NjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQg''@;'; put 'put ''MjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTgu''@;'; put 'put ''MDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40''@;'; put 'put ''NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAy''@;'; put 'put ''Ljg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUg''@;'; put 'put ''MTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUg''@;'; put 'put ''TCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4''@;'; put 'put ''NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYg''@;'; put 'put ''TCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTku''@;'; put 'put ''NDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3''@;'; put 'put ''NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNIDIy''@;'; put 'put ''LjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5''@;'; put 'put ''MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42''@;'; put 'put ''MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8Y2ly''@;'; put 'put ''Y2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0i''@;'; put 'put ''TSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEz''@;'; put 'put ''LjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAx''@;'; put 'put ''NS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBM''@;'; put 'put ''IDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3''@;'; put 'put ''IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAx''@;'; put 'put ''OS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2''@;'; put 'put ''LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4x''@;'; put 'put ''NzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcu''@;'; put 'put ''NzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4w''@;'; put 'put ''NDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAu''@;'; put 'put ''MzQzIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUu''@;'; put 'put ''MzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAx''@;'; put 'put ''Mi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkg''@;'; put 'put ''MTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2''@;'; put 'put ''MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAy''@;'; put 'put ''NS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4y''@;'; put 'put ''NzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYy''@;'; put 'put ''IDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAu''@;'; put 'put ''NjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYg''@;'; put 'put ''MjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEz''@;'; put 'put ''IEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIw''@;'; put 'put ''LjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0Ljgx''@;'; put 'put ''IDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAz''@;'; put 'put ''MC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUu''@;'; put 'put ''MzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAx''@;'; put 'put ''NS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBM''@;'; put 'put ''IDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3''@;'; put 'put ''IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAx''@;'; put 'put ''OS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2''@;'; put 'put ''LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4x''@;'; put 'put ''NzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcu''@;'; put 'put ''NzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4w''@;'; put 'put ''NDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAu''@;'; put 'put ''MzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEg''@;'; put 'put ''QyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAy''@;'; put 'put ''OC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiBmaWxsLW9wYWNpdHk9IjAiLz4nKSxMLkNsclNoYXBlVGlja0NoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQg''@;'; put 'put ''MjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4''@;'; put 'put ''IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEw''@;'; put 'put ''NSA1IDM0IDUuODk2IDM0IDcgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUg''@;'; put 'put ''TCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIu''@;'; put 'put ''ODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIgTCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIwIDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAyNSBMIDI3LjcyMyAyNSBDIDI4LjAyMyAyNS4w''@;'; put 'put ''MiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAzIDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''IiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1''@;'; put 'put ''IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMg''@;'; put 'put ''MjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIg''@;'; put 'put ''TCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1''@;'; put 'put ''IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBM''@;'; put 'put ''IDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMg''@;'; put 'put ''MjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBD''@;'; put 'put ''IDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0''@;'; put 'put ''LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAz''@;'; put 'put ''NCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQg''@;'; put 'put ''MTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMgMjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAyNS4wMiAyNy43MjMgMjUgTCAyNSAyNSBMIDI1''@;'; put 'put ''IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIwIDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEwIDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMz''@;'; put 'put ''LjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxMLkNs''@;'; put 'put ''clNoYXBlQmVsbEN1cnZlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyOUgzQTEsMSwwLDEsMSwzLDI3SDMzQTEsMSwwLDEsMSwzMywyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNWgtLjYyYTguMTEsOC4xMSww''@;'; put 'put ''LDAsMS04LTYuNjdDMjMuNjIsMTQuNDQsMjEuODksNy45NCwxOCw3Ljk0cy01LjY5LDYuNTEtNi4zOCwxMC4zOWE4LjExLDguMTEsMCwwLDEtOCw2LjY1SDNhMSwxLDAsMSwxLDAtMmguNkE2LjExLDYuMTEsMCwwLDAsOS42LDE4YzEuNDEtNy44OCw0LjMtMTIsOC4zNS0xMnM2LjkzLDQuMTYs''@;'; put 'put ''OC4zMywxMmE2LjExLDYuMTEsMCwwLDAsNiw1SDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxMLkNoYXJ0U2hhcGVzPXsiYXhpcy1jaGFydCI6TC5DbHJTaGFwZUF4aXNDaGFydCwiYmFyLWNoYXJ0IjpMLkNsclNoYXBl''@;'; put 'put ''QmFyQ2hhcnQsImJ1YmJsZS1jaGFydCI6TC5DbHJTaGFwZUJ1YmJsZUNoYXJ0LCJjbG91ZC1jaGFydCI6TC5DbHJTaGFwZUNsb3VkQ2hhcnQsImN1cnZlLWNoYXJ0IjpMLkNsclNoYXBlQ3VydmVDaGFydCwiZ3JpZC1jaGFydCI6TC5DbHJTaGFwZUdyaWRDaGFydCwibGluZS1jaGFydCI6TC5D''@;'; put 'put ''bHJTaGFwZUxpbmVDaGFydCwicGllLWNoYXJ0IjpMLkNsclNoYXBlUGllQ2hhcnQsInRpY2stY2hhcnQiOkwuQ2xyU2hhcGVUaWNrQ2hhcnQsInNjYXR0ZXItcGxvdCI6TC5DbHJTaGFwZVNjYXR0ZXJQbG90LCJib3gtcGxvdCI6TC5DbHJTaGFwZUJveFBsb3QsImhlYXQtbWFwIjpMLkNsclNo''@;'; put 'put ''YXBlSGVhdE1hcCwiYmVsbC1jdXJ2ZSI6TC5DbHJTaGFwZUJlbGxDdXJ2ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuQ2hhcnRTaGFwZXMsImFuYWx5dGljcyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNoYXJ0U2hhcGVzWyJsaW5lLWNoYXJ0Il0pKSwidW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTC5DaGFydFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIjpmdW5jdGlvbihKZSxMLGdlKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuQ29tbWVyY2VTaGFwZXM9TC5DbHJTaGFwZUZhY3Rvcnk9TC5DbHJTaGFwZUVtcGxveWVlPUwuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPUwuQ2xyU2hhcGVSdWJsZT1MLkNsclNoYXBlUGVzbz1MLkNs''@;'; put 'put ''clNoYXBlQ29pbkJhZz1MLkNsclNoYXBlQml0Y29pbj1MLkNsclNoYXBlWWVuPUwuQ2xyU2hhcGVXb249TC5DbHJTaGFwZVJ1cGVlPUwuQ2xyU2hhcGVQb3VuZD1MLkNsclNoYXBlRUNoZWNrPUwuQ2xyU2hhcGVEb2xsYXJCaWxsPUwuQ2xyU2hhcGVCYW5rPUwuQ2xyU2hhcGVDcmVkaXRDYXJk''@;'; put 'put ''PUwuQ2xyU2hhcGVEb2xsYXI9TC5DbHJTaGFwZUV1cm89TC5DbHJTaGFwZVN0b3JlPUwuQ2xyU2hhcGVXYWxsZXQ9TC5DbHJTaGFwZVNob3BwaW5nQ2FydD1MLkNsclNoYXBlUGlnZ3lCYW5rPUwuQ2xyU2hhcGVTaG9wcGluZ0JhZz1MLkNsclNoYXBlQ2FsY3VsYXRvcj12b2lkIDA7dmFyIEI9''@;'; put 'put ''Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtMLkNsclNoYXBlQ2FsY3VsYXRvcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk04LDMyVjRIMjhWMzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDhIMjUuNjdWNkgxMWExLDEsMCwwLDAtMSwxdjQuNjdoMloiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBwb2ludHM9IjEyIDE2IDEwIDE2IDEwIDE4IDE0IDE4''@;'; put 'put ''IDE0IDE0IDEyIDE0IDEyIDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNCAxNiAyMiAxNiAyMiAxOCAyNiAxOCAyNiAxNCAyNCAxNCAyNCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHBvaW50cz0iMTggMTYgMTYgMTYgMTYgMTggMjAgMTggMjAgMTQgMTggMTQgMTggMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBwb2ludHM9''@;'; put 'put ''IjEyIDIyIDEwIDIyIDEwIDI0IDE0IDI0IDE0IDIwIDEyIDIwIDEyIDIyIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgcG9pbnRzPSIyNCAyMiAyMiAyMiAyMiAyNCAyNiAyNCAyNiAyMCAyNCAyMCAyNCAyMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHBvaW50cz0iMTggMjIgMTYgMjIgMTYgMjQgMjAgMjQgMjAgMjAgMTggMjAgMTggMjIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC05IiBwb2ludHM9IjEyIDI4IDEwIDI4IDEwIDMwIDE0IDMwIDE0IDI2IDEyIDI2IDEyIDI4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHBvaW50cz0iMjQgMjggMjIgMjggMjIgMzAgMjYg''@;'; put 'put ''MzAgMjYgMjYgMjQgMjYgMjQgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgcG9pbnRzPSIxOCAyOCAxNiAyOCAxNiAzMCAyMCAzMCAyMCAyNiAxOCAyNiAxOCAyOCIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMiwyOEgxMFYyNmgyWm0wLTZIMTBWMjBoMlptMC02SDEwVjE0aDJabTcsMTJIMTdWMjZo''@;'; put 'put ''MlptMC02SDE3VjIwaDJabTAtNkgxN1YxNGgyWm03LDEySDI0VjI2aDJabTAtNkgyNFYyMGgyWm0wLTZIMjRWMTRoMlptMC03SDEwVjVIMjZaIi8+JyksTC5DbHJTaGFwZVNob3BwaW5nQmFnPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMjUsMTJWOS4wNWE3LDcsMCwxLDAtMTQsMHY3YTEsMSwwLDAsMCwyLDBWMTRoOFYxMkgxM1Y5LjA1YTUsNSwwLDEsMSwxMCwwVjE2YTEsMSwwLDEsMCwyLDBWMTRoNVYzMkg2VjE0SDlWMTJINFYzMi4wOUExLjkxLDEuOTEsMCwwLDAsNS45MSwzNEgzMC4wOUExLjkx''@;'; put 'put ''LDEuOTEsMCwwLDAsMzIsMzIuMDlWMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTMsOS4yMmE1LDUsMCwxLDEsMTAsMFYxMmgyVjkuMjJhNyw3LDAsMSwwLTE0LDBWMTJoMloiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNSwxMnYzLjFhMSwxLDAsMSwxLTIsMFYxMkgxM3YzLjFhMSwxLDAsMCwxLTIsMFYxMkg0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMloiLz4nKSxMLkNsclNoYXBlUGlnZ3lCYW5rPSgwLEUu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNzIsMTAuNDdhMTEuNjUsMTEuNjUsMCwwLDAtNi4zMS41MkEuOC44LDAsMSwwLDE0LDEyLjQ4LDEwLjExLDEwLjExLDAsMCwxLDE5LjQ0LDEyYS44LjgsMCwxLDAsLjI4''@;'; put 'put ''LTEuNTdaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjUuMzgiIGN5PSIxNi43MSIgcj0iMS4zNiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMiIGQ9Ik0zNS41MSwxOC42M2ExLDEsMCwwLDAtLjg0LS40NCwzLjQyLDMuNDIsMCwwLDEtMi4wOS0xLjEyLDE3LjM1LDE3LjM1LDAsMCwxLTIuNjMtMy43OGwyLjg4LTQuNUExLjg5LDEuODksMCwwLDAsMzMsN2ExLjc3LDEuNzcsMCwwLDAtMS4zMy0xLDEwLjEyLDEwLjEyLDAsMCwwLTUu''@;'; put 'put ''MzkuNzUsMTIuNzIsMTIuNzIsMCwwLDAtMi43MiwxLjYzLDE2Ljk0LDE2Ljk0LDAsMCwwLTUuMTYtMS4zOUMxMS4zMSw2LjMsNC44MywxMC45LDQsMTdINGEyLjU2LDIuNTYsMCwwLDEtMS4zOC0xLjUzLDEuODEsMS44MSwwLDAsMSwuMTQtMS40LDEuMTksMS4xOSwwLDAsMSwuNDMtLjQzLDEu''@;'; put 'put ''MDgsMS4wOCwwLDAsMC0xLjEyLTEuODVBMy4zMSwzLjMxLDAsMCwwLC45MSwxM2E0LDQsMCwwLDAtLjMzLDMuMDhBNC43Niw0Ljc2LDAsMCwwLDMsMTguOTVsLjkyLjQ2YTE3LjU4LDE3LjU4LDAsMCwwLDEuODIsN2wuMTcuMzhBMjMsMjMsMCwwLDAsOS4yLDMxLjg4YTEsMSwwLDAsMCwuNzUu''@;'; put 'put ''MzRoNC41MmExLDEsMCwwLDAsLjkyLTEuMzhMMTUsMjkuOTRsMS4xOC4xM2EyMC4zMywyMC4zMywwLDAsMCw0LDBjLjM3LjYuNzcsMS4yLDEuMjEsMS43OWExLDEsMCwwLDAsLjguNDFoNC4zNGExLDEsMCwwLDAsLjkyLTEuMzljLS4xNy0uNC0uMzQtLjgzLS40Ny0xLjItLjE4LS41My0uMzIt''@;'; put 'put ''MS0uNDMtMS40NUExMy4xOCwxMy4xOCwwLDAsMCwyOS41NiwyNmExMi41LDEyLjUsMCwwLDAsMywwLDEsMSwwLDAsMCwuNzgtLjYybDIuMjYtNS44MUExLDEsMCwwLDAsMzUuNTEsMTguNjNabS0zLjc4LDUuNDRhMTEuMzcsMTEuMzcsMCwwLDEtMi4zNS0uMTFoMGE4LjIsOC4yLDAsMCwxLTIu''@;'; put 'put ''NTMtLjg3LDEsMSwwLDAsMC0uOTMsMS43NywxMS43MiwxMS43MiwwLDAsMCwxLjI5LjU4LDgsOCwwLDAsMS0xLjgsMS4xNmwtMS4wNi40OHMuNDksMi4xOS44MiwzLjE2SDIyLjc5Yy0uMjQtLjM0LTEuNDUtMi4zNi0xLjQ1LTIuMzZsLS42Ny4wOWExOC41MywxOC41MywwLDAsMS00LjI1LjEy''@;'; put 'put ''Yy0uNjYtLjA2LTEuNzYtLjItMi42Mi0uMzVsLTEuNTUtLjI3cy42MywyLjQzLjc1LDIuNzR2MEgxMC40MkEyMC41NywyMC41NywwLDAsMSw3Ljc2LDI2bC0uMTgtLjM5QTE0LjYyLDE0LjYyLDAsMCwxLDYsMTcuNDhjLjU0LTUuMTksNi4xMi05LjExLDEyLjE5LTguNTRhMTUuNDcsMTUuNDcs''@;'; put 'put ''MCwwLDEsNS4wOCwxLjQ4bC42Mi4yOS41LS40N0ExMC4yOSwxMC4yOSwwLDAsMSwyNyw4LjU0YTguMjUsOC4yNSwwLDAsMSw0LS42NWwtMy4zOCw1LjI5LjI1LjVoMGEyMS4xNiwyMS4xNiwwLDAsMCwzLjMxLDQuODQsNi40OSw2LjQ5LDAsMCwwLDIuMTQsMS4zOVoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNSwxOC44N0E1LjgzLDUuODMsMCwwLDEsMzMsMTcuNjFhMjEuNjMsMjEuNjMsMCwwLDEtMy4yOS00Ljg0bDMuMzktNS4yOWEuOS45LDAsMCwwLS41NC0xLjM4LDkuNjcsOS42NywwLDAsMC01LjEzLjcy''@;'; put 'put ''LDEyLDEyLDAsMCwwLTMuMTMsMkExNy4zNywxNy4zNywwLDAsMCwxOC42LDcuMTVDMTEuOCw2LjUyLDUuMjcsMTAuOSw0LjU0LDE3bC0uMTQtLjA3QTIuNzYsMi43NiwwLDAsMSwyLjksMTUuMjlhMiwyLDAsMCwxLC4xNS0xLjU1LDEuMzIsMS4zMiwwLDAsMSwuNDctLjQ4LDEuMDgsMS4wOCww''@;'; put 'put ''LDEsMC0xLjEyLTEuODUsMy40NSwzLjQ1LDAsMCwwLTEuMjMsMS4yNUE0LjE2LDQuMTYsMCwwLDAsLjg0LDE1LjlhNSw1LDAsMCwwLDIuNTcsM2wxLC41NGExOC42MiwxOC42MiwwLDAsMCwyLDcuMywyMywyMywwLDAsMCwzLDQuNzksMSwxLDAsMCwwLC44LjM4aDMuNjFhLjUyLjUyLDAsMCww''@;'; put 'put ''LC40LS43NUwxNCwzMC4zOGExMSwxMSwwLDAsMS0uMzMtMS4xOGMuOTEuMTYsMi4wOC4zMSwyLjg3LjM4YTIwLjA3LDIwLjA3LDAsMCwwLDMuMTIsMGMuMzkuNy43OSwxLjMzLDEuMTUsMS44NWEuOTMuOTMsMCwwLDAsLjc3LjQxaDMuMTFhLjY1LjY1LDAsMCwwLC42MS0uODVjLS4yMy0uNzQt''@;'; put 'put ''LjUzLTEuNzUtLjcxLTIuMzdhMTUuOSwxNS45LDAsMCwwLDMuNzUtMS43NmMuMTYtLjExLjMyLS4yNi40OC0uMzlhMTMuNzcsMTMuNzcsMCwwLDEtMi40Mi0xLC44LjgsMCwwLDEsLjc0LTEuNDIsMTEuNjQsMTEuNjQsMCwwLDAsMy4xOCwxLjEsMTMuMzEsMTMuMzEsMCwwLDAsMi42OC4xMiwx''@;'; put 'put ''LDEsMCwwLDAsLjktLjY2bDEuNzMtNC40NEExLDEsMCwwLDAsMzUsMTguODdaTTEzLjc5LDExLjU5YS44Ni44NiwwLDAsMS0uMy4wNS44NS44NSwwLDAsMS0uMy0xLjY0LDEyLjQxLDEyLjQxLDAsMCwxLDYuNjktLjU1Ljg1Ljg1LDAsMSwxLS4zLDEuNjdBMTAuNzUsMTAuNzUsMCwwLDAsMTMu''@;'; put 'put ''NzksMTEuNTlabTEyLjUyLDYuMTJhMS40NCwxLjQ0LDAsMSwxLDEuNDQtMS40NEExLjQ0LDEuNDQsMCwwLDEsMjYuMzIsMTcuNzJaIi8+JyksTC5DbHJTaGFwZVNob3BwaW5nQ2FydD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjA4''@;'; put 'put ''LDUuMzdBMSwxLDAsMCwwLDMyLjMxLDVIMTEuNDlsLjY1LDJIMzFMMjguMzMsMTloLTE1TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5LDE0LjVMOS45NSwyMS40OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1''@;'; put 'put ''LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDMuMTctMTRBMSwxLDAsMCwwLDMzLjA4LDUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIg''@;'; put 'put ''cj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwLjcxIDcgMjEuODcgNSAxMS40OSA1IDEyLjE0IDcgMjAuNzEgNyIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMTUsMTUuNCwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42MmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1''@;'; put 'put ''LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xM2ExLDEsMCwwLDAsMS0uNzhsMS4wOS00LjgyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIuNTcsN2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDExLjQ5bC42NSwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTMwLDEzLjVsLS40MiwwTDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUsMjEuNDhsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZI''@;'; put 'put ''MjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjU3LTYuOTFBNy41MSw3LjUxLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iMjkuNSIg''@;'; put 'put ''cj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''My4xLDYuMzlBMSwxLDAsMCwwLDMyLjMxLDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEy''@;'; put 'put ''LDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMy4yLTEzQTEsMSwwLDAsMCwzMy4xLDYuMzlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI2LjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDkuMjFMOC43Niw0LjU3YTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1''@;'; put 'put ''LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuMTktNC44NFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2''@;'; put 'put ''LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg5LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0LjQ3TDkuOTUsMjEuNDlsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwy''@;'; put 'put ''Ljc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwxLjcxLTdBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVXYWxsZXQ9KDAsRS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgzMVY5YTEsMSwwLDAsMC0xLTFINmExLDEsMCwwLDEtMS0uODJWNi44MkExLDEsMCwwLDEsNiw2SDI5LjU4YTEsMSwwLDAsMCwwLTJINkEzLDMsMCwwLDAsMyw3YTMuMDgsMy4w''@;'; put 'put ''OCwwLDAsMCwwLC4zNlYyNy45M0E0LjEsNC4xLDAsMCwwLDcuMTMsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNWgxYTEsMSwwLDAsMCwxLTFWMTZBMSwxLDAsMCwwLDMyLDE1Wk0yOSwzMEg3LjEzQTIuMTEsMi4xMSwwLDAsMSw1LDI3LjkzVjkuODhBMy4xMSwzLjExLDAsMCwwLDYsMTBIMjl2NUgy''@;'; put 'put ''MmE1LDUsMCwwLDAsMCwxMGg3Wm0yLTdIMjJhMywzLDAsMCwxLDAtNkgzMVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMy4wMSIgY3k9IjIwIiByPSIxLjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi45NCwxNEgzMVY5YTEsMSwwLDAsMC0xLTFINkExLDEsMCwwLDEsNSw3SDVWN0ExLDEsMCwwLDEsNiw2SDI5LjZhMSwxLDAsMSwwLDAtMkg2QTIuOTQsMi45NCwwLDAsMCwzLDYuODh2MjFBNC4xMyw0LjEzLDAsMCwwLDcu''@;'; put 'put ''MTUsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNmgxLjk0YS45My45MywwLDAsMCwxLS45MXYtMTBBMS4wOCwxLjA4LDAsMCwwLDMyLjk0LDE0Wk0zMiwyNGwtOC41OCwwYTMuODcsMy44NywwLDAsMS0zLjczLTQsMy44NywzLjg3LDAsMCwxLDMuNzMtNEwzMiwxNloiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjI0LjA0IiBjeT0iMTkuOTIiIHI9IjEuNSIvPicpLEwuQ2xyU2hhcGVTdG9yZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTI4LDMwSDE2VjIySDE0djhIOFYyMkg2djhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjIySDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAs''@;'; put 'put ''MCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiwwLDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwuNDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQuNzIsMCwwLDAsMy0xLjA3LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAs''@;'; put 'put ''MCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdBMiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0zMCwxOC4xM0EyLjY4LDIuNjgsMCwwLDEsMjcuODIsMTdMMjcsMTUuODgsMjYuMTksMTdhMi43MSwyLjcxLDAs''@;'; put 'put ''MCwxLTQuMzcsMEwyMSwxNS44OCwyMC4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDE1LDE1Ljg4LDE0LjE5LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OCw4LjE4LDE3QTIuNjgsMi42OCwwLDAsMSw2LDE4LjEzYTIuNjQsMi42NCwwLDAsMS0yLS44OFYxNC4xN0w4LjA4''@;'; put 'put ''LDZIMjcuOTJMMzIsMTQuMTZ2LjY3bDAsMi4zOUEyLjY3LDIuNjcsMCwwLDEsMzAsMTguMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjgsMzBIMTZWMjJIMTR2OEg4VjIySDZ2OGEyLDIsMCwwLDAsMiwySDI4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNzksMTMuMjcsMjkuNzEsNS4xMUEyLDIsMCwwLDAsMjcuOTIsNEg4LjA4QTIsMiwwLDAsMCw2LjI5LDUuMTFMMi4yMSwxMy4yN2EyLDIs''@;'; put 'put ''MCwwLDAtLjIxLjl2My4wOGEyLDIsMCwwLDAsLjQ2LDEuMjhBNC42Nyw0LjY3LDAsMCwwLDYsMjAuMTNhNC43Miw0LjcyLDAsMCwwLDMtMS4wNyw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjcyLDQuNzIsMCwwLDAsNi41My0u''@;'; put 'put ''NTJBMiwyLDAsMCwwLDM0LDE3LjI2VjE0LjE3QTIsMiwwLDAsMCwzMy43OSwxMy4yN1pNMTUsMTQuNHYxLjUyTDE0LjE4LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OFYxNC40TDExLjU5LDZIMTZabTEyLDEuNDhMMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwx''@;'; put 'put ''NS44OGwwLDBWMTQuNEwyMCw2aDQuNDVMMjcsMTQuNFoiLz4nKSxMLkNsclNoYXBlRXVybz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ4LDI4LjQ5YTEsMSwwLDAsMC0xLjM4LS4zMkExMiwxMiwwLDAs''@;'; put 'put ''MSwxMi40NSwyMkgyNC4xNmExLDEsMCwwLDAsMC0ySDExLjkzYTExLjE2LDExLjE2LDAsMCwxLDAtNEgyNC4xNmExLDEsMCwwLDAsMC0ySDEyLjQ1QTEyLDEyLDAsMCwxLDMwLjA2LDcuOGExLDEsMCwwLDAsMS4wNi0xLjdBMTQsMTQsMCwwLDAsMTAuMzQsMTRIMy41NGExLDEsMCwxLDAsMCwy''@;'; put 'put ''SDkuOTFhMTQsMTQsMCwwLDAtLjE2LDIsMTQsMTQsMCwwLDAsLjE2LDJIMy41NGExLDEsMCwxLDAsMCwyaDYuOGExNCwxNCwwLDAsMCwyMC44Myw3Ljg3QTEsMSwwLDAsMCwzMS40OCwyOC40OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNDIsMjUuMTZBMTAuODgsMTAuODgsMCwwLDEsOS4yMywyMUg1Ljg0YTEsMSwwLDAsMSwwLTJoM2MwLS4zNS0uMDUtLjcxLS4wNS0xLjA3czAtLjYzLDAtLjkzaC0zYTEsMSwwLDAsMSwwLTJIOS4x''@;'; put 'put ''OUExMC44NiwxMC44NiwwLDAsMSwyNS4zOCw4LjY5YTEuMjUsMS4yNSwwLDAsMS0xLjMyLDIuMTJBOC4zNiw4LjM2LDAsMCwwLDExLjgyLDE1aDkuMzZhMSwxLDAsMCwxLDAsMkgxMS4zM2E3LjcyLDcuNzIsMCwwLDAsMCwyaDkuODJhMSwxLDAsMCwxLDAsMkgxMS44N2E4LjM2LDguMzYsMCww''@;'; put 'put ''LDAsMTIuMjIsNCwxLjI1LDEuMjUsMCwxLDEsMS4zMywyLjEyWiIvPicpLEwuQ2xyU2hhcGVEb2xsYXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNiwyMS4xNWE2LjkxLDYuOTEsMCwwLDAtNC4zOC0zLjMy''@;'; put 'put ''QTI2LDI2LDAsMCwwLDE5LDE3LjE5VjguMTJBMTAuMDUsMTAuMDUsMCwwLDEsMjMuODYsMTBhMSwxLDAsMCwwLDEuMzMtMS41QTExLjc1LDExLjc1LDAsMCwwLDE5LDYuMVYzYTEsMSwwLDAsMC0yLDBWNmMtNC40LjEtNi44MywyLjI5LTcuNTcsNC4xOEE1LjU2LDUuNTYsMCwwLDAsMTEuNjYs''@;'; put 'put ''MTcsMTMuMiwxMy4yLDAsMCwwLDE3LDE4Ljg0VjI4YTEyLjMsMTIuMywwLDAsMS03LjE0LTIuNzRBMSwxLDAsMSwwLDguNDksMjYuNywxNC4wOSwxNC4wOSwwLDAsMCwxNywzMHYzYTEsMSwwLDAsMCwyLDBWMzBjMi44Mi0uMTksNi4wNy0xLjA5LDcuMy00Ljc2QTUuMzMsNS4zMywwLDAsMCwy''@;'; put 'put ''NiwyMS4xNVpNMTIuNzksMTUuMzJhMy41NywzLjU3LDAsMCwxLTEuNDktNC4zOUMxMS40MSwxMC42MywxMi41Myw4LjEyLDE3LDh2OC44QTEwLjcsMTAuNywwLDAsMSwxMi43OSwxNS4zMlpNMjQuNCwyNC41NmMtLjcyLDIuMTQtMi4zMiwzLjE3LTUuNCwzLjRWMTkuMjNjLjY0LjE0LDEuMy4z''@;'; put 'put ''LDIsLjUxYTUsNSwwLDAsMSwzLjE5LDIuMzJBMy4zNCwzLjM0LDAsMCwxLDI0LjQsMjQuNTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2''@;'; put 'put ''LDAsMCwwLDE4LDJabTcuNjUsMjEuNTljLTEsMy0zLjYxLDMuODQtNS45LDR2MmExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjcuNTlBMTEuNDcsMTEuNDcsMCwwLDEsMTEsMjVhMS4yNSwxLjI1LDAsMSwxLDEuNzEtMS44Myw5LjExLDkuMTEsMCwwLDAsNC41NSwxLjk0VjE4LjgzYTkuNjMsOS42''@;'; put 'put ''MywwLDAsMS0zLjczLTEuNDEsNC44LDQuOCwwLDAsMS0xLjkxLTUuODRjLjU5LTEuNTEsMi40Mi0zLjIzLDUuNjQtMy41MVY2LjI1YTEuMjUsMS4yNSwwLDAsMSwyLjUsMFY4LjExYTkuNjcsOS42NywwLDAsMSw0LjksMkExLjI1LDEuMjUsMCwwLDEsMjMsMTEuOTVhNy4xNCw3LjE0LDAsMCww''@;'; put 'put ''LTMuMjQtMS4zMXY2LjEzYy42LjEzLDEuMjQuMjcsMS45MS40OGE1Ljg1LDUuODUsMCwwLDEsMy42OSwyLjgyQTQuNjQsNC42NCwwLDAsMSwyNS42NSwyMy41OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC45Miwx''@;'; put 'put ''OS42NGMtLjQtLjEyLS43OS0uMjItMS4xNy0uM3Y1Ljc2YzItLjIsMy4wNy0uOSwzLjUzLTIuM2EyLjE1LDIuMTUsMCwwLDAtLjE1LTEuNThBMy40OSwzLjQ5LDAsMCwwLDIwLjkyLDE5LjY0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMyIgZD0iTTEzLjk0LDEyLjQ4YTIuMzEsMi4zMSwwLDAsMCwxLDIuODcsNi41Myw2LjUzLDAsMCwwLDIuMzIuOTJWMTAuNTVDMTUuMTYsMTAuOCwxNC4xOSwxMS44NCwxMy45NCwxMi40OFoiLz4nKSxMLkNsclNoYXBlQ3JlZGl0Q2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMiwwLDEySDRMNCw4Wk00LDI4VjI0SDMydjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzMCIgcng9IjAuOTYiIHJ5PSIwLjk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikgcm90YXRlKDkwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMThINFYyMEgzMloiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUJhbms9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMuNSwxMy41NiwxOCw1LjIzbDE0LjUsOC4zM2ExLDEsMCwwLDAsMS0xLjczTDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1LjAyIiB5PSIxNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMs''@;'; put 'put ''MjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjE1LDExLjU4aDMuMjFMMTguNjUsNy43MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIx''@;'; put 'put ''bDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgyOFYxNy42M0gyNlYyNUgxOVYxNy42M0gxN1YyNUgxMFYxNy42M0g4VjI1SDVBMSwx''@;'; put 'put ''LDAsMCwwLDQsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0iMjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yMi4xNSwxMS41OGgzLjIxTDE4LjY1LDcuNzJhLjguOCwwLDAsMC0uOCwwbC02LjcyLDMuODZoMy4yMWwzLjktMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTIyLjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjIuNzcsOEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTQsMTMuMjRsLjU2LjMyYTEsMSwwLDAsMCwxLjQ0LTEuMTlBNy40NSw3LjQ1LDAsMCwxLDMxLjk0LDEzLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3''@;'; put 'put ''LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwy''@;'; put 'put ''SDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsMTVBMy41MSwzLjUxLDAsMCwxLDIwLDE0SDV2MkgzMVYxNVoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDYsOS43NGwuNjgtMS4xNy0xLjQ5LS44NWEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0LDEuMS42M0MxOS4zOSw5Ljg5LDE5LjQyLDku''@;'; put 'put ''ODEsMTkuNDYsOS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMDUsNS4yNSwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjEuMDUsN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5''@;'; put 'put ''LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMuNSwxMy41Niw1LDEyLjY4VjE2SDMxVjEyLjcx''@;'; put 'put ''bDEuNDguODVhMSwxLDAsMCwwLDEtMS43M0wxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczWk0xNy44NSw3LjExYS44LjgsMCwwLDEsLjgsMEwyNS4zNywxMUgyMi4xNWwtMy45LTIuMjRMMTQuMzUsMTFIMTEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNIMjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcuNjNIOFYyNUg1LjE1QTEuMTUsMS4xNSwwLDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAs''@;'; put 'put ''MCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjg1LDI3SDMydi0uODVBMS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYz''@;'; put 'put ''SDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4xNSwwLDAsMCwzMi44NSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzksMTFIMjIuMTVsLTMuOS0yLjI0TDE0LjM1LDExSDExLjE0bDYuNzItMy44NmEuOC44LDAsMCwxLC44LDBsNSwyLjg3QTcuNDUsNy40NSwwLDAsMSwy''@;'; put 'put ''Mi41LDZjMC0uMTYsMC0uMzIsMC0uNDhMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M0w1LDEyLjY4VjE2SDMxVjEzLjQyQTcuNTMsNy41MywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwxMy4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi44NSwyN0gzMnYtLjg1QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42''@;'; put 'put ''M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCwwLDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1LDEuMTUsMCwwLDAsMzIuODUsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNWEzLjUxLDMuNTEsMCwwLDEtMy01LjI2bC4xNC0uMjQtMS4zNS0uNzhMMTQuMzUsMTFIMTEuMTRsNi43Mi0zLjg2YS44LjgsMCwwLDEsLjgsMGwxLjc1LDEsMS42NS0yLjg2TDE4LDIu''@;'; put 'put ''OTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMNSwxMi42OFYxNkgzMVYxNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxMLkNsclNoYXBl''@;'; put 'put ''RG9sbGFyQmlsbD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCw2YTQuMjUs''@;'; put 'put ''NC4yNSwwLDAsMS0zLjktNEgzMlptMCwxLjYydjQuODNBNS44Nyw1Ljg3LDAsMCwwLDI2LjQ5LDI2aC0xN0E1Ljg3LDUuODcsMCwwLDAsNCwyMC40NFYxNS42QTUuODcsNS44NywwLDAsMCw5LjUxLDEwaDE3QTUuODcsNS44NywwLDAsMCwzMiwxNS42Wk03LjksMTBBNC4yNSw0LjI1LDAsMCwx''@;'; put 'put ''LDQsMTRWMTBaTTQsMjIuMDZBNC4yNSw0LjI1LDAsMCwxLDcuOSwyNkg0Wk0yOC4xLDI2QTQuMjUsNC4yNSwwLDAsMSwzMiwyMi4wNlYyNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTAuODVjLTMuNDcs''@;'; put 'put ''MC02LjMsMy4yMS02LjMsNy4xNXMyLjgzLDcuMTUsNi4zLDcuMTUsNi4zLTMuMjEsNi4zLTcuMTVTMjEuNDcsMTAuODUsMTgsMTAuODVabTAsMTIuNjljLTIuNTksMC00LjctMi40OS00LjctNS41NXMyLjExLTUuNTUsNC43LTUuNTUsNC43LDIuNDksNC43LDUuNTVTMjAuNTksMjMuNTUsMTgs''@;'; put 'put ''MjMuNTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk00LDI2VjIxLjE1QTUuMTgsNS4x''@;'; put 'put ''OCwwLDAsMSw4Ljc5LDI2Wk00LDE0Ljg1VjEwSDguNzlBNS4xOCw1LjE4LDAsMCwxLDQsMTQuODVaTTE4LDI1LjE1Yy0zLjQ3LDAtNi4zLTMuMjEtNi4zLTcuMTVzMi44My03LjE1LDYuMy03LjE1LDYuMywzLjIxLDYuMyw3LjE1UzIxLjQ3LDI1LjE1LDE4LDI1LjE1Wk0zMiwyNkgyNy4yNUE1''@;'; put 'put ''LjE4LDUuMTgsMCwwLDEsMzIsMjEuMTVabTAtMTEuMTVBNS4xOCw1LjE4LDAsMCwxLDI3LjI1LDEwSDMyWiIvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMTgiIHJ4PSI0IiByeT0iNC43MiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVFQ2hlY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjE1IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiB4PSIyMCIgeT0iMjEiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTM0LDhIMTIuOTNhOC4zNSw4LjM1LDAsMCwxLC43OSwySDMzVjI2SDNWMTku''@;'; put 'put ''OWE3LjgzLDcuODMsMCwwLDEtMi0xLjM0VjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik02LjU3LDE4LjY4YTYuMTcsNi4x''@;'; put 'put ''NywwLDAsMCw0LjMyLTEuNTksMS4yLDEuMiwwLDAsMCwuMzYtLjg0LDEuMDgsMS4wOCwwLDAsMC0xLjA5LTEuMTEsMSwxLDAsMCwwLS43MS4yNSw0LjMyLDQuMzIsMCwwLDEtMi44NCwxLDMuMzUsMy4zNSwwLDAsMS0zLjQ2LTNoNy41M0ExLjI5LDEuMjksMCwwLDAsMTIsMTIuMDYsNS42OCw1''@;'; put 'put ''LjY4LDAsMCwwLDYuMjcsNi4xNCw2LDYsMCwwLDAsLjQsMTIuNHYwQTYsNiwwLDAsMCw2LjU3LDE4LjY4Wk02LjI1LDguMzljMS44MiwwLDIuODcsMS4zOSwzLDMuMTZIMy4xM0MzLjM4LDkuNjksNC41Niw4LjM5LDYuMjUsOC4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCw4SDEyLjkxYTguNjEsOC42MSwwLDAsMSwxLjIsNC4zOSw4LDgsMCwwLDEtNy43OCw4LjI3QTcuNTEsNy41MSwwLDAsMSwxLDE4LjQxVjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4Wk0z''@;'; put 'put ''MSwyM0gyMFYyMUgzMVptMC01SDE2VjE2SDMxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYuNTcsMTguNjhBNiw2LDAsMCwxLC40LDEyLjQ0djBBNiw2LDAsMCwxLDYuMjcsNi4xNCw1LjY4LDUuNjgsMCwwLDEsMTIs''@;'; put 'put ''MTIuMDZhMS4yOSwxLjI5LDAsMCwxLTEuMywxLjMySDMuMTVhMy4zNSwzLjM1LDAsMCwwLDMuNDYsMyw0LjMyLDQuMzIsMCwwLDAsMi44NC0xLDEsMSwwLDAsMSwuNzEtLjI1LDEuMDgsMS4wOCwwLDAsMSwxLjA5LDEuMTEsMS4yLDEuMiwwLDAsMS0uMzYuODRBNi4xNyw2LjE3LDAsMCwxLDYu''@;'; put 'put ''NTcsMTguNjhaTTkuMywxMS41NWMtLjE4LTEuNzctMS4yMy0zLjE2LTMtMy4xNnMtMi44NywxLjMtMy4xMiwzLjE2WiIvPicpLEwuQ2xyU2hhcGVQb3VuZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3Ljks''@;'; put 'put ''MzBIMTMuNEE4LjQ1LDguNDUsMCwwLDAsMTUsMjQuNjVWMjFoNC4zMWExLDEsMCwwLDAsMC0ySDE1VjExLjMxQTUuMjQsNS4yNCwwLDAsMSwyMC4yMSw2LDUuMTksNS4xOSwwLDAsMSwyNCw3LjczYTEsMSwwLDAsMCwxLjQ4LTEuMzVBNy4xOSw3LjE5LDAsMCwwLDEzLDExLjMxVjE5SDguNzJh''@;'; put 'put ''MSwxLDAsMSwwLDAsMkgxM3YzLjY1QzEzLDI5LjM4LDEwLjEyLDMwLDEwLDMwYTEsMSwwLDAsMCwuMTcsMkgyNy45YTEsMSwwLDEsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LjUsMjUuOTJIMTEuNzRhMS4yNSwxLjI1LDAsMCwxLS4yMi0yLjQ4Yy4xNSwwLDEuNzItLjQ5LDEuNzItMy41NFYxOWgtMi41YTEsMSwwLDAsMSwwLTJoMi41VjExLjg4YTUuODUsNS44NSwwLDAsMSw1LjcyLTYsNS42Myw1LjYzLDAsMCwxLDQuMjEs''@;'; put 'put ''MS45NEExLjI1LDEuMjUsMCwxLDEsMjEuMyw5LjUxLDMuMDgsMy4wOCwwLDAsMCwxOSw4LjQyYTMuMzUsMy4zNSwwLDAsMC0zLjIyLDMuNDZWMTdoM2ExLDEsMCwwLDEsMCwyaC0zdjIuOUE3LjY1LDcuNjUsMCwwLDEsMTUsMjUuNDJIMjQuNWExLjI1LDEuMjUsMCwwLDEsMCwyLjVaIi8+Jyks''@;'; put 'put ''TC5DbHJTaGFwZVJ1cGVlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsOEgyNC4xNEE3LjUyLDcuNTIsMCwwLDAsMjIuNiw2SDI4YTEsMSwwLDAsMCwwLTJIMTBhMSwxLDAsMCwwLDAsMmg3LjU1YTUuNDIs''@;'; put 'put ''NS40MiwwLDAsMSw0LjIsMkgxMGExLDEsMCwwLDAsMCwySDIyLjc5QTUuNTQsNS41NCwwLDAsMSwyMywxMS41MSw1LjQ4LDUuNDgsMCwwLDEsMTcuNTUsMTdIMTEuMTRhMSwxLDAsMCwwLS43NSwxLjY2TDIyLjA2LDMyYTEsMSwwLDEsMCwxLjUtMS4zMkwxMy4zNSwxOWg0LjIxYTcuNTEsNy41''@;'; put 'put ''MSwwLDAsMCw3LjMtOUgyOGExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNS44OCw5SDI2YTEsMSwwLDAsMSwwLDJIMjQu''@;'; put 'put ''MjZjMCwuMDYsMCwuMTIsMCwuMTlhNi4wOSw2LjA5LDAsMCwxLTYsNi4yaC0ybDYuODIsOC4wNmExLjI1LDEuMjUsMCwwLDEtMS45MSwxLjYyTDEyLjYzLDE4Ljk0YTEuMjUsMS4yNSwwLDAsMSwxLTIuMDZoNC43MWEzLjU5LDMuNTksMCwwLDAsMy40OC0zLjY5YzAtLjA3LDAtLjEzLDAtLjJo''@;'; put 'put ''LTlhMSwxLDAsMCwxLDAtMmg4LjMyYTMuNDEsMy40MSwwLDAsMC0yLjc4LTEuNUgxMi43NWExLjI1LDEuMjUsMCwwLDEsMC0yLjVIMjZhMSwxLDAsMCwxLDAsMkgyMi42OEE2LjIzLDYuMjMsMCwwLDEsMjMuODgsMTFaIi8+JyksTC5DbHJTaGFwZVdvbj0oMCxFLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE4SDI4Ljc1bC41LTJIMzNhMSwxLDAsMCwwLDAtMkgyOS43NGwyLjE3LTguNzZBMSwxLDAsMCwwLDMwLDQuNzZMMjcuNjgsMTRIMjEuMzFMMTksNC43NmExLDEsMCwwLDAtMS45NCwwTDE0Ljc5LDE0''@;'; put 'put ''SDguNDJMNi4xMyw0Ljc2YTEsMSwwLDAsMC0xLjk0LjQ4TDYuMzYsMTRIM2ExLDEsMCwwLDAsMCwySDYuODVsLjUsMkgzYTEsMSwwLDAsMCwwLDJINy44NGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMTUuMzYsMjBoNS4zOGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMjguMjUs''@;'; put 'put ''MjBIMzNhMSwxLDAsMCwwLDAtMlptLTUuODItMi0uNSwySDIyLjNsLS41LTJaTTE4LDkuMTYsMTkuMjUsMTRoLTIuNFpNOC45MSwxNmg1LjM4bC0uNSwySDkuNDFaTTExLjYsMjYuODQsOS45MSwyMEgxMy4zWk0xNS44NSwxOGwuNS0yaDMuMzlsLjUsMlptOC42NCw4Ljg0TDIyLjgsMjBoMy4z''@;'; put 'put ''OVoiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHBvaW50cz0iMTcuNzQgMTYgMTcuMjIgMTggMTguODUgMTggMTguMzIgMTYgMTcuNzQgMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTIiIHBvaW50cz0iMTEuOTQgMTggMTQuNjMgMTggMTUuMTYgMTYgMTEuNDEgMTYgMTEuOTQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIHBvaW50cz0iMTMuMjkgMjMuMSAxNC4xIDIwIDEy''@;'; put 'put ''LjQ3IDIwIDEzLjI5IDIzLjEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHBvaW50cz0iMjEuNDQgMTggMjQuMTMgMTggMjQuNjYgMTYgMjAuOTEgMTYgMjEuNDQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIHBvaW50cz0iMjIuNzggMjMuMSAyMy42IDIwIDIxLjk3IDIwIDIyLjc4IDIzLjEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0''@;'; put 'put ''LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LDIwSDI2LjE5TDI0LDI4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMMTkuMzgsMjBIMTYuNjlsLTIuMTksOC4zMmExLjI1LDEuMjUsMCwwLDEtMi40MiwwTDkuODgsMjBIN2ExLDEsMCwwLDEsMC0ySDkuMzVsLS41My0ySDdhMSwxLDAsMCwxLDAt''@;'; put 'put ''Mkg4LjNsLTEtMy42OGExLjI1LDEuMjUsMCwwLDEsMi40Mi0uNjRMMTAuODgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40MiwwTDIwLjM4LDE0aDQuOGwxLjE0LTQuMzJhMS4yNSwxLjI1LDAsMCwxLDIuNDIuNjRsLTEsMy42OEgyOWExLDEsMCwwLDEsMCwySDI3LjI0bC0u''@;'; put 'put ''NTMsMkgyOWExLDEsMCwwLDEsMCwyWiIvPicpLEwuQ2xyU2hhcGVZZW49KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4zNCw0LjU1YTEsMSwwLDEsMC0xLjY3LTEuMUwxOCwxOC4yMyw4LjMzLDMuNDVhMSwx''@;'; put 'put ''LDAsMCwwLTEuNjcsMS4xTDE3LDIwLjM1VjIyLjJIMTJhLjguOCwwLDAsMCwwLDEuNmg1djIuNEgxMmEuOC44LDAsMCwwLDAsMS42aDVWMzJhMSwxLDAsMCwwLDIsMFYyNy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMC4zNVoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTguMDcsNy45MUwxOS43NCwyMEgyMmExLDEsMCwwLDEsMCwySDE5LjI1djJIMjJhMSwxLDAsMCwxLDAsMkgxOS4yNXYy''@;'; put 'put ''Ljc1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNkgxNGExLDEsMCwxLDEsMC0yaDIuNzVWMjJIMTRhMSwxLDAsMSwxLDAtMmgyLjI2TDkuOTMsOS45MWExLjI1LDEuMjUsMCwxLDEsMi4xMi0xLjMzTDE4LDE4LjA4bDUuOTUtOS40OWExLjI1LDEuMjUsMCwxLDEsMi4xMiwxLjMzWiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVCaXRjb2luPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC4xMSwxNi44OEE1LjQ5LDUuNDksMCwwLDAsMjEsN1Y0YTEsMSwwLDAsMC0yLDBWN0gxNlY0YTEsMSwwLDAsMC0yLDBWN0gxMWExLDEsMCwwLDAtMSwxVjI4YTEsMSwwLDAsMCwxLDFoM3YzYTEsMSwwLDAsMCwy''@;'; put 'put ''LDBWMjloM3YzYTEsMSwwLDAsMCwyLDBWMjloLjA4QTYuMDcsNi4wNywwLDAsMCwyNywyMi44MXYtLjYyQTYuMjUsNi4yNSwwLDAsMCwyNC4xMSwxNi44OFpNMTIsOWg4LjY5YTMuNTksMy41OSwwLDAsMSwzLjQzLDIuMzZBMy41MSwzLjUxLDAsMCwxLDIwLjc5LDE2SDEyWk0yNSwyMi44MUE0''@;'; put 'put ''LjA4LDQuMDgsMCwwLDEsMjEuMDYsMjdIMTJWMThoOS4wNkE0LjA4LDQuMDgsMCwwLDEsMjUsMjIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xOCwxOC40N0gxNC41djZoNi42OGEyLjcsMi43LDAs''@;'; put 'put ''MCwwLDIuNjMtMi43N3YtLjQ4QTIuNzEsMi43MSwwLDAsMCwyMS4xOCwxOC40N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMTMuNzVhMi4yNCwyLjI0LDAsMCwwLTIuMjMtMi4yNUgxNC41VjE2aDYuM0EyLjIy''@;'; put 'put ''LDIuMjIsMCwwLDAsMjMsMTMuNzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOC4zMSwxOS43M0E1LjIyLDUuMjIsMCwwLDEsMjEuMTgsMjdI''@;'; put 'put ''MjF2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTd2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTMuMjVBMS4yNSwxLjI1LDAsMCwxLDEyLDI1Ljc1VjE3LjIzaDB2LTdBMS4yNSwxLjI1LDAsMCwxLDEzLjI1LDlIMTVWNy4wN2ExLDEsMCwwLDEsMiwwVjloMlY3LjA3YTEsMSwwLDAsMSwyLDBWOWE0Ljcy''@;'; put 'put ''LDQuNzIsMCwwLDEsMy4yLDgsNS4zMSw1LjMxLDAsMCwxLDIuMTEsNC4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZUNvaW5CYWc9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLjYsMjlhMSwxLDAsMCwwLTEtMWgtNmExLDEs''@;'; put 'put ''MCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjIuNTQsMjRoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgLz48cGF0aCBkPSJNMjIsMzJIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNywzMmgtN2ExLDEsMCwwLDAsMCwyaDdhMSwxLDAsMCwwLDAtMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy43LDI4aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjc0LDI2YTI4LDI4LDAs''@;'; put 'put ''MCwwLTIuODItMTAuMTJBMjAuMjQsMjAuMjQsMCwwLDAsMjQuNiw4LjcxTDI3LDMuNDJhMSwxLDAsMCwwLS4wNy0xQTEsMSwwLDAsMCwyNi4xMywySDkuOGExLDEsMCwwLDAtLjkxLDEuNDJsMi40NSw1LjMxYTIwLjMzLDIwLjMzLDAsMCwwLTYuMjgsNy4xNWMtMi4xNSw0LTIuODIsOC44OS0z''@;'; put 'put ''LDEyLjI4YTMuNiwzLjYsMCwwLDAsMSwyLjcxQTMuNzksMy43OSwwLDAsMCw1LjgsMzEuOTRIMTJWMzBINS43MmExLjY4LDEuNjgsMCwwLDEtMS4yMS0uNTIsMS42MiwxLjYyLDAsMCwxLS40NS0xLjIzYy4xNC0yLjYxLjY5LTcuNTgsMi43Ni0xMS40NUExOCwxOCwwLDAsMSwxMy4wOCwxMGgx''@;'; put 'put ''YTMwLjgxLDMwLjgxLDAsMCwwLTEuODcsMi45MiwyMi43OCwyMi43OCwwLDAsMC0xLjQ3LDMuMzRsMS4zNy45MmEyNCwyNCwwLDAsMSwxLjQ5LTMuNDdBMjkuMSwyOS4xLDAsMCwxLDE2LjA1LDEwaDFhMjEuNDUsMjEuNDUsMCwwLDEsMS40MSw1LDIyLjU0LDIyLjU0LDAsMCwxLC4zMiwzLjg2''@;'; put 'put ''bDEuNTgtMS4xMWEyNC4xNSwyNC4xNSwwLDAsMC0uMzItM0EyNC44MiwyNC44MiwwLDAsMCwxOC43NiwxMGguNzhsLjkxLTJIMTMuMjFMMTEuMzYsNEgyNC41N2wtMi41LDUuNDdhOS45Myw5LjkzLDAsMCwxLDEuMjMuNzgsMTguNjMsMTguNjMsMCwwLDEsNS44Niw2LjU3QTI2LjU5LDI2LjU5''@;'; put 'put ''LDAsMCwxLDMxLjczLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgPHBhdGggZD0iTTI0Ljg5LDI2aDcuODZjLS42Ni04LjcxLTQuNDEtMTQuMTItOS4yMi0xNy4zMkwyNS43MiwzLjlhMSwxLDAsMCwwLS45MS0xLjRIMTEuMWExLDEsMCww''@;'; put 'put ''LDAtLjkxLDEuNGwxLjIsMi42SDIxLjUxbC0uOSwySDE4Ljc2QTI0LjksMjQuOSwwLDAsMSwyMCwxMy4xOWEyNC40OSwyNC40OSwwLDAsMSwuMzIsM2wtMS41OCwxLjExYTIyLjU0LDIyLjU0LDAsMCwwLS4zMi0zLjg2QTIxLjc0LDIxLjc0LDAsMCwwLDE3LDguNWgtMWEyOC4yMiwyOC4yMiww''@;'; put 'put ''LDAsMC0yLjQ4LDMuNywyMy45MSwyMy45MSwwLDAsMC0xLjQ5LDMuNDZsLTEuMzctLjkxYTIyLjc4LDIyLjc4LDAsMCwxLDEuNDctMy4zNEEzMC44MSwzMC44MSwwLDAsMSwxNC4wNSw4LjVIMTIuM2wuMDguMTdDNy4wOCwxMi4yLDMuMDUsMTguNCwzLjA1LDI4Ljc1QTEuNjUsMS42NSwwLDAs''@;'; put 'put ''MCw0LjYxLDMwLjVoOEEyLjY3LDIuNjcsMCwwLDEsMTQuMjEsMjZhMi42NywyLjY3LDAsMCwxLS4zNy0xLjM0LDIuNywyLjcsMCwwLDEsMi43LTIuN2g2YTIuNywyLjcsMCwwLDEsMi43LDIuN0EyLjYzLDIuNjMsMCwwLDEsMjQuODksMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS42LDI4LjVhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjguNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjU0LDIzLjVoLTZhMSwxLDAsMCwwLDAs''@;'; put 'put ''Mmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwzMS41SDE2YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJN''@;'; put 'put ''MzIuNywzMS41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNywyNy41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtNiIgLz4nKSxMLkNsclNoYXBlUGVzbz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTMuMkgyNy44OUE2LjgxLDYuODEsMCwwLDAsMjgsMTJhNy44NSw3Ljg1LDAsMCwwLS4xLTEuMTloMi45M2EuOC44LDAsMCwwLDAtMS42SDI3LjQ2QTguNDQsOC40NCwwLDAs''@;'; put 'put ''MCwxOS41Nyw0SDExYTEsMSwwLDAsMC0xLDFWOS4ySDdhLjguOCwwLDAsMCwwLDEuNmgzdjIuNEg3YS44LjgsMCwwLDAsMCwxLjZoM1YzMWExLDEsMCwwLDAsMiwwVjIwaDcuNTdhOC40NSw4LjQ1LDAsMCwwLDcuODktNS4ySDMxYS44LjgsMCwwLDAsMC0xLjZaTTEyLDZoNy41N2E2LjUxLDYu''@;'; put 'put ''NTEsMCwwLDEsNS42OCwzLjJIMTJabTAsNC44SDI1Ljg3YTUuNiw1LjYsMCwwLDEsMCwyLjRIMTJaTTE5LjU3LDE4SDEyVjE0LjhIMjUuMjVBNi41MSw2LjUxLDAsMCwxLDE5LjU3LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE0''@;'; put 'put ''LjE4LDEzLjhWMTZoOS40NWE1LjI2LDUuMjYsMCwwLDAsLjA4LS44OSw0LjcyLDQuNzIsMCwwLDAtLjItMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDE5LjdoNS4xOWE0LjI4LDQuMjgsMCwwLDAsMy41LTEuOUgxNC4xOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LjM3LDEwLjUxSDE0LjE4VjEyaDguMzdBNC4yMSw0LjIxLDAsMCwwLDE5LjM3LDEwLjUxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNjcs''@;'; put 'put ''MmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxNy42NywyWm0xMC41LDE1LjhIMjUuN2E2Ljg3LDYuODcsMCwwLDEtNi4zMyw0LjRIMTQuMTh2Ni41NGExLjI1LDEuMjUsMCwxLDEtMi41LDBWMTcuOEg4Ljc2YS45LjksMCwxLDEsMC0xLjhoMi45MlYxMy44SDguNzZhLjkuOSwwLDEs''@;'; put 'put ''MSwwLTEuOGgyLjkyVjkuMjZBMS4yNSwxLjI1LDAsMCwxLDEyLjkzLDhoNi40NGE2Ljg0LDYuODQsMCwwLDEsNi4xNSw0aDIuNjVhLjkuOSwwLDAsMSwwLDEuOEgyNi4wOWE2LjkxLDYuOTEsMCwwLDEsLjEyLDEuMyw2LjgsNi44LDAsMCwxLS4wNi45aDJhLjkuOSwwLDAsMSwwLDEuOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZVJ1YmxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC41NywyMEE4LjIzLDguMjMsMCwwLDAsMjksMTJhOC4yMyw4LjIzLDAsMCwwLTguNDMtOEgxMmExLDEsMCwwLDAtMSwxVjE4SDlhMSwx''@;'; put 'put ''LDAsMCwwLDAsMmgydjJIOWExLDEsMCwwLDAsMCwyaDJ2N2ExLDEsMCwwLDAsMiwwVjI0aDlhMSwxLDAsMCwwLDAtMkgxM1YyMFpNMTMsNmg3LjU3QTYuMjQsNi4yNCwwLDAsMSwyNywxMmE2LjIzLDYuMjMsMCwwLDEtNi40Myw2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIwLjc1LDkuMjVIMTV2OC44MWg1Ljc5YTQuNjYsNC42NiwwLDAsMCw0Ljg2LTQuNEE0LjY1LDQuNjUsMCwwLDAsMjAuNzUsOS4yNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJBMTYsMTYs''@;'; put 'put ''MCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMi43NSwxOC41NkgxNVYyMmg4LjI5YTEsMSwwLDAsMSwwLDJIMTV2NWExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjRIMTEuMjVhMSwxLDAsMCwxLDAtMmgxLjIxVjIwLjU2SDExLjI1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNWgxLjIxVjhhMS4y''@;'; put 'put ''NSwxLjI1LDAsMCwxLDEuMjUtMS4yNWg3YTcuMTQsNy4xNCwwLDAsMSw3LjM2LDYuOUE3LjE1LDcuMTUsMCwwLDEsMjAuNzUsMjAuNTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPSgwLEUuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS45MSwxNy42NWEyMC42LDIwLjYsMCwwLDAtMTMsMkExLjc3LDEuNzcsMCwwLDAsOCwyMS4yNXYzLjU2YTEsMSwwLDAsMCwyLDBWMjEuMzhhMTguOTIsMTguOTIsMCwwLDEsMTItMS42OFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMywyMkgyNi4zVjIwLjUyYTEsMSwwLDAsMC0yLDBWMjJIMTdhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWMjNBMSwxLDAsMCwwLDMzLDIyWk0zMiwzMkgxOFYyNGg2LjN2''@;'; put 'put ''LjQxYTEsMSwwLDAsMCwyLDBWMjRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIyMS44MSIgeT0iMjcuNDIiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTUiLz5cbiAgPHBhdGggZD0iTTEwLjg0LDEyLjI0YTE4LDE4LDAsMCwwLTcuOTUsMkExLjY3LDEuNjcsMCwwLDAsMiwxNS43MXYzLjFhMSwxLDAsMCwwLDIsMHYtMi45YTE2LDE2LDAsMCwxLDcuNTgtMS42N0E3LjI4LDcuMjgsMCwwLDEsMTAuODQsMTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzMuMTEsMTQuMjNhMTcuOCwxNy44LDAsMCwwLTcuMTItMiw3LjQ2LDcuNDYsMCwwLDEtLjczLDJBMTUuODksMTUuODksMCwwLDEsMzIsMTUuOTF2Mi45YTEsMSwwLDEsMCwyLDB2LTMuMUExLjY3LDEuNjcsMCwwLDAs''@;'; put 'put ''MzMuMTEsMTQuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cGF0aCBkPSJNMTAuNjYsMTAuNjFjMC0uMjMsMC0uNDUsMC0uNjdhMy4wNywzLjA3LDAsMCwxLC41NC02LjExLDMuMTUsMy4xNSwwLDAsMSwyLjIuODksOC4xNiw4LjE2LDAsMCwx''@;'; put 'put ''LDEuNy0xLjA4LDUuMTMsNS4xMywwLDAsMC05LDMuMjcsNS4xLDUuMSwwLDAsMCw0LjcsNUE3LjQyLDcuNDIsMCwwLDEsMTAuNjYsMTAuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIvPlxuICA8cGF0aCBkPSJNMjQuNzcsMS44M2E1LjE3LDUuMTcsMCww''@;'; put 'put ''LDAtMy42OSwxLjU1LDcuODcsNy44NywwLDAsMSwxLjksMSwzLjE0LDMuMTQsMCwwLDEsNC45MywyLjUyLDMuMDksMy4wOSwwLDAsMS0xLjc5LDIuNzcsNy4xNCw3LjE0LDAsMCwxLC4wNi45Myw3Ljg4LDcuODgsMCwwLDEtLjEsMS4yLDUuMSw1LjEsMCwwLDAsMy44My00LjlBNS4xMiw1LjEy''@;'; put 'put ''LDAsMCwwLDI0Ljc3LDEuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICBcbiAgPGVsbGlwc2UgY3g9IjE4IiBjeT0iMTEuMjgiIHJ4PSI0Ljc2IiByeT0iNC43IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0xMC43OCwxMS43NWMuMTYsMCwuMzIsMCwuNDgsMCwwLS4xNSwwLS4yOCwwLS40M2E2LjcsNi43LDAsMCwxLDMuNzUtNiw0LjYyLDQuNjIsMCwxLDAtNC4yMSw2LjQ2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjQuNzYs''@;'; put 'put ''MTEuMjhjMCwuMTUsMCwuMjgsMCwuNDMuMTYsMCwuMzIsMCwuNDgsMEE0LjU4LDQuNTgsMCwxLDAsMjEsNS4yOSw2LjcsNi43LDAsMCwxLDI0Ljc2LDExLjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjIuMjksMTYuNDVhMjEuNDUs''@;'; put 'put ''MjEuNDUsMCwwLDEsNS43MSwyLDIuNzEsMi43MSwwLDAsMSwuNjguNTNIMzRWMTUuNTZhLjcyLjcyLDAsMCwwLS4zOC0uNjQsMTgsMTgsMCwwLDAtOC40LTIuMDVsLS42NiwwQTYuNjYsNi42NiwwLDAsMSwyMi4yOSwxNi40NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTQiLz5cbiAgPHBhdGggZD0iTTYuNTMsMjAuOTJBMi43NiwyLjc2LDAsMCwxLDgsMTguNDdhMjEuNDUsMjEuNDUsMCwwLDEsNS43MS0yLDYuNjYsNi42NiwwLDAsMS0yLjI3LTMuNTVsLS42NiwwYTE4LDE4LDAsMCwwLTguNCwyLjA1LjcyLjcyLDAsMCwwLS4zOC42NFYyMkg2LjUzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICA8cmVjdCB4PSIyMS40NiIgeT0iMjYuNjkiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzIuODEsMjEuMjZIMjUuOTR2''@;'; put 'put ''LTFhMSwxLDAsMCwwLTIsMHYxSDIyVjE4LjQzQTIwLjE3LDIwLjE3LDAsMCwwLDE4LDE4YTE5LjI3LDE5LjI3LDAsMCwwLTkuMDYsMi4yMi43Ni43NiwwLDAsMC0uNDEuNjh2NS42MWg3LjExdjYuMDlhMSwxLDAsMCwwLDEsMUgzMi44MWExLDEsMCwwLDAsMS0xVjIyLjI2QTEsMSwwLDAsMCwz''@;'; put 'put ''Mi44MSwyMS4yNlptLTEsMTAuMzZIMTcuNjRWMjMuMjZoNi4zdi45MWExLDEsMCwwLDAsMiwwdi0uOTFoNS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciLz4nKSxMLkNsclNoYXBlRW1wbG95ZWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LjQzLDE2''@;'; put 'put ''LjY5YTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE2LjQzLDE2LjY5Wm0wLTExLjkyYTUsNSwwLDEsMCw1LDVBNSw1LDAsMCwwLDE2LjQzLDQuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjIsMTcuOUEyNS40MSwyNS40MSww''@;'; put 'put ''LDAsMCw1Ljg4LDE5LjU3YTQuMDYsNC4wNiwwLDAsMC0yLjMxLDMuNjhWMjkuMmExLDEsMCwxLDAsMiwwVjIzLjI1YTIsMiwwLDAsMSwxLjE2LTEuODYsMjIuOTEsMjIuOTEsMCwwLDEsOS43LTIuMTEsMjMuNTgsMjMuNTgsMCwwLDEsNS41Ny42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIyLjE0IiB5PSIyNy40MSIgd2lkdGg9IjYuMTQiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzMuMTcsMjEuNDdIMjh2Mmg0LjE3djguMzdIMThW''@;'; put 'put ''MjMuNDdoNi4zdi40MmExLDEsMCwwLDAsMiwwVjIwYTEsMSwwLDAsMC0yLDB2MS40N0gxN2ExLDEsMCwwLDAtMSwxVjMyLjg0YTEsMSwwLDAsMCwxLDFIMzMuMTdhMSwxLDAsMCwwLDEtMVYyMi40N0ExLDEsMCwwLDAsMzMuMTcsMjEuNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNCIvPlxuICBcbiAgPGNpcmNsZSBjeD0iMTYuODYiIGN5PSI5LjczIiByPSI2LjQ2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIxIiB5PSIyOCIgd2lkdGg9IjciIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xNSwzMHYzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM2ExLDEsMCwwLDAtMS0xSDI2VjIwLjUzYTEsMSwwLDAsMC0yLDBWMjJIMjJWMTguNDJBMzIuMTIsMzIuMTIsMCwwLDAsMTYuODYsMThhMjYsMjYsMCww''@;'; put 'put ''LDAtMTEsMi4zOSwzLjI4LDMuMjgsMCwwLDAtMS44OCwzVjMwWm0xNywySDE3VjI0aDd2LjQyYTEsMSwwLDAsMCwyLDBWMjRoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxMLkNsclNoYXBlRmFjdG9yeT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzMuNDcsNy4zN2ExLDEsMCwwLDAtMSwuMDZMMjMsMTMuNzdWOC4yNmExLDEsMCwwLDAtMS42NC0uNzdMMTMuNDgsMTRIMTBWNC42MmExLDEsMCwwLDAtLjc4LTFsLTQtLjlhMSwxLDAsMCwwLS44NS4yQTEsMSwwLDAsMCw0LDMuNzNWMTRIM2ExLDEsMCwwLDAtMSwxVjMxYTEsMSwwLDAsMCwx''@;'; put 'put ''LDFIMzNhMSwxLDAsMCwwLDEtMVY4LjI2QTEsMSwwLDAsMCwzMy40Nyw3LjM3Wk02LDVsMiwuNDRWMTRINlpNMzIsMzBINFYxNmg5LjgzYTEsMSwwLDAsMCwuNjQtLjIzTDIxLDEwLjM3djUuMjhhMSwxLDAsMCwwLDEuNTYuODNMMzIsMTAuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI2IiB5PSIxNy45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iNiIgeT0iMjEuOTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjYiIHk9IjI1Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIxOSIgeT0iMTguOTkiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgPHJlY3QgeD0iMjMiIHk9''@;'; put 'put ''IjE4Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSIyMyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+''@;'; put 'put ''XG4gIDxyZWN0IHg9IjI3IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgPHJlY3QgeD0iMjciIHk9IjI0Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTAiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zMi40NSw4LjQ0LDIyLDE1LjNWOS41MWExLDEsMCwwLDAtMS42My0uNzhMMTQuMDcsMTRIMTBWNC4wNkw0LDIuNzFWMTRIMlYzMWExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWOS4yN0ExLDEsMCwwLDAsMzIuNDUs''@;'; put 'put ''OC40NFpNMTQsMjlINlYyN2g4Wm0wLTRINlYyM2g4Wm0wLTRINlYxOWg4Wm04LDhIMjBWMjZoMlptMC02SDIwVjIwaDJabTQsNkgyNFYyNmgyWm0wLTZIMjRWMjBoMlptNCw2SDI4VjI2aDJabTAtNkgyOFYyMGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicp''@;'; put 'put ''LEwuQ29tbWVyY2VTaGFwZXM9e2NhbGN1bGF0b3I6TC5DbHJTaGFwZUNhbGN1bGF0b3IsInBpZ2d5LWJhbmsiOkwuQ2xyU2hhcGVQaWdneUJhbmssInNob3BwaW5nLWJhZyI6TC5DbHJTaGFwZVNob3BwaW5nQmFnLCJzaG9wcGluZy1jYXJ0IjpMLkNsclNoYXBlU2hvcHBpbmdDYXJ0LHdhbGxl''@;'; put 'put ''dDpMLkNsclNoYXBlV2FsbGV0LHN0b3JlOkwuQ2xyU2hhcGVTdG9yZSxldXJvOkwuQ2xyU2hhcGVFdXJvLGRvbGxhcjpMLkNsclNoYXBlRG9sbGFyLHBlc286TC5DbHJTaGFwZVBlc28sImNyZWRpdC1jYXJkIjpMLkNsclNoYXBlQ3JlZGl0Q2FyZCxiYW5rOkwuQ2xyU2hhcGVCYW5rLCJkb2xs''@;'; put 'put ''YXItYmlsbCI6TC5DbHJTaGFwZURvbGxhckJpbGwsImUtY2hlY2siOkwuQ2xyU2hhcGVFQ2hlY2sscG91bmQ6TC5DbHJTaGFwZVBvdW5kLHJ1cGVlOkwuQ2xyU2hhcGVSdXBlZSx3b246TC5DbHJTaGFwZVdvbix5ZW46TC5DbHJTaGFwZVllbixiaXRjb2luOkwuQ2xyU2hhcGVCaXRjb2luLHJ1''@;'; put 'put ''YmxlOkwuQ2xyU2hhcGVSdWJsZSwiY29pbi1iYWciOkwuQ2xyU2hhcGVDb2luQmFnLCJlbXBsb3llZS1ncm91cCI6TC5DbHJTaGFwZUVtcGxveWVlR3JvdXAsZW1wbG95ZWU6TC5DbHJTaGFwZUVtcGxveWVlLGZhY3Rvcnk6TC5DbHJTaGFwZUZhY3Rvcnl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShMLkNvbW1lcmNlU2hhcGVzLCJzYXZpbmdzIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29tbWVyY2VTaGFwZXNbInBpZ2d5LWJhbmsiXSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0''@;'; put 'put ''eUljb25zLmFkZChMLkNvbW1lcmNlU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLkNvcmVTaGFw''@;'; put 'put ''ZXM9TC5DbHJTaGFwZUFycm93PUwuQ2xyU2hhcGVTdGVwRm9yd2FyZDI9TC5DbHJTaGFwZUV5ZUhpZGU9TC5DbHJTaGFwZUV5ZT1MLkNsclNoYXBlRXZlbnQ9TC5DbHJTaGFwZUNhbGVuZGFyPUwuQ2xyU2hhcGVBbmdsZURvdWJsZT1MLkNsclNoYXBlVmlld0NvbHVtbnM9TC5DbHJTaGFwZVNl''@;'; put 'put ''YXJjaD1MLkNsclNoYXBlVm1CdWc9TC5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9TC5DbHJTaGFwZUZpbHRlckdyaWQ9TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9TC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD1MLkNsclNoYXBlQ2xvdWQ9TC5DbHJTaGFwZUltYWdlPUwuQ2xyU2hh''@;'; put 'put ''cGVCZWxsPUwuQ2xyU2hhcGVGb2xkZXJPcGVuPUwuQ2xyU2hhcGVGb2xkZXI9TC5DbHJTaGFwZUFuZ2xlPUwuQ2xyU2hhcGVVc2VyPUwuQ2xyU2hhcGVCYXJzPUwuQ2xyU2hhcGVIZWxwSW5mbz1MLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPUwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPUwuQ2xy''@;'; put 'put ''U2hhcGVTdWNjZXNzU3RhbmRhcmQ9TC5DbHJTaGFwZUluZm9TdGFuZGFyZD1MLkNsclNoYXBlSW5mb0NpcmNsZT1MLkNsclNoYXBlQ2hlY2tDaXJjbGU9TC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPUwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPUwuQ2xyU2hhcGVUaW1lcz1MLkNs''@;'; put 'put ''clNoYXBlQ2hlY2s9TC5DbHJTaGFwZUNvZz1MLkNsclNoYXBlSG9tZT1MLkNsclNoYXBlVW5rbm93blN0YXR1cz12b2lkIDA7dmFyIEI9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMv''@;'; put 'put ''c3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtMLkNsclNoYXBlVW5rbm93blN0YXR1cz0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuNTgiIGN5PSIyNi4yMyIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC43LDEzYTUuMTgsNS4xOCwwLDAsMC0yLjE2LTMuNTYsNy4yNiw3LjI2LDAsMCwwLTUuNzEtMS4wOUExMS4zNCwxMS4zNCwwLDAsMCwxMiwxMC40NCwxLDEsMCwxLDAsMTMuMjYsMTJhOS4zMiw5''@;'; put 'put ''LjMyLDAsMCwxLDMuOTQtMS43Miw1LjI5LDUuMjksMCwwLDEsNC4xNi43NCwzLjIxLDMuMjEsMCwwLDEsMS4zNSwyLjE5Yy4zMywyLjY5LTMuMTksMy43NS01LjMyLDQuMTRsLS44Mi4xNXY0LjM2YTEsMSwwLDAsMCwyLDBWMTkuMTdDMjQuNjEsMTcuNzksMjQuODgsMTQuNDEsMjQuNywxM1oi''@;'; put 'put ''Lz4nKSxMLkNsclNoYXBlSG9tZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjcxLDE3LjI5bC0xNS0xNWExLDEsMCwwLDAtMS40MSwwbC0xNSwxNWExLDEsMCwwLDAsMS40MSwxLjQxTDE4LDQuNDEsMzIu''@;'; put 'put ''MjksMTguNzFhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDMyaC01VjIySDEzVjMySDhWMThMNiwyMFYzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTkuNzZsLTItMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTlhMSwxLDAsMCwxLS43MS0uMjlMMTgsNC40MSwzLjcxLDE4LjcxYTEsMSwwLDAsMS0xLjQxLTEuNDFsMTUtMTVhMSwxLDAs''@;'; put 'put ''MCwxLDEuNDEsMGwxNSwxNUExLDEsMCwwLDEsMzMsMTlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDcuNzksNiwxOS44M1YzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJWMTku''@;'; put 'put ''NzZaIi8+JyksTC5DbHJTaGFwZUNvZz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjEsMTFjLTMuOSwwLTcsMy4xLTcsN3MzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03UzIyLDExLDE4LjEsMTF6IE0xOC4x''@;'; put 'put ''LDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01YzIuOCwwLDUsMi4yLDUsNVMyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC42LTEuNWwx''@;'; put 'put ''LjQtMi42YzAuMy0wLjYsMC4yLTEuNC0wLjMtMS45bC0yLjQtMi40Yy0wLjUtMC41LTEuMy0wLjYtMS45LTAuM2wtMi42LDEuNGwtMS41LTAuNmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEu''@;'; put 'put ''NiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42''@;'; put 'put ''LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYs''@;'; put 'put ''MS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiBNMzIsMTkuNGwtMy42LDEuMUwyOC4z''@;'; put 'put ''LDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAu''@;'; put 'put ''M2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQt''@;'; put 'put ''MC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS40LDAuNSwyLjEsMC45bDAuNSwwLjNsMy4zLTEuOGwyLDJsLTEuOCwzLjNsMC4zLDAuNWMwLjQsMC43LDAuNywxLjQsMC45LDIuMWwwLjEsMC41bDMuNiwxLjFWMTkuNHoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4xLDE4YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdzLTMuMS03LTctN0MxNC4yLDExLDExLjEsMTQuMSwxMS4xLDE4eiBNMjMuMSwxOGMw''@;'; put 'put ''LDIuOC0yLjIsNS01LDVjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVDMjAuOSwxMywyMy4xLDE1LjIsMjMuMSwxOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44LDE0''@;'; put 'put ''LjdMMzAsMTMuOGwtMC4xLTAuM2MtMC44LDAtMS42LTAuMi0yLjQtMC40YzAuMywwLjYsMC42LDEuMywwLjgsMS45bDAuMSwwLjVsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUs''@;'; put 'put ''MC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAu''@;'; put 'put ''NUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuMywwLjUsMS45''@;'; put 'put ''LDAuOGMtMC4zLTAuOC0wLjQtMS42LTAuNC0yLjVsLTAuNC0wLjJsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlD''@;'; put 'put ''NSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwy''@;'; put 'put ''LjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUs''@;'; put 'put ''MC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNywxNS40aC01LjN2MC4xbDMu''@;'; put 'put ''NiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMt''@;'; put 'put ''MS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwx''@;'; put 'put ''LjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNGwxLjQtMi4zbC0wLjYtMkMyMSwyLjQsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5''@;'; put 'put ''LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMt''@;'; put 'put ''MC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40''@;'; put 'put ''LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTYsMzMuOSwxNS43LDMzLjcsMTUuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMC4yLDAsMC41LDAsMC43LDAuMWMtMC4yLTAuNi0wLjMtMS4zLTAuMi0yaC0wLjVjLTMuOSwwLTcsMy4xLTcsN2MwLDMuOSwzLjEsNyw3''@;'; put 'put ''LDdjMy45LDAsNy0zLjEsNy03YzAtMC45LTAuMi0xLjgtMC41LTIuNmgtMi4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi41QzIzLjEsMjAuOCwyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0w''@;'; put 'put ''LjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTEuNjUsMTEuNjUsMCwwLDAtLjk1LTIuMzNsMS42NC0z''@;'; put 'put ''LjA3YS42MS42MSwwLDAsMC0uMTEtLjcyTDI3LjQxLDYuMmEuNjEuNjEsMCwwLDAtLjcyLS4xMUwyMy42NCw3LjcyYTExLjYyLDExLjYyLDAsMCwwLTIuMzYtMWwtMS0zLjMxQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYz''@;'; put 'put ''LDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTEx''@;'; put 'put ''LjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwu''@;'; put 'put ''NTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0u''@;'; put 'put ''NThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTEyLjEyLDEyLjEyLDAsMCwwLS40Ny0xLjMyLDcuNDksNy40OSwwLDAsMS02LjE0LTYuMTYsMTEuODIsMTEuODIsMCwwLDAtMS4zMy0uNDhsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0x''@;'; put 'put ''LDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFsLTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAs''@;'; put 'put ''LjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAsMCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4z''@;'; put 'put ''OGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhhMTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42''@;'; put 'put ''MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzIuNTcsMTUuNzIsMzEuNSwxNS40SDIy''@;'; put 'put ''Ljg1QTUuNSw1LjUsMCwxLDEsMTgsMTIuNWE1LjUzLDUuNTMsMCwwLDEsLjY1LDBBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyLS44Ni0yLjgzQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIu''@;'; put 'put ''MzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYy''@;'; put 'put ''LDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEt''@;'; put 'put ''My4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFB''@;'; put 'put ''LjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4y''@;'; put 'put ''MywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlQ2hlY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0xMy43MiwyNy42OSwzLjI5LDE3LjI3YTEsMSwwLDAsMSwxLjQxLTEuNDFsOSw5TDMxLjI5LDcuMjlhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nKSxMLkNsclNoYXBlVGltZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0xOS40MSwxOGw4LjI5LTguMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSw5LjcxLDguMjlBMSwxLDAsMCwwLDguMjksOS43MUwxNi41OSwxOCw4LjI5LDI2LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsOC4yOSw4LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFa''@;'; put 'put ''Ii8+JyksTC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2QTEu''@;'; put 'put ''MywxLjMsMCwwLDAsMTgsMjEuMzJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjE3Ljk1IiBjeT0iMjQuMjciIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEsMCww''@;'; put 'put ''LDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCwwLDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZh''@;'; put 'put ''MywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcy''@;'; put 'put ''QTEuNzIsMS43MiwwLDAsMSwxOCwyNi4yNVoiLz4nKSxMLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCww''@;'; put 'put ''LDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEuMyww''@;'; put 'put ''LDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgsMjAuMDdaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE3Ljk1IiBjeT0iMjMuMDIiIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0xLjQ5LDZhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI1LjVhMS43MiwxLjcyLDAsMSwxLDEuNzIt''@;'; put 'put ''MS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjUuNVoiLz4nKSxMLkNsclNoYXBlQ2hlY2tDaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4''@;'; put 'put ''LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi4zNCwyMy43NGwtNS01YTEsMSwwLDAsMSwxLjQxLTEuNDFsMy41OSwzLjU5''@;'; put 'put ''LDYuNzgtNi43OGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwxOEExMiwxMiwwLDEsMSwxOCw2LDEyLDEyLDAsMCwxLDMwLDE4Wm0tNC43Ny0yLjE2YTEuNCwxLjQsMCww''@;'; put 'put ''LDAtMi0ybC02Ljc3LDYuNzdMMTMsMTcuMTZhMS40LDEuNCwwLDAsMC0yLDJsNS40NSw1LjQ1WiIvPicpLEwuQ2xyU2hhcGVJbmZvQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiICBjeD0iMTcuOTMiIGN5''@;'; put 'put ''PSIxMS45IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSww''@;'; put 'put ''LDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0yaDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nKSxMLkNsclNoYXBlSW5mb1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy45NyIgY3k9''@;'; put 'put ''IjEwLjQ1IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIxLDI1SDE5VjE0LjFIMTZhMSwxLDAsMCwwLDAsMmgxVjI1SDE1YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEuNCww''@;'; put 'put ''LDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nKSxMLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk''@;'; put 'put ''PSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+JyksTC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9''@;'; put 'put ''KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgs''@;'; put 'put ''MTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCww''@;'; put 'put ''LDE4LDIuMVpNMTYuNiw4LjhhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOC42YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI4LjZaIi8+JyksTC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD0oMCxFLmNsckljb25TVkcpKCc8''@;'; put 'put ''Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAs''@;'; put 'put ''MCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNS4wNjIwNzgyLDEuNjgxMTk2IEMxNS42Mjk4ODE5LDAuNjQ5MjY2MzU1''@;'; put 'put ''IDE2LjcxMDkwOTEsMC4wMTAyMjE5Mzk2IDE3Ljg4NSwwLjAxMDIyMTkzOTYgQzE5LjA1OTA5MDksMC4wMTAyMjE5Mzk2IDIwLjE0MDExODEsMC42NDkyNjYzNTUgMjAuNzA4NjQzMywxLjY4MjUyMTI5IEwzNC41OTg2NDQsMjcuMjQyNTIyNSBDMzUuMTQwNzc0NiwyOC4yNDAxMzk3IDM1LjEx''@;'; put 'put ''NzQzNDUsMjkuNDQ5NTM3MyAzNC41MzcyMTYxLDMwLjQyNTQ5NDMgQzMzLjk1Njk5NzcsMzEuNDAxNDUxNCAzMi45MDU2NzEsMzEuOTk5Njk4NCAzMS43NywzMiBMNC4wMjIzOTMyMywzMS45OTk3NDkyIEMyLjg3NDA5MDA5LDMyLjAyNTQ2OTkgMS43OTkwMjg0MywzMS40Mzc1NzUzIDEuMjAx''@;'; put 'put ''MDYzMzUsMzAuNDU2OTEyNiBDMC42MDMwOTgyNjUsMjkuNDc2MjQ5OSAwLjU3Mjc3Nzg5OSwyOC4yNTEzMTc5IDEuMTIyMDc4MTgsMjcuMjQxMTk2IEwxNS4wNjIwNzgyLDEuNjgxMTk2IFogTTIuODc4NTA3NjcsMjguMTk3NzI4MiBDMi42NzA2MDk2NiwyOC41ODAwMzc2IDIuNjgyMDk3NSwy''@;'; put 'put ''OS4wNDQxNDIzIDIuOTA4NjU1NywyOS40MTU2OTc3IEMzLjEzNTIxMzksMjkuNzg3MjUzMiAzLjU0MjUzNTQsMzAuMDA5OTk1OSA0LDMwIEwzMS43Njk3MzQ0LDMwIEMzMi4xOTk5MTkxLDI5Ljk5OTg4NTggMzIuNTk4MjQ3OCwyOS43NzMyMjA4IDMyLjgxODA4MjEsMjkuNDAzNDQ4MiBDMzMu''@;'; put 'put ''MDM3OTE2NCwyOS4wMzM2NzU3IDMzLjA0Njc1OTUsMjguNTc1NDU2NyAzMi44NDEzNTY3LDI4LjE5NzQ3ODcgTDE4Ljk1Mzg3MzksMi42NDIwODE5NSBDMTguNzM5NDIzNiwyLjI1MjM0NDM2IDE4LjMyOTg0MTksMi4wMTAyMjE5NCAxNy44ODUsMi4wMTAyMjE5NCBDMTcuNDQwNjg4OSwyLjAx''@;'; put 'put ''MDIyMTk0IDE3LjAzMTU1MzgsMi4yNTE3NjY5MiAxNi44MTY4OTQ2LDIuNjQwNjg3NTMgTDIuODc4NTA3NjcsMjguMTk3NzI4MiBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjYsMjkuMjEsMjAuNzEsMy42''@;'; put 'put ''NWEzLjIyLDMuMjIsMCwwLDAtNS42NiwwTDEuMTcsMjkuMjFBMy4yMiwzLjIyLDAsMCwwLDQsMzRIMzEuNzdhMy4yMiwzLjIyLDAsMCwwLDIuODMtNC43NVpNMTYuNiwxMGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI5Ljg1YTEuOCwxLjgsMCwxLDEs''@;'; put 'put ''MS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1WiIvPicpLEwuQ2xyU2hhcGVIZWxwSW5mbz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMzksMjUuNDVhMSwxLDAsMCwwLTEuMzguMjljLTEuNDEsMi4xNi00LDQuODEtNi4zMSw1LjdzLTQuMTIuNTctNC44NCwwYy0uMzEtLjI3''@;'; put 'put ''LTEuMTItMS0uNDMtMy40OS40Ni0xLjY2LDMuMzItOS40OCw0LTExLjM4bC0yLjE4LjI4Yy0uNjksMS44Ni0zLjI5LDguODQtMy43NiwxMC41OC0uNjgsMi40OS0uMzQsNC4zLDEuMDksNS41NkE1LjU5LDUuNTksMCwwLDAsMTUsMzRhOS41Myw5LjUzLDAsMCwwLDMuNDUtLjdjMi43OS0xLjA5''@;'; put 'put ''LDUuNzItNC4xMiw3LjI2LTYuNDdBMSwxLDAsMCwwLDI1LjM5LDI1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMywxMWE0LjUsNC41LDAsMSwwLTQuNS00LjVBNC41LDQuNSwwLDAsMCwxOS4zLDEx''@;'; put 'put ''Wm0wLTdhMi41LDIuNSwwLDEsMS0yLjUsMi41QTIuNSwyLjUsMCwwLDEsMTkuMyw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuODEsMTVjLjA2LDAsNi4yNy0uODIsNy43My0xLC42NS0uMSwxLjE0LDAs''@;'; put 'put ''MS4zLjE1cy4yMS44LS4wNywxLjY4Yy0uNjEsMS44Ni0zLjY5LDExLTQuNTksMTMuNzFhOCw4LDAsMCwwLDEuMjktLjM4LDcuMzIsNy4zMiwwLDAsMCwxLjE1LS42QzE5Ljg1LDI1LDIyLjE1LDE4LjEsMjIuNjcsMTYuNTJzLjM5LTIuNzgtLjMtMy42YTMuMTYsMy4xNiwwLDAsMC0zLjA4LS44''@;'; put 'put ''M2MtMS40My4xNS03LjQ3Ljk0LTcuNzMsMWExLDEsMCwwLDAsLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjIwLjc1IiBjeT0iNiIgcj0iNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC44NCwyNi4yM2ExLDEsMCwwLDAtMS40LjI5LDE2LjYsMTYuNiwwLDAsMS0zLjUxLDMuNzdjLS4zMy4yNS0xLjU2LDEuMi0yLjA4LDEtLjM2LS4xMS0uMTUtLjgyLS4wOC0xLjEybC41My0xLjU3Yy4yMi0uNjQsNC4wNS0xMiw0''@;'; put 'put ''LjQ3LTEzLjMuNjItMS45LjM1LTMuNzctMi40OC0zLjMyLS43Ny4wOC04LjU4LDEuMDktOC43MiwxLjFhMSwxLDAsMCwwLC4xMywyczMtLjM5LDMuMzMtLjQyYS44OC44OCwwLDAsMSwuODUuNDQsMi40NywyLjQ3LDAsMCwxLS4wNywxLjcxYy0uMjYsMS00LjM3LDEyLjU4LTQuNSwxMy4yNWEy''@;'; put 'put ''Ljc4LDIuNzgsMCwwLDAsMS4xOCwzLDUsNSwwLDAsMCwzLjA4LjgzaDBhOC41Myw4LjUzLDAsMCwwLDMuMDktLjYyYzIuNDktMSw1LjA5LTMuNjYsNi40Ni01Ljc1QTEsMSwwLDAsMCwyNC44NCwyNi4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5D''@;'; put 'put ''bHJTaGFwZUJhcnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwyOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzIsOUg0QTEsMSwwLDAsMSw0LDdI''@;'; put 'put ''MzJhMSwxLDAsMCwxLDAsMloiLz4nKSxMLkNsclNoYXBlVXNlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMSwwLTctN0E3LDcsMCwwLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjks''@;'; put 'put ''MzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMx''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjZhNSw1LDAsMSwxLDEuMjQtOC40MmwxLTEuNzZBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3''@;'; put 'put ''LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjEwIiByPSI3IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCww''@;'; put 'put ''LS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy4xNi01LjQ3QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkEx''@;'; put 'put ''LjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNyww''@;'; put 'put ''LDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZUFuZ2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2TDE4''@;'; put 'put ''LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nKSxMLkNsclNoYXBlRm9sZGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAs''@;'; put 'put ''MCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNVYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUxYTcuNSw3LjUsMCwwLDEtMS4y''@;'; put 'put ''OS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJN''@;'; put 'put ''MzAsMTUuNFYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsOUgxNi40''@;'; put 'put ''MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxNS40Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MzAsMTMuNUE3LjUsNy41LDAsMCwxLDIzLjEzLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDExVjdoNi40OWwyLjcyLDRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVGb2xkZXJPcGVuPSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAs''@;'; put 'put ''LjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRa''@;'; put 'put ''TTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSww''@;'; put 'put ''LDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2''@;'; put 'put ''QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40aC0uM0wyOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNGg5LjQyQTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIu''@;'; put 'put ''NTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjku''@;'; put 'put ''NjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDls''@;'; put 'put ''Mi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJhMiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42''@;'; put 'put ''NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwx''@;'; put 'put ''LS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5''@;'; put 'put ''LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1''@;'; put 'put ''LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwxLTEuMzEtMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40''@;'; put 'put ''MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZUJlbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1''@;'; put 'put ''LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAsMTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45MywxLDEs''@;'; put 'put ''MCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEsMWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWk01LjEzLDI4Ljk0YTE2LjE3LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVhOC43NCw4Ljc0LDAsMSwx''@;'; put 'put ''LDE3LjQ3LDB2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCww''@;'; put 'put ''LDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJI''@;'; put 'put ''MTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjUxLDI3LjgzQTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEy''@;'; put 'put ''LjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OSw3LjQ0LDcuNDQsMCwwLDEtMi4yNC0uODQsOC44OSw4Ljg5LDAsMCwxLC40LDIuNjR2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzSDUuMTNh''@;'; put 'put ''MTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNUE4LjgsOC44LDAsMCwxLDE4LDYuMzFhOC42MSw4LjYxLDAsMCwxLDQuNzYsMS40NEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU4LDEwLjU4LDAsMCww''@;'; put 'put ''LTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYxLjM2YTEsMSwwLDAsMCwxLDFo''@;'; put 'put ''MjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSwwLDAsMCwzMi41MSwyNy44M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0i''@;'; put 'put ''NSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEwLjgxLDEwLjgxLDAs''@;'; put 'put ''MCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE1LjMyLDMyYTIuNjUsMi42NSwwLDAsMCw1LjI1LDBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIu''@;'; put 'put ''ODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNywwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OUE3LjUsNy41LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41NywxMC41NywwLDAsMC0zLjMy''@;'; put 'put ''LTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxMLkNsclNoYXBlSW1hZ2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMw''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMtM0EzLDMsMCwwLDAs''@;'; put 'put ''OC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00LTRhMSwxLDAsMCww''@;'; put 'put ''LTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMywwLDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0tNC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCwwLDAtMS40MSwwWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04LjkyLDhhMywzLDAs''@;'; put 'put ''MSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIyLjc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4YTMsMywwLDEsMS0z''@;'; put 'put ''LDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZUNsb3VkPSgwLEUuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQsMzNIMTAuNjJDNS42NywzMywxLDI4LjE5LDEsMjMuMWExMCwxMCwwLDAsMSw4LTkuNzUsMTAuMTksMTAuMTksMCwwLDEsMjAuMzMsMS4wNkExMC4wNywxMC4wNywwLDAsMSwyOSwx''@;'; put 'put ''Ni42NmE4LjI5LDguMjksMCwwLDEsNiw4QzM1LDI5LjEsMzEuMzMsMzMsMjcuMTQsMzNaTTE5LjA5LDYuMjNhOC4yNCw4LjI0LDAsMCwwLTguMTksOGwwLC44Ny0uODYuMUE3Ljk0LDcuOTQsMCwwLDAsMywyMy4xYzAsNCwzLjc3LDcuOSw3LjYyLDcuOUgyNy4xNEMzMC4yMSwzMSwzMywyOCwz''@;'; put 'put ''MywyNC42NWE2LjMxLDYuMzEsMCwwLDAtNS4zNy02LjI2bC0xLjE4LS4xOC4zOS0xLjEzQTguMTgsOC4xOCwwLDAsMCwxOS4wOSw2LjIzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ1LDcuNDUsMCwwLDEtMi4xLS41NCw4LDgsMCwwLDEtLjMsNC4xNmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3LjA5''@;'; put 'put ''LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3YTguMjQsOC4yNCwwLDAsMSw4LjE5LThBOC4xMyw4LjEzLDAsMCwxLDIyLjU4LDdhNy41Myw3LjUzLDAsMCwxLS4wOC0xLDcuNTEsNy41MSwwLDAsMSwuMDktMS4x''@;'; put 'put ''MkExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEwLjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTQsMTAuMTQsMCwwLDAsLjItMS4zaC0yYTguMjgsOC4yOCwwLDAsMS0uMzcsMS43MmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3''@;'; put 'put ''LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3QTguMTYsOC4xNiwwLDAsMSwyMSw2LjQ3bDEtMS44QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3''@;'; put 'put ''LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1h''@;'; put 'put ''bGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwy''@;'; put 'put ''NC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSww''@;'; put 'put ''LTFhNy40NCw3LjQ0LDAsMCwxLTYuNi04LjU4QTEwLjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4''@;'; put 'put ''LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTUsMTAuMTUsMCwwLDAsLjItMS4yNmgtN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLTUuMjFBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAs''@;'; put 'put ''MCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNI''@;'; put 'put ''b3Jpem9udGFsPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIg''@;'; put 'put ''cj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9''@;'; put 'put ''IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+Jyks''@;'; put 'put ''TC5DbHJTaGFwZUZpbHRlckdyaWQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0u''@;'; put 'put ''MjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03''@;'; put 'put ''LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxMLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43''@;'; put 'put ''TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAs''@;'; put 'put ''MSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+JyksTC5DbHJTaGFwZVZtQnVnPSgwLEUuY2xySWNvblNWRykoJzxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuMTUiIHN0eWxlPSJpc29sYXRpb246''@;'; put 'put ''aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjc5LDE0LjgzYTEuMDksMS4wOSwwLDAsMC0xLjQ3LS41NiwxLjA5LDEuMDksMCwwLDAtLjU0LDEuNDlsMi40Nyw1LjRjLjM5Ljg1LjgsMS4yOSwxLjU3LDEuMjlTNywyMiw3LjM5LDIxLjE2bDIuMTctNC43N2EuMzMuMzMsMCwwLDEsLjMxLS4yLjM1LjM1''@;'; put 'put ''LDAsMCwxLC4zNS4zNXY0LjYxYTEuMTUsMS4xNSwwLDAsMCwxLjE0LDEuMywxLjE3LDEuMTcsMCwwLDAsMS4xNy0xLjNWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTcsMS4xNywwLDEsMCwyLjMyLDBWMTcuMzhhMS4xNSwx''@;'; put 'put ''LjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTYsMS4xNiwwLDEsMCwyLjMxLDBWMTYuODZhMi42OSwyLjY5LDAsMCwwLTIuNzgtMi42OSwzLjU3LDMuNTcsMCwwLDAtMi40NywxLjA1LDIuNzUsMi43NSwwLDAsMC0yLjM4LTEuMDVBMy45MywzLjkz''@;'; put 'put ''LDAsMCwwLDEyLDE1LjIyYTIuODIsMi44MiwwLDAsMC0yLjA4LTEuMDVBMi41NSwyLjU1LDAsMCwwLDcuNCwxNS44OUw1LjgyLDE5LjYzbC0yLTQuOCIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zMywxNC4xOEExLjE0LDEuMTQsMCwwLDAsMzEuOSwxNWwtMS4xOSwzLjczTDI5LjUsMTUu''@;'; put 'put ''MDVhMS4xOCwxLjE4LDAsMCwwLTEuMTUtLjg3aC0uMWExLjIsMS4yLDAsMCwwLTEuMTUuODdsLTEuMTksMy43MS0xLjE4LTMuNzFhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjg3LDEuMDgsMS4wOCwwLDAsMC0xLjEyLDEuMDcsMS42OCwxLjY4LDAsMCwwLC4xLjU0bDIsNS43YTEuMjcsMS4yNyww''@;'; put 'put ''LDAsMCwxLjI3LDEsMS4yNCwxLjI0LDAsMCwwLDEuMi0uOTNsMS4yLTMuNjQsMS4yLDMuNjRhMS4yNSwxLjI1LDAsMCwwLDEuMjYuOTNBMS4yNywxLjI3LDAsMCwwLDMyLDIxLjVMMzQsMTUuNzNhMS43NywxLjc3LDAsMCwwLC4wOC0uNDhBMS4wNywxLjA3LDAsMCwwLDMzLDE0LjE4WiIgZmls''@;'; put 'put ''bD0iI2ZmZmZmZiIvPicpLEwuQ2xyU2hhcGVTZWFyY2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4zMyw1LjA1QTEwLjk1LDEwLjk1LDAsMSwxLDUuMzksMTYsMTEsMTEsMCwwLDEsMTYuMzMsNS4wNW0w''@;'; put 'put ''LTIuMDVhMTMsMTMsMCwxLDAsMTMsMTMsMTMsMTMsMCwwLDAtMTMtMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zNSwzMy4yOWwtNy4zNy03LjQyLTEuNDIsMS40MSw3LjM3LDcuNDJBMSwxLDAsMSww''@;'; put 'put ''LDM1LDMzLjI5WiIvPicpLEwuQ2xyU2hhcGVWaWV3Q29sdW1ucz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDItMlY3''@;'; put 'put ''QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFptMTAsMEgxNVY3aDhaIi8+JyksTC5DbHJTaGFwZUFuZ2xlRG91YmxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjksMTkuNDFhMSwxLDAsMCwxLS43MS0u''@;'; put 'put ''MjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOSwzMC40MWExLDEs''@;'; put 'put ''MCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMwLjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPicpLEwuQ2xyU2hhcGVDYWxlbmRhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjgiIHk9IjE5IiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xMSIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNCIgZD0iTTEwLDEwYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAs''@;'; put 'put ''MCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJh''@;'; put 'put ''ZGdlZCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIHg9IjIwIiB5PSIxOSIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xMS0tYmFkZ2VkIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9''@;'; put 'put ''IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcu''@;'; put 'put ''ODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjgiIHk9''@;'; put 'put ''IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01LS1hbGVydGVkIiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05''@;'; put 'put ''LS1hbGVydGVkIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0i''@;'; put 'put ''MiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBvbHlnb24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIu''@;'; put 'put ''MiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYx''@;'; put 'put ''NGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjYsMTBhMSwxLDAs''@;'; put 'put ''MCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5''@;'; put 'put ''QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEEx''@;'; put 'put ''Ljc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlpt''@;'; put 'put ''MC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgs''@;'; put 'put ''My42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJabTAt''@;'; put 'put ''NUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRXZlbnQ9KDAs''@;'; put 'put ''RS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwz''@;'; put 'put ''NCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuODEsMjAu''@;'; put 'put ''NWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLTEuNDEtMS40MUwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBI''@;'; put 'put ''NFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSww''@;'; put 'put ''LDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAsLjIz''@;'; put 'put ''LS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMg''@;'; put 'put ''OCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAu''@;'; put 'put ''MTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9''@;'; put 'put ''Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFW''@;'; put 'put ''M2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDAsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5''@;'; put 'put ''VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0yNS45NCwxNi41OGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAs''@;'; put 'put ''MSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNB''@;'; put 'put ''MSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNi4zYTEuMzQsMS4zNCwwLDAsMS0uMzYsMS4xOGwtOS42''@;'; put 'put ''Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOCw3LTdoLTFBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCww''@;'; put 'put ''LDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcu''@;'; put 'put ''NSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpt''@;'; put 'put ''LTQuMDYsMy4wOC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVFeWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4y''@;'; put 'put ''Ni40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2''@;'; put 'put ''LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA5LDExLjE3QTYuODYsNi44NiwwLDEsMCwyNSwxOCw2Ljg2LDYuODYsMCwwLDAsMTguMDksMTEuMTdabTAsMTEuNzJBNC44Niw0Ljg2''@;'; put 'put ''LDAsMSwxLDIzLDE4LDQuODcsNC44NywwLDAsMSwxOC4wOSwyMi44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3''@;'; put 'put ''LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQs''@;'; put 'put ''MjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlRXllSGlkZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0LS4w''@;'; put 'put ''NkE0Ljg3LDQuODcsMCwwLDEsMjMuNjIsMThhNC43OSw0Ljc5LDAsMCwxLS4wNi43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2Ljgy''@;'; put 'put ''LDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAs''@;'; put 'put ''Ny4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEu''@;'; put 'put ''NiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMzcs''@;'; put 'put ''MTEuMTdBNi43OSw2Ljc5LDAsMCwwLDE2LDExLjZsOC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjM3LDExLjE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3''@;'; put 'put ''LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMs''@;'; put 'put ''MTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDku''@;'; put 'put ''MjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOC4zLDguM2E2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4y''@;'; put 'put ''OSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxMLkNsclNoYXBlU3RlcEZvcndhcmQyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcuMTIs''@;'; put 'put ''MjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRoMEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI2LjQ5LDVhMS43LDEuNywwLDAsMC0xLjcsMS43VjI5''@;'; put 'put ''LjNhMS43LDEuNywwLDAsMCwzLjQsMFY2LjdBMS43LDEuNywwLDAsMCwyNi40OSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUFycm93PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDguMzQs''@;'; put 'put ''MTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksTC5Db3JlU2hhcGVzPXsidW5rbm93bi1zdGF0dXMi''@;'; put 'put ''OkwuQ2xyU2hhcGVVbmtub3duU3RhdHVzLGhvbWU6TC5DbHJTaGFwZUhvbWUsY29nOkwuQ2xyU2hhcGVDb2csY2hlY2s6TC5DbHJTaGFwZUNoZWNrLHRpbWVzOkwuQ2xyU2hhcGVUaW1lcywiZXhjbGFtYXRpb24tdHJpYW5nbGUiOkwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlLCJleGNs''@;'; put 'put ''YW1hdGlvbi1jaXJjbGUiOkwuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZSwiY2hlY2stY2lyY2xlIjpMLkNsclNoYXBlQ2hlY2tDaXJjbGUsImluZm8tY2lyY2xlIjpMLkNsclNoYXBlSW5mb0NpcmNsZSwiaW5mby1zdGFuZGFyZCI6TC5DbHJTaGFwZUluZm9TdGFuZGFyZCwic3VjY2Vzcy1z''@;'; put 'put ''dGFuZGFyZCI6TC5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZCwiZXJyb3Itc3RhbmRhcmQiOkwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkLCJ3YXJuaW5nLXN0YW5kYXJkIjpMLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkLCJoZWxwLWluZm8iOkwuQ2xyU2hhcGVIZWxwSW5mbyxiYXJzOkwuQ2xyU2hh''@;'; put 'put ''cGVCYXJzLHVzZXI6TC5DbHJTaGFwZVVzZXIsYW5nbGU6TC5DbHJTaGFwZUFuZ2xlLGZvbGRlcjpMLkNsclNoYXBlRm9sZGVyLCJmb2xkZXItb3BlbiI6TC5DbHJTaGFwZUZvbGRlck9wZW4sYmVsbDpMLkNsclNoYXBlQmVsbCxpbWFnZTpMLkNsclNoYXBlSW1hZ2UsY2xvdWQ6TC5DbHJTaGFw''@;'; put 'put ''ZUNsb3VkLCJlbGxpcHNpcy1ob3Jpem9udGFsIjpMLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsLCJlbGxpcHNpcy12ZXJ0aWNhbCI6TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWwsImZpbHRlci1ncmlkIjpMLkNsclNoYXBlRmlsdGVyR3JpZCwiZmlsdGVyLWdyaWQtY2lyY2xlIjpMLkNs''@;'; put 'put ''clNoYXBlRmlsdGVyR3JpZENpcmNsZSwidm0tYnVnIjpMLkNsclNoYXBlVm1CdWcsc2VhcmNoOkwuQ2xyU2hhcGVTZWFyY2gsInZpZXctY29sdW1ucyI6TC5DbHJTaGFwZVZpZXdDb2x1bW5zLCJhbmdsZS1kb3VibGUiOkwuQ2xyU2hhcGVBbmdsZURvdWJsZSxjYWxlbmRhcjpMLkNsclNoYXBl''@;'; put 'put ''Q2FsZW5kYXIsZXZlbnQ6TC5DbHJTaGFwZUV2ZW50LGV5ZTpMLkNsclNoYXBlRXllLCJleWUtaGlkZSI6TC5DbHJTaGFwZUV5ZUhpZGUsInN0ZXAtZm9yd2FyZC0yIjpMLkNsclNoYXBlU3RlcEZvcndhcmQyLGFycm93OkwuQ2xyU2hhcGVBcnJvd30sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwu''@;'; put 'put ''Q29yZVNoYXBlcywiaG91c2UiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmhvbWUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJzZXR0aW5ncyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY29nKSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KEwuQ29yZVNoYXBlcywic3VjY2VzcyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY2hlY2spKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJjbG9zZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMudGltZXMpKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJ3YXJuaW5nIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tdHJpYW5nbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImVycm9yIiwoMCxCLmRlc2NyaXB0b3JDb25m''@;'; put 'put ''aWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJpbmZvIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siaW5mby1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVT''@;'; put 'put ''aGFwZXMsIm1lbnUiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmJhcnMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJhdmF0YXIiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLnVzZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''TC5Db3JlU2hhcGVzLCJjYXJldCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYW5nbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJkaXJlY3RvcnkiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmZvbGRlcikpLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsIm5vdGlmaWNhdGlvbiIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYmVsbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImNvbGxhcHNlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBl''@;'; put 'put ''c1siYW5nbGUtZG91YmxlIl0pKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzIjpmdW5jdGlvbihKZSxMLGdlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuQ2xyU2hhcGVMb2dv''@;'; put 'put ''dXQ9TC5DbHJTaGFwZUxvZ2luPUwuQ2xyU2hhcGVIZWxwPUwuQ2xyU2hhcGVDb3B5PUwuQ2xyU2hhcGVDaGlsZEFycm93PUwuQ2xyU2hhcGVDaXJjbGVBcnJvdz1MLkNsclNoYXBlQWxhcm1DbG9jaz1MLkNsclNoYXBlQ2xvY2s9TC5DbHJTaGFwZUhpc3Rvcnk9TC5DbHJTaGFwZVRhZ3M9TC5D''@;'; put 'put ''bHJTaGFwZVRhZz1MLkNsclNoYXBlVHJhc2g9TC5DbHJTaGFwZVRpbWVzQ2lyY2xlPUwuQ2xyU2hhcGVCYW49TC5DbHJTaGFwZVBsdXNDaXJjbGU9TC5DbHJTaGFwZU1pbnVzQ2lyY2xlPUwuQ2xyU2hhcGVNaW51cz1MLkNsclNoYXBlUGx1cz1MLkNsclNoYXBlRmlsZT1MLkNsclNoYXBlUGlu''@;'; put 'put ''PUwuQ2xyU2hhcGVGaWx0ZXI9TC5DbHJTaGFwZVBvcE91dD1MLkNsclNoYXBlVXNlcnM9TC5DbHJTaGFwZVVubG9jaz1MLkNsclNoYXBlTG9jaz1MLkNsclNoYXBlVXBsb2FkPUwuQ2xyU2hhcGVEb3dubG9hZD1MLkNsclNoYXBlTGlnaHRidWxiPUwuQ2xyU2hhcGVWaWV3Q2FyZHM9TC5DbHJT''@;'; put 'put ''aGFwZVZpZXdMaXN0PUwuQ2xyU2hhcGVTeW5jPUwuQ2xyU2hhcGVSZWZyZXNoPUwuQ2xyU2hhcGVOb3RlPUwuQ2xyU2hhcGVQZW5jaWw9TC5DbHJTaGFwZVRoZXJtb21ldGVyPUwuQ2xyU2hhcGVCdWc9TC5DbHJTaGFwZVNjaXNzb3JzPUwuQ2xyU2hhcGVBc3Rlcmlzaz1MLkNsclNoYXBlQm9v''@;'; put 'put ''az1MLkNsclNoYXBlT2JqZWN0cz1MLkNsclNoYXBlUmVzaXplPUwuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2s9TC5DbHJTaGFwZUN1cnNvckhhbmQ9TC5DbHJTaGFwZUN1cnNvckFycm93PUwuQ2xyU2hhcGVHcmlkVmlldz1MLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb249TC5DbHJTaGFwZU5l''@;'; put 'put ''dz1MLkNsclNoYXBlQWxhcm1PZmY9TC5DbHJTaGFwZVBpbmJvYXJkPUwuQ2xyU2hhcGVBZGRUZXh0PXZvaWQgMCxMLkNsclNoYXBlQ2xvbmU9TC5DbHJTaGFwZUN1cnNvck1vdmU9TC5DbHJTaGFwZVdhbmQ9TC5DbHJTaGFwZVN1bj1MLkNsclNoYXBlTW9vbj1MLkNsclNoYXBlRmlsdGVyMj1M''@;'; put 'put ''LkNsclNoYXBlRHJhZ0hhbmRsZT1MLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPUwuQ2xyU2hhcGVDb2xvclBpY2tlcj1MLkNsclNoYXBlQnJpZWZjYXNlPUwuQ2xyU2hhcGVFeHBhbmRDYXJkPUwuQ2xyU2hhcGVDb2xsYXBzZUNhcmQ9TC5DbHJTaGFwZVNvcnRCeT1MLkNsclNoYXBlQWNjZXNz''@;'; put 'put ''aWJpbGl0eTI9TC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPUwuQ2xyU2hhcGVTaHJpbms9TC5DbHJTaGFwZVBhcGVyY2xpcD1MLkNsclNoYXBlRmlsZUdyb3VwPUwuQ2xyU2hhcGVSZXBlYXQ9TC5DbHJTaGFwZUlkQmFkZ2U9TC5DbHJTaGFwZUJhbGFuY2U9TC5DbHJTaGFwZU9yZ2FuaXphdGlv''@;'; put 'put ''bj1MLkNsclNoYXBlTm9BY2Nlc3M9TC5DbHJTaGFwZUhvdXJnbGFzcz1MLkNsclNoYXBlRmxhbWU9TC5DbHJTaGFwZVRhcmdldD1MLkNsclNoYXBlQnVsbHNleWU9TC5DbHJTaGFwZVdyZW5jaD1MLkNsclNoYXBlQm9sdD1MLkNsclNoYXBlTGlicmFyeT1MLkNsclNoYXBlS2V5PUwuQ2xyU2hh''@;'; put 'put ''cGVab29tT3V0PUwuQ2xyU2hhcGVab29tSW49TC5DbHJTaGFwZVdpbmRvd1Jlc3RvcmU9TC5DbHJTaGFwZVdpbmRvd01pbj1MLkNsclNoYXBlV2luZG93TWF4PUwuQ2xyU2hhcGVXaW5kb3dDbG9zZT1MLkNsclNoYXBlVG9vbHM9TC5DbHJTaGFwZVN3aXRjaD1MLkNsclNoYXBlVHdvV2F5QXJy''@;'; put 'put ''b3dzPUwuQ2xyU2hhcGVGaWxlU2V0dGluZ3M9TC5DbHJTaGFwZVNjcm9sbD1MLkNsclNoYXBlVW5kbz1MLkNsclNoYXBlUmVkbz1MLkNsclNoYXBlTGlzdD1MLkNsclNoYXBlRmlyZXdhbGw9TC5DbHJTaGFwZUNsaXBib2FyZD1MLkNsclNoYXBlU2xpZGVyPUwuQ2xyU2hhcGVXb3JsZD1MLkNs''@;'; put 'put ''clNoYXBlUHJpbnRlcj12b2lkIDAsTC5Fc3NlbnRpYWxTaGFwZXM9TC5DbHJTaGFwZUNvbG9yUGFsZXR0ZT1MLkNsclNoYXBlRmlyc3RBaWQ9TC5DbHJTaGFwZUJldGE9TC5DbHJTaGFwZURvdENpcmNsZT1MLkNsclNoYXBlQ2lyY2xlPUwuQ2xyU2hhcGVDcm9zc2hhaXJzPUwuQ2xyU2hhcGVW''@;'; put 'put ''b2x1bWU9TC5DbHJTaGFwZVRhYmxlPUwuQ2xyU2hhcGVTbm93Zmxha2U9TC5DbHJTaGFwZUZ1ZWw9TC5DbHJTaGFwZUZvcm09TC5DbHJTaGFwZUZpc2g9TC5DbHJTaGFwZVRyZWU9TC5DbHJTaGFwZVJlY3ljbGU9TC5DbHJTaGFwZUZpbHRlck9mZj1MLkNsclNoYXBlRmlsZVppcD1MLkNsclNo''@;'; put 'put ''YXBlQ3Vyc29ySGFuZE9wZW49TC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPUwuQ2xyU2hhcGVUcmVlVmlldz1MLkNsclNoYXBlUG9ydHJhaXQ9TC5DbHJTaGFwZVBhc3RlPUwuQ2xyU2hhcGVMYW5kc2NhcGU9TC5DbHJTaGFwZUVyYXNlcj1MLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcj1MLkNs''@;'; put 'put ''clNoYXBlRGV0YWlscz12b2lkIDA7dmFyIEI9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxNZT1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMv''@;'; put 'put ''c2hhcGVzL2NvcmUtc2hhcGVzLnRzIik7TC5DbHJTaGFwZUFkZFRleHQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwyMUgxM2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDE2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgxM0ExLDEsMCwwLDAsMTIsMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgZD0iTTI3LDI3SDEzYTEsMSwwLDAsMCwwLDJIMjdhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTUuODksOWExLDEsMCwwLDAtMS0xSDEwVjMuMjFhMSwxLDAs''@;'; put 'put ''MCwwLTIsMFY4SDIuODlhMSwxLDAsMCwwLDAsMkg4djUuMjFhMSwxLDAsMCwwLDIsMFYxMGg0Ljg5QTEsMSwwLDAsMCwxNS44OSw5WiIvPicpLEwuQ2xyU2hhcGVQaW5ib2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTMwLDMwLDYsMzAsNiw2SDIyVjRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEgzMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzMuNTcsOS4zM2wt''@;'; put 'put ''Ny03YTEsMSwwLDAsMC0xLjQxLDEuNDFsNyw3YTEsMSwwLDEsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIyLjEsMTEuMTlsLjcuNUwyNi40Niw4LDI1LDYuNTYsMjIuNTEsOS4xM2MtMi0u''@;'; put 'put ''ODctNC4zNS4xNC01LjkyLDEuNjhsLS43Mi43MSwzLjU0LDMuNTQtMy42NywzLjY3LDEuNDEsMS40MSwzLjY3LTMuNjdMMjQuMzcsMjBsLjcxLS43MmMxLjU0LTEuNTcsMi41NS0zLjkyLDEuNjgtNS45M2wyLjU0LTIuNTdMMjcuODgsOS4zOCwyNC4yMSwxMy4xbC40OS42OWMuNzYsMSwuMjUs''@;'; put 'put ''Mi4zNy0uNDEsMy4zM0wxOC43NywxMS42QzE5Ljg0LDEwLjg2LDIxLjE1LDEwLjUsMjIuMSwxMS4xOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwzMCw2LDMwLDYsNkgyMlY0SDZBMiwyLDAsMCwwLDQsNlYzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNTcsOS4zM2wtNy03YTEsMSwwLDAsMC0xLjQxLDEuNDFsMS4zOCwxLjM4LTQsNGMtMi0uODctNC4zNS4x''@;'; put 'put ''NC01LjkyLDEuNjhsLS43Mi43MSwzLjU0LDMuNTQtMy42NywzLjY3LDEuNDEsMS40MSwzLjY3LTMuNjdMMjQuMzcsMjBsLjcxLS43MmMxLjU0LTEuNTcsMi41NS0zLjkxLDEuNjgtNS45Mmw0LTQsMS4zOCwxLjM4YTEsMSwwLDEsMCwxLjQxLTEuNDFaIi8+JyksTC5DbHJTaGFwZUFsYXJtT2Zm''@;'; put 'put ''PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjMzLDIxLjU0YS45LjksMCwwLDAtLjQxLTEuMmwtMy4yLTEuNTZMMjQuODksMjJBLjg5Ljg5LDAsMCwwLDI1LjMzLDIxLjU0WiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCw4LjZhLjkuOSwwLDAsMC0uOS45djQuNmwxLjgsMS44MVY5LjVBLjkuOSwwLDAsMCwxOCw4LjZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNCIgZD0iTTExLjQyLDMuNDNhNS44LDUuOCwwLDAsMC01LjgxLS44MUw4LjMsNS4zMkExNiwxNiwwLDAsMSwxMS40MiwzLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xOCw0YTEzLjkxLDEzLjkxLDAs''@;'; put 'put ''MCwwLTguMywyLjc1bDEuNDIsMS40M0ExMiwxMiwwLDAsMSwyNy44MiwyNC45bDEuNDIsMS40M0ExNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0xLjU2LDQuMjEsMi43Myw1LjM4YTUu''@;'; put 'put ''Nyw1LjcsMCwwLDAsLjY3LDYuMUExNS43OCwxNS43OCwwLDAsMSw1LjQ2LDguMTJMNi44OCw5LjU1QTEzLjk0LDEzLjk0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuODksMTMuODksMCwwLDAsMTYuOCwwbDQuMTQsNC4xNUwzMiwz''@;'; put 'put ''MS45LDMsMi44Wk0yNSwyNy43MkExMS44OSwxMS44OSwwLDAsMSwxOCwzMCwxMiwxMiwwLDAsMSw2LDE4YTExLjg5LDExLjg5LDAsMCwxLDIuMjktN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMS40NywzLjg0YTUu''@;'; put 'put ''NzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMS40MiwzLjQzYTUuOCw1LjgsMCww''@;'; put 'put ''LDAtNS43Ny0uODJMOC4zMyw1LjNBMTYsMTYsMCwwLDEsMTEuNDIsMy40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNC45MiwyMS45NGw0LjM0LDQuMzZBMTQsMTQsMCwwLDAsOS43NSw2LjczTDE3LDE0VjkuNjlh''@;'; put 'put ''MSwxLDAsMCwxLDIsMFYxNmwyLjMzLDIuMzRMMjUsMjAuMWExLDEsMCwwLDEsLjQ3LDEuMzNBMSwxLDAsMCwxLDI0LjkyLDIxLjk0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTEuNjEsNC4yMSwyLjczLDUuMzRhNS43''@;'; put 'put ''Myw1LjczLDAsMCwwLC42Nyw2LjE1QTE1Ljg4LDE1Ljg4LDAsMCwxLDUuNDgsOC4xTDYuOTEsOS41MkExMy45NCwxMy45NCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjg5LDEzLjg5LDAsMCwwLDE2LjgzLDBsNC4xNiw0LjE3TDMy''@;'; put 'put ''LDMxLjksMywyLjhaIi8+JyksTC5DbHJTaGFwZU5ldz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LjU5LDIzbC00LjA4LTUsNC00LjlhMS44MiwxLjgyLDAsMCwwLC4yMy0xLjk0QTEuOTMsMS45MywwLDAs''@;'; put 'put ''MCwzMi45NCwxMGgtMzFBMS45MSwxLjkxLDAsMCwwLDAsMTEuODhWMjQuMTNBMS45MSwxLjkxLDAsMCwwLDEuOTQsMjZIMzMuMDVhMS45MywxLjkzLDAsMCwwLDEuNzctMS4wOUExLjgyLDEuODIsMCwwLDAsMzQuNTksMjNaTTIsMjRWMTJIMzIuNzhsLTQuODQsNS45M0wzMi44NSwyNFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgcG9pbnRzPSI5LjM5IDE5LjM1IDYuMTMgMTUgNSAxNSA1IDIxLjE4IDYuMTMgMjEuMTggNi4xMyAxNi44NCA5LjM5IDIxLjE4IDEwLjUxIDIxLjE4IDEwLjUxIDE1IDkuMzkg''@;'; put 'put ''MTUgOS4zOSAxOS4zNSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBwb2ludHM9IjEyLjE4IDIxLjE4IDE2Ljg0IDIxLjE4IDE2Ljg0IDIwLjE2IDEzLjMxIDIwLjE2IDEzLjMxIDE4LjU1IDE2LjUgMTguNTUgMTYu''@;'; put 'put ''NSAxNy41MiAxMy4zMSAxNy41MiAxMy4zMSAxNi4wMyAxNi44NCAxNi4wMyAxNi44NCAxNSAxMi4xOCAxNSAxMi4xOCAyMS4xOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBwb2ludHM9IjI0LjUyIDE5LjQzIDIz''@;'; put 'put ''LjA2IDE1IDIxLjg0IDE1IDIwLjM3IDE5LjQzIDE5LjA1IDE1IDE3LjgyIDE1IDE5Ljc4IDIxLjE4IDIwLjg5IDIxLjE4IDIyLjQ1IDE2LjU5IDI0IDIxLjE4IDI1LjEzIDIxLjE4IDI3LjA4IDE1IDI1Ljg1IDE1IDI0LjUyIDE5LjQzIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuMTEsMjQuNDlsLTMuOTItNi42MiwzLjg4LTYuMzVBMSwxLDAsMCwwLDMzLjIyLDEwSDJhMiwyLDAsMCwwLTIsMlYyNGEyLDIsMCwwLDAsMiwySDMzLjI1QTEsMSwwLDAsMCwzNC4xMSwyNC40OVptLTIzLjYtMy4zMUg5LjM5TDYu''@;'; put 'put ''MTMsMTYuODR2NC4zNUg1VjE1SDYuMTNsMy4yNyw0LjM1VjE1aDEuMTJaTTE2Ljg0LDE2SDEzLjMxdjEuNDloMy4ydjFoLTMuMnYxLjYxaDMuNTN2MUgxMi4xOFYxNWg0LjY1Wm04LjI5LDUuMTZIMjRsLTEuNTUtNC41OUwyMC45LDIxLjE4SDE5Ljc4bC0yLTYuMThIMTlsMS4zMiw0LjQzTDIx''@;'; put 'put ''Ljg0LDE1aDEuMjJsMS40Niw0LjQzTDI1Ljg1LDE1aDEuMjNaIi8+JyksTC5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0x''@;'; put 'put ''NiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43''@;'; put 'put ''OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMDgsMTEuMDgsMCwwLDEsMjguMjksMjQuNjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIwLjYzYTEsMSwwLDAsMCwxLTFWOC40OGExLDEsMCwxLDAtMiwwVjE5LjYxQTEsMSwwLDAsMCwxOCwyMC42M1oiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIx''@;'; put 'put ''OCIgY3k9IjI0LjA0IiByPSIxLjMzIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEs''@;'; put 'put ''MCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTE2LjkzLDkuMTNhMS40MSwxLjQxLDAsMSwxLDIuODEsMFYxOC45YTEuNDEsMS40MSwwLDEsMS0yLjgxLDBabTEuNDEsMTcuMzVhMS44NywxLjg3LDAsMSwxLDEuODctMS44''@;'; put 'put ''N0ExLjg3LDEuODcsMCwwLDEsMTguMzQsMjYuNDdaIi8+JyksTC5DbHJTaGFwZUdyaWRWaWV3PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTQsNEg2QTIsMiwwLDAsMCw0LDZ2OGEyLDIsMCwwLDAsMiwyaDhh''@;'; put 'put ''MiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwxNCw0Wk02LDE0VjZoOHY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMCw0SDIyYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY2QTIsMiwwLDAsMCwzMCw0Wk0yMiwxNFY2aDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQsMjBINmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWMjJBMiwyLDAs''@;'; put 'put ''MCwwLDE0LDIwWk02LDMwVjIyaDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzAsMjBIMjJhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjIyQTIsMiwwLDAsMCwzMCwy''@;'; put 'put ''MFpNMjIsMzBWMjJoOHY4WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iNCIgeT0iNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjIwIiB5PSI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgeD0iNCIgeT0iMjAiIHdpZHRoPSIxMiIgaGVpZ2h0PSIx''@;'; put 'put ''MiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiB4PSIyMCIgeT0iMjAiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+JyksTC5DbHJTaGFwZUN1cnNvckFycm93PSgwLEUuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTQuNTgsMzIuMzFhMSwxLDAsMCwxLS45NC0uNjVMNCw1LjY1QTEsMSwwLDAsMSw1LjI1LDQuMzdsMjYsOS42OGExLDEsMCwwLDEtLjA1LDEuODlsLTguMzYsMi41Nyw4LjMsOC4zYTEs''@;'; put 'put ''MSwwLDAsMSwwLDEuNDFsLTMuMjYsMy4yNmExLDEsMCwwLDEtLjcxLjI5aDBhMSwxLDAsMCwxLS43MS0uMjlsLTguMzMtOC4zMy0yLjYsOC40NWExLDEsMCwwLDEtLjkzLjcxWm0zLjA5LTEyYTEsMSwwLDAsMSwuNzEuMjlsOC43OSw4Ljc5TDI5LDI3LjUxbC04Ljc2LTguNzZhMSwxLDAsMCwx''@;'; put 'put ''LC40MS0xLjY2bDcuMTMtMi4yTDYuNiw3bDcuODksMjEuMkwxNi43MSwyMWExLDEsMCwwLDEsLjcxLS42OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOSwxMi4zNiwzLjg4LDNBMSwxLDAsMCwwLDIuNTksNC4yOEwx''@;'; put 'put ''MiwyOS40NGExLDEsMCwwLDAsMS44OS0uMDVsMi42OS04Ljc1LDkuMTIsOC45YTEsMSwwLDAsMCwxLjQxLDBsMi4zNS0yLjM1YTEsMSwwLDAsMCwwLTEuNDFsLTkuMDktOC44NkwyOSwxNC4yNUExLDEsMCwwLDAsMjksMTIuMzZaIi8+JyksTC5DbHJTaGFwZUN1cnNvckhhbmQ9KDAsRS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC43NCwxNS4xOWExMy42NiwxMy42NiwwLDAsMC02Ljg3LTMuODNBMjYsMjYsMCwwLDAsMTgsMTAuNThWNS4yOEEzLjQsMy40LDAsMCwwLDE0LjUsMiwzLjQsMy40LDAsMCwwLDEx''@;'; put 'put ''LDUuMjh2MTBMOS40LDEzLjdhMy43NywzLjc3LDAsMCwwLTUuMjgsMEEzLjY3LDMuNjcsMCwwLDAsMywxNi4zM2EzLjYsMy42LDAsMCwwLDEsMi41Nmw0LjY2LDUuNTJhMTEuNTMsMTEuNTMsMCwwLDAsMS40Myw0LDEwLjEyLDEwLjEyLDAsMCwwLDIsMi41NHYxLjkyYTEuMDcsMS4wNywwLDAs''@;'; put 'put ''MCwxLDEuMDhIMjdhMS4wNywxLjA3LDAsMCwwLDEtMS4wOHYtMi43YTEyLjgxLDEyLjgxLDAsMCwwLDMtOC4zNnYtNkExLDEsMCwwLDAsMzAuNzQsMTUuMTlaTTI5LDIxLjg2YTEwLjcyLDEwLjcyLDAsMCwxLTIuNiw3LjI2LDEuMTEsMS4xMSwwLDAsMC0uNC43MlYzMkgxNC4xNFYzMC41MmEx''@;'; put 'put ''LDEsMCwwLDAtLjQ0LS44Myw3LjI2LDcuMjYsMCwwLDEtMS44Mi0yLjIzLDkuMTQsOS4xNCwwLDAsMS0xLjItMy41MiwxLDEsMCwwLDAtLjIzLS41OUw1LjUzLDE3LjUzYTEuNywxLjcsMCwwLDEsMC0yLjQyLDEuNzYsMS43NiwwLDAsMSwyLjQ3LDBsMywzdjMuMTRsMi0xVjUuMjhBMS40Miwx''@;'; put 'put ''LjQyLDAsMCwxLDE0LjUsNCwxLjQyLDEuNDIsMCwwLDEsMTYsNS4yOHYxMS44bDIsLjQzVjEyLjU5YTI0LjI3LDI0LjI3LDAsMCwxLDIuNTEuMThWMThsMS42LjM1VjEzYy40MS4wOC44My4xNywxLjI2LjI4YTE0Ljg4LDE0Ljg4LDAsMCwxLDEuNTMuNDl2NS4xNWwxLjYuMzVWMTQuNUExMS4w''@;'; put 'put ''NiwxMS4wNiwwLDAsMSwyOSwxNi4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOC42OSwxNC4zM3Y0LjgzbC0yLS40M1YxMy4yNGExNi4xOSwxNi4xOSwwLDAsMC0yLjMzLS44NHY1LjgybC0yLS40M1YxMmMtMS4x''@;'; put 'put ''LS4xOC0yLjE4LS4zLTMuMDgtLjM2djUuNTFsLTItLjQzVjExLjQ4aDBWNC4zNGEyLjUzLDIuNTMsMCwwLDAtMi42LTIuNDMsMi41MywyLjUzLDAsMCwwLTIuNiwyLjQzVjE3LjI3aDB2Mi41OWwtMiwxVjE1LjZMNy43NSwxMy4yMWEyLjgzLDIuODMsMCwwLDAtNCwwLDIuOTMsMi45MywwLDAs''@;'; put 'put ''MCwwLDQuMDlsNiw3LjFhMTAuODIsMTAuODIsMCwwLDAsMS4zOSw0LjIyLDguNDIsOC40MiwwLDAsMCwyLjIxLDIuNzN2Mi41NkgyNy43OVYzMC42MmExMi41NCwxMi41NCwwLDAsMCwzLTguNXYtNkExMCwxMCwwLDAsMCwyOC42OSwxNC4zM1oiLz4nKSxMLkNsclNoYXBlQ3Vyc29ySGFuZENs''@;'; put 'put ''aWNrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuNCwxNy42Yy0xLjgtMS45LTQuMi0zLjItNi43LTMuN2MtMS4xLTAuMy0yLjItMC41LTMuMy0wLjZjMi44LTMuMywyLjMtOC4zLTEtMTEuMXMtOC4zLTIu''@;'; put 'put ''My0xMS4xLDFzLTIuMyw4LjMsMSwxMS4xXG4gICAgICAgICAgICAgICAgICAgIGMwLjYsMC41LDEuMiwwLjksMS44LDEuMXYyLjJsLTEuNi0xLjVjLTEuNC0xLjQtMy43LTEuNC01LjIsMGMtMS40LDEuNC0xLjUsMy42LTAuMSw1bDQuNiw1LjRjMC4yLDEuNCwwLjcsMi43LDEuNCwzLjlcbiAg''@;'; put 'put ''ICAgICAgICAgICAgICAgICAgYzAuNSwwLjksMS4yLDEuOCwxLjksMi41djEuOWMwLDAuNiwwLjQsMSwxLDFoMTMuNmMwLjUsMCwxLTAuNSwxLTF2LTIuNmMxLjktMi4zLDIuOS01LjIsMi45LTguMXYtNS44XG4gICAgICAgICAgICAgICAgICAgIEMzMC43LDE3LjksMzAuNiwxNy43LDMwLjQs''@;'; put 'put ''MTcuNnogTTguNCw4LjJjMC0zLjMsMi43LTUuOSw2LTUuOGMzLjMsMCw1LjksMi43LDUuOCw2YzAsMS44LTAuOCwzLjQtMi4yLDQuNVY3LjlcbiAgICAgICAgICAgICAgICAgICAgYy0wLjEtMS44LTEuNi0zLjItMy40LTMuMmMtMS44LTAuMS0zLjQsMS40LTMuNCwzLjJ2NS4yQzkuNSwxMi4x''@;'; put 'put ''LDguNSwxMC4yLDguNCw4LjJMOC40LDguMnogTTI4LjcsMjRjMC4xLDIuNi0wLjgsNS4xLTIuNSw3LjFcbiAgICAgICAgICAgICAgICAgICAgYy0wLjIsMC4yLTAuNCwwLjQtMC40LDAuN3YyLjFIMTQuMnYtMS40YzAtMC4zLTAuMi0wLjYtMC40LTAuOGMtMC43LTAuNi0xLjMtMS4zLTEuOC0y''@;'; put 'put ''LjJjLTAuNi0xLTEtMi4yLTEuMi0zLjRcbiAgICAgICAgICAgICAgICAgICAgYzAtMC4yLTAuMS0wLjQtMC4yLTAuNmwtNC44LTUuN2MtMC4zLTAuMy0wLjUtMC43LTAuNS0xLjJjMC0wLjQsMC4yLTAuOSwwLjUtMS4yYzAuNy0wLjYsMS43LTAuNiwyLjQsMGwyLjksMi45djNsMS45LTFWNy45''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgICAgIGMwLjEtMC43LDAuNy0xLjMsMS41LTEuMmMwLjcsMCwxLjQsMC41LDEuNCwxLjJ2MTEuNWwyLDAuNHYtNC42YzAuMS0wLjEsMC4yLTAuMSwwLjMtMC4yYzAuNywwLDEuNCwwLjEsMi4xLDAuMnY1LjFsMS42LDAuM3YtNS4yXG4gICAgICAgICAgICAgICAg''@;'; put 'put ''ICAgIGwxLjIsMC4zYzAuNSwwLjEsMSwwLjMsMS41LDAuNXY1bDEuNiwwLjN2LTQuNmMwLjksMC40LDEuNywxLDIuNCwxLjdMMjguNywyNHoiLz4nKSxMLkNsclNoYXBlUmVzaXplPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNMTksNGExLDEsMCwwLDAsMCwyaDkuNTlsLTkuMjUsOS4yNWExLDEsMCwxLDAsMS40MSwxLjQxTDMwLDcuNDFWMTdhMSwxLDAsMCwwLDIsMFY0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik00LDE5''@;'; put 'put ''YTEsMSwwLDAsMSwyLDB2OS41OWw5LjI1LTkuMjVhMSwxLDAsMSwxLDEuNDEsMS40MUw3LjQxLDMwSDE3YTEsMSwwLDAsMSwwLDJINFoiLz4nKSxMLkNsclNoYXBlT2JqZWN0cz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTE2LjA4LDE0LjlhMTAuNDEsMTAuNDEsMCwwLDEsMS44Ny0uNzFsLTQtMTAuNzdhMiwyLDAsMCwwLTMuNzUsMEwyLDI1LjI2QTIsMiwwLDAsMCwzLjkyLDI4aDYuOTRhMTAsMTAsMCwwLDEtLjUyLTJIMy45MkwxMi4wNiw0LjEyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiw5SDIyYTIsMiwwLDAsMC0yLDJ2Mi44NWMuMjMsMCwuNDYsMCwuNjksMEExMC41MSwxMC41MSwwLDAsMSwyMiwxMy45VjExSDMyVjIxSDMwLjY1YTEwLjQyLDEwLjQyLDAsMCwxLC40NSwySDMyYTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWMTFBMiwyLDAsMCwwLDMyLDlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIwLjY5LDE1LjgxYTguNSw4LjUsMCwxLDAsOC41LDguNUE4LjUxLDguNTEsMCwwLDAsMjAuNjksMTUuODFabTAsMTVhNi41LDYu''@;'; put 'put ''NSwwLDEsMSw2LjUtNi41QTYuNTEsNi41MSwwLDAsMSwyMC42OSwzMC44MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMC42NSwyNC40NGE5LjUxLDkuNTEsMCwwLDEsNy4wNi05LjE3TDEzLDNhMSwxLDAsMCwwLTEu''@;'; put 'put ''ODcsMEwyLjA3LDI2LjU2QTEsMSwwLDAsMCwzLDI3LjkyaDguMzJBOS40NCw5LjQ0LDAsMCwxLDEwLjY1LDI0LjQ0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLDEwSDIwYTEsMSwwLDAsMC0xLDF2NGE5LjQzLDku''@;'; put 'put ''NDMsMCwwLDEsMTAuNjMsOUgzMmExLDEsMCwwLDAsMS0xVjExQTEsMSwwLDAsMCwzMiwxMFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgY3g9IjIwLjE1IiBjeT0iMjQuNDQiIHI9IjcuNSIvPicpLEwuQ2xyU2hhcGVCb29r''@;'; put 'put ''PSgwLEUuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIxMCIgeT0iNS4yIiB3aWR0aD0iMTgiIGhlaWdodD0iMS41NSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIGQ9Ik0yOSw4SDkuODZBMS44OSwxLjg5LDAsMCwxLDgsNiwyLDIsMCwwLDEsOS44Niw0SDI5YTEsMSwwLDAsMCwwLTJIOS44NkE0LDQsMCwwLDAsNiw2YTQuMTQsNC4xNCwwLDAsMCwwLC40OSwxLDEsMCwwLDAsMCwuMjRWMzBhNCw0LDAsMCwwLDMuODYsNEgyOWExLDEsMCwwLDAs''@;'; put 'put ''MS0xVjkuMjVzMC0uMDYsMC0uMDksMC0uMDYsMC0uMDlBMS4wNywxLjA3LDAsMCwwLDI5LDhaTTI4LDMySDkuODZBMiwyLDAsMCwxLDgsMzBWOS41NUEzLjYzLDMuNjMsMCwwLDAsOS44NiwxMEgyOFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIHg9IjEwIiB5PSI1LjIiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxLjU1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjksOEg5Ljg2QTEuODksMS44OSwwLDAsMSw4LDYsMiwyLDAsMCwxLDkuODYsNEgyOWEx''@;'; put 'put ''LDEsMCwxLDAsMC0ySDkuODZBNCw0LDAsMCwwLDYsNmE0LjE0LDQuMTQsMCwwLDAsMCwuNDksMSwxLDAsMCwwLDAsLjI0VjMwYTQsNCwwLDAsMCwzLjg2LDRIMjlhMSwxLDAsMCwwLDEtMVY5LjI1czAtLjA2LDAtLjA5LDAtLjA2LDAtLjA5QTEuMDcsMS4wNywwLDAsMCwyOSw4WiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVBc3Rlcmlzaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4Ljg5LDIwLjkxbC01LTIuOTEsNC44Ny0yLjg2YTMuMTEsMy4xMSwwLDAsMCwxLjE0LTEuMDgsMywzLDAsMCwwLTQuMDktNC4xNUwy''@;'; put 'put ''MSwxMi43NlY3YTMsMywwLDAsMC02LDB2NS43NkwxMC4xNSw5LjkxYTMsMywwLDEsMC0zLDUuMThsNSwyLjkxTDcuMiwyMC44NmEzLjExLDMuMTEsMCwwLDAtMS4xNCwxLjA4LDMsMywwLDAsMCw0LjA5LDQuMTRMMTUsMjMuMjRWMjguOWEzLDMsMCwwLDAsMiwyLjk0QTMsMywwLDAsMCwyMSwy''@;'; put 'put ''OVYyMy4yNGw0Ljg1LDIuODVhMywzLDAsMSwwLDMtNS4xOFpNMjguMjQsMjRhMSwxLDAsMCwxLTEuMzcuMzZMMTksMTkuNzVWMjlhMSwxLDAsMCwxLTIsMFYxOS43NUw5LjEzLDI0LjM2YTEsMSwwLDAsMS0xLTEuNzJMMTYsMThsLTcuOS00LjY0YTEsMSwwLDEsMSwxLTEuNzJMMTcsMTYuMjVW''@;'; put 'put ''N2ExLDEsMCwwLDEsMiwwdjkuMjVsNy44Ny00LjYyYTEsMSwwLDAsMSwxLDEuNzJMMjAsMThsNy45LDQuNjRBMSwxLDAsMCwxLDI4LjI0LDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4Ljg5LDIwLjkxbC01LTIu''@;'; put 'put ''OTEsNC44Ny0yLjg2YTMuMTEsMy4xMSwwLDAsMCwxLjE0LTEuMDgsMywzLDAsMCwwLTQuMDktNC4xNUwyMSwxMi43NlY3YTMsMywwLDAsMC02LDB2NS43NkwxMC4xNSw5LjkxYTMsMywwLDEsMC0zLDUuMThsNSwyLjkxTDcuMiwyMC44NmEzLjExLDMuMTEsMCwwLDAtMS4xNCwxLjA4LDMsMyww''@;'; put 'put ''LDAsMCw0LjA5LDQuMTRMMTUsMjMuMjRWMjguOWEzLDMsMCwwLDAsMiwyLjk0QTMsMywwLDAsMCwyMSwyOVYyMy4yNGw0Ljg1LDIuODVhMywzLDAsMSwwLDMtNS4xOFoiLz4nKSxMLkNsclNoYXBlU2Npc3NvcnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiXG4gICAgICAgICAgICBkPSJNMjQuMDYsMTguMThsOS42MS04Ljc3YTEsMSwwLDAsMC0uMDktMS41NWwtMi4yNC0xLjZhMy41NywzLjU3LDAsMCwwLTQuMjguMTJMMTUuODgsMTUuM2wtMy4yNi0yLjUyYTUuNDUsNS40NSwwLDEsMC0xLDEuNzdsMi42Miwy''@;'; put 'put ''TDEwLDIwYTUuNDgsNS40OCwwLDEsMCwxLjU5LDEuMjlMMjguMyw3Ljk0YTEuNTcsMS41NywwLDAsMSwxLjg4LS4wNWwxLjIzLjg4TDIxLjEsMTguMTlsMTAuMzEsOS40LTEuMjMuODhhMS41NywxLjU3LDAsMCwxLTEuODgtLjA1bC05LjgxLTcuODVMMTcsMjEuOTNsMTAuMDYsOGEzLjU3LDMu''@;'; put 'put ''NTcsMCwwLDAsNC4yOS4xMmwyLjI0LTEuNmExLDEsMCwwLDAsLjA5LTEuNTVaTTcuNDUsMTQuNTRhMy40NiwzLjQ2LDAsMSwxLDMuNDUtMy40NkEzLjQ2LDMuNDYsMCwwLDEsNy40NSwxNC41NFptMCwxMy43MkEzLjQ2LDMuNDYsMCwxLDEsMTAuOSwyNC44LDMuNDYsMy40NiwwLDAsMSw3LjQ1''@;'; put 'put ''LDI4LjI2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLjgxLDguMTMsMzEuNjMsNi40OGExLjkyLDEuOTIsMCwwLDAtMi4zNiwwTDEwLDIyLjA2YTUuNDYsNS40NiwwLDEsMCwyLDEuODFsMy45LTMuMTJMMjkuMjcs''@;'; put 'put ''MzEuNTJhMS45MiwxLjkyLDAsMCwwLDIuMzYsMGwyLjE4LTEuNjRMMjAuOTQsMTlaTTcuNDUsMjkuNzVhMi44NiwyLjg2LDAsMSwxLDIuODYtMi44NkEyLjg3LDIuODcsMCwwLDEsNy40NSwyOS43NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIGQ9Ik0xNC4zLDE1LjI0LDEyLDEzLjM4YTUuNDYsNS40NiwwLDEsMC0yLDEuODFMMTIuMTYsMTdabS02Ljg1LTJhMi44NiwyLjg2LDAsMSwxLDIuODYtMi44NkEyLjg2LDIuODYsMCwwLDEsNy40NSwxMy4yM1oiLz4nKSxMLkNsclNoYXBlQnVnPSgwLEUuY2xySWNvblNWRyko''@;'; put 'put ''JzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIyMy41NiIgY3k9IjE3Ljc0IiByPSIxLjk1Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjIuNDIiIGN5PSIy''@;'; put 'put ''NS44OCIgcj0iMS41OCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjEyLjg2IiBjeT0iMTcuNzQiIHI9IjEuOTUiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIGN4PSIxMy45OSIgY3k9IjI1Ljg4IiByPSIxLjU4Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTMwLjgzLDIwSDI5YTE5LjI5LDE5LjI5LDAsMCwwLTEuMTgtNS43M2wxLjQ2LS43OWExLDEs''@;'; put 'put ''MCwwLDAtLjk1LTEuNzZsLTMsMS42NEExNy42NSwxNy42NSwwLDAsMSwyNywyMC43MkMyNywyNywyMy44LDMxLjIzLDE4LjgsMzEuNjJWMTVIMTcuMlYzMS42MkMxMi4yMiwzMS4yMSw5LDI3LDksMjAuNzJhMTcuNzQsMTcuNzQsMCwwLDEsMS43My03LjM0TDcuNywxMS43MmExLDEsMCwwLDAt''@;'; put 'put ''Ljk1LDEuNzZsMS41LjhBMTkuMzgsMTkuMzgsMCwwLDAsNy4wNywyMEg1LjE3YTEsMSwwLDAsMCwwLDJINy4xYTE0LjYyLDE0LjYyLDAsMCwwLDEuNjYsNi4xN0w2Ljg3LDI5LjQ5QTEsMSwwLDEsMCw4LDMxLjEybDEuODQtMS4yOUExMC4zOCwxMC4zOCwwLDAsMCwxOCwzMy42NmExMC4zOCwx''@;'; put 'put ''MC4zOCwwLDAsMCw4LjE0LTMuODFMMjgsMzEuMTJhMSwxLDAsMSwwLDEuMTUtMS42NGwtMS44Ni0xLjNBMTQuNjEsMTQuNjEsMCwwLDAsMjguOTQsMjJoMS44OWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTYiIGQ9Ik0xMS41MSw1LjM2YTEuNjcsMS42NywwLDAsMCwxLjA3LS41MUEzLjIxLDMuMjEsMCwwLDEsMTMuNzYsNmExNi4zOCwxNi4zOCwwLDAsMC0yLjY1LDIuODksMiwyLDAsMCwwLDEuNjEsMy4xOUgyMy4zMkEyLDIsMCwwLDAsMjUuMSwxMWEyLDIsMCwwLDAtLjE3LTIuMUExNi4z''@;'; put 'put ''NCwxNi4zNCwwLDAsMCwyMi4yNSw2YTMuMjEsMy4yMSwwLDAsMSwxLjE3LTEuMTFBMS42OCwxLjY4LDAsMSwwLDIzLDMuMjcsNC43Nyw0Ljc3LDAsMCwwLDIxLDVhNS44MSw1LjgxLDAsMCwwLTIuOTMtMSw1LjgzLDUuODMsMCwwLDAtMywxQTQuNzcsNC43NywwLDAsMCwxMywzLjI3YTEuNjgs''@;'; put 'put ''MS42OCwwLDEsMC0xLjQ5LDIuMDlaTTE4LDYuMDdjMS40NSwwLDMuNTMsMS41Nyw1LjMxLDRoMGwtMTAuNiwwQzE0LjQ5LDcuNjMsMTYuNTYsNi4wNywxOCw2LjA3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjgz''@;'; put 'put ''LDIwSDI5YTE5LjI5LDE5LjI5LDAsMCwwLTEuMTgtNS43M2wxLjQ2LS43OWExLDEsMCwwLDAtLjk1LTEuNzZsLTMsMS4yOEgxMC43OEw3LjcsMTEuNzJhMSwxLDAsMCwwLS45NSwxLjc2bDEuNS44QTE5LjM4LDE5LjM4LDAsMCwwLDcuMDcsMjBINS4xN2ExLDEsMCwwLDAsMCwySDcuMWExNC42''@;'; put 'put ''MiwxNC42MiwwLDAsMCwxLjY2LDYuMTdMNi44NywyOS40OUExLDEsMCwxLDAsOCwzMS4xMmwxLjg0LTEuMjlBMTAuMjksMTAuMjksMCwwLDAsMTcsMzMuNlYxNWgyVjMzLjZhMTAuMjksMTAuMjksMCwwLDAsNy4xNi0zLjc1TDI4LDMxLjEyYTEsMSwwLDEsMCwxLjE1LTEuNjRsLTEuODYtMS4z''@;'; put 'put ''QTE0LjYxLDE0LjYxLDAsMCwwLDI4Ljk0LDIyaDEuODlhMSwxLDAsMCwwLDAtMlpNMTAuOTEsMTcuNzRhMS45NSwxLjk1LDAsMSwxLDEuOTUsMS45NUExLjk1LDEuOTUsMCwwLDEsMTAuOTEsMTcuNzRaTTE0LDI3LjQ2YTEuNTgsMS41OCwwLDEsMSwxLjU4LTEuNThBMS41OCwxLjU4LDAsMCwx''@;'; put 'put ''LDE0LDI3LjQ2Wm04LjQzLDBBMS41OCwxLjU4LDAsMSwxLDI0LDI1Ljg4LDEuNTgsMS41OCwwLDAsMSwyMi40MiwyNy40NlptMS4xMy03Ljc3YTEuOTUsMS45NSwwLDEsMSwxLjk1LTEuOTVBMS45NSwxLjk1LDAsMCwxLDIzLjU2LDE5LjY5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTExLjIzLDUuMjZhMS42NywxLjY3LDAsMCwwLC41NC0uMzIsNS45LDUuOSwwLDAsMSwuODkuNTgsNy40NCw3LjQ0LDAsMCwxLC45NS45NEExOC40OCwxOC40OCwwLDAsMCwxMC43OSw5LjdjLS40LjU3LjA5LDEuMjguODYsMS4y''@;'; put 'put ''OEgyNC40NGMuNzcsMCwxLjI2LS43MS44Ni0xLjI4YTE4LjM4LDE4LjM4LDAsMCwwLTIuODgtMy4yOCw3LjI4LDcuMjgsMCwwLDEsLjkxLS45LDUuOSw1LjksMCwwLDEsLjg5LS41OCwxLjY5LDEuNjksMCwxLDAtLjU2LTEuNTEsNy40OSw3LjQ5LDAsMCwwLTEuMzIuODMsOS4wNiw5LjA2LDAs''@;'; put 'put ''MCwwLTEuMTksMS4xOEE1Ljg1LDUuODUsMCwwLDAsMTgsNC4zYTUuOTEsNS45MSwwLDAsMC0zLjE3LDEuMTksOS4yLDkuMiwwLDAsMC0xLjIyLTEuMjEsNy40OSw3LjQ5LDAsMCwwLTEuMzItLjgzLDEuNjgsMS42OCwwLDEsMC0xLjExLDEuODNaIi8+JyksTC5DbHJTaGFwZVRoZXJtb21ldGVy''@;'; put 'put ''PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTksMjMuMTdWMTEuNDZIMTdWMjMuMmEzLDMsMCwxLDAsMiwwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIGQ9Ik0yNiwxNWExLDEsMCwwLDAsMC0ySDIzLjkyVjExSDI2YTEsMSwwLDAsMCwwLTJIMjMuOTJWOGE2LDYsMCwwLDAtMTIsMFYyMC44MWE4LDgsMCwxLDAsMTItLjJWMTlIMjZhMSwxLDAsMCwwLDAtMkgyMy45MlYxNVpNMjQsMjZhNiw2LDAsMSwxLTEwLjM2LTQuMTJsLjI3''@;'; put 'put ''LS4yOVY4YTQsNCwwLDAsMSw4LDBWMjEuNDRsLjMuMjlBNiw2LDAsMCwxLDI0LDI2WiIvPicpLEwuQ2xyU2hhcGVQZW5jaWw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy44Nyw4LjMyLDI4LDIuNDJhMi4w''@;'; put 'put ''NywyLjA3LDAsMCwwLTIuOTIsMEw0LjI3LDIzLjJsLTEuOSw4LjJhMi4wNiwyLjA2LDAsMCwwLDIsMi41LDIuMTQsMi4xNCwwLDAsMCwuNDMsMEwxMy4wOSwzMiwzMy44NywxMS4yNEEyLjA3LDIuMDcsMCwwLDAsMzMuODcsOC4zMlpNMTIuMDksMzAuMiw0LjMyLDMxLjgzbDEuNzctNy42Mkwy''@;'; put 'put ''MS42Niw4LjdsNiw2Wk0yOSwxMy4yNWwtNi02LDMuNDgtMy40Niw1LjksNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNC4yMiwyMy4ybC0xLjksOC4yYTIuMDYsMi4wNiwwLDAsMCwyLDIuNSwyLjE0LDIuMTQs''@;'; put 'put ''MCwwLDAsLjQzLDBMMTMsMzIsMjguODQsMTYuMjIsMjAsNy40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy44Miw4LjMybC01LjktNS45YTIuMDcsMi4wNywwLDAsMC0yLjkyLDBMMjEuNzIsNS43bDguODMs''@;'; put 'put ''OC44MywzLjI4LTMuMjhBMi4wNywyLjA3LDAsMCwwLDMzLjgyLDguMzJaIi8+JyksTC5DbHJTaGFwZU5vdGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDMwSDZWOEgxOS4yMmwyLTJINkEyLDIsMCwwLDAsNCw4VjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNWwt''@;'; put 'put ''MiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTMsNS44NCwzMC4xNiwyLjQ3YTEuNjEsMS42MSwwLDAsMC0yLjI4LDBMMTQuMTcsMTYuMjZsLTEuMTEsNC44MUExLjYxLDEuNjEsMCwwLDAsMTQuNjMs''@;'; put 'put ''MjMsMS42OSwxLjY5LDAsMCwwLDE1LDIzbDQuODUtMS4wN0wzMy41Myw4LjEyQTEuNjEsMS42MSwwLDAsMCwzMy41Myw1Ljg0Wk0xOC44MSwyMC4wOGwtMy42Ni44MUwxNiwxNy4yNiwyNi4zMiw2Ljg3bDIuODIsMi44MlpNMzAuMjcsOC41NiwyNy40NSw1Ljc0LDI5LDQuMTYsMzEuODQsN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDYuNCwyOS4zLDIuN2ExLjcxLDEuNzEsMCwwLDAtMi4zNiwwTDIzLjY1LDZINkEyLDIsMCwwLDAsNCw4VjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYxMS43NmwzLTNBMS42NywxLjY3LDAsMCwwLDMzLDYuNFpNMTguODMsMjAuMTNsLTQuMTkuOTMsMS00LjE1LDkuNTUtOS41NywzLjIzLDMuMjNaTTI5LjUsOS40MywyNi4yNyw2LjJsMS44NS0xLjg1LDMuMjMsMy4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+JyksTC5DbHJTaGFwZVJlZnJlc2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yMi40LDExLjY1YTEuMDksMS4wOSwwLDAsMCwxLjA5LDEuMDlIMzQuNDNWMS44MWExLjA5LDEuMDksMCwxLDAtMi4xOSww''@;'; put 'put ''VjguOTVhMTYuNDEsMTYuNDEsMCwxLDAsMS40NywxNS44NiwxLjEyLDEuMTIsMCwwLDAtMi4wNS0uOSwxNC4xOCwxNC4xOCwwLDEsMS0xLjA1LTEzLjM2SDIzLjVBMS4wOSwxLjA5LDAsMCwwLDIyLjQsMTEuNjVaIi8+JyksTC5DbHJTaGFwZVN5bmM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi44NCwxNS43MmExLDEsMCwxLDAtMiwuMjlBMTMuMTUsMTMuMTUsMCwwLDEsMzEsMTcuOTQsMTMsMTMsMCwwLDEsOC43LDI3aDUuMzZhMSwxLDAsMCwwLDAtMmgtOXY5YTEsMSwwLDEsMCwyLDBWMjguMkEx''@;'; put 'put ''NSwxNSwwLDAsMCwzMi44NCwxNS43MloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLjA2LDFBMS4wNSwxLjA1LDAsMCwwLDI5LDJWNy44M0ExNC45NCwxNC45NCwwLDAsMCwzLDE3Ljk0YTE1LjE2LDE1''@;'; put 'put ''LjE2LDAsMCwwLC4yLDIuNDgsMSwxLDAsMCwwLDEsLjg0aC4xNmExLDEsMCwwLDAsLjgyLTEuMTVBMTMuMjMsMTMuMjMsMCwwLDEsNSwxNy45NGExMywxMywwLDAsMSwxMy0xM0ExMi44NywxMi44NywwLDAsMSwyNy40NCw5SDIyLjA2YTEsMSwwLDAsMCwwLDJIMzFWMkExLDEsMCwwLDAsMzAu''@;'; put 'put ''MDYsMVoiLz4nKSxMLkNsclNoYXBlVmlld0xpc3Q9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjIiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTcsMTBIMzFhMSwxLDAsMCwwLDAtMkg3YTEsMSwwLDAsMCwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjIiIHk9IjE0IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0zMSwxNEg3YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMiIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTMxLDIwSDdhMSwxLDAsMCwwLDAsMkgzMWExLDEs''@;'; put 'put ''MCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIyIiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC04IiBkPSJNMzEsMjZIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+JyksTC5DbHJTaGFwZVZpZXdDYXJkcz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRh''@;'; put 'put ''MiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE3SDIxYTIsMiww''@;'; put 'put ''LDAsMS0yLTJWOGEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMTdaTTIxLDh2N0gzMlY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTUsMzBINGEyLDIsMCwwLDEt''@;'; put 'put ''Mi0yVjIxYTIsMiwwLDAsMSwyLTJIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwzMFpNNCwyMXY3SDE1VjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTIt''@;'; put 'put ''MlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+JyksTC5DbHJTaGFwZUxpZ2h0YnVsYj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi4yNWExMSwxMSwwLDAsMC0xMSwxMSwxMC42OCwxMC42OCwwLDAs''@;'; put 'put ''MCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNGgyQTE4LjE3LDE4LjE3LDAsMCwwLDEzLDIyLjQ0YTE4LjQ2LDE4LjQ2LDAsMCwwLTIuMjItMy45MiwxNS43OSwxNS43OSwwLDAsMS0xLTEuNTRBOC42''@;'; put 'put ''NCw4LjY0LDAsMCwxLDksMTMuMjNhOSw5LDAsMCwxLDE4LjA3LDBBOC42NCw4LjY0LDAsMCwxLDI2LjIxLDE3YTE1Ljc5LDE1Ljc5LDAsMCwxLTEsMS41NEExOC40NiwxOC40NiwwLDAsMCwyMywyMi40NGExOC4xNywxOC4xNywwLDAsMC0uNzEsNC43MWgyYTE2LjE5LDE2LjE5LDAsMCwxLC41''@;'; put 'put ''OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42OCwxMC42OCwwLDAsMCwxLTQuNjNBMTEsMTEsMCwwLDAsMTgsMi4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTguNjMsMTUuNTFhLjguOCwwLDAsMC0xLjEzLDBsLTMsMywyLjg2LDMuMTN2NS41NEgxOVYyMWwtMi4yNC0yLjQ1LDEuODktMS44OUEuOC44LDAsMCwwLDE4LjYzLDE1LjUxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJh''@;'; put 'put ''LjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuMzIsMTAuODlsLTIuNzMsMi43M2EuOC44LDAsMCwwLDEuMTMsMS4xM0wxOC40NSwxMmEuOC44LDAsMSwwLTEuMTMtMS4xM1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMjcuMTVWMjFsLTIuMjQtMi40NSwxLjg5LTEuODlhLjguOCwwLDAsMC0xLjEzLTEuMTNsLTMsMywyLjg2LDMuMTN2NS41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE1LjcyLDE0Ljc1LDE4LjQ1LDEyYS44LjgsMCwxLDAtMS4xMy0xLjEzbC0yLjczLDIuNzNhLjguOCwwLDAsMCwxLjEzLDEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNywxMi44OGMwLC4xMiwwLC4yMywwLC4zNUE4LjY0LDguNjQsMCwwLDEsMjYuMjEsMTdhMTUuNzksMTUuNzksMCwwLDEtMSwxLjU0QTE4LjQ2LDE4LjQ2LDAsMCwwLDIzLDIyLjQ0YTE4LjE3LDE4LjE3LDAsMCwwLS43MSw0LjcxaDJhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcs''@;'; put 'put ''MTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3Ljg2YTEwLjYzLDEwLjYzLDAsMCwwLDEtNC40M0E3LjQ1LDcuNDUsMCwwLDEsMjcsMTIuODhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xMy43MSwyNy4xNUExOC4xNywxOC4xNywwLDAsMCwxMywyMi40NGExOC40NiwxOC40NiwwLDAsMC0yLjIyLTMuOTIsMTUuNzksMTUuNzksMCwwLDEtMS0xLjU0QTguNjQsOC42NCwwLDAsMSw5LDEzLjIzLDksOSwwLDAsMSwyMi41Myw1LjQ3YTcuNDUsNy40NSwwLDAs''@;'; put 'put ''MSwuNDMtMiwxMSwxMSwwLDAsMC0xNiw5LjgsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYs''@;'; put 'put ''MjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEu''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyLjI1YTExLDExLDAsMCwwLTExLDExLDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3''@;'; put 'put ''LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0aDUuNjlWMjEuNjFsLTIuODYtMy4xMywzLTNhLjguOCwwLDAsMSwxLjEzLDEuMTNsLTEuODksMS44OUwxOSwyMXY2LjE3SDI0LjNhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcsMTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3''@;'; put 'put ''Ljg2YTEwLjY4LDEwLjY4LDAsMCwwLDEtNC42M0ExMSwxMSwwLDAsMCwxOCwyLjI1Wk0xOC40NSwxMmwtMi43MywyLjczYS44LjgsMCwxLDEtMS4xMy0xLjEzbDIuNzMtMi43M0EuOC44LDAsMSwxLDE4LjQ1LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIs''@;'; put 'put ''MzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZBNy40Nyw3LjQ3LDAsMCwxLDIzLDMuNDRhMTEsMTEs''@;'; put 'put ''MCwwLDAtMTYsOS44LDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0aDUuNjlWMjEuNjFsLTIuODYtMy4xMywzLTNhLjguOCwwLDAsMSwxLjEzLDEuMTNsLTEuODksMS44''@;'; put 'put ''OUwxOSwyMXY2LjE3SDI0LjNhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcsMTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3Ljg2YTEwLjYzLDEwLjYzLDAsMCwwLDEtNC40M0E3LjUsNy41LDAsMCwxLDIyLjUsNlptLTQsNi0yLjczLDIuNzNhLjguOCwwLDEsMS0xLjEz''@;'; put 'put ''LTEuMTNsMi43My0yLjczQS44LjgsMCwxLDEsMTguNDUsMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLEwuQ2xyU2hhcGVEb3dubG9hZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCww''@;'; put 'put ''LDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwyNS42NVY1YTEsMSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmEx''@;'; put 'put ''LDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDguODEsMTcuNDZhMSwxLDAsMSww''@;'; put 'put ''LTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDI1LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2YTEsMSwwLDEsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlVXBsb2FkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjgxLDE1LDE3LDYuODNWMjcuNDhhMSwxLDAsMCwwLDIsMFY2LjgzTDI3LjE5LDE1YTEsMSwwLDAsMCwxLjQxLTEuNDFMMTgsMyw3LjM5LDEzLjYxQTEsMSwwLDEsMCw4LjgxLDE1WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzEsMzFINWMtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWgyNmMwLjYsMCwxLTAuNCwxLTFTMzEuNiwzMSwzMSwzMXoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTguOCwxNUwxNyw2Ljh2MjAuNmMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xVjYuOEwyMC4xLDhsMS0xLjhMMTgsM0w3LjQsMTMuNkM3LDE0LDYu''@;'; put 'put ''OSwxNC42LDcuMiwxNXMxLDAuNSwxLjQsMC4xQzguNywxNS4xLDguOCwxNS4xLDguOCwxNXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4x''@;'; put 'put ''TDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik04LjgxLDE1LDE3LDYuODNWMjcuNDhhMSwxLDAsMCwwLDIsMFY2LjgzTDI3LjE5LDE1YTEsMSwwLDAsMCwxLjQxLTEuNDFMMTgsMyw3LjM5LDEzLjYxQTEsMSwwLDEsMCw4LjgxLDE1WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZUxvY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOC4wOSwyMC41OUEyLjQxLDIuNDEsMCwwLDAsMTcsMjUuMTRWMjhoMlYyNS4yM2EyLjQxLDIuNDEsMCwwLDAtLjkxLTQuNjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIGQ9Ik0yNiwxNVYxMC43MmE4LjIsOC4yLDAsMCwwLTgtOC4zNiw4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUg3VjMyYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYxNVpNMTIsMTAuNzJhNi4yLDYuMiwwLDAsMSw2LTYuMzYsNi4yLDYuMiwwLDAsMSw2LDYu''@;'; put 'put ''MzZWMTVIMTJaTTksMzJWMTdIMjdWMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LDE1VjEwLjcyYTguMiw4LjIsMCwwLDAtOC04LjM2LDguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDdWMzJhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgyN2EyLDIsMCwwLDAsMi0yVjE1Wk0xOSwyNS4yM1YyOEgxN1YyNS4xNGEyLjQsMi40LDAsMSwxLDIsLjA5Wk0yNCwxNUgxMlYxMC43MmE2LjIsNi4yLDAsMCwxLDYtNi4zNiw2LjIsNi4yLDAsMCwxLDYsNi4zNloiLz4nKSxMLkNsclNoYXBlVW5sb2NrPSgwLEUuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTIsMjUuMTRWMjhoMlYyNS4yM2EyLjQyLDIuNDIsMCwxLDAtMi0uMDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IGQ9Ik0yNiwyYTguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDJWMzJhMiwyLDAsMCwwLDIsMkgyMmEyLDIsMCwwLDAsMi0yVjE1SDIwVjEwLjM2QTYuMiw2LjIsMCwwLDEsMjYsNGE2LjIsNi4yLDAsMCwxLDYsNi4zNnY2LjgzYTEsMSwwLDAsMCwyLDBWMTAuMzZBOC4yLDguMiwwLDAsMCwyNiwy''@;'; put 'put ''Wk0yMiwxN1YzMkg0VjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwyYTguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDJWMzJhMiwyLDAsMCwwLDIsMkgyMmEyLDIsMCwwLDAsMi0yVjE1SDIwVjEwLjM2QTYu''@;'; put 'put ''Miw2LjIsMCwwLDEsMjYsNGE2LjIsNi4yLDAsMCwxLDYsNi4zNnY2LjgzYTEsMSwwLDAsMCwyLDBWMTAuMzZBOC4yLDguMiwwLDAsMCwyNiwyWk0xNCwyNS4yM1YyOEgxMlYyNS4xNGEyLjQsMi40LDAsMSwxLDIsLjA5WiIvPicpLEwuQ2xyU2hhcGVVc2Vycz0oMCxFLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3LjksMTcuM2MyLjcsMCw0LjgtMi4yLDQuOC00LjljMC0yLjctMi4yLTQuOC00LjktNC44Yy0yLjcsMC00LjgsMi4yLTQuOCw0LjhDMTMsMTUuMSwxNS4yLDE3LjMsMTcuOSwxNy4zeiBNMTcuOCw5''@;'; put 'put ''LjZDMTcuOSw5LjYsMTcuOSw5LjYsMTcuOCw5LjZjMS42LDAsMi45LDEuMywyLjksMi45cy0xLjMsMi44LTIuOSwyLjhjLTEuNiwwLTIuOC0xLjMtMi44LTIuOEMxNSwxMC45LDE2LjMsOS42LDE3LjgsOS42eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuNywxNi43Yy0xLjktMS43LTQuNC0yLjYtNy0yLjVjLTAuMywwLTAuNSwwLTAuOCwwYy0wLjIsMC44LTAuNSwxLjUtMC45LDIuMWMwLjYtMC4xLDEuMS0wLjEsMS43LTAuMWMxLjktMC4xLDMuOCwwLjUsNS4zLDEuNlYyNWgydi04TDMyLjcs''@;'; put 'put ''MTYuN3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIzLjQsNy44YzAuNS0xLjIsMS45LTEuOCwzLjItMS4zYzEuMiwwLjUsMS44LDEuOSwxLjMsMy4yYy0wLjQsMC45LTEuMywxLjUtMi4yLDEuNWMtMC4y''@;'; put 'put ''LDAtMC41LDAtMC43LTAuMWMwLjEsMC41LDAuMSwxLDAuMSwxLjRjMCwwLjIsMCwwLjQsMCwwLjZjMC4yLDAsMC40LDAuMSwwLjYsMC4xYzIuNSwwLDQuNS0yLDQuNS00LjRjMC0yLjUtMi00LjUtNC40LTQuNWMtMS42LDAtMywwLjgtMy44LDIuMkMyMi41LDYuOCwyMyw3LjIsMjMuNCw3Ljh6''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xMiwxNi40Yy0wLjQtMC42LTAuNy0xLjMtMC45LTIuMWMtMC4zLDAtMC41LDAtMC44LDBjLTIuNi0wLjEtNS4xLDAuOC03LDIuNEwzLDE3djhoMnYtNy4yYzEu''@;'; put 'put ''Ni0xLjEsMy40LTEuNyw1LjMtMS42QzEwLjksMTYuMiwxMS41LDE2LjMsMTIsMTYuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTEwLjMsMTMuMWMwLjIsMCwwLjQsMCwwLjYtMC4xYzAtMC4yLDAtMC40''@;'; put 'put ''LDAtMC42YzAtMC41LDAtMSwwLjEtMS40Yy0wLjIsMC4xLTAuNSwwLjEtMC43LDAuMWMtMS4zLDAtMi40LTEuMS0yLjQtMi40YzAtMS4zLDEuMS0yLjQsMi40LTIuNGMxLDAsMS45LDAuNiwyLjMsMS41YzAuNC0wLjUsMS0xLDEuNS0xLjRjLTEuMy0yLjEtNC0yLjgtNi4xLTEuNWMtMi4xLDEu''@;'; put 'put ''My0yLjgsNC0xLjUsNi4xQzcuMywxMi4zLDguNywxMy4xLDEwLjMsMTMuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTI2LjEsMjIuN2wtMC4yLTAuM2MtMi0yLjItNC44LTMuNS03LjgtMy40Yy0zLTAu''@;'; put 'put ''MS01LjksMS4yLTcuOSwzLjRMMTAsMjIuN3Y3LjZjMCwwLjksMC43LDEuNywxLjcsMS43YzAsMCwwLDAsMCwwaDEyLjhjMC45LDAsMS43LTAuOCwxLjctMS43YzAsMCwwLDAsMCwwVjIyLjd6IE0yNC4xLDMwSDEydi02LjZjMS42LTEuNiwzLjgtMi40LDYuMS0yLjRjMi4yLTAuMSw0LjQsMC44''@;'; put 'put ''LDYsMi40VjMweiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTEuMDksMTQuNTdjLjEsMCwuMiwwLC4zMSwwYTYuNDMsNi40MywwLDAsMSwuMDktMiwyLjA5LDIuMDksMCwx''@;'; put 'put ''LDEsMS40Ny0zLDYuNTgsNi41OCwwLDAsMSwxLjU1LTEuMzEsNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEzLDE4LjE0YTYu''@;'; put 'put ''NTMsNi41MywwLDAsMS0xLjI4LTIuMmwtLjYzLDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djdoMlYxOS41MWE3LDcsMCwwLDEsNC42Ny0xLjZBOC4wOSw4LjA5LDAsMCwxLDEzLDE4LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzEuMzUsMTguNDJBOC41OSw4LjU5LDAsMCwwLDI1LDE1LjkxYy0uMzIsMC0uNiwwLS45LjA2YTYuNTMsNi41MywwLDAsMS0xLjM1LDIuMjVBNy45LDcuOSwwLDAsMSwyNSwxNy45MWE2Ljk0LDYuOTQsMCwwLDEs''@;'; put 'put ''NC42NCwxLjU4djYuMjdoMlYxOC43WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguMSwxOS43M0E5LjY5LDkuNjksMCwwLDAsMTEsMjIuNDdsLS4yNS4yOHY3LjMzYTEu''@;'; put 'put ''NTcsMS41NywwLDAsMCwxLjYxLDEuNTRIMjMuODNhMS41NywxLjU3LDAsMCwwLDEuNjEtMS41NFYyMi43M2wtLjI1LS4yOEE5LjU4LDkuNTgsMCwwLDAsMTguMSwxOS43M1ptNS4zMyw5Ljg4SDEyLjczVjIzLjU1YTguMDgsOC4wOCwwLDAsMSw1LjM3LTEuODIsOCw4LDAsMCwxLDUuMzMsMS44''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiBkPSJNMjAuMjgsMTQuMjdhMi40NiwyLjQ2LDAsMSwxLTIuNDItMi44OSwyLjQ0LDIuNDQsMCwwLDEsMSwuMjQsMy42NywzLjY3LDAs''@;'; put 'put ''MCwxLC40My0yLDQuNDEsNC40MSwwLDAsMC0xLjQ4LS4yN0E0LjQ3LDQuNDcsMCwxLDAsMjIuMTQsMTUsMy42OSwzLjY5LDAsMCwxLDIwLjI4LDE0LjI3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjcuMTguOGwtNS43Miw5LjkxYTEuMjgsMS4yOCwwLDAsMCwxLjEsMS45MUgzNGExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTFMMjkuMzkuOEExLjI4LDEuMjgsMCwwLDAsMjcuMTguOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4wOSwxNC41N2MuMSwwLC4yLDAsLjMxLDBhNi40Myw2LjQzLDAsMCwxLC4wOS0yLDIuMDksMi4wOSwwLDEsMSwxLjQ3LTMsNi41OCw2LjU4LDAsMCwxLDEuNTUtMS4zMSw0LjA5LDQuMDks''@;'; put 'put ''MCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTEzLDE4LjE0YTYuNTMsNi41MywwLDAsMS0xLjI4LTIuMmwtLjYzLDBhOC42Nyw4LjY3LDAsMCwwLTYu''@;'; put 'put ''NDMsMi41MmwtLjI0LjI4djdoMlYxOS41MWE3LDcsMCwwLDEsNC42Ny0xLjZBOC4wOSw4LjA5LDAsMCwxLDEzLDE4LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTMxLjM1''@;'; put 'put ''LDE4LjQyQTguNTksOC41OSwwLDAsMCwyNSwxNS45MWMtLjMyLDAtLjYsMC0uOS4wNmE2LjUzLDYuNTMsMCwwLDEtMS4zNSwyLjI1QTcuOSw3LjksMCwwLDEsMjUsMTcuOTFhNi45NCw2Ljk0LDAsMCwxLDQuNjQsMS41OHY2LjI3aDJWMTguN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xNy44NiwxOC4zYTQuNDcsNC40NywwLDEsMC00LjQ3LTQuNDdBNC40Nyw0LjQ3LDAsMCwwLDE3Ljg2LDE4LjNabTAtNi45M2EyLjQ3LDIuNDcsMCwxLDEtMi40NywyLjQ3QTIuNDcs''@;'; put 'put ''Mi40NywwLDAsMSwxNy44NiwxMS4zN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIGQ9Ik0xOC4xLDE5LjczQTkuNjksOS42OSwwLDAsMCwxMSwyMi40N2wtLjI1LjI4djcuMzNhMS41''@;'; put 'put ''NywxLjU3LDAsMCwwLDEuNjEsMS41NEgyMy44M2ExLjU3LDEuNTcsMCwwLDAsMS42MS0xLjU0VjIyLjczbC0uMjUtLjI4QTkuNTgsOS41OCwwLDAsMCwxOC4xLDE5LjczWm01LjMzLDkuODhIMTIuNzNWMjMuNTVhOC4wOCw4LjA4LDAsMCwxLDUuMzctMS44Miw4LDgsMCwwLDEsNS4zMywxLjha''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiBkPSJNMjYuMzcsMTJhMiwyLDAsMCwxLTIuMDkuNDIsNi41Myw2LjUzLDAsMCwxLC4xNSwxLjM4LDYuNTksNi41OSwwLDAsMSwwLC42OCw0''@;'; put 'put ''LDQsMCwwLDAsLjU3LjA2LDQuMDgsNC4wOCwwLDAsMCwzLjMtMS43QTcuNDUsNy40NSwwLDAsMSwyNi4zNywxMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIGQ9Ik0yMi45NSw2Ljkz''@;'; put 'put ''YTQuMTYsNC4xNiwwLDAsMC0xLjQ3LDEuNDRBNi41OSw2LjU5LDAsMCwxLDIzLDkuNzdhMi4xLDIuMSwwLDAsMSwuNTktLjgzQTcuNDQsNy40NCwwLDAsMSwyMi45NSw2LjkzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtOC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAuMzMiIGN5PSI1LjY3IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTEyLDE2LjE0cS0uNDMsMC0uODcsMGE4LjY3LDguNjcsMCww''@;'; put 'put ''LDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTksNi41OSwwLDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBk''@;'; put 'put ''PSJNMzEuMzQsMTguNjNhOC42Nyw4LjY3LDAsMCwwLTYuNDMtMi41MiwxMC40NywxMC40NywwLDAsMC0xLjA5LjA2LDYuNTksNi41OSwwLDAsMS0yLDIuNDUsMTAuOTEsMTAuOTEsMCwwLDEsNSwzbC4yNS4yOC41NC42MnY0LjcxaDMuOTRWMTguOTFaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTExLjEsMTQuMTljLjExLDAsLjIsMCwuMzEsMGE2LjQ1LDYuNDUsMCwwLDEsMy4xMS02LjI5LDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTI0LjQzLDEzLjQ0YTYuNTQsNi41NCwwLDAsMSwwLC42OSw0LjA5LDQuMDksMCwwLDAsLjU4LjA1aC4xOUE0LjA5LDQuMDksMCwxLDAsMjEuNDcsOCw2LjUzLDYuNTMsMCwwLDEsMjQuNDMsMTMuNDRaIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiBjeD0iMTcuODciIGN5PSIxMy40NSIgcj0iNC40NyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIGQ9Ik0xOC4xMSwyMC4zQTkuNjksOS42''@;'; put 'put ''OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEyLDE2LjE0cS0uNDMsMC0uODcsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTksNi41OSww''@;'; put 'put ''LDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEuMzQsMTguNjNhOC42Nyw4LjY3LDAsMCwwLTYuNDMtMi41MiwxMC40NywxMC40NywwLDAsMC0xLjA5LjA2''@;'; put 'put ''LDYuNTksNi41OSwwLDAsMS0yLDIuNDUsMTAuOTEsMTAuOTEsMCwwLDEsNSwzbC4yNS4yOC41NC42MnY0LjcxaDMuOTRWMTguOTFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTEx''@;'; put 'put ''LjEsMTQuMTljLjExLDAsLjIsMCwuMzEsMGE2LjQ1LDYuNDUsMCwwLDEsMy4xMS02LjI5LDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgZD0i''@;'; put 'put ''TTE4LjExLDIwLjNBOS42OSw5LjY5LDAsMCwwLDExLDIzbC0uMjUuMjh2Ni4zM2ExLjU3LDEuNTcsMCwwLDAsMS42LDEuNTRIMjMuODRhMS41NywxLjU3LDAsMCwwLDEuNi0xLjU0VjIzLjNMMjUuMiwyM0E5LjU4LDkuNTgsMCwwLDAsMTguMTEsMjAuM1oiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIiBkPSJNMTcuODcsMTcuOTJhNC40Niw0LjQ2LDAsMCwwLDQtMi41NEEzLjY3LDMuNjcsMCwwLDEsMTksOS44OWwuMzUtLjYxQTQuNDIsNC40MiwwLDAsMCwxNy44Nyw5YTQuNDcsNC40''@;'; put 'put ''NywwLDEsMCwwLDguOTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTIsMTYuMTRxLS40Myww''@;'; put 'put ''LS44NywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY4LjI4SDguNTR2LTQuN2wuNTUtLjYyLjI1LS4yOWExMSwxMSwwLDAsMSw0LjcxLTIuODZBNi41OCw2LjU4LDAsMCwxLDEyLDE2LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEuMzQsMTguNjNhOC42Nyw4LjY3LDAsMCwwLTYuNDMtMi41MiwxMC40NywxMC40NywwLDAsMC0xLjA5LjA2LDYuNTksNi41OSwwLDAsMS0yLDIuNDUsMTAuOTEsMTAuOTEsMCwwLDEsNSwzbC4yNS4yOC41NC42MnY0Ljcx''@;'; put 'put ''aDMuOTRWMTguOTFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwx''@;'; put 'put ''LDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIGN4PSIxNy44NyIgY3k9IjEzLjQ1IiByPSI0LjQ3Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQiIGQ9Ik0xOC4xMSwyMC4zQTkuNjksOS42OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41''@;'; put 'put ''OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC02LS1iYWRnZWQiIGQ9Ik0yNC40MywxMy40NGE2LjU0LDYuNTQsMCwwLDEsMCwuNjksNC4wOSw0LjA5LDAsMCwwLC41OC4w''@;'; put 'put ''NWguMTlhNC4wNSw0LjA1LDAsMCwwLDIuNTItMSw3LjUsNy41LDAsMCwxLTUuMTQtNi4zMkE0LjEzLDQuMTMsMCwwLDAsMjEuNDcsOCw2LjUzLDYuNTMsMCwwLDEsMjQuNDMsMTMuNDRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVQb3BPdXQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNywzM0g1YTIsMiwwLDAs''@;'; put 'put ''MS0yLTJWOUEyLDIsMCwwLDEsNSw3SDE1VjlINVYzMUgyN1YyMWgyVjMxQTIsMiwwLDAsMSwyNywzM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDNhMSwxLDAsMCwwLDAsMkgyOS41OUwxNS43NCwx''@;'; put 'put ''OC44NWExLDEsMCwxLDAsMS40MSwxLjQxTDMxLDYuNDFWMThhMSwxLDAsMCwwLDIsMFYzWiIvPicpLEwuQ2xyU2hhcGVGaWx0ZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMyw0SDNBMSwxLDAsMCwwLDIs''@;'; put 'put ''NVY2LjY3YTEuNzksMS43OSwwLDAsMCwuNTMsMS4yN0wxNCwxOS41OHYxMC4ybDIsLjc2VjE5YTEsMSwwLDAsMC0uMjktLjcxTDQsNi41OVY2SDMydi42MUwyMC4zMywxOC4yOUExLDEsMCwwLDAsMjAsMTlsMCwxMy4yMUwyMiwzM1YxOS41TDMzLjQ3LDhBMS44MSwxLjgxLDAsMCwwLDM0LDYu''@;'; put 'put ''N1Y1QTEsMSwwLDAsMCwzMyw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMiwzM1YxOS41TDMzLjQ3LDhBMS44MSwxLjgxLDAsMCwwLDM0LDYuN1Y1YTEsMSwwLDAsMC0xLTFIM0ExLDEsMCwwLDAsMiw1VjYu''@;'; put 'put ''NjdhMS43OSwxLjc5LDAsMCwwLC41MywxLjI3TDE0LDE5LjU4djEwLjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD0iTTMzLjQ4LDRoLTMxQS41Mi41MiwwLDAsMCwyLDQuNTJWNi4yNGExLjMzLDEuMzMsMCwwLDAsLjM5Ljk1bDEyLDEydjEwbDcuMjUsMy42MVYxOS4xN2wxMi0xMkEx''@;'; put 'put ''LjM1LDEuMzUsMCwwLDAsMzQsNi4yNlY0LjUyQS41Mi41MiwwLDAsMCwzMy40OCw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlUGluPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMzMsMTYuNTlhMSwxLDAsMCwxLS43MS0uMjlMMTkuNywzLjcxYTEsMSwwLDAsMSwxLjQxLTEuNDFMMzMuNzEsMTQuODlBMSwxLDAsMCwxLDMzLDE2LjU5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiBkPSJNMjguNTIsMTUuNTZsLTEuNDEtMS40MS03LjIsNy4yYTEsMSwwLDAsMC0uMjUsMSw5LDksMCwwLDEtMS41Myw4LjA5TDUuNTgsMTcuODdhOSw5LDAsMCwxLDguMDktMS41MywxLDEsMCwwLDAsMS0uMjVsNy4yLTcuMkwyMC40NCw3LjQ4bC02Ljc5LDYuNzlBMTAuOTQsMTAu''@;'; put 'put ''OTQsMCwwLDAsMy40MSwxNy4xMWExLDEsMCwwLDAsMCwxLjQybDYuMzMsNi4zM0wyLjI5LDMyLjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFsNy40NC03LjQ0LDYuMzMsNi4zM2ExLDEsMCwwLDAsLjcxLjI5aDBhMSwxLDAsMCwwLC43MS0uMywxMSwxMSwwLDAsMCwyLjg0LTEwLjI0WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywxNi43MWExLDEsMCwwLDEtLjcxLS4yOUwxOS43LDMuODJhMSwxLDAsMCwxLDEuNDEtMS40MUwzMy43MSwxNUExLDEsMCwwLDEsMzMsMTYuNzFaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjQ0LDcuNTlsLTYuNzksNi43OUExMC45NCwxMC45NCwwLDAsMCwzLjQxLDE3LjIyYTEsMSwwLDAsMCwwLDEuNDJMOS43MywyNSwyLjI5LDMyLjQxYTEsMSwwLDEsMCwxLjQxLDEuNDFsNy40NC03''@;'; put 'put ''LjQ0LDYuMzMsNi4zM2ExLDEsMCwwLDAsLjcxLjI5aDBhMSwxLDAsMCwwLC43MS0uMywxMSwxMSwwLDAsMCwyLjg0LTEwLjI0bDYuNzktNi43OVoiLz4nKSxMLkNsclNoYXBlRmlsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxMS45MlptLS4zLDIuNDksNiw1LjloLTZaTTgsMzBWNkgyMHY4aDhWMzBaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjEuNTksMTIuMzlWNi40OWwxLjA3LDFhNy4zMSw3LjMxLDAsMCwxLDAtMi44MkwyMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUEx''@;'; put 'put ''Ljg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTMuNWE3LjQ1LDcuNDUsMCwwLDEtMy45MS0xLjExWk0yOCwzMEg4VjZIMjB2OGg4WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOCwxNS40VjMwSDhWNkgy''@;'; put 'put ''MFY4LjI1bDIuMjUtMy45TDIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1''@;'; put 'put ''LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwz''@;'; put 'put ''MCwzMC4wOVYxMS45MlpNMjEsMTNWNS44NEwyOC4zLDEzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjcuMjUsMTNIMjFWNS44NGwxLjY0LDEuNmE3LjI1LDcuMjUsMCwwLDEsMC0y''@;'; put 'put ''Ljc0TDIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxMy41QTcuNDcsNy40NywwLDAsMSwyNy4yNSwxM1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIg''@;'; put 'put ''ZD0iTTIyLjIsMTUuNGMtMiwwLTMuNy0xLjYtMy43LTMuNmMwLTAuNywwLjItMS4zLDAuNS0xLjlsMy4yLTUuNUwyMS45LDRINy44QzYuOCw0LDYsNC45LDYsNS45djI0LjJjMCwxLDAuOCwxLjksMS44LDEuOWgyMC4zYzEsMCwxLjgtMC45LDEuOC0xLjlWMTUuNEgyMi4yeiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNyww''@;'; put 'put ''LDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+JyksTC5DbHJTaGFwZVBsdXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwxN0gxOVY2YTEsMSwwLDEsMC0yLDBWMTdINmExLDEsMCwwLDAtMSwxLC45MS45MSwwLDAsMCwxLC45NEgxN1YzMGExLDEsMCwxLDAsMiwwVjE5SDMwYTEsMSwwLDAsMCwxLTFBMSwxLDAsMCwwLDMwLDE3WiIvPicpLEwuQ2xyU2hhcGVNaW51cz0o''@;'; put 'put ''MCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYsMTdIMTBhMSwxLDAsMCwwLDAsMkgyNmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZU1pbnVzQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCwxN0gxMmEx''@;'; put 'put ''LDEsMCwwLDAsMCwySDI0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYsMTcuNUgxMmExLjUsMS41LDAsMCwx''@;'; put 'put ''LDAtM0gyNGExLjUsMS41LDAsMCwxLDAsM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVBsdXNDaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjE3LDE3SDE5VjkuODNhMSwxLDAsMCwwLTIsMFYxN0g5LjgzYTEsMSww''@;'; put 'put ''LDAsMCwwLDJIMTd2Ny4xN2ExLDEsMCwwLDAsMiwwVjE5aDcuMTdhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0w''@;'; put 'put ''LDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxOEExNiwxNiwwLDEsMSwxOCwyLDE2LDE2LDAsMCwxLDM0LDE4Wm0tOC40MS0xLjVIMTku''@;'; put 'put ''NVYxMC40MWExLjUsMS41LDAsMCwwLTMsMFYxNi41SDEwLjQxYTEuNSwxLjUsMCwwLDAsMCwzSDE2LjV2Ni4wOWExLjUsMS41LDAsMCwwLDMsMFYxOS41aDYuMDlhMS41LDEuNSwwLDAsMCwwLTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUJhbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNCwxOEExMy45MywxMy45MywwLDAsMSw3LjQzLDguODVMMjcuMTUsMjguNTdBMTQs''@;'; put 'put ''MTQsMCwwLDEsNCwxOFptMjQuNTcsOS4xNUw4Ljg1LDcuNDNBMTQsMTQsMCwwLDEsMjguNTcsMjcuMTVaIi8+JyksTC5DbHJTaGFwZVRpbWVzQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNjEs''@;'; put 'put ''MThsNC44Ni00Ljg2YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTguMiwxNi41NGwtNC44OS00Ljg5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTYuNzgsMTgsMTIsMjIuNzJhMSwxLDAsMSwwLDEuNDEsMS40MWw0Ljc3LTQuNzcsNC43NCw0Ljc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTgsMjIuMWExLjQsMS40LDAsMCwxLTIsMmwtNi02TDEyLDI2LjEyYTEuNCwxLjQsMCwxLDEtMi0yTDE2LDE4LjA4LDkuODMsMTEu''@;'; put 'put ''ODZhMS40LDEuNCwwLDEsMSwyLTJMMTgsMTYuMWw2LjE3LTYuMTdhMS40LDEuNCwwLDEsMSwyLDJMMjAsMTguMDhaIi8+JyksTC5DbHJTaGFwZVRyYXNoPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQs''@;'; put 'put ''MzRIOC44NkEyLjkzLDIuOTMsMCwwLDEsNiwzMVYxMS4yM0g4VjMxYS45My45MywwLDAsMCwuODYsMUgyNy4xNEEuOTMuOTMsMCwwLDAsMjgsMzFWMTEuMjNoMlYzMUEyLjkzLDIuOTMsMCwwLDEsMjcuMTQsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC43OCw5SDVBMSwxLDAsMCwxLDUsN0gzMC43OGExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyMSIgeT0iMTMiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjE1Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMTUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTIzLDUuODZIMjEuMVY0SDE0LjlWNS44NkgxM1Y0YTIsMiwwLDAsMSwxLjktMmg2LjJBMiwyLDAsMCwxLDIzLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTYsOVYz''@;'; put 'put ''MWEyLjkzLDIuOTMsMCwwLDAsMi44NiwzSDI3LjA5QTIuOTMsMi45MywwLDAsMCwzMCwzMVY5Wm05LDIwSDEzVjE0aDJabTgsMEgyMVYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC43Myw1SDIzVjRB''@;'; put 'put ''MiwyLDAsMCwwLDIxLDJoLTYuMkEyLDIsMCwwLDAsMTMsNFY1SDVBMSwxLDAsMSwwLDUsN0gzMC43M2ExLDEsMCwwLDAsMC0yWiIvPicpLEwuQ2xyU2hhcGVUYWc9KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTAuNTIiIGN5PSIxMC41MiIgcj0iMS40MyIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDku''@;'; put 'put ''OS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTIwLjYyLDMwLjUyLDYsMTUuOTFWNmg5LjkybDE0LjYsMTQuNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTAuNTIiIGN5PSIxMC41MiIgcj0iMS40MyIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4ybC0zLjgtMy44SDI1LjMxbDUuMjIsNS4yMi05LjksOS45TDYsMTUuOTFWNmg5LjkybDMuNDEsMy40MSwxLTEuNzgtMy0z''@;'; put 'put ''QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTAuNTIiIGN5PSIxMC41MiIgcj0iMS40MyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAs''@;'; put 'put ''MCwzMS45MywxOS4yWk0yMC42MiwzMC41Miw2LDE1LjkxVjZoOS45MmwxNC42LDE0LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5''@;'; put 'put ''LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjQ2LDE1LjczSDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSwxMC4yMmwxLjQzLTIuNDdMMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIs''@;'; put 'put ''MiwwLDAsMCwyLjgzLDBsOS45LTkuOWEyLDIsMCwwLDAsMC0yLjgzWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDkuNjUsMTEuMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS40N2wtNS43Miw5LjkxYTEuMjgsMS4yOCwwLDAsMCwxLjEsMS45MUgzMy42OGExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS40N0ExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS40N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEy''@;'; put 'put ''LDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYuMzMiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZVRhZ3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMz''@;'; put 'put ''LjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI3LjgxIiBjeT0iMTEuMTQiIHI9IjEuMzMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45Miww''@;'; put 'put ''LDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNMTcuMjYsMjkuNjksMy42OSwx''@;'; put 'put ''Ni4xNVY3aDkuMUwyNi4zNywyMC40OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI3LjgxIiBjeT0iMTEuMTQiIHI9IjEuMzMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEu''@;'; put 'put ''OTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTE3LjI2LDI5LjY5LDMuNjksMTYuMTVWN2g5LjFMMjYuMzcsMjAuNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSI3LjgxIiBjeT0iMTEuMTQiIHI9IjEuMzMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMjQsMTUuNEgyMi4yM0EzLjY1''@;'; put 'put ''LDMuNjUsMCwwLDEsMjEsMTUuMTlsNS4zMyw1LjI5LTkuMTEsOS4yMUwzLjY5LDE2LjE1VjdoOS4xbDYsNS45NGEzLjY4LDMuNjgsMCwwLDEsLjEtMi42OUwxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45Miwx''@;'; put 'put ''LjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yMC44Myw2LjgsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwxOS43OSw4LjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMz''@;'; put 'put ''LjE2LDE5LjEzLDI5LjQzLDE1LjRIMjYuNjVsNS4xLDVMMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCww''@;'; put 'put ''LDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEu''@;'; put 'put ''OTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43MywwLDEsMSw4LjQsMTAsMS43MywxLjcz''@;'; put 'put ''LDAsMCwxLDYuNjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIy''@;'; put 'put ''YTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEwLDEuNzMsMS43MywwLDAsMSw2LjY3LDExLjcyWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45Myww''@;'; put 'put ''LDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLjgzLDYuOCwxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDE5Ljc5LDguNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywyOS40MywxNS40SDI2LjY1bDUuMSw1TDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMjQsMTUuNEgyMi4yM2EzLjY3LDMuNjcsMCwwLDEtMy4zNi01LjE1TDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYx''@;'; put 'put ''QTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTYuNjcsMTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwx''@;'; put 'put ''LjczLDEuNzMsMCwwLDEsNi42NywxMS43MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxMLkNsclNoYXBlSGlzdG9yeT0oMCxFLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTgsOS44M2ExLDEsMCwwLDAtMSwxdjguNzJsNS45LDRBMSwxLDAsMCwwLDI0LDIxLjg4bC01LTMuMzlWMTAuODNBMSwxLDAsMCwwLDE4LDkuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDJBMTYuMDksMTYuMDksMCwwLDAsNCwxMC4yNlY1LjJhMSwxLDAsMCwwLTIsMFYxNGg4LjhhMSwxLDAsMCwwLDAtMkg1LjM1QTE0LDE0LDAsMSwxLDguNTgsMjguMzVhMSwxLDAsMCwwLTEuMzUsMS40OEExNiwxNiwwLDEsMCwxOCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz4nKSxMLkNsclNoYXBlQ2xvY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguOTIsMTguNFYxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNOCwxNy45NEE5Ljk0LDkuOTQsMCwwLDEsMjMuNDEsOS41OWwuODUtMS4zNmExMS41NSwxMS41NSwwLDEsMC04LjUzLDIxTDE2LDI3LjdBMTAsMTAsMCwwLDEsOCwxNy45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguOTIsMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZsLTUtMy4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40NCw3LjQ0LDAsMCwxLC41OC0xLjkxLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDYuMzhhMTEuNTYsMTEuNTYsMCwwLDAtMi4yNywyMi44OUwxNiwyNy43YTEwLDEwLDAsMSwxLDcuMzktMTguMWgwYTcuNDUsNy40NSwwLDAsMS0uNzgtMi4yM0ExMS40NSwxMS40NSwwLDAsMCwxOCw2LjM4''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjkyLDEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2bC01LTMuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc3LDE1LjM5aC0yQTE0LDE0LDAsMSwxLDIyLjA5LDQuNjFsMS0xLjc2QTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDMzLjc3LDE1LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw4YTkuODEsOS44MSwwLDAsMSwyLC4yM2wuODUtMS40NmExMS41NSwxMS41NSwwLDEsMC01LjEzLDIyLjUyTDE2LDI3LjdBMTAsMTAsMCwwLDEsMTgsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNi4yLDIxLjE4YTEsMSwwLDAsMS0xLjM5LjI4''@;'; put 'put ''bC01LjktNFYxMC43NWExLDEsMCwwLDEsMiwwVjE4LjRsNSwzLjM5QTEsMSwwLDAsMSwyNC4yLDIzLjE4Wk0yMy44NSw4LjIzYTExLjM5LDExLjM5LDAsMSwwLTguNTQsMjAuODNMMTUsMzAuNjNhMTMsMTMsMCwxLDEsOS43LTIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxQTcuNDgsNy40OCwwLDAsMSwyMi42OCw3LjYzLDExLjI0LDExLjI0LDAsMCwwLDE4LDYuNmExMS4zOSwxMS4zOSwwLDAsMC0yLjY5LDIyLjQ3TDE1LDMwLjYzQTEzLDEzLDAsMCwxLDE4LDVhMTIuODEsMTIuODEs''@;'; put 'put ''MCwwLDEsNC41MS44Miw3LjQ2LDcuNDYsMCwwLDEsLjY4LTIuOTQsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWk0yNC4yLDIzLjE4YTEsMSwwLDAsMS0xLjM5LjI4bC01LjktNFYxMC43NWExLDEsMCwwLDEsMiwwVjE4LjRsNSwzLjM5QTEsMSwwLDAsMSwyNC4yLDIzLjE4WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43NywxNS4zOUgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZjMC0uMDktLjA5LS4xOC0uMTMtLjI3VjE4LjRsNSwzLjM5YTEsMSwwLDAsMS0xLjExLDEuNjZsLTUuOS00VjEwLjc1YTEsMSwwLDAsMSwxLjkxLS40MUEzLjY1LDMuNjUsMCwwLDEs''@;'; put 'put ''MTksOS44OUwyMC43NCw3QTExLjE5LDExLjE5LDAsMCwwLDE4LDYuNmExMS4zOSwxMS4zOSwwLDAsMC0yLjY5LDIyLjQ3TDE1LDMwLjYzQTEzLDEzLDAsMCwxLDE4LDVhMTIuOCwxMi44LDAsMCwxLDMuNTcuNTFsMS41My0yLjY2QTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDMzLjc3''@;'; put 'put ''LDE1LjM5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx''@;'; put 'put ''MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPicpLEwuQ2xyU2hhcGVBbGFybUNsb2NrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''MS40NywzLjg0YTUuNzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIs''@;'; put 'put ''My40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTYuNCw0LjA5QTE0''@;'; put 'put ''LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MUwyOCwyNy43OEExNCwxNCwwLDAsMCwxNi40LDQuMDlaTTE5LjU4LDI5LjlBMTIsMTIs''@;'; put 'put ''MCwxLDEsMjkuOTIsMTkuNTYsMTIsMTIsMCwwLDEsMTkuNTgsMjkuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuOTIsMjAuMzRsLTYuMDYtM1Y5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45''@;'; put 'put ''LjksMCwxLDAsLjc5LTEuNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwx''@;'; put 'put ''LDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg2LDkuNWEuOS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MmwtNi4wNi0z''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwyNy43OEExMy44OCwxMy44OCwwLDAsMCwzMS43NywxNS40aC0yYTEyLjA3LDEyLjA3LDAsMSwxLTguNjctOWwxLTEuOGExNCwx''@;'; put 'put ''NCwwLDAsMC0xNCwyMy4yN0w1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEu''@;'; put 'put ''NDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwyNy43OEExMy44OCwxMy44OCwwLDAsMCwzMS43NywxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NkwxOSwx''@;'; put 'put ''My40djMuNzhMMjUsMjAuMWExLDEsMCwxLDEtLjg3LDEuOEwxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDBWMTBMMTksOS44OWwzLTUuMjhhMTQsMTQsMCwwLDAtMTQsMjMuMjdMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4w''@;'; put 'put ''OGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42''@;'; put 'put ''OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40''@;'; put 'put ''MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yOCwyNy43OGExMy44OSwxMy44OSwwLDAsMCwzLjIxLTE0LjM5QTcuNDYsNy40NiwwLDAsMSwyMi41LDZhNy41Miw3LjUyLDAsMCwxLC4xMS0xLjIxQTE0LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCww''@;'; put 'put ''LDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVptLTIuNTItNi4zNWExLDEsMCwwLDEtMS4zMy40N0wxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDB2Ny41TDI1LDIwLjFBMSwxLDAsMCwxLDI1LjQ5LDIxLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40''@;'; put 'put ''MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTguODYsOS41YS45LjksMCwwLDAtMS44LDB2OUwyNC4xMiwyMmEuOS45LDAsMSwwLC43OS0xLjYybC02LjA2LTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwyNy43''@;'; put 'put ''OGExMy44OSwxMy44OSwwLDAsMCwzLjIxLTE0LjM5LDcsNywwLDAsMS0yLjExLjA1QTEyLDEyLDAsMSwxLDIyLjU2LDYuOSw3LjU0LDcuNTQsMCwwLDEsMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTEtMS4yMUExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcs''@;'; put 'put ''MzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4y''@;'; put 'put ''LDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgs''@;'; put 'put ''MTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw0QTE0LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45''@;'; put 'put ''LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MUwyOCwyNy43OEExNCwxNCwwLDAsMCwxOCw0Wm03LjQ3LDE3LjQzYTEsMSwwLDAsMS0xLjMzLjQ3TDE3LDE4LjQ0VjkuNjlhMSwxLDAsMCwxLDIsMHY3LjVMMjUsMjAuMUExLDEsMCwwLDEsMjUuNDksMjEuNDNa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksTC5DbHJTaGFwZUNpcmNsZUFycm93PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQs''@;'; put 'put ''MCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA4LDguMjZsLTcuNjEsNy42MWExLDEsMCwxLDAsMS40MSwxLjQxTDE3LDEyLjE4djE1YTEsMSwwLDAsMCwyLDBWMTJsNS4yOCw1LjI4YTEs''@;'; put 'put ''MSwwLDEsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOCwxNS41N2ExLjQzLDEuNDMsMCwwLDEtMiwwTDE5LjQsMTNW''@;'; put 'put ''MjcuMTRhMS40LDEuNCwwLDAsMS0yLjgsMHYtMTRsLTQuNDMsNC40M2ExLjQsMS40LDAsMCwxLTItMkwxOC4wOCw3LjcsMjYsMTUuNTlBMS40LDEuNCwwLDAsMSwyNiwxNy41N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlQ2hpbGRBcnJv''@;'; put 'put ''dz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuODIsMTUuOGExLDEsMCwwLDAtMS40MSwwLDEsMSwwLDAsMCwwLDEuNDFMMjcuMiwyMUg5VjMuNzhhMSwxLDAsMSwwLTIsMFYyMWEyLDIsMCwwLDAsMiwySDI3LjE1bC0zLjc0LDMuNzVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAs''@;'; put 'put ''LjcuMjksMSwxLDAsMCwwLC43MS0uMjlMMzEsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ29weT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjkuNSw3aC0xOUExLjUsMS41LDAsMCwwLDksOC41djI0QTEuNSwxLjUs''@;'; put 'put ''MCwwLDAsMTAuNSwzNGgxOUExLjUsMS41LDAsMCwwLDMxLDMyLjVWOC41QTEuNSwxLjUsMCwwLDAsMjkuNSw3Wk0yOSwzMkgxMVY5SDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzLjVBMS41LDEuNSww''@;'; put 'put ''LDAsMCwyNC41LDJINS41QTEuNSwxLjUsMCwwLDAsNCwzLjV2MjRBMS41LDEuNSwwLDAsMCw1LjUsMjlINlY0SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywzLjU2QTEuNTYsMS41NiwwLDAsMCwyNS40''@;'; put 'put ''MywySDUuNTdBMS41NiwxLjU2LDAsMCwwLDQsMy41NlYyOC40NEExLjU2LDEuNTYsMCwwLDAsNS41NywzMGguNTJWNC4wN0gyN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjYiIHdpZHRoPSIyMyIgaGVpZ2h0''@;'; put 'put ''PSIyOCIgcng9IjEuNSIgcnk9IjEuNSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLEwuQ2xyU2hhcGVIZWxwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwx''@;'; put 'put ''LDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjI5LDguOTJhNy4zOCw3LjM4LDAsMCwwLTUuNzIsMi41NywxLDEsMCwwLDAtLjMyLjcxLjkyLjkyLDAsMCwwLC45''@;'; put 'put ''NS45MiwxLjA4LDEuMDgsMCwwLDAsLjcxLS4yOSw1LjcsNS43LDAsMCwxLDQuMzMtMmMyLjM2LDAsMy44MywxLjUyLDMuODMsMy40MXYuMDVjMCwyLjIxLTEuNzYsMy40NC00LjU0LDMuNjVhLjguOCwwLDAsMC0uNzYuOTJzMCwyLjMyLDAsMi43NWExLDEsMCwwLDAsMSwuOWguMTFhMSwxLDAs''@;'; put 'put ''MCwwLC45LTFWMTkuNDVjMy0uNDIsNS40My0yLDUuNDMtNS4yOHYtLjA1QzI0LjE4LDExLjEyLDIxLjg0LDguOTIsMTguMjksOC45MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy43OCIgY3k9IjI2LjIi''@;'; put 'put ''IHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTgsMTQuMTd2LS4wNWMwLTMtMi4zNC01LjItNS44OC01LjJhNy4zOCw3LjM4LDAsMCwwLTUuNzIsMi41NywxLDEsMCwwLDAtLjMyLjcxLjkyLjky''@;'; put 'put ''LDAsMCwwLC45NS45MiwxLjA4LDEuMDgsMCwwLDAsLjcxLS4yOSw1LjcsNS43LDAsMCwxLDQuMzMtMmMyLjM2LDAsMy44MywxLjUyLDMuODMsMy40MXYuMDVjMCwyLjIxLTEuNzYsMy40NC00LjU0LDMuNjVhLjguOCwwLDAsMC0uNzYuOTJzMCwyLjMyLDAsMi43NWExLDEsMCwwLDAsMSwuOWgu''@;'; put 'put ''MTFhMSwxLDAsMCwwLC45LTFWMTkuNDVDMjEuNzUsMTksMjQuMTgsMTcuNDUsMjQuMTgsMTQuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE3Ljc4IiBjeT0iMjYuMiIgcj0i''@;'; put 'put ''MS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40Myw3LjQzLDAsMCwxLTEuOTEuNTgsMTQuMDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQ0LDcuNDQsMCww''@;'; put 'put ''LDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDksNy40OSwwLDAsMS05LjkzLTkuOTMsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWm0tMTUuMzQsMTVhMS42NSwxLjY1LDAs''@;'; put 'put ''MSwxLDEuNjUtMS42NUExLjY1LDEuNjUsMCwwLDEsMTcuNzgsMjcuODVabTEuMzctOC4wNnYxLjcyYTEuMzcsMS4zNywwLDAsMS0xLjMsMS4zNmgtLjExYTEuMzQsMS4zNCwwLDAsMS0xLjM5LTEuM2MwLS40NCwwLTIuNzYsMC0yLjc2YTEuMTksMS4xOSwwLDAsMSwxLjEyLTEuMzFjMS41Ny0u''@;'; put 'put ''MTIsNC4xOC0uNyw0LjE4LTMuMjUsMC0xLjgzLTEuNDEtMy4wNy0zLjQzLTMuMDdhNS4zMSw1LjMxLDAsMCwwLTQsMS45MiwxLjM2LDEuMzYsMCwwLDEtMi4zNS0uOSwxLjQzLDEuNDMsMCwwLDEsLjQzLTEsNy43Nyw3Ljc3LDAsMCwxLDYtMi42OWMzLjcsMCw2LjI4LDIuMyw2LjI4LDUuNkMy''@;'; put 'put ''NC41OCwxNy4xNiwyMi42MSwxOS4yLDE5LjE1LDE5Ljc5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS0uMjIsMjUuODVhMS42NSwxLjY1LDAsMSwxLDEuNjUtMS42NUExLjY1LDEuNjUsMCwwLDEsMTcuNzgsMjcu''@;'; put 'put ''ODVabTEuMzctOC4wNnYxLjcyYTEuMzcsMS4zNywwLDAsMS0xLjMsMS4zNmgtLjExYTEuMzQsMS4zNCwwLDAsMS0xLjM5LTEuM2MwLS40NCwwLTIuNzYsMC0yLjc2YTEuMTksMS4xOSwwLDAsMSwxLjEyLTEuMzFjMS41Ny0uMTIsNC4xOC0uNyw0LjE4LTMuMjUsMC0xLjgzLTEuNDEtMy4wNy0z''@;'; put 'put ''LjQzLTMuMDdhNS4zMSw1LjMxLDAsMCwwLTQsMS45MiwxLjM2LDEuMzYsMCwwLDEtMi4zNS0uOSwxLjQzLDEuNDMsMCwwLDEsLjQzLTEsNy43Nyw3Ljc3LDAsMCwxLDYtMi42OWMzLjcsMCw2LjI4LDIuMyw2LjI4LDUuNkMyNC41OCwxNy4xNiwyMi42MSwxOS4yLDE5LjE1LDE5Ljc5WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLEwuQ2xyU2hhcGVMb2dpbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxMmEyLDIsMCwwLDAtMiwySDI4VjMwSDEyVjIwLjJIMTBWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAs''@;'; put 'put ''MCwwLDI4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS4xMiwxOC40NmExLDEsMCwxLDAsMS40MSwxLjQxbDUuNzktNS43OUwxNi41NCw4LjI5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTguNSwxM0g0YTEs''@;'; put 'put ''MSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMUgxOC41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsNEgxMmEyLDIsMCwwLDAtMiwydjdoOC41TDE1LjEyLDkuNzFhMSwxLDAsMCwxLDEuNDEtMS40MWw1Ljc5''@;'; put 'put ''LDUuNzktNS43OSw1Ljc5YTEsMSwwLDAsMS0xLjQxLTEuNDFMMTguNSwxNUgxMFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTAsMTNINGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUxvZ291dD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNyw2SDIzdjkuOGgyVjZhMiwyLDAsMCwwLTItMkg3QTIsMiww''@;'; put 'put ''LDAsMCw1LDZWMzBhMiwyLDAsMCwwLDIsMkgyM2EyLDIsMCwwLDAsMi0ySDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjE2LDE3LjI4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTMsMjJIMTUuNjNhMSwx''@;'; put 'put ''LDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDE0LjVsLTMuMzgsMy40NmExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIzLjA3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMyw0SDdBMiwyLDAsMCwwLDUsNlYzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDIzYTIsMiwwLDAsMCwyLTJWMjRIMTUuNjNhMSwxLDAsMCwxLTEtMSwxLDEsMCwwLDEsMS0xSDI1VjZBMiwyLDAsMCwwLDIzLDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMTYsMTcuMjhh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MUwzMC4xMywyMkgyNXYyaDUuMTNsLTMuMzgsMy40NmExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIzLjA3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLEwuQ2xyU2hhcGVQcmludGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yOSw5SDI3VjVIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVWMTNhMiwyLDAsMCwxLDItMkgyOWEyLDIsMCwwLDEsMiwydjlIMjkuMDhWMjRIMzNWMTNBNCw0LDAsMCwwLDI5LDlaTTI1LDlIMTFWN0gyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMThIOGExLDEsMCwwLDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgxMVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSIyNyIgeT0iMTMuMDQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMThIOGExLDEsMCwwLDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgx''@;'; put 'put ''MVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMxIDE1LjQgMzEgMjIuMDkgMjkuMDggMjIuMDkgMjkuMDggMjQgMzMgMjQgMzMgMTUuNCAzMSAxNS40IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTNhMiwyLDAsMCwxLDItMkgxOC42NEEzLjY1LDMuNjUsMCwwLDEsMTksOS44OUwxOS41NCw5SDExVjdoOS43MWwxLjEzLTJIOVY5SDdh''@;'; put 'put ''NCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMz''@;'; put 'put ''LjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yOCwxOEg4YTEsMSwwLDAsMCwwLDJIOVYzMkgyN1YyMGgxYTEsMSwwLDAsMCwwLTJaTTI1LDMwSDExVjIwSDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTMuMDQi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDEyLjg4YTcuNDUsNy40NSwwLDAsMS0yLC41NXY4LjY2SDI5LjA4VjI0SDMzVjEzQzMzLDEzLDMz''@;'; put 'put ''LDEyLjkzLDMzLDEyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxM2EyLDIsMCwwLDEsMi0ySDI0LjQyYTcuNSw3LjUsMCwwLDEtMS4yNy0ySDExVjdIMjIuNTdhNy41Miw3''@;'; put 'put ''LjUyLDAsMCwxLS4wNy0xLDcuNTQsNy41NCwwLDAsMSwuMDctMUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDYuOTJWMjIuMDlINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSw5SDI3VjVIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxM0E0LDQsMCww''@;'; put 'put ''LDAsMjksOVpNMjUsMjR2NkgxMVYxOUgyNVpNMjUsOUgxMVY3SDI1Wm00LDZIMjdWMTNoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU0LDlIMTFW''@;'; put 'put ''N2g5LjcxbDEuMTMtMkg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDl2OEgyN1YyNGg2VjE1LjRaTTI1LDI0djZIMTFWMTlIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4x''@;'; put 'put ''NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTIuODhhNy4zLDcuMywwLDAsMS00LC41NVYxNUgyN1YxM2guMzJhNy41Miw3LjUyLDAsMCwxLTQuMTgtNEgxMVY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjU0LDcuNTQsMCwwLDEsLjA3LTFIOVY5SDdhNCw0''@;'; put 'put ''LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxM0MzMywxMywzMywxMi45MywzMywxMi44OFpNMjUsMjR2NkgxMVYxOUgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZVdvcmxkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwxOGExOS4zOCwxOS4zOCwwLDAsMC0uNDMtNGgzLjZhMTIuMywx''@;'; put 'put ''Mi4zLDAsMCwwLS42Ny0xLjZIMjUuNjlBMTkuNzIsMTkuNzIsMCwwLDAsMjIuOCw2LjUzYTEyLjMsMTIuMywwLDAsMC0yLjU1LS43NiwxNy44MywxNy44MywwLDAsMSwzLjg5LDYuNTlIMTguNzVWNS42Yy0uMjUsMC0uNTEsMC0uNzcsMHMtLjQ5LDAtLjczLDB2Ni43N0gxMS44NmExNy44Mywx''@;'; put 'put ''Ny44MywwLDAsMSwzLjktNi42LDEyLjI4LDEyLjI4LDAsMCwwLTIuNTQuNzUsMTkuNzIsMTkuNzIsMCwwLDAtMi45MSw1Ljg1SDYuOTRBMTIuMywxMi4zLDAsMCwwLDYuMjYsMTRIOS44OWExOS4zOCwxOS4zOCwwLDAsMC0uNDMsNCwxOS42NywxOS42NywwLDAsMCwuNSw0LjM3SDYuNDJBMTIu''@;'; put 'put ''MzQsMTIuMzQsMCwwLDAsNy4xNiwyNGgzLjIzYTE5LjMyLDE5LjMyLDAsMCwwLDIuNjksNS4zNiwxMi4yOCwxMi4yOCwwLDAsMCwyLjYxLjc5QTE3LjkxLDE3LjkxLDAsMCwxLDEyLDI0aDUuMjZ2Ni4zNGMuMjQsMCwuNDksMCwuNzMsMHMuNTEsMCwuNzcsMFYyNEgyNGExNy45LDE3LjksMCww''@;'; put 'put ''LDEtMy43LDYuMTUsMTIuMjgsMTIuMjgsMCwwLDAsMi42Mi0uODFBMTkuMzIsMTkuMzIsMCwwLDAsMjUuNjEsMjRoMy4yYTEyLjM0LDEyLjM0LDAsMCwwLC43NC0xLjZIMjZBMTkuNjcsMTkuNjcsMCwwLDAsMjYuNTQsMThabS05LjI5LDQuMzdIMTEuNTFhMTcuNjksMTcuNjksMCwwLDEtLjA5''@;'; put 'put ''LTguNGg1LjgzWm03LjI0LDBIMTguNzVWMTRoNS44M0ExOC4yMSwxOC4yMSwwLDAsMSwyNSwxOCwxOC4xMiwxOC4xMiwwLDAsMSwyNC40OSwyMi4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwx''@;'; put 'put ''NiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ0LDcuNDQs''@;'; put 'put ''MCwwLDEtMS45MS41OCwxNC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDMsNy40MywwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yMC4yNSw1Ljc3YTE3LjgzLDE3LjgzLDAsMCwxLDMuODksNi41OUgxOC43NVY1LjZjLS4yNSwwLS41MSwwLS43Nywwcy0uNDksMC0uNzMsMHY2Ljc3SDExLjg2YTE3LjgzLDE3LjgzLDAsMCwxLDMuOS02LjYsMTIuMjgsMTIuMjgsMCwwLDAtMi41NC43NSwxOS43Miwx''@;'; put 'put ''OS43MiwwLDAsMC0yLjkxLDUuODVINi45NEExMi4zLDEyLjMsMCwwLDAsNi4yNiwxNEg5Ljg5YTE5LjM4LDE5LjM4LDAsMCwwLS40Myw0LDE5LjY3LDE5LjY3LDAsMCwwLC41LDQuMzdINi40MkExMi4zNCwxMi4zNCwwLDAsMCw3LjE2LDI0aDMuMjNhMTkuMzIsMTkuMzIsMCwwLDAsMi42OSw1''@;'; put 'put ''LjM2LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjEuNzlBMTcuOTEsMTcuOTEsMCwwLDEsMTIsMjRoNS4yNnY2LjM0Yy4yNCwwLC40OSwwLC43Mywwcy41MSwwLC43NywwVjI0SDI0YTE3LjksMTcuOSwwLDAsMS0zLjcsNi4xNSwxMi4yOCwxMi4yOCwwLDAsMCwyLjYyLS44MUExOS4zMiwxOS4zMiww''@;'; put 'put ''LDAsMCwyNS42MSwyNGgzLjJhMTIuMzQsMTIuMzQsMCwwLDAsLjc0LTEuNkgyNmExOS42NywxOS42NywwLDAsMCwuNS00LjM3LDE5LjM4LDE5LjM4LDAsMCwwLS40My00aDMuNmMtLjA2LS4xNy0uMTItLjMzLS4xOS0uNDlhNy40NSw3LjQ1LDAsMCwxLTMuNDctMS4xMWgtLjM2YzAtLjExLS4w''@;'; put 'put ''OC0uMjEtLjExLS4zMmE3LjQ4LDcuNDgsMCwwLDEtMy4wNi01LjYyQTEyLjQxLDEyLjQxLDAsMCwwLDIwLjI1LDUuNzdabS0zLDE2LjU5SDExLjUxYTE3LjY5LDE3LjY5LDAsMCwxLS4wOS04LjRoNS44M1pNMjUsMThhMTguMTIsMTguMTIsMCwwLDEtLjU1LDQuMzdIMTguNzVWMTRoNS44M0Ex''@;'; put 'put ''OC4yMSwxOC4yMSwwLDAsMSwyNSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNSwxOGEyMC40NiwyMC40NiwwLDAsMCwuNjIsNC45M2g2LjQ4VjEzLjQ1SDEwLjU4QTIwLjU1LDIwLjU1LDAsMCwwLDEwLjA1LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg1LDEzLjQ1djkuNDhoNi40OEEyMC40NiwyMC40NiwwLDAsMCwyNiwxOGEyMC41NSwyMC41NSwwLDAsMC0uNTItNC41NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTMwLjIyLDI0LjcxSDI2LjZhMjEuOCwyMS44LDAsMCwxLTMsNiwxMy44NiwxMy44NiwwLDAsMS0zLC45MiwyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LTYuOTRIMTguODZ2Ny4xNWMtLjI5LDAtLjU3''@;'; put 'put ''LDAtLjg2LDBzLS41NSwwLS44MywwVjI0LjcxSDExLjIyYTIwLjIxLDIwLjIxLDAsMCwwLDQuMTgsNi45NSwxMy44NiwxMy44NiwwLDAsMS0yLjk0LS45LDIxLjgsMjEuOCwwLDAsMS0zLTYuMDVINS43OGExMy45NCwxMy45NCwwLDAsMS0uODMtMS44MWg0QTIyLjIsMjIuMiwwLDAsMSw4LjM3''@;'; put 'put ''LDE4YTIxLjg4LDIxLjg4LDAsMCwxLC40OC00LjU1SDQuNzZhMTMuODgsMTMuODgsMCwwLDEsLjc2LTEuODFIOS4zM0EyMi4yNiwyMi4yNiwwLDAsMSwxMi42MSw1YTEzLjg2LDEzLjg2LDAsMCwxLDIuODctLjg0LDIwLjEzLDIwLjEzLDAsMCwwLTQuNCw3LjQ1aDYuMDlWNGMuMjgsMCwuNTUs''@;'; put 'put ''MCwuODMsMHMuNTgsMCwuODYsMHY3LjY0aDYuMDlhMjAuMTMsMjAuMTMsMCwwLDAtNC4zOS03LjQ0QTEzLjg5LDEzLjg5LDAsMCwxLDIzLjQzLDVhMjIuMjYsMjIuMjYsMCwwLDEsMy4yNyw2LjU5aDMuNzdhMTMuODksMTMuODksMCwwLDEsLjc2LDEuODFIMjcuMTdBMjEuODgsMjEuODgsMCww''@;'; put 'put ''LDEsMjcuNjYsMThhMjIuMiwyMi4yLDAsMCwxLS41Nyw0LjkzaDRBMTMuOTQsMTMuOTQsMCwwLDEsMzAuMjIsMjQuNzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDUsMThhMjAuNDYsMjAuNDYsMCwwLDAsLjYy''@;'; put 'put ''LDQuOTNoNi40OFYxMy40NUgxMC41OEEyMC41NSwyMC41NSwwLDAsMCwxMC4wNSwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguODUsMjIuOTRoNi40OEEyMC40NiwyMC40NiwwLDAs''@;'; put 'put ''MCwyNiwxOGEyMC41NSwyMC41NSwwLDAsMC0uNTItNC41NUgxOC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40NCw3LjQ0LDAsMCwxLTEuOS41OHYwSDMxYTYu''@;'; put 'put ''NzcsNi43NywwLDAsMS0yLjA3LDBoLTEuOEEyMS44OCwyMS44OCwwLDAsMSwyNy42NiwxOGEyMi4yLDIyLjIsMCwwLDEtLjU3LDQuOTNoNGExMy45NCwxMy45NCwwLDAsMS0uODMsMS44MUgyNi42YTIxLjgsMjEuOCwwLDAsMS0zLDYsMTMuODYsMTMuODYsMCwwLDEtMywuOTIsMjAuMjEsMjAu''@;'; put 'put ''MjEsMCwwLDAsNC4xOC02Ljk0SDE4Ljg2djcuMTVjLS4yOSwwLS41NywwLS44Niwwcy0uNTUsMC0uODMsMFYyNC43MUgxMS4yMmEyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LDYuOTUsMTMuODYsMTMuODYsMCwwLDEtMi45NC0uOSwyMS44LDIxLjgsMCwwLDEtMy02LjA1SDUuNzhhMTMuOTQsMTMu''@;'; put 'put ''OTQsMCwwLDEtLjgzLTEuODFoNEEyMi4yLDIyLjIsMCwwLDEsOC4zNywxOGEyMS44OCwyMS44OCwwLDAsMSwuNDgtNC41NUg0Ljc2YTEzLjg4LDEzLjg4LDAsMCwxLC43Ni0xLjgxSDkuMzNBMjIuMjYsMjIuMjYsMCwwLDEsMTIuNjEsNWExMy44NiwxMy44NiwwLDAsMSwyLjg3LS44NCwyMC4x''@;'; put 'put ''MywyMC4xMywwLDAsMC00LjQsNy40NWg2LjA5VjRjLjI4LDAsLjU1LDAsLjgzLDBzLjU4LDAsLjg2LDB2Ny42NGg2LjA5bDAtLjEzYTcuNDcsNy40NywwLDAsMS0yLjM2LTQuNzYsMjAuMzcsMjAuMzcsMCwwLDAtMi0yLjU1LDE0LjIzLDE0LjIzLDAsMCwxLDIuMDYuNTYsNy40NCw3LjQ0LDAs''@;'; put 'put ''MCwxLC41Ny0xLjg2LDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZVNsaWRlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIsMTIuMzdBNCw0LDAsMCwwLDksOC40OFY1QTEsMSwwLDEsMCw3LDVWOC40OGE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSww''@;'; put 'put ''LDEsMCwyLDBWMTYuMjZBNCw0LDAsMCwwLDEyLDEyLjM3Wm0tNCwyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDgsMTQuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTUuODNhNCw0LDAsMCwwLTMtMy44''@;'; put 'put ''OVY1YTEsMSwwLDEsMC0yLDB2Ni45NGE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSwwLDEsMCwyLDBWMTkuNzJBNCw0LDAsMCwwLDMyLDE1LjgzWm0tNCwyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDI4LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwyNC41YTQsNCwwLDAsMC0zLTMuODlWNWExLDEsMCwxLDAtMiwwVjIwLjYxYTQsNCwwLDAsMCwwLDcuNzhWMzFhMSwxLDAsMSwwLDIsMFYyOC4zOUE0LDQsMCwwLDAsMjIsMjQuNVptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwxOCwy''@;'; put 'put ''Ni41M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSw5LjI5VjVBMSwxLDAsMSwwLDcsNVY5LjNhMy4yMiwzLjIyLDAsMCwwLDAsNi4xMVYzMWExLDEsMCwxLDAsMiwwVjE1LjQzQTMuMjIsMy4yMiwwLDAsMCw5''@;'; put 'put ''LDkuMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMjEuNDVWNWExLDEsMCwxLDAtMiwwVjIxLjQ3YTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYyNy42YTMuMjIsMy4yMiwwLDAsMCww''@;'; put 'put ''LTYuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksMTIuNzVWNWExLDEsMCwxLDAtMiwwdjcuNzZhMy4yMiwzLjIyLDAsMCwwLDAsNi4xMVYzMWExLDEsMCwxLDAsMiwwVjE4Ljg5YTMuMjIsMy4yMiwwLDAsMCww''@;'; put 'put ''LTYuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksTC5DbHJTaGFwZUNsaXBib2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjkuMjksNUgyN1Y3aDJWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNyww''@;'; put 'put ''LDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWNi42OUExLjcsMS43LDAsMCwwLDI5LjI5LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiw3LjMzQTIuMzQsMi4zNCwwLDAsMCwy''@;'; put 'put ''My42Nyw1SDIxLjg3YTQsNCwwLDAsMC03Ljc1LDBIMTIuMzNBMi4zNCwyLjM0LDAsMCwwLDEwLDcuMzNWMTFIMjZaTTI0LDlIMTJWNy4zM0EuMzMuMzMsMCwwLDEsMTIuMzMsN0gxNlY2YTIsMiwwLDAsMSw0LDBWN2gzLjY3YS4zMy4zMywwLDAsMSwuMzMuMzNaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE4IiB3''@;'; put 'put ''aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjIiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyNiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE0IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE4IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIyIiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI2IiB3aWR0aD0i''@;'; put 'put ''MTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjEzLDlIMTJWNy4zM0EuMzMuMzMsMCwwLDEsMTIuMzMsN0gxNlY2YTIsMiwwLDAsMSw0LDBWN2gyLjU3YTcu''@;'; put 'put ''NTIsNy41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFoLS43YTQsNCwwLDAsMC03Ljc1LDBIMTIuMzNBMi4zNCwyLjM0LDAsMCwwLDEwLDcuMzNWMTFIMjQuNDJBNy41LDcuNSwwLDAsMSwyMy4xMyw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy41Miw3LjUyLDAsMCwxLTEtLjA3VjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMy''@;'; put 'put ''LjMxVjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjI5LDVIMjIuMTdhNC40NSw0LjQ1LDAsMCwwLTQuMTEtM0E0LjQ2LDQuNDYsMCwwLDAsMTQsNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43''@;'; put 'put ''LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWNi42OUExLjcsMS43LDAsMCwwLDI5LjI5LDVabS0xOCwzYTEsMSwwLDAsMSwxLTFoMy40NFY2LjMxYTIuMzEsMi4zMSwwLDEsMSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAsMSwxLDF2MkgxMS4zMVpNMjUsMjhI''@;'; put 'put ''MTFWMjZIMjVabTAtNEgxMVYyMkgyNVptMC00SDExVjE4SDI1Wm0wLTRIMTFWMTRIMjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwSDExLjMxVjhhMSwxLDAs''@;'; put 'put ''MCwxLDEtMWgzLjQ0VjYuMzFhMi4zMSwyLjMxLDAsMSwxLDQuNjMsMFY3aDIuMTlhNy41NCw3LjU0LDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjRhNC40NSw0LjQ1LDAsMCwwLTQuMTEtM0E0LjQ2LDQuNDYsMCwwLDAsMTQsNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlW''@;'; put 'put ''MzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaTTI1LDI4SDExVjI2SDI1Wm0wLTRIMTFWMjJIMjVabTAtNEgxMVYxOEgyNVptMC00SDExVjE0SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBl''@;'; put 'put ''RmlyZXdhbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk00LDhIMzJ2NS4wOEgyMy44di00SDIydjRIMTR2LTRIMTJ2NEg0Wm0wLDdIMzJ2Ni4wOEgyOC45''@;'; put 'put ''MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45VjE2LjI3SDd2NC44MUg0Wk0yMy44LDI4VjI0LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjUuNjhIMjguOTJWMTYuMjdIMjd2NC44MUgxOC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFYxNUgyMC41OGEzLjU4LDMuNTgsMCwwLDEtMS43Ni0xLjkySDE0di00SDEydjRINFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwy''@;'; put 'put ''LDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4Wk0yMy44LDI4VjI0LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjQ1LS40MkgyMy44VjEwLjIyYTcuNSw3LjUsMCwwLDEtLjYzLTEuMTRIMjJ2NEgxNHYtNEgxMnY0SDRWOEgyMi43OGE3LjQ5''@;'; put 'put ''LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpNNCwxNUgzMnY2LjA4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0''@;'; put 'put ''LjgxSDRaTTIzLjgsMjhWMjQuMjdIMjIuMlYyOEgxNFYyNC4yN2gtMS42VjI4SDRWMjNIMzJ2NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIs''@;'; put 'put ''NlpNMTQsMjhIMTJWMjRoMlptMTAsMEgyMlYyNGgyWm04LTZINFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWm0wLThINFYxMmg4VjhoMnY0aDhWOGgydjRoOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRINFYxMmg4VjhoMnY0aDQuNTdBMy42NywzLjY3LDAsMCwxLDE5LDkuODlMMjEuMjksNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4Wk0xNCwyOEgxMlYyNGgyWm0x''@;'; put 'put ''MCwwSDIyVjI0aDJabTgtNkg0VjIwSDdWMTZIOXY0aDhWMTZoMnY0aDhWMTZoMnY0aDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjQsMTAuNDlWMTJoMS41MUE3LjUzLDcuNTMsMCwwLDEsMjQsMTAuNDlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYxNEg0VjEyaDhWOGgy''@;'; put 'put ''djRoOFY4aC43OGE3LjQ5LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaTTE0LDI4SDEyVjI0aDJabTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYx''@;'; put 'put ''NmgydjRoOFYxNmgydjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZUxpc3Q9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iMTUiIHk9IjgiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''eD0iMTUiIHk9IjEyIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjAiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI0IiB3aWR0aD0iOSIgaGVpZ2h0''@;'; put 'put ''PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjExIiB5PSIxMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC04IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyNCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWm0wLDMwSDhWNEgyOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxMiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE2IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjAiIHdpZHRoPSI5IiBoZWlnaHQ9''@;'; put 'put ''IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMiIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjExIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDh2Mmg4LjY2YTcuNDUsNy40NSwwLDAsMS0uODktMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJWMzJIOFY0SDIyLjc4YTcuNDUsNy40NSwwLDAsMSwuODgtMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIs''@;'; put 'put ''MCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTEzLDI2SDExVjI0''@;'; put 'put ''aDJabTAtNEgxMVYyMGgyWm0wLTRIMTFWMTZoMlptMC00SDExVjEyaDJabTAtNEgxMVY4aDJaTTI1LDI2SDE1VjI0SDI1Wm0wLTRIMTVWMjBIMjVabTAtNEgxNVYxNkgyNVptMC00SDE1VjEySDI1Wm0wLTRIMTVWOEgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuNjYsMTBIMTVWOGg3Ljc4YTcuNDIsNy40MiwwLDAsMSwuODktNkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwWk0xMywyNkgxMVYyNGgyWm0w''@;'; put 'put ''LTRIMTFWMjBoMlptMC00SDExVjE2aDJabTAtNEgxMVYxMmgyWm0wLTRIMTFWOGgyWk0yNSwyNkgxNVYyNEgyNVptMC00SDE1VjIwSDI1Wm0wLTRIMTVWMTZIMjVabTAtNEgxNVYxMkgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZVJlZG89KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDQu''@;'; put 'put ''MjJhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjU2LDUuNDloLTEzQTExLDExLDAsMCwwLDEwLjA3LDMyLDEsMSwwLDAsMCwxMSwzMC4xOGE5LDksMCwwLDEtNS04LDkuMDgsOS4wOCwwLDAsMSw5LjEzLTloMTNsLTUuNTQsNS40OEExLDEsMCwwLDAsMjQsMjBsOC03LjkxWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVVuZG89KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjg3LDExLjE0aC0xM2w1LjU2LTUuNDlBMSwxLDAsMCwwLDEyLDQuMjJMNCwxMi4xMywxMiwyMGExLDEsMCwwLDAsMS40MS0xLjQyTDcuODYsMTMu''@;'; put 'put ''MTRoMTNhOS4wOCw5LjA4LDAsMCwxLDkuMTMsOSw5LDksMCwwLDEtNSw4QTEsMSwwLDAsMCwyNS45MywzMmExMSwxMSwwLDAsMC01LjA2LTIwLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVNjcm9sbD0oMCxFLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMzQsMTEuMTJWNi41OGE0LjUsNC41LDAsMCwwLTQuNS00LjVoLTE2QTQuNSw0LjUsMCwwLDAsOSw2LjU4djIzYTIuNSwyLjUsMCwxLDEtNSwwVjI2SDcuMTlWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjEz''@;'; put 'put ''LjEzaC0yVjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NFptLTQuNS03QTIuNSwyLjUsMCwwLDEsMzIsNi41OFY5LjEySDE4VjYuNThhNC40OCw0LjQ4LDAsMCwwLS43Ni0yLjVaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4wOCwxNS40VjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGgyLjYx''@;'; put 'put ''QTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5bC40NC0uNzZIMThWNi41OGE0LjQ4LDQuNDgsMCwwLDAtLjc2LTIuNUgyMi40bDEuMTUtMkgxMy41QTQuNSw0LjUsMCwwLDAsOSw2LjU4djIzYTIuNSwyLjUsMCwxLDEtNSwwVjI2SDcuMTlWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUu''@;'; put 'put ''NThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz''@;'; put 'put ''My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS0xLjkyLS4yNnYxNi4zYTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGg4LjU0YTcuNSw3LjUsMCwwLDEtMS4zNS0ySDE4VjYuNThhNC40OCw0LjQ4''@;'; put 'put ''LDAsMCwwLS43Ni0yLjVoNS41MmE3LjQ0LDcuNDQsMCwwLDEsLjg2LTJIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNXYtMTZaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMTEuMTJWNi41OGE0LjUsNC41LDAsMCwwLTQuNS00LjVoLTE2QTQuNSw0LjUsMCwwLDAsOSw2LjU4VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxMy4xM2gtMlYyOS41''@;'; put 'put ''NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjA4LDE1LjRWMjkuNTRh''@;'; put 'put ''Mi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0aDIuNjFBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsNC41MS03LjhIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgydjUuNUE0LjUsNC41LDAsMCww''@;'; put 'put ''LDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS0xLjkyLS4yNnYxNi4zYTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGg4LjU0YTcuNDYsNy40NiwwLDAsMS0uOTItOUgxMy41QTQuNSw0LjUs''@;'; put 'put ''MCwwLDAsOSw2LjU4VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNXYtMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVGaWxlU2V0dGluZ3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0u''@;'; put 'put ''NzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCwwLS4yMS0xLjM3bC0xLjQyLTEuNDFhMS4xNiwxLjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZhNy44NCw3Ljg0LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSww''@;'; put 'put ''LDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCwwLS43Ny4zMmwtMS40Mi0uNzZhMS4xNiwxLjE2LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4xNiwxLjE2LDAsMCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAs''@;'; put 'put ''MC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44MywxLjFsMS41OS40N2E3LjUzLDcuNTMsMCwwLDAsLjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYsMCwwLDAsLjIxLDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcu''@;'; put 'put ''MjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmExLjE2LDEuMTYsMCwwLDAsMS4xMS0uODJsLjQ3LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjlsMS41Ljc5YTEuMTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYs''@;'; put 'put ''MS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCwwLDAsLjgzLTEuMTFabS0xLjYsMS42My0yLjExLjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4xOWwtLjIxLjM4LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAs''@;'; put 'put ''MS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEtMS4yMS0uNDlsLS4zNy0uMi0xLjk0LDEtMS0xLDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwxOC4xNywyNkwxOCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQx''@;'; put 'put ''YTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4yMyw2LjIzLDAsMCwxLDEuMjYtLjUybC40MS0uMTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2LjIxLDYuMjEsMCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEu''@;'; put 'put ''ODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAsNC4wOCw0QTQuMDYsNC4wNiwwLDAsMCwy''@;'; put 'put ''NC4xMiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNDksMzFINlY1SDI2djcuODlh''@;'; put 'put ''My4yLDMuMiwwLDAsMSwyLDEuNzJWNWEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE2LjIzbC0xLjEtMS4wOEEzLjExLDMuMTEsMCwwLDEsMTQuNDksMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAsNC4wOCw0QTQuMDYsNC4wNiwwLDAsMCwyNC4xMiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2LDAsMCwwLS43MS0xLjEybC0xLjY4LS41Yy0uMDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzds''@;'; put 'put ''LTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43NmE3Ljg0LDcuODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjc3aC0yYTEuMTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0x''@;'; put 'put ''LjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGExLjE2LDEuMTYsMCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3LjY0LDAsMCwwLS4zMS43NGwtMS41OC40N2ExLjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3''@;'; put 'put ''YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4xNiwwLDAsMCwuMjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCwwLDAsMS4zNy4yMWwxLjQ4LS43OGMuMjMuMTEuNDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiww''@;'; put 'put ''LDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4yOWwxLjUuNzlhMS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0xLjRhMS4xNiwxLjE2LDAsMCwwLC4yMS0xLjM4bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4x''@;'; put 'put ''MVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwxLjE5bC0uMjEuMzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2LjIxLDAsMCwxLTEuMi40OWwtLjQyLjEyLS42MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwt''@;'; put 'put ''LjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwxLDE4LjE3LDI2TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4bC4xMy0uNDFhNS45NCw1Ljk0LDAsMCwxLC41My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCww''@;'; put 'put ''LDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEyQTYuMjEsNi4yMSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEsMSwxLTEsMS44OS4yMS4zOGE2LjA4LDYuMDgsMCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMxSDZWNUgyMS44N0wyMywzSDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE2LjIzbC0xLjEtMS4wOEEzLjExLDMuMTEsMCwwLDEsMTQuNDksMzFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYs''@;'; put 'put ''MS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEuMTYsMCwwLDAtLjcx''@;'; put 'put ''LTEuMTJsLTEuNjgtLjVjLS4wOS0uMjQtLjE4LS40OC0uMjktLjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGExLjE1LDEuMTUsMCww''@;'; put 'put ''LDAtMS4xMS0uNzdoLTJhMS4xNiwxLjE2LDAsMCwwLTEuMTEuODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0LDcuNjQsMCwwLDAt''@;'; put 'put ''LjMxLjc0bC0xLjU4LjQ3YTEuMTUsMS4xNSwwLDAsMC0uODMsMS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiwwLDAsMCwxLjM3LjIx''@;'; put 'put ''bDEuNDgtLjc4Yy4yMy4xMS40Ny4yLjcyLjI5TDIyLDMzLjE4YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQyLTEuNGExLjE2LDEu''@;'; put 'put ''MTYsMCwwLDAsLjIxLTEuMzhsLS43OS0xLjQ1cS4xNi0uMzQuMjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIxLDYuMjEsMCwwLDEt''@;'; put 'put ''MS4yLjQ5bC0uNDIuMTItLjYzLDIuMDlIMjMuNDJsLS42My0yLjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMuMDhsLjEzLS40MWE1''@;'; put 'put ''Ljk0LDUuOTQsMCwwLDEsLjUzLTEuMjNMMTguOSwyMWwtMS0xLjg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTItMSwxLDEtMSwxLjg5''@;'; put 'put ''LjIxLjM4YTYuMDgsNi4wOCwwLDAsMSwuNSwxLjIxbC4xMi40MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjEyLDIwLjM1YTQsNCwwLDEsMCw0LjA4LDRBNC4w''@;'; put 'put ''Niw0LjA2LDAsMCwwLDI0LjEyLDIwLjM1Wm0wLDYuNDZhMi40MywyLjQzLDAsMSwxLDIuNDgtMi40M0EyLjQ2LDIuNDYsMCwwLDEsMjQuMTIsMjYuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTQuNDksMzFINlY1SDIzLjA4YTYuOTQsNi45NCwwLDAsMSwuNi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE2LjIzbC0xLjEtMS4wOEEzLjExLDMuMTEsMCwwLDEsMTQuNDksMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuMzNWMTIuNzFhNyw3LDAsMCwxLTItMXYxLjg4QTMuMiwzLjIsMCwwLDEsMjgsMTUuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNTUsMzFINlY1SDI2djguNzhhMi4z''@;'; put 'put ''NywyLjM3LDAsMCwxLDIsMS41N1Y1YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTMzLjU0LDIzLjQ3bC0yLS42MWE3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjQxLDE3LjdhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMUE3LDcsMCwwLDAsMjYuNjksMThsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1''@;'; put 'put ''aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxbC0xLjgyLTFhLjM3LjM3LDAsMCwwLS40NC4wN2wtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyYTcsNywwLDAsMC0uNjEsMS40NGwtMiwuNjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4z''@;'; put 'put ''Ny4zNywwLDAsMCwuMjYuMzVsMiwuNjFhNyw3LDAsMCwwLC42MSwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LDMyYS4zNy4zNywwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDYsNy4wNiwwLDAsMCwxLjM5LjU3bC42MSwyYS4zNy4zNywwLDAsMCwuMzUuMjZoMmEuMzcuMzcsMCww''@;'; put 'put ''LDAsLjM1LS4yNmwuNjEtMmE3LDcsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zNy4zNywwLDAsMCwuNDQtLjA3bDEuNDUtMS40NWEuMzcuMzcsMCwwLDAsLjA3LS40NGwtMS0xLjg4YTcuMDYsNy4wNiwwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzcuMzcsMCwwLDAsLjI2LS4zNVYyMy44M0EuMzcu''@;'; put 'put ''MzcsMCwwLDAsMzMuNTQsMjMuNDdaTTI0LjcsMjguMTlBMy4zMywzLjMzLDAsMSwxLDI4LDI0Ljg2LDMuMzMsMy4zMywwLDAsMSwyNC43LDI4LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41NCwyMy40N2wt''@;'; put 'put ''Mi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCwwLDAtLjM2LS4yNWgtMmEuMzcuMzcsMCwwLDAtLjM1''@;'; put 'put ''LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1bDIs''@;'; put 'put ''LjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJhNyw3''@;'; put 'put ''LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjMuODNBLjM3LjM3LDAsMCwwLDMzLjU0LDIzLjQ3''@;'; put 'put ''Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNTUsMzFINlY1SDIx''@;'; put 'put ''Ljg3TDIzLDNINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2''@;'; put 'put ''Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41NCwy''@;'; put 'put ''My40N2wtMi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCwwLDAtLjM2LS4yNWgtMmEuMzcuMzcsMCww''@;'; put 'put ''LDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2''@;'; put 'put ''LjM1bDIsLjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYx''@;'; put 'put ''LTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjMuODNBLjM3LjM3LDAsMCwwLDMzLjU0''@;'; put 'put ''LDIzLjQ3Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZW''@;'; put 'put ''NUgyMy4wOGE2Ljk0LDYuOTQsMCwwLDEsLjYtMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNy4xNmwtMS0xQTIuMzgsMi4zOCwwLDAsMSwxNS41NSwzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTI4LDE1LjM2VjEyLjcxYTcsNywwLDAsMS0yLTF2MkEyLjM3LDIuMzcsMCwwLDEsMjgsMTUuMzZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgLz4nKSxMLkNsclNoYXBlVHdvV2F5QXJyb3dzPSgwLEUuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0yMy40MywxNi44M0ExLDEsMCwwLDAsMjIsMTguMjRMMjUuNzIsMjJINy44M2ExLDEsMCwwLDAsMCwySDI1LjcyTDIyLDI3LjdhMSwxLDAsMSwwLDEuNDIsMS40MUwyOS41MywyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI0LDE4LjQ1YTEsMSwwLDAsMCwuNzEtMS43MUwxMC4yNCwxM0gyOC4xMmExLDEsMCwwLDAsMC0ySDEwLjI0bDMuNzEtMy43M2ExLDEsMCwwLDAtMS40Mi0xLjQxTDYuNDIsMTJsNi4xMSw2LjE0QTEsMSwwLDAsMCwxMy4yNCwxOC40NVoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVTd2l0Y2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNzEsMTRIMjAuOTJWMTJINS43MUw5LjQyLDguMjdBMSwxLDAsMSwwLDgsNi44NkwxLjg5LDEzLDgsMTkuMTRhMSwxLDAs''@;'; put 'put ''MSwwLDEuNDItMS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTIiIHdpZHRoPSIzIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMjgiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy45MiwxNy44NmExLDEsMCwwLDAtMS40MiwxLjQxTDMwLjIxLDIzSDE1djJI''@;'; put 'put ''MzAuMjFMMjYuNSwyOC43NGExLDEsMCwxLDAsMS40MiwxLjRMMzQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEwIiB5PSIyMyIgd2lkdGg9IjMiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZVRvb2xzPSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yMCwxNEgxNmExLDEsMCwwLDAtMSwxdjZhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTVBMSwxLDAsMCwwLDIwLDE0Wm0tLjQsNi42SDE2LjRWMTUuNGgzLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMy43MSwxMi4zOCwyOS42Miw4LjI5QTEsMSwwLDAsMCwyOC45Miw4aC01VjYuMDVBMiwyLDAsMCwwLDIyLDRIMTMuODRBMS45MiwxLjkyLDAsMCwwLDEyLDYuMDVWOEg3LjA4YTEsMSwwLDAsMC0uNzEuMjlMMi4yOSwxMi4zOGExLDEsMCwwLDAtLjI5LjcxVjI4YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMy4wOEExLDEsMCwwLDAsMzMuNzEsMTIuMzhaTTE0LDZoOFY4SDE0Wk0zMiwxN0gyMnYxLjkzSDMyVjI4SDRWMTguOTNIMTRWMTdINFYxMy41TDcuNSwxMGgyMUwzMiwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNi40IiB5PSIxNS40IiB3aWR0aD0iMy4yIiBoZWlnaHQ9IjUuMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSwyMWExLDEsMCwwLDEtMSwxSDE2YTEsMSwwLDAs''@;'; put 'put ''MS0xLTFWMTlIMnY5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOUgyMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzEsMTIuMzgsMjkuNjIsOC4yOUExLDEsMCwwLDAsMjguOTIsOGgtNVY2LjA1''@;'; put 'put ''QTIsMiwwLDAsMCwyMiw0SDEzLjg0QTEuOTIsMS45MiwwLDAsMCwxMiw2LjA1VjhINy4wOGExLDEsMCwwLDAtLjcxLjI5TDIuMjksMTIuMzhhMSwxLDAsMCwwLS4yOS43MVYxN0gxNVYxNWExLDEsMCwwLDEsMS0xaDRhMSwxLDAsMCwxLDEsMXYySDM0VjEzLjA4QTEsMSwwLDAsMCwzMy43MSwx''@;'; put 'put ''Mi4zOFpNMjIsOEgxNFY2aDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVXaW5kb3dDbG9zZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTkuNDEsMThsNy4yOS03LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksMTAu''@;'; put 'put ''NzEsOS4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE2LjU5LDE4LDkuMjksMjUuMjlhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw3LjI5LDcuMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xyU2hh''@;'; put 'put ''cGVXaW5kb3dNYXg9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3Ljg5LDloLTIwYTIsMiwwLDAsMC0yLDJWMjVhMiwyLDAsMCwwLDIsMmgyMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwyNy44OSw5Wm0tMjAsMTZWMTFoMjBWMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlV2luZG93TWluPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNywyN0g5YTEsMSwwLDAsMSwwLTJIMjdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVXaW5kb3dSZXN0b3JlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw4SDE0YTIsMiwwLDAsMC0yLDJ2MmgyVjEwSDI4VjIwSDI2djJoMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwyOCw4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMTRIOGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNkEyLDIsMCwwLDAsMjIsMTRaTTgsMjZWMTZIMjJWMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlWm9vbUluPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNiw0QTEyLDEyLDAsMSwwLDI4LDE2LDEyLDEyLDAsMCwwLDE2LDRabTAsMjEuOTFBMTAsMTAsMCwxLDEsMjYsMTYsMTAsMTAsMCwwLDEsMTYsMjUuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS43MSwyOS42OWwtNS4xNy01LjE3QTEzLjY4LDEzLjY4LDAsMCwxLDI1LjE1LDI2bDUuMTUsNS4xNWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsMTVIMTdWMTFhMSwxLDAsMCwwLTIsMHY0SDExYTEsMSwwLDAsMCwwLDJoNHY0YTEsMSwwLDAsMCwyLDBWMTdoNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksTC5DbHJT''@;'; put 'put ''aGFwZVpvb21PdXQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LDRBMTIsMTIsMCwxLDAsMjgsMTYsMTIsMTIsMCwwLDAsMTYsNFptMCwyMS45MUExMCwxMCwwLDEsMSwyNiwxNiwxMCwxMCwwLDAsMSwxNiwyNS45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjcxLDI5LjY5bC01LjE3LTUuMTdBMTMuNjgsMTMuNjgsMCwwLDEsMjUuMTUsMjZsNS4xNSw1LjE1YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwxNUgxMmExLDEsMCwwLDAsMCwyaDhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVLZXk9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEi''@;'; put 'put ''IHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMjEgMTEuNDMpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zNSwx''@;'; put 'put ''Ni44bC42My0uNjNBNSw1LDAsMCwwLDI0LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVpNMzIsMzJI''@;'; put 'put ''MjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTMtM0wxNCwyMy4zMWEzLDMsMCwwLDEtNC4yNCwwTDQuNSwxOGEzLDMsMCwwLDEsMC00LjI0bDguNTYtOC41NmEzLDMsMCwwLDEsNC4yNCwwbDUuMjYsNS4yNmEzLDMsMCwwLDEsMCw0LjI0bC0yLDJMMzIsMjguMjhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMzMiIHk9IjEwLjcxIiB3aWR0aD0iOS43MSIgaGVpZ2h0PSIyLjU3IiByeD0iMSIgcnk9IjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1''@;'; put 'put ''KSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYzYTUsNSwwLDAsMCwuNjMtLjc3SDIyLjIzbC0uMjksMEwyMC41MiwxNi44LDMyLDI4LjI4VjMySDI4''@;'; put 'put ''Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMEwyMC4xLDguMDZsMS0xLjc5TDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5''@;'; put 'put ''LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQtLjRMMTgsMjYuNDhoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykgcm90''@;'; put 'put ''YXRlKC00NSkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zNSwxNi44bC42My0uNjNBNSw1LDAsMCwwLDI0LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwx''@;'; put 'put ''Mi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTMtM0wxNCwyMy4zMWEzLDMsMCwwLDEtNC4y''@;'; put 'put ''NCwwTDQuNSwxOGEzLDMsMCwwLDEsMC00LjI0bDguNTYtOC41NmEzLDMsMCwwLDEsNC4yNCwwbDUuMjYsNS4yNmEzLDMsMCwwLDEsMCw0LjI0bC0yLDJMMzIsMjguMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzgsMTYuNzdsLjYtLjZBNSw1LDAsMCwwLDI0''@;'; put 'put ''LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEsMCww''@;'; put 'put ''LDEtMS40MSwwbC0uNC0uNGExLDEsMCwwLDEsMC0xLjQxTDEzLDguMzZhMSwxLDAsMCwxLDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzgsMTYuNzdsLjYtLjZhNSw1LDAsMCwwLC42My0uNzdIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwz''@;'; put 'put ''LjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFM''@;'; put 'put ''MTMsOC4zNmExLDEsMCwwLDEsMS40MSwwbC40LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42QTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlh''@;'; put 'put ''NSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcsMTUuNjRhMSwxLDAsMCwxLTEuNDEsMGwtLjQtLjRhMSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEs''@;'; put 'put ''MSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIsMjguMjhaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVMaWJyYXJ5PSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0zMy40OCwyOS42MywyNi43NCwxMS44MmEyLDIsMCwwLDAtMi41OC0xLjE2TDIxLDExLjg1VjguOTJBMS45MiwxLjkyLDAsMCwwLDE5LjA4LDdIMTRWNC45MkExLjkyLDEuOTIsMCwwLDAsMTIuMDgsM0g1QTIsMiwwLDAsMCwzLDVWMzJhMSwxLDAsMCwwLDEsMUgyMGExLDEsMCwwLDAs''@;'; put 'put ''MS0xVjE5LjI3bDUsMTMuMjFhMSwxLDAsMCwwLDEuMjkuNThsNS42MS0yLjE0YTEsMSwwLDAsMCwuNTgtMS4yOVpNMTIsOC44M1YzMUg1VjVoN1pNMTksMzFIMTRWOWg1Wm04LjUxLS4yNUwyMS4xMywxMy45MmwzLjc0LTEuNDIsNi4zOSwxNi44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjc1LDNINS4yNUExLjE1LDEuMTUsMCwwLDAsNCw0VjMzSDE0VjRBMS4xNSwxLjE1LDAsMCwwLDEyLjc1LDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMzLjc3LDMxLjA5bC02Ljk0LTE4LjNhMSwxLDAsMCwwLTEuMjktLjU4TDIyLDEzLjU5VjlhMSwxLDAsMCwwLTEtMUgxNlYzM2g2VjE0LjY5TDI4LjkzLDMzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQm9sdD0o''@;'; put 'put ''MCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuNTIsMzRoLTNhMSwxLDAsMCwxLS44OC0xLjQ0TDEyLjU1LDIxSDZhMSwxLDAsMCwxLS44NS0xLjU0bDEwLjY4LTE3QTEsMSwwLDAsMSwxNi42NCwySDMwLjA3YTEsMSwwLDAsMSwuNzcsMS42OUwyMS43OCwxNGg1LjM4YTEsMSwwLDAsMSwu''@;'; put 'put ''NzMsMS42NmwtMTYuNjMsMThBMSwxLDAsMCwxLDEwLjUyLDM0Wk05LjE4LDMyaC45MUwyNC44NiwxNkgxOS41OWExLDEsMCwwLDEtLjc3LTEuNjlMMjcuODgsNEgxNy4xOUw3Ljc3LDE5SDE0LjJhMSwxLDAsMCwxLC44OCwxLjQ0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOCwyLjI5QS40OS40OSwwLDAsMCwzMC4zNSwySDE2LjQyYS41LjUsMCwwLDAtLjQyLjIzbC0xMC43MSwxN0EuNDkuNDksMCwwLDAsNS43LDIwaDcuNjdMNi42LDMzLjI1YS41Mi41MiwwLDAsMCwuNDYuNzVoM2EuNS41LDAs''@;'; put 'put ''MCwwLC4zNy0uMTZMMjgsMTQuODVhLjUuNSwwLDAsMC0uMzctLjg1SDIwLjg5TDMwLjcyLDIuODJBLjQ5LjQ5LDAsMCwwLDMwLjgsMi4yOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVdyZW5jaD0oMCxFLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNMzMuMTgsMjYuMTEsMjAuMzUsMTMuMjhBOS4yOCw5LjI4LDAsMCwwLDcuNTQsMi43OWwtMS4zNC41OSw1LjM4LDUuMzhMOC43NiwxMS41OSwzLjM4LDYuMjEsMi43OSw3LjU0QTkuMjcsOS4yNywwLDAsMCwxMy4yOCwyMC4zNUwyNi4xMSwzMy4xOGEyLDIsMCwwLDAsMi44MywwbDQu''@;'; put 'put ''MjQtNC4yNEEyLDIsMCwwLDAsMzMuMTgsMjYuMTFabS01LjY2LDUuNjZMMTMuODgsMTguMTJsLS41Ny4xNmE3LjI3LDcuMjcsMCwwLDEtOS4zMS03LDcuMiw3LjIsMCwwLDEsLjE1LTEuNDhsNC42MSw0LjYxLDUuNjYtNS42Nkw5LjgxLDQuMTVhNy4yNyw3LjI3LDAsMCwxLDguNDcsOS4xNmwt''@;'; put 'put ''LjE2LjU3TDMxLjc3LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNy4xMyIgY3k9IjI3LjA5IiByPSIxLjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMS4yMSAyNy4xMikgcm90YXRlKC00NSki''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjczLDI3LjcyLDE5LjY3LDEzLjY2YTguNzksOC43OSwwLDAsMC0xMi0xMC41TDEzLDguNTMsOC41MywxMywzLjE2LDcuNjdhOC43OSw4Ljc5LDAsMCwwLDEwLjUs''@;'; put 'put ''MTJMMjcuNzIsMzMuNzNhMS4wNywxLjA3LDAsMCwwLDEuNSwwbDQuNTEtNC41MUExLjA3LDEuMDcsMCwwLDAsMzMuNzMsMjcuNzJaTTI5LDI5YTEuMzgsMS4zOCwwLDEsMSwwLTJBMS4zOCwxLjM4LDAsMCwxLDI5LDI5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxMLkNsclNoYXBlQnVsbHNleWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJhMTUuOTIsMTUuOTIsMCwwLDAtNC4yNS41OWwuNzcsMS44NmExNC4wNywxNC4wNywwLDEsMS0xMCwxMGwtMS44Ni0uNzhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcuNDUsMTUuN2ExMC44MSwxMC44MSwwLDEsMCw4LjMtOC4yNkwxNi4zNyw5QTkuMjQsOS4yNCwwLDEsMSw5LDE2LjMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjIuMDlhNC4wOCw0LjA4LDAsMCwxLTQtMy42OGwtMS42My0uNjhjMCwuMDksMCwuMTgsMCwuMjdBNS42OSw1LjY5LDAsMSwwLDE4LDEyLjMxaC0uMjRMMTguNDMsMTRBNC4wNyw0LjA3LDAsMCwxLDE4LDIyLjA5WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC4yLDEzLjM0YS41LjUsMCwwLDAsLjM1LjE1SDEyLjJsNS4zNyw1LjM3QTEsMSwwLDAsMCwxOSwxNy40NEwxMy41MywxMlY4LjUxYS41LjUsMCwwLDAtLjE1LS4zNUw3Ljc5LDIuNTdhLjUuNSww''@;'; put 'put ''LDAsMC0uODUuMzV2NEgzYS41LjUsMCwwLDAtLjM1Ljg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTguODVhMSwxLDAsMCwxLTEuNDEsMGwtMy0zQTQsNCwwLDAsMCwxMy45MSwxOCw0LjA5LDQuMDks''@;'; put 'put ''MCwxLDAsMTgsMTMuOTFhNCw0LDAsMCwwLTIsLjU1bDMsM0ExLDEsMCwwLDEsMTksMTguODVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJhMTUuOTIsMTUuOTIsMCwwLDAtNC4yNS41OWwxLjYsMy44OUExMS44''@;'; put 'put ''OSwxMS44OSwwLDEsMSw2LjQ5LDE1LjNMMi42MSwxMy42OEExNiwxNiwwLDEsMCwxOCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDE1Ljk0QTEwLjE3LDEwLjE3LDAsMSwwLDE2LDhsMS42OSw0LjExLjMxLDBB''@;'; put 'put ''NS44OCw1Ljg4LDAsMSwxLDEyLjEyLDE4YzAtLjEyLDAtLjIzLDAtLjM1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjIsMTMuMzRhLjUuNSwwLDAsMCwuMzUuMTVIMTIuMmwyLjM1LDIuMzVBNC4wOSw0LjA5LDAs''@;'; put 'put ''MCwxLDE2LDE0LjQ2TDEzLjUzLDEyVjguNTFhLjUuNSwwLDAsMC0uMTUtLjM1TDcuNzksMi41N2EuNS41LDAsMCwwLS44NS4zNXY0SDNhLjUuNSwwLDAsMC0uMzUuODVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLEwuQ2xyU2hhcGVUYXJnZXQ9KDAsRS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE4LDcuMkExMC44LDEwLjgsMCwxLDAsMjguOCwxOCwxMC44MSwxMC44MSwwLDAsMCwxOCw3LjJabTAsMjBBOS4yLDkuMiwwLDEsMSwyNy4yLDE4LDkuMjEsOS4yMSwwLDAsMSwxOCwyNy4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTIuMzFBNS42OSw1LjY5LDAsMSwwLDIzLjY5LDE4LDUuNjksNS42OSwwLDAsMCwxOCwxMi4zMVptMCw5Ljc3QTQuMDksNC4wOSwwLDEsMSwyMi4wOSwxOCw0LjA5LDQuMDksMCwwLDEsMTgsMjIuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjQuMDkiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNy44M0ExMC4xNywxMC4xNywwLDEsMCwyOC4x''@;'; put 'put ''NywxOCwxMC4xOCwxMC4xOCwwLDAsMCwxOCw3LjgzWm0wLDE2QTUuODgsNS44OCwwLDEsMSwyMy44OCwxOCw1Ljg4LDUuODgsMCwwLDEsMTgsMjMuODhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYs''@;'; put 'put ''MCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwyNy44M0ExMS44MywxMS44MywwLDEsMSwyOS44MywxOCwxMS44NSwxMS44NSwwLDAsMSwxOCwyOS44M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZUZsYW1lPSgwLEUuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0zMS4zLDE2LjY2Yy0xLjE5LTIuMDktNy45NC0xNC4xNS03Ljk0LTE0LjE1YTEsMSwwLDAsMC0xLjc1LDBsLTYsMTAuNjQtMy01LjI4YTEsMSwwLDAsMC0xLjc1LDBTNS40LDE3Ljc4LDQuNDIsMTkuNUE5LjMsOS4zLDAsMCwwLDMsMjQuNjFDMywyOS43Miw1Ljg2''@;'; put 'put ''LDM0LDExLjY3LDM0SDIyLjQ4QzI4LjI4LDM0LDMzLDI5LDMzLDIyLjc4QTExLjEzLDExLjEzLDAsMCwwLDMxLjMsMTYuNjZaTTIyLjQ4LDMySDExLjc3QzguMTMsMzIsNSwyOC42Niw1LDI0LjYxYTcuNDMsNy40MywwLDAsMSwxLjE2LTQuMTNjLjczLTEuMjksNC4wNS03LjIxLDUuNjUtMTAu''@;'; put 'put ''MDdsMyw1LjI4YTEsMSwwLDAsMCwuODcuNTFoMGExLDEsMCwwLDAsLjg3LS41MUwyMi40OSw1YzEuODYsMy4zMyw2LjE1LDExLDcuMDcsMTIuNkE5LjI0LDkuMjQsMCwwLDEsMzEsMjIuNzhDMzEsMjcuODcsMjcuMTgsMzIsMjIuNDgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS43NSwyMS43M2MtLjY1LTEuMTYtNC4zOC03LjgxLTQuMzgtNy44MWEuOC44LDAsMCwwLTEuNCwwbC00LjIsNy40OC0xLjU5LTIuNDlhLjguOCwwLDAsMC0xLjM1LDBMOS4zNywyNC4zNWE0LjM1LDQuMzUsMCwwLDAt''@;'; put 'put ''LjgyLDIuNiw0LjQ5LDQuNDksMCwwLDAsLjUsMkgxMWEzLDMsMCwwLDEtLjgzLTIsMi43OCwyLjc4LDAsMCwxLC41Ni0xLjczbDIuOC00LjM4LDEuNjYsMi42YS44LjgsMCwwLDAsMS40MS0uMTIsNy44Miw3LjgyLDAsMCwxLC40LS44TDIwLjY3LDE2bDMuNjksNi41N2E0LjgzLDQuODMsMCww''@;'; put 'put ''LDEsLjc3LDIuNzFBNSw1LDAsMCwxLDIzLjQ2LDI5aDIuMTNhNi42OCw2LjY4LDAsMCwwLDEuMTQtMy43NCw2LjQ1LDYuNDUsMCwwLDAtMS0zLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zLDE2LjMy''@;'; put 'put ''Yy0xLjE5LTIuMDktNy45NC0xNC4xNS03Ljk0LTE0LjE1YTEsMSwwLDAsMC0xLjc1LDBsLTYsMTAuNjQtMy01LjI4YTEsMSwwLDAsMC0xLjc1LDBTNS40LDE3LjQzLDQuNDIsMTkuMTVBOS4zLDkuMywwLDAsMCwzLDI0LjI2YzAsNS4xMSwzLjg4LDkuNjUsOC42Nyw5Ljc0SDIyLjQ4QzI4LjI4''@;'; put 'put ''LDM0LDMzLDI4LjYyLDMzLDIyLjQ0QTExLjEzLDExLjEzLDAsMCwwLDMxLjMsMTYuMzJaTTIxLjQ4LDMySDE0LjU0QTQuNjgsNC42OCwwLDAsMSwxMCwyNy40MWEzLjkxLDMuOTEsMCwwLDEsLjc1LTIuMzRsMy4zNS01LjIxYS41LjUsMCwwLDEsLjg0LDBsMS43OCwyLjc3LDAtLjA4Yy42My0x''@;'; put 'put ''LjExLDQuMjMtNy40OCw0LjIzLTcuNDhhLjUuNSwwLDAsMSwuODcsMHMzLjYsNi4zOCw0LjIzLDcuNDhBNS44Myw1LjgzLDAsMCwxLDI3LDI1Ljc2QzI3LDMyLDIyLjEsMzIsMjEuNDgsMzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVI''@;'; put 'put ''b3VyZ2xhc3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDI2VjI0LjkxYTYuNjcsNi42NywwLDAsMC0yLjY5LTUuMzNsLTEuMjgtMUE2LjM2LDYuMzYsMCwwLDAsMjEsMThoMGE2LjI5LDYuMjksMCwwLDAsMS0uNjJsMS4yOC0xQTYuNjcsNi42NywwLDAsMCwyNiwxMS4wOVY0''@;'; put 'put ''aDNhMSwxLDAsMCwwLDAtMkg3QTEsMSwwLDAsMCw3LDRoM3Y3LjA5YTYuNjcsNi42NywwLDAsMCwyLjY5LDUuMzNsMS4yOCwxQTYuMzYsNi4zNiwwLDAsMCwxNSwxOGgwYTYuMjcsNi4yNywwLDAsMC0xLC42MmwtMS4yOCwxQTYuNjcsNi42NywwLDAsMCwxMCwyNC45MVYzMkg3YTEsMSwwLDAs''@;'; put 'put ''MCwwLDJIMjlhMSwxLDAsMCwwLDAtMlpNMTIsMjQuOTFhNC42Niw0LjY2LDAsMCwxLDEuODgtMy43MmwxLjI4LTFhNC42Niw0LjY2LDAsMCwxLDEuMTgtLjYzLDEsMSwwLDAsMCwuNjUtLjk0VjE3LjMzYTEsMSwwLDAsMC0uNjUtLjk0LDQuNjcsNC42NywwLDAsMS0xLjE5LS42M2wtMS4yOC0x''@;'; put 'put ''QTQuNjYsNC42NiwwLDAsMSwxMiwxMS4wOVY0SDI0djcuMDlhNC42Niw0LjY2LDAsMCwxLTEuODgsMy43MmwtMS4yOCwxaDBhNC42Niw0LjY2LDAsMCwxLTEuMTguNjMsMSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0LjY3LDAsMCwxLDEuMTkuNjNsMS4yOCwx''@;'; put 'put ''QTQuNjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDMySDI2VjI0LjkxYTYuNjcsNi42NywwLDAsMC0yLjY5LTUuMzNsLTEuMjgtMUE2LjM2LDYuMzYsMCww''@;'; put 'put ''LDAsMjEsMThoMGE2LjI5LDYuMjksMCwwLDAsMS0uNjJsMS4yOC0xYTYuNjQsNi42NCwwLDAsMCwxLjA5LTFIMjIuMjNhMy42NCwzLjY0LDAsMCwxLS43OC0uMDlsLS42Mi40NmgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAsMC0uNjUuOTR2MS4zNGExLDEsMCwwLDAsLjY1Ljk0''@;'; put 'put ''LDQuNjcsNC42NywwLDAsMSwxLjE5LjYzbDEuMjgsMUE0LjY2LDQuNjYsMCwwLDEsMjQsMjQuOTFWMzJIMTJWMjQuOTFhNC42Niw0LjY2LDAsMCwxLDEuODgtMy43MmwxLjI4LTFhNC42Niw0LjY2LDAsMCwxLDEuMTgtLjYzLDEsMSwwLDAsMCwuNjUtLjk0VjE3LjMzYTEsMSwwLDAsMC0uNjUt''@;'; put 'put ''Ljk0LDQuNjcsNC42NywwLDAsMS0xLjE5LS42M2wtMS4yOC0xQTQuNjYsNC42NiwwLDAsMSwxMiwxMS4wOVY0SDIyLjQ1TDIzLjYsMkg3QTEsMSwwLDAsMCw3LDRoM3Y3LjA5YTYuNjcsNi42NywwLDAsMCwyLjY5LDUuMzNsMS4yOCwxQTYuMzYsNi4zNiwwLDAsMCwxNSwxOGgwYTYuMjcsNi4y''@;'; put 'put ''NywwLDAsMC0xLC42MmwtMS4yOCwxQTYuNjcsNi42NywwLDAsMCwxMCwyNC45MVYzMkg3YTEsMSwwLDAsMCwwLDJIMjlhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDMySDI2VjI0LjkxYTYuNjcsNi42NywwLDAsMC0yLjY5LTUuMzNsLTEuMjgtMUE2LjM2LDYuMzYsMCwwLDAsMjEsMThoMGE2LjI5LDYuMjksMCwwLDAsMS0uNjJsMS4yOC0xYTYuNjgs''@;'; put 'put ''Ni42OCwwLDAsMCwyLjU3LTQuMTZBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5di42MWE0LjY2LDQuNjYsMCwwLDEtMS44OCwzLjcybC0xLjI4LDFoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRhMSwxLDAsMCwwLC42NS45NCw0LjY3LDQuNjcsMCwwLDEs''@;'; put 'put ''MS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyVjI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCww''@;'; put 'put ''LDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEsMTIsMTEuMDlWNEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg5LTJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcs''@;'; put 'put ''MCwwLDAtMSwuNjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0aDIyYTEsMSwwLDAsMCwwLTJoLTIyYTEsMSwwLDEsMCwwLDJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjY3LDMyaC0yMmExLDEsMCwwLDAsMCwyaDIyYTEsMSwwLDEsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIyLjU1LDE1LjY3QTYuMDcsNi4wNywwLDAsMCwyNSwxMS4xMlY2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwxMS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNmExMS40OCwxMS40OCwwLDAsMC0yLjkxLDEuNzIsNi4wNyw2LjA3LDAsMCwwLTIu''@;'; put 'put ''NDUsNC41NXY1LjEySDI1VjI0LjgyYTYuMDcsNi4wNywwLDAsMC0yLjQ1LTQuNTUsMTEuNDgsMTEuNDgsMCwwLDAtMi45MS0xLjcyVjE3LjM5QTExLjQ4LDExLjQ4LDAsMCwwLDIyLjU1LDE1LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjY3LDRIMjIuNDVMMjMuNiwySDYu''@;'; put 'put ''NjdhMSwxLDAsMSwwLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTEsMjAuMjdhNi4wNyw2LjA3LDAsMCwwLTIuNDUsNC41NXY1LjEySDI1VjI0LjgyYTYuMDcsNi4wNyww''@;'; put 'put ''LDAsMC0yLjQ1LTQuNTUsMTEuNDgsMTEuNDgsMCwwLDAtMi45MS0xLjcyVjE3LjM5YTExLjQ4LDExLjQ4LDAsMCwwLDIuOTEtMS43MmwuMy0uMjdoLS42MkEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwx''@;'; put 'put ''MS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNkExMS40OCwxMS40OCwwLDAsMCwxMi41MSwyMC4yN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0SDIyLjc4YTcu''@;'; put 'put ''NDUsNy40NSwwLDAsMSwuODktMmgtMTdhMSwxLDAsMSwwLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjU1LDIwLjI3YTExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4z''@;'; put 'put ''OWExMS40OCwxMS40OCwwLDAsMCwyLjkxLTEuNzJBNi4yNSw2LjI1LDAsMCwwLDI1LDExLjU1LDcuNDcsNy40NywwLDAsMSwyMi41LDZIMTAuMDZ2NS4xMmE2LjA3LDYuMDcsMCwwLDAsMi40NSw0LjU1LDExLjQ4LDExLjQ4LDAsMCwwLDIuOTEsMS43MnYxLjE2YTExLjQ4LDExLjQ4LDAsMCww''@;'; put 'put ''LTIuOTEsMS43Miw2LjA3LDYuMDcsMCwwLDAtMi40NSw0LjU1djUuMTJIMjVWMjQuODJBNi4wNyw2LjA3LDAsMCwwLDIyLjU1LDIwLjI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlTm9BY2Nlc3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYs''@;'; put 'put ''MCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjE1LDE1SDguODVBMS44NSwxLjg1LDAsMCwwLDcsMTYuODV2Mi4y''@;'; put 'put ''OUExLjg1LDEuODUsMCwwLDAsOC44NSwyMUgyNy4xNUExLjg1LDEuODUsMCwwLDAsMjksMTkuMTVWMTYuODVBMS44NSwxLjg1LDAsMCwwLDI3LjE1LDE1Wm0uMjUsNC4xNWEuMjUuMjUsMCwwLDEtLjI1LjI1SDguODVhLjI1LjI1LDAsMCwxLS4yNS0uMjVWMTYuODVhLjI1LjI1LDAsMCwxLC4y''@;'; put 'put ''NS0uMjVIMjcuMTVhLjI1LjI1LDAsMCwxLC4yNS4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjkuMTUsMjBINi44NUEuODUuODUs''@;'; put 'put ''MCwwLDEsNiwxOS4xNVYxNi44NUEuODUuODUsMCwwLDEsNi44NSwxNkgyOS4xNWEuODUuODUsMCwwLDEsLjg1Ljg1djIuMjlBLjg1Ljg1LDAsMCwxLDI5LjE1LDIwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlT3JnYW5pemF0aW9uPSgw''@;'; put 'put ''LEUuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iOS44IDE4LjggMjYuMiAxOC44IDI2LjIgMjEuODggMjcuOCAyMS44OCAyNy44IDE3LjIgMTguOCAxNy4yIDE4LjggMTQgMTcuMiAxNCAxNy4yIDE3LjIgOC4yIDE3LjIgOC4yIDIxLjg4IDkuOCAyMS44OCA5LjggMTguOCIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQsMjNINGEyLDIsMCwwLDAtMiwydjZhMiwyLDAsMCwwLDIsMkgxNGEyLDIsMCwwLDAsMi0yVjI1QTIsMiwwLDAsMCwxNCwyM1pNNCwzMVYyNUgxNHY2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMjNIMjJhMiwyLDAsMCwwLTIsMnY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNUEyLDIsMCwwLDAsMzIsMjNaTTIyLDMxVjI1SDMydjZaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMywxM0gyM2EyLDIsMCwwLDAsMi0yVjVhMiwyLDAsMCwwLTItMkgxM2EyLDIsMCwwLDAtMiwydjZBMiwyLDAsMCwwLDEzLDEzWm0wLThIMjN2NkgxM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI5LjggMTguOCAyNi4yIDE4LjggMjYuMiAyMS44OCAyNy44IDIxLjg4IDI3LjggMTcuMiAxOC44IDE3LjIgMTguOCAxNCAxNy4yIDE0IDE3LjIgMTcuMiA4LjIgMTcuMiA4LjIgMjEuODggOS44IDIx''@;'; put 'put ''Ljg4IDkuOCAxOC44IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMiIgeT0iMjMiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIzIiB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIzIiB3aWR0aD0iMTQiIGhlaWdodD0i''@;'; put 'put ''MTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlQmFsYW5jZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQsMzNIMTJhMSwxLDAsMCwxLDAtMkgyNGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iOSIgd2lkdGg9IjIiIGhlaWdodD0iMjIuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsN0g4QTEs''@;'; put 'put ''MSwwLDAsMSw4LDVIMjhhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjkzLDI0Ljc5YTcuMjMsNy4yMywwLDAsMS01LjgxLTIuODlsLS42LS44LDEuNTktMS4yMS42LjhhNS4yOCw1''@;'; put 'put ''LjI4LDAsMCwwLDguNDIsMGwuNi0uOCwxLjU5LDEuMjEtLjYuOEE3LjIzLDcuMjMsMCwwLDEsMjYuOTMsMjQuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC41MSwxOS4yNWEuOC44LDAsMCwxLS43My0u''@;'; put 'put ''NDhMMjYuOTMsMTIuMmwtMi44NSw2LjU3YS44LjgsMCwwLDEtMS40Ny0uNjRMMjYuMiw5Ljg3YS44My44MywwLDAsMSwxLjQ3LDBsMy41OCw4LjI2YS44LjgsMCwwLDEtLjczLDEuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik05LjY4LDI0Ljc5QTcuMjMsNy4yMywwLDAsMSwzLjg4LDIxLjlsLS42LS44TDQuODYsMTkuOWwuNi44YTUuMjgsNS4yOCwwLDAsMCw4LjQyLDBsLjYtLjgsMS41OSwxLjIxLS42LjhBNy4yMyw3LjIzLDAsMCwxLDkuNjgsMjQuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy4yNiwxOS4yNWEuOC44LDAsMCwxLS43My0uNDhMOS42OCwxMi4yLDYuODQsMTguNzdhLjguOCwwLDAsMS0xLjQ3LS42NEw4Ljk1LDkuODdhLjgzLjgzLDAsMCwxLDEuNDcsMEwxNCwxOC4xM2EuOC44LDAs''@;'; put 'put ''MCwxLS43MywxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+JyksTC5DbHJTaGFwZUlkQmFkZ2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDIyYTQuMjMsNC4yMywwLDEsMC00LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0w''@;'; put 'put ''LTYuODZhMi42MywyLjYzLDAsMSwxLTIuNjMsMi42M0EyLjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0YTIsMiwwLDAsMC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3''@;'; put 'put ''aDhaTTIwLDlIMTZWNGg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzBWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYs''@;'; put 'put ''MjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMGgxLjZWMjcuODdBOC4zMyw4LjMzLDAsMCwxLDE4LDI1LjI5YTguMzMsOC4zMywwLDAsMSw2LjQsMi41OVYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4''@;'; put 'put ''LDZIMjRWOGg0VjMySDhWOGg0VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwyOCw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjJh''@;'; put 'put ''NC4yMyw0LjIzLDAsMSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5Ljks''@;'; put 'put ''OS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5LDE5LjU2LDlIMTZWNGg0VjguMjRsMi0zLjQ2''@;'; put 'put ''VjRhMiwyLDAsMCwwLTItMkgxNmEyLDIsMCwwLDAtMiwydjdoNC42NEEzLjY2LDMuNjYsMCwwLDEsMTksOS44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzJI''@;'; put 'put ''OFY4aDRWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIx''@;'; put 'put ''LjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAsMCwxOCwyMlptMC02Ljg2YTIuNjMsMi42MywwLDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDRhMiwyLDAsMCwwLTItMkgxNmEyLDIsMCwwLDAtMiwydjdoOFpNMjAsOUgxNlY0aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMGgxLjZWMjcuODdBOC4zMyw4LjMzLDAsMCwxLDE4LDI1LjI5YTguMzMsOC4zMywwLDAsMSw2LjQsMi41OVYzMEgyNlYyNy43YTEuMTIsMS4xMiww''@;'; put 'put ''LDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMkg4VjhoNFY2''@;'; put 'put ''SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjgsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3Ljc3IiByPSI0LjIzIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDRhMiwyLDAsMCwwLTItMkgxN2EyLDIsMCwwLDAtMiwydjZoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4x''@;'; put 'put ''MywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjgsNkgyM1Y4aDVWMzJIOFY4aDVWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDI4LDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDku''@;'; put 'put ''ODksMjEsNi41VjRhMiwyLDAsMCwwLTItMkgxN2EyLDIsMCwwLDAtMiwydjZoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3Ljc3IiByPSI0LjIzIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5''@;'; put 'put ''LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzJIOFY4aDVWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEy''@;'; put 'put ''LDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3Ljc3''@;'; put 'put ''IiByPSI0LjIzIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSw0YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJWMzJIOFY4aDVWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlUmVwZWF0PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNiwxNC4xNUEzLjE3LDMuMTcsMCwwLDEsOS4xNywxMUgyOC40bC00LjI4LDQuNTRhMSwx''@;'; put 'put ''LDAsMSwwLDEuNDYsMS4zN0wzMi4wOSwxMCwyNS41OCwzLjA5YTEsMSwwLDEsMC0xLjQ2LDEuMzdMMjguNCw5SDkuMTdBNS4xNyw1LjE3LDAsMCwwLDQsMTQuMTV2Ni4xbDItMi4xMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiBkPSJNMzAsMjEuODVBMy4xNywzLjE3LDAsMCwxLDI2LjgzLDI1SDcuNmw0LjI4LTQuNTRhMSwxLDAsMSwwLTEuNDYtMS4zN0wzLjkxLDI2bDYuNTEsNi45MWExLDEsMCwxLDAsMS40Ni0xLjM3TDcuNiwyN0gyNi44M0E1LjE3LDUuMTcsMCwwLDAsMzIsMjEuODV2LTYuMWwtMiwyLjEy''@;'; put 'put ''WiIvPicpLEwuQ2xyU2hhcGVGaWxlR3JvdXA9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzNEgxM2ExLDEsMCwwLDEtMS0xVjExYTEsMSwwLDAsMSwxLTFIMzFhMSwxLDAsMCwxLDEsMVYzM0ExLDEsMCww''@;'; put 'put ''LDEsMzEsMzRaTTE0LDMySDMwVjEySDE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIxNiIgeT0iMjAiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTYiIHk9IjI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik02LDI0VjRIMjRWM2ExLDEsMCwwLDAtMS0xSDVBMSwxLDAsMCwwLDQsM1YyNWExLDEsMCwwLDAsMSwxSDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTEwLDI4VjhIMjhWN2ExLDEsMCwwLDAtMS0xSDlBMSwxLDAsMCwwLDgsN1YyOWExLDEsMCwwLDAsMSwxaDFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzEsMTBI''@;'; put 'put ''MTNhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwxLTFWMTFBMSwxLDAsMCwwLDMxLDEwWk0yOCwyNkgxNlYyNEgyOFptMC00SDE2VjIwSDI4Wm0wLTRIMTZWMTZIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiBkPSJNNiwyNFY0SDI0VjNhMSwxLDAsMCwwLTEtMUg1QTEsMSwwLDAsMCw0LDNWMjVhMSwxLDAsMCwwLDEsMUg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTEwLDI4VjhIMjhWN2ExLDEsMCwwLDAt''@;'; put 'put ''MS0xSDlBMSwxLDAsMCwwLDgsN1YyOWExLDEsMCwwLDAsMSwxaDFaIi8+JyksTC5DbHJTaGFwZVBhcGVyY2xpcD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguNDIsMzIuNkE2LjMsNi4zLDAsMCwxLDQsMzAu''@;'; put 'put ''NzlsLS4xMy0uMTNBNi4yLDYuMiwwLDAsMSwyLDI2LjIyLDYuNzcsNi43NywwLDAsMSw0LDIxLjRMMTkuNSw2LjA3YTguNjcsOC42NywwLDAsMSwxMi4xNS0uMzVBOCw4LDAsMCwxLDM0LDExLjQ0YTksOSwwLDAsMS0yLjcsNi4zNkwxNy4zNywzMS42QTEsMSwwLDEsMSwxNiwzMC4xOEwyOS44''@;'; put 'put ''OSwxNi4zOEE3LDcsMCwwLDAsMzIsMTEuNDRhNiw2LDAsMCwwLTEuNzYtNC4zLDYuNjcsNi42NywwLDAsMC05LjM0LjM1TDUuNDUsMjIuODJBNC43OCw0Ljc4LDAsMCwwLDQsMjYuMjJhNC4yMSw0LjIxLDAsMCwwLDEuMjQsM2wuMTMuMTNhNC42NCw0LjY0LDAsMCwwLDYuNS0uMjFMMjUuMjIs''@;'; put 'put ''MTUuOTRBMi43LDIuNywwLDAsMCwyNiwxNGEyLjM1LDIuMzUsMCwwLDAtLjY5LTEuNjgsMi42MSwyLjYxLDAsMCwwLTMuNjYuMTNsLTkuMiw5LjEyYTEsMSwwLDEsMS0xLjQxLTEuNDJMMjAuMjgsMTFhNC42Miw0LjYyLDAsMCwxLDYuNDgtLjEzQTQuMzMsNC4zMywwLDAsMSwyOCwxNGE0LjY4''@;'; put 'put ''LDQuNjgsMCwwLDEtMS40MSwzLjM0TDEzLjI4LDMwLjU4QTYuOTEsNi45MSwwLDAsMSw4LjQyLDMyLjZaIi8+JyksTC5DbHJTaGFwZVNocmluaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDE1SDIyLjQx''@;'; put 'put ''bDkuMjUtOS4yNWExLDEsMCwwLDAtMS40MS0xLjQxTDIxLDEzLjU5VjRhMSwxLDAsMCwwLTIsMFYxN0gzMmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik00LDE5YTEsMSwwLDAsMCwwLDJo''@;'; put 'put ''OS41OUw0LjMzLDMwLjI1YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTUsMjIuNDFWMzJhMSwxLDAsMCwwLDIsMFYxOVoiLz4nKSxMLkNsclNoYXBlQWNjZXNzaWJpbGl0eTE9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjQ0LDMxLjk0YTcuMzEsNy4zMSwwLDAsMS01LjctMTEuODhMNy4z''@;'; put 'put ''MiwxOC42NGE5LjMsOS4zLDAsMCwwLDEzLjEsMTMuMTFMMTksMzAuMzNBNy4yOSw3LjI5LDAsMCwxLDE0LjQ0LDMxLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUuMzYsMS42N2E0LjEyLDQuMTIsMCwx''@;'; put 'put ''LDAsNC4xMSw0LjExQTQuMTIsNC4xMiwwLDAsMCwyNS4zNiwxLjY3Wm0wLDYuMjNhMi4xMiwyLjEyLDAsMSwxLDIuMTEtMi4xMkEyLjEyLDIuMTIsMCwwLDEsMjUuMzYsNy45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuNTYsMTguMThoLTVhMSwxLDAsMCwwLS4yNC4wNWwzLjA5LTMuNTVhMi44MywyLjgzLDAsMCwwLS42OS00LjMzbC04LTQuNmExLDEsMCwwLDAtMS4xMi4wOEw5LjgzLDkuNThBMSwxLDAsMCwwLDkuNjYsMTFhMSwxLDAsMCwwLC43OS4zOCwxLDEsMCwwLDAsLjYxLS4yMWw0LjI3''@;'; put 'put ''LTMuMzQsMy4xMSwxLjc3LTUuMDgsNS43OGgwYTkuMjgsOS4yOCwwLDAsMC00LjUzLDEuODNsMS40MywxLjQzQTcuMyw3LjMsMCwwLDEsMjAuNDIsMjguODFsMS40MiwxLjQzYTkuMjcsOS4yNywwLDAsMCwuNzctMTAuMDZoMi44MmwtLjc3LDYuNTFhMSwxLDAsMCwwLC44OCwxLjExaC4xMmEx''@;'; put 'put ''LDEsMCwwLDAsMS0uODhsLjktNy42MmExLDEsMCwwLDAtLjI1LS43OEExLDEsMCwwLDAsMjYuNTYsMTguMThabS02LjM3LTcuNTYsMi41MiwxLjQ2YS43OS43OSwwLDAsMSwuNC41OS44MS44MSwwLDAsMS0uMi42OUwxOS43NSwxN0E5LjE3LDkuMTcsMCwwLDAsMTYsMTUuNDVaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43NywzMS45NGE3LjMxLDcuMzEsMCwwLDEtNS43LTExLjg4TDcuNjUsMTguNjRhOS4zLDkuMywwLDAsMCwxMy4xLDEzLjExbC0xLjQyLTEuNDJBNy4yOSw3LjI5LDAsMCwxLDE0''@;'; put 'put ''Ljc3LDMxLjk0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi42NSwyLjFhMy4xMiwzLjEyLDAsMSwwLDMuMTEsMy4xMkEzLjEyLDMuMTIsMCwwLDAsMjYuNjUsMi4xWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44MSwxOC4xOEgyMS40N3EtLjMxLS4zMy0uNjYtLjYzbDQuMzgtNC44NmEyLjE0LDIuMTQsMCwwLDAtLjUzLTMuMjdMMjAuOSw3LjIzbDAsMEwxNy4wNSw1LjA3YTEsMSwwLDAsMC0xLjExLjA4TDExLjE1LDguOWEx''@;'; put 'put ''LDEsMCwwLDAsMS4yMywxLjU4bDQuMjctMy4zNCwyLjg3LDEuNjNMMTMuNiwxNS4zOWE5LjMzLDkuMzMsMCwwLDAtNC40NCwxLjgybDEuNDIsMS40M0E3LjMsNy4zLDAsMCwxLDIwLjc1LDI4LjgxbDEuNDMsMS40M0E5LjI3LDkuMjcsMCwwLDAsMjMsMjAuMThoMi43NGwtLjc3LDYuNTFhMSwx''@;'; put 'put ''LDAsMCwwLC44NywxLjExaC4xMmExLDEsMCwwLDAsMS0uODhsLjktNy42MmExLDEsMCwwLDAtLjI1LS43OEExLDEsMCwwLDAsMjYuODEsMTguMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Mj0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzAuMDYsMTFoLTI0YTEsMSwwLDEsMCwwLDJIMTR2OS42NXMwLDAsMCwwbC0zLjc1LDEwYTEsMSwwLDAsMCwuNTgsMS4yOSwxLjEzLDEuMTMsMCwwLDAsLjM2LjA2LDEsMSwwLDAsMCwuOTMtLjY1TDE1LjYyLDI0aDQuNzZsMy41Miw5LjM1YTEsMSwwLDAsMCwu''@;'; put 'put ''OTMuNjUsMS4xMywxLjEzLDAsMCwwLC4zNi0uMDYsMSwxLDAsMCwwLC41OC0xLjI5TDIyLDIyLjY4czAsMCwwLDBWMTNoOC4wNmExLDEsMCwxLDAsMC0yWk0yMCwyMkgxNlYxM2g0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTgsMTBhNCw0LDAsMSwwLTQtNEE0LDQsMCwwLDAsMTgsMTBabTAtNmEyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxOCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy45NiIgY3k9IjUi''@;'; put 'put ''IHI9IjMiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTBINmExLDEsMCwwLDAsMCwyaDh2OC4zNnMwLDAsMCwwTDEwLjExLDMzLjE3YTEsMSwwLDAsMCwuNjYsMS4yNSwxLjU1LDEuNTUsMCwwLDAsLjI5LDAsMSwx''@;'; put 'put ''LDAsMCwwLDEtLjcxbDMuMjktMTAuODRoNS4zOEwyNCwzMy43NWExLDEsMCwwLDAsMSwuNzEsMS41NSwxLjU1LDAsMCwwLC4yOSwwLDEsMSwwLDAsMCwuNjYtMS4yNUwyMiwyMC40czAsMCwwLDBWMTJoOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMiIgLz4nKSxMLkNsclNoYXBlU29ydEJ5PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC41NCwxM0g3LjQ2YTEsMSwwLDAsMSwwLTJIMjguNTRhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIxLjE3LDE5SDcuNDZhMSwxLDAsMCwxLDAtMkgyMS4xN2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNzQsMjVINy40NmExLDEsMCwwLDEsMC0yaDYuMjhhMSwx''@;'; put 'put ''LDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVDb2xsYXBzZUNhcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDIxSDNhMSwxLDAsMCwwLTEsMXY2YTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEt''@;'; put 'put ''MVYyMkExLDEsMCwwLDAsMzMsMjFabS0xLDZINFYyM0gzMloiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIwLjIybDUuNjUtNS42NWEuODEuODEsMCwwLDAsMC0xLjE0LjguOCwwLDAsMC0xLjEzLDBMMTgs''@;'; put 'put ''MThsLTQuNTItNC41MmEuOC44LDAsMCwwLTEuMTMsMCwuODEuODEsMCwwLDAsMCwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuMjJsNS42NS01LjY1YS44MS44MSwwLDAsMCwwLTEuMTQuOC44''@;'; put 'put ''LDAsMCwwLTEuMTMsMEwxOCwxMiwxMy40OCw3LjQzYS44LjgsMCwwLDAtMS4xMywwLC44MS44MSwwLDAsMCwwLDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIyIiB3aWR0aD0iMzIiIGhlaWdo''@;'; put 'put ''dD0iOCIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIwLjdsLTUuNzktNS43OWExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBMMTgsMTcuODdsNC4zOC00LjM3YTEsMSwwLDAs''@;'; put 'put ''MSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuNSwxMi4yMSw4LjcxYTEsMSwwLDAsMSwwLTEuNDIsMSwxLDAsMCwxLDEuNDEsMEwxOCwxMS42N2w0LjM4LTQuMzhh''@;'; put 'put ''MSwxLDAsMCwxLDEuNDEsMCwxLDEsMCwwLDEsMCwxLjQyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlRXhwYW5kQ2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsNkgzQTEsMSwwLDAsMCwyLDdWMjlhMSwxLDAsMCwwLDEs''@;'; put 'put ''MUgzM2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDMzLDZaTTMyLDI4SDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNDgsMTUuODYsMTgsMTEuMzRsNC41Miw0LjUyYS43Ny43NywwLDAsMCwu''@;'; put 'put ''NTYuMjQuODEuODEsMCwwLDAsLjU3LTEuMzdMMTgsOS4wOGwtNS42NSw1LjY1YS44LjgsMCwxLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy40OCwyMS44NiwxOCwxNy4zNGw0LjUyLDQu''@;'; put 'put ''NTJhLjc3Ljc3LDAsMCwwLC41Ni4yNC44MS44MSwwLDAsMCwuNTctMS4zN0wxOCwxNS4wOGwtNS42NSw1LjY1YS44LjgsMCwxLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw2SDNBMSwx''@;'; put 'put ''LDAsMCwwLDIsN1YyOWExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWN0ExLDEsMCwwLDAsMzMsNlpNMjMuNzksMjEuNDFhMSwxLDAsMCwxLTEuNDEsMEwxOCwxN2wtNC4zOCw0LjM4YTEsMSwwLDAsMS0xLjQxLDAsMSwxLDAsMCwxLDAtMS40MkwxOCwxNC4yLDIzLjc5LDIwQTEsMSww''@;'; put 'put ''LDAsMSwyMy43OSwyMS40MVptMC02LjJhMSwxLDAsMCwxLTEuNDEsMEwxOCwxMC44M2wtNC4zOCw0LjM4YTEsMSwwLDAsMS0xLjQxLDAsMSwxLDAsMCwxLDAtMS40MkwxOCw4bDUuNzksNS43OUExLDEsMCwwLDEsMjMuNzksMTUuMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVCcmllZmNhc2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDI4YTAsMCwwLDAsMSwwLDBINFYyMS4zMmE3LjEsNy4xLDAsMCwxLTItMS40M1YyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuODlhNi43NCw2Ljc0LDAsMCwx''@;'; put 'put ''LTIsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI1LDIyLjRhMSwxLDAsMCwwLDEtMVYxNS45NEgyNFYxOEgxNHYySDI0djEuNEExLDEsMCwwLDAsMjUsMjIuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTMzLDZIMjRWNC4zOEEyLjQyLDIuNDIsMCwwLDAsMjEuNTUsMmgtNy4xQTIuNDIsMi40MiwwLDAsMCwxMiw0LjM4VjZIM0ExLDEsMCwwLDAsMiw3djhhNSw1LDAsMCwwLDUsNWgzdjEuNGExLDEsMCwwLDAsMiwwVjE1Ljk0SDEwVjE4SDdhMywzLDAs''@;'; put 'put ''MCwxLTMtM1Y4SDMydjdhMywzLDAsMCwxLTMsM0gyOHYyaDFhNSw1LDAsMCwwLDUtNVY3QTEsMSwwLDAsMCwzMyw2Wk0yMiw2SDE0VjQuNDNBLjQ1LjQ1LDAsMCwxLDE0LjQ1LDRoNy4xMWEuNDMuNDMsMCwwLDEsLjQ0LjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMiIC8+XG48cGF0aCBkPSJNMzAsMThBNC4wNiw0LjA2LDAsMCwwLDM0LDE0VjZIMjRWNC40M0EyLjQ0LDIuNDQsMCwwLDAsMjEuNTUsMmgtNy4xQTIuNDQsMi40NCwwLDAsMCwxMiw0LjQzVjZIMnY4QTQuMDYsNC4wNiwwLDAsMCw2LjA1LDE4aDRWMTUuOTJoMnY1LjdhMSwxLDAsMSwx''@;'; put 'put ''LTIsMFYyMC4wNkg2LjA2QTYuMDYsNi4wNiwwLDAsMSwyLDE4LjQ5djkuNDVhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE4LjQ5YTYsNiwwLDAsMS00LjA2LDEuNTdIMjhWMThaTTE0LDQuNDNBLjQ1LjQ1LDAsMCwxLDE0LjQ1LDRoNy4xYS40NS40NSwwLDAsMSwuNDUuNDNWNkgx''@;'; put 'put ''NFpNMjYsMjEuNjJhMSwxLDAsMSwxLTIsMFYyMC4wNkgxNFYxOEgyNFYxNS45MmgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ29sb3JQaWNrZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDEwLjA1YTUuMDcsNS4wNyww''@;'; put 'put ''LDAsMCwuMS03LjE3QTUuMDYsNS4wNiwwLDAsMCwyNiwzTDIwLjc4LDguMTVhMi4xMywyLjEzLDAsMCwxLTMsMGwtLjY3LS42N0wxNS43Miw4LjkyLDI3LjA4LDIwLjI4bDEuNDItMS40Mi0uNjctLjY3YTIuMTMsMi4xMywwLDAsMSwwLTNaTTI2LjQ0LDEzLjhhNC4wNyw0LjA3LDAsMCwwLTEu''@;'; put 'put ''MDgsMS45MmwtNS4wOC01LjA4QTQuMDcsNC4wNywwLDAsMCwyMi4yLDkuNTZsNS4xNi01LjE3YTMuMDksMy4wOSwwLDAsMSw0LjM1LS4xLDMuMDksMy4wOSwwLDAsMS0uMSw0LjM1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNNy4z''@;'; put 'put ''LDMxLjUxYTIsMiwwLDEsMS0yLjgzLTIuODNMMTguNTgsMTQuNTdsLTEuNDItMS40MUwzLjA1LDI3LjI3YTQsNCwwLDAsMC0uNjgsNC44TC44OSwzMy41NUExLDEsMCwwLDAsLjg5LDM1YTEsMSwwLDAsMCwxLjQyLDBsMS40My0xLjQ0YTMuOTMsMy45MywwLDAsMCwyLjA5LjYsNC4wNiw0LjA2''@;'; put 'put ''LDAsMCwwLDIuODgtMS4yTDIyLjgyLDE4LjgxLDIxLjQxLDE3LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0zMy43MywyLjExYTQuMDksNC4wOSwwLDAsMC01Ljc2LjFMMjIuODEsNy4zOGEzLjEzLDMuMTMsMCwwLDEtNC4zLjEx''@;'; put 'put ''TDE3LjA5LDguOTEsMjcsMTguNzlsMS40Mi0xLjQyQTMuMTgsMy4xOCwwLDAsMSwyOC40NiwxM2w1LjE3LTUuMTdBNC4wOCw0LjA4LDAsMCwwLDMzLjczLDIuMTFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTIyLjE4LDE2Ljc5LDcuNDYs''@;'; put 'put ''MzEuNTFhMiwyLDAsMSwxLTIuODItMi44M0wxOS4zNSwxNGwtMS40MS0xLjQxTDMuMjIsMjcuMjdhNCw0LDAsMCwwLS42OCw0LjhMMS4wNiwzMy41NWExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwxLjQxLDBsMS40NC0xLjQ0YTMuOTMsMy45MywwLDAsMCwyLjA5LjYsNC4wNiw0LjA2LDAs''@;'; put 'put ''MCwwLDIuODgtMS4yTDIzLjYsMTguMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIyLjYsNEgyMS41NWEzLjg5LDMuODksMCwwLDAtNy4zMSwwSDEzLjRB''@;'; put 'put ''Mi40MSwyLjQxLDAsMCwwLDExLDYuNFYxMEgyNVY2LjRBMi40MSwyLjQxLDAsMCwwLDIyLjYsNFpNMjMsOEgxM1Y2LjI1QS4yNS4yNSwwLDAsMSwxMy4yNSw2aDIuNjlsLjEyLTEuMTFBMS4yNCwxLjI0LDAsMCwxLDE2LjYxLDRhMiwyLDAsMCwxLDMuMTUsMS4xOGwuMDkuODRoMi45YS4yNS4y''@;'; put 'put ''NSwwLDAsMSwuMjUuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy4yNSwxOC4wNkgyMS4zM2wyLjg0LTIuODNhMSwxLDAsMSwwLTEuNDItMS40MkwxNy41LDE5LjA2bDUuMjUsNS4yNWExLDEsMCwwLDAsLjcxLjI5LDEsMSww''@;'; put 'put ''LDAsMCwuNzEtMS43bC0yLjg0LTIuODRIMzMuMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTI5LDE2aDJWNi42OEExLjY2LDEuNjYsMCwwLDAsMjkuMzUsNUgyNy4wOFY3SDI5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG48cGF0aCBkPSJNMjksMzFIN1Y3SDlWNUg2LjY0QTEuNjYsMS42NiwwLDAsMCw1LDYuNjdWMzEuMzJBMS42NiwxLjY2LDAsMCwwLDYuNjUsMzNIMjkuMzZBMS42NiwxLjY2LDAsMCwwLDMxLDMxLjMzVjIyLjA2SDI5WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZURyYWdIYW5kbGU9KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTUiIGN5PSIxMiIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xl''@;'; put 'put ''IGN4PSIxNSIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUgY3g9IjIxIiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PGNpcmNsZSBjeD0iMjEiIGN5''@;'; put 'put ''PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxjaXJjbGUgY3g9IjE1IiBjeT0iMTgiIHI9IjEu''@;'; put 'put ''NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZUZpbHRlcjI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDExSDNhMSwxLDAsMCwwLDAsMkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjgsMTdIOGExLDEsMCwwLDAsMCwySDI4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0yMywyM0gxM2ExLDEsMCwwLDAsMCwySDIzYTEsMSwwLDAsMCww''@;'; put 'put ''LTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlTW9vbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMjcuMTlhMSwxLDAsMCwwLTEtLjU2Yy0uMjgsMC0uNTYsMC0uODUsMEExMSwxMSwwLDAsMSwyNC45Miw1LjYxYTEs''@;'; put 'put ''MSwwLDAsMCwuNjEtMSwxLDEsMCwwLDAtLjY3LS45MSwxNC43LDE0LjcsMCwwLDAtNS0uODcsMTUuMTIsMTUuMTIsMCwwLDAsMCwzMC4yNCwxNC43OCwxNC43OCwwLDAsMCwxMS00LjgxQTEsMSwwLDAsMCwzMSwyNy4xOVpNMTkuODksMzEuMTJhMTMuMTIsMTMuMTIsMCwwLDEsMC0yNi4yNCwx''@;'; put 'put ''MS44MSwxMS44MSwwLDAsMSwyLC4xNiwxMywxMywwLDAsMCw1LjcyLDIzLjUzQTEyLjc1LDEyLjc1LDAsMCwxLDE5Ljg5LDMxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjkuMiwyNi43MkExMi4wNywxMi4wNywwLDAsMSwy''@;'; put 'put ''Mi45LDQuNDQsMTMuNjgsMTMuNjgsMCwwLDAsMTkuNDksNGExNCwxNCwwLDAsMCwwLDI4LDEzLjgyLDEzLjgyLDAsMCwwLDEwLjktNS4zNEExMS43MSwxMS43MSwwLDAsMSwyOS4yLDI2LjcyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBl''@;'; put 'put ''U3VuPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw2LjMxYTEsMSwwLDAsMCwxLTFWMS45MWExLDEsMCwwLDAtMiwwdjMuNEExLDEsMCwwLDAsMTgsNi4zMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTE4LDI5LjY5YTEs''@;'; put 'put ''MSwwLDAsMC0xLDF2My40YTEsMSwwLDAsMCwyLDB2LTMuNEExLDEsMCwwLDAsMTgsMjkuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik04LjMyLDkuNzRBMSwxLDAsMCwwLDksMTBhMSwxLDAsMCwwLC43MS0uMjksMSwxLDAsMCww''@;'; put 'put ''LDAtMS40Mkw3LjMzLDUuOTJBMSwxLDAsMCwwLDUuOTIsNy4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNy42OCwyNi4yNmExLDEsMCwxLDAtMS40MiwxLjQybDIuNDEsMi40YTEsMSwwLDAsMCwuNzEuMywxLDEsMCwwLDAsLjct''@;'; put 'put ''LjMsMSwxLDAsMCwwLDAtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LjMxLDE4YTEsMSwwLDAsMC0xLTFIMS45MWExLDEsMCwwLDAsMCwyaDMuNEExLDEsMCwwLDAsNi4zMSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zNC4wOSwxN2gtMy40YTEsMSwwLDEsMCwwLDJoMy40YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNOC4zMiwyNi4yNmwtMi40LDIuNDFhMSwxLDAsMCww''@;'; put 'put ''LC43LDEuNzEsMSwxLDAsMCwwLC43MS0uM2wyLjQxLTIuNGExLDEsMCwxLDAtMS40Mi0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTI3LDEwYTEsMSwwLDAsMCwuNzEtLjI5bDIuNC0yLjQxYTEsMSwwLDAsMCwwLTEuNDEsMSwx''@;'; put 'put ''LDAsMCwwLTEuNDEsMGwtMi40MSwyLjRhMSwxLDAsMCwwLDAsMS40MkExLDEsMCwwLDAsMjcsMTBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz48cGF0aCBkPSJNMTguMTMsNy43NWExMC4xMywxMC4xMywwLDEsMCwxMCwxMC4xM0ExMC4wOCwxMC4wOCww''@;'; put 'put ''LDAsMCwxOC4xMyw3Ljc1Wm0wLDE4LjI1YTguMTMsOC4xMywwLDEsMSw4LTguMTJBOC4wOCw4LjA4LDAsMCwxLDE4LjEzLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIC8+PHBhdGggZD0iTTE4LDYuNDJhMSwxLDAsMCwwLDEtMVYxLjkxYTEsMSwwLDAs''@;'; put 'put ''MC0yLDBWNS40MkExLDEsMCwwLDAsMTgsNi40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDI5LjU4YTEsMSwwLDAsMC0xLDF2My41MWExLDEsMCwwLDAsMiwwVjMwLjU4QTEsMSwwLDAsMCwxOCwyOS41OFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTguNCw5LjgxQTEsMSwwLDAsMCw5LjgxLDguNEw3LjMzLDUuOTJBMSwxLDAsMCwwLDUuOTIsNy4zM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjYsMjYuMTlhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEsMS40MWwyLjQ4LDIuNDhhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTYuNDIsMThhMSwxLDAsMCwwLTEtMUgxLjkxYTEsMSwwLDAsMCwwLDJINS40MkExLDEsMCwwLDAsNi40MiwxOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHBhdGggZD0iTTM0LjA5LDE3SDMwLjU4YTEsMSwwLDAsMCwwLDJoMy41MWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz48cGF0aCBkPSJNOC40LDI2LjE5LDUuOTIs''@;'; put 'put ''MjguNjdhMSwxLDAsMCwwLDEuNDEsMS40MUw5LjgxLDI3LjZBMSwxLDAsMCwwLDguNCwyNi4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciIC8+PHBhdGggZD0iTTI3LjYsOS44MWwyLjQ4LTIuNDhhMSwxLDAsMCwwLTEuNDEtMS40MUwyNi4xOSw4LjRBMSwxLDAs''@;'; put 'put ''MCwwLDI3LjYsOS44MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTgiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMTAiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTkiIC8+JyksTC5DbHJTaGFwZVdhbmQ9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNC4xLDQsMzEuNzEsMS42YTEuODMsMS44MywwLDAsMC0xLjMxLS41NGgwYTIuMDUsMi4wNSwwLDAsMC0xLjQ1LjYyTDEuNzYsMjkuMjNBMiwyLDAsMCwwLDEuNjgsMzJsMi40LDIuNDNBMS44Mywx''@;'; put 'put ''LjgzLDAsMCwwLDUuMzksMzVoMGEyLjA1LDIuMDUsMCwwLDAsMS40NS0uNjJMMzQsNi43OUEyLDIsMCwwLDAsMzQuMSw0Wk01LjQyLDMyLjkzLDMuMTYsMzAuNjVoMEwyNC4xMSw5LjQzbDIuMjUsMi4yOFpNMzIuNjEsNS4zOWwtNS4xMiw1LjE4TDI1LjI0LDguMjlsNS4xMy01LjIsMi4yNSwy''@;'; put 'put ''LjI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi41MywyMC40N2wyLjA5LTIuMDlhLjguOCwwLDAsMC0xLjEzLTEuMTNsLTIuMDksMi4wOS0yLjA5LTIuMDlhLjguOCwwLDAsMC0xLjEzLDEuMTNsMi4wOSwy''@;'; put 'put ''LjA5LTIuMDksMi4wOWEuOC44LDAsMCwwLDEuMTMsMS4xM2wyLjA5LTIuMDksMi4wOSwyLjA5YS44LjgsMCwwLDAsMS4xMy0xLjEzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNC43OCw2LjUxYS44LjgsMCww''@;'; put 'put ''LDAsMS4xMywwTDE3LjQsNWwxLjQ5LDEuNDlBLjguOCwwLDAsMCwyMCw1LjM4TDE4LjU0LDMuODksMjAsMi40YS44LjgsMCwwLDAtMS4xMy0xLjEzTDE3LjQsMi43NiwxNS45MSwxLjI3QS44LjgsMCwxLDAsMTQuNzgsMi40bDEuNDksMS40OUwxNC43OCw1LjM4QS44LjgsMCwwLDAsMTQuNzgs''@;'; put 'put ''Ni41MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNOC4zMywxNS4yNmEuOC44LDAsMCwwLDEuMTMsMGwxLjE2LTEuMTYsMS4xNiwxLjE2YS44LjgsMCwxLDAsMS4xMy0xLjEzTDExLjc2LDEzbDEuMTYtMS4xNmEu''@;'; put 'put ''OC44LDAsMSwwLTEuMTMtMS4xM2wtMS4xNiwxLjE2TDkuNDYsMTAuNjhhLjguOCwwLDEsMC0xLjEzLDEuMTNMOS40OSwxMyw4LjMzLDE0LjEzQS44LjgsMCwwLDAsOC4zMywxNS4yNloiLz4nKSxMLkNsclNoYXBlQ3Vyc29yTW92ZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjguODUs''@;'; put 'put ''MTIuODlhMSwxLDAsMCwwLTEuNDIsMCwxLDEsMCwwLDAsMCwxLjQxTDMwLjE0LDE3SDE5VjUuODZsMi42OSwyLjdhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQyTDE4LDIsMTIuODksNy4xNWExLDEsMCwwLDAtLjI5LjcxLDEsMSwwLDAsMCwxLjcxLjdMMTcsNS44NlYxN0g1Ljg2''@;'; put 'put ''bDIuNy0yLjY5YTEsMSwwLDAsMCwwLTEuNDEsMSwxLDAsMCwwLTEuNDIsMEwyLDE4bDUuMTQsNS4xMWExLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNy0xLjcxTDUuODYsMTlIMTdWMzAuMTRsLTIuNjktMi43YTEsMSwwLDAsMC0xLjcxLjcsMSwxLDAsMCwwLC4yOS43MUwxOCwzNGw1LjEx''@;'; put 'put ''LTUuMTRhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDE5LDMwLjE0VjE5SDMwLjE0bC0yLjcsMi42OWExLDEsMCwwLDAsLjcsMS43MSwxLDEsMCwwLDAsLjcxLS4yOUwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVDbG9uZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiw2SDIydjRoMlY2YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw2VjIyYTIsMiwwLDAsMCwyLDJoNFYyMkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMw''@;'; put 'put ''LDEySDE0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0QTIsMiwwLDAsMCwzMCwxMlptMCwxOEgxNFYxNEgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwb2x5Z29uIHBvaW50cz0iMjEgMjggMjMgMjgg''@;'; put 'put ''MjMgMjMgMjggMjMgMjggMjEgMjMgMjEgMjMgMTYgMjEgMTYgMjEgMjEgMTYgMjEgMTYgMjMgMjEgMjMgMjEgMjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNCwxMFY2YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw2VjIyYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJoNFYxMmEyLDIsMCwwLDEsMi0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTJIMTRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRBMiwyLDAsMCwwLDMwLDEyWk0yOCwy''@;'; put 'put ''M0gyM3Y1SDIxVjIzSDE2VjIxaDVWMTZoMnY1aDVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVEZXRhaWxzPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwyMkg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwxNEgyN2ExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik05LDE4SDI3YTEsMSwwLDAsMCwwLTJIOWExLDEsMCwwLDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTksMjJIMTlhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTE5LDIySDlhMSwxLDAsMCwxLDAtMkgxOWExLDEsMCwwLDEsMCwy''@;'; put 'put ''Wm04LTRIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJabTAtNEg5YTEsMSwwLDAsMSwwLTJIMjdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZURyYWdIYW5kbGVDb3JuZXI9KDAsRS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUg''@;'; put 'put ''Y3g9IjE4IiBjeT0iMTgiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PGNpcmNsZSBjeD0iMjQiIGN5PSIxMiIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9''@;'; put 'put ''IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMTgiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZUVyYXNlcj0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzUuNjIsMTJhMi44MiwyLjgyLDAsMCwwLS44NC0yTDI3LjQ5LDIuNjVhMi45LDIuOSwwLDAsMC00LDBMMi44MywyMy4yOGEyLjg0LDIuODQsMCwwLDAsMCw0TDcuNTMsMzJIM2ExLDEsMCwwLDAsMCwySDI4YTEsMSwwLDAsMCwwLTJIMTYuNzRsMTgtMThBMi44''@;'; put 'put ''MiwyLjgyLDAsMCwwLDM1LjYyLDEyWk0xMy45MSwzMkgxMC4zNkw0LjI1LDI1Ljg5YS44NC44NCwwLDAsMSwwLTEuMTlsNS41MS01LjUyLDguNDksOC40OFpNMzMuMzcsMTIuNTQsMTkuNjYsMjYuMjVsLTguNDgtOC40OSwxMy43LTEzLjdhLjg2Ljg2LDAsMCwxLDEuMTksMGw3LjMsNy4yOWEu''@;'; put 'put ''ODYuODYsMCwwLDEsLjI1LjZBLjgyLjgyLDAsMCwxLDMzLjM3LDEyLjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDMySDE1LjMzTDE5LDI4LjM3bC05LjktOS45TDMuNTQsMjRhMS44MywxLjgzLDAsMCwwLDAsMi42TDksMzJI''@;'; put 'put ''M2ExLDEsMCwwLDAsMCwySDI4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zNC4wOCwxMC42NWwtNy4zLTcuM2ExLjgzLDEuODMsMCwwLDAtMi42LDBMMTAuNDcsMTcuMDZsOS45LDkuOUwzNC4wOCwxMy4yNUExLjg1''@;'; put 'put ''LDEuODUsMCwwLDAsMzQuMDgsMTAuNjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVMYW5kc2NhcGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAs''@;'; put 'put ''MCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDIyYS44Mi44MiwwLDAsMCwuNTUtLjIxLjguOCwwLDAsMCwwLTEuMTNMNy44MywxOC44SDI4LjE3bC0xLjcyLDEuODZh''@;'; put 'put ''LjguOCwwLDAsMCwwLDEuMTNBLjgyLjgyLDAsMCwwLDI3LDIyYS43OC43OCwwLDAsMCwuNTgtLjI2TDMxLjA5LDE4bC0zLjQ3LTMuNzRhLjc5Ljc5LDAsMCwwLTEuMTMsMCwuOC44LDAsMCwwLDAsMS4xM2wxLjcyLDEuODZINy44M2wxLjcyLTEuODZhLjguOCwwLDAsMCwwLTEuMTMuNzkuNzks''@;'; put 'put ''MCwwLDAtMS4xMywwTDQuOTEsMThsMy40NywzLjc0QS43OC43OCwwLDAsMCw5LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIs''@;'; put 'put ''MiwwLDAsMCwzMiw2Wk0yNy43NywyMS44OGExLDEsMCwwLDEtLjczLjMyLDEsMSwwLDAsMS0uNjgtLjI3LDEsMSwwLDAsMS0uMDYtMS40MUwyNy43MSwxOUg4LjI5TDkuNywyMC41MmExLDEsMCwwLDEtLjA2LDEuNDFBMSwxLDAsMCwxLDksMjIuMmExLDEsMCwwLDEtLjczLS4zMkw0LjY0LDE4''@;'; put 'put ''bDMuNTktMy44OEExLDEsMCwwLDEsOS43LDE1LjQ4TDguMjksMTdIMjcuNzFMMjYuMywxNS40OGExLDEsMCwwLDEsMS40Ny0xLjM2TDMxLjM2LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlUGFzdGU9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMwLDEySDI2djJoNHYyaDJWMTRBMiwyLDAsMCwwLDMwLDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHJlY3QgeD0iMzAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMzBIMjh2MmgyYTIsMiwwLDAsMCwyLTJWMjZIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMjJWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDIyQTIsMiwwLDAsMCwyNCwyMlpNNiw2SDIyVjIySDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cmVjdCB4PSIyMCIgeT0iMzAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0xNCwyNkgxMnY0YTIsMiwwLDAsMCwyLDJoNFYzMEgxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0zMCwxMkgyNnYyaDR2MmgyVjE0QTIsMiwwLDAsMCwzMCwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIC8+PHJlY3QgeD0iMzAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMEgyOHYyaDJhMiwyLDAsMCwwLDItMlYyNkgzMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTMiIC8+PHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHJlY3QgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xNCwyNkgxMnY0YTIsMiwwLDAsMCwyLDJoNFYzMEgxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZVBvcnRyYWl0PSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0xNS4zNCwyNi40NWEuOC44LDAsMCwwLTEuMTMsMCwuNzkuNzksMCwwLDAsMCwxLjEzTDE4LDMxLjA5bDMuNzQtMy40N2EuNzkuNzksMCwwLDAsLjA1LTEuMTMuOC44LDAsMCwwLTEuMTMsMEwxOC44LDI4LjE3VjcuODNsMS44NiwxLjcyYS44LjgsMCwxLDAsMS4wOC0xLjE3TDE4LDQu''@;'; put 'put ''OTEsMTQuMjYsOC4zOGEuNzkuNzksMCwwLDAsMCwxLjEzLjguOCwwLDAsMCwxLjEzLDBMMTcuMiw3LjgzVjI4LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhh''@;'; put 'put ''MiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWm0wLDMwSDhWNEgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCww''@;'; put 'put ''LDAsMjgsMlpNMjAuNTIsMjYuM2ExLDEsMCwwLDEsMS4zNiwxLjQ3TDE4LDMxLjM2bC0zLjg4LTMuNTlhMSwxLDAsMCwxLDEuMzYtMS40N0wxNywyNy43MVY4LjI5TDE1LjQ4LDkuN2ExLDEsMCwwLDEtMS4zNi0xLjQ3TDE4LDQuNjRsMy44OCwzLjU5YTEsMSwwLDAsMSwuMDUsMS40MSwxLDEs''@;'; put 'put ''MCwwLDEtLjczLjMyLDEsMSwwLDAsMS0uNjgtLjI2TDE5LDguMjlWMjcuNzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVUcmVlVmlldz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUsMzJIMTFhMSwxLDAsMCwxLTEtMVYyN2Ex''@;'; put 'put ''LDEsMCwwLDEsMS0xaDRhMSwxLDAsMCwxLDEsMXY0QTEsMSwwLDAsMSwxNSwzMlptLTMtMmgyVjI4SDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE1LDE2SDExYTEsMSwwLDAsMC0xLDF2MS4ySDUuOFYxMkg3YTEsMSwwLDAsMCwx''@;'; put 'put ''LTFWN0ExLDEsMCwwLDAsNyw2SDNBMSwxLDAsMCwwLDIsN3Y0YTEsMSwwLDAsMCwxLDFINC4yVjI5LjhoNi4zNmEuOC44LDAsMCwwLDAtMS42SDUuOFYxOS44SDEwVjIxYTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE3QTEsMSwwLDAsMCwxNSwxNlpNNCw4SDZ2Mkg0Wk0xNCwyMEgx''@;'; put 'put ''MlYxOGgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTM0LDlhMSwxLDAsMCwwLTEtMUgxMHYySDMzQTEsMSwwLDAsMCwzNCw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMz''@;'; put 'put ''LDE4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMywyOEgxOHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cmVjdCB4''@;'; put 'put ''PSIxMCIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxIiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTZIMTFhMSwxLDAsMCwwLTEsMXYxLjJINS44VjEySDdhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCw3LDZI''@;'; put 'put ''M0ExLDEsMCwwLDAsMiw3djRhMSwxLDAsMCwwLDEsMUg0LjJWMjkuOEgxMWEuOC44LDAsMSwwLDAtMS42SDUuOFYxOS44SDEwVjIxYTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE3QTEsMSwwLDAsMCwxNSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMzLDhIMTB2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMThIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48''@;'; put 'put ''cGF0aCBkPSJNMzMsMjhIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz4nKSxMLkNsclNoYXBlQ3Vyc29ySGFuZEdyYWI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LjA5LDkuNzRhNCw0LDAsMCwwLTEuMTYuMTlj''@;'; put 'put ''LS4xOS0xLjI0LTEuNTUtMi4xOC0zLjI3LTIuMThBNCw0LDAsMCwwLDIyLjEzLDgsMy4zNywzLjM3LDAsMCwwLDE5LDYuM2EzLjQ1LDMuNDUsMCwwLDAtMi44NywxLjMyLDMuNjUsMy42NSwwLDAsMC0xLjg5LS41MUEzLjA1LDMuMDUsMCwwLDAsMTEsOS44OXYuOTFjLTEuMDYuNC00LjExLDEu''@;'; put 'put ''OC00LjkxLDQuODRzLjM0LDgsMi42OSwxMS43OGEyNS4yMSwyNS4yMSwwLDAsMCw1LjksNi40MS45LjksMCwwLDAsLjUzLjE3SDI1LjU1YS45Mi45MiwwLDAsMCwuNTUtLjE5LDEzLjEzLDEzLjEzLDAsMCwwLDMuNzUtNi4xM0EyNS44LDI1LjgsMCwwLDAsMzEuNDEsMTh2LTUuNUEzLjA4LDMu''@;'; put 'put ''MDgsMCwwLDAsMjguMDksOS43NFpNMjkuNjEsMThhMjQsMjQsMCwwLDEtMS40Nyw5LjE1QTEyLjQ2LDEyLjQ2LDAsMCwxLDI1LjIsMzIuMkgxNS40N2EyMy43NSwyMy43NSwwLDAsMS01LjItNS43MmMtMi4zNy0zLjg2LTMtOC4yMy0yLjQ4LTEwLjM5QTUuNyw1LjcsMCwwLDEsMTEsMTIuNzZ2''@;'; put 'put ''Ny42NWEuOS45LDAsMCwwLDEuOCwwVjkuODljMC0uNDcuNTktMSwxLjQ2LTFzMS40OS41MiwxLjQ5LDF2NS43MmgxLjhWOC44MWMwLS4yOC41OC0uNzEsMS40Ni0uNzFzMS41My40OCwxLjUzLjc1djYuODloMS44VjEwbC4xNy0uMTJhMi4xLDIuMSwwLDAsMSwxLjE4LS4zMmMuOTMsMCwxLjUu''@;'; put 'put ''NDQsMS41LjY4bDAsNi41SDI3VjExLjg3YTEuOTEsMS45MSwwLDAsMSwxLjEyLS4zM2MuODYsMCwxLjUyLjUxLDEuNTIuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ3Vyc29ySGFuZE9wZW49KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMxLjQ2LDguNTdBMy4xMSwzLjExLDAsMCwwLDI3LDUuNzVhMy4xOSwzLjE5LDAsMCwwLTQuNjYtMi42NCwzLjI5LDMuMjksMCwwLDAtNi40Mi0uNzYsMy4yMywzLjIzLDAsMCwwLTEuNjYtLjQ2QTMuMjcsMy4yNywwLDAsMCwxMSw1LjE4VjE3Ljg0Yy0xLjI4LTEuNi0yLjUz''@;'; put 'put ''LTMuMTgtMi43Mi0zLjQ1QTMuMTksMy4xOSwwLDAsMCw1LjU2LDEyLjlhMy4zNywzLjM3LDAsMCwwLTMuNDcsMy40OEMyLjE4LDE4LjE4LDUuNjYsMjQuNTQsOCwyOGMzLjU0LDUuMjQsNi45Miw2LDcuMDcsNmwuMTgsMEgyNS41OWEuOTIuOTIsMCwwLDAsLjU1LS4xOSwxMy4xMywxMy4xMyww''@;'; put 'put ''LDAsMCwzLjc1LTYuMTNjMS0zLjA5LDEuNTMtNy41MywxLjU4LTEzLjU2Wk0yOC4xOCwyNy4xMmExMi40NiwxMi40NiwwLDAsMS0yLjk0LDUuMDhIMTUuMzNjLS40Ny0uMTQtMy4wNy0xLjEtNS44Ny01LjI1UzMuOTQsMTcuMjcsMy44OSwxNi4yOWExLjUsMS41LDAsMCwxLC40NS0xLjEzLDEu''@;'; put 'put ''NTIsMS41MiwwLDAsMSwxLjE0LS40NiwxLjQzLDEuNDMsMCwwLDEsMS4zMi43MWMuMjkuNDMsMi4zNiwzLDMuNTcsNC41M0wxMi44LDE4LjNWNS4xOGExLjQ4LDEuNDgsMCwxLDEsMi45NSwwVjE2LjMyaDEuOHYtMTNhMS41MSwxLjUxLDAsMCwxLDMsMFYxNi40NWgxLjhWNmExLjQzLDEuNDMs''@;'; put 'put ''MCwxLDEsMi44NSwwVjE3LjQ0SDI3VjguNTRhMS4zMywxLjMzLDAsMCwxLDIuNjUsMHY1LjU1QzI5LjYyLDIwLDI5LjE0LDI0LjIxLDI4LjE4LDI3LjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUZpbGVaaXA9KDAsRS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggZD0iTTMwLDMwLjJWMTJsLTguMS03LjlINy44QzYuOCw0LjEsNiw0LjksNiw2YzAsMCwwLDAsMCwwdjI0LjJjMCwxLDAuNywxLjgsMS43LDEuOGMwLDAsMC4xLDAsMC4xLDBoMjAuM1xuXHRcdGMxLDAsMS44LTAuNywxLjgtMS43QzMwLDMwLjMsMzAsMzAuMiwzMCwz''@;'; put 'put ''MC4yeiBNMjIsNi42bDUuNiw1LjRIMjJWNi42eiBNMjgsMzBINy45TDgsNmgxMnY4aDhWMzB6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTIsMjRjMCwxLjcsMS4zLDMsMywzczMtMS4zLDMtM3YtNGgtNlYyNHogTTEzLjQsMjR2LTIu''@;'; put 'put ''NmgzLjJWMjRjMC4xLDAuOS0wLjYsMS43LTEuNSwxLjdjLTAuOSwwLjEtMS43LTAuNi0xLjctMS41XG5cdFx0QzEzLjQsMjQuMiwxMy40LDI0LjEsMTMuNCwyNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOC4yLDljMC0wLjYtMC40''@;'; put 'put ''LTEtMS0xSDE1djJoMi4yQzE3LjgsMTAsMTguMiw5LjYsMTguMiw5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEyLjcsMTBjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFIMTV2LTJIMTIuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xNy4yLDE0YzAuNiwwLDEtMC40LDEtMXMtMC40LTEtMS0xSDE1djJIMTcuMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xMS43LDE1YzAsMC42LDAuNCwxLDEsMUgxNXYt''@;'; put 'put ''MmgtMi4zQzEyLjIsMTQsMTEuNywxNC40LDExLjcsMTV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMTcuMiwxOGMwLjYsMCwxLTAuNCwxLTFzLTAuNC0xLTEtMUgxNXYySDE3LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMTUsMjUuNmMwLjksMCwxLjYtMC43LDEuNi0xLjZ2LTIuNmgtMy4yVjI0QzEzLjQsMjQuOSwxNC4xLDI1LjYsMTUsMjUuNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLjksNEg3LjhDNi44''@;'; put 'put ''LDQsNiw0LjksNiw1Ljl2MjQuMmMwLDEsMC44LDEuOSwxLjgsMS45aDIwLjNjMSwwLDEuOC0wLjksMS44LTEuOVYxMS45TDIxLjksNHogTTE4LDI0YzAsMS43LTEuMywzLTMsM1xuXHRcdHMtMy0xLjMtMy0zdi00aDZWMjR6IE0xNy4yLDEyYzAuNiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDE1''@;'; put 'put ''djJoMi4yYzAuNiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDE1di0yaC0yLjJjLTAuNiwwLTEtMC40LTEtMVxuXHRcdHMwLjQtMSwxLTFIMTV2LTJoLTIuMmMtMC42LDAtMS0wLjQtMS0xczAuNC0xLDEtMUgxNVY4aDIuMmMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMUgxNXYySDE3LjJ6IE0y''@;'; put 'put ''MS45LDEyVjYuNWw1LjcsNS41SDIxLjl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVGaWx0ZXJPZmY9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDYuNEMzNCw1LjYsMzMuMyw1LDMyLjUsNUgxMC4zbDIsMkgzMnYwLjZsLTku''@;'; put 'put ''Niw5LjZsMS40LDEuNEwzMy40LDlDMzMuOCw4LjYsMzQsOC4xLDM0LDcuNlY2LjVDMzQsNi41LDM0LDYuNCwzNCw2LjR6IlxuXHRcdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMi43LDNsMiwyaC0xQzIuOSw0LjksMi4xLDUuNSwyLDYu''@;'; put 'put ''M3YxLjFjMCwwLjUsMC4yLDEsMC42LDEuNEwxNCwyMC4ydjEwLjNsMS45LDAuOFYxOS40TDQsNy41VjdoMi43TDIwLDIwLjN2MTIuOWwyLDAuOFxuXHRcdGMwLDAsMCwwLDAtMC4xVjIyLjNsMTAuMSwxMC4xbDEuNC0xLjRMNC4xLDEuNkwyLjcsM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMy45LDE4LjZMMTAuMyw1LjFoMjIuMkMzMy4zLDUsMzQsNS42LDM0LDYuNGMwLDAsMCwwLDAsMC4xdjEuMWMwLDAuNS0wLjIsMS0wLjYsMS40TDIzLjksMTguNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMzLjUsMzFMNC4xLDEuNkwyLjYsM2wyLjEsMi4xSDMuNUMyLjcsNSwyLDUuNiwyLDYuNGMwLDAsMCwwLDAsMC4xdjEuMWMwLDAuNSwwLjIsMSwwLjYsMS40TDE0LDIwLjV2MTAuMWw4LDMuNFYyMi40XG5cdGwxMC4xLDEwLjFMMzMuNSwzMXoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVJlY3ljbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYuNCwxNy40YzAuMiwwLjEsMC4zLDAuMSwwLjUsMC4xYzAuMiwwLDAuNC0wLjEsMC41LTAuMWw3LTQuMWMwLjMtMC4yLDAuNS0wLjUsMC41LTAuOWMwLTAu''@;'; put 'put ''NC0wLjItMC43LTAuNS0wLjlMMTEuOSwxMFxuXHRcdEwxNCw2LjJjMC40LTAuNywxLTEuMywxLjctMS43YzItMS4xLDQuNS0wLjMsNS42LDEuN2MwLjMsMC41LDAuOSwwLjYsMS40LDAuM2MwLDAsMCwwLDAuMSwwYzAuNC0wLjMsMC41LTAuOSwwLjMtMS4zXG5cdFx0Yy0wLjYtMS0xLjQtMS45''@;'; put 'put ''LTIuNC0yLjRjLTMtMS42LTYuNy0wLjYtOC4zLDIuNEw5LjYsOS45Yy0wLjMsMC41LTAuMSwxLjEsMC4zLDEuNGwyLDEuMmwtNCwyLjRWOC4yYzAtMC42LTAuNC0xLTEtMVxuXHRcdEM2LjQsNy4zLDYsNy43LDYsOC4zdjguM0M2LDE2LjksNi4yLDE3LjIsNi40LDE3LjR6IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMSwyMWwtMy41LTYuMmMtMC4xLTAuMi0wLjQtMC40LTAuNi0wLjVjLTAuMy0wLjEtMC41LDAtMC44LDAuMWwtMi4yLDEuM1YxMWw1LjUsMy4zYzAuMSwwLDAuMSwwLjEsMC4yLDAuMVxuXHRcdGMwLjUsMC4y''@;'; put 'put ''LDEuMSwwLDEuMy0wLjVjMC4yLTAuNSwwLTEuMS0wLjUtMS4zbC03LTQuMmMtMC4zLTAuMi0wLjctMC4yLTEsMEMyMy4xLDguNSwyMyw4LjgsMjMsOS4ydjguM2MwLDAuNCwwLjEsMC44LDAuNCwxXG5cdFx0YzAuMywwLjIsMC43LDAuMiwxLDBsMi45LTEuN2wzLDUuM2MwLjcsMS4zLDAuNywy''@;'; put 'put ''LjgsMCw0LjFjLTAuNiwxLjItMS45LDEuOS0zLjIsMS45aC0wLjljLTAuNSwwLTEuMiwwLjQtMS4yLDFcblx0XHRjMC4xLDAuNiwwLjYsMSwxLjIsMWgwLjljMi4xLDAsNC0xLjEsNS0yLjlDMzMuMiwyNS4yLDMzLjIsMjIuOSwzMi4xLDIxeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjQsMjguMmwtNy00LjJjLTAuMy0wLjItMC43LTAuMi0xLDBjLTAuMywwLjItMC40LDAuNS0wLjQsMC45djMuM0g5LjFjLTEuNS0wLjEtMi45LTAuOS0zLjYtMi4zXG5cdFx0Yy0wLjgtMS40LTAuOC0zLjIsMC00LjZjMC4zLTAuNSwwLjEt''@;'; put 'put ''MS4xLTAuNC0xLjRjLTAuNS0wLjMtMS4xLTAuMS0xLjQsMC40Yy0xLjIsMi4xLTEuMSw0LjYsMC4xLDYuNkM0LjksMjguOCw3LDMwLDkuMiwzMEgxNVxuXHRcdGMwLjYsMCwxLTAuNCwxLTF2LTIuNGw0LDIuNGwtNS42LDMuM2MtMC4zLDAuMi0wLjUsMC41LTAuNSwwLjljMCwwLjYsMC41LDEs''@;'; put 'put ''MSwxYzAuMiwwLDAuMy0wLjEsMC41LTAuMmw3LTQuMlxuXHRcdGMwLjItMC4xLDAuMy0wLjIsMC40LTAuNEMyMy4xLDI5LDIyLjksMjguNCwyMi40LDI4LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjAuOCwzLjFjLTMtMS42LTYu''@;'; put 'put ''Ny0wLjYtOC40LDIuNGwtMi4yLDMuOGwtMi0xLjFDOC4yLDgsOCw4LDcuOSw4QzcuNCw4LDcsOC40LDcsOC45djcuMmMwLDAuMywwLjEsMC42LDAuNCwwLjhcblx0XHRjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4yLDAsMC4zLDAsMC40LTAuMWw2LjMtMy42YzAuMy0wLjIsMC40LTAuNCww''@;'; put 'put ''LjQtMC44YzAtMC4zLTAuMi0wLjYtMC40LTAuOEwxMiwxMC4zbDIuMi0zLjhcblx0XHRjMC40LTAuNywxLTEuMywxLjctMS43YzItMS4xLDQuNS0wLjMsNS42LDEuN2MwLjMsMC41LDAuOSwwLjYsMS40LDAuNGMwLjUtMC4zLDAuNi0wLjksMC40LTEuNEMyMi42LDQuNSwyMS44LDMuNiwyMC44''@;'; put 'put ''LDMuMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjIsMjEuMWwtMy01LjNsMi4zLTEuM2MwLjMtMC4yLDAuNC0wLjQsMC40LTAuOGMwLTAuMy0wLjItMC42LTAuNC0wLjhsLTYuMi0zLjZjLTAuMS0wLjEtMC4zLTAuMS0wLjQtMC4xXG5c''@;'; put 'put ''dFx0Yy0wLjUsMC0wLjksMC40LTAuOSwwLjl2Ny4yYzAsMC4zLDAuMiwwLjYsMC40LDAuOGMwLjEsMC4xLDAuMywwLjEsMC40LDAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjFsMi4yLTEuM2wzLDUuM1xuXHRcdGMwLjcsMS4yLDAuNywyLjgsMCw0Yy0wLjcsMS4yLTEuOSwxLjktMy4yLDEuOWgt''@;'; put 'put ''MC45Yy0wLjYsMC0xLDAuNC0xLDFjMCwwLjYsMC40LDEsMSwxaDAuOWMyLjEsMCw0LTEuMSw1LTNcblx0XHRDMzMuMiwyNS4zLDMzLjIsMjMsMzIuMiwyMS4xeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjEuNywyOC40bC02LjItMy42Yy0w''@;'; put 'put ''LjEtMC4xLTAuMy0wLjEtMC40LTAuMWMtMC41LDAtMC45LDAuNC0wLjksMC45djIuNkg5LjNjLTEuNSwwLTIuOS0wLjgtMy42LTIuMVxuXHRcdGMtMC44LTEuNC0wLjgtMy4xLDAtNC41YzAuMy0wLjUsMC4xLTEuMS0wLjQtMS40Yy0wLjUtMC4zLTEuMS0wLjEtMS40LDAuNGMtMS4yLDItMS4y''@;'; put 'put ''LDQuNSwwLDYuNWMxLjEsMS45LDMuMSwzLjEsNS40LDMuMWg0Ljh2Mi42XG5cdFx0YzAsMC4zLDAuMiwwLjYsMC40LDAuOGMwLjEsMC4xLDAuMywwLjEsMC40LDAuMWMwLjEsMCwwLjMsMCwwLjQtMC4xbDYuMy0zLjZjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhcblx0XHRDMjIuMSwyOC44LDIx''@;'; put 'put ''LjksMjguNSwyMS43LDI4LjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVUcmVlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC42LDExLjdDMjkuMiw1LjgsMjQsMS43LDE4LDEuN2MtNy4yLDAtMTMsNS44LTEzLDEzYzAsNi44''@;'; put 'put ''LDUuMywxMi40LDEyLDEyLjl2NWMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi01di0yVjIyXG5cdGMwLDAsMCwwLDAtMC4xdi0zLjZsNC43LTQuN2MwLjQtMC40LDAuNC0xLDAtMS40Yy0wLjQtMC40LTEtMC40LTEuNCwwTDE5LDE1LjZ2LTNsLTMuMy0zLjNjLTAuNC0wLjQtMS0wLjQtMS40''@;'; put 'put ''LDBcblx0Yy0wLjQsMC40LTAuNCwxLDAsMS40bDIuNywyLjd2Ni4ybC0zLjgtMy44Yy0wLjQtMC40LTEtMC40LTEuNCwwYy0wLjQsMC40LTAuNCwxLDAsMS40bDUuMiw1LjJ2My4yYy01LjYtMC41LTEwLTUuMi0xMC0xMC45XG5cdGMwLTYuMSw0LjktMTEsMTEtMTFzMTEsNC45LDExLDExYzAs''@;'; put 'put ''NC45LTMuMyw5LjItOCwxMC42djIuMUMyOCwyNS43LDMyLjMsMTguNywzMC42LDExLjd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMkMxMC44LDEuNyw0LjgsNy4zLDQuNSwxNC41QzQuMiwyMS43LDkuOCwyNy43LDE3LDI4di01''@;'; put 'put ''LjJsLTUuMi01LjJjLTAuNC0wLjQtMC40LTEsMC0xLjRjMC40LTAuNCwxLTAuNCwxLjQsMFxuXHRjMCwwLDAsMCwwLDBsMy44LDMuOHYtNi4ybC0yLjctMi43Yy0wLjQtMC40LTAuNC0xLDAtMS40YzAuNC0wLjQsMS0wLjQsMS40LDBjMCwwLDAsMCwwLDBsMy4zLDMuM3YzbDMuMy0zLjNjMC40''@;'; put 'put ''LTAuNCwxLTAuNCwxLjQsMFxuXHRjMCwwLDAsMCwwLDBjMC40LDAuNCwwLjQsMSwwLDEuNEwxOSwxOC44VjI4YzcuMi0wLjMsMTIuOC02LjMsMTIuNS0xMy41UzI1LjIsMS43LDE4LDJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyOGMt''@;'; put 'put ''MC4zLDAtMC42LDAtMSwwdjVjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMXYtNUMxOC43LDI4LDE4LjMsMjgsMTgsMjh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVGaXNoPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjExLjQ5''@;'; put 'put ''IiBjeT0iMTcuNSIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMuNDgsOS4yOWExLDEsMCwwLDAtMSwwYy0zLjM3LDItNS45MSw1LjgxLTYuOSw3LjQ1TDI0Ljg1LDE4cy0xLDEuNjItMSwxLjYyYy0xLjc2LDIuNDktNS4x''@;'; put 'put ''LDYuMzYtOC43OSw2LjM2LTQuNjUsMC04Ljc1LTYuMTUtOS44NC03Ljk0LDEuMDktMS43OSw1LjE4LTcuOTQsOS44NC03Ljk0LDMuNTQsMCw2Ljc3LDMuNTgsOC41OCw2LjA3bC4yOC0uNDhzLjM2LS41MS45My0xLjI1QzIyLjcyLDExLjY0LDE5LjE4LDguMDYsMTUsOC4wNmMtNi41OSwwLTEx''@;'; put 'put ''LjY3LDkuMDctMTEuODgsOS40NkwyLjg5LDE4bC4yNy40OGMuMjEuMzksNS4yOSw5LjQ2LDExLjg4LDkuNDYsNS4wNiwwLDkuMjItNS4zNCwxMS04QzI2LDIwLDI3LjE4LDE4LDI3LjE4LDE4aDBsLjA3LS4xMWExOC4wNiwxOC4wNiwwLDAsMSwxLjg4LTIuNzVzMCwwLDAsMGEyMC4zMSwyMC4z''@;'; put 'put ''MSwwLDAsMSwyLjg2LTNWMjMuODhhMjAuOTMsMjAuOTMsMCwwLDEtMy42MS00bC0uMTYuMjZoMGwtMSwxLjU5YTE4Ljc0LDE4Ljc0LDAsMCwwLDUuMjEsNC45NSwxLDEsMCwwLDAsLjUuMTQsMS4xMywxLjEzLDAsMCwwLC41LS4xMywxLDEsMCwwLDAsLjUtLjg3VjEwLjE2QTEsMSwwLDAsMCwz''@;'; put 'put ''My40OCw5LjI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUZvcm09KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLDEySDdhMSwxLDAsMCwxLTEtMVY3QTEsMSwwLDAsMSw3LDZIMjFhMSwxLDAsMCwxLDEsMXY0QTEsMSww''@;'; put 'put ''LDAsMSwyMSwxMlpNOCwxMEgyMFY3Ljk0SDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEsMTQuMDhIN2ExLDEsMCwwLDAtMSwxVjE5YTEsMSwwLDAsMCwxLDFIMTguMzZMMjIsMTYuM1YxNS4wOEExLDEsMCwwLDAsMjEsMTQuMDha''@;'; put 'put ''TTIwLDE4SDhWMTZIMjBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTEuMDYsMzEuNTF2LS4wNmwuMzItMS4zOUg0VjRoMjBWMTQuMjVMMjYsMTIuMzZWM2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsM1YzMWExLDEsMCwwLDAs''@;'; put 'put ''MSwxaDhBMy40NCwzLjQ0LDAsMCwxLDExLjA2LDMxLjUxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDE5LjE3bC0uNzguNzlBMSwxLDAsMCwwLDIyLDE5LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTYsMjYuOTRhMSwxLDAsMCwwLDEsMWg0Ljg0bC4zLTEuMy4xMy0uNTUsMC0uMDVIOFYyNGg2LjM0bDItMkg3YTEsMSwwLDAsMC0xLDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNDksMTYuNjcs''@;'; put 'put ''MzAuMTIsMTMuM2ExLjYxLDEuNjEsMCwwLDAtMi4yOCwwaDBMMTQuMTMsMjcuMDksMTMsMzEuOWExLjYxLDEuNjEsMCwwLDAsMS4yNiwxLjksMS41NSwxLjU1LDAsMCwwLC4zMSwwLDEuMTUsMS4xNSwwLDAsMCwuMzcsMGw0Ljg1LTEuMDdMMzMuNDksMTlhMS42LDEuNiwwLDAsMCwwLTIuMjda''@;'; put 'put ''TTE4Ljc3LDMwLjkxbC0zLjY2LjgxTDE2LDI4LjA5LDI2LjI4LDE3LjdsMi44MiwyLjgyWk0zMC4yMywxOS4zOWwtMi44Mi0yLjgyTDI5LDE1bDIuODQsMi44NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLEwuQ2xyU2hhcGVGdWVsPSgwLEUuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0yMC4xMiwzNEg1LjlBMi44MSwyLjgxLDAsMCwxLDMsMzEuMTlWNC44NkEyLjksMi45LDAsMCwxLDYsMi4wN0gyMC4yMkEyLjcyLDIuNzIsMCwwLDEsMjMsNC44NlYzMS4xOUEyLjgyLDIuODIsMCwwLDEsMjAuMTIsMzRaTTUuOSw0QS44Ny44NywwLDAsMCw1''@;'; put 'put ''LDQuODZWMzEuMTlhLjg3Ljg3LDAsMCwwLC44Ny44N0gyMC4xMmEuOTQuOTQsMCwwLDAsLjk1LS44N1Y0Ljg2QS45NC45NCwwLDAsMCwyMC4xMiw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI5LjUzLDM0QTMuNSwzLjUsMCwwLDEs''@;'; put 'put ''MjYsMzAuNVYyM2EyLDIsMCwwLDAtMi0ySDIyLjU3YTEsMSwwLDAsMSwwLTJIMjRhNCw0LDAsMCwxLDQsNFYzMC41YTEuNSwxLjUsMCwwLDAsMywwVjE3LjNsLTMuMTMtN0EyLjI5LDIuMjksMCwwLDAsMjUuOCw5aC0uNzNhMSwxLDAsMSwxLDAtMmguNzNhNC4zLDQuMywwLDAsMSwzLjkzLDIu''@;'; put 'put ''NTVsMy4yMSw3LjE2YTEsMSwwLDAsMSwuMDkuNDFWMzAuNUEzLjUsMy41LDAsMCwxLDI5LjUzLDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDlIOEExLDEsMCwxLDEsOCw3SDE4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTgsMTNIOEExLDEsMCwxLDEsOCwxMUgxOEExLDEsMCwxLDEsMTgsMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjUsMTIuMDhhMSwxLDAsMCwxLTEt''@;'; put 'put ''MXYtNmExLDEsMCwwLDEsMiwwdjZBMSwxLDAsMCwxLDI1LDEyLjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+JyksTC5DbHJTaGFwZVNub3dmbGFrZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguMDUsMzMuNjFhMSwxLDAsMCwxLTEtMVYz''@;'; put 'put ''LjM3YTEsMSwwLDEsMSwxLjk1LDBWMzIuNjNBMSwxLDAsMCwxLDE4LjA1LDMzLjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LjA2LDEwLjA3LDE0LjUyLDYuNTRhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwbDIu''@;'; put 'put ''MTMsMi4xMiwyLjEyLTIuMTJhMSwxLDAsMCwxLDEuNDEsMCwxLDEsMCwwLDEsMCwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLjg1LDMxLjE3YTEsMSwwLDAsMS0uNy0uMjlMMTgsMjguNzYsMTUuOSwzMC44OGExLDEsMCww''@;'; put 'put ''LDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsMjUuOTNsMy41NCwzLjUzYTEsMSwwLDAsMSwwLDEuNDJBMSwxLDAsMCwxLDIwLjg1LDMxLjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjkyLDI2LjVhMSwxLDAsMCwxLS41''@;'; put 'put ''LS4xM2wtMjYtMTVBMSwxLDAsMCwxLDQuMDcsMTBhMSwxLDAsMCwxLDEuMzctLjM2bDI2LDE1YTEsMSwwLDAsMS0uNSwxLjg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTYsMTUuMzdhMSwxLDAsMCwxLS4yNi0ybDIuOS0uNzhMNy44''@;'; put 'put ''NCw5LjczYTEsMSwwLDEsMSwxLjkzLS41MkwxMS4wNywxNCw2LjI0LDE1LjMzQS44Mi44MiwwLDAsMSw2LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTI3LjA1LDI3LjU0YTEsMSwwLDAsMS0xLS43NUwyNC44LDIybDQuODIt''@;'; put 'put ''MS4zYTEsMSwwLDEsMSwuNTIsMS45M2wtMi45Ljc4Ljc4LDIuOWExLDEsMCwwLDEtLjcxLDEuMjJBLjc1Ljc1LDAsMCwxLDI3LjA1LDI3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTQuOTQsMjYuNWExLDEsMCwwLDEtLjUtMS44''@;'; put 'put ''N2wyNi0xNWExLDEsMCwwLDEsMS4zNi4zNiwxLDEsMCwwLDEtLjM2LDEuMzdsLTI2LDE1QTEsMSwwLDAsMSw0Ljk0LDI2LjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNOC44MSwyNy41NGEuNzUuNzUsMCwwLDEtLjI2LDAsMSwxLDAs''@;'; put 'put ''MCwxLS43MS0xLjIybC43OC0yLjktMi45LS43OEExLDEsMCwwLDEsNSwyMS4zOGExLDEsMCwwLDEsMS4yMy0uNzFMMTEuMDcsMjJsLTEuMyw0LjgyQTEsMSwwLDAsMSw4LjgxLDI3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHBhdGggZD0iTTI5''@;'; put 'put ''Ljg4LDE1LjM3YS44Mi44MiwwLDAsMS0uMjYsMEwyNC44LDE0bDEuMjktNC44M0ExLDEsMCwxLDEsMjgsOS43M2wtLjc4LDIuODksMi45Ljc4YTEsMSwwLDAsMS0uMjYsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPicpLEwuQ2xyU2hhcGVUYWJsZT0o''@;'; put 'put ''MCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNOCwzNGExLDEsMCwwLDEtMS0xVjIuOTJhMSwxLDAsMCwxLDIsMFYzM0ExLDEsMCwwLDEsOCwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNywzMy45MmExLDEsMCwwLDEtMS0xVjku''@;'; put 'put ''MWExLDEsMCwxLDEsMiwwVjMyLjkyQTEsMSwwLDAsMSwxNywzMy45MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNiwzNGExLDEsMCwwLDEtMS0xVjlhMSwxLDAsMCwxLDIsMFYzM0ExLDEsMCwwLDEsMjYsMzRaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMuMTEsMThoLTI1YTEsMSwwLDEsMSwwLTJoMjVhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy4xLDI2Ljk0SDguMUExLDEs''@;'; put 'put ''MCwxLDEsOC4xLDI1aDI1YTEsMSwwLDEsMSwwLDEuOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMsOC45MkgzQTEsMSwwLDEsMSwzLDdIMzNhMSwxLDAsMSwxLDAsMS45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02IiAvPicpLEwuQ2xyU2hhcGVWb2x1bWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1Ljg4LDMySDEyYTQsNCwwLDAsMS00LTRWMTEuNDZMMi4zMSw1Ljc3YTEsMSwwLDAsMS0uMjItMS4wOUExLDEsMCwwLDEsMyw0LjA2SDI4Ljg2YTEsMSwwLDAsMSwxLDFWMjhB''@;'; put 'put ''NCw0LDAsMCwxLDI1Ljg4LDMyWk01LjQzLDZsNC4yOCw0LjM0YS43NS43NSwwLDAsMSwuMjEuNjN2MTdBMi4xMywyLjEzLDAsMCwwLDEyLDMwSDI1Ljg4QTIuMSwyLjEsMCwwLDAsMjgsMjhWNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0zMywxNmExLDEsMCwwLDEtMS0xVjZIMjguODZhLjkyLjkyLDAsMCwxLTEtLjksMSwxLDAsMCwxLDEtMUgzM2ExLDEsMCwwLDEsMSwxVjE1QTEsMSwwLDAsMSwzMywxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwxMUgxOGEx''@;'; put 'put ''LDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMTVIMjFhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTI0LDE5SDE4YTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNCwyN0gxOGExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMjQsMjNIMjFBMSwxLDAsMSwxLDIxLDIxSDI0QTEsMSwwLDEsMSwyNCwyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPicpLEwuQ2xyU2hhcGVDcm9zc2hhaXJzPSgw''@;'; put 'put ''LEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyOUExMSwxMSwwLDEsMSwyOSwxOCwxMSwxMSwwLDAsMSwxOCwyOVpNMTgsOWE5LDksMCwxLDAsOSw5QTksOSwwLDAsMCwxOCw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDIz''@;'; put 'put ''YTUsNSwwLDEsMSw1LTVBNSw1LDAsMCwxLDE4LDIzWm0wLThhMywzLDAsMSwwLDMsM0EzLDMsMCwwLDAsMTgsMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTgsOWExLDEsMCwwLDEtMS0xVjIuOGExLDEsMCwwLDEsMiwwVjhBMSwx''@;'; put 'put ''LDAsMCwxLDE4LDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYyOGExLDEsMCwwLDEsMiwwdjVBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQiIC8+PHBhdGggZD0iTTgsMTlIMy4xN2ExLDEsMCwwLDEsMC0ySDhhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMy4xLDE5SDI4YTEsMSwwLDAsMSwwLTJoNS4xYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxMLkNsclNoYXBlQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwx''@;'; put 'put ''OCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlRG90Q2ly''@;'; put 'put ''Y2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxMWE3LDcsMCwxLDEtNyw3LDcsNywwLDAsMSw3LTciIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpN''@;'; put 'put ''MTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUJldGE9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcuMjEsMTQuMDdoM2ExLjYxLDEuNjEsMCwwLDEsMS44''@;'; put 'put ''MSwxLjUsMS40NCwxLjQ0LDAsMCwxLS44NCwxLjM0LDEuNjcsMS42NywwLDAsMSwxLjEsMS41MywxLjc1LDEuNzUsMCwwLDEtMiwxLjYzSDcuMjFabTIuNzEsMi40MmMuNDgsMCwuODItLjI4LjgyLS42N3MtLjM0LS42NS0uODItLjY1SDguNDl2MS4zMlptLjIsMi40OGEuNzUuNzUsMCwxLDAs''@;'; put 'put ''MC0xLjQ3SDguNDlWMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTQuNTUsMTUuMjN2MS4yaDN2MS4xNmgtM3YxLjMyaDMuMzN2MS4xNkgxMy4yNnYtNmg0LjYydjEuMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjAuNDEsMTUuMjNIMTguNTRWMTQuMDdoNXYxLjE2SDIxLjd2NC44NEgyMC40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0yOCwxOS4xMkgyNS4zMmwtLjM4Ljk1SDIzLjVs''@;'; put 'put ''Mi40NC02aDEuNDRsMi40NSw2SDI4LjM4Wk0yNy41NSwxOGwtLjg5LTIuMTlMMjUuNzcsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNOC4wNiwzMGEuODQuODQsMCwwLDEtLjM4LS4wOEExLDEsMCwwLDEsNy4wNiwyOVYyNWgt''@;'; put 'put ''NGExLDEsMCwwLDEtMS0xVjEwYTEsMSwwLDAsMSwxLTFoMzBhMSwxLDAsMCwxLDEsMVYyNGExLDEsMCwwLDEtMSwxSDEzLjQ4TDguNzcsMjkuNzFBMSwxLDAsMCwxLDguMDYsMzBabS00LTdoNGExLDEsMCwwLDEsMSwxdjIuNTlsMy4zLTMuM2ExLDEsMCwwLDEsLjctLjI5aDE5VjExaC0yOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG5cbiAgPHBvbHlnb24gcG9pbnRzPSIyNS44LDE4IDI3LjUsMTggMjYuNywxNS44IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG5cdDxwYXRoIGQ9Ik0xMC40LDE3LjVjLTAuMSww''@;'; put 'put ''LTAuMiwwLTAuMywwSDguNVYxOWwxLjYsMGMwLjQsMC4xLDAuOC0wLjIsMC45LTAuNkMxMS4xLDE4LDEwLjgsMTcuNiwxMC40LDE3LjV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG5cdDxwYXRoIGQ9Ik0xMC43LDE1LjhjMC0wLjQtMC4zLTAuNy0wLjgtMC43''@;'; put 'put ''SDguNXYxLjNoMS40QzEwLjQsMTYuNSwxMC43LDE2LjIsMTAuNywxNS44eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuXHQ8cGF0aCBkPSJNMzMuMSw5aC0zMGMtMC42LDAtMSwwLjQtMSwxdjE0YzAsMC42LDAuNCwxLDEsMWg0djRjMCwwLjQsMC4yLDAuOCww''@;'; put 'put ''LjYsMC45QzcuOCwzMCw3LjksMzAsOC4xLDMwYzAuMywwLDAuNS0wLjEsMC43LTAuM1xuXHRcdGw0LjctNC43aDE5LjZjMC42LDAsMS0wLjQsMS0xVjEwQzM0LjEsOS40LDMzLjYsOSwzMy4xLDl6IE0xMC40LDIwLjFjLTAuMSwwLTAuMSwwLTAuMiwwSDcuMnYtNmgzYzAuOS0wLjEsMS43LDAu''@;'; put 'put ''NSwxLjgsMS40XG5cdFx0YzAsMCwwLDAuMSwwLDAuMWMwLDAuNi0wLjMsMS4xLTAuOCwxLjNjMC42LDAuMiwxLjEsMC44LDEuMSwxLjVDMTIuMiwxOS40LDExLjQsMjAuMSwxMC40LDIwLjF6IE0xNy45LDE1LjJoLTMuM3YxLjJoM3YxLjJoLTN2MS4zXG5cdFx0aDMuM3YxLjJoLTQuNnYtNmg0''@;'; put 'put ''LjZWMTUuMnogTTIxLjcsMjAuMWgtMS4zdi00LjhoLTEuOXYtMS4yaDV2MS4yaC0xLjhWMjAuMXogTTI4LjQsMjAuMWwtMC40LTFoLTIuN2wtMC40LDFoLTEuNGwyLjQtNmgxLjRsMi41LDZcblx0XHRIMjguNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbicp''@;'; put 'put ''LEwuQ2xyU2hhcGVGaXJzdEFpZD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggZD0iTTMyLDZIMjMuOTFWNC41QTIuNSwyLjUsMCwwLDAsMjEuNDEsMmgtN2EyLjUsMi41LDAsMCwwLTIuNSwyLjVWNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjhBMiwyLDAsMCwwLDMyLDZaTTEzLjkxLDQuNWEuNS41LDAsMCwxLC41LS41aDdhLjUuNSwwLDAsMSwuNS41VjZoLThaTTQsMjhWOEgzMlYyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMC4xNSwyNS4ySDE2Ljc0YTEuMywx''@;'; put 'put ''LjMsMCwwLDEtMS4zLTEuM1YyMS4yaC0yLjdhMS4zLDEuMywwLDAsMS0xLjMtMS4zVjE2LjVhMS4zLDEuMywwLDAsMSwxLjMtMS4zaDIuN1YxMi41YTEuMywxLjMsMCwwLDEsMS4zLTEuM2gzLjQxYTEuMywxLjMsMCwwLDEsMS4yOSwxLjN2Mi43aDIuNzFhMS4zLDEuMywwLDAsMSwxLjI5LDEu''@;'; put 'put ''M3YzLjRhMS4zLDEuMywwLDAsMS0xLjI5LDEuM0gyMS40NHYyLjdBMS4zLDEuMywwLDAsMSwyMC4xNSwyNS4yWk0xNywyMy42aDIuODF2LTRoNFYxNi44aC00di00SDE3djRIMTN2Mi44aDRabTcuMTEtNi44WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5c''@;'; put 'put ''blxuICA8cGF0aCBkPSJNMzIsNkgyMy45MVY0LjVBMi41LDIuNSwwLDAsMCwyMS40MSwyaC03YTIuNSwyLjUsMCwwLDAtMi41LDIuNVY2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTMuOTEsNC41YS41LjUsMCww''@;'; put 'put ''LDEsLjUtLjVoN2EuNS41LDAsMCwxLC41LjVWNmgtOFpNMjQuNjQsMTkuOWEuNS41LDAsMCwxLS41LjVoLTMuNXYzLjVhLjUuNSwwLDAsMS0uNS41aC0zLjRhLjUuNSwwLDAsMS0uNS0uNVYyMC40aC0zLjVhLjUuNSwwLDAsMS0uNS0uNVYxNi41YS41LjUsMCwwLDEsLjUtLjVoMy41VjEyLjVh''@;'; put 'put ''LjUuNSwwLDAsMSwuNS0uNWgzLjRhLjUuNSwwLDAsMSwuNS41VjE2aDMuNWEuNS41LDAsMCwxLC41LjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICcpLEwuQ2xyU2hhcGVDb2xvclBhbGV0dGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLjU0''@;'; put 'put ''LDIzLjA1YTMuMjIsMy4yMiwwLDAsMS0zLTEuNzdBMy4wNSwzLjA1LDAsMCwxLDE4LjUsMTlhMy43NCwzLjc0LDAsMCwxLDEuOTUtMi4wNkEzLjQsMy40LDAsMCwxLDI1LDE4LjNhMywzLDAsMCwxLC4wOCwyLjMyLDMuNjksMy42OSwwLDAsMS0yLDIuMDdBMy44NSwzLjg1LDAsMCwxLDIxLjU0''@;'; put 'put ''LDIzLjA1Wm0uNTQtNC45MWEyLjQxLDIuNDEsMCwwLDAtMSwuMjFoMEEyLjEzLDIuMTMsMCwwLDAsMjAsMTkuNTFhMS4zNywxLjM3LDAsMCwwLDAsMS4wOSwxLjgxLDEuODEsMCwwLDAsMi40NS42MywyLjEsMi4xLDAsMCwwLDEuMTItMS4xNSwxLjQsMS40LDAsMCwwLDAtMS4xQTEuNTksMS41''@;'; put 'put ''OSwwLDAsMCwyMi4wOCwxOC4xNFptLTEuMjktLjUyaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTYuMTksMzMuODdBMTMuNzIsMTMuNzIsMCwwLDEsNi40LDMwLDEzLjg2LDEzLjg2LDAsMCwxLDIsMjBjMC00LjQsMi04Ljg0''@;'; put 'put ''LDUuNjgtMTIuNWExOC4yLDE4LjIsMCwwLDEsMTMuMS01LjM3aC4xMmMzLjMzLDAsNi44NSwxLjQ5LDcuMjQsNC43My4yMSwxLjc3LS41OSwzLjQ3LTEuMjksNS0uNTUsMS4xNy0xLjExLDIuMzktLjcyLDIuODFzMSwuMTIsMi4wOS0uMmE2LjI3LDYuMjcsMCwwLDEsMy4zOC0uMzYsMywzLDAs''@;'; put 'put ''MCwxLDEuODcsMS41NmMuOTQsMS44My40Nyw0LjY3LS4yMyw2LjU0aDBBMTcuMzgsMTcuMzgsMCwwLDEsMjksMjguNzQsMTkuNDMsMTkuNDMsMCwwLDEsMTYuMTksMzMuODdaTTIwLjc4LDQuMTZBMTYuMjIsMTYuMjIsMCwwLDAsOS4wOSw5QzUuNzksMTIuMjMsNCwxNi4xNiw0LDIwQTExLjky''@;'; put 'put ''LDExLjkyLDAsMCwwLDcuOCwyOC42YzUuMzgsNS4yNSwxNC42MiwzLjU1LDE5Ljg3LTEuMzNhMTUuNTIsMTUuNTIsMCwwLDAsMy43LTUuNzVoMGMuNy0xLjkuODQtMy45Mi4zMi00LjkyYTEsMSwwLDAsMC0uNjEtLjU1LDQuODYsNC44NiwwLDAsMC0yLjI5LjM1Yy0xLjMxLjM5LTMsLjg5LTQu''@;'; put 'put ''MTItLjM1LTEuMzItMS40LS40Ni0zLjI1LjM3LTVhNy45Myw3LjkzLDAsMCwwLDEuMTEtMy45Yy0uMjQtMi0yLjgxLTIuOTUtNS4yNi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIzLjg3LDI2LjY1QTIuNTksMi41OSwwLDAs''@;'; put 'put ''MCwyMi4zNSwyNUwyMiwyNC45bC0uNDYsMS41My4xNiwwYTEsMSwwLDAsMSwuNi42MWMuMTcuNi0uNDEsMS4zMS0xLjI2LDEuNTVzLTEuNzEtLjA3LTEuODgtLjY2bC0xLjU0LjQzaDBhMi44MywyLjgzLDAsMCwwLDIuODQsMS45MSw0LDQsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDIzLjg3LDI2''@;'; put 'put ''LjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE1LjA3LDI1LjU5aDBhMi43MywyLjczLDAsMCwwLTIuMjQtMS44NGwtLjI3LDEuNThhMS4xMiwxLjEyLDAsMCwxLDEsLjdjLjE3LjU5LS40MSwxLjMtMS4yNiwxLjU0QTEuOTIs''@;'; put 'put ''MS45MiwwLDAsMSwxMSwyNy41MmExLDEsMCwwLDEtLjYtLjYxczAtLjA5LDAtLjEzbC0xLjU4LjE2YTIsMiwwLDAsMCwuMDYuNDFBMi41OSwyLjU5LDAsMCwwLDEwLjM3LDI5YTMuMzYsMy4zNiwwLDAsMCwxLjMxLjI1LDMuNywzLjcsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDE1LjA3LDI1LjU5''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTEwLjc4LDE5LjE3YTIuNTksMi41OSwwLDAsMC0xLjUyLTEuNjUsMi45MSwyLjkxLDAsMCwwLS41LS4xNmwtLjM3LDEuNTZhMS4yMSwxLjIxLDAsMCwxLC4yNS4wOCwxLDEsMCwwLDEs''@;'; put 'put ''LjYuNmMuMTcuNi0uNDEsMS4zMS0xLjI2LDEuNTVzLTEuNzEtLjA2LTEuODgtLjY2YS44Ni44NiwwLDAsMSwwLS4zOWwtMS41Ni0uMzRhMi40LDIuNCwwLDAsMCwwLDEuMTZBMi44MywyLjgzLDAsMCwwLDcuNCwyMi44M2E0LDQsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDEwLjc4LDE5LjE3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTEzLjQ1LDExLjRhMi41OSwyLjU5LDAsMCwwLTEuNTItMS42NSwxLjE3LDEuMTcsMCwwLDAtLjItLjA2bC0uNTIsMS41MWEuMzguMzgsMCwwLDEsLjEsMCwxLDEsMCwwLDEsLjYuNmMuMTcu''@;'; put 'put ''Ni0uNDEsMS4zMS0xLjI2LDEuNTVhMi4wNiwyLjA2LDAsMCwxLTEuMjgtLjA1LDEsMSwwLDAsMS0uNi0uNjEuODUuODUsMCwwLDEsMC0uMzJsLTEuNTgtLjE5YTIuMywyLjMsMCwwLDAsLjA2Ljk0QTIuNTYsMi41NiwwLDAsMCw4Ljc1LDE0LjhhMy4zNywzLjM3LDAsMCwwLDEuMzEuMjYsNCw0''@;'; put 'put ''LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxMy40NSwxMS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgPHBhdGggZD0iTTIxLDYuNzhhMi41NiwyLjU2LDAsMCwwLTEuNTItMS42NWwtLjMtLjFMMTguNyw2LjU2bC4xNSwwYTEsMSwwLDAsMSwuNi42''@;'; put 'put ''MWMuMTcuNi0uNDEsMS4zLTEuMjYsMS41NHMtMS43MS0uMDYtMS44OC0uNjVhLjkuOSwwLDAsMSwuMDYtLjU4TDE0Ljg5LDYuOWEyLjQ3LDIuNDcsMCwwLDAtLjEyLDEuNjMsMi44NCwyLjg0LDAsMCwwLDIuODQsMS45MSwzLjU4LDMuNTgsMCwwLDAsMS0uMTVBMywzLDAsMCwwLDIxLDYuNzha''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuXG4gIDxwYXRoIGQ9Ik0zMi4yMywxNC44OWMtMi4xLS41Ni00LjkzLDEuOC02LjM0LjMtMS43MS0xLjgyLDIuMjctNS41MywxLjg2LTguOTItLjMzLTIuNzgtMy41MS00LjA4LTYuNjYtNC4xQTE4LjUsMTgu''@;'; put 'put ''NSwwLDAsMCw3Ljc0LDcuNTljLTYuNjQsNi41OS04LjA3LDE2LTEuMzcsMjIuNDgsNi4yMSw2LDE2LjYxLDQuMjMsMjIuNjctMS40YTE3LjczLDE3LjczLDAsMCwwLDQuMjItNi41NEMzNC4zNCwxOS4yMywzNC40NCwxNS40OSwzMi4yMywxNC44OVpNOS40LDEwLjU3YTIuMjMsMi4yMywwLDAs''@;'; put 'put ''MSwyLjg3LDEuMjEsMi4yMiwyLjIyLDAsMCwxLTEuODEsMi41M0EyLjIyLDIuMjIsMCwwLDEsNy41OSwxMy4xLDIuMjMsMi4yMywwLDAsMSw5LjQsMTAuNTdaTTUuMDcsMjAuODJhMi4yMiwyLjIyLDAsMCwxLDEuODItMi41M0EyLjIyLDIuMjIsMCwwLDEsOS43NSwxOS41LDIuMjMsMi4yMyww''@;'; put 'put ''LDAsMSw3Ljk0LDIyLDIuMjQsMi4yNCwwLDAsMSw1LjA3LDIwLjgyWm03LDguMzNhMi4yMiwyLjIyLDAsMCwxLTIuODctMS4yMUEyLjIzLDIuMjMsMCwwLDEsMTEsMjUuNDFhMi4yMywyLjIzLDAsMCwxLDIuODcsMS4yMUEyLjIyLDIuMjIsMCwwLDEsMTIsMjkuMTVaTTE1LDguMjZhMi4yMywy''@;'; put 'put ''LjIzLDAsMCwxLDEuODEtMi41MywyLjI0LDIuMjQsMCwwLDEsMi44NywxLjIxLDIuMjIsMi4yMiwwLDAsMS0xLjgyLDIuNTNBMi4yMSwyLjIxLDAsMCwxLDE1LDguMjZabTUuODIsMjIuMTlhMi4yMiwyLjIyLDAsMCwxLTIuODctMS4yMSwyLjIzLDIuMjMsMCwwLDEsMS44MS0yLjUzLDIuMjQs''@;'; put 'put ''Mi4yNCwwLDAsMSwyLjg3LDEuMjFBMi4yMiwyLjIyLDAsMCwxLDIwLjc4LDMwLjQ1Wm01LTEwLjQ2YTMuMiwzLjIsMCwwLDEtMS42OSwxLjc2LDMuNTMsMy41MywwLDAsMS0xLjQuMywyLjc4LDIuNzgsMCwwLDEtMi41Ni0xLjUsMi40OSwyLjQ5LDAsMCwxLS4wNy0yLDMuMiwzLjIsMCwwLDEs''@;'; put 'put ''MS42OS0xLjc2LDMsMywwLDAsMSw0LDEuMkEyLjU0LDIuNTQsMCwwLDEsMjUuNzksMjBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksTC5Fc3NlbnRpYWxTaGFwZXM9eyJhZGQtdGV4dCI6TC5DbHJTaGFwZUFkZFRleHQsImFsYXJtLW9mZiI6TC5DbHJTaGFw''@;'; put 'put ''ZUFsYXJtT2ZmLHBpbmJvYXJkOkwuQ2xyU2hhcGVQaW5ib2FyZCxuZXc6TC5DbHJTaGFwZU5ldywiYnViYmxlLWV4Y2xhbWF0aW9uIjpMLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb24sImdyaWQtdmlldyI6TC5DbHJTaGFwZUdyaWRWaWV3LCJjdXJzb3ItYXJyb3ciOkwuQ2xyU2hhcGVDdXJz''@;'; put 'put ''b3JBcnJvdywiY3Vyc29yLWhhbmQiOkwuQ2xyU2hhcGVDdXJzb3JIYW5kLCJjdXJzb3ItaGFuZC1jbGljayI6TC5DbHJTaGFwZUN1cnNvckhhbmRDbGljaywiY3Vyc29yLWhhbmQtZ3JhYiI6TC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiLCJjdXJzb3ItaGFuZC1vcGVuIjpMLkNsclNoYXBlQ3Vy''@;'; put 'put ''c29ySGFuZE9wZW4sImN1cnNvci1tb3ZlIjpMLkNsclNoYXBlQ3Vyc29yTW92ZSwiZmlyc3QtYWlkIjpMLkNsclNoYXBlRmlyc3RBaWQscmVzaXplOkwuQ2xyU2hhcGVSZXNpemUsb2JqZWN0czpMLkNsclNoYXBlT2JqZWN0cyxib29rOkwuQ2xyU2hhcGVCb29rLGFzdGVyaXNrOkwuQ2xyU2hh''@;'; put 'put ''cGVBc3RlcmlzayxidWc6TC5DbHJTaGFwZUJ1ZyxzY2lzc29yczpMLkNsclNoYXBlU2Npc3NvcnMsdGhlcm1vbWV0ZXI6TC5DbHJTaGFwZVRoZXJtb21ldGVyLHBlbmNpbDpMLkNsclNoYXBlUGVuY2lsLG5vdGU6TC5DbHJTaGFwZU5vdGUscmVmcmVzaDpMLkNsclNoYXBlUmVmcmVzaCxzeW5j''@;'; put 'put ''OkwuQ2xyU2hhcGVTeW5jLCJ2aWV3LWxpc3QiOkwuQ2xyU2hhcGVWaWV3TGlzdCwidmlldy1jYXJkcyI6TC5DbHJTaGFwZVZpZXdDYXJkcywidHJlZS12aWV3IjpMLkNsclNoYXBlVHJlZVZpZXcsbGlnaHRidWxiOkwuQ2xyU2hhcGVMaWdodGJ1bGIsZG93bmxvYWQ6TC5DbHJTaGFwZURvd25s''@;'; put 'put ''b2FkLHVwbG9hZDpMLkNsclNoYXBlVXBsb2FkLGxvY2s6TC5DbHJTaGFwZUxvY2ssdW5sb2NrOkwuQ2xyU2hhcGVVbmxvY2ssdXNlcnM6TC5DbHJTaGFwZVVzZXJzLCJwb3Atb3V0IjpMLkNsclNoYXBlUG9wT3V0LGZpbHRlcjpMLkNsclNoYXBlRmlsdGVyLHBpbjpMLkNsclNoYXBlUGluLGZp''@;'; put 'put ''bGU6TC5DbHJTaGFwZUZpbGUscGx1czpMLkNsclNoYXBlUGx1cyxtaW51czpMLkNsclNoYXBlTWludXMsIm1pbnVzLWNpcmNsZSI6TC5DbHJTaGFwZU1pbnVzQ2lyY2xlLCJwbHVzLWNpcmNsZSI6TC5DbHJTaGFwZVBsdXNDaXJjbGUsYmFuOkwuQ2xyU2hhcGVCYW4sInRpbWVzLWNpcmNsZSI6''@;'; put 'put ''TC5DbHJTaGFwZVRpbWVzQ2lyY2xlLHRyYXNoOkwuQ2xyU2hhcGVUcmFzaCxjaXJjbGU6TC5DbHJTaGFwZUNpcmNsZSx0YWc6TC5DbHJTaGFwZVRhZyx0YWdzOkwuQ2xyU2hhcGVUYWdzLGhpc3Rvcnk6TC5DbHJTaGFwZUhpc3RvcnksY2xvY2s6TC5DbHJTaGFwZUNsb2NrLCJhbGFybS1jbG9j''@;'; put 'put ''ayI6TC5DbHJTaGFwZUFsYXJtQ2xvY2ssYXJyb3c6TWUuQ2xyU2hhcGVBcnJvdywiY2lyY2xlLWFycm93IjpMLkNsclNoYXBlQ2lyY2xlQXJyb3csImNoaWxkLWFycm93IjpMLkNsclNoYXBlQ2hpbGRBcnJvdyxjb3B5OkwuQ2xyU2hhcGVDb3B5LGhlbHA6TC5DbHJTaGFwZUhlbHAsbG9naW46''@;'; put 'put ''TC5DbHJTaGFwZUxvZ2luLGxvZ291dDpMLkNsclNoYXBlTG9nb3V0LHByaW50ZXI6TC5DbHJTaGFwZVByaW50ZXIsd29ybGQ6TC5DbHJTaGFwZVdvcmxkLHNsaWRlcjpMLkNsclNoYXBlU2xpZGVyLGNsaXBib2FyZDpMLkNsclNoYXBlQ2xpcGJvYXJkLGZpcmV3YWxsOkwuQ2xyU2hhcGVGaXJl''@;'; put 'put ''d2FsbCxsaXN0OkwuQ2xyU2hhcGVMaXN0LHJlZG86TC5DbHJTaGFwZVJlZG8sdW5kbzpMLkNsclNoYXBlVW5kbyxzY3JvbGw6TC5DbHJTaGFwZVNjcm9sbCwiZmlsZS1zZXR0aW5ncyI6TC5DbHJTaGFwZUZpbGVTZXR0aW5ncywidHdvLXdheS1hcnJvd3MiOkwuQ2xyU2hhcGVUd29XYXlBcnJv''@;'; put 'put ''d3Msc3dpdGNoOkwuQ2xyU2hhcGVTd2l0Y2gsdG9vbHM6TC5DbHJTaGFwZVRvb2xzLCJ3aW5kb3ctY2xvc2UiOkwuQ2xyU2hhcGVXaW5kb3dDbG9zZSwid2luZG93LW1heCI6TC5DbHJTaGFwZVdpbmRvd01heCwid2luZG93LW1pbiI6TC5DbHJTaGFwZVdpbmRvd01pbiwid2luZG93LXJlc3Rv''@;'; put 'put ''cmUiOkwuQ2xyU2hhcGVXaW5kb3dSZXN0b3JlLCJ6b29tLWluIjpMLkNsclNoYXBlWm9vbUluLCJ6b29tLW91dCI6TC5DbHJTaGFwZVpvb21PdXQsa2V5OkwuQ2xyU2hhcGVLZXksbGlicmFyeTpMLkNsclNoYXBlTGlicmFyeSxib2x0OkwuQ2xyU2hhcGVCb2x0LHdyZW5jaDpMLkNsclNoYXBl''@;'; put 'put ''V3JlbmNoLGJ1bGxzZXllOkwuQ2xyU2hhcGVCdWxsc2V5ZSx0YXJnZXQ6TC5DbHJTaGFwZVRhcmdldCxmbGFtZTpMLkNsclNoYXBlRmxhbWUsaG91cmdsYXNzOkwuQ2xyU2hhcGVIb3VyZ2xhc3MsIm5vLWFjY2VzcyI6TC5DbHJTaGFwZU5vQWNjZXNzLG9yZ2FuaXphdGlvbjpMLkNsclNoYXBl''@;'; put 'put ''T3JnYW5pemF0aW9uLGJhbGFuY2U6TC5DbHJTaGFwZUJhbGFuY2UsImlkLWJhZGdlIjpMLkNsclNoYXBlSWRCYWRnZSxyZXBlYXQ6TC5DbHJTaGFwZVJlcGVhdCwiZmlsZS1ncm91cCI6TC5DbHJTaGFwZUZpbGVHcm91cCxwYXBlcmNsaXA6TC5DbHJTaGFwZVBhcGVyY2xpcCxzaHJpbms6TC5D''@;'; put 'put ''bHJTaGFwZVNocmluaywiYWNjZXNzaWJpbGl0eS0xIjpMLkNsclNoYXBlQWNjZXNzaWJpbGl0eTEsImFjY2Vzc2liaWxpdHktMiI6TC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyLCJzb3J0LWJ5IjpMLkNsclNoYXBlU29ydEJ5LCJjb2xsYXBzZS1jYXJkIjpMLkNsclNoYXBlQ29sbGFwc2VDYXJk''@;'; put 'put ''LCJleHBhbmQtY2FyZCI6TC5DbHJTaGFwZUV4cGFuZENhcmQsYnJpZWZjYXNlOkwuQ2xyU2hhcGVCcmllZmNhc2UsImNvbG9yLXBpY2tlciI6TC5DbHJTaGFwZUNvbG9yUGlja2VyLCJjb3B5LXRvLWNsaXBib2FyZCI6TC5DbHJTaGFwZUNvcHlUb0NsaXBib2FyZCwiZmlsdGVyLTIiOkwuQ2xy''@;'; put 'put ''U2hhcGVGaWx0ZXIyLCJkcmFnLWhhbmRsZSI6TC5DbHJTaGFwZURyYWdIYW5kbGUsbW9vbjpMLkNsclNoYXBlTW9vbixzdW46TC5DbHJTaGFwZVN1bix3YW5kOkwuQ2xyU2hhcGVXYW5kLGNsb25lOkwuQ2xyU2hhcGVDbG9uZSxkZXRhaWxzOkwuQ2xyU2hhcGVEZXRhaWxzLCJkcmFnLWhhbmRs''@;'; put 'put ''ZS1jb3JuZXIiOkwuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyLGVyYXNlcjpMLkNsclNoYXBlRXJhc2VyLGxhbmRzY2FwZTpMLkNsclNoYXBlTGFuZHNjYXBlLHBhc3RlOkwuQ2xyU2hhcGVQYXN0ZSxwb3J0cmFpdDpMLkNsclNoYXBlUG9ydHJhaXQsImZpbGUtemlwIjpMLkNsclNoYXBlRmls''@;'; put 'put ''ZVppcCwiZmlsdGVyLW9mZiI6TC5DbHJTaGFwZUZpbHRlck9mZixyZWN5Y2xlOkwuQ2xyU2hhcGVSZWN5Y2xlLHRyZWU6TC5DbHJTaGFwZVRyZWUsZmlzaDpMLkNsclNoYXBlRmlzaCxmb3JtOkwuQ2xyU2hhcGVGb3JtLGZ1ZWw6TC5DbHJTaGFwZUZ1ZWwsc25vd2ZsYWtlOkwuQ2xyU2hhcGVT''@;'; put 'put ''bm93Zmxha2UsdGFibGU6TC5DbHJTaGFwZVRhYmxlLCJkb3QtY2lyY2xlIjpMLkNsclNoYXBlRG90Q2lyY2xlLHZvbHVtZTpMLkNsclNoYXBlVm9sdW1lLGNyb3NzaGFpcnM6TC5DbHJTaGFwZUNyb3NzaGFpcnMsYmV0YTpMLkNsclNoYXBlQmV0YSwiY29sb3ItcGFsZXR0ZSI6TC5DbHJTaGFw''@;'; put 'put ''ZUNvbG9yUGFsZXR0ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJlZGl0IiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnBlbmNpbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywibm90ZS1lZGl0Iiwo''@;'; put 'put ''MCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLm5vdGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Fc3NlbnRpYWxTaGFwZXMsImdyb3VwIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnVzZXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KEwuRXNzZW50aWFsU2hhcGVzLCJkb2N1bWVudCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5maWxlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJhZGQiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Fc3NlbnRpYWxTaGFwZXMu''@;'; put 'put ''cGx1cykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywiY2FuY2VsIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLmJhbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywicmVtb3ZlIiwoMCxCLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzWyJ0aW1lcy1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywic2lnbi1pbiIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5sb2dpbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShMLkVzc2VudGlhbFNoYXBlcywic2lnbi1vdXQiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Fc3NlbnRpYWxTaGFwZXMubG9nb3V0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJsaWdodG5pbmciLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Fc3NlbnRp''@;'; put 'put ''YWxTaGFwZXMuYm9sdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywiZmxvdy1jaGFydCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5vcmdhbml6YXRpb24pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Fc3NlbnRpYWxTaGFwZXMs''@;'; put 'put ''ImFsZXJ0IiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzWyJidWJibGUtZXhjbGFtYXRpb24iXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywicGlubmVkIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnBp''@;'; put 'put ''bmJvYXJkKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJhdHRhY2htZW50IiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnBhcGVyY2xpcCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVu''@;'; put 'put ''dCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS1kb3duIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnNocmluaykpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywicmVzaXplLXVwIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnJlc2l6ZSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3''@;'; put 'put ''aW5kb3cuQ2xhcml0eUljb25zLmFkZChMLkVzc2VudGlhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvbWVkaWEtc2hhcGVzLnRzIjpmdW5jdGlvbihKZSxMLGdlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZToh''@;'; put 'put ''MH0pLEwuTWVkaWFTaGFwZXM9TC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlPUwuQ2xyU2hhcGVNaWNyb3Bob25lPUwuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9TC5DbHJTaGFwZVJlcGxheU9uZT1MLkNsclNoYXBlUmVwbGF5QWxsPUwuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9TC5DbHJTaGFwZU11c2lj''@;'; put 'put ''Tm90ZT1MLkNsclNoYXBlRmlsbVN0cmlwPUwuQ2xyU2hhcGVIZWFkcGhvbmVzPUwuQ2xyU2hhcGVWb2x1bWVNdXRlPUwuQ2xyU2hhcGVWb2x1bWVVcD1MLkNsclNoYXBlVm9sdW1lRG93bj1MLkNsclNoYXBlU2h1ZmZsZT1MLkNsclNoYXBlVmlkZW9DYW1lcmE9TC5DbHJTaGFwZUNhbWVyYT1M''@;'; put 'put ''LkNsclNoYXBlRmFzdEZvcndhcmQ9TC5DbHJTaGFwZVJld2luZD1MLkNsclNoYXBlUG93ZXI9TC5DbHJTaGFwZVN0b3A9TC5DbHJTaGFwZVN0ZXBGb3J3YXJkPUwuQ2xyU2hhcGVQYXVzZT1MLkNsclNoYXBlUGxheT12b2lkIDA7dmFyIEI9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxz''@;'; put 'put ''L3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZVBsYXk9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjA3LDMxLjZBMi4wNywyLjA3LDAsMCwxLDYsMjkuNTNWNi4zMkEyLjA3LDIuMDcsMCwwLDEs''@;'; put 'put ''OSw0LjQ3TDMyLjIxLDE2LjA4YTIuMDcsMi4wNywwLDAsMSwwLDMuN0w5LDMxLjM4QTIuMDYsMi4wNiwwLDAsMSw4LjA3LDMxLjZabTAtMjUuMzRMOCw2LjMyVjI5LjUzbC4xLjA2TDMxLjMxLDE4YS4wNi4wNiwwLDAsMCwwLS4wNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTYuMDgsOC45NCw0LjQ3QTIuMDcsMi4wNywwLDAsMCw2LDYuMzJWMjkuNTNhMi4wNiwyLjA2LDAsMCwwLDMsMS44NUwzMi4xNiwxOS43N2EyLjA3LDIuMDcsMCwwLDAsMC0zLjdaIi8+JyksTC5DbHJTaGFwZVBhdXNl''@;'; put 'put ''PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTIuOTMsMzJINi4wN0EyLjA3LDIuMDcsMCwwLDEsNCwyOS45M1Y2LjA3QTIuMDcsMi4wNywwLDAsMSw2LjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMTUsNi4w''@;'; put 'put ''N1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMTIuOTMsMzJaTTEzLDZINlYzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjkuOTMsMzJIMjMuMDdBMi4wNywyLjA3LDAsMCwxLDIxLDI5LjkzVjYuMDdB''@;'; put 'put ''Mi4wNywyLjA3LDAsMCwxLDIzLjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMzIsNi4wN1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMjkuOTMsMzJaTTMwLDZIMjNWMzBoN1oiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4''@;'; put 'put ''PSIzLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIyLjA3IiByeT0iMi4wNyIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjIwLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIy''@;'; put 'put ''LjA3IiByeT0iMi4wNyIvPicpLEwuQ2xyU2hhcGVTdGVwRm9yd2FyZD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTUsMzIuMjNhMiwyLDAsMCwxLTItMlY1Ljc3QTIsMiwwLDAsMSw2LjE3LDQuMTRMMjMuMjMs''@;'; put 'put ''MTYuMzhhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTcsMzEuODZBMiwyLDAsMCwxLDUsMzIuMjNaTTUsNS43N1YzMC4yM0wyMi4wNywxOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMxLDMySDI4YTIsMiww''@;'; put 'put ''LDAsMS0yLTJWNmEyLDIsMCwwLDEsMi0yaDNhMiwyLDAsMCwxLDIsMlYzMEEyLDIsMCwwLDEsMzEsMzJaTTI4LDZWMzBoM1Y2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik01LDMxLjlhMiwyLDAsMCwxLTItMlY1''@;'; put 'put ''LjQ0QTIsMiwwLDAsMSw2LjEyLDMuODFMMjMuMTgsMTZhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTIsMzEuNTJBMiwyLDAsMCwxLDUsMzEuOVoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiB4PSIyNS45NSIgeT0iMy42NyIg''@;'; put 'put ''d2lkdGg9IjciIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLEwuQ2xyU2hhcGVTdG9wPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMzJINmEyLDIsMCwwLDEtMi0yVjZBMiwyLDAsMCwxLDYsNEgz''@;'; put 'put ''MGEyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMCwzMlpNNiw2VjMwSDMwVjZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iMy45NiIgeT0iNCIgd2lkdGg9IjI3Ljk5IiBoZWlnaHQ9IjI4IiByeD0iMiIgcnk9''@;'; put 'put ''IjIiLz4nKSxMLkNsclNoYXBlUG93ZXI9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMWExLDEsMCwwLDEtMS0xVjRhMSwxLDAsMCwxLDIsMFYyMEExLDEsMCwwLDEsMTgsMjFaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4xNWExNSwxNSwwLDAsMS03LjUyLTI4LDEsMSwwLDAsMSwxLDEuNzMsMTMsMTMsMCwxLDAsMTMsMCwxLDEsMCwxLDEsMS0xLjczLDE1LDE1LDAsMCwxLTcuNTIsMjhaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOCwyMWExLDEsMCwwLDAsMS0xVjRhMSwxLDAsMCwwLTIsMFYyMEExLDEsMCwwLDAsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMi41MSwxNS40SDMwLjQ0YTEzLDEzLDAsMSwxLTE5LTcuNSwxLDEsMCwwLDAtMS0xLjczQTE1LDE1LDAsMSwwLDMzLDE5LjE1LDE0LjksMTQuOSwwLDAsMCwzMi41MSwx''@;'; put 'put ''NS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMjFhMSwxLDAsMCwxLTEt''@;'; put 'put ''MVY0YTEsMSwwLDAsMSwyLDBWMjBBMSwxLDAsMCwxLDE4LDIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVsLS4zMSwwQTEzLDEzLDAsMSwxLDExLjQ4LDcuOWEx''@;'; put 'put ''LDEsMCwwLDAtMS0xLjczLDE1LDE1LDAsMSwwLDIxLjMxLDcuMUE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS4wNiwxNy42OGExLjI4LDEuMjgsMCwwLDEtMS4yOS0xLjI4Vjgu''@;'; put 'put ''NjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMFYxOC40QTEuMjgsMS4yOCwwLDAsMSwxOC4wNiwxOS42OFpNMTgsMjcuNzlBOS44OCw5Ljg4LDAsMCwxLDEyLjE3LDkuODVhMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMs''@;'; put 'put ''NS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS40LDEuNCwwLDAsMSwxLjk0LS4yOUE5Ljg4LDkuODgsMCwwLDEsMTgsMjcuNzlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRoLTZBOS43LDkuNywwLDAsMSwyOCwxNy44OWExMCwxMCwwLDEsMS0xNS44My04LDEuNCwxLjQsMCwwLDEsMS45NC4zMSwxLjM3LDEuMzcsMCwwLDEtLjMxLDEuOTIsNy4xOCw3LjE4LDAsMSwwLDExLjQzLDUuOCw3LjA4LDcuMDgsMCww''@;'; put 'put ''LDAtLjQ1LTIuNDlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0djQuNGExLjI5LDEuMjksMCwwLDEtMi41OCwwVjguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMHYuNzFsMy43Ni02LjUxQTE2LDE2LDAsMSwwLDM0LDE4YTE2LDE2LDAsMCwwLS4yMy0yLjYxWiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjku''@;'; put 'put ''MDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTMuNTctLjlBOS44Myw5LjgzLDAs''@;'; put 'put ''MCwxLDI4LDE3Ljg5YTEwLDEwLDAsMSwxLTE1LjgzLTgsMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS4zOCwxLjM4LDAs''@;'; put 'put ''MCwxLDEuNTItLjQ5LDcuNDUsNy40NSwwLDAsMS0uMy02LjgzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuNzcsOC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwVjE4LjRhMS4yOSwxLjI5LDAsMCwxLTIuNTgsMFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZVJld2luZD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3LjA5LDMxLjU4bC0xNS4zMi0xMmEyLDIsMCwwLDEsMC0zLjE1bDE1LjMyLTEyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkExLjc3LDEuNzcsMCwwLDEsMjAsNnY2LjdMMzAuODMsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJB''@;'; put 'put ''MiwyLDAsMCwxLDM0LDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS43NywxLjc3LDAsMCwxLS44NSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMlpNMzIsMzBsLjA2LTI0TDE4LDE2LjhWNkwzLDE4LDE4LDMwVjE5LjJa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTYuOTIsMzEuNTgsMS42LDE5LjU3YTIsMiwwLDAsMSwwLTMuMTVsMTUuMzItMTJBMS45MywxLjkzLDAsMCwxLDE5LDQuMiwxLjg5LDEuODksMCwwLDEsMjAsNnY2LjdMMzAu''@;'; put 'put ''NjYsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMiwyLDAsMCwxLDMzLjgzLDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS44OSwxLjg5LDAsMCwxLTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJaIi8+Jyks''@;'; put 'put ''TC5DbHJTaGFwZUZhc3RGb3J3YXJkPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuNzcsMzEuOTJhMiwyLDAsMCwxLS44Ni0uMkExLjgxLDEuODEsMCwwLDEsMTYsMjkuOTN2LTYuN0w1LjI0LDMxLjVhMS45''@;'; put 'put ''NCwxLjk0LDAsMCwxLTIuMDYuMjIsMiwyLDAsMCwxLTEuMTEtMS43OXYtMjRBMiwyLDAsMCwxLDMuMTgsNC4xMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42MVY1LjkxYTEuODEsMS44MSwwLDAsMSwuOTEtMS43OUExLjkzLDEuOTMsMCwwLDEsMTksNC4zNGwxNS4zMiwxMmEyLDIs''@;'; put 'put ''MCwwLDEsMCwzLjE1TDE5LDMxLjVBMiwyLDAsMCwxLDE3Ljc3LDMxLjkyWm0wLTEyLjhWMjkuOTNsMTUuMjYtMTItMTUuMzItMTIsLjA2LDEwLjgxTDQsNS45MXYyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNy43''@;'; put 'put ''MSwzMmEyLDIsMCwwLDEtLjg2LS4yQTEuNzcsMS43NywwLDAsMSwxNiwzMHYtNi43TDUuMTcsMzEuNThhMS45NCwxLjk0LDAsMCwxLTIuMDYuMjJBMiwyLDAsMCwxLDIsMzBWNkEyLDIsMCwwLDEsMy4xMSw0LjJhMS45MywxLjkzLDAsMCwxLDIuMDYuMjJMMTYsMTIuNjlWNmExLjc3LDEuNzcs''@;'; put 'put ''MCwwLDEsLjg1LTEuNzksMS45MywxLjkzLDAsMCwxLDIuMDYuMjJsMTUuMzIsMTJhMiwyLDAsMCwxLDAsMy4xNWwtMTUuMzIsMTJBMiwyLDAsMCwxLDE3LjcxLDMyWiIvPicpLEwuQ2xyU2hhcGVDYW1lcmE9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4''@;'; put 'put ''QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhabTAsMjJINFYxMGg4LjY3bDEuNTUtNGg3LjU2bDEuNTUsNEgzMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwxOWE5LDksMCwxLDAsOS05QTksOSwwLDAsMCw5LDE5Wm0xNi40LDBBNy40LDcuNCwwLDEsMSwxOCwxMS42LDcuNDEsNy40MSwwLDAsMSwyNS40LDE5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjM3LDEyLjgzYS44LjgsMCwwLDAtLjgtLjhINi4xN2EuOC44LDAsMCwwLDAsMS42aDIuNEEuOC44LDAsMCwwLDkuMzcsMTIuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjM0LDE5YTUuNTcsNS41NywwLDAsMCwzLjI0LDVsLjg1LTEuMzdhNCw0LDAsMSwxLDQuMTEtNi42MWwuODYtMS4zOEE1LjU2LDUuNTYsMCwwLDAsMTIuMzQsMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwy''@;'; put 'put ''LDAsMCwwLDMyLDhaTTYuMTcsMTMuNjNhLjguOCwwLDAsMSwwLTEuNmgyLjRhLjguOCwwLDAsMSwwLDEuNlpNMTgsMjhhOSw5LDAsMSwxLDktOUE5LDksMCwwLDEsMTgsMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTEuMTEsMTkuMDZhNy4wNyw3LjA3LDAsMCwwLDQuMTEsNi40MWwxLjA5LTEuNzRhNSw1LDAsMSwxLDUuMjItOC4zOWwxLjA5LTEuNzZhNy4wNiw3LjA2LDAsMCwwLTExLjUxLDUuNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksTC5DbHJTaGFwZVZpZGVv''@;'; put 'put ''Q2FtZXJhPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQsMTAuMzRhMi4xMSwyLjExLDAsMCwwLTEuMTYtMS45LDIsMiwwLDAsMC0yLjEzLjE1TDI2LDExLjZWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCww''@;'; put 'put ''LTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjQuNGw0LjY0LDNhMi4wNywyLjA3LDAsMCwwLDIuMi4yQTIuMTEsMi4xMSwwLDAsMCwzNCwyNS42NlpNMzEuOTMsMjUuNzdjLS4wNiwwLS4xMSwwLS4xOS0uMDZMMjQsMjAuNzdWMjhINmEyLDIsMCwwLDEtMi0yVjEwQTIs''@;'; put 'put ''MiwwLDAsMSw2LDhIMjR2Ny4yM2w3LjgtNWEuMTEuMTEsMCwwLDEsLjEzLDAsLjExLjExLDAsMCwxLC4wNy4xMVYyNS42NkEuMTEuMTEsMCwwLDEsMzEuOTMsMjUuNzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIu''@;'; put 'put ''Myw5LjM1LDI2LDEyLjlWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCwwLTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjMuMDhsNi4zLDMuNTVBMS4xLDEuMSwwLDAsMCwzNCwyNS43N1YxMC4yQTEuMSwxLjEsMCwwLDAsMzIuMyw5LjM1WiIvPicpLEwuQ2xyU2hhcGVT''@;'; put 'put ''aHVmZmxlPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjEuNjEsMTFoOC42MmwtMy4zLDMuM2ExLDEsMCwxLDAsMS40MSwxLjQyTDM0LDEwLjA4bC0uNzEtLjcxaDBMMjguMzQsNC40M2ExLDEsMCwwLDAtMS40''@;'; put 'put ''MSwxLjQyTDMwLjExLDlIMjFhMSwxLDAsMCwwLS44Ni41TDE3LjUsMTQuMDlsMS4xNiwyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMS4wNywyNS4wN0gzYTEsMSwwLDAsMCwwLDJoOC42NWExLDEsMCwwLDAs''@;'; put 'put ''Ljg2LS41TDE1LjE4LDIyLDE0LDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yOC4zNCwyMC4xN2ExLDEsMCwwLDAtMS40MSwxLjQybDMuNSwzLjVIMjEuNjFMMTIuNTEsOS41M2ExLDEsMCwwLDAtLjg2LS41''@;'; put 'put ''SDNhMSwxLDAsMSwwLDAsMmg4LjA3bDkuMSwxNS41NWExLDEsMCwwLDAsLjg2LjVIMjkuOWwtMywzYTEsMSwwLDAsMCwxLjQxLDEuNDJsNC45NS00Ljk0aDBsLjcxLS43MVoiLz4nKSxMLkNsclNoYXBlVm9sdW1lRG93bj0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSwwLDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzJhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0yVjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuNDFBMiwyLDAsMCwxLDIwLDZWMzBhMiwyLDAsMCwx''@;'; put 'put ''LTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzJaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuMjhMMTgsMzBWNmwtNy42NSw3LjY4YTEsMSwwLDAsMS0uNzEuM1pNMTgsNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''My40MSwyNS4xMWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczQTguMjEsOC4yMSwwLDAsMSwyMy45NCwyNSwxLDEsMCwwLDEsMjMuNDEsMjUuMTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yIiBkPSJNMTguMzQsMy44Nyw5LDEySDNhMSwxLDAsMCwwLTEsMVYyM2ExLDEsMCwwLDAsMSwxSDguODNsOS41MSw4LjNBMSwxLDAsMCwwLDIwLDMxLjU1VjQuNjJBMSwxLDAsMCwwLDE4LjM0LDMuODdaIi8+JyksTC5DbHJTaGFwZVZvbHVtZVVwPSgwLEIuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSww''@;'; put 'put ''LDAsMSwyMy40MSwyNS4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjIsMzEuMThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCwwLDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQu''@;'; put 'put ''NDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDZhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0y''@;'; put 'put ''VjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuMzlBMiwyLDAsMCwxLDIwLDZ2MjRhMiwyLDAsMCwxLTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzIuMDZaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuM0wxOCwzMC4wNlY2TDEwLjM1LDEzLjdhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjI1YTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzMsOC4yMSw4LjIxLDAsMCwxLC4yNCwxNC4wNkEx''@;'; put 'put ''LDEsMCwwLDEsMjMuNDEsMjUuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjUuNjIsMzEuMThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCwwLDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQu''@;'; put 'put ''NDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xOC4zMyw0LDkuMDcsMTJoLTZhMSwxLDAsMCwwLTEsMXY5LjkyYTEsMSwwLDAsMCwxLDFIOC44''@;'; put 'put ''OGw5LjQ2LDguMjRBMSwxLDAsMCwwLDIwLDMxLjQzVjQuNzJBMSwxLDAsMCwwLDE4LjMzLDRaIi8+JyksTC5DbHJTaGFwZVZvbHVtZU11dGU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zLjYxLDYuNDEsOS4x''@;'; put 'put ''OSwxMkg0YTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwySDkuMTRsNy40MSw3LjQ3QTIsMiwwLDAsMCwxOCwzMmEyLDIsMCwwLDAsLjc2LS4xNUEyLDIsMCwwLDAsMjAsMzBWMjIuNzdsNS44OSw1Ljg5Yy0uMjUuMTUtLjQ5LjI5LS43NS40MmExLDEsMCwwLDAsLjksMS43OSwxNC40LDE0''@;'; put 'put ''LjQsMCwwLDAsMS4zMS0uNzVsMi4yOCwyLjI4TDMxLDMxLDUsNVpNMTgsMzBsLTcuNzMtNy43N0ExLDEsMCwwLDAsOS41NiwyMkg0VjE0SDkuNjRhMSwxLDAsMCwwLC43MS0uM2wuMjYtLjI2TDE4LDIwLjgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC44OSw2LjY5QTEyLjQyLDEyLjQyLDAsMCwxLDI5LDI2LjFsMS40MiwxLjQyQTE0LjQyLDE0LjQyLDAsMCwwLDI1Ljc2LDQuODhhMSwxLDAsMSwwLS44NywxLjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcsNi4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjI0LDMuNzFMMjYsMjMuMTNBOC4xNSw4LjE1LDAsMCwwLDI3LjgsMThhOC4yOCw4LjI4LDAsMCwwLTQuMS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDZ2OS4xNWwyLDJWNmEyLDIsMCwwLDAtMy40Mi0xLjQxTDEyLDkuMTdsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgZD0iTTI0Ljg3LDYuNjlBMTIuNDIsMTIuNDIsMCwwLDEsMjguNzUsMjYuM2wxLjQyLDEuNDJBMTQuNDMsMTQuNDMsMCwwLDAsMjUuNzQsNC44OGExLDEsMCwwLDAtLjg3LDEuOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTIiIGQ9Ik0yNy4zLDI3LjY3aDBsLTMuODQtMy44NC0uNTctLjU3aDBMNC42Myw1LDMuMjEsNi40MSw4LjgsMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEsMSwwLDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAsMzEuNTVWMjMuMmw1LjU5LDUuNTljLS4xNy4xLS4z''@;'; put 'put ''NC4yLS41MS4yOWExLDEsMCwwLDAsLjksMS43OWMuMzctLjE5LjcyLS40LDEuMDgtLjYybDIuMTQsMi4xNEwzMC42MSwzMWwtMy4yNS0zLjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcs''@;'; put 'put ''Ni4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjQyLDMuOTJsMS40MiwxLjQyYTguMTYsOC4xNiwwLDAsMCwyLTUuMzQsOC4yOCw4LjI4LDAsMCwwLTQuMS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC00IiBkPSJNMjAsNC42MmExLDEsMCwwLDAtMS42Ni0uNzVsLTYuNDIsNS42TDIwLDE3LjU0WiIvPicpLEwuQ2xyU2hhcGVIZWFkcGhvbmVzPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJN''@;'; put 'put ''MTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOS4yQTIuNzQsMi43NCwwLDAsMCwxMiwyOC4zM1YyMS42N0EyLjc0LDIuNzQsMCwwLDAsOS4yLDE5SDZWMTcuNUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3LDEyLjI3LDAsMCwxLDMwLDE3LjVWMTlIMjYuOEEyLjc0LDIuNzQs''@;'; put 'put ''MCwwLDAsMjQsMjEuNjd2Ni42N0EyLjc0LDIuNzQsMCwwLDAsMjYuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaTTkuMiwyMWEuNzUuNzUsMCwwLDEsLjguNjd2Ni42N2EuNzUuNzUsMCwwLDEtLjguNjdINlYyMVpNMjYsMjguMzNWMjEuNjdhLjc1Ljc1LDAsMCwxLC44LS42''@;'; put 'put ''N0gzMHY4SDI2LjhBLjc1Ljc1LDAsMCwxLDI2LDI4LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDNBMTQuMjcsMTQuMjcsMCwwLDAsNCwxNy41VjMxSDguMkExLjc0LDEuNzQsMCwwLDAsMTAsMjkuMzNWMjIu''@;'; put 'put ''NjdBMS43NCwxLjc0LDAsMCwwLDguMiwyMUg2VjE3LjVBMTIuMjcsMTIuMjcsMCwwLDEsMTgsNSwxMi4yNywxMi4yNywwLDAsMSwzMCwxNy41VjIxSDI3LjhBMS43NCwxLjc0LDAsMCwwLDI2LDIyLjY3djYuNjdBMS43NCwxLjc0LDAsMCwwLDI3LjgsMzFIMzJWMTcuNUExNC4yNywxNC4yNyww''@;'; put 'put ''LDAsMCwxOCwzWiIvPicpLEwuQ2xyU2hhcGVGaWxtU3RyaXA9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNkEy''@;'; put 'put ''LDIsMCwwLDAsMzAsNFptMCwyNkg2VjZIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE0LjYsMjMuMDdhMS4yOSwxLjI5LDAsMCwwLDEuMjQuMDlsOC43My00YTEuMywxLjMsMCwwLDAsMC0yLjM3aDBsLTgu''@;'; put 'put ''NzMtNEExLjMsMS4zLDAsMCwwLDE0LDE0djhBMS4yOSwxLjI5LDAsMCwwLDE0LjYsMjMuMDdabTEtOC42TDIzLjMxLDE4LDE1LjYsMjEuNTFaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iOCIgeT0iNyIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE0IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgeD0iMjAiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSIyNiIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjgiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iMTQiIHk9IjI2IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjAiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMTAiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY2''@;'; put 'put ''QTIsMiwwLDAsMCwzMCw0Wk0yMCw3aDJ2M0gyMFpNMTQsN2gydjNIMTRaTTEwLDI5SDhWMjZoMlptMC0xOUg4VjdoMlptNiwxOUgxNFYyNmgyWm02LDBIMjBWMjZoMlptMy4xNi0xMC4xNkwxNS4zOSwyMy4yQTEsMSwwLDAsMSwxNCwyMi4yOFYxMy41N2ExLDEsMCwwLDEsMS40MS0uOTFMMjUu''@;'; put 'put ''MTYsMTdBMSwxLDAsMCwxLDI1LjE2LDE4Ljg0Wk0yOCwyOUgyNlYyNmgyWm0wLTE5SDI2VjdoMloiLz4nKSxMLkNsclNoYXBlTXVzaWNOb3RlPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IGQ9Ik0zMS42OCw2LjE2Yy0xLjkyLTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjM0YTUuODksNS44OSwwLDAsMC0uODItLjU2LDguMzMsOC4zMywwLDAsMC02LjUzLS40MUM3LjU3LDIyLjcsNC45MiwyNi41LDUuNzgsMjkuODRhNS4zMyw1LjMzLDAsMCwwLDIuNjYsMy4zMiw3LjQ4''@;'; put 'put ''LDcuNDgsMCwwLDAsMy42MS44OEE5LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTdjMy42Ny0xLjE4LDYuMTctNC4zMyw2LjA2LTcuMzZWOS4zNGEyOS4xNCwyOS4xNCwwLDAsMSw2LjU1LDEuNDMsMSwxLDAsMSwwLC43Mi0xLjg3QTMxLjM3LDMxLjM3LDAsMCwwLDIxLDcuMzNWNC4xN2MzLjMzLjM2''@;'; put 'put ''LDgsMS4zOCw4LjkyLDMsMiwzLjQxLTIuMzMsNy4zNi0yLjM3LDcuNGExLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNlpNMTQuMzUsMzEuNjdhNi40Myw2LjQzLDAsMCwxLTUtLjI2LDMuMzEsMy4zMSwwLDAsMS0xLjY5LTIuMDdjLS42LTIuMzMsMS40''@;'; put 'put ''NS01LjA1LDQuNTgtNi4wNmE3LjUyLDcuNTIsMCwwLDEsMi4zLS4zNyw1LjUyLDUuNTIsMCwwLDEsMi42NS42MiwzLjMxLDMuMzEsMCwwLDEsMS42OSwyLjA3QzE5LjU0LDI3Ljk0LDE3LjQ5LDMwLjY2LDE0LjM1LDMxLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMSJcbiAgICAgICAgICAgICAgICBkPSJNMzEuNjgsNi4xNmMtMS45Mi0zLjMtMTAuNi00LTExLjU4LTQuMDlMMTksMlYyMi4yOWE1Ljg4LDUuODgsMCwwLDAtLjgxLS41NSw4LjMzLDguMzMsMCwwLDAtNi41My0uNDFjLTQuMTIsMS4zMy02Ljc3LDUuMTMt''@;'; put 'put ''NS45MSw4LjQ3YTUuMzMsNS4zMywwLDAsMCwyLjY2LDMuMzIsNy40OCw3LjQ4LDAsMCwwLDMuNjEuODhBOS41NCw5LjU0LDAsMCwwLDE1LDMzLjUyYzMuNy0xLjE5LDYuMi00LjM3LDYuMDYtNy40MiwwLDAsMCwwLDAsMFY4LjQ5YzEsLjEyLDIuMzcuMzMsMy44Mi42NGExMS4xNywxMS4xNyww''@;'; put 'put ''LDAsMSw0LjA2LDEuNDZjMSwuNjYuMzgsMS45LjMzLDJhMTEuOCwxMS44LDAsMCwxLTEuNjYsMiwxLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNloiLz4nKSxMLkNsclNoYXBlSW1hZ2VHYWxsZXJ5PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''Mi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTMyLDMwSDRWMTJIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOC41NiwxOS40NWEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjU2LDE5LjQ1Wm0wLTQuNkExLjYsMS42LDAsMSwxLDcsMTYuNDUsMS42LDEuNiwwLDAsMSw4LjU2LDE0Ljg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuOSwyOGw2LTYsMy4xOCwzLjE4TDE0LjI2LDI4aDJsNy40Ni03LjQ2TDMwLDI2Ljc3di0yTDI0LjIsMTlhLjcxLjcxLDAsMCwwLTEsMGwtNS4xNiw1LjE2TDE0LjM3LDIwLjVhLjcxLjcxLDAsMCwwLTEsMEw1LjkyLDI4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwx''@;'; put 'put ''LDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwx''@;'; put 'put ''MS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk04LjU2LDEzLjQ1YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguNTYsMTMuNDVaTTMwLDI4aC0yNGw3LjQ2LTcuNDdh''@;'; put 'put ''LjcxLjcxLDAsMCwxLDEsMGwzLjY4LDMuNjhMMjMuMjEsMTlhLjcxLjcxLDAsMCwxLDEsMEwzMCwyNC43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZVJlcGxheUFsbD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNDYsMjYu''@;'; put 'put ''MjJhMS40LDEuNCwwLDAsMCwxLS40Mmw1LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLC40Mi0xLDEuNDYsMS40NiwwLDAsMC0uNDItMWwtNS41OS01LjU2YTEuNDMsMS40MywwLDAsMC0yLjQ0LDFWMjQuNzlhMS40MSwxLjQxLDAsMCwwLC44OCwxLjMyQTEuNTQsMS41NCwwLDAsMCwxNy40Niwy''@;'; put 'put ''Ni4yMlptLjE2LTEyLjE2LDUuMTksNS4xNi01LjE5LDUuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcu''@;'; put 'put ''MjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiAvPicpLEwuQ2xyU2hhcGVSZXBsYXlPbmU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDI3LjI3YTEsMSwwLDAsMCwxLTFWMTRhMSwxLDAsMCwwLTEtMUgxOWEzLjgsMy44LDAsMCwwLTEuMS4yM2wtMiwuNjJhLjkyLjkyLDAsMCwwLS43Mi44Ni44OC44OCwwLDAsMCwuODgu''@;'; put 'put ''ODYsMS40NiwxLjQ2LDAsMCwwLC40My0uMDhMMTgsMTUuMDd2MTEuMkExLDEsMCwwLDAsMTksMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2''@;'; put 'put ''LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcuMjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwx''@;'; put 'put ''Ljg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgw''@;'; put 'put ''VjRoMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTEyLjgyLDI2Ljc5YTEuNzQsMS43NCwwLDAsMCwuOTMuMjgsMS42OCwxLjY4LDAsMCwwLC42OS0uMTVsOS43Ny00LjM2YTEuNjksMS42OSwwLDAsMCwwLTMuMUwxNC40NCwxNS4xYTEuNywxLjcsMCwwLDAtMi4zOSwxLjU1djguNzJBMS43LDEuNywwLDAsMCwxMi44MiwyNi43OVptLjYz''@;'; put 'put ''LTEwLjE0YS4yOS4yOSwwLDAsMSwuMTQtLjI1LjMuMywwLDAsMSwuMTYsMCwuMjcuMjcsMCwwLDEsLjEyLDBsOS43Nyw0LjM1YS4yOS4yOSwwLDAsMSwuMTguMjguMjguMjgsMCwwLDEtLjE4LjI3bC05Ljc3LDQuMzZhLjI4LjI4LDAsMCwxLS4yOCwwLC4zMS4zMSwwLDAsMS0uMTQtLjI1WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgs''@;'; put 'put ''MS44OCwwLDAsMCwzMi4xMiwxMFpNMjQuMTgsMjEuODNsLTkuNzcsNC4zNkExLDEsMCwwLDEsMTMsMjUuMjhWMTYuNTZhMSwxLDAsMCwxLDEuNDEtLjkxTDI0LjE4LDIwQTEsMSwwLDAsMSwyNC4xOCwyMS44M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBh''@;'; put 'put ''dGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZU1pY3JvcGhvbmU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDI0YzMuOSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywzLjEtNyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiBN''@;'; put 'put ''MTMsOWMwLTIuOCwyLjItNSw1LTVzNSwyLjIsNSw1djhcblx0XHRjMCwyLjgtMi4yLDUtNSw1cy01LTIuMi01LTVWOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDUuNS00LjUsMTAtMTAsMTBTOCwyMi41LDgsMTdI''@;'; put 'put ''NmMwLDYuMyw0LjgsMTEuNCwxMSwxMS45VjMyaC0zYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2LTMuMUMyNS4yLDI4LjQsMzAsMjMuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiAvPjxwYXRoIGQ9Ik0xOCwyNGMzLjksMCw3LTMuMSw3LTdWOWMwLTMuOS0zLjEtNy03LTdzLTcsMy4xLTcsN3Y4QzExLDIwLjksMTQuMSwyNCwxOCwyNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwx''@;'; put 'put ''MC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDExLDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwyMy4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlTWljcm9waG9uZU11dGU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLDE3aC0yYzAsMS44LTAuNSwzLjUtMS40LDVsMS41LDEuNUMyOS4zLDIxLjUsMjkuOSwxOS4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDRjMi44LDAsNSwyLjIsNSw1djhjMCwwLjQtMC4xLDAuOC0wLjIsMS4ybDEuNiwxLjZjMC40LTAuOSwwLjYtMS44LDAuNi0yLjhWOWMwLTMuOS0zLjItNy03LjEtNi45XG5cdFx0Yy0yLjksMC01LjYsMS45LTYuNSw0LjdMMTMs''@;'; put 'put ''OC4zQzEzLjUsNS45LDE1LjYsNC4yLDE4LDR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2MxLjMsMCwyLjUtMC4zLDMu''@;'; put 'put ''Ni0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRz''@;'; put 'put ''LTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IE0xMy44LDE5LjdDMTMuMywxOC45LDEzLDE4LDEzLDE3di0yLjZsNy4xLDcuMUMxNy45LDIyLjUsMTUuMiwyMS44LDEzLjgsMTkuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDEuOC0wLjUsMy41LTEuNCw1bDEuNSwxLjVDMjkuMywyMS41LDI5LjksMTkuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTI1LDE3VjljMC0zLjktMy4yLTctNy4xLTYuOWMtMi45LDAt''@;'; put 'put ''NS42LDEuOS02LjUsNC43bDEzLDEzQzI0LjgsMTguOSwyNSwxNy45LDI1LDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2Mx''@;'; put 'put ''LjMsMCwyLjUtMC4zLDMuNi0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwx''@;'; put 'put ''LTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuTWVkaWFTaGFwZXM9e3BsYXk6TC5DbHJTaGFwZVBsYXkscGF1c2U6TC5DbHJTaGFwZVBhdXNlLCJz''@;'; put 'put ''dGVwLWZvcndhcmQiOkwuQ2xyU2hhcGVTdGVwRm9yd2FyZCxzdG9wOkwuQ2xyU2hhcGVTdG9wLHBvd2VyOkwuQ2xyU2hhcGVQb3dlcixyZXdpbmQ6TC5DbHJTaGFwZVJld2luZCwiZmFzdC1mb3J3YXJkIjpMLkNsclNoYXBlRmFzdEZvcndhcmQsY2FtZXJhOkwuQ2xyU2hhcGVDYW1lcmEsInZp''@;'; put 'put ''ZGVvLWNhbWVyYSI6TC5DbHJTaGFwZVZpZGVvQ2FtZXJhLHNodWZmbGU6TC5DbHJTaGFwZVNodWZmbGUsInZvbHVtZS11cCI6TC5DbHJTaGFwZVZvbHVtZVVwLCJ2b2x1bWUtZG93biI6TC5DbHJTaGFwZVZvbHVtZURvd24sInZvbHVtZS1tdXRlIjpMLkNsclNoYXBlVm9sdW1lTXV0ZSxoZWFk''@;'; put 'put ''cGhvbmVzOkwuQ2xyU2hhcGVIZWFkcGhvbmVzLCJmaWxtLXN0cmlwIjpMLkNsclNoYXBlRmlsbVN0cmlwLCJtdXNpYy1ub3RlIjpMLkNsclNoYXBlTXVzaWNOb3RlLCJpbWFnZS1nYWxsZXJ5IjpMLkNsclNoYXBlSW1hZ2VHYWxsZXJ5LCJyZXBsYXktYWxsIjpMLkNsclNoYXBlUmVwbGF5QWxs''@;'; put 'put ''LCJyZXBsYXktb25lIjpMLkNsclNoYXBlUmVwbGF5T25lLCJ2aWRlby1nYWxsZXJ5IjpMLkNsclNoYXBlVmlkZW9HYWxsZXJ5LG1pY3JvcGhvbmU6TC5DbHJTaGFwZU1pY3JvcGhvbmUsIm1pY3JvcGhvbmUtbXV0ZSI6TC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlfSwidW5kZWZpbmVkIiE9dHlw''@;'; put 'put ''ZW9mIHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTC5NZWRpYVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvc29jaWFsLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLlNvY2lhbFNoYXBlcz1MLkNsclNoYXBlSGFzaHRhZz1MLkNsclNoYXBlQ3Jvd249TC5DbHJTaGFwZVRodW1ic0Rvd249TC5DbHJTaGFwZVRodW1ic1VwPUwuQ2xyU2hhcGVTYWRGYWNlPUwuQ2xy''@;'; put 'put ''U2hhcGVOZXV0cmFsRmFjZT1MLkNsclNoYXBlSGFwcHlGYWNlPUwuQ2xyU2hhcGVQaWN0dXJlPUwuQ2xyU2hhcGVDaGF0QnViYmxlPUwuQ2xyU2hhcGVUYWxrQnViYmxlcz1MLkNsclNoYXBlSGVhcnRCcm9rZW49TC5DbHJTaGFwZUhlYXJ0PUwuQ2xyU2hhcGVJbmJveD1MLkNsclNoYXBlRmxh''@;'; put 'put ''Zz1MLkNsclNoYXBlVGFza3M9TC5DbHJTaGFwZUVudmVsb3BlPUwuQ2xyU2hhcGVCb29rbWFyaz1MLkNsclNoYXBlSGFsZlN0YXI9TC5DbHJTaGFwZVN0YXI9TC5DbHJTaGFwZVNoYXJlPXZvaWQgMDt2YXIgQj1nZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25m''@;'; put 'put ''aWcudHMiKSxFPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLE1lPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKTtMLkNsclNoYXBlU2hhcmU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNs''@;'; put 'put ''MTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVptMC0yMGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSwyNy41Myw0Wk03LDIxYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDcsMjFaTTI3LjUzLDMyYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDI3LjUzLDMy''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDct''@;'; put 'put ''MS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVoiLz4nKSxMLkNsclNoYXBlU3Rhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTI3LjE5LDM0YTIuMjIsMi4yMiwwLDAsMS0xLjI0LS4zOGwtNy40Ni01YS4yMi4yMiwwLDAsMC0uMjUsMGwtNy40Niw1QTIuMjIsMi4yMiwwLDAsMSw3LjQsMzEuMjFsMi40NS04LjY0YS4yMy4yMywwLDAsMC0uMDgtLjI0TDIuNzEsMTYuNzhhMi4yMiwyLjIyLDAsMCwxLDEu''@;'; put 'put ''MjktNGw5LS4zNGEuMjMuMjMsMCwwLDAsLjItLjE1bDMuMS04LjQzYTIuMjIsMi4yMiwwLDAsMSw0LjE3LDBsMy4xLDguNDNhLjIzLjIzLDAsMCwwLC4yLjE1bDksLjM0YTIuMjIsMi4yMiwwLDAsMSwxLjI5LDRMMjcsMjIuMzNhLjIyLjIyLDAsMCwwLS4wOC4yNGwyLjQ1LDguNjRBMi4yMywy''@;'; put 'put ''LjIzLDAsMCwxLDI3LjE5LDM0Wm0tOC44Mi03LjQyQTIuMjEsMi4yMSwwLDAsMSwxOS42LDI3bDcuNDYsNWEuMjIuMjIsMCwwLDAsLjM0LS4yNWwtMi40NS04LjY0YTIuMjEsMi4yMSwwLDAsMSwuNzctMi4zNWw3LjA2LTUuNTVhLjIyLjIyLDAsMCwwLS4xMy0uNGwtOS0uMzRhMi4yMiwyLjIy''@;'; put 'put ''LDAsMCwxLTItMS40NmwtMy4xLTguNDNhLjIyLjIyLDAsMCwwLS40MiwwTDE1LjA2LDEzYTIuMjIsMi4yMiwwLDAsMS0yLDEuNDZsLTksLjM0YS4yMi4yMiwwLDAsMC0uMTMuNEwxMSwyMC43NmEyLjIyLDIuMjIsMCwwLDEsLjc3LDIuMzVMOS4zMywzMS43NWEuMjEuMjEsMCwwLDAsLjA4LjI0''@;'; put 'put ''LjIuMiwwLDAsMCwuMjYsMGw3LjQ2LTVBMi4yMiwyLjIyLDAsMCwxLDE4LjM2LDI2LjYyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMu''@;'; put 'put ''MjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEtLjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAs''@;'; put 'put ''My4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIsMCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0WiIvPicpLEwuQ2xyU2hhcGVIYWxmU3Rhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAsMC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0u''@;'; put 'put ''Mi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIyLjIyLDAsMCwxLC4wOC4yNEw3LjM1LDMxLjIxQTIuMjMsMi4yMywwLDAsMCw5LjQ5LDM0YTIuMjIsMi4yMiwwLDAsMCwxLjI0LS4zOGw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIyLDIu''@;'; put 'put ''MjIsMCwwLDAsMy4zOC0yLjQ1bC0yLjQ1LTguNjRhLjIzLjIzLDAsMCwxLC4wOC0uMjRaTTE4LjMzLDI2LjYyaDBhMi4yMSwyLjIxLDAsMCwwLTEuMjQuMzhMOS42MiwzMmEuMjIuMjIsMCwwLDEtLjM0LS4yNWwyLjQ1LTguNjRBMi4yMSwyLjIxLDAsMCwwLDExLDIwLjc2TDMuOSwxNS4yMWEu''@;'; put 'put ''MjIuMjIsMCwwLDEsLjEzLS40bDktLjM0QTIuMjIsMi4yMiwwLDAsMCwxNSwxM2wzLjEtOC40M2EuMi4yLDAsMCwxLC4yMS0uMTVoMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIy''@;'; put 'put ''LDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcsMGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41NWEuMjMuMjMsMCwwLDEsLjA4LjI0TDcu''@;'; put 'put ''MzUsMzEuMjFhMi4yMiwyLjIyLDAsMCwwLDMuMzgsMi40NWw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIsMi4yLDAsMCwwLDIuNTUsMCwyLjIsMi4yLDAsMCwwLC44My0yLjRsLTIuNDUtOC42NGEuMjIuMjIsMCwwLDEsLjA4LS4yNFpNMjQuOSwyMy4xMWwyLjQ1LDguNjRB''@;'; put 'put ''LjIyLjIyLDAsMCwxLDI3LDMybC03LjQ2LTVhMi4yMSwyLjIxLDAsMCwwLTEuMjQtLjM4aDBWNC40NGgwYS4yLjIsMCwwLDEsLjIxLjE1TDIxLjYyLDEzYTIuMjIsMi4yMiwwLDAsMCwyLDEuNDZsOSwuMzRhLjIyLjIyLDAsMCwxLC4xMy40bC03LjA2LDUuNTVBMi4yMSwyLjIxLDAsMCwwLDI0''@;'; put 'put ''LjksMjMuMTFaIi8+JyksTC5DbHJTaGFwZUJvb2ttYXJrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjYsMzRhMiwyLDAsMCwxLTEuNDEtLjU4TDE4LDI2LjgybC02LjU0LDYuNTJBMiwyLDAsMCwxLDgsMzEu''@;'; put 'put ''OTNWNGEyLDIsMCwwLDEsMi0ySDI2YTIsMiwwLDAsMSwyLDJWMzJhMiwyLDAsMCwxLTIsMlptMC0yaDBWNEgxMFYzMS45M0wxOCwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMkgxMEEyLDIsMCwwLDAs''@;'; put 'put ''OCw0VjMxLjkzYTIsMiwwLDAsMCwzLjQyLDEuNDFsNi41NC02LjUyLDYuNjMsNi42QTIsMiwwLDAsMCwyOCwzMlY0QTIsMiwwLDAsMCwyNiwyWiIvPicpLEwuQ2xyU2hhcGVFbnZlbG9wZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0zMC40NiwyOEg1LjY2bDctNy4yNC0xLjQ0LTEuMzlMNCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5YTIsMiwwLDAsMCwyLjgyLDBMMzIsOS4y''@;'; put 'put ''MXYxNy41bC03LjM2LTcuMzYtMS40MSwxLjQxWk01LjMxLDhIMzAuMzhMMTcuODQsMjAuNDdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMDhWMjYuNzFsLTcuMzYt''@;'; put 'put ''Ny4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcuMjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEyLDIsMCwwLDAsMi44MiwwbDguODMtOC43OGE3LjQ0LDcuNDQsMCwwLDEtMi0uODVsLTguMjYsOC4yMUw1LjMxLDhIMjIuODFhNy40OSw3LjQ5LDAsMCwxLS4zMS0y''@;'; put 'put ''SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMkE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMDhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjUuODYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjI2SDMyVjI2LjcxbC03LjM2LTcuMzYtMS40''@;'; put 'put ''MSwxLjQxTDMwLjQ2LDI4SDUuNjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCwwLDIuODIsMGw2LjY2LTYuNjNIMjMuMDhsLTUuMjQsNS4yMUw1LjMxLDhIMjAuMDZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTUuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkx''@;'; put 'put ''SDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zMyw2YTIsMiwwLDAsMC0uNDEsMGgtMjhhMiwy''@;'; put 'put ''LDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODEsNy4zOSwxOS4yNSwyMS44OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIs''@;'; put 'put ''MCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzMuODEsNy4zOVpNNS4zLDI4SDMuOTFWMjYuNTdsNy4yNy03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEuNDEtMS40MSw3LjI3LDcuMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNiwxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI5bC04LjcxLDguNjhhMiwyLDAsMCwxLTIuODIsMEwyLDcuNWEyLDIsMCwwLDAtLjA3LjVWMjhhMiwyLDAsMCwwLDIsMmgyOGEyLDIsMCwwLDAsMi0yVjEyLjM5QTcu''@;'; put 'put ''NDUsNy40NSwwLDAsMSwzMCwxMy41Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSwwSDMwLjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjUuNzdsLTYu''@;'; put 'put ''NTIsNi40OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWMTUuMzhaTTUuMywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwxLjQxLDEuNDFabTI2LjYxLDBIMzAuNTFsLTcuMjktNy4yMywxLjQxLTEuNDEsNy4y''@;'; put 'put ''Nyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yMi45NCwxNS40aC0uN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwx''@;'; put 'put ''Ny44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksTC5DbHJTaGFwZVRhc2tzPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuMjksMzRINi43''@;'; put 'put ''MUExLjcsMS43LDAsMCwxLDUsMzIuMzFWNi42OUExLjc1LDEuNzUsMCwwLDEsNyw1SDlWN0g3VjMySDI5VjdIMjdWNWgyLjI1QTEuNywxLjcsMCwwLDEsMzEsNi42OVYzMi4zMUExLjcsMS43LDAsMCwxLDI5LjI5LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuNjYsMjUuNzYsMTEuMywyMC40QTEsMSwwLDAsMSwxMi43MiwxOWwzLjk0LDMuOTQsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNiwxMUgxMFY3LjMzQTIuMzQsMi4zNCwwLDAsMSwxMi4zMyw1aDEuNzlhNCw0LDAsMCwxLDcuNzUsMGgxLjc5QTIuMzQsMi4zNCwwLDAsMSwyNiw3LjMzWk0xMiw5SDI0VjcuMzNBLjMzLjMzLDAsMCwwLDIzLjY3LDdIMjBWNmEyLDIsMCwwLDAtNCww''@;'; put 'put ''VjdIMTIuMzNhLjMzLjMzLDAsMCwwLS4zMy4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LDkuODksMTkuNTYsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3''@;'; put 'put ''SDE2VjZhMiwyLDAsMCwxLDQsMFY3aC43MWwxLjE2LTJhNCw0LDAsMCwwLTcuNzQsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMWg4LjY0QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjQuMTksMTUuNGwtNy41Myw3LjUzTDEyLjcyLDE5QTEsMSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1LjcxYTEsMSwwLDAsMCwuMi0uMzFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNS40VjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjE1LjRaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMi43MiwxOUExLDEsMCwwLDAsMTEuMywy''@;'; put 'put ''MC40bDUuMzYsNS4zNkwyNi43MSwxNS43MWExLDEsMCwwLDAtMS40MS0xLjQxbC04LjY0LDguNjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMlY3LjMzQS4z''@;'; put 'put ''My4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNC40MkE3LjUsNy41LDAsMCwxLDIz''@;'; put 'put ''LjEzLDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCwwLDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIu''@;'; put 'put ''MzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjkuMjksNC45NWgtNy4yYTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAs''@;'; put 'put ''NSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWNi42NEExLjcsMS43LDAsMCwwLDI5LjI5LDQuOTVabS0xOCwzYTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAs''@;'; put 'put ''MSwxLDFWOS44SDExLjI1Wm0xNC41Miw5LjIzLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDcuMTQtNy4xNGExLjQsMS40LDAsMSwxLDIsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjUuODgsMTUuNGExLjM4LDEuMzgsMCwwLDEtLjExLDEuODFsLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDctN0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwwLS4wOUgxMS4yNVY4YTEsMSww''@;'; put 'put ''LDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2guNDJMMjIsNC43NmE0LjMsNC4zLDAsMCwwLTguMDkuMTlIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTUu''@;'; put 'put ''NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02LjQ2''@;'; put 'put ''LTMuN0gxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gyLjI2YTcuNTMsNy41MywwLDAsMS0uMDctMSw3LjUzLDcuNTMsMCwwLDEsLjA4LTEuMDVoLS41YTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0''@;'; put 'put ''VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVabS00LjIzLDMuNzEtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy4xNC03LjE0YTEuNCwx''@;'; put 'put ''LjQsMCwxLDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxMLkNsclNoYXBlRmxhZz0oMCxFLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMzRhMSwxLDAsMCwxLTEtMVYzQTEsMSwwLDAsMSw3LDNWMzNBMSwxLDAsMCwxLDYsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiIGQ9Ik0zMC41NSwzLjgyYTEsMSwwLDAsMC0xLDAsMTQuOSwxNC45LDAsMCwxLTYuMTMsMS4xNiwxMy4xMSwxMy4xMSwwLDAsMS01LjE4LTEuNDksMTIuNzgsMTIuNzgsMCwwLDAtNS0xLjQ1QTEwLjg2LDEwLjg2LDAsMCwwLDksMi44NVY1LjA4QTguOCw4LjgsMCwwLDEs''@;'; put 'put ''MTMuMjUsNGExMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjZBMTguNzUsMTguNzUsMCwwLDAsMjksNi4xMlYxOC45NWExNi4xNiwxNi4xNiwwLDAsMS01LjU4LjkzLDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwxMi43OCwxMi43OCwwLDAsMC01''@;'; put 'put ''LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwxNy43OVYyMGE4LjgsOC44LDAsMCwxLDQuMjUtMS4wOCwxMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjYsMTYuNzksMTYuNzksMCwwLDAsNy0xLjM3LDEsMSwwLDAsMCwuNTUtLjg5VjQuNjdBMSwxLDAs''@;'; put 'put ''MCwwLDMwLjU1LDMuODJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUuOTIsMmExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsNS45MiwyWiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC41LDMuODJhMSwxLDAsMCwwLTEsMCwxNC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OUExMi43OCwxMi43OCwwLDAsMCwxMy4yLDIsMTAuODYsMTAuODYsMCww''@;'; put 'put ''LDAsOSwyLjg1VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNSwzLjgyWiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVJbmJveD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMjMsMTMuMDlhMSwxLDAsMCwwLDAsMS40MUwxOCwyMC4zbDUuNzktNS43OWExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDE2LjQ3VjJBMSwxLDAsMCwwLDE4LDFhMSwxLDAsMCwwLTEsMXYxNC41bC0zLjM4LTMuMzhB''@;'; put 'put ''MSwxLDAsMCwwLDEyLjIzLDEzLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41LDVIMjJWN2g3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdWN2g3VjVINi41''@;'; put 'put ''QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjYuNUExLjUsMS41LDAsMCwwLDI5LjUsNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQxTDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4z''@;'; put 'put ''OEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YyMUgyMy42MWwtLjEuODlhNS40Miw1LjQy''@;'; put 'put ''LDAsMCwxLTEwLjc3LDBsLS4xLS44OUg3VjdoN1Y1SDYuNUExLjUsMS41LDAsMCwwLDUsNi41djI1QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAs''@;'; put 'put ''MCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLEwuQ2xyU2hhcGVIZWFydD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzIuNDNhMSwxLDAsMCwxLS42MS0uMjFDMTEuODMsMjcuOSw4LDI0LjE4LDUuMzIsMjAuNTEsMS45LDE1LjgyLDEuMTIsMTEuNDksMyw3LjY0YzEuMzQtMi43''@;'; put 'put ''NSw1LjE5LTUsOS42OS0zLjY5QTkuODcsOS44NywwLDAsMSwxOCw3LjcyYTkuODcsOS44NywwLDAsMSw1LjMxLTMuNzdjNC40OS0xLjI5LDguMzUuOTQsOS42OSwzLjY5LDEuODgsMy44NSwxLjEsOC4xOC0yLjMyLDEyLjg3QzI4LDI0LjE4LDI0LjE3LDI3LjksMTguNjEsMzIuMjJBMSwxLDAs''@;'; put 'put ''MCwxLDE4LDMyLjQzWk0xMC4xMyw1LjU4QTUuOSw1LjksMCwwLDAsNC44LDguNTFjLTEuNTUsMy4xOC0uODUsNi43MiwyLjE0LDEwLjgxQTU3LjEzLDU3LjEzLDAsMCwwLDE4LDMwLjE2LDU3LjEzLDU3LjEzLDAsMCwwLDI5LjA2LDE5LjMzYzMtNC4xLDMuNjktNy42NCwyLjE0LTEwLjgxLTEt''@;'; put 'put ''Mi00LTMuNTktNy4zNC0yLjY1YTgsOCwwLDAsMC00Ljk0LDQuMiwxLDEsMCwwLDEtMS44NSwwLDcuOTMsNy45MywwLDAsMC00Ljk0LTQuMkE3LjMxLDcuMzEsMCwwLDAsMTAuMTMsNS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUE5Ljg3LDkuODcsMCwwLDAsMTgsNy43MmE5Ljg3LDkuODcsMCwwLDAtNS4zMS0zLjc3QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDEx''@;'; put 'put ''LjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlSGVhcnRCcm9rZW49''@;'; put 'put ''KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjA5LTUtOS42OS0zLjY5YTkuODcsOS44NywwLDAsMC02LDQuODQsMTguOSwxOC45LDAsMCwwLTIuMjMsNS4zM2w1LjI4LDIuMzQtNC42LDQuMzcsMy40OSw0LjEsMS41Mi0xLjNMMTguNTQsMjFsNS40LTUu''@;'; put 'put ''MTNMMTcuNTgsMTNBMTYuMjMsMTYuMjMsMCwwLDEsMTkuNzUsOC45YTcuNjgsNy42OCwwLDAsMSw0LjExLTNjMy4zNC0uODksNi4zNC42LDcuMzQsMi42NSwxLjU1LDMuMTguODUsNi43Mi0yLjE0LDEwLjgxQTU3LjE2LDU3LjE2LDAsMCwxLDE4LDMwLjE2LDU3LjE2LDU3LjE2LDAsMCwxLDYu''@;'; put 'put ''OTQsMTkuMzNjLTMtNC4xLTMuNjktNy42NC0yLjE0LTEwLjgxYTUuOSw1LjksMCwwLDEsNS4zMy0yLjkzLDcuMzEsNy4zMSwwLDAsMSwyLC4yOSw3LjcsNy43LDAsMCwxLDMuMzgsMmwuMTUtLjNhMTAuNjYsMTAuNjYsMCwwLDEsMS0xLjQxLDkuNjQsOS42NCwwLDAsMC0zLjk0LTIuMjJDOC4y''@;'; put 'put ''LDIuNjYsNC4zNCw0Ljg5LDMsNy42NGMtMS44OCwzLjg1LTEuMSw4LjE4LDIuMzIsMTIuODdDOCwyNC4xOCwxMS44MywyNy45LDE3LjM5LDMyLjIyYTEsMSwwLDAsMCwxLjIzLDBjNS41NS00LjMxLDkuMzktOCwxMi4wNy0xMS43MUMzNC4xLDE1LjgyLDM0Ljg4LDExLjQ5LDMzLDcuNjRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjItNS05LjY5LTMuNjlBMTEuNTUsMTEuNTUsMCwwLDAsMTguMTksNy41YTE2Ljg5LDE2Ljg5LDAsMCwwLTIuNDgsNC41NkwyMi4yNywx''@;'; put 'put ''NSwxNi43LDIwLjI2LDE5LDIzbC0xLjU3LDEuMzQtMy42LTQuMjIsNC43NC00LjUxLTUuNDQtMi40MWExOS40OSwxOS40OSwwLDAsMSwyLjMtNS41LDE0Ljc3LDE0Ljc3LDAsMCwxLDEuMDYtMS41NGwuMDYsMGE5LjY2LDkuNjYsMCwwLDAtMy44OS0yLjE4QzguMTksMi42Niw0LjM0LDQuODks''@;'; put 'put ''Myw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlVGFsa0J1YmJsZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1Yz''@;'; put 'put ''MmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAs''@;'; put 'put ''MC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWN0EzLDMsMCwwLDAsMzEsNFpNMzIsMjIuOTQsMjguNSwyMC4yMWExLDEsMCwwLDAtLjYxLS4yMUgxNGExLDEsMCwwLDEtMS0xVjdhMSwxLDAsMCwxLDEtMUgzMUEx''@;'; put 'put ''LjEsMS4xLDAsMCwxLDMyLDcuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVh''@;'; put 'put ''MywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2OS43MkwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0xLTFWN2ExLDEsMCwwLDEsMS0xSDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMu''@;'; put 'put ''NzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTlWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43''@;'; put 'put ''MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMTRBNiw2LDAsMCwxLDgsMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcu''@;'; put 'put ''NTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjdBMywzLDAsMCwwLDMxLDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxOVYxMUg1YTMsMywwLDAsMC0zLDNWMzJhMSwxLDAsMCww''@;'; put 'put ''LC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAsMCwyNSwyNi4xM1YyNUgxNEE2LDYsMCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjEyLjM3QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxMLkNsclNoYXBlQ2hh''@;'; put 'put ''dEJ1YmJsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2''@;'; put 'put ''LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMDgsMTEuMDgsMCww''@;'; put 'put ''LDEsMjguMjksMjQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS41SDExYTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjc1LDIwLjVoLTcuNWExLDEsMCwwLDAsMCwyaDcuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjgsMTIuNUgy''@;'; put 'put ''NC43MmExLDEsMCwwLDAsMC0ySDExLjI4YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zOCwxMi42OWE3LjQzLDcuNDMsMCwwLDEtMS44OS42NkExMC4zNSwxMC4zNSwwLDAsMSwz''@;'; put 'put ''MiwxNi41YTExLjA4LDExLjA4LDAsMCwxLTMuNzEsOC4xMSwxLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMmExNiwxNiwwLDAsMSw0LjU1LjY2QTcu''@;'; put 'put ''NDQsNy40NCwwLDAsMSwyMywzLjIyYTE4LDE4LDAsMCwwLTUtLjcyYy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0ExMi4zMiwxMi4zMiww''@;'; put 'put ''LDAsMCwzMy4zOCwxMi42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSwxNS41YTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC4yNSwyMC41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjgsMTEuNWExLDEsMCwwLDAsMSwxSDI0LjcyYTEsMSwwLDAsMCwuODMtLjQ3QTcuNTMsNy41MywwLDAsMSwyNCwxMC41SDExLjI4QTEsMSwwLDAsMCwxMC4yOCwxMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wm04LDE0YTEsMSwwLDAsMS0x''@;'; put 'put ''LDFIMTFhMSwxLDAsMCwxLDAtMkgyNUExLDEsMCwwLDEsMjYsMTYuNVptLTMuMjUsNWExLDEsMCwwLDEtMSwxaC03LjVhMSwxLDAsMCwxLDAtMmg3LjVBMSwxLDAsMCwxLDIyLjc1LDIxLjVabS0xMi40Ny0xMGExLDEsMCwwLDEsMS0xSDI0LjcyYTEsMSwwLDAsMSwwLDJIMTEuMjhBMSwxLDAs''@;'; put 'put ''MCwxLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjI1YTcuNDYsNy40NiwwLDAsMS00LjM1LTEuNCwxLDEsMCwwLDEtLjkzLjY1SDExLjI4YTEsMSwwLDAsMSwwLTJIMjQuMkE3LjQ2LDcu''@;'; put 'put ''NDYsMCwwLDEsMjMsMy4yYTE4LDE4LDAsMCwwLTUtLjdjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3LDEyLjM0LDEyLjM0LDAsMCwwLS42''@;'; put 'put ''OC00QTcuNDYsNy40NiwwLDAsMSwzMCwxMy4yNVpNMjEuNzUsMjIuNWgtNy41YTEsMSwwLDAsMSwwLTJoNy41YTEsMSwwLDAsMSwwLDJabTMuMjUtNUgxMWExLDEsMCwwLDEsMC0ySDI1YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNS43NSIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVQaWN0dXJlPSgwLEUuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0''@;'; put 'put ''VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0''@;'; put 'put ''QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwy''@;'; put 'put ''MS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3''@;'; put 'put ''LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMTha''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIvPicpLEwuQ2xyU2hhcGVIYXBweUZhY2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC44OSIgY3k9IjEzLjg5IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMDUiIGN5PSIxMy44OSIgcj0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4xMywyOC4yMWE4LjY3LDguNjcsMCwwLDAsOC4yNi02SDkuODdBOC42Nyw4LjY3LDAsMCwwLDE4LjEzLDI4LjIxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTguODksMTMuODlhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsOC44OSwxMy44OVptOS4yNCwxNC4zMmE4LjY3LDguNjcsMCwwLDEtOC4yNi02SDI2LjM4''@;'; put 'put ''QTguNjcsOC42NywwLDAsMSwxOC4xMywyOC4yMVptNi45My0xMi4zMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNS4wNSwxNS44OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlTmV1dHJhbEZhY2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTI0LjA1LDIyLjA2aC0xMmExLDEsMCwwLDAsMCwyaDEyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpt''@;'; put 'put ''MCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwx''@;'; put 'put ''NiwwLDAsMCwxOCwyWm03LjA1LDIxLjA2YTEsMSwwLDAsMS0xLDFoLTEyYTEsMSwwLDAsMSwwLTJoMTJBMSwxLDAsMCwxLDI1LjA1LDIzLjA2Wk0yNywxNC4yOGExLjgsMS44LDAsMSwxLTEuOC0xLjhBMS44LDEuOCwwLDAsMSwyNywxNC4yOFptLTE1LjgsMS44YTEuOCwxLjgsMCwxLDEsMS44''@;'; put 'put ''LTEuOEExLjgsMS44LDAsMCwxLDExLjE2LDE2LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLEwuQ2xyU2hhcGVTYWRGYWNlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAs''@;'; put 'put ''MzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMTYiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEuNDEiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjE2LDIwYTksOSwwLDAsMC03LjMzLDMuNzgs''@;'; put 'put ''MSwxLDAsMSwwLDEuNjMsMS4xNiw3LDcsMCwwLDEsMTEuMzEtLjEzLDEsMSwwLDAsMCwxLjYtMS4yQTksOSwwLDAsMCwxOC4xNiwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMCwxOCwyWm05LDEyLjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0LjI4Wm0tMTUuNTUsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjQxLDE2LjA4Wm0xNCw3LjUzYTEsMSwwLDAsMS0xLjYsMS4yLDcs''@;'; put 'put ''NywwLDAsMC0xMS4zMS4xMywxLDEsMCwxLDEtMS42My0xLjE2LDksOSwwLDAsMSwxNC41NC0uMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksTC5DbHJTaGFwZVRodW1ic1VwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwyNmMtMi45MiwxLjgy''@;'; put 'put ''LTcuMyw0LTkuMzcsNGgtNmExNi42OCwxNi42OCwwLDAsMS0zLjMxLTYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsNCwxNmg5VjZhMi4wNSwyLjA1LDAsMCwxLDEuMjYtMS42OWMuNzcsMiwyLjYyLDYuNTcsNC4yMyw4LjcyQTExLjM5LDExLjM5LDAsMCwwLDI0LDE2LjkxVjE0Ljc4YTkuMTMsOS4x''@;'; put 'put ''MywwLDAsMS0zLjkxLTNjLTEuODgtMi41MS00LjI5LTkuMTEtNC4zMS05LjE3QTEsMSwwLDAsMCwxNC41OSwyQzEzLjI1LDIuMzgsMTEsMy42LDExLDZ2OEgzYTEsMSwwLDAsMC0xLDEsMjksMjksMCwwLDAsMS40LDkuNjJjMS44OSw1LjQsNC4xLDcuMTQsNC4yLDcuMjJhMSwxLDAsMCwwLC42''@;'; put 'put ''MS4yMWg2LjQyYzIuNDMsMCw2LjU1LTIsOS4zNy0zLjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMzFIMjdhMSwxLDAsMCwxLTEtMVYxNGExLDEsMCwwLDEsMS0xaDdabS02LTJoNFYxNUgyOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYzLDEyLjEyQzE3LjUxLDkuMjgsMTQuODgsMiwxNC44OCwyUzEyLDIuODMsMTIsNS4yNVYxNUgyLjIzYTI5LjQ2LDI5LjQ2LDAsMCwwLDEuNDQsOS43NEM1LjYxLDMw''@;'; put 'put ''LjI3LDcuOCwzMiw3LjgsMzJoNi44NkMxNi45LDMyLDIxLDMwLjA2LDI0LDI4LjMxVjE1LjUxQTEwLjg0LDEwLjg0LDAsMCwxLDE5LjYzLDEyLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywxM2ExLDEsMCww''@;'; put 'put ''LDAtMSwxVjMwYTEsMSwwLDAsMCwxLDFoN1YxM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVRodW1ic0Rvd249KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEwYzIuOTItMS44Miw3LjMtNCw5LjM3LTRoNmExNi42OCwxNi42''@;'; put 'put ''OCwwLDAsMSwzLjMxLDYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsMzIsMjBIMjNWMzBhMi4wNSwyLjA1LDAsMCwxLTEuMjYsMS42OWMtLjc3LTItMi42Mi02LjU3LTQuMjMtOC43MkExMS4zOSwxMS4zOSwwLDAsMCwxMiwxOS4wOXYyLjEzYTkuMTMsOS4xMywwLDAsMSwzLjkxLDNjMS44OCwyLjUx''@;'; put 'put ''LDQuMjksOS4xMSw0LjMxLDkuMTdhMSwxLDAsMCwwLDEuMTkuNjNDMjIuNzUsMzMuNjIsMjUsMzIuNCwyNSwzMFYyMmg4YTEsMSwwLDAsMCwxLTEsMjksMjksMCwwLDAtMS40LTkuNjJjLTEuODktNS40LTQuMS03LjE0LTQuMi03LjIyQTEsMSwwLDAsMCwyNy43OSw0SDIxLjM3QzE4Ljk0LDQs''@;'; put 'put ''MTQuODMsNiwxMiw3LjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMiw1SDlhMSwxLDAsMCwxLDEsMVYyMmExLDEsMCwwLDEtMSwxSDJaTTgsN0g0VjIxSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi4zNywyMy44NGMyLjEyLDIuODQsNC43NiwxMC4wNyw0Ljc2LDEwLjA3UzI0LDMzLjEzLDI0LDMwLjcxVjIxaDkuNzdhMjkuNDYsMjkuNDYsMCwwLDAtMS40NC05Ljc0QzMwLjM5LDUuNjgsMjguMiw0LDI4LjIs''@;'; put 'put ''NEgyMS4zNUMxOS4xLDQsMTUsNS45LDEyLDcuNjV2MTIuOEExMC44NCwxMC44NCwwLDAsMSwxNi4zNywyMy44NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwyM2ExLDEsMCwwLDAsMS0xVjZBMSwxLDAsMCwwLDks''@;'; put 'put ''NUgyVjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQ3Jvd249KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik00LDEzLjMzQTEuMzksMS4zOSwwLDEsMCwyLjYsMTQuNzIsMS4zOSwxLjM5LDAsMCwwLDQsMTMuMzNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuODEsMTUuODRhMjAuMzUsMjAuMzUsMCwwLDAtNC41OCwxLjQzLDIyLjcsMjIuNywwLDAsMC0zLjQ4LDIuMUExNy42OSwxNy42OSwwLDAsMSwyMiwxNi41N2E0Ny42NSw0Ny42NSwwLDAsMS0y''@;'; put 'put ''LjgtNy42OSwxLDEsMCwwLDAtMS0uNzQsMSwxLDAsMCwwLTEsLjc0LDQ2LjcxLDQ2LjcxLDAsMCwxLTIuOCw3LjY5LDE3LDE3LDAsMCwxLTEuNzYsMi44LDIyLjcsMjIuNywwLDAsMC0zLjQ4LTIuMSwyMC42NiwyMC42NiwwLDAsMC00LjU4LTEuNDMsMSwxLDAsMCwwLTEsLjM5LDEsMSwwLDAs''@;'; put 'put ''MC0uMDksMS4wNUE1MC4xMyw1MC4xMywwLDAsMSw3LjgyLDMxLjE3YTEsMSwwLDAsMCwxLC44M0gyNy42MmExLDEsMCwwLDAsMS0uODMsNTAuMTUsNTAuMTUsMCwwLDEsNC4yNi0xMy44OSwxLDEsMCwwLDAtLjA5LTEuMDVBMSwxLDAsMCwwLDMxLjgxLDE1Ljg0Wk0yNi43OSwzMEg5LjY0YTU1''@;'; put 'put ''LjY2LDU1LjY2LDAsMCwwLTMuNC0xMS43MSwxNS43NSwxNS43NSwwLDAsMSwyLjA5Ljc4LDIwLDIwLDAsMCwxLDMuODUsMi40NSwxLDEsMCwwLDAsMS4zOS0uMDksMTkuMjgsMTkuMjgsMCwwLDAsMi42Ny00LDQzLjQ2LDQzLjQ2LDAsMCwwLDItNC44OSw0MS43NCw0MS43NCwwLDAsMCwyLDQu''@;'; put 'put ''ODksMTkuOTIsMTkuOTIsMCwwLDAsMi42Niw0LDEsMSwwLDAsMCwxLjQuMDksMTkuMjEsMTkuMjEsMCwwLDEsMy44NS0yLjQ1LDE0Ljc3LDE0Ljc3LDAsMCwxLDIuMDktLjc4QTU1LjA3LDU1LjA3LDAsMCwwLDI2Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE4LjIyLDYuMzlBMS4zOSwxLjM5LDAsMSwwLDE2Ljg0LDUsMS4zOSwxLjM5''@;'; put 'put ''LDAsMCwwLDE4LjIyLDYuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTguMjMsMjYuMzRhMS4xMSwxLjExLDAsMSwwLDEuMSwxLjFBMS4xLDEuMSwwLDAsMCwxOC4yMywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMi41OCwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDEyLjU4LDI2LjM0WiIvPjxwYXRoIGQ9Ik0yMy44OSwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDIzLjg5''@;'; put 'put ''LDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cblxuICA8cGF0aCBkPSJNMi42LDExLjkzQTEuNCwxLjQsMCwxLDAsNCwxMy4zMywxLjQsMS40LDAsMCwwLDIuNiwxMS45M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTguMjIsNi4zOUExLjM5LDEuMzksMCwxLDAsMTYuODQsNSwxLjM5LDEuMzksMCwwLDAsMTgu''@;'; put 'put ''MjIsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjYzLDE2LjFBMTguNjEsMTguNjEsMCwwLDAsMjgsMTcuMzRhMjEuNTcsMjEuNTcsMCwwLDAtNCwyLjQ5LDE5LjIsMTkuMiwwLDAsMS0yLjI2LTMuNDksNDguOTIsNDguOTIs''@;'; put 'put ''MCwwLDEtMi41Mi02LjU4LDEsMSwwLDAsMC0xLS43MWgwYTEsMSwwLDAsMC0xLC43MSw0OC40Miw0OC40MiwwLDAsMS0yLjUyLDYuNTgsMTguNjksMTguNjksMCwwLDEtMi4yNiwzLjQ4LDIyLjgxLDIyLjgxLDAsMCwwLTQtMi40OEExOC44MywxOC44MywwLDAsMCw0LjksMTYuMWExLDEsMCww''@;'; put 'put ''LDAtMSwuMzMsMSwxLDAsMCwwLS4xMywxLjA3LDU1LjksNTUuOSwwLDAsMSw0LDEzLjUsMSwxLDAsMCwwLDEsLjgzaDE5YTEsMSwwLDAsMCwxLS44Myw1NS45LDU1LjksMCwwLDEsNC0xMy41LDEsMSwwLDAsMC0uMTMtMS4wN0ExLDEsMCwwLDAsMzEuNjMsMTYuMVpNMTEuMDgsMjguNTVhMS4x''@;'; put 'put ''MSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwxMS4wOCwyOC41NVptNy4xNSwwYTEuMTEsMS4xMSwwLDAsMSwwLTIuMjEsMS4xMSwxLjExLDAsMCwxLDAsMi4yMVptNy4xNiwwYTEuMTEsMS4xMSwwLDEsMSwxLjEtMS4xMUExLjExLDEuMTEsMCwwLDEsMjUuMzksMjguNTVa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4gICcpLEwuQ2xyU2hhcGVIYXNodGFnPSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsMTJIMjUuMzRsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwyMy4zLDEySDE1LjExbDEuNTUtNy43NGExLDEs''@;'; put 'put ''MCwwLDAtMi0uMzlMMTMuMDcsMTJINmExLDEsMCwwLDAsMCwyaDYuNjdsLTEuNiw4SDRhMSwxLDAsMCwwLDAsMmg2LjY2TDkuMTEsMzEuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjY4LjY4LDAsMCwwLC4yLDAsMSwxLDAsMCwwLDEtLjhMMTIuNywyNGg4LjE5bC0xLjU1LDcuNzRhMSwxLDAsMCww''@;'; put 'put ''LC43OSwxLjE3LjYyLjYyLDAsMCwwLC4xOSwwLDEsMSwwLDAsMCwxLS44TDIyLjkzLDI0SDMwYTEsMSwwLDAsMCwwLTJIMjMuMzNsMS42MS04SDMyYTEsMSwwLDAsMCwwLTJaTTIxLjI5LDIySDEzLjFsMS42MS04SDIyLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMS44NywxMEgyNi4zMmwxLTQuODNBMSwxLDAsMCwwLDI2LjM1LDRoLTJhMSwxLDAsMCwwLTEsLjc4TDIyLjMzLDEwaC01LjRsMS00LjgzQTEsMSwwLDAsMCwxNyw0SDE1YTEsMSwwLDAsMC0xLC43OEwxMywxMEg3YTEsMSwwLDAsMC0xLC44bC0uNDEs''@;'; put 'put ''MmExLDEsMCwwLDAsMSwxLjJoNS41NUwxMC41LDIyaC02YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJIOS42OGwtMSw0LjgzYTEsMSwwLDAsMCwxLDEuMTdoMmExLDEsMCwwLDAsLjk1LS43OEwxMy42NywyNmg1LjRsLTEsNC44M0ExLDEsMCwwLDAsMTksMzJoMmExLDEs''@;'; put 'put ''MCwwLDAsMS0uNzhMMjMuMDUsMjZoNmExLDEsMCwwLDAsMS0uOGwuNC0yYTEsMSwwLDAsMC0xLTEuMkgyMy44N2wxLjYzLThoNmExLDEsMCwwLDAsMS0uOGwuNDEtMkExLDEsMCwwLDAsMzEuODcsMTBabS0xMiwxMmgtNS40bDEuNjQtOGg1LjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIi8+XG4gICcpLEwuU29jaWFsU2hhcGVzPXtjcm93bjpMLkNsclNoYXBlQ3Jvd24sc2hhcmU6TC5DbHJTaGFwZVNoYXJlLHN0YXI6TC5DbHJTaGFwZVN0YXIsImhhbGYtc3RhciI6TC5DbHJTaGFwZUhhbGZTdGFyLGJvb2ttYXJrOkwuQ2xyU2hhcGVCb29rbWFyayxlbnZl''@;'; put 'put ''bG9wZTpMLkNsclNoYXBlRW52ZWxvcGUsY2FsZW5kYXI6TWUuQ2xyU2hhcGVDYWxlbmRhcixldmVudDpNZS5DbHJTaGFwZUV2ZW50LHRhc2tzOkwuQ2xyU2hhcGVUYXNrcyxmbGFnOkwuQ2xyU2hhcGVGbGFnLGluYm94OkwuQ2xyU2hhcGVJbmJveCxoYXNodGFnOkwuQ2xyU2hhcGVIYXNodGFn''@;'; put 'put ''LGhlYXJ0OkwuQ2xyU2hhcGVIZWFydCwiaGVhcnQtYnJva2VuIjpMLkNsclNoYXBlSGVhcnRCcm9rZW4sInRhbGstYnViYmxlcyI6TC5DbHJTaGFwZVRhbGtCdWJibGVzLCJjaGF0LWJ1YmJsZSI6TC5DbHJTaGFwZUNoYXRCdWJibGUscGljdHVyZTpMLkNsclNoYXBlUGljdHVyZSwiaGFwcHkt''@;'; put 'put ''ZmFjZSI6TC5DbHJTaGFwZUhhcHB5RmFjZSwibmV1dHJhbC1mYWNlIjpMLkNsclNoYXBlTmV1dHJhbEZhY2UsInNhZC1mYWNlIjpMLkNsclNoYXBlU2FkRmFjZSwidGh1bWJzLXVwIjpMLkNsclNoYXBlVGh1bWJzVXAsInRodW1icy1kb3duIjpMLkNsclNoYXBlVGh1bWJzRG93bn0sT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KEwuU29jaWFsU2hhcGVzLCJmYXZvcml0ZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlNvY2lhbFNoYXBlcy5zdGFyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuU29jaWFsU2hhcGVzLCJlbWFpbCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlNvY2lhbFNo''@;'; put 'put ''YXBlcy5lbnZlbG9wZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlNvY2lhbFNoYXBlcywiZGF0ZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlNvY2lhbFNoYXBlcy5jYWxlbmRhcikpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJp''@;'; put 'put ''dHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChMLlNvY2lhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiOmZ1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19lc01v''@;'; put 'put ''ZHVsZSIse3ZhbHVlOiEwfSksTC5DbHJTaGFwZVZNV0FwcD1MLkNsclNoYXBlVk09TC5DbHJTaGFwZVJvdXRlcj1MLkNsclNoYXBlTmV0d29ya1N3aXRjaD1MLkNsclNoYXBlTmV0d29ya1NldHRpbmdzPUwuQ2xyU2hhcGVOZXR3b3JrR2xvYmU9TC5DbHJTaGFwZVRhYmxldD1MLkNsclNoYXBl''@;'; put 'put ''TW9iaWxlPUwuQ2xyU2hhcGVCYXR0ZXJ5PUwuQ2xyU2hhcGVBcHBsaWNhdGlvbj1MLkNsclNoYXBlQ29kZT1MLkNsclNoYXBlVGVybWluYWw9TC5DbHJTaGFwZURpc3BsYXk9TC5DbHJTaGFwZUNvbXB1dGVyPUwuQ2xyU2hhcGVGbG9wcHk9TC5DbHJTaGFwZVBsdWdpbj1MLkNsclNoYXBlRG93''@;'; put 'put ''bmxvYWRDbG91ZD1MLkNsclNoYXBlVXBsb2FkQ2xvdWQ9TC5DbHJTaGFwZUV4cG9ydD1MLkNsclNoYXBlSW1wb3J0PUwuQ2xyU2hhcGVTaGllbGRYPUwuQ2xyU2hhcGVTaGllbGQ9TC5DbHJTaGFwZVNoaWVsZENoZWNrPUwuQ2xyU2hhcGVSZXNvdXJjZVBvb2w9TC5DbHJTaGFwZURhdGFDbHVz''@;'; put 'put ''dGVyPUwuQ2xyU2hhcGVNZW1vcnk9TC5DbHJTaGFwZUNQVT1MLkNsclNoYXBlQnVpbGRpbmc9TC5DbHJTaGFwZUFwcGxpY2F0aW9ucz1MLkNsclNoYXBlQ2x1c3Rlcj1MLkNsclNoYXBlU3RvcmFnZT1MLkNsclNoYXBlSG9zdD1MLkNsclNoYXBlRGFzaGJvYXJkPUwuQ2xyU2hhcGVNb3VzZT1M''@;'; put 'put ''LkNsclNoYXBlS2V5Ym9hcmQ9TC5DbHJTaGFwZURldmljZXM9TC5DbHJTaGFwZUJhY2t1cD1MLkNsclNoYXBlQmFja3VwUmVzdG9yZT1MLkNsclNoYXBlSGFyZERpc2s9TC5DbHJTaGFwZVJhY2tTZXJ2ZXI9TC5DbHJTaGFwZVdpZmk9TC5DbHJTaGFwZUJ1bmRsZT1MLkNsclNoYXBlQmxvY2tz''@;'; put 'put ''R3JvdXA9TC5DbHJTaGFwZUJsb2NrPUwuQ2xyU2hhcGVMYXllcnM9TC5DbHJTaGFwZVVuaW5zdGFsbD1MLkNsclNoYXBlSW5zdGFsbD1MLkNsclNoYXBlTm9XaWZpPUwuQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9TC5DbHJTaGFwZVJ1bGVyUGVuY2lsPXZvaWQgMCxMLlRlY2hub2xvZ3lTaGFwZXM9''@;'; put 'put ''TC5DbHJTaGFwZUZpbGVTaGFyZTI9TC5DbHJTaGFwZUNpQ2Q9TC5DbHJTaGFwZUFuaW1hdGlvbj1MLkNsclNoYXBlVGFwZURyaXZlPUwuQ2xyU2hhcGVNZWRpYUNoYW5nZXI9TC5DbHJDb250cm9sTHVuPUwuQ2xyU2hhcGVQb2Q9TC5DbHJTaGFwZU5vZGU9TC5DbHJTaGFwZU5hbWVzcGFjZT1M''@;'; put 'put ''LkNsclNoYXBlTm9kZXM9TC5DbHJTaGFwZU5vZGVHcm91cD1MLkNsclNoYXBlU3RvcmFnZUFkYXB0ZXI9TC5DbHJTaGFwZUhvc3RHcm91cD1MLkNsclNoYXBlU3F1aWQ9TC5DbHJTaGFwZUNhcGFjaXRvcj1MLkNsclNoYXBlUmVzaXN0b3I9TC5DbHJTaGFwZUluZHVjdG9yPUwuQ2xyU2hhcGVS''@;'; put 'put ''YWRhcj1MLkNsclNoYXBlVXNiPUwuQ2xyU2hhcGVRckNvZGU9TC5DbHJTaGFwZUZpbGVTaGFyZT1MLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPUwuQ2xyU2hhcGVDb250YWluZXI9TC5DbHJTaGFwZUNkRHZkPUwuQ2xyU2hhcGVCYXJDb2RlPUwuQ2xyU2hhcGVBdG9tPUwuQ2xyU2hhcGVBc3Np''@;'; put 'put ''Z25Vc2VyPUwuQ2xyU2hhcGVQcm9jZXNzT25WTT1MLkNsclNoYXBlQmx1ZXRvb3RoT2ZmPUwuQ2xyU2hhcGVCbHVldG9vdGg9TC5DbHJTaGFwZVNTRD1MLkNsclNoYXBlTlZNZT1MLkNsclNoYXBlSGFyZERyaXZlRGlza3M9TC5DbHJTaGFwZUhhcmREcml2ZT1MLkNsclNoYXBlQWRtaW5pc3Ry''@;'; put 'put ''YXRvcj1MLkNsclNoYXBlRmxhc2s9TC5DbHJTaGFwZUhlbGl4PUwuQ2xyU2hhcGVEZXBsb3k9TC5DbHJTaGFwZUNsb3VkVHJhZmZpYz1MLkNsclNoYXBlQ2xvdWRTY2FsZT1MLkNsclNoYXBlQ2xvdWROZXR3b3JrPUwuQ2xyU2hhcGVVbmxpbms9TC5DbHJTaGFwZUxpbms9TC5DbHJTaGFwZURp''@;'; put 'put ''c2Nvbm5lY3Q9TC5DbHJTaGFwZUNvbm5lY3Q9TC5DbHJTaGFwZVVuYXJjaGl2ZT1MLkNsclNoYXBlQXJjaGl2ZT1MLkNsclNoYXBlQ2VydGlmaWNhdGU9dm9pZCAwO3ZhciBCPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLEU9Z2UoIi4vcHJv''@;'; put 'put ''amVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZVJ1bGVyUGVuY2lsPSgwLEUuY2xySWNvblNWRykoJzxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBwb2ludHM9IjkgMTcuNDEgOSAyNyAxOC41OSAy''@;'; put 'put ''NyAxNi41OSAyNSAxMSAyNSAxMSAxOS40MSA5IDE3LjQxIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM0Ljg3LDMyLjI5LDMyLDI5LjM4VjMySDRWMjcuODVINnYtMS42SDRWMTkuNkg2VjE4SDRWMTEuNkg2VjEw''@;'; put 'put ''SDRWNC40MUwxOS45NCwyMC4yNlYxNy40NEwzLjcxLDEuMjlBMSwxLDAsMCwwLDIsMlYzM2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjQs''@;'; put 'put ''MzBoNGEyLDIsMCwwLDAsMi0yVjguN0wyNy43LDQuNDdhMiwyLDAsMCwwLTEuNzYtMWgwYTIsMiwwLDAsMC0xLjc2LDEuMDhMMjIsOC43MlYyOEEyLDIsMCwwLDAsMjQsMzBaTTI0LDkuMmwxLjk0LTMuNzdMMjgsOS4yMVYyNEgyNFptMCwxNi40M2g0djIuNDRIMjRaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuODcsMzIuMjEsMzAsMjcuMzdWOC43NUwyNy43LDQuNTJhMiwyLDAsMCwwLTMuNTQsMEwyMiw4Ljc2VjE5LjQxTDMuNzEsMS4yMUExLDEsMCwwLDAsMiwxLjkyVjEwSDQuMTd2MS42SDJWMThINC4x''@;'; put 'put ''N3YxLjZIMnY2LjY1SDQuMTd2MS42SDJ2NS4wN2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVpNMTAsMjZWMTYuOTRMMTkuMDcsMjZabTE4LDIuMTFIMjRWMjUuNjhoNFptMC00SDI0VjkuMjVsMS45NC0zLjc3TDI4LDkuMjZaIi8+XG4nKSxMLkNsclNoYXBlUGhvbmVI''@;'; put 'put ''YW5kc2V0PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuNzMsMzUuNDRhNC43Miw0LjcyLDAsMCwxLTEtLjExLDMzLjkxLDMzLjkxLDAsMCwxLTE2LjYyLTguNzUsMzIuNzEsMzIuNzEsMCwwLDEtOS0xNi4y''@;'; put 'put ''NUE0LjU4LDQuNTgsMCwwLDEsMi40Niw2LjA1bDQtMy44NUEyLDIsMCwwLDEsOCwxLjY2YTIsMiwwLDAsMSwxLjQ1Ljg3bDUsNy4zOWExLjYsMS42LDAsMCwxLS4xMSwxLjlsLTIuNTEsM2ExOC45NCwxOC45NCwwLDAsMCw0LjE3LDUuODloMGExOS4yNiwxOS4yNiwwLDAsMCw2LjA3LDQuMDls''@;'; put 'put ''My4xMS0yLjQ3YTEuNjQsMS42NCwwLDAsMSwxLjg2LS4xMmw3LjU1LDQuODhBMiwyLDAsMCwxLDM1LDMwLjJsLTMuOSwzLjg2QTQuNzQsNC43NCwwLDAsMSwyNy43MywzNS40NFpNNy44NCwzLjY0bC00LDMuODVhMi41NCwyLjU0LDAsMCwwLS43NSwyLjQsMzAuNywzMC43LDAsMCwwLDguNDEs''@;'; put 'put ''MTUuMjYsMzEuOSwzMS45LDAsMCwwLDE1LjY0LDguMjMsMi43NSwyLjc1LDAsMCwwLDIuNS0uNzRsMy45LTMuODYtNy4yOS00LjcxLTMuMzQsMi42NmExLDEsMCwwLDEtLjkyLjE3LDIwLjA2LDIwLjA2LDAsMCwxLTcuMzYtNC43NWgwYTE5LjQ5LDE5LjQ5LDAsMCwxLTQuODctNy4yQTEsMSww''@;'; put 'put ''LDAsMSwxMCwxNGwyLjctMy4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4yMiwyMC42NGEyMC4zNywyMC4zNywwLDAsMCw3LjQsNC43OWwzLjc3LTNhLjY3LjY3LDAsMCwxLC43NiwwbDcsNC41MWEyLDIsMCww''@;'; put 'put ''LDEsLjMzLDMuMThsLTMuMjgsMy4yNGE0LDQsMCwwLDEtMy42MywxLjA3LDM1LjA5LDM1LjA5LDAsMCwxLTE3LjE1LTlBMzMuNzksMzMuNzksMCwwLDEsMS4xNSw4LjZhMy43OCwzLjc4LDAsMCwxLDEuMS0zLjU1bDMuNC0zLjI4YTIsMiwwLDAsMSwzLjEyLjMyTDEzLjQzLDlhLjYzLjYzLDAs''@;'; put 'put ''MCwxLDAsLjc1bC0zLjA3LDMuNjlBMTkuNzUsMTkuNzUsMCwwLDAsMTUuMjIsMjAuNjRaIi8+XG4nKSxMLkNsclNoYXBlTm9XaWZpPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuNDJhNCw0LDAsMSww''@;'; put 'put ''LDQsNEE0LDQsMCwwLDAsMTgsMjQuNDJabTAsNmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwxOCwzMC40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYuMjEsMjEuODVhMSwxLDAsMCwwLS4yMy0xLjQsMTMu''@;'; put 'put ''NTYsMTMuNTYsMCwwLDAtNS0yLjIzbDMuODcsMy44N0ExLDEsMCwwLDAsMjYuMjEsMjEuODVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDEwLjcyYTIwLjg4LDIwLjg4LDAsMCwwLTQuMTYuNDNsMS43''@;'; put 'put ''NCwxLjc0YTE5LDE5LDAsMCwxLDIuNDItLjE3QTE4Ljc2LDE4Ljc2LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVBMjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNCIgZD0iTTMzLjU1LDguMkEyOC4xMSwyOC4xMSwwLDAsMCw4LjExLDUuMzZMOS42OSw2LjkzQTI2LDI2LDAsMCwxLDMyLjQ1LDkuODdhMSwxLDAsMCwwLDEuMS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''IGQ9Ik0xLjg0LDQuNzUsNC4yNyw3LjE4Yy0uNjIuMzQtMS4yMy43LTEuODMsMS4xQTEsMSwwLDEsMCwzLjU2LDkuOTRDNC4yNiw5LjQ3LDUsOSw1Ljc0LDguNjVsMy44NywzLjg3QTIwLjU5LDIwLjU5LDAsMCwwLDYuMjMsMTQuNCwxLDEsMCwwLDAsNy4zNiwxNmExOC44MiwxOC44MiwwLDAs''@;'; put 'put ''MSwzLjc3LTJsNC4xNiw0LjE2QTEzLjUxLDEzLjUxLDAsMCwwLDEwLDIwLjU1YTEsMSwwLDAsMCwxLjE4LDEuNjFBMTEuNTIsMTEuNTIsMCwwLDEsMTcsMjBsMTAuOCwxMC44LDEuNDEtMS40MS0yNi0yNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjkuNTQiIHI9IjMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOS4xOCwxNy43MWwuMTEtLjE3YTEuNTEsMS41MSwwLDAsMC0uNDctMi4xQTIwLjU3LDIwLjU3LDAsMCww''@;'; put 'put ''LDE4LDEyLjM3Yy0uNTYsMC0xLjExLDAtMS42NS4wN2wzLjIxLDMuMjFhMTcuNDEsMTcuNDEsMCwwLDEsNy42LDIuNTJBMS40OSwxLjQ5LDAsMCwwLDI5LjE4LDE3LjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTMy''@;'; put 'put ''Ljc2LDkuMzhBMjcuOSwyNy45LDAsMCwwLDEwLjE4LDYuMjdMMTIuODEsOC45QTI0LjY4LDI0LjY4LDAsMCwxLDMxLjEsMTIuMTJhMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMyw0Ljc1bDMuMSwzLjFBMjcuMjgsMjcuMjgsMCwwLDAsMy4xOCw5LjQyYTEuNTEsMS41MSwwLDAsMC0uNDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY5LDI0LjY5LDAsMCwxLDMuNjctMS45bDMuMTQsMy4x''@;'; put 'put ''NGEyMC42MywyMC42MywwLDAsMC00LjUzLDIuMDksMS41MSwxLjUxLDAsMCwwLS40NiwyLjFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NkExNy40NiwxNy40NiwwLDAsMSwxNC4yNSwxNmwzLjYsMy42YTEzLjM5LDEzLjM5LDAsMCwwLTYuNzksMS45MywxLjUsMS41LDAsMCwwLS40Niwy''@;'; put 'put ''LjA5bC4xLjE2YTEuNTIsMS41MiwwLDAsMCwyLjA2LjQ0LDEwLjIsMTAuMiwwLDAsMSw5LS43TDI5LDMwLjc1bDEuNDEtMS40MS0yNi0yNloiLz5cbicpLEwuQ2xyU2hhcGVJbnN0YWxsPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMwLjkyLDhaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEwLjMsMTguODdsNyw2Ljg5YTEsMSwwLDAsMCwxLjQsMGw3LTYuODlhMSwxLDAsMCwwLTEuNC0xLjQzTDE5LDIyLjY1VjRhMSwxLDAsMCwwLTIsMFYyMi42NWwtNS4zLTUuMjFhMSwxLDAs''@;'; put 'put ''MCwwLTEuNCwxLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIu''@;'; put 'put ''NjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+PHBhdGggZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBW''@;'; put 'put ''MTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMt''@;'; put 'put ''NS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywx''@;'; put 'put ''MFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEz''@;'; put 'put ''LDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLEwuQ2xyU2hhcGVVbmluc3RhbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBI''@;'; put 'put ''OS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMwLjkyLDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEs''@;'; put 'put ''MS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAs''@;'; put 'put ''MC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTEuMjksMjYuNzJhMSwxLDAsMCwwLDEuNDEsMEwx''@;'; put 'put ''OCwyMS40OWw1LjMsNS4yM0ExLDEsMCwwLDAsMjQuNywyNS4zbC01LjI4LTUuMjEsNC43NS00LjY5SDIyLjIzYTMuNjUsMy42NSwwLDAsMS0uODEtLjFMMTgsMTguNjhsLTUuMy01LjIzYTEsMSwwLDAsMC0xLjQxLDEuNDJsNS4yOCw1LjIxTDExLjMsMjUuM0ExLDEsMCwwLDAsMTEuMjksMjYu''@;'; put 'put ''NzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwy''@;'; put 'put ''SDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwy''@;'; put 'put ''Mi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLEwuQ2xyU2hhcGVMYXllcnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVpNNS4zNCwxMi4xNmwxMi42Niw2LDEyLjY2LTZM''@;'; put 'put ''MTgsNi4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjYuMTZhMSwxLDAsMCwxLS40My0uMUwyLjU3LDE5YTEsMSwwLDEsMSwuODUtMS44MUwxOCwyNC4wNmwxNC41Ny02Ljg5QTEsMSwwLDEsMSwzMy40''@;'; put 'put ''MywxOWwtMTUsNy4wOUExLDEsMCwwLDEsMTgsMjYuMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0''@;'; put 'put ''LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAs''@;'; put 'put ''MSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEs''@;'; put 'put ''MCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYuODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTMiIGQ9Ik0xOCwzMi4wN2ExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwuODUtMS44MUwxOCwzMGwxNC41Ny02Ljg5YTEsMSwwLDEsMSwuODUsMS44MUwxOC40MywzMkExLDEsMCwwLDEsMTgsMzIuMDdaIi8+XG4nKSxMLkNsclNoYXBlQmxvY2s9KDAsRS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggZD0iTTMxLjQyLDkuMDlsLTEzLTZhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTBBMSwxLDAsMCwwLDMxLjQyLDkuMDlaTTE4LDUuMSwyOC42''@;'; put 'put ''MSwxMCwxOCwxNC45LDcuMzksMTBaTTYsMTEuNTZsMTEsNS4wOHYxNC44TDYsMjYuMzZaTTE5LDMxLjQ0VjE2LjY0bDExLTUuMDh2MTQuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjUzVjI2LjM2''@;'; put 'put ''TDE5LDMxLjQ0VjE2LjY0bDIuNTctMS4xOWEzLjY3LDMuNjcsMCwwLDEtMi4xMS0xLjIyTDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsMy4wOCwxLjQyLDEtMS43NEwxOC40MiwzLjA5YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEsMCwwLDAsLjU4LjkxbDEzLDZh''@;'; put 'put ''MSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjE1LjUzWk0xNywzMS40NCw2LDI2LjM2VjExLjU2bDExLDUuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni44NywxLjI2bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkySDMzLjdhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkyTDI5LjA4LDEuMjZBMS4yOCwxLjI4LDAsMCwwLDI2Ljg3LDEuMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAsMSwyMi41''@;'; put 'put ''LDZhOCw4LDAsMCwxLC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDMx''@;'; put 'put ''LjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMtNmExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAs''@;'; put 'put ''MCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIsOS4wOVpNMTgsMTQuOSw3LjM5LDEwLDE4LDUuMSwyOC42MSwxMFpNMzAsMjYuMzYsMTksMzEuNDRWMTYuNjRsMTEtNS4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuMzh2MTFMMTksMzEuNDRWMTYuNjRsMi43OS0xLjI5YTMuNjgsMy42OCwwLDAsMS0yLjI1LTEuMTZMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWwzLDEuMzksMS0xLjc1TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0''@;'; put 'put ''LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTIsMjEuMTMsMTFhMS4yNywxLjI3LDAsMCwwLDEuMSwxLjkxSDMzLjY4QTEuMjcsMS4yNywwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjEyQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAsMSwyMi41LDZhOCw4LDAsMCwx''@;'; put 'put ''LC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUJsb2Nrc0dyb3VwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgsMTguNzZhMSwxLDAsMCww''@;'; put 'put ''LS41OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZabS0yLjgxLjkxTDI1LjYx''@;'; put 'put ''LDIyLDIwLjUsMTkuNjdsNS4xMS0yLjM1Wk0xOC4xLDQuMDhsNS4xMSwyLjM1TDE4LjEsOC43OCwxMyw2LjQzWk0xMC42LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIyLDUuNDksMTkuNjdabTYuNSwxMS40OS02LjUsMy02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCwwLDAsMTEsMjRsNi4wOC0y''@;'; put 'put ''LjhaTTExLjYsMTUuNTdoMFY4bDYuMDgsMi44YTEsMSwwLDAsMCwuODQsMEwyNC42LDh2Ny41OGgwbC02LjUsM1pNMzIuMTEsMjguODFsLTYuNSwzLTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3aC0ydjBsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwbC4yNC0uMTFhNC4xNyw0LjE3LDAsMCwxLC4yOS0uNjVsMS4zMy0yLjMxLTIuMjgsMUwxMyw2LjQzbDUuMS0yLjM1LDMuNDcs''@;'; put 'put ''MS42LDEtMS43M0wxOC41LDIuMDhhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEs''@;'; put 'put ''MSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptMCwxNC40OS02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjgs''@;'; put 'put ''MCw3LjZabTE1LTE0LjQ4LDUuMTEsMi4zNUwyNS42MSwyMiwyMC41LDE5LjY3Wm0wLDE0LjQ5LTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFs''@;'; put 'put ''ZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWMTIuN2E3LjU4LDcuNTgsMCwwLDEtMi0xLjUxdjQuMzlsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwTDIzLDguNzJh''@;'; put 'put ''Ny4wNSw3LjA1LDAsMCwxLS40Ny0ybC00LjQ3LDJMMTMsNi40M2w1LjEtMi4zNSw0LjQ0LDJzMC0uMDYsMC0uMDlhNy41NSw3LjU1LDAsMCwxLC4yNy0ybC00LjMtMmExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41''@;'; put 'put ''OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAuNiwxNy4zMWw1LjExLDIuMzVM''@;'; put 'put ''MTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4xMSwyLjM1TDI1LjYxLDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwy''@;'; put 'put ''NGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4PSIzMC4wMyIgY3k9IjYuMDMiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgsMTguNzZhMSwxLDAsMCwwLS41''@;'; put 'put ''OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTI1LjYxLDIyLDIwLjUsMTku''@;'; put 'put ''NjdsNS4xMS0yLjM1LDUuMTEsMi4zNVptLTEtNi40NC02LjQ0LDNWMTAuODdhMSwxLDAsMCwwLC4zNS0uMDhMMjQuNiw4djcuNThaTTE4LjEsNC4wOGw1LjExLDIuMzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptNi41LDExLjQ5''@;'; put 'put ''LTYuNSwzaDBWMjQuMTFoMEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjhabTE1LDAtNi40NiwzVjI0LjExQTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N3Yw''@;'; put 'put ''aC0ydjBsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOGwuMTQtLjA2QTMuMjMsMy4yMywwLDAsMSwxOSwxMGwxLjI4LTIuMjItMi4xNCwxTDEzLDYuNDNsNS4xLTIuMzUsMy4zOSwxLjU2LDEtMS43My00LTEuODNhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCww''@;'; put 'put ''LDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCww''@;'; put 'put ''LDAsMzMuNTMsMTguNzZabS0yOCwuOTEsNS4xMS0yLjM2LDUuMTEsMi4zNUwxMC42LDIyWk0xMC42LDMxLjhWMjQuMTFBMS4wOCwxLjA4LDAsMCwwLDExLDI0bDYuMDgtMi44LDAsNy42Wm05LjktMTIuMTMsNS4xMS0yLjM1LDUuMTEsMi4zNUwyNS42MSwyMlpNMjUuNjQsMzEuOFYyNC4xMUEu''@;'; put 'put ''ODkuODksMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuPHBhdGggZD0iTTI2Ljg5LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjcsMTNIMzMuNzJhMS4yNywx''@;'; put 'put ''LjI3LDAsMCwwLDEuMS0xLjkxTDI5LjEsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODksMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N1Yx''@;'; put 'put ''Mi42OWE3LjY2LDcuNjYsMCwwLDEtMi0xLjQ3djQuMzRsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOEwyMyw4LjczYTcuNjUsNy42NSwwLDAsMS0uNDgtMmwtNC40MiwyTDEzLDYuNDNsNS4xLTIuMzUsNC4zOCwyVjZhNy41NSw3LjU1LDAsMCwxLC4yNy0yTDE4LjUsMi4w''@;'; put 'put ''OGExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0z''@;'; put 'put ''LjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIuMzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYsMzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0xMi4xMyw1LjExLTIuMzUsNS4x''@;'; put 'put ''MSwyLjM1TDI1LjYxLDIyWk0yNS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuPGNpcmNsZSBjeD0iMjkuOTgiIGN5PSI2IiByPSI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlQnVuZGxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuNDMsOC4z''@;'; put 'put ''NWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5''@;'; put 'put ''LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWk01LDEyLjEzLDE2LDE3LjRWMzEuNDZMNSwyNi4yWk0xOCwzMS40NVYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEs''@;'; put 'put ''MCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWm0xLDE1LjhWMTcuMzZsMTMtNi4yOXYxNC4xWiIvPlxuJyksTC5DbHJTaGFwZVdpZmk9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy41NSw4LjJhMjguMSwyOC4xLDAsMCwwLTMxLjExLjA4QTEsMSwwLDEsMCwzLjU2LDkuOTRhMjYuMTEsMjYuMTEsMCwwLDEsMjguODktLjA3LDEsMSwwLDAsMCwxLjEtMS42N1oiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTguMDUsMTAuNzJBMjAuNzQsMjAuNzQsMCwwLDAsNi4yMywxNC40LDEsMSwwLDAsMCw3LjM2LDE2LDE4Ljg1LDE4Ljg1LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVB''@;'; put 'put ''MjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDE3LjlhMTMuNTEsMTMuNTEsMCwwLDAtOCwyLjY0LDEsMSwwLDAsMCwxLjE4LDEuNjEsMTEuNTYsMTEu''@;'; put 'put ''NTYsMCwwLDEsMTMuNjItLjA4QTEsMSwwLDEsMCwyNiwyMC40NiwxMy41MiwxMy41MiwwLDAsMCwxOC4wNSwxNy45WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOCwyNC40MmE0LDQsMCwxLDAsNCw0QTQsNCww''@;'; put 'put ''LDAsMCwxOCwyNC40MlptMCw2YTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41NCIgcj0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLjc2LDkuMzhhMjcuODcsMjcuODcsMCwwLDAtMjkuNTcsMCwxLjUxLDEuNTEsMCwwLDAtLjQ4LDIuMTFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NiwyNC42OCwyNC42OCwwLDAsMSwyNi4yNiwwLDEuNDksMS40''@;'; put 'put ''OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwzMi43Niw5LjM4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI4LjgyLDE1LjQ0YTIwLjU5LDIwLjU5LDAsMCwwLTIxLjcsMCwxLjUxLDEuNTEsMCww''@;'; put 'put ''LDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDE3LjQsMTcuNCwwLDAsMSwxOC4zNiwwLDEuNDksMS40OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwyOC44MiwxNS40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0yNC44OCwyMS40OWExMy40MSwxMy40MSwwLDAsMC0xMy44MiwwLDEuNSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMjcsMTAuMjcsMCwwLDEsMTAuNDIsMCwxLjUyLDEuNTIsMCwwLDAsMi4wNi0uNDVs''@;'; put 'put ''LjEtLjE2QTEuNDksMS40OSwwLDAsMCwyNC44OCwyMS40OVoiLz5cbicpLEwuQ2xyU2hhcGVSYWNrU2VydmVyPSgwLEUuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiB4PSIxMCIgeT0iMTciIHdp''@;'; put 'put ''ZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxl''@;'; put 'put ''cnRlZCIgZD0iTTE4LjY0LDExQTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTB2MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgzMlYyMUg0VjE1''@;'; put 'put ''SDIwLjU4QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41Nkg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTQsMjlWMjNIMzJ2NloiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJh''@;'; put 'put ''ZGdlZCIgeD0iMTAiIHk9IjE3IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02LS1iYWRnZWQiIGQ9Ik0xMCwxMUgyNHYtLjUxQTcuNDgsNy40OCwwLDAsMSwyMy4xMyw5SDEwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ3''@;'; put 'put ''LDcuNDcsMCwwLDEtMi42OC0uNUg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk00LDE1SDMydjZI''@;'; put 'put ''NFpNNCwyOVYyM0gzMnY2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSI5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMTAiIHk9IjkiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIx''@;'; put 'put ''MCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAs''@;'; put 'put ''MCwzMiw1Wk00LDdIMzJ2Nkg0Wm0wLDhIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMiwz''@;'; put 'put ''MGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTksOS44OSwxOS41Niw5SDEw''@;'; put 'put ''VjdIMjAuNzFsMS43My0zSDRBMiwyLDAsMCwwLDIsNnY2SDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5Wk04LDlINlY3SDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzMuNjgs''@;'; put 'put ''MTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRIMnY4SDM0VjE1LjM4Wk04LDE5SDZWMTdIOFptMTYsMEgxMFYxN0gyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxl''@;'; put 'put ''cnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMiwxNHY4SDM0VjE0Wm02LDVINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yLDMw''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMFY3SDIyLjU3YTcu''@;'; put 'put ''NTIsNy41MiwwLDAsMS0uMDctMSw3LjQ5LDcuNDksMCwwLDEsLjI4LTJINEEyLDIsMCwwLDAsMiw2djZIMjUuNTFBNy41Miw3LjUyLDAsMCwxLDIzLjEzLDlaTTgsOUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDIySDM0VjE0SDJabTgtNUgyNHYySDEwWk02LDE3SDh2Mkg2WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2djZIMzRWNkEyLDIsMCwwLDAsMzIsNFpNOCw5SDZWN0g4Wk0yNCw5SDEwVjdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zIiBkPSJNMiwzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4nKSxMLkNsclNoYXBlSGFyZERpc2s9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNCIg''@;'; put 'put ''d2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zNCwyMS4wOGwtMS40LTUuNjhIMzAuNTFsMS40OSw2VjI5SDRWMjEuNDRMNy4wNiw5aDEyLjVsMS4x''@;'; put 'put ''NS0ySDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFBMSwxLDAsMCwwLDM0LDIxLjA4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzQsMjEuMDgsMzIsMTMuMjFh''@;'; put 'put ''Ny40OSw3LjQ5LDAsMCwxLTIsLjI5bDIsNy45NFYyOUg0VjIxLjQ0TDcuMDYsOUgyMy4xM2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUEx''@;'; put 'put ''LDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNCwyMS4wOCwzMC44Niw4LjQzQTIsMiwwLDAsMCwyOC45NCw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFB''@;'; put 'put ''MSwxLDAsMCwwLDM0LDIxLjA4Wk00LDI5VjIxLjQ0TDcuMDYsOUgyOC45M0wzMiwyMS40NFYyOVoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzIuNTgsMTUuNEgyMi4yM0Ez''@;'; put 'put ''LjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTTMyLDEzLjIxQTcuNDcsNy40NywwLDAsMSwyMi41Nyw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjg2LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMiwyMnY3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMlptMjgsNUgyNlYyNWg0WiIvPlxuJyksTC5DbHJTaGFwZUJhY2t1cFJlc3RvcmU9KDAsRS5jbHJJY29uU1ZHKSgnPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMTlhMSwxLDAsMSwwLDIs''@;'; put 'put ''MFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMxLjU4LDE1LjRIMjkuNDZjMSwy''@;'; put 'put ''Ljg1LDIuMzEsNi4zNywyLjU0LDcuMDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4x''@;'; put 'put ''MiwzNCwyMiwzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz''@;'; put 'put ''My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjIiIHdp''@;'; put 'put ''ZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVhMSwxLDAsMCwwLC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIuMTYsMTEuNjEsOC41QTEsMSww''@;'; put 'put ''LDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2Mmg3''@;'; put 'put ''Ljk1QzMwLDE2Ljk0LDMxLjcyLDIxLjY1LDMyLDIyLjQ4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIMTVWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1YzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjIu''@;'; put 'put ''MzNDMzQsMjIuMSwzNCwyMiwzMC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMjYiIHk9IjI2IiB3aWR0aD0i''@;'; put 'put ''NCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTEzLDkuOTIsMTcsNlYxOWExLDEsMCwxLDAsMiwwVjZsNCwzLjk1QTEsMSwwLDEsMCwyNC4zOCw4LjVMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAs''@;'; put 'put ''MCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYy''@;'; put 'put ''Mi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyMi4yM0EzLjYyLDMuNjIsMCwwLDEsMjEsMTUuMTZWMThhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMs''@;'; put 'put ''Mi4wNywyMkgzMy45M0MzMy43OSwyMS40OSwzMy4yOCwyMC4wNywzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOGEx''@;'; put 'put ''LDEsMCwxLDAsMiwwVjZsNCwzLjk1YTEsMSwwLDAsMCwuNzEuMjlsLjExLDBhNy40Niw3LjQ2LDAsMCwxLTEuMjUtMy41MkwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2NmEzLDMsMCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIy''@;'; put 'put ''SDMzLjkzQzMzLjc3LDIxLjQzLDMzLjE1LDE5LjcsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMiIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMsMzMuMTQsMTkuNjksMzAuODQs''@;'; put 'put ''MTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE4YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45''@;'; put 'put ''MloiLz5cbicpLEwuQ2xyU2hhcGVCYWNrdXA9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOCwxOS44NGw0LjQ3LTQuNDRoLS4yM2EzLjY3LDMuNjcsMCwwLDEtMi0uNjFMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCww''@;'; put 'put ''LTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEy''@;'; put 'put ''LjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUs''@;'; put 'put ''MCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uMjQsMS4zaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQtMkg3LjA3YTEuOTIsMS45Miww''@;'; put 'put ''LDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3LDEzLjQ1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIg''@;'; put 'put ''eT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMC44NCwxMy4zN0ExLjk0LDEuOTQsMCwwLDAsMjguOTMsMTJIMjYuNTVhMywzLDAsMCwx''@;'; put 'put ''LS4xNCwyaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQtMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2''@;'; put 'put ''VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTYuNTgsMjEuMjYsMTAuMiwxNC45MUEzLDMsMCwwLDEs''@;'; put 'put ''OS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yLDI0djZh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw0SDI2VjI2aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNS0uNTEtLjY1LTEuOTMt''@;'; put 'put ''Mi4zNS02LjZIMjUuM2wtNS44OSw1Ljg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQuNDctNC40NGgtLjIzYTMuNjQsMy42NCwwLDAsMS0yLS42MUwxOSwxNlY0YTEs''@;'; put 'put ''MSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWJhZGdlZCIgZD0iTTE2LjU4LDIxLjI2LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFk''@;'; put 'put ''Z2VkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNy0uNTctLjc5LTIuMy0zLjA2LTguNTVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNSw3LjQ2LDcuNDYsMCwwLDEtMy4zNS0uOCwzLDMsMCwwLDEtLjg2LDIuMjFsLTYuMzgsNi4zNVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAs''@;'; put 'put ''MSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTkuNDEsMjEuMjZsLS43NC43NEgzMy45M2MtLjE3LS41''@;'; put 'put ''Ny0uNzktMi4zMS0zLjA5LTguNjNBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDI2LjU1YTMsMywwLDAsMS0uNzYsMi45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xNi41OCwyMS4yNiwxMC4yLDE0LjkxQTMsMyww''@;'; put 'put ''LDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbicpLEwuQ2xyU2hhcGVEZXZpY2VzPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCww''@;'; put 'put ''LDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyNkgyNFYxNVpNMjQsMzBWMjcuNmg4VjMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMCwyMkg0VjZIMjh2NWgyVjZhMiwy''@;'; put 'put ''LDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMkgyMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAsMjZIOWExLDEsMCwwLDAsMCwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDEzSDI0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWMTVBMiwyLDAsMCwwLDMyLDEzWm0wLDJWMjhIMjRWMTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjgsNEg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMmg4djJIOS4zMkExLjIsMS4yLDAsMCwwLDgsMjdhMS4yLDEuMiwwLDAsMCwxLjMyLDFIMTkuOTJ2LS4zN0gyMFYyMkg0VjZIMjh2NWgyVjZBMiwyLDAsMCwwLDI4LDRa''@;'; put 'put ''Ii8+XG4nKSxMLkNsclNoYXBlS2V5Ym9hcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw4SDRhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCww''@;'; put 'put ''LDMyLDhabTAsMThINFYxMEgzMloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIHg9IjExIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE1IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjE5IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjIzIiB5PSIxMyIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTgiIHg9IjciIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMTEiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiB4PSIxOSIgeT0iMTci''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgeD0iMjMiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI3IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiB4PSIyNyIgeT0iMjIiIHdpZHRoPSIxLjk0IiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgeD0iNyIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTEu''@;'; put 'put ''MTMiIHk9IjIyIiB3aWR0aD0iMTMuNzUiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCww''@;'; put 'put ''LDAsMzIsOFpNMTksMTNoMnYySDE5Wm0wLDRoMnYySDE5Wm0tNC00aDJ2MkgxNVptMCw0aDJ2MkgxNVptLTQtNGgydjJIMTFaTTksMjRIN1YyMkg5Wm0wLTVIN1YxN0g5Wm0wLTRIN1YxM0g5Wm0yLDJoMnYySDExWm0xMy44OCw3SDExLjEzVjIySDI0Ljg4Wk0yNSwxOUgyM1YxN2gyWm0wLTRI''@;'; put 'put ''MjNWMTNoMlptMy45NCw5SDI3VjIyaDEuOTRaTTI5LDE5SDI3VjE3aDJabTAtNEgyN1YxM2gyWiIvPlxuJyksTC5DbHJTaGFwZU1vdXNlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMzRBMTAsMTAsMCww''@;'; put 'put ''LDEsOCwyNFYxMmExMCwxMCwwLDAsMSwyMCwwVjI0QTEwLDEwLDAsMCwxLDE4LDM0Wk0xOCw0YTgsOCwwLDAsMC04LDhWMjRhOCw4LDAsMCwwLDE2LDBWMTJBOCw4LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgZD0iTTE4LDE1YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDIsMHY0QTEsMSwwLDAsMSwxOCwxNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTEwLDEwLDAsMCwwLDgsMTJWMjRhMTAsMTAsMCww''@;'; put 'put ''LDAsMjAsMFYxMkExMCwxMCwwLDAsMCwxOCwyWm0xLjMsMTEuNDRhMS4zLDEuMywwLDAsMS0yLjYsMFYxMGExLjMsMS4zLDAsMCwxLDIuNiwwWiIvPlxuJyksTC5DbHJTaGFwZURhc2hib2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgZD0iTTI1LjE4LDEyLjMybC01LjkxLDUuODFhMywzLDAsMSwwLDEuNDEsMS40Mmw1LjkyLTUuODFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAs''@;'; put 'put ''MCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMtLjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTExLjM0LDI1LjVINi42NmExNC40MywxNC40MywwLDAsMS0zLjExLTcuODRIN3YtMkgzLjU1QTE0LjQxLDE0LjQxLDAsMCwxLDcsMTEuMjlsMi40NSwyLjQ1LDEuNDEtMS40MUw4LjQzLDku''@;'; put 'put ''ODdBMTQuNDEsMTQuNDEsMCwwLDEsMTcsNi4yOXYzLjVoMlY2LjNhMTQuNDcsMTQuNDcsMCwwLDEsMTMuNCwxMy42MUgyOC45MnYyaDMuNTNBMTQuNDMsMTQuNDMsMCwwLDEsMjkuMzQsMjkuNzVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTUuODUsMTguNjlhMywzLDAsMSwwLDQuODMuODVsNS45Mi01LjgxLTEuNDEtMS40MS01LjkxLDUuODFBMywzLDAsMCwwLDE1Ljg1LDE4LjY5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjU4LDEzYTcuNDUsNy40NSwwLDAsMS0yLjA2LjQ0LDE0LjQsMTQuNCwwLDAsMSwxLjkzLDYuNDNIMjguOTJ2MmgzLjUzYTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEsNy44NEg2LjY2YTE0LjQzLDE0LjQzLDAsMCwx''@;'; put 'put ''LTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUsMS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAsMSwxNyw2LjI5djMuNWgyVjYuM0ExNC40MSwxNC40MSwwLDAsMSwyMi41OCw3YTcuNTIsNy41MiwwLDAsMS0uMDgtMSw3LjUy''@;'; put 'put ''LDcuNTIsMCwwLDEsLjA5LTEuMDlBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAsMCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMt''@;'; put 'put ''LjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTguNiw5LjQ4LTUuOTIsNS44MWEzLDMsMCwxLDEtMS40MS0xLjQybDUuOTEtNS44MVptLTIzLDYuMTdIN3YySDMuNTZjMC0uMzktLjA1LS43Ny0uMDUtMS4xN1MzLjUzLDIwLjE4LDMuNTUsMTkuOVptNC44OC0xMCwyLjQ2LDIuNDZMOS40''@;'; put 'put ''NywxMy43NCw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDguNDMsOS44N1pNMTksOS43OUgxN1Y2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1Wk0zMi40OSwyMC43NGMwLC4zOSwwLC43OS0uMDUsMS4xN0gyOC45MnYtMmgzLjUzQzMyLjQ3LDIwLjE4LDMyLjQ5LDIwLjQ2LDMyLjQ5''@;'; put 'put ''LDIwLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIuNTgsMTNhNy40Niw3LjQ2LDAsMCwxLTEwLTguMTJBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wu''@;'; put 'put ''My0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNlpNMTcsNi4yOWMuMzIsMCwuNjMsMCwxLDBzLjcsMCwxLC4wNXYzLjVIMTdaTTcsMjEuOTFIMy41NmMwLS4zOS0uMDUtLjc3LS4wNS0xLjE3czAtLjU2LDAtLjgzSDdabTIuNTEtOC4xNkw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDgu''@;'; put 'put ''NDMsOS44N2wyLjQ2LDIuNDZabTEwLjYyLDkuMTlhMywzLDAsMSwxLS44Mi00LjgxbDUuOTEtNS44MSwxLjQxLDEuNDEtNS45Miw1LjgxQTMsMywwLDAsMSwyMC4wOSwyMi45M1ptMTIuMzUtMUgyOC45MnYtMmgzLjUzYzAsLjI4LDAsLjU1LDAsLjgzUzMyLjQ3LDIxLjUyLDMyLjQ0LDIxLjkx''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbicpLEwuQ2xyU2hhcGVIb3N0PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuM2EyLjQ4LDIuNDgsMCwxLDAsMi40OCwyLjQ3QTIuNDgsMi40OCwwLDAsMCwxOCwyNC4zWm0wLDMuNmExLjEzLDEuMTMsMCwxLDEsMS4xMy0xLjEyQTEuMTMsMS4xMywwLDAsMSwxOCwyNy45WiIvPjxy''@;'; put 'put ''ZWN0IHg9IjEzLjUiIHk9IjIwLjciIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjY1LDMuNkgxMC4zNUExLjM1LDEuMzUsMCwwLDAsOSw0Ljk1VjMyLjRIMjdW''@;'; put 'put ''NC45NUExLjM1LDEuMzUsMCwwLDAsMjUuNjUsMy42Wm0tLjQ1LDI3SDEwLjhWNS40SDI1LjJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjEyLjYiIHk9IjcuMiIgd2lkdGg9IjEwLjgiIGhlaWdodD0iMS40''@;'; put 'put ''NCIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi42IiB5PSIxMC44IiB3aWR0aD0iMTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIsMi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42''@;'; put 'put ''LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjEzIiB5PSIyMSIgd2lkdGg9IjEwIiBoZWlnaHQ9''@;'; put 'put ''IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBwb2ludHM9IjIxLjMsNiAxMiw2IDEyLDcuNiAyMC40LDcuNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTIsMTEuNmg2LjZjMC0wLjYsMC4yLTEuMSwwLjQtMS42aC03VjExLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0yNiwxNS40VjMySDEwVjRoMTIuNWwxLjEtMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTUuNEgyNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Ni0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEt''@;'; put 'put ''MC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIs''@;'; put 'put ''Mi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIxMyIgeT0iMjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0yNCwxMC41Yy0wLjEtMC4yLTAuMi0wLjMtMC4zLTAuNUgxMnYxLjZoMTJWMTAuNXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xMiw2djEuNmgxMC43Yy0w''@;'; put 'put ''LjEtMC41LTAuMi0xLjEtMC4yLTEuNkgxMnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIGQ9Ik0yNiwxMi4zVjMySDEwVjRoMTIuOGMwLjItMC43LDAuNS0xLjQsMC45LTJIOS41Qzgu''@;'; put 'put ''NywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjJDMjcuMywxMywyNi42LDEyLjcsMjYsMTIuM3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0i''@;'; put 'put ''NiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi41LDJoLTE3QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjMuNUMyOCwyLjcsMjcuMywyLDI2LjUsMnogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44''@;'; put 'put ''LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBWMjIuNnogTTI0LDExLjZIMTJWMTBoMTJWMTEuNnogTTI0LDcuNkgxMlY2aDEyVjcuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1LjNjLTIsMC0zLjctMS42LTMuNy0z''@;'; put 'put ''LjdIMTJWMTBoNi45YzAtMC4xLDAuMS0wLjIsMC4xLTAuMmwxLjItMi4ySDEyVjZoOS4ybDIuMy00aC0xNEM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS4zSDIyLjJ6IE0xOCwzMC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwz''@;'; put 'put ''MC41LDE4LDMwLjV6IE0yMywyMi42SDEzVjIxaDEwVjIyLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxbC01LjcsOS45Yy0wLjMsMC42LTAuMSwxLjQsMC41LDEuN2MwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmgxMS40YzAuNywwLDEuMy0wLjYs''@;'; put 'put ''MS4zLTEuM2MwLTAuMi0wLjEtMC40LTAuMi0wLjZMMjkuMSwxYy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuNywyNywwLjgsMjYuOSwxeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMjQsMTAuM3YxLjJIMTJWMTBoMTEuOGMtMC41LTAuNy0wLjgtMS41LTEtMi40SDEyVjZoMTAuNWMwLDAsMC0wLjEsMC0wLjFjMC0xLjQsMC40LTIuNywxLjEtMy45SDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxMy4xQzI2LjQsMTIuNiwyNSwxMS43LDI0LDEwLjN6IE0xOCwz''@;'; put 'put ''MC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwzMC41LDE4LDMwLjV6TTIzLDIyLjZIMTNWMjFoMTBWMjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1LjkiIHI9IjUiLz5cbicp''@;'; put 'put ''LEwuQ2xyU2hhcGVTdG9yYWdlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNi42OWgwYy0uMTgtMy40MS05LjQ3LTQuMzMtMTUtNC4zM1MzLDMuMjksMyw2Ljc4VjI5LjM3YzAsMy40OSw5LjQzLDQuNDMs''@;'; put 'put ''MTUsNC40M3MxNS0uOTMsMTUtNC40M1Y2Ljc4czAsMCwwLDBTMzMsNi43LDMzLDYuNjlabS0yLDcuNTZjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzIsNDMuMzIsMCwwLDAsMTgsMTguN2M0LDAsOS45My0uNDgsMTMtMnY1LjE3''@;'; put 'put ''Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMiw0My4zMiwwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdWNi44MkM1LjMsNiwxMCw0LjM2''@;'; put 'put ''LDE4LDQuMzZjNy43NywwLDEyLjQ2LDEuNTMsMTMsMi4zNy0uNTIuODctNS4yMSwyLjM5LTEzLDIuMzlBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdjNCwwLDkuOTMtLjQ4LDEzLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOS41MSw5LjA5LDE4LDkuMTFBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdoLjYxQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjguODMsMTUuNEEzOC4zNywzOC4zNywwLDAsMSwxOCwxNi43LDM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUuMzR2Mi4wOEE0My4zMyw0My4z''@;'; put 'put ''MywwLDAsMCwxOCwxOC43YzQsMCw5LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1YTQzLjMzLDQzLjMzLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUuODYtNS4wOCwyLjQ1LTEzLDIu''@;'; put 'put ''NDVTNS4zLDMwLjIsNSwyOS4zN1Y2LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmMxLjUsMCwyLjg5LjA2LDQuMTUuMTZsMS4xLTEuOWMtMS44Ni0uMTgtMy43LS4yNi01LjI1LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45Mywx''@;'; put 'put ''NS00LjQzdi0xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTcsNy43NlY5Ljg1''@;'; put 'put ''YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjcsNTQuODIsNTQuODIsMCwwLDAsNi4yLS4zNiw3LjUsNy41LDAsMCwxLTEuMTMtMS44OGMtMS41LjE1LTMuMi4yNC01LjA3LjI0QTM3LjYsMzcuNiwwLDAsMSw3LDcuNzZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDN2LjgyYy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywxNS4zNHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4x''@;'; put 'put ''N2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0uNDgsMTMtMnY1LjFjLS4zNS44Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3VjYuODJDNS4zLDYsMTAsNC4z''@;'; put 'put ''NiwxOCw0LjM2YzEuNywwLDMuMjUuMDgsNC42NC4yYTcuNDQsNy40NCwwLDAsMSwuNjctMS45NGMtMS44OC0uMTgtMy43NS0uMjYtNS4zMS0uMjYtNS41NywwLTE1LC45My0xNSw0LjQzVjI5LjM3YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1YxMi44N0E3LjQ1LDcu''@;'; put 'put ''NDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NFY4LjU5Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEu''@;'; put 'put ''NTFDMjYsMTAuNTMsMzIuNTIsOC43OSwzMyw2LjYxaDBDMzIuOCwzLjIsMjMuNTIsMi4yOCwxOCwyLjI4UzMsMy4yMSwzLDYuNzFWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCww''@;'; put 'put ''LDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE3LjkxLDIwLjI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yYTM5LjQsMzkuNCwwLDAsMCwxMS42NiwxLjUxYzYuOSwwLDEyLjct''@;'; put 'put ''MS4yNywxNC41MS0zSDIyLjIzYTMuNjcsMy42NywwLDAsMS0zLjU1LTIuNzVoLS43N0EzOS40LDM5LjQsMCwwLDEsNi4yNSwxMVY5YTM5LjQsMzkuNCwwLDAsMCwxMS42NiwxLjUxaC44MkEzLjY0LDMuNjQsMCwwLDEsMTksOS43NWw0LjE3LTcuMjJjLTEuODUtLjE4LTMuNjgtLjI1LTUuMjEt''@;'; put 'put ''LjI1LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2''@;'; put 'put ''LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0QzMyLjU3LDE4LjUzLDI2LDIwLjI4LDE3LjkxLDIwLjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44''@;'; put 'put ''NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NHYtMS42YTcuNDcsNy40NywwLDAsMS03LjM4LS44LDQ4LjMsNDguMywwLDAsMS03LjcxLjU5QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2''@;'; put 'put ''LDEuNTEsNTEsNTEsMCwwLDAsNi0uMzQsNy40Niw3LjQ2LDAsMCwxLS41OS03LjY1Yy0xLjg3LS4xOC0zLjczLS4yNi01LjI4LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2''@;'; put 'put ''LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5''@;'; put 'put ''LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNS44NiIgcj0iNSIvPlxuJyksTC5DbHJTaGFwZUNsdXN0ZXI9''@;'; put 'put ''KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjM2LDhIMjcuNXYySDMxVjMwSDI3LjV2MkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDgu''@;'; put 'put ''NVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEExLjY4LDEuNjgsMCwwLDAsMjQuMzIsNFpNMjQsMzBIMTJWNkgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxMEg4LjVWOEg0LjY0QTEuNjUsMS42''@;'; put 'put ''NSwwLDAsMCwzLDkuNjdWMzJIOC41VjMwSDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5bC4zOS0uNjhIMTMuNXYxLjZoNS4xN0EzLjY1LDMuNjUsMCwwLDEsMTksOS44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMzBIMTJWNmg5LjI5bDEuMTUtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxNS40SDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzEgMTUuNCAzMSAzMCAyNy41IDMwIDI3LjUgMzIgMzMgMzIgMzMgMTUuNCAzMSAxNS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIg''@;'; put 'put ''aGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LDEwLjQ5VjMwSDEyVjZIMjIuNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEw''@;'; put 'put ''LDUuNjhWMzJIMjZWMTIuMzRBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzBIMjcuNXYySDMzVjEyLjg3QTcuNDUsNy40''@;'; put 'put ''NSwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zNiw4SDI3LjVWMzJIMzNWOS42N0ExLjY1LDEuNjUsMCwwLDAsMzEuMzYsOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zLDkuNjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEExLjY4''@;'; put 'put ''LDEuNjgsMCwwLDAsMjQuMzIsNFpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDku''@;'; put 'put ''NjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuNSIgeT0iMTUuNCIgd2lkdGg9IjUuNSIgaGVpZ2h0PSIxNi42IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZhMy42OCwzLjY4LDAsMCwxLS4zMS0zSDEzVjloNi41NmwyLjg5LTVIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZW''@;'; put 'put ''MTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaTTE4LDI3Ljc5QTEuNzksMS43OSwwLDEsMSwxOS44MSwyNiwxLjgsMS44LDAsMCwxLDE4LDI3Ljc5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTIuMzRBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgs''@;'; put 'put ''MjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi41LS40NFYzMkgzM1YxMi44N0E3LjQ3LDcuNDcsMCwwLDEs''@;'; put 'put ''MzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVBcHBsaWNhdGlvbnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDQgMzAgOCAyNiA4IDI2IDEwIDMyIDEw''@;'; put 'put ''IDMyIDQgMzAgNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTkgMjYgMTkg''@;'; put 'put ''MjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUgMzAgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBw''@;'; put 'put ''b2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgOCAxNSA4IDE1IDEwIDIxIDEwIDIxIDQgMTkgNCAxOSA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5''@;'; put 'put ''Z29uIHBvaW50cz0iMTkgMTkgMTUgMTkgMTUgMjEgMjEgMjEgMjEgMTUgMTkgMTUgMTkgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAxOSAyNiAxOSAyNiAyMSAz''@;'; put 'put ''MiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDMwIDE1IDMwIDE1IDMyIDIxIDMyIDIxIDI2IDE5IDI2IDE5IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCA4IDQgOCA0IDEwIDEwIDEwIDEwIDQgOCA0IDggOCIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTUgMzAgMTkgMjYgMTkgMjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9''@;'; put 'put ''IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkg''@;'; put 'put ''MjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDhIMTV2Mmg0TDE5LDkuODksMjEsNi41VjRIMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQi''@;'; put 'put ''IHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iNCIgd2lkdGg9IjYiIGhlaWdo''@;'; put 'put ''dD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIy''@;'; put 'put ''NiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lk''@;'; put 'put ''dGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5''@;'; put 'put ''PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMTBoNEwxOSw5Ljg5LDIxLDYuNVY0SDE1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtOC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''OS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1''@;'; put 'put ''IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIx''@;'; put 'put ''NSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5''@;'; put 'put ''PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUJ1aWxkaW5nPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS44OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0gyMlY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxOS44OCwzWk0yMCwz''@;'; put 'put ''MUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5''@;'; put 'put ''PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjgiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0i''@;'; put 'put ''MTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE1LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzVjMxSDIzdjJIMzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMjAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cmVjdCB4''@;'; put 'put ''PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIy''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTgi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEz''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjIzIiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCwwLDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJWOC4yNGwyLTMuNDFBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNI''@;'; put 'put ''Ni4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjE1LjM4YTMuNjgsMy42OCwwLDAsMS0yLS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40''@;'; put 'put ''IDMxIDMxIDIzIDMxIDIzIDMzIDMzIDMzIDMzIDE1LjQgMzEgMTUuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMSw4SDIyVjMzSDMzVjEwQTIsMiwwLDAsMCwzMSw4Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEzaDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJabTAtNUgyOFYxM2gyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAtNUg3VjhIOVptNCwxNUgxMVYy''@;'; put 'put ''M2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4''@;'; put 'put ''LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWMTQuNjRhMy42NywzLjY3LDAsMCwxLTEtNC43NmwxLTEuNjVWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAtNUg3VjhIOVptNCwxNUgx''@;'; put 'put ''MVYyM2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRsLS4yMywwVjMzSDMzVjE1LjRaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm00LDVIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThI''@;'; put 'put ''OVptMC01SDdWMTNIOVptMC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMTVIMjhWMTMuMjJBNy41LDcuNSwwLDAsMSwyMi43OCw4SDIyVjMzSDMzVjEyLjg3QTcuNDcsNy40NywwLDAsMSwzMCwxMy41Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEz''@;'; put 'put ''aDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjN2Mmg4VjMxSDIzdjJIMzNWMTBBMiwyLDAsMCwwLDMxLDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2VjUuMTJBLjEyLjEyLDAsMCwxLDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxOCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIyMyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTE3Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjIzIiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIwIi8+XG4g''@;'; put 'put ''ICAgICAgICcpLEwuQ2xyU2hhcGVDUFU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjA4LDIzLjA3aC0xMXYxLjVIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTEuMzNoLTEuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzIuMiwxOC4xNWEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWOC4xQTIuMSwyLjEsMCwwLDAsMjcuOSw2SDI2LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44''@;'; put 'put ''YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44''@;'; put 'put ''LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNFpNMjgsMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4x''@;'; put 'put ''LjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjcuOWEuMS4xLDAsMCwxLC4xLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjA2LDI0LjU3SDIzLjgzYS43NS43NSwwLDAsMCwuNzUtLjc1''@;'; put 'put ''VjExLjMzaC0xLjVWMjMuMDdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjEzLjVhNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLTItLjI4VjI3LjlhLjEuMSwwLDAsMS0uMS4xSDguMWEuMS4xLDAsMCwxLS4xLS4xVjguMUEuMS4xLDAsMCwxLDguMSw4SDIyLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFB''@;'; put 'put ''Mi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJh''@;'; put 'put ''LjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44''@;'; put 'put ''LDAsMSwwLDAtMS42SDMwVjE1LjRIMjhWMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhoMTJsMS4xNS0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4x''@;'; put 'put ''LDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAs''@;'; put 'put ''MSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTUuNGgtMS41djcuNjdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMuNTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYxNS40SDI1djguNDFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjE1LjRoLS43N0EzLjY4LDMuNjgsMCwwLDEsMTks''@;'; put 'put ''OS44OUwyMS4yOSw2SDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwx''@;'; put 'put ''LDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCww''@;'; put 'put ''LDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44''@;'; put 'put ''LjgsMCwxLDAsMC0xLjZIMzBWMTMuNWE3LjQ2LDcuNDYsMCwwLDEtNS0xLjkyVjIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgxLjQyQTcuNDYsNy40NiwwLDAsMSwyMi41LDZIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEu''@;'; put 'put ''NiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYz''@;'; put 'put ''MGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4LjE1YS44LjgsMCwxLDAsMC0x''@;'; put 'put ''LjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYs''@;'; put 'put ''OC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiww''@;'; put 'put ''VjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40Wk0yNSwyMy44MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTFoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZU1lbW9yeT0oMCxFLmNsckljb25TVkcpKCc8cmVjdCB4PSI4IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI0IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''Miw3SDRBMiwyLDAsMCwwLDIsOXY0SDRWOUgzMnY0aDJWOUEyLDIsMCwwLDAsMzIsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3SDMyWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJI''@;'; put 'put ''MzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZBMy42NiwzLjY2LDAsMCwxLDE4LjU3LDEySDE2djhoNFYxNC42NEEzLjY3LDMuNjcs''@;'; put 'put ''MCwwLDEsMTksMTMuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjQiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjQuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMTkuNTZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3YTIsMiwwLDAsMCwyLDJIMTYu''@;'; put 'put ''NjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJIMzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyQTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyNHY4aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMjMuMTNhNy40NSw3LjQ1LDAsMCwxLS41NS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMTNWOWEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN0gzMlYxM1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFptOCwwSDI0VjEyaDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdW''@;'; put 'put ''MTUuMDdIMjhWMjBIMjRWMTUuMDdIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjMxVjIwSDE2VjEyaDIuNjFBMy42OCwzLjY4LDAsMCwxLDE5LDkuNTVMMjAuNTIsN0g0QTIsMiwwLDAsMCwyLDl2NEg0djRIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1SDE5VjI5SDMyYTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTdaTTEyLDIwSDhWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NS44bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNi44QTEuMjgsMS4yOCwwLDAsMCwyNi44NS44WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjEzLjIyYTcuMzMs''@;'; put 'put ''Ny4zMywwLDAsMS00LDBWMjBIMjRWMTJoMS41MWE3LjQ4LDcuNDgsMCwwLDEtMi45NC01SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4g''@;'; put 'put ''ICAgICAgICcpLEwuQ2xyU2hhcGVEYXRhQ2x1c3Rlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcuOTFWOS41YTE4Ljc1LDE4Ljc1LDAsMCwxLDIsLjJWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMzIsNy4yNywzMiw3''@;'; put 'put ''LjkxVjE4LjI0YzAsLjU0LTEuNDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYs''@;'; put 'put ''MTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1''@;'; put 'put ''LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEu''@;'; put 'put ''NTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUu''@;'; put 'put ''MjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEuNDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDE4LjI0VjcuOTFjMC0uNjUsMi4wOS0xLjg0LDUuNS0xLjg0UzE1LDcuMjcs''@;'; put 'put ''MTUsNy45MVY5LjdhMTguNzUsMTguNzUsMCwwLDEsMi0uMlY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMlYyMEM1LjQ2LDE5LjY4LDQsMTguNzgsNCwxOC4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuNjUsMTguNTJjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAs''@;'; put 'put ''MCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1''@;'; put 'put ''LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOGwuNzUsMGEzLjY5LDMuNjksMCwwLDEtLjA4LTJsLS42NiwwYy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMTUuNGgtMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0xLjc1LjYzLTMsMS42OC0zLDMuMTJWOS41bC4yNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjIuODRjMCwuNTQtMS40NiwxLjQ0LTMuOSwxLjczdjJjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43''@;'; put 'put ''NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44''@;'; put 'put ''NVptNi42NSw3LjY3Yy0uODUsMS0zLjQyLDItNi42NSwyQTE0LjQ5LDE0LjQ5LDAsMCwxLDE0LDIwdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djMuMTJjLS44NSwxLTMuNDIsMi02LjY1LDJhMTQuNDksMTQuNDksMCwwLDEtNC0uNTN2''@;'; put 'put ''MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2Mi4yOWMwLC45NS0yLjY1LDIuMzgtNi42NSwyLjM4cy02LjY1LTEuNDMtNi42NS0yLjM4VjE1LjIzYzAtLjk1LDIuNjUtMi4zOCw2LjY1LTIuMzhzNi42NSwxLjQzLDYuNjUsMi4zOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDcuOTFjMC0uMzMuNTUtLjgsMS41NC0xLjE4LDAtLjI0LDAtLjQ4LDAtLjczYTcuNTIsNy41MiwwLDAsMSwuMTQtMS40MUMyMC41NSw1LjE5''@;'; put 'put ''LDE5LDYuMywxOSw3LjkxVjkuNWExOC43NSwxOC43NSwwLDAsMSwyLC4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2NWMwLC41NC0xLjQ2LDEuNDQtMy45LDEuNzN2''@;'; put 'put ''MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1di01LjlBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjUsNC4wOEMyMi43Nyw0LjA4LDE5LDUuNCwxOSw3LjkxVjkuNDhjNS4zLjI2LDksMi42LDksNS43NnY2LjdsLjA1LjA2''@;'; put 'put ''YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRT''@;'; put 'put ''Miw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45Myww''@;'; put 'put ''LTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAsMCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1''@;'; put 'put ''LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuMjNDMjYuNjUsMTIuNzMsMjIuOTMsMTAuODUsMTgsMTAuODVaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4w''@;'; put 'put ''OCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjM5LTIuN2wtLjY2LDBjLTQuOTMsMC04LjY1LDEuODgtOC42''@;'; put 'put ''NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAsMSwxOCwyOGExNi43NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjIzLDguNjMtMy4y''@;'; put 'put ''M1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMTEsOC42My0zLjExVjE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDQuOGMtMS43NS42My0zLDEuNjgtMywzLjEyVjkuNDhsLjI3LDBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgyOHY2LjUzbC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDkuNDhWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJMOCwyMS45M3YtNi43QzgsMTIuMDgsMTEuNyw5Ljc0LDE3LDku''@;'; put 'put ''NDhaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4''@;'; put 'put ''LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwyMS43MiwyMywxOCwyM2ExNi43NywxNi43NywwLDAsMS02''@;'; put 'put ''LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTQtMS40QzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS40OGExNS4zMywxNS4zMywwLDAsMSw1LDFBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNDlBNy40Nyw3LjQ3LDAsMCwxLDI3LjM1LDEzYTQsNCwwLDAsMSwuNywyLjIzdjYuN2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxMi4zM0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNDlaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI1Ljk5IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIv''@;'; put 'put ''PlxuICAgICAgICAnKSxMLkNsclNoYXBlUmVzb3VyY2VQb29sPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxLjczYTE0LDE0LDAsMCwxLC4yMiwxLjZIMTcuNDlMOC4zLDI4LjA3QTE0LDE0LDAsMCwxLDIyLjA5LDQuNjJsMS0xLjc2QTE2LDE2LDAsMSwwLDM0LDE4''@;'; put 'put ''YTE2LDE2LDAsMCwwLS4yMy0yLjYxWk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThhMTQsMTQsMCwwLDEsMjcuOTUtMUgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsNCwxOFpNMTgs''@;'; put 'put ''MzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4yLDEzLjRhMTMuOTEsMTMuOTEsMCwwLDEsLjc1''@;'; put 'put ''LDMuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuNjEsNC44YTcuNDMsNy40MywwLDAsMSwuNTgtMS45MiwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNBNy40Myw3LjQzLDAsMCwxLDMxLjIsMTMuNFpNMTgsMzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5''@;'; put 'put ''SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguNTcsMzAuOUExNiwxNiwwLDAsMCwzMy45NSwxOUgxOC40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''My45NSwxN0ExNiwxNiwwLDEsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45NSwxN2ExNS45MSwxNS45MSwwLDAsMC0uODQtNC4xOCw3LjQ5LDcuNDksMCwwLDEtOS45Mi05Ljk0QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE2LDE2LDAsMCwwLS4xOC0xLjYxSDIyLjIz''@;'; put 'put ''QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDQuMDYtN0ExNiwxNiwwLDAsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+''@;'; put 'put ''XG4gICAgICAgICcpLEwuQ2xyU2hhcGVTaGllbGRDaGVjaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5''@;'; put 'put ''LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2''@;'; put 'put ''LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMTAuODgsMTYuODdhMSwxLDAsMCwwLTEuNDEsMS40MWw2LDZMMjYuNCwxMy43N0ExLDEsMCwwLDAsMjUsMTIuMzNsLTkuNDcsOS4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40''@;'; put 'put ''NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVptLTQuNTcsNi42NUwxNS41MSwyNC45LDkuMTksMTguNTdhMS40LDEuNCwwLDAsMSwyLTJMMTUuNTQsMjEsMjQuNzMsMTJhMS40LDEuNCwwLDEsMSwyLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVTaGllbGQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgs''@;'; put 'put ''My4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTIt''@;'; put 'put ''NS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjR2LjUzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTNjMSwuNjQsMi4yLDEuMjcsMy40Mywx''@;'; put 'put ''Ljg5bDEtMS43NGE0MS4xLDQxLjEsMCwwLDEtMy44OS0yLjE4TDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwx''@;'; put 'put ''My42Ni01LjA1LDEzLjY2LTE4LjQ1VjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''MCwxMy41djIuNDNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0Ni4xOSw0Ni4xOSwwLDAsMCw0LjUxLDIuNDJjMC0uMSwwLS4xOSwwLS4yOWE3LjQ5''@;'; put 'put ''LDcuNDksMCwwLDEsLjIzLTEuODMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0''@;'; put 'put ''LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEu''@;'; put 'put ''NWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40Myw0YTQxLjEsNDEuMSwwLDAsMS0zLjg5LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQz''@;'; put 'put ''Ljc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS03LjI3LTkuMzMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYu''@;'; put 'put ''MDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAg''@;'; put 'put ''JyksTC5DbHJTaGFwZVNoaWVsZFg9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0''@;'; put 'put ''Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0''@;'; put 'put ''LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTIyLjgxLDEwLjc5LDE4LDE1LjYxbC00LjgxLTQuODFhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxN2wtNC44MSw0LjgxYTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTguNDNsNC44MSw0LjgxYTEsMSwwLDAsMCwxLjQxLTEuNDFMMTkuNDEsMTdsNC44MS00LjgxYTEsMSwwLDAsMC0x''@;'; put 'put ''LjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwx''@;'; put 'put ''LTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTI0LjUxLDIxLjU1YTEuNCwxLjQsMCwwLDEtMiwyTDE4LDE5''@;'; put 'put ''bC00LjUzLDQuNTNhMS40MywxLjQzLDAsMCwxLTIsMCwxLjQsMS40LDAsMCwxLDAtMkwxNiwxN2wtNC41My00LjUzYTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE1bDQuNTMtNC41M2ExLjQsMS40LDAsMCwxLDIsMkwyMCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUltcG9ydD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxNC44N0w4LDEwLjg2VjE1aDJWMTMuNjFoNy42MVY2SDI4VjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaTTE2LDEySDEwdi0u''@;'; put 'put ''MzJMMTUuNyw2SDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4yLDIxSDNhMSwx''@;'; put 'put ''LDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgz''@;'; put 'put ''YTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFoNy42MVY2aDMuNjhsMS4xNS0ySDE0Ljg3TDgsMTAuODZWMTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2SDEwWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42''@;'; put 'put ''OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgzYTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMEg4YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDEzLjYxaDcuNjFWNkgyMi41YTcuNDks''@;'; put 'put ''Ny40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjE1aDJabTAtMS45MkwxNS43LDZIMTZ2NkgxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIs''@;'; put 'put ''MCwwLDAsMjgsNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhhMSwxLDAs''@;'; put 'put ''MCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2''@;'; put 'put ''YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhhMSwxLDAsMCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy41''@;'; put 'put ''LDcuNSwwLDAsMSwyMi41LDZaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVFeHBvcnQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDI0djguMzhoMlY2YTIsMiwwLDAsMC0yLTJIMTAuODdMNCwxMC44N1YzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJINlptMC0xLjkyTDExLjY5LDZIMTJ2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIx''@;'; put 'put ''SDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMw''@;'; put 'put ''LjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcu''@;'; put 'put ''NjFWNmg3LjY4bDEuMTUtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMTIuMzRhNy41Myw3LjUzLDAsMCwxLTItMS44NXYzLjg5aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcuNjFWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjZhMiwyLDAsMCwwLTItMkgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMxLjE2LDIxSDI2djJoNS4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzUsMjJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAs''@;'; put 'put ''MCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjEyLjM0QTcuNDYsNy40NiwwLDAsMSwyMi43OCw0SDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYtLjMyTDExLjY5''@;'; put 'put ''LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIvPlxuICAgICAgICAnKSxMLkNsclNoYXBlVXBsb2FkQ2xvdWQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEsMC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5Ljc0LDkuNzQsMCww''@;'; put 'put ''LDAsMS42LDE4LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAsMSwwLC44bC0uMDguNzIuNjUu''@;'; put 'put ''M0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAuMTRsLTUtNS01LDVhMSwxLDAs''@;'; put 'put ''MCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIuNTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDIxLjg1QTEsMSwwLDAs''@;'; put 'put ''MCwyMywyMC4xNGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSwwLDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4yOCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDctLjQ1LDEwLjQ3LDEwLjQ3LDAsMCww''@;'; put 'put ''LTkuNiw2LjFBOS43NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgxNVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDIxdjJoNS4zOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUtNSw1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwyLjU3LDIuNTdBMSwxLDAsMCww''@;'; put 'put ''LDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1LDAsLjIzbC0uMDguNzIuNjUu''@;'; put 'put ''M0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCw0LjU0LTE0LjU2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwx''@;'; put 'put ''MSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4Ljc5LDguNzksMCwwLDEsMi42OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNzQsOS43NCwwLDAsMCwxLjYs''@;'; put 'put ''MTguNCw5LjYyLDkuNjIsMCwwLDAsMTEuMjUsMjhIMTVWMjZIMTEuMjVBNy42Niw3LjY2LDAsMCwxLDMuNiwxOC4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZURvd25sb2FkQ2xvdWQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEs''@;'; put 'put ''MC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5LjY1LDkuNjUsMCwwLDAsMTAuODksMjhhMywzLDAsMCwxLDAtMkE3LjY1LDcuNjUsMCwwLDEsMTEsMTAuNzRsLjY3LDAsLjIzLS42M2E4LjQzLDguNDMsMCwwLDEsOC01LjQsOC4yNiw4''@;'; put 'put ''LjI2LDAsMCwxLDguNDUsOCw3Ljc1LDcuNzUsMCwwLDEsMCwuOGwtLjA4LjcyLjY1LjNBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4yOGE4LDgsMCwwLDAsMy45My0xNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIuNTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljg3LDQuNjlhOC44MSw4LjgxLDAsMCwxLDIsLjI1bDEtMS44YTEwLjgsMTAuOCwwLDAsMC0zLjA3LS40NSwxMC40NywxMC40Nyww''@;'; put 'put ''LDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTguNDMsOC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4yOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIu''@;'; put 'put ''NTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4Ljc5LDguNzksMCwwLDEsMi42''@;'; put 'put ''OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTguNDMs''@;'; put 'put ''OC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1LDAsLjIzbC0u''@;'; put 'put ''MDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCw0LjU0LTE0LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxMLkNsclNoYXBlUGx1Z2luPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIs''@;'; put 'put ''MiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2Wm0yLjQxLDdBMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlWN2EzLDMsMCwwLDEsMS0yLjIy''@;'; put 'put ''QTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoOFYxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI5LjgxLDE2SDI5di0uNkgyN1YxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjMsMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlWN2EzLDMs''@;'; put 'put ''MCwwLDEsMS0yLjIyQTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoLjY2TDIxLDYuNTlBNS4xMiw1LjEyLDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywz''@;'; put 'put ''LDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWMTMuNDNhNy40NSw3LjQ1LDAsMCwxLTItLjU1VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMyww''@;'; put 'put ''LDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2g0LjA2''@;'; put 'put ''YTcuNDQsNy40NCwwLDAsMS0uNTEtMkgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0i''@;'; put 'put ''NiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWOC44M2EyLDIsMCwwLDAtMi0ySDIxQTUuMTQsNS4xNCwwLDAsMCwxNi41MSwyLDUs''@;'; put 'put ''NSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4x''@;'; put 'put ''NSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOXYtLjZIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEsNi41OUE1LjEyLDUuMTIsMCwwLDAsMTYuNTEsMiw1LDUs''@;'; put 'put ''MCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUs''@;'; put 'put ''MCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWMTMuNDNhNy41''@;'; put 'put ''LDcuNSwwLDAsMS02LjQ1LTYuNTlIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0i''@;'; put 'put ''NSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUZsb3BweT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuMzYsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMGEyLDIsMCwwLDAsMi0yVjguNzhaTTI1LDMwSDExVjIySDI1Wm01LDBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJIMTJWNkgyNi41MUwzMCw5LjU5WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDI3VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0xLjY4bC0uNDMtLjNIMTJWNkgyMi41YTcu''@;'; put 'put ''NDksNy40OSwwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDI3''@;'; put 'put ''VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMmg3LjM1YTMuNTQsMy41NCwwLDAsMS0uNzctMkgxMlY2aDkuMjlsMS4xNS0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNMjUsMzBI''@;'; put 'put ''MTFWMjJIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwz''@;'; put 'put ''NC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4zNiw0SDZBMiwyLDAsMCww''@;'; put 'put ''LDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjYsMzBIMTBWMjEuNUExLjUsMS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41Wk0yNCwxNEgxMmEyLDIsMCwwLDEtMi0yVjZoMnY2SDI2QTIsMiwwLDAsMSwyNCwxNFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDYsNy40NiwwLDAsMS00LTEuMThBMiwyLDAsMCwxLDI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjUuNTRhNy40NSw3LjQ1LDAsMCwxLTIuNzYtOEg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIz''@;'; put 'put ''LDE1LjRBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZoNi41OEEzLjY3LDMuNjcsMCwwLDEsMTksOS44OUwyMi40NSw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNMjYsMzBIMTBWMjEuNUExLjUs''@;'; put 'put ''MS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIy''@;'; put 'put ''LjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAnKSxMLkNs''@;'; put 'put ''clNoYXBlQ29tcHV0ZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjYgMjIuODggOS42IDEwLjYgMjQuNCAxMC42IDI1Ljk4IDkgOCA5IDggMjIuODggOS42IDIyLjg4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTYsN0gzMFYyM2gyVjYuNUExLjUsMS41LDAsMCwwLDMwLjUsNUg1LjVBMS41LDEuNSwwLDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42''@;'; put 'put ''LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42''@;'; put 'put ''VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjYsMjIuODhWMTAu''@;'; put 'put ''Nmg5LjE0QTMuNjQsMy42NCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIOFYyMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDIwLjcxbDEuMTUtMkg1LjVBMS41LDEuNSww''@;'; put 'put ''LDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjMwIiB5PSIxNS40IiB3aWR0aD0iMiIgaGVpZ2h0PSI3LjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2''@;'; put 'put ''Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIu''@;'; put 'put ''NlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUyLDAsMCwxLC4wNy0xSDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZWN0gyMi41N0E3LjUyLDcuNTIsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNVYyM2gyVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjMuMTMsOUg4VjIyLjg4SDkuNlYxMC42SDI0LjA4QTcuNDksNy40OSwwLDAsMSwyMy4xMyw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0xLjI2LS42LTEuNjEtMS41SDF2''@;'; put 'put ''MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMjlWMjRoM1Y3LjU3QTEuNTQsMS41NCwwLDAsMCwzMC41''@;'; put 'put ''LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44MSwyNmMtLjM1LjktLjk0LDEuNS0xLjYxLDEuNUgxMy43NGMtLjY4LDAtMS4yNi0uNi0xLjYxLTEuNUgx''@;'; put 'put ''djEuNzVBMi40NSwyLjQ1LDAsMCwwLDMuNiwzMEgzMi40QTIuNDUsMi40NSwwLDAsMCwzNSwyNy43NVYyNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI5IiB5PSIxNS40IiB3aWR0aD0i''@;'; put 'put ''MyIgaGVpZ2h0PSI4LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDEwSDE5TDE5LDkuODksMjEuMjksNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0x''@;'; put 'put ''LjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDEw''@;'; put 'put ''SDIzLjY2QTcuNDYsNy40NiwwLDAsMSwyMi41LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJhNy4xNCw3LjE0LDAs''@;'; put 'put ''MCwxLTMsLjJWMjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVEaXNwbGF5PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUs''@;'; put 'put ''MS41LDAsMCwwLDMyLjUsM1pNMzIsMjVINFY1SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNy43IDguNzYgMjguMTMgOC43NiAyOS45NCA3LjE2IDYuMSA3LjE2IDYuMSAyMyA3LjcgMjMgNy43''@;'; put 'put ''IDguNzYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4y''@;'; put 'put ''LDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0''@;'; put 'put ''LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYy''@;'; put 'put ''NUg0VjVIMjEuODdMMjMsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWMTUuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgMjMgNy43IDguNzYgMTkuNyA4Ljc2IDIwLjYyIDcuMTYgNi4xIDcuMTYgNi4xIDIzIDcuNyAyMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4''@;'; put 'put ''LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTYuMSwyM0g3LjdWOC43NkgyM2E3LjQ0LDcuNDQsMCwwLDEtLjQzLTEuNkg2LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYyNUg0''@;'; put 'put ''VjVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUsMS41LDAsMCwwLDMyLjUsM1pNMzEsMjEuODNINVY3SDMx''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAsMS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5Ljk0YTEsMSwwLDEsMCwwLDJI''@;'; put 'put ''MjYuMDZhLjkyLjkyLDAsMCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMXY2LjQzSDVWN0gyMC43MUwyMywzSDMuNUExLjUs''@;'; put 'put ''MS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0''@;'; put 'put ''LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCww''@;'; put 'put ''LDI2LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwxMy40M3Y4LjQxSDVWN0gyMi41N2E3LjI5LDcuMjksMCwwLDEsLjU1LTRIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41''@;'; put 'put ''LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDQsNy40NCwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9''@;'; put 'put ''IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVUZXJtaW5hbD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMlY5LjJINFpNNCwyOVYxMC44SDMyVjI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCAxMy43OSAxOC44IDcgMjEuOTEgNyAyNC4xMSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOUg0VjEwLjhIMTguNjhBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjIzIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMjlINFYxMC44SDI0LjI0YTcuNTEsNy41MSwwLDAsMS0xLTEuNkg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIs''@;'; put 'put ''Ny41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIs''@;'; put 'put ''MCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNi44LDE1LjgxVjEzLjE3bDEwLDQuNTl2Mi4wOGwtMTAsNC41OVYyMS43OGw2LjUxLTNaTTIzLjQsMjUuNEgxN1YyM2g2LjRaTTQsOS4yVjdIMzJWOS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bC40LS42OUg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTE2LjgsMTku''@;'; put 'put ''ODNsLTEwLDQuNTlWMjEuNzhsNi41MS0zLTYuNTEtM1YxMy4xN2wxMCw0LjU5Wm02LjYsNS41N0gxN1YyM2g2LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEu''@;'; put 'put ''MTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''YWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNi43OC00LjNINFY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0zVjEzLjE3bDEwLDQuNTlabTYuNiw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVDb2RlPSgwLEUuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwzLjYzLTUuMzIsMy42M2ExLDEsMCwwLDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAsMC0xLjY1WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsOS44M2EuOS45LDAsMCwwLTEuMDkuNjZMMTUuNDEsMjQuMjlhLjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhsMy40NC0xMy44MUEuOS45LDAs''@;'; put 'put ''MCwwLDE5Ljk0LDkuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAs''@;'; put 'put ''MS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTYsMTEuNjIsMTUuNDEsMjQuMjlh''@;'; put 'put ''LjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhMMTkuNzMsMTQuNGEzLjU5LDMuNTksMCwwLDEtMS4xNi0yLjc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMzAuMjEsMTYuNzhsLTItMS4zOEgyNC42NGwzLjI0LDIuMjEtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCwwLTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDgu''@;'; put 'put ''MTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjIxLDE2Ljc4bC02LjUzLTQuNDVBMSwxLDAsMSwwLDIyLjU1''@;'; put 'put ''LDE0bDUuMzIsMy42My01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCw5''@;'; put 'put ''LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwzLjQ0LTEzLjgxQS45LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUFwcGxpY2F0aW9uPSgw''@;'; put 'put ''LEUuY2xySWNvblNWRykoJzxyZWN0IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMyIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIs''@;'; put 'put ''MiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsNkgzMnY0LjJINFpNNCwzMFYxMS44SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRabTAsNi4ySDRWNkgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1IiB5PSI3IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQmF0dGVyeT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEu''@;'; put 'put ''NzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMuNTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4xMiw0SDIzVjMuNThBMS41OCwx''@;'; put 'put ''LjU4LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWNS44OEExLjg4LDEuODgsMCwwLDAsMjUu''@;'; put 'put ''MTIsNFpNMjUsMzJIMTFWNmg0VjRoNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC41OSwxMS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5LDEwLjU5YTEsMSwwLDAsMCwx''@;'; put 'put ''Ljc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMz''@;'; put 'put ''LjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI1LDE1LjRWMzJIMTFWNmg0VjRoNlY2aC4yOGwxLjY0LTIuODVBMS41NywxLjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkEx''@;'; put 'put ''Ljg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0xLjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjksMTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0zLjUzLTcuMDgsNi4zOCwxLjA2''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDExLjU4VjMySDExVjZoNFY0aDZWNkgyMi41QTcuNDcsNy40NywwLDAsMSwyMywzLjM4LDEuNTcsMS41NywwLDAsMCwyMS40Miwy''@;'; put 'put ''SDE0LjU4QTEuNTgsMS41OCwwLDAsMCwxMywzLjU4VjRIMTAuODhBMS44OCwxLjg4LDAsMCwwLDksNS44OFYzMi4xMkExLjg4LDEuODgsMCwwLDAsMTAuODgsMzRIMjUuMTJBMS44OCwxLjg4LDAsMCwwLDI3LDMyLjEyVjEyLjg3QTcuNSw3LjUsMCwwLDEsMjUsMTEuNThaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNFYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAs''@;'; put 'put ''MCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NHYtMjhBMS4wOSwxLjA5LDAsMCwwLDI2LDRaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYu''@;'; put 'put ''ODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42NiwzLjY2LDAsMCwxLDIwLjU1LDE1bDIuNzYsNC43OUwxNi45LDE4LjdsMy4z''@;'; put 'put ''Niw2LjczYTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmwuMDkuMTVBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgyMlYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42''@;'; put 'put ''MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjJWMi42MkEuNi42LDAsMCwwLDIxLjQyLDJIMTQu''@;'; put 'put ''NThhLjYuNiwwLDAsMC0uNTguNjJWNEgxMEExLjA5LDEuMDksMCwwLDAsOSw1LjA3djI4QTEsMSwwLDAsMCwxMCwzNEgyNmExLDEsMCwwLDAsMS0uOTRWMTIuODdBNy41LDcuNSwwLDAsMSwyMi41LDZaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYs''@;'; put 'put ''MS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVNb2JpbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTEsNkgyNVYyNEgxMVptMCwyNFYyNkgyNXY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxNyIgeT0iMjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWNkEyLDIsMCwwLDAsMjUsNFpNMTksMzBIMTdWMjhoMlptLTgtNFY2SDI1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZVRhYmxldD0oMCxFLmNsckljb25TVkcpKCc8cmVjdCB4PSIxNyIgeT0iMjkiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEyLDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwzMCwyWm0wLDJWMjYu''@;'; put 'put ''MzhINlY0Wk02LDMyVjI4SDMwdjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwySDZBMiwyLDAsMCwwLDQsNFYzMmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMzAsMlpN''@;'; put 'put ''MTksMzJIMTdWMzBoMlpNNiwyOFY0SDMwVjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZU5ldHdvcmtHbG9iZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThh''@;'; put 'put ''MSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJhMTQsMTQsMCwwLDAtMTQsMTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWm0wLDJhMTIs''@;'; put 'put ''MTIsMCwwLDEsOC40NCwzLjQ4YzAsLjMzLDAsLjY2LDAsMUExOC41MSwxOC41MSwwLDAsMCwxNCw4LjUzYTIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBjLS4xMi0uNDItLjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS45MiwxMS45MiwwLDAsMSwxNy43NSw0Wm0t''@;'; put 'put ''Myw1Ljg3QTE3LDE3LDAsMCwxLDI1LjkyLDEwYTE2LjksMTYuOSwwLDAsMS0zLjExLDcsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4zNS0uMi0uNy0uNC0xLS42M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3Wm0tNC0zLjZjMCwuMjEuMDYuNDMuMS42''@;'; put 'put ''NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45''@;'; put 'put ''MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0''@;'; put 'put ''LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41Myww''@;'; put 'put ''QTEyLDEyLDAsMCwxLDE3Ljc1LDI4Wm02LjUxLTguOWEyLjMzLDIuMzMsMCwwLDAtLjMzLTEuMTksMTguNCwxOC40LDAsMCwwLDMuMzktNy4zN3EuNzUuMzUsMS40OC43OGExMiwxMiwwLDAsMSwuNDIsOC4yQTE2LDE2LDAsMCwxLDI0LjI3LDE5LjExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRoLTJjMCwuMiwwLC40LDAsLjYxYTEyLDEyLDAsMCwxLS41MywzLjUyLDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC44NywxOC44NywwLDAsMCwxLjYyLTIuNTJIMjMuODNhMTcuMjksMTcuMjksMCwwLDEtMSwx''@;'; put 'put ''LjU0LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43N0ExNy4wOCwxNy4wOCwwLDAsMSwxOS41Niw5bC44Ny0xLjUxYTE4LjU5LDE4LjU5LDAsMCwwLTYuMzksMSwyLjMzLDIuMzMs''@;'; put 'put ''MCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuODgsMTEuODgsMCwwLDEsMjIsNC43OUwyMywzQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDAsMCwzMS43NiwxNkMz''@;'; put 'put ''MS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFptLTIxLTkuMTNjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIu''@;'; put 'put ''MzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2''@;'; put 'put ''QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDct''@;'; put 'put ''My41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTVsLS41MSwwYTExLjkxLDExLjkxLDAsMCwxLS4yNSw2LDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC41OSwxOC41OSwwLDAsMCwyLjc4LTUuMTgsNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLTEuMzEtLjgyLDE3LDE3LDAsMCwxLTIuNjEsNSwyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQuOTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzcsMTcsMTcsMCwwLDEsOC41My0uNjIsNy40Myw3LjQzLDAsMCwxLS41''@;'; put 'put ''Ni0xLjU5QTE4LjU2LDE4LjU2LDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0uMTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjkyLDAsMCwxLDIyLjU3LDVhNy40NSw3LjQ1LDAsMCwxLC41My0yQTE0LDE0LDAs''@;'; put 'put ''MCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00Wk0xMC43Niw2LjI3YzAsLjIxLjA2LjQzLjEuNjQuMDkuNDQuMjEuODcuMzMsMS4zYTIuMjgsMi4yOCwwLDAsMC0xLjEsMi4yNUExOC4zMiwxOC4zMiwwLDAsMCw1LjksMTQuMjIsMTIsMTIs''@;'; put 'put ''MCwwLDEsMTAuNzYsNi4yN1ptMCwxNS43MUEyLjM0LDIuMzQsMCwwLDAsOS4yLDIzLjc0bC0uNjQsMEExMS45NCwxMS45NCwwLDAsMSw1LjgsMTYuOTJsLjExLS4xOWExNi45LDE2LjksMCwwLDEsNC44MS00Ljg5LDIuMzEsMi4zMSwwLDAsMCwyLjI4LjYzLDE3LjUzLDE3LjUzLDAsMCwwLDUu''@;'; put 'put ''MzUsNS42NWMuNDEuMjcuODMuNTIsMS4yNS43NkEyLjMyLDIuMzIsMCwwLDAsMTkuNzgsMjBhMTYuOTQsMTYuOTQsMCwwLDEtNi4yLDMuMTFBMi4zNCwyLjM0LDAsMCwwLDEwLjc2LDIyWm03LDZhMTEuOTIsMTEuOTIsMCwwLDEtNS44MS0xLjUxbC4yOC0uMDZhMi4zNCwyLjM0LDAsMCwwLDEu''@;'; put 'put ''NTctMS43OSwxOC40MywxOC40MywwLDAsMCw3LTMuNSwyLjI5LDIuMjksMCwwLDAsMy0uNjIsMTcuNDEsMTcuNDEsMCwwLDAsNC4zMi41NmwuNTMsMEExMiwxMiwwLDAsMSwxNy43NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdl''@;'; put 'put ''ZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAs''@;'; put 'put ''MSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUuMjNjLjM0LjIzLjY5LjQzLDEs''@;'; put 'put ''LjYzYTIuMjgsMi4yOCwwLDAsMSwyLjU4LS41NywxNi45LDE2LjksMCwwLDAsMy4xMS03QTE3LDE3LDAsMCwwLDE0LjcyLDkuODdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJhMTQsMTQsMCwwLDAtMTQs''@;'; put 'put ''MTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWk0yOC4xLDIxLjA5YTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSwwLDAsMS0zLC42MiwxOC40MywxOC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjku''@;'; put 'put ''MDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQyLS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3''@;'; put 'put ''YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43NSwwLDAsMSw0LjItMy44LDIuMjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMs''@;'; put 'put ''MC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQsOC41M2ExOC41MSwxOC41MSwwLDAsMSwxMi4xMS0uMDdjMC0uMzIsMC0uNjUsMC0xaDBhMTIsMTIsMCwwLDEsMi42''@;'; put 'put ''MiwzLjg1aDBxLS43My0uNDMtMS40OC0uNzhhMTguNCwxOC40LDAsMCwxLTMuMzksNy4zNywyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwuNDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRI''@;'; put 'put ''MjUuNTZhMTguODcsMTguODcsMCwwLDEtMS42MiwyLjUyLDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAsMS0uNjEsMS41M0gyOC4xYTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSwwLDAsMS0zLC42MiwxOC40Mywx''@;'; put 'put ''OC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjkuMDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQy''@;'; put 'put ''LS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43NSwwLDAsMSw0LjItMy44LDIu''@;'; put 'put ''MjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMsMC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQsOC41M2ExOC41OSwxOC41OSww''@;'; put 'put ''LDAsMSw2LjM5LTFMMjMsM0ExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBBMTQsMTQsMCwwLDAsMzEuNzYsMTZDMzEuNzYsMTUuOCwzMS43NCwxNS42LDMxLjczLDE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjI2LDExLjY0YTE2LDE2LDAsMCwwLDQuOTMsNS4yM2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4yOCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE3LjI5LDE3LjI5LDAsMCwwLDEtMS41NGgtMS42QTMuNjgsMy42OCwwLDAsMSwxOSw5''@;'; put 'put ''Ljg5TDE5LjU2LDlhMTcuMDgsMTcuMDgsMCwwLDAtNC44NC44OCwyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMs''@;'; put 'put ''MTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxl''@;'; put 'put ''cnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNSwxMy4z''@;'; put 'put ''NWE3LjU0LDcuNTQsMCwwLDEtMS41LjE1LDcuNDYsNy40NiwwLDAsMS0zLjI4LS43NiwxOC41OSwxOC41OSwwLDAsMS0yLjc4LDUuMTgsMi4zMywyLjMzLDAsMCwxLC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUzSDI4LjFhMTcuNDEsMTcuNDEs''@;'; put 'put ''MCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQs''@;'; put 'put ''MCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEy''@;'; put 'put ''LDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3''@;'; put 'put ''bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjU2LDE4LjU2LDAsMCwxLDguNjUtLjg3LDcuNDUsNy40NSwwLDAsMSwuNDEtNC41OUExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBhMTQsMTQsMCwxLDAsMjcuNjgtNFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzIsOS44N2EyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzcsMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4LDIuMjgsMCwwLDEsMi41OC0u''@;'; put 'put ''NTcsMTcsMTcsMCwwLDAsMi42MS01LDcuNTIsNy41MiwwLDAsMS0yLjE2LTIuNjdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSww''@;'; put 'put ''LDAsMCwxLjc0LTEuNjhjLjU0LS4xNCwxLjA2LS4zMiwxLjU5LS41MXYtMS4yYTIuNzcsMi43NywwLDAsMSwuMDYtLjUxLDE3LjQ0LDE3LjQ0LDAsMCwxLTEuODIuNjIsMi4yOCwyLjI4LDAsMCwwLTQuMjguNjNsLS40NSwwaDBhMTEuOTMsMTEuOTMsMCwwLDEtMi44OC03LjI3LDE3Ljc5LDE3''@;'; put 'put ''Ljc5LDAsMCwxLDUtNC43MiwyLjIzLDIuMjMsMCwwLDAsMi4yOS41NiwxOC41MiwxOC41MiwwLDAsMCw0LjQ3LDUsMi43NCwyLjc0LDAsMCwxLC4yMS0uMjRsLjk1LS45MWExNi45LDE2LjksMCwwLDEtNC4zNS00Ljc5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4yYzAtLjA3LDAtLjE0LDAtLjIy''@;'; put 'put ''QTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNGwuMTksMGgxLjU2YTE5LDE5LDAsMCwwLC45MS0yLjcyYy40My4xOS44NC40MSwxLjI2LjY0YTExLjk0LDExLjk0LDAsMCwxLDEsNC4wOWwwLDBBMi43NywyLjc3LDAsMCwxLDMwLDE2YTIuNzMsMi43''@;'; put 'put ''MywwLDAsMSwuNjguMUExNCwxNCwwLDEsMCwxNi4wOCwzMWEyLjcyLDIuNzIsMCwwLDEsMC0yQTExLjkzLDExLjkzLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCwwLDAtMTIuMzUuMTFBMi4y''@;'; put 'put ''OCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCwwLDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwxOS40NSwwLDAsMCw1LDE0''@;'; put 'put ''Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDIxLjE5QTMuODQsMy44NCwwLDEsMCwyOC44OCwyNSwzLjg3LDMuODcsMCwwLDAsMjUsMjEuMTlabTAsNi4wOEEy''@;'; put 'put ''LjI0LDIuMjQsMCwxLDEsMjcuMjgsMjUsMi4yNiwyLjI2LDAsMCwxLDI1LDI3LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMTcsMjQuMTRhMS4xNCwxLjE0LDAsMCwwLS43LTEuMWwtMS41Ni0uNDZx''@;'; put 'put ''LS4xMS0uMzItLjI2LS42M2wuNzItMS4zM2ExLjE0LDEuMTQsMCwwLDAtLjIxLTEuMzRsLTEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAtMS4zNC0uMmwtMS4zNC43MWE3LjI4LDcuMjgsMCwwLDAtLjY3LS4yOEwyNywxNi43MWExLjE0LDEuMTQsMCwwLDAtMS4wOC0uNzZIMjRhMS4xNCwxLjE0''@;'; put 'put ''LDAsMCwwLTEuMDguOGwtLjQ0LDEuNDNhNy4zMiw3LjMyLDAsMCwwLS42OC4yOGwtMS4zMi0uN2ExLjE0LDEuMTQsMCwwLDAtMS4zMy4xOWwtMS4zNywxLjMxYTEuMTQsMS4xNCwwLDAsMC0uMjEsMS4zNWwuNywxLjI4cS0uMTYuMzItLjI4LjY1TDE2LjU4LDIzYTEuMTMsMS4xMywwLDAsMC0u''@;'; put 'put ''ODEsMS4wOXYxLjg3QTEuMTQsMS4xNCwwLDAsMCwxNi41OSwyN2wxLjQ3LjQ0cS4xMi4zMi4yOC42NGwtLjcyLDEuMzVhMS4xNCwxLjE0LDAsMCwwLC4yLDEuMzVsMS4zNCwxLjMyYTEuMTQsMS4xNCwwLDAsMCwxLjM0LjJsMS4zNy0uNzJxLjMxLjE0LjYzLjI2bC40NCwxLjQ3YTEuMTQsMS4x''@;'; put 'put ''NCwwLDAsMCwxLjA5LjhoMS45QTEuMTQsMS4xNCwwLDAsMCwyNywzMy4zMWwuNDQtMS40N2MuMjEtLjA3LjQyLS4xNi42Mi0uMjVsMS4zOC43M2ExLjE0LDEuMTQsMCwwLDAsMS4zMy0uMmwxLjM0LTEuMzJhMS4xNCwxLjE0LDAsMCwwLC4yMS0xLjM1bC0uNzMtMS4zNHEuMTQtLjMuMjUtLjZs''@;'; put 'put ''MS41LS40NEExLjEzLDEuMTMsMCwwLDAsMzQuMTcsMjZabS0xLjYsMS41LTIsLjU4LS4xMi40MkE1LjU1LDUuNTUsMCwwLDEsMzAsMjcuNzNsLS4yMS4zOCwxLDEuNzktLjg2Ljg0LTEuODItMS0uMzcuMmE1Ljc4LDUuNzgsMCwwLDEtMS4xMi40NmwtLjQyLjEyLS41OSwySDI0LjM4bC0uNTkt''@;'; put 'put ''MS45NS0uNDItLjEyQTUuODYsNS44NiwwLDAsMSwyMi4yNCwzMGwtLjM3LS4yLTEuODEsMS0uODYtLjg1LDEtMS44Mi0uMjItLjM4YTUuNiw1LjYsMCwwLDEtLjQ5LTEuMTNsLS4xMy0uNDEtMS45NS0uNThWMjQuNDJsMS45NC0uNTguMTItLjQxYTUuNTMsNS41MywwLDAsMSwuNDktMS4xNGwu''@;'; put 'put ''MjItLjM5LTEtMS43My44Ny0uODQsMS43Ny45NC4zOC0uMjFhNS44LDUuOCwwLDAsMSwxLjE3LS40OWwuNDEtLjEyLjU5LTEuOTFoMS4yM2wuNTgsMS45LjQxLjEyYTUuNzksNS43OSwwLDAsMSwxLjE2LjQ4bC4zOC4yMSwxLjgtLjk1Ljg2Ljg1LTEsMS43Ny4yMS4zOGE1LjUzLDUuNTMsMCww''@;'; put 'put ''LDEsLjQ3LDEuMTNsLjEyLjQyLDEuOTMuNTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwyMy42MywzMiwyM2E3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0''@;'; put 'put ''TDMwLjksMTcuODZhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMWE3LDcsMCwwLDAtMS40My0uNjFsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxTDIwLDE3LjhhLjM3LjM3LDAsMCwwLS40NC4wN0wx''@;'; put 'put ''OCwxOS4zMWEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LDcsMCwwLDAsMTguMzUsMjNsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1bDIsLjYxQTcsNywwLDAsMCwxOSwyOC4zN2wtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NGwxLjQ1LDEuNDVh''@;'; put 'put ''LjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4z''@;'; put 'put ''Ny4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhBNyw3LDAsMCwwLDMxLjk1LDI3bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjI0QS4zNy4zNywwLDAsMCwzNCwyMy42M1ptLTguODMsNC43MkEzLjMzLDMuMzMsMCwxLDEsMjguNTMsMjUsMy4zMywzLjMzLDAsMCwxLDI1LjE5LDI4LjM0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44NSwyNy40NGEyLjI5LDIuMjksMCwwLDAsMS43NC0xLjY4LDE5LjcxLDE5LjcxLDAsMCwwLDEuODktLjZWMjMuOTVhMiwyLDAsMCwxLC4wOS0uNTUsMTcuNDIsMTcuNDIs''@;'; put 'put ''MCwwLDEtMi4xNy43OCwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0yLjg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEsNS00LjcyLDIuMjMsMi4yMywwLDAsMCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNjUsNS4wOSwxLjkzLDEuOTMsMCww''@;'; put 'put ''LDEsLjIzLS4zMmwuODktLjg3YTE2Ljg5LDE2Ljg5LDAsMCwxLTQuNDktNC44OSwyLjI3LDIuMjcsMCwwLDAsLjM1LTEuMmMwLS4wNywwLS4xNCwwLS4yMkExNy42OSwxNy42OSwwLDAsMSwyNSwxMWExNy40OSwxNy40OSwwLDAsMS0xLjE1LDMuMzUsMS45NCwxLjk0LDAsMCwxLC4zMS0uMDVo''@;'; put 'put ''MS40NWExOS4wNiwxOS4wNiwwLDAsMCwuOS0yLjdjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTMsMTEuOTMsMCwwLDEsMSw0LjYzbDEtLjUxYTIsMiwwLDAsMSwuOTItLjIzaC4wOEExNCwxNCwwLDEsMCwxNi40NCwzMWExLjk0LDEuOTQsMCwwLDEsLjEyLTEuNDZsLjI4LS41M2gtLjA3QTEx''@;'; put 'put ''LjkxLDExLjkxLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCwwLDAtMTIuMzUuMTFBMi4yOCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCww''@;'; put 'put ''LDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwxOS40NSwwLDAsMCw1LDE0Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMC43OCw4LjQxQTIsMiwwLDAsMCwyOC44Nyw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0u''@;'; put 'put ''MDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1pNMzIsMjdINFYxOS4wNkw3LjEzLDlIMjguODdMMzIsMTkuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIg''@;'; put 'put ''eT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0i''@;'; put 'put ''MS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIg''@;'; put 'put ''aGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMywxNS40SDMwLjg2TDMyLDE5LjA2VjI3SDRWMTkuMDZMNy4xMyw5SDE5LjU2bDEuMTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIs''@;'; put 'put ''MCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''OC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjEyLjEyIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0i''@;'; put 'put ''MTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40N2wtMS42NS01LjMyYTcuNDksNy40OSwwLDAsMS0yLC4zM0wzMiwx''@;'; put 'put ''OS4wNlYyN0g0VjE5LjA2TDcuMTMsOWgxNmE3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEu''@;'; put 'put ''MTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yNiwxMy4xNUE3LjQ5LDcuNDksMCwwLDEsMjIuNTcsN0g3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4w''@;'; put 'put ''OSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNmEyLDIsMCwwLDAtLjA5LS41OVpNOC45MiwyNUg3LjEyVjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMEgyMi4xVjIyaDEuOFptNSwwSDI3LjFW''@;'; put 'put ''MjJoMS44Wk0zMSwxOS40SDVWMThIMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlUm91dGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxNC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4z''@;'; put 'put ''MmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQxTDE3LDI1djcuNjlhMSwxLDAsMCwwLDIsMFYyNWwyLjY5''@;'; put 'put ''LDIuNzFhMSwxLDAsMCwwLDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0y''@;'; put 'put ''LjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEu''@;'; put 'put ''NDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40MUwxNywyNXY3LjY5YTEsMSww''@;'; put 'put ''LDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwxLDAsMCwwLDAtMkg1Ljg1bDIu''@;'; put 'put ''NzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zOCwxNS40SDI4''@;'; put 'put ''LjU0TDMwLjE1LDE3SDIyLjQ2YTEsMSwwLDEsMCwwLDJoNy42OWwtMi43MSwyLjY5YTEsMSwwLDAsMCwxLjQxLDEuNDJMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OCwxNC44N2wxLjE1LTEuMTYtLjEtLjE1QTMuNjgsMy42OCwwLDAsMSwxOSwxMFYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuODdsNS4xMS01LjE0YTEsMSwwLDEsMC0xLjQyLTEuNDFMMTksMTFWMy4zM2ExLDEsMCwwLDAtMiwwVjExTDE0LjMxLDguMzJhMSwxLDAsMSwwLTEu''@;'; put 'put ''NDIsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWExLDEsMCwwLDAsMiwwVjI1bDIu''@;'; put 'put ''NjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwx''@;'; put 'put ''LDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwxLDAsMCwwLDAt''@;'; put 'put ''Mkg1Ljg1bDIuNzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIg''@;'; put 'put ''Y3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMS42N2ExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwxLjY3Wk0xMy44Niw5''@;'; put 'put ''LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMCwxLDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44LjgsMCwwLDEtMS4xMywwTDUsMTcu''@;'; put 'put ''NjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEwLjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjkuNGEuOC44LDAsMCwxLTEuNiww''@;'; put 'put ''VjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44LDAsMSwxLTEuMTItMS4xNGwyLjItMi4xNUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjdsLTIuMi0yLjE0YS44LjgsMCwx''@;'; put 'put ''LDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MiwxNS4zOUgyOC42OEwzMSwxNy42N2wtNC4xOSw0LjA5YS44LjgsMCwxLDEtMS4xMi0xLjE0bDIuMi0yLjE1SDIxLjYzYS44''@;'; put 'put ''LjgsMCwwLDEsMC0xLjZoNi4yN2wtMS41LTEuNDdIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTMtMS41MUwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDEsMSwxNSw5LjkybDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2NC40OUEzLjY1LDMuNjUsMCwwLDEsMTksOS44OWw0LjIyLTcu''@;'; put 'put ''MzFBMTYsMTYsMCwxLDAsMzQsMTcuNjcsMTYsMTYsMCwwLDAsMzMuODIsMTUuMzlabS0yMy41LDYuMzVhLjguOCwwLDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQuMDlhLjguOCwwLDEsMSwxLjEyLDEuMTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEuNkg4LjExbDIuMiwyLjE1QS44''@;'; put 'put ''LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUsMjUuNDJhLjguOCwwLDEsMS0xLjEzLTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAsMSwyMi4xNCwyNS40MVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEu''@;'; put 'put ''MTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMiwxMi43NkE3LjQ5LDcuNDksMCwwLDEsMjMuMzIsMi42''@;'; put 'put ''YTE2LDE2LDAsMSwwLDkuOSwxMC4xN1pNMTMuODYsOS45MmEuOC44LDAsMCwxLDEuMTMsMGwyLjIxLDIuMTlWNS45M2EuOC44LDAsMCwxLDEuNiwwdjYuMThMMjEsOS45MmEuOC44LDAsMSwxLDEuMTMsMS4xNEwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDAsMSwxMy44Niw5LjkyWk0xMC4z''@;'; put 'put ''MiwyMS43NGEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAsMS42SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42N2EuOC44LDAsMCwxLTEuMTMsMEwx''@;'; put 'put ''OC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAsMCwxLDIyLjE0LDI1LjQxWm00LjY3LTMuNjZhLjguOCwwLDEsMS0xLjEyLTEuMTRsMi4yLTIuMTVIMjEuNjNhLjguOCwwLDAs''@;'; put 'put ''MSwwLTEuNmg2LjI3bC0yLjItMi4xNGEuOC44LDAsMSwxLDEuMTItMS4xNEwzMSwxNy42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVWTT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTEsNUgyNVY4aDJWNWEyLDIsMCwwLDAtMi0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTBIMTd2Mmg4djZoMlYxMmgzVjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyOGg4YTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLDVIMjEuODdM''@;'; put 'put ''MjMsM0gxMUEyLDIsMCwwLDAsOSw1djYuODVoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjE1LjQiIHdpZHRoPSIxLjk5IiBoZWlnaHQ9IjIuNiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNFYyNkgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjho''@;'; put 'put ''OGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMTB2MmgxLjU3''@;'; put 'put ''QTMuNjcsMy42NywwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEx''@;'; put 'put ''LDVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVoMFYyNkgyMlYxN2EyLDIs''@;'; put 'put ''MCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjhoOGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMmg4djZoMlYxMi44N0E3LjUyLDcuNTIsMCwwLDEsMjMuNjYsMTBIMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTks''@;'; put 'put ''MTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDI3VjVhMiwyLDAsMCwwLTItMkgxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxNy4xOWEyLDIsMCwwLDAtMiwydjEu''@;'; put 'put ''NEgyMEEzLjYsMy42LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjkuNkgxNy4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjEyQTIsMiwwLDAsMCwzMCwxMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42aDIuNzJMMjMsM0gxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4xOSwxMGEyLDIsMCwwLDAtMiwydjEuNEgxOUEzLjY4LDMuNjgsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjIxLDE1LjRBMy41NSwzLjU1LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjkuNkgx''@;'; put 'put ''Ny4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDIyLjlBNy40NSw3LjQ1LDAsMCwxLDIzLjEzLDNIMTFBMiwyLDAsMCwwLDksNXY4LjRoNC41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwSDE3LjE5YTIsMiwwLDAsMC0yLDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMx''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBl''@;'; put 'put ''Vk1XQXBwPSgwLEUuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMTQgNiAx''@;'; put 'put ''NCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMCA0IDIwIDggMjIgOCAyMiA2IDMwIDYgMzAgMTQgMjggMTQgMjggMTYg''@;'; put 'put ''MzIgMTYgMzIgNCAyMCA0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCB4PSIxOSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjI4''@;'; put 'put ''IDIyIDMwIDIyIDMwIDMwIDIyIDMwIDIyIDI4IDIwIDI4IDIwIDMyIDMyIDMyIDMyIDIwIDI4IDIwIDI4IDIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTQgMzAg''@;'; put 'put ''NiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE0IDYgMTQgNiA2IDE0''@;'; put 'put ''IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVy''@;'; put 'put ''dGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS40SDIyLjIzQTMu''@;'; put 'put ''NjksMy42OSwwLDAsMSwxOSwxMy41NmwwLS4xVjE3aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjIuNDUgNCAyMCA0IDIwIDggMjAuMTQgOCAyMi40NSA0IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI4IiB5PSIxNS40IiB3aWR0aD0iNCIgaGVpZ2h0PSIwLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC05LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjgg''@;'; put 'put ''MjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTQgMzAgNiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxNCA2IDE0IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDZoLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDIwVjhoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTct''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjE0SDI4djJoNFYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNSwxMS41OGE3LjUzLDcuNTMsMCwwLDEtLjU4LS41OEgxOXY2aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQ2VydGlmaWNhdGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTls''@;'; put 'put ''LjU3LS43LjkzLTEuMTRMMjAuNDEsMjhINFY4SDMybDAsOC41NmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxVjhBMiwyLDAsMCwwLDMyLDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjEyIiB3aWR0aD0i''@;'; put 'put ''MTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0''@;'; put 'put ''LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCww''@;'; put 'put ''LDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcu''@;'; put 'put ''NDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIN3YxLjZIMTkuMDdaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjEuMTZhOC40MSw4LjQxLDAsMCwxLDIsMS44MXYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMC4xNGwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjEyIiB3aWR0aD0iMTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI3IiB5PSIxNiIgd2lkdGg9IjExIiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIg''@;'; put 'put ''eT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwz''@;'; put 'put ''LjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2My4zNGE4LjQxLDguNDEsMCwwLDEsMiwxLjgxdi02QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI4VjhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0TDIwLjQxLDI4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDMwSDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMzJhMiwyLDAsMCwxLDIsMlYxOC4zN2E4LjM0LDguMzQsMCwwLDAtMTMuNDksOS43OWwtLjkzLDEuMTRaTTcsMTJ2MS42SDI0VjEyWm0wLDUuNkgxOFYxNkg3Wm0wLDdIMTdW''@;'; put 'put ''MjNIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNTlhNi4zNyw2LjM3LDAsMSwwLTEwLjc3LDQuNTlsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42''@;'; put 'put ''Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdBNi4zNCw2LjM0LDAsMCwwLDMzLjgzLDIzLjU5Wm0tMTAuNzQsMGE0LjM3LDQuMzcsMCwxLDEsNC4zNyw0LjMxQTQuMzUsNC4zNSwwLDAsMSwyMy4xLDIzLjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYuMzQsMCwwLDAsMzMuODMsMjMuNTlabS0x''@;'; put 'put ''MC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMjkuMjVhOC4z''@;'; put 'put ''Niw4LjM2LDAsMCwxLDQuNzUsM3YtM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMDcsMTMuNkg3VjEySDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIxLjI5LDZINEEy''@;'; put 'put ''LDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRBOC4zNCw4LjM0LDAsMCwxLDI1LjY2LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LjA3LDEzLjZaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44''@;'; put 'put ''NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNDYsMTcuMjNhNi4zNiw2LjM2LDAsMCwwLTQuNCwxMWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQu''@;'; put 'put ''NDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN2E2LjM2LDYuMzYsMCwwLDAtNC40LTExWm0wLDEwLjY4YTQuMzEsNC4zMSwwLDEsMSw0LjM3LTQuMzFBNC4zNSw0LjM1LDAsMCwxLDI3LjQ2LDI3LjkxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQsMCwwLDEsMzQsMTguMzd2LTZB''@;'; put 'put ''Ny40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThabTYtNEg3VjEySDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUFyY2hpdmU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwxOEg2VjE0aDRhMywzLDAsMCwxLS42OC0xLjg3czAtLjA5LDAtLjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNBMywzLDAsMCwxLDI2LDE0aDR2NEgyMmwtMiwySDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjQxLDIwLjYsMTgsMjJsLTEuNDEtMS40TDE2LDIwSDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjIwSDIwWk0yMiwyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNhMywzLDAsMCwxLS44OCwyLjEyTDIyLDE4SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yLDE0LjI1YTMsMywwLDAsMS0uODgtMi4xMnMwLS4wOSwwLS4xM0g1LjVBMS41LDEuNSwwLDAsMCw0LDEzLjVWMThIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTE4LDE5LjE4bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTEuNDFsLTQsMy45NVYzYTEsMSwwLDEsMC0yLDB2MTIuNGwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAn''@;'; put 'put ''KSxMLkNsclNoYXBlVW5hcmNoaXZlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkg3VjIySDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjIySDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTQsMjRhMSwxLDAsMCwwLDEsMWg2YTEsMSwwLDAsMCwwLTJIMTVBMSwxLDAsMCwwLDE0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMThINlYxNGg5VjEySDUuNUExLjUsMS41LDAs''@;'; put 'put ''MCwwLDQsMTMuNVYyMEgxNS43OEEzLDMsMCwwLDEsMTUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC41LDEySDIxdjJoOXY0SDIxYTMsMywwLDAsMS0uNzgsMkgzMlYxMy41QTEuNSwxLjUsMCwwLDAs''@;'; put 'put ''MzAuNSwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLDkuNTUsMTcsNS42VjE4YTEsMSwwLDEsMCwyLDBWNS42bDQsMy45NWExLDEsMCwxLDAsMS40MS0xLjQyTDE4LDEuNzgsMTEuNjEsOC4xM0ExLDEs''@;'; put 'put ''MCwwLDAsMTMsOS41NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxYTMsMywwLDAsMS0yLjIyLTFINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBIMjAuMjFBMywzLDAsMCwxLDE4''@;'; put 'put ''LDIxWm00LDNhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwwLDEsMC0yaDZBMSwxLDAsMCwxLDIyLDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMkg1LjVBMS41LDEuNSwwLDAsMCw0LDEzLjVWMThIMTVaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2NkgzMlYxMy41QTEuNSwxLjUsMCwwLDAsMzAuNSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43OCwxMS42MSw4LjEzQTEsMSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgJyks''@;'; put 'put ''TC5DbHJTaGFwZUNvbm5lY3Q9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDI4LjIzQTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMjJhNi4yMiw2LjIyLDAsMCwwLDYuMjIt''@;'; put 'put ''NUgzNFpNMTcuMDgsMjJIMTQuMTVhNC4xNyw0LjE3LDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00aDIuOTRaTTIyLDIySDE5VjE0aDNhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjIsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI4LjIzLDE3QTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxOVYyNGgzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLTVIMzRWMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlRGlzY29ubmVjdD0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMTIuMTcsNkE2LjIxLDYuMjEsMCwwLDAsNiwxMUgyLjEzdjJINmE2LjIzLDYuMjMsMCwwLDAsNi4yMSw1SDE3VjZaTTE1LjEsMTZIMTIuMTdhNC4yLDQuMiwwLDAsMS00LjMxLTQsNC4xNyw0LjE3LDAsMCwxLDQuMzEtNEgxNS4xWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTIsMjNIMzAuMTRhNi4yNSw2LjI1LDAsMCwwLTYuMjEtNUgxOXYySDE0YTEsMSwwLDEsMCwwLDJoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYu''@;'; put 'put ''MjMsMCwwLDAsNi4yMi01aDMuNzZabS0xMCw1SDIxVjIwaDIuOTRhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjMuOTQsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiw2YTYu''@;'; put 'put ''MjEsNi4yMSwwLDAsMC02LjIxLDVIMnYySDUuODNBNi4yMyw2LjIzLDAsMCwwLDEyLDE4SDE3VjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc5LDIzSDMwLjE0YTYuMjUsNi4yNSwwLDAsMC02LjIxLTVIMTl2''@;'; put 'put ''MkgxNGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAsNi4yMi01aDMuNjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxMLkNs''@;'; put 'put ''clNoYXBlTGluaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNiwyNC4zMmwtMi40NiwyLjQ0YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAtNS41NWw0LjY5LTQuNjVhNCw0LDAsMCwxLDUuNjIsMCwzLjg2LDMuODYsMCwwLDEsMSwxLjcxQTIsMiwwLDAsMCwyMS4x''@;'; put 'put ''LDE4bDEuMjktMS4yOGE1Ljg5LDUuODksMCwwLDAtMS4xNS0xLjYyLDYsNiwwLDAsMC04LjQ0LDBMOC4xLDE5Ljc5YTUuOTEsNS45MSwwLDAsMCwwLDguMzksNiw2LDAsMCwwLDguNDQsMGwzLjY1LTMuNjJjLS4xNywwLS4zMywwLS41LDBBOCw4LDAsMCwxLDE3LjYsMjQuMzJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42MSw3LjgyYTYsNiwwLDAsMC04LjQ0LDBsLTMuNjUsMy42MmMuMTcsMCwuMzMsMCwuNDksMGgwYTgsOCwwLDAsMSwyLjEuMjhsMi40Ni0yLjQ0YTQsNCwwLDAsMSw1LjYyLDAs''@;'; put 'put ''My45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC42OSw0LjY1YTQsNCwwLDAsMS01LjYyLDAsMy44NiwzLjg2LDAsMCwxLTEtMS43MSwyLDIsMCwwLDAtLjI4LjIzbC0xLjI5LDEuMjhhNS44OSw1Ljg5LDAsMCwwLDEuMTUsMS42Miw2LDYsMCwwLDAsOC40NCwwbDQuNjktNC42NWE1LjkyLDUuOTIs''@;'; put 'put ''MCwwLDAsMC04LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVVbmxpbms9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUsNSwzLjU5LDYuNDFsOSw5TDguMSwxOS43OWE1LjkxLDUuOTEsMCwwLDAsMCw4''@;'; put 'put ''LjM5LDYsNiwwLDAsMCw4LjQ0LDBMMjEsMjMuNzhsOC42Myw4LjYzTDMxLDMxWk0xNS4xMywyNi43NmE0LDQsMCwwLDEtNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLTUuNTVMMTQsMTYuNzlsNS41OCw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTMsOS4yMmE0LDQsMCwwLDEsNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLDUuNTVsLTQuNzksNC43NkwyMy43OCwyMWw0Ljc5LTQuNzZhNS45Miw1LjkyLDAsMCwwLDAtOC4zOSw2LDYsMCwwLDAtOC40NCwwbC00Ljc2LDQuNzRMMTYuNzgsMTRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUNsb3VkTmV0d29yaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNzEsMTUuMTh2LTFBMTEuMjgsMTEuMjgsMCwwLDAsMTkuNTYsMi44M2gtLjExYTExLjI4''@;'; put 'put ''LDExLjI4LDAsMCwwLTExLDguOTMsNy40Nyw3LjQ3LDAsMCwwLDAsMTQuOTRIMjkuMTNhNS44Niw1Ljg2LDAsMCwwLDEuNTgtMTEuNTJaTTI5LjEzLDI0LjdIOC40NmE1LjQ3LDUuNDcsMCwxLDEsMC0xMC45NGgxLjY5bC4xMS0uODdhOS4yNyw5LjI3LDAsMCwxLDE4LjQ1LDEuM3YxLjI4YzAs''@;'; put 'put ''LjA5LDAsLjE4LDAsLjI3bC0uMDcsMS4xNS45NC4xMWEzLjg2LDMuODYsMCwwLDEtLjQzLDcuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41OCwzMS4xOEgxOC44NXYtMi40aC0ydjIuNEg2LjA4YTEs''@;'; put 'put ''MSwwLDAsMCwwLDJoMjMuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVDbG91ZFNjYWxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjMyLDExLjExSDcuODRMOCwxMC4yNEE3''@;'; put 'put ''LjE5LDcuMTksMCwwLDEsMTUuMDcsNGguMDdhNy4xNSw3LjE1LDAsMCwxLDQuNzEsMS44MywxMS4xLDExLjEsMCwwLDEsMy4wOS42NEE5LjE4LDkuMTgsMCwwLDAsMTUuMTYsMmgtLjA5QTkuMiw5LjIsMCwwLDAsNi4xMyw5LjExLDYuMTUsNi4xNSwwLDAsMCwyLjMzLDE5Ljk1LDguMDksOC4w''@;'; put 'put ''OSwwLDAsMSwzLDE3LjcxYTQuMTIsNC4xMiwwLDAsMS0uODEtMi40NEE0LjE2LDQuMTYsMCwwLDEsNi4zMiwxMS4xMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjQsMTYuOTFoMS41MkwxMiwxNmE3LjE5''@;'; put 'put ''LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjE3LDcuMTcsMCwwLDEsNS43LDIuOTIsMTEuMDUsMTEuMDUsMCwwLDEsMi43Mi43Nyw5LjIsOS4yLDAsMCwwLTguNC01LjY5aC0uMDlhOS4yLDkuMiwwLDAsMC04Ljk0LDcuMTIsNi4xNSw2LjE1LDAsMCwwLTMuNjQsMTEsOC4xMSw4LjExLDAs''@;'; put 'put ''MCwxLC43OS0yLDQuMTQsNC4xNCwwLDAsMSwzLTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi40MiwyNC40N3YtLjYyYTkuMTgsOS4xOCwwLDAsMC0xOC4xMy0yLjE2QTYuMTYsNi4xNiwwLDAsMCwxNC40''@;'; put 'put ''OCwzNEgzMWE0Ljg4LDQuODgsMCwwLDAsMS40Ni05LjUzWk0zMSwzMkgxNC40OGE0LjE2LDQuMTYsMCwxLDEsMC04LjMySDE2bC4xMS0uODdhNy4xOSw3LjE5LDAsMCwxLDcuMTItNi4yNWguMDdhNy4yMSw3LjIxLDAsMCwxLDcuMTIsNy4yNXYxYzAsLjA3LDAsLjEzLDAsLjJsLS4wNywxLjEx''@;'; put 'put ''Ljk0LjExQTIuODgsMi44OCwwLDAsMSwzMSwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQ2xvdWRUcmFmZmljPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwyMC44MmEuODguODgsMCwwLDAt''@;'; put 'put ''Ljg4LS44OEgyMC43NWwxLjEtMS4xQS44OC44OCwwLDAsMCwyMC42LDE3LjZsLTMuMjEsMy4yMkwyMC42LDI0YS44OC44OCwwLDEsMCwxLjI1LTEuMjRMMjAuNzYsMjEuN2g0LjlBLjg4Ljg4LDAsMCwwLDI2LjU0LDIwLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMjcsMjEuN2EuODguODgsMCwxLDAsMC0xLjc2aC0uNThhLjg4Ljg4LDAsMSwwLDAsMS43NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIx''@;'; put 'put ''LDIwaC0uMDZhLjg1Ljg1LDAsMCwwLS44NS44OC45MS45MSwwLDAsMCwuOTEuODguODguODgsMCwxLDAsMC0xLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuNTksMTFhLjg4Ljg4LDAsMCwwLTEuMjUs''@;'; put 'put ''MS4yNGwxLjEsMS4xSDI3LjUzYS44OC44OCwwLDEsMCwwLDEuNzZoNC45bC0xLjA5LDEuMDlhLjg4Ljg4LDAsMCwwLDEuMjUsMS4yNGwzLjIxLTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC41LDE1''@;'; put 'put ''LjA3YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuOSwxNC4yN2EuODUuODUsMCwwLDAtLjg1LS44OEgyMWEuODguODgsMCwx''@;'; put 'put ''LDAsMCwxLjc2QS45MS45MSwwLDAsMCwyMS45LDE0LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMzYsMjMuNjVjMCwuMTMsMCwuMjYsMCwuMzlhMy43NywzLjc3LDAsMCwxLTMuNjIsMy44OUg3LjI4''@;'; put 'put ''YTUuMzIsNS4zMiwwLDAsMS01LjEzLTUuNDhBNS4zMiw1LjMyLDAsMCwxLDcuMjgsMTdIOC45MUw5LDE2LjEyYTguOTIsOC45MiwwLDAsMSw4LjYyLThoLjA4YTguNDksOC40OSwwLDAsMSw2LjU2LDMuMjloMi4zN2ExMC41NSwxMC41NSwwLDAsMC04LjkxLTUuMjVoLS4xMUExMC44MiwxMC44''@;'; put 'put ''MiwwLDAsMCw3LjIyLDE1YTcuMjgsNy4yOCwwLDAsMC03LDcuNDMsNy4yNyw3LjI3LDAsMCwwLDcuMDgsNy40M0gyNi43N0E1LjcyLDUuNzIsMCwwLDAsMzIuMzUsMjRhMy43NywzLjc3LDAsMCwwLDAtLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+''@;'; put 'put ''XG4gICAgICAgICcpLEwuQ2xyU2hhcGVEZXBsb3k9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZW''@;'; put 'put ''MTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTExLjU0LDEwLjczbC05LDUuMTdhMSwxLDAsMCwwLS41Ljg3djExYTEsMSwwLDAsMCwuNS44N2w5LDUu''@;'; put 'put ''MTVhMSwxLDAsMCwwLDEsMGw5LTUuMTVhMSwxLDAsMCwwLC41LS44N3YtMTFhMSwxLDAsMCwwLS41LS44N2wtOS01LjE3QTEsMSwwLDAsMCwxMS41NCwxMC43M1pNMTEsMzEuMDhsLTctNFYxOC40NGw3LDRaTTEyLDIxLDQuODEsMTYuODcsMTIsMTIuNzhsNy4yMSw0LjEyWm04LDYuMDktNyw0''@;'; put 'put ''VjIyLjQ0bDctNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwx''@;'; put 'put ''LDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTIuNDYsMTAuNzNhMSwxLDAsMCwwLTEsMGwtOC42OCw1TDEyLDIxbDkuMTktNS4yNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDI3LjczYTEsMSwwLDAsMCwuNS44N0wxMSwzMy40NnYtMTFMMiwxNy4yOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xMywzMy40Nmw4LjUtNC44NmExLDEsMCww''@;'; put 'put ''LDAsLjUtLjg3VjE3LjI5bC05LDUuMTVaIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVIZWxpeD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguODgsMTMuMDdhLjkuOSwwLDAsMS0uNDktMS42Nmw4LjkzLTUu''@;'; put 'put ''NzNhLjkuOSwwLDEsMSwxLDEuNTJMOS4zNywxMi45MkEuOS45LDAsMCwxLDguODgsMTMuMDdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEzLjI1LDE1LjExYS45LjksMCwwLDEtLjQ5LTEuNjZMMTgsMTAuMDhh''@;'; put 'put ''LjkuOSwwLDEsMSwxLDEuNTJMMTMuNzQsMTVBLjkuOSwwLDAsMSwxMy4yNSwxNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTkuNzIsMzAuMjNhLjkuOSwwLDAsMS0uNDktMS42Nmw4LjkzLTUuNzNhLjku''@;'; put 'put ''OSwwLDAsMSwxLDEuNTJMMjAuMiwzMC4wOUEuOS45LDAsMCwxLDE5LjcyLDMwLjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOC45MiwyNS45NGEuOS45LDAsMCwxLS40OS0xLjY2bDUuMjUtMy4zN2EuOS45''@;'; put 'put ''LDAsMSwxLDEsMS41MUwxOS40LDI1LjhBLjg5Ljg5LDAsMCwxLDE4LjkyLDI1Ljk0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0yMS41Niw1LjY5YTMuNTksMy41OSwwLDAsMSwuMTUsMy41M0wxOC44MywxNWgy''@;'; put 'put ''LjI1bDIuNDMtNC44N2E1LjYxLDUuNjEsMCwwLDAtNS04LjE0SDEzLjI2bC0xLDJoNi4yMkEzLjYxLDMuNjEsMCwwLDEsMjEuNTYsNS42OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuOTEsMjAuNzhBNS41''@;'; put 'put ''Myw1LjUzLDAsMCwwLDI3LjY2LDE3SDkuMzFhMy41NCwzLjU0LDAsMCwxLTMuNTYtMy42NywzLjYxLDMuNjEsMCwwLDEsLjQyLTEuNTRsNC4yNi04LjQ5YTEsMSwwLDEsMC0xLjc5LS45TDQuNCwxMC44NEE1LjY3LDUuNjcsMCwwLDAsNCwxNS4yMiw1LjUzLDUuNTMsMCwwLDAsOS4yOCwxOWg3''@;'; put 'put ''LjZsLTMuNDQsNi44N2E1LjY0LDUuNjQsMCwwLDAsMS41LDYuOTJBNS4zOCw1LjM4LDAsMCwwLDE4LjQxLDM0aDUuMjVsMS0ySDE4LjQzYTMuNTgsMy41OCwwLDAsMS0zLjIyLTUuMjFMMTkuMTEsMTloOC41NGEzLjQyLDMuNDIsMCwwLDEsMi4xNS43MSwzLjU3LDMuNTcsMCwwLDEsMSw0LjQz''@;'; put 'put ''bC00LjEyLDguMjJhMSwxLDAsMSwwLDEuNzkuOWw0LjA2LTguMUE1LjY3LDUuNjcsMCwwLDAsMzIuOTEsMjAuNzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTkuNjNBNS41NSw1LjU1LDAsMCwwLDI3LjQy''@;'; put 'put ''LDE3SDEwLjA2YTQuMzYsNC4zNiwwLDAsMS0zLjY3LTIsNC4wNyw0LjA3LDAsMCwxLS4xOS00LjEzbDMuNjItNywxLjQyLDEuNjMtMi43NCw1LjMsOC44NC01LjY2YS45MS45MSwwLDAsMSwxLDEuNTNMNy44NCwxMy4zOGEyLjEzLDIuMTMsMCwwLDAsLjI0LjUyLDIuMjgsMi4yOCwwLDAsMCwx''@;'; put 'put ''LjY1LDFMMTguMTEsOS41YS45MS45MSwwLDAsMSwxLDEuNTJMMTMsMTQuOTRIMjAuOGwyLjQxLTQuODJhNS42LDUuNiwwLDAsMC01LTguMTJIOWExLDEsMCwwLDAtLjkuNTZMMy44OCwxMC44OWE1LjYsNS42LDAsMCwwLDUsOC4xMmg3LjY1bC0zLjQzLDYuODdhNS42LDUuNiwwLDAsMCw1LDgu''@;'; put 'put ''MTJoOS4yOGExLDEsMCwwLDAsLjkzLS42NWw0LjE0LTguMjRBNS41OCw1LjU4LDAsMCwwLDMyLjE2LDE5LjYzWk0xNy43NSwyNS41N0EuOTEuOTEsMCwwLDEsMTgsMjQuMzFsNi0zLjg4QS45MS45MSwwLDEsMSwyNSwyMmwtNiwzLjg4YS45MS45MSwwLDAsMS0xLjI2LS4yN1pNMjksMjQuMzRs''@;'; put 'put ''LTksNS43OGEuOTEuOTEsMCwxLDEtMS0xLjUzbDktNS43OGEuOTEuOTEsMCwxLDEsMSwxLjUzWiIvPlxuICAgICAgICAnKSxMLkNsclNoYXBlRmxhc2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQzLDI3LjI4LDIzLDE0Ljg0VjRoMWExLDEsMCwwLDAsMC0ySDEyYTEsMSwwLDAs''@;'; put 'put ''MCwwLDJoMVYxNC44NEw0LjUxLDI3LjM2QTQuMjksNC4yOSwwLDAsMCw1LDMyLjgsNC4zOCw0LjM4LDAsMCwwLDguMTUsMzRIMjhhNC4yNCw0LjI0LDAsMCwwLDMuNDItNi43MlpNMjkuODUsMzFhMi42MiwyLjYyLDAsMCwxLTIsMUg4YTIuMiwyLjIsMCwwLDEtMi4wNi0xLjQxLDIuNjgsMi42''@;'; put 'put ''OCwwLDAsMSwuMjktMi4xN2wzLTQuNDQsMTQsMC0xLjMxLTJIMTAuNTdMMTUsMTUuNDZWNGg2VjE1LjQ2bDguODQsMTMuMDVBMi4yMywyLjIzLDAsMCwxLDI5Ljg1LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzEuNDksMjcuNCwyMywxNC45NFY0aDFhMSwxLDAsMCwwLDAtMkgxMi4wOGExLDEsMCwwLDAsMCwySDEzVjE0Ljk0TDQuNTgsMjcuMzFhNC4zMSw0LjMxLDAsMCwwLS43OCwzQTQuMjMsNC4yMywwLDAsMCw4LDM0SDI3Ljg2QTQuMzYsNC4zNiwwLDAsMCwzMSwzMi44LDQuMjMsNC4yMyww''@;'; put 'put ''LDAsMCwzMS40OSwyNy40Wk0xNSwxNS40OVY0aDZWMTUuNDlMMjYuMTUsMjNIOS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC42OCwx''@;'; put 'put ''NC44MWE2Ljc2LDYuNzYsMCwxLDEsNi43Ni02Ljc1QTYuNzcsNi43NywwLDAsMSwxNC42OCwxNC44MVptMC0xMS41MWE0Ljc2LDQuNzYsMCwxLDAsNC43Niw0Ljc2QTQuNzYsNC43NiwwLDAsMCwxNC42OCwzLjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40MiwzMS42OEEyLjE0LDIuMTQsMCwwLDEsMTUuOCwzMEg0VjI0LjIyYTE0LjgxLDE0LjgxLDAsMCwxLDExLjA5LTQuNjhsLjcyLDBhMi4yLDIuMiwwLDAsMSwuNjItMS44NWwuMTItLjExYy0uNDcsMC0xLS4wNi0xLjQ2LS4wNkExNi40Nywx''@;'; put 'put ''Ni40NywwLDAsMCwyLjIsMjMuMjZhMSwxLDAsMCwwLS4yLjZWMzBhMiwyLDAsMCwwLDIsMkgxNi43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODcsMTYuMjlhLjM3LjM3LDAsMCwxLC4xNSwwLC40Mi40''@;'; put 'put ''MiwwLDAsMC0uMTUsMFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwyMy4zMmwtMi0uNjFhNy4yMSw3LjIxLDAsMCwwLS41OC0xLjQxbDEtMS44NkEuMzguMzgsMCwwLDAsMzIsMTlsLTEuNDUtMS40''@;'; put 'put ''NWEuMzYuMzYsMCwwLDAtLjQ0LS4wN2wtMS44NCwxYTcuMTUsNy4xNSwwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM2LjM2LDAsMCwwLS4zNi0uMjRIMjMuODJhLjM2LjM2LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNmwtMS44Mi0xYS4zNS4zNSwwLDAsMC0uNDMuMDdMMTcu''@;'; put 'put ''NjksMTlhLjM4LjM4LDAsMCwwLS4wNi40NGwxLDEuODJBNi43Nyw2Ljc3LDAsMCwwLDE4LDIyLjY5bC0yLC42YS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNUEuMzUuMzUsMCwwLDAsMTYsMjZsMiwuNjFhNyw3LDAsMCwwLC42LDEuNDFsLTEsMS45MWEuMzYuMzYsMCwwLDAsLjA2LjQzbDEuNDUs''@;'; put 'put ''MS40NWEuMzguMzgsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA5LDcuMDksMCwwLDAsMS40LjU3bC42LDJhLjM4LjM4LDAsMCwwLC4zNS4yNmgyLjA1YS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yLjA1YTYuOTIsNi45MiwwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM2LjM2LDAsMCwwLC40My0u''@;'; put 'put ''MDdMMzIsMzAuNEEuMzUuMzUsMCwwLDAsMzIsMzBsLTEtMS44OGE3LDcsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM2LjM2LDAsMCwwLC4yNi0uMzVWMjMuNjdBLjM2LjM2LDAsMCwwLDMzLjY4LDIzLjMyWk0yNC44NSwyOGEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjMzQTMuMzQsMy4zNCwwLDAs''@;'; put 'put ''MSwyNC44NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTQuNjciIGN5PSI4LjMiIHI9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTYuNDQsMzEuODJhMi4xNSwyLjE1LDAsMCwxLS4zOC0yLjU1bC41My0xLTEuMDktLjMzQTIuMTQsMi4xNCwwLDAsMSwxNCwyNS44NFYyMy43OWEyLjE2LDIuMTYsMCwwLDEsMS41My0yLjA3bDEuMDktLjMzLS41Mi0xYTIuMTcsMi4xNywwLDAsMSwuMzUtMi41MiwxOC45MiwxOC45''@;'; put 'put ''MiwwLDAsMC0yLjMyLS4xNkExNS41OCwxNS41OCwwLDAsMCwyLDIzLjA3djcuNzVhMSwxLDAsMCwwLDEsMUgxNi40NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNywyMy40NmwtMi0uNmE2LjczLDYuNzMsMCww''@;'; put 'put ''LDAtLjU4LTEuNDJsMS0xLjg2YS4zNS4zNSwwLDAsMC0uMDctLjQzbC0xLjQ1LTEuNDZhLjM4LjM4LDAsMCwwLS40My0uMDdsLTEuODUsMWE3Ljc0LDcuNzQsMCwwLDAtMS40My0uNmwtLjYxLTJhLjM4LjM4LDAsMCwwLS4zNi0uMjVIMjMuODRhLjM4LjM4LDAsMCwwLS4zNS4yNmwtLjYsMmE2''@;'; put 'put ''Ljg1LDYuODUsMCwwLDAtMS40NS42MWwtMS44MS0xYS4zOC4zOCwwLDAsMC0uNDQuMDZsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LjI0LDcuMjQsMCwwLDAsMTgsMjIuODNsLTIsLjYxYS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNWEuMzYuMzYsMCwwLDAsLjI2LjM1''@;'; put 'put ''bDIsLjYxYTcuMjksNy4yOSwwLDAsMCwuNiwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LjE2LDMyYS4zOC4zOCwwLDAsMCwuNDQuMDZsMS44Ny0xYTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMi4wNWEuMzguMzgsMCwwLDAsLjM2LjI2aDIuMDVhLjM4LjM4LDAsMCwwLC4z''@;'; put 'put ''NS0uMjZsLjYtMi4wNWE2LjY4LDYuNjgsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zOC4zOCwwLDAsMCwuNDQtLjA2TDMyLDMwLjU1YS4zOC4zOCwwLDAsMCwuMDYtLjQ0bC0xLTEuODhhNi45Miw2LjkyLDAsMCwwLC41Ny0xLjM4bDItLjYxYS4zOS4zOSwwLDAsMCwuMjctLjM1VjIzLjgyQS40''@;'; put 'put ''LjQsMCwwLDAsMzMuNywyMy40NlptLTguODMsNC43MmEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjM0QTMuMzQsMy4zNCwwLDAsMSwyNC44NywyOC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVIYXJkRHJpdmU9KDAs''@;'; put 'put ''RS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDhhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yWk0zMiwyOEg0VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjI1LjQyIiBy''@;'; put 'put ''PSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS44OCwxOC4wOGEzLjU5LDMuNTksMCwxLDAsMy41OS0zLjU5LDMuODQsMy44NCwwLDAsMC0uOTEuMTNMMTUsMTYuMTZhMi4wOCwyLjA4LDAsMCwxLC41''@;'; put 'put ''LS4wNywyLDIsMCwxLDEtMiwyLDEuNjQsMS42NCwwLDAsMSwuMDgtLjVMMTIsMTcuMTZBMy41MywzLjUzLDAsMCwwLDExLjg4LDE4LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNDcsMjUuNzNhNy42''@;'; put 'put ''Niw3LjY2LDAsMCwxLTcuNjUtNy42NSw3LjU1LDcuNTUsMCwwLDEsLjI3LTJMNi41NCwxNS43YTkuMjQsOS4yNCwwLDAsMCwxNy44LDQuOTVIMjIuNjZBNy42NCw3LjY0LDAsMCwxLDE1LjQ3LDI1LjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjguMjIsMTcuODNhLjguOCwwLDAsMC0uOC0uOEgyNC42NmE5LjI2LDkuMjYsMCwwLDAtOS4xOS04LjIsOS4zNiw5LjM2LDAsMCwwLTIuMzguMzJsLjQyLDEuNTRhNy44Niw3Ljg2LDAsMCwxLDItLjI2QTcuNjYsNy42NiwwLDAsMSwyMywxN0gyMC45MmEu''@;'; put 'put ''OC44LDAsMCwwLDAsMS42aDYuNUEuOC44LDAsMCwwLDI4LjIyLDE3LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEyLDE3LjE2bDEuNTQuNDJhMS42NCwxLjY0LDAsMCwwLS4wOC41LDIsMiwwLDEsMCwyLTIsMi4wOCwyLjA4LDAsMCwwLS41LjA3bC0uNDEtMS41NGEzLjg0LDMuODQsMCwwLDEsLjkxLS4xMywzLjU5LDMuNTksMCwxLDEtMy41OSwzLjU5QTMuNTMsMy41''@;'; put 'put ''MywwLDAsMSwxMiwxNy4xNlpNNS4zMSw4QTEuMjUsMS4yNSwwLDEsMSw0LjA2LDkuMjUsMS4yNSwxLjI1LDAsMCwxLDUuMzEsOFptMCwyMC4wNmExLjI1LDEuMjUsMCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSw1LjMxLDI4LjA2Wm0xMC4xNi0uNzNBOS4yMiw5LjIyLDAsMCwxLDYu''@;'; put 'put ''NTQsMTUuN2wxLjU1LjQxYTcuNTUsNy41NSwwLDAsMC0uMjcsMiw3LjY0LDcuNjQsMCwwLDAsMTQuODQsMi41N2gxLjY4QTkuMjUsOS4yNSwwLDAsMSwxNS40NywyNy4zM1ptMTItOC43aC02LjVhLjguOCwwLDAsMSwwLTEuNkgyM2E3LjY2LDcuNjYsMCwwLDAtNy41Ny02LjYsNy44Niw3Ljg2''@;'; put 'put ''LDAsMCwwLTIsLjI2bC0uNDItMS41NGE5LjM2LDkuMzYsMCwwLDEsMi4zOC0uMzJBOS4yNiw5LjI2LDAsMCwxLDI0LjY2LDE3aDIuNzZhLjguOCwwLDAsMSwwLDEuNlptMy4zOSw5LjQzYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDI4LjA2Wm0wLTE3''@;'; put 'put ''LjU2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDEwLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlSGFyZERyaXZlRGlza3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0i''@;'; put 'put ''TTI2LDUuNzRBMS43NCwxLjc0LDAsMCwwLDI0LjI2LDRIMy43NEExLjc0LDEuNzQsMCwwLDAsMiw1Ljc0VjIwLjI2QTEuNzQsMS43NCwwLDAsMCwzLjc0LDIySDRWNkgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3Ljc0LDI2SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMi4yNiwxMkgxMS43NEExLjc0LDEuNzQsMCwwLDAsMTAsMTMuNzRWMjguMjZBMS43NCwxLjc0LDAsMCwwLDExLjc0LDMwSDMyLjI2QTEuNzQsMS43NCwwLDAsMCwzNCwyOC4yNlYxMy43NEExLjc0LDEuNzQsMCwwLDAsMzIuMjYsMTJaTTMyLDI4SDEyVjE0SDMyWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMjMuNjhhMi42NCwyLjY0LDAsMSwwLTIuNy0yLjYzQTIuNjcsMi42NywwLDAsMCwxOS45NCwyMy42OFptMC0zLjg3YTEuMjQsMS4yNCwwLDEsMS0xLjI5LDEuMjRBMS4y''@;'; put 'put ''NywxLjI3LDAsMCwxLDE5Ljk0LDE5LjgxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMTYuMjJhNC45Myw0LjkzLDAsMCwxLDQuOTUsNC4zNUgyMy43MVYyMmg0LjQxYS43LjcsMCwwLDAsMC0xLjRI''@;'; put 'put ''MjYuMzFhNi4zMyw2LjMzLDAsMCwwLTYuMzctNS43NSw2LjU4LDYuNTgsMCwwLDAtMS40OC4xN2wuMzUsMS4zN0E0LjczLDQuNzMsMCwwLDEsMTkuOTQsMTYuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OS45NCwyNy4yN2E2LjQyLDYuNDIsMCwwLDAsNS42Ny0zLjM1SDIzLjkzYTUsNSwwLDAsMS00LDEuOTUsNC45MSw0LjkxLDAsMCwxLTUtNC44Miw1LjE2LDUuMTYsMCwwLDEsLjA4LS43OUwxMy42MywyMGE3LDcsMCwwLDAtLjA5LDFBNi4zMiw2LjMyLDAsMCwwLDE5Ljk0LDI3LjI3WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQuMjYsNEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCwwLDMuNzQsMjJINFY2SDI2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCw5Ljc0QTEuNzQsMS43NCwwLDAsMCwyOC4yNiw4SDcuNzRBMS43NCwxLjc0LDAsMCwwLDYsOS43NFYyNC4yNkExLjc0LDEuNzQsMCwwLDAsNy43NCwyNkg4VjEwSDMwWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS42MiwyMi42QTEuNTUsMS41NSwwLDEsMCwxOCwyMS4wNSwxLjYsMS42LDAsMCwwLDE5LjYyLDIyLjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEuNzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCwwLDAsMCwzMi4yNiwxMlpNMTku''@;'; put 'put ''NjIsMTcuNzRhMy4zMSwzLjMxLDAsMSwxLTMuMzgsMy4zMUEzLjM1LDMuMzUsMCwwLDEsMTkuNjIsMTcuNzRabTAsMTEuMTNhNy45NCw3Ljk0LDAsMCwxLTgtNy44Miw3LjgzLDcuODMsMCwwLDEsLjExLTEuMjlsMS43NS4zYTUuMzYsNS4zNiwwLDAsMC0uMTEsMSw2LjE4LDYuMTgsMCwwLDAs''@;'; put 'put ''Ni4yOCw2LjA2LDYuMzUsNi4zNSwwLDAsMCw1LTIuNDZoMi4xQTguMDYsOC4wNiwwLDAsMSwxOS42MiwyOC44N1pNMjkuODksMjIuMkgyNC4zNlYyMC40NGgxLjQ4QTYuMTksNi4xOSwwLDAsMCwxOS42MiwxNWE2LjQ4LDYuNDgsMCwwLDAtMS40MS4xNmwtLjQ1LTEuN2E4LjE2LDguMTYsMCww''@;'; put 'put ''LDEsMS44Ni0uMjIsOCw4LDAsMCwxLDgsNy4yMWgyLjI2YS44OC44OCwwLDAsMSwwLDEuNzZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlTlZNZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjJWMTRhMiwy''@;'; put 'put ''LDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMkgyNUEyLDIsMCwwLDAsMjcsMjJaTTExLDE0SDI1djhIMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSI2IiB3aWR0aD0i''@;'; put 'put ''NCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI1LjAxIiB5PSI2IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik01LjgsOEgxNi44N1Y2aC0xMUw3Ljc4LDQuMDhhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDIsNyw2LjM3LDExLjRhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuNjEsMjQuNjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQyTDMwLjEsMjhIMTl2MkgzMC4ybC0yLDJhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsLjcuMjksMSwxLDAsMCwwLC43MS0uMjlMMzQsMjku''@;'; put 'put ''MDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSIyOCIgd2lkdGg9IjQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSI5IiB5PSIyOCIgd2lkdGg9IjEuOTciIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVTU0Q9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''Ni4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDE4LjYyYzEuMzIuMzEsMS45MS41NCwxLjkxLDEuMjJzLS41MywxLjA5LTEuNTUsMS4wOWE0LDQsMCwwLDEtMi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MnMtMS4xNS0yLjA1LTIu''@;'; put 'put ''ODctMi40NGMtMS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDEwLDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMUE0LjU4LDQuNTgsMCwwLDAsMTAsMTMuNjljLTEuNzQsMC0zLDEuMDUtMywyLjQ5UzguMjYsMTguMjIsMTAsMTguNjJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44MywyMC45M2E0LDQsMCwwLDEtMi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MlMxOS43MywxNy42NSwxOCwxNy4yNmMt''@;'; put 'put ''MS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDE3LjQ4LDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMWE0LjU2LDQuNTYsMCwwLDAtMy4xMi0xLjE1Yy0xLjczLDAtMywxLjA1LTMsMi40OXMxLjE5LDIsMi44OSwyLjQ0YzEuMzIuMzEsMS45MS41NCwx''@;'; put 'put ''LjkxLDEuMjJTMTguODUsMjAuOTMsMTcuODMsMjAuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS45LDE4YzAtMi40MS0xLjkyLTQuMTItNC42NC00LjEyaC0yLjl2OC4yNGgyLjlDMjgsMjIuMDgsMjku''@;'; put 'put ''OSwyMC4zNywyOS45LDE4Wm0tNi0yLjc2aDEuNTZhMi43NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk01LjIxLDhBMS4yNSwxLjI1LDAsMSwxLDQsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4yMSw4Wm0wLDIwYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMjEsMjhabTUuMDYtNS43OGE1LDUsMCww''@;'; put 'put ''LDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwyLjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIyLTIuNDksMy0yLjQ5YTQuNTgsNC41OCwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFBMy42''@;'; put 'put ''OCwzLjY4LDAsMCwwLDEwLDE1YTEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45MiwxLjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRTMTIuMjQsMjIuMjIsMTAuMjcsMjIuMjJabTcuNTEsMGE1LDUsMCwwLDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwy''@;'; put 'put ''LjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIzLTIuNDksMy0yLjQ5YTQuNTYsNC41NiwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFhMy42OCwzLjY4LDAsMCwwLTIuMzctMSwxLjI1LDEuMjUsMCww''@;'; put 'put ''LDAtMS4zOSwxLjA4YzAsLjY3LjYxLjkxLDEuOTIsMS4yMSwxLjcyLjM5LDIuODcuOTQsMi44NywyLjQ0UzE5Ljc1LDIyLjIyLDE3Ljc4LDIyLjIyWm00LjU4LS4xNFYxMy44NGgyLjljMi43MiwwLDQuNjQsMS43MSw0LjY0LDQuMTJTMjgsMjIuMDgsMjUuMjYsMjIuMDhaTTMwLjY5LDI4YTEu''@;'; put 'put ''MjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjY5LDI4Wm0wLTE3LjVhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuNjksMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjMuODYsMTUuMmgxLjU2YTIuNzcsMi43NywwLDEsMSwwLDUuNTNIMjMuODZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQmx1ZXRvb3RoPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi42''@;'; put 'put ''NCwyNS4yNywxOSwxNy41MywxOSwzLDI1LjIxLDkuNGwtNS42NSw1Ljc5TDIxLDE2LjYybDUuNjgtNS44MmEyLDIsMCwwLDAsMC0yLjc4TDIwLjQ4LDEuN0EyLjA4LDIuMDgsMCwwLDAsMTguODUsMSwyLDIsMCwwLDAsMTcsM1YxNS4zOEwxMC4wNSw4LjI3QTEsMSwwLDAsMCw4LjYyLDkuNjZM''@;'; put 'put ''MTYuNzksMTgsOS4wNiwyNmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzM2EyLjA3LDIuMDcsMCwwLDAsLjcxLDEuNjJBMiwyLDAsMCwwLDE5LDM1YTEuOTQsMS45NCwwLDAsMCwxLjQyLS42bDYuMjMtNi4zOEEyLDIsMCwwLDAs''@;'; put 'put ''MjYuNjQsMjUuMjdaTTE5LDMzLjA1VjIwLjI5bDYuMjEsNi4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICA8cGF0aCBkPSJNMjYuNTIsMjQuNTJsLTUuNjUtNS44My0xLjQ2LTEuNXYtMTJMMjMuNzksOS43bC0zLjYsMy43MSwyLjI0LDIuMjks''@;'; put 'put ''NC4wOS00LjIyYTIuNTQsMi41NCwwLDAsMCwwLTMuNTZMMjAuNTcsMS43OEEyLjU0LDIuNTQsMCwwLDAsMTYuMiwzLjU1VjEzLjg2bC01LjUzLTUuN2ExLjYsMS42LDAsMSwwLTIuMywyLjIzTDE1Ljc1LDE4bC03LDcuMTlhMS42LDEuNiwwLDAsMCwwLDIuMjYsMS42MywxLjYzLDAsMCwwLDEu''@;'; put 'put ''MTIuNDUsMS41OCwxLjU4LDAsMCwwLDEuMTUtLjQ5bDUuMTEtNS4yN1YzMi40NWEyLjUzLDIuNTMsMCwwLDAsMS41OSwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUuMTksMi41NiwyLjU2LDAsMCwwLDEuODMtLjc3bDUuOTUtNi4xNUEyLjU0LDIuNTQsMCwwLDAsMjYuNTIsMjQuNTJaTTE5LjQs''@;'; put 'put ''MzAuODNWMjEuNzdsNC4zOSw0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQmx1ZXRvb3RoT2ZmPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOSwzLDI1LjIyLDkuNGwtNS42Niw1LjhMMjEsMTYuNjNsNS42OC01LjgzYTIs''@;'; put 'put ''MiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIsMiwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzdjExLjRsMiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuNzcsNSwzLjM2LDYuNDIsMTUuODksMTksOS4wNiwyNmExLDEsMCww''@;'; put 'put ''LDAsLjcxLDEuNywxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzMi45NGEyLjA4LDIuMDgsMCwwLDAsLjcxLDEuNjNBMiwyLDAsMCwwLDE5LDM1YTIsMiwwLDAsMCwxLjQyLS42bDUuNDEtNS41NCwzLjU0LDMuNTNMMzAuNzcsMzFaTTE5LDMzLjA1di0xMWw1LjQxLDUuNDFaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzEsNS4xNywyMy43LDkuN2wtMy41OSwzLjcxLDIuMjQsMi4yOSw0LjA5LTQuMjJhMi41NiwyLjU2LDAsMCwwLDAtMy41NmwtNi02LjE0YTIuNTEsMi41MSwwLDAsMC0yLjc3LS41OSwyLjU0LDIuNTQs''@;'; put 'put ''MCwwLDAtMS42LDIuMzZ2MTBsMy4yMSwzLjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNNC41LDUsMy4wOSw2LjQyLDE1LjE3LDE4LjUxLDguNywyNS4xOUExLjYsMS42LDAsMCwwLDkuODUsMjcuOSwxLjU3LDEuNTcsMCwwLDAsMTEsMjcu''@;'; put 'put ''NDFsNS4xMS01LjI3VjMyLjQ1YTIuNTQsMi41NCwwLDAsMCwxLjYsMi4zNiwyLjQ0LDIuNDQsMCwwLDAsLjk1LjE5LDIuNTUsMi41NSwwLDAsMCwxLjgyLS43N2w1LjEyLTUuMjksMy40OSwzLjQ4TDMwLjUsMzFaTTE5LjgxLDMwLjgzVjIyLjY1bDQsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVByb2Nlc3NPblZNPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy40OSwyNi4yOGExLDEsMCwwLDAtMS4yLS43bC0yLjQ5LjY3YTE0LjIzLDE0LjIzLDAsMCwwLDIuNC02Ljc1QTE0LjQ4LDE0LjQ4LDAsMCwwLDI3LjM3LDcu''@;'; put 'put ''MzUsMSwxLDAsMCwwLDI2LDcuNDRhMSwxLDAsMCwwLC4wOSwxLjQxLDEyLjQ1LDEyLjQ1LDAsMCwxLDQuMTYsMTAuNDYsMTIuMTksMTIuMTksMCwwLDEtMiw1Ljc0TDI4LDIyLjU0YTEsMSwwLDEsMC0xLjk1LjE2bC41LDYuNDQsNi4yNS0xLjY2QTEsMSwwLDAsMCwzMy40OSwyNi4yOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjMxLDE3LjA4YTEuMDYsMS4wNiwwLDAsMCwuNDQuMTYsMSwxLDAsMCwwLDEuMTItLjg1QTEyLjIxLDEyLjIxLDAsMCwxLDE4LjY5LDUuODRMMTYuNDUsNy4zN2ExLDEsMCwwLDAsLjQ3LDEuNzlB''@;'; put 'put ''MSwxLDAsMCwwLDE3LjU2LDlsNS4zMy0zLjY2TDE4LjMzLjc2YTEsMSwwLDEsMC0xLjM5LDEuMzhsMS43LDEuN0ExNC4yLDE0LjIsMCwwLDAsMy44OSwxNi4xMiwxLDEsMCwwLDAsNC4zMSwxNy4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yMS43MywyOS45M2ExMiwxMiwwLDAsMS00Ljg0LjUxLDEyLjMsMTIuMywwLDAsMS05LjU3LTYuM2wyLjQ5LjkzYTEsMSwwLDAsMCwuNjktMS44NGwtNC41OS0xLjdoMEw0LjQ0LDIxLDMuMzMsMjcuMzVhMSwxLDAsMCwwLC43OSwxLjEzbC4xNywwYTEsMSwwLDAsMCwxLS44MWwuNDIt''@;'; put 'put ''Mi40YTE0LjMsMTQuMywwLDAsMCwxMSw3LjE0LDEzLjkxLDEzLjkxLDAsMCwwLDUuNjMtLjYsMSwxLDAsMCwwLS42LTEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxM0gxNGExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEs''@;'; put 'put ''MWg4YTEsMSwwLDAsMCwxLTFWMTRBMSwxLDAsMCwwLDIyLDEzWm0tMSw4SDE1VjE1aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlQXNzaWduVXNlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNy40Niw3LjQ2''@;'; put 'put ''LDAsMSwwLTcuNDUtNy40NkE3LjQ2LDcuNDYsMCwwLDAsMTgsMTdaTTE4LDQuMDdhNS40Niw1LjQ2LDAsMSwxLTUuNDUsNS40NUE1LjQ2LDUuNDYsMCwwLDEsMTgsNC4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDMxLjg5VjI1''@;'; put 'put ''Ljc3YTE2LjEzLDE2LjEzLDAsMCwxLDEyLTUsMTYuNjEsMTYuNjEsMCwwLDEsOC43MSwyLjMzbDEuMzUtMS41MUExOC41MywxOC41MywwLDAsMCwxOCwxOC43NCwxNy43LDE3LjcsMCwwLDAsNC4yMSwyNC44YTEsMSwwLDAsMC0uMjEuNnY2LjQ5QTIuMDYsMi4wNiwwLDAsMCw2LDM0SDE4LjM5''@;'; put 'put ''bC0xLjktMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMS44OSwzMCwzMkgyNi44NWwtMS44LDJIMzBhMi4wNiwyLjA2LDAsMCwwLDItMi4wN1YyNi4ybC0yLDIuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzQuNzYsMTguNjJhMSwxLDAsMCwwLTEuNDEuMDhsLTExLjYyLDEzLTUuMi01LjU5QTEsMSwwLDAsMCwxNS4xMiwyNmExLDEsMCwwLDAtLjA2LDEuNDJsNi42OSw3LjJMMzQuODQsMjBBMSwxLDAsMCwwLDM0Ljc2LDE4LjYyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxMC4zNiIgcj0iNi44MSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTIsMjYuNjVhMi44LDIuOCwwLDAsMSw0Ljg1LTEuOEwyMC43MSwyOWw2''@;'; put 'put ''Ljg0LTcuNjNBMTYuODEsMTYuODEsMCwwLDAsMTgsMTguNTUsMTYuMTMsMTYuMTMsMCwwLDAsNS41LDI0YTEsMSwwLDAsMC0uMi42MVYzMGEyLDIsMCwwLDAsMS45NCwyaDguNTdsLTMuMDctMy4zQTIuODEsMi44MSwwLDAsMSwxMiwyNi42NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI4Ljc2LDMyYTIsMiwwLDAsMCwxLjk0LTJWMjYuMjRMMjUuNTcsMzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMy43NywxOC42MmExLDEsMCwwLDAtMS40Mi4wOGwtMTEuNjIsMTMtNS4yLTUu''@;'; put 'put ''NTlBMSwxLDAsMCwwLDE0LjEyLDI2YTEsMSwwLDAsMCwwLDEuNDJsNi42OCw3LjJMMzMuODQsMjBBMSwxLDAsMCwwLDMzLjc3LDE4LjYyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlQXRvbT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMTgsMTQuMDVhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMTQuMDVabTAsNi40NGEyLjQyLDIuNDIsMCwxLDEsMi40Mi0yLjQyQTIuNDIsMi40MiwwLDAsMSwxOCwyMC40OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNC4y''@;'; put 'put ''MywxMS43MWEzOS4xNCwzOS4xNCwwLDAsMC00LjU3LTMuOTIsMjIuODYsMjIuODYsMCwwLDEsMy40OC0xLjcyYy4zMi0uMTIuNjItLjIxLjkyLS4zYTIuMjgsMi4yOCwwLDAsMCwzLjgxLS40NiwzLjMxLDMuMzEsMCwwLDEsMS45Mi44NGMxLjE5LDEuMTksMS4yMiwzLjU5LjEsNi41OC40OS42''@;'; put 'put ''NS45NCwxLjMxLDEuMzUsMiwuMTctLjQuMzUtLjc5LjQ5LTEuMTgsMS40Ny0zLjg1LDEuMjgtNy0uNTMtOC43OGE1LjI5LDUuMjksMCwwLDAtMy4zMy0xLjQ0LDIuMjksMi4yOSwwLDAsMC00LjMxLjU0Yy0uMzcuMTEtLjc0LjIyLTEuMTMuMzdhMjUuNzksMjUuNzksMCwwLDAtNC41NywyLjM1''@;'; put 'put ''QTI2LjIxLDI2LjIxLDAsMCwwLDEzLjI4LDQuMmMtMy44NS0xLjQ2LTctMS4yOC04Ljc3LjUzQzIuODUsNi40LDIuNTgsOS4xNywzLjY4LDEyLjU5YTIuMjgsMi4yOCwwLDAsMCwxLjU5LDMuNjdjLjMyLjYxLjY3LDEuMjIsMS4wNiwxLjgyQTI1LjU0LDI1LjU0LDAsMCwwLDQsMjIuNjZjLTEu''@;'; put 'put ''NDcsMy44NC0xLjI4LDcsLjUzLDguNzdhNS42Myw1LjYzLDAsMCwwLDQuMTIsMS41MSwxMy4zNCwxMy4zNCwwLDAsMCw0LjY1LTEsMjYuMjEsMjYuMjEsMCwwLDAsNC41OC0yLjM1QTI1Ljc5LDI1Ljc5LDAsMCwwLDIyLjQzLDMyYTE0LjE2LDE0LjE2LDAsMCwwLDMuNjUuOUEyLjMsMi4zLDAs''@;'; put 'put ''MCwwLDMwLjQ2LDMyYTQuNTUsNC41NSwwLDAsMCwuNzQtLjU3YzEuODEtMS44MSwyLTQuOTMuNTMtOC43N0EzMi42OCwzMi42OCwwLDAsMCwyNC4yMywxMS43MVpNMTIuNTcsMzAuMDljLTMsMS4xNS01LjQ1LDEuMTMtNi42NS0uMDhzLTEuMjMtMy42Mi0uMDctNi42NGEyMi43NywyMi43Nyww''@;'; put 'put ''LDAsMSwxLjcxLTMuNDgsNDAuMTksNDAuMTksMCwwLDAsMy45Miw0LjU2Yy40My40My44Ny44NSwxLjMxLDEuMjVxLjktLjQ2LDEuODMtMS4wNWMtLjU4LS41Mi0xLjE2LTEtMS43Mi0xLjYxYTM0LDM0LDAsMCwxLTUuNzQtNy40N0EyLjI5LDIuMjksMCwwLDAsNS41LDExLjY5aDBjLS43NS0y''@;'; put 'put ''LjUtLjYyLTQuNDkuNDMtNS41NGEzLjcyLDMuNzIsMCwwLDEsMi43Mi0uOTIsMTEuNCwxMS40LDAsMCwxLDMuOTMuODQsMjIuODYsMjIuODYsMCwwLDEsMy40OCwxLjcyLDM5LjE0LDM5LjE0LDAsMCwwLTQuNTcsMy45MmMtLjQ0LjQ0LS44Ny45LTEuMjksMS4zNmEyMC4yNywyMC4yNywwLDAs''@;'; put 'put ''MCwxLDEuODVjLjU0LS42MSwxLjA5LTEuMjEsMS42OC0xLjhhMzYuMzMsMzYuMzMsMCwwLDEsNS00LjE3LDM2Ljg4LDM2Ljg4LDAsMCwxLDQuOTUsNC4xNywzNi4yNiwzNi4yNiwwLDAsMSw0LjE3LDUsMzcsMzcsMCwwLDEtNC4xNyw1QTMwLjY4LDMwLjY4LDAsMCwxLDEyLjU3LDMwLjA5Wk0y''@;'; put 'put ''OS43OSwzMGwtLjE2LjEzYTIuMjcsMi4yNywwLDAsMC0zLjUuNzIsMTIuNTcsMTIuNTcsMCwwLDEtMy0uNzcsMjIsMjIsMCwwLDEtMy40OC0xLjcyLDM5LjE0LDM5LjE0LDAsMCwwLDQuNTctMy45MiwzOC4yNiwzOC4yNiwwLDAsMCwzLjkyLTQuNTYsMjIuODgsMjIuODgsMCwwLDEsMS43Miwz''@;'; put 'put ''LjQ4QzMxLDI2LjM5LDMxLDI4LjgxLDI5Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LjIzLDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTctMy45MiwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LTEuNzJjLjMyLS4xMi42''@;'; put 'put ''Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIyLDMuNTkuMSw2LjU4LjQ5LjY1Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzkuNDktMS4xOCwxLjQ3LTMuODUsMS4yOC03LS41My04Ljc4YTUuMjksNS4y''@;'; put 'put ''OSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43OSwwLDAsMC00LjU3LDIuMzVBMjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0zLjg1LTEuNDYtNy0xLjI4LTguNzcuNTNDMi44NSw2LjQsMi41OCw5LjE3''@;'; put 'put ''LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQsMCwwLDAsNCwyMi42NmMtMS40NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUuNjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0LDEzLjM0LDAsMCwwLDQuNjUt''@;'; put 'put ''MSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAsMy42NS45QTIuMywyLjMsMCwwLDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43NC0uNTdjMS44MS0xLjgxLDItNC45My41My04Ljc3QTMyLjY4LDMyLjY4''@;'; put 'put ''LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02LjY0YTIyLjc3LDIyLjc3LDAsMCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAsMCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1LDEuMzEsMS4yNXEuOS0uNDYs''@;'; put 'put ''MS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1LjUsMTEuNjloMGMtLjc1LTIuNS0uNjItNC40OS40My01LjU0YTMuNzIsMy43MiwwLDAsMSwyLjcyLS45MiwxMS40LDExLjQsMCwwLDEsMy45My44NCwyMi44''@;'; put 'put ''NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2YTIwLjI3LDIwLjI3LDAsMCwwLDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1LTQuMTcsMzYuODgsMzYuODgs''@;'; put 'put ''MCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCwwLDEsMTIuNTcsMzAuMDlaTTI5Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCwwLTMuNS43MiwxMi41NywxMi41NywwLDAsMS0zLS43NywyMiwyMiwwLDAs''@;'; put 'put ''MS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwyMi44OCwwLDAsMSwxLjcyLDMuNDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAv''@;'; put 'put ''PjxjaXJjbGUgY3g9IjE3Ljk5IiBjeT0iMTguMDciIHI9IjMuMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIuNjYgMy4xMSkgcm90YXRlKC05LjIyKSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQmFyQ29kZT0oMCxFLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBkPSJNNSw3QTEsMSwwLDAsMCw0LDhWMzBhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw1LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSw3QTEsMSwwLDAsMCw4LDhWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAs''@;'; put 'put ''MCw5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMTMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0xNyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxNyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCww''@;'; put 'put ''LDIxLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMjUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0yOSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyOSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTMzLDdhMSwxLDAsMCwwLTEsMVYzMGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCww''@;'; put 'put ''LDMzLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz4nKSxMLkNsclNoYXBlQ2REdmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwx''@;'; put 'put ''NCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMi4zMywxOGE0LjQ2LDQuNDYsMCwxLDAtNC40NSw0LjQ2QTQuNDYsNC40NiwwLDAsMCwyMi4zMywxOFpNMTcuODgsMjAuOUEyLjg2LDIuODYsMCwxLDEsMjAu''@;'; put 'put ''NzMsMTgsMi44NiwyLjg2LDAsMCwxLDE3Ljg4LDIwLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTcuODgsNy40M0gxOFY1Ljg0aC0uMTJBMTIuMjEsMTIuMjEsMCwwLDAsNS42OCwxNy43NWgxLjZBMTAuNjEsMTAuNjEsMCwwLDEs''@;'; put 'put ''MTcuODgsNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC4wOCwxOEgyOC40OXYwQTEwLjYxLDEwLjYxLDAsMCwxLDE4LjI1LDI4LjYzdjEuNkExMi4yMiwxMi4yMiwwLDAsMCwzMC4wOSwxOFMzMC4wOCwxOCwzMC4wOCwxOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxMVY5LjQ0aC0uMTJhOC42Miw4LjYyLDAsMCwwLTguNiw4LjMyaDEuNmE3LDcsMCwwLDEsNy02LjcyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+''@;'; put 'put ''PHBhdGggZD0iTTE4LjI1LDI1djEuNkE4LjYxLDguNjEsMCwwLDAsMjYuNDgsMTh2MGgtMS42djBBNyw3LDAsMCwxLDE4LjI1LDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE4LjE3LDEuOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYs''@;'; put 'put ''MTYsMCwwLDAsMTguMTcsMS45MlpNMjYuMjMsMThoMS41NGE5LjYxLDkuNjEsMCwwLDEtOS42LDkuNTNIMThWMjZoLjE3QTguMDcsOC4wNywwLDAsMCwyNi4yMywxOFpNNi4wNSwxOEg0LjQ1di0uMDhBMTMuNzIsMTMuNzIsMCwwLDEsMTgsNC4yMXYxLjZBMTIuMTMsMTIuMTMsMCwwLDAsNi4w''@;'; put 'put ''NSwxNy45MlptNC4wNSwwSDguNTZ2LS4wOEE5LjYxLDkuNjEsMCwwLDEsMTgsOC4zMlY5Ljg2YTguMDcsOC4wNywwLDAsMC03LjksOC4wNlptNC4zMi0uMDhhMy43NSwzLjc1LDAsMSwxLDMuNzUsMy43NUEzLjc1LDMuNzUsMCwwLDEsMTQuNDIsMTcuOTJabTMuNzUsMTMuNzFIMThWMzBoLjE3''@;'; put 'put ''QTEyLjEzLDEyLjEzLDAsMCwwLDMwLjI4LDE4aDEuNkExMy43MywxMy43MywwLDAsMSwxOC4xNywzMS42M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUNvbnRhaW5lcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMzBINGEy''@;'; put 'put ''LDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjI4QTIsMiwwLDAsMSwzMiwzMFpNNCw4VjI4SDMyVjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44''@;'; put 'put ''LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSw5LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuOTIsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMTQuOTIsMjUu''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSwyMSwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTI3LDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDI3LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhW''@;'; put 'put ''MjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTkuNjMsMjQuMjNhLjc5Ljc5LDAsMCwxLS44MS43N0EuNzkuNzksMCwwLDEsOCwyNC4yM1YxMS43N0EuNzkuNzksMCwwLDEsOC44MiwxMWEuNzkuNzksMCwwLDEsLjgxLjc3Wm02LDBhLjc5Ljc5LDAs''@;'; put 'put ''MCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEtLjc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4yMSwwYS43OS43OSwwLDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwu''@;'; put 'put ''ODIuNzdabTYuMTIsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEsLjgyLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ29udGFpbmVy''@;'; put 'put ''Vm9sdW1lPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDE3LjU4YTMyLjM1LDMyLjM1LDAsMCwwLDYuMy45Miw0LjEzLDQuMTMsMCwwLDEsLjkyLTEuMzcsMzAuOTQsMzAuOTQsMCwwLDEtNy4yMi0xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTYsMjhWOC4xOWMuMzQtLjc2LDQuMzEtMi4xMSwxMS0yLjExczEwLjY3LDEuMzUsMTEsMnYuM2MtLjgyLjc5LTQuNTgsMi4wNS0xMS4xMSwyLjA1QTMzLjQ4LDMzLjQ4LDAsMCwxLDgsOS40NHYxLjQ0YTM1LjYsMzUuNiwwLDAsMCw4Ljg5LDFjNC4yOSwwLDguOC0uNTgsMTEu''@;'; put 'put ''MTEtMS44MnY1LjA3YTUuMyw1LjMsMCwwLDEtMS44MS44OEgzMFY4LjEyYzAtMy4xOS04LjE3LTQtMTMtNHMtMTMsLjg1LTEzLDRWMjhDNCwzMC42Myw5LjM5LDMxLjY4LDE0LDMyVjMwQzkuMTMsMjkuNjYsNi4yOCwyOC42Miw2LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTgsMjQuMjhhMzEuMywzMS4zLDAsMCwwLDYsLjg5di0xLjRhMjguOTMsMjguOTMsMCwwLDEtNi0uOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYz''@;'; put 'put ''MmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yMSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwwLDAs''@;'; put 'put ''MS40LDBWMjIuNEEuNy43LDAsMCwwLDIxLDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsMjEuODJhLjcuNywwLDAsMC0uNy43VjMwYS43LjcsMCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAsMCwyNSwyMS44MloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYzMmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDIxLjdh''@;'; put 'put ''LjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI1LDIxLjgyYS43LjcsMCwwLDAtLjcuN1YzMGEuNy43LDAsMSwwLDEuNCwwVjIyLjUy''@;'; put 'put ''QS43LjcsMCwwLDAsMjUsMjEuODJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxNkgyOFY4LjEyYzAtMS42OC01LjM4LTMtMTItM1M0LDYuNDQsNCw4LjEyVjI4YzAsMS41LDQuMzMsMi43NSwxMCwzVjI1LjIyYTI5LjE3LDI5LjE3LDAsMCwxLTgtMS4yOVYyMi40NGwuMjQuMUEyNi42MywyNi42MywwLDAsMCwx''@;'; put 'put ''NCwyMy44MlYyMGE0LDQsMCwwLDEsLjI5LTEuNDdBMjkuMTksMjkuMTksMCwwLDEsNiwxNy4yM1YxNS43NWwuMjQuMDlhMjksMjksMCwwLDAsOSwxLjMyaDBBNCw0LDAsMCwxLDE4LDE2Wk02LDEwLjU0VjkuMDVsLjI0LjA5QTMwLjEyLDMwLjEyLDAsMCwwLDE2LDEwLjQ3LDI4LjMzLDI4LjMz''@;'; put 'put ''LDAsMCwwLDI2LDkuMDV2MS41YTMyLjUzLDMyLjUzLDAsMCwxLTEwLDEuMzJBMzIuNDQsMzIuNDQsMCwwLDEsNiwxMC41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksTC5DbHJTaGFwZUZpbGVTaGFyZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAs''@;'; put 'put ''MCwuODEuNDFIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOTEsMjIuNDhhMi4wNiwyLjA2LDAsMCwwLTEuNDQuNjJsLTUuNzItMi42NlYyMGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0LDIuMTIsMi4xMiww''@;'; put 'put ''LDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNhMi4wOSwyLjA5LDAsMSwwLDIuMDgtMi4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDlIMTYu''@;'; put 'put ''NDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wk02LDdoNi40OWwyLjcyLDRINlpNMjEuOTQsMjYuNjRhMi4wOSwyLjA5LDAsMCwxLTIuMTEtMi4wNmwwLS4zLTUu''@;'; put 'put ''NjctMi42Ni0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMDgsMi4wOCwwLDEsMSwuNTgsMS40NkwxNC43NSwyMHYuNDdsNS43MiwyLjY2YTIuMDcsMi4wNywwLDEsMSwxLjQ3LDMuNTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIiAvPicpLEwuQ2xyU2hhcGVRckNvZGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNiw0QTEuNiwxLjYsMCwwLDAsNCw1LjZWMTJoOFY0Wk0xMCwxMEg2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LDMwLjRB''@;'; put 'put ''MS42LDEuNiwwLDAsMCw1LjYsMzJIMTJWMjRINFpNNiwyNmg0djRINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwzMmg2LjRBMS42LDEuNiwwLDAsMCwzMiwzMC40VjI0SDI0Wm0yLTZoNHY0SDI2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjQsNEgyNHY4aDhWNS42QTEuNiwxLjYsMCwwLDAsMzAuNCw0Wk0zMCwxMEgyNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwIDEwIDIw''@;'; put 'put ''IDggMTYgOCAxNiAxMiAxOCAxMiAxOCAxMCAyMCAxMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHJlY3QgeD0iMTIiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48''@;'; put 'put ''cmVjdCB4PSIxNCIgeT0iMTQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgNiAyMCA4IDIyIDggMjIgNCAxNCA0IDE0IDggMTYgOCAxNiA2IDIwIDYiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxyZWN0IHg9IjQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSI0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz48cG9seWdvbiBwb2ludHM9IjEyIDE2IDEyIDE4IDEwIDE4IDEwIDE0IDggMTQgOCAxOCA2''@;'; put 'put ''IDE4IDYgMjAgNCAyMCA0IDIyIDggMjIgOCAyMCAxMCAyMCAxMCAyMiAxMiAyMiAxMiAyMCAxNCAyMCAxNCAxNiAxMiAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgMTYgMjIgMTYgMjIgMTggMjQgMTggMjQgMTYg''@;'; put 'put ''MjYgMTYgMjYgMTQgMjIgMTQgMjIgMTAgMjAgMTAgMjAgMTIgMTggMTIgMTggMTQgMjAgMTQgMjAgMTYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgLz48cG9seWdvbiBwb2ludHM9IjE4IDMwIDE0IDMwIDE0IDMyIDIyIDMyIDIyIDMwIDIwIDMwIDIwIDI4''@;'; put 'put ''IDE4IDI4IDE4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIC8+PHBvbHlnb24gcG9pbnRzPSIyMiAyMCAyMiAxOCAyMCAxOCAyMCAxNiAxOCAxNiAxOCAxOCAxNiAxOCAxNiAyMCAxOCAyMCAxOCAyMiAyMCAyMiAyMCAyMCAyMiAyMCIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiAvPjxyZWN0IHg9IjMwIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiAvPjxyZWN0IHg9IjIyIiB5PSIyMCIgd2lkdGg9IjYiIGhlaWdodD0iMiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiAvPjxwb2x5Z29uIHBvaW50cz0iMzAgMTQgMjggMTQgMjggMTYgMjYgMTYgMjYgMTggMjggMTggMjggMjAgMzAgMjAgMzAgMTggMzIgMTggMzIgMTYgMzAgMTYgMzAgMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xNiIgLz48cmVjdCB4PSIyMCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNyIgLz48cG9seWdvbiBwb2ludHM9IjE0IDI4IDE2IDI4IDE2IDI2IDE4IDI2IDE4IDI0IDE2IDI0IDE2''@;'; put 'put ''IDIwIDE0IDIwIDE0IDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTgiIC8+JyksTC5DbHJTaGFwZVVzYj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuMjksMTEuNGExLjQ5LDEuNDksMCwwLDEsMS4yOC0uNzJoMWEyLjg5LDIuODksMCwwLDAsMi43''@;'; put 'put ''NSwyLjA5LDMsMywwLDAsMCwwLTUuOTEsMi45LDIuOSwwLDAsMC0yLjY3LDEuODJIMTUuNTdhMy40OSwzLjQ5LDAsMCwwLTMsMS42NmwtMyw0LjgzaDIuMzZabTUtMi45NEExLjM2LDEuMzYsMCwxLDEsMTgsOS44MSwxLjMyLDEuMzIsMCwwLDEsMTkuMzMsOC40NloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zNC4zLDE3LjM3bC02LjExLTMuNjZhLjcuNywwLDAsMC0uNywwLC43MS43MSwwLDAsMC0uMzYuNjFWMTdINi45MmEyLjMzLDIuMzMsMCwwLDEsLjMyLDEuMTcsMi40NywyLjQ3LDAsMSwxLTIuNDctMi40NiwyLjM3LDIu''@;'; put 'put ''MzcsMCwwLDEsMS4xNS4zbC45My0xLjc2QTQuNDQsNC40NCwwLDEsMCw5LjE1LDE5aDMuNThsNC4xNyw2LjY1YTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMS42NnYxLjI4YS43OS43OSwwLDAsMCwuOC43OWg0LjQ5YS43OS43OSwwLDAsMCwuOC0uNzl2LTQuNGEuNzkuNzksMCwwLDAtLjgtLjhI''@;'; put 'put ''MjIuMzRhLjguOCwwLDAsMC0uOC44djEuMTJIMTkuODhhMS41MSwxLjUxLDAsMCwxLTEuMjgtLjcyTDE1LjA5LDE5aDEydjIuNjZhLjY5LjY5LDAsMCwwLC4zNi42MS42Ny42NywwLDAsMCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDYuMTEtMy42NmEuNjkuNjksMCwwLDAsLjM0LS42QS43''@;'; put 'put ''MS43MSwwLDAsMCwzNC4zLDE3LjM3Wk0yMy4xNCwyNUgyNnYyLjhIMjMuMTRabTUuMzktNC41NlYxNS41NWw0LDIuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzQuNzIsMTcuMzdsLTUuNTEtMy4zMWEuNzEuNzEsMCwwLDAtMS4w''@;'; put 'put ''Ny42VjE3SDExLjc3bDMuNTItNS42YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxLjY0YTIuNDEsMi40MSwwLDAsMCwyLjI1LDEuNjEsMi40OCwyLjQ4LDAsMCwwLDAtNC45NSwyLjM4LDIuMzgsMCwwLDAtMi4xMywxLjM0SDE2LjU3YTMuNDksMy40OSwwLDAsMC0zLDEuNjZMOS40MSwxN0g4''@;'; put 'put ''YTMuNDYsMy40NiwwLDEsMCwuMDgsMmg1LjY0bDQuMTUsNi42MmEzLjQ5LDMuNDksMCwwLDAsMywxLjY2aDIuNTl2LjkyaDQuNFYyMy44aC00LjR2MS40OEgyMC44OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTYuMTEsMTloMTJ2Mi4yOGEuNy43LDAsMCwwLC4zNi42MS43Mi43MiwwLDAs''@;'; put 'put ''MCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDUuNTItMy4zMWEuNy43LDAsMCwwLDAtMS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlUmFkYXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDE4YzAsNy43LTYuMywxNC0x''@;'; put 'put ''NCwxNGMtNy43LDAtMTQtNi4zLTE0LTE0QzQsMTAuNiw5LjcsNC41LDE3LjEsNHYzLjdjLTUuNywwLjUtOS45LDUuNS05LjQsMTEuMnM1LjUsOS45LDExLjIsOS40XG5cdGM1LjMtMC41LDkuNC00LjksOS40LTEwLjNoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zcy04LjMtMy43LTguMy04LjNj''@;'; put 'put ''MC00LjIsMy4xLTcuOCw3LjMtOC4zdjQuNGMtMS44LDAuNC0zLjEsMi0zLjEsMy45XG5cdGMwLDIuMiwxLjgsNCw0LDRzNC0xLjgsNC00YzAtMS44LTEuMy0zLjQtMy0zLjhWMi4xQzE4LjYsMiwxOC4zLDIsMTgsMkM5LjIsMiwyLDkuMiwyLDE4czcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZI''@;'; put 'put ''MzJ6IE0yMCwxOFxuXHRjMCwxLjEtMC45LDItMiwycy0yLTAuOS0yLTJzMC45LTIsMi0yUzIwLDE2LjksMjAsMTh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIsMThjMCw3LjctNi4yLDE0LTE0LDE0UzQsMjUuOCw0LDE4YzAtNy40''@;'; put 'put ''LDUuNy0xMy41LDEzLjEtMTR2My43Yy01LjcsMC41LTkuOCw1LjUtOS4zLDExLjJzNS41LDkuOCwxMS4yLDkuM1xuXHRcdGM1LjMtMC41LDkuMy00LjksOS4zLTEwLjJoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zUzkuNywyMi42LDkuNywxOGMwLTQuMiwzLjItNy44LDcuMy04LjJ2NC40Yy0y''@;'; put 'put ''LjEsMC42LTMuNCwyLjctMi45LDQuOVxuXHRcdGMwLjYsMi4xLDIuNywzLjQsNC45LDIuOWMyLjEtMC42LDMuNC0yLjcsMi45LTQuOWMtMC40LTEuNC0xLjUtMi41LTIuOS0yLjlWMmMtMC40LDAtMC43LDAtMS4xLDBjLTguOCwwLTE2LDcuMi0xNiwxNlxuXHRcdGMwLDguOCw3LjIsMTYsMTYs''@;'; put 'put ''MTZzMTYtNy4yLDE2LTE2YzAsMCwwLDAsMCwwSDMyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlSW5kdWN0b3I9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjMxLDI1LjgxYy0xLjc1LDAtMy0yLjQ5LTMtNmExMi43OSwxMi43''@;'; put 'put ''OSwwLDAsMSwxLjcyLTYuNywyLjU3LDIuNTcsMCwwLDAtMy43OSwwQTEyLjc5LDEyLjc5LDAsMCwxLDIxLDE5Ljc2YzAsMy41Ni0xLjIzLDYtMyw2cy0zLTIuNDktMy02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDAsMTIuNzksMTIuNzksMCwwLDEs''@;'; put 'put ''MS43Miw2LjdjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuODgsMTIuODgsMCwwLDEsMS43MS02LjcsMi43LDIuNywwLDAsMC0xLjg5LS44N0M3LjEsMTIuMTksNS42OSwxMy43LDUsMTZsLS4yMy43SDJhMSwxLDAsMCwxLDAtMkgzLjI5YzEuMS0yLjgzLDMuMDYtNC41NSw1LjI0''@;'; put 'put ''LTQuNTVhNC42Nyw0LjY3LDAsMCwxLDMuMTYsMS4zMiw0LjYyLDQuNjIsMCwwLDEsMy4xNS0xLjMyQTQuNjUsNC42NSwwLDAsMSwxOCwxMS41MWE0LjQzLDQuNDMsMCwwLDEsNi4zMSwwLDQuNjcsNC42NywwLDAsMSwzLjE2LTEuMzJjMi4xOCwwLDQuMTQsMS43Miw1LjI0LDQuNTVIMzRhMSwx''@;'; put 'put ''LDAsMCwxLDAsMkgzMS4yOGwtLjIzLS43Yy0uNzQtMi4zNC0yLjE1LTMuODUtMy41OC0zLjg1YTIuNywyLjcsMCwwLDAtMS44OS44NywxMi44OCwxMi44OCwwLDAsMSwxLjcxLDYuN0MyNy4yOSwyMy4zMiwyNi4wNywyNS44MSwyNC4zMSwyNS44MVpNMTgsMTQuOTNhMTEuNzEsMTEuNzEsMCww''@;'; put 'put ''LDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTgsMTQuOTNabTYuMzEsMGExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwy''@;'; put 'put ''NC4zMSwxNC45M1ptLTEyLjYyLDBhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTEuNjksMTQuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxM''@;'; put 'put ''LkNsclNoYXBlUmVzaXN0b3I9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjQzLDI2LjM0aDBBMS40NywxLjQ3LDAsMCwxLDI4LDI1LjIyTDI0Ljg2LDEzLjE1LDIxLjc0LDI1LjIyYTEuNDksMS40OSwwLDAsMS0xLjQ1LDEuMTJoMGExLjQ5LDEuNDksMCwwLDEtMS40Ni0xLjEyTDE1''@;'; put 'put ''LjcxLDEzLjE1LDEyLjYsMjUuMjJhMS41MSwxLjUxLDAsMCwxLTIuOTEsMEw2LjU3LDEzLjE1LDUuMjIsMTguMzdIMmExLDEsMCwwLDEsMC0ySDMuNjdsMS40NS01LjU5QTEuNDgsMS40OCwwLDAsMSw2LjU3LDkuNjZoMEExLjQ3LDEuNDcsMCwwLDEsOCwxMC43OGwzLjEyLDEyLjA3LDMuMTIt''@;'; put 'put ''MTIuMDdhMS40OSwxLjQ5LDAsMCwxLDEuNDUtMS4xMmgwYTEuNDksMS40OSwwLDAsMSwxLjQ2LDEuMTJsMy4xMiwxMi4wNywzLjEyLTEyLjA3YTEuNSwxLjUsMCwwLDEsMi45LDBsMy4xMiwxMi4wNywxLjM1LTUuMjJIMzRhMSwxLDAsMCwxLDAsMkgzMi4zM2wtMS40NSw1LjU5QTEuNDgsMS40''@;'; put 'put ''OCwwLDAsMSwyOS40MywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVDYXBhY2l0b3I9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2''@;'; put 'put ''QTEsMSwwLDAsMSwxNSwzNC4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwzNC4wNmExLDEsMCwwLDEtMS0xVjMuMTVhMSwxLDAsMSwxLDIsMFYzMy4wNkExLDEsMCwwLDEsMjEsMzQuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuNDYsMTlIM2ExLDEsMCwwLDEsMC0ySDE0LjQ2YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMTlIMjEuNTRhMSwxLDAsMCwxLDAtMkgz''@;'; put 'put ''M2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZVNxdWlkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw3YTEsMSwwLDAsMS0xLTFWMy4xOWExLDEsMCwwLDEsMiwwVjZBMSwxLDAsMCwxLDE4LDda''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYzMGExLDEsMCwwLDEsMiwwdjNBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTcuNDEsMThsMS43OC0xLjc3YTEsMSwwLDEsMC0xLjQyLTEuNDJMNiwxNi41OSw0LjIzLDE0LjgxYTEsMSwwLDEsMC0xLjQyLDEuNDJMNC41OSwxOCwyLjgxLDE5Ljc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUw2LDE5LjQxbDEuNzcs''@;'; put 'put ''MS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNNiwxMy43NmwuMzYtLjM2YTMsMywwLDAsMSwyLjExLS44OCwxMSwxMSwwLDAsMSwxOSwwLDMsMywwLDAsMSwyLjEyLjg4''@;'; put 'put ''bC4zNi4zNi4yLS4yYTEzLDEzLDAsMCwwLTI0LjQsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMCwyMi4yNGwtLjM2LjM2YTMsMywwLDAsMS0yLjEyLjg4LDExLDExLDAsMCwxLTE5LDAsMywzLDAsMCwxLTIuMTItLjg4TDYsMjIu''@;'; put 'put ''MjRsLS4yLjJhMTMsMTMsMCwwLDAsMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQxLDE4bDEuNzgtMS43N2ExLDEsMCwwLDAtMS40Mi0xLjQyTDMwLDE2LjU5bC0xLjc3LTEuNzhhMSwxLDAsMSwwLTEuNDIsMS40Mkwy''@;'; put 'put ''OC41OSwxOGwtMS43OCwxLjc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMCwxOS40MWwxLjc3LDEuNzhhMSwxLDAsMCwwLDEuNDIsMCwxLDEsMCwwLDAsMC0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTYiIC8+JyksTC5DbHJTaGFwZUhvc3RHcm91cD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuMDgsMzRoLTE0QTEuMDgsMS4wOCwwLDAsMSw2LDMzVjEyYTEuMDgsMS4wOCwwLDAsMSwxLjA4LTEuMDhoMTRBMS4wOCwxLjA4LDAsMCwxLDIyLjE2LDEyVjMzQTEuMDgsMS4wOCwwLDAs''@;'; put 'put ''MSwyMS4wOCwzNFpNOC4xNiwzMS44OEgyMFYxM0g4LjE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cmVjdCB4PSIxMC4wOCIgeT0iMTQuOTYiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNi4xLDI3LjgxaC0yVjloLTEyVjdoMTNhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTMwLjA4LDIzaC0yVjVoLTExVjNoMTJhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxyZWN0IHg9IjEzLjA4IiB5PSIyNy44OCIgd2lkdGg9IjIiIGhlaWdodD0iMi4xNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG5cbjxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4wOCwzMSBMMS4wOCwzMSBDMC41MTM0MjcxOTcsMzEuMDAxNTU2NCAwLjA0MTk2NjM3NjUsMzAuNTY1MDE4NiAwLDMwIEwwLDkgQzAsOC40MDM1MzI0NyAwLjQ4MzUzMjQ3LDcuOTIgMS4wOCw3LjkyIEwxNS4wOCw3LjkyIEMxNS42NzY0Njc1LDcuOTIg''@;'; put 'put ''MTYuMTYsOC40MDM1MzI0NyAxNi4xNiw5IEwxNi4xNiwzMCBDMTYuMTE4MDMzNiwzMC41NjUwMTg2IDE1LjY0NjU3MjgsMzEuMDAxNTU2NCAxNS4wOCwzMSBaIE00LjA4LDExLjk2IEw0LjA4LDEzLjk2IEwxMi4wOCwxMy45NiBMMTIuMDgsMTEuOTYgTDQuMDgsMTEuOTYgWiBNNy4wOCwyNC44''@;'; put 'put ''OCBMNy4wOCwyNy4wNCBMOS4wOCwyNy4wNCBMOS4wOCwyNC44OCBMNy4wOCwyNC44OCBaIiAvPlxuPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjEsMjQuODEgTDE4LjEsMjQuODEgTDE4LjEsNiBMNi4xLDYgTDYuMSw0IEwxOS4xLDQgQzE5LjY1''@;'; put 'put ''MjI4NDcsNCAyMC4xLDQuNDQ3NzE1MjUgMjAuMSw1IEwyMC4xLDI0LjgxIFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjQuMDgsMjAgTDIyLjA4LDIwIEwyMi4wOCwyIEwxMS4wOCwyIEwxMS4wOCwwIEwyMy4wOCwwIEMyMy42MzIyODQ3''@;'; put 'put ''LDAgMjQuMDgsMC40NDc3MTUyNSAyNC4wOCwxIEwyNC4wOCwyMCBaIiAvPicpLEwuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNi4wNiwzMGExLDEsMCwwLDEtMS0xVjhoLTJhMSwxLDAsMCwxLDAtMmg0VjI5QTEsMSwwLDAsMSw2LjA2LDMwWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMwLjA2LDI3aC0yNVY5aDI1YTMsMywwLDAsMSwzLDNWMjRBMywzLDAsMCwxLDMwLjA2LDI3Wm0tMjMtMmgyM2ExLDEsMCwwLDAsMS0xVjEyYTEsMSwwLDAsMC0xLTFoLTIzWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjIuMDYiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMTQiIHdpZHRoPSI2''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOS4wNiwyMmgtOFYyMGg3VjE0aDJ2N0ExLDEsMCwwLDEsMTkuMDYsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVOb2RlR3JvdXA9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDIxLjU4bC00Ljk0LTIuODNWMTMuMDlhMSwxLDAsMCwwLS41MS0uODdMMjIuNjQsOS4xYTEsMSwwLDAsMC0xLDBMMTYuMiwxMi4yMmExLDEsMCwwLDAtLjUxLjg3djUuNjZsLTQuOTQsMi44M2ExLDEs''@;'; put 'put ''MCwwLDAtLjUuODd2Ni4yNGExLDEsMCwwLDAsLjUuODZsNS40NSwzLjEyYTEsMSwwLDAsMCwxLDBsNC45NS0yLjgzLDQuOTUsMi44M2ExLDEsMCwwLDAsLjUuMTQsMSwxLDAsMCwwLC40OS0uMTRsNS40NS0zLjEyYTEsMSwwLDAsMCwuNS0uODZWMjIuNDVBMSwxLDAsMCwwLDMzLjUzLDIxLjU4''@;'; put 'put ''Wk0yMi4xNCwxMS4xMmw0LjQ1LDIuNTVWMTlsLTQuNDYsMi41Ni00LjQ0LTIuNlYxMy42N1pNMTYuNjksMzAuNjVsLTQuNDQtMi41NFYyM2w0LjY4LTIuNjgsNC40LDIuNTdWMjhaTTMyLDI4LjExbC00LjQ0LDIuNTRMMjIuOTMsMjhWMjIuOTNsNC40Ni0yLjU3TDMyLDIzWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcsMjcuNDNhMSwxLDAsMCwxLTEtMVYxOS45QTEsMSwwLDAsMSw2LjUsMTlsNC45NS0yLjgzVjEwLjU0YTEsMSwwLDAsMSwuNS0uODdsNS4yMS0zYTEsMSwwLDAsMSwxLjM3LjM3LDEsMSwwLDAsMS0uMzgs''@;'; put 'put ''MS4zN2wtNC43LDIuNjh2NS42NmExLDEsMCwwLDEtLjUxLjg3TDgsMjAuNDh2NS45NUExLDEsMCwwLDEsNywyNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zLDI1LjA1YTEsMSwwLDAsMS0xLTFWMTcuNTNhMSwxLDAsMCwx''@;'; put 'put ''LC41LS44Nmw1LTIuODRWOC4xN0ExLDEsMCwwLDEsOCw3LjMxbDUuMjUtM2ExLDEsMCwwLDEsMSwxLjc0TDkuNDUsOC43NXY1LjY2YTEsMSwwLDAsMS0uNTEuODdMNCwxOC4xMXY1Ljk0QTEsMSwwLDAsMSwzLDI1LjA1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMiLz4nKSxMLkNsclNoYXBlTm9kZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUsMzQuMjksMiwyOS4zOVYxOS41OGw4LjUtNC45LDguNSw0Ljl2OS44MVpNNCwyOC4yMywxMC41LDMyLDE3LDI4LjIzVjIwLjc0TDEwLjUsMTcsNCwyMC43NFoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yNS41LDM0LjI5LDE3LDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk0xOSwyOC4yMywyNS41LDMyLDMyLDI4LjIzVjIwLjc0TDI1LjUsMTcsMTksMjAuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTgsMjEuMzJsLTguNS00LjlWNi42MUwxOCwxLjcxbDguNSw0Ljl2OS44MVptLTYuNS02LjA2TDE4LDE5bDYuNS0zLjc1VjcuNzdMMTgsNCwxMS41LDcuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIvPicpLEwuQ2xyU2hhcGVOYW1lc3BhY2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDQuMThhMSwxLDAsMSwwLTEsMS43M2w2LDMuNDdWMjYuNjJsLTYsMy40N2ExLDEsMCwwLDAtLjM3LDEuMzYsMSwxLDAsMCwwLDEuMzcuMzdsNy00LjA1VjguMjNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNOS42OCwyOS45LDQsMjYuNjJWOS4zOEw5LjY4LDYuMWExLDEsMCwxLDAtMS0xLjczTDIsOC4yM1YyNy43N2w2LjY4LDMuODZhMSwxLDAsMCwwLDEuMzctLjM3QTEsMSwwLDAsMCw5LjY4LDI5LjlaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTAsMTJWMjRhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjEyYTIsMiwwLDAsMC0yLTJIMTJBMiwyLDAsMCwwLDEwLDEyWm03LDB2NUgxMlYxMlptLTUsN2g1djVIMTJabTcsNVYxOWg1djVa''@;'; put 'put ''bTUtN0gxOVYxMmg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxMLkNsclNoYXBlTm9kZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzAuNjYsNywyNC4zM1YxMS42N0wxOCw1LjM0bDExLDYuMzNWMjQuMzNaTTksMjMuMThsOSw1LjE3''@;'; put 'put ''LDktNS4xN1YxMi44MkwxOCw3LjY1LDksMTIuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLEwuQ2xyU2hhcGVQb2Q9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDMySDEwYTYsNiwwLDAsMS02LTZWMTBhNiw2LDAsMCwxLDYtNkgyNmE2''@;'; put 'put ''LDYsMCwwLDEsNiw2VjI2QTYsNiwwLDAsMSwyNiwzMlpNMTAsNmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjZhNCw0LDAsMCwwLDQtNFYxMGE0LDQsMCwwLDAtNC00WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTI2''@;'; put 'put ''LjU2LDE1SDE1LjQ0QTEuNDMsMS40MywwLDAsMCwxNCwxNi40NHY4LjEyQTEuNDMsMS40MywwLDAsMCwxNS40NCwyNkgyNi41NkExLjQzLDEuNDMsMCwwLDAsMjgsMjQuNTZWMTYuNDRBMS40MywxLjQzLDAsMCwwLDI2LjU2LDE1Wk0yNiwyNEgxNlYxN0gyNloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMi40LDE5SDEwVjEySDIwdjEuNGgydi0yQTEuNDMsMS40MywwLDAsMCwyMC41NiwxMEg5LjQ0QTEuNDMsMS40MywwLDAsMCw4LDExLjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDkuNDQsMjFoM1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+JyksTC5DbHJDb250cm9sTHVuPSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4czkuMS0uNDUsMTItMS44OHY1LjExYy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEsOCwxNi4zM1YxOGE0MC44Niw0''@;'; put 'put ''MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlY4aDBzMCwwLDAtLjA3YzAtMy4zNS04LjgtNC4yNS0xNC00LjI1UzQsNC41OCw0LDcuOTN2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3''@;'; put 'put ''LjUzWk0xOCw1LjY4YzcuMTUsMCwxMS41MywxLjQ0LDEyLDIuMjUtLjQ2LjgxLTQuODQsMi4yNS0xMiwyLjI1UzYuMzEsOC42OSw2LDhDNi4zMSw3LjE4LDEwLjcxLDUuNjgsMTgsNS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRsLTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQu''@;'; put 'put ''MTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAs''@;'; put 'put ''MCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjEx''@;'; put 'put ''LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0xOCwxNy41NEEzNC44MSwzNC44MSwwLDAsMSw4LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40NiwwLDkuMTMtLjQ1LDEyLTEu''@;'; put 'put ''OTF2My4yM2gyVjEzLjIyYTcuMzIsNy4zMiwwLDAsMS0yLC4yOHYxLjkxQzI5LjA5LDE2LjIzLDI1LDE3LjU0LDE4LDE3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik02LDI3LjUzVjEwLjNjMi45''@;'; put 'put ''LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhhNDcuNjYsNDcuNjYsMCwwLDAsNy4wOS0uNTIsNy40NSw3LjQ1LDAsMCwxLTEuNTEtMS44LDQ3LjQsNDcuNCwwLDAsMS01LjU4LjMyQzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQuNzItMi4zLDEyLTIuMywxLjY2LDAsMy4xNi4wOCw0''@;'; put 'put ''LjUxLjIxYTcuNTYsNy41NiwwLDAsMSwuMjktMmMtMS43LS4xNy0zLjM4LS4yNC00LjgtLjI0LTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTgsMjQu''@;'; put 'put ''NTlhMjUuNSwyNS41LDAsMCwwLDIuNzUuNTlsMS4yMS0xLjQxYTI0LjEzLDI0LjEzLDAsMCwxLTQtLjgzWiIvPjxwYXRoIGQ9Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRs''@;'; put 'put ''LTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgsMTIsMS44OGguNTlhMy41OSwzLjU5LDAsMCwxLC4zMi0ySDE4QzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQu''@;'; put 'put ''NzItMi4zLDEyLTIuMywxLjIyLDAsMi4zNS4wNSwzLjQxLjEybDEuMS0xLjkxYy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTgsMTYuMzNWMThhNDAuODYsNDAuODYsMCwwLDAsMTAsMS4xNmMzLjQ2LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTUuNEgzMGMtLjkxLjgyLTUsMi4xMy0x''@;'; put 'put ''MiwyLjEzQTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGEx''@;'; put 'put ''LjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEs''@;'; put 'put ''MSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzIuMDksMjFIMzJWMTcuMzJjLTEuOSwyLjkzLTEwLjQ2LDMuMy0xNCwzLjNBNDIuNDMsNDIuNDMsMCwwLDEsOCwxOS41NlYxNy44OEE0''@;'; put 'put ''MC41OSw0MC41OSwwLDAsMCwxOCwxOWM1LDAsMTMuMi0uODIsMTQtMy44MlYxMC43MmMtMi4yMSwzLjM2LTEwLjQ5LDMuNDYtMTQsMy40NkE0Mi4xMiw0Mi4xMiwwLDAsMSw4LDEzLjExVjExYTQwLjU5LDQwLjU5LDAsMCwwLDEwLDEuMTRjNSwwLDEzLjI4LS44MywxNC0zLjg4VjcuODNoMGMt''@;'; put 'put ''LjE5LTMuMjctOC44NC00LjE1LTE0LTQuMTVTNC4yMSw0LjU2LDQsNy44M0g0djE5LjdjMCwyLjE2LDMuNjQsMy4zLDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3YTMsMywwLDAsMCwzLTNWMjMuOTNBMywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRhMjUuNzksMjUuNzksMCwwLDAs''@;'; put 'put ''My40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAsMS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45MiwyM0gzMi4wOWExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuXG4g''@;'; put 'put ''IDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0''@;'; put 'put ''LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4yLS44MiwxNC0zLjgydi0yYTcuMzQsNy4zNCwwLDAsMS00LjEyLDAsMzkuNDcsMzkuNDcsMCwwLDEtOS44OCwxQTQyLjEyLDQyLjEyLDAsMCwxLDgsMTMuMTFWMTFhNDAu''@;'; put 'put ''NTksNDAuNTksMCwwLDAsMTAsMS4xNCw0Ny43Niw0Ny43NiwwLDAsMCw3LjA5LS41MkE3LjQ1LDcuNDUsMCwwLDEsMjIuOCwzLjkyYy0xLjctLjE3LTMuMzgtLjI0LTQuOC0uMjQtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4xNiwzLjY0LDMuMyw3LjYzLDMuODRsMi44NCwz''@;'; put 'put ''LC41OS42MmgxN2EzLDMsMCwwLDAsMy0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4yNCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwzMmExLDEsMCwwLDEtMSwxSDE1LjkyTDExLjQs''@;'; put 'put ''MjguMjMsMTUuOTIsMjNIMzIuMDlhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4w''@;'; put 'put ''OSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzQuODUsMCwxMi44LS43OSwxMy45MS0zLjYySDIyLjIzYTMuNjgsMy42OCwwLDAsMS0yLjczLTEuMjNIMThBNDIuMTIs''@;'; put 'put ''NDIuMTIsMCwwLDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0aC41OWEzLjYxLDMuNjEsMCwwLDEsLjQ2LTIuMjlsMy40Ni02Yy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMTQsMC0xMy43OS44OC0xNCw0LjE1SDR2MTkuN2MwLDIuMTYsMy42NCwzLjMsNy42Mywz''@;'; put 'put ''Ljg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEyNS43OSwyNS43OSwwLDAsMCwzLjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDguNzEsMjYuMjcsOCwyNi4wOFpNMzMuMDksMzJhMSwxLDAsMCwxLTEsMUgx''@;'; put 'put ''NS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEz''@;'; put 'put ''SDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxMLkNsclNoYXBlTWVkaWFD''@;'; put 'put ''aGFuZ2VyPSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wk02''@;'; put 'put ''LDMwVjZIMzBWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMjcuMjIsMTBIMjB2NGEuOC44LDAsMSwwLDEuNTksMFYxMS42aDUuNjNhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0''@;'; put 'put ''IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTciLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0yMCwxNGEuOC44LDAsMSwwLDEuNTksMFYxMS42SDI1QTcuNzQs''@;'; put 'put ''Ny43NCwwLDAsMSwyMy42NiwxMEgyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMwLDEzLjVoMFYzMEg2VjZIMjIuNVY2YTcuMzcsNy4zNywwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEx''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVk''@;'; put 'put ''Ii8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5c''@;'; put 'put ''biAgPHJlY3QgeD0iOC44MSIgeT0iMTQiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjYiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDZWNkgyMS4yN2wxLjE4LTJINkEyLDIs''@;'; put 'put ''MCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjZBMiwyLDAsMCwwLDMwLDRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWm0wLTZIMjBWMTBo''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cblxuICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNC0xLjE2VjE0SDIwVjEwaDMuNjZBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmE3LjM3LDcuMzcsMCwwLDEsLjI4LTJINkEyLDIsMCwwLDAsNCw2''@;'; put 'put ''VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgx''@;'; put 'put ''N1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik0yMi4yMywxNS40YTMuNjgsMy42OCwwLDAsMS0zLjE4LTUuNTFMMjIuNDUsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0xNywyOEg4LjgxVjI2SDE3Wm0wLTRIOC44MVYyMkgxN1ptMC00SDguODFWMThIMTdabTAtNEg4LjgxVjE0SDE3Wm0wLTRIOC44MVYxMEgx''@;'; put 'put ''N1pNMjIsMjRIMjBWMjJoMlptMC00SDIwVjE4aDJabTQsNEgyNFYyMmgyWm0wLTRIMjRWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLEwuQ2xy''@;'; put 'put ''U2hhcGVUYXBlRHJpdmU9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCwyOFY4SDMyVjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEzLjMzLDEzLjM1YTQuNTIsNC41MiwwLDEsMCw0LjUzLDQuNTJBNC41Myw0LjUzLDAsMCwwLDEzLjMzLDEzLjM1Wm0wLDcuNDRhMi45MiwyLjkyLDAsMSwxLDIuOTMtMi45MkEyLjkyLDIuOTIsMCwwLDEsMTMuMzMsMjAuNzlaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuNjIsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTIsNC41MkE0LjUzLDQuNTMsMCwwLDAsMjMuNjIsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45Mi0yLjkyQTIuOTIsMi45MiwwLDAs''@;'; put 'put ''MSwyMy42MiwyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik02LDExVjIzLjU1SDhWMTJIMjkuMzRWMTBIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG5c''@;'; put 'put ''biAgPHBhdGggZD0iTTguODEsMTcuODdhNC41Myw0LjUzLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsOC44MSwxNy44N1ptNy40NSwwQTIuOTMsMi45MywwLDEsMSwxMy4zMywxNSwyLjkzLDIuOTMsMCwwLDEsMTYuMjYsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE5LjEsMTcuODdhNC41Miw0LjUyLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsMTkuMSwxNy44N1ptNy40NCwwQTIuOTIsMi45MiwwLDEsMSwyMy42MiwxNSwyLjkyLDIuOTIsMCwwLDEsMjYu''@;'; put 'put ''NTQsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLDEzLjIyVjI4SDRWOEgyMi43OGE3LjM3LDcuMzcsMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYxMi4zNEE3LjY1LDcuNjUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyNS41MWE3LjY2LDcuNjYsMCwwLDEtMS44NS0y''@;'; put 'put ''SDdBMSwxLDAsMCwwLDYsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQuNTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4LjgxLDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAsMSwxNi4yNiwxNy44N1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik03LDEwYTEsMSwwLDAsMC0xLDFWMjMuNTVIOFYxMkgxOC41N0EzLjcsMy43LDAsMCwxLDE5LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJWMjhINFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTIyLjA5LDE1LjM5YTMuNjUsMy42NSwwLDAsMS0xLjgtLjU1LDQuNTEsNC41MSwwLDEsMCw3LjExLjU2SDI1LjE3YTIuOTIsMi45MiwwLDEsMS0zLjA4LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0z''@;'; put 'put ''MCwyNEg2VjEySDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwxNloiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIzLjc5LDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDIzLjc5LDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG5c''@;'; put 'put ''biAgPHBhdGggZD0iTTEyLjIxLDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDEyLjIxLDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTIuMjEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJN''@;'; put 'put ''MjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxMy41VjI0SDZW''@;'; put 'put ''MTJIMjUuNTFhNy40OSw3LjQ5LDAsMCwxLTMtNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik03LjIsMThhNSw1LDAsMSwwLDUtNUE1LDUsMCwwLDAsNy4yLDE4Wm03LDBhMiwy''@;'; put 'put ''LDAsMSwxLTItMkEyLDIsMCwwLDEsMTQuMjIsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0xOC43OCwxOGE1LDUsMCwxLDAsOS4yNy0yLjZIMjIuMjNhMy43MSwzLjcxLDAsMCwxLTIuMTctLjcxQTUs''@;'; put 'put ''NSwwLDAsMCwxOC43OCwxOFptNS0yYTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMFYyNEg2VjEySDE4LjU3YTMuNjUsMy42''@;'; put 'put ''NSwwLDAsMSwuNDgtMi4xMUwyMS4yOSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0''@;'; put 'put ''bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIvPlxuICAnKSxMLkNsclNoYXBlQW5pbWF0aW9uPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC4xNiwzMS43MWE0LjQsNC40LDAsMCwxLTQuNjQtMUE0LjM0LDQuMzQsMCwwLDEsNC4yMywyNy42YTQuNDEsNC40MSwwLDAsMSwuMTgtMS4yLDExLjYxLDExLjYxLDAs''@;'; put 'put ''MCwxLTEtMi41Niw2LjQsNi40LDAsMCwwLDkuMzMsOC42M0ExMS41NSwxMS41NSwwLDAsMSwxMC4xNiwzMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MSwyNy42OGE3LjYxLDcuNjEsMCwwLDEtOS4wOC0xLjI2LDcu''@;'; put 'put ''NTgsNy41OCwwLDAsMS0xLjI3LTkuMDYsMTQuMjYsMTQuMjYsMCwwLDEtLjM3LTIuODUsOS41OCw5LjU4LDAsMCwwLC4yMiwxMy4zMyw5LjYzLDkuNjMsMCwwLDAsMTMuMzUuMjJBMTQuNDYsMTQuNDYsMCwwLDEsMTguNDEsMjcuNjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNjYsMjYuMjFhMTIuMSwxMi4xLDAsMSwxLDguNTctMy41NGgwQTEyLjExLDEyLjExLDAsMCwxLDIxLjY2LDI2LjIxWk0yMS42Niw0QTEwLjExLDEwLjExLDAsMCwwLDExLjU0LDE0LjExYTEwLDEwLDAsMCwwLDMsNy4xNCwxMC4xMiwxMC4x''@;'; put 'put ''MiwwLDAsMCwxNC4zMSwwQTEwLjExLDEwLjExLDAsMCwwLDIxLjY2LDRabTcuODYsMThoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIFxuICA8cGF0aCBkPSJNMy41LDIzLjc3YTYuNDEsNi40MSwwLDAsMCw5LjMzLDguNjdBMTEuNjUsMTEuNjUs''@;'; put 'put ''MCwwLDEsMy41LDIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy42OCwxNC41M2E5LjYsOS42LDAsMCwwLDEzLjQsMTMuN0ExNC4xMSwxNC4xMSwwLDAsMSw3LjY4LDE0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNzgsMkExMi4xMiwxMi4xMiwwLDEsMSw5LjY2LDE0LjE1LDEyLjEyLDEyLjEyLDAsMCwxLDIxLjc4LDIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgJyksTC5DbHJTaGFwZUNpQ2Q9KDAsRS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTIzLjUzLDE5LjgxYTcuNDUsNy40NSwwLDAsMS0xLjY1LS4xOCwxMC40OCwxMC40OCwwLDAsMSwuNzIsMi4xM2MuMywwLC42MSwwLC45MywwYTkuNTIsOS41MiwwLDAsMCwzLS40OWwtLjkzLTEuODFBNy42Nyw3LjY3LDAsMCwxLDIzLjUzLDE5LjgxWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjM2LDE3Ljg3LDE4LDE3LjQ5YTcuNCw3LjQsMCwwLDEtMi4yLTUuOTIsNy4zMSw3LjMxLDAsMCwxLDEuNTQtNEwxNy4yNiw5QTEsMSwwLDAsMCwxOC4xNywxMGguMDlhMSwxLDAsMCwwLDEtLjkx''@;'; put 'put ''TDE5LjYsNWExLDEsMCwwLDAtLjI5LS43OUExLDEsMCwwLDAsMTguNTIsNGwtNC4wOS4zNWExLDEsMCwwLDAsLjE3LDJsMS4yOS0uMTFhOS40NSw5LjQ1LDAsMCwwLTIuMDUsNS4zMiw5LjI4LDkuMjgsMCwwLDAsMi42Nyw3LjI2bC4zMS4zN2E3LjMzLDcuMzMsMCwwLDEsMi4wNiw0LjkxLDcu''@;'; put 'put ''MzksNy4zOSwwLDAsMS0uMjYsMi40N2wxLjguOTFhOC43Niw4Ljc2LDAsMCwwLC40NS0zLjUxQTkuMjgsOS4yOCwwLDAsMCwxOC4zNiwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMi40LDE3LjkxLDMxLjE5LDE4QTku''@;'; put 'put ''NjUsOS42NSwwLDAsMCwyMy41MywyLjQ1YTkuMzMsOS4zMywwLDAsMC0zLC40OWwuOTEsMS44YTcuNjcsNy42NywwLDAsMSw5Ljc2LDcuMzksNy41OCw3LjU4LDAsMCwxLTEuNjUsNC43MmwuMS0xLjU0YTEsMSwwLDEsMC0yLS4xM2wtLjI4LDQuMDhhMSwxLDAsMCwwLC4zMS43OC45NC45NCww''@;'; put 'put ''LDAsMCwuNjkuMjhoLjFsNC4wOC0uNDJhMSwxLDAsMCwwLC45LTEuMUExLDEsMCwwLDAsMzIuNCwxNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik00LjA3LDIwLjQ0aC4wOGw0LjA5LS4zNWExLDEsMCwxLDAtLjE3LTJsLTEu''@;'; put 'put ''MzkuMTJhNy42Myw3LjYzLDAsMCwxLDQuNTItMS40OSw3LjksNy45LDAsMCwxLDEuNjMuMTgsMTAuMjMsMTAuMjMsMCwwLDEtLjcxLTIuMTNjLS4zLDAtLjYxLDAtLjkyLDBhOS42Niw5LjY2LDAsMCwwLTUuOSwybC4xMi0xLjMxYTEsMSwwLDAsMC0uOTItMS4wOCwxLDEsMCwwLDAtMS4wOC45''@;'; put 'put ''MWwtLjM1LDQuMDhhMSwxLDAsMCwwLDEsMS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwyOC4yM2wtNC4wOS4yN2ExLDEsMCwwLDAsLjEzLDJMMTYsMzAuMzlhNy43MSw3LjcxLDAsMCwxLTEyLjU0LTYsNy42LDcu''@;'; put 'put ''NiwwLDAsMSwuMjktMkwyLDIxLjQ2YTkuNTksOS41OSwwLDAsMC0uNDcsMi45NUE5LjcsOS43LDAsMCwwLDE3LjE5LDMybC0uMTIsMS4xOGExLDEsMCwwLDAsLjg5LDEuMWguMTFhMSwxLDAsMCwwLDEtLjlsLjQyLTQuMDZhMSwxLDAsMCwwLTEuMDYtMS4xWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxMLkNsclNoYXBlRmlsZVNoYXJlMj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEg3LjgzQTEuODksMS44OSwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OSwxLjg5LDAsMCwwLDcuODMsMzJIMjguMTdBMS44NywxLjg3LDAsMCwwLDMw''@;'; put 'put ''LDMwLjA5VjlaTTI0LDUuNzgsMjguMiwxMEgyNFpNOCwzMFY2SDIydjZoNlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMiwyMS44MWEyLjExLDIuMTEsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2di0uNDRsNS42Ni0yLjY1''@;'; put 'put ''YTIuMDgsMi4wOCwwLDEsMCwuMDYtMi45NGgwYTIuMTQsMi4xNCwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNBMi4wOSwyLjA5LDAsMSwwLDIyLDIxLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0yNSw0LjA2SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNlYzMC4xNWExLjg5LDEuODksMCwwLDAsMS44MywxLjkxSDI4LjE3QTEuODcsMS44NywwLDAsMCwzMCwzMC4xNVY5Wk0yMiwyNmEyLjA5LDIuMDksMCwwLDEtMi4xLTIu''@;'; put 'put ''MDh2LS4zTDE0LjI3LDIxbC0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMTQsMi4xNCwwLDAsMSwuNjQtMS40OGgwYTIuMDgsMi4wOCwwLDEsMS0uMDYsMi45NGwtNS42NiwyLjY1di40NGw1LjcyLDIuNjZBMi4xMSwyLjExLDAsMCwxLDIyLDIxLjgx''@;'; put 'put ''bDAsMEEyLjA5LDIuMDksMCwwLDEsMjIsMjZabTItMTZWNS44NGw0LjIsNC4yMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLlRlY2hub2xvZ3lTaGFwZXM9eyJydWxlci1wZW5jaWwiOkwuQ2xyU2hhcGVSdWxlclBlbmNpbCwicGhvbmUtaGFuZHNldCI6''@;'; put 'put ''TC5DbHJTaGFwZVBob25lSGFuZHNldCwibm8td2lmaSI6TC5DbHJTaGFwZU5vV2lmaSxpbnN0YWxsOkwuQ2xyU2hhcGVJbnN0YWxsLHVuaW5zdGFsbDpMLkNsclNoYXBlVW5pbnN0YWxsLGxheWVyczpMLkNsclNoYXBlTGF5ZXJzLGJsb2NrOkwuQ2xyU2hhcGVCbG9jaywiYmxvY2tzLWdyb3Vw''@;'; put 'put ''IjpMLkNsclNoYXBlQmxvY2tzR3JvdXAsYnVuZGxlOkwuQ2xyU2hhcGVCdW5kbGUsd2lmaTpMLkNsclNoYXBlV2lmaSwicmFjay1zZXJ2ZXIiOkwuQ2xyU2hhcGVSYWNrU2VydmVyLCJoYXJkLWRpc2siOkwuQ2xyU2hhcGVIYXJkRGlzaywiYmFja3VwLXJlc3RvcmUiOkwuQ2xyU2hhcGVCYWNr''@;'; put 'put ''dXBSZXN0b3JlLGJhY2t1cDpMLkNsclNoYXBlQmFja3VwLGRldmljZXM6TC5DbHJTaGFwZURldmljZXMsa2V5Ym9hcmQ6TC5DbHJTaGFwZUtleWJvYXJkLG1vdXNlOkwuQ2xyU2hhcGVNb3VzZSxkYXNoYm9hcmQ6TC5DbHJTaGFwZURhc2hib2FyZCxob3N0OkwuQ2xyU2hhcGVIb3N0LHN0b3Jh''@;'; put 'put ''Z2U6TC5DbHJTaGFwZVN0b3JhZ2UsY2x1c3RlcjpMLkNsclNoYXBlQ2x1c3RlcixhcHBsaWNhdGlvbnM6TC5DbHJTaGFwZUFwcGxpY2F0aW9ucyxidWlsZGluZzpMLkNsclNoYXBlQnVpbGRpbmcsY3B1OkwuQ2xyU2hhcGVDUFUsbWVtb3J5OkwuQ2xyU2hhcGVNZW1vcnksImRhdGEtY2x1c3Rl''@;'; put 'put ''ciI6TC5DbHJTaGFwZURhdGFDbHVzdGVyLCJyZXNvdXJjZS1wb29sIjpMLkNsclNoYXBlUmVzb3VyY2VQb29sLHNoaWVsZDpMLkNsclNoYXBlU2hpZWxkLCJzaGllbGQtY2hlY2siOkwuQ2xyU2hhcGVTaGllbGRDaGVjaywic2hpZWxkLXgiOkwuQ2xyU2hhcGVTaGllbGRYLGltcG9ydDpMLkNs''@;'; put 'put ''clNoYXBlSW1wb3J0LGV4cG9ydDpMLkNsclNoYXBlRXhwb3J0LCJ1cGxvYWQtY2xvdWQiOkwuQ2xyU2hhcGVVcGxvYWRDbG91ZCwiZG93bmxvYWQtY2xvdWQiOkwuQ2xyU2hhcGVEb3dubG9hZENsb3VkLHBsdWdpbjpMLkNsclNoYXBlUGx1Z2luLGZsb3BweTpMLkNsclNoYXBlRmxvcHB5LGNv''@;'; put 'put ''bXB1dGVyOkwuQ2xyU2hhcGVDb21wdXRlcixkaXNwbGF5OkwuQ2xyU2hhcGVEaXNwbGF5LHRlcm1pbmFsOkwuQ2xyU2hhcGVUZXJtaW5hbCxjb2RlOkwuQ2xyU2hhcGVDb2RlLGFwcGxpY2F0aW9uOkwuQ2xyU2hhcGVBcHBsaWNhdGlvbixiYXR0ZXJ5OkwuQ2xyU2hhcGVCYXR0ZXJ5LG1vYmls''@;'; put 'put ''ZTpMLkNsclNoYXBlTW9iaWxlLHRhYmxldDpMLkNsclNoYXBlVGFibGV0LCJuZXR3b3JrLWdsb2JlIjpMLkNsclNoYXBlTmV0d29ya0dsb2JlLCJuZXR3b3JrLXNldHRpbmdzIjpMLkNsclNoYXBlTmV0d29ya1NldHRpbmdzLCJuZXR3b3JrLXN3aXRjaCI6TC5DbHJTaGFwZU5ldHdvcmtTd2l0''@;'; put 'put ''Y2gscm91dGVyOkwuQ2xyU2hhcGVSb3V0ZXIsdm06TC5DbHJTaGFwZVZNLCJ2bXctYXBwIjpMLkNsclNoYXBlVk1XQXBwLGNlcnRpZmljYXRlOkwuQ2xyU2hhcGVDZXJ0aWZpY2F0ZSxhcmNoaXZlOkwuQ2xyU2hhcGVBcmNoaXZlLHVuYXJjaGl2ZTpMLkNsclNoYXBlVW5hcmNoaXZlLGNvbm5l''@;'; put 'put ''Y3Q6TC5DbHJTaGFwZUNvbm5lY3QsZGlzY29ubmVjdDpMLkNsclNoYXBlRGlzY29ubmVjdCxsaW5rOkwuQ2xyU2hhcGVMaW5rLHVubGluazpMLkNsclNoYXBlVW5saW5rLCJjbG91ZC1uZXR3b3JrIjpMLkNsclNoYXBlQ2xvdWROZXR3b3JrLCJjbG91ZC1zY2FsZSI6TC5DbHJTaGFwZUNsb3Vk''@;'; put 'put ''U2NhbGUsImNsb3VkLXRyYWZmaWMiOkwuQ2xyU2hhcGVDbG91ZFRyYWZmaWMsImNvbnRyb2wtbHVuIjpMLkNsckNvbnRyb2xMdW4sZGVwbG95OkwuQ2xyU2hhcGVEZXBsb3ksaGVsaXg6TC5DbHJTaGFwZUhlbGl4LGZsYXNrOkwuQ2xyU2hhcGVGbGFzayxhZG1pbmlzdHJhdG9yOkwuQ2xyU2hh''@;'; put 'put ''cGVBZG1pbmlzdHJhdG9yLCJoYXJkLWRyaXZlIjpMLkNsclNoYXBlSGFyZERyaXZlLCJoYXJkLWRyaXZlLWRpc2tzIjpMLkNsclNoYXBlSGFyZERyaXZlRGlza3MsbnZtZTpMLkNsclNoYXBlTlZNZSxzc2Q6TC5DbHJTaGFwZVNTRCxibHVldG9vdGg6TC5DbHJTaGFwZUJsdWV0b290aCwiYmx1''@;'; put 'put ''ZXRvb3RoLW9mZiI6TC5DbHJTaGFwZUJsdWV0b290aE9mZiwicHJvY2Vzcy1vbi12bSI6TC5DbHJTaGFwZVByb2Nlc3NPblZNLCJhc3NpZ24tdXNlciI6TC5DbHJTaGFwZUFzc2lnblVzZXIsYXRvbTpMLkNsclNoYXBlQXRvbSwiYmFyLWNvZGUiOkwuQ2xyU2hhcGVCYXJDb2RlLCJjZC1kdmQi''@;'; put 'put ''OkwuQ2xyU2hhcGVDZER2ZCxjb250YWluZXI6TC5DbHJTaGFwZUNvbnRhaW5lciwiY29udGFpbmVyLXZvbHVtZSI6TC5DbHJTaGFwZUNvbnRhaW5lclZvbHVtZSwiZmlsZS1zaGFyZSI6TC5DbHJTaGFwZUZpbGVTaGFyZSwicXItY29kZSI6TC5DbHJTaGFwZVFyQ29kZSx1c2I6TC5DbHJTaGFw''@;'; put 'put ''ZVVzYixyYWRhcjpMLkNsclNoYXBlUmFkYXIsY2FwYWNpdG9yOkwuQ2xyU2hhcGVDYXBhY2l0b3Isc3F1aWQ6TC5DbHJTaGFwZVNxdWlkLGluZHVjdG9yOkwuQ2xyU2hhcGVJbmR1Y3RvcixyZXNpc3RvcjpMLkNsclNoYXBlUmVzaXN0b3IsImhvc3QtZ3JvdXAiOkwuQ2xyU2hhcGVIb3N0R3Jv''@;'; put 'put ''dXAsInN0b3JhZ2UtYWRhcHRlciI6TC5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyLCJub2RlLWdyb3VwIjpMLkNsclNoYXBlTm9kZUdyb3VwLG5vZGVzOkwuQ2xyU2hhcGVOb2RlcyxuYW1lc3BhY2U6TC5DbHJTaGFwZU5hbWVzcGFjZSxub2RlOkwuQ2xyU2hhcGVOb2RlLHBvZDpMLkNsclNoYXBl''@;'; put 'put ''UG9kLCJtZWRpYS1jaGFuZ2VyIjpMLkNsclNoYXBlTWVkaWFDaGFuZ2VyLCJ0YXBlLWRyaXZlIjpMLkNsclNoYXBlVGFwZURyaXZlLGFuaW1hdGlvbjpMLkNsclNoYXBlQW5pbWF0aW9uLCJjaS1jZCI6TC5DbHJTaGFwZUNpQ2QsImZpbGUtc2hhcmUtMiI6TC5DbHJTaGFwZUZpbGVTaGFyZTJ9''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsInNlcnZlciIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlRlY2hub2xvZ3lTaGFwZXMuaG9zdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsImNvbW1hbmQiLCgwLEIuZGVzY3JpcHRv''@;'; put 'put ''ckNvbmZpZykoTC5UZWNobm9sb2d5U2hhcGVzLnRlcm1pbmFsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuVGVjaG5vbG9neVNoYXBlcywibW9iaWxlLXBob25lIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlcy5tb2JpbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTC5UZWNobm9sb2d5U2hhcGVzLCJsaWNlbnNlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlcy5jZXJ0aWZpY2F0ZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsImRpc2Nvbm5lY3RlZCIsKDAsQi5kZXNjcmlwdG9yQ29uZmln''@;'; put 'put ''KShMLlRlY2hub2xvZ3lTaGFwZXNbIm5vLXdpZmkiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsInJlY2VpdmVyIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlc1sicGhvbmUtaGFuZHNldCJdKSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KEwuVGVjaG5vbG9neVNoYXBlcywiZGVzaWduIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlc1sicnVsZXItcGVuY2lsIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5UZWNobm9sb2d5U2hhcGVzLCJkbmEiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5U''@;'; put 'put ''ZWNobm9sb2d5U2hhcGVzLmhlbGl4KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuVGVjaG5vbG9neVNoYXBlcywiZm9sZGVyLXNoYXJlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlc1siZmlsZS1zaGFyZSJdKSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cm''@;'; put 'put ''JndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKEwuVGVjaG5vbG9neVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLlRleHRFZGl0U2hhcGVzPUwuQ2xyU2hhcGVTdXBlcnNjcmlwdD1MLkNsclNoYXBlU3Vic2NyaXB0PUwuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoPUwuQ2xyU2hhcGVJbmRlbnQ9TC5DbHJTaGFwZU91dGRl''@;'; put 'put ''bnQ9TC5DbHJTaGFwZUhpZ2hsaWdodGVyPUwuQ2xyU2hhcGVUZXh0Q29sb3I9TC5DbHJTaGFwZUxhbmd1YWdlPUwuQ2xyU2hhcGVBbGlnblRvcD1MLkNsclNoYXBlQWxpZ25NaWRkbGU9TC5DbHJTaGFwZUFsaWduQm90dG9tPUwuQ2xyU2hhcGVVbmRlcmxpbmU9TC5DbHJTaGFwZVRleHQ9TC5D''@;'; put 'put ''bHJTaGFwZUFsaWduUmlnaHRUZXh0PUwuQ2xyU2hhcGVCbG9ja1F1b3RlPUwuQ2xyU2hhcGVQYWludFJvbGxlcj1MLkNsclNoYXBlTnVtYmVyTGlzdD1MLkNsclNoYXBlQWxpZ25MZWZ0VGV4dD1MLkNsclNoYXBlSnVzdGlmeVRleHQ9TC5DbHJTaGFwZUl0YWxpYz1MLkNsclNoYXBlQWxpZ25S''@;'; put 'put ''aWdodD1MLkNsclNoYXBlQWxpZ25MZWZ0PUwuQ2xyU2hhcGVBbGlnbkNlbnRlcj1MLkNsclNoYXBlRm9udFNpemU9TC5DbHJTaGFwZUNoZWNrYm94TGlzdD1MLkNsclNoYXBlQ2VudGVyVGV4dD1MLkNsclNoYXBlQnVsbGV0TGlzdD1MLkNsclNoYXBlQm9sZD12b2lkIDA7dmFyIEI9Z2UoIi4v''@;'; put 'put ''cHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZUJvbGQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIyLjQzLDE3LjU0YTQuNjcsNC42NywwLDAsMCwyLjgtNC4zN3YtLjA2YTQuNDMsNC40MywwLDAsMC0xLjMxLTMuMjUsNy4wOSw3''@;'; put 'put ''LjA5LDAsMCwwLTUuMTMtMS43M2gtN0ExLjcxLDEuNzEsMCwwLDAsMTAsOS44NlYyNmExLjcyLDEuNzIsMCwwLDAsMS43NCwxLjc0aDcuMzNjNC4zNywwLDcuMjUtMS44OCw3LjI1LTUuMzhWMjIuM0MyNi4zMiwxOS42NCwyNC43MywxOC4zMiwyMi40MywxNy41NFpNMTMuNjgsMTEuNGg0LjU0''@;'; put 'put ''YzIsMCwzLjE1Ljg5LDMuMTUsMi4zM3YuMDZjMCwxLjY4LTEuMzYsMi40OS0zLjM4LDIuNDlIMTMuNjhaTTIyLjM3LDIyYzAsMS41OS0xLjMxLDIuNDMtMy40NiwyLjQzSDEzLjY4VjE5LjYyaDVjMi40OSwwLDMuNjkuODgsMy42OSwyLjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUJ1bGxldExpc3Q9KDAsQi5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iNS4yMSIgY3k9IjkuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjUuMjEiIGN5PSIxNy4x''@;'; put 'put ''NyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PGNpcmNsZSBjeD0iNS4yMSIgY3k9IjI1LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNDIsOWExLDEsMCwwLDAtMS0x''@;'; put 'put ''SDEwdjJIMzEuNDJBMSwxLDAsMCwwLDMyLjQyLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzEuNDIsMTZIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMxLjQyLDI0SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLEwuQ2xyU2hhcGVDZW50ZXJUZXh0PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC44OCw4SDUuMTJhMS4xLDEu''@;'; put 'put ''MSwwLDAsMCwwLDIuMkgzMC44OGExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI1LjUsMTYuMmExLjEsMS4xLDAsMSwwLDAtMi4yaC0xNWExLjEsMS4xLDAsMSwwLDAsMi4yWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLjI1LDIwSDUuNzVhMS4xLDEuMSwwLDAsMCwwLDIuMmgyNC41YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQuODgs''@;'; put 'put ''MjZIMTEuMTJhMS4xLDEuMSwwLDEsMCwwLDIuMkgyNC44OGExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZUNoZWNrYm94TGlzdD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDMsMTZI''@;'; put 'put ''MTB2MkgzMS40M2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLjQzLDI0SDEwdjJIMzEuNDNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0xNS40NSwxMGgxNmExLDEsMCwwLDAsMC0yaC0xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNy41LDMuNDJhMS4wOSwxLjA5LDAsMCwwLTEuNTUsMEw3Ljg5LDExLjQ4LDQuNTEsNy44NEExLjEsMS4xLDAsMSwwLDIu''@;'; put 'put ''OSw5LjM0bDQuOTQsNS4zTDE3LjUsNUExLjEsMS4xLDAsMCwwLDE3LjUsMy40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLEwuQ2xyU2hhcGVGb250U2l6ZT0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEsOS4wOEExLjEzLDEuMTMsMCww''@;'; put 'put ''LDAsMTkuODYsOEg0LjYyYTEuMSwxLjEsMCwxLDAsMCwyLjE5SDExVjI3YTEuMDksMS4wOSwwLDAsMCwyLjE3LDBWMTAuMTloNi42OUExLjE0LDEuMTQsMCwwLDAsMjEsOS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC42Nywx''@;'; put 'put ''NUgyMS4xNWExLjEsMS4xLDAsMSwwLDAsMi4xOUgyNVYyNi41YTEuMDksMS4wOSwwLDAsMCwyLjE3LDBWMTcuMjNoMy41NGExLjEsMS4xLDAsMSwwLDAtMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVBbGlnbkNlbnRlcj0o''@;'; put 'put ''MCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMjBIMTlWMTZoNmExLDEsMCwwLDAsMS0xVjdhMSwxLDAsMCwwLTEtMUgxOVYyYTEsMSwwLDAsMC0yLDBWNkgxMWExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMWg2djRINWExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMUgxN3Y0''@;'; put 'put ''YTEsMSwwLDAsMCwyLDBWMzBIMzFhMSwxLDAsMCwwLDEtMVYyMUExLDEsMCwwLDAsMzEsMjBaTTEyLDE0VjhIMjR2NlpNMzAsMjhINlYyMkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVBbGlnbkxlZnQ9KDAsQi5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTUsMUExLDEsMCwwLDAsNCwyVjM0YTEsMSwwLDAsMCwyLDBWMkExLDEsMCwwLDAsNSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLDIwSDhWMzBIMzFhMSwxLDAsMCwwLDEtMVYyMUExLDEsMCwwLDAs''@;'; put 'put ''MzEsMjBabS0xLDhIMTBWMjJIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQsMTVWN2ExLDEsMCwwLDAtMS0xSDhWMTZIMjNBMSwxLDAsMCwwLDI0LDE1Wm0tMi0xSDEwVjhIMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlQWxpZ25SaWdodD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMWExLDEsMCwwLDAtMSwxVjM0YTEsMSwwLDAsMCwyLDBWMkExLDEsMCwwLDAsMzEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPjxwYXRoIGQ9Ik00LDIxdjhhMSwxLDAsMCwwLDEsMUgyOFYyMEg1QTEsMSwwLDAsMCw0LDIxWm0yLDFIMjZ2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTEyLDd2OGExLDEsMCwwLDAsMSwxSDI4VjZIMTNBMSwxLDAs''@;'; put 'put ''MCwwLDEyLDdabTIsMUgyNnY2SDE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZUl0YWxpYz0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuNDIsOEgxNy4xYTEuMSwxLjEsMCwxLDAsMCwyLjE5aDIuMTNMMTMuMTEsMjUu''@;'; put 'put ''NTVIMTAuNDdhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMTcuOGExLjEsMS4xLDAsMSwwLDAtMi4xOUgxNS41MWw2LjEzLTE1LjM2aDIuNzhhMS4xLDEuMSwwLDEsMCwwLTIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlSnVzdGlm''@;'; put 'put ''eVRleHQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsMTAuMkgzMS43NWExLjEsMS4xLDAsMSwwLDAtMi4ySDZhMS4xLDEuMSwwLDEsMCwwLDIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMS43NSwxNEg2YTEuMSwxLjEs''@;'; put 'put ''MCwxLDAsMCwyLjJIMzEuNzVhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMS4xMiwyMEg2LjYyYTEuMSwxLjEsMCwxLDAsMCwyLjJoMjQuNWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjQ1LDI1LjgzSDYuNmExLjEsMS4xLDAsMCwwLDAsMi4ySDMwLjQ1YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxMLkNsclNo''@;'; put 'put ''YXBlQWxpZ25MZWZ0VGV4dD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAuMjUsMjZINnYyLjJIMjAuMjVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwyMEg2djIuMkgyOEExLjEsMS4x''@;'; put 'put ''LDAsMCwwLDI4LDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjYsMTUuMUExLjEsMS4xLDAsMCwwLDIxLjUsMTRINnYyLjJIMjEuNUExLjEsMS4xLDAsMCwwLDIyLjYsMTUuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yOS4yNSw4SDZ2Mi4ySDI5LjI1YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlTnVtYmVyTGlzdD0oMCxCLmNsckljb25TVkcpKCc8cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjUuNDYgNy40MSA1LjQ2IDExLjU2IDYuNjUgMTEuNTYgNi42NSA2LjA1IDUuNyA2LjA1IDQuMDUgNy4xNiA0LjUyIDggNS40NiA3LjQxIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNS41NywxNC44MmEuNzYuNzYsMCww''@;'; put 'put ''LDEsLjgzLjczYzAsLjM4LS4yMS43NC0uODcsMS4yN2wtMiwxLjU3djFINy42N1YxOC4yOEg1LjMzbDEtLjc3YzEtLjcsMS4yOC0xLjI3LDEuMjgtMmExLjgzLDEuODMsMCwwLDAtMi0xLjc2LDIuNjMsMi42MywwLDAsMC0yLjE0LDEuMDhsLjc2LjczQTEuNzUsMS43NSwwLDAsMSw1LjU3LDE0''@;'; put 'put ''LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTYuNTYsMjQuNjRhMS4zMiwxLjMyLDAsMCwwLDEtMS4yN2MwLS44Ny0uNzgtMS41MS0yLTEuNTFhMi42MSwyLjYxLDAsMCwwLTIuMSwxbC42OS43MmExLjc4LDEuNzgsMCwwLDEsMS4z''@;'; put 'put ''LS42NGMuNTQsMCwuOTIuMjYuOTIuNjZzLS4zNi42Mi0xLC42Mkg0Ljc5djFoLjY0Yy43NCwwLDEuMDcuMjEsMS4wNy42M3MtLjM1LjY4LTEsLjY4YTIsMiwwLDAsMS0xLjQ2LS42NWwtLjcuNzhhMi44NSwyLjg1LDAsMCwwLDIuMjEuOTNjMS4yOSwwLDIuMTMtLjY5LDIuMTMtMS42NEExLjMz''@;'; put 'put ''LDEuMzMsMCwwLDAsNi41NiwyNC42NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi40Miw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzMS40MkExLDEsMCwwLDAsMzIuNDIsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMS40MiwxNkgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDIsMjRIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZVBhaW50Um9sbGVyPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwxMFY0YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw0djZhMiwyLDAsMCwwLDIsMkgyOUEyLDIsMCwwLDAsMzEsMTBaTTYsNEgyOXY2''@;'; put 'put ''SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsNkgzMnY2LjI5TDE4LjcsMTYuNTRhMSwxLDAsMCwwLS43LDFWMTlIMTZWMzNhMiwyLDAsMCwwLDIsMmgyYTIsMiwwLDAsMCwyLTJWMTlIMjB2LS43M0wzMy4zLDE0YTEsMSwwLDAs''@;'; put 'put ''MCwuNy0xVjdBMSwxLDAsMCwwLDMzLDZaTTIwLDMzSDE4VjIxaDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cmVjdCB4PSI0IiB5PSIyIiB3aWR0aD0iMjciIGhlaWdodD0iMTAiIHJ4PSIxIiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsNkgzMnY2LjI0TDE4LjcxLDE2LjQ1YTEsMSwwLDAsMC0uNzEsMVYxOUgxNlYzNGExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxOUgyMHYtLjgyTDMzLjI5LDE0QTEsMSwwLDAsMCwzNCwxM1Y3QTEsMSwwLDAsMCwzMyw2WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQmxvY2tRdW90ZT0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTEuODYsMTYuNTVhNC4zMSw0LjMxLDAsMCwwLTIuMTEuNTYsMTQuNDQsMTQuNDQsMCwwLDEsNC4zNi02LDEuMSwxLjEsMCwwLDAt''@;'; put 'put ''MS40LTEuN2MtNCwzLjI1LTUuNzgsNy43NS01Ljc4LDEwLjU0QTUuMDgsNS4wOCwwLDAsMCwxMCwyNC41OGE0LjQsNC40LDAsMCwwLDEuODguNDQsNC4yNCw0LjI0LDAsMSwwLDAtOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0y''@;'; put 'put ''MywxNi41NWE0LjI5LDQuMjksMCwwLDAtMi4xMS41NiwxNC41LDE0LjUsMCwwLDEsNC4zNS02LDEuMSwxLjEsMCwxLDAtMS4zOS0xLjdjLTQsMy4yNS01Ljc4LDcuNzUtNS43OCwxMC41NGE1LjA4LDUuMDgsMCwwLDAsMyw0LjYxQTQuMzcsNC4zNywwLDAsMCwyMywyNWE0LjI0LDQuMjQsMCwx''@;'; put 'put ''LDAsMC04LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUFsaWduUmlnaHRUZXh0PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC42NSwyNy4xYTEuMSwxLjEsMCwwLDAsMS4xLDEuMUgzMFYyNkgxNS43NUExLjEsMS4x''@;'; put 'put ''LDAsMCwwLDE0LjY1LDI3LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNi45LDIxLjFBMS4xLDEuMSwwLDAsMCw4LDIyLjJIMzBWMjBIOEExLjEsMS4xLDAsMCwwLDYuOSwyMS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTEzLjQsMTUuMWExLjEsMS4xLDAsMCwwLDEuMSwxLjFIMzBWMTRIMTQuNUExLjEsMS4xLDAsMCwwLDEzLjQsMTUuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik02Ljc1LDhhMS4xLDEu''@;'; put 'put ''MSwwLDEsMCwwLDIuMkgzMFY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZVRleHQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLjE5LDguODRhMS40NSwxLjQ1LDAsMCwwLTEuNC0xaC0uMTJhMS40NiwxLjQ2LDAsMCww''@;'; put 'put ''LTEuNDIsMUwxLjE0LDI2LjU2YTEuMjksMS4yOSwwLDAsMC0uMTQuNTksMSwxLDAsMCwwLDEsMSwxLjEyLDEuMTIsMCwwLDAsMS4wOC0uNzdsMi4wOC00LjY1aDExbDIuMDgsNC41OWExLjI0LDEuMjQsMCwwLDAsMS4xMi44MywxLjA4LDEuMDgsMCwwLDAsMS4wOC0xLjA4LDEuNjQsMS42NCww''@;'; put 'put ''LDAsMC0uMTQtLjU3Wk02LjA4LDIwLjcxbDQuNTktMTAuMjIsNC42LDEwLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjI0LDE0Ljc4QTYuMzUsNi4zNSwwLDAsMCwyNy42LDEzLjJhMTEuMzYsMTEuMzYsMCwwLDAtNC43LDEs''@;'; put 'put ''MSwxLDAsMCwwLS41OC44OSwxLDEsMCwwLDAsLjk0LjkyLDEuMjMsMS4yMywwLDAsMCwuMzktLjA4LDguODcsOC44NywwLDAsMSwzLjcyLS44MWMyLjcsMCw0LjI4LDEuMzMsNC4yOCwzLjkydi41YTE1LjI5LDE1LjI5LDAsMCwwLTQuNDItLjYxYy0zLjY0LDAtNi4xNCwxLjYxLTYuMTQsNC42''@;'; put 'put ''NHYuMDVjMCwyLjk1LDIuNyw0LjQ4LDUuMzcsNC40OGE2LjI5LDYuMjksMCwwLDAsNS4xOS0yLjQ4VjI2LjlhMSwxLDAsMCwwLDEsMSwxLDEsMCwwLDAsMS0xLjA2VjE5QTUuNzEsNS43MSwwLDAsMCwzMi4yNCwxNC43OFptLS41Niw3LjdjMCwyLjI4LTIuMTcsMy44OS00LjgxLDMuODktMS45''@;'; put 'put ''NCwwLTMuNjEtMS4wNi0zLjYxLTIuODZ2LS4wNmMwLTEuOCwxLjUtMyw0LjItM2ExNS4yLDE1LjIsMCwwLDEsNC4yMi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVVbmRlcmxpbmU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDI4LjE3YzUuMDgsMCw4LjQ4LTMuMDgsOC40OC05VjguNTRhMS4xNSwxLjE1LDAsMSwwLTIuMywwdjEwLjhjMCw0LjQ0LTIuMzgsNi43MS02LjEzLDYuNzFzLTYuMjEtMi40Ny02LjIxLTYuODVWOC41NGExLjE1LDEuMTUsMCwxLDAtMi4zLDB2MTAuOEM5LjUzLDI1LjA5LDEzLDI4''@;'; put 'put ''LjE3LDE4LDI4LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLDMwSDVhMS4xMSwxLjExLDAsMCwwLDAsMi4yMUgzMUExLjExLDEuMTEsMCwwLDAsMzEsMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgLz4nKSxMLkNsclNoYXBlQWxpZ25Cb3R0b209KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDMwSDJhMSwxLDAsMCwwLDAsMkgzNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE2LDVhMSwx''@;'; put 'put ''LDAsMCwwLTEtMUg3QTEsMSwwLDAsMCw2LDVWMjhIMTZaTTE0LDI2SDhWNmg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDEzYTEsMSwwLDAsMC0xLTFIMjFhMSwxLDAsMCwwLTEsMVYyOEgzMFpNMjgsMjZIMjJWMTRoNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVBbGlnbk1pZGRsZT0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsMTdIMzBWMTFhMSwxLDAsMCwwLTEtMUgyMWExLDEsMCwwLDAtMSwxdjZIMTZWNWExLDEsMCwwLDAtMS0xSDdBMSwx''@;'; put 'put ''LDAsMCwwLDYsNVYxN0gyYTEsMSwwLDAsMCwwLDJINlYzMWExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxOWg0djZhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTloNGExLDEsMCwwLDAsMC0yWk0xNCwzMEg4VjZoNlptMTQtNkgyMlYxMmg2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUFsaWduVG9wPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCw0SDJBMSwxLDAsMCwwLDIsNkgzNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTYsMzFhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWOEg2Wk04LDEwaDZWMzBIOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMCwyM2ExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVY4SDIwWm0yLTEz''@;'; put 'put ''aDZWMjJIMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlTGFuZ3VhZ2U9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLDNIMTR2NWgyVjVoMTRjMC42LDAsMSwwLjQsMSwxdjExYzAsMC42LTAuNCwxLTEsMUgxN3Y3aC01''@;'; put 'put ''LjNMOCwyNy45VjI1SDVjLTAuNiwwLTEtMC40LTEtMVYxM2MwLTAuNiwwLjQtMSwxLTFoMTN2LTJINVxuXHRcdGMtMS43LDAtMywxLjMtMywzdjExYzAsMS43LDEuMywzLDMsM2gxdjUuMWw2LjMtNS4xSDE5di03aDExYzEuNywwLDMtMS4zLDMtM1Y2QzMzLDQuMywzMS43LDMsMzAsM3oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LjIsMjIuOWgyLjRsMC42LTEuNmgzLjFsMC42LDEuNmgyLjRMMTEuOSwxNEg5LjVMNi4yLDIyLjl6IE0xMC43LDE2LjVsMSwzLjFoLTJMMTAuNywxNi41eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLDE3YzEuMSwwLDIuNi0wLjMsNC0xYzEuNCwwLjcsMywxLDQsMXYtMmMwLDAtMSwwLTIuMS0wLjRjMS4yLTEuMiwyLjEtMywyLjEtNS42VjhoLTNWNmgtMnYyaC0zdjJoNS45XG5cdFx0Yy0wLjIsMS44LTEsMi45LTEuOSwzLjZj''@;'; put 'put ''LTAuNi0wLjUtMS4yLTEuMi0xLjYtMi4xaC0yLjFjMC40LDEuMywxLDIuMywxLjgsMy4xQzIxLjEsMTUsMjAuMiwxNSwyMCwxNVYxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwb2x5Z29uIHBvaW50cz0iMTEsMTYuNSAxMCwxOS42IDEyLDE5LjYg''@;'; put 'put ''MTEsMTYuNSBcdCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuMywzaC0xNnY1aDR2MmgtMTNjLTEuNywwLTMsMS4zLTMsM3YxMWMwLDEuNywxLjMsMywzLDNoMXY1LjFsNi4zLTUuMWg2Ljd2LTdoMTFjMS43LDAsMy0xLjMsMy0zVjZcblx0''@;'; put 'put ''XHRDMzMuMyw0LjMsMzIsMywzMC4zLDN6IE0xMy4xLDIyLjlsLTAuNS0xLjZIOS41bC0wLjYsMS42SDYuNUw5LjgsMTRoMi40bDMuMyw4LjlMMTMuMSwyMi45eiBNMjguMywxNXYyYy0xLjMsMC0yLjctMC40LTMuOS0xXG5cdFx0Yy0xLjIsMC42LTIuNiwwLjktNCwxbC0wLjEtMmMwLjcsMCwx''@;'; put 'put ''LjQtMC4xLDIuMS0wLjNjLTAuOS0wLjktMS41LTItMS44LTMuMmgyLjFjMC4zLDAuOSwwLjksMS42LDEuNiwyLjJjMS4xLTAuOSwxLjgtMi4yLDEuOS0zLjdcblx0XHRoLTZWOGgzVjZoMnYyaDMuM2wwLjEsMWMwLjEsMi4xLTAuNyw0LjItMi4yLDUuN0MyNy4xLDE0LjksMjcuNywxNSwyOC4z''@;'; put 'put ''LDE1eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlVGV4dENvbG9yPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS40NywzLjg0YTEuNDUsMS40NSwwLDAsMC0xLjQtMUgxOGExLjQ1LDEuNDUsMCwwLDAtMS40MiwxTDguNDIsMjEu''@;'; put 'put ''NTZhMS4zNSwxLjM1LDAsMCwwLS4xNC41OSwxLDEsMCwwLDAsMSwxLDEuMTEsMS4xMSwwLDAsMCwxLjA4LS43N2wyLjA4LTQuNjVoMTFsMi4wOCw0LjU5YTEuMjQsMS4yNCwwLDAsMCwxLjEyLjgzLDEuMDgsMS4wOCwwLDAsMCwxLjA4LTEuMDgsMS41OSwxLjU5LDAsMCwwLS4xNC0uNTdaTTEz''@;'; put 'put ''LjM2LDE1LjcxLDE4LDUuNDlsNC42LDEwLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHJlY3QgeD0iNC4wNiIgeT0iMjUiIHdpZHRoPSIyOCIgaGVpZ2h0PSI4IiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIi8+JyksTC5DbHJTaGFwZUhpZ2hsaWdodGVyPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNS44MiwyNi4wNmExLDEsMCwwLDEtLjcxLS4yOUw4LjY3LDE5LjMzYTEsMSwwLDAsMS0uMjktLjcxLDEsMSwwLDAsMSwuMjktLjcxTDIzLDMuNTRhNS41NSw1LjU1LDAs''@;'; put 'put ''MSwxLDcuODUsNy44NkwxNi41MywyNS43N0ExLDEsMCwwLDEsMTUuODIsMjYuMDZabS01LTcuNDQsNSw1TDI5LjQ4LDEwYTMuNTQsMy41NCwwLDAsMCwwLTUsMy42MywzLjYzLDAsMCwwLTUsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRo''@;'; put 'put ''IGQ9Ik0xMC4zOCwyOC4yOEExLDEsMCwwLDEsOS42NywyOEw2LjQ1LDI0Ljc3YTEsMSwwLDAsMS0uMjItMS4wOWwyLjIyLTUuNDRhMSwxLDAsMCwxLDEuNjMtLjMzbDYuNDUsNi40NEExLDEsMCwwLDEsMTYuMiwyNmwtNS40NCwyLjIyQTEuMzMsMS4zMywwLDAsMSwxMC4zOCwyOC4yOFpNOC4z''@;'; put 'put ''MywyMy44MmwyLjI5LDIuMjgsMy40My0xLjRMOS43NCwyMC4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik04Ljk0LDMwaC01YTEsMSwwLDAsMS0uODQtMS41NWwzLjIyLTQuOTRhMSwxLDAsMCwxLDEuNTUtLjE2bDMuMjEsMy4y''@;'; put 'put ''MmExLDEsMCwwLDEsLjA2LDEuMzVMOS43LDI5LjY0QTEsMSwwLDAsMSw4Ljk0LDMwWk01Ljc4LDI4SDguNDdMOSwyNy4zNGwtMS43LTEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjMuMDYiIHk9IjMxIiB3aWR0aD0iMzAiIGhl''@;'; put 'put ''aWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz4nKSxMLkNsclNoYXBlT3V0ZGVudD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMDYsOWgtMjZhMSwxLDAsMSwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTloLTE3YTEsMSwwLDAs''@;'; put 'put ''MSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI5aC0yNmExLDEsMCwwLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNOS41NiwyMi41NGExLDEsMCwwLDEtLjctLjNMNC42MSwxOGw0LjI1''@;'; put 'put ''LTQuMjRhMSwxLDAsMCwxLDEuNDEsMS40MUw3LjQ0LDE4bDIuODMsMi44M2ExLDEsMCwwLDEtLjcxLDEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPicpLEwuQ2xyU2hhcGVJbmRlbnQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjA2LDlo''@;'; put 'put ''LTI2YTEsMSwwLDEsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE5aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjRoLTE3YTEsMSwwLDAsMSwwLTJo''@;'; put 'put ''MTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyOWgtMjZhMSwxLDAsMCwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTUuNTYsMjIuNTRhMSwxLDAsMCwxLS43LTEuNzFMNy42OCwxOCw0Ljg2LDE1LjE3YTEsMSwwLDAsMSwwLTEuNDEsMSwxLDAsMCwxLDEuNDEsMEwxMC41MSwxOCw2LjI3LDIyLjI0QTEsMSwwLDAsMSw1LjU2LDIyLjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTYiLz4nKSxMLkNsclNoYXBlU3RyaWtldGhyb3VnaD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIuODgsMTkuOTJoLTMwYTEsMSwwLDEsMSwwLTJoMzBhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik03LjI3LDE1Ljg2YTEyLjksMTIuOSwwLDAsMSwxLjI5LS41MkE1LjY5LDUuNjksMCwwLDEsMTAuMzksMTVhMy4xOCwzLjE4LDAsMCwxLDIuNzUsMS4xMUE0LjQ0LDQuNDQsMCwwLDEsMTQsMTguODV2LjQ5YTEzLjgzLDEzLjgzLDAsMCwwLTQuMjktLjc0LDYuMTks''@;'; put 'put ''Ni4xOSwwLDAsMC0yLjU5LjU0QTUsNSwwLDAsMCw1LjgxLDIwSDE1Ljg4VjE4Ljg1YTUuNjcsNS42NywwLDAsMC0xLjM3LTQsNS4xNiw1LjE2LDAsMCwwLTQtMS40OSwxMCwxMCwwLDAsMC0zLjkxLjg4Ljg3Ljg3LDAsMCwwLS40NCwxLjE4QS44NC44NCwwLDAsMCw3LjI3LDE1Ljg2WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIxLDIwYTUuOTQsNS45NCwwLDAsMSwuNTQtMi4zMSw0LjM1LDQuMzUsMCwwLDEsMS41OC0xLjgzLDQuMjcsNC4yNywwLDAsMSw0LjU5LDAsNC40Nyw0LjQ3LDAsMCwxLDEuNTcsMS44M0E2LjEy''@;'; put 'put ''LDYuMTIsMCwwLDEsMjkuODUsMjBoMmE3LjczLDcuNzMsMCwwLDAtLjc4LTMuMTksNiw2LDAsMCwwLTIuMTgtMi40NSw1Ljc0LDUuNzQsMCwwLDAtMy4xLS44OCw1LjM5LDUuMzksMCwwLDAtMi44LjczLDUuNTUsNS41NSwwLDAsMC0yLDIuMDVWMTBhLjg3Ljg3LDAsMCwwLS44Ni0uODZIMjBh''@;'; put 'put ''Ljg3Ljg3LDAsMCwwLS44Ni44NlYyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0yOS42NywyMmE1LjYxLDUuNjEsMCwwLDEtLjM2LDEuMDcsNC40Nyw0LjQ3LDAsMCwxLTEuNTcsMS44NSw0LjMyLDQuMzIsMCwwLDEtNC41OSww''@;'; put 'put ''LDQuMzUsNC4zNSwwLDAsMS0xLjU4LTEuODVBNS42NCw1LjY0LDAsMCwxLDIxLjIsMjJIMTkuMDl2NC4xM0EuODcuODcsMCwwLDAsMjAsMjdoLjJhLjg3Ljg3LDAsMCwwLC44Ni0uODZWMjQuNTFhNS41OCw1LjU4LDAsMCwwLDIsMi4wNiw1LjQ4LDUuNDgsMCwwLDAsMi44LjcyLDUuNjYsNS42''@;'; put 'put ''NiwwLDAsMCwzLjEtLjg4QTUuODgsNS44OCwwLDAsMCwzMS4wOSwyNCw3LjA5LDcuMDksMCwwLDAsMzEuNzMsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTQsMjJ2Ljc2YTMuMzQsMy4zNCwwLDAsMS0xLjYyLDIsNS4zNCw1''@;'; put 'put ''LjM0LDAsMCwxLTIuNjkuNzIsMy43OCwzLjc4LDAsMCwxLTIuMzYtLjcsMi4yNCwyLjI0LDAsMCwxLS45NC0xLjksMi4yOSwyLjI5LDAsMCwxLC4yLS45MUg0LjYyYTQsNCwwLDAsMC0uMTMsMSwzLjgzLDMuODMsMCwwLDAsMS4zNSwzLjA2QTUuMTUsNS4xNSwwLDAsMCw5LjMxLDI3LjIsNiw2''@;'; put 'put ''LDAsMCwwLDEyLDI2LjU3YTQuNjIsNC42MiwwLDAsMCwyLTEuNzRWMjZhLjg2Ljg2LDAsMCwwLC44Ni44NkgxNWEuODYuODYsMCwwLDAsLjg2LS44NlYyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+JyksTC5DbHJTaGFwZVN1YnNjcmlwdD0oMCxCLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNTUsMThsNi44LDguNmExLjE3LDEuMTcsMCwwLDEtLjkyLDEuOWgwYTEuMTcsMS4xNywwLDAsMS0uOTItLjQ0TDEzLDE5LjkxLDYuNiwyOGExLjE3LDEuMTcsMCwwLDEtLjkyLjQ0aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0xLjlMMTEuNTUsMThsLTYu''@;'; put 'put ''OC04LjZhMS4xNywxLjE3LDAsMCwxLC45Mi0xLjloMEExLjE3LDEuMTcsMCwwLDEsNi42Myw4bDYuNDQsOC4xM0wxOS41LDhhMS4xNywxLjE3LDAsMCwxLC45Mi0uNDRoMGExLjE3LDEuMTcsMCwwLDEsLjkyLDEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik0yMywzMS44LDI3LjQ5LDI4YTkuOSw5LjksMCwwLDAsMS44OC0yLjA1QTMuNDQsMy40NCwwLDAsMCwzMCwyNGEyLjM1LDIuMzUsMCwwLDAtLjM1LTEuMjcsMi40NCwyLjQ0LDAsMCwwLTEtLjg0LDIuOSwyLjksMCwwLDAtMS4yNi0uMjgsMy4zNiwzLjM2LDAsMCww''@;'; put 'put ''LTEuODMuNSw1LjY0LDUuNjQsMCwwLDAtMS40OCwxLjQybC0xLS44MWE1LjExLDUuMTEsMCwwLDEsNC4zNi0yLjM3LDQuMzUsNC4zNSwwLDAsMSwyLC40NSwzLjQzLDMuNDMsMCwwLDEsMiwzLjE4LDQuNDUsNC40NSwwLDAsMS0uNjgsMi4zNSwxMC45LDEwLjksMCwwLDEtMi4yNCwyLjQ2bC0z''@;'; put 'put ''LjI0LDIuODFIMzEuNVYzM0gyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksTC5DbHJTaGFwZVN1cGVyc2NyaXB0PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC40MywxOGw2Ljc5LDguNmExLjE3LDEuMTcsMCwwLDEtLjkyLDEuOWgwYTEu''@;'; put 'put ''MTcsMS4xNywwLDAsMS0uOTItLjQ0bC02LjQ0LTguMTNMNi40NywyOGExLjE3LDEuMTcsMCwwLDEtLjkyLjQ0aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0xLjlMMTEuNDMsMThsLTYuOC04LjZhMS4xNywxLjE3LDAsMCwxLC45Mi0xLjloMEExLjIsMS4yLDAsMCwxLDYuNTEsOGw2LjQzLDguMTNM''@;'; put 'put ''MTkuMzgsOGExLjE3LDEuMTcsMCwwLDEsLjkyLS40NGgwYTEuMTcsMS4xNywwLDAsMSwuOTIsMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIyLjg1LDE0LjQ3bDQuNTEtMy44NWE5LjM3LDkuMzcsMCwwLDAsMS44OC0yLDMu''@;'; put 'put ''NDMsMy40MywwLDAsMCwuNTktMS44NiwyLjI3LDIuMjcsMCwwLDAtLjM2LTEuMjcsMi4zOCwyLjM4LDAsMCwwLS45NS0uODMsMi43NywyLjc3LDAsMCwwLTEuMjYtLjI5LDMuMzksMy4zOSwwLDAsMC0xLjgzLjUsNS44Myw1LjgzLDAsMCwwLTEuNDksMS40MmwtMS0uODFhNS4xMiw1LjEyLDAs''@;'; put 'put ''MCwxLDQuMzYtMi4zNyw0LjM2LDQuMzYsMCwwLDEsMiwuNDUsMy40NywzLjQ3LDAsMCwxLDIsMy4xOEE0LjQ0LDQuNDQsMCwwLDEsMzAuNTgsOWExMS4xNCwxMS4xNCwwLDAsMS0yLjI0LDIuNDZMMjUuMSwxNC4zMWg2LjI4djEuMzNIMjIuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIvPicpLEwuVGV4dEVkaXRTaGFwZXM9e2JvbGQ6TC5DbHJTaGFwZUJvbGQsImJ1bGxldC1saXN0IjpMLkNsclNoYXBlQnVsbGV0TGlzdCwiY2hlY2tib3gtbGlzdCI6TC5DbHJTaGFwZUNoZWNrYm94TGlzdCwibnVtYmVyLWxpc3QiOkwuQ2xyU2hhcGVOdW1iZXJM''@;'; put 'put ''aXN0LCJmb250LXNpemUiOkwuQ2xyU2hhcGVGb250U2l6ZSxpdGFsaWM6TC5DbHJTaGFwZUl0YWxpYywianVzdGlmeS10ZXh0IjpMLkNsclNoYXBlSnVzdGlmeVRleHQsImNlbnRlci10ZXh0IjpMLkNsclNoYXBlQ2VudGVyVGV4dCwiYWxpZ24tbGVmdC10ZXh0IjpMLkNsclNoYXBlQWxpZ25M''@;'; put 'put ''ZWZ0VGV4dCwiYWxpZ24tcmlnaHQtdGV4dCI6TC5DbHJTaGFwZUFsaWduUmlnaHRUZXh0LCJwYWludC1yb2xsZXIiOkwuQ2xyU2hhcGVQYWludFJvbGxlciwiYmxvY2stcXVvdGUiOkwuQ2xyU2hhcGVCbG9ja1F1b3RlLHRleHQ6TC5DbHJTaGFwZVRleHQsdW5kZXJsaW5lOkwuQ2xyU2hhcGVV''@;'; put 'put ''bmRlcmxpbmUsImFsaWduLWNlbnRlciI6TC5DbHJTaGFwZUFsaWduQ2VudGVyLCJhbGlnbi1sZWZ0IjpMLkNsclNoYXBlQWxpZ25MZWZ0LCJhbGlnbi1yaWdodCI6TC5DbHJTaGFwZUFsaWduUmlnaHQsImFsaWduLWJvdHRvbSI6TC5DbHJTaGFwZUFsaWduQm90dG9tLCJhbGlnbi1taWRkbGUi''@;'; put 'put ''OkwuQ2xyU2hhcGVBbGlnbk1pZGRsZSwiYWxpZ24tdG9wIjpMLkNsclNoYXBlQWxpZ25Ub3AsbGFuZ3VhZ2U6TC5DbHJTaGFwZUxhbmd1YWdlLCJ0ZXh0LWNvbG9yIjpMLkNsclNoYXBlVGV4dENvbG9yLGhpZ2hsaWdodGVyOkwuQ2xyU2hhcGVIaWdobGlnaHRlcixpbmRlbnQ6TC5DbHJTaGFw''@;'; put 'put ''ZUluZGVudCxvdXRkZW50OkwuQ2xyU2hhcGVPdXRkZW50LHN0cmlrZXRocm91Z2g6TC5DbHJTaGFwZVN0cmlrZXRocm91Z2gsc3Vic2NyaXB0OkwuQ2xyU2hhcGVTdWJzY3JpcHQsc3VwZXJzY3JpcHQ6TC5DbHJTaGFwZVN1cGVyc2NyaXB0fSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYm''@;'; put 'put ''d2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTC5UZXh0RWRpdFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO09iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLlRyYXZlbFNoYXBlcz1MLkNsclNoYXBlT25Ib2xpZGF5PUwuQ2xyU2hhcGVUcmFpbGVyPUwuQ2xyU2hhcGVGZXJyeT1MLkNsclNoYXBlQ2FyYXZhbj1MLkNsclNoYXBlQ2FtcGVydmFuPUwuQ2xyU2hhcGVCb2F0''@;'; put 'put ''PUwuQ2xyU2hhcGVCaWN5Y2xlPUwuQ2xyU2hhcGVNYXBNYXJrZXI9TC5DbHJTaGFwZUNvbXBhc3M9TC5DbHJTaGFwZU1hcD1MLkNsclNoYXBlQ2FyPUwuQ2xyU2hhcGVBaXJwbGFuZT1MLkNsclNoYXBlVHJ1Y2s9dm9pZCAwO3ZhciBCPWdlKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9k''@;'; put 'put ''ZXNjcmlwdG9yLWNvbmZpZy50cyIpLEU9Z2UoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZVRydWNrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJN''@;'; put 'put ''MzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYxOS43YTYuNDUsNi40NSwwLDAsMSwxLjU2LS4yYy4xNSwwLC4yOSwwLC40NCwwVjE0aDRhMiwyLDAsMCwxLDIsMnYxSDI4djJoNHY1SDI5LjZhNC41NCw0LjU0LDAsMCwwLTgu''@;'; put 'put ''MzQsMEgxNC40M2E0LjUsNC41LDAsMCwwLTQuMTctMi43NkE0LjM4LDQuMzgsMCwxLDAsMTQuNzIsMjZIMjFhNC40OSw0LjQ5LDAsMCwwLDguOTIsMEgzM2ExLDEsMCwwLDAsMS0xVjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4zOCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgs''@;'; put 'put ''MCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDMsMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNB''@;'; put 'put ''MSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYyMS40OUE0LjQ1LDQuNDUsMCwwLDAsMjEuMjUsMjRIMTQuNDNhNC41LDQuNSwwLDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDgsNC40OCwwLDAsMCw4LjkxLDBIMzRWMTZBNCw0LDAsMCww''@;'; put 'put ''LDMwLDEyWk0xMC4yNiwyOGEyLjM4LDIuMzgsMCwxLDEsMC00Ljc1LDIuMzgsMi4zOCwwLDEsMSwwLDQuNzVabTE1LjE3LDBhMi4zOCwyLjM4LDAsMSwxLDIuNS0yLjM3QTIuNDQsMi40NCwwLDAsMSwyNS40MiwyOFpNMzIsMTdIMjZWMTRoNGEyLDIsMCwwLDEsMiwyWiIvPicpLEwuQ2xyU2hh''@;'; put 'put ''cGVBaXJwbGFuZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1Ljc3LDguMTZhMi40MywyLjQzLDAsMCwwLTEuOS0yTDI4LDQuODdhNC41LDQuNSwwLDAsMC0zLjY1Ljc5TDcsMTguMywyLjE0LDE4LjFBMS44''@;'; put 'put ''NiwxLjg2LDAsMCwwLC45MSwyMS40MWw1LDMuOTNjLjYuNzMsMSwuNTksMTAuOTMtNC44MmwuOTMsOS40MmExLjM2LDEuMzYsMCwwLDAsLjg1LDEuMTgsMS40MywxLjQzLDAsMCwwLC41NC4xLDEuNTQsMS41NCwwLDAsMCwxLS40MWwyLjM5LTIuMThhMS41MiwxLjUyLDAsMCwwLC40Ni0uODNM''@;'; put 'put ''MjUuMiwxNS45YzMuNTctMiw2Ljk1LTMuODgsOS4zNi01LjI1QTIuNDMsMi40MywwLDAsMCwzNS43Nyw4LjE2Wm0tMi4yLjc1Yy0yLjUsMS40Mi02LDMuNDEtOS43Niw1LjQ3bC0uNDEuMjNMMjEuMDcsMjcuMjhsLTEuNDcsMS4zNEwxOC41LDE3LjMyLDE3LjE3LDE4QzEwLDIyLDcuNjEsMjMu''@;'; put 'put ''MTYsNi43OSwyMy41MmwtNC4zLTMuNDEsNS4wOC4yMiwxOC0xMy4wNmEyLjUxLDIuNTEsMCwwLDEsMi0uNDVsNS44NSwxLjI2YS40My40MywwLDAsMSwuMzUuMzdBLjQyLjQyLDAsMCwxLDMzLjU3LDguOTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgZD0iTTcsMTIuNTRsMy41NiwxLDEuNjQtMS4xOS00LTEuMTZMMTAsMTAuMDlsNS40Ny0uMTYsMi4zLTEuNjdMMTAsOC41YTEuMjUsMS4yNSwwLDAsMC0uNy4xN0w2LjY3LDEwLjJBMS4yOCwxLjI4LDAsMCwwLDcsMTIuNTRaIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNi4yNSwxMS41LDEyLDEzLjE2bDYuMzItNC41OS05LjA3LjI2QS41Mi41MiwwLDAsMCw5LDguOTFMNi4xMywxMC41NkEuNTEuNTEsMCwwLDAsNi4yNSwxMS41WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTM0LjUyLDYuMzYsMjguMjIsNWEzLjc4LDMuNzgsMCwwLDAtMy4wNy42N0w2LjEyLDE5LjVsLTQuNTctLjJhMS4yNSwxLjI1LDAsMCwwLS44MywyLjIybDQuNDUsMy41M2EuNTUuNTUsMCwwLDAsLjUzLjA5YzEuMjctLjQ5LDYt''@;'; put 'put ''MywxMS41OS02LjA3bDEuMTIsMTEuNTFhLjU1LjU1LDAsMCwwLC45LjM3bDIuNS0yLjA4YS43Ni43NiwwLDAsMCwuMjYtLjQ1bDIuMzctMTMuMjljNC0yLjIyLDcuODItNC4zNywxMC41MS01Ljg5QTEuNTUsMS41NSwwLDAsMCwzNC41Miw2LjM2WiIvPicpLEwuQ2xyU2hhcGVDYXI9KDAsRS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjMiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk''@;'; put 'put ''PSJNMjYuNDUsMTQuMTdBMjIuMSwyMi4xLDAsMCwwLDE5LjM4LDdhOS42NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ3LS4xNC45Mi0uMiwxLjM2QTQsNCwwLDAsMCwyLDE4djYuMTNhMiwyLDAsMCwwLDIsMlYyMEg0VjE4YTIsMiwwLDAsMSwyLTJIMjQu''@;'; put 'put ''NzNBNy4yOCw3LjI4LDAsMCwxLDMyLDIzLjI3VjI0aC0yYTQuNTMsNC41MywwLDEsMCwuMzMsMkgzMmEyLDIsMCwwLDAsMi0ydi0uNzNBOS4yOCw5LjI4LDAsMCwwLDI2LjQ1LDE0LjE3Wk0xMSwxNEg2LjkzYzAtLjMxLjA5LS42My4xNS0xQTYuNTIsNi41MiwwLDAsMSwxMSw4aDBabTIsMFY3''@;'; put 'put ''LjU4YTguMTcsOC4xNywwLDAsMSw1LjM2LDEuMTZBMTksMTksMCwwLDEsMjMuOSwxNFpNMjUuOCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNS44LDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIiBkPSJNMTQuMTcsMjRhNC41Myw0LjUzLDAsMSwwLC4zMywyaDUuM2MwLS4wOCwwLS4xNywwLS4yNUE2LDYsMCwwLDEsMjAsMjRaTTEwLDI4LjM4YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi44NywxNC4yOEEyMi4zNiwyMi4zNiwwLDAsMCwxOS42NSw2LjlhOS42NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ5LS4xNSwxLS4yMSwxLjRoLTFBMi41OSwyLjU5''@;'; put 'put ''LDAsMCwwLDIsMTYuNTl2OC41NWEuODYuODYsMCwwLDAsLjg2Ljg2SDQuNTljMC0uMTMsMC0uMjYsMC0uMzlhNS43Nyw1Ljc3LDAsMCwxLDcuNzEtNS40NWwtMSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDE0LjgyLDI2aDUuNDhj''@;'; put 'put ''MC0uMTMsMC0uMjYsMC0uMzlBNS43Nyw1Ljc3LDAsMCwxLDI4LDIwLjE2bC0xLDFhNC41Niw0LjU2LDAsMCwwLTQuMzQsMS41OCwzLDMsMCwwLDAtLjYzLjkzQTQuNSw0LjUsMCwxLDAsMzAuNTMsMjZoMi42MWEuODYuODYsMCwwLDAsLjg2LS44NlYyMy4zNkE5LjM5LDkuMzksMCwwLDAsMjYu''@;'; put 'put ''ODcsMTQuMjhaTTEyLDE0SDhjMC0uMzUuMS0uNzEuMTYtMS4wN2E2LjUyLDYuNTIsMCwwLDEsMy44Ny01aDBaTTEwLjM2LDI4LjM2YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLjM2LDI4LjM2Wk0xOSwxOUgxNlYxN2gzWm0tNi01VjcuNDdhOC4xNiw4LjE2LDAsMCwx''@;'; put 'put ''LDUuNCwxLjE1QTE5LjE1LDE5LjE1LDAsMCwxLDI0LDE0Wk0yNi4wNiwyOC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNi4wNiwyOC4zNloiLz4nKSxMLkNsclNoYXBlTWFwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNTksNi4xOUExLDEsMCwwLDAsMzIuNyw2TDIzLjA5LDksMTMuNDYsNC4xMWExLDEsMCwwLDAtLjg0LDBMMi42Miw4LjJBMSwxLDAsMCwwLDIsOS4xM1YyOS42MWExLDEsMCwwLDAsMS4zOC45MkwxMywyNi41OGw5LjU5LDQuOTJhMSwxLDAsMCwwLC40''@;'; put 'put ''Ni4xMSwxLDEsMCwwLDAsLjMsMGwxMC0zLjEyYTEsMSwwLDAsMCwuNy0xVjdBMSwxLDAsMCwwLDMzLjU5LDYuMTlaTTMyLDI2Ljc1bC04LjMyLDIuNlYyNy4wNmgtMS42djJsLTguNC00LjMxVjIzLjA2aC0xLjZ2MS43Mkw0LDI4LjExVjkuNzlsOC4wOC0zLjMzVjguODFoMS42VjYuNDdsOC40''@;'; put 'put ''LDQuM3YyLjFoMS42VjExTDMyLDguMzZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjIyLjA4IiB5PSIxNS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjIyLjA4IiB5PSIyMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjA4''@;'; put 'put ''IiB5PSIxMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjEyLjA4IiB5PSIxNy4xMyIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjc1Ii8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLjMxLDcuMzUsMjUsOS45NFYxNEgyM1YxMC4yOUwxNCw1LjY4VjlIMTJWNS4yN2wtOS42Nyw0QS41My41MywwLDAsMCwyLDkuNzVWMzAuNDVhLjUzLjUzLDAsMCwwLC43NC40OUwxMiwyNy4x''@;'; put 'put ''MlYyM2gydjQuNTNsOSw0LjYxVjI4aDJ2My43OWw4LjYzLTIuN2EuNTMuNTMsMCwwLDAsLjM3LS41MVY3Ljg2QS41My41MywwLDAsMCwzMy4zMSw3LjM1Wk0xNCwyMUgxMlYxN2gyWm0wLTZIMTJWMTFoMlpNMjUsMjZIMjNWMjJoMlptMC02SDIzVjE2aDJaIi8+JyksTC5DbHJTaGFwZUNvbXBh''@;'; put 'put ''c3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjgyLDE1LjMxaDBMMTAuNDYsOWMtLjQ2LS4yNi0xLjExLjM3LS44Ni44NGw2LjE1LDEwLjU2LDEwLjU2LDYuMTVhLjY2LjY2LDAsMCwwLC44NC0uODZabS00LDQsMy0zLDQuNTUsNy40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMSwyOS45NVYyOS41M0gxN3YyLjQyQTE0LDE0LDAsMCwxLDQuMDUsMTlINi40N1YxN0g0LjA1QTE0LDE0LDAsMCwxLDE3LDQuMDVWNi40''@;'; put 'put ''N2gyVjQuMDVBMTQsMTQsMCwwLDEsMzEuOTUsMTdIMjkuNTN2MmgyLjQyQTE0LDE0LDAsMCwxLDE5LDMxLjk1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMCwxOCwyWk02LjQ3LDE5SDQuMDVjMC0uMzMtLjA1LS42Ni0uMDUtMXMwLS42Ny4wNS0xSDYuNDdaTTE3LDQuMDVjLjMzLDAsLjY2LS4wNSwxLS4wNXMuNjcsMCwxLC4wNVY2LjQ3SDE3Wm0yLDI3LjljLS4zMywwLS42Ni4wNS0xLC4wNXMtLjY3LDAtMS0uMDVWMjkuNTNoMlptOC01LjU4''@;'; put 'put ''YS41OS41OSwwLDAsMS0uNjkuMTZMMTUuNzUsMjAuMzgsOS42LDkuODJjLS4yNS0uNDcuMzktMS4xLjg2LS44NGwxMC4zNyw2LjMzaDBsNi4zMywxMC4zN0EuNTkuNTksMCwwLDEsMjcsMjYuMzdaTTI5LjUzLDE5VjE3aDIuNDJjMCwuMzMuMDUuNjYuMDUsMXMwLC42Ny0uMDUsMVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE2Ljc3IDE5LjM1IDI0LjM1IDIzLjc3IDE5LjggMTYuMzMgMTYuNzcgMTkuMzUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJT''@;'; put 'put ''aGFwZU1hcE1hcmtlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEs''@;'; put 'put ''MSwzLjczLTMuNzNBMy43MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExMS43OSwxMS43OSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41''@;'; put 'put ''NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQTExLjc5LDExLjc5LDAsMCwwLDE4LDJaTTIzLjU5LDI0bC0uMzYuNTNjLTEuNzIs''@;'; put 'put ''Mi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMWE5Ljc4LDkuNzgsMCwxLDEsMTkuNTYsMEMyNy43OCwxNy43OSwyNS4zNiwyMS40LDIzLjU5LDI0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEsMSwzLjczLTMuNzNBMy43''@;'; put 'put ''MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5YTcuNDksNy40OSwwLDAsMS0yLS4zM2MwLC4xOSwwLC4zOCwwLC41Nyww''@;'; put 'put ''LDQuMDYtMi40Miw3LjY3LTQuMTksMTAuMzFsLS4zNi41M2MtMS43MiwyLjU4LTQsNS40Ny01LjIzLDYuOS0xLjE4LTEuNDMtMy41MS00LjMyLTUuMjMtNi45TDEyLjQyLDI0Yy0xLjc3LTIuNjQtNC4yLTYuMjUtNC4yLTEwLjMxQTkuNzcsOS43NywwLDAsMSwyMi41Niw1LjA5YTcuNDUsNy40''@;'; put 'put ''NSwwLDAsMSwuNTItMkExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMt''@;'; put 'put ''Ni43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTEuNzksMTEuNzksMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYu''@;'; put 'put ''MTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwxMS43OSwwLDAsMCwxOCwyWm0wLDE3YTYuNTYsNi41NiwwLDEsMSw2LjU2LTYuNTZBNi41Niw2LjU2LDAsMCwxLDE4LDE5WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMTIuNDQiIHI9IjMuNzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5QTcuNDcsNy40NywwLDAsMSwyNC4zOCwxMWE2LjU4LDYuNTgsMCwxLDEtMS42MS0zLDcuNDIsNy40MiwwLDAsMSwuMzEtNC44NEExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEs''@;'; put 'put ''OTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVCaWN5Y2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LjUsMjkuNjVBNi41MSw2LjUxLDAsMCwxLDIsMjMuMTVhNi4zOSw2LjM5LDAsMCwxLDYuNS02LjM2QTYuMzksNi4zOSwwLDAsMSwxNSwyMy4xNSw2''@;'; put 'put ''LjUxLDYuNTEsMCwwLDEsOC41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsOC41LDE4LjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI3LjUsMjkuNjVhNi41MSw2LjUxLDAsMCwxLTYu''@;'; put 'put ''NS02LjUsNi41LDYuNSwwLDAsMSwxMywwQTYuNTEsNi41MSwwLDAsMSwyNy41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsMjcuNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0x''@;'; put 'put ''OSwyNC42Nkg4YTEsMSwwLDAsMS0uODktMS40NWw1LTEwLDEuNzguOUw5LjYyLDIyLjczSDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHJlY3QgeD0iMTMiIHk9IjEyLjY4IiB3aWR0aD0iMTEiIGhlaWdodD0iMS45MSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI4LDI0LjY2YTEsMSwwLDAsMS0uOTQtLjY2TDIyLjI5LDEwLjY2SDIwYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtLjkzaDNhLjk0Ljk0LDAsMCwxLC45NC42bDUsMTRhMSwxLDAsMCwxLS42LDEuMjdBMSwxLDAsMCwx''@;'; put 'put ''LDI4LDI0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTEzLDE0LjY2YTEsMSwwLDAsMS0uNzEtLjI5bC0xLjctMS43MUg4YTEsMSwwLDAsMS0xLTEsLjk0Ljk0LDAsMCwxLDEtMWgzYTEuMDgsMS4wOCwwLDAsMSwuNzUuMjdsMiwy''@;'; put 'put ''YTEsMSwwLDAsMSwwLDEuNDFBMSwxLDAsMCwxLDEzLDE0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE1LDIxLjljLTAuMi0yLTEuMi0zLjgtMi45LTQuOWwtMi41LDQuOUgxNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTcuMiwyMy40Yy0wLjItMC4zLTAuMi0wLjcsMC0xbDMuMi02LjNjLTAuNi0wLjItMS4yLTAuMi0xLjgtMC4yQzUsMTUuOSwyLDE4LjgsMiwyMi40YzAsMy42LDIuOSw2LjUsNi41LDYuNVxuXHRjMywwLDUuNi0yLjEsNi4zLTVIOEM3LjcsMjMuOSw3''@;'; put 'put ''LjMsMjMuNyw3LjIsMjMuNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LDIxLjloLTRjMCwwLjIsMCwwLjMsMCwwLjVjMCwwLjUtMC4xLDEtMC4yLDEuNUgxOVYyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MyIgLz48cGF0aCBkPSJNMjcuNSwxNS45Yy0wLjMsMC0wLjYsMC0wLjksMC4xbDIuNCw2LjZjMC4yLDAuNS0wLjEsMS4xLTAuNiwxLjNjLTAuMSwwLTAuMiwwLjEtMC4zLDAuMWMtMC40LDAtMC44LTAuMy0wLjktMC43bC0yLjQtNi43XG5cdGMtMy4yLDEuNi00LjUsNS41LTMsOC43YzEuNiwz''@;'; put 'put ''LjIsNS41LDQuNSw4LjcsM2MzLjItMS42LDQuNS01LjUsMy04LjdDMzIuMiwxNy4zLDMwLDE1LjksMjcuNSwxNS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMjQuNywxNi43YzAuNi0wLjMsMS4zLTAuNSwxLjktMC42bC0yLjctNy40QzIz''@;'; put 'put ''LjgsOC4yLDIzLjQsOCwyMyw3LjloLTNjLTAuNiwwLTEsMC41LTEsMS4xYzAsMC41LDAuNCwwLjksMSwwLjlcblx0YzAsMCwwLDAsMCwwaDIuM2wwLjcsMmgtOS42bC0xLjctMS43QzExLjUsMTAuMSwxMS4zLDEwLDExLDEwSDhjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMi42bDEuMiwx''@;'; put 'put ''LjJsLTEuNSwzXG5cdGMwLjYsMC4yLDEuMywwLjUsMS44LDAuOGwxLjYtMy4yaDEwTDI0LjcsMTYuN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksTC5DbHJTaGFwZUJvYXQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjEsMjcuMUMyOCwyNywy''@;'; put 'put ''Ni45LDI3LjQsMjYsMjguMmMtMS4xLDEuMS0yLjksMS4xLTQuMSwwYy0xLTAuNy0yLjEtMS4xLTMuMy0xLjFjLTEuMi0wLjEtMi40LDAuMy0zLjMsMS4xXG5cdFx0QzE0LjcsMjguNywxNCwyOSwxMy4yLDI5cy0xLjUtMC4zLTIuMS0wLjhjLTEtMC44LTIuMi0xLjItMy40LTEuMnMtMi40LDAu''@;'; put 'put ''NC0zLjQsMS4yQzMuNywyOC43LDIuOCwyOSwyLDI5djJcblx0XHRjMS4zLDAuMSwyLjYtMC4zLDMuNi0xLjJDNi4yLDI5LjMsNy4xLDI5LDcuOSwyOWMwLjcsMCwxLjUsMC4zLDIuMSwwLjhjMS44LDEuNiw0LjYsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44XG5cdFx0YzAuNyww''@;'; put 'put ''LDEuNCwwLjMsMiwwLjhjMS45LDEuNiw0LjYsMS42LDYuNSwwYzAuNS0wLjUsMS4zLTAuOCwyLTAuOGMwLjcsMCwxLjQsMC4zLDEuOSwwLjhjMC45LDAuNywxLjksMS4xLDMsMS4ydi0yXG5cdFx0Yy0xLDAtMS4yLTAuNC0xLjctMC44QzMxLjQsMjcuNSwzMC4zLDI3LjEsMjkuMSwyNy4xeiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYsMjNjMC0wLjYsMC41LTEsMS4xLTFIMzJsLTMuNSwzLjFoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC43LTAuOCwwLjYtMi4xLTAuMi0yLjhcblx0XHRDMzMs''@;'; put 'put ''MjAuMiwzMi42LDIwLDMyLjEsMjBoLTI1Yy0xLjcsMC0zLDEuMy0zLDN2My4yYzAuNS0wLjUsMS4yLTAuOCwxLjktMS4xVjIzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTguOSwxOUgxNXYtNy44YzAtMC42LTAuMy0xLjItMC44LTEu''@;'; put 'put ''NkMxMy4zLDguOSwxMiw5LjEsMTEuNCwxMGwtNC4xLDUuOWMtMC40LDAuNi0wLjQsMS40LTAuMSwyLjFDNy41LDE4LjYsOC4yLDE5LDguOSwxOVxuXHRcdHogTTEzLjEsMTEuMkwxMywxN0g4LjlMMTMuMSwxMS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''IC8+PHBhdGggZD0iTTI2LDE4YzAuNC0wLjYsMC40LTEuNCwwLTJMMTkuNyw1LjZjLTAuNC0wLjYtMS0xLTEuNy0xYy0xLjEsMC0yLDAuOS0yLDJWMTloOC4zQzI1LDE5LDI1LjcsMTguNiwyNiwxOHogTTE3LjksNi42XG5cdFx0bDYuNCwxMC41aC02LjRWNi42eiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTM0LDMxYy0xLjEtMC4xLTIuMS0wLjUtMy0xLjJjLTAuNS0wLjUtMS4yLTAuOC0yLTAuOGMtMC43LDAtMS41LDAuMy0yLDAuOGMtMC45LDAuOC0yLDEuMS0zLjEsMS4xYy0xLjIsMC0yLjQtMC40LTMuMy0xLjFcblx0Yy0x''@;'; put 'put ''LjItMS4xLTMtMS4xLTQuMSwwYy0wLjksMC44LTIuMSwxLjItMy40LDEuMmMtMS4yLDAtMi4zLTAuNC0zLjItMS4yYy0wLjYtMC41LTEuMy0wLjgtMi0wLjhjLTAuOCwwLTEuNywwLjMtMi4zLDAuOFxuXHRjLTEsMC44LTIuMywxLjItMy41LDEuMVYyOWMwLjgsMCwxLjctMC4zLDIuMy0wLjlj''@;'; put 'put ''MS0wLjgsMi4yLTEuMiwzLjQtMS4xYzEuMiwwLDIuNCwwLjQsMy4zLDEuMmMxLjIsMS4xLDMsMS4xLDQuMiwwXG5cdGMxLjktMS42LDQuNy0xLjYsNi41LDBjMS4yLDEuMSwzLDEuMSw0LjEsMGMwLjktMC44LDIuMS0xLjIsMy4zLTEuMmMxLjEsMCwyLjIsMC40LDMsMS4yQzMyLjgsMjguNywz''@;'; put 'put ''MywyOSwzNCwyOUwzNCwzMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMSwyNi4yYzAuNi0wLjUsMS4yLTAuOCwxLjktMVYyM2MwLTAuNiwwLjQtMS4xLDEtMS4xaDI1TDI4LjQsMjVoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUt''@;'; put 'put ''Mi4ybDAuMi0wLjJcblx0YzAuNy0wLjksMC41LTIuMS0wLjQtMi44QzMyLjksMjAuMSwzMi40LDIwLDMyLDIwSDdjLTEuNywwLTMsMS4zLTMsM0w0LjEsMjYuMkw0LjEsMjYuMnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE0LjksMTguOUg4''@;'; put 'put ''LjljLTEuMSwwLTItMC45LTItMmMwLTAuNCwwLjEtMC44LDAuNC0xLjJsNC4xLTUuOGMwLjYtMC45LDEuOS0xLjEsMi44LTAuNWMwLjUsMC40LDAuOCwxLDAuOCwxLjZWMTguOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LjMsMTguOUgx''@;'; put 'put ''NlY2LjRjMC0xLjEsMC45LTIsMi0yYzAuNywwLDEuMywwLjQsMS43LDFMMjYsMTUuOGMwLjYsMSwwLjIsMi4yLTAuNywyLjdDMjUsMTguNywyNC42LDE4LjgsMjQuMywxOC45XG5cdEwyNC4zLDE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVDYW1wZXJ2YW49KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTkuNSwyNEM5LjUsMjQsOS41LDI0LDkuNSwyNEM3LjYsMjQsNiwyNS42LDYsMjcuNWMwLDAsMCwwLDAsMEM2LDI5LjQsNy42LDMxLDkuNSwzMWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMTEuNCwyNCw5LjUs''@;'; put 'put ''MjR6IE05LjUsMjlDOC43LDI5LDgsMjguMyw4LDI3LjVTOC43LDI2LDkuNSwyNnMxLjUsMC43LDEuNSwxLjVTMTAuMywyOSw5LjUsMjl6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjMuNSwyNEMyMy41LDI0LDIzLjUsMjQsMjMuNSwy''@;'; put 'put ''NGMtMS45LDAtMy41LDEuNi0zLjUsMy41YzAsMCwwLDAsMCwwYzAsMS45LDEuNSwzLjUsMy41LDMuNWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMjUuNCwyNCwyMy41LDI0eiBNMjMuNSwyOWMtMC44LDAtMS41LTAuNy0xLjUtMS41czAuNy0xLjUsMS41LTEuNXMxLjUsMC43LDEuNSwx''@;'; put 'put ''LjVTMjQuMywyOSwyMy41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMzLDIwLjFWMjBoLTAuMWwtMy41LTUuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjNWOS43QzMyLDcuMSwyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywx''@;'; put 'put ''LjItNC40LDNINWMtMS43LDAtMywxLjMtMywzXG5cdFx0djE3aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlMMTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjR2OWg3Ljhcblx0XHRsMC4yLDAu''@;'; put 'put ''M1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDMzLDIwLjF6IE0yNiwyMHYtNWgxLjVsMy4xLDVIMjZ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cmVjdCB4PSIxOSIgeT0iOSIgd2lkdGg9IjgiIGhlaWdodD0i''@;'; put 'put ''MiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCwyMiAyMiwyMiAyMiwxMyAxNSwxMyAxNSwyOCAxNywyOCAxNywxNSAyMCwxNSBcdCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBh''@;'; put 'put ''dGggZD0iTTYsMjBoN3YtN0g2VjIweiBNOCwxNWgzdjNIOFYxNXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik05LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVTNy42LDMxLDkuNSwzMWMwLDAsMCwwLDAsMGMxLjksMCwzLjUtMS42LDMu''@;'; put 'put ''NS0zLjVjMCwwLDAtMC4xLDAtMC4xQzEzLDI1LjUsMTEuNCwyNCw5LjUsMjR6IlxuXHRcdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjIzLjUiIGN5PSIyNy41IiByPSIzLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTIiIC8+PHBhdGggZD0iTTI5LjUsMTQuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjJWOS43YzAsMCwwLDAsMC0wLjFDMzIsNywyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywxLjItNC40LDNINWMtMS43LDAtMywxLjMtMywzdjE3XG5cdFx0aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlM''@;'; put 'put ''MTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjdoLTN2OWg3Ljhcblx0XHRsMC4yLDAuM1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDI5LjUsMTQuNXoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHJlY3QgeD0iMTkiIHk9IjkiIHdpZHRoPSI3LjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwLDIyIDIxLjksMjIgMjEuOSwxMyAx''@;'; put 'put ''NSwxMyAxNSwyOCAxNi45LDI4IDE2LjksMTUgMjAsMTUgXHQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHJlY3QgeD0iNiIgeT0iMTMiIHdpZHRoPSI2LjkiIGhlaWdodD0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxM''@;'; put 'put ''LkNsclNoYXBlQ2FyYXZhbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTMuNSwyMUMxMSwyMSw5LDIzLDksMjUuNXMyLDQuNSw0LjUsNC41YzIuNSwwLDQuNS0yLDQuNS00LjVDMTgsMjMsMTYsMjEsMTMuNSwyMXogTTEzLjUsMjhjLTEuNCwwLTIuNS0xLjEtMi41LTIuNVxuXHRcdHMx''@;'; put 'put ''LjEtMi41LDIuNS0yLjVzMi41LDEuMSwyLjUsMi41UzE0LjksMjgsMTMuNSwyOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42''@;'; put 'put ''LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNoMnYtMkg1XG5cdFx0Yy0wLjYsMC0xLTAuNC0xLTFWOWMwLTAuNiwwLjQtMSwxLTFoMTguOGMwLjQsMCwwLjcsMC4yLDAuOSwwLjVsNC4yLDcuNWMwLjEsMC4xLDAuMSwwLjMsMC4xLDAuNVYyNGgtNFYxMmgtN3Y4aDJ2''@;'; put 'put ''LTZoM3YxMGgtM3YyaDEzXG5cdFx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE2LDEySDd2Nmg5VjEyeiBNMTQsMTZIOXYtMmg1VjE2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEzLjUsMzBDMTEsMzAsOSwyOCw5LDI1LjVzMi00LjUsNC41LTQuNXM0LjUsMiw0LjUsNC41QzE4LDI4LDE2LDMwLDEzLjUsMzB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywy''@;'; put 'put ''NGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNoMnYtMkg1XG5cdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiww''@;'; put 'put ''LjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRjMC42LDAsMS0wLjQsMS0xUzMzLjYsMjQsMzMsMjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxOEg3''@;'; put 'put ''di02aDlWMTh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVGZXJyeT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMjUuMWMtMS4yLDAtMi4zLDAuNC0zLjMsMS4xYzAsMCwwLDAsMCwwYy0xLjEsMS4xLTMsMS4xLTQuMSwwYy0w''@;'; put 'put ''LjktMC44LTIuMS0xLjItMy4zLTEuMmMtMS4yLDAtMi4zLDAuNC0zLjIsMS4yXG5cdFx0Yy0xLjIsMS4xLTMsMS4xLTQuMiwwQzEwLDI1LjQsOC44LDI1LDcuNiwyNWMtMS4yLDAtMi40LDAuNC0zLjQsMS4xQzMuNiwyNi43LDIuOCwyNywyLDI3djJjMS4zLDAuMSwyLjUtMC40LDMuNC0xLjJc''@;'; put 'put ''blx0XHRDNi4xLDI3LjMsNi45LDI3LDcuNywyN2MwLjgsMCwxLjUsMC4zLDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOFxuXHRcdGMxLjksMS42LDQuNiwxLjYsNi41LDBjMC41LTAuNSwxLjMtMC44LDIt''@;'; put 'put ''MC44YzAuNywwLDEuNSwwLjMsMiwwLjhjMC45LDAuNywyLDEuMSwzLjEsMS4ydi0xLjljLTAuNywwLTEuNC0wLjMtMS45LTAuOVxuXHRcdEMzMS4zLDI1LjQsMzAuMSwyNSwyOSwyNS4xeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUu''@;'; put 'put ''OSwyMy4yVjIwSDMybC0zLjUsM2gwLjJjMC44LDAsMS42LDAuMiwyLjIsMC41bDIuNS0yLjJsMC4yLTAuMmMwLjUtMC42LDAuNS0xLjQsMC4yLTIuMWMtMC40LTAuNy0xLTEtMS44LTFoLTQuNFxuXHRcdEwyMi41LDExSDE3Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOC4xSDZ2Ni4xYy0xLjIsMC40''@;'; put 'put ''LTIsMS41LTIsMi44djEuMVYyMHY0LjNsMC4xLTAuMUM0LjYsMjMuNyw1LjIsMjMuNCw1LjksMjMuMnogTTgsMTBoMnY0SDhWMTB6XG5cdFx0IE02LDE3YzAtMC42LDAuNC0xLDEtMWg5di0yYzAtMC42LDAuNC0xLDEtMWg1bDAuNiwxSDE4djJoNS44bDEuMiwyLjFINlYxN3oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOC4yLDI1Yy0xLjIsMC0yLjQsMC40LTMuMywxLjJjLTEuMiwxLjEtMywxLjEtNC4xLDBjLTEuOS0xLjYtNC42LTEuNi02LjUsMGMtMS4yLDEuMS0yLjksMS4xLTQuMSwwXG5cdFx0Yy0wLjktMC44LTItMS4y''@;'; put 'put ''LTMuMi0xLjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMkMzLjQsMjYuNywyLjcsMjcsMiwyN3YyYzEuMS0wLjEsMi4yLTAuNSwzLjEtMS4yQzUuNiwyNy4zLDYuMywyNyw3LDI3XG5cdFx0YzAuNywwLDEuNSwwLjMsMiwwLjhjMS45LDEuNiw0LjcsMS42LDYuNiwwYzAuNi0wLjUsMS4zLTAuOCwy''@;'; put 'put ''LjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOGMxLjksMS42LDQuNywxLjYsNi41LDBcblx0XHRjMC42LTAuNSwxLjMtMC44LDIuMS0wLjhjMC44LDAsMS42LDAuMywyLjEsMC44YzAuOSwwLjgsMi4yLDEuMywzLjQsMS4ydi0yYy0wLjgsMC0xLjYtMC4zLTIuMi0wLjhDMzAuNywyNS40LDI5''@;'; put 'put ''LjUsMjUsMjguMiwyNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTUuOCwyMy4ydi0zLjNoMjYuMUwyOC40LDIzaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjEtMC4yYzAuNy0wLjksMC41LTIuMS0wLjQtMi44Yy0wLjMt''@;'; put 'put ''MC4zLTAuOC0wLjQtMS4yLTAuNFxuXHRcdGgtNC4xbC01LjQtN2gtNS41Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOEg2djYuMmMtMS4yLDAuNC0yLjEsMS41LTIuMSwyLjhsMCw3LjJsMC4xLDBDNC41LDIzLjcsNS4xLDIzLjQsNS44LDIzLjJ6IE0xNy45LDE0aDQuMlxuXHRcdGwxLjQsMmgtNS43''@;'; put 'put ''VjE0eiBNNy45LDEwaDJ2NGgtMlYxMHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVRyYWlsZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDE5LjJjLTMuMiwwLTUuOCwyLjYtNS44LDUuOHMyLjYsNS44LDUuOCw1LjhzNS44''@;'; put 'put ''LTIuNiw1LjgtNS44UzE4LjIsMTkuMiwxNSwxOS4yeiBNMTUsMjkuMmMtMi4zLDAtNC4yLTEuOS00LjItNC4yXG5cdFx0czEuOS00LjIsNC4yLTQuMnM0LjIsMS45LDQuMiw0LjJTMTcuMywyOS4yLDE1LDI5LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgt''@;'; put 'put ''MS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3YyaDEuMVxuXHRcdGMwLDAsMCwwLDAsMGMyLjEsMCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IE0yNiwxM0g0di0yaDIyVjEzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDlIMnYxMy4xYzAsMCwwLDAsMCwwQzIsMjQuMywzLjcsMjYsNS45LDI2SDd2LTJINS45Yy0xLDAtMS44LTAuOC0xLjktMS45VjE1aDIydjcuMWMwLDEtMC44LDEuOC0xLjksMS45SDIzdjJoMS4xXG5cdGMwLDAsMCwwLDAsMGMyLjEs''@;'; put 'put ''MCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUu''@;'; put 'put ''OGwwLDBDMjAuOCwyMS44LDE4LjIsMTkuMiwxNSwxOS4yeiBNMTYsMjZoLTJ2LTJoMlYyNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZU9uSG9saWRheT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguMDgsMi4zNGMtOC44Miww''@;'; put 'put ''LTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNEExNy45MSwxNy45MSwwLDAsMCwyMywyOS42Nmw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjMsMSwxLDAsMCwwLC4xNi0uNTRWMjUuNjFhMTMsMTMsMCwwLDAsNC05LjI3QzM0LjA4LDguNjIsMjYuOSwyLjM0LDE4LjA4LDIuMzRaTTI4LjM3''@;'; put 'put ''LDI0LjQ1YTEsMSwwLDAsMC0uMzIuNzN2NS4zNGwtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExLDE2LDE2LDAsMCwxLTQuNzYuNzJjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4xLDExLjEsMCwwLDEsMjguMzcsMjQuNDVaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMSwxNS44MiwzMSwxNS42NywyOC41LDEzLjQ0YTMuMjUsMy4yNSwwLDAsMC0yLjM5LS44NGwtNS4zOC4zNC0zLjU5LTNhLjgxLjgxLDAsMCwwLS41Mi0uMTlIMTMuNTZhLjc4Ljc4LDAsMCwwLS42''@;'; put 'put ''OS40Ljc3Ljc3LDAsMCwwLDAsLjc5bDEuMzYsMi40NC00LjcxLjI5LDEuMzEsMS41MiwxNS4zOS0xYTEuNjUsMS42NSwwLDAsMSwxLjIyLjQzbDIuMzYsMi4xM2EuMTEuMTEsMCwwLDEsMCwuMDdjMCwuMDYtLjA5LjA1LS4xLjA2SDIxLjgybC0uMzUuMzctNS4xOSw1LjUzSDE0LjY0bDIuNzMt''@;'; put 'put ''NS45SDguNTRMNy4xMywxNC4xNiw2LjUxLDEzYS44LjgsMCwwLDAtMS0uMkEuODEuODEsMCwwLDAsNS4yLDEzLjlsMiwzLjk0YTEuMjEsMS4yMSwwLDAsMCwxLjA4LjY1aDYuNTdsLTEuOTQsNC4xOEExLjIsMS4yLDAsMCwwLDEzLDIzLjgzYTEuMjIsMS4yMiwwLDAsMCwxLC41NmgyLjQzYTEu''@;'; put 'put ''MTcsMS4xNywwLDAsMCwuODgtLjM5bDUuMTgtNS41MWg3LjE2YTEuNjUsMS42NSwwLDAsMCwxLjUyLS45MUExLjc0LDEuNzQsMCwwLDAsMzEuMSwxNS44MlpNMTQuOTIsMTEuMzFoMS40MWwyLjA5LDEuNzdMMTYsMTMuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIvPlxuICBcbiAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExNy45MSwxNy45MSwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjNBMSwxLDAsMCwwLDMwLDMyLjVWMjUuNzdhMTMsMTMsMCwwLDAsNC05LjI3''@;'; put 'put ''QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjkuODQsMThIMjEuNTFhLjQyLjQyLDAsMCwwLS4zLjEzbC01LjMsNS42NGEuMzkuMzksMCwwLDEtLjI5LjEzSDEzLjE5YS40MS40MSwwLDAsMS0uMzctLjU4bDIuNDctNS4zMkg3LjQ2YS40Mi40MiwwLDAsMS0uMzYtLjIybC0yLjctNUg2LjI0''@;'; put 'put ''YS41My41MywwLDAsMSwuMzkuMThsMS41NiwxLjY5YS4zOC4zOCwwLDAsMCwuMzMuMTRsNi4xOC0uMzgtMi0zLjU1aDIuODlhLjQ3LjQ3LDAsMCwxLC4zMS4xMUwxOS42MywxNGw2LjY5LS4zNWEyLjQ0LDIuNDQsMCwwLDEsMS44MS42M2wyLjQ3LDIuMjNBLjkyLjkyLDAsMCwxLDI5Ljg0LDE4''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxMLlRyYXZlbFNoYXBlcz17dHJ1Y2s6TC5DbHJTaGFwZVRydWNrLGFpcnBsYW5lOkwuQ2xyU2hhcGVBaXJwbGFuZSxjYXI6TC5DbHJTaGFwZUNhcixtYXA6TC5DbHJTaGFwZU1hcCxjb21wYXNzOkwuQ2xy''@;'; put 'put ''U2hhcGVDb21wYXNzLCJtYXAtbWFya2VyIjpMLkNsclNoYXBlTWFwTWFya2VyLGJpY3ljbGU6TC5DbHJTaGFwZUJpY3ljbGUsYm9hdDpMLkNsclNoYXBlQm9hdCxjYW1wZXJ2YW46TC5DbHJTaGFwZUNhbXBlcnZhbixjYXJhdmFuOkwuQ2xyU2hhcGVDYXJhdmFuLGZlcnJ5OkwuQ2xyU2hhcGVG''@;'; put 'put ''ZXJyeSx0cmFpbGVyOkwuQ2xyU2hhcGVUcmFpbGVyLCJvbi1ob2xpZGF5IjpMLkNsclNoYXBlT25Ib2xpZGF5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5UcmF2ZWxTaGFwZXMsInBsYW5lIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVHJhdmVsU2hhcGVzLmFpcnBsYW5lKSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KEwuVHJhdmVsU2hhcGVzLCJhdXRvIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVHJhdmVsU2hhcGVzLmNhcikpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUlj''@;'; put 'put ''b25zLmFkZChMLlRyYXZlbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyI6ZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWc9dm9pZCAwLEwuZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlvbiBCKEUpe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpFfX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyI6ZnVuY3Rp''@;'; put 'put ''b24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLmNsckljb25TVkc9dm9pZCAwO0wuY2xySWNvblNWRz1mdW5jdGlvbiBVKFEpe3ZhciBaPSIiO3JldHVybiBRLmluZGV4T2YoIi0tYmFkZ2VkIik+LTEmJiha''@;'; put 'put ''Kz0iY2FuLWJhZGdlICIpLFEuaW5kZXhPZigiLS1hbGVydGVkIik+LTEmJihaKz0iY2FuLWFsZXJ0ICIpLFEuaW5kZXhPZigiY2xyLWktc29saWQiKT4tMSYmKForPSJoYXMtc29saWQgIiksKFo/JzxzdmcgdmVyc2lvbj0iMS4xIiBjbGFzcz0iJytaKyciIHZpZXdCb3g9IjAgMCAzNiAzNiIg''@;'; put 'put ''cHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6JzxzdmcgdmVyc2lvbj0i''@;'; put 'put ''MS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9s''@;'; put 'put ''ZT0iaW1nIj4nKStRKyI8L3N2Zz4ifX19KX0sMjM0MTc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT17fTtMLnIoZ2UpLEwuZChnZSx7Y2FuY2VsQW5pbWF0aW9uRnJhbWU6KCk9PmV6LGdldENvbXBhcmlzb25GdW5jdGlvbjooKT0+VmJlLGhhc0NhcHRpb25Qcm9ibGVtOigpPT5p''@;'; put 'put ''M2UsaXNDbGFzc0xpc3RTdXBwb3J0ZWQ6KCk9PkZiZSxpc0dldENvbXB1dGVkU3R5bGVTdXBwb3J0ZWQ6KCk9Pk5iZSxpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZDooKT0+amJlLGlzVGV4dENvbnRlbnRTdXBwb3J0ZWQ6KCk9PkhiZSxpc1RvdWNoU3VwcG9ydGVkOigpPT5uM2UscmVxdWVzdEFu''@;'; put 'put ''aW1hdGlvbkZyYW1lOigpPT50M2V9KTt2YXIgQj17fTtMLnIoQiksTC5kKEIse2FycmF5QXZnOigpPT5HWmUsYXJyYXlFYWNoOigpPT5HcixhcnJheUZpbHRlcjooKT0+ZDQsYXJyYXlGbGF0dGVuOigpPT5HYmUsYXJyYXlNYXA6KCk9PlRsLGFycmF5TWF4OigpPT5aWmUsYXJyYXlNaW46KCk9''@;'; put 'put ''PnpaZSxhcnJheVJlZHVjZTooKT0+RXUsYXJyYXlTdW06KCk9PnpiZSxhcnJheVVuaXF1ZTooKT0+YTNlLGV4dGVuZEFycmF5OigpPT5vM2UsZ2V0RGlmZmVyZW5jZU9mQXJyYXlzOigpPT5sM2UsZ2V0SW50ZXJzZWN0aW9uT2ZBcnJheXM6KCk9PldaZSxnZXRVbmlvbk9mQXJyYXlzOigpPT5Z''@;'; put 'put ''WmUscGl2b3Q6KCk9Pm56LHN0cmluZ1RvQXJyYXk6KCk9PnMzZSx0bzJkQXJyYXk6KCk9PlpiZX0pO3ZhciBFPXt9O0wucihFKSxMLmQoRSx7Y2xvbmU6KCk9PnMzLGNyZWF0ZU9iamVjdFByb3BMaXN0ZW5lcjooKT0+RlMsZGVlcENsb25lOigpPT5BaCxkZWVwRXh0ZW5kOigpPT5yeixkZWVw''@;'; put 'put ''T2JqZWN0U2l6ZTooKT0+S3EsZGVmaW5lR2V0dGVyOigpPT5NZyxkdWNrU2NoZW1hOigpPT5DTyxleHRlbmQ6KCk9PlIxLGdldFByb3BlcnR5OigpPT5ZYmUsaGFzT3duUHJvcGVydHk6KCk9PnMxLGluaGVyaXQ6KCk9Pkl2LGlzT2JqZWN0OigpPT5BbCxpc09iamVjdEVxdWFsOigpPT51M2Us''@;'; put 'put ''bWl4aW46KCk9PkkyLG9iamVjdEVhY2g6KCk9PlpsLHNldFByb3BlcnR5OigpPT5YcX0pO3ZhciBNZT17fTtMLnIoTWUpLEwuZChNZSx7aXNDaHJvbWU6KCk9PkpiZSxpc0Nocm9tZVdlYktpdDooKT0+WGJlLGlzRWRnZTooKT0+cWJlLGlzRWRnZVdlYktpdDooKT0+VVplLGlzRmlyZWZveDoo''@;'; put 'put ''KT0+JHEsaXNGaXJlZm94V2ViS2l0OigpPT5LYmUsaXNJRTooKT0+ZV9lLGlzSUU5OigpPT50X2UsaXNJT1M6KCk9PmMzZSxpc0lwYWRPUzooKT0+ZjNlLGlzTGludXhPUzooKT0+SlplLGlzTVNCcm93c2VyOigpPT5RWmUsaXNNYWNPUzooKT0+cXEsaXNNb2JpbGVCcm93c2VyOigpPT5tOCxp''@;'; put 'put ''c1NhZmFyaTooKT0+JGJlLGlzV2luZG93c09TOigpPT5oM2Usc2V0QnJvd3Nlck1ldGE6KCk9PlViZSxzZXRQbGF0Zm9ybU1ldGE6KCk9PlFiZX0pO3ZhciBVPXt9O0wucihVKSxMLmQoVSx7X2luamVjdFByb2R1Y3RJbmZvOigpPT5kX2UsaXNEZWZpbmVkOigpPT5Fbyxpc0VtcHR5OigpPT5k''@;'; put 'put ''Yyxpc1JlZ0V4cDooKT0+c19lLGlzVW5kZWZpbmVkOigpPT51MSxzdHJpbmdpZnk6KCk9PnExfSk7dmFyIFE9e307TC5yKFEpLEwuZChRLHtlcXVhbHNJZ25vcmVDYXNlOigpPT5lemUsaXNQZXJjZW50VmFsdWU6KCk9Pm0zZSxyYW5kb21TdHJpbmc6KCk9PmczZSxzYW5pdGl6ZTooKT0+dGVl''@;'; put 'put ''LHN0cmlwVGFnczooKT0+QTNlLHN1YnN0aXR1dGU6KCk9PnYzZSx0b1VwcGVyQ2FzZUZpcnN0OigpPT50ZH0pO3ZhciBaPXt9O0wucihaKSxMLmQoWix7SFRNTF9DSEFSQUNURVJTOigpPT55X2UsYWRkQ2xhc3M6KCk9PlAwLGFkZEV2ZW50OigpPT5semUsY2xlYXJUZXh0U2VsZWN0aW9uOigp''@;'; put 'put ''PT5FM2UsY2xvc2VzdDooKT0+RHYsY2xvc2VzdERvd246KCk9Pmx6LGVtcHR5OigpPT5DcCxmYXN0SW5uZXJIVE1MOigpPT5PdyxmYXN0SW5uZXJUZXh0OigpPT5SdyxnZXRDYXJldFBvc2l0aW9uOigpPT5NM2UsZ2V0Q29tcHV0ZWRTdHlsZTooKT0+QncsZ2V0Q3NzVHJhbnNmb3JtOigpPT5j''@;'; put 'put ''emUsZ2V0RnJhbWVFbGVtZW50OigpPT5tX2UsZ2V0UGFyZW50OigpPT5nX2UsZ2V0UGFyZW50V2luZG93OigpPT53M2UsZ2V0U2Nyb2xsTGVmdDooKT0+cmVlLGdldFNjcm9sbFRvcDooKT0+c3osZ2V0U2Nyb2xsYWJsZUVsZW1lbnQ6KCk9PnV6LGdldFNjcm9sbGJhcldpZHRoOigpPT5QYyxn''@;'; put 'put ''ZXRTZWxlY3Rpb25FbmRQb3NpdGlvbjooKT0+d19lLGdldFNlbGVjdGlvblRleHQ6KCk9PmJfZSxnZXRTdHlsZTooKT0+aWVlLGdldFRyaW1taW5nQ29udGFpbmVyOigpPT54TyxnZXRXaW5kb3dTY3JvbGxMZWZ0OigpPT5IUyxnZXRXaW5kb3dTY3JvbGxUb3A6KCk9PkVPLGhhc0FjY2Vzc1Rv''@;'; put 'put ''UGFyZW50V2luZG93OigpPT5vemUsaGFzQ2xhc3M6KCk9PlhhLGhhc0hvcml6b250YWxTY3JvbGxiYXI6KCk9PmtfZSxoYXNWZXJ0aWNhbFNjcm9sbGJhcjooKT0+Q19lLGluZGV4OigpPT52X2UsaW5uZXJIZWlnaHQ6KCk9Pkx2LGlubmVyV2lkdGg6KCk9PmN6LGlzQ2hpbGRPZjooKT0+RHcs''@;'; put 'put ''aXNEZXRhY2hlZDooKT0+STNlLGlzSW5wdXQ6KCk9PmR6LGlzT3V0c2lkZUlucHV0OigpPT5UM2UsaXNWaXNpYmxlOigpPT5NTyxtYXRjaGVzQ1NTUnVsZXM6KCk9PmF6ZSxvZmZzZXQ6KCk9Pnp1LG91dGVySGVpZ2h0OigpPT5CMSxvdXRlcldpZHRoOigpPT53MixvdmVybGF5Q29udGFpbnNF''@;'; put 'put ''bGVtZW50OigpPT5MdyxyZW1vdmVDbGFzczooKT0+dWwscmVtb3ZlRXZlbnQ6KCk9PnN6ZSxyZW1vdmVUZXh0Tm9kZXM6KCk9PlMzZSxyZXNldENzc1RyYW5zZm9ybTooKT0+aHosc2VsZWN0RWxlbWVudElmQWxsb3dlZDooKT0+U19lLHNldENhcmV0UG9zaXRpb246KCk9PmZ6LHNldE92ZXJs''@;'; put 'put ''YXlQb3NpdGlvbjooKT0+b2VlfSk7dmFyIGllPXt9O0wucihpZSksTC5kKGllLHtjdXJyeTooKT0+RV9lLGN1cnJ5UmlnaHQ6KCk9PmR6ZSxkZWJvdW5jZTooKT0+RDNlLGZhc3RDYWxsOigpPT5hZWUsaXNGdW5jdGlvbjooKT0+VTIscGFydGlhbDooKT0+TDNlLHBpcGU6KCk9Pmh6ZSx0aHJv''@;'; put 'put ''dHRsZTooKT0+TV9lLHRocm90dGxlQWZ0ZXJIaXRzOigpPT5memV9KTt2YXIgbGU9e307TC5yKGxlKSxMLmQobGUse0tFWV9DT0RFUzooKT0+WW8saXNDdHJsS2V5OigpPT5nemUsaXNDdHJsTWV0YUtleTooKT0+VF9lLGlzRnVuY3Rpb25LZXk6KCk9Pk8zZSxpc0tleTooKT0+VE8saXNQcmlu''@;'; put 'put ''dGFibGVDaGFyOigpPT54X2V9KTt2YXIgWT17fTtMLnIoWSksTC5kKFkse2lzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOigpPT5OUyxpc0xlZnRDbGljazooKT0+bGVlLGlzUmlnaHRDbGljazooKT0+UHcsc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOigpPT52OH0pO3ZhciBXPXt9O0wu''@;'; put 'put ''cihXKSxMLmQoVyx7X2RhdGFUb0hUTUw6KCk9PkczZSxodG1sVG9HcmlkU2V0dGluZ3M6KCk9PnpfZSxpbnN0YW5jZVRvSFRNTDooKT0+ejNlfSk7dmFyIE49e307TC5yKE4pLEwuZChOLHtpc051bWVyaWM6KCk9Pmc0LGlzTnVtZXJpY0xpa2U6KCk9PkdfZSxyYW5nZUVhY2g6KCk9PnJhLHJh''@;'; put 'put ''bmdlRWFjaFJldmVyc2U6KCk9PmNlZSx2YWx1ZUFjY29yZGluZ1BlcmNlbnQ6KCk9PlUzZX0pO3ZhciBlZT17fTtMLnIoZWUpLEwuZChlZSx7Y2VsbE1ldGhvZExvb2t1cEZhY3Rvcnk6KCk9Pmt6LGNvdW50Rmlyc3RSb3dLZXlzOigpPT5hNGUsY3JlYXRlRW1wdHlTcHJlYWRzaGVldERhdGE6''@;'; put 'put ''KCk9PkhKZSxjcmVhdGVTcHJlYWRzaGVldERhdGE6KCk9PlBKZSxjcmVhdGVTcHJlYWRzaGVldE9iamVjdERhdGE6KCk9PkZKZSxkYXRhUm93VG9DaGFuZ2VzQXJyYXk6KCk9Pm80ZSxpc0FycmF5T2ZBcnJheXM6KCk9PlRrZSxpc0FycmF5T2ZPYmplY3RzOigpPT5Ja2Usc3ByZWFkc2hlZXRD''@;'; put 'put ''b2x1bW5JbmRleDooKT0+QkplLHNwcmVhZHNoZWV0Q29sdW1uTGFiZWw6KCk9PldlZX0pO3ZhciBxPXt9O0wucihxKSxMLmQocSx7Q09OVEVYVE1FTlVfSVRFTVNfQUREX0NPTU1FTlQ6KCk9PiQ0ZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlQ6KCk9Pm5wZSxDT05URVhUTUVOVV9JVEVN''@;'; put 'put ''U19BTElHTk1FTlRfQk9UVE9NOigpPT51cGUsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX0NFTlRFUjooKT0+aXBlLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9KVVNUSUZZOigpPT5hcGUsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX0xFRlQ6KCk9PnJwZSxDT05URVhUTUVO''@;'; put 'put ''VV9JVEVNU19BTElHTk1FTlRfTUlERExFOigpPT5zcGUsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX1JJR0hUOigpPT5vcGUsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX1RPUDooKT0+bHBlLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlM6KCk9PmNwZSxDT05URVhUTUVOVV9JVEVN''@;'; put 'put ''U19CT1JERVJTX0JPVFRPTTooKT0+ZHBlLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlNfTEVGVDooKT0+cHBlLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlNfUklHSFQ6KCk9PmhwZSxDT05URVhUTUVOVV9JVEVNU19CT1JERVJTX1RPUDooKT0+ZnBlLENPTlRFWFRNRU5VX0lURU1TX0NMRUFS''@;'; put 'put ''X0NPTFVNTjooKT0+VzRlLENPTlRFWFRNRU5VX0lURU1TX0NPUFk6KCk9Plk0ZSxDT05URVhUTUVOVV9JVEVNU19DVVQ6KCk9PlU0ZSxDT05URVhUTUVOVV9JVEVNU19FRElUX0NPTU1FTlQ6KCk9PnE0ZSxDT05URVhUTUVOVV9JVEVNU19GUkVFWkVfQ09MVU1OOigpPT5RNGUsQ09OVEVYVE1F''@;'; put 'put ''TlVfSVRFTVNfSElERV9DT0xVTU46KCk9PkFwZSxDT05URVhUTUVOVV9JVEVNU19ISURFX1JPVzooKT0+d3BlLENPTlRFWFRNRU5VX0lURU1TX0lOU0VSVF9MRUZUOigpPT5INGUsQ09OVEVYVE1FTlVfSVRFTVNfSU5TRVJUX1JJR0hUOigpPT5ONGUsQ09OVEVYVE1FTlVfSVRFTVNfTUVSR0Vf''@;'; put 'put ''Q0VMTFM6KCk9Plg0ZSxDT05URVhUTUVOVV9JVEVNU19ORVNURURfUk9XU19ERVRBQ0hfQ0hJTEQ6KCk9PnZwZSxDT05URVhUTUVOVV9JVEVNU19ORVNURURfUk9XU19JTlNFUlRfQ0hJTEQ6KCk9Pm1wZSxDT05URVhUTUVOVV9JVEVNU19OT19JVEVNUzooKT0+QjRlLENPTlRFWFRNRU5VX0lU''@;'; put 'put ''RU1TX1JFQURfT05MWTooKT0+RzRlLENPTlRFWFRNRU5VX0lURU1TX1JFQURfT05MWV9DT01NRU5UOigpPT50cGUsQ09OVEVYVE1FTlVfSVRFTVNfUkVETzooKT0+ejRlLENPTlRFWFRNRU5VX0lURU1TX1JFTU9WRV9CT1JERVJTOigpPT5ncGUsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0NP''@;'; put 'put ''TFVNTjooKT0+ajRlLENPTlRFWFRNRU5VX0lURU1TX1JFTU9WRV9DT01NRU5UOigpPT5lcGUsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX1JPVzooKT0+VjRlLENPTlRFWFRNRU5VX0lURU1TX1JPV19BQk9WRTooKT0+UDRlLENPTlRFWFRNRU5VX0lURU1TX1JPV19CRUxPVzooKT0+RjRlLENP''@;'; put 'put ''TlRFWFRNRU5VX0lURU1TX1NIT1dfQ09MVU1OOigpPT55cGUsQ09OVEVYVE1FTlVfSVRFTVNfU0hPV19ST1c6KCk9PmJwZSxDT05URVhUTUVOVV9JVEVNU19VTkRPOigpPT5aNGUsQ09OVEVYVE1FTlVfSVRFTVNfVU5GUkVFWkVfQ09MVU1OOigpPT5KNGUsQ09OVEVYVE1FTlVfSVRFTVNfVU5N''@;'; put 'put ''RVJHRV9DRUxMUzooKT0+SzRlLENPTlRFWFRfTUVOVV9JVEVNU19OQU1FU1BBQ0U6KCk9PklsLEZJTFRFUlNfQlVUVE9OU19DQU5DRUw6KCk9PlVwZSxGSUxURVJTX0JVVFRPTlNfQ0xFQVI6KCk9PldwZSxGSUxURVJTX0JVVFRPTlNfT0s6KCk9PllwZSxGSUxURVJTX0JVVFRPTlNfUExBQ0VI''@;'; put 'put ''T0xERVJfU0VBUkNIOigpPT5RcGUsRklMVEVSU19CVVRUT05TX1BMQUNFSE9MREVSX1NFQ09ORF9WQUxVRTooKT0+WHBlLEZJTFRFUlNfQlVUVE9OU19QTEFDRUhPTERFUl9WQUxVRTooKT0+SnBlLEZJTFRFUlNfQlVUVE9OU19TRUxFQ1RfQUxMOigpPT5HcGUsRklMVEVSU19DT05ESVRJT05T''@;'; put 'put ''X0FGVEVSOigpPT5QcGUsRklMVEVSU19DT05ESVRJT05TX0JFRk9SRTooKT0+RnBlLEZJTFRFUlNfQ09ORElUSU9OU19CRUdJTlNfV0lUSDooKT0+TXBlLEZJTFRFUlNfQ09ORElUSU9OU19CRVRXRUVOOigpPT5ScGUsRklMVEVSU19DT05ESVRJT05TX0JZX1ZBTFVFOigpPT54S2UsRklMVEVS''@;'; put 'put ''U19DT05ESVRJT05TX0NPTlRBSU5TOigpPT54cGUsRklMVEVSU19DT05ESVRJT05TX0VNUFRZOigpPT5fcGUsRklMVEVSU19DT05ESVRJT05TX0VORFNfV0lUSDooKT0+RXBlLEZJTFRFUlNfQ09ORElUSU9OU19FUVVBTDooKT0+a3BlLEZJTFRFUlNfQ09ORElUSU9OU19HUkVBVEVSX1RIQU46''@;'; put 'put ''KCk9PklwZSxGSUxURVJTX0NPTkRJVElPTlNfR1JFQVRFUl9USEFOX09SX0VRVUFMOigpPT5EcGUsRklMVEVSU19DT05ESVRJT05TX0xFU1NfVEhBTjooKT0+THBlLEZJTFRFUlNfQ09ORElUSU9OU19MRVNTX1RIQU5fT1JfRVFVQUw6KCk9Pk9wZSxGSUxURVJTX0NPTkRJVElPTlNfTkFNRVNQ''@;'; put 'put ''QUNFOigpPT5ldSxGSUxURVJTX0NPTkRJVElPTlNfTk9ORTooKT0+bnRlLEZJTFRFUlNfQ09ORElUSU9OU19OT1RfQkVUV0VFTjooKT0+QnBlLEZJTFRFUlNfQ09ORElUSU9OU19OT1RfQ09OVEFJTjooKT0+VHBlLEZJTFRFUlNfQ09ORElUSU9OU19OT1RfRU1QVFk6KCk9PkNwZSxGSUxURVJT''@;'; put 'put ''X0NPTkRJVElPTlNfTk9UX0VRVUFMOigpPT5TcGUsRklMVEVSU19DT05ESVRJT05TX1RPREFZOigpPT5IcGUsRklMVEVSU19DT05ESVRJT05TX1RPTU9SUk9XOigpPT5OcGUsRklMVEVSU19DT05ESVRJT05TX1lFU1RFUkRBWTooKT0+VnBlLEZJTFRFUlNfRElWU19GSUxURVJfQllfQ09ORElU''@;'; put 'put ''SU9OOigpPT5qcGUsRklMVEVSU19ESVZTX0ZJTFRFUl9CWV9WQUxVRTooKT0+WnBlLEZJTFRFUlNfTEFCRUxTX0NPTkpVTkNUSU9OOigpPT56cGUsRklMVEVSU19MQUJFTFNfRElTSlVOQ1RJT046KCk9PnJ0ZSxGSUxURVJTX05BTUVTUEFDRTooKT0+dTMsRklMVEVSU19WQUxVRVNfQkxBTktf''@;'; put 'put ''Q0VMTFM6KCk9Pml0ZX0pO3ZhciBKPXt9O2Z1bmN0aW9uIHNlKGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkfUwucihKKSxMLmQoSix7Z2V0Tm9ybWFsaXplZERhdGU6KCk9PllNZX0pO2xldCBhZT0hMTtjb25zdCBmZT17UHJvbWlzZTp2b2lkIDAsc2V0IHVzZURlcHJlY2F0ZWRTeW5j''@;'; put 'put ''aHJvbm91c0Vycm9ySGFuZGxpbmcoZCl7aWYoZCl7Y29uc3QgZz1uZXcgRXJyb3I7Y29uc29sZS53YXJuKCJERVBSRUNBVEVEISBSeEpTIHdhcyBzZXQgdG8gdXNlIGRlcHJlY2F0ZWQgc3luY2hyb25vdXMgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3IgYnkgY29kZSBhdDogXG4iK2cuc3RhY2sp''@;'; put 'put ''fWVsc2UgYWUmJmNvbnNvbGUubG9nKCJSeEpTOiBCYWNrIHRvIGEgYmV0dGVyIGVycm9yIGJlaGF2aW9yLiBUaGFuayB5b3UuIDwzIik7YWU9ZH0sZ2V0IHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcoKXtyZXR1cm4gYWV9fTtmdW5jdGlvbiBkZShkKXtzZXRUaW1lb3V0''@;'; put 'put ''KCgpPT57dGhyb3cgZH0sMCl9Y29uc3QgdmU9e2Nsb3NlZDohMCxuZXh0KGQpe30sZXJyb3IoZCl7aWYoZmUudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl0aHJvdyBkO2RlKGQpfSxjb21wbGV0ZSgpe319LEFlPUFycmF5LmlzQXJyYXl8fChkPT5kJiYibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIGQubGVuZ3RoKTtmdW5jdGlvbiBrZShkKXtyZXR1cm4gbnVsbCE9PWQmJiJvYmplY3QiPT10eXBlb2YgZH1jb25zdCBJZT0oKCk9PntmdW5jdGlvbiBkKGcpe3JldHVybiBFcnJvci5jYWxsKHRoaXMpLHRoaXMubWVzc2FnZT1nP2Ake2cubGVuZ3RofSBlcnJvcnMgb2NjdXJyZWQg''@;'; put 'put ''ZHVyaW5nIHVuc3Vic2NyaXB0aW9uOlxuJHtnLm1hcCgoaCx2KT0+YCR7disxfSkgJHtoLnRvU3RyaW5nKCl9YCkuam9pbigiXG4gICIpfWA6IiIsdGhpcy5uYW1lPSJVbnN1YnNjcmlwdGlvbkVycm9yIix0aGlzLmVycm9ycz1nLHRoaXN9cmV0dXJuIGQucHJvdG90eXBlPU9iamVjdC5jcmVh''@;'; put 'put ''dGUoRXJyb3IucHJvdG90eXBlKSxkfSkoKTtjbGFzcyBUZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnRPclBhcmVudHM9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb25zPW51bGwsZyYmKHRoaXMuX2N0b3JVbnN1YnNjcmliZT0hMCx0aGlzLl91bnN1YnNjcmliZT1n''@;'; put 'put ''KX11bnN1YnNjcmliZSgpe2xldCBnO2lmKHRoaXMuY2xvc2VkKXJldHVybjtsZXR7X3BhcmVudE9yUGFyZW50czpoLF9jdG9yVW5zdWJzY3JpYmU6dixfdW5zdWJzY3JpYmU6eSxfc3Vic2NyaXB0aW9uczpDfT10aGlzO2lmKHRoaXMuY2xvc2VkPSEwLHRoaXMuX3BhcmVudE9yUGFyZW50cz1u''@;'; put 'put ''dWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbCxoIGluc3RhbmNlb2YgVGUpaC5yZW1vdmUodGhpcyk7ZWxzZSBpZihudWxsIT09aClmb3IobGV0IEk9MDtJPGgubGVuZ3RoOysrSSloW0ldLnJlbW92ZSh0aGlzKTtpZihzZSh5KSl7diYmKHRoaXMuX3Vuc3Vic2NyaWJlPXZvaWQgMCk7dHJ5''@;'; put 'put ''e3kuY2FsbCh0aGlzKX1jYXRjaChJKXtnPUkgaW5zdGFuY2VvZiBJZT9FZShJLmVycm9ycyk6W0ldfX1pZihBZShDKSl7bGV0IEk9LTEsaj1DLmxlbmd0aDtmb3IoOysrSTxqOyl7Y29uc3QgY2U9Q1tJXTtpZihrZShjZSkpdHJ5e2NlLnVuc3Vic2NyaWJlKCl9Y2F0Y2goX2Upe2c9Z3x8W10s''@;'; put 'put ''X2UgaW5zdGFuY2VvZiBJZT9nPWcuY29uY2F0KEVlKF9lLmVycm9ycykpOmcucHVzaChfZSl9fX1pZihnKXRocm93IG5ldyBJZShnKX1hZGQoZyl7bGV0IGg9ZztpZighZylyZXR1cm4gVGUuRU1QVFk7c3dpdGNoKHR5cGVvZiBnKXtjYXNlImZ1bmN0aW9uIjpoPW5ldyBUZShnKTtjYXNlIm9i''@;'; put 'put ''amVjdCI6aWYoaD09PXRoaXN8fGguY2xvc2VkfHwiZnVuY3Rpb24iIT10eXBlb2YgaC51bnN1YnNjcmliZSlyZXR1cm4gaDtpZih0aGlzLmNsb3NlZClyZXR1cm4gaC51bnN1YnNjcmliZSgpLGg7aWYoIShoIGluc3RhbmNlb2YgVGUpKXtjb25zdCBDPWg7aD1uZXcgVGUsaC5fc3Vic2NyaXB0''@;'; put 'put ''aW9ucz1bQ119YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCB0ZWFyZG93biAiK2crIiBhZGRlZCB0byBTdWJzY3JpcHRpb24uIil9bGV0e19wYXJlbnRPclBhcmVudHM6dn09aDtpZihudWxsPT09diloLl9wYXJlbnRPclBhcmVudHM9dGhpcztlbHNlIGlmKHYg''@;'; put 'put ''aW5zdGFuY2VvZiBUZSl7aWYodj09PXRoaXMpcmV0dXJuIGg7aC5fcGFyZW50T3JQYXJlbnRzPVt2LHRoaXNdfWVsc2V7aWYoLTEhPT12LmluZGV4T2YodGhpcykpcmV0dXJuIGg7di5wdXNoKHRoaXMpfWNvbnN0IHk9dGhpcy5fc3Vic2NyaXB0aW9ucztyZXR1cm4gbnVsbD09PXk/dGhpcy5f''@;'; put 'put ''c3Vic2NyaXB0aW9ucz1baF06eS5wdXNoKGgpLGh9cmVtb3ZlKGcpe2NvbnN0IGg9dGhpcy5fc3Vic2NyaXB0aW9ucztpZihoKXtjb25zdCB2PWguaW5kZXhPZihnKTstMSE9PXYmJmguc3BsaWNlKHYsMSl9fX12YXIgZDtmdW5jdGlvbiBFZShkKXtyZXR1cm4gZC5yZWR1Y2UoKGcsaCk9Pmcu''@;'; put 'put ''Y29uY2F0KGggaW5zdGFuY2VvZiBJZT9oLmVycm9yczpoKSxbXSl9VGUuRU1QVFk9KChkPW5ldyBUZSkuY2xvc2VkPSEwLGQpO2NvbnN0IGhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sKCJyeFN1YnNjcmliZXIiKToiQEByeFN1YnNjcmliZXJfIitNYXRoLnJhbmRvbSgpO2Ns''@;'; put 'put ''YXNzIHogZXh0ZW5kcyBUZXtjb25zdHJ1Y3RvcihnLGgsdil7c3dpdGNoKHN1cGVyKCksdGhpcy5zeW5jRXJyb3JWYWx1ZT1udWxsLHRoaXMuc3luY0Vycm9yVGhyb3duPSExLHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSExLHRoaXMuaXNTdG9wcGVkPSExLGFyZ3VtZW50cy5sZW5ndGgpe2Nh''@;'; put 'put ''c2UgMDp0aGlzLmRlc3RpbmF0aW9uPXZlO2JyZWFrO2Nhc2UgMTppZighZyl7dGhpcy5kZXN0aW5hdGlvbj12ZTticmVha31pZigib2JqZWN0Ij09dHlwZW9mIGcpe2cgaW5zdGFuY2VvZiB6Pyh0aGlzLnN5bmNFcnJvclRocm93YWJsZT1nLnN5bmNFcnJvclRocm93YWJsZSx0aGlzLmRlc3Rp''@;'; put 'put ''bmF0aW9uPWcsZy5hZGQodGhpcykpOih0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9uPW5ldyBuZSh0aGlzLGcpKTticmVha31kZWZhdWx0OnRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IG5lKHRoaXMsZyxoLHYpfX1baGVd''@;'; put 'put ''KCl7cmV0dXJuIHRoaXN9c3RhdGljIGNyZWF0ZShnLGgsdil7Y29uc3QgeT1uZXcgeihnLGgsdik7cmV0dXJuIHkuc3luY0Vycm9yVGhyb3dhYmxlPSExLHl9bmV4dChnKXt0aGlzLmlzU3RvcHBlZHx8dGhpcy5fbmV4dChnKX1lcnJvcihnKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9w''@;'; put 'put ''cGVkPSEwLHRoaXMuX2Vycm9yKGcpKX1jb21wbGV0ZSgpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fY29tcGxldGUoKSl9dW5zdWJzY3JpYmUoKXt0aGlzLmNsb3NlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHN1cGVyLnVuc3Vic2NyaWJlKCkpfV9uZXh0KGcpe3Ro''@;'; put 'put ''aXMuZGVzdGluYXRpb24ubmV4dChnKX1fZXJyb3IoZyl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihnKSx0aGlzLnVuc3Vic2NyaWJlKCl9X2NvbXBsZXRlKCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX1fdW5zdWJzY3JpYmVBbmRSZWN5Y2xlKCl7Y29u''@;'; put 'put ''c3R7X3BhcmVudE9yUGFyZW50czpnfT10aGlzO3JldHVybiB0aGlzLl9wYXJlbnRPclBhcmVudHM9bnVsbCx0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5fcGFyZW50T3JQYXJlbnRzPWcsdGhpc319Y2xhc3MgbmUgZXh0ZW5kcyB6e2Nv''@;'; put 'put ''bnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKCksdGhpcy5fcGFyZW50U3Vic2NyaWJlcj1nO2xldCBDLEk9dGhpcztzZShoKT9DPWg6aCYmKEM9aC5uZXh0LHY9aC5lcnJvcix5PWguY29tcGxldGUsaCE9PXZlJiYoST1PYmplY3QuY3JlYXRlKGgpLHNlKEkudW5zdWJzY3JpYmUpJiZ0aGlzLmFk''@;'; put 'put ''ZChJLnVuc3Vic2NyaWJlLmJpbmQoSSkpLEkudW5zdWJzY3JpYmU9dGhpcy51bnN1YnNjcmliZS5iaW5kKHRoaXMpKSksdGhpcy5fY29udGV4dD1JLHRoaXMuX25leHQ9Qyx0aGlzLl9lcnJvcj12LHRoaXMuX2NvbXBsZXRlPXl9bmV4dChnKXtpZighdGhpcy5pc1N0b3BwZWQmJnRoaXMuX25l''@;'; put 'put ''eHQpe2NvbnN0e19wYXJlbnRTdWJzY3JpYmVyOmh9PXRoaXM7ZmUudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyYmaC5zeW5jRXJyb3JUaHJvd2FibGU/dGhpcy5fX3RyeU9yU2V0RXJyb3IoaCx0aGlzLl9uZXh0LGcpJiZ0aGlzLnVuc3Vic2NyaWJlKCk6dGhpcy5fX3Ry''@;'; put 'put ''eU9yVW5zdWIodGhpcy5fbmV4dCxnKX19ZXJyb3IoZyl7aWYoIXRoaXMuaXNTdG9wcGVkKXtjb25zdHtfcGFyZW50U3Vic2NyaWJlcjpofT10aGlzLHt1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nOnZ9PWZlO2lmKHRoaXMuX2Vycm9yKXYmJmguc3luY0Vycm9yVGhyb3dh''@;'; put 'put ''YmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihoLHRoaXMuX2Vycm9yLGcpLHRoaXMudW5zdWJzY3JpYmUoKSk6KHRoaXMuX190cnlPclVuc3ViKHRoaXMuX2Vycm9yLGcpLHRoaXMudW5zdWJzY3JpYmUoKSk7ZWxzZSBpZihoLnN5bmNFcnJvclRocm93YWJsZSl2PyhoLnN5bmNFcnJvclZhbHVl''@;'; put 'put ''PWcsaC5zeW5jRXJyb3JUaHJvd249ITApOmRlKGcpLHRoaXMudW5zdWJzY3JpYmUoKTtlbHNle2lmKHRoaXMudW5zdWJzY3JpYmUoKSx2KXRocm93IGc7ZGUoZyl9fX1jb21wbGV0ZSgpe2lmKCF0aGlzLmlzU3RvcHBlZCl7Y29uc3R7X3BhcmVudFN1YnNjcmliZXI6Z309dGhpcztpZih0aGlz''@;'; put 'put ''Ll9jb21wbGV0ZSl7Y29uc3QgaD0oKT0+dGhpcy5fY29tcGxldGUuY2FsbCh0aGlzLl9jb250ZXh0KTtmZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZnLnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9yU2V0RXJyb3IoZyxoKSx0aGlzLnVuc3Vic2NyaWJl''@;'; put 'put ''KCkpOih0aGlzLl9fdHJ5T3JVbnN1YihoKSx0aGlzLnVuc3Vic2NyaWJlKCkpfWVsc2UgdGhpcy51bnN1YnNjcmliZSgpfX1fX3RyeU9yVW5zdWIoZyxoKXt0cnl7Zy5jYWxsKHRoaXMuX2NvbnRleHQsaCl9Y2F0Y2godil7aWYodGhpcy51bnN1YnNjcmliZSgpLGZlLnVzZURlcHJlY2F0ZWRT''@;'; put 'put ''eW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpdGhyb3cgdjtkZSh2KX19X190cnlPclNldEVycm9yKGcsaCx2KXtpZighZmUudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl0aHJvdyBuZXcgRXJyb3IoImJhZCBjYWxsIik7dHJ5e2guY2FsbCh0aGlzLl9jb250ZXh0LHYpfWNh''@;'; put 'put ''dGNoKHkpe3JldHVybiBmZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nPyhnLnN5bmNFcnJvclZhbHVlPXksZy5zeW5jRXJyb3JUaHJvd249ITAsITApOihkZSh5KSwhMCl9cmV0dXJuITF9X3Vuc3Vic2NyaWJlKCl7Y29uc3R7X3BhcmVudFN1YnNjcmliZXI6Z309dGhp''@;'; put 'put ''czt0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcGFyZW50U3Vic2NyaWJlcj1udWxsLGcudW5zdWJzY3JpYmUoKX19Y29uc3QgUD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wub2JzZXJ2YWJsZXx8IkBAb2JzZXJ2YWJsZSI7ZnVuY3Rpb24gVihkKXtyZXR1cm4gZH1mdW5jdGlv''@;'; put 'put ''biBTKGQpe3JldHVybiAwPT09ZC5sZW5ndGg/VjoxPT09ZC5sZW5ndGg/ZFswXTpmdW5jdGlvbihoKXtyZXR1cm4gZC5yZWR1Y2UoKHYseSk9PnkodiksaCl9fWxldCBGPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5faXNTY2FsYXI9ITEsaCYmKHRoaXMuX3N1YnNjcmliZT1o''@;'; put 'put ''KX1saWZ0KGgpe2NvbnN0IHY9bmV3IGQ7cmV0dXJuIHYuc291cmNlPXRoaXMsdi5vcGVyYXRvcj1oLHZ9c3Vic2NyaWJlKGgsdix5KXtjb25zdHtvcGVyYXRvcjpDfT10aGlzLEk9ZnVuY3Rpb24geChkLGcsaCl7aWYoZCl7aWYoZCBpbnN0YW5jZW9mIHopcmV0dXJuIGQ7aWYoZFtoZV0pcmV0''@;'; put 'put ''dXJuIGRbaGVdKCl9cmV0dXJuIGR8fGd8fGg/bmV3IHooZCxnLGgpOm5ldyB6KHZlKX0oaCx2LHkpO2lmKEkuYWRkKEM/Qy5jYWxsKEksdGhpcy5zb3VyY2UpOnRoaXMuc291cmNlfHxmZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiYhSS5zeW5jRXJyb3JUaHJvd2Fi''@;'; put 'put ''bGU/dGhpcy5fc3Vic2NyaWJlKEkpOnRoaXMuX3RyeVN1YnNjcmliZShJKSksZmUudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyYmSS5zeW5jRXJyb3JUaHJvd2FibGUmJihJLnN5bmNFcnJvclRocm93YWJsZT0hMSxJLnN5bmNFcnJvclRocm93bikpdGhyb3cgSS5zeW5j''@;'; put 'put ''RXJyb3JWYWx1ZTtyZXR1cm4gSX1fdHJ5U3Vic2NyaWJlKGgpe3RyeXtyZXR1cm4gdGhpcy5fc3Vic2NyaWJlKGgpfWNhdGNoKHYpe2ZlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJihoLnN5bmNFcnJvclRocm93bj0hMCxoLnN5bmNFcnJvclZhbHVlPXYpLGZ1bmN0''@;'; put 'put ''aW9uIHRlKGQpe2Zvcig7ZDspe2NvbnN0e2Nsb3NlZDpnLGRlc3RpbmF0aW9uOmgsaXNTdG9wcGVkOnZ9PWQ7aWYoZ3x8dilyZXR1cm4hMTtkPWgmJmggaW5zdGFuY2VvZiB6P2g6bnVsbH1yZXR1cm4hMH0oaCk/aC5lcnJvcih2KTpjb25zb2xlLndhcm4odil9fWZvckVhY2goaCx2KXtyZXR1''@;'; put 'put ''cm4gbmV3KHY9eWUodikpKCh5LEMpPT57bGV0IEk7ST10aGlzLnN1YnNjcmliZShqPT57dHJ5e2goail9Y2F0Y2goY2Upe0MoY2UpLEkmJkkudW5zdWJzY3JpYmUoKX19LEMseSl9KX1fc3Vic2NyaWJlKGgpe2NvbnN0e3NvdXJjZTp2fT10aGlzO3JldHVybiB2JiZ2LnN1YnNjcmliZShoKX1b''@;'; put 'put ''UF0oKXtyZXR1cm4gdGhpc31waXBlKC4uLmgpe3JldHVybiAwPT09aC5sZW5ndGg/dGhpczpTKGgpKHRoaXMpfXRvUHJvbWlzZShoKXtyZXR1cm4gbmV3KGg9eWUoaCkpKCh2LHkpPT57bGV0IEM7dGhpcy5zdWJzY3JpYmUoST0+Qz1JLEk9PnkoSSksKCk9PnYoQykpfSl9fXJldHVybiBkLmNy''@;'; put 'put ''ZWF0ZT1nPT5uZXcgZChnKSxkfSkoKTtmdW5jdGlvbiB5ZShkKXtpZihkfHwoZD1mZS5Qcm9taXNlfHxQcm9taXNlKSwhZCl0aHJvdyBuZXcgRXJyb3IoIm5vIFByb21pc2UgaW1wbCBmb3VuZCIpO3JldHVybiBkfWNvbnN0IERlPSgoKT0+e2Z1bmN0aW9uIGQoKXtyZXR1cm4gRXJyb3IuY2Fs''@;'; put 'put ''bCh0aGlzKSx0aGlzLm1lc3NhZ2U9Im9iamVjdCB1bnN1YnNjcmliZWQiLHRoaXMubmFtZT0iT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLHRoaXN9cmV0dXJuIGQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxkfSkoKTtjbGFzcyBQZSBleHRlbmRzIFRle2NvbnN0''@;'; put 'put ''cnVjdG9yKGcsaCl7c3VwZXIoKSx0aGlzLnN1YmplY3Q9Zyx0aGlzLnN1YnNjcmliZXI9aCx0aGlzLmNsb3NlZD0hMX11bnN1YnNjcmliZSgpe2lmKHRoaXMuY2xvc2VkKXJldHVybjt0aGlzLmNsb3NlZD0hMDtjb25zdCBnPXRoaXMuc3ViamVjdCxoPWcub2JzZXJ2ZXJzO2lmKHRoaXMuc3Vi''@;'; put 'put ''amVjdD1udWxsLCFofHwwPT09aC5sZW5ndGh8fGcuaXNTdG9wcGVkfHxnLmNsb3NlZClyZXR1cm47Y29uc3Qgdj1oLmluZGV4T2YodGhpcy5zdWJzY3JpYmVyKTstMSE9PXYmJmguc3BsaWNlKHYsMSl9fWNsYXNzIFFlIGV4dGVuZHMgentjb25zdHJ1Y3RvcihnKXtzdXBlcihnKSx0aGlzLmRl''@;'; put 'put ''c3RpbmF0aW9uPWd9fWxldCAkZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgRntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5vYnNlcnZlcnM9W10sdGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0aGlzLnRocm93bkVycm9yPW51bGx9W2hlXSgpe3Jl''@;'; put 'put ''dHVybiBuZXcgUWUodGhpcyl9bGlmdChoKXtjb25zdCB2PW5ldyBndCh0aGlzLHRoaXMpO3JldHVybiB2Lm9wZXJhdG9yPWgsdn1uZXh0KGgpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBEZTtpZighdGhpcy5pc1N0b3BwZWQpe2NvbnN0e29ic2VydmVyczp2fT10aGlzLHk9di5sZW5ndGgs''@;'; put 'put ''Qz12LnNsaWNlKCk7Zm9yKGxldCBJPTA7STx5O0krKylDW0ldLm5leHQoaCl9fWVycm9yKGgpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBEZTt0aGlzLmhhc0Vycm9yPSEwLHRoaXMudGhyb3duRXJyb3I9aCx0aGlzLmlzU3RvcHBlZD0hMDtjb25zdHtvYnNlcnZlcnM6dn09dGhpcyx5PXYu''@;'; put 'put ''bGVuZ3RoLEM9di5zbGljZSgpO2ZvcihsZXQgST0wO0k8eTtJKyspQ1tJXS5lcnJvcihoKTt0aGlzLm9ic2VydmVycy5sZW5ndGg9MH1jb21wbGV0ZSgpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBEZTt0aGlzLmlzU3RvcHBlZD0hMDtjb25zdHtvYnNlcnZlcnM6aH09dGhpcyx2PWgubGVu''@;'; put 'put ''Z3RoLHk9aC5zbGljZSgpO2ZvcihsZXQgQz0wO0M8djtDKyspeVtDXS5jb21wbGV0ZSgpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfXVuc3Vic2NyaWJlKCl7dGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNlcnZlcnM9bnVsbH1fdHJ5U3Vic2NyaWJlKGgpe2lmKHRo''@;'; put 'put ''aXMuY2xvc2VkKXRocm93IG5ldyBEZTtyZXR1cm4gc3VwZXIuX3RyeVN1YnNjcmliZShoKX1fc3Vic2NyaWJlKGgpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBEZTtyZXR1cm4gdGhpcy5oYXNFcnJvcj8oaC5lcnJvcih0aGlzLnRocm93bkVycm9yKSxUZS5FTVBUWSk6dGhpcy5pc1N0b3Bw''@;'; put 'put ''ZWQ/KGguY29tcGxldGUoKSxUZS5FTVBUWSk6KHRoaXMub2JzZXJ2ZXJzLnB1c2goaCksbmV3IFBlKHRoaXMsaCkpfWFzT2JzZXJ2YWJsZSgpe2NvbnN0IGg9bmV3IEY7cmV0dXJuIGguc291cmNlPXRoaXMsaH19cmV0dXJuIGQuY3JlYXRlPShnLGgpPT5uZXcgZ3QoZyxoKSxkfSkoKTtjbGFz''@;'; put 'put ''cyBndCBleHRlbmRzICRle2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoKSx0aGlzLmRlc3RpbmF0aW9uPWcsdGhpcy5zb3VyY2U9aH1uZXh0KGcpe2NvbnN0e2Rlc3RpbmF0aW9uOmh9PXRoaXM7aCYmaC5uZXh0JiZoLm5leHQoZyl9ZXJyb3IoZyl7Y29uc3R7ZGVzdGluYXRpb246aH09dGhpczto''@;'; put 'put ''JiZoLmVycm9yJiZ0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGcpfWNvbXBsZXRlKCl7Y29uc3R7ZGVzdGluYXRpb246Z309dGhpcztnJiZnLmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9X3N1YnNjcmliZShnKXtjb25zdHtzb3VyY2U6aH09dGhpcztyZXR1cm4gaD90aGlz''@;'; put 'put ''LnNvdXJjZS5zdWJzY3JpYmUoZyk6VGUuRU1QVFl9fWZ1bmN0aW9uIHl0KGQpe3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5zY2hlZHVsZX1mdW5jdGlvbiBwdChkLGcpe3JldHVybiBmdW5jdGlvbih2KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZCl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJhcmd1bWVudCBpcyBub3QgYSBmdW5jdGlvbi4gQXJlIHlvdSBsb29raW5nIGZvciBgbWFwVG8oKWA/Iik7cmV0dXJuIHYubGlmdChuZXcgbXQoZCxnKSl9fWNsYXNzIG10e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5wcm9qZWN0PWcsdGhpcy50aGlzQXJnPWh9Y2FsbChnLGgpe3JldHVybiBo''@;'; put 'put ''LnN1YnNjcmliZShuZXcgdnQoZyx0aGlzLnByb2plY3QsdGhpcy50aGlzQXJnKSl9fWNsYXNzIHZ0IGV4dGVuZHMgentjb25zdHJ1Y3RvcihnLGgsdil7c3VwZXIoZyksdGhpcy5wcm9qZWN0PWgsdGhpcy5jb3VudD0wLHRoaXMudGhpc0FyZz12fHx0aGlzfV9uZXh0KGcpe2xldCBoO3RyeXto''@;'; put 'put ''PXRoaXMucHJvamVjdC5jYWxsKHRoaXMudGhpc0FyZyxnLHRoaXMuY291bnQrKyl9Y2F0Y2godil7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih2KX10aGlzLmRlc3RpbmF0aW9uLm5leHQoaCl9fWNvbnN0IGZ0PWQ9Pmc9Pntmb3IobGV0IGg9MCx2PWQubGVuZ3RoO2g8diYm''@;'; put 'put ''IWcuY2xvc2VkO2grKylnLm5leHQoZFtoXSk7Zy5jb21wbGV0ZSgpfSxfdD1mdW5jdGlvbiBvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifSgpLFJ0PWQ9PmQmJiJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''ZC5sZW5ndGgmJiJmdW5jdGlvbiIhPXR5cGVvZiBkO2Z1bmN0aW9uIEN0KGQpe3JldHVybiEhZCYmImZ1bmN0aW9uIiE9dHlwZW9mIGQuc3Vic2NyaWJlJiYiZnVuY3Rpb24iPT10eXBlb2YgZC50aGVufWNvbnN0IGN0PWQ9PntpZihkJiYiZnVuY3Rpb24iPT10eXBlb2YgZFtQXSlyZXR1cm4o''@;'; put 'put ''ZD0+Zz0+e2NvbnN0IGg9ZFtQXSgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBoLnN1YnNjcmliZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZSIpO3JldHVybiBoLnN1YnNjcmliZShnKX0p''@;'; put 'put ''KGQpO2lmKFJ0KGQpKXJldHVybiBmdChkKTtpZihDdChkKSlyZXR1cm4oZD0+Zz0+KGQudGhlbihoPT57Zy5jbG9zZWR8fChnLm5leHQoaCksZy5jb21wbGV0ZSgpKX0saD0+Zy5lcnJvcihoKSkudGhlbihudWxsLGRlKSxnKSkoZCk7aWYoZCYmImZ1bmN0aW9uIj09dHlwZW9mIGRbX3RdKXJl''@;'; put 'put ''dHVybihkPT5nPT57Y29uc3QgaD1kW190XSgpO2Zvcig7Oyl7bGV0IHY7dHJ5e3Y9aC5uZXh0KCl9Y2F0Y2goeSl7cmV0dXJuIGcuZXJyb3IoeSksZ31pZih2LmRvbmUpe2cuY29tcGxldGUoKTticmVha31pZihnLm5leHQodi52YWx1ZSksZy5jbG9zZWQpYnJlYWt9cmV0dXJuImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIGgucmV0dXJuJiZnLmFkZCgoKT0+e2gucmV0dXJuJiZoLnJldHVybigpfSksZ30pKGQpO3tjb25zdCBoPWBZb3UgcHJvdmlkZWQgJHtrZShkKT8iYW4gaW52YWxpZCBvYmplY3QiOmAnJHtkfSdgfSB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4gcHJvdmlk''@;'; put 'put ''ZSBhbiBPYnNlcnZhYmxlLCBQcm9taXNlLCBBcnJheSwgb3IgSXRlcmFibGUuYDt0aHJvdyBuZXcgVHlwZUVycm9yKGgpfX07ZnVuY3Rpb24gWWUoZCxnKXtyZXR1cm4gbmV3IEYoaD0+e2NvbnN0IHY9bmV3IFRlO2xldCB5PTA7cmV0dXJuIHYuYWRkKGcuc2NoZWR1bGUoZnVuY3Rpb24oKXt5''@;'; put 'put ''IT09ZC5sZW5ndGg/KGgubmV4dChkW3krK10pLGguY2xvc2VkfHx2LmFkZCh0aGlzLnNjaGVkdWxlKCkpKTpoLmNvbXBsZXRlKCl9KSksdn0pfWZ1bmN0aW9uIHBuKGQsZyl7cmV0dXJuIGc/ZnVuY3Rpb24gbW4oZCxnKXtpZihudWxsIT1kKXtpZihmdW5jdGlvbiBqdChkKXtyZXR1cm4gZCYm''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGRbUF19KGQpKXJldHVybiBmdW5jdGlvbiBOdChkLGcpe3JldHVybiBuZXcgRihoPT57Y29uc3Qgdj1uZXcgVGU7cmV0dXJuIHYuYWRkKGcuc2NoZWR1bGUoKCk9Pntjb25zdCB5PWRbUF0oKTt2LmFkZCh5LnN1YnNjcmliZSh7bmV4dChDKXt2LmFkZChnLnNj''@;'; put 'put ''aGVkdWxlKCgpPT5oLm5leHQoQykpKX0sZXJyb3IoQyl7di5hZGQoZy5zY2hlZHVsZSgoKT0+aC5lcnJvcihDKSkpfSxjb21wbGV0ZSgpe3YuYWRkKGcuc2NoZWR1bGUoKCk9PmguY29tcGxldGUoKSkpfX0pKX0pKSx2fSl9KGQsZyk7aWYoQ3QoZCkpcmV0dXJuIGZ1bmN0aW9uIHplKGQsZyl7''@;'; put 'put ''cmV0dXJuIG5ldyBGKGg9Pntjb25zdCB2PW5ldyBUZTtyZXR1cm4gdi5hZGQoZy5zY2hlZHVsZSgoKT0+ZC50aGVuKHk9Pnt2LmFkZChnLnNjaGVkdWxlKCgpPT57aC5uZXh0KHkpLHYuYWRkKGcuc2NoZWR1bGUoKCk9PmguY29tcGxldGUoKSkpfSkpfSx5PT57di5hZGQoZy5zY2hlZHVsZSgo''@;'; put 'put ''KT0+aC5lcnJvcih5KSkpfSkpKSx2fSl9KGQsZyk7aWYoUnQoZCkpcmV0dXJuIFllKGQsZyk7aWYoZnVuY3Rpb24gSnQoZCl7cmV0dXJuIGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkW190XX0oZCl8fCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gZnVuY3Rpb24gQXQoZCxnKXtpZighZCl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIkl0ZXJhYmxlIGNhbm5vdCBiZSBudWxsIik7cmV0dXJuIG5ldyBGKGg9Pntjb25zdCB2PW5ldyBUZTtsZXQgeTtyZXR1cm4gdi5hZGQoKCk9Pnt5JiYiZnVuY3Rpb24iPT10eXBlb2YgeS5yZXR1cm4mJnkucmV0dXJuKCl9KSx2LmFkZChnLnNjaGVkdWxlKCgpPT57eT1k''@;'; put 'put ''W190XSgpLHYuYWRkKGcuc2NoZWR1bGUoZnVuY3Rpb24oKXtpZihoLmNsb3NlZClyZXR1cm47bGV0IEMsSTt0cnl7Y29uc3Qgaj15Lm5leHQoKTtDPWoudmFsdWUsST1qLmRvbmV9Y2F0Y2goail7cmV0dXJuIHZvaWQgaC5lcnJvcihqKX1JP2guY29tcGxldGUoKTooaC5uZXh0KEMpLHRoaXMu''@;'; put 'put ''c2NoZWR1bGUoKSl9KSl9KSksdn0pfShkLGcpfXRocm93IG5ldyBUeXBlRXJyb3IoKG51bGwhPT1kJiZ0eXBlb2YgZHx8ZCkrIiBpcyBub3Qgb2JzZXJ2YWJsZSIpfShkLGcpOmQgaW5zdGFuY2VvZiBGP2Q6bmV3IEYoY3QoZCkpfWNsYXNzIGJuIGV4dGVuZHMgentjb25zdHJ1Y3RvcihnKXtz''@;'; put 'put ''dXBlcigpLHRoaXMucGFyZW50PWd9X25leHQoZyl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dChnKX1fZXJyb3IoZyl7dGhpcy5wYXJlbnQubm90aWZ5RXJyb3IoZyksdGhpcy51bnN1YnNjcmliZSgpfV9jb21wbGV0ZSgpe3RoaXMucGFyZW50Lm5vdGlmeUNvbXBsZXRlKCksdGhpcy51bnN1YnNj''@;'; put 'put ''cmliZSgpfX1jbGFzcyBObiBleHRlbmRzIHp7bm90aWZ5TmV4dChnKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZyl9bm90aWZ5RXJyb3IoZyl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihnKX1ub3RpZnlDb21wbGV0ZSgpe3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX19ZnVuY3Rpb24gZXIo''@;'; put 'put ''ZCxnKXtpZihnLmNsb3NlZClyZXR1cm47aWYoZCBpbnN0YW5jZW9mIEYpcmV0dXJuIGQuc3Vic2NyaWJlKGcpO2xldCBoO3RyeXtoPWN0KGQpKGcpfWNhdGNoKHYpe2cuZXJyb3Iodil9cmV0dXJuIGh9ZnVuY3Rpb24gdXIoZCxnLGg9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtyZXR1cm4i''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgZz92PT52LnBpcGUodXIoKHksQyk9PnBuKGQoeSxDKSkucGlwZShwdCgoSSxqKT0+Zyh5LEksQyxqKSkpLGgpKTooIm51bWJlciI9PXR5cGVvZiBnJiYoaD1nKSx2PT52LmxpZnQobmV3IFhuKGQsaCkpKX1jbGFzcyBYbntjb25zdHJ1Y3RvcihnLGg9TnVtYmVy''@;'; put 'put ''LlBPU0lUSVZFX0lORklOSVRZKXt0aGlzLnByb2plY3Q9Zyx0aGlzLmNvbmN1cnJlbnQ9aH1jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBGcihnLHRoaXMucHJvamVjdCx0aGlzLmNvbmN1cnJlbnQpKX19Y2xhc3MgRnIgZXh0ZW5kcyBObntjb25zdHJ1Y3RvcihnLGgsdj1OdW1i''@;'; put 'put ''ZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3N1cGVyKGcpLHRoaXMucHJvamVjdD1oLHRoaXMuY29uY3VycmVudD12LHRoaXMuaGFzQ29tcGxldGVkPSExLHRoaXMuYnVmZmVyPVtdLHRoaXMuYWN0aXZlPTAsdGhpcy5pbmRleD0wfV9uZXh0KGcpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD90''@;'; put 'put ''aGlzLl90cnlOZXh0KGcpOnRoaXMuYnVmZmVyLnB1c2goZyl9X3RyeU5leHQoZyl7bGV0IGg7Y29uc3Qgdj10aGlzLmluZGV4Kys7dHJ5e2g9dGhpcy5wcm9qZWN0KGcsdil9Y2F0Y2goeSl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih5KX10aGlzLmFjdGl2ZSsrLHRoaXMu''@;'; put 'put ''X2lubmVyU3ViKGgpfV9pbm5lclN1YihnKXtjb25zdCBoPW5ldyBibih0aGlzKSx2PXRoaXMuZGVzdGluYXRpb247di5hZGQoaCk7Y29uc3QgeT1lcihnLGgpO3khPT1oJiZ2LmFkZCh5KX1fY29tcGxldGUoKXt0aGlzLmhhc0NvbXBsZXRlZD0hMCwwPT09dGhpcy5hY3RpdmUmJjA9PT10aGlz''@;'; put 'put ''LmJ1ZmZlci5sZW5ndGgmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKSx0aGlzLnVuc3Vic2NyaWJlKCl9bm90aWZ5TmV4dChnKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZyl9bm90aWZ5Q29tcGxldGUoKXtjb25zdCBnPXRoaXMuYnVmZmVyO3RoaXMuYWN0aXZlLS0sZy5sZW5ndGg+MD90''@;'; put 'put ''aGlzLl9uZXh0KGcuc2hpZnQoKSk6MD09PXRoaXMuYWN0aXZlJiZ0aGlzLmhhc0NvbXBsZXRlZCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfX1mdW5jdGlvbiBlbihkPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7cmV0dXJuIHVyKFYsZCl9ZnVuY3Rpb24gZHIoZCxnKXtyZXR1cm4g''@;'; put 'put ''Zz9ZZShkLGcpOm5ldyBGKGZ0KGQpKX1mdW5jdGlvbiBuciguLi5kKXtsZXQgZz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaD1udWxsLHY9ZFtkLmxlbmd0aC0xXTtyZXR1cm4geXQodik/KGg9ZC5wb3AoKSxkLmxlbmd0aD4xJiYibnVtYmVyIj09dHlwZW9mIGRbZC5sZW5ndGgtMV0mJihn''@;'; put 'put ''PWQucG9wKCkpKToibnVtYmVyIj09dHlwZW9mIHYmJihnPWQucG9wKCkpLG51bGw9PT1oJiYxPT09ZC5sZW5ndGgmJmRbMF1pbnN0YW5jZW9mIEY/ZFswXTplbihnKShkcihkLGgpKX1mdW5jdGlvbiB3bigpe3JldHVybiBmdW5jdGlvbihnKXtyZXR1cm4gZy5saWZ0KG5ldyAkbihnKSl9fWNs''@;'; put 'put ''YXNzICRue2NvbnN0cnVjdG9yKGcpe3RoaXMuY29ubmVjdGFibGU9Z31jYWxsKGcsaCl7Y29uc3R7Y29ubmVjdGFibGU6dn09dGhpczt2Ll9yZWZDb3VudCsrO2NvbnN0IHk9bmV3IFl0KGcsdiksQz1oLnN1YnNjcmliZSh5KTtyZXR1cm4geS5jbG9zZWR8fCh5LmNvbm5lY3Rpb249di5jb25u''@;'; put 'put ''ZWN0KCkpLEN9fWNsYXNzIFl0IGV4dGVuZHMgentjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKGcpLHRoaXMuY29ubmVjdGFibGU9aH1fdW5zdWJzY3JpYmUoKXtjb25zdHtjb25uZWN0YWJsZTpnfT10aGlzO2lmKCFnKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTt0aGlzLmNvbm5l''@;'; put 'put ''Y3RhYmxlPW51bGw7Y29uc3QgaD1nLl9yZWZDb3VudDtpZihoPD0wKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTtpZihnLl9yZWZDb3VudD1oLTEsaD4xKXJldHVybiB2b2lkKHRoaXMuY29ubmVjdGlvbj1udWxsKTtjb25zdHtjb25uZWN0aW9uOnZ9PXRoaXMseT1nLl9jb25u''@;'; put 'put ''ZWN0aW9uO3RoaXMuY29ubmVjdGlvbj1udWxsLHkmJighdnx8eT09PXYpJiZ5LnVuc3Vic2NyaWJlKCl9fWNsYXNzIGduIGV4dGVuZHMgRntjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKCksdGhpcy5zb3VyY2U9Zyx0aGlzLnN1YmplY3RGYWN0b3J5PWgsdGhpcy5fcmVmQ291bnQ9MCx0aGlzLl9p''@;'; put 'put ''c0NvbXBsZXRlPSExfV9zdWJzY3JpYmUoZyl7cmV0dXJuIHRoaXMuZ2V0U3ViamVjdCgpLnN1YnNjcmliZShnKX1nZXRTdWJqZWN0KCl7Y29uc3QgZz10aGlzLl9zdWJqZWN0O3JldHVybighZ3x8Zy5pc1N0b3BwZWQpJiYodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRo''@;'; put 'put ''aXMuX3N1YmplY3R9Y29ubmVjdCgpe2xldCBnPXRoaXMuX2Nvbm5lY3Rpb247cmV0dXJuIGd8fCh0aGlzLl9pc0NvbXBsZXRlPSExLGc9dGhpcy5fY29ubmVjdGlvbj1uZXcgVGUsZy5hZGQodGhpcy5zb3VyY2Uuc3Vic2NyaWJlKG5ldyBWdCh0aGlzLmdldFN1YmplY3QoKSx0aGlzKSkpLGcu''@;'; put 'put ''Y2xvc2VkJiYodGhpcy5fY29ubmVjdGlvbj1udWxsLGc9VGUuRU1QVFkpKSxnfXJlZkNvdW50KCl7cmV0dXJuIHduKCkodGhpcyl9fWNvbnN0IEtuPSgoKT0+e2NvbnN0IGQ9Z24ucHJvdG90eXBlO3JldHVybntvcGVyYXRvcjp7dmFsdWU6bnVsbH0sX3JlZkNvdW50Ont2YWx1ZTowLHdyaXRh''@;'; put 'put ''YmxlOiEwfSxfc3ViamVjdDp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX2Nvbm5lY3Rpb246e3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9LF9zdWJzY3JpYmU6e3ZhbHVlOmQuX3N1YnNjcmliZX0sX2lzQ29tcGxldGU6e3ZhbHVlOmQuX2lzQ29tcGxldGUsd3JpdGFibGU6ITB9LGdldFN1Ympl''@;'; put 'put ''Y3Q6e3ZhbHVlOmQuZ2V0U3ViamVjdH0sY29ubmVjdDp7dmFsdWU6ZC5jb25uZWN0fSxyZWZDb3VudDp7dmFsdWU6ZC5yZWZDb3VudH19fSkoKTtjbGFzcyBWdCBleHRlbmRzIFFle2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZyksdGhpcy5jb25uZWN0YWJsZT1ofV9lcnJvcihnKXt0aGlzLl91''@;'; put 'put ''bnN1YnNjcmliZSgpLHN1cGVyLl9lcnJvcihnKX1fY29tcGxldGUoKXt0aGlzLmNvbm5lY3RhYmxlLl9pc0NvbXBsZXRlPSEwLHRoaXMuX3Vuc3Vic2NyaWJlKCksc3VwZXIuX2NvbXBsZXRlKCl9X3Vuc3Vic2NyaWJlKCl7Y29uc3QgZz10aGlzLmNvbm5lY3RhYmxlO2lmKGcpe3RoaXMuY29u''@;'; put 'put ''bmVjdGFibGU9bnVsbDtjb25zdCBoPWcuX2Nvbm5lY3Rpb247Zy5fcmVmQ291bnQ9MCxnLl9zdWJqZWN0PW51bGwsZy5fY29ubmVjdGlvbj1udWxsLGgmJmgudW5zdWJzY3JpYmUoKX19fWNsYXNzIHRue2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5zdWJqZWN0RmFjdG9yeT1nLHRoaXMuc2VsZWN0''@;'; put 'put ''b3I9aH1jYWxsKGcsaCl7Y29uc3R7c2VsZWN0b3I6dn09dGhpcyx5PXRoaXMuc3ViamVjdEZhY3RvcnkoKSxDPXYoeSkuc3Vic2NyaWJlKGcpO3JldHVybiBDLmFkZChoLnN1YnNjcmliZSh5KSksQ319ZnVuY3Rpb24gR24oKXtyZXR1cm4gbmV3ICRlfWZ1bmN0aW9uIFBuKGQpe2ZvcihsZXQg''@;'; put 'put ''ZyBpbiBkKWlmKGRbZ109PT1QbilyZXR1cm4gZzt0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgcmVuYW1lZCBwcm9wZXJ0eSBvbiB0YXJnZXQgb2JqZWN0LiIpfWZ1bmN0aW9uIFNyKGQsZyl7Zm9yKGNvbnN0IGggaW4gZylnLmhhc093blByb3BlcnR5KGgpJiYhZC5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eShoKSYmKGRbaF09Z1toXSl9ZnVuY3Rpb24gdm4oZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBkO2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIlsiK2QubWFwKHZuKS5qb2luKCIsICIpKyJdIjtpZihudWxsPT1kKXJldHVybiIiK2Q7aWYoZC5vdmVycmlkZGVuTmFtZSlyZXR1''@;'; put 'put ''cm5gJHtkLm92ZXJyaWRkZW5OYW1lfWA7aWYoZC5uYW1lKXJldHVybmAke2QubmFtZX1gO2NvbnN0IGc9ZC50b1N0cmluZygpO2lmKG51bGw9PWcpcmV0dXJuIiIrZztjb25zdCBoPWcuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PWg/ZzpnLnN1YnN0cmluZygwLGgpfWZ1bmN0aW9uIHVuKGQs''@;'; put 'put ''Zyl7cmV0dXJuIG51bGw9PWR8fCIiPT09ZD9udWxsPT09Zz8iIjpnOm51bGw9PWd8fCIiPT09Zz9kOmQrIiAiK2d9Y29uc3QgY249UG4oe19fZm9yd2FyZF9yZWZfXzpQbn0pO2Z1bmN0aW9uIFNuKGQpe3JldHVybiBkLl9fZm9yd2FyZF9yZWZfXz1TbixkLnRvU3RyaW5nPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHZuKHRoaXMoKSl9LGR9ZnVuY3Rpb24gR3QoZCl7cmV0dXJuIEVuKGQpP2QoKTpkfWZ1bmN0aW9uIEVuKGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkJiZkLmhhc093blByb3BlcnR5KGNuKSYmZC5fX2ZvcndhcmRfcmVmX189PT1Tbn1jbGFzcyBxdCBleHRlbmRzIEVycm9y''@;'; put 'put ''e2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZnVuY3Rpb24gTG4oZCxnKXtyZXR1cm5gTkcwJHtNYXRoLmFicyhkKX0ke2c/IjogIitnLnRyaW0oKToiIn1gfShnLGgpKSx0aGlzLmNvZGU9Z319ZnVuY3Rpb24gSm4oZCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkP2Q6bnVsbD09ZD8iIjpTdHJp''@;'; put 'put ''bmcoZCl9ZnVuY3Rpb24gdGkoZCxnKXt0aHJvdyBuZXcgcXQoLTIwMSwhMSl9ZnVuY3Rpb24gZWwoZCxnKXtudWxsPT1kJiZmdW5jdGlvbiBKaShkLGcsaCx2KXt0aHJvdyBuZXcgRXJyb3IoYEFTU0VSVElPTiBFUlJPUjogJHtkfWArKG51bGw9PXY/IiI6YCBbRXhwZWN0ZWQ9PiAke2h9ICR7''@;'; put 'put ''dn0gJHtnfSA8PUFjdHVhbF1gKSl9KGcsZCxudWxsLCIhPSIpfWZ1bmN0aW9uIHBpKGQpe3JldHVybnt0b2tlbjpkLnRva2VuLHByb3ZpZGVkSW46ZC5wcm92aWRlZElufHxudWxsLGZhY3Rvcnk6ZC5mYWN0b3J5LHZhbHVlOnZvaWQgMH19Y29uc3Qgd2k9cGk7ZnVuY3Rpb24gbTAoZCl7cmV0''@;'; put 'put ''dXJue3Byb3ZpZGVyczpkLnByb3ZpZGVyc3x8W10saW1wb3J0czpkLmltcG9ydHN8fFtdfX1mdW5jdGlvbiBHbyhkKXtyZXR1cm4gU2koZCxTcyl8fFNpKGQscW8pfWZ1bmN0aW9uIFNpKGQsZyl7cmV0dXJuIGQuaGFzT3duUHJvcGVydHkoZyk/ZFtnXTpudWxsfWZ1bmN0aW9uIHEwKGQpe3Jl''@;'; put 'put ''dHVybiBkJiYoZC5oYXNPd25Qcm9wZXJ0eShXMCl8fGQuaGFzT3duUHJvcGVydHkoS2EpKT9kW1cwXTpudWxsfWNvbnN0IFNzPVBuKHtcdTAyNzVwcm92OlBufSksVzA9UG4oe1x1MDI3NWluajpQbn0pLHFvPVBuKHtuZ0luamVjdGFibGVEZWY6UG59KSxLYT1Qbih7bmdJbmplY3RvckRlZjpQ''@;'; put 'put ''bn0pO3ZhciBzbz0oKCk9Pigoc289c298fHt9KVtzby5EZWZhdWx0PTBdPSJEZWZhdWx0Iixzb1tzby5Ib3N0PTFdPSJIb3N0Iixzb1tzby5TZWxmPTJdPSJTZWxmIixzb1tzby5Ta2lwU2VsZj00XT0iU2tpcFNlbGYiLHNvW3NvLk9wdGlvbmFsPThdPSJPcHRpb25hbCIsc28pKSgpO2xldCBB''@;'; put 'put ''bjtmdW5jdGlvbiBiMihkKXtjb25zdCBnPUFuO3JldHVybiBBbj1kLGd9ZnVuY3Rpb24gaXUoZCxnLGgpe2NvbnN0IHY9R28oZCk7cmV0dXJuIHYmJiJyb290Ij09di5wcm92aWRlZEluP3ZvaWQgMD09PXYudmFsdWU/di52YWx1ZT12LmZhY3RvcnkoKTp2LnZhbHVlOmgmc28uT3B0aW9uYWw/''@;'; put 'put ''bnVsbDp2b2lkIDAhPT1nP2c6dm9pZCB0aSh2bihkKSl9ZnVuY3Rpb24gUXUoZCl7cmV0dXJue3RvU3RyaW5nOmR9LnRvU3RyaW5nKCl9dmFyIEtzPSgoKT0+KChLcz1Lc3x8e30pW0tzLk9uUHVzaD0wXT0iT25QdXNoIixLc1tLcy5EZWZhdWx0PTFdPSJEZWZhdWx0IixLcykpKCksJHM9KCgp''@;'; put 'put ''PT4oZnVuY3Rpb24oZCl7ZFtkLkVtdWxhdGVkPTBdPSJFbXVsYXRlZCIsZFtkLk5vbmU9Ml09Ik5vbmUiLGRbZC5TaGFkb3dEb209M109IlNoYWRvd0RvbSJ9KCRzfHwoJHM9e30pKSwkcykpKCk7Y29uc3QgRGw9KCgpPT4idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRo''@;'; put 'put ''aXN8fCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiZnbG9iYWx8fCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckds''@;'; put 'put ''b2JhbFNjb3BlJiZzZWxmKSgpLGdjPXt9LHRsPVtdLGpvPVBuKHtcdTAyNzVjbXA6UG59KSxkaT1Qbih7XHUwMjc1ZGlyOlBufSksTjA9UG4oe1x1MDI3NXBpcGU6UG59KSx1bz1Qbih7XHUwMjc1bW9kOlBufSksTmE9UG4oe1x1MDI3NWZhYzpQbn0pLGYyPVBuKHtfX05HX0VMRU1FTlRfSURf''@;'; put 'put ''XzpQbn0pO2xldCBvMj0wO2Z1bmN0aW9uIHZpKGQpe3JldHVybiBRdSgoKT0+e2NvbnN0IGg9ITA9PT1kLnN0YW5kYWxvbmUsdj17fSx5PXt0eXBlOmQudHlwZSxwcm92aWRlcnNSZXNvbHZlcjpudWxsLGRlY2xzOmQuZGVjbHMsdmFyczpkLnZhcnMsZmFjdG9yeTpudWxsLHRlbXBsYXRlOmQu''@;'; put 'put ''dGVtcGxhdGV8fG51bGwsY29uc3RzOmQuY29uc3RzfHxudWxsLG5nQ29udGVudFNlbGVjdG9yczpkLm5nQ29udGVudFNlbGVjdG9ycyxob3N0QmluZGluZ3M6ZC5ob3N0QmluZGluZ3N8fG51bGwsaG9zdFZhcnM6ZC5ob3N0VmFyc3x8MCxob3N0QXR0cnM6ZC5ob3N0QXR0cnN8fG51bGwsY29u''@;'; put 'put ''dGVudFF1ZXJpZXM6ZC5jb250ZW50UXVlcmllc3x8bnVsbCxkZWNsYXJlZElucHV0czp2LGlucHV0czpudWxsLG91dHB1dHM6bnVsbCxleHBvcnRBczpkLmV4cG9ydEFzfHxudWxsLG9uUHVzaDpkLmNoYW5nZURldGVjdGlvbj09PUtzLk9uUHVzaCxkaXJlY3RpdmVEZWZzOm51bGwscGlwZURl''@;'; put 'put ''ZnM6bnVsbCxzdGFuZGFsb25lOmgsZGVwZW5kZW5jaWVzOmgmJmQuZGVwZW5kZW5jaWVzfHxudWxsLGdldFN0YW5kYWxvbmVJbmplY3RvcjpudWxsLHNlbGVjdG9yczpkLnNlbGVjdG9yc3x8dGwsdmlld1F1ZXJ5OmQudmlld1F1ZXJ5fHxudWxsLGZlYXR1cmVzOmQuZmVhdHVyZXN8fG51bGws''@;'; put 'put ''ZGF0YTpkLmRhdGF8fHt9LGVuY2Fwc3VsYXRpb246ZC5lbmNhcHN1bGF0aW9ufHwkcy5FbXVsYXRlZCxpZDoiYyIrbzIrKyxzdHlsZXM6ZC5zdHlsZXN8fHRsLF86bnVsbCxzZXRJbnB1dDpudWxsLHNjaGVtYXM6ZC5zY2hlbWFzfHxudWxsLHRWaWV3Om51bGx9LEM9ZC5kZXBlbmRlbmNpZXMs''@;'; put 'put ''ST1kLmZlYXR1cmVzO3JldHVybiB5LmlucHV0cz1xcyhkLmlucHV0cyx2KSx5Lm91dHB1dHM9cXMoZC5vdXRwdXRzKSxJJiZJLmZvckVhY2goaj0+aih5KSkseS5kaXJlY3RpdmVEZWZzPUM/KCk9PigiZnVuY3Rpb24iPT10eXBlb2YgQz9DKCk6QykubWFwKEVhKS5maWx0ZXIob3UpOm51bGws''@;'; put 'put ''eS5waXBlRGVmcz1DPygpPT4oImZ1bmN0aW9uIj09dHlwZW9mIEM/QygpOkMpLm1hcChLbCkuZmlsdGVyKG91KTpudWxsLHl9KX1mdW5jdGlvbiBFYShkKXtyZXR1cm4gZ3MoZCl8fE4xKGQpfWZ1bmN0aW9uIG91KGQpe3JldHVybiBudWxsIT09ZH1mdW5jdGlvbiBybyhkKXtyZXR1cm4gUXUo''@;'; put 'put ''KCk9Pih7dHlwZTpkLnR5cGUsYm9vdHN0cmFwOmQuYm9vdHN0cmFwfHx0bCxkZWNsYXJhdGlvbnM6ZC5kZWNsYXJhdGlvbnN8fHRsLGltcG9ydHM6ZC5pbXBvcnRzfHx0bCxleHBvcnRzOmQuZXhwb3J0c3x8dGwsdHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM6bnVsbCxzY2hlbWFzOmQuc2NoZW1h''@;'; put 'put ''c3x8bnVsbCxpZDpkLmlkfHxudWxsfSkpfWZ1bmN0aW9uIHFzKGQsZyl7aWYobnVsbD09ZClyZXR1cm4gZ2M7Y29uc3QgaD17fTtmb3IoY29uc3QgdiBpbiBkKWlmKGQuaGFzT3duUHJvcGVydHkodikpe2xldCB5PWRbdl0sQz15O0FycmF5LmlzQXJyYXkoeSkmJihDPXlbMV0seT15WzBdKSxo''@;'; put 'put ''W3ldPXYsZyYmKGdbeV09Qyl9cmV0dXJuIGh9Y29uc3QgWWk9dmk7ZnVuY3Rpb24gV3MoZCl7cmV0dXJue3R5cGU6ZC50eXBlLG5hbWU6ZC5uYW1lLGZhY3Rvcnk6bnVsbCxwdXJlOiExIT09ZC5wdXJlLHN0YW5kYWxvbmU6ITA9PT1kLnN0YW5kYWxvbmUsb25EZXN0cm95OmQudHlwZS5wcm90''@;'; put 'put ''b3R5cGUubmdPbkRlc3Ryb3l8fG51bGx9fWZ1bmN0aW9uIGdzKGQpe3JldHVybiBkW2pvXXx8bnVsbH1mdW5jdGlvbiBOMShkKXtyZXR1cm4gZFtkaV18fG51bGx9ZnVuY3Rpb24gS2woZCl7cmV0dXJuIGRbTjBdfHxudWxsfWZ1bmN0aW9uIHhpKGQsZyl7Y29uc3QgaD1kW3VvXXx8bnVsbDtp''@;'; put 'put ''ZighaCYmITA9PT1nKXRocm93IG5ldyBFcnJvcihgVHlwZSAke3ZuKGQpfSBkb2VzIG5vdCBoYXZlICdcdTAyNzVtb2QnIHByb3BlcnR5LmApO3JldHVybiBofWZ1bmN0aW9uIEt1KGQpe3JldHVybiBBcnJheS5pc0FycmF5KGQpJiYib2JqZWN0Ij09dHlwZW9mIGRbMV19ZnVuY3Rpb24gVG8o''@;'; put 'put ''ZCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCkmJiEwPT09ZFsxXX1mdW5jdGlvbiBScyhkKXtyZXR1cm4gMCE9KDgmZC5mbGFncyl9ZnVuY3Rpb24gV2coZCl7cmV0dXJuIDI9PSgyJmQuZmxhZ3MpfWZ1bmN0aW9uIFlnKGQpe3JldHVybiAxPT0oMSZkLmZsYWdzKX1mdW5jdGlvbiBzZihkKXty''@;'; put 'put ''ZXR1cm4gbnVsbCE9PWQudGVtcGxhdGV9ZnVuY3Rpb24gUGYoZCl7cmV0dXJuIDAhPSgyNTYmZFsyXSl9ZnVuY3Rpb24gY2QoZCxnKXtyZXR1cm4gZC5oYXNPd25Qcm9wZXJ0eShOYSk/ZFtOYV06bnVsbH1jbGFzcyBaTXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5wcmV2aW91c1ZhbHVlPWcs''@;'; put 'put ''dGhpcy5jdXJyZW50VmFsdWU9aCx0aGlzLmZpcnN0Q2hhbmdlPXZ9aXNGaXJzdENoYW5nZSgpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfX1mdW5jdGlvbiBkMigpe3JldHVybiBnOX1mdW5jdGlvbiBnOShkKXtyZXR1cm4gZC50eXBlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcyYmKGQuc2V0SW5w''@;'; put 'put ''dXQ9azgpLCRnfWZ1bmN0aW9uICRnKCl7Y29uc3QgZD1IZih0aGlzKSxnPW51bGw9PWQ/dm9pZCAwOmQuY3VycmVudDtpZihnKXtjb25zdCBoPWQucHJldmlvdXM7aWYoaD09PWdjKWQucHJldmlvdXM9ZztlbHNlIGZvcihsZXQgdiBpbiBnKWhbdl09Z1t2XTtkLmN1cnJlbnQ9bnVsbCx0aGlz''@;'; put 'put ''Lm5nT25DaGFuZ2VzKGcpfX1mdW5jdGlvbiBrOChkLGcsaCx2KXtjb25zdCB5PUhmKGQpfHxmdW5jdGlvbiBxZyhkLGcpe3JldHVybiBkW1lzXT1nfShkLHtwcmV2aW91czpnYyxjdXJyZW50Om51bGx9KSxDPXkuY3VycmVudHx8KHkuY3VycmVudD17fSksST15LnByZXZpb3VzLGo9dGhpcy5k''@;'; put 'put ''ZWNsYXJlZElucHV0c1toXSxjZT1JW2pdO0Nbal09bmV3IFpNKGNlJiZjZS5jdXJyZW50VmFsdWUsZyxJPT09Z2MpLGRbdl09Z31kMi5uZ0luaGVyaXQ9ITA7Y29uc3QgWXM9Il9fbmdTaW1wbGVDaGFuZ2VzX18iO2Z1bmN0aW9uIEhmKGQpe3JldHVybiBkW1lzXXx8bnVsbH1mdW5jdGlvbiBm''@;'; put 'put ''MShkKXtmb3IoO0FycmF5LmlzQXJyYXkoZCk7KWQ9ZFswXTtyZXR1cm4gZH1mdW5jdGlvbiBWcChkLGcpe3JldHVybiBmMShnW2RdKX1mdW5jdGlvbiB2YyhkLGcpe3JldHVybiBmMShnW2QuaW5kZXhdKX1mdW5jdGlvbiBBOShkLGcpe3JldHVybiBkLmRhdGFbZ119ZnVuY3Rpb24gZmQoZCxn''@;'; put 'put ''KXtyZXR1cm4gZFtnXX1mdW5jdGlvbiAkdShkLGcpe2NvbnN0IGg9Z1tkXTtyZXR1cm4gS3UoaCk/aDpoWzBdfWZ1bmN0aW9uIEx1KGQpe3JldHVybiA0PT0oNCZkWzJdKX1mdW5jdGlvbiBlbShkKXtyZXR1cm4gNjQ9PSg2NCZkWzJdKX1mdW5jdGlvbiBPdShkLGcpe3JldHVybiBudWxsPT1n''@;'; put 'put ''P251bGw6ZFtnXX1mdW5jdGlvbiBDNChkKXtkWzE4XT0wfWZ1bmN0aW9uIGczKGQsZyl7ZFs1XSs9ZztsZXQgaD1kLHY9ZFszXTtmb3IoO251bGwhPT12JiYoMT09PWcmJjE9PT1oWzVdfHwtMT09PWcmJjA9PT1oWzVdKTspdls1XSs9ZyxoPXYsdj12WzNdfWNvbnN0IExhPXtsRnJhbWU6SWEo''@;'; put 'put ''bnVsbCksYmluZGluZ3NFbmFibGVkOiEwfTtmdW5jdGlvbiBkdCgpe3JldHVybiBMYS5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24gdWUoKXtyZXR1cm4gTGEubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIFR0KCl7cmV0dXJuIExhLmxGcmFtZS50Vmlld31mdW5jdGlvbiBhKGQpe3JldHVybiBMYS5s''@;'; put 'put ''RnJhbWUuY29udGV4dExWaWV3PWQsZFs4XX1mdW5jdGlvbiBidChkKXtyZXR1cm4gTGEubEZyYW1lLmNvbnRleHRMVmlldz1udWxsLGR9ZnVuY3Rpb24gYXIoKXtsZXQgZD1OaSgpO2Zvcig7bnVsbCE9PWQmJjY0PT09ZC50eXBlOylkPWQucGFyZW50O3JldHVybiBkfWZ1bmN0aW9uIE5pKCl7''@;'; put 'put ''cmV0dXJuIExhLmxGcmFtZS5jdXJyZW50VE5vZGV9ZnVuY3Rpb24gXyhkLGcpe2NvbnN0IGg9TGEubEZyYW1lO2guY3VycmVudFROb2RlPWQsaC5pc1BhcmVudD1nfWZ1bmN0aW9uIHdvKCl7cmV0dXJuIExhLmxGcmFtZS5pc1BhcmVudH1mdW5jdGlvbiBraSgpe0xhLmxGcmFtZS5pc1BhcmVu''@;'; put 'put ''dD0hMX1mdW5jdGlvbiBNbigpe2NvbnN0IGQ9TGEubEZyYW1lO2xldCBnPWQuYmluZGluZ1Jvb3RJbmRleDtyZXR1cm4tMT09PWcmJihnPWQuYmluZGluZ1Jvb3RJbmRleD1kLnRWaWV3LmJpbmRpbmdTdGFydEluZGV4KSxnfWZ1bmN0aW9uIHhuKCl7cmV0dXJuIExhLmxGcmFtZS5iaW5kaW5n''@;'; put 'put ''SW5kZXh9ZnVuY3Rpb24gXzIoKXtyZXR1cm4gTGEubEZyYW1lLmJpbmRpbmdJbmRleCsrfWZ1bmN0aW9uICQyKGQpe2NvbnN0IGc9TGEubEZyYW1lLGg9Zy5iaW5kaW5nSW5kZXg7cmV0dXJuIGcuYmluZGluZ0luZGV4PWcuYmluZGluZ0luZGV4K2QsaH1mdW5jdGlvbiBZTShkLGcpe2NvbnN0''@;'; put 'put ''IGg9TGEubEZyYW1lO2guYmluZGluZ0luZGV4PWguYmluZGluZ1Jvb3RJbmRleD1kLHk5KGcpfWZ1bmN0aW9uIHk5KGQpe0xhLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg9ZH1mdW5jdGlvbiB3OShkKXtjb25zdCBnPUxhLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg7cmV0dXJu''@;'; put 'put ''LTE9PT1nP251bGw6ZFtnXX1mdW5jdGlvbiBPbigpe3JldHVybiBMYS5sRnJhbWUuY3VycmVudFF1ZXJ5SW5kZXh9ZnVuY3Rpb24geWMoZCl7TGEubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4PWR9ZnVuY3Rpb24gZW8oZCl7Y29uc3QgZz1kWzFdO3JldHVybiAyPT09Zy50eXBlP2cuZGVjbFRO''@;'; put 'put ''b2RlOjE9PT1nLnR5cGU/ZFs2XTpudWxsfWZ1bmN0aW9uIEYwKGQsZyxoKXtpZihoJnNvLlNraXBTZWxmKXtsZXQgeT1nLEM9ZDtmb3IoOyEoeT15LnBhcmVudCxudWxsIT09eXx8aCZzby5Ib3N0fHwoeT1lbyhDKSxudWxsPT09eXx8KEM9Q1sxNV0sMTAmeS50eXBlKSkpOyk7aWYobnVsbD09''@;'; put 'put ''PXkpcmV0dXJuITE7Zz15LGQ9Q31jb25zdCB2PUxhLmxGcmFtZT1sYSgpO3JldHVybiB2LmN1cnJlbnRUTm9kZT1nLHYubFZpZXc9ZCwhMH1mdW5jdGlvbiBHbChkKXtjb25zdCBnPWxhKCksaD1kWzFdO0xhLmxGcmFtZT1nLGcuY3VycmVudFROb2RlPWguZmlyc3RDaGlsZCxnLmxWaWV3PWQs''@;'; put 'put ''Zy50Vmlldz1oLGcuY29udGV4dExWaWV3PWQsZy5iaW5kaW5nSW5kZXg9aC5iaW5kaW5nU3RhcnRJbmRleCxnLmluSTE4bj0hMX1mdW5jdGlvbiBsYSgpe2NvbnN0IGQ9TGEubEZyYW1lLGc9bnVsbD09PWQ/bnVsbDpkLmNoaWxkO3JldHVybiBudWxsPT09Zz9JYShkKTpnfWZ1bmN0aW9uIElh''@;'; put 'put ''KGQpe2NvbnN0IGc9e2N1cnJlbnRUTm9kZTpudWxsLGlzUGFyZW50OiEwLGxWaWV3Om51bGwsdFZpZXc6bnVsbCxzZWxlY3RlZEluZGV4Oi0xLGNvbnRleHRMVmlldzpudWxsLGVsZW1lbnREZXB0aENvdW50OjAsY3VycmVudE5hbWVzcGFjZTpudWxsLGN1cnJlbnREaXJlY3RpdmVJbmRleDot''@;'; put 'put ''MSxiaW5kaW5nUm9vdEluZGV4Oi0xLGJpbmRpbmdJbmRleDotMSxjdXJyZW50UXVlcnlJbmRleDowLHBhcmVudDpkLGNoaWxkOm51bGwsaW5JMThuOiExfTtyZXR1cm4gbnVsbCE9PWQmJihkLmNoaWxkPWcpLGd9ZnVuY3Rpb24gTTgoKXtjb25zdCBkPUxhLmxGcmFtZTtyZXR1cm4gTGEubEZy''@;'; put 'put ''YW1lPWQucGFyZW50LGQuY3VycmVudFROb2RlPW51bGwsZC5sVmlldz1udWxsLGR9Y29uc3QgRTg9TTg7ZnVuY3Rpb24gaGQoKXtjb25zdCBkPU04KCk7ZC5pc1BhcmVudD0hMCxkLnRWaWV3PW51bGwsZC5zZWxlY3RlZEluZGV4PS0xLGQuY29udGV4dExWaWV3PW51bGwsZC5lbGVtZW50RGVw''@;'; put 'put ''dGhDb3VudD0wLGQuY3VycmVudERpcmVjdGl2ZUluZGV4PS0xLGQuY3VycmVudE5hbWVzcGFjZT1udWxsLGQuYmluZGluZ1Jvb3RJbmRleD0tMSxkLmJpbmRpbmdJbmRleD0tMSxkLmN1cnJlbnRRdWVyeUluZGV4PTB9ZnVuY3Rpb24gejEoKXtyZXR1cm4gTGEubEZyYW1lLnNlbGVjdGVkSW5k''@;'; put 'put ''ZXh9ZnVuY3Rpb24gZGQoZCl7TGEubEZyYW1lLnNlbGVjdGVkSW5kZXg9ZH1mdW5jdGlvbiB3bCgpe2NvbnN0IGQ9TGEubEZyYW1lO3JldHVybiBBOShkLnRWaWV3LGQuc2VsZWN0ZWRJbmRleCl9ZnVuY3Rpb24gZ2QoZCxnKXtmb3IobGV0IGg9Zy5kaXJlY3RpdmVTdGFydCx2PWcuZGlyZWN0''@;'; put 'put ''aXZlRW5kO2g8djtoKyspe2NvbnN0IEM9ZC5kYXRhW2hdLnR5cGUucHJvdG90eXBlLHtuZ0FmdGVyQ29udGVudEluaXQ6SSxuZ0FmdGVyQ29udGVudENoZWNrZWQ6aixuZ0FmdGVyVmlld0luaXQ6Y2UsbmdBZnRlclZpZXdDaGVja2VkOl9lLG5nT25EZXN0cm95OlJlfT1DO0kmJihkLmNvbnRl''@;'; put 'put ''bnRIb29rc3x8KGQuY29udGVudEhvb2tzPVtdKSkucHVzaCgtaCxJKSxqJiYoKGQuY29udGVudEhvb2tzfHwoZC5jb250ZW50SG9va3M9W10pKS5wdXNoKGgsaiksKGQuY29udGVudENoZWNrSG9va3N8fChkLmNvbnRlbnRDaGVja0hvb2tzPVtdKSkucHVzaChoLGopKSxjZSYmKGQudmlld0hv''@;'; put 'put ''b2tzfHwoZC52aWV3SG9va3M9W10pKS5wdXNoKC1oLGNlKSxfZSYmKChkLnZpZXdIb29rc3x8KGQudmlld0hvb2tzPVtdKSkucHVzaChoLF9lKSwoZC52aWV3Q2hlY2tIb29rc3x8KGQudmlld0NoZWNrSG9va3M9W10pKS5wdXNoKGgsX2UpKSxudWxsIT1SZSYmKGQuZGVzdHJveUhvb2tzfHwo''@;'; put 'put ''ZC5kZXN0cm95SG9va3M9W10pKS5wdXNoKGgsUmUpfX1mdW5jdGlvbiBacChkLGcsaCl7Z2IoZCxnLDMsaCl9ZnVuY3Rpb24gTmMoZCxnLGgsdil7KDMmZFsyXSk9PT1oJiZnYihkLGcsaCx2KX1mdW5jdGlvbiB6cChkLGcpe2xldCBoPWRbMl07KDMmaCk9PT1nJiYoaCY9MjA0NyxoKz0xLGRb''@;'; put 'put ''Ml09aCl9ZnVuY3Rpb24gZ2IoZCxnLGgsdil7Y29uc3QgQz1udWxsIT12P3Y6LTEsST1nLmxlbmd0aC0xO2xldCBqPTA7Zm9yKGxldCBjZT12b2lkIDAhPT12PzY1NTM1JmRbMThdOjA7Y2U8STtjZSsrKWlmKCJudW1iZXIiPT10eXBlb2YgZ1tjZSsxXSl7aWYoaj1nW2NlXSxudWxsIT12JiZq''@;'; put 'put ''Pj12KWJyZWFrfWVsc2UgZ1tjZV08MCYmKGRbMThdKz02NTUzNiksKGo8Q3x8LTE9PUMpJiYoYjkoZCxoLGcsY2UpLGRbMThdPSg0Mjk0OTAxNzYwJmRbMThdKStjZSsyKSxjZSsrfWZ1bmN0aW9uIGI5KGQsZyxoLHYpe2NvbnN0IHk9aFt2XTwwLEM9aFt2KzFdLGo9ZFt5Py1oW3ZdOmhbdl1d''@;'; put 'put ''O2lmKHkpe2lmKGRbMl0+PjExPGRbMThdPj4xNiYmKDMmZFsyXSk9PT1nKXtkWzJdKz0yMDQ4O3RyeXtDLmNhbGwoail9ZmluYWxseXt9fX1lbHNlIHRyeXtDLmNhbGwoail9ZmluYWxseXt9fWNsYXNzIHFpe2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLmZhY3Rvcnk9Zyx0aGlzLnJlc29sdmlu''@;'; put 'put ''Zz0hMSx0aGlzLmNhblNlZVZpZXdQcm92aWRlcnM9aCx0aGlzLmluamVjdEltcGw9dn19ZnVuY3Rpb24gJGwoZCxnLGgpe2xldCB2PTA7Zm9yKDt2PGgubGVuZ3RoOyl7Y29uc3QgeT1oW3ZdO2lmKCJudW1iZXIiPT10eXBlb2YgeSl7aWYoMCE9PXkpYnJlYWs7disrO2NvbnN0IEM9aFt2Kytd''@;'; put 'put ''LEk9aFt2KytdLGo9aFt2KytdO2Quc2V0QXR0cmlidXRlKGcsSSxqLEMpfWVsc2V7Y29uc3QgQz15LEk9aFsrK3ZdO1pmKEMpP2Quc2V0UHJvcGVydHkoZyxDLEkpOmQuc2V0QXR0cmlidXRlKGcsQyxJKSx2Kyt9fXJldHVybiB2fWZ1bmN0aW9uIFcxKGQpe3JldHVybiAzPT09ZHx8ND09PWR8''@;'; put 'put ''fDY9PT1kfWZ1bmN0aW9uIFpmKGQpe3JldHVybiA2ND09PWQuY2hhckNvZGVBdCgwKX1mdW5jdGlvbiB0bShkLGcpe2lmKG51bGwhPT1nJiYwIT09Zy5sZW5ndGgpaWYobnVsbD09PWR8fDA9PT1kLmxlbmd0aClkPWcuc2xpY2UoKTtlbHNle2xldCBoPS0xO2ZvcihsZXQgdj0wO3Y8Zy5sZW5n''@;'; put 'put ''dGg7disrKXtjb25zdCB5PWdbdl07Im51bWJlciI9PXR5cGVvZiB5P2g9eTowPT09aHx8VmMoZCxoLHksbnVsbCwtMT09PWh8fDI9PT1oP2dbKyt2XTpudWxsKX19cmV0dXJuIGR9ZnVuY3Rpb24gVmMoZCxnLGgsdix5KXtsZXQgQz0wLEk9ZC5sZW5ndGg7aWYoLTE9PT1nKUk9LTE7ZWxzZSBm''@;'; put 'put ''b3IoO0M8ZC5sZW5ndGg7KXtjb25zdCBqPWRbQysrXTtpZigibnVtYmVyIj09dHlwZW9mIGope2lmKGo9PT1nKXtJPS0xO2JyZWFrfWlmKGo+Zyl7ST1DLTE7YnJlYWt9fX1mb3IoO0M8ZC5sZW5ndGg7KXtjb25zdCBqPWRbQ107aWYoIm51bWJlciI9PXR5cGVvZiBqKWJyZWFrO2lmKGo9PT1o''@;'; put 'put ''KXtpZihudWxsPT09dilyZXR1cm4gdm9pZChudWxsIT09eSYmKGRbQysxXT15KSk7aWYodj09PWRbQysxXSlyZXR1cm4gdm9pZChkW0MrMl09eSl9QysrLG51bGwhPT12JiZDKyssbnVsbCE9PXkmJkMrK30tMSE9PUkmJihkLnNwbGljZShJLDAsZyksQz1JKzEpLGQuc3BsaWNlKEMrKywwLGgp''@;'; put 'put ''LG51bGwhPT12JiZkLnNwbGljZShDKyssMCx2KSxudWxsIT09eSYmZC5zcGxpY2UoQysrLDAseSl9ZnVuY3Rpb24gamMoZCl7cmV0dXJuLTEhPT1kfWZ1bmN0aW9uIGZmKGQpe3JldHVybiAzMjc2NyZkfWZ1bmN0aW9uIEJyKGQsZyl7bGV0IGg9ZnVuY3Rpb24gazQoZCl7cmV0dXJuIGQ+PjE2''@;'; put 'put ''fShkKSx2PWc7Zm9yKDtoPjA7KXY9dlsxNV0saC0tO3JldHVybiB2fWxldCBubT0hMDtmdW5jdGlvbiB4OChkKXtjb25zdCBnPW5tO3JldHVybiBubT1kLGd9bGV0IF85PTA7Y29uc3QgeTE9e307ZnVuY3Rpb24gbWQoZCxnKXtjb25zdCBoPVpjKGQsZyk7aWYoLTEhPT1oKXJldHVybiBoO2Nv''@;'; put 'put ''bnN0IHY9Z1sxXTt2LmZpcnN0Q3JlYXRlUGFzcyYmKGQuaW5qZWN0b3JJbmRleD1nLmxlbmd0aCxJOCh2LmRhdGEsZCksSTgoZyxudWxsKSxJOCh2LmJsdWVwcmludCxudWxsKSk7Y29uc3QgeT16ZihkLGcpLEM9ZC5pbmplY3RvckluZGV4O2lmKGpjKHkpKXtjb25zdCBJPWZmKHkpLGo9QnIo''@;'; put 'put ''eSxnKSxjZT1qWzFdLmRhdGE7Zm9yKGxldCBfZT0wO19lPDg7X2UrKylnW0MrX2VdPWpbSStfZV18Y2VbSStfZV19cmV0dXJuIGdbQys4XT15LEN9ZnVuY3Rpb24gSTgoZCxnKXtkLnB1c2goMCwwLDAsMCwwLDAsMCwwLGcpfWZ1bmN0aW9uIFpjKGQsZyl7cmV0dXJuLTE9PT1kLmluamVjdG9y''@;'; put 'put ''SW5kZXh8fGQucGFyZW50JiZkLnBhcmVudC5pbmplY3RvckluZGV4PT09ZC5pbmplY3RvckluZGV4fHxudWxsPT09Z1tkLmluamVjdG9ySW5kZXgrOF0/LTE6ZC5pbmplY3RvckluZGV4fWZ1bmN0aW9uIHpmKGQsZyl7aWYoZC5wYXJlbnQmJi0xIT09ZC5wYXJlbnQuaW5qZWN0b3JJbmRleCly''@;'; put 'put ''ZXR1cm4gZC5wYXJlbnQuaW5qZWN0b3JJbmRleDtsZXQgaD0wLHY9bnVsbCx5PWc7Zm9yKDtudWxsIT09eTspe2lmKHY9TzgoeSksbnVsbD09PXYpcmV0dXJuLTE7aWYoaCsrLHk9eVsxNV0sLTEhPT12LmluamVjdG9ySW5kZXgpcmV0dXJuIHYuaW5qZWN0b3JJbmRleHxoPDwxNn1yZXR1cm4t''@;'; put 'put ''MX1mdW5jdGlvbiBEOChkLGcsaCl7IWZ1bmN0aW9uIG1iKGQsZyxoKXtsZXQgdjsic3RyaW5nIj09dHlwZW9mIGg/dj1oLmNoYXJDb2RlQXQoMCl8fDA6aC5oYXNPd25Qcm9wZXJ0eShmMikmJih2PWhbZjJdKSxudWxsPT12JiYodj1oW2YyXT1fOSsrKTtjb25zdCB5PTI1NSZ2O2cuZGF0YVtk''@;'; put 'put ''Kyh5Pj41KV18PTE8PHl9KGQsZyxoKX1mdW5jdGlvbiBDOShkLGcsaCl7aWYoaCZzby5PcHRpb25hbClyZXR1cm4gZDt0aSgpfWZ1bmN0aW9uIGltKGQsZyxoLHYpe2lmKGgmc28uT3B0aW9uYWwmJnZvaWQgMD09PXYmJih2PW51bGwpLDA9PShoJihzby5TZWxmfHNvLkhvc3QpKSl7Y29uc3Qg''@;'; put 'put ''eT1kWzldLEM9YjIodm9pZCAwKTt0cnl7cmV0dXJuIHk/eS5nZXQoZyx2LGgmc28uT3B0aW9uYWwpOml1KGcsdixoJnNvLk9wdGlvbmFsKX1maW5hbGx5e2IyKEMpfX1yZXR1cm4gQzkodiwwLGgpfWZ1bmN0aW9uIEw4KGQsZyxoLHY9c28uRGVmYXVsdCx5KXtpZihudWxsIT09ZCl7aWYoMTAy''@;'; put 'put ''NCZnWzJdKXtjb25zdCBJPWZ1bmN0aW9uIHF1KGQsZyxoLHYseSl7bGV0IEM9ZCxJPWc7Zm9yKDtudWxsIT09QyYmbnVsbCE9PUkmJjEwMjQmSVsyXSYmISgyNTYmSVsyXSk7KXtjb25zdCBqPUU0KEMsSSxoLHZ8c28uU2VsZix5MSk7aWYoaiE9PXkxKXJldHVybiBqO2xldCBjZT1DLnBhcmVu''@;'; put 'put ''dDtpZighY2Upe2NvbnN0IF9lPUlbMjFdO2lmKF9lKXtjb25zdCBSZT1fZS5nZXQoaCx5MSx2KTtpZihSZSE9PXkxKXJldHVybiBSZX1jZT1POChJKSxJPUlbMTVdfUM9Y2V9cmV0dXJuIHl9KGQsZyxoLHYseTEpO2lmKEkhPT15MSlyZXR1cm4gSX1jb25zdCBDPUU0KGQsZyxoLHYseTEpO2lm''@;'; put 'put ''KEMhPT15MSlyZXR1cm4gQ31yZXR1cm4gaW0oZyxoLHYseSl9ZnVuY3Rpb24gRTQoZCxnLGgsdix5KXtjb25zdCBDPWZ1bmN0aW9uIEtNKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gZC5jaGFyQ29kZUF0KDApfHwwO2NvbnN0IGc9ZC5oYXNPd25Qcm9wZXJ0eShmMik/ZFtmMl06''@;'; put 'put ''dm9pZCAwO3JldHVybiJudW1iZXIiPT10eXBlb2YgZz9nPj0wPzI1NSZnOlJ1Omd9KGgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBDKXtpZighRjAoZyxkLHYpKXJldHVybiB2JnNvLkhvc3Q/QzkoeSwwLHYpOmltKGcsaCx2LHkpO3RyeXtjb25zdCBJPUModik7aWYobnVsbCE9SXx8diZzby5P''@;'; put 'put ''cHRpb25hbClyZXR1cm4gSTt0aSgpfWZpbmFsbHl7RTgoKX19ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIEMpe2xldCBJPW51bGwsaj1aYyhkLGcpLGNlPS0xLF9lPXYmc28uSG9zdD9nWzE2XVs2XTpudWxsO2ZvcigoLTE9PT1qfHx2JnNvLlNraXBTZWxmKSYmKGNlPS0xPT09aj96ZihkLGcp''@;'; put 'put ''Omdbais4XSwtMSE9PWNlJiZTOSh2LCExKT8oST1nWzFdLGo9ZmYoY2UpLGc9QnIoY2UsZykpOmo9LTEpOy0xIT09ajspe2NvbnN0IFJlPWdbMV07aWYoazkoQyxqLFJlLmRhdGEpKXtjb25zdCBOZT1oZihqLGcsaCxJLHYsX2UpO2lmKE5lIT09eTEpcmV0dXJuIE5lfWNlPWdbais4XSwtMSE9''@;'; put 'put ''PWNlJiZTOSh2LGdbMV0uZGF0YVtqKzhdPT09X2UpJiZrOShDLGosZyk/KEk9UmUsaj1mZihjZSksZz1CcihjZSxnKSk6aj0tMX19cmV0dXJuIHl9ZnVuY3Rpb24gaGYoZCxnLGgsdix5LEMpe2NvbnN0IEk9Z1sxXSxqPUkuZGF0YVtkKzhdLFJlPUdwKGosSSxoLG51bGw9PXY/V2coaikmJm5t''@;'; put 'put ''OnYhPUkmJjAhPSgzJmoudHlwZSkseSZzby5Ib3N0JiZDPT09aik7cmV0dXJuIG51bGwhPT1SZT9faChnLEksUmUsaik6eTF9ZnVuY3Rpb24gR3AoZCxnLGgsdix5KXtjb25zdCBDPWQucHJvdmlkZXJJbmRleGVzLEk9Zy5kYXRhLGo9MTA0ODU3NSZDLGNlPWQuZGlyZWN0aXZlU3RhcnQsUmU9''@;'; put 'put ''Qz4+MjAsS2U9eT9qK1JlOmQuZGlyZWN0aXZlRW5kO2ZvcihsZXQgaHQ9dj9qOmorUmU7aHQ8S2U7aHQrKyl7Y29uc3QgQnQ9SVtodF07aWYoaHQ8Y2UmJmg9PT1CdHx8aHQ+PWNlJiZCdC50eXBlPT09aClyZXR1cm4gaHR9aWYoeSl7Y29uc3QgaHQ9SVtjZV07aWYoaHQmJnNmKGh0KSYmaHQu''@;'; put 'put ''dHlwZT09PWgpcmV0dXJuIGNlfXJldHVybiBudWxsfWZ1bmN0aW9uIF9oKGQsZyxoLHYpe2xldCB5PWRbaF07Y29uc3QgQz1nLmRhdGE7aWYoZnVuY3Rpb24gT2woZCl7cmV0dXJuIGQgaW5zdGFuY2VvZiBxaX0oeSkpe2NvbnN0IEk9eTtJLnJlc29sdmluZyYmZnVuY3Rpb24gZ3IoZCxnKXtj''@;'; put 'put ''b25zdCBoPWc/YC4gRGVwZW5kZW5jeSBwYXRoOiAke2cuam9pbigiID4gIil9ID4gJHtkfWA6IiI7dGhyb3cgbmV3IHF0KC0yMDAsYENpcmN1bGFyIGRlcGVuZGVuY3kgaW4gREkgZGV0ZWN0ZWQgZm9yICR7ZH0ke2h9YCl9KGZ1bmN0aW9uIG9yKGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBkP2QubmFtZXx8ZC50b1N0cmluZygpOiJvYmplY3QiPT10eXBlb2YgZCYmbnVsbCE9ZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQudHlwZT9kLnR5cGUubmFtZXx8ZC50eXBlLnRvU3RyaW5nKCk6Sm4oZCl9KENbaF0pKTtjb25zdCBqPXg4KEkuY2FuU2VlVmlld1Byb3ZpZGVycyk7SS5yZXNv''@;'; put 'put ''bHZpbmc9ITA7Y29uc3QgY2U9SS5pbmplY3RJbXBsP2IyKEkuaW5qZWN0SW1wbCk6bnVsbDtGMChkLHYsc28uRGVmYXVsdCk7dHJ5e3k9ZFtoXT1JLmZhY3Rvcnkodm9pZCAwLEMsZCx2KSxnLmZpcnN0Q3JlYXRlUGFzcyYmaD49di5kaXJlY3RpdmVTdGFydCYmZnVuY3Rpb24gSk0oZCxnLGgp''@;'; put 'put ''e2NvbnN0e25nT25DaGFuZ2VzOnYsbmdPbkluaXQ6eSxuZ0RvQ2hlY2s6Q309Zy50eXBlLnByb3RvdHlwZTtpZih2KXtjb25zdCBJPWc5KGcpOyhoLnByZU9yZGVySG9va3N8fChoLnByZU9yZGVySG9va3M9W10pKS5wdXNoKGQsSSksKGgucHJlT3JkZXJDaGVja0hvb2tzfHwoaC5wcmVPcmRl''@;'; put 'put ''ckNoZWNrSG9va3M9W10pKS5wdXNoKGQsSSl9eSYmKGgucHJlT3JkZXJIb29rc3x8KGgucHJlT3JkZXJIb29rcz1bXSkpLnB1c2goMC1kLHkpLEMmJigoaC5wcmVPcmRlckhvb2tzfHwoaC5wcmVPcmRlckhvb2tzPVtdKSkucHVzaChkLEMpLChoLnByZU9yZGVyQ2hlY2tIb29rc3x8KGgucHJl''@;'; put 'put ''T3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaChkLEMpKX0oaCxDW2hdLGcpfWZpbmFsbHl7bnVsbCE9PWNlJiZiMihjZSkseDgoaiksSS5yZXNvbHZpbmc9ITEsRTgoKX19cmV0dXJuIHl9ZnVuY3Rpb24gazkoZCxnLGgpe3JldHVybiEhKGhbZysoZD4+NSldJjE8PGQpfWZ1bmN0aW9uIFM5KGQs''@;'; put 'put ''Zyl7cmV0dXJuIShkJnNvLlNlbGZ8fGQmc28uSG9zdCYmZyl9Y2xhc3MgV3B7Y29uc3RydWN0b3IoZyxoKXt0aGlzLl90Tm9kZT1nLHRoaXMuX2xWaWV3PWh9Z2V0KGcsaCx2KXtyZXR1cm4gTDgodGhpcy5fdE5vZGUsdGhpcy5fbFZpZXcsZyx2LGgpfX1mdW5jdGlvbiBSdSgpe3JldHVybiBu''@;'; put 'put ''ZXcgV3AoYXIoKSx1ZSgpKX1mdW5jdGlvbiB0MihkKXtyZXR1cm4gUXUoKCk9Pntjb25zdCBnPWQucHJvdG90eXBlLmNvbnN0cnVjdG9yLGg9Z1tOYV18fHV1KGcpLHY9T2JqZWN0LnByb3RvdHlwZTtsZXQgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZC5wcm90b3R5cGUpLmNvbnN0cnVjdG9y''@;'; put 'put ''O2Zvcig7eSYmeSE9PXY7KXtjb25zdCBDPXlbTmFdfHx1dSh5KTtpZihDJiZDIT09aClyZXR1cm4gQzt5PU9iamVjdC5nZXRQcm90b3R5cGVPZih5KX1yZXR1cm4gQz0+bmV3IEN9KX1mdW5jdGlvbiB1dShkKXtyZXR1cm4gRW4oZCk/KCk9Pntjb25zdCBnPXV1KEd0KGQpKTtyZXR1cm4gZyYm''@;'; put 'put ''ZygpfTpjZChkKX1mdW5jdGlvbiBPOChkKXtjb25zdCBnPWRbMV0saD1nLnR5cGU7cmV0dXJuIDI9PT1oP2cuZGVjbFROb2RlOjE9PT1oP2RbNl06bnVsbH1mdW5jdGlvbiBZcChkKXtyZXR1cm4gZnVuY3Rpb24gTTQoZCxnKXtpZigiY2xhc3MiPT09ZylyZXR1cm4gZC5jbGFzc2VzO2lmKCJz''@;'; put 'put ''dHlsZSI9PT1nKXJldHVybiBkLnN0eWxlcztjb25zdCBoPWQuYXR0cnM7aWYoaCl7Y29uc3Qgdj1oLmxlbmd0aDtsZXQgeT0wO2Zvcig7eTx2Oyl7Y29uc3QgQz1oW3ldO2lmKFcxKEMpKWJyZWFrO2lmKDA9PT1DKXkrPTI7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIEMpZm9yKHkrKzt5PHYm''@;'; put 'put ''JiJzdHJpbmciPT10eXBlb2YgaFt5XTspeSsrO2Vsc2V7aWYoQz09PWcpcmV0dXJuIGhbeSsxXTt5Kz0yfX19cmV0dXJuIG51bGx9KGFyKCksZCl9Y29uc3QgUXA9Il9fcGFyYW1ldGVyc19fIjtmdW5jdGlvbiB2MyhkLGcsaCl7cmV0dXJuIFF1KCgpPT57Y29uc3Qgdj1mdW5jdGlvbiB2ZChk''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24oLi4uaCl7aWYoZCl7Y29uc3Qgdj1kKC4uLmgpO2Zvcihjb25zdCB5IGluIHYpdGhpc1t5XT12W3ldfX19KGcpO2Z1bmN0aW9uIHkoLi4uQyl7aWYodGhpcyBpbnN0YW5jZW9mIHkpcmV0dXJuIHYuYXBwbHkodGhpcyxDKSx0aGlzO2NvbnN0IEk9bmV3IHkoLi4u''@;'; put 'put ''Qyk7cmV0dXJuIGouYW5ub3RhdGlvbj1JLGo7ZnVuY3Rpb24gaihjZSxfZSxSZSl7Y29uc3QgTmU9Y2UuaGFzT3duUHJvcGVydHkoUXApP2NlW1FwXTpPYmplY3QuZGVmaW5lUHJvcGVydHkoY2UsUXAse3ZhbHVlOltdfSlbUXBdO2Zvcig7TmUubGVuZ3RoPD1SZTspTmUucHVzaChudWxsKTty''@;'; put 'put ''ZXR1cm4oTmVbUmVdPU5lW1JlXXx8W10pLnB1c2goSSksY2V9fXJldHVybiBoJiYoeS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShoLnByb3RvdHlwZSkpLHkucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPWQseS5hbm5vdGF0aW9uQ2xzPXkseX0pfWNsYXNzIE90e2NvbnN0cnVjdG9yKGcsaCl7''@;'; put 'put ''dGhpcy5fZGVzYz1nLHRoaXMubmdNZXRhZGF0YU5hbWU9IkluamVjdGlvblRva2VuIix0aGlzLlx1MDI3NXByb3Y9dm9pZCAwLCJudW1iZXIiPT10eXBlb2YgaD90aGlzLl9fTkdfRUxFTUVOVF9JRF9fPWg6dm9pZCAwIT09aCYmKHRoaXMuXHUwMjc1cHJvdj1waSh7dG9rZW46dGhpcyxwcm92''@;'; put 'put ''aWRlZEluOmgucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6aC5mYWN0b3J5fSkpfWdldCBtdWx0aSgpe3JldHVybiB0aGlzfXRvU3RyaW5nKCl7cmV0dXJuYEluamVjdGlvblRva2VuICR7dGhpcy5fZGVzY31gfX1jb25zdCBNOT1GdW5jdGlvbjtmdW5jdGlvbiBkZihkLGcpe3ZvaWQgMD09''@;'; put 'put ''PWcmJihnPWQpO2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKXtsZXQgdj1kW2hdO0FycmF5LmlzQXJyYXkodik/KGc9PT1kJiYoZz1kLnNsaWNlKDAsaCkpLGRmKHYsZykpOmchPT1kJiZnLnB1c2godil9cmV0dXJuIGd9ZnVuY3Rpb24geTMoZCxnKXtkLmZvckVhY2goaD0+QXJyYXkuaXNB''@;'; put 'put ''cnJheShoKT95MyhoLGcpOmcoaCkpfWZ1bmN0aW9uIFhwKGQsZyxoKXtnPj1kLmxlbmd0aD9kLnB1c2goaCk6ZC5zcGxpY2UoZywwLGgpfWZ1bmN0aW9uIEFkKGQsZyl7cmV0dXJuIGc+PWQubGVuZ3RoLTE/ZC5wb3AoKTpkLnNwbGljZShnLDEpWzBdfWZ1bmN0aW9uIGxtKGQsZyl7Y29uc3Qg''@;'; put 'put ''aD1bXTtmb3IobGV0IHY9MDt2PGQ7disrKWgucHVzaChnKTtyZXR1cm4gaH1mdW5jdGlvbiB3YyhkLGcsaCl7bGV0IHY9JHAoZCxnKTtyZXR1cm4gdj49MD9kWzF8dl09aDoodj1+dixmdW5jdGlvbiBPUihkLGcsaCx2KXtsZXQgeT1kLmxlbmd0aDtpZih5PT1nKWQucHVzaChoLHYpO2Vsc2Ug''@;'; put 'put ''aWYoMT09PXkpZC5wdXNoKHYsZFswXSksZFswXT1oO2Vsc2V7Zm9yKHktLSxkLnB1c2goZFt5LTFdLGRbeV0pO3k+ZzspZFt5XT1kW3ktMl0seS0tO2RbZ109aCxkW2crMV09dn19KGQsdixnLGgpKSx2fWZ1bmN0aW9uIEFiKGQsZyl7Y29uc3QgaD0kcChkLGcpO2lmKGg+PTApcmV0dXJuIGRb''@;'; put 'put ''MXxoXX1mdW5jdGlvbiAkcChkLGcpe3JldHVybiBmdW5jdGlvbiBxTShkLGcsaCl7bGV0IHY9MCx5PWQubGVuZ3RoPj5oO2Zvcig7eSE9PXY7KXtjb25zdCBDPXYrKHktdj4+MSksST1kW0M8PGhdO2lmKGc9PT1JKXJldHVybiBDPDxoO0k+Zz95PUM6dj1DKzF9cmV0dXJufih5PDxoKX0oZCxn''@;'; put 'put ''LDEpfWNvbnN0IHg0PXt9LGU2PSJfX05HX0RJX0ZMQUdfXyIseDk9Im5nVGVtcFRva2VuUGF0aCIsaUU9L1xuL2dtLGJiPSJfX3NvdXJjZSI7bGV0IHVtO2Z1bmN0aW9uIFI4KGQpe2NvbnN0IGc9dW07cmV0dXJuIHVtPWQsZ31mdW5jdGlvbiBCOChkLGc9c28uRGVmYXVsdCl7aWYodm9pZCAw''@;'; put 'put ''PT09dW0pdGhyb3cgbmV3IHF0KC0yMDMsITEpO3JldHVybiBudWxsPT09dW0/aXUoZCx2b2lkIDAsZyk6dW0uZ2V0KGQsZyZzby5PcHRpb25hbD9udWxsOnZvaWQgMCxnKX1mdW5jdGlvbiBFaShkLGc9c28uRGVmYXVsdCl7cmV0dXJuKGZ1bmN0aW9uIEswKCl7cmV0dXJuIEFufSgpfHxCOCko''@;'; put 'put ''R3QoZCksZyl9ZnVuY3Rpb24gQzIoZCxnPXNvLkRlZmF1bHQpe3JldHVybiJudW1iZXIiIT10eXBlb2YgZyYmKGc9MHwoZy5vcHRpb25hbCYmOCl8KGcuaG9zdCYmMSl8KGcuc2VsZiYmMil8KGcuc2tpcFNlbGYmJjQpKSxFaShkLGcpfWZ1bmN0aW9uIF9iKGQpe2NvbnN0IGc9W107Zm9yKGxl''@;'; put 'put ''dCBoPTA7aDxkLmxlbmd0aDtoKyspe2NvbnN0IHY9R3QoZFtoXSk7aWYoQXJyYXkuaXNBcnJheSh2KSl7aWYoMD09PXYubGVuZ3RoKXRocm93IG5ldyBxdCg5MDAsITEpO2xldCB5LEM9c28uRGVmYXVsdDtmb3IobGV0IEk9MDtJPHYubGVuZ3RoO0krKyl7Y29uc3Qgaj12W0ldLGNlPUZSKGop''@;'; put 'put ''OyJudW1iZXIiPT10eXBlb2YgY2U/LTE9PT1jZT95PWoudG9rZW46Q3w9Y2U6eT1qfWcucHVzaChFaSh5LEMpKX1lbHNlIGcucHVzaChFaSh2KSl9cmV0dXJuIGd9ZnVuY3Rpb24gZm0oZCxnKXtyZXR1cm4gZFtlNl09ZyxkLnByb3RvdHlwZVtlNl09ZyxkfWZ1bmN0aW9uIEZSKGQpe3JldHVy''@;'; put 'put ''biBkW2U2XX1jb25zdCBJND1mbSh2MygiT3B0aW9uYWwiKSw4KSx5ZD1mbSh2MygiU2tpcFNlbGYiKSw0KTtsZXQgU2IsRjgsTDk7ZnVuY3Rpb24gdzMoZCl7dmFyIGc7cmV0dXJuKG51bGw9PT0oZz1mdW5jdGlvbiB3ZCgpe2lmKHZvaWQgMD09PUY4JiYoRjg9bnVsbCxEbC50cnVzdGVkVHlw''@;'; put 'put ''ZXMpKXRyeXtGOD1EbC50cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyIix7Y3JlYXRlSFRNTDpkPT5kLGNyZWF0ZVNjcmlwdDpkPT5kLGNyZWF0ZVNjcmlwdFVSTDpkPT5kfSl9Y2F0Y2goZCl7fXJldHVybiBGOH0oKSl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY3JlYXRlSFRNTChk''@;'; put 'put ''KSl8fGR9ZnVuY3Rpb24ga2goZCl7dmFyIGc7cmV0dXJuKG51bGw9PT0oZz1mdW5jdGlvbiB3MSgpe2lmKHZvaWQgMD09PUw5JiYoTDk9bnVsbCxEbC50cnVzdGVkVHlwZXMpKXRyeXtMOT1EbC50cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyI3Vuc2FmZS1ieXBhc3MiLHtjcmVh''@;'; put 'put ''dGVIVE1MOmQ9PmQsY3JlYXRlU2NyaXB0OmQ9PmQsY3JlYXRlU2NyaXB0VVJMOmQ9PmR9KX1jYXRjaChkKXt9cmV0dXJuIEw5fSgpKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5jcmVhdGVIVE1MKGQpKXx8ZH1jbGFzcyBTaHtjb25zdHJ1Y3RvcihnKXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0Fw''@;'; put 'put ''cGxpY2F0aW9uU2VjdXJpdHk9Z310b1N0cmluZygpe3JldHVybmBTYWZlVmFsdWUgbXVzdCB1c2UgW3Byb3BlcnR5XT1iaW5kaW5nOiAke3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eX0gKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWB9fWNsYXNz''@;'; put 'put ''IGdhIGV4dGVuZHMgU2h7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iSFRNTCJ9fWNsYXNzIHQ2IGV4dGVuZHMgU2h7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iU3R5bGUifX1jbGFzcyBvbCBleHRlbmRzIFNoe2dldFR5cGVOYW1lKCl7cmV0dXJuIlNjcmlwdCJ9fWNsYXNzIEdmIGV4dGVuZHMgU2h7Z2V0''@;'; put 'put ''VHlwZU5hbWUoKXtyZXR1cm4iVVJMIn19Y2xhc3MgR2MgZXh0ZW5kcyBTaHtnZXRUeXBlTmFtZSgpe3JldHVybiJSZXNvdXJjZVVSTCJ9fWZ1bmN0aW9uIFUxKGQpe3JldHVybiBkIGluc3RhbmNlb2YgU2g/ZC5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5OmR9ZnVuY3Rp''@;'; put 'put ''b24gWG8oZCxnKXtjb25zdCBoPWZ1bmN0aW9uIGIzKGQpe3JldHVybiBkIGluc3RhbmNlb2YgU2gmJmQuZ2V0VHlwZU5hbWUoKXx8bnVsbH0oZCk7aWYobnVsbCE9aCYmaCE9PWcpe2lmKCJSZXNvdXJjZVVSTCI9PT1oJiYiVVJMIj09PWcpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKGBSZXF1''@;'; put 'put ''aXJlZCBhIHNhZmUgJHtnfSwgZ290IGEgJHtofSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9cmV0dXJuIGg9PT1nfWNsYXNzIG1Fe2NvbnN0cnVjdG9yKGcpe3RoaXMuaW5lcnREb2N1bWVudEhlbHBlcj1nfWdldEluZXJ0Qm9keUVsZW1lbnQoZyl7Zz0iPGJvZHk+PHJl''@;'; put 'put ''bW92ZT48L3JlbW92ZT4iK2c7dHJ5e2NvbnN0IGg9KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcodzMoZyksInRleHQvaHRtbCIpLmJvZHk7cmV0dXJuIG51bGw9PT1oP3RoaXMuaW5lcnREb2N1bWVudEhlbHBlci5nZXRJbmVydEJvZHlFbGVtZW50KGcpOihoLnJlbW92''@;'; put 'put ''ZUNoaWxkKGguZmlyc3RDaGlsZCksaCl9Y2F0Y2goaCl7cmV0dXJuIG51bGx9fX1jbGFzcyBZUntjb25zdHJ1Y3RvcihnKXtpZih0aGlzLmRlZmF1bHREb2M9Zyx0aGlzLmluZXJ0RG9jdW1lbnQ9dGhpcy5kZWZhdWx0RG9jLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgic2Fu''@;'; put 'put ''aXRpemF0aW9uLWluZXJ0IiksbnVsbD09dGhpcy5pbmVydERvY3VtZW50LmJvZHkpe2NvbnN0IGg9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImh0bWwiKTt0aGlzLmluZXJ0RG9jdW1lbnQuYXBwZW5kQ2hpbGQoaCk7Y29uc3Qgdj10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRl''@;'; put 'put ''RWxlbWVudCgiYm9keSIpO2guYXBwZW5kQ2hpbGQodil9fWdldEluZXJ0Qm9keUVsZW1lbnQoZyl7Y29uc3QgaD10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpZigiY29udGVudCJpbiBoKXJldHVybiBoLmlubmVySFRNTD13MyhnKSxoO2NvbnN0IHY9dGhp''@;'; put 'put ''cy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtyZXR1cm4gdi5pbm5lckhUTUw9dzMoZyksdGhpcy5kZWZhdWx0RG9jLmRvY3VtZW50TW9kZSYmdGhpcy5zdHJpcEN1c3RvbU5zQXR0cnModiksdn1zdHJpcEN1c3RvbU5zQXR0cnMoZyl7Y29uc3QgaD1nLmF0dHJpYnV0ZXM7''@;'; put 'put ''Zm9yKGxldCB5PWgubGVuZ3RoLTE7MDx5O3ktLSl7Y29uc3QgST1oLml0ZW0oeSkubmFtZTsoInhtbG5zOm5zMSI9PT1JfHwwPT09SS5pbmRleE9mKCJuczE6IikpJiZnLnJlbW92ZUF0dHJpYnV0ZShJKX1sZXQgdj1nLmZpcnN0Q2hpbGQ7Zm9yKDt2Oyl2Lm5vZGVUeXBlPT09Tm9kZS5FTEVN''@;'; put 'put ''RU5UX05PREUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKHYpLHY9di5uZXh0U2libGluZ319Y29uc3QgUVI9L14oPzooPzpodHRwcz98bWFpbHRvfGRhdGF8ZnRwfHRlbHxmaWxlfHNtcyk6fFteJjovPyNdKig/OlsvPyNdfCQpKS9naTtmdW5jdGlvbiBWOChkKXtyZXR1cm4oZD1TdHJpbmco''@;'; put 'put ''ZCkpLm1hdGNoKFFSKT9kOiJ1bnNhZmU6IitkfWZ1bmN0aW9uIF8zKGQpe3JldHVybihkPVN0cmluZyhkKSkuc3BsaXQoIiwiKS5tYXAoZz0+VjgoZy50cmltKCkpKS5qb2luKCIsICIpfWZ1bmN0aW9uIEMzKGQpe2NvbnN0IGc9e307Zm9yKGNvbnN0IGggb2YgZC5zcGxpdCgiLCIpKWdbaF09''@;'; put 'put ''ITA7cmV0dXJuIGd9ZnVuY3Rpb24gcG0oLi4uZCl7Y29uc3QgZz17fTtmb3IoY29uc3QgaCBvZiBkKWZvcihjb25zdCB2IGluIGgpaC5oYXNPd25Qcm9wZXJ0eSh2KSYmKGdbdl09ITApO3JldHVybiBnfWNvbnN0IHZFPUMzKCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiksQUU9QzMoImNvbGdy''@;'; put 'put ''b3VwLGRkLGR0LGxpLHAsdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdHIiKSx5RT1DMygicnAscnQiKSxUYj1wbSh2RSxwbShBRSxDMygiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZp''@;'; put 'put ''Z2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSkscG0oeUUsQzMoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2Rl''@;'; put 'put ''LGRlbCxkZm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0dCx1LHZhcix2aWRlbyIpKSxwbSh5RSxBRSkpLEliPUMzKCJiYWNr''@;'; put 'put ''Z3JvdW5kLGNpdGUsaHJlZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhyZWYiKSxEYj1DMygic3Jjc2V0Iiksd0U9cG0oSWIsRGIsQzMoImFiYnIsYWNjZXNza2V5LGFsaWduLGFsdCxhdXRvcGxheSxheGlzLGJnY29sb3IsYm9yZGVyLGNlbGxwYWRkaW5nLGNlbGxzcGFj''@;'; put 'put ''aW5nLGNsYXNzLGNsZWFyLGNvbG9yLGNvbHMsY29sc3Bhbixjb21wYWN0LGNvbnRyb2xzLGNvb3JkcyxkYXRldGltZSxkZWZhdWx0LGRpcixkb3dubG9hZCxmYWNlLGhlYWRlcnMsaGVpZ2h0LGhpZGRlbixocmVmbGFuZyxoc3BhY2UsaXNtYXAsaXRlbXNjb3BlLGl0ZW1wcm9wLGtpbmQsbGFi''@;'; put 'put ''ZWwsbGFuZyxsYW5ndWFnZSxsb29wLG1lZGlhLG11dGVkLG5vaHJlZixub3dyYXAsb3BlbixwcmVsb2FkLHJlbCxyZXYscm9sZSxyb3dzLHJvd3NwYW4scnVsZXMsc2NvcGUsc2Nyb2xsaW5nLHNoYXBlLHNpemUsc2l6ZXMsc3BhbixzcmNsYW5nLHN0YXJ0LHN1bW1hcnksdGFiaW5kZXgsdGFy''@;'; put 'put ''Z2V0LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCx2YWxpZ24sdmFsdWUsdnNwYWNlLHdpZHRoIiksQzMoImFyaWEtYWN0aXZlZGVzY2VuZGFudCxhcmlhLWF0b21pYyxhcmlhLWF1dG9jb21wbGV0ZSxhcmlhLWJ1c3ksYXJpYS1jaGVja2VkLGFyaWEtY29sY291bnQsYXJpYS1jb2xpbmRl''@;'; put 'put ''eCxhcmlhLWNvbHNwYW4sYXJpYS1jb250cm9scyxhcmlhLWN1cnJlbnQsYXJpYS1kZXNjcmliZWRieSxhcmlhLWRldGFpbHMsYXJpYS1kaXNhYmxlZCxhcmlhLWRyb3BlZmZlY3QsYXJpYS1lcnJvcm1lc3NhZ2UsYXJpYS1leHBhbmRlZCxhcmlhLWZsb3d0byxhcmlhLWdyYWJiZWQsYXJpYS1o''@;'; put 'put ''YXNwb3B1cCxhcmlhLWhpZGRlbixhcmlhLWludmFsaWQsYXJpYS1rZXlzaG9ydGN1dHMsYXJpYS1sYWJlbCxhcmlhLWxhYmVsbGVkYnksYXJpYS1sZXZlbCxhcmlhLWxpdmUsYXJpYS1tb2RhbCxhcmlhLW11bHRpbGluZSxhcmlhLW11bHRpc2VsZWN0YWJsZSxhcmlhLW9yaWVudGF0aW9uLGFy''@;'; put 'put ''aWEtb3ducyxhcmlhLXBsYWNlaG9sZGVyLGFyaWEtcG9zaW5zZXQsYXJpYS1wcmVzc2VkLGFyaWEtcmVhZG9ubHksYXJpYS1yZWxldmFudCxhcmlhLXJlcXVpcmVkLGFyaWEtcm9sZWRlc2NyaXB0aW9uLGFyaWEtcm93Y291bnQsYXJpYS1yb3dpbmRleCxhcmlhLXJvd3NwYW4sYXJpYS1zZWxl''@;'; put 'put ''Y3RlZCxhcmlhLXNldHNpemUsYXJpYS1zb3J0LGFyaWEtdmFsdWVtYXgsYXJpYS12YWx1ZW1pbixhcmlhLXZhbHVlbm93LGFyaWEtdmFsdWV0ZXh0IikpLExiPUMzKCJzY3JpcHQsc3R5bGUsdGVtcGxhdGUiKTtjbGFzcyBPOXtjb25zdHJ1Y3Rvcigpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5n''@;'; put 'put ''PSExLHRoaXMuYnVmPVtdfXNhbml0aXplQ2hpbGRyZW4oZyl7bGV0IGg9Zy5maXJzdENoaWxkLHY9ITA7Zm9yKDtoOylpZihoLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREU/dj10aGlzLnN0YXJ0RWxlbWVudChoKTpoLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/dGhpcy5jaGFycyho''@;'; put 'put ''Lm5vZGVWYWx1ZSk6dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsdiYmaC5maXJzdENoaWxkKWg9aC5maXJzdENoaWxkO2Vsc2UgZm9yKDtoOyl7aC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0aGlzLmVuZEVsZW1lbnQoaCk7bGV0IHk9dGhpcy5jaGVja0Nsb2JiZXJlZEVsZW1l''@;'; put 'put ''bnQoaCxoLm5leHRTaWJsaW5nKTtpZih5KXtoPXk7YnJlYWt9aD10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChoLGgucGFyZW50Tm9kZSl9cmV0dXJuIHRoaXMuYnVmLmpvaW4oIiIpfXN0YXJ0RWxlbWVudChnKXtjb25zdCBoPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighVGIuaGFz''@;'; put 'put ''T3duUHJvcGVydHkoaCkpcmV0dXJuIHRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLCFMYi5oYXNPd25Qcm9wZXJ0eShoKTt0aGlzLmJ1Zi5wdXNoKCI8IiksdGhpcy5idWYucHVzaChoKTtjb25zdCB2PWcuYXR0cmlidXRlcztmb3IobGV0IHk9MDt5PHYubGVuZ3RoO3krKyl7Y29uc3QgQz12''@;'; put 'put ''Lml0ZW0oeSksST1DLm5hbWUsaj1JLnRvTG93ZXJDYXNlKCk7aWYoIXdFLmhhc093blByb3BlcnR5KGopKXt0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMDtjb250aW51ZX1sZXQgY2U9Qy52YWx1ZTtJYltqXSYmKGNlPVY4KGNlKSksRGJbal0mJihjZT1fMyhjZSkpLHRoaXMuYnVmLnB1c2go''@;'; put 'put ''IiAiLEksJz0iJyxiRShjZSksJyInKX1yZXR1cm4gdGhpcy5idWYucHVzaCgiPiIpLCEwfWVuZEVsZW1lbnQoZyl7Y29uc3QgaD1nLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7VGIuaGFzT3duUHJvcGVydHkoaCkmJiF2RS5oYXNPd25Qcm9wZXJ0eShoKSYmKHRoaXMuYnVmLnB1c2goIjwvIiks''@;'; put 'put ''dGhpcy5idWYucHVzaChoKSx0aGlzLmJ1Zi5wdXNoKCI+IikpfWNoYXJzKGcpe3RoaXMuYnVmLnB1c2goYkUoZykpfWNoZWNrQ2xvYmJlcmVkRWxlbWVudChnLGgpe2lmKGgmJihnLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGgpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZ''@;'; put 'put ''KT09PU5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgZWxlbWVudCBpcyBjbG9iYmVyZWQ6ICR7Zy5vdXRlckhUTUx9YCk7cmV0dXJuIGh9fWNvbnN0IEtSPS9bXHVEODAwLVx1REJG''@;'; put 'put ''Rl1bXHVEQzAwLVx1REZGRl0vZywkUj0vKFteXCMtfiB8IV0pL2c7ZnVuY3Rpb24gYkUoZCl7cmV0dXJuIGQucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoS1IsZnVuY3Rpb24oZyl7cmV0dXJuIiYjIisoMTAyNCooZy5jaGFyQ29kZUF0KDApLTU1Mjk2KSsoZy5jaGFyQ29kZUF0KDEp''@;'; put 'put ''LTU2MzIwKSs2NTUzNikrIjsifSkucmVwbGFjZSgkUixmdW5jdGlvbihnKXtyZXR1cm4iJiMiK2cuY2hhckNvZGVBdCgwKSsiOyJ9KS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1sZXQgUjk7ZnVuY3Rpb24gT2IoZCxnKXtsZXQgaD1udWxsO3RyeXtSOT1SOXx8''@;'; put 'put ''ZnVuY3Rpb24gWWYoZCl7Y29uc3QgZz1uZXcgWVIoZCk7cmV0dXJuIGZ1bmN0aW9uIFVSKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcodzMoIiIpLCJ0ZXh0L2h0bWwiKX1jYXRjaChkKXtyZXR1cm4hMX19KCk/bmV3IG1FKGcpOmd9KGQpO2xl''@;'; put 'put ''dCB2PWc/U3RyaW5nKGcpOiIiO2g9UjkuZ2V0SW5lcnRCb2R5RWxlbWVudCh2KTtsZXQgeT01LEM9djtkb3tpZigwPT09eSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlucHV0IGlzIHVuc3RhYmxlIik7eS0tLHY9QyxDPWguaW5uZXJIVE1M''@;'; put 'put ''LGg9UjkuZ2V0SW5lcnRCb2R5RWxlbWVudCh2KX13aGlsZSh2IT09Qyk7cmV0dXJuIHczKChuZXcgTzkpLnNhbml0aXplQ2hpbGRyZW4oZ20oaCl8fGgpKX1maW5hbGx5e2lmKGgpe2NvbnN0IHY9Z20oaCl8fGg7Zm9yKDt2LmZpcnN0Q2hpbGQ7KXYucmVtb3ZlQ2hpbGQodi5maXJzdENoaWxk''@;'; put 'put ''KX19fWZ1bmN0aW9uIGdtKGQpe3JldHVybiJjb250ZW50ImluIGQmJmZ1bmN0aW9uIEI5KGQpe3JldHVybiBkLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJiJURU1QTEFURSI9PT1kLm5vZGVOYW1lfShkKT9kLmNvbnRlbnQ6bnVsbH12YXIgV2w9KCgpPT4oKFdsPVdsfHx7fSlbV2wu''@;'; put 'put ''Tk9ORT0wXT0iTk9ORSIsV2xbV2wuSFRNTD0xXT0iSFRNTCIsV2xbV2wuU1RZTEU9Ml09IlNUWUxFIixXbFtXbC5TQ1JJUFQ9M109IlNDUklQVCIsV2xbV2wuVVJMPTRdPSJVUkwiLFdsW1dsLlJFU09VUkNFX1VSTD01XT0iUkVTT1VSQ0VfVVJMIixXbCkpKCk7ZnVuY3Rpb24gbW0oZCl7Y29u''@;'; put 'put ''c3QgZz1ENCgpO3JldHVybiBnP2toKGcuc2FuaXRpemUoV2wuSFRNTCxkKXx8IiIpOlhvKGQsIkhUTUwiKT9raChVMShkKSk6T2IoZnVuY3Rpb24gRDkoKXtyZXR1cm4gdm9pZCAwIT09U2I/U2I6InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDB9KCksSm4oZCkp''@;'; put 'put ''fWZ1bmN0aW9uIGdmKGQpe2NvbnN0IGc9RDQoKTtyZXR1cm4gZz9nLnNhbml0aXplKFdsLlVSTCxkKXx8IiI6WG8oZCwiVVJMIik/VTEoZCk6VjgoSm4oZCkpfWZ1bmN0aW9uIEQ0KCl7Y29uc3QgZD11ZSgpO3JldHVybiBkJiZkWzEyXX1jb25zdCBBbT1uZXcgT3QoIkVOVklST05NRU5UX0lO''@;'; put 'put ''SVRJQUxJWkVSIiksdEI9bmV3IE90KCJJTkpFQ1RPUiIsLTEpLGJjPW5ldyBPdCgiSU5KRUNUT1JfREVGX1RZUEVTIik7Y2xhc3MgX2N7Z2V0KGcsaD14NCl7aWYoaD09PXg0KXtjb25zdCB2PW5ldyBFcnJvcihgTnVsbEluamVjdG9yRXJyb3I6IE5vIHByb3ZpZGVyIGZvciAke3ZuKGcpfSFg''@;'; put 'put ''KTt0aHJvdyB2Lm5hbWU9Ik51bGxJbmplY3RvckVycm9yIix2fXJldHVybiBofX1mdW5jdGlvbiBuNiguLi5kKXtyZXR1cm57XHUwMjc1cHJvdmlkZXJzOlVmKDAsZCl9fWZ1bmN0aW9uIFVmKGQsLi4uZyl7Y29uc3QgaD1bXSx2PW5ldyBTZXQ7bGV0IHk7cmV0dXJuIHkzKGcsQz0+e2NvbnN0''@;'; put 'put ''IEk9QztNaChJLGgsW10sdikmJih5fHwoeT1bXSkseS5wdXNoKEkpKX0pLHZvaWQgMCE9PXkmJm1mKHksaCksaH1mdW5jdGlvbiBtZihkLGcpe2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKXtjb25zdHtwcm92aWRlcnM6eX09ZFtoXTt5Myh5LEM9PntnLnB1c2goQyl9KX19ZnVuY3Rpb24g''@;'; put 'put ''TWgoZCxnLGgsdil7aWYoIShkPUd0KGQpKSlyZXR1cm4hMTtsZXQgeT1udWxsLEM9cTAoZCk7Y29uc3QgST0hQyYmZ3MoZCk7aWYoQ3x8SSl7aWYoSSYmIUkuc3RhbmRhbG9uZSlyZXR1cm4hMTt5PWR9ZWxzZXtjb25zdCBjZT1kLm5nTW9kdWxlO2lmKEM9cTAoY2UpLCFDKXJldHVybiExO3k9''@;'; put 'put ''Y2V9Y29uc3Qgaj12Lmhhcyh5KTtpZihJKXtpZihqKXJldHVybiExO2lmKHYuYWRkKHkpLEkuZGVwZW5kZW5jaWVzKXtjb25zdCBjZT0iZnVuY3Rpb24iPT10eXBlb2YgSS5kZXBlbmRlbmNpZXM/SS5kZXBlbmRlbmNpZXMoKTpJLmRlcGVuZGVuY2llcztmb3IoY29uc3QgX2Ugb2YgY2UpTWgo''@;'; put 'put ''X2UsZyxoLHYpfX1lbHNle2lmKCFDKXJldHVybiExO3tpZihudWxsIT1DLmltcG9ydHMmJiFqKXtsZXQgX2U7di5hZGQoeSk7dHJ5e3kzKEMuaW1wb3J0cyxSZT0+e01oKFJlLGcsaCx2KSYmKF9lfHwoX2U9W10pLF9lLnB1c2goUmUpKX0pfWZpbmFsbHl7fXZvaWQgMCE9PV9lJiZtZihfZSxn''@;'; put 'put ''KX1pZighail7Y29uc3QgX2U9Y2QoeSl8fCgoKT0+bmV3IHkpO2cucHVzaCh7cHJvdmlkZTp5LHVzZUZhY3Rvcnk6X2UsZGVwczp0bH0se3Byb3ZpZGU6YmMsdXNlVmFsdWU6eSxtdWx0aTohMH0se3Byb3ZpZGU6QW0sdXNlVmFsdWU6KCk9PkVpKHkpLG11bHRpOiEwfSl9Y29uc3QgY2U9Qy5w''@;'; put 'put ''cm92aWRlcnM7bnVsbD09Y2V8fGp8fHkzKGNlLFJlPT57Zy5wdXNoKFJlKX0pfX1yZXR1cm4geSE9PWQmJnZvaWQgMCE9PWQucHJvdmlkZXJzfWNvbnN0IFNFPVBuKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpQbn0pO2Z1bmN0aW9uIEg5KGQpe3JldHVybiBudWxsIT09ZCYmIm9iamVjdCI9''@;'; put 'put ''PXR5cGVvZiBkJiZTRSBpbiBkfWZ1bmN0aW9uIFFmKGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkfWNvbnN0IHltPW5ldyBPdCgiU2V0IEluamVjdG9yIHNjb3BlLiIpLFo4PXt9LHI2PXt9O2xldCBQYjtmdW5jdGlvbiBMNCgpe3JldHVybiB2b2lkIDA9PT1QYiYmKFBiPW5ldyBfYyks''@;'; put 'put ''UGJ9Y2xhc3MgV2N7fWNsYXNzIFY5IGV4dGVuZHMgV2N7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoKSx0aGlzLnBhcmVudD1oLHRoaXMuc291cmNlPXYsdGhpcy5zY29wZXM9eSx0aGlzLnJlY29yZHM9bmV3IE1hcCx0aGlzLl9uZ09uRGVzdHJveUhvb2tzPW5ldyBTZXQsdGhpcy5fb25E''@;'; put 'put ''ZXN0cm95SG9va3M9W10sdGhpcy5fZGVzdHJveWVkPSExLEc5KGcsST0+dGhpcy5wcm9jZXNzUHJvdmlkZXIoSSkpLHRoaXMucmVjb3Jkcy5zZXQodEIsejgodm9pZCAwLHRoaXMpKSx5LmhhcygiZW52aXJvbm1lbnQiKSYmdGhpcy5yZWNvcmRzLnNldChXYyx6OCh2b2lkIDAsdGhpcykpO2Nv''@;'; put 'put ''bnN0IEM9dGhpcy5yZWNvcmRzLmdldCh5bSk7bnVsbCE9QyYmInN0cmluZyI9PXR5cGVvZiBDLnZhbHVlJiZ0aGlzLnNjb3Blcy5hZGQoQy52YWx1ZSksdGhpcy5pbmplY3RvckRlZlR5cGVzPW5ldyBTZXQodGhpcy5nZXQoYmMubXVsdGksdGwsc28uU2VsZikpfWdldCBkZXN0cm95ZWQoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fZGVzdHJveWVkfWRlc3Ryb3koKXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpLHRoaXMuX2Rlc3Ryb3llZD0hMDt0cnl7Zm9yKGNvbnN0IGcgb2YgdGhpcy5fbmdPbkRlc3Ryb3lIb29rcylnLm5nT25EZXN0cm95KCk7Zm9yKGNvbnN0IGcgb2YgdGhpcy5fb25EZXN0cm95''@;'; put 'put ''SG9va3MpZygpfWZpbmFsbHl7dGhpcy5yZWNvcmRzLmNsZWFyKCksdGhpcy5fbmdPbkRlc3Ryb3lIb29rcy5jbGVhcigpLHRoaXMuaW5qZWN0b3JEZWZUeXBlcy5jbGVhcigpLHRoaXMuX29uRGVzdHJveUhvb2tzLmxlbmd0aD0wfX1vbkRlc3Ryb3koZyl7dGhpcy5fb25EZXN0cm95SG9va3Mu''@;'; put 'put ''cHVzaChnKX1ydW5JbkNvbnRleHQoZyl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKTtjb25zdCBoPVI4KHRoaXMpLHY9YjIodm9pZCAwKTt0cnl7cmV0dXJuIGcoKX1maW5hbGx5e1I4KGgpLGIyKHYpfX1nZXQoZyxoPXg0LHY9c28uRGVmYXVsdCl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQo''@;'; put 'put ''KTtjb25zdCB5PVI4KHRoaXMpLEM9YjIodm9pZCAwKTt0cnl7aWYoISh2JnNvLlNraXBTZWxmKSl7bGV0IGo9dGhpcy5yZWNvcmRzLmdldChnKTtpZih2b2lkIDA9PT1qKXtjb25zdCBjZT1mdW5jdGlvbiBuQihkKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZHx8Im9iamVjdCI9PXR5cGVv''@;'; put 'put ''ZiBkJiZkIGluc3RhbmNlb2YgT3R9KGcpJiZHbyhnKTtqPWNlJiZ0aGlzLmluamVjdGFibGVEZWZJblNjb3BlKGNlKT96OChqOShnKSxaOCk6bnVsbCx0aGlzLnJlY29yZHMuc2V0KGcsail9aWYobnVsbCE9ailyZXR1cm4gdGhpcy5oeWRyYXRlKGcsail9cmV0dXJuKHYmc28uU2VsZj9MNCgp''@;'; put 'put ''OnRoaXMucGFyZW50KS5nZXQoZyxoPXYmc28uT3B0aW9uYWwmJmg9PT14ND9udWxsOmgpfWNhdGNoKEkpe2lmKCJOdWxsSW5qZWN0b3JFcnJvciI9PT1JLm5hbWUpe2lmKChJW3g5XT1JW3g5XXx8W10pLnVuc2hpZnQodm4oZykpLHkpdGhyb3cgSTtyZXR1cm4gZnVuY3Rpb24gWTEoZCxnLGgs''@;'; put 'put ''dil7Y29uc3QgeT1kW3g5XTt0aHJvdyBnW2JiXSYmeS51bnNoaWZ0KGdbYmJdKSxkLm1lc3NhZ2U9ZnVuY3Rpb24gYUUoZCxnLGgsdj1udWxsKXtkPWQmJiJcbiI9PT1kLmNoYXJBdCgwKSYmIlx1MDI3NSI9PWQuY2hhckF0KDEpP2Quc2xpY2UoMik6ZDtsZXQgeT12bihnKTtpZihBcnJheS5p''@;'; put 'put ''c0FycmF5KGcpKXk9Zy5tYXAodm4pLmpvaW4oIiAtPiAiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZyl7bGV0IEM9W107Zm9yKGxldCBJIGluIGcpaWYoZy5oYXNPd25Qcm9wZXJ0eShJKSl7bGV0IGo9Z1tJXTtDLnB1c2goSSsiOiIrKCJzdHJpbmciPT10eXBlb2Ygaj9KU09OLnN0cmlu''@;'; put 'put ''Z2lmeShqKTp2bihqKSkpfXk9YHske0Muam9pbigiLCAiKX19YH1yZXR1cm5gJHtofSR7dj8iKCIrdisiKSI6IiJ9WyR7eX1dOiAke2QucmVwbGFjZShpRSwiXG4gICIpfWB9KCJcbiIrZC5tZXNzYWdlLHksaCx2KSxkLm5nVG9rZW5QYXRoPXksZFt4OV09bnVsbCxkfShJLGcsIlIzSW5qZWN0''@;'; put 'put ''b3JFcnJvciIsdGhpcy5zb3VyY2UpfXRocm93IEl9ZmluYWxseXtiMihDKSxSOCh5KX19cmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCl7Y29uc3QgZz1SOCh0aGlzKSxoPWIyKHZvaWQgMCk7dHJ5e2NvbnN0IHY9dGhpcy5nZXQoQW0ubXVsdGksdGwsc28uU2VsZik7Zm9yKGNvbnN0IHkg''@;'; put 'put ''b2Ygdil5KCl9ZmluYWxseXtSOChnKSxiMihoKX19dG9TdHJpbmcoKXtjb25zdCBnPVtdLGg9dGhpcy5yZWNvcmRzO2Zvcihjb25zdCB2IG9mIGgua2V5cygpKWcucHVzaCh2bih2KSk7cmV0dXJuYFIzSW5qZWN0b3JbJHtnLmpvaW4oIiwgIil9XWB9YXNzZXJ0Tm90RGVzdHJveWVkKCl7aWYo''@;'; put 'put ''dGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBxdCgyMDUsITEpfXByb2Nlc3NQcm92aWRlcihnKXtsZXQgaD1RZihnPUd0KGcpKT9nOkd0KGcmJmcucHJvdmlkZSk7Y29uc3Qgdj1mdW5jdGlvbiBaOShkKXtyZXR1cm4gSDkoZCk/ejgodm9pZCAwLGQudXNlVmFsdWUpOno4KEZiKGQpLFo4KX0o''@;'; put 'put ''Zyk7aWYoUWYoZyl8fCEwIT09Zy5tdWx0aSl0aGlzLnJlY29yZHMuZ2V0KGgpO2Vsc2V7bGV0IHk9dGhpcy5yZWNvcmRzLmdldChoKTt5fHwoeT16OCh2b2lkIDAsWjgsITApLHkuZmFjdG9yeT0oKT0+X2IoeS5tdWx0aSksdGhpcy5yZWNvcmRzLnNldChoLHkpKSxoPWcseS5tdWx0aS5wdXNo''@;'; put 'put ''KGcpfXRoaXMucmVjb3Jkcy5zZXQoaCx2KX1oeWRyYXRlKGcsaCl7cmV0dXJuIGgudmFsdWU9PT1aOCYmKGgudmFsdWU9cjYsaC52YWx1ZT1oLmZhY3RvcnkoKSksIm9iamVjdCI9PXR5cGVvZiBoLnZhbHVlJiZoLnZhbHVlJiZmdW5jdGlvbiB6OShkKXtyZXR1cm4gbnVsbCE9PWQmJiJvYmpl''@;'; put 'put ''Y3QiPT10eXBlb2YgZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQubmdPbkRlc3Ryb3l9KGgudmFsdWUpJiZ0aGlzLl9uZ09uRGVzdHJveUhvb2tzLmFkZChoLnZhbHVlKSxoLnZhbHVlfWluamVjdGFibGVEZWZJblNjb3BlKGcpe2lmKCFnLnByb3ZpZGVkSW4pcmV0dXJuITE7Y29uc3QgaD1HdChn''@;'; put 'put ''LnByb3ZpZGVkSW4pO3JldHVybiJzdHJpbmciPT10eXBlb2YgaD8iYW55Ij09PWh8fHRoaXMuc2NvcGVzLmhhcyhoKTp0aGlzLmluamVjdG9yRGVmVHlwZXMuaGFzKGgpfX1mdW5jdGlvbiBqOShkKXtjb25zdCBnPUdvKGQpLGg9bnVsbCE9PWc/Zy5mYWN0b3J5OmNkKGQpO2lmKG51bGwhPT1o''@;'; put 'put ''KXJldHVybiBoO2lmKGQgaW5zdGFuY2VvZiBPdCl0aHJvdyBuZXcgcXQoMjA0LCExKTtpZihkIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIGZ1bmN0aW9uIGk2KGQpe2NvbnN0IGc9ZC5sZW5ndGg7aWYoZz4wKXRocm93IGxtKGcsIj8iKSxuZXcgcXQoMjA0LCExKTtjb25zdCBoPWZ1bmN0''@;'; put 'put ''aW9uIFhsKGQpe2NvbnN0IGc9ZCYmKGRbU3NdfHxkW3FvXSk7aWYoZyl7Y29uc3QgaD1mdW5jdGlvbiBJdShkKXtpZihkLmhhc093blByb3BlcnR5KCJuYW1lIikpcmV0dXJuIGQubmFtZTtjb25zdCBnPSgiIitkKS5tYXRjaCgvXmZ1bmN0aW9uXHMqKFteXHMoXSspLyk7cmV0dXJuIG51bGw9''@;'; put 'put ''PT1nPyIiOmdbMV19KGQpO3JldHVybiBjb25zb2xlLndhcm4oYERFUFJFQ0FURUQ6IERJIGlzIGluc3RhbnRpYXRpbmcgYSB0b2tlbiAiJHtofSIgdGhhdCBpbmhlcml0cyBpdHMgQEluamVjdGFibGUgZGVjb3JhdG9yIGJ1dCBkb2VzIG5vdCBwcm92aWRlIG9uZSBpdHNlbGYuXG5UaGlzIHdp''@;'; put 'put ''bGwgYmVjb21lIGFuIGVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgQW5ndWxhci4gUGxlYXNlIGFkZCBASW5qZWN0YWJsZSgpIHRvIHRoZSAiJHtofSIgY2xhc3MuYCksZ31yZXR1cm4gbnVsbH0oZCk7cmV0dXJuIG51bGwhPT1oPygpPT5oLmZhY3RvcnkoZCk6KCk9Pm5ldyBkfShkKTt0''@;'; put 'put ''aHJvdyBuZXcgcXQoMjA0LCExKX1mdW5jdGlvbiBGYihkLGcsaCl7bGV0IHY7aWYoUWYoZCkpe2NvbnN0IHk9R3QoZCk7cmV0dXJuIGNkKHkpfHxqOSh5KX1pZihIOShkKSl2PSgpPT5HdChkLnVzZVZhbHVlKTtlbHNlIGlmKGZ1bmN0aW9uIGo4KGQpe3JldHVybiEoIWR8fCFkLnVzZUZhY3Rv''@;'; put 'put ''cnkpfShkKSl2PSgpPT5kLnVzZUZhY3RvcnkoLi4uX2IoZC5kZXBzfHxbXSkpO2Vsc2UgaWYoZnVuY3Rpb24gQmIoZCl7cmV0dXJuISghZHx8IWQudXNlRXhpc3RpbmcpfShkKSl2PSgpPT5FaShHdChkLnVzZUV4aXN0aW5nKSk7ZWxzZXtjb25zdCB5PUd0KGQmJihkLnVzZUNsYXNzfHxkLnBy''@;'; put 'put ''b3ZpZGUpKTtpZighZnVuY3Rpb24gTUUoZCl7cmV0dXJuISFkLmRlcHN9KGQpKXJldHVybiBjZCh5KXx8ajkoeSk7dj0oKT0+bmV3IHkoLi4uX2IoZC5kZXBzKSl9cmV0dXJuIHZ9ZnVuY3Rpb24gejgoZCxnLGg9ITEpe3JldHVybntmYWN0b3J5OmQsdmFsdWU6ZyxtdWx0aTpoP1tdOnZvaWQg''@;'; put 'put ''MH19ZnVuY3Rpb24gRUUoZCl7cmV0dXJuISFkLlx1MDI3NXByb3ZpZGVyc31mdW5jdGlvbiBHOShkLGcpe2Zvcihjb25zdCBoIG9mIGQpQXJyYXkuaXNBcnJheShoKT9HOShoLGcpOkVFKGgpP0c5KGguXHUwMjc1cHJvdmlkZXJzLGcpOmcoaCl9Y2xhc3MgYmR7fWNsYXNzIGlCe3Jlc29sdmVD''@;'; put 'put ''b21wb25lbnRGYWN0b3J5KGcpe3Rocm93IGZ1bmN0aW9uIHJCKGQpe2NvbnN0IGc9RXJyb3IoYE5vIGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAke3ZuKGQpfS4gRGlkIHlvdSBhZGQgaXQgdG8gQE5nTW9kdWxlLmVudHJ5Q29tcG9uZW50cz9gKTtyZXR1cm4gZy5uZ0NvbXBvbmVudD1k''@;'; put 'put ''LGd9KGcpfX1sZXQgX2Q9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuTlVMTD1uZXcgaUIsZH0pKCk7ZnVuY3Rpb24gVEUoKXtyZXR1cm4gbzYoYXIoKSx1ZSgpKX1mdW5jdGlvbiBvNihkLGcpe3JldHVybiBuZXcgX28odmMoZCxnKSl9bGV0IF9vPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3Io''@;'; put 'put ''aCl7dGhpcy5uYXRpdmVFbGVtZW50PWh9fXJldHVybiBkLl9fTkdfRUxFTUVOVF9JRF9fPVRFLGR9KSgpO2Z1bmN0aW9uIElFKGQpe3JldHVybiBkIGluc3RhbmNlb2YgX28/ZC5uYXRpdmVFbGVtZW50OmR9Y2xhc3MgYTZ7fWxldCBEYT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5fX05HX0VM''@;'; put 'put ''RU1FTlRfSURfXz0oKT0+ZnVuY3Rpb24gb0IoKXtjb25zdCBkPXVlKCksaD0kdShhcigpLmluZGV4LGQpO3JldHVybihLdShoKT9oOmQpWzExXX0oKSxkfSkoKSxhQj0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rv''@;'; put 'put ''cnk6KCk9Pm51bGx9KSxkfSkoKTtjbGFzcyBHOHtjb25zdHJ1Y3RvcihnKXt0aGlzLmZ1bGw9Zyx0aGlzLm1ham9yPWcuc3BsaXQoIi4iKVswXSx0aGlzLm1pbm9yPWcuc3BsaXQoIi4iKVsxXSx0aGlzLnBhdGNoPWcuc3BsaXQoIi4iKS5zbGljZSgyKS5qb2luKCIuIil9fWNvbnN0IFc5PW5l''@;'; put 'put ''dyBHOCgiMTQuMi4wIiksWTk9e307ZnVuY3Rpb24gWmIoZCl7cmV0dXJuIGQubmdPcmlnaW5hbEVycm9yfWNsYXNzIFk4e2NvbnN0cnVjdG9yKCl7dGhpcy5fY29uc29sZT1jb25zb2xlfWhhbmRsZUVycm9yKGcpe2NvbnN0IGg9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IoZyk7dGhpcy5fY29u''@;'; put 'put ''c29sZS5lcnJvcigiRVJST1IiLGcpLGgmJnRoaXMuX2NvbnNvbGUuZXJyb3IoIk9SSUdJTkFMIEVSUk9SIixoKX1fZmluZE9yaWdpbmFsRXJyb3IoZyl7bGV0IGg9ZyYmWmIoZyk7Zm9yKDtoJiZaYihoKTspaD1aYihoKTtyZXR1cm4gaHx8bnVsbH19Y29uc3QgR2I9bmV3IE1hcDtsZXQgcEI9''@;'; put 'put ''MDtjb25zdCBZYj0iX19uZ0NvbnRleHRfXyI7ZnVuY3Rpb24gdGMoZCxnKXtLdShnKT8oZFtZYl09Z1syMF0sZnVuY3Rpb24gbUIoZCl7R2Iuc2V0KGRbMjBdLGQpfShnKSk6ZFtZYl09Z31mdW5jdGlvbiBDbShkKXtjb25zdCBnPWRbWWJdO3JldHVybiJudW1iZXIiPT10eXBlb2YgZz9mdW5j''@;'; put 'put ''dGlvbiBGRShkKXtyZXR1cm4gR2IuZ2V0KGQpfHxudWxsfShnKTpnfHxudWxsfWZ1bmN0aW9uIFViKGQpe2NvbnN0IGc9Q20oZCk7cmV0dXJuIGc/S3UoZyk/ZzpnLmxWaWV3Om51bGx9ZnVuY3Rpb24gWGIoZCl7cmV0dXJuIGQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld31mdW5jdGlvbiBz''@;'; put 'put ''NihkKXtyZXR1cm4gZC5vd25lckRvY3VtZW50fWZ1bmN0aW9uIHpFKGQpe3JldHVybiBkLm93bmVyRG9jdW1lbnQuYm9keX1mdW5jdGlvbiBCNChkKXtyZXR1cm4gZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoKTpkfXZhciBjdT0oKCk9PigoY3U9Y3V8fHt9KVtjdS5JbXBvcnRhbnQ9MV09Iklt''@;'; put 'put ''cG9ydGFudCIsY3VbY3UuRGFzaENhc2U9Ml09IkRhc2hDYXNlIixjdSkpKCk7ZnVuY3Rpb24gYzYoZCxnKXtyZXR1cm4gdW5kZWZpbmVkKGQsZyl9ZnVuY3Rpb24gdnMoZCl7Y29uc3QgZz1kWzNdO3JldHVybiBUbyhnKT9nWzNdOmd9ZnVuY3Rpb24gSmYoZCl7cmV0dXJuIHFiKGRbMTNdKX1m''@;'; put 'put ''dW5jdGlvbiBKOShkKXtyZXR1cm4gcWIoZFs0XSl9ZnVuY3Rpb24gcWIoZCl7Zm9yKDtudWxsIT09ZCYmIVRvKGQpOylkPWRbNF07cmV0dXJuIGR9ZnVuY3Rpb24gaDYoZCxnLGgsdix5KXtpZihudWxsIT12KXtsZXQgQyxJPSExO1RvKHYpP0M9djpLdSh2KSYmKEk9ITAsdj12WzBdKTtjb25z''@;'; put 'put ''dCBqPWYxKHYpOzA9PT1kJiZudWxsIT09aD9udWxsPT15P25fKGcsaCxqKTpQNChnLGgsaix5fHxudWxsLCEwKToxPT09ZCYmbnVsbCE9PWg/UDQoZyxoLGoseXx8bnVsbCwhMCk6Mj09PWQ/ZnVuY3Rpb24gYV8oZCxnLGgpe2NvbnN0IHY9ZzYoZCxnKTt2JiZmdW5jdGlvbiBLRShkLGcsaCx2''@;'; put 'put ''KXtkLnJlbW92ZUNoaWxkKGcsaCx2KX0oZCx2LGcsaCl9KGcsaixJKTozPT09ZCYmZy5kZXN0cm95Tm9kZShqKSxudWxsIT1DJiZmdW5jdGlvbiB4QihkLGcsaCx2LHkpe2NvbnN0IEM9aFs3XTtDIT09ZjEoaCkmJmg2KGcsZCx2LEMseSk7Zm9yKGxldCBqPTEwO2o8aC5sZW5ndGg7aisrKXtj''@;'; put 'put ''b25zdCBjZT1oW2pdO1RtKGNlWzFdLGNlLGQsZyx2LEMpfX0oZyxkLEMsaCx5KX19ZnVuY3Rpb24gQ2QoZCxnLGgpe3JldHVybiBkLmNyZWF0ZUVsZW1lbnQoZyxoKX1mdW5jdGlvbiBLOShkLGcpe2NvbnN0IGg9ZFs5XSx2PWguaW5kZXhPZihnKSx5PWdbM107NTEyJmdbMl0mJihnWzJdJj0t''@;'; put 'put ''NTEzLGczKHksLTEpKSxoLnNwbGljZSh2LDEpfWZ1bmN0aW9uIFVFKGQsZyl7aWYoZC5sZW5ndGg8PTEwKXJldHVybjtjb25zdCBoPTEwK2csdj1kW2hdO2lmKHYpe2NvbnN0IHk9dlsxN107bnVsbCE9PXkmJnkhPT1kJiZLOSh5LHYpLGc+MCYmKGRbaC0xXVs0XT12WzRdKTtjb25zdCBDPUFk''@;'; put 'put ''KGQsMTArZyk7IWZ1bmN0aW9uIGQ2KGQsZyl7VG0oZCxnLGdbMTFdLDIsbnVsbCxudWxsKSxnWzBdPW51bGwsZ1s2XT1udWxsfSh2WzFdLHYpO2NvbnN0IEk9Q1sxOV07bnVsbCE9PUkmJkkuZGV0YWNoVmlldyhDWzFdKSx2WzNdPW51bGwsdls0XT1udWxsLHZbMl0mPS02NX1yZXR1cm4gdn1m''@;'; put 'put ''dW5jdGlvbiBRRShkLGcpe2lmKCEoMTI4JmdbMl0pKXtjb25zdCBoPWdbMTFdO2guZGVzdHJveU5vZGUmJlRtKGQsZyxoLDMsbnVsbCxudWxsKSxmdW5jdGlvbiB2ZihkKXtsZXQgZz1kWzEzXTtpZighZylyZXR1cm4gdF8oZFsxXSxkKTtmb3IoO2c7KXtsZXQgaD1udWxsO2lmKEt1KGcpKWg9''@;'; put 'put ''Z1sxM107ZWxzZXtjb25zdCB2PWdbMTBdO3YmJihoPXYpfWlmKCFoKXtmb3IoO2cmJiFnWzRdJiZnIT09ZDspS3UoZykmJnRfKGdbMV0sZyksZz1nWzNdO251bGw9PT1nJiYoZz1kKSxLdShnKSYmdF8oZ1sxXSxnKSxoPWcmJmdbNF19Zz1ofX0oZyl9fWZ1bmN0aW9uIHRfKGQsZyl7aWYoISgx''@;'; put 'put ''MjgmZ1syXSkpe2dbMl0mPS02NSxnWzJdfD0xMjgsZnVuY3Rpb24gSkUoZCxnKXtsZXQgaDtpZihudWxsIT1kJiZudWxsIT0oaD1kLmRlc3Ryb3lIb29rcykpZm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kz0yKXtjb25zdCB5PWdbaFt2XV07aWYoISh5IGluc3RhbmNlb2YgcWkpKXtjb25zdCBD''@;'; put 'put ''PWhbdisxXTtpZihBcnJheS5pc0FycmF5KEMpKWZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSs9Mil7Y29uc3Qgaj15W0NbSV1dLGNlPUNbSSsxXTt0cnl7Y2UuY2FsbChqKX1maW5hbGx5e319ZWxzZSB0cnl7Qy5jYWxsKHkpfWZpbmFsbHl7fX19fShkLGcpLGZ1bmN0aW9uIFNCKGQsZyl7Y29u''@;'; put 'put ''c3QgaD1kLmNsZWFudXAsdj1nWzddO2xldCB5PS0xO2lmKG51bGwhPT1oKWZvcihsZXQgQz0wO0M8aC5sZW5ndGgtMTtDKz0yKWlmKCJzdHJpbmciPT10eXBlb2YgaFtDXSl7Y29uc3QgST1oW0MrMV0saj0iZnVuY3Rpb24iPT10eXBlb2YgST9JKGcpOmYxKGdbSV0pLGNlPXZbeT1oW0MrMl1d''@;'; put 'put ''LF9lPWhbQyszXTsiYm9vbGVhbiI9PXR5cGVvZiBfZT9qLnJlbW92ZUV2ZW50TGlzdGVuZXIoaFtDXSxjZSxfZSk6X2U+PTA/dlt5PV9lXSgpOnZbeT0tX2VdLnVuc3Vic2NyaWJlKCksQys9Mn1lbHNle2NvbnN0IEk9dlt5PWhbQysxXV07aFtDXS5jYWxsKEkpfWlmKG51bGwhPT12KXtmb3Io''@;'; put 'put ''bGV0IEM9eSsxO0M8di5sZW5ndGg7QysrKSgwLHZbQ10pKCk7Z1s3XT1udWxsfX0oZCxnKSwxPT09Z1sxXS50eXBlJiZnWzExXS5kZXN0cm95KCk7Y29uc3QgaD1nWzE3XTtpZihudWxsIT09aCYmVG8oZ1szXSkpe2ghPT1nWzNdJiZLOShoLGcpO2NvbnN0IHY9Z1sxOV07bnVsbCE9PXYmJnYu''@;'; put 'put ''ZGV0YWNoVmlldyhkKX0hZnVuY3Rpb24gTUcoZCl7R2IuZGVsZXRlKGRbMjBdKX0oZyl9fWZ1bmN0aW9uICQ5KGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gWEUoZCxnLGgpe2xldCB2PWc7Zm9yKDtudWxsIT09diYmNDAmdi50eXBlOyl2PShnPXYpLnBhcmVudDtpZihudWxsPT09dilyZXR1cm4g''@;'; put 'put ''aFswXTtpZigyJnYuZmxhZ3Mpe2NvbnN0IHk9ZC5kYXRhW3YuZGlyZWN0aXZlU3RhcnRdLmVuY2Fwc3VsYXRpb247aWYoeT09PSRzLk5vbmV8fHk9PT0kcy5FbXVsYXRlZClyZXR1cm4gbnVsbH1yZXR1cm4gdmModixoKX0oZCxnLnBhcmVudCxoKX1mdW5jdGlvbiBQNChkLGcsaCx2LHkpe2Qu''@;'; put 'put ''aW5zZXJ0QmVmb3JlKGcsaCx2LHkpfWZ1bmN0aW9uIG5fKGQsZyxoKXtkLmFwcGVuZENoaWxkKGcsaCl9ZnVuY3Rpb24gcl8oZCxnLGgsdix5KXtudWxsIT09dj9QNChkLGcsaCx2LHkpOm5fKGQsZyxoKX1mdW5jdGlvbiBnNihkLGcpe3JldHVybiBkLnBhcmVudE5vZGUoZyl9ZnVuY3Rpb24g''@;'; put 'put ''aV8oZCxnLGgpe3JldHVybiBxRShkLGcsaCl9bGV0IHFFPWZ1bmN0aW9uIEVtKGQsZyxoKXtyZXR1cm4gNDAmZC50eXBlP3ZjKGQsaCk6bnVsbH07ZnVuY3Rpb24geG0oZCxnLGgsdil7Y29uc3QgeT0kOShkLHYsZyksQz1nWzExXSxqPWlfKHYucGFyZW50fHxnWzZdLHYsZyk7aWYobnVsbCE9''@;'; put 'put ''eSlpZihBcnJheS5pc0FycmF5KGgpKWZvcihsZXQgY2U9MDtjZTxoLmxlbmd0aDtjZSsrKXJfKEMseSxoW2NlXSxqLCExKTtlbHNlIHJfKEMseSxoLGosITEpfWZ1bmN0aW9uIHE5KGQsZyl7aWYobnVsbCE9PWcpe2NvbnN0IGg9Zy50eXBlO2lmKDMmaClyZXR1cm4gdmMoZyxkKTtpZig0Jmgp''@;'; put 'put ''cmV0dXJuIFMzKC0xLGRbZy5pbmRleF0pO2lmKDgmaCl7Y29uc3Qgdj1nLmNoaWxkO2lmKG51bGwhPT12KXJldHVybiBxOShkLHYpO3tjb25zdCB5PWRbZy5pbmRleF07cmV0dXJuIFRvKHkpP1MzKC0xLHkpOmYxKHkpfX1pZigzMiZoKXJldHVybiBjNihnLGQpKCl8fGYxKGRbZy5pbmRleF0p''@;'; put 'put ''O3tjb25zdCB2PUVoKGQsZyk7cmV0dXJuIG51bGwhPT12P0FycmF5LmlzQXJyYXkodik/dlswXTpxOSh2cyhkWzE2XSksdik6cTkoZCxnLm5leHQpfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBFaChkLGcpe3JldHVybiBudWxsIT09Zz9kWzE2XVs2XS5wcm9qZWN0aW9uW2cucHJvamVjdGlvbl06''@;'; put 'put ''bnVsbH1mdW5jdGlvbiBTMyhkLGcpe2NvbnN0IGg9MTArZCsxO2lmKGg8Zy5sZW5ndGgpe2NvbnN0IHY9Z1toXSx5PXZbMV0uZmlyc3RDaGlsZDtpZihudWxsIT09eSlyZXR1cm4gcTkodix5KX1yZXR1cm4gZ1s3XX1mdW5jdGlvbiBsXyhkLGcsaCx2LHksQyxJKXtmb3IoO251bGwhPWg7KXtj''@;'; put 'put ''b25zdCBqPXZbaC5pbmRleF0sY2U9aC50eXBlO2lmKEkmJjA9PT1nJiYoaiYmdGMoZjEoaiksdiksaC5mbGFnc3w9NCksNjQhPSg2NCZoLmZsYWdzKSlpZig4JmNlKWxfKGQsZyxoLmNoaWxkLHYseSxDLCExKSxoNihnLGQseSxqLEMpO2Vsc2UgaWYoMzImY2Upe2NvbnN0IF9lPWM2KGgsdik7''@;'; put 'put ''bGV0IFJlO2Zvcig7UmU9X2UoKTspaDYoZyxkLHksUmUsQyk7aDYoZyxkLHksaixDKX1lbHNlIDE2JmNlP2V4KGQsZyx2LGgseSxDKTpoNihnLGQseSxqLEMpO2g9ST9oLnByb2plY3Rpb25OZXh0OmgubmV4dH19ZnVuY3Rpb24gVG0oZCxnLGgsdix5LEMpe2xfKGgsdixkLmZpcnN0Q2hpbGQs''@;'; put 'put ''Zyx5LEMsITEpfWZ1bmN0aW9uIGV4KGQsZyxoLHYseSxDKXtjb25zdCBJPWhbMTZdLGNlPUlbNl0ucHJvamVjdGlvblt2LnByb2plY3Rpb25dO2lmKEFycmF5LmlzQXJyYXkoY2UpKWZvcihsZXQgX2U9MDtfZTxjZS5sZW5ndGg7X2UrKyloNihnLGQseSxjZVtfZV0sQyk7ZWxzZSBsXyhkLGcs''@;'; put 'put ''Y2UsSVszXSx5LEMsITApfWZ1bmN0aW9uIEltKGQsZyxoKXtkLnNldEF0dHJpYnV0ZShnLCJzdHlsZSIsaCl9ZnVuY3Rpb24gc18oZCxnLGgpeyIiPT09aD9kLnJlbW92ZUF0dHJpYnV0ZShnLCJjbGFzcyIpOmQuc2V0QXR0cmlidXRlKGcsImNsYXNzIixoKX1mdW5jdGlvbiB1XyhkLGcsaCl7''@;'; put 'put ''bGV0IHY9ZC5sZW5ndGg7Zm9yKDs7KXtjb25zdCB5PWQuaW5kZXhPZihnLGgpO2lmKC0xPT09eSlyZXR1cm4geTtpZigwPT09eXx8ZC5jaGFyQ29kZUF0KHktMSk8PTMyKXtjb25zdCBDPWcubGVuZ3RoO2lmKHkrQz09PXZ8fGQuY2hhckNvZGVBdCh5K0MpPD0zMilyZXR1cm4geX1oPXkrMX19''@;'; put 'put ''Y29uc3QgRG09Im5nLXRlbXBsYXRlIjtmdW5jdGlvbiBjXyhkLGcsaCl7bGV0IHY9MDtmb3IoO3Y8ZC5sZW5ndGg7KXtsZXQgeT1kW3YrK107aWYoaCYmImNsYXNzIj09PXkpe2lmKHk9ZFt2XSwtMSE9PXVfKHkudG9Mb3dlckNhc2UoKSxnLDApKXJldHVybiEwfWVsc2UgaWYoMT09PXkpe2Zv''@;'; put 'put ''cig7djxkLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZih5PWRbdisrXSk7KWlmKHkudG9Mb3dlckNhc2UoKT09PWcpcmV0dXJuITA7cmV0dXJuITF9fXJldHVybiExfWZ1bmN0aW9uIGVBKGQpe3JldHVybiA0PT09ZC50eXBlJiZkLnZhbHVlIT09RG19ZnVuY3Rpb24gSDQoZCxnLGgpe3JldHVy''@;'; put 'put ''biBnPT09KDQhPT1kLnR5cGV8fGg/ZC52YWx1ZTpEbSl9ZnVuY3Rpb24gTjQoZCxnLGgpe2xldCB2PTQ7Y29uc3QgeT1kLmF0dHJzfHxbXSxDPWZ1bmN0aW9uIHR4KGQpe2ZvcihsZXQgZz0wO2c8ZC5sZW5ndGg7ZysrKWlmKFcxKGRbZ10pKXJldHVybiBnO3JldHVybiBkLmxlbmd0aH0oeSk7''@;'; put 'put ''bGV0IEk9ITE7Zm9yKGxldCBqPTA7ajxnLmxlbmd0aDtqKyspe2NvbnN0IGNlPWdbal07aWYoIm51bWJlciIhPXR5cGVvZiBjZSl7aWYoIUkpaWYoNCZ2KXtpZih2PTJ8MSZ2LCIiIT09Y2UmJiFINChkLGNlLGgpfHwiIj09PWNlJiYxPT09Zy5sZW5ndGgpe2lmKEFmKHYpKXJldHVybiExO0k9''@;'; put 'put ''ITB9fWVsc2V7Y29uc3QgX2U9OCZ2P2NlOmdbKytqXTtpZig4JnYmJm51bGwhPT1kLmF0dHJzKXtpZighY18oZC5hdHRycyxfZSxoKSl7aWYoQWYodikpcmV0dXJuITE7ST0hMH1jb250aW51ZX1jb25zdCBOZT1iMSg4JnY/ImNsYXNzIjpjZSx5LGVBKGQpLGgpO2lmKC0xPT09TmUpe2lmKEFm''@;'; put 'put ''KHYpKXJldHVybiExO0k9ITA7Y29udGludWV9aWYoIiIhPT1fZSl7bGV0IEtlO0tlPU5lPkM/IiI6eVtOZSsxXS50b0xvd2VyQ2FzZSgpO2NvbnN0IGh0PTgmdj9LZTpudWxsO2lmKGh0JiYtMSE9PXVfKGh0LF9lLDApfHwyJnYmJl9lIT09S2Upe2lmKEFmKHYpKXJldHVybiExO0k9ITB9fX19''@;'; put 'put ''ZWxzZXtpZighSSYmIUFmKHYpJiYhQWYoY2UpKXJldHVybiExO2lmKEkmJkFmKGNlKSljb250aW51ZTtJPSExLHY9Y2V8MSZ2fX1yZXR1cm4gQWYodil8fEl9ZnVuY3Rpb24gQWYoZCl7cmV0dXJuIDA9PSgxJmQpfWZ1bmN0aW9uIGIxKGQsZyxoLHYpe2lmKG51bGw9PT1nKXJldHVybi0xO2xl''@;'; put 'put ''dCB5PTA7aWYodnx8IWgpe2xldCBDPSExO2Zvcig7eTxnLmxlbmd0aDspe2NvbnN0IEk9Z1t5XTtpZihJPT09ZClyZXR1cm4geTtpZigzPT09SXx8Nj09PUkpQz0hMDtlbHNle2lmKDE9PT1JfHwyPT09SSl7bGV0IGo9Z1srK3ldO2Zvcig7InN0cmluZyI9PXR5cGVvZiBqOylqPWdbKyt5XTtj''@;'; put 'put ''b250aW51ZX1pZig0PT09SSlicmVhaztpZigwPT09SSl7eSs9NDtjb250aW51ZX19eSs9Qz8xOjJ9cmV0dXJuLTF9cmV0dXJuIGZ1bmN0aW9uIElCKGQsZyl7bGV0IGg9ZC5pbmRleE9mKDQpO2lmKGg+LTEpZm9yKGgrKztoPGQubGVuZ3RoOyl7Y29uc3Qgdj1kW2hdO2lmKCJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgdilyZXR1cm4tMTtpZih2PT09ZylyZXR1cm4gaDtoKyt9cmV0dXJuLTF9KGcsZCl9ZnVuY3Rpb24ga2QoZCxnLGg9ITEpe2ZvcihsZXQgdj0wO3Y8Zy5sZW5ndGg7disrKWlmKE40KGQsZ1t2XSxoKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBueChkLGcpe2U6Zm9yKGxldCBo''@;'; put 'put ''PTA7aDxnLmxlbmd0aDtoKyspe2NvbnN0IHY9Z1toXTtpZihkLmxlbmd0aD09PXYubGVuZ3RoKXtmb3IobGV0IHk9MDt5PGQubGVuZ3RoO3krKylpZihkW3ldIT09dlt5XSljb250aW51ZSBlO3JldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBmXyhkLGcpe3JldHVybiBkPyI6bm90KCIrZy50''@;'; put 'put ''cmltKCkrIikiOmd9ZnVuY3Rpb24gREIoZCl7bGV0IGc9ZFswXSxoPTEsdj0yLHk9IiIsQz0hMTtmb3IoO2g8ZC5sZW5ndGg7KXtsZXQgST1kW2hdO2lmKCJzdHJpbmciPT10eXBlb2YgSSlpZigyJnYpe2NvbnN0IGo9ZFsrK2hdO3krPSJbIitJKyhqLmxlbmd0aD4wPyc9IicraisnIic6IiIp''@;'; put 'put ''KyJdIn1lbHNlIDgmdj95Kz0iLiIrSTo0JnYmJih5Kz0iICIrSSk7ZWxzZSIiIT09eSYmIUFmKEkpJiYoZys9Zl8oQyx5KSx5PSIiKSx2PUksQz1DfHwhQWYodik7aCsrfXJldHVybiIiIT09eSYmKGcrPWZfKEMseSkpLGd9Y29uc3QgVWE9e307ZnVuY3Rpb24gc3QoZCl7T20oVHQoKSx1ZSgp''@;'; put 'put ''LHoxKCkrZCwhMSl9ZnVuY3Rpb24gT20oZCxnLGgsdil7aWYoIXYpaWYoMz09KDMmZ1syXSkpe2NvbnN0IEM9ZC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PUMmJlpwKGcsQyxoKX1lbHNle2NvbnN0IEM9ZC5wcmVPcmRlckhvb2tzO251bGwhPT1DJiZOYyhnLEMsMCxoKX1kZChoKX1mdW5j''@;'; put 'put ''dGlvbiBNMyhkLGc9bnVsbCxoPW51bGwsdil7Y29uc3QgeT1seChkLGcsaCx2KTtyZXR1cm4geS5yZXNvbHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKSx5fWZ1bmN0aW9uIGx4KGQsZz1udWxsLGg9bnVsbCx2LHk9bmV3IFNldCl7Y29uc3QgQz1baHx8dGwsbjYoZCldO3JldHVybiB2PXZ8fCgi''@;'; put 'put ''b2JqZWN0Ij09dHlwZW9mIGQ/dm9pZCAwOnZuKGQpKSxuZXcgVjkoQyxnfHxMNCgpLHZ8fG51bGwseSl9bGV0IHhzPSgoKT0+e2NsYXNzIGR7c3RhdGljIGNyZWF0ZShoLHYpe3ZhciB5O2lmKEFycmF5LmlzQXJyYXkoaCkpcmV0dXJuIE0zKHtuYW1lOiIifSx2LGgsIiIpO3tjb25zdCBDPW51''@;'; put 'put ''bGwhPT0oeT1oLm5hbWUpJiZ2b2lkIDAhPT15P3k6IiI7cmV0dXJuIE0zKHtuYW1lOkN9LGgucGFyZW50LGgucHJvdmlkZXJzLEMpfX19cmV0dXJuIGQuVEhST1dfSUZfTk9UX0ZPVU5EPXg0LGQuTlVMTD1uZXcgX2MsZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLHByb3ZpZGVkSW46ImFueSIs''@;'; put 'put ''ZmFjdG9yeTooKT0+RWkodEIpfSksZC5fX05HX0VMRU1FTlRfSURfXz0tMSxkfSkoKTtmdW5jdGlvbiBLdChkLGc9c28uRGVmYXVsdCl7Y29uc3QgaD11ZSgpO3JldHVybiBudWxsPT09aD9FaShkLGcpOkw4KGFyKCksaCxHdChkKSxnKX1mdW5jdGlvbiBCbSgpe3Rocm93IG5ldyBFcnJvcigi''@;'; put 'put ''aW52YWxpZCIpfWZ1bmN0aW9uIHJBKGQsZyl7cmV0dXJuIGQ8PDE3fGc8PDJ9ZnVuY3Rpb24gVGgoZCl7cmV0dXJuIGQ+PjE3JjMyNzY3fWZ1bmN0aW9uIGlBKGQpe3JldHVybiAyfGR9ZnVuY3Rpb24gWGYoZCl7cmV0dXJuKDEzMTA2OCZkKT4+Mn1mdW5jdGlvbiBnXyhkLGcpe3JldHVybi0x''@;'; put 'put ''MzEwNjkmZHxnPDwyfWZ1bmN0aW9uIEE2KGQpe3JldHVybiAxfGR9ZnVuY3Rpb24gY0EoZCxnKXtjb25zdCBoPWQuY29udGVudFF1ZXJpZXM7aWYobnVsbCE9PWgpZm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kz0yKXtjb25zdCB5PWhbdl0sQz1oW3YrMV07aWYoLTEhPT1DKXtjb25zdCBJPWQu''@;'; put 'put ''ZGF0YVtDXTt5Yyh5KSxJLmNvbnRlbnRRdWVyaWVzKDIsZ1tDXSxDKX19fWZ1bmN0aW9uIG5jKGQsZyxoLHYseSxDLEksaixjZSxfZSxSZSl7Y29uc3QgTmU9Zy5ibHVlcHJpbnQuc2xpY2UoKTtyZXR1cm4gTmVbMF09eSxOZVsyXT03Nnx2LChudWxsIT09UmV8fGQmJjEwMjQmZFsyXSkmJihO''@;'; put 'put ''ZVsyXXw9MTAyNCksQzQoTmUpLE5lWzNdPU5lWzE1XT1kLE5lWzhdPWgsTmVbMTBdPUl8fGQmJmRbMTBdLE5lWzExXT1qfHxkJiZkWzExXSxOZVsxMl09Y2V8fGQmJmRbMTJdfHxudWxsLE5lWzldPV9lfHxkJiZkWzldfHxudWxsLE5lWzZdPUMsTmVbMjBdPWZ1bmN0aW9uIGdCKCl7cmV0dXJu''@;'; put 'put ''IHBCKyt9KCksTmVbMjFdPVJlLE5lWzE2XT0yPT1nLnR5cGU/ZFsxNl06TmUsTmV9ZnVuY3Rpb24gSWgoZCxnLGgsdix5KXtsZXQgQz1kLmRhdGFbZ107aWYobnVsbD09PUMpQz1mdW5jdGlvbiBFZChkLGcsaCx2LHkpe2NvbnN0IEM9TmkoKSxJPXdvKCksY2U9ZC5kYXRhW2ddPWZ1bmN0aW9u''@;'; put 'put ''IGFQKGQsZyxoLHYseSxDKXtyZXR1cm57dHlwZTpoLGluZGV4OnYsaW5zZXJ0QmVmb3JlSW5kZXg6bnVsbCxpbmplY3RvckluZGV4Omc/Zy5pbmplY3RvckluZGV4Oi0xLGRpcmVjdGl2ZVN0YXJ0Oi0xLGRpcmVjdGl2ZUVuZDotMSxkaXJlY3RpdmVTdHlsaW5nTGFzdDotMSxwcm9wZXJ0eUJp''@;'; put 'put ''bmRpbmdzOm51bGwsZmxhZ3M6MCxwcm92aWRlckluZGV4ZXM6MCx2YWx1ZTp5LGF0dHJzOkMsbWVyZ2VkQXR0cnM6bnVsbCxsb2NhbE5hbWVzOm51bGwsaW5pdGlhbElucHV0czp2b2lkIDAsaW5wdXRzOm51bGwsb3V0cHV0czpudWxsLHRWaWV3czpudWxsLG5leHQ6bnVsbCxwcm9qZWN0aW9u''@;'; put 'put ''TmV4dDpudWxsLGNoaWxkOm51bGwscGFyZW50OmcscHJvamVjdGlvbjpudWxsLHN0eWxlczpudWxsLHN0eWxlc1dpdGhvdXRIb3N0Om51bGwscmVzaWR1YWxTdHlsZXM6dm9pZCAwLGNsYXNzZXM6bnVsbCxjbGFzc2VzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbENsYXNzZXM6dm9pZCAwLGNs''@;'; put 'put ''YXNzQmluZGluZ3M6MCxzdHlsZUJpbmRpbmdzOjB9fSgwLEk/QzpDJiZDLnBhcmVudCxoLGcsdix5KTtyZXR1cm4gbnVsbD09PWQuZmlyc3RDaGlsZCYmKGQuZmlyc3RDaGlsZD1jZSksbnVsbCE9PUMmJihJP251bGw9PUMuY2hpbGQmJm51bGwhPT1jZS5wYXJlbnQmJihDLmNoaWxkPWNlKTpu''@;'; put 'put ''dWxsPT09Qy5uZXh0JiYoQy5uZXh0PWNlKSksY2V9KGQsZyxoLHYseSksZnVuY3Rpb24gTXMoKXtyZXR1cm4gTGEubEZyYW1lLmluSTE4bn0oKSYmKEMuZmxhZ3N8PTY0KTtlbHNlIGlmKDY0JkMudHlwZSl7Qy50eXBlPWgsQy52YWx1ZT12LEMuYXR0cnM9eTtjb25zdCBJPWZ1bmN0aW9uIFdu''@;'; put 'put ''KCl7Y29uc3QgZD1MYS5sRnJhbWUsZz1kLmN1cnJlbnRUTm9kZTtyZXR1cm4gZC5pc1BhcmVudD9nOmcucGFyZW50fSgpO0MuaW5qZWN0b3JJbmRleD1udWxsPT09ST8tMTpJLmluamVjdG9ySW5kZXh9cmV0dXJuIF8oQywhMCksQ31mdW5jdGlvbiB4ZChkLGcsaCx2KXtpZigwPT09aClyZXR1''@;'; put 'put ''cm4tMTtjb25zdCB5PWcubGVuZ3RoO2ZvcihsZXQgQz0wO0M8aDtDKyspZy5wdXNoKHYpLGQuYmx1ZXByaW50LnB1c2godiksZC5kYXRhLnB1c2gobnVsbCk7cmV0dXJuIHl9ZnVuY3Rpb24gWm0oZCxnLGgpe0dsKGcpO3RyeXtjb25zdCB2PWQudmlld1F1ZXJ5O251bGwhPT12JiZ5QSgxLHYs''@;'; put 'put ''aCk7Y29uc3QgeT1kLnRlbXBsYXRlO251bGwhPT15JiZYOChkLGcseSwxLGgpLGQuZmlyc3RDcmVhdGVQYXNzJiYoZC5maXJzdENyZWF0ZVBhc3M9ITEpLGQuc3RhdGljQ29udGVudFF1ZXJpZXMmJmNBKGQsZyksZC5zdGF0aWNWaWV3UXVlcmllcyYmeUEoMixkLnZpZXdRdWVyeSxoKTtjb25z''@;'; put 'put ''dCBDPWQuY29tcG9uZW50cztudWxsIT09QyYmZnVuY3Rpb24gTWQoZCxnKXtmb3IobGV0IGg9MDtoPGcubGVuZ3RoO2grKylreChkLGdbaF0pfShnLEMpfWNhdGNoKHYpe3Rocm93IGQuZmlyc3RDcmVhdGVQYXNzJiYoZC5pbmNvbXBsZXRlRmlyc3RQYXNzPSEwLGQuZmlyc3RDcmVhdGVQYXNz''@;'; put 'put ''PSExKSx2fWZpbmFsbHl7Z1syXSY9LTUsaGQoKX19ZnVuY3Rpb24gRGgoZCxnLGgsdil7Y29uc3QgeT1nWzJdO2lmKDEyOCE9KDEyOCZ5KSl7R2woZyk7dHJ5e0M0KGcpLGZ1bmN0aW9uIFIyKGQpe3JldHVybiBMYS5sRnJhbWUuYmluZGluZ0luZGV4PWR9KGQuYmluZGluZ1N0YXJ0SW5kZXgp''@;'; put 'put ''LG51bGwhPT1oJiZYOChkLGcsaCwyLHYpO2NvbnN0IEk9Mz09KDMmeSk7aWYoSSl7Y29uc3QgX2U9ZC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PV9lJiZacChnLF9lLG51bGwpfWVsc2V7Y29uc3QgX2U9ZC5wcmVPcmRlckhvb2tzO251bGwhPT1fZSYmTmMoZyxfZSwwLG51bGwpLHpwKGcs''@;'; put 'put ''MCl9aWYoZnVuY3Rpb24gczIoZCl7Zm9yKGxldCBnPUpmKGQpO251bGwhPT1nO2c9SjkoZykpe2lmKCFnWzJdKWNvbnRpbnVlO2NvbnN0IGg9Z1s5XTtmb3IobGV0IHY9MDt2PGgubGVuZ3RoO3YrKyl7Y29uc3QgeT1oW3ZdLEM9eVszXTswPT0oNTEyJnlbMl0pJiZnMyhDLDEpLHlbMl18PTUx''@;'; put 'put ''Mn19fShnKSxmdW5jdGlvbiBEXyhkKXtmb3IobGV0IGc9SmYoZCk7bnVsbCE9PWc7Zz1KOShnKSlmb3IobGV0IGg9MTA7aDxnLmxlbmd0aDtoKyspe2NvbnN0IHY9Z1toXSx5PXZbMV07ZW0odikmJkRoKHksdix5LnRlbXBsYXRlLHZbOF0pfX0oZyksbnVsbCE9PWQuY29udGVudFF1ZXJpZXMm''@;'; put 'put ''JmNBKGQsZyksSSl7Y29uc3QgX2U9ZC5jb250ZW50Q2hlY2tIb29rcztudWxsIT09X2UmJlpwKGcsX2UpfWVsc2V7Y29uc3QgX2U9ZC5jb250ZW50SG9va3M7bnVsbCE9PV9lJiZOYyhnLF9lLDEpLHpwKGcsMSl9IWZ1bmN0aW9uIHRQKGQsZyl7Y29uc3QgaD1kLmhvc3RCaW5kaW5nT3BDb2Rl''@;'; put 'put ''cztpZihudWxsIT09aCl0cnl7Zm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kyspe2NvbnN0IHk9aFt2XTtpZih5PDApZGQofnkpO2Vsc2V7Y29uc3QgQz15LEk9aFsrK3ZdLGo9aFsrK3ZdO1lNKEksQyksaigyLGdbQ10pfX19ZmluYWxseXtkZCgtMSl9fShkLGcpO2NvbnN0IGo9ZC5jb21wb25l''@;'; put 'put ''bnRzO251bGwhPT1qJiZmdW5jdGlvbiBuUChkLGcpe2ZvcihsZXQgaD0wO2g8Zy5sZW5ndGg7aCsrKUxfKGQsZ1toXSl9KGcsaik7Y29uc3QgY2U9ZC52aWV3UXVlcnk7aWYobnVsbCE9PWNlJiZ5QSgyLGNlLHYpLEkpe2NvbnN0IF9lPWQudmlld0NoZWNrSG9va3M7bnVsbCE9PV9lJiZacChn''@;'; put 'put ''LF9lKX1lbHNle2NvbnN0IF9lPWQudmlld0hvb2tzO251bGwhPT1fZSYmTmMoZyxfZSwyKSx6cChnLDIpfSEwPT09ZC5maXJzdFVwZGF0ZVBhc3MmJihkLmZpcnN0VXBkYXRlUGFzcz0hMSksZ1syXSY9LTQxLDUxMiZnWzJdJiYoZ1syXSY9LTUxMyxnMyhnWzNdLC0xKSl9ZmluYWxseXtoZCgp''@;'; put 'put ''fX19ZnVuY3Rpb24gclAoZCxnLGgsdil7Y29uc3QgeT1nWzEwXSxJPUx1KGcpO3RyeXshSSYmeS5iZWdpbiYmeS5iZWdpbigpLEkmJlptKGQsZyx2KSxEaChkLGcsaCx2KX1maW5hbGx5eyFJJiZ5LmVuZCYmeS5lbmQoKX19ZnVuY3Rpb24gWDgoZCxnLGgsdix5KXtjb25zdCBDPXoxKCksST0y''@;'; put 'put ''JnY7dHJ5e2RkKC0xKSxJJiZnLmxlbmd0aD4yMiYmT20oZCxnLDIyLCExKSxoKHYseSl9ZmluYWxseXtkZChDKX19ZnVuY3Rpb24gcmMoZCxnLGgpe2lmKFJzKGcpKXtjb25zdCB5PWcuZGlyZWN0aXZlRW5kO2ZvcihsZXQgQz1nLmRpcmVjdGl2ZVN0YXJ0O0M8eTtDKyspe2NvbnN0IEk9ZC5k''@;'; put 'put ''YXRhW0NdO0kuY29udGVudFF1ZXJpZXMmJkkuY29udGVudFF1ZXJpZXMoMSxoW0NdLEMpfX19ZnVuY3Rpb24gejQoZCxnLGgpeyFkdCgpfHwoZnVuY3Rpb24gdVAoZCxnLGgsdil7Y29uc3QgeT1oLmRpcmVjdGl2ZVN0YXJ0LEM9aC5kaXJlY3RpdmVFbmQ7ZC5maXJzdENyZWF0ZVBhc3N8fG1k''@;'; put 'put ''KGgsZyksdGModixnKTtjb25zdCBJPWguaW5pdGlhbElucHV0cztmb3IobGV0IGo9eTtqPEM7aisrKXtjb25zdCBjZT1kLmRhdGFbal0sX2U9c2YoY2UpO19lJiZVbShnLGgsY2UpO2NvbnN0IFJlPV9oKGcsZCxqLGgpO3RjKFJlLGcpLG51bGwhPT1JJiZwQSgwLGoteSxSZSxjZSwwLEkpLF9l''@;'; put 'put ''JiYoJHUoaC5pbmRleCxnKVs4XT1SZSl9fShkLGcsaCx2YyhoLGcpKSwxMjg9PSgxMjgmaC5mbGFncykmJmZ1bmN0aW9uIFRfKGQsZyxoKXtjb25zdCB2PWguZGlyZWN0aXZlU3RhcnQseT1oLmRpcmVjdGl2ZUVuZCxDPWguaW5kZXgsST1mdW5jdGlvbiBVTSgpe3JldHVybiBMYS5sRnJhbWUu''@;'; put 'put ''Y3VycmVudERpcmVjdGl2ZUluZGV4fSgpO3RyeXtkZChDKTtmb3IobGV0IGo9djtqPHk7aisrKXtjb25zdCBjZT1kLmRhdGFbal0sX2U9Z1tqXTt5OShqKSwobnVsbCE9PWNlLmhvc3RCaW5kaW5nc3x8MCE9PWNlLmhvc3RWYXJzfHxudWxsIT09Y2UuaG9zdEF0dHJzKSYmWW0oY2UsX2UpfX1m''@;'; put 'put ''aW5hbGx5e2RkKC0xKSx5OShJKX19KGQsZyxoKSl9ZnVuY3Rpb24gem0oZCxnLGg9dmMpe2NvbnN0IHY9Zy5sb2NhbE5hbWVzO2lmKG51bGwhPT12KXtsZXQgeT1nLmluZGV4KzE7Zm9yKGxldCBDPTA7Qzx2Lmxlbmd0aDtDKz0yKXtjb25zdCBJPXZbQysxXSxqPS0xPT09ST9oKGcsZCk6ZFtJ''@;'; put 'put ''XTtkW3krK109an19fWZ1bmN0aW9uIGtfKGQpe2NvbnN0IGc9ZC50VmlldztyZXR1cm4gbnVsbD09PWd8fGcuaW5jb21wbGV0ZUZpcnN0UGFzcz9kLnRWaWV3PVNfKDEsbnVsbCxkLnRlbXBsYXRlLGQuZGVjbHMsZC52YXJzLGQuZGlyZWN0aXZlRGVmcyxkLnBpcGVEZWZzLGQudmlld1F1ZXJ5''@;'; put 'put ''LGQuc2NoZW1hcyxkLmNvbnN0cyk6Z31mdW5jdGlvbiBTXyhkLGcsaCx2LHksQyxJLGosY2UsX2Upe2NvbnN0IFJlPTIyK3YsTmU9UmUreSxLZT1mdW5jdGlvbiBpUChkLGcpe2NvbnN0IGg9W107Zm9yKGxldCB2PTA7djxnO3YrKyloLnB1c2godjxkP251bGw6VWEpO3JldHVybiBofShSZSxO''@;'; put 'put ''ZSksaHQ9ImZ1bmN0aW9uIj09dHlwZW9mIF9lP19lKCk6X2U7cmV0dXJuIEtlWzFdPXt0eXBlOmQsYmx1ZXByaW50OktlLHRlbXBsYXRlOmgscXVlcmllczpudWxsLHZpZXdRdWVyeTpqLGRlY2xUTm9kZTpnLGRhdGE6S2Uuc2xpY2UoKS5maWxsKG51bGwsUmUpLGJpbmRpbmdTdGFydEluZGV4''@;'; put 'put ''OlJlLGV4cGFuZG9TdGFydEluZGV4Ok5lLGhvc3RCaW5kaW5nT3BDb2RlczpudWxsLGZpcnN0Q3JlYXRlUGFzczohMCxmaXJzdFVwZGF0ZVBhc3M6ITAsc3RhdGljVmlld1F1ZXJpZXM6ITEsc3RhdGljQ29udGVudFF1ZXJpZXM6ITEscHJlT3JkZXJIb29rczpudWxsLHByZU9yZGVyQ2hlY2tI''@;'; put 'put ''b29rczpudWxsLGNvbnRlbnRIb29rczpudWxsLGNvbnRlbnRDaGVja0hvb2tzOm51bGwsdmlld0hvb2tzOm51bGwsdmlld0NoZWNrSG9va3M6bnVsbCxkZXN0cm95SG9va3M6bnVsbCxjbGVhbnVwOm51bGwsY29udGVudFF1ZXJpZXM6bnVsbCxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlUmVn''@;'; put 'put ''aXN0cnk6ImZ1bmN0aW9uIj09dHlwZW9mIEM/QygpOkMscGlwZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBJP0koKTpJLGZpcnN0Q2hpbGQ6bnVsbCxzY2hlbWFzOmNlLGNvbnN0czpodCxpbmNvbXBsZXRlRmlyc3RQYXNzOiExfX1mdW5jdGlvbiB3eChkLGcsaCx2KXtjb25zdCB5PVBf''@;'; put 'put ''KGcpO251bGw9PT1oP3kucHVzaCh2KTooeS5wdXNoKGgpLGQuZmlyc3RDcmVhdGVQYXNzJiZ3QShkKS5wdXNoKHYseS5sZW5ndGgtMSkpfWZ1bmN0aW9uIEdtKGQsZyxoKXtmb3IobGV0IHYgaW4gZClpZihkLmhhc093blByb3BlcnR5KHYpKXtjb25zdCB5PWRbdl07KGg9bnVsbD09PWg/e306''@;'; put 'put ''aCkuaGFzT3duUHJvcGVydHkodik/aFt2XS5wdXNoKGcseSk6aFt2XT1bZyx5XX1yZXR1cm4gaH1mdW5jdGlvbiBNXyhkLGcpe2NvbnN0IHY9Zy5kaXJlY3RpdmVFbmQseT1kLmRhdGEsQz1nLmF0dHJzLEk9W107bGV0IGo9bnVsbCxjZT1udWxsO2ZvcihsZXQgX2U9Zy5kaXJlY3RpdmVTdGFy''@;'; put 'put ''dDtfZTx2O19lKyspe2NvbnN0IFJlPXlbX2VdLE5lPVJlLmlucHV0cyxLZT1udWxsPT09Q3x8ZUEoZyk/bnVsbDpDeChOZSxDKTtJLnB1c2goS2UpLGo9R20oTmUsX2UsaiksY2U9R20oUmUub3V0cHV0cyxfZSxjZSl9bnVsbCE9PWomJihqLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYoZy5m''@;'; put 'put ''bGFnc3w9MTYpLGouaGFzT3duUHJvcGVydHkoInN0eWxlIikmJihnLmZsYWdzfD0zMikpLGcuaW5pdGlhbElucHV0cz1JLGcuaW5wdXRzPWosZy5vdXRwdXRzPWNlfWZ1bmN0aW9uIGtjKGQsZyxoLHYseSxDLEksail7Y29uc3QgY2U9dmMoZyxoKTtsZXQgUmUsX2U9Zy5pbnB1dHM7IWomJm51''@;'; put 'put ''bGwhPV9lJiYoUmU9X2Vbdl0pPyhfQShkLGgsUmUsdix5KSxXZyhnKSYmV20oaCxnLmluZGV4KSk6MyZnLnR5cGUmJih2PWZ1bmN0aW9uIEVfKGQpe3JldHVybiJjbGFzcyI9PT1kPyJjbGFzc05hbWUiOiJmb3IiPT09ZD8iaHRtbEZvciI6ImZvcm1hY3Rpb24iPT09ZD8iZm9ybUFjdGlvbiI6''@;'; put 'put ''ImlubmVySHRtbCI9PT1kPyJpbm5lckhUTUwiOiJyZWFkb25seSI9PT1kPyJyZWFkT25seSI6InRhYmluZGV4Ij09PWQ/InRhYkluZGV4IjpkfSh2KSx5PW51bGwhPUk/SSh5LGcudmFsdWV8fCIiLHYpOnksQy5zZXRQcm9wZXJ0eShjZSx2LHkpKX1mdW5jdGlvbiBXbShkLGcpe2NvbnN0IGg9''@;'; put 'put ''JHUoZyxkKTsxNiZoWzJdfHwoaFsyXXw9MzIpfWZ1bmN0aW9uIHc2KGQsZyxoLHYpe2xldCB5PSExO2lmKGR0KCkpe2NvbnN0IEM9ZnVuY3Rpb24gX3goZCxnLGgpe2NvbnN0IHY9ZC5kaXJlY3RpdmVSZWdpc3RyeTtsZXQgeT1udWxsO2lmKHYpZm9yKGxldCBDPTA7Qzx2Lmxlbmd0aDtDKysp''@;'; put 'put ''e2NvbnN0IEk9dltDXTtrZChoLEkuc2VsZWN0b3JzLCExKSYmKHl8fCh5PVtdKSxEOChtZChoLGcpLGQsSS50eXBlKSxzZihJKT8obDIoZCxoKSx5LnVuc2hpZnQoSSkpOnkucHVzaChJKSl9cmV0dXJuIHl9KGQsZyxoKSxJPW51bGw9PT12P251bGw6eyIiOi0xfTtpZihudWxsIT09Qyl7eT0h''@;'; put 'put ''MCxoQShoLGQuZGF0YS5sZW5ndGgsQy5sZW5ndGgpO2ZvcihsZXQgUmU9MDtSZTxDLmxlbmd0aDtSZSsrKXtjb25zdCBOZT1DW1JlXTtOZS5wcm92aWRlcnNSZXNvbHZlciYmTmUucHJvdmlkZXJzUmVzb2x2ZXIoTmUpfWxldCBqPSExLGNlPSExLF9lPXhkKGQsZyxDLmxlbmd0aCxudWxsKTtm''@;'; put 'put ''b3IobGV0IFJlPTA7UmU8Qy5sZW5ndGg7UmUrKyl7Y29uc3QgTmU9Q1tSZV07aC5tZXJnZWRBdHRycz10bShoLm1lcmdlZEF0dHJzLE5lLmhvc3RBdHRycyksZEEoZCxoLGcsX2UsTmUpLF8xKF9lLE5lLEkpLG51bGwhPT1OZS5jb250ZW50UXVlcmllcyYmKGguZmxhZ3N8PTgpLChudWxsIT09''@;'; put 'put ''TmUuaG9zdEJpbmRpbmdzfHxudWxsIT09TmUuaG9zdEF0dHJzfHwwIT09TmUuaG9zdFZhcnMpJiYoaC5mbGFnc3w9MTI4KTtjb25zdCBLZT1OZS50eXBlLnByb3RvdHlwZTshaiYmKEtlLm5nT25DaGFuZ2VzfHxLZS5uZ09uSW5pdHx8S2UubmdEb0NoZWNrKSYmKChkLnByZU9yZGVySG9va3N8''@;'; put 'put ''fChkLnByZU9yZGVySG9va3M9W10pKS5wdXNoKGguaW5kZXgpLGo9ITApLCFjZSYmKEtlLm5nT25DaGFuZ2VzfHxLZS5uZ0RvQ2hlY2spJiYoKGQucHJlT3JkZXJDaGVja0hvb2tzfHwoZC5wcmVPcmRlckNoZWNrSG9va3M9W10pKS5wdXNoKGguaW5kZXgpLGNlPSEwKSxfZSsrfU1fKGQsaCl9''@;'; put 'put ''SSYmZnVuY3Rpb24gcWYoZCxnLGgpe2lmKGcpe2NvbnN0IHY9ZC5sb2NhbE5hbWVzPVtdO2ZvcihsZXQgeT0wO3k8Zy5sZW5ndGg7eSs9Mil7Y29uc3QgQz1oW2dbeSsxXV07aWYobnVsbD09Qyl0aHJvdyBuZXcgcXQoLTMwMSwhMSk7di5wdXNoKGdbeV0sQyl9fX0oaCx2LEkpfXJldHVybiBo''@;'; put 'put ''Lm1lcmdlZEF0dHJzPXRtKGgubWVyZ2VkQXR0cnMsaC5hdHRycykseX1mdW5jdGlvbiBieChkLGcsaCx2LHksQyl7Y29uc3QgST1DLmhvc3RCaW5kaW5ncztpZihJKXtsZXQgaj1kLmhvc3RCaW5kaW5nT3BDb2RlcztudWxsPT09aiYmKGo9ZC5ob3N0QmluZGluZ09wQ29kZXM9W10pO2NvbnN0''@;'; put 'put ''IGNlPX5nLmluZGV4OyhmdW5jdGlvbiBzUChkKXtsZXQgZz1kLmxlbmd0aDtmb3IoO2c+MDspe2NvbnN0IGg9ZFstLWddO2lmKCJudW1iZXIiPT10eXBlb2YgaCYmaDwwKXJldHVybiBofXJldHVybiAwfSkoaikhPWNlJiZqLnB1c2goY2UpLGoucHVzaCh2LHksSSl9fWZ1bmN0aW9uIFltKGQs''@;'; put 'put ''Zyl7bnVsbCE9PWQuaG9zdEJpbmRpbmdzJiZkLmhvc3RCaW5kaW5ncygxLGcpfWZ1bmN0aW9uIGwyKGQsZyl7Zy5mbGFnc3w9MiwoZC5jb21wb25lbnRzfHwoZC5jb21wb25lbnRzPVtdKSkucHVzaChnLmluZGV4KX1mdW5jdGlvbiBfMShkLGcsaCl7aWYoaCl7aWYoZy5leHBvcnRBcylmb3Io''@;'; put 'put ''bGV0IHY9MDt2PGcuZXhwb3J0QXMubGVuZ3RoO3YrKyloW2cuZXhwb3J0QXNbdl1dPWQ7c2YoZykmJihoWyIiXT1kKX19ZnVuY3Rpb24gaEEoZCxnLGgpe2QuZmxhZ3N8PTEsZC5kaXJlY3RpdmVTdGFydD1nLGQuZGlyZWN0aXZlRW5kPWcraCxkLnByb3ZpZGVySW5kZXhlcz1nfWZ1bmN0aW9u''@;'; put 'put ''IGRBKGQsZyxoLHYseSl7ZC5kYXRhW3ZdPXk7Y29uc3QgQz15LmZhY3Rvcnl8fCh5LmZhY3Rvcnk9Y2QoeS50eXBlKSksST1uZXcgcWkoQyxzZih5KSxLdCk7ZC5ibHVlcHJpbnRbdl09SSxoW3ZdPUksYngoZCxnLDAsdix4ZChkLGgseS5ob3N0VmFycyxVYSkseSl9ZnVuY3Rpb24gVW0oZCxn''@;'; put 'put ''LGgpe2NvbnN0IHY9dmMoZyxkKSx5PWtfKGgpLEM9ZFsxMF0sST1tQShkLG5jKGQseSxudWxsLGgub25QdXNoPzMyOjE2LHYsZyxDLEMuY3JlYXRlUmVuZGVyZXIodixoKSxudWxsLG51bGwsbnVsbCkpO2RbZy5pbmRleF09SX1mdW5jdGlvbiBMaChkLGcsaCx2LHksQyl7Y29uc3QgST12Yyhk''@;'; put 'put ''LGcpOyFmdW5jdGlvbiBJXyhkLGcsaCx2LHksQyxJKXtpZihudWxsPT1DKWQucmVtb3ZlQXR0cmlidXRlKGcseSxoKTtlbHNle2NvbnN0IGo9bnVsbD09ST9KbihDKTpJKEMsdnx8IiIseSk7ZC5zZXRBdHRyaWJ1dGUoZyx5LGosaCl9fShnWzExXSxJLEMsZC52YWx1ZSxoLHYseSl9ZnVuY3Rp''@;'; put 'put ''b24gcEEoZCxnLGgsdix5LEMpe2NvbnN0IEk9Q1tnXTtpZihudWxsIT09SSl7Y29uc3Qgaj12LnNldElucHV0O2ZvcihsZXQgY2U9MDtjZTxJLmxlbmd0aDspe2NvbnN0IF9lPUlbY2UrK10sUmU9SVtjZSsrXSxOZT1JW2NlKytdO251bGwhPT1qP3Yuc2V0SW5wdXQoaCxOZSxfZSxSZSk6aFtS''@;'; put 'put ''ZV09TmV9fX1mdW5jdGlvbiBDeChkLGcpe2xldCBoPW51bGwsdj0wO2Zvcig7djxnLmxlbmd0aDspe2NvbnN0IHk9Z1t2XTtpZigwIT09eSlpZig1IT09eSl7aWYoIm51bWJlciI9PXR5cGVvZiB5KWJyZWFrO2QuaGFzT3duUHJvcGVydHkoeSkmJihudWxsPT09aCYmKGg9W10pLGgucHVzaCh5''@;'; put 'put ''LGRbeV0sZ1t2KzFdKSksdis9Mn1lbHNlIHYrPTI7ZWxzZSB2Kz00fXJldHVybiBofWZ1bmN0aW9uIGdBKGQsZyxoLHYpe3JldHVybiBuZXcgQXJyYXkoZCwhMCwhMSxnLG51bGwsMCx2LGgsbnVsbCxudWxsKX1mdW5jdGlvbiBMXyhkLGcpe2NvbnN0IGg9JHUoZyxkKTtpZihlbShoKSl7Y29u''@;'; put 'put ''c3Qgdj1oWzFdOzQ4JmhbMl0/RGgodixoLHYudGVtcGxhdGUsaFs4XSk6aFs1XT4wJiZPXyhoKX19ZnVuY3Rpb24gT18oZCl7Zm9yKGxldCB2PUpmKGQpO251bGwhPT12O3Y9SjkodikpZm9yKGxldCB5PTEwO3k8di5sZW5ndGg7eSsrKXtjb25zdCBDPXZbeV07aWYoZW0oQykpaWYoNTEyJkNb''@;'; put 'put ''Ml0pe2NvbnN0IEk9Q1sxXTtEaChJLEMsSS50ZW1wbGF0ZSxDWzhdKX1lbHNlIENbNV0+MCYmT18oQyl9Y29uc3QgaD1kWzFdLmNvbXBvbmVudHM7aWYobnVsbCE9PWgpZm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kyspe2NvbnN0IHk9JHUoaFt2XSxkKTtlbSh5KSYmeVs1XT4wJiZPXyh5KX19''@;'; put 'put ''ZnVuY3Rpb24ga3goZCxnKXtjb25zdCBoPSR1KGcsZCksdj1oWzFdOyhmdW5jdGlvbiBTeChkLGcpe2ZvcihsZXQgaD1nLmxlbmd0aDtoPGQuYmx1ZXByaW50Lmxlbmd0aDtoKyspZy5wdXNoKGQuYmx1ZXByaW50W2hdKX0pKHYsaCksWm0odixoLGhbOF0pfWZ1bmN0aW9uIG1BKGQsZyl7cmV0''@;'; put 'put ''dXJuIGRbMTNdP2RbMTRdWzRdPWc6ZFsxM109ZyxkWzE0XT1nLGd9ZnVuY3Rpb24gSzgoZCl7Zm9yKDtkOyl7ZFsyXXw9MzI7Y29uc3QgZz12cyhkKTtpZihQZihkKSYmIWcpcmV0dXJuIGQ7ZD1nfXJldHVybiBudWxsfWZ1bmN0aW9uIHlBKGQsZyxoKXt5YygwKSxnKGQsaCl9ZnVuY3Rpb24g''@;'; put 'put ''UF8oZCl7cmV0dXJuIGRbN118fChkWzddPVtdKX1mdW5jdGlvbiB3QShkKXtyZXR1cm4gZC5jbGVhbnVwfHwoZC5jbGVhbnVwPVtdKX1mdW5jdGlvbiBiQShkLGcsaCl7cmV0dXJuKG51bGw9PT1kfHxzZihkKSkmJihoPWZ1bmN0aW9uIHY5KGQpe2Zvcig7QXJyYXkuaXNBcnJheShkKTspe2lm''@;'; put 'put ''KCJvYmplY3QiPT10eXBlb2YgZFsxXSlyZXR1cm4gZDtkPWRbMF19cmV0dXJuIG51bGx9KGhbZy5pbmRleF0pKSxoWzExXX1mdW5jdGlvbiBNeChkLGcpe2NvbnN0IGg9ZFs5XSx2PWg/aC5nZXQoWTgsbnVsbCk6bnVsbDt2JiZ2LmhhbmRsZUVycm9yKGcpfWZ1bmN0aW9uIF9BKGQsZyxoLHYs''@;'; put 'put ''eSl7Zm9yKGxldCBDPTA7QzxoLmxlbmd0aDspe2NvbnN0IEk9aFtDKytdLGo9aFtDKytdLGNlPWdbSV0sX2U9ZC5kYXRhW0ldO251bGwhPT1fZS5zZXRJbnB1dD9fZS5zZXRJbnB1dChjZSx5LHYsaik6Y2Vbal09eX19ZnVuY3Rpb24gRTMoZCxnLGgpe2NvbnN0IHY9VnAoZyxkKTshZnVuY3Rp''@;'; put 'put ''b24gZV8oZCxnLGgpe2Quc2V0VmFsdWUoZyxoKX0oZFsxMV0sdixoKX1mdW5jdGlvbiBRbShkLGcsaCl7bGV0IHY9aD9kLnN0eWxlczpudWxsLHk9aD9kLmNsYXNzZXM6bnVsbCxDPTA7aWYobnVsbCE9PWcpZm9yKGxldCBJPTA7STxnLmxlbmd0aDtJKyspe2NvbnN0IGo9Z1tJXTsibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIGo/Qz1qOjE9PUM/eT11bih5LGopOjI9PUMmJih2PXVuKHYsaisiOiAiK2dbKytJXSsiOyIpKX1oP2Quc3R5bGVzPXY6ZC5zdHlsZXNXaXRob3V0SG9zdD12LGg/ZC5jbGFzc2VzPXk6ZC5jbGFzc2VzV2l0aG91dEhvc3Q9eX1mdW5jdGlvbiBKbShkLGcsaCx2LHk9ITEpe2Zv''@;'; put 'put ''cig7bnVsbCE9PWg7KXtjb25zdCBDPWdbaC5pbmRleF07aWYobnVsbCE9PUMmJnYucHVzaChmMShDKSksVG8oQykpZm9yKGxldCBqPTEwO2o8Qy5sZW5ndGg7aisrKXtjb25zdCBjZT1DW2pdLF9lPWNlWzFdLmZpcnN0Q2hpbGQ7bnVsbCE9PV9lJiZKbShjZVsxXSxjZSxfZSx2KX1jb25zdCBJ''@;'; put 'put ''PWgudHlwZTtpZig4JkkpSm0oZCxnLGguY2hpbGQsdik7ZWxzZSBpZigzMiZJKXtjb25zdCBqPWM2KGgsZyk7bGV0IGNlO2Zvcig7Y2U9aigpOyl2LnB1c2goY2UpfWVsc2UgaWYoMTYmSSl7Y29uc3Qgaj1FaChnLGgpO2lmKEFycmF5LmlzQXJyYXkoaikpdi5wdXNoKC4uLmopO2Vsc2V7Y29u''@;'; put 'put ''c3QgY2U9dnMoZ1sxNl0pO0ptKGNlWzFdLGNlLGosdiwhMCl9fWg9eT9oLnByb2plY3Rpb25OZXh0OmgubmV4dH1yZXR1cm4gdn1jbGFzcyBiNntjb25zdHJ1Y3RvcihnLGgpe3RoaXMuX2xWaWV3PWcsdGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3PWgsdGhpcy5fYXBwUmVmPW51bGwsdGhpcy5f''@;'; put 'put ''YXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITF9Z2V0IHJvb3ROb2Rlcygpe2NvbnN0IGc9dGhpcy5fbFZpZXcsaD1nWzFdO3JldHVybiBKbShoLGcsaC5maXJzdENoaWxkLFtdKX1nZXQgY29udGV4dCgpe3JldHVybiB0aGlzLl9sVmlld1s4XX1zZXQgY29udGV4dChnKXt0aGlzLl9sVmlld1s4''@;'; put 'put ''XT1nfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gMTI4PT0oMTI4JnRoaXMuX2xWaWV3WzJdKX1kZXN0cm95KCl7aWYodGhpcy5fYXBwUmVmKXRoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KHRoaXMpO2Vsc2UgaWYodGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXIpe2NvbnN0IGc9dGhpcy5fbFZp''@;'; put 'put ''ZXdbM107aWYoVG8oZykpe2NvbnN0IGg9Z1s4XSx2PWg/aC5pbmRleE9mKHRoaXMpOi0xO3Y+LTEmJihVRShnLHYpLEFkKGgsdikpfXRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfVFFKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3KX1vbkRlc3Ryb3koZyl7d3godGhpcy5fbFZp''@;'; put 'put ''ZXdbMV0sdGhpcy5fbFZpZXcsbnVsbCxnKX1tYXJrRm9yQ2hlY2soKXtLOCh0aGlzLl9jZFJlZkluamVjdGluZ1ZpZXd8fHRoaXMuX2xWaWV3KX1kZXRhY2goKXt0aGlzLl9sVmlld1syXSY9LTY1fXJlYXR0YWNoKCl7dGhpcy5fbFZpZXdbMl18PTY0fWRldGVjdENoYW5nZXMoKXshZnVuY3Rp''@;'; put 'put ''b24gdkEoZCxnLGgpe2NvbnN0IHY9Z1sxMF07di5iZWdpbiYmdi5iZWdpbigpO3RyeXtEaChkLGcsZC50ZW1wbGF0ZSxoKX1jYXRjaCh5KXt0aHJvdyBNeChnLHkpLHl9ZmluYWxseXt2LmVuZCYmdi5lbmQoKX19KHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3LHRoaXMuY29udGV4dCl9Y2hl''@;'; put 'put ''Y2tOb0NoYW5nZXMoKXt9YXR0YWNoVG9WaWV3Q29udGFpbmVyUmVmKCl7aWYodGhpcy5fYXBwUmVmKXRocm93IG5ldyBxdCg5MDIsITEpO3RoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSEwfWRldGFjaEZyb21BcHBSZWYoKXt0aGlzLl9hcHBSZWY9bnVsbCxmdW5jdGlvbiBwNihkLGcp''@;'; put 'put ''e1RtKGQsZyxnWzExXSwyLG51bGwsbnVsbCl9KHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3KX1hdHRhY2hUb0FwcFJlZihnKXtpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil0aHJvdyBuZXcgcXQoOTAyLCExKTt0aGlzLl9hcHBSZWY9Z319Y2xhc3MgRXggZXh0ZW5kcyBiNntj''@;'; put 'put ''b25zdHJ1Y3RvcihnKXtzdXBlcihnKSx0aGlzLl92aWV3PWd9ZGV0ZWN0Q2hhbmdlcygpeyFmdW5jdGlvbiBCXyhkKXshZnVuY3Rpb24gUl8oZCl7Zm9yKGxldCBnPTA7ZzxkLmNvbXBvbmVudHMubGVuZ3RoO2crKyl7Y29uc3QgaD1kLmNvbXBvbmVudHNbZ10sdj1VYihoKTtpZihudWxsIT09''@;'; put 'put ''dil7Y29uc3QgeT12WzFdO3JQKHksdix5LnRlbXBsYXRlLGgpfX19KGRbOF0pfSh0aGlzLl92aWV3KX1jaGVja05vQ2hhbmdlcygpe31nZXQgY29udGV4dCgpe3JldHVybiBudWxsfX1jbGFzcyBYbSBleHRlbmRzIF9ke2NvbnN0cnVjdG9yKGcpe3N1cGVyKCksdGhpcy5uZ01vZHVsZT1nfXJl''@;'; put 'put ''c29sdmVDb21wb25lbnRGYWN0b3J5KGcpe2NvbnN0IGg9Z3MoZyk7cmV0dXJuIG5ldyBHNChoLHRoaXMubmdNb2R1bGUpfX1mdW5jdGlvbiBDQShkKXtjb25zdCBnPVtdO2ZvcihsZXQgaCBpbiBkKWQuaGFzT3duUHJvcGVydHkoaCkmJmcucHVzaCh7cHJvcE5hbWU6ZFtoXSx0ZW1wbGF0ZU5h''@;'; put 'put ''bWU6aH0pO3JldHVybiBnfWNsYXNzIEZfe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5pbmplY3Rvcj1nLHRoaXMucGFyZW50SW5qZWN0b3I9aH1nZXQoZyxoLHYpe2NvbnN0IHk9dGhpcy5pbmplY3Rvci5nZXQoZyxZOSx2KTtyZXR1cm4geSE9PVk5fHxoPT09WTk/eTp0aGlzLnBhcmVudEluamVj''@;'; put 'put ''dG9yLmdldChnLGgsdil9fWNsYXNzIEc0IGV4dGVuZHMgYmR7Y29uc3RydWN0b3IoZyxoKXtzdXBlcigpLHRoaXMuY29tcG9uZW50RGVmPWcsdGhpcy5uZ01vZHVsZT1oLHRoaXMuY29tcG9uZW50VHlwZT1nLnR5cGUsdGhpcy5zZWxlY3Rvcj1mdW5jdGlvbiBMQihkKXtyZXR1cm4gZC5tYXAo''@;'; put 'put ''REIpLmpvaW4oIiwiKX0oZy5zZWxlY3RvcnMpLHRoaXMubmdDb250ZW50U2VsZWN0b3JzPWcubmdDb250ZW50U2VsZWN0b3JzP2cubmdDb250ZW50U2VsZWN0b3JzOltdLHRoaXMuaXNCb3VuZFRvTW9kdWxlPSEhaH1nZXQgaW5wdXRzKCl7cmV0dXJuIENBKHRoaXMuY29tcG9uZW50RGVmLmlu''@;'; put 'put ''cHV0cyl9Z2V0IG91dHB1dHMoKXtyZXR1cm4gQ0EodGhpcy5jb21wb25lbnREZWYub3V0cHV0cyl9Y3JlYXRlKGcsaCx2LHkpe2xldCBDPSh5PXl8fHRoaXMubmdNb2R1bGUpaW5zdGFuY2VvZiBXYz95Om51bGw9PXk/dm9pZCAwOnkuaW5qZWN0b3I7QyYmbnVsbCE9PXRoaXMuY29tcG9uZW50''@;'; put 'put ''RGVmLmdldFN0YW5kYWxvbmVJbmplY3RvciYmKEM9dGhpcy5jb21wb25lbnREZWYuZ2V0U3RhbmRhbG9uZUluamVjdG9yKEMpfHxDKTtjb25zdCBJPUM/bmV3IEZfKGcsQyk6ZyxqPUkuZ2V0KGE2LG51bGwpO2lmKG51bGw9PT1qKXRocm93IG5ldyBxdCg0MDcsITEpO2NvbnN0IGNlPUkuZ2V0''@;'; put 'put ''KGFCLG51bGwpLF9lPWouY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksUmU9dGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3JzWzBdWzBdfHwiZGl2IixOZT12P2Z1bmN0aW9uIG9QKGQsZyxoKXtyZXR1cm4gZC5zZWxlY3RSb290RWxlbWVudChnLGg9PT0kcy5TaGFkb3dE''@;'; put 'put ''b20pfShfZSx2LHRoaXMuY29tcG9uZW50RGVmLmVuY2Fwc3VsYXRpb24pOkNkKGouY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksUmUsZnVuY3Rpb24gS20oZCl7Y29uc3QgZz1kLnRvTG93ZXJDYXNlKCk7cmV0dXJuInN2ZyI9PT1nPyJzdmciOiJtYXRoIj09PWc/Im1h''@;'; put 'put ''dGgiOm51bGx9KFJlKSksS2U9dGhpcy5jb21wb25lbnREZWYub25QdXNoPzI4ODoyNzIsaHQ9e2NvbXBvbmVudHM6W119LEJ0PVNfKDAsbnVsbCxudWxsLDEsMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLCR0PW5jKG51bGwsQnQsaHQsS2UsbnVsbCxudWxsLGosX2UsY2UsSSxudWxsKTts''@;'; put 'put ''ZXQgaG4sRG47R2woJHQpO3RyeXtjb25zdCBpcj1mdW5jdGlvbiBkUChkLGcsaCx2LHksQyl7Y29uc3QgST1oWzFdO2hbMjJdPWQ7Y29uc3QgY2U9SWgoSSwyMiwyLCIjaG9zdCIsbnVsbCksX2U9Y2UubWVyZ2VkQXR0cnM9Zy5ob3N0QXR0cnM7bnVsbCE9PV9lJiYoUW0oY2UsX2UsITApLG51''@;'; put 'put ''bGwhPT1kJiYoJGwoeSxkLF9lKSxudWxsIT09Y2UuY2xhc3NlcyYmc18oeSxkLGNlLmNsYXNzZXMpLG51bGwhPT1jZS5zdHlsZXMmJkltKHksZCxjZS5zdHlsZXMpKSk7Y29uc3QgUmU9di5jcmVhdGVSZW5kZXJlcihkLGcpLE5lPW5jKGgsa18oZyksbnVsbCxnLm9uUHVzaD8zMjoxNixoWzIy''@;'; put 'put ''XSxjZSx2LFJlLEN8fG51bGwsbnVsbCxudWxsKTtyZXR1cm4gSS5maXJzdENyZWF0ZVBhc3MmJihEOChtZChjZSxoKSxJLGcudHlwZSksbDIoSSxjZSksaEEoY2UsaC5sZW5ndGgsMSkpLG1BKGgsTmUpLGhbMjJdPU5lfShOZSx0aGlzLmNvbXBvbmVudERlZiwkdCxqLF9lKTtpZihOZSlpZih2''@;'; put 'put ''KSRsKF9lLE5lLFsibmctdmVyc2lvbiIsVzkuZnVsbF0pO2Vsc2V7Y29uc3R7YXR0cnM6cHIsY2xhc3NlczpFcn09ZnVuY3Rpb24gT0IoZCl7Y29uc3QgZz1bXSxoPVtdO2xldCB2PTEseT0yO2Zvcig7djxkLmxlbmd0aDspe2xldCBDPWRbdl07aWYoInN0cmluZyI9PXR5cGVvZiBDKTI9PT15''@;'; put 'put ''PyIiIT09QyYmZy5wdXNoKEMsZFsrK3ZdKTo4PT09eSYmaC5wdXNoKEMpO2Vsc2V7aWYoIUFmKHkpKWJyZWFrO3k9Q312Kyt9cmV0dXJue2F0dHJzOmcsY2xhc3NlczpofX0odGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3JzWzBdKTtwciYmJGwoX2UsTmUscHIpLEVyJiZFci5sZW5ndGg+MCYm''@;'; put 'put ''c18oX2UsTmUsRXIuam9pbigiICIpKX1pZihEbj1BOShCdCwyMiksdm9pZCAwIT09aCl7Y29uc3QgcHI9RG4ucHJvamVjdGlvbj1bXTtmb3IobGV0IEVyPTA7RXI8dGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnMubGVuZ3RoO0VyKyspe2NvbnN0IEFyPWhbRXJdO3ByLnB1c2gobnVsbCE9QXI/QXJy''@;'; put 'put ''YXkuZnJvbShBcik6bnVsbCl9fWhuPWZ1bmN0aW9uICRtKGQsZyxoLHYseSl7Y29uc3QgQz1oWzFdLEk9ZnVuY3Rpb24gZkEoZCxnLGgpe2NvbnN0IHY9YXIoKTtkLmZpcnN0Q3JlYXRlUGFzcyYmKGgucHJvdmlkZXJzUmVzb2x2ZXImJmgucHJvdmlkZXJzUmVzb2x2ZXIoaCksZEEoZCx2LGcs''@;'; put 'put ''eGQoZCxnLDEsbnVsbCksaCksTV8oZCx2KSk7Y29uc3QgeT1faChnLGQsdi5kaXJlY3RpdmVTdGFydCx2KTt0Yyh5LGcpO2NvbnN0IEM9dmModixnKTtyZXR1cm4gQyYmdGMoQyxnKSx5fShDLGgsZyk7aWYodi5jb21wb25lbnRzLnB1c2goSSksZFs4XT1JLG51bGwhPT15KWZvcihjb25zdCBj''@;'; put 'put ''ZSBvZiB5KWNlKEksZyk7aWYoZy5jb250ZW50UXVlcmllcyl7Y29uc3QgY2U9YXIoKTtnLmNvbnRlbnRRdWVyaWVzKDEsSSxjZS5kaXJlY3RpdmVTdGFydCl9Y29uc3Qgaj1hcigpO3JldHVybiFDLmZpcnN0Q3JlYXRlUGFzc3x8bnVsbD09PWcuaG9zdEJpbmRpbmdzJiZudWxsPT09Zy5ob3N0''@;'; put 'put ''QXR0cnN8fChkZChqLmluZGV4KSxieChoWzFdLGosMCxqLmRpcmVjdGl2ZVN0YXJ0LGouZGlyZWN0aXZlRW5kLGcpLFltKGcsSSkpLEl9KGlyLHRoaXMuY29tcG9uZW50RGVmLCR0LGh0LFtWX10pLFptKEJ0LCR0LG51bGwpfWZpbmFsbHl7aGQoKX1yZXR1cm4gbmV3IEhfKHRoaXMuY29tcG9u''@;'; put 'put ''ZW50VHlwZSxobixvNihEbiwkdCksJHQsRG4pfX1jbGFzcyBIXyBleHRlbmRzIGNsYXNzIE80e317Y29uc3RydWN0b3IoZyxoLHYseSxDKXtzdXBlcigpLHRoaXMubG9jYXRpb249dix0aGlzLl9yb290TFZpZXc9eSx0aGlzLl90Tm9kZT1DLHRoaXMuaW5zdGFuY2U9aCx0aGlzLmhvc3RWaWV3''@;'; put 'put ''PXRoaXMuY2hhbmdlRGV0ZWN0b3JSZWY9bmV3IEV4KHkpLHRoaXMuY29tcG9uZW50VHlwZT1nfXNldElucHV0KGcsaCl7Y29uc3Qgdj10aGlzLl90Tm9kZS5pbnB1dHM7bGV0IHk7aWYobnVsbCE9PXYmJih5PXZbZ10pKXtjb25zdCBDPXRoaXMuX3Jvb3RMVmlldztfQShDWzFdLEMseSxnLGgp''@;'; put 'put ''LFdtKEMsdGhpcy5fdE5vZGUuaW5kZXgpfX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IFdwKHRoaXMuX3ROb2RlLHRoaXMuX3Jvb3RMVmlldyl9ZGVzdHJveSgpe3RoaXMuaG9zdFZpZXcuZGVzdHJveSgpfW9uRGVzdHJveShnKXt0aGlzLmhvc3RWaWV3Lm9uRGVzdHJveShnKX19ZnVuY3Rp''@;'; put 'put ''b24gVl8oKXtjb25zdCBkPWFyKCk7Z2QodWUoKVsxXSxkKX1mdW5jdGlvbiBSbyhkKXtsZXQgZz1mdW5jdGlvbiBUeChkKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGQucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcn0oZC50eXBlKSxoPSEwO2NvbnN0IHY9W2RdO2Zvcig7Zzspe2xldCB5''@;'; put 'put ''O2lmKHNmKGQpKXk9Zy5cdTAyNzVjbXB8fGcuXHUwMjc1ZGlyO2Vsc2V7aWYoZy5cdTAyNzVjbXApdGhyb3cgbmV3IHF0KDkwMywhMSk7eT1nLlx1MDI3NWRpcn1pZih5KXtpZihoKXt2LnB1c2goeSk7Y29uc3QgST1kO0kuaW5wdXRzPWtBKGQuaW5wdXRzKSxJLmRlY2xhcmVkSW5wdXRzPWtB''@;'; put 'put ''KGQuZGVjbGFyZWRJbnB1dHMpLEkub3V0cHV0cz1rQShkLm91dHB1dHMpO2NvbnN0IGo9eS5ob3N0QmluZGluZ3M7aiYmbVAoZCxqKTtjb25zdCBjZT15LnZpZXdRdWVyeSxfZT15LmNvbnRlbnRRdWVyaWVzO2lmKGNlJiZJeChkLGNlKSxfZSYmZ1AoZCxfZSksU3IoZC5pbnB1dHMseS5pbnB1''@;'; put 'put ''dHMpLFNyKGQuZGVjbGFyZWRJbnB1dHMseS5kZWNsYXJlZElucHV0cyksU3IoZC5vdXRwdXRzLHkub3V0cHV0cyksc2YoeSkmJnkuZGF0YS5hbmltYXRpb24pe2NvbnN0IFJlPWQuZGF0YTtSZS5hbmltYXRpb249KFJlLmFuaW1hdGlvbnx8W10pLmNvbmNhdCh5LmRhdGEuYW5pbWF0aW9uKX19''@;'; put 'put ''Y29uc3QgQz15LmZlYXR1cmVzO2lmKEMpZm9yKGxldCBJPTA7STxDLmxlbmd0aDtJKyspe2NvbnN0IGo9Q1tJXTtqJiZqLm5nSW5oZXJpdCYmaihkKSxqPT09Um8mJihoPSExKX19Zz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZyl9IWZ1bmN0aW9uIHBQKGQpe2xldCBnPTAsaD1udWxsO2Zvcihs''@;'; put 'put ''ZXQgdj1kLmxlbmd0aC0xO3Y+PTA7di0tKXtjb25zdCB5PWRbdl07eS5ob3N0VmFycz1nKz15Lmhvc3RWYXJzLHkuaG9zdEF0dHJzPXRtKHkuaG9zdEF0dHJzLGg9dG0oaCx5Lmhvc3RBdHRycykpfX0odil9ZnVuY3Rpb24ga0EoZCl7cmV0dXJuIGQ9PT1nYz97fTpkPT09dGw/W106ZH1mdW5j''@;'; put 'put ''dGlvbiBJeChkLGcpe2NvbnN0IGg9ZC52aWV3UXVlcnk7ZC52aWV3UXVlcnk9aD8odix5KT0+e2codix5KSxoKHYseSl9Omd9ZnVuY3Rpb24gZ1AoZCxnKXtjb25zdCBoPWQuY29udGVudFF1ZXJpZXM7ZC5jb250ZW50UXVlcmllcz1oPyh2LHksQyk9PntnKHYseSxDKSxoKHYseSxDKX06Z31m''@;'; put 'put ''dW5jdGlvbiBtUChkLGcpe2NvbnN0IGg9ZC5ob3N0QmluZGluZ3M7ZC5ob3N0QmluZGluZ3M9aD8odix5KT0+e2codix5KSxoKHYseSl9Omd9bGV0IHFtPW51bGw7ZnVuY3Rpb24gXzYoKXtpZighcW0pe2NvbnN0IGQ9RGwuU3ltYm9sO2lmKGQmJmQuaXRlcmF0b3IpcW09ZC5pdGVyYXRvcjtl''@;'; put 'put ''bHNle2NvbnN0IGc9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSk7Zm9yKGxldCBoPTA7aDxnLmxlbmd0aDsrK2gpe2NvbnN0IHY9Z1toXTsiZW50cmllcyIhPT12JiYic2l6ZSIhPT12JiZNYXAucHJvdG90eXBlW3ZdPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYo''@;'; put 'put ''cW09dil9fX1yZXR1cm4gcW19ZnVuY3Rpb24gZTcoZCl7cmV0dXJuISFDNihkKSYmKEFycmF5LmlzQXJyYXkoZCl8fCEoZCBpbnN0YW5jZW9mIE1hcCkmJl82KClpbiBkKX1mdW5jdGlvbiBDNihkKXtyZXR1cm4gbnVsbCE9PWQmJigiZnVuY3Rpb24iPT10eXBlb2YgZHx8Im9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBkKX1mdW5jdGlvbiBPaChkLGcsaCl7cmV0dXJuIGRbZ109aH1mdW5jdGlvbiBpYyhkLGcsaCl7cmV0dXJuIU9iamVjdC5pcyhkW2ddLGgpJiYoZFtnXT1oLCEwKX1mdW5jdGlvbiBrNihkLGcsaCx2KXtjb25zdCB5PWljKGQsZyxoKTtyZXR1cm4gaWMoZCxnKzEsdil8fHl9ZnVuY3Rp''@;'; put 'put ''b24gTUEoZCxnLGgsdix5KXtjb25zdCBDPWs2KGQsZyxoLHYpO3JldHVybiBpYyhkLGcrMix5KXx8Q31mdW5jdGlvbiBHaShkLGcsaCx2KXtjb25zdCB5PXVlKCk7cmV0dXJuIGljKHksXzIoKSxnKSYmKFR0KCksTGgod2woKSx5LGQsZyxoLHYpKSxHaX1mdW5jdGlvbiBxOChkLGcsaCx2KXty''@;'; put 'put ''ZXR1cm4gaWMoZCxfMigpLGgpP2crSm4oaCkrdjpVYX1mdW5jdGlvbiBubihkLGcsaCx2LHksQyxJLGope2NvbnN0IGNlPXVlKCksX2U9VHQoKSxSZT1kKzIyLE5lPV9lLmZpcnN0Q3JlYXRlUGFzcz9mdW5jdGlvbiBXNChkLGcsaCx2LHksQyxJLGosY2Upe2NvbnN0IF9lPWcuY29uc3RzLFJl''@;'; put 'put ''PUloKGcsZCw0LEl8fG51bGwsT3UoX2UsaikpO3c2KGcsaCxSZSxPdShfZSxjZSkpLGdkKGcsUmUpO2NvbnN0IE5lPVJlLnRWaWV3cz1TXygyLFJlLHYseSxDLGcuZGlyZWN0aXZlUmVnaXN0cnksZy5waXBlUmVnaXN0cnksbnVsbCxnLnNjaGVtYXMsX2UpO3JldHVybiBudWxsIT09Zy5xdWVy''@;'; put 'put ''aWVzJiYoZy5xdWVyaWVzLnRlbXBsYXRlKGcsUmUpLE5lLnF1ZXJpZXM9Zy5xdWVyaWVzLmVtYmVkZGVkVFZpZXcoUmUpKSxSZX0oUmUsX2UsY2UsZyxoLHYseSxDLEkpOl9lLmRhdGFbUmVdO18oTmUsITEpO2NvbnN0IEtlPWNlWzExXS5jcmVhdGVDb21tZW50KCIiKTt4bShfZSxjZSxLZSxO''@;'; put 'put ''ZSksdGMoS2UsY2UpLG1BKGNlLGNlW1JlXT1nQShLZSxjZSxLZSxOZSkpLFlnKE5lKSYmejQoX2UsY2UsTmUpLG51bGwhPUkmJnptKGNlLE5lLGopfWZ1bmN0aW9uIHVhKGQpe3JldHVybiBmZChmdW5jdGlvbiBvZSgpe3JldHVybiBMYS5sRnJhbWUuY29udGV4dExWaWV3fSgpLDIyK2QpfWZ1''@;'; put 'put ''bmN0aW9uIHh0KGQsZyxoKXtjb25zdCB2PXVlKCk7cmV0dXJuIGljKHYsXzIoKSxnKSYma2MoVHQoKSx3bCgpLHYsZCxnLHZbMTFdLGgsITEpLHh0fWZ1bmN0aW9uIEMxKGQsZyxoLHYseSl7Y29uc3QgST15PyJjbGFzcyI6InN0eWxlIjtfQShkLGgsZy5pbnB1dHNbSV0sSSx2KX1mdW5jdGlv''@;'; put 'put ''biB0dChkLGcsaCx2KXtjb25zdCB5PXVlKCksQz1UdCgpLEk9MjIrZCxqPXlbMTFdLGNlPXlbSV09Q2QoaixnLGZ1bmN0aW9uIHAyKCl7cmV0dXJuIExhLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlfSgpKSxfZT1DLmZpcnN0Q3JlYXRlUGFzcz9mdW5jdGlvbiBTYyhkLGcsaCx2LHksQyxJKXtj''@;'; put 'put ''b25zdCBqPWcuY29uc3RzLF9lPUloKGcsZCwyLHksT3UoaixDKSk7cmV0dXJuIHc2KGcsaCxfZSxPdShqLEkpKSxudWxsIT09X2UuYXR0cnMmJlFtKF9lLF9lLmF0dHJzLCExKSxudWxsIT09X2UubWVyZ2VkQXR0cnMmJlFtKF9lLF9lLm1lcmdlZEF0dHJzLCEwKSxudWxsIT09Zy5xdWVyaWVz''@;'; put 'put ''JiZnLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGcsX2UpLF9lfShJLEMseSwwLGcsaCx2KTpDLmRhdGFbSV07XyhfZSwhMCk7Y29uc3QgUmU9X2UubWVyZ2VkQXR0cnM7bnVsbCE9PVJlJiYkbChqLGNlLFJlKTtjb25zdCBOZT1fZS5jbGFzc2VzO251bGwhPT1OZSYmc18oaixjZSxOZSk7Y29uc3Qg''@;'; put 'put ''S2U9X2Uuc3R5bGVzO3JldHVybiBudWxsIT09S2UmJkltKGosY2UsS2UpLDY0IT0oNjQmX2UuZmxhZ3MpJiZ4bShDLHksY2UsX2UpLDA9PT1mdW5jdGlvbiBhMigpe3JldHVybiBMYS5sRnJhbWUuZWxlbWVudERlcHRoQ291bnR9KCkmJnRjKGNlLHkpLGZ1bmN0aW9uIElSKCl7TGEubEZyYW1l''@;'; put 'put ''LmVsZW1lbnREZXB0aENvdW50Kyt9KCksWWcoX2UpJiYoejQoQyx5LF9lKSxyYyhDLF9lLHkpKSxudWxsIT09diYmem0oeSxfZSksdHR9ZnVuY3Rpb24gaXQoKXtsZXQgZD1hcigpO3dvKCk/a2koKTooZD1kLnBhcmVudCxfKGQsITEpKTtjb25zdCBnPWQ7IWZ1bmN0aW9uIERSKCl7TGEubEZy''@;'; put 'put ''YW1lLmVsZW1lbnREZXB0aENvdW50LS19KCk7Y29uc3QgaD1UdCgpO3JldHVybiBoLmZpcnN0Q3JlYXRlUGFzcyYmKGdkKGgsZCksUnMoZCkmJmgucXVlcmllcy5lbGVtZW50RW5kKGQpKSxudWxsIT1nLmNsYXNzZXNXaXRob3V0SG9zdCYmZnVuY3Rpb24gRzEoZCl7cmV0dXJuIDAhPSgxNiZk''@;'; put 'put ''LmZsYWdzKX0oZykmJkMxKGgsZyx1ZSgpLGcuY2xhc3Nlc1dpdGhvdXRIb3N0LCEwKSxudWxsIT1nLnN0eWxlc1dpdGhvdXRIb3N0JiZmdW5jdGlvbiBlMShkKXtyZXR1cm4gMCE9KDMyJmQuZmxhZ3MpfShnKSYmQzEoaCxnLHVlKCksZy5zdHlsZXNXaXRob3V0SG9zdCwhMSksaXR9ZnVuY3Rp''@;'; put 'put ''b24gYnIoZCxnLGgsdil7cmV0dXJuIHR0KGQsZyxoLHYpLGl0KCksYnJ9ZnVuY3Rpb24gTDAoZCxnLGgpe2NvbnN0IHY9dWUoKSx5PVR0KCksQz1kKzIyLEk9eS5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24gQ1AoZCxnLGgsdix5KXtjb25zdCBDPWcuY29uc3RzLEk9T3UoQyx2KSxqPUloKGcs''@;'; put 'put ''ZCw4LCJuZy1jb250YWluZXIiLEkpO3JldHVybiBudWxsIT09SSYmUW0oaixJLCEwKSx3NihnLGgsaixPdShDLHkpKSxudWxsIT09Zy5xdWVyaWVzJiZnLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGcsaiksan0oQyx5LHYsZyxoKTp5LmRhdGFbQ107XyhJLCEwKTtjb25zdCBqPXZbQ109dlsxMV0u''@;'; put 'put ''Y3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIHhtKHksdixqLEkpLHRjKGosdiksWWcoSSkmJih6NCh5LHYsSSkscmMoeSxJLHYpKSxudWxsIT1oJiZ6bSh2LEkpLEwwfWZ1bmN0aW9uIE8wKCl7bGV0IGQ9YXIoKTtjb25zdCBnPVR0KCk7cmV0dXJuIHdvKCk/a2koKTooZD1kLnBhcmVudCxfKGQs''@;'; put 'put ''ITEpKSxnLmZpcnN0Q3JlYXRlUGFzcyYmKGdkKGcsZCksUnMoZCkmJmcucXVlcmllcy5lbGVtZW50RW5kKGQpKSxPMH1mdW5jdGlvbiBoMShkLGcsaCl7cmV0dXJuIEwwKGQsZyxoKSxPMCgpLGgxfWZ1bmN0aW9uIHlpKCl7cmV0dXJuIHVlKCl9ZnVuY3Rpb24gczUoZCl7cmV0dXJuISFkJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgZC50aGVufWZ1bmN0aW9uIE94KGQpe3JldHVybiEhZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQuc3Vic2NyaWJlfWNvbnN0IFk0PU94O2Z1bmN0aW9uIFpuKGQsZyxoLHYpe2NvbnN0IHk9dWUoKSxDPVR0KCksST1hcigpO3JldHVybiB6XyhDLHkseVsxMV0sSSxk''@;'; put 'put ''LGcsMCx2KSxabn1mdW5jdGlvbiBaXyhkLGcpe2NvbnN0IGg9YXIoKSx2PXVlKCkseT1UdCgpO3JldHVybiB6Xyh5LHYsYkEodzkoeS5kYXRhKSxoLHYpLGgsZCxnKSxaX31mdW5jdGlvbiB6XyhkLGcsaCx2LHksQyxJLGope2NvbnN0IGNlPVlnKHYpLFJlPWQuZmlyc3RDcmVhdGVQYXNzJiZ3''@;'; put 'put ''QShkKSxOZT1nWzhdLEtlPVBfKGcpO2xldCBodD0hMDtpZigzJnYudHlwZXx8ail7Y29uc3QgaG49dmModixnKSxEbj1qP2ooaG4pOmhuLGlyPUtlLmxlbmd0aCxwcj1qP0FyPT5qKGYxKEFyW3YuaW5kZXhdKSk6di5pbmRleDtsZXQgRXI9bnVsbDtpZighaiYmY2UmJihFcj1mdW5jdGlvbiBr''@;'; put 'put ''UChkLGcsaCx2KXtjb25zdCB5PWQuY2xlYW51cDtpZihudWxsIT15KWZvcihsZXQgQz0wO0M8eS5sZW5ndGgtMTtDKz0yKXtjb25zdCBJPXlbQ107aWYoST09PWgmJnlbQysxXT09PXYpe2NvbnN0IGo9Z1s3XSxjZT15W0MrMl07cmV0dXJuIGoubGVuZ3RoPmNlP2pbY2VdOm51bGx9InN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiBJJiYoQys9Mil9cmV0dXJuIG51bGx9KGQsZyx5LHYuaW5kZXgpKSxudWxsIT09RXIpKEVyLl9fbmdMYXN0TGlzdGVuZXJGbl9ffHxFcikuX19uZ05leHRMaXN0ZW5lckZuX189QyxFci5fX25nTGFzdExpc3RlbmVyRm5fXz1DLGh0PSExO2Vsc2V7Qz1CeCh2LGcsTmUsQywh''@;'; put 'put ''MSk7Y29uc3QgQXI9aC5saXN0ZW4oRG4seSxDKTtLZS5wdXNoKEMsQXIpLFJlJiZSZS5wdXNoKHkscHIsaXIsaXIrMSl9fWVsc2UgQz1CeCh2LGcsTmUsQywhMSk7Y29uc3QgQnQ9di5vdXRwdXRzO2xldCAkdDtpZihodCYmbnVsbCE9PUJ0JiYoJHQ9QnRbeV0pKXtjb25zdCBobj0kdC5sZW5n''@;'; put 'put ''dGg7aWYoaG4pZm9yKGxldCBEbj0wO0RuPGhuO0RuKz0yKXtjb25zdCBZcj1nWyR0W0RuXV1bJHRbRG4rMV1dLnN1YnNjcmliZShDKSxfaT1LZS5sZW5ndGg7S2UucHVzaChDLFlyKSxSZSYmUmUucHVzaCh5LHYuaW5kZXgsX2ksLShfaSsxKSl9fX1mdW5jdGlvbiBSeChkLGcsaCx2KXt0cnl7''@;'; put 'put ''cmV0dXJuITEhPT1oKHYpfWNhdGNoKHkpe3JldHVybiBNeChkLHkpLCExfX1mdW5jdGlvbiBCeChkLGcsaCx2LHkpe3JldHVybiBmdW5jdGlvbiBDKEkpe2lmKEk9PT1GdW5jdGlvbilyZXR1cm4gdjtLOCgyJmQuZmxhZ3M/JHUoZC5pbmRleCxnKTpnKTtsZXQgY2U9UngoZywwLHYsSSksX2U9''@;'; put 'put ''Qy5fX25nTmV4dExpc3RlbmVyRm5fXztmb3IoO19lOyljZT1SeChnLDAsX2UsSSkmJmNlLF9lPV9lLl9fbmdOZXh0TGlzdGVuZXJGbl9fO3JldHVybiB5JiYhMT09PWNlJiYoSS5wcmV2ZW50RGVmYXVsdCgpLEkucmV0dXJuVmFsdWU9ITEpLGNlfX1mdW5jdGlvbiBVdChkPTEpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbiBWZihkKXtyZXR1cm4oTGEubEZyYW1lLmNvbnRleHRMVmlldz1mdW5jdGlvbiBxMihkLGcpe2Zvcig7ZD4wOylnPWdbMTVdLGQtLTtyZXR1cm4gZ30oZCxMYS5sRnJhbWUuY29udGV4dExWaWV3KSlbOF19KGQpfWZ1bmN0aW9uIFNQKGQsZyl7bGV0IGg9bnVsbDtjb25zdCB2PWZ1''@;'; put 'put ''bmN0aW9uIExtKGQpe2NvbnN0IGc9ZC5hdHRycztpZihudWxsIT1nKXtjb25zdCBoPWcuaW5kZXhPZig1KTtpZigwPT0oMSZoKSlyZXR1cm4gZ1toKzFdfXJldHVybiBudWxsfShkKTtmb3IobGV0IHk9MDt5PGcubGVuZ3RoO3krKyl7Y29uc3QgQz1nW3ldO2lmKCIqIiE9PUMpe2lmKG51bGw9''@;'; put 'put ''PT12P2tkKGQsQywhMCk6bngodixDKSlyZXR1cm4geX1lbHNlIGg9eX1yZXR1cm4gaH1mdW5jdGlvbiAkMChkKXtjb25zdCBnPXVlKClbMTZdWzZdO2lmKCFnLnByb2plY3Rpb24pe2NvbnN0IHY9Zy5wcm9qZWN0aW9uPWxtKGQ/ZC5sZW5ndGg6MSxudWxsKSx5PXYuc2xpY2UoKTtsZXQgQz1n''@;'; put 'put ''LmNoaWxkO2Zvcig7bnVsbCE9PUM7KXtjb25zdCBJPWQ/U1AoQyxkKTowO251bGwhPT1JJiYoeVtJXT95W0ldLnByb2plY3Rpb25OZXh0PUM6dltJXT1DLHlbSV09QyksQz1DLm5leHR9fX1mdW5jdGlvbiBWaShkLGc9MCxoKXtjb25zdCB2PXVlKCkseT1UdCgpLEM9SWgoeSwyMitkLDE2LG51''@;'; put 'put ''bGwsaHx8bnVsbCk7bnVsbD09PUMucHJvamVjdGlvbiYmKEMucHJvamVjdGlvbj1nKSxraSgpLDY0IT0oNjQmQy5mbGFncykmJmZ1bmN0aW9uIEVCKGQsZyxoKXtleChnWzExXSwwLGcsaCwkOShkLGgsZyksaV8oaC5wYXJlbnR8fGdbNl0saCxnKSl9KHksdixDKX1mdW5jdGlvbiBVNChkLGcs''@;'; put 'put ''aCl7cmV0dXJuIFE0KGQsIiIsZywiIixoKSxVNH1mdW5jdGlvbiBRNChkLGcsaCx2LHkpe2NvbnN0IEM9dWUoKSxJPXE4KEMsZyxoLHYpO3JldHVybiBJIT09VWEmJmtjKFR0KCksd2woKSxDLGQsSSxDWzExXSx5LCExKSxRNH1mdW5jdGlvbiBqeChkLGcsaCx2LHkpe2NvbnN0IEM9ZFtoKzFd''@;'; put 'put ''LEk9bnVsbD09PWc7bGV0IGo9dj9UaChDKTpYZihDKSxjZT0hMTtmb3IoOzAhPT1qJiYoITE9PT1jZXx8SSk7KXtjb25zdCBSZT1kW2orMV07RVAoZFtqXSxnKSYmKGNlPSEwLGRbaisxXT12P0E2KFJlKTppQShSZSkpLGo9dj9UaChSZSk6WGYoUmUpfWNlJiYoZFtoKzFdPXY/aUEoQyk6QTYo''@;'; put 'put ''QykpfWZ1bmN0aW9uIEVQKGQsZyl7cmV0dXJuIG51bGw9PT1kfHxudWxsPT1nfHwoQXJyYXkuaXNBcnJheShkKT9kWzFdOmQpPT09Z3x8ISghQXJyYXkuaXNBcnJheShkKXx8InN0cmluZyIhPXR5cGVvZiBnKSYmJHAoZCxnKT49MH1mdW5jdGlvbiBJZChkLGcsaCl7cmV0dXJuIG5oKGQsZyxo''@;'; put 'put ''LCExKSxJZH1mdW5jdGlvbiBIaShkLGcpe3JldHVybiBuaChkLGcsbnVsbCwhMCksSGl9ZnVuY3Rpb24gbmgoZCxnLGgsdil7Y29uc3QgeT11ZSgpLEM9VHQoKSxJPSQyKDIpO0MuZmlyc3RVcGRhdGVQYXNzJiZmdW5jdGlvbiBKeChkLGcsaCx2KXtjb25zdCB5PWQuZGF0YTtpZihudWxsPT09''@;'; put 'put ''eVtoKzFdKXtjb25zdCBDPXlbejEoKV0sST1mdW5jdGlvbiBMQShkLGcpe3JldHVybiBnPj1kLmV4cGFuZG9TdGFydEluZGV4fShkLGgpOyhmdW5jdGlvbiBVXyhkLGcpe3JldHVybiAwIT0oZC5mbGFncyYoZz8xNjozMikpfSkoQyx2KSYmbnVsbD09PWcmJiFJJiYoZz0hMSksZz1mdW5jdGlv''@;'; put 'put ''biBPUChkLGcsaCx2KXtjb25zdCB5PXc5KGQpO2xldCBDPXY/Zy5yZXNpZHVhbENsYXNzZXM6Zy5yZXNpZHVhbFN0eWxlcztpZihudWxsPT09eSkwPT09KHY/Zy5jbGFzc0JpbmRpbmdzOmcuc3R5bGVCaW5kaW5ncykmJihoPXI3KGg9T0EobnVsbCxkLGcsaCx2KSxnLmF0dHJzLHYpLEM9bnVs''@;'; put 'put ''bCk7ZWxzZXtjb25zdCBJPWcuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7aWYoLTE9PT1JfHxkW0ldIT09eSlpZihoPU9BKHksZCxnLGgsdiksbnVsbD09PUMpe2xldCBjZT1mdW5jdGlvbiBSUChkLGcsaCl7Y29uc3Qgdj1oP2cuY2xhc3NCaW5kaW5nczpnLnN0eWxlQmluZGluZ3M7aWYoMCE9PVhm''@;'; put 'put ''KHYpKXJldHVybiBkW1RoKHYpXX0oZCxnLHYpO3ZvaWQgMCE9PWNlJiZBcnJheS5pc0FycmF5KGNlKSYmKGNlPU9BKG51bGwsZCxnLGNlWzFdLHYpLGNlPXI3KGNlLGcuYXR0cnMsdiksZnVuY3Rpb24gWHgoZCxnLGgsdil7ZFtUaChoP2cuY2xhc3NCaW5kaW5nczpnLnN0eWxlQmluZGluZ3Mp''@;'; put 'put ''XT12fShkLGcsdixjZSkpfWVsc2UgQz1mdW5jdGlvbiBLeChkLGcsaCl7bGV0IHY7Y29uc3QgeT1nLmRpcmVjdGl2ZUVuZDtmb3IobGV0IEM9MStnLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O0M8eTtDKyspdj1yNyh2LGRbQ10uaG9zdEF0dHJzLGgpO3JldHVybiByNyh2LGcuYXR0cnMsaCl9KGQs''@;'; put 'put ''Zyx2KX1yZXR1cm4gdm9pZCAwIT09QyYmKHY/Zy5yZXNpZHVhbENsYXNzZXM9QzpnLnJlc2lkdWFsU3R5bGVzPUMpLGh9KHksQyxnLHYpLGZ1bmN0aW9uIE02KGQsZyxoLHYseSxDKXtsZXQgST1DP2cuY2xhc3NCaW5kaW5nczpnLnN0eWxlQmluZGluZ3Msaj1UaChJKSxjZT1YZihJKTtkW3Zd''@;'; put 'put ''PWg7bGV0IFJlLF9lPSExO2lmKEFycmF5LmlzQXJyYXkoaCkpe2NvbnN0IE5lPWg7UmU9TmVbMV0sKG51bGw9PT1SZXx8JHAoTmUsUmUpPjApJiYoX2U9ITApfWVsc2UgUmU9aDtpZih5KWlmKDAhPT1jZSl7Y29uc3QgS2U9VGgoZFtqKzFdKTtkW3YrMV09ckEoS2UsaiksMCE9PUtlJiYoZFtL''@;'; put 'put ''ZSsxXT1nXyhkW0tlKzFdLHYpKSxkW2orMV09ZnVuY3Rpb24gSkIoZCxnKXtyZXR1cm4gMTMxMDcxJmR8Zzw8MTd9KGRbaisxXSx2KX1lbHNlIGRbdisxXT1yQShqLDApLDAhPT1qJiYoZFtqKzFdPWdfKGRbaisxXSx2KSksaj12O2Vsc2UgZFt2KzFdPXJBKGNlLDApLDA9PT1qP2o9djpkW2Nl''@;'; put 'put ''KzFdPWdfKGRbY2UrMV0sdiksY2U9djtfZSYmKGRbdisxXT1pQShkW3YrMV0pKSxqeChkLFJlLHYsITApLGp4KGQsUmUsdiwhMSksZnVuY3Rpb24gTVAoZCxnLGgsdix5KXtjb25zdCBDPXk/ZC5yZXNpZHVhbENsYXNzZXM6ZC5yZXNpZHVhbFN0eWxlcztudWxsIT1DJiYic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGcmJiRwKEMsZyk+PTAmJihoW3YrMV09QTYoaFt2KzFdKSl9KGcsUmUsZCx2LEMpLEk9ckEoaixjZSksQz9nLmNsYXNzQmluZGluZ3M9STpnLnN0eWxlQmluZGluZ3M9SX0oeSxDLGcsaCxJLHYpfX0oQyxkLEksdiksZyE9PVVhJiZpYyh5LEksZykmJmZ1bmN0aW9uICR4KGQsZyxoLHYs''@;'; put 'put ''eSxDLEksail7aWYoISgzJmcudHlwZSkpcmV0dXJuO2NvbnN0IGNlPWQuZGF0YSxfZT1jZVtqKzFdO1JBKGZ1bmN0aW9uIG14KGQpe3JldHVybiAxPT0oMSZkKX0oX2UpP1lfKGNlLGcsaCx5LFhmKF9lKSxJKTp2b2lkIDApfHwoUkEoQyl8fGZ1bmN0aW9uIGd4KGQpe3JldHVybiAyPT0oMiZk''@;'; put 'put ''KX0oX2UpJiYoQz1ZXyhjZSxudWxsLGgseSxqLEkpKSxmdW5jdGlvbiBUQihkLGcsaCx2LHkpe2lmKGcpeT9kLmFkZENsYXNzKGgsdik6ZC5yZW1vdmVDbGFzcyhoLHYpO2Vsc2V7bGV0IEM9LTE9PT12LmluZGV4T2YoIi0iKT92b2lkIDA6Y3UuRGFzaENhc2U7bnVsbD09eT9kLnJlbW92ZVN0''@;'; put 'put ''eWxlKGgsdixDKTooInN0cmluZyI9PXR5cGVvZiB5JiZ5LmVuZHNXaXRoKCIhaW1wb3J0YW50IikmJih5PXkuc2xpY2UoMCwtMTApLEN8PWN1LkltcG9ydGFudCksZC5zZXRTdHlsZShoLHYseSxDKSl9fSh2LEksVnAoejEoKSxoKSx5LEMpKX0oQyxDLmRhdGFbejEoKV0seSx5WzExXSxkLHlb''@;'; put 'put ''SSsxXT1mdW5jdGlvbiBxeChkLGcpe3JldHVybiBudWxsPT1kfHwoInN0cmluZyI9PXR5cGVvZiBnP2QrPWc6Im9iamVjdCI9PXR5cGVvZiBkJiYoZD12bihVMShkKSkpKSxkfShnLGgpLHYsSSl9ZnVuY3Rpb24gT0EoZCxnLGgsdix5KXtsZXQgQz1udWxsO2NvbnN0IEk9aC5kaXJlY3RpdmVF''@;'; put 'put ''bmQ7bGV0IGo9aC5kaXJlY3RpdmVTdHlsaW5nTGFzdDtmb3IoLTE9PT1qP2o9aC5kaXJlY3RpdmVTdGFydDpqKys7ajxJJiYoQz1nW2pdLHY9cjcodixDLmhvc3RBdHRycyx5KSxDIT09ZCk7KWorKztyZXR1cm4gbnVsbCE9PWQmJihoLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PWopLHZ9ZnVuY3Rp''@;'; put 'put ''b24gcjcoZCxnLGgpe2NvbnN0IHY9aD8xOjI7bGV0IHk9LTE7aWYobnVsbCE9PWcpZm9yKGxldCBDPTA7QzxnLmxlbmd0aDtDKyspe2NvbnN0IEk9Z1tDXTsibnVtYmVyIj09dHlwZW9mIEk/eT1JOnk9PT12JiYoQXJyYXkuaXNBcnJheShkKXx8KGQ9dm9pZCAwPT09ZD9bXTpbIiIsZF0pLHdj''@;'; put 'put ''KGQsSSwhIWh8fGdbKytDXSkpfXJldHVybiB2b2lkIDA9PT1kP251bGw6ZH1mdW5jdGlvbiBZXyhkLGcsaCx2LHksQyl7Y29uc3QgST1udWxsPT09ZztsZXQgajtmb3IoO3k+MDspe2NvbnN0IGNlPWRbeV0sX2U9QXJyYXkuaXNBcnJheShjZSksUmU9X2U/Y2VbMV06Y2UsTmU9bnVsbD09PVJl''@;'; put 'put ''O2xldCBLZT1oW3krMV07S2U9PT1VYSYmKEtlPU5lP3RsOnZvaWQgMCk7bGV0IGh0PU5lP0FiKEtlLHYpOlJlPT09dj9LZTp2b2lkIDA7aWYoX2UmJiFSQShodCkmJihodD1BYihjZSx2KSksUkEoaHQpJiYoaj1odCxJKSlyZXR1cm4gajtjb25zdCBCdD1kW3krMV07eT1JP1RoKEJ0KTpYZihC''@;'; put 'put ''dCl9aWYobnVsbCE9PWcpe2xldCBjZT1DP2cucmVzaWR1YWxDbGFzc2VzOmcucmVzaWR1YWxTdHlsZXM7bnVsbCE9Y2UmJihqPUFiKGNlLHYpKX1yZXR1cm4gan1mdW5jdGlvbiBSQShkKXtyZXR1cm4gdm9pZCAwIT09ZH1mdW5jdGlvbiBXdChkLGc9IiIpe2NvbnN0IGg9dWUoKSx2PVR0KCks''@;'; put 'put ''eT1kKzIyLEM9di5maXJzdENyZWF0ZVBhc3M/SWgodix5LDEsZyxudWxsKTp2LmRhdGFbeV0sST1oW3ldPWZ1bmN0aW9uIE1tKGQsZyl7cmV0dXJuIGQuY3JlYXRlVGV4dChnKX0oaFsxMV0sZyk7eG0odixoLEksQyksXyhDLCExKX1mdW5jdGlvbiBqaShkKXtyZXR1cm4gVWkoIiIsZCwiIiks''@;'; put 'put ''aml9ZnVuY3Rpb24gVWkoZCxnLGgpe2NvbnN0IHY9dWUoKSx5PXE4KHYsZCxnLGgpO3JldHVybiB5IT09VWEmJkUzKHYsejEoKSx5KSxVaX1mdW5jdGlvbiByaChkLGcsaCx2LHkpe2NvbnN0IEM9dWUoKSxJPWZ1bmN0aW9uIGU1KGQsZyxoLHYseSxDKXtjb25zdCBqPWs2KGQseG4oKSxoLHkp''@;'; put 'put ''O3JldHVybiAkMigyKSxqP2crSm4oaCkrditKbih5KStDOlVhfShDLGQsZyxoLHYseSk7cmV0dXJuIEkhPT1VYSYmRTMoQyx6MSgpLEkpLHJofWZ1bmN0aW9uIFBoKGQsZyxoLHYseSxDLEkpe2NvbnN0IGo9dWUoKSxjZT1mdW5jdGlvbiB0NShkLGcsaCx2LHksQyxJLGope2NvbnN0IF9lPU1B''@;'; put 'put ''KGQseG4oKSxoLHksSSk7cmV0dXJuICQyKDMpLF9lP2crSm4oaCkrditKbih5KStDK0puKEkpK2o6VWF9KGosZCxnLGgsdix5LEMsSSk7cmV0dXJuIGNlIT09VWEmJkUzKGosejEoKSxjZSksUGh9ZnVuY3Rpb24gRDMoZCxnLGgpe2NvbnN0IHY9dWUoKTtyZXR1cm4gaWModixfMigpLGcpJiZr''@;'; put 'put ''YyhUdCgpLHdsKCksdixkLGcsdlsxMV0saCwhMCksRDN9ZnVuY3Rpb24gYTcoZCxnLGgpe2NvbnN0IHY9dWUoKTtpZihpYyh2LF8yKCksZykpe2NvbnN0IEM9VHQoKSxJPXdsKCk7a2MoQyxJLHYsZCxnLGJBKHc5KEMuZGF0YSksSSx2KSxoLCEwKX1yZXR1cm4gYTd9Y29uc3QgRTY9dm9pZCAw''@;'; put 'put ''O3ZhciBZUD1bImVuIixbWyJhIiwicCJdLFsiQU0iLCJQTSJdLEU2XSxbWyJBTSIsIlBNIl0sRTYsRTZdLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIs''@;'; put 'put ''IldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLEU2LFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5''@;'; put 'put ''IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSxFNixbWyJC''@;'; put 'put ''IiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJd''@;'; put 'put ''LFsiezF9LCB7MH0iLEU2LCJ7MX0gJ2F0JyB7MH0iLEU2XSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCJceGQ3IiwiXHUyMDMwIiwiXHUyMjFlIiwiTmFOIiwiOiJdLFsiIywjIzAuIyMjIiwiIywjIzAlIiwiXHhhNCMsIyMwLjAwIiwiI0UwIl0sIlVTRCIsIiQiLCJVUyBEb2xsYXIi''@;'; put 'put ''LHt9LCJsdHIiLGZ1bmN0aW9uIFdQKGQpe2NvbnN0IGg9TWF0aC5mbG9vcihNYXRoLmFicyhkKSksdj1kLnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/LywiIikubGVuZ3RoO3JldHVybiAxPT09aCYmMD09PXY/MTo1fV07bGV0IEhoPXt9O2Z1bmN0aW9uIG9jKGQpe2NvbnN0IGc9ZnVu''@;'; put 'put ''Y3Rpb24gVVAoZCl7cmV0dXJuIGQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKX0oZCk7bGV0IGg9UEEoZyk7aWYoaClyZXR1cm4gaDtjb25zdCB2PWcuc3BsaXQoIi0iKVswXTtpZihoPVBBKHYpLGgpcmV0dXJuIGg7aWYoImVuIj09PXYpcmV0dXJuIFlQO3Rocm93IG5ldyBxdCg3''@;'; put 'put ''MDEsITEpfWZ1bmN0aW9uIFBBKGQpe3JldHVybiBkIGluIEhofHwoSGhbZF09RGwubmcmJkRsLm5nLmNvbW1vbiYmRGwubmcuY29tbW9uLmxvY2FsZXMmJkRsLm5nLmNvbW1vbi5sb2NhbGVzW2RdKSxIaFtkXX12YXIgU289KCgpPT4oKFNvPVNvfHx7fSlbU28uTG9jYWxlSWQ9MF09IkxvY2Fs''@;'; put 'put ''ZUlkIixTb1tTby5EYXlQZXJpb2RzRm9ybWF0PTFdPSJEYXlQZXJpb2RzRm9ybWF0IixTb1tTby5EYXlQZXJpb2RzU3RhbmRhbG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLFNvW1NvLkRheXNGb3JtYXQ9M109IkRheXNGb3JtYXQiLFNvW1NvLkRheXNTdGFuZGFsb25lPTRdPSJEYXlz''@;'; put 'put ''U3RhbmRhbG9uZSIsU29bU28uTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLFNvW1NvLk1vbnRoc1N0YW5kYWxvbmU9Nl09Ik1vbnRoc1N0YW5kYWxvbmUiLFNvW1NvLkVyYXM9N109IkVyYXMiLFNvW1NvLkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsU29bU28uV2Vl''@;'; put 'put ''a2VuZFJhbmdlPTldPSJXZWVrZW5kUmFuZ2UiLFNvW1NvLkRhdGVGb3JtYXQ9MTBdPSJEYXRlRm9ybWF0IixTb1tTby5UaW1lRm9ybWF0PTExXT0iVGltZUZvcm1hdCIsU29bU28uRGF0ZVRpbWVGb3JtYXQ9MTJdPSJEYXRlVGltZUZvcm1hdCIsU29bU28uTnVtYmVyU3ltYm9scz0xM109Ik51''@;'; put 'put ''bWJlclN5bWJvbHMiLFNvW1NvLk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIixTb1tTby5DdXJyZW5jeUNvZGU9MTVdPSJDdXJyZW5jeUNvZGUiLFNvW1NvLkN1cnJlbmN5U3ltYm9sPTE2XT0iQ3VycmVuY3lTeW1ib2wiLFNvW1NvLkN1cnJlbmN5TmFtZT0xN109IkN1cnJlbmN5''@;'; put 'put ''TmFtZSIsU29bU28uQ3VycmVuY2llcz0xOF09IkN1cnJlbmNpZXMiLFNvW1NvLkRpcmVjdGlvbmFsaXR5PTE5XT0iRGlyZWN0aW9uYWxpdHkiLFNvW1NvLlBsdXJhbENhc2U9MjBdPSJQbHVyYWxDYXNlIixTb1tTby5FeHRyYURhdGE9MjFdPSJFeHRyYURhdGEiLFNvKSkoKTtjb25zdCB4Nj0i''@;'; put 'put ''ZW4tVVMiO2xldCBtVD14NjtmdW5jdGlvbiBUcyhkLGcsaCx2LHkpe2lmKGQ9R3QoZCksQXJyYXkuaXNBcnJheShkKSlmb3IobGV0IEM9MDtDPGQubGVuZ3RoO0MrKylUcyhkW0NdLGcsaCx2LHkpO2Vsc2V7Y29uc3QgQz1UdCgpLEk9dWUoKTtsZXQgaj1RZihkKT9kOkd0KGQucHJvdmlkZSks''@;'; put 'put ''Y2U9RmIoZCk7Y29uc3QgX2U9YXIoKSxSZT0xMDQ4NTc1Jl9lLnByb3ZpZGVySW5kZXhlcyxOZT1fZS5kaXJlY3RpdmVTdGFydCxLZT1fZS5wcm92aWRlckluZGV4ZXM+PjIwO2lmKFFmKGQpfHwhZC5tdWx0aSl7Y29uc3QgaHQ9bmV3IHFpKGNlLHksS3QpLEJ0PWxDKGosZyx5P1JlOlJlK0tl''@;'; put 'put ''LE5lKTstMT09PUJ0PyhEOChtZChfZSxJKSxDLGopLGFDKEMsZCxnLmxlbmd0aCksZy5wdXNoKGopLF9lLmRpcmVjdGl2ZVN0YXJ0KyssX2UuZGlyZWN0aXZlRW5kKysseSYmKF9lLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3NiksaC5wdXNoKGh0KSxJLnB1c2goaHQpKTooaFtCdF09aHQsSVtC''@;'; put 'put ''dF09aHQpfWVsc2V7Y29uc3QgaHQ9bEMoaixnLFJlK0tlLE5lKSxCdD1sQyhqLGcsUmUsUmUrS2UpLCR0PWh0Pj0wJiZoW2h0XSxobj1CdD49MCYmaFtCdF07aWYoeSYmIWhufHwheSYmISR0KXtEOChtZChfZSxJKSxDLGopO2NvbnN0IERuPWZ1bmN0aW9uIHJsKGQsZyxoLHYseSl7Y29uc3Qg''@;'; put 'put ''Qz1uZXcgcWkoZCxoLEt0KTtyZXR1cm4gQy5tdWx0aT1bXSxDLmluZGV4PWcsQy5jb21wb25lbnRQcm92aWRlcnM9MCxFVChDLHksdiYmIWgpLEN9KHk/SzQ6ZDUsaC5sZW5ndGgseSx2LGNlKTsheSYmaG4mJihoW0J0XS5wcm92aWRlckZhY3Rvcnk9RG4pLGFDKEMsZCxnLmxlbmd0aCwwKSxn''@;'; put 'put ''LnB1c2goaiksX2UuZGlyZWN0aXZlU3RhcnQrKyxfZS5kaXJlY3RpdmVFbmQrKyx5JiYoX2UucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxoLnB1c2goRG4pLEkucHVzaChEbil9ZWxzZSBhQyhDLGQsaHQ+LTE/aHQ6QnQsRVQoaFt5P0J0Omh0XSxjZSwheSYmdikpOyF5JiZ2JiZobiYmaFtC''@;'; put 'put ''dF0uY29tcG9uZW50UHJvdmlkZXJzKyt9fX1mdW5jdGlvbiBhQyhkLGcsaCx2KXtjb25zdCB5PVFmKGcpLEM9ZnVuY3Rpb24gTjkoZCl7cmV0dXJuISFkLnVzZUNsYXNzfShnKTtpZih5fHxDKXtjb25zdCBjZT0oQz9HdChnLnVzZUNsYXNzKTpnKS5wcm90b3R5cGUubmdPbkRlc3Ryb3k7aWYo''@;'; put 'put ''Y2Upe2NvbnN0IF9lPWQuZGVzdHJveUhvb2tzfHwoZC5kZXN0cm95SG9va3M9W10pO2lmKCF5JiZnLm11bHRpKXtjb25zdCBSZT1fZS5pbmRleE9mKGgpOy0xPT09UmU/X2UucHVzaChoLFt2LGNlXSk6X2VbUmUrMV0ucHVzaCh2LGNlKX1lbHNlIF9lLnB1c2goaCxjZSl9fX1mdW5jdGlvbiBF''@;'; put 'put ''VChkLGcsaCl7cmV0dXJuIGgmJmQuY29tcG9uZW50UHJvdmlkZXJzKyssZC5tdWx0aS5wdXNoKGcpLTF9ZnVuY3Rpb24gbEMoZCxnLGgsdil7Zm9yKGxldCB5PWg7eTx2O3krKylpZihnW3ldPT09ZClyZXR1cm4geTtyZXR1cm4tMX1mdW5jdGlvbiBkNShkLGcsaCx2KXtyZXR1cm4gUDIodGhp''@;'; put 'put ''cy5tdWx0aSxbXSl9ZnVuY3Rpb24gSzQoZCxnLGgsdil7Y29uc3QgeT10aGlzLm11bHRpO2xldCBDO2lmKHRoaXMucHJvdmlkZXJGYWN0b3J5KXtjb25zdCBJPXRoaXMucHJvdmlkZXJGYWN0b3J5LmNvbXBvbmVudFByb3ZpZGVycyxqPV9oKGgsaFsxXSx0aGlzLnByb3ZpZGVyRmFjdG9yeS5p''@;'; put 'put ''bmRleCx2KTtDPWouc2xpY2UoMCxJKSxQMih5LEMpO2ZvcihsZXQgY2U9STtjZTxqLmxlbmd0aDtjZSsrKUMucHVzaChqW2NlXSl9ZWxzZSBDPVtdLFAyKHksQyk7cmV0dXJuIEN9ZnVuY3Rpb24gUDIoZCxnKXtmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKylnLnB1c2goKDAsZFtoXSkoKSk7''@;'; put 'put ''cmV0dXJuIGd9ZnVuY3Rpb24gZ28oZCxnPVtdKXtyZXR1cm4gaD0+e2gucHJvdmlkZXJzUmVzb2x2ZXI9KHYseSk9PmZ1bmN0aW9uIEZzKGQsZyxoKXtjb25zdCB2PVR0KCk7aWYodi5maXJzdENyZWF0ZVBhc3Mpe2NvbnN0IHk9c2YoZCk7VHMoaCx2LmRhdGEsdi5ibHVlcHJpbnQseSwhMCks''@;'; put 'put ''VHMoZyx2LmRhdGEsdi5ibHVlcHJpbnQseSwhMSl9fSh2LHk/eShkKTpkLGcpfX1jbGFzcyBSM3t9Y2xhc3MgUUF7fWNsYXNzIEVjIGV4dGVuZHMgUjN7Y29uc3RydWN0b3IoZyxoKXtzdXBlcigpLHRoaXMuX3BhcmVudD1oLHRoaXMuX2Jvb3RzdHJhcENvbXBvbmVudHM9W10sdGhpcy5kZXN0''@;'; put 'put ''cm95Q2JzPVtdLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBYbSh0aGlzKTtjb25zdCB2PXhpKGcpO3RoaXMuX2Jvb3RzdHJhcENvbXBvbmVudHM9QjQodi5ib290c3RyYXApLHRoaXMuX3IzSW5qZWN0b3I9bHgoZyxoLFt7cHJvdmlkZTpSMyx1c2VWYWx1ZTp0aGlzfSx7cHJv''@;'; put 'put ''dmlkZTpfZCx1c2VWYWx1ZTp0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn1dLHZuKGcpLG5ldyBTZXQoWyJlbnZpcm9ubWVudCJdKSksdGhpcy5fcjNJbmplY3Rvci5yZXNvbHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKSx0aGlzLmluc3RhbmNlPXRoaXMuX3IzSW5qZWN0b3IuZ2V0KGcp''@;'; put 'put ''fWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9yM0luamVjdG9yfWRlc3Ryb3koKXtjb25zdCBnPXRoaXMuX3IzSW5qZWN0b3I7IWcuZGVzdHJveWVkJiZnLmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3lDYnMuZm9yRWFjaChoPT5oKCkpLHRoaXMuZGVzdHJveUNicz1udWxsfW9uRGVzdHJveShn''@;'; put 'put ''KXt0aGlzLmRlc3Ryb3lDYnMucHVzaChnKX19Y2xhc3Mgc0MgZXh0ZW5kcyBRQXtjb25zdHJ1Y3RvcihnKXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT1nfWNyZWF0ZShnKXtyZXR1cm4gbmV3IEVjKHRoaXMubW9kdWxlVHlwZSxnKX19Y2xhc3MgdUMgZXh0ZW5kcyBSM3tjb25zdHJ1Y3Rvcihn''@;'; put 'put ''LGgsdil7c3VwZXIoKSx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uZXcgWG0odGhpcyksdGhpcy5pbnN0YW5jZT1udWxsO2NvbnN0IHk9bmV3IFY5KFsuLi5nLHtwcm92aWRlOlIzLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOl9kLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9y''@;'; put 'put ''eVJlc29sdmVyfV0saHx8TDQoKSx2LG5ldyBTZXQoWyJlbnZpcm9ubWVudCJdKSk7dGhpcy5pbmplY3Rvcj15LHkucmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCl9ZGVzdHJveSgpe3RoaXMuaW5qZWN0b3IuZGVzdHJveSgpfW9uRGVzdHJveShnKXt0aGlzLmluamVjdG9yLm9uRGVzdHJv''@;'; put 'put ''eShnKX19ZnVuY3Rpb24gTzYoZCxnLGg9bnVsbCl7cmV0dXJuIG5ldyB1QyhkLGcsaCkuaW5qZWN0b3J9bGV0IFExPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5faW5qZWN0b3I9aCx0aGlzLmNhY2hlZEluamVjdG9ycz1uZXcgTWFwfWdldE9yQ3JlYXRlU3RhbmRhbG9uZUlu''@;'; put 'put ''amVjdG9yKGgpe2lmKCFoLnN0YW5kYWxvbmUpcmV0dXJuIG51bGw7aWYoIXRoaXMuY2FjaGVkSW5qZWN0b3JzLmhhcyhoLmlkKSl7Y29uc3Qgdj1VZigwLGgudHlwZSkseT12Lmxlbmd0aD4wP082KFt2XSx0aGlzLl9pbmplY3RvcixgU3RhbmRhbG9uZVske2gudHlwZS5uYW1lfV1gKTpudWxs''@;'; put 'put ''O3RoaXMuY2FjaGVkSW5qZWN0b3JzLnNldChoLmlkLHkpfXJldHVybiB0aGlzLmNhY2hlZEluamVjdG9ycy5nZXQoaC5pZCl9bmdPbkRlc3Ryb3koKXt0cnl7Zm9yKGNvbnN0IGggb2YgdGhpcy5jYWNoZWRJbmplY3RvcnMudmFsdWVzKCkpbnVsbCE9PWgmJmguZGVzdHJveSgpfWZpbmFsbHl7''@;'; put 'put ''dGhpcy5jYWNoZWRJbmplY3RvcnMuY2xlYXIoKX19fXJldHVybiBkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQscHJvdmlkZWRJbjoiZW52aXJvbm1lbnQiLGZhY3Rvcnk6KCk9Pm5ldyBkKEVpKFdjKSl9KSxkfSkoKTtmdW5jdGlvbiBObyhkKXtkLmdldFN0YW5kYWxvbmVJbmplY3Rvcj1nPT5n''@;'; put 'put ''LmdldChRMSkuZ2V0T3JDcmVhdGVTdGFuZGFsb25lSW5qZWN0b3IoZCl9ZnVuY3Rpb24gbHMoZCxnLGgpe2NvbnN0IHY9TW4oKStkLHk9dWUoKTtyZXR1cm4geVt2XT09PVVhP09oKHksdixoP2cuY2FsbChoKTpnKCkpOmZ1bmN0aW9uIFRkKGQsZyl7cmV0dXJuIGRbZ119KHksdil9ZnVuY3Rp''@;'; put 'put ''b24gamgoZCxnLGgsdil7cmV0dXJuIHJlKHVlKCksTW4oKSxkLGcsaCx2KX1mdW5jdGlvbiBCZChkLGcsaCx2LHkpe3JldHVybiBYKHVlKCksTW4oKSxkLGcsaCx2LHkpfWZ1bmN0aW9uIEtBKGQsZyxoLHYseSxDKXtyZXR1cm4gd2UodWUoKSxNbigpLGQsZyxoLHYseSxDKX1mdW5jdGlvbiBr''@;'; put 'put ''MShkLGcsaCx2LHksQyxJKXtyZXR1cm4gZnVuY3Rpb24geGUoZCxnLGgsdix5LEMsSSxqLGNlKXtjb25zdCBfZT1nK2g7cmV0dXJuIGZ1bmN0aW9uIGVoKGQsZyxoLHYseSxDKXtjb25zdCBJPWs2KGQsZyxoLHYpO3JldHVybiBrNihkLGcrMix5LEMpfHxJfShkLF9lLHksQyxJLGopP09oKGQs''@;'; put 'put ''X2UrNCxjZT92LmNhbGwoY2UseSxDLEksaik6dih5LEMsSSxqKSk6SChkLF9lKzQpfSh1ZSgpLE1uKCksZCxnLGgsdix5LEMsSSl9ZnVuY3Rpb24gSChkLGcpe2NvbnN0IGg9ZFtnXTtyZXR1cm4gaD09PVVhP3ZvaWQgMDpofWZ1bmN0aW9uIHJlKGQsZyxoLHYseSxDKXtjb25zdCBJPWcraDty''@;'; put 'put ''ZXR1cm4gaWMoZCxJLHkpP09oKGQsSSsxLEM/di5jYWxsKEMseSk6dih5KSk6SChkLEkrMSl9ZnVuY3Rpb24gWChkLGcsaCx2LHksQyxJKXtjb25zdCBqPWcraDtyZXR1cm4gazYoZCxqLHksQyk/T2goZCxqKzIsST92LmNhbGwoSSx5LEMpOnYoeSxDKSk6SChkLGorMil9ZnVuY3Rpb24gd2Uo''@;'; put 'put ''ZCxnLGgsdix5LEMsSSxqKXtjb25zdCBjZT1nK2g7cmV0dXJuIE1BKGQsY2UseSxDLEkpP09oKGQsY2UrMyxqP3YuY2FsbChqLHksQyxJKTp2KHksQyxJKSk6SChkLGNlKzMpfWZ1bmN0aW9uIFplKGQsZyl7Y29uc3QgaD1UdCgpO2xldCB2O2NvbnN0IHk9ZCsyMjtoLmZpcnN0Q3JlYXRlUGFz''@;'; put 'put ''cz8odj1mdW5jdGlvbiBWZShkLGcpe2lmKGcpZm9yKGxldCBoPWcubGVuZ3RoLTE7aD49MDtoLS0pe2NvbnN0IHY9Z1toXTtpZihkPT09di5uYW1lKXJldHVybiB2fX0oZyxoLnBpcGVSZWdpc3RyeSksaC5kYXRhW3ldPXYsdi5vbkRlc3Ryb3kmJihoLmRlc3Ryb3lIb29rc3x8KGguZGVzdHJv''@;'; put 'put ''eUhvb2tzPVtdKSkucHVzaCh5LHYub25EZXN0cm95KSk6dj1oLmRhdGFbeV07Y29uc3QgQz12LmZhY3Rvcnl8fCh2LmZhY3Rvcnk9Y2Qodi50eXBlKSksST1iMihLdCk7dHJ5e2NvbnN0IGo9eDgoITEpLGNlPUMoKTtyZXR1cm4geDgoaiksZnVuY3Rpb24gbjcoZCxnLGgsdil7aD49ZC5kYXRh''@;'; put 'put ''Lmxlbmd0aCYmKGQuZGF0YVtoXT1udWxsLGQuYmx1ZXByaW50W2hdPW51bGwpLGdbaF09dn0oaCx1ZSgpLHksY2UpLGNlfWZpbmFsbHl7YjIoSSl9fWZ1bmN0aW9uIFN0KGQsZyxoKXtjb25zdCB2PWQrMjIseT11ZSgpLEM9ZmQoeSx2KTtyZXR1cm4gQ24oeSx2KT9yZSh5LE1uKCksZyxDLnRy''@;'; put 'put ''YW5zZm9ybSxoLEMpOkMudHJhbnNmb3JtKGgpfWZ1bmN0aW9uIEl0KGQsZyxoLHYpe2NvbnN0IHk9ZCsyMixDPXVlKCksST1mZChDLHkpO3JldHVybiBDbihDLHkpP1goQyxNbigpLGcsSS50cmFuc2Zvcm0saCx2LEkpOkkudHJhbnNmb3JtKGgsdil9ZnVuY3Rpb24gUHQoZCxnLGgsdix5KXtj''@;'; put 'put ''b25zdCBDPWQrMjIsST11ZSgpLGo9ZmQoSSxDKTtyZXR1cm4gQ24oSSxDKT93ZShJLE1uKCksZyxqLnRyYW5zZm9ybSxoLHYseSxqKTpqLnRyYW5zZm9ybShoLHYseSl9ZnVuY3Rpb24gQ24oZCxnKXtyZXR1cm4gZFsxXS5kYXRhW2ddLnB1cmV9ZnVuY3Rpb24genQoZCl7cmV0dXJuIGc9Pntz''@;'; put 'put ''ZXRUaW1lb3V0KGQsdm9pZCAwLGcpfX1jb25zdCBmbj1jbGFzcyBMdCBleHRlbmRzICRle2NvbnN0cnVjdG9yKGc9ITEpe3N1cGVyKCksdGhpcy5fX2lzQXN5bmM9Z31lbWl0KGcpe3N1cGVyLm5leHQoZyl9c3Vic2NyaWJlKGcsaCx2KXt2YXIgeSxDLEk7bGV0IGo9ZyxjZT1ofHwoKCk9Pm51''@;'; put 'put ''bGwpLF9lPXY7aWYoZyYmIm9iamVjdCI9PXR5cGVvZiBnKXtjb25zdCBOZT1nO2o9bnVsbD09PSh5PU5lLm5leHQpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmJpbmQoTmUpLGNlPW51bGw9PT0oQz1OZS5lcnJvcil8fHZvaWQgMD09PUM/dm9pZCAwOkMuYmluZChOZSksX2U9bnVsbD09PShJPU5l''@;'; put 'put ''LmNvbXBsZXRlKXx8dm9pZCAwPT09ST92b2lkIDA6SS5iaW5kKE5lKX10aGlzLl9faXNBc3luYyYmKGNlPXp0KGNlKSxqJiYoaj16dChqKSksX2UmJihfZT16dChfZSkpKTtjb25zdCBSZT1zdXBlci5zdWJzY3JpYmUoe25leHQ6aixlcnJvcjpjZSxjb21wbGV0ZTpfZX0pO3JldHVybiBnIGlu''@;'; put 'put ''c3RhbmNlb2YgVGUmJmcuYWRkKFJlKSxSZX19O2Z1bmN0aW9uIEluKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbXzYoKV0oKX1jbGFzcyBSbntjb25zdHJ1Y3RvcihnPSExKXt0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seT1nLHRoaXMuZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1bXSx0aGlz''@;'; put 'put ''Ll9jaGFuZ2VzRGV0ZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5sYXN0PXZvaWQgMDtjb25zdCBoPV82KCksdj1Sbi5wcm90b3R5cGU7dltoXXx8KHZbaF09SW4pfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5n''@;'; put 'put ''ZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyBmbil9Z2V0KGcpe3JldHVybiB0aGlzLl9yZXN1bHRzW2ddfW1hcChnKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAoZyl9ZmlsdGVyKGcpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcihnKX1maW5kKGcpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZp''@;'; put 'put ''bmQoZyl9cmVkdWNlKGcsaCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKGcsaCl9Zm9yRWFjaChnKXt0aGlzLl9yZXN1bHRzLmZvckVhY2goZyl9c29tZShnKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKGcpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRv''@;'; put 'put ''U3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldChnLGgpe2NvbnN0IHY9dGhpczt2LmRpcnR5PSExO2NvbnN0IHk9ZGYoZyk7KHRoaXMuX2NoYW5nZXNEZXRlY3RlZD0hZnVuY3Rpb24gTFIoZCxnLGgpe2lmKGQubGVuZ3RoIT09Zy5sZW5ndGgpcmV0dXJuITE7''@;'; put 'put ''Zm9yKGxldCB2PTA7djxkLmxlbmd0aDt2Kyspe2xldCB5PWRbdl0sQz1nW3ZdO2lmKGgmJih5PWgoeSksQz1oKEMpKSxDIT09eSlyZXR1cm4hMX1yZXR1cm4hMH0odi5fcmVzdWx0cyx5LGgpKSYmKHYuX3Jlc3VsdHM9eSx2Lmxlbmd0aD15Lmxlbmd0aCx2Lmxhc3Q9eVt0aGlzLmxlbmd0aC0x''@;'; put 'put ''XSx2LmZpcnN0PXlbMF0pfW5vdGlmeU9uQ2hhbmdlcygpe3RoaXMuX2NoYW5nZXMmJih0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWR8fCF0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seSkmJnRoaXMuX2NoYW5nZXMuZW1pdCh0aGlzKX1zZXREaXJ0eSgpe3RoaXMuZGlydHk9ITB9ZGVzdHJveSgp''@;'; put 'put ''e3RoaXMuY2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuY2hhbmdlcy51bnN1YnNjcmliZSgpfX1sZXQgVm49KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuX19OR19FTEVNRU5UX0lEX189eXIsZH0pKCk7Y29uc3QgSXI9Vm4saWk9Y2xhc3MgZXh0ZW5kcyBJcntjb25zdHJ1Y3RvcihnLGgsdil7c3Vw''@;'; put 'put ''ZXIoKSx0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PWcsdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyPWgsdGhpcy5lbGVtZW50UmVmPXZ9Y3JlYXRlRW1iZWRkZWRWaWV3KGcsaCl7Y29uc3Qgdj10aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXIudFZpZXdzLHk9bmModGhpcy5fZGVjbGFyYXRp''@;'; put 'put ''b25MVmlldyx2LGcsMTYsbnVsbCx2LmRlY2xUTm9kZSxudWxsLG51bGwsbnVsbCxudWxsLGh8fG51bGwpO3lbMTddPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLmluZGV4XTtjb25zdCBJPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbMTldO3JldHVy''@;'; put 'put ''biBudWxsIT09SSYmKHlbMTldPUkuY3JlYXRlRW1iZWRkZWRWaWV3KHYpKSxabSh2LHksZyksbmV3IGI2KHkpfX07ZnVuY3Rpb24geXIoKXtyZXR1cm4gb2koYXIoKSx1ZSgpKX1mdW5jdGlvbiBvaShkLGcpe3JldHVybiA0JmQudHlwZT9uZXcgaWkoZyxkLG82KGQsZykpOm51bGx9bGV0IE1y''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLl9fTkdfRUxFTUVOVF9JRF9fPVdyLGR9KSgpO2Z1bmN0aW9uIFdyKCl7cmV0dXJuIHcwKGFyKCksdWUoKSl9Y29uc3QgYWk9TXIsbmk9Y2xhc3MgZXh0ZW5kcyBhaXtjb25zdHJ1Y3RvcihnLGgsdil7c3VwZXIoKSx0aGlzLl9sQ29udGFpbmVyPWcs''@;'; put 'put ''dGhpcy5faG9zdFROb2RlPWgsdGhpcy5faG9zdExWaWV3PXZ9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gbzYodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIG5ldyBXcCh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgcGFyZW50''@;'; put 'put ''SW5qZWN0b3IoKXtjb25zdCBnPXpmKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpO2lmKGpjKGcpKXtjb25zdCBoPUJyKGcsdGhpcy5faG9zdExWaWV3KSx2PWZmKGcpO3JldHVybiBuZXcgV3AoaFsxXS5kYXRhW3YrOF0saCl9cmV0dXJuIG5ldyBXcChudWxsLHRoaXMuX2hvc3RM''@;'; put 'put ''Vmlldyl9Y2xlYXIoKXtmb3IoO3RoaXMubGVuZ3RoPjA7KXRoaXMucmVtb3ZlKHRoaXMubGVuZ3RoLTEpfWdldChnKXtjb25zdCBoPWZyKHRoaXMuX2xDb250YWluZXIpO3JldHVybiBudWxsIT09aCYmaFtnXXx8bnVsbH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xDb250YWluZXIubGVu''@;'; put 'put ''Z3RoLTEwfWNyZWF0ZUVtYmVkZGVkVmlldyhnLGgsdil7bGV0IHksQzsibnVtYmVyIj09dHlwZW9mIHY/eT12Om51bGwhPXYmJih5PXYuaW5kZXgsQz12LmluamVjdG9yKTtjb25zdCBJPWcuY3JlYXRlRW1iZWRkZWRWaWV3KGh8fHt9LEMpO3JldHVybiB0aGlzLmluc2VydChJLHkpLEl9Y3Jl''@;'; put 'put ''YXRlQ29tcG9uZW50KGcsaCx2LHksQyl7Y29uc3QgST1nJiYhZnVuY3Rpb24gYW0oZCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGR9KGcpO2xldCBqO2lmKEkpaj1oO2Vsc2V7Y29uc3QgTmU9aHx8e307aj1OZS5pbmRleCx2PU5lLmluamVjdG9yLHk9TmUucHJvamVjdGFibGVOb2RlcyxD''@;'; put 'put ''PU5lLmVudmlyb25tZW50SW5qZWN0b3J8fE5lLm5nTW9kdWxlUmVmfWNvbnN0IGNlPUk/ZzpuZXcgRzQoZ3MoZykpLF9lPXZ8fHRoaXMucGFyZW50SW5qZWN0b3I7aWYoIUMmJm51bGw9PWNlLm5nTW9kdWxlKXtjb25zdCBLZT0oST9fZTp0aGlzLnBhcmVudEluamVjdG9yKS5nZXQoV2MsbnVs''@;'; put 'put ''bCk7S2UmJihDPUtlKX1jb25zdCBSZT1jZS5jcmVhdGUoX2UseSx2b2lkIDAsQyk7cmV0dXJuIHRoaXMuaW5zZXJ0KFJlLmhvc3RWaWV3LGopLFJlfWluc2VydChnLGgpe2NvbnN0IHY9Zy5fbFZpZXcseT12WzFdO2lmKGZ1bmN0aW9uIE5mKGQpe3JldHVybiBUbyhkWzNdKX0odikpe2NvbnN0''@;'; put 'put ''IFJlPXRoaXMuaW5kZXhPZihnKTtpZigtMSE9PVJlKXRoaXMuZGV0YWNoKFJlKTtlbHNle2NvbnN0IE5lPXZbM10sS2U9bmV3IG5pKE5lLE5lWzZdLE5lWzNdKTtLZS5kZXRhY2goS2UuaW5kZXhPZihnKSl9fWNvbnN0IEM9dGhpcy5fYWRqdXN0SW5kZXgoaCksST10aGlzLl9sQ29udGFpbmVy''@;'; put 'put ''OyFmdW5jdGlvbiBZRShkLGcsaCx2KXtjb25zdCB5PTEwK3YsQz1oLmxlbmd0aDt2PjAmJihoW3ktMV1bNF09ZyksdjxDLTEwPyhnWzRdPWhbeV0sWHAoaCwxMCt2LGcpKTooaC5wdXNoKGcpLGdbNF09bnVsbCksZ1szXT1oO2NvbnN0IEk9Z1sxN107bnVsbCE9PUkmJmghPT1JJiZmdW5jdGlv''@;'; put 'put ''biBFRyhkLGcpe2NvbnN0IGg9ZFs5XTtnWzE2XSE9PWdbM11bM11bMTZdJiYoZFsyXT0hMCksbnVsbD09PWg/ZFs5XT1bZ106aC5wdXNoKGcpfShJLGcpO2NvbnN0IGo9Z1sxOV07bnVsbCE9PWomJmouaW5zZXJ0VmlldyhkKSxnWzJdfD02NH0oeSx2LEksQyk7Y29uc3Qgaj1TMyhDLEkpLGNl''@;'; put 'put ''PXZbMTFdLF9lPWc2KGNlLElbN10pO3JldHVybiBudWxsIT09X2UmJmZ1bmN0aW9uIFg5KGQsZyxoLHYseSxDKXt2WzBdPXksdls2XT1nLFRtKGQsdixoLDEseSxDKX0oeSxJWzZdLGNlLHYsX2UsaiksZy5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKSxYcChoaShJKSxDLGcpLGd9bW92ZShn''@;'; put 'put ''LGgpe3JldHVybiB0aGlzLmluc2VydChnLGgpfWluZGV4T2YoZyl7Y29uc3QgaD1mcih0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWg/aC5pbmRleE9mKGcpOi0xfXJlbW92ZShnKXtjb25zdCBoPXRoaXMuX2FkanVzdEluZGV4KGcsLTEpLHY9VUUodGhpcy5fbENvbnRhaW5lcixo''@;'; put 'put ''KTt2JiYoQWQoaGkodGhpcy5fbENvbnRhaW5lciksaCksUUUodlsxXSx2KSl9ZGV0YWNoKGcpe2NvbnN0IGg9dGhpcy5fYWRqdXN0SW5kZXgoZywtMSksdj1VRSh0aGlzLl9sQ29udGFpbmVyLGgpO3JldHVybiB2JiZudWxsIT1BZChoaSh0aGlzLl9sQ29udGFpbmVyKSxoKT9uZXcgYjYodik6''@;'; put 'put ''bnVsbH1fYWRqdXN0SW5kZXgoZyxoPTApe3JldHVybiBudWxsPT1nP3RoaXMubGVuZ3RoK2g6Z319O2Z1bmN0aW9uIGZyKGQpe3JldHVybiBkWzhdfWZ1bmN0aW9uIGhpKGQpe3JldHVybiBkWzhdfHwoZFs4XT1bXSl9ZnVuY3Rpb24gdzAoZCxnKXtsZXQgaDtjb25zdCB2PWdbZC5pbmRleF07''@;'; put 'put ''aWYoVG8odikpaD12O2Vsc2V7bGV0IHk7aWYoOCZkLnR5cGUpeT1mMSh2KTtlbHNle2NvbnN0IEM9Z1sxMV07eT1DLmNyZWF0ZUNvbW1lbnQoIiIpO2NvbnN0IEk9dmMoZCxnKTtQNChDLGc2KEMsSSkseSxmdW5jdGlvbiAkRShkLGcpe3JldHVybiBkLm5leHRTaWJsaW5nKGcpfShDLEkpLCEx''@;'; put 'put ''KX1nW2QuaW5kZXhdPWg9Z0EodixnLHksZCksbUEoZyxoKX1yZXR1cm4gbmV3IG5pKGgsZCxnKX1jbGFzcyBiaXtjb25zdHJ1Y3RvcihnKXt0aGlzLnF1ZXJ5TGlzdD1nLHRoaXMubWF0Y2hlcz1udWxsfWNsb25lKCl7cmV0dXJuIG5ldyBiaSh0aGlzLnF1ZXJ5TGlzdCl9c2V0RGlydHkoKXt0''@;'; put 'put ''aGlzLnF1ZXJ5TGlzdC5zZXREaXJ0eSgpfX1jbGFzcyB6cntjb25zdHJ1Y3RvcihnPVtdKXt0aGlzLnF1ZXJpZXM9Z31jcmVhdGVFbWJlZGRlZFZpZXcoZyl7Y29uc3QgaD1nLnF1ZXJpZXM7aWYobnVsbCE9PWgpe2NvbnN0IHY9bnVsbCE9PWcuY29udGVudFF1ZXJpZXM/Zy5jb250ZW50UXVl''@;'; put 'put ''cmllc1swXTpoLmxlbmd0aCx5PVtdO2ZvcihsZXQgQz0wO0M8djtDKyspe2NvbnN0IEk9aC5nZXRCeUluZGV4KEMpO3kucHVzaCh0aGlzLnF1ZXJpZXNbSS5pbmRleEluRGVjbGFyYXRpb25WaWV3XS5jbG9uZSgpKX1yZXR1cm4gbmV3IHpyKHkpfXJldHVybiBudWxsfWluc2VydFZpZXcoZyl7''@;'; put 'put ''dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyhnKX1kZXRhY2hWaWV3KGcpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXMoZyl9ZGlydHlRdWVyaWVzV2l0aE1hdGNoZXMoZyl7Zm9yKGxldCBoPTA7aDx0aGlzLnF1ZXJpZXMubGVuZ3RoO2grKyludWxsIT09c3MoZyxoKS5tYXRjaGVz''@;'; put 'put ''JiZ0aGlzLnF1ZXJpZXNbaF0uc2V0RGlydHkoKX19Y2xhc3MgRGl7Y29uc3RydWN0b3IoZyxoLHY9bnVsbCl7dGhpcy5wcmVkaWNhdGU9Zyx0aGlzLmZsYWdzPWgsdGhpcy5yZWFkPXZ9fWNsYXNzIGNpe2NvbnN0cnVjdG9yKGc9W10pe3RoaXMucXVlcmllcz1nfWVsZW1lbnRTdGFydChnLGgp''@;'; put 'put ''e2ZvcihsZXQgdj0wO3Y8dGhpcy5xdWVyaWVzLmxlbmd0aDt2KyspdGhpcy5xdWVyaWVzW3ZdLmVsZW1lbnRTdGFydChnLGgpfWVsZW1lbnRFbmQoZyl7Zm9yKGxldCBoPTA7aDx0aGlzLnF1ZXJpZXMubGVuZ3RoO2grKyl0aGlzLnF1ZXJpZXNbaF0uZWxlbWVudEVuZChnKX1lbWJlZGRlZFRW''@;'; put 'put ''aWV3KGcpe2xldCBoPW51bGw7Zm9yKGxldCB2PTA7djx0aGlzLmxlbmd0aDt2Kyspe2NvbnN0IHk9bnVsbCE9PWg/aC5sZW5ndGg6MCxDPXRoaXMuZ2V0QnlJbmRleCh2KS5lbWJlZGRlZFRWaWV3KGcseSk7QyYmKEMuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz12LG51bGwhPT1oP2gucHVzaChD''@;'; put 'put ''KTpoPVtDXSl9cmV0dXJuIG51bGwhPT1oP25ldyBjaShoKTpudWxsfXRlbXBsYXRlKGcsaCl7Zm9yKGxldCB2PTA7djx0aGlzLnF1ZXJpZXMubGVuZ3RoO3YrKyl0aGlzLnF1ZXJpZXNbdl0udGVtcGxhdGUoZyxoKX1nZXRCeUluZGV4KGcpe3JldHVybiB0aGlzLnF1ZXJpZXNbZ119Z2V0IGxl''@;'; put 'put ''bmd0aCgpe3JldHVybiB0aGlzLnF1ZXJpZXMubGVuZ3RofXRyYWNrKGcpe3RoaXMucXVlcmllcy5wdXNoKGcpfX1jbGFzcyBIcntjb25zdHJ1Y3RvcihnLGg9LTEpe3RoaXMubWV0YWRhdGE9Zyx0aGlzLm1hdGNoZXM9bnVsbCx0aGlzLmluZGV4SW5EZWNsYXJhdGlvblZpZXc9LTEsdGhpcy5j''@;'; put 'put ''cm9zc2VzTmdUZW1wbGF0ZT0hMSx0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZT0hMCx0aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleD1ofWVsZW1lbnRTdGFydChnLGgpe3RoaXMuaXNBcHBseWluZ1RvTm9kZShoKSYmdGhpcy5tYXRjaFROb2RlKGcsaCl9ZWxlbWVudEVuZChnKXt0aGlzLl9kZWNs''@;'; put 'put ''YXJhdGlvbk5vZGVJbmRleD09PWcuaW5kZXgmJih0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZT0hMSl9dGVtcGxhdGUoZyxoKXt0aGlzLmVsZW1lbnRTdGFydChnLGgpfWVtYmVkZGVkVFZpZXcoZyxoKXtyZXR1cm4gdGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGcpPyh0aGlzLmNyb3NzZXNOZ1RlbXBs''@;'; put 'put ''YXRlPSEwLHRoaXMuYWRkTWF0Y2goLWcuaW5kZXgsaCksbmV3IEhyKHRoaXMubWV0YWRhdGEpKTpudWxsfWlzQXBwbHlpbmdUb05vZGUoZyl7aWYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGUmJjEhPSgxJnRoaXMubWV0YWRhdGEuZmxhZ3MpKXtjb25zdCBoPXRoaXMuX2RlY2xhcmF0aW9uTm9k''@;'; put 'put ''ZUluZGV4O2xldCB2PWcucGFyZW50O2Zvcig7bnVsbCE9PXYmJjgmdi50eXBlJiZ2LmluZGV4IT09aDspdj12LnBhcmVudDtyZXR1cm4gaD09PShudWxsIT09dj92LmluZGV4Oi0xKX1yZXR1cm4gdGhpcy5fYXBwbGllc1RvTmV4dE5vZGV9bWF0Y2hUTm9kZShnLGgpe2NvbnN0IHY9dGhpcy5t''@;'; put 'put ''ZXRhZGF0YS5wcmVkaWNhdGU7aWYoQXJyYXkuaXNBcnJheSh2KSlmb3IobGV0IHk9MDt5PHYubGVuZ3RoO3krKyl7Y29uc3QgQz12W3ldO3RoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKGcsaCxNaShoLEMpKSx0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbihnLGgsR3AoaCxnLEMs''@;'; put 'put ''ITEsITEpKX1lbHNlIHY9PT1Wbj80JmgudHlwZSYmdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oZyxoLC0xKTp0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbihnLGgsR3AoaCxnLHYsITEsITEpKX1tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oZyxoLHYpe2lmKG51bGwhPT12KXtj''@;'; put 'put ''b25zdCB5PXRoaXMubWV0YWRhdGEucmVhZDtpZihudWxsIT09eSlpZih5PT09X298fHk9PT1Ncnx8eT09PVZuJiY0JmgudHlwZSl0aGlzLmFkZE1hdGNoKGguaW5kZXgsLTIpO2Vsc2V7Y29uc3QgQz1HcChoLGcseSwhMSwhMSk7bnVsbCE9PUMmJnRoaXMuYWRkTWF0Y2goaC5pbmRleCxDKX1l''@;'; put 'put ''bHNlIHRoaXMuYWRkTWF0Y2goaC5pbmRleCx2KX19YWRkTWF0Y2goZyxoKXtudWxsPT09dGhpcy5tYXRjaGVzP3RoaXMubWF0Y2hlcz1bZyxoXTp0aGlzLm1hdGNoZXMucHVzaChnLGgpfX1mdW5jdGlvbiBNaShkLGcpe2NvbnN0IGg9ZC5sb2NhbE5hbWVzO2lmKG51bGwhPT1oKWZvcihsZXQg''@;'; put 'put ''dj0wO3Y8aC5sZW5ndGg7dis9MilpZihoW3ZdPT09ZylyZXR1cm4gaFt2KzFdO3JldHVybiBudWxsfWZ1bmN0aW9uIG4wKGQsZyxoLHYpe3JldHVybi0xPT09aD9mdW5jdGlvbiBaMChkLGcpe3JldHVybiAxMSZkLnR5cGU/bzYoZCxnKTo0JmQudHlwZT9vaShkLGcpOm51bGx9KGcsZCk6LTI9''@;'; put 'put ''PT1oP2Z1bmN0aW9uIGZvKGQsZyxoKXtyZXR1cm4gaD09PV9vP282KGcsZCk6aD09PVZuP29pKGcsZCk6aD09PU1yP3cwKGcsZCk6dm9pZCAwfShkLGcsdik6X2goZCxkWzFdLGgsZyl9ZnVuY3Rpb24gaWEoZCxnLGgsdil7Y29uc3QgeT1nWzE5XS5xdWVyaWVzW3ZdO2lmKG51bGw9PT15Lm1h''@;'; put 'put ''dGNoZXMpe2NvbnN0IEM9ZC5kYXRhLEk9aC5tYXRjaGVzLGo9W107Zm9yKGxldCBjZT0wO2NlPEkubGVuZ3RoO2NlKz0yKXtjb25zdCBfZT1JW2NlXTtqLnB1c2goX2U8MD9udWxsOm4wKGcsQ1tfZV0sSVtjZSsxXSxoLm1ldGFkYXRhLnJlYWQpKX15Lm1hdGNoZXM9an1yZXR1cm4geS5tYXRj''@;'; put 'put ''aGVzfWZ1bmN0aW9uIFgwKGQsZyxoLHYpe2NvbnN0IHk9ZC5xdWVyaWVzLmdldEJ5SW5kZXgoaCksQz15Lm1hdGNoZXM7aWYobnVsbCE9PUMpe2NvbnN0IEk9aWEoZCxnLHksaCk7Zm9yKGxldCBqPTA7ajxDLmxlbmd0aDtqKz0yKXtjb25zdCBjZT1DW2pdO2lmKGNlPjApdi5wdXNoKElbai8y''@;'; put 'put ''XSk7ZWxzZXtjb25zdCBfZT1DW2orMV0sUmU9Z1stY2VdO2ZvcihsZXQgTmU9MTA7TmU8UmUubGVuZ3RoO05lKyspe2NvbnN0IEtlPVJlW05lXTtLZVsxN109PT1LZVszXSYmWDAoS2VbMV0sS2UsX2Usdil9aWYobnVsbCE9PVJlWzldKXtjb25zdCBOZT1SZVs5XTtmb3IobGV0IEtlPTA7S2U8''@;'; put 'put ''TmUubGVuZ3RoO0tlKyspe2NvbnN0IGh0PU5lW0tlXTtYMChodFsxXSxodCxfZSx2KX19fX19cmV0dXJuIHZ9ZnVuY3Rpb24gemkoZCl7Y29uc3QgZz11ZSgpLGg9VHQoKSx2PU9uKCk7eWModisxKTtjb25zdCB5PXNzKGgsdik7aWYoZC5kaXJ0eSYmTHUoZyk9PT0oMj09KDImeS5tZXRhZGF0''@;'; put 'put ''YS5mbGFncykpKXtpZihudWxsPT09eS5tYXRjaGVzKWQucmVzZXQoW10pO2Vsc2V7Y29uc3QgQz15LmNyb3NzZXNOZ1RlbXBsYXRlP1gwKGgsZyx2LFtdKTppYShoLGcseSx2KTtkLnJlc2V0KEMsSUUpLGQubm90aWZ5T25DaGFuZ2VzKCl9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gZzAo''@;'; put 'put ''ZCxnLGgpe2NvbnN0IHY9VHQoKTt2LmZpcnN0Q3JlYXRlUGFzcyYmKGpyKHYsbmV3IERpKGQsZyxoKSwtMSksMj09KDImZykmJih2LnN0YXRpY1ZpZXdRdWVyaWVzPSEwKSksZjAodix1ZSgpLGcpfWZ1bmN0aW9uIFMwKGQsZyxoLHYpe2NvbnN0IHk9VHQoKTtpZih5LmZpcnN0Q3JlYXRlUGFz''@;'; put 'put ''cyl7Y29uc3QgQz1hcigpO2pyKHksbmV3IERpKGcsaCx2KSxDLmluZGV4KSxmdW5jdGlvbiBDYShkLGcpe2NvbnN0IGg9ZC5jb250ZW50UXVlcmllc3x8KGQuY29udGVudFF1ZXJpZXM9W10pO2chPT0oaC5sZW5ndGg/aFtoLmxlbmd0aC0xXTotMSkmJmgucHVzaChkLnF1ZXJpZXMubGVuZ3Ro''@;'; put 'put ''LTEsZyl9KHksZCksMj09KDImaCkmJih5LnN0YXRpY0NvbnRlbnRRdWVyaWVzPSEwKX1mMCh5LHVlKCksaCl9ZnVuY3Rpb24gQWkoKXtyZXR1cm4gZnVuY3Rpb24geDAoZCxnKXtyZXR1cm4gZFsxOV0ucXVlcmllc1tnXS5xdWVyeUxpc3R9KHVlKCksT24oKSl9ZnVuY3Rpb24gZjAoZCxnLGgp''@;'; put 'put ''e2NvbnN0IHY9bmV3IFJuKDQ9PSg0JmgpKTt3eChkLGcsdix2LmRlc3Ryb3kpLG51bGw9PT1nWzE5XSYmKGdbMTldPW5ldyB6ciksZ1sxOV0ucXVlcmllcy5wdXNoKG5ldyBiaSh2KSl9ZnVuY3Rpb24ganIoZCxnLGgpe251bGw9PT1kLnF1ZXJpZXMmJihkLnF1ZXJpZXM9bmV3IGNpKSxkLnF1''@;'; put 'put ''ZXJpZXMudHJhY2sobmV3IEhyKGcsaCkpfWZ1bmN0aW9uIHNzKGQsZyl7cmV0dXJuIGQucXVlcmllcy5nZXRCeUluZGV4KGcpfWZ1bmN0aW9uIF9sKGQsZyl7cmV0dXJuIG9pKGQsZyl9ZnVuY3Rpb24gJEEoLi4uZCl7fWNvbnN0IGdDPW5ldyBPdCgiQXBwbGljYXRpb24gSW5pdGlhbGl6ZXIi''@;'; put 'put ''KTtsZXQgbUM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmFwcEluaXRzPWgsdGhpcy5yZXNvbHZlPSRBLHRoaXMucmVqZWN0PSRBLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKHYseSk9Pnt0aGlzLnJlc29s''@;'; put 'put ''dmU9dix0aGlzLnJlamVjdD15fSl9cnVuSW5pdGlhbGl6ZXJzKCl7aWYodGhpcy5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgaD1bXSx2PSgpPT57dGhpcy5kb25lPSEwLHRoaXMucmVzb2x2ZSgpfTtpZih0aGlzLmFwcEluaXRzKWZvcihsZXQgeT0wO3k8dGhpcy5hcHBJbml0cy5sZW5ndGg7''@;'; put 'put ''eSsrKXtjb25zdCBDPXRoaXMuYXBwSW5pdHNbeV0oKTtpZihzNShDKSloLnB1c2goQyk7ZWxzZSBpZihZNChDKSl7Y29uc3QgST1uZXcgUHJvbWlzZSgoaixjZSk9PntDLnN1YnNjcmliZSh7Y29tcGxldGU6aixlcnJvcjpjZX0pfSk7aC5wdXNoKEkpfX1Qcm9taXNlLmFsbChoKS50aGVuKCgp''@;'; put 'put ''PT57digpfSkuY2F0Y2goeT0+e3RoaXMucmVqZWN0KHkpfSksMD09PWgubGVuZ3RoJiZ2KCksdGhpcy5pbml0aWFsaXplZD0hMH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoZ0MsOCkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9y''@;'; put 'put ''eTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0IHFBPW5ldyBPdCgiQXBwSWQiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIGZGKCl7cmV0dXJuYCR7dTIoKX0ke3UyKCl9JHt1MigpfWB9fSk7ZnVuY3Rpb24gdTIoKXtyZXR1cm4gU3RyaW5n''@;'; put 'put ''LmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkpKX1jb25zdCBoRj1uZXcgT3QoIlBsYXRmb3JtIEluaXRpYWxpemVyIiksRTI9bmV3IE90KCJQbGF0Zm9ybSBJRCIse3Byb3ZpZGVkSW46InBsYXRmb3JtIixmYWN0b3J5OigpPT4idW5rbm93biJ9KSxkRj1uZXcg''@;'; put 'put ''T3QoImFwcEJvb3RzdHJhcExpc3RlbmVyIiksSkc9bmV3IE90KCJBbmltYXRpb25Nb2R1bGVUeXBlIik7bGV0IHBGPSgoKT0+e2NsYXNzIGR7bG9nKGgpe2NvbnNvbGUubG9nKGgpfXdhcm4oaCl7Y29uc29sZS53YXJuKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicGxhdGZvcm0ifSksZH0pKCk7Y29uc3QgUDM9bmV3IE90KCJMb2NhbGVJZCIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PkMyKFAzLHNvLk9wdGlvbmFsfHNv''@;'; put 'put ''LlNraXBTZWxmKXx8ZnVuY3Rpb24gWEcoKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mICRsb2NhbGl6ZSYmJGxvY2FsaXplLmxvY2FsZXx8eDZ9KCl9KTtjbGFzcyBlcmV7Y29uc3RydWN0b3IoZyxoKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT1nLHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWh9''@;'; put 'put ''fWxldCBtRj0oKCk9PntjbGFzcyBke2NvbXBpbGVNb2R1bGVTeW5jKGgpe3JldHVybiBuZXcgc0MoaCl9Y29tcGlsZU1vZHVsZUFzeW5jKGgpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5jb21waWxlTW9kdWxlU3luYyhoKSl9Y29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5j''@;'; put 'put ''KGgpe2NvbnN0IHY9dGhpcy5jb21waWxlTW9kdWxlU3luYyhoKSxDPUI0KHhpKGgpLmRlY2xhcmF0aW9ucykucmVkdWNlKChJLGopPT57Y29uc3QgY2U9Z3Moaik7cmV0dXJuIGNlJiZJLnB1c2gobmV3IEc0KGNlKSksSX0sW10pO3JldHVybiBuZXcgZXJlKHYsQyl9Y29tcGlsZU1vZHVsZUFu''@;'; put 'put ''ZEFsbENvbXBvbmVudHNBc3luYyhoKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jKGgpKX1jbGVhckNhY2hlKCl7fWNsZWFyQ2FjaGVGb3IoaCl7fWdldE1vZHVsZUlkKGgpe319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7Y29uc3QgcUc9KCgpPT5Qcm9taXNlLnJlc29sdmUoMCkpKCk7ZnVuY3Rpb24gQUYoZCl7InVuZGVmaW5lZCI9PXR5cGVvZiBa''@;'; put 'put ''b25lP3FHLnRoZW4oKCk9PntkJiZkLmFwcGx5KG51bGwsbnVsbCl9KTpab25lLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInNjaGVkdWxlTWljcm90YXNrIixkKX1jbGFzcyBkbHtjb25zdHJ1Y3Rvcih7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6Zz0hMSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hh''@;'; put 'put ''bmdlRGV0ZWN0aW9uOmg9ITEsc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb246dj0hMX0pe2lmKHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgZm4oITEpLHRo''@;'; put 'put ''aXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgZm4oITEpLHRoaXMub25TdGFibGU9bmV3IGZuKCExKSx0aGlzLm9uRXJyb3I9bmV3IGZuKCExKSwidW5kZWZpbmVkIj09dHlwZW9mIFpvbmUpdGhyb3cgbmV3IHF0KDkwOCwhMSk7Wm9uZS5hc3NlcnRab25lUGF0Y2hlZCgpO2NvbnN0IHk9dGhpcztp''@;'; put 'put ''Zih5Ll9uZXN0aW5nPTAseS5fb3V0ZXI9eS5faW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUuQXN5bmNTdGFja1RhZ2dpbmdab25lU3BlYyl7Y29uc3QgQz1ab25lLkFzeW5jU3RhY2tUYWdnaW5nWm9uZVNwZWM7eS5faW5uZXI9eS5faW5uZXIuZm9yayhuZXcgQygiQW5ndWxhciIpKX1ab25lLlRh''@;'; put 'put ''c2tUcmFja2luZ1pvbmVTcGVjJiYoeS5faW5uZXI9eS5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLGcmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKHkuX2lubmVyPXkuX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSkseS5z''@;'; put 'put ''aG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPSF2JiZoLHkuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb249dix5Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSx5Lm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZT1mdW5jdGlvbiBlVygpe2xldCBkPURsLnJl''@;'; put 'put ''cXVlc3RBbmltYXRpb25GcmFtZSxnPURsLmNhbmNlbEFuaW1hdGlvbkZyYW1lO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgWm9uZSYmZCYmZyl7Y29uc3QgaD1kW1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtoJiYoZD1oKTtjb25zdCB2PWdbWm9uZS5fX3N5bWJvbF9fKCJP''@;'; put 'put ''cmlnaW5hbERlbGVnYXRlIildO3YmJihnPXYpfXJldHVybntuYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZCxuYXRpdmVDYW5jZWxBbmltYXRpb25GcmFtZTpnfX0oKS5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsZnVuY3Rpb24gdFcoZCl7Y29uc3QgZz0oKT0+eyFmdW5jdGlvbiBy''@;'; put 'put ''cmUoZCl7ZC5pc0NoZWNrU3RhYmxlUnVubmluZ3x8LTEhPT1kLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZHx8KGQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPWQubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lLmNhbGwoRGwsKCk9PntkLmZha2VUb3BFdmVudFRhc2t8fChkLmZh''@;'; put 'put ''a2VUb3BFdmVudFRhc2s9Wm9uZS5yb290LnNjaGVkdWxlRXZlbnRUYXNrKCJmYWtlVG9wRXZlbnRUYXNrIiwoKT0+e2QubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLHZDKGQpLGQuaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITAseUYoZCksZC5pc0NoZWNrU3RhYmxlUnVubmluZz0hMX0s''@;'; put 'put ''dm9pZCAwLCgpPT57fSwoKT0+e30pKSxkLmZha2VUb3BFdmVudFRhc2suaW52b2tlKCl9KSx2QyhkKSl9KGQpfTtkLl9pbm5lcj1kLl9pbm5lci5mb3JrKHtuYW1lOiJhbmd1bGFyIixwcm9wZXJ0aWVzOntpc0FuZ3VsYXJab25lOiEwfSxvbkludm9rZVRhc2s6KGgsdix5LEMsSSxqKT0+e3Ry''@;'; put 'put ''eXtyZXR1cm4gd0YoZCksaC5pbnZva2VUYXNrKHksQyxJLGopfWZpbmFsbHl7KGQuc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbiYmImV2ZW50VGFzayI9PT1DLnR5cGV8fGQuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiZnKCksYkYoZCl9fSxvbkludm9rZToo''@;'; put 'put ''aCx2LHksQyxJLGosY2UpPT57dHJ5e3JldHVybiB3RihkKSxoLmludm9rZSh5LEMsSSxqLGNlKX1maW5hbGx5e2Quc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24mJmcoKSxiRihkKX19LG9uSGFzVGFzazooaCx2LHksQyk9PntoLmhhc1Rhc2soeSxDKSx2PT09eSYmKCJtaWNyb1Rh''@;'; put 'put ''c2siPT1DLmNoYW5nZT8oZC5faGFzUGVuZGluZ01pY3JvdGFza3M9Qy5taWNyb1Rhc2ssdkMoZCkseUYoZCkpOiJtYWNyb1Rhc2siPT1DLmNoYW5nZSYmKGQuaGFzUGVuZGluZ01hY3JvdGFza3M9Qy5tYWNyb1Rhc2spKX0sb25IYW5kbGVFcnJvcjooaCx2LHksQyk9PihoLmhhbmRsZUVycm9y''@;'; put 'put ''KHksQyksZC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+ZC5vbkVycm9yLmVtaXQoQykpLCExKX0pfSh5KX1zdGF0aWMgaXNJbkFuZ3VsYXJab25lKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBab25lJiYhMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKX1zdGF0aWMgYXNz''@;'; put 'put ''ZXJ0SW5Bbmd1bGFyWm9uZSgpe2lmKCFkbC5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgcXQoOTA5LCExKX1zdGF0aWMgYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpe2lmKGRsLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBxdCg5MDksITEpfXJ1bihnLGgsdil7cmV0dXJuIHRoaXMu''@;'; put 'put ''X2lubmVyLnJ1bihnLGgsdil9cnVuVGFzayhnLGgsdix5KXtjb25zdCBDPXRoaXMuX2lubmVyLEk9Qy5zY2hlZHVsZUV2ZW50VGFzaygiTmdab25lRXZlbnQ6ICIreSxnLG5yZSwkQSwkQSk7dHJ5e3JldHVybiBDLnJ1blRhc2soSSxoLHYpfWZpbmFsbHl7Qy5jYW5jZWxUYXNrKEkpfX1ydW5H''@;'; put 'put ''dWFyZGVkKGcsaCx2KXtyZXR1cm4gdGhpcy5faW5uZXIucnVuR3VhcmRlZChnLGgsdil9cnVuT3V0c2lkZUFuZ3VsYXIoZyl7cmV0dXJuIHRoaXMuX291dGVyLnJ1bihnKX19Y29uc3QgbnJlPXt9O2Z1bmN0aW9uIHlGKGQpe2lmKDA9PWQuX25lc3RpbmcmJiFkLmhhc1BlbmRpbmdNaWNyb3Rh''@;'; put 'put ''c2tzJiYhZC5pc1N0YWJsZSl0cnl7ZC5fbmVzdGluZysrLGQub25NaWNyb3Rhc2tFbXB0eS5lbWl0KG51bGwpfWZpbmFsbHl7aWYoZC5fbmVzdGluZy0tLCFkLmhhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXtkLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5kLm9uU3RhYmxlLmVtaXQobnVsbCkpfWZp''@;'; put 'put ''bmFsbHl7ZC5pc1N0YWJsZT0hMH19fWZ1bmN0aW9uIHZDKGQpe2QuaGFzUGVuZGluZ01pY3JvdGFza3M9ISEoZC5faGFzUGVuZGluZ01pY3JvdGFza3N8fChkLnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb258fGQuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiYt''@;'; put 'put ''MSE9PWQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkKX1mdW5jdGlvbiB3RihkKXtkLl9uZXN0aW5nKyssZC5pc1N0YWJsZSYmKGQuaXNTdGFibGU9ITEsZC5vblVuc3RhYmxlLmVtaXQobnVsbCkpfWZ1bmN0aW9uIGJGKGQpe2QuX25lc3RpbmctLSx5RihkKX1jbGFzcyBpcmV7Y29uc3Ry''@;'; put 'put ''dWN0b3IoKXt0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IGZuLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgZm4sdGhpcy5vblN0YWJsZT1uZXcgZm4sdGhpcy5vbkVy''@;'; put 'put ''cm9yPW5ldyBmbn1ydW4oZyxoLHYpe3JldHVybiBnLmFwcGx5KGgsdil9cnVuR3VhcmRlZChnLGgsdil7cmV0dXJuIGcuYXBwbHkoaCx2KX1ydW5PdXRzaWRlQW5ndWxhcihnKXtyZXR1cm4gZygpfXJ1blRhc2soZyxoLHYseSl7cmV0dXJuIGcuYXBwbHkoaCx2KX19Y29uc3Qgblc9bmV3IE90''@;'; put 'put ''KCIiKSxPVD1uZXcgT3QoIiIpO2xldCB2NyxSVD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLl9uZ1pvbmU9aCx0aGlzLnJlZ2lzdHJ5PXYsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJh''@;'; put 'put ''Y2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLHY3fHwoZnVuY3Rpb24gb3JlKGQpe3Y3PWR9KHkpLHkuYWRkVG9XaW5kb3codikpLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLGgucnVuKCgpPT57dGhpcy50YXNrVHJhY2tpbmdab25lPSJ1bmRlZmluZWQiPT10eXBlb2YgWm9u''@;'; put 'put ''ZT9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pfV93YXRjaEFuZ3VsYXJFdmVudHMoKXt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pv''@;'; put 'put ''bmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57ZGwuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLEFGKCgpPT57dGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pfX0pfSl9aW5j''@;'; put 'put ''cmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50''@;'; put 'put ''PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJsZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PT10aGlzLl9wZW5kaW5n''@;'; put 'put ''Q291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpQUYoKCk9Pntmb3IoOzAhPT10aGlzLl9jYWxsYmFja3MubGVuZ3RoOyl7bGV0IGg9dGhpcy5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91''@;'; put 'put ''dChoLnRpbWVvdXRJZCksaC5kb25lQ2IodGhpcy5fZGlkV29yayl9dGhpcy5fZGlkV29yaz0hMX0pO2Vsc2V7bGV0IGg9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcih2PT4hdi51cGRhdGVDYnx8IXYudXBkYXRlQ2IoaCl8fChj''@;'; put 'put ''bGVhclRpbWVvdXQodi50aW1lb3V0SWQpLCExKSksdGhpcy5fZGlkV29yaz0hMH19Z2V0UGVuZGluZ1Rhc2tzKCl7cmV0dXJuIHRoaXMudGFza1RyYWNraW5nWm9uZT90aGlzLnRhc2tUcmFja2luZ1pvbmUubWFjcm9UYXNrcy5tYXAoaD0+KHtzb3VyY2U6aC5zb3VyY2UsY3JlYXRpb25Mb2Nh''@;'; put 'put ''dGlvbjpoLmNyZWF0aW9uTG9jYXRpb24sZGF0YTpoLmRhdGF9KSk6W119YWRkQ2FsbGJhY2soaCx2LHkpe2xldCBDPS0xO3YmJnY+MCYmKEM9c2V0VGltZW91dCgoKT0+e3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKEk9PkkudGltZW91dElkIT09QyksaCh0aGlzLl9k''@;'; put 'put ''aWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSx2KSksdGhpcy5fY2FsbGJhY2tzLnB1c2goe2RvbmVDYjpoLHRpbWVvdXRJZDpDLHVwZGF0ZUNiOnl9KX13aGVuU3RhYmxlKGgsdix5KXtpZih5JiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFj''@;'; put 'put ''a2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUgY2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9wbHVnaW5zL3Rhc2stdHJhY2tpbmciIGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKGgsdix5KSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5''@;'; put 'put ''KCl9Z2V0UGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9cmVnaXN0ZXJBcHBsaWNhdGlvbihoKXt0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVyQXBwbGljYXRpb24oaCx0aGlzKX11bnJlZ2lzdGVyQXBwbGljYXRpb24oaCl7dGhpcy5yZWdpc3RyeS51bnJlZ2lz''@;'; put 'put ''dGVyQXBwbGljYXRpb24oaCl9ZmluZFByb3ZpZGVycyhoLHYseSl7cmV0dXJuW119fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGRsKSxFaShCVCksRWkoT1QpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9''@;'; put 'put ''KSxkfSkoKSxCVD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fYXBwbGljYXRpb25zPW5ldyBNYXB9cmVnaXN0ZXJBcHBsaWNhdGlvbihoLHYpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQoaCx2KX11bnJlZ2lzdGVyQXBwbGljYXRpb24oaCl7dGhpcy5fYXBwbGljYXRpb25zLmRl''@;'; put 'put ''bGV0ZShoKX11bnJlZ2lzdGVyQWxsQXBwbGljYXRpb25zKCl7dGhpcy5fYXBwbGljYXRpb25zLmNsZWFyKCl9Z2V0VGVzdGFiaWxpdHkoaCl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQoaCl8fG51bGx9Z2V0QWxsVGVzdGFiaWxpdGllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMu''@;'; put 'put ''X2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9Z2V0QWxsUm9vdEVsZW1lbnRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtleXMoKSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKGgsdj0hMCl7dmFyIHk7cmV0dXJuIG51bGwhPT0oeT1udWxsPT12Nz92b2lkIDA6djcuZmlu''@;'; put 'put ''ZFRlc3RhYmlsaXR5SW5UcmVlKHRoaXMsaCx2KSkmJnZvaWQgMCE9PXk/eTpudWxsfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicGxhdGZvcm0i''@;'; put 'put ''fSksZH0pKCksWmg9bnVsbDtjb25zdCBfRj1uZXcgT3QoIkFsbG93TXVsdGlwbGVUb2tlbiIpLEFDPW5ldyBPdCgiUGxhdGZvcm1EZXN0cm95TGlzdGVuZXJzIik7Y2xhc3MgaVd7Y29uc3RydWN0b3IoZyxoKXt0aGlzLm5hbWU9Zyx0aGlzLnRva2VuPWh9fWZ1bmN0aW9uIGtGKGQsZyxoPVtd''@;'; put 'put ''KXtjb25zdCB2PWBQbGF0Zm9ybTogJHtnfWAseT1uZXcgT3Qodik7cmV0dXJuKEM9W10pPT57bGV0IEk9U0YoKTtpZighSXx8SS5pbmplY3Rvci5nZXQoX0YsITEpKXtjb25zdCBqPVsuLi5oLC4uLkMse3Byb3ZpZGU6eSx1c2VWYWx1ZTohMH1dO2Q/ZChqKTpmdW5jdGlvbiBscmUoZCl7aWYo''@;'; put 'put ''WmgmJiFaaC5nZXQoX0YsITEpKXRocm93IG5ldyBxdCg0MDAsITEpO1poPWQ7Y29uc3QgZz1kLmdldChCNik7KGZ1bmN0aW9uIENGKGQpe2NvbnN0IGc9ZC5nZXQoaEYsbnVsbCk7ZyYmZy5mb3JFYWNoKGg9PmgoKSl9KShkKX0oZnVuY3Rpb24gUFQoZD1bXSxnKXtyZXR1cm4geHMuY3JlYXRl''@;'; put 'put ''KHtuYW1lOmcscHJvdmlkZXJzOlt7cHJvdmlkZTp5bSx1c2VWYWx1ZToicGxhdGZvcm0ifSx7cHJvdmlkZTpBQyx1c2VWYWx1ZTpuZXcgU2V0KFsoKT0+Wmg9bnVsbF0pfSwuLi5kXX0pfShqLHYpKX1yZXR1cm4gZnVuY3Rpb24gdXJlKGQpe2NvbnN0IGc9U0YoKTtpZighZyl0aHJvdyBuZXcg''@;'; put 'put ''cXQoNDAxLCExKTtyZXR1cm4gZ30oKX19ZnVuY3Rpb24gU0YoKXt2YXIgZDtyZXR1cm4gbnVsbCE9PShkPW51bGw9PVpoP3ZvaWQgMDpaaC5nZXQoQjYpKSYmdm9pZCAwIT09ZD9kOm51bGx9bGV0IEI2PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5faW5qZWN0b3I9aCx0aGlz''@;'; put 'put ''Ll9tb2R1bGVzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExfWJvb3RzdHJhcE1vZHVsZUZhY3RvcnkoaCx2KXtjb25zdCB5PWZ1bmN0aW9uIFRuKGQsZyl7bGV0IGg7cmV0dXJuIGg9Im5vb3AiPT09ZD9uZXcgaXJlOigiem9uZS5qcyI9PT1kP3ZvaWQg''@;'; put 'put ''MDpkKXx8bmV3IGRsKGcpLGh9KG51bGw9PXY/dm9pZCAwOnYubmdab25lLGZ1bmN0aW9uIGFXKGQpe3JldHVybntlbmFibGVMb25nU3RhY2tUcmFjZTohMSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOiEoIWR8fCFkLm5nWm9uZUV2ZW50Q29hbGVzY2luZyl8fCExLHNob3Vs''@;'; put 'put ''ZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOiEoIWR8fCFkLm5nWm9uZVJ1bkNvYWxlc2NpbmcpfHwhMX19KHYpKSxDPVt7cHJvdmlkZTpkbCx1c2VWYWx1ZTp5fV07cmV0dXJuIHkucnVuKCgpPT57Y29uc3QgST14cy5jcmVhdGUoe3Byb3ZpZGVyczpDLHBhcmVudDp0aGlzLmluamVjdG9y''@;'; put 'put ''LG5hbWU6aC5tb2R1bGVUeXBlLm5hbWV9KSxqPWguY3JlYXRlKEkpLGNlPWouaW5qZWN0b3IuZ2V0KFk4LG51bGwpO2lmKCFjZSl0aHJvdyBuZXcgcXQoNDAyLCExKTtyZXR1cm4geS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2NvbnN0IF9lPXkub25FcnJvci5zdWJzY3JpYmUoe25leHQ6UmU9''@;'; put 'put ''PntjZS5oYW5kbGVFcnJvcihSZSl9fSk7ai5vbkRlc3Ryb3koKCk9Pnt3Qyh0aGlzLl9tb2R1bGVzLGopLF9lLnVuc3Vic2NyaWJlKCl9KX0pLGZ1bmN0aW9uIE1GKGQsZyxoKXt0cnl7Y29uc3Qgdj1oKCk7cmV0dXJuIHM1KHYpP3YuY2F0Y2goeT0+e3Rocm93IGcucnVuT3V0c2lkZUFuZ3Vs''@;'; put 'put ''YXIoKCk9PmQuaGFuZGxlRXJyb3IoeSkpLHl9KTp2fWNhdGNoKHYpe3Rocm93IGcucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PmQuaGFuZGxlRXJyb3IodikpLHZ9fShjZSx5LCgpPT57Y29uc3QgX2U9ai5pbmplY3Rvci5nZXQobUMpO3JldHVybiBfZS5ydW5Jbml0aWFsaXplcnMoKSxfZS5kb25l''@;'; put 'put ''UHJvbWlzZS50aGVuKCgpPT4oZnVuY3Rpb24gdlQoZCl7ZWwoZCwiRXhwZWN0ZWQgbG9jYWxlSWQgdG8gYmUgZGVmaW5lZCIpLCJzdHJpbmciPT10eXBlb2YgZCYmKG1UPWQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKSl9KGouaW5qZWN0b3IuZ2V0KFAzLHg2KXx8eDYpLHRoaXMu''@;'; put 'put ''X21vZHVsZURvQm9vdHN0cmFwKGopLGopKX0pfSl9Ym9vdHN0cmFwTW9kdWxlKGgsdj1bXSl7Y29uc3QgeT1GVCh7fSx2KTtyZXR1cm4gZnVuY3Rpb24gclcoZCxnLGgpe2NvbnN0IHY9bmV3IHNDKGgpO3JldHVybiBQcm9taXNlLnJlc29sdmUodil9KDAsMCxoKS50aGVuKEM9PnRoaXMuYm9v''@;'; put 'put ''dHN0cmFwTW9kdWxlRmFjdG9yeShDLHkpKX1fbW9kdWxlRG9Cb290c3RyYXAoaCl7Y29uc3Qgdj1oLmluamVjdG9yLmdldCh5Qyk7aWYoaC5fYm9vdHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MCloLl9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2goeT0+di5ib290c3RyYXAoeSkpO2Vsc2V7''@;'; put 'put ''aWYoIWguaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgcXQoNDAzLCExKTtoLmluc3RhbmNlLm5nRG9Cb290c3RyYXAodil9dGhpcy5fbW9kdWxlcy5wdXNoKGgpfW9uRGVzdHJveShoKXt0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2goaCl9Z2V0IGluamVjdG9yKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX2luamVjdG9yfWRlc3Ryb3koKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IHF0KDQwNCwhMSk7dGhpcy5fbW9kdWxlcy5zbGljZSgpLmZvckVhY2godj0+di5kZXN0cm95KCkpLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaCh2PT52KCkpO2NvbnN0IGg9dGhpcy5f''@;'; put 'put ''aW5qZWN0b3IuZ2V0KEFDLG51bGwpO2gmJihoLmZvckVhY2godj0+digpKSxoLmNsZWFyKCkpLHRoaXMuX2Rlc3Ryb3llZD0hMH1nZXQgZGVzdHJveWVkKCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWko''@;'; put 'put ''eHMpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicGxhdGZvcm0ifSksZH0pKCk7ZnVuY3Rpb24gRlQoZCxnKXtyZXR1cm4gQXJyYXkuaXNBcnJheShnKT9nLnJlZHVjZShGVCxkKTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24o''@;'; put 'put ''e30sZCksZyl9bGV0IHlDPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX3pvbmU9aCx0aGlzLl9pbmplY3Rvcj12LHRoaXMuX2V4Y2VwdGlvbkhhbmRsZXI9eSx0aGlzLl9ib290c3RyYXBMaXN0ZW5lcnM9W10sdGhpcy5fdmlld3M9W10sdGhpcy5fcnVubmluZ1RpY2s9''@;'; put 'put ''ITEsdGhpcy5fc3RhYmxlPSEwLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdLHRoaXMuY29tcG9uZW50VHlwZXM9W10sdGhpcy5jb21wb25lbnRzPVtdLHRoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb249dGhpcy5fem9uZS5vbk1pY3JvdGFza0Vt''@;'; put 'put ''cHR5LnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMuX3pvbmUucnVuKCgpPT57dGhpcy50aWNrKCl9KX19KTtjb25zdCBDPW5ldyBGKGo9Pnt0aGlzLl9zdGFibGU9dGhpcy5fem9uZS5pc1N0YWJsZSYmIXRoaXMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiF0aGlzLl96b25lLmhhc1Bl''@;'; put 'put ''bmRpbmdNaWNyb3Rhc2tzLHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntqLm5leHQodGhpcy5fc3RhYmxlKSxqLmNvbXBsZXRlKCl9KX0pLEk9bmV3IEYoaj0+e2xldCBjZTt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57Y2U9dGhpcy5fem9uZS5vblN0YWJsZS5z''@;'; put 'put ''dWJzY3JpYmUoKCk9PntkbC5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksQUYoKCk9PnshdGhpcy5fc3RhYmxlJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIXRoaXMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MmJih0aGlzLl9zdGFibGU9ITAsai5uZXh0KCEwKSl9KX0p''@;'; put 'put ''fSk7Y29uc3QgX2U9dGhpcy5fem9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSgoKT0+e2RsLmFzc2VydEluQW5ndWxhclpvbmUoKSx0aGlzLl9zdGFibGUmJih0aGlzLl9zdGFibGU9ITEsdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2oubmV4dCghMSl9KSl9KTtyZXR1cm4oKT0+''@;'; put 'put ''e2NlLnVuc3Vic2NyaWJlKCksX2UudW5zdWJzY3JpYmUoKX19KTt0aGlzLmlzU3RhYmxlPW5yKEMsSS5waXBlKGZ1bmN0aW9uIFRyKCl7cmV0dXJuIGQ9PnduKCkoZnVuY3Rpb24gX24oZCxnKXtyZXR1cm4gZnVuY3Rpb24odil7bGV0IHk7aWYoeT0iZnVuY3Rpb24iPT10eXBlb2YgZD9kOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGR9LCJmdW5jdGlvbiI9PXR5cGVvZiBnKXJldHVybiB2LmxpZnQobmV3IHRuKHksZykpO2NvbnN0IEM9T2JqZWN0LmNyZWF0ZSh2LEtuKTtyZXR1cm4gQy5zb3VyY2U9dixDLnN1YmplY3RGYWN0b3J5PXksQ319KEduKShkKSl9KCkpKX1nZXQgZGVzdHJveWVkKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZH1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9Ym9vdHN0cmFwKGgsdil7Y29uc3QgeT1oIGluc3RhbmNlb2YgYmQ7aWYoIXRoaXMuX2luamVjdG9yLmdldChtQykuZG9uZSl0aHJvdyF5JiZmdW5jdGlvbiBMMihkKXtjb25zdCBnPWdz''@;'; put 'put ''KGQpfHxOMShkKXx8S2woZCk7cmV0dXJuIG51bGwhPT1nJiZnLnN0YW5kYWxvbmV9KGgpLG5ldyBxdCg0MDUsZmFsc2UpO2xldCBJO0k9eT9oOnRoaXMuX2luamVjdG9yLmdldChfZCkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoaCksdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKEkuY29tcG9u''@;'; put 'put ''ZW50VHlwZSk7Y29uc3Qgaj1mdW5jdGlvbiBhcmUoZCl7cmV0dXJuIGQuaXNCb3VuZFRvTW9kdWxlfShJKT92b2lkIDA6dGhpcy5faW5qZWN0b3IuZ2V0KFIzKSxfZT1JLmNyZWF0ZSh4cy5OVUxMLFtdLHZ8fEkuc2VsZWN0b3IsaiksUmU9X2UubG9jYXRpb24ubmF0aXZlRWxlbWVudCxOZT1f''@;'; put 'put ''ZS5pbmplY3Rvci5nZXQoblcsbnVsbCk7cmV0dXJuIG51bGw9PU5lfHxOZS5yZWdpc3RlckFwcGxpY2F0aW9uKFJlKSxfZS5vbkRlc3Ryb3koKCk9Pnt0aGlzLmRldGFjaFZpZXcoX2UuaG9zdFZpZXcpLHdDKHRoaXMuY29tcG9uZW50cyxfZSksbnVsbD09TmV8fE5lLnVucmVnaXN0ZXJBcHBs''@;'; put 'put ''aWNhdGlvbihSZSl9KSx0aGlzLl9sb2FkQ29tcG9uZW50KF9lKSxfZX10aWNrKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IHF0KDEwMSwhMSk7dHJ5e3RoaXMuX3J1bm5pbmdUaWNrPSEwO2ZvcihsZXQgaCBvZiB0aGlzLl92aWV3cyloLmRldGVjdENoYW5nZXMoKX1jYXRjaCho''@;'; put 'put ''KXt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT50aGlzLl9leGNlcHRpb25IYW5kbGVyLmhhbmRsZUVycm9yKGgpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KGgpe2NvbnN0IHY9aDt0aGlzLl92aWV3cy5wdXNoKHYpLHYuYXR0YWNoVG9BcHBSZWYo''@;'; put 'put ''dGhpcyl9ZGV0YWNoVmlldyhoKXtjb25zdCB2PWg7d0ModGhpcy5fdmlld3Msdiksdi5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQoaCl7dGhpcy5hdHRhY2hWaWV3KGguaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuY29tcG9uZW50cy5wdXNoKGgpLHRoaXMuX2luamVjdG9y''@;'; put 'put ''LmdldChkRixbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaCh5PT55KGgpKX1uZ09uRGVzdHJveSgpe2lmKCF0aGlzLl9kZXN0cm95ZWQpdHJ5e3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaChoPT5oKCkpLHRoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFj''@;'; put 'put ''aChoPT5oLmRlc3Ryb3koKSksdGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWZpbmFsbHl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdfX1v''@;'; put 'put ''bkRlc3Ryb3koaCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaChoKSwoKT0+d0ModGhpcy5fZGVzdHJveUxpc3RlbmVycyxoKX1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBxdCg0MDYsITEpO2NvbnN0IGg9dGhpcy5faW5qZWN0b3I7aC5kZXN0cm95''@;'; put 'put ''JiYhaC5kZXN0cm95ZWQmJmguZGVzdHJveSgpfWdldCB2aWV3Q291bnQoKXtyZXR1cm4gdGhpcy5fdmlld3MubGVuZ3RofXdhcm5JZkRlc3Ryb3llZCgpe319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoZGwpLEVpKFdjKSxFaShZOCkpfSxkLlx1''@;'; put 'put ''MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2Z1bmN0aW9uIHdDKGQsZyl7Y29uc3QgaD1kLmluZGV4T2YoZyk7aD4tMSYmZC5zcGxpY2UoaCwxKX1sZXQgTnM9ITAsZDE9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuX19O''@;'; put 'put ''R19FTEVNRU5UX0lEX189RUYsZH0pKCk7ZnVuY3Rpb24gRUYoZCl7cmV0dXJuIGZ1bmN0aW9uIGNyZShkLGcsaCl7aWYoV2coZCkmJiFoKXtjb25zdCB2PSR1KGQuaW5kZXgsZyk7cmV0dXJuIG5ldyBiNih2LHYpfXJldHVybiA0NyZkLnR5cGU/bmV3IGI2KGdbMTZdLGcpOm51bGx9KGFyKCks''@;'; put 'put ''dWUoKSwxNj09KDE2JmQpKX1jbGFzcyBoV3tjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyhnKXtyZXR1cm4gZTcoZyl9Y3JlYXRlKGcpe3JldHVybiBuZXcgcHJlKGcpfX1jb25zdCBkcmU9KGQsZyk9Pmc7Y2xhc3MgcHJle2NvbnN0cnVjdG9yKGcpe3RoaXMubGVuZ3RoPTAsdGhpcy5fbGlua2Vk''@;'; put 'put ''UmVjb3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3ByZXZpb3VzSXRIZWFkPW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hl''@;'; put 'put ''YWQ9bnVsbCx0aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj1nfHxkcmV9Zm9y''@;'; put 'put ''RWFjaEl0ZW0oZyl7bGV0IGg7Zm9yKGg9dGhpcy5faXRIZWFkO251bGwhPT1oO2g9aC5fbmV4dClnKGgpfWZvckVhY2hPcGVyYXRpb24oZyl7bGV0IGg9dGhpcy5faXRIZWFkLHY9dGhpcy5fcmVtb3ZhbHNIZWFkLHk9MCxDPW51bGw7Zm9yKDtofHx2Oyl7Y29uc3QgST0hdnx8aCYmaC5jdXJy''@;'; put 'put ''ZW50SW5kZXg8UkYodix5LEMpP2g6dixqPVJGKEkseSxDKSxjZT1JLmN1cnJlbnRJbmRleDtpZihJPT09dil5LS0sdj12Ll9uZXh0UmVtb3ZlZDtlbHNlIGlmKGg9aC5fbmV4dCxudWxsPT1JLnByZXZpb3VzSW5kZXgpeSsrO2Vsc2V7Q3x8KEM9W10pO2NvbnN0IF9lPWoteSxSZT1jZS15O2lm''@;'; put 'put ''KF9lIT1SZSl7Zm9yKGxldCBLZT0wO0tlPF9lO0tlKyspe2NvbnN0IGh0PUtlPEMubGVuZ3RoP0NbS2VdOkNbS2VdPTAsQnQ9aHQrS2U7UmU8PUJ0JiZCdDxfZSYmKENbS2VdPWh0KzEpfUNbSS5wcmV2aW91c0luZGV4XT1SZS1fZX19aiE9PWNlJiZnKEksaixjZSl9fWZvckVhY2hQcmV2aW91''@;'; put 'put ''c0l0ZW0oZyl7bGV0IGg7Zm9yKGg9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PWg7aD1oLl9uZXh0UHJldmlvdXMpZyhoKX1mb3JFYWNoQWRkZWRJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PWg7aD1oLl9uZXh0QWRkZWQpZyhoKX1mb3JFYWNoTW92''@;'; put 'put ''ZWRJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX21vdmVzSGVhZDtudWxsIT09aDtoPWguX25leHRNb3ZlZClnKGgpfWZvckVhY2hSZW1vdmVkSXRlbShnKXtsZXQgaDtmb3IoaD10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWg7aD1oLl9uZXh0UmVtb3ZlZClnKGgpfWZvckVhY2hJZGVudGl0''@;'; put 'put ''eUNoYW5nZShnKXtsZXQgaDtmb3IoaD10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkO251bGwhPT1oO2g9aC5fbmV4dElkZW50aXR5Q2hhbmdlKWcoaCl9ZGlmZihnKXtpZihudWxsPT1nJiYoZz1bXSksIWU3KGcpKXRocm93IG5ldyBxdCg5MDAsITEpO3JldHVybiB0aGlzLmNoZWNrKGcpP3Ro''@;'; put 'put ''aXM6bnVsbH1vbkRlc3Ryb3koKXt9Y2hlY2soZyl7dGhpcy5fcmVzZXQoKTtsZXQgeSxDLEksaD10aGlzLl9pdEhlYWQsdj0hMTtpZihBcnJheS5pc0FycmF5KGcpKXt0aGlzLmxlbmd0aD1nLmxlbmd0aDtmb3IobGV0IGo9MDtqPHRoaXMubGVuZ3RoO2orKylDPWdbal0sST10aGlzLl90cmFj''@;'; put 'put ''a0J5Rm4oaixDKSxudWxsIT09aCYmT2JqZWN0LmlzKGgudHJhY2tCeUlkLEkpPyh2JiYoaD10aGlzLl92ZXJpZnlSZWluc2VydGlvbihoLEMsSSxqKSksT2JqZWN0LmlzKGguaXRlbSxDKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoaCxDKSk6KGg9dGhpcy5fbWlzbWF0Y2goaCxDLEksaiks''@;'; put 'put ''dj0hMCksaD1oLl9uZXh0fWVsc2UgeT0wLGZ1bmN0aW9uIHdQKGQsZyl7aWYoQXJyYXkuaXNBcnJheShkKSlmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKylnKGRbaF0pO2Vsc2V7Y29uc3QgaD1kW182KCldKCk7bGV0IHY7Zm9yKDshKHY9aC5uZXh0KCkpLmRvbmU7KWcodi52YWx1ZSl9fShn''@;'; put 'put ''LGo9PntJPXRoaXMuX3RyYWNrQnlGbih5LGopLG51bGwhPT1oJiZPYmplY3QuaXMoaC50cmFja0J5SWQsSSk/KHYmJihoPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGgsaixJLHkpKSxPYmplY3QuaXMoaC5pdGVtLGopfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShoLGopKTooaD10aGlzLl9t''@;'; put 'put ''aXNtYXRjaChoLGosSSx5KSx2PSEwKSxoPWguX25leHQseSsrfSksdGhpcy5sZW5ndGg9eTtyZXR1cm4gdGhpcy5fdHJ1bmNhdGUoaCksdGhpcy5jb2xsZWN0aW9uPWcsdGhpcy5pc0RpcnR5fWdldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09''@;'; put 'put ''dGhpcy5fbW92ZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfHxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZH1fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCBnO2ZvcihnPXRoaXMuX3ByZXZpb3VzSXRIZWFkPXRoaXMuX2l0SGVhZDtudWxsIT09ZztnPWcuX25l''@;'; put 'put ''eHQpZy5fbmV4dFByZXZpb3VzPWcuX25leHQ7Zm9yKGc9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZztnPWcuX25leHRBZGRlZClnLnByZXZpb3VzSW5kZXg9Zy5jdXJyZW50SW5kZXg7Zm9yKHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLGc9dGhpcy5f''@;'; put 'put ''bW92ZXNIZWFkO251bGwhPT1nO2c9Zy5fbmV4dE1vdmVkKWcucHJldmlvdXNJbmRleD1nLmN1cnJlbnRJbmRleDt0aGlzLl9tb3Zlc0hlYWQ9dGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPXRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdl''@;'; put 'put ''c0hlYWQ9dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsfX1fbWlzbWF0Y2goZyxoLHYseSl7bGV0IEM7cmV0dXJuIG51bGw9PT1nP0M9dGhpcy5faXRUYWlsOihDPWcuX3ByZXYsdGhpcy5fcmVtb3ZlKGcpKSxudWxsIT09KGc9bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxs''@;'; put 'put ''OnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQodixudWxsKSk/KE9iamVjdC5pcyhnLml0ZW0saCl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKGcsaCksdGhpcy5fcmVpbnNlcnRBZnRlcihnLEMseSkpOm51bGwhPT0oZz1udWxsPT09dGhpcy5fbGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX2xp''@;'; put 'put ''bmtlZFJlY29yZHMuZ2V0KHYseSkpPyhPYmplY3QuaXMoZy5pdGVtLGgpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShnLGgpLHRoaXMuX21vdmVBZnRlcihnLEMseSkpOmc9dGhpcy5fYWRkQWZ0ZXIobmV3IEgzKGgsdiksQyx5KSxnfV92ZXJpZnlSZWluc2VydGlvbihnLGgsdix5KXtsZXQg''@;'; put 'put ''Qz1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldCh2LG51bGwpO3JldHVybiBudWxsIT09Qz9nPXRoaXMuX3JlaW5zZXJ0QWZ0ZXIoQyxnLl9wcmV2LHkpOmcuY3VycmVudEluZGV4IT15JiYoZy5jdXJyZW50SW5kZXg9eSx0aGlzLl9h''@;'; put 'put ''ZGRUb01vdmVzKGcseSkpLGd9X3RydW5jYXRlKGcpe2Zvcig7bnVsbCE9PWc7KXtjb25zdCBoPWcuX25leHQ7dGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsoZykpLGc9aH1udWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMuY2xlYXIoKSxu''@;'; put 'put ''dWxsIT09dGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSxudWxsIT09dGhpcy5fbW92ZXNUYWlsJiYodGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2l0VGFpbCYmKHRoaXMuX2l0VGFpbC5fbmV4dD1u''@;'; put 'put ''dWxsKSxudWxsIT09dGhpcy5fcmVtb3ZhbHNUYWlsJiYodGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCYmKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT1udWxsKX1fcmVpbnNl''@;'; put 'put ''cnRBZnRlcihnLGgsdil7bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLnJlbW92ZShnKTtjb25zdCB5PWcuX3ByZXZSZW1vdmVkLEM9Zy5fbmV4dFJlbW92ZWQ7cmV0dXJuIG51bGw9PT15P3RoaXMuX3JlbW92YWxzSGVhZD1DOnkuX25leHRSZW1v''@;'; put 'put ''dmVkPUMsbnVsbD09PUM/dGhpcy5fcmVtb3ZhbHNUYWlsPXk6Qy5fcHJldlJlbW92ZWQ9eSx0aGlzLl9pbnNlcnRBZnRlcihnLGgsdiksdGhpcy5fYWRkVG9Nb3ZlcyhnLHYpLGd9X21vdmVBZnRlcihnLGgsdil7cmV0dXJuIHRoaXMuX3VubGluayhnKSx0aGlzLl9pbnNlcnRBZnRlcihnLGgs''@;'; put 'put ''diksdGhpcy5fYWRkVG9Nb3ZlcyhnLHYpLGd9X2FkZEFmdGVyKGcsaCx2KXtyZXR1cm4gdGhpcy5faW5zZXJ0QWZ0ZXIoZyxoLHYpLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbD09PXRoaXMuX2FkZGl0aW9uc1RhaWw/dGhpcy5fYWRkaXRpb25zSGVhZD1nOnRoaXMuX2FkZGl0aW9uc1RhaWwu''@;'; put 'put ''X25leHRBZGRlZD1nLGd9X2luc2VydEFmdGVyKGcsaCx2KXtjb25zdCB5PW51bGw9PT1oP3RoaXMuX2l0SGVhZDpoLl9uZXh0O3JldHVybiBnLl9uZXh0PXksZy5fcHJldj1oLG51bGw9PT15P3RoaXMuX2l0VGFpbD1nOnkuX3ByZXY9ZyxudWxsPT09aD90aGlzLl9pdEhlYWQ9ZzpoLl9uZXh0''@;'; put 'put ''PWcsbnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHMmJih0aGlzLl9saW5rZWRSZWNvcmRzPW5ldyBkVyksdGhpcy5fbGlua2VkUmVjb3Jkcy5wdXQoZyksZy5jdXJyZW50SW5kZXg9dixnfV9yZW1vdmUoZyl7cmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKGcpKX1fdW5s''@;'; put 'put ''aW5rKGcpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZShnKTtjb25zdCBoPWcuX3ByZXYsdj1nLl9uZXh0O3JldHVybiBudWxsPT09aD90aGlzLl9pdEhlYWQ9djpoLl9uZXh0PXYsbnVsbD09PXY/dGhpcy5faXRUYWlsPWg6di5fcHJldj1o''@;'; put 'put ''LGd9X2FkZFRvTW92ZXMoZyxoKXtyZXR1cm4gZy5wcmV2aW91c0luZGV4PT09aHx8KHRoaXMuX21vdmVzVGFpbD1udWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVzSGVhZD1nOnRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPWcpLGd9X2FkZFRvUmVtb3ZhbHMoZyl7cmV0dXJuIG51''@;'; put 'put ''bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtlZFJlY29yZHM9bmV3IGRXKSx0aGlzLl91bmxpbmtlZFJlY29yZHMucHV0KGcpLGcuY3VycmVudEluZGV4PW51bGwsZy5fbmV4dFJlbW92ZWQ9bnVsbCxudWxsPT09dGhpcy5fcmVtb3ZhbHNUYWlsPyh0aGlzLl9yZW1v''@;'; put 'put ''dmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNIZWFkPWcsZy5fcHJldlJlbW92ZWQ9bnVsbCk6KGcuX3ByZXZSZW1vdmVkPXRoaXMuX3JlbW92YWxzVGFpbCx0aGlzLl9yZW1vdmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD1nKSxnfV9hZGRJZGVudGl0eUNoYW5nZShnLGgp''@;'; put 'put ''e3JldHVybiBnLml0ZW09aCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGw9PT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsP3RoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9Zzp0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9ZyxnfX1jbGFzcyBIM3tj''@;'; put 'put ''b25zdHJ1Y3RvcihnLGgpe3RoaXMuaXRlbT1nLHRoaXMudHJhY2tCeUlkPWgsdGhpcy5jdXJyZW50SW5kZXg9bnVsbCx0aGlzLnByZXZpb3VzSW5kZXg9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXZEdXA9bnVs''@;'; put 'put ''bCx0aGlzLl9uZXh0RHVwPW51bGwsdGhpcy5fcHJldlJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRNb3ZlZD1udWxsLHRoaXMuX25leHRJZGVudGl0eUNoYW5nZT1udWxsfX1jbGFzcyBncmV7Y29uc3RydWN0b3IoKXt0''@;'; put 'put ''aGlzLl9oZWFkPW51bGwsdGhpcy5fdGFpbD1udWxsfWFkZChnKXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90YWlsPWcsZy5fbmV4dER1cD1udWxsLGcuX3ByZXZEdXA9bnVsbCk6KHRoaXMuX3RhaWwuX25leHREdXA9ZyxnLl9wcmV2RHVwPXRoaXMuX3RhaWwsZy5fbmV4''@;'; put 'put ''dER1cD1udWxsLHRoaXMuX3RhaWw9Zyl9Z2V0KGcsaCl7bGV0IHY7Zm9yKHY9dGhpcy5faGVhZDtudWxsIT09djt2PXYuX25leHREdXApaWYoKG51bGw9PT1ofHxoPD12LmN1cnJlbnRJbmRleCkmJk9iamVjdC5pcyh2LnRyYWNrQnlJZCxnKSlyZXR1cm4gdjtyZXR1cm4gbnVsbH1yZW1vdmUo''@;'; put 'put ''Zyl7Y29uc3QgaD1nLl9wcmV2RHVwLHY9Zy5fbmV4dER1cDtyZXR1cm4gbnVsbD09PWg/dGhpcy5faGVhZD12OmguX25leHREdXA9dixudWxsPT09dj90aGlzLl90YWlsPWg6di5fcHJldkR1cD1oLG51bGw9PT10aGlzLl9oZWFkfX1jbGFzcyBkV3tjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5l''@;'; put 'put ''dyBNYXB9cHV0KGcpe2NvbnN0IGg9Zy50cmFja0J5SWQ7bGV0IHY9dGhpcy5tYXAuZ2V0KGgpO3Z8fCh2PW5ldyBncmUsdGhpcy5tYXAuc2V0KGgsdikpLHYuYWRkKGcpfWdldChnLGgpe2NvbnN0IHk9dGhpcy5tYXAuZ2V0KGcpO3JldHVybiB5P3kuZ2V0KGcsaCk6bnVsbH1yZW1vdmUoZyl7''@;'; put 'put ''Y29uc3QgaD1nLnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAuZ2V0KGgpLnJlbW92ZShnKSYmdGhpcy5tYXAuZGVsZXRlKGgpLGd9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9Y2xlYXIoKXt0aGlzLm1hcC5jbGVhcigpfX1mdW5jdGlvbiBSRihkLGcsaCl7Y29uc3Qg''@;'; put 'put ''dj1kLnByZXZpb3VzSW5kZXg7aWYobnVsbD09PXYpcmV0dXJuIHY7bGV0IHk9MDtyZXR1cm4gaCYmdjxoLmxlbmd0aCYmKHk9aFt2XSksditnK3l9Y2xhc3MgVlR7Y29uc3RydWN0b3IoKXt9c3VwcG9ydHMoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBNYXB8fEM2KGcpfWNyZWF0ZSgpe3JldHVy''@;'; put 'put ''biBuZXcgalR9fWNsYXNzIGpUe2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVjb3Jkcz1uZXcgTWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hhbmdlc1RhaWw9''@;'; put 'put ''bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfWdldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5f''@;'; put 'put ''Y2hhbmdlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR9Zm9yRWFjaEl0ZW0oZyl7bGV0IGg7Zm9yKGg9dGhpcy5fbWFwSGVhZDtudWxsIT09aDtoPWguX25leHQpZyhoKX1mb3JFYWNoUHJldmlvdXNJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxs''@;'; put 'put ''IT09aDtoPWguX25leHRQcmV2aW91cylnKGgpfWZvckVhY2hDaGFuZ2VkSXRlbShnKXtsZXQgaDtmb3IoaD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09aDtoPWguX25leHRDaGFuZ2VkKWcoaCl9Zm9yRWFjaEFkZGVkSXRlbShnKXtsZXQgaDtmb3IoaD10aGlzLl9hZGRpdGlvbnNIZWFkO251''@;'; put 'put ''bGwhPT1oO2g9aC5fbmV4dEFkZGVkKWcoaCl9Zm9yRWFjaFJlbW92ZWRJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09aDtoPWguX25leHRSZW1vdmVkKWcoaCl9ZGlmZihnKXtpZihnKXtpZighKGcgaW5zdGFuY2VvZiBNYXB8fEM2KGcpKSl0aHJvdyBuZXcg''@;'; put 'put ''cXQoOTAwLCExKX1lbHNlIGc9bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayhnKT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKGcpe3RoaXMuX3Jlc2V0KCk7bGV0IGg9dGhpcy5fbWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2goZywodix5KT0+e2lm''@;'; put 'put ''KGgmJmgua2V5PT09eSl0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhoLHYpLHRoaXMuX2FwcGVuZEFmdGVyPWgsaD1oLl9uZXh0O2Vsc2V7Y29uc3QgQz10aGlzLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleSh5LHYpO2g9dGhpcy5faW5zZXJ0QmVmb3JlT3JBcHBlbmQoaCxDKX19KSxoKXtoLl9w''@;'; put 'put ''cmV2JiYoaC5fcHJldi5fbmV4dD1udWxsKSx0aGlzLl9yZW1vdmFsc0hlYWQ9aDtmb3IobGV0IHY9aDtudWxsIT09djt2PXYuX25leHRSZW1vdmVkKXY9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1udWxsKSx0aGlzLl9yZWNvcmRzLmRlbGV0ZSh2LmtleSksdi5fbmV4dFJlbW92''@;'; put 'put ''ZWQ9di5fbmV4dCx2LnByZXZpb3VzVmFsdWU9di5jdXJyZW50VmFsdWUsdi5jdXJyZW50VmFsdWU9bnVsbCx2Ll9wcmV2PW51bGwsdi5fbmV4dD1udWxsfXJldHVybiB0aGlzLl9jaGFuZ2VzVGFpbCYmKHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD1udWxsKSx0aGlzLl9hZGRpdGlv''@;'; put 'put ''bnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLHRoaXMuaXNEaXJ0eX1faW5zZXJ0QmVmb3JlT3JBcHBlbmQoZyxoKXtpZihnKXtjb25zdCB2PWcuX3ByZXY7cmV0dXJuIGguX25leHQ9ZyxoLl9wcmV2PXYsZy5fcHJldj1oLHYmJih2Ll9uZXh0PWgpLGc9PT10''@;'; put 'put ''aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1oKSx0aGlzLl9hcHBlbmRBZnRlcj1nLGd9cmV0dXJuIHRoaXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1oLGguX3ByZXY9dGhpcy5fYXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9aCx0aGlzLl9hcHBlbmRBZnRl''@;'; put 'put ''cj1oLG51bGx9X2dldE9yQ3JlYXRlUmVjb3JkRm9yS2V5KGcsaCl7aWYodGhpcy5fcmVjb3Jkcy5oYXMoZykpe2NvbnN0IHk9dGhpcy5fcmVjb3Jkcy5nZXQoZyk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoeSxoKTtjb25zdCBDPXkuX3ByZXYsST15Ll9uZXh0O3JldHVybiBDJiYoQy5fbmV4''@;'; put 'put ''dD1JKSxJJiYoSS5fcHJldj1DKSx5Ll9uZXh0PW51bGwseS5fcHJldj1udWxsLHl9Y29uc3Qgdj1uZXcgWlQoZyk7cmV0dXJuIHRoaXMuX3JlY29yZHMuc2V0KGcsdiksdi5jdXJyZW50VmFsdWU9aCx0aGlzLl9hZGRUb0FkZGl0aW9ucyh2KSx2fV9yZXNldCgpe2lmKHRoaXMuaXNEaXJ0eSl7''@;'; put 'put ''bGV0IGc7Zm9yKHRoaXMuX3ByZXZpb3VzTWFwSGVhZD10aGlzLl9tYXBIZWFkLGc9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT1nO2c9Zy5fbmV4dClnLl9uZXh0UHJldmlvdXM9Zy5fbmV4dDtmb3IoZz10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZztnPWcuX25leHRDaGFuZ2VkKWcu''@;'; put 'put ''cHJldmlvdXNWYWx1ZT1nLmN1cnJlbnRWYWx1ZTtmb3IoZz10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPWc7Zz1nLl9uZXh0QWRkZWQpZy5wcmV2aW91c1ZhbHVlPWcuY3VycmVudFZhbHVlO3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25z''@;'; put 'put ''SGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGx9fV9tYXliZUFkZFRvQ2hhbmdlcyhnLGgpe09iamVjdC5pcyhoLGcuY3VycmVudFZhbHVlKXx8KGcucHJldmlvdXNWYWx1ZT1nLmN1cnJlbnRWYWx1ZSxnLmN1cnJlbnRWYWx1ZT1oLHRoaXMuX2Fk''@;'; put 'put ''ZFRvQ2hhbmdlcyhnKSl9X2FkZFRvQWRkaXRpb25zKGcpe251bGw9PT10aGlzLl9hZGRpdGlvbnNIZWFkP3RoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1nOih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9Zyx0aGlzLl9hZGRpdGlvbnNUYWlsPWcpfV9hZGRU''@;'; put 'put ''b0NoYW5nZXMoZyl7bnVsbD09PXRoaXMuX2NoYW5nZXNIZWFkP3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPWc6KHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD1nLHRoaXMuX2NoYW5nZXNUYWlsPWcpfV9mb3JFYWNoKGcsaCl7ZyBpbnN0YW5jZW9mIE1hcD9nLmZv''@;'; put 'put ''ckVhY2goaCk6T2JqZWN0LmtleXMoZykuZm9yRWFjaCh2PT5oKGdbdl0sdikpfX1jbGFzcyBaVHtjb25zdHJ1Y3RvcihnKXt0aGlzLmtleT1nLHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1u''@;'; put 'put ''dWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fWZ1bmN0aW9uIF9DKCl7cmV0dXJuIG5ldyBfZihbbmV3IGhXXSl9bGV0IF9mPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhp''@;'; put 'put ''cy5mYWN0b3JpZXM9aH1zdGF0aWMgY3JlYXRlKGgsdil7aWYobnVsbCE9dil7Y29uc3QgeT12LmZhY3Rvcmllcy5zbGljZSgpO2g9aC5jb25jYXQoeSl9cmV0dXJuIG5ldyBkKGgpfXN0YXRpYyBleHRlbmQoaCl7cmV0dXJue3Byb3ZpZGU6ZCx1c2VGYWN0b3J5OnY9PmQuY3JlYXRlKGgsdnx8''@;'; put 'put ''X0MoKSksZGVwczpbW2QsbmV3IHlkLG5ldyBJNF1dfX1maW5kKGgpe2NvbnN0IHY9dGhpcy5mYWN0b3JpZXMuZmluZCh5PT55LnN1cHBvcnRzKGgpKTtpZihudWxsIT12KXJldHVybiB2O3Rocm93IG5ldyBxdCg5MDEsITEpfX1yZXR1cm4gZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLHByb3Zp''@;'; put 'put ''ZGVkSW46InJvb3QiLGZhY3Rvcnk6X0N9KSxkfSkoKTtmdW5jdGlvbiBwVygpe3JldHVybiBuZXcgQTcoW25ldyBWVF0pfWxldCBBNz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZmFjdG9yaWVzPWh9c3RhdGljIGNyZWF0ZShoLHYpe2lmKHYpe2NvbnN0IHk9di5mYWN0b3Jp''@;'; put 'put ''ZXMuc2xpY2UoKTtoPWguY29uY2F0KHkpfXJldHVybiBuZXcgZChoKX1zdGF0aWMgZXh0ZW5kKGgpe3JldHVybntwcm92aWRlOmQsdXNlRmFjdG9yeTp2PT5kLmNyZWF0ZShoLHZ8fHBXKCkpLGRlcHM6W1tkLG5ldyB5ZCxuZXcgSTRdXX19ZmluZChoKXtjb25zdCB2PXRoaXMuZmFjdG9yaWVz''@;'; put 'put ''LmZpbmQoeT0+eS5zdXBwb3J0cyhoKSk7aWYodilyZXR1cm4gdjt0aHJvdyBuZXcgcXQoOTAxLCExKX19cmV0dXJuIGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OnBXfSksZH0pKCk7Y29uc3QgQXJlPWtGKG51bGwsImNvcmUiLFtdKTtsZXQgbVc9''@;'; put 'put ''KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKHlDKSl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7fSksZH0pKCk7ZnVuY3Rpb24gSDYoZCl7cmV0dXJuImJvb2xl''@;'; put 'put ''YW4iPT10eXBlb2YgZD9kOm51bGwhPWQmJiJmYWxzZSIhPT1kfWxldCB6VD1udWxsO2Z1bmN0aW9uIGVwKCl7cmV0dXJuIHpUfWNvbnN0IHVzPW5ldyBPdCgiRG9jdW1lbnRUb2tlbiIpO2xldCBCRj0oKCk9PntjbGFzcyBke2hpc3RvcnlHbyhoKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBs''@;'; put 'put ''ZW1lbnRlZCIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24geVcoKXtyZXR1cm4gRWkoUEYpfSgpfSxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9''@;'; put 'put ''KSxkfSkoKTtjb25zdCBHVD1uZXcgT3QoIkxvY2F0aW9uIEluaXRpYWxpemVkIik7bGV0IFBGPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBCRntjb25zdHJ1Y3RvcihoKXtzdXBlcigpLHRoaXMuX2RvYz1oLHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249d2luZG93LmxvY2F0aW9u''@;'; put 'put ''LHRoaXMuX2hpc3Rvcnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIGVwKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKGgpe2NvbnN0IHY9ZXAoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiB2LmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixoLCExKSwoKT0+di5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsaCl9b25IYXNoQ2hhbmdlKGgpe2NvbnN0IHY9ZXAoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiB2LmFkZEV2ZW50TGlzdGVu''@;'; put 'put ''ZXIoImhhc2hjaGFuZ2UiLGgsITEpLCgpPT52LnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLGgpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaHJlZn1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wcm90b2NvbH1nZXQgaG9zdG5hbWUoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX1nZXQgcG9ydCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucGF0aG5hbWV9Z2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH1nZXQgaGFzaCgpe3JldHVy''@;'; put 'put ''biB0aGlzLmxvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKGgpe3RoaXMubG9jYXRpb24ucGF0aG5hbWU9aH1wdXNoU3RhdGUoaCx2LHkpe3dXKCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUoaCx2LHkpOnRoaXMubG9jYXRpb24uaGFzaD15fXJlcGxhY2VTdGF0ZShoLHYseSl7d1coKT90aGlz''@;'; put 'put ''Ll9oaXN0b3J5LnJlcGxhY2VTdGF0ZShoLHYseSk6dGhpcy5sb2NhdGlvbi5oYXNoPXl9Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28oaD0wKXt0aGlzLl9oaXN0b3J5LmdvKGgpfWdldFN0YXRlKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX2hpc3Rvcnkuc3RhdGV9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKHVzKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGJXKCl7cmV0dXJuIG5ldyBQRihFaSh1cykp''@;'; put 'put ''fSgpfSxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9KSxkfSkoKTtmdW5jdGlvbiB3Vygpe3JldHVybiEhd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlfWZ1bmN0aW9uIEZGKGQsZyl7aWYoMD09ZC5sZW5ndGgpcmV0dXJuIGc7aWYoMD09Zy5sZW5ndGgpcmV0dXJuIGQ7bGV0IGg9MDtyZXR1cm4gZC5l''@;'; put 'put ''bmRzV2l0aCgiLyIpJiZoKyssZy5zdGFydHNXaXRoKCIvIikmJmgrKywyPT1oP2QrZy5zdWJzdHJpbmcoMSk6MT09aD9kK2c6ZCsiLyIrZ31mdW5jdGlvbiBfVyhkKXtjb25zdCBnPWQubWF0Y2goLyN8XD98JC8pLGg9ZyYmZy5pbmRleHx8ZC5sZW5ndGg7cmV0dXJuIGQuc2xpY2UoMCxoLSgi''@;'; put 'put ''LyI9PT1kW2gtMV0/MTowKSkrZC5zbGljZShoKX1mdW5jdGlvbiB0cChkKXtyZXR1cm4gZCYmIj8iIT09ZFswXT8iPyIrZDpkfWxldCBBNT0oKCk9PntjbGFzcyBke2hpc3RvcnlHbyhoKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gQzIoa1cpfSxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0IENXPW5ldyBPdCgiYXBwQmFzZUhyZWYiKTtsZXQga1c9KCgpPT57Y2xhc3MgZCBl''@;'; put 'put ''eHRlbmRzIEE1e2NvbnN0cnVjdG9yKGgsdil7dmFyIHksQyxJO3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1oLHRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zPVtdLHRoaXMuX2Jhc2VIcmVmPW51bGwhPT0oST1udWxsIT09KHk9bnVsbCE9dj92OnRoaXMuX3BsYXRmb3JtTG9jYXRpb24u''@;'; put 'put ''Z2V0QmFzZUhyZWZGcm9tRE9NKCkpJiZ2b2lkIDAhPT15P3k6bnVsbD09PShDPUMyKHVzKS5sb2NhdGlvbil8fHZvaWQgMD09PUM/dm9pZCAwOkMub3JpZ2luKSYmdm9pZCAwIT09ST9JOiIifW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7KXRoaXMu''@;'; put 'put ''X3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZShoKXt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZShoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZShoKSl9Z2V0QmFzZUhyZWYoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fYmFzZUhyZWZ9cHJlcGFyZUV4dGVybmFsVXJsKGgpe3JldHVybiBGRih0aGlzLl9iYXNlSHJlZixoKX1wYXRoKGg9ITEpe2NvbnN0IHY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSt0cCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCkseT10aGlzLl9wbGF0''@;'; put 'put ''Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIHkmJmg/YCR7dn0ke3l9YDp2fXB1c2hTdGF0ZShoLHYseSxDKXtjb25zdCBJPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKHkrdHAoQykpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKGgsdixJKX1yZXBsYWNlU3RhdGUoaCx2LHksQyl7''@;'; put 'put ''Y29uc3QgST10aGlzLnByZXBhcmVFeHRlcm5hbFVybCh5K3RwKEMpKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZShoLHYsSSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX1n''@;'; put 'put ''ZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRlKCl9aGlzdG9yeUdvKGg9MCl7dmFyIHYseTtudWxsPT09KHk9KHY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbikuaGlzdG9yeUdvKXx8dm9pZCAwPT09eXx8eS5jYWxsKHYsaCl9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKEJGKSxFaShDVyw4KSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCksU3JlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBBNXtjb25zdHJ1Y3RvcihoLHYp''@;'; put 'put ''e3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1oLHRoaXMuX2Jhc2VIcmVmPSIiLHRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zPVtdLG51bGwhPXYmJih0aGlzLl9iYXNlSHJlZj12KX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9y''@;'; put 'put ''ZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUoaCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUoaCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UoaCkpfWdldEJhc2VIcmVmKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX2Jhc2VIcmVmfXBhdGgoaD0hMSl7bGV0IHY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBudWxsPT12JiYodj0iIyIpLHYubGVuZ3RoPjA/di5zdWJzdHJpbmcoMSk6dn1wcmVwYXJlRXh0ZXJuYWxVcmwoaCl7Y29uc3Qgdj1GRih0aGlzLl9iYXNlSHJlZixoKTty''@;'; put 'put ''ZXR1cm4gdi5sZW5ndGg+MD8iIyIrdjp2fXB1c2hTdGF0ZShoLHYseSxDKXtsZXQgST10aGlzLnByZXBhcmVFeHRlcm5hbFVybCh5K3RwKEMpKTswPT1JLmxlbmd0aCYmKEk9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUo''@;'; put 'put ''aCx2LEkpfXJlcGxhY2VTdGF0ZShoLHYseSxDKXtsZXQgST10aGlzLnByZXBhcmVFeHRlcm5hbFVybCh5K3RwKEMpKTswPT1JLmxlbmd0aCYmKEk9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUoaCx2LEkpfWZvcndh''@;'; put 'put ''cmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRTdGF0ZSgpfWhpc3RvcnlHbyhoPTApe3ZhciB2LHk7bnVsbD09PSh5PSh2PXRo''@;'; put 'put ''aXMuX3BsYXRmb3JtTG9jYXRpb24pLmhpc3RvcnlHbyl8fHZvaWQgMD09PXl8fHkuY2FsbCh2LGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShCRiksRWkoQ1csOCkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3''@;'; put 'put ''NWZhY30pLGR9KSgpLFZkPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fc3ViamVjdD1uZXcgZm4sdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3k9aDtjb25zdCB2PXRoaXMu''@;'; put 'put ''X2xvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTt0aGlzLl9iYXNlSHJlZj1fVyhIRih2KSksdGhpcy5fbG9jYXRpb25TdHJhdGVneS5vblBvcFN0YXRlKHk9Pnt0aGlzLl9zdWJqZWN0LmVtaXQoe3VybDp0aGlzLnBhdGgoITApLHBvcDohMCxzdGF0ZTp5LnN0YXRlLHR5cGU6eS50eXBl''@;'; put 'put ''fSl9KX1uZ09uRGVzdHJveSgpe3ZhciBoO251bGw9PT0oaD10aGlzLl91cmxDaGFuZ2VTdWJzY3JpcHRpb24pfHx2b2lkIDA9PT1ofHxoLnVuc3Vic2NyaWJlKCksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdfXBhdGgoaD0hMSl7cmV0dXJuIHRoaXMubm9ybWFsaXplKHRoaXMuX2xvY2F0''@;'; put 'put ''aW9uU3RyYXRlZ3kucGF0aChoKSl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fbG9jYXRpb25TdHJhdGVneS5nZXRTdGF0ZSgpfWlzQ3VycmVudFBhdGhFcXVhbFRvKGgsdj0iIil7cmV0dXJuIHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZShoK3RwKHYpKX1ub3JtYWxpemUoaCl7cmV0dXJu''@;'; put 'put ''IGQuc3RyaXBUcmFpbGluZ1NsYXNoKGZ1bmN0aW9uIFNXKGQsZyl7cmV0dXJuIGQmJmcuc3RhcnRzV2l0aChkKT9nLnN1YnN0cmluZyhkLmxlbmd0aCk6Z30odGhpcy5fYmFzZUhyZWYsSEYoaCkpKX1wcmVwYXJlRXh0ZXJuYWxVcmwoaCl7cmV0dXJuIGgmJiIvIiE9PWhbMF0mJihoPSIvIito''@;'; put 'put ''KSx0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnByZXBhcmVFeHRlcm5hbFVybChoKX1nbyhoLHY9IiIseT1udWxsKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnB1c2hTdGF0ZSh5LCIiLGgsdiksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGgr''@;'; put 'put ''dHAodikpLHkpfXJlcGxhY2VTdGF0ZShoLHY9IiIseT1udWxsKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnJlcGxhY2VTdGF0ZSh5LCIiLGgsdiksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGgrdHAodikpLHkpfWZvcndhcmQoKXt0aGlz''@;'; put 'put ''Ll9sb2NhdGlvblN0cmF0ZWd5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5iYWNrKCl9aGlzdG9yeUdvKGg9MCl7dmFyIHYseTtudWxsPT09KHk9KHY9dGhpcy5fbG9jYXRpb25TdHJhdGVneSkuaGlzdG9yeUdvKXx8dm9pZCAwPT09eXx8eS5jYWxsKHYsaCl9b25V''@;'; put 'put ''cmxDaGFuZ2UoaCl7cmV0dXJuIHRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKGgpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZSh2PT57dGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHYudXJs''@;'; put 'put ''LHYuc3RhdGUpfSkpLCgpPT57dmFyIHY7Y29uc3QgeT10aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuaW5kZXhPZihoKTt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuc3BsaWNlKHksMSksMD09PXRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5sZW5ndGgmJihudWxsPT09KHY9dGhpcy5fdXJsQ2hh''@;'; put 'put ''bmdlU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dnx8di51bnN1YnNjcmliZSgpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj1udWxsKX19X25vdGlmeVVybENoYW5nZUxpc3RlbmVycyhoPSIiLHYpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5mb3JFYWNoKHk9PnkoaCx2KSl9c3Vic2Ny''@;'; put 'put ''aWJlKGgsdix5KXtyZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe25leHQ6aCxlcnJvcjp2LGNvbXBsZXRlOnl9KX19cmV0dXJuIGQubm9ybWFsaXplUXVlcnlQYXJhbXM9dHAsZC5qb2luV2l0aFNsYXNoPUZGLGQuc3RyaXBUcmFpbGluZ1NsYXNoPV9XLGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoQTUpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gTjMoKXtyZXR1cm4gbmV3IFZkKEVpKEE1KSl9KCl9LHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7ZnVuY3Rpb24gSEYoZCl7''@;'; put 'put ''cmV0dXJuIGQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIpfXZhciBIMj0oKCk9PigoSDI9SDJ8fHt9KVtIMi5Gb3JtYXQ9MF09IkZvcm1hdCIsSDJbSDIuU3RhbmRhbG9uZT0xXT0iU3RhbmRhbG9uZSIsSDIpKSgpLHBsPSgoKT0+KChwbD1wbHx8e30pW3BsLk5hcnJvdz0wXT0iTmFycm93''@;'; put 'put ''IixwbFtwbC5BYmJyZXZpYXRlZD0xXT0iQWJicmV2aWF0ZWQiLHBsW3BsLldpZGU9Ml09IldpZGUiLHBsW3BsLlNob3J0PTNdPSJTaG9ydCIscGwpKSgpLE4yPSgoKT0+KChOMj1OMnx8e30pW04yLlNob3J0PTBdPSJTaG9ydCIsTjJbTjIuTWVkaXVtPTFdPSJNZWRpdW0iLE4yW04yLkxvbmc9''@;'; put 'put ''Ml09IkxvbmciLE4yW04yLkZ1bGw9M109IkZ1bGwiLE4yKSkoKTtmdW5jdGlvbiBDQyhkLGcsaCl7Y29uc3Qgdj1vYyhkKSxDPVYzKFt2W1NvLkRheXNGb3JtYXRdLHZbU28uRGF5c1N0YW5kYWxvbmVdXSxnKTtyZXR1cm4gVjMoQyxoKX1mdW5jdGlvbiBWRihkLGcsaCl7Y29uc3Qgdj1vYyhk''@;'; put 'put ''KSxDPVYzKFt2W1NvLk1vbnRoc0Zvcm1hdF0sdltTby5Nb250aHNTdGFuZGFsb25lXV0sZyk7cmV0dXJuIFYzKEMsaCl9ZnVuY3Rpb24gVjMoZCxnKXtmb3IobGV0IGg9ZztoPi0xO2gtLSlpZih2b2lkIDAhPT1kW2hdKXJldHVybiBkW2hdO3Rocm93IG5ldyBFcnJvcigiTG9jYWxlIGRhdGEg''@;'; put 'put ''QVBJOiBsb2NhbGUgZGF0YSB1bmRlZmluZWQiKX1mdW5jdGlvbiBiNyhkLGcpe2c9ZW5jb2RlVVJJQ29tcG9uZW50KGcpO2Zvcihjb25zdCBoIG9mIGQuc3BsaXQoIjsiKSl7Y29uc3Qgdj1oLmluZGV4T2YoIj0iKSxbeSxDXT0tMT09dj9baCwiIl06W2guc2xpY2UoMCx2KSxoLnNsaWNlKHYr''@;'; put 'put ''MSldO2lmKHkudHJpbSgpPT09ZylyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KEMpfXJldHVybiBudWxsfWxldCBFMT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuX2l0ZXJhYmxlRGlmZmVycz1oLHRoaXMuX2tleVZhbHVlRGlmZmVycz12LHRoaXMuX25nRWw9eSx0''@;'; put 'put ''aGlzLl9yZW5kZXJlcj1DLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9pbml0aWFsQ2xhc3Nlcz1bXSx0aGlzLl9yYXdDbGFzcz1udWxsfXNldCBrbGFzcyhoKXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2Vz''@;'; put 'put ''KSx0aGlzLl9pbml0aWFsQ2xhc3Nlcz0ic3RyaW5nIj09dHlwZW9mIGg/aC5zcGxpdCgvXHMrLyk6W10sdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpfXNldCBuZ0NsYXNzKGgpe3RoaXMuX3JlbW92ZUNs''@;'; put 'put ''YXNzZXModGhpcy5fcmF3Q2xhc3MpLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faXRlcmFibGVEaWZmZXI9bnVsbCx0aGlzLl9rZXlWYWx1ZURpZmZlcj1udWxsLHRoaXMuX3Jhd0NsYXNzPSJzdHJpbmciPT10eXBlb2YgaD9oLnNwbGl0KC9ccysvKTpo''@;'; put 'put ''LHRoaXMuX3Jhd0NsYXNzJiYoZTcodGhpcy5fcmF3Q2xhc3MpP3RoaXMuX2l0ZXJhYmxlRGlmZmVyPXRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKTp0aGlzLl9rZXlWYWx1ZURpZmZlcj10aGlzLl9rZXlWYWx1ZURpZmZlcnMuZmluZCh0aGlzLl9y''@;'; put 'put ''YXdDbGFzcykuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2l0ZXJhYmxlRGlmZmVyKXtjb25zdCBoPXRoaXMuX2l0ZXJhYmxlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO2gmJnRoaXMuX2FwcGx5SXRlcmFibGVDaGFuZ2VzKGgpfWVsc2UgaWYodGhpcy5fa2V5VmFsdWVEaWZm''@;'; put 'put ''ZXIpe2NvbnN0IGg9dGhpcy5fa2V5VmFsdWVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7aCYmdGhpcy5fYXBwbHlLZXlWYWx1ZUNoYW5nZXMoaCl9fV9hcHBseUtleVZhbHVlQ2hhbmdlcyhoKXtoLmZvckVhY2hBZGRlZEl0ZW0odj0+dGhpcy5fdG9nZ2xlQ2xhc3Modi5rZXksdi5jdXJy''@;'; put 'put ''ZW50VmFsdWUpKSxoLmZvckVhY2hDaGFuZ2VkSXRlbSh2PT50aGlzLl90b2dnbGVDbGFzcyh2LmtleSx2LmN1cnJlbnRWYWx1ZSkpLGguZm9yRWFjaFJlbW92ZWRJdGVtKHY9Pnt2LnByZXZpb3VzVmFsdWUmJnRoaXMuX3RvZ2dsZUNsYXNzKHYua2V5LCExKX0pfV9hcHBseUl0ZXJhYmxlQ2hh''@;'; put 'put ''bmdlcyhoKXtoLmZvckVhY2hBZGRlZEl0ZW0odj0+e2lmKCJzdHJpbmciIT10eXBlb2Ygdi5pdGVtKXRocm93IG5ldyBFcnJvcihgTmdDbGFzcyBjYW4gb25seSB0b2dnbGUgQ1NTIGNsYXNzZXMgZXhwcmVzc2VkIGFzIHN0cmluZ3MsIGdvdCAke3ZuKHYuaXRlbSl9YCk7dGhpcy5fdG9nZ2xl''@;'; put 'put ''Q2xhc3Modi5pdGVtLCEwKX0pLGguZm9yRWFjaFJlbW92ZWRJdGVtKHY9PnRoaXMuX3RvZ2dsZUNsYXNzKHYuaXRlbSwhMSkpfV9hcHBseUNsYXNzZXMoaCl7aCYmKEFycmF5LmlzQXJyYXkoaCl8fGggaW5zdGFuY2VvZiBTZXQ/aC5mb3JFYWNoKHY9PnRoaXMuX3RvZ2dsZUNsYXNzKHYsITAp''@;'; put 'put ''KTpPYmplY3Qua2V5cyhoKS5mb3JFYWNoKHY9PnRoaXMuX3RvZ2dsZUNsYXNzKHYsISFoW3ZdKSkpfV9yZW1vdmVDbGFzc2VzKGgpe2gmJihBcnJheS5pc0FycmF5KGgpfHxoIGluc3RhbmNlb2YgU2V0P2guZm9yRWFjaCh2PT50aGlzLl90b2dnbGVDbGFzcyh2LCExKSk6T2JqZWN0LmtleXMo''@;'; put 'put ''aCkuZm9yRWFjaCh2PT50aGlzLl90b2dnbGVDbGFzcyh2LCExKSkpfV90b2dnbGVDbGFzcyhoLHYpeyhoPWgudHJpbSgpKSYmaC5zcGxpdCgvXHMrL2cpLmZvckVhY2goeT0+e3Y/dGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHkpOnRoaXMuX3JlbmRl''@;'; put 'put ''cmVyLnJlbW92ZUNsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCx5KX0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfZiksS3QoQTcpLEt0KF9vKSxLdChEYSkpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJu''@;'; put 'put ''Z0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9LHN0YW5kYWxvbmU6ITB9KSxkfSkoKTtjbGFzcyBZcmV7Y29uc3RydWN0b3IoZyxoLHYseSl7dGhpcy4kaW1wbGljaXQ9Zyx0aGlzLm5nRm9yT2Y9aCx0aGlzLmluZGV4PXYsdGhp''@;'; put 'put ''cy5jb3VudD15fWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQgbGFzdCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19bGV0IHFsPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX3ZpZXdDb250YWluZXI9aCx0aGlzLl90ZW1wbGF0ZT12LHRoaXMuX2RpZmZlcnM9eSx0aGlzLl9uZ0Zvck9mPW51bGwsdGhpcy5fbmdGb3JPZkRpcnR5PSEwLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ0Zvck9mKGgpe3RoaXMuX25nRm9y''@;'; put 'put ''T2Y9aCx0aGlzLl9uZ0Zvck9mRGlydHk9ITB9c2V0IG5nRm9yVHJhY2tCeShoKXt0aGlzLl90cmFja0J5Rm49aH1nZXQgbmdGb3JUcmFja0J5KCl7cmV0dXJuIHRoaXMuX3RyYWNrQnlGbn1zZXQgbmdGb3JUZW1wbGF0ZShoKXtoJiYodGhpcy5fdGVtcGxhdGU9aCl9bmdEb0NoZWNrKCl7aWYo''@;'; put 'put ''dGhpcy5fbmdGb3JPZkRpcnR5KXt0aGlzLl9uZ0Zvck9mRGlydHk9ITE7Y29uc3QgaD10aGlzLl9uZ0Zvck9mOyF0aGlzLl9kaWZmZXImJmgmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKGgpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSkpfWlmKHRoaXMuX2RpZmZlcil7Y29u''@;'; put 'put ''c3QgaD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ0Zvck9mKTtoJiZ0aGlzLl9hcHBseUNoYW5nZXMoaCl9fV9hcHBseUNoYW5nZXMoaCl7Y29uc3Qgdj10aGlzLl92aWV3Q29udGFpbmVyO2guZm9yRWFjaE9wZXJhdGlvbigoeSxDLEkpPT57aWYobnVsbD09eS5wcmV2aW91c0luZGV4KXYu''@;'; put 'put ''Y3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyBZcmUoeS5pdGVtLHRoaXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT1JP3ZvaWQgMDpJKTtlbHNlIGlmKG51bGw9PUkpdi5yZW1vdmUobnVsbD09PUM/dm9pZCAwOkMpO2Vsc2UgaWYobnVsbCE9PUMpe2NvbnN0IGo9di5nZXQo''@;'; put 'put ''Qyk7di5tb3ZlKGosSSksUFcoaix5KX19KTtmb3IobGV0IHk9MCxDPXYubGVuZ3RoO3k8Qzt5Kyspe2NvbnN0IGo9di5nZXQoeSkuY29udGV4dDtqLmluZGV4PXksai5jb3VudD1DLGoubmdGb3JPZj10aGlzLl9uZ0Zvck9mfWguZm9yRWFjaElkZW50aXR5Q2hhbmdlKHk9PntQVyh2LmdldCh5''@;'; put 'put ''LmN1cnJlbnRJbmRleCkseSl9KX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChoLHYpe3JldHVybiEwfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChNciksS3QoVm4pLEt0KF9mKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0''@;'; put 'put ''b3JzOltbIiIsIm5nRm9yIiwiIiwibmdGb3JPZiIsIiJdXSxpbnB1dHM6e25nRm9yT2Y6Im5nRm9yT2YiLG5nRm9yVHJhY2tCeToibmdGb3JUcmFja0J5IixuZ0ZvclRlbXBsYXRlOiJuZ0ZvclRlbXBsYXRlIn0sc3RhbmRhbG9uZTohMH0pLGR9KSgpO2Z1bmN0aW9uIFBXKGQsZyl7ZC5jb250''@;'; put 'put ''ZXh0LiRpbXBsaWNpdD1nLml0ZW19bGV0IEJvPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLl92aWV3Q29udGFpbmVyPWgsdGhpcy5fY29udGV4dD1uZXcgUXJlLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj1udWxsLHRoaXMuX3Ro''@;'; put 'put ''ZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWY9dn1zZXQgbmdJZihoKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD10aGlzLl9jb250ZXh0Lm5nSWY9aCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZUaGVuKGgpe0ZXKCJuZ0lmVGhl''@;'; put 'put ''biIsaCksdGhpcy5fdGhlblRlbXBsYXRlUmVmPWgsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZFbHNlKGgpe0ZXKCJuZ0lmRWxzZSIsaCksdGhpcy5fZWxzZVRlbXBsYXRlUmVmPWgsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVW''@;'; put 'put ''aWV3KCl9X3VwZGF0ZVZpZXcoKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD90aGlzLl90aGVuVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZiYmKHRoaXMuX3RoZW5WaWV3UmVmPXRoaXMuX3Zp''@;'; put 'put ''ZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RoZW5UZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpOnRoaXMuX2Vsc2VWaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmJiYo''@;'; put 'put ''dGhpcy5fZWxzZVZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fZWxzZVRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSl9c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoaCx2KXtyZXR1cm4hMH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXIpLEt0KFZuKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nSWYiLCIiXV0saW5wdXRzOntuZ0lmOiJuZ0lmIixuZ0lmVGhlbjoibmdJZlRoZW4iLG5nSWZFbHNlOiJuZ0lmRWxzZSJ9LHN0YW5kYWxvbmU6ITB9''@;'; put 'put ''KSxkfSkoKTtjbGFzcyBRcmV7Y29uc3RydWN0b3IoKXt0aGlzLiRpbXBsaWNpdD1udWxsLHRoaXMubmdJZj1udWxsfX1mdW5jdGlvbiBGVyhkLGcpe2lmKGcmJiFnLmNyZWF0ZUVtYmVkZGVkVmlldyl0aHJvdyBuZXcgRXJyb3IoYCR7ZH0gbXVzdCBiZSBhIFRlbXBsYXRlUmVmLCBidXQgcmVj''@;'; put 'put ''ZWl2ZWQgJyR7dm4oZyl9Jy5gKX1jbGFzcyBYRntjb25zdHJ1Y3RvcihnLGgpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9Zyx0aGlzLl90ZW1wbGF0ZVJlZj1oLHRoaXMuX2NyZWF0ZWQ9ITF9Y3JlYXRlKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVt''@;'; put 'put ''YmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9ZGVzdHJveSgpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfWVuZm9yY2VTdGF0ZShnKXtnJiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiFnJiZ0aGlzLl9jcmVhdGVkJiZ0aGlzLmRlc3Ry''@;'; put 'put ''b3koKX19bGV0IFpkPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXNldCBuZ1N3aXRjaChoKXt0aGlzLl9uZ1N3aXRjaD1o''@;'; put 'put ''LDA9PT10aGlzLl9jYXNlQ291bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQoaCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3Mu''@;'; put 'put ''cHVzaChoKX1fbWF0Y2hDYXNlKGgpe2NvbnN0IHY9aD09dGhpcy5fbmdTd2l0Y2g7cmV0dXJuIHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hlZHx8dix0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9j''@;'; put 'put ''YXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RDYXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLHZ9X3VwZGF0ZURlZmF1bHRDYXNlcyhoKXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJmgh''@;'; put 'put ''PT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9aDtmb3IobGV0IHY9MDt2PHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7disrKXRoaXMuX2RlZmF1bHRWaWV3c1t2XS5lbmZvcmNlU3RhdGUoaCl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5l''@;'; put 'put ''dyhofHxkKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifSxzdGFuZGFsb25lOiEwfSksZH0pKCksVjY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5uZ1N3aXRjaD15''@;'; put 'put ''LHkuX2FkZENhc2UoKSx0aGlzLl92aWV3PW5ldyBYRihoLHYpfW5nRG9DaGVjaygpe3RoaXMuX3ZpZXcuZW5mb3JjZVN0YXRlKHRoaXMubmdTd2l0Y2guX21hdGNoQ2FzZSh0aGlzLm5nU3dpdGNoQ2FzZSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KShLdChNciksS3QoVm4pLEt0KFpkLDkpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2hDYXNlIiwiIl1dLGlucHV0czp7bmdTd2l0Y2hDYXNlOiJuZ1N3aXRjaENhc2UifSxzdGFuZGFsb25lOiEwfSksZH0pKCksTlc9KCgpPT57Y2xhc3MgZHtjb25z''@;'; put 'put ''dHJ1Y3RvcihoLHYseSl7dGhpcy5fbmdFbD1oLHRoaXMuX2RpZmZlcnM9dix0aGlzLl9yZW5kZXJlcj15LHRoaXMuX25nU3R5bGU9bnVsbCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdTdHlsZShoKXt0aGlzLl9uZ1N0eWxlPWgsIXRoaXMuX2RpZmZlciYmaCYmKHRoaXMuX2RpZmZlcj10aGlz''@;'; put 'put ''Ll9kaWZmZXJzLmZpbmQoaCkuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlcil7Y29uc3QgaD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTtoJiZ0aGlzLl9hcHBseUNoYW5nZXMoaCl9fV9zZXRTdHlsZShoLHYpe2NvbnN0W3ksQ109aC5zcGxpdCgiLiIpLEk9''@;'; put 'put ''LTE9PT15LmluZGV4T2YoIi0iKT92b2lkIDA6Y3UuRGFzaENhc2U7bnVsbCE9dj90aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQseSxDP2Ake3Z9JHtDfWA6dixJKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1l''@;'; put 'put ''bnQseSxJKX1fYXBwbHlDaGFuZ2VzKGgpe2guZm9yRWFjaFJlbW92ZWRJdGVtKHY9PnRoaXMuX3NldFN0eWxlKHYua2V5LG51bGwpKSxoLmZvckVhY2hBZGRlZEl0ZW0odj0+dGhpcy5fc2V0U3R5bGUodi5rZXksdi5jdXJyZW50VmFsdWUpKSxoLmZvckVhY2hDaGFuZ2VkSXRlbSh2PT50aGlz''@;'; put 'put ''Ll9zZXRTdHlsZSh2LmtleSx2LmN1cnJlbnRWYWx1ZSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfbyksS3QoQTcpLEt0KERhKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nU3R5bGUiLCIiXV0saW5wdXRz''@;'; put 'put ''OntuZ1N0eWxlOiJuZ1N0eWxlIn0sc3RhbmRhbG9uZTohMH0pLGR9KSgpLHpkPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj1oLHRoaXMuX3ZpZXdSZWY9bnVsbCx0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0PW51bGwsdGhpcy5uZ1RlbXBs''@;'; put 'put ''YXRlT3V0bGV0PW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I9bnVsbH1uZ09uQ2hhbmdlcyhoKXtpZihoLm5nVGVtcGxhdGVPdXRsZXR8fGgubmdUZW1wbGF0ZU91dGxldEluamVjdG9yKXtjb25zdCB2PXRoaXMuX3ZpZXdDb250YWluZXJSZWY7aWYodGhpcy5fdmlld1JlZiYm''@;'; put 'put ''di5yZW1vdmUodi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpKSx0aGlzLm5nVGVtcGxhdGVPdXRsZXQpe2NvbnN0e25nVGVtcGxhdGVPdXRsZXQ6eSxuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpDLG5nVGVtcGxhdGVPdXRsZXRJbmplY3RvcjpJfT10aGlzO3RoaXMuX3ZpZXdSZWY9di5jcmVhdGVF''@;'; put 'put ''bWJlZGRlZFZpZXcoeSxDLEk/e2luamVjdG9yOkl9OnZvaWQgMCl9ZWxzZSB0aGlzLl92aWV3UmVmPW51bGx9ZWxzZSB0aGlzLl92aWV3UmVmJiZoLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiZ0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiYodGhpcy5fdmlld1JlZi5jb250ZXh0PXRo''@;'; put 'put ''aXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChNcikpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0''@;'; put 'put ''ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0IixuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I6Im5nVGVtcGxhdGVPdXRsZXRJbmplY3RvciJ9LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W2QyXX0pLGR9KSgp''@;'; put 'put ''O2NsYXNzIEtyZXtjcmVhdGVTdWJzY3JpcHRpb24oZyxoKXtyZXR1cm4gZy5zdWJzY3JpYmUoe25leHQ6aCxlcnJvcjp2PT57dGhyb3cgdn19KX1kaXNwb3NlKGcpe2cudW5zdWJzY3JpYmUoKX19Y2xhc3MgJHJle2NyZWF0ZVN1YnNjcmlwdGlvbihnLGgpe3JldHVybiBnLnRoZW4oaCx2PT57''@;'; put 'put ''dGhyb3cgdn0pfWRpc3Bvc2UoZyl7fX1jb25zdCBxcmU9bmV3ICRyZSxlaWU9bmV3IEtyZTtsZXQgREM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsLHRoaXMuX3N0cmF0ZWd5''@;'; put 'put ''PW51bGwsdGhpcy5fcmVmPWh9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX2Rpc3Bvc2UoKSx0aGlzLl9yZWY9bnVsbH10cmFuc2Zvcm0oaCl7cmV0dXJuIHRoaXMuX29iaj9oIT09dGhpcy5fb2JqPyh0aGlzLl9kaXNwb3NlKCksdGhpcy50cmFuc2Zvcm0oaCkpOnRo''@;'; put 'put ''aXMuX2xhdGVzdFZhbHVlOihoJiZ0aGlzLl9zdWJzY3JpYmUoaCksdGhpcy5fbGF0ZXN0VmFsdWUpfV9zdWJzY3JpYmUoaCl7dGhpcy5fb2JqPWgsdGhpcy5fc3RyYXRlZ3k9dGhpcy5fc2VsZWN0U3RyYXRlZ3koaCksdGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX3N0cmF0ZWd5LmNyZWF0ZVN1''@;'; put 'put ''YnNjcmlwdGlvbihoLHY9PnRoaXMuX3VwZGF0ZUxhdGVzdFZhbHVlKGgsdikpfV9zZWxlY3RTdHJhdGVneShoKXtpZihzNShoKSlyZXR1cm4gcXJlO2lmKE94KGgpKXJldHVybiBlaWU7dGhyb3cgZnVuY3Rpb24gajMoZCxnKXtyZXR1cm4gbmV3IHF0KDIxMDAsITEpfSgpfV9kaXNwb3NlKCl7''@;'; put 'put ''dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9X3VwZGF0ZUxhdGVzdFZhbHVlKGgsdil7aD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPXYs''@;'; put 'put ''dGhpcy5fcmVmLm1hcmtGb3JDaGVjaygpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZDEsMTYpKX0sZC5cdTAyNzVwaXBlPVdzKHtuYW1lOiJhc3luYyIsdHlwZTpkLHB1cmU6ITEsc3RhbmRhbG9uZTohMH0pLGR9KSgpLGlJPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGR7dHJhbnNmb3JtKGgpe3JldHVybiBKU09OLnN0cmluZ2lmeShoLG51bGwsMil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXBpcGU9V3Moe25hbWU6Impzb24iLHR5cGU6ZCxwdXJlOiExLHN0YW5kYWxvbmU6ITB9KSxkfSko''@;'; put 'put ''KSxvST0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZGlmZmVycz1oLHRoaXMua2V5VmFsdWVzPVtdLHRoaXMuY29tcGFyZUZuPWFJfXRyYW5zZm9ybShoLHY9YUkpe2lmKCFofHwhKGggaW5zdGFuY2VvZiBNYXApJiYib2JqZWN0IiE9dHlwZW9mIGgpcmV0dXJuIG51bGw7dGhp''@;'; put 'put ''cy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZChoKS5jcmVhdGUoKSk7Y29uc3QgeT10aGlzLmRpZmZlci5kaWZmKGgpLEM9diE9PXRoaXMuY29tcGFyZUZuO3JldHVybiB5JiYodGhpcy5rZXlWYWx1ZXM9W10seS5mb3JFYWNoSXRlbShJPT57dGhpcy5rZXlWYWx1ZXMu''@;'; put 'put ''cHVzaChmdW5jdGlvbiBDNShkLGcpe3JldHVybntrZXk6ZCx2YWx1ZTpnfX0oSS5rZXksSS5jdXJyZW50VmFsdWUpKX0pKSwoeXx8QykmJih0aGlzLmtleVZhbHVlcy5zb3J0KHYpLHRoaXMuY29tcGFyZUZuPXYpLHRoaXMua2V5VmFsdWVzfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIG5ldyhofHxkKShLdChBNywxNikpfSxkLlx1MDI3NXBpcGU9V3Moe25hbWU6ImtleXZhbHVlIix0eXBlOmQscHVyZTohMSxzdGFuZGFsb25lOiEwfSksZH0pKCk7ZnVuY3Rpb24gYUkoZCxnKXtjb25zdCBoPWQua2V5LHY9Zy5rZXk7aWYoaD09PXYpcmV0dXJuIDA7aWYodm9p''@;'; put 'put ''ZCAwPT09aClyZXR1cm4gMTtpZih2b2lkIDA9PT12KXJldHVybi0xO2lmKG51bGw9PT1oKXJldHVybiAxO2lmKG51bGw9PT12KXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgaCYmInN0cmluZyI9PXR5cGVvZiB2KXJldHVybiBoPHY/LTE6MTtpZigibnVtYmVyIj09dHlwZW9mIGgmJiJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgdilyZXR1cm4gaC12O2lmKCJib29sZWFuIj09dHlwZW9mIGgmJiJib29sZWFuIj09dHlwZW9mIHYpcmV0dXJuIGg8dj8tMToxO2NvbnN0IHk9U3RyaW5nKGgpLEM9U3RyaW5nKHYpO3JldHVybiB5PT1DPzA6eTxDPy0xOjF9bGV0IGFhPSgoKT0+e2NsYXNzIGR7fXJl''@;'; put 'put ''dHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe30pLGR9KSgpO2NvbnN0IGVIPSJicm93c2VyIjtmdW5jdGlvbiBhbChkKXtyZXR1cm4gZD09PWVIfWxldCBzaWU9KCgpPT57Y2xhc3Mg''@;'; put 'put ''ZHt9cmV0dXJuIGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgbnAoRWkodXMpLHdpbmRvdyl9KSxkfSkoKTtjbGFzcyBucHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuZG9jdW1lbnQ9Zyx0aGlzLndpbmRvdz1oLHRoaXMub2Zmc2V0PSgp''@;'; put 'put ''PT5bMCwwXX1zZXRPZmZzZXQoZyl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheShnKT8oKT0+ZzpnfWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKT9bdGhpcy53aW5kb3cucGFnZVhPZmZzZXQsdGhpcy53aW5kb3cucGFnZVlPZmZzZXRdOlswLDBd''@;'; put 'put ''fXNjcm9sbFRvUG9zaXRpb24oZyl7dGhpcy5zdXBwb3J0c1Njcm9sbGluZygpJiZ0aGlzLndpbmRvdy5zY3JvbGxUbyhnWzBdLGdbMV0pfXNjcm9sbFRvQW5jaG9yKGcpe2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuO2NvbnN0IGg9ZnVuY3Rpb24gdWllKGQsZyl7Y29uc3Qg''@;'; put 'put ''aD1kLmdldEVsZW1lbnRCeUlkKGcpfHxkLmdldEVsZW1lbnRzQnlOYW1lKGcpWzBdO2lmKGgpcmV0dXJuIGg7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQuY3JlYXRlVHJlZVdhbGtlciYmZC5ib2R5JiYoZC5ib2R5LmNyZWF0ZVNoYWRvd1Jvb3R8fGQuYm9keS5hdHRhY2hTaGFkb3cpKXtjb25z''@;'; put 'put ''dCB2PWQuY3JlYXRlVHJlZVdhbGtlcihkLmJvZHksTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQpO2xldCB5PXYuY3VycmVudE5vZGU7Zm9yKDt5Oyl7Y29uc3QgQz15LnNoYWRvd1Jvb3Q7aWYoQyl7Y29uc3QgST1DLmdldEVsZW1lbnRCeUlkKGcpfHxDLnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPSIk''@;'; put 'put ''e2d9Il1gKTtpZihJKXJldHVybiBJfXk9di5uZXh0Tm9kZSgpfX1yZXR1cm4gbnVsbH0odGhpcy5kb2N1bWVudCxnKTtoJiYodGhpcy5zY3JvbGxUb0VsZW1lbnQoaCksaC5mb2N1cygpKX1zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24oZyl7aWYodGhpcy5zdXBwb3J0U2Nyb2xsUmVzdG9y''@;'; put 'put ''YXRpb24oKSl7Y29uc3QgaD10aGlzLndpbmRvdy5oaXN0b3J5O2gmJmguc2Nyb2xsUmVzdG9yYXRpb24mJihoLnNjcm9sbFJlc3RvcmF0aW9uPWcpfX1zY3JvbGxUb0VsZW1lbnQoZyl7Y29uc3QgaD1nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9aC5sZWZ0K3RoaXMud2luZG93LnBhZ2VY''@;'; put 'put ''T2Zmc2V0LHk9aC50b3ArdGhpcy53aW5kb3cucGFnZVlPZmZzZXQsQz10aGlzLm9mZnNldCgpO3RoaXMud2luZG93LnNjcm9sbFRvKHYtQ1swXSx5LUNbMV0pfXN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpe3RyeXtpZighdGhpcy5zdXBwb3J0c1Njcm9sbGluZygpKXJldHVybiExO2NvbnN0''@;'; put 'put ''IGc9dEgodGhpcy53aW5kb3cuaGlzdG9yeSl8fHRIKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLndpbmRvdy5oaXN0b3J5KSk7cmV0dXJuISghZ3x8IWcud3JpdGFibGUmJiFnLnNldCl9Y2F0Y2goZyl7cmV0dXJuITF9fXN1cHBvcnRzU2Nyb2xsaW5nKCl7dHJ5e3JldHVybiEhdGhpcy53''@;'; put 'put ''aW5kb3cmJiEhdGhpcy53aW5kb3cuc2Nyb2xsVG8mJiJwYWdlWE9mZnNldCJpbiB0aGlzLndpbmRvd31jYXRjaChnKXtyZXR1cm4hMX19fWZ1bmN0aW9uIHRIKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsInNjcm9sbFJlc3RvcmF0aW9uIil9Y2xhc3Mgald7''@;'; put 'put ''fWNsYXNzIGlIIGV4dGVuZHMgY2xhc3MgTWllIGV4dGVuZHMgY2xhc3Mga3Jle317Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3VwcG9ydHNET01FdmVudHM9ITB9fXtzdGF0aWMgbWFrZUN1cnJlbnQoKXshZnVuY3Rpb24gZXkoZCl7elR8fCh6VD1kKX0obmV3IGlI''@;'; put 'put ''KX1vbkFuZENhbmNlbChnLGgsdil7cmV0dXJuIGcuYWRkRXZlbnRMaXN0ZW5lcihoLHYsITEpLCgpPT57Zy5yZW1vdmVFdmVudExpc3RlbmVyKGgsdiwhMSl9fWRpc3BhdGNoRXZlbnQoZyxoKXtnLmRpc3BhdGNoRXZlbnQoaCl9cmVtb3ZlKGcpe2cucGFyZW50Tm9kZSYmZy5wYXJlbnROb2Rl''@;'; put 'put ''LnJlbW92ZUNoaWxkKGcpfWNyZWF0ZUVsZW1lbnQoZyxoKXtyZXR1cm4oaD1ofHx0aGlzLmdldERlZmF1bHREb2N1bWVudCgpKS5jcmVhdGVFbGVtZW50KGcpfWNyZWF0ZUh0bWxEb2N1bWVudCgpe3JldHVybiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoImZh''@;'; put 'put ''a2VUaXRsZSIpfWdldERlZmF1bHREb2N1bWVudCgpe3JldHVybiBkb2N1bWVudH1pc0VsZW1lbnROb2RlKGcpe3JldHVybiBnLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9aXNTaGFkb3dSb290KGcpe3JldHVybiBnIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudH1nZXRHbG9iYWxF''@;'; put 'put ''dmVudFRhcmdldChnLGgpe3JldHVybiJ3aW5kb3ciPT09aD93aW5kb3c6ImRvY3VtZW50Ij09PWg/ZzoiYm9keSI9PT1oP2cuYm9keTpudWxsfWdldEJhc2VIcmVmKGcpe2NvbnN0IGg9ZnVuY3Rpb24gRWllKCl7cmV0dXJuIEJDPUJDfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIiks''@;'; put 'put ''QkM/QkMuZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH0oKTtyZXR1cm4gbnVsbD09aD9udWxsOmZ1bmN0aW9uIHhpZShkKXtkST1kSXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGRJLnNldEF0dHJpYnV0ZSgiaHJlZiIsZCk7Y29uc3QgZz1kSS5wYXRobmFtZTtyZXR1cm4iLyI9PT1n''@;'; put 'put ''LmNoYXJBdCgwKT9nOmAvJHtnfWB9KGgpfXJlc2V0QmFzZUVsZW1lbnQoKXtCQz1udWxsfWdldFVzZXJBZ2VudCgpe3JldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudH1nZXRDb29raWUoZyl7cmV0dXJuIGI3KGRvY3VtZW50LmNvb2tpZSxnKX19bGV0IGRJLEJDPW51bGw7Y29uc3Qg''@;'; put 'put ''WVc9bmV3IE90KCJUUkFOU0lUSU9OX0lEIiksSWllPVt7cHJvdmlkZTpnQyx1c2VGYWN0b3J5OmZ1bmN0aW9uIFRpZShkLGcsaCl7cmV0dXJuKCk9PntoLmdldChtQykuZG9uZVByb21pc2UudGhlbigoKT0+e2NvbnN0IHY9ZXAoKSx5PWcucXVlcnlTZWxlY3RvckFsbChgc3R5bGVbbmctdHJh''@;'; put 'put ''bnNpdGlvbj0iJHtkfSJdYCk7Zm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspdi5yZW1vdmUoeVtDXSl9KX19LGRlcHM6W1lXLHVzLHhzXSxtdWx0aTohMH1dO2xldCBMaWU9KCgpPT57Y2xhc3MgZHtidWlsZCgpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NvbnN0IHBJPW5ldyBPdCgiRXZlbnRNYW5hZ2VyUGx1Z2lucyIpO2xldCBnST0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhp''@;'; put 'put ''cy5fem9uZT12LHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luPW5ldyBNYXAsaC5mb3JFYWNoKHk9PnkubWFuYWdlcj10aGlzKSx0aGlzLl9wbHVnaW5zPWguc2xpY2UoKS5yZXZlcnNlKCl9YWRkRXZlbnRMaXN0ZW5lcihoLHYseSl7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IodikuYWRkRXZl''@;'; put 'put ''bnRMaXN0ZW5lcihoLHYseSl9YWRkR2xvYmFsRXZlbnRMaXN0ZW5lcihoLHYseSl7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IodikuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcihoLHYseSl9Z2V0Wm9uZSgpe3JldHVybiB0aGlzLl96b25lfV9maW5kUGx1Z2luRm9yKGgpe2NvbnN0IHY9dGhp''@;'; put 'put ''cy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KGgpO2lmKHYpcmV0dXJuIHY7Y29uc3QgeT10aGlzLl9wbHVnaW5zO2ZvcihsZXQgQz0wO0M8eS5sZW5ndGg7QysrKXtjb25zdCBJPXlbQ107aWYoSS5zdXBwb3J0cyhoKSlyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KGgsSSksSX10''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoYE5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAke2h9YCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKHBJKSxFaShkbCkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1''@;'; put 'put ''MDI3NWZhY30pLGR9KSgpO2NsYXNzIFVXe2NvbnN0cnVjdG9yKGcpe3RoaXMuX2RvYz1nfWFkZEdsb2JhbEV2ZW50TGlzdGVuZXIoZyxoLHYpe2NvbnN0IHk9ZXAoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsZyk7aWYoIXkpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBl''@;'; put 'put ''dmVudCB0YXJnZXQgJHt5fSBmb3IgZXZlbnQgJHtofWApO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoeSxoLHYpfX1sZXQgUVc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0eWxlc1NldD1uZXcgU2V0fWFkZFN0eWxlcyhoKXtjb25zdCB2PW5ldyBTZXQ7aC5mb3JF''@;'; put 'put ''YWNoKHk9Pnt0aGlzLl9zdHlsZXNTZXQuaGFzKHkpfHwodGhpcy5fc3R5bGVzU2V0LmFkZCh5KSx2LmFkZCh5KSl9KSx0aGlzLm9uU3R5bGVzQWRkZWQodil9b25TdHlsZXNBZGRlZChoKXt9Z2V0QWxsU3R5bGVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3R5bGVzU2V0KX19cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksUEM9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFFXe2NvbnN0cnVjdG9yKGgpe3N1cGVyKCksdGhpcy5fZG9jPWgsdGhpcy5f''@;'; put 'put ''aG9zdE5vZGVzPW5ldyBNYXAsdGhpcy5faG9zdE5vZGVzLnNldChoLmhlYWQsW10pfV9hZGRTdHlsZXNUb0hvc3QoaCx2LHkpe2guZm9yRWFjaChDPT57Y29uc3QgST10aGlzLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtJLnRleHRDb250ZW50PUMseS5wdXNoKHYuYXBwZW5kQ2hpbGQo''@;'; put 'put ''SSkpfSl9YWRkSG9zdChoKXtjb25zdCB2PVtdO3RoaXMuX2FkZFN0eWxlc1RvSG9zdCh0aGlzLl9zdHlsZXNTZXQsaCx2KSx0aGlzLl9ob3N0Tm9kZXMuc2V0KGgsdil9cmVtb3ZlSG9zdChoKXtjb25zdCB2PXRoaXMuX2hvc3ROb2Rlcy5nZXQoaCk7diYmdi5mb3JFYWNoKEdkKSx0aGlzLl9o''@;'; put 'put ''b3N0Tm9kZXMuZGVsZXRlKGgpfW9uU3R5bGVzQWRkZWQoaCl7dGhpcy5faG9zdE5vZGVzLmZvckVhY2goKHYseSk9Pnt0aGlzLl9hZGRTdHlsZXNUb0hvc3QoaCx5LHYpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9ob3N0Tm9kZXMuZm9yRWFjaChoPT5oLmZvckVhY2goR2QpKX19cmV0dXJuIGQu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkodXMpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtmdW5jdGlvbiBHZChkKXtlcCgpLnJlbW92ZShkKX1jb25zdCBfNz17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8y''@;'; put 'put ''MDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIixt''@;'; put 'put ''YXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGhNTC8ifSxvSD0vJUNPTVAlL2c7ZnVuY3Rpb24gbUkoZCxnLGgpe2ZvcihsZXQgdj0wO3Y8Zy5sZW5ndGg7disrKXtsZXQgeT1nW3ZdO0FycmF5LmlzQXJyYXkoeSk/bUkoZCx5LGgpOih5PXkucmVwbGFjZShvSCxkKSxoLnB1c2goeSkp''@;'; put 'put ''fXJldHVybiBofWZ1bmN0aW9uIEtXKGQpe3JldHVybiBnPT57aWYoIl9fbmdVbndyYXBfXyI9PT1nKXJldHVybiBkOyExPT09ZChnKSYmKGcucHJldmVudERlZmF1bHQoKSxnLnJldHVyblZhbHVlPSExKX19bGV0IHZJPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuZXZl''@;'; put 'put ''bnRNYW5hZ2VyPWgsdGhpcy5zaGFyZWRTdHlsZXNIb3N0PXYsdGhpcy5hcHBJZD15LHRoaXMucmVuZGVyZXJCeUNvbXBJZD1uZXcgTWFwLHRoaXMuZGVmYXVsdFJlbmRlcmVyPW5ldyBhSChoKX1jcmVhdGVSZW5kZXJlcihoLHYpe2lmKCFofHwhdilyZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVy''@;'; put 'put ''ZXI7c3dpdGNoKHYuZW5jYXBzdWxhdGlvbil7Y2FzZSAkcy5FbXVsYXRlZDp7bGV0IHk9dGhpcy5yZW5kZXJlckJ5Q29tcElkLmdldCh2LmlkKTtyZXR1cm4geXx8KHk9bmV3IEhpZSh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3Qsdix0aGlzLmFwcElkKSx0aGlzLnJl''@;'; put 'put ''bmRlcmVyQnlDb21wSWQuc2V0KHYuaWQseSkpLHkuYXBwbHlUb0hvc3QoaCkseX1jYXNlIDE6Y2FzZSAkcy5TaGFkb3dEb206cmV0dXJuIG5ldyBOaWUodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGgsdik7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElk''@;'; put 'put ''Lmhhcyh2LmlkKSl7Y29uc3QgeT1tSSh2LmlkLHYuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHkpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQodi5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX1iZWdpbigp''@;'; put 'put ''e31lbmQoKXt9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGdJKSxFaShQQyksRWkocUEpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjbGFzcyBhSHtjb25zdHJ1Y3RvcihnKXt0aGlzLmV2''@;'; put 'put ''ZW50TWFuYWdlcj1nLHRoaXMuZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGVzdHJveU5vZGU9bnVsbH1kZXN0cm95KCl7fWNyZWF0ZUVsZW1lbnQoZyxoKXtyZXR1cm4gaD9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXzdbaF18fGgsZyk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChn''@;'; put 'put ''KX1jcmVhdGVDb21tZW50KGcpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGcpfWNyZWF0ZVRleHQoZyl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGcpfWFwcGVuZENoaWxkKGcsaCl7KHFXKGcpP2cuY29udGVudDpnKS5hcHBlbmRDaGlsZChoKX1pbnNlcnRCZWZvcmUo''@;'; put 'put ''ZyxoLHYpe2cmJihxVyhnKT9nLmNvbnRlbnQ6ZykuaW5zZXJ0QmVmb3JlKGgsdil9cmVtb3ZlQ2hpbGQoZyxoKXtnJiZnLnJlbW92ZUNoaWxkKGgpfXNlbGVjdFJvb3RFbGVtZW50KGcsaCl7bGV0IHY9InN0cmluZyI9PXR5cGVvZiBnP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZyk6ZztpZigh''@;'; put 'put ''dil0aHJvdyBuZXcgRXJyb3IoYFRoZSBzZWxlY3RvciAiJHtnfSIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHNgKTtyZXR1cm4gaHx8KHYudGV4dENvbnRlbnQ9IiIpLHZ9cGFyZW50Tm9kZShnKXtyZXR1cm4gZy5wYXJlbnROb2RlfW5leHRTaWJsaW5nKGcpe3JldHVybiBnLm5leHRTaWJs''@;'; put 'put ''aW5nfXNldEF0dHJpYnV0ZShnLGgsdix5KXtpZih5KXtoPXkrIjoiK2g7Y29uc3QgQz1fN1t5XTtDP2cuc2V0QXR0cmlidXRlTlMoQyxoLHYpOmcuc2V0QXR0cmlidXRlKGgsdil9ZWxzZSBnLnNldEF0dHJpYnV0ZShoLHYpfXJlbW92ZUF0dHJpYnV0ZShnLGgsdil7aWYodil7Y29uc3QgeT1f''@;'; put 'put ''N1t2XTt5P2cucmVtb3ZlQXR0cmlidXRlTlMoeSxoKTpnLnJlbW92ZUF0dHJpYnV0ZShgJHt2fToke2h9YCl9ZWxzZSBnLnJlbW92ZUF0dHJpYnV0ZShoKX1hZGRDbGFzcyhnLGgpe2cuY2xhc3NMaXN0LmFkZChoKX1yZW1vdmVDbGFzcyhnLGgpe2cuY2xhc3NMaXN0LnJlbW92ZShoKX1zZXRT''@;'; put 'put ''dHlsZShnLGgsdix5KXt5JihjdS5EYXNoQ2FzZXxjdS5JbXBvcnRhbnQpP2cuc3R5bGUuc2V0UHJvcGVydHkoaCx2LHkmY3UuSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTpnLnN0eWxlW2hdPXZ9cmVtb3ZlU3R5bGUoZyxoLHYpe3YmY3UuRGFzaENhc2U/Zy5zdHlsZS5yZW1vdmVQcm9wZXJ0''@;'; put 'put ''eShoKTpnLnN0eWxlW2hdPSIifXNldFByb3BlcnR5KGcsaCx2KXtnW2hdPXZ9c2V0VmFsdWUoZyxoKXtnLm5vZGVWYWx1ZT1ofWxpc3RlbihnLGgsdil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBnP3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIoZyxoLEtXKHYpKTp0''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGcsaCxLVyh2KSl9fWZ1bmN0aW9uIHFXKGQpe3JldHVybiJURU1QTEFURSI9PT1kLnRhZ05hbWUmJnZvaWQgMCE9PWQuY29udGVudH1jbGFzcyBIaWUgZXh0ZW5kcyBhSHtjb25zdHJ1Y3RvcihnLGgsdix5KXtzdXBlcihnKSx0aGlz''@;'; put 'put ''LmNvbXBvbmVudD12O2NvbnN0IEM9bUkoeSsiLSIrdi5pZCx2LnN0eWxlcyxbXSk7aC5hZGRTdHlsZXMoQyksdGhpcy5jb250ZW50QXR0cj1mdW5jdGlvbiBCaWUoZCl7cmV0dXJuIl9uZ2NvbnRlbnQtJUNPTVAlIi5yZXBsYWNlKG9ILGQpfSh5KyItIit2LmlkKSx0aGlzLmhvc3RBdHRyPWZ1''@;'; put 'put ''bmN0aW9uIFBpZShkKXtyZXR1cm4iX25naG9zdC0lQ09NUCUiLnJlcGxhY2Uob0gsZCl9KHkrIi0iK3YuaWQpfWFwcGx5VG9Ib3N0KGcpe3N1cGVyLnNldEF0dHJpYnV0ZShnLHRoaXMuaG9zdEF0dHIsIiIpfWNyZWF0ZUVsZW1lbnQoZyxoKXtjb25zdCB2PXN1cGVyLmNyZWF0ZUVsZW1lbnQo''@;'; put 'put ''ZyxoKTtyZXR1cm4gc3VwZXIuc2V0QXR0cmlidXRlKHYsdGhpcy5jb250ZW50QXR0ciwiIiksdn19Y2xhc3MgTmllIGV4dGVuZHMgYUh7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoZyksdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWgsdGhpcy5ob3N0RWw9dix0aGlzLnNoYWRvd1Jvb3Q9di5h''@;'; put 'put ''dHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QodGhpcy5zaGFkb3dSb290KTtjb25zdCBDPW1JKHkuaWQseS5zdHlsZXMsW10pO2ZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSsrKXtjb25zdCBqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0''@;'; put 'put ''eWxlIik7ai50ZXh0Q29udGVudD1DW0ldLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChqKX19bm9kZU9yU2hhZG93Um9vdChnKXtyZXR1cm4gZz09PXRoaXMuaG9zdEVsP3RoaXMuc2hhZG93Um9vdDpnfWRlc3Ryb3koKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlz''@;'; put 'put ''LnNoYWRvd1Jvb3QpfWFwcGVuZENoaWxkKGcsaCl7cmV0dXJuIHN1cGVyLmFwcGVuZENoaWxkKHRoaXMubm9kZU9yU2hhZG93Um9vdChnKSxoKX1pbnNlcnRCZWZvcmUoZyxoLHYpe3JldHVybiBzdXBlci5pbnNlcnRCZWZvcmUodGhpcy5ub2RlT3JTaGFkb3dSb290KGcpLGgsdil9cmVtb3Zl''@;'; put 'put ''Q2hpbGQoZyxoKXtyZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KGcpLGgpfXBhcmVudE5vZGUoZyl7cmV0dXJuIHRoaXMubm9kZU9yU2hhZG93Um9vdChzdXBlci5wYXJlbnROb2RlKHRoaXMubm9kZU9yU2hhZG93Um9vdChnKSkpfX1sZXQgVmllPSgoKT0+''@;'; put 'put ''e2NsYXNzIGQgZXh0ZW5kcyBVV3tjb25zdHJ1Y3RvcihoKXtzdXBlcihoKX1zdXBwb3J0cyhoKXtyZXR1cm4hMH1hZGRFdmVudExpc3RlbmVyKGgsdix5KXtyZXR1cm4gaC5hZGRFdmVudExpc3RlbmVyKHYseSwhMSksKCk9PnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihoLHYseSl9cmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcihoLHYseSl7cmV0dXJuIGgucmVtb3ZlRXZlbnRMaXN0ZW5lcih2LHkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaSh1cykpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgp''@;'; put 'put ''O2NvbnN0IGVZPVsiYWx0IiwiY29udHJvbCIsIm1ldGEiLCJzaGlmdCJdLGppZT17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJceDdmIjoiRGVsZXRlIiwiXHgxYiI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1Jp''@;'; put 'put ''Z2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sWmllPXthbHQ6ZD0+ZC5hbHRLZXksY29udHJvbDpkPT5kLmN0cmxLZXksbWV0YTpkPT5kLm1ldGFLZXksc2hpZnQ6ZD0+ZC5zaGlmdEtleX07''@;'; put 'put ''bGV0IEFJPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBVV3tjb25zdHJ1Y3RvcihoKXtzdXBlcihoKX1zdXBwb3J0cyhoKXtyZXR1cm4gbnVsbCE9ZC5wYXJzZUV2ZW50TmFtZShoKX1hZGRFdmVudExpc3RlbmVyKGgsdix5KXtjb25zdCBDPWQucGFyc2VFdmVudE5hbWUodiksST1kLmV2ZW50Q2Fs''@;'; put 'put ''bGJhY2soQy5mdWxsS2V5LHksdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PmVwKCkub25BbmRDYW5jZWwoaCxDLmRvbUV2ZW50TmFtZSxJKSl9c3RhdGljIHBhcnNlRXZlbnROYW1lKGgpe2NvbnN0IHY9''@;'; put 'put ''aC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIuIikseT12LnNoaWZ0KCk7aWYoMD09PXYubGVuZ3RofHwia2V5ZG93biIhPT15JiYia2V5dXAiIT09eSlyZXR1cm4gbnVsbDtjb25zdCBDPWQuX25vcm1hbGl6ZUtleSh2LnBvcCgpKTtsZXQgST0iIixqPXYuaW5kZXhPZigiY29kZSIpO2lmKGo+LTEm''@;'; put 'put ''Jih2LnNwbGljZShqLDEpLEk9ImNvZGUuIiksZVkuZm9yRWFjaChfZT0+e2NvbnN0IFJlPXYuaW5kZXhPZihfZSk7UmU+LTEmJih2LnNwbGljZShSZSwxKSxJKz1fZSsiLiIpfSksSSs9QywwIT12Lmxlbmd0aHx8MD09PUMubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGNlPXt9O3JldHVybiBj''@;'; put 'put ''ZS5kb21FdmVudE5hbWU9eSxjZS5mdWxsS2V5PUksY2V9c3RhdGljIG1hdGNoRXZlbnRGdWxsS2V5Q29kZShoLHYpe2xldCB5PWppZVtoLmtleV18fGgua2V5LEM9IiI7cmV0dXJuIHYuaW5kZXhPZigiY29kZS4iKT4tMSYmKHk9aC5jb2RlLEM9ImNvZGUuIiksIShudWxsPT15fHwheSkmJih5''@;'; put 'put ''PXkudG9Mb3dlckNhc2UoKSwiICI9PT15P3k9InNwYWNlIjoiLiI9PT15JiYoeT0iZG90IiksZVkuZm9yRWFjaChJPT57SSE9PXkmJigwLFppZVtJXSkoaCkmJihDKz1JKyIuIil9KSxDKz15LEM9PT12KX1zdGF0aWMgZXZlbnRDYWxsYmFjayhoLHYseSl7cmV0dXJuIEM9PntkLm1hdGNoRXZl''@;'; put 'put ''bnRGdWxsS2V5Q29kZShDLGgpJiZ5LnJ1bkd1YXJkZWQoKCk9PnYoQykpfX1zdGF0aWMgX25vcm1hbGl6ZUtleShoKXtyZXR1cm4iZXNjIj09PWg/ImVzY2FwZSI6aH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkodXMpKX0sZC5cdTAyNzVwcm92''@;'; put 'put ''PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjb25zdCBpWT1be3Byb3ZpZGU6RTIsdXNlVmFsdWU6ZUh9LHtwcm92aWRlOmhGLHVzZVZhbHVlOmZ1bmN0aW9uIHppZSgpe2lILm1ha2VDdXJyZW50KCl9LG11bHRpOiEwfSx7cHJvdmlkZTp1cyx1c2VGYWN0b3J5OmZ1''@;'; put 'put ''bmN0aW9uIFdpZSgpe3JldHVybiBmdW5jdGlvbiBHUihkKXtTYj1kfShkb2N1bWVudCksZG9jdW1lbnR9LGRlcHM6W119XSxZaWU9a0YoQXJlLCJicm93c2VyIixpWSksb1k9bmV3IE90KCIiKSxhWT1be3Byb3ZpZGU6T1QsdXNlQ2xhc3M6Y2xhc3MgRGlle2FkZFRvV2luZG93KGcpe0RsLmdl''@;'; put 'put ''dEFuZ3VsYXJUZXN0YWJpbGl0eT0odix5PSEwKT0+e2NvbnN0IEM9Zy5maW5kVGVzdGFiaWxpdHlJblRyZWUodix5KTtpZihudWxsPT1DKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIEN9LERsLmdldEFsbEFuZ3VsYXJU''@;'; put 'put ''ZXN0YWJpbGl0aWVzPSgpPT5nLmdldEFsbFRlc3RhYmlsaXRpZXMoKSxEbC5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPSgpPT5nLmdldEFsbFJvb3RFbGVtZW50cygpLERsLmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoRGwuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLERsLmZyYW1ld29ya1N0''@;'; put 'put ''YWJpbGl6ZXJzLnB1c2godj0+e2NvbnN0IHk9RGwuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtsZXQgQz15Lmxlbmd0aCxJPSExO2NvbnN0IGo9ZnVuY3Rpb24oY2Upe0k9SXx8Y2UsQy0tLDA9PUMmJnYoSSl9O3kuZm9yRWFjaChmdW5jdGlvbihjZSl7Y2Uud2hlblN0YWJsZShqKX0p''@;'; put 'put ''fSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKGcsaCx2KXtpZihudWxsPT1oKXJldHVybiBudWxsO2NvbnN0IHk9Zy5nZXRUZXN0YWJpbGl0eShoKTtyZXR1cm4gbnVsbCE9eT95OnY/ZXAoKS5pc1NoYWRvd1Jvb3QoaCk/dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUoZyxoLmhvc3QsITApOnRo''@;'; put 'put ''aXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGcsaC5wYXJlbnRFbGVtZW50LCEwKTpudWxsfX0sZGVwczpbXX0se3Byb3ZpZGU6blcsdXNlQ2xhc3M6UlQsZGVwczpbZGwsQlQsT1RdfSx7cHJvdmlkZTpSVCx1c2VDbGFzczpSVCxkZXBzOltkbCxCVCxPVF19XSxsWT1be3Byb3ZpZGU6eW0sdXNl''@;'; put 'put ''VmFsdWU6InJvb3QifSx7cHJvdmlkZTpZOCx1c2VGYWN0b3J5OmZ1bmN0aW9uIEdpZSgpe3JldHVybiBuZXcgWTh9LGRlcHM6W119LHtwcm92aWRlOnBJLHVzZUNsYXNzOlZpZSxtdWx0aTohMCxkZXBzOlt1cyxkbCxFMl19LHtwcm92aWRlOnBJLHVzZUNsYXNzOkFJLG11bHRpOiEwLGRlcHM6''@;'; put 'put ''W3VzXX0se3Byb3ZpZGU6dkksdXNlQ2xhc3M6dkksZGVwczpbZ0ksUEMscUFdfSx7cHJvdmlkZTphNix1c2VFeGlzdGluZzp2SX0se3Byb3ZpZGU6UVcsdXNlRXhpc3Rpbmc6UEN9LHtwcm92aWRlOlBDLHVzZUNsYXNzOlBDLGRlcHM6W3VzXX0se3Byb3ZpZGU6Z0ksdXNlQ2xhc3M6Z0ksZGVw''@;'; put 'put ''czpbcEksZGxdfSx7cHJvdmlkZTpqVyx1c2VDbGFzczpMaWUsZGVwczpbXX0sW11dO2xldCBzWT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe31zdGF0aWMgd2l0aFNlcnZlclRyYW5zaXRpb24oaCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOlt7cHJvdmlkZTpxQSx1c2VWYWx1''@;'; put 'put ''ZTpoLmFwcElkfSx7cHJvdmlkZTpZVyx1c2VFeGlzdGluZzpxQX0sSWllXX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKG9ZLDEyKSl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7cHJvdmlkZXJzOlsuLi5sWSwu''@;'; put 'put ''Li5hWV0saW1wb3J0czpbYWEsbVddfSksZH0pKCksaXk9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9kb2M9aH1nZXRUaXRsZSgpe3JldHVybiB0aGlzLl9kb2MudGl0bGV9c2V0VGl0bGUoaCl7dGhpcy5fZG9jLnRpdGxlPWh8fCIifX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaSh1cykpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpmdW5jdGlvbihoKXtsZXQgdj1udWxsO3JldHVybiB2PWg/bmV3IGg6ZnVuY3Rpb24gQzcoKXtyZXR1cm4gbmV3IGl5KEVpKHVzKSl9KCksdn0scHJvdmlkZWRJbjoicm9v''@;'; put 'put ''dCJ9KSxkfSkoKTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93O2xldCBzSD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oaCl7bGV0''@;'; put 'put ''IHY9bnVsbDtyZXR1cm4gdj1oP25ldyhofHxkKTpFaShoWSksdn0scHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKSxoWT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgc0h7Y29uc3RydWN0b3IoaCl7c3VwZXIoKSx0aGlzLl9kb2M9aH1zYW5pdGl6ZShoLHYpe2lmKG51bGw9PXYpcmV0dXJuIG51bGw7''@;'; put 'put ''c3dpdGNoKGgpe2Nhc2UgV2wuTk9ORTpyZXR1cm4gdjtjYXNlIFdsLkhUTUw6cmV0dXJuIFhvKHYsIkhUTUwiKT9VMSh2KTpPYih0aGlzLl9kb2MsU3RyaW5nKHYpKS50b1N0cmluZygpO2Nhc2UgV2wuU1RZTEU6cmV0dXJuIFhvKHYsIlN0eWxlIik/VTEodik6djtjYXNlIFdsLlNDUklQVDpp''@;'; put 'put ''ZihYbyh2LCJTY3JpcHQiKSlyZXR1cm4gVTEodik7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBXbC5VUkw6cmV0dXJuIFhvKHYsIlVSTCIpP1UxKHYpOlY4KFN0cmluZyh2KSk7Y2FzZSBXbC5SRVNPVVJDRV9VUkw6aWYoWG8o''@;'; put 'put ''diwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gVTEodik7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBT''@;'; put 'put ''ZWN1cml0eUNvbnRleHQgJHtofSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9fWJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGgpe3JldHVybiBmdW5jdGlvbiBXZihkKXtyZXR1cm4gbmV3IGdhKGQpfShoKX1ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoaCl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIFdvKGQpe3JldHVybiBuZXcgdDYoZCl9KGgpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQoaCl7cmV0dXJuIGZ1bmN0aW9uIGRtKGQpe3JldHVybiBuZXcgb2woZCl9KGgpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaCl7cmV0dXJuIGZ1bmN0aW9uIGdFKGQpe3JldHVybiBuZXcg''@;'; put 'put ''R2YoZCl9KGgpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChoKXtyZXR1cm4gZnVuY3Rpb24gV1IoZCl7cmV0dXJuIG5ldyBHYyhkKX0oaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKHVzKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9r''@;'; put 'put ''ZW46ZCxmYWN0b3J5OmZ1bmN0aW9uKGgpe2xldCB2PW51bGw7cmV0dXJuIHY9aD9uZXcgaDpmdW5jdGlvbiBxaWUoZCl7cmV0dXJuIG5ldyBoWShkLmdldCh1cykpfShFaSh4cykpLHZ9LHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7TCg0MjQ0KSxMKDc3NjU3KSxMKDg4ODEzKSxMKDUzMTAp''@;'; put 'put ''LEwoNTE3NzEpLEwoNjIzMTQpLEwoMTYzNDMpLEwoNjgxNDgpLEwoNzY3NyksTCg4MjY5MSksTCgyOTEzMiksTCgxNzg3OCksTCg1MjI5OCksTCg0MzQ5OSksTCg2Nzc5NSksTCg4ODU4MyksTCg1NDI2MSk7dmFyIGUwZT1MKDkzMTcyKTt3aW5kb3cuZ2xvYmFsPXdpbmRvdyx3aW5kb3cuZ2xv''@;'; put 'put ''YmFsLkJ1ZmZlcj13aW5kb3cuZ2xvYmFsLkJ1ZmZlcnx8ZTBlLkJ1ZmZlcix3aW5kb3cucHJvY2Vzcz17dmVyc2lvbjoiIn07TCg1Njc3MSksTCg5Mzg3Nyk7Y29uc3Qgcmk9e3Jvb3RQYXJhbToiIixlZGl0b3I6e3N0YXJ0dXBTZXQ6ITEsdHJlZU5vZGVMaWJyYXJpZXM6W10sbGlic0FuZFRh''@;'; put 'put ''YmxlczpbXSxsaWJyYXJpZXM6W10sbGlicmFyeToiIix0YWJsZToiIixmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdoZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119fSx2aWV3ZXI6e3N0YXJ0dXBTZXQ6ITEsdGFibGVzU2V0OiExLGxpYnJh''@;'; put 'put ''cmllczpbXSx0YWJsZXM6bnVsbCxsaWJyYXJ5OiIiLHRhYmxlOiIiLGxpYmluZm86W10sbGlicmFyaWVzU2VhcmNoOiIiLGZpbHRlcjp7Y29sczpbXSx2YWxzOltdLGdyb3VwTG9naWM6IiIsd2hlcmVDbGF1c2U6IiIsbGliZHM6IiIsY2xhdXNlczpbXSxxdWVyeTpbXX0sY3VycmVudFNlbGVj''@;'; put 'put ''dGlvbjoiIn0sbGluZWFnZTp7bGlicmFyeUxpc3Q6W10sdGFibGVzTGlzdDpbXSxjb2x1bW5zTGlzdDpbXSxsaWJyYXJpZXNTZWFyY2g6IiIsbGliOiIiLHRhYmxlOiIiLGNvbHVtbjoiIixjdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZToiIixjdXJyZW50TGluZWFnZVBhdGhDb2x1bW46IiJ9''@;'; put 'put ''LG1ldGFkYXRhOnttZXRhRGF0YUxpc3Q6dm9pZCAwLG1ldGFEYXRhU2VhcmNoOiIiLG1ldGFPYmplY3RMaXN0OltdLG1ldGFPYmplY3RTZWFyY2g6IiIsbWV0YVJlcG9zaXRvcmllczp2b2lkIDAsc2VsZWN0ZWRSZXBvc2l0b3J5OiIifSx1c2VybmF2Ont1c2VyTGlzdDp2b2lkIDAsdXNlclNl''@;'; put 'put ''YXJjaDoiIixncm91cExpc3Q6dm9pZCAwLGdyb3VwU2VhcmNoOiIiLHJvbGVMaXN0OnZvaWQgMCxyb2xlU2VhcmNoOiIifSxvcGVyYXRvcnM6e251bU9wZXJhdG9yczpbIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJCRVRXRUVOIiwiSU4iLCJOT1QgSU4iLCJORSJdLGNoYXJPcGVyYXRvcnM6WyI9''@;'; put 'put ''IiwiPCIsIj4iLCI8PSIsIj49IiwiQ09OVEFJTlMiLCJJTiIsIk5PVCBJTiIsIk5FIl19fTt2YXIga2w9TCgxNTQzOSksdDBlPUwubihrbCk7ZnVuY3Rpb24gVjIoZCxnLGgsdil7dmFyIEkseT1hcmd1bWVudHMubGVuZ3RoLEM9eTwzP2c6bnVsbD09PXY/dj1PYmplY3QuZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlEZXNjcmlwdG9yKGcsaCk6djtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKUM9UmVmbGVjdC5kZWNvcmF0ZShkLGcsaCx2KTtlbHNlIGZvcih2YXIgaj1kLmxlbmd0aC0xO2o+PTA7ai0tKShJPWRbal0pJiYoQz0oeTwz''@;'; put 'put ''P0koQyk6eT4zP0koZyxoLEMpOkkoZyxoKSl8fEMpO3JldHVybiB5PjMmJkMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnLGgsQyksQ31mdW5jdGlvbiB0byhkLGcsaCx2KXtyZXR1cm4gbmV3KGh8fChoPVByb21pc2UpKShmdW5jdGlvbihDLEkpe2Z1bmN0aW9uIGooUmUpe3RyeXtfZSh2Lm5l''@;'; put 'put ''eHQoUmUpKX1jYXRjaChOZSl7SShOZSl9fWZ1bmN0aW9uIGNlKFJlKXt0cnl7X2Uodi50aHJvdyhSZSkpfWNhdGNoKE5lKXtJKE5lKX19ZnVuY3Rpb24gX2UoUmUpe1JlLmRvbmU/QyhSZS52YWx1ZSk6ZnVuY3Rpb24geShDKXtyZXR1cm4gQyBpbnN0YW5jZW9mIGg/QzpuZXcgaChmdW5jdGlv''@;'; put 'put ''bihJKXtJKEMpfSl9KFJlLnZhbHVlKS50aGVuKGosY2UpfV9lKCh2PXYuYXBwbHkoZCxnfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBWMCguLi5kKXtsZXQgZz1kW2QubGVuZ3RoLTFdO3JldHVybiB5dChnKT8oZC5wb3AoKSxZZShkLGcpKTpkcihkKX1jbGFzcyBTbCBleHRlbmRzICRle2Nv''@;'; put 'put ''bnN0cnVjdG9yKGcpe3N1cGVyKCksdGhpcy5fdmFsdWU9Z31nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfV9zdWJzY3JpYmUoZyl7Y29uc3QgaD1zdXBlci5fc3Vic2NyaWJlKGcpO3JldHVybiBoJiYhaC5jbG9zZWQmJmcubmV4dCh0aGlzLl92YWx1ZSksaH1nZXRWYWx1ZSgp''@;'; put 'put ''e2lmKHRoaXMuaGFzRXJyb3IpdGhyb3cgdGhpcy50aHJvd25FcnJvcjtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRGU7cmV0dXJuIHRoaXMuX3ZhbHVlfW5leHQoZyl7c3VwZXIubmV4dCh0aGlzLl92YWx1ZT1nKX19Y29uc3QgSEM9KCgpPT57ZnVuY3Rpb24gZCgpe3JldHVybiBFcnJvci5j''@;'; put 'put ''YWxsKHRoaXMpLHRoaXMubWVzc2FnZT0ibm8gZWxlbWVudHMgaW4gc2VxdWVuY2UiLHRoaXMubmFtZT0iRW1wdHlFcnJvciIsdGhpc31yZXR1cm4gZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGR9KSgpO2NsYXNzIHlZIGV4dGVuZHMgentub3RpZnlOZXh0KGcs''@;'; put 'put ''aCx2LHksQyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGgpfW5vdGlmeUVycm9yKGcsaCl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihnKX1ub3RpZnlDb21wbGV0ZShnKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWNsYXNzIGEwZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoLHYpe3N1''@;'; put 'put ''cGVyKCksdGhpcy5wYXJlbnQ9Zyx0aGlzLm91dGVyVmFsdWU9aCx0aGlzLm91dGVySW5kZXg9dix0aGlzLmluZGV4PTB9X25leHQoZyl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsZyx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRleCsrLHRoaXMpfV9lcnJvcihnKXt0''@;'; put 'put ''aGlzLnBhcmVudC5ub3RpZnlFcnJvcihnLHRoaXMpLHRoaXMudW5zdWJzY3JpYmUoKX1fY29tcGxldGUoKXt0aGlzLnBhcmVudC5ub3RpZnlDb21wbGV0ZSh0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9fWZ1bmN0aW9uIGhIKGQsZyxoLHYseT1uZXcgYTBlKGQsaCx2KSl7aWYoIXkuY2xvc2Vk''@;'; put 'put ''KXJldHVybiBnIGluc3RhbmNlb2YgRj9nLnN1YnNjcmliZSh5KTpjdChnKSh5KX1jb25zdCB3WT17fTtmdW5jdGlvbiBheSguLi5kKXtsZXQgZyxoO3JldHVybiB5dChkW2QubGVuZ3RoLTFdKSYmKGg9ZC5wb3AoKSksImZ1bmN0aW9uIj09dHlwZW9mIGRbZC5sZW5ndGgtMV0mJihnPWQucG9w''@;'; put 'put ''KCkpLDE9PT1kLmxlbmd0aCYmQWUoZFswXSkmJihkPWRbMF0pLGRyKGQsaCkubGlmdChuZXcgbHkoZykpfWNsYXNzIGx5e2NvbnN0cnVjdG9yKGcpe3RoaXMucmVzdWx0U2VsZWN0b3I9Z31jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBsMGUoZyx0aGlzLnJlc3VsdFNlbGVjdG9y''@;'; put 'put ''KSl9fWNsYXNzIGwwZSBleHRlbmRzIHlZe2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZyksdGhpcy5yZXN1bHRTZWxlY3Rvcj1oLHRoaXMuYWN0aXZlPTAsdGhpcy52YWx1ZXM9W10sdGhpcy5vYnNlcnZhYmxlcz1bXX1fbmV4dChnKXt0aGlzLnZhbHVlcy5wdXNoKHdZKSx0aGlzLm9ic2VydmFi''@;'; put 'put ''bGVzLnB1c2goZyl9X2NvbXBsZXRlKCl7Y29uc3QgZz10aGlzLm9ic2VydmFibGVzLGg9Zy5sZW5ndGg7aWYoMD09PWgpdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO2Vsc2V7dGhpcy5hY3RpdmU9aCx0aGlzLnRvUmVzcG9uZD1oO2ZvcihsZXQgdj0wO3Y8aDt2KyspdGhpcy5hZGQoaEgo''@;'; put 'put ''dGhpcyxnW3ZdLHZvaWQgMCx2KSl9fW5vdGlmeUNvbXBsZXRlKGcpezA9PSh0aGlzLmFjdGl2ZS09MSkmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1ub3RpZnlOZXh0KGcsaCx2KXtjb25zdCB5PXRoaXMudmFsdWVzLEk9dGhpcy50b1Jlc3BvbmQ/eVt2XT09PXdZPy0tdGhpcy50b1Jl''@;'; put 'put ''c3BvbmQ6dGhpcy50b1Jlc3BvbmQ6MDt5W3ZdPWgsMD09PUkmJih0aGlzLnJlc3VsdFNlbGVjdG9yP3RoaXMuX3RyeVJlc3VsdFNlbGVjdG9yKHkpOnRoaXMuZGVzdGluYXRpb24ubmV4dCh5LnNsaWNlKCkpKX1fdHJ5UmVzdWx0U2VsZWN0b3IoZyl7bGV0IGg7dHJ5e2g9dGhpcy5yZXN1bHRT''@;'; put 'put ''ZWxlY3Rvci5hcHBseSh0aGlzLGcpfWNhdGNoKHYpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iodil9dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGgpfX1mdW5jdGlvbiBkSCguLi5kKXtyZXR1cm4gZnVuY3Rpb24gczBlKCl7cmV0dXJuIGVuKDEpfSgpKFYwKC4uLmQpKX1jb25z''@;'; put 'put ''dCBzeT1uZXcgRihkPT5kLmNvbXBsZXRlKCkpO2Z1bmN0aW9uIENJKGQpe3JldHVybiBkP2Z1bmN0aW9uIHUwZShkKXtyZXR1cm4gbmV3IEYoZz0+ZC5zY2hlZHVsZSgoKT0+Zy5jb21wbGV0ZSgpKSl9KGQpOnN5fWZ1bmN0aW9uIHg1KGQpe3JldHVybiBuZXcgRihnPT57bGV0IGg7dHJ5e2g9''@;'; put 'put ''ZCgpfWNhdGNoKHkpe3JldHVybiB2b2lkIGcuZXJyb3IoeSl9cmV0dXJuKGg/cG4oaCk6Q0koKSkuc3Vic2NyaWJlKGcpfSl9ZnVuY3Rpb24gcnAoZCxnKXtyZXR1cm4gbmV3IEYoZz9oPT5nLnNjaGVkdWxlKHV5LDAse2Vycm9yOmQsc3Vic2NyaWJlcjpofSk6aD0+aC5lcnJvcihkKSl9ZnVu''@;'; put 'put ''Y3Rpb24gdXkoe2Vycm9yOmQsc3Vic2NyaWJlcjpnfSl7Zy5lcnJvcihkKX1mdW5jdGlvbiBhaChkLGcpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBnP2g9PmgucGlwZShhaCgodix5KT0+cG4oZCh2LHkpKS5waXBlKHB0KChDLEkpPT5nKHYsQyx5LEkpKSkpKTpoPT5oLmxpZnQobmV3IGMw''@;'; put 'put ''ZShkKSl9Y2xhc3MgYzBle2NvbnN0cnVjdG9yKGcpe3RoaXMucHJvamVjdD1nfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IGJZKGcsdGhpcy5wcm9qZWN0KSl9fWNsYXNzIGJZIGV4dGVuZHMgTm57Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLnByb2plY3Q9aCx0aGlz''@;'; put 'put ''LmluZGV4PTB9X25leHQoZyl7bGV0IGg7Y29uc3Qgdj10aGlzLmluZGV4Kys7dHJ5e2g9dGhpcy5wcm9qZWN0KGcsdil9Y2F0Y2goeSl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih5KX10aGlzLl9pbm5lclN1YihoKX1faW5uZXJTdWIoZyl7Y29uc3QgaD10aGlzLmlubmVy''@;'; put 'put ''U3Vic2NyaXB0aW9uO2gmJmgudW5zdWJzY3JpYmUoKTtjb25zdCB2PW5ldyBibih0aGlzKSx5PXRoaXMuZGVzdGluYXRpb247eS5hZGQodiksdGhpcy5pbm5lclN1YnNjcmlwdGlvbj1lcihnLHYpLHRoaXMuaW5uZXJTdWJzY3JpcHRpb24hPT12JiZ5LmFkZCh0aGlzLmlubmVyU3Vic2NyaXB0''@;'; put 'put ''aW9uKX1fY29tcGxldGUoKXtjb25zdHtpbm5lclN1YnNjcmlwdGlvbjpnfT10aGlzOyghZ3x8Zy5jbG9zZWQpJiZzdXBlci5fY29tcGxldGUoKSx0aGlzLnVuc3Vic2NyaWJlKCl9X3Vuc3Vic2NyaWJlKCl7dGhpcy5pbm5lclN1YnNjcmlwdGlvbj12b2lkIDB9bm90aWZ5Q29tcGxldGUoKXt0''@;'; put 'put ''aGlzLmlubmVyU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLmlzU3RvcHBlZCYmc3VwZXIuX2NvbXBsZXRlKCl9bm90aWZ5TmV4dChnKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZyl9fWNvbnN0IHBIPSgoKT0+e2Z1bmN0aW9uIGQoKXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3Nh''@;'; put 'put ''Z2U9ImFyZ3VtZW50IG91dCBvZiByYW5nZSIsdGhpcy5uYW1lPSJBcmd1bWVudE91dE9mUmFuZ2VFcnJvciIsdGhpc31yZXR1cm4gZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGR9KSgpO2Z1bmN0aW9uIFQ1KGQpe3JldHVybiBnPT4wPT09ZD9DSSgpOmcubGlm''@;'; put 'put ''dChuZXcgX1koZCkpfWNsYXNzIF9Ze2NvbnN0cnVjdG9yKGcpe2lmKHRoaXMudG90YWw9Zyx0aGlzLnRvdGFsPDApdGhyb3cgbmV3IHBIfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IENZKGcsdGhpcy50b3RhbCkpfX1jbGFzcyBDWSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxo''@;'; put 'put ''KXtzdXBlcihnKSx0aGlzLnRvdGFsPWgsdGhpcy5jb3VudD0wfV9uZXh0KGcpe2NvbnN0IGg9dGhpcy50b3RhbCx2PSsrdGhpcy5jb3VudDt2PD1oJiYodGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpLHY9PT1oJiYodGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUo''@;'; put 'put ''KSkpfX1mdW5jdGlvbiBjeSguLi5kKXtjb25zdCBnPWRbZC5sZW5ndGgtMV07cmV0dXJuIHl0KGcpPyhkLnBvcCgpLGg9PmRIKGQsaCxnKSk6aD0+ZEgoZCxoKX1mdW5jdGlvbiBtMihkLGcpe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gdi5saWZ0KG5ldyBrWShkLGcpKX19Y2xhc3Mga1l7''@;'; put 'put ''Y29uc3RydWN0b3IoZyxoKXt0aGlzLnByZWRpY2F0ZT1nLHRoaXMudGhpc0FyZz1ofWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IFNZKGcsdGhpcy5wcmVkaWNhdGUsdGhpcy50aGlzQXJnKSl9fWNsYXNzIFNZIGV4dGVuZHMgentjb25zdHJ1Y3RvcihnLGgsdil7c3VwZXIoZyks''@;'; put 'put ''dGhpcy5wcmVkaWNhdGU9aCx0aGlzLnRoaXNBcmc9dix0aGlzLmNvdW50PTB9X25leHQoZyl7bGV0IGg7dHJ5e2g9dGhpcy5wcmVkaWNhdGUuY2FsbCh0aGlzLnRoaXNBcmcsZyx0aGlzLmNvdW50KyspfWNhdGNoKHYpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iodil9aCYm''@;'; put 'put ''dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpfX1mdW5jdGlvbiBOQyhkPW51bGwpe3JldHVybiBnPT5nLmxpZnQobmV3IGYwZShkKSl9Y2xhc3MgZjBle2NvbnN0cnVjdG9yKGcpe3RoaXMuZGVmYXVsdFZhbHVlPWd9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgV2QoZyx0aGlzLmRl''@;'; put 'put ''ZmF1bHRWYWx1ZSkpfX1jbGFzcyBXZCBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLmRlZmF1bHRWYWx1ZT1oLHRoaXMuaXNFbXB0eT0hMH1fbmV4dChnKXt0aGlzLmlzRW1wdHk9ITEsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpfV9jb21wbGV0ZSgpe3RoaXMuaXNF''@;'; put 'put ''bXB0eSYmdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHRoaXMuZGVmYXVsdFZhbHVlKSx0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWZ1bmN0aW9uIE1ZKGQ9RVkpe3JldHVybiBnPT5nLmxpZnQobmV3IGgwZShkKSl9Y2xhc3MgaDBle2NvbnN0cnVjdG9yKGcpe3RoaXMuZXJyb3JGYWN0b3J5''@;'; put 'put ''PWd9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgZDBlKGcsdGhpcy5lcnJvckZhY3RvcnkpKX19Y2xhc3MgZDBlIGV4dGVuZHMgentjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKGcpLHRoaXMuZXJyb3JGYWN0b3J5PWgsdGhpcy5oYXNWYWx1ZT0hMX1fbmV4dChnKXt0aGlzLmhhc1Zh''@;'; put 'put ''bHVlPSEwLHRoaXMuZGVzdGluYXRpb24ubmV4dChnKX1fY29tcGxldGUoKXtpZih0aGlzLmhhc1ZhbHVlKXJldHVybiB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCk7e2xldCBnO3RyeXtnPXRoaXMuZXJyb3JGYWN0b3J5KCl9Y2F0Y2goaCl7Zz1ofXRoaXMuZGVzdGluYXRpb24uZXJyb3Io''@;'; put 'put ''Zyl9fX1mdW5jdGlvbiBFWSgpe3JldHVybiBuZXcgSEN9ZnVuY3Rpb24gaXAoZCxnKXtjb25zdCBoPWFyZ3VtZW50cy5sZW5ndGg+PTI7cmV0dXJuIHY9PnYucGlwZShkP20yKCh5LEMpPT5kKHksQyx2KSk6VixUNSgxKSxoP05DKGcpOk1ZKCgpPT5uZXcgSEMpKX1mdW5jdGlvbiBZZChkLGcp''@;'; put 'put ''e3JldHVybiB1cihkLGcsMSl9ZnVuY3Rpb24gWjYoKXt9ZnVuY3Rpb24gajIoZCxnLGgpe3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4geS5saWZ0KG5ldyBwMGUoZCxnLGgpKX19Y2xhc3MgcDBle2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLm5leHRPck9ic2VydmVyPWcsdGhpcy5lcnJvcj1o''@;'; put 'put ''LHRoaXMuY29tcGxldGU9dn1jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBnMGUoZyx0aGlzLm5leHRPck9ic2VydmVyLHRoaXMuZXJyb3IsdGhpcy5jb21wbGV0ZSkpfX1jbGFzcyBnMGUgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcpLHRoaXMuX3RhcE5l''@;'; put 'put ''eHQ9WjYsdGhpcy5fdGFwRXJyb3I9WjYsdGhpcy5fdGFwQ29tcGxldGU9WjYsdGhpcy5fdGFwRXJyb3I9dnx8WjYsdGhpcy5fdGFwQ29tcGxldGU9eXx8WjYsc2UoaCk/KHRoaXMuX2NvbnRleHQ9dGhpcyx0aGlzLl90YXBOZXh0PWgpOmgmJih0aGlzLl9jb250ZXh0PWgsdGhpcy5fdGFwTmV4''@;'; put 'put ''dD1oLm5leHR8fFo2LHRoaXMuX3RhcEVycm9yPWguZXJyb3J8fFo2LHRoaXMuX3RhcENvbXBsZXRlPWguY29tcGxldGV8fFo2KX1fbmV4dChnKXt0cnl7dGhpcy5fdGFwTmV4dC5jYWxsKHRoaXMuX2NvbnRleHQsZyl9Y2F0Y2goaCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJv''@;'; put 'put ''cihoKX10aGlzLmRlc3RpbmF0aW9uLm5leHQoZyl9X2Vycm9yKGcpe3RyeXt0aGlzLl90YXBFcnJvci5jYWxsKHRoaXMuX2NvbnRleHQsZyl9Y2F0Y2goaCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihoKX10aGlzLmRlc3RpbmF0aW9uLmVycm9yKGcpfV9jb21wbGV0ZSgp''@;'; put 'put ''e3RyeXt0aGlzLl90YXBDb21wbGV0ZS5jYWxsKHRoaXMuX2NvbnRleHQpfWNhdGNoKGcpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IoZyl9cmV0dXJuIHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX19ZnVuY3Rpb24gSTUoZCl7cmV0dXJuIGZ1bmN0aW9uKGgpe2NvbnN0''@;'; put 'put ''IHY9bmV3IHhZKGQpLHk9aC5saWZ0KHYpO3JldHVybiB2LmNhdWdodD15fX1jbGFzcyB4WXtjb25zdHJ1Y3RvcihnKXt0aGlzLnNlbGVjdG9yPWd9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgazcoZyx0aGlzLnNlbGVjdG9yLHRoaXMuY2F1Z2h0KSl9fWNsYXNzIGs3IGV4dGVu''@;'; put 'put ''ZHMgTm57Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKGcpLHRoaXMuc2VsZWN0b3I9aCx0aGlzLmNhdWdodD12fWVycm9yKGcpe2lmKCF0aGlzLmlzU3RvcHBlZCl7bGV0IGg7dHJ5e2g9dGhpcy5zZWxlY3RvcihnLHRoaXMuY2F1Z2h0KX1jYXRjaChDKXtyZXR1cm4gdm9pZCBzdXBlci5lcnJv''@;'; put 'put ''cihDKX10aGlzLl91bnN1YnNjcmliZUFuZFJlY3ljbGUoKTtjb25zdCB2PW5ldyBibih0aGlzKTt0aGlzLmFkZCh2KTtjb25zdCB5PWVyKGgsdik7eSE9PXYmJnRoaXMuYWRkKHkpfX19ZnVuY3Rpb24gVFkoZCxnKXtsZXQgaD0hMTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MiYmKGg9ITAp''@;'; put 'put ''LGZ1bmN0aW9uKHkpe3JldHVybiB5LmxpZnQobmV3IG0wZShkLGcsaCkpfX1jbGFzcyBtMGV7Y29uc3RydWN0b3IoZyxoLHY9ITEpe3RoaXMuYWNjdW11bGF0b3I9Zyx0aGlzLnNlZWQ9aCx0aGlzLmhhc1NlZWQ9dn1jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyB2MGUoZyx0aGlz''@;'; put 'put ''LmFjY3VtdWxhdG9yLHRoaXMuc2VlZCx0aGlzLmhhc1NlZWQpKX19Y2xhc3MgdjBlIGV4dGVuZHMgentjb25zdHJ1Y3RvcihnLGgsdix5KXtzdXBlcihnKSx0aGlzLmFjY3VtdWxhdG9yPWgsdGhpcy5fc2VlZD12LHRoaXMuaGFzU2VlZD15LHRoaXMuaW5kZXg9MH1nZXQgc2VlZCgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9zZWVkfXNldCBzZWVkKGcpe3RoaXMuaGFzU2VlZD0hMCx0aGlzLl9zZWVkPWd9X25leHQoZyl7aWYodGhpcy5oYXNTZWVkKXJldHVybiB0aGlzLl90cnlOZXh0KGcpO3RoaXMuc2VlZD1nLHRoaXMuZGVzdGluYXRpb24ubmV4dChnKX1fdHJ5TmV4dChnKXtjb25zdCBoPXRoaXMu''@;'; put 'put ''aW5kZXgrKztsZXQgdjt0cnl7dj10aGlzLmFjY3VtdWxhdG9yKHRoaXMuc2VlZCxnLGgpfWNhdGNoKHkpe3RoaXMuZGVzdGluYXRpb24uZXJyb3IoeSl9dGhpcy5zZWVkPXYsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHYpfX1mdW5jdGlvbiBnSChkKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IDA9PT1kP0NJKCk6aC5saWZ0KG5ldyBTNyhkKSl9fWNsYXNzIFM3e2NvbnN0cnVjdG9yKGcpe2lmKHRoaXMudG90YWw9Zyx0aGlzLnRvdGFsPDApdGhyb3cgbmV3IHBIfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IElZKGcsdGhpcy50b3RhbCkpfX1jbGFzcyBJWSBleHRlbmRz''@;'; put 'put ''IHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLnRvdGFsPWgsdGhpcy5yaW5nPW5ldyBBcnJheSx0aGlzLmNvdW50PTB9X25leHQoZyl7Y29uc3QgaD10aGlzLnJpbmcsdj10aGlzLnRvdGFsLHk9dGhpcy5jb3VudCsrO2gubGVuZ3RoPHY/aC5wdXNoKGcpOmhbeSV2XT1nfV9jb21w''@;'; put 'put ''bGV0ZSgpe2NvbnN0IGc9dGhpcy5kZXN0aW5hdGlvbjtsZXQgaD10aGlzLmNvdW50O2lmKGg+MCl7Y29uc3Qgdj10aGlzLmNvdW50Pj10aGlzLnRvdGFsP3RoaXMudG90YWw6dGhpcy5jb3VudCx5PXRoaXMucmluZztmb3IobGV0IEM9MDtDPHY7QysrKXtjb25zdCBJPWgrKyV2O2cubmV4dCh5''@;'; put 'put ''W0ldKX19Zy5jb21wbGV0ZSgpfX1mdW5jdGlvbiBtSChkLGcpe2NvbnN0IGg9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gdj0+di5waXBlKGQ/bTIoKHksQyk9PmQoeSxDLHYpKTpWLGdIKDEpLGg/TkMoZyk6TVkoKCk9Pm5ldyBIQykpfWNsYXNzIGZ5e2NvbnN0cnVjdG9yKGcsaCl7dGhp''@;'; put 'put ''cy5wcmVkaWNhdGU9Zyx0aGlzLmluY2x1c2l2ZT1ofWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IFVkKGcsdGhpcy5wcmVkaWNhdGUsdGhpcy5pbmNsdXNpdmUpKX19Y2xhc3MgVWQgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcihnKSx0aGlzLnByZWRpY2F0ZT1o''@;'; put 'put ''LHRoaXMuaW5jbHVzaXZlPXYsdGhpcy5pbmRleD0wfV9uZXh0KGcpe2NvbnN0IGg9dGhpcy5kZXN0aW5hdGlvbjtsZXQgdjt0cnl7dj10aGlzLnByZWRpY2F0ZShnLHRoaXMuaW5kZXgrKyl9Y2F0Y2goeSl7cmV0dXJuIHZvaWQgaC5lcnJvcih5KX10aGlzLm5leHRPckNvbXBsZXRlKGcsdil9''@;'; put 'put ''bmV4dE9yQ29tcGxldGUoZyxoKXtjb25zdCB2PXRoaXMuZGVzdGluYXRpb247Qm9vbGVhbihoKT92Lm5leHQoZyk6KHRoaXMuaW5jbHVzaXZlJiZ2Lm5leHQoZyksdi5jb21wbGV0ZSgpKX19ZnVuY3Rpb24gejYoZCl7cmV0dXJuIGc9PmcubGlmdChuZXcgTFkoZCkpfWNsYXNzIExZe2NvbnN0''@;'; put 'put ''cnVjdG9yKGcpe3RoaXMudmFsdWU9Z31jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBBMGUoZyx0aGlzLnZhbHVlKSl9fWNsYXNzIEEwZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLnZhbHVlPWh9X25leHQoZyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0''@;'; put 'put ''KHRoaXMudmFsdWUpfX1mdW5jdGlvbiBWQyhkKXtyZXR1cm4gZz0+Zy5saWZ0KG5ldyBrZihkKSl9Y2xhc3Mga2Z7Y29uc3RydWN0b3IoZyl7dGhpcy5jYWxsYmFjaz1nfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IHZIKGcsdGhpcy5jYWxsYmFjaykpfX1jbGFzcyB2SCBleHRl''@;'; put 'put ''bmRzIHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLmFkZChuZXcgVGUoaCkpfX1jb25zdCBQbD0icHJpbWFyeSIsRDU9U3ltYm9sKCJSb3V0ZVRpdGxlIik7Y2xhc3MgeTBle2NvbnN0cnVjdG9yKGcpe3RoaXMucGFyYW1zPWd8fHt9fWhhcyhnKXtyZXR1cm4gT2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucGFyYW1zLGcpfWdldChnKXtpZih0aGlzLmhhcyhnKSl7Y29uc3QgaD10aGlzLnBhcmFtc1tnXTtyZXR1cm4gQXJyYXkuaXNBcnJheShoKT9oWzBdOmh9cmV0dXJuIG51bGx9Z2V0QWxsKGcpe2lmKHRoaXMuaGFzKGcpKXtjb25zdCBoPXRo''@;'; put 'put ''aXMucGFyYW1zW2ddO3JldHVybiBBcnJheS5pc0FycmF5KGgpP2g6W2hdfXJldHVybltdfWdldCBrZXlzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGFyYW1zKX19ZnVuY3Rpb24gU2YoZCl7cmV0dXJuIG5ldyB5MGUoZCl9ZnVuY3Rpb24ga0koZCxnLGgpe2NvbnN0IHY9aC5wYXRoLnNw''@;'; put 'put ''bGl0KCIvIik7aWYodi5sZW5ndGg+ZC5sZW5ndGh8fCJmdWxsIj09PWgucGF0aE1hdGNoJiYoZy5oYXNDaGlsZHJlbigpfHx2Lmxlbmd0aDxkLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgeT17fTtmb3IobGV0IEM9MDtDPHYubGVuZ3RoO0MrKyl7Y29uc3QgST12W0NdLGo9ZFtDXTtpZihJ''@;'; put 'put ''LnN0YXJ0c1dpdGgoIjoiKSl5W0kuc3Vic3RyaW5nKDEpXT1qO2Vsc2UgaWYoSSE9PWoucGF0aClyZXR1cm4gbnVsbH1yZXR1cm57Y29uc3VtZWQ6ZC5zbGljZSgwLHYubGVuZ3RoKSxwb3NQYXJhbXM6eX19ZnVuY3Rpb24gdWMoZCxnKXtjb25zdCBoPWQ/T2JqZWN0LmtleXMoZCk6dm9pZCAw''@;'; put 'put ''LHY9Zz9PYmplY3Qua2V5cyhnKTp2b2lkIDA7aWYoIWh8fCF2fHxoLmxlbmd0aCE9di5sZW5ndGgpcmV0dXJuITE7bGV0IHk7Zm9yKGxldCBDPTA7QzxoLmxlbmd0aDtDKyspaWYoeT1oW0NdLCFPWShkW3ldLGdbeV0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIE9ZKGQsZyl7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShkKSYmQXJyYXkuaXNBcnJheShnKSl7aWYoZC5sZW5ndGghPT1nLmxlbmd0aClyZXR1cm4hMTtjb25zdCBoPVsuLi5kXS5zb3J0KCksdj1bLi4uZ10uc29ydCgpO3JldHVybiBoLmV2ZXJ5KCh5LEMpPT52W0NdPT09eSl9cmV0dXJuIGQ9PT1nfWZ1bmN0aW9uIHlIKGQpe3Jl''@;'; put 'put ''dHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGQpfWZ1bmN0aW9uIHdIKGQpe3JldHVybiBkLmxlbmd0aD4wP2RbZC5sZW5ndGgtMV06bnVsbH1mdW5jdGlvbiBUYyhkLGcpe2Zvcihjb25zdCBoIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShoKSYmZyhkW2hdLGgpfWZ1bmN0aW9u''@;'; put 'put ''IEw1KGQpe3JldHVybiBZNChkKT9kOnM1KGQpP3BuKFByb21pc2UucmVzb2x2ZShkKSk6VjAoZCl9Y29uc3QgYjBlPXtleGFjdDpmdW5jdGlvbiBGWShkLGcsaCl7aWYoIUU3KGQuc2VnbWVudHMsZy5zZWdtZW50cyl8fCFaQyhkLnNlZ21lbnRzLGcuc2VnbWVudHMsaCl8fGQubnVtYmVyT2ZD''@;'; put 'put ''aGlsZHJlbiE9PWcubnVtYmVyT2ZDaGlsZHJlbilyZXR1cm4hMTtmb3IoY29uc3QgdiBpbiBnLmNoaWxkcmVuKWlmKCFkLmNoaWxkcmVuW3ZdfHwhRlkoZC5jaGlsZHJlblt2XSxnLmNoaWxkcmVuW3ZdLGgpKXJldHVybiExO3JldHVybiEwfSxzdWJzZXQ6U0l9LFJZPXtleGFjdDpmdW5jdGlv''@;'; put 'put ''biBQWShkLGcpe3JldHVybiB1YyhkLGcpfSxzdWJzZXQ6ZnVuY3Rpb24gXzBlKGQsZyl7cmV0dXJuIE9iamVjdC5rZXlzKGcpLmxlbmd0aDw9T2JqZWN0LmtleXMoZCkubGVuZ3RoJiZPYmplY3Qua2V5cyhnKS5ldmVyeShoPT5PWShkW2hdLGdbaF0pKX0saWdub3JlZDooKT0+ITB9O2Z1bmN0''@;'; put 'put ''aW9uIEJZKGQsZyxoKXtyZXR1cm4gYjBlW2gucGF0aHNdKGQucm9vdCxnLnJvb3QsaC5tYXRyaXhQYXJhbXMpJiZSWVtoLnF1ZXJ5UGFyYW1zXShkLnF1ZXJ5UGFyYW1zLGcucXVlcnlQYXJhbXMpJiYhKCJleGFjdCI9PT1oLmZyYWdtZW50JiZkLmZyYWdtZW50IT09Zy5mcmFnbWVudCl9ZnVu''@;'; put 'put ''Y3Rpb24gU0koZCxnLGgpe3JldHVybiBIWShkLGcsZy5zZWdtZW50cyxoKX1mdW5jdGlvbiBIWShkLGcsaCx2KXtpZihkLnNlZ21lbnRzLmxlbmd0aD5oLmxlbmd0aCl7Y29uc3QgeT1kLnNlZ21lbnRzLnNsaWNlKDAsaC5sZW5ndGgpO3JldHVybiEoIUU3KHksaCl8fGcuaGFzQ2hpbGRyZW4o''@;'; put 'put ''KXx8IVpDKHksaCx2KSl9aWYoZC5zZWdtZW50cy5sZW5ndGg9PT1oLmxlbmd0aCl7aWYoIUU3KGQuc2VnbWVudHMsaCl8fCFaQyhkLnNlZ21lbnRzLGgsdikpcmV0dXJuITE7Zm9yKGNvbnN0IHkgaW4gZy5jaGlsZHJlbilpZighZC5jaGlsZHJlblt5XXx8IVNJKGQuY2hpbGRyZW5beV0sZy5j''@;'; put 'put ''aGlsZHJlblt5XSx2KSlyZXR1cm4hMTtyZXR1cm4hMH17Y29uc3QgeT1oLnNsaWNlKDAsZC5zZWdtZW50cy5sZW5ndGgpLEM9aC5zbGljZShkLnNlZ21lbnRzLmxlbmd0aCk7cmV0dXJuISEoRTcoZC5zZWdtZW50cyx5KSYmWkMoZC5zZWdtZW50cyx5LHYpJiZkLmNoaWxkcmVuW1BsXSkmJkhZ''@;'; put 'put ''KGQuY2hpbGRyZW5bUGxdLGcsQyx2KX19ZnVuY3Rpb24gWkMoZCxnLGgpe3JldHVybiBnLmV2ZXJ5KCh2LHkpPT5SWVtoXShkW3ldLnBhcmFtZXRlcnMsdi5wYXJhbWV0ZXJzKSl9Y2xhc3MgTTd7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMucm9vdD1nLHRoaXMucXVlcnlQYXJhbXM9aCx0aGlz''@;'; put 'put ''LmZyYWdtZW50PXZ9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcHx8KHRoaXMuX3F1ZXJ5UGFyYW1NYXA9U2YodGhpcy5xdWVyeVBhcmFtcykpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXtyZXR1cm4galkuc2VyaWFsaXplKHRoaXMpfX1jbGFz''@;'; put 'put ''cyBNbHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuc2VnbWVudHM9Zyx0aGlzLmNoaWxkcmVuPWgsdGhpcy5wYXJlbnQ9bnVsbCxUYyhoLCh2LHkpPT52LnBhcmVudD10aGlzKX1oYXNDaGlsZHJlbigpe3JldHVybiB0aGlzLm51bWJlck9mQ2hpbGRyZW4+MH1nZXQgbnVtYmVyT2ZDaGlsZHJlbigp''@;'; put 'put ''e3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmNoaWxkcmVuKS5sZW5ndGh9dG9TdHJpbmcoKXtyZXR1cm4gV0ModGhpcyl9fWNsYXNzIHpDe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5wYXRoPWcsdGhpcy5wYXJhbWV0ZXJzPWh9Z2V0IHBhcmFtZXRlck1hcCgpe3JldHVybiB0aGlzLl9wYXJhbWV0''@;'; put 'put ''ZXJNYXB8fCh0aGlzLl9wYXJhbWV0ZXJNYXA9U2YodGhpcy5wYXJhbWV0ZXJzKSksdGhpcy5fcGFyYW1ldGVyTWFwfXRvU3RyaW5nKCl7cmV0dXJuIENIKHRoaXMpfX1mdW5jdGlvbiBFNyhkLGcpe3JldHVybiBkLmxlbmd0aD09PWcubGVuZ3RoJiZkLmV2ZXJ5KChoLHYpPT5oLnBhdGg9PT1n''@;'; put 'put ''W3ZdLnBhdGgpfWxldCBiSD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdDfSxwcm92aWRlZEluOiJyb290In0pLGR9KSgp''@;'; put 'put ''O2NsYXNzIEdDe3BhcnNlKGcpe2NvbnN0IGg9bmV3IFdZKGcpO3JldHVybiBuZXcgTTcoaC5wYXJzZVJvb3RTZWdtZW50KCksaC5wYXJzZVF1ZXJ5UGFyYW1zKCksaC5wYXJzZUZyYWdtZW50KCkpfXNlcmlhbGl6ZShnKXtjb25zdCBoPWAvJHtoeShnLnJvb3QsITApfWAsdj1mdW5jdGlvbiBr''@;'; put 'put ''SChkKXtjb25zdCBnPU9iamVjdC5rZXlzKGQpLm1hcChoPT57Y29uc3Qgdj1kW2hdO3JldHVybiBBcnJheS5pc0FycmF5KHYpP3YubWFwKHk9PmAke1VDKGgpfT0ke1VDKHkpfWApLmpvaW4oIiYiKTpgJHtVQyhoKX09JHtVQyh2KX1gfSkuZmlsdGVyKGg9PiEhaCk7cmV0dXJuIGcubGVuZ3Ro''@;'; put 'put ''P2A/JHtnLmpvaW4oIiYiKX1gOiIifShnLnF1ZXJ5UGFyYW1zKSx5PSJzdHJpbmciPT10eXBlb2YgZy5mcmFnbWVudD9gIyR7ZnVuY3Rpb24gWlkoZCl7cmV0dXJuIGVuY29kZVVSSShkKX0oZy5mcmFnbWVudCl9YDoiIjtyZXR1cm5gJHtofSR7dn0ke3l9YH19Y29uc3Qgalk9bmV3IEdDO2Z1''@;'; put 'put ''bmN0aW9uIFdDKGQpe3JldHVybiBkLnNlZ21lbnRzLm1hcChnPT5DSChnKSkuam9pbigiLyIpfWZ1bmN0aW9uIGh5KGQsZyl7aWYoIWQuaGFzQ2hpbGRyZW4oKSlyZXR1cm4gV0MoZCk7aWYoZyl7Y29uc3QgaD1kLmNoaWxkcmVuW1BsXT9oeShkLmNoaWxkcmVuW1BsXSwhMSk6IiIsdj1bXTty''@;'; put 'put ''ZXR1cm4gVGMoZC5jaGlsZHJlbiwoeSxDKT0+e0MhPT1QbCYmdi5wdXNoKGAke0N9OiR7aHkoeSwhMSl9YCl9KSx2Lmxlbmd0aD4wP2Ake2h9KCR7di5qb2luKCIvLyIpfSlgOmh9e2NvbnN0IGg9ZnVuY3Rpb24gVlkoZCxnKXtsZXQgaD1bXTtyZXR1cm4gVGMoZC5jaGlsZHJlbiwodix5KT0+''@;'; put 'put ''e3k9PT1QbCYmKGg9aC5jb25jYXQoZyh2LHkpKSl9KSxUYyhkLmNoaWxkcmVuLCh2LHkpPT57eSE9PVBsJiYoaD1oLmNvbmNhdChnKHYseSkpKX0pLGh9KGQsKHYseSk9Pnk9PT1QbD9baHkoZC5jaGlsZHJlbltQbF0sITEpXTpbYCR7eX06JHtoeSh2LCExKX1gXSk7cmV0dXJuIDE9PT1PYmpl''@;'; put 'put ''Y3Qua2V5cyhkLmNoaWxkcmVuKS5sZW5ndGgmJm51bGwhPWQuY2hpbGRyZW5bUGxdP2Ake1dDKGQpfS8ke2hbMF19YDpgJHtXQyhkKX0vKCR7aC5qb2luKCIvLyIpfSlgfX1mdW5jdGlvbiBZQyhkKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGQpLnJlcGxhY2UoLyU0MC9nLCJAIikucmVw''@;'; put 'put ''bGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKX1mdW5jdGlvbiBVQyhkKXtyZXR1cm4gWUMoZCkucmVwbGFjZSgvJTNCL2dpLCI7Iil9ZnVuY3Rpb24gTUkoZCl7cmV0dXJuIFlDKGQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2Uo''@;'; put 'put ''L1wpL2csIiUyOSIpLnJlcGxhY2UoLyUyNi9naSwiJiIpfWZ1bmN0aW9uIEVJKGQpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZCl9ZnVuY3Rpb24gX0goZCl7cmV0dXJuIEVJKGQucmVwbGFjZSgvXCsvZywiJTIwIikpfWZ1bmN0aW9uIENIKGQpe3JldHVybmAke01JKGQucGF0aCl9JHtm''@;'; put 'put ''dW5jdGlvbiBDMGUoZCl7cmV0dXJuIE9iamVjdC5rZXlzKGQpLm1hcChnPT5gOyR7TUkoZyl9PSR7TUkoZFtnXSl9YCkuam9pbigiIil9KGQucGFyYW1ldGVycyl9YH1jb25zdCB6WT0vXlteXC8oKT87PSNdKy87ZnVuY3Rpb24geEkoZCl7Y29uc3QgZz1kLm1hdGNoKHpZKTtyZXR1cm4gZz9n''@;'; put 'put ''WzBdOiIifWNvbnN0IGswZT0vXltePT8mI10rLyxTSD0vXlteJiNdKy87Y2xhc3MgV1l7Y29uc3RydWN0b3IoZyl7dGhpcy51cmw9Zyx0aGlzLnJlbWFpbmluZz1nfXBhcnNlUm9vdFNlZ21lbnQoKXtyZXR1cm4gdGhpcy5jb25zdW1lT3B0aW9uYWwoIi8iKSwiIj09PXRoaXMucmVtYWluaW5n''@;'; put 'put ''fHx0aGlzLnBlZWtTdGFydHNXaXRoKCI/Iil8fHRoaXMucGVla1N0YXJ0c1dpdGgoIiMiKT9uZXcgTWwoW10se30pOm5ldyBNbChbXSx0aGlzLnBhcnNlQ2hpbGRyZW4oKSl9cGFyc2VRdWVyeVBhcmFtcygpe2NvbnN0IGc9e307aWYodGhpcy5jb25zdW1lT3B0aW9uYWwoIj8iKSlkb3t0aGlz''@;'; put 'put ''LnBhcnNlUXVlcnlQYXJhbShnKX13aGlsZSh0aGlzLmNvbnN1bWVPcHRpb25hbCgiJiIpKTtyZXR1cm4gZ31wYXJzZUZyYWdtZW50KCl7cmV0dXJuIHRoaXMuY29uc3VtZU9wdGlvbmFsKCIjIik/ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucmVtYWluaW5nKTpudWxsfXBhcnNlQ2hpbGRyZW4o''@;'; put 'put ''KXtpZigiIj09PXRoaXMucmVtYWluaW5nKXJldHVybnt9O3RoaXMuY29uc3VtZU9wdGlvbmFsKCIvIik7Y29uc3QgZz1bXTtmb3IodGhpcy5wZWVrU3RhcnRzV2l0aCgiKCIpfHxnLnB1c2godGhpcy5wYXJzZVNlZ21lbnQoKSk7dGhpcy5wZWVrU3RhcnRzV2l0aCgiLyIpJiYhdGhpcy5wZWVr''@;'; put 'put ''U3RhcnRzV2l0aCgiLy8iKSYmIXRoaXMucGVla1N0YXJ0c1dpdGgoIi8oIik7KXRoaXMuY2FwdHVyZSgiLyIpLGcucHVzaCh0aGlzLnBhcnNlU2VnbWVudCgpKTtsZXQgaD17fTt0aGlzLnBlZWtTdGFydHNXaXRoKCIvKCIpJiYodGhpcy5jYXB0dXJlKCIvIiksaD10aGlzLnBhcnNlUGFyZW5z''@;'; put 'put ''KCEwKSk7bGV0IHY9e307cmV0dXJuIHRoaXMucGVla1N0YXJ0c1dpdGgoIigiKSYmKHY9dGhpcy5wYXJzZVBhcmVucyghMSkpLChnLmxlbmd0aD4wfHxPYmplY3Qua2V5cyhoKS5sZW5ndGg+MCkmJih2W1BsXT1uZXcgTWwoZyxoKSksdn1wYXJzZVNlZ21lbnQoKXtjb25zdCBnPXhJKHRoaXMu''@;'; put 'put ''cmVtYWluaW5nKTtpZigiIj09PWcmJnRoaXMucGVla1N0YXJ0c1dpdGgoIjsiKSl0aHJvdyBuZXcgcXQoNDAwOSwhMSk7cmV0dXJuIHRoaXMuY2FwdHVyZShnKSxuZXcgekMoRUkoZyksdGhpcy5wYXJzZU1hdHJpeFBhcmFtcygpKX1wYXJzZU1hdHJpeFBhcmFtcygpe2NvbnN0IGc9e307Zm9y''@;'; put 'put ''KDt0aGlzLmNvbnN1bWVPcHRpb25hbCgiOyIpOyl0aGlzLnBhcnNlUGFyYW0oZyk7cmV0dXJuIGd9cGFyc2VQYXJhbShnKXtjb25zdCBoPXhJKHRoaXMucmVtYWluaW5nKTtpZighaClyZXR1cm47dGhpcy5jYXB0dXJlKGgpO2xldCB2PSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikp''@;'; put 'put ''e2NvbnN0IHk9eEkodGhpcy5yZW1haW5pbmcpO3kmJih2PXksdGhpcy5jYXB0dXJlKHYpKX1nW0VJKGgpXT1FSSh2KX1wYXJzZVF1ZXJ5UGFyYW0oZyl7Y29uc3QgaD1mdW5jdGlvbiBRQyhkKXtjb25zdCBnPWQubWF0Y2goazBlKTtyZXR1cm4gZz9nWzBdOiIifSh0aGlzLnJlbWFpbmluZyk7''@;'; put 'put ''aWYoIWgpcmV0dXJuO3RoaXMuY2FwdHVyZShoKTtsZXQgdj0iIjtpZih0aGlzLmNvbnN1bWVPcHRpb25hbCgiPSIpKXtjb25zdCBJPWZ1bmN0aW9uIEdZKGQpe2NvbnN0IGc9ZC5tYXRjaChTSCk7cmV0dXJuIGc/Z1swXToiIn0odGhpcy5yZW1haW5pbmcpO0kmJih2PUksdGhpcy5jYXB0dXJl''@;'; put 'put ''KHYpKX1jb25zdCB5PV9IKGgpLEM9X0godik7aWYoZy5oYXNPd25Qcm9wZXJ0eSh5KSl7bGV0IEk9Z1t5XTtBcnJheS5pc0FycmF5KEkpfHwoST1bSV0sZ1t5XT1JKSxJLnB1c2goQyl9ZWxzZSBnW3ldPUN9cGFyc2VQYXJlbnMoZyl7Y29uc3QgaD17fTtmb3IodGhpcy5jYXB0dXJlKCIoIik7''@;'; put 'put ''IXRoaXMuY29uc3VtZU9wdGlvbmFsKCIpIikmJnRoaXMucmVtYWluaW5nLmxlbmd0aD4wOyl7Y29uc3Qgdj14SSh0aGlzLnJlbWFpbmluZykseT10aGlzLnJlbWFpbmluZ1t2Lmxlbmd0aF07aWYoIi8iIT09eSYmIikiIT09eSYmIjsiIT09eSl0aHJvdyBuZXcgcXQoNDAxMCwhMSk7bGV0IEM7''@;'; put 'put ''di5pbmRleE9mKCI6Iik+LTE/KEM9di5zbGljZSgwLHYuaW5kZXhPZigiOiIpKSx0aGlzLmNhcHR1cmUoQyksdGhpcy5jYXB0dXJlKCI6IikpOmcmJihDPVBsKTtjb25zdCBJPXRoaXMucGFyc2VDaGlsZHJlbigpO2hbQ109MT09PU9iamVjdC5rZXlzKEkpLmxlbmd0aD9JW1BsXTpuZXcgTWwo''@;'; put 'put ''W10sSSksdGhpcy5jb25zdW1lT3B0aW9uYWwoIi8vIil9cmV0dXJuIGh9cGVla1N0YXJ0c1dpdGgoZyl7cmV0dXJuIHRoaXMucmVtYWluaW5nLnN0YXJ0c1dpdGgoZyl9Y29uc3VtZU9wdGlvbmFsKGcpe3JldHVybiEhdGhpcy5wZWVrU3RhcnRzV2l0aChnKSYmKHRoaXMucmVtYWluaW5nPXRo''@;'; put 'put ''aXMucmVtYWluaW5nLnN1YnN0cmluZyhnLmxlbmd0aCksITApfWNhcHR1cmUoZyl7aWYoIXRoaXMuY29uc3VtZU9wdGlvbmFsKGcpKXRocm93IG5ldyBxdCg0MDExLCExKX19ZnVuY3Rpb24gTUgoZCl7cmV0dXJuIGQuc2VnbWVudHMubGVuZ3RoPjA/bmV3IE1sKFtdLHtbUGxdOmR9KTpkfWZ1''@;'; put 'put ''bmN0aW9uIGR5KGQpe2NvbnN0IGc9e307Zm9yKGNvbnN0IHYgb2YgT2JqZWN0LmtleXMoZC5jaGlsZHJlbikpe2NvbnN0IEM9ZHkoZC5jaGlsZHJlblt2XSk7KEMuc2VnbWVudHMubGVuZ3RoPjB8fEMuaGFzQ2hpbGRyZW4oKSkmJihnW3ZdPUMpfXJldHVybiBmdW5jdGlvbiBTMGUoZCl7aWYo''@;'; put 'put ''MT09PWQubnVtYmVyT2ZDaGlsZHJlbiYmZC5jaGlsZHJlbltQbF0pe2NvbnN0IGc9ZC5jaGlsZHJlbltQbF07cmV0dXJuIG5ldyBNbChkLnNlZ21lbnRzLmNvbmNhdChnLnNlZ21lbnRzKSxnLmNoaWxkcmVuKX1yZXR1cm4gZH0obmV3IE1sKGQuc2VnbWVudHMsZykpfWZ1bmN0aW9uIEc2KGQp''@;'; put 'put ''e3JldHVybiBkIGluc3RhbmNlb2YgTTd9ZnVuY3Rpb24gRTBlKGQsZyxoLHYseSl7dmFyIEM7aWYoMD09PWgubGVuZ3RoKXJldHVybiBneShnLnJvb3QsZy5yb290LGcucm9vdCx2LHkpO2NvbnN0IGo9ZnVuY3Rpb24gVEgoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkWzBdJiYxPT09ZC5sZW5n''@;'; put 'put ''dGgmJiIvIj09PWRbMF0pcmV0dXJuIG5ldyB4SCghMCwwLGQpO2xldCBnPTAsaD0hMTtjb25zdCB2PWQucmVkdWNlKCh5LEMsSSk9PntpZigib2JqZWN0Ij09dHlwZW9mIEMmJm51bGwhPUMpe2lmKEMub3V0bGV0cyl7Y29uc3Qgaj17fTtyZXR1cm4gVGMoQy5vdXRsZXRzLChjZSxfZSk9Pntq''@;'; put 'put ''W19lXT0ic3RyaW5nIj09dHlwZW9mIGNlP2NlLnNwbGl0KCIvIik6Y2V9KSxbLi4ueSx7b3V0bGV0czpqfV19aWYoQy5zZWdtZW50UGF0aClyZXR1cm5bLi4ueSxDLnNlZ21lbnRQYXRoXX1yZXR1cm4ic3RyaW5nIiE9dHlwZW9mIEM/Wy4uLnksQ106MD09PUk/KEMuc3BsaXQoIi8iKS5mb3JF''@;'; put 'put ''YWNoKChqLGNlKT0+ezA9PWNlJiYiLiI9PT1qfHwoMD09Y2UmJiIiPT09aj9oPSEwOiIuLiI9PT1qP2crKzoiIiE9aiYmeS5wdXNoKGopKX0pLHkpOlsuLi55LENdfSxbXSk7cmV0dXJuIG5ldyB4SChoLGcsdil9KGgpO3JldHVybiBqLnRvUm9vdCgpP2d5KGcucm9vdCxnLnJvb3QsbmV3IE1s''@;'; put 'put ''KFtdLHt9KSx2LHkpOmZ1bmN0aW9uIGNlKFJlKXt2YXIgTmU7Y29uc3QgS2U9ZnVuY3Rpb24geDBlKGQsZyxoLHYpe2lmKGQuaXNBYnNvbHV0ZSlyZXR1cm4gbmV3IG15KGcucm9vdCwhMCwwKTtpZigtMT09PXYpcmV0dXJuIG5ldyBteShoLGg9PT1nLnJvb3QsMCk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IFFZKGQsZyxoKXtsZXQgdj1kLHk9ZyxDPWg7Zm9yKDtDPnk7KXtpZihDLT15LHY9di5wYXJlbnQsIXYpdGhyb3cgbmV3IHF0KDQwMDUsITEpO3k9di5zZWdtZW50cy5sZW5ndGh9cmV0dXJuIG5ldyBteSh2LCExLHktQyl9KGgsdisoWEMoZC5jb21tYW5kc1swXSk/MDoxKSxkLm51bWJlck9m''@;'; put 'put ''RG91YmxlRG90cyl9KGosZyxudWxsPT09KE5lPWQuc25hcHNob3QpfHx2b2lkIDA9PT1OZT92b2lkIDA6TmUuX3VybFNlZ21lbnQsUmUpLGh0PUtlLnByb2Nlc3NDaGlsZHJlbj92eShLZS5zZWdtZW50R3JvdXAsS2UuaW5kZXgsai5jb21tYW5kcyk6VEkoS2Uuc2VnbWVudEdyb3VwLEtlLmlu''@;'; put 'put ''ZGV4LGouY29tbWFuZHMpO3JldHVybiBneShnLnJvb3QsS2Uuc2VnbWVudEdyb3VwLGh0LHYseSl9KG51bGw9PT0oQz1kLnNuYXBzaG90KXx8dm9pZCAwPT09Qz92b2lkIDA6Qy5fbGFzdFBhdGhJbmRleCl9ZnVuY3Rpb24gWEMoZCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT1k''@;'; put 'put ''JiYhZC5vdXRsZXRzJiYhZC5zZWdtZW50UGF0aH1mdW5jdGlvbiBLQyhkKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJmQub3V0bGV0c31mdW5jdGlvbiBneShkLGcsaCx2LHkpe2xldCBJLEM9e307diYmVGModiwoY2UsX2UpPT57Q1tfZV09QXJyYXkuaXNBcnJheShjZSk/''@;'; put 'put ''Y2UubWFwKFJlPT5gJHtSZX1gKTpgJHtjZX1gfSksST1kPT09Zz9oOllZKGQsZyxoKTtjb25zdCBqPU1IKGR5KEkpKTtyZXR1cm4gbmV3IE03KGosQyx5KX1mdW5jdGlvbiBZWShkLGcsaCl7Y29uc3Qgdj17fTtyZXR1cm4gVGMoZC5jaGlsZHJlbiwoeSxDKT0+e3ZbQ109eT09PWc/aDpZWSh5''@;'; put 'put ''LGcsaCl9KSxuZXcgTWwoZC5zZWdtZW50cyx2KX1jbGFzcyB4SHtjb25zdHJ1Y3RvcihnLGgsdil7aWYodGhpcy5pc0Fic29sdXRlPWcsdGhpcy5udW1iZXJPZkRvdWJsZURvdHM9aCx0aGlzLmNvbW1hbmRzPXYsZyYmdi5sZW5ndGg+MCYmWEModlswXSkpdGhyb3cgbmV3IHF0KDQwMDMsITEp''@;'; put 'put ''O2NvbnN0IHk9di5maW5kKEtDKTtpZih5JiZ5IT09d0godikpdGhyb3cgbmV3IHF0KDQwMDQsITEpfXRvUm9vdCgpe3JldHVybiB0aGlzLmlzQWJzb2x1dGUmJjE9PT10aGlzLmNvbW1hbmRzLmxlbmd0aCYmIi8iPT10aGlzLmNvbW1hbmRzWzBdfX1jbGFzcyBteXtjb25zdHJ1Y3RvcihnLGgs''@;'; put 'put ''dil7dGhpcy5zZWdtZW50R3JvdXA9Zyx0aGlzLnByb2Nlc3NDaGlsZHJlbj1oLHRoaXMuaW5kZXg9dn19ZnVuY3Rpb24gVEkoZCxnLGgpe2lmKGR8fChkPW5ldyBNbChbXSx7fSkpLDA9PT1kLnNlZ21lbnRzLmxlbmd0aCYmZC5oYXNDaGlsZHJlbigpKXJldHVybiB2eShkLGcsaCk7Y29uc3Qg''@;'; put 'put ''dj1mdW5jdGlvbiBUMGUoZCxnLGgpe2xldCB2PTAseT1nO2NvbnN0IEM9e21hdGNoOiExLHBhdGhJbmRleDowLGNvbW1hbmRJbmRleDowfTtmb3IoO3k8ZC5zZWdtZW50cy5sZW5ndGg7KXtpZih2Pj1oLmxlbmd0aClyZXR1cm4gQztjb25zdCBJPWQuc2VnbWVudHNbeV0saj1oW3ZdO2lmKEtD''@;'; put 'put ''KGopKWJyZWFrO2NvbnN0IGNlPWAke2p9YCxfZT12PGgubGVuZ3RoLTE/aFt2KzFdOm51bGw7aWYoeT4wJiZ2b2lkIDA9PT1jZSlicmVhaztpZihjZSYmX2UmJiJvYmplY3QiPT10eXBlb2YgX2UmJnZvaWQgMD09PV9lLm91dGxldHMpe2lmKCFLWShjZSxfZSxJKSlyZXR1cm4gQzt2Kz0yfWVs''@;'; put 'put ''c2V7aWYoIUtZKGNlLHt9LEkpKXJldHVybiBDO3YrK315Kyt9cmV0dXJue21hdGNoOiEwLHBhdGhJbmRleDp5LGNvbW1hbmRJbmRleDp2fX0oZCxnLGgpLHk9aC5zbGljZSh2LmNvbW1hbmRJbmRleCk7aWYodi5tYXRjaCYmdi5wYXRoSW5kZXg8ZC5zZWdtZW50cy5sZW5ndGgpe2NvbnN0IEM9''@;'; put 'put ''bmV3IE1sKGQuc2VnbWVudHMuc2xpY2UoMCx2LnBhdGhJbmRleCkse30pO3JldHVybiBDLmNoaWxkcmVuW1BsXT1uZXcgTWwoZC5zZWdtZW50cy5zbGljZSh2LnBhdGhJbmRleCksZC5jaGlsZHJlbiksdnkoQywwLHkpfXJldHVybiB2Lm1hdGNoJiYwPT09eS5sZW5ndGg/bmV3IE1sKGQuc2Vn''@;'; put 'put ''bWVudHMse30pOnYubWF0Y2gmJiFkLmhhc0NoaWxkcmVuKCk/SUkoZCxnLGgpOnYubWF0Y2g/dnkoZCwwLHkpOklJKGQsZyxoKX1mdW5jdGlvbiB2eShkLGcsaCl7aWYoMD09PWgubGVuZ3RoKXJldHVybiBuZXcgTWwoZC5zZWdtZW50cyx7fSk7e2NvbnN0IHY9ZnVuY3Rpb24gSlkoZCl7cmV0''@;'; put 'put ''dXJuIEtDKGRbMF0pP2RbMF0ub3V0bGV0czp7W1BsXTpkfX0oaCkseT17fTtyZXR1cm4gVGModiwoQyxJKT0+eyJzdHJpbmciPT10eXBlb2YgQyYmKEM9W0NdKSxudWxsIT09QyYmKHlbSV09VEkoZC5jaGlsZHJlbltJXSxnLEMpKX0pLFRjKGQuY2hpbGRyZW4sKEMsSSk9Pnt2b2lkIDA9PT12''@;'; put 'put ''W0ldJiYoeVtJXT1DKX0pLG5ldyBNbChkLnNlZ21lbnRzLHkpfX1mdW5jdGlvbiBJSShkLGcsaCl7Y29uc3Qgdj1kLnNlZ21lbnRzLnNsaWNlKDAsZyk7bGV0IHk9MDtmb3IoO3k8aC5sZW5ndGg7KXtjb25zdCBDPWhbeV07aWYoS0MoQykpe2NvbnN0IGNlPVhZKEMub3V0bGV0cyk7cmV0dXJu''@;'; put 'put ''IG5ldyBNbCh2LGNlKX1pZigwPT09eSYmWEMoaFswXSkpe3YucHVzaChuZXcgekMoZC5zZWdtZW50c1tnXS5wYXRoLElIKGhbMF0pKSkseSsrO2NvbnRpbnVlfWNvbnN0IEk9S0MoQyk/Qy5vdXRsZXRzW1BsXTpgJHtDfWAsaj15PGgubGVuZ3RoLTE/aFt5KzFdOm51bGw7SSYmaiYmWEMoaik/''@;'; put 'put ''KHYucHVzaChuZXcgekMoSSxJSChqKSkpLHkrPTIpOih2LnB1c2gobmV3IHpDKEkse30pKSx5KyspfXJldHVybiBuZXcgTWwodix7fSl9ZnVuY3Rpb24gWFkoZCl7Y29uc3QgZz17fTtyZXR1cm4gVGMoZCwoaCx2KT0+eyJzdHJpbmciPT10eXBlb2YgaCYmKGg9W2hdKSxudWxsIT09aCYmKGdb''@;'; put 'put ''dl09SUkobmV3IE1sKFtdLHt9KSwwLGgpKX0pLGd9ZnVuY3Rpb24gSUgoZCl7Y29uc3QgZz17fTtyZXR1cm4gVGMoZCwoaCx2KT0+Z1t2XT1gJHtofWApLGd9ZnVuY3Rpb24gS1koZCxnLGgpe3JldHVybiBkPT1oLnBhdGgmJnVjKGcsaC5wYXJhbWV0ZXJzKX1jbGFzcyBXNntjb25zdHJ1Y3Rv''@;'; put 'put ''cihnLGgpe3RoaXMuaWQ9Zyx0aGlzLnVybD1ofX1jbGFzcyBESSBleHRlbmRzIFc2e2NvbnN0cnVjdG9yKGcsaCx2PSJpbXBlcmF0aXZlIix5PW51bGwpe3N1cGVyKGcsaCksdGhpcy50eXBlPTAsdGhpcy5uYXZpZ2F0aW9uVHJpZ2dlcj12LHRoaXMucmVzdG9yZWRTdGF0ZT15fXRvU3RyaW5n''@;'; put 'put ''KCl7cmV0dXJuYE5hdmlnYXRpb25TdGFydChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nKWB9fWNsYXNzIE81IGV4dGVuZHMgVzZ7Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz12LHRoaXMudHlwZT0xfXRvU3RyaW5nKCl7cmV0''@;'; put 'put ''dXJuYE5hdmlnYXRpb25FbmQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9JylgfX1jbGFzcyBMSSBleHRlbmRzIFc2e2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy5yZWFz''@;'; put 'put ''b249dix0aGlzLmNvZGU9eSx0aGlzLnR5cGU9Mn10b1N0cmluZygpe3JldHVybmBOYXZpZ2F0aW9uQ2FuY2VsKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScpYH19Y2xhc3MgJFkgZXh0ZW5kcyBXNntjb25zdHJ1Y3RvcihnLGgsdix5KXtzdXBlcihnLGgpLHRoaXMuZXJyb3I9''@;'; put 'put ''dix0aGlzLnRhcmdldD15LHRoaXMudHlwZT0zfXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25FcnJvcihpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCBlcnJvcjogJHt0aGlzLmVycm9yfSlgfX1jbGFzcyBJMGUgZXh0ZW5kcyBXNntjb25zdHJ1Y3RvcihnLGgsdix5KXtz''@;'; put 'put ''dXBlcihnLGgpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9dix0aGlzLnN0YXRlPXksdGhpcy50eXBlPTR9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVzUmVjb2duaXplZChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51cmxBZnRl''@;'; put 'put ''clJlZGlyZWN0c30nLCBzdGF0ZTogJHt0aGlzLnN0YXRlfSlgfX1jbGFzcyBxWSBleHRlbmRzIFc2e2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz12LHRoaXMuc3RhdGU9eSx0aGlzLnR5cGU9N310b1N0cmluZygpe3JldHVybmBHdWFyZHND''@;'; put 'put ''aGVja1N0YXJ0KGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVkaXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3RhdGV9KWB9fWNsYXNzIEQwZSBleHRlbmRzIFc2e2NvbnN0cnVjdG9yKGcsaCx2LHksQyl7c3Vw''@;'; put 'put ''ZXIoZyxoKSx0aGlzLnVybEFmdGVyUmVkaXJlY3RzPXYsdGhpcy5zdGF0ZT15LHRoaXMuc2hvdWxkQWN0aXZhdGU9Qyx0aGlzLnR5cGU9OH10b1N0cmluZygpe3JldHVybmBHdWFyZHNDaGVja0VuZChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0''@;'; put 'put ''czogJyR7dGhpcy51cmxBZnRlclJlZGlyZWN0c30nLCBzdGF0ZTogJHt0aGlzLnN0YXRlfSwgc2hvdWxkQWN0aXZhdGU6ICR7dGhpcy5zaG91bGRBY3RpdmF0ZX0pYH19Y2xhc3MgZVUgZXh0ZW5kcyBXNntjb25zdHJ1Y3RvcihnLGgsdix5KXtzdXBlcihnLGgpLHRoaXMudXJsQWZ0ZXJSZWRp''@;'; put 'put ''cmVjdHM9dix0aGlzLnN0YXRlPXksdGhpcy50eXBlPTV9dG9TdHJpbmcoKXtyZXR1cm5gUmVzb2x2ZVN0YXJ0KGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVkaXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3Rh''@;'; put 'put ''dGV9KWB9fWNsYXNzIEwwZSBleHRlbmRzIFc2e2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz12LHRoaXMuc3RhdGU9eSx0aGlzLnR5cGU9Nn10b1N0cmluZygpe3JldHVybmBSZXNvbHZlRW5kKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3Ro''@;'; put 'put ''aXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVkaXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3RhdGV9KWB9fWNsYXNzIHRVe2NvbnN0cnVjdG9yKGcpe3RoaXMucm91dGU9Zyx0aGlzLnR5cGU9OX10b1N0cmluZygpe3JldHVybmBSb3V0ZUNvbmZpZ0xvYWRT''@;'; put 'put ''dGFydChwYXRoOiAke3RoaXMucm91dGUucGF0aH0pYH19Y2xhc3MgTzBle2NvbnN0cnVjdG9yKGcpe3RoaXMucm91dGU9Zyx0aGlzLnR5cGU9MTB9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVDb25maWdMb2FkRW5kKHBhdGg6ICR7dGhpcy5yb3V0ZS5wYXRofSlgfX1jbGFzcyBndXtjb25zdHJ1''@;'; put 'put ''Y3RvcihnKXt0aGlzLnNuYXBzaG90PWcsdGhpcy50eXBlPTExfXRvU3RyaW5nKCl7cmV0dXJuYENoaWxkQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyBuVXtjb25z''@;'; put 'put ''dHJ1Y3RvcihnKXt0aGlzLnNuYXBzaG90PWcsdGhpcy50eXBlPTEyfXRvU3RyaW5nKCl7cmV0dXJuYENoaWxkQWN0aXZhdGlvbkVuZChwYXRoOiAnJHt0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGh8fCIifScpYH19Y2xhc3MgUjBle2Nv''@;'; put 'put ''bnN0cnVjdG9yKGcpe3RoaXMuc25hcHNob3Q9Zyx0aGlzLnR5cGU9MTN9dG9TdHJpbmcoKXtyZXR1cm5gQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyBCMGV7Y29u''@;'; put 'put ''c3RydWN0b3IoZyl7dGhpcy5zbmFwc2hvdD1nLHRoaXMudHlwZT0xNH10b1N0cmluZygpe3JldHVybmBBY3RpdmF0aW9uRW5kKHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyByVXtjb25zdHJ1''@;'; put 'put ''Y3RvcihnLGgsdil7dGhpcy5yb3V0ZXJFdmVudD1nLHRoaXMucG9zaXRpb249aCx0aGlzLmFuY2hvcj12LHRoaXMudHlwZT0xNX10b1N0cmluZygpe3JldHVybmBTY3JvbGwoYW5jaG9yOiAnJHt0aGlzLmFuY2hvcn0nLCBwb3NpdGlvbjogJyR7dGhpcy5wb3NpdGlvbj9gJHt0aGlzLnBvc2l0''@;'; put 'put ''aW9uWzBdfSwgJHt0aGlzLnBvc2l0aW9uWzFdfWA6bnVsbH0nKWB9fWNsYXNzIGlVe2NvbnN0cnVjdG9yKGcpe3RoaXMuX3Jvb3Q9Z31nZXQgcm9vdCgpe3JldHVybiB0aGlzLl9yb290LnZhbHVlfXBhcmVudChnKXtjb25zdCBoPXRoaXMucGF0aEZyb21Sb290KGcpO3JldHVybiBoLmxlbmd0''@;'; put 'put ''aD4xP2hbaC5sZW5ndGgtMl06bnVsbH1jaGlsZHJlbihnKXtjb25zdCBoPU9JKGcsdGhpcy5fcm9vdCk7cmV0dXJuIGg/aC5jaGlsZHJlbi5tYXAodj0+di52YWx1ZSk6W119Zmlyc3RDaGlsZChnKXtjb25zdCBoPU9JKGcsdGhpcy5fcm9vdCk7cmV0dXJuIGgmJmguY2hpbGRyZW4ubGVuZ3Ro''@;'; put 'put ''PjA/aC5jaGlsZHJlblswXS52YWx1ZTpudWxsfXNpYmxpbmdzKGcpe2NvbnN0IGg9QXkoZyx0aGlzLl9yb290KTtyZXR1cm4gaC5sZW5ndGg8Mj9bXTpoW2gubGVuZ3RoLTJdLmNoaWxkcmVuLm1hcCh5PT55LnZhbHVlKS5maWx0ZXIoeT0+eSE9PWcpfXBhdGhGcm9tUm9vdChnKXtyZXR1cm4g''@;'; put 'put ''QXkoZyx0aGlzLl9yb290KS5tYXAoaD0+aC52YWx1ZSl9fWZ1bmN0aW9uIE9JKGQsZyl7aWYoZD09PWcudmFsdWUpcmV0dXJuIGc7Zm9yKGNvbnN0IGggb2YgZy5jaGlsZHJlbil7Y29uc3Qgdj1PSShkLGgpO2lmKHYpcmV0dXJuIHZ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQXkoZCxnKXtpZihk''@;'; put 'put ''PT09Zy52YWx1ZSlyZXR1cm5bZ107Zm9yKGNvbnN0IGggb2YgZy5jaGlsZHJlbil7Y29uc3Qgdj1BeShkLGgpO2lmKHYubGVuZ3RoKXJldHVybiB2LnVuc2hpZnQoZyksdn1yZXR1cm5bXX1jbGFzcyBvcHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMudmFsdWU9Zyx0aGlzLmNoaWxkcmVuPWh9dG9T''@;'; put 'put ''dHJpbmcoKXtyZXR1cm5gVHJlZU5vZGUoJHt0aGlzLnZhbHVlfSlgfX1mdW5jdGlvbiB4NyhkKXtjb25zdCBnPXt9O3JldHVybiBkJiZkLmNoaWxkcmVuLmZvckVhY2goaD0+Z1toLnZhbHVlLm91dGxldF09aCksZ31jbGFzcyBESCBleHRlbmRzIGlVe2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIo''@;'; put 'put ''ZyksdGhpcy5zbmFwc2hvdD1oLFJJKHRoaXMsZyl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zbmFwc2hvdC50b1N0cmluZygpfX1mdW5jdGlvbiBMSChkLGcpe2NvbnN0IGg9ZnVuY3Rpb24gb1UoZCxnKXtjb25zdCBJPW5ldyAkQyhbXSx7fSx7fSwiIix7fSxQbCxnLG51bGwsZC5yb290LC0x''@;'; put 'put ''LHt9KTtyZXR1cm4gbmV3IFJIKCIiLG5ldyBvcChJLFtdKSl9KGQsZyksdj1uZXcgU2woW25ldyB6QygiIix7fSldKSx5PW5ldyBTbCh7fSksQz1uZXcgU2woe30pLEk9bmV3IFNsKHt9KSxqPW5ldyBTbCgiIiksY2U9bmV3IEoxKHYseSxJLGosQyxQbCxnLGgucm9vdCk7cmV0dXJuIGNlLnNu''@;'; put 'put ''YXBzaG90PWgucm9vdCxuZXcgREgobmV3IG9wKGNlLFtdKSxoKX1jbGFzcyBKMXtjb25zdHJ1Y3RvcihnLGgsdix5LEMsSSxqLGNlKXt2YXIgX2UsUmU7dGhpcy51cmw9Zyx0aGlzLnBhcmFtcz1oLHRoaXMucXVlcnlQYXJhbXM9dix0aGlzLmZyYWdtZW50PXksdGhpcy5kYXRhPUMsdGhpcy5v''@;'; put 'put ''dXRsZXQ9SSx0aGlzLmNvbXBvbmVudD1qLHRoaXMudGl0bGU9bnVsbCE9PShSZT1udWxsPT09KF9lPXRoaXMuZGF0YSl8fHZvaWQgMD09PV9lP3ZvaWQgMDpfZS5waXBlKHB0KE5lPT5OZVtENV0pKSkmJnZvaWQgMCE9PVJlP1JlOlYwKHZvaWQgMCksdGhpcy5fZnV0dXJlU25hcHNob3Q9Y2V9''@;'; put 'put ''Z2V0IHJvdXRlQ29uZmlnKCl7cmV0dXJuIHRoaXMuX2Z1dHVyZVNuYXBzaG90LnJvdXRlQ29uZmlnfWdldCByb290KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnJvb3R9Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXJlbnQodGhpcyl9Z2V0IGZpcnN0Q2hpbGQo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuZmlyc3RDaGlsZCh0aGlzKX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuY2hpbGRyZW4odGhpcyl9Z2V0IHBhdGhGcm9tUm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXRoRnJvbVJvb3QodGhpcyl9Z2V0''@;'; put 'put ''IHBhcmFtTWFwKCl7cmV0dXJuIHRoaXMuX3BhcmFtTWFwfHwodGhpcy5fcGFyYW1NYXA9dGhpcy5wYXJhbXMucGlwZShwdChnPT5TZihnKSkpKSx0aGlzLl9wYXJhbU1hcH1nZXQgcXVlcnlQYXJhbU1hcCgpe3JldHVybiB0aGlzLl9xdWVyeVBhcmFtTWFwfHwodGhpcy5fcXVlcnlQYXJhbU1h''@;'; put 'put ''cD10aGlzLnF1ZXJ5UGFyYW1zLnBpcGUocHQoZz0+U2YoZykpKSksdGhpcy5fcXVlcnlQYXJhbU1hcH10b1N0cmluZygpe3JldHVybiB0aGlzLnNuYXBzaG90P3RoaXMuc25hcHNob3QudG9TdHJpbmcoKTpgRnV0dXJlKCR7dGhpcy5fZnV0dXJlU25hcHNob3R9KWB9fWZ1bmN0aW9uIE9IKGQs''@;'; put 'put ''Zz0iZW1wdHlPbmx5Iil7Y29uc3QgaD1kLnBhdGhGcm9tUm9vdDtsZXQgdj0wO2lmKCJhbHdheXMiIT09Zylmb3Iodj1oLmxlbmd0aC0xO3Y+PTE7KXtjb25zdCB5PWhbdl0sQz1oW3YtMV07aWYoeS5yb3V0ZUNvbmZpZyYmIiI9PT15LnJvdXRlQ29uZmlnLnBhdGgpdi0tO2Vsc2V7aWYoQy5j''@;'; put 'put ''b21wb25lbnQpYnJlYWs7di0tfX1yZXR1cm4gZnVuY3Rpb24gRjBlKGQpe3JldHVybiBkLnJlZHVjZSgoZyxoKT0+e3ZhciB2O3JldHVybntwYXJhbXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcucGFyYW1zKSxoLnBhcmFtcyksZGF0YTpPYmplY3QuYXNzaWduKE9iamVjdC5h''@;'; put 'put ''c3NpZ24oe30sZy5kYXRhKSxoLmRhdGEpLHJlc29sdmU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxoLmRhdGEpLGcucmVzb2x2ZSksbnVsbD09PSh2PWgucm91dGVDb25maWcpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmRhdGEpLGgu''@;'; put 'put ''X3Jlc29sdmVkRGF0YSl9fSx7cGFyYW1zOnt9LGRhdGE6e30scmVzb2x2ZTp7fX0pfShoLnNsaWNlKHYpKX1jbGFzcyAkQ3tjb25zdHJ1Y3RvcihnLGgsdix5LEMsSSxqLGNlLF9lLFJlLE5lLEtlKXt2YXIgaHQ7dGhpcy51cmw9Zyx0aGlzLnBhcmFtcz1oLHRoaXMucXVlcnlQYXJhbXM9dix0''@;'; put 'put ''aGlzLmZyYWdtZW50PXksdGhpcy5kYXRhPUMsdGhpcy5vdXRsZXQ9SSx0aGlzLmNvbXBvbmVudD1qLHRoaXMudGl0bGU9bnVsbD09PShodD10aGlzLmRhdGEpfHx2b2lkIDA9PT1odD92b2lkIDA6aHRbRDVdLHRoaXMucm91dGVDb25maWc9Y2UsdGhpcy5fdXJsU2VnbWVudD1fZSx0aGlzLl9s''@;'; put 'put ''YXN0UGF0aEluZGV4PVJlLHRoaXMuX2NvcnJlY3RlZExhc3RQYXRoSW5kZXg9bnVsbCE9S2U/S2U6UmUsdGhpcy5fcmVzb2x2ZT1OZX1nZXQgcm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5yb290fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucGFyZW50KHRo''@;'; put 'put ''aXMpfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmZpcnN0Q2hpbGQodGhpcyl9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmNoaWxkcmVuKHRoaXMpfWdldCBwYXRoRnJvbVJvb3QoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucGF0''@;'; put 'put ''aEZyb21Sb290KHRoaXMpfWdldCBwYXJhbU1hcCgpe3JldHVybiB0aGlzLl9wYXJhbU1hcHx8KHRoaXMuX3BhcmFtTWFwPVNmKHRoaXMucGFyYW1zKSksdGhpcy5fcGFyYW1NYXB9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcHx8KHRoaXMuX3F1ZXJ5UGFy''@;'; put 'put ''YW1NYXA9U2YodGhpcy5xdWVyeVBhcmFtcykpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGUodXJsOicke3RoaXMudXJsLm1hcCh2PT52LnRvU3RyaW5nKCkpLmpvaW4oIi8iKX0nLCBwYXRoOicke3RoaXMucm91dGVDb25maWc/dGhpcy5yb3V0ZUNvbmZpZy5w''@;'; put 'put ''YXRoOiIifScpYH19Y2xhc3MgUkggZXh0ZW5kcyBpVXtjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKGgpLHRoaXMudXJsPWcsUkkodGhpcyxoKX10b1N0cmluZygpe3JldHVybiBCSCh0aGlzLl9yb290KX19ZnVuY3Rpb24gUkkoZCxnKXtnLnZhbHVlLl9yb3V0ZXJTdGF0ZT1kLGcuY2hpbGRyZW4u''@;'; put 'put ''Zm9yRWFjaChoPT5SSShkLGgpKX1mdW5jdGlvbiBCSChkKXtjb25zdCBnPWQuY2hpbGRyZW4ubGVuZ3RoPjA/YCB7ICR7ZC5jaGlsZHJlbi5tYXAoQkgpLmpvaW4oIiwgIil9IH0gYDoiIjtyZXR1cm5gJHtkLnZhbHVlfSR7Z31gfWZ1bmN0aW9uIEJJKGQpe2lmKGQuc25hcHNob3Qpe2NvbnN0''@;'; put 'put ''IGc9ZC5zbmFwc2hvdCxoPWQuX2Z1dHVyZVNuYXBzaG90O2Quc25hcHNob3Q9aCx1YyhnLnF1ZXJ5UGFyYW1zLGgucXVlcnlQYXJhbXMpfHxkLnF1ZXJ5UGFyYW1zLm5leHQoaC5xdWVyeVBhcmFtcyksZy5mcmFnbWVudCE9PWguZnJhZ21lbnQmJmQuZnJhZ21lbnQubmV4dChoLmZyYWdtZW50''@;'; put 'put ''KSx1YyhnLnBhcmFtcyxoLnBhcmFtcyl8fGQucGFyYW1zLm5leHQoaC5wYXJhbXMpLGZ1bmN0aW9uIEFIKGQsZyl7aWYoZC5sZW5ndGghPT1nLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGg9MDtoPGQubGVuZ3RoOysraClpZighdWMoZFtoXSxnW2hdKSlyZXR1cm4hMTtyZXR1cm4hMH0oZy51''@;'; put 'put ''cmwsaC51cmwpfHxkLnVybC5uZXh0KGgudXJsKSx1YyhnLmRhdGEsaC5kYXRhKXx8ZC5kYXRhLm5leHQoaC5kYXRhKX1lbHNlIGQuc25hcHNob3Q9ZC5fZnV0dXJlU25hcHNob3QsZC5kYXRhLm5leHQoZC5fZnV0dXJlU25hcHNob3QuZGF0YSl9ZnVuY3Rpb24gUEgoZCxnKXtjb25zdCBoPXVj''@;'; put 'put ''KGQucGFyYW1zLGcucGFyYW1zKSYmZnVuY3Rpb24gTlkoZCxnKXtyZXR1cm4gRTcoZCxnKSYmZC5ldmVyeSgoaCx2KT0+dWMoaC5wYXJhbWV0ZXJzLGdbdl0ucGFyYW1ldGVycykpfShkLnVybCxnLnVybCk7cmV0dXJuIGgmJiEoIWQucGFyZW50IT0hZy5wYXJlbnQpJiYoIWQucGFyZW50fHxQ''@;'; put 'put ''SChkLnBhcmVudCxnLnBhcmVudCkpfWZ1bmN0aW9uIHl5KGQsZyxoKXtpZihoJiZkLnNob3VsZFJldXNlUm91dGUoZy52YWx1ZSxoLnZhbHVlLnNuYXBzaG90KSl7Y29uc3Qgdj1oLnZhbHVlO3YuX2Z1dHVyZVNuYXBzaG90PWcudmFsdWU7Y29uc3QgeT1mdW5jdGlvbiBGSChkLGcsaCl7cmV0''@;'; put 'put ''dXJuIGcuY2hpbGRyZW4ubWFwKHY9Pntmb3IoY29uc3QgeSBvZiBoLmNoaWxkcmVuKWlmKGQuc2hvdWxkUmV1c2VSb3V0ZSh2LnZhbHVlLHkudmFsdWUuc25hcHNob3QpKXJldHVybiB5eShkLHYseSk7cmV0dXJuIHl5KGQsdil9KX0oZCxnLGgpO3JldHVybiBuZXcgb3Aodix5KX17aWYoZC5z''@;'; put 'put ''aG91bGRBdHRhY2goZy52YWx1ZSkpe2NvbnN0IEM9ZC5yZXRyaWV2ZShnLnZhbHVlKTtpZihudWxsIT09Qyl7Y29uc3QgST1DLnJvdXRlO3JldHVybiBJLnZhbHVlLl9mdXR1cmVTbmFwc2hvdD1nLnZhbHVlLEkuY2hpbGRyZW49Zy5jaGlsZHJlbi5tYXAoaj0+eXkoZCxqKSksSX19Y29uc3Qg''@;'; put 'put ''dj1mdW5jdGlvbiBhVShkKXtyZXR1cm4gbmV3IEoxKG5ldyBTbChkLnVybCksbmV3IFNsKGQucGFyYW1zKSxuZXcgU2woZC5xdWVyeVBhcmFtcyksbmV3IFNsKGQuZnJhZ21lbnQpLG5ldyBTbChkLmRhdGEpLGQub3V0bGV0LGQuY29tcG9uZW50LGQpfShnLnZhbHVlKSx5PWcuY2hpbGRyZW4u''@;'; put 'put ''bWFwKEM9Pnl5KGQsQykpO3JldHVybiBuZXcgb3Aodix5KX19Y29uc3QgSEg9Im5nTmF2aWdhdGlvbkNhbmNlbGluZ0Vycm9yIjtmdW5jdGlvbiBOSChkLGcpe2NvbnN0e3JlZGlyZWN0VG86aCxuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zOnZ9PUc2KGcpP3tyZWRpcmVjdFRvOmcsbmF2aWdh''@;'; put 'put ''dGlvbkJlaGF2aW9yT3B0aW9uczp2b2lkIDB9OmcseT1WSCghMSwwLGcpO3JldHVybiB5LnVybD1oLHkubmF2aWdhdGlvbkJlaGF2aW9yT3B0aW9ucz12LHl9ZnVuY3Rpb24gVkgoZCxnLGgpe2NvbnN0IHY9bmV3IEVycm9yKCJOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3I6ICIrKGR8fCIiKSk7''@;'; put 'put ''cmV0dXJuIHZbSEhdPSEwLHYuY2FuY2VsbGF0aW9uQ29kZT1nLGgmJih2LnVybD1oKSx2fWZ1bmN0aW9uIFBJKGQpe3JldHVybiBqSChkKSYmRzYoZC51cmwpfWZ1bmN0aW9uIGpIKGQpe3JldHVybiBkJiZkW0hIXX1jbGFzcyBIMGV7Y29uc3RydWN0b3IoKXt0aGlzLm91dGxldD1udWxsLHRo''@;'; put 'put ''aXMucm91dGU9bnVsbCx0aGlzLnJlc29sdmVyPW51bGwsdGhpcy5pbmplY3Rvcj1udWxsLHRoaXMuY2hpbGRyZW49bmV3IGVrLHRoaXMuYXR0YWNoUmVmPW51bGx9fWxldCBlaz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5jb250ZXh0cz1uZXcgTWFwfW9uQ2hpbGRPdXRsZXRD''@;'; put 'put ''cmVhdGVkKGgsdil7Y29uc3QgeT10aGlzLmdldE9yQ3JlYXRlQ29udGV4dChoKTt5Lm91dGxldD12LHRoaXMuY29udGV4dHMuc2V0KGgseSl9b25DaGlsZE91dGxldERlc3Ryb3llZChoKXtjb25zdCB2PXRoaXMuZ2V0Q29udGV4dChoKTt2JiYodi5vdXRsZXQ9bnVsbCx2LmF0dGFjaFJlZj1u''@;'; put 'put ''dWxsKX1vbk91dGxldERlYWN0aXZhdGVkKCl7Y29uc3QgaD10aGlzLmNvbnRleHRzO3JldHVybiB0aGlzLmNvbnRleHRzPW5ldyBNYXAsaH1vbk91dGxldFJlQXR0YWNoZWQoaCl7dGhpcy5jb250ZXh0cz1ofWdldE9yQ3JlYXRlQ29udGV4dChoKXtsZXQgdj10aGlzLmdldENvbnRleHQoaCk7''@;'; put 'put ''cmV0dXJuIHZ8fCh2PW5ldyBIMGUsdGhpcy5jb250ZXh0cy5zZXQoaCx2KSksdn1nZXRDb250ZXh0KGgpe3JldHVybiB0aGlzLmNvbnRleHRzLmdldChoKXx8bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9r''@;'; put 'put ''ZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7Y29uc3QgRkk9ITE7bGV0IFQ3PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnBhcmVudENvbnRleHRzPWgsdGhpcy5sb2NhdGlvbj12LHRoaXMuY2hhbmdlRGV0ZWN0b3I9''@;'; put 'put ''Qyx0aGlzLmVudmlyb25tZW50SW5qZWN0b3I9SSx0aGlzLmFjdGl2YXRlZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5hY3RpdmF0ZUV2ZW50cz1uZXcgZm4sdGhpcy5kZWFjdGl2YXRlRXZlbnRzPW5ldyBmbix0aGlzLmF0dGFjaEV2ZW50cz1uZXcgZm4sdGhpcy5kZXRh''@;'; put 'put ''Y2hFdmVudHM9bmV3IGZuLHRoaXMubmFtZT15fHxQbCxoLm9uQ2hpbGRPdXRsZXRDcmVhdGVkKHRoaXMubmFtZSx0aGlzKX1uZ09uRGVzdHJveSgpe3ZhciBoOyhudWxsPT09KGg9dGhpcy5wYXJlbnRDb250ZXh0cy5nZXRDb250ZXh0KHRoaXMubmFtZSkpfHx2b2lkIDA9PT1oP3ZvaWQgMDpo''@;'; put 'put ''Lm91dGxldCk9PT10aGlzJiZ0aGlzLnBhcmVudENvbnRleHRzLm9uQ2hpbGRPdXRsZXREZXN0cm95ZWQodGhpcy5uYW1lKX1uZ09uSW5pdCgpe2lmKCF0aGlzLmFjdGl2YXRlZCl7Y29uc3QgaD10aGlzLnBhcmVudENvbnRleHRzLmdldENvbnRleHQodGhpcy5uYW1lKTtoJiZoLnJvdXRlJiYo''@;'; put 'put ''aC5hdHRhY2hSZWY/dGhpcy5hdHRhY2goaC5hdHRhY2hSZWYsaC5yb3V0ZSk6dGhpcy5hY3RpdmF0ZVdpdGgoaC5yb3V0ZSxoLmluamVjdG9yKSl9fWdldCBpc0FjdGl2YXRlZCgpe3JldHVybiEhdGhpcy5hY3RpdmF0ZWR9Z2V0IGNvbXBvbmVudCgpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJv''@;'; put 'put ''dyBuZXcgcXQoNDAxMixGSSk7cmV0dXJuIHRoaXMuYWN0aXZhdGVkLmluc3RhbmNlfWdldCBhY3RpdmF0ZWRSb3V0ZSgpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgcXQoNDAxMixGSSk7cmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlfWdldCBhY3RpdmF0ZWRSb3V0ZURhdGEoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fYWN0aXZhdGVkUm91dGU/dGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YTp7fX1kZXRhY2goKXtpZighdGhpcy5hY3RpdmF0ZWQpdGhyb3cgbmV3IHF0KDQwMTIsRkkpO3RoaXMubG9jYXRpb24uZGV0YWNoKCk7Y29uc3QgaD10aGlzLmFjdGl2YXRlZDtyZXR1''@;'; put 'put ''cm4gdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxsLHRoaXMuZGV0YWNoRXZlbnRzLmVtaXQoaC5pbnN0YW5jZSksaH1hdHRhY2goaCx2KXt0aGlzLmFjdGl2YXRlZD1oLHRoaXMuX2FjdGl2YXRlZFJvdXRlPXYsdGhpcy5sb2NhdGlvbi5pbnNlcnQoaC5ob3N0''@;'; put 'put ''VmlldyksdGhpcy5hdHRhY2hFdmVudHMuZW1pdChoLmluc3RhbmNlKX1kZWFjdGl2YXRlKCl7aWYodGhpcy5hY3RpdmF0ZWQpe2NvbnN0IGg9dGhpcy5jb21wb25lbnQ7dGhpcy5hY3RpdmF0ZWQuZGVzdHJveSgpLHRoaXMuYWN0aXZhdGVkPW51bGwsdGhpcy5fYWN0aXZhdGVkUm91dGU9bnVs''@;'; put 'put ''bCx0aGlzLmRlYWN0aXZhdGVFdmVudHMuZW1pdChoKX19YWN0aXZhdGVXaXRoKGgsdil7aWYodGhpcy5pc0FjdGl2YXRlZCl0aHJvdyBuZXcgcXQoNDAxMyxGSSk7dGhpcy5fYWN0aXZhdGVkUm91dGU9aDtjb25zdCB5PXRoaXMubG9jYXRpb24sST1oLl9mdXR1cmVTbmFwc2hvdC5jb21wb25l''@;'; put 'put ''bnQsaj10aGlzLnBhcmVudENvbnRleHRzLmdldE9yQ3JlYXRlQ29udGV4dCh0aGlzLm5hbWUpLmNoaWxkcmVuLGNlPW5ldyBsVShoLGoseS5pbmplY3Rvcik7aWYodiYmZnVuY3Rpb24gTjBlKGQpe3JldHVybiEhZC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeX0odikpe2NvbnN0IF9lPXYucmVz''@;'; put 'put ''b2x2ZUNvbXBvbmVudEZhY3RvcnkoSSk7dGhpcy5hY3RpdmF0ZWQ9eS5jcmVhdGVDb21wb25lbnQoX2UseS5sZW5ndGgsY2UpfWVsc2UgdGhpcy5hY3RpdmF0ZWQ9eS5jcmVhdGVDb21wb25lbnQoSSx7aW5kZXg6eS5sZW5ndGgsaW5qZWN0b3I6Y2UsZW52aXJvbm1lbnRJbmplY3RvcjpudWxs''@;'; put 'put ''IT12P3Y6dGhpcy5lbnZpcm9ubWVudEluamVjdG9yfSk7dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSx0aGlzLmFjdGl2YXRlRXZlbnRzLmVtaXQodGhpcy5hY3RpdmF0ZWQuaW5zdGFuY2UpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KShLdChlayksS3QoTXIpLFlwKCJuYW1lIiksS3QoZDEpLEt0KFdjKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0sb3V0cHV0czp7YWN0aXZhdGVFdmVudHM6ImFjdGl2YXRlIixkZWFjdGl2YXRlRXZlbnRzOiJkZWFjdGl2YXRlIixhdHRh''@;'; put 'put ''Y2hFdmVudHM6ImF0dGFjaCIsZGV0YWNoRXZlbnRzOiJkZXRhY2gifSxleHBvcnRBczpbIm91dGxldCJdLHN0YW5kYWxvbmU6ITB9KSxkfSkoKTtjbGFzcyBsVXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5yb3V0ZT1nLHRoaXMuY2hpbGRDb250ZXh0cz1oLHRoaXMucGFyZW50PXZ9Z2V0KGcs''@;'; put 'put ''aCl7cmV0dXJuIGc9PT1KMT90aGlzLnJvdXRlOmc9PT1laz90aGlzLmNoaWxkQ29udGV4dHM6dGhpcy5wYXJlbnQuZ2V0KGcsaCl9fWxldCBIST0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5''@;'; put 'put ''cGU6ZCxzZWxlY3RvcnM6W1sibmctY29tcG9uZW50Il1dLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W05vXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmYnIoMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W1Q3XSxlbmNhcHN1bGF0aW9uOjJ9KSxk''@;'; put 'put ''fSkoKTtmdW5jdGlvbiBaSChkLGcpe3ZhciBoO3JldHVybiBkLnByb3ZpZGVycyYmIWQuX2luamVjdG9yJiYoZC5faW5qZWN0b3I9TzYoZC5wcm92aWRlcnMsZyxgUm91dGU6ICR7ZC5wYXRofWApKSxudWxsIT09KGg9ZC5faW5qZWN0b3IpJiZ2b2lkIDAhPT1oP2g6Z31mdW5jdGlvbiBWSShk''@;'; put 'put ''KXtjb25zdCBnPWQuY2hpbGRyZW4mJmQuY2hpbGRyZW4ubWFwKFZJKSxoPWc/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLHtjaGlsZHJlbjpnfSk6T2JqZWN0LmFzc2lnbih7fSxkKTtyZXR1cm4haC5jb21wb25lbnQmJiFoLmxvYWRDb21wb25lbnQmJihnfHxoLmxvYWRDaGls''@;'; put 'put ''ZHJlbikmJmgub3V0bGV0JiZoLm91dGxldCE9PVBsJiYoaC5jb21wb25lbnQ9SEkpLGh9ZnVuY3Rpb24gWjMoZCl7cmV0dXJuIGQub3V0bGV0fHxQbH1mdW5jdGlvbiB1VShkLGcpe2NvbnN0IGg9ZC5maWx0ZXIodj0+WjModik9PT1nKTtyZXR1cm4gaC5wdXNoKC4uLmQuZmlsdGVyKHY9Ploz''@;'; put 'put ''KHYpIT09ZykpLGh9ZnVuY3Rpb24gdGsoZCl7dmFyIGc7aWYoIWQpcmV0dXJuIG51bGw7aWYobnVsbCE9PShnPWQucm91dGVDb25maWcpJiZ2b2lkIDAhPT1nJiZnLl9pbmplY3RvcilyZXR1cm4gZC5yb3V0ZUNvbmZpZy5faW5qZWN0b3I7Zm9yKGxldCBoPWQucGFyZW50O2g7aD1oLnBhcmVu''@;'; put 'put ''dCl7Y29uc3Qgdj1oLnJvdXRlQ29uZmlnO2lmKG51bGwhPXYmJnYuX2xvYWRlZEluamVjdG9yKXJldHVybiB2Ll9sb2FkZWRJbmplY3RvcjtpZihudWxsIT12JiZ2Ll9pbmplY3RvcilyZXR1cm4gdi5faW5qZWN0b3J9cmV0dXJuIG51bGx9Y2xhc3MgejN7Y29uc3RydWN0b3IoZyxoLHYseSl7''@;'; put 'put ''dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3k9Zyx0aGlzLmZ1dHVyZVN0YXRlPWgsdGhpcy5jdXJyU3RhdGU9dix0aGlzLmZvcndhcmRFdmVudD15fWFjdGl2YXRlKGcpe2NvbnN0IGg9dGhpcy5mdXR1cmVTdGF0ZS5fcm9vdCx2PXRoaXMuY3VyclN0YXRlP3RoaXMuY3VyclN0YXRlLl9yb290Om51''@;'; put 'put ''bGw7dGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoaCx2LGcpLEJJKHRoaXMuZnV0dXJlU3RhdGUucm9vdCksdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGgsdixnKX1kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZyxoLHYpe2NvbnN0IHk9eDcoaCk7Zy5jaGlsZHJlbi5mb3JFYWNoKEM9Pntjb25z''@;'; put 'put ''dCBJPUMudmFsdWUub3V0bGV0O3RoaXMuZGVhY3RpdmF0ZVJvdXRlcyhDLHlbSV0sdiksZGVsZXRlIHlbSV19KSxUYyh5LChDLEkpPT57dGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihDLHYpfSl9ZGVhY3RpdmF0ZVJvdXRlcyhnLGgsdil7Y29uc3QgeT1nLnZhbHVlLEM9aD9o''@;'; put 'put ''LnZhbHVlOm51bGw7aWYoeT09PUMpaWYoeS5jb21wb25lbnQpe2NvbnN0IEk9di5nZXRDb250ZXh0KHkub3V0bGV0KTtJJiZ0aGlzLmRlYWN0aXZhdGVDaGlsZFJvdXRlcyhnLGgsSS5jaGlsZHJlbil9ZWxzZSB0aGlzLmRlYWN0aXZhdGVDaGlsZFJvdXRlcyhnLGgsdik7ZWxzZSBDJiZ0aGlz''@;'; put 'put ''LmRlYWN0aXZhdGVSb3V0ZUFuZEl0c0NoaWxkcmVuKGgsdil9ZGVhY3RpdmF0ZVJvdXRlQW5kSXRzQ2hpbGRyZW4oZyxoKXtnLnZhbHVlLmNvbXBvbmVudCYmdGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkRGV0YWNoKGcudmFsdWUuc25hcHNob3QpP3RoaXMuZGV0YWNoQW5kU3RvcmVS''@;'; put 'put ''b3V0ZVN1YnRyZWUoZyxoKTp0aGlzLmRlYWN0aXZhdGVSb3V0ZUFuZE91dGxldChnLGgpfWRldGFjaEFuZFN0b3JlUm91dGVTdWJ0cmVlKGcsaCl7Y29uc3Qgdj1oLmdldENvbnRleHQoZy52YWx1ZS5vdXRsZXQpLHk9diYmZy52YWx1ZS5jb21wb25lbnQ/di5jaGlsZHJlbjpoLEM9eDcoZyk7''@;'; put 'put ''Zm9yKGNvbnN0IEkgb2YgT2JqZWN0LmtleXMoQykpdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihDW0ldLHkpO2lmKHYmJnYub3V0bGV0KXtjb25zdCBJPXYub3V0bGV0LmRldGFjaCgpLGo9di5jaGlsZHJlbi5vbk91dGxldERlYWN0aXZhdGVkKCk7dGhpcy5yb3V0ZVJldXNl''@;'; put 'put ''U3RyYXRlZ3kuc3RvcmUoZy52YWx1ZS5zbmFwc2hvdCx7Y29tcG9uZW50UmVmOkkscm91dGU6Zyxjb250ZXh0czpqfSl9fWRlYWN0aXZhdGVSb3V0ZUFuZE91dGxldChnLGgpe2NvbnN0IHY9aC5nZXRDb250ZXh0KGcudmFsdWUub3V0bGV0KSx5PXYmJmcudmFsdWUuY29tcG9uZW50P3YuY2hp''@;'; put 'put ''bGRyZW46aCxDPXg3KGcpO2Zvcihjb25zdCBJIG9mIE9iamVjdC5rZXlzKEMpKXRoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kSXRzQ2hpbGRyZW4oQ1tJXSx5KTt2JiZ2Lm91dGxldCYmKHYub3V0bGV0LmRlYWN0aXZhdGUoKSx2LmNoaWxkcmVuLm9uT3V0bGV0RGVhY3RpdmF0ZWQoKSx2LmF0dGFj''@;'; put 'put ''aFJlZj1udWxsLHYucmVzb2x2ZXI9bnVsbCx2LnJvdXRlPW51bGwpfWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZyxoLHYpe2NvbnN0IHk9eDcoaCk7Zy5jaGlsZHJlbi5mb3JFYWNoKEM9Pnt0aGlzLmFjdGl2YXRlUm91dGVzKEMseVtDLnZhbHVlLm91dGxldF0sdiksdGhpcy5mb3J3YXJkRXZlbnQo''@;'; put 'put ''bmV3IEIwZShDLnZhbHVlLnNuYXBzaG90KSl9KSxnLmNoaWxkcmVuLmxlbmd0aCYmdGhpcy5mb3J3YXJkRXZlbnQobmV3IG5VKGcudmFsdWUuc25hcHNob3QpKX1hY3RpdmF0ZVJvdXRlcyhnLGgsdil7dmFyIHk7Y29uc3QgQz1nLnZhbHVlLEk9aD9oLnZhbHVlOm51bGw7aWYoQkkoQyksQz09''@;'; put 'put ''PUkpaWYoQy5jb21wb25lbnQpe2NvbnN0IGo9di5nZXRPckNyZWF0ZUNvbnRleHQoQy5vdXRsZXQpO3RoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhnLGgsai5jaGlsZHJlbil9ZWxzZSB0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoZyxoLHYpO2Vsc2UgaWYoQy5jb21wb25lbnQpe2NvbnN0IGo9''@;'; put 'put ''di5nZXRPckNyZWF0ZUNvbnRleHQoQy5vdXRsZXQpO2lmKHRoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZEF0dGFjaChDLnNuYXBzaG90KSl7Y29uc3QgY2U9dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kucmV0cmlldmUoQy5zbmFwc2hvdCk7dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kuc3Rv''@;'; put 'put ''cmUoQy5zbmFwc2hvdCxudWxsKSxqLmNoaWxkcmVuLm9uT3V0bGV0UmVBdHRhY2hlZChjZS5jb250ZXh0cyksai5hdHRhY2hSZWY9Y2UuY29tcG9uZW50UmVmLGoucm91dGU9Y2Uucm91dGUudmFsdWUsai5vdXRsZXQmJmoub3V0bGV0LmF0dGFjaChjZS5jb21wb25lbnRSZWYsY2Uucm91dGUu''@;'; put 'put ''dmFsdWUpLEJJKGNlLnJvdXRlLnZhbHVlKSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoZyxudWxsLGouY2hpbGRyZW4pfWVsc2V7Y29uc3QgY2U9dGsoQy5zbmFwc2hvdCksX2U9bnVsbCE9PSh5PW51bGw9PWNlP3ZvaWQgMDpjZS5nZXQoX2QpKSYmdm9pZCAwIT09eT95Om51bGw7ai5hdHRh''@;'; put 'put ''Y2hSZWY9bnVsbCxqLnJvdXRlPUMsai5yZXNvbHZlcj1fZSxqLmluamVjdG9yPWNlLGoub3V0bGV0JiZqLm91dGxldC5hY3RpdmF0ZVdpdGgoQyxqLmluamVjdG9yKSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoZyxudWxsLGouY2hpbGRyZW4pfX1lbHNlIHRoaXMuYWN0aXZhdGVDaGlsZFJv''@;'; put 'put ''dXRlcyhnLG51bGwsdil9fWNsYXNzIHpIe2NvbnN0cnVjdG9yKGcpe3RoaXMucGF0aD1nLHRoaXMucm91dGU9dGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19fWNsYXNzIHd5e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5jb21wb25lbnQ9Zyx0aGlzLnJvdXRlPWh9fWZ1bmN0aW9uIG5rKGQs''@;'; put 'put ''ZyxoKXtjb25zdCB2PWQuX3Jvb3Q7cmV0dXJuIEk3KHYsZz9nLl9yb290Om51bGwsaCxbdi52YWx1ZV0pfWZ1bmN0aW9uIGJ5KGQsZyl7Y29uc3QgaD1TeW1ib2woKSx2PWcuZ2V0KGQsaCk7cmV0dXJuIHY9PT1oPyJmdW5jdGlvbiIhPXR5cGVvZiBkfHxmdW5jdGlvbiBjMihkKXtyZXR1cm4g''@;'; put 'put ''bnVsbCE9PUdvKGQpfShkKT9nLmdldChkKTpkOnZ9ZnVuY3Rpb24gSTcoZCxnLGgsdix5PXtjYW5EZWFjdGl2YXRlQ2hlY2tzOltdLGNhbkFjdGl2YXRlQ2hlY2tzOltdfSl7Y29uc3QgQz14NyhnKTtyZXR1cm4gZC5jaGlsZHJlbi5mb3JFYWNoKEk9PnsoZnVuY3Rpb24gR0goZCxnLGgsdix5''@;'; put 'put ''PXtjYW5EZWFjdGl2YXRlQ2hlY2tzOltdLGNhbkFjdGl2YXRlQ2hlY2tzOltdfSl7Y29uc3QgQz1kLnZhbHVlLEk9Zz9nLnZhbHVlOm51bGwsaj1oP2guZ2V0Q29udGV4dChkLnZhbHVlLm91dGxldCk6bnVsbDtpZihJJiZDLnJvdXRlQ29uZmlnPT09SS5yb3V0ZUNvbmZpZyl7Y29uc3QgY2U9''@;'; put 'put ''ZnVuY3Rpb24gRzBlKGQsZyxoKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgaClyZXR1cm4gaChkLGcpO3N3aXRjaChoKXtjYXNlInBhdGhQYXJhbXNDaGFuZ2UiOnJldHVybiFFNyhkLnVybCxnLnVybCk7Y2FzZSJwYXRoUGFyYW1zT3JRdWVyeVBhcmFtc0NoYW5nZSI6cmV0dXJuIUU3KGQudXJs''@;'; put 'put ''LGcudXJsKXx8IXVjKGQucXVlcnlQYXJhbXMsZy5xdWVyeVBhcmFtcyk7Y2FzZSJhbHdheXMiOnJldHVybiEwO2Nhc2UicGFyYW1zT3JRdWVyeVBhcmFtc0NoYW5nZSI6cmV0dXJuIVBIKGQsZyl8fCF1YyhkLnF1ZXJ5UGFyYW1zLGcucXVlcnlQYXJhbXMpO2RlZmF1bHQ6cmV0dXJuIVBIKGQs''@;'; put 'put ''Zyl9fShJLEMsQy5yb3V0ZUNvbmZpZy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMpO2NlP3kuY2FuQWN0aXZhdGVDaGVja3MucHVzaChuZXcgekgodikpOihDLmRhdGE9SS5kYXRhLEMuX3Jlc29sdmVkRGF0YT1JLl9yZXNvbHZlZERhdGEpLEk3KGQsZyxDLmNvbXBvbmVudD9qP2ouY2hpbGRyZW46''@;'; put 'put ''bnVsbDpoLHYseSksY2UmJmomJmoub3V0bGV0JiZqLm91dGxldC5pc0FjdGl2YXRlZCYmeS5jYW5EZWFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IHd5KGoub3V0bGV0LmNvbXBvbmVudCxJKSl9ZWxzZSBJJiZyayhnLGoseSkseS5jYW5BY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyB6SCh2KSksSTco''@;'; put 'put ''ZCxudWxsLEMuY29tcG9uZW50P2o/ai5jaGlsZHJlbjpudWxsOmgsdix5KX0pKEksQ1tJLnZhbHVlLm91dGxldF0saCx2LmNvbmNhdChbSS52YWx1ZV0pLHkpLGRlbGV0ZSBDW0kudmFsdWUub3V0bGV0XX0pLFRjKEMsKEksaik9PnJrKEksaC5nZXRDb250ZXh0KGopLHkpKSx5fWZ1bmN0aW9u''@;'; put 'put ''IHJrKGQsZyxoKXtjb25zdCB2PXg3KGQpLHk9ZC52YWx1ZTtUYyh2LChDLEkpPT57cmsoQyx5LmNvbXBvbmVudD9nP2cuY2hpbGRyZW4uZ2V0Q29udGV4dChJKTpudWxsOmcsaCl9KSxoLmNhbkRlYWN0aXZhdGVDaGVja3MucHVzaChuZXcgd3koeS5jb21wb25lbnQmJmcmJmcub3V0bGV0JiZn''@;'; put 'put ''Lm91dGxldC5pc0FjdGl2YXRlZD9nLm91dGxldC5jb21wb25lbnQ6bnVsbCx5KSl9ZnVuY3Rpb24gX3koZCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGR9ZnVuY3Rpb24gV0goZCl7cmV0dXJuIGQgaW5zdGFuY2VvZiBIQ3x8IkVtcHR5RXJyb3IiPT09KG51bGw9PWQ/dm9pZCAwOmQubmFt''@;'; put 'put ''ZSl9Y29uc3QgWkk9U3ltYm9sKCJJTklUSUFMX1ZBTFVFIik7ZnVuY3Rpb24gRDcoKXtyZXR1cm4gYWgoZD0+YXkoZC5tYXAoZz0+Zy5waXBlKFQ1KDEpLGN5KFpJKSkpKS5waXBlKHB0KGc9Pntmb3IoY29uc3QgaCBvZiBnKWlmKCEwIT09aCl7aWYoaD09PVpJKXJldHVybiBaSTtpZighMT09''@;'; put 'put ''PWh8fGggaW5zdGFuY2VvZiBNNylyZXR1cm4gaH1yZXR1cm4hMH0pLG0yKGc9PmchPT1aSSksVDUoMSkpKX1mdW5jdGlvbiBVSChkKXtyZXR1cm4gZnVuY3Rpb24gVCguLi5kKXtyZXR1cm4gUyhkKX0oajIoZz0+e2lmKEc2KGcpKXRocm93IE5IKDAsZyl9KSxwdChnPT4hMD09PWcpKX1jb25z''@;'; put 'put ''dCBpaz17bWF0Y2hlZDohMSxjb25zdW1lZFNlZ21lbnRzOltdLHJlbWFpbmluZ1NlZ21lbnRzOltdLHBhcmFtZXRlcnM6e30scG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319O2Z1bmN0aW9uIG1VKGQsZyxoLHYseSl7Y29uc3QgQz1RSChkLGcsaCk7cmV0dXJuIEMubWF0Y2hlZD9mdW5jdGlv''@;'; put 'put ''biBlb2UoZCxnLGgsdil7Y29uc3QgeT1nLmNhbk1hdGNoO3JldHVybiB5JiYwIT09eS5sZW5ndGg/VjAoeS5tYXAoST0+e2NvbnN0IGo9YnkoSSxkKTtyZXR1cm4gTDUoZnVuY3Rpb24gakkoZCl7cmV0dXJuIGQmJl95KGQuY2FuTWF0Y2gpfShqKT9qLmNhbk1hdGNoKGcsaCk6ZC5ydW5JbkNv''@;'; put 'put ''bnRleHQoKCk9PmooZyxoKSkpfSkpLnBpcGUoRDcoKSxVSCgpKTpWMCghMCl9KHY9WkgoZyx2KSxnLGgpLnBpcGUocHQoST0+ITA9PT1JP0M6T2JqZWN0LmFzc2lnbih7fSxpaykpKTpWMChDKX1mdW5jdGlvbiBRSChkLGcsaCl7dmFyIHY7aWYoIiI9PT1nLnBhdGgpcmV0dXJuImZ1bGwiPT09''@;'; put 'put ''Zy5wYXRoTWF0Y2gmJihkLmhhc0NoaWxkcmVuKCl8fGgubGVuZ3RoPjApP09iamVjdC5hc3NpZ24oe30saWspOnttYXRjaGVkOiEwLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5nU2VnbWVudHM6aCxwYXJhbWV0ZXJzOnt9LHBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzOnt9fTtjb25zdCBD''@;'; put 'put ''PShnLm1hdGNoZXJ8fGtJKShoLGQsZyk7aWYoIUMpcmV0dXJuIE9iamVjdC5hc3NpZ24oe30saWspO2NvbnN0IEk9e307VGMoQy5wb3NQYXJhbXMsKGNlLF9lKT0+e0lbX2VdPWNlLnBhdGh9KTtjb25zdCBqPUMuY29uc3VtZWQubGVuZ3RoPjA/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWdu''@;'; put 'put ''KHt9LEkpLEMuY29uc3VtZWRbQy5jb25zdW1lZC5sZW5ndGgtMV0ucGFyYW1ldGVycyk6STtyZXR1cm57bWF0Y2hlZDohMCxjb25zdW1lZFNlZ21lbnRzOkMuY29uc3VtZWQscmVtYWluaW5nU2VnbWVudHM6aC5zbGljZShDLmNvbnN1bWVkLmxlbmd0aCkscGFyYW1ldGVyczpqLHBvc2l0aW9u''@;'; put 'put ''YWxQYXJhbVNlZ21lbnRzOm51bGwhPT0odj1DLnBvc1BhcmFtcykmJnZvaWQgMCE9PXY/djp7fX19ZnVuY3Rpb24gekkoZCxnLGgsdix5PSJjb3JyZWN0ZWQiKXtpZihoLmxlbmd0aD4wJiZmdW5jdGlvbiBub2UoZCxnLGgpe3JldHVybiBoLnNvbWUodj0+R0koZCxnLHYpJiZaMyh2KSE9PVBs''@;'; put 'put ''KX0oZCxoLHYpKXtjb25zdCBJPW5ldyBNbChnLGZ1bmN0aW9uIHZVKGQsZyxoLHYpe2NvbnN0IHk9e307eVtQbF09dix2Ll9zb3VyY2VTZWdtZW50PWQsdi5fc2VnbWVudEluZGV4U2hpZnQ9Zy5sZW5ndGg7Zm9yKGNvbnN0IEMgb2YgaClpZigiIj09PUMucGF0aCYmWjMoQykhPT1QbCl7Y29u''@;'; put 'put ''c3QgST1uZXcgTWwoW10se30pO0kuX3NvdXJjZVNlZ21lbnQ9ZCxJLl9zZWdtZW50SW5kZXhTaGlmdD1nLmxlbmd0aCx5W1ozKEMpXT1JfXJldHVybiB5fShkLGcsdixuZXcgTWwoaCxkLmNoaWxkcmVuKSkpO3JldHVybiBJLl9zb3VyY2VTZWdtZW50PWQsSS5fc2VnbWVudEluZGV4U2hpZnQ9''@;'; put 'put ''Zy5sZW5ndGgse3NlZ21lbnRHcm91cDpJLHNsaWNlZFNlZ21lbnRzOltdfX1pZigwPT09aC5sZW5ndGgmJmZ1bmN0aW9uIEFVKGQsZyxoKXtyZXR1cm4gaC5zb21lKHY9PkdJKGQsZyx2KSl9KGQsaCx2KSl7Y29uc3QgST1uZXcgTWwoZC5zZWdtZW50cyxmdW5jdGlvbiB0b2UoZCxnLGgsdix5''@;'; put 'put ''LEMpe2NvbnN0IEk9e307Zm9yKGNvbnN0IGogb2YgdilpZihHSShkLGgsaikmJiF5W1ozKGopXSl7Y29uc3QgY2U9bmV3IE1sKFtdLHt9KTtjZS5fc291cmNlU2VnbWVudD1kLGNlLl9zZWdtZW50SW5kZXhTaGlmdD0ibGVnYWN5Ij09PUM/ZC5zZWdtZW50cy5sZW5ndGg6Zy5sZW5ndGgsSVta''@;'; put 'put ''MyhqKV09Y2V9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx5KSxJKX0oZCxnLGgsdixkLmNoaWxkcmVuLHkpKTtyZXR1cm4gSS5fc291cmNlU2VnbWVudD1kLEkuX3NlZ21lbnRJbmRleFNoaWZ0PWcubGVuZ3RoLHtzZWdtZW50R3JvdXA6SSxzbGljZWRTZWdtZW50czpo''@;'; put 'put ''fX1jb25zdCBDPW5ldyBNbChkLnNlZ21lbnRzLGQuY2hpbGRyZW4pO3JldHVybiBDLl9zb3VyY2VTZWdtZW50PWQsQy5fc2VnbWVudEluZGV4U2hpZnQ9Zy5sZW5ndGgse3NlZ21lbnRHcm91cDpDLHNsaWNlZFNlZ21lbnRzOmh9fWZ1bmN0aW9uIEdJKGQsZyxoKXtyZXR1cm4oIShkLmhhc0No''@;'; put 'put ''aWxkcmVuKCl8fGcubGVuZ3RoPjApfHwiZnVsbCIhPT1oLnBhdGhNYXRjaCkmJiIiPT09aC5wYXRofWZ1bmN0aW9uIEpIKGQsZyxoLHYpe3JldHVybiEhKFozKGQpPT09dnx8diE9PVBsJiZHSShnLGgsZCkpJiYoIioqIj09PWQucGF0aHx8UUgoZyxkLGgpLm1hdGNoZWQpfWZ1bmN0aW9uIFhI''@;'; put 'put ''KGQsZyxoKXtyZXR1cm4gMD09PWcubGVuZ3RoJiYhZC5jaGlsZHJlbltoXX1jb25zdCBXST0hMTtjbGFzcyBSNXtjb25zdHJ1Y3RvcihnKXt0aGlzLnNlZ21lbnRHcm91cD1nfHxudWxsfX1jbGFzcyBLSHtjb25zdHJ1Y3RvcihnKXt0aGlzLnVybFRyZWU9Z319ZnVuY3Rpb24gQ3koZCl7cmV0''@;'; put 'put ''dXJuIHJwKG5ldyBSNShkKSl9ZnVuY3Rpb24gJEgoZCl7cmV0dXJuIHJwKG5ldyBLSChkKSl9Y2xhc3Mgb29le2NvbnN0cnVjdG9yKGcsaCx2LHksQyl7dGhpcy5pbmplY3Rvcj1nLHRoaXMuY29uZmlnTG9hZGVyPWgsdGhpcy51cmxTZXJpYWxpemVyPXYsdGhpcy51cmxUcmVlPXksdGhpcy5j''@;'; put 'put ''b25maWc9Qyx0aGlzLmFsbG93UmVkaXJlY3RzPSEwfWFwcGx5KCl7Y29uc3QgZz16SSh0aGlzLnVybFRyZWUucm9vdCxbXSxbXSx0aGlzLmNvbmZpZykuc2VnbWVudEdyb3VwLGg9bmV3IE1sKGcuc2VnbWVudHMsZy5jaGlsZHJlbik7cmV0dXJuIHRoaXMuZXhwYW5kU2VnbWVudEdyb3VwKHRo''@;'; put 'put ''aXMuaW5qZWN0b3IsdGhpcy5jb25maWcsaCxQbCkucGlwZShwdChDPT50aGlzLmNyZWF0ZVVybFRyZWUoZHkoQyksdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zLHRoaXMudXJsVHJlZS5mcmFnbWVudCkpKS5waXBlKEk1KEM9PntpZihDIGluc3RhbmNlb2YgS0gpcmV0dXJuIHRoaXMuYWxsb3dS''@;'; put 'put ''ZWRpcmVjdHM9ITEsdGhpcy5tYXRjaChDLnVybFRyZWUpO3Rocm93IEMgaW5zdGFuY2VvZiBSNT90aGlzLm5vTWF0Y2hFcnJvcihDKTpDfSkpfW1hdGNoKGcpe3JldHVybiB0aGlzLmV4cGFuZFNlZ21lbnRHcm91cCh0aGlzLmluamVjdG9yLHRoaXMuY29uZmlnLGcucm9vdCxQbCkucGlwZShw''@;'; put 'put ''dCh5PT50aGlzLmNyZWF0ZVVybFRyZWUoZHkoeSksZy5xdWVyeVBhcmFtcyxnLmZyYWdtZW50KSkpLnBpcGUoSTUoeT0+e3Rocm93IHkgaW5zdGFuY2VvZiBSNT90aGlzLm5vTWF0Y2hFcnJvcih5KTp5fSkpfW5vTWF0Y2hFcnJvcihnKXtyZXR1cm4gbmV3IHF0KDQwMDIsV0kpfWNyZWF0ZVVy''@;'; put 'put ''bFRyZWUoZyxoLHYpe2NvbnN0IHk9TUgoZyk7cmV0dXJuIG5ldyBNNyh5LGgsdil9ZXhwYW5kU2VnbWVudEdyb3VwKGcsaCx2LHkpe3JldHVybiAwPT09di5zZWdtZW50cy5sZW5ndGgmJnYuaGFzQ2hpbGRyZW4oKT90aGlzLmV4cGFuZENoaWxkcmVuKGcsaCx2KS5waXBlKHB0KEM9Pm5ldyBN''@;'; put 'put ''bChbXSxDKSkpOnRoaXMuZXhwYW5kU2VnbWVudChnLHYsaCx2LnNlZ21lbnRzLHksITApfWV4cGFuZENoaWxkcmVuKGcsaCx2KXtjb25zdCB5PVtdO2Zvcihjb25zdCBDIG9mIE9iamVjdC5rZXlzKHYuY2hpbGRyZW4pKSJwcmltYXJ5Ij09PUM/eS51bnNoaWZ0KEMpOnkucHVzaChDKTtyZXR1''@;'; put 'put ''cm4gcG4oeSkucGlwZShZZChDPT57Y29uc3QgST12LmNoaWxkcmVuW0NdLGo9dVUoaCxDKTtyZXR1cm4gdGhpcy5leHBhbmRTZWdtZW50R3JvdXAoZyxqLEksQykucGlwZShwdChjZT0+KHtzZWdtZW50OmNlLG91dGxldDpDfSkpKX0pLFRZKChDLEkpPT4oQ1tJLm91dGxldF09SS5zZWdtZW50''@;'; put 'put ''LEMpLHt9KSxtSCgpKX1leHBhbmRTZWdtZW50KGcsaCx2LHksQyxJKXtyZXR1cm4gcG4odikucGlwZShZZChqPT50aGlzLmV4cGFuZFNlZ21lbnRBZ2FpbnN0Um91dGUoZyxoLHYsaix5LEMsSSkucGlwZShJNShfZT0+e2lmKF9lIGluc3RhbmNlb2YgUjUpcmV0dXJuIFYwKG51bGwpO3Rocm93''@;'; put 'put ''IF9lfSkpKSxpcChqPT4hIWopLEk1KChqLGNlKT0+e2lmKFdIKGopKXJldHVybiBYSChoLHksQyk/VjAobmV3IE1sKFtdLHt9KSk6Q3koaCk7dGhyb3cgan0pKX1leHBhbmRTZWdtZW50QWdhaW5zdFJvdXRlKGcsaCx2LHksQyxJLGope3JldHVybiBKSCh5LGgsQyxJKT92b2lkIDA9PT15LnJl''@;'; put 'put ''ZGlyZWN0VG8/dGhpcy5tYXRjaFNlZ21lbnRBZ2FpbnN0Um91dGUoZyxoLHksQyxJKTpqJiZ0aGlzLmFsbG93UmVkaXJlY3RzP3RoaXMuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QoZyxoLHYseSxDLEkpOkN5KGgpOkN5KGgpfWV4cGFuZFNlZ21lbnRBZ2FpbnN0Um91''@;'; put 'put ''dGVVc2luZ1JlZGlyZWN0KGcsaCx2LHksQyxJKXtyZXR1cm4iKioiPT09eS5wYXRoP3RoaXMuZXhwYW5kV2lsZENhcmRXaXRoUGFyYW1zQWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChnLHYseSxJKTp0aGlzLmV4cGFuZFJlZ3VsYXJTZWdtZW50QWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChn''@;'; put 'put ''LGgsdix5LEMsSSl9ZXhwYW5kV2lsZENhcmRXaXRoUGFyYW1zQWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChnLGgsdix5KXtjb25zdCBDPXRoaXMuYXBwbHlSZWRpcmVjdENvbW1hbmRzKFtdLHYucmVkaXJlY3RUbyx7fSk7cmV0dXJuIHYucmVkaXJlY3RUby5zdGFydHNXaXRoKCIvIik/JEgo''@;'; put 'put ''Qyk6dGhpcy5saW5lcmFsaXplU2VnbWVudHModixDKS5waXBlKHVyKEk9Pntjb25zdCBqPW5ldyBNbChJLHt9KTtyZXR1cm4gdGhpcy5leHBhbmRTZWdtZW50KGcsaixoLEkseSwhMSl9KSl9ZXhwYW5kUmVndWxhclNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGcsaCx2LHksQyxJ''@;'; put 'put ''KXtjb25zdHttYXRjaGVkOmosY29uc3VtZWRTZWdtZW50czpjZSxyZW1haW5pbmdTZWdtZW50czpfZSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czpSZX09UUgoaCx5LEMpO2lmKCFqKXJldHVybiBDeShoKTtjb25zdCBOZT10aGlzLmFwcGx5UmVkaXJlY3RDb21tYW5kcyhjZSx5LnJlZGlyZWN0''@;'; put 'put ''VG8sUmUpO3JldHVybiB5LnJlZGlyZWN0VG8uc3RhcnRzV2l0aCgiLyIpPyRIKE5lKTp0aGlzLmxpbmVyYWxpemVTZWdtZW50cyh5LE5lKS5waXBlKHVyKEtlPT50aGlzLmV4cGFuZFNlZ21lbnQoZyxoLHYsS2UuY29uY2F0KF9lKSxJLCExKSkpfW1hdGNoU2VnbWVudEFnYWluc3RSb3V0ZShn''@;'; put 'put ''LGgsdix5LEMpe3JldHVybiIqKiI9PT12LnBhdGg/KGc9WkgodixnKSx2LmxvYWRDaGlsZHJlbj8odi5fbG9hZGVkUm91dGVzP1YwKHtyb3V0ZXM6di5fbG9hZGVkUm91dGVzLGluamVjdG9yOnYuX2xvYWRlZEluamVjdG9yfSk6dGhpcy5jb25maWdMb2FkZXIubG9hZENoaWxkcmVuKGcsdikp''@;'; put 'put ''LnBpcGUocHQoaj0+KHYuX2xvYWRlZFJvdXRlcz1qLnJvdXRlcyx2Ll9sb2FkZWRJbmplY3Rvcj1qLmluamVjdG9yLG5ldyBNbCh5LHt9KSkpKTpWMChuZXcgTWwoeSx7fSkpKTptVShoLHYseSxnKS5waXBlKGFoKCh7bWF0Y2hlZDpJLGNvbnN1bWVkU2VnbWVudHM6aixyZW1haW5pbmdTZWdt''@;'; put 'put ''ZW50czpjZX0pPT57dmFyIF9lO3JldHVybiBJPyhnPW51bGwhPT0oX2U9di5faW5qZWN0b3IpJiZ2b2lkIDAhPT1fZT9fZTpnLHRoaXMuZ2V0Q2hpbGRDb25maWcoZyx2LHkpLnBpcGUodXIoTmU9Pnt2YXIgS2U7Y29uc3QgaHQ9bnVsbCE9PShLZT1OZS5pbmplY3RvcikmJnZvaWQgMCE9PUtl''@;'; put 'put ''P0tlOmcsQnQ9TmUucm91dGVzLHtzZWdtZW50R3JvdXA6JHQsc2xpY2VkU2VnbWVudHM6aG59PXpJKGgsaixjZSxCdCksRG49bmV3IE1sKCR0LnNlZ21lbnRzLCR0LmNoaWxkcmVuKTtpZigwPT09aG4ubGVuZ3RoJiZEbi5oYXNDaGlsZHJlbigpKXJldHVybiB0aGlzLmV4cGFuZENoaWxkcmVu''@;'; put 'put ''KGh0LEJ0LERuKS5waXBlKHB0KEFyPT5uZXcgTWwoaixBcikpKTtpZigwPT09QnQubGVuZ3RoJiYwPT09aG4ubGVuZ3RoKXJldHVybiBWMChuZXcgTWwoaix7fSkpO2NvbnN0IGlyPVozKHYpPT09QztyZXR1cm4gdGhpcy5leHBhbmRTZWdtZW50KGh0LERuLEJ0LGhuLGlyP1BsOkMsITApLnBp''@;'; put 'put ''cGUocHQoRXI9Pm5ldyBNbChqLmNvbmNhdChFci5zZWdtZW50cyksRXIuY2hpbGRyZW4pKSl9KSkpOkN5KGgpfSkpfWdldENoaWxkQ29uZmlnKGcsaCx2KXtyZXR1cm4gaC5jaGlsZHJlbj9WMCh7cm91dGVzOmguY2hpbGRyZW4saW5qZWN0b3I6Z30pOmgubG9hZENoaWxkcmVuP3ZvaWQgMCE9''@;'; put 'put ''PWguX2xvYWRlZFJvdXRlcz9WMCh7cm91dGVzOmguX2xvYWRlZFJvdXRlcyxpbmplY3RvcjpoLl9sb2FkZWRJbmplY3Rvcn0pOmZ1bmN0aW9uIHEwZShkLGcsaCx2KXtjb25zdCB5PWcuY2FuTG9hZDtyZXR1cm4gdm9pZCAwPT09eXx8MD09PXkubGVuZ3RoP1YwKCEwKTpWMCh5Lm1hcChJPT57''@;'; put 'put ''Y29uc3Qgaj1ieShJLGQpO3JldHVybiBMNShmdW5jdGlvbiBZMGUoZCl7cmV0dXJuIGQmJl95KGQuY2FuTG9hZCl9KGopP2ouY2FuTG9hZChnLGgpOmQucnVuSW5Db250ZXh0KCgpPT5qKGcsaCkpKX0pKS5waXBlKEQ3KCksVUgoKSl9KGcsaCx2KS5waXBlKHVyKHk9Pnk/dGhpcy5jb25maWdM''@;'; put 'put ''b2FkZXIubG9hZENoaWxkcmVuKGcsaCkucGlwZShqMihDPT57aC5fbG9hZGVkUm91dGVzPUMucm91dGVzLGguX2xvYWRlZEluamVjdG9yPUMuaW5qZWN0b3J9KSk6ZnVuY3Rpb24gaW9lKGQpe3JldHVybiBycChWSChXSSwzKSl9KCkpKTpWMCh7cm91dGVzOltdLGluamVjdG9yOmd9KX1saW5l''@;'; put 'put ''cmFsaXplU2VnbWVudHMoZyxoKXtsZXQgdj1bXSx5PWgucm9vdDtmb3IoOzspe2lmKHY9di5jb25jYXQoeS5zZWdtZW50cyksMD09PXkubnVtYmVyT2ZDaGlsZHJlbilyZXR1cm4gVjAodik7aWYoeS5udW1iZXJPZkNoaWxkcmVuPjF8fCF5LmNoaWxkcmVuW1BsXSlyZXR1cm4gcnAobmV3IHF0''@;'; put 'put ''KDRlMyxXSSkpO3k9eS5jaGlsZHJlbltQbF19fWFwcGx5UmVkaXJlY3RDb21tYW5kcyhnLGgsdil7cmV0dXJuIHRoaXMuYXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoaCx0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoaCksZyx2KX1hcHBseVJlZGlyZWN0Q3JlYXRlVXJsVHJlZShnLGgsdix5''@;'; put 'put ''KXtjb25zdCBDPXRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKGcsaC5yb290LHYseSk7cmV0dXJuIG5ldyBNNyhDLHRoaXMuY3JlYXRlUXVlcnlQYXJhbXMoaC5xdWVyeVBhcmFtcyx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpLGguZnJhZ21lbnQpfWNyZWF0ZVF1ZXJ5UGFyYW1zKGcsaCl7Y29u''@;'; put 'put ''c3Qgdj17fTtyZXR1cm4gVGMoZywoeSxDKT0+e2lmKCJzdHJpbmciPT10eXBlb2YgeSYmeS5zdGFydHNXaXRoKCI6Iikpe2NvbnN0IGo9eS5zdWJzdHJpbmcoMSk7dltDXT1oW2pdfWVsc2UgdltDXT15fSksdn1jcmVhdGVTZWdtZW50R3JvdXAoZyxoLHYseSl7Y29uc3QgQz10aGlzLmNyZWF0''@;'; put 'put ''ZVNlZ21lbnRzKGcsaC5zZWdtZW50cyx2LHkpO2xldCBJPXt9O3JldHVybiBUYyhoLmNoaWxkcmVuLChqLGNlKT0+e0lbY2VdPXRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKGcsaix2LHkpfSksbmV3IE1sKEMsSSl9Y3JlYXRlU2VnbWVudHMoZyxoLHYseSl7cmV0dXJuIGgubWFwKEM9PkMucGF0''@;'; put 'put ''aC5zdGFydHNXaXRoKCI6Iik/dGhpcy5maW5kUG9zUGFyYW0oZyxDLHkpOnRoaXMuZmluZE9yUmV0dXJuKEMsdikpfWZpbmRQb3NQYXJhbShnLGgsdil7Y29uc3QgeT12W2gucGF0aC5zdWJzdHJpbmcoMSldO2lmKCF5KXRocm93IG5ldyBxdCg0MDAxLFdJKTtyZXR1cm4geX1maW5kT3JSZXR1''@;'; put 'put ''cm4oZyxoKXtsZXQgdj0wO2Zvcihjb25zdCB5IG9mIGgpe2lmKHkucGF0aD09PWcucGF0aClyZXR1cm4gaC5zcGxpY2UodikseTt2Kyt9cmV0dXJuIGd9fWNsYXNzIGxvZXt9Y2xhc3Mgc29le2NvbnN0cnVjdG9yKGcsaCx2LHksQyxJLGosY2Upe3RoaXMuaW5qZWN0b3I9Zyx0aGlzLnJvb3RD''@;'; put 'put ''b21wb25lbnRUeXBlPWgsdGhpcy5jb25maWc9dix0aGlzLnVybFRyZWU9eSx0aGlzLnVybD1DLHRoaXMucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneT1JLHRoaXMucmVsYXRpdmVMaW5rUmVzb2x1dGlvbj1qLHRoaXMudXJsU2VyaWFsaXplcj1jZX1yZWNvZ25pemUoKXtjb25zdCBnPXpJKHRo''@;'; put 'put ''aXMudXJsVHJlZS5yb290LFtdLFtdLHRoaXMuY29uZmlnLmZpbHRlcihoPT52b2lkIDA9PT1oLnJlZGlyZWN0VG8pLHRoaXMucmVsYXRpdmVMaW5rUmVzb2x1dGlvbikuc2VnbWVudEdyb3VwO3JldHVybiB0aGlzLnByb2Nlc3NTZWdtZW50R3JvdXAodGhpcy5pbmplY3Rvcix0aGlzLmNvbmZp''@;'; put 'put ''ZyxnLFBsKS5waXBlKHB0KGg9PntpZihudWxsPT09aClyZXR1cm4gbnVsbDtjb25zdCB2PW5ldyAkQyhbXSxPYmplY3QuZnJlZXplKHt9KSxPYmplY3QuZnJlZXplKE9iamVjdC5hc3NpZ24oe30sdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSksdGhpcy51cmxUcmVlLmZyYWdtZW50LHt9LFBs''@;'; put 'put ''LHRoaXMucm9vdENvbXBvbmVudFR5cGUsbnVsbCx0aGlzLnVybFRyZWUucm9vdCwtMSx7fSkseT1uZXcgb3AodixoKSxDPW5ldyBSSCh0aGlzLnVybCx5KTtyZXR1cm4gdGhpcy5pbmhlcml0UGFyYW1zQW5kRGF0YShDLl9yb290KSxDfSkpfWluaGVyaXRQYXJhbXNBbmREYXRhKGcpe2NvbnN0''@;'; put 'put ''IGg9Zy52YWx1ZSx2PU9IKGgsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5KTtoLnBhcmFtcz1PYmplY3QuZnJlZXplKHYucGFyYW1zKSxoLmRhdGE9T2JqZWN0LmZyZWV6ZSh2LmRhdGEpLGcuY2hpbGRyZW4uZm9yRWFjaCh5PT50aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKHkpKX1w''@;'; put 'put ''cm9jZXNzU2VnbWVudEdyb3VwKGcsaCx2LHkpe3JldHVybiAwPT09di5zZWdtZW50cy5sZW5ndGgmJnYuaGFzQ2hpbGRyZW4oKT90aGlzLnByb2Nlc3NDaGlsZHJlbihnLGgsdik6dGhpcy5wcm9jZXNzU2VnbWVudChnLGgsdix2LnNlZ21lbnRzLHkpfXByb2Nlc3NDaGlsZHJlbihnLGgsdil7''@;'; put 'put ''cmV0dXJuIHBuKE9iamVjdC5rZXlzKHYuY2hpbGRyZW4pKS5waXBlKFlkKHk9Pntjb25zdCBDPXYuY2hpbGRyZW5beV0sST11VShoLHkpO3JldHVybiB0aGlzLnByb2Nlc3NTZWdtZW50R3JvdXAoZyxJLEMseSl9KSxUWSgoeSxDKT0+eSYmQz8oeS5wdXNoKC4uLkMpLHkpOm51bGwpLGZ1bmN0''@;'; put 'put ''aW9uIERZKGQsZz0hMSl7cmV0dXJuIGg9PmgubGlmdChuZXcgZnkoZCxnKSl9KHk9Pm51bGwhPT15KSxOQyhudWxsKSxtSCgpLHB0KHk9PntpZihudWxsPT09eSlyZXR1cm4gbnVsbDtjb25zdCBDPV9VKHkpO3JldHVybiBmdW5jdGlvbiB1b2UoZCl7ZC5zb3J0KChnLGgpPT5nLnZhbHVlLm91''@;'; put 'put ''dGxldD09PVBsPy0xOmgudmFsdWUub3V0bGV0PT09UGw/MTpnLnZhbHVlLm91dGxldC5sb2NhbGVDb21wYXJlKGgudmFsdWUub3V0bGV0KSl9KEMpLEN9KSl9cHJvY2Vzc1NlZ21lbnQoZyxoLHYseSxDKXtyZXR1cm4gcG4oaCkucGlwZShZZChJPT57dmFyIGo7cmV0dXJuIHRoaXMucHJvY2Vz''@;'; put 'put ''c1NlZ21lbnRBZ2FpbnN0Um91dGUobnVsbCE9PShqPUkuX2luamVjdG9yKSYmdm9pZCAwIT09aj9qOmcsSSx2LHksQyl9KSxpcChJPT4hIUkpLEk1KEk9PntpZihXSChJKSlyZXR1cm4gWEgodix5LEMpP1YwKFtdKTpWMChudWxsKTt0aHJvdyBJfSkpfXByb2Nlc3NTZWdtZW50QWdhaW5zdFJv''@;'; put 'put ''dXRlKGcsaCx2LHksQyl7dmFyIEksajtpZihoLnJlZGlyZWN0VG98fCFKSChoLHYseSxDKSlyZXR1cm4gVjAobnVsbCk7bGV0IGNlO2lmKCIqKiI9PT1oLnBhdGgpe2NvbnN0IF9lPXkubGVuZ3RoPjA/d0goeSkucGFyYW1ldGVyczp7fSxSZT1DVSh2KSt5Lmxlbmd0aDtjZT1WMCh7c25hcHNo''@;'; put 'put ''b3Q6bmV3ICRDKHksX2UsT2JqZWN0LmZyZWV6ZShPYmplY3QuYXNzaWduKHt9LHRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcykpLHRoaXMudXJsVHJlZS5mcmFnbWVudCxVSShoKSxaMyhoKSxudWxsIT09KGo9bnVsbCE9PShJPWguY29tcG9uZW50KSYmdm9pZCAwIT09ST9JOmguX2xvYWRlZENv''@;'; put 'put ''bXBvbmVudCkmJnZvaWQgMCE9PWo/ajpudWxsLGgscUgodiksUmUsZU4oaCksUmUpLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5nU2VnbWVudHM6W119KX1lbHNlIGNlPW1VKHYsaCx5LGcpLnBpcGUocHQoKHttYXRjaGVkOl9lLGNvbnN1bWVkU2VnbWVudHM6UmUscmVtYWluaW5nU2Vn''@;'; put 'put ''bWVudHM6TmUscGFyYW1ldGVyczpLZX0pPT57dmFyIGh0LEJ0O2lmKCFfZSlyZXR1cm4gbnVsbDtjb25zdCAkdD1DVSh2KStSZS5sZW5ndGg7cmV0dXJue3NuYXBzaG90Om5ldyAkQyhSZSxLZSxPYmplY3QuZnJlZXplKE9iamVjdC5hc3NpZ24oe30sdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1z''@;'; put 'put ''KSksdGhpcy51cmxUcmVlLmZyYWdtZW50LFVJKGgpLFozKGgpLG51bGwhPT0oQnQ9bnVsbCE9PShodD1oLmNvbXBvbmVudCkmJnZvaWQgMCE9PWh0P2h0OmguX2xvYWRlZENvbXBvbmVudCkmJnZvaWQgMCE9PUJ0P0J0Om51bGwsaCxxSCh2KSwkdCxlTihoKSwkdCksY29uc3VtZWRTZWdtZW50''@;'; put 'put ''czpSZSxyZW1haW5pbmdTZWdtZW50czpOZX19KSk7cmV0dXJuIGNlLnBpcGUoYWgoX2U9Pnt2YXIgUmUsTmU7aWYobnVsbD09PV9lKXJldHVybiBWMChudWxsKTtjb25zdHtzbmFwc2hvdDpLZSxjb25zdW1lZFNlZ21lbnRzOmh0LHJlbWFpbmluZ1NlZ21lbnRzOkJ0fT1fZTtnPW51bGwhPT0o''@;'; put 'put ''UmU9aC5faW5qZWN0b3IpJiZ2b2lkIDAhPT1SZT9SZTpnO2NvbnN0ICR0PW51bGwhPT0oTmU9aC5fbG9hZGVkSW5qZWN0b3IpJiZ2b2lkIDAhPT1OZT9OZTpnLGhuPWZ1bmN0aW9uIGJVKGQpe3JldHVybiBkLmNoaWxkcmVuP2QuY2hpbGRyZW46ZC5sb2FkQ2hpbGRyZW4/ZC5fbG9hZGVkUm91''@;'; put 'put ''dGVzOltdfShoKSx7c2VnbWVudEdyb3VwOkRuLHNsaWNlZFNlZ21lbnRzOmlyfT16SSh2LGh0LEJ0LGhuLmZpbHRlcihFcj0+dm9pZCAwPT09RXIucmVkaXJlY3RUbyksdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uKTtpZigwPT09aXIubGVuZ3RoJiZEbi5oYXNDaGlsZHJlbigpKXJldHVy''@;'; put 'put ''biB0aGlzLnByb2Nlc3NDaGlsZHJlbigkdCxobixEbikucGlwZShwdChFcj0+bnVsbD09PUVyP251bGw6W25ldyBvcChLZSxFcildKSk7aWYoMD09PWhuLmxlbmd0aCYmMD09PWlyLmxlbmd0aClyZXR1cm4gVjAoW25ldyBvcChLZSxbXSldKTtjb25zdCBwcj1aMyhoKT09PUM7cmV0dXJuIHRo''@;'; put 'put ''aXMucHJvY2Vzc1NlZ21lbnQoJHQsaG4sRG4saXIscHI/UGw6QykucGlwZShwdChFcj0+bnVsbD09PUVyP251bGw6W25ldyBvcChLZSxFcildKSl9KSl9fWZ1bmN0aW9uIGNvZShkKXtjb25zdCBnPWQudmFsdWUucm91dGVDb25maWc7cmV0dXJuIGcmJiIiPT09Zy5wYXRoJiZ2b2lkIDA9PT1n''@;'; put 'put ''LnJlZGlyZWN0VG99ZnVuY3Rpb24gX1UoZCl7Y29uc3QgZz1bXSxoPW5ldyBTZXQ7Zm9yKGNvbnN0IHYgb2YgZCl7aWYoIWNvZSh2KSl7Zy5wdXNoKHYpO2NvbnRpbnVlfWNvbnN0IHk9Zy5maW5kKEM9PnYudmFsdWUucm91dGVDb25maWc9PT1DLnZhbHVlLnJvdXRlQ29uZmlnKTt2b2lkIDAh''@;'; put 'put ''PT15Pyh5LmNoaWxkcmVuLnB1c2goLi4udi5jaGlsZHJlbiksaC5hZGQoeSkpOmcucHVzaCh2KX1mb3IoY29uc3QgdiBvZiBoKXtjb25zdCB5PV9VKHYuY2hpbGRyZW4pO2cucHVzaChuZXcgb3Aodi52YWx1ZSx5KSl9cmV0dXJuIGcuZmlsdGVyKHY9PiFoLmhhcyh2KSl9ZnVuY3Rpb24gcUgo''@;'; put 'put ''ZCl7bGV0IGc9ZDtmb3IoO2cuX3NvdXJjZVNlZ21lbnQ7KWc9Zy5fc291cmNlU2VnbWVudDtyZXR1cm4gZ31mdW5jdGlvbiBDVShkKXt2YXIgZyxoO2xldCB2PWQseT1udWxsIT09KGc9di5fc2VnbWVudEluZGV4U2hpZnQpJiZ2b2lkIDAhPT1nP2c6MDtmb3IoO3YuX3NvdXJjZVNlZ21lbnQ7''@;'; put 'put ''KXY9di5fc291cmNlU2VnbWVudCx5Kz1udWxsIT09KGg9di5fc2VnbWVudEluZGV4U2hpZnQpJiZ2b2lkIDAhPT1oP2g6MDtyZXR1cm4geS0xfWZ1bmN0aW9uIFVJKGQpe3JldHVybiBkLmRhdGF8fHt9fWZ1bmN0aW9uIGVOKGQpe3JldHVybiBkLnJlc29sdmV8fHt9fWZ1bmN0aW9uIHROKGQp''@;'; put 'put ''e3JldHVybiJzdHJpbmciPT10eXBlb2YgZC50aXRsZXx8bnVsbD09PWQudGl0bGV9ZnVuY3Rpb24gTXkoZCl7cmV0dXJuIGFoKGc9Pntjb25zdCBoPWQoZyk7cmV0dXJuIGg/cG4oaCkucGlwZShwdCgoKT0+ZykpOlYwKGcpfSl9bGV0IGFrPSgoKT0+e2NsYXNzIGR7YnVpbGRUaXRsZShoKXt2''@;'; put 'put ''YXIgdjtsZXQgeSxDPWgucm9vdDtmb3IoO3ZvaWQgMCE9PUM7KXk9bnVsbCE9PSh2PXRoaXMuZ2V0UmVzb2x2ZWRUaXRsZUZvclJvdXRlKEMpKSYmdm9pZCAwIT09dj92OnksQz1DLmNoaWxkcmVuLmZpbmQoST0+SS5vdXRsZXQ9PT1QbCk7cmV0dXJuIHl9Z2V0UmVzb2x2ZWRUaXRsZUZvclJv''@;'; put 'put ''dXRlKGgpe3JldHVybiBoLmRhdGFbRDVdfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gQzIoTVUpfSxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLE1VPSgo''@;'; put 'put ''KT0+e2NsYXNzIGQgZXh0ZW5kcyBha3tjb25zdHJ1Y3RvcihoKXtzdXBlcigpLHRoaXMudGl0bGU9aH11cGRhdGVUaXRsZShoKXtjb25zdCB2PXRoaXMuYnVpbGRUaXRsZShoKTt2b2lkIDAhPT12JiZ0aGlzLnRpdGxlLnNldFRpdGxlKHYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIG5ldyhofHxkKShFaShpeSkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NsYXNzIEpJe31jbGFzcyBFVSBleHRlbmRzIGNsYXNzIHBvZXtzaG91bGREZXRhY2goZyl7cmV0dXJuITF9c3Rv''@;'; put 'put ''cmUoZyxoKXt9c2hvdWxkQXR0YWNoKGcpe3JldHVybiExfXJldHJpZXZlKGcpe3JldHVybiBudWxsfXNob3VsZFJldXNlUm91dGUoZyxoKXtyZXR1cm4gZy5yb3V0ZUNvbmZpZz09PWgucm91dGVDb25maWd9fXt9Y29uc3QgWEk9bmV3IE90KCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5''@;'; put 'put ''OigpPT4oe30pfSksck49bmV3IE90KCJST1VURVMiKTtsZXQgS0k9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuaW5qZWN0b3I9aCx0aGlzLmNvbXBpbGVyPXYsdGhpcy5jb21wb25lbnRMb2FkZXJzPW5ldyBXZWFrTWFwLHRoaXMuY2hpbGRyZW5Mb2FkZXJzPW5ldyBXZWFr''@;'; put 'put ''TWFwfWxvYWRDb21wb25lbnQoaCl7aWYodGhpcy5jb21wb25lbnRMb2FkZXJzLmdldChoKSlyZXR1cm4gdGhpcy5jb21wb25lbnRMb2FkZXJzLmdldChoKTtpZihoLl9sb2FkZWRDb21wb25lbnQpcmV0dXJuIFYwKGguX2xvYWRlZENvbXBvbmVudCk7dGhpcy5vbkxvYWRTdGFydExpc3RlbmVy''@;'; put 'put ''JiZ0aGlzLm9uTG9hZFN0YXJ0TGlzdGVuZXIoaCk7Y29uc3Qgdj1MNShoLmxvYWRDb21wb25lbnQoKSkucGlwZShqMihDPT57dGhpcy5vbkxvYWRFbmRMaXN0ZW5lciYmdGhpcy5vbkxvYWRFbmRMaXN0ZW5lcihoKSxoLl9sb2FkZWRDb21wb25lbnQ9Q30pLFZDKCgpPT57dGhpcy5jb21wb25l''@;'; put 'put ''bnRMb2FkZXJzLmRlbGV0ZShoKX0pKSx5PW5ldyBnbih2LCgpPT5uZXcgJGUpLnBpcGUod24oKSk7cmV0dXJuIHRoaXMuY29tcG9uZW50TG9hZGVycy5zZXQoaCx5KSx5fWxvYWRDaGlsZHJlbihoLHYpe2lmKHRoaXMuY2hpbGRyZW5Mb2FkZXJzLmdldCh2KSlyZXR1cm4gdGhpcy5jaGlsZHJl''@;'; put 'put ''bkxvYWRlcnMuZ2V0KHYpO2lmKHYuX2xvYWRlZFJvdXRlcylyZXR1cm4gVjAoe3JvdXRlczp2Ll9sb2FkZWRSb3V0ZXMsaW5qZWN0b3I6di5fbG9hZGVkSW5qZWN0b3J9KTt0aGlzLm9uTG9hZFN0YXJ0TGlzdGVuZXImJnRoaXMub25Mb2FkU3RhcnRMaXN0ZW5lcih2KTtjb25zdCBDPXRoaXMu''@;'; put 'put ''bG9hZE1vZHVsZUZhY3RvcnlPclJvdXRlcyh2LmxvYWRDaGlsZHJlbikucGlwZShwdChqPT57dGhpcy5vbkxvYWRFbmRMaXN0ZW5lciYmdGhpcy5vbkxvYWRFbmRMaXN0ZW5lcih2KTtsZXQgY2UsX2UsUmU9ITE7QXJyYXkuaXNBcnJheShqKT9fZT1qOihjZT1qLmNyZWF0ZShoKS5pbmplY3Rv''@;'; put 'put ''cixfZT15SChjZS5nZXQock4sW10sc28uU2VsZnxzby5PcHRpb25hbCkpKTtyZXR1cm57cm91dGVzOl9lLm1hcChWSSksaW5qZWN0b3I6Y2V9fSksVkMoKCk9Pnt0aGlzLmNoaWxkcmVuTG9hZGVycy5kZWxldGUodil9KSksST1uZXcgZ24oQywoKT0+bmV3ICRlKS5waXBlKHduKCkpO3JldHVy''@;'; put 'put ''biB0aGlzLmNoaWxkcmVuTG9hZGVycy5zZXQodixJKSxJfWxvYWRNb2R1bGVGYWN0b3J5T3JSb3V0ZXMoaCl7cmV0dXJuIEw1KGgoKSkucGlwZSh1cih2PT52IGluc3RhbmNlb2YgUUF8fEFycmF5LmlzQXJyYXkodik/VjAodik6cG4odGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMo''@;'; put 'put ''dikpKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKHhzKSxFaShtRikpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NsYXNzIHhVe31jbGFzcyBUVXtzaG91''@;'; put 'put ''bGRQcm9jZXNzVXJsKGcpe3JldHVybiEwfWV4dHJhY3QoZyl7cmV0dXJuIGd9bWVyZ2UoZyxoKXtyZXR1cm4gZ319ZnVuY3Rpb24gbW9lKGQpe3Rocm93IGR9ZnVuY3Rpb24gdm9lKGQsZyxoKXtyZXR1cm4gZy5wYXJzZSgiLyIpfWNvbnN0IEFvZT17cGF0aHM6ImV4YWN0IixmcmFnbWVudDoi''@;'; put 'put ''aWdub3JlZCIsbWF0cml4UGFyYW1zOiJpZ25vcmVkIixxdWVyeVBhcmFtczoiZXhhY3QifSx5b2U9e3BhdGhzOiJzdWJzZXQiLGZyYWdtZW50OiJpZ25vcmVkIixtYXRyaXhQYXJhbXM6Imlnbm9yZWQiLHF1ZXJ5UGFyYW1zOiJzdWJzZXQifTtmdW5jdGlvbiBpTigpe3ZhciBkLGc7Y29uc3Qg''@;'; put 'put ''aD1DMihiSCksdj1DMihlaykseT1DMihWZCksQz1DMih4cyksST1DMihtRiksaj1udWxsIT09KGQ9QzIock4se29wdGlvbmFsOiEwfSkpJiZ2b2lkIDAhPT1kP2Q6W10sY2U9bnVsbCE9PShnPUMyKFhJLHtvcHRpb25hbDohMH0pKSYmdm9pZCAwIT09Zz9nOnt9LF9lPUMyKE1VKSxSZT1DMihh''@;'; put 'put ''ayx7b3B0aW9uYWw6ITB9KSxOZT1DMih4VSx7b3B0aW9uYWw6ITB9KSxLZT1DMihKSSx7b3B0aW9uYWw6ITB9KSxodD1uZXcgRWwobnVsbCxoLHYseSxDLEkseUgoaikpO3JldHVybiBOZSYmKGh0LnVybEhhbmRsaW5nU3RyYXRlZ3k9TmUpLEtlJiYoaHQucm91dGVSZXVzZVN0cmF0ZWd5PUtl''@;'; put 'put ''KSxodC50aXRsZVN0cmF0ZWd5PW51bGwhPVJlP1JlOl9lLGZ1bmN0aW9uIHdvZShkLGcpe2QuZXJyb3JIYW5kbGVyJiYoZy5lcnJvckhhbmRsZXI9ZC5lcnJvckhhbmRsZXIpLGQubWFsZm9ybWVkVXJpRXJyb3JIYW5kbGVyJiYoZy5tYWxmb3JtZWRVcmlFcnJvckhhbmRsZXI9ZC5tYWxmb3Jt''@;'; put 'put ''ZWRVcmlFcnJvckhhbmRsZXIpLGQub25TYW1lVXJsTmF2aWdhdGlvbiYmKGcub25TYW1lVXJsTmF2aWdhdGlvbj1kLm9uU2FtZVVybE5hdmlnYXRpb24pLGQucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSYmKGcucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneT1kLnBhcmFtc0luaGVyaXRhbmNl''@;'; put 'put ''U3RyYXRlZ3kpLGQucmVsYXRpdmVMaW5rUmVzb2x1dGlvbiYmKGcucmVsYXRpdmVMaW5rUmVzb2x1dGlvbj1kLnJlbGF0aXZlTGlua1Jlc29sdXRpb24pLGQudXJsVXBkYXRlU3RyYXRlZ3kmJihnLnVybFVwZGF0ZVN0cmF0ZWd5PWQudXJsVXBkYXRlU3RyYXRlZ3kpLGQuY2FuY2VsZWROYXZp''@;'; put 'put ''Z2F0aW9uUmVzb2x1dGlvbiYmKGcuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbj1kLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24pfShjZSxodCksaHR9bGV0IEVsPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGosY2Upe3RoaXMucm9vdENvbXBvbmVudFR5cGU9''@;'; put 'put ''aCx0aGlzLnVybFNlcmlhbGl6ZXI9dix0aGlzLnJvb3RDb250ZXh0cz15LHRoaXMubG9jYXRpb249Qyx0aGlzLmNvbmZpZz1jZSx0aGlzLmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlvbj1udWxsLHRoaXMuY3VycmVudE5hdmlnYXRpb249bnVsbCx0aGlzLmRpc3Bvc2VkPSExLHRoaXMubmF2aWdh''@;'; put 'put ''dGlvbklkPTAsdGhpcy5jdXJyZW50UGFnZUlkPTAsdGhpcy5pc05nWm9uZUVuYWJsZWQ9ITEsdGhpcy5ldmVudHM9bmV3ICRlLHRoaXMuZXJyb3JIYW5kbGVyPW1vZSx0aGlzLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcj12b2UsdGhpcy5uYXZpZ2F0ZWQ9ITEsdGhpcy5sYXN0U3VjY2Vzc2Z1''@;'; put 'put ''bElkPS0xLHRoaXMuYWZ0ZXJQcmVhY3RpdmF0aW9uPSgpPT5WMCh2b2lkIDApLHRoaXMudXJsSGFuZGxpbmdTdHJhdGVneT1uZXcgVFUsdGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3k9bmV3IEVVLHRoaXMub25TYW1lVXJsTmF2aWdhdGlvbj0iaWdub3JlIix0aGlzLnBhcmFtc0luaGVyaXRhbmNl''@;'; put 'put ''U3RyYXRlZ3k9ImVtcHR5T25seSIsdGhpcy51cmxVcGRhdGVTdHJhdGVneT0iZGVmZXJyZWQiLHRoaXMucmVsYXRpdmVMaW5rUmVzb2x1dGlvbj0iY29ycmVjdGVkIix0aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb249InJlcGxhY2UiLHRoaXMuY29uZmlnTG9hZGVyPUkuZ2V0KEtJ''@;'; put 'put ''KSx0aGlzLmNvbmZpZ0xvYWRlci5vbkxvYWRFbmRMaXN0ZW5lcj1LZT0+dGhpcy50cmlnZ2VyRXZlbnQobmV3IE8wZShLZSkpLHRoaXMuY29uZmlnTG9hZGVyLm9uTG9hZFN0YXJ0TGlzdGVuZXI9S2U9PnRoaXMudHJpZ2dlckV2ZW50KG5ldyB0VShLZSkpLHRoaXMubmdNb2R1bGU9SS5nZXQo''@;'; put 'put ''UjMpLHRoaXMuY29uc29sZT1JLmdldChwRik7Y29uc3QgTmU9SS5nZXQoZGwpO3RoaXMuaXNOZ1pvbmVFbmFibGVkPU5lIGluc3RhbmNlb2YgZGwmJmRsLmlzSW5Bbmd1bGFyWm9uZSgpLHRoaXMucmVzZXRDb25maWcoY2UpLHRoaXMuY3VycmVudFVybFRyZWU9ZnVuY3Rpb24gdzBlKCl7cmV0''@;'; put 'put ''dXJuIG5ldyBNNyhuZXcgTWwoW10se30pLHt9LG51bGwpfSgpLHRoaXMucmF3VXJsVHJlZT10aGlzLmN1cnJlbnRVcmxUcmVlLHRoaXMuYnJvd3NlclVybFRyZWU9dGhpcy5jdXJyZW50VXJsVHJlZSx0aGlzLnJvdXRlclN0YXRlPUxIKHRoaXMuY3VycmVudFVybFRyZWUsdGhpcy5yb290Q29t''@;'; put 'put ''cG9uZW50VHlwZSksdGhpcy50cmFuc2l0aW9ucz1uZXcgU2woe2lkOjAsdGFyZ2V0UGFnZUlkOjAsY3VycmVudFVybFRyZWU6dGhpcy5jdXJyZW50VXJsVHJlZSxjdXJyZW50UmF3VXJsOnRoaXMuY3VycmVudFVybFRyZWUsZXh0cmFjdGVkVXJsOnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5l''@;'; put 'put ''eHRyYWN0KHRoaXMuY3VycmVudFVybFRyZWUpLHVybEFmdGVyUmVkaXJlY3RzOnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5leHRyYWN0KHRoaXMuY3VycmVudFVybFRyZWUpLHJhd1VybDp0aGlzLmN1cnJlbnRVcmxUcmVlLGV4dHJhczp7fSxyZXNvbHZlOm51bGwscmVqZWN0Om51bGwscHJv''@;'; put 'put ''bWlzZTpQcm9taXNlLnJlc29sdmUoITApLHNvdXJjZToiaW1wZXJhdGl2ZSIscmVzdG9yZWRTdGF0ZTpudWxsLGN1cnJlbnRTbmFwc2hvdDp0aGlzLnJvdXRlclN0YXRlLnNuYXBzaG90LHRhcmdldFNuYXBzaG90Om51bGwsY3VycmVudFJvdXRlclN0YXRlOnRoaXMucm91dGVyU3RhdGUsdGFy''@;'; put 'put ''Z2V0Um91dGVyU3RhdGU6bnVsbCxndWFyZHM6e2NhbkFjdGl2YXRlQ2hlY2tzOltdLGNhbkRlYWN0aXZhdGVDaGVja3M6W119LGd1YXJkc1Jlc3VsdDpudWxsfSksdGhpcy5uYXZpZ2F0aW9ucz10aGlzLnNldHVwTmF2aWdhdGlvbnModGhpcy50cmFuc2l0aW9ucyksdGhpcy5wcm9jZXNzTmF2''@;'; put 'put ''aWdhdGlvbnMoKX1nZXQgYnJvd3NlclBhZ2VJZCgpe3ZhciBoO3JldHVybiBudWxsPT09KGg9dGhpcy5sb2NhdGlvbi5nZXRTdGF0ZSgpKXx8dm9pZCAwPT09aD92b2lkIDA6aC5cdTAyNzVyb3V0ZXJQYWdlSWR9c2V0dXBOYXZpZ2F0aW9ucyhoKXtjb25zdCB2PXRoaXMuZXZlbnRzO3JldHVy''@;'; put 'put ''biBoLnBpcGUobTIoeT0+MCE9PXkuaWQpLHB0KHk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx5KSx7ZXh0cmFjdGVkVXJsOnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5leHRyYWN0KHkucmF3VXJsKX0pKSxhaCh5PT57bGV0IEM9ITEsST0hMTtyZXR1cm4gVjAoeSkucGlwZShq''@;'; put 'put ''MihqPT57dGhpcy5jdXJyZW50TmF2aWdhdGlvbj17aWQ6ai5pZCxpbml0aWFsVXJsOmoucmF3VXJsLGV4dHJhY3RlZFVybDpqLmV4dHJhY3RlZFVybCx0cmlnZ2VyOmouc291cmNlLGV4dHJhczpqLmV4dHJhcyxwcmV2aW91c05hdmlnYXRpb246dGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRp''@;'; put 'put ''b24/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uKSx7cHJldmlvdXNOYXZpZ2F0aW9uOm51bGx9KTpudWxsfX0pLGFoKGo9Pntjb25zdCBjZT10aGlzLmJyb3dzZXJVcmxUcmVlLnRvU3RyaW5nKCksX2U9IXRoaXMubmF2aWdhdGVk''@;'; put 'put ''fHxqLmV4dHJhY3RlZFVybC50b1N0cmluZygpIT09Y2V8fGNlIT09dGhpcy5jdXJyZW50VXJsVHJlZS50b1N0cmluZygpO2lmKCgicmVsb2FkIj09PXRoaXMub25TYW1lVXJsTmF2aWdhdGlvbnx8X2UpJiZ0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChqLnJhd1Vy''@;'; put 'put ''bCkpcmV0dXJuIElVKGouc291cmNlKSYmKHRoaXMuYnJvd3NlclVybFRyZWU9ai5leHRyYWN0ZWRVcmwpLFYwKGopLnBpcGUoYWgoTmU9Pntjb25zdCBLZT10aGlzLnRyYW5zaXRpb25zLmdldFZhbHVlKCk7cmV0dXJuIHYubmV4dChuZXcgREkoTmUuaWQsdGhpcy5zZXJpYWxpemVVcmwoTmUu''@;'; put 'put ''ZXh0cmFjdGVkVXJsKSxOZS5zb3VyY2UsTmUucmVzdG9yZWRTdGF0ZSkpLEtlIT09dGhpcy50cmFuc2l0aW9ucy5nZXRWYWx1ZSgpP3N5OlByb21pc2UucmVzb2x2ZShOZSl9KSxmdW5jdGlvbiBhb2UoZCxnLGgsdil7cmV0dXJuIGFoKHk9PmZ1bmN0aW9uIFlJKGQsZyxoLHYseSl7cmV0dXJu''@;'; put 'put ''IG5ldyBvb2UoZCxnLGgsdix5KS5hcHBseSgpfShkLGcsaCx5LmV4dHJhY3RlZFVybCx2KS5waXBlKHB0KEM9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx5KSx7dXJsQWZ0ZXJSZWRpcmVjdHM6Q30pKSkpfSh0aGlzLm5nTW9kdWxlLmluamVjdG9yLHRoaXMuY29uZmlnTG9hZGVy''@;'; put 'put ''LHRoaXMudXJsU2VyaWFsaXplcix0aGlzLmNvbmZpZyksajIoTmU9Pnt0aGlzLmN1cnJlbnROYXZpZ2F0aW9uPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmN1cnJlbnROYXZpZ2F0aW9uKSx7ZmluYWxVcmw6TmUudXJsQWZ0ZXJSZWRpcmVjdHN9KSx5LnVybEFmdGVyUmVk''@;'; put 'put ''aXJlY3RzPU5lLnVybEFmdGVyUmVkaXJlY3RzfSksZnVuY3Rpb24gaG9lKGQsZyxoLHYseSxDKXtyZXR1cm4gdXIoST0+ZnVuY3Rpb24gd1UoZCxnLGgsdix5LEMsST0iZW1wdHlPbmx5IixqPSJsZWdhY3kiKXtyZXR1cm4gbmV3IHNvZShkLGcsaCx2LHksSSxqLEMpLnJlY29nbml6ZSgpLnBp''@;'; put 'put ''cGUoYWgoY2U9Pm51bGw9PT1jZT9mdW5jdGlvbiB5VShkKXtyZXR1cm4gbmV3IEYoZz0+Zy5lcnJvcihkKSl9KG5ldyBsb2UpOlYwKGNlKSkpfShkLGcsaCxJLnVybEFmdGVyUmVkaXJlY3RzLHYuc2VyaWFsaXplKEkudXJsQWZ0ZXJSZWRpcmVjdHMpLHYseSxDKS5waXBlKHB0KGo9Pk9iamVj''@;'; put 'put ''dC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxJKSx7dGFyZ2V0U25hcHNob3Q6an0pKSkpfSh0aGlzLm5nTW9kdWxlLmluamVjdG9yLHRoaXMucm9vdENvbXBvbmVudFR5cGUsdGhpcy5jb25maWcsdGhpcy51cmxTZXJpYWxpemVyLHRoaXMucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSx0aGlz''@;'; put 'put ''LnJlbGF0aXZlTGlua1Jlc29sdXRpb24pLGoyKE5lPT57aWYoeS50YXJnZXRTbmFwc2hvdD1OZS50YXJnZXRTbmFwc2hvdCwiZWFnZXIiPT09dGhpcy51cmxVcGRhdGVTdHJhdGVneSl7aWYoIU5lLmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2Upe2NvbnN0IGh0PXRoaXMudXJsSGFuZGxpbmdT''@;'; put 'put ''dHJhdGVneS5tZXJnZShOZS51cmxBZnRlclJlZGlyZWN0cyxOZS5yYXdVcmwpO3RoaXMuc2V0QnJvd3NlclVybChodCxOZSl9dGhpcy5icm93c2VyVXJsVHJlZT1OZS51cmxBZnRlclJlZGlyZWN0c31jb25zdCBLZT1uZXcgSTBlKE5lLmlkLHRoaXMuc2VyaWFsaXplVXJsKE5lLmV4dHJhY3Rl''@;'; put 'put ''ZFVybCksdGhpcy5zZXJpYWxpemVVcmwoTmUudXJsQWZ0ZXJSZWRpcmVjdHMpLE5lLnRhcmdldFNuYXBzaG90KTt2Lm5leHQoS2UpfSkpO2lmKF9lJiZ0aGlzLnJhd1VybFRyZWUmJnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5zaG91bGRQcm9jZXNzVXJsKHRoaXMucmF3VXJsVHJlZSkpe2Nv''@;'; put 'put ''bnN0e2lkOktlLGV4dHJhY3RlZFVybDpodCxzb3VyY2U6QnQscmVzdG9yZWRTdGF0ZTokdCxleHRyYXM6aG59PWosRG49bmV3IERJKEtlLHRoaXMuc2VyaWFsaXplVXJsKGh0KSxCdCwkdCk7di5uZXh0KERuKTtjb25zdCBpcj1MSChodCx0aGlzLnJvb3RDb21wb25lbnRUeXBlKS5zbmFwc2hv''@;'; put 'put ''dDtyZXR1cm4gVjAoeT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saikse3RhcmdldFNuYXBzaG90OmlyLHVybEFmdGVyUmVkaXJlY3RzOmh0LGV4dHJhczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saG4pLHtza2lwTG9jYXRpb25DaGFuZ2U6ITEscmVwbGFjZVVybDoh''@;'; put 'put ''MX0pfSkpfXJldHVybiB0aGlzLnJhd1VybFRyZWU9ai5yYXdVcmwsai5yZXNvbHZlKG51bGwpLHN5fSksajIoaj0+e2NvbnN0IGNlPW5ldyBxWShqLmlkLHRoaXMuc2VyaWFsaXplVXJsKGouZXh0cmFjdGVkVXJsKSx0aGlzLnNlcmlhbGl6ZVVybChqLnVybEFmdGVyUmVkaXJlY3RzKSxqLnRh''@;'; put 'put ''cmdldFNuYXBzaG90KTt0aGlzLnRyaWdnZXJFdmVudChjZSl9KSxwdChqPT55PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxqKSx7Z3VhcmRzOm5rKGoudGFyZ2V0U25hcHNob3Qsai5jdXJyZW50U25hcHNob3QsdGhpcy5yb290Q29udGV4dHMpfSkpLGZ1bmN0aW9uIGhVKGQsZyl7''@;'; put 'put ''cmV0dXJuIHVyKGg9Pntjb25zdHt0YXJnZXRTbmFwc2hvdDp2LGN1cnJlbnRTbmFwc2hvdDp5LGd1YXJkczp7Y2FuQWN0aXZhdGVDaGVja3M6QyxjYW5EZWFjdGl2YXRlQ2hlY2tzOkl9fT1oO3JldHVybiAwPT09SS5sZW5ndGgmJjA9PT1DLmxlbmd0aD9WMChPYmplY3QuYXNzaWduKE9iamVj''@;'; put 'put ''dC5hc3NpZ24oe30saCkse2d1YXJkc1Jlc3VsdDohMH0pKTpmdW5jdGlvbiBkVShkLGcsaCx2KXtyZXR1cm4gcG4oZCkucGlwZSh1cih5PT5mdW5jdGlvbiAkMGUoZCxnLGgsdix5KXtjb25zdCBDPWcmJmcucm91dGVDb25maWc/Zy5yb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlOm51bGw7cmV0''@;'; put 'put ''dXJuIEMmJjAhPT1DLmxlbmd0aD9WMChDLm1hcChqPT57dmFyIGNlO2NvbnN0IF9lPW51bGwhPT0oY2U9dGsoZykpJiZ2b2lkIDAhPT1jZT9jZTp5LFJlPWJ5KGosX2UpO3JldHVybiBMNShmdW5jdGlvbiBKMGUoZCl7cmV0dXJuIGQmJl95KGQuY2FuRGVhY3RpdmF0ZSl9KFJlKT9SZS5jYW5E''@;'; put 'put ''ZWFjdGl2YXRlKGQsZyxoLHYpOl9lLnJ1bkluQ29udGV4dCgoKT0+UmUoZCxnLGgsdikpKS5waXBlKGlwKCkpfSkpLnBpcGUoRDcoKSk6VjAoITApfSh5LmNvbXBvbmVudCx5LnJvdXRlLGgsZyx2KSksaXAoeT0+ITAhPT15LCEwKSl9KEksdix5LGQpLnBpcGUodXIoaj0+aiYmZnVuY3Rpb24g''@;'; put 'put ''VzBlKGQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGR9KGopP2Z1bmN0aW9uIFlIKGQsZyxoLHYpe3JldHVybiBwbihnKS5waXBlKFlkKHk9PmRIKGZ1bmN0aW9uIHBVKGQsZyl7cmV0dXJuIG51bGwhPT1kJiZnJiZnKG5ldyBndShkKSksVjAoITApfSh5LnJvdXRlLnBhcmVudCx2KSxmdW5j''@;'; put 'put ''dGlvbiBLMGUoZCxnKXtyZXR1cm4gbnVsbCE9PWQmJmcmJmcobmV3IFIwZShkKSksVjAoITApfSh5LnJvdXRlLHYpLGZ1bmN0aW9uIGdVKGQsZyxoKXtjb25zdCB2PWdbZy5sZW5ndGgtMV0sQz1nLnNsaWNlKDAsZy5sZW5ndGgtMSkucmV2ZXJzZSgpLm1hcChJPT5mdW5jdGlvbiBjVShkKXtj''@;'; put 'put ''b25zdCBnPWQucm91dGVDb25maWc/ZC5yb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkOm51bGw7cmV0dXJuIGcmJjAhPT1nLmxlbmd0aD97bm9kZTpkLGd1YXJkczpnfTpudWxsfShJKSkuZmlsdGVyKEk9Pm51bGwhPT1JKS5tYXAoST0+eDUoKCk9PlYwKEkuZ3VhcmRzLm1hcChjZT0+e3Zh''@;'; put 'put ''ciBfZTtjb25zdCBSZT1udWxsIT09KF9lPXRrKEkubm9kZSkpJiZ2b2lkIDAhPT1fZT9fZTpoLE5lPWJ5KGNlLFJlKTtyZXR1cm4gTDUoZnVuY3Rpb24gUTBlKGQpe3JldHVybiBkJiZfeShkLmNhbkFjdGl2YXRlQ2hpbGQpfShOZSk/TmUuY2FuQWN0aXZhdGVDaGlsZCh2LGQpOlJlLnJ1bklu''@;'; put 'put ''Q29udGV4dCgoKT0+TmUodixkKSkpLnBpcGUoaXAoKSl9KSkucGlwZShENygpKSkpO3JldHVybiBWMChDKS5waXBlKEQ3KCkpfShkLHkucGF0aCxoKSxmdW5jdGlvbiBVdmUoZCxnLGgpe2NvbnN0IHY9Zy5yb3V0ZUNvbmZpZz9nLnJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlOm51bGw7aWYoIXZ8''@;'; put 'put ''fDA9PT12Lmxlbmd0aClyZXR1cm4gVjAoITApO2NvbnN0IHk9di5tYXAoQz0+eDUoKCk9Pnt2YXIgSTtjb25zdCBqPW51bGwhPT0oST10ayhnKSkmJnZvaWQgMCE9PUk/STpoLGNlPWJ5KEMsaik7cmV0dXJuIEw1KGZ1bmN0aW9uIFUwZShkKXtyZXR1cm4gZCYmX3koZC5jYW5BY3RpdmF0ZSl9''@;'; put 'put ''KGNlKT9jZS5jYW5BY3RpdmF0ZShnLGQpOmoucnVuSW5Db250ZXh0KCgpPT5jZShnLGQpKSkucGlwZShpcCgpKX0pKTtyZXR1cm4gVjAoeSkucGlwZShENygpKX0oZCx5LnJvdXRlLGgpKSksaXAoeT0+ITAhPT15LCEwKSl9KHYsQyxkLGcpOlYwKGopKSxwdChqPT5PYmplY3QuYXNzaWduKE9i''@;'; put 'put ''amVjdC5hc3NpZ24oe30saCkse2d1YXJkc1Jlc3VsdDpqfSkpKX0pfSh0aGlzLm5nTW9kdWxlLmluamVjdG9yLGo9PnRoaXMudHJpZ2dlckV2ZW50KGopKSxqMihqPT57aWYoeS5ndWFyZHNSZXN1bHQ9ai5ndWFyZHNSZXN1bHQsRzYoai5ndWFyZHNSZXN1bHQpKXRocm93IE5IKDAsai5ndWFy''@;'; put 'put ''ZHNSZXN1bHQpO2NvbnN0IGNlPW5ldyBEMGUoai5pZCx0aGlzLnNlcmlhbGl6ZVVybChqLmV4dHJhY3RlZFVybCksdGhpcy5zZXJpYWxpemVVcmwoai51cmxBZnRlclJlZGlyZWN0cyksai50YXJnZXRTbmFwc2hvdCwhIWouZ3VhcmRzUmVzdWx0KTt0aGlzLnRyaWdnZXJFdmVudChjZSl9KSxt''@;'; put 'put ''MihqPT4hIWouZ3VhcmRzUmVzdWx0fHwodGhpcy5yZXN0b3JlSGlzdG9yeShqKSx0aGlzLmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKGosIiIsMyksITEpKSxNeShqPT57aWYoai5ndWFyZHMuY2FuQWN0aXZhdGVDaGVja3MubGVuZ3RoKXJldHVybiBWMChqKS5waXBlKGoyKGNlPT57Y29u''@;'; put 'put ''c3QgX2U9bmV3IGVVKGNlLmlkLHRoaXMuc2VyaWFsaXplVXJsKGNlLmV4dHJhY3RlZFVybCksdGhpcy5zZXJpYWxpemVVcmwoY2UudXJsQWZ0ZXJSZWRpcmVjdHMpLGNlLnRhcmdldFNuYXBzaG90KTt0aGlzLnRyaWdnZXJFdmVudChfZSl9KSxhaChjZT0+e2xldCBfZT0hMTtyZXR1cm4gVjAo''@;'; put 'put ''Y2UpLnBpcGUoZnVuY3Rpb24gZG9lKGQsZyl7cmV0dXJuIHVyKGg9Pntjb25zdHt0YXJnZXRTbmFwc2hvdDp2LGd1YXJkczp7Y2FuQWN0aXZhdGVDaGVja3M6eX19PWg7aWYoIXkubGVuZ3RoKXJldHVybiBWMChoKTtsZXQgQz0wO3JldHVybiBwbih5KS5waXBlKFlkKEk9PmZ1bmN0aW9uIFNV''@;'; put 'put ''KGQsZyxoLHYpe2NvbnN0IHk9ZC5yb3V0ZUNvbmZpZyxDPWQuX3Jlc29sdmU7cmV0dXJuIHZvaWQgMCE9PShudWxsPT15P3ZvaWQgMDp5LnRpdGxlKSYmIXROKHkpJiYoQ1tENV09eS50aXRsZSksZnVuY3Rpb24ga3koZCxnLGgsdil7Y29uc3QgeT1mdW5jdGlvbiBRSShkKXtyZXR1cm5bLi4u''@;'; put 'put ''T2JqZWN0LmtleXMoZCksLi4uT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKV19KGQpO2lmKDA9PT15Lmxlbmd0aClyZXR1cm4gVjAoe30pO2NvbnN0IEM9e307cmV0dXJuIHBuKHkpLnBpcGUodXIoST0+ZnVuY3Rpb24gU3koZCxnLGgsdil7dmFyIHk7Y29uc3QgQz1udWxsIT09KHk9''@;'; put 'put ''dGsoZykpJiZ2b2lkIDAhPT15P3k6dixJPWJ5KGQsQyk7cmV0dXJuIEw1KEkucmVzb2x2ZT9JLnJlc29sdmUoZyxoKTpDLnJ1bkluQ29udGV4dCgoKT0+SShnLGgpKSl9KGRbSV0sZyxoLHYpLnBpcGUoaXAoKSxqMihqPT57Q1tJXT1qfSkpKSxnSCgxKSx6NihDKSxJNShJPT5XSChJKT9zeTpy''@;'; put 'put ''cChJKSkpfShDLGQsZyx2KS5waXBlKHB0KEk9PihkLl9yZXNvbHZlZERhdGE9SSxkLmRhdGE9T0goZCxoKS5yZXNvbHZlLHkmJnROKHkpJiYoZC5kYXRhW0Q1XT15LnRpdGxlKSxudWxsKSkpfShJLnJvdXRlLHYsZCxnKSksajIoKCk9PkMrKyksZ0goMSksdXIoST0+Qz09PXkubGVuZ3RoP1Yw''@;'; put 'put ''KGgpOnN5KSl9KX0odGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LHRoaXMubmdNb2R1bGUuaW5qZWN0b3IpLGoyKHtuZXh0OigpPT5fZT0hMCxjb21wbGV0ZTooKT0+e19lfHwodGhpcy5yZXN0b3JlSGlzdG9yeShjZSksdGhpcy5jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbihjZSwi''@;'; put 'put ''IiwyKSl9fSkpfSksajIoY2U9Pntjb25zdCBfZT1uZXcgTDBlKGNlLmlkLHRoaXMuc2VyaWFsaXplVXJsKGNlLmV4dHJhY3RlZFVybCksdGhpcy5zZXJpYWxpemVVcmwoY2UudXJsQWZ0ZXJSZWRpcmVjdHMpLGNlLnRhcmdldFNuYXBzaG90KTt0aGlzLnRyaWdnZXJFdmVudChfZSl9KSl9KSxN''@;'; put 'put ''eShqPT57Y29uc3QgY2U9X2U9Pnt2YXIgUmU7Y29uc3QgTmU9W107KG51bGw9PT0oUmU9X2Uucm91dGVDb25maWcpfHx2b2lkIDA9PT1SZT92b2lkIDA6UmUubG9hZENvbXBvbmVudCkmJiFfZS5yb3V0ZUNvbmZpZy5fbG9hZGVkQ29tcG9uZW50JiZOZS5wdXNoKHRoaXMuY29uZmlnTG9hZGVy''@;'; put 'put ''LmxvYWRDb21wb25lbnQoX2Uucm91dGVDb25maWcpLnBpcGUoajIoS2U9PntfZS5jb21wb25lbnQ9S2V9KSxwdCgoKT0+e30pKSk7Zm9yKGNvbnN0IEtlIG9mIF9lLmNoaWxkcmVuKU5lLnB1c2goLi4uY2UoS2UpKTtyZXR1cm4gTmV9O3JldHVybiBheShjZShqLnRhcmdldFNuYXBzaG90LnJv''@;'; put 'put ''b3QpKS5waXBlKE5DKCksVDUoMSkpfSksTXkoKCk9PnRoaXMuYWZ0ZXJQcmVhY3RpdmF0aW9uKCkpLHB0KGo9Pntjb25zdCBjZT1mdW5jdGlvbiBxQyhkLGcsaCl7Y29uc3Qgdj15eShkLGcuX3Jvb3QsaD9oLl9yb290OnZvaWQgMCk7cmV0dXJuIG5ldyBESCh2LGcpfSh0aGlzLnJvdXRlUmV1''@;'; put 'put ''c2VTdHJhdGVneSxqLnRhcmdldFNuYXBzaG90LGouY3VycmVudFJvdXRlclN0YXRlKTtyZXR1cm4geT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saikse3RhcmdldFJvdXRlclN0YXRlOmNlfSl9KSxqMihqPT57dGhpcy5jdXJyZW50VXJsVHJlZT1qLnVybEFmdGVyUmVkaXJlY3Rz''@;'; put 'put ''LHRoaXMucmF3VXJsVHJlZT10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2Uoai51cmxBZnRlclJlZGlyZWN0cyxqLnJhd1VybCksdGhpcy5yb3V0ZXJTdGF0ZT1qLnRhcmdldFJvdXRlclN0YXRlLCJkZWZlcnJlZCI9PT10aGlzLnVybFVwZGF0ZVN0cmF0ZWd5JiYoai5leHRyYXMuc2tp''@;'; put 'put ''cExvY2F0aW9uQ2hhbmdlfHx0aGlzLnNldEJyb3dzZXJVcmwodGhpcy5yYXdVcmxUcmVlLGopLHRoaXMuYnJvd3NlclVybFRyZWU9ai51cmxBZnRlclJlZGlyZWN0cyl9KSwoKGQsZyxoKT0+cHQodj0+KG5ldyB6MyhnLHYudGFyZ2V0Um91dGVyU3RhdGUsdi5jdXJyZW50Um91dGVyU3RhdGUs''@;'; put 'put ''aCkuYWN0aXZhdGUoZCksdikpKSh0aGlzLnJvb3RDb250ZXh0cyx0aGlzLnJvdXRlUmV1c2VTdHJhdGVneSxqPT50aGlzLnRyaWdnZXJFdmVudChqKSksajIoe25leHQoKXtDPSEwfSxjb21wbGV0ZSgpe0M9ITB9fSksVkMoKCk9Pnt2YXIgajtDfHxJfHx0aGlzLmNhbmNlbE5hdmlnYXRpb25U''@;'; put 'put ''cmFuc2l0aW9uKHksIiIsMSksKG51bGw9PT0oaj10aGlzLmN1cnJlbnROYXZpZ2F0aW9uKXx8dm9pZCAwPT09aj92b2lkIDA6ai5pZCk9PT15LmlkJiYodGhpcy5jdXJyZW50TmF2aWdhdGlvbj1udWxsKX0pLEk1KGo9Pnt2YXIgY2U7aWYoST0hMCxqSChqKSl7UEkoail8fCh0aGlzLm5hdmln''@;'; put 'put ''YXRlZD0hMCx0aGlzLnJlc3RvcmVIaXN0b3J5KHksITApKTtjb25zdCBfZT1uZXcgTEkoeS5pZCx0aGlzLnNlcmlhbGl6ZVVybCh5LmV4dHJhY3RlZFVybCksai5tZXNzYWdlLGouY2FuY2VsbGF0aW9uQ29kZSk7aWYodi5uZXh0KF9lKSxQSShqKSl7Y29uc3QgUmU9dGhpcy51cmxIYW5kbGlu''@;'; put 'put ''Z1N0cmF0ZWd5Lm1lcmdlKGoudXJsLHRoaXMucmF3VXJsVHJlZSksTmU9e3NraXBMb2NhdGlvbkNoYW5nZTp5LmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDoiZWFnZXIiPT09dGhpcy51cmxVcGRhdGVTdHJhdGVneXx8SVUoeS5zb3VyY2UpfTt0aGlzLnNjaGVkdWxlTmF2''@;'; put 'put ''aWdhdGlvbihSZSwiaW1wZXJhdGl2ZSIsbnVsbCxOZSx7cmVzb2x2ZTp5LnJlc29sdmUscmVqZWN0OnkucmVqZWN0LHByb21pc2U6eS5wcm9taXNlfSl9ZWxzZSB5LnJlc29sdmUoITEpfWVsc2V7dGhpcy5yZXN0b3JlSGlzdG9yeSh5LCEwKTtjb25zdCBfZT1uZXcgJFkoeS5pZCx0aGlzLnNl''@;'; put 'put ''cmlhbGl6ZVVybCh5LmV4dHJhY3RlZFVybCksaixudWxsIT09KGNlPXkudGFyZ2V0U25hcHNob3QpJiZ2b2lkIDAhPT1jZT9jZTp2b2lkIDApO3YubmV4dChfZSk7dHJ5e3kucmVzb2x2ZSh0aGlzLmVycm9ySGFuZGxlcihqKSl9Y2F0Y2goUmUpe3kucmVqZWN0KFJlKX19cmV0dXJuIHN5fSkp''@;'; put 'put ''fSkpfXJlc2V0Um9vdENvbXBvbmVudFR5cGUoaCl7dGhpcy5yb290Q29tcG9uZW50VHlwZT1oLHRoaXMucm91dGVyU3RhdGUucm9vdC5jb21wb25lbnQ9dGhpcy5yb290Q29tcG9uZW50VHlwZX1zZXRUcmFuc2l0aW9uKGgpe3RoaXMudHJhbnNpdGlvbnMubmV4dChPYmplY3QuYXNzaWduKE9i''@;'; put 'put ''amVjdC5hc3NpZ24oe30sdGhpcy50cmFuc2l0aW9ucy52YWx1ZSksaCkpfWluaXRpYWxOYXZpZ2F0aW9uKCl7dGhpcy5zZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIoKSwwPT09dGhpcy5uYXZpZ2F0aW9uSWQmJnRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmxvY2F0aW9uLnBhdGgoITApLHty''@;'; put 'put ''ZXBsYWNlVXJsOiEwfSl9c2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCl7dGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbnx8KHRoaXMubG9jYXRpb25TdWJzY3JpcHRpb249dGhpcy5sb2NhdGlvbi5zdWJzY3JpYmUoaD0+e2NvbnN0IHY9InBvcHN0YXRlIj09PWgudHlwZT8icG9wc3RhdGUi''@;'; put 'put ''OiJoYXNoY2hhbmdlIjsicG9wc3RhdGUiPT09diYmc2V0VGltZW91dCgoKT0+e3ZhciB5O2NvbnN0IEM9e3JlcGxhY2VVcmw6ITB9LEk9bnVsbCE9PSh5PWguc3RhdGUpJiZ2b2lkIDAhPT15JiZ5Lm5hdmlnYXRpb25JZD9oLnN0YXRlOm51bGw7aWYoSSl7Y29uc3QgY2U9T2JqZWN0LmFzc2ln''@;'; put 'put ''bih7fSxJKTtkZWxldGUgY2UubmF2aWdhdGlvbklkLGRlbGV0ZSBjZS5cdTAyNzVyb3V0ZXJQYWdlSWQsMCE9PU9iamVjdC5rZXlzKGNlKS5sZW5ndGgmJihDLnN0YXRlPWNlKX1jb25zdCBqPXRoaXMucGFyc2VVcmwoaC51cmwpO3RoaXMuc2NoZWR1bGVOYXZpZ2F0aW9uKGosdixJLEMpfSww''@;'; put 'put ''KX0pKX1nZXQgdXJsKCl7cmV0dXJuIHRoaXMuc2VyaWFsaXplVXJsKHRoaXMuY3VycmVudFVybFRyZWUpfWdldEN1cnJlbnROYXZpZ2F0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE5hdmlnYXRpb259dHJpZ2dlckV2ZW50KGgpe3RoaXMuZXZlbnRzLm5leHQoaCl9cmVzZXRDb25maWcoaCl7''@;'; put 'put ''dGhpcy5jb25maWc9aC5tYXAoVkkpLHRoaXMubmF2aWdhdGVkPSExLHRoaXMubGFzdFN1Y2Nlc3NmdWxJZD0tMX1uZ09uRGVzdHJveSgpe3RoaXMuZGlzcG9zZSgpfWRpc3Bvc2UoKXt0aGlzLnRyYW5zaXRpb25zLmNvbXBsZXRlKCksdGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbiYmKHRoaXMu''@;'; put 'put ''bG9jYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCksdGhpcy5kaXNwb3NlZD0hMH1jcmVhdGVVcmxUcmVlKGgsdj17fSl7Y29uc3R7cmVsYXRpdmVUbzp5LHF1ZXJ5UGFyYW1zOkMsZnJhZ21lbnQ6SSxxdWVyeVBhcmFtc0hh''@;'; put 'put ''bmRsaW5nOmoscHJlc2VydmVGcmFnbWVudDpjZX09dixfZT15fHx0aGlzLnJvdXRlclN0YXRlLnJvb3QsUmU9Y2U/dGhpcy5jdXJyZW50VXJsVHJlZS5mcmFnbWVudDpJO2xldCBOZT1udWxsO3N3aXRjaChqKXtjYXNlIm1lcmdlIjpOZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30s''@;'; put 'put ''dGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtcyksQyk7YnJlYWs7Y2FzZSJwcmVzZXJ2ZSI6TmU9dGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtczticmVhaztkZWZhdWx0Ok5lPUN8fG51bGx9cmV0dXJuIG51bGwhPT1OZSYmKE5lPXRoaXMucmVtb3ZlRW1wdHlQcm9wcyhOZSkp''@;'; put 'put ''LEUwZShfZSx0aGlzLmN1cnJlbnRVcmxUcmVlLGgsTmUsbnVsbCE9UmU/UmU6bnVsbCl9bmF2aWdhdGVCeVVybChoLHY9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pe2NvbnN0IHk9RzYoaCk/aDp0aGlzLnBhcnNlVXJsKGgpLEM9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKHksdGhp''@;'; put 'put ''cy5yYXdVcmxUcmVlKTtyZXR1cm4gdGhpcy5zY2hlZHVsZU5hdmlnYXRpb24oQywiaW1wZXJhdGl2ZSIsbnVsbCx2KX1uYXZpZ2F0ZShoLHY9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pe3JldHVybiBmdW5jdGlvbiBib2UoZCl7Zm9yKGxldCBnPTA7ZzxkLmxlbmd0aDtnKyspe2lmKG51bGw9''@;'; put 'put ''PWRbZ10pdGhyb3cgbmV3IHF0KDQwMDgsZmFsc2UpfX0oaCksdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY3JlYXRlVXJsVHJlZShoLHYpLHYpfXNlcmlhbGl6ZVVybChoKXtyZXR1cm4gdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShoKX1wYXJzZVVybChoKXtsZXQgdjt0cnl7dj10aGlz''@;'; put 'put ''LnVybFNlcmlhbGl6ZXIucGFyc2UoaCl9Y2F0Y2goeSl7dj10aGlzLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcih5LHRoaXMudXJsU2VyaWFsaXplcixoKX1yZXR1cm4gdn1pc0FjdGl2ZShoLHYpe2xldCB5O2lmKHk9ITA9PT12P09iamVjdC5hc3NpZ24oe30sQW9lKTohMT09PXY/T2JqZWN0''@;'; put 'put ''LmFzc2lnbih7fSx5b2UpOnYsRzYoaCkpcmV0dXJuIEJZKHRoaXMuY3VycmVudFVybFRyZWUsaCx5KTtjb25zdCBDPXRoaXMucGFyc2VVcmwoaCk7cmV0dXJuIEJZKHRoaXMuY3VycmVudFVybFRyZWUsQyx5KX1yZW1vdmVFbXB0eVByb3BzKGgpe3JldHVybiBPYmplY3Qua2V5cyhoKS5yZWR1''@;'; put 'put ''Y2UoKHYseSk9Pntjb25zdCBDPWhbeV07cmV0dXJuIG51bGwhPUMmJih2W3ldPUMpLHZ9LHt9KX1wcm9jZXNzTmF2aWdhdGlvbnMoKXt0aGlzLm5hdmlnYXRpb25zLnN1YnNjcmliZShoPT57dmFyIHY7dGhpcy5uYXZpZ2F0ZWQ9ITAsdGhpcy5sYXN0U3VjY2Vzc2Z1bElkPWguaWQsdGhpcy5j''@;'; put 'put ''dXJyZW50UGFnZUlkPWgudGFyZ2V0UGFnZUlkLHRoaXMuZXZlbnRzLm5leHQobmV3IE81KGguaWQsdGhpcy5zZXJpYWxpemVVcmwoaC5leHRyYWN0ZWRVcmwpLHRoaXMuc2VyaWFsaXplVXJsKHRoaXMuY3VycmVudFVybFRyZWUpKSksdGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb249dGhp''@;'; put 'put ''cy5jdXJyZW50TmF2aWdhdGlvbixudWxsPT09KHY9dGhpcy50aXRsZVN0cmF0ZWd5KXx8dm9pZCAwPT09dnx8di51cGRhdGVUaXRsZSh0aGlzLnJvdXRlclN0YXRlLnNuYXBzaG90KSxoLnJlc29sdmUoITApfSxoPT57dGhpcy5jb25zb2xlLndhcm4oYFVuaGFuZGxlZCBOYXZpZ2F0aW9uIEVy''@;'; put 'put ''cm9yOiAke2h9YCl9KX1zY2hlZHVsZU5hdmlnYXRpb24oaCx2LHksQyxJKXt2YXIgaixjZTtpZih0aGlzLmRpc3Bvc2VkKXJldHVybiBQcm9taXNlLnJlc29sdmUoITEpO2xldCBfZSxSZSxOZTtJPyhfZT1JLnJlc29sdmUsUmU9SS5yZWplY3QsTmU9SS5wcm9taXNlKTpOZT1uZXcgUHJvbWlz''@;'; put 'put ''ZSgoQnQsJHQpPT57X2U9QnQsUmU9JHR9KTtjb25zdCBLZT0rK3RoaXMubmF2aWdhdGlvbklkO2xldCBodDtyZXR1cm4iY29tcHV0ZWQiPT09dGhpcy5jYW5jZWxlZE5hdmlnYXRpb25SZXNvbHV0aW9uPygwPT09dGhpcy5jdXJyZW50UGFnZUlkJiYoeT10aGlzLmxvY2F0aW9uLmdldFN0YXRl''@;'; put 'put ''KCkpLGh0PXkmJnkuXHUwMjc1cm91dGVyUGFnZUlkP3kuXHUwMjc1cm91dGVyUGFnZUlkOkMucmVwbGFjZVVybHx8Qy5za2lwTG9jYXRpb25DaGFuZ2U/bnVsbCE9PShqPXRoaXMuYnJvd3NlclBhZ2VJZCkmJnZvaWQgMCE9PWo/ajowOihudWxsIT09KGNlPXRoaXMuYnJvd3NlclBhZ2VJZCkm''@;'; put 'put ''JnZvaWQgMCE9PWNlP2NlOjApKzEpOmh0PTAsdGhpcy5zZXRUcmFuc2l0aW9uKHtpZDpLZSx0YXJnZXRQYWdlSWQ6aHQsc291cmNlOnYscmVzdG9yZWRTdGF0ZTp5LGN1cnJlbnRVcmxUcmVlOnRoaXMuY3VycmVudFVybFRyZWUsY3VycmVudFJhd1VybDp0aGlzLnJhd1VybFRyZWUscmF3VXJs''@;'; put 'put ''OmgsZXh0cmFzOkMscmVzb2x2ZTpfZSxyZWplY3Q6UmUscHJvbWlzZTpOZSxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCxjdXJyZW50Um91dGVyU3RhdGU6dGhpcy5yb3V0ZXJTdGF0ZX0pLE5lLmNhdGNoKEJ0PT5Qcm9taXNlLnJlamVjdChCdCkpfXNldEJyb3dz''@;'; put 'put ''ZXJVcmwoaCx2KXtjb25zdCB5PXRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoaCksQz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdi5leHRyYXMuc3RhdGUpLHRoaXMuZ2VuZXJhdGVOZ1JvdXRlclN0YXRlKHYuaWQsdi50YXJnZXRQYWdlSWQpKTt0aGlzLmxvY2F0aW9uLmlz''@;'; put 'put ''Q3VycmVudFBhdGhFcXVhbFRvKHkpfHx2LmV4dHJhcy5yZXBsYWNlVXJsP3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHksIiIsQyk6dGhpcy5sb2NhdGlvbi5nbyh5LCIiLEMpfXJlc3RvcmVIaXN0b3J5KGgsdj0hMSl7dmFyIHksQztpZigiY29tcHV0ZWQiPT09dGhpcy5jYW5jZWxlZE5h''@;'; put 'put ''dmlnYXRpb25SZXNvbHV0aW9uKXtjb25zdCBJPXRoaXMuY3VycmVudFBhZ2VJZC1oLnRhcmdldFBhZ2VJZDsicG9wc3RhdGUiIT09aC5zb3VyY2UmJiJlYWdlciIhPT10aGlzLnVybFVwZGF0ZVN0cmF0ZWd5JiZ0aGlzLmN1cnJlbnRVcmxUcmVlIT09KG51bGw9PT0oeT10aGlzLmN1cnJlbnRO''@;'; put 'put ''YXZpZ2F0aW9uKXx8dm9pZCAwPT09eT92b2lkIDA6eS5maW5hbFVybCl8fDA9PT1JP3RoaXMuY3VycmVudFVybFRyZWU9PT0obnVsbD09PShDPXRoaXMuY3VycmVudE5hdmlnYXRpb24pfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLmZpbmFsVXJsKSYmMD09PUkmJih0aGlzLnJlc2V0U3RhdGUoaCks''@;'; put 'put ''dGhpcy5icm93c2VyVXJsVHJlZT1oLmN1cnJlbnRVcmxUcmVlLHRoaXMucmVzZXRVcmxUb0N1cnJlbnRVcmxUcmVlKCkpOnRoaXMubG9jYXRpb24uaGlzdG9yeUdvKEkpfWVsc2UicmVwbGFjZSI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24mJih2JiZ0aGlzLnJlc2V0U3Rh''@;'; put 'put ''dGUoaCksdGhpcy5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKSl9cmVzZXRTdGF0ZShoKXt0aGlzLnJvdXRlclN0YXRlPWguY3VycmVudFJvdXRlclN0YXRlLHRoaXMuY3VycmVudFVybFRyZWU9aC5jdXJyZW50VXJsVHJlZSx0aGlzLnJhd1VybFRyZWU9dGhpcy51cmxIYW5kbGluZ1N0cmF0''@;'; put 'put ''ZWd5Lm1lcmdlKHRoaXMuY3VycmVudFVybFRyZWUsaC5yYXdVcmwpfXJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpe3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodGhpcy5yYXdVcmxUcmVlKSwiIix0aGlzLmdlbmVyYXRlTmdSb3V0ZXJT''@;'; put 'put ''dGF0ZSh0aGlzLmxhc3RTdWNjZXNzZnVsSWQsdGhpcy5jdXJyZW50UGFnZUlkKSl9Y2FuY2VsTmF2aWdhdGlvblRyYW5zaXRpb24oaCx2LHkpe2NvbnN0IEM9bmV3IExJKGguaWQsdGhpcy5zZXJpYWxpemVVcmwoaC5leHRyYWN0ZWRVcmwpLHYseSk7dGhpcy50cmlnZ2VyRXZlbnQoQyksaC5y''@;'; put 'put ''ZXNvbHZlKCExKX1nZW5lcmF0ZU5nUm91dGVyU3RhdGUoaCx2KXtyZXR1cm4iY29tcHV0ZWQiPT09dGhpcy5jYW5jZWxlZE5hdmlnYXRpb25SZXNvbHV0aW9uP3tuYXZpZ2F0aW9uSWQ6aCxcdTAyNzVyb3V0ZXJQYWdlSWQ6dn06e25hdmlnYXRpb25JZDpofX19cmV0dXJuIGQuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGgpe0JtKCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGlOKCl9LHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7ZnVuY3Rpb24gSVUoZCl7cmV0dXJuImltcGVyYXRpdmUiIT09ZH1sZXQgWTY9KCgpPT57Y2xhc3MgZHtjb25z''@;'; put 'put ''dHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMucm91dGVyPWgsdGhpcy5yb3V0ZT12LHRoaXMudGFiSW5kZXhBdHRyaWJ1dGU9eSx0aGlzLnJlbmRlcmVyPUMsdGhpcy5lbD1JLHRoaXMuX3ByZXNlcnZlRnJhZ21lbnQ9ITEsdGhpcy5fc2tpcExvY2F0aW9uQ2hhbmdlPSExLHRoaXMuX3JlcGxhY2VV''@;'; put 'put ''cmw9ITEsdGhpcy5jb21tYW5kcz1udWxsLHRoaXMub25DaGFuZ2VzPW5ldyAkZSx0aGlzLnNldFRhYkluZGV4SWZOb3RPbk5hdGl2ZUVsKCIwIil9c2V0IHByZXNlcnZlRnJhZ21lbnQoaCl7dGhpcy5fcHJlc2VydmVGcmFnbWVudD1INihoKX1nZXQgcHJlc2VydmVGcmFnbWVudCgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9wcmVzZXJ2ZUZyYWdtZW50fXNldCBza2lwTG9jYXRpb25DaGFuZ2UoaCl7dGhpcy5fc2tpcExvY2F0aW9uQ2hhbmdlPUg2KGgpfWdldCBza2lwTG9jYXRpb25DaGFuZ2UoKXtyZXR1cm4gdGhpcy5fc2tpcExvY2F0aW9uQ2hhbmdlfXNldCByZXBsYWNlVXJsKGgpe3RoaXMuX3Jl''@;'; put 'put ''cGxhY2VVcmw9SDYoaCl9Z2V0IHJlcGxhY2VVcmwoKXtyZXR1cm4gdGhpcy5fcmVwbGFjZVVybH1zZXRUYWJJbmRleElmTm90T25OYXRpdmVFbChoKXtpZihudWxsIT10aGlzLnRhYkluZGV4QXR0cmlidXRlKXJldHVybjtjb25zdCB2PXRoaXMucmVuZGVyZXIseT10aGlzLmVsLm5hdGl2ZUVs''@;'; put 'put ''ZW1lbnQ7bnVsbCE9PWg/di5zZXRBdHRyaWJ1dGUoeSwidGFiaW5kZXgiLGgpOnYucmVtb3ZlQXR0cmlidXRlKHksInRhYmluZGV4Iil9bmdPbkNoYW5nZXMoaCl7dGhpcy5vbkNoYW5nZXMubmV4dCh0aGlzKX1zZXQgcm91dGVyTGluayhoKXtudWxsIT1oPyh0aGlzLmNvbW1hbmRzPUFycmF5''@;'; put 'put ''LmlzQXJyYXkoaCk/aDpbaF0sdGhpcy5zZXRUYWJJbmRleElmTm90T25OYXRpdmVFbCgiMCIpKToodGhpcy5jb21tYW5kcz1udWxsLHRoaXMuc2V0VGFiSW5kZXhJZk5vdE9uTmF0aXZlRWwobnVsbCkpfW9uQ2xpY2soKXtyZXR1cm4gbnVsbD09PXRoaXMudXJsVHJlZXx8dGhpcy5yb3V0ZXIu''@;'; put 'put ''bmF2aWdhdGVCeVVybCh0aGlzLnVybFRyZWUse3NraXBMb2NhdGlvbkNoYW5nZTp0aGlzLnNraXBMb2NhdGlvbkNoYW5nZSxyZXBsYWNlVXJsOnRoaXMucmVwbGFjZVVybCxzdGF0ZTp0aGlzLnN0YXRlfSksITB9Z2V0IHVybFRyZWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuY29tbWFuZHM/bnVs''@;'; put 'put ''bDp0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHRoaXMuY29tbWFuZHMse3JlbGF0aXZlVG86dm9pZCAwIT09dGhpcy5yZWxhdGl2ZVRvP3RoaXMucmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5UGFyYW1zOnRoaXMucXVlcnlQYXJhbXMsZnJhZ21lbnQ6dGhpcy5mcmFnbWVudCxxdWVyeVBh''@;'; put 'put ''cmFtc0hhbmRsaW5nOnRoaXMucXVlcnlQYXJhbXNIYW5kbGluZyxwcmVzZXJ2ZUZyYWdtZW50OnRoaXMucHJlc2VydmVGcmFnbWVudH0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChFbCksS3QoSjEpLFlwKCJ0YWJpbmRleCIpLEt0KERhKSxL''@;'; put 'put ''dChfbykpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJyb3V0ZXJMaW5rIiwiIiw1LCJhIiw1LCJhcmVhIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2Lm9uQ2xpY2soKX0pfSxpbnB1dHM6e3F1''@;'; put 'put ''ZXJ5UGFyYW1zOiJxdWVyeVBhcmFtcyIsZnJhZ21lbnQ6ImZyYWdtZW50IixxdWVyeVBhcmFtc0hhbmRsaW5nOiJxdWVyeVBhcmFtc0hhbmRsaW5nIixzdGF0ZToic3RhdGUiLHJlbGF0aXZlVG86InJlbGF0aXZlVG8iLHByZXNlcnZlRnJhZ21lbnQ6InByZXNlcnZlRnJhZ21lbnQiLHNraXBM''@;'; put 'put ''b2NhdGlvbkNoYW5nZToic2tpcExvY2F0aW9uQ2hhbmdlIixyZXBsYWNlVXJsOiJyZXBsYWNlVXJsIixyb3V0ZXJMaW5rOiJyb3V0ZXJMaW5rIn0sc3RhbmRhbG9uZTohMCxmZWF0dXJlczpbZDJdfSksZH0pKCksTzc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5yb3V0''@;'; put 'put ''ZXI9aCx0aGlzLnJvdXRlPXYsdGhpcy5sb2NhdGlvblN0cmF0ZWd5PXksdGhpcy5fcHJlc2VydmVGcmFnbWVudD0hMSx0aGlzLl9za2lwTG9jYXRpb25DaGFuZ2U9ITEsdGhpcy5fcmVwbGFjZVVybD0hMSx0aGlzLmNvbW1hbmRzPW51bGwsdGhpcy5ocmVmPW51bGwsdGhpcy5vbkNoYW5nZXM9''@;'; put 'put ''bmV3ICRlLHRoaXMuc3Vic2NyaXB0aW9uPWguZXZlbnRzLnN1YnNjcmliZShDPT57QyBpbnN0YW5jZW9mIE81JiZ0aGlzLnVwZGF0ZVRhcmdldFVybEFuZEhyZWYoKX0pfXNldCBwcmVzZXJ2ZUZyYWdtZW50KGgpe3RoaXMuX3ByZXNlcnZlRnJhZ21lbnQ9SDYoaCl9Z2V0IHByZXNlcnZlRnJh''@;'; put 'put ''Z21lbnQoKXtyZXR1cm4gdGhpcy5fcHJlc2VydmVGcmFnbWVudH1zZXQgc2tpcExvY2F0aW9uQ2hhbmdlKGgpe3RoaXMuX3NraXBMb2NhdGlvbkNoYW5nZT1INihoKX1nZXQgc2tpcExvY2F0aW9uQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX3NraXBMb2NhdGlvbkNoYW5nZX1zZXQgcmVwbGFjZVVy''@;'; put 'put ''bChoKXt0aGlzLl9yZXBsYWNlVXJsPUg2KGgpfWdldCByZXBsYWNlVXJsKCl7cmV0dXJuIHRoaXMuX3JlcGxhY2VVcmx9c2V0IHJvdXRlckxpbmsoaCl7dGhpcy5jb21tYW5kcz1udWxsIT1oP0FycmF5LmlzQXJyYXkoaCk/aDpbaF06bnVsbH1uZ09uQ2hhbmdlcyhoKXt0aGlzLnVwZGF0ZVRh''@;'; put 'put ''cmdldFVybEFuZEhyZWYoKSx0aGlzLm9uQ2hhbmdlcy5uZXh0KHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1vbkNsaWNrKGgsdix5LEMsSSl7cmV0dXJuISEoMCE9PWh8fHZ8fHl8fEN8fEl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy50YXJnZXQm''@;'; put 'put ''JiJfc2VsZiIhPXRoaXMudGFyZ2V0fHxudWxsPT09dGhpcy51cmxUcmVlKXx8KHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51cmxUcmVlLHtza2lwTG9jYXRpb25DaGFuZ2U6dGhpcy5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDp0aGlzLnJlcGxhY2VVcmwsc3RhdGU6dGhp''@;'; put 'put ''cy5zdGF0ZX0pLCExKX11cGRhdGVUYXJnZXRVcmxBbmRIcmVmKCl7dGhpcy5ocmVmPW51bGwhPT10aGlzLnVybFRyZWU/dGhpcy5sb2NhdGlvblN0cmF0ZWd5LnByZXBhcmVFeHRlcm5hbFVybCh0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodGhpcy51cmxUcmVlKSk6bnVsbH1nZXQgdXJsVHJl''@;'; put 'put ''ZSgpe3JldHVybiBudWxsPT09dGhpcy5jb21tYW5kcz9udWxsOnRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUodGhpcy5jb21tYW5kcyx7cmVsYXRpdmVUbzp2b2lkIDAhPT10aGlzLnJlbGF0aXZlVG8/dGhpcy5yZWxhdGl2ZVRvOnRoaXMucm91dGUscXVlcnlQYXJhbXM6dGhpcy5xdWVyeVBh''@;'; put 'put ''cmFtcyxmcmFnbWVudDp0aGlzLmZyYWdtZW50LHF1ZXJ5UGFyYW1zSGFuZGxpbmc6dGhpcy5xdWVyeVBhcmFtc0hhbmRsaW5nLHByZXNlcnZlRnJhZ21lbnQ6dGhpcy5wcmVzZXJ2ZUZyYWdtZW50fSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0''@;'; put 'put ''KEVsKSxLdChKMSksS3QoQTUpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYSIsInJvdXRlckxpbmsiLCIiXSxbImFyZWEiLCJyb3V0ZXJMaW5rIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZabigiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KEMpe3JldHVybiB2Lm9uQ2xpY2soQy5idXR0b24sQy5jdHJsS2V5LEMuc2hpZnRLZXksQy5hbHRLZXksQy5tZXRhS2V5KX0pLDImaCYmR2koInRhcmdldCIsdi50YXJnZXQpKCJocmVmIix2LmhyZWYsZ2YpfSxpbnB1dHM6e3RhcmdldDoidGFyZ2V0IixxdWVyeVBhcmFtczoicXVlcnlQYXJh''@;'; put 'put ''bXMiLGZyYWdtZW50OiJmcmFnbWVudCIscXVlcnlQYXJhbXNIYW5kbGluZzoicXVlcnlQYXJhbXNIYW5kbGluZyIsc3RhdGU6InN0YXRlIixyZWxhdGl2ZVRvOiJyZWxhdGl2ZVRvIixwcmVzZXJ2ZUZyYWdtZW50OiJwcmVzZXJ2ZUZyYWdtZW50Iixza2lwTG9jYXRpb25DaGFuZ2U6InNraXBM''@;'; put 'put ''b2NhdGlvbkNoYW5nZSIscmVwbGFjZVVybDoicmVwbGFjZVVybCIscm91dGVyTGluazoicm91dGVyTGluayJ9LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W2QyXX0pLGR9KSgpLEV5PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGope3RoaXMucm91dGVyPWgsdGhpcy5lbGVt''@;'; put 'put ''ZW50PXYsdGhpcy5yZW5kZXJlcj15LHRoaXMuY2RyPUMsdGhpcy5saW5rPUksdGhpcy5saW5rV2l0aEhyZWY9aix0aGlzLmNsYXNzZXM9W10sdGhpcy5pc0FjdGl2ZT0hMSx0aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zPXtleGFjdDohMX0sdGhpcy5pc0FjdGl2ZUNoYW5nZT1uZXcgZm4s''@;'; put 'put ''dGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb249aC5ldmVudHMuc3Vic2NyaWJlKGNlPT57Y2UgaW5zdGFuY2VvZiBPNSYmdGhpcy51cGRhdGUoKX0pfW5nQWZ0ZXJDb250ZW50SW5pdCgpe1YwKHRoaXMubGlua3MuY2hhbmdlcyx0aGlzLmxpbmtzV2l0aEhyZWZzLmNoYW5nZXMsVjAobnVs''@;'; put 'put ''bCkpLnBpcGUoZW4oKSkuc3Vic2NyaWJlKGg9Pnt0aGlzLnVwZGF0ZSgpLHRoaXMuc3Vic2NyaWJlVG9FYWNoTGlua09uQ2hhbmdlcygpfSl9c3Vic2NyaWJlVG9FYWNoTGlua09uQ2hhbmdlcygpe3ZhciBoO251bGw9PT0oaD10aGlzLmxpbmtJbnB1dENoYW5nZXNTdWJzY3JpcHRpb24pfHx2''@;'; put 'put ''b2lkIDA9PT1ofHxoLnVuc3Vic2NyaWJlKCk7Y29uc3Qgdj1bLi4udGhpcy5saW5rcy50b0FycmF5KCksLi4udGhpcy5saW5rc1dpdGhIcmVmcy50b0FycmF5KCksdGhpcy5saW5rLHRoaXMubGlua1dpdGhIcmVmXS5maWx0ZXIoeT0+ISF5KS5tYXAoeT0+eS5vbkNoYW5nZXMpO3RoaXMubGlu''@;'; put 'put ''a0lucHV0Q2hhbmdlc1N1YnNjcmlwdGlvbj1wbih2KS5waXBlKGVuKCkpLnN1YnNjcmliZSh5PT57dGhpcy5pc0FjdGl2ZSE9PXRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyKSh5KSYmdGhpcy51cGRhdGUoKX0pfXNldCByb3V0ZXJMaW5rQWN0aXZlKGgpe2NvbnN0IHY9QXJyYXkuaXNB''@;'; put 'put ''cnJheShoKT9oOmguc3BsaXQoIiAiKTt0aGlzLmNsYXNzZXM9di5maWx0ZXIoeT0+ISF5KX1uZ09uQ2hhbmdlcyhoKXt0aGlzLnVwZGF0ZSgpfW5nT25EZXN0cm95KCl7dmFyIGg7dGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxudWxsPT09KGg9dGhpcy5saW5r''@;'; put 'put ''SW5wdXRDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09aHx8aC51bnN1YnNjcmliZSgpfXVwZGF0ZSgpeyF0aGlzLmxpbmtzfHwhdGhpcy5saW5rc1dpdGhIcmVmc3x8IXRoaXMucm91dGVyLm5hdmlnYXRlZHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2NvbnN0IGg9dGhpcy5o''@;'; put 'put ''YXNBY3RpdmVMaW5rcygpO3RoaXMuaXNBY3RpdmUhPT1oJiYodGhpcy5pc0FjdGl2ZT1oLHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpLHRoaXMuY2xhc3Nlcy5mb3JFYWNoKHY9PntoP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsdik6dGhpcy5yZW5k''@;'; put 'put ''ZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCx2KX0pLGgmJnZvaWQgMCE9PXRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlP3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCJhcmlhLWN1cnJlbnQiLHRoaXMuYXJp''@;'; put 'put ''YUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCkpOnRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCJhcmlhLWN1cnJlbnQiKSx0aGlzLmlzQWN0aXZlQ2hhbmdlLmVtaXQoaCkpfSl9aXNMaW5rQWN0aXZlKGgpe2NvbnN0IHY9ZnVuY3Rp''@;'; put 'put ''b24gX29lKGQpe3JldHVybiEhZC5wYXRoc30odGhpcy5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyk/dGhpcy5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uczp0aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zLmV4YWN0fHwhMTtyZXR1cm4geT0+ISF5LnVybFRyZWUmJmguaXNBY3RpdmUoeS51cmxU''@;'; put 'put ''cmVlLHYpfWhhc0FjdGl2ZUxpbmtzKCl7Y29uc3QgaD10aGlzLmlzTGlua0FjdGl2ZSh0aGlzLnJvdXRlcik7cmV0dXJuIHRoaXMubGluayYmaCh0aGlzLmxpbmspfHx0aGlzLmxpbmtXaXRoSHJlZiYmaCh0aGlzLmxpbmtXaXRoSHJlZil8fHRoaXMubGlua3Muc29tZShoKXx8dGhpcy5saW5r''@;'; put 'put ''c1dpdGhIcmVmcy5zb21lKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChFbCksS3QoX28pLEt0KERhKSxLdChkMSksS3QoWTYsOCksS3QoTzcsOCkpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJyb3V0ZXJMaW5r''@;'; put 'put ''QWN0aXZlIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJihTMCh5LFk2LDUpLFMwKHksTzcsNSkpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYubGlua3M9QyksemkoQz1BaSgpKSYmKHYubGlua3NXaXRoSHJlZnM9Qyl9fSxpbnB1dHM6e3JvdXRlckxpbmtB''@;'; put 'put ''Y3RpdmVPcHRpb25zOiJyb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyIsYXJpYUN1cnJlbnRXaGVuQWN0aXZlOiJhcmlhQ3VycmVudFdoZW5BY3RpdmUiLHJvdXRlckxpbmtBY3RpdmU6InJvdXRlckxpbmtBY3RpdmUifSxvdXRwdXRzOntpc0FjdGl2ZUNoYW5nZToiaXNBY3RpdmVDaGFuZ2UifSxl''@;'; put 'put ''eHBvcnRBczpbInJvdXRlckxpbmtBY3RpdmUiXSxzdGFuZGFsb25lOiEwLGZlYXR1cmVzOltkMl19KSxkfSkoKTtjbGFzcyBEVXt9bGV0ICRJPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnJvdXRlcj1oLHRoaXMuaW5qZWN0b3I9eSx0aGlzLnByZWxvYWRpbmdT''@;'; put 'put ''dHJhdGVneT1DLHRoaXMubG9hZGVyPUl9c2V0VXBQcmVsb2FkaW5nKCl7dGhpcy5zdWJzY3JpcHRpb249dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUobTIoaD0+aCBpbnN0YW5jZW9mIE81KSxZZCgoKT0+dGhpcy5wcmVsb2FkKCkpKS5zdWJzY3JpYmUoKCk9Pnt9KX1wcmVsb2FkKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMucHJvY2Vzc1JvdXRlcyh0aGlzLmluamVjdG9yLHRoaXMucm91dGVyLmNvbmZpZyl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1wcm9jZXNzUm91dGVzKGgsdil7dmFyIHksQyxJO2NvbnN0IGo9W107Zm9yKGNv''@;'; put 'put ''bnN0IGNlIG9mIHYpe2NlLnByb3ZpZGVycyYmIWNlLl9pbmplY3RvciYmKGNlLl9pbmplY3Rvcj1PNihjZS5wcm92aWRlcnMsaCxgUm91dGU6ICR7Y2UucGF0aH1gKSk7Y29uc3QgX2U9bnVsbCE9PSh5PWNlLl9pbmplY3RvcikmJnZvaWQgMCE9PXk/eTpoLFJlPW51bGwhPT0oQz1jZS5fbG9h''@;'; put 'put ''ZGVkSW5qZWN0b3IpJiZ2b2lkIDAhPT1DP0M6X2U7Y2UubG9hZENoaWxkcmVuJiYhY2UuX2xvYWRlZFJvdXRlcyYmdm9pZCAwPT09Y2UuY2FuTG9hZHx8Y2UubG9hZENvbXBvbmVudCYmIWNlLl9sb2FkZWRDb21wb25lbnQ/ai5wdXNoKHRoaXMucHJlbG9hZENvbmZpZyhfZSxjZSkpOihjZS5j''@;'; put 'put ''aGlsZHJlbnx8Y2UuX2xvYWRlZFJvdXRlcykmJmoucHVzaCh0aGlzLnByb2Nlc3NSb3V0ZXMoUmUsbnVsbCE9PShJPWNlLmNoaWxkcmVuKSYmdm9pZCAwIT09ST9JOmNlLl9sb2FkZWRSb3V0ZXMpKX1yZXR1cm4gcG4oaikucGlwZShlbigpKX1wcmVsb2FkQ29uZmlnKGgsdil7cmV0dXJuIHRo''@;'; put 'put ''aXMucHJlbG9hZGluZ1N0cmF0ZWd5LnByZWxvYWQodiwoKT0+e2xldCB5O3k9di5sb2FkQ2hpbGRyZW4mJnZvaWQgMD09PXYuY2FuTG9hZD90aGlzLmxvYWRlci5sb2FkQ2hpbGRyZW4oaCx2KTpWMChudWxsKTtjb25zdCBDPXkucGlwZSh1cihJPT57dmFyIGo7cmV0dXJuIG51bGw9PT1JP1Yw''@;'; put 'put ''KHZvaWQgMCk6KHYuX2xvYWRlZFJvdXRlcz1JLnJvdXRlcyx2Ll9sb2FkZWRJbmplY3Rvcj1JLmluamVjdG9yLHRoaXMucHJvY2Vzc1JvdXRlcyhudWxsIT09KGo9SS5pbmplY3RvcikmJnZvaWQgMCE9PWo/ajpoLEkucm91dGVzKSl9KSk7cmV0dXJuIHYubG9hZENvbXBvbmVudCYmIXYuX2xv''@;'; put 'put ''YWRlZENvbXBvbmVudD9wbihbQyx0aGlzLmxvYWRlci5sb2FkQ29tcG9uZW50KHYpXSkucGlwZShlbigpKTpDfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKEVsKSxFaShtRiksRWkoV2MpLEVpKERVKSxFaShLSSkpfSxkLlx1MDI3NXByb3Y9''@;'; put 'put ''cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0IHFJPW5ldyBPdCgiIik7bGV0IExVPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHk9e30pe3RoaXMucm91dGVyPWgsdGhpcy52aWV3cG9ydFNjcm9sbGVyPXYsdGhpcy5v''@;'; put 'put ''cHRpb25zPXksdGhpcy5sYXN0SWQ9MCx0aGlzLmxhc3RTb3VyY2U9ImltcGVyYXRpdmUiLHRoaXMucmVzdG9yZWRJZD0wLHRoaXMuc3RvcmU9e30seS5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uPXkuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbnx8ImRpc2FibGVkIix5LmFuY2hvclNjcm9s''@;'; put 'put ''bGluZz15LmFuY2hvclNjcm9sbGluZ3x8ImRpc2FibGVkIn1pbml0KCl7ImRpc2FibGVkIiE9PXRoaXMub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2V0SGlzdG9yeVNjcm9sbFJlc3RvcmF0aW9uKCJtYW51YWwiKSx0aGlzLnJvdXRl''@;'; put 'put ''ckV2ZW50c1N1YnNjcmlwdGlvbj10aGlzLmNyZWF0ZVNjcm9sbEV2ZW50cygpLHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uPXRoaXMuY29uc3VtZVNjcm9sbEV2ZW50cygpfWNyZWF0ZVNjcm9sbEV2ZW50cygpe3JldHVybiB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGg9Pnto''@;'; put 'put ''IGluc3RhbmNlb2YgREk/KHRoaXMuc3RvcmVbdGhpcy5sYXN0SWRdPXRoaXMudmlld3BvcnRTY3JvbGxlci5nZXRTY3JvbGxQb3NpdGlvbigpLHRoaXMubGFzdFNvdXJjZT1oLm5hdmlnYXRpb25UcmlnZ2VyLHRoaXMucmVzdG9yZWRJZD1oLnJlc3RvcmVkU3RhdGU/aC5yZXN0b3JlZFN0YXRl''@;'; put 'put ''Lm5hdmlnYXRpb25JZDowKTpoIGluc3RhbmNlb2YgTzUmJih0aGlzLmxhc3RJZD1oLmlkLHRoaXMuc2NoZWR1bGVTY3JvbGxFdmVudChoLHRoaXMucm91dGVyLnBhcnNlVXJsKGgudXJsQWZ0ZXJSZWRpcmVjdHMpLmZyYWdtZW50KSl9KX1jb25zdW1lU2Nyb2xsRXZlbnRzKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoaD0+e2ggaW5zdGFuY2VvZiByVSYmKGgucG9zaXRpb24/InRvcCI9PT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj90aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSk6ImVuYWJsZWQiPT09''@;'; put 'put ''dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24mJnRoaXMudmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb1Bvc2l0aW9uKGgucG9zaXRpb24pOmguYW5jaG9yJiYiZW5hYmxlZCI9PT10aGlzLm9wdGlvbnMuYW5jaG9yU2Nyb2xsaW5nP3RoaXMudmlld3BvcnRTY3JvbGxlci5z''@;'; put 'put ''Y3JvbGxUb0FuY2hvcihoLmFuY2hvcik6ImRpc2FibGVkIiE9PXRoaXMub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSkpfSl9c2NoZWR1bGVTY3JvbGxFdmVudChoLHYpe3RoaXMucm91dGVyLnRy''@;'; put 'put ''aWdnZXJFdmVudChuZXcgclUoaCwicG9wc3RhdGUiPT09dGhpcy5sYXN0U291cmNlP3RoaXMuc3RvcmVbdGhpcy5yZXN0b3JlZElkXTpudWxsLHYpKX1uZ09uRGVzdHJveSgpe3RoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uJiZ0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbi51bnN1''@;'; put 'put ''YnNjcmliZSgpLHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uJiZ0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7Qm0oKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVm''@;'; put 'put ''YWN9KSxkfSkoKTtmdW5jdGlvbiB4eShkLGcpe3JldHVybntcdTAyNzVraW5kOmQsXHUwMjc1cHJvdmlkZXJzOmd9fWZ1bmN0aW9uIG9OKGQpe3JldHVyblt7cHJvdmlkZTpyTixtdWx0aTohMCx1c2VWYWx1ZTpkfV19ZnVuY3Rpb24gZUQoKXtjb25zdCBkPUMyKHhzKTtyZXR1cm4gZz0+e3Zh''@;'; put 'put ''ciBoLHY7Y29uc3QgeT1kLmdldCh5Qyk7aWYoZyE9PXkuY29tcG9uZW50c1swXSlyZXR1cm47Y29uc3QgQz1kLmdldChFbCksST1kLmdldChSVSk7MT09PWQuZ2V0KGFOKSYmQy5pbml0aWFsTmF2aWdhdGlvbigpLG51bGw9PT0oaD1kLmdldChsTixudWxsLHNvLk9wdGlvbmFsKSl8fHZvaWQg''@;'; put 'put ''MD09PWh8fGguc2V0VXBQcmVsb2FkaW5nKCksbnVsbD09PSh2PWQuZ2V0KHFJLG51bGwsc28uT3B0aW9uYWwpKXx8dm9pZCAwPT09dnx8di5pbml0KCksQy5yZXNldFJvb3RDb21wb25lbnRUeXBlKHkuY29tcG9uZW50VHlwZXNbMF0pLEkubmV4dCgpLEkuY29tcGxldGUoKX19Y29uc3QgUlU9''@;'; put 'put ''bmV3IE90KCIiLHtmYWN0b3J5OigpPT5uZXcgJGV9KSxhTj1uZXcgT3QoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PjF9KTtjb25zdCBsTj1uZXcgT3QoIiIpO2Z1bmN0aW9uIEVvZShkKXtyZXR1cm4geHkoMCxbe3Byb3ZpZGU6bE4sdXNlRXhpc3Rpbmc6JEl9LHtwcm92aWRl''@;'; put 'put ''OkRVLHVzZUV4aXN0aW5nOmR9XSl9Y29uc3QgUFU9bmV3IE90KCJST1VURVJfRk9SUk9PVF9HVUFSRCIpLHhvZT1bVmQse3Byb3ZpZGU6YkgsdXNlQ2xhc3M6R0N9LHtwcm92aWRlOkVsLHVzZUZhY3Rvcnk6aU59LGVrLHtwcm92aWRlOkoxLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gT1UoZCl7cmV0''@;'; put 'put ''dXJuIGQucm91dGVyU3RhdGUucm9vdH0sZGVwczpbRWxdfSxLSV07ZnVuY3Rpb24gVG9lKCl7cmV0dXJuIG5ldyBpVygiUm91dGVyIixFbCl9bGV0IEI1PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7fXN0YXRpYyBmb3JSb290KGgsdil7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJz''@;'; put 'put ''Olt4b2UsW10sb04oaCkse3Byb3ZpZGU6UFUsdXNlRmFjdG9yeTpzayxkZXBzOltbRWwsbmV3IEk0LG5ldyB5ZF1dfSx7cHJvdmlkZTpYSSx1c2VWYWx1ZTp2fHx7fX0sbnVsbCE9diYmdi51c2VIYXNoP3twcm92aWRlOkE1LHVzZUNsYXNzOlNyZX06e3Byb3ZpZGU6QTUsdXNlQ2xhc3M6a1d9''@;'; put 'put ''LHtwcm92aWRlOnFJLHVzZUZhY3Rvcnk6KCk9Pntjb25zdCBkPUMyKEVsKSxnPUMyKHNpZSksaD1DMihYSSk7cmV0dXJuIGguc2Nyb2xsT2Zmc2V0JiZnLnNldE9mZnNldChoLnNjcm9sbE9mZnNldCksbmV3IExVKGQsZyxoKX19LG51bGwhPXYmJnYucHJlbG9hZGluZ1N0cmF0ZWd5P0VvZSh2''@;'; put 'put ''LnByZWxvYWRpbmdTdHJhdGVneSkuXHUwMjc1cHJvdmlkZXJzOltdLHtwcm92aWRlOmlXLG11bHRpOiEwLHVzZUZhY3Rvcnk6VG9lfSxudWxsIT12JiZ2LmluaXRpYWxOYXZpZ2F0aW9uP0ZVKHYpOltdLFt7cHJvdmlkZTpyRCx1c2VGYWN0b3J5OmVEfSx7cHJvdmlkZTpkRixtdWx0aTohMCx1''@;'; put 'put ''c2VFeGlzdGluZzpyRH1dXX19c3RhdGljIGZvckNoaWxkKGgpe3JldHVybntuZ01vZHVsZTpkLHByb3ZpZGVyczpbb04oaCldfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoUFUsOCkpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAy''@;'; put 'put ''NzVpbmo9bTAoe2ltcG9ydHM6W0hJXX0pLGR9KSgpO2Z1bmN0aW9uIHNrKGQpe3JldHVybiJndWFyZGVkIn1mdW5jdGlvbiBGVShkKXtyZXR1cm5bImRpc2FibGVkIj09PWQuaW5pdGlhbE5hdmlnYXRpb24/eHkoMyxbe3Byb3ZpZGU6Z0MsbXVsdGk6ITAsdXNlRmFjdG9yeTooKT0+e2NvbnN0''@;'; put 'put ''IGc9QzIoRWwpO3JldHVybigpPT57Zy5zZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIoKX19fSx7cHJvdmlkZTphTix1c2VWYWx1ZToyfV0pLlx1MDI3NXByb3ZpZGVyczpbXSwiZW5hYmxlZEJsb2NraW5nIj09PWQuaW5pdGlhbE5hdmlnYXRpb24/eHkoMixbe3Byb3ZpZGU6YU4sdXNlVmFs''@;'; put 'put ''dWU6MH0se3Byb3ZpZGU6Z0MsbXVsdGk6ITAsZGVwczpbeHNdLHVzZUZhY3Rvcnk6Zz0+e2NvbnN0IGg9Zy5nZXQoR1QsUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtsZXQgdj0hMTtyZXR1cm4oKT0+aC50aGVuKCgpPT5uZXcgUHJvbWlzZShDPT57Y29uc3QgST1nLmdldChFbCksaj1nLmdldChS''@;'; put 'put ''VSk7KGZ1bmN0aW9uIHkoQyl7Zy5nZXQoRWwpLmV2ZW50cy5waXBlKG0yKGo9PmogaW5zdGFuY2VvZiBPNXx8aiBpbnN0YW5jZW9mIExJfHxqIGluc3RhbmNlb2YgJFkpLHB0KGo9PmogaW5zdGFuY2VvZiBPNXx8aiBpbnN0YW5jZW9mIExJJiYoMD09PWouY29kZXx8MT09PWouY29kZSkmJm51''@;'; put 'put ''bGwpLG0yKGo9Pm51bGwhPT1qKSxUNSgxKSkuc3Vic2NyaWJlKCgpPT57QygpfSl9KSgoKT0+e0MoITApLHY9ITB9KSxJLmFmdGVyUHJlYWN0aXZhdGlvbj0oKT0+KEMoITApLHZ8fGouY2xvc2VkP1YwKHZvaWQgMCk6aiksSS5pbml0aWFsTmF2aWdhdGlvbigpfSkpfX1dKS5cdTAyNzVwcm92''@;'; put 'put ''aWRlcnM6W11dfWNvbnN0IHJEPW5ldyBPdCgiIik7dmFyIHNOPUwoNDAzOTApLFJvZT1MKDI0ODc5KTtjb25zdCBIVT17ZXhwaXJhdGlvbl9kYXRlX3VubGltaXRlZDohMCx1c2Vyc19hbGxvd2VkOjUscm93c19hbGxvd2VkOjE1LGRpc2FibGVkRmlsZVVwbG9hZDohMCxkaXNhYmxlZEVkaXRS''@;'; put 'put ''ZWNvcmQ6ITB9LEJvZT17dXNlcnNfYWxsb3dlZDoxfTtsZXQgUjc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe31zZXREY0FkYXB0ZXJTZXR0aW5ncyhoKXt0aGlzLmRjQWRhcHRlclNldHRpbmdzPWh9Z2V0RGNBZGFwdGVyU2V0dGluZ3MoKXtyZXR1cm4gdGhpcy5kY0FkYXB0ZXJTZXR0''@;'; put 'put ''aW5nc319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7Y2xhc3MgUG9le2NvbnN0cnVjdG9yKCl7dGhpcy5zYXNTZXJ2aWNl''@;'; put 'put ''PW51bGwsdGhpcy5tZXNzYWdlPSIiLHRoaXMuZGV0YWlscz1uZXcgdU59fWNsYXNzIHVOe31sZXQgY049KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuYWxlcnRzPW5ldyAkZX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1''@;'; put 'put ''cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksbXU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmFsZXJ0c1NlcnZpY2U9aCx0aGlzLm9uU2lkZWJhclRvZ2dsZT1uZXcgZm4sdGhpcy5vblN0YXJ0dXBEYXRhTG9hZGVkPW5ldyBmbix0aGlzLm9u''@;'; put 'put ''U2hvd0Fib3J0TW9kYWw9bmV3IGZuLHRoaXMub25SZXF1ZXN0c01vZGFsT3Blbj1uZXcgZm4sdGhpcy5vbkRlbW9MaW1pdE1vZGFsU2hvdz1uZXcgZm4sdGhpcy52aWV3TGFzdFVybD1udWxsLHRoaXMuc2lkZWJhckNsb3NlTGltaXQ9MTI4MH1zaG93RGVtb0xpbWl0TW9kYWwoKXt0aGlzLm9u''@;'; put 'put ''RGVtb0xpbWl0TW9kYWxTaG93LmVtaXQoKX1zaG93SW5mb01vZGFsKGg9IkluZm8iLHYpe3RoaXMub25TaG93QWJvcnRNb2RhbC5lbWl0KHttb2RhbFRpdGxlOmgsbWVzc2FnZTp2LHNhc1NlcnZpY2U6IiIsZGV0YWlsczpudWxsfSl9c2hvd0Fib3J0TW9kYWwoaCx2LHksQyl7bGV0IEk9e3Nh''@;'; put 'put ''c1NlcnZpY2U6aCxtZXNzYWdlOnYsZGV0YWlsczp5PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuZXcgdU4pLHkpfTtDJiYoSS5tb2RhbFRpdGxlPUMpLHRoaXMub25TaG93QWJvcnRNb2RhbC5lbWl0KEkpfW9wZW5SZXF1ZXN0c01vZGFsKCl7dGhpcy5vblJlcXVlc3RzTW9kYWxP''@;'; put 'put ''cGVuLmVtaXQoITApfWNhdGNoUmVzcG9uc2VFcnJvcihoLHYpe2xldCB5PSJTQVMgU2VydmljZSBlcnJvciBvY3VycmVkIjtpZih2LmVycm9yKXtsZXQgQzt5PXYuZXJyb3IubWVzc2FnZSx2LmVycm9yLmRldGFpbHMmJnYuZXJyb3IuZGV0YWlscy5sb2cmJihDPXYuZXJyb3IuZGV0YWlscy5s''@;'; put 'put ''b2cpLCgheXx8eS50cmltKCkubGVuZ3RoPDEpJiYoeT0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCIpLHRoaXMuc2hvd0Fib3J0TW9kYWwoaCx5LHtMT0c6Q30sIlJlcXVlc3QgZXJyb3IiKX1lbHNlIHRoaXMuc2hvd0Fib3J0TW9kYWwoaCx5KX10b2dnbGVTaWRlYmFyKCl7dGhpcy5vblNp''@;'; put 'put ''ZGViYXJUb2dnbGUuZW1pdCgpfWNsb3NlU2lkZWJhcigpe3dpbmRvdy5pbm5lcldpZHRoPHRoaXMuc2lkZWJhckNsb3NlTGltaXQmJnRoaXMub25TaWRlYmFyVG9nZ2xlLmVtaXQoe29wZW46ITF9KX1vcGVuU2lkZWJhcigpe3RoaXMub25TaWRlYmFyVG9nZ2xlLmVtaXQoe29wZW46ITB9KX1z''@;'; put 'put ''dGFydHVwRGF0YUxvYWRlZCgpe3RoaXMub25TdGFydHVwRGF0YUxvYWRlZC5lbWl0KCl9ZGlzcGF0Y2hFdmVudChoKXtsZXQgdjsiZnVuY3Rpb24iPT10eXBlb2YgRXZlbnQ/dj1uZXcgRXZlbnQoaCk6KHY9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksdi5pbml0RXZlbnQoaCwhMCwh''@;'; put 'put ''MCkpLHdpbmRvdy5kaXNwYXRjaEV2ZW50KHYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShjTikpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO3ZhciBRZD1M''@;'; put 'put ''KDExNDApLGZOPUwubihRZCkseDE9TCgyNTg1OSk7bGV0IGhOPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnVzZXJDaGFuZ2U9bmV3ICRlfXNldCB1c2VyKGgpe3RoaXMuX3VzZXI9aCx0aGlzLnVzZXJDaGFuZ2UubmV4dChoKX1nZXQgdXNlcigpe3JldHVybiB0aGlzLl91c2Vy''@;'; put 'put ''fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjbGFzcyBOVXt9Y2xhc3MgaUR7fWNsYXNzIEcze2NvbnN0cnVjdG9yKGcpe3RoaXMubm9ybWFsaXplZE5h''@;'; put 'put ''bWVzPW5ldyBNYXAsdGhpcy5sYXp5VXBkYXRlPW51bGwsZz90aGlzLmxhenlJbml0PSJzdHJpbmciPT10eXBlb2YgZz8oKT0+e3RoaXMuaGVhZGVycz1uZXcgTWFwLGcuc3BsaXQoIlxuIikuZm9yRWFjaChoPT57Y29uc3Qgdj1oLmluZGV4T2YoIjoiKTtpZih2PjApe2NvbnN0IHk9aC5zbGlj''@;'; put 'put ''ZSgwLHYpLEM9eS50b0xvd2VyQ2FzZSgpLEk9aC5zbGljZSh2KzEpLnRyaW0oKTt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoeSxDKSx0aGlzLmhlYWRlcnMuaGFzKEMpP3RoaXMuaGVhZGVycy5nZXQoQykucHVzaChJKTp0aGlzLmhlYWRlcnMuc2V0KEMsW0ldKX19KX06KCk9Pnt0aGlz''@;'; put 'put ''LmhlYWRlcnM9bmV3IE1hcCxPYmplY3Qua2V5cyhnKS5mb3JFYWNoKGg9PntsZXQgdj1nW2hdO2NvbnN0IHk9aC50b0xvd2VyQ2FzZSgpOyJzdHJpbmciPT10eXBlb2YgdiYmKHY9W3ZdKSx2Lmxlbmd0aD4wJiYodGhpcy5oZWFkZXJzLnNldCh5LHYpLHRoaXMubWF5YmVTZXROb3JtYWxpemVk''@;'; put 'put ''TmFtZShoLHkpKX0pfTp0aGlzLmhlYWRlcnM9bmV3IE1hcH1oYXMoZyl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5oYXMoZy50b0xvd2VyQ2FzZSgpKX1nZXQoZyl7dGhpcy5pbml0KCk7Y29uc3QgaD10aGlzLmhlYWRlcnMuZ2V0KGcudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGgm''@;'; put 'put ''JmgubGVuZ3RoPjA/aFswXTpudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy52YWx1ZXMoKSl9Z2V0QWxsKGcpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuZ2V0KGcudG9Mb3dlckNhc2UoKSl8fG51bGx9YXBwZW5k''@;'; put 'put ''KGcsaCl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6Zyx2YWx1ZTpoLG9wOiJhIn0pfXNldChnLGgpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOmcsdmFsdWU6aCxvcDoicyJ9KX1kZWxldGUoZyxoKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTpnLHZhbHVlOmgsb3A6ImQifSl9bWF5YmVTZXRO''@;'; put 'put ''b3JtYWxpemVkTmFtZShnLGgpe3RoaXMubm9ybWFsaXplZE5hbWVzLmhhcyhoKXx8dGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KGgsZyl9aW5pdCgpe3RoaXMubGF6eUluaXQmJih0aGlzLmxhenlJbml0IGluc3RhbmNlb2YgRzM/dGhpcy5jb3B5RnJvbSh0aGlzLmxhenlJbml0KTp0aGlzLmxh''@;'; put 'put ''enlJbml0KCksdGhpcy5sYXp5SW5pdD1udWxsLHRoaXMubGF6eVVwZGF0ZSYmKHRoaXMubGF6eVVwZGF0ZS5mb3JFYWNoKGc9PnRoaXMuYXBwbHlVcGRhdGUoZykpLHRoaXMubGF6eVVwZGF0ZT1udWxsKSl9Y29weUZyb20oZyl7Zy5pbml0KCksQXJyYXkuZnJvbShnLmhlYWRlcnMua2V5cygp''@;'; put 'put ''KS5mb3JFYWNoKGg9Pnt0aGlzLmhlYWRlcnMuc2V0KGgsZy5oZWFkZXJzLmdldChoKSksdGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KGgsZy5ub3JtYWxpemVkTmFtZXMuZ2V0KGgpKX0pfWNsb25lKGcpe2NvbnN0IGg9bmV3IEczO3JldHVybiBoLmxhenlJbml0PXRoaXMubGF6eUluaXQmJnRo''@;'; put 'put ''aXMubGF6eUluaXQgaW5zdGFuY2VvZiBHMz90aGlzLmxhenlJbml0OnRoaXMsaC5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtdKS5jb25jYXQoW2ddKSxofWFwcGx5VXBkYXRlKGcpe2NvbnN0IGg9Zy5uYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGcub3Ape2Nhc2UiYSI6Y2FzZSJz''@;'; put 'put ''IjpsZXQgdj1nLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgdiYmKHY9W3ZdKSwwPT09di5sZW5ndGgpcmV0dXJuO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShnLm5hbWUsaCk7Y29uc3QgeT0oImEiPT09Zy5vcD90aGlzLmhlYWRlcnMuZ2V0KGgpOnZvaWQgMCl8fFtdO3kucHVzaCgu''@;'; put 'put ''Li52KSx0aGlzLmhlYWRlcnMuc2V0KGgseSk7YnJlYWs7Y2FzZSJkIjpjb25zdCBDPWcudmFsdWU7aWYoQyl7bGV0IEk9dGhpcy5oZWFkZXJzLmdldChoKTtpZighSSlyZXR1cm47ST1JLmZpbHRlcihqPT4tMT09PUMuaW5kZXhPZihqKSksMD09PUkubGVuZ3RoPyh0aGlzLmhlYWRlcnMuZGVs''@;'; put 'put ''ZXRlKGgpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShoKSk6dGhpcy5oZWFkZXJzLnNldChoLEkpfWVsc2UgdGhpcy5oZWFkZXJzLmRlbGV0ZShoKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUoaCl9fWZvckVhY2goZyl7dGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1h''@;'; put 'put ''bGl6ZWROYW1lcy5rZXlzKCkpLmZvckVhY2goaD0+Zyh0aGlzLm5vcm1hbGl6ZWROYW1lcy5nZXQoaCksdGhpcy5oZWFkZXJzLmdldChoKSkpfX1jbGFzcyBIb2V7ZW5jb2RlS2V5KGcpe3JldHVybiBWVShnKX1lbmNvZGVWYWx1ZShnKXtyZXR1cm4gVlUoZyl9ZGVjb2RlS2V5KGcpe3JldHVy''@;'; put 'put ''biBkZWNvZGVVUklDb21wb25lbnQoZyl9ZGVjb2RlVmFsdWUoZyl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChnKX19Y29uc3QgUDU9LyUoXGRbYS1mMC05XSkvZ2ksZE49ezQwOiJAIiwiM0EiOiI6IiwyNDoiJCIsIjJDIjoiLCIsIjNCIjoiOyIsIjNEIjoiPSIsIjNGIjoiPyIsIjJGIjoi''@;'; put 'put ''LyJ9O2Z1bmN0aW9uIFZVKGQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZCkucmVwbGFjZShQNSwoZyxoKT0+e3ZhciB2O3JldHVybiBudWxsIT09KHY9ZE5baF0pJiZ2b2lkIDAhPT12P3Y6Z30pfWZ1bmN0aW9uIG9EKGQpe3JldHVybmAke2R9YH1jbGFzcyBGNXtjb25zdHJ1Y3Rvcihn''@;'; put 'put ''PXt9KXtpZih0aGlzLnVwZGF0ZXM9bnVsbCx0aGlzLmNsb25lRnJvbT1udWxsLHRoaXMuZW5jb2Rlcj1nLmVuY29kZXJ8fG5ldyBIb2UsZy5mcm9tU3RyaW5nKXtpZihnLmZyb21PYmplY3QpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGZyb21TdHJpbmcgYW5kIGZyb21P''@;'; put 'put ''YmplY3QuIik7dGhpcy5tYXA9ZnVuY3Rpb24gTm9lKGQsZyl7Y29uc3QgaD1uZXcgTWFwO3JldHVybiBkLmxlbmd0aD4wJiZkLnJlcGxhY2UoL15cPy8sIiIpLnNwbGl0KCImIikuZm9yRWFjaCh5PT57Y29uc3QgQz15LmluZGV4T2YoIj0iKSxbSSxqXT0tMT09Qz9bZy5kZWNvZGVLZXkoeSks''@;'; put 'put ''IiJdOltnLmRlY29kZUtleSh5LnNsaWNlKDAsQykpLGcuZGVjb2RlVmFsdWUoeS5zbGljZShDKzEpKV0sY2U9aC5nZXQoSSl8fFtdO2NlLnB1c2goaiksaC5zZXQoSSxjZSl9KSxofShnLmZyb21TdHJpbmcsdGhpcy5lbmNvZGVyKX1lbHNlIGcuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1h''@;'; put 'put ''cCxPYmplY3Qua2V5cyhnLmZyb21PYmplY3QpLmZvckVhY2goaD0+e2NvbnN0IHY9Zy5mcm9tT2JqZWN0W2hdLHk9QXJyYXkuaXNBcnJheSh2KT92Lm1hcChvRCk6W29EKHYpXTt0aGlzLm1hcC5zZXQoaCx5KX0pKTp0aGlzLm1hcD1udWxsfWhhcyhnKXtyZXR1cm4gdGhpcy5pbml0KCksdGhp''@;'; put 'put ''cy5tYXAuaGFzKGcpfWdldChnKXt0aGlzLmluaXQoKTtjb25zdCBoPXRoaXMubWFwLmdldChnKTtyZXR1cm4gaD9oWzBdOm51bGx9Z2V0QWxsKGcpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLm1hcC5nZXQoZyl8fG51bGx9a2V5cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRo''@;'; put 'put ''aXMubWFwLmtleXMoKSl9YXBwZW5kKGcsaCl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOmcsdmFsdWU6aCxvcDoiYSJ9KX1hcHBlbmRBbGwoZyl7Y29uc3QgaD1bXTtyZXR1cm4gT2JqZWN0LmtleXMoZykuZm9yRWFjaCh2PT57Y29uc3QgeT1nW3ZdO0FycmF5LmlzQXJyYXkoeSk/eS5mb3JF''@;'; put 'put ''YWNoKEM9PntoLnB1c2goe3BhcmFtOnYsdmFsdWU6QyxvcDoiYSJ9KX0pOmgucHVzaCh7cGFyYW06dix2YWx1ZTp5LG9wOiJhIn0pfSksdGhpcy5jbG9uZShoKX1zZXQoZyxoKXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06Zyx2YWx1ZTpoLG9wOiJzIn0pfWRlbGV0ZShnLGgpe3JldHVybiB0''@;'; put 'put ''aGlzLmNsb25lKHtwYXJhbTpnLHZhbHVlOmgsb3A6ImQifSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5rZXlzKCkubWFwKGc9Pntjb25zdCBoPXRoaXMuZW5jb2Rlci5lbmNvZGVLZXkoZyk7cmV0dXJuIHRoaXMubWFwLmdldChnKS5tYXAodj0+aCsiPSIrdGhpcy5lbmNv''@;'; put 'put ''ZGVyLmVuY29kZVZhbHVlKHYpKS5qb2luKCImIil9KS5maWx0ZXIoZz0+IiIhPT1nKS5qb2luKCImIil9Y2xvbmUoZyl7Y29uc3QgaD1uZXcgRjUoe2VuY29kZXI6dGhpcy5lbmNvZGVyfSk7cmV0dXJuIGguY2xvbmVGcm9tPXRoaXMuY2xvbmVGcm9tfHx0aGlzLGgudXBkYXRlcz0odGhpcy51''@;'; put 'put ''cGRhdGVzfHxbXSkuY29uY2F0KGcpLGh9aW5pdCgpe251bGw9PT10aGlzLm1hcCYmKHRoaXMubWFwPW5ldyBNYXApLG51bGwhPT10aGlzLmNsb25lRnJvbSYmKHRoaXMuY2xvbmVGcm9tLmluaXQoKSx0aGlzLmNsb25lRnJvbS5rZXlzKCkuZm9yRWFjaChnPT50aGlzLm1hcC5zZXQoZyx0aGlz''@;'; put 'put ''LmNsb25lRnJvbS5tYXAuZ2V0KGcpKSksdGhpcy51cGRhdGVzLmZvckVhY2goZz0+e3N3aXRjaChnLm9wKXtjYXNlImEiOmNhc2UicyI6Y29uc3QgaD0oImEiPT09Zy5vcD90aGlzLm1hcC5nZXQoZy5wYXJhbSk6dm9pZCAwKXx8W107aC5wdXNoKG9EKGcudmFsdWUpKSx0aGlzLm1hcC5zZXQo''@;'; put 'put ''Zy5wYXJhbSxoKTticmVhaztjYXNlImQiOmlmKHZvaWQgMD09PWcudmFsdWUpe3RoaXMubWFwLmRlbGV0ZShnLnBhcmFtKTticmVha317bGV0IHY9dGhpcy5tYXAuZ2V0KGcucGFyYW0pfHxbXTtjb25zdCB5PXYuaW5kZXhPZihvRChnLnZhbHVlKSk7LTEhPT15JiZ2LnNwbGljZSh5LDEpLHYu''@;'; put 'put ''bGVuZ3RoPjA/dGhpcy5tYXAuc2V0KGcucGFyYW0sdik6dGhpcy5tYXAuZGVsZXRlKGcucGFyYW0pfX19KSx0aGlzLmNsb25lRnJvbT10aGlzLnVwZGF0ZXM9bnVsbCl9fWNsYXNzIFZvZXtjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9c2V0KGcsaCl7cmV0dXJuIHRoaXMubWFwLnNl''@;'; put 'put ''dChnLGgpLHRoaXN9Z2V0KGcpe3JldHVybiB0aGlzLm1hcC5oYXMoZyl8fHRoaXMubWFwLnNldChnLGcuZGVmYXVsdFZhbHVlKCkpLHRoaXMubWFwLmdldChnKX1kZWxldGUoZyl7cmV0dXJuIHRoaXMubWFwLmRlbGV0ZShnKSx0aGlzfWhhcyhnKXtyZXR1cm4gdGhpcy5tYXAuaGFzKGcpfWtl''@;'; put 'put ''eXMoKXtyZXR1cm4gdGhpcy5tYXAua2V5cygpfX1mdW5jdGlvbiBqVShkKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gWlUoZCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZkIGluc3RhbmNl''@;'; put 'put ''b2YgQmxvYn1mdW5jdGlvbiB6VShkKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZkIGluc3RhbmNlb2YgRm9ybURhdGF9Y2xhc3MgSDV7Y29uc3RydWN0b3IoZyxoLHYseSl7bGV0IEM7aWYodGhpcy51cmw9aCx0aGlzLmJvZHk9bnVsbCx0aGlzLnJlcG9ydFByb2dyZXNz''@;'; put 'put ''PSExLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucmVzcG9uc2VUeXBlPSJqc29uIix0aGlzLm1ldGhvZD1nLnRvVXBwZXJDYXNlKCksZnVuY3Rpb24gam9lKGQpe3N3aXRjaChkKXtjYXNlIkRFTEVURSI6Y2FzZSJHRVQiOmNhc2UiSEVBRCI6Y2FzZSJPUFRJT05TIjpjYXNlIkpTT05Q''@;'; put 'put ''IjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0odGhpcy5tZXRob2QpfHx5Pyh0aGlzLmJvZHk9dm9pZCAwIT09dj92Om51bGwsQz15KTpDPXYsQyYmKHRoaXMucmVwb3J0UHJvZ3Jlc3M9ISFDLnJlcG9ydFByb2dyZXNzLHRoaXMud2l0aENyZWRlbnRpYWxzPSEhQy53aXRoQ3JlZGVudGlh''@;'; put 'put ''bHMsQy5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1DLnJlc3BvbnNlVHlwZSksQy5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPUMuaGVhZGVycyksQy5jb250ZXh0JiYodGhpcy5jb250ZXh0PUMuY29udGV4dCksQy5wYXJhbXMmJih0aGlzLnBhcmFtcz1DLnBhcmFtcykpLHRoaXMu''@;'; put 'put ''aGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgRzMpLHRoaXMuY29udGV4dHx8KHRoaXMuY29udGV4dD1uZXcgVm9lKSx0aGlzLnBhcmFtcyl7Y29uc3QgST10aGlzLnBhcmFtcy50b1N0cmluZygpO2lmKDA9PT1JLmxlbmd0aCl0aGlzLnVybFdpdGhQYXJhbXM9aDtlbHNle2NvbnN0IGo9aC5p''@;'; put 'put ''bmRleE9mKCI/Iik7dGhpcy51cmxXaXRoUGFyYW1zPWgrKC0xPT09aj8iPyI6ajxoLmxlbmd0aC0xPyImIjoiIikrSX19ZWxzZSB0aGlzLnBhcmFtcz1uZXcgRjUsdGhpcy51cmxXaXRoUGFyYW1zPWh9c2VyaWFsaXplQm9keSgpe3JldHVybiBudWxsPT09dGhpcy5ib2R5P251bGw6alUodGhp''@;'; put 'put ''cy5ib2R5KXx8WlUodGhpcy5ib2R5KXx8elUodGhpcy5ib2R5KXx8ZnVuY3Rpb24gdWsoZCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMmJmQgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9KHRoaXMuYm9keSl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5''@;'; put 'put ''P3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBGNT90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0''@;'; put 'put ''aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHx6VSh0aGlzLmJvZHkpP251bGw6WlUodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDpqVSh0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlz''@;'; put 'put ''LmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIEY1PyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVv''@;'; put 'put ''ZiB0aGlzLmJvZHk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUoZz17fSl7dmFyIGg7Y29uc3Qgdj1nLm1ldGhvZHx8dGhpcy5tZXRob2QseT1nLnVybHx8dGhpcy51cmwsQz1nLnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsST12b2lkIDAhPT1nLmJvZHk/Zy5ib2R5OnRo''@;'; put 'put ''aXMuYm9keSxqPXZvaWQgMCE9PWcud2l0aENyZWRlbnRpYWxzP2cud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLGNlPXZvaWQgMCE9PWcucmVwb3J0UHJvZ3Jlc3M/Zy5yZXBvcnRQcm9ncmVzczp0aGlzLnJlcG9ydFByb2dyZXNzO2xldCBfZT1nLmhlYWRlcnN8fHRoaXMu''@;'; put 'put ''aGVhZGVycyxSZT1nLnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgTmU9bnVsbCE9PShoPWcuY29udGV4dCkmJnZvaWQgMCE9PWg/aDp0aGlzLmNvbnRleHQ7cmV0dXJuIHZvaWQgMCE9PWcuc2V0SGVhZGVycyYmKF9lPU9iamVjdC5rZXlzKGcuc2V0SGVhZGVycykucmVkdWNlKChLZSxodCk9''@;'; put 'put ''PktlLnNldChodCxnLnNldEhlYWRlcnNbaHRdKSxfZSkpLGcuc2V0UGFyYW1zJiYoUmU9T2JqZWN0LmtleXMoZy5zZXRQYXJhbXMpLnJlZHVjZSgoS2UsaHQpPT5LZS5zZXQoaHQsZy5zZXRQYXJhbXNbaHRdKSxSZSkpLG5ldyBINSh2LHksSSx7cGFyYW1zOlJlLGhlYWRlcnM6X2UsY29udGV4''@;'; put 'put ''dDpOZSxyZXBvcnRQcm9ncmVzczpjZSxyZXNwb25zZVR5cGU6Qyx3aXRoQ3JlZGVudGlhbHM6an0pfX12YXIgdnU9KCgpPT4oKHZ1PXZ1fHx7fSlbdnUuU2VudD0wXT0iU2VudCIsdnVbdnUuVXBsb2FkUHJvZ3Jlc3M9MV09IlVwbG9hZFByb2dyZXNzIix2dVt2dS5SZXNwb25zZUhlYWRlcj0y''@;'; put 'put ''XT0iUmVzcG9uc2VIZWFkZXIiLHZ1W3Z1LkRvd25sb2FkUHJvZ3Jlc3M9M109IkRvd25sb2FkUHJvZ3Jlc3MiLHZ1W3Z1LlJlc3BvbnNlPTRdPSJSZXNwb25zZSIsdnVbdnUuVXNlcj01XT0iVXNlciIsdnUpKSgpO2NsYXNzIHBOe2NvbnN0cnVjdG9yKGcsaD0yMDAsdj0iT0siKXt0aGlzLmhl''@;'; put 'put ''YWRlcnM9Zy5oZWFkZXJzfHxuZXcgRzMsdGhpcy5zdGF0dXM9dm9pZCAwIT09Zy5zdGF0dXM/Zy5zdGF0dXM6aCx0aGlzLnN0YXR1c1RleHQ9Zy5zdGF0dXNUZXh0fHx2LHRoaXMudXJsPWcudXJsfHxudWxsLHRoaXMub2s9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwfX1jbGFz''@;'; put 'put ''cyBnTiBleHRlbmRzIHBOe2NvbnN0cnVjdG9yKGc9e30pe3N1cGVyKGcpLHRoaXMudHlwZT12dS5SZXNwb25zZUhlYWRlcn1jbG9uZShnPXt9KXtyZXR1cm4gbmV3IGdOKHtoZWFkZXJzOmcuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2b2lkIDAhPT1nLnN0YXR1cz9nLnN0YXR1czp0''@;'; put 'put ''aGlzLnN0YXR1cyxzdGF0dXNUZXh0Omcuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDpnLnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX1jbGFzcyBhRCBleHRlbmRzIHBOe2NvbnN0cnVjdG9yKGc9e30pe3N1cGVyKGcpLHRoaXMudHlwZT12dS5SZXNwb25zZSx0aGlzLmJvZHk9dm9p''@;'; put 'put ''ZCAwIT09Zy5ib2R5P2cuYm9keTpudWxsfWNsb25lKGc9e30pe3JldHVybiBuZXcgYUQoe2JvZHk6dm9pZCAwIT09Zy5ib2R5P2cuYm9keTp0aGlzLmJvZHksaGVhZGVyczpnLmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dm9pZCAwIT09Zy5zdGF0dXM/Zy5zdGF0dXM6dGhpcy5zdGF0''@;'; put 'put ''dXMsc3RhdHVzVGV4dDpnLnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1cmw6Zy51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19Y2xhc3MgR1UgZXh0ZW5kcyBwTntjb25zdHJ1Y3RvcihnKXtzdXBlcihnLDAsIlVua25vd24gRXJyb3IiKSx0aGlzLm5hbWU9Ikh0dHBFcnJvclJlc3BvbnNl''@;'; put 'put ''Iix0aGlzLm9rPSExLHRoaXMubWVzc2FnZT10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDA/YEh0dHAgZmFpbHVyZSBkdXJpbmcgcGFyc2luZyBmb3IgJHtnLnVybHx8Iih1bmtub3duIHVybCkifWA6YEh0dHAgZmFpbHVyZSByZXNwb25zZSBmb3IgJHtnLnVybHx8Iih1bmtub3du''@;'; put 'put ''IHVybCkifTogJHtnLnN0YXR1c30gJHtnLnN0YXR1c1RleHR9YCx0aGlzLmVycm9yPWcuZXJyb3J8fG51bGx9fWZ1bmN0aW9uIGxEKGQsZyl7cmV0dXJue2JvZHk6ZyxoZWFkZXJzOmQuaGVhZGVycyxjb250ZXh0OmQuY29udGV4dCxvYnNlcnZlOmQub2JzZXJ2ZSxwYXJhbXM6ZC5wYXJhbXMs''@;'; put 'put ''cmVwb3J0UHJvZ3Jlc3M6ZC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6ZC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOmQud2l0aENyZWRlbnRpYWxzfX1sZXQgbU49KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmhhbmRsZXI9aH1yZXF1ZXN0KGgsdix5PXt9KXts''@;'; put 'put ''ZXQgQztpZihoIGluc3RhbmNlb2YgSDUpQz1oO2Vsc2V7bGV0IGNlLF9lO2NlPXkuaGVhZGVycyBpbnN0YW5jZW9mIEczP3kuaGVhZGVyczpuZXcgRzMoeS5oZWFkZXJzKSx5LnBhcmFtcyYmKF9lPXkucGFyYW1zIGluc3RhbmNlb2YgRjU/eS5wYXJhbXM6bmV3IEY1KHtmcm9tT2JqZWN0Onku''@;'; put 'put ''cGFyYW1zfSkpLEM9bmV3IEg1KGgsdix2b2lkIDAhPT15LmJvZHk/eS5ib2R5Om51bGwse2hlYWRlcnM6Y2UsY29udGV4dDp5LmNvbnRleHQscGFyYW1zOl9lLHJlcG9ydFByb2dyZXNzOnkucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOnkucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENy''@;'; put 'put ''ZWRlbnRpYWxzOnkud2l0aENyZWRlbnRpYWxzfSl9Y29uc3QgST1WMChDKS5waXBlKFlkKGNlPT50aGlzLmhhbmRsZXIuaGFuZGxlKGNlKSkpO2lmKGggaW5zdGFuY2VvZiBINXx8ImV2ZW50cyI9PT15Lm9ic2VydmUpcmV0dXJuIEk7Y29uc3Qgaj1JLnBpcGUobTIoY2U9PmNlIGluc3RhbmNl''@;'; put 'put ''b2YgYUQpKTtzd2l0Y2goeS5vYnNlcnZlfHwiYm9keSIpe2Nhc2UiYm9keSI6c3dpdGNoKEMucmVzcG9uc2VUeXBlKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gai5waXBlKHB0KGNlPT57aWYobnVsbCE9PWNlLmJvZHkmJiEoY2UuYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlJlc3BvbnNlIGlzIG5vdCBhbiBBcnJheUJ1ZmZlci4iKTtyZXR1cm4gY2UuYm9keX0pKTtjYXNlImJsb2IiOnJldHVybiBqLnBpcGUocHQoY2U9PntpZihudWxsIT09Y2UuYm9keSYmIShjZS5ib2R5IGluc3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IEVycm9yKCJSZXNw''@;'; put 'put ''b25zZSBpcyBub3QgYSBCbG9iLiIpO3JldHVybiBjZS5ib2R5fSkpO2Nhc2UidGV4dCI6cmV0dXJuIGoucGlwZShwdChjZT0+e2lmKG51bGwhPT1jZS5ib2R5JiYic3RyaW5nIiE9dHlwZW9mIGNlLmJvZHkpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBzdHJpbmcuIik7cmV0''@;'; put 'put ''dXJuIGNlLmJvZHl9KSk7ZGVmYXVsdDpyZXR1cm4gai5waXBlKHB0KGNlPT5jZS5ib2R5KSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIGo7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7eS5vYnNlcnZlfX1gKX19ZGVsZXRlKGgs''@;'; put 'put ''dj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIixoLHYpfWdldChoLHY9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsaCx2KX1oZWFkKGgsdj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsaCx2KX1qc29ucChoLHYpe3JldHVybiB0aGlzLnJlcXVlc3QoIkpTT05Q''@;'; put 'put ''IixoLHtwYXJhbXM6KG5ldyBGNSkuYXBwZW5kKHYsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnMoaCx2PXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIixoLHYpfXBhdGNoKGgsdix5PXt9KXtyZXR1cm4gdGhpcy5y''@;'; put 'put ''ZXF1ZXN0KCJQQVRDSCIsaCxsRCh5LHYpKX1wb3N0KGgsdix5PXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIixoLGxEKHksdikpfXB1dChoLHYseT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIixoLGxEKHksdikpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG5ldyhofHxkKShFaShOVSkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NsYXNzIGNre2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5uZXh0PWcsdGhpcy5pbnRlcmNlcHRvcj1ofWhhbmRsZShnKXtyZXR1cm4gdGhpcy5pbnRlcmNlcHRv''@;'; put 'put ''ci5pbnRlcmNlcHQoZyx0aGlzLm5leHQpfX1jb25zdCB2Tj1uZXcgT3QoIkhUVFBfSU5URVJDRVBUT1JTIik7bGV0IHNEPSgoKT0+e2NsYXNzIGR7aW50ZXJjZXB0KGgsdil7cmV0dXJuIHYuaGFuZGxlKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjb25zdCBXb2U9L15cKVxdXH0nLD9cbi87bGV0IEFOPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy54aHJGYWN0b3J5PWh9aGFuZGxlKGgpe2lmKCJKU09OUCI9PT1oLm1ldGhv''@;'; put 'put ''ZCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRlZCB0byBjb25zdHJ1Y3QgSnNvbnAgcmVxdWVzdCB3aXRob3V0IEh0dHBDbGllbnRKc29ucE1vZHVsZSBpbnN0YWxsZWQuIik7cmV0dXJuIG5ldyBGKHY9Pntjb25zdCB5PXRoaXMueGhyRmFjdG9yeS5idWlsZCgpO2lmKHkub3BlbihoLm1ldGhv''@;'; put 'put ''ZCxoLnVybFdpdGhQYXJhbXMpLGgud2l0aENyZWRlbnRpYWxzJiYoeS53aXRoQ3JlZGVudGlhbHM9ITApLGguaGVhZGVycy5mb3JFYWNoKChodCxCdCk9Pnkuc2V0UmVxdWVzdEhlYWRlcihodCxCdC5qb2luKCIsIikpKSxoLmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8eS5zZXRSZXF1ZXN0SGVh''@;'; put 'put ''ZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiKSwhaC5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IGh0PWguZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIoKTtudWxsIT09aHQmJnkuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixo''@;'; put 'put ''dCl9aWYoaC5yZXNwb25zZVR5cGUpe2NvbnN0IGh0PWgucmVzcG9uc2VUeXBlLnRvTG93ZXJDYXNlKCk7eS5yZXNwb25zZVR5cGU9Impzb24iIT09aHQ/aHQ6InRleHQifWNvbnN0IEM9aC5zZXJpYWxpemVCb2R5KCk7bGV0IEk9bnVsbDtjb25zdCBqPSgpPT57aWYobnVsbCE9PUkpcmV0dXJu''@;'; put 'put ''IEk7Y29uc3QgaHQ9eS5zdGF0dXNUZXh0fHwiT0siLEJ0PW5ldyBHMyh5LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSwkdD1mdW5jdGlvbiBZb2UoZCl7cmV0dXJuInJlc3BvbnNlVVJMImluIGQmJmQucmVzcG9uc2VVUkw/ZC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdChk''@;'; put 'put ''LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT9kLmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0oeSl8fGgudXJsO3JldHVybiBJPW5ldyBnTih7aGVhZGVyczpCdCxzdGF0dXM6eS5zdGF0dXMsc3RhdHVzVGV4dDpodCx1cmw6JHR9KSxJfSxjZT0oKT0+e2xldHtoZWFk''@;'; put 'put ''ZXJzOmh0LHN0YXR1czpCdCxzdGF0dXNUZXh0OiR0LHVybDpobn09aigpLERuPW51bGw7MjA0IT09QnQmJihEbj12b2lkIDA9PT15LnJlc3BvbnNlP3kucmVzcG9uc2VUZXh0OnkucmVzcG9uc2UpLDA9PT1CdCYmKEJ0PURuPzIwMDowKTtsZXQgaXI9QnQ+PTIwMCYmQnQ8MzAwO2lmKCJqc29u''@;'; put 'put ''Ij09PWgucmVzcG9uc2VUeXBlJiYic3RyaW5nIj09dHlwZW9mIERuKXtjb25zdCBwcj1EbjtEbj1Ebi5yZXBsYWNlKFdvZSwiIik7dHJ5e0RuPSIiIT09RG4/SlNPTi5wYXJzZShEbik6bnVsbH1jYXRjaChFcil7RG49cHIsaXImJihpcj0hMSxEbj17ZXJyb3I6RXIsdGV4dDpEbn0pfX1pcj8o''@;'; put 'put ''di5uZXh0KG5ldyBhRCh7Ym9keTpEbixoZWFkZXJzOmh0LHN0YXR1czpCdCxzdGF0dXNUZXh0OiR0LHVybDpobnx8dm9pZCAwfSkpLHYuY29tcGxldGUoKSk6di5lcnJvcihuZXcgR1Uoe2Vycm9yOkRuLGhlYWRlcnM6aHQsc3RhdHVzOkJ0LHN0YXR1c1RleHQ6JHQsdXJsOmhufHx2b2lkIDB9''@;'; put 'put ''KSl9LF9lPWh0PT57Y29uc3R7dXJsOkJ0fT1qKCksJHQ9bmV3IEdVKHtlcnJvcjpodCxzdGF0dXM6eS5zdGF0dXN8fDAsc3RhdHVzVGV4dDp5LnN0YXR1c1RleHR8fCJVbmtub3duIEVycm9yIix1cmw6QnR8fHZvaWQgMH0pO3YuZXJyb3IoJHQpfTtsZXQgUmU9ITE7Y29uc3QgTmU9aHQ9PntS''@;'; put 'put ''ZXx8KHYubmV4dChqKCkpLFJlPSEwKTtsZXQgQnQ9e3R5cGU6dnUuRG93bmxvYWRQcm9ncmVzcyxsb2FkZWQ6aHQubG9hZGVkfTtodC5sZW5ndGhDb21wdXRhYmxlJiYoQnQudG90YWw9aHQudG90YWwpLCJ0ZXh0Ij09PWgucmVzcG9uc2VUeXBlJiYhIXkucmVzcG9uc2VUZXh0JiYoQnQucGFy''@;'; put 'put ''dGlhbFRleHQ9eS5yZXNwb25zZVRleHQpLHYubmV4dChCdCl9LEtlPWh0PT57bGV0IEJ0PXt0eXBlOnZ1LlVwbG9hZFByb2dyZXNzLGxvYWRlZDpodC5sb2FkZWR9O2h0Lmxlbmd0aENvbXB1dGFibGUmJihCdC50b3RhbD1odC50b3RhbCksdi5uZXh0KEJ0KX07cmV0dXJuIHkuYWRkRXZlbnRM''@;'; put 'put ''aXN0ZW5lcigibG9hZCIsY2UpLHkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLF9lKSx5LmFkZEV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLF9lKSx5LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixfZSksaC5yZXBvcnRQcm9ncmVzcyYmKHkuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLE5l''@;'; put 'put ''KSxudWxsIT09QyYmeS51cGxvYWQmJnkudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixLZSkpLHkuc2VuZChDKSx2Lm5leHQoe3R5cGU6dnUuU2VudH0pLCgpPT57eS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsX2UpLHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQi''@;'; put 'put ''LF9lKSx5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGNlKSx5LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLF9lKSxoLnJlcG9ydFByb2dyZXNzJiYoeS5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsTmUpLG51bGwhPT1DJiZ5LnVwbG9hZCYmeS51cGxvYWQucmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLEtlKSkseS5yZWFkeVN0YXRlIT09eS5ET05FJiZ5LmFib3J0KCl9fSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGpXKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1''@;'; put 'put ''ZmFjfSksZH0pKCk7Y29uc3QgZms9bmV3IE90KCJYU1JGX0NPT0tJRV9OQU1FIiksYXA9bmV3IE90KCJYU1JGX0hFQURFUl9OQU1FIik7Y2xhc3MgeU57fWxldCBXVT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLmRvYz1oLHRoaXMucGxhdGZvcm09dix0aGlzLmNvb2tp''@;'; put 'put ''ZU5hbWU9eSx0aGlzLmxhc3RDb29raWVTdHJpbmc9IiIsdGhpcy5sYXN0VG9rZW49bnVsbCx0aGlzLnBhcnNlQ291bnQ9MH1nZXRUb2tlbigpe2lmKCJzZXJ2ZXIiPT09dGhpcy5wbGF0Zm9ybSlyZXR1cm4gbnVsbDtjb25zdCBoPXRoaXMuZG9jLmNvb2tpZXx8IiI7cmV0dXJuIGghPT10aGlz''@;'; put 'put ''Lmxhc3RDb29raWVTdHJpbmcmJih0aGlzLnBhcnNlQ291bnQrKyx0aGlzLmxhc3RUb2tlbj1iNyhoLHRoaXMuY29va2llTmFtZSksdGhpcy5sYXN0Q29va2llU3RyaW5nPWgpLHRoaXMubGFzdFRva2VufX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShF''@;'; put 'put ''aSh1cyksRWkoRTIpLEVpKGZrKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksVnU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMudG9rZW5TZXJ2aWNlPWgsdGhpcy5oZWFkZXJOYW1lPXZ9aW50ZXJjZXB0KGgsdil7Y29u''@;'; put 'put ''c3QgeT1oLnVybC50b0xvd2VyQ2FzZSgpO2lmKCJHRVQiPT09aC5tZXRob2R8fCJIRUFEIj09PWgubWV0aG9kfHx5LnN0YXJ0c1dpdGgoImh0dHA6Ly8iKXx8eS5zdGFydHNXaXRoKCJodHRwczovLyIpKXJldHVybiB2LmhhbmRsZShoKTtjb25zdCBDPXRoaXMudG9rZW5TZXJ2aWNlLmdldFRv''@;'; put 'put ''a2VuKCk7cmV0dXJuIG51bGwhPT1DJiYhaC5oZWFkZXJzLmhhcyh0aGlzLmhlYWRlck5hbWUpJiYoaD1oLmNsb25lKHtoZWFkZXJzOmguaGVhZGVycy5zZXQodGhpcy5oZWFkZXJOYW1lLEMpfSkpLHYuaGFuZGxlKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5l''@;'; put 'put ''dyhofHxkKShFaSh5TiksRWkoYXApKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxCNz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5iYWNrZW5kPWgsdGhpcy5pbmplY3Rvcj12LHRoaXMuY2hhaW49bnVsbH1oYW5kbGUo''@;'; put 'put ''aCl7aWYobnVsbD09PXRoaXMuY2hhaW4pe2NvbnN0IHY9dGhpcy5pbmplY3Rvci5nZXQodk4sW10pO3RoaXMuY2hhaW49di5yZWR1Y2VSaWdodCgoeSxDKT0+bmV3IGNrKHksQyksdGhpcy5iYWNrZW5kKX1yZXR1cm4gdGhpcy5jaGFpbi5oYW5kbGUoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1m''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGlEKSxFaSh4cykpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHdOPSgoKT0+e2NsYXNzIGR7c3RhdGljIGRpc2FibGUoKXtyZXR1cm57bmdNb2R1bGU6ZCxwcm92aWRlcnM6W3twcm92''@;'; put 'put ''aWRlOlZ1LHVzZUNsYXNzOnNEfV19fXN0YXRpYyB3aXRoT3B0aW9ucyhoPXt9KXtyZXR1cm57bmdNb2R1bGU6ZCxwcm92aWRlcnM6W2guY29va2llTmFtZT97cHJvdmlkZTpmayx1c2VWYWx1ZTpoLmNvb2tpZU5hbWV9OltdLGguaGVhZGVyTmFtZT97cHJvdmlkZTphcCx1c2VWYWx1ZTpoLmhl''@;'; put 'put ''YWRlck5hbWV9OltdXX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe3Byb3ZpZGVyczpbVnUse3Byb3ZpZGU6dk4sdXNlRXhpc3Rpbmc6VnUsbXVsdGk6ITB9LHtwcm92aWRl''@;'; put 'put ''OnlOLHVzZUNsYXNzOldVfSx7cHJvdmlkZTpmayx1c2VWYWx1ZToiWFNSRi1UT0tFTiJ9LHtwcm92aWRlOmFwLHVzZVZhbHVlOiJYLVhTUkYtVE9LRU4ifV19KSxkfSkoKSxZVT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0s''@;'; put 'put ''ZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtwcm92aWRlcnM6W21OLHtwcm92aWRlOk5VLHVzZUNsYXNzOkI3fSxBTix7cHJvdmlkZTppRCx1c2VFeGlzdGluZzpBTn1dLGltcG9ydHM6W3dOLndpdGhPcHRpb25zKHtjb29raWVOYW1lOiJYU1JGLVRPS0VOIixoZWFk''@;'; put 'put ''ZXJOYW1lOiJYLVhTUkYtVE9LRU4ifSldfSksZH0pKCksUW49KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuaHR0cD1oLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPXYsdGhpcy51cmw9IiIsdGhpcy5kcml2ZVVybD0iIix0aGlzLmh0dHBPcHRpb25zPXt3aXRoQ3JlZGVudGlhbHM6''@;'; put 'put ''ITB9fXNldHVwKCl7Y29uc3QgaD10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3RoaXMudXJsPWAkeyhudWxsPT1oP3ZvaWQgMDpoLnNlcnZlclVybCl8fCIifS9TQVNqc0FwaWAsdGhpcy5kcml2ZVVybD1gJHt0aGlzLnVybH0vZHJpdmVgfWdldFNlcnZlcklu''@;'; put 'put ''Zm8oKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVybH0vaW5mb2ApfWdldEZpbGVGcm9tRHJpdmUoaCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZmlsZS8/X2ZpbGVQYXRoPSR7aH1gLHRoaXMuaHR0cE9wdGlvbnMpfWdldEZvbGRlckNvbnRlbnRzRnJv''@;'; put 'put ''bURyaXZlKGgpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZHJpdmVVcmx9L2ZvbGRlcj9fZm9sZGVyUGF0aD0ke2h9YCx0aGlzLmh0dHBPcHRpb25zKX1nZXRGaWxlVHJlZUZyb21Ecml2ZSgpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZHJpdmVVcmx9L2ZpbGV0cmVlYCx0''@;'; put 'put ''aGlzLmh0dHBPcHRpb25zKX1nZXRGaWxlRnJvbUZpbGVUcmVlKGgpe3JldHVybiBuZXcgUHJvbWlzZSgodix5KT0+e3RoaXMuZ2V0RmlsZVRyZWVGcm9tRHJpdmUoKS5zdWJzY3JpYmUoQz0+e2NvbnN0IGo9dGhpcy5maW5kSW5UcmVlKEMudHJlZSxoKTt2KGopfSl9KX1maW5kSW5UcmVlKGgs''@;'; put 'put ''dil7aWYoaC5yZWxhdGl2ZVBhdGg9PT12KXJldHVybiBoO2ZvcihsZXQgeSBvZiBoLmNoaWxkcmVuKXtjb25zdCBDPXRoaXMuZmluZEluVHJlZSh5LHYpO2lmKEMpcmV0dXJuIEN9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShtTiksRWkoUjcp''@;'; put 'put ''KX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKSxHaD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuaW5qZWN0b3I9aH1sb2coaCx2KXt2YXIgeTt0aGlzLmluamVjdFNhc1NlcnZpY2UoKSxudWxs''@;'; put 'put ''IT09KHk9dGhpcy5zYXNqc0NvbmZpZykmJnZvaWQgMCE9PXkmJnkuZGVidWcmJih2P2NvbnNvbGUubG9nKGgsdik6Y29uc29sZS5sb2coaCkpfWVycm9yKGgsdil7Y29uc29sZS5lcnJvcihoLHYpfWxvZ1JlcXVlc3REYXRhKGgsdil7aWYodGhpcy5sb2coIi0tLSBBZGFwdGVyIFJlcXVlc3Qg''@;'; put 'put ''SW5wdXQgLS0tIiksdGhpcy5sb2coaCksdil7Zm9yKGxldCB5IG9mIE9iamVjdC5rZXlzKHYpKXRoaXMubG9nKHksdlt5XSk7dGhpcy5sb2coIi0tLS0tLSIpfWVsc2UgdGhpcy5sb2coIm5vIGRhdGEgc2VudCIpfWluamVjdFNhc1NlcnZpY2UoKXtpZighdGhpcy5zYXNqc0NvbmZpZyl7Y29u''@;'; put 'put ''c3QgaD10aGlzLmluamVjdG9yLmdldChsMCk7dGhpcy5zYXNqc0NvbmZpZz1oLmdldFNhc2pzQ29uZmlnKCl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaSh4cykpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZh''@;'; put 'put ''Yyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLGwwPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGope3RoaXMuYXBwU3RvcmVTZXJ2aWNlPWgsdGhpcy51c2VyU2VydmljZT12LHRoaXMuZXZlbnRTZXJ2aWNlPXksdGhpcy5zYXNqc1NlcnZpY2U9Qyx0aGlzLmxvZ2dlclNl''@;'; put 'put ''cnZpY2U9SSx0aGlzLnJvdXRlcj1qLHRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlcj1uZXcgZm4sdGhpcy5pbmNvcnJlY3RTaXRlSWRFbWl0dGVyPW5ldyBmbix0aGlzLnJlcXVlc3RTaXRlSWRFbWl0dGVyPW5ldyBmbix0aGlzLnNhc2pzQWRhcHRlcj1uZXcoZk4oKSksdGhpcy5hcHBM''@;'; put 'put ''b2NDaGVja1BlbmRpbmc9ITEsdGhpcy5zaG91bGRMb2dpbj1uZXcgU2woITEpLHRoaXMubGljZW5zZV9zaXRlX2lkPW5ldyBTbChudWxsKX1zYXNTZXJ2aWNlSW5pdCgpe2lmKHRoaXMuZGNBZGFwdGVyU2V0dGluZ3M9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3Mo''@;'; put 'put ''KSx0aGlzLnNhc2pzU2VydmljZS5zZXR1cCgpLHRoaXMuZGNBZGFwdGVyU2V0dGluZ3Mpe3N3aXRjaCh0aGlzLnNhc2pzQWRhcHRlcj1uZXcoZk4oKSkodGhpcy5kY0FkYXB0ZXJTZXR0aW5ncyksdGhpcy5kY0FkYXB0ZXJTZXR0aW5ncy5zZXJ2ZXJUeXBlKXtjYXNlIHgxLkQuU2FzVml5YTp0''@;'; put 'put ''aGlzLmNoZWNrVml5YURlcGxveSh0aGlzLmRjQWRhcHRlclNldHRpbmdzLmFwcExvY3x8IiIpO2JyZWFrO2Nhc2UgeDEuRC5TYXM5OnRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCk7YnJlYWs7Y2FzZSB4MS5ELlNhc2pzOnRoaXMuY2hlY2tTYXNqc0RlcGxveSgpfSJSZWRp''@;'; put 'put ''cmVjdGVkIj09PXRoaXMuZ2V0U2FzanNDb25maWcoKS5sb2dpbk1lY2hhbmlzbSYmdGhpcy5zaG91bGRMb2dpbi5zdWJzY3JpYmUoaD0+e2gmJnRoaXMuc2FzanNBZGFwdGVyLmxvZ0luKCkudGhlbih2PT57Y29uc29sZS5sb2coInJlcyIsdil9KX0pfWVsc2UgdGhpcy5ldmVudFNlcnZpY2Uu''@;'; put 'put ''c2hvd0luZm9Nb2RhbCgiRXJyb3IiLCJBZGFwdGVyIHNldHRpbmdzIChpbmRleC5odG1sKSBhcmUgbm90IHByZXNlbnQuIil9cmVxdWVzdChoLHYseSxDKXtyZXR1cm4gQ3x8KEM9e30pLHRoaXMubG9nZ2VyU2VydmljZS5sb2dSZXF1ZXN0RGF0YShoPSJzZXJ2aWNlcy8iK2gsdiksbmV3IFBy''@;'; put 'put ''b21pc2UoKEksaik9Pnt0aGlzLnNhc2pzQWRhcHRlci5yZXF1ZXN0KGgsdix5LCgpPT57dGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKX0pLnRoZW4oY2U9PntpZighMT09PWNlLmxvZ2luJiYodGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKSxqKCExKSksIXRoaXMudXNlclNlcnZpY2UudXNlciYm''@;'; put 'put ''Y2UuTUZfR0VUVVNFUiYmKHRoaXMudXNlclNlcnZpY2UudXNlcj17dXNlcm5hbWU6Y2UuTUZfR0VUVVNFUn0pLGNlLlNZU1NJVEUmJih0aGlzLnJlcXVlc3RTaXRlSWRFbWl0dGVyLmVtaXQoY2UuU1lTU0lURSksdGhpcy5nZXRMaWNlbnNlU2l0ZUlkKCkubGVuZ3RoPjAmJih0aGlzLmdldExp''@;'; put 'put ''Y2Vuc2VTaXRlSWQoKS5pbmNsdWRlcyhjZS5TWVNTSVRFKXx8dGhpcy5pbmNvcnJlY3RTaXRlSWRFbWl0dGVyLmVtaXQoY2UuU1lTU0lURSkpKSw0MDQ9PT1jZS5zdGF0dXMmJmooe01FU1NBR0U6Y2UuYm9keXx8IlNBUyBSZXNwb25kZWQgd2l0aCBlcnJvciJ9KSx2b2lkIDAhPT1jZS5zYXNq''@;'; put 'put ''c0Fib3J0KXtjb25zdCBfZT1jZSxSZT1fZS5zYXNqc0Fib3J0WzBdLk1TRyxOZT1fZS5zYXNqc0Fib3J0WzBdLk1BQztpZihSZS5pbmNsdWRlcygiRGF0YV9Db250cm9sbGVyX1NldHRpbmdzKFN0b3JlZFByb2Nlc3MpIG5vdCBmb3VuZCIpKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zdGFy''@;'; put 'put ''dHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSx2b2lkIGooe2Vycm9yOlJlfSk7bnVsbCE9QyYmQy5zdXBwcmVzc1N1Y2Nlc3NBYm9ydE1vZGFsfHx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChoLnJlcGxhY2UoInNlcnZpY2VzLyIs''@;'; put 'put ''IiIpLFJlLHtTWVNXQVJOSU5HVEVYVDpfZS5TWVNXQVJOSU5HVEVYVCxTWVNFUlJPUlRFWFQ6X2UuU1lTRVJST1JURVhULE1BQzpOZX0pLGooe2Vycm9yOlJlfSl9SShjZSl9LGNlPT57aWYoY29uc29sZS5lcnJvcihjZSksY2UuZXJyb3Ipe2xldCBSZSxfZT1jZS5lcnJvci5tZXNzYWdlO2Nl''@;'; put 'put ''LmVycm9yLmRldGFpbHMmJmNlLmVycm9yLmRldGFpbHMubG9nJiYoUmU9Y2UuZXJyb3IuZGV0YWlscy5sb2cpLCghX2V8fF9lLnRyaW0oKS5sZW5ndGg8MSkmJihfZT0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCIpLG51bGwhPUMmJkMuc3VwcHJlc3NFcnJvckFib3J0TW9kYWx8fHRoaXMu''@;'; put 'put ''ZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKGgsX2Use0xPRzpSZX0sIlJlcXVlc3QgZXJyb3IiKSxqKHtlcnJvcjpfZX0pfWooY2UpfSl9KX11cGxvYWRGaWxlKGgsdix5KXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIudXBsb2FkRmlsZShoLHYseSl9bG9naW4oaCx2KXtyZXR1cm4gdG8o''@;'; put 'put ''dGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHk9dGhpcy5nZXRTZXJ2ZXJUeXBlKCk9PT14MS5ELlNhc2pzPyJjbGllbnRJRDEiOnZvaWQgMDtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIubG9nSW4oaCx2LHkpLnRoZW4oQz0+e3ZhciBJO3JldHVybiBDLmlzTG9nZ2VkSW4m''@;'; put 'put ''Jih0aGlzLnVzZXJTZXJ2aWNlLnVzZXI9e3VzZXJuYW1lOkMudXNlck5hbWV9LHRoaXMuYXBwTG9jQ2hlY2tQZW5kaW5nJiYodGhpcy5jaGVja1ZpeWFEZXBsb3koKG51bGw9PT0oST10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09ST92b2lkIDA6SS5hcHBMb2MpfHwiIiksdGhp''@;'; put 'put ''cy5hcHBMb2NDaGVja1BlbmRpbmc9ITEpKSx0aGlzLnNob3VsZExvZ2luLm5leHQoIUMuaXNMb2dnZWRJbiksQy5pc0xvZ2dlZElufSxDPT4oY29uc29sZS5lcnJvcihDKSx0aGlzLnNob3VsZExvZ2luLm5leHQoITApLCExKSkuY2F0Y2goQz0+KDQwMz09PUMmJmNvbnNvbGUuZXJyb3IoIklu''@;'; put 'put ''dmFsaWQgaG9zdCIpLCExKSl9KX1nZXRMaWNlbnNlU2l0ZUlkKCl7cmV0dXJuIHRoaXMubGljZW5zZV9zaXRlX2lkLnZhbHVlfHxbXX1zZXRMaWNlbnNlU2l0ZUlkKGgpe3RoaXMubGljZW5zZV9zaXRlX2lkLm5leHQoIm9iamVjdCI9PXR5cGVvZiBoP2g6W2hdKX1jaGVja1Nhc2pzRGVwbG95''@;'; put 'put ''KCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCB2PWAke3RoaXMuZ2V0U2FzanNDb25maWcoKS5hcHBMb2N9L3NlcnZpY2VzL2FkbWluYDt0aGlzLnNhc2pzU2VydmljZS5nZXRGb2xkZXJDb250ZW50c0Zyb21Ecml2ZSh2KS5zdWJzY3JpYmUoeT0+e3ku''@;'; put 'put ''ZmlsZXMuaW5jbHVkZXMoIm1ha2VkYXRhLnNhcyIpPyh0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSk6KHRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCksdGhpcy5yb3V0ZXIudXJsLmlu''@;'; put 'put ''Y2x1ZGVzKCJkZXBsb3kiKSYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiLyIpKX0seT0+e3kuZXJyb3IuaW5jbHVkZXMoIlVuYXV0aG9yaXplZCIpPyh0aGlzLnNob3VsZExvZ2luLm5leHQoITApLHRoaXMuc2hvdWxkTG9naW4uc3Vic2NyaWJlKEM9PnshMT09PUMmJmxvY2F0aW9uLnJl''@;'; put 'put ''bG9hZCgpfSkpOnkuZXJyb3IuaW5jbHVkZXMoIkZvbGRlciBkb2Vzbid0IGV4aXN0LiIpJiYoY29uc29sZS53YXJuKCJTQVNqcyBTQVMgc2VydmljZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYy4iKSx0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgp''@;'; put 'put ''LHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSl9KX0pfXNhc2pzTWFrZWRhdGFDaGVja2luZygpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChoLHYpPT50byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24q''@;'; put 'put ''KCl7dGhpcy5jaGVja2luZ0ludGVydmFsPXNldEludGVydmFsKCgpPT50byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zYXNqc01ha2VkYXRhU3VjY2Vzc2Z1bGwoKS50aGVuKHk9Pnt5JiYoY2xlYXJJbnRlcnZhbCh0aGlzLmNoZWNraW5nSW50ZXJ2YWwpLGgoeSkpfSku''@;'; put 'put ''Y2F0Y2goeT0+e2NsZWFySW50ZXJ2YWwodGhpcy5jaGVja2luZ0ludGVydmFsKSx2KHkpfSl9KSwxZTMpfSkpfSl9c2FzanNNYWtlZGF0YVN1Y2Nlc3NmdWxsKCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKGgsdik9Pntjb25z''@;'; put 'put ''dCBDPWAke3RoaXMuZ2V0U2FzanNDb25maWcoKS5hcHBMb2N9L3NlcnZpY2VzL2FkbWluYDt0aGlzLnNhc2pzU2VydmljZS5nZXRGb2xkZXJDb250ZW50c0Zyb21Ecml2ZShDKS5zdWJzY3JpYmUoST0+e0kuZmlsZXMuaW5jbHVkZXMoIm1ha2VkYXRhLnNhcyIpP2goITEpOmgoITApfSxJPT57''@;'; put 'put ''SS5lcnJvci5pbmNsdWRlcygiRm9sZGVyIGRvZXNuJ3QgZXhpc3QuIikmJnYoKX0pfSl9KX1jaGVja1ZpeWFEZXBsb3koaCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgeT0hMTt5PXZvaWQgMCE9PXRoaXMuc2FzanNBZGFwdGVyLmdldEZvbGRlcj95aWVs''@;'; put 'put ''ZCB0aGlzLmFwcExvY0NoZWNrKGgpOnlpZWxkIHRoaXMuYXBwTG9jQ2hlY2tQcmVBeGlvc2RBZGFwdGVyKGgpLHkmJnRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCl9KX1hcHBMb2NDaGVjayhoKXtyZXR1cm4gbmV3IFByb21pc2UoKHYseSk9PnRvKHRoaXMsdm9pZCAwLHZv''@;'; put 'put ''aWQgMCxmdW5jdGlvbiooKXtsZXQgSSxDPSExO3RyeXtJPXlpZWxkIHRoaXMuc2FzanNBZGFwdGVyLmdldEZvbGRlcihoKX1jYXRjaChqKXsiTG9naW5SZXF1aXJlZEVycm9yIj09PWoubmFtZT8odGhpcy5hcHBMb2NDaGVja1BlbmRpbmc9ITAsdGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKSx2''@;'; put 'put ''KCExKSk6Qz0hMH1pZihDKXJldHVybiBjb25zb2xlLndhcm4oIlZpeWEgc2VydmljZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYy4iKSx0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3ki''@;'; put 'put ''KSx2KCExKTt2KCEwKX0pKX1hcHBMb2NDaGVja1ByZUF4aW9zZEFkYXB0ZXIoaCl7cmV0dXJuIG5ldyBQcm9taXNlKCh2LHkpPT57bGV0IEk9ITE7cmV0dXJuIGZldGNoKGAvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9JHtofWApLnRoZW4oaj0+KDQwND09PWouc3RhdHVzJiYoST0hMCks''@;'; put 'put ''ai50ZXh0KCkpKS50aGVuKGo9PntpZih0aGlzLmlzTG9naW5SZXF1aXJlZChqKSl0aGlzLmFwcExvY0NoZWNrUGVuZGluZz0hMCx0aGlzLnNob3VsZExvZ2luLm5leHQoITApO2Vsc2V7aWYoSSlyZXR1cm4gY29uc29sZS53YXJuKCJWaXlhIHNlcnZpY2VzIGFyZSBub3QgcHJlc2VudCBvbiB0''@;'; put 'put ''aGUgY3VycmVudCBhcHBMb2MuIiksdGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksdighMSk7bGV0IGNlPW51bGw7dHJ5e2NlPUpTT04ucGFyc2Uoail9Y2F0Y2goX2Upe31pZihjZSYmY2UuaHR0cFN0YXR1''@;'; put 'put ''c0NvZGUmJjQwND09PWNlLmh0dHBTdGF0dXNDb2RlKXJldHVybiBjb25zb2xlLndhcm4oIlZpeWEgc2VydmljZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYy4iKSx0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRl''@;'; put 'put ''QnlVcmwoIi9kZXBsb3kiKSx2KCExKTt2KCEwKX19KS5jYXRjaChqPT57dighMSl9KX0pfWlzTG9naW5SZXF1aXJlZChoKXtyZXR1cm4vPGZvcm0uK2FjdGlvbj0iKC4qTG9nb25bXiJdKikuKj4vZ20udGVzdChoKX1sb2dvdXQoKXt0aGlzLnNhc2pzQWRhcHRlci5sb2dPdXQoKS50aGVuKCgp''@;'; put 'put ''PT57bG9jYXRpb24ucmVsb2FkKCl9KX1nZXRTYXNqc0NvbmZpZygpe3JldHVybiB0aGlzLnNhc2pzQWRhcHRlci5nZXRTYXNqc0NvbmZpZygpfWdldFNhc1JlcXVlc3RzKCl7cmV0dXJuIHRoaXMuc2FzanNBZGFwdGVyLmdldFNhc1JlcXVlc3RzKCl9c2V0RGVidWdTdGF0ZShoKXt0aGlzLnNh''@;'; put 'put ''c2pzQWRhcHRlci5zZXREZWJ1Z1N0YXRlKGgpfWdldFNhc2pzSW5zdGFuY2UoKXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXJ9Z2V0U2VydmVyVHlwZSgpe2NvbnN0IGg9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25maWcoKTtyZXR1cm4gaC5zZXJ2ZXJUeXBlP2guc2VydmVyVHlwZToi''@;'; put 'put ''U0FTVklZQSJ9Z2V0RXhlY3V0aW9uUGF0aCgpe2NvbnN0IGg9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25maWcoKTtzd2l0Y2goaC5zZXJ2ZXJUeXBlKXtjYXNlIHgxLkQuU2FzVml5YTpyZXR1cm4gaC5wYXRoU0FTVml5YTtjYXNlIHgxLkQuU2FzOTpyZXR1cm4gaC5wYXRoU0FTOTtj''@;'; put 'put ''YXNlIHgxLkQuU2FzanM6cmV0dXJuIGgucGF0aFNBU0pTfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoUjcpLEVpKGhOKSxFaShtdSksRWkoUW4pLEVpKEdoKSxFaShFbCkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1''@;'; put 'put ''MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0IFFVPWZ1bmN0aW9uIEpvZShkLGcpe3JldHVybiBkPT09Z3x8ZCE9ZCYmZyE9Z30sY0Q9ZnVuY3Rpb24gSlUoZCxnKXtmb3IodmFyIGg9ZC5sZW5ndGg7aC0tOylpZihRVShkW2hdWzBdLGcpKXJldHVybiBoO3JldHVybi0x''@;'; put 'put ''fTt2YXIgWFU9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBqNShkKXt2YXIgZz0tMSxoPW51bGw9PWQ/MDpkLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZzxoOyl7dmFyIHY9ZFtnXTt0aGlzLnNldCh2WzBdLHZbMV0pfX1qNS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gVVUo''@;'; put 'put ''KXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxqNS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIEtvZShkKXt2YXIgZz10aGlzLl9fZGF0YV9fLGg9Y0QoZyxkKTtyZXR1cm4hKGg8MHx8KGg9PWcubGVuZ3RoLTE/Zy5wb3AoKTpYVS5jYWxsKGcsaCwxKSwtLXRoaXMuc2l6ZSwwKSl9''@;'; put 'put ''LGo1LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gcW9lKGQpe3ZhciBnPXRoaXMuX19kYXRhX18saD1jRChnLGQpO3JldHVybiBoPDA/dm9pZCAwOmdbaF1bMV19LGo1LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gVjUoZCl7cmV0dXJuIGNEKHRoaXMuX19kYXRhX18sZCk+LTF9LGo1LnByb3RvdHlw''@;'; put 'put ''ZS5zZXQ9ZnVuY3Rpb24gZWFlKGQsZyl7dmFyIGg9dGhpcy5fX2RhdGFfXyx2PWNEKGgsZCk7cmV0dXJuIHY8MD8oKyt0aGlzLnNpemUsaC5wdXNoKFtkLGddKSk6aFt2XVsxXT1nLHRoaXN9O2NvbnN0IEl5PWo1LHFVPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5P''@;'; put 'put ''YmplY3Q9PT1PYmplY3QmJmdsb2JhbDt2YXIgZVE9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZjtjb25zdCBXaD1xVXx8ZVF8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksRHk9V2guU3ltYm9sO3ZhciBoRD1PYmplY3QucHJvdG90eXBl''@;'; put 'put ''LGtOPWhELmhhc093blByb3BlcnR5LFA3PWhELnRvU3RyaW5nLGRrPUR5P0R5LnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgU049T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgaVE9RHk/RHkudG9TdHJpbmdUYWc6dm9pZCAwO2NvbnN0IEx5PWZ1bmN0aW9uIEg3KGQpe3JldHVybiBudWxs''@;'; put 'put ''PT1kP3ZvaWQgMD09PWQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOmlRJiZpUSBpbiBPYmplY3QoZCk/ZnVuY3Rpb24gdFEoZCl7dmFyIGc9a04uY2FsbChkLGRrKSxoPWRbZGtdO3RyeXtkW2RrXT12b2lkIDA7dmFyIHY9ITB9Y2F0Y2goQyl7fXZhciB5PVA3LmNhbGwo''@;'; put 'put ''ZCk7cmV0dXJuIHYmJihnP2RbZGtdPWg6ZGVsZXRlIGRbZGtdKSx5fShkKTpmdW5jdGlvbiBXMyhkKXtyZXR1cm4gU04uY2FsbChkKX0oZCl9LE95PWZ1bmN0aW9uIG9RKGQpe3ZhciBnPXR5cGVvZiBkO3JldHVybiBudWxsIT1kJiYoIm9iamVjdCI9PWd8fCJmdW5jdGlvbiI9PWcpfSx4Tj1m''@;'; put 'put ''dW5jdGlvbiBCeShkKXtpZighT3koZCkpcmV0dXJuITE7dmFyIGc9THkoZCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09Z3x8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09Z3x8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1nfHwiW29iamVjdCBQcm94eV0iPT1nfSxscD1XaFsi''@;'; put 'put ''X19jb3JlLWpzX3NoYXJlZF9fIl07dmFyIHNRPWZ1bmN0aW9uKCl7dmFyIGQ9L1teLl0rJC8uZXhlYyhscCYmbHAua2V5cyYmbHAua2V5cy5JRV9QUk9UT3x8IiIpO3JldHVybiBkPyJTeW1ib2woc3JjKV8xLiIrZDoiIn0oKTt2YXIgY2FlPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztj''@;'; put 'put ''b25zdCBONz1mdW5jdGlvbiBmYWUoZCl7aWYobnVsbCE9ZCl7dHJ5e3JldHVybiBjYWUuY2FsbChkKX1jYXRjaChnKXt9dHJ5e3JldHVybiBkKyIifWNhdGNoKGcpe319cmV0dXJuIiJ9O3ZhciBkYWU9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sZEQ9UmVnRXhwKCJeIitGdW5jdGlv''@;'; put 'put ''bi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQx''@;'; put 'put ''Lio/IikrIiQiKTtjb25zdCBwUT1mdW5jdGlvbiBkUShkKXtyZXR1cm4hKCFPeShkKXx8ZnVuY3Rpb24gdVEoZCl7cmV0dXJuISFzUSYmc1EgaW4gZH0oZCkpJiYoeE4oZCk/ZEQ6ZGFlKS50ZXN0KE43KGQpKX0sVjc9ZnVuY3Rpb24gdmFlKGQsZyl7dmFyIGg9ZnVuY3Rpb24gZ2FlKGQsZyl7''@;'; put 'put ''cmV0dXJuIG51bGw9PWQ/dm9pZCAwOmRbZ119KGQsZyk7cmV0dXJuIHBRKGgpP2g6dm9pZCAwfSxwaz1WNyhXaCwiTWFwIiksUTY9VjcoT2JqZWN0LCJjcmVhdGUiKTt2YXIgajc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIga2FlPU9iamVjdC5wcm90b3R5cGUuaGFzT3du''@;'; put 'put ''UHJvcGVydHk7ZnVuY3Rpb24gWjcoZCl7dmFyIGc9LTEsaD1udWxsPT1kPzA6ZC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2c8aDspe3ZhciB2PWRbZ107dGhpcy5zZXQodlswXSx2WzFdKX19WjcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIEFhZSgpe3RoaXMuX19kYXRhX189UTY/UTYo''@;'; put 'put ''bnVsbCk6e30sdGhpcy5zaXplPTB9LFo3LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gbVEoZCl7dmFyIGc9dGhpcy5oYXMoZCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW2RdO3JldHVybiB0aGlzLnNpemUtPWc/MTowLGd9LFo3LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gYmFlKGQpe3ZhciBn''@;'; put 'put ''PXRoaXMuX19kYXRhX187aWYoUTYpe3ZhciBoPWdbZF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09aD92b2lkIDA6aH1yZXR1cm4gajcuY2FsbChnLGQpP2dbZF06dm9pZCAwfSxaNy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFROKGQpe3ZhciBnPXRoaXMuX19kYXRhX187''@;'; put 'put ''cmV0dXJuIFE2P3ZvaWQgMCE9PWdbZF06a2FlLmNhbGwoZyxkKX0sWjcucHJvdG90eXBlLnNldD1mdW5jdGlvbiBJTihkLGcpe3ZhciBoPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZCk/MDoxLGhbZF09UTYmJnZvaWQgMD09PWc/Il9fbG9kYXNoX2hhc2hfdW5k''@;'; put 'put ''ZWZpbmVkX18iOmcsdGhpc307Y29uc3QgRE49WjcsbWs9ZnVuY3Rpb24gVGFlKGQsZyl7dmFyIGg9ZC5fX2RhdGFfXztyZXR1cm4gZnVuY3Rpb24gZ2soZCl7dmFyIGc9dHlwZW9mIGQ7cmV0dXJuInN0cmluZyI9PWd8fCJudW1iZXIiPT1nfHwic3ltYm9sIj09Z3x8ImJvb2xlYW4iPT1nPyJf''@;'; put 'put ''X3Byb3RvX18iIT09ZDpudWxsPT09ZH0oZyk/aFsic3RyaW5nIj09dHlwZW9mIGc/InN0cmluZyI6Imhhc2giXTpoLm1hcH07ZnVuY3Rpb24gWTMoZCl7dmFyIGc9LTEsaD1udWxsPT1kPzA6ZC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2c8aDspe3ZhciB2PWRbZ107dGhpcy5zZXQodlsw''@;'; put 'put ''XSx2WzFdKX19WTMucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIEVhZSgpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IEROLG1hcDpuZXcocGt8fEl5KSxzdHJpbmc6bmV3IEROfX0sWTMucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBMTihkKXt2YXIgZz1tayh0aGlzLGQp''@;'; put 'put ''LmRlbGV0ZShkKTtyZXR1cm4gdGhpcy5zaXplLT1nPzE6MCxnfSxZMy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIHZrKGQpe3JldHVybiBtayh0aGlzLGQpLmdldChkKX0sWTMucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBiUShkKXtyZXR1cm4gbWsodGhpcyxkKS5oYXMoZCl9LFkzLnByb3RvdHlw''@;'; put 'put ''ZS5zZXQ9ZnVuY3Rpb24gRGFlKGQsZyl7dmFyIGg9bWsodGhpcyxkKSx2PWguc2l6ZTtyZXR1cm4gaC5zZXQoZCxnKSx0aGlzLnNpemUrPWguc2l6ZT09dj8wOjEsdGhpc307Y29uc3QgT2FlPVkzO2Z1bmN0aW9uIEZ5KGQpe3ZhciBnPXRoaXMuX19kYXRhX189bmV3IEl5KGQpO3RoaXMuc2l6''@;'; put 'put ''ZT1nLnNpemV9RnkucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIHRhZSgpe3RoaXMuX19kYXRhX189bmV3IEl5LHRoaXMuc2l6ZT0wfSxGeS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIHJhZShkKXt2YXIgZz10aGlzLl9fZGF0YV9fLGg9Zy5kZWxldGUoZCk7cmV0dXJuIHRoaXMuc2l6ZT1n''@;'; put 'put ''LnNpemUsaH0sRnkucHJvdG90eXBlLmdldD1mdW5jdGlvbiBvYWUoZCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGQpfSxGeS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIGJOKGQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhkKX0sRnkucHJvdG90eXBlLnNldD1mdW5jdGlvbiBaNShkLGcp''@;'; put 'put ''e3ZhciBoPXRoaXMuX19kYXRhX187aWYoaCBpbnN0YW5jZW9mIEl5KXt2YXIgdj1oLl9fZGF0YV9fO2lmKCFwa3x8di5sZW5ndGg8MTk5KXJldHVybiB2LnB1c2goW2QsZ10pLHRoaXMuc2l6ZT0rK2guc2l6ZSx0aGlzO2g9dGhpcy5fX2RhdGFfXz1uZXcgT2FlKHYpfXJldHVybiBoLnNldChk''@;'; put 'put ''LGcpLHRoaXMuc2l6ZT1oLnNpemUsdGhpc307Y29uc3QgQmFlPUZ5O3ZhciBrUT1mdW5jdGlvbigpe3RyeXt2YXIgZD1WNyhPYmplY3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIGQoe30sIiIse30pLGR9Y2F0Y2goZyl7fX0oKTtjb25zdCB6Nz1rUSxHNz1mdW5jdGlvbiBTUShkLGcsaCl7''@;'; put 'put ''Il9fcHJvdG9fXyI9PWcmJno3P3o3KGQsZyx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6aCx3cml0YWJsZTohMH0pOmRbZ109aH07dmFyIFBhZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IEVRPWZ1bmN0aW9uIE1RKGQsZyxoKXt2YXIgdj1kW2dd''@;'; put 'put ''OyghUGFlLmNhbGwoZCxnKXx8IVFVKHYsaCl8fHZvaWQgMD09PWgmJiEoZyBpbiBkKSkmJkc3KGQsZyxoKX0sZ0Q9ZnVuY3Rpb24gQk4oZCxnLGgsdil7dmFyIHk9IWg7aHx8KGg9e30pO2Zvcih2YXIgQz0tMSxJPWcubGVuZ3RoOysrQzxJOyl7dmFyIGo9Z1tDXSxjZT12P3YoaFtqXSxkW2pd''@;'; put 'put ''LGosaCxkKTp2b2lkIDA7dm9pZCAwPT09Y2UmJihjZT1kW2pdKSx5P0c3KGgsaixjZSk6RVEoaCxqLGNlKX1yZXR1cm4gaH0sQWs9ZnVuY3Rpb24gTmFlKGQpe3JldHVybiBudWxsIT1kJiYib2JqZWN0Ij09dHlwZW9mIGR9LFRRPWZ1bmN0aW9uIHhRKGQpe3JldHVybiBBayhkKSYmIltvYmpl''@;'; put 'put ''Y3QgQXJndW1lbnRzXSI9PUx5KGQpfTt2YXIgSVE9T2JqZWN0LnByb3RvdHlwZSxEUT1JUS5oYXNPd25Qcm9wZXJ0eSxQTj1JUS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxtRD1UUShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP1RROmZ1bmN0aW9uKGQpe3JldHVybiBBayhkKSYmRFEu''@;'; put 'put ''Y2FsbChkLCJjYWxsZWUiKSYmIVBOLmNhbGwoZCwiY2FsbGVlIil9O2NvbnN0IExRPW1ELEFEPUFycmF5LmlzQXJyYXk7dmFyIFJRPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsSHk9UlEmJiJvYmplY3QiPT10eXBlb2YgbW9k''@;'; put 'put ''dWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxGTj1IeSYmSHkuZXhwb3J0cz09PVJRP1doLkJ1ZmZlcjp2b2lkIDA7Y29uc3QgQlE9KEZOP0ZOLmlzQnVmZmVyOnZvaWQgMCl8fGZ1bmN0aW9uIE9RKCl7cmV0dXJuITF9O3ZhciBHYWU9L14oPzowfFsxLTldXGQqKSQvO2Nv''@;'; put 'put ''bnN0IFlhZT1mdW5jdGlvbiBXYWUoZCxnKXt2YXIgaD10eXBlb2YgZDtyZXR1cm4hIShnPW51bGw9PWc/OTAwNzE5OTI1NDc0MDk5MTpnKSYmKCJudW1iZXIiPT1ofHwic3ltYm9sIiE9aCYmR2FlLnRlc3QoZCkpJiZkPi0xJiZkJTE9PTAmJmQ8Z30sUFE9ZnVuY3Rpb24gUWFlKGQpe3JldHVy''@;'; put 'put ''biJudW1iZXIiPT10eXBlb2YgZCYmZD4tMSYmZCUxPT0wJiZkPD05MDA3MTk5MjU0NzQwOTkxfTt2YXIgWjI9e307WjJbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVoyWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1aMlsiW29iamVjdCBJbnQ4QXJyYXldIl09WjJbIltvYmplY3QgSW50MTZB''@;'; put 'put ''cnJheV0iXT1aMlsiW29iamVjdCBJbnQzMkFycmF5XSJdPVoyWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09WjJbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09WjJbIltvYmplY3QgVWludDE2QXJyYXldIl09WjJbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsWjJbIltvYmplY3QgQXJn''@;'; put 'put ''dW1lbnRzXSJdPVoyWyJbb2JqZWN0IEFycmF5XSJdPVoyWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVoyWyJbb2JqZWN0IEJvb2xlYW5dIl09WjJbIltvYmplY3QgRGF0YVZpZXddIl09WjJbIltvYmplY3QgRGF0ZV0iXT1aMlsiW29iamVjdCBFcnJvcl0iXT1aMlsiW29iamVjdCBGdW5jdGlv''@;'; put 'put ''bl0iXT1aMlsiW29iamVjdCBNYXBdIl09WjJbIltvYmplY3QgTnVtYmVyXSJdPVoyWyJbb2JqZWN0IE9iamVjdF0iXT1aMlsiW29iamVjdCBSZWdFeHBdIl09WjJbIltvYmplY3QgU2V0XSJdPVoyWyJbb2JqZWN0IFN0cmluZ10iXT1aMlsiW29iamVjdCBXZWFrTWFwXSJdPSExO2NvbnN0IGpO''@;'; put 'put ''PWZ1bmN0aW9uIEdRKGQpe3JldHVybiBmdW5jdGlvbihnKXtyZXR1cm4gZChnKX19O3ZhciBXUT0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLEc1PVdRJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxl''@;'; put 'put ''Lm5vZGVUeXBlJiZtb2R1bGUsd2s9RzUmJkc1LmV4cG9ydHM9PT1XUSYmcVUucHJvY2Vzcztjb25zdCBRMz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRzUmJkc1LnJlcXVpcmUmJkc1LnJlcXVpcmUoInV0aWwiKS50eXBlc3x8d2smJndrLmJpbmRpbmcmJndrLmJpbmRpbmcoInV0aWwiKX1jYXRj''@;'; put 'put ''aChnKXt9fSgpO3ZhciBaTj1RMyYmUTMuaXNUeXBlZEFycmF5O2NvbnN0IGFsZT1aTj9qTihaTik6ZnVuY3Rpb24gVk4oZCl7cmV0dXJuIEFrKGQpJiZQUShkLmxlbmd0aCkmJiEhWjJbTHkoZCldfTt2YXIgbGxlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Y29uc3QgYms9ZnVu''@;'; put 'put ''Y3Rpb24gc2xlKGQsZyl7dmFyIGg9QUQoZCksdj0haCYmTFEoZCkseT0haCYmIXYmJkJRKGQpLEM9IWgmJiF2JiYheSYmYWxlKGQpLEk9aHx8dnx8eXx8QyxqPUk/ZnVuY3Rpb24gRmFlKGQsZyl7Zm9yKHZhciBoPS0xLHY9QXJyYXkoZCk7KytoPGQ7KXZbaF09ZyhoKTtyZXR1cm4gdn0oZC5s''@;'; put 'put ''ZW5ndGgsU3RyaW5nKTpbXSxjZT1qLmxlbmd0aDtmb3IodmFyIF9lIGluIGQpKGd8fGxsZS5jYWxsKGQsX2UpKSYmKCFJfHwhKCJsZW5ndGgiPT1fZXx8eSYmKCJvZmZzZXQiPT1fZXx8InBhcmVudCI9PV9lKXx8QyYmKCJidWZmZXIiPT1fZXx8ImJ5dGVMZW5ndGgiPT1fZXx8ImJ5dGVPZmZz''@;'; put 'put ''ZXQiPT1fZSl8fFlhZShfZSxjZSkpKSYmai5wdXNoKF9lKTtyZXR1cm4gan07dmFyIFlRPU9iamVjdC5wcm90b3R5cGU7Y29uc3Qga0Q9ZnVuY3Rpb24gVzcoZCl7dmFyIGc9ZCYmZC5jb25zdHJ1Y3RvcjtyZXR1cm4gZD09PSgiZnVuY3Rpb24iPT10eXBlb2YgZyYmZy5wcm90b3R5cGV8fFlR''@;'; put 'put ''KX0sVVE9ZnVuY3Rpb24gek4oZCxnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGQoZyhoKSl9fSxRUT1VUShPYmplY3Qua2V5cyxPYmplY3QpO3ZhciBmbGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBKUT1mdW5jdGlvbiBkbGUoZCl7cmV0dXJuIG51bGwhPWQm''@;'; put 'put ''JlBRKGQubGVuZ3RoKSYmIXhOKGQpfSxXTj1mdW5jdGlvbiBwbGUoZCl7cmV0dXJuIEpRKGQpP2JrKGQpOmZ1bmN0aW9uIEdOKGQpe2lmKCFrRChkKSlyZXR1cm4gUVEoZCk7dmFyIGc9W107Zm9yKHZhciBoIGluIE9iamVjdChkKSlmbGUuY2FsbChkLGgpJiYiY29uc3RydWN0b3IiIT1oJiZn''@;'; put 'put ''LnB1c2goaCk7cmV0dXJuIGd9KGQpfTt2YXIgS1E9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBZTj1mdW5jdGlvbiBfayhkKXtpZighT3koZCkpcmV0dXJuIGZ1bmN0aW9uIHZsZShkKXt2YXIgZz1bXTtpZihudWxsIT1kKWZvcih2YXIgaCBpbiBPYmplY3QoZCkpZy5w''@;'; put 'put ''dXNoKGgpO3JldHVybiBnfShkKTt2YXIgZz1rRChkKSxoPVtdO2Zvcih2YXIgdiBpbiBkKSJjb25zdHJ1Y3RvciI9PXYmJihnfHwhS1EuY2FsbChkLHYpKXx8aC5wdXNoKHYpO3JldHVybiBofSxjbD1mdW5jdGlvbiBlcyhkKXtyZXR1cm4gSlEoZCk/YmsoZCwhMCk6WU4oZCl9O3ZhciBPYT0i''@;'; put 'put ''b2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLFVOPU9hJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsSjY9VU4mJlVOLmV4cG9ydHM9PT1PYT9XaC5CdWZmZXI6dm9pZCAw''@;'; put 'put ''LG8xPUo2P0o2LmFsbG9jVW5zYWZlOnZvaWQgMDtjb25zdCBlSj1mdW5jdGlvbiB4RCgpe3JldHVybltdfTt2YXIgUU49T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxKTj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGJsZT1KTj9mdW5jdGlvbihkKXtyZXR1cm4g''@;'; put 'put ''bnVsbD09ZD9bXTooZD1PYmplY3QoZCksZnVuY3Rpb24gd3UoZCxnKXtmb3IodmFyIGg9LTEsdj1udWxsPT1kPzA6ZC5sZW5ndGgseT0wLEM9W107KytoPHY7KXt2YXIgST1kW2hdO2coSSxoLGQpJiYoQ1t5KytdPUkpfXJldHVybiBDfShKTihkKSxmdW5jdGlvbihnKXtyZXR1cm4gUU4uY2Fs''@;'; put 'put ''bChkLGcpfSkpfTplSjtjb25zdCBWeT1ibGUsS049ZnVuY3Rpb24gdEooZCxnKXtmb3IodmFyIGg9LTEsdj1nLmxlbmd0aCx5PWQubGVuZ3RoOysraDx2OylkW3kraF09Z1toXTtyZXR1cm4gZH0sJE49VVEoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7dmFyIFU3PU9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24oZCl7Zm9yKHZhciBnPVtdO2Q7KUtOKGcsVnkoZCkpLGQ9JE4oZCk7cmV0dXJuIGd9OmVKO2NvbnN0IFg2PVU3LENrPWZ1bmN0aW9uIHJKKGQsZyxoKXt2YXIgdj1nKGQpO3JldHVybiBBRChkKT92OktOKHYsaChkKSl9LF9sZT1mdW5jdGlvbiBl''@;'; put 'put ''VihkKXtyZXR1cm4gQ2soZCxXTixWeSl9LENsZT1mdW5jdGlvbiBpSihkKXtyZXR1cm4gQ2soZCxjbCxYNil9LG5WPVY3KFdoLCJEYXRhVmlldyIpLGp5PVY3KFdoLCJQcm9taXNlIiksaVY9VjcoV2gsIlNldCIpLG9WPVY3KFdoLCJXZWFrTWFwIik7dmFyIGFWPSJbb2JqZWN0IE1hcF0iLGxW''@;'; put 'put ''PSJbb2JqZWN0IFByb21pc2VdIixvSj0iW29iamVjdCBTZXRdIixLNj0iW29iamVjdCBXZWFrTWFwXSIsc1Y9IltvYmplY3QgRGF0YVZpZXddIixXNT1ONyhuViksSUQ9TjcocGspLHoyPU43KGp5KSxNbGU9TjcoaVYpLEVsZT1ONyhvViksJDY9THk7KG5WJiYkNihuZXcgblYobmV3IEFycmF5''@;'; put 'put ''QnVmZmVyKDEpKSkhPXNWfHxwayYmJDYobmV3IHBrKSE9YVZ8fGp5JiYkNihqeS5yZXNvbHZlKCkpIT1sVnx8aVYmJiQ2KG5ldyBpVikhPW9KfHxvViYmJDYobmV3IG9WKSE9SzYpJiYoJDY9ZnVuY3Rpb24oZCl7dmFyIGc9THkoZCksaD0iW29iamVjdCBPYmplY3RdIj09Zz9kLmNvbnN0cnVj''@;'; put 'put ''dG9yOnZvaWQgMCx2PWg/TjcoaCk6IiI7aWYodilzd2l0Y2godil7Y2FzZSBXNTpyZXR1cm4gc1Y7Y2FzZSBJRDpyZXR1cm4gYVY7Y2FzZSB6MjpyZXR1cm4gbFY7Y2FzZSBNbGU6cmV0dXJuIG9KO2Nhc2UgRWxlOnJldHVybiBLNn1yZXR1cm4gZ30pO2NvbnN0IEREPSQ2O3ZhciBTaz1PYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IExEPVdoLlVpbnQ4QXJyYXksdVY9ZnVuY3Rpb24gSWxlKGQpe3ZhciBnPW5ldyBkLmNvbnN0cnVjdG9yKGQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBMRChnKS5zZXQobmV3IExEKGQpKSxnfTt2YXIgTGxlPS9cdyokLzt2YXIgUTc9''@;'; put 'put ''RHk/RHkucHJvdG90eXBlOnZvaWQgMCx1Sj1RNz9RNy52YWx1ZU9mOnZvaWQgMDtjb25zdCBtSj1mdW5jdGlvbiBoVihkLGcsaCl7dmFyIHY9ZC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZyl7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuIHVWKGQpO2Nhc2UiW29iamVjdCBCb29sZWFu''@;'; put 'put ''XSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IHYoK2QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybiBmdW5jdGlvbiBEbGUoZCxnKXt2YXIgaD1nP3VWKGQuYnVmZmVyKTpkLmJ1ZmZlcjtyZXR1cm4gbmV3IGQuY29uc3RydWN0b3IoaCxkLmJ5dGVPZmZzZXQsZC5ieXRl''@;'; put 'put ''TGVuZ3RoKX0oZCxoKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4''@;'; put 'put ''QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZnVuY3Rpb24gZkooZCxnKXt2YXIgaD1nP3VWKGQuYnVmZmVyKTpkLmJ1ZmZlcjtyZXR1cm4gbmV3IGQuY29u''@;'; put 'put ''c3RydWN0b3IoaCxkLmJ5dGVPZmZzZXQsZC5sZW5ndGgpfShkLGgpO2Nhc2UiW29iamVjdCBNYXBdIjpjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyB2O2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyB2KGQpO2Nhc2UiW29iamVjdCBS''@;'; put 'put ''ZWdFeHBdIjpyZXR1cm4gZnVuY3Rpb24gWGQoZCl7dmFyIGc9bmV3IGQuY29uc3RydWN0b3IoZC5zb3VyY2UsTGxlLmV4ZWMoZCkpO3JldHVybiBnLmxhc3RJbmRleD1kLmxhc3RJbmRleCxnfShkKTtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuIGZ1bmN0aW9uIE9sZShkKXtyZXR1cm4g''@;'; put 'put ''dUo/T2JqZWN0KHVKLmNhbGwoZCkpOnt9fShkKX19O3ZhciBPRD1PYmplY3QuY3JlYXRlLFVsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt9cmV0dXJuIGZ1bmN0aW9uKGcpe2lmKCFPeShnKSlyZXR1cm57fTtpZihPRClyZXR1cm4gT0QoZyk7ZC5wcm90b3R5cGU9Zzt2YXIgaD1uZXcgZDty''@;'; put 'put ''ZXR1cm4gZC5wcm90b3R5cGU9dm9pZCAwLGh9fSgpO2NvbnN0IFFsZT1VbGU7dmFyIHZKPVEzJiZRMy5pc01hcDtjb25zdCAkbGU9dko/ak4odkopOmZ1bmN0aW9uIFhsZShkKXtyZXR1cm4gQWsoZCkmJiJbb2JqZWN0IE1hcF0iPT1ERChkKX07dmFyIHdKPVEzJiZRMy5pc1NldDtjb25zdCBu''@;'; put 'put ''c2U9d0o/ak4od0opOmZ1bmN0aW9uIHlKKGQpe3JldHVybiBBayhkKSYmIltvYmplY3QgU2V0XSI9PUREKGQpfTt2YXIgX0o9IltvYmplY3QgQXJndW1lbnRzXSIsZ1Y9IltvYmplY3QgRnVuY3Rpb25dIixtVj0iW29iamVjdCBPYmplY3RdIix5Mj17fTt5MltfSl09eTJbIltvYmplY3QgQXJy''@;'; put 'put ''YXldIl09eTJbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09eTJbIltvYmplY3QgRGF0YVZpZXddIl09eTJbIltvYmplY3QgQm9vbGVhbl0iXT15MlsiW29iamVjdCBEYXRlXSJdPXkyWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT15MlsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09eTJbIltvYmpl''@;'; put 'put ''Y3QgSW50OEFycmF5XSJdPXkyWyJbb2JqZWN0IEludDE2QXJyYXldIl09eTJbIltvYmplY3QgSW50MzJBcnJheV0iXT15MlsiW29iamVjdCBNYXBdIl09eTJbIltvYmplY3QgTnVtYmVyXSJdPXkyW21WXT15MlsiW29iamVjdCBSZWdFeHBdIl09eTJbIltvYmplY3QgU2V0XSJdPXkyWyJbb2Jq''@;'; put 'put ''ZWN0IFN0cmluZ10iXT15MlsiW29iamVjdCBTeW1ib2xdIl09eTJbIltvYmplY3QgVWludDhBcnJheV0iXT15MlsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT15MlsiW29iamVjdCBVaW50MTZBcnJheV0iXT15MlsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCx5MlsiW29iamVjdCBF''@;'; put 'put ''cnJvcl0iXT15MltnVl09eTJbIltvYmplY3QgV2Vha01hcF0iXT0hMTtjb25zdCBBVj1mdW5jdGlvbiBaeShkLGcsaCx2LHksQyl7dmFyIEksaj0xJmcsY2U9MiZnLF9lPTQmZztpZihoJiYoST15P2goZCx2LHksQyk6aChkKSksdm9pZCAwIT09SSlyZXR1cm4gSTtpZighT3koZCkpcmV0dXJu''@;'; put 'put ''IGQ7dmFyIFJlPUFEKGQpO2lmKFJlKXtpZihJPWZ1bmN0aW9uIGxKKGQpe3ZhciBnPWQubGVuZ3RoLGg9bmV3IGQuY29uc3RydWN0b3IoZyk7cmV0dXJuIGcmJiJzdHJpbmciPT10eXBlb2YgZFswXSYmU2suY2FsbChkLCJpbmRleCIpJiYoaC5pbmRleD1kLmluZGV4LGguaW5wdXQ9ZC5pbnB1''@;'; put 'put ''dCksaH0oZCksIWopcmV0dXJuIGZ1bmN0aW9uIEFsZShkLGcpe3ZhciBoPS0xLHY9ZC5sZW5ndGg7Zm9yKGd8fChnPUFycmF5KHYpKTsrK2g8djspZ1toXT1kW2hdO3JldHVybiBnfShkLEkpfWVsc2V7dmFyIE5lPUREKGQpLEtlPU5lPT1nVnx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25d''@;'; put 'put ''Ij09TmU7aWYoQlEoZCkpcmV0dXJuIGZ1bmN0aW9uIE1EKGQsZyl7aWYoZylyZXR1cm4gZC5zbGljZSgpO3ZhciBoPWQubGVuZ3RoLHY9bzE/bzEoaCk6bmV3IGQuY29uc3RydWN0b3IoaCk7cmV0dXJuIGQuY29weSh2KSx2fShkLGopO2lmKE5lPT1tVnx8TmU9PV9KfHxLZSYmIXkpe2lmKEk9''@;'; put 'put ''Y2V8fEtlP3t9OmZ1bmN0aW9uIGRWKGQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBkLmNvbnN0cnVjdG9yfHxrRChkKT97fTpRbGUoJE4oZCkpfShkKSwhailyZXR1cm4gY2U/ZnVuY3Rpb24gVEQoZCxnKXtyZXR1cm4gZ0QoZCxYNihkKSxnKX0oZCxmdW5jdGlvbiAkUShkLGcpe3JldHVy''@;'; put 'put ''biBkJiZnRChnLGNsKGcpLGQpfShJLGQpKTpmdW5jdGlvbiBZNyhkLGcpe3JldHVybiBnRChkLFZ5KGQpLGcpfShkLGZ1bmN0aW9uIGdsZShkLGcpe3JldHVybiBkJiZnRChnLFdOKGcpLGQpfShJLGQpKX1lbHNle2lmKCF5MltOZV0pcmV0dXJuIHk/ZDp7fTtJPW1KKGQsTmUsail9fUN8fChD''@;'; put 'put ''PW5ldyBCYWUpO3ZhciBodD1DLmdldChkKTtpZihodClyZXR1cm4gaHQ7Qy5zZXQoZCxJKSxuc2UoZCk/ZC5mb3JFYWNoKGZ1bmN0aW9uKGhuKXtJLmFkZChaeShobixnLGgsaG4sZCxDKSl9KTokbGUoZCkmJmQuZm9yRWFjaChmdW5jdGlvbihobixEbil7SS5zZXQoRG4sWnkoaG4sZyxoLERu''@;'; put 'put ''LGQsQykpfSk7dmFyICR0PVJlP3ZvaWQgMDooX2U/Y2U/Q2xlOl9sZTpjZT9jbDpXTikoZCk7cmV0dXJuIGZ1bmN0aW9uIE9OKGQsZyl7Zm9yKHZhciBoPS0xLHY9bnVsbD09ZD8wOmQubGVuZ3RoOysraDx2JiYhMSE9PWcoZFtoXSxoLGQpOyk7fSgkdHx8ZCxmdW5jdGlvbihobixEbil7JHQm''@;'; put 'put ''Jihobj1kW0RuPWhuXSksRVEoSSxEbixaeShobixnLGgsRG4sZCxDKSl9KSxJfTt2YXIgTEo9TCg5NDkzKTtsZXQgY2M9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2hvd25MaWJyYXJpZXM9NTAsdGhpcy5sb2FkTW9yZUNvdW50PTUwLHRoaXMuaXNNaWNyb3NvZnQ9ITEsdGhp''@;'; put 'put ''cy5pc01pY3Jvc29mdD10aGlzLmlzSUVvckVER0UoKSxjb25zb2xlLmxvZygiSXMgSUUgb3IgRWRnZT8iLHRoaXMuaXNNaWNyb3NvZnQpfWNvbnZlcnRKc0RhdGVUb1Nhc0RhdGUoaCx2PSJkYXlzIil7bGV0IHksQz0wO3k9aCBpbnN0YW5jZW9mIERhdGU/aDpuZXcgRGF0ZShoKSxDPW5ldyBE''@;'; put 'put ''YXRlKERhdGUuVVRDKHkuZ2V0RnVsbFllYXIoKSx5LmdldE1vbnRoKCkseS5nZXREYXRlKCkseS5nZXRIb3VycygpLHkuZ2V0TWludXRlcygpLHkuZ2V0U2Vjb25kcygpKSkudmFsdWVPZigpO2NvbnN0IGNlPUMrMzE1NjE5MmU1O3N3aXRjaCh2KXtjYXNlImRheXMiOntsZXQgX2U9Y2UvODY0''@;'; put 'put ''ZTU7cmV0dXJuIF9lPU1hdGguYWJzKF9lKSxfZT1NYXRoLmZsb29yKF9lKSxfZX1jYXNlInNlY29uZHMiOnJldHVybiBjZS8xZTN9cmV0dXJuIDB9Y29udmVydFNhc0RheXNUb0pzRGF0ZShoLHY9ImRheXMiKXtpZigibnVtYmVyIiE9dHlwZW9mIGgmJihoPXBhcnNlRmxvYXQoaCkpLCJzZWNv''@;'; put 'put ''bmRzIj09PXYpe2xldCBqPTFlMypoLTMxNTYxOTJlNTtyZXR1cm4gais9NjAqbmV3IERhdGUoaikuZ2V0VGltZXpvbmVPZmZzZXQoKSoxZTMsbmV3IERhdGUoail9cmV0dXJuIG5ldyBEYXRlKDg2NGU1KmgtMzE1NjE5MmU1KX10cmVlT25GaWx0ZXIoaCx2KXtsZXQgeT1oLnNlYXJjaFN0cmlu''@;'; put 'put ''Zz9oLnNlYXJjaFN0cmluZzoiIixDPXYuc3BsaXQoIi4iKVswXSxJPXYuc3BsaXQoIi4iKVsxXSxqPUMrIkFsbCI7aFtDXSYmKGhbal18fChoW2pdPXRoaXMuZGVlcENsb25lKGhbQ10pKSxoW0NdPXRoaXMuZGVlcENsb25lKGhbal0pLHkubGVuZ3RoPjAmJihoW0NdPWhbQ10uZmlsdGVyKEk/''@;'; put 'put ''Y2U9PmNlW0ldLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoeS50b0xvd2VyQ2FzZSgpKTpjZT0+Y2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh5LnRvTG93ZXJDYXNlKCkpKSkpfWxpYnJhcnlPbkZpbHRlcihoLHYseSl7di5sZW5ndGg+MD9oLmZvckVhY2goQz0+e0NbeV0udG9Mb3dlckNhc2Uo''@;'; put 'put ''KS5pbmNsdWRlcyh2LnRvTG93ZXJDYXNlKCkpPyhDLmhpZGRlbj0hMSxDLmluRm9yZWdyb3VuZD0hMCk6KEMuaGlkZGVuPSEwLEMuaW5Gb3JlZ3JvdW5kPSExKX0pOih0aGlzLnJlc2V0QXJyYXlGaWx0ZXIoaCksdGhpcy5kaXNwbGF5TGlicmFyaWVzKGgpKX1kaXNwbGF5TGlicmFyaWVzKGgs''@;'; put 'put ''dil7dj90aGlzLnNob3duTGlicmFyaWVzKz10aGlzLmxvYWRNb3JlQ291bnQ6KHRoaXMuc2hvd25MaWJyYXJpZXM9NTAsdGhpcy5yZXNldExpYnJhcnlGb3JlZ3JvdW5kKGgpKTtmb3IobGV0IHk9MDt5PGgubGVuZ3RoJiZ5IT09dGhpcy5zaG93bkxpYnJhcmllczt5KyspaFt5XS5pbkZvcmVn''@;'; put 'put ''cm91bmQ9ITB9cmVzZXRMaWJyYXJ5Rm9yZWdyb3VuZChoKXtmb3IobGV0IHY9MDt2PGgubGVuZ3RoO3YrKyloW3ZdLmluRm9yZWdyb3VuZD0hMX1tZXRhT2JqZWN0T25GaWx0ZXIoaCx2LHkpe3YubGVuZ3RoPjA/KHRoaXMucmVzZXRBcnJheUZpbHRlcihoKSxoLmZvckVhY2goQz0+e0NbeV0u''@;'; put 'put ''dG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2LnRvTG93ZXJDYXNlKCkpfHwoQy5oaWRkZW49ITApfSkpOnRoaXMucmVzZXRBcnJheUZpbHRlcihoKX1yZXNldEFycmF5RmlsdGVyKGgpe2guZm9yRWFjaCh2PT57di5oaWRkZW49ITEsdi5pbkZvcmVncm91bmQmJmRlbGV0ZSB2LmluRm9yZWdyb3Vu''@;'; put 'put ''ZH0pfWlzSUVvckVER0UoKXt2YXIgaD13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtyZXR1cm4gaC5pbmRleE9mKCJNU0lFICIpPjB8fChoLmluZGV4T2YoIlRyaWRlbnQvIik+MD8oaC5pbmRleE9mKCJydjoiKSwhMCk6aC5pbmRleE9mKCJFZGdlLyIpPjApfWNvbnZlcnRPYmplY3RzVG9B''@;'; put 'put ''cnJheShoLHY9ITEpe3JldHVybiB2JiYoaD10aGlzLmRlZXBDbG9uZShoKSksaC5tYXAoeT0+T2JqZWN0LmtleXMoeSkubWFwKEM9PnlbQ10pKX1hZGRMZWFkaW5nWmVybyhoKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGgmJihoPWgudG9TdHJpbmcoKSksaC5sZW5ndGg8Mj8iMCIraDpofWRl''@;'; put 'put ''bGV0ZUtleXNBbmRIYXNoKGgsdix5PSEwKXtjb25zdCBDPXk/dGhpcy5kZWVwQ2xvbmUoaCk6aDtmb3IobGV0IEkgb2YgdilkZWxldGUgQ1tJXTtyZXR1cm4gTEooSlNPTi5zdHJpbmdpZnkoQykpLnRvU3RyaW5nKCl9ZG93bmxvYWRUZXh0RmlsZShoLHYpe2NvbnN0IHk9ZG9jdW1lbnQuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgiYSIpO3kuc2V0QXR0cmlidXRlKCJocmVmIiwiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgsIitlbmNvZGVVUklDb21wb25lbnQodikpLHkuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsaCsiLnR4dCIpLHkuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9k''@;'; put 'put ''eS5hcHBlbmRDaGlsZCh5KSx5LmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh5KX1jb252ZXJ0QXJyYXlWYWx1ZXMoaCx2KXtpZihoLmxlbmd0aDwxKXJldHVybltdO3N3aXRjaCh2KXtjYXNlIm51bWJlciI6cmV0dXJuIGgubWFwKHk9PjEqeSk7Y2FzZSJzdHJpbmciOnJldHVy''@;'; put 'put ''biBoLnRvU3RyaW5nKCkuc3BsaXQoIiwiKX19ZGVib3VuY2VDYWxsKGgsdil7Y2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lb3V0KSx0aGlzLmRlYm91bmNlVGltZW91dD1zZXRUaW1lb3V0KHYsaCl9ZGVlcENsb25lKGgpe3JldHVybiBmdW5jdGlvbiBkc2UoZCl7cmV0dXJuIEFWKGQs''@;'; put 'put ''NSl9KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKSxzaD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMs''@;'; put 'put ''SSxqKXt0aGlzLmFwcFN0b3JlU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPXYsdGhpcy5zYXNTZXJ2aWNlPXksdGhpcy5sb2dnZXJTZXJ2aWNlPUMsdGhpcy5oZWxwZXJTZXJ2aWNlPUksdGhpcy5yb3V0ZXI9aix0aGlzLmlzQXBwQWN0aXZhdGVkPW5ldyBTbChudWxsKSx0aGlzLmlzQXBw''@;'; put 'put ''T3ZlckNhcGFjaXR5PW5ldyBTbCghMSksdGhpcy5jdXJyZW50VXNlckNhblJlZ2lzdGVyPW5ldyBTbCghMSksdGhpcy5saWNlbnNlRXhwaXJlc0luRGF5cz1uZXcgU2wobnVsbCksdGhpcy5pc0FwcERlbW89bmV3IFNsKCExKSx0aGlzLnN5c3NpdGU9bmV3IFNsKG51bGwpLHRoaXMucmVzdHJp''@;'; put 'put ''Y3RFZGl0UmVjb3JkPSExLHRoaXMuaG90X2xpY2Vuc2Vfa2V5PW5ldyBTbCh2b2lkIDApLHRoaXMuZGVtb0xpbWl0cz17fSx0aGlzLmxpY2Vuc2VLZXlEYXRhPW51bGwsdGhpcy5zdWJzY3JpYmUoKSx0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGNlPT57Y2UgaW5zdGFuY2VvZiBPNSYm''@;'; put 'put ''Ii9kZXBsb3kiPT09Y2UudXJsJiZ0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpfSl9c2FzU2VydmljZUluaXQoKXt0aGlzLnNhc1NlcnZpY2Uuc2FzU2VydmljZUluaXQoKX1zdWJzY3JpYmUoKXt0aGlzLnNhc1NlcnZpY2UubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5z''@;'; put 'put ''dWJzY3JpYmUoKCk9Pnt0aGlzLnN0YXJ0VXBEYXRhKCl9KSx0aGlzLnNhc1NlcnZpY2UuaW5jb3JyZWN0U2l0ZUlkRW1pdHRlci5zdWJzY3JpYmUoaD0+e251bGwhPT10aGlzLmlzQXBwQWN0aXZhdGVkLnZhbHVlJiYhdGhpcy5pc0FwcERlbW8udmFsdWUmJnRoaXMuZGVhY3RpdmF0ZUFwcChg''@;'; put 'put ''L2xpY2Vuc2luZy9rZXk/ZXJyb3I9bWlzc21hdGNoJm1pc3NtYXRjaElkPSR7aH1gKX0pLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0U2l0ZUlkRW1pdHRlci5zdWJzY3JpYmUoaD0+e3RoaXMucGF0Y2hTeXNzaXRlKGgpfSl9Z2V0SG90TGljZW5zZUtleSgpe3JldHVybiB0aGlzLmhvdF9saWNl''@;'; put 'put ''bnNlX2tleS52YWx1ZX1nZXRMaWNlbnNlS2V5RGF0YSgpe3JldHVybiB0aGlzLmxpY2Vuc2VLZXlEYXRhfWRlYWN0aXZhdGVBcHAoaCl7dGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKSxoJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGgpfXBhdGNoU3lzc2l0ZShoKXtsZXQgdj10aGlz''@;'; put 'put ''LnN5c3NpdGUuZ2V0VmFsdWUoKTt2JiYodi5pbmNsdWRlcyhoKXx8KHYucHVzaChoKSx0aGlzLnN5c3NpdGUubmV4dCh2KSkpfXN0YXJ0VXBEYXRhKCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgaD0hMTt5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVz''@;'; put 'put ''dCgicHVibGljL3N0YXJ0dXBzZXJ2aWNlIixudWxsKS50aGVuKHY9PnRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnN5c3NpdGUubmV4dChbdi5TWVNTSVRFXSk7bGV0IEksaix5PXYuc2FzZGF0YXNldHMsQz17fTtmb3IobGV0IE5lIG9mIHkpQ1tOZS5MSUJSRUZdfHwo''@;'; put 'put ''Q1tOZS5MSUJSRUZdPVtdKSxDW05lLkxJQlJFRl0ucHVzaChOZS5EU04pO2xldCBjZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KEMpKSxfZT1bXTtmb3IobGV0IE5lIG9mIE9iamVjdC5rZXlzKGNlKSlfZS5wdXNoKHtMSUJSQVJZSUQ6TmUsTElCUkFSWU5BTUU6TmUsdGFibGVzOmNlW05l''@;'; put 'put ''XX0pO2xldCBSZT1fZTtJPUMsaj1PYmplY3Qua2V5cyhDKSx2b2lkIDAhPT1JJiYocmkuZWRpdG9yLmxpYnNBbmRUYWJsZXM9SSkscmkuZWRpdG9yLnRyZWVOb2RlTGlicmFyaWVzPVJlLHJpLmVkaXRvci5saWJyYXJpZXM9aixyaS5lZGl0b3Iuc3RhcnR1cFNldD0hMCx0aGlzLnJlc3RyaWN0''@;'; put 'put ''RWRpdFJlY29yZD0iWUVTIj09PXYuZ2xvYnZhcnNbMF0uRENfUkVTVFJJQ1RfRURJVFJFQ09SRCx5aWVsZCB0aGlzLmxpY2Vuc2luZyh2Lmdsb2J2YXJzLHYuU1lTU0lURSl9KSkuY2F0Y2godj0+e2g9ITAsdGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKX0pLHRoaXMubG9nZ2VyU2Vydmlj''@;'; put 'put ''ZS5sb2coIkFjdGl2YXRlZDoiLHRoaXMuaXNBcHBBY3RpdmF0ZWQudmFsdWUpLGh8fCh0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMuaXNBcHBBY3RpdmF0ZWQudmFsdWU/dGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSYmdGhpcy5yb3V0ZXIu''@;'; put 'put ''bmF2aWdhdGVCeVVybCgiL2hvbWUiKTohdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKSYmIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygibGljZW5zaW5nIikmJnRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcva2V5P2Vycm9yPW1pc3NpbmciKSl9KX1saWNl''@;'; put 'put ''bnNpbmcoaCx2KXt2YXIgeTtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKCFofHwhaFswXSl7Y29uc3QgST0nRXJyb3IgZ2V0dGluZyAiR2xvYnZhcnMiIGZyb20gc3RhcnR1cHNlcnZpY2UgcmVzcG9uc2UuJztyZXR1cm4gY29uc29sZS5lcnJvcihJKSx0aGlz''@;'; put 'put ''LmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2xpY2Vuc2luZy9rZXk/ZXJyb3I9aW52YWxpZCZkZXRhaWxzPSR7YnRvYShJKX1gKX1sZXQgQz1oWzBdO2lmKEMuTElDRU5DRV9LRVkmJkMuQUNUSVZBVElPTl9LRVkmJm51bGwhPSFDLlJF''@;'; put 'put ''R0lTVEVSQ09VTlQmJm51bGwhPSFDLklTUkVHSVNURVJFRCl0aGlzLmxpY2VuY2VLZXk9Qy5MSUNFTkNFX0tFWSx0aGlzLmFjdGl2YXRpb25LZXk9Qy5BQ1RJVkFUSU9OX0tFWSx5aWVsZCB0aGlzLmRlY3J5cHRMaWNlbnNlS2V5KEMuTElDRU5DRV9LRVksQy5BQ1RJVkFUSU9OX0tFWSkudGhl''@;'; put 'put ''bihJPT57dGhpcy5hcHBsaWNhdGlvbkFjdGl2YXRpb24oSSxDLHYpfSxJPT57Y29uc3Qgaj1gRXJyb3IgZGVjcnlwdGluZyBsaWNlbnNlIGtleS4gJHtJfWA7Y29uc29sZS5lcnJvcihJKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9s''@;'; put 'put ''aWNlbnNpbmcva2V5P2Vycm9yPWludmFsaWQmZGV0YWlscz0ke2J0b2Eoail9YCl9KTtlbHNle3RoaXMuZGVtb0xpbWl0cz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSFUpLEJvZSk7Y29uc3QgST17ZGVtbzohMCxob3RfbGljZW5zZV9rZXk6bnVsbD09PSh5PXRoaXMuYXBwU3Rv''@;'; put 'put ''cmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCkpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmhvdExpY2VuY2VLZXksdXNlcnNfYWxsb3dlZDp0aGlzLmRlbW9MaW1pdHMudXNlcnNfYWxsb3dlZHx8MSx2YWxpZF91bnRpbDoiIixzaXRlX2lkOiIiLHNpdGVfaWRfbXVsdGlwbGU6W119O3Ro''@;'; put 'put ''aXMuYXBwbGljYXRpb25BY3RpdmF0aW9uKEksQyx2KX19KX1hcHBsaWNhdGlvbkFjdGl2YXRpb24oaCx2LHkpe2lmKGguc2l0ZV9pZF9tdWx0aXBsZT90aGlzLnNhc1NlcnZpY2Uuc2V0TGljZW5zZVNpdGVJZChoLnNpdGVfaWRfbXVsdGlwbGUpOmguc2l0ZV9pZCYmdGhpcy5zYXNTZXJ2aWNl''@;'; put 'put ''LnNldExpY2Vuc2VTaXRlSWQoaC5zaXRlX2lkKSwhaC5kZW1vKXtsZXQgY2U9ITEsX2U9ITE7aWYoKCFoLnNpdGVfaWR8fGguc2l0ZV9pZCE9PXkpJiYoY2U9ITApLCghaC5zaXRlX2lkX211bHRpcGxlfHwhaC5zaXRlX2lkX211bHRpcGxlLmluY2x1ZGVzKHkpKSYmKF9lPSEwKSxjZSYmX2Up''@;'; put 'put ''cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRoZSBrZXkgcHJvdmlkZWQgaXMgZm9yIGRpZmZlcmVudCBvcmdhbml6YXRpb24uIiksdGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKSx2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcva2V5P2Vycm9yPW1pc3NtYXRjaCIp''@;'; put 'put ''fXRoaXMuaG90X2xpY2Vuc2Vfa2V5Lm5leHQodm9pZCAwIT09aC5ob3RfbGljZW5zZV9rZXk/aC5ob3RfbGljZW5zZV9rZXk6dGhpcy5ob3RfbGljZW5zZV9rZXkudmFsdWUpO2xldCBDPWtsKGgudmFsaWRfdW50aWwsIllZWVktTU0tREQiKSxJPWtsKCksaj1DLmRpZmYoSSwiZGF5cyIpO3Jl''@;'; put 'put ''dHVybiBoLmRlbW8mJihPYmplY3Qua2V5cyh0aGlzLmRlbW9MaW1pdHMpLmxlbmd0aDwxJiYodGhpcy5kZW1vTGltaXRzPUhVKSwhMD09PXRoaXMuZGVtb0xpbWl0cy5leHBpcmF0aW9uX2RhdGVfdW5saW1pdGVkJiYoaj0xLzApLHZvaWQgMCE9PXRoaXMuZGVtb0xpbWl0cy51c2Vyc19hbGxv''@;'; put 'put ''d2VkJiYoaC51c2Vyc19hbGxvd2VkPXRoaXMuZGVtb0xpbWl0cy51c2Vyc19hbGxvd2VkPi0xP3RoaXMuZGVtb0xpbWl0cy51c2Vyc19hbGxvd2VkOmgudXNlcnNfYWxsb3dlZCkpLHRoaXMubGljZW5zZUtleURhdGE9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShoKSx3aW5kb3cuYXBw''@;'; put 'put ''aW5mbygpLGo8PTA/KGNvbnNvbGUuZXJyb3IoIkxpY2Vuc2Uga2V5IGhhcyBleHBpcmVkIiksdGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKSx2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcva2V5P2Vycm9yPWV4cGlyZWQiKSk6KHdpbmRvdy5saWNlbnNlRXhw''@;'; put 'put ''aXJlc0luPWosdGhpcy5saWNlbnNlRXhwaXJlc0luRGF5cy5uZXh0KGopLHRoaXMuaXNBcHBEZW1vLm5leHQoISFoLmRlbW8pLHYuUkVHSVNURVJDT1VOVD5oLnVzZXJzX2FsbG93ZWQ/KGNvbnNvbGUud2FybigiQXBwIGhhcyBtb3JlIHVzZXJzIHJlZ2lzdGVyZWQgdGhlbiBsaWNlbnNlZC4i''@;'; put 'put ''KSx0aGlzLmlzQXBwT3ZlckNhcGFjaXR5Lm5leHQoITApKTp2LlJFR0lTVEVSQ09VTlQ9PT1oLnVzZXJzX2FsbG93ZWQmJmNvbnNvbGUud2FybigiQXBwIGhhcyBoaXQgbGltaXQgb2YgdXNlcnMgcmVnaXN0ZXJlZC4iKSwxIT09di5JU1JFR0lTVEVSRUQ/di5SRUdJU1RFUkNPVU5UPGgudXNl''@;'; put 'put ''cnNfYWxsb3dlZD8oY29uc29sZS5sb2coIlVzZXIgY2FuIHJlZ2lzdGVyIiksdGhpcy5jdXJyZW50VXNlckNhblJlZ2lzdGVyLm5leHQoITApLHRoaXMuaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvbGljZW5zaW5nL3JlZ2lzdGVyIikp''@;'; put 'put ''Oih0aGlzLmN1cnJlbnRVc2VyQ2FuUmVnaXN0ZXIubmV4dCghMSksdGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKSx2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcvbGltaXQiKSk6dm9pZCB0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITApKX1kZWNyeXB0TGlj''@;'; put 'put ''ZW5zZUtleShoLHYpe3JldHVybiBuZXcgUHJvbWlzZSgoeSxDKT0+dG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKCF3aW5kb3cuY3J5cHRvfHwhd2luZG93LmNyeXB0by5zdWJ0bGUpdHJ5e2xldCBSZT1hdG9iKGguc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKSk7eShK''@;'; put 'put ''U09OLnBhcnNlKFJlKSl9Y2F0Y2goUmUpe0MoIkVycm9yIHBhcnNpbmcgaHR0cCBsaWNlbnNlIGtleSBkYXRhLiAiK1JlKX1sZXQgaixJPXlpZWxkIHRoaXMuYmFzZTY0VG9BcnJheUJ1ZmZlcihoKS5jYXRjaChSZT0+e0MoUmUpfSk7Y29uc3QgY2U9eWllbGQgdGhpcy5iYXNlNjRUb0FycmF5''@;'; put 'put ''QnVmZmVyKHYpLmNhdGNoKFJlPT57QyhSZSl9KTtpZighY2UpcmV0dXJuIHZvaWQgQygiTWlzc2luZyBhY3RpdmF0aW9uIGtleSIpO2xldCBfZTtqPWNlO3RyeXtfZT15aWVsZCB3aW5kb3cuY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInBrY3M4IixqLHtuYW1lOiJSU0EtT0FFUCIsaGFzaDoi''@;'; put 'put ''U0hBLTI1NiJ9LCEwLFsiZGVjcnlwdCJdKX1jYXRjaChSZSl7QygiVW5hYmxlIHRvIGltcG9ydCBkZWNyeXB0aW9uIGtleTogIitSZSl9aWYoX2UpaWYoSSl0cnl7d2luZG93LmNyeXB0by5zdWJ0bGUuZGVjcnlwdCh7bmFtZToiUlNBLU9BRVAiLGhhc2g6e25hbWU6IlNIQS0yNTYifX0sX2Us''@;'; put 'put ''SSkudGhlbihSZT0+e2xldCBOZT0obmV3IFJvZS5UZXh0RGVjb2RlcikuZGVjb2RlKFJlKTt0cnl7eShKU09OLnBhcnNlKE5lKSl9Y2F0Y2goS2Upe0MoIkVycm9yIHBhcnNpbmcgbGljZW5zZSBrZXkgZGF0YS4gIitLZSl9fSxSZT0+e0MoUmUpfSl9Y2F0Y2goUmUpe0MoUmUpfWVsc2UgQygi''@;'; put 'put ''TGljZW5zZSBrZXkgYnl0ZXMgbWlzc2luZyIpO2Vsc2UgQygiVW5hYmxlIHRvIGltcG9ydCBkZWNyeXB0aW9uIGtleSIpfSkpfWJhc2U2NFRvQXJyYXlCdWZmZXIoaCl7cmV0dXJuIG5ldyBQcm9taXNlKCh2LHkpPT50byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dihzTi5KKGgp''@;'; put 'put ''KX0pKX1hcnJheUJ1ZmZlclRvQmFzZTY0KGgpe3JldHVybiBuZXcgUHJvbWlzZSgodix5KT0+e3Yoc04uYyhoKSl9KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoUjcpLEVpKG11KSxFaShsMCksRWkoR2gpLEVpKGNjKSxFaShFbCkpfSxkLlx1''@;'; put 'put ''MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NsYXNzIEo1e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5mbj1nLHRoaXMuc3Vic2NyaXB0aW9ucz1ofXVuc3Vic2NyaWJlKCl7Y29uc3QgZz10aGlzLnN1YnNjcmlwdGlvbnMuaW5kZXhPZih0aGlzKTstMSE9''@;'; put 'put ''PWcmJnRoaXMuc3Vic2NyaXB0aW9ucy5zcGxpY2UoZywxKX19ZnVuY3Rpb24gWDUoZCl7cmV0dXJuIG51bGwhPWQmJiJvYmplY3QiPT10eXBlb2YgZCYmITA9PT1kWyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiXX1mdW5jdGlvbiBxNihkKXtyZXR1cm4gZnVuY3Rpb24gZyhoKXtyZXR1cm4g''@;'; put 'put ''MD09PWFyZ3VtZW50cy5sZW5ndGh8fFg1KGgpP2c6ZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEtkKGQpe3JldHVybiBmdW5jdGlvbiBnKGgsdil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZztjYXNlIDE6cmV0dXJuIFg1KGgpP2c6cTYoZnVuY3Rp''@;'; put 'put ''b24oeSl7cmV0dXJuIGQoaCx5KX0pO2RlZmF1bHQ6cmV0dXJuIFg1KGgpJiZYNSh2KT9nOlg1KGgpP3E2KGZ1bmN0aW9uKHkpe3JldHVybiBkKHksdil9KTpYNSh2KT9xNihmdW5jdGlvbih5KXtyZXR1cm4gZChoLHkpfSk6ZChoLHYpfX19Y29uc3QgSEQ9S2QoZnVuY3Rpb24oZyxoKXtyZXR1''@;'; put 'put ''cm4gaCBpbnN0YW5jZW9mIGd8fG51bGwhPWgmJihoLmNvbnN0cnVjdG9yPT09Z3x8Ik9iamVjdCI9PT1nLm5hbWUmJiJvYmplY3QiPT10eXBlb2YgaCl9KTtmdW5jdGlvbiBORChkLGcpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZyxkKX12YXIgd1Y9T2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZztjb25zdCBWRD1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09d1YuY2FsbChhcmd1bWVudHMpP2Z1bmN0aW9uKGcpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09d1YuY2FsbChnKX06ZnVuY3Rpb24oZyl7cmV0dXJuIE5E''@;'; put 'put ''KCJjYWxsZWUiLGcpfX0oKSx4az1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihnKXtyZXR1cm4gbnVsbCE9ZyYmZy5sZW5ndGg+PTAmJiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZyl9O2Z1bmN0aW9uIGJWKGQpe3JldHVybiJbb2JqZWN0IFN0cmlu''@;'; put 'put ''Z10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpfXZhciB2c2U9cTYoZnVuY3Rpb24oZyl7cmV0dXJuIG51bGwhPWcmJiJmdW5jdGlvbiI9PXR5cGVvZiBnWyJmYW50YXN5LWxhbmQvZW1wdHkiXT9nWyJmYW50YXN5LWxhbmQvZW1wdHkiXSgpOm51bGwhPWcmJm51bGwhPWcu''@;'; put 'put ''Y29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBnLmNvbnN0cnVjdG9yWyJmYW50YXN5LWxhbmQvZW1wdHkiXT9nLmNvbnN0cnVjdG9yWyJmYW50YXN5LWxhbmQvZW1wdHkiXSgpOm51bGwhPWcmJiJmdW5jdGlvbiI9PXR5cGVvZiBnLmVtcHR5P2cuZW1wdHkoKTpudWxsIT1nJiZudWxs''@;'; put 'put ''IT1nLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZy5jb25zdHJ1Y3Rvci5lbXB0eT9nLmNvbnN0cnVjdG9yLmVtcHR5KCk6eGsoZyk/W106YlYoZyk/IiI6ZnVuY3Rpb24gUkooZCl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh''@;'; put 'put ''bGwoZCl9KGcpP3t9OlZEKGcpP2Z1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKTpmdW5jdGlvbiBtc2UoZCl7dmFyIGc9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpO3JldHVybiJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI9PT1nfHwiW29iamVjdCBJbnQ4QXJyYXld''@;'; put 'put ''Ij09PWd8fCJbb2JqZWN0IFVpbnQ4QXJyYXldIj09PWd8fCJbb2JqZWN0IEludDE2QXJyYXldIj09PWd8fCJbb2JqZWN0IFVpbnQxNkFycmF5XSI9PT1nfHwiW29iamVjdCBJbnQzMkFycmF5XSI9PT1nfHwiW29iamVjdCBVaW50MzJBcnJheV0iPT09Z3x8IltvYmplY3QgRmxvYXQzMkFycmF5''@;'; put 'put ''XSI9PT1nfHwiW29iamVjdCBGbG9hdDY0QXJyYXldIj09PWd8fCJbb2JqZWN0IEJpZ0ludDY0QXJyYXldIj09PWd8fCJbb2JqZWN0IEJpZ1VpbnQ2NEFycmF5XSI9PT1nfShnKT9nLmNvbnN0cnVjdG9yLmZyb20oIiIpOnZvaWQgMH0pO2NvbnN0IEFzZT12c2U7ZnVuY3Rpb24gQkooZCl7Zm9y''@;'; put 'put ''KHZhciBoLGc9W107IShoPWQubmV4dCgpKS5kb25lOylnLnB1c2goaC52YWx1ZSk7cmV0dXJuIGd9ZnVuY3Rpb24geXNlKGQsZyxoKXtmb3IodmFyIHY9MCx5PWgubGVuZ3RoO3Y8eTspe2lmKGQoZyxoW3ZdKSlyZXR1cm4hMDt2Kz0xfXJldHVybiExfWNvbnN0IGpEPSJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uIGJzZShkLGcpe3JldHVybiBkPT09Zz8wIT09ZHx8MS9kPT0xL2c6ZCE9ZCYmZyE9Z307dmFyIF9zZT0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLF9WPVsiY29uc3RydWN0b3IiLCJ2YWx1''@;'; put 'put ''ZU9mIiwiaXNQcm90b3R5cGVPZiIsInRvU3RyaW5nIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd25Qcm9wZXJ0eSIsInRvTG9jYWxlU3RyaW5nIl0sUEo9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKCJsZW5ndGgiKX0oKSxGSj1mdW5jdGlv''@;'; put 'put ''bihnLGgpe2Zvcih2YXIgdj0wO3Y8Zy5sZW5ndGg7KXtpZihnW3ZdPT09aClyZXR1cm4hMDt2Kz0xfXJldHVybiExfTtjb25zdCBDVj1xNigiZnVuY3Rpb24iIT10eXBlb2YgT2JqZWN0LmtleXN8fFBKP2Z1bmN0aW9uKGcpe2lmKE9iamVjdChnKSE9PWcpcmV0dXJuW107dmFyIGgsdix5PVtd''@;'; put 'put ''LEM9UEomJlZEKGcpO2ZvcihoIGluIGcpTkQoaCxnKSYmKCFDfHwibGVuZ3RoIiE9PWgpJiYoeVt5Lmxlbmd0aF09aCk7aWYoX3NlKWZvcih2PV9WLmxlbmd0aC0xO3Y+PTA7KU5EKGg9X1Zbdl0sZykmJiFGSih5LGgpJiYoeVt5Lmxlbmd0aF09aCksdi09MTtyZXR1cm4geX06ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIE9iamVjdChnKSE9PWc/W106T2JqZWN0LmtleXMoZyl9KSxISj1xNihmdW5jdGlvbihnKXtyZXR1cm4gbnVsbD09PWc/Ik51bGwiOnZvaWQgMD09PWc/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGcpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24g''@;'; put 'put ''TkooZCxnLGgsdil7dmFyIHk9QkooZCk7ZnVuY3Rpb24gSShqLGNlKXtyZXR1cm4ga1YoaixjZSxoLnNsaWNlKCksdi5zbGljZSgpKX1yZXR1cm4heXNlKGZ1bmN0aW9uKGosY2Upe3JldHVybiF5c2UoSSxjZSxqKX0sQkooZykseSl9ZnVuY3Rpb24ga1YoZCxnLGgsdil7aWYoakQoZCxnKSly''@;'; put 'put ''ZXR1cm4hMDt2YXIgeT1ISihkKTtpZih5IT09SEooZykpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09dHlwZW9mIGdbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSlyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZFsiZmFu''@;'; put 'put ''dGFzeS1sYW5kL2VxdWFscyJdJiZkWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0oZykmJiJmdW5jdGlvbiI9PXR5cGVvZiBnWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmdbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShkKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZC5lcXVhbHN8fCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBnLmVxdWFscylyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZC5lcXVhbHMmJmQuZXF1YWxzKGcpJiYiZnVuY3Rpb24iPT10eXBlb2YgZy5lcXVhbHMmJmcuZXF1YWxzKGQpO3N3aXRjaCh5KXtjYXNlIkFyZ3VtZW50cyI6Y2FzZSJBcnJheSI6Y2FzZSJPYmplY3QiOmlmKCJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBkLmNvbnN0cnVjdG9yJiYiUHJvbWlzZSI9PT1mdW5jdGlvbiB3c2UoZCl7dmFyIGc9U3RyaW5nKGQpLm1hdGNoKC9eZnVuY3Rpb24gKFx3KikvKTtyZXR1cm4gbnVsbD09Zz8iIjpnWzFdfShkLmNvbnN0cnVjdG9yKSlyZXR1cm4gZD09PWc7YnJlYWs7Y2FzZSJCb29s''@;'; put 'put ''ZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmlmKHR5cGVvZiBkIT10eXBlb2YgZ3x8IWpEKGQudmFsdWVPZigpLGcudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkRhdGUiOmlmKCFqRChkLnZhbHVlT2YoKSxnLnZhbHVlT2YoKSkpcmV0dXJuITE7YnJlYWs7Y2FzZSJFcnJv''@;'; put 'put ''ciI6cmV0dXJuIGQubmFtZT09PWcubmFtZSYmZC5tZXNzYWdlPT09Zy5tZXNzYWdlO2Nhc2UiUmVnRXhwIjppZihkLnNvdXJjZSE9PWcuc291cmNlfHxkLmdsb2JhbCE9PWcuZ2xvYmFsfHxkLmlnbm9yZUNhc2UhPT1nLmlnbm9yZUNhc2V8fGQubXVsdGlsaW5lIT09Zy5tdWx0aWxpbmV8fGQu''@;'; put 'put ''c3RpY2t5IT09Zy5zdGlja3l8fGQudW5pY29kZSE9PWcudW5pY29kZSlyZXR1cm4hMX1mb3IodmFyIEM9aC5sZW5ndGgtMTtDPj0wOyl7aWYoaFtDXT09PWQpcmV0dXJuIHZbQ109PT1nO0MtPTF9c3dpdGNoKHkpe2Nhc2UiTWFwIjpyZXR1cm4gZC5zaXplPT09Zy5zaXplJiZOSihkLmVudHJp''@;'; put 'put ''ZXMoKSxnLmVudHJpZXMoKSxoLmNvbmNhdChbZF0pLHYuY29uY2F0KFtnXSkpO2Nhc2UiU2V0IjpyZXR1cm4gZC5zaXplPT09Zy5zaXplJiZOSihkLnZhbHVlcygpLGcudmFsdWVzKCksaC5jb25jYXQoW2RdKSx2LmNvbmNhdChbZ10pKTtjYXNlIkFyZ3VtZW50cyI6Y2FzZSJBcnJheSI6Y2Fz''@;'; put 'put ''ZSJPYmplY3QiOmNhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjpjYXNlIkRhdGUiOmNhc2UiRXJyb3IiOmNhc2UiUmVnRXhwIjpjYXNlIkludDhBcnJheSI6Y2FzZSJVaW50OEFycmF5IjpjYXNlIlVpbnQ4Q2xhbXBlZEFycmF5IjpjYXNlIkludDE2QXJyYXkiOmNhc2Ui''@;'; put 'put ''VWludDE2QXJyYXkiOmNhc2UiSW50MzJBcnJheSI6Y2FzZSJVaW50MzJBcnJheSI6Y2FzZSJGbG9hdDMyQXJyYXkiOmNhc2UiRmxvYXQ2NEFycmF5IjpjYXNlIkFycmF5QnVmZmVyIjpicmVhaztkZWZhdWx0OnJldHVybiExfXZhciBJPUNWKGQpO2lmKEkubGVuZ3RoIT09Q1YoZykubGVuZ3Ro''@;'; put 'put ''KXJldHVybiExO3ZhciBqPWguY29uY2F0KFtkXSksY2U9di5jb25jYXQoW2ddKTtmb3IoQz1JLmxlbmd0aC0xO0M+PTA7KXt2YXIgX2U9SVtDXTtpZighTkQoX2UsZyl8fCFrVihnW19lXSxkW19lXSxqLGNlKSlyZXR1cm4hMTtDLT0xfXJldHVybiEwfWNvbnN0IGpKPUtkKGZ1bmN0aW9uKGcs''@;'; put 'put ''aCl7cmV0dXJuIGtWKGcsaCxbXSxbXSl9KSxaSj1xNihmdW5jdGlvbihnKXtyZXR1cm4gbnVsbCE9ZyYmakooZyxBc2UoZykpfSk7ZnVuY3Rpb24gVGsoZCl7cmV0dXJuIG51bGw9PWR9ZnVuY3Rpb24gc3AoZCl7cmV0dXJuIFRrKGQpfHxaSihkKX1mdW5jdGlvbiBTVihkKXtyZXR1cm4gSEQo''@;'; put 'put ''U3RyaW5nLGQpfWZ1bmN0aW9uIFpEKGQpe3JldHVybiBIRChPYmplY3QsZCl9ZnVuY3Rpb24gR0ooZCl7cmV0dXJuIEhEKE1hcCxkKX1mdW5jdGlvbiBXSihkLGcpe3JldHVybiBkIT09Z31mdW5jdGlvbiAkZChkLGcpe3JldHVybiBKU09OLnN0cmluZ2lmeShkKT09PUpTT04uc3RyaW5naWZ5''@;'; put 'put ''KGcpfWZ1bmN0aW9uIFFKKGQpe2NvbnN0IGc9bmV3IE1hcDtmb3IoY29uc3RbaCx2XW9mIGQpR0oodik/Zy5zZXQoaCxRSih2KSk6Zy5zZXQoaCx2KTtyZXR1cm4gZ31mdW5jdGlvbiBJayhkKXtzd2l0Y2goITApe2Nhc2UgR0ooZCk6cmV0dXJuIFFKKGQpO2Nhc2UgWkQoZCkmJiFBcnJheS5p''@;'; put 'put ''c0FycmF5KGQpOnJldHVybiBKNyh7fSxkKTtkZWZhdWx0OnJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGQpKX19ZnVuY3Rpb24gSjcoLi4uZCl7Y29uc3QgZz17fTtyZXR1cm4gZC5tYXAoaD0+WkQoaCk/cHMoe30saCk6e30pLmZvckVhY2goaD0+e09iamVjdC5rZXlzKGgpLmZv''@;'; put 'put ''ckVhY2godj0+e2NvbnN0IHk9aFt2XTtnW3ZdPUFycmF5LmlzQXJyYXkoeSk/QXJyYXkuZnJvbSh5KTpaRCh5KT9KNyhnW3ZdfHx7fSx5KTp5fSl9KSxnfWZ1bmN0aW9uIFhKKGQ9d2luZG93KXtyZXR1cm4hVGsoZCl9bGV0IHpELEtKLERrLEVWO2Z1bmN0aW9uICRKKGQ9ITApe2lmKCFkfHwh''@;'; put 'put ''ekQpe2NvbnN0IGc9ZG9jdW1lbnQmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltuZy12ZXJzaW9uXSIpO3pEPWc/IiIrZy5nZXRBdHRyaWJ1dGUoIm5nLXZlcnNpb24iKTp2b2lkIDB9cmV0dXJuIHpEfWZ1bmN0aW9uIEJzZShkPSEwKXt2YXIgZyxoO3JldHVybiBkJiZ6RHx8KEtKPW51bGw9''@;'; put 'put ''PShoPW51bGw9PShnPW51bGw9PXdpbmRvdz92b2lkIDA6d2luZG93LmFuZ3VsYXIpP3ZvaWQgMDpnLnZlcnNpb24pP3ZvaWQgMDpoLmZ1bGwpLEtKfWZ1bmN0aW9uIHhWKGQ9ITApe3ZhciBnLGg7cmV0dXJuIGQmJkRrfHwoRGs9bnVsbCE9KGg9bnVsbD09KGc9bnVsbD09d2luZG93P3ZvaWQg''@;'; put 'put ''MDp3aW5kb3cuQ0RTKT92b2lkIDA6Zy5fcmVhY3QpJiZoLnZlcnNpb24/d2luZG93LkNEUy5fcmVhY3QudmVyc2lvbjpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1yZWFjdHJvb3RdLCBbZGF0YS1yZWFjdGlkXSIpPyJ1bmtub3duIHZlcnNpb24iOnZvaWQgMCksRGt9ZnVuY3Rpb24g''@;'; put 'put ''cUooZD0hMCl7aWYoIWR8fCFFVil7Y29uc3QgZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIqIik7bGV0IGg7Zm9yKGxldCB2PTA7djxnLmxlbmd0aDt2KyspaWYoZ1t2XS5fX3Z1ZV9fKXtoPWdbdl07YnJlYWt9RVY9aD8idW5rbm93biB2ZXJzaW9uIjp2b2lkIDB9cmV0dXJuIEVWfWZ1''@;'; put 'put ''bmN0aW9uIFg3KGQpe3JldHVybiBkLnJlcGxhY2UoL1tBLVpdL2csZz0+Ii0iK2cudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gclgoZCl7cmV0dXJuIGQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZC5zbGljZSgxKX1jb25zdCBjWD1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXtpZih0aGlzLnN1''@;'; put 'put ''cHBvcnRzPXtqczohMH0sIWRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiKXx8Im5vLWpzIj09PWRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiKSl7Y29uc3QgZD1YNyhPYmplY3Qua2V5cyh0aGlzLnN1cHBvcnRzKS5yZWR1Y2UoKGcsaCk9''@;'; put 'put ''PmAke2d9ICR7dGhpcy5zdXBwb3J0c1toXT9oOiJuby0iK2h9YCwiIikpLnRyaW0oKTtkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgiY2RzLXN1cHBvcnRzIixkKX19fTtmdW5jdGlvbiBXRChkLGcpe3N3aXRjaChkKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGcuYXBwbHko''@;'; put 'put ''dGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihoLHYpe3JldHVybiBnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihoLHYseSl7''@;'; put 'put ''cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGgsdix5LEMpe3JldHVybiBnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihoLHYseSxDLEkpe3JldHVybiBnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2Fz''@;'; put 'put ''ZSA2OnJldHVybiBmdW5jdGlvbihoLHYseSxDLEksail7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGgsdix5LEMsSSxqLGNlKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oaCx2LHks''@;'; put 'put ''QyxJLGosY2UsX2Upe3JldHVybiBnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihoLHYseSxDLEksaixjZSxfZSxSZSl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihoLHYseSxDLEksaixjZSxfZSxS''@;'; put 'put ''ZSxOZSl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gX2FyaXR5IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciBubyBncmVhdGVyIHRoYW4gdGVuIil9fWZ1bmN0aW9uIElWKGQsZyxoKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXtmb3IodmFyIHY9W10seT0wLEM9ZCxJPTA7STxnLmxlbmd0aHx8eTxhcmd1bWVudHMubGVuZ3RoOyl7dmFyIGo7STxnLmxlbmd0aCYmKCFYNShnW0ldKXx8eT49YXJndW1lbnRzLmxlbmd0aCk/aj1nW0ldOihqPWFyZ3VtZW50c1t5XSx5Kz0xKSx2W0ldPWosWDUoail8''@;'; put 'put ''fChDLT0xKSxJKz0xfXJldHVybiBDPD0wP2guYXBwbHkodGhpcyx2KTpXRChDLElWKGQsdixoKSl9fWNvbnN0IGU4PUtkKGZ1bmN0aW9uKGcsaCl7cmV0dXJuIDE9PT1nP3E2KGgpOldEKGcsSVYoZyxbXSxoKSl9KSxWc2U9TnVtYmVyLmlzSW50ZWdlcnx8ZnVuY3Rpb24oZyl7cmV0dXJuIGc8''@;'; put 'put ''PDA9PT1nfSxac2U9S2QoZnVuY3Rpb24oZyxoKXt2YXIgdj1nPDA/aC5sZW5ndGgrZzpnO3JldHVybiBiVihoKT9oLmNoYXJBdCh2KTpoW3ZdfSksR3NlPUtkKGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGcubWFwKGZ1bmN0aW9uKHYpe2Zvcih2YXIgSSx5PWgsQz0wO0M8di5sZW5ndGg7KXtpZihu''@;'; put 'put ''dWxsPT15KXJldHVybjt5PVZzZShJPXZbQ10pP1pzZShJLHkpOnlbSV0sQys9MX1yZXR1cm4geX0pfSksWXNlPUtkKGZ1bmN0aW9uKGcsaCl7cmV0dXJuIEdzZShbZ10saClbMF19KSxEVj1lOCgyLChkLGcpPT52b2lkIDAhPT1Zc2UoZCxnKSksaFg9RFYoeyJAQGZ1bmN0aW9uYWwvcGxhY2Vo''@;'; put 'put ''b2xkZXIiOiEwfSx3aW5kb3cpO2NsYXNzIEs3e3N0YXRpYyBsb2coLi4uZyl7T1YoKSYmTFYoKSYmY29uc29sZS5sb2coLi4uZyl9c3RhdGljIHdhcm4oLi4uZyl7T1YoKSYmTFYoKSYmY29uc29sZS53YXJuKC4uLmcpfXN0YXRpYyBlcnJvciguLi5nKXtPVigpJiZMVigpJiZjb25zb2xlLmVy''@;'; put 'put ''cm9yKC4uLmcpfX1mdW5jdGlvbiBMVigpe3JldHVybiFoWChbImphc21pbmUiXSl9ZnVuY3Rpb24gT1YoKXtyZXR1cm4hd2luZG93LkNEUy5lbnZpcm9ubWVudC5wcm9kdWN0aW9ufWZ1bmN0aW9uIGRYKCl7WEooKSYmKHdpbmRvdy5DRFM9d2luZG93LkNEU3x8e192ZXJzaW9uOltdLF9yZWFj''@;'; put 'put ''dDp7dmVyc2lvbjp2b2lkIDB9LF9zdXBwb3J0czpjWC5zdXBwb3J0cyxfaXNTdGF0ZVByb3hpZWQ6ITEsX3N0YXRlOntmb2N1c1RyYXBJdGVtczpbXSxsYXllckVsZW1lbnRzOltdLGkxOG5SZWdpc3RyeTp7fSxlbGVtZW50UmVnaXN0cnk6e30saWNvblJlZ2lzdHJ5Ont9LG1vdGlvblJlZ2lz''@;'; put 'put ''dHJ5Ont9fSxlbnZpcm9ubWVudDp7cHJvZHVjdGlvbjohMX0sZ2V0RGV0YWlsczpwWCxsb2dEZXRhaWxzOlFzZX0sZnVuY3Rpb24oKXt2YXIgZztjb25zdCBkPSI2LjEuMyI7d2luZG93LkNEUy5fdmVyc2lvbi5pbmRleE9mKGQpPDAmJih3aW5kb3cuQ0RTLl92ZXJzaW9uLnB1c2goZCksbnVs''@;'; put 'put ''bD09KGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpKXx8Zy5zZXRBdHRyaWJ1dGUoImNkcy12ZXJzaW9uIix3aW5kb3cuQ0RTLl92ZXJzaW9uLmpvaW4oIiAiKSkpLHdpbmRvdy5DRFMuX3ZlcnNpb24ubGVuZ3RoPjEmJks3Lndhcm4oIlJ1bm5pbmcgbW9yZSB0aGFuIG9uZSB2ZXJz''@;'; put 'put ''aW9uIG9mIENsYXJpdHkgY2FuIGNhdXNlIHVuZXhwZWN0ZWQgaXNzdWVzLiBQbGVhc2UgZW5zdXJlIG9ubHkgb25lIHZlcnNpb24gaXMgbG9hZGVkLiIpfSgpLHdpbmRvdy5DRFMuX2lzU3RhdGVQcm94aWVkfHwod2luZG93LkNEUy5faXNTdGF0ZVByb3hpZWQ9ITAsd2luZG93LkNEUy5fc3Rh''@;'; put 'put ''dGU9bmV3IFByb3h5KHdpbmRvdy5DRFMuX3N0YXRlLHtzZXQ6KGQsZyxoKT0+e2NvbnN0IHY9e2tleTpnLHByZXY6d2luZG93LkNEUy5fc3RhdGVbZ10sY3VycmVudDpofTtyZXR1cm4gZFtnXT1oLGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJDRFNfU1RBVEVfVVBE''@;'; put 'put ''QVRFIix7ZGV0YWlsOnZ9KSksITB9fSkpKX1mdW5jdGlvbiBwWCgpe3JldHVybnt2ZXJzaW9uczp3aW5kb3cuQ0RTLl92ZXJzaW9uLGVudmlyb25tZW50OndpbmRvdy5DRFMuZW52aXJvbm1lbnQsdXNlckFnZW50Om5hdmlnYXRvci51c2VyQWdlbnQsc3VwcG9ydHM6d2luZG93LkNEUy5fc3Vw''@;'; put 'put ''cG9ydHMsYW5ndWxhclZlcnNpb246JEooITEpLGFuZ3VsYXJKU1ZlcnNpb246QnNlKCExKSxyZWFjdFZlcnNpb246eFYoITEpLHZ1ZVZlcnNpb246cUooITEpLHN0YXRlOmdHKHBzKHt9LHdpbmRvdy5DRFMuX3N0YXRlKSx7aWNvblJlZ2lzdHJ5Ok9iamVjdC5rZXlzKHdpbmRvdy5DRFMuX3N0''@;'; put 'put ''YXRlLmljb25SZWdpc3RyeSksbW90aW9uUmVnaXN0cnk6T2JqZWN0LmtleXMod2luZG93LkNEUy5fc3RhdGUubW90aW9uUmVnaXN0cnkpLGZvY3VzVHJhcFJlZ2lzdHJ5Ok9iamVjdC5rZXlzKHdpbmRvdy5DRFMuX3N0YXRlLmZvY3VzVHJhcEl0ZW1zLm1hcChkPT5kLmZvY3VzVHJhcElkKSl9''@;'; put 'put ''KX19ZnVuY3Rpb24gUXNlKCl7SzcubG9nKEpTT04uc3RyaW5naWZ5KHBYKCksbnVsbCwyKSl9Y29uc3QgWUQ9bmV3IGNsYXNzIE9Ke2NvbnN0cnVjdG9yKCl7dGhpcy5zdWJzY3JpcHRpb25zPVtdfXN1YnNjcmliZShnKXtjb25zdCBoPW5ldyBKNShnLHRoaXMuc3Vic2NyaXB0aW9ucyk7cmV0''@;'; put 'put ''dXJuIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGgpLGh9ZW1pdChnKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLmZuKGcpKX10b0V2ZW50T2JzZXJ2YWJsZSgpe3JldHVybiB0aGlzfX07WUQubGlzdGVuZXI9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiQ0RTX1NUQVRFX1VQ''@;'; put 'put ''REFURSIsZD0+WUQuZW1pdChkLmRldGFpbCkpO2NsYXNzIEsxe3N0YXRpYyBnZXQgc3RhdGUoKXtyZXR1cm4gZFgoKSx3aW5kb3cuQ0RTLl9zdGF0ZX1zdGF0aWMgZ2V0VmFsdWUoZyl7cmV0dXJuIEsxLnN0YXRlW2ddfXN0YXRpYyBzZXRWYWx1ZShnLGgpe0sxLnN0YXRlW2ddPWh9c3RhdGlj''@;'; put 'put ''IGxvZygpe0s3LmxvZyhKU09OLnN0cmluZ2lmeShLMS5zdGF0ZSxudWxsLDIpKX19SzEuc3RhdGVVcGRhdGVzPVlELnRvRXZlbnRPYnNlcnZhYmxlKCk7Y29uc3QgSnNlPVsidW5rbm93biIse291dGxpbmU6JzxjaXJjbGUgY2xhc3M9ImNkcy1pbnRlcm5hbC1kb3QtMyIgY3g9IjMxLjEiIGN5''@;'; put 'put ''PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjbGFzcz0iY2RzLWludGVybmFsLWRvdC0yIiBjeD0iMTgiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjbGFzcz0iY2RzLWludGVybmFsLWRvdC0xIiBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIvPid9XTtjbGFzcyBkc3tzdGF0aWMgZ2V0IHJlZ2lz''@;'; put 'put ''dHJ5KCl7cmV0dXJuIHBzKHt1bmtub3duOkpzZVsxXX0sSzEuc3RhdGUuaWNvblJlZ2lzdHJ5KX1zdGF0aWMgYWRkSWNvbnMoLi4uZyl7SzEuc3RhdGUuaWNvblJlZ2lzdHJ5PXBzKHBzKHt9LEsxLnN0YXRlLmljb25SZWdpc3RyeSksT2JqZWN0LmZyb21FbnRyaWVzKGcuZmlsdGVyKChbaF0p''@;'; put 'put ''PT4hZHMucmVnaXN0cnlbaF0pKSl9c3RhdGljIGFkZEFsaWFzZXMoLi4uZyl7Y29uc3QgaD1nLmZpbHRlcigoW3ZdKT0+ZHMucmVnaXN0cnlbdl0pLmZsYXRNYXAoKFt2LHldKT0+eS5tYXAoQz0+W0MsZHMucmVnaXN0cnlbdl1dKSk7SzEuc3RhdGUuaWNvblJlZ2lzdHJ5PXBzKHBzKHt9LEsx''@;'; put 'put ''LnN0YXRlLmljb25SZWdpc3RyeSksT2JqZWN0LmZyb21FbnRyaWVzKGgpKX1zdGF0aWMgZ2V0SWNvbk5hbWVGcm9tU2hhcGUoZyl7cmV0dXJuIGdbMF19fWNvbnN0ICQ3PVsiYW5nbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcs''@;'; put 'put ''MCwwLDAsMi40NSwyLjM2TDE4LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nfV0sWWg9WyJleGNsYW1hdGlvbi1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAs''@;'; put 'put ''MSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPjxwYXRoIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEuMywwLDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgsMjAuMDdaIi8+PGNpcmNsZSBjeD0iMTcuOTUiIGN5PSIyMy4wMiIgcj0iMS41Ii8+Jyxz''@;'; put 'put ''b2xpZDonPHBhdGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTEuNDksNmExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjUuNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwy''@;'; put 'put ''NS41WiIvPid9XSxVaD1bImNoZWNrLWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+PHBhdGggZD0iTTE2LjM0LDIzLjc0bC01LTVhMSwx''@;'; put 'put ''LDAsMCwxLDEuNDEtMS40MWwzLjU5LDMuNTksNi43OC02Ljc4YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTMwLDE4QTEyLDEyLDAsMSwxLDE4LDYsMTIsMTIsMCwwLDEsMzAsMThabS00Ljc3LTIuMTZhMS40LDEuNCwwLDAsMC0yLTJsLTYuNzcsNi43N0wxMywx''@;'; put 'put ''Ny4xNmExLjQsMS40LDAsMCwwLTIsMmw1LjQ1LDUuNDVaIi8+J31dLGdYPVsiZWxsaXBzaXMtaG9yaXpvbnRhbCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iNC45IiBjeT0i''@;'; put 'put ''MTgiIHI9IjIuOSIvPicsb3V0bGluZUJhZGdlZDonPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45Ii8+J31dLHp5PVsid2luZG93LWNsb3NlIix7b3V0bGluZTon''@;'; put 'put ''PHBhdGggZD0iTTE5LjQxLDE4bDcuMjktNy4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDEwLjcxLDkuMjlhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxOCw5LjI5LDI1LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsNy4yOSw3LjI5YTEsMSwwLDAsMCwxLjQxLTEu''@;'; put 'put ''NDFaIi8+J31dLFJWPVsiZXZlbnQiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTYuMTcsMjUuODYsMTAuODEsMjAuNWExLDEsMCwwLDEsMS40MS0xLjQxTDE2LjE3LDIzbDguNjQtOC42NGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPjxwYXRoIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMu''@;'; put 'put ''NzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5''@;'; put 'put ''QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+PHJlY3QgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+JyxvdXRsaW5lQWxlcnRlZDonPHBhdGggZD0iTTEwLDEwYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAsLjIzLS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz48cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPjxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMw''@;'; put 'put ''LjE5VjE1LjM4WiIvPicsb3V0bGluZUJhZGdlZDonPHBhdGggZD0iTTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0x''@;'; put 'put ''VjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40''@;'; put 'put ''NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPjxwYXRoIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0y''@;'; put 'put ''NiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz48cGF0aCBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwwLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43''@;'; put 'put ''OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMjUuOTQsMTYuNThsLTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2''@;'; put 'put ''LDAsMSwxLDEuOTMsMS45M1oiLz4nLHNvbGlkQWxlcnRlZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0zMy42OCwxNS40SDI2LjNhMS4zNCwxLjM0LDAsMCwxLS4zNiwxLjE4bC05LjY3LDkuNjdM''@;'; put 'put ''MTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4LDctN2gtMUEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwz''@;'; put 'put ''MmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz4nLHNvbGlkQmFkZ2VkOic8cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIu''@;'; put 'put ''MlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wm0tNC4wNiwzLjA4LTkuNjcsOS42N0wx''@;'; put 'put ''MSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz4nfV0sdlg9WyJjYWxlbmRhciIse291dGxpbmU6JzxwYXRoIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCww''@;'; put 'put ''LDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPjxyZWN0IHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE0IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTkiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IiB4PSIxNCIgeT0iMjQi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAs''@;'; put 'put ''MTAsMTBaIi8+PHBhdGggZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPjxyZWN0IHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPicsb3V0bGluZUFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRW''@;'; put 'put ''OEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPjxyZWN0IHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE0IiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTki''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIy''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cG9seWdvbiBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPicsb3V0bGluZUJhZGdlZDonPHBh''@;'; put 'put ''dGggZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz48cmVjdCB4PSI4IiB5PSIx''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9''@;'; put 'put ''IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIg''@;'; put 'put ''eT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cGF0aCBkPSJN''@;'; put 'put ''MTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgx''@;'; put 'put ''Mi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYx''@;'; put 'put ''OWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAs''@;'; put 'put ''MS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+Jyxzb2xpZEFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAs''@;'; put 'put ''MSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJa''@;'; put 'put ''bTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCww''@;'; put 'put ''LDEwLDEwWiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0w''@;'; put 'put ''LTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz4nfV0sVUQ9WyJleWUtaGlkZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0yNS4xOSwyMC40QTYuNzgsNi43''@;'; put 'put ''OCwwLDAsMCwyNS42MiwxOGE2Ljg2LDYuODYsMCwwLDAtNi44Ni02Ljg2LDYuNzksNi43OSwwLDAsMC0yLjM3LjQzTDE4LDEzLjIzYTQuNzgsNC43OCwwLDAsMSwuNzQtLjA2QTQuODcsNC44NywwLDAsMSwyMy42MiwxOGE0Ljc5LDQuNzksMCwwLDEtLjA2Ljc0WiIvPjxwYXRoIGQ9Ik0zNC4y''@;'; put 'put ''OSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5''@;'; put 'put ''LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIvPjxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEu''@;'; put 'put ''NzUtMS41LTI2LTI2Wm05Ljc1LDkuNzUsNi42NSw2LjY1YTQuODEsNC44MSwwLDAsMS0yLjUuNzJBNC44Nyw0Ljg3LDAsMCwxLDEzLjksMTgsNC44MSw0LjgxLDAsMCwxLDE0LjYyLDE1LjUzWm0tMS40NS0xLjQ1YTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45''@;'; put 'put ''MSwwLDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOC4zNywxMS4xN0E2Ljc5LDYuNzksMCwwLDAsMTYsMTEuNmw4LjgsOC44QTYuNzgsNi43OCwwLDAsMCwyNS4yMywxOCw2''@;'; put 'put ''Ljg2LDYuODYsMCwwLDAsMTguMzcsMTEuMTdaIi8+PHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgs''@;'; put 'put ''OC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIi8+PHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEw''@;'; put 'put ''LDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTguMyw4LjNhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcu''@;'; put 'put ''MjksMCwwLDEsNi4xMi02LjNaIi8+J31dLCRzZT1bImV5ZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43''@;'; put 'put ''MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIvPjxwYXRoIGQ9Ik0xOC4wOSwxMS4xN0E2''@;'; put 'put ''Ljg2LDYuODYsMCwxLDAsMjUsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjA5LDExLjE3Wm0wLDExLjcyQTQuODYsNC44NiwwLDEsMSwyMywxOCw0Ljg3LDQuODcsMCwwLDEsMTguMDksMjIuODlaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44''@;'; put 'put ''Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEy''@;'; put 'put ''LjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2LjQzLDE3LjgsMjYuNDNaIi8+PGNpcmNsZSBjeD0iMTguMDkiIGN5PSIxOC4wMyIgcj0iNi44NiIvPid9XSxxc2U9WyJlbGxpcHNpcy12ZXJ0aWNhbCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiLz48''@;'; put 'put ''Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIvPicsb3V0bGluZUJhZGdlZDonPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4''@;'; put 'put ''IiBjeT0iMzEuMSIgcj0iMi45Ii8+J31dLExrPVsidmlldy1jb2x1bW5zIix7b3V0bGluZTonPHBhdGggZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFptMTAsMEgxNVY3aDhaIi8+''@;'; put 'put ''J31dLGUyZT1bImFycm93Iix7b3V0bGluZTonPHBhdGggZD0iTTI3LjY2LDE1LjYxLDE4LDYsOC4zNCwxNS42MUExLDEsMCwxLDAsOS43NSwxN0wxNyw5LjgxVjI4Ljk0YTEsMSwwLDEsMCwyLDBWOS44MUwyNi4yNSwxN2ExLDEsMCwwLDAsMS40MS0xLjQyWiIvPid9XSxBWD1bInRpbWVzIix7''@;'; put 'put ''b3V0bGluZTonPHBhdGggZD0iTTE5LjQxLDE4bDguMjktOC4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCww''@;'; put 'put ''LDEuNDEtMS40MVoiLz4nfV0sSkQ9WyJzdGVwLWZvcndhcmQtMiIse291dGxpbmU6JzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcuMTIsMjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRoMEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjks''@;'; put 'put ''MCwwLDAsNy4wOCw2LjUyWiIvPjxwYXRoIGQ9Ik0yNi40OSw1YTEuNywxLjcsMCwwLDAtMS43LDEuN1YyOS4zYTEuNywxLjcsMCwwLDAsMy40LDBWNi43QTEuNywxLjcsMCwwLDAsMjYuNDksNVoiLz4nfV0seVg9WyJhbmdsZS1kb3VibGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjksMTkuNDFh''@;'; put 'put ''MSwxLDAsMCwxLS43MS0uMjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+PHBhdGggZD0iTTI5LDMwLjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDE5LjgzLDcuNzEsMzAuMTJhMSwxLDAsMCwxLTEu''@;'; put 'put ''NDEtMS40MUwxOCwxNywyOS43MSwyOC43MUExLDEsMCwwLDEsMjksMzAuNDFaIi8+J31dLHQyZT1bImZpbHRlci1ncmlkLWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSww''@;'; put 'put ''LDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPjxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2''@;'; put 'put ''LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz48cGF0''@;'; put 'put ''aCBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4x''@;'; put 'put ''NS0uMzVWMTFaIi8+J31dLG4yZT1bImZpbHRlci1ncmlkIix7b3V0bGluZTonPHBhdGggZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEu''@;'; put 'put ''NDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEu''@;'; put 'put ''NS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPid9XSx3WD1bImluZm8tY2lyY2xlIix7b3V0bGluZTonPGNpcmNsZSBjeD0iMTcuOTMiIGN5PSIx''@;'; put 'put ''MS45IiByPSIxLjQiLz48cGF0aCBkPSJNMjEsMjNIMTlWMTVIMTZhMSwxLDAsMCwwLDAsMmgxdjZIMTVhMSwxLDAsMSwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+PHBhdGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwx''@;'; put 'put ''OCwxMCwxMCwwLDAsMSwxOCwyOFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMiw1LjE1YTIsMiwwLDEsMSwyLDJBMiwyLDAsMCwxLDE1LjksMTEuMTVaTTIzLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMSwxLDAtMmgy''@;'; put 'put ''VjE3SDE2YTEsMSwwLDAsMSwwLTJoNHY4aDJBMSwxLDAsMCwxLDIzLDI0WiIvPid9XSxpMmU9WyJleGNsYW1hdGlvbi10cmlhbmdsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2QTEuMywxLjMsMCww''@;'; put 'put ''LDAsMTgsMjEuMzJaIi8+PGNpcmNsZSBjeD0iMTcuOTUiIGN5PSIyNC4yNyIgcj0iMS41Ii8+PHBhdGggZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1ptLTEuNzgs''@;'; put 'put ''MS45NGExLDEsMCwwLDEtLjg2LjQ5SDguMjFhMSwxLDAsMCwxLS44OC0xLjQ4TDE3LjA3LDguNTVhMSwxLDAsMCwxLDEuNzYsMGw5Ljc0LDE3Ljk0QTEsMSwwLDAsMSwyOC41NSwyNy40OFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3''@;'; put 'put ''LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWk0xNi40NiwxMi43NGExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjYuMjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcyLDEuNzIsMCww''@;'; put 'put ''LDEsMTgsMjYuMjVaIi8+J31dLG8yZT1bImNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCwzNEEx''@;'; put 'put ''NiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFoiLz4nfV0sYTJlPVsiZG90LWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwxMWE3LDcsMCwxLDEtNyw3LDcsNywwLDAsMSw3LTciLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgs''@;'; put 'put ''MzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz4nfV0sT2s9WyJlcnJvci1zdGFuZGFyZCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz48cGF0aCBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwx''@;'; put 'put ''LDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+PHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwx''@;'; put 'put ''NiwxNkExNiwxNiwwLDAsMCwxOCwyLjFaTTE2LjYsOC44YTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjguNmExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEuOCwwLDAsMSwxOCwyOC42WiIvPid9XSxsMmU9WyJzdWNjZXNzLXN0YW5kYXJkIix7b3V0''@;'; put 'put ''bGluZTonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz48cGF0aCBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgs''@;'; put 'put ''MTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhM''@;'; put 'put ''MjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+J31dO2NsYXNzIF9Ye2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5jb21wYXJlPWcsdGhpcy5rZXlTZWxlY3Rvcj1ofWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IENYKGcsdGhpcy5jb21wYXJlLHRoaXMua2V5U2VsZWN0b3Ip''@;'; put 'put ''KX19Y2xhc3MgQ1ggZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcihnKSx0aGlzLmtleVNlbGVjdG9yPXYsdGhpcy5oYXNLZXk9ITEsImZ1bmN0aW9uIj09dHlwZW9mIGgmJih0aGlzLmNvbXBhcmU9aCl9Y29tcGFyZShnLGgpe3JldHVybiBnPT09aH1fbmV4dChnKXtsZXQgaDt0''@;'; put 'put ''cnl7Y29uc3R7a2V5U2VsZWN0b3I6eX09dGhpcztoPXk/eShnKTpnfWNhdGNoKHkpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHkpfWxldCB2PSExO2lmKHRoaXMuaGFzS2V5KXRyeXtjb25zdHtjb21wYXJlOnl9PXRoaXM7dj15KHRoaXMua2V5LGgpfWNhdGNoKHkpe3JldHVybiB0''@;'; put 'put ''aGlzLmRlc3RpbmF0aW9uLmVycm9yKHkpfWVsc2UgdGhpcy5oYXNLZXk9ITA7dnx8KHRoaXMua2V5PWgsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpKX19Y2xhc3MgTVggZXh0ZW5kcyBUZXtjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKCl9c2NoZWR1bGUoZyxoPTApe3JldHVybiB0aGlzfX1jbGFz''@;'; put 'put ''cyBFWCBleHRlbmRzIE1Ye2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZyxoKSx0aGlzLnNjaGVkdWxlcj1nLHRoaXMud29yaz1oLHRoaXMucGVuZGluZz0hMX1zY2hlZHVsZShnLGg9MCl7aWYodGhpcy5jbG9zZWQpcmV0dXJuIHRoaXM7dGhpcy5zdGF0ZT1nO2NvbnN0IHY9dGhpcy5pZCx5PXRo''@;'; put 'put ''aXMuc2NoZWR1bGVyO3JldHVybiBudWxsIT12JiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKHksdixoKSksdGhpcy5wZW5kaW5nPSEwLHRoaXMuZGVsYXk9aCx0aGlzLmlkPXRoaXMuaWR8fHRoaXMucmVxdWVzdEFzeW5jSWQoeSx0aGlzLmlkLGgpLHRoaXN9cmVxdWVzdEFzeW5jSWQo''@;'; put 'put ''ZyxoLHY9MCl7cmV0dXJuIHNldEludGVydmFsKGcuZmx1c2guYmluZChnLHRoaXMpLHYpfXJlY3ljbGVBc3luY0lkKGcsaCx2PTApe2lmKG51bGwhPT12JiZ0aGlzLmRlbGF5PT09diYmITE9PT10aGlzLnBlbmRpbmcpcmV0dXJuIGg7Y2xlYXJJbnRlcnZhbChoKX1leGVjdXRlKGcsaCl7aWYo''@;'; put 'put ''dGhpcy5jbG9zZWQpcmV0dXJuIG5ldyBFcnJvcigiZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbiIpO3RoaXMucGVuZGluZz0hMTtjb25zdCB2PXRoaXMuX2V4ZWN1dGUoZyxoKTtpZih2KXJldHVybiB2OyExPT09dGhpcy5wZW5kaW5nJiZudWxsIT10aGlzLmlkJiYodGhpcy5pZD10aGlz''@;'; put 'put ''LnJlY3ljbGVBc3luY0lkKHRoaXMuc2NoZWR1bGVyLHRoaXMuaWQsbnVsbCkpfV9leGVjdXRlKGcsaCl7bGV0IHksdj0hMTt0cnl7dGhpcy53b3JrKGcpfWNhdGNoKEMpe3Y9ITAseT0hIUMmJkN8fG5ldyBFcnJvcihDKX1pZih2KXJldHVybiB0aGlzLnVuc3Vic2NyaWJlKCkseX1fdW5zdWJz''@;'; put 'put ''Y3JpYmUoKXtjb25zdCBnPXRoaXMuaWQsaD10aGlzLnNjaGVkdWxlcix2PWguYWN0aW9ucyx5PXYuaW5kZXhPZih0aGlzKTt0aGlzLndvcms9bnVsbCx0aGlzLnN0YXRlPW51bGwsdGhpcy5wZW5kaW5nPSExLHRoaXMuc2NoZWR1bGVyPW51bGwsLTEhPT15JiZ2LnNwbGljZSh5LDEpLG51bGwh''@;'; put 'put ''PWcmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQoaCxnLG51bGwpKSx0aGlzLmRlbGF5PW51bGx9fWxldCBxNz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdj1kLm5vdyl7dGhpcy5TY2hlZHVsZXJBY3Rpb249aCx0aGlzLm5vdz12fXNjaGVkdWxlKGgsdj0wLHkpe3JldHVybiBu''@;'; put 'put ''ZXcgdGhpcy5TY2hlZHVsZXJBY3Rpb24odGhpcyxoKS5zY2hlZHVsZSh5LHYpfX1yZXR1cm4gZC5ub3c9KCk9PkRhdGUubm93KCksZH0pKCk7Y2xhc3MgdDggZXh0ZW5kcyBxN3tjb25zdHJ1Y3RvcihnLGg9cTcubm93KXtzdXBlcihnLCgpPT50OC5kZWxlZ2F0ZSYmdDguZGVsZWdhdGUhPT10''@;'; put 'put ''aGlzP3Q4LmRlbGVnYXRlLm5vdygpOmgoKSksdGhpcy5hY3Rpb25zPVtdLHRoaXMuYWN0aXZlPSExLHRoaXMuc2NoZWR1bGVkPXZvaWQgMH1zY2hlZHVsZShnLGg9MCx2KXtyZXR1cm4gdDguZGVsZWdhdGUmJnQ4LmRlbGVnYXRlIT09dGhpcz90OC5kZWxlZ2F0ZS5zY2hlZHVsZShnLGgsdik6''@;'; put 'put ''c3VwZXIuc2NoZWR1bGUoZyxoLHYpfWZsdXNoKGcpe2NvbnN0e2FjdGlvbnM6aH09dGhpcztpZih0aGlzLmFjdGl2ZSlyZXR1cm4gdm9pZCBoLnB1c2goZyk7bGV0IHY7dGhpcy5hY3RpdmU9ITA7ZG97aWYodj1nLmV4ZWN1dGUoZy5zdGF0ZSxnLmRlbGF5KSlicmVha313aGlsZShnPWguc2hp''@;'; put 'put ''ZnQoKSk7aWYodGhpcy5hY3RpdmU9ITEsdil7Zm9yKDtnPWguc2hpZnQoKTspZy51bnN1YnNjcmliZSgpO3Rocm93IHZ9fX1jb25zdCBGVj1uZXcgdDgoRVgpO2Z1bmN0aW9uIFJrKGQsZz1GVil7cmV0dXJuIGg9PmgubGlmdChuZXcgdTJlKGQsZykpfWNsYXNzIHUyZXtjb25zdHJ1Y3Rvcihn''@;'; put 'put ''LGgpe3RoaXMuZHVlVGltZT1nLHRoaXMuc2NoZWR1bGVyPWh9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgYzJlKGcsdGhpcy5kdWVUaW1lLHRoaXMuc2NoZWR1bGVyKSl9fWNsYXNzIGMyZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKGcpLHRoaXMuZHVlVGlt''@;'; put 'put ''ZT1oLHRoaXMuc2NoZWR1bGVyPXYsdGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb249bnVsbCx0aGlzLmxhc3RWYWx1ZT1udWxsLHRoaXMuaGFzVmFsdWU9ITF9X25leHQoZyl7dGhpcy5jbGVhckRlYm91bmNlKCksdGhpcy5sYXN0VmFsdWU9Zyx0aGlzLmhhc1ZhbHVlPSEwLHRoaXMuYWRkKHRo''@;'; put 'put ''aXMuZGVib3VuY2VkU3Vic2NyaXB0aW9uPXRoaXMuc2NoZWR1bGVyLnNjaGVkdWxlKGYyZSx0aGlzLmR1ZVRpbWUsdGhpcykpfV9jb21wbGV0ZSgpe3RoaXMuZGVib3VuY2VkTmV4dCgpLHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1kZWJvdW5jZWROZXh0KCl7aWYodGhpcy5jbGVhckRl''@;'; put 'put ''Ym91bmNlKCksdGhpcy5oYXNWYWx1ZSl7Y29uc3R7bGFzdFZhbHVlOmd9PXRoaXM7dGhpcy5sYXN0VmFsdWU9bnVsbCx0aGlzLmhhc1ZhbHVlPSExLHRoaXMuZGVzdGluYXRpb24ubmV4dChnKX19Y2xlYXJEZWJvdW5jZSgpe2NvbnN0IGc9dGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb247bnVs''@;'; put 'put ''bCE9PWcmJih0aGlzLnJlbW92ZShnKSxnLnVuc3Vic2NyaWJlKCksdGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb249bnVsbCl9fWZ1bmN0aW9uIGYyZShkKXtkLmRlYm91bmNlZE5leHQoKX1mdW5jdGlvbiBuOChkKXtyZXR1cm4gZz0+Zy5saWZ0KG5ldyB4WChkKSl9Y2xhc3MgeFh7Y29uc3Ry''@;'; put 'put ''dWN0b3IoZyl7dGhpcy5ub3RpZmllcj1nfWNhbGwoZyxoKXtjb25zdCB2PW5ldyBUWChnKSx5PWVyKHRoaXMubm90aWZpZXIsbmV3IGJuKHYpKTtyZXR1cm4geSYmIXYuc2VlblZhbHVlPyh2LmFkZCh5KSxoLnN1YnNjcmliZSh2KSk6dn19Y2xhc3MgVFggZXh0ZW5kcyBObntjb25zdHJ1Y3Rv''@;'; put 'put ''cihnKXtzdXBlcihnKSx0aGlzLnNlZW5WYWx1ZT0hMX1ub3RpZnlOZXh0KCl7dGhpcy5zZWVuVmFsdWU9ITAsdGhpcy5jb21wbGV0ZSgpfW5vdGlmeUNvbXBsZXRlKCl7fX1mdW5jdGlvbiByOChkLGcsaCx2KXtyZXR1cm4gc2UoaCkmJih2PWgsaD12b2lkIDApLHY/cjgoZCxnLGgpLnBpcGUo''@;'; put 'put ''cHQoeT0+QWUoeSk/diguLi55KTp2KHkpKSk6bmV3IEYoeT0+e0lYKGQsZyxmdW5jdGlvbiBDKEkpe3kubmV4dChhcmd1bWVudHMubGVuZ3RoPjE/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTpJKX0seSxoKX0pfWZ1bmN0aW9uIElYKGQsZyxoLHYseSl7bGV0IEM7aWYo''@;'; put 'put ''ZnVuY3Rpb24gZDJlKGQpe3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5hZGRFdmVudExpc3RlbmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5yZW1vdmVFdmVudExpc3RlbmVyfShkKSl7Y29uc3QgST1kO2QuYWRkRXZlbnRMaXN0ZW5lcihnLGgseSksQz0oKT0+SS5yZW1vdmVFdmVu''@;'; put 'put ''dExpc3RlbmVyKGcsaCx5KX1lbHNlIGlmKGZ1bmN0aW9uIERYKGQpe3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5vbiYmImZ1bmN0aW9uIj09dHlwZW9mIGQub2ZmfShkKSl7Y29uc3QgST1kO2Qub24oZyxoKSxDPSgpPT5JLm9mZihnLGgpfWVsc2UgaWYoZnVuY3Rpb24gaDJlKGQp''@;'; put 'put ''e3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5hZGRMaXN0ZW5lciYmImZ1bmN0aW9uIj09dHlwZW9mIGQucmVtb3ZlTGlzdGVuZXJ9KGQpKXtjb25zdCBJPWQ7ZC5hZGRMaXN0ZW5lcihnLGgpLEM9KCk9PkkucmVtb3ZlTGlzdGVuZXIoZyxoKX1lbHNle2lmKCFkfHwhZC5sZW5ndGgp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBldmVudCB0YXJnZXQiKTtmb3IobGV0IEk9MCxqPWQubGVuZ3RoO0k8ajtJKyspSVgoZFtJXSxnLGgsdix5KX12LmFkZChDKX1mdW5jdGlvbiBMWChkKXtyZXR1cm4hIWQmJihkIGluc3RhbmNlb2YgRnx8ImZ1bmN0aW9uIj09dHlwZW9mIGQu''@;'; put 'put ''bGlmdCYmImZ1bmN0aW9uIj09dHlwZW9mIGQuc3Vic2NyaWJlKX1jb25zdCB2MmU9bmV3IGNsYXNzIGcyZSBleHRlbmRzIHQ4e30oY2xhc3MgcDJlIGV4dGVuZHMgRVh7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnLGgpLHRoaXMuc2NoZWR1bGVyPWcsdGhpcy53b3JrPWh9c2NoZWR1bGUoZyxo''@;'; put 'put ''PTApe3JldHVybiBoPjA/c3VwZXIuc2NoZWR1bGUoZyxoKToodGhpcy5kZWxheT1oLHRoaXMuc3RhdGU9Zyx0aGlzLnNjaGVkdWxlci5mbHVzaCh0aGlzKSx0aGlzKX1leGVjdXRlKGcsaCl7cmV0dXJuIGg+MHx8dGhpcy5jbG9zZWQ/c3VwZXIuZXhlY3V0ZShnLGgpOnRoaXMuX2V4ZWN1dGUo''@;'; put 'put ''ZyxoKX1yZXF1ZXN0QXN5bmNJZChnLGgsdj0wKXtyZXR1cm4gbnVsbCE9PXYmJnY+MHx8bnVsbD09PXYmJnRoaXMuZGVsYXk+MD9zdXBlci5yZXF1ZXN0QXN5bmNJZChnLGgsdik6Zy5mbHVzaCh0aGlzKX19KTtjbGFzcyBJY3tjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5raW5kPWcsdGhpcy52''@;'; put 'put ''YWx1ZT1oLHRoaXMuZXJyb3I9dix0aGlzLmhhc1ZhbHVlPSJOIj09PWd9b2JzZXJ2ZShnKXtzd2l0Y2godGhpcy5raW5kKXtjYXNlIk4iOnJldHVybiBnLm5leHQmJmcubmV4dCh0aGlzLnZhbHVlKTtjYXNlIkUiOnJldHVybiBnLmVycm9yJiZnLmVycm9yKHRoaXMuZXJyb3IpO2Nhc2UiQyI6''@;'; put 'put ''cmV0dXJuIGcuY29tcGxldGUmJmcuY29tcGxldGUoKX19ZG8oZyxoLHYpe3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UiTiI6cmV0dXJuIGcmJmcodGhpcy52YWx1ZSk7Y2FzZSJFIjpyZXR1cm4gaCYmaCh0aGlzLmVycm9yKTtjYXNlIkMiOnJldHVybiB2JiZ2KCl9fWFjY2VwdChnLGgsdil7cmV0''@;'; put 'put ''dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBnLm5leHQ/dGhpcy5vYnNlcnZlKGcpOnRoaXMuZG8oZyxoLHYpfXRvT2JzZXJ2YWJsZSgpe3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UiTiI6cmV0dXJuIFYwKHRoaXMudmFsdWUpO2Nhc2UiRSI6cmV0dXJuIHJwKHRoaXMuZXJyb3IpO2Nhc2UiQyI6''@;'; put 'put ''cmV0dXJuIENJKCl9dGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIG5vdGlmaWNhdGlvbiBraW5kIHZhbHVlIil9c3RhdGljIGNyZWF0ZU5leHQoZyl7cmV0dXJuIHZvaWQgMCE9PWc/bmV3IEljKCJOIixnKTpJYy51bmRlZmluZWRWYWx1ZU5vdGlmaWNhdGlvbn1zdGF0aWMgY3JlYXRlRXJy''@;'; put 'put ''b3IoZyl7cmV0dXJuIG5ldyBJYygiRSIsdm9pZCAwLGcpfXN0YXRpYyBjcmVhdGVDb21wbGV0ZSgpe3JldHVybiBJYy5jb21wbGV0ZU5vdGlmaWNhdGlvbn19SWMuY29tcGxldGVOb3RpZmljYXRpb249bmV3IEljKCJDIiksSWMudW5kZWZpbmVkVmFsdWVOb3RpZmljYXRpb249bmV3IEljKCJO''@;'; put 'put ''Iix2b2lkIDApO2NsYXNzIEs1IGV4dGVuZHMgentjb25zdHJ1Y3RvcihnLGgsdj0wKXtzdXBlcihnKSx0aGlzLnNjaGVkdWxlcj1oLHRoaXMuZGVsYXk9dn1zdGF0aWMgZGlzcGF0Y2goZyl7Y29uc3R7bm90aWZpY2F0aW9uOmgsZGVzdGluYXRpb246dn09ZztoLm9ic2VydmUodiksdGhpcy51''@;'; put 'put ''bnN1YnNjcmliZSgpfXNjaGVkdWxlTWVzc2FnZShnKXt0aGlzLmRlc3RpbmF0aW9uLmFkZCh0aGlzLnNjaGVkdWxlci5zY2hlZHVsZShLNS5kaXNwYXRjaCx0aGlzLmRlbGF5LG5ldyBBMmUoZyx0aGlzLmRlc3RpbmF0aW9uKSkpfV9uZXh0KGcpe3RoaXMuc2NoZWR1bGVNZXNzYWdlKEljLmNy''@;'; put 'put ''ZWF0ZU5leHQoZykpfV9lcnJvcihnKXt0aGlzLnNjaGVkdWxlTWVzc2FnZShJYy5jcmVhdGVFcnJvcihnKSksdGhpcy51bnN1YnNjcmliZSgpfV9jb21wbGV0ZSgpe3RoaXMuc2NoZWR1bGVNZXNzYWdlKEljLmNyZWF0ZUNvbXBsZXRlKCkpLHRoaXMudW5zdWJzY3JpYmUoKX19Y2xhc3MgQTJl''@;'; put 'put ''e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5ub3RpZmljYXRpb249Zyx0aGlzLmRlc3RpbmF0aW9uPWh9fWNsYXNzIGk4IGV4dGVuZHMgJGV7Y29uc3RydWN0b3IoZz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksdil7c3VwZXIoKSx0aGlzLnNjaGVk''@;'; put 'put ''dWxlcj12LHRoaXMuX2V2ZW50cz1bXSx0aGlzLl9pbmZpbml0ZVRpbWVXaW5kb3c9ITEsdGhpcy5fYnVmZmVyU2l6ZT1nPDE/MTpnLHRoaXMuX3dpbmRvd1RpbWU9aDwxPzE6aCxoPT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZPyh0aGlzLl9pbmZpbml0ZVRpbWVXaW5kb3c9ITAsdGhpcy5u''@;'; put 'put ''ZXh0PXRoaXMubmV4dEluZmluaXRlVGltZVdpbmRvdyk6dGhpcy5uZXh0PXRoaXMubmV4dFRpbWVXaW5kb3d9bmV4dEluZmluaXRlVGltZVdpbmRvdyhnKXtpZighdGhpcy5pc1N0b3BwZWQpe2NvbnN0IGg9dGhpcy5fZXZlbnRzO2gucHVzaChnKSxoLmxlbmd0aD50aGlzLl9idWZmZXJTaXpl''@;'; put 'put ''JiZoLnNoaWZ0KCl9c3VwZXIubmV4dChnKX1uZXh0VGltZVdpbmRvdyhnKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuX2V2ZW50cy5wdXNoKG5ldyB5MmUodGhpcy5fZ2V0Tm93KCksZykpLHRoaXMuX3RyaW1CdWZmZXJUaGVuR2V0RXZlbnRzKCkpLHN1cGVyLm5leHQoZyl9X3N1YnNjcmliZShn''@;'; put 'put ''KXtjb25zdCBoPXRoaXMuX2luZmluaXRlVGltZVdpbmRvdyx2PWg/dGhpcy5fZXZlbnRzOnRoaXMuX3RyaW1CdWZmZXJUaGVuR2V0RXZlbnRzKCkseT10aGlzLnNjaGVkdWxlcixDPXYubGVuZ3RoO2xldCBJO2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBEZTtpZih0aGlzLmlzU3RvcHBlZHx8''@;'; put 'put ''dGhpcy5oYXNFcnJvcj9JPVRlLkVNUFRZOih0aGlzLm9ic2VydmVycy5wdXNoKGcpLEk9bmV3IFBlKHRoaXMsZykpLHkmJmcuYWRkKGc9bmV3IEs1KGcseSkpLGgpZm9yKGxldCBqPTA7ajxDJiYhZy5jbG9zZWQ7aisrKWcubmV4dCh2W2pdKTtlbHNlIGZvcihsZXQgaj0wO2o8QyYmIWcuY2xv''@;'; put 'put ''c2VkO2orKylnLm5leHQodltqXS52YWx1ZSk7cmV0dXJuIHRoaXMuaGFzRXJyb3I/Zy5lcnJvcih0aGlzLnRocm93bkVycm9yKTp0aGlzLmlzU3RvcHBlZCYmZy5jb21wbGV0ZSgpLEl9X2dldE5vdygpe3JldHVybih0aGlzLnNjaGVkdWxlcnx8djJlKS5ub3coKX1fdHJpbUJ1ZmZlclRoZW5H''@;'; put 'put ''ZXRFdmVudHMoKXtjb25zdCBnPXRoaXMuX2dldE5vdygpLGg9dGhpcy5fYnVmZmVyU2l6ZSx2PXRoaXMuX3dpbmRvd1RpbWUseT10aGlzLl9ldmVudHMsQz15Lmxlbmd0aDtsZXQgST0wO2Zvcig7STxDJiYhKGcteVtJXS50aW1lPHYpOylJKys7cmV0dXJuIEM+aCYmKEk9TWF0aC5tYXgoSSxD''@;'; put 'put ''LWgpKSxJPjAmJnkuc3BsaWNlKDAsSSkseX19Y2xhc3MgeTJle2NvbnN0cnVjdG9yKGcsaCl7dGhpcy50aW1lPWcsdGhpcy52YWx1ZT1ofX1jbGFzcyBOVnt9Y29uc3QgUWg9IioiO2Z1bmN0aW9uIEpjKGQsZyl7cmV0dXJue3R5cGU6NyxuYW1lOmQsZGVmaW5pdGlvbnM6ZyxvcHRpb25zOnt9''@;'; put 'put ''fX1mdW5jdGlvbiBmYyhkLGc9bnVsbCl7cmV0dXJue3R5cGU6NCxzdHlsZXM6Zyx0aW1pbmdzOmR9fWZ1bmN0aW9uIEJYKGQsZz1udWxsKXtyZXR1cm57dHlwZToyLHN0ZXBzOmQsb3B0aW9uczpnfX1mdW5jdGlvbiB4bChkKXtyZXR1cm57dHlwZTo2LHN0eWxlczpkLG9mZnNldDpudWxsfX1m''@;'; put 'put ''dW5jdGlvbiBHeShkLGcsaCl7cmV0dXJue3R5cGU6MCxuYW1lOmQsc3R5bGVzOmcsb3B0aW9uczpofX1mdW5jdGlvbiB3MmUoZCl7cmV0dXJue3R5cGU6NSxzdGVwczpkfX1mdW5jdGlvbiBidShkLGcsaD1udWxsKXtyZXR1cm57dHlwZToxLGV4cHI6ZCxhbmltYXRpb246ZyxvcHRpb25zOmh9''@;'; put 'put ''fWZ1bmN0aW9uIG84KGQpe1Byb21pc2UucmVzb2x2ZShudWxsKS50aGVuKGQpfWNsYXNzIEJre2NvbnN0cnVjdG9yKGc9MCxoPTApe3RoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9vcmlnaW5hbE9uRG9uZUZucz1bXSx0''@;'; put 'put ''aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnM9W10sdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fcG9zaXRpb249MCx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPWcraH1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hl''@;'; put 'put ''ZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKGc9PmcoKSksdGhpcy5fb25Eb25lRm5zPVtdKX1vblN0YXJ0KGcpe3RoaXMuX29yaWdpbmFsT25TdGFydEZucy5wdXNoKGcpLHRoaXMuX29uU3RhcnRGbnMucHVzaChnKX1vbkRvbmUoZyl7dGhpcy5fb3JpZ2lu''@;'; put 'put ''YWxPbkRvbmVGbnMucHVzaChnKSx0aGlzLl9vbkRvbmVGbnMucHVzaChnKX1vbkRlc3Ryb3koZyl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2goZyl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWluaXQoKXt9cGxheSgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFy''@;'; put 'put ''dCgpLHRoaXMudHJpZ2dlck1pY3JvdGFzaygpKSx0aGlzLl9zdGFydGVkPSEwfXRyaWdnZXJNaWNyb3Rhc2soKXtvOCgoKT0+dGhpcy5fb25GaW5pc2goKSl9X29uU3RhcnQoKXt0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdfXBhdXNlKCl7fXJl''@;'; put 'put ''c3RhcnQoKXt9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuaGFzU3RhcnRlZCgpfHx0aGlzLl9vblN0YXJ0KCksdGhpcy5maW5pc2goKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaChnPT5nKCkp''@;'; put 'put ''LHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLl9zdGFydGVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX29uU3RhcnRGbnM9dGhpcy5fb3JpZ2luYWxPblN0YXJ0Rm5zLHRoaXMuX29uRG9uZUZucz10aGlzLl9vcmlnaW5hbE9uRG9uZUZuc31zZXRQb3NpdGlvbihnKXt0''@;'; put 'put ''aGlzLl9wb3NpdGlvbj10aGlzLnRvdGFsVGltZT9nKnRoaXMudG90YWxUaW1lOjF9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy50b3RhbFRpbWU/dGhpcy5fcG9zaXRpb24vdGhpcy50b3RhbFRpbWU6MX10cmlnZ2VyQ2FsbGJhY2soZyl7Y29uc3QgaD0ic3RhcnQiPT1nP3RoaXMuX29uU3Rh''@;'; put 'put ''cnRGbnM6dGhpcy5fb25Eb25lRm5zO2guZm9yRWFjaCh2PT52KCkpLGgubGVuZ3RoPTB9fWNsYXNzIFBYe2NvbnN0cnVjdG9yKGcpe3RoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZGVzdHJveWVk''@;'; put 'put ''PSExLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPTAsdGhpcy5wbGF5ZXJzPWc7bGV0IGg9MCx2PTAseT0wO2NvbnN0IEM9dGhpcy5wbGF5ZXJzLmxlbmd0aDswPT1DP284KCgpPT50aGlzLl9vbkZpbmlzaCgpKTp0aGlzLnBsYXll''@;'; put 'put ''cnMuZm9yRWFjaChJPT57SS5vbkRvbmUoKCk9PnsrK2g9PUMmJnRoaXMuX29uRmluaXNoKCl9KSxJLm9uRGVzdHJveSgoKT0+eysrdj09QyYmdGhpcy5fb25EZXN0cm95KCl9KSxJLm9uU3RhcnQoKCk9PnsrK3k9PUMmJnRoaXMuX29uU3RhcnQoKX0pfSksdGhpcy50b3RhbFRpbWU9dGhpcy5w''@;'; put 'put ''bGF5ZXJzLnJlZHVjZSgoSSxqKT0+TWF0aC5tYXgoSSxqLnRvdGFsVGltZSksMCl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaChnPT5nKCkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMucGxheWVy''@;'; put 'put ''cy5mb3JFYWNoKGc9PmcuaW5pdCgpKX1vblN0YXJ0KGcpe3RoaXMuX29uU3RhcnRGbnMucHVzaChnKX1fb25TdGFydCgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdKX1vbkRv''@;'; put 'put ''bmUoZyl7dGhpcy5fb25Eb25lRm5zLnB1c2goZyl9b25EZXN0cm95KGcpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKGcpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1wbGF5KCl7dGhpcy5wYXJlbnRQbGF5ZXJ8fHRoaXMuaW5pdCgpLHRoaXMuX29uU3RhcnQoKSx0aGlzLnBs''@;'; put 'put ''YXllcnMuZm9yRWFjaChnPT5nLnBsYXkoKSl9cGF1c2UoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChnPT5nLnBhdXNlKCkpfXJlc3RhcnQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChnPT5nLnJlc3RhcnQoKSl9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaChn''@;'; put 'put ''PT5nLmZpbmlzaCgpKX1kZXN0cm95KCl7dGhpcy5fb25EZXN0cm95KCl9X29uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKGc9PmcuZGVzdHJveSgpKSx0aGlzLl9vbkRlc3Ryb3lGbnMu''@;'; put 'put ''Zm9yRWFjaChnPT5nKCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChnPT5nLnJlc2V0KCkpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKGcpe2NvbnN0IGg9Zyp0aGlz''@;'; put 'put ''LnRvdGFsVGltZTt0aGlzLnBsYXllcnMuZm9yRWFjaCh2PT57Y29uc3QgeT12LnRvdGFsVGltZT9NYXRoLm1pbigxLGgvdi50b3RhbFRpbWUpOjE7di5zZXRQb3NpdGlvbih5KX0pfWdldFBvc2l0aW9uKCl7Y29uc3QgZz10aGlzLnBsYXllcnMucmVkdWNlKChoLHYpPT5udWxsPT09aHx8di50''@;'; put 'put ''b3RhbFRpbWU+aC50b3RhbFRpbWU/djpoLG51bGwpO3JldHVybiBudWxsIT1nP2cuZ2V0UG9zaXRpb24oKTowfWJlZm9yZURlc3Ryb3koKXt0aGlzLnBsYXllcnMuZm9yRWFjaChnPT57Zy5iZWZvcmVEZXN0cm95JiZnLmJlZm9yZURlc3Ryb3koKX0pfXRyaWdnZXJDYWxsYmFjayhnKXtjb25z''@;'; put 'put ''dCBoPSJzdGFydCI9PWc/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7aC5mb3JFYWNoKHY9PnYoKSksaC5sZW5ndGg9MH19ZnVuY3Rpb24gRmsoZCxnKXtyZXR1cm4gbmV3IEYoaD0+e2NvbnN0IHY9ZC5sZW5ndGg7aWYoMD09PXYpcmV0dXJuIHZvaWQgaC5jb21wbGV0ZSgpO2Nv''@;'; put 'put ''bnN0IHk9bmV3IEFycmF5KHYpO2xldCBDPTAsST0wO2ZvcihsZXQgaj0wO2o8djtqKyspe2NvbnN0IGNlPXBuKGRbal0pO2xldCBfZT0hMTtoLmFkZChjZS5zdWJzY3JpYmUoe25leHQ6UmU9PntfZXx8KF9lPSEwLEkrKykseVtqXT1SZX0sZXJyb3I6UmU9PmguZXJyb3IoUmUpLGNvbXBsZXRl''@;'; put 'put ''OigpPT57QysrLChDPT09dnx8IV9lKSYmKEk9PT12JiZoLm5leHQoZz9nLnJlZHVjZSgoUmUsTmUsS2UpPT4oUmVbTmVdPXlbS2VdLFJlKSx7fSk6eSksaC5jb21wbGV0ZSgpKX19KSl9fSl9bGV0IGpWPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLl9yZW5kZXJlcj1oLHRo''@;'; put 'put ''aXMuX2VsZW1lbnRSZWY9dix0aGlzLm9uQ2hhbmdlPXk9Pnt9LHRoaXMub25Ub3VjaGVkPSgpPT57fX1zZXRQcm9wZXJ0eShoLHYpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxoLHYpfXJlZ2lzdGVyT25Ub3VjaGVkKGgpe3RoaXMu''@;'; put 'put ''b25Ub3VjaGVkPWh9cmVnaXN0ZXJPbkNoYW5nZShoKXt0aGlzLm9uQ2hhbmdlPWh9c2V0RGlzYWJsZWRTdGF0ZShoKXt0aGlzLnNldFByb3BlcnR5KCJkaXNhYmxlZCIsaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KERhKSxLdChfbykpfSxk''@;'; put 'put ''Llx1MDI3NWRpcj1ZaSh7dHlwZTpkfSksZH0pKCksJDU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIGpWe31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuKGd8fChnPXQyKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVlpKHt0eXBl''@;'; put 'put ''OmQsZmVhdHVyZXM6W1JvXX0pLGR9KSgpO2NvbnN0IHVwPW5ldyBPdCgiTmdWYWx1ZUFjY2Vzc29yIiksYjJlPXtwcm92aWRlOnVwLHVzZUV4aXN0aW5nOlNuKCgpPT51aCksbXVsdGk6ITB9O2xldCB1aD0oKCk9PntjbGFzcyBkIGV4dGVuZHMgJDV7d3JpdGVWYWx1ZShoKXt0aGlzLnNldFBy''@;'; put 'put ''b3BlcnR5KCJjaGVja2VkIixoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz10MihkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2Jv''@;'; put 'put ''eCIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNoYW5nZSIsZnVuY3Rpb24o''@;'; put 'put ''Qyl7cmV0dXJuIHYub25DaGFuZ2UoQy50YXJnZXQuY2hlY2tlZCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vblRvdWNoZWQoKX0pfSxmZWF0dXJlczpbZ28oW2IyZV0pLFJvXX0pLGR9KSgpO2NvbnN0IF8yZT17cHJvdmlkZTp1cCx1c2VFeGlzdGluZzpTbigoKT0+cDEpLG11bHRp''@;'; put 'put ''OiEwfSxrMmU9bmV3IE90KCJDb21wb3NpdGlvbkV2ZW50TW9kZSIpO2xldCBwMT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgalZ7Y29uc3RydWN0b3IoaCx2LHkpe3N1cGVyKGgsdiksdGhpcy5fY29tcG9zaXRpb25Nb2RlPXksdGhpcy5fY29tcG9zaW5nPSExLG51bGw9PXRoaXMuX2NvbXBvc2l0''@;'; put 'put ''aW9uTW9kZSYmKHRoaXMuX2NvbXBvc2l0aW9uTW9kZT0hZnVuY3Rpb24gQzJlKCl7Y29uc3QgZD1lcCgpP2VwKCkuZ2V0VXNlckFnZW50KCk6IiI7cmV0dXJuL2FuZHJvaWQgKFxkKykvLnRlc3QoZC50b0xvd2VyQ2FzZSgpKX0oKSl9d3JpdGVWYWx1ZShoKXt0aGlzLnNldFByb3BlcnR5KCJ2''@;'; put 'put ''YWx1ZSIsbnVsbD09aD8iIjpoKX1faGFuZGxlSW5wdXQoaCl7KCF0aGlzLl9jb21wb3NpdGlvbk1vZGV8fHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRoaXMub25DaGFuZ2UoaCl9X2NvbXBvc2l0aW9uU3RhcnQoKXt0aGlzLl9jb21wb3Npbmc9ITB9X2NvbXBv''@;'; put 'put ''c2l0aW9uRW5kKGgpe3RoaXMuX2NvbXBvc2luZz0hMSx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJnRoaXMub25DaGFuZ2UoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KERhKSxLdChfbyksS3QoazJlLDgpKX0sZC5cdTAyNzVkaXI9WWkoe3R5''@;'; put 'put ''cGU6ZCxzZWxlY3RvcnM6W1siaW5wdXQiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3Jt''@;'; put 'put ''Q29udHJvbCIsIiJdLFsiaW5wdXQiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwibmdNb2RlbCIsIiJdLFsiIiwibmdEZWZhdWx0Q29udHJvbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJpbnB1dCIsZnVuY3Rpb24oQyl7''@;'; put 'put ''cmV0dXJuIHYuX2hhbmRsZUlucHV0KEMudGFyZ2V0LnZhbHVlKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2Lm9uVG91Y2hlZCgpfSkoImNvbXBvc2l0aW9uc3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuX2NvbXBvc2l0aW9uU3RhcnQoKX0pKCJjb21wb3NpdGlvbmVuZCIsZnVuY3Rp''@;'; put 'put ''b24oQyl7cmV0dXJuIHYuX2NvbXBvc2l0aW9uRW5kKEMudGFyZ2V0LnZhbHVlKX0pfSxmZWF0dXJlczpbZ28oW18yZV0pLFJvXX0pLGR9KSgpO2NvbnN0IFhjPW5ldyBPdCgiTmdWYWxpZGF0b3JzIiksZWc9bmV3IE90KCJOZ0FzeW5jVmFsaWRhdG9ycyIpO2Z1bmN0aW9uIEdWKGQpe3JldHVy''@;'; put 'put ''biBudWxsIT1kfWZ1bmN0aW9uIFdWKGQpe3JldHVybiBzNShkKT9wbihkKTpkfWZ1bmN0aW9uIFlWKGQpe2xldCBnPXt9O3JldHVybiBkLmZvckVhY2goaD0+e2c9bnVsbCE9aD9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZyksaCk6Z30pLDA9PT1PYmplY3Qua2V5cyhnKS5sZW5n''@;'; put 'put ''dGg/bnVsbDpnfWZ1bmN0aW9uIFVWKGQsZyl7cmV0dXJuIGcubWFwKGg9PmgoZCkpfWZ1bmN0aW9uICREKGQpe3JldHVybiBkLm1hcChnPT5mdW5jdGlvbiBNMmUoZCl7cmV0dXJuIWQudmFsaWRhdGV9KGcpP2c6aD0+Zy52YWxpZGF0ZShoKSl9ZnVuY3Rpb24gUVYoZCl7cmV0dXJuIG51bGwh''@;'; put 'put ''PWQ/ZnVuY3Rpb24gV1goZCl7aWYoIWQpcmV0dXJuIG51bGw7Y29uc3QgZz1kLmZpbHRlcihHVik7cmV0dXJuIDA9PWcubGVuZ3RoP251bGw6ZnVuY3Rpb24oaCl7cmV0dXJuIFlWKFVWKGgsZykpfX0oJEQoZCkpOm51bGx9ZnVuY3Rpb24gY3AoZCl7cmV0dXJuIG51bGwhPWQ/ZnVuY3Rpb24g''@;'; put 'put ''WVgoZCl7aWYoIWQpcmV0dXJuIG51bGw7Y29uc3QgZz1kLmZpbHRlcihHVik7cmV0dXJuIDA9PWcubGVuZ3RoP251bGw6ZnVuY3Rpb24oaCl7cmV0dXJuIGZ1bmN0aW9uIFZWKC4uLmQpe2lmKDE9PT1kLmxlbmd0aCl7Y29uc3QgZz1kWzBdO2lmKEFlKGcpKXJldHVybiBGayhnLG51bGwpO2lm''@;'; put 'put ''KGtlKGcpJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZyk9PT1PYmplY3QucHJvdG90eXBlKXtjb25zdCBoPU9iamVjdC5rZXlzKGcpO3JldHVybiBGayhoLm1hcCh2PT5nW3ZdKSxoKX19aWYoImZ1bmN0aW9uIj09dHlwZW9mIGRbZC5sZW5ndGgtMV0pe2NvbnN0IGc9ZC5wb3AoKTtyZXR1cm4g''@;'; put 'put ''RmsoZD0xPT09ZC5sZW5ndGgmJkFlKGRbMF0pP2RbMF06ZCxudWxsKS5waXBlKHB0KGg9PmcoLi4uaCkpKX1yZXR1cm4gRmsoZCxudWxsKX0oVVYoaCxnKS5tYXAoV1YpKS5waXBlKHB0KFlWKSl9fSgkRChkKSk6bnVsbH1mdW5jdGlvbiBKVihkLGcpe3JldHVybiBudWxsPT09ZD9bZ106QXJy''@;'; put 'put ''YXkuaXNBcnJheShkKT9bLi4uZCxnXTpbZCxnXX1mdW5jdGlvbiBxRChkKXtyZXR1cm4gZD9BcnJheS5pc0FycmF5KGQpP2Q6W2RdOltdfWZ1bmN0aW9uIGVMKGQsZyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCk/ZC5pbmNsdWRlcyhnKTpkPT09Z31mdW5jdGlvbiBOayhkLGcpe2NvbnN0IGg9''@;'; put 'put ''cUQoZyk7cmV0dXJuIHFEKGQpLmZvckVhY2goeT0+e2VMKGgseSl8fGgucHVzaCh5KX0pLGh9ZnVuY3Rpb24gS1YoZCxnKXtyZXR1cm4gcUQoZykuZmlsdGVyKGg9PiFlTChkLGgpKX1jbGFzcyB0THtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9W10sdGhpcy5fcmF3QXN5bmNW''@;'; put 'put ''YWxpZGF0b3JzPVtdLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZTpudWxsfWdldCB2YWxpZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9Z2V0IGludmFsaWQo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlzYWJsZWQ6''@;'; put 'put ''bnVsbH1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH1nZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9Z2V0IHByaXN0aW5lKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNv''@;'; put 'put ''bnRyb2wucHJpc3RpbmU6bnVsbH1nZXQgZGlydHkoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfWdldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy5jb250''@;'; put 'put ''cm9sP3RoaXMuY29udHJvbC5zdGF0dXM6bnVsbH1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzOm51bGx9''@;'; put 'put ''Z2V0IHZhbHVlQ2hhbmdlcygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9X3NldFZhbGlkYXRvcnMoZyl7dGhpcy5fcmF3VmFsaWRhdG9ycz1nfHxbXSx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPVFW''@;'; put 'put ''KHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfV9zZXRBc3luY1ZhbGlkYXRvcnMoZyl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPWd8fFtdLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1jcCh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''Y29tcG9zZWRWYWxpZGF0b3JGbnx8bnVsbH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufHxudWxsfV9yZWdpc3Rlck9uRGVzdHJveShnKXt0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3MucHVzaChnKX1faW52b2tlT25EZXN0cm95Q2Fs''@;'; put 'put ''bGJhY2tzKCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119cmVzZXQoZyl7dGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wucmVzZXQoZyl9aGFzRXJyb3IoZyxoKXtyZXR1cm4hIXRoaXMuY29udHJvbCYmdGhpcy5j''@;'; put 'put ''b250cm9sLmhhc0Vycm9yKGcsaCl9Z2V0RXJyb3IoZyxoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRFcnJvcihnLGgpOm51bGx9fWNsYXNzIERjIGV4dGVuZHMgdEx7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3BhcmVudD1udWxsLHRoaXMu''@;'; put 'put ''bmFtZT1udWxsLHRoaXMudmFsdWVBY2Nlc3Nvcj1udWxsfX1jbGFzcyBNZiBleHRlbmRzIHRMe2dldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIG51bGx9Z2V0IHBhdGgoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVVh7Y29uc3RydWN0b3IoZyl7dGhpcy5fY2Q9Z31nZXQgaXNUb3VjaGVkKCl7dmFy''@;'; put 'put ''IGcsaDtyZXR1cm4hKG51bGw9PT0oaD1udWxsPT09KGc9dGhpcy5fY2QpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmNvbnRyb2wpfHx2b2lkIDA9PT1ofHwhaC50b3VjaGVkKX1nZXQgaXNVbnRvdWNoZWQoKXt2YXIgZyxoO3JldHVybiEobnVsbD09PShoPW51bGw9PT0oZz10aGlzLl9jZCl8fHZv''@;'; put 'put ''aWQgMD09PWc/dm9pZCAwOmcuY29udHJvbCl8fHZvaWQgMD09PWh8fCFoLnVudG91Y2hlZCl9Z2V0IGlzUHJpc3RpbmUoKXt2YXIgZyxoO3JldHVybiEobnVsbD09PShoPW51bGw9PT0oZz10aGlzLl9jZCl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY29udHJvbCl8fHZvaWQgMD09PWh8fCFoLnBy''@;'; put 'put ''aXN0aW5lKX1nZXQgaXNEaXJ0eSgpe3ZhciBnLGg7cmV0dXJuIShudWxsPT09KGg9bnVsbD09PShnPXRoaXMuX2NkKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5jb250cm9sKXx8dm9pZCAwPT09aHx8IWguZGlydHkpfWdldCBpc1ZhbGlkKCl7dmFyIGcsaDtyZXR1cm4hKG51bGw9PT0oaD1udWxs''@;'; put 'put ''PT09KGc9dGhpcy5fY2QpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmNvbnRyb2wpfHx2b2lkIDA9PT1ofHwhaC52YWxpZCl9Z2V0IGlzSW52YWxpZCgpe3ZhciBnLGg7cmV0dXJuIShudWxsPT09KGg9bnVsbD09PShnPXRoaXMuX2NkKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5jb250cm9sKXx8dm9p''@;'; put 'put ''ZCAwPT09aHx8IWguaW52YWxpZCl9Z2V0IGlzUGVuZGluZygpe3ZhciBnLGg7cmV0dXJuIShudWxsPT09KGg9bnVsbD09PShnPXRoaXMuX2NkKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5jb250cm9sKXx8dm9pZCAwPT09aHx8IWgucGVuZGluZyl9Z2V0IGlzU3VibWl0dGVkKCl7dmFyIGc7cmV0''@;'; put 'put ''dXJuIShudWxsPT09KGc9dGhpcy5fY2QpfHx2b2lkIDA9PT1nfHwhZy5zdWJtaXR0ZWQpfX1sZXQganM9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFVYe2NvbnN0cnVjdG9yKGgpe3N1cGVyKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChEYywy''@;'; put 'put ''KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibmdNb2RlbCIsIiJdLFsiIiwiZm9ybUNvbnRyb2wiLCIiXV0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgibmctdW50b3VjaGVk''@;'; put 'put ''Iix2LmlzVW50b3VjaGVkKSgibmctdG91Y2hlZCIsdi5pc1RvdWNoZWQpKCJuZy1wcmlzdGluZSIsdi5pc1ByaXN0aW5lKSgibmctZGlydHkiLHYuaXNEaXJ0eSkoIm5nLXZhbGlkIix2LmlzVmFsaWQpKCJuZy1pbnZhbGlkIix2LmlzSW52YWxpZCkoIm5nLXBlbmRpbmciLHYuaXNQZW5kaW5n''@;'; put 'put ''KX0sZmVhdHVyZXM6W1JvXX0pLGR9KSgpLHR2PSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBVWHtjb25zdHJ1Y3RvcihoKXtzdXBlcihoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTWYsMTApKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siIiwiZm9ybUdyb3VwTmFtZSIsIiJdLFsiIiwiZm9ybUFycmF5TmFtZSIsIiJdLFsiIiwibmdNb2RlbEdyb3VwIiwiIl0sWyIiLCJmb3JtR3JvdXAiLCIiXSxbImZvcm0iLDMsIm5nTm9Gb3JtIiwiIl0sWyIiLCJuZ0Zvcm0iLCIiXV0saG9zdFZhcnM6MTYsaG9zdEJpbmRpbmdz''@;'; put 'put ''OmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgibmctdW50b3VjaGVkIix2LmlzVW50b3VjaGVkKSgibmctdG91Y2hlZCIsdi5pc1RvdWNoZWQpKCJuZy1wcmlzdGluZSIsdi5pc1ByaXN0aW5lKSgibmctZGlydHkiLHYuaXNEaXJ0eSkoIm5nLXZhbGlkIix2LmlzVmFsaWQpKCJuZy1pbnZhbGlkIix2''@;'; put 'put ''LmlzSW52YWxpZCkoIm5nLXBlbmRpbmciLHYuaXNQZW5kaW5nKSgibmctc3VibWl0dGVkIix2LmlzU3VibWl0dGVkKX0sZmVhdHVyZXM6W1JvXX0pLGR9KSgpO2NvbnN0IFd5PSJWQUxJRCIsckw9IklOVkFMSUQiLFl5PSJQRU5ESU5HIixpdj0iRElTQUJMRUQiO2Z1bmN0aW9uIGprKGQpe3Jl''@;'; put 'put ''dHVybihhOChkKT9kLnZhbGlkYXRvcnM6ZCl8fG51bGx9ZnVuY3Rpb24gaWooZCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCk/UVYoZCk6ZHx8bnVsbH1mdW5jdGlvbiBvaihkLGcpe3JldHVybihhOChnKT9nLmFzeW5jVmFsaWRhdG9yczpkKXx8bnVsbH1mdW5jdGlvbiBKWChkKXtyZXR1cm4g''@;'; put 'put ''QXJyYXkuaXNBcnJheShkKT9jcChkKTpkfHxudWxsfWZ1bmN0aW9uIGE4KGQpe3JldHVybiBudWxsIT1kJiYhQXJyYXkuaXNBcnJheShkKSYmIm9iamVjdCI9PXR5cGVvZiBkfWNsYXNzIGxqe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2hhc093blBlbmRp''@;'; put 'put ''bmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLl9wZW5kaW5nVG91Y2hlZD0hMSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX3BhcmVudD1udWxsLHRoaXMucHJpc3RpbmU9ITAsdGhpcy50b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fcmF3VmFs''@;'; put 'put ''aWRhdG9ycz1nLHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1oLHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49aWoodGhpcy5fcmF3VmFsaWRhdG9ycyksdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPUpYKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9Z2V0IHZhbGlkYXRvcigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZufXNldCB2YWxpZGF0b3IoZyl7dGhpcy5fcmF3VmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPWd9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbn1zZXQgYXN5bmNW''@;'; put 'put ''YWxpZGF0b3IoZyl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1nfWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PVd5fWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''c3RhdHVzPT09ckx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PVl5fWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PWl2fWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09aXZ9Z2V0IGRpcnR5KCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHVu''@;'; put 'put ''dG91Y2hlZCgpe3JldHVybiF0aGlzLnRvdWNoZWR9Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnMoZyl7dGhpcy5fcmF3VmFsaWRhdG9ycz1nLHRo''@;'; put 'put ''aXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49aWooZyl9c2V0QXN5bmNWYWxpZGF0b3JzKGcpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1nLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1KWChnKX1hZGRWYWxpZGF0b3JzKGcpe3RoaXMuc2V0VmFsaWRhdG9ycyhOayhnLHRoaXMuX3Jh''@;'; put 'put ''d1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnMoZyl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoTmsoZyx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1yZW1vdmVWYWxpZGF0b3JzKGcpe3RoaXMuc2V0VmFsaWRhdG9ycyhLVihnLHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1yZW1vdmVB''@;'; put 'put ''c3luY1ZhbGlkYXRvcnMoZyl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoS1YoZyx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1oYXNWYWxpZGF0b3IoZyl7cmV0dXJuIGVMKHRoaXMuX3Jhd1ZhbGlkYXRvcnMsZyl9aGFzQXN5bmNWYWxpZGF0b3IoZyl7cmV0dXJuIGVMKHRoaXMuX3Jhd0Fz''@;'; put 'put ''eW5jVmFsaWRhdG9ycyxnKX1jbGVhclZhbGlkYXRvcnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3JzKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQoZz17fSl7dGhpcy50b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIWcub25seVNlbGYm''@;'; put 'put ''JnRoaXMuX3BhcmVudC5tYXJrQXNUb3VjaGVkKGcpfW1hcmtBbGxBc1RvdWNoZWQoKXt0aGlzLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKGc9PmcubWFya0FsbEFzVG91Y2hlZCgpKX1tYXJrQXNVbnRvdWNoZWQoZz17fSl7dGhpcy50b3VjaGVkPSEx''@;'; put 'put ''LHRoaXMuX3BlbmRpbmdUb3VjaGVkPSExLHRoaXMuX2ZvckVhY2hDaGlsZChoPT57aC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl9wYXJlbnQmJiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoZyl9bWFya0FzRGlydHkoZz17fSl7dGhpcy5w''@;'; put 'put ''cmlzdGluZT0hMSx0aGlzLl9wYXJlbnQmJiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzRGlydHkoZyl9bWFya0FzUHJpc3RpbmUoZz17fSl7dGhpcy5wcmlzdGluZT0hMCx0aGlzLl9wZW5kaW5nRGlydHk9ITEsdGhpcy5fZm9yRWFjaENoaWxkKGg9PntoLm1hcmtBc1ByaXN0aW5l''@;'; put 'put ''KHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50JiYhZy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZShnKX1tYXJrQXNQZW5kaW5nKGc9e30pe3RoaXMuc3RhdHVzPVl5LCExIT09Zy5lbWl0RXZlbnQmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVz''@;'; put 'put ''KSx0aGlzLl9wYXJlbnQmJiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyhnKX1kaXNhYmxlKGc9e30pe2NvbnN0IGg9dGhpcy5fcGFyZW50TWFya2VkRGlydHkoZy5vbmx5U2VsZik7dGhpcy5zdGF0dXM9aXYsdGhpcy5lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hp''@;'; put 'put ''bGQodj0+e3YuZGlzYWJsZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZykse29ubHlTZWxmOiEwfSkpfSksdGhpcy5fdXBkYXRlVmFsdWUoKSwhMSE9PWcuZW1pdEV2ZW50JiYodGhpcy52YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLnZhbHVlKSx0aGlzLnN0YXR1c0NoYW5nZXMuZW1p''@;'; put 'put ''dCh0aGlzLnN0YXR1cykpLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZykse3NraXBQcmlzdGluZUNoZWNrOmh9KSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKHY9PnYoITApKX1lbmFibGUoZz17fSl7Y29uc3QgaD10aGlzLl9w''@;'; put 'put ''YXJlbnRNYXJrZWREaXJ0eShnLm9ubHlTZWxmKTt0aGlzLnN0YXR1cz1XeSx0aGlzLl9mb3JFYWNoQ2hpbGQodj0+e3YuZW5hYmxlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxnKSx7b25seVNlbGY6ITB9KSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxm''@;'; put 'put ''OiEwLGVtaXRFdmVudDpnLmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZykse3NraXBQcmlzdGluZUNoZWNrOmh9KSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKHY9PnYoITEpKX1fdXBkYXRlQW5jZXN0b3Jz''@;'; put 'put ''KGcpe3RoaXMuX3BhcmVudCYmIWcub25seVNlbGYmJih0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShnKSxnLnNraXBQcmlzdGluZUNoZWNrfHx0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKCksdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKCkpfXNldFBhcmVudChn''@;'; put 'put ''KXt0aGlzLl9wYXJlbnQ9Z31nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZz17fSl7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3Jp''@;'; put 'put ''cHRpb24oKSx0aGlzLmVycm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSwodGhpcy5zdGF0dXM9PT1XeXx8dGhpcy5zdGF0dXM9PT1ZeSkmJnRoaXMuX3J1bkFzeW5jVmFsaWRhdG9yKGcuZW1pdEV2ZW50KSksITEhPT1nLmVtaXRF''@;'; put 'put ''dmVudCYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShnKX1fdXBkYXRlVHJlZVZhbGlkaXR5''@;'; put 'put ''KGc9e2VtaXRFdmVudDohMH0pe3RoaXMuX2ZvckVhY2hDaGlsZChoPT5oLl91cGRhdGVUcmVlVmFsaWRpdHkoZykpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OmcuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMoKXt0aGlzLnN0YXR1cz10''@;'; put 'put ''aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/aXY6V3l9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcihnKXtpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLnN0YXR1cz1ZeSx0aGlzLl9o''@;'; put 'put ''YXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITA7Y29uc3QgaD1XVih0aGlzLmFzeW5jVmFsaWRhdG9yKHRoaXMpKTt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb249aC5zdWJzY3JpYmUodj0+e3RoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLnNldEVy''@;'; put 'put ''cm9ycyh2LHtlbWl0RXZlbnQ6Z30pfSl9fV9jYW5jZWxFeGlzdGluZ1N1YnNjcmlwdGlvbigpe3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbiYmKHRoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2hhc093blBlbmRpbmdBc3luY1Zh''@;'; put 'put ''bGlkYXRvcj0hMSl9c2V0RXJyb3JzKGcsaD17fSl7dGhpcy5lcnJvcnM9Zyx0aGlzLl91cGRhdGVDb250cm9sc0Vycm9ycyghMSE9PWguZW1pdEV2ZW50KX1nZXQoZyl7bGV0IGg9ZztyZXR1cm4gbnVsbD09aHx8KEFycmF5LmlzQXJyYXkoaCl8fChoPWguc3BsaXQoIi4iKSksMD09PWgubGVu''@;'; put 'put ''Z3RoKT9udWxsOmgucmVkdWNlKCh2LHkpPT52JiZ2Ll9maW5kKHkpLHRoaXMpfWdldEVycm9yKGcsaCl7Y29uc3Qgdj1oP3RoaXMuZ2V0KGgpOnRoaXM7cmV0dXJuIHYmJnYuZXJyb3JzP3YuZXJyb3JzW2ddOm51bGx9aGFzRXJyb3IoZyxoKXtyZXR1cm4hIXRoaXMuZ2V0RXJyb3IoZyxoKX1n''@;'; put 'put ''ZXQgcm9vdCgpe2xldCBnPXRoaXM7Zm9yKDtnLl9wYXJlbnQ7KWc9Zy5fcGFyZW50O3JldHVybiBnfV91cGRhdGVDb250cm9sc0Vycm9ycyhnKXt0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSxnJiZ0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cyksdGhpcy5f''@;'; put 'put ''cGFyZW50JiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKGcpfV9pbml0T2JzZXJ2YWJsZXMoKXt0aGlzLnZhbHVlQ2hhbmdlcz1uZXcgZm4sdGhpcy5zdGF0dXNDaGFuZ2VzPW5ldyBmbn1fY2FsY3VsYXRlU3RhdHVzKCl7cmV0dXJuIHRoaXMuX2FsbENvbnRyb2xzRGlzYWJs''@;'; put 'put ''ZWQoKT9pdjp0aGlzLmVycm9ycz9yTDp0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3J8fHRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhZeSk/WXk6dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKHJMKT9yTDpXeX1fYW55Q29udHJvbHNIYXZlU3RhdHVzKGcpe3JldHVybiB0''@;'; put 'put ''aGlzLl9hbnlDb250cm9scyhoPT5oLnN0YXR1cz09PWcpfV9hbnlDb250cm9sc0RpcnR5KCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGc9PmcuZGlydHkpfV9hbnlDb250cm9sc1RvdWNoZWQoKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoZz0+Zy50b3VjaGVkKX1fdXBkYXRlUHJpc3Rp''@;'; put 'put ''bmUoZz17fSl7dGhpcy5wcmlzdGluZT0hdGhpcy5fYW55Q29udHJvbHNEaXJ0eSgpLHRoaXMuX3BhcmVudCYmIWcub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoZyl9X3VwZGF0ZVRvdWNoZWQoZz17fSl7dGhpcy50b3VjaGVkPXRoaXMuX2FueUNvbnRyb2xzVG91Y2hl''@;'; put 'put ''ZCgpLHRoaXMuX3BhcmVudCYmIWcub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZChnKX1fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoZyl7dGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPWd9X3NldFVwZGF0ZVN0cmF0ZWd5KGcpe2E4KGcpJiZudWxsIT1nLnVwZGF0ZU9u''@;'; put 'put ''JiYodGhpcy5fdXBkYXRlT249Zy51cGRhdGVPbil9X3BhcmVudE1hcmtlZERpcnR5KGcpe3JldHVybiFnJiYhKCF0aGlzLl9wYXJlbnR8fCF0aGlzLl9wYXJlbnQuZGlydHkpJiYhdGhpcy5fcGFyZW50Ll9hbnlDb250cm9sc0RpcnR5KCl9X2ZpbmQoZyl7cmV0dXJuIG51bGx9fWNsYXNzIGlM''@;'; put 'put ''IGV4dGVuZHMgbGp7Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKGprKGgpLG9qKHYsaCkpLHRoaXMuY29udHJvbHM9Zyx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShoKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlk''@;'; put 'put ''aXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9cmVnaXN0ZXJDb250cm9sKGcsaCl7cmV0dXJuIHRoaXMuY29udHJvbHNbZ10/dGhpcy5jb250cm9sc1tnXToodGhpcy5jb250cm9sc1tnXT1oLGguc2V0UGFyZW50KHRoaXMpLGguX3JlZ2lzdGVyT25D''@;'; put 'put ''b2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSksaCl9YWRkQ29udHJvbChnLGgsdj17fSl7dGhpcy5yZWdpc3RlckNvbnRyb2woZyxoKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDp2LmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNo''@;'; put 'put ''YW5nZSgpfXJlbW92ZUNvbnRyb2woZyxoPXt9KXt0aGlzLmNvbnRyb2xzW2ddJiZ0aGlzLmNvbnRyb2xzW2ddLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKT0+e30pLGRlbGV0ZSB0aGlzLmNvbnRyb2xzW2ddLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50Omgu''@;'; put 'put ''ZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9c2V0Q29udHJvbChnLGgsdj17fSl7dGhpcy5jb250cm9sc1tnXSYmdGhpcy5jb250cm9sc1tnXS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCk9Pnt9KSxkZWxldGUgdGhpcy5jb250cm9sc1tnXSxoJiZ0aGlzLnJl''@;'; put 'put ''Z2lzdGVyQ29udHJvbChnLGgpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OnYuZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9Y29udGFpbnMoZyl7cmV0dXJuIHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkoZykmJnRoaXMuY29udHJvbHNb''@;'; put 'put ''Z10uZW5hYmxlZH1zZXRWYWx1ZShnLGg9e30peyhmdW5jdGlvbiBhaihkLGcsaCl7ZC5fZm9yRWFjaENoaWxkKCh2LHkpPT57aWYodm9pZCAwPT09aFt5XSl0aHJvdyBuZXcgcXQoMTAwMiwiIil9KX0pKHRoaXMsMCxnKSxPYmplY3Qua2V5cyhnKS5mb3JFYWNoKHY9PnsoZnVuY3Rpb24gWFgo''@;'; put 'put ''ZCxnLGgpe2NvbnN0IHY9ZC5jb250cm9scztpZighKGc/T2JqZWN0LmtleXModik6dikubGVuZ3RoKXRocm93IG5ldyBxdCgxZTMsIiIpO2lmKCF2W2hdKXRocm93IG5ldyBxdCgxMDAxLCIiKX0pKHRoaXMsITAsdiksdGhpcy5jb250cm9sc1t2XS5zZXRWYWx1ZShnW3ZdLHtvbmx5U2VsZjoh''@;'; put 'put ''MCxlbWl0RXZlbnQ6aC5lbWl0RXZlbnR9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShoKX1wYXRjaFZhbHVlKGcsaD17fSl7bnVsbCE9ZyYmKE9iamVjdC5rZXlzKGcpLmZvckVhY2godj0+e2NvbnN0IHk9dGhpcy5jb250cm9sc1t2XTt5JiZ5LnBhdGNoVmFsdWUoZ1t2XSx7b25s''@;'; put 'put ''eVNlbGY6ITAsZW1pdEV2ZW50OmguZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoaCkpfXJlc2V0KGc9e30saD17fSl7dGhpcy5fZm9yRWFjaENoaWxkKCh2LHkpPT57di5yZXNldChnW3ldLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6aC5lbWl0RXZlbnR9KX0pLHRo''@;'; put 'put ''aXMuX3VwZGF0ZVByaXN0aW5lKGgpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoaCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGgpfWdldFJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LChnLGgsdik9PihnW3ZdPWguZ2V0UmF3VmFsdWUoKSxnKSl9X3N5bmNQZW5k''@;'; put 'put ''aW5nQ29udHJvbHMoKXtsZXQgZz10aGlzLl9yZWR1Y2VDaGlsZHJlbighMSwoaCx2KT0+ISF2Ll9zeW5jUGVuZGluZ0NvbnRyb2xzKCl8fGgpO3JldHVybiBnJiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksZ31fZm9yRWFjaENoaWxkKGcpe09iamVjdC5rZXlz''@;'; put 'put ''KHRoaXMuY29udHJvbHMpLmZvckVhY2goaD0+e2NvbnN0IHY9dGhpcy5jb250cm9sc1toXTt2JiZnKHYsaCl9KX1fc2V0VXBDb250cm9scygpe3RoaXMuX2ZvckVhY2hDaGlsZChnPT57Zy5zZXRQYXJlbnQodGhpcyksZy5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xs''@;'; put 'put ''ZWN0aW9uQ2hhbmdlKX0pfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX1fYW55Q29udHJvbHMoZyl7Zm9yKGNvbnN0W2gsdl1vZiBPYmplY3QuZW50cmllcyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRhaW5zKGgpJiZnKHYpKXJldHVybiEwO3JldHVy''@;'; put 'put ''biExfV9yZWR1Y2VWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoaCx2LHkpPT4oKHYuZW5hYmxlZHx8dGhpcy5kaXNhYmxlZCkmJihoW3ldPXYudmFsdWUpLGgpKX1fcmVkdWNlQ2hpbGRyZW4oZyxoKXtsZXQgdj1nO3JldHVybiB0aGlzLl9mb3JFYWNoQ2hpbGQoKHks''@;'; put 'put ''Qyk9Pnt2PWgodix5LEMpfSksdn1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe2Zvcihjb25zdCBnIG9mIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpKWlmKHRoaXMuY29udHJvbHNbZ10uZW5hYmxlZClyZXR1cm4hMTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoPjB8''@;'; put 'put ''fHRoaXMuZGlzYWJsZWR9X2ZpbmQoZyl7cmV0dXJuIHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkoZyk/dGhpcy5jb250cm9sc1tnXTpudWxsfX1mdW5jdGlvbiBVeShkLGcpe3ZhciBoLHY7c2ooZCxnKSxnLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShkLnZhbHVlKSxkLmRpc2FibGVk''@;'; put 'put ''JiYobnVsbD09PSh2PShoPWcudmFsdWVBY2Nlc3Nvcikuc2V0RGlzYWJsZWRTdGF0ZSl8fHZvaWQgMD09PXZ8fHYuY2FsbChoLCEwKSksZnVuY3Rpb24gcWQoZCxnKXtnLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShoPT57ZC5fcGVuZGluZ1ZhbHVlPWgsZC5fcGVuZGluZ0NoYW5n''@;'; put 'put ''ZT0hMCxkLl9wZW5kaW5nRGlydHk9ITAsImNoYW5nZSI9PT1kLnVwZGF0ZU9uJiZyZyhkLGcpfSl9KGQsZyksZnVuY3Rpb24gb3YoZCxnKXtjb25zdCBoPSh2LHkpPT57Zy52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodikseSYmZy52aWV3VG9Nb2RlbFVwZGF0ZSh2KX07ZC5yZWdpc3Rlck9u''@;'; put 'put ''Q2hhbmdlKGgpLGcuX3JlZ2lzdGVyT25EZXN0cm95KCgpPT57ZC5fdW5yZWdpc3Rlck9uQ2hhbmdlKGgpfSl9KGQsZyksZnVuY3Rpb24gbmcoZCxnKXtnLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoKCk9PntkLl9wZW5kaW5nVG91Y2hlZD0hMCwiYmx1ciI9PT1kLnVwZGF0ZU9u''@;'; put 'put ''JiZkLl9wZW5kaW5nQ2hhbmdlJiZyZyhkLGcpLCJzdWJtaXQiIT09ZC51cGRhdGVPbiYmZC5tYXJrQXNUb3VjaGVkKCl9KX0oZCxnKSxmdW5jdGlvbiBLWChkLGcpe2lmKGcudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKXtjb25zdCBoPXY9PntnLnZhbHVlQWNjZXNzb3Iuc2V0RGlz''@;'; put 'put ''YWJsZWRTdGF0ZSh2KX07ZC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoaCksZy5fcmVnaXN0ZXJPbkRlc3Ryb3koKCk9PntkLl91bnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShoKX0pfX0oZCxnKX1mdW5jdGlvbiBaayhkLGcpe2QuZm9yRWFjaChoPT57aC5yZWdpc3Rlck9uVmFsaWRhdG9y''@;'; put 'put ''Q2hhbmdlJiZoLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZyl9KX1mdW5jdGlvbiBzaihkLGcpe2NvbnN0IGg9ZnVuY3Rpb24gSGsoZCl7cmV0dXJuIGQuX3Jhd1ZhbGlkYXRvcnN9KGQpO251bGwhPT1nLnZhbGlkYXRvcj9kLnNldFZhbGlkYXRvcnMoSlYoaCxnLnZhbGlkYXRvcikpOiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBoJiZkLnNldFZhbGlkYXRvcnMoW2hdKTtjb25zdCB2PWZ1bmN0aW9uIFhWKGQpe3JldHVybiBkLl9yYXdBc3luY1ZhbGlkYXRvcnN9KGQpO251bGwhPT1nLmFzeW5jVmFsaWRhdG9yP2Quc2V0QXN5bmNWYWxpZGF0b3JzKEpWKHYsZy5hc3luY1ZhbGlkYXRvcikp''@;'; put 'put ''OiJmdW5jdGlvbiI9PXR5cGVvZiB2JiZkLnNldEFzeW5jVmFsaWRhdG9ycyhbdl0pO2NvbnN0IHk9KCk9PmQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1prKGcuX3Jhd1ZhbGlkYXRvcnMseSksWmsoZy5fcmF3QXN5bmNWYWxpZGF0b3JzLHkpfWZ1bmN0aW9uIHJnKGQsZyl7ZC5fcGVuZGlu''@;'; put 'put ''Z0RpcnR5JiZkLm1hcmtBc0RpcnR5KCksZC5zZXRWYWx1ZShkLl9wZW5kaW5nVmFsdWUse2VtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLGcudmlld1RvTW9kZWxVcGRhdGUoZC5fcGVuZGluZ1ZhbHVlKSxkLl9wZW5kaW5nQ2hhbmdlPSExfWNvbnN0IGxMPXtwcm92aWRlOk1mLHVzZUV4aXN0''@;'; put 'put ''aW5nOlNuKCgpPT50NCl9LGZwPSgoKT0+UHJvbWlzZS5yZXNvbHZlKG51bGwpKSgpO2xldCB0ND0oKCk9PntjbGFzcyBkIGV4dGVuZHMgTWZ7Y29uc3RydWN0b3IoaCx2KXtzdXBlcigpLHRoaXMuc3VibWl0dGVkPSExLHRoaXMuX2RpcmVjdGl2ZXM9bmV3IFNldCx0aGlzLm5nU3VibWl0PW5l''@;'; put 'put ''dyBmbix0aGlzLmZvcm09bmV3IGlMKHt9LFFWKGgpLGNwKHYpKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXN9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfWdldCBwYXRoKCl7cmV0dXJuW119''@;'; put 'put ''Z2V0IGNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc31hZGRDb250cm9sKGgpe2ZwLnRoZW4oKCk9Pntjb25zdCB2PXRoaXMuX2ZpbmRDb250YWluZXIoaC5wYXRoKTtoLmNvbnRyb2w9di5yZWdpc3RlckNvbnRyb2woaC5uYW1lLGguY29udHJvbCksVXkoaC5jb250cm9sLGgp''@;'; put 'put ''LGguY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLmFkZChoKX0pfWdldENvbnRyb2woaCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQoaC5wYXRoKX1yZW1vdmVDb250cm9sKGgpe2ZwLnRoZW4oKCk9Pntjb25zdCB2PXRoaXMuX2Zp''@;'; put 'put ''bmRDb250YWluZXIoaC5wYXRoKTt2JiZ2LnJlbW92ZUNvbnRyb2woaC5uYW1lKSx0aGlzLl9kaXJlY3RpdmVzLmRlbGV0ZShoKX0pfWFkZEZvcm1Hcm91cChoKXtmcC50aGVuKCgpPT57Y29uc3Qgdj10aGlzLl9maW5kQ29udGFpbmVyKGgucGF0aCkseT1uZXcgaUwoe30pOyhmdW5jdGlvbiBl''@;'; put 'put ''NChkLGcpe3NqKGQsZyl9KSh5LGgpLHYucmVnaXN0ZXJDb250cm9sKGgubmFtZSx5KSx5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSl9cmVtb3ZlRm9ybUdyb3VwKGgpe2ZwLnRoZW4oKCk9Pntjb25zdCB2PXRoaXMuX2ZpbmRDb250YWluZXIoaC5wYXRoKTt2JiZ2''@;'; put 'put ''LnJlbW92ZUNvbnRyb2woaC5uYW1lKX0pfWdldEZvcm1Hcm91cChoKXtyZXR1cm4gdGhpcy5mb3JtLmdldChoLnBhdGgpfXVwZGF0ZU1vZGVsKGgsdil7ZnAudGhlbigoKT0+e3RoaXMuZm9ybS5nZXQoaC5wYXRoKS5zZXRWYWx1ZSh2KX0pfXNldFZhbHVlKGgpe3RoaXMuY29udHJvbC5zZXRW''@;'; put 'put ''YWx1ZShoKX1vblN1Ym1pdChoKXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsZnVuY3Rpb24gZmooZCxnKXtkLl9zeW5jUGVuZGluZ0NvbnRyb2xzKCksZy5mb3JFYWNoKGg9Pntjb25zdCB2PWguY29udHJvbDsic3VibWl0Ij09PXYudXBkYXRlT24mJnYuX3BlbmRpbmdDaGFuZ2UmJihoLnZp''@;'; put 'put ''ZXdUb01vZGVsVXBkYXRlKHYuX3BlbmRpbmdWYWx1ZSksdi5fcGVuZGluZ0NoYW5nZT0hMSl9KX0odGhpcy5mb3JtLHRoaXMuX2RpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdChoKSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0oaCl7dGhpcy5mb3JtLnJlc2V0''@;'; put 'put ''KGgpLHRoaXMuc3VibWl0dGVkPSExfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5mb3JtLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9maW5kQ29udGFpbmVyKGgpe3JldHVybiBoLnBvcCgpLGgu''@;'; put 'put ''bGVuZ3RoP3RoaXMuZm9ybS5nZXQoaCk6dGhpcy5mb3JtfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChYYywxMCksS3QoZWcsMTApKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMs''@;'; put 'put ''ImZvcm1Hcm91cCIsIiJdLFsibmctZm9ybSJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oInN1Ym1pdCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25TdWJtaXQoQyl9KSgicmVzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25SZXNldCgpfSl9''@;'; put 'put ''LGlucHV0czp7b3B0aW9uczpbIm5nRm9ybU9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e25nU3VibWl0OiJuZ1N1Ym1pdCJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W2dvKFtsTF0pLFJvXX0pLGR9KSgpO2Z1bmN0aW9uIGhqKGQsZyl7Y29uc3QgaD1kLmluZGV4T2YoZyk7''@;'; put 'put ''aD4tMSYmZC5zcGxpY2UoaCwxKX1mdW5jdGlvbiBsOChkKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPT1kJiYyPT09T2JqZWN0LmtleXMoZCkubGVuZ3RoJiYidmFsdWUiaW4gZCYmImRpc2FibGVkImluIGR9Y29uc3QgaWc9Y2xhc3MgZXh0ZW5kcyBsantjb25zdHJ1Y3Rvcihn''@;'; put 'put ''PW51bGwsaCx2KXtzdXBlcihqayhoKSxvaih2LGgpKSx0aGlzLmRlZmF1bHRWYWx1ZT1udWxsLHRoaXMuX29uQ2hhbmdlPVtdLHRoaXMuX3BlbmRpbmdDaGFuZ2U9ITEsdGhpcy5fYXBwbHlGb3JtU3RhdGUoZyksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koaCksdGhpcy5faW5pdE9ic2VydmFi''@;'; put 'put ''bGVzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSksYTgoaCkmJihoLm5vbk51bGxhYmxlfHxoLmluaXRpYWxWYWx1ZUlzRGVmYXVsdCkmJih0aGlzLmRlZmF1bHRWYWx1ZT1sOChnKT9nLnZhbHVlOmcp''@;'; put 'put ''fXNldFZhbHVlKGcsaD17fSl7dGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9Zyx0aGlzLl9vbkNoYW5nZS5sZW5ndGgmJiExIT09aC5lbWl0TW9kZWxUb1ZpZXdDaGFuZ2UmJnRoaXMuX29uQ2hhbmdlLmZvckVhY2godj0+dih0aGlzLnZhbHVlLCExIT09aC5lbWl0Vmlld1RvTW9kZWxD''@;'; put 'put ''aGFuZ2UpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoaCl9cGF0Y2hWYWx1ZShnLGg9e30pe3RoaXMuc2V0VmFsdWUoZyxoKX1yZXNldChnPXRoaXMuZGVmYXVsdFZhbHVlLGg9e30pe3RoaXMuX2FwcGx5Rm9ybVN0YXRlKGcpLHRoaXMubWFya0FzUHJpc3RpbmUoaCksdGhpcy5tYXJr''@;'; put 'put ''QXNVbnRvdWNoZWQoaCksdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlLGgpLHRoaXMuX3BlbmRpbmdDaGFuZ2U9ITF9X3VwZGF0ZVZhbHVlKCl7fV9hbnlDb250cm9scyhnKXtyZXR1cm4hMX1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfXJlZ2lzdGVyT25DaGFu''@;'; put 'put ''Z2UoZyl7dGhpcy5fb25DaGFuZ2UucHVzaChnKX1fdW5yZWdpc3Rlck9uQ2hhbmdlKGcpe2hqKHRoaXMuX29uQ2hhbmdlLGcpfXJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShnKXt0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLnB1c2goZyl9X3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGcpe2hq''@;'; put 'put ''KHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UsZyl9X2ZvckVhY2hDaGlsZChnKXt9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtyZXR1cm4hKCJzdWJtaXQiIT09dGhpcy51cGRhdGVPbnx8KHRoaXMuX3BlbmRpbmdEaXJ0eSYmdGhpcy5tYXJrQXNEaXJ0eSgpLHRoaXMuX3BlbmRpbmdUb3VjaGVkJiZ0''@;'; put 'put ''aGlzLm1hcmtBc1RvdWNoZWQoKSwhdGhpcy5fcGVuZGluZ0NoYW5nZSl8fCh0aGlzLnNldFZhbHVlKHRoaXMuX3BlbmRpbmdWYWx1ZSx7b25seVNlbGY6ITAsZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksMCkpfV9hcHBseUZvcm1TdGF0ZShnKXtsOChnKT8odGhpcy52YWx1ZT10aGlzLl9w''@;'; put 'put ''ZW5kaW5nVmFsdWU9Zy52YWx1ZSxnLmRpc2FibGVkP3RoaXMuZGlzYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSk6dGhpcy5lbmFibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0pKTp0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT1nfX0sc0w9e3Byb3ZpZGU6RGMsdXNl''@;'; put 'put ''RXhpc3Rpbmc6U24oKCk9Pl9zKX0sZ2o9KCgpPT5Qcm9taXNlLnJlc29sdmUobnVsbCkpKCk7bGV0IF9zPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBEY3tjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3N1cGVyKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9SSx0aGlzLmNvbnRyb2w9bmV3IGlnLHRo''@;'; put 'put ''aXMuX3JlZ2lzdGVyZWQ9ITEsdGhpcy51cGRhdGU9bmV3IGZuLHRoaXMuX3BhcmVudD1oLHRoaXMuX3NldFZhbGlkYXRvcnModiksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKHkpLHRoaXMudmFsdWVBY2Nlc3Nvcj1mdW5jdGlvbiBReShkLGcpe2lmKCFnKXJldHVybiBudWxsO2xldCBoLHYs''@;'; put 'put ''eTtyZXR1cm4gQXJyYXkuaXNBcnJheShnKSxnLmZvckVhY2goQz0+e0MuY29uc3RydWN0b3I9PT1wMT9oPUM6ZnVuY3Rpb24gcVgoZCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihkLmNvbnN0cnVjdG9yKT09PSQ1fShDKT92PUM6eT1DfSkseXx8dnx8aHx8bnVsbH0oMCxDKX1uZ09u''@;'; put 'put ''Q2hhbmdlcyhoKXtpZih0aGlzLl9jaGVja0ZvckVycm9ycygpLCF0aGlzLl9yZWdpc3RlcmVkfHwibmFtZSJpbiBoKXtpZih0aGlzLl9yZWdpc3RlcmVkJiYodGhpcy5fY2hlY2tOYW1lKCksdGhpcy5mb3JtRGlyZWN0aXZlKSl7Y29uc3Qgdj1oLm5hbWUucHJldmlvdXNWYWx1ZTt0aGlzLmZv''@;'; put 'put ''cm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh7bmFtZTp2LHBhdGg6dGhpcy5fZ2V0UGF0aCh2KX0pfXRoaXMuX3NldFVwQ29udHJvbCgpfSJpc0Rpc2FibGVkImluIGgmJnRoaXMuX3VwZGF0ZURpc2FibGVkKGgpLGZ1bmN0aW9uIGNqKGQsZyl7aWYoIWQuaGFzT3duUHJvcGVydHkoIm1vZGVs''@;'; put 'put ''IikpcmV0dXJuITE7Y29uc3QgaD1kLm1vZGVsO3JldHVybiEhaC5pc0ZpcnN0Q2hhbmdlKCl8fCFPYmplY3QuaXMoZyxoLmN1cnJlbnRWYWx1ZSl9KGgsdGhpcy52aWV3TW9kZWwpJiYodGhpcy5fdXBkYXRlVmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9bmdP''@;'; put 'put ''bkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpfWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuX2dldFBhdGgodGhpcy5uYW1lKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50''@;'; put 'put ''LmZvcm1EaXJlY3RpdmU6bnVsbH12aWV3VG9Nb2RlbFVwZGF0ZShoKXt0aGlzLnZpZXdNb2RlbD1oLHRoaXMudXBkYXRlLmVtaXQoaCl9X3NldFVwQ29udHJvbCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCksdGhpcy5faXNTdGFuZGFsb25lKCk/dGhpcy5fc2V0VXBTdGFuZGFsb25lKCk6''@;'; put 'put ''dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5fcmVnaXN0ZXJlZD0hMH1fc2V0VXBkYXRlU3RyYXRlZ3koKXt0aGlzLm9wdGlvbnMmJm51bGwhPXRoaXMub3B0aW9ucy51cGRhdGVPbiYmKHRoaXMuY29udHJvbC5fdXBkYXRlT249dGhpcy5vcHRpb25zLnVwZGF0ZU9u''@;'; put 'put ''KX1faXNTdGFuZGFsb25lKCl7cmV0dXJuIXRoaXMuX3BhcmVudHx8ISghdGhpcy5vcHRpb25zfHwhdGhpcy5vcHRpb25zLnN0YW5kYWxvbmUpfV9zZXRVcFN0YW5kYWxvbmUoKXtVeSh0aGlzLmNvbnRyb2wsdGhpcyksdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRF''@;'; put 'put ''dmVudDohMX0pfV9jaGVja0ZvckVycm9ycygpe3RoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tQYXJlbnRUeXBlKCl7fV9jaGVja05hbWUoKXt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhpcy5u''@;'; put 'put ''YW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLl9pc1N0YW5kYWxvbmUoKX1fdXBkYXRlVmFsdWUoaCl7Z2oudGhlbigoKT0+e3ZhciB2O3RoaXMuY29udHJvbC5zZXRWYWx1ZShoLHtlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6ITF9KSxudWxsPT09KHY9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYp''@;'; put 'put ''fHx2b2lkIDA9PT12fHx2Lm1hcmtGb3JDaGVjaygpfSl9X3VwZGF0ZURpc2FibGVkKGgpe2NvbnN0IHY9aC5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSx5PTAhPT12JiZINih2KTtnai50aGVuKCgpPT57dmFyIEM7eSYmIXRoaXMuY29udHJvbC5kaXNhYmxlZD90aGlzLmNvbnRyb2wuZGlzYWJs''@;'; put 'put ''ZSgpOiF5JiZ0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMuY29udHJvbC5lbmFibGUoKSxudWxsPT09KEM9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYpfHx2b2lkIDA9PT1DfHxDLm1hcmtGb3JDaGVjaygpfSl9X2dldFBhdGgoaCl7cmV0dXJuIHRoaXMuX3BhcmVudD9mdW5jdGlvbiBKaChk''@;'; put 'put ''LGcpe3JldHVyblsuLi5nLnBhdGgsZF19KGgsdGhpcy5fcGFyZW50KTpbaF19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KE1mLDkpLEt0KFhjLDEwKSxLdChlZywxMCksS3QodXAsMTApLEt0KGQxLDgpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6''@;'; put 'put ''ZCxzZWxlY3RvcnM6W1siIiwibmdNb2RlbCIsIiIsMywiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJmb3JtQ29udHJvbCIsIiJdXSxpbnB1dHM6e25hbWU6Im5hbWUiLGlzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdLG9wdGlvbnM6''@;'; put 'put ''WyJuZ01vZGVsT3B0aW9ucyIsIm9wdGlvbnMiXX0sb3V0cHV0czp7dXBkYXRlOiJuZ01vZGVsQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ01vZGVsIl0sZmVhdHVyZXM6W2dvKFtzTF0pLFJvLGQyXX0pLGR9KSgpLG9nPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywibmdOYXRpdmVWYWxpZGF0ZSIsIiJdXSxob3N0QXR0cnM6WyJub3ZhbGlkYXRlIiwiIl19KSxkfSkoKTtjb25zdCBVaz17cHJvdmlkZTp1cCx1c2VF''@;'; put 'put ''eGlzdGluZzpTbigoKT0+bWopLG11bHRpOiEwfTtsZXQgbWo9KCgpPT57Y2xhc3MgZCBleHRlbmRzICQ1e3dyaXRlVmFsdWUoaCl7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLG51bGw9PWg/IiI6aCl9cmVnaXN0ZXJPbkNoYW5nZShoKXt0aGlzLm9uQ2hhbmdlPXY9PntoKCIiPT12P251bGw6''@;'; put 'put ''cGFyc2VGbG9hdCh2KSl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuKGd8fChnPXQyKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZv''@;'; put 'put ''cm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZabigiaW5wdXQiLGZ1bmN0aW9uKEMpe3JldHVybiB2''@;'; put 'put ''Lm9uQ2hhbmdlKEMudGFyZ2V0LnZhbHVlKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2Lm9uVG91Y2hlZCgpfSl9LGZlYXR1cmVzOltnbyhbVWtdKSxSb119KSxkfSkoKTtjb25zdCBRaz17cHJvdmlkZTp1cCx1c2VFeGlzdGluZzpTbigoKT0+SmspLG11bHRpOiEwfTtsZXQgQWo9KCgp''@;'; put 'put ''PT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7fSksZH0pKCksRjJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9hY2Nlc3NvcnM9W119YWRk''@;'; put 'put ''KGgsdil7dGhpcy5fYWNjZXNzb3JzLnB1c2goW2gsdl0pfXJlbW92ZShoKXtmb3IobGV0IHY9dGhpcy5fYWNjZXNzb3JzLmxlbmd0aC0xO3Y+PTA7LS12KWlmKHRoaXMuX2FjY2Vzc29yc1t2XVsxXT09PWgpcmV0dXJuIHZvaWQgdGhpcy5fYWNjZXNzb3JzLnNwbGljZSh2LDEpfXNlbGVjdCho''@;'; put 'put ''KXt0aGlzLl9hY2Nlc3NvcnMuZm9yRWFjaCh2PT57dGhpcy5faXNTYW1lR3JvdXAodixoKSYmdlsxXSE9PWgmJnZbMV0uZmlyZVVuY2hlY2soaC52YWx1ZSl9KX1faXNTYW1lR3JvdXAoaCx2KXtyZXR1cm4hIWhbMF0uY29udHJvbCYmaFswXS5fcGFyZW50PT09di5fY29udHJvbC5fcGFyZW50''@;'; put 'put ''JiZoWzFdLm5hbWU9PT12Lm5hbWV9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOkFqfSksZH0pKCksSms9KCgpPT57Y2xhc3MgZCBleHRlbmRzICQ1''@;'; put 'put ''e2NvbnN0cnVjdG9yKGgsdix5LEMpe3N1cGVyKGgsdiksdGhpcy5fcmVnaXN0cnk9eSx0aGlzLl9pbmplY3Rvcj1DLHRoaXMub25DaGFuZ2U9KCk9Pnt9fW5nT25Jbml0KCl7dGhpcy5fY29udHJvbD10aGlzLl9pbmplY3Rvci5nZXQoRGMpLHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuX3JlZ2lz''@;'; put 'put ''dHJ5LmFkZCh0aGlzLl9jb250cm9sLHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVnaXN0cnkucmVtb3ZlKHRoaXMpfXdyaXRlVmFsdWUoaCl7dGhpcy5fc3RhdGU9aD09PXRoaXMudmFsdWUsdGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdGhpcy5fc3RhdGUpfXJlZ2lzdGVyT25DaGFu''@;'; put 'put ''Z2UoaCl7dGhpcy5fZm49aCx0aGlzLm9uQ2hhbmdlPSgpPT57aCh0aGlzLnZhbHVlKSx0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyl9fWZpcmVVbmNoZWNrKGgpe3RoaXMud3JpdGVWYWx1ZShoKX1fY2hlY2tOYW1lKCl7IXRoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlz''@;'; put 'put ''Lm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChEYSksS3QoX28pLEt0KEYyZSksS3QoeHMpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwicmFkaW8i''@;'; put 'put ''LCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsInJhZGlvIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsInJhZGlvIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHYub25DaGFuZ2UoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2Lm9uVG91Y2hlZCgpfSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LGZlYXR1cmVzOltnbyhbUWtdKSxSb119KSxkfSkoKTtjb25zdCB5''@;'; put 'put ''aj1uZXcgT3QoIk5nTW9kZWxXaXRoRm9ybUNvbnRyb2xXYXJuaW5nIiksb0s9e3Byb3ZpZGU6dXAsdXNlRXhpc3Rpbmc6U24oKCk9PkVmKSxtdWx0aTohMH07ZnVuY3Rpb24gYUsoZCxnKXtyZXR1cm4gbnVsbD09ZD9gJHtnfWA6KGcmJiJvYmplY3QiPT10eXBlb2YgZyYmKGc9Ik9iamVjdCIp''@;'; put 'put ''LGAke2R9OiAke2d9YC5zbGljZSgwLDUwKSl9bGV0IEVmPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyAkNXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5fY29tcGFyZVdpdGg9T2JqZWN0LmlzfXNl''@;'; put 'put ''dCBjb21wYXJlV2l0aChoKXt0aGlzLl9jb21wYXJlV2l0aD1ofXdyaXRlVmFsdWUoaCl7dGhpcy52YWx1ZT1oO2NvbnN0IHk9YUsodGhpcy5fZ2V0T3B0aW9uSWQoaCksaCk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLHkpfXJlZ2lzdGVyT25DaGFuZ2UoaCl7dGhpcy5vbkNoYW5nZT12PT57''@;'; put 'put ''dGhpcy52YWx1ZT10aGlzLl9nZXRPcHRpb25WYWx1ZSh2KSxoKHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKGgpe2Zvcihjb25zdCB2IG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtl''@;'; put 'put ''eXMoKSkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldCh2KSxoKSlyZXR1cm4gdjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUoaCl7Y29uc3Qgdj1mdW5jdGlvbiBsSyhkKXtyZXR1cm4gZC5zcGxpdCgiOiIpWzBdfShoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFw''@;'; put 'put ''Lmhhcyh2KT90aGlzLl9vcHRpb25NYXAuZ2V0KHYpOmh9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBnO3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4oZ3x8KGc9dDIoZCkpKSh2fHxkKX19KCksZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sic2VsZWN0Iiwi''@;'; put 'put ''Zm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwiZm9ybUNvbnRyb2wiLCIiLDMsIm11bHRpcGxlIiwiIl0sWyJzZWxlY3QiLCJuZ01vZGVsIiwiIiwzLCJtdWx0aXBsZSIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJjaGFuZ2Ui''@;'; put 'put ''LGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uQ2hhbmdlKEMudGFyZ2V0LnZhbHVlKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2Lm9uVG91Y2hlZCgpfSl9LGlucHV0czp7Y29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIn0sZmVhdHVyZXM6W2dvKFtvS10pLFJvXX0pLGR9KSgpLEozPSgoKT0+''@;'; put 'put ''e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX2VsZW1lbnQ9aCx0aGlzLl9yZW5kZXJlcj12LHRoaXMuX3NlbGVjdD15LHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbigpKX1zZXQgbmdWYWx1ZShoKXtudWxsIT10aGlzLl9zZWxlY3Qm''@;'; put 'put ''Jih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCxoKSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoYUsodGhpcy5pZCxoKSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKGgpe3RoaXMuX3NldEVsZW1lbnRWYWx1ZShoKSx0aGlz''@;'; put 'put ''Ll9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSl9X3NldEVsZW1lbnRWYWx1ZShoKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIixoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVj''@;'; put 'put ''dCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoX28pLEt0KERhKSxLdChFZiw5KSl9LGQu''@;'; put 'put ''XHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSksZH0pKCk7Y29uc3QgWjJlPXtwcm92aWRlOnVwLHVzZUV4aXN0aW5nOlNuKCgpPT5LayksbXVsdGk6ITB9O2Z1bmN0aW9uIHNLKGQsZyl7''@;'; put 'put ''cmV0dXJuIG51bGw9PWQ/YCR7Z31gOigic3RyaW5nIj09dHlwZW9mIGcmJihnPWAnJHtnfSdgKSxnJiYib2JqZWN0Ij09dHlwZW9mIGcmJihnPSJPYmplY3QiKSxgJHtkfTogJHtnfWAuc2xpY2UoMCw1MCkpfWxldCBLaz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgJDV7Y29uc3RydWN0b3IoKXtz''@;'; put 'put ''dXBlciguLi5hcmd1bWVudHMpLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMuX2NvbXBhcmVXaXRoPU9iamVjdC5pc31zZXQgY29tcGFyZVdpdGgoaCl7dGhpcy5fY29tcGFyZVdpdGg9aH13cml0ZVZhbHVlKGgpe2xldCB2O2lmKHRoaXMudmFsdWU9aCxB''@;'; put 'put ''cnJheS5pc0FycmF5KGgpKXtjb25zdCB5PWgubWFwKEM9PnRoaXMuX2dldE9wdGlvbklkKEMpKTt2PShDLEkpPT57Qy5fc2V0U2VsZWN0ZWQoeS5pbmRleE9mKEkudG9TdHJpbmcoKSk+LTEpfX1lbHNlIHY9KHksQyk9Pnt5Ll9zZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JF''@;'; put 'put ''YWNoKHYpfXJlZ2lzdGVyT25DaGFuZ2UoaCl7dGhpcy5vbkNoYW5nZT12PT57Y29uc3QgeT1bXSxDPXYuc2VsZWN0ZWRPcHRpb25zO2lmKHZvaWQgMCE9PUMpe2NvbnN0IEk9Qztmb3IobGV0IGo9MDtqPEkubGVuZ3RoO2orKyl7Y29uc3QgX2U9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoSVtqXS52''@;'; put 'put ''YWx1ZSk7eS5wdXNoKF9lKX19ZWxzZXtjb25zdCBJPXYub3B0aW9ucztmb3IobGV0IGo9MDtqPEkubGVuZ3RoO2orKyl7Y29uc3QgY2U9SVtqXTtpZihjZS5zZWxlY3RlZCl7Y29uc3QgX2U9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoY2UudmFsdWUpO3kucHVzaChfZSl9fX10aGlzLnZhbHVlPXks''@;'; put 'put ''aCh5KX19X3JlZ2lzdGVyT3B0aW9uKGgpe2NvbnN0IHY9KHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuc2V0KHYsaCksdn1fZ2V0T3B0aW9uSWQoaCl7Zm9yKGNvbnN0IHYgb2YgQXJyYXkuZnJvbSh0aGlzLl9vcHRpb25NYXAua2V5cygpKSlp''@;'; put 'put ''Zih0aGlzLl9jb21wYXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KHYpLl92YWx1ZSxoKSlyZXR1cm4gdjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUoaCl7Y29uc3Qgdj1mdW5jdGlvbiB6MmUoZCl7cmV0dXJuIGQuc3BsaXQoIjoiKVswXX0oaCk7cmV0dXJuIHRoaXMuX29wdGlvbk1h''@;'; put 'put ''cC5oYXModik/dGhpcy5fb3B0aW9uTWFwLmdldCh2KS5fdmFsdWU6aH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz10MihkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJz''@;'; put 'put ''ZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNoYW5n''@;'; put 'put ''ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25DaGFuZ2UoQy50YXJnZXQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25Ub3VjaGVkKCl9KX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbZ28oW1oyZV0pLFJvXX0pLGR9KSgpLFgzPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX2VsZW1lbnQ9aCx0aGlzLl9yZW5kZXJlcj12LHRoaXMuX3NlbGVjdD15LHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbih0aGlzKSl9c2V0IG5nVmFsdWUoaCl7bnVsbCE9dGhpcy5fc2VsZWN0''@;'; put 'put ''JiYodGhpcy5fdmFsdWU9aCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoc0sodGhpcy5pZCxoKSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKGgpe3RoaXMuX3NlbGVjdD8odGhpcy5fdmFsdWU9aCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoc0so''@;'; put 'put ''dGhpcy5pZCxoKSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSk6dGhpcy5fc2V0RWxlbWVudFZhbHVlKGgpfV9zZXRFbGVtZW50VmFsdWUoaCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIs''@;'; put 'put ''aCl9X3NldFNlbGVjdGVkKGgpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwic2VsZWN0ZWQiLGgpfW5nT25EZXN0cm95KCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3Nl''@;'; put 'put ''bGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfbyksS3QoRGEpLEt0KEtrLDkpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sib3B0aW9uIl1dLGlucHV0czp7''@;'; put 'put ''bmdWYWx1ZToibmdWYWx1ZSIsdmFsdWU6InZhbHVlIn19KSxkfSkoKSxnSz0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltBal19KSxk''@;'; put 'put ''fSkoKSx4Zj0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltnS119KSxkfSkoKSxtSz0oKCk9PntjbGFzcyBke3N0YXRpYyB3aXRoQ29u''@;'; put 'put ''ZmlnKGgpe3JldHVybntuZ01vZHVsZTpkLHByb3ZpZGVyczpbe3Byb3ZpZGU6eWosdXNlVmFsdWU6aC53YXJuT25OZ01vZGVsV2l0aEZvcm1Db250cm9sfV19fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0p''@;'; put 'put ''LGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltnS119KSxkfSkoKTtmdW5jdGlvbiB2SyhkKXt0aGlzLndyYXBwZWQ9ZH1mdW5jdGlvbiBlUyhkKXt2YXIgZyxoO2Z1bmN0aW9uIHkoSSxqKXt0cnl7dmFyIGNlPWRbSV0oaiksX2U9Y2UudmFsdWUsUmU9X2UgaW5zdGFuY2VvZiB2SztQcm9taXNl''@;'; put 'put ''LnJlc29sdmUoUmU/X2Uud3JhcHBlZDpfZSkudGhlbihmdW5jdGlvbihOZSl7UmU/eSgicmV0dXJuIj09PUk/InJldHVybiI6Im5leHQiLE5lKTpDKGNlLmRvbmU/InJldHVybiI6Im5vcm1hbCIsTmUpfSxmdW5jdGlvbihOZSl7eSgidGhyb3ciLE5lKX0pfWNhdGNoKE5lKXtDKCJ0aHJvdyIs''@;'; put 'put ''TmUpfX1mdW5jdGlvbiBDKEksail7c3dpdGNoKEkpe2Nhc2UicmV0dXJuIjpnLnJlc29sdmUoe3ZhbHVlOmosZG9uZTohMH0pO2JyZWFrO2Nhc2UidGhyb3ciOmcucmVqZWN0KGopO2JyZWFrO2RlZmF1bHQ6Zy5yZXNvbHZlKHt2YWx1ZTpqLGRvbmU6ITF9KX0oZz1nLm5leHQpP3koZy5rZXks''@;'; put 'put ''Zy5hcmcpOmg9bnVsbH10aGlzLl9pbnZva2U9ZnVuY3Rpb24gdihJLGope3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihjZSxfZSl7dmFyIFJlPXtrZXk6SSxhcmc6aixyZXNvbHZlOmNlLHJlamVjdDpfZSxuZXh0Om51bGx9O2g/aD1oLm5leHQ9UmU6KGc9aD1SZSx5KEksaikpfSl9LCJm''@;'; put 'put ''dW5jdGlvbiIhPXR5cGVvZiBkLnJldHVybiYmKHRoaXMucmV0dXJuPXZvaWQgMCl9ZVMucHJvdG90eXBlWyJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZVMucHJvdG90eXBl''@;'; put 'put ''Lm5leHQ9ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuX2ludm9rZSgibmV4dCIsZCl9LGVTLnByb3RvdHlwZS50aHJvdz1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5faW52b2tlKCJ0aHJvdyIsZCl9LGVTLnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuX2ludm9rZSgi''@;'; put 'put ''cmV0dXJuIixkKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbDtjbGFzcyB2THtzdGF0aWMgZ2V0VHJhcEVsZW1lbnRzKCl7cmV0dXJuWy4uLksxLnN0YXRlLmZvY3VzVHJhcEl0ZW1zXX1zdGF0aWMgc2V0VHJhcEVsZW1lbnRzKGcpe2NvbnN0IGg9ZG9jdW1lbnQucXVlcnlT''@;'; put 'put ''ZWxlY3RvcigiaHRtbCIpO251bGwhPT1oJiZmdW5jdGlvbiBhZyhkLC4uLmcpe2QmJmcuZm9yRWFjaCgoW2gsdl0pPT57ITE9PT12fHxudWxsPT09dj9kLnJlbW92ZUF0dHJpYnV0ZShoKTpkLnNldEF0dHJpYnV0ZShoLHYrIiIpfSl9KGgsWyJjZHMtZm9jdXMtdHJhcCIsISFnLmxlbmd0aCYm''@;'; put 'put ''IiJdKSxLMS5zdGF0ZS5mb2N1c1RyYXBJdGVtcz1bLi4uZ119c3RhdGljIHJlbW92ZVRyYXBFbGVtZW50KGcpe3RoaXMuZ2V0VHJhcEVsZW1lbnRzKCkubGVuZ3RoPDF8fHRoaXMuc2V0VHJhcEVsZW1lbnRzKFsuLi50aGlzLmdldFRyYXBFbGVtZW50cygpLmZpbHRlcihoPT5oLmZvY3VzVHJh''@;'; put 'put ''cElkIT09Zy5mb2N1c1RyYXBJZCldKX1zdGF0aWMgc2V0Q3VycmVudChnKXtudWxsIT1nJiZnLmZvY3VzVHJhcElkJiZ0aGlzLnNldFRyYXBFbGVtZW50cyhbLi4udGhpcy5nZXRUcmFwRWxlbWVudHMoKS5maWx0ZXIoaD0+aC5mb2N1c1RyYXBJZCE9PWcuZm9jdXNUcmFwSWQpLGddKX1zdGF0''@;'; put 'put ''aWMgYWN0aXZhdGVQcmV2aW91c0N1cnJlbnQoKXt0aGlzLnNldFRyYXBFbGVtZW50cyhbLi4udGhpcy5nZXRUcmFwRWxlbWVudHMoKV0uc2xpY2UoMCwtMSkpfXN0YXRpYyBnZXRDdXJyZW50KCl7cmV0dXJuIGZ1bmN0aW9uIHQxZShkKXtyZXR1cm4gZC5sZW5ndGg/ZFtkLmxlbmd0aC0xXTp2''@;'; put 'put ''b2lkIDB9KHRoaXMuZ2V0VHJhcEVsZW1lbnRzKCkpfHxudWxsfX1jb25zdCBNMWU9ZTgoMywoZCxnLGgpPT57IWZ1bmN0aW9uIGZYKGQsZyl7cmV0dXJuIGd8fChnPXdpbmRvdyYmd2luZG93LmN1c3RvbUVsZW1lbnRzKSwhZ3x8ISFnLmdldChkKX0oZCl8fGZ1bmN0aW9uIGVYKCl7dmFyIGQs''@;'; put 'put ''ZztyZXR1cm4gbnVsbD09KGc9bnVsbD09KGQ9bnVsbD09d2luZG93P3ZvaWQgMDp3aW5kb3cubG9jYXRpb24pP3ZvaWQgMDpkLmhyZWYpP3ZvaWQgMDpnLmluY2x1ZGVzKCJsb2NhbGhvc3Q6NjAwNiIpfSgpPyhoLmRlZmluZShkLGcpLGRYKCksd2luZG93JiYhT2JqZWN0LmtleXMod2luZG93''@;'; put 'put ''LkNEUy5fc3RhdGUuZWxlbWVudFJlZ2lzdHJ5KS5zb21lKHY9PnY9PT1kKSYmKHdpbmRvdy5DRFMuX3N0YXRlLmVsZW1lbnRSZWdpc3RyeT1nRyhwcyh7fSx3aW5kb3cuQ0RTLl9zdGF0ZS5lbGVtZW50UmVnaXN0cnkpLHtbZF06e319KSkpOks3Lndhcm4oZCsiIGhhcyBhbHJlYWR5IGJlZW4g''@;'; put 'put ''cmVnaXN0ZXJlZCIpfSk7ZnVuY3Rpb24gVEsoZCxnKXtYSigpJiZoWChbImN1c3RvbUVsZW1lbnRzIl0pJiZNMWUoZCxnLHdpbmRvdy5jdXN0b21FbGVtZW50cyl9bGV0IElLPSExO2Z1bmN0aW9uIEUxZShkKXtpZigoZD1NYXRoLnRydW5jKGQpfHwwKTwwJiYoZCs9dGhpcy5sZW5ndGgpLCEo''@;'; put 'put ''ZDwwfHxkPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXNbZF19aWYoIUlLKXtJSz0hMDtjb25zdCBkPVJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5KTtmb3IoY29uc3QgZyBvZltBcnJheSxTdHJpbmcsZF0pT2JqZWN0LmRlZmluZVByb3BlcnR5KGcucHJvdG90eXBlLCJhdCIse3Zh''@;'; put 'put ''bHVlOkUxZSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfWxldCBESz0hMSxMSz0hMTtmdW5jdGlvbiB4aihkLGcsaCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsaCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuaGFzQXR0cmlidXRlKGcpP3RoaXMuZ2V0QXR0cmlidXRlKGcpOm51bGx9LHNldDpmdW5jdGlvbih2KXtudWxsIT09dj90aGlzLnNldEF0dHJpYnV0ZShnLHYpOnRoaXMucmVtb3ZlQXR0cmlidXRlKGcpfX0pfWZ1bmN0aW9uIE9LKGQsZyxoLHYseSxDLEkpe3RyeXt2YXIgaj1kW0Nd''@;'; put 'put ''KEkpLGNlPWoudmFsdWV9Y2F0Y2goX2Upe3JldHVybiB2b2lkIGgoX2UpfWouZG9uZT9nKGNlKTpQcm9taXNlLnJlc29sdmUoY2UpLnRoZW4odix5KX1mdW5jdGlvbiBSSyhkKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZShmdW5j''@;'; put 'put ''dGlvbih2LHkpe3ZhciBDPWQuYXBwbHkoZyxoKTtmdW5jdGlvbiBJKGNlKXtPSyhDLHYseSxJLGosIm5leHQiLGNlKX1mdW5jdGlvbiBqKGNlKXtPSyhDLHYseSxJLGosInRocm93IixjZSl9SSh2b2lkIDApfSl9fURLfHxFbGVtZW50LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgicm9sZSIp''@;'; put 'put ''fHwoeGooRWxlbWVudC5wcm90b3R5cGUsInJvbGUiLCJyb2xlIiksREs9ITApLExLfHxFbGVtZW50LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgiYXJpYUxhYmVsIil8fChMSz0hMCxbIkFjdGl2ZURlc2NlbmRhbnQiLCJBdG9taWMiLCJBdXRvQ29tcGxldGUiLCJCdXN5IiwiQ2hlY2tlZCIs''@;'; put 'put ''IkNvbENvdW50IiwiQ29sSW5kZXgiLCJDb2xTcGFuIiwiQ29udHJvbHMiLCJDdXJyZW50IiwiRGVzY3JpYmVkQnkiLCJEZXRhaWxzIiwiRGlzYWJsZWQiLCJFcnJvck1lc3NhZ2UiLCJFeHBhbmRlZCIsIkZsb3dUbyIsIkhhc1BvcHVwIiwiSGlkZGVuIiwiSW52YWxpZCIsIktleVNob3J0Y3V0''@;'; put 'put ''cyIsIkxhYmVsIiwiTGFiZWxsZWRCeSIsIkxldmVsIiwiTGl2ZSIsIk1vZGFsIiwiTXVsdGlMaW5lIiwiTXVsdGlTZWxlY3RhYmxlIiwiT3JpZW50YXRpb24iLCJPd25zIiwiUGxhY2Vob2xkZXIiLCJQb3NJblNldCIsIlByZXNzZWQiLCJSZWFkT25seSIsIlJlbGV2YW50IiwiUmVxdWlyZWQi''@;'; put 'put ''LCJSb2xlRGVzY3JpcHRpb24iLCJSb3dDb3VudCIsIlJvd0luZGV4IiwiUm93U3BhbiIsIlNlbGVjdGVkIiwiU2V0U2l6ZSIsIlNvcnQiLCJWYWx1ZU1heCIsIlZhbHVlTWluIiwiVmFsdWVOb3ciLCJWYWx1ZVRleHQiXS5mb3JFYWNoKGQ9PnhqKEVsZW1lbnQucHJvdG90eXBlLCJhcmlhLSIr''@;'; put 'put ''ZC50b0xvd2VyQ2FzZSgpLCJhcmlhIitkKSkpO2NvbnN0IEFMPXdpbmRvdyxLeT1BTC5TaGFkb3dSb290JiYodm9pZCAwPT09QUwuU2hhZHlDU1N8fEFMLlNoYWR5Q1NTLm5hdGl2ZVNoYWRvdykmJiJhZG9wdGVkU3R5bGVTaGVldHMiaW4gRG9jdW1lbnQucHJvdG90eXBlJiYicmVwbGFjZSJp''@;'; put 'put ''biBDU1NTdHlsZVNoZWV0LnByb3RvdHlwZSx5TD1TeW1ib2woKSxCSz1uZXcgV2Vha01hcDtjbGFzcyBQS3tjb25zdHJ1Y3RvcihnLGgsdil7aWYodGhpcy5fJGNzc1Jlc3VsdCQ9ITAsdiE9PXlMKXRocm93IEVycm9yKCJDU1NSZXN1bHQgaXMgbm90IGNvbnN0cnVjdGFibGUuIFVzZSBgdW5z''@;'; put 'put ''YWZlQ1NTYCBvciBgY3NzYCBpbnN0ZWFkLiIpO3RoaXMuY3NzVGV4dD1nLHRoaXMudD1ofWdldCBzdHlsZVNoZWV0KCl7bGV0IGc9dGhpcy5vO2NvbnN0IGg9dGhpcy50O2lmKEt5JiZ2b2lkIDA9PT1nKXtjb25zdCB2PXZvaWQgMCE9PWgmJjE9PT1oLmxlbmd0aDt2JiYoZz1CSy5nZXQoaCkp''@;'; put 'put ''LHZvaWQgMD09PWcmJigodGhpcy5vPWc9bmV3IENTU1N0eWxlU2hlZXQpLnJlcGxhY2VTeW5jKHRoaXMuY3NzVGV4dCksdiYmQksuc2V0KGgsZykpfXJldHVybiBnfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuY3NzVGV4dH19Y29uc3Qgd0w9KGQsLi4uZyk9Pntjb25zdCBoPTE9PT1kLmxlbmd0''@;'; put 'put ''aD9kWzBdOmcucmVkdWNlKCh2LHksQyk9PnYrKEk9PntpZighMD09PUkuXyRjc3NSZXN1bHQkKXJldHVybiBJLmNzc1RleHQ7aWYoIm51bWJlciI9PXR5cGVvZiBJKXJldHVybiBJO3Rocm93IEVycm9yKCJWYWx1ZSBwYXNzZWQgdG8gJ2NzcycgZnVuY3Rpb24gbXVzdCBiZSBhICdjc3MnIGZ1''@;'; put 'put ''bmN0aW9uIHJlc3VsdDogIitJKyIuIFVzZSAndW5zYWZlQ1NTJyB0byBwYXNzIG5vbi1saXRlcmFsIHZhbHVlcywgYnV0IHRha2UgY2FyZSB0byBlbnN1cmUgcGFnZSBzZWN1cml0eS4iKX0pKHkpK2RbQysxXSxkWzBdKTtyZXR1cm4gbmV3IFBLKGgsZCx5TCl9LFRqPUt5P2Q9PmQ6ZD0+ZCBp''@;'; put 'put ''bnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/KGc9PntsZXQgaD0iIjtmb3IoY29uc3QgdiBvZiBnLmNzc1J1bGVzKWgrPXYuY3NzVGV4dDtyZXR1cm4oZD0+bmV3IFBLKCJzdHJpbmciPT10eXBlb2YgZD9kOmQrIiIsdm9pZCAwLHlMKSkoaCl9KShkKTpkO3ZhciBJajtjb25zdCBiTD13aW5kb3cs''@;'; put 'put ''RGo9YkwudHJ1c3RlZFR5cGVzLEZLPURqP0RqLmVtcHR5U2NyaXB0OiIiLEhLPWJMLnJlYWN0aXZlRWxlbWVudFBvbHlmaWxsU3VwcG9ydCxMaj17dG9BdHRyaWJ1dGUoZCxnKXtzd2l0Y2goZyl7Y2FzZSBCb29sZWFuOmQ9ZD9GSzpudWxsO2JyZWFrO2Nhc2UgT2JqZWN0OmNhc2UgQXJyYXk6''@;'; put 'put ''ZD1udWxsPT1kP2Q6SlNPTi5zdHJpbmdpZnkoZCl9cmV0dXJuIGR9LGZyb21BdHRyaWJ1dGUoZCxnKXtsZXQgaD1kO3N3aXRjaChnKXtjYXNlIEJvb2xlYW46aD1udWxsIT09ZDticmVhaztjYXNlIE51bWJlcjpoPW51bGw9PT1kP251bGw6TnVtYmVyKGQpO2JyZWFrO2Nhc2UgT2JqZWN0OmNh''@;'; put 'put ''c2UgQXJyYXk6dHJ5e2g9SlNPTi5wYXJzZShkKX1jYXRjaCh2KXtoPW51bGx9fXJldHVybiBofX0sTks9KGQsZyk9PmchPT1kJiYoZz09Z3x8ZD09ZCksT2o9e2F0dHJpYnV0ZTohMCx0eXBlOlN0cmluZyxjb252ZXJ0ZXI6TGoscmVmbGVjdDohMSxoYXNDaGFuZ2VkOk5LfTtjbGFzcyAkeSBl''@;'; put 'put ''eHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl8kRWk9bmV3IE1hcCx0aGlzLmlzVXBkYXRlUGVuZGluZz0hMSx0aGlzLmhhc1VwZGF0ZWQ9ITEsdGhpcy5fJEVsPW51bGwsdGhpcy51KCl9c3RhdGljIGFkZEluaXRpYWxpemVyKGcpe3ZhciBoO251bGwhPT0o''@;'; put 'put ''aD10aGlzLmgpJiZ2b2lkIDAhPT1ofHwodGhpcy5oPVtdKSx0aGlzLmgucHVzaChnKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3RoaXMuZmluYWxpemUoKTtjb25zdCBnPVtdO3JldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLmZvckVhY2goKGgsdik9Pntjb25zdCB5PXRo''@;'; put 'put ''aXMuXyRFcCh2LGgpO3ZvaWQgMCE9PXkmJih0aGlzLl8kRXYuc2V0KHksdiksZy5wdXNoKHkpKX0pLGd9c3RhdGljIGNyZWF0ZVByb3BlcnR5KGcsaD1Pail7aWYoaC5zdGF0ZSYmKGguYXR0cmlidXRlPSExKSx0aGlzLmZpbmFsaXplKCksdGhpcy5lbGVtZW50UHJvcGVydGllcy5zZXQoZyxo''@;'; put 'put ''KSwhaC5ub0FjY2Vzc29yJiYhdGhpcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoZykpe2NvbnN0IHY9InN5bWJvbCI9PXR5cGVvZiBnP1N5bWJvbCgpOiJfXyIrZyx5PXRoaXMuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGcsdixoKTt2b2lkIDAhPT15JiZPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''dGhpcy5wcm90b3R5cGUsZyx5KX19c3RhdGljIGdldFByb3BlcnR5RGVzY3JpcHRvcihnLGgsdil7cmV0dXJue2dldCgpe3JldHVybiB0aGlzW2hdfSxzZXQoeSl7Y29uc3QgQz10aGlzW2ddO3RoaXNbaF09eSx0aGlzLnJlcXVlc3RVcGRhdGUoZyxDLHYpfSxjb25maWd1cmFibGU6ITAsZW51''@;'; put 'put ''bWVyYWJsZTohMH19c3RhdGljIGdldFByb3BlcnR5T3B0aW9ucyhnKXtyZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllcy5nZXQoZyl8fE9qfXN0YXRpYyBmaW5hbGl6ZSgpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoImZpbmFsaXplZCIpKXJldHVybiExO3RoaXMuZmluYWxpemVkPSEwO2Nv''@;'; put 'put ''bnN0IGc9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKGcuZmluYWxpemUoKSx0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzPW5ldyBNYXAoZy5lbGVtZW50UHJvcGVydGllcyksdGhpcy5fJEV2PW5ldyBNYXAsdGhpcy5oYXNPd25Qcm9wZXJ0eSgicHJvcGVydGllcyIpKXtjb25zdCBoPXRo''@;'; put 'put ''aXMucHJvcGVydGllcyx2PVsuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoKSwuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGgpXTtmb3IoY29uc3QgeSBvZiB2KXRoaXMuY3JlYXRlUHJvcGVydHkoeSxoW3ldKX1yZXR1cm4gdGhpcy5lbGVtZW50U3R5bGVzPXRoaXMuZmlu''@;'; put 'put ''YWxpemVTdHlsZXModGhpcy5zdHlsZXMpLCEwfXN0YXRpYyBmaW5hbGl6ZVN0eWxlcyhnKXtjb25zdCBoPVtdO2lmKEFycmF5LmlzQXJyYXkoZykpe2NvbnN0IHY9bmV3IFNldChnLmZsYXQoMS8wKS5yZXZlcnNlKCkpO2Zvcihjb25zdCB5IG9mIHYpaC51bnNoaWZ0KFRqKHkpKX1lbHNlIHZv''@;'; put 'put ''aWQgMCE9PWcmJmgucHVzaChUaihnKSk7cmV0dXJuIGh9c3RhdGljIF8kRXAoZyxoKXtjb25zdCB2PWguYXR0cmlidXRlO3JldHVybiExPT09dj92b2lkIDA6InN0cmluZyI9PXR5cGVvZiB2P3Y6InN0cmluZyI9PXR5cGVvZiBnP2cudG9Mb3dlckNhc2UoKTp2b2lkIDB9dSgpe3ZhciBnO3Ro''@;'; put 'put ''aXMuXyRFXz1uZXcgUHJvbWlzZShoPT50aGlzLmVuYWJsZVVwZGF0aW5nPWgpLHRoaXMuXyRBTD1uZXcgTWFwLHRoaXMuXyRFZygpLHRoaXMucmVxdWVzdFVwZGF0ZSgpLG51bGw9PT0oZz10aGlzLmNvbnN0cnVjdG9yLmgpfHx2b2lkIDA9PT1nfHxnLmZvckVhY2goaD0+aCh0aGlzKSl9YWRk''@;'; put 'put ''Q29udHJvbGxlcihnKXt2YXIgaCx2OyhudWxsIT09KGg9dGhpcy5fJEVTKSYmdm9pZCAwIT09aD9oOnRoaXMuXyRFUz1bXSkucHVzaChnKSx2b2lkIDAhPT10aGlzLnJlbmRlclJvb3QmJnRoaXMuaXNDb25uZWN0ZWQmJihudWxsPT09KHY9Zy5ob3N0Q29ubmVjdGVkKXx8dm9pZCAwPT09dnx8''@;'; put 'put ''di5jYWxsKGcpKX1yZW1vdmVDb250cm9sbGVyKGcpe3ZhciBoO251bGw9PT0oaD10aGlzLl8kRVMpfHx2b2lkIDA9PT1ofHxoLnNwbGljZSh0aGlzLl8kRVMuaW5kZXhPZihnKT4+PjAsMSl9XyRFZygpe3RoaXMuY29uc3RydWN0b3IuZWxlbWVudFByb3BlcnRpZXMuZm9yRWFjaCgoZyxoKT0+''@;'; put 'put ''e3RoaXMuaGFzT3duUHJvcGVydHkoaCkmJih0aGlzLl8kRWkuc2V0KGgsdGhpc1toXSksZGVsZXRlIHRoaXNbaF0pfSl9Y3JlYXRlUmVuZGVyUm9vdCgpe3ZhciBnO2NvbnN0IGg9bnVsbCE9PShnPXRoaXMuc2hhZG93Um9vdCkmJnZvaWQgMCE9PWc/Zzp0aGlzLmF0dGFjaFNoYWRvdyh0aGlz''@;'; put 'put ''LmNvbnN0cnVjdG9yLnNoYWRvd1Jvb3RPcHRpb25zKTtyZXR1cm4oKGQsZyk9PntLeT9kLmFkb3B0ZWRTdHlsZVNoZWV0cz1nLm1hcChoPT5oIGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldD9oOmguc3R5bGVTaGVldCk6Zy5mb3JFYWNoKGg9Pntjb25zdCB2PWRvY3VtZW50LmNyZWF0ZUVsZW1l''@;'; put 'put ''bnQoInN0eWxlIikseT1BTC5saXROb25jZTt2b2lkIDAhPT15JiZ2LnNldEF0dHJpYnV0ZSgibm9uY2UiLHkpLHYudGV4dENvbnRlbnQ9aC5jc3NUZXh0LGQuYXBwZW5kQ2hpbGQodil9KX0pKGgsdGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50U3R5bGVzKSxofWNvbm5lY3RlZENhbGxiYWNrKCl7''@;'; put 'put ''dmFyIGc7dm9pZCAwPT09dGhpcy5yZW5kZXJSb290JiYodGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpKSx0aGlzLmVuYWJsZVVwZGF0aW5nKCEwKSxudWxsPT09KGc9dGhpcy5fJEVTKXx8dm9pZCAwPT09Z3x8Zy5mb3JFYWNoKGg9Pnt2YXIgdjtyZXR1cm4gbnVsbD09''@;'; put 'put ''PSh2PWguaG9zdENvbm5lY3RlZCl8fHZvaWQgMD09PXY/dm9pZCAwOnYuY2FsbChoKX0pfWVuYWJsZVVwZGF0aW5nKGcpe31kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBnO251bGw9PT0oZz10aGlzLl8kRVMpfHx2b2lkIDA9PT1nfHxnLmZvckVhY2goaD0+e3ZhciB2O3JldHVybiBudWxs''@;'; put 'put ''PT09KHY9aC5ob3N0RGlzY29ubmVjdGVkKXx8dm9pZCAwPT09dj92b2lkIDA6di5jYWxsKGgpfSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGcsaCx2KXt0aGlzLl8kQUsoZyx2KX1fJEVPKGcsaCx2PU9qKXt2YXIgeTtjb25zdCBDPXRoaXMuY29uc3RydWN0b3IuXyRFcChnLHYpO2lmKHZv''@;'; put 'put ''aWQgMCE9PUMmJiEwPT09di5yZWZsZWN0KXtjb25zdCBJPSh2b2lkIDAhPT0obnVsbD09PSh5PXYuY29udmVydGVyKXx8dm9pZCAwPT09eT92b2lkIDA6eS50b0F0dHJpYnV0ZSk/di5jb252ZXJ0ZXI6TGopLnRvQXR0cmlidXRlKGgsdi50eXBlKTt0aGlzLl8kRWw9ZyxudWxsPT1JP3RoaXMu''@;'; put 'put ''cmVtb3ZlQXR0cmlidXRlKEMpOnRoaXMuc2V0QXR0cmlidXRlKEMsSSksdGhpcy5fJEVsPW51bGx9fV8kQUsoZyxoKXt2YXIgdjtjb25zdCB5PXRoaXMuY29uc3RydWN0b3IsQz15Ll8kRXYuZ2V0KGcpO2lmKHZvaWQgMCE9PUMmJnRoaXMuXyRFbCE9PUMpe2NvbnN0IEk9eS5nZXRQcm9wZXJ0''@;'; put 'put ''eU9wdGlvbnMoQyksaj0iZnVuY3Rpb24iPT10eXBlb2YgSS5jb252ZXJ0ZXI/e2Zyb21BdHRyaWJ1dGU6SS5jb252ZXJ0ZXJ9OnZvaWQgMCE9PShudWxsPT09KHY9SS5jb252ZXJ0ZXIpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmZyb21BdHRyaWJ1dGUpP0kuY29udmVydGVyOkxqO3RoaXMuXyRF''@;'; put 'put ''bD1DLHRoaXNbQ109ai5mcm9tQXR0cmlidXRlKGgsSS50eXBlKSx0aGlzLl8kRWw9bnVsbH19cmVxdWVzdFVwZGF0ZShnLGgsdil7bGV0IHk9ITA7dm9pZCAwIT09ZyYmKCgodj12fHx0aGlzLmNvbnN0cnVjdG9yLmdldFByb3BlcnR5T3B0aW9ucyhnKSkuaGFzQ2hhbmdlZHx8TkspKHRoaXNb''@;'; put 'put ''Z10saCk/KHRoaXMuXyRBTC5oYXMoZyl8fHRoaXMuXyRBTC5zZXQoZyxoKSwhMD09PXYucmVmbGVjdCYmdGhpcy5fJEVsIT09ZyYmKHZvaWQgMD09PXRoaXMuXyRFQyYmKHRoaXMuXyRFQz1uZXcgTWFwKSx0aGlzLl8kRUMuc2V0KGcsdikpKTp5PSExKSwhdGhpcy5pc1VwZGF0ZVBlbmRpbmcm''@;'; put 'put ''JnkmJih0aGlzLl8kRV89dGhpcy5fJEVqKCkpfV8kRWooKXt2YXIgZz10aGlzO3JldHVybiBSSyhmdW5jdGlvbiooKXtnLmlzVXBkYXRlUGVuZGluZz0hMDt0cnl7eWllbGQgZy5fJEVffWNhdGNoKHYpe1Byb21pc2UucmVqZWN0KHYpfWNvbnN0IGg9Zy5zY2hlZHVsZVVwZGF0ZSgpO3JldHVy''@;'; put 'put ''biBudWxsIT1oJiYoeWllbGQgaCksIWcuaXNVcGRhdGVQZW5kaW5nfSkoKX1zY2hlZHVsZVVwZGF0ZSgpe3JldHVybiB0aGlzLnBlcmZvcm1VcGRhdGUoKX1wZXJmb3JtVXBkYXRlKCl7dmFyIGc7aWYoIXRoaXMuaXNVcGRhdGVQZW5kaW5nKXJldHVybjt0aGlzLl8kRWkmJih0aGlzLl8kRWku''@;'; put 'put ''Zm9yRWFjaCgoeSxDKT0+dGhpc1tDXT15KSx0aGlzLl8kRWk9dm9pZCAwKTtsZXQgaD0hMTtjb25zdCB2PXRoaXMuXyRBTDt0cnl7aD10aGlzLnNob3VsZFVwZGF0ZSh2KSxoPyh0aGlzLndpbGxVcGRhdGUodiksbnVsbD09PShnPXRoaXMuXyRFUyl8fHZvaWQgMD09PWd8fGcuZm9yRWFjaCh5''@;'; put 'put ''PT57dmFyIEM7cmV0dXJuIG51bGw9PT0oQz15Lmhvc3RVcGRhdGUpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLmNhbGwoeSl9KSx0aGlzLnVwZGF0ZSh2KSk6dGhpcy5fJEVrKCl9Y2F0Y2goeSl7dGhyb3cgaD0hMSx0aGlzLl8kRWsoKSx5fWgmJnRoaXMuXyRBRSh2KX13aWxsVXBkYXRlKGcpe31f''@;'; put 'put ''JEFFKGcpe3ZhciBoO251bGw9PT0oaD10aGlzLl8kRVMpfHx2b2lkIDA9PT1ofHxoLmZvckVhY2godj0+e3ZhciB5O3JldHVybiBudWxsPT09KHk9di5ob3N0VXBkYXRlZCl8fHZvaWQgMD09PXk/dm9pZCAwOnkuY2FsbCh2KX0pLHRoaXMuaGFzVXBkYXRlZHx8KHRoaXMuaGFzVXBkYXRlZD0h''@;'; put 'put ''MCx0aGlzLmZpcnN0VXBkYXRlZChnKSksdGhpcy51cGRhdGVkKGcpfV8kRWsoKXt0aGlzLl8kQUw9bmV3IE1hcCx0aGlzLmlzVXBkYXRlUGVuZGluZz0hMX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdldFVwZGF0ZUNvbXBsZXRlKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuXyRFX31zaG91bGRVcGRhdGUoZyl7cmV0dXJuITB9dXBkYXRlKGcpe3ZvaWQgMCE9PXRoaXMuXyRFQyYmKHRoaXMuXyRFQy5mb3JFYWNoKChoLHYpPT50aGlzLl8kRU8odix0aGlzW3ZdLGgpKSx0aGlzLl8kRUM9dm9pZCAwKSx0aGlzLl8kRWsoKX11cGRhdGVkKGcpe31maXJz''@;'; put 'put ''dFVwZGF0ZWQoZyl7fX12YXIgUmo7JHkuZmluYWxpemVkPSEwLCR5LmVsZW1lbnRQcm9wZXJ0aWVzPW5ldyBNYXAsJHkuZWxlbWVudFN0eWxlcz1bXSwkeS5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9LG51bGw9PUhLfHxISyh7UmVhY3RpdmVFbGVtZW50OiR5fSksKG51bGwhPT0o''@;'; put 'put ''SWo9YkwucmVhY3RpdmVFbGVtZW50VmVyc2lvbnMpJiZ2b2lkIDAhPT1Jaj9JajpiTC5yZWFjdGl2ZUVsZW1lbnRWZXJzaW9ucz1bXSkucHVzaCgiMS40LjEiKTtjb25zdCBfTD13aW5kb3cscXk9X0wudHJ1c3RlZFR5cGVzLFZLPXF5P3F5LmNyZWF0ZVBvbGljeSgibGl0LWh0bWwiLHtjcmVh''@;'; put 'put ''dGVIVE1MOmQ9PmR9KTp2b2lkIDAsdTg9YGxpdCQkeyhNYXRoLnJhbmRvbSgpKyIiKS5zbGljZSg5KX0kYCxCaj0iPyIrdTgsSTFlPWA8JHtCan0+YCxldz1kb2N1bWVudCxvUz0oZD0iIik9PmV3LmNyZWF0ZUNvbW1lbnQoZCksYVM9ZD0+bnVsbD09PWR8fCJvYmplY3QiIT10eXBlb2YgZCYm''@;'; put 'put ''ImZ1bmN0aW9uIiE9dHlwZW9mIGQsaks9QXJyYXkuaXNBcnJheSxsUz0vPCg/OighLS18XC9bXmEtekEtWl0pfChcLz9bYS16QS1aXVtePlxzXSopfChcLz8kKSkvZyx6Sz0vLS0+L2csR0s9Lz4vZyx1dj1SZWdFeHAoIj58WyBcdFxuXGZccl0oPzooW15cXHNcIic+PS9dKykoWyBcdFxuXGZc''@;'; put 'put ''cl0qPVsgXHRcblxmXHJdKig/OlteIFx0XG5cZlxyXCInYDw+PV18KFwifCcpfCkpfCQpIiwiZyIpLFdLPS8nL2csWUs9LyIvZyxVSz0vXig/OnNjcmlwdHxzdHlsZXx0ZXh0YXJlYXx0aXRsZSkkL2ksUUs9ZD0+KGcsLi4uaCk9Pih7XyRsaXRUeXBlJDpkLHN0cmluZ3M6Zyx2YWx1ZXM6aH0p''@;'; put 'put ''LFBqPVFLKDEpLEQxZT1RSygyKSx0dz1TeW1ib2wuZm9yKCJsaXQtbm9DaGFuZ2UiKSxqdT1TeW1ib2wuZm9yKCJsaXQtbm90aGluZyIpLHMwPW5ldyBXZWFrTWFwLHNTPShkLGcsaCk9Pnt2YXIgdix5O2NvbnN0IEM9bnVsbCE9PSh2PW51bGw9PWg/dm9pZCAwOmgucmVuZGVyQmVmb3JlKSYm''@;'; put 'put ''dm9pZCAwIT09dj92Omc7bGV0IEk9Qy5fJGxpdFBhcnQkO2lmKHZvaWQgMD09PUkpe2NvbnN0IGo9bnVsbCE9PSh5PW51bGw9PWg/dm9pZCAwOmgucmVuZGVyQmVmb3JlKSYmdm9pZCAwIT09eT95Om51bGw7Qy5fJGxpdFBhcnQkPUk9bmV3IG53KGcuaW5zZXJ0QmVmb3JlKG9TKCksaiksaix2''@;'; put 'put ''b2lkIDAsbnVsbCE9aD9oOnt9KX1yZXR1cm4gSS5fJEFJKGQpLEl9LGN2PWV3LmNyZWF0ZVRyZWVXYWxrZXIoZXcsMTI5LG51bGwsITEpO2NsYXNzIHVTe2NvbnN0cnVjdG9yKHtzdHJpbmdzOmcsXyRsaXRUeXBlJDpofSx2KXtsZXQgeTt0aGlzLnBhcnRzPVtdO2xldCBDPTAsST0wO2NvbnN0''@;'; put 'put ''IGo9Zy5sZW5ndGgtMSxjZT10aGlzLnBhcnRzLFtfZSxSZV09KChkLGcpPT57Y29uc3QgaD1kLmxlbmd0aC0xLHY9W107bGV0IHksQz0yPT09Zz8iPHN2Zz4iOiIiLEk9bFM7Zm9yKGxldCBjZT0wO2NlPGg7Y2UrKyl7Y29uc3QgX2U9ZFtjZV07bGV0IFJlLE5lLEtlPS0xLGh0PTA7Zm9yKDto''@;'; put 'put ''dDxfZS5sZW5ndGgmJihJLmxhc3RJbmRleD1odCxOZT1JLmV4ZWMoX2UpLG51bGwhPT1OZSk7KWh0PUkubGFzdEluZGV4LEk9PT1sUz8iIS0tIj09PU5lWzFdP0k9eks6dm9pZCAwIT09TmVbMV0/ST1HSzp2b2lkIDAhPT1OZVsyXT8oVUsudGVzdChOZVsyXSkmJih5PVJlZ0V4cCgiPC8iK05l''@;'; put 'put ''WzJdLCJnIikpLEk9dXYpOnZvaWQgMCE9PU5lWzNdJiYoST11dik6ST09PXV2PyI+Ij09PU5lWzBdPyhJPW51bGwhPXk/eTpsUyxLZT0tMSk6dm9pZCAwPT09TmVbMV0/S2U9LTI6KEtlPUkubGFzdEluZGV4LU5lWzJdLmxlbmd0aCxSZT1OZVsxXSxJPXZvaWQgMD09PU5lWzNdP3V2OiciJz09''@;'; put 'put ''PU5lWzNdP1lLOldLKTpJPT09WUt8fEk9PT1XSz9JPXV2Okk9PT16S3x8ST09PUdLP0k9bFM6KEk9dXYseT12b2lkIDApO2NvbnN0IEJ0PUk9PT11diYmZFtjZSsxXS5zdGFydHNXaXRoKCIvPiIpPyIgIjoiIjtDKz1JPT09bFM/X2UrSTFlOktlPj0wPyh2LnB1c2goUmUpLF9lLnNsaWNlKDAs''@;'; put 'put ''S2UpKyIkbGl0JCIrX2Uuc2xpY2UoS2UpK3U4K0J0KTpfZSt1OCsoLTI9PT1LZT8odi5wdXNoKHZvaWQgMCksY2UpOkJ0KX1jb25zdCBqPUMrKGRbaF18fCI8Pz4iKSsoMj09PWc/Ijwvc3ZnPiI6IiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwhZC5oYXNPd25Qcm9wZXJ0eSgicmF3IikpdGhy''@;'; put 'put ''b3cgRXJyb3IoImludmFsaWQgdGVtcGxhdGUgc3RyaW5ncyBhcnJheSIpO3JldHVyblt2b2lkIDAhPT1WSz9WSy5jcmVhdGVIVE1MKGopOmosdl19KShnLGgpO2lmKHRoaXMuZWw9dVMuY3JlYXRlRWxlbWVudChfZSx2KSxjdi5jdXJyZW50Tm9kZT10aGlzLmVsLmNvbnRlbnQsMj09PWgpe2Nv''@;'; put 'put ''bnN0IE5lPXRoaXMuZWwuY29udGVudCxLZT1OZS5maXJzdENoaWxkO0tlLnJlbW92ZSgpLE5lLmFwcGVuZCguLi5LZS5jaGlsZE5vZGVzKX1mb3IoO251bGwhPT0oeT1jdi5uZXh0Tm9kZSgpKSYmY2UubGVuZ3RoPGo7KXtpZigxPT09eS5ub2RlVHlwZSl7aWYoeS5oYXNBdHRyaWJ1dGVzKCkp''@;'; put 'put ''e2NvbnN0IE5lPVtdO2Zvcihjb25zdCBLZSBvZiB5LmdldEF0dHJpYnV0ZU5hbWVzKCkpaWYoS2UuZW5kc1dpdGgoIiRsaXQkIil8fEtlLnN0YXJ0c1dpdGgodTgpKXtjb25zdCBodD1SZVtJKytdO2lmKE5lLnB1c2goS2UpLHZvaWQgMCE9PWh0KXtjb25zdCBCdD15LmdldEF0dHJpYnV0ZSho''@;'; put 'put ''dC50b0xvd2VyQ2FzZSgpKyIkbGl0JCIpLnNwbGl0KHU4KSwkdD0vKFsuP0BdKT8oLiopLy5leGVjKGh0KTtjZS5wdXNoKHt0eXBlOjEsaW5kZXg6QyxuYW1lOiR0WzJdLHN0cmluZ3M6QnQsY3RvcjoiLiI9PT0kdFsxXT9YSzoiPyI9PT0kdFsxXT9IajoiQCI9PT0kdFsxXT9Oajpyd30pfWVs''@;'; put 'put ''c2UgY2UucHVzaCh7dHlwZTo2LGluZGV4OkN9KX1mb3IoY29uc3QgS2Ugb2YgTmUpeS5yZW1vdmVBdHRyaWJ1dGUoS2UpfWlmKFVLLnRlc3QoeS50YWdOYW1lKSl7Y29uc3QgTmU9eS50ZXh0Q29udGVudC5zcGxpdCh1OCksS2U9TmUubGVuZ3RoLTE7aWYoS2U+MCl7eS50ZXh0Q29udGVudD1x''@;'; put 'put ''eT9xeS5lbXB0eVNjcmlwdDoiIjtmb3IobGV0IGh0PTA7aHQ8S2U7aHQrKyl5LmFwcGVuZChOZVtodF0sb1MoKSksY3YubmV4dE5vZGUoKSxjZS5wdXNoKHt0eXBlOjIsaW5kZXg6KytDfSk7eS5hcHBlbmQoTmVbS2VdLG9TKCkpfX19ZWxzZSBpZig4PT09eS5ub2RlVHlwZSlpZih5LmRhdGE9''@;'; put 'put ''PT1CailjZS5wdXNoKHt0eXBlOjIsaW5kZXg6Q30pO2Vsc2V7bGV0IE5lPS0xO2Zvcig7LTEhPT0oTmU9eS5kYXRhLmluZGV4T2YodTgsTmUrMSkpOyljZS5wdXNoKHt0eXBlOjcsaW5kZXg6Q30pLE5lKz11OC5sZW5ndGgtMX1DKyt9fXN0YXRpYyBjcmVhdGVFbGVtZW50KGcsaCl7Y29uc3Qg''@;'; put 'put ''dj1ldy5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiB2LmlubmVySFRNTD1nLHZ9fWZ1bmN0aW9uIGZ2KGQsZyxoPWQsdil7dmFyIHksQyxJLGo7aWYoZz09PXR3KXJldHVybiBnO2xldCBjZT12b2lkIDAhPT12P251bGw9PT0oeT1oLl8kQ2wpfHx2b2lkIDA9PT15P3ZvaWQgMDp5''@;'; put 'put ''W3ZdOmguXyRDdTtjb25zdCBfZT1hUyhnKT92b2lkIDA6Zy5fJGxpdERpcmVjdGl2ZSQ7cmV0dXJuKG51bGw9PWNlP3ZvaWQgMDpjZS5jb25zdHJ1Y3RvcikhPT1fZSYmKG51bGw9PT0oQz1udWxsPT1jZT92b2lkIDA6Y2UuXyRBTyl8fHZvaWQgMD09PUN8fEMuY2FsbChjZSwhMSksdm9pZCAw''@;'; put 'put ''PT09X2U/Y2U9dm9pZCAwOihjZT1uZXcgX2UoZCksY2UuXyRBVChkLGgsdikpLHZvaWQgMCE9PXY/KG51bGwhPT0oST0oaj1oKS5fJENsKSYmdm9pZCAwIT09ST9JOmouXyRDbD1bXSlbdl09Y2U6aC5fJEN1PWNlKSx2b2lkIDAhPT1jZSYmKGc9ZnYoZCxjZS5fJEFTKGQsZy52YWx1ZXMpLGNl''@;'; put 'put ''LHYpKSxnfWNsYXNzIEZqe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy52PVtdLHRoaXMuXyRBTj12b2lkIDAsdGhpcy5fJEFEPWcsdGhpcy5fJEFNPWh9Z2V0IHBhcmVudE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFNLnBhcmVudE5vZGV9Z2V0IF8kQVUoKXtyZXR1cm4gdGhpcy5fJEFNLl8kQVV9cChn''@;'; put 'put ''KXt2YXIgaDtjb25zdHtlbDp7Y29udGVudDp2fSxwYXJ0czp5fT10aGlzLl8kQUQsQz0obnVsbCE9PShoPW51bGw9PWc/dm9pZCAwOmcuY3JlYXRpb25TY29wZSkmJnZvaWQgMCE9PWg/aDpldykuaW1wb3J0Tm9kZSh2LCEwKTtjdi5jdXJyZW50Tm9kZT1DO2xldCBJPWN2Lm5leHROb2RlKCks''@;'; put 'put ''aj0wLGNlPTAsX2U9eVswXTtmb3IoO3ZvaWQgMCE9PV9lOyl7aWYoaj09PV9lLmluZGV4KXtsZXQgUmU7Mj09PV9lLnR5cGU/UmU9bmV3IG53KEksSS5uZXh0U2libGluZyx0aGlzLGcpOjE9PT1fZS50eXBlP1JlPW5ldyBfZS5jdG9yKEksX2UubmFtZSxfZS5zdHJpbmdzLHRoaXMsZyk6Nj09''@;'; put 'put ''PV9lLnR5cGUmJihSZT1uZXcgS0soSSx0aGlzLGcpKSx0aGlzLnYucHVzaChSZSksX2U9eVsrK2NlXX1qIT09KG51bGw9PV9lP3ZvaWQgMDpfZS5pbmRleCkmJihJPWN2Lm5leHROb2RlKCksaisrKX1yZXR1cm4gQ31tKGcpe2xldCBoPTA7Zm9yKGNvbnN0IHYgb2YgdGhpcy52KXZvaWQgMCE9''@;'; put 'put ''PXYmJih2b2lkIDAhPT12LnN0cmluZ3M/KHYuXyRBSShnLHYsaCksaCs9di5zdHJpbmdzLmxlbmd0aC0yKTp2Ll8kQUkoZ1toXSkpLGgrK319Y2xhc3Mgbnd7Y29uc3RydWN0b3IoZyxoLHYseSl7dmFyIEM7dGhpcy50eXBlPTIsdGhpcy5fJEFIPWp1LHRoaXMuXyRBTj12b2lkIDAsdGhpcy5f''@;'; put 'put ''JEFBPWcsdGhpcy5fJEFCPWgsdGhpcy5fJEFNPXYsdGhpcy5vcHRpb25zPXksdGhpcy5fJENfPW51bGw9PT0oQz1udWxsPT15P3ZvaWQgMDp5LmlzQ29ubmVjdGVkKXx8dm9pZCAwPT09Q3x8Q31nZXQgXyRBVSgpe3ZhciBnLGg7cmV0dXJuIG51bGwhPT0oaD1udWxsPT09KGc9dGhpcy5fJEFN''@;'; put 'put ''KXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5fJEFVKSYmdm9pZCAwIT09aD9oOnRoaXMuXyRDX31nZXQgcGFyZW50Tm9kZSgpe2xldCBnPXRoaXMuXyRBQS5wYXJlbnROb2RlO2NvbnN0IGg9dGhpcy5fJEFNO3JldHVybiB2b2lkIDAhPT1oJiYxMT09PWcubm9kZVR5cGUmJihnPWgucGFyZW50Tm9k''@;'; put 'put ''ZSksZ31nZXQgc3RhcnROb2RlKCl7cmV0dXJuIHRoaXMuXyRBQX1nZXQgZW5kTm9kZSgpe3JldHVybiB0aGlzLl8kQUJ9XyRBSShnLGg9dGhpcyl7Zz1mdih0aGlzLGcsaCksYVMoZyk/Zz09PWp1fHxudWxsPT1nfHwiIj09PWc/KHRoaXMuXyRBSCE9PWp1JiZ0aGlzLl8kQVIoKSx0aGlzLl8k''@;'; put 'put ''QUg9anUpOmchPT10aGlzLl8kQUgmJmchPT10dyYmdGhpcy4kKGcpOnZvaWQgMCE9PWcuXyRsaXRUeXBlJD90aGlzLlQoZyk6dm9pZCAwIT09Zy5ub2RlVHlwZT90aGlzLmsoZyk6KGQ9PmpLKGQpfHwiZnVuY3Rpb24iPT10eXBlb2YobnVsbD09ZD92b2lkIDA6ZFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''KSkoZyk/dGhpcy5PKGcpOnRoaXMuJChnKX1TKGcsaD10aGlzLl8kQUIpe3JldHVybiB0aGlzLl8kQUEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxoKX1rKGcpe3RoaXMuXyRBSCE9PWcmJih0aGlzLl8kQVIoKSx0aGlzLl8kQUg9dGhpcy5TKGcpKX0kKGcpe3RoaXMuXyRBSCE9PWp1JiZh''@;'; put 'put ''Uyh0aGlzLl8kQUgpP3RoaXMuXyRBQS5uZXh0U2libGluZy5kYXRhPWc6dGhpcy5rKGV3LmNyZWF0ZVRleHROb2RlKGcpKSx0aGlzLl8kQUg9Z31UKGcpe3ZhciBoO2NvbnN0e3ZhbHVlczp2LF8kbGl0VHlwZSQ6eX09ZyxDPSJudW1iZXIiPT10eXBlb2YgeT90aGlzLl8kQUMoZyk6KHZvaWQg''@;'; put 'put ''MD09PXkuZWwmJih5LmVsPXVTLmNyZWF0ZUVsZW1lbnQoeS5oLHRoaXMub3B0aW9ucykpLHkpO2lmKChudWxsPT09KGg9dGhpcy5fJEFIKXx8dm9pZCAwPT09aD92b2lkIDA6aC5fJEFEKT09PUMpdGhpcy5fJEFILm0odik7ZWxzZXtjb25zdCBJPW5ldyBGaihDLHRoaXMpLGo9SS5wKHRoaXMu''@;'; put 'put ''b3B0aW9ucyk7SS5tKHYpLHRoaXMuayhqKSx0aGlzLl8kQUg9SX19XyRBQyhnKXtsZXQgaD1zMC5nZXQoZy5zdHJpbmdzKTtyZXR1cm4gdm9pZCAwPT09aCYmczAuc2V0KGcuc3RyaW5ncyxoPW5ldyB1UyhnKSksaH1PKGcpe2pLKHRoaXMuXyRBSCl8fCh0aGlzLl8kQUg9W10sdGhpcy5fJEFS''@;'; put 'put ''KCkpO2NvbnN0IGg9dGhpcy5fJEFIO2xldCB2LHk9MDtmb3IoY29uc3QgQyBvZiBnKXk9PT1oLmxlbmd0aD9oLnB1c2godj1uZXcgbncodGhpcy5TKG9TKCkpLHRoaXMuUyhvUygpKSx0aGlzLHRoaXMub3B0aW9ucykpOnY9aFt5XSx2Ll8kQUkoQykseSsrO3k8aC5sZW5ndGgmJih0aGlzLl8k''@;'; put 'put ''QVIodiYmdi5fJEFCLm5leHRTaWJsaW5nLHkpLGgubGVuZ3RoPXkpfV8kQVIoZz10aGlzLl8kQUEubmV4dFNpYmxpbmcsaCl7dmFyIHY7Zm9yKG51bGw9PT0odj10aGlzLl8kQVApfHx2b2lkIDA9PT12fHx2LmNhbGwodGhpcywhMSwhMCxoKTtnJiZnIT09dGhpcy5fJEFCOyl7Y29uc3QgeT1n''@;'; put 'put ''Lm5leHRTaWJsaW5nO2cucmVtb3ZlKCksZz15fX1zZXRDb25uZWN0ZWQoZyl7dmFyIGg7dm9pZCAwPT09dGhpcy5fJEFNJiYodGhpcy5fJENfPWcsbnVsbD09PShoPXRoaXMuXyRBUCl8fHZvaWQgMD09PWh8fGguY2FsbCh0aGlzLGcpKX19Y2xhc3Mgcnd7Y29uc3RydWN0b3IoZyxoLHYseSxD''@;'; put 'put ''KXt0aGlzLnR5cGU9MSx0aGlzLl8kQUg9anUsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLmVsZW1lbnQ9Zyx0aGlzLm5hbWU9aCx0aGlzLl8kQU09eSx0aGlzLm9wdGlvbnM9Qyx2Lmxlbmd0aD4yfHwiIiE9PXZbMF18fCIiIT09dlsxXT8odGhpcy5fJEFIPUFycmF5KHYubGVuZ3RoLTEpLmZpbGwo''@;'; put 'put ''bmV3IFN0cmluZyksdGhpcy5zdHJpbmdzPXYpOnRoaXMuXyRBSD1qdX1nZXQgdGFnTmFtZSgpe3JldHVybiB0aGlzLmVsZW1lbnQudGFnTmFtZX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGcsaD10aGlzLHYseSl7Y29uc3QgQz10aGlzLnN0cmluZ3M7bGV0IEk9ITE7''@;'; put 'put ''aWYodm9pZCAwPT09QylnPWZ2KHRoaXMsZyxoLDApLEk9IWFTKGcpfHxnIT09dGhpcy5fJEFIJiZnIT09dHcsSSYmKHRoaXMuXyRBSD1nKTtlbHNle2NvbnN0IGo9ZztsZXQgY2UsX2U7Zm9yKGc9Q1swXSxjZT0wO2NlPEMubGVuZ3RoLTE7Y2UrKylfZT1mdih0aGlzLGpbditjZV0saCxjZSks''@;'; put 'put ''X2U9PT10dyYmKF9lPXRoaXMuXyRBSFtjZV0pLEl8fChJPSFhUyhfZSl8fF9lIT09dGhpcy5fJEFIW2NlXSksX2U9PT1qdT9nPWp1OmchPT1qdSYmKGcrPShudWxsIT1fZT9fZToiIikrQ1tjZSsxXSksdGhpcy5fJEFIW2NlXT1fZX1JJiYheSYmdGhpcy5QKGcpfVAoZyl7Zz09PWp1P3RoaXMu''@;'; put 'put ''ZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUodGhpcy5uYW1lKTp0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMubmFtZSxudWxsIT1nP2c6IiIpfX1jbGFzcyBYSyBleHRlbmRzIHJ3e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9M31QKGcpe3RoaXMuZWxl''@;'; put 'put ''bWVudFt0aGlzLm5hbWVdPWc9PT1qdT92b2lkIDA6Z319Y29uc3QgTDFlPXF5P3F5LmVtcHR5U2NyaXB0OiIiO2NsYXNzIEhqIGV4dGVuZHMgcnd7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT00fVAoZyl7ZyYmZyE9PWp1P3RoaXMuZWxlbWVudC5zZXRBdHRy''@;'; put 'put ''aWJ1dGUodGhpcy5uYW1lLEwxZSk6dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpfX1jbGFzcyBOaiBleHRlbmRzIHJ3e2NvbnN0cnVjdG9yKGcsaCx2LHksQyl7c3VwZXIoZyxoLHYseSxDKSx0aGlzLnR5cGU9NX1fJEFJKGcsaD10aGlzKXt2YXIgdjtpZigoZz1udWxs''@;'; put 'put ''IT09KHY9ZnYodGhpcyxnLGgsMCkpJiZ2b2lkIDAhPT12P3Y6anUpPT09dHcpcmV0dXJuO2NvbnN0IHk9dGhpcy5fJEFILEM9Zz09PWp1JiZ5IT09anV8fGcuY2FwdHVyZSE9PXkuY2FwdHVyZXx8Zy5vbmNlIT09eS5vbmNlfHxnLnBhc3NpdmUhPT15LnBhc3NpdmUsST1nIT09anUmJih5PT09''@;'; put 'put ''anV8fEMpO0MmJnRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMubmFtZSx0aGlzLHkpLEkmJnRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMubmFtZSx0aGlzLGcpLHRoaXMuXyRBSD1nfWhhbmRsZUV2ZW50KGcpe3ZhciBoLHY7ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IHRoaXMuXyRBSD90aGlzLl8kQUguY2FsbChudWxsIT09KHY9bnVsbD09PShoPXRoaXMub3B0aW9ucyl8fHZvaWQgMD09PWg/dm9pZCAwOmguaG9zdCkmJnZvaWQgMCE9PXY/djp0aGlzLmVsZW1lbnQsZyk6dGhpcy5fJEFILmhhbmRsZUV2ZW50KGcpfX1jbGFzcyBLS3tjb25zdHJ1Y3Rvcihn''@;'; put 'put ''LGgsdil7dGhpcy5lbGVtZW50PWcsdGhpcy50eXBlPTYsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLl8kQU09aCx0aGlzLm9wdGlvbnM9dn1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGcpe2Z2KHRoaXMsZyl9fWNvbnN0IFZqPV9MLmxpdEh0bWxQb2x5ZmlsbFN1cHBvcnQ7''@;'; put 'put ''dmFyIGl3LGpqO251bGw9PVZqfHxWaih1UyxudyksKG51bGwhPT0oUmo9X0wubGl0SHRtbFZlcnNpb25zKSYmdm9pZCAwIT09Umo/Umo6X0wubGl0SHRtbFZlcnNpb25zPVtdKS5wdXNoKCIyLjMuMSIpO2NsYXNzIG93IGV4dGVuZHMgJHl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVu''@;'; put 'put ''dHMpLHRoaXMucmVuZGVyT3B0aW9ucz17aG9zdDp0aGlzfSx0aGlzLl8kRG89dm9pZCAwfWNyZWF0ZVJlbmRlclJvb3QoKXt2YXIgZyxoO2NvbnN0IHY9c3VwZXIuY3JlYXRlUmVuZGVyUm9vdCgpO3JldHVybiBudWxsIT09KGc9KGg9dGhpcy5yZW5kZXJPcHRpb25zKS5yZW5kZXJCZWZvcmUp''@;'; put 'put ''JiZ2b2lkIDAhPT1nfHwoaC5yZW5kZXJCZWZvcmU9di5maXJzdENoaWxkKSx2fXVwZGF0ZShnKXtjb25zdCBoPXRoaXMucmVuZGVyKCk7dGhpcy5oYXNVcGRhdGVkfHwodGhpcy5yZW5kZXJPcHRpb25zLmlzQ29ubmVjdGVkPXRoaXMuaXNDb25uZWN0ZWQpLHN1cGVyLnVwZGF0ZShnKSx0aGlz''@;'; put 'put ''Ll8kRG89c1MoaCx0aGlzLnJlbmRlclJvb3QsdGhpcy5yZW5kZXJPcHRpb25zKX1jb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBnO3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PShnPXRoaXMuXyREbyl8fHZvaWQgMD09PWd8fGcuc2V0Q29ubmVjdGVkKCEwKX1kaXNjb25uZWN0ZWRD''@;'; put 'put ''YWxsYmFjaygpe3ZhciBnO3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PShnPXRoaXMuXyREbyl8fHZvaWQgMD09PWd8fGcuc2V0Q29ubmVjdGVkKCExKX1yZW5kZXIoKXtyZXR1cm4gdHd9fW93LmZpbmFsaXplZD0hMCxvdy5fJGxpdEVsZW1lbnQkPSEwLG51bGw9PT0oaXc9''@;'; put 'put ''Z2xvYmFsVGhpcy5saXRFbGVtZW50SHlkcmF0ZVN1cHBvcnQpfHx2b2lkIDA9PT1pd3x8aXcuY2FsbChnbG9iYWxUaGlzLHtMaXRFbGVtZW50Om93fSk7Y29uc3QgY1M9Z2xvYmFsVGhpcy5saXRFbGVtZW50UG9seWZpbGxTdXBwb3J0O251bGw9PWNTfHxjUyh7TGl0RWxlbWVudDpvd30pLChu''@;'; put 'put ''dWxsIT09KGpqPWdsb2JhbFRoaXMubGl0RWxlbWVudFZlcnNpb25zKSYmdm9pZCAwIT09amo/amo6Z2xvYmFsVGhpcy5saXRFbGVtZW50VmVyc2lvbnM9W10pLnB1c2goIjMuMi4yIik7Y29uc3QgJEs9d0xgQGNoYXJzZXQgIlVURi04Ijs6aG9zdCw6cm9vdHstLc60Mjp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWxheW91dC1zcGFjZS14eHMsIGNhbGMoNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tzrQzOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhzLCBjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLc60NDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1zbSwgY2FsYygxMiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tzrQ1OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLW1kLCBjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS3OtDY6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbGcsIGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLc60Nzp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS14bCwgY2FsYygzMiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkp''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0id3JhcDpub25lIl17ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl17ZmxleC1ncm93OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ246c2hyaW5rIl17ZmxleC1zaHJpbms6MSFpbXBvcnRhbnQ7ZmxleC1n''@;'; put 'put ''cm93OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktaXRlbXM6ZmxleC1zdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3dpZHRoOjEwMCU7bWFyZ2luOjA7bWluLWhlaWdo''@;'; put 'put ''dDowfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dH49aG9yaXpvbnRhbF0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0fj12ZXJ0aWNhbF0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtdGV4dF17d2lkdGg6aW5pdGlhbCFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jp''@;'; put 'put ''em9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29u''@;'; put 'put ''dGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9Im9yZGVyOnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6''@;'; put 'put ''b250YWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFs''@;'; put 'put ''XT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJd''@;'; put 'put ''LFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWdu''@;'; put 'put ''OnRvcCJde2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXttYXJn''@;'; put 'put ''aW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXXt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduOnRvcCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnJp''@;'; put 'put ''Z2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNl''@;'; put 'put ''bnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlcjpyZXZl''@;'; put 'put ''cnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJl''@;'; put 'put ''dGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVy''@;'; put 'put ''Il0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12''@;'; put 'put ''ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNh''@;'; put 'put ''bF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0b31bY2RzLWxheW91dH49Z3JpZF17ZGlzcGxheTpncmlkO2FsaWduLWl0ZW1zOnN0YXJ0''@;'; put 'put ''O2FsaWduLWNvbnRlbnQ6c3RhcnQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCh2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1ncmlkLWNvbHMsMTIpLDFmcik7d2lkdGg6MTAwJX1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9cm93c117Z3JpZC10ZW1wbGF0ZS1yb3dzOnJlcGVh''@;'; put 'put ''dCgxMixhdXRvKX1bY2RzLWxheW91dH49Z3JpZF0+W2Nkcy1sYXlvdXQqPXJvd117YWxpZ24tc2VsZjpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24tY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFs''@;'; put 'put ''aWduOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5''@;'; put 'put ''LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXtq''@;'; put 'put ''dXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpjZW50ZXJ9OjpzbG90dGVkKFtjZHMtbGF5b3V0fj0iZGlzcGxheTpzY3JlZW4tcmVhZGVyLW9ubHkiXSksW2Nkcy1sYXlvdXR+PSJkaXNwbGF5OnNjcmVlbi1yZWFkZXItb25seSJde3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlw''@;'; put 'put ''LXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjA7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJnYXA6bm9uZSJde2dhcDowfVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iZ2FwOnh4cyJde2dhcDp2YXIoLS3OtDIpfVtjZHMtbGF5b3V0Kj0iZ2FwOnhzIl17Z2FwOnZhcigtLc60Myl9W2Nkcy1sYXlvdXQqPSJnYXA6c20iXXtnYXA6dmFyKC0tzrQ0KX1bY2RzLWxheW91dCo9ImdhcDptZCJde2dhcDp2YXIoLS3OtDUpfVtjZHMtbGF5b3V0Kj0iZ2Fw''@;'; put 'put ''OmxnIl17Z2FwOnZhcigtLc60Nil9W2Nkcy1sYXlvdXR+PSJwOm5vbmUiXXtwYWRkaW5nOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDp4eHMiXXtwYWRkaW5nOnZhcigtLc60MikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDp4cyJde3BhZGRpbmc6dmFyKC0tzrQzKSFpbXBvcnRhbnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PSJwOnNtIl17cGFkZGluZzp2YXIoLS3OtDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bWQiXXtwYWRkaW5nOnZhcigtLc60NSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTptZCJde21hcmdpbjp2YXIoLS3OtDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6''@;'; put 'put ''bGciXXtwYWRkaW5nOnZhcigtLc60NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15OnhzIl17cGFkZGluZy10b3A6dmFyKC0tzrQzKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tzrQzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6bGciXXtwYWRkaW5nLWxlZnQ6dmFy''@;'; put 'put ''KC0tzrQ2KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS3OtDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDptZCJde3BhZGRpbmctbGVmdDp2YXIoLS3OtDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdDpsZyJde3BhZGRpbmctdG9wOnZhcigtLc60NikhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icC1iOmxnIl17cGFkZGluZy1ib3R0b206dmFyKC0tzrQ2KSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6OTkycHgpe1tjZHMtbGF5b3V0Kj0iZ2FwQG1kOmxnIl17Z2FwOnZhcigtLc60Nil9W2Nkcy1sYXlvdXR+PSJwQG1kOmxnIl17cGFkZGluZzp2YXIoLS3O''@;'; put 'put ''tDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbWQ6eGwiXXttYXJnaW46dmFyKC0tzrQ3KSFpbXBvcnRhbnR9fVtjZHMtbGF5b3V0fj1maWxsXXt3aWR0aDoxMDAlIWltcG9ydGFudH0qLDphZnRlciw6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH1bY2RzLWxheW91dH49aG9yaXpv''@;'; put 'put ''bnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJdPjo6c2xvdHRlZCgqKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT46OnNsb3R0ZWQoKiksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z246c3RyZXRjaCJdPjo6c2xvdHRlZCgqKXtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNl''@;'; put 'put ''bnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpv''@;'; put 'put ''bnRhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduOmxlZnQiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0b31AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGln''@;'; put 'put ''bkB4czpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduQHhzOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ25AeHM6dG9wIl0pe21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpib3R0b20iXSl7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6''@;'; put 'put ''c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7''@;'; put 'put ''W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1i''@;'; put 'put ''b3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6''@;'; put 'put ''Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206dG9wIl0pe21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpib3R0b20iXSl7''@;'; put 'put ''bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTps''@;'; put 'put ''ZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJh''@;'; put 'put ''bGlnbkBtZDp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduQG1kOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dG9wIl0pe21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZl''@;'; put 'put ''cnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXSl7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1s''@;'; put 'put ''YXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVy''@;'; put 'put ''Il0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGln''@;'; put 'put ''bkBsZzpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxn''@;'; put 'put ''OnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91''@;'; put 'put ''dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRv''@;'; put 'put ''fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmJvdHRvbSJdKXttYXJnaW4tdG9w''@;'; put 'put ''OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmxlZnQiXSl7bWFy''@;'; put 'put ''Z2luLXJpZ2h0OmF1dG99fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJdKXthbGlnbi1zZWxm''@;'; put 'put ''OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJdKXttYXJnaW4tbGVmdDphdXRv''@;'; put 'put ''IWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnRvcCJdKXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90''@;'; put 'put ''dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+''@;'; put 'put ''PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnZlcnRpY2FsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1o''@;'; put 'put ''b3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLWNlbnRlciJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduQHhzOnRvcCJdKXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQo''@;'; put 'put ''W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWlu''@;'; put 'put ''LXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1jZW50ZXIiXSl7YWxpZ24t''@;'; put 'put ''c2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50ZXIiXSl7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp0b3AiXSl7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNs''@;'; put 'put ''b3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpib3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1k''@;'; put 'put ''OmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpj''@;'; put 'put ''ZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRh''@;'; put 'put ''bF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRv''@;'; put 'put ''IWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp2''@;'; put 'put ''ZXJ0aWNhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9y''@;'; put 'put ''aXpvbnRhbC1jZW50ZXIiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp0b3AiXSl7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMt''@;'; put 'put ''bGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpib3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0''@;'; put 'put ''byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0''@;'; put 'put ''ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVk''@;'; put 'put ''KFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnRvcCJdKXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmJvdHRvbSJdKXthbGlnbi1z''@;'; put 'put ''ZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6''@;'; put 'put ''bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fVtjZHMtdGV4dF17Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7bWFyZ2luLXRvcDowO21hcmdpbi1i''@;'; put 'put ''b3R0b206MH1bY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWdyaWRdOjphZnRlcixbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWdyaWRdOjpiZWZvcmUsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXTo6YWZ0ZXIsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXTo6YmVmb3Jl''@;'; put 'put ''LFtjZHMtdGV4dF1bY2RzLWxheW91dH49dmVydGljYWxdOjphZnRlcixbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXTo6YmVmb3Jle2Rpc3BsYXk6bm9uZX1bY2RzLXRleHQqPWRpc3BsYXldLFtjZHMtdGV4dCo9c2VjdGlvbl0sW2Nkcy10ZXh0Kj1zdWJzZWN0aW9uXSxbY2RzLXRl''@;'; put 'put ''eHQqPXRpdGxlXXtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGVyLWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCx2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi05MDAsIzIxMzMzYikpfVtjZHMtdGV4dCo9Ym9keV0sW2Nkcy10ZXh0Kj1tZXNzYWdlXSxbY2RzLXRleHQqPXNlY29uZGFyeV17Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTUwMCx2YXIoLS1jZHMtZ2xvYmFsLWNv''@;'; put 'put ''bG9yLWJsYWNrLCMwMDApKX1bY2RzLXRleHQqPWlubGluZV17d2lkdGg6YXV0byFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fVtjZHMtdGV4dCo9ZGlzcGxheV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtc2l6ZSxj''@;'; put 'put ''YWxjKDQwICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXdlaWdodCw0MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVp''@;'; put 'put ''Z2h0LDEuMWVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1sZXR0ZXItc3BhY2luZywtLjAxMjVlbSl9W2Nkcy10ZXh0Kj1kaXNwbGF5XTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1i''@;'; put 'put ''b3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVpZ2h0LDEuMWVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9''@;'; put 'put ''ZGlzcGxheV06OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt''@;'; put 'put ''YXNjZW5kZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQsMS4xZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nk''@;'; put 'put ''cy10ZXh0Kj10aXRsZV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1mb250LXNpemUsY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWZvbnQt''@;'; put 'put ''d2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxpbmUtaGVpZ2h0LDEuMTY2NjdlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxldHRlci1zcGFjaW5nLC0uMDA4MzMzZW0pfVtjZHMtdGV4''@;'; put 'put ''dCo9dGl0bGVdOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3Jh''@;'; put 'put ''cGh5LXRpdGxlLWxpbmUtaGVpZ2h0LDEuMTY2NjdlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXRpdGxlXTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4xNjY2N2VtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9c2VjdGlvbl17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZSxjYWxjKDIwICogMXJlbSAvIHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodCw0MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMmVtKTtsZXR0ZXItc3Bh''@;'; put 'put ''Y2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3BhY2luZywtLjAxZW0pfVtjZHMtdGV4dCo9c2VjdGlvbl06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCwxLjJlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXNlY3Rpb25dOjphZnRlcntjb250ZW50''@;'; put 'put ''OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2Vt''@;'; put 'put ''KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMmVtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9c3Vic2VjdGlvbl17Zm9u''@;'; put 'put ''dC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCw0''@;'; put 'put ''MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMjVlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGV0dGVyLXNwYWNpbmcsLS4wMTI1ZW0pfVtjZHMtdGV4dCo9''@;'; put 'put ''c3Vic2VjdGlvbl06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9n''@;'; put 'put ''cmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCwxLjI1ZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1zdWJzZWN0aW9uXTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCwxLjI1ZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1ib2R5XXtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCw0MDApO2ZvbnQtc2l6''@;'; put 'put ''ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUsY2FsYygxNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcsLS4wMTQyODZlbSk7''@;'; put 'put ''bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQsMS40Mjg1N2VtKX1bY2RzLXRleHQqPWJvZHldOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQsMS40Mjg1N2VtKSAtIDFlbSkvIDIpKSotMSkgKyAuMWVtKX1bY2RzLXRleHQqPWJvZHldOjphZnRlcntjb250ZW50OiIi''@;'; put 'put ''O2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAt''@;'; put 'put ''IHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0LDEuNDI4NTdlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1ib2R5W2Nkcy10ZXh0Kj1ib2R5XTo6YWZ0ZXIs''@;'; put 'put ''Ym9keVtjZHMtdGV4dCo9Ym9keV06OmJlZm9yZXtjb250ZW50Om5vbmV9W2Nkcy10ZXh0Kj1tZXNzYWdlXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC1zaXplLGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2Zv''@;'; put 'put ''bnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtd2VpZ2h0LGNhbGMoNDAwICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCwx''@;'; put 'put ''LjI1ZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxldHRlci1zcGFjaW5nLC0uMDEyNWVtKX1bY2RzLXRleHQqPW1lc3NhZ2VdOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRv''@;'; put 'put ''bTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQsMS4yNWVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9bWVz''@;'; put 'put ''c2FnZV06OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNj''@;'; put 'put ''ZW5kZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQsMS4yNWVtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMt''@;'; put 'put ''dGV4dCo9c2Vjb25kYXJ5XXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUsY2FsYygxMyAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29u''@;'; put 'put ''ZGFyeS1mb250LXdlaWdodCw0MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQsMS4yMzA3N2VtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nLC0u''@;'; put 'put ''MDA3NjkyZW0pfVtjZHMtdGV4dCo9c2Vjb25kYXJ5XTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQsMS4yMzA3N2VtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c2Vjb25kYXJ5XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRv''@;'; put 'put ''cDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUx''@;'; put 'put ''N2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0LDEuMjMwNzdlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHR+PWxpbmtde2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDAsIzAwNjA4YSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIWltcG9ydGFudDtsaW5lLWhlaWdodDppbmhlcml0IWltcG9ydGFudDtmb250LXNpemU6aW5oZXJpdCFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1saW5rXTpmb2N1''@;'; put 'put ''c3tvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSxIaWdobGlnaHQgc29saWQgMnB4KTtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0LDFweCl9W2Nkcy10ZXh0fj1saW5rXTpob3Zl''@;'; put 'put ''cntjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci1ob3Zlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtOTAwLCMwMDRiNmIpKSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1saW5rXTp2aXNpdGVkOm5vdChbY2RzLXRleHR+PXN0YXRpY10pe2NvbG9yOnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci02MDAsIzNiNDBjZSkpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGljXSk6aG92ZXJ7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3Zlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTcwMCwjMjQyOWMyKSkhaW1wb3J0YW50fUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApe1tjZHMtdGV4dD1saW5rXTpmb2N1''@;'; put 'put ''c3tvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS13ZWJraXQsNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yKX19W2Nkcy10ZXh0fj1jb2RlXXtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcix2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LWNvbG9yLXJlZC03MDAsI2UwMjIwMCkpO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MS4xZW19W2Nkcy1kaXZpZGVyXXtkaXNwbGF5OmJsb2NrO2hlaWdodDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDAsY2FsYygxICogMXJlbSAvIHZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtYmFzZSwyMCkpKTtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDAsI2NiZDRkOCkpIDAgMCAwIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVy''@;'; put 'put ''LXdpZHRoLTEwMCxjYWxjKDEgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIGluc2V0fVtjZHMtdGV4dH49bGlnaHRde2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1saWdodCwzMDApIWltcG9ydGFudH1bY2RzLXRleHR+PWp1''@;'; put 'put ''c3RpZnlde3RleHQtYWxpZ246anVzdGlmeSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1sZWZ0XXt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fVtjZHMtdGV4dH49cmlnaHRde3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fVtjZHMtdGV4dH49Y2VudGVyXXt0ZXh0LWFsaWduOmNlbnRlciFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy10ZXh0fj1saGVde3BhZGRpbmc6LjA1cHggMH1bY2RzLXRleHR+PWxoZV06OmJlZm9yZXtjb250ZW50OiIiO21hcmdpbi10b3A6LS4xMjRlbTtkaXNwbGF5OmJsb2NrO2hlaWdodDowfVtjZHMtdGV4dH49bGhlXTo6YWZ0ZXJ7Y29udGVudDoiIjttYXJnaW4tYm90dG9tOi0u''@;'; put 'put ''MjIxZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MH1bY2RzLXRleHQqPWgyXSxbY2RzLXRleHQqPWgzXXtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGVyLWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7Zm9u''@;'; put 'put ''dC1zaXplOjEuNHJlbTtmb250LXdlaWdodDoyMDA7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7bGluZS1oZWlnaHQ6MS43MTQzZW07bGV0dGVyLXNwYWNpbmc6LS4wMTc4NTdlbX1bY2RzLXRleHQqPWgyXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpi''@;'; put 'put ''bG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKDEuNzE0M2VtIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1oMl06OmFmdGVye2NvbnRl''@;'; put 'put ''bnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0LC4xNzAz''@;'; put 'put ''ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygoMS43MTQzZW0gLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWgzXXtmb250LXNpemU6MS4xcmVtO2xpbmUtaGVpZ2h0OjEuMDkwOWVtO2xldHRlci1zcGFjaW5nOi0u''@;'; put 'put ''MDEzNjM2ZW19W2Nkcy10ZXh0Kj1oM106OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCgxLjA5MDllbSAt''@;'; put 'put ''IDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDNdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0p''@;'; put 'put ''IC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKDEuMDkwOWVtIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9Omhvc3R7YWxsOmluaXRpYWw7''@;'; put 'put ''ZGlzcGxheTpibG9jazt2aXNpYmlsaXR5OmluaGVyaXQ7Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7Y29udGFpbjpsYXlvdXQ7Ym94LXNpemluZzpib3JkZXItYm94''@;'; put 'put ''IWltcG9ydGFudDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnR9Kiw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmluaGVyaXQhaW1wb3J0YW50fXNsb3R7Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5Iiwg''@;'; put 'put ''IkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7ZGlzcGxheTpjb250ZW50cyFpbXBvcnRhbnR9OjpzbG90dGVkKCope2ZvbnQtZmFtaWx5OmluaGVyaXQ7Ym94LXNpemluZzppbmhlcml0fTo6c2xvdHRlZCgqKTo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5''@;'; put 'put ''LWNvbG9yLTIwMCx2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDAsIzRmNjE2OSkpfTpob3N0KFtfaXMtYW5jaG9yXSksOmhvc3QoW3JvbGU9YnV0dG9uXSl7Y3Vyc29yOnBvaW50ZXIhaW1wb3J0YW50fTpob3N0KFtfaXMtYW5jaG9yXSkgOjpzbG90dGVkKCopLDpob3N0''@;'; put 'put ''KFtyb2xlPWJ1dHRvbl0pIDo6c2xvdHRlZCgqKXtjdXJzb3I6cG9pbnRlciFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9YnV0dG9uXVtkaXNhYmxlZF0pe2N1cnNvcjpub3QtYWxsb3dlZCFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9YnV0dG9uXVtkaXNhYmxlZF0pIDo6c2xvdHRlZCgqKXtjdXJzb3I6''@;'; put 'put ''bm90LWFsbG93ZWQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QoW2hpZGRlbl0pLFtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Omhvc3QoW2hpZGRlbio9ZmFsc2VdKXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH06aG9zdChbcm9sZT1kaWFsb2ddW2hpZGRlbl0p''@;'; put 'put ''LDpob3N0KFtyb2xlPWRpYWxvZ11baGlkZGVuXSkgOjpzbG90dGVkKCope2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudH06aG9zdChbcm9sZT1kaWFsb2ddW2hpZGRlbio9ZmFsc2VdKSw6aG9zdChbcm9sZT1kaWFsb2ddW2hpZGRlbio9ZmFsc2Vd''@;'; put 'put ''KSA6OnNsb3R0ZWQoKil7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudH06aG9zdChbX2ZvY3VzZWRdKSAuaW5wdXQsOmhvc3QoW19mb2N1c2VkXSkgW2ZvY3VzYWJsZV0sOmhvc3QoW3RhYmluZGV4PSIwIl06Zm9jdXMpLDpob3N0KFt0YWJpbmRleD0iMCJdOmZvY3VzKSBbZm9jdXNhYmxl''@;'; put 'put ''XSxbdGFiaW5kZXg9IjAiXVtmb2N1c2FibGVdOmZvY3Vze291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIDJweDtvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zm''@;'; put 'put ''c2V0LDFweCl9YDtmdW5jdGlvbiBaaihkKXtyZXR1cm5gY2FsYygoJHtkfSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpICogMXJlbSlgfWNvbnN0IEYxZT0oZCxnKT0+Im1ldGhvZCI9PT1nLmtpbmQmJmcuZGVzY3JpcHRvciYmISgidmFsdWUiaW4gZy5kZXNjcmlwdG9yKT9nRyhwcyh7fSxn''@;'; put 'put ''KSx7ZmluaXNoZXIoaCl7aC5jcmVhdGVQcm9wZXJ0eShnLmtleSxkKX19KTp7a2luZDoiZmllbGQiLGtleTpTeW1ib2woKSxwbGFjZW1lbnQ6Im93biIsZGVzY3JpcHRvcjp7fSxvcmlnaW5hbEtleTpnLmtleSxpbml0aWFsaXplcigpeyJmdW5jdGlvbiI9PXR5cGVvZiBnLmluaXRpYWxpemVy''@;'; put 'put ''JiYodGhpc1tnLmtleV09Zy5pbml0aWFsaXplci5jYWxsKHRoaXMpKX0sZmluaXNoZXIoaCl7aC5jcmVhdGVQcm9wZXJ0eShnLmtleSxkKX19O2Z1bmN0aW9uIHFLKGQpe3JldHVybihnLGgpPT52b2lkIDAhPT1oP3ZvaWQgZy5jb25zdHJ1Y3Rvci5jcmVhdGVQcm9wZXJ0eShoLGQpOkYxZShk''@;'; put 'put ''LGcpfWZ1bmN0aW9uIGZTKGQsZyl7c3dpdGNoKGcmJmcudHlwZSl7Y2FzZSBBcnJheTpjYXNlIE9iamVjdDpyZXR1cm4gcHMoe3JlZmxlY3Q6ITF9LGcpO2Nhc2UgU3RyaW5nOnJldHVybiBwcyh7cmVmbGVjdDohMCxhdHRyaWJ1dGU6WDcoZCksY29udmVydGVyOnt0b0F0dHJpYnV0ZTpoPT5o''@;'; put 'put ''fHxudWxsfX0sZyk7Y2FzZSBOdW1iZXI6cmV0dXJuIHBzKHtyZWZsZWN0OiEwLGF0dHJpYnV0ZTpYNyhkKX0sZyk7Y2FzZSBCb29sZWFuOnJldHVybiBwcyh7cmVmbGVjdDohMCxhdHRyaWJ1dGU6WDcoZCksY29udmVydGVyOnt0b0F0dHJpYnV0ZTpoPT5oPyIiOm51bGwsZnJvbUF0dHJpYnV0''@;'; put 'put ''ZTpoPT5mdW5jdGlvbiBTMWUoZCl7cmV0dXJuIG51bGwhPWQmJiIiK2QhPSJmYWxzZSJ9KGgpfX0sZyk7Y2FzZSBEYXRlOnJldHVybiBwcyh7cmVmbGVjdDohMSxjb252ZXJ0ZXI6e2Zyb21BdHRyaWJ1dGU6aD0+bmV3IERhdGUoaCl9fSxnKTtkZWZhdWx0OnJldHVybiBwcyh7fSxnKX19ZnVu''@;'; put 'put ''Y3Rpb24gVDEoZCl7cmV0dXJuKGcsaCk9PihudWxsIT1kJiZkLnJlcXVpcmVkJiZmdW5jdGlvbiBlJChkLGcsaCl7Y29uc3Qgdj1kLmZpcnN0VXBkYXRlZDtkLmZpcnN0VXBkYXRlZD1mdW5jdGlvbih5KXtpZihoJiZoLnJlcXVpcmVkJiZzcCh0aGlzW2ddKSl7Y29uc3QgQz1oLnJlcXVpcmVk''@;'; put 'put ''TWVzc2FnZXx8ZnVuY3Rpb24oST0id2FybmluZyIsaixjZSl7Y29uc3QgX2U9Y2UudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm5gJHtyWChJKX06ICR7an0gaXMgcmVxdWlyZWQgdG8gdXNlICR7X2V9IGNvbXBvbmVudC4gU2V0IHRoZSBKUyBQcm9wZXJ0eSBvciBIVE1MIEF0dHJpYnV0ZS5c''@;'; put 'put ''blxuYCsoJEooKT9gQW5ndWxhcjogPCR7X2V9IFske2p9XT0iLi4uIj48LyR7X2V9PlxuYDoiIikrKHFKKCk/YFZ1ZTogPCR7X2V9IDoke2p9PSIuLi4iPjwvJHtfZX0+XG5gOiIiKSsoeFYoKT9gUmVhY3Q6IDwke2Z1bmN0aW9uIHRYKGQpe3JldHVybiByWChmdW5jdGlvbiBQc2UoZCl7cmV0''@;'; put 'put ''dXJuIGQuc3BsaXQoIi0iKS5tYXAoKGcsaCk9Pmg/Zy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStnLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk6Zykuam9pbigiIil9KGQpKX0oX2UpfSAke1JlPWosUmUuc3RhcnRzV2l0aCgiYXJpYSIpP1g3KFJlKTpSZX09ey4uLn0gLz5cbmA6IiIpK2BIVE1M''@;'; put 'put ''OiA8JHtfZX0gJHtYNyhqKX09Ii4uLiI+PC8ke19lfT5cbkphdmFTY3JpcHQ6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyR7X2V9JykuJHtqfSA9ICcuLi4nO1xuXG5gO3ZhciBSZX0oaC5yZXF1aXJlZCxnLHRoaXMudGFnTmFtZSk7aWYoImVycm9yIj09PWgucmVxdWlyZWQpdGhyb3cgRXJy''@;'; put 'put ''b3IoQyk7Szcud2FybihDLHRoaXMpfXYmJnYuY2FsbCh0aGlzLHkpfX0oZyxoLGQpLHFLKGZTKGgsZCkpKGcsaCkpfWZ1bmN0aW9uIHQkKGQpe3JldHVybihnLGgpPT57Y29uc3Qgdj1mUyhoLGQpO3JldHVybiB2JiYodi5yZWZsZWN0PSEobnVsbD09ZHx8IWQucmVmbGVjdCkmJmQucmVmbGVj''@;'; put 'put ''dCx2LnJlZmxlY3QmJiEobnVsbCE9ZCYmZC5hdHRyaWJ1dGUpJiYodi5hdHRyaWJ1dGU9Il8iK1g3KGgpKSkscUsodikoZyxoKX19dmFyIG40LFYxZT13TGBAa2V5ZnJhbWVzIGZhZGVJbkFuZE91dHswJSx0b3tvcGFjaXR5OjB9NzUle29wYWNpdHk6MX19Omhvc3R7LS1jb2xvcjpjdXJyZW50''@;'; put 'put ''Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWJhc2UsMjApKSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''YmFzZSwyMCkpKTttYXJnaW46MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZmlsbDp2YXIoLS1jb2xvcik7Y29sb3I6dmFyKC0tY29sb3IpO2NvbnRhaW46c3RyaWN0O2N1cnNvcjppbmhlcml0fXN2Z3tkaXNwbGF5OmJsb2NrfTpob3N0KFtzaXplKj14c10pe2hlaWdodDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''NSxjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKX06aG9zdChbc2l6ZSo9c21dKXtoZWlnaHQ6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''NyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtzaXplKj1tZF0pe2hlaWdodDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPWxnXSl7aGVpZ2h0OnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSxjYWxjKDM2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXhsXSl7aGVpZ2h0OnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMixjYWxjKDQ4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXh4bF0pe2hlaWdo''@;'; put 'put ''dDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSk7d2lkdGg6Y2FsYyh2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi13aWR0aDpjYWxjKHZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSl9Omhvc3QoW3NpemUqPWZpdF0pe2hlaWdodDphdXRvO3dpZHRoOmF1''@;'; put 'put ''dG87Y29udGFpbjpsYXlvdXR9Omhvc3QoW3N0YXR1cz1zdWNjZXNzXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwLCAjNDI4MTBlKSl9Omhvc3QoW3N0YXR1cz1kYW5nZXJdKXstLWNvbG9yOnZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIyMDApKX06aG9zdChbc3RhdHVzPXdhcm5pbmddKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgw''@;'; put 'put ''MCwgI2EzNjUwMCkpfTpob3N0KFtzdGF0dXM9aW5mb10pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXNoYWRlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwLCAjMDA2MDhhKSl9Omhvc3QoW2ludmVyc2VdKXstLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItY29uc3RydWN0aW9uLTIwMCwgI2NiZDRkOCl9Omhvc3QoW2RpcmVjdGlvbj11cF0pe3RyYW5zZm9ybTpyb3RhdGUoMCl9Omhvc3QoW2RpcmVjdGlvbj1kb3duXSl7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTpob3N0KFtkaXJlY3Rpb249cmlnaHRdKXt0cmFuc2Zvcm06cm90YXRlKDkw''@;'; put 'put ''ZGVnKX06aG9zdChbZGlyZWN0aW9uPWxlZnRdKXt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9Omhvc3QoW2ZsaXA9aG9yaXpvbnRhbF0pe3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWCgxODBkZWcpfTpob3N0KFtmbGlwPXZlcnRpY2FsXSl7dHJhbnNmb3JtOnNjYWxlKC0xKSByb3RhdGVZ''@;'; put 'put ''KDE4MGRlZyl9LmFsZXJ0LC5iYWRnZXtmaWxsOnZhcigtLWJhZGdlLWNvbG9yLHZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwjZTAyMjAwKSkpfTpob3N0KFtiYWRnZT1zdWNjZXNzXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwLCAjNDI4MTBlKSl9Omhvc3QoW2JhZGdlPWRhbmdlcl0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwg''@;'; put 'put ''I2UwMjIwMCkpfTpob3N0KFtiYWRnZSo9d2FybmluZ10pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcmssIHZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtODAwLCAjYTM2NTAwKSl9Omhvc3QoW2JhZGdlPWluaGVyaXRdKXstLWJhZGdlLWNvbG9y''@;'; put 'put ''OmN1cnJlbnRDb2xvcn06aG9zdChbYmFkZ2U9aW5mb10pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9Omhvc3QoW2JhZGdlPWluaGVyaXQtdHJpYW5nbGVdKXstLWJhZGdlLWNvbG9y''@;'; put 'put ''OmN1cnJlbnRDb2xvcn06aG9zdChbYmFkZ2VdW2ludmVyc2VdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIyMDApKX06aG9zdChbYmFkZ2U9c3VjY2Vzc11baW52ZXJzZV0pey0tYmFkZ2Ut''@;'; put 'put ''Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCwgIzQyODEwZSkpfTpob3N0KFtiYWRnZSo9d2FybmluZ11baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcmss''@;'; put 'put ''IHZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtODAwLCAjYTM2NTAwKSl9Omhvc3QoW2JhZGdlKj1pbmhlcml0XVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjpjdXJyZW50Q29sb3J9Omhvc3QoW2JhZGdlPWluZm9dW2ludmVyc2VdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1z''@;'; put 'put ''dGF0dXMtaW5mbywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwgIzAwNzlhZCkpfS5jZHMtaW50ZXJuYWwtZG90LTF7YW5pbWF0aW9uOmZhZGVJbkFuZE91dCAxLjhzIGVhc2UtaW4gMHMgaW5maW5pdGV9LmNkcy1pbnRlcm5hbC1kb3QtMnthbmltYXRpb246ZmFkZUluQW5kT3V0''@;'; put 'put ''IDEuOHMgZWFzZS1vdXQgLjQyMnMgaW5maW5pdGV9LmNkcy1pbnRlcm5hbC1kb3QtM3thbmltYXRpb246ZmFkZUluQW5kT3V0IDEuOHMgZWFzZS1vdXQgLjY3NXMgaW5maW5pdGV9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKXsuY2RzLWludGVybmFsLWRvdC0xLC5jZHMtaW50ZXJu''@;'; put 'put ''YWwtZG90LTIsLmNkcy1pbnRlcm5hbC1kb3QtM3thbmltYXRpb246bm9uZX19YDtmdW5jdGlvbiB6aihkLGcpe2xldCBoPSIiO3N3aXRjaChmdW5jdGlvbiBaMWUoZCl7c3dpdGNoKCEwKXtjYXNlIHNwKGQpOnJldHVybiBuNC5OaWxTaXplVmFsdWU7Y2FzZSBmdW5jdGlvbiByJChkKXtyZXR1''@;'; put 'put ''cm5bInh4cyIsInhzIiwic20iLCJtZCIsImxnIiwieGwiLCJ4eGwiXS5pbmRleE9mKGQpPi0xfShkKTpyZXR1cm4gbjQuVmFsaWRTaXplU3RyaW5nO2Nhc2UgZnVuY3Rpb24gekooZCl7cmV0dXJuIFNWKGQpJiYhWkooZC50cmltKCkpJiYrZD09K2R9KGQpOnJldHVybiBuNC5WYWxpZE51bWVy''@;'; put 'put ''aWNTdHJpbmc7ZGVmYXVsdDpyZXR1cm4gbjQuQmFkU2l6ZVZhbHVlfX0oZnVuY3Rpb24gejFlKGQpe3JldHVybiBzcChkKT8iIjpmdW5jdGlvbiBGc2UoZCxnLGg9IiIpe2NvbnN0IHY9ZC5zcGxpdCgiICIpLHk9IiI9PT1oP3YuZmlsdGVyKEM9PkMhPT1nKTp2Lm1hcChDPT5DPT09Zz9oOkMp''@;'; put 'put ''O3JldHVybiB5Lmxlbmd0aD4wP3kuam9pbigiICIpOiIifShkLCJmaXQiKX0oZykpKXtjYXNlIG40LlZhbGlkTnVtZXJpY1N0cmluZzpyZXR1cm4gaD1aaihwYXJzZUludChnKSksdm9pZCBmdW5jdGlvbiBCMWUoZCwuLi5nKXtnLmZvckVhY2goKFtoLHZdKT0+e2Quc3R5bGVbaF09dn0pfShk''@;'; put 'put ''LC4uLmZ1bmN0aW9uIEcxZShkLGcpe3JldHVybiFUayhkKSYmZC5pbmRleE9mKCJmaXQiKT4tMT9bWyJ3aWR0aCIsImF1dG8iXSxbImhlaWdodCIsImF1dG8iXSxbIm1pbi13aWR0aCIsZ10sWyJtaW4taGVpZ2h0IixnXV06W1sid2lkdGgiLGddLFsiaGVpZ2h0IixnXSxbIm1pbi13aWR0aCIs''@;'; put 'put ''Z10sWyJtaW4taGVpZ2h0IixnXV19KGcsaCkpO2Nhc2UgbjQuVmFsaWRTaXplU3RyaW5nOmNhc2UgbjQuTmlsU2l6ZVZhbHVlOnJldHVybiB2b2lkIGZ1bmN0aW9uIFAxZShkLC4uLmcpe2cuZm9yRWFjaChoPT57ZC5zdHlsZVtoXT0iIn0pfShkLCJ3aWR0aCIsImhlaWdodCIsIm1pbi13aWR0''@;'; put 'put ''aCIsIm1pbi1oZWlnaHQiKTtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gR2ooZCl7cmV0dXJuIGQuYmFkZ2UmJigiaW5oZXJpdC10cmlhbmdsZSI9PT1kLmJhZGdlfHwid2FybmluZy10cmlhbmdsZSI9PT1kLmJhZGdlKX0hZnVuY3Rpb24oZCl7ZC5CYWRTaXplVmFsdWU9ImJhZC12YWx1ZSIs''@;'; put 'put ''ZC5WYWxpZFNpemVTdHJpbmc9InZhbHVlLWlzLXN0cmluZyIsZC5WYWxpZE51bWVyaWNTdHJpbmc9InZhbHVlLWlzLW51bWVyaWMiLGQuTmlsU2l6ZVZhbHVlPSJ2YWx1ZS1pcy1uaWwifShuNHx8KG40PXt9KSk7Y2xhc3MgS2ggZXh0ZW5kcyBvd3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFy''@;'; put 'put ''Z3VtZW50cyksdGhpcy5fc2hhcGU9InVua25vd24iLHRoaXMuc29saWQ9ITEsdGhpcy5pbnZlcnNlPSExfXN0YXRpYyBnZXQgc3R5bGVzKCl7cmV0dXJuWyRLLFYxZV19Z2V0IHNoYXBlKCl7cmV0dXJuIHRoaXMuX3NoYXBlfXNldCBzaGFwZShnKXtpZihmdW5jdGlvbiBNVihkLGcpe3JldHVy''@;'; put 'put ''biFzcChkKSYmV0ooZCxnKX0oZyx0aGlzLl9zaGFwZSkpe2NvbnN0IGg9dGhpcy5fc2hhcGU7dGhpcy5fc2hhcGU9Zyx0aGlzLnJlcXVlc3RVcGRhdGUoInNoYXBlIixoKX19Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1zZXQgc2l6ZShnKXtpZihmdW5jdGlvbiBFc2UoZCxnKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gTXNlKGQpe3JldHVybiBIRChTdHJpbmcsZCl8fFRrKGQpfShkKSYmV0ooZCxnKX0oZyx0aGlzLl9zaXplKSl7Y29uc3QgaD10aGlzLl9zaXplO3RoaXMuX3NpemU9Zyx6aih0aGlzLGcpLHRoaXMucmVxdWVzdFVwZGF0ZSgic2l6ZSIsaCl9fXVwZGF0ZWQoZyl7aWYoZy5o''@;'; put 'put ''YXMoImlubmVyT2Zmc2V0IikmJnRoaXMuaW5uZXJPZmZzZXQ+MCl7Y29uc3QgaD1aaigtMSp0aGlzLmlubmVyT2Zmc2V0KSx2PWBjYWxjKDEwMCUgKyAke1pqKDIqdGhpcy5pbm5lck9mZnNldCl9KWA7dGhpcy5zdmcuc3R5bGUud2lkdGg9dix0aGlzLnN2Zy5zdHlsZS5oZWlnaHQ9dix0aGlz''@;'; put 'put ''LnN2Zy5zdHlsZS5tYXJnaW49YCR7aH0gMCAwICR7aH1gfX1maXJzdFVwZGF0ZWQoZyl7aWYoc3VwZXIuZmlyc3RVcGRhdGVkKGcpLHRoaXMuaXNDb25uZWN0ZWQpe2xldCBoPSJ1bmtub3duIjt0aGlzLnN1YnNjcmlwdGlvbj1LMS5zdGF0ZVVwZGF0ZXMuc3Vic2NyaWJlKHY9PnsiaWNvblJl''@;'; put 'put ''Z2lzdHJ5Ij09PXYua2V5JiZkcy5yZWdpc3RyeVt0aGlzLnNoYXBlXSYmaCE9PXRoaXMuc2hhcGUmJihoPXRoaXMuc2hhcGUsdGhpcy5yZXF1ZXN0VXBkYXRlKCJzaGFwZSIpKX0pfX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBnO3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVs''@;'; put 'put ''bD09KGc9dGhpcy5zdWJzY3JpcHRpb24pfHxnLnVuc3Vic2NyaWJlKCl9cmVuZGVyKCl7cmV0dXJuIFNWKGRzLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdKT9QamA8c3BhbiAuaW5uZXJIVE1MPSIke2RzLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdfSI+PC9zcGFuPmA6RDFlYDxzdmcgLmlubmVySFRNTD0i''@;'; put 'put ''JHtmdW5jdGlvbiBpJChkKXt2YXIgdix5LEMsSSxqO2NvbnN0IGc9bnVsbCE9KHY9ZHMucmVnaXN0cnlbZC5zaGFwZV0pP3Y6ZHMucmVnaXN0cnkudW5rbm93bjtsZXQgaD1kLnNvbGlkJiZnLnNvbGlkP2cuc29saWQ6Zy5vdXRsaW5lO3JldHVybiBkLmJhZGdlJiYhR2ooZCkmJihoPWQuc29s''@;'; put 'put ''aWQ/bnVsbCE9KHk9Zy5zb2xpZEJhZGdlZCk/eTpoOm51bGwhPShDPWcub3V0bGluZUJhZGdlZCk/QzpoKSxHaihkKSYmKGg9ZC5zb2xpZD9udWxsIT0oST1nLnNvbGlkQWxlcnRlZCk/STpoOm51bGwhPShqPWcub3V0bGluZUFsZXJ0ZWQpP2o6aCksaH0odGhpcykrZnVuY3Rpb24gVzFlKGQp''@;'; put 'put ''e2xldCBnPSIiO3JldHVybiBkLmJhZGdlJiZHaihkKT9nPSc8cGF0aCBkPSJNMjYuODUgMS4xNEwyMS4xMyAxMWExLjI4IDEuMjggMCAwMDEuMSAyaDExLjQ1YTEuMjggMS4yOCAwIDAwMS4xLTJsLTUuNzItOS44NmExLjI4IDEuMjggMCAwMC0yLjIxIDB6IiBjbGFzcz0iYWxlcnQiIC8+Jzpk''@;'; put 'put ''LmJhZGdlJiYoZz0nPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iYmFkZ2UiIC8+JyksZ30odGhpcyl9IiB2aWV3Qm94PSIwIDAgMzYgMzYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiPjwvc3ZnPmB9fVYyKFtUMSh7dHlw''@;'; put 'put ''ZTpTdHJpbmd9KV0sS2gucHJvdG90eXBlLCJzaGFwZSIsbnVsbCksVjIoW1QxKHt0eXBlOlN0cmluZ30pXSxLaC5wcm90b3R5cGUsInNpemUiLG51bGwpLFYyKFtUMSh7dHlwZTpTdHJpbmd9KV0sS2gucHJvdG90eXBlLCJkaXJlY3Rpb24iLHZvaWQgMCksVjIoW1QxKHt0eXBlOlN0cmluZ30p''@;'; put 'put ''XSxLaC5wcm90b3R5cGUsImZsaXAiLHZvaWQgMCksVjIoW1QxKHt0eXBlOkJvb2xlYW59KV0sS2gucHJvdG90eXBlLCJzb2xpZCIsdm9pZCAwKSxWMihbVDEoe3R5cGU6U3RyaW5nfSldLEtoLnByb3RvdHlwZSwic3RhdHVzIix2b2lkIDApLFYyKFtUMSh7dHlwZTpCb29sZWFufSldLEtoLnBy''@;'; put 'put ''b3RvdHlwZSwiaW52ZXJzZSIsdm9pZCAwKSxWMihbVDEoe3R5cGU6U3RyaW5nfSldLEtoLnByb3RvdHlwZSwiYmFkZ2UiLHZvaWQgMCksVjIoW3QkKHt0eXBlOk51bWJlcn0pXSxLaC5wcm90b3R5cGUsImlubmVyT2Zmc2V0Iix2b2lkIDApLFYyKFtmdW5jdGlvbiBuJChkLGcpe3JldHVybigo''@;'; put 'put ''e2ZpbmlzaGVyOmQsZGVzY3JpcHRvcjpnfSk9PihoLHYpPT57dmFyIHk7aWYodm9pZCAwPT09dil7Y29uc3QgQz1udWxsIT09KHk9aC5vcmlnaW5hbEtleSkmJnZvaWQgMCE9PXk/eTpoLmtleSxJPW51bGwhPWc/e2tpbmQ6Im1ldGhvZCIscGxhY2VtZW50OiJwcm90b3R5cGUiLGtleTpDLGRl''@;'; put 'put ''c2NyaXB0b3I6ZyhoLmtleSl9OmdHKHBzKHt9LGgpLHtrZXk6Q30pO3JldHVybiBudWxsIT1kJiYoSS5maW5pc2hlcj1mdW5jdGlvbihqKXtkKGosQyl9KSxJfXtjb25zdCBDPWguY29uc3RydWN0b3I7dm9pZCAwIT09ZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsdixnKHYpKSxudWxsPT1k''@;'; put 'put ''fHxkKEMsdil9fSkoe2Rlc2NyaXB0b3I6aD0+e2NvbnN0IHY9e2dldCgpe3ZhciB5LEM7cmV0dXJuIG51bGwhPT0oQz1udWxsPT09KHk9dGhpcy5yZW5kZXJSb290KXx8dm9pZCAwPT09eT92b2lkIDA6eS5xdWVyeVNlbGVjdG9yKGQpKSYmdm9pZCAwIT09Qz9DOm51bGx9LGVudW1lcmFibGU6''@;'; put 'put ''ITAsY29uZmlndXJhYmxlOiEwfTtpZihnKXtjb25zdCB5PSJzeW1ib2wiPT10eXBlb2YgaD9TeW1ib2woKToiX18iK2g7di5nZXQ9ZnVuY3Rpb24oKXt2YXIgQyxJO3JldHVybiB2b2lkIDA9PT10aGlzW3ldJiYodGhpc1t5XT1udWxsIT09KEk9bnVsbD09PShDPXRoaXMucmVuZGVyUm9vdCl8''@;'; put 'put ''fHZvaWQgMD09PUM/dm9pZCAwOkMucXVlcnlTZWxlY3RvcihkKSkmJnZvaWQgMCE9PUk/STpudWxsKSx0aGlzW3ldfX1yZXR1cm4gdn19KX0oInN2ZyIpXSxLaC5wcm90b3R5cGUsInN2ZyIsdm9pZCAwKSxUSygiY2RzLWljb24iLEtoKTtjbGFzcyBhd3tjb25zdHJ1Y3RvcihnKXt0aGlzLmhv''@;'; put 'put ''c3Q9Zyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1ob3N0Q29ubmVjdGVkKCl7dmFyIGc9dGhpcztyZXR1cm4gUksoZnVuY3Rpb24qKCl7eWllbGQgZy5ob3N0LnVwZGF0ZUNvbXBsZXRlLGcuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixoPT5nLmVtdWxhdGVBY3RpdmUo''@;'; put 'put ''aCkpLGcuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGg9PmcuZW11bGF0ZUFjdGl2ZShoKSksZy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwoKT0+Zy5lbXVsYXRlSW5hY3RpdmUoKSksZy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5nLmVtdWxhdGVJ''@;'; put 'put ''bmFjdGl2ZSgpKSxnLmhvc3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKCk9PmcuZW11bGF0ZUluYWN0aXZlKCkpfSkoKX1lbXVsYXRlQWN0aXZlKGcpe3ZhciBoO3RoaXMuaG9zdC5kaXNhYmxlZHx8bnVsbD09KGg9dGhpcy5ob3N0KXx8aC5zZXRBdHRyaWJ1dGUoImNkcy1hY3RpdmUi''@;'; put 'put ''LCIiKSwiU3BhY2UiPT09Zy5jb2RlJiZnLnRhcmdldD09PXRoaXMuaG9zdCYmZy5wcmV2ZW50RGVmYXVsdCgpfWVtdWxhdGVJbmFjdGl2ZSgpe3RoaXMuaG9zdC5yZW1vdmVBdHRyaWJ1dGUoImNkcy1hY3RpdmUiKX19Y2xhc3MgVTFle2NvbnN0cnVjdG9yKGcpe3RoaXMuaG9zdD1nLHRoaXMu''@;'; put 'put ''aG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RDb25uZWN0ZWQoKXt0aGlzLmhvc3QucG9wdXAmJih0aGlzLmhvc3QuYXJpYUNvbnRyb2xzPXRoaXMuaG9zdC5wb3B1cCx0aGlzLmhvc3QuYXJpYUhhc1BvcHVwPSJ0cnVlIix0aGlzLmhvc3QuYXJpYUV4cGFuZGVkPSJmYWxzZSIpfX1jbGFz''@;'; put 'put ''cyBKMWV7Y29uc3RydWN0b3IoZyl7dGhpcy5ob3N0PWcsdGhpcy5ob3N0LmFkZENvbnRyb2xsZXIodGhpcyl9aG9zdFVwZGF0ZWQoKXtudWxsIT09dGhpcy5ob3N0LmRpc2FibGVkJiYodGhpcy5ob3N0LmFyaWFEaXNhYmxlZD10aGlzLmhvc3QuZGlzYWJsZWQpLHRoaXMuaG9zdC5yZWFkb25s''@;'; put 'put ''eSYmKHRoaXMuaG9zdC5hcmlhRGlzYWJsZWQ9bnVsbCl9fWNsYXNzIEsxZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmhvc3Q9Zyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1ob3N0VXBkYXRlZCgpe251bGwhPXRoaXMuaG9zdC5wcmVzc2VkJiYodGhpcy5ob3N0LmFyaWFQcmVzc2VkPXRo''@;'; put 'put ''aXMuaG9zdC5wcmVzc2VkPyJ0cnVlIjoiZmFsc2UiKSx0aGlzLmhvc3QucmVhZG9ubHkmJih0aGlzLmhvc3QuYXJpYVByZXNzZWQ9bnVsbCl9fWNsYXNzIHExZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmhvc3Q9Zyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1ob3N0Q29ubmVjdGVkKCl7''@;'; put 'put ''dGhpcy5ob3N0LnRhYkluZGV4PTB9aG9zdFVwZGF0ZWQoKXt0aGlzLmhvc3Qucm9sZT10aGlzLmhvc3QucmVhZG9ubHk/bnVsbDoiYnV0dG9uIix0aGlzLmhvc3QudGFiSW5kZXg9dGhpcy5ob3N0LmRpc2FibGVkPy0xOjAsdGhpcy5ob3N0LnJlYWRvbmx5JiZ0aGlzLmhvc3QucmVtb3ZlQXR0''@;'; put 'put ''cmlidXRlKCJ0YWJpbmRleCIpfX1jbGFzcyB0dWV7Y29uc3RydWN0b3IoZyl7dGhpcy5ob3N0PWcsdGhpcy5ob3N0LmFkZENvbnRyb2xsZXIodGhpcyl9Z2V0IGN1cnJlbnRBbmNob3IoKXt2YXIgZztyZXR1cm4iQSI9PT0obnVsbD09KGc9dGhpcy5ob3N0LnBhcmVudEVsZW1lbnQpP3ZvaWQg''@;'; put 'put ''MDpnLnRhZ05hbWUpP3RoaXMuaG9zdC5wYXJlbnRFbGVtZW50Om51bGx9aG9zdENvbm5lY3RlZCgpe3RoaXMuc2V0QW5jaG9yKCl9aG9zdFVwZGF0ZWQoKXt0aGlzLnNldEFuY2hvcigpfXNldEFuY2hvcigpe3RoaXMuY3VycmVudEFuY2hvciYmdGhpcy5jdXJyZW50QW5jaG9yIT09dGhpcy5w''@;'; put 'put ''cmV2aW91c0FuY2hvciYmKHRoaXMucHJldmlvdXNBbmNob3I9dGhpcy5jdXJyZW50QW5jaG9yLHRoaXMuaG9zdC5yZWFkb25seT0hMCx0aGlzLmN1cnJlbnRBbmNob3Iuc3R5bGUubGluZUhlaWdodD0iMCIsdGhpcy5jdXJyZW50QW5jaG9yLnN0eWxlLnRleHREZWNvcmF0aW9uPSJub25lIil9''@;'; put 'put ''fWNvbnN0IFdqPWQ9Pm51bGwhPWQ/ZDpqdTtmdW5jdGlvbiBvJChkKXtkLnByZXZlbnREZWZhdWx0KCksZC5zdG9wUHJvcGFnYXRpb24oKX1jb25zdCBZaj1uZXcgTWFwKFtbImFycm93LWxlZnQiLCJBcnJvd0xlZnQiXSxbImFycm93LXJpZ2h0IiwiQXJyb3dSaWdodCJdLFsiYXJyb3ctdXAi''@;'; put 'put ''LCJBcnJvd1VwIl0sWyJhcnJvdy1kb3duIiwiQXJyb3dEb3duIl0sWyJ0YWIiLCJUYWIiXSxbImVudGVyIiwiRW50ZXIiXSxbImVzY2FwZSIsIkVzY2FwZSJdLFsic3BhY2UiLCIgIl0sWyJob21lIiwiSG9tZSJdLFsiZW5kIiwiRW5kIl1dKTt2YXIgaHA7IWZ1bmN0aW9uKGQpe2QuQXJyb3dV''@;'; put 'put ''cD0iQXJyb3dVcCIsZC5BcnJvd0Rvd249IkFycm93RG93biIsZC5BcnJvd0xlZnQ9IkFycm93TGVmdCIsZC5BcnJvd1JpZ2h0PSJBcnJvd1JpZ2h0IixkLkVuZD0iRW5kIixkLkhvbWU9IkhvbWUiLGQuUGFnZVVwPSJQYWdlVXAiLGQuUGFnZURvd249IlBhZ2VEb3duIn0oaHB8fChocD17fSkp''@;'; put 'put ''O2NsYXNzIGh1ZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmhvc3Q9Zyx0aGlzLnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvckhhbmRsZXI9dGhpcy50cmlnZ2VyTmF0aXZlQnV0dG9uQmVoYXZpb3IuYmluZCh0aGlzKSx0aGlzLmVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3JIYW5kbGVyPXRo''@;'; put 'put ''aXMuZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvci5iaW5kKHRoaXMpLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RVcGRhdGVkKCl7dGhpcy5zZXRCdXR0b25UeXBlKCksdGhpcy5zZXR1cE5hdGl2ZUJ1dHRvbkJlaGF2aW9yKCl9c2V0QnV0dG9uVHlwZSgpeyF0aGlzLmhv''@;'; put 'put ''c3QudHlwZSYmdGhpcy5ob3N0LmNsb3Nlc3QoImZvcm0iKSYmKHRoaXMuaG9zdC50eXBlPSJzdWJtaXQiKX1zZXR1cE5hdGl2ZUJ1dHRvbkJlaGF2aW9yKCl7dGhpcy5ob3N0LnJlYWRvbmx5fHx0aGlzLmhvc3QuZGlzYWJsZWQ/KHRoaXMuaG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGlj''@;'; put 'put ''ayIsdGhpcy50cmlnZ2VyTmF0aXZlQnV0dG9uQmVoYXZpb3JIYW5kbGVyKSx0aGlzLmhvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvckhhbmRsZXIpKToodGhpcy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlz''@;'; put 'put ''LnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvckhhbmRsZXIpLHRoaXMuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5lbXVsYXRlS2V5Qm9hcmRFdmVudEJlaGF2aW9ySGFuZGxlcikpfWVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3IoZyl7IWZ1bmN0aW9uIGF1ZShkLGcs''@;'; put 'put ''aCl7ZC5maWx0ZXIodj0+ZnVuY3Rpb24gVWooZCxnKXtyZXR1cm4gY2xhc3MgaXVle3N0YXRpYyBnZXQga2V5Y29kZXMoKXtyZXR1cm4gSWsoWWopfXN0YXRpYyBhZGQoZyxoKXtZai5zZXQoZyxoKX1zdGF0aWMgaGFzKGcpe3JldHVybiBZai5oYXMoZyl9c3RhdGljIGdldENvZGUoZyxoPXRo''@;'; put 'put ''aXMua2V5Y29kZXMpe3JldHVybiBmdW5jdGlvbiBvdWUoZCxnKXtyZXR1cm4gZy5nZXQoZCl8fCIifShnLGgpfX0uZ2V0Q29kZShnKT09PWQua2V5fShnLHYpKS5sZW5ndGg+MCYmaCgpfShbImVudGVyIiwic3BhY2UiXSxnLCgpPT57InN1Ym1pdCI9PT10aGlzLmhvc3QudHlwZT90aGlzLnRy''@;'; put 'put ''aWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvcihnKTp0aGlzLmhvc3QuY2xpY2soKSxvJChnKX0pfXRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvcihnKXtpZih0aGlzLmhvc3QuZGlzYWJsZWQpbyQoZyk7ZWxzZSBpZighZy5kZWZhdWx0UHJldmVudGVkKXtjb25zdCBoPWZ1bmN0aW9uIGN1ZShk''@;'; put 'put ''LGcsaCl7Y29uc3Qgdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtnLmFwcGVuZENoaWxkKHYpLHNTKGQsZyxwcyh7cmVuZGVyQmVmb3JlOnZ9LGgpKTtjb25zdCB5PXYucHJldmlvdXNTaWJsaW5nO3JldHVybiB2LnJlbW92ZSgpLHl9KFBqYDxidXR0b24gYXJpYS1oaWRkZW49InRy''@;'; put 'put ''dWUiIHJvbGU9InByZXNlbnRhdGlvbiIgP2Rpc2FibGVkPSIke3RoaXMuaG9zdC5kaXNhYmxlZH0iIHRhYmluZGV4PSItMSIgc3R5bGU9ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQiIHZhbHVlPSIke1dqKHRoaXMuaG9zdC52YWx1ZSl9IiBuYW1lPSIke1dqKHRoaXMuaG9zdC5uYW1lKX0iIHR5''@;'; put 'put ''cGU9IiR7V2oodGhpcy5ob3N0LnR5cGUpfSI+PC9idXR0b24+YCx0aGlzLmhvc3QpO251bGw9PWh8fGguZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgiY2xpY2siLHtyZWxhdGVkVGFyZ2V0OnRoaXMuaG9zdCxjb21wb3NlZDohMH0pKSxudWxsPT1ofHxoLnJlbW92ZSgpfX19Y2xhc3Mg''@;'; put 'put ''cHVle2NvbnN0cnVjdG9yKGcpe3RoaXMuaG9zdD1nLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RVcGRhdGVkKCl7bnVsbCE9dGhpcy5ob3N0LmV4cGFuZGVkJiYodGhpcy5ob3N0LmFyaWFFeHBhbmRlZD10aGlzLmhvc3QuZXhwYW5kZWQ/InRydWUiOiJmYWxzZSIpLHRoaXMu''@;'; put 'put ''aG9zdC5yZWFkb25seSYmKHRoaXMuaG9zdC5hcmlhRXhwYW5kZWQ9bnVsbCl9fWxldCByND1jbGFzcyBleHRlbmRzIG93e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9kaXNhYmxlZD0hMX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRp''@;'; put 'put ''c2FibGVkKGQpe2NvbnN0IGc9dGhpcy5fZGlzYWJsZWQ7dGhpcy5fZGlzYWJsZWQ9ZCx0aGlzLnJlcXVlc3RVcGRhdGUoImRpc2FibGVkIixnKX19O1YyKFtUMSh7dHlwZTpCb29sZWFufSldLHI0LnByb3RvdHlwZSwicHJlc3NlZCIsdm9pZCAwKSxWMihbVDEoe3R5cGU6Qm9vbGVhbn0pXSxy''@;'; put 'put ''NC5wcm90b3R5cGUsImV4cGFuZGVkIix2b2lkIDApLFYyKFtUMSh7dHlwZTpCb29sZWFufSldLHI0LnByb3RvdHlwZSwicmVhZG9ubHkiLHZvaWQgMCksVjIoW1QxKHt0eXBlOlN0cmluZ30pXSxyNC5wcm90b3R5cGUsInR5cGUiLHZvaWQgMCksVjIoW1QxKHt0eXBlOlN0cmluZ30pXSxyNC5w''@;'; put 'put ''cm90b3R5cGUsIm5hbWUiLHZvaWQgMCksVjIoW1QxKHt0eXBlOlN0cmluZ30pXSxyNC5wcm90b3R5cGUsInZhbHVlIix2b2lkIDApLFYyKFtUMSh7dHlwZTpCb29sZWFufSldLHI0LnByb3RvdHlwZSwiZGlzYWJsZWQiLG51bGwpLFYyKFtUMSh7dHlwZTpTdHJpbmd9KV0scjQucHJvdG90eXBl''@;'; put 'put ''LCJwb3B1cCIsdm9pZCAwKSxyND1WMihbZnVuY3Rpb24gdWcoKXtyZXR1cm4gZD0+ZC5hZGRJbml0aWFsaXplcihnPT5uZXcgYXcoZykpfSgpLGZ1bmN0aW9uICQxZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBxMWUoZykpfSgpLGZ1bmN0aW9uIFgxZSgpe3JldHVybiBk''@;'; put 'put ''PT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBLMWUoZykpfSgpLGZ1bmN0aW9uIGR1ZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBwdWUoZykpfSgpLGZ1bmN0aW9uIFExZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBKMWUoZykpfSgpLGZ1bmN0aW9u''@;'; put 'put ''IFkxZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBVMWUoZykpfSgpLGZ1bmN0aW9uIGZ1ZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBodWUoZykpfSgpLGZ1bmN0aW9uIGV1ZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyB0dWUo''@;'; put 'put ''ZykpfSgpXSxyNCk7Y29uc3QgQ0w9e2FjdGlvbnM6e3NvcnQ6IlNvcnQiLGV4cGFuZDoiRXhwYW5kIixjbG9zZToiQ2xvc2UiLHJlc2l6ZToiUmVzaXplIixmaWx0ZXI6IkZpbHRlciJ9LGFsZXJ0OntjbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UiLGxvYWRpbmc6IkxvYWRpbmciLGluZm86''@;'; put 'put ''IkluZm8iLHN1Y2Nlc3M6IlN1Y2Nlc3MiLHdhcm5pbmc6Ildhcm5pbmciLGRhbmdlcjoiRXJyb3IifSxkcm9wZG93bjp7b3BlbjoiT3BlbiJ9LGZpbGU6e2Jyb3dzZToiYnJvd3NlIixmaWxlczoiZmlsZXMiLHJlbW92ZUZpbGU6InJlbW92ZSBmaWxlIn0sbW9kYWw6e2Nsb3NlQnV0dG9uQXJp''@;'; put 'put ''YUxhYmVsOiJDbG9zZSBtb2RhbCIsY29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgbW9kYWwgY29udGVudCIsY29udGVudEJveDoiU2Nyb2xsYWJsZSBtb2RhbCBib2R5Iixjb250ZW50RW5kOiJFbmQgb2YgbW9kYWwgY29udGVudCJ9LG5hdmlnYXRpb246e25hdmlnYXRpb25FbGVtZW50OiJu''@;'; put 'put ''YXZpZ2F0aW9uIixuYXZpZ2F0aW9uTGFiZWw6Im5hdmlnYXRpb24gbWVudSIsbmF2aWdhdGlvbkFicmlkZ2VkVGV4dDoiVmlldyBhYnJpZGdlZCBtZW51IixuYXZpZ2F0aW9uVW5hYnJpZGdlZFRleHQ6IlZpZXcgdW5hYnJpZGdlZCBtZW51In0sb3ZlcmxheTp7Y2xvc2VCdXR0b25BcmlhTGFi''@;'; put 'put ''ZWw6IkNsb3NlIGRpYWxvZyIsY29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgZGlhbG9nIGNvbnRlbnQiLGNvbnRlbnRFbmQ6IkVuZCBvZiBkaWFsb2cgY29udGVudCJ9LHBvcHVwOntjbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UgcG9wdXAiLGNvbnRlbnRTdGFydDoiQmVnaW5uaW5nIG9m''@;'; put 'put ''IHBvcHVwIGNvbnRlbnQiLGNvbnRlbnRFbmQ6IkVuZCBvZiBwb3B1cCBjb250ZW50In0scGFzc3dvcmQ6e3Nob3dCdXR0b25BcmlhTGFiZWw6IlNob3cgcGFzc3dvcmQiLGhpZGVCdXR0b25BcmlhTGFiZWw6IkhpZGUgcGFzc3dvcmQifSxwcm9ncmVzczp7bG9hZGluZzoiTG9hZGluZyIsbG9v''@;'; put 'put ''cGluZzoiTG9hZGluZyJ9LHRyZWV2aWV3Ontsb2FkaW5nOiJMb2FkaW5nIn0sZ3JpZDp7cmVzaXplQ29sdW1uOiJSZXNpemUgQ29sdW1uIixjbG9zZURldGFpbHM6IkNsb3NlIERldGFpbHMiLG5vRGF0YToiTm8gUmVzdWx0cyBGb3VuZCIscm93RGV0YWlsU3RhcnQ6IlN0YXJ0IG9mIHJvdyBk''@;'; put 'put ''ZXRhaWxzIixyb3dEZXRhaWxFbmQ6IkVuZCBvZiByb3cgZGV0YWlscyIsZm9vdGVyRW5kOiJFbmQgb2YgZ3JpZCByb3dzIixhY3Rpb246IkFjdGlvbiIsZHJvcFRhcmdldDoiRHJvcCBJdGVtIixwYWdpbmF0aW9uOntsYWJlbDoiZ3JpZCBwYWdpbmF0aW9uIixmaXJzdFBhZ2U6ImdvIHRvIGZp''@;'; put 'put ''cnN0IHBhZ2UiLHByZXZpb3VzUGFnZToiZ28gdG8gcHJldmlvdXMgcGFnZSIsbmV4dFBhZ2U6ImdvIHRvIG5leHQgcGFnZSIsbGFzdFBhZ2U6ImdvIHRvIGxhc3QgcGFnZSIscGFnZVNpemU6InJvd3MgcGVyIHBhZ2UiLHBhZ2U6InBhZ2UifX19O2NsYXNzIGh2e3N0YXRpYyBnZXQga2V5cygp''@;'; put 'put ''e3JldHVybiAwPT09T2JqZWN0LmtleXMoSzEuc3RhdGUuaTE4blJlZ2lzdHJ5KS5sZW5ndGgmJihLMS5zdGF0ZS5pMThuUmVnaXN0cnk9SjcoQ0wsSzEuc3RhdGUuaTE4blJlZ2lzdHJ5KSksSjcoQ0wsSzEuc3RhdGUuaTE4blJlZ2lzdHJ5KX1zdGF0aWMgZmluZEtleShnKXtjb25zdCBoPWh2''@;'; put 'put ''LmtleXM7cmV0dXJuIE9iamVjdC5rZXlzKGgpLmZpbmQodj0+JGQoaFt2XSxnKSl9c3RhdGljIGdldChnKXtyZXR1cm4gZyYmaHYua2V5c1tnXXx8e319c3RhdGljIHJlc2V0KCl7SzEuc3RhdGUuaTE4blJlZ2lzdHJ5PUo3KHt9LENMKX1zdGF0aWMgaHlkcmF0ZShnLGgpe3JldHVybiBKU09O''@;'; put 'put ''LnBhcnNlKGZ1bmN0aW9uIHVYKGQsZyxoKXtyZXR1cm4gZC5yZXBsYWNlKC9cJFx7Lis/XH0vZyx2PT5mdW5jdGlvbiBVSihkLGcsaD1gXCR7JHtkfX1gKXtyZXR1cm4gZC5zcGxpdCgiLiIpLnJlZHVjZSgodix5KT0+e3RyeXtjb25zdCBDPXZbeV07c3dpdGNoKCEwKXtjYXNlIG51bGw9PT1D''@;'; put 'put ''OmNhc2UhMT09PUM6Y2FzZSIiPT09QzpjYXNlIDA9PT1DOnJldHVybiBDO2RlZmF1bHQ6cmV0dXJuIEN8fGh9fWNhdGNoKEMpe3JldHVybiBofX0sZyl9KHYuc3Vic3RyKDIsdi5sZW5ndGgtMykudHJpbSgpLGcsaCkpfShKU09OLnN0cmluZ2lmeShnKSxoKSl9c3RhdGljIGxvY2FsaXplKGcp''@;'; put 'put ''e0sxLnN0YXRlLmkxOG5SZWdpc3RyeT1KNyhDTCxLMS5zdGF0ZS5pMThuUmVnaXN0cnksZyl9fXZhciBBdWU9d0xgOmhvc3R7LS1pY29uLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNywgY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0taWNvbi1o''@;'; put 'put ''ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LCBjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS13aWR0aDp2YXIoLS1pY29uLXdpZHRoKTstLWhlaWdodDp2YXIoLS1pY29uLXdpZHRoKTstLWN1cnNvcjpwb2ludGVyOy0tY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTMwMCwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwLCAjMmQ0MDQ4KSk7LS1mb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zLCBjYWxjKDEzICogMXJlbSAvIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtYmFzZSwgMjApKSk7LS1iYWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy0tcGFkZGluZzowOy0tb3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUsIEhpZ2hsaWdodCBzb2xpZCAycHgpOy0tb3V0bGluZS1vZmZzZXQ6Y2FsYyh2YXIoLS1jZHMtYWxpYXMt''@;'; put 'put ''b2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0LCAxcHgpICogLTEpO3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3V0bGluZTowIWltcG9ydGFudH06aG9zdChbcm9sZT1idXR0b25dKXtwb2ludGVyLWV2ZW50czppbml0aWFsO2N1cnNvcjp2YXIoLS1j''@;'; put 'put ''dXJzb3IpIWltcG9ydGFudH06aG9zdChbc3RhdHVzPWFjdGl2ZV0pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9OjpzbG90dGVkKFtzaGFwZT1jbG9zZV0pLDo6c2xvdHRlZChbc2hhcGU9aW5m''@;'; put 'put ''by1jaXJjbGVdKSw6OnNsb3R0ZWQoW3NoYXBlPXRpbWVzXSksOmhvc3QoW3NoYXBlPWNsb3NlXSksOmhvc3QoW3NoYXBlPWluZm8tY2lyY2xlXSl7LS1pY29uLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCwgY2FsYygxOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIw''@;'; put 'put ''KSkpOy0taWNvbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04LCBjYWxjKDE4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSl9Omhvc3QoOmhvdmVyKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIsIHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDAsICMxYjJiMzIpKX06aG9zdCg6YWN0aXZlKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwLCAjMWIy''@;'; put 'put ''YjMyKSl9Omhvc3QoOmFjdGl2ZSkgLnByaXZhdGUtaG9zdHt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSxjYWxjKDEgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpLyAyKSl9Omhvc3QoW2Rpc2FibGVkXSl7LS1jb2xvcjp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0zMDAsICNhZWI4YmMpKX0ucHJpdmF0ZS1ob3N0ey0taWNvbi1jb2xvcjp2YXIoLS1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iYWNrZ3JvdW5k''@;'; put 'put ''KTtwYWRkaW5nOnZhcigtLXBhZGRpbmcpO2NvbG9yOnZhcigtLWNvbG9yKTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplKTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOnZhcigtLXdpZHRoKTttaW4taGVpZ2h0OnZhcigt''@;'; put 'put ''LWhlaWdodCl9OjpzbG90dGVkKGNkcy1pY29uKSxjZHMtaWNvbnt3aWR0aDp2YXIoLS1pY29uLXdpZHRoKTtoZWlnaHQ6dmFyKC0taWNvbi1oZWlnaHQpO3BvaW50ZXItZXZlbnRzOm5vbmV9OjpzbG90dGVkKGNkcy1pY29uOm5vdChbc3RhdHVzXSkpLGNkcy1pY29uey0tY29sb3I6dmFyKC0t''@;'; put 'put ''aWNvbi1jb2xvcil9Omhvc3QoW2Rpc2FibGVkXTphY3RpdmUpe3BvaW50ZXItZXZlbnRzOm5vbmUhaW1wb3J0YW50fS5wcml2YXRlLWhvc3Q6OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKC0xKnZhcigtLXdpZHRoKSAtIDEpO3RvcDpjYWxjKC0xKnZhcigt''@;'; put 'put ''LWhlaWdodCkgLSAxKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXRvdWNoLXRhcmdldCxjYWxjKDM2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtoZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi10b3VjaC10YXJn''@;'; put 'put ''ZXQsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW2Rpc2FibGVkXSkgLnByaXZhdGUtaG9zdDo6YWZ0ZXJ7b3V0bGluZTowIWltcG9ydGFudH06aG9zdCg6Zm9jdXMpIC5wcml2YXRlLWhvc3Q6OmFmdGVye291dGxpbmU6dmFyKC0tb3V0bGluZSk7''@;'; put 'put ''b3V0bGluZS1vZmZzZXQ6dmFyKC0tb3V0bGluZS1vZmZzZXQpfUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApezpob3N0KDpmb2N1cykgLnByaXZhdGUtaG9zdDo6YWZ0ZXJ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3J9fWA7Y2xhc3MgZHYg''@;'; put 'put ''ZXh0ZW5kcyByNHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pMThuPWh2LmtleXMuYWN0aW9ucyx0aGlzLmNkc0J1dHRvbkFjdGlvbj0hMH1yZW5kZXIoKXtyZXR1cm4gUGpgPGRpdiBjbGFzcz0icHJpdmF0ZS1ob3N0Ij48c2xvdD48Y2RzLWljb24gLnNoYXBlPSIk''@;'; put 'put ''e3RoaXMuc2hhcGU/dGhpcy5zaGFwZToiZWxsaXBzaXMtdmVydGljYWwifSIgLnNpemU9IiR7dGhpcy5pY29uU2l6ZX0iID9zb2xpZD0iJHt0aGlzLnByZXNzZWR8fHRoaXMuZXhwYW5kZWR9IiBpbm5lci1vZmZzZXQ9IiR7MX0iPjwvY2RzLWljb24+PC9zbG90PjwvZGl2PmB9dXBkYXRlZChn''@;'; put 'put ''KXtzdXBlci51cGRhdGVkKGcpLHRoaXMuYXJpYUxhYmVsfHx0aGlzLnJlYWRvbmx5fHxLNy53YXJuKCJBIGFyaWEtbGFiZWwgaXMgcmVxdWlyZWQgZm9yIGludGVyYWN0aXZlIGNkcy1idXR0b24tYWN0aW9uIHR5cGUiLHRoaXMpLGcuaGFzKCJyZWFkb25seSIpJiYodGhpcy5hcmlhSGlkZGVu''@;'; put 'put ''PXRoaXMucmVhZG9ubHkmJiF0aGlzLmhhc0F0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpPyJ0cnVlIjpudWxsKX19ZHYuc3R5bGVzPVskSyxBdWVdLFYyKFtUMSh7dHlwZTpTdHJpbmd9KV0sZHYucHJvdG90eXBlLCJzaGFwZSIsdm9pZCAwKSxWMihbVDEoe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9''@;'; put 'put ''KV0sZHYucHJvdG90eXBlLCJhY3Rpb24iLHZvaWQgMCksVjIoW1QxKHt0eXBlOlN0cmluZ30pXSxkdi5wcm90b3R5cGUsImljb25TaXplIix2b2lkIDApLFYyKFtmdW5jdGlvbiBndWUoKXtyZXR1cm4oZCxnKT0+e2NvbnN0IGg9ZC5jb25uZWN0ZWRDYWxsYmFjayx2PWQuZGlzY29ubmVjdGVk''@;'; put 'put ''Q2FsbGJhY2s7ZC5jb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe2QuX19pMThuU3ViPUsxLnN0YXRlVXBkYXRlcy5zdWJzY3JpYmUoQz0+eyJpMThuUmVnaXN0cnkiPT09Qy5rZXkmJnRoaXMucmVxdWVzdFVwZGF0ZShnKX0pLGgmJmguYXBwbHkodGhpcyl9LGQuZGlzY29ubmVjdGVkQ2Fs''@;'; put 'put ''bGJhY2s9ZnVuY3Rpb24oKXtkLl9faTE4blN1Yi51bnN1YnNjcmliZSgpLHYmJnYuYXBwbHkodGhpcyl9O2NvbnN0IHk9e2dldCgpe2NvbnN0IEM9SjcoaHYua2V5c1t0aGlzLl9faTE4bktleV0sdGhpcy5fX2kxOG58fHt9KTtyZXR1cm4gaHYuaHlkcmF0ZShDLHRoaXMpfSxzZXQoQyl7Y29u''@;'; put 'put ''c3QgST1mdW5jdGlvbiBtdWUoZCxnKXtpZihzcChkKSl7bGV0IGg9e307aWYoZy5oYXNBdHRyaWJ1dGUoImNkcy1pMThuIikpe2NvbnN0IHY9Zy5nZXRBdHRyaWJ1dGUoImNkcy1pMThuIikrIiI7aWYoc3AodikpaD17fTtlbHNlIHRyeXtoPUpTT04ucGFyc2Uodil9Y2F0Y2goeSl7Szcud2Fy''@;'; put 'put ''bigiQ2xhcml0eSBpMThuOiBJbnZhbGlkIEpTT04gcGFzc2VkIHRvIGNkcy1pMThuIiksaD17fX19cmV0dXJuIGh9cmV0dXJuIGR9KEMsdGhpcyksaj1mdW5jdGlvbiB2dWUoZCxnLGgsdil7cmV0dXJuIHNwKGQpPyRkKGgsdik/e3VwZGF0ZTohMX06e3VwZGF0ZTohMCx2YWx1ZXM6aH06ZD09''@;'; put 'put ''PWc/e3VwZGF0ZTohMSx2YWx1ZXM6e319Ont1cGRhdGU6ITAsa2V5OmQsdmFsdWVzOnt9fX0oaHYuZmluZEtleShJKXx8IiIsdGhpcy5fX2kxOG5LZXksSSx0aGlzLl9faTE4bik7dm9pZCAwIT09ai5rZXkmJih0aGlzLl9faTE4bktleT1qLmtleSsiIiksdm9pZCAwIT09ai52YWx1ZXMmJih0''@;'; put 'put ''aGlzLl9faTE4bj1wcyh7fSxqLnZhbHVlcykpLCEwPT09ai51cGRhdGUmJnRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMucmVxdWVzdFVwZGF0ZShnKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O3JldHVybiB2b2lkIDAhPT1nP2Z1bmN0aW9uKEMsSSxqKXtjb25zdCBjZT1PYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoSSxqLEMpO3JldHVybiBUMSh7dHlwZTpPYmplY3QsYXR0cmlidXRlOiJjZHMtaTE4biJ9KShjZSxqKX0oeSxkLGcpOmZ1bmN0aW9uKEMsSSl7Y29uc3Qgaj17a2luZDoibWV0aG9kIixwbGFjZW1lbnQ6InByb3RvdHlwZSIsa2V5Okkua2V5LGRlc2NyaXB0b3I6''@;'; put 'put ''Q307cmV0dXJuIFQxKHt0eXBlOk9iamVjdH0pKGopfSh5LGQpfX0oKV0sZHYucHJvdG90eXBlLCJpMThuIix2b2lkIDApLFYyKFt0JCh7dHlwZTpCb29sZWFuLHJlZmxlY3Q6ITAsYXR0cmlidXRlOiJjZHMtYnV0dG9uLWFjdGlvbiJ9KV0sZHYucHJvdG90eXBlLCJjZHNCdXR0b25BY3Rpb24i''@;'; put 'put ''LHZvaWQgMCk7Y2xhc3MgbCQgZXh0ZW5kcyBkdntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zaGFwZT0iY2xvc2UifWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmFyaWFMYWJlbD10aGlzLmFyaWFMYWJlbD90aGlzLmFy''@;'; put 'put ''aWFMYWJlbDp0aGlzLmkxOG4uY2xvc2V9fVYyKFtUMSh7dHlwZTpTdHJpbmd9KV0sbCQucHJvdG90eXBlLCJzaGFwZSIsdm9pZCAwKSxUSygiY2RzLWludGVybmFsLWNsb3NlLWJ1dHRvbiIsbCQpLGRzLmFkZEljb25zKEFYKSxkcy5hZGRBbGlhc2VzKFsidGltZXMiLFsiY2xvc2UiXV0pO2Nv''@;'; put 'put ''bnN0IHZhPVsiKiJdO2Z1bmN0aW9uIHd1ZShkLGcpe2lmKDEmZCYmKEwwKDApLFd0KDEpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgzKTtzdCgxKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5kYW5nZXIpfX1mdW5jdGlvbiBidWUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDE0KSxubigxLHd1''@;'; put 'put ''ZSwyLDEsIm5nLWNvbnRhaW5lciIsMCksaXQoKSksMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0LHY9VXQoKTtzdCgxKSx4dCgibmdJZiIsaC5zdGF0dXM9PT12LkFjY29yZGlvblN0YXR1cy5FcnJvcil9fWZ1bmN0aW9uIF91ZShkLGcpe2lmKDEmZCYmKEwwKDApLFd0KDEpLE8wKCkpLDIm''@;'; put 'put ''ZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5kYW5nZXIpfX1mdW5jdGlvbiBDdWUoZCxnKXtpZigxJmQmJihMMCgwKSxXdCgxKSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSksamkoaC5jb21tb25TdHJpbmdzLmtleXMuc3VjY2Vzcyl9fWZ1bmN0''@;'; put 'put ''aW9uIGt1ZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMTUpLFpuKCJAdG9nZ2xlLmRvbmUiLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCkuJGltcGxpY2l0O3JldHVybiBidChVdCgpLmNvbGxhcHNlUGFuZWxPbkFuaW1hdGlvbkRvbmUoeSkpfSksdHQoMSwiZGl2''@;'; put 'put ''IiwxNiksVmkoMiwyKSxpdCgpKCl9MiZkJiZ4dCgiQHRvZ2dsZSIsdm9pZCAwKX1mdW5jdGlvbiBTdWUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSxubigxLGJ1ZSwyLDEsImRpdiIsMSksdHQoMiwiZGl2IiwyKSgzLCJkaXYiLDMpKDQsImJ1dHRvbiIsNCw1KSxabigiY2xpY2si''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS50b2dnbGVQYW5lbCgpKX0pLFplKDYsImFzeW5jIiksdHQoNywic3BhbiIsNiksbm4oOCxfdWUsMiwxLCJuZy1jb250YWluZXIiLDApLG5uKDksQ3VlLDIsMSwibmctY29udGFpbmVyIiwwKSxpdCgpLHR0KDEwLCJzcGFuIiw3KSxicigx''@;'; put 'put ''MSwiY2RzLWljb24iLDgpKDEyLCJzcGFuIiw5KSgxMywiY2RzLWljb24iLDEwKSgxNCwiY2RzLWljb24iLDExKSxpdCgpLFZpKDE1KSxWaSgxNiwxKSxpdCgpKCksdHQoMTcsImRpdiIsMTIpLG5uKDE4LGt1ZSwzLDEsImRpdiIsMTMpLGl0KCkoKSxPMCgpfWlmKDImZCl7Y29uc3QgaD1nLiRp''@;'; put 'put ''bXBsaWNpdCx2PVV0KCk7bGV0IHk7c3QoMSkseHQoIm5nSWYiLGguc3RhdHVzIT09di5BY2NvcmRpb25TdGF0dXMuSW5hY3RpdmUpLHN0KDEpLHh0KCJuZ0NsYXNzIix2LmdldFBhbmVsU3RhdGVDbGFzc2VzKGgpKSxzdCgyKSxIaSgiY2xyLWFjY29yZGlvbi1oZWFkZXItaGFzLWRlc2NyaXB0''@;'; put 'put ''aW9uIiwobnVsbD09KHk9U3QoNiwxNix2LmFjY29yZGlvbkRlc2NyaXB0aW9uLmNoYW5nZXMpKT9udWxsOnkubGVuZ3RoKXx8di5hY2NvcmRpb25EZXNjcmlwdGlvbi5sZW5ndGgpLHh0KCJpZCIsdi5nZXRBY2NvcmRpb25IZWFkZXJJZChoLnRlbXBsYXRlSWQpKSgiZGlzYWJsZWQiLHYuaXNB''@;'; put 'put ''Y2NvcmRpb24mJmguZGlzYWJsZWQpLEdpKCJhcmlhLWRpc2FibGVkIiwhdi5pc0FjY29yZGlvbiYmaC5kaXNhYmxlZCkoImFyaWEtY29udHJvbHMiLHYuZ2V0QWNjb3JkaW9uQ29udGVudElkKGgudGVtcGxhdGVJZCkpKCJhcmlhLWV4cGFuZGVkIixoLm9wZW4pLHN0KDQpLHh0KCJuZ0lmIixo''@;'; put 'put ''LnN0YXR1cz09PXYuQWNjb3JkaW9uU3RhdHVzLkVycm9yKSxzdCgxKSx4dCgibmdJZiIsaC5zdGF0dXM9PT12LkFjY29yZGlvblN0YXR1cy5Db21wbGV0ZSksc3QoOCkseHQoIkBza2lwSW5pdGlhbFJlbmRlciIsdm9pZCAwKSgiaWQiLHYuZ2V0QWNjb3JkaW9uQ29udGVudElkKGgudGVtcGxh''@;'; put 'put ''dGVJZCkpLEdpKCJhcmlhLWhpZGRlbiIsIWgub3BlbikoImFyaWEtbGFiZWxsZWRieSIsdi5nZXRBY2NvcmRpb25IZWFkZXJJZChoLnRlbXBsYXRlSWQpKSxzdCgxKSx4dCgibmdJZiIsaC5vcGVuKX19Y29uc3QgcyQ9W1tbImNsci1hY2NvcmRpb24tdGl0bGUiXSxbImNsci1zdGVwLXRpdGxl''@;'; put 'put ''Il1dLFtbImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24iXSxbImNsci1zdGVwLWRlc2NyaXB0aW9uIl1dLCIqIl0sdSQ9WyJjbHItYWNjb3JkaW9uLXRpdGxlLCBjbHItc3RlcC10aXRsZSIsImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24sIGNsci1zdGVwLWRlc2NyaXB0aW9uIiwiKiJdLFNM''@;'; put 'put ''PVsiY2xyTG9hZGluZyIsIiJdO2Z1bmN0aW9uIHpvKGQsZyl7MSZkJiYodHQoMCwic3BhbiIpLGJyKDEsInNwYW4iLDIpLGl0KCkpLDImZCYmKHN0KDEpLHh0KCJAc3Bpbm5lciIsdm9pZCAwKSl9ZnVuY3Rpb24gUnVlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwic3BhbiIpKDEs''@;'; put 'put ''InNwYW4iLDMpLFpuKCJAdmFsaWRhdGVkLmRvbmUiLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCk7cmV0dXJuIGJ0KHkubG9hZGluZ1N0YXRlQ2hhbmdlKHkuYnV0dG9uU3RhdGUuREVGQVVMVCkpfSksaXQoKSgpfTImZCYmKHN0KDEpLHh0KCJAdmFsaWRhdGVkIix2b2lkIDApKX1mdW5j''@;'; put 'put ''dGlvbiBCdWUoZCxnKXsxJmQmJih0dCgwLCJzcGFuIiksVmkoMSksaXQoKSksMiZkJiZ4dCgiQGRlZmF1bHRCdXR0b24iLHZvaWQgMCl9ZnVuY3Rpb24gZCQoZCxnKXsxJmQmJmJyKDAsImxhYmVsIil9Y29uc3QgcCQ9W1tbIiIsImNsckNoZWNrYm94IiwiIl0sWyIiLCJjbHJUb2dnbGUiLCIi''@;'; put 'put ''XV0sW1sibGFiZWwiXV1dLGckPVsiW2NsckNoZWNrYm94XSxbY2xyVG9nZ2xlXSIsImxhYmVsIl07ZnVuY3Rpb24gbSQoZCxnKXsxJmQmJmJyKDAsImxhYmVsIil9ZnVuY3Rpb24gUHVlKGQsZyl7MSZkJiZWaSgwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gRnVlKGQsZyl7''@;'; put 'put ''MSZkJiZicigwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gSHVlKGQsZyl7MSZkJiZicigwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gY2coZCxnKXsxJmQmJlZpKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gUWooZCxnKXsxJmQmJlZpKDAsNCxbIipuZ0lmIiwic2hvd1Zh''@;'; put 'put ''bGlkIl0pfWNvbnN0IE51ZT1bW1sibGFiZWwiXV0sW1siY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sdiQ9WyJsYWJl''@;'; put 'put ''bCIsImNsci1jaGVja2JveC13cmFwcGVyLGNsci10b2dnbGUtd3JhcHBlciIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdLEEkPVsiY2xyS2V5Rm9jdXMiLCIiXTtmdW5jdGlvbiBwdihkLGcpezEmZCYmYnIoMCwibGFiZWwi''@;'; put 'put ''KX1mdW5jdGlvbiBUTChkLGcpezEmZCYmYnIoMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIEEwKGQsZyl7MSZkJiZicigwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gZHAoZCxnKXsxJmQmJlZpKDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiBiJChkLGcpezEmZCYmVmkoMCwz''@;'; put 'put ''LFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiBmZyhkLGcpezEmZCYmVmkoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgXyQ9W1tbImxhYmVsIl1dLFtbIiIsImNscklucHV0IiwiIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJv''@;'; put 'put ''ciJdXSxbWyJjbHItY29udHJvbC1zdWNjZXNzIl1dXSxYaj1bImxhYmVsIiwiW2NscklucHV0XSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIFl1ZShkLGcpe2lmKDEmZCYmKHR0KDAsInRoIiw0KSxXdCgx''@;'; put 'put ''KSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7R2koImFyaWEtbGFiZWwiLGguZGF5KSxzdCgxKSxVaSgiICIsaC5uYXJyb3csIiAiKX19ZnVuY3Rpb24gJDMoZCxnKXtpZigxJmQmJih0dCgwLCJ0ZCIsNyksYnIoMSwiY2xyLWRheSIsOCksaXQoKSksMiZkKXtjb25zdCBoPWcuJGlt''@;'; put 'put ''cGxpY2l0O3N0KDEpLHh0KCJjbHJEYXlWaWV3IixoKX19ZnVuY3Rpb24gVXVlKGQsZyl7aWYoMSZkJiYodHQoMCwidHIiLDUpLG5uKDEsJDMsMiwxLCJ0ZCIsNiksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLHh0KCJuZ0Zvck9mIixoKX19ZnVuY3Rpb24gUXVlKGQsZyl7''@;'; put 'put ''aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiwxKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgQz1hKGgpLmluZGV4O3JldHVybiBidChVdCgpLmNoYW5nZU1vbnRoKEMpKX0pLFd0KDEpLGl0KCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9Zy5pbmRleCx5PVV0''@;'; put 'put ''KCk7SGkoImlzLXNlbGVjdGVkIix2PT09eS5jYWxlbmRhck1vbnRoSW5kZXgpLEdpKCJ0YWJpbmRleCIseS5nZXRUYWJJbmRleCh2KSksc3QoMSksVWkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gQyQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0b24iLDcpLFpuKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0O3JldHVybiBidChVdCgpLmNoYW5nZVllYXIoQykpfSksV3QoMSksaXQoKX1pZigyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCgpO0hpKCJpcy1zZWxlY3RlZCIsaD09PXYuY2FsZW5kYXJZZWFyKSxHaSgidGFiaW5kZXgiLHYu''@;'; put 'put ''Z2V0VGFiSW5kZXgoaCkpLHN0KDEpLFVpKCIgIixoLCIgIil9fWZ1bmN0aW9uIEp1ZShkLGcpezEmZCYmYnIoMCwiY2xyLW1vbnRocGlja2VyIil9ZnVuY3Rpb24gYzgoZCxnKXsxJmQmJmJyKDAsImNsci15ZWFycGlja2VyIil9ZnVuY3Rpb24gQ3MoZCxnKXsxJmQmJmJyKDAsImNsci1kYXlw''@;'; put 'put ''aWNrZXIiKX1jb25zdCBYdWU9WyJhY3Rpb25CdXR0b24iXTtmdW5jdGlvbiBLdWUoZCxnKXsxJmQmJmJyKDAsImxhYmVsIil9ZnVuY3Rpb24gJHVlKGQsZyl7MSZkJiYodHQoMCwiYnV0dG9uIiw4LDkpLGJyKDIsImNkcy1pY29uIiwxMCksaXQoKSksMiZkJiZ4dCgiZGlzYWJsZWQiLFV0KCku''@;'; put 'put ''aXNJbnB1dERhdGVEaXNhYmxlZCl9ZnVuY3Rpb24gS2ooZCxnKXsxJmQmJmJyKDAsImNsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlciIsMTEpfWZ1bmN0aW9uICRqKGQsZyl7MSZkJiZicigwLCJjZHMtaWNvbiIsMTIpfWZ1bmN0aW9uIHF1ZShkLGcpezEmZCYmYnIoMCwiY2RzLWljb24iLDEz''@;'; put 'put ''KX1mdW5jdGlvbiBoZyhkLGcpezEmZCYmVmkoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIGVjZShkLGcpezEmZCYmVmkoMCwzLFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiBJTChkLGcpezEmZCYmVmkoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29u''@;'; put 'put ''c3QgREw9W1tbImxhYmVsIl1dLFtbIiIsImNsckRhdGUiLCIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLHFqPVsibGFiZWwiLCJbY2xyRGF0ZV0iLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHIt''@;'; put 'put ''Y29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiByY2UoZCxnKXsxJmQmJmJyKDAsImxhYmVsIil9Y29uc3QgayQ9W1tbIiIsImNsclJhZGlvIiwiIl1dLFtbImxhYmVsIl1dXSxlWj1bIltjbHJSYWRpb10iLCJsYWJlbCJdO2Z1bmN0aW9uIFMkKGQsZyl7MSZk''@;'; put 'put ''JiZicigwLCJsYWJlbCIpfWZ1bmN0aW9uIGljZShkLGcpezEmZCYmVmkoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIG9jZShkLGcpezEmZCYmYnIoMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIGd2KGQsZyl7MSZkJiZicigwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gdFoo''@;'; put 'put ''ZCxnKXsxJmQmJlZpKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gTSQoZCxnKXsxJmQmJlZpKDAsNCxbIipuZ0lmIiwic2hvd1ZhbGlkIl0pfWNvbnN0ICRoPVtbWyJsYWJlbCJdXSxbWyJjbHItcmFkaW8td3JhcHBlciJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0s''@;'; put 'put ''W1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sYWNlPVsibGFiZWwiLCJjbHItcmFkaW8td3JhcHBlciIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIEUkKGQsZyl7''@;'; put 'put ''MSZkJiZicigwLCJsYWJlbCIpfWZ1bmN0aW9uIGxjZShkLGcpezEmZCYmYnIoMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIGFvKGQsZyl7MSZkJiZicigwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gblooZCxnKXsxJmQmJlZpKDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiBJ''@;'; put 'put ''MShkLGcpezEmZCYmVmkoMCwzLFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiByWihkLGcpezEmZCYmVmkoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgT0w9W1tbImxhYmVsIl1dLFtbIiIsImNsclNlbGVjdCIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0s''@;'; put 'put ''W1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sUkw9WyJsYWJlbCIsIltjbHJTZWxlY3RdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gQkwoZCxnKXsxJmQmJmJy''@;'; put 'put ''KDAsImxhYmVsIil9ZnVuY3Rpb24geCQoZCxnKXsxJmQmJmJyKDAsImNkcy1pY29uIiw1KX1mdW5jdGlvbiBUJChkLGcpezEmZCYmYnIoMCwiY2RzLWljb24iLDYpfWZ1bmN0aW9uIEkkKGQsZyl7MSZkJiZWaSgwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gVDAoZCxnKXsx''@;'; put 'put ''JmQmJlZpKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gc2NlKGQsZyl7MSZkJiZWaSgwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCBQTD1bW1sibGFiZWwiXV0sW1siIiwiY2xyVGV4dGFyZWEiLCIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNs''@;'; put 'put ''ci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLGlaPVsibGFiZWwiLCJbY2xyVGV4dGFyZWFdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl0sdnY9WyJhbmNob3IiXTtmdW5jdGlvbiB1Y2Uo''@;'; put 'put ''ZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDQpKDEsImRpdiIsNSkoMiwiYnV0dG9uIiw2KSxicigzLCJjZHMtaWNvbiIsNyksaXQoKSgpLFZpKDQpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3h0KCJpZCIsaC5wb3BvdmVySWQpLEdpKCJhcmlhLWxhYmVsIixoLmNvbW1vblN0cmluZ3Mua2V5''@;'; put 'put ''cy5kYXRhZ3JpZEZpbHRlckRpYWxvZ0FyaWFMYWJlbCksc3QoMyksR2koInRpdGxlIixoLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSl9fWNvbnN0IG9aPVsiaW5wdXRfbG93Il0sbmE9WyJpbnB1dCJdLEQkPVsiY29sdW1uUG9ydGFsIl07ZnVuY3Rpb24gQXYoZCxnKXsxJmQmJlZpKDApfWNv''@;'; put 'put ''bnN0IGNjZT1bInJlc2l6ZVRyYWNrZXIiXSxMJD1bImNvbHVtbkhhbmRsZSJdO2Z1bmN0aW9uIHV3KGQsZyl7MSZkJiZoMSgwKX1mdW5jdGlvbiBmY2UoZCxnKXsxJmQmJmJyKDAsImNkcy1pY29uIiwxMCksMiZkJiZHaSgiZGlyZWN0aW9uIixVdCgyKS5zb3J0RGlyZWN0aW9uKX1mdW5jdGlv''@;'; put 'put ''biBhWihkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsNyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuc29ydCgpKX0pLG5uKDEsdXcsMSwwLCJuZy1jb250YWluZXIiLDgpLG5uKDIsZmNlLDEsMSwiY2RzLWljb24iLDkpLGl0KCl9aWYo''@;'; put 'put ''MiZkKXtjb25zdCBoPVV0KCksdj11YSg2KTtzdCgxKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsdiksc3QoMSkseHQoIm5nSWYiLGguc29ydERpcmVjdGlvbil9fWZ1bmN0aW9uIGxaKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDExKSxabigi''@;'; put 'put ''Y2xyRmlsdGVyVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkuZmlsdGVyVmFsdWU9eSl9KSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgpO3h0KCJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsaC5maWx0ZXJTdHJpbmdQbGFjZWhvbGRlclZhbHVlKSgiY2xyRGdTdHJp''@;'; put 'put ''bmdGaWx0ZXIiLGgucmVnaXN0ZXJlZCkoImNsckZpbHRlclZhbHVlIixoLmZpbHRlclZhbHVlKX19ZnVuY3Rpb24gRkwoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItZGctbnVtZXJpYy1maWx0ZXIiLDEyKSxabigiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKHkp''@;'; put 'put ''e3JldHVybiBhKGgpLGJ0KFV0KCkuZmlsdGVyVmFsdWU9eSl9KSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgpO3h0KCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsaC5maWx0ZXJNYXhQbGFjZWhvbGRlclZhbHVlKSgiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLGguZmlsdGVyTWluUGxhY2Vo''@;'; put 'put ''b2xkZXJWYWx1ZSkoImNsckRnTnVtZXJpY0ZpbHRlciIsaC5yZWdpc3RlcmVkKSgiY2xyRmlsdGVyVmFsdWUiLGguZmlsdGVyVmFsdWUpfX1mdW5jdGlvbiBzWihkLGcpezEmZCYmVmkoMCwxKX1mdW5jdGlvbiBoY2UoZCxnKXsxJmQmJmgxKDApfWZ1bmN0aW9uIE8kKGQsZyl7aWYoMSZkJiYo''@;'; put 'put ''dHQoMCwic3BhbiIsMTMpLG5uKDEsaGNlLDEsMCwibmctY29udGFpbmVyIiw4KSxpdCgpKSwyJmQpe1V0KCk7Y29uc3QgaD11YSg2KTtzdCgxKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsaCl9fWZ1bmN0aW9uIGRjZShkLGcpezEmZCYmYnIoMCwiY2xyLWRnLWNvbHVtbi1zZXBhcmF0b3IiKX1j''@;'; put 'put ''b25zdCBmOD1bW1siY2xyLWRnLWZpbHRlciJdLFsiY2xyLWRnLXN0cmluZy1maWx0ZXIiXSxbImNsci1kZy1udW1lcmljLWZpbHRlciJdXSwiKiJdLHBjZT1bImNsci1kZy1maWx0ZXIsIGNsci1kZy1zdHJpbmctZmlsdGVyLCBjbHItZGctbnVtZXJpYy1maWx0ZXIiLCIqIl07ZnVuY3Rpb24g''@;'; put 'put ''X3UoZCxnKXsxJmQmJmJyKDAsImRpdiIsNCl9ZnVuY3Rpb24gQ3UoZCxnKXsxJmQmJlZpKDAsMCxbIipuZ0lmIiwiZW1wdHlEYXRhZ3JpZCJdKX1mdW5jdGlvbiB1WihkLGcpe2lmKDEmZCYmKEwwKDApLHR0KDEsImJ1dHRvbiIsMSksYnIoMiwiY2RzLWljb24iLDIpLGl0KCksTzAoKSksMiZk''@;'; put 'put ''KXtjb25zdCBoPVV0KCk7c3QoMiksR2koInRpdGxlIixoLmNvbW1vblN0cmluZ3Mua2V5cy5pbmZvKX19Y29uc3QgZ2NlPVsiY2VsbFBvcnRhbCJdO2Z1bmN0aW9uIGNaKGQsZyl7MSZkJiZWaSgwKX1jb25zdCBtY2U9WyJyb3dQb3J0YWwiXTtmdW5jdGlvbiBSJChkLGcpezEmZCYmVmkoMCl9''@;'; put 'put ''Y29uc3QgdmNlPVsiZGV0YWlsQnV0dG9uIl0sZ1M9WyJzdGlja3lDZWxscyJdLEFjZT1bInNjcm9sbGFibGVDZWxscyJdLCRhPVsiY2FsY3VsYXRlZENlbGxzIl07ZnVuY3Rpb24geWNlKGQsZyl7fWZ1bmN0aW9uIHdjZShkLGcpe2lmKDEmZCYmKHR0KDAsImNsci1leHBhbmRhYmxlLWFuaW1h''@;'; put 'put ''dGlvbiIsNyksbm4oMSx5Y2UsMCwwLCJuZy10ZW1wbGF0ZSIsOCksaXQoKSksMiZkKXtjb25zdCBoPVV0KDIpLHY9dWEoNik7eHQoImNsckV4cGFuZFRyaWdnZXIiLGguZXhwYW5kQW5pbWF0aW9uVHJpZ2dlciksc3QoMSkseHQoIm5nVGVtcGxhdGVPdXRsZXQiLHYpfX1mdW5jdGlvbiBiY2Uo''@;'; put 'put ''ZCxnKXt9ZnVuY3Rpb24gX2NlKGQsZyl7MSZkJiZubigwLGJjZSwwLDAsIm5nLXRlbXBsYXRlIiw4KSwyJmQmJihVdCgyKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsdWEoNikpKX1mdW5jdGlvbiBCJChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImxhYmVsIiw2KSxabigibW91c2Vk''@;'; put 'put ''b3duIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLmNsZWFyUmFuZ2VzKHkpKX0pLG5uKDEsd2NlLDIsMiwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiwxKSxubigyLF9jZSwxLDEsbnVsbCwyKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lmIixoLmV4''@;'; put 'put ''cGFuZC5leHBhbmRhYmxlKSxzdCgxKSx4dCgibmdJZiIsIWguZXhwYW5kLmV4cGFuZGFibGUpfX1mdW5jdGlvbiBDY2UoZCxnKXt9ZnVuY3Rpb24gUCQoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDcpLG5uKDEsQ2NlLDAsMCwibmctdGVtcGxhdGUiLDgp''@;'; put 'put ''LGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpLHY9dWEoNik7eHQoImNsckV4cGFuZFRyaWdnZXIiLGguZXhwYW5kQW5pbWF0aW9uVHJpZ2dlciksc3QoMSkseHQoIm5nVGVtcGxhdGVPdXRsZXQiLHYpfX1mdW5jdGlvbiBrY2UoZCxnKXt9ZnVuY3Rpb24gU2NlKGQsZyl7MSZkJiZubigwLGtjZSww''@;'; put 'put ''LDAsIm5nLXRlbXBsYXRlIiw4KSwyJmQmJihVdCgpLHh0KCJuZ1RlbXBsYXRlT3V0bGV0Iix1YSg2KSkpfWZ1bmN0aW9uIEYkKGQsZyl7MSZkJiZWaSgwKX1jb25zdCBIJD1mdW5jdGlvbihkKXtyZXR1cm57ImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiOmR9fTtmdW5jdGlvbiBxaChkLGcp''@;'; put 'put ''e2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMTkpKDEsImRpdiIsMjApKDIsImlucHV0IiwyMSksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KDIpLnRvZ2dsZSh5KSl9KSxpdCgpLHR0KDMsImxhYmVsIiwyMiksWm4oImNsaWNrIixmdW5j''@;'; put 'put ''dGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgyKS5jbGVhclJhbmdlcyh5KSl9KSx0dCg0LCJzcGFuIiwyMyksV3QoNSksaXQoKSgpKCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7eHQoIm5nQ2xhc3MiLGpoKDgsSCQsIWguY2xyRGdTZWxlY3RhYmxlKSksc3QoMikseHQoIm5nTW9kZWwiLGgu''@;'; put 'put ''c2VsZWN0ZWQpKCJpZCIsaC5jaGVja2JveElkKSxHaSgiZGlzYWJsZWQiLCFoLmNsckRnU2VsZWN0YWJsZXx8bnVsbCkoImFyaWEtZGlzYWJsZWQiLCFoLmNsckRnU2VsZWN0YWJsZXx8bnVsbCkoImFyaWEtbGFiZWwiLGguY2xyRGdSb3dBcmlhTGFiZWwpLHN0KDEpLHh0KCJmb3IiLGguY2hl''@;'; put 'put ''Y2tib3hJZCksc3QoMiksamkoaC5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0KX19ZnVuY3Rpb24gTWNlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2IiwxOSkoMSwiaW5wdXQiLDI0KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQo''@;'; put 'put ''Mikuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGU9eSl9KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KDIpO3h0KCJuZ0NsYXNzIixqaCg5LEgkLCFoLmNsckRnU2VsZWN0YWJsZSkpLHN0KDEpLHh0KCJpZCIsaC5yYWRpb0lkKSgibmFtZSIsaC5zZWxlY3Rpb24uaWQrIi1yYWRpbyIpKCJ2YWx1''@;'; put 'put ''ZSIsaC5pdGVtKSgibmdNb2RlbCIsaC5zZWxlY3Rpb24uY3VycmVudFNpbmdsZSkoImNoZWNrZWQiLGguc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGU9PT1oLml0ZW0pLEdpKCJkaXNhYmxlZCIsIWguY2xyRGdTZWxlY3RhYmxlfHxudWxsKSgiYXJpYS1kaXNhYmxlZCIsIWguY2xyRGdTZWxlY3Rh''@;'; put 'put ''YmxlfHxudWxsKSgiYXJpYS1sYWJlbCIsaC5jbHJEZ1Jvd0FyaWFMYWJlbCl9fWZ1bmN0aW9uIE4kKGQsZyl7MSZkJiYodHQoMCwiZGl2IiwyNSksVmkoMSwyKSxpdCgpKX1mdW5jdGlvbiBlMyhkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMjkpLFpuKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCg0KS50b2dnbGVFeHBhbmQoKSl9KSxicigxLCJjZHMtaWNvbiIsMzApLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KDQpO0dpKCJhcmlhLWV4cGFuZGVkIixoLmV4cGFuZC5leHBhbmRlZCkoImFyaWEtbGFiZWwiLGguZXhwYW5kLmV4cGFuZGVk''@;'; put 'put ''P2guY2xyRGdEZXRhaWxDbG9zZUxhYmVsOmguY2xyRGdEZXRhaWxPcGVuTGFiZWwpKCJhcmlhLWNvbnRyb2xzIixoLmV4cGFuZGFibGVJZCksc3QoMSksR2koImRpcmVjdGlvbiIsaC5leHBhbmQuZXhwYW5kZWQ/ImRvd24iOiJyaWdodCIpKCJ0aXRsZSIsaC5leHBhbmQuZXhwYW5kZWQ/aC5j''@;'; put 'put ''b21tb25TdHJpbmdzLmtleXMuY29sbGFwc2U6aC5jb21tb25TdHJpbmdzLmtleXMuZXhwYW5kKX19ZnVuY3Rpb24gcHAoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItc3Bpbm5lciIsMzEpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCg0KTtzdCgxKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5''@;'; put 'put ''cy5sb2FkaW5nKX19ZnVuY3Rpb24gdDMoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLGUzLDIsNSwiYnV0dG9uIiwyNyksbm4oMixwcCwyLDEsImNsci1zcGlubmVyIiwyOCksTzAoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLHh0KCJuZ0lmIiwhaC5leHBhbmQubG9hZGluZyksc3QoMSks''@;'; put 'put ''eHQoIm5nSWYiLGguZXhwYW5kLmxvYWRpbmcpfX1mdW5jdGlvbiBFY2UoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDI2KSxubigxLHQzLDMsMiwibmctY29udGFpbmVyIiwyKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nSWYiLGguZXhwYW5kLmV4cGFuZGFibGUpfX1m''@;'; put 'put ''dW5jdGlvbiBjdyhkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMzIpKDEsImJ1dHRvbiIsMzMsMzQpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9dWEoMiksQz1VdCgyKTtyZXR1cm4gYnQoQy5kZXRhaWxTZXJ2aWNlLnRvZ2dsZShDLml0ZW0seSkpfSks''@;'; put 'put ''YnIoMywiY2RzLWljb24iLDM1KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KDIpO3N0KDEpLEhpKCJpcy1vcGVuIixoLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGguaXRlbSkpLEdpKCJhcmlhLWxhYmVsIixoLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGguaXRlbSk/aC5jbHJEZ0RldGFp''@;'; put 'put ''bENsb3NlTGFiZWw6aC5jbHJEZ0RldGFpbE9wZW5MYWJlbCkoImFyaWEtZXhwYW5kZWQiLGguZGV0YWlsU2VydmljZS5pc09wZW4pKCJhcmlhLWNvbnRyb2xzIixoLmRldGFpbFNlcnZpY2UuaWQpLHN0KDIpLEdpKCJkaXJlY3Rpb24iLGguZGV0YWlsU2VydmljZS5pc1Jvd09wZW4oaC5pdGVt''@;'; put 'put ''KT8ibGVmdCI6InJpZ2h0IikoInRpdGxlIixoLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGguaXRlbSk/aC5jb21tb25TdHJpbmdzLmtleXMuY2xvc2U6aC5jb21tb25TdHJpbmdzLmtleXMub3Blbil9fWZ1bmN0aW9uIHhjZShkLGcpe31mdW5jdGlvbiBmdyhkLGcpezEmZCYmbm4oMCx4Y2Us''@;'; put 'put ''MCwwLCJuZy10ZW1wbGF0ZSIsOCksMiZkJiYoVXQoMikseHQoIm5nVGVtcGxhdGVPdXRsZXQiLHVhKDQpKSl9ZnVuY3Rpb24gRDEoZCxnKXt9ZnVuY3Rpb24gVGNlKGQsZyl7MSZkJiZubigwLEQxLDAsMCwibmctdGVtcGxhdGUiLDgpLDImZCYmKFV0KDIpLHh0KCJuZ1RlbXBsYXRlT3V0bGV0''@;'; put 'put ''Iix1YSg0KSkpfWNvbnN0IGZaPWZ1bmN0aW9uKGQpe3JldHVybnsiaXMtcmVwbGFjZWQiOmR9fTtmdW5jdGlvbiBJY2UoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDkpKDEsImRpdiIsMTApLEwwKDIsbnVsbCwxMSksbm4oNCxxaCw2LDEwLCJkaXYiLDEyKSxubig1LE1jZSwyLDExLCJkaXYi''@;'; put 'put ''LDEyKSxubig2LE4kLDIsMCwiZGl2IiwxMyksbm4oNyxFY2UsMiwxLCJkaXYiLDE0KSxubig4LGN3LDQsNywiZGl2IiwxNSksTzAoKSxpdCgpLHR0KDksImRpdiIsMTYpKDEwLCJkaXYiLDE3KSxWaSgxMSwxKSxoMSgxMixudWxsLDE4KSxpdCgpLG5uKDE0LGZ3LDEsMSxudWxsLDIpLG5uKDE1''@;'; put 'put ''LFRjZSwxLDEsbnVsbCwyKSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgpO0hpKCJkYXRhZ3JpZC1yb3ctZGV0YWlsLW9wZW4iLGguZGV0YWlsU2VydmljZS5pc1Jvd09wZW4oaC5pdGVtKSkseHQoImlkIixoLmlkKSxzdCg0KSx4dCgibmdJZiIsaC5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09''@;'; put 'put ''PWguU0VMRUNUSU9OX1RZUEUuTXVsdGkpLHN0KDEpLHh0KCJuZ0lmIixoLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09aC5TRUxFQ1RJT05fVFlQRS5TaW5nbGUpLHN0KDEpLHh0KCJuZ0lmIixoLnJvd0FjdGlvblNlcnZpY2UuaGFzQWN0aW9uYWJsZVJvdyksc3QoMSkseHQoIm5nSWYiLGgu''@;'; put 'put ''Z2xvYmFsRXhwYW5kYWJsZS5oYXNFeHBhbmRhYmxlUm93KSxzdCgxKSx4dCgibmdJZiIsaC5kZXRhaWxTZXJ2aWNlLmVuYWJsZWQpLHN0KDEpLHh0KCJuZ0NsYXNzIixqaCgxMSxmWixoLnJlcGxhY2VkJiZoLmV4cGFuZGVkKSksc3QoNSkseHQoIm5nSWYiLGgucmVwbGFjZWQmJiFoLmV4cGFu''@;'; put 'put ''ZC5sb2FkaW5nKSxzdCgxKSx4dCgibmdJZiIsIWgucmVwbGFjZWQmJiFoLmV4cGFuZC5sb2FkaW5nKX19Y29uc3QgJGM9W1tbImNsci1kZy1yb3ctZGV0YWlsIl1dLFtbImNsci1kZy1jZWxsIl1dLFtbImNsci1kZy1hY3Rpb24tb3ZlcmZsb3ciXV1dLFYkPVsiY2xyLWRnLXJvdy1kZXRhaWwi''@;'; put 'put ''LCJjbHItZGctY2VsbCIsImNsci1kZy1hY3Rpb24tb3ZlcmZsb3ciXSxkZz1bInNjcm9sbGFibGVDb2x1bW5zIl0sJDE9WyJkYXRhZ3JpZFRhYmxlIl0sRGNlPVsicHJvamVjdGVkRGlzcGxheUNvbHVtbnMiXSxMY2U9WyJwcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMiXSxoWj1bImRpc3Bs''@;'; put 'put ''YXllZFJvd3MiXSxPY2U9WyJjYWxjdWxhdGlvblJvd3MiXTtmdW5jdGlvbiBqJChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMjQpLFpuKCJrZXlkb3duLnNwYWNlIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoKTtyZXR1cm4gQy5hbGxTZWxlY3RlZD0hQy5hbGxT''@;'; put 'put ''ZWxlY3RlZCxidCh5LnByZXZlbnREZWZhdWx0KCkpfSksdHQoMSwiZGl2IiwyNSkoMiwiaW5wdXQiLDI2KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5hbGxTZWxlY3RlZD15KX0pLGl0KCksdHQoMywibGFiZWwiLDI3KSg0LCJzcGFuIiwyOCks''@;'; put 'put ''V3QoNSksaXQoKSgpKCksYnIoNiwiZGl2IiwyOSksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoKTtzdCgyKSx4dCgiaWQiLGguc2VsZWN0QWxsSWQpKCJuZ01vZGVsIixoLmFsbFNlbGVjdGVkKSxHaSgiYXJpYS1sYWJlbCIsaC5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0QWxsKSxzdCgxKSx4''@;'; put 'put ''dCgiZm9yIixoLnNlbGVjdEFsbElkKSxzdCgyKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RBbGwpfX1mdW5jdGlvbiBSY2UoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDMwKSxicigxLCJkaXYiLDI5KSxpdCgpKSwyJmQmJkdpKCJhcmlhLWxhYmVsIixVdCgpLmNsckRnU2luZ2xlU2Vs''@;'; put 'put ''ZWN0aW9uQXJpYUxhYmVsKX1mdW5jdGlvbiBhMShkLGcpezEmZCYmKHR0KDAsImRpdiIsMzEpLGJyKDEsImRpdiIsMjkpLGl0KCkpLDImZCYmR2koImFyaWEtbGFiZWwiLFV0KCkuY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsKX1mdW5jdGlvbiB5dihkLGcpezEmZCYmKHR0KDAsImRp''@;'; put 'put ''diIsMzIpLGJyKDEsImRpdiIsMjkpLGl0KCkpLDImZCYmR2koImFyaWEtbGFiZWwiLFV0KCkuY2xyRGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbCl9ZnVuY3Rpb24gQmNlKGQsZyl7MSZkJiZicigwLCJjbHItZGctcGxhY2Vob2xkZXIiKX1mdW5jdGlvbiBITChkLGcpezEmZCYmKHR0KDAsImRp''@;'; put 'put ''diIsMzMpKDEsImNsci1zcGlubmVyIiwzNCksV3QoMiwiTG9hZGluZyIpLGl0KCkoKSl9Y29uc3QgUGNlPVtbWyJjbHItZGctYWN0aW9uLWJhciJdXSxbWyJjbHItZGctcGxhY2Vob2xkZXIiXV0sW1siY2xyLWRnLWZvb3RlciJdXSxbWyIiLCJjbHJJZkRldGFpbCIsIiJdLFsiY2xyLWRnLWRl''@;'; put 'put ''dGFpbCJdXV0sWiQ9WyJjbHItZGctYWN0aW9uLWJhciIsImNsci1kZy1wbGFjZWhvbGRlciIsImNsci1kZy1mb290ZXIiLCJbY2xySWZEZXRhaWxdLGNsci1kZy1kZXRhaWwiXSxtbD1bImFsbFNlbGVjdGVkIl07ZnVuY3Rpb24gR2EoZCxnKXtpZigxJmQmJihMMCgwKSx0dCgxLCJoMiIpLFd0''@;'; put 'put ''KDIpLGl0KCksTzAoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDIpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLnNob3dDb2x1bW5zKX19ZnVuY3Rpb24gRGYoZCxnKXt9ZnVuY3Rpb24gaGgoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJsaSIpKDEsImNsci1jaGVja2JveC13cmFw''@;'; put 'put ''cGVyIikoMiwiaW5wdXQiLDE1KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7Y29uc3QgST1hKGgpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoMikudG9nZ2xlQ29sdW1uU3RhdGUoSSwheSkpfSksaXQoKSx0dCgzLCJsYWJlbCIpLG5uKDQsRGYsMCwwLCJuZy10ZW1wbGF0ZSIsMTYp''@;'; put 'put ''LGl0KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KDIpO3N0KDIpLHh0KCJkaXNhYmxlZCIsdi5oYXNPbmx5T25lVmlzaWJsZUNvbHVtbiYmIWguaGlkZGVuKSgibmdNb2RlbCIsIWguaGlkZGVuKSxzdCgyKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsaC50aXRsZVRlbXBs''@;'; put 'put ''YXRlUmVmKX19ZnVuY3Rpb24gTkwoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24iLDE3KSxabigiY2xyQWxsU2VsZWN0ZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMikuYWxsQ29sdW1uc1NlbGVjdGVkKCkpfSksV3Qo''@;'; put 'put ''MSksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSksVWkoIiAiLGguY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdEFsbCwiICIpfX1mdW5jdGlvbiB6JChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsNCkoMSwiZGl2Iiw1KSgyLCJkaXYiLDYsNyksV3QoNCksaXQoKSxubig1LEdhLDMs''@;'; put 'put ''MSwibmctY29udGFpbmVyIiw4KSxWaSg2KSx0dCg3LCJidXR0b24iLDkpLGJyKDgsImNkcy1pY29uIiwxMCksdHQoOSwic3BhbiIsMiksV3QoMTApLGl0KCkoKSgpLHR0KDExLCJ1bCIsMTEpLG5uKDEyLGhoLDUsMywibGkiLDEyKSxpdCgpLHR0KDEzLCJkaXYiLDEzKSxWaSgxNCwxKSxubigx''@;'; put 'put ''NSxOTCwyLDEsImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiIsMTQpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KCk7eHQoImlkIixoLnBvcG92ZXJJZCksR2koImFyaWEtbGFiZWwiLGguY29tbW9uU3RyaW5ncy5rZXlzLnNob3dDb2x1bW5zTWVudURlc2NyaXB0aW9uKSxzdCg0KSxqaSho''@;'; put 'put ''LmNvbW1vblN0cmluZ3Mua2V5cy5hbGxDb2x1bW5zU2VsZWN0ZWQpLHN0KDEpLHh0KCJuZ0lmIiwhaC5jdXN0b21Ub2dnbGVUaXRsZSksc3QoMiksR2koImFyaWEtbGFiZWwiLGguY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSxzdCgxKSxHaSgidGl0bGUiLGguY29tbW9uU3RyaW5ncy5rZXlz''@;'; put 'put ''LmNsb3NlKSxzdCgyKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSksc3QoMikseHQoIm5nRm9yT2YiLGguaGlkZWFibGVDb2x1bW5TdGF0ZXMpKCJuZ0ZvclRyYWNrQnkiLGgudHJhY2tCeUZuKSxzdCgzKSx4dCgibmdJZiIsIWguY3VzdG9tVG9nZ2xlQnV0dG9uKX19Y29uc3QgVkw9''@;'; put 'put ''W1tbImNsci1kZy1jb2x1bW4tdG9nZ2xlLXRpdGxlIl1dLFtbImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiJdXV0sakw9WyJjbHItZGctY29sdW1uLXRvZ2dsZS10aXRsZSIsImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiJdO2Z1bmN0aW9uIFpMKGQsZyl7aWYoMSZkJiYoTDAoMCks''@;'; put 'put ''dHQoMSwiZGl2IiwxKSgyLCJjbHItY2hlY2tib3gtd3JhcHBlciIsMiksYnIoMywiaW5wdXQiLDMpLHR0KDQsImxhYmVsIiksV3QoNSksaXQoKSx0dCg2LCJzcGFuIiw0KSxXdCg3KSxpdCgpKCkoKSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCg1KSxqaShoLnNlbGVjdGlvbi5jdXJyZW50''@;'; put 'put ''Lmxlbmd0aCksc3QoMiksamkoaC5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0ZWRSb3dzKX19ZnVuY3Rpb24gcFooZCxnKXsxJmQmJmJyKDAsImNsci1kZy1jb2x1bW4tdG9nZ2xlIil9ZnVuY3Rpb24gcGcoZCxnKXtpZigxJmQmJihMMCgwKSxWaSgxLDEpLG5uKDIscFosMSwwLCJjbHItZGct''@;'; put 'put ''Y29sdW1uLXRvZ2dsZSIsMCksdHQoMywiZGl2Iiw1KSxWaSg0LDIpLGl0KCksTzAoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMikseHQoIm5nSWYiLGguaGFzSGlkZWFibGVDb2x1bW5zJiYhaC50b2dnbGUpfX1jb25zdCBnWj1bW1siY2xyLWRnLXBhZ2luYXRpb24iXV0sW1siY2xyLWRnLWNv''@;'; put 'put ''bHVtbi10b2dnbGUiXV0sIioiXSx6TD1bImNsci1kZy1wYWdpbmF0aW9uIiwiY2xyLWRnLWNvbHVtbi10b2dnbGUiLCIqIl07ZnVuY3Rpb24gRyQoZCxnKXtpZigxJmQmJih0dCgwLCJvcHRpb24iLDMpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt4dCgibmdWYWx1ZSIs''@;'; put 'put ''aCksc3QoMSksamkoaCl9fWNvbnN0IFckPVsiY3VycmVudFBhZ2VJbnB1dCJdO2Z1bmN0aW9uIEZjZShkLGcpezEmZCYmKHR0KDAsImRpdiIsNCksVmkoMSwxKSxpdCgpKX1mdW5jdGlvbiBIY2UoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJpbnB1dCIsMTcsMTgpLFpuKCJrZXlk''@;'; put 'put ''b3duLmVudGVyIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgzKS51cGRhdGVDdXJyZW50UGFnZSh5KSl9KSgiYmx1ciIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMykudXBkYXRlQ3VycmVudFBhZ2UoeSkpfSksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoMyk7eHQoInNp''@;'; put 'put ''emUiLGgucGFnZS5sYXN0LnRvU3RyaW5nKCkubGVuZ3RoKSgidmFsdWUiLGgucGFnZS5jdXJyZW50KSxHaSgiYXJpYS1sYWJlbCIsaC5jb21tb25TdHJpbmdzLmtleXMuY3VycmVudFBhZ2UpfX1mdW5jdGlvbiBZJChkLGcpe2lmKDEmZCYmKHR0KDAsInNwYW4iKSxXdCgxKSxpdCgpKSwyJmQp''@;'; put 'put ''e2NvbnN0IGg9VXQoMyk7c3QoMSksamkoaC5wYWdlLmN1cnJlbnQpfX1mdW5jdGlvbiBOY2UoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDUpKDEsImJ1dHRvbiIsNiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLnBhZ2UuY3VycmVudD0x''@;'; put 'put ''KX0pLHR0KDIsInNwYW4iLDcpLFd0KDMpLGl0KCksYnIoNCwiY2RzLWljb24iLDgpLGl0KCksdHQoNSwiYnV0dG9uIiw5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KDIpO3JldHVybiBidCh5LnBhZ2UuY3VycmVudD15LnBhZ2UuY3VycmVudC0xKX0pLHR0KDYsInNw''@;'; put 'put ''YW4iLDcpLFd0KDcpLGl0KCksYnIoOCwiY2RzLWljb24iLDEwKSxpdCgpLG5uKDksSGNlLDIsMywiaW5wdXQiLDExKSxubigxMCxZJCwyLDEsIm5nLXRlbXBsYXRlIixudWxsLDEyLF9sKSxXdCgxMiwiIFx4YTAvXHhhMCIpLHR0KDEzLCJzcGFuIiksV3QoMTQpLGl0KCksdHQoMTUsImJ1dHRv''@;'; put 'put ''biIsMTMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIGJ0KHkucGFnZS5jdXJyZW50PXkucGFnZS5jdXJyZW50KzEpfSksdHQoMTYsInNwYW4iLDcpLFd0KDE3KSxpdCgpLGJyKDE4LCJjZHMtaWNvbiIsMTQpLGl0KCksdHQoMTksImJ1dHRvbiIsMTUp''@;'; put 'put ''LFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIGJ0KHkucGFnZS5jdXJyZW50PXkucGFnZS5sYXN0KX0pLHR0KDIwLCJzcGFuIiw3KSxXdCgyMSksaXQoKSxicigyMiwiY2RzLWljb24iLDE2KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPXVhKDExKSx2PVV0''@;'; put 'put ''KDIpO3N0KDEpLHh0KCJkaXNhYmxlZCIsdi5wYWdlLmN1cnJlbnQ8PTEpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5maXJzdFBhZ2UpLHN0KDIpLGppKHYuY29tbW9uU3RyaW5ncy5rZXlzLmZpcnN0UGFnZSksc3QoMikseHQoImRpc2FibGVkIix2LnBhZ2UuY3VycmVu''@;'; put 'put ''dDw9MSksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzUGFnZSksc3QoMiksamkodi5jb21tb25TdHJpbmdzLmtleXMucHJldmlvdXNQYWdlKSxzdCgyKSx4dCgibmdJZiIsIXYuZGlzYWJsZUN1cnJlbnRQYWdlSW5wdXQpKCJuZ0lmRWxzZSIsaCksc3QoNCks''@;'; put 'put ''R2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLnRvdGFsUGFnZXMpLHN0KDEpLGppKHYucGFnZS5sYXN0KSxzdCgxKSx4dCgiZGlzYWJsZWQiLHYucGFnZS5jdXJyZW50Pj12LnBhZ2UubGFzdCksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLm5leHRQYWdl''@;'; put 'put ''KSxzdCgyKSxqaSh2LmNvbW1vblN0cmluZ3Mua2V5cy5uZXh0UGFnZSksc3QoMikseHQoImRpc2FibGVkIix2LnBhZ2UuY3VycmVudD49di5wYWdlLmxhc3QpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5sYXN0UGFnZSksc3QoMiksamkodi5jb21tb25TdHJpbmdzLmtl''@;'; put 'put ''eXMubGFzdFBhZ2UpfX1mdW5jdGlvbiBWY2UoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLEZjZSwyLDAsImRpdiIsMSksdHQoMiwiZGl2IiwyKSxWaSgzKSxpdCgpLG5uKDQsTmNlLDIzLDE2LCJkaXYiLDMpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lmIixoLl9wYWdl''@;'; put 'put ''U2l6ZUNvbXBvbmVudCksc3QoMykseHQoIm5nSWYiLGgucGFnZS5sYXN0PjEpfX1mdW5jdGlvbiBqY2UoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJkaXYiLDE5KSxXdCgyKSxpdCgpLHR0KDMsImRpdiIsNSkoNCwiYnV0dG9uIiw5KSxabigiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KCl7YShoKTtjb25zdCB5PVV0KCk7cmV0dXJuIGJ0KHkucGFnZS5jdXJyZW50PXkucGFnZS5jdXJyZW50LTEpfSksdHQoNSwic3BhbiIsNyksV3QoNiksaXQoKSxicig3LCJjZHMtaWNvbiIsMTApLGl0KCksdHQoOCwic3BhbiIpLFd0KDkpLGl0KCksdHQoMTAsImJ1dHRvbiIsMTMpLFpuKCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKTtyZXR1cm4gYnQoeS5wYWdlLmN1cnJlbnQ9eS5wYWdlLmN1cnJlbnQrMSl9KSx0dCgxMSwic3BhbiIsNyksV3QoMTIpLGl0KCksYnIoMTMsImNkcy1pY29uIiwxNCksaXQoKSgpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3Qo''@;'; put 'put ''MiksUGgoIiAiLGgucGFnZS5maXJzdEl0ZW0rMSwiLSIsaC5wYWdlLmxhc3RJdGVtKzEsIiAvICIsaC5wYWdlLnRvdGFsSXRlbXMsIiAiKSxzdCgyKSx4dCgiZGlzYWJsZWQiLGgucGFnZS5jdXJyZW50PD0xKSxHaSgiYXJpYS1sYWJlbCIsaC5jb21tb25TdHJpbmdzLmtleXMucHJldmlvdXNQ''@;'; put 'put ''YWdlKSxzdCgyKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5wcmV2aW91c1BhZ2UpLHN0KDMpLGppKGgucGFnZS5jdXJyZW50KSxzdCgxKSx4dCgiZGlzYWJsZWQiLGgucGFnZS5jdXJyZW50Pj1oLnBhZ2UubGFzdCksR2koImFyaWEtbGFiZWwiLGguY29tbW9uU3RyaW5ncy5rZXlzLm5leHRQ''@;'; put 'put ''YWdlKSxzdCgyKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5uZXh0UGFnZSl9fWNvbnN0IFpjZT1bIioiLFtbImNsci1kZy1wYWdlLXNpemUiXV1dLHpjZT1bIioiLCJjbHItZGctcGFnZS1zaXplIl07ZnVuY3Rpb24gbVooZCxnKXsxJmQmJmJyKDAsImNkcy1pY29uIiw3KSwyJmQmJkdpKCJk''@;'; put 'put ''aXJlY3Rpb24iLFV0KCkuY2FyZXREaXJlY3Rpb24pfWZ1bmN0aW9uIEdjZShkLGcpe2lmKDEmZCYmKHR0KDAsInNwYW4iLDgpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLnN0YWNrVmlld0NoYW5nZWQpfX1mdW5jdGlvbiBXY2Uo''@;'; put 'put ''ZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDkpLFZpKDEsMiksaXQoKSksMiZkKXtjb25zdCBoPVV0KCk7SWQoImhlaWdodCIsaC5leHBhbmRlZD8iYXV0byI6MCksR2koImlkIixoLmdldFN0YWNrQ2hpbGRyZW5JZCgpKSgiYXJpYS1sYWJlbGxlZGJ5IixoLmxhYmVsbGVkQnlJZCl9fWNvbnN0''@;'; put 'put ''IFljZT1bW1siY2xyLXN0YWNrLWxhYmVsIl1dLCIqIixbWyJjbHItc3RhY2stYmxvY2siXV1dLFVjZT1bImNsci1zdGFjay1sYWJlbCIsIioiLCJjbHItc3RhY2stYmxvY2siXSxVJD1bW1siY2xyLXN0YWNrLWhlYWRlciJdXSwiKiJdLFEkPVsiY2xyLXN0YWNrLWhlYWRlciIsIioiXTtmdW5j''@;'; put 'put ''dGlvbiB2WihkLGcpezEmZCYmaDEoMCl9ZnVuY3Rpb24gQVooZCxnKXtpZigxJmQmJihMMCgwKSxubigxLHZaLDEsMCwibmctY29udGFpbmVyIiwyKSxPMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCgyKTtzdCgxKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsdi5mZWF0dXJlc1Nl''@;'; put 'put ''cnZpY2UucmVjdXJzaW9uLnRlbXBsYXRlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLHYuZ2V0Q29udGV4dChoKSl9fWZ1bmN0aW9uIEtjZShkLGcpe2lmKDEmZCYmKEwwKDApLG5uKDEsQVosMiwyLCJuZy1jb250YWluZXIiLDEpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0''@;'; put 'put ''KCJuZ0Zvck9mIiwobnVsbD09aC5wYXJlbnQ/bnVsbDpoLnBhcmVudC5jaGlsZHJlbil8fGguY2hpbGRyZW4pfX1jb25zdCAkY2U9WyJjb250ZW50Q29udGFpbmVyIl07ZnVuY3Rpb24gcWNlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiw5KSxabigiY2xpY2siLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5leHBhbmRTZXJ2aWNlLnRvZ2dsZSgpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmZvY3VzVHJlZU5vZGUoKSl9KSxicigxLCJjZHMtaWNvbiIsMTApLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3QoMSks''@;'; put 'put ''R2koImRpcmVjdGlvbiIsaC5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPyJkb3duIjoicmlnaHQiKX19ZnVuY3Rpb24gaHcoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDExKSxicigxLCJzcGFuIiwxMiksaXQoKSl9ZnVuY3Rpb24gSGwoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYi''@;'; put 'put ''LDEzKSgxLCJpbnB1dCIsMTQpLFpuKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCk7cmV0dXJuIGJ0KHkuX21vZGVsLnRvZ2dsZVNlbGVjdGlvbih5LmZlYXR1cmVzU2VydmljZS5lYWdlcikpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuZm9j''@;'; put 'put ''dXNUcmVlTm9kZSgpKX0pLGl0KCksYnIoMiwibGFiZWwiLDE1KSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLFE0KCJpZCIsIiIsaC5ub2RlSWQsIi1jaGVjayIpLHh0KCJjaGVja2VkIixoLl9tb2RlbC5zZWxlY3RlZC52YWx1ZT09PWguU1RBVEVTLlNFTEVDVEVEKSgiaW5kZXRl''@;'; put 'put ''cm1pbmF0ZSIsaC5fbW9kZWwuc2VsZWN0ZWQudmFsdWU9PT1oLlNUQVRFUy5JTkRFVEVSTUlOQVRFKSxzdCgxKSxRNCgiZm9yIiwiIixoLm5vZGVJZCwiLWNoZWNrIil9fWZ1bmN0aW9uIGdwKGQsZyl7MSZkJiYodHQoMCwic3BhbiIpLFd0KDEsInNlbGVjdGVkIiksaXQoKSl9ZnVuY3Rpb24g''@;'; put 'put ''cSQoZCxnKXsxJmQmJih0dCgwLCJzcGFuIiksV3QoMSwidW5zZWxlY3RlZCIpLGl0KCkpfWZ1bmN0aW9uIGVxKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IiwxNiksbm4oMSxncCwyLDAsInNwYW4iLDE3KSxubigyLHEkLDIsMCwic3BhbiIsMTcpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0''@;'; put 'put ''KDEpLHh0KCJuZ0lmIixoLmFyaWFTZWxlY3RlZCksc3QoMSkseHQoIm5nSWYiLCFoLmFyaWFTZWxlY3RlZCl9fWNvbnN0IGR3PVsiKiIsW1siY2xyLXRyZWUtbm9kZSJdXSxbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dXSx2Uz1bIioiLCJjbHItdHJlZS1ub2RlIiwiW2NscklmRXhwYW5kZWRd''@;'; put 'put ''Il07ZnVuY3Rpb24gR0woZCxnKXsxJmQmJmJyKDAsImNsci1yZWN1cnNpdmUtY2hpbGRyZW4iLDEpLDImZCYmeHQoImNoaWxkcmVuIixVdCgpLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24ucm9vdCl9ZnVuY3Rpb24gWnUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0b24i''@;'; put 'put ''LDQpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5jbG9zZSgpKX0pLGJyKDEsImNkcy1pY29uIiw1KSxpdCgpfTImZCYmR2koImFyaWEtbGFiZWwiLFV0KDIpLmNsckNsb3NlQnV0dG9uQXJpYUxhYmVsKX1mdW5jdGlvbiBjcyhkLGcpe2lmKDEmZCYmKHR0KDAs''@;'; put 'put ''ImRpdiIsMSkoMSwiZGl2IiwyKSxWaSgyKSxpdCgpLG5uKDMsWnUsMiwxLCJidXR0b24iLDMpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO0hpKCJhbGVydC1oaWRkZW4iLGguaGlkZGVuKSgiYWxlcnQtc20iLGguaXNTbWFsbCkoImFsZXJ0LWFwcC1sZXZlbCIsaC5pc0FwcExldmVsKSx4dCgi''@;'; put 'put ''bmdDbGFzcyIsaC5hbGVydENsYXNzKSxzdCgzKSx4dCgibmdJZiIsaC5jbG9zYWJsZSl9fWZ1bmN0aW9uIHRxKGQsZyl7MSZkJiZicigwLCJjbHItYWxlcnRzLXBhZ2VyIiwxKSwyJmQmJnh0KCJjbHJDdXJyZW50QWxlcnRJbmRleCIsVXQoKS5jdXJyZW50QWxlcnRJbmRleCl9Y29uc3QgbnE9''@;'; put 'put ''W1tbImNsci1hbGVydCJdXV0sbzQ9WyJjbHItYWxlcnQiXTtmdW5jdGlvbiBtcChkLGcpezEmZCYmVmkoMCl9Y29uc3QgcjI9WyJ0YWJDb250ZW50UHJvamVjdGVkUmVmIl07ZnVuY3Rpb24gZ2coZCxnKXtpZigxJmQmJih0dCgwLCJzZWN0aW9uIiwxKSxWaSgxKSxpdCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9VXQoKTtIaSgiYWN0aXZlIixoLmFjdGl2ZSkseHQoImlkIixoLnRhYkNvbnRlbnRJZCkoImhpZGRlbiIsIWguYWN0aXZlKSxHaSgiYXJpYS1sYWJlbGxlZGJ5IixoLmFyaWFMYWJlbGxlZEJ5KSgiYXJpYS1oaWRkZW4iLCFoLmFjdGl2ZSl9fWNvbnN0IGVmZT1bInRhYkNvbnRlbnRWaWV3''@;'; put 'put ''Q29udGFpbmVyIl07ZnVuY3Rpb24gdGZlKGQsZyl7aWYoMSZkJiYoTDAoMCksdHQoMSwibGkiLDQpLGgxKDIsNSksaXQoKSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQ7c3QoMikseHQoIm5nVGVtcGxhdGVPdXRsZXQiLGgudGVtcGxhdGVSZWZDb250YWluZXIudGVtcGxhdGUp''@;'; put 'put ''fX1mdW5jdGlvbiBuZmUoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLHRmZSwzLDEsIm5nLWNvbnRhaW5lciIsMiksTzAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9VXQoKTtzdCgxKSx4dCgibmdJZiIsaC50YWJzSWQ9PT12LnRhYnNJZCYmIWguaW5PdmVyZmxvdyl9fWZ1bmN0aW9u''@;'; put 'put ''IHJmZShkLGcpezEmZCYmaDEoMCw1KSwyJmQmJnh0KCJuZ1RlbXBsYXRlT3V0bGV0IixVdCgpLiRpbXBsaWNpdC50ZW1wbGF0ZVJlZkNvbnRhaW5lci50ZW1wbGF0ZSl9ZnVuY3Rpb24gaWZlKGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxyZmUsMSwxLCJuZy1jb250YWluZXIiLDEzKSxPMCgp''@;'; put 'put ''KSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCgzKTtzdCgxKSx4dCgibmdJZiIsaC50YWJzSWQ9PT12LnRhYnNJZCYmaC5pbk92ZXJmbG93KX19ZnVuY3Rpb24gb2ZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRhYi1vdmVyZmxvdy1jb250ZW50IiwxMiksWm4o''@;'; put 'put ''ImtleWRvd24uZXNjIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLmNsb3NlT25Fc2NhcGVLZXkoKSl9LDAsczYpKCJjbGljayIsZnVuY3Rpb24oeSl7YShoKSxVdCgpO2NvbnN0IEM9dWEoNCk7cmV0dXJuIGJ0KFV0KCkuY2xvc2VPbk91dHNpZGVDbGljayh5LEMpKX0sITEsczYp''@;'; put 'put ''KCJmb2N1c291dCIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuY2xvc2VPbkZvY3VzT3V0KHkpKX0pLG5uKDEsaWZlLDIsMSwibmctY29udGFpbmVyIiwxKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSx4dCgibmdGb3JPZiIsaC50YWJMaW5rRGlyZWN0aXZlcyl9''@;'; put 'put ''fWZ1bmN0aW9uIGFmZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO0wwKDApLHR0KDEsImRpdiIsNikoMiwibGkiLDcpKDMsImJ1dHRvbiIsOCw5KSxabigibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuX21vdXNlZG93bj0hMCl9KSgiZm9jdXMiLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIGEoaCksYnQoVXQoKS5vcGVuT3ZlcmZsb3dPbkZvY3VzKCkpfSkoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkudG9nZ2xlT3ZlcmZsb3dPbkNsaWNrKCkpfSksYnIoNSwiY2RzLWljb24iLDEwKSxpdCgpKCksbm4oNixvZmUsMiwxLCJjbHItdGFiLW92''@;'; put 'put ''ZXJmbG93LWNvbnRlbnQiLDExKSxpdCgpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3QoMSksSGkoIm9wZW4iLGgudG9nZ2xlU2VydmljZS5vcGVuKSxzdCgyKSxIaSgiYWN0aXZlIixoLmFjdGl2ZVRhYkluT3ZlcmZsb3cpKCJvcGVuIixoLnRvZ2dsZVNlcnZpY2Uub3BlbiksR2koInRh''@;'; put 'put ''YmluZGV4IixoLmFjdGl2ZVRhYkluT3ZlcmZsb3cmJiFoLnRvZ2dsZVNlcnZpY2Uub3Blbj8wOi0xKSgidGl0bGUiLGguY29tbW9uU3RyaW5ncy5rZXlzLm1vcmUpLHN0KDIpLEdpKCJ0aXRsZSIsaC5jb21tb25TdHJpbmdzLmtleXMubW9yZSksc3QoMSkseHQoIm5nSWYiLGgudG9nZ2xlU2Vy''@;'; put 'put ''dmljZS5vcGVuKX19ZnVuY3Rpb24gbGZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiwzKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS50b2dnbGVCeUJ1dHRvbigpKX0pLGJyKDEsImNkcy1pY29uIiw0KSxpdCgpfWlmKDImZCl7Y29u''@;'; put 'put ''c3QgaD1VdCgpO0hpKCJvbi1jb2xsYXBzZSIsaC5jb2xsYXBzZWQpLEdpKCJhcmlhLWV4cGFuZGVkIixoLmFyaWFFeHBhbmRlZCkoImFyaWEtbGFiZWwiLGguY29tbW9uU3RyaW5ncy5rZXlzLnZlcnRpY2FsTmF2VG9nZ2xlKSxzdCgxKSxHaSgiZGlyZWN0aW9uIixoLmNvbGxhcHNlZD8icmln''@;'; put 'put ''aHQiOiJsZWZ0IikoInRpdGxlIixoLmNvbGxhcHNlZD9oLmNvbW1vblN0cmluZ3Mua2V5cy5leHBhbmQ6aC5jb21tb25TdHJpbmdzLmtleXMuY29sbGFwc2UpfX1mdW5jdGlvbiBzZmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0b24iLDUpLFpuKCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gYShoKSxidChVdCgpLmNvbGxhcHNlZD0hMSl9KSxpdCgpfTImZCYmR2koImFyaWEtbGFiZWwiLFV0KCkuY29tbW9uU3RyaW5ncy5rZXlzLnZlcnRpY2FsTmF2VG9nZ2xlKX1jb25zdCBmZmU9WyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiXSxoZmU9W1tbIiIsImNsclZlcnRp''@;'; put 'put ''Y2FsTmF2SWNvbiIsIiJdXSwiKiJdLGRmZT1bIltjbHJWZXJ0aWNhbE5hdkljb25dIiwiKiJdO2Z1bmN0aW9uIHBmZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMTEpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5jbG9zZSgpKX0p''@;'; put 'put ''LGJyKDEsImNkcy1pY29uIiwxMiksaXQoKX0yJmQmJkdpKCJhcmlhLWxhYmVsIixVdCgyKS5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpfWZ1bmN0aW9uIGdmZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMSkoMSwiZGl2IiwyKSxabigiQGZhZGVEb3duLmRvbmUiLGZ1''@;'; put 'put ''bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkuZmFkZURvbmUoeSkpfSksdHQoMiwiZGl2IiwzKSxXdCgzKSxpdCgpLHR0KDQsImRpdiIsNCksVmkoNSksdHQoNiwiZGl2Iiw1KSg3LCJkaXYiLDYpKDgsImRpdiIsNyksVmkoOSwxKSxpdCgpLG5uKDEwLHBmZSwyLDEsImJ1dHRvbiIsOCks''@;'; put 'put ''aXQoKSx0dCgxMSwiZGl2Iiw5KSxWaSgxMiwyKSxpdCgpLFZpKDEzLDMpLGl0KCkoKSx0dCgxNCwiZGl2IiwzKSxXdCgxNSksaXQoKSgpLHR0KDE2LCJkaXYiLDEwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCk7cmV0dXJuIGJ0KHkuc3RhdGljQmFja2Ryb3B8fHku''@;'; put 'put ''Y2xvc2UoKSl9KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3QoMSksSGkoIm1vZGFsLXNtIiwic20iPT1oLnNpemUpKCJtb2RhbC1sZyIsImxnIj09aC5zaXplKSgibW9kYWwteGwiLCJ4bCI9PWguc2l6ZSkseHQoIkBmYWRlRG93biIsaC5za2lwQW5pbWF0aW9uKSxHaSgiYXJpYS1o''@;'; put 'put ''aWRkZW4iLCFoLl9vcGVuKSgiYXJpYS1sYWJlbGxlZGJ5IixoLmxhYmVsbGVkQnkpLHN0KDIpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudFN0YXJ0KSxzdCg1KSxVNCgiaWQiLGgubW9kYWxJZCksc3QoMikseHQoIm5nSWYiLGguY2xvc2FibGUpLHN0KDUpLGppKGguY29t''@;'; put 'put ''bW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudEVuZCksc3QoMSkseHQoIkBmYWRlIix2b2lkIDApfX1jb25zdCBtZmU9W1tbIiIsOCwibW9kYWwtbmF2Il1dLFtbIiIsOCwibW9kYWwtdGl0bGUiXV0sW1siIiw4LCJtb2RhbC1ib2R5Il1dLFtbIiIsOCwibW9kYWwtZm9vdGVyIl1dXSx2ZmU9''@;'; put 'put ''WyIubW9kYWwtbmF2IiwiLm1vZGFsLXRpdGxlIiwiLm1vZGFsLWJvZHkiLCIubW9kYWwtZm9vdGVyIl07bGV0IEcyPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpb''@;'; put 'put ''WyJjbHItaWNvbiJdXX0pLGR9KSgpLGtzPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjZHMtaWNvbiJdXX0pLGR9KSgpLFpzPSgoKT0+e2NsYXNzIGR7fXJl''@;'; put 'put ''dHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYV1dfSksZH0pKCk7Y2xhc3MgeWd7fXZhciBwYT0oKCk9PihmdW5jdGlvbihkKXtkW2QuREVGQVVMVD0wXT0iREVG''@;'; put 'put ''QVVMVCIsZFtkLkxPQURJTkc9MV09IkxPQURJTkciLGRbZC5TVUNDRVNTPTJdPSJTVUNDRVNTIixkW2QuRVJST1I9M109IkVSUk9SIn0ocGF8fChwYT17fSkpLHBhKSkoKTtsZXQgUmk9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmxpc3RlbmVyPWgsdGhpcy5fbG9hZGluZ1N0''@;'; put 'put ''YXRlPXBhLkRFRkFVTFR9Z2V0IGxvYWRpbmdTdGF0ZSgpe3JldHVybiB0aGlzLl9sb2FkaW5nU3RhdGV9c2V0IGxvYWRpbmdTdGF0ZShoKXshMD09PWg/aD1wYS5MT0FESU5HOmh8fChoPXBhLkRFRkFVTFQpLGghPT10aGlzLl9sb2FkaW5nU3RhdGUmJih0aGlzLl9sb2FkaW5nU3RhdGU9aCx0''@;'; put 'put ''aGlzLmxpc3RlbmVyJiZ0aGlzLmxpc3RlbmVyLmxvYWRpbmdTdGF0ZUNoYW5nZShoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmxvYWRpbmdTdGF0ZT1wYS5ERUZBVUxUfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh5Zyw4KSl9LGQuXHUwMjc1ZGly''@;'; put 'put ''PVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsckxvYWRpbmciLCIiXV0saW5wdXRzOntsb2FkaW5nU3RhdGU6WyJjbHJMb2FkaW5nIiwibG9hZGluZ1N0YXRlIl19fSksZH0pKCksZWY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZXhwYW5kYWJsZT0wLHRoaXMuX2xvYWRp''@;'; put 'put ''bmc9ITEsdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fZXhwYW5kQ2hhbmdlPW5ldyAkZX1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLl9sb2FkaW5nfXNldCBsb2FkaW5nKGgpeyhoPSEhaCkhPT10aGlzLl9sb2FkaW5nJiYodGhpcy5fbG9hZGluZz1oKX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fZXhwYW5kZWR9c2V0IGV4cGFuZGVkKGgpeyhoPSEhaCkhPT10aGlzLl9leHBhbmRlZCYmKHRoaXMuX2V4cGFuZGVkPWgsdGhpcy5fZXhwYW5kQ2hhbmdlLm5leHQoaCkpfXRvZ2dsZSgpe3RoaXMuZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfWdldCBleHBhbmRDaGFuZ2UoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fZXhwYW5kQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWxvYWRpbmdTdGF0ZUNoYW5nZShoKXt0aGlzLmxvYWRpbmc9aD09PXBhLkxPQURJTkd9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFj''@;'; put 'put ''dG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLG1pPTA7Y29uc3QgRDA9bmV3IE90KCJVTklRVUVfSUQiKTtmdW5jdGlvbiBMMSgpe3JldHVybiJjbHItaWQtIittaSsrfWNvbnN0IFJjPXtwcm92aWRlOkQwLHVzZUZhY3Rvcnk6TDF9O2xldCB5Wj0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiJdLFsiY2xyLXN0ZXAtZGVzY3JpcHRpb24iXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsy''@;'; put 'put ''JmgmJkhpKCJjbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9uIiwhMCl9LG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxkfSkoKTt2YXIg''@;'; put 'put ''YTQ9KCgpPT4oZnVuY3Rpb24oZCl7ZC5JbmFjdGl2ZT0iaW5hY3RpdmUiLGQuRXJyb3I9ImVycm9yIixkLkNvbXBsZXRlPSJjb21wbGV0ZSJ9KGE0fHwoYTQ9e30pKSxhNCkpKCk7Y29uc3Qgbm89IjAuMnMgZWFzZS1pbi1vdXQiLHgyPVtKYygic2tpcEluaXRpYWxSZW5kZXIiLFtidSgiOmVu''@;'; put 'put ''dGVyIixbXSldKSxKYygidG9nZ2xlIixbYnUoInZvaWQgPT4gKiIsW3hsKHtkaXNwbGF5OiJibG9jayIsaGVpZ2h0OjB9KSxmYyhubyx4bCh7aGVpZ2h0OiIqIn0pKV0pXSldLFlMPShKYygic2tpcEluaXRpYWxSZW5kZXIiLFtidSgiOmVudGVyIixbXSldKSxKYygidG9nZ2xlIixbYnUoInZv''@;'; put 'put ''aWQgPT4gKiIsW3hsKHtkaXNwbGF5OiJibG9jayIsaGVpZ2h0OjB9KSxmYyhubyx4bCh7aGVpZ2h0OiIqIn0pKV0pLGJ1KCIqID0+IHZvaWQiLFt4bCh7ZGlzcGxheToiYmxvY2sifSksZmMobm8seGwoe2hlaWdodDowLGRpc3BsYXk6Im5vbmUifSkpXSldKSx7b3BlbjoiT3BlbiIsY2xvc2U6''@;'; put 'put ''IkNsb3NlIixzaG93OiJTaG93IixoaWRlOiJIaWRlIixleHBhbmQ6IkV4cGFuZCIsY29sbGFwc2U6IkNvbGxhcHNlIixtb3JlOiJNb3JlIixzZWxlY3Q6IlNlbGVjdCIsc2VsZWN0QWxsOiJTZWxlY3QgQWxsIixwcmV2aW91czoiUHJldmlvdXMiLG5leHQ6Ik5leHQiLGN1cnJlbnQ6Ikp1bXAg''@;'; put 'put ''dG8gY3VycmVudCIsaW5mbzoiSW5mbyIsc3VjY2VzczoiU3VjY2VzcyIsd2FybmluZzoiV2FybmluZyIsZGFuZ2VyOiJFcnJvciIscm93QWN0aW9uczoiQXZhaWxhYmxlIGFjdGlvbnMiLHBpY2tDb2x1bW5zOiJTaG93IG9yIGhpZGUgY29sdW1ucyIsc2hvd0NvbHVtbnM6IlNob3cgQ29sdW1u''@;'; put 'put ''cyIsc29ydENvbHVtbjoiU29ydCBDb2x1bW4iLGZpcnN0UGFnZToiRmlyc3QgUGFnZSIsbGFzdFBhZ2U6Ikxhc3QgUGFnZSIsbmV4dFBhZ2U6Ik5leHQgUGFnZSIscHJldmlvdXNQYWdlOiJQcmV2aW91cyBQYWdlIixjdXJyZW50UGFnZToiQ3VycmVudCBQYWdlIix0b3RhbFBhZ2VzOiJUb3Rh''@;'; put 'put ''bCBQYWdlcyIsZmlsdGVySXRlbXM6IkZpbHRlciBpdGVtcyIsbWluVmFsdWU6Ik1pbiB2YWx1ZSIsbWF4VmFsdWU6Ik1heCB2YWx1ZSIsbW9kYWxDb250ZW50U3RhcnQ6IkJlZ2lubmluZyBvZiBNb2RhbCBDb250ZW50Iixtb2RhbENvbnRlbnRFbmQ6IkVuZCBvZiBNb2RhbCBDb250ZW50Iixz''@;'; put 'put ''aG93Q29sdW1uc01lbnVEZXNjcmlwdGlvbjoiU2hvdyBvciBoaWRlIGNvbHVtbnMgbWVudSIsYWxsQ29sdW1uc1NlbGVjdGVkOiJBbGwgY29sdW1ucyBzZWxlY3RlZCIsc2lnbnBvc3RUb2dnbGU6IlNpZ25wb3N0IFRvZ2dsZSIsc2lnbnBvc3RDbG9zZToiU2lnbnBvc3QgQ2xvc2UiLGxvYWRp''@;'; put 'put ''bmc6IkxvYWRpbmciLGRldGFpbFBhbmVTdGFydDoiU3RhcnQgb2Ygcm93IGRldGFpbHMiLGRldGFpbFBhbmVFbmQ6IkVuZCBvZiByb3cgZGV0YWlscyIsc2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsOiJTaW5nbGUgc2VsZWN0aW9uIGhlYWRlciIsc2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbDoi''@;'; put 'put ''U2luZ2xlIGFjdGlvbmFibGUgaGVhZGVyIixkZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsOiJUb2dnbGUgbW9yZSByb3cgY29udGVudCIsZGF0YWdyaWRGaWx0ZXJBcmlhTGFiZWw6IkZpbHRlciBkaWFsb2ciLGRhdGFncmlkRmlsdGVyRGlhbG9nQXJpYUxhYmVsOiJUb2dnbGUgY29sdW1uIGZp''@;'; put 'put ''bHRlciIsY29sdW1uU2VwYXJhdG9yQXJpYUxhYmVsOiJDb2x1bW4gcmVzaXplIGhhbmRsZSIsY29sdW1uU2VwYXJhdG9yRGVzY3JpcHRpb246IlVzZSBsZWZ0IG9yIHJpZ2h0IGtleSB0byByZXNpemUgdGhlIGNvbHVtbiIsYWxlcnRDbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UgYWxlcnQi''@;'; put 'put ''LGRhdGVwaWNrZXJEaWFsb2dMYWJlbDoiQ2hvb3NlIGRhdGUiLGRhdGVwaWNrZXJUb2dnbGU6IlRvZ2dsZSBkYXRlcGlja2VyIixkYXRlcGlja2VyVG9nZ2xlQ2hvb3NlRGF0ZUxhYmVsOiJDaG9vc2UgZGF0ZSIsZGF0ZXBpY2tlclRvZ2dsZUNoYW5nZURhdGVMYWJlbDoiQ2hhbmdlIGRhdGUs''@;'; put 'put ''IHtTRUxFQ1RFRF9EQVRFfSIsZGF0ZXBpY2tlclByZXZpb3VzTW9udGg6IlByZXZpb3VzIG1vbnRoIixkYXRlcGlja2VyQ3VycmVudE1vbnRoOiJDdXJyZW50IG1vbnRoIixkYXRlcGlja2VyTmV4dE1vbnRoOiJOZXh0IG1vbnRoIixkYXRlcGlja2VyUHJldmlvdXNEZWNhZGU6IlByZXZpb3Vz''@;'; put 'put ''IGRlY2FkZSIsZGF0ZXBpY2tlck5leHREZWNhZGU6Ik5leHQgZGVjYWRlIixkYXRlcGlja2VyQ3VycmVudERlY2FkZToiQ3VycmVudCBkZWNhZGUiLGRhdGVwaWNrZXJTZWxlY3RNb250aFRleHQ6IlNlbGVjdCBtb250aCwgdGhlIGN1cnJlbnQgbW9udGggaXMge0NBTEVOREFSX01PTlRIfSIs''@;'; put 'put ''ZGF0ZXBpY2tlclNlbGVjdFllYXJUZXh0OiJTZWxlY3QgeWVhciwgdGhlIGN1cnJlbnQgeWVhciBpcyB7Q0FMRU5EQVJfWUVBUn0iLGRhdGVwaWNrZXJTZWxlY3RlZExhYmVsOiJ7RlVMTF9EQVRFfSAtIFNlbGVjdGVkIixzdGFja1ZpZXdDaGFuZ2VkOiJWYWx1ZSBjaGFuZ2VkLiIscmVzcG9u''@;'; put 'put ''c2l2ZU5hdlRvZ2dsZU9wZW46Ik5hdmlnYXRpb24gbWVudSIscmVzcG9uc2l2ZU5hdlRvZ2dsZUNsb3NlOiJOYXZpZ2F0aW9uIG1lbnUiLHJlc3BvbnNpdmVOYXZPdmVyZmxvd09wZW46Ik5hdmlnYXRpb24gb3ZlcmZsb3cgbWVudSIscmVzcG9uc2l2ZU5hdk92ZXJmbG93Q2xvc2U6Ik5hdmln''@;'; put 'put ''YXRpb24gb3ZlcmZsb3cgbWVudSIsdmVydGljYWxOYXZHcm91cFRvZ2dsZToiVG9nZ2xlIHZlcnRpY2FsIG5hdmlnYXRpb24gZ3JvdXAiLHZlcnRpY2FsTmF2VG9nZ2xlOiJUb2dnbGUgdmVydGljYWwgbmF2aWdhdGlvbiIsdGltZWxpbmVTdGVwTm90U3RhcnRlZDoiTm90IHN0YXJ0ZWQiLHRp''@;'; put 'put ''bWVsaW5lU3RlcEN1cnJlbnQ6IkN1cnJlbnQiLHRpbWVsaW5lU3RlcFN1Y2Nlc3M6IkNvbXBsZXRlZCIsdGltZWxpbmVTdGVwRXJyb3I6IkVycm9yIix0aW1lbGluZVN0ZXBQcm9jZXNzaW5nOiJJbiBwcm9ncmVzcyIsY29tYm9ib3hEZWxldGU6IkRlbGV0ZSBzZWxlY3RlZCBvcHRpb24iLGNv''@;'; put 'put ''bWJvYm94U2VhcmNoaW5nOidTZWFyY2hpbmcgZm9yIG1hdGNoZXMgZm9yICJ7SU5QVVR9IicsY29tYm9ib3hTZWxlY3Rpb246IlNlbGVjdGlvbiIsY29tYm9ib3hTZWxlY3RlZDoiU2VsZWN0ZWQiLGNvbWJvYm94Tm9SZXN1bHRzOiJObyByZXN1bHRzIixjb21ib2JveE9wZW46IlNob3cgb3B0''@;'; put 'put ''aW9ucyIsZGF0YWdyaWRFeHBhbmRhYmxlQmVnaW5uaW5nT2Y6IkJlZ2lubmluZyBvZiIsZGF0YWdyaWRFeHBhbmRhYmxlRW5kT2Y6IkVuZCBvZiIsZGF0YWdyaWRFeHBhbmRhYmxlUm93Q29udGVudDoiRXhwYW5kYWJsZSByb3cgY29udGVudCIsZGF0YWdyaWRFeHBhbmRhYmxlUm93c0hlbHBl''@;'; put 'put ''clRleHQ6IlNjcmVlbiByZWFkZXIgdGFibGUgY29tbWFuZHMgbWF5IG5vdCB3b3JrIGZvciB2aWV3aW5nIGV4cGFuZGVkIGNvbnRlbnQsIHBsZWFzZSB1c2UgeW91ciBzY3JlZW4gcmVhZGVyJ3MgYnJvd3NlIG1vZGUgdG8gcmVhZCB0aGUgY29udGVudCBleHBvc2VkIGJ5IHRoaXMgYnV0dG9u''@;'; put 'put ''Iix3aXphcmRTdGVwU3VjY2VzczoiQ29tcGxldGVkIix3aXphcmRTdGVwRXJyb3I6IkVycm9yIixwYXNzd29yZEhpZGU6IkhpZGUgcGFzc3dvcmQiLHBhc3N3b3JkU2hvdzoiU2hvdyBwYXNzd29yZCIsc2VsZWN0ZWRSb3dzOiJTZWxlY3RlZCByb3dzIn0pO2xldCBGYT0oKCk9PntjbGFzcyBk''@;'; put 'put ''e2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RyaW5ncz1ZTH1sb2NhbGl6ZShoKXt0aGlzLl9zdHJpbmdzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9zdHJpbmdzKSxoKX1nZXQga2V5cygpe3JldHVybiB0aGlzLl9zdHJpbmdzfXBhcnNlKGgsdj17fSl7Y29uc3QgeT1PYmpl''@;'; put 'put ''Y3Qua2V5cyh2KTtsZXQgQz1oO3JldHVybiB5Lmxlbmd0aCYmeS5mb3JFYWNoKEk9PntDPUMucmVwbGFjZShgeyR7SX19YCx2W0ldKX0pLEN9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpk''@;'; put 'put ''Llx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO3ZhciBuMz0oKCk9PihmdW5jdGlvbihkKXtkLkRlZmF1bHQ9ImRlZmF1bHQiLGQuTXVsdGk9Im11bHRpIn0objN8fChuMz17fSkpLG4zKSkoKTtsZXQgZ3c9MDtjbGFzcyBVTHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuaWQ9Zyx0''@;'; put 'put ''aGlzLmFjY29yZGlvbklkPWgsdGhpcy5zdGF0dXM9YTQuSW5hY3RpdmUsdGhpcy5pbmRleD1udWxsLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5vcGVuPSExLHRoaXMudGVtcGxhdGVJZD1gJHt0aGlzLmlkfS0ke3RoaXMuYWNjb3JkaW9uSWR9YH19Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMu''@;'; put 'put ''c3RyYXRlZ3k9bjMuRGVmYXVsdCx0aGlzLmFjY29yZGlvbkNvdW50PWd3KyssdGhpcy5fcGFuZWxzPXt9fWdldCBwYW5lbHMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcGFuZWxzKS5tYXAoZz0+dGhpcy5fcGFuZWxzW2ddKX1zZXRTdHJhdGVneShnKXt0aGlzLnN0cmF0ZWd5PWd9dXBk''@;'; put 'put ''YXRlUGFuZWxPcmRlcihnKXtnLmZvckVhY2goKGgsdik9PnRoaXMuX3BhbmVsc1toXS5pbmRleD12KSx0aGlzLnJlbW92ZU9sZFBhbmVscyhnKX1hZGRQYW5lbChnLGg9ITEpe3RoaXMuX3BhbmVsc1tnXT1uZXcgVUwoZyx0aGlzLmFjY29yZGlvbkNvdW50KSx0aGlzLl9wYW5lbHNbZ10ub3Bl''@;'; put 'put ''bj1ofXRvZ2dsZVBhbmVsKGcsaCl7Y29uc3QgeT12b2lkIDAhPT1oP2g6IXRoaXMuX3BhbmVsc1tnXS5vcGVuO3kmJnRoaXMuc3RyYXRlZ3k9PT1uMy5EZWZhdWx0JiZ0aGlzLmNsb3NlQWxsUGFuZWxzKCksdGhpcy5fcGFuZWxzW2ddLm9wZW49eX1kaXNhYmxlUGFuZWwoZyxoKXt0aGlzLl9w''@;'; put 'put ''YW5lbHNbZ10uZGlzYWJsZWQ9aH1jbG9zZUFsbFBhbmVscygpe3RoaXMucGFuZWxzLmZvckVhY2goZz0+dGhpcy5fcGFuZWxzW2cuaWRdLm9wZW49ITEpfXJlbW92ZU9sZFBhbmVscyhnKXt0aGlzLnBhbmVscy5maWx0ZXIoaD0+dm9pZCAwPT09Zy5maW5kKHY9PnY9PT1oLmlkKSkuZm9yRWFj''@;'; put 'put ''aChoPT5kZWxldGUgdGhpcy5fcGFuZWxzW2guaWRdKX19bGV0IGM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuYWNjb3JkaW9uPW5ldyBsLHRoaXMuX3BhbmVsc0NoYW5nZXM9bmV3IFNsKHRoaXMuYWNjb3JkaW9uLnBhbmVscyl9Z2V0UGFuZWxDaGFuZ2VzKGgpe3JldHVybiB0''@;'; put 'put ''aGlzLl9wYW5lbHNDaGFuZ2VzLnBpcGUocHQodj0+di5maW5kKHk9PnkuaWQ9PT1oKSkpfXNldFN0cmF0ZWd5KGgpe3RoaXMuYWNjb3JkaW9uLnNldFN0cmF0ZWd5KGgpfWFkZFBhbmVsKGgsdj0hMSl7dGhpcy5hY2NvcmRpb24uYWRkUGFuZWwoaCx2KSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxz''@;'; put 'put ''KCl9dG9nZ2xlUGFuZWwoaCx2KXt0aGlzLmFjY29yZGlvbi50b2dnbGVQYW5lbChoLHYpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX1kaXNhYmxlUGFuZWwoaCx2KXt0aGlzLmFjY29yZGlvbi5kaXNhYmxlUGFuZWwoaCx2KSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9dXBkYXRlUGFuZWxP''@;'; put 'put ''cmRlcihoKXt0aGlzLmFjY29yZGlvbi51cGRhdGVQYW5lbE9yZGVyKGgpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX1lbWl0VXBkYXRlZFBhbmVscygpe3RoaXMuX3BhbmVsc0NoYW5nZXMubmV4dCh0aGlzLmFjY29yZGlvbi5wYW5lbHMpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxmPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5jb21tb25TdHJpbmdzPWgsdGhpcy5hY2NvcmRpb25TZXJ2aWNlPXYsdGhpcy5pZkV4''@;'; put 'put ''cGFuZFNlcnZpY2U9eSx0aGlzLl9pZD1DLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5wYW5lbE9wZW49ITEsdGhpcy5wYW5lbE9wZW5DaGFuZ2U9bmV3IGZuLHRoaXMuQWNjb3JkaW9uU3RhdHVzPWE0LHRoaXMuaXNBY2NvcmRpb249ITB9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZCho''@;'; put 'put ''KXt0aGlzLl9pZD1ofW5nT25Jbml0KCl7dGhpcy5wYW5lbD10aGlzLmFjY29yZGlvblNlcnZpY2UuZ2V0UGFuZWxDaGFuZ2VzKHRoaXMuaWQpLnBpcGUoajIoaD0+dGhpcy5lbWl0UGFuZWxDaGFuZ2UoaCkpKSx0aGlzLmFjY29yZGlvblNlcnZpY2UuYWRkUGFuZWwodGhpcy5pZCx0aGlzLnBh''@;'; put 'put ''bmVsT3BlbiksdGhpcy5hY2NvcmRpb25TZXJ2aWNlLnRvZ2dsZVBhbmVsKHRoaXMuaWQsdGhpcy5wYW5lbE9wZW4pLHRoaXMuYWNjb3JkaW9uU2VydmljZS5kaXNhYmxlUGFuZWwodGhpcy5pZCx0aGlzLmRpc2FibGVkKX1uZ09uQ2hhbmdlcyhoKXt0aGlzLnBhbmVsJiZoLnBhbmVsT3BlbiYm''@;'; put 'put ''aC5wYW5lbE9wZW4uY3VycmVudFZhbHVlIT09aC5wYW5lbE9wZW4ucHJldmlvdXNWYWx1ZSYmdGhpcy5hY2NvcmRpb25TZXJ2aWNlLnRvZ2dsZVBhbmVsKHRoaXMuaWQsaC5wYW5lbE9wZW4uY3VycmVudFZhbHVlKSx0aGlzLnBhbmVsJiZoLmRpc2FibGVkJiZoLmRpc2FibGVkLmN1cnJlbnRW''@;'; put 'put ''YWx1ZSE9PWguZGlzYWJsZWQucHJldmlvdXNWYWx1ZSYmdGhpcy5hY2NvcmRpb25TZXJ2aWNlLmRpc2FibGVQYW5lbCh0aGlzLmlkLGguZGlzYWJsZWQuY3VycmVudFZhbHVlKX10b2dnbGVQYW5lbCgpe3RoaXMuYWNjb3JkaW9uU2VydmljZS50b2dnbGVQYW5lbCh0aGlzLmlkKX1jb2xsYXBz''@;'; put 'put ''ZVBhbmVsT25BbmltYXRpb25Eb25lKGgpe2gub3Blbnx8KHRoaXMuaWZFeHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSExKX1nZXRQYW5lbFN0YXRlQ2xhc3NlcyhoKXtyZXR1cm5gY2xyLWFjY29yZGlvbi1wYW5lbC0ke2guc3RhdHVzfSAke2gub3Blbj8iY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVu''@;'; put 'put ''IjoiIn1gfWdldEFjY29yZGlvbkNvbnRlbnRJZChoKXtyZXR1cm5gY2xyLWFjY29yZGlvbi1jb250ZW50LSR7aH0nYH1nZXRBY2NvcmRpb25IZWFkZXJJZChoKXtyZXR1cm5gY2xyLWFjY29yZGlvbi1oZWFkZXItJHtofWB9ZW1pdFBhbmVsQ2hhbmdlKGgpe2gub3BlbiE9PXRoaXMucGFuZWxP''@;'; put 'put ''cGVuJiYodGhpcy5wYW5lbE9wZW5DaGFuZ2UuZW1pdChoLm9wZW4pLHRoaXMucGFuZWxPcGVuPWgub3BlbiksaC5vcGVuJiYodGhpcy5pZkV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9ITApfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChGYSksS3Qo''@;'; put 'put ''YyksS3QoZWYpLEt0KEQwKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tcGFuZWwiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmUzAoeSx5Wiw0KSwyJmgpe2xldCBDO3ppKEM9QWkoKSkmJih2LmFjY29yZGlvbkRl''@;'; put 'put ''c2NyaXB0aW9uPUMpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJjbHItYWNjb3JkaW9uLXBhbmVsIiwhMCl9LGlucHV0czp7ZGlzYWJsZWQ6WyJjbHJBY2NvcmRpb25QYW5lbERpc2FibGVkIiwiZGlzYWJsZWQiXSxwYW5lbE9wZW46WyJjbHJBY2Nv''@;'; put 'put ''cmRpb25QYW5lbE9wZW4iLCJwYW5lbE9wZW4iXX0sb3V0cHV0czp7cGFuZWxPcGVuQ2hhbmdlOiJjbHJBY2NvcmRpb25QYW5lbE9wZW5DaGFuZ2UifSxmZWF0dXJlczpbZ28oW2VmLFJjXSksZDJdLG5nQ29udGVudFNlbGVjdG9yczp1JCxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1s0LCJuZ0lm''@;'; put 'put ''Il0sWyJhcmlhLWxpdmUiLCJhc3NlcnRpdmUiLCJjbGFzcyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzMsIm5nQ2xhc3MiXSxbMSwiY2xyLWFjY29yZGlvbi1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbiIsMywiaWQiLCJkaXNhYmxl''@;'; put 'put ''ZCIsImNsaWNrIl0sWyJoZWFkZXJCdXR0b24iLCIiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwiY2xyLWFjY29yZGlvbi1zdGF0dXMiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCIsMSwiY2xyLWFjY29yZGlvbi1hbmdsZSJdLFsxLCJjbHItYWNjb3JkaW9uLW51bWJlciJd''@;'; put 'put ''LFsic3RhdHVzIiwiZGFuZ2VyIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsImNsci1hY2NvcmRpb24tZXJyb3ItaWNvbiJdLFsic3RhdHVzIiwic3VjY2VzcyIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwxLCJjbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb24iXSxbInJvbGUiLCJy''@;'; put 'put ''ZWdpb24iLDMsImlkIl0sWyJjbGFzcyIsImNsci1hY2NvcmRpb24tY29udGVudCIsNCwibmdJZiJdLFsiYXJpYS1saXZlIiwiYXNzZXJ0aXZlIiwxLCJjbHItc3Itb25seSJdLFsxLCJjbHItYWNjb3JkaW9uLWNvbnRlbnQiXSxbMSwiY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50Il1dLHRl''@;'; put 'put ''bXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAocyQpLG5uKDAsU3VlLDE5LDE4LCJuZy1jb250YWluZXIiLDApLFplKDEsImFzeW5jIikpLDImaCYmeHQoIm5nSWYiLFN0KDEsMSx2LnBhbmVsKSl9LGRlcGVuZGVuY2llczpbQm8sRTEsa3MsRENdLGVuY2Fwc3VsYXRpb246MixkYXRhOnth''@;'; put 'put ''bmltYXRpb246eDJ9LGNoYW5nZURldGVjdGlvbjowfSksZH0pKCkscD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuYWNjb3JkaW9uU2VydmljZT1oLHRoaXMubXVsdGlQYW5lbD0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W119bmdPbkluaXQoKXt0aGlzLnNldEFjY29yZGlvblN0''@;'; put 'put ''cmF0ZWd5KCl9bmdPbkNoYW5nZXMoaCl7aC5tdWx0aVBhbmVsLmN1cnJlbnRWYWx1ZSE9PWgubXVsdGlQYW5lbC5wcmV2aW91c1ZhbHVlJiZ0aGlzLnNldEFjY29yZGlvblN0cmF0ZWd5KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JE''@;'; put 'put ''T01DaGFuZ2VzKCkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1zZXRBY2NvcmRpb25TdHJhdGVneSgpe3RoaXMuYWNjb3JkaW9uU2VydmljZS5zZXRTdHJhdGVneSh0aGlzLm11bHRpUGFuZWw/bjMuTXVsdGk6bjMuRGVmYXVs''@;'; put 'put ''dCl9bGlzdGVuRm9yRE9NQ2hhbmdlcygpe3JldHVybiB0aGlzLnBhbmVscy5jaGFuZ2VzLnBpcGUoY3kodGhpcy5wYW5lbHMpKS5zdWJzY3JpYmUoaD0+dGhpcy5hY2NvcmRpb25TZXJ2aWNlLnVwZGF0ZVBhbmVsT3JkZXIoaC50b0FycmF5KCkubWFwKHY9PnYuaWQpKSl9fXJldHVybiBkLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGMpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LGYsNSksMiZoKXtsZXQgQzt6aShDPUFp''@;'; put 'put ''KCkpJiYodi5wYW5lbHM9Qyl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImNsci1hY2NvcmRpb24iLCEwKX0saW5wdXRzOnttdWx0aVBhbmVsOlsiY2xyQWNjb3JkaW9uTXVsdGlQYW5lbCIsIm11bHRpUGFuZWwiXX0sZmVhdHVyZXM6W2dvKFtjXSks''@;'; put 'put ''ZDJdLG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxkfSkoKSxtPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uLWNvbnRlbnQiXSxbImNsci1zdGVwLWNvbnRlbnQiXV0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgs''@;'; put 'put ''dil7MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGR9KSgpLEE9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltb''@;'; put 'put ''ImNsci1hY2NvcmRpb24tdGl0bGUiXSxbImNsci1zdGVwLXRpdGxlIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiY2xyLWFjY29yZGlvbi10aXRsZSIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXsxJmgmJigkMCgpLFZpKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCksdz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hvY29sYXRlPW5ldyAkZSx0aGlzLmRpc2FibGVDaG9jb2xhdGVDaGVjaz0hMX1nZXQgY2hvY29s''@;'; put 'put ''YXRlKCl7cmV0dXJuIHRoaXMuX2Nob2NvbGF0ZS5hc09ic2VydmFibGUoKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLmRpc2FibGVDaG9jb2xhdGVDaGVja3x8dGhpcy5fY2hvY29sYXRlLm5leHQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9''@;'; put 'put ''LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmR9KSxkfSkoKSxiPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLnN1YnNjcmlwdGlvbj12LmNob2NvbGF0ZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmxhdGVzdEZsYXZvciE9PXRoaXMuZmxhdm9yJiYodi5kaXNhYmxlQ2hvY29sYXRlQ2hl''@;'; put 'put ''Y2s9ITAsaC5kZXRlY3RDaGFuZ2VzKCksdi5kaXNhYmxlQ2hvY29sYXRlQ2hlY2s9ITEpfSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5sYXRlc3RGbGF2b3I9dGhpcy5mbGF2b3J9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChkMSksS3QodykpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkfSksZH0pKCksaz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgd3t9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYp''@;'; put 'put ''e3JldHVybihnfHwoZz10MihkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uIl1dLGZlYXR1cmVzOltSb119KSxkfSkoKSxNPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGgsdix5KXtpZighdil0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoImNsci1hY2NvcmRpb24tcGFuZWwgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgY2xyLWFjY29yZGlvbiIpO3N1cGVyKGgsdiksdGhpcy5leHBhbmQ9eX1nZXQgZmxhdm9yKCl7cmV0dXJuIHRoaXMuZXhwYW5kLmV4cGFuZGVkfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChkMSksS3Qoayw4KSxLdChlZikpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uLXBhbmVsIl1dLGZlYXR1cmVzOltSb119KSxkfSkoKSxSPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5h''@;'; put 'put ''ZGRJY29ucygkNyxZaCxVaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxac11dfSksZH0pKCkscnQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLFpzLFJdLFJdfSksZH0pKCk7dmFyIEdlPSgoKT0+KGZ1bmN0aW9uKGQpe2QuQXJyb3dMZWZ0PSJBcnJvd0xlZnQiLGQuQXJyb3dV''@;'; put 'put ''cD0iQXJyb3dVcCIsZC5BcnJvd1JpZ2h0PSJBcnJvd1JpZ2h0IixkLkFycm93RG93bj0iQXJyb3dEb3duIixkLkJhY2tzcGFjZT0iQmFja3NwYWNlIixkLlRhYj0iVGFiIixkLkVudGVyPSJFbnRlciIsZC5Fc2NhcGU9IkVzY2FwZSIsZC5TcGFjZT0iU3BhY2UiLGQuU3BhY2ViYXI9IiAiLGQu''@;'; put 'put ''SG9tZT0iSG9tZSIsZC5FbmQ9IkVuZCJ9KEdlfHwoR2U9e30pKSxHZSkpKCksbHQ9KCgpPT4oZnVuY3Rpb24oZCl7ZC5BcnJvd1VwPSJVcCIsZC5BcnJvd0Rvd249IkRvd24iLGQuQXJyb3dSaWdodD0iUmlnaHQiLGQuQXJyb3dMZWZ0PSJMZWZ0IixkLlNwYWNlPSJTcGFjZWJhciIsZC5Fc2Nh''@;'; put 'put ''cGU9IkVzYyIsZC5Ib21lPSJIb21lIixkLkVuZD0iRW5kIixkLkVudGVyPSJFbnRlciIsZC5UYWI9IlRhYiJ9KGx0fHwobHQ9e30pKSxsdCkpKCk7ZnVuY3Rpb24gTXQoZCl7cmV0dXJuIGQ9PT1HZS5BcnJvd1VwfHxkPT09bHQuQXJyb3dVcD9HZS5BcnJvd1VwOmQ9PT1HZS5BcnJvd0Rvd258''@;'; put 'put ''fGQ9PT1sdC5BcnJvd0Rvd24/R2UuQXJyb3dEb3duOmQ9PT1HZS5BcnJvd1JpZ2h0fHxkPT09bHQuQXJyb3dSaWdodD9HZS5BcnJvd1JpZ2h0OmQ9PT1HZS5BcnJvd0xlZnR8fGQ9PT1sdC5BcnJvd0xlZnQ/R2UuQXJyb3dMZWZ0OmQ9PT1HZS5TcGFjZXx8ZD09PWx0LlNwYWNlP0dlLlNwYWNl''@;'; put 'put ''OmQ9PT1HZS5Fc2NhcGV8fGQ9PT1sdC5Fc2NhcGU/R2UuRXNjYXBlOmR9ZnVuY3Rpb24ga3QoZCl7Y29uc3QgZz1NdChkLmtleSk7KGc9PT1HZS5BcnJvd1VwfHxnPT09R2UuQXJyb3dEb3dufHxnPT09R2UuQXJyb3dMZWZ0fHxnPT09R2UuQXJyb3dSaWdodCkmJmQucHJldmVudERlZmF1bHQo''@;'; put 'put ''KX1sZXQgRXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX29wZW49ITEsdGhpcy5fb3BlbkNoYW5nZT1uZXcgJGUsdGhpcy5fb3BlbkV2ZW50Q2hhbmdlPW5ldyAkZSx0aGlzLl9wb3BvdmVyQWxpZ25lZD1uZXcgJGV9Z2V0IG9wZW5DaGFuZ2UoKXtyZXR1cm4gdGhpcy5fb3Bl''@;'; put 'put ''bkNoYW5nZS5hc09ic2VydmFibGUoKX1zZXQgb3BlbkV2ZW50KGgpe3RoaXMuX29wZW5FdmVudD1oLHRoaXMuX29wZW5FdmVudENoYW5nZS5uZXh0KGgpfWdldCBvcGVuRXZlbnQoKXtyZXR1cm4gdGhpcy5fb3BlbkV2ZW50fWdldEV2ZW50Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX29wZW5FdmVu''@;'; put 'put ''dENoYW5nZS5hc09ic2VydmFibGUoKX1zZXQgb3BlbihoKXt0aGlzLl9vcGVuIT09KGg9ISFoKSYmKHRoaXMuX29wZW49aCx0aGlzLl9vcGVuQ2hhbmdlLm5leHQoaCkpfWdldCBvcGVuKCl7cmV0dXJuIHRoaXMuX29wZW59Z2V0IG9yaWdpbmFsRXZlbnQoKXtyZXR1cm4gdGhpcy5fb3BlbkV2''@;'; put 'put ''ZW50fXRvZ2dsZVdpdGhFdmVudChoKXtrdChoKSx0aGlzLm9wZW5FdmVudD1oLHRoaXMub3Blbj0hdGhpcy5vcGVufWdldCBwb3BvdmVyQWxpZ25lZCgpe3JldHVybiB0aGlzLl9wb3BvdmVyQWxpZ25lZC5hc09ic2VydmFibGUoKX1wb3BvdmVyQWxpZ25lZEVtaXQoaCl7dGhpcy5fcG9wb3Zl''@;'; put 'put ''ckFsaWduZWQubmV4dChoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksWnQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5yZW5k''@;'; put 'put ''ZXJlcj1oLHRoaXMuc21hcnRPcGVuU2VydmljZT12LHRoaXMuZG9jdW1lbnQ9eSx0aGlzLm91dHNpZGVDbGlja0Nsb3NlPSEwLHRoaXMuc2Nyb2xsVG9DbG9zZT0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godi5vcGVuQ2hhbmdlLnN1YnNjcmliZShD''@;'; put 'put ''PT57Qz8odGhpcy5hZGRFc2NhcGVMaXN0ZW5lcigpLHRoaXMuYWRkQ2xpY2tMaXN0ZW5lcigpLHRoaXMuYWRkU2Nyb2xsTGlzdGVuZXIoKSk6dGhpcy5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpfSksdi5nZXRFdmVudENoYW5nZSgpLnN1YnNjcmliZShDPT57dGhpcy5pZ25vcmVkRXZlbnQ9''@;'; put 'put ''Q30pKX1hZGRTY3JvbGxMaXN0ZW5lcigpe3RoaXMuc2Nyb2xsVG9DbG9zZSYmKHRoaXMuZG9jdW1lbnRTY3JvbGxlcj1yOCh0aGlzLmRvY3VtZW50LCJzY3JvbGwiLHtjYXB0dXJlOiEwfSksdGhpcy5zY3JvbGxTdWJzY3JpcHRpb249dGhpcy5kb2N1bWVudFNjcm9sbGVyLnBpcGUobTIodGhp''@;'; put 'put ''cy50ZXN0Rm9yU21hcnRQb3BvdmVyQ29udGVudENvbnRhaW5lcikpLnN1YnNjcmliZSgoKT0+e3RoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuPSExLHRoaXMuc2V0QW5jaG9yRm9jdXMoKX0pKX1yZW1vdmVTY3JvbGxMaXN0ZW5lcigpe3RoaXMuZG9jdW1lbnRTY3JvbGxlciYmKHRoaXMuc2Ny''@;'; put 'put ''b2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksZGVsZXRlIHRoaXMuZG9jdW1lbnRTY3JvbGxlcil9dGVzdEZvclNtYXJ0UG9wb3ZlckNvbnRlbnRDb250YWluZXIoaCl7bGV0IHY9aC50YXJnZXQ7Zm9yKDt2LmNsYXNzTGlzdCYmImJvZHkiIT09di5wYXJlbnRFbGVtZW50LmxvY2FsTmFt''@;'; put 'put ''ZTspdj12LnBhcmVudEVsZW1lbnQ7cmV0dXJuISF2LmNsYXNzTGlzdCYmIXYuY2xhc3NMaXN0LmNvbnRhaW5zKCJjbHItcG9wb3Zlci1jb250ZW50Iil9YWRkQ2xpY2tMaXN0ZW5lcigpe3RoaXMub3V0c2lkZUNsaWNrQ2xvc2UmJih0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcj10aGlzLnJl''@;'; put 'put ''bmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCJjbGljayIsaD0+e2g9PT10aGlzLmlnbm9yZWRFdmVudD9kZWxldGUgdGhpcy5pZ25vcmVkRXZlbnQ6KHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuPSExLGgudGFyZ2V0LmZvY3VzKCkpfSkpfXJlbW92ZUNsaWNrTGlzdGVuZXIoKXt0aGlz''@;'; put 'put ''Lm91dHNpZGVDbGlja0Nsb3NlJiYoZGVsZXRlIHRoaXMuaWdub3JlZEV2ZW50LHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyJiYodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKSxkZWxldGUgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpKX1hZGRFc2NhcGVMaXN0ZW5lcigpe3RoaXMu''@;'; put 'put ''ZXNjYXBlTGlzdGVuZXI9dGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwia2V5ZG93bi5lc2NhcGUiLCgpPT57dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ITEsdGhpcy5zZXRBbmNob3JGb2N1cygpfSl9cmVtb3ZlRXNjYXBlTGlzdGVuZXIoKXt0aGlzLmVzY2FwZUxpc3Rl''@;'; put 'put ''bmVyJiYodGhpcy5lc2NhcGVMaXN0ZW5lcigpLGRlbGV0ZSB0aGlzLmVzY2FwZUxpc3RlbmVyKX1zZXQgYW5jaG9yQnV0dG9uUmVmKGgpe3RoaXMuX2FuY2hvckJ1dHRvblJlZj1ofWdldCBhbmNob3JCdXR0b25SZWYoKXtyZXR1cm4gdGhpcy5fYW5jaG9yQnV0dG9uUmVmfXNldCBjbG9zZUJ1''@;'; put 'put ''dHRvblJlZihoKXt0aGlzLl9jbG9zZUJ1dHRvblJlZj1ofWdldCBjbG9zZUJ1dHRvblJlZigpe3JldHVybiB0aGlzLl9jbG9zZUJ1dHRvblJlZn1zZXRDbG9zZUZvY3VzKCl7dGhpcy5fY2xvc2VCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfXNldEFuY2hvckZvY3VzKCl7dGhpcy5h''@;'; put 'put ''bmNob3JCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfXNldCBjb250ZW50UmVmKGgpe3RoaXMuX2NvbnRlbnRSZWY9aH1nZXQgY29udGVudFJlZigpe3JldHVybiB0aGlzLl9jb250ZW50UmVmfXJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCl7dGhpcy5yZW1vdmVTY3JvbGxMaXN0ZW5l''@;'; put 'put ''cigpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lcigpLHRoaXMucmVtb3ZlRXNjYXBlTGlzdGVuZXIoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSksdGhpcy5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpfX1yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShEYSksRWkoRXQpLEVpKHVzKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksdXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe2guYW5jaG9yQnV0dG9uUmVmPXZ9''@;'; put 'put ''fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFp0KSxLdChfbykpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyQW5jaG9yIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7''@;'; put 'put ''MiZoJiZIaSgiY2xyLWFuY2hvciIsITApfX0pLGR9KSgpLHd0PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuZWxlbWVudFJlZj1oLHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlPXYsdGhpcy5zbWFydE9wZW5TZXJ2aWNlPXksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMu''@;'; put 'put ''Y2xvc2VDaGFuZ2U9bmV3IGZuLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHkub3BlbkNoYW5nZS5waXBlKG0yKEM9PiFDKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5jbG9zZUNoYW5nZS5uZXh0KCl9KSl9aGFuZGxlQ2xpY2soaCl7dGhpcy5zbWFydE9wZW5TZXJ2aWNlLnRvZ2dsZVdpdGhFdmVu''@;'; put 'put ''dChoKSx0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5zZXRBbmNob3JGb2N1cygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc21hcnRFdmVudHNTZXJ2aWNlLmNsb3NlQnV0dG9uUmVmPXRoaXMuZWxlbWVudFJlZix0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5zZXRDbG9zZUZvY3VzKCl9bmdPbkRl''@;'; put 'put ''c3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfbyksS3QoWnQpLEt0KEV0KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIs''@;'; put 'put ''ImNsclBvcG92ZXJDbG9zZUJ1dHRvbiIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5oYW5kbGVDbGljayhDKX0pLDImaCYmSGkoImNsci1zbWFydC1jbG9zZS1idXR0b24iLCEwKX0sb3V0cHV0''@;'; put 'put ''czp7Y2xvc2VDaGFuZ2U6ImNsclBvcG92ZXJPbkNsb3NlQ2hhbmdlIn19KSxkfSkoKTt2YXIgcm49KCgpPT4oZnVuY3Rpb24oZCl7ZFtkLlZFUlRJQ0FMPTBdPSJWRVJUSUNBTCIsZFtkLkhPUklaT05UQUw9MV09IkhPUklaT05UQUwifShybnx8KHJuPXt9KSkscm4pKSgpLHluPSgoKT0+KGZ1''@;'; put 'put ''bmN0aW9uKGQpe2RbZC5TVEFSVD0wXT0iU1RBUlQiLGRbZC5DRU5URVI9LjVdPSJDRU5URVIiLGRbZC5FTkQ9MV09IkVORCJ9KHlufHwoeW49e30pKSx5bikpKCksRm49KCgpPT4oZnVuY3Rpb24oZCl7ZFtkLkJPVFRPTT0wXT0iQk9UVE9NIixkW2QuTEVGVD0xXT0iTEVGVCIsZFtkLlJJR0hU''@;'; put 'put ''PTJdPSJSSUdIVCIsZFtkLlRPUD0zXT0iVE9QIn0oRm58fChGbj17fSkpLEZuKSkoKTtjb25zdCBscj1kPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZCkse3NpZGU6LTEqZC5zaWRlfSksa3I9KGQsZyk9Pntjb25zdCBoPWQuY29udGVudCsoZz8uNTotLjUpO3JldHVybiBoPDB8''@;'; put 'put ''fGg+MT9kOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSx7Y29udGVudDpofSl9O2Z1bmN0aW9uIGNyKGQsZyxoKXtyZXR1cm4gdj0+ZyhkKHYpLGgpfWZ1bmN0aW9uIENyKGQsZyxoKXtsZXQgdj1nLmxlZnQseT1nLnRvcDtzd2l0Y2goZC5heGlzK2Quc2lkZSl7Y2FzZS0xOnYr''@;'; put 'put ''PXFyKGQsZyxoKSx5LT1oLmhlaWdodDticmVhaztjYXNlIDE6dis9cXIoZCxnLGgpLHkrPWcuaGVpZ2h0O2JyZWFrO2Nhc2UgMDp2LT1oLndpZHRoLHkrPUxyKGQsZyxoKTticmVhaztjYXNlIDI6dis9Zy53aWR0aCx5Kz1McihkLGcsaCl9cmV0dXJue3hPZmZzZXQ6dix5T2Zmc2V0Onl9fWZ1''@;'; put 'put ''bmN0aW9uIHFyKGQsZyxoKXtsZXQgdj0wO3N3aXRjaChkLmFuY2hvcil7Y2FzZSB5bi5TVEFSVDpicmVhaztjYXNlIHluLkNFTlRFUjp2Kz1nLndpZHRoLzI7YnJlYWs7Y2FzZSB5bi5FTkQ6dis9Zy53aWR0aH1zd2l0Y2goZC5jb250ZW50KXtjYXNlIHluLlNUQVJUOmJyZWFrO2Nhc2UgeW4u''@;'; put 'put ''Q0VOVEVSOnYtPWgud2lkdGgvMjticmVhaztjYXNlIHluLkVORDp2LT1oLndpZHRofXJldHVybiB2fWZ1bmN0aW9uIExyKGQsZyxoKXtsZXQgdj0wO3N3aXRjaChkLmFuY2hvcil7Y2FzZSB5bi5TVEFSVDpicmVhaztjYXNlIHluLkNFTlRFUjp2Kz1nLmhlaWdodC8yO2JyZWFrO2Nhc2UgeW4u''@;'; put 'put ''RU5EOnYrPWcuaGVpZ2h0fXN3aXRjaChkLmNvbnRlbnQpe2Nhc2UgeW4uU1RBUlQ6YnJlYWs7Y2FzZSB5bi5DRU5URVI6di09aC5oZWlnaHQvMjticmVhaztjYXNlIHluLkVORDp2LT1oLmhlaWdodH1yZXR1cm4gdn1sZXQgRmk9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMu''@;'; put 'put ''ZXZlbnRTZXJ2aWNlPWgsdGhpcy5wbGF0Zm9ybUlkPXYsdGhpcy5fc2hvdWxkUmVhbGlnbj1uZXcgJGUsdGhpcy5zaG91bGRSZWFsaWduPXRoaXMuX3Nob3VsZFJlYWxpZ24uYXNPYnNlcnZhYmxlKCl9cmVhbGlnbigpe3RoaXMuX3Nob3VsZFJlYWxpZ24ubmV4dCgpfXNldCBwb3NpdGlvbiho''@;'; put 'put ''KXt0aGlzLl9wb3NpdGlvbj1ofWdldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn1hbGlnbkNvbnRlbnQoaCl7aWYoIWFsKHRoaXMucGxhdGZvcm1JZCkpcmV0dXJue3hPZmZzZXQ6MCx5T2Zmc2V0OjB9O3RoaXMuY3VycmVudEFuY2hvckNvb3Jkcz10aGlzLmV2ZW50U2Vydmlj''@;'; put 'put ''ZS5hbmNob3JCdXR0b25SZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzPWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5jb250ZW50T2Zmc2V0cz1Dcih0aGlzLnBvc2l0aW9uLHRoaXMuY3VycmVudEFuY2hvckNv''@;'; put 'put ''b3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTtjb25zdCB2PWZ1bmN0aW9uIGEwKGQsZyl7Y29uc3QgaD1bXSx2X2JvdHRvbT1kLnlPZmZzZXQrZy5oZWlnaHQsdl9sZWZ0PWQueE9mZnNldCx2X3JpZ2h0PWQueE9mZnNldCtnLndpZHRoO3JldHVybiBkLnlPZmZzZXQ+PTB8fGgucHVz''@;'; put 'put ''aChGbi5UT1ApLHZfbGVmdD49MHx8aC5wdXNoKEZuLkxFRlQpLHZfYm90dG9tPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KXx8aC5wdXNoKEZuLkJPVFRPTSksdl9yaWdodDw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5k''@;'; put 'put ''b2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpfHxoLnB1c2goRm4uUklHSFQpLGh9KHRoaXMuY29udGVudE9mZnNldHMsdGhpcy5jdXJyZW50Q29udGVudENvb3JkcykseT12LnJlZHVjZSgoQyxJKT0+QytJLDApO3JldHVybiAxPT09di5sZW5ndGgmJnRoaXMucG9zaXRpb24uYXhpcz09PXJu''@;'; put 'put ''LlZFUlRJQ0FMP3RoaXMuaGFuZGxlVmVydGljYWxBeGlzT25lVmlvbGF0aW9uKHkpOjE9PT12Lmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09cm4uSE9SSVpPTlRBTD90aGlzLmhhbmRsZUhvcml6b250YWxBeGlzT25lVmlvbGF0aW9uKHkpOjI9PT12Lmxlbmd0aCYmdGhpcy5wb3NpdGlv''@;'; put 'put ''bi5heGlzPT09cm4uVkVSVElDQUw/dGhpcy5oYW5kbGVWZXJ0aWNhbEF4aXNUd29WaW9sYXRpb25zKHkpOjI9PT12Lmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09cm4uSE9SSVpPTlRBTCYmdGhpcy5oYW5kbGVIb3Jpem9udGFsQXhpc1R3b1Zpb2xhdGlvbnMoeSksdGhpcy5jb250ZW50''@;'; put 'put ''T2Zmc2V0c31oYW5kbGVWZXJ0aWNhbEF4aXNPbmVWaW9sYXRpb24oaCl7c3dpdGNoKGgpe2Nhc2UgMDpjYXNlIDM6dGhpcy5jb250ZW50T2Zmc2V0cz1Dcihscih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWs7''@;'; put 'put ''Y2FzZSAxOnRoaXMuY29udGVudE9mZnNldHM9Q3IodGhpcy5wb3NpdGlvbix0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3JkcyksdGhpcy5jb250ZW50T2Zmc2V0cy54T2Zmc2V0PDAmJih0aGlzLmNvbnRlbnRPZmZzZXRzLnhPZmZzZXQ9MTApO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjp0aGlzLmNvbnRlbnRPZmZzZXRzPUNyKGtyKHRoaXMucG9zaXRpb24sITApLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKX19aGFuZGxlVmVydGljYWxBeGlzVHdvVmlvbGF0aW9ucyhoKXtzd2l0Y2goaCl7Y2FzZSA1Ontjb25zdCB2''@;'; put 'put ''PWNyKGxyLGtyLCEwKTt0aGlzLmNvbnRlbnRPZmZzZXRzPUNyKHYodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfWNhc2UgNDp7Y29uc3Qgdj1jcihscixrciwhMSk7dGhpcy5jb250ZW50T2Zmc2V0cz1Dcih2''@;'; put 'put ''KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha31jYXNlIDM6ZGVmYXVsdDpicmVhaztjYXNlIDI6e2NvbnN0IHY9Y3IobHIsa3IsITApO3RoaXMuY29udGVudE9mZnNldHM9Q3Iodih0aGlzLnBvc2l0aW9uKSx0''@;'; put 'put ''aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSAxOntjb25zdCB2PWNyKGxyLGtyLCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPUNyKHYodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENv''@;'; put 'put ''bnRlbnRDb29yZHMpO2JyZWFrfX19aGFuZGxlSG9yaXpvbnRhbEF4aXNPbmVWaW9sYXRpb24oaCl7c3dpdGNoKGgpe2Nhc2UgMTpjYXNlIDI6dGhpcy5jb250ZW50T2Zmc2V0cz1Dcihscih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVu''@;'; put 'put ''dENvb3Jkcyk7YnJlYWs7Y2FzZSAwOnRoaXMuY29udGVudE9mZnNldHM9Q3Ioa3IodGhpcy5wb3NpdGlvbiwhMCksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrO2Nhc2UgMzp0aGlzLmNvbnRlbnRPZmZzZXRzPUNyKGtyKHRoaXMucG9z''@;'; put 'put ''aXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKX19aGFuZGxlSG9yaXpvbnRhbEF4aXNUd29WaW9sYXRpb25zKGgpe3N3aXRjaChoKXtjYXNlIDU6Y2FzZSA0Ontjb25zdCB2PWNyKGxyLGtyLCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPUNy''@;'; put 'put ''KHYodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfWNhc2UgMzpkZWZhdWx0OmJyZWFrO2Nhc2UgMjpjYXNlIDE6e2NvbnN0IHY9Y3IobHIsa3IsITApO3RoaXMuY29udGVudE9mZnNldHM9Q3Iodih0aGlzLnBv''@;'; put 'put ''c2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9fX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoWnQpLEVpKEUyKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5''@;'; put 'put ''OmQuXHUwMjc1ZmFjfSksZH0pKCksUGk9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksaixjZSl7dGhpcy5kb2N1bWVudD1oLHRoaXMuY29udGFpbmVyPXYsdGhpcy50ZW1wbGF0ZT15LHRoaXMucmVuZGVyZXI9Qyx0aGlzLnNtYXJ0UG9zaXRpb25TZXJ2aWNlPUksdGhpcy5z''@;'; put 'put ''bWFydEV2ZW50c1NlcnZpY2U9aix0aGlzLnNtYXJ0T3BlblNlcnZpY2U9Y2UsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPW51bGwsdGhpcy5zaG91bGRSZWFsaWduPSExLHRoaXMuY2hlY2tDb2xsZWN0b3I9bmV3IGZufXNldCBvcGVuKGgpe3RoaXMu''@;'; put 'put ''c21hcnRPcGVuU2VydmljZS5vcGVuPSEhaH1zZXQgY29udGVudEF0KGgpe3RoaXMuc21hcnRQb3NpdGlvblNlcnZpY2UucG9zaXRpb249aH1zZXQgb3V0c2lkZUNsaWNrQ2xvc2UoaCl7dGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uub3V0c2lkZUNsaWNrQ2xvc2U9ISFofXNldCBzY3JvbGxUb0Ns''@;'; put 'put ''b3NlKGgpe3RoaXMuc21hcnRFdmVudHNTZXJ2aWNlLnNjcm9sbFRvQ2xvc2U9ISFofW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57aD90aGlzLmFkZENvbnRlbnQoKTp0aGlzLnJl''@;'; put 'put ''bW92ZUNvbnRlbnQoKX0pLHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2Uuc2hvdWxkUmVhbGlnbi5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNob3VsZFJlYWxpZ249ITAsdGhpcy52aWV3JiZ0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sIm9wYWNpdHkiLCIwIil9''@;'; put 'put ''KSx0aGlzLmNoZWNrQ29sbGVjdG9yLnBpcGUoUmsoMCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuYWxpZ25Db250ZW50KCksdGhpcy5zaG91bGRSZWFsaWduPSExLHRoaXMudmlldyYmdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCJvcGFjaXR5IiwiMSIpfSkp''@;'; put 'put ''fW5nT25EZXN0cm95KCl7dGhpcy5yZW1vdmVDb250ZW50KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1yZW1vdmVDb250ZW50KCl7IXRoaXMudmlld3x8KHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuJiYodGhpcy5yZW1vdmVDbGlja0xpc3RlbmVy''@;'; put 'put ''Rm4oKSx0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbj1udWxsKSx0aGlzLnZpZXcucm9vdE5vZGVzLmZvckVhY2goaD0+dGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksaCkpLHRoaXMuY29udGFpbmVyLmNsZWFyKCksZGVsZXRlIHRoaXMudmlldyl9YWRkQ29u''@;'; put 'put ''dGVudCgpe3RoaXMudmlldz10aGlzLmNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7Y29uc3RbaF09dGhpcy52aWV3LnJvb3ROb2Rlczt0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5jb250ZW50UmVmPWgsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhoLCJjbHItcG9w''@;'; put 'put ''b3Zlci1jb250ZW50IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZShoLCJ0b3AiLCIwcHgiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGgsImxlZnQiLCIwcHgiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGgsIm9wYWNpdHkiLCIwIiksdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm49dGhpcy5y''@;'; put 'put ''ZW5kZXJlci5saXN0ZW4oaCwiY2xpY2siLHY9Pnt0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3BlbkV2ZW50PXZ9KSx0aGlzLnZpZXcucm9vdE5vZGVzLmZvckVhY2godj0+e3RoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LHYpfSksdGhpcy5zaG91bGRSZWFsaWdu''@;'; put 'put ''PSEwfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuJiZ0aGlzLnZpZXcmJnRoaXMuc2hvdWxkUmVhbGlnbiYmdGhpcy5jaGVja0NvbGxlY3Rvci5lbWl0KCl9YWxpZ25Db250ZW50KCl7aWYoIXRoaXMudmlldylyZXR1cm47Y29uc3QgaD10aGlzLnNt''@;'; put 'put ''YXJ0UG9zaXRpb25TZXJ2aWNlLmFsaWduQ29udGVudCh0aGlzLnZpZXcucm9vdE5vZGVzWzBdKTt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sInRvcCIsYCR7aC55T2Zmc2V0fXB4YCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5v''@;'; put 'put ''ZGVzWzBdLCJsZWZ0IixgJHtoLnhPZmZzZXR9cHhgKSx0aGlzLnNtYXJ0T3BlblNlcnZpY2UucG9wb3ZlckFsaWduZWRFbWl0KHRoaXMudmlldy5yb290Tm9kZXNbMF0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh1cyksS3QoTXIpLEt0KFZu''@;'; put 'put ''KSxLdChEYSksS3QoRmkpLEt0KFp0KSxLdChFdCkpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyQ29udGVudCIsIiJdXSxpbnB1dHM6e29wZW46WyJjbHJQb3BvdmVyQ29udGVudCIsIm9wZW4iXSxjb250ZW50QXQ6WyJjbHJQb3BvdmVyQ29udGVu''@;'; put 'put ''dEF0IiwiY29udGVudEF0Il0sb3V0c2lkZUNsaWNrQ2xvc2U6WyJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJvdXRzaWRlQ2xpY2tDbG9zZSJdLHNjcm9sbFRvQ2xvc2U6WyJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiLCJzY3JvbGxUb0Nsb3NlIl19fSks''@;'; put 'put ''ZH0pKCksSG89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnNtYXJ0T3BlblNlcnZpY2U9aCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5vcGVuQ2xvc2VDaGFuZ2U9bmV3IGZuLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuQ2hh''@;'; put 'put ''bmdlLnN1YnNjcmliZSh2PT57dGhpcy5vcGVuQ2xvc2VDaGFuZ2UubmV4dCh2KX0pKX1oYW5kbGVDbGljayhoKXt0aGlzLnNtYXJ0T3BlblNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGgpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgp''@;'; put 'put ''KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRXQpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvbiIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiho''@;'; put 'put ''LHYpezEmaCYmWm4oImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5oYW5kbGVDbGljayhDKX0pLDImaCYmSGkoImNsci1zbWFydC1vcGVuLWNsb3NlIiwhMCl9LG91dHB1dHM6e29wZW5DbG9zZUNoYW5nZToiY2xyUG9wb3Zlck9wZW5DbG9zZUNoYW5nZSJ9fSksZH0pKCksbG89KCgpPT57''@;'; put 'put ''Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW11dfSksZH0pKCk7dmFyIENpPSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5CRUZPUkU9LTFdPSJCRUZP''@;'; put 'put ''UkUiLGRbZC5BRlRFUj0xXT0iQUZURVIifShDaXx8KENpPXt9KSksQ2kpKSgpO2NsYXNzIEhhe31IYVsidG9wLXJpZ2h0Il09e2F4aXM6cm4uVkVSVElDQUwsc2lkZTpDaS5CRUZPUkUsYW5jaG9yOnluLkVORCxjb250ZW50OnluLkVORH0sSGFbInRvcC1sZWZ0Il09e2F4aXM6cm4uVkVSVElD''@;'; put 'put ''QUwsc2lkZTpDaS5CRUZPUkUsYW5jaG9yOnluLlNUQVJULGNvbnRlbnQ6eW4uU1RBUlR9LEhhWyJib3R0b20tcmlnaHQiXT17YXhpczpybi5WRVJUSUNBTCxzaWRlOkNpLkFGVEVSLGFuY2hvcjp5bi5FTkQsY29udGVudDp5bi5FTkR9LEhhWyJib3R0b20tbGVmdCJdPXtheGlzOnJuLlZFUlRJ''@;'; put 'put ''Q0FMLHNpZGU6Q2kuQUZURVIsYW5jaG9yOnluLlNUQVJULGNvbnRlbnQ6eW4uU1RBUlR9LEhhWyJyaWdodC10b3AiXT17YXhpczpybi5IT1JJWk9OVEFMLHNpZGU6Q2kuQUZURVIsYW5jaG9yOnluLkNFTlRFUixjb250ZW50OnluLkVORH0sSGFbInJpZ2h0LWJvdHRvbSJdPXtheGlzOnJuLkhP''@;'; put 'put ''UklaT05UQUwsc2lkZTpDaS5BRlRFUixhbmNob3I6eW4uU1RBUlQsY29udGVudDp5bi5TVEFSVH0sSGFbImxlZnQtdG9wIl09e2F4aXM6cm4uSE9SSVpPTlRBTCxzaWRlOkNpLkJFRk9SRSxhbmNob3I6eW4uQ0VOVEVSLGNvbnRlbnQ6eW4uRU5EfSxIYVsibGVmdC1ib3R0b20iXT17YXhpczpy''@;'; put 'put ''bi5IT1JJWk9OVEFMLHNpZGU6Q2kuQkVGT1JFLGFuY2hvcjp5bi5TVEFSVCxjb250ZW50OnluLlNUQVJUfTtsZXQgQjA9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3''@;'; put 'put ''NWluaj1tMCh7aW1wb3J0czpbW2FhLFpzLGxvXV19KSxkfSkoKSxXMj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5lbD1oLHRoaXMucmVuZGVyZXI9dix0aGlzLmJ1dHRvblN0YXRlPXBhLHRoaXMuc3RhdGU9cGEuREVGQVVMVCx0aGlzLmNsckxvYWRpbmdDaGFuZ2U9bmV3''@;'; put 'put ''IGZuKCExKX1sb2FkaW5nU3RhdGVDaGFuZ2UoaCl7aWYoaCE9PXRoaXMuc3RhdGUpe3N3aXRjaCh0aGlzLnN0YXRlPWgsaCl7Y2FzZSBwYS5ERUZBVUxUOnRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIpLHRoaXMucmVuZGVyZXIucmVtb3Zl''@;'; put 'put ''U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2Zvcm0iKSx0aGlzLmRpc2FibGVkfHx0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIik7YnJlYWs7Y2FzZSBwYS5MT0FESU5HOnRoaXMuc2V0RXhwbGljaXRCdXR0b25X''@;'; put 'put ''aWR0aCgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGV6KDApIiksdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsIiIpO2JyZWFrO2Nhc2UgcGEuU1VDQ0VT''@;'; put 'put ''Uzp0aGlzLnNldEV4cGxpY2l0QnV0dG9uV2lkdGgoKTticmVhaztjYXNlIHBhLkVSUk9SOnRoaXMubG9hZGluZ1N0YXRlQ2hhbmdlKHBhLkRFRkFVTFQpfXRoaXMuY2xyTG9hZGluZ0NoYW5nZS5lbWl0KGgpfX1zZXRFeHBsaWNpdEJ1dHRvbldpZHRoKCl7aWYodGhpcy5lbC5uYXRpdmVFbGVt''@;'; put 'put ''ZW50JiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXtjb25zdCBoPXRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PU1hdGgubWF4KDQyLGgud2lkdGgpO3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVF''@;'; put 'put ''bGVtZW50LCJ3aWR0aCIsYCR7dn1weGApfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoX28pLEt0KERhKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImJ1dHRvbiIsImNsckxvYWRpbmciLCIiXV0saG9zdFZhcnM6MSxo''@;'; put 'put ''b3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkdpKCJkaXNhYmxlZCIsdi5kaXNhYmxlZD8iIjpudWxsKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOntjbHJMb2FkaW5nQ2hhbmdlOiJjbHJMb2FkaW5nQ2hhbmdlIn0sZmVhdHVyZXM6W2dvKFt7cHJvdmlkZTp5''@;'; put 'put ''Zyx1c2VFeGlzdGluZzpkfV0pXSxhdHRyczpTTCxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLWlubGluZSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxp''@;'; put 'put ''bmUiLCJzcGlubmVyLWNoZWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxMMCgwLDApLG5uKDEsem8sMiwxLCJzcGFuIiwxKSxubigyLFJ1ZSwyLDEsInNwYW4iLDEpLG5uKDMsQnVlLDIsMSwic3BhbiIsMSksTzAoKSksMiZoJiYoeHQoIm5nU3dpdGNoIix2LnN0YXRl''@;'; put 'put ''KSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIix2LmJ1dHRvblN0YXRlLkxPQURJTkcpLHN0KDEpLHh0KCJuZ1N3aXRjaENhc2UiLHYuYnV0dG9uU3RhdGUuU1VDQ0VTUyksc3QoMSkseHQoIm5nU3dpdGNoQ2FzZSIsdi5idXR0b25TdGF0ZS5ERUZBVUxUKSl9LGRlcGVuZGVuY2llczpbWmQsVjZd''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W0pjKCJkZWZhdWx0QnV0dG9uIixbYnUoIjplbnRlciIsW3hsKHtvcGFjaXR5OjB9KSxmYygiMjAwbXMgMTAwbXMgZWFzZS1pbiIseGwoe29wYWNpdHk6MX0pKV0pLGJ1KCI6bGVhdmUiLFt4bCh7b3BhY2l0eTowfSldKV0pLEpjKCJz''@;'; put 'put ''cGlubmVyIixbYnUoIjplbnRlciIsW3hsKHtvcGFjaXR5OjB9KSxmYygiMjAwbXMgMTAwbXMgZWFzZS1pbiIseGwoe29wYWNpdHk6MX0pKV0pLGJ1KCI6bGVhdmUiLFt4bCh7b3BhY2l0eToxfSksZmMoIjEwMG1zIGVhc2Utb3V0Iix4bCh7b3BhY2l0eTowfSkpXSldKSxKYygidmFsaWRhdGVk''@;'; put 'put ''IixbYnUoIjplbnRlciIsW2ZjKCI2MDBtcyIsdzJlKFt4bCh7dHJhbnNmb3JtOiJzY2FsZSgwLDApIixvZmZzZXQ6MH0pLHhsKHtvcGFjaXR5OjEsb2Zmc2V0Oi4yfSkseGwoe3RyYW5zZm9ybToic2NhbGUoMS4yLDEuMikiLG9mZnNldDouNH0pLHhsKHt0cmFuc2Zvcm06InNjYWxlKC45LC45''@;'; put 'put ''KSIsb2Zmc2V0Oi42fSkseGwoe3RyYW5zZm9ybToic2NhbGUoMSwxKSIsb2Zmc2V0OjF9KV0pKV0pLGJ1KCI6bGVhdmUiLFt4bCh7b3BhY2l0eToxfSksZmMoIjEwMG1zIGVhc2Utb3V0Iix4bCh7b3BhY2l0eTowfSkpXSldKV19fSksZH0pKCksZGg9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXV19KSxkfSkoKSxsbD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7ZHMuYWRkSWNvbnMoZ1gpfX1yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltkaCxCMF19KSxkfSkoKSxUMj0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sibmctY29tcG9uZW50Il1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7fSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxVbD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHt9KSxkfSkoKSxwaD0wLHNsPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pZD0iY2xyLWZvcm0tY29udHJvbC0iKyArK3BoLHRoaXMuX2lkQ2hhbmdlPW5ldyBTbCh0''@;'; put 'put ''aGlzLl9pZCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZChoKXt0aGlzLl9pZD1oLHRoaXMuX2lkQ2hhbmdlLm5leHQoaCl9Z2V0IGlkQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2lkQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxBUz0wLEFwPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pZD0iY2xyLWZvcm0tY29udGFpbmVyLSIrICsrQVMsdGhpcy5faWRDaGFuZ2U9bmV3IFNsKHRo''@;'; put 'put ''aXMuX2lkKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKGgpe3RoaXMuX2lkPWgsdGhpcy5faWRDaGFuZ2UubmV4dChoKX1nZXQgaWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5faWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2xldCBtdz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5jb250cm9sSWRTZXJ2aWNlPWgsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9dix0aGlzLmNvbnRy''@;'; put 'put ''b2xJZFN1ZmZpeD0iYWJzdHJhY3QifWdldCBpZCgpe3JldHVybiB0aGlzLmNvbnRhaW5lcklkU2VydmljZT9gJHt0aGlzLmNvbnRhaW5lcklkU2VydmljZS5pZH0tJHt0aGlzLmNvbnRyb2xJZFN1ZmZpeH1gOnRoaXMuY29udHJvbElkU2VydmljZT9gJHt0aGlzLmNvbnRyb2xJZFNlcnZpY2Uu''@;'; put 'put ''aWR9LSR7dGhpcy5jb250cm9sSWRTdWZmaXh9YDpudWxsfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChzbCw4KSxLdChBcCw4KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmR9KSxkfSkoKSxsND0oKCk9PntjbGFzcyBkIGV4dGVuZHMgbXd7Y29u''@;'; put 'put ''c3RydWN0b3IoaCx2KXtzdXBlcihoLHYpLHRoaXMuY29udHJvbElkU2VydmljZT1oLHRoaXMuY29udGFpbmVySWRTZXJ2aWNlPXYsdGhpcy5jb250cm9sSWRTdWZmaXg9ImVycm9yIn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoc2wsOCksS3Qo''@;'; put 'put ''QXAsOCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY29udHJvbC1lcnJvciJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJpZCIsdi5pZCksSGkoImNsci1zdWJ0ZXh0IiwhMCkpfSxmZWF0dXJlczpbUm9dLG5nQ29u''@;'; put 'put ''dGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSx5Uz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgbXd7Y29uc3RydWN0b3IoaCx2KXtzdXBlcihoLHYpLHRoaXMuY29udHJv''@;'; put 'put ''bElkU2VydmljZT1oLHRoaXMuY29udGFpbmVySWRTZXJ2aWNlPXYsdGhpcy5jb250cm9sSWRTdWZmaXg9ImhlbHBlciJ9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHNsLDgpLEt0KEFwLDgpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koImlkIix2LmlkKSxIaSgiY2xyLXN1YnRleHQiLCEwKSl9LGZlYXR1cmVzOltSb10sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRl''@;'; put 'put ''bXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFN1PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9jb250cm9sQ2hhbmdlcz1uZXcgJGUsdGhpcy5faGVscGVycz1uZXcgJGV9Z2V0IGNvbnRyb2xDaGFuZ2VzKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2NvbnRyb2xDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfXNldENvbnRyb2woaCl7dGhpcy5fY29udHJvbENoYW5nZXMubmV4dChoKX1nZXQgaGVscGVyc0NoYW5nZSgpe3JldHVybiB0aGlzLl9oZWxwZXJzLmFzT2JzZXJ2YWJsZSgpfXNldEhlbHBlcnMoaCl7dGhpcy5faGVs''@;'; put 'put ''cGVycy5uZXh0KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTt2YXIgTzE9KCgpPT4oZnVuY3Rpb24oZCl7ZC5OT05FPSJOT05FIixkLlZBTElEPSJW''@;'; put 'put ''QUxJRCIsZC5JTlZBTElEPSJJTlZBTElEIn0oTzF8fChPMT17fSkpLE8xKSkoKTtsZXQgTGY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLm5nQ29udHJvbFNlcnZpY2U9aCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5fc3RhdHVzQ2hhbmdlcz1uZXcgU2woTzEuTk9ORSks''@;'; put 'put ''dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLmNvbnRyb2xDaGFuZ2VzLnN1YnNjcmliZSh2PT57diYmKHRoaXMuY29udHJvbD12LHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMu''@;'; put 'put ''dHJpZ2dlclN0YXR1c0NoYW5nZSgpfSkpKX0pKX1nZXQgc3RhdHVzQ2hhbmdlcygpe3JldHVybiB0aGlzLl9zdGF0dXNDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfXRyaWdnZXJTdGF0dXNDaGFuZ2UoKXtpZih0aGlzLmNvbnRyb2wpe2NvbnN0IGg9TzFbdGhpcy5jb250cm9sLnN0YXR1c107dGhp''@;'; put 'put ''cy5fc3RhdHVzQ2hhbmdlcy5uZXh0KHRoaXMuY29udHJvbC50b3VjaGVkJiZbIlZBTElEIiwiSU5WQUxJRCJdLmluY2x1ZGVzKGgpP2g6TzEuTk9ORSl9fW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoU3UpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTt2YXIgQmM9KCgpPT4oZnVuY3Rpb24oZCl7ZC5WRVJUSUNBTD0idmVydGljYWwiLGQuSE9SSVpPTlRBTD0iaG9yaXpvbnRh''@;'; put 'put ''bCIsZC5DT01QQUNUPSJjb21wYWN0In0oQmN8fChCYz17fSkpLEJjKSkoKTtsZXQgcjM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMubWluTGFiZWxTaXplPTEsdGhpcy5tYXhMYWJlbFNpemU9MTIsdGhpcy5sYXlvdXQ9QmMuSE9SSVpPTlRBTCx0aGlzLmxheW91dFZhbHVlcz1P''@;'; put 'put ''YmplY3Qua2V5cyhCYykubWFwKGg9PkJjW2hdKSx0aGlzLl9sYWJlbFNpemU9Mn1zZXQgbGFiZWxTaXplKGgpe3RoaXMubGFiZWxTaXplSXNWYWxpZChoKSYmKHRoaXMuX2xhYmVsU2l6ZT1oKX1nZXQgbGFiZWxTaXplKCl7cmV0dXJuIHRoaXMuX2xhYmVsU2l6ZX1pc1ZlcnRpY2FsKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMubGF5b3V0PT09QmMuVkVSVElDQUx9aXNIb3Jpem9udGFsKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09QmMuSE9SSVpPTlRBTH1pc0NvbXBhY3QoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT1CYy5DT01QQUNUfWdldCBsYXlvdXRDbGFzcygpe3JldHVybmBjbHItZm9ybS0ke3RoaXMu''@;'; put 'put ''bGF5b3V0fWB9aXNWYWxpZChoKXtyZXR1cm4gdGhpcy5sYXlvdXRWYWx1ZXMuaW5kZXhPZihoKT4tMX1sYWJlbFNpemVJc1ZhbGlkKGgpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGgpJiZoPj10aGlzLm1pbkxhYmVsU2l6ZSYmaDw9dGhpcy5tYXhMYWJlbFNpemV9fXJldHVybiBkLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGFzPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLmNvbnRyb2xJZFNlcnZpY2U9aCx0aGlzLmxheW91dFNl''@;'; put 'put ''cnZpY2U9dix0aGlzLm5nQ29udHJvbFNlcnZpY2U9eSx0aGlzLnJlbmRlcmVyPUMsdGhpcy5lbD1JLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmVuYWJsZUdyaWQ9ITB9Z2V0IGxhYmVsVGV4dCgpe3JldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQmJnRoaXMuZWwubmF0aXZlRWxlbWVu''@;'; put 'put ''dC50ZXh0Q29udGVudH1uZ09uSW5pdCgpeyh0aGlzLmNvbnRyb2xJZFNlcnZpY2V8fHRoaXMubmdDb250cm9sU2VydmljZSkmJnRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJjbHItY29udHJvbC1sYWJlbCIpLHRoaXMuZW5hYmxlR3JpZCYmdGhpcy5sYXlv''@;'; put 'put ''dXRTZXJ2aWNlJiYhdGhpcy5sYXlvdXRTZXJ2aWNlLmlzVmVydGljYWwoKSYmdGhpcy5lbC5uYXRpdmVFbGVtZW50JiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLmluZGV4T2YoImNsci1jb2wiKTwwJiYodGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1l''@;'; put 'put ''bnQsImNsci1jb2wtMTIiKSx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxgY2xyLWNvbC1tZC0ke3RoaXMubGF5b3V0U2VydmljZS5sYWJlbFNpemV9YCkpLHRoaXMuY29udHJvbElkU2VydmljZSYmIXRoaXMuZm9yQXR0ciYmdGhpcy5zdWJzY3JpcHRpb25z''@;'; put 'put ''LnB1c2godGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkQ2hhbmdlLnN1YnNjcmliZShoPT50aGlzLmZvckF0dHI9aCkpfWRpc2FibGVHcmlkKCl7dGhpcy5lbmFibGVHcmlkPSExfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0''@;'; put 'put ''dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoc2wsOCksS3QocjMsOCksS3QoU3UsOCksS3QoRGEpLEt0KF9vKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbImxhYmVsIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9u''@;'; put 'put ''KGgsdil7MiZoJiZHaSgiZm9yIix2LmZvckF0dHIpfSxpbnB1dHM6e2ZvckF0dHI6WyJmb3IiLCJmb3JBdHRyIl19fSksZH0pKCksd1o9KCgpPT57Y2xhc3MgZCBleHRlbmRzIG13e2NvbnN0cnVjdG9yKGgsdil7c3VwZXIoaCx2KSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9aCx0aGlzLmNvbnRh''@;'; put 'put ''aW5lcklkU2VydmljZT12LHRoaXMuY29udHJvbElkU3VmZml4PSJzdWNjZXNzIn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoc2wsOCksS3QoQXAsOCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY29udHJvbC1z''@;'; put 'put ''dWNjZXNzIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koImlkIix2LmlkKSxIaSgiY2xyLXN1YnRleHQiLCEwKSl9LGZlYXR1cmVzOltSb10sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7''@;'; put 'put ''MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGkzPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5sYXlvdXRTZXJ2aWNlPWgsdGhpcy5jbGFzc05hbWU9IiJ9Y29udHJvbENsYXNzKGg9TzEuTk9ORSx2PSExLHk9IiIpe2NvbnN0IEM9W3RoaXMuY2xh''@;'; put 'put ''c3NOYW1lLHldO3N3aXRjaChoKXtjYXNlIE8xLlZBTElEOkMucHVzaCgiY2xyLXN1Y2Nlc3MiKTticmVhaztjYXNlIE8xLklOVkFMSUQ6Qy5wdXNoKCJjbHItZXJyb3IiKX1yZXR1cm4gdiYmdGhpcy5sYXlvdXRTZXJ2aWNlJiYtMT09PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoImNsci1jb2wi''@;'; put 'put ''KSYmQy5wdXNoKGBjbHItY29sLW1kLSR7dGhpcy5sYXlvdXRTZXJ2aWNlLm1heExhYmVsU2l6ZS10aGlzLmxheW91dFNlcnZpY2UubGFiZWxTaXplfSBjbHItY29sLTEyYCksQy5qb2luKCIgIikudHJpbSgpfWluaXRDb250cm9sQ2xhc3MoaCx2KXt2JiZ2LmNsYXNzTmFtZSYmKHRoaXMuY2xh''@;'; put 'put ''c3NOYW1lPXYuY2xhc3NOYW1lLHYuY2xhc3NOYW1lLnNwbGl0KCIgIikuZm9yRWFjaChDPT57Qy5zdGFydHNXaXRoKCJjbHItY29sIikmJmgucmVtb3ZlQ2xhc3ModixDKX0pKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkocjMsOCkpfSxkLlx1''@;'; put 'put ''MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHdnPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9aCx0aGlzLmxheW91dFNlcnZpY2U9dix0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9eSx0''@;'; put 'put ''aGlzLm5nQ29udHJvbFNlcnZpY2U9Qyx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5fZHluYW1pYz0hMSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShJPT57dGhpcy5zdGF0ZT1JLHRoaXMudXBkYXRl''@;'; put 'put ''SGVscGVycygpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5zdWJzY3JpYmUoST0+e3RoaXMuY29udHJvbD1JfSkpfWdldCBzaG93SGVscGVyKCl7cmV0dXJuISF0aGlzLmNvbnRyb2xIZWxwZXJDb21wb25lbnQmJighIXRo''@;'; put 'put ''aXMuY29udHJvbEhlbHBlckNvbXBvbmVudCYmdGhpcy5zdGF0ZT09PU8xLk5PTkV8fCF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50JiZ0aGlzLnN0YXRlPT09TzEuVkFMSUR8fCF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudCYmdGhpcy5zdGF0ZT09PU8xLklOVkFMSUQpfWdldCBzaG93''@;'; put 'put ''VmFsaWQoKXtyZXR1cm4gdGhpcy5zdGF0ZT09PU8xLlZBTElEJiYhIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnR9Z2V0IHNob3dJbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdGU9PT1PMS5JTlZBTElEJiYhIXRoaXMuY29udHJvbEVycm9yQ29tcG9uZW50fW5nQWZ0ZXJDb250ZW50SW5p''@;'; put 'put ''dCgpe3RoaXMudXBkYXRlSGVscGVycygpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1jb250cm9sQ2xhc3MoKXtyZXR1cm4gdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmNvbnRyb2xDbGFzcyh0aGlzLmNvbnRyb2xTdWNjZXNz''@;'; put 'put ''Q29tcG9uZW50fHx0aGlzLnN0YXRlIT09TzEuVkFMSUQ/dGhpcy5zdGF0ZTpPMS5OT05FLHRoaXMuYWRkR3JpZCgpKX1hZGRHcmlkKCl7cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZSYmIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCl9dXBkYXRlSGVscGVycygpe3RoaXMubmdDb250''@;'; put 'put ''cm9sU2VydmljZSYmdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLnNldEhlbHBlcnMoe3Nob3c6dGhpcy5zaG93SW52YWxpZHx8dGhpcy5zaG93SGVscGVyfHx0aGlzLnNob3dWYWxpZCxzaG93SW52YWxpZDp0aGlzLnNob3dJbnZhbGlkLHNob3dIZWxwZXI6dGhpcy5zaG93SGVscGVyLHNob3dWYWxp''@;'; put 'put ''ZDp0aGlzLnNob3dWYWxpZH0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChMZiksS3QocjMsOCksS3QoaTMpLEt0KFN1KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKFMw''@;'; put 'put ''KHksYXMsNSksUzAoeSx3Wiw1KSxTMCh5LGw0LDUpLFMwKHkseVMsNSkpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYubGFiZWw9Qy5maXJzdCksemkoQz1BaSgpKSYmKHYuY29udHJvbFN1Y2Nlc3NDb21wb25lbnQ9Qy5maXJzdCksemkoQz1BaSgpKSYmKHYuY29udHJvbEVycm9yQ29tcG9u''@;'; put 'put ''ZW50PUMuZmlyc3QpLHppKEM9QWkoKSkmJih2LmNvbnRyb2xIZWxwZXJDb21wb25lbnQ9Qy5maXJzdCl9fX0pLGR9KSgpO2NsYXNzIGFxe2NvbnN0cnVjdG9yKGcsaCx2PTApe2lmKHRoaXMuaW5qZWN0b3I9aC5pbmplY3RvciwhdGhpcy5pbmplY3Rvci5nZXQoZyxudWxsKSl7Y29uc3QgeT10''@;'; put 'put ''aGlzLmluamVjdG9yLmdldChfZCksQz10aGlzLmluamVjdG9yLmdldChfbyk7aC5jcmVhdGVDb21wb25lbnQoeS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShUMikpO2NvbnN0IEk9eS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShnKSxqPVtdO2pbdl09W0MubmF0aXZlRWxlbWVudF07Y29uc3Qg''@;'; put 'put ''Y2U9aC5jcmVhdGVDb21wb25lbnQoSSx2b2lkIDAsdm9pZCAwLGopO2gucmVtb3ZlKDApLGNlLmluc3RhbmNlLl9keW5hbWljPSEwLHRoaXMuaW5qZWN0b3I9Y2UuaW5qZWN0b3J9fWdldChnLGgpe3JldHVybiB0aGlzLmluamVjdG9yLmdldChnLGgpfX1sZXQgRWZlPSgoKT0+e2NsYXNzIGR7''@;'; put 'put ''Y29uc3RydWN0b3IoKXt0aGlzLl90b3VjaGVkPW5ldyAkZX1nZXQgdG91Y2hlZENoYW5nZSgpe3JldHVybiB0aGlzLl90b3VjaGVkLmFzT2JzZXJ2YWJsZSgpfW1hcmtBc1RvdWNoZWQoKXt0aGlzLl90b3VjaGVkLm5leHQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVy''@;'; put 'put ''biBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksUUw9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksail7dGhpcy52Y3I9aCx0aGlzLndyYXBwZXJUeXBlPXYsdGhpcy5uZ0NvbnRyb2w9Qyx0aGlzLnN1YnNj''@;'; put 'put ''cmlwdGlvbnM9W10sdGhpcy5pbmRleD0wLHRoaXMucmVuZGVyZXI9SSx0aGlzLmVsPWo7dHJ5e3RoaXMubmdDb250cm9sU2VydmljZT15LmdldChTdSksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9eS5nZXQoTGYpLHRoaXMuY29udHJvbENsYXNzU2VydmljZT15LmdldChpMyksdGhpcy5t''@;'; put 'put ''YXJrQ29udHJvbFNlcnZpY2U9eS5nZXQoRWZlKX1jYXRjaChjZSl7fXRoaXMuY29udHJvbENsYXNzU2VydmljZSYmdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmluaXRDb250cm9sQ2xhc3MoSSxqLm5hdGl2ZUVsZW1lbnQpLHRoaXMubWFya0NvbnRyb2xTZXJ2aWNlJiZ0aGlzLnN1YnNjcmlw''@;'; put 'put ''dGlvbnMucHVzaCh0aGlzLm1hcmtDb250cm9sU2VydmljZS50b3VjaGVkQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMubWFya0FzVG91Y2hlZCgpfSkpLHRoaXMubmdDb250cm9sU2VydmljZSYmdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLmhlbHBlcnND''@;'; put 'put ''aGFuZ2Uuc3Vic2NyaWJlKGNlPT57dGhpcy5zZXRBcmlhRGVzY3JpYmVkQnkoY2UpfSkpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQoaCl7dGhpcy5faWQ9aCx0aGlzLmNvbnRyb2xJZFNlcnZpY2UmJih0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQ9aCl9dHJpZ2dlclZhbGlkYXRp''@;'; put 'put ''b24oKXt0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZSYmKHRoaXMubmdDb250cm9sJiYhdGhpcy5uZ0NvbnRyb2wudG91Y2hlZCYmdGhpcy5tYXJrQXNUb3VjaGVkKCksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2UudHJpZ2dlclN0YXR1c0NoYW5nZSgpKX1tYXJrQXNUb3VjaGVkKCl7dGhp''@;'; put 'put ''cy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCksdGhpcy5uZ0NvbnRyb2wuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCl9Z2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKGgsdil7dHJ5e3JldHVybiB0aGlzLl9jb250YWluZXJJbmplY3Rvci5nZXQoaCx2KX1jYXRjaCh5''@;'; put 'put ''KXtyZXR1cm4gdn19bmdPbkluaXQoKXt0aGlzLl9jb250YWluZXJJbmplY3Rvcj1uZXcgYXEodGhpcy53cmFwcGVyVHlwZSx0aGlzLnZjcix0aGlzLmluZGV4KSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9dGhpcy5fY29udGFpbmVySW5qZWN0b3IuZ2V0KHNsKTt0cnl7dGhpcy5jb250YWluZXJJ''@;'; put 'put ''ZFNlcnZpY2U9dGhpcy5fY29udGFpbmVySW5qZWN0b3IuZ2V0KEFwKX1jYXRjaChoKXt9dGhpcy5faWQ/dGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkPXRoaXMuX2lkOnRoaXMuX2lkPXRoaXMuY29udHJvbElkU2VydmljZS5pZCx0aGlzLm5nQ29udHJvbFNlcnZpY2UmJnRoaXMubmdDb250cm9s''@;'; put 'put ''U2VydmljZS5zZXRDb250cm9sKHRoaXMubmdDb250cm9sKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9c2V0QXJpYURlc2NyaWJlZEJ5KGgpe2lmKGguc2hvdyl7Y29uc3Qgdj10aGlzLmdldEFyaWFEZXNjcmliZWRCeUlkKGgp''@;'; put 'put ''O2lmKG51bGwhPT12KXJldHVybiB2b2lkIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiYXJpYS1kZXNjcmliZWRieSIsdil9dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJhcmlhLWRlc2NyaWJlZGJ5''@;'; put 'put ''Iil9Z2V0QXJpYURlc2NyaWJlZEJ5SWQoaCl7bGV0IHY9ImhlbHBlciI7cmV0dXJuIGguc2hvd0ludmFsaWQ/dj0iZXJyb3IiOmguc2hvd1ZhbGlkJiYodj0ic3VjY2VzcyIpLHRoaXMuY29udGFpbmVySWRTZXJ2aWNlP3RoaXMuY29udGFpbmVySWRTZXJ2aWNlLmlkLmNvbmNhdCgiLSIsdik6''@;'; put 'put ''dGhpcy5jb250cm9sSWRTZXJ2aWNlP3RoaXMuY29udHJvbElkU2VydmljZS5pZC5jb25jYXQoIi0iLHYpOm51bGx9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KE1yKSxLdChNOSksS3QoeHMpLEt0KERjKSxLdChEYSksS3QoX28pKX0sZC5cdTAy''@;'; put 'put ''NzVkaXI9WWkoe3R5cGU6ZCxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYudHJpZ2dlclZhbGlkYXRpb24oKX0pLDImaCYmRDMoImlkIix2LmlkKX0saW5wdXRzOntpZDoiaWQifX0pLGR9KSgpLHdPZT0oKCk9''@;'; put 'put ''PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5sYXlvdXRTZXJ2aWNlPWgsdGhpcy5tYXJrQ29udHJvbFNlcnZpY2U9dn1zZXQgbGFiZWxTaXplKGgpe2NvbnN0IHY9cGFyc2VJbnQoaCwxMCl8fDI7dGhpcy5sYXlvdXRTZXJ2aWNlLmxhYmVsU2l6ZT12fW1hcmtBc1RvdWNoZWQoKXt0''@;'; put 'put ''aGlzLm1hcmtDb250cm9sU2VydmljZS5tYXJrQXNUb3VjaGVkKCl9b25Gb3JtU3VibWl0KCl7dGhpcy5tYXJrQXNUb3VjaGVkKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHIzKSxLdChFZmUpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxz''@;'; put 'put ''ZWxlY3RvcnM6W1siIiwiY2xyRm9ybSIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LGFzLDUpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYubGFiZWxzPUMpfX0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJz''@;'; put 'put ''dWJtaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25Gb3JtU3VibWl0KCl9KSwyJmgmJkhpKCJjbHItZm9ybSIsITApKCJjbHItZm9ybS1ob3Jpem9udGFsIix2LmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkpKCJjbHItZm9ybS1jb21wYWN0Iix2LmxheW91dFNlcnZpY2UuaXNDb21wYWN0''@;'; put 'put ''KCkpfSxpbnB1dHM6e2xhYmVsU2l6ZTpbImNsckxhYmVsU2l6ZSIsImxhYmVsU2l6ZSJdfSxmZWF0dXJlczpbZ28oW3IzLEVmZV0pXX0pLGR9KSgpLHRmPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyhZaCxVaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxac11dfSksZH0pKCk7Y29uc3QgeGZlPW5ldyBPdCgiSVNfVE9HR0xFIiksX09lPXtwcm92aWRlOnhmZSx1c2VGYWN0b3J5OmZ1bmN0aW9uIGJPZSgpe3JldHVy''@;'; put 'put ''biBuZXcgU2woITEpfX07bGV0IHZ3PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fZHluYW1pYz0hMSx0aGlzLnRvZ2dsZT0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goaC5zdWJzY3JpYmUodj0+e3RoaXMudG9nZ2xlPXZ9KSl9bmdP''@;'; put 'put ''bkluaXQoKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLmRpc2FibGVHcmlkKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh4ZmUpKX0s''@;'; put 'put ''ZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LGFzLDcpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYubGFiZWw9''@;'; put 'put ''Qy5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImNsci1jaGVja2JveC13cmFwcGVyIiwhdi50b2dnbGUpKCJjbHItdG9nZ2xlLXdyYXBwZXIiLHYudG9nZ2xlKX0sZmVhdHVyZXM6W2dvKFtzbCxfT2VdKV0sbmdDb250ZW50U2VsZWN0b3Jz''@;'; put 'put ''OmckLGRlY2xzOjMsdmFyczoxLGNvbnN0czpbWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChwJCksVmkoMCksVmkoMSwxKSxubigyLGQkLDEsMCwibGFiZWwiLDApKSwyJmgmJihzdCgyKSx4dCgibmdJZiIsIXYubGFiZWwpKX0sZGVwZW5kZW5jaWVzOltCbyxh''@;'; put 'put ''c10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksQXc9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFFMe2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqKXtzdXBlcihoLHZ3LHYseSxDLEkpLHRoaXMudG9nZ2xlPWp9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpO2NvbnN0IGg9dGhpcy5nZXRQcm92aWRl''@;'; put 'put ''ckZyb21Db250YWluZXIoeGZlLG51bGwpO2gmJm51bGwhPT10aGlzLnRvZ2dsZSYmaC5uZXh0KCEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXIpLEt0KHhzKSxLdChEYywxMCksS3QoRGEpLEt0KF9vKSxZcCgiY2xyVG9nZ2xlIikpfSxk''@;'; put 'put ''Llx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJDaGVja2JveCIsIiJdLFsiIiwiY2xyVG9nZ2xlIiwiIl1dLGZlYXR1cmVzOltSb119KSxkfSkoKSxscT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgd2d7Y29uc3RydWN0b3IoaCx2LHksQyl7c3VwZXIoQyxoLHYseSksdGhp''@;'; put 'put ''cy5sYXlvdXRTZXJ2aWNlPWgsdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPXYsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPXksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9Qyx0aGlzLmlubGluZT0hMX1zZXQgY2xySW5saW5lKGgpe3RoaXMuaW5saW5lPSJzdHJpbmciPT10eXBlb2YgaD8iZmFs''@;'; put 'put ''c2UiIT09aDohIWh9Z2V0IGNscklubGluZSgpe3JldHVybiB0aGlzLmlubGluZX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldEFyaWFSb2xlcygpfXNldEFyaWFSb2xlcygpe3RoaXMucm9sZT10aGlzLmNoZWNrYm94ZXMubGVuZ3RoPyJncm91cCI6bnVsbH19cmV0dXJuIGQuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QocjMsOCksS3QoaTMpLEt0KFN1KSxLdChMZikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY2hlY2tib3gtY29udGFpbmVyIl0sWyJjbHItdG9nZ2xlLWNvbnRhaW5lciJdXSxjb250ZW50UXVlcmll''@;'; put 'put ''czpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LEF3LDUpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYuY2hlY2tib3hlcz1DKX19LGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koInJvbGUiLHYucm9sZSksSGkoImNsci1mb3JtLWNvbnRyb2wiLCEw''@;'; put 'put ''KSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsbnVsbD09di5jb250cm9sP251bGw6di5jb250cm9sLmRpc2FibGVkKSgiY2xyLXJvdyIsdi5hZGRHcmlkKCkpKX0saW5wdXRzOntjbHJJbmxpbmU6ImNscklubGluZSJ9LGZlYXR1cmVzOltnbyhbTGYsU3UsaTMsQXBdKSxSb10sbmdDb250''@;'; put 'put ''ZW50U2VsZWN0b3JzOnYkLGRlY2xzOjEwLHZhcnM6OSxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItc3VidGV4dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic3RhdHVzIiwiZGFuZ2VyIiwi''@;'; put 'put ''c2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzdGF0dXMiLCJzdWNjZXNzIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbInN0''@;'; put 'put ''YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic3RhdHVzIiwic3VjY2VzcyIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRh''@;'; put 'put ''dGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKE51ZSksVmkoMCksbm4oMSxtJCwxLDAsImxhYmVsIiwwKSx0dCgyLCJkaXYiLDEpLFZpKDMsMSksdHQoNCwiZGl2IiwyKSxubig1LFB1ZSwxLDAsIm5nLWNvbnRlbnQiLDApLG5uKDYsRnVlLDEsMCwiY2RzLWljb24i''@;'; put 'put ''LDMpLG5uKDcsSHVlLDEsMCwiY2RzLWljb24iLDQpLG5uKDgsY2csMSwwLCJuZy1jb250ZW50IiwwKSxubig5LFFqLDEsMCwibmctY29udGVudCIsMCksaXQoKSgpKSwyJmgmJihzdCgxKSx4dCgibmdJZiIsIXYubGFiZWwmJnYuYWRkR3JpZCgpKSxzdCgxKSxIaSgiY2xyLWNvbnRyb2wtaW5s''@;'; put 'put ''aW5lIix2LmNscklubGluZSkseHQoIm5nQ2xhc3MiLHYuY29udHJvbENsYXNzKCkpLHN0KDMpLHh0KCJuZ0lmIix2LnNob3dIZWxwZXIpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dJbnZhbGlkKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93VmFsaWQpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dJbnZh''@;'; put 'put ''bGlkKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltCbyxhcyxFMSxrc10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksQ09lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyhZaCxVaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxacyx0ZixVbF0sdGZdfSksZH0pKCk7ZnVuY3Rpb24geXAoZCl7cmV0dXJuIG51bGwhPT1kJiYoInN0cmluZyI9PXR5cGVvZiBkP2QubGVuZ3RoPj0wOiJi''@;'; put 'put ''b29sZWFuIj09dHlwZW9mIGQmJmQpfWxldCBKTD0oKCk9PntjbGFzcyBke2dldCBzcGlubmVyQ2xhc3MoKXtyZXR1cm4hMH1nZXQgaW5saW5lQ2xhc3MoKXtyZXR1cm4gdGhpcy5faW5saW5lfXNldCBjbHJJbmxpbmUoaCl7dGhpcy5faW5saW5lPXlwKGgpfWdldCBpbnZlcnNlQ2xhc3MoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5faW52ZXJzZX1zZXQgY2xySW52ZXJzZShoKXt0aGlzLl9pbnZlcnNlPXlwKGgpfWdldCBzbWFsbENsYXNzKCl7cmV0dXJuIHRoaXMuX3NtYWxsfXNldCBjbHJTbWFsbChoKXt0aGlzLl9zbWFsbD15cChoKX1nZXQgbWVkaXVtQ2xhc3MoKXtyZXR1cm4hdGhpcy5fc21hbGwm''@;'; put 'put ''JnRoaXMuX21lZGl1bX1zZXQgY2xyTWVkaXVtKGgpe3RoaXMuX21lZGl1bT15cChoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1zcGlubmVyIl1dLGhvc3RWYXJzOjExLGhv''@;'; put 'put ''c3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJhcmlhLWJ1c3kiLCEwKSxIaSgic3Bpbm5lciIsdi5zcGlubmVyQ2xhc3MpKCJzcGlubmVyLWlubGluZSIsdi5pbmxpbmVDbGFzcykoInNwaW5uZXItaW52ZXJzZSIsdi5pbnZlcnNlQ2xhc3MpKCJzcGlubmVyLXNtIix2LnNtYWxs''@;'; put 'put ''Q2xhc3MpKCJzcGlubmVyLW1kIix2Lm1lZGl1bUNsYXNzKSl9LGlucHV0czp7Y2xySW5saW5lOiJjbHJJbmxpbmUiLGNsckludmVyc2U6ImNsckludmVyc2UiLGNsclNtYWxsOiJjbHJTbWFsbCIsY2xyTWVkaXVtOiJjbHJNZWRpdW0ifSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6MSx2''@;'; put 'put ''YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLFZpKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksX1o9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxk''@;'; put 'put ''Llx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXV19KSxkfSkoKSxrT2U9MDtjb25zdCBYTD1uZXcgT3QoIklGX0FDVElWRV9JRCIpLE1PZT17cHJvdmlkZTpYTCx1c2VGYWN0b3J5OmZ1bmN0aW9uIFNPZSgpe3JldHVybisra09lfX07bGV0IHdTPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3Io''@;'; put 'put ''KXt0aGlzLl9jdXJyZW50Q2hhbmdlPW5ldyAkZX1nZXQgY3VycmVudENoYW5nZSgpe3JldHVybiB0aGlzLl9jdXJyZW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfXNldCBjdXJyZW50KGgpe3RoaXMuX2N1cnJlbnQhPT1oJiYodGhpcy5fY3VycmVudD1oLHRoaXMuX2N1cnJlbnRDaGFuZ2UubmV4''@;'; put 'put ''dChoKSl9Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksQ1o9KCgpPT57Y2xhc3MgZHtjb25z''@;'; put 'put ''dHJ1Y3RvcihoLHYseSxDKXt0aGlzLmlmQWN0aXZlU2VydmljZT1oLHRoaXMuaWQ9dix0aGlzLnRlbXBsYXRlPXksdGhpcy5jb250YWluZXI9Qyx0aGlzLndhc0FjdGl2ZT0hMSx0aGlzLmFjdGl2ZUNoYW5nZT1uZXcgZm4oITEpLHRoaXMuY2hlY2tBbmRVcGRhdGVWaWV3KGguY3VycmVudCks''@;'; put 'put ''dGhpcy5zdWJzY3JpcHRpb249dGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudENoYW5nZS5zdWJzY3JpYmUoST0+e3RoaXMuY2hlY2tBbmRVcGRhdGVWaWV3KEkpfSl9Y2hlY2tBbmRVcGRhdGVWaWV3KGgpe2NvbnN0IHY9aD09PXRoaXMuaWQ7diE9PXRoaXMud2FzQWN0aXZlJiYodGhpcy51''@;'; put 'put ''cGRhdGVWaWV3KHYpLHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQodiksdGhpcy53YXNBY3RpdmU9dil9c2V0IGFjdGl2ZShoKXtoJiYodGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD10aGlzLmlkKX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10''@;'; put 'put ''aGlzLmlkfXVwZGF0ZVZpZXcoaCl7aD90aGlzLmNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk6dGhpcy5jb250YWluZXIuY2xlYXIoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHdTKSxLdChYTCksS3QoVm4pLEt0KE1yKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscklmQWN0aXZlIiwiIl1dLGlucHV0czp7YWN0aXZlOlsiY2xySWZBY3RpdmUiLCJhY3RpdmUiXX0sb3V0cHV0czp7YWN0''@;'; put 'put ''aXZlQ2hhbmdlOiJjbHJJZkFjdGl2ZUNoYW5nZSJ9fSksZH0pKCksYXllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnRlbXBsYXRlPWgsdGhpcy5jb250YWluZXI9dix0aGlzLmVsPXksdGhpcy5yZW5kZXJlcj1DLHRoaXMuZXhwYW5kPUksdGhpcy5fZXhwYW5k''@;'; put 'put ''ZWQ9ITEsdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgZm4oITApLHRoaXMuX3N1YnNjcmlwdGlvbnM9W10sdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKEkuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMudXBkYXRlVmlldygpLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4''@;'; put 'put ''cGFuZC5leHBhbmRlZCl9KSl9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuX2V4cGFuZGVkfXNldCBleHBhbmRlZChoKXsiYm9vbGVhbiI9PXR5cGVvZiBoJiYodGhpcy5leHBhbmQuZXhwYW5kZWQ9aCx0aGlzLl9leHBhbmRlZD1oKX11cGRhdGVWaWV3KCl7aWYoIXRoaXMuZXhwYW5kLmV4''@;'; put 'put ''cGFuZGVkfHwwPT09dGhpcy5jb250YWluZXIubGVuZ3RoKWlmKHRoaXMudGVtcGxhdGUpdGhpcy5leHBhbmQuZXhwYW5kZWQ/dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCk7ZWxzZSB0cnl7dGhpcy5yZW5kZXJl''@;'; put 'put ''ci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRpc3BsYXkiLHRoaXMuZXhwYW5kLmV4cGFuZGVkP251bGw6Im5vbmUiKX1jYXRjaChoKXt9fW5nT25Jbml0KCl7dGhpcy5leHBhbmQuZXhwYW5kYWJsZSsrLHRoaXMudXBkYXRlVmlldygpfW5nT25EZXN0cm95KCl7dGhpcy5leHBh''@;'; put 'put ''bmQuZXhwYW5kYWJsZS0tLHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChWbiw4KSxLdChNciksS3QoX28pLEt0KERhKSxLdChlZikpfSxkLlx1MDI3NWRpcj1Z''@;'; put 'put ''aSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dLGlucHV0czp7ZXhwYW5kZWQ6WyJjbHJJZkV4cGFuZGVkIiwiZXhwYW5kZWQiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNscklmRXhwYW5kZWRDaGFuZ2UifX0pLGR9KSgpLHl3PSgoKT0+e2NsYXNzIGR7''@;'; put 'put ''Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMudG9nZ2xlU2VydmljZT1oLHRoaXMudGVtcGxhdGU9dix0aGlzLmNvbnRhaW5lcj15LHRoaXMub3BlbkNoYW5nZT1uZXcgZm4oITEpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShDPT57dGhp''@;'; put 'put ''cy51cGRhdGVWaWV3KEMpLHRoaXMub3BlbkNoYW5nZS5lbWl0KEMpfSl9c2V0IG9wZW4oaCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49aH1nZXQgb3Blbigpe3JldHVybiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbn11cGRhdGVWaWV3KGgpe2g/dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRk''@;'; put 'put ''ZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChFdCksS3QoVm4pLEt0KE1yKSl9LGQu''@;'; put 'put ''XHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscklmT3BlbiIsIiJdXSxpbnB1dHM6e29wZW46WyJjbHJJZk9wZW4iLCJvcGVuIl19LG91dHB1dHM6e29wZW5DaGFuZ2U6ImNscklmT3BlbkNoYW5nZSJ9fSksZH0pKCksd3A9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXV19KSxkfSkoKTt2YXIgYmc9KCgpPT4oZnVuY3Rpb24oZCl7ZC5WRVJUSUNBTD0idmVydGljYWwiLGQuSE9SSVpPTlRBTD0iaG9y''@;'; put 'put ''aXpvbnRhbCIsZC5CT1RIPSJib3RoIn0oYmd8fChiZz17fSkpLGJnKSkoKTtsZXQgbHllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLmVsZW1lbnRSZWY9aCx0aGlzLnBsYXRmb3JtSWQ9dn1nZXQgbmF0aXZlRWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0''@;'; put 'put ''aXZlRWxlbWVudH1mb2N1cygpe2FsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSxLdChFMikpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpk''@;'; put 'put ''LHNlbGVjdG9yczpbWyIiLCJjbHJLZXlGb2N1c0l0ZW0iLCIiXV19KSxkfSkoKSxLTD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZWxlbWVudFJlZj1oLHRoaXMuZGlyZWN0aW9uPWJnLlZFUlRJQ0FMLHRoaXMuZm9jdXNPbkxvYWQ9ITEsdGhpcy5mb2N1c0NoYW5nZT1uZXcg''@;'; put 'put ''Zm4sdGhpcy5fY3VycmVudD0wLHRoaXMuc3Vic2NyaXB0aW9ucz1bXX1zZXQgZm9jdXNhYmxlSXRlbXMoaCl7QXJyYXkuaXNBcnJheShoKSYmaC5sZW5ndGgmJih0aGlzLl9mb2N1c2FibGVJdGVtcz1oLHRoaXMuaW5pdGlhbGl6ZUZvY3VzKCkpfWdldCBmb2N1c2FibGVJdGVtcygpe3JldHVy''@;'; put 'put ''biB0aGlzLl9mb2N1c2FibGVJdGVtcz90aGlzLl9mb2N1c2FibGVJdGVtczp0aGlzLmNscktleUZvY3VzSXRlbXM/dGhpcy5jbHJLZXlGb2N1c0l0ZW1zLnRvQXJyYXkoKTpbXX1nZXQgbmF0aXZlRWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1nZXQgY3Vy''@;'; put 'put ''cmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGgpe3RoaXMuX2N1cnJlbnQhPT1oJiYodGhpcy5fY3VycmVudD1oKX1nZXQgY3VycmVudEl0ZW0oKXtyZXR1cm4gdGhpcy5mb2N1c2FibGVJdGVtc1t0aGlzLl9jdXJyZW50XX1nZXQgY3VycmVudEl0ZW1FbGVtZW50KCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuY3VycmVudEl0ZW0ubmF0aXZlRWxlbWVudD90aGlzLmN1cnJlbnRJdGVtLm5hdGl2ZUVsZW1lbnQ6dGhpcy5jdXJyZW50SXRlbX1mb2N1c0N1cnJlbnQoKXt0aGlzLmN1cnJlbnRJdGVtLmZvY3VzKCksdGhpcy5mb2N1c0NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpfW1v''@;'; put 'put ''dmVUbyhoKXt0aGlzLnBvc2l0aW9uSW5SYW5nZShoKSYmKHRoaXMuY3VycmVudD1oLHRoaXMuZm9jdXNDdXJyZW50KCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9ySXRlbVVwZGF0ZXMoKSksdGhpcy5pbml0aWFsaXplRm9jdXMo''@;'; put 'put ''KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9aGFuZGxlS2V5Ym9hcmRFdmVudChoKXtpZih0aGlzLmN1cnJlbnRJdGVtRWxlbWVudCE9PWgudGFyZ2V0KXtjb25zdCB2PXRoaXMuZ2V0SXRlbVBvc2l0aW9uKGgudGFyZ2V0KTt0''@;'; put 'put ''aGlzLnBvc2l0aW9uSW5SYW5nZSh2KSYmKHRoaXMuY3VycmVudD12KX10aGlzLnByZXZLZXlQcmVzc2VkKGgpJiZ0aGlzLmN1cnJlbnRGb2N1c0lzTm90Rmlyc3RJdGVtKCk/dGhpcy5tb3ZlVG8odGhpcy5jdXJyZW50LTEpOnRoaXMubmV4dEtleVByZXNzZWQoaCkmJnRoaXMuY3VycmVudEZv''@;'; put 'put ''Y3VzSXNOb3RMYXN0SXRlbSgpP3RoaXMubW92ZVRvKHRoaXMuY3VycmVudCsxKTpoLmNvZGU9PT1HZS5Ib21lP3RoaXMubW92ZVRvKDApOmguY29kZT09PUdlLkVuZCYmdGhpcy5tb3ZlVG8odGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgtMSksa3QoaCl9c2V0Q2xpY2tlZEl0ZW1DdXJyZW50''@;'; put 'put ''KGgpe2NvbnN0IHY9dGhpcy5nZXRJdGVtUG9zaXRpb24oaC50YXJnZXQpO3Y+LTEmJnRoaXMubW92ZVRvKHYpfWdldEl0ZW1Qb3NpdGlvbihoKXtyZXR1cm4gdGhpcy5fZm9jdXNhYmxlSXRlbXM/dGhpcy5mb2N1c2FibGVJdGVtcy5pbmRleE9mKGgpOnRoaXMuZm9jdXNhYmxlSXRlbXMubWFw''@;'; put 'put ''KHY9PnYubmF0aXZlRWxlbWVudCkuaW5kZXhPZihoKX1wb3NpdGlvbkluUmFuZ2UoaCl7cmV0dXJuIGg+PTAmJmg8dGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGh9Y3VycmVudEZvY3VzSXNOb3RGaXJzdEl0ZW0oKXtyZXR1cm4gdGhpcy5fY3VycmVudC0xPj0wfWN1cnJlbnRGb2N1c0lzTm90''@;'; put 'put ''TGFzdEl0ZW0oKXtyZXR1cm4gdGhpcy5fY3VycmVudCsxPHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RofWluaXRpYWxpemVGb2N1cygpe3RoaXMuZm9jdXNhYmxlSXRlbXMmJnRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoJiYodGhpcy5fY3VycmVudD49dGhpcy5mb2N1c2FibGVJdGVtcy5s''@;'; put 'put ''ZW5ndGgmJih0aGlzLl9jdXJyZW50PXRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoLTEpLHRoaXMuZm9jdXNPbkxvYWQmJih0aGlzLmN1cnJlbnRJdGVtLmZvY3VzKCksdGhpcy5mb2N1c0NoYW5nZS5uZXh0KCkpKX1saXN0ZW5Gb3JJdGVtVXBkYXRlcygpe3JldHVybiB0aGlzLmNscktleUZv''@;'; put 'put ''Y3VzSXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmluaXRpYWxpemVGb2N1cygpfSl9bmV4dEtleVByZXNzZWQoaCl7Y29uc3Qgdj1NdChoLmtleSk7c3dpdGNoKHRoaXMuZGlyZWN0aW9uKXtjYXNlIGJnLlZFUlRJQ0FMOnJldHVybiB2PT09R2UuQXJyb3dEb3duO2Nhc2UgYmcu''@;'; put 'put ''SE9SSVpPTlRBTDpyZXR1cm4gdj09PUdlLkFycm93UmlnaHQ7Y2FzZSBiZy5CT1RIOnJldHVybiB2PT09R2UuQXJyb3dEb3dufHx2PT09R2UuQXJyb3dSaWdodDtkZWZhdWx0OnJldHVybiExfX1wcmV2S2V5UHJlc3NlZChoKXtjb25zdCB2PU10KGgua2V5KTtzd2l0Y2godGhpcy5kaXJlY3Rp''@;'; put 'put ''b24pe2Nhc2UgYmcuVkVSVElDQUw6cmV0dXJuIHY9PT1HZS5BcnJvd1VwO2Nhc2UgYmcuSE9SSVpPTlRBTDpyZXR1cm4gdj09PUdlLkFycm93TGVmdDtjYXNlIGJnLkJPVEg6cmV0dXJuIHY9PT1HZS5BcnJvd1VwfHx2PT09R2UuQXJyb3dMZWZ0O2RlZmF1bHQ6cmV0dXJuITF9fX1yZXR1cm4g''@;'; put 'put ''ZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfbykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJLZXlGb2N1cyIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LGx5ZSw1KSwyJmgpe2xl''@;'; put 'put ''dCBDO3ppKEM9QWkoKSkmJih2LmNscktleUZvY3VzSXRlbXM9Qyl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJrZXlkb3duIixmdW5jdGlvbihDKXtyZXR1cm4gdi5oYW5kbGVLZXlib2FyZEV2ZW50KEMpfSkoImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5zZXRD''@;'; put 'put ''bGlja2VkSXRlbUN1cnJlbnQoQyl9KX0saW5wdXRzOntkaXJlY3Rpb246WyJjbHJEaXJlY3Rpb24iLCJkaXJlY3Rpb24iXSxmb2N1c09uTG9hZDpbImNsckZvY3VzT25Mb2FkIiwiZm9jdXNPbkxvYWQiXSxmb2N1c2FibGVJdGVtczpbImNscktleUZvY3VzIiwiZm9jdXNhYmxlSXRlbXMiXX0s''@;'; put 'put ''b3V0cHV0czp7Zm9jdXNDaGFuZ2U6ImNsckZvY3VzQ2hhbmdlIn0sYXR0cnM6QSQsbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFRmZT0oKCk9PntjbGFz''@;'; put 'put ''cyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWFdXX0pLGR9KSgpO2NvbnN0ICRMPW5ldyBPdCgiUE9QT1ZFUl9IT1NUX0FOQ0hPUiIpO2xldCBJZmU9''@;'; put 'put ''KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7dmFyIG8zPSgoKT0+KGZ1bmN0aW9uKGQpe2QuVVA9InVwIixkLkRPV049ImRvd24i''@;'; put 'put ''LGQuTEVGVD0ibGVmdCIsZC5SSUdIVD0icmlnaHQifShvM3x8KG8zPXt9KSksbzMpKSgpO2xldCBzcT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMucmVuZGVyZXI9aCx0aGlzLl91bmxpc3RlbkZ1bmNzPVtdfWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9cmVz''@;'; put 'put ''ZXQoaCl7dGhpcy5fY3VycmVudD1ofWxpc3RlblRvQXJyb3dLZXlzKGgpe3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJrZXlkb3duLmFycm93dXAiLCgpPT4hdGhpcy5tb3ZlKG8zLlVQKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJl''@;'; put 'put ''bmRlcmVyLmxpc3RlbihoLCJrZXlkb3duLmFycm93ZG93biIsKCk9PiF0aGlzLm1vdmUobzMuRE9XTikpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5hcnJvd2xlZnQiLCgpPT4hdGhpcy5tb3ZlKG8zLkxFRlQpKSksdGhpcy5fdW5s''@;'; put 'put ''aXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24uYXJyb3dyaWdodCIsKCk9PiF0aGlzLm1vdmUobzMuUklHSFQpKSl9cmVnaXN0ZXJDb250YWluZXIoaCl7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaCwidGFiaW5kZXgiLCIwIiksdGhpcy5saXN0ZW5U''@;'; put 'put ''b0Fycm93S2V5cyhoKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5zcGFjZSIsKCk9PiF0aGlzLmFjdGl2YXRlQ3VycmVudCgpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24u''@;'; put 'put ''ZW50ZXIiLCgpPT4hdGhpcy5hY3RpdmF0ZUN1cnJlbnQoKSkpfW1vdmVUbyhoKXt2b2lkIDAhPT1oJiYodGhpcy5jdXJyZW50JiZ0aGlzLmN1cnJlbnQuYmx1cigpLGguZm9jdXMoKSx0aGlzLl9jdXJyZW50PWgpfW1vdmUoaCl7bGV0IHY9ITE7aWYodGhpcy5jdXJyZW50KXtjb25zdCB5PXRo''@;'; put 'put ''aXMuY3VycmVudFtoXTt5JiYoTFgoeSk/eTpWMCh5KSkuc3Vic2NyaWJlKEk9PntJJiYodGhpcy5tb3ZlVG8oSSksdj0hMCl9KX1yZXR1cm4gdn1hY3RpdmF0ZUN1cnJlbnQoKXtyZXR1cm4hKCF0aGlzLmN1cnJlbnR8fCF0aGlzLmN1cnJlbnQuYWN0aXZhdGV8fCh0aGlzLmN1cnJlbnQuYWN0''@;'; put 'put ''aXZhdGUoKSwwKSl9ZGV0YWNoTGlzdGVuZXJzKCl7dGhpcy5fdW5saXN0ZW5GdW5jcy5mb3JFYWNoKGg9PmgoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKERhKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1''@;'; put 'put ''ZmFjfSksZH0pKCk7Y29uc3QgeE9lPXtwcm92aWRlOnNxLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gRU9lKGQsZyl7cmV0dXJuIGR8fG5ldyBzcShnKX0sZGVwczpbW25ldyBJNCxuZXcgeWQsc3FdLERhXX07Y2xhc3MgdXF7fWZ1bmN0aW9uIHN5ZShkKXtyZXR1cm5bUmMsZCx7cHJvdmlkZTp1cSx1''@;'; put 'put ''c2VFeGlzdGluZzpkfV19Y2xhc3MgRE9lIGV4dGVuZHMgY2xhc3MgSU9le2NvbnRhaW5zSXRlbShnKXtyZXR1cm4gdGhpcy5tb2RlbD09PWd9c2VsZWN0KGcpe3RoaXMubW9kZWw9Z311bnNlbGVjdChnKXt0aGlzLmNvbnRhaW5zSXRlbShnKSYmKHRoaXMubW9kZWw9bnVsbCl9aXNFbXB0eSgp''@;'; put 'put ''e3JldHVybiF0aGlzLm1vZGVsfXBvcCgpe2NvbnN0IGc9dGhpcy5tb2RlbDtyZXR1cm4gdGhpcy5tb2RlbD1udWxsLGd9dG9TdHJpbmcoZyl7cmV0dXJuIHRoaXMubW9kZWw/ZyYmdGhpcy5tb2RlbFtnXT90aGlzLm1vZGVsW2ddOnRoaXMubW9kZWwudG9TdHJpbmcoKToiIn19e2NvbnN0cnVj''@;'; put 'put ''dG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb2N1c0NoYW5nZWQ9bmV3IFNsKG51bGwpfWdldCBmb2N1c0NoYW5nZWQoKXtyZXR1cm4gdGhpcy5fZm9jdXNDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpfXNlbGVjdChnKXt0aGlzLm1vZGVsIT09ZyYmKHRoaXMubW9kZWw9Zyx0aGlzLl9m''@;'; put 'put ''b2N1c0NoYW5nZWQubmV4dChnKSl9fWxldCBMT2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMubG9hZGluZz0hMSx0aGlzLl9jdXJyZW50SW5wdXQ9IiIsdGhpcy5faW5wdXRDaGFuZ2VkPW5ldyBTbCgiIiksdGhpcy5pbnB1dENoYW5nZWQ9dGhpcy5faW5wdXRDaGFuZ2VkLmFz''@;'; put 'put ''T2JzZXJ2YWJsZSgpLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQ9bmV3IGk4KDEpfWdldCBjdXJyZW50SW5wdXQoKXtyZXR1cm4gdGhpcy5fY3VycmVudElucHV0fXNldCBjdXJyZW50SW5wdXQoaCl7IiI9PT1oJiYhdGhpcy5tdWx0aXNlbGVjdGFibGUmJnRoaXMuc2V0U2VsZWN0aW9uVmFsdWUo''@;'; put 'put ''bnVsbCksdGhpcy5fY3VycmVudElucHV0PWgsdGhpcy5faW5wdXRDaGFuZ2VkLm5leHQoaCl9Z2V0IHNlbGVjdGlvbkNoYW5nZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5hc09ic2VydmFibGUoKX1zZWxlY3QoaCl7bnVsbD09aHx8dGhpcy5zZWxlY3Rpb25Nb2RlbC5jb250''@;'; put 'put ''YWluc0l0ZW0oaCl8fCh0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChoKSx0aGlzLl9zZWxlY3Rpb25DaGFuZ2VkLm5leHQodGhpcy5zZWxlY3Rpb25Nb2RlbCkpfXRvZ2dsZShoKXtudWxsIT1oJiYodGhpcy5zZWxlY3Rpb25Nb2RlbC5jb250YWluc0l0ZW0oaCk/dGhpcy5zZWxlY3Rpb25N''@;'; put 'put ''b2RlbC51bnNlbGVjdChoKTp0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChoKSx0aGlzLl9zZWxlY3Rpb25DaGFuZ2VkLm5leHQodGhpcy5zZWxlY3Rpb25Nb2RlbCkpfXVuc2VsZWN0KGgpe251bGw9PWh8fCF0aGlzLnNlbGVjdGlvbk1vZGVsLmNvbnRhaW5zSXRlbShoKXx8KHRoaXMuc2Vs''@;'; put 'put ''ZWN0aW9uTW9kZWwudW5zZWxlY3QoaCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX1nZXQgbXVsdGlzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwgaW5zdGFuY2VvZiBjbGFzcyBUT2V7Y29udGFpbnNJdGVtKGcpe3JldHVy''@;'; put 'put ''biEhdGhpcy5tb2RlbCYmdGhpcy5tb2RlbC5pbmNsdWRlcyhnKX1zZWxlY3QoZyl7dGhpcy5hZGRJdGVtKGcpfXVuc2VsZWN0KGcpe3RoaXMucmVtb3ZlSXRlbShnKX1pc0VtcHR5KCl7cmV0dXJuISh0aGlzLm1vZGVsJiZ0aGlzLm1vZGVsLmxlbmd0aD4wKX1wb3AoKXtsZXQgZztyZXR1cm4g''@;'; put 'put ''dGhpcy5tb2RlbCYmdGhpcy5tb2RlbC5sZW5ndGg+MCYmKGc9dGhpcy5tb2RlbFt0aGlzLm1vZGVsLmxlbmd0aC0xXSx0aGlzLnJlbW92ZUl0ZW0oZykpLGd9dG9TdHJpbmcoZyxoPS0xKXtsZXQgdj0iIjtyZXR1cm4gdGhpcy5tb2RlbCYmKGg+LTE/dGhpcy5tb2RlbFtoXSYmKHYrPWcmJnRo''@;'; put 'put ''aXMubW9kZWxbaF1bZ10/dGhpcy5tb2RlbFtoXVtnXTp0aGlzLm1vZGVsW2hdLnRvU3RyaW5nKCkpOnRoaXMubW9kZWwuZm9yRWFjaCh5PT57dis9ZyYmeVtnXT95W2ddOnkudG9TdHJpbmcoKSx2Kz0iICJ9KSksdi50cmltKCl9YWRkSXRlbShnKXt0aGlzLmNvbnRhaW5zSXRlbShnKXx8KHRo''@;'; put 'put ''aXMubW9kZWw9dGhpcy5tb2RlbHx8W10sdGhpcy5tb2RlbC5wdXNoKGcpKX1yZW1vdmVJdGVtKGcpe2lmKG51bGw9PXRoaXMubW9kZWwpcmV0dXJuO2NvbnN0IGg9dGhpcy5tb2RlbC5pbmRleE9mKGcpO2g+LTEmJnRoaXMubW9kZWwuc3BsaWNlKGgsMSksMD09PXRoaXMubW9kZWwubGVuZ3Ro''@;'; put 'put ''JiYodGhpcy5tb2RlbD1udWxsKX19fXNldFNlbGVjdGlvblZhbHVlKGgpeyF0aGlzLnNlbGVjdGlvbk1vZGVsfHx0aGlzLnNlbGVjdGlvbk1vZGVsLm1vZGVsPT09aHx8IXRoaXMuc2VsZWN0aW9uTW9kZWwubW9kZWwmJiFofHwodGhpcy5zZWxlY3Rpb25Nb2RlbC5tb2RlbD1oLHRoaXMuX3Nl''@;'; put 'put ''bGVjdGlvbkNoYW5nZWQubmV4dCh0aGlzLnNlbGVjdGlvbk1vZGVsKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO3N5ZSgoKCk9PntjbGFzcyBke2Nv''@;'; put 'put ''bnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5pZD1oLHRoaXMudG9nZ2xlU2VydmljZT15LHRoaXMuc2VsZWN0aW9uU2VydmljZT1DLHRoaXMucGxhdGZvcm1JZD1JLHRoaXMucHNldWRvRm9jdXM9bmV3IERPZSx0aGlzLm9wdGlvbkRhdGE9W10sdGhpcy5oYW5kbGVGb2N1c1N1YnNjcmlwdGlv''@;'; put 'put ''bigpLHRoaXMucmVuZGVyZXI9di5jcmVhdGVSZW5kZXJlcihudWxsLG51bGwpfWhhbmRsZUZvY3VzU3Vic2NyaXB0aW9uKCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGg9PntofHwodGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbD1udWxsKX0pfWdldCB0cmlnZ2VyKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3RyaWdnZXJ9c2V0IHRyaWdnZXIoaCl7dGhpcy5fdHJpZ2dlcj1oLHRoaXMuYWRkRm9jdXNPbkJsdXJMaXN0ZW5lcihoKX1nZXQgbGlzdGJveCgpe3JldHVybiB0aGlzLl9saXN0Ym94fXNldCBsaXN0Ym94KGgpe3RoaXMuX2xpc3Rib3g9aCx0aGlzLmFkZEZvY3VzT25C''@;'; put 'put ''bHVyTGlzdGVuZXIoaCl9Z2V0IHRleHRJbnB1dCgpe3JldHVybiB0aGlzLl90ZXh0SW5wdXR9c2V0IHRleHRJbnB1dChoKXt0aGlzLl90ZXh0SW5wdXQ9aCx0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJrZXlkb3duIix2PT4hdGhpcy5oYW5kbGVUZXh0SW5wdXQodikpLHRoaXMuYWRkRm9jdXNP''@;'; put 'put ''bkJsdXJMaXN0ZW5lcihoKX1tb3ZlRm9jdXNUbyhoKXtsZXQgdj10aGlzLm9wdGlvbkRhdGEuZmluZEluZGV4KHk9PnkuZXF1YWxzKHRoaXMucHNldWRvRm9jdXMubW9kZWwpKTtoPT09bzMuVVA/LTE9PT12fHwwPT09dj92PXRoaXMub3B0aW9uRGF0YS5sZW5ndGgtMTp2LS06aD09PW8zLkRP''@;'; put 'put ''V04mJigtMT09PXZ8fHY9PT10aGlzLm9wdGlvbkRhdGEubGVuZ3RoLTE/dj0wOnYrKyksdGhpcy5wc2V1ZG9Gb2N1cy5zZWxlY3QodGhpcy5vcHRpb25EYXRhW3ZdKSx0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsJiZ0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsLmVsJiZ0aGlzLnBzZXVkb0ZvY3VzLm1v''@;'; put 'put ''ZGVsLmVsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIixpbmxpbmU6Im5lYXJlc3QifSl9b3BlbkFuZE1vdmVUbyhoKXt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj90aGlzLm1vdmVGb2N1c1RvKGgpOih0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5n''@;'; put 'put ''ZS5waXBlKFQ1KDEpKS5zdWJzY3JpYmUodj0+e3YmJnRoaXMubW92ZUZvY3VzVG8oaCl9KSx0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMCl9aGFuZGxlVGV4dElucHV0KGgpe2xldCB2PSExO2NvbnN0IHk9TXQoaC5rZXkpO2lmKGgpc3dpdGNoKHkpe2Nhc2UgR2UuRW50ZXI6dGhpcy50b2dn''@;'; put 'put ''bGVTZXJ2aWNlLm9wZW4mJnRoaXMucHNldWRvRm9jdXMubW9kZWwmJih0aGlzLnNlbGVjdGlvblNlcnZpY2UubXVsdGlzZWxlY3RhYmxlP3RoaXMuc2VsZWN0aW9uU2VydmljZS50b2dnbGUodGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC52YWx1ZSk6dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVj''@;'; put 'put ''dCh0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsLnZhbHVlKSx2PSEwKTticmVhaztjYXNlIEdlLlNwYWNlOnRoaXMudG9nZ2xlU2VydmljZS5vcGVufHwodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITAsdj0hMCk7YnJlYWs7Y2FzZSBHZS5BcnJvd1VwOnRoaXMucHJldmVudFZpZXdwb3J0U2Nyb2xs''@;'; put 'put ''aW5nKGgpLHRoaXMub3BlbkFuZE1vdmVUbyhvMy5VUCksdj0hMDticmVhaztjYXNlIEdlLkFycm93RG93bjp0aGlzLnByZXZlbnRWaWV3cG9ydFNjcm9sbGluZyhoKSx0aGlzLm9wZW5BbmRNb3ZlVG8obzMuRE9XTiksdj0hMDticmVhaztkZWZhdWx0Omgua2V5IT09R2UuVGFiJiYoIXRoaXMu''@;'; put 'put ''c2VsZWN0aW9uU2VydmljZS5tdWx0aXNlbGVjdGFibGV8fGgua2V5IT09R2UuQmFja3NwYWNlKSYmaC5rZXkhPT1HZS5Fc2NhcGUmJiF0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwKX1yZXR1cm4gdn1wcmV2ZW50Vmlld3BvcnRTY3JvbGxpbmco''@;'; put 'put ''aCl7aC5wcmV2ZW50RGVmYXVsdCgpLGguc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9Zm9jdXNJbnB1dCgpe3RoaXMudGV4dElucHV0JiZhbCh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLnRleHRJbnB1dC5mb2N1cygpfWFkZEZvY3VzT25CbHVyTGlzdGVuZXIoaCl7YWwodGhpcy5wbGF0Zm9y''@;'; put 'put ''bUlkKSYmdGhpcy5yZW5kZXJlci5saXN0ZW4oaCwiYmx1ciIsdj0+e3RoaXMuZm9jdXNPdXRPZkNvbXBvbmVudCh2KSYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExLHRoaXMuY29tcG9uZW50Q2RSZWYmJnRoaXMuY29tcG9uZW50Q2RSZWYuZGV0ZWN0Q2hhbmdlcygpKX0pfWZvY3VzT3V0''@;'; put 'put ''T2ZDb21wb25lbnQoaCl7Y29uc3Qgdj1oLnJlbGF0ZWRUYXJnZXR8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuISh0aGlzLnRleHRJbnB1dC5jb250YWlucyh2KXx8dGhpcy50cmlnZ2VyLmNvbnRhaW5zKHYpfHx0aGlzLmxpc3Rib3guY29udGFpbnModikpfWZvY3VzRmlyc3RBY3Rp''@;'; put 'put ''dmUoKXtpZih0aGlzLm9wdGlvbkRhdGEubGVuZ3RoPjApaWYodGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmlzRW1wdHkoKSl0aGlzLnBzZXVkb0ZvY3VzLnNlbGVjdCh0aGlzLm9wdGlvbkRhdGFbMF0pO2Vsc2V7bGV0IGg7aD10aGlzLnNlbGVjdGlvblNlcnZpY2UubXVs''@;'; put 'put ''dGlzZWxlY3RhYmxlP3RoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbFswXTp0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWw7Y29uc3Qgdj10aGlzLm9wdGlvbkRhdGEuZmluZCh5PT55LnZhbHVlPT09aCk7dGhpcy5wc2V1ZG9Gb2N1cy5z''@;'; put 'put ''ZWxlY3Qodnx8dGhpcy5vcHRpb25EYXRhWzBdKX19YWRkT3B0aW9uVmFsdWVzKGgpe3RoaXMub3B0aW9uRGF0YT1ofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShEMCksRWkoYTYpLEVpKEV0KSxFaShMT2UpLEVpKEUyKSl9LGQuXHUwMjc1cHJv''@;'; put 'put ''dj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCkpO2xldCBPT2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKFloLFVoLCQ3LHp5KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9k''@;'; put 'put ''PXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLHhmLFpzLFRmZSx0Zix3cCxsbyxfWl0sdGYsd3BdfSksZH0pKCksdXllPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyB3Z3t9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYp''@;'; put 'put ''e3JldHVybihnfHwoZz10MihkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItaW5wdXQtY29udGFpbmVyIl1dLGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHIt''@;'; put 'put ''Zm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT12LmNvbnRyb2w/bnVsbDp2LmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93Iix2LmFkZEdyaWQoKSl9LGZlYXR1cmVzOltnbyhbTGYsU3Usc2wsaTNdKSxSb10sbmdDb250ZW50U2VsZWN0b3JzOlhqLGRlY2xzOjEwLHZhcnM6Nyxjb25zdHM6''@;'; put 'put ''W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItaW5wdXQtd3JhcHBlciJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0s''@;'; put 'put ''WyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlk''@;'; put 'put ''YXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChfJCksVmkoMCksbm4oMSxwdiwxLDAsImxhYmVsIiwwKSx0''@;'; put 'put ''dCgyLCJkaXYiLDEpKDMsImRpdiIsMiksVmkoNCwxKSxubig1LFRMLDEsMCwiY2RzLWljb24iLDMpLG5uKDYsQTAsMSwwLCJjZHMtaWNvbiIsNCksaXQoKSxubig3LGRwLDEsMCwibmctY29udGVudCIsMCksbm4oOCxiJCwxLDAsIm5nLWNvbnRlbnQiLDApLG5uKDksZmcsMSwwLCJuZy1jb250''@;'; put 'put ''ZW50IiwwKSxpdCgpKSwyJmgmJihzdCgxKSx4dCgibmdJZiIsIXYubGFiZWwmJnYuYWRkR3JpZCgpKSxzdCgxKSx4dCgibmdDbGFzcyIsdi5jb250cm9sQ2xhc3MoKSksc3QoMykseHQoIm5nSWYiLHYuc2hvd0ludmFsaWQpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dWYWxpZCksc3QoMSkseHQo''@;'; put 'put ''Im5nSWYiLHYuc2hvd0hlbHBlciksc3QoMSkseHQoIm5nSWYiLHYuc2hvd0ludmFsaWQpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dWYWxpZCkpfSxkZXBlbmRlbmNpZXM6W0JvLGFzLEUxLGtzXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSx3dj0oKCk9PntjbGFzcyBkIGV4dGVuZHMgUUx7Y29u''@;'; put 'put ''c3RydWN0b3IoaCx2LHksQyxJKXtzdXBlcihoLHV5ZSx2LHksQyxJKSx0aGlzLmluZGV4PTF9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KE1yKSxLdCh4cyksS3QoRGMsMTApLEt0KERhKSxLdChfbykpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpk''@;'; put 'put ''LHNlbGVjdG9yczpbWyIiLCJjbHJJbnB1dCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImNsci1pbnB1dCIsITApfSxmZWF0dXJlczpbUm9dfSksZH0pKCksY3llPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyhZaCxV''@;'; put 'put ''aCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSx4Zixacyx0Zl0sdGZdfSksZH0pKCksQmZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlz''@;'; put 'put ''Ll9mb2N1c2VkPW5ldyBTbCghMSl9Z2V0IGZvY3VzQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWQuYXNPYnNlcnZhYmxlKCl9c2V0IGZvY3VzZWQoaCl7dGhpcy5fZm9jdXNlZC5uZXh0KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5c''@;'; put 'put ''dTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxST2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKFloLFVoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJv''@;'; put 'put ''KHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLGN5ZSxac11dfSksZH0pKCksQk9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9wcmV2aW91c0ZvY3VzVHJhcHM9W119Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1zZXQgY3VycmVudCho''@;'; put 'put ''KXt0aGlzLl9wcmV2aW91c0ZvY3VzVHJhcHMucHVzaCh0aGlzLl9jdXJyZW50KSx0aGlzLl9jdXJyZW50PWh9Z2V0IG5iRm9jdXNUcmFwcGVycygpe3JldHVybiB0aGlzLl9wcmV2aW91c0ZvY3VzVHJhcHMubGVuZ3RofWFjdGl2YXRlUHJldmlvdXNUcmFwcGVyKCl7dGhpcy5fY3VycmVudD10''@;'; put 'put ''aGlzLl9wcmV2aW91c0ZvY3VzVHJhcHMucG9wKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLHd3PSgoKT0+e2NsYXNz''@;'; put 'put ''IGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLmVsPWgsdGhpcy5pbmplY3Rvcj12LHRoaXMuZm9jdXNUcmFwc1RyYWNrZXI9eSx0aGlzLnJlbmRlcmVyPUMsdGhpcy5wbGF0Zm9ybUlkPUksdGhpcy5sb2NhbEZvY3VzRXNjYXBlZD0hMSx0aGlzLl9jb25maWc9e3N0cmljdDohMH0sdGhp''@;'; put 'put ''cy5kb2N1bWVudD10aGlzLmluamVjdG9yLmdldCh1cyksdGhpcy5mb2N1c1RyYXBzVHJhY2tlci5jdXJyZW50PXRoaXN9c2V0IGNvbmZpZyhoKXt0aGlzLl9jb25maWc9T2JqZWN0LmFzc2lnbih0aGlzLl9jb25maWcsIiI9PT1oP3t9OmgpfW9uRm9jdXNJbihoKXtjb25zdCB2PXRoaXMuZWwu''@;'; put 'put ''bmF0aXZlRWxlbWVudDt0aGlzLmZvY3VzVHJhcHNUcmFja2VyLmN1cnJlbnQhPT10aGlzfHwhYWwodGhpcy5wbGF0Zm9ybUlkKXx8dGhpcy5sb2NhbEZvY3VzRXNjYXBlZHx8di5jb250YWlucyhoLnRhcmdldCl8fChoLnRhcmdldD09PXRoaXMudG9wUmVib3VuZEVsJiZ2LmNvbnRhaW5zKGgu''@;'; put 'put ''cmVsYXRlZFRhcmdldCk/KHRoaXMuZm9jdXNMYXN0Rm9jdXNhYmxlKCksdGhpcy5mb2N1c1RyYXBFbElmT3V0c2lkZSgpKTpoLnRhcmdldD09PXRoaXMuYm90dG9tUmVib3VuZEVsJiZ2LmNvbnRhaW5zKGgucmVsYXRlZFRhcmdldCk/KHRoaXMuZm9jdXNGaXJzdEZvY3VzYWJsZSgpLHRoaXMu''@;'; put 'put ''Zm9jdXNUcmFwRWxJZk91dHNpZGUoKSk6dGhpcy5fY29uZmlnLnN0cmljdD90aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTp0aGlzLmxvY2FsRm9jdXNFc2NhcGVkPSEwKX1jcmVhdGVGb2N1c2FibGVPZmZTY3JlZW5FbCgpe2NvbnN0IGg9dGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50''@;'; put 'put ''KCJzcGFuIik7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGgsInRhYmluZGV4IiwiMCIpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoaCwib2Zmc2NyZWVuLWZvY3VzLXJlYm91bmRlciIpLGh9YWRkUmVib3VuZEVscygpe2lmKGFsKHRoaXMucGxhdGZvcm1JZCkpe3RoaXMudG9w''@;'; put 'put ''UmVib3VuZEVsPXRoaXMuY3JlYXRlRm9jdXNhYmxlT2ZmU2NyZWVuRWwoKSx0aGlzLmJvdHRvbVJlYm91bmRFbD10aGlzLmNyZWF0ZUZvY3VzYWJsZU9mZlNjcmVlbkVsKCk7Y29uc3QgaD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7dGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoaC5wYXJlbnRF''@;'; put 'put ''bGVtZW50LHRoaXMudG9wUmVib3VuZEVsLGgpLGgubmV4dFNpYmxpbmc/dGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoaC5wYXJlbnROb2RlLHRoaXMuYm90dG9tUmVib3VuZEVsLGgubmV4dFNpYmxpbmcpOnRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoaC5wYXJlbnROb2RlLHRoaXMuYm90''@;'; put 'put ''dG9tUmVib3VuZEVsKX19cmVtb3ZlUmVib3VuZEVscygpe2FsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudG9wUmVib3VuZEVsJiZ0aGlzLmJvdHRvbVJlYm91bmRFbCYmKHRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLnRvcFJlYm91bmRFbCksdGhpcy5wYXJlbnRFbGVtZW50''@;'; put 'put ''LnJlbW92ZUNoaWxkKHRoaXMuYm90dG9tUmVib3VuZEVsKSxkZWxldGUgdGhpcy50b3BSZWJvdW5kRWwsZGVsZXRlIHRoaXMuYm90dG9tUmVib3VuZEVsKX1zZXRQcmV2aW91c0ZvY3VzKCl7dGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQmJnRoaXMucHJldmlvdXNBY3RpdmVFbGVtZW50LmZv''@;'; put 'put ''Y3VzJiZ0aGlzLnByZXZpb3VzQWN0aXZlRWxlbWVudC5mb2N1cygpfW5nT25Jbml0KCl7YWwodGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCItMSIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1''@;'; put 'put ''cygpKX1uZ0FmdGVyVmlld0luaXQoKXthbCh0aGlzLnBsYXRmb3JtSWQpJiYodGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQ9dGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50LHRoaXMucGFyZW50RWxlbWVudD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCksdGhpcy5hZGRS''@;'; put 'put ''ZWJvdW5kRWxzKCl9Z2V0IHBvdGVudGlhbGx5Rm9jdXNhYmxlRWxzKCl7cmV0dXJuWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaHJlZl06bm90KFt0YWJpbmRleD0iLTEiXSksIGJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0iLTEiXSks''@;'; put 'put ''IGlucHV0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSItMSJdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSItMSJdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Ii0xIl0pLCBbY29udGVudGVkaXRhYmxlPSJ0cnVlIl06bm90''@;'; put 'put ''KFt0YWJpbmRleD0iLTEiXSksIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD0iLTEiXSkgJyldfWZvY3VzRmlyc3RGb2N1c2FibGUoKXtmb3IobGV0IGg9MDtoPHRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHMubGVuZ3RoJiYodGhpcy5maXJzdEZvY3VzYWJsZUVsPXRoaXMuZm9jdXNFbGVt''@;'; put 'put ''ZW50KHRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHNbaF0pLCF0aGlzLmZpcnN0Rm9jdXNhYmxlRWwpO2grKyk7fWZvY3VzTGFzdEZvY3VzYWJsZSgpe2ZvcihsZXQgaD10aGlzLnBvdGVudGlhbGx5Rm9jdXNhYmxlRWxzLmxlbmd0aC0xO2g+PTAmJih0aGlzLmxhc3RGb2N1c2FibGVFbD10''@;'; put 'put ''aGlzLmZvY3VzRWxlbWVudCh0aGlzLnBvdGVudGlhbGx5Rm9jdXNhYmxlRWxzW2hdKSwhdGhpcy5sYXN0Rm9jdXNhYmxlRWwpO2gtLSk7fWZvY3VzVHJhcEVsSWZPdXRzaWRlKCl7dGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHx0aGlzLmVs''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1mb2N1c0VsZW1lbnQoaCl7cmV0dXJuIGgmJmguZm9jdXMmJihoLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWgpP2g6bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMucmVtb3ZlUmVib3VuZEVscygpLHRoaXMuc2V0UHJldmlvdXNGb2N1cygp''@;'; put 'put ''LHRoaXMuZm9jdXNUcmFwc1RyYWNrZXIuYWN0aXZhdGVQcmV2aW91c1RyYXBwZXIoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoX28pLEt0KHhzKSxLdChCT2UpLEt0KERhKSxLdChFMikpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVj''@;'; put 'put ''dG9yczpbWyIiLCJjbHJGb2N1c1RyYXAiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZabigiZm9jdXNpbiIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25Gb2N1c0luKEMpfSwwLHM2KX0saW5wdXRzOntjb25maWc6WyJjbHJGb2N1c1RyYXAiLCJjb25maWciXX19KSxkfSko''@;'; put 'put ''KSxjcT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWFdXX0pLGR9KSgpO2NvbnN0IEhPZT0vZCsuK20rLit5Ky9pLE5PZT0vbSsu''@;'; put 'put ''K2QrLit5Ky9pLFZPZT0vZCt8bSt8eSsvaSxqT2U9L1xkKy9nLFpPZT0vTW9iaS9pLHpPZT0vXHUyMDBmL2csZnE9e25hbWU6IkxJVFRMRV9FTkRJQU4iLGZvcm1hdDpbIkREIiwiTU0iLCJZWVlZIl19LE5mZT17bmFtZToiTUlERExFX0VORElBTiIsZm9ybWF0OlsiTU0iLCJERCIsIllZWVki''@;'; put 'put ''XX0sR09lPXtuYW1lOiJCSUdfRU5ESUFOIixmb3JtYXQ6WyJZWVlZIiwiTU0iLCJERCJdfTtmdW5jdGlvbiBoeWUoZCxnKXtyZXR1cm4gbmV3IERhdGUoZCxnKzEsMCkuZ2V0RGF0ZSgpfWNsYXNzIEpPZXtjb25zdHJ1Y3RvcihnLGg9ITEsdj0hMSx5PSExLEM9ITEsST0hMSl7dGhpcy5kYXlN''@;'; put 'put ''b2RlbD1nLHRoaXMuaXNUb2RheXNEYXRlPWgsdGhpcy5pc0V4Y2x1ZGVkPXYsdGhpcy5pc0Rpc2FibGVkPXksdGhpcy5pc1NlbGVjdGVkPUMsdGhpcy5pc0ZvY3VzYWJsZT1JfWdldCB0YWJJbmRleCgpe3JldHVybiB0aGlzLmlzRm9jdXNhYmxlPzA6LTF9fWNsYXNzIHM0e2NvbnN0cnVjdG9y''@;'; put 'put ''KGcsaCx2KXt0aGlzLnllYXI9Zyx0aGlzLm1vbnRoPWgsdGhpcy5kYXRlPXZ9aXNFcXVhbChnKXtyZXR1cm4hIWcmJnRoaXMueWVhcj09PWcueWVhciYmdGhpcy5tb250aD09PWcubW9udGgmJnRoaXMuZGF0ZT09PWcuZGF0ZX10b0RhdGUoKXtyZXR1cm4gbmV3IERhdGUodGhpcy55ZWFyLHRo''@;'; put 'put ''aXMubW9udGgsdGhpcy5kYXRlKX1pbmNyZW1lbnRCeShnKXtjb25zdCBoPW5ldyBEYXRlKHRoaXMueWVhcix0aGlzLm1vbnRoLHRoaXMuZGF0ZStnKTtyZXR1cm4gbmV3IHM0KGguZ2V0RnVsbFllYXIoKSxoLmdldE1vbnRoKCksaC5nZXREYXRlKCkpfWNsb25lKCl7cmV0dXJuIG5ldyBzNCh0''@;'; put 'put ''aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRhdGUpfXRvQ29tcGFyaXNvblN0cmluZygpe3JldHVybmAke3RoaXMueWVhcn0ke3RoaXMucGFkKHRoaXMubW9udGgpfSR7dGhpcy5wYWQodGhpcy5kYXRlKX1gfXBhZChnKXtyZXR1cm4gZzwxMD9gMCR7Z31gOmAke2d9YH10b0RhdGVTdHJpbmco''@;'; put 'put ''KXtyZXR1cm4gdGhpcy50b0RhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKX19Y2xhc3MgWE9le2NvbnN0cnVjdG9yKGcsaCx2LHksQyxJKXt0aGlzLmNhbGVuZGFyPWcsdGhpcy5zZWxlY3RlZERheT1oLHRoaXMuZm9jdXNhYmxlRGF5PXYsdGhpcy50b2RheT15LHRoaXMuZmlyc3REYXlPZldl''@;'; put 'put ''ZWs9Qyx0aGlzLmV4Y2x1ZGVkRGF0ZXM9SSx0aGlzLmN1cnJNb250aERheVZpZXdzPVtdLHRoaXMuaW5pdGlhbGl6ZUNhbGVuZGFyVmlldygpfWdldCBjYWxlbmRhclZpZXcoKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXJWaWV3fWluaXRpYWxpemVDYWxlbmRhclZpZXcoKXtjb25zdCBnPXRoaXMu''@;'; put 'put ''Y2FsZW5kYXIucHJldmlvdXNNb250aCgpLGg9dGhpcy5jYWxlbmRhci5uZXh0TW9udGgoKSx2PXRoaXMubnVtRGF5c0Zyb21QcmV2TW9udGhJbkNhbFZpZXcodGhpcy5jYWxlbmRhci55ZWFyLHRoaXMuY2FsZW5kYXIubW9udGgpLHk9NDItKHRoaXMuY2FsZW5kYXIuZGF5cy5sZW5ndGgrdik7''@;'; put 'put ''bGV0IEM9W10sST1bXTt2PjAmJihDPXRoaXMuZ2VuZXJhdGVEYXlWaWV3TW9kZWxzKGcuZGF5cy5zbGljZSgtMSp2KSwhMCwhMSkpLHRoaXMuY3Vyck1vbnRoRGF5Vmlld3M9dGhpcy5nZW5lcmF0ZURheVZpZXdNb2RlbHModGhpcy5jYWxlbmRhci5kYXlzLCExLCEwKSx5PjAmJihJPXRoaXMu''@;'; put 'put ''Z2VuZXJhdGVEYXlWaWV3TW9kZWxzKGguZGF5cy5zbGljZSgwLHkpLCEwLCExKSksdGhpcy5fY2FsZW5kYXJWaWV3PXRoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcoQyx0aGlzLmN1cnJNb250aERheVZpZXdzLEkpLHRoaXMuaW5pdGlhbGl6ZVNlbGVjdGVkRGF5KCksdGhpcy5pbml0aWFsaXpl''@;'; put 'put ''Rm9jdXNhYmxlRGF5KCl9aXNEYXRlRXhjbHVkZWQoZyl7Y29uc3R7bWluRGF0ZTpoLG1heERhdGU6dn09dGhpcy5leGNsdWRlZERhdGVzLHk9aC50b0NvbXBhcmlzb25TdHJpbmcoKSxDPXYudG9Db21wYXJpc29uU3RyaW5nKCksST1nLnRvQ29tcGFyaXNvblN0cmluZygpO3JldHVybiEoST49''@;'; put 'put ''eSYmSTw9Qyl9Z2VuZXJhdGVEYXlWaWV3TW9kZWxzKGcsaCx2KXtjb25zdCB5PWcubWFwKEM9Pm5ldyBKT2UoQywhMSxoLHRoaXMuaXNEYXRlRXhjbHVkZWQoQyksITEsITEpKTtyZXR1cm4gdiYmdGhpcy5jYWxlbmRhci5pc0RheUluQ2FsZW5kYXIodGhpcy50b2RheSkmJih5W3RoaXMudG9k''@;'; put 'put ''YXkuZGF0ZS0xXS5pc1RvZGF5c0RhdGU9ITApLHl9bnVtRGF5c0Zyb21QcmV2TW9udGhJbkNhbFZpZXcoZyxoKXtjb25zdCB2PWZ1bmN0aW9uIFlPZShkLGcsaCl7cmV0dXJuIG5ldyBEYXRlKGQsZyxoKS5nZXREYXkoKX0oZyxoLDEpO3JldHVybiB2Pj10aGlzLmZpcnN0RGF5T2ZXZWVrP3Yt''@;'; put 'put ''dGhpcy5maXJzdERheU9mV2Vlazo3K3YtdGhpcy5maXJzdERheU9mV2Vla31pc0RheUluQ2FsZW5kYXJWaWV3KGcpe3JldHVybiEhdGhpcy5jYWxlbmRhci5pc0RheUluQ2FsZW5kYXIoZyl9Z2VuZXJhdGVDYWxlbmRhclZpZXcoZyxoLHYpe2NvbnN0IHk9Wy4uLmcsLi4uaCwuLi52XSxDPVtd''@;'; put 'put ''O2ZvcihsZXQgST0wO0k8NjtJKyspQ1tJXT15LnNsaWNlKDcqSSw3KihJKzEpKTtyZXR1cm4gQ31pbml0aWFsaXplU2VsZWN0ZWREYXkoKXt0aGlzLnNlbGVjdGVkRGF5JiZ0aGlzLmlzRGF5SW5DYWxlbmRhclZpZXcodGhpcy5zZWxlY3RlZERheSkmJih0aGlzLmN1cnJNb250aERheVZpZXdz''@;'; put 'put ''W3RoaXMuc2VsZWN0ZWREYXkuZGF0ZS0xXS5pc1NlbGVjdGVkPSEwKX1pbml0aWFsaXplRm9jdXNhYmxlRGF5KCl7dGhpcy5mb2N1c2FibGVEYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLmZvY3VzYWJsZURheSk/dGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMuZm9jdXNhYmxl''@;'; put 'put ''RGF5LCEwKTp0aGlzLnNlbGVjdGVkRGF5JiZ0aGlzLmlzRGF5SW5DYWxlbmRhclZpZXcodGhpcy5zZWxlY3RlZERheSk/KHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyh0aGlzLnNlbGVjdGVkRGF5LCEwKSx0aGlzLmZvY3VzYWJsZURheT10aGlzLnNlbGVjdGVkRGF5LmNsb25lKCkpOnRoaXMuaXNE''@;'; put 'put ''YXlJbkNhbGVuZGFyVmlldyh0aGlzLnRvZGF5KT8odGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMudG9kYXksITApLHRoaXMuZm9jdXNhYmxlRGF5PXRoaXMudG9kYXkuY2xvbmUoKSk6KHRoaXMuZm9jdXNhYmxlRGF5PW5ldyBzNCh0aGlzLmNhbGVuZGFyLnllYXIsdGhpcy5jYWxlbmRhci5t''@;'; put 'put ''b250aCwxNSksdGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMuZm9jdXNhYmxlRGF5LCEwKSl9c2V0Rm9jdXNhYmxlRmxhZyhnLGgpe2cmJih0aGlzLmN1cnJNb250aERheVZpZXdzW2cuZGF0ZS0xXS5pc0ZvY3VzYWJsZT1oKX11cGRhdGVGb2N1c2FibGVEYXkoZyl7dGhpcy5zZXRGb2N1c2Fi''@;'; put 'put ''bGVGbGFnKHRoaXMuZm9jdXNhYmxlRGF5LCExKSx0aGlzLnNldEZvY3VzYWJsZUZsYWcoZywhMCksdGhpcy5mb2N1c2FibGVEYXk9Z319bGV0IGtaPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5sb2NhbGU9aCx0aGlzLl9maXJzdERheU9mV2Vlaz0wLHRoaXMuaW5pdGlhbGl6''@;'; put 'put ''ZUxvY2FsZURhdGEoKX1nZXQgZmlyc3REYXlPZldlZWsoKXtyZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWt9Z2V0IGxvY2FsZURheXMoKXtyZXR1cm4gdGhpcy5fbG9jYWxlRGF5c31nZXQgbG9jYWxlRGF5c05hcnJvdygpe3JldHVybiB0aGlzLl9sb2NhbGVEYXlzLm1hcChoPT5oLm5hcnJv''@;'; put 'put ''dyl9Z2V0IGxvY2FsZU1vbnRoc0FiYnJldmlhdGVkKCl7cmV0dXJuIHRoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkfWdldCBsb2NhbGVNb250aHNXaWRlKCl7cmV0dXJuIHRoaXMuX2xvY2FsZU1vbnRoc1dpZGV9Z2V0IGxvY2FsZURhdGVGb3JtYXQoKXtyZXR1cm4gdGhpcy5fbG9jYWxl''@;'; put 'put ''RGF0ZUZvcm1hdH1pbml0aWFsaXplTG9jYWxlRGF0YSgpe3RoaXMuaW5pdGlhbGl6ZUZpcnN0RGF5T2ZXZWVrKCksdGhpcy5pbml0aWFsaXplTG9jYWxlRGF0ZUZvcm1hdCgpLHRoaXMuaW5pdGlhbGl6ZUxvY2FsZU1vbnRoc0FiYnJldmlhdGVkKCksdGhpcy5pbml0aWFsaXplTG9jYWxlTW9u''@;'; put 'put ''dGhzV2lkZSgpLHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURheXMoKX1pbml0aWFsaXplTG9jYWxlRGF5cygpe2NvbnN0IGg9W10sdj1DQyh0aGlzLmxvY2FsZSxIMi5TdGFuZGFsb25lLHBsLldpZGUpLnNsaWNlKCkseT1DQyh0aGlzLmxvY2FsZSxIMi5TdGFuZGFsb25lLHBsLk5hcnJvdykuc2xp''@;'; put 'put ''Y2UoKSxDPXRoaXMuZmlyc3REYXlPZldlZWs7Zm9yKGxldCBJPTA7STw3O0krKyloLnB1c2goe2RheTp2W0ldLG5hcnJvdzp5W0ldfSk7aWYoQz4wKXtjb25zdCBJPWguc3BsaWNlKDAsQyk7aC5wdXNoKC4uLkkpfXRoaXMuX2xvY2FsZURheXM9aH1pbml0aWFsaXplTG9jYWxlTW9udGhzQWJi''@;'; put 'put ''cmV2aWF0ZWQoKXt0aGlzLl9sb2NhbGVNb250aHNBYmJyZXZpYXRlZD1WRih0aGlzLmxvY2FsZSxIMi5TdGFuZGFsb25lLHBsLkFiYnJldmlhdGVkKS5zbGljZSgpfWluaXRpYWxpemVMb2NhbGVNb250aHNXaWRlKCl7dGhpcy5fbG9jYWxlTW9udGhzV2lkZT1WRih0aGlzLmxvY2FsZSxIMi5T''@;'; put 'put ''dGFuZGFsb25lLHBsLldpZGUpLnNsaWNlKCl9aW5pdGlhbGl6ZUZpcnN0RGF5T2ZXZWVrKCl7dGhpcy5fZmlyc3REYXlPZldlZWs9ZnVuY3Rpb24gdjdlKGQpe3JldHVybiBvYyhkKVtTby5GaXJzdERheU9mV2Vla119KHRoaXMubG9jYWxlKX1pbml0aWFsaXplTG9jYWxlRGF0ZUZvcm1hdCgp''@;'; put 'put ''e3RoaXMuX2xvY2FsZURhdGVGb3JtYXQ9ZnVuY3Rpb24ga0MoZCxnKXtyZXR1cm4gVjMob2MoZClbU28uRGF0ZUZvcm1hdF0sZyl9KHRoaXMubG9jYWxlLE4yLlNob3J0KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoUDMpKX0sZC5cdTAyNzVw''@;'; put 'put ''cm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjbGFzcyBoOHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMueWVhcj1nLHRoaXMubW9udGg9aCx0aGlzLmluaXRpYWxpemVEYXlzSW5DYWxlbmRhcigpfWluaXRpYWxpemVEYXlzSW5DYWxlbmRhcigpe2NvbnN0IGc9aHll''@;'; put 'put ''KHRoaXMueWVhcix0aGlzLm1vbnRoKTt0aGlzLmRheXM9QXJyYXkoZykuZmlsbChudWxsKS5tYXAoKGgsdik9Pm5ldyBzNCh0aGlzLnllYXIsdGhpcy5tb250aCx2KzEpKX1pc0VxdWFsKGcpe3JldHVybiEhZyYmdGhpcy55ZWFyPT09Zy55ZWFyJiZ0aGlzLm1vbnRoPT09Zy5tb250aH1pc0Rh''@;'; put 'put ''eUluQ2FsZW5kYXIoZyl7cmV0dXJuISFnJiZ0aGlzLnllYXI9PT1nLnllYXImJnRoaXMubW9udGg9PT1nLm1vbnRofXByZXZpb3VzTW9udGgoKXtyZXR1cm4gMD09PXRoaXMubW9udGg/bmV3IGg4KHRoaXMueWVhci0xLDExKTpuZXcgaDgodGhpcy55ZWFyLHRoaXMubW9udGgtMSl9bmV4dE1v''@;'; put 'put ''bnRoKCl7cmV0dXJuIDExPT09dGhpcy5tb250aD9uZXcgaDgodGhpcy55ZWFyKzEsMCk6bmV3IGg4KHRoaXMueWVhcix0aGlzLm1vbnRoKzEpfX1sZXQgYnY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvZGF5c0Z1bGxEYXRlPW5ldyBEYXRlLHRoaXMuX3NlbGVjdGVkRGF5''@;'; put 'put ''Q2hhbmdlPW5ldyAkZSx0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZT1uZXcgJGUsdGhpcy5fZm9jdXNPbkNhbGVuZGFyQ2hhbmdlPW5ldyAkZSx0aGlzLl9mb2N1c2VkRGF5Q2hhbmdlPW5ldyAkZX1nZXQgZGlzcGxheWVkQ2FsZW5kYXIoKXtyZXR1cm4gdGhpcy5fZGlzcGxheWVkQ2Fs''@;'; put 'put ''ZW5kYXJ9c2V0RGlzcGxheWVkQ2FsZW5kYXIoaCl7dGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIuaXNFcXVhbChoKXx8KHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyPWgsdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2UubmV4dCgpKX1pbml0aWFsaXplVG9kYXlzRGF0ZSgpe3RoaXMuX3RvZGF5''@;'; put 'put ''c0Z1bGxEYXRlPW5ldyBEYXRlLHRoaXMuX3RvZGF5PW5ldyBzNCh0aGlzLl90b2RheXNGdWxsRGF0ZS5nZXRGdWxsWWVhcigpLHRoaXMuX3RvZGF5c0Z1bGxEYXRlLmdldE1vbnRoKCksdGhpcy5fdG9kYXlzRnVsbERhdGUuZ2V0RGF0ZSgpKX1nZXQgdG9kYXkoKXtyZXR1cm4gdGhpcy5fdG9k''@;'; put 'put ''YXl9Z2V0IHNlbGVjdGVkRGF5Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfW5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZChoKXt0aGlzLnNlbGVjdGVkRGF5PWgsdGhpcy5fc2VsZWN0ZWREYXlDaGFuZ2UubmV4dChoKX1pbml0aWFsaXplQ2Fs''@;'; put 'put ''ZW5kYXIoKXt0aGlzLmZvY3VzZWREYXk9bnVsbCx0aGlzLmluaXRpYWxpemVUb2RheXNEYXRlKCksdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXI9dGhpcy5zZWxlY3RlZERheT9uZXcgaDgodGhpcy5zZWxlY3RlZERheS55ZWFyLHRoaXMuc2VsZWN0ZWREYXkubW9udGgpOm5ldyBoOCh0aGlzLnRv''@;'; put 'put ''ZGF5LnllYXIsdGhpcy50b2RheS5tb250aCl9Y2hhbmdlTW9udGgoaCl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgaDgodGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIueWVhcixoKSl9Y2hhbmdlWWVhcihoKXt0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKG5ldyBoOChoLHRoaXMuX2Rp''@;'; put 'put ''c3BsYXllZENhbGVuZGFyLm1vbnRoKSl9bW92ZVRvTmV4dE1vbnRoKCl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcih0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5uZXh0TW9udGgoKSl9bW92ZVRvUHJldmlvdXNNb250aCgpe3RoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIodGhpcy5fZGlzcGxh''@;'; put 'put ''eWVkQ2FsZW5kYXIucHJldmlvdXNNb250aCgpKX1tb3ZlVG9DdXJyZW50TW9udGgoKXt0aGlzLmRpc3BsYXllZENhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcih0aGlzLnRvZGF5KXx8dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgaDgodGhpcy50b2RheS55ZWFyLHRoaXMudG9kYXkubW9u''@;'; put 'put ''dGgpKSx0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2UubmV4dCgpfWluY3JlbWVudEZvY3VzRGF5KGgpe3RoaXMuZm9jdXNlZERheT10aGlzLmZvY3VzZWREYXkuaW5jcmVtZW50QnkoaCksdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIuaXNEYXlJbkNhbGVuZGFyKHRoaXMuZm9jdXNlZERheSk/''@;'; put 'put ''dGhpcy5fZm9jdXNlZERheUNoYW5nZS5uZXh0KHRoaXMuZm9jdXNlZERheSk6dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgaDgodGhpcy5mb2N1c2VkRGF5LnllYXIsdGhpcy5mb2N1c2VkRGF5Lm1vbnRoKSksdGhpcy5fZm9jdXNPbkNhbGVuZGFyQ2hhbmdlLm5leHQoKX1nZXQgZGlz''@;'; put 'put ''cGxheWVkQ2FsZW5kYXJDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGZvY3VzT25DYWxlbmRhckNoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGZvY3VzZWRE''@;'; put 'put ''YXlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZERheUNoYW5nZS5hc09ic2VydmFibGUoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksZU89KCgp''@;'; put 'put ''PT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuX25nWm9uZT1oLHRoaXMucGxhdGZvcm1JZD12fWZvY3VzQ2VsbChoKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLm5nWm9uZUlzU3RhYmxlSW5Ccm93c2VyKCkuc3Vic2NyaWJlKCgpPT57Y29uc3Qgdj1o''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3RhYmluZGV4PSIwIl0nKTt2JiZ2LmZvY3VzKCl9KX0pfWZvY3VzSW5wdXQoaCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT50aGlzLm5nWm9uZUlzU3RhYmxlSW5Ccm93c2VyKCkuc3Vic2NyaWJlKCgpPT5oLmZvY3Vz''@;'; put 'put ''KCkpKX1lbGVtZW50SXNGb2N1c2VkKGgpe3JldHVybiBhbCh0aGlzLnBsYXRmb3JtSWQpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09aH1uZ1pvbmVJc1N0YWJsZUluQnJvd3Nlcigpe3JldHVybiB0aGlzLl9uZ1pvbmUub25TdGFibGUuYXNPYnNlcnZhYmxlKCkucGlwZShpcCgpLG0yKCgp''@;'; put 'put ''PT5hbCh0aGlzLnBsYXRmb3JtSWQpKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGRsKSxFaShFMikpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFNaPSgoKT0+e2NsYXNzIGR7Y29uc3Ry''@;'; put 'put ''dWN0b3IoaCl7dGhpcy5fbG9jYWxlSGVscGVyU2VydmljZT1oLHRoaXMuZGlzYWJsZWREYXRlcz17bWluRGF0ZTpuZXcgczQoMCwwLDEpLG1heERhdGU6bmV3IHM0KDk5OTksMTEsMzEpfSx0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0PSJkZC9NTS95Iix0aGlzLmxvY2FsZURpc3BsYXlGb3Jt''@;'; put 'put ''YXQ9ZnEsdGhpcy5kZWxpbWl0ZXJzPVsiLyIsIi8iXSx0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0PXRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2UubG9jYWxlRGF0ZUZvcm1hdCx0aGlzLmluaXRpYWxpemVMb2NhbGVEaXNwbGF5Rm9ybWF0KCl9c2V0TWluRGF0ZShoKXtpZihoKXtjb25zdFt2''@;'; put 'put ''LHksQ109aC5zcGxpdCgiLSIpLm1hcChJPT5wYXJzZUludChJLDEwKSk7dGhpcy5kaXNhYmxlZERhdGVzLm1pbkRhdGU9bmV3IHM0KHYseS0xLEMpfWVsc2UgdGhpcy5kaXNhYmxlZERhdGVzLm1pbkRhdGU9bmV3IHM0KDAsMCwxKX1zZXRNYXhEYXRlKGgpe2lmKGgpe2NvbnN0W3YseSxDXT1o''@;'; put 'put ''LnNwbGl0KCItIikubWFwKEk9PnBhcnNlSW50KEksMTApKTt0aGlzLmRpc2FibGVkRGF0ZXMubWF4RGF0ZT1uZXcgczQodix5LTEsQyl9ZWxzZSB0aGlzLmRpc2FibGVkRGF0ZXMubWF4RGF0ZT1uZXcgczQoOTk5OSwxMSwzMSl9aW5pdGlhbGl6ZUxvY2FsZURpc3BsYXlGb3JtYXQoKXtjb25z''@;'; put 'put ''dCBoPXRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQudG9Mb2NhbGVMb3dlckNhc2UoKTt0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9SE9lLnRlc3QoaCk/ZnE6Tk9lLnRlc3QoaCk/TmZlOkdPZSx0aGlzLmV4dHJhY3REZWxpbWl0ZXJzKCl9ZXh0cmFjdERlbGltaXRlcnMoKXtpZih0aGlzLmNs''@;'; put 'put ''ZHJMb2NhbGVEYXRlRm9ybWF0KXtjb25zdCB2PXRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQucmVwbGFjZSh6T2UsIiIpLnNwbGl0KFZPZSk7diYmND09PXYubGVuZ3RoP3RoaXMuZGVsaW1pdGVycz1bdlsxXSx2WzJdXTpjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVkIGRhdGUgZm9ybWF0IHJl''@;'; put 'put ''Y2VpdmVkLiBEZWxpbWl0ZXJzIGV4dHJhY3RlZDogIix2KX19dG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGgpe2lmKGgpe2lmKGlzTmFOKGguZ2V0VGltZSgpKSlyZXR1cm4iIjtjb25zdCB2PWguZ2V0RGF0ZSgpLHk9aC5nZXRNb250aCgpKzEsQz12Pjk/di50b1N0cmluZygpOiIwIit2''@;'; put 'put ''LEk9eT45P3kudG9TdHJpbmcoKToiMCIreTtyZXR1cm4gdGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PT09ZnE/Qyt0aGlzLmRlbGltaXRlcnNbMF0rSSt0aGlzLmRlbGltaXRlcnNbMV0raC5nZXRGdWxsWWVhcigpOnRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD09PU5mZT9JK3RoaXMuZGVsaW1p''@;'; put 'put ''dGVyc1swXStDK3RoaXMuZGVsaW1pdGVyc1sxXStoLmdldEZ1bGxZZWFyKCk6aC5nZXRGdWxsWWVhcigpK3RoaXMuZGVsaW1pdGVyc1swXStJK3RoaXMuZGVsaW1pdGVyc1sxXStDfXJldHVybiIifWdldCBwbGFjZWhvbGRlclRleHQoKXtjb25zdCBoPXRoaXMubG9jYWxlRGlzcGxheUZvcm1h''@;'; put 'put ''dC5mb3JtYXQ7cmV0dXJuIGhbMF0rdGhpcy5kZWxpbWl0ZXJzWzBdK2hbMV0rdGhpcy5kZWxpbWl0ZXJzWzFdK2hbMl19aXNWYWxpZE1vbnRoKGgpe3JldHVybiBoPi0xJiZoPDEyfWlzVmFsaWREYXRlKGgsdix5KXtyZXR1cm4geT4wJiZ5PD1oeWUoaCx2KX12YWxpZGF0ZUFuZEdldERhdGUo''@;'; put 'put ''aCx2LHkpe2NvbnN0IEM9K2gsST0rdi0xLGo9K3k7aWYoIXRoaXMuaXNWYWxpZE1vbnRoKEkpfHwhdGhpcy5pc1ZhbGlkRGF0ZShDLEksaikpcmV0dXJuIG51bGw7Y29uc3QgY2U9ZnVuY3Rpb24gVU9lKGQpe2lmKGQ+OTk5OXx8ZD4xMDAmJmQ8OTk5fHxkPDEwKXJldHVybi0xO2lmKGQ+OTk5''@;'; put 'put ''KXJldHVybiBkO2NvbnN0IGc9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpO2xldCB2PWQrMTAwKk1hdGguZmxvb3IoZy8xMDApO3JldHVybiB2PmcrMjAmJih2LT0xMDApLHZ9KEMpO3JldHVybi0xIT09Y2U/bmV3IERhdGUoY2UsSSxqKTpudWxsfWdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5n''@;'; put 'put ''KGgpe2lmKCFoKXJldHVybiBudWxsO2NvbnN0IHY9aC5tYXRjaChqT2UpO2lmKCF2fHwzIT09di5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3RbeSxDLEldPXY7cmV0dXJuIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD09PWZxP3RoaXMudmFsaWRhdGVBbmRHZXREYXRlKEksQyx5KTp0aGlzLmxv''@;'; put 'put ''Y2FsZURpc3BsYXlGb3JtYXQ9PT1OZmU/dGhpcy52YWxpZGF0ZUFuZEdldERhdGUoSSx5LEMpOnRoaXMudmFsaWRhdGVBbmRHZXREYXRlKHksQyxJKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoa1opKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tl''@;'; put 'put ''bjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxNWj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fdG91Y2hlZENoYW5nZT1uZXcgJGUsdGhpcy5fZGlydHlDaGFuZ2U9bmV3ICRlfWdldCB0b3VjaGVkQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX3RvdWNoZWRDaGFuZ2UuYXNP''@;'; put 'put ''YnNlcnZhYmxlKCl9Z2V0IGRpcnR5Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX2RpcnR5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfW1hcmtBc1RvdWNoZWQoKXt0aGlzLl90b3VjaGVkQ2hhbmdlLm5leHQoKX1tYXJrQXNEaXJ0eSgpe3RoaXMuX2RpcnR5Q2hhbmdlLm5leHQoKX1zZXREaXNhYmxlZCho''@;'; put 'put ''KXt0aGlzLmRpc2FibGVkPWh9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGR5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMu''@;'; put 'put ''X2RhdGVOYXZpZ2F0aW9uU2VydmljZT1oLHRoaXMuX3RvZ2dsZVNlcnZpY2U9dix0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2U9eSx0aGlzLmNvbW1vblN0cmluZ3M9Q31zZXQgZGF5VmlldyhoKXt0aGlzLl9kYXlWaWV3PWh9Z2V0IGRheVZpZXcoKXtyZXR1cm4gdGhpcy5fZGF5Vmlld31n''@;'; put 'put ''ZXQgZGF5U3RyaW5nKCl7cmV0dXJuIHRoaXMuZGF5Vmlldy5pc1NlbGVjdGVkP3RoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyU2VsZWN0ZWRMYWJlbCx7RlVMTF9EQVRFOnRoaXMuX2RheVZpZXcuZGF5TW9kZWwudG9EYXRlU3RyaW5n''@;'; put 'put ''KCl9KTp0aGlzLl9kYXlWaWV3LmRheU1vZGVsLnRvRGF0ZVN0cmluZygpfW9uRGF5Vmlld0ZvY3VzKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzZWREYXk9dGhpcy5kYXlWaWV3LmRheU1vZGVsfXNlbGVjdERheSgpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5ub3Rp''@;'; put 'put ''ZnlTZWxlY3RlZERheUNoYW5nZWQodGhpcy5kYXlWaWV3LmRheU1vZGVsKSx0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UubWFya0FzRGlydHkoKSx0aGlzLl90b2dnbGVTZXJ2aWNlLm9wZW49ITF9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0''@;'; put 'put ''KGJ2KSxLdChFdCksS3QoTVopLEt0KEZhKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kYXkiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJkYXkiLCEwKX0saW5wdXRzOntkYXlWaWV3OlsiY2xyRGF5VmlldyIsImRh''@;'; put 'put ''eVZpZXciXX0sZGVjbHM6Mix2YXJzOjEzLGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwxLCJkYXktYnRuIiwzLCJjbGljayIsImZvY3VzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiYnV0dG9uIiwwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuc2VsZWN0''@;'; put 'put ''RGF5KCl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25EYXlWaWV3Rm9jdXMoKX0pLFd0KDEpLGl0KCkpLDImaCYmKEhpKCJpcy10b2RheSIsdi5kYXlWaWV3LmlzVG9kYXlzRGF0ZSkoImlzLWV4Y2x1ZGVkIix2LmRheVZpZXcuaXNFeGNsdWRlZCkoImlzLWRpc2FibGVkIix2LmRh''@;'; put 'put ''eVZpZXcuaXNEaXNhYmxlZCkoImlzLXNlbGVjdGVkIix2LmRheVZpZXcuaXNTZWxlY3RlZCksR2koInRhYmluZGV4Iix2LmRheVZpZXcudGFiSW5kZXgpKCJhcmlhLWN1cnJlbnQiLHYuZGF5Vmlldy5pc1RvZGF5c0RhdGU/ImRhdGUiOiJmYWxzZSIpKCJhcmlhLWxhYmVsIix2LmRheVN0cmlu''@;'; put 'put ''ZykoImFyaWEtc2VsZWN0ZWQiLHYuZGF5Vmlldy5pc1NlbGVjdGVkKSxzdCgxKSxVaSgiICIsdi5kYXlWaWV3LmRheU1vZGVsLmRhdGUsIiAiKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLHB5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5fbG9jYWxlSGVs''@;'; put 'put ''cGVyU2VydmljZT1oLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZT12LHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2U9eSx0aGlzLl9kYXRlSU9TZXJ2aWNlPUMsdGhpcy5fZWxSZWY9SSx0aGlzLl9zdWJzPVtdLHRoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcoKSx0aGlzLmluaXRpYWxp''@;'; put 'put ''emVTdWJzY3JpcHRpb25zKCl9Z2V0IGxvY2FsZURheXMoKXtyZXR1cm4gdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2NhbGVEYXlzfWdldCBjYWxlbmRhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXJ9Z2V0IHNlbGVjdGVkRGF5KCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheX1nZXQgZm9jdXNlZERheSgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZm9jdXNlZERheX1nZXQgdG9kYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnRvZGF5fWlu''@;'; put 'put ''aXRpYWxpemVTdWJzY3JpcHRpb25zKCl7dGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmdlbmVyYXRlQ2FsZW5kYXJWaWV3KCl9KSksdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RhdGVO''@;'; put 'put ''YXZpZ2F0aW9uU2VydmljZS5mb2N1c2VkRGF5Q2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5jYWxlbmRhclZpZXdNb2RlbC51cGRhdGVGb2N1c2FibGVEYXkoaCl9KSksdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5mb2N1c09uQ2FsZW5kYXJDaGFuZ2Uuc3Vi''@;'; put 'put ''c2NyaWJlKCgpPT57dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfSkpfWdlbmVyYXRlQ2FsZW5kYXJWaWV3KCl7dGhpcy5jYWxlbmRhclZpZXdNb2RlbD1uZXcgWE9lKHRoaXMuY2FsZW5kYXIsdGhpcy5zZWxlY3RlZERheSx0aGlzLmZvY3VzZWRE''@;'; put 'put ''YXksdGhpcy50b2RheSx0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmZpcnN0RGF5T2ZXZWVrLHRoaXMuX2RhdGVJT1NlcnZpY2UuZGlzYWJsZWREYXRlcyl9b25LZXlEb3duKGgpe2lmKGgmJnRoaXMuZm9jdXNlZERheSlzd2l0Y2goaC5rZXlDb2RlKXtjYXNlIDM4OmgucHJldmVudERlZmF1''@;'; put 'put ''bHQoKSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5jcmVtZW50Rm9jdXNEYXkoLTcpO2JyZWFrO2Nhc2UgNDA6aC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSg3KTticmVhaztjYXNlIDM3OmgucHJldmVudERlZmF1''@;'; put 'put ''bHQoKSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5jcmVtZW50Rm9jdXNEYXkoLTEpO2JyZWFrO2Nhc2UgMzk6aC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSgxKX19bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZGF0''@;'; put 'put ''ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vicy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGtaKSxLdChidiksS3QoZU8p''@;'; put 'put ''LEt0KFNaKSxLdChfbykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY2FsZW5kYXIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZabigia2V5ZG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25LZXlEb3duKEMpfSl9LGRlY2xzOjQsdmFyczoy''@;'; put 'put ''LGNvbnN0czpbWzEsImNhbGVuZGFyLXRhYmxlIl0sWzEsImNhbGVuZGFyLXJvdyIsIndlZWtkYXlzIl0sWyJjbGFzcyIsImNhbGVuZGFyLWNlbGwgd2Vla2RheSIsInJvbGUiLCJoZWFkaW5nIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiY2FsZW5kYXItcm93Iiw0LCJuZ0ZvciIs''@;'; put 'put ''Im5nRm9yT2YiXSxbInJvbGUiLCJoZWFkaW5nIiwxLCJjYWxlbmRhci1jZWxsIiwid2Vla2RheSJdLFsxLCJjYWxlbmRhci1yb3ciXSxbImNsYXNzIiwiY2FsZW5kYXItY2VsbCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNhbGVuZGFyLWNlbGwiXSxbMywiY2xyRGF5VmlldyJdXSx0ZW1w''@;'; put 'put ''bGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsInRhYmxlIiwwKSgxLCJ0ciIsMSksbm4oMixZdWUsMiwyLCJ0aCIsMiksaXQoKSxubigzLFV1ZSwyLDEsInRyIiwzKSxpdCgpKSwyJmgmJihzdCgyKSx4dCgibmdGb3JPZiIsdi5sb2NhbGVEYXlzKSxzdCgxKSx4dCgibmdGb3JPZiIsdi5j''@;'; put 'put ''YWxlbmRhclZpZXdNb2RlbC5jYWxlbmRhclZpZXcpKX0sZGVwZW5kZW5jaWVzOltkeWUscWxdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGhxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fZG9jdW1lbnQ9aCx0aGlzLl9pc1VzZXJBZ2VudE1vYmlsZT0hMSx0aGlzLl9kb2N1''@;'; put 'put ''bWVudCYmKHRoaXMuX2lzVXNlckFnZW50TW9iaWxlPVpPZS50ZXN0KGguZGVmYXVsdFZpZXcubmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5faW5uZXJXaWR0aD1oLmRlZmF1bHRWaWV3LmlubmVyV2lkdGgpfWdldCBpc0VuYWJsZWQoKXtyZXR1cm4hKHRoaXMuX2RvY3VtZW50JiZ0aGlzLl9p''@;'; put 'put ''bm5lcldpZHRoPDc2OCYmdGhpcy5faXNVc2VyQWdlbnRNb2JpbGUpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaSh1cykpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHRPPSgoKT0+e2NsYXNz''@;'; put 'put ''IGR7Y29uc3RydWN0b3IoKXt0aGlzLl9jdXJyZW50Vmlldz0iREFZVklFVyIsdGhpcy5wb3NpdGlvbj1IYVsiYm90dG9tLWxlZnQiXX1nZXQgaXNEYXlWaWV3KCl7cmV0dXJuIkRBWVZJRVciPT09dGhpcy5fY3VycmVudFZpZXd9Z2V0IGlzWWVhclZpZXcoKXtyZXR1cm4iWUVBUlZJRVciPT09''@;'; put 'put ''dGhpcy5fY3VycmVudFZpZXd9Z2V0IGlzTW9udGhWaWV3KCl7cmV0dXJuIk1PTlRIVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31jaGFuZ2VUb01vbnRoVmlldygpe3RoaXMuX2N1cnJlbnRWaWV3PSJNT05USFZJRVcifWNoYW5nZVRvWWVhclZpZXcoKXt0aGlzLl9jdXJyZW50Vmlldz0iWUVB''@;'; put 'put ''UlZJRVcifWNoYW5nZVRvRGF5Vmlldygpe3RoaXMuX2N1cnJlbnRWaWV3PSJEQVlWSUVXIn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksZ3llPSgoKT0+''@;'; put 'put ''e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLl92aWV3TWFuYWdlclNlcnZpY2U9aCx0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlPXYsdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPXksdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZT1DLHRoaXMuX2VsUmVmPUksdGhp''@;'; put 'put ''cy5fZm9jdXNlZE1vbnRoSW5kZXg9dGhpcy5jYWxlbmRhck1vbnRoSW5kZXh9Z2V0IG1vbnRoTmFtZXMoKXtyZXR1cm4gdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2NhbGVNb250aHNXaWRlfWdldCBjYWxlbmRhck1vbnRoSW5kZXgoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25T''@;'; put 'put ''ZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLm1vbnRofWNoYW5nZU1vbnRoKGgpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5jaGFuZ2VNb250aChoKSx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9EYXlWaWV3KCl9Z2V0VGFiSW5kZXgoaCl7cmV0dXJuIGg9PT10aGlzLl9m''@;'; put 'put ''b2N1c2VkTW9udGhJbmRleD8wOi0xfW9uS2V5RG93bihoKXtpZihoKXtjb25zdCB2PWgua2V5Q29kZTszOD09PXYmJnRoaXMuX2ZvY3VzZWRNb250aEluZGV4PjA/KGgucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c2VkTW9udGhJbmRleC0tLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZp''@;'; put 'put ''Y2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKSk6NDA9PT12JiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleDwxMT8oaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4KyssdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTozOT09''@;'; put 'put ''PXYmJnRoaXMuX2ZvY3VzZWRNb250aEluZGV4PDY/KGgucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c2VkTW9udGhJbmRleD10aGlzLl9mb2N1c2VkTW9udGhJbmRleCs2LHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKSk6Mzc9PT12JiZ0aGlz''@;'; put 'put ''Ll9mb2N1c2VkTW9udGhJbmRleD41JiYoaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4LTYsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKX19bmdBZnRlclZpZXdJbml0KCl7''@;'; put 'put ''dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh0TyksS3Qoa1opLEt0KGJ2KSxLdChlTyksS3QoX28pKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siY2xyLW1vbnRocGlja2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZabigia2V5ZG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25LZXlEb3duKEMpfSksMiZoJiZIaSgibW9udGhwaWNrZXIiLCEwKX0sZGVjbHM6MSx2YXJzOjEsY29u''@;'; put 'put ''c3RzOltbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImNhbGVuZGFyLWJ0biBtb250aCIsMywiaXMtc2VsZWN0ZWQiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJtb250aCIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rp''@;'; put 'put ''b24oaCx2KXsxJmgmJm5uKDAsUXVlLDIsNCwiYnV0dG9uIiwwKSwyJmgmJnh0KCJuZ0Zvck9mIix2Lm1vbnRoTmFtZXMpfSxkZXBlbmRlbmNpZXM6W3FsXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTtjbGFzcyBFWntjb25zdHJ1Y3RvcihnKXt0aGlzLnllYXI9Zyx0aGlzLnllYXJSYW5nZT1b''@;'; put 'put ''XSx0aGlzLmdlbmVyYXRlWWVhclJhbmdlKCl9Z2V0IG1pZGRsZVllYXIoKXtyZXR1cm4gdGhpcy55ZWFyUmFuZ2VbTWF0aC5mbG9vcih0aGlzLnllYXJSYW5nZS5sZW5ndGgvMildfWdlbmVyYXRlWWVhclJhbmdlKCl7Y29uc3QgaD10aGlzLnllYXItdGhpcy55ZWFyJTEwO3RoaXMueWVhclJh''@;'; put 'put ''bmdlPXRoaXMuZ2VuZXJhdGVSYW5nZShoLGgrMTApfWdlbmVyYXRlUmFuZ2UoZyxoKXtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOmgtZ30sKHYseSk9PnkrZyl9bmV4dERlY2FkZSgpe3JldHVybiBuZXcgRVoodGhpcy55ZWFyKzEwKX1wcmV2aW91c0RlY2FkZSgpe3JldHVybiBuZXcgRVoo''@;'; put 'put ''dGhpcy55ZWFyLTEwKX1jdXJyZW50RGVjYWRlKCl7cmV0dXJuIG5ldyBFWigobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpfWluUmFuZ2UoZyl7cmV0dXJuIHRoaXMueWVhclJhbmdlLmluZGV4T2YoZyk+LTF9fWxldCB2eWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3Ro''@;'; put 'put ''aXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZT1oLHRoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZT12LHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2U9eSx0aGlzLl9lbFJlZj1DLHRoaXMuY29tbW9uU3RyaW5ncz1JLHRoaXMueWVhclJhbmdlTW9kZWw9bmV3IEVaKHRoaXMuY2FsZW5kYXJZZWFy''@;'; put 'put ''KSx0aGlzLl9mb2N1c2VkWWVhcj10aGlzLmNhbGVuZGFyWWVhcix0aGlzLnVwZGF0ZVJhbmdlKHRoaXMueWVhclJhbmdlTW9kZWwpfWdldCBjYWxlbmRhclllYXIoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLnllYXJ9aW5jcmVtZW50Rm9j''@;'; put 'put ''dXNZZWFyQnkoaCl7dGhpcy5fZm9jdXNlZFllYXI9dGhpcy5fZm9jdXNlZFllYXIraCx0aGlzLnllYXJSYW5nZU1vZGVsLmluUmFuZ2UodGhpcy5fZm9jdXNlZFllYXIpfHwodGhpcy55ZWFyUmFuZ2VNb2RlbD1oPjA/dGhpcy55ZWFyUmFuZ2VNb2RlbC5uZXh0RGVjYWRlKCk6dGhpcy55ZWFy''@;'; put 'put ''UmFuZ2VNb2RlbC5wcmV2aW91c0RlY2FkZSgpKSx0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZil9Y2hhbmdlWWVhcihoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuY2hhbmdlWWVhcihoKSx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hh''@;'; put 'put ''bmdlVG9EYXlWaWV3KCl9cHJldmlvdXNEZWNhZGUoKXt0aGlzLnllYXJSYW5nZU1vZGVsPXRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKSx0aGlzLnVwZGF0ZVJhbmdlKHRoaXMueWVhclJhbmdlTW9kZWwpfWN1cnJlbnREZWNhZGUoKXt0aGlzLnllYXJSYW5nZU1vZGVsLmlu''@;'; put 'put ''UmFuZ2UodGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnRvZGF5LnllYXIpfHwodGhpcy55ZWFyUmFuZ2VNb2RlbD10aGlzLnllYXJSYW5nZU1vZGVsLmN1cnJlbnREZWNhZGUoKSksdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpLHRoaXMudXBk''@;'; put 'put ''YXRlUmFuZ2UodGhpcy55ZWFyUmFuZ2VNb2RlbCl9bmV4dERlY2FkZSgpe3RoaXMueWVhclJhbmdlTW9kZWw9dGhpcy55ZWFyUmFuZ2VNb2RlbC5uZXh0RGVjYWRlKCksdGhpcy51cGRhdGVSYW5nZSh0aGlzLnllYXJSYW5nZU1vZGVsKX1nZXRUYWJJbmRleChoKXtyZXR1cm4gdGhpcy55ZWFy''@;'; put 'put ''UmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2ZvY3VzZWRZZWFyKXx8KHRoaXMuX2ZvY3VzZWRZZWFyPXRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLmNhbGVuZGFyWWVhcik/dGhpcy5jYWxlbmRhclllYXI6dGhpcy55ZWFyUmFuZ2VNb2RlbC5taWRkbGVZZWFyKSx0aGlzLl9mb2N1''@;'; put 'put ''c2VkWWVhcj09PWg/MDotMX1vbktleURvd24oaCl7aWYoaCl7Y29uc3Qgdj1oLmtleUNvZGU7Mzg9PT12PyhoLnByZXZlbnREZWZhdWx0KCksdGhpcy5pbmNyZW1lbnRGb2N1c1llYXJCeSgtMSkpOjQwPT09dj8oaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnko''@;'; put 'put ''MSkpOjM5PT09dj8oaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoNSkpOjM3PT09diYmKGgucHJldmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5KC01KSl9fXVwZGF0ZVJhbmdlKGgpe3RoaXMuZGVjYWRlUmFuZ2U9YCR7aC55ZWFyUmFu''@;'; put 'put ''Z2VbMF19IHRvICR7aC55ZWFyUmFuZ2VbaC55ZWFyUmFuZ2UubGVuZ3RoLTFdfWB9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KShLdChidiksS3QodE8pLEt0KGVPKSxLdChfbyksS3QoRmEpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXllYXJwaWNrZXIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJrZXlkb3duIixmdW5jdGlvbihDKXtyZXR1''@;'; put 'put ''cm4gdi5vbktleURvd24oQyl9KSwyJmgmJkhpKCJ5ZWFycGlja2VyIiwhMCl9LGRlY2xzOjksdmFyczo3LGNvbnN0czpbWzEsInllYXItc3dpdGNoZXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJzd2l0Y2hlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLCJk''@;'; put 'put ''aXJlY3Rpb24iLCJsZWZ0Il0sWyJzaGFwZSIsImV2ZW50Il0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwicmlnaHQiXSxbMSwieWVhcnMiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImNhbGVuZGFyLWJ0biB5ZWFyIiwzLCJpcy1zZWxlY3RlZCIsImNsaWNrIiw0LCJuZ0ZvciIs''@;'; put 'put ''Im5nRm9yT2YiXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsInllYXIiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiZGl2IiwwKSgxLCJidXR0b24iLDEpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5wcmV2aW91c0RlY2Fk''@;'; put 'put ''ZSgpfSksYnIoMiwiY2RzLWljb24iLDIpLGl0KCksdHQoMywiYnV0dG9uIiwxKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY3VycmVudERlY2FkZSgpfSksYnIoNCwiY2RzLWljb24iLDMpLGl0KCksdHQoNSwiYnV0dG9uIiwxKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHYubmV4dERlY2FkZSgpfSksYnIoNiwiY2RzLWljb24iLDQpLGl0KCkoKSx0dCg3LCJkaXYiLDUpLG5uKDgsQyQsMiw0LCJidXR0b24iLDYpLGl0KCkpLDImaCYmKHN0KDEpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNEZWNhZGUpLHN0''@;'; put 'put ''KDEpLEdpKCJ0aXRsZSIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlKSxzdCgxKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlckN1cnJlbnREZWNhZGUpLHN0KDEpLEdpKCJ0aXRsZSIsdi5jb21tb25TdHJpbmdzLmtl''@;'; put 'put ''eXMuZGF0ZXBpY2tlckN1cnJlbnREZWNhZGUpLHN0KDEpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dERlY2FkZSksc3QoMSksR2koInRpdGxlIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dERlY2FkZSksc3QoMikseHQoIm5n''@;'; put 'put ''Rm9yT2YiLHYueWVhclJhbmdlTW9kZWwueWVhclJhbmdlKSl9LGRlcGVuZGVuY2llczpba3MscWxdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLEF5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZT1oLHRoaXMuX2RhdGVOYXZpZ2F0''@;'; put 'put ''aW9uU2VydmljZT12LHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2U9eSx0aGlzLmNvbW1vblN0cmluZ3M9Q31nZXQgbW9udGhBdHRyU3RyaW5nKCl7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0''@;'; put 'put ''LHtDQUxFTkRBUl9NT05USDp0aGlzLmNhbGVuZGFyTW9udGh9KX1nZXQgeWVhckF0dHJTdHJpbmcoKXtyZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJTZWxlY3RZZWFyVGV4dCx7Q0FMRU5EQVJfWUVBUjp0aGlzLmNhbGVu''@;'; put 'put ''ZGFyWWVhci50b1N0cmluZygpfSl9Y2hhbmdlVG9Nb250aFZpZXcoKXt0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9Nb250aFZpZXcoKX1jaGFuZ2VUb1llYXJWaWV3KCl7dGhpcy5fdmlld01hbmFnZXJTZXJ2aWNlLmNoYW5nZVRvWWVhclZpZXcoKX1nZXQgY2FsZW5kYXJNb250''@;'; put 'put ''aCgpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc0FiYnJldmlhdGVkW3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhci5tb250aF19Z2V0IGNhbGVuZGFyWWVhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZp''@;'; put 'put ''Y2UuZGlzcGxheWVkQ2FsZW5kYXIueWVhcn1uZXh0TW9udGgoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UubW92ZVRvTmV4dE1vbnRoKCl9cHJldmlvdXNNb250aCgpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5tb3ZlVG9QcmV2aW91c01vbnRoKCl9Y3VycmVudE1vbnRoKCl7''@;'; put 'put ''dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb0N1cnJlbnRNb250aCgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh0TyksS3QoYnYpLEt0KGtaKSxLdChGYSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJj''@;'; put 'put ''bHItZGF5cGlja2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiZGF5cGlja2VyIiwhMCl9LGRlY2xzOjE4LHZhcnM6MTMsY29uc3RzOltbMSwiY2xyLXNyLW9ubHkiXSxbMSwiY2FsZW5kYXItaGVhZGVyIl0sWzEsImNhbGVuZGFyLXBpY2tlcnMi''@;'; put 'put ''XSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsIm1vbnRocGlja2VyLXRyaWdnZXIiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJ5ZWFycGlja2VyLXRyaWdnZXIiLDMsImNsaWNrIl0sWzEsImNhbGVuZGFyLXN3aXRjaGVycyJdLFsidHlw''@;'; put 'put ''ZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwic3dpdGNoZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsic2hhcGUiLCJldmVudCJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsInJpZ2h0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgs''@;'; put 'put ''dil7MSZoJiYodHQoMCwiZGl2IiwwKSxXdCgxKSxpdCgpLHR0KDIsImRpdiIsMSkoMywiZGl2IiwyKSg0LCJidXR0b24iLDMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jaGFuZ2VUb01vbnRoVmlldygpfSksV3QoNSksaXQoKSx0dCg2LCJidXR0b24iLDQpLFpuKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdi5jaGFuZ2VUb1llYXJWaWV3KCl9KSxXdCg3KSxpdCgpKCksdHQoOCwiZGl2Iiw1KSg5LCJidXR0b24iLDYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5wcmV2aW91c01vbnRoKCl9KSxicigxMCwiY2RzLWljb24iLDcpLGl0KCksdHQoMTEsImJ1''@;'; put 'put ''dHRvbiIsNiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmN1cnJlbnRNb250aCgpfSksYnIoMTIsImNkcy1pY29uIiw4KSxpdCgpLHR0KDEzLCJidXR0b24iLDYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5uZXh0TW9udGgoKX0pLGJyKDE0LCJjZHMtaWNvbiIsOSks''@;'; put 'put ''aXQoKSgpKCksYnIoMTUsImNsci1jYWxlbmRhciIpLHR0KDE2LCJkaXYiLDApLFd0KDE3KSxpdCgpKSwyJmgmJihzdCgxKSxqaSh2LmNvbW1vblN0cmluZ3Mua2V5cy5tb2RhbENvbnRlbnRTdGFydCksc3QoMyksR2koImFyaWEtbGFiZWwiLHYubW9udGhBdHRyU3RyaW5nKSgidGl0bGUiLHYu''@;'; put 'put ''bW9udGhBdHRyU3RyaW5nKSxzdCgxKSxVaSgiICIsdi5jYWxlbmRhck1vbnRoLCIgIiksc3QoMSksR2koImFyaWEtbGFiZWwiLHYueWVhckF0dHJTdHJpbmcpKCJ0aXRsZSIsdi55ZWFyQXR0clN0cmluZyksc3QoMSksVWkoIiAiLHYuY2FsZW5kYXJZZWFyLCIgIiksc3QoMiksR2koImFyaWEt''@;'; put 'put ''bGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c01vbnRoKSxzdCgxKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c01vbnRoKSxzdCgxKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBp''@;'; put 'put ''Y2tlckN1cnJlbnRNb250aCksc3QoMSksR2koInRpdGxlIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudE1vbnRoKSxzdCgxKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlck5leHRNb250aCksc3QoNCksamkodi5jb21tb25TdHJp''@;'; put 'put ''bmdzLmtleXMubW9kYWxDb250ZW50RW5kKSl9LGRlcGVuZGVuY2llczpbcHllLGtzXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSx5eWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuY29tbW9uU3RyaW5ncz1oLHRoaXMudmlld01hbmFnZXJTZXJ2aWNlPXZ9Z2V0IGlzTW9u''@;'; put 'put ''dGhWaWV3KCl7cmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLmlzTW9udGhWaWV3fWdldCBpc1llYXJWaWV3KCl7cmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLmlzWWVhclZpZXd9Z2V0IGlzRGF5Vmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc0RheVZp''@;'; put 'put ''ZXd9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KEZhKSxLdCh0TykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGF0ZXBpY2tlci12aWV3LW1hbmFnZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsImRpYWxvZyJdLGhv''@;'; put 'put ''c3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koImFyaWEtbW9kYWwiLCEwKSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlckRpYWxvZ0xhYmVsKSxIaSgiZGF0ZXBpY2tlciIsITApKX0sZmVhdHVyZXM6W2dvKFtlT10pXSxkZWNs''@;'; put 'put ''czozLHZhcnM6Myxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobm4oMCxKdWUsMSwwLCJjbHItbW9udGhwaWNrZXIiLDApLG5uKDEsYzgsMSwwLCJjbHIteWVhcnBpY2tlciIsMCksbm4oMixDcywxLDAsImNsci1kYXlwaWNrZXIiLDApKSwyJmgmJih4''@;'; put 'put ''dCgibmdJZiIsdi5pc01vbnRoVmlldyksc3QoMSkseHQoIm5nSWYiLHYuaXNZZWFyVmlldyksc3QoMSkseHQoIm5nSWYiLHYuaXNEYXlWaWV3KSl9LGRlcGVuZGVuY2llczpbZ3llLHZ5ZSxBeWUsQm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLHhaPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyB3''@;'; put 'put ''Z3tjb25zdHJ1Y3RvcihoLHYseSxDLEksaixjZSxfZSxSZSxOZSxLZSxodCxCdCl7c3VwZXIoQnQsS2UsTmUsaHQpLHRoaXMucmVuZGVyZXI9aCx0aGlzLnRvZ2dsZVNlcnZpY2U9dix0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZT15LHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlPUMs''@;'; put 'put ''dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPUksdGhpcy5kYXRlSU9TZXJ2aWNlPWosdGhpcy5jb21tb25TdHJpbmdzPWNlLHRoaXMuZm9jdXNTZXJ2aWNlPV9lLHRoaXMudmlld01hbmFnZXJTZXJ2aWNlPVJlLHRoaXMuY29udHJvbENsYXNzU2VydmljZT1OZSx0aGlzLmxheW91dFNlcnZp''@;'; put 'put ''Y2U9S2UsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPWh0LHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPUJ0LHRoaXMuZm9jdXM9ITEsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb2N1c1NlcnZpY2UuZm9jdXNDaGFuZ2Uuc3Vic2NyaWJlKCR0PT57dGhpcy5mb2N1cz0kdH0pKSx0aGlz''@;'; put 'put ''LnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UubWFya0FzVG91Y2hlZCgpfSkpfXNldCBjbHJQb3NpdGlvbihoKXtoJiZIYVtoXSYmKHRoaXMudmlld01hbmFnZXJTZXJ2aWNl''@;'; put 'put ''LnBvc2l0aW9uPUhhW2hdKX1nZXQgcG9wb3ZlclBvc2l0aW9uKCl7cmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9ufWdldCBvcGVuKCl7cmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVufXNldCBhY3Rpb25CdXR0b24oaCl7dGhpcy50b2dnbGVCdXR0b249aH1uZ0Fm''@;'; put 'put ''dGVyVmlld0luaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoaD0+e2g/dGhpcy5pbml0aWFsaXplQ2FsZW5kYXIoKTp0aGlzLnRvZ2dsZUJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9KSksdGhpcy5zdWJzY3Jp''@;'; put 'put ''cHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpKX1nZXQgaXNFbmFibGVkKCl7cmV0dXJuIHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZH1nZXQgaXNJbnB1dERhdGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5k''@;'; put 'put ''aXNhYmxlZHx8dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlJiZ0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlzYWJsZWR9Z2V0VG9nZ2xlQnV0dG9uTGFiZWwoaCl7aWYoaCl7Y29uc3Qgdj10aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGgudG9E''@;'; put 'put ''YXRlKCkpO3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZUNoYW5nZURhdGVMYWJlbCx7U0VMRUNURURfREFURTp2fSl8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJUb2dnbGV9cmV0dXJuIHRo''@;'; put 'put ''aXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJUb2dnbGVDaG9vc2VEYXRlTGFiZWx8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJUb2dnbGV9bGlzdGVuRm9yRGF0ZUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlD''@;'; put 'put ''aGFuZ2UucGlwZShjeSh0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheSkpLnN1YnNjcmliZShoPT57Y29uc3Qgdj10aGlzLmdldFRvZ2dsZUJ1dHRvbkxhYmVsKGgpLHk9dGhpcy50b2dnbGVCdXR0b24ubmF0aXZlRWxlbWVudDt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0''@;'; put 'put ''ZSh5LCJhcmlhLWxhYmVsIix2KSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh5LCJ0aXRsZSIsdil9KX1pbml0aWFsaXplQ2FsZW5kYXIoKXt0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pbml0aWFsaXplQ2FsZW5kYXIoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCkoS3QoRGEpLEt0KEV0KSxLdChidiksS3QoaHEpLEt0KE1aKSxLdChTWiksS3QoRmEpLEt0KEJmZSksS3QodE8pLEt0KGkzKSxLdChyMyw4KSxLdChTdSksS3QoTGYpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRhdGUtY29udGFpbmVy''@;'; put 'put ''Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAoWHVlLDUpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuYWN0aW9uQnV0dG9uPXkuZmlyc3QpfX0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJjbHItZGF0ZS1jb250YWluZXIiLCEw''@;'; put 'put ''KSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsdi5pc0lucHV0RGF0ZURpc2FibGVkKSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItcm93Iix2LmFkZEdyaWQoKSl9LGlucHV0czp7Y2xyUG9zaXRpb246ImNsclBvc2l0aW9uIn0sZmVhdHVyZXM6W2dvKFtzbCxFdCxadCxGaSxrWixp''@;'; put 'put ''MyxCZmUsU3UsU1osYnYsaHEsTVosdE8sTGZdKSxSb10sbmdDb250ZW50U2VsZWN0b3JzOnFqLGRlY2xzOjEzLHZhcnM6MTQsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbImNsclBvcG92ZXJBbmNob3IiLCIiLDEsImNsci1pbnB1''@;'; put 'put ''dC13cmFwcGVyIl0sWzEsImNsci1pbnB1dC1ncm91cCJdLFsidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b24iLCIiLCJjbGFzcyIsImNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiIsMywiZGlzYWJsZWQiLDQsIm5nSWYiXSxbImNsckZvY3VzVHJhcCIsIiIsNCwi''@;'; put 'put ''Y2xyUG9wb3ZlckNvbnRlbnQiLCJjbHJQb3BvdmVyQ29udGVudEF0IiwiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic3RhdHVzIiwiZGFuZ2VyIiwic2hh''@;'; put 'put ''cGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbInR5cGUi''@;'; put 'put ''LCJidXR0b24iLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwxLCJjbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24iLDMsImRpc2FibGVkIl0sWyJhY3Rpb25CdXR0b24iLCIiXSxbInN0YXR1cyIsImluZm8iLCJzaGFwZSIsImNhbGVuZGFyIl0sWyJjbHJGb2N1c1RyYXAiLCIiXSxb''@;'; put 'put ''InN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFs''@;'; put 'put ''aWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKERMKSxWaSgwKSxubigxLEt1ZSwxLDAsImxhYmVsIiwwKSx0dCgyLCJkaXYiLDEpKDMsImRpdiIsMikoNCwiZGl2IiwzKSxWaSg1LDEpLG5uKDYsJHVlLDMsMSwiYnV0dG9uIiw0KSxubig3LEtqLDEsMCwiY2xy''@;'; put 'put ''LWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIiw1KSxpdCgpLG5uKDgsJGosMSwwLCJjZHMtaWNvbiIsNiksbm4oOSxxdWUsMSwwLCJjZHMtaWNvbiIsNyksaXQoKSxubigxMCxoZywxLDAsIm5nLWNvbnRlbnQiLDApLG5uKDExLGVjZSwxLDAsIm5nLWNvbnRlbnQiLDApLG5uKDEyLElMLDEsMCwi''@;'; put 'put ''bmctY29udGVudCIsMCksaXQoKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLCF2LmxhYmVsJiZ2LmFkZEdyaWQoKSksc3QoMSkseHQoIm5nQ2xhc3MiLHYuY29udHJvbENsYXNzKCkpLHN0KDIpLEhpKCJjbHItZm9jdXMiLHYuZm9jdXMpLHN0KDIpLHh0KCJuZ0lmIix2LmlzRW5hYmxlZCksc3Qo''@;'; put 'put ''MSkseHQoImNsclBvcG92ZXJDb250ZW50Iix2Lm9wZW4pKCJjbHJQb3BvdmVyQ29udGVudEF0Iix2LnBvcG92ZXJQb3NpdGlvbikoImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsITApKCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiLCEwKSxzdCgxKSx4dCgi''@;'; put 'put ''bmdJZiIsdi5zaG93SW52YWxpZCksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93SGVscGVyKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93SW52YWxpZCksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbeXllLEJvLGFz''@;'; put 'put ''LEUxLHV0LEhvLGtzLFBpLHd3XSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxqZmU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFFMe2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqLGNlLF9lLFJlLE5lLEtlLGh0LEJ0KXtzdXBlcihoLHhaLHYsSSxDLHkpLHRoaXMuZWw9eSx0aGlzLnJlbmRlcmVyPUMs''@;'; put 'put ''dGhpcy5jb250cm9sPUksdGhpcy5jb250YWluZXI9aix0aGlzLmRhdGVJT1NlcnZpY2U9Y2UsdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2U9X2UsdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U9UmUsdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPU5lLHRoaXMucGxhdGZvcm1JZD1L''@;'; put 'put ''ZSx0aGlzLmZvY3VzU2VydmljZT1odCx0aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2U9QnQsdGhpcy5kYXRlQ2hhbmdlPW5ldyBmbighMSksdGhpcy5pbmRleD0xfXNldCBkYXRlKGgpe3RoaXMucHJldmlvdXNEYXRlQ2hhbmdlIT09aCYmdGhpcy51cGRhdGVEYXRlKHRoaXMuZ2V0VmFsaWRE''@;'; put 'put ''YXRlVmFsdWVGcm9tRGF0ZShoKSksdGhpcy5pbml0aWFsQ2xyRGF0ZUlucHV0VmFsdWV8fCh0aGlzLmluaXRpYWxDbHJEYXRlSW5wdXRWYWx1ZT1oKX1zZXQgbWluKGgpe3RoaXMuZGF0ZUlPU2VydmljZS5zZXRNaW5EYXRlKGgpfXNldCBtYXgoaCl7dGhpcy5kYXRlSU9TZXJ2aWNlLnNldE1h''@;'; put 'put ''eERhdGUoaCl9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMucG9wdWxhdGVTZXJ2aWNlc0Zyb21Db250YWluZXJDb21wb25lbnQoKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvclVzZXJTZWxlY3RlZERheUNoYW5nZXMoKSx0aGlzLmxpc3RlbkZvckNvbnRy''@;'; put 'put ''b2xWYWx1ZUNoYW5nZXMoKSx0aGlzLmxpc3RlbkZvclRvdWNoQ2hhbmdlcygpLHRoaXMubGlzdGVuRm9yRGlydHlDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JJbnB1dFJlZm9jdXMoKSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5wcm9jZXNzSW5pdGlhbElucHV0cygpfXNldEZvY3VzU3RhdGVz''@;'; put 'put ''KCl7dGhpcy5zZXRGb2N1cyghMCl9dHJpZ2dlclZhbGlkYXRpb24oKXtzdXBlci50cmlnZ2VyVmFsaWRhdGlvbigpLHRoaXMuc2V0Rm9jdXMoITEpfWdldCBwbGFjZWhvbGRlclRleHQoKXtyZXR1cm4gdGhpcy5wbGFjZWhvbGRlcj90aGlzLnBsYWNlaG9sZGVyOnRoaXMuZGF0ZUlPU2Vydmlj''@;'; put 'put ''ZS5wbGFjZWhvbGRlclRleHR9Z2V0IGlucHV0VHlwZSgpe3JldHVybiBhbCh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLnVzaW5nTmF0aXZlRGF0ZXBpY2tlcigpPyJkYXRlIjoidGV4dCJ9b25WYWx1ZUNoYW5nZShoKXtjb25zdCB2PXRoaXMuZGF0ZUlPU2VydmljZS5nZXREYXRlVmFsdWVGcm9t''@;'; put 'put ''RGF0ZVN0cmluZyhoLnZhbHVlKTtpZih0aGlzLnVzaW5nQ2xhcml0eURhdGVwaWNrZXIoKSYmdil0aGlzLnVwZGF0ZURhdGUodiwhMCk7ZWxzZSBpZih0aGlzLnVzaW5nTmF0aXZlRGF0ZXBpY2tlcigpKXtjb25zdFt5LEMsSV09aC52YWx1ZS5zcGxpdCgiLSIpO3RoaXMudXBkYXRlRGF0ZShu''@;'; put 'put ''ZXcgRGF0ZSgreSwrQy0xLCtJKSwhMCl9ZWxzZSB0aGlzLmVtaXREYXRlT3V0cHV0KG51bGwpfXNldCBkaXNhYmxlZChoKXt0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UmJnRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5zZXREaXNhYmxlZCh5cChoKSl9Z2V0IGRpc2FibGVkKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT90aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlzYWJsZWQ6bnVsbH11c2luZ0NsYXJpdHlEYXRlcGlja2VyKCl7cmV0dXJuIHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZH11c2luZ05hdGl2ZURhdGVwaWNr''@;'; put 'put ''ZXIoKXtyZXR1cm4hdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UuaXNFbmFibGVkfXNldEZvY3VzKGgpe3RoaXMuZm9jdXNTZXJ2aWNlJiYodGhpcy5mb2N1c1NlcnZpY2UuZm9jdXNlZD1oKX1wb3B1bGF0ZVNlcnZpY2VzRnJvbUNvbnRhaW5lckNvbXBvbmVudCgpe3RoaXMuY29udGFp''@;'; put 'put ''bmVyfHwodGhpcy5kYXRlSU9TZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKFNaKSx0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihidiksdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U9dGhpcy5nZXRQcm92aWRl''@;'; put 'put ''ckZyb21Db250YWluZXIoaHEpLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihNWikpfXByb2Nlc3NJbml0aWFsSW5wdXRzKCl7dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKT90aGlzLnVwZGF0ZURhdGUodGhpcy5kYXRlSU9T''@;'; put 'put ''ZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKHRoaXMuY29udHJvbC52YWx1ZSkpOnRoaXMudXBkYXRlRGF0ZSh0aGlzLmluaXRpYWxDbHJEYXRlSW5wdXRWYWx1ZSl9dXBkYXRlRGF0ZShoLHY9ITEpe2NvbnN0IHk9dGhpcy5nZXRWYWxpZERhdGVWYWx1ZUZyb21EYXRlKGgpO3Y/''@;'; put 'put ''dGhpcy5lbWl0RGF0ZU91dHB1dCh5KTp0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZT15LHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlJiYodGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk9eT9uZXcgczQoeS5nZXRGdWxsWWVhcigpLHkuZ2V0TW9udGgoKSx5LmdldERhdGUo''@;'; put 'put ''KSk6bnVsbCksdGhpcy51cGRhdGVJbnB1dCh5KX11cGRhdGVJbnB1dChoKXtpZihoKXtjb25zdCB2PXRoaXMuZGF0ZUlPU2VydmljZS50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoaCk7dGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKT8oaC5zZXRNaW51dGVzKGguZ2V0TWludXRlcygp''@;'; put 'put ''LWguZ2V0VGltZXpvbmVPZmZzZXQoKSksdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInZhbHVlQXNEYXRlIixoKSk6dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSYmdiE9PXRoaXMuY29udHJvbC52YWx1ZT90aGlzLmNvbnRyb2wuY29udHJv''@;'; put 'put ''bC5zZXRWYWx1ZSh2KTp0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwidmFsdWUiLHYpfWVsc2UgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInZhbHVlIiwiIil9Z2V0VmFsaWREYXRlVmFsdWVGcm9tRGF0ZSho''@;'; put 'put ''KXtpZih0aGlzLmRhdGVJT1NlcnZpY2Upe2NvbnN0IHY9dGhpcy5kYXRlSU9TZXJ2aWNlLnRvTG9jYWxlRGlzcGxheUZvcm1hdFN0cmluZyhoKTtyZXR1cm4gdGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKHYpfXJldHVybiBudWxsfWVtaXREYXRlT3V0cHV0''@;'; put 'put ''KGgpeyFmdW5jdGlvbiBRT2UoZCxnKXtyZXR1cm4gZCBpbnN0YW5jZW9mIERhdGUmJmcgaW5zdGFuY2VvZiBEYXRlJiZkLmdldEZ1bGxZZWFyKCk9PT1nLmdldEZ1bGxZZWFyKCkmJmQuZ2V0TW9udGgoKT09PWcuZ2V0TW9udGgoKSYmZC5nZXREYXRlKCk9PT1nLmdldERhdGUoKX0oaCx0aGlz''@;'; put 'put ''LnByZXZpb3VzRGF0ZUNoYW5nZSk/KHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGgpLHRoaXMucHJldmlvdXNEYXRlQ2hhbmdlPWgpOiFoJiZ0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZSYmKHRoaXMuZGF0ZUNoYW5nZS5lbWl0KG51bGwpLHRoaXMucHJldmlvdXNEYXRlQ2hhbmdlPW51bGwpfWRhdGVw''@;'; put 'put ''aWNrZXJIYXNGb3JtQ29udHJvbCgpe3JldHVybiEhdGhpcy5jb250cm9sfWxpc3RlbkZvckNvbnRyb2xWYWx1ZUNoYW5nZXMoKXtyZXR1cm4gVjAodGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSkucGlwZShtMihoPT5oKSxhaCgoKT0+dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcyks''@;'; put 'put ''bTIoKCk9PiF0aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZWxlbWVudElzRm9jdXNlZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKSkuc3Vic2NyaWJlKGg9PnRoaXMudXBkYXRlRGF0ZSh0aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcoaCkpKX1saXN0ZW5G''@;'; put 'put ''b3JVc2VyU2VsZWN0ZWREYXlDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Q2hhbmdlLnN1YnNjcmliZShoPT50aGlzLnVwZGF0ZURhdGUoaC50b0RhdGUoKSwhMCkpfWxpc3RlbkZvclRvdWNoQ2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVG''@;'; put 'put ''b3JtQ29udHJvbFNlcnZpY2UudG91Y2hlZENoYW5nZS5waXBlKG0yKCgpPT50aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpKSkuc3Vic2NyaWJlKCgpPT50aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCkpfWxpc3RlbkZvckRpcnR5Q2hhbmdlcygpe3JldHVybiB0aGlz''@;'; put 'put ''LmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlydHlDaGFuZ2UucGlwZShtMigoKT0+dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSkpLnN1YnNjcmliZSgoKT0+dGhpcy5jb250cm9sLmNvbnRyb2wubWFya0FzRGlydHkoKSl9bGlzdGVuRm9ySW5wdXRSZWZvY3VzKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Q2hhbmdlLnBpcGUobTIoaD0+ISFoKSkuc3Vic2NyaWJlKCgpPT50aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNJbnB1dCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXIpLEt0KHhzKSxLdChfbyksS3QoRGEpLEt0KERjLDEwKSxLdCh4Wiw4KSxLdChTWiw4KSxLdChidiw4KSxLdChocSw4KSxLdChNWiw4KSxLdChFMiksS3QoQmZlLDgpLEt0KGVPKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltb''@;'; put 'put ''IiIsImNsckRhdGUiLCIiXV0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zZXRGb2N1c1N0YXRlcygpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYudHJpZ2dlclZhbGlkYXRpb24oKX0pKCJjaGFu''@;'; put 'put ''Z2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uVmFsdWVDaGFuZ2UoQy50YXJnZXQpfSksMiZoJiYoRDMoImRpc2FibGVkIix2LmRpc2FibGVkKSxHaSgicGxhY2Vob2xkZXIiLHYucGxhY2Vob2xkZXJUZXh0KSgidHlwZSIsdi5pbnB1dFR5cGUpLEhpKCJjbHItaW5wdXQiLCEwKSl9LGlucHV0''@;'; put 'put ''czp7cGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixkYXRlOlsiY2xyRGF0ZSIsImRhdGUiXSxtaW46Im1pbiIsbWF4OiJtYXgiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LG91dHB1dHM6e2RhdGVDaGFuZ2U6ImNsckRhdGVDaGFuZ2UifSxmZWF0dXJlczpbZ28oW2VPXSksUm9dfSksZH0pKCksJE9l''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyhZaCxVaCwkNyxSVix2WCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxVbCx3''@;'; put 'put ''cCxsbyxacyxjcSx0Zl1dfSksZH0pKCk7bmV3IE90KHZvaWQgMCk7bGV0IHRSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7ZHMuYWRkSWNvbnMoVUQsJHNlLFloLFVoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJv''@;'; put 'put ''KHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLHhmLFpzLHRmXSx0Zl19KSxkfSkoKSx3eWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2R5bmFtaWM9ITF9bmdPbkluaXQoKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLmRpc2FibGVHcmlkKCl9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItcmFkaW8td3JhcHBlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LGFzLDcpLDImaCl7bGV0IEM7emko''@;'; put 'put ''Qz1BaSgpKSYmKHYubGFiZWw9Qy5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImNsci1yYWRpby13cmFwcGVyIiwhMCl9LGZlYXR1cmVzOltnbyhbc2xdKV0sbmdDb250ZW50U2VsZWN0b3JzOmVaLGRlY2xzOjMsdmFyczoxLGNvbnN0czpb''@;'; put 'put ''WzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChrJCksVmkoMCksVmkoMSwxKSxubigyLHJjZSwxLDAsImxhYmVsIiwwKSksMiZoJiYoc3QoMikseHQoIm5nSWYiLCF2LmxhYmVsKSl9LGRlcGVuZGVuY2llczpbQm8sYXNdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgp''@;'; put 'put ''LFpmZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgUUx7Y29uc3RydWN0b3IoaCx2LHksQyxJKXtzdXBlcihoLHd5ZSx2LHksQyxJKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXIpLEt0KHhzKSxLdChEYywxMCksS3QoRGEpLEt0KF9vKSl9LGQu''@;'; put 'put ''XHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclJhZGlvIiwiIl1dLGZlYXR1cmVzOltSb119KSxkfSkoKSxuUmU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIHdne2NvbnN0cnVjdG9yKGgsdix5LEMpe3N1cGVyKEMsaCx2LHkpLHRoaXMubGF5b3V0U2VydmljZT1oLHRoaXMu''@;'; put 'put ''Y29udHJvbENsYXNzU2VydmljZT12LHRoaXMubmdDb250cm9sU2VydmljZT15LHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPUMsdGhpcy5pbmxpbmU9ITF9c2V0IGNscklubGluZShoKXt0aGlzLmlubGluZT0ic3RyaW5nIj09dHlwZW9mIGg/ImZhbHNlIiE9PWg6ISFofWdldCBjbHJJbmxp''@;'; put 'put ''bmUoKXtyZXR1cm4gdGhpcy5pbmxpbmV9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXRBcmlhUm9sZXMoKX1zZXRBcmlhUm9sZXMoKXt0aGlzLnJvbGU9dGhpcy5yYWRpb3MubGVuZ3RoPyJncm91cCI6bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXco''@;'; put 'put ''aHx8ZCkoS3QocjMsOCksS3QoaTMpLEt0KFN1KSxLdChMZikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItcmFkaW8tY29udGFpbmVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJlMwKHksWmZlLDUpLDImaCl7bGV0IEM7emkoQz1B''@;'; put 'put ''aSgpKSYmKHYucmFkaW9zPUMpfX0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJihHaSgicm9sZSIsdi5yb2xlKSxIaSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT12LmNvbnRyb2w/bnVsbDp2LmNvbnRy''@;'; put 'put ''b2wuZGlzYWJsZWQpKCJjbHItcm93Iix2LmFkZEdyaWQoKSkpfSxpbnB1dHM6e2NscklubGluZToiY2xySW5saW5lIn0sZmVhdHVyZXM6W2dvKFtTdSxMZixpMyxBcF0pLFJvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6YWNlLGRlY2xzOjEwLHZhcnM6OSxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNs''@;'; put 'put ''ci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItc3VidGV4dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic3RhdHVzIiwiZGFuZ2VyIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYi''@;'; put 'put ''XSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbInN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4i''@;'; put 'put ''LCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCRoKSxWaSgwKSxubigx''@;'; put 'put ''LFMkLDEsMCwibGFiZWwiLDApLHR0KDIsImRpdiIsMSksVmkoMywxKSx0dCg0LCJkaXYiLDIpLG5uKDUsaWNlLDEsMCwibmctY29udGVudCIsMCksbm4oNixvY2UsMSwwLCJjZHMtaWNvbiIsMyksbm4oNyxndiwxLDAsImNkcy1pY29uIiw0KSxubig4LHRaLDEsMCwibmctY29udGVudCIsMCks''@;'; put 'put ''bm4oOSxNJCwxLDAsIm5nLWNvbnRlbnQiLDApLGl0KCkoKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLCF2LmxhYmVsJiZ2LmFkZEdyaWQoKSksc3QoMSksSGkoImNsci1jb250cm9sLWlubGluZSIsdi5jbHJJbmxpbmUpLHh0KCJuZ0NsYXNzIix2LmNvbnRyb2xDbGFzcygpKSxzdCgzKSx4dCgi''@;'; put 'put ''bmdJZiIsdi5zaG93SGVscGVyKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93SW52YWxpZCksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93SW52YWxpZCksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbQm8sYXMsRTEs''@;'; put 'put ''a3NdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLHJSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7ZHMuYWRkSWNvbnMoWWgsVWgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5q''@;'; put 'put ''PW0wKHtpbXBvcnRzOltbYWEsdGYsVWwsWnNdLHRmXX0pLGR9KSgpLGlSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7ZHMuYWRkSWNvbnMoWWgsVWgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0p''@;'; put 'put ''LGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWEsdGYsVWwsWnNdLHRmXX0pLGR9KSgpLFRaPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyB3Z3tjb25zdHJ1Y3RvcihoLHYseSxDKXtzdXBlcihDLGgsdix5KSx0aGlzLmxheW91dFNlcnZpY2U9aCx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9dix0''@;'; put 'put ''aGlzLm5nQ29udHJvbFNlcnZpY2U9eSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1DLHRoaXMubXVsdGk9ITF9bmdPbkluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm5nQ29udHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKGg9PntoJiYodGhpcy5tdWx0''@;'; put 'put ''aT1oLnZhbHVlQWNjZXNzb3IgaW5zdGFuY2VvZiBLayx0aGlzLmNvbnRyb2w9aCl9KSl9d3JhcHBlckNsYXNzKCl7cmV0dXJuIHRoaXMubXVsdGk/ImNsci1tdWx0aXNlbGVjdC13cmFwcGVyIjoiY2xyLXNlbGVjdC13cmFwcGVyIn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCkoS3QocjMsOCksS3QoaTMpLEt0KFN1KSxLdChMZikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItc2VsZWN0LWNvbnRhaW5lciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LEtrLDUpLDImaCl7bGV0''@;'; put 'put ''IEM7emkoQz1BaSgpKSYmKHYubXVsdGlwbGU9Qy5maXJzdCl9fSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsbnVsbD09di5jb250cm9sP251bGw6di5jb250cm9s''@;'; put 'put ''LmRpc2FibGVkKSgiY2xyLXJvdyIsdi5hZGRHcmlkKCkpfSxmZWF0dXJlczpbZ28oW0xmLFN1LHNsLGkzXSksUm9dLG5nQ29udGVudFNlbGVjdG9yczpSTCxkZWNsczoxMCx2YXJzOjgsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxb''@;'; put 'put ''MywibmdDbGFzcyJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1j''@;'; put 'put ''aXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2st''@;'; put 'put ''Y2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChPTCksVmkoMCksbm4oMSxFJCwxLDAsImxhYmVsIiwwKSx0dCgyLCJkaXYiLDEpKDMsImRpdiIsMiksVmko''@;'; put 'put ''NCwxKSxubig1LGxjZSwxLDAsImNkcy1pY29uIiwzKSxubig2LGFvLDEsMCwiY2RzLWljb24iLDQpLGl0KCksbm4oNyxuWiwxLDAsIm5nLWNvbnRlbnQiLDApLG5uKDgsSTEsMSwwLCJuZy1jb250ZW50IiwwKSxubig5LHJaLDEsMCwibmctY29udGVudCIsMCksaXQoKSksMiZoJiYoc3QoMSks''@;'; put 'put ''eHQoIm5nSWYiLCF2LmxhYmVsJiZ2LmFkZEdyaWQoKSksc3QoMSkseHQoIm5nQ2xhc3MiLHYuY29udHJvbENsYXNzKCkpLHN0KDEpLHh0KCJuZ0NsYXNzIix2LndyYXBwZXJDbGFzcygpKSxzdCgyKSx4dCgibmdJZiIsdi5zaG93SW52YWxpZCksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1ZhbGlk''@;'; put 'put ''KSxzdCgxKSx4dCgibmdJZiIsdi5zaG93SGVscGVyKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93SW52YWxpZCksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbQm8sYXMsRTEsa3NdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLElaPSgoKT0+e2NsYXNzIGQgZXh0''@;'; put 'put ''ZW5kcyBRTHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3N1cGVyKGgsVFosdix5LEMsSSksdGhpcy5pbmRleD0xfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChNciksS3QoeHMpLEt0KERjLDEwKSxLdChEYSksS3QoX28pKX0sZC5cdTAyNzVkaXI9''@;'; put 'put ''WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyU2VsZWN0IiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiY2xyLXNlbGVjdCIsITApfSxmZWF0dXJlczpbUm9dfSksZH0pKCksb1JlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5h''@;'; put 'put ''ZGRJY29ucyhZaCxVaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSx4Zixacyx0Zl0sdGZdfSksZH0pKCksYnllPSgoKT0+e2NsYXNzIGQgZXh0ZW5k''@;'; put 'put ''cyB3Z3t9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz10MihkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdGV4dGFyZWEtY29udGFpbmVyIl1dLGhvc3RWYXJzOjYs''@;'; put 'put ''aG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT12LmNvbnRyb2w/bnVsbDp2LmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93Iix2LmFkZEdyaWQoKSl9LGZlYXR1cmVzOltnbyhb''@;'; put 'put ''TGYsU3Usc2wsaTNdKSxSb10sbmdDb250ZW50U2VsZWN0b3JzOmlaLGRlY2xzOjEwLHZhcnM6Nyxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItdGV4dGFyZWEtd3JhcHBlciJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUt''@;'; put 'put ''aWNvbiIsInN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRk''@;'; put 'put ''ZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlk''@;'; put 'put ''ZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChQTCksVmkoMCksbm4oMSxCTCwxLDAsImxhYmVsIiwwKSx0dCgyLCJkaXYiLDEpKDMsImRpdiIsMiksVmkoNCwxKSxubig1LHgkLDEsMCwiY2RzLWljb24iLDMpLG5uKDYs''@;'; put 'put ''VCQsMSwwLCJjZHMtaWNvbiIsNCksaXQoKSxubig3LEkkLDEsMCwibmctY29udGVudCIsMCksbm4oOCxUMCwxLDAsIm5nLWNvbnRlbnQiLDApLG5uKDksc2NlLDEsMCwibmctY29udGVudCIsMCksaXQoKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLCF2LmxhYmVsJiZ2LmFkZEdyaWQoKSksc3Qo''@;'; put 'put ''MSkseHQoIm5nQ2xhc3MiLHYuY29udHJvbENsYXNzKCkpLHN0KDMpLHh0KCJuZ0lmIix2LnNob3dJbnZhbGlkKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93VmFsaWQpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dIZWxwZXIpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dJbnZhbGlkKSxzdCgxKSx4dCgi''@;'; put 'put ''bmdJZiIsdi5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltCbyxhcyxFMSxrc10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksYVJlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBRTHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3N1cGVyKGgsYnllLHYseSxDLEkpLHRoaXMuaW5kZXg9MX19cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXIpLEt0KHhzKSxLdChEYywxMCksS3QoRGEpLEt0KF9vKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclRleHRhcmVhIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1''@;'; put 'put ''bmN0aW9uKGgsdil7MiZoJiZIaSgiY2xyLXRleHRhcmVhIiwhMCl9LGZlYXR1cmVzOltSb119KSxkfSkoKSxsUmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKFloLFVoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQu''@;'; put 'put ''XHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLHhmLFpzLHRmXSx0Zl19KSxkfSkoKSxfeWU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9''@;'; put 'put ''KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXSx0ZixDT2UsT09lLCRPZSxjeWUsdFJlLHJSZSxvUmUsbFJlLGlSZSxST2VdfSksZH0pKCksdTQ9KCgpPT57Y2xhc3MgZHt1c2VyRGVmaW5lZFdpZHRoKGgpe2guY2xhc3NMaXN0LmFkZCgiZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJvIik7''@;'; put 'put ''Y29uc3Qgdj10aGlzLmNsaWVudFJlY3QoaCkud2lkdGg7cmV0dXJuIGguY2xhc3NMaXN0LnJlbW92ZSgiZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJvIiksdn1zY3JvbGxCYXJXaWR0aChoKXtyZXR1cm4gaC5vZmZzZXRXaWR0aC1oLmNsaWVudFdpZHRofXNjcm9sbFdpZHRoKGgpe3JldHVybiBo''@;'; put 'put ''LnNjcm9sbFdpZHRofHwwfWNvbXB1dGVkSGVpZ2h0KGgpe3JldHVybiBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGgpLmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpLDEwKX1jbGllbnRSZWN0KGgpe2NvbnN0IHY9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOnBhcnNl''@;'; put 'put ''SW50KHYudG9wLDEwKSxib3R0b206cGFyc2VJbnQodi5ib3R0b20sMTApLGxlZnQ6cGFyc2VJbnQodi5sZWZ0LDEwKSxyaWdodDpwYXJzZUludCh2LnJpZ2h0LDEwKSx3aWR0aDpwYXJzZUludCh2LndpZHRoLDEwKSxoZWlnaHQ6cGFyc2VJbnQodi5oZWlnaHQsMTApfX1taW5XaWR0aChoKXty''@;'; put 'put ''ZXR1cm4gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShoKS5nZXRQcm9wZXJ0eVZhbHVlKCJtaW4td2lkdGgiKSwxMCl9Zm9jdXMoaCl7aC5mb2N1cygpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZh''@;'; put 'put ''Y3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxkcT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5lbGVtZW50PWgsdGhpcy5kb21BZGFwdGVyPXYsdGhpcy5zdGFydEhlaWdodD0wfWdldCBleHBhbmRBbmltYXRpb24oKXtyZXR1cm57dmFsdWU6dGhpcy5jbHJFeHBhbmRUcmln''@;'; put 'put ''Z2VyLHBhcmFtczp7c3RhcnRIZWlnaHQ6dGhpcy5zdGFydEhlaWdodH19fWFuaW1hdGlvbkRvbmUoKXt0aGlzLnVwZGF0ZVN0YXJ0SGVpZ2h0KCl9dXBkYXRlU3RhcnRIZWlnaHQoKXt0aGlzLnN0YXJ0SGVpZ2h0PXRoaXMuZG9tQWRhcHRlci5jb21wdXRlZEhlaWdodCh0aGlzLmVsZW1lbnQu''@;'; put 'put ''bmF0aXZlRWxlbWVudCl8fDB9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSxLdCh1NCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iXV0saG9zdFZhcnM6MSxob3N0Qmlu''@;'; put 'put ''ZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpfKCJAZXhwYW5kQW5pbWF0aW9uLmRvbmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuYW5pbWF0aW9uRG9uZSgpfSksMiZoJiZhNygiQGV4cGFuZEFuaW1hdGlvbiIsdi5leHBhbmRBbmltYXRpb24pfSxpbnB1dHM6e2NsckV4cGFuZFRyaWdnZXI6ImNs''@;'; put 'put ''ckV4cGFuZFRyaWdnZXIifSxmZWF0dXJlczpbZ28oW3U0XSldLG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il0sZGF0YTp7''@;'; put 'put ''YW5pbWF0aW9uOltKYygiZXhwYW5kQW5pbWF0aW9uIixbYnUoInRydWUgPD0+IGZhbHNlIixbeGwoe2hlaWdodDoie3tzdGFydEhlaWdodH19cHgiLG92ZXJmbG93OiJoaWRkZW4ifSksZmMoIjAuMnMgZWFzZS1pbi1vdXQiLHhsKHtoZWlnaHQ6IioifSkpXSldKV19fSksZH0pKCksQ3llPSgo''@;'; put 'put ''KT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYV1dfSksZH0pKCk7dmFyIGdoPSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5EUkFHX1NUQVJU''@;'; put 'put ''PTBdPSJEUkFHX1NUQVJUIixkW2QuRFJBR19NT1ZFPTFdPSJEUkFHX01PVkUiLGRbZC5EUkFHX0VORD0yXT0iRFJBR19FTkQiLGRbZC5EUkFHX0VOVEVSPTNdPSJEUkFHX0VOVEVSIixkW2QuRFJBR19MRUFWRT00XT0iRFJBR19MRUFWRSIsZFtkLkRST1A9NV09IkRST1AifShnaHx8KGdoPXt9''@;'; put 'put ''KSksZ2gpKSgpO2xldCBreWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZHJhZ1N0YXJ0PW5ldyAkZSx0aGlzLmRyYWdNb3ZlPW5ldyAkZSx0aGlzLmRyYWdFbmQ9bmV3ICRlLHRoaXMuZHJvcD1uZXcgJGV9Z2V0IGRyYWdTdGFydGVkKCl7cmV0dXJuIHRoaXMuZHJhZ1N0YXJ0''@;'; put 'put ''LmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnTW92ZWQoKXtyZXR1cm4gdGhpcy5kcmFnTW92ZS5hc09ic2VydmFibGUoKX1nZXQgZHJhZ0VuZGVkKCl7cmV0dXJuIHRoaXMuZHJhZ0VuZC5hc09ic2VydmFibGUoKX1nZXQgZHJvcHBlZCgpe3JldHVybiB0aGlzLmRyb3AuYXNPYnNlcnZhYmxlKCl9''@;'; put 'put ''YnJvYWRjYXN0KGgpe3N3aXRjaChoLnR5cGUpe2Nhc2UgZ2guRFJBR19TVEFSVDp0aGlzLmRyYWdTdGFydC5uZXh0KGgpO2JyZWFrO2Nhc2UgZ2guRFJBR19NT1ZFOnRoaXMuZHJhZ01vdmUubmV4dChoKTticmVhaztjYXNlIGdoLkRSQUdfRU5EOnRoaXMuZHJhZ0VuZC5uZXh0KGgpO2JyZWFr''@;'; put 'put ''O2Nhc2UgZ2guRFJPUDp0aGlzLmRyb3AubmV4dChoKX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLERaPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMubmdab25lPWgsdGhpcy5yZW5kZXJlcj12LHRoaXMuZXZlbnRCdXM9eSx0aGlzLmxpc3RlbmVycz1bXSx0aGlzLmRyYWdTdGFydD1uZXcgJGUsdGhpcy5kcmFnTW92ZT1uZXcgJGUsdGhpcy5kcmFnRW5kPW5ldyAkZSx0aGlzLmhhc0RyYWdT''@;'; put 'put ''dGFydGVkPSExLHRoaXMuZHJhZ1N0YXJ0RGVsYXk9MH1nZXQgZHJhZ1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5kcmFnU3RhcnQuYXNPYnNlcnZhYmxlKCl9Z2V0IGRyYWdNb3ZlZCgpe3JldHVybiB0aGlzLmRyYWdNb3ZlLmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnRW5kZWQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kcmFnRW5kLmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnU3RhcnRQb3NpdGlvbigpe3JldHVybiB0aGlzLmluaXRpYWxQb3NpdGlvbn1hdHRhY2hEcmFnTGlzdGVuZXJzKGgpe3RoaXMuZHJhZ2dhYmxlRWw9aCx0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMuY3VzdG9tRHJhZ0V2ZW50KHRoaXMu''@;'; put 'put ''ZHJhZ2dhYmxlRWwsIm1vdXNlZG93biIsIm1vdXNlbW92ZSIsIm1vdXNldXAiKSksdGhpcy5saXN0ZW5lcnMucHVzaCh0aGlzLmN1c3RvbURyYWdFdmVudCh0aGlzLmRyYWdnYWJsZUVsLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiKSl9ZGV0YWNoRHJhZ0xpc3RlbmVycygp''@;'; put 'put ''e3RoaXMubGlzdGVuZXJzJiZ0aGlzLmxpc3RlbmVycy5tYXAoaD0+aCgpKSx0aGlzLm5lc3RlZExpc3RlbmVycyYmdGhpcy5uZXN0ZWRMaXN0ZW5lcnMubWFwKGg9PmgoKSksdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXImJnRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxp''@;'; put 'put ''c3RlbmVyKCl9Z2V0TmF0aXZlRXZlbnRPYmplY3QoaCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLCJjaGFuZ2VkVG91Y2hlcyIpP2guY2hhbmdlZFRvdWNoZXNbMF06aH1jdXN0b21EcmFnRXZlbnQoaCx2LHksQyl7cmV0dXJuIHRoaXMucmVuZGVyZXIu''@;'; put 'put ''bGlzdGVuKGgsdixJPT57dGhpcy5pbml0aWFsUG9zaXRpb249e3BhZ2VYOnRoaXMuZ2V0TmF0aXZlRXZlbnRPYmplY3QoSSkucGFnZVgscGFnZVk6dGhpcy5nZXROYXRpdmVFdmVudE9iamVjdChJKS5wYWdlWX0sdGhpcy5uZXN0ZWRMaXN0ZW5lcnM9W10sdGhpcy5uZ1pvbmUucnVuT3V0c2lk''@;'; put 'put ''ZUFuZ3VsYXIoKCk9Pnt0aGlzLm5lc3RlZExpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsInNlbGVjdHN0YXJ0IixqPT57ai5wcmV2ZW50RGVmYXVsdCgpLGouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9KSksdGhpcy5jaGVja0RyYWdTdGFydEJvdW5k''@;'; put 'put ''YXJ5KHkpLHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lciYmdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIoKSx0aGlzLmhhc0RyYWdTdGFydGVkPSEwLHRoaXMuYnJvYWRjYXN0KEks''@;'; put 'put ''Z2guRFJBR19TVEFSVCksdGhpcy5uZXN0ZWRMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbigiZG9jdW1lbnQiLHksaj0+e2ouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5oYXNEcmFnU3RhcnRlZCYmdGhpcy5icm9hZGNhc3QoaixnaC5EUkFHX01PVkUpfSkpfSx0''@;'; put 'put ''aGlzLmRyYWdTdGFydERlbGF5KX0pLHRoaXMubmVzdGVkTGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oImRvY3VtZW50IixDLGo9Pnt0aGlzLmhhc0RyYWdTdGFydGVkJiYodGhpcy5oYXNEcmFnU3RhcnRlZD0hMSx0aGlzLmJyb2FkY2FzdChqLGdoLkRSQUdfRU5EKSksY2xl''@;'; put 'put ''YXJUaW1lb3V0KHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0KSx0aGlzLm5lc3RlZExpc3RlbmVycy5tYXAoY2U9PmNlKCkpLHRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyJiZ0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcigpfSkpfSl9Y2hlY2tEcmFnU3Rh''@;'; put 'put ''cnRCb3VuZGFyeShoKXt0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcj10aGlzLnJlbmRlcmVyLmxpc3RlbigiZG9jdW1lbnQiLGgsdj0+e2NvbnN0IHk9TWF0aC5hYnModGhpcy5nZXROYXRpdmVFdmVudE9iamVjdCh2KS5wYWdlWC10aGlzLmluaXRpYWxQb3NpdGlvbi5wYWdl''@;'; put 'put ''WCksQz1NYXRoLmFicyh0aGlzLmdldE5hdGl2ZUV2ZW50T2JqZWN0KHYpLnBhZ2VZLXRoaXMuaW5pdGlhbFBvc2l0aW9uLnBhZ2VZKTsoeT4xfHxDPjEpJiYoY2xlYXJUaW1lb3V0KHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0KSx0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5l''@;'; put 'put ''ciYmdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIoKSl9KX1icm9hZGNhc3QoaCx2KXtjb25zdCB5PXRoaXMuZ2VuZXJhdGVEcmFnRXZlbnQoaCx2KTtzd2l0Y2goeS50eXBlKXtjYXNlIGdoLkRSQUdfU1RBUlQ6dGhpcy5kcmFnU3RhcnQubmV4dCh5KTticmVhaztjYXNlIGdo''@;'; put 'put ''LkRSQUdfTU9WRTp0aGlzLmRyYWdNb3ZlLm5leHQoeSk7YnJlYWs7Y2FzZSBnaC5EUkFHX0VORDp0aGlzLmRyYWdFbmQubmV4dCh5KX15Lmdob3N0RWxlbWVudD10aGlzLmdob3N0RWxlbWVudCx5LmRyb3BQb2ludFBvc2l0aW9uPXRoaXMuZHJvcFBvaW50UG9zaXRpb24sdGhpcy5ldmVudEJ1''@;'; put 'put ''cy5icm9hZGNhc3QoeSl9Z2VuZXJhdGVEcmFnRXZlbnQoaCx2KXtjb25zdCB5PXRoaXMuZ2V0TmF0aXZlRXZlbnRPYmplY3QoaCk7cmV0dXJue3R5cGU6dixkcmFnUG9zaXRpb246e3BhZ2VYOnkucGFnZVgscGFnZVk6eS5wYWdlWSxtb3ZlWDp5LnBhZ2VYLXRoaXMuaW5pdGlhbFBvc2l0aW9u''@;'; put 'put ''LnBhZ2VYLG1vdmVZOnkucGFnZVktdGhpcy5pbml0aWFsUG9zaXRpb24ucGFnZVl9LGdyb3VwOnRoaXMuZ3JvdXAsZHJhZ0RhdGFUcmFuc2Zlcjp0aGlzLmRyYWdEYXRhVHJhbnNmZXIsZ2hvc3RFbGVtZW50OnRoaXMuZ2hvc3RFbGVtZW50fX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoZGwpLEVpKERhKSxFaShreWUpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx6ZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuZHJhZ0V2ZW50TGlzdGVuZXI9aCx0aGlzLnJl''@;'; put 'put ''bmRlcmVyPXZ9Z2V0IGRlZmF1bHRIYW5kbGVFbCgpe3JldHVybiB0aGlzLl9kZWZhdWx0SGFuZGxlRWx9c2V0IGRlZmF1bHRIYW5kbGVFbChoKXt0aGlzLl9kZWZhdWx0SGFuZGxlRWw9aCx0aGlzLl9jdXN0b21IYW5kbGVFbHx8dGhpcy5tYWtlRWxlbWVudEhhbmRsZSh0aGlzLl9kZWZhdWx0''@;'; put 'put ''SGFuZGxlRWwpfW1ha2VFbGVtZW50SGFuZGxlKGgpe3RoaXMuX2RlZmF1bHRIYW5kbGVFbCYmdGhpcy5fZGVmYXVsdEhhbmRsZUVsIT09aCYmdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kZWZhdWx0SGFuZGxlRWwsImRyYWctaGFuZGxlIiksdGhpcy5kcmFnRXZlbnRMaXN0ZW5l''@;'; put 'put ''ci5hdHRhY2hEcmFnTGlzdGVuZXJzKGgpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoaCwiZHJhZy1oYW5kbGUiKX1nZXQgY3VzdG9tSGFuZGxlRWwoKXtyZXR1cm4gdGhpcy5fY3VzdG9tSGFuZGxlRWx9cmVnaXN0ZXJDdXN0b21IYW5kbGUoaCl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRh''@;'; put 'put ''Y2hEcmFnTGlzdGVuZXJzKCksdGhpcy5fY3VzdG9tSGFuZGxlRWw9aCx0aGlzLm1ha2VFbGVtZW50SGFuZGxlKHRoaXMuX2N1c3RvbUhhbmRsZUVsKX11bnJlZ2lzdGVyQ3VzdG9tSGFuZGxlKCl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFnTGlzdGVuZXJzKCksdGhpcy5yZW5k''@;'; put 'put ''ZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9jdXN0b21IYW5kbGVFbCwiZHJhZy1oYW5kbGUiKSxkZWxldGUgdGhpcy5fY3VzdG9tSGFuZGxlRWwsdGhpcy5fZGVmYXVsdEhhbmRsZUVsJiZ0aGlzLm1ha2VFbGVtZW50SGFuZGxlKHRoaXMuX2RlZmF1bHRIYW5kbGVFbCl9fXJldHVybiBkLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKERaKSxFaShEYSkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLEdmZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZG9tQWRhcHRlcj1ofWNhcHR1cmUoaCx2''@;'; put 'put ''KXt0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdD10aGlzLmRvbUFkYXB0ZXIuY2xpZW50UmVjdChoKSx0aGlzLnNuYXBzaG90RHJhZ0V2ZW50PXZ9ZGlzY2FyZCgpe2RlbGV0ZSB0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdCxkZWxldGUgdGhpcy5zbmFwc2hvdERyYWdFdmVudH1nZXQgaGFz''@;'; put 'put ''RHJhZ2dhYmxlU3RhdGUoKXtyZXR1cm4hIXRoaXMuc25hcHNob3REcmFnRXZlbnQmJiEhdGhpcy5kcmFnZ2FibGVFbENsaWVudFJlY3R9Z2V0IGNsaWVudFJlY3QoKXtyZXR1cm4gdGhpcy5kcmFnZ2FibGVFbENsaWVudFJlY3R9Z2V0IGRyYWdFdmVudCgpe3JldHVybiB0aGlzLnNuYXBzaG90''@;'; put 'put ''RHJhZ0V2ZW50fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaSh1NCkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFN5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7aWYo''@;'; put 'put ''dGhpcy5lbD1oLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXI9dix0aGlzLmRyYWdnYWJsZVNuYXBzaG90PXksdGhpcy5yZW5kZXJlcj1DLHRoaXMubmdab25lPUksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMubGVhdmVBbmltQ29uZmlnPXt2YWx1ZTowLHBhcmFtczp7dG9wOiIwcHgiLGxlZnQ6''@;'; put 'put ''IjBweCJ9fSwhdGhpcy5kcmFnRXZlbnRMaXN0ZW5lcnx8IXRoaXMuZHJhZ2dhYmxlU25hcHNob3QpdGhyb3cgbmV3IEVycm9yKCJUaGUgY2xyLWRyYWdnYWJsZS1naG9zdCBjb21wb25lbnQgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLiIpO3Ro''@;'; put 'put ''aXMuZHJhZ2dhYmxlR2hvc3RFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyYWdnYWJsZUdob3N0RWwsImRyYWdnYWJsZS1naG9zdCIpLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZ2hvc3RFbGVtZW50PXRoaXMuZHJhZ2dhYmxlR2hvc3RFbCx0''@;'; put 'put ''aGlzLnNldERlZmF1bHRHaG9zdFNpemUodGhpcy5kcmFnZ2FibGVHaG9zdEVsKTtjb25zdCBqPXt0b3A6dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmRyYWdnYWJsZVNuYXBzaG90LmRyYWdFdmVudC5kcmFnUG9zaXRpb24ucGFnZVktdGhpcy5kcmFnZ2Fi''@;'; put 'put ''bGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcDowLGxlZnQ6dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmRyYWdnYWJsZVNuYXBzaG90LmRyYWdFdmVudC5kcmFnUG9zaXRpb24ucGFnZVgtdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnQ6''@;'; put 'put ''MH07bGV0IGNlPSExO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ01vdmVkLnN1YnNjcmliZShfZT0+e2NlfHwodGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmFuaW1hdGVUb09uTGVhdmUoYCR7dGhpcy5kcmFn''@;'; put 'put ''Z2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcH1weGAsYCR7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnR9cHhgKTp0aGlzLmFuaW1hdGVUb09uTGVhdmUoYCR7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnRQb3NpdGlvbi5wYWdlWX1weGAsYCR7dGhpcy5k''@;'; put 'put ''cmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnRQb3NpdGlvbi5wYWdlWX1weGApLGNlPSEwKTtjb25zdCBSZT10aGlzLmZpbmRUb3BMZWZ0UG9zaXRpb24oX2UuZHJhZ1Bvc2l0aW9uLGopO3RoaXMuc2V0UG9zaXRpb25TdHlsZSh0aGlzLmRyYWdnYWJsZUdob3N0RWwsUmUucGFnZVgsUmUucGFn''@;'; put 'put ''ZVkpLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJvcFBvaW50UG9zaXRpb249dGhpcy5maW5kRHJvcFBvaW50UG9zaXRpb24oUmUpfSkpfXNldERlZmF1bHRHaG9zdFNpemUoaCl7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZSYmdGhpcy5zZXRTaXplU3R5bGUoaCx0''@;'; put 'put ''aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3Qud2lkdGgsdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmhlaWdodCl9YW5pbWF0ZVRvT25MZWF2ZShoLHYpe3RoaXMubmdab25lLnJ1bigoKT0+e3RoaXMubGVhdmVBbmltQ29uZmlnPXt2YWx1ZTowLHBhcmFtczp7dG9w''@;'; put 'put ''OmgsbGVmdDp2fX19KX1maW5kVG9wTGVmdFBvc2l0aW9uKGgsdil7cmV0dXJue3BhZ2VYOmgucGFnZVgtdi5sZWZ0LHBhZ2VZOmgucGFnZVktdi50b3B9fWZpbmREcm9wUG9pbnRQb3NpdGlvbihoKXtyZXR1cm4gdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT97cGFn''@;'; put 'put ''ZVg6aC5wYWdlWCt0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3Qud2lkdGgvMixwYWdlWTpoLnBhZ2VZK3RoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2xpZW50UmVjdC5oZWlnaHQvMn06aH1zZXRTaXplU3R5bGUoaCx2LHkpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwid2lkdGgi''@;'; put 'put ''LGAke3Z9cHhgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGgsImhlaWdodCIsYCR7eX1weGApfXNldFBvc2l0aW9uU3R5bGUoaCx2LHkpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwibGVmdCIsYCR7dn1weGApLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwidG9wIixgJHt5fXB4YCksdGhp''@;'; put 'put ''cy5yZW5kZXJlci5zZXRTdHlsZShoLCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoX28pLEt0''@;'; put 'put ''KERaLDgpLEt0KEdmZSw4KSxLdChEYSksS3QoZGwpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRyYWdnYWJsZS1naG9zdCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmYTcoIkBsZWF2ZUFuaW1hdGlvbiIsdi5sZWF2ZUFu''@;'; put 'put ''aW1Db25maWcpfSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLFZpKDApKX0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbSmMoImxlYXZlQW5pbWF0aW9uIixbYnUoIjpsZWF2ZSIsW3hsKHtsZWZ0''@;'; put 'put ''OiIqIix0b3A6IioifSksZmMoIjAuMnMgZWFzZS1pbi1vdXQiLHhsKHt0b3A6Int7dG9wfX0iLGxlZnQ6Int7bGVmdH19In0pKV0pXSldfX0pLGR9KSgpO2NsYXNzIF92e2NvbnN0cnVjdG9yKGcpe3RoaXMuZHJhZ1Bvc2l0aW9uPWcuZHJhZ1Bvc2l0aW9uLHRoaXMuZ3JvdXA9Zy5ncm91cCx0''@;'; put 'put ''aGlzLmRyYWdEYXRhVHJhbnNmZXI9Zy5kcmFnRGF0YVRyYW5zZmVyLHRoaXMuZHJvcFBvaW50UG9zaXRpb249Zy5kcm9wUG9pbnRQb3NpdGlvbn19bGV0IE15ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXtpZih0aGlzLnRlbXBsYXRlPWgsdGhpcy5jb250YWluZXI9dix0aGlz''@;'; put 'put ''LmRyYWdFdmVudExpc3RlbmVyPXksdGhpcy5zdWJzY3JpcHRpb25zPVtdLCF0aGlzLmRyYWdFdmVudExpc3RlbmVyfHwhdGhpcy5jb250YWluZXIpdGhyb3cgbmV3IEVycm9yKCJUaGUgKmNscklmRHJhZ2dlZCBkaXJlY3RpdmUgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFn''@;'; put 'put ''Z2FibGUgZGlyZWN0aXZlLiIpO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0ZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5w''@;'; put 'put ''dXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ0VuZGVkLnN1YnNjcmliZSgoKT0+e3RoaXMuY29udGFpbmVyLmNsZWFyKCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChWbiksS3QoTXIsMTIpLEt0KERaLDgpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xySWZEcmFnZ2VkIiwiIl1dfSksZH0pKCksRXllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5yZW5kZXJlcj1o''@;'; put 'put ''fWVudGVyKCl7dGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCJpbi1kcmFnIil9ZXhpdCgpe3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwiaW4tZHJhZyIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShF''@;'; put 'put ''aShEYSkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHh5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqLGNlLF9lKXt0aGlzLmVsPWgsdGhpcy5kcmFnRXZlbnRMaXN0ZW5lcj12LHRoaXMuZHJhZ0hhbmRsZVJlZ2lz''@;'; put 'put ''dHJhcj15LHRoaXMudmlld0NvbnRhaW5lclJlZj1DLHRoaXMuY2ZyPUksdGhpcy5pbmplY3Rvcj1qLHRoaXMuZHJhZ2dhYmxlU25hcHNob3Q9Y2UsdGhpcy5nbG9iYWxEcmFnTW9kZT1fZSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5kcmFnT249ITEsdGhpcy5kcmFnU3RhcnRFbWl0dGVy''@;'; put 'put ''PW5ldyBmbix0aGlzLmRyYWdNb3ZlRW1pdHRlcj1uZXcgZm4sdGhpcy5kcmFnRW5kRW1pdHRlcj1uZXcgZm4sdGhpcy5kcmFnZ2FibGVFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5jb21wb25lbnRGYWN0b3J5PXRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFN5ZSl9c2V0''@;'; put 'put ''IGRhdGFUcmFuc2ZlcihoKXt0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdEYXRhVHJhbnNmZXI9aH1zZXQgZ3JvdXAoaCl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5ncm91cD1ofXNldCBkcmFnU3RhcnREZWxheShoKXsibnVtYmVyIj09dHlwZW9mIGg/dGhpcy5kcmFnRXZlbnRMaXN0ZW5l''@;'; put 'put ''ci5kcmFnU3RhcnREZWxheT1oOiJzdHJpbmciPT10eXBlb2YgaCYmKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0RGVsYXk9cGFyc2VJbnQoaCwxMCl8fDApfWNyZWF0ZURlZmF1bHRHaG9zdChoKXt0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNhcHR1cmUodGhpcy5kcmFnZ2FibGVF''@;'; put 'put ''bCxoKSx0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHRoaXMuY29tcG9uZW50RmFjdG9yeSwwLHRoaXMuaW5qZWN0b3IsW1t0aGlzLmRyYWdnYWJsZUVsLmNsb25lTm9kZSghMCldXSl9ZGVzdHJveURlZmF1bHRHaG9zdCgpe3RoaXMudmlld0NvbnRhaW5lclJlZi5jbGVh''@;'; put 'put ''cigpLHRoaXMuZHJhZ2dhYmxlU25hcHNob3QuZGlzY2FyZCgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZHJhZ0hhbmRsZVJlZ2lzdHJhci5kZWZhdWx0SGFuZGxlRWw9dGhpcy5kcmFnZ2FibGVFbCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRy''@;'; put 'put ''YWdTdGFydGVkLnN1YnNjcmliZShoPT57dGhpcy5nbG9iYWxEcmFnTW9kZS5lbnRlcigpLHRoaXMuZHJhZ09uPSEwLHRoaXMuY3VzdG9tR2hvc3R8fHRoaXMuY3JlYXRlRGVmYXVsdEdob3N0KGgpLHRoaXMuZHJhZ1N0YXJ0RW1pdHRlci5lbWl0KG5ldyBfdihoKSl9KSksdGhpcy5zdWJzY3Jp''@;'; put 'put ''cHRpb25zLnB1c2godGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnTW92ZWQuc3Vic2NyaWJlKGg9Pnt0aGlzLmRyYWdNb3ZlRW1pdHRlci5lbWl0KG5ldyBfdihoKSl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnRW5kZWQuc3Vic2NyaWJl''@;'; put 'put ''KGg9Pnt0aGlzLmdsb2JhbERyYWdNb2RlLmV4aXQoKSx0aGlzLmRyYWdPbj0hMSx0aGlzLmN1c3RvbUdob3N0fHx0aGlzLmRlc3Ryb3lEZWZhdWx0R2hvc3QoKSx0aGlzLmRyYWdFbmRFbWl0dGVyLmVtaXQobmV3IF92KGgpKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5m''@;'; put 'put ''b3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSksdGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFnTGlzdGVuZXJzKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSxLdChEWiksS3QoemZlKSxLdChNciksS3QoX2QpLEt0KHhzKSxL''@;'; put 'put ''dChHZmUpLEt0KEV5ZSkpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJEcmFnZ2FibGUiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmUzAoeSxNeWUsNSksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5jdXN0b21HaG9zdD1D''@;'; put 'put ''LmZpcnN0KX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiZHJhZ2dhYmxlIiwhMCkoImJlaW5nLWRyYWdnZWQiLHYuZHJhZ09uKX0saW5wdXRzOntkYXRhVHJhbnNmZXI6WyJjbHJEcmFnZ2FibGUiLCJkYXRhVHJhbnNmZXIiXSxncm91cDpbImNsckdy''@;'; put 'put ''b3VwIiwiZ3JvdXAiXSxkcmFnU3RhcnREZWxheTpbImNsckRyYWdTdGFydERlbGF5IiwiZHJhZ1N0YXJ0RGVsYXkiXX0sb3V0cHV0czp7ZHJhZ1N0YXJ0RW1pdHRlcjoiY2xyRHJhZ1N0YXJ0IixkcmFnTW92ZUVtaXR0ZXI6ImNsckRyYWdNb3ZlIixkcmFnRW5kRW1pdHRlcjoiY2xyRHJhZ0Vu''@;'; put 'put ''ZCJ9LGZlYXR1cmVzOltnbyhbRFosemZlLEdmZSxFeWUsdTRdKV19KSxkfSkoKSxUeWU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpb''@;'; put 'put ''W2FhXV19KSxkfSkoKTtjb25zdCBJeWU9bmV3IE90KCJGT0NVU19PTl9WSUVXX0lOSVQiKSx1UmU9e3Byb3ZpZGU6SXllLHVzZVZhbHVlOiEwfTtsZXQgV2ZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGope3RoaXMuZWw9aCx0aGlzLnBsYXRmb3JtSWQ9dix0aGlzLmZv''@;'; put 'put ''Y3VzT25WaWV3SW5pdD15LHRoaXMucmVuZGVyZXI9SSx0aGlzLmRlc3Ryb3kkPW5ldyAkZSx0aGlzLmRpcmVjdEZvY3VzPSEwLHRoaXMuX2lzRW5hYmxlZD10aGlzLmZvY3VzT25WaWV3SW5pdCx0aGlzLmRvY3VtZW50PUMsai5ydW5PdXRzaWRlQW5ndWxhcigoKT0+cjgoaC5uYXRpdmVFbGVt''@;'; put 'put ''ZW50LCJmb2N1c291dCIpLnBpcGUobjgodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuZGlyZWN0Rm9jdXN8fCh0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlz''@;'; put 'put ''LmVsLm5hdGl2ZUVsZW1lbnQsIm91dGxpbmUiLG51bGwpKX0pKX1zZXQgaXNFbmFibGVkKGgpe3RoaXMuZm9jdXNPblZpZXdJbml0JiYiYm9vbGVhbiI9PXR5cGVvZiBoJiYodGhpcy5faXNFbmFibGVkPWgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuZm9jdXMoKX1uZ09uRGVzdHJveSgpe3Ro''@;'; put 'put ''aXMuZGVzdHJveSQubmV4dCgpfWZvY3VzKCl7IWFsKHRoaXMucGxhdGZvcm1JZCl8fCF0aGlzLl9pc0VuYWJsZWR8fHRoaXMuZG9jdW1lbnQmJnRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXRoaXMuZWwubmF0aXZlRWxlbWVudCYmKHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygp''@;'; put 'put ''LHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXRoaXMuZWwubmF0aXZlRWxlbWVudCYmKHRoaXMuZGlyZWN0Rm9jdXM9ITEsdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIsIi0xIiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0''@;'; put 'put ''aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIm91dGxpbmUiLCJub25lIiksdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoX28pLEt0KEUyKSxLdChJeWUpLEt0KHVzKSxLdChEYSksS3QoZGwpKX0s''@;'; put 'put ''ZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyRm9jdXNPblZpZXdJbml0IiwiIl1dLGlucHV0czp7aXNFbmFibGVkOlsiY2xyRm9jdXNPblZpZXdJbml0IiwiaXNFbmFibGVkIl19fSksZH0pKCksYlM9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7cHJvdmlkZXJzOlt1UmVdLGltcG9ydHM6W1thYV1dfSksZH0pKCksWWZlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4g''@;'; put 'put ''bmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYV1dfSksZH0pKCksY1JlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpk''@;'; put 'put ''fSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYV1dfSksZH0pKCk7Y2xhc3MgcHF7fWxldCBMWj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLm5iQ2hhbmdlcz0wfWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2''@;'; put 'put ''YWJsZSgpfWNoYW5nZVN0YXJ0KCl7dGhpcy5uYkNoYW5nZXMrK31jaGFuZ2VEb25lKCl7MD09LS10aGlzLm5iQ2hhbmdlcyYmdGhpcy5fY2hhbmdlLm5leHQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46''@;'; put 'put ''ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksYnc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnN0YXRlRGVib3VuY2VyPWgsdGhpcy5wcmV2ZW50RW1pdD0hMSx0aGlzLmFjdGl2YXRlZD0hMSx0aGlzLl9zaXplPTAsdGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLl9zaXpl''@;'; put 'put ''Q2hhbmdlPW5ldyAkZSx0aGlzLl9jdXJyZW50PTF9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1zZXQgc2l6ZShoKXtjb25zdCB2PXRoaXMuX3NpemU7aCE9PXYmJih0aGlzLnByZXZlbnRFbWl0fHx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fc2l6ZT1oLHRo''@;'; put 'put ''aXMuX2N1cnJlbnQ9MD09PWg/MTpNYXRoLmZsb29yKHYvaCoodGhpcy5fY3VycmVudC0xKSkrMSx0aGlzLnByZXZlbnRFbWl0fHwodGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3VycmVudCksdGhpcy5fc2l6ZUNoYW5nZS5uZXh0KHRoaXMuX3NpemUpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hh''@;'; put 'put ''bmdlRG9uZSgpKSksdGhpcy5wcmV2ZW50RW1pdD0hMX1nZXQgdG90YWxJdGVtcygpe3JldHVybiB0aGlzLl90b3RhbEl0ZW1zfHwwfXNldCB0b3RhbEl0ZW1zKGgpe3RoaXMuX3RvdGFsSXRlbXM9aCx0aGlzLmN1cnJlbnQ+dGhpcy5sYXN0JiYodGhpcy5jdXJyZW50PXRoaXMubGFzdCl9Z2V0''@;'; put 'put ''IGxhc3QoKXtyZXR1cm4gdGhpcy5fbGFzdD90aGlzLl9sYXN0OnRoaXMuc2l6ZT4wJiZ0aGlzLnRvdGFsSXRlbXM/TWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcy90aGlzLnNpemUpOjF9c2V0IGxhc3QoaCl7dGhpcy5fbGFzdD1ofWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFz''@;'; put 'put ''T2JzZXJ2YWJsZSgpfWdldCBzaXplQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX3NpemVDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1zZXQgY3VycmVudChoKXtoIT09dGhpcy5fY3VycmVudCYmKHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdl''@;'; put 'put ''U3RhcnQoKSx0aGlzLl9jdXJyZW50PWgsdGhpcy5fY2hhbmdlLm5leHQoaCksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCkpfXByZXZpb3VzKCl7dGhpcy5jdXJyZW50PjEmJnRoaXMuY3VycmVudC0tfW5leHQoKXt0aGlzLmN1cnJlbnQ8dGhpcy5sYXN0JiZ0aGlzLmN1cnJlbnQr''@;'; put 'put ''K31nZXQgZmlyc3RJdGVtKCl7cmV0dXJuIDA9PT10aGlzLl90b3RhbEl0ZW1zPy0xOjA9PT10aGlzLnNpemU/MDoodGhpcy5jdXJyZW50LTEpKnRoaXMuc2l6ZX1nZXQgbGFzdEl0ZW0oKXtpZigwPT09dGhpcy5fdG90YWxJdGVtcylyZXR1cm4tMTtpZigwPT09dGhpcy5zaXplKXJldHVybiB0''@;'; put 'put ''aGlzLnRvdGFsSXRlbXMtMTtsZXQgaD10aGlzLmN1cnJlbnQqdGhpcy5zaXplLTE7cmV0dXJuIHRoaXMudG90YWxJdGVtcyYmKGg9TWF0aC5taW4oaCx0aGlzLnRvdGFsSXRlbXMtMSkpLGh9cmVzZXRQYWdlU2l6ZShoPSExKXt0aGlzLnByZXZlbnRFbWl0PWgsdGhpcy5zaXplPTB9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKExaKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksQ3Y9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuX3BhZ2U9aCx0aGlzLnN0YXRlRGVi''@;'; put 'put ''b3VuY2VyPXYsdGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLl9hbGw9W119Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9aGFzQWN0aXZlRmlsdGVycygpe2Zvcihjb25zdHtmaWx0ZXI6aH1vZiB0aGlzLl9hbGwpaWYoaCYmaC5pc0FjdGl2ZSgpKXJldHVy''@;'; put 'put ''biEwO3JldHVybiExfWdldEFjdGl2ZUZpbHRlcnMoKXtjb25zdCBoPVtdO2Zvcihjb25zdHtmaWx0ZXI6dn1vZiB0aGlzLl9hbGwpdiYmdi5pc0FjdGl2ZSgpJiZoLnB1c2godik7cmV0dXJuIGh9YWRkKGgpe2NvbnN0IHY9aC5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+dGhpcy5yZXNldFBhZ2VB''@;'; put 'put ''bmRFbWl0RmlsdGVyQ2hhbmdlKFtoXSkpO2xldCB5PSExO2NvbnN0IEM9bmV3IGdxKGgsKCk9PntpZih5KXJldHVybjt2LnVuc3Vic2NyaWJlKCk7Y29uc3QgST10aGlzLl9hbGwuZmluZEluZGV4KGo9PmouZmlsdGVyPT09aCk7ST49MCYmdGhpcy5fYWxsLnNwbGljZShJLDEpLGguaXNBY3Rp''@;'; put 'put ''dmUoKSYmdGhpcy5yZXNldFBhZ2VBbmRFbWl0RmlsdGVyQ2hhbmdlKFtdKSx5PSEwfSk7cmV0dXJuIHRoaXMuX2FsbC5wdXNoKEMpLGguaXNBY3RpdmUoKSYmdGhpcy5yZXNldFBhZ2VBbmRFbWl0RmlsdGVyQ2hhbmdlKFtoXSksQ31hY2NlcHRzKGgpe2Zvcihjb25zdHtmaWx0ZXI6dn1vZiB0''@;'; put 'put ''aGlzLl9hbGwpaWYodiYmdi5pc0FjdGl2ZSgpJiYhdi5hY2NlcHRzKGgpKXJldHVybiExO3JldHVybiEwfXJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoaCl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX3BhZ2UuY3VycmVudD0xLHRoaXMuX2NoYW5nZS5uZXh0''@;'; put 'put ''KGgpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShidyksRWkoTFopKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjbGFzcyBncXtj''@;'; put 'put ''b25zdHJ1Y3RvcihnLGgpe3RoaXMuZmlsdGVyPWcsdGhpcy51bnJlZ2lzdGVyPWh9fWxldCBtcT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZmlsdGVycz1ofWdldCBmaWx0ZXIoKXtyZXR1cm4gdGhpcy5yZWdpc3RlcmVkJiZ0aGlzLnJlZ2lzdGVyZWQuZmlsdGVyfXNldEZp''@;'; put 'put ''bHRlcihoKXt0aGlzLmRlbGV0ZUZpbHRlcigpLGggaW5zdGFuY2VvZiBncT90aGlzLnJlZ2lzdGVyZWQ9aDpoJiYodGhpcy5yZWdpc3RlcmVkPXRoaXMuZmlsdGVycy5hZGQoaCkpfWRlbGV0ZUZpbHRlcigpe3RoaXMucmVnaXN0ZXJlZCYmKHRoaXMucmVnaXN0ZXJlZC51bnJlZ2lzdGVyKCks''@;'; put 'put ''ZGVsZXRlIHRoaXMucmVnaXN0ZXJlZCl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlbGV0ZUZpbHRlcigpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChDdikpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkfSksZH0pKCksT1o9KCgpPT57Y2xhc3MgZCBl''@;'; put 'put ''eHRlbmRzIG1xe2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7c3VwZXIoaCksdGhpcy5jb21tb25TdHJpbmdzPXYsdGhpcy5zbWFydFRvZ2dsZVNlcnZpY2U9eSx0aGlzLnBsYXRmb3JtSWQ9Qyx0aGlzLnBvcG92ZXJJZD1JLHRoaXMuc3Vicz1bXSx0aGlzLmFyaWFFeHBhbmRlZD0hMSx0aGlzLnNt''@;'; put 'put ''YXJ0UG9zaXRpb249e2F4aXM6cm4uVkVSVElDQUwsc2lkZTpDaS5BRlRFUixhbmNob3I6eW4uRU5ELGNvbnRlbnQ6eW4uRU5EfSx0aGlzLl9vcGVuPSExLHRoaXMub3BlbkNoYW5nZT1uZXcgZm4oITEpLHRoaXMuc3Vicy5wdXNoKHkub3BlbkNoYW5nZS5zdWJzY3JpYmUoaj0+e3RoaXMub3Bl''@;'; put 'put ''bj1qLHRoaXMuYXJpYUV4cGFuZGVkPWp9KSl9Z2V0IG9wZW4oKXtyZXR1cm4gdGhpcy5fb3Blbn1zZXQgb3BlbihoKXt0aGlzLm9wZW4hPT0oaD0hIWgpJiYodGhpcy5zbWFydFRvZ2dsZVNlcnZpY2Uub3Blbj1oLHRoaXMub3BlbkNoYW5nZS5lbWl0KGgpLCFoJiZhbCh0aGlzLnBsYXRmb3Jt''@;'; put 'put ''SWQpJiZ0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5fb3Blbj1oKX1zZXQgY3VzdG9tRmlsdGVyKGgpe3RoaXMuc2V0RmlsdGVyKGgpfWdldCBhY3RpdmUoKXtyZXR1cm4hIXRoaXMuZmlsdGVyJiZ0aGlzLmZpbHRlci5pc0FjdGl2ZSgpfW5nT25EZXN0cm95KCl7c3Vw''@;'; put 'put ''ZXIubmdPbkRlc3Ryb3koKSx0aGlzLnN1YnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChDdiksS3QoRmEpLEt0KEV0KSxLdChFMiksS3QoRDApKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxz''@;'; put 'put ''ZWxlY3RvcnM6W1siY2xyLWRnLWZpbHRlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJmcwKHZ2LDUsX28pLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuYW5jaG9yPXkuZmlyc3QpfX0saW5wdXRzOntvcGVuOlsiY2xyRGdGaWx0ZXJPcGVuIiwib3BlbiJdLGN1c3RvbUZp''@;'; put 'put ''bHRlcjpbImNsckRnRmlsdGVyIiwiY3VzdG9tRmlsdGVyIl19LG91dHB1dHM6e29wZW5DaGFuZ2U6ImNsckRnRmlsdGVyT3BlbkNoYW5nZSJ9LGZlYXR1cmVzOltnbyhbe3Byb3ZpZGU6cHEsdXNlRXhpc3Rpbmc6ZH0sUmNdKSxSb10sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjQsdmFy''@;'; put 'put ''czoxMyxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJBbmNob3IiLCIiLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwxLCJkYXRhZ3JpZC1maWx0ZXItdG9nZ2xlIl0sWyJhbmNob3IiLCIiXSxbInNvbGlkIiwiIl0sWyJjbGFzcyIsImRhdGFncmlkLWZpbHRlciIs''@;'; put 'put ''ImNsckZvY3VzVHJhcCIsIiIsInJvbGUiLCJkaWFsb2ciLDMsImlkIiw0LCJjbHJQb3BvdmVyQ29udGVudCIsImNsclBvcG92ZXJDb250ZW50QXQiLCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiXSxbImNsckZv''@;'; put 'put ''Y3VzVHJhcCIsIiIsInJvbGUiLCJkaWFsb2ciLDEsImRhdGFncmlkLWZpbHRlciIsMywiaWQiXSxbMSwiZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiLDEsImNsb3NlIl0sWyJzaGFwZSIsIndpbmRvdy1j''@;'; put 'put ''bG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksdHQoMCwiYnV0dG9uIiwwLDEpLGJyKDIsImNkcy1pY29uIiwyKSxpdCgpLG5uKDMsdWNlLDUsMywiZGl2IiwzKSksMiZoJiYoSGkoImRhdGFncmlkLWZpbHRlci1vcGVuIix2Lm9wZW4pKCJkYXRhZ3JpZC1maWx0ZXJl''@;'; put 'put ''ZCIsdi5hY3RpdmUpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRhZ3JpZEZpbHRlckFyaWFMYWJlbCkoImFyaWEtZXhwYW5kZWQiLHYuYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsdi5wb3BvdmVySWQpLHN0KDIpLEdpKCJzdGF0dXMiLHYuYWN0aXZlPyJp''@;'; put 'put ''bmZvIjpudWxsKSgic2hhcGUiLHYuYWN0aXZlPyJmaWx0ZXItZ3JpZC1jaXJjbGUiOiJmaWx0ZXItZ3JpZCIpLHN0KDEpLHh0KCJjbHJQb3BvdmVyQ29udGVudCIsdi5vcGVuKSgiY2xyUG9wb3ZlckNvbnRlbnRBdCIsdi5zbWFydFBvc2l0aW9uKSgiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRl''@;'; put 'put ''Q2xpY2tUb0Nsb3NlIiwhMCkoImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSIsITApKX0sZGVwZW5kZW5jaWVzOlt1dCxIbyxrcyxQaSx3dyx3dF0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCk7Y2xhc3MgVWZle2NvbnN0cnVjdG9yKGcpe3RoaXMucHJvcD1nLGcuaW5kZXhPZigiLiIp''@;'; put 'put ''Pj0wJiYodGhpcy5zcGxpdFByb3A9Zy5zcGxpdCgiLiIpKX1nZXRQcm9wVmFsdWUoZyl7aWYodGhpcy5zcGxpdFByb3Ape2xldCBoPWc7Zm9yKGNvbnN0IHYgb2YgdGhpcy5zcGxpdFByb3Ape2lmKG51bGw9PWh8fHZvaWQgMD09PWhbdl0pcmV0dXJuO2g9aFt2XX1yZXR1cm4gaH1yZXR1cm4g''@;'; put 'put ''Z1t0aGlzLnByb3BdfX1jbGFzcyB2cXtjb25zdHJ1Y3RvcihnLGg9ITEpe3RoaXMucHJvcD1nLHRoaXMuZXhhY3Q9aCx0aGlzLm5lc3RlZFByb3A9bmV3IFVmZShnKX1hY2NlcHRzKGcsaCx2KXtjb25zdCB5PXRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoZyk7cmV0dXJuISh2b2lkIDA9''@;'; put 'put ''PT15fHxudWxsIT09aCYmKCJudW1iZXIiIT10eXBlb2YgeXx8eTxoKXx8bnVsbCE9PXYmJigibnVtYmVyIiE9dHlwZW9mIHl8fHk+dikpfX1jbGFzcyBfU3tjb25zdHJ1Y3RvcihnKXt0aGlzLmZpbHRlckZuPWcsdGhpcy5fY2hhbmdlcz1uZXcgJGUsdGhpcy5fbG93PW51bGwsdGhpcy5faGln''@;'; put 'put ''aD1udWxsfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IHZhbHVlKCl7cmV0dXJuW3RoaXMuX2xvdyx0aGlzLl9oaWdoXX1zZXQgdmFsdWUoZyl7Y29uc3QgaD1nWzBdLHY9Z1sxXTsoaCE9PXRoaXMuX2xvd3x8diE9PXRoaXMuX2hpZ2gpJiYo''@;'; put 'put ''dGhpcy5fbG93PWgsdGhpcy5faGlnaD12LHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fbG93LHRoaXMuX2hpZ2hdKSl9Z2V0IGxvdygpe3JldHVybiB0aGlzLl9sb3d9c2V0IGxvdyhnKXtnIT09dGhpcy5fbG93JiYodGhpcy5fbG93PWcsdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9sb3cs''@;'; put 'put ''dGhpcy5faGlnaF0pKX1nZXQgaGlnaCgpe3JldHVybiB0aGlzLl9oaWdofXNldCBoaWdoKGcpe2chPT10aGlzLl9oaWdoJiYodGhpcy5faGlnaD1nLHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fbG93LHRoaXMuX2hpZ2hdKSl9aXNBY3RpdmUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2xvd3x8''@;'; put 'put ''bnVsbCE9PXRoaXMuaGlnaH1hY2NlcHRzKGcpe3JldHVybiB0aGlzLmZpbHRlckZuLmFjY2VwdHMoZyx0aGlzLl9sb3csdGhpcy5faGlnaCl9Z2V0IHN0YXRlKCl7cmV0dXJuIHRoaXMuZmlsdGVyRm4gaW5zdGFuY2VvZiB2cT97cHJvcGVydHk6dGhpcy5maWx0ZXJGbi5wcm9wLGxvdzp0aGlz''@;'; put 'put ''Ll9sb3csaGlnaDp0aGlzLl9oaWdofTp0aGlzfWVxdWFscyhnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIF9TJiYoZy5maWx0ZXJGbiBpbnN0YW5jZW9mIHZxP3RoaXMuZmlsdGVyRm4gaW5zdGFuY2VvZiB2cSYmZy5maWx0ZXJGbi5wcm9wPT09dGhpcy5maWx0ZXJGbi5wcm9wJiZnLmxvdz09PXRo''@;'; put 'put ''aXMuX2xvdyYmZy5oaWdoPT09dGhpcy5faGlnaDpnPT09dGhpcyl9fWxldCBEeWU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIG1xe2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7c3VwZXIoaCksdGhpcy5kb21BZGFwdGVyPXYsdGhpcy5jb21tb25TdHJpbmdzPXksdGhpcy5wb3BvdmVyVG9nZ2xlU2Vy''@;'; put 'put ''dmljZT1DLHRoaXMubmdab25lPUksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMub3Blbj0hMSx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlPW5ldyBmbn1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+e2gudW5zdWJzY3JpYmUo''@;'; put 'put ''KX0pfWdldCBtYXhQbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJuIHRoaXMubWF4UGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlfWdldCBtaW5QbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJuIHRoaXMubWluUGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5r''@;'; put 'put ''ZXlzLm1pblZhbHVlfXNldCBjdXN0b21OdW1lcmljRmlsdGVyKGgpe3RoaXMuc2V0RmlsdGVyKGggaW5zdGFuY2VvZiBncT9oOm5ldyBfUyhoKSksdGhpcy5pbml0RmlsdGVyVmFsdWVzJiYodGhpcy52YWx1ZT10aGlzLmluaXRGaWx0ZXJWYWx1ZXMsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZh''@;'; put 'put ''bHVlcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5wb3BvdmVyVG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5vcGVuPWgsdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJh''@;'; put 'put ''bWUoKCk9Pnt0aGlzLmRvbUFkYXB0ZXIuZm9jdXModGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KX0pfSl9KSl9Z2V0IHZhbHVlKCl7cmV0dXJuW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXX1zZXQgdmFsdWUoaCl7dGhpcy5maWx0ZXImJkFycmF5LmlzQXJyYXkoaCk/aCYmKGhb''@;'; put 'put ''MF0hPT10aGlzLmZpbHRlci5sb3d8fGhbMV0hPT10aGlzLmZpbHRlci5oaWdoKSYmKHRoaXMuZmlsdGVyLmxvdz0ibnVtYmVyIj09dHlwZW9mIGhbMF0/aFswXTpudWxsLHRoaXMuZmlsdGVyLmhpZ2g9Im51bWJlciI9PXR5cGVvZiBoWzFdP2hbMV06bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hh''@;'; put 'put ''bmdlLmVtaXQoaCkpOnRoaXMuaW5pdEZpbHRlclZhbHVlcz1ofWdldCBsb3coKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHRoaXMuZmlsdGVyLmxvdyYmaXNGaW5pdGUodGhpcy5maWx0ZXIubG93KT90aGlzLmZpbHRlci5sb3c6bnVsbH1zZXQgbG93KGgpeyJudW1iZXIiPT10eXBlb2YgaCYm''@;'; put 'put ''aCE9PXRoaXMuZmlsdGVyLmxvdz8odGhpcy5maWx0ZXIubG93PWgsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKToibnVtYmVyIiE9dHlwZW9mIGgmJih0aGlzLmZpbHRlci5sb3c9bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hh''@;'; put 'put ''bmdlLmVtaXQoW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXSkpfWdldCBoaWdoKCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0aGlzLmZpbHRlci5oaWdoJiZpc0Zpbml0ZSh0aGlzLmZpbHRlci5oaWdoKT90aGlzLmZpbHRlci5oaWdoOm51bGx9c2V0IGhpZ2goaCl7Im51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBoJiZoIT09dGhpcy5maWx0ZXIuaGlnaD8odGhpcy5maWx0ZXIuaGlnaD1oLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hdKSk6Im51bWJlciIhPXR5cGVvZiBoJiYodGhpcy5maWx0ZXIuaGlnaD1udWxsLHRo''@;'; put 'put ''aXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hdKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KEN2KSxLdCh1NCksS3QoRmEpLEt0KEV0KSxLdChkbCkpfSxkLlx1MDI3NWNtcD12aSh7''@;'; put 'put ''dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctbnVtZXJpYy1maWx0ZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiYoZzAob1osNSksZzAoT1osNSkpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuaW5wdXQ9eS5maXJzdCksemkoeT1BaSgpKSYmKHYuZmlsdGVyQ29udGFp''@;'; put 'put ''bmVyPXkuZmlyc3QpfX0saW5wdXRzOnttYXhQbGFjZWhvbGRlcjpbImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwibWF4UGxhY2Vob2xkZXIiXSxtaW5QbGFjZWhvbGRlcjpbImNsckZpbHRlck1pblBsYWNlaG9sZGVyIiwibWluUGxhY2Vob2xkZXIiXSxjdXN0b21OdW1lcmljRmlsdGVyOlsi''@;'; put 'put ''Y2xyRGdOdW1lcmljRmlsdGVyIiwiY3VzdG9tTnVtZXJpY0ZpbHRlciJdLHZhbHVlOlsiY2xyRmlsdGVyVmFsdWUiLCJ2YWx1ZSJdfSxvdXRwdXRzOntmaWx0ZXJWYWx1ZUNoYW5nZToiY2xyRmlsdGVyVmFsdWVDaGFuZ2UifSxmZWF0dXJlczpbZ28oW3twcm92aWRlOnBxLHVzZUV4aXN0aW5n''@;'; put 'put ''OmR9XSksUm9dLGRlY2xzOjYsdmFyczo4LGNvbnN0czpbWzMsImNsckRnRmlsdGVyIiwiY2xyRGdGaWx0ZXJPcGVuIiwiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIl0sWyJ0eXBlIiwibnVtYmVyIiwibmFtZSIsImxvdyIsMSwiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXQiLDMsIm5nTW9k''@;'; put 'put ''ZWwiLCJwbGFjZWhvbGRlciIsIm5nTW9kZWxDaGFuZ2UiXSxbImlucHV0X2xvdyIsIiJdLFsxLCJkYXRhZ3JpZC1maWx0ZXItaW5wdXQtc3BhY2VyIl0sWyJ0eXBlIiwibnVtYmVyIiwibmFtZSIsImhpZ2giLDEsImRhdGFncmlkLW51bWVyaWMtZmlsdGVyLWlucHV0IiwzLCJuZ01vZGVsIiwi''@;'; put 'put ''cGxhY2Vob2xkZXIiLCJuZ01vZGVsQ2hhbmdlIl0sWyJpbnB1dF9oaWdoIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiY2xyLWRnLWZpbHRlciIsMCksWm4oImNsckRnRmlsdGVyT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub3Blbj1DfSksdHQoMSwi''@;'; put 'put ''aW5wdXQiLDEsMiksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lmxvdz1DfSksaXQoKSxicigzLCJzcGFuIiwzKSx0dCg0LCJpbnB1dCIsNCw1KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuaGlnaD1DfSksaXQoKSgpKSwyJmgmJih4dCgi''@;'; put 'put ''Y2xyRGdGaWx0ZXIiLHYucmVnaXN0ZXJlZCkoImNsckRnRmlsdGVyT3BlbiIsdi5vcGVuKSxzdCgxKSx4dCgibmdNb2RlbCIsdi5sb3cpKCJwbGFjZWhvbGRlciIsdi5taW5QbGFjZWhvbGRlclZhbHVlKSxHaSgiYXJpYS1sYWJlbCIsdi5taW5QbGFjZWhvbGRlclZhbHVlKSxzdCgzKSx4dCgi''@;'; put 'put ''bmdNb2RlbCIsdi5oaWdoKSgicGxhY2Vob2xkZXIiLHYubWF4UGxhY2Vob2xkZXJWYWx1ZSksR2koImFyaWEtbGFiZWwiLHYubWF4UGxhY2Vob2xkZXJWYWx1ZSkpfSxkZXBlbmRlbmNpZXM6W09aLG1qLHAxLGpzLF9zXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTtjbGFzcyBBcXtjb25zdHJ1''@;'; put 'put ''Y3RvcihnLGg9ITEpe3RoaXMucHJvcD1nLHRoaXMuZXhhY3Q9aCx0aGlzLm5lc3RlZFByb3A9bmV3IFVmZShnKX1hY2NlcHRzKGcsaCl7Y29uc3Qgdj10aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZhbHVlKGcpO3JldHVybiB2b2lkIDAhPT12JiYodGhpcy5leGFjdD8oIiIrdikudG9Mb3dlckNh''@;'; put 'put ''c2UoKT09PWg6KCIiK3YpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihoKT49MCl9fWNsYXNzIENTe2NvbnN0cnVjdG9yKGcpe3RoaXMuZmlsdGVyRm49Zyx0aGlzLl9jaGFuZ2VzPW5ldyAkZSx0aGlzLl9sb3dlckNhc2VWYWx1ZT0iIix0aGlzLl9yYXdWYWx1ZT0iIn1nZXQgY2hhbmdlcygpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9jaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfWdldCBsb3dlckNhc2VWYWx1ZSgpe3JldHVybiB0aGlzLl9sb3dlckNhc2VWYWx1ZX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fcmF3VmFsdWV9c2V0IHZhbHVlKGcpe2d8fChnPSIiKSxnIT09dGhpcy5fcmF3VmFsdWUmJih0aGlz''@;'; put 'put ''Ll9yYXdWYWx1ZT1nLHRoaXMuX2xvd2VyQ2FzZVZhbHVlPWcudG9Mb3dlckNhc2UoKS50cmltKCksdGhpcy5fY2hhbmdlcy5uZXh0KGcpKX1pc0FjdGl2ZSgpe3JldHVybiEhdGhpcy52YWx1ZX1hY2NlcHRzKGcpe3JldHVybiB0aGlzLmZpbHRlckZuLmFjY2VwdHMoZyx0aGlzLmxvd2VyQ2Fz''@;'; put 'put ''ZVZhbHVlKX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5maWx0ZXJGbiBpbnN0YW5jZW9mIEFxP3twcm9wZXJ0eTp0aGlzLmZpbHRlckZuLnByb3AsdmFsdWU6dGhpcy52YWx1ZX06dGhpc31lcXVhbHMoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBDUyYmKGcuZmlsdGVyRm4gaW5zdGFuY2VvZiBB''@;'; put 'put ''cT90aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgQXEmJmcuZmlsdGVyRm4ucHJvcD09PXRoaXMuZmlsdGVyRm4ucHJvcCYmZy52YWx1ZT09PXRoaXMudmFsdWU6Zz09PXRoaXMpfX1sZXQgUWZlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBtcXtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3N1cGVyKGgp''@;'; put 'put ''LHRoaXMuZG9tQWRhcHRlcj12LHRoaXMuY29tbW9uU3RyaW5ncz15LHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlPUMsdGhpcy5uZ1pvbmU9SSx0aGlzLnN1YnM9W10sdGhpcy5vcGVuPSExLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2U9bmV3IGZufWdldCBwbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMucGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmZpbHRlckl0ZW1zfXNldCBjdXN0b21TdHJpbmdGaWx0ZXIoaCl7dGhpcy5zZXRGaWx0ZXIoaCBpbnN0YW5jZW9mIGdxP2g6bmV3IENTKGgpKSx0aGlzLmluaXRGaWx0ZXJWYWx1ZSYmKHRoaXMudmFsdWU9dGhpcy5p''@;'; put 'put ''bml0RmlsdGVyVmFsdWUsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN1YnMucHVzaCh0aGlzLnNtYXJ0VG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5vcGVuPWgsdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3Vs''@;'; put 'put ''YXIoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmRvbUFkYXB0ZXIuZm9jdXModGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KX0pfSl9KSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vicy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9Z2V0''@;'; put 'put ''IHZhbHVlKCl7cmV0dXJuIHRoaXMuZmlsdGVyLnZhbHVlfXNldCB2YWx1ZShoKXt0aGlzLmZpbHRlciYmInN0cmluZyI9PXR5cGVvZiBoPyhofHwoaD0iIiksaCE9PXRoaXMuZmlsdGVyLnZhbHVlJiYodGhpcy5maWx0ZXIudmFsdWU9aCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoaCkp''@;'; put 'put ''KTp0aGlzLmluaXRGaWx0ZXJWYWx1ZT1ofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChDdiksS3QodTQpLEt0KEZhKSxLdChFdCksS3QoZGwpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLXN0cmluZy1maWx0''@;'; put 'put ''ZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiYoZzAobmEsNSksZzAoT1osNSkpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuaW5wdXQ9eS5maXJzdCksemkoeT1BaSgpKSYmKHYuZmlsdGVyQ29udGFpbmVyPXkuZmlyc3QpfX0saW5wdXRzOntwbGFjZWhvbGRlcjpbImNs''@;'; put 'put ''ckZpbHRlclBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiXSxjdXN0b21TdHJpbmdGaWx0ZXI6WyJjbHJEZ1N0cmluZ0ZpbHRlciIsImN1c3RvbVN0cmluZ0ZpbHRlciJdLHZhbHVlOlsiY2xyRmlsdGVyVmFsdWUiLCJ2YWx1ZSJdfSxvdXRwdXRzOntmaWx0ZXJWYWx1ZUNoYW5nZToiY2xyRmls''@;'; put 'put ''dGVyVmFsdWVDaGFuZ2UifSxmZWF0dXJlczpbZ28oW3twcm92aWRlOnBxLHVzZUV4aXN0aW5nOmR9XSksUm9dLGRlY2xzOjMsdmFyczo1LGNvbnN0czpbWzMsImNsckRnRmlsdGVyIiwiY2xyRGdGaWx0ZXJPcGVuIiwiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIl0sWyJ0eXBlIiwidGV4dCIsIm5h''@;'; put 'put ''bWUiLCJzZWFyY2giLDEsImNsci1pbnB1dCIsMywibmdNb2RlbCIsInBsYWNlaG9sZGVyIiwibmdNb2RlbENoYW5nZSJdLFsiaW5wdXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJjbHItZGctZmlsdGVyIiwwKSxabigiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbihDKXtyZXR1cm4gdi5vcGVuPUN9KSx0dCgxLCJpbnB1dCIsMSwyKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudmFsdWU9Q30pLGl0KCkoKSksMiZoJiYoeHQoImNsckRnRmlsdGVyIix2LnJlZ2lzdGVyZWQpKCJjbHJEZ0ZpbHRlck9wZW4iLHYub3Bl''@;'; put 'put ''biksc3QoMSkseHQoIm5nTW9kZWwiLHYudmFsdWUpKCJwbGFjZWhvbGRlciIsdi5wbGFjZWhvbGRlclZhbHVlKSxHaSgiYXJpYS1sYWJlbCIsdi5wbGFjZWhvbGRlclZhbHVlKSl9LGRlcGVuZGVuY2llczpbT1oscDEsanMsX3NdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLF93PSgoKT0+e2Ns''@;'; put 'put ''YXNzIGQgZXh0ZW5kcyB3e31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuKGd8fChnPXQyKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdXSxmZWF0dXJlczpb''@;'; put 'put ''Um9dfSksZH0pKCksbk89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50PTB9cmVnaXN0ZXIoKXt0aGlzLmFjdGlvbmFibGVDb3VudCsrfXVucmVnaXN0ZXIoKXt0aGlzLmFjdGlvbmFibGVDb3VudC0tfWdldCBoYXNBY3Rpb25hYmxlUm93KCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuYWN0aW9uYWJsZUNvdW50PjB9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHJPPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBie2NvbnN0cnVjdG9y''@;'; put 'put ''KGgsdix5KXtpZighdil0aHJvdyBuZXcgRXJyb3IoImNsci1kZy1yb3cgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHItZGF0YWdyaWQiKTtzdXBlcihoLHYpLHRoaXMucm93QWN0aW9ucz15fWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5yb3dBY3Rpb25zLmhhc0FjdGlvbmFi''@;'; put 'put ''bGVSb3d9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSxLdChfdyw4KSxLdChuTykpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGF0YWdyaWQiXSxbImNsci1kZy1yb3ciXV0sZmVhdHVyZXM6W1JvXX0pLGR9''@;'; put 'put ''KSgpLGQ4PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVN0YXRlPSExLHRoaXMuX3N0YXRlPW5ldyBTbCh0aGlzLnRvZ2dsZVN0YXRlKSx0aGlzLl9lbmFibGVkPSExfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQoaCl7dGhpcy5f''@;'; put 'put ''ZW5hYmxlZD1ofWdldCBzdGF0ZUNoYW5nZSgpe3JldHVybiB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKX1jbG9zZSgpe3RoaXMudG9nZ2xlU3RhdGU9ITEsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRvZ2dsZVN0YXRlKSx0aGlzLmJ1dHRvbiYmKHRoaXMuYnV0dG9uLmZvY3VzKCksdGhpcy5i''@;'; put 'put ''dXR0b249bnVsbCl9b3BlbihoLHYpe3RoaXMuY2FjaGU9aCx0aGlzLmJ1dHRvbj12LHRoaXMudG9nZ2xlU3RhdGU9ITAsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRvZ2dsZVN0YXRlKX10b2dnbGUoaCx2KXt0aGlzLmlzUm93T3BlbihoKXx8IWg/dGhpcy5jbG9zZSgpOnRoaXMub3BlbihoLHYp''@;'; put 'put ''fWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmNhY2hlfWlzUm93T3BlbihoKXtyZXR1cm4hKCF0aGlzLnRvZ2dsZVN0YXRlfHx0aGlzLmNhY2hlIT09aCl9Z2V0IGlzT3Blbigpe3JldHVybiEwPT09dGhpcy50b2dnbGVTdGF0ZX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVy''@;'; put 'put ''biBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksaU89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmRldGFpbFNlcnZpY2U9aCx0aGlzLmV4cGFuZGFibGVDb3VudD0wfXJlZ2lzdGVyKCl7dGhpcy5leHBhbmRh''@;'; put 'put ''YmxlQ291bnQrK311bnJlZ2lzdGVyKCl7dGhpcy5leHBhbmRhYmxlQ291bnQtLX1nZXQgaGFzRXhwYW5kYWJsZVJvdygpe3JldHVybiF0aGlzLmRldGFpbFNlcnZpY2UuZW5hYmxlZCYmdGhpcy5leHBhbmRhYmxlQ291bnQ+MH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVy''@;'; put 'put ''biBuZXcoaHx8ZCkoRWkoZDgpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxvTz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihoLHYseSl7aWYoIXYpdGhyb3cgbmV3IEVycm9yKCJjbHItZGctcm93IHNob3VsZCBvbmx5''@;'; put 'put ''IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRhdGFncmlkIik7c3VwZXIoaCx2KSx0aGlzLmV4cGFuZGFibGVDb3VudD15fWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlQ291bnQuaGFzRXhwYW5kYWJsZVJvd319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVy''@;'; put 'put ''biBuZXcoaHx8ZCkoS3QoZDEpLEt0KF93LDgpLEt0KGlPKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdLFsiY2xyLWRnLXJvdyJdXSxmZWF0dXJlczpbUm9dfSksZH0pKCk7Y2xhc3MgeXF7Y29uc3RydWN0b3IoZyl7dGhpcy5wcm9wPWcsdGhp''@;'; put 'put ''cy5uZXN0ZWRQcm9wPW5ldyBVZmUoZyl9Y29tcGFyZShnLGgpe2xldCB2PXRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoZykseT10aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZhbHVlKGgpO3JldHVybiJzdHJpbmciPT10eXBlb2YgdiYmKHY9di50b0xvd2VyQ2FzZSgpKSwic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIHkmJih5PXkudG9Mb3dlckNhc2UoKSksbnVsbD09dj9udWxsPT15PzA6MTpudWxsPT15fHx2PHk/LTE6dj55PzE6MH19dmFyIG1oPSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5VTlNPUlRFRD0wXT0iVU5TT1JURUQiLGRbZC5BU0M9MV09IkFTQyIsZFtkLkRFU0M9LTFdPSJERVNDIn0o''@;'; put 'put ''bWh8fChtaD17fSkpLG1oKSkoKTtsZXQgSmZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9keW5hbWljPSExfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuY29sdW1uVmlldz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3Ro''@;'; put 'put ''aXMuY29sdW1uVmlldy5kZXN0cm95KCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJkZy13cmFwcGVkLWNvbHVtbiJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJmcw''@;'; put 'put ''KEQkLDUpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYudGVtcGxhdGVSZWY9eS5maXJzdCl9fSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbImNvbHVtblBvcnRhbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksbm4oMCxBdiwx''@;'; put 'put ''LDAsIm5nLXRlbXBsYXRlIixudWxsLDAsX2wpKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksd3E9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnN0YXRlRGVib3VuY2VyPWgsdGhpcy5fcmV2ZXJzZT0hMSx0aGlzLl9jaGFuZ2U9bmV3ICRlfWdldCBjb21wYXJhdG9yKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX2NvbXBhcmF0b3J9c2V0IGNvbXBhcmF0b3IoaCl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX2NvbXBhcmF0b3I9aCx0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKX1nZXQgcmV2ZXJzZSgpe3JldHVybiB0''@;'; put 'put ''aGlzLl9yZXZlcnNlfXNldCByZXZlcnNlKGgpe3RoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9yZXZlcnNlPWgsdGhpcy5lbWl0Q2hhbmdlKCksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9ZW1pdENoYW5nZSgpe3RoaXMuX2NoYW5nZS5uZXh0KHRoaXMp''@;'; put 'put ''fWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfXRvZ2dsZShoLHYpe3RoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLmNvbXBhcmF0b3I9PT1oP3RoaXMuX3JldmVyc2U9dm9pZCAwIT09diYmdnx8IXRoaXMuX3JldmVyc2U6KHRoaXMu''@;'; put 'put ''X2NvbXBhcmF0b3I9aCx0aGlzLl9yZXZlcnNlPXZvaWQgMCE9PXYmJnYpLHRoaXMuZW1pdENoYW5nZSgpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpfWNsZWFyKCl7dGhpcy5jb21wYXJhdG9yPW51bGx9Y29tcGFyZShoLHYpe3JldHVybih0aGlzLnJldmVyc2U/LTE6MSkqdGhp''@;'; put 'put ''cy5jb21wYXJhdG9yLmNvbXBhcmUoaCx2KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoTFopKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTt2YXIgYzQ9KCgpPT4oZnVuY3Rpb24oZCl7ZFtk''@;'; put 'put ''LkFMSUdOX0NPTFVNTlM9MF09IkFMSUdOX0NPTFVNTlMiLGRbZC5DQUxDVUxBVEVfTU9ERV9PTj0xXT0iQ0FMQ1VMQVRFX01PREVfT04iLGRbZC5DQUxDVUxBVEVfTU9ERV9PRkY9Ml09IkNBTENVTEFURV9NT0RFX09GRiIsZFtkLkNMRUFSX1dJRFRIUz0zXT0iQ0xFQVJfV0lEVEhTIixkW2Qu''@;'; put 'put ''Q09NUFVURV9DT0xVTU5fV0lEVEhTPTRdPSJDT01QVVRFX0NPTFVNTl9XSURUSFMifShjNHx8KGM0PXt9KSksYzQpKSgpO2xldCBrUz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVuZGVyU3RlcD1uZXcgJGUsdGhpcy5hbHJlYWR5U2l6ZWQ9ITF9Z2V0IHJlbmRlclN0ZXAo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RlcC5hc09ic2VydmFibGUoKX1maWx0ZXJSZW5kZXJTdGVwcyhoKXtyZXR1cm4gdGhpcy5yZW5kZXJTdGVwLnBpcGUobTIodj0+aD09PXYpKX1yZXNpemUoKXt0aGlzLl9yZW5kZXJTdGVwLm5leHQoYzQuQ0FMQ1VMQVRFX01PREVfT04pLHRoaXMuYWxy''@;'; put 'put ''ZWFkeVNpemVkJiZ0aGlzLl9yZW5kZXJTdGVwLm5leHQoYzQuQ0xFQVJfV0lEVEhTKSx0aGlzLl9yZW5kZXJTdGVwLm5leHQoYzQuQ09NUFVURV9DT0xVTU5fV0lEVEhTKSx0aGlzLl9yZW5kZXJTdGVwLm5leHQoYzQuQUxJR05fQ09MVU1OUyksdGhpcy5hbHJlYWR5U2l6ZWQ9ITAsdGhpcy5f''@;'; put 'put ''cmVuZGVyU3RlcC5uZXh0KGM0LkNBTENVTEFURV9NT0RFX09GRil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFhmZT0oKCk9PntjbGFzcyBke2NvbnN0''@;'; put 'put ''cnVjdG9yKGgsdix5KXt0aGlzLmVsPWgsdGhpcy5kb21BZGFwdGVyPXYsdGhpcy5vcmdhbml6ZXI9eSx0aGlzLl9yZXNpemVkQnk9MH1nZXQgcmVzaXplZEJ5KCl7cmV0dXJuIHRoaXMuX3Jlc2l6ZWRCeX1nZXQgbWluQ29sdW1uV2lkdGgoKXtyZXR1cm4gdGhpcy5kb21BZGFwdGVyLm1pbldp''@;'; put 'put ''ZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCl8fDk2fWdldCBtYXhSZXNpemVSYW5nZSgpe3JldHVybiB0aGlzLndpZHRoQmVmb3JlUmVzaXplLXRoaXMubWluQ29sdW1uV2lkdGh9c3RhcnRSZXNpemUoKXt0aGlzLl9yZXNpemVkQnk9MCx0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9ITAs''@;'; put 'put ''dGhpcy53aWR0aEJlZm9yZVJlc2l6ZT10aGlzLmRvbUFkYXB0ZXIuY2xpZW50UmVjdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLndpZHRofWVuZFJlc2l6ZSgpe3RoaXMub3JnYW5pemVyLnJlc2l6ZSgpfWdldCB3aWR0aEFmdGVyUmVzaXplKCl7cmV0dXJuIHRoaXMud2lkdGhCZWZvcmVSZXNp''@;'; put 'put ''emUrdGhpcy5fcmVzaXplZEJ5fWNhbGN1bGF0ZVJlc2l6ZShoKXtoPC10aGlzLm1heFJlc2l6ZVJhbmdlPyh0aGlzLl9yZXNpemVkQnk9LXRoaXMubWF4UmVzaXplUmFuZ2UsdGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlPSExKToodGhpcy5fcmVzaXplZEJ5PWgsdGhpcy5pc1dpdGhpbk1h''@;'; put 'put ''eFJlc2l6ZVJhbmdlPSEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoX28pLEVpKHU0KSxFaShrUykpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLEtmZT0oKCk9PntjbGFzcyBke2NvbnN0''@;'; put 'put ''cnVjdG9yKGgpe3RoaXMucGxhdGZvcm1JZD1ofWdldCB0YWJsZVJlZigpe3JldHVybiB0aGlzLl90YWJsZVJlZn1zZXQgdGFibGVSZWYoaCl7dGhpcy5fdGFibGVSZWY9aH1zZXQgdGFibGUoaCl7YWwodGhpcy5wbGF0Zm9ybUlkKSYmaC5uYXRpdmVFbGVtZW50JiYodGhpcy50YWJsZVJlZj1o''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkLXRhYmxlIikpfWdldENvbHVtbkRyYWdIZWlnaHQoKXtyZXR1cm4gdGhpcy50YWJsZVJlZj9gJHt0aGlzLnRhYmxlUmVmLmNsaWVudEhlaWdodH1weGA6bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCkoRWkoRTIpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxPeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksaixjZSl7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZT1oLHRoaXMucmVuZGVyZXI9''@;'; put 'put ''dix0aGlzLm5nWm9uZT15LHRoaXMudGFibGVTaXplU2VydmljZT1DLHRoaXMuY29tbW9uU3RyaW5nPUksdGhpcy5kb2N1bWVudD1qLHRoaXMuY29sdW1uU2VwYXJhdG9ySWQ9Y2UsdGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duPSExLHRoaXMudW5saXN0ZW5lcnM9W119Z2V0IHJlc2l6ZVRy''@;'; put 'put ''YWNrZXJFbCgpe3JldHVybiB0aGlzLnJlc2l6ZVRyYWNrZXJSZWYubmF0aXZlRWxlbWVudH1nZXQgY29sdW1uSGFuZGxlRWwoKXtyZXR1cm4gdGhpcy5jb2x1bW5IYW5kbGVSZWYubmF0aXZlRWxlbWVudH1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigo''@;'; put 'put ''KT0+e3RoaXMudW5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmNvbHVtbkhhbmRsZUVsLCJrZXlkb3duIixoPT57dGhpcy5zaG93VHJhY2tlck9uRmlyc3RLZXlEb3duKGgpLHRoaXMubW92ZVRyYWNrZXJPbktleURvd24oaCl9KSksdGhpcy51bmxpc3RlbmVycy5w''@;'; put 'put ''dXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuY29sdW1uSGFuZGxlRWwsImtleXVwIixoPT57dGhpcy5oaWRlVHJhY2tlck9uS2V5VXAoaCl9KSl9KX1nZXQgZGVzY3JpcHRpb25JZCgpe3JldHVybmAke3RoaXMuY29sdW1uU2VwYXJhdG9ySWR9LWFyaWEtZGVzY3JpYmVkYnlgfXNob3dU''@;'; put 'put ''cmFja2VyKCl7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5zdGFydFJlc2l6ZSgpO2NvbnN0IGg9dGhpcy50YWJsZVNpemVTZXJ2aWNlLmdldENvbHVtbkRyYWdIZWlnaHQoKTt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJoZWlnaHQiLGgpLHRoaXMucmVu''@;'; put 'put ''ZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsImRpc3BsYXkiLCJibG9jayIpfW1vdmVUcmFja2VyKGgpe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2UuY2FsY3VsYXRlUmVzaXplKGgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsInRyYW5z''@;'; put 'put ''Zm9ybSIsYHRyYW5zbGF0ZVgoJHt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeX1weClgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwiY3Vyc29yIiwiY29sLXJlc2l6ZSIpLHRoaXMucmVkRmxhZ1RyYWNrZXIoKX1oaWRlVHJhY2tlcigpe3Ro''@;'; put 'put ''aXMuY29sdW1uUmVzaXplclNlcnZpY2UuZW5kUmVzaXplKCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVY''@;'; put 'put ''KDBweCkiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwiY3Vyc29yIiwiYXV0byIpfXNob3dUcmFja2VyT25GaXJzdEtleURvd24oaCl7IXRoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93biYmKHRoaXMuaXNBcnJvd0xlZnRLZXlFdmVudChoKXx8dGhpcy5pc0Fy''@;'; put 'put ''cm93UmlnaHRLZXlFdmVudChoKSkmJih0aGlzLnJlc2l6ZVN0YXJ0ZWRPbktleURvd249ITAsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwib24tYXJyb3cta2V5LXJlc2l6ZSIpLHRoaXMuc2hvd1RyYWNrZXIoKSl9bW92ZVRyYWNrZXJPbktleURvd24oaCl7''@;'; put 'put ''dGhpcy5pc0Fycm93TGVmdEtleUV2ZW50KGgpP3RoaXMubW92ZVRyYWNrZXIodGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnktMTIpOnRoaXMuaXNBcnJvd1JpZ2h0S2V5RXZlbnQoaCkmJnRoaXMubW92ZVRyYWNrZXIodGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVk''@;'; put 'put ''QnkrMTIpfWhpZGVUcmFja2VyT25LZXlVcChoKXt0aGlzLnJlc2l6ZVN0YXJ0ZWRPbktleURvd24mJih0aGlzLmlzQXJyb3dMZWZ0S2V5RXZlbnQoaCl8fHRoaXMuaXNBcnJvd1JpZ2h0S2V5RXZlbnQoaCkpJiYodGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duPSExLHRoaXMucmVuZGVyZXIu''@;'; put 'put ''cmVtb3ZlQ2xhc3ModGhpcy5yZXNpemVUcmFja2VyRWwsIm9uLWFycm93LWtleS1yZXNpemUiKSx0aGlzLmhpZGVUcmFja2VyKCksdGhpcy5jb2x1bW5IYW5kbGVFbC5mb2N1cygpKX1yZWRGbGFnVHJhY2tlcigpe3RoaXMuaXNXaXRoaW5NYXhSZXNpemVSYW5nZSE9PXRoaXMuY29sdW1uUmVz''@;'; put 'put ''aXplclNlcnZpY2UuaXNXaXRoaW5NYXhSZXNpemVSYW5nZSYmKHRoaXMuaXNXaXRoaW5NYXhSZXNpemVSYW5nZT10aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLmlzV2l0aGluTWF4UmVzaXplUmFuZ2UsdGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlP3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xh''@;'; put 'put ''c3ModGhpcy5yZXNpemVUcmFja2VyRWwsImV4Y2VlZGVkLW1heCIpOnRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5yZXNpemVUcmFja2VyRWwsImV4Y2VlZGVkLW1heCIpKX1pc0Fycm93TGVmdEtleUV2ZW50KGgpe3JldHVybiBoLmtleT09PUdlLkFycm93TGVmdHx8aC5rZXk9PT1sdC5B''@;'; put 'put ''cnJvd0xlZnR9aXNBcnJvd1JpZ2h0S2V5RXZlbnQoaCl7cmV0dXJuIGgua2V5PT09R2UuQXJyb3dSaWdodHx8aC5rZXk9PT1sdC5BcnJvd1JpZ2h0fW5nT25EZXN0cm95KCl7dGhpcy51bmxpc3RlbmVycy5mb3JFYWNoKGg9PmgoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXty''@;'; put 'put ''ZXR1cm4gbmV3KGh8fGQpKEt0KFhmZSksS3QoRGEpLEt0KGRsKSxLdChLZmUpLEt0KEZhKSxLdCh1cyksS3QoRDApKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLWNvbHVtbi1zZXBhcmF0b3IiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiYo''@;'; put 'put ''ZzAoY2NlLDUpLGcwKEwkLDUpKSwyJmgpe2xldCB5O3ppKHk9QWkoKSkmJih2LnJlc2l6ZVRyYWNrZXJSZWY9eS5maXJzdCksemkoeT1BaSgpKSYmKHYuY29sdW1uSGFuZGxlUmVmPXkuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJkYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW4tc2VwYXJhdG9yIiwhMCl9LGZlYXR1cmVzOltnbyhbUmNdKV0sZGVjbHM6Nix2YXJzOjUsY29uc3RzOltbInR5cGUiLCJidXR0b24iLCJjbHJEcmFnZ2FibGUiLCIiLDEsImRhdGFncmlkLWNvbHVtbi1oYW5kbGUiLDMsImNsckdyb3VwIiwiY2xyRHJhZ1N0YXJ0IiwiY2xy''@;'; put 'put ''RHJhZ01vdmUiLCJjbHJEcmFnRW5kIl0sWyJjb2x1bW5IYW5kbGUiLCIiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwiZGF0YWdyaWQtY29sdW1uLXJlc2l6ZS10cmFja2VyIl0sWyJyZXNpemVUcmFja2VyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiYnV0dG9uIiww''@;'; put 'put ''LDEpLFpuKCJjbHJEcmFnU3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuc2hvd1RyYWNrZXIoKX0pKCJjbHJEcmFnTW92ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYubW92ZVRyYWNrZXIoQy5kcmFnUG9zaXRpb24ubW92ZVgpfSkoImNsckRyYWdFbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuaGlk''@;'; put 'put ''ZVRyYWNrZXIoKX0pLGl0KCksdHQoMiwic3BhbiIsMiksV3QoMyksaXQoKSxicig0LCJkaXYiLDMsNCkpLDImaCYmKHh0KCJjbHJHcm91cCIsdi5jb2x1bW5TZXBhcmF0b3JJZCksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5nLmtleXMuY29sdW1uU2VwYXJhdG9yQXJpYUxhYmVsKSgi''@;'; put 'put ''YXJpYS1kZXNjcmliZWRieSIsdi5kZXNjcmlwdGlvbklkKSxzdCgyKSxHaSgiaWQiLHYuZGVzY3JpcHRpb25JZCksc3QoMSksVWkoIiAiLHYuY29tbW9uU3RyaW5nLmtleXMuY29sdW1uU2VwYXJhdG9yRGVzY3JpcHRpb24sIiAiKSl9LGRlcGVuZGVuY2llczpbeHllXSxlbmNhcHN1bGF0aW9u''@;'; put 'put ''OjJ9KSxkfSkoKSxTUz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgbXF7Y29uc3RydWN0b3IoaCx2LHksQyxJLGope3N1cGVyKHYpLHRoaXMuX3NvcnQ9aCx0aGlzLnZjcj15LHRoaXMuZGV0YWlsU2VydmljZT1DLHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWY9SSx0aGlzLmNvbW1vblN0cmluZ3M9aix0''@;'; put 'put ''aGlzLnNob3dTZXBhcmF0b3I9ITAsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX2NvbFR5cGU9InN0cmluZyIsdGhpcy5fc29ydGVkPSExLHRoaXMuc29ydGVkQ2hhbmdlPW5ldyBmbix0aGlzLl9zb3J0T3JkZXI9bWguVU5TT1JURUQsdGhpcy5zb3J0T3JkZXJDaGFuZ2U9bmV3IGZuLHRo''@;'; put 'put ''aXMuY3VzdG9tRmlsdGVyPSExLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2U9bmV3IGZuLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yU29ydGluZ0NoYW5nZXMoKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEZXRhaWxQYW5lQ2hhbmdlcygpKX1u''@;'; put 'put ''Z09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1saXN0ZW5Gb3JEZXRhaWxQYW5lQ2hhbmdlcygpe3JldHVybiB0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGVDaGFuZ2Uuc3Vic2NyaWJlKGg9Pnt0aGlz''@;'; put 'put ''LnNob3dTZXBhcmF0b3IhPT0haCYmKHRoaXMuc2hvd1NlcGFyYXRvcj0haCx0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX0pfWxpc3RlbkZvclNvcnRpbmdDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX3NvcnQuY2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5jaGFuZ2VEZXRl''@;'; put 'put ''Y3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnNvcnRPcmRlciE9PW1oLlVOU09SVEVEJiZoLmNvbXBhcmF0b3IhPT10aGlzLl9zb3J0QnkmJih0aGlzLl9zb3J0T3JkZXI9bWguVU5TT1JURUQsdGhpcy5zb3J0T3JkZXJDaGFuZ2UuZW1pdCh0aGlzLl9zb3J0T3JkZXIpLHRoaXMuc29ydElj''@;'; put 'put ''b249bnVsbCx0aGlzLl9zb3J0RGlyZWN0aW9uPW51bGwpLHRoaXMuc29ydGVkJiZoLmNvbXBhcmF0b3IhPT10aGlzLl9zb3J0QnkmJih0aGlzLl9zb3J0ZWQ9ITEsdGhpcy5zb3J0ZWRDaGFuZ2UuZW1pdCghMSkpfSl9Z2V0IGNvbFR5cGUoKXtyZXR1cm4gdGhpcy5fY29sVHlwZX1zZXQgY29s''@;'; put 'put ''VHlwZShoKXt0aGlzLl9jb2xUeXBlPWh9Z2V0IGZpZWxkKCl7cmV0dXJuIHRoaXMuX2ZpZWxkfXNldCBmaWVsZChoKXsic3RyaW5nIj09dHlwZW9mIGgmJih0aGlzLl9maWVsZD1oLHRoaXMuX3NvcnRCeXx8KHRoaXMuX3NvcnRCeT1uZXcgeXEoaCkpKX1zZXR1cERlZmF1bHRGaWx0ZXIoaCx2''@;'; put 'put ''KXsibnVtYmVyIj09PXY/dGhpcy5zZXRGaWx0ZXIobmV3IF9TKG5ldyB2cShoKSkpOiJzdHJpbmciPT09diYmdGhpcy5zZXRGaWx0ZXIobmV3IENTKG5ldyBBcShoKSkpLHRoaXMuZmlsdGVyJiZ0aGlzLmluaXRGaWx0ZXJWYWx1ZSYmKHRoaXMudXBkYXRlRmlsdGVyVmFsdWU9dGhpcy5pbml0''@;'; put 'put ''RmlsdGVyVmFsdWUsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlKX1uZ09uQ2hhbmdlcyhoKXtoLmNvbFR5cGUmJmguY29sVHlwZS5jdXJyZW50VmFsdWUmJmguY29sVHlwZS5jdXJyZW50VmFsdWUhPT1oLmNvbFR5cGUucHJldmlvdXNWYWx1ZSYmIXRoaXMuY3VzdG9tRmlsdGVyJiYhdGhp''@;'; put 'put ''cy5maWx0ZXImJnRoaXMuY29sVHlwZSYmdGhpcy5maWVsZCYmdGhpcy5zZXR1cERlZmF1bHRGaWx0ZXIodGhpcy5maWVsZCx0aGlzLmNvbFR5cGUpLGguZmllbGQmJmguZmllbGQuY3VycmVudFZhbHVlJiZoLmZpZWxkLmN1cnJlbnRWYWx1ZSE9PWguZmllbGQucHJldmlvdXNWYWx1ZSYmIXRo''@;'; put 'put ''aXMuY3VzdG9tRmlsdGVyJiZ0aGlzLmNvbFR5cGUmJnRoaXMuc2V0dXBEZWZhdWx0RmlsdGVyKHRoaXMuZmllbGQsdGhpcy5jb2xUeXBlKX1nZXQgc29ydEJ5KCl7cmV0dXJuIHRoaXMuX3NvcnRCeX1zZXQgc29ydEJ5KGgpeyJzdHJpbmciPT10eXBlb2YgaD90aGlzLl9zb3J0Qnk9bmV3IHlx''@;'; put 'put ''KGgpOmg/dGhpcy5fc29ydEJ5PWg6dGhpcy5maWVsZD90aGlzLl9zb3J0Qnk9bmV3IHlxKHRoaXMuZmllbGQpOmRlbGV0ZSB0aGlzLl9zb3J0Qnl9Z2V0IHNvcnRhYmxlKCl7cmV0dXJuISF0aGlzLl9zb3J0Qnl9Z2V0IHNvcnRlZCgpe3JldHVybiB0aGlzLl9zb3J0ZWR9c2V0IHNvcnRlZCho''@;'; put 'put ''KXshaCYmdGhpcy5zb3J0ZWQ/KHRoaXMuX3NvcnRlZD0hMSx0aGlzLl9zb3J0LmNsZWFyKCkpOmgmJiF0aGlzLnNvcnRlZCYmdGhpcy5zb3J0KCl9Z2V0IHNvcnRPcmRlcigpe3JldHVybiB0aGlzLl9zb3J0T3JkZXJ9c2V0IHNvcnRPcmRlcihoKXtpZih2b2lkIDAhPT1oJiZ0aGlzLl9zb3J0''@;'; put 'put ''T3JkZXIhPT1oKXN3aXRjaChoKXtkZWZhdWx0OmNhc2UgbWguVU5TT1JURUQ6dGhpcy5fc29ydC5jbGVhcigpO2JyZWFrO2Nhc2UgbWguQVNDOnRoaXMuc29ydCghMSk7YnJlYWs7Y2FzZSBtaC5ERVNDOnRoaXMuc29ydCghMCl9fWdldCBhcmlhU29ydCgpe3N3aXRjaCh0aGlzLl9zb3J0T3Jk''@;'; put 'put ''ZXIpe2RlZmF1bHQ6Y2FzZSBtaC5VTlNPUlRFRDpyZXR1cm4ibm9uZSI7Y2FzZSBtaC5BU0M6cmV0dXJuImFzY2VuZGluZyI7Y2FzZSBtaC5ERVNDOnJldHVybiJkZXNjZW5kaW5nIn19Z2V0IHNvcnREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fc29ydERpcmVjdGlvbn1zb3J0KGgpeyF0aGlz''@;'; put 'put ''LnNvcnRhYmxlfHwodGhpcy5fc29ydC50b2dnbGUodGhpcy5fc29ydEJ5LGgpLHRoaXMuX3NvcnRPcmRlcj10aGlzLl9zb3J0LnJldmVyc2U/bWguREVTQzptaC5BU0MsdGhpcy5fc29ydERpcmVjdGlvbj10aGlzLl9zb3J0T3JkZXI9PT1taC5ERVNDPyJkb3duIjoidXAiLHRoaXMuc29ydElj''@;'; put 'put ''b249dGhpcy5fc29ydE9yZGVyPT09bWguREVTQz8iYXJyb3cgZG93biI6ImFycm93Iix0aGlzLnNvcnRPcmRlckNoYW5nZS5lbWl0KHRoaXMuX3NvcnRPcmRlciksdGhpcy5fc29ydGVkPSEwLHRoaXMuc29ydGVkQ2hhbmdlLmVtaXQoITApKX1zZXQgcHJvamVjdGVkRmlsdGVyKGgpe2gmJih0''@;'; put 'put ''aGlzLmRlbGV0ZUZpbHRlcigpLHRoaXMuY3VzdG9tRmlsdGVyPSEwKX1nZXQgZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlclN0cmluZ1BsYWNlaG9sZGVyfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5maWx0ZXJJdGVtc31nZXQgZmlsdGVyTnVtYmVy''@;'; put 'put ''TWF4UGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlck51bWJlck1heFBsYWNlaG9sZGVyfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5tYXhWYWx1ZX1nZXQgZmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlck51bWJlck1pblBsYWNl''@;'; put 'put ''aG9sZGVyfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5taW5WYWx1ZX1zZXQgdXBkYXRlRmlsdGVyVmFsdWUoaCl7dGhpcy5maWx0ZXI/dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBDUz8oKCFofHwic3RyaW5nIiE9dHlwZW9mIGgpJiYoaD0iIiksaCE9PXRoaXMuZmlsdGVyLnZhbHVlJiYodGhp''@;'; put 'put ''cy5maWx0ZXIudmFsdWU9aCkpOnRoaXMuZmlsdGVyIGluc3RhbmNlb2YgX1MmJigoIWh8fCEoaCBpbnN0YW5jZW9mIEFycmF5KSkmJihoPVtudWxsLG51bGxdKSwyPT09aC5sZW5ndGgmJihoWzBdIT09dGhpcy5maWx0ZXIudmFsdWVbMF18fGhbMV0hPT10aGlzLmZpbHRlci52YWx1ZVsxXSkm''@;'; put 'put ''Jih0aGlzLmZpbHRlci52YWx1ZT1oKSk6dGhpcy5pbml0RmlsdGVyVmFsdWU9aH1nZXQgZmlsdGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBDU3x8dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBfUz90aGlzLmZpbHRlci52YWx1ZTpudWxsfXNldCBmaWx0ZXJWYWx1ZSho''@;'; put 'put ''KXsodGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBDU3x8dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBfUykmJih0aGlzLnVwZGF0ZUZpbHRlclZhbHVlPWgsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyLnZhbHVlKSl9bmdPbkluaXQoKXt0aGlzLndyYXBwZWRJbmplY3Rvcj1u''@;'; put 'put ''ZXcgYXEoSmZlLHRoaXMudmNyKX1nZXQgX3ZpZXcoKXtyZXR1cm4gdGhpcy53cmFwcGVkSW5qZWN0b3IuZ2V0KEpmZSx0aGlzLnZjcikuY29sdW1uVmlld319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qod3EpLEt0KEN2KSxLdChNciksS3QoZDgp''@;'; put 'put ''LEt0KGQxKSxLdChGYSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJlMwKHkscHEsNSksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5wcm9qZWN0ZWRGaWx0ZXI9Qy5m''@;'; put 'put ''aXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIl0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJihHaSgiYXJpYS1zb3J0Iix2LmFyaWFTb3J0KSxIaSgiZGF0YWdyaWQtY29sdW1uIiwhMCkpfSxpbnB1dHM6e2NvbFR5cGU6WyJjbHJEZ0Nv''@;'; put 'put ''bFR5cGUiLCJjb2xUeXBlIl0sZmllbGQ6WyJjbHJEZ0ZpZWxkIiwiZmllbGQiXSxzb3J0Qnk6WyJjbHJEZ1NvcnRCeSIsInNvcnRCeSJdLHNvcnRlZDpbImNsckRnU29ydGVkIiwic29ydGVkIl0sc29ydE9yZGVyOlsiY2xyRGdTb3J0T3JkZXIiLCJzb3J0T3JkZXIiXSxmaWx0ZXJTdHJpbmdQ''@;'; put 'put ''bGFjZWhvbGRlcjpbImNsckZpbHRlclN0cmluZ1BsYWNlaG9sZGVyIiwiZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIiXSxmaWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlcjpbImNsckZpbHRlck51bWJlck1heFBsYWNlaG9sZGVyIiwiZmlsdGVyTnVtYmVyTWF4UGxhY2Vob2xkZXIiXSxmaWx0ZXJO''@;'; put 'put ''dW1iZXJNaW5QbGFjZWhvbGRlcjpbImNsckZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyIiwiZmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXIiXSx1cGRhdGVGaWx0ZXJWYWx1ZTpbImNsckZpbHRlclZhbHVlIiwidXBkYXRlRmlsdGVyVmFsdWUiXX0sb3V0cHV0czp7c29ydGVkQ2hhbmdlOiJj''@;'; put 'put ''bHJEZ1NvcnRlZENoYW5nZSIsc29ydE9yZGVyQ2hhbmdlOiJjbHJEZ1NvcnRPcmRlckNoYW5nZSIsZmlsdGVyVmFsdWVDaGFuZ2U6ImNsckZpbHRlclZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W2dvKFtGaSxadCxFdF0pLFJvLGQyXSxuZ0NvbnRlbnRTZWxlY3RvcnM6cGNlLGRlY2xzOjksdmFy''@;'; put 'put ''czo1LGNvbnN0czpbWzEsImRhdGFncmlkLWNvbHVtbi1mbGV4Il0sWyJjbGFzcyIsImRhdGFncmlkLWNvbHVtbi10aXRsZSIsInR5cGUiLCJidXR0b24iLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsckZpbHRlclBsYWNlaG9sZGVyIiwiY2xyRGdTdHJpbmdGaWx0ZXIiLCJjbHJGaWx0ZXJW''@;'; put 'put ''YWx1ZSIsImNsckZpbHRlclZhbHVlQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLCJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSIsImNsckZpbHRlclZhbHVlQ2hhbmdlIiw0LCJuZ0lmIl0s''@;'; put 'put ''WyJjb2x1bW5UaXRsZSIsIiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiZGF0YWdyaWQtY29sdW1uLXRpdGxlIiwzLCJjbGljayJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJzaGFwZSIsImFycm93''@;'; put 'put ''IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwiY2xhc3MiLCJzb3J0LWljb24iLDQsIm5nSWYiXSxbInNoYXBlIiwiYXJyb3ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsInNvcnQtaWNvbiJdLFszLCJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsImNsckRnU3RyaW5nRmlsdGVyIiwiY2xyRmlsdGVyVmFs''@;'; put 'put ''dWUiLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJdLFszLCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsImNsckZpbHRlck1pblBsYWNlaG9sZGVyIiwiY2xyRGdOdW1lcmljRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUiLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4t''@;'; put 'put ''dGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChmOCksdHQoMCwiZGl2IiwwKSxubigxLGFaLDMsMiwiYnV0dG9uIiwxKSxWaSgyKSxubigzLGxaLDEsMywiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDIpLG5uKDQsRkwsMSw0LCJjbHItZGctbnVtZXJpYy1maWx0ZXIiLDMp''@;'; put 'put ''LG5uKDUsc1osMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LF9sKSxubig3LE8kLDIsMSwic3BhbiIsNSksbm4oOCxkY2UsMSwwLCJjbHItZGctY29sdW1uLXNlcGFyYXRvciIsNiksaXQoKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLHYuc29ydGFibGUpLHN0KDIpLHh0KCJuZ0lmIix2LmZpZWxk''@;'; put 'put ''JiYhdi5jdXN0b21GaWx0ZXImJiJzdHJpbmciPT12LmNvbFR5cGUpLHN0KDEpLHh0KCJuZ0lmIix2LmZpZWxkJiYhdi5jdXN0b21GaWx0ZXImJiJudW1iZXIiPT12LmNvbFR5cGUpLHN0KDMpLHh0KCJuZ0lmIiwhdi5zb3J0YWJsZSksc3QoMSkseHQoIm5nSWYiLHYuc2hvd1NlcGFyYXRvcikp''@;'; put 'put ''fSxkZXBlbmRlbmNpZXM6W1FmZSxEeWUsT3llLEJvLHpkLGtzXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxkfSkoKSxDdz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLl9maWx0ZXJzPWgsdGhpcy5fc29ydD12LHRoaXMuX3BhZ2U9eSx0aGlzLmxv''@;'; put 'put ''YWRpbmc9ITEsdGhpcy50cmFja0J5PShDLEkpPT5JLHRoaXMuX3NtYXJ0PSExLHRoaXMuX2Rpc3BsYXllZD1bXSx0aGlzLl9jaGFuZ2U9bmV3ICRlLHRoaXMuX2FsbENoYW5nZXM9bmV3ICRlfWRlc3Ryb3koKXt0aGlzLl9maWx0ZXJzU3ViJiZ0aGlzLl9maWx0ZXJzU3ViLnVuc3Vic2NyaWJl''@;'; put 'put ''KCksdGhpcy5fc29ydFN1YiYmdGhpcy5fc29ydFN1Yi51bnN1YnNjcmliZSgpLHRoaXMuX3BhZ2VTdWImJnRoaXMuX3BhZ2VTdWIudW5zdWJzY3JpYmUoKX1nZXQgc21hcnQoKXtyZXR1cm4gdGhpcy5fc21hcnR9c21hcnRlblVwKCl7dGhpcy5fc21hcnQ9ITAsdGhpcy5fZmlsdGVyc1N1Yj10''@;'; put 'put ''aGlzLl9maWx0ZXJzLmNoYW5nZS5zdWJzY3JpYmUoKCk9PnRoaXMuX2ZpbHRlckl0ZW1zKCkpLHRoaXMuX3NvcnRTdWI9dGhpcy5fc29ydC5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5fc29ydC5jb21wYXJhdG9yP3RoaXMuX3NvcnRJdGVtcygpOnRoaXMuX2ZpbHRlckl0ZW1zKCl9KSx0''@;'; put 'put ''aGlzLl9wYWdlU3ViPXRoaXMuX3BhZ2UuY2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5fY2hhbmdlUGFnZSgpKX1nZXQgYWxsKCl7cmV0dXJuIHRoaXMuX2FsbH1zZXQgYWxsKGgpe3RoaXMuX2FsbD1oLHRoaXMuZW1pdEFsbENoYW5nZXMoaCksdGhpcy5zbWFydD90aGlzLl9maWx0ZXJJdGVt''@;'; put 'put ''cygpOih0aGlzLl9kaXNwbGF5ZWQ9aCx0aGlzLmVtaXRDaGFuZ2UoKSl9cmVmcmVzaCgpe3RoaXMuc21hcnQmJnRoaXMuX2ZpbHRlckl0ZW1zKCl9Z2V0IGRpc3BsYXllZCgpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWR9ZW1pdENoYW5nZSgpe3RoaXMuX2NoYW5nZS5uZXh0KHRoaXMuZGlzcGxh''@;'; put 'put ''eWVkKX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1lbWl0QWxsQ2hhbmdlcyhoKXt0aGlzLl9hbGxDaGFuZ2VzLm5leHQoaCl9Z2V0IGFsbENoYW5nZXMoKXtyZXR1cm4gdGhpcy5fYWxsQ2hhbmdlcy5hc09ic2VydmFibGUoKX1nZXQgdW5pbml0aWFs''@;'; put 'put ''aXplZCgpe3JldHVybiF0aGlzLl9hbGx9X2ZpbHRlckl0ZW1zKCl7dGhpcy51bmluaXRpYWxpemVkfHwodGhpcy5fZmlsdGVyZWQ9dGhpcy5fZmlsdGVycy5oYXNBY3RpdmVGaWx0ZXJzKCk/dGhpcy5fYWxsLmZpbHRlcihoPT50aGlzLl9maWx0ZXJzLmFjY2VwdHMoaCkpOnRoaXMuX2FsbC5z''@;'; put 'put ''bGljZSgpLHRoaXMuX3BhZ2UudG90YWxJdGVtcz10aGlzLl9maWx0ZXJlZC5sZW5ndGgsdGhpcy5fc29ydEl0ZW1zKCkpfV9zb3J0SXRlbXMoKXt0aGlzLnVuaW5pdGlhbGl6ZWR8fCh0aGlzLl9zb3J0LmNvbXBhcmF0b3ImJnRoaXMuX2ZpbHRlcmVkLnNvcnQoKGgsdik9PnRoaXMuX3NvcnQu''@;'; put 'put ''Y29tcGFyZShoLHYpKSx0aGlzLl9jaGFuZ2VQYWdlKCkpfV9jaGFuZ2VQYWdlKCl7dGhpcy51bmluaXRpYWxpemVkfHx0aGlzLl9wYWdlLmFjdGl2YXRlZCYmMD09PXRoaXMuX3BhZ2Uuc2l6ZXx8KHRoaXMuX2Rpc3BsYXllZD10aGlzLl9wYWdlLnNpemU+MD90aGlzLl9maWx0ZXJlZC5zbGlj''@;'; put 'put ''ZSh0aGlzLl9wYWdlLmZpcnN0SXRlbSx0aGlzLl9wYWdlLmxhc3RJdGVtKzEpOnRoaXMuX2ZpbHRlcmVkLHRoaXMuZW1pdENoYW5nZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoQ3YpLEVpKHdxKSxFaShidykpfSxkLlx1MDI3NXByb3Y9''@;'; put 'put ''cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGFPPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy50ZW1wbGF0ZT1oLHRoaXMuZGlmZmVycz12LHRoaXMuaXRlbXM9eSx0aGlzLnZjcj1DLHRoaXMuZGlmZmVyPW51bGwsdGhpcy5zdWJzY3JpcHRp''@;'; put 'put ''b25zPVtdLHkuc21hcnRlblVwKCksdGhpcy5pdGVyYWJsZVByb3h5PW5ldyBxbCh0aGlzLnZjcix0aGlzLnRlbXBsYXRlLHRoaXMuZGlmZmVycyksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goeS5jaGFuZ2Uuc3Vic2NyaWJlKEk9Pnt0aGlzLml0ZXJhYmxlUHJveHkubmdGb3JPZj1JLHRoaXMu''@;'; put 'put ''aXRlcmFibGVQcm94eS5uZ0RvQ2hlY2soKX0pKX1zZXQgcmF3SXRlbXMoaCl7dGhpcy5fcmF3SXRlbXM9aHx8W119c2V0IHRyYWNrQnkoaCl7dGhpcy5pdGVtcy50cmFja0J5PWgsdGhpcy5pdGVyYWJsZVByb3h5Lm5nRm9yVHJhY2tCeT1ofW5nRG9DaGVjaygpe3RoaXMuZGlmZmVyfHwodGhp''@;'; put 'put ''cy5kaWZmZXI9dGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fcmF3SXRlbXMpLmNyZWF0ZSh0aGlzLml0ZXJhYmxlUHJveHkubmdGb3JUcmFja0J5KSksdGhpcy5kaWZmZXImJnRoaXMuZGlmZmVyLmRpZmYodGhpcy5fcmF3SXRlbXMpJiYodGhpcy5pdGVtcy5hbGw9dGhpcy5fcmF3SXRlbXMpfW5n''@;'; put 'put ''T25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVm4pLEt0KF9mKSxLdChDdyksS3QoTXIpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siIiwiY2xyRGdJdGVtcyIsIiIsImNsckRnSXRlbXNPZiIsIiJdXSxpbnB1dHM6e3Jhd0l0ZW1zOlsiY2xyRGdJdGVtc09mIiwicmF3SXRlbXMiXSx0cmFja0J5OlsiY2xyRGdJdGVtc1RyYWNrQnkiLCJ0cmFja0J5Il19fSksZH0pKCksJGZlPSgoKT0+e2NsYXNzIGR7Y29uc3Ry''@;'; put 'put ''dWN0b3IoaCl7dGhpcy5pdGVtcz1ofWdldCBlbXB0eURhdGFncmlkKCl7cmV0dXJuISh0aGlzLml0ZW1zLmxvYWRpbmd8fHRoaXMuaXRlbXMuZGlzcGxheWVkJiYwIT09dGhpcy5pdGVtcy5kaXNwbGF5ZWQubGVuZ3RoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBu''@;'; put 'put ''ZXcoaHx8ZCkoS3QoQ3cpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLXBsYWNlaG9sZGVyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFpbmVyIiwhMCl9LG5nQ29u''@;'; put 'put ''dGVudFNlbGVjdG9yczp2YSxkZWNsczo0LHZhcnM6NCxjb25zdHM6W1sicm9sZSIsInJvdyIsMSwiZGF0YWdyaWQtcGxhY2Vob2xkZXIiXSxbImNsYXNzIiwiZGF0YWdyaWQtcGxhY2Vob2xkZXItaW1hZ2UiLDQsIm5nSWYiXSxbInJvbGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtcGxhY2Vo''@;'; put 'put ''b2xkZXItY29udGVudCJdLFs0LCJuZ0lmIl0sWzEsImRhdGFncmlkLXBsYWNlaG9sZGVyLWltYWdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSx0dCgwLCJkaXYiLDApLG5uKDEsX3UsMSwwLCJkaXYiLDEpLHR0KDIsInNwYW4iLDIpLG5uKDMsQ3UsMSwwLCJuZy1jb250''@;'; put 'put ''ZW50IiwzKSxpdCgpKCkpLDImaCYmKEhpKCJkYXRhZ3JpZC1lbXB0eSIsdi5lbXB0eURhdGFncmlkKSxzdCgxKSx4dCgibmdJZiIsdi5lbXB0eURhdGFncmlkKSxzdCgyKSx4dCgibmdJZiIsdi5lbXB0eURhdGFncmlkKSl9LGRlcGVuZGVuY2llczpbQm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9''@;'; put 'put ''KSgpLHFmZT0oKCk9PntjbGFzcyBke3NldCB0cmlnZ2VyRWwoaCl7dGhpcy5fdHJpZ2dlckVsPWh9Zm9jdXNUcmlnZ2VyKCl7dGhpcy5fdHJpZ2dlckVsJiZ0aGlzLl90cmlnZ2VyRWwuZm9jdXMoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQu''@;'; put 'put ''XHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksZWhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pZD1uZXcgJGV9c2V0SWQoaCl7dGhpcy5faWQubmV4dChoKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWQuYXNPYnNlcnZhYmxlKCl9''@;'; put 'put ''fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGJxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGosY2Upe3RoaXMudG9nZ2xlU2Vydmlj''@;'; put 'put ''ZT1oLHRoaXMuZWw9dix0aGlzLmNvbW1vblN0cmluZ3M9eSx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlPUMsdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlcj1JLHRoaXMucGxhdGZvcm1JZD1jZSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5kb2N1bWVudD1qfW5nT25Jbml0KCl7dGhpcy5zaWdu''@;'; put 'put ''cG9zdEZvY3VzTWFuYWdlci50cmlnZ2VyRWw9dGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5hcmlhRXhwYW5kZWQ9aDtjb25zdCB2PXRoaXMuaXNPcGVuO3RoaXMuaXNP''@;'; put 'put ''cGVuPWgsIXRoaXMuaXNPcGVuJiZ2JiZ0aGlzLmZvY3VzT25DbG9zZSgpfSksdGhpcy5zaWducG9zdElkU2VydmljZS5pZC5zdWJzY3JpYmUoaD0+dGhpcy5hcmlhQ29udHJvbD1oKSksdGhpcy5hZGREZWZhdWx0QXJpYUxhYmVsKHRoaXMuZWwubmF0aXZlRWxlbWVudCl9YWRkRGVmYXVsdEFy''@;'; put 'put ''aWFMYWJlbChoKXtoLmhhc0F0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpfHxoLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdGhpcy5jb21tb25TdHJpbmdzLmtleXMuc2lnbnBvc3RUb2dnbGUpfWZvY3VzT25DbG9zZSgpeyFhbCh0aGlzLnBsYXRmb3JtSWQpfHwhdGhpcy5pc09wZW4mJnRoaXMu''@;'; put 'put ''ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuZG9jdW1lbnQuYm9keSYmdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlci5mb2N1c1RyaWdnZXIoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9b25TaWducG9zdFRyaWdnZXJD''@;'; put 'put ''bGljayhoKXt0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChFdCksS3QoX28pLEt0KEZhKSxLdChlaGUpLEt0KHFmZSksS3QodXMpLEt0KEUyKSl9LGQuXHUwMjc1ZGlyPVlpKHt0''@;'; put 'put ''eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclNpZ25wb3N0VHJpZ2dlciIsIiJdXSxob3N0QXR0cnM6WzEsInNpZ25wb3N0LXRyaWdnZXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vblNpZ25wb3N0''@;'; put 'put ''VHJpZ2dlckNsaWNrKEMpfSksMiZoJiYoR2koImFyaWEtZXhwYW5kZWQiLHYuYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsdi5hcmlhQ29udHJvbCksSGkoImFjdGl2ZSIsdi5pc09wZW4pKX19KSxkfSkoKSx0aGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmNvbW1v''@;'; put 'put ''blN0cmluZ3M9aCx0aGlzLnVzZUN1c3RvbVRyaWdnZXI9ITF9c2V0IGN1c3RvbVRyaWdnZXIoaCl7dGhpcy51c2VDdXN0b21UcmlnZ2VyPSEhaH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRmEpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxz''@;'; put 'put ''ZWxlY3RvcnM6W1siY2xyLXNpZ25wb3N0Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJlMwKHksYnEsNSksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5jdXN0b21UcmlnZ2VyPUMuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2''@;'; put 'put ''KXsyJmgmJkhpKCJzaWducG9zdCIsITApfSxmZWF0dXJlczpbZ28oW0V0LHFmZSx7cHJvdmlkZTokTCx1c2VFeGlzdGluZzpfb30sZWhlXSldLG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyU2lnbnBv''@;'; put 'put ''c3RUcmlnZ2VyIiwiIiwxLCJzaWducG9zdC1hY3Rpb24iLCJidG4iLCJidG4tc21hbGwiLCJidG4tbGluayJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksbm4oMCx1WiwzLDEsIm5nLWNvbnRhaW5lciIsMCksVmkoMSkpLDImaCYm''@;'; put 'put ''eHQoIm5nSWYiLCF2LnVzZUN1c3RvbVRyaWdnZXIpfSxkZXBlbmRlbmNpZXM6W0JvLGJxLGtzXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxuaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2R5bmFtaWM9ITF9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5jZWxsVmlldz10aGlz''@;'; put 'put ''LnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMuY2VsbFZpZXcuZGVzdHJveSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siZGct''@;'; put 'put ''d3JhcHBlZC1jZWxsIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAoZ2NlLDUpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYudGVtcGxhdGVSZWY9eS5maXJzdCl9fSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbImNlbGxQb3J0YWwi''@;'; put 'put ''LCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLG5uKDAsY1osMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLF9sKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGt3PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy52Y3I9aH1uZ09uSW5pdCgpe3RoaXMud3Jh''@;'; put 'put ''cHBlZEluamVjdG9yPW5ldyBhcShuaGUsdGhpcy52Y3IpfWdldCBfdmlldygpe3JldHVybiB0aGlzLndyYXBwZWRJbmplY3Rvci5nZXQobmhlLHRoaXMudmNyKS5jZWxsVmlld319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXIpKX0sZC5cdTAy''@;'; put 'put ''NzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLWNlbGwiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmUzAoeSx0aGUsNCksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5zaWducG9zdD1DKX19LGhvc3RBdHRyczpbInJvbGUiLCJncmlkY2VsbCJd''@;'; put 'put ''LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiZGF0YWdyaWQtY2VsbCIsITApKCJkYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIix2LnNpZ25wb3N0Lmxlbmd0aD4wKX0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1''@;'; put 'put ''bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFJ5ZT0wLFJaPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBlZntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5leHBhbmRhYmxlSWQ9IiIsdGhpcy5fcmVwbGFjZT1uZXcgU2woITEpLHRoaXMuX2Fu''@;'; put 'put ''aW1hdGU9bmV3ICRlLFJ5ZSsrLHRoaXMuZXhwYW5kYWJsZUlkPSJjbHItZGctZXhwYW5kYWJsZS1yb3ctIitSeWV9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuX2V4cGFuZGVkfXNldCBleHBhbmRlZChoKXsoaD0hIWgpIT09dGhpcy5fZXhwYW5kZWQmJih0aGlzLl9leHBhbmRlZD1oLHRo''@;'; put 'put ''aXMuX2FuaW1hdGUubmV4dCgpLHRoaXMuX2V4cGFuZENoYW5nZS5uZXh0KGgpKX1sb2FkaW5nU3RhdGVDaGFuZ2UoaCl7c3VwZXIubG9hZGluZ1N0YXRlQ2hhbmdlKGgpLGghPT1wYS5MT0FESU5HJiZ0aGlzLl9hbmltYXRlLm5leHQoKX1nZXQgcmVwbGFjZSgpe3JldHVybiB0aGlzLl9yZXBs''@;'; put 'put ''YWNlLmFzT2JzZXJ2YWJsZSgpfXNldFJlcGxhY2UoaCl7dGhpcy5fcmVwbGFjZS5uZXh0KGgpfWdldCBhbmltYXRlKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGUuYXNPYnNlcnZhYmxlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXBy''@;'; put 'put ''b3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO3ZhciBTdz0oKCk9PihmdW5jdGlvbihkKXtkW2QuRElTUExBWT0wXT0iRElTUExBWSIsZFtkLkNBTENVTEFURT0xXT0iQ0FMQ1VMQVRFIn0oU3d8fChTdz17fSkpLFN3KSkoKSx6cz0oKCk9PihmdW5jdGlvbihkKXtk''@;'; put 'put ''W2QuTm9uZT0wXT0iTm9uZSIsZFtkLlNpbmdsZT0xXT0iU2luZ2xlIixkW2QuTXVsdGk9Ml09Ik11bHRpIn0oenN8fCh6cz17fSkpLHpzKSkoKTtsZXQgcmhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9keW5hbWljPSExfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMucm93Vmll''@;'; put 'put ''dz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMucm93Vmlldy5kZXN0cm95KCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpb''@;'; put 'put ''WyJkZy13cmFwcGVkLXJvdyJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJmcwKG1jZSw1KSwyJmgpe2xldCB5O3ppKHk9QWkoKSkmJih2LnRlbXBsYXRlUmVmPXkuZmlyc3QpfX0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJyb3dQb3J0''@;'; put 'put ''YWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLG5uKDAsUiQsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLF9sKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGhSZT0wLEJaPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX2l0ZW1zPWgsdGhp''@;'; put 'put ''cy5fZmlsdGVycz12LHRoaXMuX3pvbmU9eSx0aGlzLnByZXNlcnZlU2VsZWN0aW9uPSExLHRoaXMucHJldlNlbGVjdGlvblJlZnM9W10sdGhpcy5sb2NrZWRSZWZzPVtdLHRoaXMuX3NlbGVjdGlvblR5cGU9enMuTm9uZSx0aGlzLnJvd1NlbGVjdGlvbk1vZGU9ITEsdGhpcy5zdWJzY3JpcHRp''@;'; put 'put ''b25zPVtdLHRoaXMuc2hpZnRQcmVzc2VkPSExLHRoaXMudmFsdWVDb2xsZWN0b3I9bmV3ICRlLHRoaXMuX2NoYW5nZT1uZXcgJGUsdGhpcy5pZD0iY2xyLWRnLXNlbGVjdGlvbiIraFJlKyssdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5fZmlsdGVycy5jaGFuZ2Uuc3Vic2NyaWJlKCgp''@;'; put 'put ''PT57IXRoaXMuX3NlbGVjdGFibGV8fHRoaXMucHJlc2VydmVTZWxlY3Rpb258fHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9pdGVtcy5hbGxDaGFuZ2VzLnN1YnNjcmliZShDPT57Y29uc3QgST1bXTtzd2l0Y2godGhpcy5zZWxlY3Rpb25U''@;'; put 'put ''eXBlKXtjYXNlIHpzLk5vbmU6YnJlYWs7Y2FzZSB6cy5TaW5nbGU6e2xldCBqO2NvbnN0IGNlPXRoaXMuX2l0ZW1zLnRyYWNrQnk7bGV0IF9lPSExO2lmKHRoaXMuY3VycmVudFNpbmdsZSYmIXRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZiYmdGhpcy5faXRlbXMuYWxsJiZ0aGlzLl9pdGVt''@;'; put 'put ''cy50cmFja0J5KXtjb25zdCBSZT10aGlzLl9pdGVtcy5hbGwuZmluZEluZGV4KE5lPT5OZT09PXRoaXMuY3VycmVudFNpbmdsZSk7dGhpcy5wcmV2U2luZ2xlU2VsZWN0aW9uUmVmPXRoaXMuX2l0ZW1zLnRyYWNrQnkoUmUsdGhpcy5jdXJyZW50U2luZ2xlKX1DLmZvckVhY2goKFJlLE5lKT0+''@;'; put 'put ''e2NvbnN0IEtlPWNlKE5lLFJlKTt0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9PT1LZSYmKGo9UmUsX2U9ITApLHRoaXMubG9ja2VkUmVmcy5pbmRleE9mKEtlKT4tMSYmSS5wdXNoKEtlKX0pLHRoaXMuX2l0ZW1zLnNtYXJ0JiYhaiYmKF9lPSEwKSxzZXRUaW1lb3V0KCgpPT57X2UmJih0''@;'; put 'put ''aGlzLmN1cnJlbnRTaW5nbGU9ail9LDApO2JyZWFrfWNhc2UgenMuTXVsdGk6e2xldCBqPXRoaXMuY3VycmVudC5zbGljZSgpO2NvbnN0IGNlPXRoaXMuX2l0ZW1zLnRyYWNrQnk7bGV0IF9lPSExO3RoaXMuY3VycmVudC5sZW5ndGg+MCYmdGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5sZW5ndGgh''@;'; put 'put ''PT10aGlzLmN1cnJlbnQubGVuZ3RoJiZ0aGlzLl9pdGVtcy5hbGwmJnRoaXMuX2l0ZW1zLnRyYWNrQnkmJih0aGlzLnByZXZTZWxlY3Rpb25SZWZzPVtdLHRoaXMuY3VycmVudC5mb3JFYWNoKFJlPT57Y29uc3QgTmU9dGhpcy5faXRlbXMuYWxsLmZpbmRJbmRleChLZT0+S2U9PT1SZSk7dGhp''@;'; put 'put ''cy5wcmV2U2VsZWN0aW9uUmVmcy5wdXNoKHRoaXMuX2l0ZW1zLnRyYWNrQnkoTmUsUmUpKX0pKSxDLmZvckVhY2goKFJlLE5lKT0+e2NvbnN0IEtlPWNlKE5lLFJlKTt0aGlzLmxvY2tlZFJlZnMuaW5kZXhPZihLZSk+LTEmJkkucHVzaChLZSl9KSxqLmxlbmd0aD4wJiYoQy5mb3JFYWNoKChS''@;'; put 'put ''ZSxOZSk9Pntjb25zdCBLZT1jZShOZSxSZSksaHQ9dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5pbmRleE9mKEtlKTtodD4tMSYmKGpbaHRdPVJlLF9lPSEwKX0pLHRoaXMuX2l0ZW1zLnNtYXJ0JiYoaj1qLmZpbHRlcihSZT0+Qy5pbmRleE9mKFJlKT4tMSksdGhpcy5jdXJyZW50Lmxlbmd0aCE9''@;'; put 'put ''PWoubGVuZ3RoJiYoX2U9ITApKSxzZXRUaW1lb3V0KCgpPT57X2UmJih0aGlzLmN1cnJlbnQ9ail9LDApKTticmVha319dGhpcy5sb2NrZWRSZWZzPUl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy52YWx1ZUNvbGxlY3Rvci5waXBlKFJrKDApKS5zdWJzY3JpYmUoKCk9PnRoaXMu''@;'; put 'put ''ZW1pdENoYW5nZSgpKSl9Y2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9jdXJyZW50PVtdLHRoaXMucHJldlNlbGVjdGlvblJlZnM9W10sdGhpcy5wcmV2U2luZ2xlU2VsZWN0aW9uUmVmPW51bGwsdGhpcy5fY3VycmVudFNpbmdsZT1udWxsLHRoaXMuZW1pdENoYW5nZSgpfWdldCBzZWxlY3Rpb25U''@;'; put 'put ''eXBlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGV9c2V0IHNlbGVjdGlvblR5cGUoaCl7aCE9PXRoaXMuc2VsZWN0aW9uVHlwZSYmKHRoaXMuX3NlbGVjdGlvblR5cGU9aCxoPT09enMuTm9uZT9kZWxldGUgdGhpcy5jdXJyZW50OnRoaXMudXBkYXRlQ3VycmVudChbXSwhMSkpfWdldCBf''@;'; put 'put ''c2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlPT09enMuTXVsdGl8fHRoaXMuX3NlbGVjdGlvblR5cGU9PT16cy5TaW5nbGV9ZGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9Z2V0IGN1cnJlbnRTaW5nbGUoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fY3VycmVudFNpbmdsZX1zZXQgY3VycmVudFNpbmdsZShoKXtpZihoIT09dGhpcy5fY3VycmVudFNpbmdsZSl7aWYodGhpcy5fY3VycmVudFNpbmdsZT1oLHRoaXMuX2l0ZW1zLmFsbCYmdGhpcy5faXRlbXMudHJhY2tCeSYmaCl7Y29uc3Qgdj10aGlzLl9pdGVtcy5hbGwuZmlu''@;'; put 'put ''ZEluZGV4KHk9Pnk9PT1oKTt0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9dGhpcy5faXRlbXMudHJhY2tCeSh2LGgpfXRoaXMuZW1pdENoYW5nZSgpfX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGgpe3RoaXMudXBkYXRlQ3VycmVudChoLCEwKX11''@;'; put 'put ''cGRhdGVDdXJyZW50KGgsdil7dGhpcy5fY3VycmVudD1oLHYmJnRoaXMudmFsdWVDb2xsZWN0b3IubmV4dChoKX1lbWl0Q2hhbmdlKCl7dGhpcy5fc2VsZWN0aW9uVHlwZT09PXpzLlNpbmdsZT90aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRTaW5nbGUpOnRoaXMuX3NlbGVjdGlvblR5''@;'; put 'put ''cGU9PT16cy5NdWx0aSYmdGhpcy5fY2hhbmdlLm5leHQodGhpcy5jdXJyZW50KX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1pc1NlbGVjdGVkKGgpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlPT09enMuU2luZ2xlP3RoaXMuY3VycmVudFNpbmds''@;'; put 'put ''ZT09PWg6dGhpcy5fc2VsZWN0aW9uVHlwZT09PXpzLk11bHRpJiZ0aGlzLmN1cnJlbnQuaW5kZXhPZihoKT49MH1zZWxlY3RJdGVtKGgpe2lmKHRoaXMuY3VycmVudD10aGlzLmN1cnJlbnQuY29uY2F0KGgpLHRoaXMuX2l0ZW1zLnRyYWNrQnkmJnRoaXMuX2l0ZW1zLmFsbCl7Y29uc3Qgdj10''@;'; put 'put ''aGlzLl9pdGVtcy5hbGwuZmluZEluZGV4KHk9Pnk9PT1oKTt0aGlzLnByZXZTZWxlY3Rpb25SZWZzLnB1c2godGhpcy5faXRlbXMudHJhY2tCeSh2LGgpKX19ZGVzZWxlY3RJdGVtKGgpe2lmKHRoaXMuY3VycmVudD10aGlzLmN1cnJlbnQuc2xpY2UoMCxoKS5jb25jYXQodGhpcy5jdXJyZW50''@;'; put 'put ''LnNsaWNlKGgrMSkpLHRoaXMuX2l0ZW1zLnRyYWNrQnkmJmg8dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5sZW5ndGgpe2NvbnN0IHY9dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5zcGxpY2UoaCwxKTt0aGlzLmxvY2tlZFJlZnM9dGhpcy5sb2NrZWRSZWZzLmZpbHRlcih5PT55IT09dlswXSl9fXNl''@;'; put 'put ''dFNlbGVjdGVkKGgsdil7Y29uc3QgeT10aGlzLmN1cnJlbnQ/dGhpcy5jdXJyZW50LmluZGV4T2YoaCk6LTE7c3dpdGNoKHRoaXMuX3NlbGVjdGlvblR5cGUpe2Nhc2UgenMuTm9uZTpjYXNlIHpzLlNpbmdsZTpicmVhaztjYXNlIHpzLk11bHRpOnk+PTAmJiF2P3RoaXMuZGVzZWxlY3RJdGVt''@;'; put 'put ''KHkpOnk8MCYmdiYmdGhpcy5zZWxlY3RJdGVtKGgpfX1pc0FsbFNlbGVjdGVkKCl7aWYodGhpcy5fc2VsZWN0aW9uVHlwZSE9PXpzLk11bHRpfHwhdGhpcy5faXRlbXMuZGlzcGxheWVkKXJldHVybiExO2NvbnN0IGg9dGhpcy5faXRlbXMuZGlzcGxheWVkLmZpbHRlcihDPT4hMT09PXRoaXMu''@;'; put 'put ''aXNMb2NrZWQoQykpO3JldHVybiEoaC5sZW5ndGg8MSkmJmguZmlsdGVyKEM9PnRoaXMuY3VycmVudC5pbmRleE9mKEMpPi0xKS5sZW5ndGg9PT1oLmxlbmd0aH1jYW5JdEJlTG9ja2VkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGUhPT16cy5Ob25lJiZBcnJheS5pc0FycmF5KHRoaXMu''@;'; put 'put ''X2l0ZW1zLmFsbCl9bG9ja0l0ZW0oaCx2KXtpZih0aGlzLmNhbkl0QmVMb2NrZWQoKSl7Y29uc3QgeT10aGlzLl9pdGVtcy50cmFja0J5KHRoaXMuX2l0ZW1zLmFsbC5maW5kSW5kZXgoQz0+Qz09PWgpLGgpOyEwPT09dj90aGlzLmxvY2tlZFJlZnMucHVzaCh5KTp0aGlzLmxvY2tlZFJlZnM9''@;'; put 'put ''dGhpcy5sb2NrZWRSZWZzLmZpbHRlcihDPT55IT09Qyl9fWlzTG9ja2VkKGgpe2lmKHRoaXMuY2FuSXRCZUxvY2tlZCgpKXtjb25zdCB2PXRoaXMuX2l0ZW1zLnRyYWNrQnkodGhpcy5faXRlbXMuYWxsLmZpbmRJbmRleCh5PT55PT09aCksaCk7cmV0dXJuIHRoaXMubG9ja2VkUmVmcy5pbmRl''@;'; put 'put ''eE9mKHYpPi0xfXJldHVybiExfXRvZ2dsZUFsbCgpe3RoaXMuX3NlbGVjdGlvblR5cGU9PT16cy5Ob25lfHx0aGlzLl9zZWxlY3Rpb25UeXBlPT09enMuU2luZ2xlfHwodGhpcy5pc0FsbFNlbGVjdGVkKCk/dGhpcy5faXRlbXMuZGlzcGxheWVkLmZvckVhY2goaD0+e2NvbnN0IHY9dGhpcy5j''@;'; put 'put ''dXJyZW50LmluZGV4T2YoaCk7dj4tMSYmITE9PT10aGlzLmlzTG9ja2VkKGgpJiZ0aGlzLmRlc2VsZWN0SXRlbSh2KX0pOnRoaXMuX2l0ZW1zLmRpc3BsYXllZC5mb3JFYWNoKGg9Pnt0aGlzLmN1cnJlbnQuaW5kZXhPZihoKTwwJiYhMT09PXRoaXMuaXNMb2NrZWQoaCkmJnRoaXMuc2VsZWN0''@;'; put 'put ''SXRlbShoKX0pKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoQ3cpLEVpKEN2KSxFaShkbCkpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGloZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9y''@;'; put 'put ''KGgpe3RoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl92aWV3PW5ldyBTbChTdy5ESVNQTEFZKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChoLmZpbHRlclJlbmRlclN0ZXBzKGM0LkNBTENVTEFURV9NT0RFX09OKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3ZpZXcubmV4dChTdy5DQUxDVUxBVEUp''@;'; put 'put ''KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goaC5maWx0ZXJSZW5kZXJTdGVwcyhjNC5DQUxDVUxBVEVfTU9ERV9PRkYpLnN1YnNjcmliZSgoKT0+dGhpcy5fdmlldy5uZXh0KFN3LkRJU1BMQVkpKSl9Z2V0IHZpZXcoKXtyZXR1cm4gdGhpcy5fdmlldy5hc09ic2VydmFibGUoKX1uZ09uRGVz''@;'; put 'put ''dHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGtTKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCks''@;'; put 'put ''X3E9MCxNUz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqLGNlLF9lLFJlLE5lLEtlLGh0KXt0aGlzLnNlbGVjdGlvbj1oLHRoaXMucm93QWN0aW9uU2VydmljZT12LHRoaXMuZ2xvYmFsRXhwYW5kYWJsZT15LHRoaXMuZXhwYW5kPUMsdGhpcy5kZXRhaWxTZXJ2aWNlPUks''@;'; put 'put ''dGhpcy5kaXNwbGF5TW9kZT1qLHRoaXMudmNyPWNlLHRoaXMucmVuZGVyZXI9X2UsdGhpcy5lbD1SZSx0aGlzLmNvbW1vblN0cmluZ3M9TmUsdGhpcy5pdGVtcz1LZSx0aGlzLmRvY3VtZW50PWh0LHRoaXMuU0VMRUNUSU9OX1RZUEU9enMsdGhpcy5leHBhbmRBbmltYXRpb25UcmlnZ2VyPSEx''@;'; put 'put ''LHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuc2VsZWN0ZWRDaGFuZ2VkPW5ldyBmbighMSksdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgZm4oITEpLHRoaXMuX2RldGFpbE9wZW5MYWJlbD0iIix0aGlzLl9kZXRhaWxDbG9zZUxhYmVsPSIiLHRoaXMuX3Jvd0FyaWFMYWJlbD0iIix0aGlzLnN1YnNj''@;'; put 'put ''cmlwdGlvbnM9W10sdGhpcy5kaXNwbGF5Q2VsbHM9ITEsX3ErKyx0aGlzLmlkPSJjbHItZGctcm93IitfcSx0aGlzLnJhZGlvSWQ9ImNsci1kZy1yb3ctcmQiK19xLHRoaXMuY2hlY2tib3hJZD0iY2xyLWRnLXJvdy1jYiIrX3EsdGhpcy5leHBhbmRhYmxlSWQ9Qy5leHBhbmRhYmxlSWQsdGhp''@;'; put 'put ''cy5zdWJzY3JpcHRpb25zLnB1c2goYXkodGhpcy5leHBhbmQucmVwbGFjZSx0aGlzLmV4cGFuZC5leHBhbmRDaGFuZ2UpLnN1YnNjcmliZSgoW0J0LCR0XSk9PntCdCYmJHQ/KHRoaXMucmVwbGFjZWQ9ITAsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRh''@;'; put 'put ''dGFncmlkLXJvdy1yZXBsYWNlZCIpKToodGhpcy5yZXBsYWNlZD0hMSx0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGF0YWdyaWQtcm93LXJlcGxhY2VkIikpfSkpfWNsZWFyUmFuZ2VzKGgpe2guc2hpZnRLZXkmJih0aGlzLmRvY3VtZW50LmdldFNl''@;'; put 'put ''bGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpLC0xIT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZveCIpJiYoaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudG9nZ2xlKCEwKSkpfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25U''@;'; put 'put ''eXBlPT09enMuTm9uZT90aGlzLl9zZWxlY3RlZDp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHRoaXMuaXRlbSl9c2V0IHNlbGVjdGVkKGgpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT16cy5Ob25lP3RoaXMuX3NlbGVjdGVkPWg6KGgmJnRoaXMuc2VsZWN0aW9uLnNlbGVjdGlv''@;'; put 'put ''blR5cGU9PT16cy5NdWx0aT90aGlzLnJhbmdlU2VsZWN0KCk6dGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydD1udWxsLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGVkKHRoaXMuaXRlbSxoKSl9c2V0IGNsckRnU2VsZWN0YWJsZShoKXt0aGlzLnNlbGVjdGlvbi5sb2NrSXRlbSh0aGlzLml0ZW0s''@;'; put 'put ''ITE9PT1oKX1nZXQgY2xyRGdTZWxlY3RhYmxlKCl7cmV0dXJuIXRoaXMuc2VsZWN0aW9uLmlzTG9ja2VkKHRoaXMuaXRlbSl9dG9nZ2xlKGg9IXRoaXMuc2VsZWN0ZWQpe2ghPT10aGlzLnNlbGVjdGVkJiYodGhpcy5zZWxlY3RlZD1oLHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQoaCkpfWdl''@;'; put 'put ''dCBleHBhbmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZC5leHBhbmRlZH1zZXQgZXhwYW5kZWQoaCl7dGhpcy5leHBhbmQuZXhwYW5kZWQ9aH10b2dnbGVFeHBhbmQoKXt0aGlzLmV4cGFuZC5leHBhbmRhYmxlJiYodGhpcy5leHBhbmRBbmltYXRpb24udXBkYXRlU3RhcnRIZWlnaHQoKSx0aGlz''@;'; put 'put ''LmV4cGFuZGVkPSF0aGlzLmV4cGFuZGVkLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKSl9c2V0IGNsckRnRGV0YWlsT3BlbkxhYmVsKGgpe3RoaXMuX2RldGFpbE9wZW5MYWJlbD1ofWdldCBjbHJEZ0RldGFpbE9wZW5MYWJlbCgpe3JldHVybiB0aGlzLl9kZXRhaWxP''@;'; put 'put ''cGVuTGFiZWw/dGhpcy5fZGV0YWlsT3BlbkxhYmVsOnRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm9wZW59c2V0IGNsckRnRGV0YWlsQ2xvc2VMYWJlbChoKXt0aGlzLl9kZXRhaWxDbG9zZUxhYmVsPWh9Z2V0IGNsckRnRGV0YWlsQ2xvc2VMYWJlbCgpe3JldHVybiB0aGlzLl9kZXRhaWxDbG9z''@;'; put 'put ''ZUxhYmVsP3RoaXMuX2RldGFpbENsb3NlTGFiZWw6dGhpcy5jb21tb25TdHJpbmdzLmtleXMuY2xvc2V9c2V0IGNsckRnUm93QXJpYUxhYmVsKGgpe3RoaXMuX3Jvd0FyaWFMYWJlbD1ofWdldCBjbHJEZ1Jvd0FyaWFMYWJlbCgpe3JldHVybiB0aGlzLl9yb3dBcmlhTGFiZWw/dGhpcy5fcm93''@;'; put 'put ''QXJpYUxhYmVsOnRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdH1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLmRnQ2VsbHMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmRnQ2VsbHMuZm9yRWFjaChoPT57aC5fdmlldy5kZXN0cm95ZWR8fHRoaXMuX3Njcm9sbGFibGVDZWxscy5p''@;'; put 'put ''bnNlcnQoaC5fdmlldyl9KX0pfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZGlzcGxheU1vZGUudmlldy5zdWJzY3JpYmUoaD0+e2ZvcihsZXQgdj10aGlzLl9zY3JvbGxhYmxlQ2VsbHMubGVuZ3RoO3Y+MDt2LS0pdGhpcy5fc2Nyb2xsYWJsZUNlbGxz''@;'; put 'put ''LmRldGFjaCgpO2ZvcihsZXQgdj10aGlzLl9jYWxjdWxhdGVkQ2VsbHMubGVuZ3RoO3Y+MDt2LS0pdGhpcy5fY2FsY3VsYXRlZENlbGxzLmRldGFjaCgpO2g9PT1Tdy5DQUxDVUxBVEU/KHRoaXMuZGlzcGxheUNlbGxzPSExLHRoaXMuZGdDZWxscy5mb3JFYWNoKHY9Pnt2Ll92aWV3LmRlc3Ry''@;'; put 'put ''b3llZHx8dGhpcy5fY2FsY3VsYXRlZENlbGxzLmluc2VydCh2Ll92aWV3KX0pKToodGhpcy5kaXNwbGF5Q2VsbHM9ITAsdGhpcy5kZ0NlbGxzLmZvckVhY2godj0+e3YuX3ZpZXcuZGVzdHJveWVkfHx0aGlzLl9zY3JvbGxhYmxlQ2VsbHMuaW5zZXJ0KHYuX3ZpZXcpfSkpfSksdGhpcy5leHBh''@;'; put 'put ''bmQuYW5pbWF0ZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmV4cGFuZEFuaW1hdGlvblRyaWdnZXI9IXRoaXMuZXhwYW5kQW5pbWF0aW9uVHJpZ2dlcn0pKX1yYW5nZVNlbGVjdCgpe2NvbnN0IGg9dGhpcy5pdGVtcy5kaXNwbGF5ZWQ7aWYoIWgpcmV0dXJuO2NvbnN0IHY9aC5pbmRleE9mKHRoaXMu''@;'; put 'put ''c2VsZWN0aW9uLnJhbmdlU3RhcnQpO2lmKHRoaXMuc2VsZWN0aW9uLnJhbmdlU3RhcnQmJnRoaXMuc2VsZWN0aW9uLmN1cnJlbnQuaW5jbHVkZXModGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCkmJnRoaXMuc2VsZWN0aW9uLnNoaWZ0UHJlc3NlZCYmLTEhPT12KXtjb25zdCB5PWguaW5kZXhP''@;'; put 'put ''Zih0aGlzLml0ZW0pLEM9bmV3IFNldCh0aGlzLnNlbGVjdGlvbi5jdXJyZW50LmNvbmNhdChoLnNsaWNlKE1hdGgubWluKHYseSksTWF0aC5tYXgodix5KSsxKSkpO3RoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5zZWxlY3Rpb24uY3VycmVudC5wdXNoKC4uLkMpfWVsc2Ug''@;'; put 'put ''dGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydD10aGlzLml0ZW19bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfW5nT25Jbml0KCl7dGhpcy53cmFwcGVkSW5qZWN0b3I9bmV3IGFxKHJoZSx0aGlzLnZjciksdGhpcy5zZWxlY3Rpb24u''@;'; put 'put ''bG9ja0l0ZW0odGhpcy5pdGVtLCExPT09dGhpcy5jbHJEZ1NlbGVjdGFibGUpfWdldCBfdmlldygpe3JldHVybiB0aGlzLndyYXBwZWRJbmplY3Rvci5nZXQocmhlLHRoaXMudmNyKS5yb3dWaWV3fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChC''@;'; put 'put ''WiksS3Qobk8pLEt0KGlPKSxLdChSWiksS3QoZDgpLEt0KGloZSksS3QoTXIpLEt0KERhKSxLdChfbyksS3QoRmEpLEt0KEN3KSxLdCh1cykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctcm93Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtp''@;'; put 'put ''ZigxJmgmJlMwKHksa3csNCksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5kZ0NlbGxzPUMpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiYoZzAoZHEsNSksZzAodmNlLDUpLGcwKGdTLDUsTXIpLGcwKEFjZSw1LE1yKSxnMCgkYSw1LE1yKSksMiZoKXtsZXQgeTt6aSh5PUFp''@;'; put 'put ''KCkpJiYodi5leHBhbmRBbmltYXRpb249eS5maXJzdCksemkoeT1BaSgpKSYmKHYuZGV0YWlsQnV0dG9uPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2Ll9zdGlja3lDZWxscz15LmZpcnN0KSx6aSh5PUFpKCkpJiYodi5fc2Nyb2xsYWJsZUNlbGxzPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2Ll9j''@;'; put 'put ''YWxjdWxhdGVkQ2VsbHM9eS5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwicm93Z3JvdXAiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJhcmlhLW93bnMiLHYuaWQpLEhpKCJkYXRhZ3JpZC1yb3ciLCEwKSgiZGF0YWdyaWQtc2VsZWN0ZWQiLHYu''@;'; put 'put ''c2VsZWN0ZWQpKX0saW5wdXRzOntpdGVtOlsiY2xyRGdJdGVtIiwiaXRlbSJdLHNlbGVjdGVkOlsiY2xyRGdTZWxlY3RlZCIsInNlbGVjdGVkIl0sY2xyRGdTZWxlY3RhYmxlOiJjbHJEZ1NlbGVjdGFibGUiLGV4cGFuZGVkOlsiY2xyRGdFeHBhbmRlZCIsImV4cGFuZGVkIl0sY2xyRGdEZXRh''@;'; put 'put ''aWxPcGVuTGFiZWw6ImNsckRnRGV0YWlsT3BlbkxhYmVsIixjbHJEZ0RldGFpbENsb3NlTGFiZWw6ImNsckRnRGV0YWlsQ2xvc2VMYWJlbCIsY2xyRGdSb3dBcmlhTGFiZWw6ImNsckRnUm93QXJpYUxhYmVsIn0sb3V0cHV0czp7c2VsZWN0ZWRDaGFuZ2VkOiJjbHJEZ1NlbGVjdGVkQ2hhbmdl''@;'; put 'put ''IixleHBhbmRlZENoYW5nZToiY2xyRGdFeHBhbmRlZENoYW5nZSJ9LGZlYXR1cmVzOltnbyhbUlose3Byb3ZpZGU6ZWYsdXNlRXhpc3Rpbmc6Ulp9LHtwcm92aWRlOnlnLHVzZUV4aXN0aW5nOlJafV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ViQsZGVjbHM6OSx2YXJzOjMsY29uc3RzOltbImNs''@;'; put 'put ''YXNzIiwiZGF0YWdyaWQtcm93LWNsaWNrYWJsZSIsMywibW91c2Vkb3duIiw0LCJuZ0lmIl0sWzMsImNsckV4cGFuZFRyaWdnZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsiZGV0YWlsIiwiIl0sWyJyb3dDb250ZW50IiwiIl0sWyJjYWxjdWxhdGVkQ2VsbHMiLCIiXSxbMSwiZGF0YWdyaWQt''@;'; put 'put ''cm93LWNsaWNrYWJsZSIsMywibW91c2Vkb3duIl0sWzMsImNsckV4cGFuZFRyaWdnZXIiXSxbMywibmdUZW1wbGF0ZU91dGxldCJdLFsicm9sZSIsInJvdyIsMSwiZGF0YWdyaWQtcm93LW1hc3RlciIsImRhdGFncmlkLXJvdy1mbGV4IiwzLCJpZCJdLFsxLCJkYXRhZ3JpZC1yb3ctc3RpY2t5''@;'; put 'put ''Il0sWyJzdGlja3lDZWxscyIsIiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDMsIm5nQ2xhc3MiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtcm93LWFjdGlvbnMgZGF0YWdyaWQt''@;'; put 'put ''Zml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4gZGF0YWdyaWQtY2VsbCIsInJvbGUiLCJncmlkY2VsbCIsNCwibmdJZiJdLFsiY2xhc3Mi''@;'; put 'put ''LCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LXNjcm9sbGFibGUiLDMsIm5nQ2xhc3MiXSxbMSwiZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxzIl0sWyJzY3JvbGxhYmxlQ2VsbHMiLCIi''@;'; put 'put ''XSxbInJvbGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtc2VsZWN0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCIsMywibmdDbGFzcyJdLFsxLCJjbHItY2hlY2tib3gtd3JhcHBlciJdLFsidHlwZSIsImNoZWNrYm94IiwzLCJuZ01vZGVsIiwiaWQiLCJuZ01vZGVs''@;'; put 'put ''Q2hhbmdlIl0sWzEsImNsci1jb250cm9sLWxhYmVsIiwiY2xyLWNvbC1udWxsIiwzLCJmb3IiLCJjbGljayJdLFsxLCJjbHItc3Itb25seSJdLFsidHlwZSIsInJhZGlvIiwiY2xyUmFkaW8iLCIiLDMsImlkIiwibmFtZSIsInZhbHVlIiwibmdNb2RlbCIsImNoZWNrZWQiLCJuZ01vZGVsQ2hh''@;'; put 'put ''bmdlIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsicm9sZSIsImdyaWRjZWxsIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwi''@;'; put 'put ''ZGF0YWdyaWQtY2VsbCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b24iLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbHJTbWFsbCIsIiIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJl''@;'; put 'put ''dC1idXR0b24iLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb24iXSxbImNsclNtYWxsIiwiIl0sWzEsImRhdGFncmlkLWRldGFpbC1jYXJldCIsImRhdGFncmlkLWZpeGVkLWNvbHVtbiIsImRhdGFncmlkLWNlbGwiXSxbInR5cGUi''@;'; put 'put ''LCJidXR0b24iLCJhcmlhLWhhc3BvcHVwIiwiZGlhbG9nIiwxLCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uIiwzLCJjbGljayJdLFsiZGV0YWlsQnV0dG9uIiwiIl0sWyJzaGFwZSIsImFuZ2xlLWRvdWJsZSIsMSwiZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24iXV0sdGVtcGxhdGU6''@;'; put 'put ''ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgkYyksbm4oMCxCJCwzLDIsImxhYmVsIiwwKSxubigxLFAkLDIsMiwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiwxKSxubigyLFNjZSwxLDEsbnVsbCwyKSxubigzLEYkLDEsMCwibmctdGVtcGxhdGUiLG51bGwsMyxfbCksbm4oNSxJY2UsMTYsMTMs''@;'; put 'put ''Im5nLXRlbXBsYXRlIixudWxsLDQsX2wpLGgxKDcsbnVsbCw1KSksMiZoJiYoeHQoIm5nSWYiLHYuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGUpLHN0KDEpLHh0KCJuZ0lmIiwhdi5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZSYmdi5leHBhbmQuZXhwYW5kYWJsZSksc3QoMSkseHQoIm5n''@;'; put 'put ''SWYiLCF2LnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25Nb2RlJiYhdi5leHBhbmQuZXhwYW5kYWJsZSkpfSxkZXBlbmRlbmNpZXM6W2RxLEpMLEJvLGFzLHpkLEUxLHVoLGpzLF9zLEprLHAxLFpmZSxrc10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCk7dmFyIHZoPSgoKT0+KGZ1bmN0aW9uKGQpe2Rb''@;'; put 'put ''ZC5XSURUSD0wXT0iV0lEVEgiLGRbZC5ISURERU49MV09IkhJRERFTiJ9KHZofHwodmg9e30pKSx2aCkpKCk7Y29uc3QgQnllPU9iamVjdC5rZXlzKHZoKS5tYXAoZD0+dmhbZF0pLmZpbHRlcihkPT5kPT09cGFyc2VJbnQoZCwxMCkpO2xldCBrdj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9y''@;'; put 'put ''KCl7dGhpcy5jb2x1bW5zPVtdLHRoaXMuX2NhY2hlPVtdfWNhY2hlKCl7dGhpcy5fY2FjaGU9dGhpcy5jb2x1bW5zLm1hcChoPT57Y29uc3Qgdj1PYmplY3QuYXNzaWduKHt9LGgudmFsdWUpO3JldHVybiBkZWxldGUgdi5jaGFuZ2VzLHZ9KX1oYXNDYWNoZSgpe3JldHVybiEhdGhpcy5fY2Fj''@;'; put 'put ''aGUubGVuZ3RofXJlc2V0VG9MYXN0Q2FjaGUoKXt0aGlzLl9jYWNoZS5mb3JFYWNoKChoLHYpPT57dGhpcy5jb2x1bW5zW3ZdLm5leHQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGgpLHtjaGFuZ2VzOkJ5ZX0pKX0pLHRoaXMuX2NhY2hlPVtdfWdldCBjb2x1bW5TdGF0ZXMoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jb2x1bW5zLm1hcChoPT5oLnZhbHVlKX1nZXQgaGFzSGlkZWFibGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uU3RhdGVzLmZpbHRlcihoPT5oLmhpZGVhYmxlKS5sZW5ndGg+MH1lbWl0U3RhdGVDaGFuZ2VBdChoLHYpeyF0aGlzLmNvbHVtbnNbaF18fHRoaXMuZW1p''@;'; put 'put ''dFN0YXRlQ2hhbmdlKHRoaXMuY29sdW1uc1toXSx2KX1lbWl0U3RhdGVDaGFuZ2UoaCx2KXtoLm5leHQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGgudmFsdWUpLHYpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJv''@;'; put 'put ''dj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksUHllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5maWx0ZXJzPWgsdGhpcy5zb3J0PXYsdGhpcy5wYWdlPXksdGhpcy5kZWJvdW5jZXI9Qyx0aGlzLmNoYW5nZT10aGlzLmRlYm91bmNlci5j''@;'; put 'put ''aGFuZ2UucGlwZShwdCgoKT0+dGhpcy5zdGF0ZSkpfWdldCBzdGF0ZSgpe2NvbnN0IGg9e307dGhpcy5wYWdlLnNpemU+MCYmKGgucGFnZT17ZnJvbTp0aGlzLnBhZ2UuZmlyc3RJdGVtLHRvOnRoaXMucGFnZS5sYXN0SXRlbSxzaXplOnRoaXMucGFnZS5zaXplLGN1cnJlbnQ6dGhpcy5wYWdl''@;'; put 'put ''LmN1cnJlbnR9KSx0aGlzLnNvcnQuY29tcGFyYXRvciYmKGguc29ydD10aGlzLnNvcnQuY29tcGFyYXRvciBpbnN0YW5jZW9mIHlxP3tieTp0aGlzLnNvcnQuY29tcGFyYXRvci5wcm9wLHJldmVyc2U6dGhpcy5zb3J0LnJldmVyc2V9OntieTp0aGlzLnNvcnQuY29tcGFyYXRvcixyZXZlcnNl''@;'; put 'put ''OnRoaXMuc29ydC5yZXZlcnNlfSk7Y29uc3Qgdj10aGlzLmZpbHRlcnMuZ2V0QWN0aXZlRmlsdGVycygpO2lmKHYubGVuZ3RoPjApe2guZmlsdGVycz1bXTtmb3IoY29uc3QgeSBvZiB2KWguZmlsdGVycy5wdXNoKHkuc3RhdGU/eS5zdGF0ZTp5KX1yZXR1cm4gaH19cmV0dXJuIGQuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoQ3YpLEVpKHdxKSxFaShidyksRWkoTFopKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxGeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnpvbmU9aCx0aGlz''@;'; put 'put ''Lmxpc3RlbmVyc0FkZGVkPSExLHRoaXMuZGVzdHJveSQ9bmV3ICRlLHRoaXMuY29uZmlnPXtrZXlHcmlkUm93czoiW3JvbGU9cm93XTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyKSIsa2V5R3JpZENlbGxzOiJbcm9sZT1ncmlkY2VsbF06bm90KC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uKTpu''@;'; put 'put ''b3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRlbnQpLCBbcm9sZT1jb2x1bW5oZWFkZXJdOm5vdCguZGF0YWdyaWQtaGlkZGVuLWNvbHVtbik6bm90KC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250ZW50KSwgLmRhdGFncmlkLWRldGFpbC1jYXJldCIsa2V5R3JpZDoiW3JvbGU9Z3JpZF0i''@;'; put 'put ''fX1nZXQgZ3JpZCgpe3ZhciBoO3JldHVybiBudWxsPT09KGg9dGhpcy5ob3N0KXx8dm9pZCAwPT09aD92b2lkIDA6aC5xdWVyeVNlbGVjdG9yKHRoaXMuY29uZmlnLmtleUdyaWQpfWdldCByb3dzKCl7dmFyIGg7cmV0dXJuIG51bGw9PT0oaD10aGlzLmhvc3QpfHx2b2lkIDA9PT1oP3ZvaWQg''@;'; put 'put ''MDpoLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb25maWcua2V5R3JpZFJvd3MpfWdldCBjZWxscygpe3ZhciBoO3JldHVybiBudWxsPT09KGg9dGhpcy5ob3N0KXx8dm9pZCAwPT09aD92b2lkIDA6aC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscyl9bmdPbkRlc3Ry''@;'; put 'put ''b3koKXt0aGlzLmRlc3Ryb3kkLm5leHQoKSx0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCl9YWRkTGlzdGVuZXJzKCl7dGhpcy5saXN0ZW5lcnNBZGRlZHx8KHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3I4KHRoaXMuZ3JpZCwibW91c2Vkb3duIikucGlwZShuOCh0aGlzLmRlc3Ry''@;'; put 'put ''b3kkKSkuc3Vic2NyaWJlKGg9PntpZigxPT09aC5idXR0b25zJiYhaC5jdHJsS2V5KXtjb25zdCB2PXRoaXMuY2VsbHM/QXJyYXkuZnJvbSh0aGlzLmNlbGxzKS5maW5kKHk9Pnk9PT1oLnRhcmdldHx8eT09PWgudGFyZ2V0LmNsb3Nlc3QodGhpcy5jb25maWcua2V5R3JpZENlbGxzKSk6bnVs''@;'; put 'put ''bDt2JiZ0aGlzLnNldEFjdGl2ZUNlbGwodil9fSkscjgodGhpcy5ncmlkLCJrZXlkb3duIikucGlwZShuOCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGg9PntpZigoIWgudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZHJhZy1oYW5kbGUiKXx8IkFycm93TGVmdCIhPT1oLmNvZGUmJiJB''@;'; put 'put ''cnJvd1JpZ2h0IiE9PWguY29kZSkmJigiQXJyb3dVcCI9PT1oLmNvZGV8fCJBcnJvd0Rvd24iPT09aC5jb2RlfHwiQXJyb3dMZWZ0Ij09PWguY29kZXx8IkFycm93UmlnaHQiPT09aC5jb2RlfHwiRW5kIj09PWguY29kZXx8IkhvbWUiPT09aC5jb2RlfHwiUGFnZVVwIj09PWguY29kZXx8IlBh''@;'; put 'put ''Z2VEb3duIj09PWguY29kZSkpe2NvbnN0e3g6dix5fT10aGlzLmdldE5leHRJdGVtQ29vcmRpbmF0ZShoKSxDPXRoaXMucm93cz9BcnJheS5mcm9tKHRoaXMucm93c1t5XS5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscykpW3ZdOm51bGw7QyYmdGhpcy5zZXRBY3Rp''@;'; put 'put ''dmVDZWxsKEMpLGgucHJldmVudERlZmF1bHQoKX19KX0pLHRoaXMubGlzdGVuZXJzQWRkZWQ9ITApfWluaXRpYWxpemVLZXlHcmlkKGgpe3RoaXMuaG9zdD1oLHRoaXMuYWRkTGlzdGVuZXJzKCksdGhpcy5yZXNldEtleUdyaWQoKX1yZXNldEtleUdyaWQoKXt2YXIgaDtudWxsPT09KGg9dGhp''@;'; put 'put ''cy5jZWxscyl8fHZvaWQgMD09PWh8fGguZm9yRWFjaCh5PT55LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpKTtjb25zdCB2PXRoaXMuY2VsbHM/dGhpcy5jZWxsc1swXTpudWxsO251bGw9PXZ8fHYuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKX1zZXRBY3RpdmVDZWxsKGgpe2Nv''@;'; put 'put ''bnN0IHY9dGhpcy5jZWxscz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoST0+IjAiPT09SS5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikpOm51bGw7diYmdi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSxoLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIik7Y29uc3QgeT1mdW5j''@;'; put 'put ''dGlvbiBkUmUoZCl7Y29uc3QgZz1bImFbaHJlZl0iLCJhcmVhW2hyZWZdIiwiaW5wdXQ6bm90KFtkaXNhYmxlZF0pIiwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKSIsInNlbGVjdDpub3QoW2Rpc2FibGVkXSkiLCJ0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSkiLCJpZnJhbWUiLCJvYmplY3QiLCJl''@;'; put 'put ''bWJlZCIsIipbdGFiaW5kZXhdIiwiKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0iLCJbcm9sZT1idXR0b25dOm5vdChbZGlzYWJsZWRdKSJdLmpvaW4oIiwiKTtyZXR1cm4gQXJyYXkuZnJvbShkLnF1ZXJ5U2VsZWN0b3JBbGwoZykpfShoKTsoImNvbHVtbmhlYWRlciIhPT1oLmdldEF0dHJpYnV0''@;'; put 'put ''ZSgicm9sZSIpJiZ5WzBdP3lbMF06aCkuZm9jdXMoKX1nZXROZXh0SXRlbUNvb3JkaW5hdGUoaCl7dmFyIHY7bGV0IHk9dGhpcy5jZWxscz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoQnQ9PiIwIj09PUJ0LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSk6bnVsbDsiVGFiIj09PWguY29k''@;'; put 'put ''ZSYmKHk9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7Y29uc3QgQz10aGlzLnJvd3MmJnk/QXJyYXkuZnJvbSh0aGlzLnJvd3MpLmZpbmQoQnQ9PkJ0LmNvbnRhaW5zKHkpKTpudWxsLEk9dGhpcy5yb3dzP3RoaXMucm93cy5sZW5ndGgtMTowLGo9dGhpcy5jZWxscz90aGlzLmNlbGxzLmxlbmd0''@;'; put 'put ''aC90aGlzLnJvd3MubGVuZ3RoLTE6MDtsZXQgY2U9QyYmeT9BcnJheS5mcm9tKEMucXVlcnlTZWxlY3RvckFsbCh0aGlzLmNvbmZpZy5rZXlHcmlkQ2VsbHMpKS5pbmRleE9mKHkpOjAsX2U9QyYmeSYmdGhpcy5yb3dzP0FycmF5LmZyb20odGhpcy5yb3dzKS5pbmRleE9mKEMpOjA7Y29uc3Qg''@;'; put 'put ''UmU9dGhpcy5ob3N0LmRpcixOZT0icnRsIj09PVJlPyJBcnJvd1JpZ2h0IjoiQXJyb3dMZWZ0IixLZT0icnRsIj09PVJlPyJBcnJvd0xlZnQiOiJBcnJvd1JpZ2h0IixodD1NYXRoLmZsb29yKChudWxsPT09KHY9dGhpcy5ob3N0KXx8dm9pZCAwPT09dj92b2lkIDA6di5xdWVyeVNlbGVjdG9y''@;'; put 'put ''KCIuZGF0YWdyaWQiKS5jbGllbnRIZWlnaHQpL3RoaXMucm93c1swXS5jbGllbnRIZWlnaHQpLTF8fDA7cmV0dXJuIkFycm93VXAiPT09aC5jb2RlJiYwIT09X2U/X2UtPTE6IkFycm93RG93biI9PT1oLmNvZGUmJl9lPEk/X2UrPTE6aC5jb2RlPT09TmUmJjAhPT1jZT9jZS09MTpoLmNvZGU9''@;'; put 'put ''PT1LZSYmY2U8aj9jZSs9MToiRW5kIj09PWguY29kZT8oY2U9aixoLmN0cmxLZXkmJihfZT1JKSk6IkhvbWUiPT09aC5jb2RlPyhjZT0wLGguY3RybEtleSYmKF9lPTApKToiUGFnZVVwIj09PWguY29kZT9fZT1fZS1odD4wP19lLWh0OjA6IlBhZ2VEb3duIj09PWguY29kZSYmKF9lPV9lK2h0''@;'; put 'put ''PEk/X2UraHQ6SSkse3g6Y2UseTpfZX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGRsKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksbE89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvciho''@;'; put 'put ''LHYseSxDLEksaixjZSxfZSxSZSxOZSxLZSxodCxCdCwkdCxobixEbixpcil7dGhpcy5vcmdhbml6ZXI9aCx0aGlzLml0ZW1zPXYsdGhpcy5leHBhbmRhYmxlUm93cz15LHRoaXMuc2VsZWN0aW9uPUMsdGhpcy5yb3dBY3Rpb25TZXJ2aWNlPUksdGhpcy5zdGF0ZVByb3ZpZGVyPWosdGhpcy5k''@;'; put 'put ''aXNwbGF5TW9kZT1jZSx0aGlzLnJlbmRlcmVyPV9lLHRoaXMuZGV0YWlsU2VydmljZT1SZSx0aGlzLmRvY3VtZW50PUtlLHRoaXMuZWw9aHQsdGhpcy5wYWdlPUJ0LHRoaXMuY29tbW9uU3RyaW5ncz0kdCx0aGlzLmNvbHVtbnNTZXJ2aWNlPWhuLHRoaXMua2V5TmF2aWdhdGlvbj1Ebix0aGlz''@;'; put 'put ''LnpvbmU9aXIsdGhpcy5TRUxFQ1RJT05fVFlQRT16cyx0aGlzLnJlZnJlc2g9bmV3IGZuKCExKSx0aGlzLnNlbGVjdGVkQ2hhbmdlZD1uZXcgZm4oITEpLHRoaXMuc2luZ2xlU2VsZWN0ZWRDaGFuZ2VkPW5ldyBmbighMSksdGhpcy5jbHJEZ1NpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbD10aGlz''@;'; put 'put ''LmNvbW1vblN0cmluZ3Mua2V5cy5zaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWwsdGhpcy5jbHJEZ1NpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWw9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuc2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbCx0aGlzLmNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWw9''@;'; put 'put ''dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbCx0aGlzLmNsckRnRGlzYWJsZVBhZ2VGb2N1cz0hMSx0aGlzLl9zdWJzY3JpcHRpb25zPVtdLHRoaXMuc2VsZWN0QWxsSWQ9ImNsci1kZy1zZWxlY3QtYWxsLSIrTmUsdGhpcy5kZXRhaWxTZXJ2aWNlLmlk''@;'; put 'put ''PU5lfWdldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuaXRlbXMubG9hZGluZ31zZXQgbG9hZGluZyhoKXt0aGlzLml0ZW1zLmxvYWRpbmc9aH1kYXRhQ2hhbmdlZCgpe3RoaXMuaXRlbXMucmVmcmVzaCgpfXNldCBzZWxlY3RlZChoKXt0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPWg/enMu''@;'; put 'put ''TXVsdGk6enMuTm9uZSx0aGlzLnNlbGVjdGlvbi51cGRhdGVDdXJyZW50KGgsITEpfXNldCBzaW5nbGVTZWxlY3RlZChoKXt0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPXpzLlNpbmdsZSxoP3RoaXMuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGU9aDp0aGlzLnNlbGVjdGlvbi5jdXJyZW50''@;'; put 'put ''U2luZ2xlJiYodGhpcy5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT1udWxsKX1zZXQgY2xyRGdQcmVzZXJ2ZVNlbGVjdGlvbihoKXt0aGlzLnNlbGVjdGlvbi5wcmVzZXJ2ZVNlbGVjdGlvbj1ofXNldCByb3dTZWxlY3Rpb25Nb2RlKGgpe3RoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGU9''@;'; put 'put ''aH1nZXQgYWxsU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNBbGxTZWxlY3RlZCgpfXNldCBhbGxTZWxlY3RlZChoKXt0aGlzLnNlbGVjdGlvbi50b2dnbGVBbGwoKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLml0ZW1zLnNtYXJ0fHwodGhpcy5pdGVtcy5hbGw9dGhpcy5y''@;'; put 'put ''b3dzLm1hcChoPT5oLml0ZW0pKSx0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yb3dzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5pdGVtcy5zbWFydHx8KHRoaXMuaXRlbXMuYWxsPXRoaXMucm93cy5tYXAoaD0+aC5pdGVtKSk7Zm9yKGxldCBoPXRoaXMuX2Rpc3BsYXllZFJv''@;'; put 'put ''d3MubGVuZ3RoLTE7aD49MDtoLS0pdGhpcy5fZGlzcGxheWVkUm93cy5nZXQoaCkuZGVzdHJveWVkJiZ0aGlzLl9kaXNwbGF5ZWRSb3dzLnJlbW92ZShoKTtpZih0aGlzLnJvd3MuZm9yRWFjaChoPT57dGhpcy5fZGlzcGxheWVkUm93cy5pbnNlcnQoaC5fdmlldyl9KSx0aGlzLmRldGFpbFNl''@;'; put 'put ''cnZpY2Uuc3RhdGUmJnRoaXMuZGV0YWlsU2VydmljZS5pc09wZW4pe2NvbnN0IGg9dGhpcy5yb3dzLmZpbmQoKHYseSk9PnRoaXMuaXRlbXMudHJhY2tCeSh5LHYuaXRlbSk9PT10aGlzLml0ZW1zLnRyYWNrQnkoeSx0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGUpKTtoP3RoaXMuZGV0YWlsU2Vy''@;'; put 'put ''dmljZS5vcGVuKGguaXRlbSxoLmRldGFpbEJ1dHRvbi5uYXRpdmVFbGVtZW50KTp0aGlzLmRldGFpbFNlcnZpY2UuY2xvc2UoKX19KSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5rZXlOYXZpZ2F0aW9uLmluaXRpYWxpemVLZXlHcmlkKHRoaXMuZWwubmF0aXZlRWxlbWVudCksdGhpcy5yZWZy''@;'; put 'put ''ZXNoLmVtaXQodGhpcy5zdGF0ZVByb3ZpZGVyLnN0YXRlKSx0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdGF0ZVByb3ZpZGVyLmNoYW5nZS5zdWJzY3JpYmUoaD0+dGhpcy5yZWZyZXNoLmVtaXQoaCkpLHRoaXMuc2VsZWN0aW9uLmNoYW5nZS5zdWJzY3JpYmUoaD0+e3RoaXMuc2Vs''@;'; put 'put ''ZWN0aW9uLnNlbGVjdGlvblR5cGU9PT16cy5TaW5nbGU/dGhpcy5zaW5nbGVTZWxlY3RlZENoYW5nZWQuZW1pdChoKTp0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09enMuTXVsdGkmJnRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQoaCl9KSx0aGlzLnBhZ2UuY2hhbmdlLnN1YnNjcmli''@;'; put 'put ''ZSgoKT0+e3RoaXMua2V5TmF2aWdhdGlvbi5yZXNldEtleUdyaWQoKSx0aGlzLmNsckRnRGlzYWJsZVBhZ2VGb2N1c3x8dGhpcy5kYXRhZ3JpZFRhYmxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX0pLGF5KHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucykuc3Vic2NyaWJlKCgpPT57dmFyIGg7''@;'; put 'put ''cmV0dXJuIG51bGw9PT0oaD10aGlzLmtleU5hdmlnYXRpb24pfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnJlc2V0S2V5R3JpZCgpfSksdGhpcy5kaXNwbGF5TW9kZS52aWV3LnN1YnNjcmliZShoPT57Zm9yKGxldCB2PXRoaXMuX3Byb2plY3RlZERpc3BsYXlDb2x1bW5zLmxlbmd0aDt2PjA7di0t''@;'; put 'put ''KXRoaXMuX3Byb2plY3RlZERpc3BsYXlDb2x1bW5zLmRldGFjaCgpO2ZvcihsZXQgdj10aGlzLl9wcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMubGVuZ3RoO3Y+MDt2LS0pdGhpcy5fcHJvamVjdGVkQ2FsY3VsYXRpb25Db2x1bW5zLmRldGFjaCgpO2ZvcihsZXQgdj10aGlzLl9jYWxjdWxh''@;'; put 'put ''dGlvblJvd3MubGVuZ3RoO3Y+MDt2LS0pdGhpcy5fY2FsY3VsYXRpb25Sb3dzLmRldGFjaCgpO2ZvcihsZXQgdj10aGlzLl9kaXNwbGF5ZWRSb3dzLmxlbmd0aDt2PjA7di0tKXRoaXMuX2Rpc3BsYXllZFJvd3MuZGV0YWNoKCk7aD09PVN3LkRJU1BMQVk/KHRoaXMucmVuZGVyZXIucmVtb3Zl''@;'; put 'put ''Q2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSIpLHRoaXMuY29sdW1ucy5mb3JFYWNoKHY9Pnt0aGlzLl9wcm9qZWN0ZWREaXNwbGF5Q29sdW1ucy5pbnNlcnQodi5fdmlldyl9KSx0aGlzLnJvd3MuZm9yRWFjaCh2PT57dGhpcy5fZGlzcGxheWVk''@;'; put 'put ''Um93cy5pbnNlcnQodi5fdmlldyl9KSk6KHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSIpLHRoaXMuY29sdW1ucy5mb3JFYWNoKHY9Pnt0aGlzLl9wcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMuaW5zZXJ0KHYu''@;'; put 'put ''X3ZpZXcpfSksdGhpcy5yb3dzLmZvckVhY2godj0+e3RoaXMuX2NhbGN1bGF0aW9uUm93cy5pbnNlcnQodi5fdmlldyl9KSl9KSksdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHI4KHRoaXMuZG9jdW1lbnQuYm9keSwia2V5ZG93biIp''@;'; put 'put ''LnN1YnNjcmliZShoPT57IlNoaWZ0Ij09PWgua2V5JiYodGhpcy5zZWxlY3Rpb24uc2hpZnRQcmVzc2VkPSEwKX0pLHI4KHRoaXMuZG9jdW1lbnQuYm9keSwia2V5dXAiKS5zdWJzY3JpYmUoaD0+eyJTaGlmdCI9PT1oLmtleSYmKHRoaXMuc2VsZWN0aW9uLnNoaWZ0UHJlc3NlZD0hMSl9KSl9''@;'; put 'put ''KX1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfXJlc2l6ZSgpe3RoaXMub3JnYW5pemVyLnJlc2l6ZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChrUyksS3QoQ3cpLEt0KGlP''@;'; put 'put ''KSxLdChCWiksS3Qobk8pLEt0KFB5ZSksS3QoaWhlKSxLdChEYSksS3QoZDgpLEt0KEQwKSxLdCh1cyksS3QoX28pLEt0KGJ3KSxLdChGYSksS3Qoa3YpLEt0KEZ5ZSksS3QoZGwpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlkIl1dLGNvbnRlbnRR''@;'; put 'put ''dWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJihTMCh5LGFPLDUpLFMwKHksJGZlLDUpLFMwKHksU1MsNCksUzAoeSxNUyw0KSksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5pdGVyYXRvcj1DLmZpcnN0KSx6aShDPUFpKCkpJiYodi5wbGFjZWhvbGRlcj1DLmZpcnN0KSx6aShDPUFp''@;'; put 'put ''KCkpJiYodi5jb2x1bW5zPUMpLHppKEM9QWkoKSkmJih2LnJvd3M9Qyl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJihnMChkZyw1LE1yKSxnMCgkMSw1LF9vKSxnMChEY2UsNSxNciksZzAoTGNlLDUsTXIpLGcwKGhaLDUsTXIpLGcwKE9jZSw1LE1yKSksMiZoKXtsZXQgeTt6''@;'; put 'put ''aSh5PUFpKCkpJiYodi5zY3JvbGxhYmxlQ29sdW1ucz15LmZpcnN0KSx6aSh5PUFpKCkpJiYodi5kYXRhZ3JpZFRhYmxlPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2Ll9wcm9qZWN0ZWREaXNwbGF5Q29sdW1ucz15LmZpcnN0KSx6aSh5PUFpKCkpJiYodi5fcHJvamVjdGVkQ2FsY3VsYXRpb25D''@;'; put 'put ''b2x1bW5zPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2Ll9kaXNwbGF5ZWRSb3dzPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2Ll9jYWxjdWxhdGlvblJvd3M9eS5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImRhdGFncmlkLWhvc3QiLCEwKSgi''@;'; put 'put ''ZGF0YWdyaWQtZGV0YWlsLW9wZW4iLHYuZGV0YWlsU2VydmljZS5pc09wZW4pfSxpbnB1dHM6e2xvYWRpbmc6WyJjbHJEZ0xvYWRpbmciLCJsb2FkaW5nIl0sc2VsZWN0ZWQ6WyJjbHJEZ1NlbGVjdGVkIiwic2VsZWN0ZWQiXSxzaW5nbGVTZWxlY3RlZDpbImNsckRnU2luZ2xlU2VsZWN0ZWQi''@;'; put 'put ''LCJzaW5nbGVTZWxlY3RlZCJdLGNsckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsOiJjbHJEZ1NpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCIsY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsOiJjbHJEZ1NpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWwiLGNsckRldGFpbEV4cGFuZGFibGVB''@;'; put 'put ''cmlhTGFiZWw6ImNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWwiLGNsckRnRGlzYWJsZVBhZ2VGb2N1czoiY2xyRGdEaXNhYmxlUGFnZUZvY3VzIixjbHJEZ1ByZXNlcnZlU2VsZWN0aW9uOiJjbHJEZ1ByZXNlcnZlU2VsZWN0aW9uIixyb3dTZWxlY3Rpb25Nb2RlOlsiY2xyRGdSb3dTZWxl''@;'; put 'put ''Y3Rpb24iLCJyb3dTZWxlY3Rpb25Nb2RlIl19LG91dHB1dHM6e3JlZnJlc2g6ImNsckRnUmVmcmVzaCIsc2VsZWN0ZWRDaGFuZ2VkOiJjbHJEZ1NlbGVjdGVkQ2hhbmdlIixzaW5nbGVTZWxlY3RlZENoYW5nZWQ6ImNsckRnU2luZ2xlU2VsZWN0ZWRDaGFuZ2UifSxmZWF0dXJlczpbZ28oW0Ja''@;'; put 'put ''LHdxLEN2LGJ3LEN3LGtTLG5PLGlPLExaLGQ4LFJjLFB5ZSxLZmUsa3YsaWhlLEZ5ZV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WiQsZGVjbHM6MzIsdmFyczo3LGNvbnN0czpbWzEsImRhdGFncmlkLW91dGVyLXdyYXBwZXIiXSxbMSwiZGF0YWdyaWQtaW5uZXItd3JhcHBlciJdLFsxLCJkYXRh''@;'; put 'put ''Z3JpZCJdLFsiZGF0YWdyaWQiLCIiXSxbMSwiZGF0YWdyaWQtdGFibGUtd3JhcHBlciJdLFsicm9sZSIsImdyaWQiLCJ0YWJpbmRleCIsIi0xIiwxLCJkYXRhZ3JpZC10YWJsZSJdLFsiZGF0YWdyaWRUYWJsZSIsIiJdLFsicm9sZSIsInJvd2dyb3VwIiwxLCJkYXRhZ3JpZC1oZWFkZXIiXSxb''@;'; put 'put ''InJvbGUiLCJyb3ciLDEsImRhdGFncmlkLXJvdyJdLFsxLCJkYXRhZ3JpZC1yb3ctbWFzdGVyIiwiZGF0YWdyaWQtcm93LWZsZXgiXSxbMSwiZGF0YWdyaWQtcm93LXN0aWNreSJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsImNsYXNzIiwiZGF0YWdyaWQtY29sdW1uIGRhdGFncmlkLXNlbGVj''@;'; put 'put ''dCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiLDQsIm5nSWYiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImRhdGFncmlkLWNvbHVtbiBkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQtZml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1u''@;'; put 'put ''aGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4gZGF0YWdyaWQtcm93LWFjdGlvbnMgZGF0YWdyaWQtZml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4gZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCBkYXRh''@;'; put 'put ''Z3JpZC1maXhlZC1jb2x1bW4iLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LXNjcm9sbGFibGUiXSxbInByb2plY3RlZERpc3BsYXlDb2x1bW5zIiwiIl0sWyJkaXNwbGF5ZWRSb3dzIiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtc3Bpbm5lciIsNCwibmdJZiJdLFsxLCJk''@;'; put 'put ''YXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSJdLFsxLCJkYXRhZ3JpZC1jYWxjdWxhdGlvbi1oZWFkZXIiXSxbInByb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucyIsIiJdLFsiY2FsY3VsYXRpb25Sb3dzIiwiIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJk''@;'; put 'put ''YXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbInR5cGUiLCJjaGVja2JveCIsInRhYmluZGV4IiwiLTEiLDMsImlkIiwibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwiY2xyLWNv''@;'; put 'put ''bnRyb2wtbGFiZWwiLCJjbHItY29sLW51bGwiLDMsImZvciJdLFsxLCJjbHItc3Itb25seSJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1j''@;'; put 'put ''b2x1bW4iXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImRhdGFncmlkLWNvbHVtbiIsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNh''@;'; put 'put ''cmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWzEsImRhdGFncmlkLXNwaW5uZXIiXSxbImNsck1lZGl1bSIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKFBjZSksVmkoMCksdHQoMSwiZGl2IiwwKSgyLCJkaXYiLDEpKDMsImRpdiIsMiwzKSg1LCJkaXYiLDQpKDYs''@;'; put 'put ''ImRpdiIsNSw2KSg4LCJkaXYiLDcpKDksImRpdiIsOCkoMTAsImRpdiIsOSkoMTEsImRpdiIsMTApLG5uKDEyLGokLDcsNSwiZGl2IiwxMSksbm4oMTMsUmNlLDIsMSwiZGl2IiwxMiksbm4oMTQsYTEsMiwxLCJkaXYiLDEzKSxubigxNSx5diwyLDEsImRpdiIsMTQpLGl0KCksdHQoMTYsImRp''@;'; put 'put ''diIsMTUpLGgxKDE3LG51bGwsMTYpLGl0KCkoKSgpKCksaDEoMTksbnVsbCwxNyksVmkoMjEsMSksbm4oMjIsQmNlLDEsMCwiY2xyLWRnLXBsYWNlaG9sZGVyIiwxOCksaXQoKSgpKCksVmkoMjMsMiksbm4oMjQsSEwsMywwLCJkaXYiLDE5KSxpdCgpLFZpKDI1LDMpLGl0KCksdHQoMjYsImRp''@;'; put 'put ''diIsMjApKDI3LCJkaXYiLDIxKSxoMSgyOCxudWxsLDIyKSxpdCgpLGgxKDMwLG51bGwsMjMpLGl0KCkpLDImaCYmKHN0KDMpLEdpKCJhcmlhLWhpZGRlbiIsISF2LmRldGFpbFNlcnZpY2UuaXNPcGVufHxudWxsKSxzdCg5KSx4dCgibmdJZiIsdi5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09''@;'; put 'put ''PXYuU0VMRUNUSU9OX1RZUEUuTXVsdGkpLHN0KDEpLHh0KCJuZ0lmIix2LnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09di5TRUxFQ1RJT05fVFlQRS5TaW5nbGUpLHN0KDEpLHh0KCJuZ0lmIix2LnJvd0FjdGlvblNlcnZpY2UuaGFzQWN0aW9uYWJsZVJvdyksc3QoMSkseHQoIm5nSWYiLHYu''@;'; put 'put ''ZXhwYW5kYWJsZVJvd3MuaGFzRXhwYW5kYWJsZVJvd3x8di5kZXRhaWxTZXJ2aWNlLmVuYWJsZWQpLHN0KDcpLHh0KCJuZ0lmIiwhdi5wbGFjZWhvbGRlciksc3QoMikseHQoIm5nSWYiLHYubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6WyRmZSxKTCxCbyx1aCxqcyxfcyxhc10sZW5jYXBzdWxh''@;'; put 'put ''dGlvbjoyfSksZH0pKCksb2hlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5jb2x1bW5zU2VydmljZT1oLHRoaXMuYWxsU2VsZWN0ZWQ9bmV3IGZufWdldCBjbHJBbGxTZWxlY3RlZCgpe3JldHVybiB0aGlzLmFsbFNlbGVjdGVkLmFzT2JzZXJ2YWJsZSgpfWhpZGVhYmxlQ29s''@;'; put 'put ''dW1ucygpe3JldHVybiB0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKGg9PmgudmFsdWUuaGlkZWFibGUpfWdldCBhbGxIaWRlYWJsZXNWaXNpYmxlKCl7cmV0dXJuIDA9PT10aGlzLmhpZGVhYmxlQ29sdW1ucygpLmZpbHRlcihoPT5oLnZhbHVlLmhpZGRlbikubGVuZ3RofXNl''@;'; put 'put ''bGVjdEFsbCgpe3RoaXMuaGlkZWFibGVDb2x1bW5zKCkuZm9yRWFjaChoPT50aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZShoLHtoaWRkZW46ITEsY2hhbmdlczpbdmguSElEREVOXX0pKSx0aGlzLmFsbFNlbGVjdGVkLm5leHQoITApfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChrdikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24iXV0sb3V0cHV0czp7Y2xyQWxsU2VsZWN0ZWQ6ImNsckFsbFNlbGVjdGVkIn0sbmdDb250ZW50U2VsZWN0b3JzOnZh''@;'; put 'put ''LGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsInN3aXRjaC1idXR0b24iLDMsImRpc2FibGVkIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLHR0KDAsImJ1dHRvbiIsMCksWm4oImNs''@;'; put 'put ''aWNrIixmdW5jdGlvbigpe3JldHVybiB2LnNlbGVjdEFsbCgpfSksVmkoMSksaXQoKSksMiZoJiZ4dCgiZGlzYWJsZWQiLHYuYWxsSGlkZWFibGVzVmlzaWJsZSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLEh5ZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLWNvbHVtbi10b2dnbGUtdGl0bGUiXV0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxWaSgwKSl9''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGFoZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuX2l0ZW1zPWh9c2V0IHRyYWNrQnkoaCl7dGhpcy5faXRlbXMmJih0aGlzLl9pdGVtcy50cmFja0J5PWgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5l''@;'; put 'put ''dyhofHxkKShLdChDdyw4KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nRm9yVHJhY2tCeSIsIiJdXSxpbnB1dHM6e3RyYWNrQnk6WyJuZ0ZvclRyYWNrQnkiLCJ0cmFja0J5Il19fSksZH0pKCksbGhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHks''@;'; put 'put ''QyxJLGosY2Upe3RoaXMuY29tbW9uU3RyaW5ncz1oLHRoaXMuY29sdW1uc1NlcnZpY2U9dix0aGlzLmNvbHVtblN3aXRjaElkPXksdGhpcy5wbGF0Zm9ybUlkPUMsdGhpcy56b25lPUksdGhpcy5wb3BvdmVySWQ9aix0aGlzLnBvcG92ZXJUb2dnbGVTZXJ2aWNlPWNlLHRoaXMuc21hcnRQb3Np''@;'; put 'put ''dGlvbj17YXhpczpybi5WRVJUSUNBTCxzaWRlOkNpLkJFRk9SRSxhbmNob3I6eW4uU1RBUlQsY29udGVudDp5bi5TVEFSVH0sdGhpcy5zdWJzY3JpcHRpb249Y2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoX2U9PnRoaXMub3BlblN0YXRlPV9lKX1nZXQgYWxsQ29sdW1uc1Zpc2libGUoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fYWxsQ29sdW1uc1Zpc2libGV9c2V0IGFsbENvbHVtbnNWaXNpYmxlKGgpe3RoaXMuX2FsbENvbHVtbnNWaXNpYmxlPWh9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBoaWRlYWJsZUNvbHVtblN0YXRlcygpe3JldHVybiB0aGlzLmNv''@;'; put 'put ''bHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKHY9PnYudmFsdWUuaGlkZWFibGUpLm1hcCh2PT52LnZhbHVlKX1nZXQgaGFzT25seU9uZVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxlbmd0aC10aGlzLmhpZGVhYmxlQ29sdW1uU3RhdGVzLmxl''@;'; put 'put ''bmd0aD09MCYmMT09PXRoaXMuaGlkZWFibGVDb2x1bW5TdGF0ZXMuZmlsdGVyKHY9PiF2LmhpZGRlbikubGVuZ3RofXRvZ2dsZUNvbHVtblN0YXRlKGgsdil7Y29uc3QgeT10aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKEM9PkMudmFsdWU9PT1oKVswXTt0aGlzLmNvbHVtbnNT''@;'; put 'put ''ZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZSh5LHtoaWRkZW46dixjaGFuZ2VzOlt2aC5ISURERU5dfSl9dG9nZ2xlU3dpdGNoUGFuZWwoKXt0aGlzLm9wZW5TdGF0ZT0hdGhpcy5vcGVuU3RhdGV9YWxsQ29sdW1uc1NlbGVjdGVkKCl7dGhpcy5hbGxTZWxlY3RlZEVsZW1lbnQubmF0aXZlRWxlbWVu''@;'; put 'put ''dC5mb2N1cygpfXRyYWNrQnlGbihoKXtyZXR1cm4gaH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRmEpLEt0KGt2KSxLdChEMCksS3QoRTIpLEt0KGRsKSxLdChEMCksS3QoRXQpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6''@;'; put 'put ''W1siY2xyLWRnLWNvbHVtbi10b2dnbGUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKFMwKHksSHllLDUpLFMwKHksb2hlLDUpKSwyJmgpe2xldCBDO3ppKEM9QWkoKSkmJih2LmN1c3RvbVRvZ2dsZVRpdGxlPUMuZmlyc3QpLHppKEM9QWkoKSkmJih2LmN1c3Rv''@;'; put 'put ''bVRvZ2dsZUJ1dHRvbj1DLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAobWwsNSxfbyksMiZoKXtsZXQgeTt6aSh5PUFpKCkpJiYodi5hbGxTZWxlY3RlZEVsZW1lbnQ9eS5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezIm''@;'; put 'put ''aCYmSGkoImNvbHVtbi1zd2l0Y2gtd3JhcHBlciIsITApKCJhY3RpdmUiLHYub3BlblN0YXRlKX0sZmVhdHVyZXM6W2dvKFtSYyxadCxGaSxFdF0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6akwsZGVjbHM6NSx2YXJzOjksY29uc3RzOltbInJvbGUiLCJidXR0b24iLCJ0eXBlIiwiYnV0dG9uIiwi''@;'; put 'put ''Y2xyUG9wb3ZlckFuY2hvciIsIiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b24iLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwiY29sdW1uLXRvZ2dsZS0tYWN0aW9uIl0sWyJzaGFwZSIsInZpZXctY29sdW1ucyIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsxLCJjbHItc3Itb25s''@;'; put 'put ''eSJdLFsiY2xhc3MiLCJjb2x1bW4tc3dpdGNoIiwicm9sZSIsImRpYWxvZyIsImNsckZvY3VzVHJhcCIsIiIsMywiaWQiLDQsImNsclBvcG92ZXJDb250ZW50IiwiY2xyUG9wb3ZlckNvbnRlbnRBdCIsImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsImNsclBvcG92ZXJD''@;'; put 'put ''b250ZW50U2Nyb2xsVG9DbG9zZSJdLFsicm9sZSIsImRpYWxvZyIsImNsckZvY3VzVHJhcCIsIiIsMSwiY29sdW1uLXN3aXRjaCIsMywiaWQiXSxbMSwic3dpdGNoLWhlYWRlciJdLFsidGFiaW5kZXgiLCItMSIsMSwiY2xyLXNyLW9ubHkiXSxbImFsbFNlbGVjdGVkIiwiIl0sWzQsIm5nSWYi''@;'; put 'put ''XSxbImNsclBvcG92ZXJDbG9zZUJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwidG9nZ2xlLXN3aXRjaC1jbG9zZS1idXR0b24iXSxbInNoYXBlIiwid2luZG93LWNsb3NlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIl0sWzEsInN3aXRjaC1jb250''@;'; put 'put ''ZW50IiwibGlzdC11bnN0eWxlZCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMSwic3dpdGNoLWZvb3RlciJdLFszLCJjbHJBbGxTZWxlY3RlZCIsNCwibmdJZiJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLDMsImRpc2FibGVkIiwibmdNb2Rl''@;'; put 'put ''bCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdUZW1wbGF0ZU91dGxldCJdLFszLCJjbHJBbGxTZWxlY3RlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKFZMKSx0dCgwLCJidXR0b24iLDApLGJyKDEsImNkcy1pY29uIiwxKSx0dCgyLCJzcGFuIiwyKSxXdCgzKSxpdCgpKCks''@;'; put 'put ''bm4oNCx6JCwxNiwxMCwiZGl2IiwzKSksMiZoJiYoR2koImFyaWEtY29udHJvbHMiLHYucG9wb3ZlcklkKSgiYXJpYS1vd25zIix2LnBvcG92ZXJJZCkoImFyaWEtZXhwYW5kZWQiLHYub3BlblN0YXRlKSxzdCgxKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLnBpY2tDb2x1bW5z''@;'; put 'put ''KSxzdCgyKSxqaSh2LmNvbW1vblN0cmluZ3Mua2V5cy5waWNrQ29sdW1ucyksc3QoMSkseHQoImNsclBvcG92ZXJDb250ZW50Iix2Lm9wZW5TdGF0ZSkoImNsclBvcG92ZXJDb250ZW50QXQiLHYuc21hcnRQb3NpdGlvbikoImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIs''@;'; put 'put ''ITApKCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiLCEwKSl9LGRlcGVuZGVuY2llczpbdncsb2hlLHV0LEhvLGtzLFBpLHd3LEJvLHd0LHFsLGFoZSx1aCxBdyxqcyxfcyxhcyx6ZF0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksVnllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3Io''@;'; put 'put ''aCl7dGhpcy5leHBhbmRhYmxlUm93c0NvdW50PWgsdGhpcy5leHBhbmRhYmxlUm93c0NvdW50JiZ0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQucmVnaXN0ZXIoKX1uZ09uRGVzdHJveSgpe3RoaXMuZXhwYW5kYWJsZVJvd3NDb3VudCYmdGhpcy5leHBhbmRhYmxlUm93c0NvdW50LnVucmVnaXN0''@;'; put 'put ''ZXIoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoaU8sOCkpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dfSksZH0pKCkseVJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0''@;'; put 'put ''aGlzLl90ZXh0Q29udGVudENoYW5nZT1uZXcgJGV9Z2V0IHRleHRDb250ZW50Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX3RleHRDb250ZW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLl90ZXh0Q29udGVudH1zZXQgdGV4dENvbnRlbnQoaCl7dGhp''@;'; put 'put ''cy5fdGV4dENvbnRlbnQ9aCx0aGlzLl90ZXh0Q29udGVudENoYW5nZS5uZXh0KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx3UmU9KCgpPT57Y2xh''@;'; put 'put ''c3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXV19KSxkfSkoKSxQWj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuc2Vs''@;'; put 'put ''ZWN0aW9uPWgsdGhpcy5kZXRhaWxTZXJ2aWNlPXYsdGhpcy5jb2x1bW5zU2VydmljZT15LHRoaXMuY29tbW9uU3RyaW5ncz1DLHRoaXMuU0VMRUNUSU9OX1RZUEU9enN9Z2V0IGhhc0hpZGVhYmxlQ29sdW1ucygpe3JldHVybiB0aGlzLmNvbHVtbnNTZXJ2aWNlLmhhc0hpZGVhYmxlQ29sdW1u''@;'; put 'put ''c319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoQlopLEt0KGQ4KSxLdChrdiksS3QoRmEpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLWZvb3RlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7''@;'; put 'put ''aWYoMSZoJiZTMCh5LGxoZSw1KSwyJmgpe2xldCBDO3ppKEM9QWkoKSkmJih2LnRvZ2dsZT1DLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiZGF0YWdyaWQtZm9vdGVyIiwhMCl9LG5nQ29udGVudFNlbGVjdG9yczp6TCxkZWNsczozLHZh''@;'; put 'put ''cnM6Mixjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiXSxbMSwiZGF0YWdyaWQtZm9vdGVyLXNlbGVjdCJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLCJjaGVja2VkIiwiY2hlY2tlZCIsImRpc2FibGVkIiwiIl0sWzEsImNsci1z''@;'; put 'put ''ci1vbmx5Il0sWzEsImRhdGFncmlkLWZvb3Rlci1kZXNjcmlwdGlvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKGdaKSxubigwLFpMLDgsMiwibmctY29udGFpbmVyIiwwKSxubigxLHBnLDUsMSwibmctY29udGFpbmVyIiwwKSxWaSgyKSksMiZoJiYoeHQoIm5nSWYiLHYu''@;'; put 'put ''c2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT12LlNFTEVDVElPTl9UWVBFLk11bHRpJiZ2LnNlbGVjdGlvbi5jdXJyZW50Lmxlbmd0aD4wKSxzdCgxKSx4dCgibmdJZiIsIXYuZGV0YWlsU2VydmljZS5pc09wZW4pKX0sZGVwZW5kZW5jaWVzOlt2dyxsaGUsQm8sQXcsYXNdLGVuY2Fwc3VsYXRp''@;'; put 'put ''b246Mn0pLGR9KSgpO2NvbnN0IHNoZT1uZXcgT3QoIkNPTFVNTl9TVEFURSIpLF9SZT17cHJvdmlkZTpzaGUsdXNlRmFjdG9yeTpmdW5jdGlvbiBiUmUoKXtyZXR1cm4gbmV3IFNsKHtjaGFuZ2VzOltdfSl9fTtsZXQgdWhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5wYWdl''@;'; put 'put ''PWgsdGhpcy5wYWdlU2l6ZU9wdGlvbnNJZD1MMSgpfW5nT25Jbml0KCl7KCF0aGlzLnBhZ2VTaXplT3B0aW9uc3x8MD09PXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aCkmJih0aGlzLnBhZ2VTaXplT3B0aW9ucz1bdGhpcy5wYWdlLnNpemVdKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYncpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2Utc2l6ZSJdXSxpbnB1dHM6e3BhZ2VTaXplT3B0aW9uczpbImNsclBhZ2VTaXplT3B0aW9ucyIsInBhZ2VTaXplT3B0aW9ucyJdLHBhZ2VTaXplT3B0''@;'; put 'put ''aW9uc0lkOlsiY2xyUGFnZVNpemVPcHRpb25zSWQiLCJwYWdlU2l6ZU9wdGlvbnNJZCJdfSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwiY2xyLXNlbGVjdC13cmFwcGVyIl0sWzMsImlkIiwibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdW''@;'; put 'put ''YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsIm5nVmFsdWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLFZpKDApLHR0KDEsImRpdiIsMCkoMiwic2VsZWN0IiwxKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYucGFnZS5zaXplPUN9KSxu''@;'; put 'put ''bigzLEckLDIsMiwib3B0aW9uIiwyKSxpdCgpKCkpLDImaCYmKHN0KDIpLEhpKCJjbHItcGFnZS1zaXplLXNlbGVjdCIsITApLHh0KCJpZCIsdi5wYWdlU2l6ZU9wdGlvbnNJZCkoIm5nTW9kZWwiLHYucGFnZS5zaXplKSxzdCgxKSx4dCgibmdGb3JPZiIsdi5wYWdlU2l6ZU9wdGlvbnMpKX0s''@;'; put 'put ''ZGVwZW5kZW5jaWVzOltFZixqcyxfcyxxbCxKMyxYM10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksRlo9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5wYWdlPWgsdGhpcy5jb21tb25TdHJpbmdzPXYsdGhpcy5kZXRhaWxTZXJ2aWNlPXksdGhpcy5jdXJyZW50Q2hhbmdl''@;'; put 'put ''ZD1uZXcgZm4oITEpLHRoaXMucGFnZS5hY3RpdmF0ZWQ9ITB9bmdPbkluaXQoKXt0aGlzLnBhZ2Uuc2l6ZXx8KHRoaXMucGFnZS5zaXplPTEwKSx0aGlzLl9wYWdlU3Vic2NyaXB0aW9uPXRoaXMucGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKGg9PnRoaXMuY3VycmVudENoYW5nZWQuZW1pdChoKSl9''@;'; put 'put ''bmdPbkRlc3Ryb3koKXt0aGlzLnBhZ2UucmVzZXRQYWdlU2l6ZSghMCksdGhpcy5fcGFnZVN1YnNjcmlwdGlvbiYmdGhpcy5fcGFnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBwYWdlU2l6ZSgpe3JldHVybiB0aGlzLnBhZ2Uuc2l6ZX1zZXQgcGFnZVNpemUoaCl7Im51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBoJiYodGhpcy5wYWdlLnNpemU9aCl9Z2V0IHRvdGFsSXRlbXMoKXtyZXR1cm4gdGhpcy5wYWdlLnRvdGFsSXRlbXN9c2V0IHRvdGFsSXRlbXMoaCl7Im51bWJlciI9PXR5cGVvZiBoJiYodGhpcy5wYWdlLnRvdGFsSXRlbXM9aCl9Z2V0IGxhc3RQYWdlKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''cGFnZS5sYXN0fXNldCBsYXN0UGFnZShoKXsibnVtYmVyIj09dHlwZW9mIGgmJih0aGlzLnBhZ2UubGFzdD1oKX1nZXQgY3VycmVudFBhZ2UoKXtyZXR1cm4gdGhpcy5wYWdlLmN1cnJlbnR9c2V0IGN1cnJlbnRQYWdlKGgpeyJudW1iZXIiPT10eXBlb2YgaCYmKHRoaXMucGFnZS5jdXJyZW50''@;'; put 'put ''PWgpfXByZXZpb3VzKCl7dGhpcy5wYWdlLnByZXZpb3VzKCl9bmV4dCgpe3RoaXMucGFnZS5uZXh0KCl9Z2V0IGZpcnN0SXRlbSgpe3JldHVybiB0aGlzLnBhZ2UuZmlyc3RJdGVtfWdldCBsYXN0SXRlbSgpe3JldHVybiB0aGlzLnBhZ2UubGFzdEl0ZW19Z2V0IG1pZGRsZVBhZ2VzKCl7Y29u''@;'; put 'put ''c3QgaD1bXTtyZXR1cm4gdGhpcy5wYWdlLmN1cnJlbnQ+MSYmaC5wdXNoKHRoaXMucGFnZS5jdXJyZW50LTEpLGgucHVzaCh0aGlzLnBhZ2UuY3VycmVudCksdGhpcy5wYWdlLmN1cnJlbnQ8dGhpcy5wYWdlLmxhc3QmJmgucHVzaCh0aGlzLnBhZ2UuY3VycmVudCsxKSxofXVwZGF0ZUN1cnJl''@;'; put 'put ''bnRQYWdlKGgpe2NvbnN0IHY9cGFyc2VJbnQoaC50YXJnZXQudmFsdWUsMTApO2lzTmFOKHYpfHwodGhpcy5wYWdlLmN1cnJlbnQ9djwxPzE6dj50aGlzLnBhZ2UubGFzdD90aGlzLnBhZ2UubGFzdDp2KSx0aGlzLmN1cnJlbnRQYWdlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZT10aGlz''@;'; put 'put ''LnBhZ2UuY3VycmVudH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYncpLEt0KEZhKSxLdChkOCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctcGFnaW5hdGlvbiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlv''@;'; put 'put ''bihoLHYseSl7aWYoMSZoJiZTMCh5LHVoZSw1KSwyJmgpe2xldCBDO3ppKEM9QWkoKSkmJih2Ll9wYWdlU2l6ZUNvbXBvbmVudD1DLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAoVyQsNSksMiZoKXtsZXQgeTt6aSh5PUFpKCkpJiYodi5jdXJyZW50UGFnZUlu''@;'; put 'put ''cHV0UmVmPXkuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJwYWdpbmF0aW9uIiwhMCl9LGlucHV0czp7ZGlzYWJsZUN1cnJlbnRQYWdlSW5wdXQ6WyJjbHJEZ1BhZ2VJbnB1dERpc2FibGVkIiwiZGlzYWJsZUN1cnJlbnRQYWdlSW5wdXQi''@;'; put 'put ''XSxwYWdlU2l6ZTpbImNsckRnUGFnZVNpemUiLCJwYWdlU2l6ZSJdLHRvdGFsSXRlbXM6WyJjbHJEZ1RvdGFsSXRlbXMiLCJ0b3RhbEl0ZW1zIl0sbGFzdFBhZ2U6WyJjbHJEZ0xhc3RQYWdlIiwibGFzdFBhZ2UiXSxjdXJyZW50UGFnZTpbImNsckRnUGFnZSIsImN1cnJlbnRQYWdlIl19LG91''@;'; put 'put ''dHB1dHM6e2N1cnJlbnRDaGFuZ2VkOiJjbHJEZ1BhZ2VDaGFuZ2UifSxuZ0NvbnRlbnRTZWxlY3RvcnM6emNlLGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWzQsIm5nSWYiXSxbImNsYXNzIiwicGFnaW5hdGlvbi1zaXplIiw0LCJuZ0lmIl0sWzEsInBhZ2luYXRpb24tZGVzY3JpcHRpb24iXSxb''@;'; put 'put ''ImNsYXNzIiwicGFnaW5hdGlvbi1saXN0Iiw0LCJuZ0lmIl0sWzEsInBhZ2luYXRpb24tc2l6ZSJdLFsxLCJwYWdpbmF0aW9uLWxpc3QiXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tZmlyc3QiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwiY2xyLXNyLW9ubHkiXSxbInNoYXBl''@;'; put 'put ''Iiwic3RlcC1mb3J3YXJkLTIiLCJkaXJlY3Rpb24iLCJkb3duIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0aW9uLXByZXZpb3VzIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsidHlwZSIsInRleHQiLCJjbGFzcyIsInBh''@;'; put 'put ''Z2luYXRpb24tY3VycmVudCBjbHItaW5wdXQiLDMsInNpemUiLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJibHVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbInJlYWRPbmx5IiwiIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0aW9uLW5leHQiLDMsImRpc2FibGVkIiwiY2xpY2siXSxb''@;'; put 'put ''InNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdLFsidHlwZSIsImJ1dHRvbiIsMSwicGFnaW5hdGlvbi1sYXN0IiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsInN0ZXAtZm9yd2FyZC0yIiwiZGlyZWN0aW9uIiwidXAiXSxbInR5cGUiLCJ0ZXh0IiwxLCJwYWdpbmF0''@;'; put 'put ''aW9uLWN1cnJlbnQiLCJjbHItaW5wdXQiLDMsInNpemUiLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJibHVyIl0sWyJjdXJyZW50UGFnZUlucHV0IiwiIl0sWzEsInBhZ2luYXRpb24tZGVzY3JpcHRpb24tY29tcGFjdCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKFpjZSks''@;'; put 'put ''bm4oMCxWY2UsNSwyLCJuZy1jb250YWluZXIiLDApLG5uKDEsamNlLDE0LDEwLCJuZy1jb250YWluZXIiLDApKSwyJmgmJih4dCgibmdJZiIsIXYuZGV0YWlsU2VydmljZS5pc09wZW4pLHN0KDEpLHh0KCJuZ0lmIix2LmRldGFpbFNlcnZpY2UuaXNPcGVuKSl9LGRlcGVuZGVuY2llczpbQm8s''@;'; put 'put ''a3NdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpO2NvbnN0IHNPPSJkYXRhZ3JpZC1maXhlZC13aWR0aCIsQ3E9ImRhdGFncmlkLWhpZGRlbi1jb2x1bW4iO2xldCBFUz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLmVsPWgsdGhpcy5yZW5kZXJlcj12LHRoaXMuc3Vic2Ny''@;'; put 'put ''aXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh5LmZpbHRlclJlbmRlclN0ZXBzKGM0LkNMRUFSX1dJRFRIUykuc3Vic2NyaWJlKCgpPT50aGlzLmNsZWFyV2lkdGgoKSkpfXNldCBjb2x1bW5TdGF0ZShoKXt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uJiZ0aGlzLnN0YXRlU3Vic2Ny''@;'; put 'put ''aXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5ydW5BbGxDaGFuZ2VzPUJ5ZSx0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPWguc3Vic2NyaWJlKHY9PnRoaXMuc3RhdGVDaGFuZ2VzKHYpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSks''@;'; put 'put ''dGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXN0YXRlQ2hhbmdlcyhoKXt0aGlzLnJ1bkFsbENoYW5nZXMmJihoLmNoYW5nZXM9dGhpcy5ydW5BbGxDaGFuZ2VzLGRlbGV0ZSB0aGlzLnJ1bkFsbENoYW5nZXMpLGguY2hhbmdlcyYm''@;'; put 'put ''aC5jaGFuZ2VzLmxlbmd0aCYmaC5jaGFuZ2VzLmZvckVhY2godj0+e3N3aXRjaCh2KXtjYXNlIHZoLldJRFRIOnRoaXMuc2V0V2lkdGgoaCk7YnJlYWs7Y2FzZSB2aC5ISURERU46dGhpcy5zZXRIaWRkZW4oaCl9fSl9Y2xlYXJXaWR0aCgpe3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhp''@;'; put 'put ''cy5lbC5uYXRpdmVFbGVtZW50LHNPKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLG51bGwpfXNldFdpZHRoKGgpe2guc3RyaWN0V2lkdGg/dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsc08pOnRoaXMucmVu''@;'; put 'put ''ZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHNPKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLGgud2lkdGgrInB4Iil9c2V0SGlkZGVuKGgpe2guaGlkZGVuP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5u''@;'; put 'put ''YXRpdmVFbGVtZW50LENxKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxDcSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSxLdChEYSksS3Qoa1MpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxz''@;'; put 'put ''ZWxlY3RvcnM6W1siY2xyLWRnLWNlbGwiXV19KSxkfSkoKSx4Uz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqLGNlKXt0aGlzLmVsPWgsdGhpcy5yZW5kZXJlcj12LHRoaXMub3JnYW5pemVyPXksdGhpcy5kb21BZGFwdGVyPUMsdGhpcy5jb2x1bW5SZXNpemVyU2Vydmlj''@;'; put 'put ''ZT1JLHRoaXMuY29sdW1uc1NlcnZpY2U9aix0aGlzLmNvbHVtblN0YXRlPWNlLHRoaXMucmVzaXplRW1pdHRlcj1uZXcgZm4sdGhpcy53aWR0aFNldD0hMSx0aGlzLmF1dG9TZXQ9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMub3JnYW5pemVy''@;'; put 'put ''LmZpbHRlclJlbmRlclN0ZXBzKGM0LkNMRUFSX1dJRFRIUykuc3Vic2NyaWJlKCgpPT50aGlzLmNsZWFyV2lkdGgoKSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNlLnN1YnNjcmliZShfZT0+dGhpcy5zdGF0ZUNoYW5nZXMoX2UpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlv''@;'; put 'put ''bnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfXN0YXRlQ2hhbmdlcyhoKXtoLmNoYW5nZXMmJmguY2hhbmdlcy5sZW5ndGgmJmguY2hhbmdlcy5mb3JFYWNoKHY9Pntzd2l0Y2godil7Y2FzZSB2aC5XSURUSDp0aGlzLnNldFdpZHRoKGgpO2JyZWFrO2Nhc2UgdmguSElEREVOOnRoaXMu''@;'; put 'put ''c2V0SGlkZGVuKGgpfX0pfWNsZWFyV2lkdGgoKXt0aGlzLndpZHRoU2V0JiYhdGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnkmJnRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsbnVsbCksdGhpcy5hdXRvU2V0JiZ0aGlzLnJlbmRl''@;'; put 'put ''cmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxzTyl9ZGV0ZWN0U3RyaWN0V2lkdGgoKXtyZXR1cm4gdGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnk/dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS53aWR0aEFmdGVyUmVzaXplOnRoaXMuYXV0b1NldD8wOnRo''@;'; put 'put ''aXMuZG9tQWRhcHRlci51c2VyRGVmaW5lZFdpZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCl9Y29tcHV0ZVdpZHRoKGgpe2xldCB2PWg7cmV0dXJuIHZ8fCh2PXRoaXMuZG9tQWRhcHRlci5zY3JvbGxXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKSx2fWdldENvbHVtbldpZHRoU3RhdGUo''@;'; put 'put ''KXtjb25zdCBoPXRoaXMuZGV0ZWN0U3RyaWN0V2lkdGgoKTtyZXR1cm57d2lkdGg6dGhpcy5jb21wdXRlV2lkdGgoaCksc3RyaWN0V2lkdGg6aH19c2V0Q29sdW1uU3RhdGUoaCl7dGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zW2hdPXRoaXMuY29sdW1uU3RhdGV9c2V0V2lkdGgoaCl7aC5z''@;'; put 'put ''dHJpY3RXaWR0aD8odGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnkmJih0aGlzLnJlc2l6ZUVtaXR0ZXIuZW1pdChoLndpZHRoKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLGgud2lkdGgrInB4IiksdGhpcy53aWR0aFNldD0h''@;'; put 'put ''MSksdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsc08pLHRoaXMuYXV0b1NldD0hMSk6KHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHNPKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVu''@;'; put 'put ''dCwid2lkdGgiLGgud2lkdGgrInB4IiksdGhpcy53aWR0aFNldD0hMCx0aGlzLmF1dG9TZXQ9ITApfXNldEhpZGRlbihoKXtoLmhpZGRlbj90aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxDcSk6dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5h''@;'; put 'put ''dGl2ZUVsZW1lbnQsQ3EpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfbyksS3QoRGEpLEt0KGtTKSxLdCh1NCksS3QoWGZlKSxLdChrdiksS3Qoc2hlKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1jb2x1''@;'; put 'put ''bW4iXV0sb3V0cHV0czp7cmVzaXplRW1pdHRlcjoiY2xyRGdDb2x1bW5SZXNpemUifSxmZWF0dXJlczpbZ28oW1hmZSxfUmVdKV19KSxkfSkoKSxNUmU9KCgpPT57Y2xhc3MgZHt1c2VyRGVmaW5lZFdpZHRoKGgpe3JldHVybiAwfXNjcm9sbEJhcldpZHRoKGgpe3JldHVybiAwfXNjcm9sbFdp''@;'; put 'put ''ZHRoKGgpe3JldHVybiAwfWNvbXB1dGVkSGVpZ2h0KGgpe3JldHVybiAwfWNsaWVudFJlY3QoaCl7cmV0dXJue3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9fW1pbldpZHRoKGgpe3JldHVybiAwfWZvY3VzKGgpe319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksVFM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmNvbHVtbnNTZXJ2aWNlPWgsdGhpcy5zdWJzY3JpcHRpb25zPVtdfW5nQWZ0ZXJD''@;'; put 'put ''b250ZW50SW5pdCgpe3RoaXMuc2V0Q29sdW1uU3RhdGUoKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmNlbGxzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5zZXRDb2x1bW5TdGF0ZSgpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51''@;'; put 'put ''bnN1YnNjcmliZSgpKX1zZXRDb2x1bW5TdGF0ZSgpe3RoaXMuY2VsbHMubGVuZ3RoPT09dGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxlbmd0aCYmdGhpcy5jZWxscy5mb3JFYWNoKChoLHYpPT57dGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zW3ZdJiYoaC5jb2x1bW5TdGF0ZT10aGlz''@;'; put 'put ''LmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnNbdl0pfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGt2KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1yb3ciXSxbImNsci1kZy1yb3ctZGV0YWlsIl1dLGNvbnRl''@;'; put 'put ''bnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJlMwKHksRVMsNCksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5jZWxscz1DKX19fSksZH0pKCk7Y29uc3QgRVJlPWQ9PmFsKGQpP25ldyB1NDpuZXcgTVJlO2xldCB1Tz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMs''@;'; put 'put ''SSxqLGNlLF9lLFJlLE5lKXt0aGlzLm9yZ2FuaXplcj1oLHRoaXMuaXRlbXM9dix0aGlzLnBhZ2U9eSx0aGlzLmRvbUFkYXB0ZXI9Qyx0aGlzLmVsPUksdGhpcy5yZW5kZXJlcj1qLHRoaXMuZGV0YWlsU2VydmljZT1jZSx0aGlzLnRhYmxlU2l6ZVNlcnZpY2U9X2UsdGhpcy5jb2x1bW5zU2Vy''@;'; put 'put ''dmljZT1SZSx0aGlzLm5nWm9uZT1OZSx0aGlzLl9oZWlnaHRTZXQ9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuY29sdW1uc1NpemVzU3RhYmxlPSExLHRoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucz0hMCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm9yZ2FuaXplci5maWx0''@;'; put 'put ''ZXJSZW5kZXJTdGVwcyhjNC5DT01QVVRFX0NPTFVNTl9XSURUSFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jb21wdXRlSGVhZGVyc1dpZHRoKCkpKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnBhZ2Uuc2l6ZUNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9oZWlnaHRTZXQmJnRoaXMu''@;'; put 'put ''cmVzZXREYXRhZ3JpZEhlaWdodCgpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZGV0YWlsU2VydmljZS5zdGF0ZUNoYW5nZS5zdWJzY3JpYmUoS2U9PnRoaXMudG9nZ2xlRGV0YWlsUGFuZShLZSkpKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLml0ZW1zLmNoYW5nZS5z''@;'; put 'put ''dWJzY3JpYmUoKCk9PnRoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucz0hMCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc2V0dXBDb2x1bW5zKCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5oZWFkZXJzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5zZXR1cENvbHVtbnMo''@;'; put 'put ''KSx0aGlzLmNvbHVtbnNTaXplc1N0YWJsZT0hMSx0aGlzLnN0YWJpbGl6ZUNvbHVtbnMoKX0pKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnRhYmxlU2l6ZVNlcnZpY2UudGFibGU9dGhpcy5lbH1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnNob3VsZFN0YWJpbGl6ZUNvbHVtbnMmJnRoaXMu''@;'; put 'put ''c3RhYmlsaXplQ29sdW1ucygpLHRoaXMuc2hvdWxkQ29tcHV0ZUhlaWdodCgpJiZ0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLmNvbXB1dGVEYXRhZ3JpZEhlaWdodCgpfSl9KX1zZXR1cENvbHVtbnMoKXt0aGlzLmhlYWRlcnMuZm9yRWFj''@;'; put 'put ''aCgoaCx2KT0+aC5zZXRDb2x1bW5TdGF0ZSh2KSksdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLnNwbGljZSh0aGlzLmhlYWRlcnMubGVuZ3RoKSx0aGlzLnJvd3MuZm9yRWFjaChoPT5oLnNldENvbHVtblN0YXRlKCkpfXNob3VsZENvbXB1dGVIZWlnaHQoKXtyZXR1cm4hdGhpcy5faGVp''@;'; put 'put ''Z2h0U2V0JiZ0aGlzLnBhZ2Uuc2l6ZT4wJiZ0aGlzLml0ZW1zLmRpc3BsYXllZC5sZW5ndGg9PT10aGlzLnBhZ2Uuc2l6ZX10b2dnbGVEZXRhaWxQYW5lKGgpe3RoaXMuaGVhZGVycyYmKGgmJiF0aGlzLmNvbHVtbnNTZXJ2aWNlLmhhc0NhY2hlKCk/KHRoaXMuY29sdW1uc1NlcnZpY2UuY2Fj''@;'; put 'put ''aGUoKSx0aGlzLmhlYWRlcnMuZm9yRWFjaCgodix5KT0+e3k+MCYmdGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2VBdCh5LHtjaGFuZ2VzOlt2aC5ISURERU5dLGhpZGRlbjpofSl9KSk6aHx8dGhpcy5jb2x1bW5zU2VydmljZS5yZXNldFRvTGFzdENhY2hlKCkpfWNvbXB1dGVE''@;'; put 'put ''YXRhZ3JpZEhlaWdodCgpe2NvbnN0IGg9dGhpcy5kb21BZGFwdGVyLmNsaWVudFJlY3QodGhpcy5lbC5uYXRpdmVFbGVtZW50KS5oZWlnaHQ7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImhlaWdodCIsaCsicHgiKSx0aGlzLl9oZWlnaHRTZXQ9ITB9cmVz''@;'; put 'put ''ZXREYXRhZ3JpZEhlaWdodCgpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJoZWlnaHQiLCIiKSx0aGlzLl9oZWlnaHRTZXQ9ITF9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfWNvbXB1dGVI''@;'; put 'put ''ZWFkZXJzV2lkdGgoKXtjb25zdCBoPXRoaXMuaGVhZGVycy5sZW5ndGg7bGV0IHY9ITA7dGhpcy5oZWFkZXJzLmZvckVhY2goKHksQyk9Pntjb25zdCBJPU9iamVjdC5hc3NpZ24oe2NoYW5nZXM6W3ZoLldJRFRIXX0seS5nZXRDb2x1bW5XaWR0aFN0YXRlKCkpO0kuc3RyaWN0V2lkdGh8fCh2''@;'; put 'put ''PSExKSxoPT09QysxJiZ2JiYoSS5zdHJpY3RXaWR0aD0wKSx0aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZUF0KEMsSSl9KX1zdGFiaWxpemVDb2x1bW5zKCl7dGhpcy5zaG91bGRTdGFiaWxpemVDb2x1bW5zPSExLCF0aGlzLmNvbHVtbnNTaXplc1N0YWJsZSYmdGhpcy5pdGVt''@;'; put 'put ''cy5kaXNwbGF5ZWQubGVuZ3RoPjAmJih0aGlzLm9yZ2FuaXplci5yZXNpemUoKSx0aGlzLmNvbHVtbnNTaXplc1N0YWJsZT0hMCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGtTKSxLdChDdyksS3QoYncpLEt0KHU0KSxLdChfbyksS3QoRGEp''@;'; put 'put ''LEt0KGQ4KSxLdChLZmUpLEt0KGt2KSxLdChkbCkpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGF0YWdyaWQiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKFMwKHkseFMsNCksUzAoeSxUUyw1KSksMiZoKXtsZXQgQzt6aShDPUFp''@;'; put 'put ''KCkpJiYodi5oZWFkZXJzPUMpLHppKEM9QWkoKSkmJih2LnJvd3M9Qyl9fSxmZWF0dXJlczpbZ28oW3twcm92aWRlOnU0LHVzZUZhY3Rvcnk6RVJlLGRlcHM6W0UyXX1dKV19KSxkfSkoKSx4UmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKHFzZSxMayx6eSxlMmUs''@;'; put 'put ''QVgsSkQseVgsdDJlLG4yZSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxacyxfeWUseGYsWWZlLHdwLGNSZSxDeWUsVHllLF9aLGxvLFRmZSxjcSxi''@;'; put 'put ''U11dfSksZH0pKCksanllPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItc3RhY2stY29udGVudCJdXX0pLGR9KSgpLGNoZT0oKCk9PntjbGFzcyBke2Nv''@;'; put 'put ''bnN0cnVjdG9yKGgpe3RoaXMudW5pcXVlSWQ9aCx0aGlzLl9nZW5lcmF0ZWRJZD1udWxsLHRoaXMuX2lkPW51bGx9c2V0IGlkKGgpe3RoaXMuX2lkPSJzdHJpbmciPT10eXBlb2YgaCYmIiIhPT1oP2g6dGhpcy5fZ2VuZXJhdGVkSWQrIiJ9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfW5nT25J''@;'; put 'put ''bml0KCl7dGhpcy5fZ2VuZXJhdGVkSWQ9ImNsci1zdGFjay1sYWJlbC0iK3RoaXMudW5pcXVlSWQsdGhpcy5pZHx8KHRoaXMuX2lkPXRoaXMuX2dlbmVyYXRlZElkKyIiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRDApKX0sZC5cdTAyNzVj''@;'; put 'put ''bXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXN0YWNrLWxhYmVsIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZHaSgiaWQiLHYuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LGZlYXR1cmVzOltnbyhbUmNdKV0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRl''@;'; put 'put ''Y2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFp5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLnBhcmVudD1oLHRoaXMudW5pcXVlSWQ9dix0aGlzLmNvbW1vblN0cmluZ3M9''@;'; put 'put ''eSx0aGlzLmV4cGFuZGVkPSExLHRoaXMuZXhwYW5kZWRDaGFuZ2U9bmV3IGZuKCExKSx0aGlzLmV4cGFuZGFibGU9ITEsdGhpcy5mb2N1c2VkPSExLHRoaXMuX2NoYW5nZWRDaGlsZHJlbj0wLHRoaXMuX2Z1bGx5SW5pdGlhbGl6ZWQ9ITEsdGhpcy5fY2hhbmdlZD0hMSxoJiZoLmFkZENoaWxk''@;'; put 'put ''KCl9Z2V0IGdldENoYW5nZWRWYWx1ZSgpe3JldHVybiB0aGlzLl9jaGFuZ2VkfHx0aGlzLl9jaGFuZ2VkQ2hpbGRyZW4+MCYmIXRoaXMuZXhwYW5kZWR9c2V0IHNldENoYW5nZWRWYWx1ZShoKXt0aGlzLl9jaGFuZ2VkPWgsdGhpcy5wYXJlbnQmJnRoaXMuX2Z1bGx5SW5pdGlhbGl6ZWQmJiho''@;'; put 'put ''P3RoaXMucGFyZW50Ll9jaGFuZ2VkQ2hpbGRyZW4rKzp0aGlzLnBhcmVudC5fY2hhbmdlZENoaWxkcmVuLS0pfWdldCBsYWJlbGxlZEJ5SWQoKXtyZXR1cm4gdGhpcy5zdGFja0Jsb2NrVGl0bGUuaWR9Z2V0IGhlYWRpbmdMZXZlbCgpe3JldHVybiB0aGlzLmFyaWFMZXZlbD90aGlzLmFyaWFM''@;'; put 'put ''ZXZlbCsiIjp0aGlzLnBhcmVudD8iNCI6IjMifW5nT25Jbml0KCl7dGhpcy5fZnVsbHlJbml0aWFsaXplZD0hMH1hZGRDaGlsZCgpe3RoaXMuZXhwYW5kYWJsZT0hMH10b2dnbGVFeHBhbmQoKXt0aGlzLmV4cGFuZGFibGUmJih0aGlzLmV4cGFuZGVkPSF0aGlzLmV4cGFuZGVkLHRoaXMuZXhw''@;'; put 'put ''YW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKSl9Z2V0IGNhcmV0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwYW5kZWQ/ImRvd24iOiJyaWdodCJ9Z2V0IHJvbGUoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlPyJidXR0b24iOm51bGx9Z2V0IHRhYkluZGV4KCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''ZXhwYW5kYWJsZT8iMCI6bnVsbH1nZXQgb25TdGFja0xhYmVsRm9jdXMoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlJiYhdGhpcy5leHBhbmRlZCYmdGhpcy5mb2N1c2VkfWdldCBhcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlP3RoaXMuZXhwYW5kZWQ/InRydWUiOiJmYWxz''@;'; put 'put ''ZSI6bnVsbH1nZXRTdGFja0NoaWxkcmVuSWQoKXtyZXR1cm4gdGhpcy5leHBhbmRlZD9gY2xyLXN0YWNrLWNoaWxkcmVuLSR7dGhpcy51bmlxdWVJZH1gOm51bGx9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQsMTIpLEt0KEQwKSxLdChGYSkp''@;'; put 'put ''fSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItc3RhY2stYmxvY2siXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmUzAoeSxjaGUsNSksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5zdGFja0Jsb2NrVGl0bGU9Qy5maXJzdCl9fSxob3N0''@;'; put 'put ''VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJihHaSgicm9sZSIsImhlYWRpbmciKSgiYXJpYS1sZXZlbCIsdi5oZWFkaW5nTGV2ZWwpLEhpKCJzdGFjay1ibG9jayIsITApKCJzdGFjay1ibG9jay1leHBhbmRlZCIsdi5leHBhbmRlZCkoInN0YWNrLWJsb2NrLWV4cGFu''@;'; put 'put ''ZGFibGUiLHYuZXhwYW5kYWJsZSkoInN0YWNrLWJsb2NrLWNoYW5nZWQiLHYuZ2V0Q2hhbmdlZFZhbHVlKSgib24tZm9jdXMiLHYub25TdGFja0xhYmVsRm9jdXMpKX0saW5wdXRzOntleHBhbmRlZDpbImNsclNiRXhwYW5kZWQiLCJleHBhbmRlZCJdLGV4cGFuZGFibGU6WyJjbHJTYkV4cGFu''@;'; put 'put ''ZGFibGUiLCJleHBhbmRhYmxlIl0sc2V0Q2hhbmdlZFZhbHVlOlsiY2xyU2JOb3RpZnlDaGFuZ2UiLCJzZXRDaGFuZ2VkVmFsdWUiXSxhcmlhTGV2ZWw6WyJjbHJTdGFja1ZpZXdMZXZlbCIsImFyaWFMZXZlbCJdLGFyaWFTZXRzaXplOlsiY2xyU3RhY2tWaWV3U2V0c2l6ZSIsImFyaWFTZXRz''@;'; put 'put ''aXplIl0sYXJpYVBvc2luc2V0OlsiY2xyU3RhY2tWaWV3UG9zaW5zZXQiLCJhcmlhUG9zaW5zZXQiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNsclNiRXhwYW5kZWRDaGFuZ2UifSxmZWF0dXJlczpbZ28oW1JjXSldLG5nQ29udGVudFNlbGVjdG9yczpVY2UsZGVjbHM6OSx2YXJzOjks''@;'; put 'put ''Y29uc3RzOltbMSwic3RhY2stYmxvY2stbGFiZWwiLDMsImlkIiwiY2xpY2siLCJrZXl1cC5lbnRlciIsImtleXVwLnNwYWNlIiwiZm9jdXMiLCJibHVyIl0sWyJzaGFwZSIsImFuZ2xlIiwiY2xhc3MiLCJzdGFjay1ibG9jay1jYXJldCIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItc3Itb25s''@;'; put 'put ''eSIsNCwibmdJZiJdLFsxLCJzdGFjay12aWV3LWtleSJdLFsxLCJzdGFjay1ibG9jay1jb250ZW50Il0sWzEsInN0YWNrLWNoaWxkcmVuIiwzLCJjbHJFeHBhbmRUcmlnZ2VyIl0sWyJyb2xlIiwicmVnaW9uIiwzLCJoZWlnaHQiLDQsIm5nSWYiXSxbInNoYXBlIiwiYW5nbGUiLDEsInN0YWNr''@;'; put 'put ''LWJsb2NrLWNhcmV0Il0sWzEsImNsci1zci1vbmx5Il0sWyJyb2xlIiwicmVnaW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoWWNlKSx0dCgwLCJkaXYiLDApLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi50b2dnbGVFeHBhbmQoKX0pKCJrZXl1cC5lbnRlciIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdi50b2dnbGVFeHBhbmQoKX0pKCJrZXl1cC5zcGFjZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi50b2dnbGVFeHBhbmQoKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gdi5mb2N1c2VkPSEwfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZm9jdXNlZD0h''@;'; put 'put ''MX0pLG5uKDEsbVosMSwxLCJjZHMtaWNvbiIsMSksbm4oMixHY2UsMiwxLCJzcGFuIiwyKSx0dCgzLCJkaXYiLDMpLFZpKDQpLGl0KCksdHQoNSwiZGl2Iiw0KSxWaSg2LDEpLGl0KCkoKSx0dCg3LCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDUpLG5uKDgsV2NlLDIsNCwiZGl2Iiw2KSxp''@;'; put 'put ''dCgpKSwyJmgmJih4dCgiaWQiLHYudW5pcXVlSWQpLEdpKCJyb2xlIix2LnJvbGUpKCJ0YWJpbmRleCIsdi50YWJJbmRleCkoImFyaWEtZXhwYW5kZWQiLHYuYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsdi5nZXRTdGFja0NoaWxkcmVuSWQoKSksc3QoMSkseHQoIm5nSWYiLHYuZXhw''@;'; put 'put ''YW5kYWJsZSksc3QoMSkseHQoIm5nSWYiLHYuZ2V0Q2hhbmdlZFZhbHVlKSxzdCg1KSx4dCgiY2xyRXhwYW5kVHJpZ2dlciIsdi5leHBhbmRlZCksc3QoMSkseHQoIm5nSWYiLHYuZXhwYW5kZWQpKX0sZGVwZW5kZW5jaWVzOltkcSxCbyxrc10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtk''@;'; put 'put ''aXNwbGF5OmJsb2NrfSJdfSksZH0pKCksY089KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZWRpdGFibGU9ITEsdGhpcy5zYXZlPW5ldyBmbighMSksdGhpcy5fZWRpdE1vZGU9ITEsdGhpcy5lZGl0aW5nQ2hhbmdlPW5ldyBmbighMSl9Z2V0IGVkaXRpbmcoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5lZGl0YWJsZSYmdGhpcy5fZWRpdE1vZGV9c2V0IGVkaXRpbmcoaCl7dGhpcy5lZGl0YWJsZSYmKHRoaXMuX2VkaXRNb2RlPWgsdGhpcy5lZGl0aW5nQ2hhbmdlLmVtaXQoaCksaHx8dGhpcy5zYXZlLmVtaXQobnVsbCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXN0YWNrLXZpZXciXV0sb3V0cHV0czp7c2F2ZToiY2xyU3RhY2tTYXZlIn0sbmdDb250ZW50U2VsZWN0b3JzOlEkLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsInN0YWNrLXZpZXciXV0sdGVtcGxh''@;'; put 'put ''dGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChVJCksVmkoMCksdHQoMSwiZGl2IiwwKSxWaSgyLDEpLGl0KCkpfSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il19KSxkfSkoKSxEUmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKCQ3KX19''@;'; put 'put ''cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLHhmLFpzLEN5ZV1dfSksZH0pKCksSVM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2VsZWN0''@;'; put 'put ''YWJsZT0hMSx0aGlzLmVhZ2VyPSEwLHRoaXMuY2hpbGRyZW5GZXRjaGVkPW5ldyAkZX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgR3llPXtw''@;'; put 'put ''cm92aWRlOklTLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTFJlKGQpe3JldHVybiBkfHxuZXcgSVN9LGRlcHM6W1tuZXcgSTQsbmV3IHlkLElTXV19O2xldCBXeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlPWgsdGhpcy5leHBhbmRTZXJ2aWNlPXYs''@;'; put 'put ''diYmKHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRDaGFuZ2Uuc3Vic2NyaWJlKHk9PnsheSYmdGhpcy5wYXJlbnQmJiF0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlciYmdGhpcy5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uJiZ0aGlzLnBhcmVudC5jbGVhckNo''@;'; put 'put ''aWxkcmVuKCl9KSl9c2hvdWxkUmVuZGVyKCl7cmV0dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbiYmKHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyfHwhdGhpcy5leHBhbmRTZXJ2aWNlfHx0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQpfWdldENvbnRleHQoaCl7cmV0dXJu''@;'; put 'put ''eyRpbXBsaWNpdDpoLm1vZGVsLGNsck1vZGVsOmh9fW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KElTKSxLdChlZiw4KSl9LGQu''@;'; put 'put ''XHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1yZWN1cnNpdmUtY2hpbGRyZW4iXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkdpKCJyb2xlIiwiZ3JvdXAiKX0saW5wdXRzOntwYXJlbnQ6InBhcmVudCIsY2hpbGRyZW46ImNoaWxkcmVu''@;'; put 'put ''In0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiZubigwLEtjZSwyLDEsIm5nLWNvbnRhaW5lciIs''@;'; put 'put ''MCksMiZoJiZ4dCgibmdJZiIsdi5zaG91bGRSZW5kZXIoKSl9LGRlcGVuZGVuY2llczpbQm8scWwsemRdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpO3ZhciBNdT0oKCk9PihmdW5jdGlvbihkKXtkW2QuVU5TRUxFQ1RFRD0wXT0iVU5TRUxFQ1RFRCIsZFtkLlNFTEVDVEVEPTFdPSJTRUxFQ1RF''@;'; put 'put ''RCIsZFtkLklOREVURVJNSU5BVEU9Ml09IklOREVURVJNSU5BVEUifShNdXx8KE11PXt9KSksTXUpKSgpO2NsYXNzIFl5ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuc2VsZWN0ZWQ9bmV3IFNsKE11LlVOU0VMRUNURUQpLHRoaXMuX2xvYWRpbmc9ITEsdGhpcy5sb2FkaW5nJD1uZXcgU2woITEpfWdl''@;'; put 'put ''dCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmd9c2V0IGxvYWRpbmcoZyl7dGhpcy5fbG9hZGluZz1nLHRoaXMubG9hZGluZyQubmV4dChnKX1kZXN0cm95KCl7dGhpcy5zZWxlY3RlZC5jb21wbGV0ZSgpfXNldFNlbGVjdGVkKGcsaCx2KXtnIT09dGhpcy5zZWxlY3RlZC52YWx1ZSYm''@;'; put 'put ''KHRoaXMuc2VsZWN0ZWQubmV4dChnKSx2JiZnIT09TXUuSU5ERVRFUk1JTkFURSYmdGhpcy5jaGlsZHJlbiYmdGhpcy5jaGlsZHJlbi5mb3JFYWNoKHk9Pnkuc2V0U2VsZWN0ZWQoZywhMSwhMCkpLGgmJnRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5fdXBkYXRlU2VsZWN0aW9uRnJvbUNoaWxk''@;'; put 'put ''cmVuKCkpfXRvZ2dsZVNlbGVjdGlvbihnKXt0aGlzLnNldFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQudmFsdWU9PT1NdS5TRUxFQ1RFRD9NdS5VTlNFTEVDVEVEOk11LlNFTEVDVEVELCEwLGcpfWNvbXB1dGVTZWxlY3Rpb25TdGF0ZUZyb21DaGlsZHJlbigpe2xldCBnPSExLGg9ITE7Zm9yKGNv''@;'; put 'put ''bnN0IHYgb2YgdGhpcy5jaGlsZHJlbilzd2l0Y2godi5zZWxlY3RlZC52YWx1ZSl7Y2FzZSBNdS5JTkRFVEVSTUlOQVRFOnJldHVybiBNdS5JTkRFVEVSTUlOQVRFO2Nhc2UgTXUuU0VMRUNURUQ6aWYoZz0hMCxoKXJldHVybiBNdS5JTkRFVEVSTUlOQVRFO2JyZWFrO2RlZmF1bHQ6aWYoaD0h''@;'; put 'put ''MCxnKXJldHVybiBNdS5JTkRFVEVSTUlOQVRFfXJldHVybiBnP2g/TXUuVU5TRUxFQ1RFRDpNdS5TRUxFQ1RFRDpNdS5VTlNFTEVDVEVEfV91cGRhdGVTZWxlY3Rpb25Gcm9tQ2hpbGRyZW4oKXtjb25zdCBnPXRoaXMuY29tcHV0ZVNlbGVjdGlvblN0YXRlRnJvbUNoaWxkcmVuKCk7ZyE9PXRo''@;'; put 'put ''aXMuc2VsZWN0ZWQudmFsdWUmJih0aGlzLnNlbGVjdGVkLm5leHQoZyksdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50Ll91cGRhdGVTZWxlY3Rpb25Gcm9tQ2hpbGRyZW4oKSl9fWNsYXNzIGtxIGV4dGVuZHMgWXlle2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKCksdGhpcy5nZXRDaGlsZHJl''@;'; put 'put ''bj12LHRoaXMuZmVhdHVyZXNTZXJ2aWNlPXksdGhpcy5jaGlsZHJlbkZldGNoZWQ9ITEsdGhpcy5fY2hpbGRyZW49W10sdGhpcy5tb2RlbD1nLHRoaXMucGFyZW50PWh9Y2xlYXJDaGlsZHJlbigpe3RoaXMuX2NoaWxkcmVuLmZvckVhY2goZz0+Zy5kZXN0cm95KCkpLGRlbGV0ZSB0aGlzLl9j''@;'; put 'put ''aGlsZHJlbix0aGlzLmNoaWxkcmVuRmV0Y2hlZD0hMX1mZXRjaENoaWxkcmVuKCl7aWYodGhpcy5jaGlsZHJlbkZldGNoZWQpcmV0dXJuO2NvbnN0IGc9dGhpcy5nZXRDaGlsZHJlbih0aGlzLm1vZGVsKTshZnVuY3Rpb24gT1JlKGQpe3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC50''@;'; put 'put ''aGVufShnKT9MWChnKT8odGhpcy5sb2FkaW5nPSEwLHRoaXMuc3Vic2NyaXB0aW9uPWcuc3Vic2NyaWJlKGg9Pnt0aGlzLl9jaGlsZHJlbj10aGlzLndyYXBDaGlsZHJlbihoKSx0aGlzLmxvYWRpbmc9ITF9KSk6dGhpcy5fY2hpbGRyZW49Zz90aGlzLndyYXBDaGlsZHJlbihnKTpbXToodGhp''@;'; put 'put ''cy5sb2FkaW5nPSEwLGcudGhlbihoPT57dGhpcy5fY2hpbGRyZW49dGhpcy53cmFwQ2hpbGRyZW4oaCksdGhpcy5sb2FkaW5nPSExfSkpLHRoaXMuY2hpbGRyZW5GZXRjaGVkPSEwLHRoaXMuZmVhdHVyZXNTZXJ2aWNlJiZ0aGlzLmZlYXR1cmVzU2VydmljZS5jaGlsZHJlbkZldGNoZWQubmV4''@;'; put 'put ''dCgpfXdyYXBDaGlsZHJlbihnKXtyZXR1cm4gZy5tYXAoaD0+bmV3IGtxKGgsdGhpcyx0aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKSl9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuZmV0Y2hDaGlsZHJlbigpLHRoaXMuX2NoaWxkcmVufXNldCBjaGlsZHJlbihnKXt0''@;'; put 'put ''aGlzLl9jaGlsZHJlbj1nfWRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxzdXBlci5kZXN0cm95KCl9fWxldCBVeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy50ZW1wbGF0ZT1oLHRoaXMuZmVhdHVyZXNT''@;'; put 'put ''ZXJ2aWNlPXYsdGhpcy5jZHI9eX1uZ09uQ2hhbmdlcygpe2xldCBoO2g9QXJyYXkuaXNBcnJheSh0aGlzLm5vZGVzKT90aGlzLm5vZGVzLm1hcCh2PT5uZXcga3EodixudWxsLHRoaXMuZ2V0Q2hpbGRyZW4sdGhpcy5mZWF0dXJlc1NlcnZpY2UpKTpbbmV3IGtxKHRoaXMubm9kZXMsbnVsbCx0''@;'; put 'put ''aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKV0sdGhpcy5jaGlsZHJlbkZldGNoU3Vic2NyaXB0aW9ufHwodGhpcy5jaGlsZHJlbkZldGNoU3Vic2NyaXB0aW9uPXRoaXMuZmVhdHVyZXNTZXJ2aWNlLmNoaWxkcmVuRmV0Y2hlZC5waXBlKFJrKDApKS5zdWJzY3JpYmUoKCk9''@;'; put 'put ''Pnt0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCl9KSksdGhpcy5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uPXt0ZW1wbGF0ZTp0aGlzLnRlbXBsYXRlLHJvb3Q6aH19bmdPbkRlc3Ryb3koKXt0aGlzLmNoaWxkcmVuRmV0Y2hTdWJzY3JpcHRpb24mJnRoaXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlw''@;'; put 'put ''dGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChWbiksS3QoSVMpLEt0KGQxKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclJlY3Vyc2l2ZUZvciIsIiIsImNsclJlY3Vyc2l2ZUZv''@;'; put 'put ''ck9mIiwiIl1dLGlucHV0czp7bm9kZXM6WyJjbHJSZWN1cnNpdmVGb3JPZiIsIm5vZGVzIl0sZ2V0Q2hpbGRyZW46WyJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsImdldENoaWxkcmVuIl19LGZlYXR1cmVzOltkMl19KSxkfSkoKSxmaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigp''@;'; put 'put ''e3RoaXMuX2ZvY3VzUmVxdWVzdD1uZXcgJGUsdGhpcy5fZm9jdXNDaGFuZ2U9bmV3ICRlfWdldCBmb2N1c1JlcXVlc3QoKXtyZXR1cm4gdGhpcy5fZm9jdXNSZXF1ZXN0LmFzT2JzZXJ2YWJsZSgpfWdldCBmb2N1c0NoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c0NoYW5nZS5hc09ic2VydmFi''@;'; put 'put ''bGUoKX1maW5kU2libGluZ3MoaCl7cmV0dXJuIGgucGFyZW50P2gucGFyZW50LmNoaWxkcmVuOnRoaXMucm9vdE5vZGVNb2RlbHN9ZmluZExhc3RWaXNpYmxlSW5Ob2RlKGgpe2lmKCFoKXJldHVybiBudWxsO2lmKGguZXhwYW5kZWQmJmguY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IHY9aC5j''@;'; put 'put ''aGlsZHJlbjtyZXR1cm4gdGhpcy5maW5kTGFzdFZpc2libGVJbk5vZGUodlt2Lmxlbmd0aC0xXSl9cmV0dXJuIGh9ZmluZE5leHRGb2N1c2FibGUoaCl7aWYoIWgpcmV0dXJuIG51bGw7Y29uc3Qgdj10aGlzLmZpbmRTaWJsaW5ncyhoKSx5PXYuaW5kZXhPZihoKTtyZXR1cm4geTx2Lmxlbmd0''@;'; put 'put ''aC0xP3ZbeSsxXTp5PT09di5sZW5ndGgtMT90aGlzLmZpbmROZXh0Rm9jdXNhYmxlKGgucGFyZW50KTpudWxsfWZpbmRMYXN0VmlzaWJsZUluVHJlZSgpe3JldHVybiB0aGlzLmZpbmRMYXN0VmlzaWJsZUluTm9kZSh0aGlzLnJvb3ROb2RlTW9kZWxzJiZ0aGlzLnJvb3ROb2RlTW9kZWxzLmxl''@;'; put 'put ''bmd0aCYmdGhpcy5yb290Tm9kZU1vZGVsc1t0aGlzLnJvb3ROb2RlTW9kZWxzLmxlbmd0aC0xXSl9ZmluZE5vZGVBYm92ZShoKXtpZighaClyZXR1cm4gbnVsbDtjb25zdCB2PXRoaXMuZmluZFNpYmxpbmdzKGgpLHk9di5pbmRleE9mKGgpO3JldHVybiAwPT09eT9oLnBhcmVudDp5PjA/dGhp''@;'; put 'put ''cy5maW5kTGFzdFZpc2libGVJbk5vZGUodlt5LTFdKTpudWxsfWZpbmROb2RlQmVsb3coaCl7cmV0dXJuIGg/aC5leHBhbmRlZCYmaC5jaGlsZHJlbi5sZW5ndGg+MD9oLmNoaWxkcmVuWzBdOnRoaXMuZmluZE5leHRGb2N1c2FibGUoaCk6bnVsbH1maW5kRGVzY2VuZGVudE5vZGVTdGFydHNX''@;'; put 'put ''aXRoKGgsdil7aWYodi5leHBhbmRlZCYmdi5jaGlsZHJlbi5sZW5ndGg+MClmb3IoY29uc3QgeSBvZiB2LmNoaWxkcmVuKXtjb25zdCBDPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGgseSk7aWYoQylyZXR1cm4gQ31yZXR1cm4gbnVsbH1maW5kU2libGluZ05vZGVTdGFydHNXaXRoKGgsdil7''@;'; put 'put ''Y29uc3QgeT10aGlzLmZpbmRTaWJsaW5ncyh2KTtmb3IobGV0IEk9eS5pbmRleE9mKHYpKzE7STx5Lmxlbmd0aDtJKyspe2NvbnN0IGNlPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGgseVtJXSk7aWYoY2UpcmV0dXJuIGNlfXJldHVybiBudWxsfWZpbmRSb290Tm9kZVN0YXJ0c1dpdGgoaCx2''@;'; put 'put ''KXtmb3IoY29uc3QgeSBvZiB0aGlzLnJvb3ROb2RlTW9kZWxzKXtpZih2LnBhcmVudCYmdi5wYXJlbnQ9PT15KWNvbnRpbnVlO2NvbnN0IEM9dGhpcy5maW5kTm9kZVN0YXJ0c1dpdGgoaCx5KTtpZihDKXJldHVybiBDfXJldHVybiBudWxsfWZpbmROb2RlU3RhcnRzV2l0aChoLHYpe3JldHVy''@;'; put 'put ''biB2P3YudGV4dENvbnRlbnQuc3RhcnRzV2l0aChoKT92OnRoaXMuZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aChoLHYpOm51bGx9ZmluZENsb3Nlc3ROb2RlU3RhcnRzV2l0aChoLHYpe2lmKCF2KXJldHVybiBudWxsO2NvbnN0IHk9dGhpcy5maW5kRGVzY2VuZGVudE5vZGVTdGFydHNX''@;'; put 'put ''aXRoKGgsdik7aWYoeSlyZXR1cm4geTtjb25zdCBDPXRoaXMuZmluZFNpYmxpbmdOb2RlU3RhcnRzV2l0aChoLHYpO3JldHVybiBDfHwodGhpcy5maW5kUm9vdE5vZGVTdGFydHNXaXRoKGgsdil8fHRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGgsdi5wYXJlbnQpKX1mb2N1c05vZGUoaCl7aCYm''@;'; put 'put ''dGhpcy5fZm9jdXNSZXF1ZXN0Lm5leHQoaC5ub2RlSWQpfWJyb2FkY2FzdEZvY3VzZWROb2RlKGgpe3RoaXMuZm9jdXNlZE5vZGVJZCE9PWgmJih0aGlzLmZvY3VzZWROb2RlSWQ9aCx0aGlzLl9mb2N1c0NoYW5nZS5uZXh0KGgpKX1mb2N1c1BhcmVudChoKXtoJiZ0aGlzLmZvY3VzTm9kZSho''@;'; put 'put ''LnBhcmVudCl9Zm9jdXNGaXJzdFZpc2libGVOb2RlKCl7dGhpcy5mb2N1c05vZGUodGhpcy5yb290Tm9kZU1vZGVscyYmdGhpcy5yb290Tm9kZU1vZGVsc1swXSl9Zm9jdXNMYXN0VmlzaWJsZU5vZGUoKXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRMYXN0VmlzaWJsZUluVHJlZSgpKX1mb2N1''@;'; put 'put ''c05vZGVBYm92ZShoKXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmROb2RlQWJvdmUoaCkpfWZvY3VzTm9kZUJlbG93KGgpe3RoaXMuZm9jdXNOb2RlKHRoaXMuZmluZE5vZGVCZWxvdyhoKSl9Zm9jdXNOb2RlU3RhcnRzV2l0aChoLHYpe3RoaXMuZm9jdXNOb2RlKHRoaXMuZmluZENsb3Nlc3RO''@;'; put 'put ''b2RlU3RhcnRzV2l0aChoLHYpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgUlJlIGV4dGVuZHMgWXlle2NvbnN0cnVjdG9yKGcpe3N1cGVy''@;'; put 'put ''KCksdGhpcy5wYXJlbnQ9ZyxnJiZnLl9hZGRDaGlsZCh0aGlzKSx0aGlzLmNoaWxkcmVuPVtdfV9hZGRDaGlsZChnKXt0aGlzLmNoaWxkcmVuLnB1c2goZyl9X3JlbW92ZUNoaWxkKGcpe2NvbnN0IGg9dGhpcy5jaGlsZHJlbi5pbmRleE9mKGcpO2g+LTEmJnRoaXMuY2hpbGRyZW4uc3BsaWNl''@;'; put 'put ''KGgsMSl9ZGVzdHJveSgpe3RoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5fcmVtb3ZlQ2hpbGQodGhpcyksc3VwZXIuZGVzdHJveSgpfX1sZXQgZk89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmVsPWh9YWN0aXZhdGUoKXt0aGlzLmVsLm5hdGl2ZUVsZW1lbnQmJnRoaXMuZWwu''@;'; put 'put ''bmF0aXZlRWxlbWVudC5jbGljayYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsOCwiY2xyLXRyZWVub2RlLWxp''@;'; put 'put ''bmsiXV19KSxkfSkoKSxfZz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqLGNlLF9lLFJlKXt0aGlzLm5vZGVJZD1oLHRoaXMucGxhdGZvcm1JZD12LHRoaXMuZm9yVHlwZUFoZWFkUHJvdmlkZXI9Qyx0aGlzLmZlYXR1cmVzU2VydmljZT1JLHRoaXMuZXhwYW5kU2Vydmlj''@;'; put 'put ''ZT1qLHRoaXMuY29tbW9uU3RyaW5ncz1jZSx0aGlzLmZvY3VzTWFuYWdlcj1fZSx0aGlzLlNUQVRFUz1NdSx0aGlzLnNraXBFbWl0Q2hhbmdlPSExLHRoaXMuaXNNb2RlbExvYWRpbmc9ITEsdGhpcy50eXBlQWhlYWRLZXlFdmVudD1uZXcgJGUsdGhpcy50eXBlQWhlYWRLZXlCdWZmZXI9IiIs''@;'; put 'put ''dGhpcy5zZWxlY3RlZENoYW5nZT1uZXcgZm4oITEpLHRoaXMuZXhwYW5kZWRDaGFuZ2U9bmV3IGZuLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmNvbnRlbnRDb250YWluZXJUYWJpbmRleD0tMSx0aGlzLl9tb2RlbD10aGlzLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24/UmUudmlldz9S''@;'; put 'put ''ZS52aWV3LmNvbnRleHQuY2xyTW9kZWw6UmUuX2xWaWV3WzhdLmNsck1vZGVsOm5ldyBSUmUoeT95Ll9tb2RlbDpudWxsKSx0aGlzLl9tb2RlbC5ub2RlSWQ9dGhpcy5ub2RlSWR9aXNFeHBhbmRhYmxlKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuZXhwYW5kYWJsZT90aGlzLmV4cGFuZGFibGU6''@;'; put 'put ''ISF0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kYWJsZXx8dGhpcy5pc1BhcmVudH1pc1NlbGVjdGFibGUoKXtyZXR1cm4gdGhpcy5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fbW9kZWwuc2VsZWN0ZWQudmFsdWV9c2V0IHNlbGVjdGVkKGgp''@;'; put 'put ''e3RoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGU9ITAsbnVsbD09aCYmKGg9TXUuVU5TRUxFQ1RFRCksImJvb2xlYW4iPT10eXBlb2YgaCYmKGg9aD9NdS5TRUxFQ1RFRDpNdS5VTlNFTEVDVEVEKSx0aGlzLnNraXBFbWl0Q2hhbmdlPSEwLHRoaXMuX21vZGVsLnNldFNlbGVjdGVkKGgs''@;'; put 'put ''dGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXIsdGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXIpLHRoaXMuc2tpcEVtaXRDaGFuZ2U9ITF9Z2V0IGFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLmlzU2VsZWN0YWJsZSgpP3RoaXMuX21vZGVsLnNlbGVjdGVkLnZhbHVlPT09TXUuU0VMRUNURUQ6''@;'; put 'put ''bnVsbH1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkfXNldCBleHBhbmRlZChoKXt0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9aH1uZ09uSW5pdCgpe3RoaXMuX21vZGVsLmV4cGFuZGVkPXRoaXMuZXhwYW5kZWQsdGhpcy5zdWJzY3JpcHRpb25z''@;'; put 'put ''LnB1c2godGhpcy5fbW9kZWwuc2VsZWN0ZWQucGlwZShtMigoKT0+IXRoaXMuc2tpcEVtaXRDaGFuZ2UpKS5zdWJzY3JpYmUoaD0+e3RoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kQ2hhbmdlLnN1''@;'; put 'put ''YnNjcmliZShoPT57dGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KGgpLHRoaXMuX21vZGVsLmV4cGFuZGVkPWh9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb2N1c01hbmFnZXIuZm9jdXNSZXF1ZXN0LnN1YnNjcmliZShoPT57dGhpcy5ub2RlSWQ9PT1oJiZ0aGlzLmZvY3VzVHJl''@;'; put 'put ''ZU5vZGUoKX0pLHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5jaGVja1RhYkluZGV4KGgpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuX21vZGVsLmxvYWRpbmckLnBpcGUoUmsoMCkpLnN1YnNjcmliZShoPT50aGlzLmlzTW9kZWxMb2Fk''@;'; put 'put ''aW5nPWgpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLmZvclR5cGVBaGVhZFByb3ZpZGVyJiYodGhpcy5fbW9kZWwudGV4dENvbnRlbnQ9dGhpcy5mb3JUeXBlQWhlYWRQcm92aWRlci50ZXh0Q29udGVudCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnR5cGVBaGVhZEtleUV2ZW50''@;'; put 'put ''LnBpcGUoUmsoMjAwKSkuc3Vic2NyaWJlKGg9Pnt0aGlzLmZvY3VzTWFuYWdlci5mb2N1c05vZGVTdGFydHNXaXRoKGgsdGhpcy5fbW9kZWwpLHRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIifSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX21vZGVsLmRlc3Ryb3koKSx0aGlzLnN1YnNjcmlwdGlv''@;'; put 'put ''bnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfWdldCB0cmVlTm9kZUxpbmsoKXtyZXR1cm4gdGhpcy50cmVlTm9kZUxpbmtMaXN0JiZ0aGlzLnRyZWVOb2RlTGlua0xpc3QuZmlyc3R9c2V0VGFiSW5kZXgoaCl7dGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXg9aCx0aGlzLmNvbnRl''@;'; put 'put ''bnRDb250YWluZXIubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixoKX1jaGVja1RhYkluZGV4KGgpe2FsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMubm9kZUlkIT09aCYmLTEhPT10aGlzLmNvbnRlbnRDb250YWluZXJUYWJpbmRleCYmdGhpcy5zZXRUYWJJbmRleCgtMSl9''@;'; put 'put ''Zm9jdXNUcmVlTm9kZSgpe2NvbnN0IGg9dGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7YWwodGhpcy5wbGF0Zm9ybUlkKSYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWgmJih0aGlzLnNldFRhYkluZGV4KDApLGguZm9jdXMoKSxoLnNjcm9sbEludG9WaWV3KHtibG9jazoi''@;'; put 'put ''bmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pKX1icm9hZGNhc3RGb2N1c09uQ29udGFpbmVyKCl7dGhpcy5mb2N1c01hbmFnZXIuYnJvYWRjYXN0Rm9jdXNlZE5vZGUodGhpcy5ub2RlSWQpfW9uS2V5RG93bihoKXtzd2l0Y2goa3QoaCksTXQoaC5rZXkpKXtjYXNlIEdlLkFycm93VXA6dGhp''@;'; put 'put ''cy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlQWJvdmUodGhpcy5fbW9kZWwpO2JyZWFrO2Nhc2UgR2UuQXJyb3dEb3duOnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTticmVhaztjYXNlIEdlLkFycm93UmlnaHQ6dGhpcy5leHBhbmRPckZvY3VzRmlyc3RDaGls''@;'; put 'put ''ZCgpO2JyZWFrO2Nhc2UgR2UuQXJyb3dMZWZ0OnRoaXMuY29sbGFwc2VPckZvY3VzUGFyZW50KCk7YnJlYWs7Y2FzZSBHZS5Ib21lOmgucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzTWFuYWdlci5mb2N1c0ZpcnN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIEdlLkVuZDpoLnByZXZlbnRE''@;'; put 'put ''ZWZhdWx0KCksdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNMYXN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIEdlLkVudGVyOnRoaXMudG9nZ2xlRXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpO2JyZWFrO2Nhc2UgR2UuU3BhY2U6Y2FzZSBHZS5TcGFjZWJhcjpoLnByZXZlbnREZWZhdWx0KCksdGhp''@;'; put 'put ''cy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7YnJlYWs7ZGVmYXVsdDppZih0aGlzLl9tb2RlbC50ZXh0Q29udGVudCYmZnVuY3Rpb24gYXQoZCl7Y29uc3QgZz1kLmtleTtyZXR1cm4gZy50b0xvd2VyQ2FzZSgpIT09Zy50b1VwcGVyQ2FzZSgpfHxnPj0iMCImJmc8PSI5In0oaCkp''@;'; put 'put ''cmV0dXJuIHRoaXMudHlwZUFoZWFkS2V5QnVmZmVyKz1oLmtleSx2b2lkIHRoaXMudHlwZUFoZWFkS2V5RXZlbnQubmV4dCh0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcil9dGhpcy50eXBlQWhlYWRLZXlCdWZmZXI9IiJ9Z2V0IGlzUGFyZW50KCl7cmV0dXJuIHRoaXMuX21vZGVsLmNoaWxkcmVu''@;'; put 'put ''JiZ0aGlzLl9tb2RlbC5jaGlsZHJlbi5sZW5ndGg+MH10b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCl7dGhpcy5pc0V4cGFuZGFibGUoKSYmIXRoaXMuaXNTZWxlY3RhYmxlKCk/dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSF0aGlzLmV4cGFuZGVkOnRoaXMudHJpZ2dlckRlZmF1''@;'; put 'put ''bHRBY3Rpb24oKX1leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpe3RoaXMuZXhwYW5kZWQ/dGhpcy5pc1BhcmVudCYmdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlQmVsb3codGhpcy5fbW9kZWwpOnRoaXMuaXNFeHBhbmRhYmxlKCkmJih0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9ITAp''@;'; put 'put ''fWNvbGxhcHNlT3JGb2N1c1BhcmVudCgpe3RoaXMuZXhwYW5kZWQ/dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSExOnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzUGFyZW50KHRoaXMuX21vZGVsKX10cmlnZ2VyRGVmYXVsdEFjdGlvbigpe3RoaXMudHJlZU5vZGVMaW5rP3RoaXMudHJlZU5v''@;'; put 'put ''ZGVMaW5rLmFjdGl2YXRlKCk6dGhpcy5pc1NlbGVjdGFibGUoKSYmdGhpcy5fbW9kZWwudG9nZ2xlU2VsZWN0aW9uKHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRDApLEt0KEUyKSxLdChkLDEy''@;'; put 'put ''KSxLdCh5UmUsMTApLEt0KElTKSxLdChlZiksS3QoRmEpLEt0KGZoZSksS3QoeHMpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXRyZWUtbm9kZSJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LGZPLDQpLDImaCl7bGV0IEM7''@;'; put 'put ''emkoQz1BaSgpKSYmKHYudHJlZU5vZGVMaW5rTGlzdD1DKX19LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAoJGNlLDcsX28pLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuY29udGVudENvbnRhaW5lcj15LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0''@;'; put 'put ''aW9uKGgsdil7MiZoJiZIaSgiY2xyLXRyZWUtbm9kZSIsITApfSxpbnB1dHM6e3NlbGVjdGVkOlsiY2xyU2VsZWN0ZWQiLCJzZWxlY3RlZCJdLGV4cGFuZGFibGU6WyJjbHJFeHBhbmRhYmxlIiwiZXhwYW5kYWJsZSJdLGV4cGFuZGVkOlsiY2xyRXhwYW5kZWQiLCJleHBhbmRlZCJdfSxvdXRw''@;'; put 'put ''dXRzOntzZWxlY3RlZENoYW5nZToiY2xyU2VsZWN0ZWRDaGFuZ2UiLGV4cGFuZGVkQ2hhbmdlOiJjbHJFeHBhbmRlZENoYW5nZSJ9LGZlYXR1cmVzOltnbyhbUmMsR3llLGVmLHtwcm92aWRlOnlnLHVzZUV4aXN0aW5nOmVmfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6dlMsZGVjbHM6MTIsdmFy''@;'; put 'put ''czo5LGNvbnN0czpbWyJyb2xlIiwidHJlZWl0ZW0iLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIiwzLCJrZXlkb3duIiwiZm9jdXMiXSxbImNvbnRlbnRDb250YWluZXIiLCIiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5cGUiLCJidXR0b24i''@;'; put 'put ''LCJ0YWJpbmRleCIsIi0xIiwiY2xhc3MiLCJjbHItdHJlZW5vZGUtY2FyZXQiLDMsImNsaWNrIiwiZm9jdXMiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXRyZWVub2RlLXNwaW5uZXItY29udGFpbmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1jaGVja2JveC13cmFwcGVyIGNsci10cmVl''@;'; put 'put ''bm9kZS1jaGVja2JveCIsNCwibmdJZiJdLFsxLCJjbHItdHJlZW5vZGUtY29udGVudCIsMywibW91c2Vkb3duIl0sWyJjbGFzcyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzEsImNsci10cmVlbm9kZS1jaGlsZHJlbiJdLFszLCJwYXJlbnQiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5''@;'; put 'put ''cGUiLCJidXR0b24iLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItdHJlZW5vZGUtY2FyZXQiLDMsImNsaWNrIiwiZm9jdXMiXSxbInNoYXBlIiwiYW5nbGUiLDEsImNsci10cmVlbm9kZS1jYXJldC1pY29uIl0sWzEsImNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciJdLFsxLCJjbHItdHJl''@;'; put 'put ''ZW5vZGUtc3Bpbm5lciIsInNwaW5uZXIiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLCJjbHItdHJlZW5vZGUtY2hlY2tib3giXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5cGUiLCJjaGVja2JveCIsInRhYmluZGV4IiwiLTEiLDEsImNsci1jaGVja2JveCIsMywiaWQiLCJjaGVja2Vk''@;'; put 'put ''IiwiaW5kZXRlcm1pbmF0ZSIsImNoYW5nZSIsImZvY3VzIl0sWzEsImNsci1jb250cm9sLWxhYmVsIiwzLCJmb3IiXSxbMSwiY2xyLXNyLW9ubHkiXSxbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKGR3KSx0dCgwLCJkaXYiLDAsMSksWm4oImtleWRvd24iLGZ1''@;'; put 'put ''bmN0aW9uKEMpe3JldHVybiB2Lm9uS2V5RG93bihDKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gdi5icm9hZGNhc3RGb2N1c09uQ29udGFpbmVyKCl9KSxubigyLHFjZSwyLDEsImJ1dHRvbiIsMiksbm4oMyxodywyLDAsImRpdiIsMyksbm4oNCxIbCwzLDQsImRpdiIsNCksdHQoNSwi''@;'; put 'put ''ZGl2Iiw1KSxabigibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiB2LmZvY3VzVHJlZU5vZGUoKX0pLFZpKDYpLG5uKDcsZXEsMywyLCJkaXYiLDYpLGl0KCkoKSx0dCg4LCJkaXYiLDcpLFZpKDksMSksVmkoMTAsMiksYnIoMTEsImNsci1yZWN1cnNpdmUtY2hpbGRyZW4iLDgpLGl0KCkp''@;'; put 'put ''LDImaCYmKEdpKCJhcmlhLWV4cGFuZGVkIix2LmlzRXhwYW5kYWJsZSgpP3YuZXhwYW5kZWQ6bnVsbCkoImFyaWEtc2VsZWN0ZWQiLHYuYXJpYVNlbGVjdGVkKSxzdCgyKSx4dCgibmdJZiIsdi5pc0V4cGFuZGFibGUoKSYmIXYuaXNNb2RlbExvYWRpbmcmJiF2LmV4cGFuZFNlcnZpY2UubG9h''@;'; put 'put ''ZGluZyksc3QoMSkseHQoIm5nSWYiLHYuZXhwYW5kU2VydmljZS5sb2FkaW5nfHx2LmlzTW9kZWxMb2FkaW5nKSxzdCgxKSx4dCgibmdJZiIsdi5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZSksc3QoMykseHQoIm5nSWYiLHYuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUpLHN0KDEpLHh0''@;'; put 'put ''KCJAdG9nZ2xlQ2hpbGRyZW5BbmltIix2LmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ/ImV4cGFuZGVkIjoiY29sbGFwc2VkIiksR2koInJvbGUiLHYuaXNFeHBhbmRhYmxlKCkmJiF2LmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24/Imdyb3VwIjpudWxsKSxzdCgzKSx4dCgicGFyZW50Iix2Ll9t''@;'; put 'put ''b2RlbCkpfSxkZXBlbmRlbmNpZXM6W1d5ZSxCbyxrc10sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbSmMoInRvZ2dsZUNoaWxkcmVuQW5pbSIsW2J1KCJjb2xsYXBzZWQgPT4gZXhwYW5kZWQiLFt4bCh7aGVpZ2h0OjB9KSxmYygyMDAseGwoe2hlaWdodDoiKiJ9KSldKSxidSgi''@;'; put 'put ''ZXhwYW5kZWQgPT4gY29sbGFwc2VkIixbeGwoe2hlaWdodDoiKiJ9KSxmYygyMDAseGwoe2hlaWdodDowfSkpXSksR3koImV4cGFuZGVkIix4bCh7aGVpZ2h0OiIqIiwib3ZlcmZsb3cteSI6InZpc2libGUifSkpLEd5KCJjb2xsYXBzZWQiLHhsKHtoZWlnaHQ6MH0pKV0pXX19KSxkfSkoKSxT''@;'; put 'put ''dj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix7bmF0aXZlRWxlbWVudDp5fSxDLEkpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlPWgsdGhpcy5mb2N1c01hbmFnZXJTZXJ2aWNlPXYsdGhpcy5zdWJzY3JpcHRpb25zPVtdO2NvbnN0IGo9SS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+cjgoeSwi''@;'; put 'put ''Zm9jdXNpbiIpLnN1YnNjcmliZShjZT0+e2NlLnRhcmdldD09PXkmJih0aGlzLmZvY3VzTWFuYWdlclNlcnZpY2UuZm9jdXNGaXJzdFZpc2libGVOb2RlKCksQy5yZW1vdmVBdHRyaWJ1dGUoeSwidGFiaW5kZXgiKSl9KSk7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goail9c2V0IGxhenkoaCl7''@;'; put 'put ''dGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXI9IWh9Z2V0IGlzTXVsdGlTZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUmJnRoaXMucm9vdE5vZGVzLmxlbmd0aD4wfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc2V0Um9vdE5vZGVzKCksdGhpcy5z''@;'; put 'put ''dWJzY3JpcHRpb25zLnB1c2godGhpcy5yb290Tm9kZXMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNldFJvb3ROb2RlcygpfSkpfXNldFJvb3ROb2Rlcygpe3RoaXMuZm9jdXNNYW5hZ2VyU2VydmljZS5yb290Tm9kZU1vZGVscz10aGlzLnJvb3ROb2Rlcy5tYXAoaD0+aC5fbW9kZWwp''@;'; put 'put ''LmZpbHRlcihoPT4haC5wYXJlbnQpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoSVMpLEt0KGZoZSksS3QoX28pLEt0KERhKSxLdChk''@;'; put 'put ''bCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdHJlZSJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LF9nLDQpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYucm9vdE5vZGVzPUMpfX0saG9zdEF0dHJzOlsidGFiaW5kZXgi''@;'; put 'put ''LCIwIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkdpKCJyb2xlIiwidHJlZSIpKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsdi5pc011bHRpU2VsZWN0YWJsZSl9LGlucHV0czp7bGF6eTpbImNsckxhenkiLCJsYXp5Il19LGZlYXR1cmVzOltnbyhbR3llLGZo''@;'; put 'put ''ZV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbMywiY2hpbGRyZW4iLDQsIm5nSWYiXSxbMywiY2hpbGRyZW4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLFZpKDApLG5uKDEsR0wsMSwxLCJjbHItcmVjdXJzaXZlLWNoaWxkcmVu''@;'; put 'put ''IiwwKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLHYuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbikpfSxkZXBlbmRlbmNpZXM6W1d5ZSxCb10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksRlJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucygkNyl9fXJldHVybiBkLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxacyxZZmVdXX0pLGR9KSgpLEhSZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOlt4UmUsRFJlLEZSZV19KSxkfSkoKTtjbGFzcyBReWV7c3RhdGljIGxpbmtQYXJlbnQoZyxoLHYpe2cuZm9yRWFjaCh5PT55W3ZdPWgpfXN0YXRpYyBsaW5rVmVydGljYWwoZyxoPSEw''@;'; put 'put ''KXtnLmZvckVhY2goKHYseSk9Pnt5PjAmJih2LnVwPWdbeS0xXSkseTxnLmxlbmd0aC0xJiYodi5kb3duPWdbeSsxXSl9KSxoJiZnLmxlbmd0aD4xJiYoZ1swXS51cD1nW2cubGVuZ3RoLTFdLGdbZy5sZW5ndGgtMV0uZG93bj1nWzBdKX19ZnVuY3Rpb24gSnllKGQsZyxoKXtyZXR1cm4gRi5j''@;'; put 'put ''cmVhdGUodj0+e2codik7Y29uc3QgeT1kLnN1YnNjcmliZSh2KTtyZXR1cm4oKT0+e3kudW5zdWJzY3JpYmUoKSxoJiZoKHYpfX0pfWxldCBoaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksail7dGhpcy5pZD1oLHRoaXMucmVuZGVyZXI9dix0aGlzLnBhcmVudD15LHRo''@;'; put 'put ''aXMudG9nZ2xlU2VydmljZT1DLHRoaXMuZm9jdXNTZXJ2aWNlPUksdGhpcy5wbGF0Zm9ybUlkPWosdGhpcy5fdW5saXN0ZW5GdW5jcz1bXSx0aGlzLmZvY3VzQmFja09uVHJpZ2dlcj0hMSx0aGlzLnJlc2V0Q2hpbGRyZW4oKSx0aGlzLm1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCksdGhpcy5w''@;'; put 'put ''YXJlbnR8fHRoaXMuaGFuZGxlUm9vdEZvY3VzKCl9bW92ZVRvRmlyc3RJdGVtV2hlbk9wZW4oKXtjb25zdCBoPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZSh2PT57diYmdGhpcy50b2dnbGVTZXJ2aWNlLm9yaWdpbmFsRXZlbnQmJnNldFRpbWVvdXQoKCk9Pnt0aGlz''@;'; put 'put ''LmZvY3VzU2VydmljZS5tb3ZlVG8odGhpcyksdGhpcy5mb2N1c1NlcnZpY2UubW92ZSh0aGlzLnBhcmVudD9vMy5SSUdIVDpvMy5ET1dOKX0pfSk7dGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKCgpPT5oLnVuc3Vic2NyaWJlKCkpfWhhbmRsZVJvb3RGb2N1cygpe2NvbnN0IGg9dGhpcy50b2dn''@;'; put 'put ''bGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKHY9Pnt2fHwodGhpcy5mb2N1c1NlcnZpY2UucmVzZXQodGhpcyksdGhpcy5mb2N1c0JhY2tPblRyaWdnZXImJnRoaXMuZm9jdXMoKSksdGhpcy5mb2N1c0JhY2tPblRyaWdnZXI9dn0pO3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKT0+''@;'; put 'put ''aC51bnN1YnNjcmliZSgpKX1nZXQgdHJpZ2dlcigpe3JldHVybiB0aGlzLl90cmlnZ2VyfXNldCB0cmlnZ2VyKGgpe3RoaXMuX3RyaWdnZXI9aCx0aGlzLnBhcmVudD90aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5hcnJvd3JpZ2h0Iix2''@;'; put 'put ''PT50aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KHYpKSk6KHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJrZXlkb3duLmFycm93dXAiLHY9PnRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQodikpKSx0aGlzLl91bmxpc3Rl''@;'; put 'put ''bkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5hcnJvd2Rvd24iLHY9PnRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQodikpKSx0aGlzLmZvY3VzU2VydmljZS5saXN0ZW5Ub0Fycm93S2V5cyhoKSl9Z2V0IGNvbnRhaW5lcigpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9jb250YWluZXJ9c2V0IGNvbnRhaW5lcihoKXt0aGlzLl9jb250YWluZXI9aCx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi50YWIiLHY9PnRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQodikpKSx0aGlzLnBhcmVudD90''@;'; put 'put ''aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5lc2MiLHY9Pnt0aGlzLmZvY3VzU2VydmljZS5tb3ZlKG8zLkxFRlQpLHYuc3RvcFByb3BhZ2F0aW9uKCl9KSk6KHRoaXMuZm9jdXNTZXJ2aWNlLnJlZ2lzdGVyQ29udGFpbmVyKGgpLHRoaXMu''@;'; put 'put ''X3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJrZXlkb3duLmVzYyIsdj0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudCh2KSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJibHVyIix2PT57dGhpcy5j''@;'; put 'put ''aGlsZHJlbi5waXBlKFQ1KDEpKS5zdWJzY3JpYmUoQz0+Qy5mb3JFYWNoKEk9PkkuYmx1cigpKSk7Y29uc3QgeT12LnJlbGF0ZWRUYXJnZXR8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7eSYmYWwodGhpcy5wbGF0Zm9ybUlkKSYmKGguY29udGFpbnMoeSl8fHk9PT10aGlzLnRyaWdnZXIpfHwo''@;'; put 'put ''dGhpcy5mb2N1c0JhY2tPblRyaWdnZXI9ITEsdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITEpfSkpKX1mb2N1cygpe3RoaXMudHJpZ2dlciYmYWwodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50cmlnZ2VyLmZvY3VzKCl9Ymx1cigpe3RoaXMudHJpZ2dlciYmYWwodGhpcy5wbGF0Zm9ybUlkKSYm''@;'; put 'put ''dGhpcy50cmlnZ2VyLmJsdXIoKX1hY3RpdmF0ZSgpe2FsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5jbGljaygpfW9wZW5BbmRHZXRDaGlsZHJlbigpe3JldHVybiBKeWUodGhpcy5jaGlsZHJlbiwoKT0+dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITApfWNsb3NlQW5kR2V0VGhp''@;'; put 'put ''cygpe3JldHVybiBKeWUoVjAodGhpcyksKCk9PnRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExKX1yZXNldENoaWxkcmVuKCl7dGhpcy5jaGlsZHJlbj1uZXcgaTgoMSksdGhpcy5wYXJlbnQ/dGhpcy5yaWdodD10aGlzLm9wZW5BbmRHZXRDaGlsZHJlbigpLnBpcGUocHQoaD0+aFswXSkpOih0''@;'; put 'put ''aGlzLmRvd249dGhpcy5vcGVuQW5kR2V0Q2hpbGRyZW4oKS5waXBlKHB0KGg9PmhbMF0pKSx0aGlzLnVwPXRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShwdChoPT5oW2gubGVuZ3RoLTFdKSkpfWFkZENoaWxkcmVuKGgpe1F5ZS5saW5rVmVydGljYWwoaCksdGhpcy5wYXJlbnQmJlF5''@;'; put 'put ''ZS5saW5rUGFyZW50KGgsdGhpcy5jbG9zZUFuZEdldFRoaXMoKSxvMy5MRUZUKSx0aGlzLmNoaWxkcmVuLm5leHQoaCl9bmdPbkRlc3Ryb3koKXt0aGlzLl91bmxpc3RlbkZ1bmNzLmZvckVhY2goaD0+aCgpKSx0aGlzLmZvY3VzU2VydmljZS5kZXRhY2hMaXN0ZW5lcnMoKX19cmV0dXJuIGQu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoRDApLEVpKERhKSxFaShkLDEyKSxFaShFdCksRWkoc3EpLEVpKEUyKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgTlJlPXN5ZShoaGUpO2xldCBIWj0o''@;'; put 'put ''KCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hhbmdlcz1uZXcgJGV9Z2V0IGNoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKX1jbG9zZU1lbnVzKCl7dGhpcy5fY2hhbmdlcy5uZXh0KCExKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgalJlPXtwcm92aWRlOkhaLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gVlJlKGQpe3JldHVybiBkfHxuZXcgSFp9LGRlcHM6W1tuZXcgSTQsbmV3IHlkLEhaXV19''@;'; put 'put ''O2xldCBNdj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMucGFyZW50PWgsdGhpcy50b2dnbGVTZXJ2aWNlPXYsdGhpcy5jZHI9eSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5pc01lbnVDbG9zYWJsZT0hMCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChDLmNoYW5n''@;'; put 'put ''ZXMuc3Vic2NyaWJlKEk9PnRoaXMudG9nZ2xlU2VydmljZS5vcGVuPUkpKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh2Lm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKCgpPT50aGlzLmNkci5tYXJrRm9yQ2hlY2soKSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+''@;'; put 'put ''aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZCwxMiksS3QoRXQpLEt0KGQxKSxLdChIWikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZHJvcGRvd24iXV0saG9zdFZhcnM6NCxob3N0''@;'; put 'put ''QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJkcm9wZG93biIsITApKCJvcGVuIix2LnRvZ2dsZVNlcnZpY2Uub3Blbil9LGlucHV0czp7aXNNZW51Q2xvc2FibGU6WyJjbHJDbG9zZU1lbnVPbkl0ZW1DbGljayIsImlzTWVudUNsb3NhYmxlIl19LGZlYXR1cmVzOltnbyhbalJlLHtw''@;'; put 'put ''cm92aWRlOiRMLHVzZUV4aXN0aW5nOl9vfSx4T2UsRXQsTlJlXSldLG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTtjb25zdCBaUmU9W1JjLHtwcm92aWRl''@;'; put 'put ''OnVxLHVzZUNsYXNzOigoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pZD1oLHRoaXMuZWw9dix0aGlzLnJlbmRlcmVyPXksdGhpcy5wbGF0Zm9ybUlkPUMsdGhpcy5kaXNhYmxlZD0hMSx5LnNldEF0dHJpYnV0ZSh2Lm5hdGl2ZUVsZW1lbnQsImlkIixoKSx5LnNldEF0''@;'; put 'put ''dHJpYnV0ZSh2Lm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiwiLTEiKX1mb2N1cygpe2FsKHRoaXMucGxhdGZvcm1JZCkmJih0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiwiMCIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygp''@;'; put 'put ''LHRoaXMuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciIsaW5saW5lOiJuZWFyZXN0In0pKX1ibHVyKCl7YWwodGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxl''@;'; put 'put ''bWVudCwidGFiaW5kZXgiLCItMSIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5ibHVyKCkpfWFjdGl2YXRlKCl7YWwodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVp''@;'; put 'put ''KEQwKSxFaShfbyksRWkoRGEpLEVpKEUyKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCl9XTtsZXQgaE89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuZHJvcGRvd249aCx0aGlzLmVsPXYsdGhpcy5fZHJvcGRv''@;'; put 'put ''d25TZXJ2aWNlPXksdGhpcy5yZW5kZXJlcj1DLHRoaXMuZm9jdXNhYmxlSXRlbT1JLHRoaXMuc2V0QnlEZXByZWNhdGVkRGlzYWJsZWQ9ITF9c2V0IGRpc2FibGVkKGgpe3RoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZD0hIWh8fCIiPT09aH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5m''@;'; put 'put ''b2N1c2FibGVJdGVtLmRpc2FibGVkfXNldCBkaXNhYmxlZERlcHJlY2F0ZWQoaCl7dGhpcy5mb2N1c2FibGVJdGVtLmRpc2FibGVkPSEhaHx8IiI9PT1oLHRoaXMuc2V0QnlEZXByZWNhdGVkRGlzYWJsZWQ9ITB9Z2V0IGRpc2FibGVkRGVwcmVjYXRlZCgpe3JldHVybiB0aGlzLmZvY3VzYWJs''@;'; put 'put ''ZUl0ZW0uZGlzYWJsZWR9c2V0IGRyb3Bkb3duSXRlbUlkKGgpe3RoaXMuZm9jdXNhYmxlSXRlbS5pZD1ofWdldCBkcm9wZG93bkl0ZW1JZCgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW0uaWR9bmdBZnRlclZpZXdJbml0KCl7dGhpcy51bmxpc3Rlbj10aGlzLnJlbmRlcmVyLmxpc3Rlbih0''@;'; put 'put ''aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImNsaWNrIiwoKT0+dGhpcy5vbkRyb3Bkb3duSXRlbUNsaWNrKCkpfW9uRHJvcGRvd25JdGVtQ2xpY2soKXt0aGlzLmRyb3Bkb3duLmlzTWVudUNsb3NhYmxlJiYhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiZGlzYWJsZWQi''@;'; put 'put ''KSYmdGhpcy5fZHJvcGRvd25TZXJ2aWNlLmNsb3NlTWVudXMoKX1uZ09uRGVzdHJveSgpe3RoaXMudW5saXN0ZW4mJnRoaXMudW5saXN0ZW4oKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTXYpLEt0KF9vKSxLdChIWiksS3QoRGEpLEt0KHVx''@;'; put 'put ''KSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsckRyb3Bkb3duSXRlbSIsIiJdXSxob3N0VmFyczo4LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJyb2xlIiwibWVudWl0ZW0iKSgiYXJpYS1kaXNhYmxlZCIsdi5kaXNhYmxlZCkoImRpc2Fi''@;'; put 'put ''bGVkIix2LmRpc2FibGVkJiZ2LnNldEJ5RGVwcmVjYXRlZERpc2FibGVkPyIiOm51bGwpKCJpZCIsdi5kcm9wZG93bkl0ZW1JZCksSGkoImRpc2FibGVkIix2LmRpc2FibGVkKSgiZHJvcGRvd24taXRlbSIsITApKX0saW5wdXRzOntkaXNhYmxlZDpbImNsckRpc2FibGVkIiwiZGlzYWJsZWQi''@;'; put 'put ''XSxkaXNhYmxlZERlcHJlY2F0ZWQ6WyJkaXNhYmxlZCIsImRpc2FibGVkRGVwcmVjYXRlZCJdLGRyb3Bkb3duSXRlbUlkOlsiaWQiLCJkcm9wZG93bkl0ZW1JZCJdfSxmZWF0dXJlczpbZ28oW1pSZV0pXX0pLGR9KSgpO3ZhciBwMD0oKCk9PihmdW5jdGlvbihkKXtkW2QuUklHSFRfQ0VOVEVS''@;'; put 'put ''PTBdPSJSSUdIVF9DRU5URVIiLGRbZC5SSUdIVF9UT1A9MV09IlJJR0hUX1RPUCIsZFtkLlJJR0hUX0JPVFRPTT0yXT0iUklHSFRfQk9UVE9NIixkW2QuVE9QX0NFTlRFUj0zXT0iVE9QX0NFTlRFUiIsZFtkLlRPUF9SSUdIVD00XT0iVE9QX1JJR0hUIixkW2QuVE9QX0xFRlQ9NV09IlRPUF9M''@;'; put 'put ''RUZUIixkW2QuQk9UVE9NX0NFTlRFUj02XT0iQk9UVE9NX0NFTlRFUiIsZFtkLkJPVFRPTV9SSUdIVD03XT0iQk9UVE9NX1JJR0hUIixkW2QuQk9UVE9NX0xFRlQ9OF09IkJPVFRPTV9MRUZUIixkW2QuTEVGVF9DRU5URVI9OV09IkxFRlRfQ0VOVEVSIixkW2QuTEVGVF9UT1A9MTBdPSJMRUZU''@;'; put 'put ''X1RPUCIsZFtkLkxFRlRfQk9UVE9NPTExXT0iTEVGVF9CT1RUT00ifShwMHx8KHAwPXt9KSkscDApKSgpO2NsYXNzIFdSZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmVsZW1lbnQ9Zyx0aGlzLnNjcm9sbGFibGVFbGVtZW50cz1bXSx0aGlzLmJvdW5kT25TY3JvbGxMaXN0ZW5lcj10aGlzLmVtaXRT''@;'; put 'put ''Y3JvbGxFdmVudC5iaW5kKHRoaXMpLGcuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixnLnN0eWxlLnRvcD0wLGcuc3R5bGUuYm90dG9tPSJhdXRvIixnLnN0eWxlLmxlZnQ9MCxnLnN0eWxlLnJpZ2h0PSJhdXRvIn1hbmNob3IoZyxoLHYse29mZnNldFg6eT0wLG9mZnNldFk6Qz0wLHVzZUFu''@;'; put 'put ''Y2hvclBhcmVudDpJPSExfT17fSl7dGhpcy5hZGRTY3JvbGxFdmVudExpc3RlbmVycyhnKSxJJiYoZz1nLnBhcmVudE5vZGUpLGcuc3R5bGUucG9zaXRpb249InN0YXRpYyI7Y29uc3Qgaj1nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGNlPXRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu''@;'; put 'put ''dFJlY3QoKTtsZXQgX2U9ai5sZWZ0LWNlLmxlZnQreSxSZT1qLnRvcC1jZS50b3ArQztzd2l0Y2goaCl7Y2FzZSBwMC5MRUZUX1RPUDpjYXNlIHAwLlRPUF9MRUZUOmJyZWFrO2Nhc2UgcDAuVE9QX0NFTlRFUjpfZSs9ai53aWR0aC8yO2JyZWFrO2Nhc2UgcDAuVE9QX1JJR0hUOmNhc2UgcDAu''@;'; put 'put ''UklHSFRfVE9QOl9lKz1qLndpZHRoO2JyZWFrO2Nhc2UgcDAuTEVGVF9CT1RUT006Y2FzZSBwMC5CT1RUT01fTEVGVDpSZSs9ai5oZWlnaHQ7YnJlYWs7Y2FzZSBwMC5CT1RUT01fQ0VOVEVSOlJlKz1qLmhlaWdodCxfZSs9ai53aWR0aC8yO2JyZWFrO2Nhc2UgcDAuQk9UVE9NX1JJR0hUOmNh''@;'; put 'put ''c2UgcDAuUklHSFRfQk9UVE9NOlJlKz1qLmhlaWdodCxfZSs9ai53aWR0aDticmVhaztjYXNlIHAwLkxFRlRfQ0VOVEVSOlJlKz1qLmhlaWdodC8yO2JyZWFrO2Nhc2UgcDAuUklHSFRfQ0VOVEVSOlJlKz1qLmhlaWdodC8yLF9lKz1qLndpZHRofXN3aXRjaCh2KXtjYXNlIHAwLkxFRlRfVE9Q''@;'; put 'put ''OmNhc2UgcDAuVE9QX0xFRlQ6YnJlYWs7Y2FzZSBwMC5UT1BfQ0VOVEVSOl9lLT1jZS53aWR0aC8yO2JyZWFrO2Nhc2UgcDAuVE9QX1JJR0hUOmNhc2UgcDAuUklHSFRfVE9QOl9lLT1jZS53aWR0aDticmVhaztjYXNlIHAwLkxFRlRfQk9UVE9NOmNhc2UgcDAuQk9UVE9NX0xFRlQ6UmUtPWNl''@;'; put 'put ''LmhlaWdodDticmVhaztjYXNlIHAwLkJPVFRPTV9DRU5URVI6UmUtPWNlLmhlaWdodCxfZS09Y2Uud2lkdGgvMjticmVhaztjYXNlIHAwLkJPVFRPTV9SSUdIVDpjYXNlIHAwLlJJR0hUX0JPVFRPTTpSZS09Y2UuaGVpZ2h0LF9lLT1jZS53aWR0aDticmVhaztjYXNlIHAwLkxFRlRfQ0VOVEVS''@;'; put 'put ''OlJlLT1jZS5oZWlnaHQvMjticmVhaztjYXNlIHAwLlJJR0hUX0NFTlRFUjpSZS09Y2UuaGVpZ2h0LzIsX2UtPWNlLndpZHRofWNvbnN0IE5lPWdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KSxLZT1wYXJzZUludChOZS5tYXJnaW5MZWZ0LDEwKSxodD1wYXJzZUludChOZS5tYXJnaW5S''@;'; put 'put ''aWdodCwxMCksQnQ9cGFyc2VJbnQoTmUubWFyZ2luVG9wLDEwKSwkdD1wYXJzZUludChOZS5tYXJnaW5Cb3R0b20sMTApO3N3aXRjaChoKXtjYXNlIHAwLkxFRlRfVE9QOmNhc2UgcDAuVE9QX0xFRlQ6Y2FzZSBwMC5UT1BfUklHSFQ6Y2FzZSBwMC5SSUdIVF9UT1A6KHY9PT1wMC5CT1RUT01f''@;'; put 'put ''UklHSFR8fHY9PT1wMC5SSUdIVF9CT1RUT00pJiYoUmUtPSR0LF9lLT1odCksKHY9PT1wMC5CT1RUT01fTEVGVHx8dj09PXAwLkxFRlRfQk9UVE9NKSYmKFJlLT1CdCxfZSs9S2UpLCh2PT09cDAuVE9QX0xFRlR8fHY9PT1wMC5MRUZUX1RPUCkmJihSZSs9QnQsX2UrPUtlKSwodj09PXAwLlRP''@;'; put 'put ''UF9SSUdIVHx8dj09PXAwLlJJR0hUX1RPUCkmJihSZSs9QnQsX2UtPWh0KTticmVhaztjYXNlIHAwLkxFRlRfQk9UVE9NOmNhc2UgcDAuQk9UVE9NX0xFRlQ6Y2FzZSBwMC5CT1RUT01fUklHSFQ6Y2FzZSBwMC5SSUdIVF9CT1RUT006KHY9PT1wMC5CT1RUT01fTEVGVHx8dj09PXAwLkxFRlRf''@;'; put 'put ''Qk9UVE9NKSYmKFJlLT0kdCxfZSs9S2UpLCh2PT09cDAuQk9UVE9NX1JJR0hUfHx2PT09cDAuUklHSFRfQk9UVE9NKSYmKFJlLT0kdCxfZS09aHQpLCh2PT09cDAuVE9QX0xFRlR8fHY9PT1wMC5MRUZUX1RPUCkmJihSZSs9QnQsX2UrPUtlKSwodj09PXAwLlRPUF9SSUdIVHx8dj09PXAwLlJJ''@;'; put 'put ''R0hUX1RPUCkmJihSZSs9QnQsX2UtPWh0KTticmVhaztjYXNlIHAwLlRPUF9DRU5URVI6UmUtPSR0LF9lKz1LZSxfZS09aHQ7YnJlYWs7Y2FzZSBwMC5CT1RUT01fQ0VOVEVSOlJlKz1CdCxfZSs9S2UsX2UtPWh0O2JyZWFrO2Nhc2UgcDAuTEVGVF9DRU5URVI6UmUrPUJ0LFJlLT0kdCxfZS09''@;'; put 'put ''aHQ7YnJlYWs7Y2FzZSBwMC5SSUdIVF9DRU5URVI6UmUrPUJ0LFJlLT0kdCxfZSs9S2V9cmV0dXJuIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVgoJHtNYXRoLnJvdW5kKF9lKX1weCkgdHJhbnNsYXRlWSgke01hdGgucm91bmQoUmUpfXB4KWAsdGhpcy5fc2Nyb2xs''@;'; put 'put ''LmFzT2JzZXJ2YWJsZSgpfXJlbGVhc2UoKXt0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPSIiLHRoaXMucmVtb3ZlU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoKX1pc1Bvc2l0aW9uZWQoZyl7Y29uc3QgaD1nZXRDb21wdXRlZFN0eWxlKGcpLnBvc2l0aW9uO3JldHVybiJyZWxhdGl2ZSI9PT1o''@;'; put 'put ''fHwiYWJzb2x1dGUiPT09aHx8ImZpeGVkIj09PWh9ZW1pdFNjcm9sbEV2ZW50KCl7dGhpcy5fc2Nyb2xsLm5leHQoKX1hZGRTY3JvbGxFdmVudExpc3RlbmVycyhnKXt0aGlzLl9zY3JvbGw9bmV3ICRlO2NvbnN0IGg9ZztsZXQgdj1nO2Zvcig7diYmdiE9PWRvY3VtZW50JiYodGhpcy5zY3Jv''@;'; put 'put ''bGxzKHYpJiYodi5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuYm91bmRPblNjcm9sbExpc3RlbmVyKSx0aGlzLnNjcm9sbGFibGVFbGVtZW50cy5wdXNoKHYpKSx2PT09aHx8IXRoaXMuaXNQb3NpdGlvbmVkKHYpKTspdj12LnBhcmVudE5vZGV9cmVtb3ZlU2Nyb2xsRXZlbnRMaXN0''@;'; put 'put ''ZW5lcnMoKXtmb3IoY29uc3QgZyBvZiB0aGlzLnNjcm9sbGFibGVFbGVtZW50cylnLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5ib3VuZE9uU2Nyb2xsTGlzdGVuZXIpO3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX3Njcm9sbCYmKHRoaXMuX3Njcm9s''@;'; put 'put ''bC5jb21wbGV0ZSgpLGRlbGV0ZSB0aGlzLl9zY3JvbGwpfXNjcm9sbHMoZyl7Y29uc3QgaD1nZXRDb21wdXRlZFN0eWxlKGcpO3JldHVybiJzY3JvbGwiPT09aC5vdmVyZmxvd1h8fCJhdXRvIj09PWgub3ZlcmZsb3dYfHwic2Nyb2xsIj09PWgub3ZlcmZsb3dZfHwiYXV0byI9PT1oLm92ZXJm''@;'; put 'put ''bG93WX19bGV0IGRoZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5wYXJlbnRIb3N0PXYsdGhpcy51cGRhdGVBbmNob3I9ITEsdGhpcy5wb3BvdmVyT3B0aW9ucz17fSx0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITEsdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPW51bGws''@;'; put 'put ''dGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2s9eT0+e3RoaXMuYW5jaG9yRWxlbS5jb250YWlucyh5LnRhcmdldCl8fCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9LHRoaXMuZWw9aC5nZXQoX28pLHRoaXMudG9nZ2xlU2VydmljZT1oLmdldChFdCksdGhpcy5yZW5kZXJlcj1o''@;'; put 'put ''LmdldChEYSksdGhpcy5uZ1pvbmU9aC5nZXQoZGwpLHRoaXMucmVmPWguZ2V0KGQxKSx0aGlzLmFuY2hvckVsZW09di5uYXRpdmVFbGVtZW50LHRoaXMucG9wb3Zlckluc3RhbmNlPW5ldyBXUmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KSx0aGlzLnN1YnNjcmlwdGlvbj10aGlzLnRvZ2dsZVNl''@;'; put 'put ''cnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoeT0+e3k/KHRoaXMuYW5jaG9yKCksdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpKToodGhpcy5yZWxlYXNlKCksdGhpcy5kZXRhY2hFU0NMaXN0ZW5lcigpKX0pLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiYodGhpcy5hbmNob3IoKSx0aGlzLmF0''@;'; put 'put ''dGFjaEVTQ0xpc3RlbmVyKCkpfWFuY2hvcigpe3RoaXMudXBkYXRlQW5jaG9yPSEwfXJlbGVhc2UoKXt0aGlzLmRldGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCksdGhpcy5wb3BvdmVySW5zdGFuY2UucmVsZWFzZSgpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe3RoaXMudXBkYXRlQW5jaG9yJiYo''@;'; put 'put ''dGhpcy51cGRhdGVBbmNob3I9ITEsdGhpcy5wb3BvdmVySW5zdGFuY2UuYW5jaG9yKHRoaXMuYW5jaG9yRWxlbSx0aGlzLmFuY2hvclBvaW50LHRoaXMucG9wb3ZlclBvaW50LHRoaXMucG9wb3Zlck9wdGlvbnMpLnN1YnNjcmliZSgoKT0+e3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExfSks''@;'; put 'put ''dGhpcy5hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpKX1uZ09uRGVzdHJveSgpe3RoaXMucmVsZWFzZSgpLHRoaXMuZGV0YWNoRVNDTGlzdGVuZXIoKSx0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBpc09mZlNjcmVlbigpe3JldHVybiF0aGlzLnRvZ2dsZVNlcnZpY2Uu''@;'; put 'put ''b3Blbn1hdHRhY2hFU0NMaXN0ZW5lcigpe3RoaXMucG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXJ8fHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsImtl''@;'; put 'put ''eWRvd24iLGg9PntoJiZoLmtleSYmKCJFc2NhcGUiPT09aC5rZXl8fCJFc2MiPT09aC5rZXkpJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKX0pfSl9KX1kZXRhY2hFU0NMaXN0ZW5lcigpe3RoaXMuZG9jdW1l''@;'; put 'put ''bnRFU0NMaXN0ZW5lciYmKHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcigpLHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcj1udWxsKX1hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpe3RoaXMuY2xvc2VPbk91dHNpZGVDbGljayYmdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJmRvY3VtZW50JiZk''@;'; put 'put ''b2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2ssITApfWRldGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCl7dGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrJiZkb2N1bWVudCYmZG9j''@;'; put 'put ''dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuY2xvc2VPbk91dHNpZGVDbGlja0NhbGxiYWNrLCEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoeHMpLEt0KF9vLDQp''@;'; put 'put ''KX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoImlzLW9mZi1zY3JlZW4iLHYuaXNPZmZTY3JlZW4pfX0pLGR9KSgpLERTPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBkaGV7Y29uc3RydWN0b3IoaCx2LHksQyl7aWYo''@;'; put 'put ''IXYpdGhyb3cgbmV3IEVycm9yKCJjbHItZHJvcGRvd24tbWVudSBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBhIGNsci1kcm9wZG93biIpO3N1cGVyKGgsdikseT8odGhpcy5hbmNob3JQb2ludD1wMC5SSUdIVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9cDAuTEVGVF9UT1ApOih0aGlz''@;'; put 'put ''LmFuY2hvclBvaW50PXAwLkJPVFRPTV9MRUZULHRoaXMucG9wb3ZlclBvaW50PXAwLkxFRlRfVE9QKSx0aGlzLnBvcG92ZXJPcHRpb25zLmFsbG93TXVsdGlwbGVPcGVuPSEwLHRoaXMucG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXI9ITAsdGhpcy5jbG9zZU9uT3V0c2lk''@;'; put 'put ''ZUNsaWNrPSEwLHRoaXMuZm9jdXNIYW5kbGVyPUN9c2V0IHBvc2l0aW9uKGgpe3N3aXRjaChoKXtjYXNlInRvcC1yaWdodCI6dGhpcy5hbmNob3JQb2ludD1wMC5UT1BfUklHSFQsdGhpcy5wb3BvdmVyUG9pbnQ9cDAuUklHSFRfQk9UVE9NO2JyZWFrO2Nhc2UidG9wLWxlZnQiOnRoaXMuYW5j''@;'; put 'put ''aG9yUG9pbnQ9cDAuVE9QX0xFRlQsdGhpcy5wb3BvdmVyUG9pbnQ9cDAuTEVGVF9CT1RUT007YnJlYWs7Y2FzZSJib3R0b20tcmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9cDAuQk9UVE9NX1JJR0hULHRoaXMucG9wb3ZlclBvaW50PXAwLlJJR0hUX1RPUDticmVhaztjYXNlImJvdHRvbS1sZWZ0''@;'; put 'put ''IjpkZWZhdWx0OnRoaXMuYW5jaG9yUG9pbnQ9cDAuQk9UVE9NX0xFRlQsdGhpcy5wb3BvdmVyUG9pbnQ9cDAuTEVGVF9UT1A7YnJlYWs7Y2FzZSJyaWdodC10b3AiOnRoaXMuYW5jaG9yUG9pbnQ9cDAuUklHSFRfVE9QLHRoaXMucG9wb3ZlclBvaW50PXAwLkxFRlRfVE9QO2JyZWFrO2Nhc2Ui''@;'; put 'put ''cmlnaHQtYm90dG9tIjp0aGlzLmFuY2hvclBvaW50PXAwLlJJR0hUX0JPVFRPTSx0aGlzLnBvcG92ZXJQb2ludD1wMC5MRUZUX0JPVFRPTTticmVhaztjYXNlImxlZnQtdG9wIjp0aGlzLmFuY2hvclBvaW50PXAwLkxFRlRfVE9QLHRoaXMucG9wb3ZlclBvaW50PXAwLlJJR0hUX1RPUDticmVh''@;'; put 'put ''aztjYXNlImxlZnQtYm90dG9tIjp0aGlzLmFuY2hvclBvaW50PXAwLkxFRlRfQk9UVE9NLHRoaXMucG9wb3ZlclBvaW50PXAwLlJJR0hUX0JPVFRPTX19bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c0hhbmRsZXIuY29udGFpbmVyPXRoaXMuZWwubmF0aXZlRWxlbWVudCx0aGlzLml0''@;'; put 'put ''ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT50aGlzLmZvY3VzSGFuZGxlci5hZGRDaGlsZHJlbih0aGlzLml0ZW1zLnRvQXJyYXkoKSkpLHRoaXMuaXRlbXMubm90aWZ5T25DaGFuZ2VzKCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuZm9jdXNIYW5kbGVyLnJlc2V0''@;'; put 'put ''Q2hpbGRyZW4oKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoeHMpLEt0KCRMLDgpLEt0KGQsMTIpLEt0KGhoZSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZHJvcGRvd24tbWVudSJdXSxjb250ZW50UXVlcmll''@;'; put 'put ''czpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZTMCh5LHVxLDQpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYuaXRlbXM9Qyl9fSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJyb2xlIiwibWVudSIpLEhpKCJkcm9wZG93bi1tZW51IiwhMCkpfSxpbnB1''@;'; put 'put ''dHM6e3Bvc2l0aW9uOlsiY2xyUG9zaXRpb24iLCJwb3NpdGlvbiJdfSxmZWF0dXJlczpbUm9dLG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxMUz0oKCk9''@;'; put 'put ''PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMudG9nZ2xlU2VydmljZT12LHRoaXMuaXNSb290TGV2ZWxUb2dnbGU9ITAsaC5wYXJlbnQmJih0aGlzLmlzUm9vdExldmVsVG9nZ2xlPSExKSxDLnRyaWdnZXI9eS5uYXRpdmVFbGVtZW50fWdldCBhY3RpdmUoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy50b2dnbGVTZXJ2aWNlLm9wZW59b25Ecm9wZG93blRyaWdnZXJDbGljayhoKXt0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChNdiksS3QoRXQpLEt0KF9vKSxLdChoaGUpKX0s''@;'; put 'put ''ZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIl0sWyIiLCJjbHJEcm9wZG93blRvZ2dsZSIsIiJdXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJu''@;'; put 'put ''IHYub25Ecm9wZG93blRyaWdnZXJDbGljayhDKX0pLDImaCYmKEdpKCJhcmlhLWhhc3BvcHVwIiwibWVudSIpKCJhcmlhLWV4cGFuZGVkIix2LmFjdGl2ZSksSGkoImRyb3Bkb3duLXRvZ2dsZSIsdi5pc1Jvb3RMZXZlbFRvZ2dsZSkoImRyb3Bkb3duLWl0ZW0iLCF2LmlzUm9vdExldmVsVG9n''@;'; put 'put ''Z2xlKSgiZXhwYW5kYWJsZSIsIXYuaXNSb290TGV2ZWxUb2dnbGUpKCJhY3RpdmUiLHYuYWN0aXZlKSl9fSksZH0pKCkscGhlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5c''@;'; put 'put ''dTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYV0sd3AsWnNdfSksZH0pKCk7Y29uc3QgWVJlPVsiaW5mbyIsIndhcm5pbmciLCJkYW5nZXIiLCJzdWNjZXNzIl07bGV0IGdoZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuY29tbW9uU3RyaW5ncz1oLHRoaXMuZGVmYXVsdEljb25T''@;'; put 'put ''aGFwZT0iaW5mby1jaXJjbGUiLHRoaXMuX2FsZXJ0SWNvblNoYXBlPSIiLHRoaXMuX2FsZXJ0VHlwZT0iaW5mbyJ9Z2V0IGFsZXJ0VHlwZSgpe3JldHVybiB0aGlzLl9hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZShoKXtZUmUuaW5kZXhPZihoKT4tMSYmKHRoaXMuX2FsZXJ0VHlwZT1oKX1nZXQg''@;'; put 'put ''YWxlcnRJY29uU2hhcGUoKXtyZXR1cm4iIj09PXRoaXMuX2FsZXJ0SWNvblNoYXBlP3RoaXMuaWNvbkluZm9Gcm9tVHlwZSh0aGlzLl9hbGVydFR5cGUpLnNoYXBlOnRoaXMuX2FsZXJ0SWNvblNoYXBlfXNldCBhbGVydEljb25TaGFwZShoKXtoP2ghPT10aGlzLl9hbGVydEljb25TaGFwZSYm''@;'; put 'put ''KHRoaXMuX2FsZXJ0SWNvblNoYXBlPWgpOnRoaXMuX2FsZXJ0SWNvblNoYXBlPSIifWdldCBhbGVydEljb25UaXRsZSgpe3JldHVybiB0aGlzLmljb25JbmZvRnJvbVR5cGUodGhpcy5fYWxlcnRUeXBlKS50aXRsZX1pY29uSW5mb0Zyb21UeXBlKGgpe2NvbnN0IHY9e3NoYXBlOiIiLGNzc0Ns''@;'; put 'put ''YXNzOiIiLHRpdGxlOiIifTtzd2l0Y2goaCl7Y2FzZSJ3YXJuaW5nIjp2LnNoYXBlPSJleGNsYW1hdGlvbi10cmlhbmdsZSIsdi5jc3NDbGFzcz0iYWxlcnQtd2FybmluZyIsdi50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy53YXJuaW5nO2JyZWFrO2Nhc2UiZGFuZ2VyIjp2LnNoYXBl''@;'; put 'put ''PSJleGNsYW1hdGlvbi1jaXJjbGUiLHYuY3NzQ2xhc3M9ImFsZXJ0LWRhbmdlciIsdi50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYW5nZXI7YnJlYWs7Y2FzZSJzdWNjZXNzIjp2LnNoYXBlPSJjaGVjay1jaXJjbGUiLHYuY3NzQ2xhc3M9ImFsZXJ0LXN1Y2Nlc3MiLHYudGl0bGU9''@;'; put 'put ''dGhpcy5jb21tb25TdHJpbmdzLmtleXMuc3VjY2VzczticmVhaztkZWZhdWx0OnYuc2hhcGU9dGhpcy5kZWZhdWx0SWNvblNoYXBlLHYuY3NzQ2xhc3M9ImFsZXJ0LWluZm8iLHYudGl0bGU9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuaW5mb31yZXR1cm4gdn19cmV0dXJuIGQuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoRmEpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxTcT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hhbmdlPW5ldyAkZX1nZXQgY2hhbmdlcygpe3JldHVybiB0''@;'; put 'put ''aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1zZXQgY3VycmVudChoKXtoIT09dGhpcy5fY3VycmVudCYmKHRoaXMuX2N1cnJlbnQ9aCx0aGlzLl9jaGFuZ2UubmV4dChoKSl9Z2V0IGFjdGl2ZUFsZXJ0cygpe3JldHVybiB0aGlz''@;'; put 'put ''LmFsbEFsZXJ0cyYmdGhpcy5hbGxBbGVydHMuZmlsdGVyKGg9PiFoLl9jbG9zZWQpfWdldCBjdXJyZW50QWxlcnQoKXtyZXR1cm4gdGhpcy5hY3RpdmVBbGVydHMmJnRoaXMuYWN0aXZlQWxlcnRzW3RoaXMuY3VycmVudF19c2V0IGN1cnJlbnRBbGVydChoKXt0aGlzLmN1cnJlbnQ9dGhpcy5h''@;'; put 'put ''Y3RpdmVBbGVydHMuaW5kZXhPZihoKX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5hY3RpdmVBbGVydHMmJnRoaXMuYWN0aXZlQWxlcnRzLmxlbmd0aHx8MH1tYW5hZ2UoaCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5hbGxBbGVydHM9''@;'; put 'put ''aCx0aGlzLmN1cnJlbnQ9Im51bWJlciI9PXR5cGVvZiB0aGlzLl9jdXJyZW50P3RoaXMuX2N1cnJlbnQ6MCx0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnQpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMuYWxsQWxlcnRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5jdXJyZW50Pj10''@;'; put 'put ''aGlzLmFsbEFsZXJ0cy5sZW5ndGgmJih0aGlzLmN1cnJlbnQ9TWF0aC5tYXgoMCx0aGlzLmFsbEFsZXJ0cy5sZW5ndGgtMSkpfSl9bmV4dCgpe3RoaXMuX2N1cnJlbnQ9dGhpcy5jdXJyZW50PT09dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoLTE/MDp0aGlzLmN1cnJlbnQrMSx0aGlzLl9jaGFu''@;'; put 'put ''Z2UubmV4dCh0aGlzLl9jdXJyZW50KX1wcmV2aW91cygpezAhPT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgmJih0aGlzLl9jdXJyZW50PTA9PT10aGlzLmN1cnJlbnQ/dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoLTE6dGhpcy5jdXJyZW50LTEsdGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3Vy''@;'; put 'put ''cmVudCkpfW9wZW4oKXswIT09dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoJiYodGhpcy5jdXJyZW50QWxlcnR8fCh0aGlzLl9jdXJyZW50PTApLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpKX1jbG9zZShoKXswIT09dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoJiYoaCYmKHRoaXMu''@;'; put 'put ''X2N1cnJlbnQ9TWF0aC5tYXgoMCx0aGlzLmN1cnJlbnQtMSkpLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpKX1kZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXty''@;'; put 'put ''ZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLE5aPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pY29uU2VydmljZT1oLHRoaXMuY2RyPXYsdGhpcy5tdWx0aUFsZXJ0U2VydmljZT15LHRo''@;'; put 'put ''aXMuY29tbW9uU3RyaW5ncz1DLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmlzU21hbGw9ITEsdGhpcy5jbG9zYWJsZT0hMCx0aGlzLmlzQXBwTGV2ZWw9ITEsdGhpcy5jbHJDbG9zZUJ1dHRvbkFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5hbGVydENsb3NlQnV0dG9uQXJp''@;'; put 'put ''YUxhYmVsLHRoaXMuX2Nsb3NlZD0hMSx0aGlzLl9jbG9zZWRDaGFuZ2VkPW5ldyBmbighMSl9bmdPbkluaXQoKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlJiZ0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5o''@;'; put 'put ''aWRkZW49dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnQhPT10aGlzfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1zZXQgY2xvc2VkKGgpe2gmJiF0aGlzLl9jbG9zZWQ/dGhpcy5jbG9zZSgpOiFoJiZ0aGlz''@;'; put 'put ''Ll9jbG9zZWQmJnRoaXMub3BlbigpfXNldCBhbGVydFR5cGUoaCl7dGhpcy5pY29uU2VydmljZS5hbGVydFR5cGU9aH1nZXQgYWxlcnRUeXBlKCl7cmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuYWxlcnRUeXBlfXNldCBhbGVydEljb25TaGFwZShoKXt0aGlzLmljb25TZXJ2aWNlLmFsZXJ0SWNv''@;'; put 'put ''blNoYXBlPWh9Z2V0IGFsZXJ0Q2xhc3MoKXtyZXR1cm4gdGhpcy5pY29uU2VydmljZS5pY29uSW5mb0Zyb21UeXBlKHRoaXMuaWNvblNlcnZpY2UuYWxlcnRUeXBlKS5jc3NDbGFzc31zZXQgaGlkZGVuKGgpe2ghPT10aGlzLl9oaWRkZW4mJih0aGlzLl9oaWRkZW49aCx0aGlzLmNkci5kZXRl''@;'; put 'put ''Y3RDaGFuZ2VzKCkpfWdldCBoaWRkZW4oKXtyZXR1cm4gdGhpcy5faGlkZGVufWNsb3NlKCl7dmFyIGg7aWYoIXRoaXMuY2xvc2FibGUpcmV0dXJuO2NvbnN0IHY9KG51bGw9PT0oaD10aGlzLm11bHRpQWxlcnRTZXJ2aWNlKXx8dm9pZCAwPT09aD92b2lkIDA6aC5jdXJyZW50QWxlcnQpPT09''@;'; put 'put ''dGhpczt0aGlzLl9jbG9zZWQ9ITAsdGhpcy5tdWx0aUFsZXJ0U2VydmljZSYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jbG9zZSh2KSx0aGlzLl9jbG9zZWRDaGFuZ2VkLmVtaXQoITApfW9wZW4oKXt0aGlzLl9jbG9zZWQ9ITEsdGhpcy5tdWx0aUFsZXJ0U2VydmljZSYmdGhpcy5tdWx0aUFs''@;'; put 'put ''ZXJ0U2VydmljZS5vcGVuKCksdGhpcy5fY2xvc2VkQ2hhbmdlZC5lbWl0KCExKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZ2hlKSxLdChkMSksS3QoU3EsOCksS3QoRmEpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1si''@;'; put 'put ''Y2xyLWFsZXJ0Il1dLGlucHV0czp7aXNTbWFsbDpbImNsckFsZXJ0U2l6ZVNtYWxsIiwiaXNTbWFsbCJdLGNsb3NhYmxlOlsiY2xyQWxlcnRDbG9zYWJsZSIsImNsb3NhYmxlIl0saXNBcHBMZXZlbDpbImNsckFsZXJ0QXBwTGV2ZWwiLCJpc0FwcExldmVsIl0sY2xyQ2xvc2VCdXR0b25Bcmlh''@;'; put 'put ''TGFiZWw6ImNsckNsb3NlQnV0dG9uQXJpYUxhYmVsIixjbG9zZWQ6WyJjbHJBbGVydENsb3NlZCIsImNsb3NlZCJdLGFsZXJ0VHlwZTpbImNsckFsZXJ0VHlwZSIsImFsZXJ0VHlwZSJdLGFsZXJ0SWNvblNoYXBlOlsiY2xyQWxlcnRJY29uIiwiYWxlcnRJY29uU2hhcGUiXX0sb3V0cHV0czp7''@;'; put 'put ''X2Nsb3NlZENoYW5nZWQ6ImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIn0sZmVhdHVyZXM6W2dvKFtnaGVdKV0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWyJjbGFzcyIsImFsZXJ0IiwzLCJuZ0NsYXNzIiwiYWxlcnQtaGlkZGVuIiwiYWxlcnQtc20iLCJhbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwiLDQsIm5nSWYiXSxbMSwiYWxlcnQiLDMsIm5nQ2xhc3MiXSxbMSwiYWxlcnQtaXRlbXMiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImNsb3NlIiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xvc2UiLDMsImNsaWNrIl0sWyJzaGFwZSIs''@;'; put 'put ''IndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksbm4oMCxjcyw0LDgsImRpdiIsMCkpLDImaCYmeHQoIm5nSWYiLCF2Ll9jbG9zZWQpfSxkZXBlbmRlbmNpZXM6W0JvLEUxLGtzXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9''@;'; put 'put ''Il19KSxkfSkoKSxxeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmljb25TZXJ2aWNlPWh9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGdoZSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWxl''@;'; put 'put ''cnQtaXRlbSJdXSxob3N0QXR0cnM6WzEsImFsZXJ0LWl0ZW0iXSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbMSwiYWxlcnQtaWNvbi13cmFwcGVyIl0sWyJyb2xlIiwiaW1nIiwxLCJhbGVydC1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZo''@;'; put 'put ''JiYoJDAoKSx0dCgwLCJkaXYiLDApLGJyKDEsImNkcy1pY29uIiwxKSxpdCgpLFZpKDIpKSwyJmgmJihzdCgxKSxHaSgic2hhcGUiLHYuaWNvblNlcnZpY2UuYWxlcnRJY29uU2hhcGUpKCJhcmlhLWxhYmVsIix2Lmljb25TZXJ2aWNlLmFsZXJ0SWNvblRpdGxlKSl9LGRlcGVuZGVuY2llczpb''@;'; put 'put ''a3NdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFZaPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLDgsImFsZXJ0LXRleHQiXV19KSxkfSkoKSxld2U9KCgp''@;'; put 'put ''PT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMubXVsdGlBbGVydFNlcnZpY2U9aCx0aGlzLmNvbW1vblN0cmluZ3M9dix0aGlzLmN1cnJlbnRBbGVydENoYW5nZT1uZXcgZm4oITEpLHRoaXMuY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U9bmV3IGZufXNldCBjdXJyZW50QWxlcnQoaCl7''@;'; put 'put ''aCYmKHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0PWgpfWdldCBjdXJyZW50QWxlcnQoKXtyZXR1cm4gdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnR9c2V0IGN1cnJlbnRBbGVydEluZGV4KGgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudD1ofWdl''@;'; put 'put ''dCBjdXJyZW50QWxlcnRJbmRleCgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnR9bmdPbkluaXQoKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlQ2hhbmdlcz10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKGg9Pnt0aGlzLmN1cnJlbnRBbGVydElu''@;'; put 'put ''ZGV4Q2hhbmdlLmVtaXQoaCksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2UuZW1pdCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmFjdGl2ZUFsZXJ0c1toXSl9KX1wYWdlVXAoKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLm5leHQoKX1wYWdlRG93bigpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UucHJl''@;'; put 'put ''dmlvdXMoKX1uZ09uRGVzdHJveSgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2VDaGFuZ2VzLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFNxKSxLdChGYSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpb''@;'; put 'put ''WyJjbHItYWxlcnRzLXBhZ2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZIaSgiYWxlcnRzLXBhZ2VyIiwhMCl9LGlucHV0czp7Y3VycmVudEFsZXJ0OlsiY2xyQ3VycmVudEFsZXJ0IiwiY3VycmVudEFsZXJ0Il0sY3VycmVudEFsZXJ0SW5kZXg6WyJj''@;'; put 'put ''bHJDdXJyZW50QWxlcnRJbmRleCIsImN1cnJlbnRBbGVydEluZGV4Il19LG91dHB1dHM6e2N1cnJlbnRBbGVydENoYW5nZToiY2xyQ3VycmVudEFsZXJ0Q2hhbmdlIixjdXJyZW50QWxlcnRJbmRleENoYW5nZToiY2xyQ3VycmVudEFsZXJ0SW5kZXhDaGFuZ2UifSxkZWNsczo5LHZhcnM6NCxj''@;'; put 'put ''b25zdHM6W1sxLCJhbGVydHMtcGFnZXItY29udHJvbCJdLFsxLCJhbGVydHMtcGFnZS1kb3duIl0sWzEsImFsZXJ0cy1wYWdlci1idXR0b24iLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsxLCJhbGVydHMtcGFnZXItdGV4dCJdLFsxLCJhbGVydHMt''@;'; put 'put ''cGFnZS11cCJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsInJpZ2h0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImJ1dHRvbiIsMiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnBhZ2VEb3duKCl9KSxicigz''@;'; put 'put ''LCJjZHMtaWNvbiIsMyksaXQoKSgpLHR0KDQsImRpdiIsNCksV3QoNSksaXQoKSx0dCg2LCJkaXYiLDUpKDcsImJ1dHRvbiIsMiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnBhZ2VVcCgpfSksYnIoOCwiY2RzLWljb24iLDYpLGl0KCkoKSgpKSwyJmgmJihzdCgzKSxHaSgidGl0''@;'; put 'put ''bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzKSxzdCgyKSxyaCgiIix2Lm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQrMSwiIC8gIix2Lm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50LCIiKSxzdCgzKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLm5leHQpKX0sZGVwZW5k''@;'; put 'put ''ZW5jaWVzOltrc10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksdHdlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZT1oLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlPW5ldyBmbighMSksdGhpcy5jdXJy''@;'; put 'put ''ZW50QWxlcnRDaGFuZ2U9bmV3IGZuKCExKX1zZXQgYWxsQWxlcnRzKGgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UubWFuYWdlKGgpfXNldCBfaW5wdXRDdXJyZW50SW5kZXgoaCl7TnVtYmVyLmlzSW50ZWdlcihoKSYmaD49MCYmKHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudD1oKX1z''@;'; put 'put ''ZXQgY3VycmVudEFsZXJ0SW5kZXgoaCl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50PWh9Z2V0IGN1cnJlbnRBbGVydEluZGV4KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudH1zZXQgY3VycmVudEFsZXJ0KGgpe2gmJih0aGlzLm11bHRpQWxlcnRTZXJ2aWNl''@;'; put 'put ''LmN1cnJlbnRBbGVydD1oKX1nZXQgY3VycmVudEFsZXJ0KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0fWdldCBhbGVydHMoKXtyZXR1cm4gdGhpcy5hbGxBbGVydHMuZmlsdGVyKGg9PiExPT09aC5oaWRkZW4pfWdldCBjdXJyZW50QWxlcnRUeXBlKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0P3RoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0LmFsZXJ0VHlwZToiIn1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMu''@;'; put 'put ''c3Vic2NyaWJlKGg9Pnt0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlLm5leHQoaCksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2UubmV4dCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5o''@;'; put 'put ''LnVuc3Vic2NyaWJlKCkpLHRoaXMubXVsdGlBbGVydFNlcnZpY2UuZGVzdHJveSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChTcSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWxlcnRzIl1dLGNvbnRlbnRR''@;'; put 'put ''dWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJlMwKHksTlosNCksMiZoKXtsZXQgQzt6aShDPUFpKCkpJiYodi5hbGxBbGVydHM9Qyl9fSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJhbGVydHMiLCEwKSgiYWxlcnQtZGFuZ2VyIiwiZGFuZ2Vy''@;'; put 'put ''Ij09di5jdXJyZW50QWxlcnRUeXBlKSgiYWxlcnQtaW5mbyIsImluZm8iPT12LmN1cnJlbnRBbGVydFR5cGUpKCJhbGVydC1zdWNjZXNzIiwic3VjY2VzcyI9PXYuY3VycmVudEFsZXJ0VHlwZSkoImFsZXJ0LXdhcm5pbmciLCJ3YXJuaW5nIj09di5jdXJyZW50QWxlcnRUeXBlKX0saW5wdXRz''@;'; put 'put ''OntfaW5wdXRDdXJyZW50SW5kZXg6WyJjbHJDdXJyZW50QWxlcnRJbmRleCIsIl9pbnB1dEN1cnJlbnRJbmRleCJdLGN1cnJlbnRBbGVydDpbImNsckN1cnJlbnRBbGVydCIsImN1cnJlbnRBbGVydCJdfSxvdXRwdXRzOntjdXJyZW50QWxlcnRJbmRleENoYW5nZToiY2xyQ3VycmVudEFsZXJ0''@;'; put 'put ''SW5kZXhDaGFuZ2UiLGN1cnJlbnRBbGVydENoYW5nZToiY2xyQ3VycmVudEFsZXJ0Q2hhbmdlIn0sZmVhdHVyZXM6W2dvKFtTcV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bzQsZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbMywiY2xyQ3VycmVudEFsZXJ0SW5kZXgiLDQsIm5nSWYiXSxbMywiY2xy''@;'; put 'put ''Q3VycmVudEFsZXJ0SW5kZXgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChucSksbm4oMCx0cSwxLDEsImNsci1hbGVydHMtcGFnZXIiLDApLFZpKDEpKSwyJmgmJnh0KCJuZ0lmIix2Lm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50PjEpfSxkZXBlbmRlbmNpZXM6W2V3ZSxCb10s''@;'; put 'put ''c3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksZH0pKCksbndlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyhVaCx3WCxZaCxpMmUsenkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5c''@;'; put 'put ''dTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWEsWnMscGhlXV19KSxkfSkoKSxVUmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1''@;'; put 'put ''MDI3NWluaj1tMCh7aW1wb3J0czpbbndlXX0pLGR9KSgpLFFzPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLk5BVl9MRVZFTF8xPTEsZC5OQVZfTEVWRUxfMj0yLGQuTkFWX0NMT1NFX0FMTD0iTkFWX0NMT1NFX0FMTCIsZC5OQVZfT1BFTj0iTkFWX09QRU4iLGQuTkFWX0NMT1NFPSJOQVZfQ0xP''@;'; put 'put ''U0UiLGQuTkFWX1RPR0dMRT0iTkFWX1RPR0dMRSIsZC5OQVZfQ0xBU1NfSEFNQlVSR0VSX01FTlU9Im9wZW4taGFtYnVyZ2VyLW1lbnUiLGQuTkFWX0NMQVNTX09WRVJGTE9XX01FTlU9Im9wZW4tb3ZlcmZsb3ctbWVudSIsZC5OQVZfQ0xBU1NfVFJJR0dFUl8xPSJoZWFkZXItaGFtYnVyZ2Vy''@;'; put 'put ''LXRyaWdnZXIiLGQuTkFWX0NMQVNTX1RSSUdHRVJfMj0iaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIiLGQuTkFWX0NMQVNTX0xFVkVMXzE9ImNsci1uYXYtbGV2ZWwtMSIsZC5OQVZfQ0xBU1NfTEVWRUxfMj0iY2xyLW5hdi1sZXZlbC0yIixkfSkoKTtjbGFzcyByd2V7Y29uc3RydWN0b3IoZyxo''@;'; put 'put ''KXt0aGlzLl9jb250cm9sQ29kZT1nLHRoaXMuX25hdkxldmVsPWh9Z2V0IGNvbnRyb2xDb2RlKCl7cmV0dXJuIHRoaXMuX2NvbnRyb2xDb2RlfWdldCBuYXZMZXZlbCgpe3JldHVybiB0aGlzLl9uYXZMZXZlbH19bGV0IE1xPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnJlc3Bv''@;'; put 'put ''bnNpdmVOYXZMaXN0PVtdLHRoaXMucmVnaXN0ZXJOYXZTdWJqZWN0PW5ldyBpOCx0aGlzLmNvbnRyb2xOYXZTdWJqZWN0PW5ldyAkZSx0aGlzLmNsb3NlQWxsTmF2cygpfWdldCByZWdpc3RlcmVkTmF2cygpe3JldHVybiB0aGlzLnJlZ2lzdGVyTmF2U3ViamVjdC5hc09ic2VydmFibGUoKX1n''@;'; put 'put ''ZXQgbmF2Q29udHJvbCgpe3JldHVybiB0aGlzLmNvbnRyb2xOYXZTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpfXJlZ2lzdGVyTmF2KGgpeyFofHx0aGlzLmlzTmF2UmVnaXN0ZXJlZChoKXx8KHRoaXMucmVzcG9uc2l2ZU5hdkxpc3QucHVzaChoKSx0aGlzLnJlZ2lzdGVyTmF2U3ViamVjdC5uZXh0''@;'; put 'put ''KHRoaXMucmVzcG9uc2l2ZU5hdkxpc3QpKX1pc05hdlJlZ2lzdGVyZWQoaCl7cmV0dXJuIHRoaXMucmVzcG9uc2l2ZU5hdkxpc3QuaW5kZXhPZihoKT4tMSYmKGNvbnNvbGUuZXJyb3IoIk11bHRpcGxlIGNsci1uYXYtbGV2ZWwgIitoKyIgYXR0cmlidXRlcyBmb3VuZC4gUGxlYXNlIG1ha2Ug''@;'; put 'put ''c3VyZSB0aGF0IG9ubHkgb25lIGV4aXN0cyIpLCEwKX11bnJlZ2lzdGVyTmF2KGgpe2NvbnN0IHY9dGhpcy5yZXNwb25zaXZlTmF2TGlzdC5pbmRleE9mKGgpO3Y+LTEmJih0aGlzLnJlc3BvbnNpdmVOYXZMaXN0LnNwbGljZSh2LDEpLHRoaXMucmVnaXN0ZXJOYXZTdWJqZWN0Lm5leHQodGhp''@;'; put 'put ''cy5yZXNwb25zaXZlTmF2TGlzdCkpfXNlbmRDb250cm9sTWVzc2FnZShoLHYpe2NvbnN0IHk9bmV3IHJ3ZShoLHYpO3RoaXMuY29udHJvbE5hdlN1YmplY3QubmV4dCh5KX1jbG9zZUFsbE5hdnMoKXtjb25zdCBoPW5ldyByd2UoUXMuTkFWX0NMT1NFX0FMTCwtOTk5KTt0aGlzLmNvbnRyb2xO''@;'; put 'put ''YXZTdWJqZWN0Lm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLFFSZT0oKCk9PntjbGFzcyBke31yZXR1cm4g''@;'; put 'put ''ZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWEsWnNdXX0pLGR9KSgpO2Z1bmN0aW9uIG93ZShkKXtjb25zdCBnPWQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBn''@;'; put 'put ''LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksZy5jbGFzc0xpc3QuYWRkKCJvZmZzY3JlZW4tZm9jdXMtcmVib3VuZGVyIiksZ31sZXQgbkJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5yZW5kZXJlcj1oLHRoaXMuYWN0aXZlPSExLGFsKHkpJiYodGhpcy5f''@;'; put 'put ''ZG9jdW1lbnQ9di5nZXQodXMpKSxDLmZvY3VzVHJhcElkfHwoQy5mb2N1c1RyYXBJZD1mdW5jdGlvbiBZSihkPSJfIil7cmV0dXJuYCR7ZH0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDkpfWB9KCkpLHRoaXMuZm9jdXNUcmFwRWxlbWVudD1DfWVuYWJsZUZvY3VzVHJh''@;'; put 'put ''cCgpe2NvbnN0IGg9dGhpcy5mb2N1c1RyYXBFbGVtZW50LHY9aC5xdWVyeVNlbGVjdG9yKCJbY2RzLWZpcnN0LWZvY3VzXSIpLHk9dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZih2TC5nZXRDdXJyZW50KCk9PT1oKXRocm93IG5ldyBFcnJvcigiRm9jdXMgdHJhcCBpcyBhbHJlYWR5''@;'; put 'put ''IGVuYWJsZWQgZm9yIHRoaXMgaW5zdGFuY2UuIik7dGhpcy5maXJzdEZvY3VzRWxlbWVudD12fHx0aGlzLmZvY3VzVHJhcEVsZW1lbnQsZnVuY3Rpb24gZUJlKGQsZyl7aWYoZyYmIWcudG9wUmVib3VuZEVsZW1lbnQmJiFnLmJvdHRvbVJlYm91bmRFbGVtZW50KXtnLnRvcFJlYm91bmRFbGVt''@;'; put 'put ''ZW50PW93ZShkKSxnLmJvdHRvbVJlYm91bmRFbGVtZW50PW93ZShkKTtjb25zdCBoPWcucGFyZW50RWxlbWVudCx2PWcubmV4dFNpYmxpbmc7aCYmKGguaW5zZXJ0QmVmb3JlKGcudG9wUmVib3VuZEVsZW1lbnQsZyksdj9oLmluc2VydEJlZm9yZShnLmJvdHRvbVJlYm91bmRFbGVtZW50LHYp''@;'; put 'put ''OmguYXBwZW5kQ2hpbGQoZy5ib3R0b21SZWJvdW5kRWxlbWVudCkpfX0odGhpcy5fZG9jdW1lbnQsaCksZnVuY3Rpb24gU0soZCl7c3dpdGNoKGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlImlucHV0IjpyZXR1cm4iaGlkZGVuIiE9PWQuZ2V0QXR0cmlidXRlKCJ0eXBlIikmJiFkLmhh''@;'; put 'put ''c0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSYmIWQuaGFzQXR0cmlidXRlKCJyZWFkb25seSIpO2Nhc2UiYnV0dG9uIjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6cmV0dXJuIWQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpO2Nhc2UiaWZyYW1lIjpjYXNlImVtYmVkIjpjYXNlIm9iamVjdCI6''@;'; put 'put ''cmV0dXJuITA7Y2FzZSJhIjpjYXNlImFyZWEiOnJldHVybiBkLmhhc0F0dHJpYnV0ZSgiaHJlZiIpO2Nhc2UiYXVkaW8iOmNhc2UidmlkZW8iOnJldHVybiBkLmhhc0F0dHJpYnV0ZSgiY29udHJvbHMiKTtkZWZhdWx0OnJldHVybiBkLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8InRydWUi''@;'; put 'put ''PT09ZC5nZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHwiYnV0dG9uIj09PWQuZ2V0QXR0cmlidXRlKCJyb2xlIikmJiFkLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKX19KGgpfHxoLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHkmJmZ1bmN0aW9uIHhLKGQpe3JldHVybiEh''@;'; put 'put ''ZCYmZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fSh5KSYmKHRoaXMucHJldmlvdXNGb2N1cz15KSx2TC5zZXRDdXJyZW50KGgpO2NvbnN0IEM9c2V0VGltZW91dCgoKT0+e3RoaXMuZmlyc3RGb2N1c0VsZW1lbnQuZm9jdXMoKSxjbGVhclRpbWVvdXQoQyl9LDEwKTt0aGlzLm9uRm9jdXNJbkV2''@;'; put 'put ''ZW50PXRoaXMub25Gb2N1c0luLmJpbmQodGhpcyksdGhpcy51bmxpc3Rlbj10aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLl9kb2N1bWVudCwiZm9jdXNpbiIsdGhpcy5vbkZvY3VzSW5FdmVudCksdGhpcy5hY3RpdmU9ITB9cmVtb3ZlRm9jdXNUcmFwKCl7dGhpcy51bmxpc3RlbiYmdGhpcy51''@;'; put 'put ''bmxpc3RlbigpLGZ1bmN0aW9uIHRCZShkKXtpZihkKXtjb25zdCBnPWQucGFyZW50RWxlbWVudDtpZihnKXtjb25zdCBoPWQudG9wUmVib3VuZEVsZW1lbnQsdj1kLmJvdHRvbVJlYm91bmRFbGVtZW50O2gmJmcucmVtb3ZlQ2hpbGQoaCksdiYmZy5yZW1vdmVDaGlsZCh2KX1kZWxldGUgZC50''@;'; put 'put ''b3BSZWJvdW5kRWxlbWVudCxkZWxldGUgZC5ib3R0b21SZWJvdW5kRWxlbWVudH19KHRoaXMuZm9jdXNUcmFwRWxlbWVudCksdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5mb2N1c1RyYXBFbGVtZW50LCJ0YWJpbmRleCIpLHZMLmFjdGl2YXRlUHJldmlvdXNDdXJyZW50KCks''@;'; put 'put ''dGhpcy5hY3RpdmU9ITEsdGhpcy5wcmV2aW91c0ZvY3VzJiZ0aGlzLnByZXZpb3VzRm9jdXMuZm9jdXMoKX1vbkZvY3VzSW4oaCl7IWZ1bmN0aW9uICRSZShkLGcsaCl7Y29uc3Qgdj12TC5nZXRDdXJyZW50KCk9PT1nLHk9ZnVuY3Rpb24gcVJlKGQsZyl7cmV0dXJuIGQ9PT1nLnRvcFJlYm91''@;'; put 'put ''bmRFbGVtZW50fHxkPT09Zy5ib3R0b21SZWJvdW5kRWxlbWVudHx8IShnLmNvbnRhaW5zKGQpfHxudWxsIT09ZyYmZy5jb250YWlucyhkKSl9KGQsZyk7diYmeT8oaD1ofHxnKS5mb2N1cygpOmQuZm9jdXMoKX0oaC5jb21wb3NlZFBhdGgoKVswXSx0aGlzLmZvY3VzVHJhcEVsZW1lbnQsdGhp''@;'; put 'put ''cy5maXJzdEZvY3VzRWxlbWVudCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtCbSgpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGF3ZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgbkJle2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7''@;'; put 'put ''c3VwZXIoQyxJLGgseS5uYXRpdmVFbGVtZW50KSx0aGlzLnJlc3BvbnNpdmVOYXZTZXJ2aWNlPXYsdGhpcy5lbGVtZW50UmVmPXksdGhpcy5faXNPcGVuPSExLGFsKGgpJiYodGhpcy5fZG9jdW1lbnQ9SS5nZXQodXMpKSx0aGlzLl9zdWJzY3JpcHRpb249di5uYXZDb250cm9sLnBpcGUobTIo''@;'; put 'put ''aj0+ai5uYXZMZXZlbD09PXRoaXMubGV2ZWwpLG0yKCh7Y29udHJvbENvZGU6an0pPT5qPT09UXMuTkFWX09QRU4mJiF0aGlzLmlzT3Blbnx8aj09PVFzLk5BVl9DTE9TRSYmdGhpcy5pc09wZW4pKS5zdWJzY3JpYmUoKHtjb250cm9sQ29kZTpqfSk9PntqIT09UXMuTkFWX09QRU4/dGhpcy5j''@;'; put 'put ''bG9zZSgpOnRoaXMub3BlbigpfSksdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh2Lm5hdkNvbnRyb2wucGlwZShtMigoe2NvbnRyb2xDb2RlOmp9KT0+aj09PVFzLk5BVl9DTE9TRV9BTEwpKS5zdWJzY3JpYmUoKCk9PnRoaXMuY2xvc2UoKSkpfW5nT25Jbml0KCl7dGhpcy5jbG9zZUJ1dHRvbkFy''@;'; put 'put ''aWFMYWJlbHx8KHRoaXMuY2xvc2VCdXR0b25BcmlhTGFiZWw9dGhpcy5fbGV2ZWw9PT1Rcy5OQVZfTEVWRUxfMT9ZTC5yZXNwb25zaXZlTmF2VG9nZ2xlQ2xvc2U6WUwucmVzcG9uc2l2ZU5hdk92ZXJmbG93Q2xvc2UpLHRoaXMubGV2ZWw9PT1Rcy5OQVZfTEVWRUxfMXx8dGhpcy5sZXZlbD09''@;'; put 'put ''PVFzLk5BVl9MRVZFTF8yPyh0aGlzLnJlc3BvbnNpdmVOYXZTZXJ2aWNlLnJlZ2lzdGVyTmF2KHRoaXMubGV2ZWwpLHRoaXMuYWRkTmF2Q2xhc3ModGhpcy5sZXZlbCkpOmNvbnNvbGUuZXJyb3IoIk5hdiBMZXZlbCBjYW4gb25seSBiZSAxIG9yIDIiKX1uZ0FmdGVyVmlld0luaXQoKXtjb25z''@;'; put 'put ''dCBoPSgoZCxnKT0+e2NvbnN0IGg9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2RzLWludGVybmFsLWNsb3NlLWJ1dHRvbiIpO3JldHVybiBoLnNldEF0dHJpYnV0ZSgiaWNvbi1zaXplIiwiMzIiKSxoLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsZyksaC5zZXRBdHRyaWJ1dGUo''@;'; put 'put ''ImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGguc2V0QXR0cmlidXRlKCJ0eXBlIiwiYnV0dG9uIiksaC5zZXRBdHRyaWJ1dGUoImhpZGRlbiIsInRydWUiKSxoLmNsYXNzTmFtZT0iY2xyLW5hdi1jbG9zZSIsaH0pKDAsdGhpcy5jbG9zZUJ1dHRvbkFyaWFMYWJlbCk7dGhpcy5yZW5kZXJlci5saXN0''@;'; put 'put ''ZW4oaCwiY2xpY2siLHRoaXMuY2xvc2UuYmluZCh0aGlzKSksdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsaCx0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdENoaWxkKSx0aGlzLl9kb2N1bWVudC5ib2R5LmNsaWVudFdp''@;'; put 'put ''ZHRoPDk5MiYmdGhpcy5jbG9zZSgpfWFkZE5hdkNsYXNzKGgpe2NvbnN0IHY9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O2g9PT1Rcy5OQVZfTEVWRUxfMT92LmFkZChRcy5OQVZfQ0xBU1NfTEVWRUxfMSk6aD09PVFzLk5BVl9MRVZFTF8yJiZ2LmFkZChRcy5OQVZf''@;'; put 'put ''Q0xBU1NfTEVWRUxfMil9Z2V0IGxldmVsKCl7cmV0dXJuIHRoaXMuX2xldmVsfWdldCByZXNwb25zaXZlTmF2Q29kZXMoKXtyZXR1cm4gUXN9Z2V0IGlzT3Blbigpe3JldHVybiB0aGlzLl9pc09wZW59b25SZXNpemUoaCl7aC50YXJnZXQuaW5uZXJXaWR0aDw5OTImJnRoaXMuaXNPcGVuP3Ro''@;'; put 'put ''aXMuY2xvc2UoKTp0aGlzLnNob3dOYXZpZ2F0aW9uKCl9b3Blbigpe3RoaXMuX2lzT3Blbj0hMCx0aGlzLnNob3dOYXZpZ2F0aW9uKCksdGhpcy5lbmFibGVGb2N1c1RyYXAoKSx0aGlzLnNob3dDbG9zZUJ1dHRvbigpLHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2Uuc2VuZENvbnRyb2xNZXNz''@;'; put 'put ''YWdlKFFzLk5BVl9PUEVOLHRoaXMubGV2ZWwpfWNsb3NlKCl7dGhpcy5faXNPcGVuPSExLHRoaXMuaGlkZU5hdmlnYXRpb24oKSx0aGlzLnJlbW92ZUZvY3VzVHJhcCgpLHRoaXMuaGlkZUNsb3NlQnV0dG9uKCksdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS5zZW5kQ29udHJvbE1lc3NhZ2Uo''@;'; put 'put ''UXMuTkFWX0NMT1NFLHRoaXMubGV2ZWwpfW9uTW91c2VDbGljayhoKXtsZXQgdj1oO2NvbnN0IHk9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7Zm9yKDt2Oyl7aWYodj09PXkpcmV0dXJuO2lmKHYuY2xhc3NMaXN0LmNvbnRhaW5zKCJuYXYtbGluayIpJiZ0aGlzLl9kb2N1bWVudC5i''@;'; put 'put ''b2R5LmNsaWVudFdpZHRoPDk5MilyZXR1cm4gdm9pZCB0aGlzLmNsb3NlKCk7dj12LnBhcmVudE5vZGV9fWhpZGVOYXZpZ2F0aW9uKCl7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImFyaWEtaGlkZGVuIiwidHJ1ZSIpLHRoaXMucmVu''@;'; put 'put ''ZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJoaWRkZW4iLCJ0cnVlIil9c2hvd05hdmlnYXRpb24oKXt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLHRo''@;'; put 'put ''aXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJoaWRkZW4iKX1oaWRlQ2xvc2VCdXR0b24oKXt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiYXJpYS1oaWRkZW4iLCJ0cnVlIiks''@;'; put 'put ''dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmNsci1uYXYtY2xvc2UiKSwiaGlkZGVuIiwidHJ1ZSIpfXNob3dDbG9zZUJ1dHRvbigpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJl''@;'; put 'put ''Zi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbHItbmF2LWNsb3NlIiksImFyaWEtaGlkZGVuIiwiZmFsc2UiKSx0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuY2xyLW5hdi1jbG9zZSIpLCJo''@;'; put 'put ''aWRkZW4iKX1uZ09uRGVzdHJveSgpe3RoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2UudW5yZWdpc3Rlck5hdih0aGlzLmxldmVsKSx0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRTIpLEt0''@;'; put 'put ''KE1xKSxLdChfbyksS3QoRGEpLEt0KHhzKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsci1uYXYtbGV2ZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZabigicmVzaXplIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vblJlc2l6ZShDKX0s''@;'; put 'put ''MCxYYikoImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbk1vdXNlQ2xpY2soQy50YXJnZXQpfSl9LGlucHV0czp7X2xldmVsOlsiY2xyLW5hdi1sZXZlbCIsIl9sZXZlbCJdLGNsb3NlQnV0dG9uQXJpYUxhYmVsOlsiY2xvc2VBcmlhTGFiZWwiLCJjbG9zZUJ1dHRvbkFyaWFMYWJlbCJd''@;'; put 'put ''fSxmZWF0dXJlczpbUm9dfSksZH0pKCksaUJlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxacyxwaGVdXX0pLGR9KSgpLGx3''@;'; put 'put ''ZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sibmctY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAoVm4sNSksMiZoKXts''@;'; put 'put ''ZXQgeTt6aSh5PUFpKCkpJiYodi50ZW1wbGF0ZT15LmZpcnN0KX19LG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksbm4oMCxtcCwxLDAsIm5nLXRlbXBsYXRlIikpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxv''@;'; put 'put ''QmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXV19KSxkfSkoKSxkTz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgd3t9cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz10MihkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdGFicyJdXSxmZWF0dXJlczpbUm9dfSksZH0pKCksalo9KCgpPT57Y2xhc3Mg''@;'; put 'put ''ZCBleHRlbmRzIGJ7Y29uc3RydWN0b3IoaCx2LHksQyl7aWYoIXYpdGhyb3cgbmV3IEVycm9yKCJjbHJUYWJMaW5rIGFuZCBjbHItdGFiLWNvbnRlbnQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHItdGFicyIpO3N1cGVyKGgsdiksdGhpcy5pZkFjdGl2ZT1DLHRoaXMuaWQ9''@;'; put 'put ''eX1nZXQgZmxhdm9yKCl7cmV0dXJuIHRoaXMuaWZBY3RpdmUuY3VycmVudD09PXRoaXMuaWR9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSxLdChkTyw4KSxLdChYTCksS3Qod1MpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3Rv''@;'; put 'put ''cnM6W1siIiwiY2xyVGFiTGluayIsIiJdLFsiY2xyLXRhYi1jb250ZW50Il1dLGZlYXR1cmVzOltSb119KSxkfSkoKTt2YXIgRXY9KCgpPT4oZnVuY3Rpb24oZCl7ZC5IT1JJWk9OVEFMPSJob3Jpem9udGFsIixkLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCJ9KEV2fHwoRXY9e30pKSxFdikpKCk7bGV0''@;'; put 'put ''IFpaPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9jaGlsZHJlbj1bXSx0aGlzLmxheW91dD1Fdi5IT1JJWk9OVEFMfXJlZ2lzdGVyKGgpe3RoaXMuX2NoaWxkcmVuLnB1c2goaCl9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuX2NoaWxkcmVufWdldCBhY3RpdmVUYWIoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jaGlsZHJlbi5maW5kKGg9PmguYWN0aXZlKX1nZXQgb3ZlcmZsb3dUYWJzKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09RXYuVkVSVElDQUw/W106dGhpcy5jaGlsZHJlbi5maWx0ZXIoaD0+ITA9PT1oLnRhYkxpbmsuaW5PdmVyZmxvdyl9dW5yZWdpc3RlcihoKXtjb25zdCB2''@;'; put 'put ''PXRoaXMuY2hpbGRyZW4uaW5kZXhPZihoKTt2Pi0xJiZ0aGlzLmNoaWxkcmVuLnNwbGljZSh2LDEpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxhQmU9''@;'; put 'put ''MCxwTz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuaWZBY3RpdmVTZXJ2aWNlPWgsdGhpcy5pZD12LHRoaXMuYXJpYVNlcnZpY2U9eSx0aGlzLnRhYnNTZXJ2aWNlPUMsdGhpcy50YWJDb250ZW50SWR8fCh0aGlzLnRhYkNvbnRlbnRJZD0iY2xyLXRhYi1jb250ZW50''@;'; put 'put ''LSIrYUJlKyspfXNldCB0ZW1wbGF0ZVJlZihoKXt0aGlzLnZpZXdSZWY9dGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoaCl9Z2V0IGFyaWFMYWJlbGxlZEJ5KCl7cmV0dXJuIHRoaXMuYXJpYVNlcnZpY2UuYXJpYUxhYmVsbGVkQnl9''@;'; put 'put ''Z2V0IHRhYkNvbnRlbnRJZCgpe3JldHVybiB0aGlzLmFyaWFTZXJ2aWNlLmFyaWFDb250cm9sc31zZXQgdGFiQ29udGVudElkKGgpe3RoaXMuYXJpYVNlcnZpY2UuYXJpYUNvbnRyb2xzPWh9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5p''@;'; put 'put ''ZH1uZ09uRGVzdHJveSgpe2NvbnN0IGg9dGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lci5pbmRleE9mKHRoaXMudmlld1JlZik7aD4tMSYmdGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lci5yZW1vdmUoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1m''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHdTKSxLdChYTCksS3QoSWZlKSxLdChaWikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdGFiLWNvbnRlbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZnMChyMiw3KSwyJmgpe2xldCB5''@;'; put 'put ''O3ppKHk9QWkoKSkmJih2LnRlbXBsYXRlUmVmPXkuZmlyc3QpfX0saW5wdXRzOnt0YWJDb250ZW50SWQ6WyJpZCIsInRhYkNvbnRlbnRJZCJdfSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbInRhYkNvbnRlbnRQcm9qZWN0ZWRSZWYiLCIiXSxbInJvbGUi''@;'; put 'put ''LCJ0YWJwYW5lbCIsMSwidGFiLWNvbnRlbnQiLDMsImlkIiwiaGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxubigwLGdnLDIsNiwibmctdGVtcGxhdGUiLG51bGwsMCxfbCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxsQmU9MDtjb25zdCBtaGU9bmV3IE90''@;'; put 'put ''KCJUQUJTX0lEIiksdUJlPXtwcm92aWRlOm1oZSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHNCZSgpe3JldHVybiJjbHItdGFicy0iK2xCZSsrfX07bGV0IGNCZT0wLGdPPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGosY2UsX2Upe3RoaXMuaWZBY3RpdmVTZXJ2aWNlPWgsdGhp''@;'; put 'put ''cy5pZD12LHRoaXMuYXJpYVNlcnZpY2U9eSx0aGlzLmVsPUMsdGhpcy5jZnI9SSx0aGlzLnZpZXdDb250YWluZXJSZWY9aix0aGlzLnRhYnNTZXJ2aWNlPWNlLHRoaXMudGFic0lkPV9lLHRoaXMudGFiTGlua0lkfHwodGhpcy50YWJMaW5rSWQ9ImNsci10YWItbGluay0iK2NCZSsrKTtjb25z''@;'; put 'put ''dCBSZT10aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShsd2UpO3RoaXMudGVtcGxhdGVSZWZDb250YWluZXI9dGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChSZSx2b2lkIDAsdm9pZCAwLFtbdGhpcy5lbC5uYXRpdmVFbGVtZW50XV0pLmluc3RhbmNlfXNldCBp''@;'; put 'put ''bk92ZXJmbG93KGgpe3RoaXMuX2luT3ZlcmZsb3c9aH1nZXQgaW5PdmVyZmxvdygpe3JldHVybiB0aGlzLl9pbk92ZXJmbG93JiZ0aGlzLnRhYnNTZXJ2aWNlLmxheW91dCE9PUV2LlZFUlRJQ0FMfWdldCBhZGRMaW5rQ2xhc3Nlcygpe3JldHVybiF0aGlzLmluT3ZlcmZsb3d9Z2V0IGFyaWFD''@;'; put 'put ''b250cm9scygpe3JldHVybiB0aGlzLmFyaWFTZXJ2aWNlLmFyaWFDb250cm9sc31nZXQgdGFiTGlua0lkKCl7cmV0dXJuIHRoaXMuYXJpYVNlcnZpY2UuYXJpYUxhYmVsbGVkQnl9c2V0IHRhYkxpbmtJZChoKXt0aGlzLmFyaWFTZXJ2aWNlLmFyaWFMYWJlbGxlZEJ5PWh9YWN0aXZhdGUoKXt0''@;'; put 'put ''aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PXRoaXMuaWR9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH1nZXQgdGFiaW5kZXgoKXtyZXR1cm4gdGhpcy5hY3RpdmU/MDotMX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBuZXcoaHx8ZCkoS3Qod1MpLEt0KFhMKSxLdChJZmUpLEt0KF9vKSxLdChfZCksS3QoTXIpLEt0KFpaKSxLdChtaGUpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyVGFiTGluayIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwidGFiIiwidHlwZSIs''@;'; put 'put ''ImJ1dHRvbiJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmFjdGl2YXRlKCl9KSwyJmgmJihEMygiaWQiLHYudGFiTGlua0lkKSxHaSgiYXJpYS1jb250cm9scyIsdi5hcmlhQ29udHJvbHMpKCJhcmlh''@;'; put 'put ''LXNlbGVjdGVkIix2LmFjdGl2ZSkoInRhYmluZGV4Iix2LnRhYmluZGV4KSxIaSgiYnRuIiwhMCkoImJ0bi1saW5rIix2LmFkZExpbmtDbGFzc2VzKSgibmF2LWxpbmsiLHYuYWRkTGlua0NsYXNzZXMpKCJhY3RpdmUiLHYuYWN0aXZlKSl9LGlucHV0czp7aW5PdmVyZmxvdzpbImNsclRhYkxp''@;'; put 'put ''bmtJbk92ZXJmbG93IiwiaW5PdmVyZmxvdyJdLHRhYkxpbmtJZDpbImlkIiwidGFiTGlua0lkIl19fSksZH0pKCksbU89KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9aCx0aGlzLmlkPXYsdGhpcy50YWJzU2VydmljZT15LHkucmVnaXN0ZXIo''@;'; put 'put ''dGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnRhYnNTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcyl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qo''@;'; put 'put ''d1MpLEt0KFhMKSxLdChaWikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdGFiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJihTMCh5LGdPLDcpLFMwKHkscE8sNykpLDImaCl7bGV0IEM7emkoQz1BaSgpKSYmKHYudGFiTGluaz1D''@;'; put 'put ''LmZpcnN0KSx6aShDPUFpKCkpJiYodi50YWJDb250ZW50PUMuZmlyc3QpfX0sZmVhdHVyZXM6W2dvKFtNT2UsSWZlXSldLG5nQ29udGVudFNlbGVjdG9yczp2YSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9''@;'; put 'put ''KSxkfSkoKSx2aGU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci10YWItb3ZlcmZsb3ctY29udGVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpm''@;'; put 'put ''dW5jdGlvbihoLHYpezImaCYmSGkoImRyb3Bkb3duLW1lbnUiLCEwKX0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSxWaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLHpaPSgoKT0+e2NsYXNzIGR7Y29u''@;'; put 'put ''c3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLmlmQWN0aXZlU2VydmljZT1oLHRoaXMudG9nZ2xlU2VydmljZT12LHRoaXMudGFic1NlcnZpY2U9eSx0aGlzLnRhYnNJZD1DLHRoaXMuY29tbW9uU3RyaW5ncz1JLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl90YWJMaW5rRGlyZWN0aXZlcz1b''@;'; put 'put ''XSx0aGlzLnRhYkxpbmtFbGVtZW50cz1bXSx0aGlzLl9tb3VzZWRvd249ITF9Z2V0IG92ZXJmbG93UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fdGFiTGlua0RpcmVjdGl2ZXMuZmlsdGVyKGg9PiFoLmluT3ZlcmZsb3cpLmxlbmd0aH1zZXQgdGFiQ29udGVudFZpZXdDb250YWluZXIoaCl7dGhp''@;'; put 'put ''cy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lcj1ofXNldCBsYXlvdXQoaCl7T2JqZWN0LmtleXMoRXYpLm1hcCh2PT5Fdlt2XSkuaW5kZXhPZihoKT49MCYmKHRoaXMudGFic1NlcnZpY2UubGF5b3V0PWgpfWdldCBsYXlvdXQoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5s''@;'; put 'put ''YXlvdXR9Z2V0IHRhYkxpbmtEaXJlY3RpdmVzKCl7cmV0dXJuIHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzfWdldCBhY3RpdmVUYWJJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMudGFic1NlcnZpY2Uub3ZlcmZsb3dUYWJzLmluZGV4T2YodGhpcy50YWJzU2VydmljZS5hY3RpdmVUYWIpPi0xfWdl''@;'; put 'put ''dCBhY3RpdmVUYWJQb3NpdGlvbigpe3JldHVybiB0aGlzLl90YWJMaW5rRGlyZWN0aXZlcy5maW5kSW5kZXgoaD0+aC5hY3RpdmUpfWdldCB0YWJJZHMoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5jaGlsZHJlbi5tYXAoaD0+aC50YWJMaW5rLnRhYkxpbmtJZCkuam9pbigiICIpfWdldCBp''@;'; put 'put ''c0N1cnJlbnRJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMua2V5Rm9jdXMuY3VycmVudD49dGhpcy5vdmVyZmxvd1Bvc2l0aW9ufWdldCBpc1ZlcnRpY2FsKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09RXYuVkVSVElDQUx9dG9nZ2xlT3ZlcmZsb3dPblBvc2l0aW9uKGgpe3RoaXMudG9nZ2xlU2Vy''@;'; put 'put ''dmljZS5vcGVuPWg+PXRoaXMub3ZlcmZsb3dQb3NpdGlvbn1zZXQgdGFiT3ZlcmZsb3dFbChoKXt0aGlzLl90YWJPdmVyZmxvd0VsPWgmJmgubmF0aXZlRWxlbWVudCx0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmaCYmdGhpcy5rZXlGb2N1cy5mb2N1c0N1cnJlbnQoKX1yZXNldEtleUZvY3Vz''@;'; put 'put ''Q3VycmVudFRvQWN0aXZlKGgpeyF0aGlzLmtleUZvY3VzLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoaC5yZWxhdGVkVGFyZ2V0KSYmdGhpcy5rZXlGb2N1cy5jdXJyZW50IT09dGhpcy5hY3RpdmVUYWJQb3NpdGlvbiYmKHRoaXMua2V5Rm9jdXMuY3VycmVudD10aGlzLmFjdGl2ZVRhYlBvc2l0''@;'; put 'put ''aW9uKX10b2dnbGVPdmVyZmxvd09uQ2xpY2soKXt0aGlzLmtleUZvY3VzLm1vdmVUbyh0aGlzLmlzQ3VycmVudEluT3ZlcmZsb3cmJnRoaXMudG9nZ2xlU2VydmljZS5vcGVuP3RoaXMub3ZlcmZsb3dQb3NpdGlvbi0xOnRoaXMub3ZlcmZsb3dQb3NpdGlvbiksdGhpcy5fbW91c2Vkb3duPSEx''@;'; put 'put ''fW9wZW5PdmVyZmxvd09uRm9jdXMoKXshdGhpcy5fbW91c2Vkb3duJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJnRoaXMua2V5Rm9jdXMubW92ZVRvKHRoaXMuYWN0aXZlVGFiUG9zaXRpb24pfWNsb3NlT25Gb2N1c091dChoKXshdGhpcy5fdGFiT3ZlcmZsb3dFbC5jb250YWlucyhoLnJl''@;'; put 'put ''bGF0ZWRUYXJnZXQpJiZ0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmIXRoaXMuX21vdXNlZG93biYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExLHRoaXMudGFiTGlua0VsZW1lbnRzW3RoaXMuYWN0aXZlVGFiUG9zaXRpb25dPT09aC5yZWxhdGVkVGFyZ2V0JiYodGhpcy5rZXlGb2N1cy5j''@;'; put 'put ''dXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb24pKX1jbG9zZU9uRXNjYXBlS2V5KCl7dGhpcy5rZXlGb2N1cy5tb3ZlVG8odGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfWNsb3NlT25PdXRzaWRlQ2xpY2soaCx2KXtoLnRhcmdldD09PXZ8fHYuY29udGFpbnMoaC50YXJnZXQpfHwhdGhpcy5f''@;'; put 'put ''dGFiT3ZlcmZsb3dFbC5jb250YWlucyhoLnRhcmdldCkmJnRoaXMuaXNDdXJyZW50SW5PdmVyZmxvdyYmdGhpcy5rZXlGb2N1cy5tb3ZlVG8odGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfWxpc3RlbkZvclRhYkxpbmtDaGFuZ2VzKCl7cmV0dXJuIHRoaXMudGFicy5jaGFuZ2VzLnBpcGUoY3ko''@;'; put 'put ''dGhpcy50YWJzLm1hcChoPT5oLnRhYkxpbmspKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5fdGFiTGlua0RpcmVjdGl2ZXM9dGhpcy50YWJzLm1hcChoPT5oLnRhYkxpbmspLHRoaXMudGFiTGlua0VsZW1lbnRzPXRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzLm1hcChoPT5oLmVsLm5hdGl2ZUVsZW1l''@;'; put 'put ''bnQpfSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JUYWJMaW5rQ2hhbmdlcygpKSx2b2lkIDA9PT10aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50JiZ0aGlzLnRhYkxpbmtEaXJlY3RpdmVzWzBdJiZ0aGlzLnRhYkxpbmtEaXJl''@;'; put 'put ''Y3RpdmVzWzBdLmFjdGl2YXRlKCksdGhpcy5rZXlGb2N1cy5jdXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb259bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT57aC51bnN1YnNjcmliZSgpfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4gbmV3KGh8fGQpKEt0KHdTKSxLdChFdCksS3QoWlopLEt0KG1oZSksS3QoRmEpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXRhYnMiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmUzAoeSxtTyw0KSwyJmgpe2xldCBDO3ppKEM9''@;'; put 'put ''QWkoKSkmJih2LnRhYnM9Qyl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJihnMChlZmUsNyxNciksZzAoS0wsNyksZzAodmhlLDUsX28pKSwyJmgpe2xldCB5O3ppKHk9QWkoKSkmJih2LnRhYkNvbnRlbnRWaWV3Q29udGFpbmVyPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2Lmtl''@;'; put 'put ''eUZvY3VzPXkuZmlyc3QpLHppKHk9QWkoKSkmJih2LnRhYk92ZXJmbG93RWw9eS5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmSGkoInRhYnMtdmVydGljYWwiLHYuaXNWZXJ0aWNhbCl9LGlucHV0czp7bGF5b3V0OlsiY2xyTGF5b3V0IiwibGF5''@;'; put 'put ''b3V0Il19LGZlYXR1cmVzOltnbyhbd1MsRXQsWlosdUJlXSldLGRlY2xzOjUsdmFyczo0LGNvbnN0czpbWyJyb2xlIiwidGFibGlzdCIsImNsckRpcmVjdGlvbiIsImJvdGgiLDEsIm5hdiIsMywiY2xyS2V5Rm9jdXMiLCJjbHJGb2N1c0NoYW5nZSIsImZvY3Vzb3V0Il0sWzQsIm5nRm9yIiwi''@;'; put 'put ''bmdGb3JPZiJdLFs0LCJuZ0lmIl0sWyJ0YWJDb250ZW50Vmlld0NvbnRhaW5lciIsIiJdLFsicm9sZSIsInByZXNlbnRhdGlvbiIsMSwibmF2LWl0ZW0iXSxbMywibmdUZW1wbGF0ZU91dGxldCJdLFsicm9sZSIsInByZXNlbnRhdGlvbiIsMSwidGFicy1vdmVyZmxvdyIsImJvdHRvbS1yaWdo''@;'; put 'put ''dCJdLFsicm9sZSIsImFwcGxpY2F0aW9uIiwxLCJuYXYtaXRlbSJdLFsidHlwZSIsImJ1dHRvbiIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiYnRuIiwiYnRuLWxpbmsiLCJuYXYtbGluayIsImRyb3Bkb3duLXRvZ2dsZSIsMywibW91c2Vkb3duIiwiZm9jdXMiLCJjbGljayJdLFsidGFiT3Zl''@;'; put 'put ''cmZsb3dUcmlnZ2VyIiwiIl0sWyJzaGFwZSIsImVsbGlwc2lzLWhvcml6b250YWwiLCJzdGF0dXMiLCJ0b2dnbGVTZXJ2aWNlLm9wZW4gPyAnaW5mbycgOiBudWxsIl0sWzMsImtleWRvd24uZXNjIiwiY2xpY2siLCJmb2N1c291dCIsNCwibmdJZiJdLFszLCJrZXlkb3duLmVzYyIsImNsaWNr''@;'; put 'put ''IiwiZm9jdXNvdXQiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsInVsIiwwKSxabigiY2xyRm9jdXNDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LnRvZ2dsZU92ZXJmbG93T25Qb3NpdGlvbihDKX0pKCJmb2N1''@;'; put 'put ''c291dCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYucmVzZXRLZXlGb2N1c0N1cnJlbnRUb0FjdGl2ZShDKX0pLG5uKDEsbmZlLDIsMSwibmctY29udGFpbmVyIiwxKSxubigyLGFmZSw3LDEwLCJuZy1jb250YWluZXIiLDIpLGl0KCksaDEoMyxudWxsLDMpKSwyJmgmJih4dCgiY2xyS2V5Rm9jdXMi''@;'; put 'put ''LHYudGFiTGlua0VsZW1lbnRzKSxHaSgiYXJpYS1vd25zIix2LnRhYklkcyksc3QoMSkseHQoIm5nRm9yT2YiLHYudGFiTGlua0RpcmVjdGl2ZXMpLHN0KDEpLHh0KCJuZ0lmIix2LnRhYnNTZXJ2aWNlLm92ZXJmbG93VGFicy5sZW5ndGg+MCkpfSxkZXBlbmRlbmNpZXM6W0tMLHZoZSxxbCxC''@;'; put 'put ''byx6ZCxrc10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksZkJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyhnWCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVp''@;'; put 'put ''bmo9bTAoe2ltcG9ydHM6W1thYSx3cCxacyxvQmUsVGZlXSx3cF19KSxkfSkoKSxBaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMubmF2R3JvdXBDb3VudD0wfXJlZ2lzdGVyTmF2R3JvdXAoKXt0aGlzLm5hdkdyb3VwQ291bnQrK311bnJlZ2lzdGVyTmF2R3JvdXAoKXt0aGlz''@;'; put 'put ''Lm5hdkdyb3VwQ291bnQtLX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCkseWhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pY29ucz0w''@;'; put 'put ''fWdldCBoYXNJY29ucygpe3JldHVybiB0aGlzLl9pY29ucz4wfXJlZ2lzdGVySWNvbigpe3RoaXMuX2ljb25zKyt9dW5yZWdpc3Rlckljb24oKXt0aGlzLl9pY29ucy0tfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0''@;'; put 'put ''b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx3aGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2FuaW1hdGVPbkNvbGxhcHNlZD1uZXcgJGUsdGhpcy5fY29sbGFwc2VkQ2hhbmdlZD1uZXcgJGUsdGhpcy5fY29sbGFwc2VkPSExLHRoaXMuX2NvbGxhcHNpYmxl''@;'; put 'put ''PSExfWdldCBhbmltYXRlT25Db2xsYXBzZWQoKXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uQ29sbGFwc2VkLmFzT2JzZXJ2YWJsZSgpfWdldCBjb2xsYXBzZWRDaGFuZ2VkKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNlZENoYW5nZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IGNvbGxhcHNlZCgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9jb2xsYXBzZWR9c2V0IGNvbGxhcHNlZChoKXtoPSEhaCx0aGlzLmNvbGxhcHNpYmxlJiZ0aGlzLl9jb2xsYXBzZWQhPT1oJiZ0aGlzLnVwZGF0ZUNvbGxhcHNlQmVoYXZpb3IoaCl9Z2V0IGNvbGxhcHNpYmxlKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNpYmxlfXNldCBjb2xsYXBz''@;'; put 'put ''aWJsZShoKXt0aGlzLl9jb2xsYXBzaWJsZSE9PShoPSEhaCkmJighaCYmdGhpcy5jb2xsYXBzZWQmJnRoaXMudXBkYXRlQ29sbGFwc2VCZWhhdmlvcighMSksdGhpcy5fY29sbGFwc2libGU9aCl9dXBkYXRlQ29sbGFwc2VCZWhhdmlvcihoKXt0aGlzLl9hbmltYXRlT25Db2xsYXBzZWQubmV4''@;'; put 'put ''dChoKSx0aGlzLl9jb2xsYXBzZWQ9aCx0aGlzLl9jb2xsYXBzZWRDaGFuZ2VkLm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9cGkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHN3ZT0oKCk9''@;'; put 'put ''PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuX25hdlNlcnZpY2U9aCx0aGlzLl9uYXZJY29uU2VydmljZT12LHRoaXMuX25hdkdyb3VwUmVnaXN0cmF0aW9uU2VydmljZT15LHRoaXMuY29tbW9uU3RyaW5ncz1DLHRoaXMuX2NvbGxhcHNlZENoYW5nZWQ9bmV3IGZuKCEwKSx0''@;'; put 'put ''aGlzLl9zdWI9dGhpcy5fbmF2U2VydmljZS5jb2xsYXBzZWRDaGFuZ2VkLnN1YnNjcmliZShJPT57dGhpcy5fY29sbGFwc2VkQ2hhbmdlZC5lbWl0KEkpfSl9Z2V0IGNvbGxhcHNpYmxlKCl7cmV0dXJuIHRoaXMuX25hdlNlcnZpY2UuY29sbGFwc2libGV9c2V0IGNvbGxhcHNpYmxlKGgpe3Ro''@;'; put 'put ''aXMuX25hdlNlcnZpY2UuY29sbGFwc2libGU9aH1nZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuX25hdlNlcnZpY2UuY29sbGFwc2VkfXNldCBjb2xsYXBzZWQoaCl7dGhpcy5fbmF2U2VydmljZS5jb2xsYXBzZWQ9aH1nZXQgaGFzTmF2R3JvdXBzKCl7cmV0dXJuIHRoaXMuX25hdkdyb3Vw''@;'; put 'put ''UmVnaXN0cmF0aW9uU2VydmljZS5uYXZHcm91cENvdW50PjB9Z2V0IGhhc0ljb25zKCl7cmV0dXJuIHRoaXMuX25hdkljb25TZXJ2aWNlLmhhc0ljb25zfWdldCBhcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5jb2xsYXBzaWJsZT90aGlzLmNvbGxhcHNlZD8iZmFsc2UiOiJ0cnVlIjpudWxs''@;'; put 'put ''fXRvZ2dsZUJ5QnV0dG9uKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkfW5nT25EZXN0cm95KCl7dGhpcy5fc3ViLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHdoZSksS3QoeWhlKSxLdChBaGUpLEt0KEZh''@;'; put 'put ''KSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci12ZXJ0aWNhbC1uYXYiXV0saG9zdEF0dHJzOlsxLCJjbHItdmVydGljYWwtbmF2Il0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkhpKCJpcy1jb2xsYXBzZWQiLHYuY29sbGFwc2Vk''@;'; put 'put ''KSgiaGFzLW5hdi1ncm91cHMiLHYuaGFzTmF2R3JvdXBzKSgiaGFzLWljb25zIix2Lmhhc0ljb25zKX0saW5wdXRzOntjb2xsYXBzaWJsZTpbImNsclZlcnRpY2FsTmF2Q29sbGFwc2libGUiLCJjb2xsYXBzaWJsZSJdLGNvbGxhcHNlZDpbImNsclZlcnRpY2FsTmF2Q29sbGFwc2VkIiwiY29s''@;'; put 'put ''bGFwc2VkIl19LG91dHB1dHM6e19jb2xsYXBzZWRDaGFuZ2VkOiJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNlZENoYW5nZSJ9LGZlYXR1cmVzOltnbyhbd2hlLHloZSxBaGVdKV0sbmdDb250ZW50U2VsZWN0b3JzOnZhLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwiY2xh''@;'; put 'put ''c3MiLCJuYXYtdHJpZ2dlciIsMywib24tY29sbGFwc2UiLCJjbGljayIsNCwibmdJZiJdLFsxLCJuYXYtY29udGVudCJdLFsiY2xhc3MiLCJuYXYtYnRuIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwidGFiaW5kZXgiLCItMSIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEs''@;'; put 'put ''Im5hdi10cmlnZ2VyIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZS1kb3VibGUiLDEsIm5hdi10cmlnZ2VyLWljb24iXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInRhYmluZGV4IiwiLTEiLDEsIm5hdi1idG4iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAo''@;'; put 'put ''KSxubigwLGxmZSwyLDYsImJ1dHRvbiIsMCksdHQoMSwiZGl2IiwxKSxWaSgyKSxubigzLHNmZSwxLDEsImJ1dHRvbiIsMiksaXQoKSksMiZoJiYoeHQoIm5nSWYiLHYuY29sbGFwc2libGUpLHN0KDMpLHh0KCJuZ0lmIix2LmNvbGxhcHNpYmxlJiZ2LmNvbGxhcHNlZCkpfSxkZXBlbmRlbmNp''@;'; put 'put ''ZXM6W0JvLGtzXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxiaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2V4cGFuZENoYW5nZT1uZXcgJGV9Z2V0IGV4cGFuZENoYW5nZSgpe3JldHVybiB0aGlzLl9leHBhbmRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9ZXhwYW5kKCl7dGhp''@;'; put 'put ''cy5fZXhwYW5kQ2hhbmdlLm5leHQoITApfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx1d2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7''@;'; put 'put ''dGhpcy5kZXN0cm95JD1uZXcgJGUseSYmcjgoaC5uYXRpdmVFbGVtZW50LCJjbGljayIpLnBpcGUobjgodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKT0+e3kuZXhwYW5kKCksdi5tYXJrRm9yQ2hlY2soKX0pfW5nT25EZXN0cm95KCl7dGhpcy5kZXN0cm95JC5uZXh0KCl9fXJldHVybiBk''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSxLdChkMSksS3QoYmhlLDgpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyVmVydGljYWxOYXZMaW5rIiwiIl1dLGhvc3RBdHRyczpbMSwibmF2LWxpbmsiXSxhdHRyczpmZmUs''@;'; put 'put ''bmdDb250ZW50U2VsZWN0b3JzOmRmZSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1sxLCJuYXYtdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKGhmZSksVmkoMCksdHQoMSwic3BhbiIsMCksVmkoMiwxKSxpdCgpKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksZ0JlPSgo''@;'; put 'put ''KT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucygkNyx5WCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxacyx3cCxiU10sd3AsWnMs''@;'; put 'put ''YlNdfSksZH0pKCksbUJlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1FSZSxpQmUsZkJlLGdCZV19KSxkfSkoKSxjd2U9KCgpPT57''@;'; put 'put ''Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9kb2N1bWVudD1ofXN0b3BTY3JvbGxpbmcoKXt0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoIm5vLXNjcm9sbGluZyIpfXJlc3VtZVNjcm9sbGluZygpe3RoaXMuX2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJu''@;'; put 'put ''by1zY3JvbGxpbmciKSYmdGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJuby1zY3JvbGxpbmciKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkodXMpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAy''@;'; put 'put ''NzVmYWN9KSxkfSkoKSxhMz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLl9zY3JvbGxpbmdTZXJ2aWNlPWgsdGhpcy5jb21tb25TdHJpbmdzPXYsdGhpcy5tb2RhbElkPXksdGhpcy5fb3Blbj0hMSx0aGlzLl9vcGVuQ2hhbmdlZD1uZXcgZm4oITEpLHRoaXMuY2xvc2Fi''@;'; put 'put ''bGU9ITAsdGhpcy5zdGF0aWNCYWNrZHJvcD0hMCx0aGlzLnNraXBBbmltYXRpb249ImZhbHNlIix0aGlzLmJ5cGFzc1Njcm9sbFNlcnZpY2U9ITEsdGhpcy5zdG9wQ2xvc2U9ITEsdGhpcy5hbHRDbG9zZT1uZXcgZm4oITEpLHRoaXMubGFiZWxsZWRCeT10aGlzLm1vZGFsSWR9bmdPbkNoYW5n''@;'; put 'put ''ZXMoaCl7IXRoaXMuYnlwYXNzU2Nyb2xsU2VydmljZSYmaCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgsIl9vcGVuIikmJihoLl9vcGVuLmN1cnJlbnRWYWx1ZT90aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnN0b3BTY3JvbGxpbmcoKTp0aGlzLl9zY3JvbGxpbmdTZXJ2''@;'; put 'put ''aWNlLnJlc3VtZVNjcm9sbGluZygpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Njcm9sbGluZ1NlcnZpY2UucmVzdW1lU2Nyb2xsaW5nKCl9b3Blbigpe3RoaXMuX29wZW58fCh0aGlzLl9vcGVuPSEwLHRoaXMuX29wZW5DaGFuZ2VkLmVtaXQoITApKX1jbG9zZSgpe3RoaXMuc3RvcENsb3NlP3Ro''@;'; put 'put ''aXMuYWx0Q2xvc2UuZW1pdCghMSk6IXRoaXMuY2xvc2FibGV8fCF0aGlzLl9vcGVufHwodGhpcy5fb3Blbj0hMSx0aGlzLmZvY3VzVHJhcC5zZXRQcmV2aW91c0ZvY3VzKCkpfWZhZGVEb25lKGgpeyJ2b2lkIj09PWgudG9TdGF0ZSYmdGhpcy5fb3BlbkNoYW5nZWQuZW1pdCghMSl9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGN3ZSksS3QoRmEpLEt0KEQwKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1tb2RhbCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJmcwKHd3LDUpLDImaCl7bGV0''@;'; put 'put ''IHk7emkoeT1BaSgpKSYmKHYuZm9jdXNUcmFwPXkuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJrZXl1cC5lc2NhcGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY2xvc2UoKX0sMCx6RSksMiZoJiZIaSgib3BlbiIsdi5fb3Blbil9LGlucHV0''@;'; put 'put ''czp7X29wZW46WyJjbHJNb2RhbE9wZW4iLCJfb3BlbiJdLGNsb3NhYmxlOlsiY2xyTW9kYWxDbG9zYWJsZSIsImNsb3NhYmxlIl0sc2l6ZTpbImNsck1vZGFsU2l6ZSIsInNpemUiXSxzdGF0aWNCYWNrZHJvcDpbImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCJzdGF0aWNCYWNrZHJvcCJdLHNr''@;'; put 'put ''aXBBbmltYXRpb246WyJjbHJNb2RhbFNraXBBbmltYXRpb24iLCJza2lwQW5pbWF0aW9uIl0sYnlwYXNzU2Nyb2xsU2VydmljZTpbImNsck1vZGFsT3ZlcnJpZGVTY3JvbGxTZXJ2aWNlIiwiYnlwYXNzU2Nyb2xsU2VydmljZSJdLHN0b3BDbG9zZTpbImNsck1vZGFsUHJldmVudENsb3NlIiwi''@;'; put 'put ''c3RvcENsb3NlIl0sbGFiZWxsZWRCeTpbImNsck1vZGFsTGFiZWxsZWRCeUlkIiwibGFiZWxsZWRCeSJdfSxvdXRwdXRzOntfb3BlbkNoYW5nZWQ6ImNsck1vZGFsT3BlbkNoYW5nZSIsYWx0Q2xvc2U6ImNsck1vZGFsQWx0ZXJuYXRlQ2xvc2UifSxmZWF0dXJlczpbZ28oW1JjXSxbY3dlXSks''@;'; put 'put ''ZDJdLG5nQ29udGVudFNlbGVjdG9yczp2ZmUsZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbImNsckZvY3VzVHJhcCIsIiIsImNsYXNzIiwibW9kYWwiLDQsIm5nSWYiXSxbImNsckZvY3VzVHJhcCIsIiIsMSwibW9kYWwiXSxbInJvbGUiLCJkaWFsb2ciLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwi''@;'; put 'put ''bW9kYWwtZGlhbG9nIl0sWzEsImNsci1zci1vbmx5Il0sWzEsIm1vZGFsLWNvbnRlbnQtd3JhcHBlciJdLFsxLCJtb2RhbC1jb250ZW50Il0sWzEsIm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSJdLFsiY2xyRm9jdXNPblZpZXdJbml0IiwiIiwxLCJtb2RhbC10aXRsZS13cmFwcGVyIiwzLCJp''@;'; put 'put ''ZCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiY2xvc2UiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWJvZHktd3JhcHBlciJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1iYWNrZHJvcCIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImNsb3NlIiwzLCJj''@;'; put 'put ''bGljayJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMChtZmUpLG5uKDAsZ2ZlLDE3LDE0LCJkaXYiLDApKSwyJmgmJnh0KCJuZ0lmIix2Ll9vcGVuKX0sZGVwZW5kZW5jaWVzOltCbyx3dyxXZmUsa3NdLHN0eWxlczpbIltfbmdob3N0''@;'; put 'put ''LSVDT01QJV17ZGlzcGxheTpub25lfS5vcGVuW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZX0iXSxkYXRhOnthbmltYXRpb246W0pjKCJmYWRlRG93biIsW2J1KCIqID0+IGZhbHNlIixbeGwoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAtMjUlKSJ9KSxmYygiMC4y''@;'; put 'put ''cyBlYXNlLWluLW91dCIpXSksYnUoImZhbHNlID0+ICoiLFtmYygiMC4ycyBlYXNlLWluLW91dCIseGwoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAtMjUlKSJ9KSldKV0pLEpjKCJmYWRlIixbYnUoInZvaWQgPT4gKiIsW3hsKHtvcGFjaXR5OjB9KSxmYygiMC4ycyBlYXNl''@;'; put 'put ''LWluLW91dCIseGwoe29wYWNpdHk6Ljg1fSkpXSksYnUoIiogPT4gdm9pZCIsW2ZjKCIwLjJzIGVhc2UtaW4tb3V0Iix4bCh7b3BhY2l0eTowfSkpXSldKV19fSksZH0pKCksbDM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5yZW5kZXJlcj1oLHRoaXMuaG9zdD12LHRo''@;'; put 'put ''aXMudGFiaW5kZXg9IjAiLHRoaXMudW5saXN0ZW5lcnM9W10seS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMub2JzZXJ2ZXI9bmV3IFJlc2l6ZU9ic2VydmVyKCgpPT50aGlzLmFkZE9yUmVtb3ZlVGFiSW5kZXgoKSksdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuaG9zdC5uYXRpdmVF''@;'; put 'put ''bGVtZW50KSx0aGlzLnVubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLCgpPT57dGhpcy5hZGRPclJlbW92ZVRhYkluZGV4KCl9KSx0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwi''@;'; put 'put ''bW91c2Vkb3duIiwoKT0+e3RoaXMucmVtb3ZlVGFiSW5kZXgoKX0pKX0pfW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLnVubGlzdGVuZXJzLmxlbmd0aDspdGhpcy51bmxpc3RlbmVycy5wb3AoKSgpO3RoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMub2JzZXJ2ZXI9bnVsbH1hZGRUYWJJ''@;'; put 'put ''bmRleCgpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIsdGhpcy50YWJpbmRleCl9cmVtb3ZlVGFiSW5kZXgoKXt0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwidGFiaW5kZXgi''@;'; put 'put ''KX1hZGRPclJlbW92ZVRhYkluZGV4KCl7Y29uc3QgaD10aGlzLmhvc3QubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O2guY2xpZW50SGVpZ2h0PGguc2Nyb2xsSGVpZ2h0P3RoaXMuYWRkVGFiSW5kZXgoKTp0aGlzLnJlbW92ZVRhYkluZGV4KCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KERhKSxLdChfbyksS3QoZGwpKX0sZC5cdTAyNzVkaXI9WWkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiw4LCJtb2RhbC1ib2R5Il1dfSksZH0pKCksZndlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtkcy5hZGRJY29ucyh6eSl9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W1thYSxacyxjcSxiU10sWnMsYlNdfSksZH0pKCk7Y29uc3QgdkJlPXsidG9wLWxlZnQiOnthbmNob3JQb2ludDpwMC5UT1Bf''@;'; put 'put ''Q0VOVEVSLHBvcG92ZXJQb2ludDpwMC5CT1RUT01fUklHSFQsb2Zmc2V0WTotMTAsb2Zmc2V0WDowfSwidG9wLW1pZGRsZSI6e2FuY2hvclBvaW50OnAwLlRPUF9DRU5URVIscG9wb3ZlclBvaW50OnAwLkJPVFRPTV9DRU5URVIsb2Zmc2V0WTotMTAsb2Zmc2V0WDowfSwidG9wLXJpZ2h0Ijp7''@;'; put 'put ''YW5jaG9yUG9pbnQ6cDAuVE9QX0NFTlRFUixwb3BvdmVyUG9pbnQ6cDAuQk9UVE9NX0xFRlQsb2Zmc2V0WTotMTAsb2Zmc2V0WDowfSwicmlnaHQtdG9wIjp7YW5jaG9yUG9pbnQ6cDAuUklHSFRfQ0VOVEVSLHBvcG92ZXJQb2ludDpwMC5MRUZUX0JPVFRPTSxvZmZzZXRZOjIsb2Zmc2V0WDox''@;'; put 'put ''NH0sInJpZ2h0LW1pZGRsZSI6e2FuY2hvclBvaW50OnAwLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6cDAuTEVGVF9DRU5URVIsb2Zmc2V0WTo2LG9mZnNldFg6MTR9LCJyaWdodC1ib3R0b20iOnthbmNob3JQb2ludDpwMC5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OnAwLkxFRlRfVE9Q''@;'; put 'put ''LG9mZnNldFk6LTEsb2Zmc2V0WDoxNH0sImJvdHRvbS1yaWdodCI6e2FuY2hvclBvaW50OnAwLkJPVFRPTV9DRU5URVIscG9wb3ZlclBvaW50OnAwLlRPUF9MRUZULG9mZnNldFk6OSxvZmZzZXRYOi0xfSwiYm90dG9tLW1pZGRsZSI6e2FuY2hvclBvaW50OnAwLkJPVFRPTV9DRU5URVIscG9w''@;'; put 'put ''b3ZlclBvaW50OnAwLlRPUF9DRU5URVIsb2Zmc2V0WTo5LG9mZnNldFg6MTJ9LCJib3R0b20tbGVmdCI6e2FuY2hvclBvaW50OnAwLkJPVFRPTV9DRU5URVIscG9wb3ZlclBvaW50OnAwLlRPUF9SSUdIVCxvZmZzZXRZOjksb2Zmc2V0WDowfSwibGVmdC1ib3R0b20iOnthbmNob3JQb2ludDpw''@;'; put 'put ''MC5MRUZUX0NFTlRFUixwb3BvdmVyUG9pbnQ6cDAuUklHSFRfVE9QLG9mZnNldFk6MCxvZmZzZXRYOi0xNH0sImxlZnQtbWlkZGxlIjp7YW5jaG9yUG9pbnQ6cDAuTEVGVF9DRU5URVIscG9wb3ZlclBvaW50OnAwLlJJR0hUX0NFTlRFUixvZmZzZXRZOjQsb2Zmc2V0WDotMTR9LCJsZWZ0LXRv''@;'; put 'put ''cCI6e2FuY2hvclBvaW50OnAwLkxFRlRfQ0VOVEVSLHBvcG92ZXJQb2ludDpwMC5SSUdIVF9CT1RUT00sb2Zmc2V0WTowLG9mZnNldFg6LTE0fSxkZWZhdWx0OnthbmNob3JQb2ludDpwMC5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OnAwLkxFRlRfQ0VOVEVSLG9mZnNldFk6NixvZmZzZXRY''@;'; put 'put ''OjE0fX0sQUJlPVsidG9wLWxlZnQiLCJ0b3AtbWlkZGxlIiwidG9wLXJpZ2h0IiwicmlnaHQtdG9wIiwicmlnaHQtbWlkZGxlIiwicmlnaHQtYm90dG9tIiwiYm90dG9tLXJpZ2h0IiwiYm90dG9tLW1pZGRsZSIsImJvdHRvbS1sZWZ0IiwibGVmdC1ib3R0b20iLCJsZWZ0LW1pZGRsZSIsImxl''@;'; put 'put ''ZnQtdG9wIl07bGV0IGh3ZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgZGhle2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqLGNlLF9lKXtpZihzdXBlcihoLHYpLHRoaXMuY29tbW9uU3RyaW5ncz15LHRoaXMuc2lnbnBvc3RDb250ZW50SWQ9Qyx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlPUksdGhpcy5z''@;'; put 'put ''aWducG9zdEZvY3VzTWFuYWdlcj1qLHRoaXMucGxhdGZvcm1JZD1jZSwhdil0aHJvdyBuZXcgRXJyb3IoImNsci1zaWducG9zdC1jb250ZW50IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLXNpZ25wb3N0Iik7dGhpcy5wb3NpdGlvbj0icmlnaHQtbWlkZGxlIix0aGlzLmNs''@;'; put 'put ''b3NlT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5zaWducG9zdElkU2VydmljZS5zZXRJZChDKSx0aGlzLmRvY3VtZW50PV9lfWNsb3NlKCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITF9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufXNldCBwb3NpdGlvbihoKXt0aGlzLnJl''@;'; put 'put ''bmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCx0aGlzLnBvc2l0aW9uKSx0aGlzLl9wb3NpdGlvbj1oJiZBQmUuaW5kZXhPZihoKT4tMT9oOiJyaWdodC1taWRkbGUiLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMucG9zaXRp''@;'; put 'put ''b24pO2NvbnN0IHY9dkJlW3RoaXMucG9zaXRpb25dO3RoaXMuYW5jaG9yUG9pbnQ9di5hbmNob3JQb2ludCx0aGlzLnBvcG92ZXJQb2ludD12LnBvcG92ZXJQb2ludCx0aGlzLnBvcG92ZXJPcHRpb25zLm9mZnNldFk9di5vZmZzZXRZLHRoaXMucG9wb3Zlck9wdGlvbnMub2Zmc2V0WD12Lm9m''@;'; put 'put ''ZnNldFh9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLGFsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyh0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZ0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyLmZvY3VzVHJpZ2dlcigpfX1y''@;'; put 'put ''ZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh4cyksS3QoJEwsOCksS3QoRmEpLEt0KEQwKSxLdChlaGUpLEt0KHFmZSksS3QoRTIpLEt0KHVzKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1zaWducG9zdC1jb250ZW50''@;'; put 'put ''Il1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoRDMoImlkIix2LnNpZ25wb3N0Q29udGVudElkKSxIaSgic2lnbnBvc3QtY29udGVudCIsITApKX0saW5wdXRzOntwb3NpdGlvbjpbImNsclBvc2l0aW9uIiwicG9zaXRpb24iXX0sZmVhdHVyZXM6W2dvKFtS''@;'; put 'put ''Y10pLFJvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6dmEsZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwic2lnbnBvc3Qtd3JhcCJdLFsxLCJwb3BvdmVyLXBvaW50ZXIiXSxbMSwic2lnbnBvc3QtY29udGVudC1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLDEsInNpZ25wb3N0LWFjdGlvbiIsImNs''@;'; put 'put ''b3NlIiwzLCJjbGljayJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiXSxbMSwic2lnbnBvc3QtY29udGVudC1ib2R5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoJDAoKSx0dCgwLCJkaXYiLDApLGJyKDEsImRpdiIsMSksdHQoMiwiZGl2IiwyKSgzLCJidXR0b24iLDMpLFpuKCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jbG9zZSgpfSksYnIoNCwiY2RzLWljb24iLDQpLGl0KCkoKSx0dCg1LCJkaXYiLDUpLFZpKDYpLGl0KCkoKSksMiZoJiYoc3QoMyksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLnNpZ25wb3N0Q2xvc2UpKCJhcmlhLWNvbnRy''@;'; put 'put ''b2xzIix2LnNpZ25wb3N0Q29udGVudElkKSxzdCgxKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSl9LGRlcGVuZGVuY2llczpba3NdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLHlCZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7ZHMuYWRkSWNvbnMoenksd1gp''@;'; put 'put ''fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWEsWnMsYlNdLHdwXX0pLGR9KSgpLGtCZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltbYWFdLHdwLFpzXX0pLGR9KSgpLFNCZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0s''@;'; put 'put ''ZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOltwaGUseUJlLGtCZV19KSxkfSkoKSxNQmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxk''@;'; put 'put ''Llx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhXV19KSxkfSkoKSx4QmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKG8yZSxhMmUsT2ssbDJlKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0''@;'; put 'put ''eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLFpzLF9aXSxacyxfWl19KSxkfSkoKSxPQmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2RzLmFkZEljb25zKE9rKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1''@;'; put 'put ''bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbW2FhLGZ3ZSxud2VdXX0pLGR9KSgpLE13PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVp''@;'; put 'put ''bmo9bTAoe2ltcG9ydHM6W1VSZSxIUmUsWnMsZndlLFlmZSx3cCxjcSxiUyx3UmUsbGwsX3llLG1CZSxTQmUsT0JlLFR5ZSxydCxfWixNQmUsbG8seEJlXX0pLGR9KSgpO2Z1bmN0aW9uIFJCZShkLGcpezEmZCYmKHR0KDAsInNwYW4iLDEwKSxXdCgxLCJsb2FkaW5nIiksaXQoKSl9ZnVuY3Rp''@;'; put 'put ''b24gQkJlKGQsZyl7MSZkJiYodHQoMCwic3BhbiIsMTEpLFd0KDEsImxvYWRlZCIpLGl0KCkpfWZ1bmN0aW9uIFBCZShkLGcpezEmZCYmKHR0KDAsInNwYW4iLDEyKSxXdCgxLCJmYWlsZWQiKSxpdCgpKX1mdW5jdGlvbiBGQmUoZCxnKXtpZigxJmQmJih0dCgwLCJwIikoMSwiY29kZSIpLFd0''@;'; put 'put ''KDIpLGl0KCksV3QoMywiIFx4YTAgIiksbm4oNCxSQmUsMiwwLCJzcGFuIiw3KSxubig1LEJCZSwyLDAsInNwYW4iLDgpLG5uKDYsUEJlLDIsMCwic3BhbiIsOSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDIpLGppKGgucHJvZ3JhbSksc3QoMikseHQoIm5nSWYiLGgucnVu''@;'; put 'put ''bmluZyksc3QoMSkseHQoIm5nSWYiLCFoLnJ1bm5pbmcmJmguc3VjY2Vzc2Z1bCksc3QoMSkseHQoIm5nSWYiLCFoLnJ1bm5pbmcmJiFoLnN1Y2Nlc3NmdWwpfX1mdW5jdGlvbiBIQmUoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItc2lnbnBvc3QtY29udGVudCIsNSksbm4oMSxGQmUsNyw0LCJw''@;'; put 'put ''Iiw2KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTt4dCgiY2xyUG9zaXRpb24iLCJib3R0b20tbWlkZGxlIiksc3QoMSkseHQoIm5nRm9yT2YiLGgucmVxdWVzdHMpfX1sZXQgTkJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yZXF1ZXN0cz1bXSx0''@;'; put 'put ''aGlzLl9sb2FkaW5nU3ViPW5ldyBUZX1uZ09uSW5pdCgpe31uZ09uRGVzdHJveSgpe3RoaXMuX2xvYWRpbmdTdWIudW5zdWJzY3JpYmUoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltb''@;'; put 'put ''ImFwcC1sb2FkaW5nLWluZGljYXRvciJdXSxkZWNsczo2LHZhcnM6Nixjb25zdHM6W1sxLCJsb2FkaW5nLWluZGljYXRvciJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwxLCJzcGlubmVyIiwic3Bpbm5lci1zbSIsInNwaW5uZXItaW52ZXJzZSJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwi''@;'; put 'put ''Iiwic2hhcGUiLCJjaGVjayIsInNpemUiLCIyMCIsMSwiaXMtaW5mbyJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwic2hhcGUiLCJlcnJvciIsInNpemUiLCIyNCIsMSwiaXMtZXJyb3IiXSxbMywiY2xyUG9zaXRpb24iLDQsImNscklmT3BlbiJdLFszLCJjbHJQb3NpdGlvbiJdLFs0LCJu''@;'; put 'put ''Z0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwicnVubmluZyIsNCwibmdJZiJdLFsiY2xhc3MiLCJzdWNjZXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZhaWwiLDQsIm5nSWYiXSxbMSwicnVubmluZyJdLFsxLCJzdWNjZXNzIl0sWzEsImZhaWwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsx''@;'; put 'put ''JmgmJih0dCgwLCJkaXYiLDApKDEsImNsci1zaWducG9zdCIpLGJyKDIsInNwYW4iLDEpKDMsImNsci1pY29uIiwyKSg0LCJjbHItaWNvbiIsMyksbm4oNSxIQmUsMiwyLCJjbHItc2lnbnBvc3QtY29udGVudCIsNCksaXQoKSgpKSwyJmgmJihzdCgyKSxJZCgiZGlzcGxheSIsdi5sb2FkaW5n''@;'; put 'put ''PyJpbmxpbmUtYmxvY2siOiJub25lIiksc3QoMSksSWQoImRpc3BsYXkiLCF2LmxvYWRpbmcmJnYucmVxdWVzdHMubGVuZ3RoPjAmJnYucmVxdWVzdHNbMF0uc3VjY2Vzc2Z1bD8iaW5saW5lLWJsb2NrIjoibm9uZSIpLHN0KDEpLElkKCJkaXNwbGF5Iiwhdi5sb2FkaW5nJiZ2LnJlcXVlc3Rz''@;'; put 'put ''Lmxlbmd0aD4wJiYhdi5yZXF1ZXN0c1swXS5zdWNjZXNzZnVsPyJpbmxpbmUtYmxvY2siOiJub25lIikpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLEcyLHl3LHRoZSxod2UsYnFdLHN0eWxlczpbIi5sb2FkaW5nLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6Mi41cmVt''@;'; put 'put ''O2hlaWdodDoyLjVyZW07ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgLnNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6IzU2NTY1NjtjdXJzb3I6YXV0b30ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5sb2FkaW5nLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2lnbnBvc3QtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNo''@;'; put 'put ''aWxke21hcmdpbi1ib3R0b206MH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxMHB4''@;'; put 'put ''fS5sb2FkaW5nLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2lnbnBvc3QtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW4ucnVubmluZ1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2U5YmYwNH0ubG9hZGluZy1pbmRp''@;'; put 'put ''Y2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuLnN1Y2Nlc3NbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MGI1MTV9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbi5mYWlsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYzkyMTAwfSJdfSksZH0pKCksVkJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2''@;'; put 'put ''KXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmxvZ2dlclNlcnZpY2U9dix0aGlzLl9zdWJzY3JpcHRpb249bmV3IFRlLHRoaXMubG9hZGluZz0hMSx0aGlzLmFsZXJ0Q2xvc2VkPSEwLHRoaXMuZGF0YT17dXNlcjpudWxsLHBhc3M6bnVsbH19bmdPbkluaXQoKXsiUmVkaXJlY3RlZCIhPT10aGlz''@;'; put 'put ''LnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKS5sb2dpbk1lY2hhbmlzbSYmKHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLnNhc1NlcnZpY2Uuc2hvdWxkTG9naW4uc3Vic2NyaWJlKHY9Pnt0aGlzLmlzQWN0aXZlPXY7bGV0IHk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpOyF5fHwo''@;'; put 'put ''dj95LmNsYXNzTGlzdC5hZGQoInNob3VsZC1sb2dpbiIpOnkuY2xhc3NMaXN0LnJlbW92ZSgic2hvdWxkLWxvZ2luIikpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9c3VibWl0KCl7dGhpcy5sb2FkaW5nfHwodGhpcy5sb2FkaW5nPSEwLHRoaXMu''@;'; put 'put ''ZGF0YS51c2VyJiZ0aGlzLmRhdGEucGFzcyYmdGhpcy5zYXNTZXJ2aWNlLmxvZ2luKHRoaXMuZGF0YS51c2VyLHRoaXMuZGF0YS5wYXNzKS50aGVuKGg9Pnt0aGlzLmxvYWRpbmc9ITEsaHx8KHRoaXMuZXJyb3JNc2c9IlVzZXJuYW1lIG9yIHBhc3N3b3JkIGludmFsaWQiLHRoaXMuYWxlcnRD''@;'; put 'put ''bG9zZWQ9ITEpfSxoPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyhoKSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5lcnJvck1zZz1oLHRoaXMuYWxlcnRDbG9zZWQ9ITF9KSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGwwKSxLdChHaCkpfSxkLlx1''@;'; put 'put ''MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtbG9naW4iXV0sZGVjbHM6MjAsdmFyczo5LGNvbnN0czpbWzEsImxvZ2luLXNpZGViYXItd3JhcHBlciJdLFsxLCJsb2dpbi1zaWRlYmFyIiwic2lkZUJhclByb3BzIl0sWyJzcmMiLCIvU0FTU3RvcmVkUHJvY2Vzcy8/X1BST0dS''@;'; put 'put ''QU09cFpLZDZGOTVqRUN2UlFsTjBMQ2ZkQT09L3dlYjkvaW1hZ2VzL2RhdGFjb250cm9sbGVyLXN2ZyIsImFsdCIsIiIsMSwibG9naW4tbG9nbyJdLFsxLCJsb2dpbiIsMywibmdTdWJtaXQiXSxbMSwidGl0bGUiXSxbMSwid2VsY29tZSJdLFsxLCJoaW50Il0sWzEsImxvZ2luLWdyb3VwIl0s''@;'; put 'put ''WyJjbHJJbnB1dCIsIiIsIm5hbWUiLCJ1c2VyIiwidHlwZSIsInRleHQiLCJwbGFjZWhvbGRlciIsIlVzZXJuYW1lIiwxLCJ1c2VybmFtZSIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNscklucHV0IiwiIiwibmFtZSIsInBhc3MiLCJ0eXBlIiwicGFzc3dvcmQiLCJwbGFjZWhv''@;'; put 'put ''bGRlciIsIlBhc3N3b3JkIiwxLCJwYXNzd29yZCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRDbG9zZWQiLCJjbHJBbGVydENsb3NlZENoYW5nZSJdLFsiY2xyLWFsZXJ0LWl0ZW0iLCIiLDEsImFsZXJ0LWl0ZW0iXSxbMSwiYWxlcnQt''@;'; put 'put ''dGV4dCJdLFsidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMsImNsckxvYWRpbmciLCJkaXNhYmxlZCJdLFsxLCJvdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiZGl2IiwwKSgxLCJkaXYiLDEpLGJyKDIsImltZyIsMiks''@;'; put 'put ''dHQoMywiZm9ybSIsMyksWm4oIm5nU3VibWl0IixmdW5jdGlvbigpe3JldHVybiB2LnN1Ym1pdCgpfSksdHQoNCwibGFiZWwiLDQpKDUsImgzIiw1KSxXdCg2LCJXZWxjb21lIHRvIiksaXQoKSxXdCg3LCIgRGF0YSBDb250cm9sbGVyICIpLHR0KDgsImg1Iiw2KSxXdCg5LCJDYXB0dXJlLCBS''@;'; put 'put ''ZXZpZXcsIGFuZCBBcHByb3ZlIiksaXQoKSgpLHR0KDEwLCJkaXYiLDcpKDExLCJpbnB1dCIsOCksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LmRhdGEudXNlcj1DfSksaXQoKSx0dCgxMiwiaW5wdXQiLDkpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXty''@;'; put 'put ''ZXR1cm4gdi5kYXRhLnBhc3M9Q30pLGl0KCksdHQoMTMsImNsci1hbGVydCIsMTApLFpuKCJjbHJBbGVydENsb3NlZENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuYWxlcnRDbG9zZWQ9Q30pLHR0KDE0LCJkaXYiLDExKSgxNSwic3BhbiIsMTIpLFd0KDE2KSxpdCgpKCkoKSx0dCgxNywi''@;'; put 'put ''YnV0dG9uIiwxMyksV3QoMTgsIiBMb2cgaW4gIiksaXQoKSgpKCkoKSxicigxOSwiZGl2IiwxNCksaXQoKSksMiZoJiYoSGkoImFjdGl2ZSIsdi5pc0FjdGl2ZSksc3QoMTEpLHh0KCJuZ01vZGVsIix2LmRhdGEudXNlciksc3QoMSkseHQoIm5nTW9kZWwiLHYuZGF0YS5wYXNzKSxzdCgxKSx4''@;'; put 'put ''dCgiY2xyQWxlcnRUeXBlIiwiYWxlcnQtZGFuZ2VyIikoImNsckFsZXJ0Q2xvc2VkIix2LmFsZXJ0Q2xvc2VkKSxzdCgzKSxqaSh2LmVycm9yTXNnKSxzdCgxKSx4dCgiY2xyTG9hZGluZyIsdi5sb2FkaW5nKSgiZGlzYWJsZWQiLHYubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6W29nLHAxLGpz''@;'; put 'put ''LHR2LF9zLHQ0LE5aLFZaLFJpLFcyLGFzLHd2XSxzdHlsZXM6WyIuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMzMTQzNTEhaW1wb3J0YW50O2NvbG9yOiNlMGUwZTB9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0sIC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0sIC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlMGUwZTB9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjp3''@;'; put 'put ''aGVhdCFpbXBvcnRhbnR9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTBlMGUwfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7''@;'; put 'put ''dG9wOjA7bGVmdDowO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDoxMDAwMH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSA+ICpbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOmF1dG99LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NDAwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7cGFkZGluZzo0MHB4O3RyYW5zZm9ybTp0''@;'; put 'put ''cmFuc2xhdGUoLTQwMHB4KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6''@;'; put 'put ''MTAxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MzJweDtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MzZweH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53ZWxjb21lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjM2cHh9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tc2lkZWJh''@;'; put 'put ''cltfbmdjb250ZW50LSVDT01QJV0gICBmb3JtLmxvZ2luW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjQ4cHggMCAwfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgZm9ybS5sb2dpbltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tZ3JvdXBbX25nY29udGVudC0lQ09NUCVdID4gKltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjZweCAwIDE4cHh9LmxvZ2lu''@;'; put 'put ''LXNpZGViYXItd3JhcHBlci5hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7ei1pbmRleDoxMDF9LmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''Lm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAw''@;'; put 'put ''JTt3aWR0aDoxMDAlO2JhY2tncm91bmQ6cmdiYSgzMywzMywzMywuNSk7ei1pbmRleDoxMDB9ICAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyLCAgIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC51c2VybmFtZSwg''@;'; put 'put ''ICAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCAucGFzc3dvcmR7d2lkdGg6MTAwJX0gIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX0gIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdy''@;'; put 'put ''b3VwIGJ1dHRvbnttYXgtd2lkdGg6bm9uZX0ubG9naW4tbG9nb1tfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRoOjIwMHB4fSJdfSksZH0pKCk7ZnVuY3Rpb24gakJlKGQsZyl7aWYoMSZkJiYodHQoMCwic3BhbiIpLGJyKDEsImltZyIsMTgpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0''@;'; put 'put ''KDEpLFU0KCJzcmMiLGguZ2V0UGljdHVyZVVybCgpLGdmKX19ZnVuY3Rpb24gWkJlKGQsZyl7aWYoMSZkJiYodHQoMCwic3BhbiIsMTkpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO0hpKCJoaWRkZW4iLDA9PT1oLmZhaWxlZFJlcXMubGVuZ3RoKSxzdCgxKSxqaShoLmZhaWxlZFJl''@;'; put 'put ''cXMubGVuZ3RoKX19ZnVuY3Rpb24gekJlKGQsZyl7aWYoMSZkJiYodHQoMCwic3BhbiIsMjApLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO0hpKCJoaWRkZW4iLDA9PT1oLmRlYnVnTG9ncy5sZW5ndGgpLHN0KDEpLGppKGguZGVidWdMb2dzLmxlbmd0aCl9fWZ1bmN0aW9uIEdCZShk''@;'; put 'put ''LGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDIxKX1mdW5jdGlvbiBXQmUoZCxnKXsxJmQmJihMMCgwKSx0dCgxLCJhIiwzMSkoMiwic3BhbiIsMzIpLFd0KDMsIkRvY3VtZW50YXRpb24iKSxpdCgpKCksTzAoKSl9ZnVuY3Rpb24gWUJlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwi''@;'; put 'put ''Y2xyLWRyb3Bkb3duLW1lbnUiLDIyKSgxLCJkaXYiLDIzLDI0KSgzLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMjUpLFpuKCJjbGljayIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPXVhKDIpO3JldHVybiBidChVdCgpLm9uRGVidWdSb3dDbGljayh5LEMpKX0pLHR0KDQsImNsci10b2dnbGUt''@;'; put 'put ''d3JhcHBlciIpKDUsImlucHV0IiwyNiksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkuc2FzanNDb25maWcuZGVidWc9eSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLm9uRGVidWdNb2RlQ2hhbmdlKCkp''@;'; put 'put ''fSksaXQoKSx0dCg2LCJsYWJlbCIpLFd0KDcsIkRlYnVnIE1vZGUiKSxpdCgpKCkoKSgpLHR0KDgsImEiLDI3KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5vcGVuUmVxdWVzdHNNb2RhbCgpKX0pLHR0KDksInNwYW4iKSxXdCgxMCwiU0FTIFJlcXVlc3RzIiks''@;'; put 'put ''aXQoKSgpLG5uKDExLFdCZSw0LDAsIm5nLWNvbnRhaW5lciIsMiksYnIoMTIsImRpdiIsMTUpLHR0KDEzLCJhIiwyOCksWm4oImNsaWNrIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLmxvZ291dCh5KSl9KSx0dCgxNCwic3BhbiIpLFd0KDE1LCJMb2cgT3V0IiksaXQoKSxicigx''@;'; put 'put ''NiwiY2xyLWljb24iLDI5KSxpdCgpLHR0KDE3LCJkaXYiLDMwKSgxOCwic3BhbiIpLFd0KDE5KSxpdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoKTtzdCg1KSx4dCgibmdNb2RlbCIsaC5zYXNqc0NvbmZpZy5kZWJ1Zyksc3QoNikseHQoIm5nSWYiLCFoLmlzRGVwbG95UGFnZSksc3QoOCks''@;'; put 'put ''VWkoInYiLGguY29tbWl0VmVyLCIiKX19Y29uc3QgVUJlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YW5kYWxvbmU6ITB9fTtsZXQgUUJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy51c2VyU2VydmljZT1oLHRoaXMuc2FzU2VydmljZT12LHRoaXMuZXZlbnRTZXJ2aWNl''@;'; put 'put ''PXksdGhpcy5yb3V0ZXI9Qyx0aGlzLnVzZXJOYW1lPSJOb3QgbG9nZ2VkIGluIix0aGlzLnJlcVN1Yj1uZXcgVGUsdGhpcy51c2VyU3ViPW5ldyBUZSx0aGlzLmFwcExvZ3M9W10sdGhpcy5kZWJ1Z0xvZ3M9W10sdGhpcy5mYWlsZWRSZXFzPVtdLHRoaXMuc2FzRXJyb3JzPVtdLHRoaXMuaXNW''@;'; put 'put ''aXlhPSExLHRoaXMuc2FzanNDb25maWc9bmV3IFFkLlNBU2pzQ29uZmlnLHRoaXMucmVxdWVzdHNDb3VudD0wLHRoaXMuY29tbWl0VmVyPSIifW5nT25Jbml0KCl7dGhpcy51c2VyU3ViPXRoaXMudXNlclNlcnZpY2UudXNlckNoYW5nZS5zdWJzY3JpYmUoaD0+e3RoaXMudXNlck5hbWU9aC51''@;'; put 'put ''c2VybmFtZX0pLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksIlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlJiYodGhpcy5pc1ZpeWE9ITApLHRoaXMuY29tbWl0VmVyPSJ2NS4yLjAiLnJlcGxhY2UoInYiLCIiKSsiLmc4ZTY5''@;'; put 'put ''NTI1NSJ9bmdPbkRlc3Ryb3koKXt0aGlzLnJlcVN1Yi51bnN1YnNjcmliZSgpLHRoaXMudXNlclN1Yi51bnN1YnNjcmliZSgpfW9wZW5SZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub3BlblJlcXVlc3RzTW9kYWwoKX1vbkRlYnVnTW9kZUNoYW5nZShoKXt0aGlzLnNhc2pzQ29u''@;'; put 'put ''ZmlnJiZ0aGlzLnNhc1NlcnZpY2Uuc2V0RGVidWdTdGF0ZSh0aGlzLnNhc2pzQ29uZmlnLmRlYnVnKX1vbkRlYnVnUm93Q2xpY2soaCx2KXtoLnN0b3BQcm9wYWdhdGlvbigpLHNldFRpbWVvdXQoKCk9Pnt2LmNsaWNrKCl9LDMwMCl9bG9nb3V0KGgpe2gucHJldmVudERlZmF1bHQoKTt0cnl7''@;'; put 'put ''dGhpcy5zYXNTZXJ2aWNlLmxvZ291dCgpfWNhdGNoKHYpe2NvbnNvbGUuZXJyb3Iodil9fWdldFBpY3R1cmVVcmwoKXtyZXR1cm4iL2lkZW50aXRpZXMvdXNlcnMvIit0aGlzLnVzZXJOYW1lKyIvYXZhdGFyL2NvbnRlbnQifWdldCBpc0RlcGxveVBhZ2UoKXtyZXR1cm4gdGhpcy5yb3V0ZXIu''@;'; put 'put ''dXJsLmluY2x1ZGVzKCJkZXBsb3kiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoaE4pLEt0KGwwKSxLdChtdSksS3QoRWwpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXVzZXItbmF2LWRyb3Bkb3duIl1dLGRl''@;'; put 'put ''Y2xzOjI4LHZhcnM6MTAsY29uc3RzOltbMSwiYXBwLW5hdi1kcm9wZG93biIsImQtbWQtYmxvY2siXSxbImNsckRyb3Bkb3duVG9nZ2xlIiwiIiwxLCJuYXYtdGV4dCIsImNvbG9yLXdoaXRlIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwiYmFkZ2UgYmFkZ2UtZGFuZ2VyIiwzLCJoaWRkZW4iLDQs''@;'; put 'put ''Im5nSWYiXSxbImNsYXNzIiwiYmFkZ2UgYmFkZ2UtaW5mbyIsMywiaGlkZGVuIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImNhcmV0IGRvd24iLDQsIm5nSWYiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0Iiw0LCJjbHJJZk9wZW4iXSxbMSwiY29udGVudC1jb250YWluZXIiLCJoLWF1dG8i''@;'; put 'put ''XSxbMSwic2lkZW5hdiIsImQtYmxvY2siLCJkLW1kLW5vbmUiLDMsImNsci1uYXYtbGV2ZWwiXSxbMSwic2lkZW5hdi1jb250ZW50Il0sWyJocmVmIiwiLi4uIiwxLCJuYXYtbGluayIsImFjdGl2ZSJdLFsxLCJ0b2dnbGUtc3dpdGNoIl0sWyJpZCIsImRlYnVnLXRvZ2dsZTIiLCJ0eXBlIiwi''@;'; put 'put ''Y2hlY2tib3giLDMsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyIsIm5nTW9kZWxDaGFuZ2UiXSxbImZvciIsImRlYnVnLXRvZ2dsZTIiLDEsImRlYnVnLXRvZ2dsZS1sYWJlbCIsImNvbG9yLWRhcmstZ3JheSJdLFsidGFyZ2V0IiwiX2JsYW5rIiwiaHJlZiIsImh0dHBzOi8vZG9jcy5kYXRh''@;'; put 'put ''Y29udHJvbGxlci5pbyIsMSwibmF2LWxpbmsiLCJkLWJsb2NrIl0sWzEsInNlcGFyYXRvciJdLFsiaHJlZiIsIi4uLiIsMSwibmF2LWxpbmsiLCJkLWJsb2NrIiwzLCJjbGljayJdLFsic2hhcGUiLCJsb2dvdXQiXSxbImFsdCIsIiIsMSwiYXZhdGFyLWltZyIsMywic3JjIl0sWzEsImJhZGdl''@;'; put 'put ''IiwiYmFkZ2UtZGFuZ2VyIl0sWzEsImJhZGdlIiwiYmFkZ2UtaW5mbyJdLFsic2hhcGUiLCJjYXJldCBkb3duIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwxLCJkZWJ1Zy1zd2l0Y2gtaXRlbSJdLFsiZHJvcGRvd25JdGVtRGVidWciLCIi''@;'; put 'put ''XSxbMSwidG9nZ2xlLXN3aXRjaCIsMywiY2xpY2siXSxbImlkIiwiZGVidWctdG9nZ2xlMSIsInR5cGUiLCJjaGVja2JveCIsImNsclRvZ2dsZSIsIiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siXSxbImhyZWYiLCIuLi4iLCJj''@;'; put 'put ''bHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImxvZ291dCIsMSwiY2xyLWxvZ291dCJdLFsxLCJjb3B5UmlnaHQiXSxbInRhcmdldCIsIl9ibGFuayIsImhyZWYiLCJodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8iLCJjbHJEcm9wZG93bkl0ZW0iLCIiXSxbMSwi''@;'; put 'put ''ZHJvcGRvd24tdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImNsci1kcm9wZG93biIsMCkoMSwiYnV0dG9uIiwxKSgyLCJzcGFuIiksV3QoMyksaXQoKSxubig0LGpCZSwyLDEsInNwYW4iLDIpLG5uKDUsWkJlLDIsMywic3BhbiIsMyksbm4oNix6QmUsMiwzLCJz''@;'; put 'put ''cGFuIiw0KSxubig3LEdCZSwxLDAsImNsci1pY29uIiw1KSxpdCgpLG5uKDgsWUJlLDIwLDMsImNsci1kcm9wZG93bi1tZW51Iiw2KSxpdCgpLHR0KDksImRpdiIsNykoMTAsIm5hdiIsOCkoMTEsInNlY3Rpb24iLDkpKDEyLCJhIiwxMCksV3QoMTMpLGl0KCksdHQoMTQsImRpdiIpKDE1LCJm''@;'; put 'put ''b3JtIikoMTYsImRpdiIsMTEpKDE3LCJpbnB1dCIsMTIpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5zYXNqc0NvbmZpZy5kZWJ1Zz1DfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25EZWJ1Z01vZGVDaGFuZ2UoKX0pLGl0KCksdHQoMTgs''@;'; put 'put ''ImxhYmVsIiwxMyksV3QoMTksIkRlYnVnIE1vZGUiKSxpdCgpKCkoKSgpLHR0KDIwLCJhIiwxNCkoMjEsInNwYW4iKSxXdCgyMiwiRG9jdW1lbnRhdGlvbiIpLGl0KCkoKSxicigyMywiZGl2IiwxNSksdHQoMjQsImEiLDE2KSxabigiY2xpY2siLGZ1bmN0aW9uKEMpe3JldHVybiB2LmxvZ291''@;'; put 'put ''dChDKX0pLHR0KDI1LCJzcGFuIiksV3QoMjYsIkxvZyBPdXQiKSxpdCgpLGJyKDI3LCJjbHItaWNvbiIsMTcpLGl0KCkoKSgpKCkpLDImaCYmKHN0KDMpLGppKHYudXNlck5hbWUpLHN0KDEpLHh0KCJuZ0lmIiwiTm90IGxvZ2dlZCBpbiIhPT12LnVzZXJOYW1lJiZ2LmlzVml5YSksc3QoMSks''@;'; put 'put ''eHQoIm5nSWYiLCF2LnNhc2pzQ29uZmlnLmRlYnVnKSxzdCgxKSx4dCgibmdJZiIsdi5zYXNqc0NvbmZpZy5kZWJ1Zyksc3QoMSkseHQoIm5nSWYiLCF2LmlzVml5YSksc3QoMykseHQoImNsci1uYXYtbGV2ZWwiLDIpLHN0KDMpLFVpKCIgIix2LnVzZXJOYW1lLCIgIiksc3QoNCkseHQoIm5n''@;'; put 'put ''TW9kZWwiLHYuc2FzanNDb25maWcuZGVidWcpKCJuZ01vZGVsT3B0aW9ucyIsbHMoOSxVQmUpKSl9LGRlcGVuZGVuY2llczpbQm8sb2csdWgsanMsdHYsX3MsdDQsRzIseXcsYXMsQXcsbHEsdncsYXdlLE12LERTLExTLGhPXSxzdHlsZXM6WycuY29weVJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXttYXJnaW4tdG9wOjEwcHh9LmNvcHlSaWdodFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxLjV9LmFw''@;'; put 'put ''cC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctcmlnaHQ6MTVweDtsaW5lLWhlaWdodDozcmVtO2hlaWdodDozcmVtfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGJ1dHRvbi5kcm9wZG93bi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2Nv''@;'; put 'put ''bG9yOiNmYWZhZmE7cG9zaXRpb246cmVsYXRpdmV9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdID4gYnV0dG9uLmRyb3Bkb3duLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06YWZ0ZXJ7Y29udGVudDoiIjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7b3BhY2l0eTouMTU7''@;'; put 'put ''bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6NDBweDt0b3A6MTBweH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gPiBidXR0b24uZHJvcGRvd24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5iYWRnZS5oaWRkZW5bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde3Zpc2liaWxpdHk6aGlkZGVufS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNTY1NjU2O3BhZGRpbmctYm90dG9tOjB9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLnNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjEwcHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9w''@;'; put 'put ''ZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NDVweDtsaW5lLWhlaWdodDo0MHB4fS5h''@;'; put 'put ''cHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW4uZHJvcGRvd24tdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzU2NTY1Nn0u''@;'; put 'put ''YXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAuYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNXB4''@;'; put 'put ''O3JpZ2h0OjI2cHg7bWFyZ2luLXJpZ2h0OjB9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW0uZGVidWctc3dpdGNoLWl0ZW1bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6''@;'; put 'put ''MH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAudG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjA7d2lkdGg6''@;'; put 'put ''MTAwJTtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbHItbG9nb3V0''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoyMHB4O3RvcDoxNXB4fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgICAgY2xyLXRvZ2dsZS13cmFwcGVye3dpZHRoOjEwMCU7bWFyZ2luOjA7aGVpZ2h0OjEwMCU7cGFkZGluZzoxMHB4IDIwcHh9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0''@;'; put 'put ''ZW1bX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dHt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2N1cnNvcjpwb2ludGVyfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDphZnRlcnt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fS5kZWJ1Zy10b2dnbGUtbGFiZWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde3BhZGRpbmctbGVmdDo0MnB4fUBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCl7LnNpZGVuYXYtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBhLm5hdi1saW5rLmFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjE1cHg7YmFja2dyb3VuZDojNTY1''@;'; put 'put ''NjU2fX0ubmF2LWxpbmsuZC1ibG9ja1tfbmdjb250ZW50LSVDT01QJV0gICBzcGFuLmJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZX0uYXZhdGFyLWltZ1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW4tbGVmdDoxMHB4O2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6NTBweH0nXX0pLGR9KSgpO2Z1bmN0aW9uIEpCZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1hbGVydCIsMiksWm4oImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYnQoYShoKS4kaW1wbGljaXQuY2xvc2VkPXkpfSkoImNs''@;'; put 'put ''ckFsZXJ0Q2xvc2VkQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLm9uQWxlcnRDbG9zZSgpKX0pLHR0KDEsImRpdiIsMykoMiwic3BhbiIsNCksV3QoMyksaXQoKSgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3h0KCJjbHJBbGVydFR5cGUiLGgudHlwZSko''@;'; put 'put ''ImNsckFsZXJ0QXBwTGV2ZWwiLCEwKSgiY2xyQWxlcnRDbG9zZWQiLGguY2xvc2VkKSxzdCgzKSxVaSgiICIsaC5tZXNzYWdlLCIgIil9fWZ1bmN0aW9uIFhCZShkLGcpe2lmKDEmZCYmKHR0KDAsImNsci1hbGVydHMiKSxubigxLEpCZSw0LDQsImNsci1hbGVydCIsMSksaXQoKSksMiZkKXtj''@;'; put 'put ''b25zdCBoPVV0KCk7c3QoMSkseHQoIm5nRm9yT2YiLGguYWxlcnRzKX19bGV0IEtCZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuX2FsZXJ0c1NlcnZpY2U9aCx0aGlzLmFsZXJ0cz1bXSx0aGlzLmhhc09wZW5BbGVydD0hMSx0aGlzLmFsZXJ0c1N1Yj1uZXcgVGV9bmdPbklu''@;'; put 'put ''aXQoKXt0aGlzLmFsZXJ0c1N1Yj10aGlzLl9hbGVydHNTZXJ2aWNlLmFsZXJ0cy5zdWJzY3JpYmUoaD0+e3RoaXMuYWxlcnRzLnB1c2goaCksdGhpcy5oYXNPcGVuQWxlcnQ9ITAsaC5lcnImJmNvbnNvbGUuZXJyb3IoaC5lcnIpfSl9b25BbGVydENsb3NlKCl7dGhpcy5oYXNPcGVuQWxlcnQ9''@;'; put 'put ''dGhpcy5hbGVydHMuc29tZShoPT4haC5jbG9zZWQpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChjTikpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtYWxlcnRzIl1dLGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzQs''@;'; put 'put ''Im5nSWYiXSxbMywiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRBcHBMZXZlbCIsImNsckFsZXJ0Q2xvc2VkIiwiY2xyQWxlcnRDbG9zZWRDaGFuZ2UiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbHJBbGVydFR5cGUiLCJjbHJBbGVydEFwcExldmVsIiwiY2xyQWxlcnRDbG9zZWQiLCJjbHJB''@;'; put 'put ''bGVydENsb3NlZENoYW5nZSJdLFsxLCJhbGVydC1pdGVtIl0sWzEsImFsZXJ0LXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJm5uKDAsWEJlLDIsMSwiY2xyLWFsZXJ0cyIsMCksMiZoJiZ4dCgibmdJZiIsdi5oYXNPcGVuQWxlcnQpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLE5a''@;'; put 'put ''LHR3ZSxWWl0sc3R5bGVzOlsiY2xyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja30iXX0pLGR9KSgpO2Z1bmN0aW9uICRCZShkLGcpezEmZCYmKHR0KDAsInAiLDYpLFd0KDEsIk5vIHJlcXVlc3RzIG1hZGUiKSxpdCgpKX1mdW5jdGlvbiBxQmUoZCxnKXsxJmQmJih0''@;'; put 'put ''dCgwLCJzcGFuIiksYnIoMSwiY2xyLWljb24iLDEzKSxpdCgpKX1mdW5jdGlvbiBlUGUoZCxnKXsxJmQmJih0dCgwLCJzcGFuIiksYnIoMSwiY2xyLWljb24iLDE0KSxpdCgpKX1mdW5jdGlvbiB0UGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwyMSks''@;'; put 'put ''Wm4oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9YShoKS4kaW1wbGljaXQsST1VdCgzKS5pbmRleDtyZXR1cm4gYnQoVXQoMikuZ29Ub0xvZ0xpbmUoQywicmVxdWVzdF8iK0ksImVycm9yIikpfSksdHQoMSwiYnV0dG9uIiwyMiksV3QoMiksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRp''@;'; put 'put ''bXBsaWNpdDtzdCgyKSxVaSgiICIsaCwiICIpfX1jb25zdCBFd2U9ZnVuY3Rpb24oKXtyZXR1cm5bXX07ZnVuY3Rpb24gblBlKGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLXRyZWUtbm9kZSIsMTgpLGJyKDEsImNsci1pY29uIiwxOSksV3QoMiksbm4oMyx0UGUsMywxLCJjbHItdHJlZS1ub2Rl''@;'; put 'put ''IiwyMCksaXQoKSksMiZkKXtjb25zdCBoPVV0KDIpLiRpbXBsaWNpdDtzdCgyKSxVaSgiIEVycm9ycyAoIixoLmxvZ0Vycm9ycy5sZW5ndGgsIikgIiksc3QoMSkseHQoIm5nRm9yT2YiLGgubG9nRXJyb3JzfHxscygyLEV3ZSkpfX1mdW5jdGlvbiByUGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9''@;'; put 'put ''eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwyMSksWm4oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9YShoKS4kaW1wbGljaXQsST1VdCgzKS5pbmRleDtyZXR1cm4gYnQoVXQoMikuZ29Ub0xvZ0xpbmUoQywicmVxdWVzdF8iK0ksIndhcm5pbmciKSl9KSx0dCgxLCJidXR0b24iLDIyKSxX''@;'; put 'put ''dCgyKSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDIpLFVpKCIgIixoLCIgIil9fWZ1bmN0aW9uIGlQZShkLGcpe2lmKDEmZCYmKHR0KDAsImNsci10cmVlLW5vZGUiLDE4KSxicigxLCJjbHItaWNvbiIsMjMpLFd0KDIpLG5uKDMsclBlLDMsMSwiY2xyLXRyZWUtbm9k''@;'; put 'put ''ZSIsMjApLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKS4kaW1wbGljaXQ7c3QoMiksVWkoIiBXYXJuaW5ncyAoIixoLmxvZ1dhcm5pbmdzLmxlbmd0aCwiKSAiKSxzdCgxKSx4dCgibmdGb3JPZiIsaC5sb2dXYXJuaW5nc3x8bHMoMixFd2UpKX19ZnVuY3Rpb24gb1BlKGQsZyl7aWYoMSZkKXtj''@;'; put 'put ''b25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiwyNCksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KDIpLmRvd25sb2FkTG9nKHkubG9nRmlsZSkpfSksV3QoMSwiIERvd25sb2FkICIpLGl0KCl9fWZ1bmN0aW9uIGFQZShkLGcp''@;'; put 'put ''e2lmKDEmZCYmKHR0KDAsImNsci10YWItY29udGVudCIpKDEsImNsci10cmVlIiksbm4oMixuUGUsNCwzLCJjbHItdHJlZS1ub2RlIiwxNSksbm4oMyxpUGUsNCwzLCJjbHItdHJlZS1ub2RlIiwxNSksaXQoKSxicig0LCJkaXYiLDE2KSxubig1LG9QZSwyLDAsImJ1dHRvbiIsMTcpLGl0KCkp''@;'; put 'put ''LDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDtzdCgyKSx4dCgibmdJZiIsaC5sb2dFcnJvcnMpLHN0KDEpLHh0KCJuZ0lmIixoLmxvZ1dhcm5pbmdzKSxzdCgxKSx4dCgiaW5uZXJIVE1MIixoLmxvZ0ZpbGUsbW0pLHN0KDEpLHh0KCJuZ0lmIiwobnVsbD09aC5sb2dGaWxlP251bGw6aC5s''@;'; put 'put ''b2dGaWxlLmxlbmd0aCk+MCl9fWZ1bmN0aW9uIGxQZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMjQpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgyKS5kb3dubG9hZFNvdXJjZUNvZGUoeS5z''@;'; put 'put ''b3VyY2VDb2RlKSl9KSxXdCgxLCIgRG93bmxvYWQgIiksaXQoKX19ZnVuY3Rpb24gc1BlKGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyNSksV3QoMiksaXQoKSxubigzLGxQZSwyLDAsImJ1dHRvbiIsMTcpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpLiRp''@;'; put 'put ''bXBsaWNpdDtzdCgyKSxqaShoLnNvdXJjZUNvZGUpLHN0KDEpLHh0KCJuZ0lmIiwobnVsbD09aC5zb3VyY2VDb2RlP251bGw6aC5zb3VyY2VDb2RlLmxlbmd0aCk+MCl9fWZ1bmN0aW9uIHVQZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMjQpLFpuKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgyKS5kb3dubG9hZEdlbmVyYXRlZENvZGUoeS5nZW5lcmF0ZWRDb2RlKSl9KSxXdCgxLCIgRG93bmxvYWQgIiksaXQoKX19ZnVuY3Rpb24gY1BlKGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLXRhYi1j''@;'; put 'put ''b250ZW50IikoMSwiZGl2IiwyNSksV3QoMiksaXQoKSxubigzLHVQZSwyLDAsImJ1dHRvbiIsMTcpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDtzdCgyKSxVaSgiICIsaC5nZW5lcmF0ZWRDb2RlLCIgIiksc3QoMSkseHQoIm5nSWYiLChudWxsPT1oLmdlbmVyYXRlZENvZGU/''@;'; put 'put ''bnVsbDpoLmdlbmVyYXRlZENvZGUubGVuZ3RoKT4wKX19ZnVuY3Rpb24gZlBlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2IiwzMSksWm4oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9YShoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KDMpLiRpbXBsaWNpdC5zZWxlY3Rl''@;'; put 'put ''ZFRhYmxlPUMua2V5KX0pLFd0KDEpLGl0KCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O0hpKCJzZWxlY3RlZCIsVXQoMykuJGltcGxpY2l0LnNlbGVjdGVkVGFibGU9PT1oLmtleSksc3QoMSksVWkoIiAiLGgua2V5LCIgIil9fWZ1bmN0aW9uIGhQZShkLGcpe2lmKDEmZCYmKHR0KDAs''@;'; put 'put ''ImNsci1kcm9wZG93bi1tZW51Iiksbm4oMSxmUGUsMiwzLCJkaXYiLDMwKSxaZSgyLCJrZXl2YWx1ZSIpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKS4kaW1wbGljaXQ7c3QoMSkseHQoIm5nRm9yT2YiLFN0KDIsMSxoLlNBU1dPUkspKX19ZnVuY3Rpb24gZFBlKGQsZyl7aWYoMSZkJiYodHQo''@;'; put 'put ''MCwicCIsMzUpKDEsInN0cm9uZyIpLFd0KDIpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KDMpLiRpbXBsaWNpdDtzdCgyKSxVaSgiIixoLnNlbGVjdGVkVGFibGUsIiAoZmlyc3QgMTAgcm93cykgIil9fWZ1bmN0aW9uIHBQZShkLGcpe2lmKDEmZCYmKHR0KDAsInRoIiksV3QoMSksaXQoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLFVpKCIgIixoLmtleSwiICIpfX1mdW5jdGlvbiBnUGUoZCxnKXtpZigxJmQmJih0dCgwLCJ0ZCIpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KCkuJGltcGxpY2l0O3N0KDEpLFVpKCIgIix2W2gua2V5XSwi''@;'; put 'put ''ICIpfX1mdW5jdGlvbiBtUGUoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIpLG5uKDEsZ1BlLDIsMSwidGQiLDM3KSxaZSgyLCJrZXl2YWx1ZSIpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCg0KS4kaW1wbGljaXQ7c3QoMSkseHQoIm5nRm9yT2YiLFN0KDIsMSxoLlNBU1dPUktbaC5zZWxlY3RlZFRh''@;'; put 'put ''YmxlXS5maXJzdDEwcm93c1swXSkpfX1mdW5jdGlvbiB2UGUoZCxnKXtpZigxJmQmJih0dCgwLCJ0YWJsZSIsMzYpKDEsInRoZWFkIikoMiwidHIiKSxubigzLHBQZSwyLDEsInRoIiwzNyksWmUoNCwia2V5dmFsdWUiKSxpdCgpKCksdHQoNSwidGJvZHkiKSxubig2LG1QZSwzLDMsInRyIiwz''@;'; put 'put ''NyksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoMykuJGltcGxpY2l0O3N0KDMpLHh0KCJuZ0Zvck9mIixTdCg0LDIsaC5TQVNXT1JLW2guc2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJvd3NbMF0pKSxzdCgzKSx4dCgibmdGb3JPZiIsaC5TQVNXT1JLW2guc2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJv''@;'; put 'put ''d3MpfX1mdW5jdGlvbiBBUGUoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItdGFiLWNvbnRlbnQiKSxubigxLGRQZSwzLDEsInAiLDMyKSx0dCgyLCJkaXYiLDMzKSxubigzLHZQZSw3LDQsInRhYmxlIiwzNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoMikuJGltcGxpY2l0O3N0KDEpLHh0KCJu''@;'; put 'put ''Z0lmIixoLnNlbGVjdGVkVGFibGUpLHN0KDIpLHh0KCJuZ0lmIixoLnNlbGVjdGVkVGFibGUpfX1mdW5jdGlvbiB5UGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdGFiIikoMSwiY2xyLWRyb3Bkb3duIiwyNikoMiwiYnV0dG9uIiwyNyksV3QoMywiIFNBUyBXb3JrIFRh''@;'; put 'put ''YmxlcyAiKSxicig0LCJjbHItaWNvbiIsMjgpLGl0KCksbm4oNSxoUGUsMywzLCJjbHItZHJvcGRvd24tbWVudSIsMjkpLGl0KCksbm4oNixBUGUsNCwyLCJuZy10ZW1wbGF0ZSIsMTIpLFpuKCJjbHJJZkFjdGl2ZUNoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMykudGFi''@;'; put 'put ''bGVzQWN0aXZlPXkpfSksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMSkseHQoImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIiwhMCksc3QoNSkseHQoImNscklmQWN0aXZlIixoLnRhYmxlc0FjdGl2ZSl9fWZ1bmN0aW9uIHdQZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAs''@;'; put 'put ''ImNsci1zdGFjay1ibG9jayIsOCkoMSwiY2xyLXN0YWNrLWxhYmVsIiksV3QoMiksdHQoMywic3BhbiIsOSksbm4oNCxxQmUsMiwwLCJzcGFuIiw1KSxubig1LGVQZSwyLDAsInNwYW4iLDUpLGl0KCkoKSx0dCg2LCJjbHItc3RhY2stY29udGVudCIpLFd0KDcpLGl0KCksdHQoOCwiY2xyLXN0''@;'; put 'put ''YWNrLWJsb2NrIiwxMCkoOSwiY2xyLXN0YWNrLWNvbnRlbnQiKSgxMCwiY2xyLXRhYnMiKSgxMSwiY2xyLXRhYiIpKDEyLCJidXR0b24iLDExKSxXdCgxMywiU0FTIExvZyIpLGl0KCksbm4oMTQsYVBlLDYsNCwibmctdGVtcGxhdGUiLDEyKSxabigiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0''@;'; put 'put ''aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KDIpLnNhc0xvZ0FjdGl2ZT15KX0pLGl0KCksdHQoMTUsImNsci10YWIiKSgxNiwiYnV0dG9uIiwxMSksV3QoMTcsIlNBUyBTb3VyY2UgQ29kZSIpLGl0KCksbm4oMTgsc1BlLDQsMiwibmctdGVtcGxhdGUiLDEyKSxabigiY2xySWZBY3RpdmVDaGFu''@;'; put 'put ''Z2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KDIpLnNhc1NvdXJjZUNvZGVBY3RpdmU9eSl9KSxpdCgpLHR0KDE5LCJjbHItdGFiIikoMjAsImJ1dHRvbiIsMTEpLFd0KDIxLCJTQVMgR2VuZXJhdGVkIENvZGUiKSxpdCgpLG5uKDIyLGNQZSw0LDIsIm5nLXRlbXBsYXRlIiwxMiks''@;'; put 'put ''Wm4oImNscklmQWN0aXZlQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgyKS5zYXNHZW5lcmF0ZWRDb2RlQWN0aXZlPXkpfSksaXQoKSxubigyMyx5UGUsNywyLCJjbHItdGFiIiw1KSxpdCgpKCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PWcuaW5kZXgs''@;'; put 'put ''eT1VdCgyKTt4dCgiaWQiLCJyZXF1ZXN0XyIrdikoImNsclN0YWNrVmlld0xldmVsIiwxKSgiY2xyU3RhY2tWaWV3U2V0c2l6ZSIsMykoImNsclN0YWNrVmlld1Bvc2luc2V0IiwzKSxzdCgyKSxVaSgiICIsaC5zZXJ2aWNlTGluaywiICIpLHN0KDIpLHh0KCJuZ0lmIiwobnVsbD09aC5sb2dX''@;'; put 'put ''YXJuaW5ncz9udWxsOmgubG9nV2FybmluZ3MubGVuZ3RoKT4wKSxzdCgxKSx4dCgibmdJZiIsKG51bGw9PWgubG9nRXJyb3JzP251bGw6aC5sb2dFcnJvcnMubGVuZ3RoKT4wKSxzdCgyKSxqaShoLnBhcnNlZFRpbWVzdGFtcCksc3QoNykseHQoImNscklmQWN0aXZlIix5LnNhc0xvZ0FjdGl2''@;'; put 'put ''ZSksc3QoNCkseHQoImNscklmQWN0aXZlIix5LnNhc1NvdXJjZUNvZGVBY3RpdmUpLHN0KDQpLHh0KCJjbHJJZkFjdGl2ZSIseS5zYXNHZW5lcmF0ZWRDb2RlQWN0aXZlKSxzdCgxKSx4dCgibmdJZiIsaC5TQVNXT1JLKX19ZnVuY3Rpb24gYlBlKGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLXN0''@;'; put 'put ''YWNrLXZpZXciKSxubigxLHdQZSwyNCwxMiwiY2xyLXN0YWNrLWJsb2NrIiw3KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgxKSx4dCgibmdGb3JPZiIsaC5zYXNqc1JlcXVlc3RzKX19bGV0IF9QZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLnNhc1NlcnZpY2U9''@;'; put 'put ''aCx0aGlzLmxvZ2dlclNlcnZpY2U9dix0aGlzLmhlbHBlclNlcnZpY2U9eSx0aGlzLl9vcGVuZWQ9ITEsdGhpcy5vcGVuZWRDaGFuZ2U9bmV3IGZuLHRoaXMuc2FzTG9nQWN0aXZlPSEwLHRoaXMuc2FzU291cmNlQ29kZUFjdGl2ZT0hMSx0aGlzLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9ITEs''@;'; put 'put ''dGhpcy50YWJsZXNBY3RpdmU9ITEsdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLnNhc2pzUmVxdWVzdHM9W119Z2V0IG9wZW5lZCgpe3JldHVybiB0aGlzLl9vcGVuZWR9c2V0IG9wZW5lZChoKXt0aGlzLl9vcGVuZWQ9aCxoJiZ0aGlzLm1v''@;'; put 'put ''ZGFsT3BlbmVkKCksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLnNhc2pzUmVxdWVzdHMpfW5nT25Jbml0KCl7fXBhcnNlTG9nVGltZXN0YW1wKGgpe3JldHVybmAke3RoaXMuZm9ybWF0VGltZXN0YW1wKGgpfSAke3RoaXMudGltZXN0YW1wRnJvbU5vdyhoKX1gfWN1dEFwcExvYyhoKXty''@;'; put 'put ''ZXR1cm4gaC5yZXBsYWNlKHRoaXMuc2FzanNDb25maWcuYXBwTG9jKyIvIiwiIil9Zm9ybWF0VGltZXN0YW1wKGgpe3JldHVybiBrbChoKS5mb3JtYXQoKT9rbChoKS5mb3JtYXQoImRkZGQsIE1NTU0gRG8gWVlZWSwgaDptbTpzcyBhIik6aH10aW1lc3RhbXBGcm9tTm93KGgpe3JldHVybiBr''@;'; put 'put ''bChoKS5mb3JtYXQoKT9gICgke2tsKGgpLmZyb21Ob3coKX0pYDoiIn1tb2RhbE9wZW5DaGFuZ2UoaCl7dGhpcy5vcGVuZWQ9aCx0aGlzLm9wZW5lZENoYW5nZS5lbWl0KHRoaXMub3BlbmVkKX1tb2RhbE9wZW5lZCgpe3RoaXMuc2FzanNSZXF1ZXN0cz10aGlzLnNhc1NlcnZpY2UuZ2V0U2Fz''@;'; put 'put ''UmVxdWVzdHMoKTtmb3IobGV0IGggb2YgdGhpcy5zYXNqc1JlcXVlc3RzKXRoaXMucGFyc2VFcnJvcnNBbmRXYXJuaW5ncyhoKSxoLnNlcnZpY2VMaW5rPXRoaXMuY3V0QXBwTG9jKGguc2VydmljZUxpbmspLGgucGFyc2VkVGltZXN0YW1wPXRoaXMucGFyc2VMb2dUaW1lc3RhbXAoaC50aW1l''@;'; put 'put ''c3RhbXApfWdvVG9Mb2dMaW5lKGgsdix5KXtsZXQgQz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt2fSAubG9nLXdyYXBwZXIuc2FzbG9nIGZvbnRgKSxJPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3Z9IC5sb2ctd3JhcHBlci5zYXNsb2dgKTtmb3IobGV0IGogb2YgQylqLnRl''@;'; put 'put ''eHRDb250ZW50LmluY2x1ZGVzKGgpJiYoSS5zY3JvbGxUb3A9ai5vZmZzZXRUb3AtSS5vZmZzZXRUb3Asai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IiM2MWEyMjAyYiIsc2V0VGltZW91dCgoKT0+e2ouc3R5bGU9IiJ9LDNlMykpfXBhcnNlRXJyb3JzQW5kV2FybmluZ3MoaCl7cmV0dXJuIHRv''@;'; put 'put ''KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZighaHx8IWgubG9nRmlsZXx8InN0cmluZyIhPXR5cGVvZiBoLmxvZ0ZpbGV8fHZvaWQgMCE9PWgubG9nRXJyb3JzfHx2b2lkIDAhPT1oLmxvZ1dhcm5pbmdzKXJldHVybjtsZXQgdj1bXSx5PVtdLEM9aC5sb2dGaWxlLnNwbGl0KCJc''@;'; put 'put ''biIpO2ZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSsrKXtpZigvPC4qPkVSUk9SL2dtLnRlc3QoQ1tJXSkpe2xldCBqPUNbSV0uc3Vic3RyaW5nKENbSV0uaW5kZXhPZigiRSIpLENbSV0ubGVuZ3RoLTEpO3YucHVzaChqKX1lbHNlL15FUlJPUi9nbS50ZXN0KENbSV0pJiYodi5wdXNoKENbSV0p''@;'; put 'put ''LENbSV09Ijxmb250PiIrQ1tJXSsiPC9mb250PiIpO2lmKC88Lio+V0FSTklORy9nbS50ZXN0KENbSV0pKXtsZXQgaj1DW0ldLnN1YnN0cmluZyhDW0ldLmluZGV4T2YoIlciKSxDW0ldLmxlbmd0aC0xKTt5LnB1c2goail9ZWxzZS9eV0FSTklORy9nbS50ZXN0KENbSV0pJiYoeS5wdXNoKENb''@;'; put 'put ''SV0pLENbSV09Ijxmb250PiIrQ1tJXSsiPC9mb250PiIpfXRoaXMubG9nZ2VyU2VydmljZS5sb2coeSksaC5sb2dGaWxlPUMuam9pbigiXG4iKSxoLmxvZ0Vycm9ycz12LGgubG9nV2FybmluZ3M9eX0pfWRvd25sb2FkTG9nKGgpe2NvbnN0IHY9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5o''@;'; put 'put ''ZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYGxvZ0ZpbGUtJHt2fWAsaCl9ZG93bmxvYWRTb3VyY2VDb2RlKGgpe2NvbnN0IHY9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYHNvdXJjZUNvZGUtJHt2fWAsaCl9ZG93bmxvYWRH''@;'; put 'put ''ZW5lcmF0ZWRDb2RlKGgpe2NvbnN0IHY9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYGdlbmVyYXRlZENvZGUtJHt2fWAsaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGwwKSxLdChH''@;'; put 'put ''aCksS3QoY2MpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXJlcXVlc3RzLW1vZGFsIl1dLGlucHV0czp7b3BlbmVkOiJvcGVuZWQifSxvdXRwdXRzOntvcGVuZWRDaGFuZ2U6Im9wZW5lZENoYW5nZSJ9LGRlY2xzOjgsdmFyczo0LGNvbnN0czpbWyJjbHJNb2Rh''@;'; put 'put ''bFNpemUiLCJ4bCIsMSwicmVxdWVzdHMtbW9kYWwiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtdC0wIiwiZC1pbmxpbmUtYmxvY2siXSxbMSwibW9kYWwtYm9keSIsImgtNzB2aCJdLFsiY2xhc3MiLCJuby1yZXFzIiw0LCJu''@;'; put 'put ''Z0lmIl0sWzQsIm5nSWYiXSxbMSwibm8tcmVxcyJdLFszLCJpZCIsImNsclN0YWNrVmlld0xldmVsIiwiY2xyU3RhY2tWaWV3U2V0c2l6ZSIsImNsclN0YWNrVmlld1Bvc2luc2V0Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiaWQiLCJjbHJTdGFja1ZpZXdMZXZlbCIsImNsclN0YWNrVmll''@;'; put 'put ''d1NldHNpemUiLCJjbHJTdGFja1ZpZXdQb3NpbnNldCJdLFsxLCJtbC0xMCJdLFsxLCJjb250ZW50Il0sWyJjbHJUYWJMaW5rIiwiIl0sWzMsImNscklmQWN0aXZlIiwiY2xySWZBY3RpdmVDaGFuZ2UiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwxLCJtYi01IiwiY29sb3ItZ3Jl''@;'; put 'put ''ZW4iXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tdHJpYW5nbGUiLDEsIm1iLTUiLCJjb2xvci1yZWQiXSxbImNsYXNzIiwiZXJyLWxpbmtzIiw0LCJuZ0lmIl0sWzEsImxvZy13cmFwcGVyIiwic2FzbG9nIiwzLCJpbm5lckhUTUwiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4t''@;'; put 'put ''bGluayIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwiZXJyLWxpbmtzIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIiwxLCJjb2xvci1yZWQiXSxbMywiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbGljayJdLFsxLCJjbHItdHJlZW5vZGUtbGluayJdLFsic2hhcGUi''@;'; put 'put ''LCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsImNvbG9yLWdyZWVuIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tbGluayIsMywiY2xpY2siXSxbMSwibG9nLXdyYXBwZXIiXSxbImNsclRhYkxpbmsiLCIiLDEsIndvcmstdGFibGVzLWRyb3Bkb3duIiwzLCJjbHJDbG9zZU1lbnVPbkl0''@;'; put 'put ''ZW1DbGljayJdLFsiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIl0sWyJzaGFwZSIsImNhcmV0IGRvd24iXSxbNCwiY2xySWZPcGVuIl0sWyJjbGFzcyIsImRyb3Bkb3duLWl0ZW0iLCJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsInNlbGVjdGVkIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsi''@;'; put 'put ''Y2xyRHJvcGRvd25JdGVtIiwiIiwxLCJkcm9wZG93bi1pdGVtIiwzLCJjbGljayJdLFsiY2xhc3MiLCJtdC0xMCIsNCwibmdJZiJdLFsxLCJtaW4taC01MHZoIl0sWyJjbGFzcyIsInRhYmxlIG10LTEwIiw0LCJuZ0lmIl0sWzEsIm10LTEwIl0sWzEsInRhYmxlIiwibXQtMTAiXSxbNCwibmdG''@;'; put 'put ''b3IiLCJuZ0Zvck9mIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiY2xyLW1vZGFsIiwwKSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5tb2RhbE9wZW5DaGFuZ2UoQyl9KSx0dCgxLCJoMyIsMSksV3QoMiwiIFJlcXVlc3QgSGlzdG9y''@;'; put 'put ''eSAiKSx0dCgzLCJwIiwyKSxXdCg0KSxpdCgpKCksdHQoNSwiZGl2IiwzKSxubig2LCRCZSwyLDAsInAiLDQpLG5uKDcsYlBlLDIsMSwiY2xyLXN0YWNrLXZpZXciLDUpLGl0KCkoKSksMiZoJiYoeHQoImNsck1vZGFsT3BlbiIsdi5vcGVuZWQpLHN0KDQpLFVpKCJBcHAgTG9jYXRpb246ICIs''@;'; put 'put ''di5zYXNqc0NvbmZpZy5hcHBMb2MsIiIpLHN0KDIpLHh0KCJuZ0lmIiwobnVsbD09di5zYXNqc1JlcXVlc3RzP251bGw6di5zYXNqc1JlcXVlc3RzLmxlbmd0aCk8MSksc3QoMSkseHQoIm5nSWYiLHYub3BlbmVkJiYobnVsbD09di5zYXNqc1JlcXVlc3RzP251bGw6di5zYXNqc1JlcXVlc3Rz''@;'; put 'put ''Lmxlbmd0aCk+MCkpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLGNPLFp5ZSxjaGUsanllLFN2LF9nLGZPLEcyLGEzLGwzLENaLHl3LHBPLG1PLHpaLGdPLGRPLGpaLE12LERTLExTLGhPLG9JXSxzdHlsZXM6WyIucmVxdWVzdHMtbW9kYWwgLm1vZGFsLWhlYWRlciAuY2xvc2UgY2xyLWljb257ZGlz''@;'; put 'put ''cGxheTpibG9jayFpbXBvcnRhbnR9ICAucmVxdWVzdHMtbW9kYWwgLm1vZGFsLWNvbnRlbnR7cGFkZGluZzoyMHB4IDEwcHggNXB4fSAgLndvcmstdGFibGVzLWRyb3Bkb3duIGJ1dHRvbntjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstY29sb3IsICM4YzhjOGMpIWltcG9ydGFudH0gIC5zdGFj''@;'; put 'put ''ay12aWV3e2hlaWdodDphdXRvIWltcG9ydGFudDttYXNrLWltYWdlOm5vbmUhaW1wb3J0YW50Oy13ZWJraXQtbWFzay1pbWFnZTpub25lIWltcG9ydGFudH0gIC5jb250ZW50IGNsci1pY29ue21hcmdpbi1ib3R0b206NXB4fSAgLmNvbnRlbnQgcHJle3dvcmQtYnJlYWs6YnJlYWstYWxsO3do''@;'; put 'put ''aXRlLXNwYWNlOnByZS13cmFwO21heC1oZWlnaHQ6aW5pdGlhbDtvdmVyZmxvdzp2aXNpYmxlO2JvcmRlcjowfSAgLmNvbnRlbnQgLnN0YWNrLWJsb2NrLWxhYmVse3dpZHRoOjEwMCU7cGFkZGluZy1sZWZ0Oi42cmVtIWltcG9ydGFudH0gIC5jb250ZW50IC5zdGFjay1ibG9jay1sYWJlbCAu''@;'; put 'put ''c3RhY2stdmlldy1rZXl7ZGlzcGxheTpub25lIWltcG9ydGFudH0gIC5lcnItbGlua3MgLmNsci10cmVlbm9kZS1jaGlsZHJlbnttYXgtaGVpZ2h0OjU1cHg7b3ZlcmZsb3c6YXV0b30uZHJvcGRvd24taXRlbS5zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZDhlM2U5''@;'; put 'put ''fS5sb2ctd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1MHB4O3BhZGRpbmc6MTBweDttYXJnaW4tdG9wOjEwcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlMmUyO2JhY2tncm91bmQtY29sb3I6I2ZiZmJm''@;'; put 'put ''YjtoZWlnaHQ6NDh2aDtvdmVyZmxvdzphdXRvfS5uby1yZXFzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMDE5NjA3ODQzKTtwYWRkaW5nLXRvcDo1cHg7dGV4dC1hbGlnbjpjZW50ZXJ9Il19KSxkfSkoKTtmdW5jdGlvbiBDUGUoZCxnKXtp''@;'; put 'put ''ZigxJmQmJih0dCgwLCJwIiw4KSxXdCgxLCIgU0FTIFNlcnZpY2U6ICIpLHR0KDIsInN0cm9uZyIpLFd0KDMpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMyksamkoaC5kYXRhLnNhc1NlcnZpY2UpfX1mdW5jdGlvbiBrUGUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDkpKDEsInAi''@;'; put 'put ''KSgyLCJzdHJvbmciKSxXdCgzLCJTWVNXQVJOSU5HVEVYVDoiKSxpdCgpLFd0KDQpLGl0KCksdHQoNSwicCIpKDYsInN0cm9uZyIpLFd0KDcsIlNZU0VSUk9SVEVYVDoiKSxpdCgpLFd0KDgpLGl0KCksdHQoOSwicCIpKDEwLCJzdHJvbmciKSxXdCgxMSwiTUFDOiIpLGl0KCksV3QoMTIpLGl0''@;'; put 'put ''KCkoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoNCksVWkoIiAiLGguZGF0YS5kZXRhaWxzLlNZU1dBUk5JTkdURVhULCIiKSxzdCg0KSxVaSgiICIsaC5kYXRhLmRldGFpbHMuU1lTRVJST1JURVhULCIiKSxzdCg0KSxVaSgiICIsaC5kYXRhLmRldGFpbHMuTUFDLCIiKX19ZnVuY3Rpb24gU1Bl''@;'; put 'put ''KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiwxMCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkub3BlbkNvbmZpZ3VyYXRvcigpKX0pLFd0KDEsIiBPcGVuIGNvbmZpZ3VyYXRvciAiKSxpdCgpfX1mdW5jdGlvbiBNUGUoZCxnKXtpZigx''@;'; put 'put ''JmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0b24iLDEwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5vcGVuUmVxdWVzdHNNb2RhbCgpKX0pLFd0KDEsIiBPcGVuIHJlcXVlc3RzIG1vZGFsICIpLGl0KCl9fWZ1bmN0aW9uIEVQZShkLGcpe2lmKDEmZCl7Y29u''@;'; put 'put ''c3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMTApLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmRvd25sb2FkTG9nKCkpfSksV3QoMSwiIERvd25sb2FkIGxvZyAiKSxpdCgpfX1mdW5jdGlvbiB4UGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0''@;'; put 'put ''b24iLDEwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5jbG9zZUFib3J0TW9kYWwoKSl9KSxXdCgxLCIgQ2xvc2UgIiksaXQoKX19ZnVuY3Rpb24gVFBlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiwxMCksWm4oImNsaWNrIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkucmVsb2FkKCkpfSksV3QoMSwiIFJlbG9hZCAiKSxpdCgpfX1sZXQgSVBlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5oZWxwZXJTZXJ2aWNlPWgsdGhpcy5ldmVudFNlcnZpY2U9dix0aGlzLnNhc1NlcnZpY2U9eSx0''@;'; put 'put ''aGlzLnJvdXRlcj1DLHRoaXMub25Db25maXJtTW9kYWxDbGljaz1uZXcgZm4sdGhpcy5kYXRhPW5ldyBQb2UsdGhpcy5mb3JjZVJlbG9hZD0hMSx0aGlzLm1vZGFsRW5hYmxlZD0hMCx0aGlzLmRlZmF1bHREYXRhPXttb2RhbFRpdGxlOiJBYm9ydCBNZXNzYWdlIixzYXNTZXJ2aWNlOm51bGws''@;'; put 'put ''bWVzc2FnZToiIixkZXRhaWxzOm5ldyB1Tn19bmdPbkluaXQoKXtsZXQgaD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5kZWZhdWx0RGF0YSksdGhpcy5kYXRhKTt0aGlzLmRhdGE9aH1zaG93Q29uZmlndXJhdG9yQnV0dG9uKGgpe2NvbnN0IHY9dGhpcy5zYXNTZXJ2aWNl''@;'; put 'put ''LmdldFNhc2pzQ29uZmlnKCk7cmV0dXJuKG51bGw9PWg/dm9pZCAwOmguaW5jbHVkZXMoInN0YXJ0dXBzZXJ2aWNlIikpJiZ2LnNlcnZlclR5cGU9PT14MS5ELlNhczl9Y2xvc2VBYm9ydE1vZGFsKCl7dGhpcy5vbkNvbmZpcm1Nb2RhbENsaWNrLmVtaXQoKX1vcGVuQ29uZmlndXJhdG9yKCl7''@;'; put 'put ''dGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksdGhpcy5jbG9zZUFib3J0TW9kYWwoKX1kb3dubG9hZExvZygpe3ZhciBoO3RoaXMuaGVscGVyU2VydmljZS5kb3dubG9hZFRleHRGaWxlKGAke3RoaXMuZGF0''@;'; put 'put ''YS5zYXNTZXJ2aWNlfS1MT0dgLChudWxsPT09KGg9dGhpcy5kYXRhLmRldGFpbHMpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLkxPRyl8fCJFcnJvciBwYXJzaW5nIHRoZSBsb2ciKX1vcGVuUmVxdWVzdHNNb2RhbCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9wZW5SZXF1ZXN0c01vZGFsKCl9cmVsb2Fk''@;'; put 'put ''KCl7bG9jYXRpb24ucmVsb2FkKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGNjKSxLdChtdSksS3QobDApLEt0KEVsKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1pbmZvLW1vZGFsIl1dLGlucHV0czp7ZGF0''@;'; put 'put ''YToiZGF0YSIsZm9yY2VSZWxvYWQ6ImZvcmNlUmVsb2FkIn0sb3V0cHV0czp7b25Db25maXJtTW9kYWxDbGljazoib25Db25maXJtTW9kYWxDbGljayJ9LGRlY2xzOjEzLHZhcnM6MTIsY29uc3RzOltbImFwcERyYWdOZHJvcCIsIiIsMSwiY2xyLWFib3J0LW1vZGFsIiwzLCJjbHJNb2RhbE9w''@;'; put 'put ''ZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWyJjbGFzcyIsInNhc1NlcnZpY2UiLDQsIm5nSWYiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJhYm9ydE1zZyIsMywiaW5uZXJIVE1MIl0sWyJjbGFzcyIs''@;'; put 'put ''InN5c3RleHQiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJidG4gYnRuLXByaW1hcnkiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsInNhc1NlcnZpY2UiXSxbMSwic3lzdGV4dCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXBy''@;'; put 'put ''aW1hcnkiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiY2xyLW1vZGFsIiwwKSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5tb2RhbEVuYWJsZWQ9Q30pLHR0KDEsImgzIiwxKSxXdCgyKSxubigzLENQZSw0LDEsInAi''@;'; put 'put ''LDIpLGl0KCksdHQoNCwiZGl2IiwzKSxicig1LCJkaXYiLDQpLG5uKDYsa1BlLDEzLDMsImRpdiIsNSksaXQoKSx0dCg3LCJkaXYiLDYpLG5uKDgsU1BlLDIsMCwiYnV0dG9uIiw3KSxubig5LE1QZSwyLDAsImJ1dHRvbiIsNyksbm4oMTAsRVBlLDIsMCwiYnV0dG9uIiw3KSxubigxMSx4UGUs''@;'; put 'put ''MiwwLCJidXR0b24iLDcpLG5uKDEyLFRQZSwyLDAsImJ1dHRvbiIsNyksaXQoKSgpKSwyJmgmJih4dCgiY2xyTW9kYWxPcGVuIix2Lm1vZGFsRW5hYmxlZCkoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCF2LmZvcmNlUmVsb2FkKSxzdCgyKSxVaSgiICIsdi5kYXRh''@;'; put 'put ''Lm1vZGFsVGl0bGUsIiAiKSxzdCgxKSx4dCgibmdJZiIsdi5kYXRhLnNhc1NlcnZpY2UmJnYuZGF0YS5zYXNTZXJ2aWNlLmxlbmd0aD4wKSxzdCgyKSx4dCgiaW5uZXJIVE1MIix2LmRhdGEubWVzc2FnZSxtbSksc3QoMSkseHQoIm5nSWYiLG51bGwhPT12LmRhdGEuZGV0YWlscyksc3QoMiks''@;'; put 'put ''eHQoIm5nSWYiLHYuc2hvd0NvbmZpZ3VyYXRvckJ1dHRvbih2LmRhdGEuc2FzU2VydmljZSkpLHN0KDEpLHh0KCJuZ0lmIixudWxsIT09di5kYXRhLmRldGFpbHMpLHN0KDEpLHh0KCJuZ0lmIiwobnVsbD09di5kYXRhLmRldGFpbHM/bnVsbDp2LmRhdGEuZGV0YWlscy5MT0cpJiYobnVsbD09''@;'; put 'put ''di5kYXRhLmRldGFpbHN8fG51bGw9PXYuZGF0YS5kZXRhaWxzLkxPRz9udWxsOnYuZGF0YS5kZXRhaWxzLkxPRy50cmltKCkpLmxlbmd0aD4wKSxzdCgxKSx4dCgibmdJZiIsIXYuZm9yY2VSZWxvYWQpLHN0KDEpLHh0KCJuZ0lmIix2LmZvcmNlUmVsb2FkKSl9LGRlcGVuZGVuY2llczpbQm8s''@;'; put 'put ''YTMsbDNdLHN0eWxlczpbIi5jbHItYWJvcnQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtdGl0bGUtd3JhcHBlcnt3aWR0aDoxMDAlfS5jbHItYWJvcnQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWx7ei1pbmRleDoyMDUwfS5tb2RhbC10aXRsZVtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LnNhc1NlcnZpY2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7cmlnaHQ6MTBweDttYXJnaW46MH0ubW9kYWwtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtib3Jk''@;'; put 'put ''ZXItdG9wOjFweCBzb2xpZCAjZGNkY2RjfS5zeXN0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzphdXRvO21hcmdpbi10b3A6MjBweDtwYWRkaW5nOjEwcHggMDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGNkY2RjfS5zeXN0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde21hcmdpbi10b3A6MDt3b3JkLXdyYXA6YnJlYWstd29yZH0iXX0pLGR9KSgpO2Z1bmN0aW9uIERQZShkLGcpezEmZCYmKEwwKDApLFd0KDEsIiBUaGlzIHZlcnNpb24gaXMgbGltaXRlZCB0byAiKSxPMCgpKX1mdW5jdGlvbiBMUGUoZCxnKXtpZigxJmQmJihMMCgwKSxX''@;'; put 'put ''dCgxKSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMSkscmgoIiAiLGguZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWQsIiByb3ciLDE9PT1oLmRlbW9MaW1pdHMucm93c19hbGxvd2VkPyIiOiJzIiwiIG9uIGFsbCB0YWJsZSB2aWV3cyAiKX19ZnVuY3Rpb24gT1BlKGQsZyl7aWYoMSZkJiYo''@;'; put 'put ''TDAoMCksV3QoMSksTzAoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLFBoKCIiLGguZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWQ/ImFuZCI6IiIsIiAiLGguZGVtb0xpbWl0cy51c2Vyc19hbGxvd2VkLCIgdXNlciIsMT09PWguZGVtb0xpbWl0cy51c2Vyc19hbGxvd2VkPyIiOiJzIiwiIil9''@;'; put 'put ''fWZ1bmN0aW9uIFJQZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMjApKDEsImRpdiIsMjEpKDIsImRpdiIsMjIpKDMsImRpdiIsMjMpLGJyKDQsImNsci1pY29uIiwyNCksaXQoKSx0dCg1LCJkaXYiLDI1KSxXdCg2LCIgRGVtbyBWZXJzaW9uIG9mIERhdGEgQ29udHJvbGxlciAtIGZvciBl''@;'; put 'put ''dmFsdWF0aW9uIHVzZSBvbmx5LiAiKSxubig3LERQZSwyLDAsIm5nLWNvbnRhaW5lciIsMSksbm4oOCxMUGUsMiwyLCJuZy1jb250YWluZXIiLDEpLG5uKDksT1BlLDIsMywibmctY29udGFpbmVyIiwxKSxpdCgpKCkoKSx0dCgxMCwiYSIsMjYpLFd0KDExLCJVcGRhdGUgTGljZW5jZSBLZXki''@;'; put 'put ''KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCg3KSx4dCgibmdJZiIsaC5kZW1vTGltaXRzLnJvd3NfYWxsb3dlZHx8aC5kZW1vTGltaXRzLnVzZXJzX2FsbG93ZWQpLHN0KDEpLHh0KCJuZ0lmIixoLmRlbW9MaW1pdHMucm93c19hbGxvd2VkKSxzdCgxKSx4dCgibmdJZiIsaC5kZW1v''@;'; put 'put ''TGltaXRzLnVzZXJzX2FsbG93ZWQpfX1mdW5jdGlvbiBCUGUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDI3KSgxLCJkaXYiLDIxKSgyLCJkaXYiLDIyKSgzLCJkaXYiLDIzKSxicig0LCJjbHItaWNvbiIsMjQpLGl0KCksdHQoNSwiZGl2IiwyNSksV3QoNiksdHQoNywiYSIsMjgpLFd0KDgs''@;'; put 'put ''InN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKSxpdCgpLFd0KDkpLGl0KCkoKSgpLHR0KDEwLCJhIiwyNiksV3QoMTEsIlVwZGF0ZSBMaWNlbmNlIEtleSIpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDYpLFVpKCIgVGhpcyBsaWNlbnNlIGtleSB3aWxsIGV4cGlyZSBpbiAiLGgu''@;'; put 'put ''bGljZW5zZUV4cGlyaW5nRGF5cywiIGRheXMuIFBsZWFzZSBjb250YWN0ICIpLHN0KDMpLFVpKCIgb3IgeW91ciByZXNlbGxlciB0byBhcnJhbmdlIGFkZGl0aW9uYWwgbGljZW5jZSBmb3Igc2l0ZSBpZCAiLGguc3lzc2l0ZS5nZXRWYWx1ZSgpLCIuICIpfX1mdW5jdGlvbiBQUGUoZCxnKXsx''@;'; put 'put ''JmQmJih0dCgwLCJhIiwyNiksV3QoMSwiVXBkYXRlIExpY2VuY2UgS2V5IiksaXQoKSl9ZnVuY3Rpb24gRlBlKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IiwyNykoMSwiZGl2IiwyMSkoMiwiZGl2IiwyMikoMywiZGl2IiwyMyksYnIoNCwiY2xyLWljb24iLDI0KSxpdCgpLHR0KDUsImRpdiIs''@;'; put 'put ''MjUpLFd0KDYsIiBUaGUgcmVnaXN0ZXJlZCBudW1iZXIgb2YgdXNlcnMgZXhjZWVkcyB0aGUgbGltaXQgc3BlY2lmaWVkIGZvciB5b3VyIGxpY2Vuc2UuIFBsZWFzZSBjb250YWN0ICIpLHR0KDcsImEiLDI4KSxXdCg4LCJzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksaXQoKSxXdCg5KSxp''@;'; put 'put ''dCgpKCkoKSxubigxMCxQUGUsMiwwLCJhIiwyOSksaXQoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDkpLFVpKCIgb3IgeW91ciByZXNlbGxlciB0byBhcnJhbmdlIGFkZGl0aW9uYWwgbGljZW5jZSBmb3Igc2l0ZSBpZCAiLGguc3lzc2l0ZS5nZXRWYWx1ZSgpLCIuICIpLHN0KDEpLHh0KCJu''@;'; put 'put ''Z0lmIiwhaC5saWNlbnNlRXhwaXJpbmdEYXlzKX19ZnVuY3Rpb24gSFBlKGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxSUGUsMTIsMywiZGl2IiwxOCksbm4oMixCUGUsMTIsMiwiZGl2IiwxOSksbm4oMyxGUGUsMTEsMiwiZGl2IiwxOSksTzAoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSks''@;'; put 'put ''eHQoIm5nSWYiLGguZGVtb0Jhbm5lciYmIWgubGljZW5zZUV4cGlyaW5nRGF5cyksc3QoMSkseHQoIm5nSWYiLGgubGljZW5zZUV4cGlyaW5nRGF5cyksc3QoMSkseHQoIm5nSWYiLGguYXBwT3ZlckNhcGFjaXR5KX19ZnVuY3Rpb24gTlBlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQo''@;'; put 'put ''MCwiZGl2IiwzMCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkudG9nZ2xlU2lkZWJhcigpKX0pLGJyKDEsImNsci1pY29uIiwzMSksaXQoKX19Y29uc3QgVlBlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvIl19O2Z1bmN0aW9uIGpQZShkLGcpezEmZCYmKHR0KDAsImEi''@;'; put 'put ''LDMyKSxicigxLCJpbWciLDMzKSgyLCJpbWciLDM0KSxpdCgpKSwyJmQmJnh0KCJyb3V0ZXJMaW5rIixscygxLFZQZSkpfWZ1bmN0aW9uIFpQZShkLGcpezEmZCYmKHR0KDAsImEiKSxicigxLCJzcGFuIiwzNSksaXQoKSl9Y29uc3QgeHdlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvdmlldyJdfSxU''@;'; put 'put ''d2U9ZnVuY3Rpb24oKXtyZXR1cm5bIi9ob21lIl19LENoZT1mdW5jdGlvbigpe3JldHVyblsiL3N1Ym1pdHRlZCJdfTtmdW5jdGlvbiB6UGUoZCxnKXsxJmQmJih0dCgwLCJjbHItZHJvcGRvd24tbWVudSIsNDMpKDEsImEiLDQ0KSxXdCgyLCJWSUVXIiksaXQoKSx0dCgzLCJhIiw0NCksV3Qo''@;'; put 'put ''NCwiRURJVCIpLGl0KCksdHQoNSwiYSIsNDQpLFd0KDYsIlJFVklFVyIpLGl0KCkoKSksMiZkJiYoc3QoMSkseHQoInJvdXRlckxpbmsiLGxzKDMseHdlKSksc3QoMikseHQoInJvdXRlckxpbmsiLGxzKDQsVHdlKSksc3QoMikseHQoInJvdXRlckxpbmsiLGxzKDUsQ2hlKSkpfWZ1bmN0aW9u''@;'; put 'put ''IEdQZShkLGcpe2lmKDEmZCYmKEwwKDApLHR0KDEsImRpdiIsMzYpKDIsImNsci1kcm9wZG93biIpKDMsImJ1dHRvbiIsMzcpLFd0KDQsIiBNZW51ICIpLGl0KCksbm4oNSx6UGUsNyw2LCJjbHItZHJvcGRvd24tbWVudSIsMzgpLGl0KCkoKSx0dCg2LCJkaXYiLDM5KSg3LCJhIiw0MCksV3Qo''@;'; put 'put ''OCwiVklFVyIpLGl0KCksdHQoOSwiYSIsNDEpLFd0KDEwLCJFRElUIiksaXQoKSx0dCgxMSwiYSIsNDIpLFd0KDEyLCJSRVZJRVciKSxpdCgpKCksTzAoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoNykseHQoInJvdXRlckxpbmsiLGxzKDcseHdlKSksc3QoMiksSGkoImFjdGl2ZSIsaC5yb3V0''@;'; put 'put ''ZXIudXJsLmluY2x1ZGVzKCJlZGl0b3IiKXx8aC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJlZGl0LXJlY29yZCIpfHxoLnJvdXRlci51cmwuaW5jbHVkZXMoImhvbWUiKSkseHQoInJvdXRlckxpbmsiLGxzKDgsVHdlKSksc3QoMiksSGkoImFjdGl2ZSIsaC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJz''@;'; put 'put ''dWJtaXR0ZWQiKXx8aC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJhcHByb3ZlIil8fGgucm91dGVyLnVybC5pbmNsdWRlcygiaGlzdG9yeSIpKSx4dCgicm91dGVyTGluayIsbHMoOSxDaGUpKX19Y29uc3QgV1BlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvYXBwcm92ZSJdfSxZUGU9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm5bIi9oaXN0b3J5Il19O2Z1bmN0aW9uIFVQZShkLGcpezEmZCYmKHR0KDAsIm5hdiIsNDUpKDEsInVsIiw0NikoMiwibGkiLDQ3KSgzLCJhIiw0MCksV3QoNCwiU1VCTUlUIiksaXQoKSgpLHR0KDUsImxpIiw0NykoNiwiYSIsNDApLFd0KDcsIkFQUFJPVkUiKSxpdCgpKCksdHQoOCwi''@;'; put 'put ''bGkiLDQ3KSg5LCJhIiw0MCksV3QoMTAsIkhJU1RPUlkiKSxpdCgpKCkoKSgpKSwyJmQmJihzdCgzKSx4dCgicm91dGVyTGluayIsbHMoMyxDaGUpKSxzdCgzKSx4dCgicm91dGVyTGluayIsbHMoNCxXUGUpKSxzdCgzKSx4dCgicm91dGVyTGluayIsbHMoNSxZUGUpKSl9ZnVuY3Rpb24gUVBl''@;'; put 'put ''KGQsZyl7MSZkJiZicigwLCJhcHAtYWxlcnRzIil9ZnVuY3Rpb24gSlBlKGQsZyl7MSZkJiZicigwLCJyb3V0ZXItb3V0bGV0Iil9ZnVuY3Rpb24gWFBlKGQsZyl7MSZkJiZicigwLCJhcHAtYWxlcnRzIil9ZnVuY3Rpb24gS1BlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYXBw''@;'; put 'put ''LWluZm8tbW9kYWwiLDQ4KSxabigib25Db25maXJtTW9kYWxDbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0O3JldHVybiBidChVdCgpLmNsb3NlQWJvcnRNb2RhbChDLmlkKSl9KSxpdCgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KCk7eHQoImRhdGEi''@;'; put 'put ''LGgpKCJmb3JjZVJlbG9hZCIsIXYuc3RhcnR1cERhdGFMb2FkZWQmJjE9PT12LnNhc2pzQWJvcnRzLmxlbmd0aCl9fWZ1bmN0aW9uICRQZShkLGcpezEmZCYmKHR0KDAsImRpdiIsNTIpLGJyKDEsImRpdiIsNTMpKDIsImRpdiIsNTQpKDMsImRpdiIsNTUpLGl0KCkpfWZ1bmN0aW9uIHFQZShk''@;'; put 'put ''LGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsNDkpLGJyKDEsImltZyIsNTApLG5uKDIsJFBlLDQsMCwiZGl2Iiw1MSksaXQoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMikseHQoIm5nSWYiLG51bGw9PT1oLmFwcEFjdGl2ZSl9fWxldCBlRmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYs''@;'; put 'put ''eSxDLEksaixjZSxfZSl7dGhpcy5hcHBTZXJ2aWNlPWgsdGhpcy5yb3V0ZXI9dix0aGlzLnJvdXRlPXksdGhpcy5sb2NhdGlvbj1DLHRoaXMuZXZlbnRTZXJ2aWNlPUksdGhpcy5hcHBTdG9yZVNlcnZpY2U9aix0aGlzLmNkcj1jZSx0aGlzLmVsZW1lbnRSZWY9X2UsdGhpcy5saWNlbnNlRXhw''@;'; put 'put ''aXJpbmdEYXlzPW51bGwsdGhpcy5zYXNqc0Fib3J0cz1bXSx0aGlzLmVkaXRvckFjdGl2ZT0hMSx0aGlzLmFwcHJvdmVBY3RpdmU9ITEsdGhpcy5kZW1vQmFubmVyPXRoaXMuYXBwU2VydmljZS5pc0FwcERlbW8udmFsdWUsdGhpcy5hcHBPdmVyQ2FwYWNpdHk9ITEsdGhpcy5hcHBBY3RpdmU9''@;'; put 'put ''bnVsbCx0aGlzLnJlcXVlc3RzTW9kYWw9ITEsdGhpcy5zaG93UmVnaXN0cmF0aW9uPSEwLHRoaXMuc3RhcnR1cERhdGFMb2FkZWQ9ITEsdGhpcy5kZW1vTGltaXROb3RpY2U9ITEsdGhpcy5zeXNzaXRlPXRoaXMuYXBwU2VydmljZS5zeXNzaXRlLHRoaXMuZGVtb0xpbWl0cz17fSx0aGlzLnBh''@;'; put 'put ''cnNlRGNBZGFwdGVyU2V0dGluZ3MoKSx3aW5kb3cuYXBwaW5mbz0oKT0+e2NvbnN0IFJlPXRoaXMuYXBwU2VydmljZS5nZXRMaWNlbnNlS2V5RGF0YSgpO2lmKFJlKXtjb25zdCBOZT1rbChSZS52YWxpZF91bnRpbCwiWVlZWS1NTS1ERCIpLEtlPWtsKCksaHQ9TmUuZGlmZihLZSwiZGF5cyIp''@;'; put 'put ''O1JlLnZhbGlkX3VudGlsKz1gICgke2h0fSBkYXlzIHJlbWFpbmluZylgLGlzTmFOKGh0KSYmKFJlLnZhbGlkX3VudGlsPSJVbmxpbWl0ZWQiKX1jb25zb2xlLnRhYmxlKHsiQWRhcHRlciB2ZXJzaW9uIjoiMy4xMC4xNSIsIkFwcCB2ZXJzaW9uIjoidjUuMi4wIi5yZXBsYWNlKCJ2IiwiIiks''@;'; put 'put ''IkJ1aWxkIHRpbWVzdGFtcCI6a2wocGFyc2VJbnQoIjE2NzA4NjAxODYxMDYiKSkuZm9ybWF0KCJERC1NTU0tWVlZWSBISDpNTSIpLCIuLi4iOiIuLi4ifSl9LHRoaXMuc3Vic2NyaWJlVG9MaWNlbnNlRXZlbnRzKCksdGhpcy5jb21taXRWZXI9InY1LjIuMCIucmVwbGFjZSgidiIsIiIpKyIu''@;'; put 'put ''ZzhlNjk1MjU1Iix2LmV2ZW50cy5zdWJzY3JpYmUoUmU9PntpZih0aGlzLnJvdXRlVXJsPXRoaXMucm91dGVyLnVybCx2b2lkIDAhPT10aGlzLnJvdXRlVXJsJiZ0aGlzLnJvdXRlVXJsLmxlbmd0aD40KXtsZXQgTmU9dGhpcy5yb3V0ZVVybC5zcGxpdCgiLyIpWzFdOyJlZGl0b3IiPT09TmU/''@;'; put 'put ''KHRoaXMuZXJyVG9wPSEwLHRoaXMuZWRpdG9yQWN0aXZlPSEwLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSk6ImhvbWUiPT09TmU/KHRoaXMuZXJyVG9wPSExLHRoaXMuZWRpdG9yQWN0aXZlPSEwLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSk6KHRoaXMuZXJyVG9wPSEwLHRoaXMuZWRpdG9yQWN0aXZl''@;'; put 'put ''PSExKSxyaS5yb290UGFyYW09TmV9dm9pZCAwIT09dGhpcy5yb3V0ZVVybCYmdGhpcy5yb3V0ZVVybC5sZW5ndGg+NiYmKHRoaXMuYXBwcm92ZUFjdGl2ZT0hIXRoaXMucm91dGVVcmwuaW5jbHVkZXMoImFwcHJvdmVEZXQiKXx8ISF0aGlzLnJvdXRlVXJsLmluY2x1ZGVzKCJ0b2FwcHJvdmUi''@;'; put 'put ''KSl9KSx0aGlzLnN1YnNjcmliZVRvU2hvd0Fib3J0TW9kYWwoKSx0aGlzLnN1YnNjcmliZVRvUmVxdWVzdHNNb2RhbCgpLHRoaXMuc3Vic2NyaWJlVG9TdGFydHVwRGF0YSgpLHRoaXMuc3Vic2NyaWJlVG9BcHBBY3RpdmUoKSx0aGlzLnN1YnNjcmliZVRvRGVtb0xpbWl0TW9kYWwoKSx3aW5k''@;'; put 'put ''b3cuZnJhbWVFbGVtZW50JiYod2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZSIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhbGxvd2Z1bGxzY3JlZW4iLCIiKSx3aW5kb3cu''@;'; put 'put ''ZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIiksd2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1hcmdpbmhlaWdodCIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWFyZ2lud2lkdGgiLCIwIiksd2luZG93LmZyYW1lRWxl''@;'; put 'put ''bWVudC5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsImF1dG8iKSx3aW5kb3cuZm9jdXMoKSl9cGFyc2VEY0FkYXB0ZXJTZXR0aW5ncygpe2NvbnN0IGg9eT0+dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKHkpLHY9e3NlcnZlclVybDpoKCJzZXJ2ZXJVcmwiKSxh''@;'; put 'put ''cHBMb2M6aCgiYXBwTG9jIiksc2VydmVyVHlwZTpoKCJzZXJ2ZXJUeXBlIiksbG9naW5NZWNoYW5pc206aCgibG9naW5NZWNoYW5pc20iKSxhZG1pbkdyb3VwOmgoImFkbWluR3JvdXAiKSxkY1BhdGg6aCgiZGNQYXRoIiksZGVidWc6InRydWUiPT09aCgiZGVidWciKSx1c2VDb21wdXRlQXBp''@;'; put 'put ''OiJ0cnVlIj09PWgoInVzZUNvbXB1dGVBcGkiKSxjb250ZXh0TmFtZTpoKCJjb250ZXh0TmFtZSIpLGhvdExpY2VuY2VLZXk6aCgiaG90TGljZW5jZUtleSIpfTt0aGlzLmRjQWRhcHRlclNldHRpbmdzPXYsdGhpcy5hcHBTdG9yZVNlcnZpY2Uuc2V0RGNBZGFwdGVyU2V0dGluZ3ModiksdGhp''@;'; put 'put ''cy5hcHBTZXJ2aWNlLnNhc1NlcnZpY2VJbml0KCl9c3Vic2NyaWJlVG9EZW1vTGltaXRNb2RhbCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9uRGVtb0xpbWl0TW9kYWxTaG93LnN1YnNjcmliZSgoKT0+e3RoaXMuZGVtb0xpbWl0Tm90aWNlPSEwfSl9c3Vic2NyaWJlVG9MaWNlbnNlRXZlbnRzKCl7''@;'; put 'put ''dGhpcy5hcHBTZXJ2aWNlLmlzQXBwRGVtby5zdWJzY3JpYmUoaD0+e3RoaXMuZGVtb0Jhbm5lcj1ofSksdGhpcy5hcHBTZXJ2aWNlLmxpY2Vuc2VFeHBpcmVzSW5EYXlzLnN1YnNjcmliZShoPT57aCYmaDw9MTQmJih0aGlzLmxpY2Vuc2VFeHBpcmluZ0RheXM9aCl9KSx0aGlzLmFwcFNlcnZp''@;'; put 'put ''Y2UuaXNBcHBPdmVyQ2FwYWNpdHkuc3Vic2NyaWJlKGg9Pnt0aGlzLmFwcE92ZXJDYXBhY2l0eT1ofSl9c3Vic2NyaWJlVG9BcHBBY3RpdmUoKXt0aGlzLmFwcFNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQuc3Vic2NyaWJlKGg9Pnt0aGlzLmFwcEFjdGl2ZT1oLHRoaXMuZGVtb0xpbWl0cz10aGlz''@;'; put 'put ''LmFwcFNlcnZpY2UuZGVtb0xpbWl0c30pfXN1YnNjcmliZVRvU2hvd0Fib3J0TW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vblNob3dBYm9ydE1vZGFsLnN1YnNjcmliZShoPT57aC5pZD10aGlzLnNhc2pzQWJvcnRzLmxlbmd0aCsxLHRoaXMuc2FzanNBYm9ydHMucHVzaChoKSx0aGlzLmNk''@;'; put 'put ''ci5kZXRlY3RDaGFuZ2VzKCl9KX1zdWJzY3JpYmVUb1N0YXJ0dXBEYXRhKCl7dGhpcy5ldmVudFNlcnZpY2Uub25TdGFydHVwRGF0YUxvYWRlZC5zdWJzY3JpYmUoKCk9Pnt0aGlzLnN0YXJ0dXBEYXRhTG9hZGVkPSEwfSl9c3Vic2NyaWJlVG9SZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNl''@;'; put 'put ''cnZpY2Uub25SZXF1ZXN0c01vZGFsT3Blbi5zdWJzY3JpYmUoaD0+e3RoaXMucmVxdWVzdHNNb2RhbD0hMH0pfWNsb3NlQWJvcnRNb2RhbChoKXtsZXQgdj10aGlzLnNhc2pzQWJvcnRzLmZpbmRJbmRleCh5PT55LmlkPT09aCk7dGhpcy5zYXNqc0Fib3J0cy5zcGxpY2UodiwxKX10b2dnbGVT''@;'; put 'put ''aWRlYmFyKCl7dGhpcy5ldmVudFNlcnZpY2UudG9nZ2xlU2lkZWJhcigpfWlzTWFpblJvdXRlKGgpe3JldHVybiB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoaCl9b3BlbkxpY2VuY2luZ1BhZ2UoKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvbGljZW5zaW5nL3VwZGF0ZSIpfX1yZXR1''@;'; put 'put ''cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChzaCksS3QoRWwpLEt0KEoxKSxLdChWZCksS3QobXUpLEt0KFI3KSxLdChkMSksS3QoX28pKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sibXktYXBwIl1dLGRlY2xzOjMwLHZhcnM6MTYs''@;'; put 'put ''Y29uc3RzOltbMSwibWFpbi1jb250YWluZXIiXSxbNCwibmdJZiJdLFsxLCJhcHAtaGVhZGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSBtbC0xMCBkLWZsZXggY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIgY2xyLWFsaWduLWl0ZW1z''@;'; put 'put ''LWNlbnRlciIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwibG9nbyIsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImhyZWYiLCIjIiwiY2xhc3MiLCJuYXYtbGluayIsMywicm91dGVyTGluayIsNCwibmdJZiJdLFsxLCJoZWFkZXItYWN0aW9ucyJdLFsxLCJuYXYtdGV4dCJd''@;'; put 'put ''LFsxLCJkcm9wZG93biJdLFsiY2xhc3MiLCJzdWJuYXYiLDQsIm5nSWYiXSxbMywib3BlbmVkIiwib3BlbmVkQ2hhbmdlIl0sWzMsImRhdGEiLCJmb3JjZVJlbG9hZCIsIm9uQ29uZmlybU1vZGFsQ2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiYXBwRHJhZ05kcm9wIiwiIiwxLCJwb3Np''@;'; put 'put ''dGlvbi1yZWxhdGl2ZSIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsic2l6ZSIsIjIwIiwic2hhcGUiLCJsb2NrIl0sWzEsIm1vZGFsLWJvZHkiXSxbImhyZWYiLCJtYWls''@;'; put 'put ''dG86c3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyJdLFsiY2xhc3MiLCJhcHAtbG9hZGluZyIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbGVydCBhbGVydC1hcHAtbGV2ZWwgYWxlcnQtd2FybmluZyIsImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQiLDQsIm5nSWYiXSxbImNsYXNzIiwi''@;'; put 'put ''YWxlcnQgYWxlcnQtYXBwLWxldmVsIGFsZXJ0LWRhbmdlciIsImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQiLDQsIm5nSWYiXSxbImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQiLDEsImFsZXJ0IiwiYWxlcnQtYXBwLWxldmVsIiwiYWxlcnQtd2FybmluZyJdLFsxLCJh''@;'; put 'put ''bGVydC1pdGVtcyJdLFsxLCJhbGVydC1pdGVtIiwic3RhdGljIl0sWzEsImFsZXJ0LWljb24td3JhcHBlciJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwxLCJtdC0yIl0sWzEsImFsZXJ0LXRleHQiXSxbInJvdXRlckxpbmsiLCIvbGljZW5zaW5nL3VwZGF0ZSIsMSwidXBkYXRlLWtl''@;'; put 'put ''eSJdLFsiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsMSwiYWxlcnQiLCJhbGVydC1hcHAtbGV2ZWwiLCJhbGVydC1kYW5nZXIiXSxbImhyZWYiLCJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iLDEsImNvbG9yLXdoaXRlIl0sWyJyb3V0ZXJMaW5rIiwiL2xpY2Vu''@;'; put 'put ''c2luZy91cGRhdGUiLCJjbGFzcyIsInVwZGF0ZS1rZXkiLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImN1cnNvci1wb2ludGVyIiwic2VsZWN0LW5vbmUiLCJtbC0xMCIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIs''@;'; put 'put ''MywiY2xpY2siXSxbInNpemUiLCIyNCIsInNoYXBlIiwidHJlZS12aWV3Il0sWyJocmVmIiwiIyIsMSwibmF2LWxpbmsiLDMsInJvdXRlckxpbmsiXSxbInNyYyIsIi9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvZGMtbG9n''@;'; put 'put ''by1zdmciLDEsIndpdGhvdXQtdGV4dCIsImQtYmxvY2siLCJkLW1kLW5vbmUiXSxbInNyYyIsIi9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvZGF0YWNvbnRyb2xsZXItc3ZnIiwxLCJ3aXRoLXRleHQiLCJkLW5vbmUiLCJk''@;'; put 'put ''LW1kLWJsb2NrIl0sWzEsImNsci1pY29uIiwiaGVhZGVyLWxvZ28iLCJtbC0xMCJdLFsxLCJoZWFkZXItbmF2IiwiZC1mbGV4IiwiZC1zbS1ub25lIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLCJhcmlhLWxhYmVsIiwidG9nZ2xlIHNldHRpbmdzIG1lbnUiLDEsIm5hdi1pY29uIiwiY29s''@;'; put 'put ''b3Itd2hpdGUtaSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsNCwiY2xySWZPcGVuIl0sWzEsImhlYWRlci1uYXYiLCJkLW5vbmUiLCJkLXNtLWZsZXgiXSxbInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDEsIm5hdi1saW5rIiwibmF2LXRleHQiLDMsInJvdXRlckxpbmsiXSxb''@;'; put 'put ''MSwibmF2LWxpbmsiLCJuYXYtdGV4dCIsMywicm91dGVyTGluayJdLFsxLCJuYXYtbGluayIsIm5hdi10ZXh0IiwiY3Vyc29yLXBvaW50ZXIiLDMsInJvdXRlckxpbmsiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLWxlZnQiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywicm91dGVyTGluayJd''@;'; put 'put ''LFsxLCJzdWJuYXYiXSxbMSwibmF2Il0sWzEsIm5hdi1pdGVtIl0sWzMsImRhdGEiLCJmb3JjZVJlbG9hZCIsIm9uQ29uZmlybU1vZGFsQ2xpY2siXSxbMSwiYXBwLWxvYWRpbmciXSxbInNyYyIsIi9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0v''@;'; put 'put ''d2ViOS9pbWFnZXMvZGF0YWNvbnRyb2xsZXItc3ZnIiwxLCJsb2FkaW5nLWxvZ28iXSxbImNsYXNzIiwic2xpZGVyIiw0LCJuZ0lmIl0sWzEsInNsaWRlciJdLFsxLCJsaW5lIl0sWzEsInN1YmxpbmUiLCJpbmMiXSxbMSwic3VibGluZSIsImRlYyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYp''@;'; put 'put ''ezEmaCYmKHR0KDAsImRpdiIsMCksbm4oMSxIUGUsNCwzLCJuZy1jb250YWluZXIiLDEpLHR0KDIsImhlYWRlciIsMiksbm4oMyxOUGUsMiwwLCJkaXYiLDMpLHR0KDQsImRpdiIsNCksbm4oNSxqUGUsMywyLCJhIiw1KSxubig2LFpQZSwyLDAsImEiLDEpLGl0KCksbm4oNyxHUGUsMTMsMTAs''@;'; put 'put ''Im5nLWNvbnRhaW5lciIsMSksdHQoOCwiZGl2Iiw2KSg5LCJkaXYiLDcpLGJyKDEwLCJhcHAtbG9hZGluZy1pbmRpY2F0b3IiKSxpdCgpLHR0KDExLCJkaXYiLDgpLGJyKDEyLCJhcHAtdXNlci1uYXYtZHJvcGRvd24iKSxpdCgpKCkoKSxubigxMyxVUGUsMTEsNiwibmF2Iiw5KSxubigxNCxR''@;'; put 'put ''UGUsMSwwLCJhcHAtYWxlcnRzIiwxKSx0dCgxNSwiYXBwLXJlcXVlc3RzLW1vZGFsIiwxMCksWm4oIm9wZW5lZENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYucmVxdWVzdHNNb2RhbD1DfSksaXQoKSxubigxNixKUGUsMSwwLCJyb3V0ZXItb3V0bGV0IiwxKSxicigxNywiYXBwLWxvZ2lu''@;'; put 'put ''Iiksbm4oMTgsWFBlLDEsMCwiYXBwLWFsZXJ0cyIsMSksbm4oMTksS1BlLDEsMiwiYXBwLWluZm8tbW9kYWwiLDExKSx0dCgyMCwiY2xyLW1vZGFsIiwxMiksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuZGVtb0xpbWl0Tm90aWNlPUN9KSx0dCgyMSwiaDMi''@;'; put 'put ''LDEzKSxXdCgyMiwiIExvY2tlZCBGZWF0dXJlICIpLGJyKDIzLCJjbHItaWNvbiIsMTQpLGl0KCksdHQoMjQsImRpdiIsMTUpLFd0KDI1LCIgQ29udGFjdCAiKSx0dCgyNiwiYSIsMTYpLFd0KDI3LCJzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksaXQoKSxXdCgyOCksaXQoKSgpKCksbm4o''@;'; put 'put ''MjkscVBlLDMsMSwiZGl2IiwxNykpLDImaCYmKHN0KDEpLHh0KCJuZ0lmIiwhdi5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSksc3QoMikseHQoIm5nSWYiLHYuaXNNYWluUm91dGUoInZpZXciKXx8di5pc01haW5Sb3V0ZSgiaG9tZSIpJiYhdi5yb3V0ZXIudXJsLmluY2x1ZGVz''@;'; put 'put ''KCJsaWNlbnNpbmciKSksc3QoMikseHQoIm5nSWYiLCF2LnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpKSxzdCgxKSx4dCgibmdJZiIsdi5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKSksc3QoMSkseHQoIm5nSWYiLCF2LnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiYh''@;'; put 'put ''di5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSksc3QoNikseHQoIm5nSWYiLHYucm91dGVyLnVybC5pbmNsdWRlcygic3VibWl0dGVkIil8fHYucm91dGVyLnVybC5pbmNsdWRlcygiYXBwcm92ZSIpfHx2LnJvdXRlci51cmwuaW5jbHVkZXMoImhpc3RvcnkiKSksc3QoMSkseHQo''@;'; put 'put ''Im5nSWYiLCF2LmVyclRvcCksc3QoMSkseHQoIm9wZW5lZCIsdi5yZXF1ZXN0c01vZGFsKSxzdCgxKSx4dCgibmdJZiIsdi5zdGFydHVwRGF0YUxvYWRlZCksc3QoMikseHQoIm5nSWYiLHYuZXJyVG9wKSxzdCgxKSx4dCgibmdGb3JPZiIsdi5zYXNqc0Fib3J0cyksc3QoMSkseHQoImNsck1v''@;'; put 'put ''ZGFsT3BlbiIsdi5kZW1vTGltaXROb3RpY2UpKCJjbHJNb2RhbENsb3NhYmxlIiwhMCkoImNsck1vZGFsU2l6ZSIsImxnIiksc3QoOCksVWkoIiB3aXRoIHlvdXIgc2l0ZSBpZCAoIix2LnN5c3NpdGUudmFsdWUsIikgdG8gYWN0aXZhdGUhICIpLHN0KDEpLHh0KCJuZ0lmIiwhdi5zdGFydHVw''@;'; put 'put ''RGF0YUxvYWRlZCkpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLFQ3LE83LEV5LE5CZSxWQmUsUUJlLEtCZSxWWixHMixhMyxsMyx5dyxNdixEUyxMUyxoTyxfUGUsSVBlXSxzdHlsZXM6WyJhcHAtcmVxdWVzdHMtbW9kYWxbX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6MTAwMDB9aGVhZGVyLmFw''@;'; put 'put ''cC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzMxNDM1MSFpbXBvcnRhbnQ7Y29sb3I6I2ZmZn0ubG9nb1tfbmdjb250ZW50LSVDT01QJV0gICBpbWcud2l0aG91dC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDozMHB4fS5sb2dvW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIGltZy53aXRoLXRleHRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIxMHB4fS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDttYXJnaW4tbGVmdDoxMHB4fS5kZW1vLWV4''@;'; put 'put ''cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246Zml4ZWQ7bGVmdDowO3RvcDowO2hlaWdodDoxMDB2aCFpbXBvcnRhbnQ7d2lkdGg6MTAwdnchaW1wb3J0YW50O3otaW5k''@;'; put 'put ''ZXg6MTA1O2JhY2tncm91bmQ6cmdiYSgzMywzMywzMywuNSl9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjMw''@;'; put 'put ''cHg7ei1pbmRleDoxMTA7YmFja2dyb3VuZDojMzE0MzUxfS5kZW1vLWV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5leHBpcmVkLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTBlMGUwO2Zv''@;'; put 'put ''bnQtc2l6ZToxNnB4fS5kZW1vLWV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5leHBpcmVkLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWlsdG9bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM4''@;'; put 'put ''ZGM1M2V9Lm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC51cGRhdGUta2V5W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiNmZmY7cGFkZGluZzowIDEwcHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xNDkwMTk2MDc4''@;'; put 'put ''KX0uYWxlcnQtaWNvbi13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5uYXYtdGV4dFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjIwcHh9LnNpZGViYXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7aGVpZ2h0''@;'; put 'put ''OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmctbGVmdDoxMHB4fS5zaWRlYmFyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICBjbHItaWNvbltfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOnBvaW50ZXI7d2lkdGg6MzBweDtoZWlnaHQ6MzBweH1oZWFkZXJbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLmhlYWRlci1hY3Rpb25zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246dW5zZXR9aGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtjb2xvcjojZmFmYWZhO29wYWNpdHk6Ljk7bGluZS1oZWlnaHQ6MS40NXJlbX1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmtbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4''@;'; put 'put ''IDAgdHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4ycyBlYXNlLWlufWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Y29sb3I6I2ZhZmFmYTtvcGFjaXR5OjF9aGVh''@;'; put 'put ''ZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rLmFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNjE3MTdEO29wYWNpdHk6MTtib3gtc2hhZG93Omluc2V0IDAgLTNweCB0cmFuc3BhcmVudH1oZWFkZXJbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWl0ZW1bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDoxcmVtfS5ub3RmW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMxNmE1N2E7Y29sb3I6I2ZmZmNmYztmb250LXNpemU6MTJweH0uYnRu''@;'; put 'put ''LmJ0bi1zdWNjZXNzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYyYTQyMDtiYWNrZ3JvdW5kLWNvbG9yOiMxNmE1N2EhaW1wb3J0YW50O2NvbG9yOiNmZmZ9LmJ0bi5idG4tc3VjY2Vzc1tfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMmFkZDM5''@;'; put 'put ''O2NvbG9yOiNmZmZ9LnRvZ2dsZS1zd2l0Y2hbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT1jaGVja2JveF1bX25nY29udGVudC0lQ09NUCVdOmNoZWNrZWQgKyBsYWJlbFtfbmdjb250ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1jb2xvcjojNjE3MTdkO2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6IzYxNzE3ZDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDoxMDB2aCFpbXBvcnRhbnR9Lm1haW4tY29udGFpbmVyW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjByZW0gMXJlbSAxcmVtfS5jb250ZW50LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ei1pbmRleDowIWlt''@;'; put 'put ''cG9ydGFudH0ubmF2QmFyUmVzcFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDojNDk1QTY3O2NvbG9yOiNmZmZ9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey5uYXZCYXJSZXNwW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7YmFja2dyb3VuZDojNDk1QTY3O2NvbG9yOiNmZmZ9Lm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMVtfbmdjb250ZW50LSVDT01QJV0gICAubmF2''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2''@;'; put 'put ''LWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTFbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAu''@;'; put 'put ''bWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmtbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MCAuNXJlbSAwIDFyZW07d2lkdGg6''@;'; put 'put ''MTAwJTttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztib3JkZXItcmFkaXVzOi4xMjVyZW0gMCAwIC4xMjVyZW07Y29sb3I6Izk1Yzg0Yn0uY2FyZC1ibG9ja1tfbmdjb250ZW50LSVDT01QJV0sIC5jYXJkLWZvb3Rlcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17cGFkZGluZzoxMHB4IDAgMH0ubWFpbi1jb250YWluZXJbX25nY29udGVudC1jMF1bX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnQtY29udGFpbmVyW19uZ2NvbnRlbnQtYzBdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50LWFyZWFbX25nY29udGVudC1jMF1bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3BhZGRpbmc6MHJlbX19ICAuaHRJbnZhbGlke2JhY2tncm91bmQ6YmxhY2shaW1wb3J0YW50fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KXsgIGgye2ZvbnQtc2l6ZTouN3JlbSFpbXBvcnRhbnR9ICBoM3tmb250LXNpemU6LjdyZW19fSAgLm5hdi1s''@;'; put 'put ''aW5re3BhZGRpbmc6MHJlbSAxcmVtfSAgLmJ0bi1wcmltYXJ5IC5idG4sICAgLmJ0bi5idG4tcHJpbWFyeXtib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTE7Y29sb3I6I2ZmZn0gIC5idG57Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdl''@;'; put 'put ''YmtpdC1hcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6LjEyNXJlbTtib3JkZXI6MXB4IHNvbGlkO21pbi13aWR0aDozcmVtO21heC13aWR0aDoxNXJlbTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dGV4dC1h''@;'; put 'put ''bGlnbjpjZW50ZXI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoxLjVyZW07bGV0dGVyLXNwYWNpbmc6LjEyZW07Zm9udC1zaXplOi41cmVtO2ZvbnQtd2VpZ2h0OjUwMDtoZWlnaHQ6MS41cmVtO3BhZGRpbmc6MCAuNXJlbTtib3Jk''@;'; put 'put ''ZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMzMTQzNTF9ICAuYnRuLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzMxNDM1MX0gIC5idG4uYnRuLW91dGxpbmU6aG92''@;'; put 'put ''ZXJ7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojNDk1YTY3O2NvbG9yOiNmZmZ9ICAuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNWVhNzFmO2NvbG9yOiNmZmY3Zjc7Ym9yZGVyLWNvbG9yOiM5YTk2OTZ9ICAuaHRNb2JpbGVF''@;'; put 'put ''ZGl0b3JDb250YWluZXIgLmlucHV0cyB0ZXh0YXJlYXtmb250LXNpemU6MTNwdDtib3JkZXI6MnB4IHNvbGlkICM0ODU5Njc7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7Ym94LXNoYWRvdzpub25lO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTRweDtyaWdodDow''@;'; put 'put ''cHg7dG9wOjA7Ym90dG9tOjA7cGFkZGluZzo3cHQ7d2lkdGg6MjkwcHh9ICAuaHRNb2JpbGVFZGl0b3JDb250YWluZXIgLnBvc2l0aW9uQ29udHJvbHN7d2lkdGg6MzMzcHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NXB0O3RvcDo1MHB4O2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6Y2VudGVyfSAgLmh0TW9iaWxlRWRpdG9yQ29udGFpbmVyLmFjdGl2ZXtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMjBweDt3aWR0aDozNTBweH0gIC5oYW5kc29udGFibGV7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6M3B4fSAgLmhhbmRzb250YWJsZSB0aHti''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9ICAuaHRfY2xvbmVfbGVmdCB0aHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9ICAuaHRfY2xvbmVfdG9wIHRoe2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xp''@;'; put 'put ''ZCAjY2NjO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2N9ICAuaHRfY2xvbmVfdG9wX2xlZnRfY29ybmVyIHRoe2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY30gIC5odF9tYXN0ZXIgdHI6bnRoLW9mLXR5cGUob2RkKT50ZHtiYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZjM7Ym9yZGVyOjFw''@;'; put 'put ''eCBzb2xpZCByZ2IoMTk3LDE5NywxOTcpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYigyMzYsMjM1LDIzNSl9ICAuaHRfbWFzdGVyIHRyOm50aC1vZi10eXBlKGV2ZW4pPnRke2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHJnYigxOTcsMTk3LDE5Nyk7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbToxcHggc29saWQgcmdiKDIzNiwyMzUsMjM1KX0gIC53dEJvcmRlcntiYWNrZ3JvdW5kLWNvbG9yOiM0OTVhNjchaW1wb3J0YW50fSAgLmhhbmRzb250YWJsZSAuaGFuZHNvbnRhYmxlLmh0X2Nsb25lX3RvcCAud3RIaWRlcntwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowO2Jv''@;'; put 'put ''cmRlci1ib3R0b206M3B4IHNvbGlkICNkNmQzZDN9ICAuY29udGVudC1jb250YWluZXJ7YmFja2dyb3VuZDojRjVGNkZGfSAgLmNhcmR7Ym94LXNoYWRvdzowIC4xMjVyZW0gI2Q3ZDdkNztib3JkZXItcmFkaXVzOjByZW07Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudH0gIC5kYXRhZ3Jp''@;'; put 'put ''ZC1jb21wYWN0IC5kYXRhZ3JpZCwgICAuZGF0YWdyaWQtaGlzdG9yeSAuZGF0YWdyaWR7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czouMTI1cmVtO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNTY1NjU2O21h''@;'; put 'put ''cmdpbjowO21hcmdpbi10b3A6MXJlbTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlO3BhZGRpbmc6MTVweCAxNXB4IDUwcHh9ICAuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdCwgICAuZGF0YWdyaWQtaGlzdG9yeSAuZGF0YWdyaWQtZm9vdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1l''@;'; put 'put ''bmQ7aGVpZ2h0OjEuNXJlbTtwYWRkaW5nOjAgLjVyZW07bGluZS1oZWlnaHQ6Y2FsYygxLjVyZW0gLSAzcHgpO2ZvbnQtc2l6ZTouNDU4MzNyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czowfSAgLmRhdGFncmlkLWNvbXBh''@;'; put 'put ''Y3QgLmRhdGFncmlkLWZvb3RlciwgICAuZGF0YWdyaWQtaGlzdG9yeSAuZGF0YWdyaWQtZm9vdGVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE1cHg7dG9wOjJweH0gIC5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZCAuZGF0YWdyaWQtaGVhZCwgICAuZGF0YWdyaWQtaGlzdG9yeSAuZGF0''@;'; put 'put ''YWdyaWQgLmRhdGFncmlkLWhlYWR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2N9ICAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWFyZ2luLXRvcDouMDgzMzMzcmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRp''@;'; put 'put ''cmVjdGlvbjpjb2x1bW47YmFja2dyb3VuZDojZjVmNmZmO3BhZGRpbmc6LjVyZW0gMDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym94LXNoYWRvdzowIDFweCAuMTI1cmVtICM3MzczNzM0MDttaW4td2lkdGg6NXJlbTttYXgtd2lkdGg6MTVyZW07Ym9yZGVyLXJhZGl1czouMTI1cmVtO3Zpc2li''@;'; put 'put ''aWxpdHk6aGlkZGVuO3otaW5kZXg6MTAwMH0gIC50YWJsZXtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM1NjU2NTY7bWFyZ2luOjA7bWFyZ2luLXRvcDoxcmVt''@;'; put 'put ''O21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCV9ICAudGFibGUgdGh7Zm9udC1zaXplOi40NTgzM3JlbTtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjAzZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAj''@;'; put 'put ''Y2NjO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0gIC5tb2RhbC1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2U0ZTRlNDtwYWRkaW5nOjAgMCAuNXJlbTttYXJnaW4tYm90dG9tOjFyZW19ICAubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVye21pbi1oZWlnaHQ6MHB4''@;'; put 'put ''O3Bvc2l0aW9uOnJlbGF0aXZlfS5hcHAtbG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV0gICAubG9hZGluZy1sb2dvW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtd2lkdGg6NDAwcHg7d2lkdGg6MTAwJX0iXX0pLGR9KSgpO2Z1bmN0aW9uIEl3ZShkKXtyZXR1cm4gbmV3IHF0KDNlMywhMSl9ZnVu''@;'; put 'put ''Y3Rpb24gQkZlKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5kb2N1bWVudH1mdW5jdGlvbiBraGUoKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwocHJvY2Vz''@;'; put 'put ''cyl9ZnVuY3Rpb24gRXcoZCl7c3dpdGNoKGQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBCaztjYXNlIDE6cmV0dXJuIGRbMF07ZGVmYXVsdDpyZXR1cm4gbmV3IFBYKGQpfX1mdW5jdGlvbiBEd2UoZCxnLGgsdix5PW5ldyBNYXAsQz1uZXcgTWFwKXtjb25zdCBJPVtdLGo9W107bGV0IGNl''@;'; put 'put ''PS0xLF9lPW51bGw7aWYodi5mb3JFYWNoKFJlPT57Y29uc3QgTmU9UmUuZ2V0KCJvZmZzZXQiKSxLZT1OZT09Y2UsaHQ9S2UmJl9lfHxuZXcgTWFwO1JlLmZvckVhY2goKEJ0LCR0KT0+e2xldCBobj0kdCxEbj1CdDtpZigib2Zmc2V0IiE9PSR0KXN3aXRjaChobj1nLm5vcm1hbGl6ZVByb3Bl''@;'; put 'put ''cnR5TmFtZShobixJKSxEbil7Y2FzZSIhIjpEbj15LmdldCgkdCk7YnJlYWs7Y2FzZSBRaDpEbj1DLmdldCgkdCk7YnJlYWs7ZGVmYXVsdDpEbj1nLm5vcm1hbGl6ZVN0eWxlVmFsdWUoJHQsaG4sRG4sSSl9aHQuc2V0KGhuLERuKX0pLEtlfHxqLnB1c2goaHQpLF9lPWh0LGNlPU5lfSksSS5s''@;'; put 'put ''ZW5ndGgpdGhyb3cgZnVuY3Rpb24gQ0ZlKGQpe3JldHVybiBuZXcgcXQoMzUwMiwhMSl9KCk7cmV0dXJuIGp9ZnVuY3Rpb24gU2hlKGQsZyxoLHYpe3N3aXRjaChnKXtjYXNlInN0YXJ0IjpkLm9uU3RhcnQoKCk9PnYoaCYmTWhlKGgsInN0YXJ0IixkKSkpO2JyZWFrO2Nhc2UiZG9uZSI6ZC5v''@;'; put 'put ''bkRvbmUoKCk9PnYoaCYmTWhlKGgsImRvbmUiLGQpKSk7YnJlYWs7Y2FzZSJkZXN0cm95IjpkLm9uRGVzdHJveSgoKT0+dihoJiZNaGUoaCwiZGVzdHJveSIsZCkpKX19ZnVuY3Rpb24gTWhlKGQsZyxoKXtjb25zdCB2PWgudG90YWxUaW1lLEM9RWhlKGQuZWxlbWVudCxkLnRyaWdnZXJOYW1l''@;'; put 'put ''LGQuZnJvbVN0YXRlLGQudG9TdGF0ZSxnfHxkLnBoYXNlTmFtZSxudWxsPT12P2QudG90YWxUaW1lOnYsISFoLmRpc2FibGVkKSxJPWQuX2RhdGE7cmV0dXJuIG51bGwhPUkmJihDLl9kYXRhPUkpLEN9ZnVuY3Rpb24gRWhlKGQsZyxoLHYseT0iIixDPTAsSSl7cmV0dXJue2VsZW1lbnQ6ZCx0''@;'; put 'put ''cmlnZ2VyTmFtZTpnLGZyb21TdGF0ZTpoLHRvU3RhdGU6dixwaGFzZU5hbWU6eSx0b3RhbFRpbWU6QyxkaXNhYmxlZDohIUl9fWZ1bmN0aW9uIGY0KGQsZyxoKXtsZXQgdj1kLmdldChnKTtyZXR1cm4gdnx8ZC5zZXQoZyx2PWgpLHZ9ZnVuY3Rpb24gTHdlKGQpe2NvbnN0IGc9ZC5pbmRleE9m''@;'; put 'put ''KCI6Iik7cmV0dXJuW2Quc3Vic3RyaW5nKDEsZyksZC5zbGljZShnKzEpXX1sZXQgeGhlPShkLGcpPT4hMSxPd2U9KGQsZyxoKT0+W10sUndlPW51bGw7ZnVuY3Rpb24gVGhlKGQpe2NvbnN0IGc9ZC5wYXJlbnROb2RlfHxkLmhvc3Q7cmV0dXJuIGc9PT1Sd2U/bnVsbDpnfShraGUoKXx8InVu''@;'; put 'put ''ZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KSYmKEJGZSgpPyhSd2U9KCgpPT5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKCkseGhlPShkLGcpPT57Zm9yKDtnOyl7aWYoZz09PWQpcmV0dXJuITA7Zz1UaGUoZyl9cmV0dXJuITF9KTp4aGU9KGQsZyk9PmQuY29udGFpbnMoZyksT3dlPShkLGcs''@;'; put 'put ''aCk9PntpZihoKXJldHVybiBBcnJheS5mcm9tKGQucXVlcnlTZWxlY3RvckFsbChnKSk7Y29uc3Qgdj1kLnF1ZXJ5U2VsZWN0b3IoZyk7cmV0dXJuIHY/W3ZdOltdfSk7bGV0IE9TPW51bGwsQndlPSExO2NvbnN0IFB3ZT14aGUsRndlPU93ZTtsZXQgSHdlPSgoKT0+e2NsYXNzIGR7dmFsaWRh''@;'; put 'put ''dGVTdHlsZVByb3BlcnR5KGgpe3JldHVybiBmdW5jdGlvbiBGRmUoZCl7T1N8fChPUz1mdW5jdGlvbiBIRmUoKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50LmJvZHk6bnVsbH0oKXx8e30sQndlPSEhT1Muc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIE9T''@;'; put 'put ''LnN0eWxlKTtsZXQgZz0hMDtyZXR1cm4gT1Muc3R5bGUmJiFmdW5jdGlvbiBQRmUoZCl7cmV0dXJuImVia2l0Ij09ZC5zdWJzdHJpbmcoMSw2KX0oZCkmJihnPWQgaW4gT1Muc3R5bGUsIWcmJkJ3ZSYmKGc9IldlYmtpdCIrZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStkLnNsaWNlKDEpaW4g''@;'; put 'put ''T1Muc3R5bGUpKSxnfShoKX1tYXRjaGVzRWxlbWVudChoLHYpe3JldHVybiExfWNvbnRhaW5zRWxlbWVudChoLHYpe3JldHVybiBQd2UoaCx2KX1nZXRQYXJlbnRFbGVtZW50KGgpe3JldHVybiBUaGUoaCl9cXVlcnkoaCx2LHkpe3JldHVybiBGd2UoaCx2LHkpfWNvbXB1dGVTdHlsZShoLHYs''@;'; put 'put ''eSl7cmV0dXJuIHl8fCIifWFuaW1hdGUoaCx2LHksQyxJLGo9W10sY2Upe3JldHVybiBuZXcgQmsoeSxDKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCks''@;'; put 'put ''SWhlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLk5PT1A9bmV3IEh3ZSxkfSkoKTtjb25zdCBFcT0ibmctbGVhdmUiLHhxPSJuZy10cmlnZ2VyIixUcT0iLm5nLXRyaWdnZXIiLFZ3ZT0ibmctYW5pbWF0aW5nIixMaGU9Ii5uZy1hbmltYXRpbmciO2Z1bmN0aW9uIHh3KGQpe2lmKCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgZClyZXR1cm4gZDtjb25zdCBnPWQubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpLyk7cmV0dXJuIWd8fGcubGVuZ3RoPDI/MDpPaGUocGFyc2VGbG9hdChnWzFdKSxnWzJdKX1mdW5jdGlvbiBPaGUoZCxnKXtyZXR1cm4icyI9PT1nPzFlMypkOmR9ZnVuY3Rpb24gSXEoZCxnLGgp''@;'; put 'put ''e3JldHVybiBkLmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpP2Q6ZnVuY3Rpb24gakZlKGQsZyxoKXtsZXQgeSxDPTAsST0iIjtpZigic3RyaW5nIj09dHlwZW9mIGQpe2NvbnN0IGo9ZC5tYXRjaCgvXigtP1tcLlxkXSspKG0/cykoPzpccysoLT9bXC5cZF0rKShtP3MpKT8oPzpccysoWy1h''@;'; put 'put ''LXpdKyg/OlwoLis/XCkpPykpPyQvaSk7aWYobnVsbD09PWopcmV0dXJuIGcucHVzaChJd2UoKSkse2R1cmF0aW9uOjAsZGVsYXk6MCxlYXNpbmc6IiJ9O3k9T2hlKHBhcnNlRmxvYXQoalsxXSksalsyXSk7Y29uc3QgY2U9alszXTtudWxsIT1jZSYmKEM9T2hlKHBhcnNlRmxvYXQoY2UpLGpb''@;'; put 'put ''NF0pKTtjb25zdCBfZT1qWzVdO19lJiYoST1fZSl9ZWxzZSB5PWQ7aWYoIWgpe2xldCBqPSExLGNlPWcubGVuZ3RoO3k8MCYmKGcucHVzaChmdW5jdGlvbiB0RmUoKXtyZXR1cm4gbmV3IHF0KDMxMDAsITEpfSgpKSxqPSEwKSxDPDAmJihnLnB1c2goZnVuY3Rpb24gbkZlKCl7cmV0dXJuIG5l''@;'; put 'put ''dyBxdCgzMTAxLCExKX0oKSksaj0hMCksaiYmZy5zcGxpY2UoY2UsMCxJd2UoKSl9cmV0dXJue2R1cmF0aW9uOnksZGVsYXk6QyxlYXNpbmc6SX19KGQsZyxoKX1mdW5jdGlvbiBVWihkLGc9e30pe3JldHVybiBPYmplY3Qua2V5cyhkKS5mb3JFYWNoKGg9PntnW2hdPWRbaF19KSxnfWZ1bmN0''@;'; put 'put ''aW9uIGp3ZShkKXtjb25zdCBnPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5rZXlzKGQpLmZvckVhY2goaD0+e2cuc2V0KGgsZFtoXSl9KSxnfWZ1bmN0aW9uIFR3KGQsZz1uZXcgTWFwLGgpe2lmKGgpZm9yKGxldFt2LHldb2YgaClnLnNldCh2LHkpO2ZvcihsZXRbdix5XW9mIGQpZy5zZXQodix5''@;'; put 'put ''KTtyZXR1cm4gZ31mdW5jdGlvbiB6d2UoZCxnLGgpe3JldHVybiBoP2crIjoiK2grIjsiOiIifWZ1bmN0aW9uIEd3ZShkKXtsZXQgZz0iIjtmb3IobGV0IGg9MDtoPGQuc3R5bGUubGVuZ3RoO2grKyl7Y29uc3Qgdj1kLnN0eWxlLml0ZW0oaCk7Zys9endlKDAsdixkLnN0eWxlLmdldFByb3Bl''@;'; put 'put ''cnR5VmFsdWUodikpfWZvcihjb25zdCBoIGluIGQuc3R5bGUpZC5zdHlsZS5oYXNPd25Qcm9wZXJ0eShoKSYmIWguc3RhcnRzV2l0aCgiXyIpJiYoZys9endlKDAsV0ZlKGgpLGQuc3R5bGVbaF0pKTtkLnNldEF0dHJpYnV0ZSgic3R5bGUiLGcpfWZ1bmN0aW9uIENnKGQsZyxoKXtkLnN0eWxl''@;'; put 'put ''JiYoZy5mb3JFYWNoKCh2LHkpPT57Y29uc3QgQz1CaGUoeSk7aCYmIWguaGFzKHkpJiZoLnNldCh5LGQuc3R5bGVbQ10pLGQuc3R5bGVbQ109dn0pLGtoZSgpJiZHd2UoZCkpfWZ1bmN0aW9uIFJTKGQsZyl7ZC5zdHlsZSYmKGcuZm9yRWFjaCgoaCx2KT0+e2NvbnN0IHk9QmhlKHYpO2Quc3R5''@;'; put 'put ''bGVbeV09IiJ9KSxraGUoKSYmR3dlKGQpKX1mdW5jdGlvbiBRWihkKXtyZXR1cm4gQXJyYXkuaXNBcnJheShkKT8xPT1kLmxlbmd0aD9kWzBdOkJYKGQpOmR9Y29uc3QgUmhlPW5ldyBSZWdFeHAoInt7XFxzKiguKz8pXFxzKn19IiwiZyIpO2Z1bmN0aW9uIFd3ZShkKXtsZXQgZz1bXTtpZigi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIGQpe2xldCBoO2Zvcig7aD1SaGUuZXhlYyhkKTspZy5wdXNoKGhbMV0pO1JoZS5sYXN0SW5kZXg9MH1yZXR1cm4gZ31mdW5jdGlvbiBEcShkLGcsaCl7Y29uc3Qgdj1kLnRvU3RyaW5nKCkseT12LnJlcGxhY2UoUmhlLChDLEkpPT57bGV0IGo9Z1tJXTtyZXR1cm4g''@;'; put 'put ''bnVsbD09aiYmKGgucHVzaChmdW5jdGlvbiBpRmUoZCl7cmV0dXJuIG5ldyBxdCgzMDAzLCExKX0oKSksaj0iIiksai50b1N0cmluZygpfSk7cmV0dXJuIHk9PXY/ZDp5fWZ1bmN0aW9uIExxKGQpe2NvbnN0IGc9W107bGV0IGg9ZC5uZXh0KCk7Zm9yKDshaC5kb25lOylnLnB1c2goaC52YWx1''@;'; put 'put ''ZSksaD1kLm5leHQoKTtyZXR1cm4gZ31jb25zdCBHRmU9Ly0rKFthLXowLTldKS9nO2Z1bmN0aW9uIEJoZShkKXtyZXR1cm4gZC5yZXBsYWNlKEdGZSwoLi4uZyk9PmdbMV0udG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gV0ZlKGQpe3JldHVybiBkLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2cs''@;'; put 'put ''IiQxLSQyIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBoNChkLGcsaCl7c3dpdGNoKGcudHlwZSl7Y2FzZSA3OnJldHVybiBkLnZpc2l0VHJpZ2dlcihnLGgpO2Nhc2UgMDpyZXR1cm4gZC52aXNpdFN0YXRlKGcsaCk7Y2FzZSAxOnJldHVybiBkLnZpc2l0VHJhbnNpdGlvbihnLGgpO2Nhc2Ug''@;'; put 'put ''MjpyZXR1cm4gZC52aXNpdFNlcXVlbmNlKGcsaCk7Y2FzZSAzOnJldHVybiBkLnZpc2l0R3JvdXAoZyxoKTtjYXNlIDQ6cmV0dXJuIGQudmlzaXRBbmltYXRlKGcsaCk7Y2FzZSA1OnJldHVybiBkLnZpc2l0S2V5ZnJhbWVzKGcsaCk7Y2FzZSA2OnJldHVybiBkLnZpc2l0U3R5bGUoZyxoKTtj''@;'; put 'put ''YXNlIDg6cmV0dXJuIGQudmlzaXRSZWZlcmVuY2UoZyxoKTtjYXNlIDk6cmV0dXJuIGQudmlzaXRBbmltYXRlQ2hpbGQoZyxoKTtjYXNlIDEwOnJldHVybiBkLnZpc2l0QW5pbWF0ZVJlZihnLGgpO2Nhc2UgMTE6cmV0dXJuIGQudmlzaXRRdWVyeShnLGgpO2Nhc2UgMTI6cmV0dXJuIGQudmlz''@;'; put 'put ''aXRTdGFnZ2VyKGcsaCk7ZGVmYXVsdDp0aHJvdyBmdW5jdGlvbiBvRmUoZCl7cmV0dXJuIG5ldyBxdCgzMDA0LCExKX0oKX19ZnVuY3Rpb24gWXdlKGQsZyl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGQpW2ddfWZ1bmN0aW9uIEtGZShkLGcpe2NvbnN0IGg9W107cmV0dXJuInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBkP2Quc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKHY9PmZ1bmN0aW9uICRGZShkLGcsaCl7aWYoIjoiPT1kWzBdKXtjb25zdCBjZT1mdW5jdGlvbiBxRmUoZCxnKXtzd2l0Y2goZCl7Y2FzZSI6ZW50ZXIiOnJldHVybiJ2b2lkID0+ICoiO2Nhc2UiOmxlYXZlIjpyZXR1''@;'; put 'put ''cm4iKiA9PiB2b2lkIjtjYXNlIjppbmNyZW1lbnQiOnJldHVybihoLHYpPT5wYXJzZUZsb2F0KHYpPnBhcnNlRmxvYXQoaCk7Y2FzZSI6ZGVjcmVtZW50IjpyZXR1cm4oaCx2KT0+cGFyc2VGbG9hdCh2KTxwYXJzZUZsb2F0KGgpO2RlZmF1bHQ6cmV0dXJuIGcucHVzaChmdW5jdGlvbiB5RmUo''@;'; put 'put ''ZCl7cmV0dXJuIG5ldyBxdCgzMDE2LCExKX0oKSksIiogPT4gKiJ9fShkLGgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjZSlyZXR1cm4gdm9pZCBnLnB1c2goY2UpO2Q9Y2V9Y29uc3Qgdj1kLm1hdGNoKC9eKFwqfFstXHddKylccyooPD9bPS1dPilccyooXCp8Wy1cd10rKSQvKTtpZihudWxs''@;'; put 'put ''PT12fHx2Lmxlbmd0aDw0KXJldHVybiBoLnB1c2goZnVuY3Rpb24gQUZlKGQpe3JldHVybiBuZXcgcXQoMzAxNSwhMSl9KCkpLGc7Y29uc3QgeT12WzFdLEM9dlsyXSxJPXZbM107Zy5wdXNoKFV3ZSh5LEkpKTsiPCI9PUNbMF0mJiEoIioiPT15JiYiKiI9PUkpJiZnLnB1c2goVXdlKEkseSkp''@;'; put 'put ''fSh2LGgsZykpOmgucHVzaChkKSxofWNvbnN0IFBxPW5ldyBTZXQoWyJ0cnVlIiwiMSJdKSxGcT1uZXcgU2V0KFsiZmFsc2UiLCIwIl0pO2Z1bmN0aW9uIFV3ZShkLGcpe2NvbnN0IGg9UHEuaGFzKGQpfHxGcS5oYXMoZCksdj1QcS5oYXMoZyl8fEZxLmhhcyhnKTtyZXR1cm4oeSxDKT0+e2xl''@;'; put 'put ''dCBJPSIqIj09ZHx8ZD09eSxqPSIqIj09Z3x8Zz09QztyZXR1cm4hSSYmaCYmImJvb2xlYW4iPT10eXBlb2YgeSYmKEk9eT9QcS5oYXMoZCk6RnEuaGFzKGQpKSwhaiYmdiYmImJvb2xlYW4iPT10eXBlb2YgQyYmKGo9Qz9QcS5oYXMoZyk6RnEuaGFzKGcpKSxJJiZqfX1jb25zdCBlSGU9bmV3''@;'; put 'put ''IFJlZ0V4cCgicyo6c2VsZnMqLD8iLCJnIik7ZnVuY3Rpb24gUGhlKGQsZyxoLHYpe3JldHVybiBuZXcgdEhlKGQpLmJ1aWxkKGcsaCx2KX1jbGFzcyB0SGV7Y29uc3RydWN0b3IoZyl7dGhpcy5fZHJpdmVyPWd9YnVpbGQoZyxoLHYpe2NvbnN0IHk9bmV3IGlIZShoKTtyZXR1cm4gdGhpcy5f''@;'; put 'put ''cmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZSh5KSxoNCh0aGlzLFFaKGcpLHkpfV9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKGcpe2cuY3VycmVudFF1ZXJ5U2VsZWN0b3I9IiIsZy5jb2xsZWN0ZWRTdHlsZXM9bmV3IE1hcCxnLmNvbGxlY3RlZFN0eWxlcy5zZXQoIiIsbmV3IE1h''@;'; put 'put ''cCksZy5jdXJyZW50VGltZT0wfXZpc2l0VHJpZ2dlcihnLGgpe2xldCB2PWgucXVlcnlDb3VudD0wLHk9aC5kZXBDb3VudD0wO2NvbnN0IEM9W10sST1bXTtyZXR1cm4iQCI9PWcubmFtZS5jaGFyQXQoMCkmJmguZXJyb3JzLnB1c2goZnVuY3Rpb24gbEZlKCl7cmV0dXJuIG5ldyBxdCgzMDA2''@;'; put 'put ''LCExKX0oKSksZy5kZWZpbml0aW9ucy5mb3JFYWNoKGo9PntpZih0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKGgpLDA9PWoudHlwZSl7Y29uc3QgY2U9aixfZT1jZS5uYW1lO19lLnRvU3RyaW5nKCkuc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKFJlPT57Y2UubmFtZT1SZSxD''@;'; put 'put ''LnB1c2godGhpcy52aXNpdFN0YXRlKGNlLGgpKX0pLGNlLm5hbWU9X2V9ZWxzZSBpZigxPT1qLnR5cGUpe2NvbnN0IGNlPXRoaXMudmlzaXRUcmFuc2l0aW9uKGosaCk7dis9Y2UucXVlcnlDb3VudCx5Kz1jZS5kZXBDb3VudCxJLnB1c2goY2UpfWVsc2UgaC5lcnJvcnMucHVzaChmdW5jdGlv''@;'; put 'put ''biBzRmUoKXtyZXR1cm4gbmV3IHF0KDMwMDcsITEpfSgpKX0pLHt0eXBlOjcsbmFtZTpnLm5hbWUsc3RhdGVzOkMsdHJhbnNpdGlvbnM6SSxxdWVyeUNvdW50OnYsZGVwQ291bnQ6eSxvcHRpb25zOm51bGx9fXZpc2l0U3RhdGUoZyxoKXtjb25zdCB2PXRoaXMudmlzaXRTdHlsZShnLnN0eWxl''@;'; put 'put ''cyxoKSx5PWcub3B0aW9ucyYmZy5vcHRpb25zLnBhcmFtc3x8bnVsbDtpZih2LmNvbnRhaW5zRHluYW1pY1N0eWxlcyl7Y29uc3QgQz1uZXcgU2V0LEk9eXx8e307di5zdHlsZXMuZm9yRWFjaChqPT57aiBpbnN0YW5jZW9mIE1hcCYmai5mb3JFYWNoKGNlPT57V3dlKGNlKS5mb3JFYWNoKF9l''@;'; put 'put ''PT57SS5oYXNPd25Qcm9wZXJ0eShfZSl8fEMuYWRkKF9lKX0pfSl9KSxDLnNpemUmJihMcShDLnZhbHVlcygpKSxoLmVycm9ycy5wdXNoKGZ1bmN0aW9uIHVGZShkLGcpe3JldHVybiBuZXcgcXQoMzAwOCwhMSl9KCkpKX1yZXR1cm57dHlwZTowLG5hbWU6Zy5uYW1lLHN0eWxlOnYsb3B0aW9u''@;'; put 'put ''czp5P3twYXJhbXM6eX06bnVsbH19dmlzaXRUcmFuc2l0aW9uKGcsaCl7aC5xdWVyeUNvdW50PTAsaC5kZXBDb3VudD0wO2NvbnN0IHY9aDQodGhpcyxRWihnLmFuaW1hdGlvbiksaCk7cmV0dXJue3R5cGU6MSxtYXRjaGVyczpLRmUoZy5leHByLGguZXJyb3JzKSxhbmltYXRpb246dixxdWVy''@;'; put 'put ''eUNvdW50OmgucXVlcnlDb3VudCxkZXBDb3VudDpoLmRlcENvdW50LG9wdGlvbnM6QlMoZy5vcHRpb25zKX19dmlzaXRTZXF1ZW5jZShnLGgpe3JldHVybnt0eXBlOjIsc3RlcHM6Zy5zdGVwcy5tYXAodj0+aDQodGhpcyx2LGgpKSxvcHRpb25zOkJTKGcub3B0aW9ucyl9fXZpc2l0R3JvdXAo''@;'; put 'put ''ZyxoKXtjb25zdCB2PWguY3VycmVudFRpbWU7bGV0IHk9MDtjb25zdCBDPWcuc3RlcHMubWFwKEk9PntoLmN1cnJlbnRUaW1lPXY7Y29uc3Qgaj1oNCh0aGlzLEksaCk7cmV0dXJuIHk9TWF0aC5tYXgoeSxoLmN1cnJlbnRUaW1lKSxqfSk7cmV0dXJuIGguY3VycmVudFRpbWU9eSx7dHlwZToz''@;'; put 'put ''LHN0ZXBzOkMsb3B0aW9uczpCUyhnLm9wdGlvbnMpfX12aXNpdEFuaW1hdGUoZyxoKXtjb25zdCB2PWZ1bmN0aW9uIGFIZShkLGcpe2lmKGQuaGFzT3duUHJvcGVydHkoImR1cmF0aW9uIikpcmV0dXJuIGQ7aWYoIm51bWJlciI9PXR5cGVvZiBkKXJldHVybiBGaGUoSXEoZCxnKS5kdXJhdGlv''@;'; put 'put ''biwwLCIiKTtjb25zdCBoPWQ7aWYoaC5zcGxpdCgvXHMrLykuc29tZShDPT4ieyI9PUMuY2hhckF0KDApJiYieyI9PUMuY2hhckF0KDEpKSl7Y29uc3QgQz1GaGUoMCwwLCIiKTtyZXR1cm4gQy5keW5hbWljPSEwLEMuc3RyVmFsdWU9aCxDfWNvbnN0IHk9SXEoaCxnKTtyZXR1cm4gRmhlKHku''@;'; put 'put ''ZHVyYXRpb24seS5kZWxheSx5LmVhc2luZyl9KGcudGltaW5ncyxoLmVycm9ycyk7aC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9djtsZXQgeSxDPWcuc3R5bGVzP2cuc3R5bGVzOnhsKHt9KTtpZig1PT1DLnR5cGUpeT10aGlzLnZpc2l0S2V5ZnJhbWVzKEMsaCk7ZWxzZXtsZXQgST1nLnN0eWxl''@;'; put 'put ''cyxqPSExO2lmKCFJKXtqPSEwO2NvbnN0IF9lPXt9O3YuZWFzaW5nJiYoX2UuZWFzaW5nPXYuZWFzaW5nKSxJPXhsKF9lKX1oLmN1cnJlbnRUaW1lKz12LmR1cmF0aW9uK3YuZGVsYXk7Y29uc3QgY2U9dGhpcy52aXNpdFN0eWxlKEksaCk7Y2UuaXNFbXB0eVN0ZXA9aix5PWNlfXJldHVybiBo''@;'; put 'put ''LmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHt0eXBlOjQsdGltaW5nczp2LHN0eWxlOnksb3B0aW9uczpudWxsfX12aXNpdFN0eWxlKGcsaCl7Y29uc3Qgdj10aGlzLl9tYWtlU3R5bGVBc3QoZyxoKTtyZXR1cm4gdGhpcy5fdmFsaWRhdGVTdHlsZUFzdCh2LGgpLHZ9X21ha2VTdHlsZUFz''@;'; put 'put ''dChnLGgpe2NvbnN0IHY9W10seT1BcnJheS5pc0FycmF5KGcuc3R5bGVzKT9nLnN0eWxlczpbZy5zdHlsZXNdO2ZvcihsZXQgaiBvZiB5KSJzdHJpbmciPT10eXBlb2Ygaj9qPT09UWg/di5wdXNoKGopOmguZXJyb3JzLnB1c2gobmV3IHF0KDMwMDIsITEpKTp2LnB1c2goandlKGopKTtsZXQg''@;'; put 'put ''Qz0hMSxJPW51bGw7cmV0dXJuIHYuZm9yRWFjaChqPT57aWYoaiBpbnN0YW5jZW9mIE1hcCYmKGouaGFzKCJlYXNpbmciKSYmKEk9ai5nZXQoImVhc2luZyIpLGouZGVsZXRlKCJlYXNpbmciKSksIUMpKWZvcihsZXQgY2Ugb2Ygai52YWx1ZXMoKSlpZihjZS50b1N0cmluZygpLmluZGV4T2Yo''@;'; put 'put ''Int7Iik+PTApe0M9ITA7YnJlYWt9fSkse3R5cGU6NixzdHlsZXM6dixlYXNpbmc6SSxvZmZzZXQ6Zy5vZmZzZXQsY29udGFpbnNEeW5hbWljU3R5bGVzOkMsb3B0aW9uczpudWxsfX1fdmFsaWRhdGVTdHlsZUFzdChnLGgpe2NvbnN0IHY9aC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7bGV0IHk9''@;'; put 'put ''aC5jdXJyZW50VGltZSxDPWguY3VycmVudFRpbWU7diYmQz4wJiYoQy09di5kdXJhdGlvbit2LmRlbGF5KSxnLnN0eWxlcy5mb3JFYWNoKEk9Pnsic3RyaW5nIiE9dHlwZW9mIEkmJkkuZm9yRWFjaCgoaixjZSk9Pntjb25zdCBfZT1oLmNvbGxlY3RlZFN0eWxlcy5nZXQoaC5jdXJyZW50UXVl''@;'; put 'put ''cnlTZWxlY3RvciksUmU9X2UuZ2V0KGNlKTtsZXQgTmU9ITA7UmUmJihDIT15JiZDPj1SZS5zdGFydFRpbWUmJnk8PVJlLmVuZFRpbWUmJihoLmVycm9ycy5wdXNoKGZ1bmN0aW9uIGZGZShkLGcsaCx2LHkpe3JldHVybiBuZXcgcXQoMzAxMCwhMSl9KCkpLE5lPSExKSxDPVJlLnN0YXJ0VGlt''@;'; put 'put ''ZSksTmUmJl9lLnNldChjZSx7c3RhcnRUaW1lOkMsZW5kVGltZTp5fSksaC5vcHRpb25zJiZmdW5jdGlvbiB6RmUoZCxnLGgpe2NvbnN0IHY9Zy5wYXJhbXN8fHt9LHk9V3dlKGQpO3kubGVuZ3RoJiZ5LmZvckVhY2goQz0+e3YuaGFzT3duUHJvcGVydHkoQyl8fGgucHVzaChmdW5jdGlvbiBy''@;'; put 'put ''RmUoZCl7cmV0dXJuIG5ldyBxdCgzMDAxLCExKX0oKSl9KX0oaixoLm9wdGlvbnMsaC5lcnJvcnMpfSl9KX12aXNpdEtleWZyYW1lcyhnLGgpe2NvbnN0IHY9e3R5cGU6NSxzdHlsZXM6W10sb3B0aW9uczpudWxsfTtpZighaC5jdXJyZW50QW5pbWF0ZVRpbWluZ3MpcmV0dXJuIGguZXJyb3Jz''@;'; put 'put ''LnB1c2goZnVuY3Rpb24gaEZlKCl7cmV0dXJuIG5ldyBxdCgzMDExLCExKX0oKSksdjtsZXQgQz0wO2NvbnN0IEk9W107bGV0IGo9ITEsY2U9ITEsX2U9MDtjb25zdCBSZT1nLnN0ZXBzLm1hcChEbj0+e2NvbnN0IGlyPXRoaXMuX21ha2VTdHlsZUFzdChEbixoKTtsZXQgcHI9bnVsbCE9aXIu''@;'; put 'put ''b2Zmc2V0P2lyLm9mZnNldDpmdW5jdGlvbiBvSGUoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBudWxsO2xldCBnPW51bGw7aWYoQXJyYXkuaXNBcnJheShkKSlkLmZvckVhY2goaD0+e2lmKGggaW5zdGFuY2VvZiBNYXAmJmguaGFzKCJvZmZzZXQiKSl7Y29uc3Qgdj1oO2c9cGFy''@;'; put 'put ''c2VGbG9hdCh2LmdldCgib2Zmc2V0IikpLHYuZGVsZXRlKCJvZmZzZXQiKX19KTtlbHNlIGlmKGQgaW5zdGFuY2VvZiBNYXAmJmQuaGFzKCJvZmZzZXQiKSl7Y29uc3QgaD1kO2c9cGFyc2VGbG9hdChoLmdldCgib2Zmc2V0IikpLGguZGVsZXRlKCJvZmZzZXQiKX1yZXR1cm4gZ30oaXIuc3R5''@;'; put 'put ''bGVzKSxFcj0wO3JldHVybiBudWxsIT1wciYmKEMrKyxFcj1pci5vZmZzZXQ9cHIpLGNlPWNlfHxFcjwwfHxFcj4xLGo9anx8RXI8X2UsX2U9RXIsSS5wdXNoKEVyKSxpcn0pO2NlJiZoLmVycm9ycy5wdXNoKGZ1bmN0aW9uIGRGZSgpe3JldHVybiBuZXcgcXQoMzAxMiwhMSl9KCkpLGomJmgu''@;'; put 'put ''ZXJyb3JzLnB1c2goZnVuY3Rpb24gcEZlKCl7cmV0dXJuIG5ldyBxdCgzMjAwLCExKX0oKSk7Y29uc3QgTmU9Zy5zdGVwcy5sZW5ndGg7bGV0IEtlPTA7Qz4wJiZDPE5lP2guZXJyb3JzLnB1c2goZnVuY3Rpb24gZ0ZlKCl7cmV0dXJuIG5ldyBxdCgzMjAyLCExKX0oKSk6MD09QyYmKEtlPTEv''@;'; put 'put ''KE5lLTEpKTtjb25zdCBodD1OZS0xLEJ0PWguY3VycmVudFRpbWUsJHQ9aC5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsaG49JHQuZHVyYXRpb247cmV0dXJuIFJlLmZvckVhY2goKERuLGlyKT0+e2NvbnN0IHByPUtlPjA/aXI9PWh0PzE6S2UqaXI6SVtpcl0sRXI9cHIqaG47aC5jdXJyZW50VGlt''@;'; put 'put ''ZT1CdCskdC5kZWxheStFciwkdC5kdXJhdGlvbj1Fcix0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KERuLGgpLERuLm9mZnNldD1wcix2LnN0eWxlcy5wdXNoKERuKX0pLHZ9dmlzaXRSZWZlcmVuY2UoZyxoKXtyZXR1cm57dHlwZTo4LGFuaW1hdGlvbjpoNCh0aGlzLFFaKGcuYW5pbWF0aW9uKSxo''@;'; put 'put ''KSxvcHRpb25zOkJTKGcub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZUNoaWxkKGcsaCl7cmV0dXJuIGguZGVwQ291bnQrKyx7dHlwZTo5LG9wdGlvbnM6QlMoZy5vcHRpb25zKX19dmlzaXRBbmltYXRlUmVmKGcsaCl7cmV0dXJue3R5cGU6MTAsYW5pbWF0aW9uOnRoaXMudmlzaXRSZWZlcmVuY2Uo''@;'; put 'put ''Zy5hbmltYXRpb24saCksb3B0aW9uczpCUyhnLm9wdGlvbnMpfX12aXNpdFF1ZXJ5KGcsaCl7Y29uc3Qgdj1oLmN1cnJlbnRRdWVyeVNlbGVjdG9yLHk9Zy5vcHRpb25zfHx7fTtoLnF1ZXJ5Q291bnQrKyxoLmN1cnJlbnRRdWVyeT1nO2NvbnN0W0MsSV09ZnVuY3Rpb24gbkhlKGQpe2NvbnN0''@;'; put 'put ''IGc9ISFkLnNwbGl0KC9ccyosXHMqLykuZmluZChoPT4iOnNlbGYiPT1oKTtyZXR1cm4gZyYmKGQ9ZC5yZXBsYWNlKGVIZSwiIikpLGQ9ZC5yZXBsYWNlKC9AXCovZyxUcSkucmVwbGFjZSgvQFx3Ky9nLGg9PlRxKyItIitoLnNsaWNlKDEpKS5yZXBsYWNlKC86YW5pbWF0aW5nL2csTGhlKSxb''@;'; put 'put ''ZCxnXX0oZy5zZWxlY3Rvcik7aC5jdXJyZW50UXVlcnlTZWxlY3Rvcj12Lmxlbmd0aD92KyIgIitDOkMsZjQoaC5jb2xsZWN0ZWRTdHlsZXMsaC5jdXJyZW50UXVlcnlTZWxlY3RvcixuZXcgTWFwKTtjb25zdCBqPWg0KHRoaXMsUVooZy5hbmltYXRpb24pLGgpO3JldHVybiBoLmN1cnJlbnRR''@;'; put 'put ''dWVyeT1udWxsLGguY3VycmVudFF1ZXJ5U2VsZWN0b3I9dix7dHlwZToxMSxzZWxlY3RvcjpDLGxpbWl0OnkubGltaXR8fDAsb3B0aW9uYWw6ISF5Lm9wdGlvbmFsLGluY2x1ZGVTZWxmOkksYW5pbWF0aW9uOmosb3JpZ2luYWxTZWxlY3RvcjpnLnNlbGVjdG9yLG9wdGlvbnM6QlMoZy5vcHRp''@;'; put 'put ''b25zKX19dmlzaXRTdGFnZ2VyKGcsaCl7aC5jdXJyZW50UXVlcnl8fGguZXJyb3JzLnB1c2goZnVuY3Rpb24gbUZlKCl7cmV0dXJuIG5ldyBxdCgzMDEzLCExKX0oKSk7Y29uc3Qgdj0iZnVsbCI9PT1nLnRpbWluZ3M/e2R1cmF0aW9uOjAsZGVsYXk6MCxlYXNpbmc6ImZ1bGwifTpJcShnLnRp''@;'; put 'put ''bWluZ3MsaC5lcnJvcnMsITApO3JldHVybnt0eXBlOjEyLGFuaW1hdGlvbjpoNCh0aGlzLFFaKGcuYW5pbWF0aW9uKSxoKSx0aW1pbmdzOnYsb3B0aW9uczpudWxsfX19Y2xhc3MgaUhle2NvbnN0cnVjdG9yKGcpe3RoaXMuZXJyb3JzPWcsdGhpcy5xdWVyeUNvdW50PTAsdGhpcy5kZXBDb3Vu''@;'; put 'put ''dD0wLHRoaXMuY3VycmVudFRyYW5zaXRpb249bnVsbCx0aGlzLmN1cnJlbnRRdWVyeT1udWxsLHRoaXMuY3VycmVudFF1ZXJ5U2VsZWN0b3I9bnVsbCx0aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHRoaXMuY3VycmVudFRpbWU9MCx0aGlzLmNvbGxlY3RlZFN0eWxlcz1uZXcgTWFw''@;'; put 'put ''LHRoaXMub3B0aW9ucz1udWxsLHRoaXMudW5zdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzRm91bmQ9bmV3IFNldH19ZnVuY3Rpb24gQlMoZCl7cmV0dXJuIGQ/KGQ9VVooZCkpLnBhcmFtcyYmKGQucGFyYW1zPWZ1bmN0aW9uIHJIZShkKXtyZXR1cm4gZD9VWihkKTpudWxsfShkLnBhcmFtcykpOmQ9''@;'; put 'put ''e30sZH1mdW5jdGlvbiBGaGUoZCxnLGgpe3JldHVybntkdXJhdGlvbjpkLGRlbGF5OmcsZWFzaW5nOmh9fWZ1bmN0aW9uIEhoZShkLGcsaCx2LHksQyxJPW51bGwsaj0hMSl7cmV0dXJue3R5cGU6MSxlbGVtZW50OmQsa2V5ZnJhbWVzOmcscHJlU3R5bGVQcm9wczpoLHBvc3RTdHlsZVByb3Bz''@;'; put 'put ''OnYsZHVyYXRpb246eSxkZWxheTpDLHRvdGFsVGltZTp5K0MsZWFzaW5nOkksc3ViVGltZWxpbmU6an19Y2xhc3MgSHF7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQoZyl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZyl8fFtdfWFwcGVuZChnLGgpe2xldCB2PXRoaXMuX21hcC5n''@;'; put 'put ''ZXQoZyk7dnx8dGhpcy5fbWFwLnNldChnLHY9W10pLHYucHVzaCguLi5oKX1oYXMoZyl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZyl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19Y29uc3QgdUhlPW5ldyBSZWdFeHAoIjplbnRlciIsImciKSxmSGU9bmV3IFJlZ0V4cCgiOmxlYXZlIiwiZyIp''@;'; put 'put ''O2Z1bmN0aW9uIE5oZShkLGcsaCx2LHksQz1uZXcgTWFwLEk9bmV3IE1hcCxqLGNlLF9lPVtdKXtyZXR1cm4obmV3IGhIZSkuYnVpbGRLZXlmcmFtZXMoZCxnLGgsdix5LEMsSSxqLGNlLF9lKX1jbGFzcyBoSGV7YnVpbGRLZXlmcmFtZXMoZyxoLHYseSxDLEksaixjZSxfZSxSZT1bXSl7X2U9''@;'; put 'put ''X2V8fG5ldyBIcTtjb25zdCBOZT1uZXcgVmhlKGcsaCxfZSx5LEMsUmUsW10pO05lLm9wdGlvbnM9Y2U7Y29uc3QgS2U9Y2UuZGVsYXk/eHcoY2UuZGVsYXkpOjA7TmUuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4dFN0ZXAoS2UpLE5lLmN1cnJlbnRUaW1lbGluZS5zZXRTdHlsZXMoW0ldLG51''@;'; put 'put ''bGwsTmUuZXJyb3JzLGNlKSxoNCh0aGlzLHYsTmUpO2NvbnN0IGh0PU5lLnRpbWVsaW5lcy5maWx0ZXIoQnQ9PkJ0LmNvbnRhaW5zQW5pbWF0aW9uKCkpO2lmKGh0Lmxlbmd0aCYmai5zaXplKXtsZXQgQnQ7Zm9yKGxldCAkdD1odC5sZW5ndGgtMTskdD49MDskdC0tKXtjb25zdCBobj1odFsk''@;'; put 'put ''dF07aWYoaG4uZWxlbWVudD09PWgpe0J0PWhuO2JyZWFrfX1CdCYmIUJ0LmFsbG93T25seVRpbWVsaW5lU3R5bGVzKCkmJkJ0LnNldFN0eWxlcyhbal0sbnVsbCxOZS5lcnJvcnMsY2UpfXJldHVybiBodC5sZW5ndGg/aHQubWFwKEJ0PT5CdC5idWlsZEtleWZyYW1lcygpKTpbSGhlKGgsW10s''@;'; put 'put ''W10sW10sMCxLZSwiIiwhMSldfXZpc2l0VHJpZ2dlcihnLGgpe312aXNpdFN0YXRlKGcsaCl7fXZpc2l0VHJhbnNpdGlvbihnLGgpe312aXNpdEFuaW1hdGVDaGlsZChnLGgpe2NvbnN0IHY9aC5zdWJJbnN0cnVjdGlvbnMuZ2V0KGguZWxlbWVudCk7aWYodil7Y29uc3QgeT1oLmNyZWF0ZVN1''@;'; put 'put ''YkNvbnRleHQoZy5vcHRpb25zKSxDPWguY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLEk9dGhpcy5fdmlzaXRTdWJJbnN0cnVjdGlvbnModix5LHkub3B0aW9ucyk7QyE9SSYmaC50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoSSl9aC5wcmV2aW91c05vZGU9Z312aXNpdEFuaW1hdGVSZWYo''@;'; put 'put ''ZyxoKXtjb25zdCB2PWguY3JlYXRlU3ViQ29udGV4dChnLm9wdGlvbnMpO3YudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCksdGhpcy52aXNpdFJlZmVyZW5jZShnLmFuaW1hdGlvbix2KSxoLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSh2LmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSks''@;'; put 'put ''aC5wcmV2aW91c05vZGU9Z31fdmlzaXRTdWJJbnN0cnVjdGlvbnMoZyxoLHYpe2xldCBDPWguY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IEk9bnVsbCE9di5kdXJhdGlvbj94dyh2LmR1cmF0aW9uKTpudWxsLGo9bnVsbCE9di5kZWxheT94dyh2LmRlbGF5KTpudWxsO3JldHVy''@;'; put 'put ''biAwIT09SSYmZy5mb3JFYWNoKGNlPT57Y29uc3QgX2U9aC5hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUoY2UsSSxqKTtDPU1hdGgubWF4KEMsX2UuZHVyYXRpb24rX2UuZGVsYXkpfSksQ312aXNpdFJlZmVyZW5jZShnLGgpe2gudXBkYXRlT3B0aW9ucyhnLm9wdGlvbnMsITApLGg0KHRo''@;'; put 'put ''aXMsZy5hbmltYXRpb24saCksaC5wcmV2aW91c05vZGU9Z312aXNpdFNlcXVlbmNlKGcsaCl7Y29uc3Qgdj1oLnN1YkNvbnRleHRDb3VudDtsZXQgeT1oO2NvbnN0IEM9Zy5vcHRpb25zO2lmKEMmJihDLnBhcmFtc3x8Qy5kZWxheSkmJih5PWguY3JlYXRlU3ViQ29udGV4dChDKSx5LnRyYW5z''@;'; put 'put ''Zm9ybUludG9OZXdUaW1lbGluZSgpLG51bGwhPUMuZGVsYXkpKXs2PT15LnByZXZpb3VzTm9kZS50eXBlJiYoeS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCkseS5wcmV2aW91c05vZGU9TnEpO2NvbnN0IEk9eHcoQy5kZWxheSk7eS5kZWxheU5leHRTdGVwKEkpfWcu''@;'; put 'put ''c3RlcHMubGVuZ3RoJiYoZy5zdGVwcy5mb3JFYWNoKEk9Pmg0KHRoaXMsSSx5KSkseS5jdXJyZW50VGltZWxpbmUuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCkseS5zdWJDb250ZXh0Q291bnQ+diYmeS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSksaC5wcmV2aW91c05vZGU9Z312aXNpdEdy''@;'; put 'put ''b3VwKGcsaCl7Y29uc3Qgdj1bXTtsZXQgeT1oLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtjb25zdCBDPWcub3B0aW9ucyYmZy5vcHRpb25zLmRlbGF5P3h3KGcub3B0aW9ucy5kZWxheSk6MDtnLnN0ZXBzLmZvckVhY2goST0+e2NvbnN0IGo9aC5jcmVhdGVTdWJDb250ZXh0KGcub3B0''@;'; put 'put ''aW9ucyk7QyYmai5kZWxheU5leHRTdGVwKEMpLGg0KHRoaXMsSSxqKSx5PU1hdGgubWF4KHksai5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpLHYucHVzaChqLmN1cnJlbnRUaW1lbGluZSl9KSx2LmZvckVhY2goST0+aC5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3Rl''@;'; put 'put ''ZFN0eWxlcyhJKSksaC50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoeSksaC5wcmV2aW91c05vZGU9Z31fdmlzaXRUaW1pbmcoZyxoKXtpZihnLmR5bmFtaWMpe2NvbnN0IHY9Zy5zdHJWYWx1ZTtyZXR1cm4gSXEoaC5wYXJhbXM/RHEodixoLnBhcmFtcyxoLmVycm9ycyk6dixoLmVycm9ycyl9''@;'; put 'put ''cmV0dXJue2R1cmF0aW9uOmcuZHVyYXRpb24sZGVsYXk6Zy5kZWxheSxlYXNpbmc6Zy5lYXNpbmd9fXZpc2l0QW5pbWF0ZShnLGgpe2NvbnN0IHY9aC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5fdmlzaXRUaW1pbmcoZy50aW1pbmdzLGgpLHk9aC5jdXJyZW50VGltZWxpbmU7di5kZWxh''@;'; put 'put ''eSYmKGguaW5jcmVtZW50VGltZSh2LmRlbGF5KSx5LnNuYXBzaG90Q3VycmVudFN0eWxlcygpKTtjb25zdCBDPWcuc3R5bGU7NT09Qy50eXBlP3RoaXMudmlzaXRLZXlmcmFtZXMoQyxoKTooaC5pbmNyZW1lbnRUaW1lKHYuZHVyYXRpb24pLHRoaXMudmlzaXRTdHlsZShDLGgpLHkuYXBwbHlT''@;'; put 'put ''dHlsZXNUb0tleWZyYW1lKCkpLGguY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsaC5wcmV2aW91c05vZGU9Z312aXNpdFN0eWxlKGcsaCl7Y29uc3Qgdj1oLmN1cnJlbnRUaW1lbGluZSx5PWguY3VycmVudEFuaW1hdGVUaW1pbmdzOyF5JiZ2Lmhhc0N1cnJlbnRTdHlsZVByb3BlcnRpZXMo''@;'; put 'put ''KSYmdi5mb3J3YXJkRnJhbWUoKTtjb25zdCBDPXkmJnkuZWFzaW5nfHxnLmVhc2luZztnLmlzRW1wdHlTdGVwP3YuYXBwbHlFbXB0eVN0ZXAoQyk6di5zZXRTdHlsZXMoZy5zdHlsZXMsQyxoLmVycm9ycyxoLm9wdGlvbnMpLGgucHJldmlvdXNOb2RlPWd9dmlzaXRLZXlmcmFtZXMoZyxoKXtj''@;'; put 'put ''b25zdCB2PWguY3VycmVudEFuaW1hdGVUaW1pbmdzLHk9aC5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24sQz12LmR1cmF0aW9uLGo9aC5jcmVhdGVTdWJDb250ZXh0KCkuY3VycmVudFRpbWVsaW5lO2ouZWFzaW5nPXYuZWFzaW5nLGcuc3R5bGVzLmZvckVhY2goY2U9PntqLmZvcndhcmRUaW1l''@;'; put 'put ''KChjZS5vZmZzZXR8fDApKkMpLGouc2V0U3R5bGVzKGNlLnN0eWxlcyxjZS5lYXNpbmcsaC5lcnJvcnMsaC5vcHRpb25zKSxqLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpfSksaC5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhqKSxoLnRyYW5zZm9ybUludG9O''@;'; put 'put ''ZXdUaW1lbGluZSh5K0MpLGgucHJldmlvdXNOb2RlPWd9dmlzaXRRdWVyeShnLGgpe2NvbnN0IHY9aC5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUseT1nLm9wdGlvbnN8fHt9LEM9eS5kZWxheT94dyh5LmRlbGF5KTowO0MmJig2PT09aC5wcmV2aW91c05vZGUudHlwZXx8MD09diYmaC5j''@;'; put 'put ''dXJyZW50VGltZWxpbmUuaGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpKSYmKGguY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLGgucHJldmlvdXNOb2RlPU5xKTtsZXQgST12O2NvbnN0IGo9aC5pbnZva2VRdWVyeShnLnNlbGVjdG9yLGcub3JpZ2luYWxTZWxlY3Rv''@;'; put 'put ''cixnLmxpbWl0LGcuaW5jbHVkZVNlbGYsISF5Lm9wdGlvbmFsLGguZXJyb3JzKTtoLmN1cnJlbnRRdWVyeVRvdGFsPWoubGVuZ3RoO2xldCBjZT1udWxsO2ouZm9yRWFjaCgoX2UsUmUpPT57aC5jdXJyZW50UXVlcnlJbmRleD1SZTtjb25zdCBOZT1oLmNyZWF0ZVN1YkNvbnRleHQoZy5vcHRp''@;'; put 'put ''b25zLF9lKTtDJiZOZS5kZWxheU5leHRTdGVwKEMpLF9lPT09aC5lbGVtZW50JiYoY2U9TmUuY3VycmVudFRpbWVsaW5lKSxoNCh0aGlzLGcuYW5pbWF0aW9uLE5lKSxOZS5jdXJyZW50VGltZWxpbmUuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksST1NYXRoLm1heChJLE5lLmN1cnJlbnRUaW1l''@;'; put 'put ''bGluZS5jdXJyZW50VGltZSl9KSxoLmN1cnJlbnRRdWVyeUluZGV4PTAsaC5jdXJyZW50UXVlcnlUb3RhbD0wLGgudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKEkpLGNlJiYoaC5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhjZSksaC5jdXJyZW50VGltZWxp''@;'; put 'put ''bmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpLGgucHJldmlvdXNOb2RlPWd9dmlzaXRTdGFnZ2VyKGcsaCl7Y29uc3Qgdj1oLnBhcmVudENvbnRleHQseT1oLmN1cnJlbnRUaW1lbGluZSxDPWcudGltaW5ncyxJPU1hdGguYWJzKEMuZHVyYXRpb24pLGo9SSooaC5jdXJyZW50UXVlcnlUb3Rh''@;'; put 'put ''bC0xKTtsZXQgY2U9SSpoLmN1cnJlbnRRdWVyeUluZGV4O3N3aXRjaChDLmR1cmF0aW9uPDA/InJldmVyc2UiOkMuZWFzaW5nKXtjYXNlInJldmVyc2UiOmNlPWotY2U7YnJlYWs7Y2FzZSJmdWxsIjpjZT12LmN1cnJlbnRTdGFnZ2VyVGltZX1jb25zdCBSZT1oLmN1cnJlbnRUaW1lbGluZTtj''@;'; put 'put ''ZSYmUmUuZGVsYXlOZXh0U3RlcChjZSk7Y29uc3QgTmU9UmUuY3VycmVudFRpbWU7aDQodGhpcyxnLmFuaW1hdGlvbixoKSxoLnByZXZpb3VzTm9kZT1nLHYuY3VycmVudFN0YWdnZXJUaW1lPXkuY3VycmVudFRpbWUtTmUrKHkuc3RhcnRUaW1lLXYuY3VycmVudFRpbWVsaW5lLnN0YXJ0VGlt''@;'; put 'put ''ZSl9fWNvbnN0IE5xPXt9O2NsYXNzIFZoZXtjb25zdHJ1Y3RvcihnLGgsdix5LEMsSSxqLGNlKXt0aGlzLl9kcml2ZXI9Zyx0aGlzLmVsZW1lbnQ9aCx0aGlzLnN1Ykluc3RydWN0aW9ucz12LHRoaXMuX2VudGVyQ2xhc3NOYW1lPXksdGhpcy5fbGVhdmVDbGFzc05hbWU9Qyx0aGlzLmVycm9y''@;'; put 'put ''cz1JLHRoaXMudGltZWxpbmVzPWosdGhpcy5wYXJlbnRDb250ZXh0PW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLnByZXZpb3VzTm9kZT1OcSx0aGlzLnN1YkNvbnRleHRDb3VudD0wLHRoaXMub3B0aW9ucz17fSx0aGlzLmN1cnJlbnRRdWVyeUluZGV4PTAsdGhp''@;'; put 'put ''cy5jdXJyZW50UXVlcnlUb3RhbD0wLHRoaXMuY3VycmVudFN0YWdnZXJUaW1lPTAsdGhpcy5jdXJyZW50VGltZWxpbmU9Y2V8fG5ldyBWcSh0aGlzLl9kcml2ZXIsaCwwKSxqLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFt''@;'; put 'put ''c311cGRhdGVPcHRpb25zKGcsaCl7aWYoIWcpcmV0dXJuO2NvbnN0IHY9ZztsZXQgeT10aGlzLm9wdGlvbnM7bnVsbCE9di5kdXJhdGlvbiYmKHkuZHVyYXRpb249eHcodi5kdXJhdGlvbikpLG51bGwhPXYuZGVsYXkmJih5LmRlbGF5PXh3KHYuZGVsYXkpKTtjb25zdCBDPXYucGFyYW1zO2lm''@;'; put 'put ''KEMpe2xldCBJPXkucGFyYW1zO0l8fChJPXRoaXMub3B0aW9ucy5wYXJhbXM9e30pLE9iamVjdC5rZXlzKEMpLmZvckVhY2goaj0+eyghaHx8IUkuaGFzT3duUHJvcGVydHkoaikpJiYoSVtqXT1EcShDW2pdLEksdGhpcy5lcnJvcnMpKX0pfX1fY29weU9wdGlvbnMoKXtjb25zdCBnPXt9O2lm''@;'; put 'put ''KHRoaXMub3B0aW9ucyl7Y29uc3QgaD10aGlzLm9wdGlvbnMucGFyYW1zO2lmKGgpe2NvbnN0IHY9Zy5wYXJhbXM9e307T2JqZWN0LmtleXMoaCkuZm9yRWFjaCh5PT57dlt5XT1oW3ldfSl9fXJldHVybiBnfWNyZWF0ZVN1YkNvbnRleHQoZz1udWxsLGgsdil7Y29uc3QgeT1ofHx0aGlzLmVs''@;'; put 'put ''ZW1lbnQsQz1uZXcgVmhlKHRoaXMuX2RyaXZlcix5LHRoaXMuc3ViSW5zdHJ1Y3Rpb25zLHRoaXMuX2VudGVyQ2xhc3NOYW1lLHRoaXMuX2xlYXZlQ2xhc3NOYW1lLHRoaXMuZXJyb3JzLHRoaXMudGltZWxpbmVzLHRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsoeSx2fHwwKSk7cmV0dXJuIEMu''@;'; put 'put ''cHJldmlvdXNOb2RlPXRoaXMucHJldmlvdXNOb2RlLEMuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzLEMub3B0aW9ucz10aGlzLl9jb3B5T3B0aW9ucygpLEMudXBkYXRlT3B0aW9ucyhnKSxDLmN1cnJlbnRRdWVyeUluZGV4PXRoaXMuY3VycmVudFF1''@;'; put 'put ''ZXJ5SW5kZXgsQy5jdXJyZW50UXVlcnlUb3RhbD10aGlzLmN1cnJlbnRRdWVyeVRvdGFsLEMucGFyZW50Q29udGV4dD10aGlzLHRoaXMuc3ViQ29udGV4dENvdW50KyssQ310cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoZyl7cmV0dXJuIHRoaXMucHJldmlvdXNOb2RlPU5xLHRoaXMuY3VycmVu''@;'; put 'put ''dFRpbWVsaW5lPXRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsodGhpcy5lbGVtZW50LGcpLHRoaXMudGltZWxpbmVzLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpLHRoaXMuY3VycmVudFRpbWVsaW5lfWFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZShnLGgsdil7Y29uc3QgeT17ZHVyYXRp''@;'; put 'put ''b246bnVsbCE9aD9oOmcuZHVyYXRpb24sZGVsYXk6dGhpcy5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUrKG51bGwhPXY/djowKStnLmRlbGF5LGVhc2luZzoiIn0sQz1uZXcgZEhlKHRoaXMuX2RyaXZlcixnLmVsZW1lbnQsZy5rZXlmcmFtZXMsZy5wcmVTdHlsZVByb3BzLGcucG9zdFN0''@;'; put 'put ''eWxlUHJvcHMseSxnLnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lKTtyZXR1cm4gdGhpcy50aW1lbGluZXMucHVzaChDKSx5fWluY3JlbWVudFRpbWUoZyl7dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24rZyl9ZGVsYXlOZXh0U3Rl''@;'; put 'put ''cChnKXtnPjAmJnRoaXMuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4dFN0ZXAoZyl9aW52b2tlUXVlcnkoZyxoLHYseSxDLEkpe2xldCBqPVtdO2lmKHkmJmoucHVzaCh0aGlzLmVsZW1lbnQpLGcubGVuZ3RoPjApe2c9KGc9Zy5yZXBsYWNlKHVIZSwiLiIrdGhpcy5fZW50ZXJDbGFzc05hbWUp''@;'; put 'put ''KS5yZXBsYWNlKGZIZSwiLiIrdGhpcy5fbGVhdmVDbGFzc05hbWUpO2xldCBfZT10aGlzLl9kcml2ZXIucXVlcnkodGhpcy5lbGVtZW50LGcsMSE9dik7MCE9PXYmJihfZT12PDA/X2Uuc2xpY2UoX2UubGVuZ3RoK3YsX2UubGVuZ3RoKTpfZS5zbGljZSgwLHYpKSxqLnB1c2goLi4uX2UpfXJl''@;'; put 'put ''dHVybiFDJiYwPT1qLmxlbmd0aCYmSS5wdXNoKGZ1bmN0aW9uIHZGZShkKXtyZXR1cm4gbmV3IHF0KDMwMTQsITEpfSgpKSxqfX1jbGFzcyBWcXtjb25zdHJ1Y3RvcihnLGgsdix5KXt0aGlzLl9kcml2ZXI9Zyx0aGlzLmVsZW1lbnQ9aCx0aGlzLnN0YXJ0VGltZT12LHRoaXMuX2VsZW1lbnRU''@;'; put 'put ''aW1lbGluZVN0eWxlc0xvb2t1cD15LHRoaXMuZHVyYXRpb249MCx0aGlzLl9wcmV2aW91c0tleWZyYW1lPW5ldyBNYXAsdGhpcy5fY3VycmVudEtleWZyYW1lPW5ldyBNYXAsdGhpcy5fa2V5ZnJhbWVzPW5ldyBNYXAsdGhpcy5fc3R5bGVTdW1tYXJ5PW5ldyBNYXAsdGhpcy5fbG9jYWxUaW1l''@;'; put 'put ''bGluZVN0eWxlcz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdTdHlsZXM9bmV3IE1hcCx0aGlzLl9iYWNrRmlsbD1uZXcgTWFwLHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT1udWxsLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cHx8KHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0''@;'; put 'put ''eWxlc0xvb2t1cD1uZXcgTWFwKSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuZ2V0KGgpLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzfHwodGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fbG9jYWxUaW1lbGluZVN0''@;'; put 'put ''eWxlcyx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuc2V0KGgsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykpLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWNvbnRhaW5zQW5pbWF0aW9uKCl7c3dpdGNoKHRoaXMuX2tleWZyYW1lcy5zaXplKXtjYXNlIDA6cmV0dXJuITE7Y2FzZSAx''@;'; put 'put ''OnJldHVybiB0aGlzLmhhc0N1cnJlbnRTdHlsZVByb3BlcnRpZXMoKTtkZWZhdWx0OnJldHVybiEwfX1oYXNDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRLZXlmcmFtZS5zaXplPjB9Z2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuc3RhcnRUaW1lK3Ro''@;'; put 'put ''aXMuZHVyYXRpb259ZGVsYXlOZXh0U3RlcChnKXtjb25zdCBoPTE9PT10aGlzLl9rZXlmcmFtZXMuc2l6ZSYmdGhpcy5fcGVuZGluZ1N0eWxlcy5zaXplO3RoaXMuZHVyYXRpb258fGg/KHRoaXMuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZStnKSxoJiZ0aGlzLnNuYXBzaG90Q3VycmVu''@;'; put 'put ''dFN0eWxlcygpKTp0aGlzLnN0YXJ0VGltZSs9Z31mb3JrKGcsaCl7cmV0dXJuIHRoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksbmV3IFZxKHRoaXMuX2RyaXZlcixnLGh8fHRoaXMuY3VycmVudFRpbWUsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwKX1fbG9hZEtleWZyYW1l''@;'; put 'put ''KCl7dGhpcy5fY3VycmVudEtleWZyYW1lJiYodGhpcy5fcHJldmlvdXNLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWUpLHRoaXMuX2N1cnJlbnRLZXlmcmFtZT10aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pLHRoaXMuX2N1cnJlbnRLZXlmcmFtZXx8KHRoaXMuX2N1cnJl''@;'; put 'put ''bnRLZXlmcmFtZT1uZXcgTWFwLHRoaXMuX2tleWZyYW1lcy5zZXQodGhpcy5kdXJhdGlvbix0aGlzLl9jdXJyZW50S2V5ZnJhbWUpKX1mb3J3YXJkRnJhbWUoKXt0aGlzLmR1cmF0aW9uKz0xLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWZvcndhcmRUaW1lKGcpe3RoaXMuYXBwbHlTdHlsZXNUb0tl''@;'; put 'put ''eWZyYW1lKCksdGhpcy5kdXJhdGlvbj1nLHRoaXMuX2xvYWRLZXlmcmFtZSgpfV91cGRhdGVTdHlsZShnLGgpe3RoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuc2V0KGcsaCksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMuc2V0KGcsaCksdGhpcy5fc3R5bGVTdW1tYXJ5LnNldChnLHt0aW1l''@;'; put 'put ''OnRoaXMuY3VycmVudFRpbWUsdmFsdWU6aH0pfWFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZSE9PXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1hcHBseUVtcHR5U3RlcChnKXtnJiZ0aGlzLl9wcmV2aW91c0tleWZyYW1lLnNldCgi''@;'; put 'put ''ZWFzaW5nIixnKTtmb3IobGV0W2gsdl1vZiB0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcyl0aGlzLl9iYWNrRmlsbC5zZXQoaCx2fHxRaCksdGhpcy5fY3VycmVudEtleWZyYW1lLnNldChoLFFoKTt0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1l''@;'; put 'put ''fXNldFN0eWxlcyhnLGgsdix5KXt2YXIgQztoJiZ0aGlzLl9wcmV2aW91c0tleWZyYW1lLnNldCgiZWFzaW5nIixoKTtjb25zdCBJPXkmJnkucGFyYW1zfHx7fSxqPWZ1bmN0aW9uIHBIZShkLGcpe2NvbnN0IGg9bmV3IE1hcDtsZXQgdjtyZXR1cm4gZC5mb3JFYWNoKHk9PntpZigiKiI9PT15''@;'; put 'put ''KXt2PXZ8fGcua2V5cygpO2ZvcihsZXQgQyBvZiB2KWguc2V0KEMsUWgpfWVsc2UgVHcoeSxoKX0pLGh9KGcsdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMpO2ZvcihsZXRbY2UsX2Vdb2Ygail7Y29uc3QgUmU9RHEoX2UsSSx2KTt0aGlzLl9wZW5kaW5nU3R5bGVzLnNldChjZSxSZSksdGhp''@;'; put 'put ''cy5fbG9jYWxUaW1lbGluZVN0eWxlcy5oYXMoY2UpfHx0aGlzLl9iYWNrRmlsbC5zZXQoY2UsbnVsbCE9PShDPXRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzLmdldChjZSkpJiZ2b2lkIDAhPT1DP0M6UWgpLHRoaXMuX3VwZGF0ZVN0eWxlKGNlLFJlKX19YXBwbHlTdHlsZXNUb0tleWZyYW1l''@;'; put 'put ''KCl7MCE9dGhpcy5fcGVuZGluZ1N0eWxlcy5zaXplJiYodGhpcy5fcGVuZGluZ1N0eWxlcy5mb3JFYWNoKChnLGgpPT57dGhpcy5fY3VycmVudEtleWZyYW1lLnNldChoLGcpfSksdGhpcy5fcGVuZGluZ1N0eWxlcy5jbGVhcigpLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuZm9yRWFjaCgo''@;'; put 'put ''ZyxoKT0+e3RoaXMuX2N1cnJlbnRLZXlmcmFtZS5oYXMoaCl8fHRoaXMuX2N1cnJlbnRLZXlmcmFtZS5zZXQoaCxnKX0pKX1zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKXtmb3IobGV0W2csaF1vZiB0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKXRoaXMuX3BlbmRpbmdTdHlsZXMuc2V0KGcsaCks''@;'; put 'put ''dGhpcy5fdXBkYXRlU3R5bGUoZyxoKX1nZXRGaW5hbEtleWZyYW1lKCl7cmV0dXJuIHRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbil9Z2V0IHByb3BlcnRpZXMoKXtjb25zdCBnPVtdO2ZvcihsZXQgaCBpbiB0aGlzLl9jdXJyZW50S2V5ZnJhbWUpZy5wdXNoKGgpO3JldHVybiBn''@;'; put 'put ''fW1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMoZyl7Zy5fc3R5bGVTdW1tYXJ5LmZvckVhY2goKGgsdik9Pntjb25zdCB5PXRoaXMuX3N0eWxlU3VtbWFyeS5nZXQodik7KCF5fHxoLnRpbWU+eS50aW1lKSYmdGhpcy5fdXBkYXRlU3R5bGUodixoLnZhbHVlKX0pfWJ1aWxkS2V5ZnJhbWVz''@;'; put 'put ''KCl7dGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKTtjb25zdCBnPW5ldyBTZXQsaD1uZXcgU2V0LHY9MT09PXRoaXMuX2tleWZyYW1lcy5zaXplJiYwPT09dGhpcy5kdXJhdGlvbjtsZXQgeT1bXTt0aGlzLl9rZXlmcmFtZXMuZm9yRWFjaCgoaixjZSk9Pntjb25zdCBfZT1UdyhqLG5ldyBN''@;'; put 'put ''YXAsdGhpcy5fYmFja0ZpbGwpO19lLmZvckVhY2goKFJlLE5lKT0+eyIhIj09PVJlP2cuYWRkKE5lKTpSZT09PVFoJiZoLmFkZChOZSl9KSx2fHxfZS5zZXQoIm9mZnNldCIsY2UvdGhpcy5kdXJhdGlvbikseS5wdXNoKF9lKX0pO2NvbnN0IEM9Zy5zaXplP0xxKGcudmFsdWVzKCkpOltdLEk9''@;'; put 'put ''aC5zaXplP0xxKGgudmFsdWVzKCkpOltdO2lmKHYpe2NvbnN0IGo9eVswXSxjZT1uZXcgTWFwKGopO2ouc2V0KCJvZmZzZXQiLDApLGNlLnNldCgib2Zmc2V0IiwxKSx5PVtqLGNlXX1yZXR1cm4gSGhlKHRoaXMuZWxlbWVudCx5LEMsSSx0aGlzLmR1cmF0aW9uLHRoaXMuc3RhcnRUaW1lLHRo''@;'; put 'put ''aXMuZWFzaW5nLCExKX19Y2xhc3MgZEhlIGV4dGVuZHMgVnF7Y29uc3RydWN0b3IoZyxoLHYseSxDLEksaj0hMSl7c3VwZXIoZyxoLEkuZGVsYXkpLHRoaXMua2V5ZnJhbWVzPXYsdGhpcy5wcmVTdHlsZVByb3BzPXksdGhpcy5wb3N0U3R5bGVQcm9wcz1DLHRoaXMuX3N0cmV0Y2hTdGFydGlu''@;'; put 'put ''Z0tleWZyYW1lPWosdGhpcy50aW1pbmdzPXtkdXJhdGlvbjpJLmR1cmF0aW9uLGRlbGF5OkkuZGVsYXksZWFzaW5nOkkuZWFzaW5nfX1jb250YWluc0FuaW1hdGlvbigpe3JldHVybiB0aGlzLmtleWZyYW1lcy5sZW5ndGg+MX1idWlsZEtleWZyYW1lcygpe2xldCBnPXRoaXMua2V5ZnJhbWVz''@;'; put 'put ''LHtkZWxheTpoLGR1cmF0aW9uOnYsZWFzaW5nOnl9PXRoaXMudGltaW5ncztpZih0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZSYmaCl7Y29uc3QgQz1bXSxJPXYraCxqPWgvSSxjZT1UdyhnWzBdKTtjZS5zZXQoIm9mZnNldCIsMCksQy5wdXNoKGNlKTtjb25zdCBfZT1UdyhnWzBdKTtf''@;'; put 'put ''ZS5zZXQoIm9mZnNldCIsWHdlKGopKSxDLnB1c2goX2UpO2NvbnN0IFJlPWcubGVuZ3RoLTE7Zm9yKGxldCBOZT0xO05lPD1SZTtOZSsrKXtsZXQgS2U9VHcoZ1tOZV0pO2NvbnN0IGh0PUtlLmdldCgib2Zmc2V0Iik7S2Uuc2V0KCJvZmZzZXQiLFh3ZSgoaCtodCp2KS9JKSksQy5wdXNoKEtl''@;'; put 'put ''KX12PUksaD0wLHk9IiIsZz1DfXJldHVybiBIaGUodGhpcy5lbGVtZW50LGcsdGhpcy5wcmVTdHlsZVByb3BzLHRoaXMucG9zdFN0eWxlUHJvcHMsdixoLHksITApfX1mdW5jdGlvbiBYd2UoZCxnPTMpe2NvbnN0IGg9TWF0aC5wb3coMTAsZy0xKTtyZXR1cm4gTWF0aC5yb3VuZChkKmgpL2h9''@;'; put 'put ''Y2xhc3Mgamhle31jb25zdCBnSGU9bmV3IFNldChbIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsImxlZnQiLCJ0b3AiLCJib3R0b20iLCJyaWdodCIsImZvbnRTaXplIiwib3V0bGluZVdpZHRoIiwib3V0bGluZU9mZnNldCIs''@;'; put 'put ''InBhZGRpbmdUb3AiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nUmlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5MZWZ0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luUmlnaHQiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJXaWR0aCIsImJvcmRlclRvcFdpZHRoIiwiYm9yZGVy''@;'; put 'put ''TGVmdFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwidGV4dEluZGVudCIsInBlcnNwZWN0aXZlIl0pO2NsYXNzIG1IZSBleHRlbmRzIGpoZXtub3JtYWxpemVQcm9wZXJ0eU5hbWUoZyxoKXtyZXR1cm4gQmhlKGcpfW5vcm1hbGl6ZVN0eWxlVmFsdWUoZyxo''@;'; put 'put ''LHYseSl7bGV0IEM9IiI7Y29uc3QgST12LnRvU3RyaW5nKCkudHJpbSgpO2lmKGdIZS5oYXMoaCkmJjAhPT12JiYiMCIhPT12KWlmKCJudW1iZXIiPT10eXBlb2YgdilDPSJweCI7ZWxzZXtjb25zdCBqPXYubWF0Y2goL15bKy1dP1tcZFwuXSsoW2Etel0qKSQvKTtqJiYwPT1qWzFdLmxlbmd0''@;'; put 'put ''aCYmeS5wdXNoKGZ1bmN0aW9uIGFGZShkLGcpe3JldHVybiBuZXcgcXQoMzAwNSwhMSl9KCkpfXJldHVybiBJK0N9fWZ1bmN0aW9uIEt3ZShkLGcsaCx2LHksQyxJLGosY2UsX2UsUmUsTmUsS2Upe3JldHVybnt0eXBlOjAsZWxlbWVudDpkLHRyaWdnZXJOYW1lOmcsaXNSZW1vdmFsVHJhbnNp''@;'; put 'put ''dGlvbjp5LGZyb21TdGF0ZTpoLGZyb21TdHlsZXM6Qyx0b1N0YXRlOnYsdG9TdHlsZXM6SSx0aW1lbGluZXM6aixxdWVyaWVkRWxlbWVudHM6Y2UscHJlU3R5bGVQcm9wczpfZSxwb3N0U3R5bGVQcm9wczpSZSx0b3RhbFRpbWU6TmUsZXJyb3JzOktlfX1jb25zdCBaaGU9e307Y2xhc3MgJHdl''@;'; put 'put ''e2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLl90cmlnZ2VyTmFtZT1nLHRoaXMuYXN0PWgsdGhpcy5fc3RhdGVTdHlsZXM9dn1tYXRjaChnLGgsdix5KXtyZXR1cm4gZnVuY3Rpb24gdkhlKGQsZyxoLHYseSl7cmV0dXJuIGQuc29tZShDPT5DKGcsaCx2LHkpKX0odGhpcy5hc3QubWF0Y2hlcnMs''@;'; put 'put ''ZyxoLHYseSl9YnVpbGRTdHlsZXMoZyxoLHYpe2xldCB5PXRoaXMuX3N0YXRlU3R5bGVzLmdldCgiKiIpO3JldHVybiB2b2lkIDAhPT1nJiYoeT10aGlzLl9zdGF0ZVN0eWxlcy5nZXQobnVsbD09Zz92b2lkIDA6Zy50b1N0cmluZygpKXx8eSkseT95LmJ1aWxkU3R5bGVzKGgsdik6bmV3IE1h''@;'; put 'put ''cH1idWlsZChnLGgsdix5LEMsSSxqLGNlLF9lLFJlKXt2YXIgTmU7Y29uc3QgS2U9W10saHQ9dGhpcy5hc3Qub3B0aW9ucyYmdGhpcy5hc3Qub3B0aW9ucy5wYXJhbXN8fFpoZSwkdD10aGlzLmJ1aWxkU3R5bGVzKHYsaiYmai5wYXJhbXN8fFpoZSxLZSksaG49Y2UmJmNlLnBhcmFtc3x8Wmhl''@;'; put 'put ''LERuPXRoaXMuYnVpbGRTdHlsZXMoeSxobixLZSksaXI9bmV3IFNldCxwcj1uZXcgTWFwLEVyPW5ldyBNYXAsQXI9InZvaWQiPT09eSxZcj17cGFyYW1zOkFIZShobixodCksZGVsYXk6bnVsbD09PShOZT10aGlzLmFzdC5vcHRpb25zKXx8dm9pZCAwPT09TmU/dm9pZCAwOk5lLmRlbGF5fSxf''@;'; put 'put ''aT1SZT9bXTpOaGUoZyxoLHRoaXMuYXN0LmFuaW1hdGlvbixDLEksJHQsRG4sWXIsX2UsS2UpO2xldCBLaT0wO2lmKF9pLmZvckVhY2goT289PntLaT1NYXRoLm1heChPby5kdXJhdGlvbitPby5kZWxheSxLaSl9KSxLZS5sZW5ndGgpcmV0dXJuIEt3ZShoLHRoaXMuX3RyaWdnZXJOYW1lLHYs''@;'; put 'put ''eSxBciwkdCxEbixbXSxbXSxwcixFcixLaSxLZSk7X2kuZm9yRWFjaChPbz0+e2NvbnN0IGJhPU9vLmVsZW1lbnQsWWE9ZjQocHIsYmEsbmV3IFNldCk7T28ucHJlU3R5bGVQcm9wcy5mb3JFYWNoKHFhPT5ZYS5hZGQocWEpKTtjb25zdCBvYT1mNChFcixiYSxuZXcgU2V0KTtPby5wb3N0U3R5''@;'; put 'put ''bGVQcm9wcy5mb3JFYWNoKHFhPT5vYS5hZGQocWEpKSxiYSE9PWgmJmlyLmFkZChiYSl9KTtjb25zdCBrbz1McShpci52YWx1ZXMoKSk7cmV0dXJuIEt3ZShoLHRoaXMuX3RyaWdnZXJOYW1lLHYseSxBciwkdCxEbixfaSxrbyxwcixFcixLaSl9fWZ1bmN0aW9uIEFIZShkLGcpe2NvbnN0IGg9''@;'; put 'put ''VVooZyk7Zm9yKGNvbnN0IHYgaW4gZClkLmhhc093blByb3BlcnR5KHYpJiZudWxsIT1kW3ZdJiYoaFt2XT1kW3ZdKTtyZXR1cm4gaH1jbGFzcyB5SGV7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMuc3R5bGVzPWcsdGhpcy5kZWZhdWx0UGFyYW1zPWgsdGhpcy5ub3JtYWxpemVyPXZ9YnVpbGRT''@;'; put 'put ''dHlsZXMoZyxoKXtjb25zdCB2PW5ldyBNYXAseT1VWih0aGlzLmRlZmF1bHRQYXJhbXMpO3JldHVybiBPYmplY3Qua2V5cyhnKS5mb3JFYWNoKEM9Pntjb25zdCBJPWdbQ107bnVsbCE9PUkmJih5W0NdPUkpfSksdGhpcy5zdHlsZXMuc3R5bGVzLmZvckVhY2goQz0+eyJzdHJpbmciIT10eXBl''@;'; put 'put ''b2YgQyYmQy5mb3JFYWNoKChJLGopPT57SSYmKEk9RHEoSSx5LGgpKTtjb25zdCBjZT10aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplUHJvcGVydHlOYW1lKGosaCk7ST10aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplU3R5bGVWYWx1ZShqLGNlLEksaCksdi5zZXQoY2UsSSl9KX0pLHZ9fWNsYXNz''@;'; put 'put ''IGJIZXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5uYW1lPWcsdGhpcy5hc3Q9aCx0aGlzLl9ub3JtYWxpemVyPXYsdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzPVtdLHRoaXMuc3RhdGVzPW5ldyBNYXAsaC5zdGF0ZXMuZm9yRWFjaCh5PT57dGhpcy5zdGF0ZXMuc2V0KHkubmFtZSxuZXcgeUhl''@;'; put 'put ''KHkuc3R5bGUseS5vcHRpb25zJiZ5Lm9wdGlvbnMucGFyYW1zfHx7fSx2KSl9KSxxd2UodGhpcy5zdGF0ZXMsInRydWUiLCIxIikscXdlKHRoaXMuc3RhdGVzLCJmYWxzZSIsIjAiKSxoLnRyYW5zaXRpb25zLmZvckVhY2goeT0+e3RoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5wdXNoKG5ldyAk''@;'; put 'put ''d2UoZyx5LHRoaXMuc3RhdGVzKSl9KSx0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbj1mdW5jdGlvbiBfSGUoZCxnLGgpe3JldHVybiBuZXcgJHdlKGQse3R5cGU6MSxhbmltYXRpb246e3R5cGU6MixzdGVwczpbXSxvcHRpb25zOm51bGx9LG1hdGNoZXJzOlsoSSxqKT0+ITBdLG9wdGlvbnM6bnVs''@;'; put 'put ''bCxxdWVyeUNvdW50OjAsZGVwQ291bnQ6MH0sZyl9KGcsdGhpcy5zdGF0ZXMpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbihnLGgsdix5KXtyZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQoST0+SS5t''@;'; put 'put ''YXRjaChnLGgsdix5KSl8fG51bGx9bWF0Y2hTdHlsZXMoZyxoLHYpe3JldHVybiB0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbi5idWlsZFN0eWxlcyhnLGgsdil9fWZ1bmN0aW9uIHF3ZShkLGcsaCl7ZC5oYXMoZyk/ZC5oYXMoaCl8fGQuc2V0KGgsZC5nZXQoZykpOmQuaGFzKGgpJiZkLnNldChn''@;'; put 'put ''LGQuZ2V0KGgpKX1jb25zdCBDSGU9bmV3IEhxO2NsYXNzIGtIZXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5ib2R5Tm9kZT1nLHRoaXMuX2RyaXZlcj1oLHRoaXMuX25vcm1hbGl6ZXI9dix0aGlzLl9hbmltYXRpb25zPW5ldyBNYXAsdGhpcy5fcGxheWVyc0J5SWQ9bmV3IE1hcCx0aGlzLnBs''@;'; put 'put ''YXllcnM9W119cmVnaXN0ZXIoZyxoKXtjb25zdCB2PVtdLEM9UGhlKHRoaXMuX2RyaXZlcixoLHYsW10pO2lmKHYubGVuZ3RoKXRocm93IGZ1bmN0aW9uIGtGZShkKXtyZXR1cm4gbmV3IHF0KDM1MDMsITEpfSgpO3RoaXMuX2FuaW1hdGlvbnMuc2V0KGcsQyl9X2J1aWxkUGxheWVyKGcsaCx2''@;'; put 'put ''KXtjb25zdCB5PWcuZWxlbWVudCxDPUR3ZSgwLHRoaXMuX25vcm1hbGl6ZXIsMCxnLmtleWZyYW1lcyxoLHYpO3JldHVybiB0aGlzLl9kcml2ZXIuYW5pbWF0ZSh5LEMsZy5kdXJhdGlvbixnLmRlbGF5LGcuZWFzaW5nLFtdLCEwKX1jcmVhdGUoZyxoLHY9e30pe2NvbnN0IHk9W10sQz10aGlz''@;'; put 'put ''Ll9hbmltYXRpb25zLmdldChnKTtsZXQgSTtjb25zdCBqPW5ldyBNYXA7aWYoQz8oST1OaGUodGhpcy5fZHJpdmVyLGgsQywibmctZW50ZXIiLEVxLG5ldyBNYXAsbmV3IE1hcCx2LENIZSx5KSxJLmZvckVhY2goUmU9Pntjb25zdCBOZT1mNChqLFJlLmVsZW1lbnQsbmV3IE1hcCk7UmUucG9z''@;'; put 'put ''dFN0eWxlUHJvcHMuZm9yRWFjaChLZT0+TmUuc2V0KEtlLG51bGwpKX0pKTooeS5wdXNoKGZ1bmN0aW9uIFNGZSgpe3JldHVybiBuZXcgcXQoMzMwMCwhMSl9KCkpLEk9W10pLHkubGVuZ3RoKXRocm93IGZ1bmN0aW9uIE1GZShkKXtyZXR1cm4gbmV3IHF0KDM1MDQsITEpfSgpO2ouZm9yRWFj''@;'; put 'put ''aCgoUmUsTmUpPT57UmUuZm9yRWFjaCgoS2UsaHQpPT57UmUuc2V0KGh0LHRoaXMuX2RyaXZlci5jb21wdXRlU3R5bGUoTmUsaHQsUWgpKX0pfSk7Y29uc3QgX2U9RXcoSS5tYXAoUmU9Pntjb25zdCBOZT1qLmdldChSZS5lbGVtZW50KTtyZXR1cm4gdGhpcy5fYnVpbGRQbGF5ZXIoUmUsbmV3''@;'; put 'put ''IE1hcCxOZSl9KSk7cmV0dXJuIHRoaXMuX3BsYXllcnNCeUlkLnNldChnLF9lKSxfZS5vbkRlc3Ryb3koKCk9PnRoaXMuZGVzdHJveShnKSksdGhpcy5wbGF5ZXJzLnB1c2goX2UpLF9lfWRlc3Ryb3koZyl7Y29uc3QgaD10aGlzLl9nZXRQbGF5ZXIoZyk7aC5kZXN0cm95KCksdGhpcy5fcGxh''@;'; put 'put ''eWVyc0J5SWQuZGVsZXRlKGcpO2NvbnN0IHY9dGhpcy5wbGF5ZXJzLmluZGV4T2YoaCk7dj49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZSh2LDEpfV9nZXRQbGF5ZXIoZyl7Y29uc3QgaD10aGlzLl9wbGF5ZXJzQnlJZC5nZXQoZyk7aWYoIWgpdGhyb3cgZnVuY3Rpb24gRUZlKGQpe3JldHVybiBu''@;'; put 'put ''ZXcgcXQoMzMwMSwhMSl9KCk7cmV0dXJuIGh9bGlzdGVuKGcsaCx2LHkpe2NvbnN0IEM9RWhlKGgsIiIsIiIsIiIpO3JldHVybiBTaGUodGhpcy5fZ2V0UGxheWVyKGcpLHYsQyx5KSwoKT0+e319Y29tbWFuZChnLGgsdix5KXtpZigicmVnaXN0ZXIiPT12KXJldHVybiB2b2lkIHRoaXMucmVn''@;'; put 'put ''aXN0ZXIoZyx5WzBdKTtpZigiY3JlYXRlIj09dilyZXR1cm4gdm9pZCB0aGlzLmNyZWF0ZShnLGgseVswXXx8e30pO2NvbnN0IEM9dGhpcy5fZ2V0UGxheWVyKGcpO3N3aXRjaCh2KXtjYXNlInBsYXkiOkMucGxheSgpO2JyZWFrO2Nhc2UicGF1c2UiOkMucGF1c2UoKTticmVhaztjYXNlInJl''@;'; put 'put ''c2V0IjpDLnJlc2V0KCk7YnJlYWs7Y2FzZSJyZXN0YXJ0IjpDLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6Qy5maW5pc2goKTticmVhaztjYXNlImluaXQiOkMuaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOkMuc2V0UG9zaXRpb24ocGFyc2VGbG9hdCh5WzBdKSk7YnJlYWs7''@;'; put 'put ''Y2FzZSJkZXN0cm95Ijp0aGlzLmRlc3Ryb3koZyl9fX1jb25zdCBlYmU9Im5nLWFuaW1hdGUtcXVldWVkIix6aGU9Im5nLWFuaW1hdGUtZGlzYWJsZWQiLFRIZT1bXSx0YmU9e25hbWVzcGFjZUlkOiIiLHNldEZvclJlbW92YWw6ITEsc2V0Rm9yTW92ZTohMSxoYXNBbmltYXRpb246ITEscmVt''@;'; put 'put ''b3ZlZEJlZm9yZVF1ZXJpZWQ6ITF9LElIZT17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yTW92ZTohMSxzZXRGb3JSZW1vdmFsOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMH0sYnA9Il9fbmdfcmVtb3ZlZCI7Y2xhc3MgR2hle2NvbnN0cnVjdG9yKGcsaD0iIil7dGhp''@;'; put 'put ''cy5uYW1lc3BhY2VJZD1oO2NvbnN0IHY9ZyYmZy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKTtpZih0aGlzLnZhbHVlPWZ1bmN0aW9uIFJIZShkKXtyZXR1cm4gbnVsbCE9ZD9kOm51bGx9KHY/Zy52YWx1ZTpnKSx2KXtjb25zdCBDPVVaKGcpO2RlbGV0ZSBDLnZhbHVlLHRoaXMub3B0aW9ucz1D''@;'; put 'put ''fWVsc2UgdGhpcy5vcHRpb25zPXt9O3RoaXMub3B0aW9ucy5wYXJhbXN8fCh0aGlzLm9wdGlvbnMucGFyYW1zPXt9KX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9YWJzb3JiT3B0aW9ucyhnKXtjb25zdCBoPWcucGFyYW1zO2lmKGgpe2NvbnN0IHY9dGhpcy5vcHRp''@;'; put 'put ''b25zLnBhcmFtcztPYmplY3Qua2V5cyhoKS5mb3JFYWNoKHk9PntudWxsPT12W3ldJiYodlt5XT1oW3ldKX0pfX19Y29uc3QgSlo9InZvaWQiLFdoZT1uZXcgR2hlKEpaKTtjbGFzcyBESGV7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMuaWQ9Zyx0aGlzLmhvc3RFbGVtZW50PWgsdGhpcy5fZW5n''@;'; put 'put ''aW5lPXYsdGhpcy5wbGF5ZXJzPVtdLHRoaXMuX3RyaWdnZXJzPW5ldyBNYXAsdGhpcy5fcXVldWU9W10sdGhpcy5fZWxlbWVudExpc3RlbmVycz1uZXcgTWFwLHRoaXMuX2hvc3RDbGFzc05hbWU9Im5nLXRucy0iK2csX3AoaCx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1saXN0ZW4oZyxoLHYseSl7''@;'; put 'put ''aWYoIXRoaXMuX3RyaWdnZXJzLmhhcyhoKSl0aHJvdyBmdW5jdGlvbiB4RmUoZCxnKXtyZXR1cm4gbmV3IHF0KDMzMDIsITEpfSgpO2lmKG51bGw9PXZ8fDA9PXYubGVuZ3RoKXRocm93IGZ1bmN0aW9uIFRGZShkKXtyZXR1cm4gbmV3IHF0KDMzMDMsITEpfSgpO2lmKCFmdW5jdGlvbiBCSGUo''@;'; put 'put ''ZCl7cmV0dXJuInN0YXJ0Ij09ZHx8ImRvbmUiPT1kfSh2KSl0aHJvdyBmdW5jdGlvbiBJRmUoZCxnKXtyZXR1cm4gbmV3IHF0KDM0MDAsITEpfSgpO2NvbnN0IEM9ZjQodGhpcy5fZWxlbWVudExpc3RlbmVycyxnLFtdKSxJPXtuYW1lOmgscGhhc2U6dixjYWxsYmFjazp5fTtDLnB1c2goSSk7''@;'; put 'put ''Y29uc3Qgaj1mNCh0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LGcsbmV3IE1hcCk7cmV0dXJuIGouaGFzKGgpfHwoX3AoZyx4cSksX3AoZyx4cSsiLSIraCksai5zZXQoaCxXaGUpKSwoKT0+e3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgpPT57Y29uc3QgY2U9Qy5pbmRleE9mKEkpO2Nl''@;'; put 'put ''Pj0wJiZDLnNwbGljZShjZSwxKSx0aGlzLl90cmlnZ2Vycy5oYXMoaCl8fGouZGVsZXRlKGgpfSl9fXJlZ2lzdGVyKGcsaCl7cmV0dXJuIXRoaXMuX3RyaWdnZXJzLmhhcyhnKSYmKHRoaXMuX3RyaWdnZXJzLnNldChnLGgpLCEwKX1fZ2V0VHJpZ2dlcihnKXtjb25zdCBoPXRoaXMuX3RyaWdn''@;'; put 'put ''ZXJzLmdldChnKTtpZighaCl0aHJvdyBmdW5jdGlvbiBERmUoZCl7cmV0dXJuIG5ldyBxdCgzNDAxLCExKX0oKTtyZXR1cm4gaH10cmlnZ2VyKGcsaCx2LHk9ITApe2NvbnN0IEM9dGhpcy5fZ2V0VHJpZ2dlcihoKSxJPW5ldyBZaGUodGhpcy5pZCxoLGcpO2xldCBqPXRoaXMuX2VuZ2luZS5z''@;'; put 'put ''dGF0ZXNCeUVsZW1lbnQuZ2V0KGcpO2p8fChfcChnLHhxKSxfcChnLHhxKyItIitoKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LnNldChnLGo9bmV3IE1hcCkpO2xldCBjZT1qLmdldChoKTtjb25zdCBfZT1uZXcgR2hlKHYsdGhpcy5pZCk7aWYoISh2JiZ2Lmhhc093blByb3BlcnR5''@;'; put 'put ''KCJ2YWx1ZSIpKSYmY2UmJl9lLmFic29yYk9wdGlvbnMoY2Uub3B0aW9ucyksai5zZXQoaCxfZSksY2V8fChjZT1XaGUpLF9lLnZhbHVlIT09SlomJmNlLnZhbHVlPT09X2UudmFsdWUpe2lmKCFmdW5jdGlvbiBISGUoZCxnKXtjb25zdCBoPU9iamVjdC5rZXlzKGQpLHY9T2JqZWN0LmtleXMo''@;'; put 'put ''Zyk7aWYoaC5sZW5ndGghPXYubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgeT0wO3k8aC5sZW5ndGg7eSsrKXtjb25zdCBDPWhbeV07aWYoIWcuaGFzT3duUHJvcGVydHkoQyl8fGRbQ10hPT1nW0NdKXJldHVybiExfXJldHVybiEwfShjZS5wYXJhbXMsX2UucGFyYW1zKSl7Y29uc3QgJHQ9W10s''@;'; put 'put ''aG49Qy5tYXRjaFN0eWxlcyhjZS52YWx1ZSxjZS5wYXJhbXMsJHQpLERuPUMubWF0Y2hTdHlsZXMoX2UudmFsdWUsX2UucGFyYW1zLCR0KTskdC5sZW5ndGg/dGhpcy5fZW5naW5lLnJlcG9ydEVycm9yKCR0KTp0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKT0+e1JTKGcsaG4pLENnKGcsRG4p''@;'; put 'put ''fSl9cmV0dXJufWNvbnN0IEtlPWY0KHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LGcsW10pO0tlLmZvckVhY2goJHQ9PnskdC5uYW1lc3BhY2VJZD09dGhpcy5pZCYmJHQudHJpZ2dlck5hbWU9PWgmJiR0LnF1ZXVlZCYmJHQuZGVzdHJveSgpfSk7bGV0IGh0PUMubWF0Y2hUcmFuc2l0''@;'; put 'put ''aW9uKGNlLnZhbHVlLF9lLnZhbHVlLGcsX2UucGFyYW1zKSxCdD0hMTtpZighaHQpe2lmKCF5KXJldHVybjtodD1DLmZhbGxiYWNrVHJhbnNpdGlvbixCdD0hMH1yZXR1cm4gdGhpcy5fZW5naW5lLnRvdGFsUXVldWVkUGxheWVycysrLHRoaXMuX3F1ZXVlLnB1c2goe2VsZW1lbnQ6Zyx0cmln''@;'; put 'put ''Z2VyTmFtZTpoLHRyYW5zaXRpb246aHQsZnJvbVN0YXRlOmNlLHRvU3RhdGU6X2UscGxheWVyOkksaXNGYWxsYmFja1RyYW5zaXRpb246QnR9KSxCdHx8KF9wKGcsZWJlKSxJLm9uU3RhcnQoKCk9Pnt5TyhnLGViZSl9KSksSS5vbkRvbmUoKCk9PntsZXQgJHQ9dGhpcy5wbGF5ZXJzLmluZGV4''@;'; put 'put ''T2YoSSk7JHQ+PTAmJnRoaXMucGxheWVycy5zcGxpY2UoJHQsMSk7Y29uc3QgaG49dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGcpO2lmKGhuKXtsZXQgRG49aG4uaW5kZXhPZihJKTtEbj49MCYmaG4uc3BsaWNlKERuLDEpfX0pLHRoaXMucGxheWVycy5wdXNoKEkpLEtlLnB1''@;'; put 'put ''c2goSSksSX1kZXJlZ2lzdGVyKGcpe3RoaXMuX3RyaWdnZXJzLmRlbGV0ZShnKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmZvckVhY2goaD0+aC5kZWxldGUoZykpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZm9yRWFjaCgoaCx2KT0+e3RoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuc2V0''@;'; put 'put ''KHYsaC5maWx0ZXIoeT0+eS5uYW1lIT1nKSl9KX1jbGVhckVsZW1lbnRDYWNoZShnKXt0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmRlbGV0ZShnKSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmRlbGV0ZShnKTtjb25zdCBoPXRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmdldChn''@;'; put 'put ''KTtoJiYoaC5mb3JFYWNoKHY9PnYuZGVzdHJveSgpKSx0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5kZWxldGUoZykpfV9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2VycyhnLGgpe2NvbnN0IHY9dGhpcy5fZW5naW5lLmRyaXZlci5xdWVyeShnLFRxLCEwKTt2LmZvckVhY2goeT0+''@;'; put 'put ''e2lmKHlbYnBdKXJldHVybjtjb25zdCBDPXRoaXMuX2VuZ2luZS5mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQoeSk7Qy5zaXplP0MuZm9yRWFjaChJPT5JLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbih5LGgsITEsITApKTp0aGlzLmNsZWFyRWxlbWVudENhY2hlKHkpfSksdGhpcy5fZW5naW5lLmFm''@;'; put 'put ''dGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKT0+di5mb3JFYWNoKHk9PnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUoeSkpKX10cmlnZ2VyTGVhdmVBbmltYXRpb24oZyxoLHYseSl7Y29uc3QgQz10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldChnKSxJPW5ldyBNYXA7aWYoQyl7Y29uc3Qg''@;'; put 'put ''aj1bXTtpZihDLmZvckVhY2goKGNlLF9lKT0+e2lmKEkuc2V0KF9lLGNlLnZhbHVlKSx0aGlzLl90cmlnZ2Vycy5oYXMoX2UpKXtjb25zdCBSZT10aGlzLnRyaWdnZXIoZyxfZSxKWix5KTtSZSYmai5wdXNoKFJlKX19KSxqLmxlbmd0aClyZXR1cm4gdGhpcy5fZW5naW5lLm1hcmtFbGVtZW50''@;'; put 'put ''QXNSZW1vdmVkKHRoaXMuaWQsZywhMCxoLEkpLHYmJkV3KGopLm9uRG9uZSgoKT0+dGhpcy5fZW5naW5lLnByb2Nlc3NMZWF2ZU5vZGUoZykpLCEwfXJldHVybiExfXByZXBhcmVMZWF2ZUFuaW1hdGlvbkxpc3RlbmVycyhnKXtjb25zdCBoPXRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZ2V0KGcp''@;'; put 'put ''LHY9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQoZyk7aWYoaCYmdil7Y29uc3QgeT1uZXcgU2V0O2guZm9yRWFjaChDPT57Y29uc3QgST1DLm5hbWU7aWYoeS5oYXMoSSkpcmV0dXJuO3kuYWRkKEkpO2NvbnN0IGNlPXRoaXMuX3RyaWdnZXJzLmdldChJKS5mYWxsYmFja1RyYW5z''@;'; put 'put ''aXRpb24sX2U9di5nZXQoSSl8fFdoZSxSZT1uZXcgR2hlKEpaKSxOZT1uZXcgWWhlKHRoaXMuaWQsSSxnKTt0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDpnLHRyaWdnZXJOYW1lOkksdHJhbnNpdGlvbjpjZSxmcm9tU3RhdGU6X2Us''@;'; put 'put ''dG9TdGF0ZTpSZSxwbGF5ZXI6TmUsaXNGYWxsYmFja1RyYW5zaXRpb246ITB9KX0pfX1yZW1vdmVOb2RlKGcsaCl7Y29uc3Qgdj10aGlzLl9lbmdpbmU7aWYoZy5jaGlsZEVsZW1lbnRDb3VudCYmdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnMoZyxoKSx0aGlzLnRyaWdnZXJM''@;'; put 'put ''ZWF2ZUFuaW1hdGlvbihnLGgsITApKXJldHVybjtsZXQgeT0hMTtpZih2LnRvdGFsQW5pbWF0aW9ucyl7Y29uc3QgQz12LnBsYXllcnMubGVuZ3RoP3YucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KGcpOltdO2lmKEMmJkMubGVuZ3RoKXk9ITA7ZWxzZXtsZXQgST1nO2Zvcig7ST1JLnBh''@;'; put 'put ''cmVudE5vZGU7KWlmKHYuc3RhdGVzQnlFbGVtZW50LmdldChJKSl7eT0hMDticmVha319fWlmKHRoaXMucHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKGcpLHkpdi5tYXJrRWxlbWVudEFzUmVtb3ZlZCh0aGlzLmlkLGcsITEsaCk7ZWxzZXtjb25zdCBDPWdbYnBdOyghQ3x8Qz09PXRi''@;'; put 'put ''ZSkmJih2LmFmdGVyRmx1c2goKCk9PnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUoZykpLHYuZGVzdHJveUlubmVyQW5pbWF0aW9ucyhnKSx2Ll9vblJlbW92YWxDb21wbGV0ZShnLGgpKX19aW5zZXJ0Tm9kZShnLGgpe19wKGcsdGhpcy5faG9zdENsYXNzTmFtZSl9ZHJhaW5RdWV1ZWRUcmFuc2l0''@;'; put 'put ''aW9ucyhnKXtjb25zdCBoPVtdO3JldHVybiB0aGlzLl9xdWV1ZS5mb3JFYWNoKHY9Pntjb25zdCB5PXYucGxheWVyO2lmKHkuZGVzdHJveWVkKXJldHVybjtjb25zdCBDPXYuZWxlbWVudCxJPXRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZ2V0KEMpO0kmJkkuZm9yRWFjaChqPT57aWYoai5uYW1l''@;'; put 'put ''PT12LnRyaWdnZXJOYW1lKXtjb25zdCBjZT1FaGUoQyx2LnRyaWdnZXJOYW1lLHYuZnJvbVN0YXRlLnZhbHVlLHYudG9TdGF0ZS52YWx1ZSk7Y2UuX2RhdGE9ZyxTaGUodi5wbGF5ZXIsai5waGFzZSxjZSxqLmNhbGxiYWNrKX19KSx5Lm1hcmtlZEZvckRlc3Ryb3k/dGhpcy5fZW5naW5lLmFm''@;'; put 'put ''dGVyRmx1c2goKCk9Pnt5LmRlc3Ryb3koKX0pOmgucHVzaCh2KX0pLHRoaXMuX3F1ZXVlPVtdLGguc29ydCgodix5KT0+e2NvbnN0IEM9di50cmFuc2l0aW9uLmFzdC5kZXBDb3VudCxJPXkudHJhbnNpdGlvbi5hc3QuZGVwQ291bnQ7cmV0dXJuIDA9PUN8fDA9PUk/Qy1JOnRoaXMuX2VuZ2lu''@;'; put 'put ''ZS5kcml2ZXIuY29udGFpbnNFbGVtZW50KHYuZWxlbWVudCx5LmVsZW1lbnQpPzE6LTF9KX1kZXN0cm95KGcpe3RoaXMucGxheWVycy5mb3JFYWNoKGg9PmguZGVzdHJveSgpKSx0aGlzLl9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2Vycyh0aGlzLmhvc3RFbGVtZW50LGcpfWVsZW1lbnRD''@;'; put 'put ''b250YWluc0RhdGEoZyl7bGV0IGg9ITE7cmV0dXJuIHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuaGFzKGcpJiYoaD0hMCksaD0hIXRoaXMuX3F1ZXVlLmZpbmQodj0+di5lbGVtZW50PT09Zyl8fGgsaH19Y2xhc3MgTEhle2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLmJvZHlOb2RlPWcsdGhpcy5k''@;'; put 'put ''cml2ZXI9aCx0aGlzLl9ub3JtYWxpemVyPXYsdGhpcy5wbGF5ZXJzPVtdLHRoaXMubmV3SG9zdEVsZW1lbnRzPW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudD1uZXcgTWFwLHRoaXMuc3RhdGVzQnlFbGVtZW50PW5ldyBN''@;'; put 'put ''YXAsdGhpcy5kaXNhYmxlZE5vZGVzPW5ldyBTZXQsdGhpcy50b3RhbEFuaW1hdGlvbnM9MCx0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuX25hbWVzcGFjZUxvb2t1cD17fSx0aGlzLl9uYW1lc3BhY2VMaXN0PVtdLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucz1b''@;'; put 'put ''XSx0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50PW5ldyBNYXAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzPVtdLHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cz1bXSx0aGlzLm9uUmVtb3ZhbENvbXBsZXRlPSh5LEMpPT57fX1fb25SZW1vdmFsQ29tcGxldGUoZyxoKXt0aGlzLm9u''@;'; put 'put ''UmVtb3ZhbENvbXBsZXRlKGcsaCl9Z2V0IHF1ZXVlZFBsYXllcnMoKXtjb25zdCBnPVtdO3JldHVybiB0aGlzLl9uYW1lc3BhY2VMaXN0LmZvckVhY2goaD0+e2gucGxheWVycy5mb3JFYWNoKHY9Pnt2LnF1ZXVlZCYmZy5wdXNoKHYpfSl9KSxnfWNyZWF0ZU5hbWVzcGFjZShnLGgpe2NvbnN0''@;'; put 'put ''IHY9bmV3IERIZShnLGgsdGhpcyk7cmV0dXJuIHRoaXMuYm9keU5vZGUmJnRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0aGlzLmJvZHlOb2RlLGgpP3RoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KHYsaCk6KHRoaXMubmV3SG9zdEVsZW1lbnRzLnNldChoLHYpLHRoaXMuY29sbGVjdEVu''@;'; put 'put ''dGVyRWxlbWVudChoKSksdGhpcy5fbmFtZXNwYWNlTG9va3VwW2ddPXZ9X2JhbGFuY2VOYW1lc3BhY2VMaXN0KGcsaCl7Y29uc3Qgdj10aGlzLl9uYW1lc3BhY2VMaXN0LHk9dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudDtpZih2Lmxlbmd0aC0xPj0wKXtsZXQgST0hMSxqPXRoaXMuZHJp''@;'; put 'put ''dmVyLmdldFBhcmVudEVsZW1lbnQoaCk7Zm9yKDtqOyl7Y29uc3QgY2U9eS5nZXQoaik7aWYoY2Upe2NvbnN0IF9lPXYuaW5kZXhPZihjZSk7di5zcGxpY2UoX2UrMSwwLGcpLEk9ITA7YnJlYWt9aj10aGlzLmRyaXZlci5nZXRQYXJlbnRFbGVtZW50KGopfUl8fHYudW5zaGlmdChnKX1lbHNl''@;'; put 'put ''IHYucHVzaChnKTtyZXR1cm4geS5zZXQoaCxnKSxnfXJlZ2lzdGVyKGcsaCl7bGV0IHY9dGhpcy5fbmFtZXNwYWNlTG9va3VwW2ddO3JldHVybiB2fHwodj10aGlzLmNyZWF0ZU5hbWVzcGFjZShnLGgpKSx2fXJlZ2lzdGVyVHJpZ2dlcihnLGgsdil7bGV0IHk9dGhpcy5fbmFtZXNwYWNlTG9v''@;'; put 'put ''a3VwW2ddO3kmJnkucmVnaXN0ZXIoaCx2KSYmdGhpcy50b3RhbEFuaW1hdGlvbnMrK31kZXN0cm95KGcsaCl7aWYoIWcpcmV0dXJuO2NvbnN0IHY9dGhpcy5fZmV0Y2hOYW1lc3BhY2UoZyk7dGhpcy5hZnRlckZsdXNoKCgpPT57dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5kZWxldGUo''@;'; put 'put ''di5ob3N0RWxlbWVudCksZGVsZXRlIHRoaXMuX25hbWVzcGFjZUxvb2t1cFtnXTtjb25zdCB5PXRoaXMuX25hbWVzcGFjZUxpc3QuaW5kZXhPZih2KTt5Pj0wJiZ0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZSh5LDEpfSksdGhpcy5hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoKCk9PnYuZGVz''@;'; put 'put ''dHJveShoKSl9X2ZldGNoTmFtZXNwYWNlKGcpe3JldHVybiB0aGlzLl9uYW1lc3BhY2VMb29rdXBbZ119ZmV0Y2hOYW1lc3BhY2VzQnlFbGVtZW50KGcpe2NvbnN0IGg9bmV3IFNldCx2PXRoaXMuc3RhdGVzQnlFbGVtZW50LmdldChnKTtpZih2KWZvcihsZXQgeSBvZiB2LnZhbHVlcygpKWlm''@;'; put 'put ''KHkubmFtZXNwYWNlSWQpe2NvbnN0IEM9dGhpcy5fZmV0Y2hOYW1lc3BhY2UoeS5uYW1lc3BhY2VJZCk7QyYmaC5hZGQoQyl9cmV0dXJuIGh9dHJpZ2dlcihnLGgsdix5KXtpZihqcShoKSl7Y29uc3QgQz10aGlzLl9mZXRjaE5hbWVzcGFjZShnKTtpZihDKXJldHVybiBDLnRyaWdnZXIoaCx2''@;'; put 'put ''LHkpLCEwfXJldHVybiExfWluc2VydE5vZGUoZyxoLHYseSl7aWYoIWpxKGgpKXJldHVybjtjb25zdCBDPWhbYnBdO2lmKEMmJkMuc2V0Rm9yUmVtb3ZhbCl7Qy5zZXRGb3JSZW1vdmFsPSExLEMuc2V0Rm9yTW92ZT0hMDtjb25zdCBJPXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5pbmRl''@;'; put 'put ''eE9mKGgpO0k+PTAmJnRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5zcGxpY2UoSSwxKX1pZihnKXtjb25zdCBJPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGcpO0kmJkkuaW5zZXJ0Tm9kZShoLHYpfXkmJnRoaXMuY29sbGVjdEVudGVyRWxlbWVudChoKX1jb2xsZWN0RW50ZXJFbGVtZW50KGcp''@;'; put 'put ''e3RoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5wdXNoKGcpfW1hcmtFbGVtZW50QXNEaXNhYmxlZChnLGgpe2g/dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyhnKXx8KHRoaXMuZGlzYWJsZWROb2Rlcy5hZGQoZyksX3AoZyx6aGUpKTp0aGlzLmRpc2FibGVkTm9kZXMuaGFzKGcpJiYodGhpcy5k''@;'; put 'put ''aXNhYmxlZE5vZGVzLmRlbGV0ZShnKSx5TyhnLHpoZSkpfXJlbW92ZU5vZGUoZyxoLHYseSl7aWYoanEoaCkpe2NvbnN0IEM9Zz90aGlzLl9mZXRjaE5hbWVzcGFjZShnKTpudWxsO2lmKEM/Qy5yZW1vdmVOb2RlKGgseSk6dGhpcy5tYXJrRWxlbWVudEFzUmVtb3ZlZChnLGgsITEseSksdil7''@;'; put 'put ''Y29uc3QgST10aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmdldChoKTtJJiZJLmlkIT09ZyYmSS5yZW1vdmVOb2RlKGgseSl9fWVsc2UgdGhpcy5fb25SZW1vdmFsQ29tcGxldGUoaCx5KX1tYXJrRWxlbWVudEFzUmVtb3ZlZChnLGgsdix5LEMpe3RoaXMuY29sbGVjdGVkTGVhdmVFbGVt''@;'; put 'put ''ZW50cy5wdXNoKGgpLGhbYnBdPXtuYW1lc3BhY2VJZDpnLHNldEZvclJlbW92YWw6eSxoYXNBbmltYXRpb246dixyZW1vdmVkQmVmb3JlUXVlcmllZDohMSxwcmV2aW91c1RyaWdnZXJzVmFsdWVzOkN9fWxpc3RlbihnLGgsdix5LEMpe3JldHVybiBqcShoKT90aGlzLl9mZXRjaE5hbWVzcGFj''@;'; put 'put ''ZShnKS5saXN0ZW4oaCx2LHksQyk6KCk9Pnt9fV9idWlsZEluc3RydWN0aW9uKGcsaCx2LHksQyl7cmV0dXJuIGcudHJhbnNpdGlvbi5idWlsZCh0aGlzLmRyaXZlcixnLmVsZW1lbnQsZy5mcm9tU3RhdGUudmFsdWUsZy50b1N0YXRlLnZhbHVlLHYseSxnLmZyb21TdGF0ZS5vcHRpb25zLGcu''@;'; put 'put ''dG9TdGF0ZS5vcHRpb25zLGgsQyl9ZGVzdHJveUlubmVyQW5pbWF0aW9ucyhnKXtsZXQgaD10aGlzLmRyaXZlci5xdWVyeShnLFRxLCEwKTtoLmZvckVhY2godj0+dGhpcy5kZXN0cm95QWN0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQodikpLDAhPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1l''@;'; put 'put ''bnQuc2l6ZSYmKGg9dGhpcy5kcml2ZXIucXVlcnkoZyxMaGUsITApLGguZm9yRWFjaCh2PT50aGlzLmZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQodikpKX1kZXN0cm95QWN0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZyl7Y29uc3QgaD10aGlzLnBsYXllcnNCeUVsZW1l''@;'; put 'put ''bnQuZ2V0KGcpO2gmJmguZm9yRWFjaCh2PT57di5xdWV1ZWQ/di5tYXJrZWRGb3JEZXN0cm95PSEwOnYuZGVzdHJveSgpfSl9ZmluaXNoQWN0aXZlUXVlcmllZEFuaW1hdGlvbk9uRWxlbWVudChnKXtjb25zdCBoPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KGcpO2gmJmguZm9y''@;'; put 'put ''RWFjaCh2PT52LmZpbmlzaCgpKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiBuZXcgUHJvbWlzZShnPT57aWYodGhpcy5wbGF5ZXJzLmxlbmd0aClyZXR1cm4gRXcodGhpcy5wbGF5ZXJzKS5vbkRvbmUoKCk9PmcoKSk7ZygpfSl9cHJvY2Vzc0xlYXZlTm9kZShnKXt2YXIgaDtjb25zdCB2''@;'; put 'put ''PWdbYnBdO2lmKHYmJnYuc2V0Rm9yUmVtb3ZhbCl7aWYoZ1ticF09dGJlLHYubmFtZXNwYWNlSWQpe3RoaXMuZGVzdHJveUlubmVyQW5pbWF0aW9ucyhnKTtjb25zdCB5PXRoaXMuX2ZldGNoTmFtZXNwYWNlKHYubmFtZXNwYWNlSWQpO3kmJnkuY2xlYXJFbGVtZW50Q2FjaGUoZyl9dGhpcy5f''@;'; put 'put ''b25SZW1vdmFsQ29tcGxldGUoZyx2LnNldEZvclJlbW92YWwpfSEobnVsbD09PShoPWcuY2xhc3NMaXN0KXx8dm9pZCAwPT09aCkmJmguY29udGFpbnMoemhlKSYmdGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQoZywhMSksdGhpcy5kcml2ZXIucXVlcnkoZywiLm5nLWFuaW1hdGUtZGlzYWJs''@;'; put 'put ''ZWQiLCEwKS5mb3JFYWNoKHk9Pnt0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh5LCExKX0pfWZsdXNoKGc9LTEpe2xldCBoPVtdO2lmKHRoaXMubmV3SG9zdEVsZW1lbnRzLnNpemUmJih0aGlzLm5ld0hvc3RFbGVtZW50cy5mb3JFYWNoKCh2LHkpPT50aGlzLl9iYWxhbmNlTmFtZXNwYWNl''@;'; put 'put ''TGlzdCh2LHkpKSx0aGlzLm5ld0hvc3RFbGVtZW50cy5jbGVhcigpKSx0aGlzLnRvdGFsQW5pbWF0aW9ucyYmdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aClmb3IobGV0IHY9MDt2PHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg7disrKV9wKHRoaXMuY29sbGVj''@;'; put 'put ''dGVkRW50ZXJFbGVtZW50c1t2XSwibmctc3Rhci1pbnNlcnRlZCIpO2lmKHRoaXMuX25hbWVzcGFjZUxpc3QubGVuZ3RoJiYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnN8fHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGgpKXtjb25zdCB2PVtdO3RyeXtoPXRoaXMuX2ZsdXNoQW5p''@;'; put 'put ''bWF0aW9ucyh2LGcpfWZpbmFsbHl7Zm9yKGxldCB5PTA7eTx2Lmxlbmd0aDt5Kyspdlt5XSgpfX1lbHNlIGZvcihsZXQgdj0wO3Y8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aDt2KyspdGhpcy5wcm9jZXNzTGVhdmVOb2RlKHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1t2''@;'; put 'put ''XSk7aWYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX2ZsdXNoRm5zLmZvckVhY2godj0+digpKSx0aGlzLl9mbHVzaEZucz1bXSx0aGlzLl93aGVu''@;'; put 'put ''UXVpZXRGbnMubGVuZ3RoKXtjb25zdCB2PXRoaXMuX3doZW5RdWlldEZuczt0aGlzLl93aGVuUXVpZXRGbnM9W10saC5sZW5ndGg/RXcoaCkub25Eb25lKCgpPT57di5mb3JFYWNoKHk9PnkoKSl9KTp2LmZvckVhY2goeT0+eSgpKX19cmVwb3J0RXJyb3IoZyl7dGhyb3cgZnVuY3Rpb24gTEZl''@;'; put 'put ''KGQpe3JldHVybiBuZXcgcXQoMzQwMiwhMSl9KCl9X2ZsdXNoQW5pbWF0aW9ucyhnLGgpe2NvbnN0IHY9bmV3IEhxLHk9W10sQz1uZXcgTWFwLEk9W10saj1uZXcgTWFwLGNlPW5ldyBNYXAsX2U9bmV3IE1hcCxSZT1uZXcgU2V0O3RoaXMuZGlzYWJsZWROb2Rlcy5mb3JFYWNoKEgwPT57UmUu''@;'; put 'put ''YWRkKEgwKTtjb25zdCBvbz10aGlzLmRyaXZlci5xdWVyeShIMCwiLm5nLWFuaW1hdGUtcXVldWVkIiwhMCk7Zm9yKGxldCBobz0wO2hvPG9vLmxlbmd0aDtobysrKVJlLmFkZChvb1tob10pfSk7Y29uc3QgTmU9dGhpcy5ib2R5Tm9kZSxLZT1BcnJheS5mcm9tKHRoaXMuc3RhdGVzQnlFbGVt''@;'; put 'put ''ZW50LmtleXMoKSksaHQ9aWJlKEtlLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cyksQnQ9bmV3IE1hcDtsZXQgJHQ9MDtodC5mb3JFYWNoKChIMCxvbyk9Pntjb25zdCBobz0ibmctZW50ZXIiKyR0Kys7QnQuc2V0KG9vLGhvKSxIMC5mb3JFYWNoKFRhPT5fcChUYSxobykpfSk7Y29uc3Qg''@;'; put 'put ''aG49W10sRG49bmV3IFNldCxpcj1uZXcgU2V0O2ZvcihsZXQgSDA9MDtIMDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO0gwKyspe2NvbnN0IG9vPXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1tIMF0saG89b29bYnBdO2hvJiZoby5zZXRGb3JSZW1vdmFsJiYoaG4ucHVz''@;'; put 'put ''aChvbyksRG4uYWRkKG9vKSxoby5oYXNBbmltYXRpb24/dGhpcy5kcml2ZXIucXVlcnkob28sIi5uZy1zdGFyLWluc2VydGVkIiwhMCkuZm9yRWFjaChUYT0+RG4uYWRkKFRhKSk6aXIuYWRkKG9vKSl9Y29uc3QgcHI9bmV3IE1hcCxFcj1pYmUoS2UsQXJyYXkuZnJvbShEbikpO0VyLmZvckVh''@;'; put 'put ''Y2goKEgwLG9vKT0+e2NvbnN0IGhvPUVxKyR0Kys7cHIuc2V0KG9vLGhvKSxIMC5mb3JFYWNoKFRhPT5fcChUYSxobykpfSksZy5wdXNoKCgpPT57aHQuZm9yRWFjaCgoSDAsb28pPT57Y29uc3QgaG89QnQuZ2V0KG9vKTtIMC5mb3JFYWNoKFRhPT55TyhUYSxobykpfSksRXIuZm9yRWFjaCgo''@;'; put 'put ''SDAsb28pPT57Y29uc3QgaG89cHIuZ2V0KG9vKTtIMC5mb3JFYWNoKFRhPT55TyhUYSxobykpfSksaG4uZm9yRWFjaChIMD0+e3RoaXMucHJvY2Vzc0xlYXZlTm9kZShIMCl9KX0pO2NvbnN0IEFyPVtdLFlyPVtdO2ZvcihsZXQgSDA9dGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgtMTtIMD49''@;'; put 'put ''MDtIMC0tKXRoaXMuX25hbWVzcGFjZUxpc3RbSDBdLmRyYWluUXVldWVkVHJhbnNpdGlvbnMoaCkuZm9yRWFjaChobz0+e2NvbnN0IFRhPWhvLnBsYXllcixKbD1oby5lbGVtZW50O2lmKEFyLnB1c2goVGEpLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpe2NvbnN0IFhpPUps''@;'; put 'put ''W2JwXTtpZihYaSYmWGkuc2V0Rm9yTW92ZSl7aWYoWGkucHJldmlvdXNUcmlnZ2Vyc1ZhbHVlcyYmWGkucHJldmlvdXNUcmlnZ2Vyc1ZhbHVlcy5oYXMoaG8udHJpZ2dlck5hbWUpKXtjb25zdCBFMD1YaS5wcmV2aW91c1RyaWdnZXJzVmFsdWVzLmdldChoby50cmlnZ2VyTmFtZSksejA9dGhp''@;'; put 'put ''cy5zdGF0ZXNCeUVsZW1lbnQuZ2V0KGhvLmVsZW1lbnQpO2lmKHowJiZ6MC5oYXMoaG8udHJpZ2dlck5hbWUpKXtjb25zdCBDbz16MC5nZXQoaG8udHJpZ2dlck5hbWUpO0NvLnZhbHVlPUUwLHowLnNldChoby50cmlnZ2VyTmFtZSxDbyl9fXJldHVybiB2b2lkIFRhLmRlc3Ryb3koKX19Y29u''@;'; put 'put ''c3QgSG49IU5lfHwhdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KE5lLEpsKSx6bj1wci5nZXQoSmwpLF9yPUJ0LmdldChKbCksUXI9dGhpcy5fYnVpbGRJbnN0cnVjdGlvbihobyx2LF9yLHpuLEhuKTtpZihRci5lcnJvcnMmJlFyLmVycm9ycy5sZW5ndGgpcmV0dXJuIHZvaWQgWXIucHVz''@;'; put 'put ''aChRcik7aWYoSG4pcmV0dXJuIFRhLm9uU3RhcnQoKCk9PlJTKEpsLFFyLmZyb21TdHlsZXMpKSxUYS5vbkRlc3Ryb3koKCk9PkNnKEpsLFFyLnRvU3R5bGVzKSksdm9pZCB5LnB1c2goVGEpO2lmKGhvLmlzRmFsbGJhY2tUcmFuc2l0aW9uKXJldHVybiBUYS5vblN0YXJ0KCgpPT5SUyhKbCxR''@;'; put 'put ''ci5mcm9tU3R5bGVzKSksVGEub25EZXN0cm95KCgpPT5DZyhKbCxRci50b1N0eWxlcykpLHZvaWQgeS5wdXNoKFRhKTtjb25zdCB1aT1bXTtRci50aW1lbGluZXMuZm9yRWFjaChYaT0+e1hpLnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lPSEwLHRoaXMuZGlzYWJsZWROb2Rlcy5oYXMoWGkuZWxl''@;'; put 'put ''bWVudCl8fHVpLnB1c2goWGkpfSksUXIudGltZWxpbmVzPXVpLHYuYXBwZW5kKEpsLFFyLnRpbWVsaW5lcyksSS5wdXNoKHtpbnN0cnVjdGlvbjpRcixwbGF5ZXI6VGEsZWxlbWVudDpKbH0pLFFyLnF1ZXJpZWRFbGVtZW50cy5mb3JFYWNoKFhpPT5mNChqLFhpLFtdKS5wdXNoKFRhKSksUXIu''@;'; put 'put ''cHJlU3R5bGVQcm9wcy5mb3JFYWNoKChYaSxFMCk9PntpZihYaS5zaXplKXtsZXQgejA9Y2UuZ2V0KEUwKTt6MHx8Y2Uuc2V0KEUwLHowPW5ldyBTZXQpLFhpLmZvckVhY2goKENvLGJvKT0+ejAuYWRkKGJvKSl9fSksUXIucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgoWGksRTApPT57bGV0IHow''@;'; put 'put ''PV9lLmdldChFMCk7ejB8fF9lLnNldChFMCx6MD1uZXcgU2V0KSxYaS5mb3JFYWNoKChDbyxibyk9PnowLmFkZChibykpfSl9KTtpZihZci5sZW5ndGgpe2NvbnN0IEgwPVtdO1lyLmZvckVhY2gob289PntIMC5wdXNoKGZ1bmN0aW9uIE9GZShkLGcpe3JldHVybiBuZXcgcXQoMzUwNSwhMSl9''@;'; put 'put ''KCkpfSksQXIuZm9yRWFjaChvbz0+b28uZGVzdHJveSgpKSx0aGlzLnJlcG9ydEVycm9yKEgwKX1jb25zdCBfaT1uZXcgTWFwLEtpPW5ldyBNYXA7SS5mb3JFYWNoKEgwPT57Y29uc3Qgb289SDAuZWxlbWVudDt2LmhhcyhvbykmJihLaS5zZXQob28sb28pLHRoaXMuX2JlZm9yZUFuaW1hdGlv''@;'; put 'put ''bkJ1aWxkKEgwLnBsYXllci5uYW1lc3BhY2VJZCxIMC5pbnN0cnVjdGlvbixfaSkpfSkseS5mb3JFYWNoKEgwPT57Y29uc3Qgb289SDAuZWxlbWVudDt0aGlzLl9nZXRQcmV2aW91c1BsYXllcnMob28sITEsSDAubmFtZXNwYWNlSWQsSDAudHJpZ2dlck5hbWUsbnVsbCkuZm9yRWFjaChUYT0+''@;'; put 'put ''e2Y0KF9pLG9vLFtdKS5wdXNoKFRhKSxUYS5kZXN0cm95KCl9KX0pO2NvbnN0IGtvPWhuLmZpbHRlcihIMD0+YWJlKEgwLGNlLF9lKSksT289bmV3IE1hcDtyYmUoT28sdGhpcy5kcml2ZXIsaXIsX2UsUWgpLmZvckVhY2goSDA9PnthYmUoSDAsY2UsX2UpJiZrby5wdXNoKEgwKX0pO2NvbnN0''@;'; put 'put ''IFlhPW5ldyBNYXA7aHQuZm9yRWFjaCgoSDAsb28pPT57cmJlKFlhLHRoaXMuZHJpdmVyLG5ldyBTZXQoSDApLGNlLCIhIil9KSxrby5mb3JFYWNoKEgwPT57dmFyIG9vLGhvO2NvbnN0IFRhPU9vLmdldChIMCksSmw9WWEuZ2V0KEgwKTtPby5zZXQoSDAsbmV3IE1hcChbLi4uQXJyYXkuZnJv''@;'; put 'put ''bShudWxsIT09KG9vPW51bGw9PVRhP3ZvaWQgMDpUYS5lbnRyaWVzKCkpJiZ2b2lkIDAhPT1vbz9vbzpbXSksLi4uQXJyYXkuZnJvbShudWxsIT09KGhvPW51bGw9PUpsP3ZvaWQgMDpKbC5lbnRyaWVzKCkpJiZ2b2lkIDAhPT1obz9obzpbXSldKSl9KTtjb25zdCBvYT1bXSxxYT1bXSxPcz17''@;'; put 'put ''fTtJLmZvckVhY2goSDA9Pntjb25zdHtlbGVtZW50Om9vLHBsYXllcjpobyxpbnN0cnVjdGlvbjpUYX09SDA7aWYodi5oYXMob28pKXtpZihSZS5oYXMob28pKXJldHVybiBoby5vbkRlc3Ryb3koKCk9PkNnKG9vLFRhLnRvU3R5bGVzKSksaG8uZGlzYWJsZWQ9ITAsaG8ub3ZlcnJpZGVUb3Rh''@;'; put 'put ''bFRpbWUoVGEudG90YWxUaW1lKSx2b2lkIHkucHVzaChobyk7bGV0IEpsPU9zO2lmKEtpLnNpemU+MSl7bGV0IHpuPW9vO2NvbnN0IF9yPVtdO2Zvcig7em49em4ucGFyZW50Tm9kZTspe2NvbnN0IFFyPUtpLmdldCh6bik7aWYoUXIpe0psPVFyO2JyZWFrfV9yLnB1c2goem4pfV9yLmZvckVh''@;'; put 'put ''Y2goUXI9PktpLnNldChRcixKbCkpfWNvbnN0IEhuPXRoaXMuX2J1aWxkQW5pbWF0aW9uKGhvLm5hbWVzcGFjZUlkLFRhLF9pLEMsWWEsT28pO2lmKGhvLnNldFJlYWxQbGF5ZXIoSG4pLEpsPT09T3Mpb2EucHVzaChobyk7ZWxzZXtjb25zdCB6bj10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0''@;'; put 'put ''KEpsKTt6biYmem4ubGVuZ3RoJiYoaG8ucGFyZW50UGxheWVyPUV3KHpuKSkseS5wdXNoKGhvKX19ZWxzZSBSUyhvbyxUYS5mcm9tU3R5bGVzKSxoby5vbkRlc3Ryb3koKCk9PkNnKG9vLFRhLnRvU3R5bGVzKSkscWEucHVzaChobyksUmUuaGFzKG9vKSYmeS5wdXNoKGhvKX0pLHFhLmZvckVh''@;'; put 'put ''Y2goSDA9Pntjb25zdCBvbz1DLmdldChIMC5lbGVtZW50KTtpZihvbyYmb28ubGVuZ3RoKXtjb25zdCBobz1Fdyhvbyk7SDAuc2V0UmVhbFBsYXllcihobyl9fSkseS5mb3JFYWNoKEgwPT57SDAucGFyZW50UGxheWVyP0gwLnN5bmNQbGF5ZXJFdmVudHMoSDAucGFyZW50UGxheWVyKTpIMC5k''@;'; put 'put ''ZXN0cm95KCl9KTtmb3IobGV0IEgwPTA7SDA8aG4ubGVuZ3RoO0gwKyspe2NvbnN0IG9vPWhuW0gwXSxobz1vb1ticF07aWYoeU8ob28sRXEpLGhvJiZoby5oYXNBbmltYXRpb24pY29udGludWU7bGV0IFRhPVtdO2lmKGouc2l6ZSl7bGV0IEhuPWouZ2V0KG9vKTtIbiYmSG4ubGVuZ3RoJiZU''@;'; put 'put ''YS5wdXNoKC4uLkhuKTtsZXQgem49dGhpcy5kcml2ZXIucXVlcnkob28sTGhlLCEwKTtmb3IobGV0IF9yPTA7X3I8em4ubGVuZ3RoO19yKyspe2xldCBRcj1qLmdldCh6bltfcl0pO1FyJiZRci5sZW5ndGgmJlRhLnB1c2goLi4uUXIpfX1jb25zdCBKbD1UYS5maWx0ZXIoSG49PiFIbi5kZXN0''@;'; put 'put ''cm95ZWQpO0psLmxlbmd0aD9QSGUodGhpcyxvbyxKbCk6dGhpcy5wcm9jZXNzTGVhdmVOb2RlKG9vKX1yZXR1cm4gaG4ubGVuZ3RoPTAsb2EuZm9yRWFjaChIMD0+e3RoaXMucGxheWVycy5wdXNoKEgwKSxIMC5vbkRvbmUoKCk9PntIMC5kZXN0cm95KCk7Y29uc3Qgb289dGhpcy5wbGF5ZXJz''@;'; put 'put ''LmluZGV4T2YoSDApO3RoaXMucGxheWVycy5zcGxpY2Uob28sMSl9KSxIMC5wbGF5KCl9KSxvYX1lbGVtZW50Q29udGFpbnNEYXRhKGcsaCl7bGV0IHY9ITE7Y29uc3QgeT1oW2JwXTtyZXR1cm4geSYmeS5zZXRGb3JSZW1vdmFsJiYodj0hMCksdGhpcy5wbGF5ZXJzQnlFbGVtZW50Lmhhcyho''@;'; put 'put ''KSYmKHY9ITApLHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuaGFzKGgpJiYodj0hMCksdGhpcy5zdGF0ZXNCeUVsZW1lbnQuaGFzKGgpJiYodj0hMCksdGhpcy5fZmV0Y2hOYW1lc3BhY2UoZykuZWxlbWVudENvbnRhaW5zRGF0YShoKXx8dn1hZnRlckZsdXNoKGcpe3RoaXMuX2ZsdXNo''@;'; put 'put ''Rm5zLnB1c2goZyl9YWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKGcpe3RoaXMuX3doZW5RdWlldEZucy5wdXNoKGcpfV9nZXRQcmV2aW91c1BsYXllcnMoZyxoLHYseSxDKXtsZXQgST1bXTtpZihoKXtjb25zdCBqPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KGcpO2omJihJPWop''@;'; put 'put ''fWVsc2V7Y29uc3Qgaj10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGcpO2lmKGope2NvbnN0IGNlPSFDfHxDPT1KWjtqLmZvckVhY2goX2U9PntfZS5xdWV1ZWR8fCFjZSYmX2UudHJpZ2dlck5hbWUhPXl8fEkucHVzaChfZSl9KX19cmV0dXJuKHZ8fHkpJiYoST1JLmZpbHRlcihqPT4hKHYm''@;'; put 'put ''JnYhPWoubmFtZXNwYWNlSWR8fHkmJnkhPWoudHJpZ2dlck5hbWUpKSksSX1fYmVmb3JlQW5pbWF0aW9uQnVpbGQoZyxoLHYpe2NvbnN0IEM9aC5lbGVtZW50LEk9aC5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDpnLGo9aC5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDpoLnRyaWdnZXJO''@;'; put 'put ''YW1lO2Zvcihjb25zdCBjZSBvZiBoLnRpbWVsaW5lcyl7Y29uc3QgX2U9Y2UuZWxlbWVudCxSZT1fZSE9PUMsTmU9ZjQodixfZSxbXSk7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKF9lLFJlLEksaixoLnRvU3RhdGUpLmZvckVhY2goaHQ9Pntjb25zdCBCdD1odC5nZXRSZWFsUGxheWVyKCk7''@;'; put 'put ''QnQuYmVmb3JlRGVzdHJveSYmQnQuYmVmb3JlRGVzdHJveSgpLGh0LmRlc3Ryb3koKSxOZS5wdXNoKGh0KX0pfVJTKEMsaC5mcm9tU3R5bGVzKX1fYnVpbGRBbmltYXRpb24oZyxoLHYseSxDLEkpe2NvbnN0IGo9aC50cmlnZ2VyTmFtZSxjZT1oLmVsZW1lbnQsX2U9W10sUmU9bmV3IFNldCxO''@;'; put 'put ''ZT1uZXcgU2V0LEtlPWgudGltZWxpbmVzLm1hcChCdD0+e2NvbnN0ICR0PUJ0LmVsZW1lbnQ7UmUuYWRkKCR0KTtjb25zdCBobj0kdFticF07aWYoaG4mJmhuLnJlbW92ZWRCZWZvcmVRdWVyaWVkKXJldHVybiBuZXcgQmsoQnQuZHVyYXRpb24sQnQuZGVsYXkpO2NvbnN0IERuPSR0IT09Y2Us''@;'; put 'put ''aXI9ZnVuY3Rpb24gRkhlKGQpe2NvbnN0IGc9W107cmV0dXJuIG9iZShkLGcpLGd9KCh2LmdldCgkdCl8fFRIZSkubWFwKF9pPT5faS5nZXRSZWFsUGxheWVyKCkpKS5maWx0ZXIoX2k9PiEhX2kuZWxlbWVudCYmX2kuZWxlbWVudD09PSR0KSxwcj1DLmdldCgkdCksRXI9SS5nZXQoJHQpLEFy''@;'; put 'put ''PUR3ZSgwLHRoaXMuX25vcm1hbGl6ZXIsMCxCdC5rZXlmcmFtZXMscHIsRXIpLFlyPXRoaXMuX2J1aWxkUGxheWVyKEJ0LEFyLGlyKTtpZihCdC5zdWJUaW1lbGluZSYmeSYmTmUuYWRkKCR0KSxEbil7Y29uc3QgX2k9bmV3IFloZShnLGosJHQpO19pLnNldFJlYWxQbGF5ZXIoWXIpLF9lLnB1''@;'; put 'put ''c2goX2kpfXJldHVybiBZcn0pO19lLmZvckVhY2goQnQ9PntmNCh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LEJ0LmVsZW1lbnQsW10pLnB1c2goQnQpLEJ0Lm9uRG9uZSgoKT0+ZnVuY3Rpb24gT0hlKGQsZyxoKXtsZXQgdj1kLmdldChnKTtpZih2KXtpZih2Lmxlbmd0aCl7Y29uc3Qg''@;'; put 'put ''eT12LmluZGV4T2YoaCk7di5zcGxpY2UoeSwxKX0wPT12Lmxlbmd0aCYmZC5kZWxldGUoZyl9cmV0dXJuIHZ9KHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsQnQuZWxlbWVudCxCdCkpfSksUmUuZm9yRWFjaChCdD0+X3AoQnQsVndlKSk7Y29uc3QgaHQ9RXcoS2UpO3JldHVybiBodC5v''@;'; put 'put ''bkRlc3Ryb3koKCk9PntSZS5mb3JFYWNoKEJ0PT55TyhCdCxWd2UpKSxDZyhjZSxoLnRvU3R5bGVzKX0pLE5lLmZvckVhY2goQnQ9PntmNCh5LEJ0LFtdKS5wdXNoKGh0KX0pLGh0fV9idWlsZFBsYXllcihnLGgsdil7cmV0dXJuIGgubGVuZ3RoPjA/dGhpcy5kcml2ZXIuYW5pbWF0ZShnLmVs''@;'; put 'put ''ZW1lbnQsaCxnLmR1cmF0aW9uLGcuZGVsYXksZy5lYXNpbmcsdik6bmV3IEJrKGcuZHVyYXRpb24sZy5kZWxheSl9fWNsYXNzIFloZXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5uYW1lc3BhY2VJZD1nLHRoaXMudHJpZ2dlck5hbWU9aCx0aGlzLmVsZW1lbnQ9dix0aGlzLl9wbGF5ZXI9bmV3''@;'; put 'put ''IEJrLHRoaXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMSx0aGlzLl9xdWV1ZWRDYWxsYmFja3M9bmV3IE1hcCx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLm1hcmtlZEZvckRlc3Ryb3k9ITEsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnF1ZXVlZD0hMCx0aGlzLnRvdGFsVGltZT0wfXNldFJlYWxQbGF5''@;'; put 'put ''ZXIoZyl7dGhpcy5fY29udGFpbnNSZWFsUGxheWVyfHwodGhpcy5fcGxheWVyPWcsdGhpcy5fcXVldWVkQ2FsbGJhY2tzLmZvckVhY2goKGgsdik9PntoLmZvckVhY2goeT0+U2hlKGcsdix2b2lkIDAseSkpfSksdGhpcy5fcXVldWVkQ2FsbGJhY2tzLmNsZWFyKCksdGhpcy5fY29udGFpbnNS''@;'; put 'put ''ZWFsUGxheWVyPSEwLHRoaXMub3ZlcnJpZGVUb3RhbFRpbWUoZy50b3RhbFRpbWUpLHRoaXMucXVldWVkPSExKX1nZXRSZWFsUGxheWVyKCl7cmV0dXJuIHRoaXMuX3BsYXllcn1vdmVycmlkZVRvdGFsVGltZShnKXt0aGlzLnRvdGFsVGltZT1nfXN5bmNQbGF5ZXJFdmVudHMoZyl7Y29uc3Qg''@;'; put 'put ''aD10aGlzLl9wbGF5ZXI7aC50cmlnZ2VyQ2FsbGJhY2smJmcub25TdGFydCgoKT0+aC50cmlnZ2VyQ2FsbGJhY2soInN0YXJ0IikpLGcub25Eb25lKCgpPT50aGlzLmZpbmlzaCgpKSxnLm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KCkpfV9xdWV1ZUV2ZW50KGcsaCl7ZjQodGhpcy5fcXVl''@;'; put 'put ''dWVkQ2FsbGJhY2tzLGcsW10pLnB1c2goaCl9b25Eb25lKGcpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkb25lIixnKSx0aGlzLl9wbGF5ZXIub25Eb25lKGcpfW9uU3RhcnQoZyl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoInN0YXJ0IixnKSx0aGlzLl9wbGF5ZXIu''@;'; put 'put ''b25TdGFydChnKX1vbkRlc3Ryb3koZyl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRlc3Ryb3kiLGcpLHRoaXMuX3BsYXllci5vbkRlc3Ryb3koZyl9aW5pdCgpe3RoaXMuX3BsYXllci5pbml0KCl9aGFzU3RhcnRlZCgpe3JldHVybiF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVy''@;'; put 'put ''Lmhhc1N0YXJ0ZWQoKX1wbGF5KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGxheSgpfXBhdXNlKCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGF1c2UoKX1yZXN0YXJ0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzdGFydCgpfWZpbmlzaCgpe3RoaXMuX3BsYXll''@;'; put 'put ''ci5maW5pc2goKX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5fcGxheWVyLmRlc3Ryb3koKX1yZXNldCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc2V0KCl9c2V0UG9zaXRpb24oZyl7dGhpcy5xdWV1ZWR8fHRoaXMuX3BsYXllci5zZXRQb3NpdGlvbihnKX1nZXRQ''@;'; put 'put ''b3NpdGlvbigpe3JldHVybiB0aGlzLnF1ZXVlZD8wOnRoaXMuX3BsYXllci5nZXRQb3NpdGlvbigpfXRyaWdnZXJDYWxsYmFjayhnKXtjb25zdCBoPXRoaXMuX3BsYXllcjtoLnRyaWdnZXJDYWxsYmFjayYmaC50cmlnZ2VyQ2FsbGJhY2soZyl9fWZ1bmN0aW9uIGpxKGQpe3JldHVybiBkJiYx''@;'; put 'put ''PT09ZC5ub2RlVHlwZX1mdW5jdGlvbiBuYmUoZCxnKXtjb25zdCBoPWQuc3R5bGUuZGlzcGxheTtyZXR1cm4gZC5zdHlsZS5kaXNwbGF5PW51bGwhPWc/Zzoibm9uZSIsaH1mdW5jdGlvbiByYmUoZCxnLGgsdix5KXtjb25zdCBDPVtdO2guZm9yRWFjaChjZT0+Qy5wdXNoKG5iZShjZSkpKTtj''@;'; put 'put ''b25zdCBJPVtdO3YuZm9yRWFjaCgoY2UsX2UpPT57Y29uc3QgUmU9bmV3IE1hcDtjZS5mb3JFYWNoKE5lPT57Y29uc3QgS2U9Zy5jb21wdXRlU3R5bGUoX2UsTmUseSk7UmUuc2V0KE5lLEtlKSwoIUtlfHwwPT1LZS5sZW5ndGgpJiYoX2VbYnBdPUlIZSxJLnB1c2goX2UpKX0pLGQuc2V0KF9l''@;'; put 'put ''LFJlKX0pO2xldCBqPTA7cmV0dXJuIGguZm9yRWFjaChjZT0+bmJlKGNlLENbaisrXSkpLEl9ZnVuY3Rpb24gaWJlKGQsZyl7Y29uc3QgaD1uZXcgTWFwO2lmKGQuZm9yRWFjaChqPT5oLnNldChqLFtdKSksMD09Zy5sZW5ndGgpcmV0dXJuIGg7Y29uc3QgeT1uZXcgU2V0KGcpLEM9bmV3IE1h''@;'; put 'put ''cDtmdW5jdGlvbiBJKGope2lmKCFqKXJldHVybiAxO2xldCBjZT1DLmdldChqKTtpZihjZSlyZXR1cm4gY2U7Y29uc3QgX2U9ai5wYXJlbnROb2RlO3JldHVybiBjZT1oLmhhcyhfZSk/X2U6eS5oYXMoX2UpPzE6SShfZSksQy5zZXQoaixjZSksY2V9cmV0dXJuIGcuZm9yRWFjaChqPT57Y29u''@;'; put 'put ''c3QgY2U9SShqKTsxIT09Y2UmJmguZ2V0KGNlKS5wdXNoKGopfSksaH1mdW5jdGlvbiBfcChkLGcpe3ZhciBoO251bGw9PT0oaD1kLmNsYXNzTGlzdCl8fHZvaWQgMD09PWh8fGguYWRkKGcpfWZ1bmN0aW9uIHlPKGQsZyl7dmFyIGg7bnVsbD09PShoPWQuY2xhc3NMaXN0KXx8dm9pZCAwPT09''@;'; put 'put ''aHx8aC5yZW1vdmUoZyl9ZnVuY3Rpb24gUEhlKGQsZyxoKXtFdyhoKS5vbkRvbmUoKCk9PmQucHJvY2Vzc0xlYXZlTm9kZShnKSl9ZnVuY3Rpb24gb2JlKGQsZyl7Zm9yKGxldCBoPTA7aDxkLmxlbmd0aDtoKyspe2NvbnN0IHY9ZFtoXTt2IGluc3RhbmNlb2YgUFg/b2JlKHYucGxheWVycyxn''@;'; put 'put ''KTpnLnB1c2godil9fWZ1bmN0aW9uIGFiZShkLGcsaCl7Y29uc3Qgdj1oLmdldChkKTtpZighdilyZXR1cm4hMTtsZXQgeT1nLmdldChkKTtyZXR1cm4geT92LmZvckVhY2goQz0+eS5hZGQoQykpOmcuc2V0KGQsdiksaC5kZWxldGUoZCksITB9Y2xhc3MgWnF7Y29uc3RydWN0b3IoZyxoLHYp''@;'; put 'put ''e3RoaXMuYm9keU5vZGU9Zyx0aGlzLl9kcml2ZXI9aCx0aGlzLl9ub3JtYWxpemVyPXYsdGhpcy5fdHJpZ2dlckNhY2hlPXt9LHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHksQyk9Pnt9LHRoaXMuX3RyYW5zaXRpb25FbmdpbmU9bmV3IExIZShnLGgsdiksdGhpcy5fdGltZWxpbmVFbmdpbmU9''@;'; put 'put ''bmV3IGtIZShnLGgsdiksdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5vblJlbW92YWxDb21wbGV0ZT0oeSxDKT0+dGhpcy5vblJlbW92YWxDb21wbGV0ZSh5LEMpfXJlZ2lzdGVyVHJpZ2dlcihnLGgsdix5LEMpe2NvbnN0IEk9ZysiLSIreTtsZXQgaj10aGlzLl90cmlnZ2VyQ2FjaGVbSV07aWYo''@;'; put 'put ''IWope2NvbnN0IGNlPVtdLFJlPVBoZSh0aGlzLl9kcml2ZXIsQyxjZSxbXSk7aWYoY2UubGVuZ3RoKXRocm93IGZ1bmN0aW9uIF9GZShkLGcpe3JldHVybiBuZXcgcXQoMzQwNCwhMSl9KCk7aj1mdW5jdGlvbiB3SGUoZCxnLGgpe3JldHVybiBuZXcgYkhlKGQsZyxoKX0oeSxSZSx0aGlzLl9u''@;'; put 'put ''b3JtYWxpemVyKSx0aGlzLl90cmlnZ2VyQ2FjaGVbSV09an10aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyVHJpZ2dlcihoLHksail9cmVnaXN0ZXIoZyxoKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyKGcsaCl9ZGVzdHJveShnLGgpe3RoaXMuX3RyYW5zaXRpb25Fbmdp''@;'; put 'put ''bmUuZGVzdHJveShnLGgpfW9uSW5zZXJ0KGcsaCx2LHkpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuaW5zZXJ0Tm9kZShnLGgsdix5KX1vblJlbW92ZShnLGgsdix5KXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlbW92ZU5vZGUoZyxoLHl8fCExLHYpfWRpc2FibGVBbmltYXRpb25zKGcsaCl7''@;'; put 'put ''dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5tYXJrRWxlbWVudEFzRGlzYWJsZWQoZyxoKX1wcm9jZXNzKGcsaCx2LHkpe2lmKCJAIj09di5jaGFyQXQoMCkpe2NvbnN0W0MsSV09THdlKHYpO3RoaXMuX3RpbWVsaW5lRW5naW5lLmNvbW1hbmQoQyxoLEkseSl9ZWxzZSB0aGlzLl90cmFuc2l0aW9u''@;'; put 'put ''RW5naW5lLnRyaWdnZXIoZyxoLHYseSl9bGlzdGVuKGcsaCx2LHksQyl7aWYoIkAiPT12LmNoYXJBdCgwKSl7Y29uc3RbSSxqXT1Md2Uodik7cmV0dXJuIHRoaXMuX3RpbWVsaW5lRW5naW5lLmxpc3RlbihJLGgsaixDKX1yZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5saXN0ZW4oZyxo''@;'; put 'put ''LHYseSxDKX1mbHVzaChnPS0xKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmZsdXNoKGcpfWdldCBwbGF5ZXJzKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUucGxheWVycy5jb25jYXQodGhpcy5fdGltZWxpbmVFbmdpbmUucGxheWVycyl9d2hlblJlbmRlcmluZ0RvbmUoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1sZXQgVkhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX2VsZW1lbnQ9aCx0aGlzLl9zdGFydFN0eWxlcz12LHRoaXMuX2VuZFN0eWxlcz15LHRoaXMuX3N0YXRlPTA7bGV0IEM9ZC5p''@;'; put 'put ''bml0aWFsU3R5bGVzQnlFbGVtZW50LmdldChoKTtDfHxkLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuc2V0KGgsQz1uZXcgTWFwKSx0aGlzLl9pbml0aWFsU3R5bGVzPUN9c3RhcnQoKXt0aGlzLl9zdGF0ZTwxJiYodGhpcy5fc3RhcnRTdHlsZXMmJkNnKHRoaXMuX2VsZW1lbnQsdGhpcy5fc3Rh''@;'; put 'put ''cnRTdHlsZXMsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fc3RhdGU9MSl9ZmluaXNoKCl7dGhpcy5zdGFydCgpLHRoaXMuX3N0YXRlPDImJihDZyh0aGlzLl9lbGVtZW50LHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcyYmKENnKHRoaXMuX2VsZW1lbnQsdGhpcy5fZW5k''@;'; put 'put ''U3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksdGhpcy5fc3RhdGU9MSl9ZGVzdHJveSgpe3RoaXMuZmluaXNoKCksdGhpcy5fc3RhdGU8MyYmKGQuaW5pdGlhbFN0eWxlc0J5RWxlbWVudC5kZWxldGUodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRTdHlsZXMmJihSUyh0aGlzLl9lbGVt''@;'; put 'put ''ZW50LHRoaXMuX3N0YXJ0U3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksdGhpcy5fZW5kU3R5bGVzJiYoUlModGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSxDZyh0aGlzLl9lbGVtZW50LHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0''@;'; put 'put ''YXRlPTMpfX1yZXR1cm4gZC5pbml0aWFsU3R5bGVzQnlFbGVtZW50PW5ldyBXZWFrTWFwLGR9KSgpO2Z1bmN0aW9uIFVoZShkKXtsZXQgZz1udWxsO3JldHVybiBkLmZvckVhY2goKGgsdik9PnsoZnVuY3Rpb24gakhlKGQpe3JldHVybiJkaXNwbGF5Ij09PWR8fCJwb3NpdGlvbiI9PT1kfSko''@;'; put 'put ''dikmJihnPWd8fG5ldyBNYXAsZy5zZXQodixoKSl9KSxnfWNsYXNzIGxiZXtjb25zdHJ1Y3RvcihnLGgsdix5KXt0aGlzLmVsZW1lbnQ9Zyx0aGlzLmtleWZyYW1lcz1oLHRoaXMub3B0aW9ucz12LHRoaXMuX3NwZWNpYWxTdHlsZXM9eSx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFy''@;'; put 'put ''dEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5faW5pdGlhbGl6ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb3JpZ2luYWxPbkRvbmVGbnM9W10sdGhpcy5fb3JpZ2luYWxPblN0YXJ0Rm5zPVtdLHRoaXMu''@;'; put 'put ''dGltZT0wLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy5jdXJyZW50U25hcHNob3Q9bmV3IE1hcCx0aGlzLl9kdXJhdGlvbj12LmR1cmF0aW9uLHRoaXMuX2RlbGF5PXYuZGVsYXl8fDAsdGhpcy50aW1lPXRoaXMuX2R1cmF0aW9uK3RoaXMuX2RlbGF5fV9vbkZpbmlzaCgpe3RoaXMuX2Zp''@;'; put 'put ''bmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuX3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpfV9idWlsZFBsYXllcigpe2lmKHRoaXMuX2lu''@;'; put 'put ''aXRpYWxpemVkKXJldHVybjt0aGlzLl9pbml0aWFsaXplZD0hMDtjb25zdCBnPXRoaXMua2V5ZnJhbWVzO3RoaXMuZG9tUGxheWVyPXRoaXMuX3RyaWdnZXJXZWJBbmltYXRpb24odGhpcy5lbGVtZW50LGcsdGhpcy5vcHRpb25zKSx0aGlzLl9maW5hbEtleWZyYW1lPWcubGVuZ3RoP2dbZy5s''@;'; put 'put ''ZW5ndGgtMV06bmV3IE1hcCx0aGlzLmRvbVBsYXllci5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2giLCgpPT50aGlzLl9vbkZpbmlzaCgpKX1fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl7dGhpcy5fZGVsYXk/dGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpOnRoaXMuZG9tUGxheWVyLnBh''@;'; put 'put ''dXNlKCl9X2NvbnZlcnRLZXlmcmFtZXNUb09iamVjdChnKXtjb25zdCBoPVtdO3JldHVybiBnLmZvckVhY2godj0+e2gucHVzaChPYmplY3QuZnJvbUVudHJpZXModikpfSksaH1fdHJpZ2dlcldlYkFuaW1hdGlvbihnLGgsdil7cmV0dXJuIGcuYW5pbWF0ZSh0aGlzLl9jb252ZXJ0S2V5ZnJh''@;'; put 'put ''bWVzVG9PYmplY3QoaCksdil9b25TdGFydChnKXt0aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMucHVzaChnKSx0aGlzLl9vblN0YXJ0Rm5zLnB1c2goZyl9b25Eb25lKGcpe3RoaXMuX29yaWdpbmFsT25Eb25lRm5zLnB1c2goZyksdGhpcy5fb25Eb25lRm5zLnB1c2goZyl9b25EZXN0cm95KGcp''@;'; put 'put ''e3RoaXMuX29uRGVzdHJveUZucy5wdXNoKGcpfXBsYXkoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydEZucy5mb3JFYWNoKGc9PmcoKSksdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9zdGFydGVkPSEwLHRoaXMuX3NwZWNpYWxTdHlsZXMm''@;'; put 'put ''JnRoaXMuX3NwZWNpYWxTdHlsZXMuc3RhcnQoKSksdGhpcy5kb21QbGF5ZXIucGxheSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIucGF1c2UoKX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgp''@;'; put 'put ''LHRoaXMuX29uRmluaXNoKCksdGhpcy5kb21QbGF5ZXIuZmluaXNoKCl9cmVzZXQoKXt0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fb25TdGFydEZucz10aGlzLl9vcmlnaW5hbE9u''@;'; put 'put ''U3RhcnRGbnMsdGhpcy5fb25Eb25lRm5zPXRoaXMuX29yaWdpbmFsT25Eb25lRm5zfV9yZXNldERvbVBsYXllclN0YXRlKCl7dGhpcy5kb21QbGF5ZXImJnRoaXMuZG9tUGxheWVyLmNhbmNlbCgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9aGFzU3RhcnRlZCgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9zdGFydGVkfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5f''@;'; put 'put ''b25EZXN0cm95Rm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXNldFBvc2l0aW9uKGcpe3ZvaWQgMD09PXRoaXMuZG9tUGxheWVyJiZ0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZT1nKnRoaXMudGltZX1nZXRQb3NpdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLmRvbVBsYXllci5jdXJyZW50VGltZS90aGlzLnRpbWV9Z2V0IHRvdGFsVGltZSgpe3JldHVybiB0aGlzLl9kZWxheSt0aGlzLl9kdXJhdGlvbn1iZWZvcmVEZXN0cm95KCl7Y29uc3QgZz1uZXcgTWFwO3RoaXMuaGFzU3RhcnRlZCgpJiZ0aGlzLl9maW5hbEtleWZyYW1lLmZvckVhY2go''@;'; put 'put ''KHYseSk9Pnsib2Zmc2V0IiE9PXkmJmcuc2V0KHksdGhpcy5fZmluaXNoZWQ/djpZd2UodGhpcy5lbGVtZW50LHkpKX0pLHRoaXMuY3VycmVudFNuYXBzaG90PWd9dHJpZ2dlckNhbGxiYWNrKGcpe2NvbnN0IGg9InN0YXJ0Ij09PWc/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7''@;'; put 'put ''aC5mb3JFYWNoKHY9PnYoKSksaC5sZW5ndGg9MH19Y2xhc3MgWkhle3ZhbGlkYXRlU3R5bGVQcm9wZXJ0eShnKXtyZXR1cm4hMH12YWxpZGF0ZUFuaW1hdGFibGVTdHlsZVByb3BlcnR5KGcpe3JldHVybiEwfW1hdGNoZXNFbGVtZW50KGcsaCl7cmV0dXJuITF9Y29udGFpbnNFbGVtZW50KGcs''@;'; put 'put ''aCl7cmV0dXJuIFB3ZShnLGgpfWdldFBhcmVudEVsZW1lbnQoZyl7cmV0dXJuIFRoZShnKX1xdWVyeShnLGgsdil7cmV0dXJuIEZ3ZShnLGgsdil9Y29tcHV0ZVN0eWxlKGcsaCx2KXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZylbaF19YW5pbWF0ZShnLGgsdix5LEMsST1bXSl7''@;'; put 'put ''Y29uc3QgY2U9e2R1cmF0aW9uOnYsZGVsYXk6eSxmaWxsOjA9PXk/ImJvdGgiOiJmb3J3YXJkcyJ9O0MmJihjZS5lYXNpbmc9Qyk7Y29uc3QgX2U9bmV3IE1hcCxSZT1JLmZpbHRlcihodD0+aHQgaW5zdGFuY2VvZiBsYmUpOyhmdW5jdGlvbiBZRmUoZCxnKXtyZXR1cm4gMD09PWR8fDA9PT1n''@;'; put 'put ''fSkodix5KSYmUmUuZm9yRWFjaChodD0+e2h0LmN1cnJlbnRTbmFwc2hvdC5mb3JFYWNoKChCdCwkdCk9Pl9lLnNldCgkdCxCdCkpfSk7bGV0IE5lPWZ1bmN0aW9uIFpGZShkKXtyZXR1cm4gZC5sZW5ndGg/ZFswXWluc3RhbmNlb2YgTWFwP2Q6ZC5tYXAoZz0+andlKGcpKTpbXX0oaCkubWFw''@;'; put 'put ''KGh0PT5UdyhodCkpO05lPWZ1bmN0aW9uIFVGZShkLGcsaCl7aWYoaC5zaXplJiZnLmxlbmd0aCl7bGV0IHY9Z1swXSx5PVtdO2lmKGguZm9yRWFjaCgoQyxJKT0+e3YuaGFzKEkpfHx5LnB1c2goSSksdi5zZXQoSSxDKX0pLHkubGVuZ3RoKWZvcihsZXQgQz0xO0M8Zy5sZW5ndGg7QysrKXts''@;'; put 'put ''ZXQgST1nW0NdO3kuZm9yRWFjaChqPT5JLnNldChqLFl3ZShkLGopKSl9fXJldHVybiBnfShnLE5lLF9lKTtjb25zdCBLZT1mdW5jdGlvbiBOSGUoZCxnKXtsZXQgaD1udWxsLHY9bnVsbDtyZXR1cm4gQXJyYXkuaXNBcnJheShnKSYmZy5sZW5ndGg/KGg9VWhlKGdbMF0pLGcubGVuZ3RoPjEm''@;'; put 'put ''Jih2PVVoZShnW2cubGVuZ3RoLTFdKSkpOmcgaW5zdGFuY2VvZiBNYXAmJihoPVVoZShnKSksaHx8dj9uZXcgVkhlKGQsaCx2KTpudWxsfShnLE5lKTtyZXR1cm4gbmV3IGxiZShnLE5lLGNlLEtlKX19bGV0IHpIZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgTlZ7Y29uc3RydWN0b3IoaCx2KXtz''@;'; put 'put ''dXBlcigpLHRoaXMuX25leHRBbmltYXRpb25JZD0wLHRoaXMuX3JlbmRlcmVyPWguY3JlYXRlUmVuZGVyZXIodi5ib2R5LHtpZDoiMCIsZW5jYXBzdWxhdGlvbjokcy5Ob25lLHN0eWxlczpbXSxkYXRhOnthbmltYXRpb246W119fSl9YnVpbGQoaCl7Y29uc3Qgdj10aGlzLl9uZXh0QW5pbWF0''@;'; put 'put ''aW9uSWQudG9TdHJpbmcoKTt0aGlzLl9uZXh0QW5pbWF0aW9uSWQrKztjb25zdCB5PUFycmF5LmlzQXJyYXkoaCk/QlgoaCk6aDtyZXR1cm4gc2JlKHRoaXMuX3JlbmRlcmVyLG51bGwsdiwicmVnaXN0ZXIiLFt5XSksbmV3IEdIZSh2LHRoaXMuX3JlbmRlcmVyKX19cmV0dXJuIGQuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoRWkoYTYpLEVpKHVzKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgR0hlIGV4dGVuZHMgY2xhc3MgUlh7fXtjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKCksdGhpcy5faWQ9''@;'; put 'put ''Zyx0aGlzLl9yZW5kZXJlcj1ofWNyZWF0ZShnLGgpe3JldHVybiBuZXcgV0hlKHRoaXMuX2lkLGcsaHx8e30sdGhpcy5fcmVuZGVyZXIpfX1jbGFzcyBXSGV7Y29uc3RydWN0b3IoZyxoLHYseSl7dGhpcy5pZD1nLHRoaXMuZWxlbWVudD1oLHRoaXMuX3JlbmRlcmVyPXksdGhpcy5wYXJlbnRQ''@;'; put 'put ''bGF5ZXI9bnVsbCx0aGlzLl9zdGFydGVkPSExLHRoaXMudG90YWxUaW1lPTAsdGhpcy5fY29tbWFuZCgiY3JlYXRlIix2KX1fbGlzdGVuKGcsaCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnQsYEBAJHt0aGlzLmlkfToke2d9YCxoKX1fY29tbWFuZChnLC4uLmgp''@;'; put 'put ''e3JldHVybiBzYmUodGhpcy5fcmVuZGVyZXIsdGhpcy5lbGVtZW50LHRoaXMuaWQsZyxoKX1vbkRvbmUoZyl7dGhpcy5fbGlzdGVuKCJkb25lIixnKX1vblN0YXJ0KGcpe3RoaXMuX2xpc3Rlbigic3RhcnQiLGcpfW9uRGVzdHJveShnKXt0aGlzLl9saXN0ZW4oImRlc3Ryb3kiLGcpfWluaXQo''@;'; put 'put ''KXt0aGlzLl9jb21tYW5kKCJpbml0Iil9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLl9jb21tYW5kKCJwbGF5IiksdGhpcy5fc3RhcnRlZD0hMH1wYXVzZSgpe3RoaXMuX2NvbW1hbmQoInBhdXNlIil9cmVzdGFydCgpe3RoaXMuX2NvbW1hbmQoInJlc3Rh''@;'; put 'put ''cnQiKX1maW5pc2goKXt0aGlzLl9jb21tYW5kKCJmaW5pc2giKX1kZXN0cm95KCl7dGhpcy5fY29tbWFuZCgiZGVzdHJveSIpfXJlc2V0KCl7dGhpcy5fY29tbWFuZCgicmVzZXQiKSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKGcpe3RoaXMuX2NvbW1hbmQoInNldFBvc2l0aW9uIixn''@;'; put 'put ''KX1nZXRQb3NpdGlvbigpe3ZhciBnLGg7cmV0dXJuIG51bGwhPT0oaD1udWxsPT09KGc9dGhpcy5fcmVuZGVyZXIuZW5naW5lLnBsYXllcnNbK3RoaXMuaWRdKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5nZXRQb3NpdGlvbigpKSYmdm9pZCAwIT09aD9oOjB9fWZ1bmN0aW9uIHNiZShkLGcsaCx2''@;'; put 'put ''LHkpe3JldHVybiBkLnNldFByb3BlcnR5KGcsYEBAJHtofToke3Z9YCx5KX1jb25zdCB1YmU9IkAuZGlzYWJsZWQiO2xldCBZSGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5kZWxlZ2F0ZT1oLHRoaXMuZW5naW5lPXYsdGhpcy5fem9uZT15LHRoaXMuX2N1cnJlbnRJ''@;'; put 'put ''ZD0wLHRoaXMuX21pY3JvdGFza0lkPTEsdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdLHRoaXMuX3JlbmRlcmVyQ2FjaGU9bmV3IE1hcCx0aGlzLl9jZFJlY3VyRGVwdGg9MCx0aGlzLnByb21pc2U9UHJvbWlzZS5yZXNvbHZlKDApLHYub25SZW1vdmFsQ29tcGxldGU9KEMsSSk9''@;'; put 'put ''Pntjb25zdCBqPW51bGw9PUk/dm9pZCAwOkkucGFyZW50Tm9kZShDKTtqJiZJLnJlbW92ZUNoaWxkKGosQyl9fWNyZWF0ZVJlbmRlcmVyKGgsdil7Y29uc3QgQz10aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKGgsdik7aWYoIShoJiZ2JiZ2LmRhdGEmJnYuZGF0YS5hbmltYXRpb24pKXts''@;'; put 'put ''ZXQgUmU9dGhpcy5fcmVuZGVyZXJDYWNoZS5nZXQoQyk7cmV0dXJuIFJlfHwoUmU9bmV3IGNiZSgiIixDLHRoaXMuZW5naW5lKSx0aGlzLl9yZW5kZXJlckNhY2hlLnNldChDLFJlKSksUmV9Y29uc3QgST12LmlkLGo9di5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsr''@;'; put 'put ''LHRoaXMuZW5naW5lLnJlZ2lzdGVyKGosaCk7Y29uc3QgY2U9UmU9PntBcnJheS5pc0FycmF5KFJlKT9SZS5mb3JFYWNoKGNlKTp0aGlzLmVuZ2luZS5yZWdpc3RlclRyaWdnZXIoSSxqLGgsUmUubmFtZSxSZSl9O3JldHVybiB2LmRhdGEuYW5pbWF0aW9uLmZvckVhY2goY2UpLG5ldyBVSGUo''@;'; put 'put ''dGhpcyxqLEMsdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3RoaXMucHJvbWlzZS50aGVuKCgpPT57dGhpcy5fbWljcm90YXNrSWQrK30pfXNjaGVk''@;'; put 'put ''dWxlTGlzdGVuZXJDYWxsYmFjayhoLHYseSl7aD49MCYmaDx0aGlzLl9taWNyb3Rhc2tJZD90aGlzLl96b25lLnJ1bigoKT0+dih5KSk6KDA9PXRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5sZW5ndGgmJlByb21pc2UucmVzb2x2ZShudWxsKS50aGVuKCgpPT57dGhpcy5fem9uZS5y''@;'; put 'put ''dW4oKCk9Pnt0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIuZm9yRWFjaChDPT57Y29uc3RbSSxqXT1DO0koail9KSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W119KX0pLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5wdXNoKFt2LHldKSl9ZW5kKCl7dGhpcy5f''@;'; put 'put ''Y2RSZWN1ckRlcHRoLS0sMD09dGhpcy5fY2RSZWN1ckRlcHRoJiZ0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fc2NoZWR1bGVDb3VudFRhc2soKSx0aGlzLmVuZ2luZS5mbHVzaCh0aGlzLl9taWNyb3Rhc2tJZCl9KSx0aGlzLmRlbGVnYXRlLmVuZCYmdGhpcy5kZWxl''@;'; put 'put ''Z2F0ZS5lbmQoKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLmVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShhNiksRWkoWnEpLEVpKGRsKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46''@;'; put 'put ''ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgY2Jle2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLm5hbWVzcGFjZUlkPWcsdGhpcy5kZWxlZ2F0ZT1oLHRoaXMuZW5naW5lPXYsdGhpcy5kZXN0cm95Tm9kZT10aGlzLmRlbGVnYXRlLmRlc3Ryb3lOb2RlP3k9PmguZGVzdHJveU5v''@;'; put 'put ''ZGUoeSk6bnVsbH1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9ZGVzdHJveSgpe3RoaXMuZW5naW5lLmRlc3Ryb3kodGhpcy5uYW1lc3BhY2VJZCx0aGlzLmRlbGVnYXRlKSx0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX1jcmVhdGVFbGVtZW50KGcsaCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''ZGVsZWdhdGUuY3JlYXRlRWxlbWVudChnLGgpfWNyZWF0ZUNvbW1lbnQoZyl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudChnKX1jcmVhdGVUZXh0KGcpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQoZyl9YXBwZW5kQ2hpbGQoZyxoKXt0aGlzLmRlbGVnYXRlLmFw''@;'; put 'put ''cGVuZENoaWxkKGcsaCksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxoLGcsITEpfWluc2VydEJlZm9yZShnLGgsdix5PSEwKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZShnLGgsdiksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxoLGcseSl9''@;'; put 'put ''cmVtb3ZlQ2hpbGQoZyxoLHYpe3RoaXMuZW5naW5lLm9uUmVtb3ZlKHRoaXMubmFtZXNwYWNlSWQsaCx0aGlzLmRlbGVnYXRlLHYpfXNlbGVjdFJvb3RFbGVtZW50KGcsaCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQoZyxoKX1wYXJlbnROb2RlKGcpe3JldHVybiB0''@;'; put 'put ''aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUoZyl9bmV4dFNpYmxpbmcoZyl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcoZyl9c2V0QXR0cmlidXRlKGcsaCx2LHkpe3RoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKGcsaCx2LHkpfXJlbW92ZUF0dHJpYnV0ZShnLGgsdil7dGhpcy5k''@;'; put 'put ''ZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUoZyxoLHYpfWFkZENsYXNzKGcsaCl7dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyhnLGgpfXJlbW92ZUNsYXNzKGcsaCl7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcyhnLGgpfXNldFN0eWxlKGcsaCx2LHkpe3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUoZyxo''@;'; put 'put ''LHYseSl9cmVtb3ZlU3R5bGUoZyxoLHYpe3RoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUoZyxoLHYpfXNldFByb3BlcnR5KGcsaCx2KXsiQCI9PWguY2hhckF0KDApJiZoPT11YmU/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyhnLCEhdik6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eShnLGgsdil9''@;'; put 'put ''c2V0VmFsdWUoZyxoKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKGcsaCl9bGlzdGVuKGcsaCx2KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4oZyxoLHYpfWRpc2FibGVBbmltYXRpb25zKGcsaCl7dGhpcy5lbmdpbmUuZGlzYWJsZUFuaW1hdGlvbnMoZyxoKX19Y2xhc3MgVUhlIGV4dGVu''@;'; put 'put ''ZHMgY2Jle2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGgsdix5KSx0aGlzLmZhY3Rvcnk9Zyx0aGlzLm5hbWVzcGFjZUlkPWh9c2V0UHJvcGVydHkoZyxoLHYpeyJAIj09aC5jaGFyQXQoMCk/Ii4iPT1oLmNoYXJBdCgxKSYmaD09dWJlP3RoaXMuZGlzYWJsZUFuaW1hdGlvbnMoZyx2PXZv''@;'; put 'put ''aWQgMD09PXZ8fCEhdik6dGhpcy5lbmdpbmUucHJvY2Vzcyh0aGlzLm5hbWVzcGFjZUlkLGcsaC5zbGljZSgxKSx2KTp0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KGcsaCx2KX1saXN0ZW4oZyxoLHYpe2lmKCJAIj09aC5jaGFyQXQoMCkpe2NvbnN0IHk9ZnVuY3Rpb24gUUhlKGQpe3N3aXRj''@;'; put 'put ''aChkKXtjYXNlImJvZHkiOnJldHVybiBkb2N1bWVudC5ib2R5O2Nhc2UiZG9jdW1lbnQiOnJldHVybiBkb2N1bWVudDtjYXNlIndpbmRvdyI6cmV0dXJuIHdpbmRvdztkZWZhdWx0OnJldHVybiBkfX0oZyk7bGV0IEM9aC5zbGljZSgxKSxJPSIiO3JldHVybiJAIiE9Qy5jaGFyQXQoMCkmJihb''@;'; put 'put ''QyxJXT1mdW5jdGlvbiBKSGUoZCl7Y29uc3QgZz1kLmluZGV4T2YoIi4iKTtyZXR1cm5bZC5zdWJzdHJpbmcoMCxnKSxkLnNsaWNlKGcrMSldfShDKSksdGhpcy5lbmdpbmUubGlzdGVuKHRoaXMubmFtZXNwYWNlSWQseSxDLEksaj0+e3RoaXMuZmFjdG9yeS5zY2hlZHVsZUxpc3RlbmVyQ2Fs''@;'; put 'put ''bGJhY2soai5fZGF0YXx8LTEsdixqKX0pfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihnLGgsdil9fWxldCBYSGU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFpxe2NvbnN0cnVjdG9yKGgsdix5LEMpe3N1cGVyKGguYm9keSx2LHkpfW5nT25EZXN0cm95KCl7dGhpcy5mbHVzaCgpfX1yZXR1''@;'; put 'put ''cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaSh1cyksRWkoSWhlKSxFaShqaGUpLEVpKHlDKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgZmJlPVt7cHJvdmlkZTpOVix1c2VDbGFzczp6SGV9''@;'; put 'put ''LHtwcm92aWRlOmpoZSx1c2VGYWN0b3J5OmZ1bmN0aW9uIEtIZSgpe3JldHVybiBuZXcgbUhlfX0se3Byb3ZpZGU6WnEsdXNlQ2xhc3M6WEhlfSx7cHJvdmlkZTphNix1c2VGYWN0b3J5OmZ1bmN0aW9uICRIZShkLGcsaCl7cmV0dXJuIG5ldyBZSGUoZCxnLGgpfSxkZXBzOlt2SSxacSxkbF19''@;'; put 'put ''XSxRaGU9W3twcm92aWRlOkloZSx1c2VGYWN0b3J5OigpPT5uZXcgWkhlfSx7cHJvdmlkZTpKRyx1c2VWYWx1ZToiQnJvd3NlckFuaW1hdGlvbnMifSwuLi5mYmVdLGhiZT1be3Byb3ZpZGU6SWhlLHVzZUNsYXNzOkh3ZX0se3Byb3ZpZGU6SkcsdXNlVmFsdWU6Ik5vb3BBbmltYXRpb25zIn0s''@;'; put 'put ''Li4uZmJlXTtsZXQgcUhlPSgoKT0+e2NsYXNzIGR7c3RhdGljIHdpdGhDb25maWcoaCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOmguZGlzYWJsZUFuaW1hdGlvbnM/aGJlOlFoZX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3''@;'; put 'put ''NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe3Byb3ZpZGVyczpRaGUsaW1wb3J0czpbc1ldfSksZH0pKCksZU5lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLm9wZW49ITF9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxk''@;'; put 'put ''Llx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJuZy1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImRp''@;'; put 'put ''diIsMCkoMSwicCIpLFd0KDIsIlRoaXMgaXMgYSBwYWdlIHRvIGhlbHAgZGVtb25zdHJhdGUgcm91dGluZy4iKSxpdCgpKCkpfX0pLGR9KSgpO2NvbnN0IHROZT1bInNpZGViYXJOYXYiXTtmdW5jdGlvbiBuTmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJhIiwxOCksWm4oImNs''@;'; put 'put ''aWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLm5hdmlnYXRlVG9WaWV3ZXIoKSl9KSxXdCgxLCJEYXRhIiksaXQoKX19ZnVuY3Rpb24gck5lKGQsZyl7MSZkJiYodHQoMCwiYSIsMTkpLFd0KDEsIkxpbmVhZ2UiKSxpdCgpKX1mdW5jdGlvbiBpTmUoZCxnKXsxJmQmJih0dCgw''@;'; put 'put ''LCJhIiwyMCksV3QoMSwiTWV0YWRhdGEiKSxpdCgpKX1mdW5jdGlvbiBvTmUoZCxnKXsxJmQmJih0dCgwLCJhIiwyMSksV3QoMSwiIFVzZXJzIiksaXQoKSl9ZnVuY3Rpb24gYU5lKGQsZyl7MSZkJiYodHQoMCwiYSIsMjIpLFd0KDEsIlN1Ym1pdHRlZCIpLGl0KCkpfWZ1bmN0aW9uIGxOZShk''@;'; put 'put ''LGcpezEmZCYmKHR0KDAsImEiLDIzKSxXdCgxLCJUbyBBcHByb3ZlIiksaXQoKSl9ZnVuY3Rpb24gc05lKGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLWRyb3Bkb3duLW1lbnUiKSxubigxLG5OZSwyLDAsImEiLDEyKSxubigyLHJOZSwyLDAsImEiLDEzKSxubigzLGlOZSwyLDAsImEiLDE0KSxu''@;'; put 'put ''big0LG9OZSwyLDAsImEiLDE1KSxubig1LGFOZSwyLDAsImEiLDE2KSxubig2LGxOZSwyLDAsImEiLDE3KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nSWYiLGguaXNNYWluUm91dGUoInZpZXciKSksc3QoMSkseHQoIm5nSWYiLGguaXNNYWluUm91dGUoInZpZXciKSYm''@;'; put 'put ''IlNBUzkiPT09aC5zZXJ2ZXJUeXBlKSxzdCgxKSx4dCgibmdJZiIsaC5pc01haW5Sb3V0ZSgidmlldyIpJiYiU0FTOSI9PT1oLnNlcnZlclR5cGUpLHN0KDEpLHh0KCJuZ0lmIixoLmlzTWFpblJvdXRlKCJ2aWV3IikpLHN0KDEpLHh0KCJuZ0lmIixoLmlzTWFpblJvdXRlKCJhcHByb3ZlIikp''@;'; put 'put ''LHN0KDEpLHh0KCJuZ0lmIixoLmlzTWFpblJvdXRlKCJhcHByb3ZlIikpfX1mdW5jdGlvbiB1TmUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDgpKDEsImNsci1kcm9wZG93biIpKDIsImJ1dHRvbiIsOSksV3QoMyksYnIoNCwiY2xyLWljb24iLDEwKSxpdCgpLG5uKDUsc05lLDcsNiwiY2xy''@;'; put 'put ''LWRyb3Bkb3duLW1lbnUiLDExKSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDMpLFVpKCIgIixoLmdldFN1YlBhZ2UoKSwiICIpfX1mdW5jdGlvbiBjTmUoZCxnKXsxJmQmJmJyKDAsImNsci10YWItY29udGVudCIpfWZ1bmN0aW9uIGZOZShkLGcpezEmZCYmYnIoMCwiY2xyLXRhYi1j''@;'; put 'put ''b250ZW50Iil9Y29uc3QgaE5lPWZ1bmN0aW9uKCl7cmV0dXJuWyIvdmlldy91c2VybmF2L3JvbGVzIl19O2Z1bmN0aW9uIGROZShkLGcpe2lmKDEmZCYmKHR0KDAsImNsci10YWIiKSgxLCJidXR0b24iLDI1KSgyLCJwIiwyNiksYnIoMywiY2xyLWljb24iLDMxKSxXdCg0LCIgUm9sZXMgIiks''@;'; put 'put ''aXQoKSgpLG5uKDUsZk5lLDEsMCwiY2xyLXRhYi1jb250ZW50IiwyOSksaXQoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDEpLHh0KCJyb3V0ZXJMaW5rIixscygyLGhOZSkpLHN0KDQpLHh0KCJjbHJJZkFjdGl2ZSIsaC5pc01haW5Sb3V0ZSgiL3ZpZXcvdXNlcm5hdi9yb2xlcyIpKX19Y29u''@;'; put 'put ''c3QgcE5lPWZ1bmN0aW9uKCl7cmV0dXJuWyIvdmlldy91c2VybmF2L3VzZXJzIl19LGdOZT1mdW5jdGlvbigpe3JldHVyblsiL3ZpZXcvdXNlcm5hdi9ncm91cHMiXX07ZnVuY3Rpb24gbU5lKGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLXRhYnMiLDI0KSgxLCJjbHItdGFiIikoMiwiYnV0dG9u''@;'; put 'put ''IiwyNSkoMywicCIsMjYpLGJyKDQsImNsci1pY29uIiwyNyksV3QoNSwiIFVzZXJzIiksaXQoKSgpLGJyKDYsImNsci10YWItY29udGVudCIpLGl0KCksdHQoNywiY2xyLXRhYiIpKDgsImJ1dHRvbiIsMjUpKDksInAiLDI2KSxicigxMCwiY2xyLWljb24iLDI4KSxXdCgxMSwiIEdyb3VwcyIp''@;'; put 'put ''LGl0KCkoKSxubigxMixjTmUsMSwwLCJjbHItdGFiLWNvbnRlbnQiLDI5KSxpdCgpLG5uKDEzLGROZSw2LDMsImNsci10YWIiLDMwKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgyKSx4dCgicm91dGVyTGluayIsbHMoNCxwTmUpKSxzdCg2KSx4dCgicm91dGVyTGluayIsbHMoNSxnTmUp''@;'; put 'put ''KSxzdCg0KSx4dCgiY2xySWZBY3RpdmUiLGguaXNNYWluUm91dGUoIi92aWV3L3VzZXJuYXYvZ3JvdXBzIikpLHN0KDEpLHh0KCJuZ0lmIiwiU0FTOSI9PT1oLnNlcnZlclR5cGUpfX1mdW5jdGlvbiB2TmUoZCxnKXsxJmQmJih0dCgwLCJwIiwzMiksV3QoMSwiRWRpdCIpLGl0KCkpfWNvbnN0''@;'; put 'put ''IEFOZT1bIioiXTtsZXQgUFM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5fcm91dGVyPWgsdGhpcy5ldmVudFNlcnZpY2U9dix0aGlzLl9zYXNTZXJ2aWNlPXksdGhpcy5zY3JvbGxlZFRvQm90dG9tPW5ldyBmbix0aGlzLnNpZGViYXJPcGVuPSEwLHRoaXMuc2lkZWJh''@;'; put 'put ''cldpZHRoPW51bGwsdGhpcy5zaWRlYmFyTWF4V2lkdGg9bnVsbCx0aGlzLnJlc2l6aW5nPSExLHRoaXMuc2FzanNDb25maWc9bmV3IFFkLlNBU2pzQ29uZmlnLHRoaXMuc2FzanNDb25maWc9dGhpcy5fc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLHRoaXMuc2VydmVyVHlwZT10aGlzLl9z''@;'; put 'put ''YXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKX1uZ09uSW5pdCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9uU2lkZWJhclRvZ2dsZS5zdWJzY3JpYmUoaD0+e3RoaXMuc2lkZWJhck9wZW49aD9oLm9wZW46IXRoaXMuc2lkZWJhck9wZW4sdGhpcy5ldmVudFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVz''@;'; put 'put ''aXplIil9KX1vblRyZWVTY3JvbGwoaCl7bGV0IHY9aC50YXJnZXQ7di5zY3JvbGxUb3A+PXYuc2Nyb2xsSGVpZ2h0LXYub2Zmc2V0SGVpZ2h0LTEwJiZ0aGlzLnNjcm9sbGVkVG9Cb3R0b20uZW1pdCgpfWlzTWFpblJvdXRlKGgpe3JldHVybiB0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKGgp''@;'; put 'put ''fWdldFN1YlBhZ2UoKXtyZXR1cm4gdGhpcy5fcm91dGVyLnVybC5zcGxpdCgiLyIpWzJdfW5hdmlnYXRlVG9WaWV3ZXIoKXtyaS52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0iIix0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfXJlc2l6ZVN0YXJ0KCl7dGhpcy5yZXNp''@;'; put 'put ''emluZz0hMCxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLnN0eWxlLmNzc1RleHQ9InVzZXItc2VsZWN0OiBub25lIn1yZXNpemVFbmQoKXt0aGlzLnJlc2l6aW5nPSExLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uc3R5bGUuY3NzVGV4''@;'; put 'put ''dD0iIn1vbk1vdXNlTW92ZShoKXtpZih0aGlzLnJlc2l6aW5nKXt0aGlzLnNpZGViYXJXaWR0aD1oLmNsaWVudFg7bGV0IHY9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibmF2LXRyZWUiKVswXTt0aGlzLnNpZGViYXJXaWR0aCYmdGhpcy5pc092ZXJmbG93bih2KSYmKHRoaXMu''@;'; put 'put ''c2lkZWJhck1heFdpZHRoPXRoaXMuc2lkZWJhcldpZHRoPj0zNzU/dGhpcy5zaWRlYmFyV2lkdGgrMTA6dGhpcy5zaWRlYmFyTWF4V2lkdGgpfX1vbk1vdXNlVXAoaCl7dGhpcy5yZXNpemluZyYmdGhpcy5yZXNpemVFbmQoKX1pc092ZXJmbG93bihoKXtyZXR1cm4gaC5zY3JvbGxXaWR0aD5o''@;'; put 'put ''LmNsaWVudFdpZHRofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChFbCksS3QobXUpLEt0KGwwKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1zaWRlYmFyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEm''@;'; put 'put ''aCYmZzAodE5lLDUpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuc2lkZWJhck5hdj15LmZpcnN0KX19LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oIm1vdXNlbW92ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25Nb3VzZU1vdmUoQyl9LDAsczYpKCJtb3VzZXVwIixmdW5j''@;'; put 'put ''dGlvbihDKXtyZXR1cm4gdi5vbk1vdXNlVXAoQyl9LCExLHM2KX0sb3V0cHV0czp7c2Nyb2xsZWRUb0JvdHRvbToic2Nyb2xsZWRUb0JvdHRvbSJ9LG5nQ29udGVudFNlbGVjdG9yczpBTmUsZGVjbHM6OSx2YXJzOjEzLGNvbnN0czpbWyJpZCIsInNpZGViYXJOYXYiXSxbInNpZGViYXJOYXYi''@;'; put 'put ''LCIiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgc3ViLWRyb3Bkb3duIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInAtMTAiLDQsIm5nSWYiXSxbImNsYXNzIiwicGFnZS10aXRsZSIsNCwibmdJZiJdLFsxLCJuYXYtZGl2aWRlciJdLFsxLCJuYXYtdHJlZSIsMywic2Ny''@;'; put 'put ''b2xsIl0sWzEsInJlc2l6ZS1oYW5kbGUiLDMsIm1vdXNlZG93biJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwic3ViLWRyb3Bkb3duIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImRyb3Bkb3duLXRvZ2dsZSIsImJ0biIsImJ0bi1saW5rIl0sWyJzaGFwZSIs''@;'; put 'put ''ImNhcmV0IGRvd24iXSxbNCwiY2xySWZPcGVuIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L2xpbmVhZ2UiLCJyb3V0ZXJM''@;'; put 'put ''aW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvbWV0YWRhdGEiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3Zp''@;'; put 'put ''ZXcvdXNlcm5hdiIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvYXBwcm92ZS9zdWJtaXR0ZWQiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxp''@;'; put 'put ''bmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2FwcHJvdmUvdG9hcHByb3ZlIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsNCwibmdJZiJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsMywiY2xpY2siXSxbImNsclZlcnRpY2FsTmF2TGluayIs''@;'; put 'put ''IiIsInJvdXRlckxpbmsiLCIvdmlldy9saW5lYWdlIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L21ldGFkYXRhIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5r''@;'; put 'put ''IiwiIiwicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2FwcHJvdmUvc3VibWl0dGVkIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxO''@;'; put 'put ''YXZMaW5rIiwiIiwicm91dGVyTGluayIsIi9hcHByb3ZlL3RvYXBwcm92ZSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbMSwicC0xMCJdLFsiY2xyVGFiTGluayIsIiIsMSwidXNlci1uYXYtYnRuIiwzLCJyb3V0ZXJMaW5rIl0sWzEsInplcm8tbWFyZ2luIl0sWyJzaGFwZSIsInVz''@;'; put 'put ''ZXIiXSxbInNoYXBlIiwidXNlcnMiXSxbNCwiY2xySWZBY3RpdmUiXSxbNCwibmdJZiJdLFsic2hhcGUiLCJibG9ja3MtZ3JvdXAiXSxbMSwicGFnZS10aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksdHQoMCwiY2xyLXZlcnRpY2FsLW5hdiIsMCwxKSxubigyLHVO''@;'; put 'put ''ZSw2LDEsImRpdiIsMiksbm4oMyxtTmUsMTQsNiwiY2xyLXRhYnMiLDMpLG5uKDQsdk5lLDIsMCwicCIsNCksYnIoNSwiZGl2Iiw1KSx0dCg2LCJkaXYiLDYpLFpuKCJzY3JvbGwiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uVHJlZVNjcm9sbChDKX0pLFZpKDcpLGl0KCksdHQoOCwic3BhbiIs''@;'; put 'put ''NyksWm4oIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZXNpemVTdGFydCgpfSksaXQoKSgpKSwyJmgmJihJZCgid2lkdGgiLHYuc2lkZWJhcldpZHRoLCJweCIpKCJtYXgtd2lkdGgiLHYuc2lkZWJhck1heFdpZHRoLCJweCIpLEhpKCJjbG9zZWQiLCF2LnNpZGViYXJPcGVuKSgi''@;'; put 'put ''cmVzaXppbmciLHYucmVzaXppbmcpLHN0KDIpLHh0KCJuZ0lmIix2LmlzTWFpblJvdXRlKCJ2aWV3IikpLHN0KDEpLHh0KCJuZ0lmIix2LmlzTWFpblJvdXRlKCJ2aWV3L3VzZXJuYXYiKSksc3QoMSkseHQoIm5nSWYiLHYuaXNNYWluUm91dGUoImhvbWUiKSksc3QoNCksSGkoInJlc2l6aW5n''@;'; put 'put ''Iix2LnJlc2l6aW5nKSl9LGRlcGVuZGVuY2llczpbQm8sRzIsQ1oseXcscE8sbU8selosZ08sZE8salosc3dlLHV3ZSxNdixEUyxMUyxZNixPNyxFeV0sc3R5bGVzOlsiY2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjcycHg7bWluLXdpZHRoOjI3MnB4O2hlaWdo''@;'; put 'put ''dDoxMDAlO21heC13aWR0aDozNzVweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMCA1cHggIzAwMDAwMDFmO2JhY2tncm91bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnR9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV0gICAuc3VuLWRyb3Bkb3duW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXttaW4taGVpZ2h0OjM2cHh9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LXRyZWVbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93LXk6YXV0b31jbHItdmVydGljYWwtbmF2LmNsb3NlZFtfbmdjb250ZW50LSVDT01QJV17bWFy''@;'; put 'put ''Z2luLWxlZnQ6LTI3MnB4fWNsci12ZXJ0aWNhbC1uYXZbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2l6ZS1oYW5kbGVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0Oi0zcHg7Ym9yZGVyLXJpZ2h0OjRweCBzb2xpZCAjODBiNDQxO2N1''@;'; put 'put ''cnNvcjpjb2wtcmVzaXplO29wYWNpdHk6MDt0cmFuc2l0aW9uOmFsbCAuMXMgZWFzZS1pbi1vdXR9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV0gICAucmVzaXplLWhhbmRsZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNX1jbHItdmVydGljYWwtbmF2W19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5yZXNpemUtaGFuZGxlLnJlc2l6aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9Y2xyLXZlcnRpY2FsLW5hdi5yZXNpemluZ1tfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0ubmF2LWRpdmlkZXJbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDM7bWFyZ2luLWJvdHRvbTowfS5wYWdlLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDtmb250LXNpemU6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uemVyby1tYXJnaW5bX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde21hcmdpbjowfS51c2VyLW5hdi1idG5bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MCAycHh9I3NpZGViYXJOYXZbX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6MjAwfUBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCl7I3NpZGViYXJOYXZbX25nY29udGVudC0lQ09NUCVde3Bvc2l0''@;'; put 'put ''aW9uOmFic29sdXRlO2JvdHRvbTowO3RvcDowfX0iXX0pLGR9KSgpO2Z1bmN0aW9uIHlOZShkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDkpfWZ1bmN0aW9uIHdOZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pY29uIiwxMCksWm4oImNsaWNrIixmdW5jdGlvbigpe2Eo''@;'; put 'put ''aCk7Y29uc3QgeT1VdCgyKTtyZXR1cm4geS5saWJyYXJpZXNTZWFyY2g9IiIsYnQoeS5saWJyYXJ5T25GaWx0ZXIoKSl9KSxpdCgpfX1mdW5jdGlvbiBiTmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwzKSgxLCJkaXYiLDQpKDIsImlucHV0Iiw1LDYp''@;'; put 'put ''LFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLmxpYnJhcmllc1NlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmxpYnJhcnlPbkZpbHRlcigpKX0pLGl0KCksbm4oNCx5TmUsMSwwLCJjbHItaWNvbiIsNyks''@;'; put 'put ''bm4oNSx3TmUsMSwwLCJjbHItaWNvbiIsOCksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgzKSx2PVV0KCk7c3QoMikseHQoIm5nTW9kZWwiLHYubGlicmFyaWVzU2VhcmNoKSxzdCgyKSx4dCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksc3QoMSkseHQoIm5nSWYiLGgudmFsdWUubGVuZ3Ro''@;'; put 'put ''PjApfX1mdW5jdGlvbiBfTmUoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiw5KX1mdW5jdGlvbiBDTmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItaWNvbiIsMTApLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpLFV0KCk7Y29uc3QgeT11YSgzKSxDPVV0KDIpLiRpbXBs''@;'; put 'put ''aWNpdCxJPVV0KCk7cmV0dXJuIHkudmFsdWU9IiIsQy5zZWFyY2hTdHJpbmc9IiIsYnQoSS50cmVlT25GaWx0ZXIoQywidGFibGVzLlRBQkxFTkFNRSIpKX0pLGl0KCl9fWZ1bmN0aW9uIGtOZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDMpKDEsImRp''@;'; put 'put ''diIsNCkoMiwiaW5wdXQiLDE2LDE3KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuJGltcGxpY2l0LnNlYXJjaFN0cmluZz15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgp''@;'; put 'put ''LnRyZWVPbkZpbHRlcih5LCJ0YWJsZXMuVEFCTEVOQU1FIikpfSksaXQoKSxubig0LF9OZSwxLDAsImNsci1pY29uIiw3KSxubig1LENOZSwxLDAsImNsci1pY29uIiw4KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPXVhKDMpLHY9VXQoMikuJGltcGxpY2l0O3N0KDIpLHh0KCJuZ01vZGVsIix2''@;'; put 'put ''LnNlYXJjaFN0cmluZyksc3QoMikseHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHN0KDEpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gU05lKGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsMjMpfWZ1bmN0aW9uIE1OZShkLGcpezEmZCYmYnIoMCwiY2xyLWljb24i''@;'; put 'put ''LDI0KX1mdW5jdGlvbiBFTmUoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiw5KX1mdW5jdGlvbiB4TmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItaWNvbiIsMTApLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpLFV0KCk7Y29uc3QgeT11YSgzKSxDPVV0KDIpLiRpbXBs''@;'; put 'put ''aWNpdCxJPVV0KDMpO3JldHVybiB5LnZhbHVlPSIiLEMuc2VhcmNoU3RyaW5nPSIiLGJ0KEkudHJlZU9uRmlsdGVyKEMsImNvbHVtbnMuQ09MTkFNRSIpKX0pLGl0KCl9fWZ1bmN0aW9uIFROZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDMpKDEsImRp''@;'; put 'put ''diIsNCkoMiwiaW5wdXQiLDI1LDE3KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuJGltcGxpY2l0LnNlYXJjaFN0cmluZz15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgz''@;'; put 'put ''KS50cmVlT25GaWx0ZXIoeSwiY29sdW1ucy5DT0xOQU1FIikpfSksaXQoKSxubig0LEVOZSwxLDAsImNsci1pY29uIiw3KSxubig1LHhOZSwxLDAsImNsci1pY29uIiw4KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPXVhKDMpLHY9VXQoMikuJGltcGxpY2l0O3N0KDIpLHh0KCJuZ01vZGVsIix2''@;'; put 'put ''LnNlYXJjaFN0cmluZyksc3QoMikseHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHN0KDEpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gSU5lKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsMTgpLFpuKCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0LEk9VXQoMikuJGltcGxpY2l0LGo9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgpLmNvbHVtbk9uQ2xpY2soQyxqLEkpKX0pLGJyKDIsImNsci1pY29uIiwyNiksV3QoMyksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1n''@;'; put 'put ''LiRpbXBsaWNpdCx2PVV0KDUpO3N0KDEpLEhpKCJjb2x1bW4tYWN0aXZlIix2LmxpYkNvbHVtbkFjdGl2ZShoLkNPTFVSSSkpLHN0KDIpLFVpKCIgIixoLkNPTE5BTUUsIiAiKX19ZnVuY3Rpb24gRE5lKGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxUTmUsNiwzLCJjbHItdHJlZS1ub2RlIiww''@;'; put 'put ''KSxubigyLElOZSw0LDMsImNsci10cmVlLW5vZGUiLDEpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDtzdCgxKSx4dCgibmdJZiIsaC5jb2x1bW5zKSxzdCgxKSx4dCgibmdGb3JPZiIsaC5jb2x1bW5zKX19ZnVuY3Rpb24gTE5lKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7''@;'; put 'put ''dHQoMCwiY2xyLXRyZWUtbm9kZSIsMTIpLFpuKCJjbGljayIsZnVuY3Rpb24oeSl7Y29uc3QgST1hKGgpLiRpbXBsaWNpdCxqPVV0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoKS50cmVlTm9kZUNsaWNrZWQoeSxJLGoudGFibGVzKSl9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9u''@;'; put 'put ''KHkpe3JldHVybiBidChhKGgpLiRpbXBsaWNpdC5leHBhbmRlZD15KX0pLHR0KDEsImJ1dHRvbiIsMTgpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0LEk9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgpLnRhYmxlT25DbGljayhDLlRBQkxFVVJJLEMs''@;'; put 'put ''SSkpfSksTDAoMiwxOSksbm4oMyxTTmUsMSwwLCJjbHItaWNvbiIsMjApLG5uKDQsTU5lLDEsMCwiY2xyLWljb24iLDIxKSxPMCgpLFd0KDUpLGl0KCksbm4oNixETmUsMywyLCJuZy1jb250YWluZXIiLDIyKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KDIpLiRpbXBs''@;'; put 'put ''aWNpdCx5PVV0KCk7SGkoImNsci1leHBhbmRlZCIsaC5leHBhbmRlZCkseHQoImNsckV4cGFuZGVkIixoLmV4cGFuZGVkKSgiY2xyTG9hZGluZyIsaC5sb2FkaW5nQ29sdW1ucyYmIWguY29sdW1ucyksc3QoMSksSGkoInRhYmxlLWFjdGl2ZSIseS5saWJUYWJBY3RpdmUodi5MSUJSQVJZUkVG''@;'; put 'put ''LGgpKSxzdCgxKSx4dCgibmdTd2l0Y2giLGguaW5jbHVkZXMoIi1GQyIpKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwhMCksc3QoMSkseHQoIm5nU3dpdGNoQ2FzZSIsITEpLHN0KDEpLFVpKCIgIixoLnJlcGxhY2UoIi1GQyIsIiIpLCIgIiksc3QoMSkseHQoIm5nSWYiLHkuaGFzQ29sdW1u''@;'; put 'put ''cyl9fWZ1bmN0aW9uIE9OZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDEyKSxabigiY2xpY2siLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgpLiRpbXBsaWNpdCxJPVV0KCk7cmV0dXJuIGJ0KEkudHJlZU5vZGVDbGlja2VkKHksQyxJLmxpYnJh''@;'; put 'put ''cnlMaXN0KSl9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkuJGltcGxpY2l0LmV4cGFuZGVkPXkpfSksdHQoMSwicCIsMTMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKS4kaW1wbGljaXQsQz1VdCgpO3JldHVybiBD''@;'; put 'put ''LmxpYj15LkxJQlJBUllJRCxidChDLmxpYnJhcnlPbkNsaWNrKEMubGlifHwiIix5KSl9KSxicigyLCJjbHItaWNvbiIsMTQpLFd0KDMpLGl0KCksbm4oNCxrTmUsNiwzLCJjbHItdHJlZS1ub2RlIiwwKSxubig1LExOZSw3LDExLCJjbHItdHJlZS1ub2RlIiwxNSksaXQoKX1pZigyJmQpe2Nv''@;'; put 'put ''bnN0IGg9VXQoKS4kaW1wbGljaXQ7SGkoImNsci1leHBhbmRlZCIsaC5leHBhbmRlZCkseHQoImNsckV4cGFuZGVkIixoLmV4cGFuZGVkKSgiY2xyTG9hZGluZyIsaC5sb2FkaW5nVGFibGVzJiYhaC50YWJsZXMpLHN0KDMpLFVpKCIgIixoLkxJQlJBUllOQU1FLCIgIiksc3QoMSkseHQoIm5n''@;'; put 'put ''SWYiLGgudGFibGVzKSxzdCgxKSx4dCgibmdGb3JPZiIsaC50YWJsZXMpfX1mdW5jdGlvbiBSTmUoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLE9OZSw2LDcsImNsci10cmVlLW5vZGUiLDExKSxPMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCgpO3N0KDEpLHh0KCJuZ0lmIiwh''@;'; put 'put ''aC5oaWRkZW4mJmguaW5Gb3JlZ3JvdW5kfHwhdi5wYWdpbmcpfX1mdW5jdGlvbiBCTmUoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDI3KSgxLCJzcGFuIiwyOCksV3QoMiwiIExvYWRpbmcuLi4gIiksaXQoKSgpKX1sZXQgUE5lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5oZWxw''@;'; put 'put ''ZXJTZXJ2aWNlPWgsdGhpcy50YWJsZU9uQ2xpY2tFbWl0dGVyPW5ldyBmbix0aGlzLmxpYnJhcnlPbkNsaWNrRW1pdHRlcj1uZXcgZm4sdGhpcy5oYXNDb2x1bW5zPSExLHRoaXMucGFnaW5nPSExLHRoaXMubGlicmFyaWVzU2VhcmNoPSIiLHRoaXMubGliPSIiLHRoaXMudGFibGU9IiIsdGhp''@;'; put 'put ''cy5saWJyYXJpZXNQYWdpbmc9ITF9bmdPbkluaXQoKXt9dHJlZU9uRmlsdGVyKGgsdil7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZpbHRlcihoLHYpfWxpYnJhcnlPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5saWJyYXJ5TGlzdCx0aGlzLmxp''@;'; put 'put ''YnJhcmllc1NlYXJjaCwiTElCUkFSWU5BTUUiKSxyaS5saW5lYWdlLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH10cmVlTm9kZUNsaWNrZWQoaCx2LHkpeyJDb2xsYXBzZSI9PT1oLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyh5LHYpfWxpYnJhcnlP''@;'; put 'put ''bkNsaWNrKGgsdil7di5pbkZvcmVncm91bmQ9ITAsdi50YWJsZXM/KHYuZXhwYW5kZWQ9IXYuZXhwYW5kZWQsdGhpcy5saWJyYXJ5T25DbGlja0VtaXR0ZXIuZW1pdCh7bGliaWQ6aCxsaWJyYXJ5OnYsdGFibGVzTG9hZGVkOiEwfSkpOih2LmxvYWRpbmdUYWJsZXM9ITAsdGhpcy5saWJyYXJ5''@;'; put 'put ''T25DbGlja0VtaXR0ZXIuZW1pdCh7bGliaWQ6aCxsaWJyYXJ5OnYsdGFibGVzTG9hZGVkOiExfSkpLHRoaXMuY29sbGFwc2VUcmVlSXRlbXModGhpcy5saWJyYXJ5TGlzdCx2KX10YWJsZU9uQ2xpY2soaCx2LHkpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7di5j''@;'; put 'put ''b2x1bW5zPyh2LmV4cGFuZGVkPSF2LmV4cGFuZGVkLCEwPT09di5leHBhbmRlZCYmKHRoaXMudGFibGU9aCx0aGlzLnRhYmxlT25DbGlja0VtaXR0ZXIuZW1pdCh7dGFibGV1cmk6aCxsaWJUYWJsZTp2LGNvbHVtbnNMb2FkZWQ6ITB9KSkpOih2LmV4cGFuZGVkPSF2LmV4cGFuZGVkLHYubG9h''@;'; put 'put ''ZGluZ0NvbHVtbnM9ITAsdGhpcy50YWJsZT1oLHRoaXMudGFibGVPbkNsaWNrRW1pdHRlci5lbWl0KHt0YWJsZXVyaTpoLGxpYlRhYmxlOnYsY29sdW1uc0xvYWRlZDohMX0pKSx0aGlzLmNvbGxhcHNlVHJlZUl0ZW1zKHkudGFibGVzLHYpfSl9Y29sdW1uT25DbGljayhoLHYseSl7dGhpcy5s''@;'; put 'put ''aWI9di5MSUJSQVJZSUQsdGhpcy50YWJsZT15LlRBQkxFVVJJLHRoaXMuY29sdW1uPWguQ09MVVJJfWxpYlRhYkFjdGl2ZShoLHYpe3JldHVybiEoIXRoaXMubGlifHwhdGhpcy50YWJsZSkmJmg9PT10aGlzLmxpYiYmdj09PXRoaXMudGFibGV9bGliQ29sdW1uQWN0aXZlKGgpe2lmKCF0aGlz''@;'; put 'put ''LmNvbHVtbilyZXR1cm4hMTtsZXQgdj1oLnNwbGl0KCJcXCIpLHk9dGhpcy5jb2x1bW4uc3BsaXQoIlxcIik7cmV0dXJuIHZbdi5sZW5ndGgtMV09PXlbeS5sZW5ndGgtMV19Y29sbGFwc2VUcmVlSXRlbXMoaCx2KXtoLmZvckVhY2goeT0+e0pTT04uc3RyaW5naWZ5KHkpIT09SlNPTi5zdHJp''@;'; put 'put ''bmdpZnkodikmJih5LmV4cGFuZGVkPSExKX0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChjYykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJkYy10cmVlIl1dLGlucHV0czp7aGFzQ29sdW1uczoiaGFzQ29sdW1ucyIs''@;'; put 'put ''cGFnaW5nOiJwYWdpbmciLGxpYnJhcnlMaXN0OiJsaWJyYXJ5TGlzdCJ9LG91dHB1dHM6e3RhYmxlT25DbGlja0VtaXR0ZXI6InRhYmxlT25DbGlja0VtaXR0ZXIiLGxpYnJhcnlPbkNsaWNrRW1pdHRlcjoibGlicmFyeU9uQ2xpY2tFbWl0dGVyIn0sZGVjbHM6NCx2YXJzOjMsY29uc3RzOltb''@;'; put 'put ''ImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInctMTAwIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIi''@;'; put 'put ''LCJMaWJyYXJpZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNr''@;'; put 'put ''Iiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxv''@;'; put 'put ''YWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hh''@;'; put 'put ''bmdlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJUYWJsZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFsxLCJj''@;'; put 'put ''bHItdHJlZW5vZGUtbGluayIsMywiY2xpY2siXSxbMywibmdTd2l0Y2giXSxbInNoYXBlIiwiYm9sdCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJzaGFwZSIsInRhYmxlIiw0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdJZiJdLFsic2hhcGUiLCJib2x0Il0sWyJzaGFwZSIsInRhYmxlIl0sWyJjbHJJ''@;'; put 'put ''bnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiQ29sdW1ucyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2hhcGUiLCJvYmplY3RzIl0sWzEsInctMTAwIiwidGV4dC1jZW50ZXIiXSxbMSwic3Bpbm5lciIs''@;'; put 'put ''InNwaW5uZXItc20iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJjbHItdHJlZSIpLG5uKDEsYk5lLDYsMywiY2xyLXRyZWUtbm9kZSIsMCksbm4oMixSTmUsMiwxLCJuZy1jb250YWluZXIiLDEpLGl0KCksbm4oMyxCTmUsMywwLCJkaXYiLDIpKSwyJmgmJihzdCgxKSx4''@;'; put 'put ''dCgibmdJZiIsdi5saWJyYXJ5TGlzdCksc3QoMSkseHQoIm5nRm9yT2YiLHYubGlicmFyeUxpc3QpLHN0KDEpLHh0KCJuZ0lmIix2LmxpYnJhcmllc1BhZ2luZykpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLFpkLFY2LFN2LF9nLGZPLEcyLFJpLHd2LHAxLGpzLF9zXSxzdHlsZXM6WyJjbHItdHJl''@;'; put 'put ''ZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfSJdfSksZH0pKCk7ZnVuY3Rpb24gRk5lKGQsZyl7MSZkJiYodHQoMCwiZGl2Iiw1KSgxLCJkaXYiLDYpKDIsInNwYW4iLDcpLFd0KDMsIiBMb2FkaW5nLi4uICIp''@;'; put 'put ''LGl0KCkoKSgpKX1mdW5jdGlvbiBITmUoZCxnKXsxJmQmJih0dCgwLCJoMyIsMTEpLFd0KDEsIiBQbGVhc2Ugc2VsZWN0IGEgdGFibGUgIiksaXQoKSl9ZnVuY3Rpb24gTk5lKGQsZyl7MSZkJiYodHQoMCwiaDMiLDExKSxXdCgxLCIgTm8gRWRpdGFibGUgVGFibGVzIENvbmZpZ3VyZWQgIiks''@;'; put 'put ''aXQoKSl9ZnVuY3Rpb24gVk5lKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw4KSxicigxLCJjbHItaWNvbiIsOSksbm4oMixITmUsMiwwLCJoMyIsMTApLG5uKDMsTk5lLDIsMCwiaDMiLDEwKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgyKSx4dCgibmdJZiIsKG51bGw9PWgudHJlZU5v''@;'; put 'put ''ZGVMaWJyYXJpZXM/bnVsbDpoLnRyZWVOb2RlTGlicmFyaWVzLmxlbmd0aCk+MCksc3QoMSkseHQoIm5nSWYiLChudWxsPT1oLnRyZWVOb2RlTGlicmFyaWVzP251bGw6aC50cmVlTm9kZUxpYnJhcmllcy5sZW5ndGgpPDEpfX1sZXQgZGJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2''@;'; put 'put ''LHksQyxJKXt0aGlzLnJvdXRlPWgsdGhpcy5yb3V0ZXI9dix0aGlzLmhlbHBlclNlcnZpY2U9eSx0aGlzLmV2ZW50U2VydmljZT1DLHRoaXMuc2FzU2VydmljZT1JLHRoaXMudHJlZU5vZGVMaWJyYXJpZXM9bnVsbCx0aGlzLmxpYnJhcmllc1NlYXJjaD0iIix0aGlzLmxpYj0iIix0aGlzLnRh''@;'; put 'put ''YmxlPSIiLHRoaXMuZW5jb2Rpbmc9IlVURi04Iix0aGlzLmxvYWRpbmc9ITB9Y29sbGFwc2VMaWJyYXJ5SXRlbXMoaCx2KXtoLmZvckVhY2goeT0+e3kuTElCUkFSWUlEIT09di5MSUJSQVJZSUQmJih5LmV4cGFuZGVkPSExKX0pfXRyZWVOb2RlQ2xpY2tlZChoLHYpeyJDb2xsYXBzZSI9PT1o''@;'; put 'put ''LnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyx2KX1saWJyYXJ5T25DbGljayhoLHYpe3YuZXhwYW5kZWQ9IXYuZXhwYW5kZWQsdi5leHBhbmRlZCYmIXRoaXMudGFibGUmJnRoaXMuc2VsZWN0TGlicmFyeShoLCExLHYpLHRoaXMuY29sbGFw''@;'; put 'put ''c2VMaWJyYXJ5SXRlbXModGhpcy5saWJyYXJpZXMsdil9c2VsZWN0TGlicmFyeShoLHYseSl7eS5sb2FkaW5nVGFibGVzPSEwO2xldCBDLEk9W107aWYodGhpcy5saWJzQW5kVGFibGVzJiYoQz10aGlzLmxpYnNBbmRUYWJsZXNbaF0sdGhpcy50YWJsZT12b2lkIDAsIlBsZWFzZSBzZWxlY3Qg''@;'; put 'put ''bGlicmFyeSIhPT1oKSl7bGV0IGo9Qy5maWx0ZXIoZnVuY3Rpb24oY2Upe3JldHVybi0xPT09SS5pbmRleE9mKGNlKSYmKEkucHVzaChjZSksITApfSk7dGhpcy50YWJsZXM9aixyaS5lZGl0b3IubGlicmFyaWVzPXRoaXMubGlicmFyaWVzfXJpLmVkaXRvci5saWJyYXJ5PWgsdnx8dGhpcy5j''@;'; put 'put ''bGVhckdsb2JhbHNGaWx0ZXIoKSx5LmxvYWRpbmdUYWJsZXM9ITEseS5leHBhbmRlZD0hMH1zZWxlY3RUYWJsZShoLHYpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5saWJUYWI9dGhpcy5saWIrIi4iK3RoaXMudGFibGUsdGhpcy5zYXNTZXJ2aWNlLmdl''@;'; put 'put ''dFNhc2pzQ29uZmlnKCkscmkuZWRpdG9yLnRhYmxlPWgsdnx8dGhpcy5jbGVhckdsb2JhbHNGaWx0ZXIoKX0pfWNsZWFyR2xvYmFsc0ZpbHRlcigpe3JpLmVkaXRvci5maWx0ZXIubGliZHM9IiIscmkuZWRpdG9yLmZpbHRlci53aGVyZUNsYXVzZT0iIixyaS5lZGl0b3IuZmlsdGVyLmdyb3Vw''@;'; put 'put ''TG9naWM9IiIscmkuZWRpdG9yLmZpbHRlci5jbGF1c2VzPVtdLHJpLmVkaXRvci5maWx0ZXIudmFscz1bXSxyaS5lZGl0b3IuZmlsdGVyLmNvbHM9W119bGliVGFiQWN0aXZlKGgsdil7cmV0dXJuISghdGhpcy5saWJ8fCF0aGlzLnRhYmxlKSYmaD09PXRoaXMubGliJiZ2PT09dGhpcy50YWJs''@;'; put 'put ''ZX10cmVlT25GaWx0ZXIoaCx2KXt0aGlzLmhlbHBlclNlcnZpY2UudHJlZU9uRmlsdGVyKGgsdil9bGlicmFyeU9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLnRyZWVOb2RlTGlicmFyaWVzLHRoaXMubGlicmFyaWVzU2VhcmNoLCJMSUJSQVJZUkVG''@;'; put 'put ''IikscmkubGluZWFnZS5saWJyYXJpZXNTZWFyY2g9dGhpcy5saWJyYXJpZXNTZWFyY2h9ZWRpdFRhYmxlKCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvZWRpdG9yLyIrdGhpcy5saWIrIi4iK3RoaXMudGFibGUpfWdldExpYnJhcnlUYWJsZVN0YXRlKCl7aWYobnVsbCE9PXJpLmVkaXRv''@;'; put 'put ''ci50cmVlTm9kZUxpYnJhcmllcyYmKHRoaXMudHJlZU5vZGVMaWJyYXJpZXM9cmkuZWRpdG9yLnRyZWVOb2RlTGlicmFyaWVzKSwiIiE9PXJpLmVkaXRvci5saWJyYXJ5KXt0aGlzLmxpYj1yaS5lZGl0b3IubGlicmFyeTtsZXQgaD1udWxsO3RoaXMudHJlZU5vZGVMaWJyYXJpZXMmJihoPXRo''@;'; put 'put ''aXMudHJlZU5vZGVMaWJyYXJpZXMuZmluZCh2PT52LkxJQlJBUllSRUY9PT10aGlzLmxpYikpLHRoaXMuc2VsZWN0TGlicmFyeShyaS5lZGl0b3IubGlicmFyeSwhMCxoKX19Z2V0RnJvbUdsb2JhbHMoKXt0aGlzLmxpYnNBbmRUYWJsZXM9cmkuZWRpdG9yLmxpYnNBbmRUYWJsZXMsdGhpcy5s''@;'; put 'put ''aWJyYXJpZXM9cmkuZWRpdG9yLnRyZWVOb2RlTGlicmFyaWVzLHRoaXMuZ2V0TGlicmFyeVRhYmxlU3RhdGUoKSx0aGlzLmxvYWRpbmc9ITF9bmdBZnRlckNvbnRlbnRJbml0KCl7cmkuZWRpdG9yLnN0YXJ0dXBTZXQ/dGhpcy5nZXRGcm9tR2xvYmFscygpOnRoaXMuZXZlbnRTZXJ2aWNlLm9u''@;'; put 'put ''U3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5nZXRGcm9tR2xvYmFscygpfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KEVsKSxLdChKMSksS3QoY2MpLEt0KG11KSxLdChsMCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpk''@;'; put 'put ''LHNlbGVjdG9yczpbWyJob21lLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Nix2YXJzOjMsY29uc3RzOltbMywibGlicmFyeUxpc3QiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQtYmxvY2siXSxbImNsYXNzIiwic3Bpbm5lci13cmFw''@;'; put 'put ''cGVyLWZ1bGxwYWdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkIiw0LCJuZ0lmIl0sWzEsInNwaW5uZXItd3JhcHBlci1mdWxscGFnZSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWyJzaGFwZSIsIndh''@;'; put 'put ''cm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgY29sb3ItZ3JheSIsNCwibmdJZiJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgw''@;'; put 'put ''LCJhcHAtc2lkZWJhciIpLGJyKDEsImRjLXRyZWUiLDApLGl0KCksdHQoMiwiZGl2IiwxKSgzLCJkaXYiLDIpLG5uKDQsRk5lLDQsMCwiZGl2IiwzKSxubig1LFZOZSw0LDIsImRpdiIsNCksaXQoKSgpKSwyJmgmJihzdCgxKSx4dCgibGlicmFyeUxpc3QiLHYubGlicmFyaWVzKSxzdCgzKSx4''@;'; put 'put ''dCgibmdJZiIsdi5sb2FkaW5nKSxzdCgxKSx4dCgibmdJZiIsIXYubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6W0cyLFBTLEJvLFBOZV0sc3R5bGVzOlsiLmNhcmQtYmxvY2tbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3BhZGRpbmc6MH0ubm8tdGFibGUtc2VsZWN0ZWRbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoxMDAlfSAgY2xyLWljb24uaXMtYmx1ZSwgICBjbHItaWNvbi5pcy1pbmZve2ZpbGw6IzZhOTIzNX0uc3Bpbm5lci13cmFwcGVyLWZ1bGxwYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250''@;'; put 'put ''ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0iXX0pLGR9KSgpO3ZhciBJdz1MKDI5NzQ4KTtsZXQga2c9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5oZWxwZXJTZXJ2aWNlPXYsdGhpcy5s''@;'; put 'put ''b2dnZXJTZXJ2aWNlPXksdGhpcy5yZXNwb25zZT1uZXcgJGUsdGhpcy5jaGFuZ2VkVGFibGU9bmV3ICRlLHRoaXMuZGV0YWlscz1uZXcgJGUsdGhpcy5kaWZmcz1uZXcgJGUsdGhpcy5jb2x1bW5zPW5ldyAkZSx0aGlzLnZhbHVlcz1uZXcgJGUsdGhpcy5maWx0ZXI9bmV3ICRlLHRoaXMucXVl''@;'; put 'put ''cnk9bmV3ICRlLHRoaXMuc3VibWl0dERldGFpbD1uZXcgJGUsdGhpcy5yZW1vdmVRdWVyeT1uZXcgJGUsdGhpcy5zZXRTdWJtaXQ9bmV3ICRlLHRoaXMuc2V0U3VibWl0TGlzdD1uZXcgJGV9Y2FsbFNlcnZpY2UoaCx2LHksQyl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''biooKXt0aGlzLmxpYmRzPUM7bGV0IEk9e307cmV0dXJuIElbdl09W2hdLHtkYXRhOnlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KHksSSksbGliZHM6dGhpcy5saWJkc319KX11cGRhdGVUYWJsZShoLHYseSxDLEkpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24q''@;'; put 'put ''KCl7bGV0IGo9e2pzZGF0YTp2fTtpZihJKXtsZXQgX2U9dGhpcy5wYXJzZUZvcm1hdHMoSSk7ai4kanNkYXRhPXtmb3JtYXRzOl9lfX1yZXR1cm4galt5XT1baF0seWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoQyxqKX0pfWdldEFwcHJvdmFscyhoLHYseSl7cmV0dXJuIHRvKHRoaXMs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17fTtyZXR1cm4gQ1t2XT1baF0seWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoeSxDKX0pfXNlbmREZXRhaWxzKGgsdix5KXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBDPU9iamVjdC5hc3Np''@;'; put 'put ''Z24oe3N1YjohMH0saCk7dGhpcy5zdWJtaXR0RGV0YWlsLm5leHQoe2RhdGE6eVt2XSx2aWV3RGF0YTpDfSl9KX1nZXRTdWJtaXR0cygpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJlZGl0b3Jz''@;'; put 'put ''L2dldHN1Ym1pdHMiLG51bGwpfSl9dmlld0xpYnMoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3ZpZXdsaWJzIixudWxsKX0pfXJlZnJlc2hMaWJJbmZvKGgpe3JldHVybiB0byh0aGlzLHZv''@;'; put 'put ''aWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvcmVmcmVzaGxpYmluZm8iLHtsaWIycmVmcmVzaDpbe2xpYnJlZjpofV19KX0pfXZlcnNpb25IaXN0b3J5KGgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24q''@;'; put 'put ''KCl7Y29uc3Qgdj17aXdhbnQ6W3tMSUJEUzpofV19O3JldHVybiB5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL2dldHZlcnNpb25oaXN0b3J5Iix2KX0pfXZpZXdUYWJsZXMoaCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgdj17U0FT''@;'; put 'put ''Q29udHJvbFRhYmxlOlt7TVBMSUI6aH1dfTtyZXR1cm4geWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3dGFibGVzIix2KX0pfXZpZXdEYXRhKGgsdil7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgeT17U0FTQ29udHJvbFRhYmxl''@;'; put 'put ''Olt7TElCRFM6aCxGSUxURVJfUks6dn1dfTtyZXR1cm4geWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3ZGF0YSIseSl9KX12aWV3RGF0YVNlYXJjaChoLHY9ITEseSxDKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBqPXtTQVND''@;'; put 'put ''b250cm9sVGFibGU6W3tTRUFSQ0hUWVBFOmgubGVuZ3RoPjA/dj8iTlVNIjoiQ0hBUiI6Ik5PTkUiLFNFQVJDSFZBTDpoLExJQkRTOnksRklMVEVSX1JLOkN9XX07cmV0dXJuIHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmlld2RhdGEiLGopfSl9Z2V0RGV0YWlscyho''@;'; put 'put ''LHYseSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17fTtyZXR1cm4gQ1t2XT1baF0seWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoeSxDKX0pfXNob3dEaWZmcyhoLHYseSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbioo''@;'; put 'put ''KXtsZXQgQz17fTtyZXR1cm4gQ1t2XT1baF0seWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoeSxDLHt1c2VDb21wdXRlQXBpOiExfSl9KX1yZWplY3RpbmcoaCx2LHkpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEM9e307cmV0dXJuIENbdl09W2hd''@;'; put 'put ''LHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KHksQyx7dXNlQ29tcHV0ZUFwaTohMX0pfSl9YXBwcm92ZVRhYmxlKGgsdix5KXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBDPXt9O3JldHVybiBDW3ZdPVtoXSx5aWVsZCB0aGlzLnNhc1NlcnZpY2Uu''@;'; put 'put ''cmVxdWVzdCh5LEMpfSl9Z2V0SGlzdG9yeShoLHYseSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17fTtyZXR1cm4gQ1t2XT1baF0seWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoeSxDKX0pfXNldFF1ZXJ5VmFyaWFibGVzKGgsdil7dGhpcy5j''@;'; put 'put ''b2x1bW5zLm5leHQoe2RhdGE6e2NvbHM6dn0sbGliZHM6aH0pfWdldENoYW5nZUluZm8oaCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgeT17U0FTQ29udHJvbFRhYmxlOlt7VEFCTEU6aH1dfTtyZXR1cm4geWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVl''@;'; put 'put ''c3QoInB1YmxpYy9nZXRjaGFuZ2VpbmZvIix5KX0pfWdldFF1ZXJ5VmFsdWVzKGgsdix5KXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBDPXtpd2FudDpbe2xpYmRzOnYsY29sOmh9XX07cmV0dXJuIHkubGVuZ3RoPjAmJihDLkZJTFRFUlFVRVJZPXkpLHlp''@;'; put 'put ''ZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Y29sdmFscyIsQykuY2F0Y2goaj0+e3Rocm93IGp9KX0pfXNhdmVRdWVyeShoLHYpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IHk9e2l3YW50Olt7ZmlsdGVyX3RhYmxlOmh9XSxmaWx0''@;'; put 'put ''ZXJxdWVyeTp2fSxDPXlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmFsaWRhdGVmaWx0ZXIiLHkpO3JldHVybiB0aGlzLmZpbHRlci5uZXh0KEMpLEN9KX1vcGVuVGFibGUoaCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgdj17aXdh''@;'; put 'put ''bnQ6W3t0YWJsZV9pZDpofV19O3JldHVybiB5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiYXVkaXRvcnMvZ2V0c3RhZ2V0YWJsZSIsdil9KX1jaGVja09wZXJhdG9yKGgsdix5KXtsZXQgQztzd2l0Y2goaCl7Y2FzZSJCRVRXRUVOIjp2IGluc3RhbmNlb2YgQXJyYXkmJigiIiE9PXZb''@;'; put 'put ''MF0mJiIiIT09dlsxXT9DPXZbMF0rIiBBTkQgIit2WzFdOiIiIT09dlswXSYmIiI9PT12WzFdPyh2WzFdPSIuIixDPXZbMF0rIiBBTkQgIit2WzFdKToiIj09PXZbMF0mJiIiIT09dlsxXT8odlswXT0iLiIsQz12WzBdKyIgQU5EICIrdlsxXSk6KHZbMF09Ii4iLHZbMV09Ii4iLEM9dlswXSsi''@;'; put 'put ''IEFORCAiK3ZbMV0pKTticmVhaztjYXNlIklOIjpjYXNlIk5PVCBJTiI6bGV0IGo9W107aWYodm9pZCAwIT09dilmb3IobGV0IGNlPTA7Y2U8di5sZW5ndGg7Y2UrKykhMD09PXZbY2VdLmNoZWNrZWQmJigiY2hhciI9PT15Pygic3RyaW5nIj09dHlwZW9mIHZbY2VdLnZhbCYmKHZbY2VdLnZh''@;'; put 'put ''bD12W2NlXS52YWwucmVwbGFjZSgiJyIsIicnIikpLGoucHVzaCgiJyIrdltjZV0udmFsKyInIikpOihudWxsPT09dltjZV0udmFsJiYodltjZV0udmFsPSIuIiksai5wdXNoKHZbY2VdLnZhbCkpKTt2PSIoIitqKyIpIjticmVhaztjYXNlIkNPTlRBSU5TIjpoPSI/IjticmVhaztjYXNlIk5P''@;'; put 'put ''VCBFUVVBTCI6aD0ibmUifXJldHVybiJudW0iPT09eSYmbnVsbD09PXYmJih2PSIuIiksIlBsZWFzZSBzZWxlY3QgdmFsdWUiPT09diYmKHY9IiIpLC0xIT09WyI9IiwiPiIsIjwiLCI8PSIsIj49IiwibmUiXS5pbmRleE9mKGgpJiYibnVtIj09PXkmJiIiPT09diYmKHY9Ii4iKSwiQkVUV0VF''@;'; put 'put ''TiI9PT1oP3t2YWx1ZTpDLG9wZXJhdG9yOmh9Ont2YWx1ZTp2LG9wZXJhdG9yOmh9fXdoZXJlQ2xhdXNlQ3JlYXRvcihoLHYseSl7bGV0IGNlLE5lLEM9IiIsX2U9IiIsUmU9W107Zm9yKGxldCBodD0wO2h0PGgucXVlcnlPYmoubGVuZ3RoO2h0Kyspe2xldCBCdD0iIiwkdD1oLnF1ZXJ5T2Jq''@;'; put 'put ''W2h0XTtmb3IobGV0IGhuPTA7aG48JHQuZWxlbWVudHMubGVuZ3RoO2huKyspe2xldCBpcixEbj0kdC5lbGVtZW50c1tobl07Y2U9aG48JHQuZWxlbWVudHMubGVuZ3RoLTE/JHQuY2xhdXNlTG9naWM6IiI7Zm9yKGxldCBfaT0wO19pPERuLnZhbHVlcy5sZW5ndGg7X2krKyl7aWYoInN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiBEbi52YWx1ZSYmIm51bWJlciI9PXR5cGVvZiBEbi52YWx1ZXNbX2ldLmZvcm1hdHRlZClEbi52YWx1ZT09PUpTT04uc3RyaW5naWZ5KERuLnZhbHVlc1tfaV0uZm9ybWF0dGVkKSYmKGlyPURuLnZhbHVlc1tfaV0udW5mb3JtYXR0ZWQpO2Vsc2V7bGV0IGtvPSJudW1iZXIi''@;'; put 'put ''IT10eXBlb2YgRG4udmFsdWVzW19pXS5mb3JtYXR0ZWQmJm51bGwhPT1Ebi52YWx1ZXNbX2ldLmZvcm1hdHRlZD9Ebi52YWx1ZXNbX2ldLmZvcm1hdHRlZC50cmltKCk6RG4udmFsdWVzW19pXS5mb3JtYXR0ZWQ7RG4udmFsdWU9PT1rbyYmKGlyPURuLnZhbHVlc1tfaV0udW5mb3JtYXR0ZWQp''@;'; put 'put ''fWxldCBLaT1bIj0iLCI+IiwiPCIsIjw9IiwiPj0iLCJuZSJdOyJQbGVhc2Ugc2VsZWN0IHZhbHVlIj09PURuLnZhbHVlJiYtMSE9PUtpLmluZGV4T2YoRG4ub3BlcmF0b3IpJiYoaXI9IiIpLCgiQ09OVEFJTlMiPT09RG4ub3BlcmF0b3J8fCJMSUtFIj09PURuLm9wZXJhdG9yfHwiQkVHSU5T''@;'; put 'put ''X1dJVEgiPT09RG4ub3BlcmF0b3IpJiYoaXI9RG4udmFsdWUpfWlmKGlyfHwoaXI9RG4udmFsdWUpLERuLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkmJiJCRVRXRUVOIj09PURuLm9wZXJhdG9yKXtpcj1bXSxpci5wdXNoKERuLnZhbHVlWzBdKSxpci5wdXNoKERuLnZhbHVlWzFdKTtmb3IobGV0''@;'; put 'put ''IF9pPTA7X2k8RG4udmFsdWVzLmxlbmd0aDtfaSsrKWlyWzBdPT09RG4udmFsdWVzW19pXS5mb3JtYXR0ZWQmJihpclswXT1Ebi52YWx1ZXNbX2ldLnVuZm9ybWF0dGVkKSxpclsxXT09PURuLnZhbHVlc1tfaV0uZm9ybWF0dGVkJiYoaXJbMV09RG4udmFsdWVzW19pXS51bmZvcm1hdHRlZCl9''@;'; put 'put ''aWYoRG4udmFsdWUgaW5zdGFuY2VvZiBBcnJheSYmKCJJTiI9PT1Ebi5vcGVyYXRvcnx8Ik5PVCBJTiI9PT1Ebi5vcGVyYXRvcikpe2lyPVtdLGlyPURuLnZhbHVlO2ZvcihsZXQgX2k9MDtfaTxEbi52YWx1ZXMubGVuZ3RoO19pKyspaXJbX2ldJiZpcltfaV0udmFsPT09RG4udmFsdWVzW19p''@;'; put 'put ''XS5mb3JtYXR0ZWQmJihpcltfaV0udmFsPURuLnZhbHVlc1tfaV0udW5mb3JtYXR0ZWQpfWxldCBZcixwcj1Ebi50eXBlLEVyPW51bGw9PT1Ebi52YXJpYWJsZT8iIjpEbi52YXJpYWJsZSxBcj1udWxsPT09RG4ub3BlcmF0b3I/IiI6RG4ub3BlcmF0b3I7WXI9dGhpcy5jaGVja09wZXJhdG9y''@;'; put 'put ''KEFyLGlyLHByKS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIFlyJiYiKCIhPT1ZclswXSYmKFlyPVlyLnJlcGxhY2UoIiciLCInJyIpKSxBcj10aGlzLmNoZWNrT3BlcmF0b3IoQXIsWXIscHIpLm9wZXJhdG9yLCJjaGFyIj09PXByJiYiSU4iIT09QXImJiJOT1QgSU4iIT09QXI/KHZvaWQgMD09''@;'; put 'put ''PVlyJiYoWXI9IiIpLFlyPSIgJyIrWXIrIicgIixCdD1CdCsiICIrRXIrIiAiK0FyK1lyK2NlKTooIm51bSI9PT1wciYmdm9pZCAwPT09WXImJihZcj0iLiIpLFlyPXZvaWQgMD09PVlyPyIiOiIgIitZcisiICIsQnQ9QnQrIiAiK0VyKyIgIitBcitZcitjZSl9UmUucHVzaChCdCl9X2U9IiI7''@;'; put 'put ''Zm9yKGxldCBodD0wO2h0PFJlLmxlbmd0aDtodCsrKU5lPWh0PFJlLmxlbmd0aC0xP3Y6IiIsX2U9MT09PVJlLmxlbmd0aD9SZVswXTpfZSsiICgiK1JlW2h0XSsiKSAiK05lO3JldHVybiBDPV9lLnN1YnN0cigxKS5zbGljZSgwLC0xKSxfZT0iV0hFUkUiK19lKyI7Iix0aGlzLnF1ZXJ5Lm5l''@;'; put 'put ''eHQoe3doZXJlQ2xhdXNlOl9lLHN0cmluZzpDLG9iajpoLGxpYmRzOnl9KSx7d2hlcmVDbGF1c2U6X2Usc3RyaW5nOkN9fWNyZWF0ZUZpbHRlclF1ZXJ5VGFibGUoaCl7Y29uc3Qgdj1bXTtyZXR1cm4gaC5maWx0ZXJHcm91cHMuZm9yRWFjaCgoeSxDKT0+e3kuZmlsdGVyQ2xhdXNlcy5mb3JF''@;'; put 'put ''YWNoKEk9PntsZXQgaj0iIjsiQkVUV0VFTiI9PT1JLm9wZXJhdG9yP2o9YCR7SS52YWx1ZVswXX0gQU5EICR7SS52YWx1ZVsxXX1gOiJJTiI9PT1JLm9wZXJhdG9yfHwiTk9UIElOIj09PUkub3BlcmF0b3I/KEkudmFsdWUuZm9yRWFjaChjZT0+e2lmKGNlLmNoZWNrZWQpe2NvbnN0IF9lPWNl''@;'; put 'put ''LnZhbDsic3RyaW5nIiE9dHlwZW9mIF9lfHwoMCxJdy5pc1NwZWNpYWxNaXNzaW5nKShfZSkmJiJjaGFyIiE9PUkudHlwZT9qLmxlbmd0aD4wP2orPWAsJHtfZX1gOmo9YCgke19lfWA6ai5sZW5ndGg+MD9qKz1gLCcke19lLnJlcGxhY2UoLycvZywiJyciKX0nYDpqPWAoJyR7X2UucmVwbGFj''@;'; put 'put ''ZSgvJy9nLCInJyIpfSdgfX0pLGoubGVuZ3RoPjAmJihqKz0iKSIpKToiIj09PUkudmFsdWU/aj0iY2hhciI9PT1JLnR5cGU/IicgJyI6Ii4iOiJjaGFyIj09PUkudHlwZSYmKGo9YCcke0kudmFsdWUucmVwbGFjZSgvJy9nLCInJyIpfSdgKSx2LnB1c2goe0dST1VQX0xPR0lDOmguZ3JvdXBM''@;'; put 'put ''b2dpYyxTVUJHUk9VUF9MT0dJQzp5LmNsYXVzZUxvZ2ljfHwiQU5EIixTVUJHUk9VUF9JRDpDLFZBUklBQkxFX05NOkkudmFyaWFibGUsT1BFUkFUT1JfTk06SS5vcGVyYXRvcixSQVdfVkFMVUU6anx8SS52YWx1ZX0pfSl9KSx2fWluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoaCx2KXts''@;'; put 'put ''ZXQgeT0idmlld2VyIjsiZWRpdCI9PT1oJiYoeT0iZWRpdG9yIikscmlbeV0uZmlsdGVyLmNsYXVzZXM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh7cXVlcnlPYmo6W10sY2xhdXNlTG9naWM6W10sZ3JvdXBMb2dpYzpyaVt5XS5maWx0ZXIucXVlcnlbMF0uR1JPVVBfTE9HSUN9KSxy''@;'; put 'put ''aVt5XS5maWx0ZXIuZ3JvdXBMb2dpYz1yaVt5XS5maWx0ZXIucXVlcnlbMF0uR1JPVVBfTE9HSUM7bGV0IEk9IiIsaj17ZWxlbWVudHM6W119LGNlPTA7cmlbeV0uZmlsdGVyLnF1ZXJ5LmZvckVhY2goX2U9Pntjb25zdCBSZT17fTtmb3IobGV0IE5lPTA7TmU8di5sZW5ndGg7TmUrKylpZih2''@;'; put 'put ''W05lXS5OQU1FPT09X2UuVkFSSUFCTEVfTk0pe2lmKEk9X2UuU1VCR1JPVVBfTE9HSUMsUmUuZGR0eXBlPXZbTmVdLkREVFlQRSxSZS50eXBlPXZbTmVdLlRZUEUsUmUub3BlcmF0b3JzPSJudW0iPT09dltOZV0uVFlQRT9yaS5vcGVyYXRvcnMubnVtT3BlcmF0b3JzOnJpLm9wZXJhdG9ycy5j''@;'; put 'put ''aGFyT3BlcmF0b3JzLFJlLmxvZ2ljPW51bGwsUmUub3BlcmF0b3I9X2UuT1BFUkFUT1JfTk0sUmUudmFyaWFibGU9X2UuVkFSSUFCTEVfTk0sImNoYXIiPT09dltOZV0uVFlQRSlpZigiSU4iPT09X2UuT1BFUkFUT1JfTk18fCJOT1QgSU4iPT09X2UuT1BFUkFUT1JfTk0pe2NvbnN0IEtlPVtd''@;'; put 'put ''LEJ0PV9lLlJBV19WQUxVRS5zbGljZSgxLC0xKS5zcGxpdCgiJywnIik7MT09PUJ0Lmxlbmd0aD9LZS5wdXNoKHtjaGVja2VkOiEwLHZhbDpCdFswXS5zbGljZSgxLC0xKS5yZXBsYWNlKC8nJy9nLCInIil9KTpCdC5mb3JFYWNoKCgkdCxobik9PntLZS5wdXNoKDA9PT1obj97Y2hlY2tlZDoh''@;'; put 'put ''MCx2YWw6JHQuc2xpY2UoMSkucmVwbGFjZSgvJycvZywiJyIpfTpobj09PUJ0Lmxlbmd0aC0xP3tjaGVja2VkOiEwLHZhbDokdC5zbGljZSgwLC0xKS5yZXBsYWNlKC8nJy9nLCInIil9OntjaGVja2VkOiEwLHZhbDokdC5yZXBsYWNlKC8nJy9nLCInIil9KX0pLFJlLnZhbHVlPXRoaXMuaGVs''@;'; put 'put ''cGVyU2VydmljZS5kZWVwQ2xvbmUoS2UpfWVsc2UgUmUudmFsdWU9X2UuUkFXX1ZBTFVFLnNsaWNlKDEsLTEpLnJlcGxhY2UoLycnL2csIiciKTtlbHNlIGlmKCJJTiI9PT1fZS5PUEVSQVRPUl9OTXx8Ik5PVCBJTiI9PT1fZS5PUEVSQVRPUl9OTSl7Y29uc3QgS2U9W107X2UuUkFXX1ZBTFVF''@;'; put 'put ''LnNsaWNlKDEsLTEpLnNwbGl0KCIsIikuZm9yRWFjaCgoJHQsaG4pPT57S2UucHVzaCh7Y2hlY2tlZDohMCx2YWw6JHR9KX0pLFJlLnZhbHVlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoS2UpfWVsc2UgaWYoIkJFVFdFRU4iPT09X2UuT1BFUkFUT1JfTk0pe2NvbnN0IEtlPV9lLlJB''@;'; put 'put ''V19WQUxVRS5zcGxpdCgiIEFORCAiKTtSZS52YWx1ZT1LZX1lbHNlIFJlLnZhbHVlPV9lLlJBV19WQUxVRTtSZS52YWx1ZXM9W10sY2U9PT1fZS5TVUJHUk9VUF9JRHx8KHJpW3ldLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqLnB1c2godGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShqKSks''@;'; put 'put ''cmlbeV0uZmlsdGVyLmNsYXVzZXMucXVlcnlPYmpbY2VdLmNsYXVzZUxvZ2ljPUkscmlbeV0uZmlsdGVyLmNsYXVzZXMucXVlcnlPYmpbY2VdLmludmFsaWRDbGF1c2U9ITEsY2UrKyxqLmVsZW1lbnRzPVtdKSxqLmVsZW1lbnRzLnB1c2godGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShS''@;'; put 'put ''ZSkpO2JyZWFrfX0pLGouZWxlbWVudHMubGVuZ3RoPjAmJihyaVt5XS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9iai5wdXNoKHRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoaikpLHJpW3ldLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW2NlXS5jbGF1c2VMb2dpYz1JLHJpW3ldLmZpbHRlci5j''@;'; put 'put ''bGF1c2VzLnF1ZXJ5T2JqW2NlXS5pbnZhbGlkQ2xhdXNlPSExKSxyaVt5XS5maWx0ZXIucXVlcnk9W119cmVtb3ZlQ2xhdXNlKCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5yZW1vdmVRdWVyeS5uZXh0KCEwKSwhMH0pfXNwZWNDb252ZXJz''@;'; put 'put ''aW9uKGgpe2xldCB2PXt9LHk9W107aWYoeT1oLm1hcChmdW5jdGlvbihDKXtyZXR1cm4gQy5OQU1FLnRvVXBwZXJDYXNlKCl9KSxoIGluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspdlt5W0NdXT0xPT09aFtDXS5UWVBFP3tjb2xUeXBlOiJudW0iLGNvbExlbmd0''@;'; put 'put ''aDpoW0NdLkxFTkdUSH06e2NvbFR5cGU6InN0cmluZyIsY29sTGVuZ3RoOmhbQ10uTEVOR1RIfTtyZXR1cm4gdn1zZXRTdWJtaXRSZWFkeSgpe3RoaXMuc2V0U3VibWl0Lm5leHQoITApfWdvVG9TdWJtaXRMaXN0KCl7dGhpcy5zZXRTdWJtaXRMaXN0Lm5leHQoITApfXBhcnNlRm9ybWF0cyho''@;'; put 'put ''KXtjb25zdCB2PXt9LHk9aC52YXJzO2ZvcihsZXQgQyBvZiBPYmplY3Qua2V5cyh5KSl7Y29uc3QgST15W0NdLnR5cGUsaj15W0NdLmxlbmd0aDsibnVtIj09PUk/dltDXT0iYmVzdC4iOiJjaGFyIj09PUkmJih2W0NdPWAkY2hhciR7an0uYCl9cmV0dXJuIHZ9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEVpKGwwKSxFaShjYyksRWkoR2gpKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtmdW5jdGlvbiBqTmUoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDkpKDEsImRpdiIsMTApLGJyKDIsImNs''@;'; put 'put ''ci1pY29uIiwxMSksdHQoMywiaDMiLDEyKSxXdCg0LCJUaGVyZSBhcmUgbm8gYXBwcm92YWxzIHJlbWFpbmluZyIpLGl0KCkoKSgpKX1mdW5jdGlvbiBaTmUoZCxnKXsxJmQmJih0dCgwLCJoMyIsMTMpLFd0KDEsIiBSRVZJRVcgIiksaXQoKSl9ZnVuY3Rpb24gek5lKGQsZyl7aWYoMSZkJiYo''@;'; put 'put ''dHQoMCwicCIsMTQpLFd0KDEsIiBZb3UgaGF2ZSAiKSx0dCgyLCJzcGFuIiksV3QoMyksaXQoKSxXdCg0LCJhcHByb3ZhbHMgcmVtYWluaW5nICIpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDMpLFVpKCIiLGgucmVtYWluZWQsIiAiKX19ZnVuY3Rpb24gR05lKGQsZyl7MSZkJiYodHQo''@;'; put 'put ''MCwic3BhbiIsMTcpLFd0KDEsIiBMb2FkaW5nLi4uICIpLGl0KCkpfWZ1bmN0aW9uIFdOZShkLGcpezEmZCYmKHR0KDAsImRpdiIpKDEsImgzIiksV3QoMiwiTG9hZGluZyBhcHByb3ZhbHMgbGlzdCIpLGl0KCkoKSl9ZnVuY3Rpb24gWU5lKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IiwxNSks''@;'; put 'put ''bm4oMSxHTmUsMiwwLCJzcGFuIiwxNiksbm4oMixXTmUsMywwLCJkaXYiLDgpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lmIiwhaC5sb2FkZWQpLHN0KDEpLHh0KCJuZ0lmIiwhaC5sb2FkZWQpfX1mdW5jdGlvbiBVTmUoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwz''@;'; put 'put ''OCl9ZnVuY3Rpb24gUU5lKGQsZyl7MSZkJiZicigwLCJjbHItc3Bpbm5lciIsMzkpLDImZCYmeHQoImNsclNtYWxsIiwhMCl9ZnVuY3Rpb24gSk5lKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWRnLXJvdyIpKDEsImNsci1kZy1jZWxsIiksV3QoMiksaXQoKSx0dCgzLCJj''@;'; put 'put ''bHItZGctY2VsbCIpLFd0KDQpLGl0KCksdHQoNSwiY2xyLWRnLWNlbGwiKSxXdCg2KSxpdCgpLHR0KDcsImNsci1kZy1jZWxsIiksV3QoOCksaXQoKSx0dCg5LCJjbHItZGctY2VsbCIpKDEwLCJkaXYiLDI2KSgxMSwiYSIsMjcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCku''@;'; put 'put ''aW5kZXg7cmV0dXJuIGJ0KFV0KDIpLmdldENsaWNrZWQoQykpfSksYnIoMTIsImNsci1pY29uIiwyOCksdHQoMTMsInNwYW4iLDI5KSxXdCgxNCwiR28gdG8gcmV2aWV3IHBhZ2Ugc2NyZWVuIiksaXQoKSgpLHR0KDE1LCJhIiwzMCksWm4oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IHk9YSho''@;'; put 'put ''KSxDPXkuJGltcGxpY2l0LEk9eS5pbmRleCxqPVV0KDIpO3JldHVybiBidChDLnJlamVjdExvYWRpbmc/IiI6ai5yZWplY3RpbmcoSSkpfSksbm4oMTYsVU5lLDEsMCwiY2xyLWljb24iLDMxKSxubigxNyxRTmUsMSwxLCJjbHItc3Bpbm5lciIsMzIpLHR0KDE4LCJzcGFuIiwyOSksV3QoMTks''@;'; put 'put ''IlJlamVjdCIpLGl0KCkoKSx0dCgyMCwiYSIsMzMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0O3JldHVybiBidChVdCgyKS5nZXRUYWJsZShDLnRhYmxlSWQpKX0pLGJyKDIxLCJjbHItaWNvbiIsMzQpLHR0KDIyLCJzcGFuIiwyOSksV3QoMjMsIkdvIHRv''@;'; put 'put ''IHN0YWdlZCBkYXRhIHNjcmVlbiIpLGl0KCkoKSgpKCksdHQoMjQsImNsci1kZy1jZWxsIiwzNSkoMjUsImJ1dHRvbiIsMzYpLFpuKCJjbGljayIsZnVuY3Rpb24oeSl7Y29uc3QgST1hKGgpLiRpbXBsaWNpdDtyZXR1cm4gVXQoMikuZG93bmxvYWQoSS50YWJsZUlkKSxidCh5LnN0b3BQcm9w''@;'; put 'put ''YWdhdGlvbigpKX0pLGJyKDI2LCJjbHItaWNvbiIsMzcpLGl0KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgyKSxqaShoLnN1Ym1pdHRlciksc3QoMiksamkoaC5iYXNlVGFibGUpLHN0KDIpLGppKGguc3VibWl0dGVkKSxzdCgyKSxqaShoLnN1Ym1pdFJlYXNvbiksc3Qo''@;'; put 'put ''OCkseHQoIm5nSWYiLCFoLnJlamVjdExvYWRpbmcpLHN0KDEpLHh0KCJuZ0lmIixoLnJlamVjdExvYWRpbmcpLHN0KDgpLHh0KCJpZCIsaC50YWJsZUlkKX19ZnVuY3Rpb24gWE5lKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2IikoMSwiY2xyLWRhdGFncmlkIiwxOCkoMiwi''@;'; put 'put ''Y2xyLWRnLWNvbHVtbiIsMTkpLFd0KDMsIlNVQk1JVFRFUiIpLGl0KCksdHQoNCwiY2xyLWRnLWNvbHVtbiIsMTkpLFd0KDUsIkJBU0UgVEFCTEUiKSxpdCgpLHR0KDYsImNsci1kZy1jb2x1bW4iLDE5KSxXdCg3LCJTVUJNSVRURUQiKSxpdCgpLHR0KDgsImNsci1kZy1jb2x1bW4iLDE5KSxX''@;'; put 'put ''dCg5LCJTVUJNSVQgUkVBU09OIiksaXQoKSx0dCgxMCwiY2xyLWRnLWNvbHVtbiIpLFd0KDExLCJBQ1RJT04iKSxpdCgpLHR0KDEyLCJjbHItZGctY29sdW1uIiksV3QoMTMsIkRPV05MT0FEIiksaXQoKSxubigxNCxKTmUsMjcsNywiY2xyLWRnLXJvdyIsMjApLHR0KDE1LCJjbHItZGctZm9v''@;'; put 'put ''dGVyIiwyMSkoMTYsInNwYW4iKSxXdCgxNywiaXRlbXMgcGVyIHBhZ2UiKSxpdCgpLHR0KDE4LCJzZWxlY3QiLDIyKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5pdGVtc051bT15KX0pLHR0KDE5LCJvcHRpb24iLDIzKSxXdCgyMCwiMyIpLGl0''@;'; put 'put ''KCksdHQoMjEsIm9wdGlvbiIsMjMpLFd0KDIyLCI1IiksaXQoKSx0dCgyMywib3B0aW9uIiwyMyksV3QoMjQsIjEwIiksaXQoKSx0dCgyNSwib3B0aW9uIiwyMyksV3QoMjYsIjE1IiksaXQoKSgpLHR0KDI3LCJjbHItZGctcGFnaW5hdGlvbiIsMjQsMjUpLFd0KDI5KSxpdCgpKCkoKSgpfWlm''@;'; put 'put ''KDImZCl7Y29uc3QgaD11YSgyOCksdj1VdCgpO3N0KDIpLHh0KCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVyIiksc3QoMikseHQoImNsckRnRmllbGQiLCJiYXNlVGFibGUiKSxzdCgyKSx4dCgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlZCIpLHN0KDIpLHh0KCJjbHJEZ0ZpZWxkIiwic3VibWl0UmVh''@;'; put 'put ''c29uIiksc3QoNikseHQoImNsckRnSXRlbXNPZiIsdi5hcHByb3ZlTGlzdCksc3QoNCkseHQoIm5nTW9kZWwiLHYuaXRlbXNOdW0pLHN0KDEpLHh0KCJuZ1ZhbHVlIiwzKSxzdCgyKSx4dCgibmdWYWx1ZSIsNSksc3QoMikseHQoIm5nVmFsdWUiLDEwKSxzdCgyKSx4dCgibmdWYWx1ZSIsMTUp''@;'; put 'put ''LHN0KDIpLHh0KCJjbHJEZ1BhZ2VTaXplIix2Lml0ZW1zTnVtKSxzdCgyKSxQaCgiICIsaC5maXJzdEl0ZW0rMSwiIC0gIixoLmxhc3RJdGVtKzEsIiBvZiAiLGgudG90YWxJdGVtcywiIGFwcHJvdmFscyAiKX19Y29uc3QgS05lPWZ1bmN0aW9uKGQpe3JldHVybntub0JvcmRlcjpkfX07bGV0''@;'; put 'put ''IHBiZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMucm91dGU9eSx0aGlzLnNhc1NlcnZpY2U9Qyx0aGlzLmNkcj1JLHRoaXMubG9hZGVkPSExLHRoaXMuaXRlbXNOdW09MTB9Z2V0VGFi''@;'; put 'put ''bGUoaCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIitoKX1nZXRDbGlja2VkKGgpe3ZvaWQgMCE9PXRoaXMuYXBwcm92ZUxpc3QmJih0aGlzLnRhYmxlSWQ9dGhpcy5hcHByb3ZlTGlzdFtoXS50YWJsZUlkLHRoaXMucm91dGUubmF2aWdhdGVCeVVybCgiYXBwcm92ZS9hcHBy''@;'; put 'put ''b3ZlRGV0LyIrdGhpcy5hcHByb3ZlTGlzdFtoXS50YWJsZUlkKSl9cmVqZWN0aW5nKGgpe3ZhciB2O3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dm9pZCAwIT09dGhpcy5hcHByb3ZlTGlzdCYmKHRoaXMudGFibGVJZD10aGlzLmFwcHJvdmVMaXN0W2hdLnRhYmxl''@;'; put 'put ''SWQpO2xldCB5PXtTVFBfQUNUSU9OOiJSRUpFQ1RfVEFCTEUiLFRBQkxFOnRoaXMudGFibGVJZCxTVFBfUkVBU09OOiJxdWljayByZWplY3Rpb24ifTt0cnl7KHRoaXMuYXBwcm92ZUxpc3R8fFtdKVtoXS5yZWplY3RMb2FkaW5nPSEwLCh5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5yZWpl''@;'; put 'put ''Y3RpbmcoeSwiQnJvd3NlclBhcmFtcyIsImFwcHJvdmVycy9yZWplY3Rpb24iKSkuZnJvbXNhc1swXS5SRVNQT05TRS5pbmNsdWRlcygiU1VDQ0VTUyIpJiYoKHRoaXMuYXBwcm92ZUxpc3R8fFtdKVtoXS5yZWplY3RMb2FkaW5nPSExLG51bGw9PT0odj10aGlzLmFwcHJvdmVMaXN0KXx8dm9p''@;'; put 'put ''ZCAwPT09dnx8di5zcGxpY2UoaCwxKSx0aGlzLnJlbWFpbmVkLS0sdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKX1jYXRjaChDKXt0aGlzLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9yZWplY3Rpb24iLEMpfX0pfW5nT25Jbml0KCl7cmV0dXJuIHRvKHRoaXMs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmZldGNoQXBwcm92YWxzKCl9KX1mZXRjaEFwcHJvdmFscygpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5pdGVtc051bT0xMDtsZXQgaD17U1RQX0FDVElPTjoiT1BFTl9BUFBST1ZBTFMifTt0cnl7''@;'; put 'put ''bGV0IHY9eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UuZ2V0QXBwcm92YWxzKGgsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvZ2V0YXBwcm92YWxzIik7dGhpcy5yZW1haW5lZD12LmZyb21zYXMubGVuZ3RoO2xldCB5PXYuZnJvbXNhcy5tYXAoZnVuY3Rpb24oQyl7cmV0dXJue3RhYmxl''@;'; put 'put ''SWQ6Qy5UQUJMRV9JRCxzdWJtaXR0ZXI6Qy5TVUJNSVRURURfQllfTk0sc3VibWl0dGVkOkMuU1VCTUlUVEVEX09OX0RUVE0sYmFzZVRhYmxlOkMuQkFTRV9UQUJMRSxzdWJtaXRSZWFzb246Qy5TVUJNSVRURURfUkVBU09OX1RYVH19KTt0aGlzLmFwcHJvdmVMaXN0PXksdGhpcy5sb2FkZWQ9''@;'; put 'put ''ITB9Y2F0Y2godil7dGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhcHByb3ZlcnMvZ2V0YXBwcm92YWxzIix2KX19KX1kb3dubG9hZChoKXtsZXQgdj10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx5PXYuc2VydmVyVXJsLEM9di5hcHBMb2MsST10aGlzLnNh''@;'; put 'put ''c1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVuKHkrSSsiLz9fcHJvZ3JhbT0iK0MrIi9zZXJ2aWNlcy9hdWRpdG9ycy9nZXRhdWRpdGZpbGUmdGFibGU9IitoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoa2cpLEt0KG11''@;'; put 'put ''KSxLdChFbCksS3QobDApLEt0KGQxKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1hcHByb3ZlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo5LHZhcnM6OCxjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCJdLFsi''@;'; put 'put ''Y2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWhlYWRlciIsMywibmdDbGFzcyJdLFsiY2xhc3MiLCJjZW50ZXIgY2xyLWNvbC1tZC0xMiB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBmb250LXdlaWdo''@;'; put 'put ''dC03MDAgY29sb3ItZGFyay1ncmF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFwcHJvdmFscy1saXN0LXdyYXBwZXIiLDQsIm5nSWYiXSxbIm5nLWlmIiwibG9hZGVkIiwxLCJjbHItY29sLW1kLTEyIl0sWzQsIm5nSWYiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsx''@;'; put 'put ''LCJjYXJkLWJsb2NrIiwibm9hcHByb3ZhbHMtaW5mby13cmFwcGVyIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImNlbnRlciIsImNsci1jb2wtbWQt''@;'; put 'put ''MTIiLCJ0ZXh0LWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciIsImZvbnQtd2VpZ2h0LTcwMCIsImNvbG9yLWRhcmstZ3JheSJdLFsxLCJhcHByb3ZhbHMtbGlzdC13cmFwcGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsxLCJkYXRhZ3JpZC1jb21wYWN0''@;'; put 'put ''IiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciJdLFszLCJjbHJEZ0ZpZWxkIl0sWzQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LXN0YXJ0Il0sWzMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsIm5nVmFsdWUiXSxbMSwiY2Vu''@;'; put 'put ''dGVyIiwzLCJjbHJEZ1BhZ2VTaXplIl0sWyJwYWdpbmF0aW9uIiwiIl0sWyJyb2xlIiwidG9vbHRpcCIsMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWFyb3VuZCJdLFsxLCJjb2x1bW4tY2VudGVyIiwibGlua3MiLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxl''@;'; put 'put ''ZnQiLCJjb2xvci1ncmVlbiIsMywiY2xpY2siXSxbInNoYXBlIiwiY2hlY2siLCJzaXplIiwiMjQiXSxbMSwidG9vbHRpcC1jb250ZW50Il0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLXJlZCIs''@;'; put 'put ''MywiY2xpY2siXSxbInNoYXBlIiwiYmFuIiwic2l6ZSIsIjIyIiw0LCJuZ0lmIl0sWzMsImNsclNtYWxsIiw0LCJuZ0lmIl0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLWJsdWUiLDMsImNsaWNr''@;'; put 'put ''Il0sWyJzaGFwZSIsImNvZGUiLCJzaXplIiwiMjgiXSxbMSwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiaWQiLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCJdLFsic2hhcGUiLCJiYW4iLCJzaXplIiwiMjIiXSxb''@;'; put 'put ''MywiY2xyU21hbGwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJkaXYiLDApKDEsImRpdiIsMSksbm4oMixqTmUsNSwwLCJkaXYiLDIpLHR0KDMsImRpdiIsMyksbm4oNCxaTmUsMiwwLCJoMyIsNCksbm4oNSx6TmUsNSwxLCJwIiw1KSxpdCgpLG5uKDYsWU5lLDMsMiwi''@;'; put 'put ''ZGl2Iiw2KSx0dCg3LCJkaXYiLDcpLG5uKDgsWE5lLDMwLDE0LCJkaXYiLDgpLGl0KCkoKSgpKSwyJmgmJihzdCgyKSx4dCgibmdJZiIsMD09PXYucmVtYWluZWQpLHN0KDEpLHh0KCJuZ0NsYXNzIixqaCg2LEtOZSwhdi5sb2FkZWQpKSxzdCgxKSx4dCgibmdJZiIsdi5sb2FkZWQmJjAhPT12''@;'; put 'put ''LnJlbWFpbmVkKSxzdCgxKSx4dCgibmdJZiIsdi5sb2FkZWQmJjAhPT12LnJlbWFpbmVkKSxzdCgxKSx4dCgibmdJZiIsIXYubG9hZGVkKSxzdCgyKSx4dCgibmdJZiIsdi5hcHByb3ZlTGlzdCYmMCE9PXYucmVtYWluZWQpKX0sZGVwZW5kZW5jaWVzOltFMSxCbyxKMyxYMyxFZixqcyxfcyxs''@;'; put 'put ''TyxTUyxhTyxNUyxrdyxQWixGWix1Tyx4UyxUUyxFUyxfdyxyTyxvTyxHMixKTF0sc3R5bGVzOlsiLmNvbHVtbi1jZW50ZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50''@;'; put 'put ''ZXJ9LmRhdGFncmlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhZ3JpZC1jb2x1bW5bX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFncmlkLWNvbHVtbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpub25lIWltcG9ydGFudH0ubGlua3NbX25nY29udGVudC0lQ09NUCVde2Zv''@;'; put 'put ''bnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcn0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRv''@;'; put 'put ''b2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzMxNDM1MSFpbXBvcnRhbnR9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmUsIC50b29s''@;'; put 'put ''dGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgIzMxNDM1MTtib3JkZXItYm90dG9tOi4yMDgzM3JlbSBzb2xpZCAjMzE0MzUxfS5ub0Jv''@;'; put 'put ''cmRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS5hcHByb3ZhbHMtbGlzdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzB2aDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4''@;'; put 'put ''LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5ub2FwcHJvdmFscy1pbmZvLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0''@;'; put 'put ''OmNhbGMoMTAwdmggLSAyMDBweCl9Il19KSxkfSkoKTtmdW5jdGlvbiAkTmUoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIpKDEsInRkIiw0KSxXdCgyKSxpdCgpLHR0KDMsInRkIiw0KSxXdCg0KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KCk7c3QoMiksamkoaCksc3Qo''@;'; put 'put ''Miksamkodi5qc1BhcmFtc1toXSl9fWZ1bmN0aW9uIHFOZShkLGcpezEmZCYmKHR0KDAsInAiLDY2KSxXdCgxLCIgVGhlcmUgYXJlIG5vIGRldGFpbHMgdG8gc2hvdyAiKSxpdCgpKX1mdW5jdGlvbiBlVmUoZCxnKXtpZigxJmQmJihMMCgwKSx0dCgxLCJkaXYiLDY3KSgyLCJzcGFuIiksV3Qo''@;'; put 'put ''MywiVGFibGUgSWQ6IiksaXQoKSx0dCg0LCJzdHJvbmciKSxXdCg1KSxpdCgpKCksdHQoNiwiZGl2IikoNywic3BhbiIpLFd0KDgsIlN1Ym1pdHRlcjoiKSxpdCgpLHR0KDksInNwYW4iLDY4KSxXdCgxMCksaXQoKSgpLHR0KDExLCJkaXYiKSgxMiwic3BhbiIpLFd0KDEzLCJTdWJtaXR0ZWQg''@;'; put 'put ''b246IiksaXQoKSx0dCgxNCwic3BhbiIsNjgpLFd0KDE1KSxpdCgpKCksdHQoMTYsImRpdiIpKDE3LCJzcGFuIiksV3QoMTgsIlN1Ym1pdHRlZCBSZWFzb246IiksaXQoKSx0dCgxOSwic3BhbiIsNjgpLFd0KDIwKSxpdCgpKCksTzAoKSksMiZkKXtjb25zdCBoPVV0KDUpO3N0KDUpLFVpKCIg''@;'; put 'put ''IixudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRhaWxzLlRBQkxFX0lELCIgIiksc3QoNSksVWkoIiAiLG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuU1VCTUlUVEVEX0JZX05NLCIgIiksc3QoNSksVWkoIiAiLG51bGw9PWgudGFibGVEZXRhaWxz''@;'; put 'put ''P251bGw6aC50YWJsZURldGFpbHMuU1VCTUlUVEVEX09OX0RUVE0sIiAiKSxzdCg1KSxVaSgiICIsbnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5TVUJNSVRURURfUkVBU09OX1RYVCwiICIpfX1mdW5jdGlvbiB0VmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0''@;'; put 'put ''dCgwLCJkaXYiLDQzKSgxLCJkaXYiLDQ0KSgyLCJkaXYiLDQ1KSxubigzLHFOZSwyLDAsInAiLDM5KSxubig0LGVWZSwyMSw0LCJuZy1jb250YWluZXIiLDE2KSxpdCgpLHR0KDUsImRpdiIsNDYpKDYsImRpdiIsNDcpKDcsImRpdiIsNDgpKDgsImRpdiIsNDkpKDksImJ1dHRvbiIsNTApLFpu''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoNCk7cmV0dXJuIGJ0KHkuZ29Ub0Jhc2UobnVsbD09eS5qc1BhcmFtcz9udWxsOnkuanNQYXJhbXMuVEFCTEVfTk0pKX0pLFd0KDEwLCIgR28gdG8gYmFzZSB0YWJsZSBzY3JlZW4gIiksaXQoKSx0dCgxMSwiYnV0dG9uIiw1MSks''@;'; put 'put ''Wm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCg0KTtyZXR1cm4gYnQoeS5nZXRUYWJsZSh5LnRhYmxlSWQpKX0pLFd0KDEyLCIgR28gdG8gZWRpdGVkIHNjcmVlbiAiKSxpdCgpLHR0KDEzLCJidXR0b24iLDUyKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5''@;'; put 'put ''PVV0KDQpO3JldHVybiBidCh5LmdvQmFjayhudWxsPT15LmpzUGFyYW1zP251bGw6eS5qc1BhcmFtcy5UQUJMRV9OTSkpfSksV3QoMTQsIiBHbyBiYWNrIHRvIGVkaXRvciAiKSxpdCgpKCkoKSgpLHR0KDE1LCJkaXYiLDUzKSgxNiwiYnV0dG9uIiw1NCksWm4oImNsaWNrIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBhKGgpLGJ0KFV0KDQpLmFwcHJvdmVUYWJsZSgpKX0pLFd0KDE3LCIgQUNDRVBUICIpLGl0KCksdHQoMTgsImJ1dHRvbiIsNTUpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCg0KS5yZWplY3RPcGVuPSEwKX0pLFd0KDE5LCIgUkVKRUNUICIpLGl0KCks''@;'; put 'put ''dHQoMjAsImNsci10b2dnbGUtY29udGFpbmVyIiw1NikoMjEsImNsci10b2dnbGUtd3JhcHBlciIpKDIyLCJpbnB1dCIsNTcpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCg0KS5mb3JtYXR0ZWRWYWx1ZXM9eSl9KSgiY2hhbmdlIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBhKGgpLGJ0KFV0KDQpLmZvcm1hdHRpbmdDaGFuZ2VkKCkpfSksaXQoKSx0dCgyMywibGFiZWwiLDU4KSxXdCgyNCksaXQoKSgpKCkoKSx0dCgyNSwiZGl2Iiw0NykoMjYsImRpdiIsMjUpKDI3LCJkaXYiLDU5KSgyOCwic3BhbiIsNjApLFd0KDI5LCIgQ2hhbmdlZCBSb3dzICIp''@;'; put 'put ''LHR0KDMwLCJzcGFuIiw2MSksV3QoMzEpLGl0KCkoKSx0dCgzMiwic3BhbiIsNjIpLFd0KDMzLCIgQWRkZWQgUm93cyAiKSx0dCgzNCwic3BhbiIsNjMpLFd0KDM1KSxpdCgpKCksdHQoMzYsInNwYW4iLDY0KSxXdCgzNywiIERlbGV0ZWQgUm93cyAiKSx0dCgzOCwic3BhbiIsNjUpLFd0KDM5''@;'; put 'put ''KSxpdCgpKCkoKSgpKCkoKSgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KDQpO3N0KDMpLHh0KCJuZ0lmIiwhaC50YWJsZURldGFpbHMpLHN0KDEpLHh0KCJuZ0lmIixoLnRhYmxlRGV0YWlscyksc3QoMTIpLHh0KCJjbHJMb2FkaW5nIixoLmFjY2VwdExvYWRpbmcpKCJkaXNhYmxlZCIsIWgubG9h''@;'; put 'put ''ZGluZ1RhYmxlfHwiTk8iPT09KG51bGw9PWgucGFyYW1zP251bGw6aC5wYXJhbXMuSVNBUFBST1ZFUil8fGgubm9DaGFuZ2VzKSxzdCgyKSx4dCgiZGlzYWJsZWQiLCFoLmxvYWRpbmdUYWJsZXx8Ik5PIj09PShudWxsPT1oLnBhcmFtcz9udWxsOmgucGFyYW1zLklTQVBQUk9WRVIpfHxoLm5v''@;'; put 'put ''Q2hhbmdlcyksc3QoNCkseHQoIm5nTW9kZWwiLGguZm9ybWF0dGVkVmFsdWVzKSxzdCgyKSxqaShoLmZvcm1hdHRlZFZhbHVlcz8iRm9ybWF0dGVkIjoiVW5mb3JtYXR0ZWQiKSxzdCg3KSxqaShoLmxlbnMudXBkYXRlZCksc3QoNCksamkoaC5sZW5zLm5ldyksc3QoNCksamkoaC5sZW5zLmRl''@;'; put 'put ''bGV0ZWQpfX1mdW5jdGlvbiBuVmUoZCxnKXsxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIsIkxvYWRpbmcgdGFibGUiKSxpdCgpKCkpfWZ1bmN0aW9uIHJWZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsNjkpKDEsInNwYW4iLDcwKSxXdCgyLCIgTG9hZGluZy4uLiAiKSxpdCgpLG5u''@;'; put 'put ''KDMsblZlLDMsMCwiZGl2IiwxNiksaXQoKSksMiZkKXtjb25zdCBoPVV0KDQpO3N0KDMpLHh0KCJuZ0lmIiwhaC5sb2FkaW5nVGFibGUpfX1mdW5jdGlvbiBpVmUoZCxnKXsxJmQmJih0dCgwLCJwIiw2NiksV3QoMSwiIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIHNob3cgIiksaXQoKSl9ZnVu''@;'; put 'put ''Y3Rpb24gb1ZlKGQsZyl7aWYoMSZkJiYodHQoMCwidGgiLDQpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgxKSxqaShoKX19ZnVuY3Rpb24gYVZlKGQsZyl7aWYoMSZkJiYodHQoMCwic3BhbiIsNzUpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpLmluZGV4''@;'; put 'put ''LHY9VXQoMikuaW5kZXgseT1VdCg0KTtzdCgxKSxVaSgiT3JpZ2luYWwgdmFsdWUgaXM6ICIseS5hcnJPZkNoYW5nZXNbdl1baF0sIiIpfX1jb25zdCBnYmU9ZnVuY3Rpb24oZCl7cmV0dXJueyJjaCB0b29sdGlwIHRvb2x0aXAtbWQgdG9vbHRpcC10b3AtcmlnaHQiOmR9fTtmdW5jdGlvbiBs''@;'; put 'put ''VmUoZCxnKXtpZigxJmQmJih0dCgwLCJ0ZCIsNzMpLFd0KDEpLG5uKDIsYVZlLDIsMSwic3BhbiIsNzQpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PWcuaW5kZXgseT1VdCgyKS5pbmRleCxDPVV0KDQpO3h0KCJuZ0NsYXNzIixqaCgzLGdiZSwxPT1DLmFyckNoYW5nZWRbeV1b''@;'; put 'put ''dl0mJiJ1cGRhdGVkIj09Qy5jaEFyclt5XSkpLHN0KDEpLFVpKCIgIixDLmRpZmZUYWJsZS5kYXRhW3ldW2hdLCIgIiksc3QoMSkseHQoIm5nSWYiLDE9PUMuYXJyQ2hhbmdlZFt5XVt2XSYmInVwZGF0ZWQiPT1DLmNoQXJyW3ldKX19ZnVuY3Rpb24gc1ZlKGQsZyl7aWYoMSZkJiYoTDAoMCks''@;'; put 'put ''bm4oMSxsVmUsMyw1LCJ0ZCIsNzIpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpLmluZGV4LHY9VXQoNCk7c3QoMSkseHQoIm5nRm9yT2YiLHYucm93S2V5c1toXSl9fWZ1bmN0aW9uIHVWZShkLGcpe2lmKDEmZCYmKHR0KDAsInRkIiw0KSxXdCgxKSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1w''@;'; put 'put ''bGljaXQsdj1VdCgyKS5pbmRleCx5PVV0KDQpO3N0KDEpLFVpKCIgIix5LmRpZmZUYWJsZS5kYXRhW3ZdW2hdLCIgIil9fWZ1bmN0aW9uIGNWZShkLGcpe2lmKDEmZCYmKEwwKDApLG5uKDEsdVZlLDIsMSwidGQiLDQxKSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoKS5pbmRleCx2PVV0KDQpO3N0''@;'; put 'put ''KDEpLHh0KCJuZ0Zvck9mIix2LnJvd0tleXNbaF0pfX1jb25zdCBtYmU9ZnVuY3Rpb24oZCxnLGgpe3JldHVybnthZGRlZFJvdzpkLGRlbGV0ZWRSb3c6Zyx1cGRhdGVkUm93Omh9fTtmdW5jdGlvbiBmVmUoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIsNzEpLG5uKDEsc1ZlLDIsMSwibmctY29u''@;'; put 'put ''dGFpbmVyIiwxNiksbm4oMixjVmUsMiwxLCJuZy1jb250YWluZXIiLDE2KSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy5pbmRleCx2PVV0KDQpO3h0KCJuZ0NsYXNzIixLQSgzLG1iZSwiYWRkZWQiPT12LmNoQXJyW2hdLCJkZWxldGVkIj09di5jaEFycltoXSwidXBkYXRlZCI9PXYuY2hBcnJbaF0p''@;'; put 'put ''KSxzdCgxKSx4dCgibmdJZiIsInVwZGF0ZWQiPT09di5jaEFycltoXSksc3QoMSkseHQoIm5nSWYiLCJ1cGRhdGVkIiE9PXYuY2hBcnJbaF0pfX1mdW5jdGlvbiBoVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDIzKSgxLCJkaXYiLDI0KSgyLCJkaXYiLDI1KSgzLCJk''@;'; put 'put ''aXYiLDI2KSg0LCJzcGFuIiwyNyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLmdvVG9BcHByb3ZhbHNMaXN0KCkpfSksYnIoNSwiY2xyLWljb24iLDI4KSxXdCg2LCJCYWNrIHRvIGFwcHJvdmFscyBsaXN0ICIpLGl0KCkoKSx0dCg3LCJkaXYiLDI5KSg4LCJo''@;'; put 'put ''MyIsMzApLFd0KDkpLGl0KCkoKSx0dCgxMCwiZGl2IiwzMSkoMTEsImEiLDMyKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMykuZ2V0RGV0YWlscygpKX0pLGJyKDEyLCJjbHItaWNvbiIsMzMpLGl0KCkoKSgpLHR0KDEzLCJwIiwzNCksV3QoMTQpLGl0KCkoKSx0''@;'; put 'put ''dCgxNSwiZGl2IiwzNSksbm4oMTYsdFZlLDQwLDEwLCJkaXYiLDM2KSxpdCgpLG5uKDE3LHJWZSw0LDEsImRpdiIsMzcpLHR0KDE4LCJkaXYiLDM4KSxubigxOSxpVmUsMiwwLCJwIiwzOSksdHQoMjAsInRhYmxlIiwzKSgyMSwidGhlYWQiKSgyMiwidHIiLDQwKSxubigyMyxvVmUsMiwxLCJ0''@;'; put 'put ''aCIsNDEpLGl0KCkoKSx0dCgyNCwidGJvZHkiKSxubigyNSxmVmUsMyw3LCJ0ciIsNDIpLGl0KCkoKSgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KDMpO3N0KDkpLFVpKCIgIixudWxsPT1oLmpzUGFyYW1zP251bGw6aC5qc1BhcmFtcy5UQUJMRV9OTSwiICIpLHN0KDUpLFVpKCIgIixudWxsPT1o''@;'; put 'put ''LmpzUGFyYW1zP251bGw6aC5qc1BhcmFtcy5UQUJMRV9ERVNDLCIgIiksc3QoMikseHQoIm5nSWYiLGgubG9hZGVkKSxzdCgxKSx4dCgibmdJZiIsIWgubG9hZGluZ1RhYmxlKSxzdCgyKSx4dCgibmdJZiIsaC5sb2FkaW5nVGFibGUmJmgubm9DaGFuZ2VzKSxzdCg0KSx4dCgibmdGb3JPZiIs''@;'; put 'put ''aC5yb3dIZWFkZXIpLHN0KDIpLHh0KCJuZ0Zvck9mIixoLnJvd0tleXMpfX1mdW5jdGlvbiBkVmUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDIxKSxubigxLGhWZSwyNiw3LCJkaXYiLDIyKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nSWYiLGgubG9hZGVkKX19ZnVu''@;'; put 'put ''Y3Rpb24gcFZlKGQsZyl7MSZkJiYodHQoMCwic3BhbiIsNzApLFd0KDEsIiBMb2FkaW5nLi4uICIpLGl0KCkpfWZ1bmN0aW9uIGdWZShkLGcpezEmZCYmKHR0KDAsImRpdiIpKDEsImgzIiksV3QoMiwiTG9hZGluZyBwcmV2aWV3IiksaXQoKSgpKX1mdW5jdGlvbiBtVmUoZCxnKXtpZigxJmQm''@;'; put 'put ''Jih0dCgwLCJkaXYiLDc2KSxubigxLHBWZSwyLDAsInNwYW4iLDc3KSxubigyLGdWZSwzLDAsImRpdiIsMTYpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSx4dCgibmdJZiIsIWgubG9hZGVkKSxzdCgxKSx4dCgibmdJZiIsIWgubG9hZGVkKX19ZnVuY3Rpb24gdlZlKGQsZyl7aWYo''@;'; put 'put ''MSZkJiYodHQoMCwiZGl2IiwxNyksbm4oMSxkVmUsMiwxLCJkaXYiLDE4KSx0dCgyLCJkaXYiLDE5KSxubigzLG1WZSwzLDIsImRpdiIsMjApLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoIm5nSWYiLGgubG9hZGVkKSxzdCgyKSx4dCgibmdJZiIsIWgubG9hZGVkKX19ZnVu''@;'; put 'put ''Y3Rpb24gQVZlKGQsZyl7aWYoMSZkJiYodHQoMCwidHIiKSgxLCJ0ZCIsNCksV3QoMiksaXQoKSx0dCgzLCJ0ZCIsNCksV3QoNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCg2KTtzdCgyKSxqaShoKSxzdCgyKSxqaSh2LnN1Ym1pdERldGFpbHNbaF0pfX1mdW5jdGlv''@;'; put 'put ''biB5VmUoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItdGFiLWNvbnRlbnQiKSgxLCJkaXYiLDk3KSgyLCJ0YWJsZSIsMykoMywidGhlYWQiKSg0LCJ0ciIpKDUsInRoIiw0KSxXdCg2LCJOYW1lIiksaXQoKSx0dCg3LCJ0aCIsNCksV3QoOCwiVmFsdWUiKSxpdCgpKCkoKSx0dCg5LCJ0Ym9keSIp''@;'; put 'put ''LG5uKDEwLEFWZSw1LDIsInRyIiw1KSxpdCgpKCkoKSgpKSwyJmQpe2NvbnN0IGg9VXQoNSk7c3QoMTApLHh0KCJuZ0Zvck9mIixoLnN1Ym1pdEFycil9fWZ1bmN0aW9uIHdWZShkLGcpe2lmKDEmZCYmKHR0KDAsInRyIikoMSwidGQiLDQpLFd0KDIpLGl0KCksdHQoMywidGQiLDQpLFd0KDQp''@;'; put 'put ''LGl0KCkoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9VXQoNSk7c3QoMiksamkoaCksc3QoMiksamkodi5qc1BhcmFtc1toXSl9fWZ1bmN0aW9uIGJWZShkLGcpe2lmKDEmZCYmKHR0KDAsImNsci10YWJzIikoMSwiY2xyLXRhYiIpKDIsImJ1dHRvbiIsOTUpLFd0KDMsIlN1Ym1pdHRl''@;'; put 'put ''ZCBUYWJsZSBEZXRhaWxzIiksaXQoKSxubig0LHlWZSwxMSwxLCJjbHItdGFiLWNvbnRlbnQiLDk2KSxpdCgpLHR0KDUsImNsci10YWIiKSg2LCJidXR0b24iLDk1KSxXdCg3LCJCYXNlIFRhYmxlIERldGFpbHMiKSxpdCgpLHR0KDgsImNsci10YWItY29udGVudCIpKDksImRpdiIsOTcpKDEw''@;'; put 'put ''LCJ0YWJsZSIsMykoMTEsInRoZWFkIikoMTIsInRyIikoMTMsInRoIiw0KSxXdCgxNCwiTmFtZSIpLGl0KCksdHQoMTUsInRoIiw0KSxXdCgxNiwiVmFsdWUiKSxpdCgpKCkoKSx0dCgxNywidGJvZHkiKSxubigxOCx3VmUsNSwyLCJ0ciIsNSksaXQoKSgpKCkoKSgpKCkpLDImZCl7Y29uc3Qg''@;'; put 'put ''aD1VdCg0KTtzdCg0KSx4dCgiY2xySWZBY3RpdmUiLCEwKSxzdCgxNCkseHQoIm5nRm9yT2YiLGgua2V5c0FycmF5KX19ZnVuY3Rpb24gX1ZlKGQsZyl7MSZkJiZicigwLCJkaXYiLDQzKX1mdW5jdGlvbiBDVmUoZCxnKXsxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIsIkxvYWRpbmcg''@;'; put 'put ''dGFibGUiKSxpdCgpKCkpfWZ1bmN0aW9uIGtWZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsOTgpKDEsInNwYW4iLDcwKSxXdCgyLCIgTG9hZGluZy4uLiAiKSxpdCgpLG5uKDMsQ1ZlLDMsMCwiZGl2IiwxNiksaXQoKSksMiZkKXtjb25zdCBoPVV0KDQpO3N0KDMpLHh0KCJuZ0lmIiwhaC5s''@;'; put 'put ''b2FkaW5nVGFibGUpfX1mdW5jdGlvbiBTVmUoZCxnKXtpZigxJmQmJih0dCgwLCJ0aCIsNCksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLGppKGgpfX1mdW5jdGlvbiBNVmUoZCxnKXtpZigxJmQmJih0dCgwLCJzcGFuIiw3NSksV3QoMSksaXQoKSksMiZkKXtj''@;'; put 'put ''b25zdCBoPVV0KCkuaW5kZXgsdj1VdCgyKS5pbmRleCx5PVV0KDQpO3N0KDEpLFVpKCJPcmlnaW5hbCB2YWx1ZSBpczogIix5LmFyck9mQ2hhbmdlc1t2XVtoXSwiIil9fWZ1bmN0aW9uIEVWZShkLGcpe2lmKDEmZCYmKHR0KDAsInRkIiw3MyksV3QoMSksbm4oMixNVmUsMiwxLCJzcGFuIiw3''@;'; put 'put ''NCksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9Zy5pbmRleCx5PVV0KDIpLmluZGV4LEM9VXQoNCk7eHQoIm5nQ2xhc3MiLGpoKDMsZ2JlLDE9PUMuYXJyQ2hhbmdlZFt5XVt2XSYmInVwZGF0ZWQiPT1DLmNoQXJyW3ldKSksc3QoMSksVWkoIiAiLEMuZGlmZlRhYmxlLmRhdGFb''@;'; put 'put ''eV1baF0sIiAiKSxzdCgxKSx4dCgibmdJZiIsMT09Qy5hcnJDaGFuZ2VkW3ldW3ZdJiYidXBkYXRlZCI9PUMuY2hBcnJbeV0pfX1mdW5jdGlvbiB4VmUoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLEVWZSwzLDUsInRkIiw3MiksTzAoKSksMiZkKXtjb25zdCBoPVV0KCkuaW5kZXgsdj1VdCg0''@;'; put 'put ''KTtzdCgxKSx4dCgibmdGb3JPZiIsdi5yb3dLZXlzW2hdKX19ZnVuY3Rpb24gVFZlKGQsZyl7aWYoMSZkJiYodHQoMCwidGQiLDQpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KDIpLmluZGV4LHk9VXQoNCk7c3QoMSksVWkoIiAiLHkuZGlmZlRhYmxlLmRhdGFb''@;'; put 'put ''dl1baF0sIiAiKX19ZnVuY3Rpb24gSVZlKGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxUVmUsMiwxLCJ0ZCIsNDEpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpLmluZGV4LHY9VXQoNCk7c3QoMSkseHQoIm5nRm9yT2YiLHYucm93S2V5c1toXSl9fWZ1bmN0aW9uIERWZShkLGcpe2lmKDEmZCYm''@;'; put 'put ''KHR0KDAsInRyIiw3MSksbm4oMSx4VmUsMiwxLCJuZy1jb250YWluZXIiLDE2KSxubigyLElWZSwyLDEsIm5nLWNvbnRhaW5lciIsMTYpLGl0KCkpLDImZCl7Y29uc3QgaD1nLmluZGV4LHY9VXQoNCk7eHQoIm5nQ2xhc3MiLEtBKDMsbWJlLCJhZGRlZCI9PXYuY2hBcnJbaF0sImRlbGV0ZWQi''@;'; put 'put ''PT12LmNoQXJyW2hdLCJ1cGRhdGVkIj09di5jaEFycltoXSkpLHN0KDEpLHh0KCJuZ0lmIiwidXBkYXRlZCI9PT12LmNoQXJyW2hdKSxzdCgxKSx4dCgibmdJZiIsInVwZGF0ZWQiIT09di5jaEFycltoXSl9fWZ1bmN0aW9uIExWZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRp''@;'; put 'put ''diIsODIpKDEsImRpdiIsODMpKDIsImRpdiIsMjUpKDMsImRpdiIsMjYpKDQsInNwYW4iLDg0KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMykuZ29Ub1N1Ym1pdExpc3QoKSl9KSxicig1LCJjbHItaWNvbiIsMjgpLFd0KDYsIkJhY2sgdG8gc3VibWl0dGVkIGxp''@;'; put 'put ''c3QgIiksaXQoKSgpLHR0KDcsImRpdiIsODUpKDgsImgzIiw4NiksV3QoOSksaXQoKSgpLHR0KDEwLCJkaXYiLDMxKSgxMSwic2VjdGlvbiIsOCkoMTIsImRpdiIsOSkoMTMsImRpdiIsODcpKDE0LCJpbnB1dCIsODgpLFpuKCJjaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0''@;'; put 'put ''KDMpLnNob3dEZXRhaWxzU2VsZWN0KHkpKX0pLGl0KCksdHQoMTUsImxhYmVsIiw4OSksV3QoMTYsIkFsbCBEZXRhaWxzIiksaXQoKSgpKCkoKSgpKCksdHQoMTcsInAiLDkwKSxXdCgxOCksaXQoKSgpLHR0KDE5LCJkaXYiLDQ0KSgyMCwiZGl2Iiw0NSkoMjEsImRpdiIsNjcpKDIyLCJzcGFu''@;'; put 'put ''IiksV3QoMjMsIlRhYmxlIElkOiIpLGl0KCksdHQoMjQsInN0cm9uZyIpKDI1LCJzcGFuIiksV3QoMjYpLGl0KCkoKSgpLHR0KDI3LCJkaXYiKSgyOCwic3BhbiIpLFd0KDI5LCJTdWJtaXR0ZWQgb246IiksaXQoKSx0dCgzMCwic3BhbiIsNjgpLFd0KDMxKSxpdCgpKCksdHQoMzIsImRpdiIp''@;'; put 'put ''KDMzLCJzcGFuIiksV3QoMzQsIlN1Ym1pdCBNZXNzYWdlOiIpLGl0KCksdHQoMzUsInNwYW4iKSxXdCgzNiksaXQoKSgpKCksdHQoMzcsImRpdiIsNDYpKDM4LCJkaXYiLDQ3KSgzOSwiZGl2Iiw0OCkoNDAsImRpdiIsNDkpKDQxLCJidXR0b24iLDUwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7''@;'; put 'put ''YShoKTtjb25zdCB5PVV0KDMpO3JldHVybiBidCh5LmdvVG9CYXNlKHkuc3ViT2JqLmJhc2UpKX0pLFd0KDQyLCIgR28gdG8gYmFzZSB0YWJsZSBzY3JlZW4gIiksaXQoKSx0dCg0MywiYnV0dG9uIiw1MSksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgzKTtyZXR1cm4g''@;'; put 'put ''YnQoeS5nZXRUYWJsZSh5LnN1Yk9iai50YWJsZUlkKSl9KSxXdCg0NCwiIEdvIHRvIGVkaXRlZCBzY3JlZW4gIiksaXQoKSx0dCg0NSwiYnV0dG9uIiw1MiksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgzKTtyZXR1cm4gYnQoeS5nb0JhY2soeS5zdWJPYmouYmFzZSkp''@;'; put 'put ''fSksV3QoNDYsIiBHbyBiYWNrIHRvIGVkaXRvciAiKSxpdCgpKCkoKSgpLHR0KDQ3LCJkaXYiLDQ3KSg0OCwiZGl2IiwyNSkoNDksImRpdiIsNTkpKDUwLCJzcGFuIiw2MCksV3QoNTEsIiBDaGFuZ2VkIFJvd3MgIiksdHQoNTIsInNwYW4iLDYxKSxXdCg1MyksaXQoKSgpLHR0KDU0LCJzcGFu''@;'; put 'put ''Iiw2MiksV3QoNTUsIiBBZGRlZCBSb3dzICIpLHR0KDU2LCJzcGFuIiw2MyksV3QoNTcpLGl0KCkoKSx0dCg1OCwic3BhbiIsNjQpLFd0KDU5LCIgRGVsZXRlZCBSb3dzICIpLHR0KDYwLCJzcGFuIiw2NSksV3QoNjEpLGl0KCkoKSgpKCkoKSx0dCg2MiwiZGl2Iiw0NykoNjMsImNsci10b2dn''@;'; put 'put ''bGUtY29udGFpbmVyIiw5MSkoNjQsImNsci10b2dnbGUtd3JhcHBlciIpKDY1LCJpbnB1dCIsNTcpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgzKS5mb3JtYXR0ZWRWYWx1ZXM9eSl9KSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0''@;'; put 'put ''KFV0KDMpLmZvcm1hdHRpbmdDaGFuZ2VkKCkpfSksaXQoKSx0dCg2NiwibGFiZWwiKSxXdCg2NyksaXQoKSgpKCkoKSgpKCksbm4oNjgsYlZlLDE5LDIsImNsci10YWJzIiwxNiksdHQoNjksImRpdiIsOTIpLG5uKDcwLF9WZSwxLDAsImRpdiIsMzYpLGl0KCksbm4oNzEsa1ZlLDQsMSwiZGl2''@;'; put 'put ''Iiw5MyksdHQoNzIsImRpdiIsOTQpKDczLCJ0YWJsZSIsMykoNzQsInRoZWFkIikoNzUsInRyIiw0MCksbm4oNzYsU1ZlLDIsMSwidGgiLDQxKSxpdCgpKCksdHQoNzcsInRib2R5Iiksbm4oNzgsRFZlLDMsNywidHIiLDQyKSxpdCgpKCkoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgzKTtzdCg5''@;'; put 'put ''KSxVaSgiICIsaC5zdWJPYmouYmFzZSwiICIpLHN0KDkpLFVpKCIgIixoLnRhYmxlRGVzY3JpcHRpb24sIiAiKSxzdCg4KSxVaSgiICIsaC5zdWJPYmoudGFibGVJZCwiIiksc3QoNSksVWkoIiAiLGguc3ViT2JqLnN1Ym1pdHRlZCwiICIpLHN0KDUpLFVpKCIgIixoLnN1Yk9iai5zdWJtaXRS''@;'; put 'put ''ZWFzb24sIiAiKSxzdCgxNyksamkoaC5sZW5zLnVwZGF0ZWQpLHN0KDQpLGppKGgubGVucy5uZXcpLHN0KDQpLGppKGgubGVucy5kZWxldGVkKSxzdCg0KSx4dCgibmdNb2RlbCIsaC5mb3JtYXR0ZWRWYWx1ZXMpLHN0KDIpLGppKGguZm9ybWF0dGVkVmFsdWVzPyJGb3JtYXR0ZWQiOiJVbmZv''@;'; put 'put ''cm1hdHRlZCIpLHN0KDEpLHh0KCJuZ0lmIixoLnRhYmxlRmxhZyksc3QoMikseHQoIm5nSWYiLGgubG9hZGVkKSxzdCgxKSx4dCgibmdJZiIsIWgubG9hZGluZ1RhYmxlKSxzdCg1KSx4dCgibmdGb3JPZiIsaC5yb3dIZWFkZXIpLHN0KDIpLHh0KCJuZ0Zvck9mIixoLnJvd0tleXMpfX1mdW5j''@;'; put 'put ''dGlvbiBPVmUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDgwKSxubigxLExWZSw3OSwxNSwiZGl2Iiw4MSksaXQoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDEpLHh0KCJuZ0lmIixoLmxvYWRlZCl9fWZ1bmN0aW9uIFJWZShkLGcpezEmZCYmKHR0KDAsImRpdiIpKDEsImgzIiksV3QoMiwi''@;'; put 'put ''TG9hZGluZyBzdWJtaXR0ZWQgdGFibGUiKSxpdCgpKCkpfWZ1bmN0aW9uIEJWZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsOTkpKDEsImRpdiIsMTAwKSgyLCJzcGFuIiw3MCksV3QoMywiIExvYWRpbmcuLi4gIiksaXQoKSxubig0LFJWZSwzLDAsImRpdiIsMTYpLGl0KCkoKSksMiZkKXtj''@;'; put 'put ''b25zdCBoPVV0KDIpO3N0KDQpLHh0KCJuZ0lmIiwhaC5sb2FkZWQpfX1mdW5jdGlvbiBQVmUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiKSxubigxLE9WZSwyLDEsImRpdiIsNzgpLG5uKDIsQlZlLDUsMSwiZGl2Iiw3OSksaXQoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoIm5nSWYi''@;'; put 'put ''LGgubG9hZGVkKSxzdCgxKSx4dCgibmdJZiIsIWgubG9hZGVkKX19Y29uc3QgRlZlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YW5kYWxvbmU6ITB9fTtsZXQgdmJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2Vydmlj''@;'; put 'put ''ZT12LHRoaXMucm91dGVyPXksdGhpcy5yb3V0ZT1DLHRoaXMuZGV0YWlsc09wZW49ITEsdGhpcy5yZWplY3RPcGVuPSExLHRoaXMubGVucz17bmV3OjAsdXBkYXRlZDowLGRlbGV0ZWQ6MH0sdGhpcy5sb2FkZWQ9ITEsdGhpcy5sb2FkaW5nVGFibGU9ITEsdGhpcy5zdWJtaXRSZWFzb249IiIs''@;'; put 'put ''dGhpcy5pbnN0YW5jZT0iaG90SW5zdGFuY2UiLHRoaXMuYWNjZXB0TG9hZGluZz0hMSx0aGlzLnJlamVjdExvYWRpbmc9ITEsdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy50YWJsZUZsYWc9ITEsdGhpcy5yb3dLZXlzPVtdLHRoaXMuc2Vjb25kT3Blbj0hMSx0aGlzLmZvcm1hdHRlZFZhbHVlcz0h''@;'; put 'put ''MCx0aGlzLmNoYW5nZXNBcnI9W10sdGhpcy5kaWZmVGFibGU9e2RhdGE6W119fWdldCBub0NoYW5nZXMoKXtyZXR1cm4gMD09PXRoaXMubGVucy5uZXcmJjA9PT10aGlzLmxlbnMudXBkYXRlZCYmMD09PXRoaXMubGVucy5kZWxldGVkfWdvVG9CYXNlKGgpe3RoaXMucm91dGUubmF2aWdhdGVC''@;'; put 'put ''eVVybCgiL3ZpZXcvZGF0YS8iK2gpfWdvVG9BcHByb3ZhbHNMaXN0KCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvYXBwcm92ZSIpfWdldFRhYmxlKGgpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIraCl9Z29CYWNrKGgpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgi''@;'; put 'put ''L2VkaXRvci8iK2gpfWdvVG9WaWV3ZXIoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1zaG93RGV0YWlsc1NlbGVjdChoKXtoLnByZXZlbnREZWZhdWx0KCksdGhpcy50YWJsZUZsYWc9IXRoaXMudGFibGVGbGFnfWdldERldGFpbHMoKXt0aGlzLmRldGFpbHNPcGVu''@;'; put 'put ''PSEwfW9uSG90U2VsZWN0aW9uKGgpe3RoaXMuaG90U2VsZWN0aW9uPWguc2xpY2UoMCw0KX1vbkhvdERlc2VsZWN0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuaG90U2VsZWN0aW9uPW51bGx9LDEwMCl9cmVqZWN0aW5nKCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbioo''@;'; put 'put ''KXt0aGlzLnJlamVjdExvYWRpbmc9ITAsdGhpcy5zdWJtaXRSZWFzb249dGhpcy5zdWJtaXRSZWFzb24ucmVwbGFjZSgvXG4vZywiLiAiKTtsZXQgaD17U1RQX0FDVElPTjoiUkVKRUNUX1RBQkxFIixUQUJMRTp0aGlzLnRhYmxlSWQsU1RQX1JFQVNPTjp0aGlzLnN1Ym1pdFJlYXNvbn07eWll''@;'; put 'put ''bGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UucmVqZWN0aW5nKGgsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvcmVqZWN0aW9uIikudGhlbih2PT57dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvaGlzdG9yeSIpfSkuY2F0Y2godj0+e3RoaXMuYWNjZXB0TG9hZGluZz0hMSx0aGlzLnJlamVj''@;'; put 'put ''dExvYWRpbmc9ITF9KX0pfWFwcHJvdmVUYWJsZSgpe3ZhciBoLHY7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmFjY2VwdExvYWRpbmc9ITA7bGV0IHk9e0FDVElPTjoiQVBQUk9WRV9UQUJMRSIsVEFCTEU6dGhpcy50YWJsZUlkLERJRkZUSU1FOm51bGw9''@;'; put 'put ''PT0oaD10aGlzLnBhcmFtcyl8fHZvaWQgMD09PWg/dm9pZCAwOmguRElGRlRJTUUsTElCRFM6bnVsbD09PSh2PXRoaXMucGFyYW1zKXx8dm9pZCAwPT09dj92b2lkIDA6di5MSUJEU307eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UuYXBwcm92ZVRhYmxlKHksIlNBU0NvbnRyb2xUYWJsZSIs''@;'; put 'put ''ImF1ZGl0b3JzL3Bvc3RkYXRhIikudGhlbihDPT57dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvaGlzdG9yeSIpfSkuY2F0Y2goQz0+e3RoaXMuYWNjZXB0TG9hZGluZz0hMX0pfSl9Z29Ub1N1Ym1pdExpc3QoKXt0aGlzLnNhc1N0b3JlU2VydmljZS5nb1RvU3VibWl0TGlzdCgpfWNhbGxD''@;'; put 'put ''aGFuZ2VzSW5mbyhoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmdldENoYW5nZUluZm8oaCkudGhlbih2PT57dGhpcy50YWJsZURldGFpbHM9di5qc3BhcmFtc1swXSx0aGlzLmpzUGFyYW1zPXYuanNwYXJhbXNb''@;'; put 'put ''MF07bGV0IHk9W107Zm9yKGNvbnN0IEMgaW4gdGhpcy5qc1BhcmFtcyl0aGlzLmpzUGFyYW1zLmhhc093blByb3BlcnR5KEMpJiZ5LnB1c2goQyk7dGhpcy5rZXlzQXJyYXk9eX0pLmNhdGNoKHY9Pnt0aGlzLmFjY2VwdExvYWRpbmc9ITF9KS5maW5hbGx5KCgpPT57dGhpcy5sb2FkZWQ9ITB9''@;'; put 'put ''KX0pfWZvcm1hdHRpbmdDaGFuZ2VkKCl7dGhpcy5jYWxjRGlmZigpfWNhbGNEaWZmKCl7dmFyIGgsdix5O2lmKCF0aGlzLnJlc3BvbnNlKXJldHVybjtsZXQgQz10aGlzLnJlc3BvbnNlLm5ldyxJPXRoaXMucmVzcG9uc2UudXBkYXRlcyxqPXRoaXMucmVzcG9uc2UuZGVsZXRlZCxjZT10aGlz''@;'; put 'put ''LnJlc3BvbnNlLm9yaWdpbmFsczt0aGlzLmZvcm1hdHRlZFZhbHVlcyYmKEM9dGhpcy5yZXNwb25zZS5mbXRfbmV3LEk9dGhpcy5yZXNwb25zZS5mbXRfdXBkYXRlcyxqPXRoaXMucmVzcG9uc2UuZm10X2RlbGV0ZWQsY2U9dGhpcy5yZXNwb25zZS5mbXRfb3JpZ2luYWxzKSx0aGlzLm9yaWdp''@;'; put 'put ''bmFscz1jZSx0aGlzLnJvd0tleXM9W107Zm9yKGxldCBBcj0wO0FyPEkubGVuZ3RoO0FyKyspe2xldCBZcj1PYmplY3Qua2V5cyhJW0FyXSk7Zm9yKGxldCBfaT0wO19pPFlyLmxlbmd0aDtfaSsrKUlbQXJdW1lyW19pXV0hPT1jZVtBcl1bWXJbX2ldXSYmdGhpcy5jaGFuZ2VzQXJyLnB1c2go''@;'; put 'put ''e2luZDpBcixmaWVsZDpZcltfaV0scHJvcDpJW0FyXVtZcltfaV1dLG9yaWdpbmFsOmNlW0FyXVtZcltfaV1dfSl9dGhpcy5sZW5zPXtuZXc6KG51bGw9PT0oaD10aGlzLnBhcmFtcyl8fHZvaWQgMD09PWg/dm9pZCAwOmguTlVNX0FEREVEKXx8MCx1cGRhdGVkOihudWxsPT09KHY9dGhpcy5w''@;'; put 'put ''YXJhbXMpfHx2b2lkIDA9PT12P3ZvaWQgMDp2Lk5VTV9VUERBVEVEKXx8MCxkZWxldGVkOihudWxsPT09KHk9dGhpcy5wYXJhbXMpfHx2b2lkIDA9PT15P3ZvaWQgMDp5Lk5VTV9ERUxFVEVEKXx8MH07bGV0IEtlPVtdLGh0PUkuY29uY2F0KEMsaik7Zm9yKGxldCBBcj0wO0FyPHRoaXMucmVz''@;'; put 'put ''cG9uc2UuY29scy5sZW5ndGg7QXIrKylLZS5wdXNoKHRoaXMucmVzcG9uc2UuY29sc1tBcl0uTkFNRSk7bGV0IEJ0PXRoaXMubGVucy5uZXc7dGhpcy5hZGRDb3VudD1CdDtsZXQgJHQ9dGhpcy5sZW5zLnVwZGF0ZWQsRG49W10saXI9W107Zm9yKGxldCBBcj0wO0FyPEtlLmxlbmd0aDtBcisr''@;'; put 'put ''KWlyLnB1c2goe2RhdGE6S2VbQXJdLHJlYWRPbmx5OiEwfSk7dGhpcy5kaWZmVGFibGUuZGF0YT1odDtmb3IobGV0IEFyPTA7QXI8aHQubGVuZ3RoO0FyKyspe2xldCBfaT1PYmplY3Qua2V5cyhodFtBcl0pO3RoaXMucm93S2V5cy5wdXNoKF9pKX1sZXQgcHI9W10sRXI9W107Zm9yKGxldCBB''@;'; put 'put ''cj0wO0FyPHRoaXMuZGlmZlRhYmxlLmRhdGEubGVuZ3RoO0FyKyspe2lmKEFyPCR0JiYwIT09JHQpe3ByLnB1c2goW10pLEVyLnB1c2goW10pLERuLnB1c2goInVwZGF0ZWQiKTtsZXQgWXI9T2JqZWN0LmtleXModGhpcy5kaWZmVGFibGUuZGF0YVtBcl0pO2ZvcihsZXQgX2k9MDtfaTxZci5s''@;'; put 'put ''ZW5ndGg7X2krKyl7bGV0IEtpPVlyW19pXTtjZVtBcl1bS2ldIT09SVtBcl1bS2ldPyhwcltBcl0ucHVzaCghMCksRXJbQXJdLnB1c2goY2VbQXJdW0tpXSkpOihwcltBcl0ucHVzaCghMSksRXJbQXJdLnB1c2gobnVsbCkpfXRoaXMuYXJyQ2hhbmdlZD1wcix0aGlzLmFyck9mQ2hhbmdlcz1F''@;'; put 'put ''cn1Bcj49JHQmJkFyPCR0K0J0JiZEbi5wdXNoKCJhZGRlZCIpLEFyPkJ0KyR0LTEmJkRuLnB1c2goImRlbGV0ZWQiKX10aGlzLmNoQXJyPURuLHRoaXMucm93SGVhZGVyPXRoaXMucm93S2V5c1swXSx0aGlzLmRpZmZUYWJsZS5kYXRhPWh0fW5nQWZ0ZXJWaWV3SW5pdCgpe3JldHVybiB0byh0''@;'; put 'put ''aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYodGhpcy5fZGV0YWlsc1N1Yj10aGlzLnNhc1N0b3JlU2VydmljZS5zdWJtaXR0RGV0YWlsLnN1YnNjcmliZSh2PT50byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zdWJPYmo9di52aWV3RGF0YSx0aGlzLnRhYmxl''@;'; put 'put ''SWQ9di52aWV3RGF0YS50YWJsZUlkLHRoaXMuc3VibWl0dGVkPXYudmlld0RhdGEuc3ViLHRoaXMuc3VibWl0RGV0YWlscz12LmRhdGEsdGhpcy5zdWJtaXRBcnI9W107Zm9yKGxldCBDIGluIHRoaXMuc3VibWl0RGV0YWlscykic3ViIiE9PUMmJnRoaXMuc3VibWl0QXJyLnB1c2goQyk7bGV0''@;'; put 'put ''IHk9e0FDVElPTjoiU0hPV19ESUZGUyIsVEFCTEU6dGhpcy50YWJsZUlkLERJRkZUSU1FOihuZXcgRGF0ZSkudG9VVENTdHJpbmcoKX07dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2hvd0RpZmZzKHksIlNBU0NvbnRyb2xUYWJsZSIsImF1ZGl0b3JzL3Bvc3RkYXRhIikudGhlbihDPT57dGhpcy5w''@;'; put 'put ''YXJhbXM9Qy5wYXJhbXNbMF0sdGhpcy5yZXNwb25zZT1DLHRoaXMuY2FsY0RpZmYoKX0pLmNhdGNoKEM9PkMpLmZpbmFsbHkoKCk9Pnt0aGlzLmxvYWRpbmdUYWJsZT0hMH0pLHRoaXMuY2FsbENoYW5nZXNJbmZvKHRoaXMudGFibGVJZCl9KSksdm9pZCAwPT09dGhpcy5yb3V0ZXIuc25hcHNo''@;'; put 'put ''b3QucGFyYW1zLnRhYmxlSWQpcmV0dXJuO3RoaXMudGFibGVJZD10aGlzLnJvdXRlci5zbmFwc2hvdC5wYXJhbXMudGFibGVJZDtsZXQgaD17QUNUSU9OOiJTSE9XX0RJRkZTIixUQUJMRTp0aGlzLnRhYmxlSWQsRElGRlRJTUU6KG5ldyBEYXRlKS50b1VUQ1N0cmluZygpfTt0aGlzLnNhc1N0''@;'; put 'put ''b3JlU2VydmljZS5zaG93RGlmZnMoaCwiU0FTQ29udHJvbFRhYmxlIiwiYXVkaXRvcnMvcG9zdGRhdGEiKS50aGVuKHY9Pnt0aGlzLnBhcmFtcz12LnBhcmFtc1swXSx0aGlzLnJlc3BvbnNlPXYsdGhpcy5jYWxjRGlmZigpfSkuY2F0Y2godj0+e3RoaXMuYWNjZXB0TG9hZGluZz0hMX0pLmZp''@;'; put 'put ''bmFsbHkoKCk9Pnt0aGlzLmxvYWRpbmdUYWJsZT0hMCx0aGlzLnNldEZvY3VzKCl9KSx0aGlzLmNhbGxDaGFuZ2VzSW5mbyh0aGlzLnRhYmxlSWQpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXRhaWxzU3ViJiZ0aGlzLl9kZXRhaWxzU3ViLnVuc3Vic2NyaWJlKCl9c2V0Rm9jdXMoKXtzZXRU''@;'; put 'put ''aW1lb3V0KCgpPT57bGV0IGg9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2NlcHRCdG4iKTtoJiZoLmZvY3VzKCl9LDIwMCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGtnKSxLdChtdSksS3QoSjEpLEt0KEVsKSl9LGQuXHUw''@;'; put 'put ''Mjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1hcHByb3ZlLWRldGFpbHMiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjM0LHZhcnM6MTAsY29uc3RzOltbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRp''@;'; put 'put ''dGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwidGFibGUiXSxbMSwibGVmdCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbMSwiZm9ybS1ibG9jayJdLFsx''@;'; put 'put ''LCJmb3JtLWdyb3VwIl0sWyJmb3IiLCJmb3JtRmllbGRzXzgiXSxbImlkIiwiZm9ybUZpZWxkc184Iiwicm93cyIsIjUiLDEsInctMTAwIiwzLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJpbm5lckhUTUwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJi''@;'; put 'put ''dG4tb3V0bGluZSIsMywiY2xpY2siXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwiY2FyZCIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsImNhcmQiXSxbImNs''@;'; put 'put ''YXNzIiwiY2FyZC1oZWFkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwib3ZlcmZsb3ctYXV0byIsIm1yLTEyIl0sWyJjbGFzcyIsImgtNzB2aCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBhbGlnbi1p''@;'; put 'put ''dGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwiY2FyZCIsImNsYXNzIiwibXQtMCIsNCwibmdJZiJdLFsxLCJtdC0wIl0sWzEsImNhcmQtaGVhZGVyIiwicC0wIl0s''@;'; put 'put ''WzEsImNsci1yb3ciXSxbMSwiY2xyLWNvbC1tZC00IiwiYXBwcm92YWxCYWNrIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwibS0wIiwzLCJjbGljayJdLFsic2hhcGUiLCJjYXJldCIsImRpciIsImxlZnQiLCJzaXplIiwiMjAiXSxbMSwiY2xyLWNvbC1tZC00IiwiZC1mbGV4''@;'; put 'put ''IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJtdC0wIiwiZm9udC13ZWlnaHQtMzAwIl0sWzEsImNsci1jb2wtbWQtNCIsImFwcHJvdmFsSW5mbyJdLFsxLCJ0b29sdGlwIiwidG9vbHRpcC1zbSIsInRvb2x0aXAtdG9wLWxlZnQiLDMsImNsaWNrIl0sWyJzaGFwZSIsImluZm8tc3Rh''@;'; put 'put ''bmRhcmQiLCJzaXplIiwiMjgiXSxbMSwidGV4dC1jZW50ZXIiLCJtdC0xMCJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIl0sWyJjbGFzcyIsImNhcmQtdGV4dCIsNCwibmdJZiJdLFsiY2xhc3MiLCJoLTI0dmggZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24t''@;'; put 'put ''aXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzEsInRhYmxlQ29udCIsIm10LTAiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC1zaXplLTE4Iiw0LCJuZ0lmIl0sWzEsImQtZmxleCJdLFsiY2xhc3MiLCJsZWZ0Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiZC1mbGV4IiwzLCJu''@;'; put 'put ''Z0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImNsci1yb3ciLCJmb250LXNpemUtMTUiXSxbMSwiY2xyLWNvbC1tZC01Il0sWzEsImNsci1jb2wtbWQtNyJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsx''@;'; put 'put ''LCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwibXQtMCJdLFsxLCJjbHItcm93IiwiY2xyLWdhcC01IiwiY2xyLWdhcC1zbS0wIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20i''@;'; put 'put ''LCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50''@;'; put 'put ''LWNlbnRlciIsImNsci1mbGV4LWNvbHVtbiIsImNsci1nYXAtNSIsImNsci1mbGV4LXNtLXJvdyIsImNsci1nYXAtc20tMCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImlkIiwiYWNjZXB0QnRuIiwidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMs''@;'; put 'put ''ImNsckxvYWRpbmciLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJpZCIsInJlamVjdEJ0biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuIiwiYnRuLWRhbmdlciIsIm1yLTAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwibS0wIiwibWwtMjBpIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUi''@;'; put 'put ''LCIiLCJjaGVja2VkIiwiIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJdLFsxLCJmb3JtYXR0ZWQtdmFsdWVzLXRvZ2dsZSJdLFsxLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZ2FwLTUiLCJjbHItZmxleC1zbS1yb3ciLCJjbHItZ2FwLXNtLTAiXSxbMSwi''@;'; put 'put ''bGFiZWwiLCJsYWJlbC13YXJuaW5nIl0sWzEsImJhZGdlIiwiYmFkZ2Utd2FybmluZyJdLFsxLCJsYWJlbCIsImxhYmVsLXN1Y2Nlc3MiXSxbMSwiYmFkZ2UiLCJiYWRnZS1zdWNjZXNzIl0sWzEsImxhYmVsIiwibGFiZWwtZGFuZ2VyIl0sWzEsImJhZGdlIiwiYmFkZ2UtZGFuZ2VyIl0sWzEs''@;'; put 'put ''InRleHQtY2VudGVyIiwiZm9udC1zaXplLTE4Il0sWzEsIm10LTE1Il0sWzEsIm10LTEwIl0sWzEsImgtMjR2aCIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0sWzEsImQtZmxleCIsMywi''@;'; put 'put ''bmdDbGFzcyJdLFsiY2xhc3MiLCJsZWZ0IiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwibGVmdCIsMywibmdDbGFzcyJdLFsiY2xhc3MiLCJ0b29sdGlwLWNvbnRlbnQiLDQsIm5nSWYiXSxbMSwidG9vbHRpcC1jb250ZW50Il0sWzEsImgtNzB2aCIsImQtZmxleCIsImp1''@;'; put 'put ''c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xhc3MiLCJzcGlubmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNhcmQt''@;'; put 'put ''YmxvY2siLDQsIm5nSWYiXSxbMSwiZC1mbGV4IiwiZmxleC1jb2x1bW4iLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWyJjbGFzcyIsImNhcmQgbS0wIiw0LCJuZ0lmIl0sWzEsImNhcmQiLCJtLTAiXSxbMSwiY2FyZC1oZWFkZXIiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUi''@;'; put 'put ''LDMsImNsaWNrIl0sWzEsImNsci1jb2wtbWQtNCJdLFsxLCJtdC0wIiwiZm9udC13ZWlnaHQtMzAwIiwidGV4dC1jZW50ZXIiXSxbMSwidG9nZ2xlLXN3aXRjaCJdLFsidHlwZSIsImNoZWNrYm94IiwiaWQiLCJ0b2dnbGVfMSIsMywiY2hhbmdlIl0sWyJmb3IiLCJ0b2dnbGVfMSJdLFsxLCJt''@;'; put 'put ''LTAiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm0tMCIsIm1sLTIwLWkiXSxbMSwiY2FyZC1ibG9jayIsInAtMCIsIm92ZXJmbG93LWF1dG8iLCJtci0xMiJdLFsiY2xhc3MiLCJoLTI1dmggZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIg''@;'; put 'put ''YWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzEsInRhYmxlQ29udCJdLFsiY2xyVGFiTGluayIsIiJdLFs0LCJjbHJJZkFjdGl2ZSJdLFsxLCJvdmVyZmxvdy1hdXRvIl0sWzEsImgtMjV2aCIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImFs''@;'; put 'put ''aWduLWl0ZW1zLWNlbnRlciJdLFsxLCJjYXJkLWJsb2NrIl0sWzEsImxvYWRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImNsci1tb2RhbCIsMCksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuZGV0YWlsc09wZW49Q30pLHR0KDEs''@;'; put 'put ''ImgzIiwxKSxXdCgyLCJBcHByb3ZhbCBEZXRhaWxzIiksaXQoKSx0dCgzLCJkaXYiLDIpKDQsInRhYmxlIiwzKSg1LCJ0aGVhZCIpKDYsInRyIikoNywidGgiLDQpLFd0KDgsIk5hbWUiKSxpdCgpLHR0KDksInRoIiw0KSxXdCgxMCwiVmFsdWUiKSxpdCgpKCkoKSx0dCgxMSwidGJvZHkiKSxu''@;'; put 'put ''bigxMiwkTmUsNSwyLCJ0ciIsNSksaXQoKSgpKCksdHQoMTMsImRpdiIsNikoMTQsImJ1dHRvbiIsNyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmRldGFpbHNPcGVuPSExfSksV3QoMTUsIiBPayAiKSxpdCgpKCkoKSx0dCgxNiwiY2xyLW1vZGFsIiwwKSxabigiY2xyTW9kYWxP''@;'; put 'put ''cGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5yZWplY3RPcGVuPUN9KSx0dCgxNywiaDMiLDEpLFd0KDE4LCJSZWFzb24gTWVzc2FnZSIpLGl0KCksdHQoMTksImRpdiIsMikoMjAsImZvcm0iKSgyMSwic2VjdGlvbiIsOCkoMjIsImRpdiIsOSkoMjMsImxhYmVsIiwxMCksV3QoMjQs''@;'; put 'put ''IlJlYXNvbiBmb3IgcmVqZWN0aW5nPyIpLGl0KCksdHQoMjUsInRleHRhcmVhIiwxMSksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LnN1Ym1pdFJlYXNvbj1DfSksaXQoKSgpKCkoKSgpLHR0KDI2LCJkaXYiLDYpKDI3LCJidXR0b24iLDEyKSxabigiY2xpY2siLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHYucmVqZWN0T3Blbj0hMX0pLFd0KDI4LCIgQ2FuY2VsICIpLGl0KCksdHQoMjksImJ1dHRvbiIsMTMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZWplY3RpbmcoKX0pLFd0KDMwLCIgT0sgIiksaXQoKSgpKCksdHQoMzEsImRpdiIsMTQpLG5uKDMy''@;'; put 'put ''LHZWZSw0LDIsImRpdiIsMTUpLG5uKDMzLFBWZSwzLDIsImRpdiIsMTYpLGl0KCkpLDImaCYmKHh0KCJjbHJNb2RhbE9wZW4iLHYuZGV0YWlsc09wZW4pLHN0KDEyKSx4dCgibmdGb3JPZiIsdi5rZXlzQXJyYXkpLHN0KDQpLHh0KCJjbHJNb2RhbE9wZW4iLHYucmVqZWN0T3Blbiksc3QoOSks''@;'; put 'put ''eHQoIm5nTW9kZWwiLHYuc3VibWl0UmVhc29uKSgibmdNb2RlbE9wdGlvbnMiLGxzKDksRlZlKSkoImlubmVySFRNTCIsdi5zdWJtaXRSZWFzb24sbW0pLHN0KDQpLHh0KCJjbHJMb2FkaW5nIix2LnJlamVjdExvYWRpbmcpLHN0KDMpLHh0KCJuZ0lmIiwhdi5zdWJtaXR0ZWQpLHN0KDEpLHh0''@;'; put 'put ''KCJuZ0lmIix2LnN1Ym1pdHRlZCkpfSxkZXBlbmRlbmNpZXM6W0UxLHFsLEJvLG9nLHAxLHVoLGpzLHR2LF9zLHQ0LEcyLGEzLGwzLFJpLENaLFcyLGFzLEF3LGxxLHZ3LHBPLG1PLHpaLGdPLGRPLGpaXSxzdHlsZXM6WycubG9hZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7''@;'; put 'put ''anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6NzV2aDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tb2RhbExhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo1MHJlbSFpbXBvcnRhbnR9LmFkZGVkUm93W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3Jv''@;'; put 'put ''dW5kOnJnYigxNDYsMjA4LDE1NCk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDksNzcsMTE3LC4yKTtib3JkZXItcmFkaXVzOjVweH0uZGVsZXRlZFJvd1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2IoMjMwLDE3OSwxNzkpO2JvcmRlcjoxcHggc29saWQgcmdiYSg3MCw3MSw3MCwu''@;'; put 'put ''Mik7Ym9yZGVyLXJhZGl1czo1cHh9LnVwZGF0ZWRSb3dbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZhZmRhODtib3JkZXI6MXB4IHNvbGlkIHJnYmEoOSwxMTcsOSwuMik7Ym9yZGVyLXJhZGl1czo1cHh9LmNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCww''@;'; put 'put ''LDAsLjEpO2JvcmRlcjoxcHggc29saWQgcmdiYSgxMDQsMTAwLDAsLjQpO2JvcmRlci1yYWRpdXM6NXB4fS5jaFtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1MiwxMzUsMTIwLC40KX0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250''@;'; put 'put ''ZW50LnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlw''@;'; put 'put ''LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouNTQxNjdyZW07Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kOiMzMTQzNTE7Ym9yZGVyLXJhZGl1czouMTI1cmVtO2NvbG9yOiNmMGYxZWM7bGluZS1oZWlnaHQ6Ljc1cmVtO21hcmdp''@;'; put 'put ''bjowO3BhZGRpbmc6LjM3NXJlbSAuNXJlbTt3aWR0aDoyMzVweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6YXV0bztib3R0b206MTAwJTtsZWZ0OjEycHg7cmlnaHQ6YXV0bztib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTouNjY2NjdyZW19LnRvb2x0aXBbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1yaWdodFtfbmdjb250ZW50LSVDT01QJV06YmVmb3JlLCAudG9vbHRpcC50b29sdGlwLXRvcC1yaWdodFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZv''@;'; put 'put ''cmUsIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LS4zNzVyZW07bGVmdDowO3RvcDphdXRvO3JpZ2h0OmF1dG87Y29udGVudDoiIjtib3JkZXItbGVmdDouMjVy''@;'; put 'put ''ZW0gc29saWQgIzMxNDM1MTtib3JkZXItdG9wOi4yMDgzM3JlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouMjA4MzNyZW0gc29saWQgdHJhbnNwYXJlbnR9LnRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6''@;'; put 'put ''MHB4IHNvbGlkfS50b2dnbGUtc3dpdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9Y2hlY2tib3hdW19uZ2NvbnRlbnQtJUNPTVAlXTpjaGVja2VkICsgbGFiZWxbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OiMzMTQzNTEhaW1wb3J0YW50O3RyYW5zaXRpb246LjE1cyBlYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LnRhYmxlQ29udFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bzttYXJnaW46MTVweCAxMHB4IDEwcHh9LnRhYmxl''@;'; put 'put ''Q29udFtfbmdjb250ZW50LSVDT01QJV0gICB0ZFtfbmdjb250ZW50LSVDT01QJV17d29yZC1icmVhazpicmVhay13b3JkfS5hcHByb3ZhbEluZm9bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmFwcHJvdmFsQmFja1tfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsuYXBwcm92YWxJbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9w''@;'; put 'put ''OjE1cHh9LmFwcHJvdmFsQmFja1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLWJvdHRvbToxNXB4fS5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjByZW0haW1wb3J0YW50O21pbi1oZWlnaHQ6Y2FsYygxMDB2''@;'; put 'put ''aCArIC0wcHgpIWltcG9ydGFudH0udGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGQubGVmdFtfbmdjb250ZW50LSVDT01QJV0sIC50YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aC5sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6MTUwcHghaW1wb3J0''@;'; put 'put ''YW50O2ZsZXg6MH19LnRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkLmxlZnRbX25nY29udGVudC0lQ09NUCVdLCAudGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGgubGVmdFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0O2ZsZXg6MTt3aWR0aDozMDBweCFpbXBvcnRh''@;'; put 'put ''bnR9LnRvb2xsW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNlNmIzYjM7Y29sb3I6IzMxNDM1MTt0b3A6MHB4O2hlaWdodDozNnB4O3dpZHRoOjEwMCU7bGVmdDowcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlz''@;'; put 'put ''cGxheTpmbGV4fSNhY2NlcHRCdG5bX25nY29udGVudC0lQ09NUCVdLCAjcmVqZWN0QnRuW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNzVweH0uZm9ybWF0dGVkLXZhbHVlcy10b2dnbGVbX25nY29udGVudC0lQ09NUCVde21pbi13aWR0aDo3NXB4fWNsci1tb2RhbFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAgIC5tb2RhbC1ib2R5LXdyYXBwZXJ7b3ZlcmZsb3c6YXV0b30nXX0pLGR9KSgpLEhWZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5yb3V0ZT1oLHRoaXMucm91dGVyPXZ9c3VibWl0dGVkVGFibGVTY3JlZW4oKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJs''@;'; put 'put ''KCIvc3RhZ2UvIit0aGlzLmRzaWQpfWFwcHJvdmVUYWJsZVNjcmVlbigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9hcHByb3ZlL2FwcHJvdmVEZXQvIit0aGlzLmRzaWQpfXZpZXdlclRhYmxlU2NyZWVuKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iK3Ro''@;'; put 'put ''aXMubGliZHMpfWdvQmFjaygpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxpYmRzKX1uZ09uSW5pdCgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5kc2lkPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRzaWQsdGhp''@;'; put 'put ''cy5saWJkcz10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJkc30pfW5nQWZ0ZXJWaWV3SW5pdCgpe3NldFRpbWVvdXQoKCk9PntsZXQgaD13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcHJvdmFsQnRuIik7aCYmaC5mb2N1cygpfSw3MDApfX1yZXR1cm4gZC5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChKMSksS3QoRWwpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWFjdGlvbnMiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjE5LHZhcnM6MSxjb25zdHM6W1sxLCJjb250''@;'; put 'put ''ZW50LWFyZWEiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsxLCJjb2xvci1ibHVlIiwiZm9udC13ZWlnaHQtNzAwIl0sWzEsInJvdyIsImQtZmxleCIsImp1c3Rp''@;'; put 'put ''ZnktY29udGVudC1jZW50ZXIiLCJtdC0yMCJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdLFsiaWQiLCJhcHByb3ZhbEJ0biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsInRleHQtY2VudGVyIiwzLCJjbGlj''@;'; put 'put ''ayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImRpdiIsMikoMywiaDMiLDMpLFd0KDQsIiBZb3Ugc3VjY2VzZnVsbHkg''@;'; put 'put ''ZWRpdGVkIHRhYmxlICIpLHR0KDUsInNwYW4iLDQpLFd0KDYpLGl0KCkoKSx0dCg3LCJwIiwzKSg4LCJiIiksV3QoOSwiUGxlYXNlIGNob29zZSBmcm9tIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyIpLGl0KCkoKSx0dCgxMCwiZGl2Iiw1KSgxMSwiYnV0dG9uIiw2KSxabigiY2xpY2siLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHYuc3VibWl0dGVkVGFibGVTY3JlZW4oKX0pLFd0KDEyLCIgR28gdG8gc3VibWl0dGVkIHRhYmxlIHNjcmVlbiAiKSxpdCgpLHR0KDEzLCJidXR0b24iLDYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi52aWV3ZXJUYWJsZVNjcmVlbigpfSksV3QoMTQsIiBH''@;'; put 'put ''byB0byBiYXNlIHRhYmxlIHNjcmVlbiAiKSxpdCgpLHR0KDE1LCJidXR0b24iLDcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5hcHByb3ZlVGFibGVTY3JlZW4oKX0pLFd0KDE2LCIgR28gdG8gYXBwcm92YWxzIHNjcmVlbiAiKSxpdCgpLHR0KDE3LCJidXR0b24iLDgpLFpuKCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5nb0JhY2soKX0pLFd0KDE4LCIgR28gYmFjayB0byBlZGl0b3IgIiksaXQoKSgpKCkoKSgpKSwyJmgmJihzdCg2KSxqaSh2LmxpYmRzKSl9fSksZH0pKCk7ZnVuY3Rpb24gTlZlKGQsZyl7MSZkJiYodHQoMCwiZGl2IiwxMiksYnIoMSwiY2xyLWlj''@;'; put 'put ''b24iLDEzKSx0dCgyLCJoMyIsMTQpLFd0KDMsIlRoZXJlIGlzIG5vIGhpc3RvcnkgdG8gc2hvdyIpLGl0KCkoKSl9ZnVuY3Rpb24gVlZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYSIsMTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKS4kaW1wbGlj''@;'; put 'put ''aXQsQz1VdCgpO3JldHVybiBidChDLmdldFRhYmxlKEMuYXBwcm92ZURhdGFbeV0pKX0pLFd0KDEpLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0LHY9VXQoKTtzdCgxKSxqaSh2LmFwcHJvdmVEYXRhW2hdKX19ZnVuY3Rpb24galZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlp''@;'; put 'put ''KCk7dHQoMCwiZGl2IikoMSwiYSIsMTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKS4kaW1wbGljaXQsQz1VdCgpO3JldHVybiBidChDLmdldEJhc2VUYWJsZShDLmFwcHJvdmVEYXRhW3ldKSl9KSxXdCgyLCJWSUVXIiksaXQoKSx0dCgzLCJzcGFuIiksV3QoNCwi''@;'; put 'put ''IC8gIiksaXQoKSx0dCg1LCJhIiwxNyksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpLiRpbXBsaWNpdCxDPVV0KCk7cmV0dXJuIGJ0KEMuZ2V0RWRpdFRhYmxlKEMuYXBwcm92ZURhdGFbeV0pKX0pLFd0KDYsIkVESVQiKSxpdCgpKCl9fWZ1bmN0aW9uIFpWZShkLGcp''@;'; put 'put ''e2lmKDEmZCYmKHR0KDAsInNwYW4iKSxXdCgxKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQsdj1VdCgpO3N0KDEpLGppKHYuYXBwcm92ZURhdGFbaF0pfX1mdW5jdGlvbiB6VmUoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIpKDEsInRkIiw2KSxXdCgyKSxpdCgpLHR0KDMsInRk''@;'; put 'put ''Iiw2KSxubig0LFZWZSwyLDEsImEiLDE1KSxubig1LGpWZSw3LDAsImRpdiIsMTYpLG5uKDYsWlZlLDIsMSwic3BhbiIsMTYpLGl0KCkoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9Zy5pbmRleDtzdCgyKSxqaShoKSxzdCgyKSx4dCgibmdJZiIsdjwxKSxzdCgxKSx4dCgibmdJZiIs''@;'; put 'put ''djwyJiZ2Pj0xKSxzdCgxKSx4dCgibmdJZiIsdj49Mil9fWZ1bmN0aW9uIEdWZShkLGcpezEmZCYmKHR0KDAsInNwYW4iLDIwKSxXdCgxLCIgTG9hZGluZy4uLiAiKSxpdCgpKX1mdW5jdGlvbiBXVmUoZCxnKXsxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIsIkxvYWRpbmcgaGlzdG9y''@;'; put 'put ''eSIpLGl0KCkoKSl9ZnVuY3Rpb24gWVZlKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IiwxOCksbm4oMSxHVmUsMiwwLCJzcGFuIiwxOSksbm4oMixXVmUsMywwLCJkaXYiLDE2KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgxKSx4dCgibmdJZiIsIWgubG9hZGVkKSxzdCgxKSx4dCgibmdJ''@;'; put 'put ''ZiIsIWgubG9hZGVkKX19ZnVuY3Rpb24gVVZlKGQsZyl7MSZkJiYodHQoMCwiaDMiLDI1KSxXdCgxLCJISVNUT1JZIiksaXQoKSl9Y29uc3QgUVZlPWZ1bmN0aW9uKGQsZyl7cmV0dXJue3JlamVjdGVkOmQsYWNjZXB0ZWQ6Z319O2Z1bmN0aW9uIEpWZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15''@;'; put 'put ''aSgpO3R0KDAsImNsci1kZy1yb3ciLDM0KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgQz1hKGgpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoMykuZ2V0QXBwckluZGV4KEMpKX0pLHR0KDEsImNsci1kZy1jZWxsIiwzNSkoMiwiYSIsMzYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtjb25z''@;'; put 'put ''dCBDPWEoaCkuJGltcGxpY2l0O3JldHVybiBidChVdCgzKS5nZXRCYXNlVGFibGUoQy5iYXNldGFibGUpKX0pLFd0KDMpLGl0KCkoKSx0dCg0LCJjbHItZGctY2VsbCIsMzcpLFd0KDUpLGl0KCksdHQoNiwiY2xyLWRnLWNlbGwiLDM1KSxXdCg3KSxpdCgpLHR0KDgsImNsci1kZy1jZWxsIiwz''@;'; put 'put ''NSksV3QoOSksaXQoKSx0dCgxMCwiY2xyLWRnLWNlbGwiLDM1KSxXdCgxMSksaXQoKSx0dCgxMiwiY2xyLWRnLWNlbGwiLDM1KSxXdCgxMyksaXQoKSx0dCgxNCwiY2xyLWRnLWNlbGwiLDM4KSgxNSwiYnV0dG9uIiwzOSksWm4oImNsaWNrIixmdW5jdGlvbih5KXtjb25zdCBJPWEoaCkuJGlt''@;'; put 'put ''cGxpY2l0O3JldHVybiBVdCgzKS5kb3dubG9hZChJLnRhYmxlSWQpLGJ0KHkuc3RvcFByb3BhZ2F0aW9uKCkpfSksYnIoMTYsImNsci1pY29uIiw0MCksaXQoKSgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDMpLGppKGguYmFzZXRhYmxlKSxzdCgxKSx4dCgibmdDbGFzcyIs''@;'; put 'put ''QmQoNyxRVmUsIlJFSkVDVEVEIj09PWguc3RhdHVzLCJBUFBST1ZFRCI9PT1oLnN0YXR1cykpLHN0KDEpLGppKGguc3RhdHVzKSxzdCgyKSxqaShoLnN1Ym1pdHRlciksc3QoMiksamkoaC5zdWJtaXR0ZWRSZWFzb24pLHN0KDIpLGppKGguc3VibWl0dGVkKSxzdCgyKSxqaShoLnJldmlld2Vk''@;'; put 'put ''KX19ZnVuY3Rpb24gWFZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWRhdGFncmlkIiwyNikoMSwiY2xyLWRnLWNvbHVtbiIsMjcpLFd0KDIsIkJBU0VfVEFCTEUiKSxpdCgpLHR0KDMsImNsci1kZy1jb2x1bW4iLDI3KSxXdCg0LCJTVEFUVVMiKSxpdCgpLHR0KDUsImNs''@;'; put 'put ''ci1kZy1jb2x1bW4iLDI3KSxXdCg2LCJTVUJNSVRURVIiKSxpdCgpLHR0KDcsImNsci1kZy1jb2x1bW4iLDI3KSxXdCg4LCJTVUJNSVQgUkVBU09OIiksaXQoKSx0dCg5LCJjbHItZGctY29sdW1uIiwyNyksV3QoMTAsIlNVQk1JVFRFRCIpLGl0KCksdHQoMTEsImNsci1kZy1jb2x1bW4iLDI3''@;'; put 'put ''KSxXdCgxMiwiQVBQUk9WRUQgLyBSRUpFQ1RFRCIpLGl0KCksdHQoMTMsImNsci1kZy1jb2x1bW4iLDI3KSxXdCgxNCwiRE9XTkxPQUQiKSxpdCgpLG5uKDE1LEpWZSwxNywxMCwiY2xyLWRnLXJvdyIsMjgpLHR0KDE2LCJjbHItZGctZm9vdGVyIiwyOSkoMTcsInNwYW4iKSxXdCgxOCwiaXRl''@;'; put 'put ''bXMgcGVyIHBhZ2UiKSxpdCgpLHR0KDE5LCJzZWxlY3QiLDMwKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuaXRlbXNOdW09eSl9KSx0dCgyMCwib3B0aW9uIiwzMSksV3QoMjEsIjMiKSxpdCgpLHR0KDIyLCJvcHRpb24iLDMxKSxXdCgyMywi''@;'; put 'put ''NSIpLGl0KCksdHQoMjQsIm9wdGlvbiIsMzEpLFd0KDI1LCIxMCIpLGl0KCksdHQoMjYsIm9wdGlvbiIsMzEpLFd0KDI3LCIxNSIpLGl0KCkoKSx0dCgyOCwiY2xyLWRnLXBhZ2luYXRpb24iLDMyLDMzKSxXdCgzMCksaXQoKSgpKCl9aWYoMiZkKXtjb25zdCBoPXVhKDI5KSx2PVV0KDIpO3N0''@;'; put 'put ''KDEpLHh0KCJjbHJEZ0ZpZWxkIiwiYmFzZXRhYmxlIiksc3QoMikseHQoImNsckRnRmllbGQiLCJzdGF0dXMiKSxzdCgyKSx4dCgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlciIpLHN0KDIpLHh0KCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVkUmVhc29uIiksc3QoMikseHQoImNsckRnRmllbGQiLCJz''@;'; put 'put ''dWJtaXR0ZWQiKSxzdCgyKSx4dCgiY2xyRGdGaWVsZCIsInJldmlld2VkIiksc3QoMikseHQoImNsckRnRmllbGQiLCJyZXZpZXdlZCIpLHN0KDIpLHh0KCJjbHJEZ0l0ZW1zT2YiLHYuaGlzdG9yeSksc3QoNCkseHQoIm5nTW9kZWwiLHYuaXRlbXNOdW0pLHN0KDEpLHh0KCJuZ1ZhbHVlIiwz''@;'; put 'put ''KSxzdCgyKSx4dCgibmdWYWx1ZSIsNSksc3QoMikseHQoIm5nVmFsdWUiLDEwKSxzdCgyKSx4dCgibmdWYWx1ZSIsMTUpLHN0KDIpLHh0KCJjbHJEZ1BhZ2VTaXplIix2Lml0ZW1zTnVtKSxzdCgyKSxQaCgiICIsaC5maXJzdEl0ZW0rMSwiIC0gIixoLmxhc3RJdGVtKzEsIiBvZiAiLGgudG90''@;'; put 'put ''YWxJdGVtcywiIHVwZGF0ZXMgIil9fWZ1bmN0aW9uIEtWZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMjEpKDEsImRpdiIsMjIpLG5uKDIsVVZlLDIsMCwiaDMiLDIzKSxpdCgpLG5uKDMsWFZlLDMxLDE3LCJjbHItZGF0YWdyaWQiLDI0KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgy''@;'; put 'put ''KSx4dCgibmdJZiIsaC5sb2FkZWQpLHN0KDEpLHh0KCJuZ0lmIixoLmxvYWRlZCl9fWxldCAkVmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLnNhc1N0b3JlU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPXYsdGhpcy5yb3V0ZXI9eSx0aGlzLnNhc1NlcnZpY2U9''@;'; put 'put ''Qyx0aGlzLmhpc3Rvcnk9W10sdGhpcy50YWJsZVRpdGxlcz1bXSx0aGlzLmhpc3RvcnlBcnI9W10sdGhpcy5sb2FkZWQ9ITEsdGhpcy5pdGVtc051bT0xMCx0aGlzLm9wZW5Nb2RhbD0hMSx0aGlzLm5vRGF0YT0hMSx0aGlzLmFwcHJvdmVEYXRhPXt9LHRoaXMuc2FzanNDb25maWc9bmV3IFFk''@;'; put 'put ''LlNBU2pzQ29uZmlnLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCl9Z2V0VGFibGUoaCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIraCl9Z2V0QmFzZVRhYmxlKGgpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2Rh''@;'; put 'put ''dGEvIitoKX1nZXRFZGl0VGFibGUoaCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK2gpfWdldEFwcHJJbmRleChoKXtjb25zdCB2PXRoaXMuaGlzdG9yeUFyci5maW5kSW5kZXgoeT0+eS5UQUJMRV9JRD09PWgudGFibGVJZCk7dj4tMSYmKHRoaXMuYXBwcm92ZURhdGE9''@;'; put 'put ''dGhpcy5oaXN0b3J5QXJyW3ZdLHRoaXMub3Blbk1vZGFsPSEwKX1kb3dubG9hZChoKXtsZXQgdj10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx5PXYuc2VydmVyVXJsLEM9di5hcHBMb2MsST10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVuKHkr''@;'; put 'put ''SSsiLz9fcHJvZ3JhbT0iK0MrIi9zZXJ2aWNlcy9hdWRpdG9ycy9nZXRhdWRpdGZpbGUmdGFibGU9IitoKyImX2NvbnRleHRuYW1lPSIrdGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZSl9bmdPbkluaXQoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB2''@;'; put 'put ''PXtISVNUOjUwfTt0cnl7bGV0IEMseT15aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5nZXRIaXN0b3J5KHYsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvZ2V0aGlzdG9yeSIpLEk9eS5mcm9tc2FzO2lmKHRoaXMuaGlzdG9yeUFycj15LmZyb21zYXMseS5mcm9tc2FzLmxlbmd0aD4wKXtD''@;'; put 'put ''PU9iamVjdC5rZXlzKElbMF0pLHRoaXMudGFibGVUaXRsZXM9QztsZXQgaj15LmZyb21zYXMubWFwKGZ1bmN0aW9uKGNlKXtyZXR1cm57dGFibGVJZDpjZS5UQUJMRV9JRCxzdWJtaXR0ZXI6Y2UuU1VCTUlUVEVSLHN1Ym1pdHRlZFJlYXNvbjpjZS5TVUJNSVRURURfUkVBU09OX1RYVCxzdWJt''@;'; put 'put ''aXR0ZWQ6Y2UuU1VCTUlUVEVELHN0YXR1czpjZS5TVEFUVVMscmV2aWV3UmVhc29uOmNlLlJFVklFV19SRUFTT05fVFhULHJldmlld2VyOmNlLlJFVklFV0VSLHJldmlld2VkOmNlLlJFVklFV0VELG51bU9mQXBwcm92YWxzOmNlLk5VTV9PRl9BUFBST1ZBTFNfUkVRVUlSRUQsYmFzZXRhYmxl''@;'; put 'put ''OmNlLkJBU0VfVEFCTEV9fSk7dGhpcy5oaXN0b3J5PWosdGhpcy5sb2FkZWQ9ITB9ZWxzZSB0aGlzLmxvYWRlZD0hMCx0aGlzLm5vRGF0YT0hMH1jYXRjaCh5KXt0aGlzLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9nZXRoaXN0b3J5Iix5KX19KX19cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoa2cpLEt0KG11KSxLdChFbCksS3QobDApKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWhpc3RvcnkiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjIw''@;'; put 'put ''LHZhcnM6Nixjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXSxbImlkIiwibm9EYXRhQ29udGFpbmVyIiwiY2xhc3MiLCJjYXJkLWJsb2NrIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFszLCJjbHJNb2RhbE9w''@;'; put 'put ''ZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJ0YWJsZSJdLFsxLCJsZWZ0Il0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIs''@;'; put 'put ''ImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsiY2xhc3MiLCJoLTcwdmggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxbImlkIiwibm9EYXRhQ29udGFpbmVyIiwx''@;'; put 'put ''LCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5''@;'; put 'put ''Il0sWyJjbGFzcyIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsxLCJoLTcwdmgiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1j''@;'; put 'put ''ZW50ZXIiXSxbImNsYXNzIiwic3Bpbm5lciIsNCwibmdJZiJdLFsxLCJzcGlubmVyIl0sWzEsImNhcmQiXSxbMSwiY2FyZC1oZWFkZXIiXSxbImNsYXNzIiwiY2VudGVyIGNsci1jb2wtbWQtMTIgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtaGlzdG9yeSBkYXRh''@;'; put 'put ''Z3JpZC1jdXN0b20tZm9vdGVyIiw0LCJuZ0lmIl0sWzEsImNlbnRlciIsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNlbnRlciJdLFsxLCJkYXRhZ3JpZC1oaXN0b3J5IiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciJdLFszLCJjbHJEZ0ZpZWxkIl0sWzMsImNsaWNrIiw0LCJjbHJEZ0l0ZW1zIiwi''@;'; put 'put ''Y2xyRGdJdGVtc09mIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1zdGFydCJdLFsxLCJteC01IiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFszLCJuZ1ZhbHVlIl0sWzEsImNlbnRlciIsMywiY2xyRGdQYWdlU2l6ZSJdLFsicGFnaW5hdGlvbiIsIiJdLFszLCJjbGljayJd''@;'; put 'put ''LFsxLCJ2ZXJDZW50ZXIiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLCJtLTAiLDMsImNsaWNrIl0sWzEsInZlckNlbnRlciIsMywibmdDbGFzcyJdLFsxLCJ2ZXJDZW50ZXIiLCJwLTAiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsImJ0biIsImJ0bi1zdWNj''@;'; put 'put ''ZXNzIiwzLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImRpdiIsMCksbm4oMSxOVmUsNCwwLCJkaXYiLDEpLHR0KDIsImNsci1tb2RhbCIsMiksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJu''@;'; put 'put ''IHYub3Blbk1vZGFsPUN9KSx0dCgzLCJoNCIsMyksV3QoNCwiQXBwcm92YWwgZGV0YWlscyIpLGl0KCksdHQoNSwiZGl2Iiw0KSg2LCJ0YWJsZSIsNSkoNywidGhlYWQiKSg4LCJ0ciIpKDksInRoIiw2KSxXdCgxMCwiTmFtZSIpLGl0KCksdHQoMTEsInRoIiw2KSxXdCgxMiwiVmFsdWUiKSxp''@;'; put 'put ''dCgpKCkoKSx0dCgxMywidGJvZHkiKSxubigxNCx6VmUsNyw0LCJ0ciIsNyksaXQoKSgpKCksdHQoMTUsImRpdiIsOCkoMTYsImJ1dHRvbiIsOSksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2Lm9wZW5Nb2RhbD0hMX0pLFd0KDE3LCIgT0sgIiksaXQoKSgpKCksbm4oMTgsWVZlLDMs''@;'; put 'put ''MiwiZGl2IiwxMCksbm4oMTksS1ZlLDQsMiwiZGl2IiwxMSksaXQoKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLHYubm9EYXRhKSxzdCgxKSx4dCgiY2xyTW9kYWxPcGVuIix2Lm9wZW5Nb2RhbCkoImNsck1vZGFsU2l6ZSIsInhsIiksc3QoMTIpLHh0KCJuZ0Zvck9mIix2LnRhYmxlVGl0bGVz''@;'; put 'put ''KSxzdCg0KSx4dCgibmdJZiIsIXYubG9hZGVkKSxzdCgxKSx4dCgibmdJZiIsIXYubm9EYXRhJiZ2LmxvYWRlZCkpfSxkZXBlbmRlbmNpZXM6W0UxLHFsLEJvLEozLFgzLEVmLGpzLF9zLGxPLFNTLGFPLE1TLGt3LFBaLEZaLHVPLHhTLFRTLEVTLF93LHJPLG9PLEcyLGEzLGwzXSxzdHlsZXM6''@;'; put 'put ''WyIucmVqZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmODMxMjY7Zm9udC13ZWlnaHQ6NzAwfS5hY2NlcHRlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzNmYzQyNDtmb250LXdlaWdodDo3MDB9LmhzQ2VsbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4IWltcG9y''@;'; put 'put ''dGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50O2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnQ7cGFkZGluZzo3cHh9LmJ0Q2VsbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4IWltcG9ydGFudDtqdXN0''@;'; put 'put ''aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0udmVyQ2VudGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3dvcmQtYnJlYWs6YnJlYWstYWxsfSNub0RhdGFDb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDpjYWxjKDEwMHZo''@;'; put 'put ''IC0gMjAwcHgpfSJdfSksZH0pKCkscVZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtbm90LWZvdW5k''@;'; put 'put ''Il1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJkaXYiLDApKDEsInAiKSxXdCgyLCI0MDQgLSBOb3QgRm91bmQiKSxpdCgpKCkpfX0p''@;'; put 'put ''LGR9KSgpO2Z1bmN0aW9uIGVqZShkLGcpezEmZCYmKHR0KDAsImRpdiIsMTIpKDEsImRpdiIsMTMpLGJyKDIsImNsci1pY29uIiwxNCksdHQoMywiaDMiLDE1KSxXdCg0LCIgWW91IGhhdmUgbm90IHN1Ym1pdHRlZCBhbnkgdGFibGVzICIpLGl0KCkoKSgpKX1mdW5jdGlvbiB0amUoZCxnKXsx''@;'; put 'put ''JmQmJih0dCgwLCJoMyIsMTYpLFd0KDEsIiBTVUJNSVQgUVVFVUUgIiksaXQoKSl9ZnVuY3Rpb24gbmplKGQsZyl7aWYoMSZkJiYodHQoMCwicCIsMTcpLFd0KDEsIiBZb3UgaGF2ZSAiKSx0dCgyLCJzcGFuIiksV3QoMyksaXQoKSxXdCg0LCJzdWJtaXNzaW9ucyB3YWl0aW5nIHRvIGJlIGFw''@;'; put 'put ''cHJvdmVkICIpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgzKTtzdCgzKSxVaSgiIixoLnJlbWFpbmVkLCIgIil9fWZ1bmN0aW9uIHJqZShkLGcpezEmZCYmKHR0KDAsInNwYW4iLDIwKSxXdCgxLCIgTG9hZGluZy4uLiAiKSxpdCgpKX1mdW5jdGlvbiBpamUoZCxnKXsxJmQmJih0dCgwLCJkaXYi''@;'; put 'put ''KSgxLCJoMyIpLFd0KDIsIkxvYWRpbmcgc3VibWl0dGVkIGxpc3QiKSxpdCgpKCkpfWZ1bmN0aW9uIG9qZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMTgpLG5uKDEscmplLDIsMCwic3BhbiIsMTkpLG5uKDIsaWplLDMsMCwiZGl2IiwyKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3Qo''@;'; put 'put ''MSkseHQoIm5nSWYiLCFoLmxvYWRlZCksc3QoMSkseHQoIm5nSWYiLCFoLmxvYWRlZCl9fWZ1bmN0aW9uIGFqZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1kZy1yb3ciLDMwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgeT1hKGgpLEM9eS4kaW1wbGljaXQsST15''@;'; put 'put ''LmluZGV4O3JldHVybiBidChVdCg1KS5nZXREZXRhaWxzKEMsSSkpfSksdHQoMSwiY2xyLWRnLWNlbGwiKSxXdCgyKSxpdCgpLHR0KDMsImNsci1kZy1jZWxsIiksV3QoNCksaXQoKSx0dCg1LCJjbHItZGctY2VsbCIpLFd0KDYpLGl0KCksdHQoNywiY2xyLWRnLWNlbGwiKSg4LCJkaXYiLDMx''@;'; put 'put ''KSg5LCJhIiwzMiksWm4oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9YShoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KDUpLmdvVG9TdGFnZShDLnRhYmxlSWQpKX0pLGJyKDEwLCJjbHItaWNvbiIsMzMpLHR0KDExLCJzcGFuIiwzNCksV3QoMTIsIkdvIHRvIHN0YWdlZCBkYXRhIHNjcmVl''@;'; put 'put ''biIpLGl0KCkoKSgpKCksdHQoMTMsImNsci1kZy1jZWxsIiwzNSkoMTQsImJ1dHRvbiIsMzYpLFpuKCJjbGljayIsZnVuY3Rpb24oeSl7Y29uc3QgST1hKGgpLiRpbXBsaWNpdDtyZXR1cm4gVXQoNSkuZG93bmxvYWQoSS50YWJsZUlkKSxidCh5LnN0b3BQcm9wYWdhdGlvbigpKX0pLGJyKDE1''@;'; put 'put ''LCJjbHItaWNvbiIsMzcpLGl0KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgyKSxqaShoLmJhc2UpLHN0KDIpLGppKGguc3VibWl0dGVkKSxzdCgyKSxqaShoLnN1Ym1pdFJlYXNvbil9fWZ1bmN0aW9uIGxqZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRp''@;'; put 'put ''diIpKDEsImNsci1kYXRhZ3JpZCIsMjIpKDIsImNsci1kZy1jb2x1bW4iKSxXdCgzLCJCQVNFIFRBQkxFIiksaXQoKSx0dCg0LCJjbHItZGctY29sdW1uIiwyMyksV3QoNSwiU1VCTUlUVEVEIiksaXQoKSx0dCg2LCJjbHItZGctY29sdW1uIiwyMyksV3QoNywiU1VCTUlUIFJFQVNPTiIpLGl0''@;'; put 'put ''KCksdHQoOCwiY2xyLWRnLWNvbHVtbiIsMTIpLFd0KDksIkFDVElPTiIpLGl0KCksdHQoMTAsImNsci1kZy1jb2x1bW4iLDEyKSxXdCgxMSwiRE9XTkxPQUQiKSxpdCgpLG5uKDEyLGFqZSwxNiwzLCJjbHItZGctcm93IiwyNCksdHQoMTMsImNsci1kZy1mb290ZXIiLDI1KSgxNCwic3BhbiIp''@;'; put 'put ''LFd0KDE1LCJpdGVtcyBwZXIgcGFnZSIpLGl0KCksdHQoMTYsInNlbGVjdCIsMjYpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCg0KS5pdGVtc051bT15KX0pLHR0KDE3LCJvcHRpb24iLDI3KSxXdCgxOCwiMyIpLGl0KCksdHQoMTksIm9wdGlvbiIs''@;'; put 'put ''MjcpLFd0KDIwLCI1IiksaXQoKSx0dCgyMSwib3B0aW9uIiwyNyksV3QoMjIsIjEwIiksaXQoKSx0dCgyMywib3B0aW9uIiwyNyksV3QoMjQsIjE1IiksaXQoKSgpLHR0KDI1LCJjbHItZGctcGFnaW5hdGlvbiIsMjgsMjkpLFd0KDI3KSxpdCgpKCkoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgy''@;'; put 'put ''Niksdj1VdCg0KTtzdCg0KSx4dCgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlZCIpLHN0KDIpLHh0KCJjbHJEZ0ZpZWxkIiwic3VibWl0UmVhc29uIiksc3QoNikseHQoImNsckRnSXRlbXNPZiIsdi5zdWJtaXR0ZXJMaXN0KSxzdCg0KSx4dCgibmdNb2RlbCIsdi5pdGVtc051bSksc3QoMSkseHQo''@;'; put 'put ''Im5nVmFsdWUiLDMpLHN0KDIpLHh0KCJuZ1ZhbHVlIiw1KSxzdCgyKSx4dCgibmdWYWx1ZSIsMTApLHN0KDIpLHh0KCJuZ1ZhbHVlIiwxNSksc3QoMikseHQoImNsckRnUGFnZVNpemUiLHYuaXRlbXNOdW0pLHN0KDIpLFBoKCIgIixoLmZpcnN0SXRlbSsxLCIgLSAiLGgubGFzdEl0ZW0rMSwi''@;'; put 'put ''IG9mICIsaC50b3RhbEl0ZW1zLCIgc3VibWlzc2lvbnMgIil9fWZ1bmN0aW9uIHNqZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMjEpLG5uKDEsbGplLDI4LDEyLCJkaXYiLDIpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgzKTtzdCgxKSx4dCgibmdJZiIsaC5zdWJtaXR0ZXJMaXN0JiYwIT09''@;'; put 'put ''aC5yZW1haW5lZCl9fWNvbnN0IHVqZT1mdW5jdGlvbihkKXtyZXR1cm57bm9Cb3JkZXI6ZH19O2Z1bmN0aW9uIGNqZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsNSksbm4oMSxlamUsNSwwLCJkaXYiLDYpLHR0KDIsImRpdiIsNyksbm4oMyx0amUsMiwwLCJoMyIsOCksbm4oNCxuamUsNSwx''@;'; put 'put ''LCJwIiw5KSxpdCgpLG5uKDUsb2plLDMsMiwiZGl2IiwxMCksbm4oNixzamUsMiwxLCJkaXYiLDExKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nSWYiLDA9PT1oLnJlbWFpbmVkJiZoLmxvYWRlZCksc3QoMSkseHQoIm5nQ2xhc3MiLGpoKDYsdWplLCFoLmxvYWRlZCkp''@;'; put 'put ''LHN0KDEpLHh0KCJuZ0lmIiwwIT09aC5yZW1haW5lZCksc3QoMSkseHQoIm5nSWYiLGgubG9hZGVkJiYwIT09aC5yZW1haW5lZCksc3QoMSkseHQoIm5nSWYiLCFoLmxvYWRlZCksc3QoMSkseHQoIm5nSWYiLGgubG9hZGVkKX19ZnVuY3Rpb24gZmplKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2''@;'; put 'put ''IiwzKSxubigxLGNqZSw3LDgsImRpdiIsNCksaXQoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoIm5nSWYiLCFoLnN1YlJlYWR5KX19ZnVuY3Rpb24gaGplKGQsZyl7MSZkJiYodHQoMCwiZGl2IiksYnIoMSwiYXBwLWFwcHJvdmUtZGV0YWlscyIpLGl0KCkpfWxldCBBYmU9KCgpPT57''@;'; put 'put ''Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLnNhc1N0b3JlU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPXYsdGhpcy5yb3V0ZT15LHRoaXMuc2FzU2VydmljZT1DLHRoaXMucmVtYWluZWQ9MCx0aGlzLmxvYWRlZD0hMSx0aGlzLnN1YlJlYWR5PSExLHRoaXMuZGV0YWlsc09w''@;'; put 'put ''ZW49ITF9Z29Ub1N0YWdlKGgpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIraCl9Z2V0RGV0YWlscyhoLHYpe3RoaXMuc3ViUmVhZHk9ITAsc2V0VGltZW91dCgoKT0+e3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnNlbmREZXRhaWxzKGgsdix0aGlzLnN1Ym1pdERhdGEpfSwwKX1u''@;'; put 'put ''Z09uSW5pdCgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5pdGVtc051bT0xMDt0cnl7bGV0IGg9eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UuZ2V0U3VibWl0dHMoKTtpZih0aGlzLnJlbWFpbmVkPWguZnJvbXNhcy5sZW5ndGgsdGhpcy5yZW1haW5l''@;'; put 'put ''ZD4wKXt0aGlzLnN1Ym1pdHRlcj1oLmZyb21zYXNbMF0uU1VCTUlUVEVEX0JZX05NO2xldCB2PWguZnJvbXNhcy5tYXAoZnVuY3Rpb24oeSl7cmV0dXJue3RhYmxlSWQ6eS5UQUJMRV9JRCxiYXNlOnkuQkFTRV9UQUJMRSxzdWJtaXR0ZWQ6eS5TVUJNSVRURURfT05fRFRUTSxzdWJtaXR0ZXI6''@;'; put 'put ''eS5TVUJNSVRURURfQllfTk0sc3VibWl0UmVhc29uOnkuU1VCTUlUVEVEX1JFQVNPTl9UWFR9fSk7dGhpcy5zdWJtaXR0ZXJMaXN0PXYsdGhpcy5zdWJtaXREYXRhPWguZnJvbXNhc310aGlzLmxvYWRlZD0hMH1jYXRjaChoKXt0aGlzLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3Io''@;'; put 'put ''ImVkaXRvcnMvZ2V0c3VibWl0cyIsaCl9fSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fcmVhZHlTdWI9dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2V0U3VibWl0LnN1YnNjcmliZShoPT57dGhpcy5zdWJSZWFkeT1ofSksdGhpcy5fYmFja1RvU3ViPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFN1''@;'; put 'put ''Ym1pdExpc3Quc3Vic2NyaWJlKGg9Pnt0aGlzLnN1YlJlYWR5PSF0aGlzLnN1YlJlYWR5LHRoaXMuZGV0YWlsc09wZW49ITF9KX1kb3dubG9hZChoKXtsZXQgdj10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx5PXYuc2VydmVyVXJsLEM9di5hcHBMb2MsST10aGlzLnNhc1NlcnZp''@;'; put 'put ''Y2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVuKHkrSSsiLz9fcHJvZ3JhbT0iK0MrIi9zZXJ2aWNlcy9hdWRpdG9ycy9nZXRhdWRpdGZpbGUmdGFibGU9IitoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoa2cpLEt0KG11KSxLdChF''@;'; put 'put ''bCksS3QobDApKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXN1Ym1pdHRlciJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbMSwidy0xMDAiXSxbImNsYXNzIiwiY29udGVudC1hcmVhIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzQsIm5nSWYiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxbMSwiY2FyZCJdLFsiY2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWhlYWRlciIsMywibmdDbGFzcyJdLFsiY2xhc3MiLCJjZW50''@;'; put 'put ''ZXIgY2xyLWNvbC1tZC0xMiB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBmb250LXdlaWdodC03MDAgY29sb3ItZGFyay1ncmF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImgtNzB2aCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBh''@;'; put 'put ''bGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0xMiIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsIm5vLXN1Ym1pdHRlZC10YWJsZXMiLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50''@;'; put 'put ''LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImNlbnRlciIsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNl''@;'; put 'put ''bnRlciJdLFsxLCJ0ZXh0LWNlbnRlciIsImZvbnQtd2VpZ2h0LTcwMCIsImNvbG9yLWRhcmstZ3JheSJdLFsxLCJoLTcwdmgiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsYXNzIiwic3Bpbm5lciIsNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJzcGlubmVyIl0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwiZGF0YWdyaWQtY29tcGFjdCIsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywiY2xyRGdGaWVsZCJdLFsiY2xhc3MiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siLDQsImNsckRnSXRlbXMiLCJjbHJEZ0l0''@;'; put 'put ''ZW1zT2YiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LXN0YXJ0Il0sWzMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsIm5nVmFsdWUiXSxbMSwiY2VudGVyIiwzLCJjbHJEZ1BhZ2VTaXplIl0sWyJwYWdpbmF0aW9uIiwiIl0sWzEsImN1cnNvci1wb2ludGVyIiwzLCJjbGlj''@;'; put 'put ''ayJdLFsicm9sZSIsInRvb2x0aXAiLDEsInJvdyIsImp1c3RpZnktY29udGVudC1hcm91bmQiXSxbMSwiY29sdW1uLWNlbnRlciIsImxpbmtzIiwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwiY29sb3ItYmx1ZSIsMywiY2xpY2siXSxbInNoYXBlIiwiY29k''@;'; put 'put ''ZSIsInNpemUiLCIyOCJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbMSwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgm''@;'; put 'put ''Jih0dCgwLCJkaXYiLDApLG5uKDEsZmplLDIsMSwiZGl2IiwxKSxubigyLGhqZSwyLDAsImRpdiIsMiksaXQoKSksMiZoJiYoc3QoMSkseHQoIm5nSWYiLCF2LnN1YlJlYWR5KSxzdCgxKSx4dCgibmdJZiIsdi5zdWJSZWFkeSkpfSxkZXBlbmRlbmNpZXM6W0UxLEJvLEozLFgzLEVmLGpzLF9z''@;'; put 'put ''LGxPLFNTLGFPLE1TLGt3LFBaLEZaLHVPLHhTLFRTLEVTLF93LHJPLG9PLEcyLHZiZV0sc3R5bGVzOlsiLm5vQm9yZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudCFpbXBvcnRhbnR9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdFtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMzMTQzNTEhaW1w''@;'; put 'put ''b3J0YW50fS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06YmVmb3JlLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtYm90dG9tLWxl''@;'; put 'put ''ZnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLWJvdHRvbTouMjA4MzNyZW0gc29saWQgIzMxNDM1MX0ubm8tc3VibWl0dGVkLXRhYmxlc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OmNhbGMoMTAwdmggLSAyMDBw''@;'; put 'put ''eCl9Il19KSxkfSkoKSxkamU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgpe319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1hcHByb3ZlLXJvdXRlIl1d''@;'; put 'put ''LGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmYnIoMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W1Q3XX0pLGR9KSgpLHliZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7fWRvd25s''@;'; put 'put ''b2FkRmlsZShoLHYseT0idHh0Iil7bGV0IEM9bmV3IEJsb2IoW2hdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pO2lmKG5hdmlnYXRvci5hcHBWZXJzaW9uLnRvU3RyaW5nKCkuaW5kZXhPZigiLk5FVCIpPjApd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKEMsYCR7dn0uJHt5fWApO2Vsc2V7bGV0''@;'; put 'put ''IEk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO0kuaHJlZj0iZGF0YTp0ZXh0L3BsYWluLCIrZW5jb2RlVVJJQ29tcG9uZW50KGgpLEkuZG93bmxvYWQ9YCR7dn0uJHt5fWAsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChJKSxJLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls''@;'; put 'put ''ZChJKX19cmVhZEZpbGUoaCl7cmV0dXJuIG5ldyBQcm9taXNlKCh2LHkpPT57bGV0IEM9bmV3IEZpbGVSZWFkZXI7Qy5vbmxvYWQ9KCk9PntDLnJlc3VsdCYmdihKU09OLnBhcnNlKEMucmVzdWx0LnRvU3RyaW5nKCkpKX0sQy5yZWFkQXNUZXh0KGgpfSl9Y2xlYXJVcGxvYWRJbnB1dChoKXto''@;'; put 'put ''LnRhcmdldC52YWx1ZT0iIn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7ZnVuY3Rpb24gcGplKGQsZyl7MSZkJiYodHQo''@;'; put 'put ''MCwiZGl2Iiw2KSgxLCJwIiw3KSxXdCgyLCJQbGVhc2UgbG9nIGluIGZpcnN0IiksaXQoKSx0dCgzLCJsYWJlbCIsOCksV3QoNCwiVXNlcm5hbWUiKSxpdCgpLHR0KDUsImRpdiIsOSkoNiwiZGl2IiwxMCksYnIoNywiaW5wdXQiLDExKSxpdCgpKCksdHQoOCwibGFiZWwiLDEyKSxXdCg5LCJQ''@;'; put 'put ''YXNzd29yZCIpLGl0KCksdHQoMTAsImRpdiIsOSkoMTEsImRpdiIsMTApLGJyKDEyLCJpbnB1dCIsMTMpLGl0KCkoKSx0dCgxMywiYnV0dG9uIiwxNCksV3QoMTQsIkxvZyBpbiIpLGl0KCkoKSl9ZnVuY3Rpb24gZ2plKGQsZyl7aWYoMSZkJiYodHQoMCwib3B0aW9uIiwzNiksV3QoMSksaXQo''@;'; put 'put ''KSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3h0KCJ2YWx1ZSIsaC5pZCksc3QoMSksVWkoIiAiLGgubmFtZSwiICIpfX1mdW5jdGlvbiBtamUoZCxnKXtpZigxJmQmJih0dCgwLCJzcGFuIiksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0O3N0KDEpLFVpKCIoICIs''@;'; put 'put ''aC5hdHRyaWJ1dGVzLnN5c1VzZXJJZCwiICkiKX19ZnVuY3Rpb24gdmplKGQsZyl7aWYoMSZkJiYodHQoMCwib3B0aW9uIiwzNiksV3QoMSksbm4oMixtamUsMiwxLCJzcGFuIiw1KSxaZSgzLCJqc29uIiksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3h0KCJ2YWx1ZSIsaC5uYW1l''@;'; put 'put ''KSxzdCgxKSxVaSgiICIsaC5uYW1lLCIgIiksc3QoMSkseHQoIm5nSWYiLCJ7fSIhPVN0KDMsMyxoLmF0dHJpYnV0ZXMpKX19ZnVuY3Rpb24gQWplKGQsZyl7MSZkJiYodHQoMCwic3BhbiIpLFd0KDEsIkpTT04gU3VibWl0dGVkIFN1Y2Nlc3NmdWxseSIpLGl0KCkpfWZ1bmN0aW9uIHlqZShk''@;'; put 'put ''LGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMzcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5kb3dubG9hZFNhc1ByZWNvZGVGaWxlKCkpfSksYnIoMSwiY2xyLWljb24iLDM4KSxpdCgpfX1mdW5jdGlvbiB3amUoZCxnKXtpZigxJmQp''@;'; put 'put ''e2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJwIiwzOSksV3QoMiwiRmlsZSBleGVjdXRlIGNvbXBsZXRlZCIpLGl0KCksYnIoMywiaHIiKSx0dCg0LCJkaXYiKSg1LCJidXR0b24iLDQwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KDIpO3JldHVybiBidCh5LmRvd25s''@;'; put 'put ''b2FkRmlsZSh5LmpvYkxvZywiZXhlY3V0ZS1zY3JpcHQtbG9nIiwidHh0IikpfSksV3QoNiwiIERvd25sb2FkIGxvZyAiKSxpdCgpKCksTzAoKX19ZnVuY3Rpb24gYmplKGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw0NCksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLFVp''@;'; put 'put ''KCIgIixoLm1ha2VEYXRhUmVzcG9uc2UsIiAiKX19ZnVuY3Rpb24gX2plKGQsZyl7MSZkJiYoTDAoMCksdHQoMSwic3BhbiIsMjUpLFd0KDIsIiBWYWxpZGF0aW5nIGRlcGxveS4uLiAiKSxpdCgpLHR0KDMsInNwYW4iKSxXdCg0LCIgVmFsaWRhdGluZyBkZXBsb3kuLi4gIiksaXQoKSxPMCgp''@;'; put 'put ''KX1mdW5jdGlvbiBDamUoZCxnKXsxJmQmJihMMCgwKSxicigxLCJjbHItaWNvbiIsNDYpLHR0KDIsInNwYW4iKSxXdCgzLCIgVmFsaWRhdGlvbiBmYWlsZWQgIiksaXQoKSxPMCgpKX1mdW5jdGlvbiBramUoZCxnKXsxJmQmJihMMCgwKSxicigxLCJjbHItaWNvbiIsNDcpLHR0KDIsInNwYW4i''@;'; put 'put ''KSxXdCgzLCIgVmFsaWRhdGlvbiBzdWNjZWVkZWQgIiksaXQoKSxPMCgpKX1mdW5jdGlvbiBTamUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDQ1KSxubigxLF9qZSw1LDAsIm5nLWNvbnRhaW5lciIsNSksbm4oMixDamUsNCwwLCJuZy1jb250YWluZXIiLDUpLG5uKDMsa2plLDQsMCwibmct''@;'; put 'put ''Y29udGFpbmVyIiw1KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMSkseHQoIm5nSWYiLGguaXNWYWxpZGF0aW5nKSxzdCgxKSx4dCgibmdJZiIsIWguaXNWYWxpZGF0aW5nJiYiZXJyb3IiPT09aC52YWxpZGF0aW9uU3RhdGUpLHN0KDEpLHh0KCJuZ0lmIiwhaC5pc1ZhbGlkYXRpbmcm''@;'; put 'put ''JiJzdWNjZXNzIj09PWgudmFsaWRhdGlvblN0YXRlKX19ZnVuY3Rpb24gTWplKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7TDAoMCksdHQoMSwicCIsMzkpLFd0KDIsIkNyZWF0ZSBEYXRhYmFzZSBDb21wbGV0ZWQiKSxpdCgpLGJyKDMsImhyIiksbm4oNCxiamUsMiwxLCJkaXYiLDQxKSx0''@;'; put 'put ''dCg1LCJidXR0b24iLDQyKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMikubmF2aWdhdGVUb0hvbWUoKSl9KSxXdCg2LCIgTGV0J3MgZ2V0IHN0YXJ0ZWQgIiksaXQoKSx0dCg3LCJidXR0b24iLDQyKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5''@;'; put 'put ''PVV0KDIpO3JldHVybiBidCh5LmRvd25sb2FkRmlsZSh5Lm1ha2VEYXRhUmVzcG9uc2UsImNyZWF0ZS1kYXRhYmFzZS1sb2ciLCJ0eHQiKSl9KSxXdCg4LCIgRG93bmxvYWQgbG9nICIpLGl0KCksdHQoOSwiYnV0dG9uIiw0MiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0''@;'; put 'put ''KFV0KDIpLnZhbGlkYXRlRGVwbG95KCkpfSksV3QoMTAsIiBWYWxpZGF0ZSAiKSxpdCgpLG5uKDExLFNqZSw0LDMsImRpdiIsNDMpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KDIpO3N0KDQpLHh0KCJuZ0lmIixoLm1ha2VEYXRhUmVzcG9uc2UubGVuZ3RoPjApLHN0KDcpLHh0KCJuZ0lmIiwi''@;'; put 'put ''bm9uZSIhPT1oLnZhbGlkYXRpb25TdGF0ZXx8aC5pc1ZhbGlkYXRpbmcpfX1jb25zdCBKaGU9ZnVuY3Rpb24oKXtyZXR1cm57c3RhbmRhbG9uZTohMH19O2Z1bmN0aW9uIEVqZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO0wwKDApLHR0KDEsImZvcm0iKSgyLCJkaXYiLDE1KSgzLCJsYWJl''@;'; put 'put ''bCIsMTYpLFd0KDQsIkFkbWluIGdyb3VwIiksaXQoKSx0dCg1LCJkaXYiLDE3KSg2LCJkaXYiLDE4KSg3LCJzZWxlY3QiLDE5KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5zZWxlY3RlZEFkbWluR3JvdXA9eSl9KSxubig4LGdqZSwyLDIsIm9w''@;'; put 'put ''dGlvbiIsMjApLGl0KCkoKSgpKCksdHQoOSwiZGl2IiwxNSkoMTAsImRpdiIpKDExLCJsYWJlbCIsMTYpLFd0KDEyLCJDb250ZXh0IiksaXQoKSx0dCgxMywiZGl2IiwxNykoMTQsImRpdiIsMTgpKDE1LCJzZWxlY3QiLDIxKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJu''@;'; put 'put ''IGEoaCksYnQoVXQoKS5zZWxlY3RlZENvbnRleHQ9eSl9KSxubigxNix2amUsNCw1LCJvcHRpb24iLDIwKSxpdCgpKCkoKSx0dCgxNywiYnV0dG9uIiwyMiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuZXhlY3V0YWJsZUNvbnRleHQoKSl9KSxicigxOCwiY2xy''@;'; put 'put ''LWljb24iLDIzKSxpdCgpKCksdHQoMTksImRpdiIsMjQpKDIwLCJzcGFuIiwyNSksV3QoMjEsIiBMb2FkaW5nIGNvbnRleHRzLi4uICIpLGl0KCksdHQoMjIsInNwYW4iKSxXdCgyMywiIExvYWRpbmcgY29udGV4dHMuLi4gIiksaXQoKSgpLHR0KDI0LCJsYWJlbCIsMjYpLFd0KDI1LCJEQyBM''@;'; put 'put ''b2MiKSxpdCgpLHR0KDI2LCJkaXYiLDkpKDI3LCJkaXYiLDEwKSgyOCwiaW5wdXQiLDI3KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5kY1BhdGg9eSl9KSgiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5zYXZlRGNQ''@;'; put 'put ''YXRoKCkpfSksaXQoKSgpKCksdHQoMjksInAiLDI4KSxXdCgzMCwiIFNlbGVjdCBKU09OIGZpbGUgdG8gdXBsb2FkIChqc29uIGJ1aWxkIGZpbGUgcHJlbG9hZGVkKTogIiksaXQoKSx0dCgzMSwiZGl2IiwyOSkoMzIsImlucHV0IiwzMCksWm4oImNsaWNrIixmdW5jdGlvbih5KXtyZXR1cm4g''@;'; put 'put ''YShoKSxidChVdCgpLmNsZWFyVXBsb2FkSW5wdXQoeSkpfSkoImNoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5vbkpzb25GaWxlQ2hhbmdlKHkpKX0pLGl0KCkoKSx0dCgzMywiZGl2IiwzMSkoMzQsImJ1dHRvbiIsMzIpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gYShoKSxidChVdCgpLmV4ZWN1dGVKc29uKCkpfSksV3QoMzUsIiBTVUJNSVQgSlNPTiAiKSxpdCgpLG5uKDM2LEFqZSwyLDAsInNwYW4iLDUpLGl0KCksdHQoMzcsInAiLDI4KSxXdCgzOCwiU2VsZWN0IFNBUyBmaWxlIHRvIHVwbG9hZDoiKSxpdCgpLHR0KDM5LCJkaXYiLDI5KSg0MCwi''@;'; put 'put ''aW5wdXQiLDMwKSxabigiY2xpY2siLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkuY2xlYXJVcGxvYWRJbnB1dCh5KSl9KSgiY2hhbmdlIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoKTtyZXR1cm4gQy5vblNhc0ZpbGVDaGFuZ2UoeSksYnQoQy5kb3dubG9hZEZpbGVCdG49''@;'; put 'put ''ITApfSksaXQoKSxubig0MSx5amUsMiwwLCJidXR0b24iLDMzKSxpdCgpLHR0KDQyLCJkaXYiLDMxKSg0MywiYnV0dG9uIiwzNCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuZXhlY3V0ZVNBUygpKX0pLFd0KDQ0LCIgU1VCTUlUICIpLGl0KCkoKSgpLG5uKDQ1''@;'; put 'put ''LHdqZSw3LDAsIm5nLWNvbnRhaW5lciIsNSksdHQoNDYsImJ1dHRvbiIsMzUpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmNyZWF0ZURhdGFiYXNlKCkpfSksV3QoNDcsIiBDcmVhdGUgRGF0YWJhc2UgIiksaXQoKSxubig0OCxNamUsMTIsMiwibmctY29udGFp''@;'; put 'put ''bmVyIiw1KSxpdCgpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3QoNykseHQoIm5nTW9kZWwiLGguc2VsZWN0ZWRBZG1pbkdyb3VwKSgibmdNb2RlbE9wdGlvbnMiLGxzKDE5LEpoZSkpLHN0KDEpLHh0KCJuZ0Zvck9mIixoLmFkbWluR3JvdXBzKSxzdCgyKSxIaSgiaGlkZGVuIixoLmNv''@;'; put 'put ''bnRleHRzTG9hZGluZyksc3QoNSkseHQoIm5nTW9kZWwiLGguc2VsZWN0ZWRDb250ZXh0KSgibmdNb2RlbE9wdGlvbnMiLGxzKDIwLEpoZSkpLHN0KDEpLHh0KCJuZ0Zvck9mIixoLmFsbENvbnRleHRzKSxzdCgzKSxIaSgiaGlkZGVuIiwhaC5jb250ZXh0c0xvYWRpbmcpLHN0KDkpLHh0KCJu''@;'; put 'put ''Z01vZGVsIixoLmRjUGF0aCkoIm5nTW9kZWxPcHRpb25zIixscygyMSxKaGUpKSxzdCg2KSx4dCgiY2xyTG9hZGluZyIsaC5pc1N1Ym1pdHRpbmdKc29uKSxzdCgyKSx4dCgibmdJZiIsaC5pc0pzb25TdWJtaXR0ZWQpLHN0KDUpLHh0KCJuZ0lmIixoLmRvd25sb2FkRmlsZUJ0biksc3QoMiks''@;'; put 'put ''eHQoImNsckxvYWRpbmciLGguZXhlY3V0aW5nU2NyaXB0KSxzdCgyKSx4dCgibmdJZiIsaC5qb2JMb2cubGVuZ3RoPjApLHN0KDEpLHh0KCJjbHJMb2FkaW5nIixoLmNyZWF0ZURhdGFiYXNlTG9hZGluZyksc3QoMikseHQoIm5nSWYiLGgubWFrZURhdGFSZXNwb25zZS5sZW5ndGg+MCl9fWxl''@;'; put 'put ''dCB4amU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMubG9nZ2VyU2VydmljZT15LHRoaXMuZGVwbG95U2VydmljZT1DLHRoaXMuc2FzSnNDb25maWc9bmV3IFFkLlNBU2pzQ29uZmlnLHRoaXMub25O''@;'; put 'put ''YXZpZ2F0ZVRvSG9tZT1uZXcgZm4sdGhpcy5uZWVkc0xvZ2luPSExLHRoaXMuYWRtaW5Hcm91cHM9W10sdGhpcy5hbGxDb250ZXh0cz1bXSx0aGlzLmFwcExvYz0iIix0aGlzLmRjUGF0aD0iIix0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cD0iIix0aGlzLnNlbGVjdGVkQ29udGV4dD0iIix0aGlz''@;'; put 'put ''LmpvYkxvZz0iIix0aGlzLm1ha2VEYXRhUmVzcG9uc2U9IiIsdGhpcy5saW5lc09mQ29kZT1bXSx0aGlzLmZpbGVOYW1lPSIiLHRoaXMucHJlbG9hZGVkRmlsZT0hMCx0aGlzLmV4ZWN1dGVTQVNFbmFibGVkPSExLHRoaXMuY29udGV4dHNMb2FkaW5nPSExLHRoaXMuY3JlYXRlRGF0YWJhc2VM''@;'; put 'put ''b2FkaW5nPSExLHRoaXMuZXhlY3V0aW5nU2NyaXB0PSExLHRoaXMuZG93bmxvYWRGaWxlQnRuPSExLHRoaXMuaXNWYWxpZGF0aW5nPSExLHRoaXMuanNvbkZpbGU9bnVsbCx0aGlzLmlzU3VibWl0dGluZ0pzb249ITEsdGhpcy5pc0pzb25TdWJtaXR0ZWQ9ITEsdGhpcy52YWxpZGF0aW9uU3Rh''@;'; put 'put ''dGU9Im5vbmUifW5nT25Jbml0KCl7fWV4ZWN1dGFibGVDb250ZXh0KCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt9KX1jbGVhclVwbG9hZElucHV0KGgpe3RoaXMuZGVwbG95U2VydmljZS5jbGVhclVwbG9hZElucHV0KGgpfW9uU2FzRmlsZUNoYW5nZShoKXt0''@;'; put 'put ''aGlzLnByZWxvYWRlZEZpbGU9ITE7bGV0IHY9aC50YXJnZXQuZmlsZXNbMF07dGhpcy5maWxlTmFtZT12Lm5hbWU7bGV0IHk9bmV3IEZpbGVSZWFkZXI7eS5vbmxvYWQ9KCk9Pnt5LnJlc3VsdCYmKHRoaXMubGluZXNPZkNvZGU9eS5yZXN1bHQuc3BsaXQoIlxuIiksdGhpcy5saW5lc09mQ29k''@;'; put 'put ''ZT10aGlzLmxpbmVzT2ZDb2RlLmZpbHRlcihDPT4iIiE9PUMmJm51bGwhPT1DKSx0aGlzLmV4ZWN1dGVTQVNFbmFibGVkPSEwLHRoaXMuYWRkUHJlY29kZUxpbmVzKCkpfSx5LnJlYWRBc1RleHQodil9b25Kc29uRmlsZUNoYW5nZShoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1''@;'; put 'put ''bmN0aW9uKigpe2xldCB2PWgudGFyZ2V0LmZpbGVzWzBdO3RoaXMuanNvbkZpbGU9eWllbGQgdGhpcy5kZXBsb3lTZXJ2aWNlLnJlYWRGaWxlKHYpfSl9YWRkUHJlY29kZUxpbmVzKCl7dGhpcy5saW5lc09mQ29kZS51bnNoaWZ0KGAlbGV0IGNvbnRleHQ9JHt0aGlzLnNlbGVjdGVkQ29udGV4''@;'; put 'put ''dH07YCxgJWxldCBhcHBMb2M9JHt0aGlzLmFwcExvY307YCxgJWxldCBhZG1pbj0ke3RoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwfTtgLGAlbGV0IGRjcGF0aD0ke3RoaXMuZGNQYXRofTtgKX1kb3dubG9hZFNhc1ByZWNvZGVGaWxlKCl7bGV0IGg9dGhpcy5saW5lc09mQ29kZS5qb2luKCJcbiIp''@;'; put 'put ''LHY9dGhpcy5maWxlTmFtZS5zcGxpdCgiLiIpWzBdO3RoaXMuZG93bmxvYWRGaWxlKGgsdiwic2FzIil9ZG93bmxvYWRGaWxlKGgsdix5PSJ0eHQiKXt0aGlzLmRlcGxveVNlcnZpY2UuZG93bmxvYWRGaWxlKGgsdix5KX1zYXZlRGNQYXRoKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oImRlcGxv''@;'; put 'put ''eV9kY19sb2MiLHRoaXMuZGNQYXRoKX1leGVjdXRlSnNvbigpe3ZhciBoO3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5pc1N1Ym1pdHRpbmdKc29uPSEwO3RyeXt5aWVsZCB0aGlzLnNhc0pzLmRlcGxveVNlcnZpY2VQYWNrKHRoaXMuanNvbkZpbGUsKG51''@;'; put 'put ''bGw9PT0oaD10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09aD92b2lkIDA6aC5hcHBMb2MpfHwiIix2b2lkIDAsdm9pZCAwLCEwKSx0aGlzLmlzSnNvblN1Ym1pdHRlZD0hMH1jYXRjaCh2KXtsZXQgeT0iIjtyZXR1cm4geT0ic3RyaW5nIiE9dHlwZW9mIHYubWVzc2FnZT9KU09O''@;'; put 'put ''LnN0cmluZ2lmeSh2KS5yZXBsYWNlKC9cXC9nbSwiIik6di5tZXNzYWdlLHZvaWQgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRGVwbG95IGVycm9yIixgRXhjZXB0aW9uOiBcbiAkeyIiIT09eT95OnZ9YCl9dGhpcy5pc1N1Ym1pdHRpbmdKc29uPSExfSl9ZXhlY3V0ZVNBUygp''@;'; put 'put ''e3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5leGVjdXRpbmdTY3JpcHQ9ITAsdGhpcy5qb2JMb2c9IiIsdGhpcy5tYWtlRGF0YVJlc3BvbnNlPSIiO3RyeXtsZXQgaD15aWVsZCB0aGlzLnNhc0pzLmV4ZWN1dGVTY3JpcHRTQVNWaXlhKHRoaXMuZmlsZU5h''@;'; put 'put ''bWUsdGhpcy5saW5lc09mQ29kZSx0aGlzLnNlbGVjdGVkQ29udGV4dCk7dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyhoKSwic3RyaW5nIj09dHlwZW9mIGgubG9nJiYoaC5sb2c9SlNPTi5wYXJzZShoLmxvZykpLCJlcnJvciI9PT1oLmpvYlN0YXR1cz9hbGVydCgiRXJyb3IhIik6dGhpcy5qb2JM''@;'; put 'put ''b2c9aC5sb2cuaXRlbXM/aC5sb2cuaXRlbXMubWFwKHY9PnYubGluZSkuam9pbigiXG4iKTpKU09OLnN0cmluZ2lmeShoLmxvZyksdGhpcy5leGVjdXRpbmdTY3JpcHQ9ITF9Y2F0Y2goaCl7dGhpcy5leGVjdXRpbmdTY3JpcHQ9ITF9fSl9Y3JlYXRlRGF0YWJhc2UoaD0hMCl7dmFyIHY7aWYo''@;'; put 'put ''aCl7bGV0IEk9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkuc2VydmVyVXJsKyIvU0FTSm9iRXhlY3V0aW9uLz9fcHJvZ3JhbT0iKyhudWxsPT09KHY9dGhpcy5kY0FkYXB0ZXJTZXR0aW5ncyl8fHZvaWQgMD09PXY/dm9pZCAwOnYuYXBwTG9jKXx8Ii9hZG1pbi9tYWtlZGF0YSZB''@;'; put 'put ''RE1JTj0iK3RoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwKyImRENQQVRIPSIrdGhpcy5kY1BhdGgrIiZfZGVidWc9MTMxIjt3aW5kb3cub3BlbihJLCJfYmxhbmsiKX1lbHNlIHRoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSEwLHRoaXMuc2FzSnMucmVxdWVzdCgic2VydmljZXMvYWRtaW4vbWFr''@;'; put 'put ''ZWRhdGEiLHtmcm9tanM6W3tBRE1JTjp0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cCxEQ1BBVEg6dGhpcy5kY1BhdGh9XX0se3VzZUNvbXB1dGVBcGk6ITEsY29udGV4dE5hbWU6dGhpcy5zYXNKc0NvbmZpZy5jb250ZXh0TmFtZSxkZWJ1ZzohMH0sKCk9Pnt0aGlzLnNhc1NlcnZpY2Uuc2hvdWxk''@;'; put 'put ''TG9naW4ubmV4dCghMCl9KS50aGVuKEk9Pnt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KEkpfWNhdGNoKGope3RoaXMubWFrZURhdGFSZXNwb25zZT1JfXRoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSExfSkuY2F0Y2goST0+e3RoaXMuY3JlYXRlRGF0YWJhc2VM''@;'; put 'put ''b2FkaW5nPSExO3RyeXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9SlNPTi5zdHJpbmdpZnkoSSl9Y2F0Y2goail7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUl9fSl9bmF2aWdhdGVUb0hvbWUoKXt0aGlzLm9uTmF2aWdhdGVUb0hvbWUuZW1pdCgpfXZhbGlkYXRlRGVwbG95KCl7dGhpcy5pc1ZhbGlk''@;'; put 'put ''YXRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9zdGFydHVwc2VydmljZSIsbnVsbCkudGhlbihoPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyhoKSx0aGlzLnZhbGlkYXRpb25TdGF0ZT1oLnNhc2xpYnM/InN1Y2Nlc3MiOiJlcnJvciIsdGhpcy5pc1ZhbGlkYXRpbmc9''@;'; put 'put ''ITF9KS5jYXRjaChoPT57dGhpcy5pc1ZhbGlkYXRpbmc9ITEsdGhpcy52YWxpZGF0aW9uU3RhdGU9ImVycm9yIn0pfWRlbGV0ZUtleXMoKXtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZGVwbG95X2RjX2xvYyIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyho''@;'; put 'put ''fHxkKShLdChsMCksS3QobXUpLEt0KEdoKSxLdCh5YmUpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLW1hbnVhbC1kZXBsb3kiXV0saW5wdXRzOntzYXNKczoic2FzSnMiLHNhc0pzQ29uZmlnOiJzYXNKc0NvbmZpZyIsZGNBZGFwdGVyU2V0dGluZ3M6ImRjQWRh''@;'; put 'put ''cHRlclNldHRpbmdzIn0sb3V0cHV0czp7b25OYXZpZ2F0ZVRvSG9tZToib25OYXZpZ2F0ZVRvSG9tZSJ9LGRlY2xzOjksdmFyczozLGNvbnN0czpbWzEsImNhcmQtaGVhZGVyIiwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiZC1pbmxpbmUtYmxvY2siLCJtbC0xMCIsIm1iLTEwIiwibXQtMCJd''@;'; put 'put ''LFsxLCJidG4iLCJidG4tcHJpbWFyeSIsImNsZWFyLW1lbW9yeS1idXR0b24iLCJwb3NpdGlvbi1hYnNvbHV0ZSIsMywiY2xpY2siXSxbMSwiY2FyZC1ibG9jayJdLFsiaWQiLCJsb2dpbkZvcm0iLCJjbGFzcyIsImQtbm9uZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJpZCIsImxvZ2luRm9y''@;'; put 'put ''bSIsMSwiZC1ub25lIl0sWzEsIm1iLTEwIl0sWyJmb3IiLCJ1c2VybmFtZSIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbInR5cGUiLCJ0ZXh0IiwiaWQiLCJ1c2VybmFtZSIsMSwiY2xy''@;'; put 'put ''LWlucHV0Il0sWyJmb3IiLCJwYXNzd29yZCIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbInR5cGUiLCJwYXNzd29yZCIsImlkIiwicGFzc3dvcmQiLDEsImNsci1pbnB1dCJdLFsiaWQiLCJsb2dpbkJ0biIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJkLW5vbmUiXSxbMSwiY2xyLWZvcm0tY29u''@;'; put 'put ''dHJvbCJdLFsiZm9yIiwic2VsZWN0LWZ1bGwiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciJdLFsxLCJjbHItc2VsZWN0LXdyYXBwZXIiXSxbIm5hbWUiLCJzZWxlY3RlZEFkbWluR3JvdXAiLCJpZCIsImFkbWluR3JvdXBzU2VsZWN0IiwxLCJjbHIt''@;'; put 'put ''c2VsZWN0IiwzLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIm5hbWUiLCJzZWxlY3RlZENvbnRleHQiLDEsImNsci1zZWxlY3QiLDMsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyIsIm5nTW9kZWxD''@;'; put 'put ''aGFuZ2UiXSxbInR5cGUiLCJidXR0b24iLCJpZCIsImNvbnRleHRzLWJ0biIsMSwiYnRuIiwiYnRuLWljb24iLDMsImNsaWNrIl0sWyJzaGFwZSIsInBsYXkiXSxbMSwiZC1mbGV4Il0sWzEsInNwaW5uZXIiLCJzcGlubmVyLWlubGluZSIsIm1yLTEwIl0sWyJmb3IiLCJkY2xvYyIsMSwibXQt''@;'; put 'put ''MjAiLCJjbHItY29udHJvbC1sYWJlbCJdLFsibmFtZSIsImRjUGF0aCIsInR5cGUiLCJ0ZXh0IiwiaWQiLCJkY2xvYyIsMSwiY2xyLWlucHV0IiwzLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJuZ01vZGVsQ2hhbmdlIiwiZm9jdXNvdXQiXSxbMSwibXQtMTAiXSxbMSwiZC1mbGV4Iiwi''@;'; put 'put ''ZmxleC1jb2x1bW4iXSxbInR5cGUiLCJmaWxlIiwzLCJjbGljayIsImNoYW5nZSJdLFsxLCJtdC0yMCIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiaWQiLCIiLDEsIm10LTAiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFsiY2xhc3MiLCJidG4gYnRuLXNtIGJ0bi1pY29uIG1p''@;'; put 'put ''bi13LTAgdy00MCIsMywiY2xpY2siLDQsIm5nSWYiXSxbImlkIiwiZGVwbG95IiwxLCJtdC0wIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0xMCIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWzMsInZhbHVlIl0sWzEsImJ0biIsImJ0bi1zbSIs''@;'; put 'put ''ImJ0bi1pY29uIiwibWluLXctMCIsInctNDAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl0sWzEsIm1iLTAiLCJtdC0xMCJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsIm10LTAiLCJtci0yMCIsMywiY2xpY2siXSxbImNsYXNzIiwibG9nLXdyYXBwZXIiLDQsIm5nSWYiXSxbMSwi''@;'; put 'put ''YnRuIiwiYnRuLXByaW1hcnkiLCJtdC0xNSIsMywiY2xpY2siXSxbImNsYXNzIiwidmFsaWRhdGlvbi1iYXIiLDQsIm5nSWYiXSxbMSwibG9nLXdyYXBwZXIiXSxbMSwidmFsaWRhdGlvbi1iYXIiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwxLCJpcy1lcnJvciJdLFsic2hhcGUi''@;'; put 'put ''LCJjaGVjay1jaXJjbGUiLDEsImlzLXN1Y2Nlc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJkaXYiLDApLFd0KDEsIiBDb25maWd1cmF0b3IgIiksdHQoMiwicCIsMSksV3QoMyksaXQoKSx0dCg0LCJidXR0b24iLDIpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdi5kZWxldGVLZXlzKCl9KSxXdCg1LCIgQ2xlYXIgbWVtb3J5ICIpLGl0KCkoKSx0dCg2LCJkaXYiLDMpLG5uKDcscGplLDE1LDAsImRpdiIsNCksbm4oOCxFamUsNDksMjIsIm5nLWNvbnRhaW5lciIsNSksaXQoKSksMiZoJiYoc3QoMyksVWkoIkFwcCBMb2NhdGlvbjogIix2LmFwcExv''@;'; put 'put ''YywiIiksc3QoNCkseHQoIm5nSWYiLHYubmVlZHNMb2dpbiksc3QoMSkseHQoIm5nSWYiLCF2Lm5lZWRzTG9naW4pKX0sZGVwZW5kZW5jaWVzOltxbCxCbyxvZyxKMyxYMyxwMSxFZixqcyx0dixfcyx0NCxHMixSaSxXMixhcyxpSV0sc3R5bGVzOlsiLmNsZWFyLW1lbW9yeS1idXR0b25bX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde3JpZ2h0OjEwcHg7dG9wOjJweH0iXX0pLGR9KSgpO2Z1bmN0aW9uIFRqZShkLGcpezEmZCYmKEwwKDApLHR0KDEsInNwYW4iLDIxKSxXdCgyLCIgTG9hZGluZy4uLiAiKSxpdCgpLHR0KDMsInAiKSxXdCg0LCJEZXBsb3lpbmcuLi4iKSxpdCgpLE8wKCkpfWZ1bmN0''@;'; put 'put ''aW9uIElqZShkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDMyKX1mdW5jdGlvbiBEamUoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwzMyl9ZnVuY3Rpb24gTGplKGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsMzIpfWZ1bmN0aW9uIE9qZShkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDMz''@;'; put 'put ''KX1mdW5jdGlvbiBSamUoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDI0KSxubigxLExqZSwxLDAsImNsci1pY29uIiwyNSksbm4oMixPamUsMSwwLCJjbHItaWNvbiIsMjYpLHR0KDMsInAiKSxXdCg0LCJDcmVhdGUgZGF0YWJhc2UiKSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgzKTtzdCgx''@;'; put 'put ''KSx4dCgibmdJZiIsaC5hdXRvRGVwbG95U3RhdHVzLnJ1bk1ha2VEYXRhKSxzdCgxKSx4dCgibmdJZiIsITE9PT1oLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGEpfX1mdW5jdGlvbiBCamUoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwzMyl9ZnVuY3Rpb24gUGplKGQsZyl7aWYoMSZk''@;'; put 'put ''KXtjb25zdCBoPXlpKCk7TDAoMCksdHQoMSwicCIsMjIpLFd0KDIsIkRvbmUiKSxpdCgpLGJyKDMsImhyIiwyMyksdHQoNCwiZGl2IiwyNCksbm4oNSxJamUsMSwwLCJjbHItaWNvbiIsMjUpLG5uKDYsRGplLDEsMCwiY2xyLWljb24iLDI2KSx0dCg3LCJwIiksV3QoOCwiRGVwbG95IFNBUyBK''@;'; put 'put ''b2JzIiksaXQoKSgpLG5uKDksUmplLDUsMiwiZGl2IiwyNyksYnIoMTAsImhyIiwyMyksdHQoMTEsImRpdiIsMjgpKDEyLCJidXR0b24iLDI5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMikubmF2aWdhdGVUb0hvbWUoKSl9KSxubigxMyxCamUsMSwwLCJjbHIt''@;'; put 'put ''aWNvbiIsMjYpLFd0KDE0LCIgTEFVTkNIIC8gQ09ORklHVVJFICIpLGl0KCksdHQoMTUsImJ1dHRvbiIsMzApLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIGJ0KHkuZG93bmxvYWRGaWxlKHkubWFrZURhdGFSZXNwb25zZSwiY3JlYXRlLWRhdGFiYXNl''@;'; put 'put ''LWxvZyIsInR4dCIpKX0pLFd0KDE2LCIgRG93bmxvYWQgbG9nICIpLGl0KCkoKSxicigxNywiaHIiLDIzKSx0dCgxOCwiZGl2IiwyOCkoMTksImJ1dHRvbiIsMzEpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIHkuYXV0b2RlcGxveWluZz0hMSxidCh5''@;'; put 'put ''LmF1dG9kZXBsb3lEb25lPSExKX0pLFd0KDIwLCIgQ2xvc2UgIiksaXQoKSx0dCgyMSwiYnV0dG9uIiwzMSksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLm9wZW5TYXNSZXF1ZXN0c01vZGFsKCkpfSksV3QoMjIsIiBTQVMgUmVxdWVzdHMgIiksaXQoKSgpLE8w''@;'; put 'put ''KCl9aWYoMiZkKXtjb25zdCBoPVV0KDIpO3N0KDUpLHh0KCJuZ0lmIixoLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2spLHN0KDEpLHh0KCJuZ0lmIiwhaC5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrKSxzdCgzKSx4dCgibmdJZiIsbnVsbCE9PWguYXV0b0Rl''@;'; put 'put ''cGxveVN0YXR1cy5ydW5NYWtlRGF0YSksc3QoNCkseHQoIm5nSWYiLCExPT09aC5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrfHwhMT09PWguYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSl9fWZ1bmN0aW9uIEZqZShkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMTgpKDEs''@;'; put 'put ''ImRpdiIsMTkpLG5uKDIsVGplLDUsMCwibmctY29udGFpbmVyIiwyMCksbm4oMyxQamUsMjMsNCwibmctY29udGFpbmVyIiwyMCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgyKSx4dCgibmdJZiIsIWguYXV0b2RlcGxveURvbmUpLHN0KDEpLHh0KCJuZ0lmIixoLmF1dG9kZXBsb3lE''@;'; put 'put ''b25lKX19bGV0IEhqZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5kZXBsb3lTZXJ2aWNlPXYsdGhpcy5zYXNTZXJ2aWNlPXksdGhpcy5sb2dnZXJTZXJ2aWNlPUMsdGhpcy5zYXNKc0NvbmZpZz1uZXcgUWQuU0FTanNDb25maWcs''@;'; put 'put ''dGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyBmbix0aGlzLm1ha2VEYXRhUmVzcG9uc2U9IiIsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuYXV0b2RlcGxveWluZz0hMSx0aGlzLmF1dG9kZXBs''@;'; put 'put ''b3lEb25lPSExLHRoaXMucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSExLHRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMSx0aGlzLmlzSnNvblN1Ym1pdHRlZD0hMSx0aGlzLnJlY3JlYXRlRGF0YWJhc2U9ITEsdGhpcy5jcmVhdGVEYXRhYmFzZUxvYWRpbmc9ITEsdGhpcy5hdXRvRGVwbG95U3RhdHVz''@;'; put 'put ''PXtkZXBsb3lTZXJ2aWNlUGFjazpudWxsLHJ1bk1ha2VEYXRhOm51bGx9fW5nT25Jbml0KCl7fWV4ZWN1dGVKc29uKCl7dmFyIGg7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmF1dG9kZXBsb3lpbmc9ITAsdGhpcy5pc1N1Ym1pdHRpbmdKc29uPSEwO3Ry''@;'; put 'put ''eXt5aWVsZCB0aGlzLnNhc0pzLmRlcGxveVNlcnZpY2VQYWNrKHRoaXMuanNvbkZpbGUsbnVsbD09PShoPXRoaXMuZGNBZGFwdGVyU2V0dGluZ3MpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLmFwcExvYyx2b2lkIDAsdm9pZCAwLCEwKSx0aGlzLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2Vydmlj''@;'; put 'put ''ZVBhY2s9ITAsdGhpcy5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2godil7bGV0IHk9IiI7cmV0dXJuIHk9InN0cmluZyIhPXR5cGVvZiB2Lm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkodikucmVwbGFjZSgvXFwvZ20sIiIpOnYubWVzc2FnZSx0aGlzLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2Vy''@;'; put 'put ''dmljZVBhY2s9ITEsdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRGVwbG95IGVycm9yIixgRXhjZXB0aW9uOiBcbiAkeyIiIT09eT95OnZ9YCksdGhpcy5hdXRvZGVwbG95aW5nPSExLHZvaWQodGhpcy5hdXRvZGVwbG95RG9uZT0hMSl9dGhpcy5pc1N1Ym1pdHRpbmdKc29uPSEx''@;'; put 'put ''LHRoaXMucmVjcmVhdGVEYXRhYmFzZT90aGlzLmNyZWF0ZURhdGFiYXNlKCk6dGhpcy5hdXRvZGVwbG95RG9uZT0hMH0pfWNyZWF0ZURhdGFiYXNlKCl7dGhpcy5zYXNKcy5yZXF1ZXN0KCJzZXJ2aWNlcy9hZG1pbi9tYWtlZGF0YSIse2Zyb21qczpbe0FETUlOOnRoaXMuc2VsZWN0ZWRBZG1p''@;'; put 'put ''bkdyb3VwLERDUEFUSDp0aGlzLmRjUGF0aH1dfSx7dXNlQ29tcHV0ZUFwaTohMSxjb250ZXh0TmFtZTp0aGlzLnNhc0pzQ29uZmlnLmNvbnRleHROYW1lLGRlYnVnOiEwfSwoKT0+e3RoaXMuc2FzU2VydmljZS5zaG91bGRMb2dpbi5uZXh0KCEwKX0pLnRoZW4oeT0+e3RoaXMuYXV0b2RlcGxv''@;'; put 'put ''eURvbmU9ITA7dHJ5e3RoaXMubWFrZURhdGFSZXNwb25zZT1KU09OLnN0cmluZ2lmeSh5KX1jYXRjaChDKXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9eX10aGlzLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGE9ISEoeS5yZXN1bHQmJnkucmVzdWx0Lmxlbmd0aD4wKX0pLmNhdGNoKHk9Pnt0''@;'; put 'put ''aGlzLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGE9ITEsdGhpcy5hdXRvZGVwbG95RG9uZT0hMDt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KHkpfWNhdGNoKEMpe3RoaXMubWFrZURhdGFSZXNwb25zZT15fX0pfWRvd25sb2FkRmlsZShoLHYseT0idHh0Iil7''@;'; put 'put ''dGhpcy5kZXBsb3lTZXJ2aWNlLmRvd25sb2FkRmlsZShoLHYseSl9b25Kc29uRmlsZUNoYW5nZShoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB2PWgudGFyZ2V0LmZpbGVzWzBdO3RoaXMuanNvbkZpbGU9eWllbGQgdGhpcy5kZXBsb3lTZXJ2aWNlLnJl''@;'; put 'put ''YWRGaWxlKHYpfSl9cmVjcmVhdGVEYXRhYmFzZUNsaWNrZWQoaCl7ITA9PT1oLnRhcmdldC5jaGVja2VkJiYodGhpcy5yZWNyZWF0ZURhdGFiYXNlTW9kYWw9ITApfWNsZWFyVXBsb2FkSW5wdXQoaCl7dGhpcy5kZXBsb3lTZXJ2aWNlLmNsZWFyVXBsb2FkSW5wdXQoaCl9b3BlblNhc1JlcXVl''@;'; put 'put ''c3RzTW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vcGVuUmVxdWVzdHNNb2RhbCgpfW5hdmlnYXRlVG9Ib21lKCl7dGhpcy5vbk5hdmlnYXRlVG9Ib21lLmVtaXQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobXUpLEt0KHliZSksS3QobDAp''@;'; put 'put ''LEt0KEdoKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1hdXRvbWF0aWMtZGVwbG95Il1dLGlucHV0czp7c2FzSnM6InNhc0pzIixzYXNKc0NvbmZpZzoic2FzSnNDb25maWciLGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0ZXJTZXR0aW5ncyIsYXBwTG9jOiJh''@;'; put 'put ''cHBMb2MiLGRjUGF0aDoiZGNQYXRoIixzZWxlY3RlZEFkbWluR3JvdXA6InNlbGVjdGVkQWRtaW5Hcm91cCJ9LG91dHB1dHM6e29uTmF2aWdhdGVUb0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxkZWNsczo0Nix2YXJzOjEwLGNvbnN0czpbWyJjbGFzcyIsImF1dG8tZGVwbG95Iiw0LCJuZ0lm''@;'; put 'put ''Il0sWzEsInRleHQtY2VudGVyIiwibXktMTUiXSxbImZvciIsImRjbG9jIiwxLCJtdC0yMCIsImNsci1jb250cm9sLWxhYmVsIl0sWzEsIm1iLTEwIiwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1pbnB1dC13cmFwcGVyIl0sWzEsIm10LTAiXSxbMSwiY2xyLWNoZWNrYm94LXdy''@;'; put 'put ''YXBwZXIiXSxbInR5cGUiLCJjaGVja2JveCIsImlkIiwicmVjcmVhdGVkYi1jaGVja2JveCIsImNoZWNrZWQiLCIiLDEsImNsci1jaGVja2JveCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJjbGljayJdLFsiZm9yIiwicmVjcmVhdGVkYi1jaGVja2JveCJdLFsxLCJidG4tYXV0b2Rl''@;'; put 'put ''cGxveSIsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1pbmxpbmUtYmxvY2siLCJtci0xMCIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJidG4tYXV0b2RlcGxveSIsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1pbmxpbmUtYmxvY2siLCJtci0xMCIsMywiY2xpY2siXSxbInR5cGUiLCJmaWxlIiwi''@;'; put 'put ''aGlkZGVuIiwiIiwzLCJjbGljayIsImNoYW5nZSJdLFsidXBsb2FkSnNvbkF1dG8iLCIiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsIm1vZGFsLWZvb3RlciJd''@;'; put 'put ''LFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWzEsImF1dG8tZGVwbG95Il0sWzEsInNwaW5uZXItYm94Il0sWzQsIm5nSWYiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItbWQiXSxbMSwibS0wIiwiYWxpZ24tc2VsZi1zdGFydCJdLFsx''@;'; put 'put ''LCJ3LTEwMCJdLFsxLCJkZXBsb3ktc3RhdHVzLXJvdyJdLFsiY2xhc3MiLCJkZXBsb3ktc3VjY2VzcyIsInNoYXBlIiwic3VjY2Vzcy1zdGFuZGFyZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJkZXBsb3ktZXJyb3IiLCJzaGFwZSIsInRpbWVzLWNpcmNsZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJk''@;'; put 'put ''ZXBsb3ktc3RhdHVzLXJvdyIsNCwibmdJZiJdLFsxLCJidXR0b25zIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMTUiLCJtci0wIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tcHJpbWFyeS1vdXRsaW5lIiwibXQtMTUiLCJtci0wIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tcHJp''@;'; put 'put ''bWFyeS1vdXRsaW5lIiwibXQtMTUiLCJtci0wIiwiYWxpZ24tc2VsZi1lbmQiLDMsImNsaWNrIl0sWyJzaGFwZSIsInN1Y2Nlc3Mtc3RhbmRhcmQiLDEsImRlcGxveS1zdWNjZXNzIl0sWyJzaGFwZSIsInRpbWVzLWNpcmNsZSIsMSwiZGVwbG95LWVycm9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9u''@;'; put 'put ''KGgsdil7aWYoMSZoKXtjb25zdCB5PXlpKCk7bm4oMCxGamUsNCwyLCJkaXYiLDApLHR0KDEsImg0IiwxKSxXdCgyLCJWaXlhIERlcGxveSIpLGl0KCksYnIoMywiaHIiKSx0dCg0LCJsYWJlbCIsMiksV3QoNSwiQXBwIExvYyIpLGl0KCksdHQoNiwiZGl2IiwzKSg3LCJkaXYiLDQpKDgsInAi''@;'; put 'put ''LDUpLFd0KDkpLGl0KCkoKSgpLHR0KDEwLCJsYWJlbCIsMiksV3QoMTEsIkRDIExvYyIpLGl0KCksdHQoMTIsImRpdiIsMykoMTMsImRpdiIsNCkoMTQsInAiLDUpLFd0KDE1KSxpdCgpKCkoKSx0dCgxNiwibGFiZWwiLDIpLFd0KDE3LCJTQVMgQWRtaW4gZ3JvdXAiKSxpdCgpLHR0KDE4LCJk''@;'; put 'put ''aXYiLDMpKDE5LCJkaXYiLDQpKDIwLCJwIiw1KSxXdCgyMSksaXQoKSgpKCksdHQoMjIsImRpdiIsNikoMjMsImlucHV0Iiw3KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYucmVjcmVhdGVEYXRhYmFzZT1JfSkoImNsaWNrIixmdW5jdGlvbihJKXtyZXR1cm4gdi5y''@;'; put 'put ''ZWNyZWF0ZURhdGFiYXNlQ2xpY2tlZChJKX0pLGl0KCksdHQoMjQsImxhYmVsIiw4KSxXdCgyNSwiUmVjcmVhdGUgZGF0YWJhc2UiKSxpdCgpKCksYnIoMjYsImhyIiksdHQoMjcsImJ1dHRvbiIsOSksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmV4ZWN1dGVKc29uKCl9KSxXdCgy''@;'; put 'put ''OCksaXQoKSx0dCgyOSwiYnV0dG9uIiwxMCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKHkpLGJ0KHVhKDMyKS5jbGljaygpKX0pLFd0KDMwLCIgVXBsb2FkIGRpZmZlcmVudCBmaWxlIHRvIGRlcGxveVxuIiksaXQoKSx0dCgzMSwiaW5wdXQiLDExLDEyKSxabigiY2xpY2siLGZ1''@;'; put 'put ''bmN0aW9uKEkpe3JldHVybiB2LmNsZWFyVXBsb2FkSW5wdXQoSSl9KSgiY2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5vbkpzb25GaWxlQ2hhbmdlKEkpfSksaXQoKSx0dCgzMywiY2xyLW1vZGFsIiwxMyksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYu''@;'; put 'put ''cmVjcmVhdGVEYXRhYmFzZU1vZGFsPUl9KSx0dCgzNCwiaDMiLDE0KSxXdCgzNSwiV2FybmluZyIpLGl0KCksdHQoMzYsImRpdiIsMTUpLFd0KDM3LCIgVGhpcyBhY3Rpb24gd2lsbCByZWNyZWF0ZSB0aGUgZGF0YWJhc2UgKGlmIGl0IGV4aXN0cykuIEZvciBhbiBpbml0aWFsIGRlcGxveW1l''@;'; put 'put ''bnQsIHRoaXMgaXMgZXhwZWN0ZWQuIElmIHRoaXMgaXMgYSByZS1kZXBsb3ltZW50LCB5b3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyB0YWJsZXMgaW4gIiksdHQoMzgsInN0cm9uZyIpLFd0KDM5KSxpdCgpLFd0KDQwLCIuICIpLGl0KCksdHQoNDEsImRpdiIsMTYpKDQyLCJidXR0b24iLDE3''@;'; put 'put ''KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSExLHYucmVjcmVhdGVEYXRhYmFzZT0hMX0pLFd0KDQzLCIgQ2FuY2VsICIpLGl0KCksdHQoNDQsImJ1dHRvbiIsMTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZWNyZWF0ZURh''@;'; put 'put ''dGFiYXNlTW9kYWw9ITEsdi5yZWNyZWF0ZURhdGFiYXNlPSEwfSksV3QoNDUsIiBPayAiKSxpdCgpKCkoKX0yJmgmJih4dCgibmdJZiIsdi5hdXRvZGVwbG95aW5nKSxzdCg5KSxqaSh2LmFwcExvYyksc3QoNiksamkodi5kY1BhdGgpLHN0KDYpLGppKHYuc2VsZWN0ZWRBZG1pbkdyb3VwKSxz''@;'; put 'put ''dCgyKSx4dCgibmdNb2RlbCIsdi5yZWNyZWF0ZURhdGFiYXNlKSxzdCg0KSx4dCgiZGlzYWJsZWQiLCF2Lmpzb25GaWxlKSxzdCgxKSxVaSgiIERlcGxveSAiLHYuanNvbkZpbGU/IiI6Iihqc29uIGZpbGUgaXMgbm90IGF2YWlsYWJsZSkiLCJcbiIpLHN0KDUpLHh0KCJjbHJNb2RhbE9wZW4i''@;'; put 'put ''LHYucmVjcmVhdGVEYXRhYmFzZU1vZGFsKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLHN0KDYpLGppKHYuZGNQYXRoKSl9LGRlcGVuZGVuY2llczpbQm8sdWgsanMsX3MsRzIsYTMsbDMsYXNdLHN0eWxlczpbIi5hdXRvLWRlcGxveVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1''@;'; put 'put ''c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNCk7ei1pbmRleDoxMDB9LnNwaW5uZXItYm94W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo0MDBw''@;'; put 'put ''eDtwYWRkaW5nOjIwcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNoYWRvdzoxcHggMXB4IDhweCAjMDAwMDAwODJ9LnNwaW5u''@;'; put 'put ''ZXItYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idXR0b25zW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47d2lkdGg6MTAwJX0uZGVwbG95LXN0YXR1cy1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGln''@;'; put 'put ''bi1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5kZXBsb3ktc3RhdHVzLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDAgMTBweH0uZGVwbG95LXN1Y2Nlc3NbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2ZWNmNDR9''@;'; put 'put ''LmRlcGxveS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2U3NGMzY30uZGVwbG95LXVuZGV0ZXJtaW5hdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojY2FjYWNhfWhyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAs''@;'; put 'put ''MCwwLC4yNzA1ODgyMzUzKX0iXX0pLGR9KSgpO2Z1bmN0aW9uIE5qZShkLGcpezEmZCYmKHR0KDAsImRpdiIsMTUpLGJyKDEsInByb2dyZXNzIiksaXQoKSl9ZnVuY3Rpb24gVmplKGQsZyl7aWYoMSZkJiYodHQoMCwib3B0aW9uIiwxNiksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGlt''@;'; put 'put ''cGxpY2l0O3h0KCJ2YWx1ZSIsaC5HUk9VUE5BTUUpLHN0KDEpLHJoKCIgIixoLkdST1VQTkFNRSwiIC0gIixoLkdST1VQREVTQywiICIpfX1sZXQgamplPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLnNhc2pzU2VydmljZT12LHRoaXMuc2Fz''@;'; put 'put ''SnNDb25maWc9bmV3IFFkLlNBU2pzQ29uZmlnLHRoaXMub25OYXZpZ2F0ZVRvSG9tZT1uZXcgZm4sdGhpcy5kY0RpcmVjdG9yeT0iIix0aGlzLmRjQWRtaW5Hcm91cD0iRENERUZBVUxUIix0aGlzLk1FVEFQRVJTT049Im4vYSIsdGhpcy5NRVRBVVNFUj0ibi9hIix0aGlzLlNZU1VTRVJJRD0i''@;'; put 'put ''bi9hIix0aGlzLlNZU0hPU1ROQU1FPSJuL2EiLHRoaXMuU1lTVkxPTkc9Im4vYSIsdGhpcy5kY0FkbWluR3JvdXBMaXN0PVtdLHRoaXMubG9hZGluZz0hMSx0aGlzLnNob3dMb2dvdXQ9ITEsdGhpcy50bXBEaXJlY3Rvcmllcz17bGludXg6Ii90bXAvRGF0YUNvbnRyb2xsZXIiLHdpbmRvd3M6''@;'; put 'put ''IkM6XFxEYXRhQ29udHJvbGxlciJ9fW5nT25Jbml0KCl7dGhpcy5nZXRVc2VyR3JvdXBzKCksdGhpcy5nZXRTZXJ2ZXJJbmZvKCl9Z2V0U2VydmVySW5mbygpe3RoaXMuc2FzanNTZXJ2aWNlLmdldFNlcnZlckluZm8oKS5zdWJzY3JpYmUoaD0+eyJkZXNrdG9wIiE9PWgubW9kZSYmKHRoaXMu''@;'; put 'put ''c2hvd0xvZ291dD0hMCl9KX1nZXRVc2VyR3JvdXBzKCl7dGhpcy5sb2FkaW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJncm91cHNieW1lbWJlciIsbnVsbCkudGhlbihoPT57dGhpcy5NRVRBUEVSU09OPWguTUZfR0VUVVNFUix0aGlzLlNZU1VTRVJJRD1oLlNZ''@;'; put 'put ''U1VTRVJJRCx0aGlzLlNZU0hPU1ROQU1FPWguU1lTSE9TVE5BTUUsdGhpcy5TWVNWTE9ORz1oLlNZU1ZMT05HLHRoaXMuZGNEaXJlY3Rvcnk9dGhpcy50bXBEaXJlY3Rvcmllc1tbIkwiLCJIIiwiQSIsIlMiXS5pbmNsdWRlcyhoLlNZU1NDUEwuc3Vic3RyaW5nKDAsMSkpPyJsaW51eCI6Indp''@;'; put 'put ''bmRvd3MiXSx0aGlzLmRjQWRtaW5Hcm91cExpc3Q9aC5ncm91cHMsdGhpcy5kY0FkbWluR3JvdXA9dGhpcy5kY0FkbWluR3JvdXBMaXN0WzBdLkdST1VQTkFNRSx0aGlzLmxvYWRpbmc9ITF9LGg9Pnt0aGlzLmxvYWRpbmc9ITF9KX1tYWtlRGF0YSgpe2xldCB2PXRoaXMuc2FzU2VydmljZS5n''@;'; put 'put ''ZXRFeGVjdXRpb25QYXRoKCk7Y29uc3QgeT10aGlzLnNhc0pzQ29uZmlnLmFwcExvYztsZXQgQz10aGlzLnNhc0pzQ29uZmlnLnNlcnZlclVybCxJPXRoaXMuZGNEaXJlY3Rvcnk7dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09eDEuRC5TYXNqcz90aGlzLnNhc1NlcnZpY2Uuc2FzanNN''@;'; put 'put ''YWtlZGF0YUNoZWNraW5nKCkudGhlbihjZT0+e2NlJiZsb2NhdGlvbi5yZWxvYWQoKX0pOnRoaXMuc2FzSnNDb25maWcuc2VydmVyVHlwZT09PXgxLkQuU2FzOSYmKEM9IiIsdj13aW5kb3cubG9jYXRpb24ub3JpZ2luK3YrIi8iLEk9ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuZGNEaXJlY3Rv''@;'; put 'put ''cnkpKSx3aW5kb3cub3BlbihgJHtDfHwiIn0ke3Z9P19wcm9ncmFtPSR7eX0vc2VydmljZXMvYWRtaW4vbWFrZWRhdGEmYWRtaW49JHt0aGlzLmRjQWRtaW5Hcm91cH0mcGF0aD0ke0l9IGAsIl9ibGFuayIpfWxvZ291dCgpe3RoaXMuc2FzU2VydmljZS5sb2dvdXQoKX19cmV0dXJuIGQuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobDApLEt0KFFuKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1zYXNqcy1jb25maWd1cmF0b3IiXV0saW5wdXRzOntzYXNKczoic2FzSnMiLHNhc0pzQ29uZmlnOiJzYXNKc0NvbmZpZyIsZGNB''@;'; put 'put ''ZGFwdGVyU2V0dGluZ3M6ImRjQWRhcHRlclNldHRpbmdzIn0sb3V0cHV0czp7b25OYXZpZ2F0ZVRvSG9tZToib25OYXZpZ2F0ZVRvSG9tZSJ9LGRlY2xzOjQxLHZhcnM6OSxjb25zdHM6W1siY2xhc3MiLCJ0aGluUHJvZ3Jlc3MgcHJvZ3Jlc1N0YXRpYyBwcm9ncmVzcyBsb29wIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzEsInRleHQtY2VudGVyIiwibXktMTUiXSxbMSwibGlnaHQiXSxbMSwibS0wIl0sWzEsIm0tMCIsIm10LTEwIl0sWzEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbInBs''@;'; put 'put ''YWNlaG9sZGVyIiwiVHlwZSBpbiBkaXJlY3RvcnkiLDEsImNsci1pbnB1dCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwibWItMTAiLCJtdC0wIiwidy01MHZ3Il0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsInZhbHVlIiw0LCJuZ0Zv''@;'; put 'put ''ciIsIm5nRm9yT2YiXSxbMSwiY2xyLWZsZXgiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLCJtdC0xNSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdLFsxLCJjYXJkLXRleHQiLCJwYi0xMCJdLFsxLCJ0aGluUHJvZ3Jlc3MiLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jlc3MiLCJsb29wIl0sWzMs''@;'; put 'put ''InZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobm4oMCxOamUsMiwwLCJkaXYiLDApLHR0KDEsImg0IiwxKSxXdCgyLCJTYXNqcyBEZXBsb3kiKSxpdCgpLGJyKDMsImhyIiwyKSx0dCg0LCJwIiwzKSxXdCg1LCIgVG8gY29uZmlndXJlIERhdGEgQ29udHJvbGxlciBmb3Ig''@;'; put 'put ''U0FTXHhhOSwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOlxuIiksaXQoKSx0dCg2LCJwIiw0KSxXdCg3LCIgUGxlYXNlIHNwZWNpZnkgYSBwaHlzaWNhbCBkaXJlY3RvcnkgYmVsb3csIHRvIHdoaWNoIHVzZXIgIiksdHQoOCwic3Ryb25nIiksV3QoOSksaXQoKSxXdCgx''@;'; put 'put ''MCwiIGNhbiB3cml0ZSwgb24gYmVoYWxmIG9mIERhdGEgQ29udHJvbGxlcjpcbiIpLGl0KCksdHQoMTEsImxhYmVsIiw1KSxXdCgxMiwiREMgRGlyZWN0b3J5IiksaXQoKSx0dCgxMywiZGl2Iiw2KSgxNCwiZGl2Iiw3KSgxNSwiaW5wdXQiLDgpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlv''@;'; put 'put ''bihDKXtyZXR1cm4gdi5kY0RpcmVjdG9yeT1DfSksaXQoKSgpKCksdHQoMTYsInAiLDQpLFd0KDE3LCIgQmVsb3cgYXJlIHRoZSBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCB5b3UgYmVsb25nLiBUaGUgZ3JvdXAgeW91IHNlbGVjdCB3aWxsIGJlY29tZSB0aGUgRGF0YSBDb250cm9sbGVyIEFk''@;'; put 'put ''bWluIEdyb3VwLCBhbmQgZXZlcnlvbmUgaW4gaXQgd2lsbCBoYXZlIHVucmVzdHJpY3RlZCBhY2Nlc3MgdG8gRGF0YSBDb250cm9sbGVyLlxuIiksaXQoKSx0dCgxOCwibGFiZWwiLDUpLFd0KDE5LCJEYXRhIENvbnRyb2xsZXIgQWRtaW4gZ3JvdXAiKSxpdCgpLHR0KDIwLCJjbHItc2VsZWN0''@;'; put 'put ''LWNvbnRhaW5lciIsOSkoMjEsInNlbGVjdCIsMTApLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kY0FkbWluR3JvdXA9Q30pLG5uKDIyLFZqZSwyLDMsIm9wdGlvbiIsMTEpLGl0KCkoKSx0dCgyMywicCIsNCksV3QoMjQsIiBOb3csIGNyZWF0ZSB0aGUgdGFyZ2V0''@;'; put 'put ''IGRpcmVjdG9yeSBhbmQgZGVwbG95IHRoZSBjb250cm9sIGxpYnJhcnkgdXNpbmcgdGhlIGFkbWluIGdyb3VwIHNlbGVjdGVkIGFib3ZlOlxuIiksaXQoKSx0dCgyNSwiZGl2IiwxMikoMjYsImJ1dHRvbiIsMTMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5tYWtlRGF0YSgpfSks''@;'; put 'put ''V3QoMjcsIiBTVUJNSVQgIiksaXQoKSgpLGJyKDI4LCJociIsMiksdHQoMjksImRpdiIsMTQpKDMwLCJwIiksV3QoMzEsIllvdSBhcmUgY29ubmVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBjcmVkZW50aWFsczoiKSxpdCgpLHR0KDMyLCJ1bCIpKDMzLCJsaSIpLFd0KDM0KSxpdCgpLHR0KDM1''@;'; put 'put ''LCJsaSIpLFd0KDM2KSxpdCgpLHR0KDM3LCJsaSIpLFd0KDM4KSxpdCgpLHR0KDM5LCJsaSIpLFd0KDQwKSxpdCgpKCkoKSksMiZoJiYoeHQoIm5nSWYiLHYubG9hZGluZyksc3QoOSksamkodi5TWVNVU0VSSUQpLHN0KDYpLHh0KCJuZ01vZGVsIix2LmRjRGlyZWN0b3J5KSxzdCg2KSx4dCgi''@;'; put 'put ''bmdNb2RlbCIsdi5kY0FkbWluR3JvdXApLHN0KDEpLHh0KCJuZ0Zvck9mIix2LmRjQWRtaW5Hcm91cExpc3QpLHN0KDEyKSxVaSgiTUVUQVBFUlNPTjogIix2Lk1FVEFQRVJTT04sIiIpLHN0KDIpLFVpKCJTWVNVU0VSSUQ6ICIsdi5TWVNVU0VSSUQsIiIpLHN0KDIpLFVpKCJTWVNIT1NUTkFN''@;'; put 'put ''RTogIix2LlNZU0hPU1ROQU1FLCIiKSxzdCgyKSxVaSgiU1lTVkxPTkc6ICIsdi5TWVNWTE9ORywiIikpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLEozLFgzLHAxLEVmLGpzLF9zLGFzLElaLFRaXSxzdHlsZXM6WyIuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0''@;'; put 'put ''aDo1MHZ3fS5jbHItaW5wdXQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0sIC5jbHItaW5wdXQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0udGhpblByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OjBweDty''@;'; put 'put ''aWdodDowO3dpZHRoOnVuc2V0O2hlaWdodDoxcHg7bWFyZ2luLXRvcDowIWltcG9ydGFudH0udGhpblByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcnt0b3A6MH0iXX0pLGR9KSgpO2Z1bmN0aW9uIFpqZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsNCkoMSwi''@;'; put 'put ''ZGl2Iiw1KSxXdCgyLCJUZXJtcyBhbmQgQ29uZGl0aW9ucyIpLGl0KCksdHQoMywiZGl2Iiw2KSg0LCJkaXYiLDcpKDUsInAiKSxXdCg2LCIgVGhlIERlbW8gdmVyc2lvbiBvZiBEYXRhIENvbnRyb2xsZXIgaXMgZnJlZSBmb3IgRVZBTFVBVElPTiBwdXJwb3NlcyBvbmx5LiBCZWZvcmUgcHJv''@;'; put 'put ''Y2VlZGluZyB3aXRoIGNvbmZpZ3VyYXRpb24sIHBsZWFzZSBjb25maXJtIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwgYW5kIGFncmVlZCB0byB0aGUgIiksdHQoNywiYSIsOCksV3QoOCwiRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGE5IEV2YWx1YXRpb24gQWdyZWVtZW50Iiks''@;'; put 'put ''aXQoKSxXdCg5LCIuICIpLGl0KCkoKSxicigxMCwiaHIiLDkpLHR0KDExLCJkaXYiLDEwKSgxMiwiaW5wdXQiLDExKSxabigiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkudGVybXNBZ3JlZUNoYW5nZSgpKX0pLGl0KCksdHQoMTMsImxhYmVsIiwxMiksV3QoMTQsIkkg''@;'; put 'put ''aGF2ZSByZWFkIGFuZCBhZ3JlZSB0byB0aGUgdGVybXMgb2YgdGhlICIpLHR0KDE1LCJhIiw4KSxXdCgxNiwiRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGE5IEV2YWx1YXRpb24gQWdyZWVtZW50IiksaXQoKSgpKCkoKSgpfX1mdW5jdGlvbiB6amUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWko''@;'; put 'put ''KTt0dCgwLCJkaXYiLDE3KSgxLCJhcHAtYXV0b21hdGljLWRlcGxveSIsMTgpLFpuKCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLHh0KCJzYXNK''@;'; put 'put ''cyIsaC5zYXNKcykoInNhc0pzQ29uZmlnIixoLnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGguZGNBZGFwdGVyU2V0dGluZ3MpKCJhcHBMb2MiLGguYXBwTG9jKSgiZGNQYXRoIixoLmRjUGF0aCkoInNlbGVjdGVkQWRtaW5Hcm91cCIsaC5zZWxlY3RlZEFkbWluR3JvdXApfX1m''@;'; put 'put ''dW5jdGlvbiBHamUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDE5KSgxLCJhcHAtbWFudWFsLWRlcGxveSIsMjApLFpuKCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxpdCgpKCl9aWYo''@;'; put 'put ''MiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLHh0KCJzYXNKcyIsaC5zYXNKcykoInNhc0pzQ29uZmlnIixoLnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGguZGNBZGFwdGVyU2V0dGluZ3MpfX1mdW5jdGlvbiBXamUoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLHpqZSwyLDYsImRp''@;'; put 'put ''diIsMTUpLG5uKDIsR2plLDIsMywiZGl2IiwxNiksTzAoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDEpLHh0KCJuZ0lmIixoLmF1dG9kZXBsb3kpLHN0KDEpLHh0KCJuZ0lmIiwhaC5hdXRvZGVwbG95KX19ZnVuY3Rpb24gWWplKGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7TDAoMCksdHQo''@;'; put 'put ''MSwiZGl2IiwxNykoMiwiYXBwLXNhc2pzLWNvbmZpZ3VyYXRvciIsMjApLFpuKCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxpdCgpKCksTzAoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7c3QoMikseHQoInNh''@;'; put 'put ''c0pzIixoLnNhc0pzKSgic2FzSnNDb25maWciLGguc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsaC5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIFVqZShkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO0wwKDApLHR0KDEsImRpdiIsMTcpKDIsImFwcC1zYXNqcy1jb25maWd1''@;'; put 'put ''cmF0b3IiLDIwKSxabigib25OYXZpZ2F0ZVRvSG9tZSIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5vbk5hdmlnYXRlVG9Ib21lKCkpfSksaXQoKSgpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KDIpO3N0KDIpLHh0KCJzYXNKcyIsaC5zYXNKcykoInNhc0pzQ29uZmlnIixoLnNh''@;'; put 'put ''c0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGguZGNBZGFwdGVyU2V0dGluZ3MpfX1mdW5jdGlvbiBRamUoZCxnKXtpZigxJmQmJihMMCgwLDEzKSxubigxLFdqZSwzLDIsIm5nLWNvbnRhaW5lciIsMTQpLG5uKDIsWWplLDMsMywibmctY29udGFpbmVyIiwxNCksbm4oMyxVamUsMywz''@;'; put 'put ''LCJuZy1jb250YWluZXIiLDE0KSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoKTt4dCgibmdTd2l0Y2giLCEwKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIixoLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzVml5YSksc3QoMSkseHQoIm5nU3dpdGNoQ2FzZSIsaC5zYXNK''@;'; put 'put ''c0NvbmZpZy5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhc2pzKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIixoLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSl9fWxldCB3YmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt2YXIgSTt0aGlz''@;'; put 'put ''LmFwcFN0b3JlU2VydmljZT1oLHRoaXMuc2FzU2VydmljZT12LHRoaXMubG9nZ2VyU2VydmljZT15LHRoaXMucm91dGVyPUMsdGhpcy5zdGVwPTAsdGhpcy5hZG1pbkdyb3Vwcz1bXSx0aGlzLmNsaWVudF9pZD0iIix0aGlzLmNsaWVudF9zZWNyZXQ9IiIsdGhpcy5hcHBMb2M9IiIsdGhpcy5k''@;'; put 'put ''Y1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5hdXRvZGVwbG95PSEwLHRoaXMuanNvbkZpbGU9bnVsbCx0aGlzLnNhc0pzQ29uZmlnPW5ldyBRZC5TQVNqc0NvbmZpZyx0aGlzLlNlcnZlclR5cGU9eDEuRCx0aGlzLmRjQWRhcHRlclNldHRpbmdzPXRoaXMuYXBwU3Rv''@;'; put 'put ''cmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCksdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJtYW51YWxkZXBsb3kiKSYmKHRoaXMuYXV0b2RlcGxveT0hMSksdGhpcy5zYXNKcz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNJbnN0YW5jZSgpLHRoaXMuc2FzSnNDb25maWc9dGhpcy5z''@;'; put 'put ''YXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5hcHBMb2M9KG51bGw9PT0oST10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09ST92b2lkIDA6SS5hcHBMb2MpfHwiIix0aGlzLmNsaWVudF9pZD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZGVwbG95X2NsaWVudF9pZCIpfHwi''@;'; put 'put ''Iix0aGlzLmNsaWVudF9zZWNyZXQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImRlcGxveV9zZWNyZXRfa2V5Iil8fCIiLHRoaXMuZGNQYXRoPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJkZXBsb3lfZGNfbG9jIil8fCIifW5nT25Jbml0KCl7dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09eDEu''@;'; put 'put ''RC5TYXNWaXlhJiZmZXRjaCgic2FzYnVpbGQvdml5YS5qc29uIikudGhlbihoPT5oLnRleHQoKSkudGhlbihoPT57bGV0IHY9bnVsbDt0cnl7dj1KU09OLnBhcnNlKGgpfWNhdGNoKHkpe2NvbnNvbGUuZXJyb3IoeSl9diYmKHRoaXMuanNvbkZpbGU9dix0aGlzLmxvZ2dlclNlcnZpY2UubG9n''@;'; put 'put ''KHRoaXMuanNvbkZpbGUpKX0pLHRoaXMuc2V0RGVwbG95RGVmYXVsdHMoKX1zZXREZXBsb3lEZWZhdWx0cygpe3ZhciBoLHY7dGhpcy5kY1BhdGg9KG51bGw9PT0oaD10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09aD92b2lkIDA6aC5kY1BhdGgpfHwiIix0aGlzLnNlbGVjdGVk''@;'; put 'put ''QWRtaW5Hcm91cD0obnVsbD09PSh2PXRoaXMuZGNBZGFwdGVyU2V0dGluZ3MpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmFkbWluR3JvdXApfHwiIix0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cHx8KHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSJTQVNBZG1pbmlzdHJhdG9ycyIpfXRlcm1zQWdyZWVD''@;'; put 'put ''aGFuZ2UoKXt0aGlzLmF1dG9kZXBsb3l8fHRoaXMuZ2V0QWRtaW5Hcm91cHMoKSx0aGlzLnN0ZXArK31nZXRBZG1pbkdyb3Vwcygpe2ZldGNoKHRoaXMuc2FzSnNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHM/c29ydEJ5PW5hbWUmbGltaXQ9NTAwMCIse2hlYWRlcnM6e0Fj''@;'; put 'put ''Y2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihoPT5oLnRleHQoKSkudGhlbihoPT57bGV0IHY7dHJ5e3Y9SlNPTi5wYXJzZShoKX1jYXRjaCh5KXtjb25zb2xlLmVycm9yKHkpfXYmJih0aGlzLmFkbWluR3JvdXBzPXYuaXRlbXMsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9dGhpcy5h''@;'; put 'put ''ZG1pbkdyb3Vwc1swXS5pZCl9KX1vbk5hdmlnYXRlVG9Ib21lKCl7d2luZG93Lm9wZW4obG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLCJfYmxhbmsiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoUjcpLEt0KGwwKSxLdChHaCksS3QoRWwp''@;'; put 'put ''KX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWRlcGxveSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiY29udGVudC1hcmVhIiwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiY2xyLXJvdyJdLFsi''@;'; put 'put ''aWQiLCJUQ1MiLCJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxbMywibmdTd2l0Y2giLDQsIm5nSWYiXSxbImlkIiwiVENTIiwxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxvY2siXSxbMSwiY2FyZC10ZXh0Il0sWyJocmVmIiwiaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9s''@;'; put 'put ''bGVyLmlvL2V2YWx1YXRpb24tbGljZW5jZS1hZ3JlZW1lbnQiLCJ0YXJnZXQiLCJfYmxhbmsiXSxbMSwibGlnaHQiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbInR5cGUiLCJjaGVja2JveCIsImlkIiwiY2hlY2tib3gxIiwibmFtZSIsImNoZWNrYm94LWJhc2ljIiwidmFsdWUiLCJv''@;'; put 'put ''cHRpb24xIiwxLCJjbHItY2hlY2tib3giLDMsImNoYW5nZSJdLFsiZm9yIiwiY2hlY2tib3gxIl0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJhdXRvZGVwbG95LXNlY3Rpb24gY2FyZCIsNCwibmdJZiJdLFsiaWQiLCJtYWluYm9keSIsImNsYXNzIiwiY2Fy''@;'; put 'put ''ZCIsNCwibmdJZiJdLFsxLCJhdXRvZGVwbG95LXNlY3Rpb24iLCJjYXJkIl0sWzMsInNhc0pzIiwic2FzSnNDb25maWciLCJkY0FkYXB0ZXJTZXR0aW5ncyIsImFwcExvYyIsImRjUGF0aCIsInNlbGVjdGVkQWRtaW5Hcm91cCIsIm9uTmF2aWdhdGVUb0hvbWUiXSxbImlkIiwibWFpbmJvZHki''@;'; put 'put ''LDEsImNhcmQiXSxbMywic2FzSnMiLCJzYXNKc0NvbmZpZyIsImRjQWRhcHRlclNldHRpbmdzIiwib25OYXZpZ2F0ZVRvSG9tZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImRpdiIsMCkoMSwiZGl2IiwxKSxubigyLFpqZSwxNywwLCJkaXYiLDIpLGl0KCksbm4oMyxR''@;'; put 'put ''amUsNCw0LCJuZy1jb250YWluZXIiLDMpLGl0KCkpLDImaCYmKHN0KDIpLHh0KCJuZ0lmIiwwPT09di5zdGVwKSxzdCgxKSx4dCgibmdJZiIsdi5zdGVwPjApKX0sZGVwZW5kZW5jaWVzOltCbyxaZCxWNixhcyx4amUsSGplLGpqZV0sc3R5bGVzOlsiLmNhcmRbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e21hcmdpbi10b3A6MH0uYnRuW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjEwcHh9LmxvZy13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO2JhY2tncm91bmQ6I2YwZjBmMDtib3JkZXI6MXB4IHNvbGlkICNjOWM5Yzk7cGFkZGluZzoxMHB4O292ZXJmbG93OmF1''@;'; put 'put ''dG87d2hpdGUtc3BhY2U6cHJlLXdyYXB9I2NvbnRleHRzLWJ0bltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzozcHggMCAwO21pbi13aWR0aDozMHB4O21hcmdpbi1sZWZ0OjEwcHg7aGVpZ2h0OjMwcHg7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlcn0udmFsaWRhdGlvbi1iYXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDttYXJnaW4tdG9wOjIwcHg7YWxpZ24taXRlbXM6Y2VudGVyfS52YWxpZGF0aW9uLWJhcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFy''@;'; put 'put ''Z2luLXJpZ2h0OjVweH0uYXV0b2RlcGxveS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjAgMTVweH0uYXV0b2RlcGxveS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbHItY2hlY2tib3gtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjIwcHggMH0u''@;'; put 'put ''YXV0b2RlcGxveS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idG4tYXV0b2RlcGxveVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jazttYXJnaW46MTVweCAwfSJdfSksZH0pKCk7ZnVuY3Rpb24gYmJlKGQpe3JldHVybiFBZShkKSYmZC1wYXJzZUZsb2F0KGQpKzE+PTB9''@;'; put 'put ''ZnVuY3Rpb24gS2plKGQpe2NvbnN0e2luZGV4OmcscGVyaW9kOmgsc3Vic2NyaWJlcjp2fT1kO2lmKHYubmV4dChnKSwhdi5jbG9zZWQpe2lmKC0xPT09aClyZXR1cm4gdi5jb21wbGV0ZSgpO2QuaW5kZXg9ZysxLHRoaXMuc2NoZWR1bGUoZCxoKX19bGV0IHdPPXthc3luYzohMSxiYXNlVXJs''@;'; put 'put ''Om51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRlclByZWZpeDoiIixoaWdobGlnaHQ6bnVsbCxsYW5nUHJlZml4OiJsYW5ndWFnZS0iLG1hbmdsZTohMCxwZWRhbnRpYzohMSxyZW5kZXJlcjpudWxsLHNhbml0aXplOiExLHNhbml0aXplcjpu''@;'; put 'put ''dWxsLHNpbGVudDohMSxzbWFydExpc3RzOiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbCx4aHRtbDohMX07Y29uc3QgdFplPS9bJjw+IiddLyxuWmU9L1smPD4iJ10vZyxyWmU9L1s8PiInXXwmKD8hIz9cdys7KS8saVplPS9bPD4iJ118Jig/ISM/XHcr''@;'; put 'put ''OykvZyxvWmU9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LENiZT1kPT5vWmVbZF07ZnVuY3Rpb24gbmYoZCxnKXtpZihnKXtpZih0WmUudGVzdChkKSlyZXR1cm4gZC5yZXBsYWNlKG5aZSxDYmUpfWVsc2UgaWYoclplLnRlc3Qo''@;'; put 'put ''ZCkpcmV0dXJuIGQucmVwbGFjZShpWmUsQ2JlKTtyZXR1cm4gZH1jb25zdCBhWmU9LyYoIyg/OlxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/Olx3KykpOz8vZ2k7ZnVuY3Rpb24ga2JlKGQpe3JldHVybiBkLnJlcGxhY2UoYVplLChnLGgpPT4iY29sb24iPT09KGg9aC50b0xvd2VyQ2FzZSgp''@;'; put 'put ''KT8iOiI6IiMiPT09aC5jaGFyQXQoMCk/IngiPT09aC5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoLnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK2guc3Vic3RyaW5nKDEpKToiIil9Y29uc3QgbFplPS8oXnxbXlxbXSlcXi9nO2Z1bmN0aW9u''@;'; put 'put ''IFkyKGQsZyl7ZD0ic3RyaW5nIj09dHlwZW9mIGQ/ZDpkLnNvdXJjZSxnPWd8fCIiO2NvbnN0IGg9e3JlcGxhY2U6KHYseSk9Pih5PSh5PXkuc291cmNlfHx5KS5yZXBsYWNlKGxaZSwiJDEiKSxkPWQucmVwbGFjZSh2LHkpLGgpLGdldFJlZ2V4OigpPT5uZXcgUmVnRXhwKGQsZyl9O3JldHVy''@;'; put 'put ''biBofWNvbnN0IHNaZT0vW15cdzpdL2csdVplPS9eJHxeW2Etel1bYS16MC05Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rpb24gU2JlKGQsZyxoKXtpZihkKXtsZXQgdjt0cnl7dj1kZWNvZGVVUklDb21wb25lbnQoa2JlKGgpKS5yZXBsYWNlKHNaZSwiIikudG9Mb3dlckNhc2UoKX1jYXRjaCh5KXty''@;'; put 'put ''ZXR1cm4gbnVsbH1pZigwPT09di5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHwwPT09di5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PXYuaW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH1nJiYhdVplLnRlc3QoaCkmJihoPWZ1bmN0aW9uIGRaZShkLGcpe0dxWyIgIitkXXx8KEdxWyIgIitk''@;'; put 'put ''XT1jWmUudGVzdChkKT9kKyIvIjpZcShkLCIvIiwhMCkpO2NvbnN0IGg9LTE9PT0oZD1HcVsiICIrZF0pLmluZGV4T2YoIjoiKTtyZXR1cm4iLy8iPT09Zy5zdWJzdHJpbmcoMCwyKT9oP2c6ZC5yZXBsYWNlKGZaZSwiJDEiKStnOiIvIj09PWcuY2hhckF0KDApP2g/ZzpkLnJlcGxhY2UoaFpl''@;'; put 'put ''LCIkMSIpK2c6ZCtnfShnLGgpKTt0cnl7aD1lbmNvZGVVUkkoaCkucmVwbGFjZSgvJTI1L2csIiUiKX1jYXRjaCh2KXtyZXR1cm4gbnVsbH1yZXR1cm4gaH1jb25zdCBHcT17fSxjWmU9L15bXjpdKzpcLypbXi9dKiQvLGZaZT0vXihbXjpdKzopW1xzXFNdKiQvLGhaZT0vXihbXjpdKzpcLypb''@;'; put 'put ''Xi9dKilbXHNcU10qJC8sV3E9e2V4ZWM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBnOChkKXtsZXQgaCx2LGc9MTtmb3IoO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspZm9yKHYgaW4gaD1hcmd1bWVudHNbZ10saClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCx2KSYmKGRb''@;'; put 'put ''dl09aFt2XSk7cmV0dXJuIGR9ZnVuY3Rpb24gTWJlKGQsZyl7Y29uc3Qgdj1kLnJlcGxhY2UoL1x8L2csKEMsSSxqKT0+e2xldCBjZT0hMSxfZT1JO2Zvcig7LS1fZT49MCYmIlxcIj09PWpbX2VdOyljZT0hY2U7cmV0dXJuIGNlPyJ8IjoiIHwifSkuc3BsaXQoLyBcfC8pO2xldCB5PTA7aWYo''@;'; put 'put ''dlswXS50cmltKCl8fHYuc2hpZnQoKSx2Lmxlbmd0aD4wJiYhdlt2Lmxlbmd0aC0xXS50cmltKCkmJnYucG9wKCksdi5sZW5ndGg+Zyl2LnNwbGljZShnKTtlbHNlIGZvcig7di5sZW5ndGg8Zzspdi5wdXNoKCIiKTtmb3IoO3k8di5sZW5ndGg7eSsrKXZbeV09dlt5XS50cmltKCkucmVwbGFj''@;'; put 'put ''ZSgvXFxcfC9nLCJ8Iik7cmV0dXJuIHZ9ZnVuY3Rpb24gWXEoZCxnLGgpe2NvbnN0IHY9ZC5sZW5ndGg7aWYoMD09PXYpcmV0dXJuIiI7bGV0IHk9MDtmb3IoO3k8djspe2NvbnN0IEM9ZC5jaGFyQXQodi15LTEpO2lmKEMhPT1nfHxoKXtpZihDPT09Z3x8IWgpYnJlYWs7eSsrfWVsc2UgeSsr''@;'; put 'put ''fXJldHVybiBkLnNsaWNlKDAsdi15KX1mdW5jdGlvbiBFYmUoZCl7ZCYmZC5zYW5pdGl6ZSYmIWQuc2lsZW50JiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBzYW5pdGl6ZSBhbmQgc2FuaXRpemVyIHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjcuMCwgc2hvdWxk''@;'; put 'put ''IG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vbWFya2VkLmpzLm9yZy8jL1VTSU5HX0FEVkFOQ0VELm1kI29wdGlvbnMiKX1mdW5jdGlvbiB4YmUoZCxnKXtpZihnPDEpcmV0dXJuIiI7bGV0IGg9IiI7Zm9yKDtn''@;'; put 'put ''PjE7KTEmZyYmKGgrPWQpLGc+Pj0xLGQrPWQ7cmV0dXJuIGgrZH1mdW5jdGlvbiBUYmUoZCxnLGgsdil7Y29uc3QgeT1nLmhyZWYsQz1nLnRpdGxlP25mKGcudGl0bGUpOm51bGwsST1kWzFdLnJlcGxhY2UoL1xcKFtcW1xdXSkvZywiJDEiKTtpZigiISIhPT1kWzBdLmNoYXJBdCgwKSl7di5z''@;'; put 'put ''dGF0ZS5pbkxpbms9ITA7Y29uc3Qgaj17dHlwZToibGluayIscmF3OmgsaHJlZjp5LHRpdGxlOkMsdGV4dDpJLHRva2Vuczp2LmlubGluZVRva2VucyhJKX07cmV0dXJuIHYuc3RhdGUuaW5MaW5rPSExLGp9cmV0dXJue3R5cGU6ImltYWdlIixyYXc6aCxocmVmOnksdGl0bGU6Qyx0ZXh0Om5m''@;'; put 'put ''KEkpfX1jbGFzcyBYaGV7Y29uc3RydWN0b3IoZyl7dGhpcy5vcHRpb25zPWd8fHdPfXNwYWNlKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoZyk7aWYoaCYmaFswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzpoWzBdfX1jb2RlKGcpe2NvbnN0IGg9''@;'; put 'put ''dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj1oWzBdLnJlcGxhY2UoL14gezEsNH0vZ20sIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6aFswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3Y6WXEodiwiXG4i''@;'; put 'put ''KX19fWZlbmNlcyhnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj1oWzBdLHk9ZnVuY3Rpb24gZ1plKGQsZyl7Y29uc3QgaD1kLm1hdGNoKC9eKFxzKykoPzpgYGApLyk7aWYobnVsbD09PWgpcmV0dXJuIGc7Y29uc3Qgdj1oWzFdO3JldHVy''@;'; put 'put ''biBnLnNwbGl0KCJcbiIpLm1hcCh5PT57Y29uc3QgQz15Lm1hdGNoKC9eXHMrLyk7aWYobnVsbD09PUMpcmV0dXJuIHk7Y29uc3RbSV09QztyZXR1cm4gSS5sZW5ndGg+PXYubGVuZ3RoP3kuc2xpY2Uodi5sZW5ndGgpOnl9KS5qb2luKCJcbiIpfSh2LGhbM118fCIiKTtyZXR1cm57dHlwZToi''@;'; put 'put ''Y29kZSIscmF3OnYsbGFuZzpoWzJdP2hbMl0udHJpbSgpOmhbMl0sdGV4dDp5fX19aGVhZGluZyhnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKGcpO2lmKGgpe2xldCB2PWhbMl0udHJpbSgpO2lmKC8jJC8udGVzdCh2KSl7Y29uc3QgeT1ZcSh2LCIjIik7KHRoaXMu''@;'; put 'put ''b3B0aW9ucy5wZWRhbnRpY3x8IXl8fC8gJC8udGVzdCh5KSkmJih2PXkudHJpbSgpKX1yZXR1cm57dHlwZToiaGVhZGluZyIscmF3OmhbMF0sZGVwdGg6aFsxXS5sZW5ndGgsdGV4dDp2LHRva2Vuczp0aGlzLmxleGVyLmlubGluZSh2KX19fWhyKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9j''@;'; put 'put ''ay5oci5leGVjKGcpO2lmKGgpcmV0dXJue3R5cGU6ImhyIixyYXc6aFswXX19YmxvY2txdW90ZShnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suYmxvY2txdW90ZS5leGVjKGcpO2lmKGgpe2NvbnN0IHY9aFswXS5yZXBsYWNlKC9eICo+WyBcdF0/L2dtLCIiKTtyZXR1cm57dHlwZToiYmxv''@;'; put 'put ''Y2txdW90ZSIscmF3OmhbMF0sdG9rZW5zOnRoaXMubGV4ZXIuYmxvY2tUb2tlbnModixbXSksdGV4dDp2fX19bGlzdChnKXtsZXQgaD10aGlzLnJ1bGVzLmJsb2NrLmxpc3QuZXhlYyhnKTtpZihoKXtsZXQgdix5LEMsSSxqLGNlLF9lLFJlLE5lLEtlLGh0LEJ0LCR0PWhbMV0udHJpbSgpO2Nv''@;'; put 'put ''bnN0IGhuPSR0Lmxlbmd0aD4xLERuPXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpobixzdGFydDpobj8rJHQuc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119OyR0PWhuP2BcXGR7MSw5fVxcJHskdC5zbGljZSgtMSl9YDpgXFwkeyR0fWAsdGhpcy5vcHRpb25zLnBlZGFudGlj''@;'; put 'put ''JiYoJHQ9aG4/JHQ6IlsqKy1dIik7Y29uc3QgaXI9bmV3IFJlZ0V4cChgXiggezAsM30keyR0fSkoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpYCk7Zm9yKDtnJiYoQnQ9ITEsKGg9aXIuZXhlYyhnKSkmJiF0aGlzLnJ1bGVzLmJsb2NrLmhyLnRlc3QoZykpOyl7aWYodj1oWzBdLGc9Zy5z''@;'; put 'put ''dWJzdHJpbmcodi5sZW5ndGgpLFJlPWhbMl0uc3BsaXQoIlxuIiwxKVswXSxOZT1nLnNwbGl0KCJcbiIsMSlbMF0sdGhpcy5vcHRpb25zLnBlZGFudGljPyhJPTIsaHQ9UmUudHJpbUxlZnQoKSk6KEk9aFsyXS5zZWFyY2goL1teIF0vKSxJPUk+ND8xOkksaHQ9UmUuc2xpY2UoSSksSSs9aFsx''@;'; put 'put ''XS5sZW5ndGgpLGNlPSExLCFSZSYmL14gKiQvLnRlc3QoTmUpJiYodis9TmUrIlxuIixnPWcuc3Vic3RyaW5nKE5lLmxlbmd0aCsxKSxCdD0hMCksIUJ0KXtjb25zdCBFcj1uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxJLTEpfX0oPzpbKistXXxcXGR7MSw5fVsuKV0pKCg/OiBbXlxc''@;'; put 'put ''bl0qKT8oPzpcXG58JCkpYCksQXI9bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsSS0xKX19KCg/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKWApLFlyPW5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLEktMSl9fSg/OlxgXGBcYHx+fn4pYCks''@;'; put 'put ''X2k9bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsSS0xKX19I2ApO2Zvcig7ZyYmKEtlPWcuc3BsaXQoIlxuIiwxKVswXSxSZT1LZSx0aGlzLm9wdGlvbnMucGVkYW50aWMmJihSZT1SZS5yZXBsYWNlKC9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csIiAgIikpLCEoWXIudGVzdChSZSl8''@;'; put 'put ''fF9pLnRlc3QoUmUpfHxFci50ZXN0KFJlKXx8QXIudGVzdChnKSkpOyl7aWYoUmUuc2VhcmNoKC9bXiBdLyk+PUl8fCFSZS50cmltKCkpaHQrPSJcbiIrUmUuc2xpY2UoSSk7ZWxzZXtpZihjZSlicmVhaztodCs9IlxuIitSZX0hY2UmJiFSZS50cmltKCkmJihjZT0hMCksdis9S2UrIlxuIixn''@;'; put 'put ''PWcuc3Vic3RyaW5nKEtlLmxlbmd0aCsxKX19RG4ubG9vc2V8fChfZT9Ebi5sb29zZT0hMDovXG4gKlxuICokLy50ZXN0KHYpJiYoX2U9ITApKSx0aGlzLm9wdGlvbnMuZ2ZtJiYoeT0vXlxbWyB4WF1cXSAvLmV4ZWMoaHQpLHkmJihDPSJbIF0gIiE9PXlbMF0saHQ9aHQucmVwbGFjZSgvXlxb''@;'; put 'put ''WyB4WF1cXSArLywiIikpKSxEbi5pdGVtcy5wdXNoKHt0eXBlOiJsaXN0X2l0ZW0iLHJhdzp2LHRhc2s6ISF5LGNoZWNrZWQ6Qyxsb29zZTohMSx0ZXh0Omh0fSksRG4ucmF3Kz12fURuLml0ZW1zW0RuLml0ZW1zLmxlbmd0aC0xXS5yYXc9di50cmltUmlnaHQoKSxEbi5pdGVtc1tEbi5pdGVt''@;'; put 'put ''cy5sZW5ndGgtMV0udGV4dD1odC50cmltUmlnaHQoKSxEbi5yYXc9RG4ucmF3LnRyaW1SaWdodCgpO2NvbnN0IHByPURuLml0ZW1zLmxlbmd0aDtmb3Ioaj0wO2o8cHI7aisrKXt0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxEbi5pdGVtc1tqXS50b2tlbnM9dGhpcy5sZXhlci5ibG9ja1Rva2Vu''@;'; put 'put ''cyhEbi5pdGVtc1tqXS50ZXh0LFtdKTtjb25zdCBFcj1Ebi5pdGVtc1tqXS50b2tlbnMuZmlsdGVyKFlyPT4ic3BhY2UiPT09WXIudHlwZSksQXI9RXIuZXZlcnkoWXI9Pntjb25zdCBfaT1Zci5yYXcuc3BsaXQoIiIpO2xldCBLaT0wO2Zvcihjb25zdCBrbyBvZiBfaSlpZigiXG4iPT09a28m''@;'; put 'put ''JihLaSs9MSksS2k+MSlyZXR1cm4hMDtyZXR1cm4hMX0pOyFEbi5sb29zZSYmRXIubGVuZ3RoJiZBciYmKERuLmxvb3NlPSEwLERuLml0ZW1zW2pdLmxvb3NlPSEwKX1yZXR1cm4gRG59fWh0bWwoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmJsb2NrLmh0bWwuZXhlYyhnKTtpZihoKXtjb25zdCB2''@;'; put 'put ''PXt0eXBlOiJodG1sIixyYXc6aFswXSxwcmU6IXRoaXMub3B0aW9ucy5zYW5pdGl6ZXImJigicHJlIj09PWhbMV18fCJzY3JpcHQiPT09aFsxXXx8InN0eWxlIj09PWhbMV0pLHRleHQ6aFswXX07aWYodGhpcy5vcHRpb25zLnNhbml0aXplKXtjb25zdCB5PXRoaXMub3B0aW9ucy5zYW5pdGl6''@;'; put 'put ''ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihoWzBdKTpuZihoWzBdKTt2LnR5cGU9InBhcmFncmFwaCIsdi50ZXh0PXksdi50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoeSl9cmV0dXJuIHZ9fWRlZihnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suZGVmLmV4ZWMoZyk7aWYoaClyZXR1cm4g''@;'; put 'put ''aFszXSYmKGhbM109aFszXS5zdWJzdHJpbmcoMSxoWzNdLmxlbmd0aC0xKSkse3R5cGU6ImRlZiIsdGFnOmhbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiICIpLHJhdzpoWzBdLGhyZWY6aFsyXSx0aXRsZTpoWzNdfX10YWJsZShnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2su''@;'; put 'put ''dGFibGUuZXhlYyhnKTtpZihoKXtjb25zdCB2PXt0eXBlOiJ0YWJsZSIsaGVhZGVyOk1iZShoWzFdKS5tYXAoeT0+KHt0ZXh0Onl9KSksYWxpZ246aFsyXS5yZXBsYWNlKC9eICp8XHwgKiQvZywiIikuc3BsaXQoLyAqXHwgKi8pLHJvd3M6aFszXSYmaFszXS50cmltKCk/aFszXS5yZXBsYWNl''@;'; put 'put ''KC9cblsgXHRdKiQvLCIiKS5zcGxpdCgiXG4iKTpbXX07aWYodi5oZWFkZXIubGVuZ3RoPT09di5hbGlnbi5sZW5ndGgpe3YucmF3PWhbMF07bGV0IEMsSSxqLGNlLHk9di5hbGlnbi5sZW5ndGg7Zm9yKEM9MDtDPHk7QysrKXYuYWxpZ25bQ109L14gKi0rOiAqJC8udGVzdCh2LmFsaWduW0Nd''@;'; put 'put ''KT8icmlnaHQiOi9eICo6LSs6ICokLy50ZXN0KHYuYWxpZ25bQ10pPyJjZW50ZXIiOi9eICo6LSsgKiQvLnRlc3Qodi5hbGlnbltDXSk/ImxlZnQiOm51bGw7Zm9yKHk9di5yb3dzLmxlbmd0aCxDPTA7Qzx5O0MrKyl2LnJvd3NbQ109TWJlKHYucm93c1tDXSx2LmhlYWRlci5sZW5ndGgpLm1h''@;'; put 'put ''cChfZT0+KHt0ZXh0Ol9lfSkpO2Zvcih5PXYuaGVhZGVyLmxlbmd0aCxJPTA7STx5O0krKyl2LmhlYWRlcltJXS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUodi5oZWFkZXJbSV0udGV4dCk7Zm9yKHk9di5yb3dzLmxlbmd0aCxJPTA7STx5O0krKylmb3IoY2U9di5yb3dzW0ldLGo9MDtqPGNl''@;'; put 'put ''Lmxlbmd0aDtqKyspY2Vbal0udG9rZW5zPXRoaXMubGV4ZXIuaW5saW5lKGNlW2pdLnRleHQpO3JldHVybiB2fX19bGhlYWRpbmcoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmJsb2NrLmxoZWFkaW5nLmV4ZWMoZyk7aWYoaClyZXR1cm57dHlwZToiaGVhZGluZyIscmF3OmhbMF0sZGVwdGg6Ij0i''@;'; put 'put ''PT09aFsyXS5jaGFyQXQoMCk/MToyLHRleHQ6aFsxXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoaFsxXSl9fXBhcmFncmFwaChnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2sucGFyYWdyYXBoLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj0iXG4iPT09aFsxXS5jaGFyQXQoaFsxXS5sZW5ndGgt''@;'; put 'put ''MSk/aFsxXS5zbGljZSgwLC0xKTpoWzFdO3JldHVybnt0eXBlOiJwYXJhZ3JhcGgiLHJhdzpoWzBdLHRleHQ6dix0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodil9fX10ZXh0KGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9jay50ZXh0LmV4ZWMoZyk7aWYoaClyZXR1cm57dHlwZToidGV4dCIs''@;'; put 'put ''cmF3OmhbMF0sdGV4dDpoWzBdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShoWzBdKX19ZXNjYXBlKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5pbmxpbmUuZXNjYXBlLmV4ZWMoZyk7aWYoaClyZXR1cm57dHlwZToiZXNjYXBlIixyYXc6aFswXSx0ZXh0Om5mKGhbMV0pfX10YWcoZyl7Y29uc3Qg''@;'; put 'put ''aD10aGlzLnJ1bGVzLmlubGluZS50YWcuZXhlYyhnKTtpZihoKXJldHVybiF0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148YSAvaS50ZXN0KGhbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiYvXjxcL2E+L2kudGVzdChoWzBdKSYmKHRo''@;'; put 'put ''aXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjwocHJlfGNvZGV8a2JkfHNjcmlwdCkoXHN8PikvaS50ZXN0KGhbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePFwv''@;'; put 'put ''KHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdChoWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6dGhpcy5vcHRpb25zLnNhbml0aXplPyJ0ZXh0IjoiaHRtbCIscmF3OmhbMF0saW5MaW5rOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rLGluUmF3Qmxv''@;'; put 'put ''Y2s6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrLHRleHQ6dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihoWzBdKTpuZihoWzBdKTpoWzBdfX1saW5rKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5pbmxpbmUubGluay5l''@;'; put 'put ''eGVjKGcpO2lmKGgpe2NvbnN0IHY9aFsyXS50cmltKCk7aWYoIXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmL148Ly50ZXN0KHYpKXtpZighLz4kLy50ZXN0KHYpKXJldHVybjtjb25zdCBJPVlxKHYuc2xpY2UoMCwtMSksIlxcIik7aWYoKHYubGVuZ3RoLUkubGVuZ3RoKSUyPT0wKXJldHVybn1l''@;'; put 'put ''bHNle2NvbnN0IEk9ZnVuY3Rpb24gcFplKGQsZyl7aWYoLTE9PT1kLmluZGV4T2YoZ1sxXSkpcmV0dXJuLTE7Y29uc3QgaD1kLmxlbmd0aDtsZXQgdj0wLHk9MDtmb3IoO3k8aDt5KyspaWYoIlxcIj09PWRbeV0peSsrO2Vsc2UgaWYoZFt5XT09PWdbMF0pdisrO2Vsc2UgaWYoZFt5XT09PWdb''@;'; put 'put ''MV0mJih2LS0sdjwwKSlyZXR1cm4geTtyZXR1cm4tMX0oaFsyXSwiKCkiKTtpZihJPi0xKXtjb25zdCBjZT0oMD09PWhbMF0uaW5kZXhPZigiISIpPzU6NCkraFsxXS5sZW5ndGgrSTtoWzJdPWhbMl0uc3Vic3RyaW5nKDAsSSksaFswXT1oWzBdLnN1YnN0cmluZygwLGNlKS50cmltKCksaFsz''@;'; put 'put ''XT0iIn19bGV0IHk9aFsyXSxDPSIiO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyl7Y29uc3QgST0vXihbXiciXSpbXlxzXSlccysoWyciXSkoLiopXDIvLmV4ZWMoeSk7SSYmKHk9SVsxXSxDPUlbM10pfWVsc2UgQz1oWzNdP2hbM10uc2xpY2UoMSwtMSk6IiI7cmV0dXJuIHk9eS50cmltKCks''@;'; put 'put ''L148Ly50ZXN0KHkpJiYoeT10aGlzLm9wdGlvbnMucGVkYW50aWMmJiEvPiQvLnRlc3Qodik/eS5zbGljZSgxKTp5LnNsaWNlKDEsLTEpKSxUYmUoaCx7aHJlZjp5JiZ5LnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIiksdGl0bGU6QyYmQy5yZXBsYWNlKHRoaXMucnVs''@;'; put 'put ''ZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpfSxoWzBdLHRoaXMubGV4ZXIpfX1yZWZsaW5rKGcsaCl7bGV0IHY7aWYoKHY9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKGcpKXx8KHY9dGhpcy5ydWxlcy5pbmxpbmUubm9saW5rLmV4ZWMoZykpKXtsZXQgeT0odlsyXXx8dlsxXSkucmVw''@;'; put 'put ''bGFjZSgvXHMrL2csIiAiKTtpZih5PWhbeS50b0xvd2VyQ2FzZSgpXSwheXx8IXkuaHJlZil7Y29uc3QgQz12WzBdLmNoYXJBdCgwKTtyZXR1cm57dHlwZToidGV4dCIscmF3OkMsdGV4dDpDfX1yZXR1cm4gVGJlKHYseSx2WzBdLHRoaXMubGV4ZXIpfX1lbVN0cm9uZyhnLGgsdj0iIil7bGV0''@;'; put 'put ''IHk9dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcubERlbGltLmV4ZWMoZyk7aWYoIXl8fHlbM10mJnYubWF0Y2goL1tccHtMfVxwe059XS91KSlyZXR1cm47Y29uc3QgQz15WzFdfHx5WzJdfHwiIjtpZighQ3x8QyYmKCIiPT09dnx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhl''@;'; put 'put ''Yyh2KSkpe2NvbnN0IEk9eVswXS5sZW5ndGgtMTtsZXQgaixjZSxfZT1JLFJlPTA7Y29uc3QgTmU9IioiPT09eVswXVswXT90aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltVW5kO2ZvcihOZS5sYXN0SW5kZXg9MCxo''@;'; put 'put ''PWguc2xpY2UoLTEqZy5sZW5ndGgrSSk7bnVsbCE9KHk9TmUuZXhlYyhoKSk7KXtpZihqPXlbMV18fHlbMl18fHlbM118fHlbNF18fHlbNV18fHlbNl0sIWopY29udGludWU7aWYoY2U9ai5sZW5ndGgseVszXXx8eVs0XSl7X2UrPWNlO2NvbnRpbnVlfWlmKCh5WzVdfHx5WzZdKSYmSSUzJiYh''@;'; put 'put ''KChJK2NlKSUzKSl7UmUrPWNlO2NvbnRpbnVlfWlmKF9lLT1jZSxfZT4wKWNvbnRpbnVlO2lmKGNlPU1hdGgubWluKGNlLGNlK19lK1JlKSxNYXRoLm1pbihJLGNlKSUyKXtjb25zdCBodD1nLnNsaWNlKDEsSSt5LmluZGV4K2NlKTtyZXR1cm57dHlwZToiZW0iLHJhdzpnLnNsaWNlKDAsSSt5''@;'; put 'put ''LmluZGV4K2NlKzEpLHRleHQ6aHQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGh0KX19Y29uc3QgS2U9Zy5zbGljZSgyLEkreS5pbmRleCtjZS0xKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6Zy5zbGljZSgwLEkreS5pbmRleCtjZSsxKSx0ZXh0OktlLHRva2Vuczp0aGlzLmxl''@;'; put 'put ''eGVyLmlubGluZVRva2VucyhLZSl9fX19Y29kZXNwYW4oZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmlubGluZS5jb2RlLmV4ZWMoZyk7aWYoaCl7bGV0IHY9aFsyXS5yZXBsYWNlKC9cbi9nLCIgIik7Y29uc3QgeT0vW14gXS8udGVzdCh2KSxDPS9eIC8udGVzdCh2KSYmLyAkLy50ZXN0KHYpO3Jl''@;'; put 'put ''dHVybiB5JiZDJiYodj12LnN1YnN0cmluZygxLHYubGVuZ3RoLTEpKSx2PW5mKHYsITApLHt0eXBlOiJjb2Rlc3BhbiIscmF3OmhbMF0sdGV4dDp2fX19YnIoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKGcpO2lmKGgpcmV0dXJue3R5cGU6ImJyIixyYXc6aFswXX19ZGVs''@;'; put 'put ''KGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5pbmxpbmUuZGVsLmV4ZWMoZyk7aWYoaClyZXR1cm57dHlwZToiZGVsIixyYXc6aFswXSx0ZXh0OmhbMl0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGhbMl0pfX1hdXRvbGluayhnLGgpe2NvbnN0IHY9dGhpcy5ydWxlcy5pbmxpbmUuYXV0''@;'; put 'put ''b2xpbmsuZXhlYyhnKTtpZih2KXtsZXQgeSxDO3JldHVybiJAIj09PXZbMl0/KHk9bmYodGhpcy5vcHRpb25zLm1hbmdsZT9oKHZbMV0pOnZbMV0pLEM9Im1haWx0bzoiK3kpOih5PW5mKHZbMV0pLEM9eSkse3R5cGU6ImxpbmsiLHJhdzp2WzBdLHRleHQ6eSxocmVmOkMsdG9rZW5zOlt7dHlw''@;'; put 'put ''ZToidGV4dCIscmF3OnksdGV4dDp5fV19fX11cmwoZyxoKXtsZXQgdjtpZih2PXRoaXMucnVsZXMuaW5saW5lLnVybC5leGVjKGcpKXtsZXQgeSxDO2lmKCJAIj09PXZbMl0peT1uZih0aGlzLm9wdGlvbnMubWFuZ2xlP2godlswXSk6dlswXSksQz0ibWFpbHRvOiIreTtlbHNle2xldCBJO2Rv''@;'; put 'put ''e0k9dlswXSx2WzBdPXRoaXMucnVsZXMuaW5saW5lLl9iYWNrcGVkYWwuZXhlYyh2WzBdKVswXX13aGlsZShJIT09dlswXSk7eT1uZih2WzBdKSxDPSJ3d3cuIj09PXZbMV0/Imh0dHA6Ly8iK3k6eX1yZXR1cm57dHlwZToibGluayIscmF3OnZbMF0sdGV4dDp5LGhyZWY6Qyx0b2tlbnM6W3t0''@;'; put 'put ''eXBlOiJ0ZXh0IixyYXc6eSx0ZXh0Onl9XX19fWlubGluZVRleHQoZyxoKXtjb25zdCB2PXRoaXMucnVsZXMuaW5saW5lLnRleHQuZXhlYyhnKTtpZih2KXtsZXQgeTtyZXR1cm4geT10aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s/dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9u''@;'; put 'put ''cy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcih2WzBdKTpuZih2WzBdKTp2WzBdOm5mKHRoaXMub3B0aW9ucy5zbWFydHlwYW50cz9oKHZbMF0pOnZbMF0pLHt0eXBlOiJ0ZXh0IixyYXc6dlswXSx0ZXh0Onl9fX19Y29uc3QgUmE9e25ld2xpbmU6L14oPzogKig/OlxufCQpKSsv''@;'; put 'put ''LGNvZGU6L14oIHs0fVteXG5dKyg/OlxuKD86ICooPzpcbnwkKSkqKT8pKy8sZmVuY2VzOi9eIHswLDN9KGB7Myx9KD89W15gXG5dKlxuKXx+ezMsfSkoW15cbl0qKVxuKD86fChbXHNcU10qPylcbikoPzogezAsM31cMVt+YF0qICooPz1cbnwkKXwkKS8saHI6L14gezAsM30oKD86LVtcdCBd''@;'; put 'put ''Kil7Myx9fCg/Ol9bIFx0XSopezMsfXwoPzpcKlsgXHRdKil7Myx9KSg/OlxuK3wkKS8saGVhZGluZzovXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxibG9ja3F1b3RlOi9eKCB7MCwzfT4gPyhwYXJhZ3JhcGh8W15cbl0qKSg/OlxufCQpKSsvLGxpc3Q6L14oIHswLDN9''@;'; put 'put ''YnVsbCkoWyBcdF1bXlxuXSs/KT8oPzpcbnwkKS8saHRtbDoiXiB7MCwzfSg/Ojwoc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbXFxzPl1bXFxzXFxTXSo/KD86PC9cXDE+W15cXG5dKlxcbit8JCl8Y29tbWVudFteXFxuXSooXFxuK3wkKXw8XFw/W1xcc1xcU10qPyg/OlxcPz5cXG4qfCQp''@;'; put 'put ''fDwhW0EtWl1bXFxzXFxTXSo/KD86Plxcbip8JCl8PCFcXFtDREFUQVxcW1tcXHNcXFNdKj8oPzpcXF1cXF0+XFxuKnwkKXw8Lz8odGFnKSg/OiArfFxcbnwvPz4pW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCl8PCg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKFthLXpdW1xcdy1d''@;'; put 'put ''KikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCl8PC8oPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVthLXpdW1xcdy1dKlxccyo+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xc''@;'; put 'put ''bnwkKSkiLGRlZjovXiB7MCwzfVxbKGxhYmVsKVxdOiAqKD86XG4gKik/PD8oW15ccz5dKyk+Pyg/Oig/OiArKD86XG4gKik/fCAqXG4gKikodGl0bGUpKT8gKig/OlxuK3wkKS8sdGFibGU6V3EsbGhlYWRpbmc6L14oW15cbl0rKVxuIHswLDN9KD0rfC0rKSAqKD86XG4rfCQpLyxfcGFyYWdy''@;'; put 'put ''YXBoOi9eKFteXG5dKyg/OlxuKD8haHJ8aGVhZGluZ3xsaGVhZGluZ3xibG9ja3F1b3RlfGZlbmNlc3xsaXN0fGh0bWx8dGFibGV8ICtcbilbXlxuXSspKikvLHRleHQ6L15bXlxuXSsvLF9sYWJlbDovKD8hXHMqXF0pKD86XFwufFteXFtcXVxcXSkrLyxfdGl0bGU6Lyg/OiIoPzpcXCI/fFte''@;'; put 'put ''IlxcXSkqInwnW14nXG5dKig/OlxuW14nXG5dKykqXG4/J3xcKFteKCldKlwpKS99O1JhLmRlZj1ZMihSYS5kZWYpLnJlcGxhY2UoImxhYmVsIixSYS5fbGFiZWwpLnJlcGxhY2UoInRpdGxlIixSYS5fdGl0bGUpLmdldFJlZ2V4KCksUmEuYnVsbGV0PS8oPzpbKistXXxcZHsxLDl9Wy4pXSkv''@;'; put 'put ''LFJhLmxpc3RJdGVtU3RhcnQ9WTIoL14oICopKGJ1bGwpICovKS5yZXBsYWNlKCJidWxsIixSYS5idWxsZXQpLmdldFJlZ2V4KCksUmEubGlzdD1ZMihSYS5saXN0KS5yZXBsYWNlKC9idWxsL2csUmEuYnVsbGV0KS5yZXBsYWNlKCJociIsIlxcbisoPz1cXDE/KD86KD86LSAqKXszLH18KD86''@;'; put 'put ''XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpKSIpLnJlcGxhY2UoImRlZiIsIlxcbisoPz0iK1JhLmRlZi5zb3VyY2UrIikiKS5nZXRSZWdleCgpLFJhLl90YWc9ImFkZHJlc3N8YXJ0aWNsZXxhc2lkZXxiYXNlfGJhc2Vmb250fGJsb2NrcXVvdGV8Ym9keXxjYXB0aW9ufGNlbnRl''@;'; put 'put ''cnxjb2x8Y29sZ3JvdXB8ZGR8ZGV0YWlsc3xkaWFsb2d8ZGlyfGRpdnxkbHxkdHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoWzEtNl18aGVhZHxoZWFkZXJ8aHJ8aHRtbHxpZnJhbWV8bGVnZW5kfGxpfGxpbmt8bWFpbnxtZW51fG1lbnVp''@;'; put 'put ''dGVtfG1ldGF8bmF2fG5vZnJhbWVzfG9sfG9wdGdyb3VwfG9wdGlvbnxwfHBhcmFtfHNlY3Rpb258c291cmNlfHN1bW1hcnl8dGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dGhlYWR8dGl0bGV8dHJ8dHJhY2t8dWwiLFJhLl9jb21tZW50PS88IS0tKD8hLT8+KVtcc1xTXSo/KD86LS0+fCQpLyxS''@;'; put 'put ''YS5odG1sPVkyKFJhLmh0bWwsImkiKS5yZXBsYWNlKCJjb21tZW50IixSYS5fY29tbWVudCkucmVwbGFjZSgidGFnIixSYS5fdGFnKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC8gK1thLXpBLVo6X11bXHcuOi1dKig/OiAqPSAqIlteIlxuXSoifCAqPSAqJ1teJ1xuXSonfCAqPSAqW15ccyInPTw+''@;'; put 'put ''YF0rKT8vKS5nZXRSZWdleCgpLFJhLnBhcmFncmFwaD1ZMihSYS5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsUmEuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgifGxoZWFkaW5nIiwiIikucmVwbGFjZSgifHRhYmxlIiwiIikucmVwbGFjZSgiYmxvY2tx''@;'; put 'put ''dW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4p''@;'; put 'put ''fDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLFJhLl90YWcpLmdldFJlZ2V4KCksUmEuYmxvY2txdW90ZT1ZMihSYS5ibG9ja3F1b3RlKS5yZXBsYWNlKCJwYXJhZ3JhcGgiLFJhLnBhcmFncmFwaCkuZ2V0UmVnZXgoKSxSYS5ub3JtYWw9Zzgoe30s''@;'; put 'put ''UmEpLFJhLmdmbT1nOCh7fSxSYS5ub3JtYWwse3RhYmxlOiJeICooW15cXG4gXS4qXFx8LiopXFxuIHswLDN9KD86XFx8ICopPyg6Py0rOj8gKig/OlxcfCAqOj8tKzo/ICopKikoPzpcXHwgKik/KD86XFxuKCg/Oig/ISAqXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xs''@;'; put 'put ''aXN0fGh0bWwpLiooPzpcXG58JCkpKilcXG4qfCQpIn0pLFJhLmdmbS50YWJsZT1ZMihSYS5nZm0udGFibGUpLnJlcGxhY2UoImhyIixSYS5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImNvZGUi''@;'; put 'put ''LCIgezR9W15cXG5dIikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8''@;'; put 'put ''KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixSYS5fdGFnKS5nZXRSZWdleCgpLFJhLmdmbS5wYXJhZ3JhcGg9WTIoUmEuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLFJhLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxh''@;'; put 'put ''Y2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIixSYS5nZm0udGFibGUpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIg''@;'; put 'put ''ezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixSYS5fdGFnKS5nZXRSZWdleCgpLFJhLnBlZGFudGljPWc4KHt9LFJhLm5vcm1hbCx7''@;'; put 'put ''aHRtbDpZMigiXiAqKD86Y29tbWVudCAqKD86XFxufFxccyokKXw8KHRhZylbXFxzXFxTXSs/PC9cXDE+ICooPzpcXG57Mix9fFxccyokKXw8dGFnKD86XCJbXlwiXSpcInwnW14nXSonfFxcc1teJ1wiLz5cXHNdKikqPy8/PiAqKD86XFxuezIsfXxcXHMqJCkpIikucmVwbGFjZSgiY29tbWVu''@;'; put 'put ''dCIsUmEuX2NvbW1lbnQpLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFsbHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylc''@;'; put 'put ''XGIpXFx3Kyg/ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhbXlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOldxLHBhcmFncmFw''@;'; put 'put ''aDpZMihSYS5ub3JtYWwuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLFJhLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIikucmVwbGFjZSgibGhlYWRpbmciLFJhLmxoZWFkaW5nKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMi''@;'; put 'put ''LCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikuZ2V0UmVnZXgoKX0pO2NvbnN0IFFvPXtlc2NhcGU6L15cXChbISIjJCUmJygpKissXC0uLzo7PD0+P0BcW1xdXFxeX2B7fH1+XSkvLGF1dG9saW5rOi9ePChzY2hlbWU6W15cc1x4MDAtXHgxZjw+XSp8ZW1haWwp''@;'; put 'put ''Pi8sdXJsOldxLHRhZzoiXmNvbW1lbnR8XjwvW2EtekEtWl1bXFx3Oi1dKlxccyo+fF48W2EtekEtWl1bXFx3LV0qKD86YXR0cmlidXRlKSo/XFxzKi8/PnxePFxcP1tcXHNcXFNdKj9cXD8+fF48IVthLXpBLVpdK1xcc1tcXHNcXFNdKj8+fF48IVxcW0NEQVRBXFxbW1xcc1xcU10qP1xcXVxc''@;'; put 'put ''XT4iLGxpbms6L14hP1xbKGxhYmVsKVxdXChccyooaHJlZikoPzpccysodGl0bGUpKT9ccypcKS8scmVmbGluazovXiE/XFsobGFiZWwpXF1cWyhyZWYpXF0vLG5vbGluazovXiE/XFsocmVmKVxdKD86XFtcXSk/LyxyZWZsaW5rU2VhcmNoOiJyZWZsaW5rfG5vbGluayg/IVxcKCkiLGVtU3Ry''@;'; put 'put ''b25nOntsRGVsaW06L14oPzpcKisoPzooW3B1bmN0X10pfFteXHMqXSkpfF5fKyg/OihbcHVuY3QqXSl8KFteXHNfXSkpLyxyRGVsaW1Bc3Q6L15bXl8qXSo/XF9cX1teXypdKj9cKlteXypdKj8oPz1cX1xfKXxbXipdKyg/PVteKl0pfFtwdW5jdF9dKFwqKykoPz1bXHNdfCQpfFtecHVuY3Qq''@;'; put 'put ''X1xzXShcKispKD89W3B1bmN0X1xzXXwkKXxbcHVuY3RfXHNdKFwqKykoPz1bXnB1bmN0Kl9cc10pfFtcc10oXCorKSg/PVtwdW5jdF9dKXxbcHVuY3RfXShcKispKD89W3B1bmN0X10pfFtecHVuY3QqX1xzXShcKispKD89W15wdW5jdCpfXHNdKS8sckRlbGltVW5kOi9eW15fKl0qP1wqXCpb''@;'; put 'put ''Xl8qXSo/XF9bXl8qXSo/KD89XCpcKil8W15fXSsoPz1bXl9dKXxbcHVuY3QqXShcXyspKD89W1xzXXwkKXxbXnB1bmN0Kl9cc10oXF8rKSg/PVtwdW5jdCpcc118JCl8W3B1bmN0KlxzXShcXyspKD89W15wdW5jdCpfXHNdKXxbXHNdKFxfKykoPz1bcHVuY3QqXSl8W3B1bmN0Kl0oXF8rKSg/''@;'; put 'put ''PVtwdW5jdCpdKS99LGNvZGU6L14oYCspKFteYF18W15gXVtcc1xTXSo/W15gXSlcMSg/IWApLyxicjovXiggezIsfXxcXClcbig/IVxzKiQpLyxkZWw6V3EsdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIs''@;'; put 'put ''fVxuKSkpLyxwdW5jdHVhdGlvbjovXihbXHNwdW5jdHVhdGlvbl0pL307ZnVuY3Rpb24gbVplKGQpe3JldHVybiBkLnJlcGxhY2UoLy0tLS9nLCJcdTIwMTQiKS5yZXBsYWNlKC8tLS9nLCJcdTIwMTMiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7IlxzXSknL2csIiQxXHUyMDE4IikucmVw''@;'; put 'put ''bGFjZSgvJy9nLCJcdTIwMTkiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7XHUyMDE4XHNdKSIvZywiJDFcdTIwMWMiKS5yZXBsYWNlKC8iL2csIlx1MjAxZCIpLnJlcGxhY2UoL1wuezN9L2csIlx1MjAyNiIpfWZ1bmN0aW9uIEliZShkKXtsZXQgaCx2LGc9IiI7Y29uc3QgeT1kLmxlbmd0''@;'; put 'put ''aDtmb3IoaD0wO2g8eTtoKyspdj1kLmNoYXJDb2RlQXQoaCksTWF0aC5yYW5kb20oKT4uNSYmKHY9IngiK3YudG9TdHJpbmcoMTYpKSxnKz0iJiMiK3YrIjsiO3JldHVybiBnfVFvLl9wdW5jdHVhdGlvbj0iIVwiIyQlJicoKStcXC0uLC86Ozw9Pj9AXFxbXFxdYF57fH1+IixRby5wdW5jdHVh''@;'; put 'put ''dGlvbj1ZMihRby5wdW5jdHVhdGlvbikucmVwbGFjZSgvcHVuY3R1YXRpb24vZyxRby5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksUW8uYmxvY2tTa2lwPS9cW1teXF1dKj9cXVwoW15cKV0qP1wpfGBbXmBdKj9gfDxbXj5dKj8+L2csUW8uZXNjYXBlZEVtU3Q9L1xcXCp8XFxfL2csUW8uX2Nv''@;'; put 'put ''bW1lbnQ9WTIoUmEuX2NvbW1lbnQpLnJlcGxhY2UoIig/Oi0tXHgzZXwkKSIsIi0tXHgzZSIpLmdldFJlZ2V4KCksUW8uZW1TdHJvbmcubERlbGltPVkyKFFvLmVtU3Ryb25nLmxEZWxpbSkucmVwbGFjZSgvcHVuY3QvZyxRby5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksUW8uZW1TdHJvbmcu''@;'; put 'put ''ckRlbGltQXN0PVkyKFFvLmVtU3Ryb25nLnJEZWxpbUFzdCwiZyIpLnJlcGxhY2UoL3B1bmN0L2csUW8uX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLFFvLmVtU3Ryb25nLnJEZWxpbVVuZD1ZMihRby5lbVN0cm9uZy5yRGVsaW1VbmQsImciKS5yZXBsYWNlKC9wdW5jdC9nLFFvLl9wdW5jdHVh''@;'; put 'put ''dGlvbikuZ2V0UmVnZXgoKSxRby5fZXNjYXBlcz0vXFwoWyEiIyQlJicoKSorLFwtLi86Ozw9Pj9AXFtcXVxcXl9ge3x9fl0pL2csUW8uX3NjaGVtZT0vW2EtekEtWl1bYS16QS1aMC05Ky4tXXsxLDMxfS8sUW8uX2VtYWlsPS9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dKyhAKVth''@;'; put 'put ''LXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSsoPyFbLV9dKS8sUW8uYXV0b2xpbms9WTIoUW8uYXV0b2xpbmspLnJlcGxhY2UoInNjaGVtZSIsUW8uX3NjaGVtZSkucmVw''@;'; put 'put ''bGFjZSgiZW1haWwiLFFvLl9lbWFpbCkuZ2V0UmVnZXgoKSxRby5fYXR0cmlidXRlPS9ccytbYS16QS1aOl9dW1x3LjotXSooPzpccyo9XHMqIlteIl0qInxccyo9XHMqJ1teJ10qJ3xccyo9XHMqW15ccyInPTw+YF0rKT8vLFFvLnRhZz1ZMihRby50YWcpLnJlcGxhY2UoImNvbW1lbnQiLFFv''@;'; put 'put ''Ll9jb21tZW50KS5yZXBsYWNlKCJhdHRyaWJ1dGUiLFFvLl9hdHRyaWJ1dGUpLmdldFJlZ2V4KCksUW8uX2xhYmVsPS8oPzpcWyg/OlxcLnxbXlxbXF1cXF0pKlxdfFxcLnxgW15gXSpgfFteXFtcXVxcYF0pKj8vLFFvLl9ocmVmPS88KD86XFwufFteXG48PlxcXSkrPnxbXlxzXHgwMC1ceDFm''@;'; put 'put ''XSovLFFvLl90aXRsZT0vIig/OlxcIj98W14iXFxdKSoifCcoPzpcXCc/fFteJ1xcXSkqJ3xcKCg/OlxcXCk/fFteKVxcXSkqXCkvLFFvLmxpbms9WTIoUW8ubGluaykucmVwbGFjZSgibGFiZWwiLFFvLl9sYWJlbCkucmVwbGFjZSgiaHJlZiIsUW8uX2hyZWYpLnJlcGxhY2UoInRpdGxlIixR''@;'; put 'put ''by5fdGl0bGUpLmdldFJlZ2V4KCksUW8ucmVmbGluaz1ZMihRby5yZWZsaW5rKS5yZXBsYWNlKCJsYWJlbCIsUW8uX2xhYmVsKS5yZXBsYWNlKCJyZWYiLFJhLl9sYWJlbCkuZ2V0UmVnZXgoKSxRby5ub2xpbms9WTIoUW8ubm9saW5rKS5yZXBsYWNlKCJyZWYiLFJhLl9sYWJlbCkuZ2V0UmVn''@;'; put 'put ''ZXgoKSxRby5yZWZsaW5rU2VhcmNoPVkyKFFvLnJlZmxpbmtTZWFyY2gsImciKS5yZXBsYWNlKCJyZWZsaW5rIixRby5yZWZsaW5rKS5yZXBsYWNlKCJub2xpbmsiLFFvLm5vbGluaykuZ2V0UmVnZXgoKSxRby5ub3JtYWw9Zzgoe30sUW8pLFFvLnBlZGFudGljPWc4KHt9LFFvLm5vcm1hbCx7''@;'; put 'put ''c3Ryb25nOntzdGFydDovXl9ffFwqXCovLG1pZGRsZTovXl9fKD89XFMpKFtcc1xTXSo/XFMpX18oPyFfKXxeXCpcKig/PVxTKShbXHNcU10qP1xTKVwqXCooPyFcKikvLGVuZEFzdDovXCpcKig/IVwqKS9nLGVuZFVuZDovX18oPyFfKS9nfSxlbTp7c3RhcnQ6L15ffFwqLyxtaWRkbGU6L14o''@;'; put 'put ''KVwqKD89XFMpKFtcc1xTXSo/XFMpXCooPyFcKil8Xl8oPz1cUykoW1xzXFNdKj9cUylfKD8hXykvLGVuZEFzdDovXCooPyFcKikvZyxlbmRVbmQ6L18oPyFfKS9nfSxsaW5rOlkyKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixRby5fbGFiZWwpLmdldFJlZ2V4''@;'; put 'put ''KCkscmVmbGluazpZMigvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNlKCJsYWJlbCIsUW8uX2xhYmVsKS5nZXRSZWdleCgpfSksUW8uZ2ZtPWc4KHt9LFFvLm5vcm1hbCx7ZXNjYXBlOlkyKFFvLmVzY2FwZSkucmVwbGFjZSgiXSkiLCJ+fF0pIikuZ2V0UmVnZXgoKSxf''@;'; put 'put ''ZXh0ZW5kZWRfZW1haWw6L1tBLVphLXowLTkuXystXSsoQClbYS16QS1aMC05LV9dKyg/OlwuW2EtekEtWjAtOS1fXSpbYS16QS1aMC05XSkrKD8hWy1fXSkvLHVybDovXigoPzpmdHB8aHR0cHM/KTpcL1wvfHd3d1wuKSg/OlthLXpBLVowLTlcLV0rXC4/KStbXlxzPF0qfF5lbWFpbC8sX2Jh''@;'; put 'put ''Y2twZWRhbDovKD86W14/IS4sOjsqX34oKSZdK3xcKFteKV0qXCl8Jig/IVthLXpBLVowLTldKzskKXxbPyEuLDo7Kl9+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0pKFtcc1xTXSo/W15cc35dKVwxKD89W15+XXwkKS8sdGV4dDovXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxu''@;'; put 'put ''KXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKn5fXXxcYl98aHR0cHM/OlwvXC98ZnRwOlwvXC98d3d3XC58JCl8W14gXSg/PSB7Mix9XG4pfFteYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXSg/PVthLXpBLVowLTku''@;'; put 'put ''ISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApKSkvfSksUW8uZ2ZtLnVybD1ZMihRby5nZm0udXJsLCJpIikucmVwbGFjZSgiZW1haWwiLFFvLmdmbS5fZXh0ZW5kZWRfZW1haWwpLmdldFJlZ2V4KCksUW8uYnJlYWtzPWc4KHt9LFFvLmdmbSx7YnI6WTIoUW8uYnIpLnJlcGxhY2UoInsyLH0iLCIq''@;'; put 'put ''IikuZ2V0UmVnZXgoKSx0ZXh0OlkyKFFvLmdmbS50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxiX3wgezIsfVxcbiIpLnJlcGxhY2UoL1x7MixcfS9nLCIqIikuZ2V0UmVnZXgoKX0pO2NsYXNzIFR2e2NvbnN0cnVjdG9yKGcpe3RoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5zLmxpbmtzPU9iamVj''@;'; put 'put ''dC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zPWd8fHdPLHRoaXMub3B0aW9ucy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcnx8bmV3IFhoZSx0aGlzLnRva2VuaXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyLHRoaXMudG9rZW5pemVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRo''@;'; put 'put ''aXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnN0YXRlPXtpbkxpbms6ITEsaW5SYXdCbG9jazohMSx0b3A6ITB9O2NvbnN0IGg9e2Jsb2NrOlJhLm5vcm1hbCxpbmxpbmU6UW8ubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KGguYmxvY2s9UmEu''@;'; put 'put ''cGVkYW50aWMsaC5pbmxpbmU9UW8ucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJihoLmJsb2NrPVJhLmdmbSxoLmlubGluZT10aGlzLm9wdGlvbnMuYnJlYWtzP1FvLmJyZWFrczpRby5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPWh9c3RhdGljIGdldCBydWxlcygpe3JldHVybntibG9j''@;'; put 'put ''azpSYSxpbmxpbmU6UW99fXN0YXRpYyBsZXgoZyxoKXtyZXR1cm4gbmV3IFR2KGgpLmxleChnKX1zdGF0aWMgbGV4SW5saW5lKGcsaCl7cmV0dXJuIG5ldyBUdihoKS5pbmxpbmVUb2tlbnMoZyl9bGV4KGcpe2xldCBoO2ZvcihnPWcucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLHRoaXMuYmxv''@;'; put 'put ''Y2tUb2tlbnMoZyx0aGlzLnRva2Vucyk7aD10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRoaXMuaW5saW5lVG9rZW5zKGguc3JjLGgudG9rZW5zKTtyZXR1cm4gdGhpcy50b2tlbnN9YmxvY2tUb2tlbnMoZyxoPVtdKXtsZXQgdix5LEMsSTtmb3IoZz10aGlzLm9wdGlvbnMucGVkYW50aWM/''@;'; put 'put ''Zy5yZXBsYWNlKC9cdC9nLCIgICAgIikucmVwbGFjZSgvXiArJC9nbSwiIik6Zy5yZXBsYWNlKC9eKCAqKShcdCspL2dtLChqLGNlLF9lKT0+Y2UrIiAgICAiLnJlcGVhdChfZS5sZW5ndGgpKTtnOylpZighKHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9u''@;'; put 'put ''cy5ibG9jayYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2suc29tZShqPT4hISh2PWouY2FsbCh7bGV4ZXI6dGhpc30sZyxoKSkmJihnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpLCEwKSkpKXtpZih2PXRoaXMudG9rZW5pemVyLnNwYWNlKGcpKXtnPWcuc3Vic3Ry''@;'; put 'put ''aW5nKHYucmF3Lmxlbmd0aCksMT09PXYucmF3Lmxlbmd0aCYmaC5sZW5ndGg+MD9oW2gubGVuZ3RoLTFdLnJhdys9IlxuIjpoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5jb2RlKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCkseT1oW2gubGVuZ3RoLTFdLCF5''@;'; put 'put ''fHwicGFyYWdyYXBoIiE9PXkudHlwZSYmInRleHQiIT09eS50eXBlP2gucHVzaCh2KTooeS5yYXcrPSJcbiIrdi5yYXcseS50ZXh0Kz0iXG4iK3YudGV4dCx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz15LnRleHQpO2NvbnRpbnVlfWlmKHY9dGhpcy50''@;'; put 'put ''b2tlbml6ZXIuZmVuY2VzKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuaGVhZGluZyhnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVy''@;'; put 'put ''LmhyKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuYmxvY2txdW90ZShnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLmxpc3QoZykp''@;'; put 'put ''e2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSxoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5odG1sKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuZGVmKGcpKXtnPWcuc3Vic3RyaW5n''@;'; put 'put ''KHYucmF3Lmxlbmd0aCkseT1oW2gubGVuZ3RoLTFdLCF5fHwicGFyYWdyYXBoIiE9PXkudHlwZSYmInRleHQiIT09eS50eXBlP3RoaXMudG9rZW5zLmxpbmtzW3YudGFnXXx8KHRoaXMudG9rZW5zLmxpbmtzW3YudGFnXT17aHJlZjp2LmhyZWYsdGl0bGU6di50aXRsZX0pOih5LnJhdys9Ilxu''@;'; put 'put ''Iit2LnJhdyx5LnRleHQrPSJcbiIrdi5yYXcsdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9eS50ZXh0KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLnRhYmxlKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRp''@;'; put 'put ''bnVlfWlmKHY9dGhpcy50b2tlbml6ZXIubGhlYWRpbmcoZykpe2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSxoLnB1c2godik7Y29udGludWV9aWYoQz1nLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrKXtsZXQgaj0xLzA7Y29u''@;'; put 'put ''c3QgY2U9Zy5zbGljZSgxKTtsZXQgX2U7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jay5mb3JFYWNoKGZ1bmN0aW9uKFJlKXtfZT1SZS5jYWxsKHtsZXhlcjp0aGlzfSxjZSksIm51bWJlciI9PXR5cGVvZiBfZSYmX2U+PTAmJihqPU1hdGgubWluKGosX2UpKX0pLGo8MS8wJiZq''@;'; put 'put ''Pj0wJiYoQz1nLnN1YnN0cmluZygwLGorMSkpfWlmKHRoaXMuc3RhdGUudG9wJiYodj10aGlzLnRva2VuaXplci5wYXJhZ3JhcGgoQykpKXt5PWhbaC5sZW5ndGgtMV0sSSYmInBhcmFncmFwaCI9PT15LnR5cGU/KHkucmF3Kz0iXG4iK3YucmF3LHkudGV4dCs9IlxuIit2LnRleHQsdGhpcy5p''@;'; put 'put ''bmxpbmVRdWV1ZS5wb3AoKSx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz15LnRleHQpOmgucHVzaCh2KSxJPUMubGVuZ3RoIT09Zy5sZW5ndGgsZz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIudGV4''@;'; put 'put ''dChnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLHk9aFtoLmxlbmd0aC0xXSx5JiYidGV4dCI9PT15LnR5cGU/KHkucmF3Kz0iXG4iK3YucmF3LHkudGV4dCs9IlxuIit2LnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5wb3AoKSx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUu''@;'; put 'put ''bGVuZ3RoLTFdLnNyYz15LnRleHQpOmgucHVzaCh2KTtjb250aW51ZX1pZihnKXtjb25zdCBqPSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZy5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3Ioaik7YnJlYWt9dGhyb3cgbmV3IEVycm9yKGopfX1y''@;'; put 'put ''ZXR1cm4gdGhpcy5zdGF0ZS50b3A9ITAsaH1pbmxpbmUoZyxoPVtdKXtyZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZS5wdXNoKHtzcmM6Zyx0b2tlbnM6aH0pLGh9aW5saW5lVG9rZW5zKGcsaD1bXSl7bGV0IHYseSxDLGosY2UsX2UsST1nO2lmKHRoaXMudG9rZW5zLmxpbmtzKXtjb25zdCBSZT1P''@;'; put 'put ''YmplY3Qua2V5cyh0aGlzLnRva2Vucy5saW5rcyk7aWYoUmUubGVuZ3RoPjApZm9yKDtudWxsIT0oaj10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5leGVjKEkpKTspUmUuaW5jbHVkZXMoalswXS5zbGljZShqWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYo''@;'; put 'put ''ST1JLnNsaWNlKDAsai5pbmRleCkrIlsiK3hiZSgiYSIsalswXS5sZW5ndGgtMikrIl0iK0kuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDtudWxsIT0oaj10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lw''@;'; put 'put ''LmV4ZWMoSSkpOylJPUkuc2xpY2UoMCxqLmluZGV4KSsiWyIreGJlKCJhIixqWzBdLmxlbmd0aC0yKSsiXSIrSS5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmxhc3RJbmRleCk7Zm9yKDtudWxsIT0oaj10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuZXNj''@;'; put 'put ''YXBlZEVtU3QuZXhlYyhJKSk7KUk9SS5zbGljZSgwLGouaW5kZXgpKyIrKyIrSS5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuZXNjYXBlZEVtU3QubGFzdEluZGV4KTtmb3IoO2c7KWlmKGNlfHwoX2U9IiIpLGNlPSExLCEodGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMu''@;'; put 'put ''b3B0aW9ucy5leHRlbnNpb25zLmlubGluZSYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuaW5saW5lLnNvbWUoUmU9PiEhKHY9UmUuY2FsbCh7bGV4ZXI6dGhpc30sZyxoKSkmJihnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpLCEwKSkpKXtpZih2PXRoaXMudG9rZW5pemVy''@;'; put 'put ''LmVzY2FwZShnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLnRhZyhnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLHk9aFtoLmxlbmd0aC0xXSx5JiYidGV4dCI9PT12LnR5cGUmJiJ0ZXh0Ij09PXkudHlw''@;'; put 'put ''ZT8oeS5yYXcrPXYucmF3LHkudGV4dCs9di50ZXh0KTpoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5saW5rKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIucmVmbGluayhnLHRoaXMudG9r''@;'; put 'put ''ZW5zLmxpbmtzKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLHk9aFtoLmxlbmd0aC0xXSx5JiYidGV4dCI9PT12LnR5cGUmJiJ0ZXh0Ij09PXkudHlwZT8oeS5yYXcrPXYucmF3LHkudGV4dCs9di50ZXh0KTpoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5lbVN0''@;'; put 'put ''cm9uZyhnLEksX2UpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuY29kZXNwYW4oZykpe2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSxoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5icihn''@;'; put 'put ''KSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLmRlbChnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLmF1dG9saW5rKGcsSWJlKSl7Zz1n''@;'; put 'put ''LnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZighdGhpcy5zdGF0ZS5pbkxpbmsmJih2PXRoaXMudG9rZW5pemVyLnVybChnLEliZSkpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKEM9Zyx0aGlzLm9wdGlvbnMu''@;'; put 'put ''ZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRJbmxpbmUpe2xldCBSZT0xLzA7Y29uc3QgTmU9Zy5zbGljZSgxKTtsZXQgS2U7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRJbmxpbmUuZm9yRWFjaChmdW5jdGlvbihodCl7S2U9aHQuY2FsbCh7bGV4ZXI6dGhp''@;'; put 'put ''c30sTmUpLCJudW1iZXIiPT10eXBlb2YgS2UmJktlPj0wJiYoUmU9TWF0aC5taW4oUmUsS2UpKX0pLFJlPDEvMCYmUmU+PTAmJihDPWcuc3Vic3RyaW5nKDAsUmUrMSkpfWlmKHY9dGhpcy50b2tlbml6ZXIuaW5saW5lVGV4dChDLG1aZSkpe2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSwi''@;'; put 'put ''XyIhPT12LnJhdy5zbGljZSgtMSkmJihfZT12LnJhdy5zbGljZSgtMSkpLGNlPSEwLHk9aFtoLmxlbmd0aC0xXSx5JiYidGV4dCI9PT15LnR5cGU/KHkucmF3Kz12LnJhdyx5LnRleHQrPXYudGV4dCk6aC5wdXNoKHYpO2NvbnRpbnVlfWlmKGcpe2NvbnN0IFJlPSJJbmZpbml0ZSBsb29wIG9u''@;'; put 'put ''IGJ5dGU6ICIrZy5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3IoUmUpO2JyZWFrfXRocm93IG5ldyBFcnJvcihSZSl9fXJldHVybiBofX1jbGFzcyBYWntjb25zdHJ1Y3RvcihnKXt0aGlzLm9wdGlvbnM9Z3x8d099Y29kZShnLGgsdil7Y29uc3Qg''@;'; put 'put ''eT0oaHx8IiIpLm1hdGNoKC9cUyovKVswXTtpZih0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KXtjb25zdCBDPXRoaXMub3B0aW9ucy5oaWdobGlnaHQoZyx5KTtudWxsIT1DJiZDIT09ZyYmKHY9ITAsZz1DKX1yZXR1cm4gZz1nLnJlcGxhY2UoL1xuJC8sIiIpKyJcbiIseT8nPHByZT48Y29kZSBj''@;'; put 'put ''bGFzcz0iJyt0aGlzLm9wdGlvbnMubGFuZ1ByZWZpeCtuZih5LCEwKSsnIj4nKyh2P2c6bmYoZywhMCkpKyI8L2NvZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKHY/ZzpuZihnLCEwKSkrIjwvY29kZT48L3ByZT5cbiJ9YmxvY2txdW90ZShnKXtyZXR1cm5gPGJsb2NrcXVvdGU+XG4ke2d9''@;'; put 'put ''PC9ibG9ja3F1b3RlPlxuYH1odG1sKGcpe3JldHVybiBnfWhlYWRpbmcoZyxoLHYseSl7cmV0dXJuIHRoaXMub3B0aW9ucy5oZWFkZXJJZHM/YDxoJHtofSBpZD0iJHt0aGlzLm9wdGlvbnMuaGVhZGVyUHJlZml4K3kuc2x1Zyh2KX0iPiR7Z308L2gke2h9PlxuYDpgPGgke2h9PiR7Z308L2gk''@;'; put 'put ''e2h9PlxuYH1ocigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxoci8+XG4iOiI8aHI+XG4ifWxpc3QoZyxoLHYpe2NvbnN0IHk9aD8ib2wiOiJ1bCI7cmV0dXJuIjwiK3krKGgmJjEhPT12Pycgc3RhcnQ9IicrdisnIic6IiIpKyI+XG4iK2crIjwvIit5KyI+XG4ifWxpc3RpdGVtKGcp''@;'; put 'put ''e3JldHVybmA8bGk+JHtnfTwvbGk+XG5gfWNoZWNrYm94KGcpe3JldHVybiI8aW5wdXQgIisoZz8nY2hlY2tlZD0iIiAnOiIiKSsnZGlzYWJsZWQ9IiIgdHlwZT0iY2hlY2tib3giJysodGhpcy5vcHRpb25zLnhodG1sPyIgLyI6IiIpKyI+ICJ9cGFyYWdyYXBoKGcpe3JldHVybmA8cD4ke2d9''@;'; put 'put ''PC9wPlxuYH10YWJsZShnLGgpe3JldHVybiBoJiYoaD1gPHRib2R5PiR7aH08L3Rib2R5PmApLCI8dGFibGU+XG48dGhlYWQ+XG4iK2crIjwvdGhlYWQ+XG4iK2grIjwvdGFibGU+XG4ifXRhYmxlcm93KGcpe3JldHVybmA8dHI+XG4ke2d9PC90cj5cbmB9dGFibGVjZWxsKGcsaCl7Y29uc3Qg''@;'; put 'put ''dj1oLmhlYWRlcj8idGgiOiJ0ZCI7cmV0dXJuKGguYWxpZ24/YDwke3Z9IGFsaWduPSIke2guYWxpZ259Ij5gOmA8JHt2fT5gKStnK2A8LyR7dn0+XG5gfXN0cm9uZyhnKXtyZXR1cm5gPHN0cm9uZz4ke2d9PC9zdHJvbmc+YH1lbShnKXtyZXR1cm5gPGVtPiR7Z308L2VtPmB9Y29kZXNwYW4o''@;'; put 'put ''Zyl7cmV0dXJuYDxjb2RlPiR7Z308L2NvZGU+YH1icigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxici8+IjoiPGJyPiJ9ZGVsKGcpe3JldHVybmA8ZGVsPiR7Z308L2RlbD5gfWxpbmsoZyxoLHYpe2lmKG51bGw9PT0oZz1TYmUodGhpcy5vcHRpb25zLnNhbml0aXplLHRoaXMub3B0''@;'; put 'put ''aW9ucy5iYXNlVXJsLGcpKSlyZXR1cm4gdjtsZXQgeT0nPGEgaHJlZj0iJytuZihnKSsnIic7cmV0dXJuIGgmJih5Kz0nIHRpdGxlPSInK2grJyInKSx5Kz0iPiIrdisiPC9hPiIseX1pbWFnZShnLGgsdil7aWYobnVsbD09PShnPVNiZSh0aGlzLm9wdGlvbnMuc2FuaXRpemUsdGhpcy5vcHRp''@;'; put 'put ''b25zLmJhc2VVcmwsZykpKXJldHVybiB2O2xldCB5PWA8aW1nIHNyYz0iJHtnfSIgYWx0PSIke3Z9ImA7cmV0dXJuIGgmJih5Kz1gIHRpdGxlPSIke2h9ImApLHkrPXRoaXMub3B0aW9ucy54aHRtbD8iLz4iOiI+Iix5fXRleHQoZyl7cmV0dXJuIGd9fWNsYXNzIERiZXtzdHJvbmcoZyl7cmV0''@;'; put 'put ''dXJuIGd9ZW0oZyl7cmV0dXJuIGd9Y29kZXNwYW4oZyl7cmV0dXJuIGd9ZGVsKGcpe3JldHVybiBnfWh0bWwoZyl7cmV0dXJuIGd9dGV4dChnKXtyZXR1cm4gZ31saW5rKGcsaCx2KXtyZXR1cm4iIit2fWltYWdlKGcsaCx2KXtyZXR1cm4iIit2fWJyKCl7cmV0dXJuIiJ9fWNsYXNzIExiZXtj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe3RoaXMuc2Vlbj17fX1zZXJpYWxpemUoZyl7cmV0dXJuIGcudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZSgvPFshXC9hLXpdLio/Pi9naSwiIikucmVwbGFjZSgvW1x1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGXFwnISIjJCUmKCkqKywuLzo7PD0+P0BbXF1eYHt8''@;'; put 'put ''fX5dL2csIiIpLnJlcGxhY2UoL1xzL2csIi0iKX1nZXROZXh0U2FmZVNsdWcoZyxoKXtsZXQgdj1nLHk9MDtpZih0aGlzLnNlZW4uaGFzT3duUHJvcGVydHkodikpe3k9dGhpcy5zZWVuW2ddO2Rve3krKyx2PWcrIi0iK3l9d2hpbGUodGhpcy5zZWVuLmhhc093blByb3BlcnR5KHYpKX1yZXR1''@;'; put 'put ''cm4gaHx8KHRoaXMuc2VlbltnXT15LHRoaXMuc2Vlblt2XT0wKSx2fXNsdWcoZyxoPXt9KXtjb25zdCB2PXRoaXMuc2VyaWFsaXplKGcpO3JldHVybiB0aGlzLmdldE5leHRTYWZlU2x1Zyh2LGguZHJ5cnVuKX19Y2xhc3MgU2d7Y29uc3RydWN0b3IoZyl7dGhpcy5vcHRpb25zPWd8fHdPLHRo''@;'; put 'put ''aXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBYWix0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRlcmVyPW5ldyBEYmUsdGhpcy5zbHVnZ2VyPW5ldyBM''@;'; put 'put ''YmV9c3RhdGljIHBhcnNlKGcsaCl7cmV0dXJuIG5ldyBTZyhoKS5wYXJzZShnKX1zdGF0aWMgcGFyc2VJbmxpbmUoZyxoKXtyZXR1cm4gbmV3IFNnKGgpLnBhcnNlSW5saW5lKGcpfXBhcnNlKGcsaD0hMCl7bGV0IHksQyxJLGosY2UsX2UsUmUsTmUsS2UsaHQsQnQsJHQsaG4sRG4saXIscHIs''@;'; put 'put ''RXIsQXIsWXIsdj0iIjtjb25zdCBfaT1nLmxlbmd0aDtmb3IoeT0wO3k8X2k7eSsrKWlmKGh0PWdbeV0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW2h0LnR5cGVdJiYo''@;'; put 'put ''WXI9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW2h0LnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSxodCksITEhPT1Zcnx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0u''@;'; put 'put ''aW5jbHVkZXMoaHQudHlwZSkpKXYrPVlyfHwiIjtlbHNlIHN3aXRjaChodC50eXBlKXtjYXNlInNwYWNlIjpjb250aW51ZTtjYXNlImhyIjp2Kz10aGlzLnJlbmRlcmVyLmhyKCk7Y29udGludWU7Y2FzZSJoZWFkaW5nIjp2Kz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGlu''@;'; put 'put ''ZShodC50b2tlbnMpLGh0LmRlcHRoLGtiZSh0aGlzLnBhcnNlSW5saW5lKGh0LnRva2Vucyx0aGlzLnRleHRSZW5kZXJlcikpLHRoaXMuc2x1Z2dlcik7Y29udGludWU7Y2FzZSJjb2RlIjp2Kz10aGlzLnJlbmRlcmVyLmNvZGUoaHQudGV4dCxodC5sYW5nLGh0LmVzY2FwZWQpO2NvbnRpbnVl''@;'; put 'put ''O2Nhc2UidGFibGUiOmZvcihOZT0iIixSZT0iIixqPWh0LmhlYWRlci5sZW5ndGgsQz0wO0M8ajtDKyspUmUrPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUoaHQuaGVhZGVyW0NdLnRva2Vucykse2hlYWRlcjohMCxhbGlnbjpodC5hbGlnbltDXX0pO2ZvcihOZSs9''@;'; put 'put ''dGhpcy5yZW5kZXJlci50YWJsZXJvdyhSZSksS2U9IiIsaj1odC5yb3dzLmxlbmd0aCxDPTA7QzxqO0MrKyl7Zm9yKF9lPWh0LnJvd3NbQ10sUmU9IiIsY2U9X2UubGVuZ3RoLEk9MDtJPGNlO0krKylSZSs9dGhpcy5yZW5kZXJlci50YWJsZWNlbGwodGhpcy5wYXJzZUlubGluZShfZVtJXS50''@;'; put 'put ''b2tlbnMpLHtoZWFkZXI6ITEsYWxpZ246aHQuYWxpZ25bSV19KTtLZSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhSZSl9dis9dGhpcy5yZW5kZXJlci50YWJsZShOZSxLZSk7Y29udGludWU7Y2FzZSJibG9ja3F1b3RlIjpLZT10aGlzLnBhcnNlKGh0LnRva2Vucyksdis9dGhpcy5yZW5kZXJl''@;'; put 'put ''ci5ibG9ja3F1b3RlKEtlKTtjb250aW51ZTtjYXNlImxpc3QiOmZvcihCdD1odC5vcmRlcmVkLCR0PWh0LnN0YXJ0LGhuPWh0Lmxvb3NlLGo9aHQuaXRlbXMubGVuZ3RoLEtlPSIiLEM9MDtDPGo7QysrKWlyPWh0Lml0ZW1zW0NdLHByPWlyLmNoZWNrZWQsRXI9aXIudGFzayxEbj0iIixpci50''@;'; put 'put ''YXNrJiYoQXI9dGhpcy5yZW5kZXJlci5jaGVja2JveChwciksaG4/aXIudG9rZW5zLmxlbmd0aD4wJiYicGFyYWdyYXBoIj09PWlyLnRva2Vuc1swXS50eXBlPyhpci50b2tlbnNbMF0udGV4dD1BcisiICIraXIudG9rZW5zWzBdLnRleHQsaXIudG9rZW5zWzBdLnRva2VucyYmaXIudG9rZW5z''@;'; put 'put ''WzBdLnRva2Vucy5sZW5ndGg+MCYmInRleHQiPT09aXIudG9rZW5zWzBdLnRva2Vuc1swXS50eXBlJiYoaXIudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0PUFyKyIgIitpci50b2tlbnNbMF0udG9rZW5zWzBdLnRleHQpKTppci50b2tlbnMudW5zaGlmdCh7dHlwZToidGV4dCIsdGV4dDpBcn0p''@;'; put 'put ''OkRuKz1BciksRG4rPXRoaXMucGFyc2UoaXIudG9rZW5zLGhuKSxLZSs9dGhpcy5yZW5kZXJlci5saXN0aXRlbShEbixFcixwcik7dis9dGhpcy5yZW5kZXJlci5saXN0KEtlLEJ0LCR0KTtjb250aW51ZTtjYXNlImh0bWwiOnYrPXRoaXMucmVuZGVyZXIuaHRtbChodC50ZXh0KTtjb250aW51''@;'; put 'put ''ZTtjYXNlInBhcmFncmFwaCI6dis9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShodC50b2tlbnMpKTtjb250aW51ZTtjYXNlInRleHQiOmZvcihLZT1odC50b2tlbnM/dGhpcy5wYXJzZUlubGluZShodC50b2tlbnMpOmh0LnRleHQ7eSsxPF9pJiYidGV4dCI9PT1n''@;'; put 'put ''W3krMV0udHlwZTspaHQ9Z1srK3ldLEtlKz0iXG4iKyhodC50b2tlbnM/dGhpcy5wYXJzZUlubGluZShodC50b2tlbnMpOmh0LnRleHQpO3YrPWg/dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgoS2UpOktlO2NvbnRpbnVlO2RlZmF1bHQ6e2NvbnN0IEtpPSdUb2tlbiB3aXRoICInK2h0LnR5cGUr''@;'; put 'put ''JyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKEtpKTt0aHJvdyBuZXcgRXJyb3IoS2kpfX1yZXR1cm4gdn1wYXJzZUlubGluZShnLGgpe2g9aHx8dGhpcy5yZW5kZXJlcjtsZXQgeSxDLEksdj0iIjtjb25zdCBq''@;'; put 'put ''PWcubGVuZ3RoO2Zvcih5PTA7eTxqO3krKylpZihDPWdbeV0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW0MudHlwZV0mJihJPXRoaXMub3B0aW9ucy5leHRlbnNpb25z''@;'; put 'put ''LnJlbmRlcmVyc1tDLnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSxDKSwhMSE9PUl8fCFbImVzY2FwZSIsImh0bWwiLCJsaW5rIiwiaW1hZ2UiLCJzdHJvbmciLCJlbSIsImNvZGVzcGFuIiwiYnIiLCJkZWwiLCJ0ZXh0Il0uaW5jbHVkZXMoQy50eXBlKSkpdis9SXx8IiI7ZWxzZSBzd2l0Y2go''@;'; put 'put ''Qy50eXBlKXtjYXNlImVzY2FwZSI6Y2FzZSJ0ZXh0Ijp2Kz1oLnRleHQoQy50ZXh0KTticmVhaztjYXNlImh0bWwiOnYrPWguaHRtbChDLnRleHQpO2JyZWFrO2Nhc2UibGluayI6dis9aC5saW5rKEMuaHJlZixDLnRpdGxlLHRoaXMucGFyc2VJbmxpbmUoQy50b2tlbnMsaCkpO2JyZWFrO2Nh''@;'; put 'put ''c2UiaW1hZ2UiOnYrPWguaW1hZ2UoQy5ocmVmLEMudGl0bGUsQy50ZXh0KTticmVhaztjYXNlInN0cm9uZyI6dis9aC5zdHJvbmcodGhpcy5wYXJzZUlubGluZShDLnRva2VucyxoKSk7YnJlYWs7Y2FzZSJlbSI6dis9aC5lbSh0aGlzLnBhcnNlSW5saW5lKEMudG9rZW5zLGgpKTticmVhaztj''@;'; put 'put ''YXNlImNvZGVzcGFuIjp2Kz1oLmNvZGVzcGFuKEMudGV4dCk7YnJlYWs7Y2FzZSJiciI6dis9aC5icigpO2JyZWFrO2Nhc2UiZGVsIjp2Kz1oLmRlbCh0aGlzLnBhcnNlSW5saW5lKEMudG9rZW5zLGgpKTticmVhaztkZWZhdWx0Ontjb25zdCBjZT0nVG9rZW4gd2l0aCAiJytDLnR5cGUrJyIg''@;'; put 'put ''dHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKGNlKTt0aHJvdyBuZXcgRXJyb3IoY2UpfX1yZXR1cm4gdn19ZnVuY3Rpb24gV2EoZCxnLGgpe2lmKG51bGw9PWQpdGhyb3cgbmV3IEVycm9yKCJtYXJrZWQoKTogaW5w''@;'; put 'put ''dXQgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZCBvciBudWxsIik7aWYoInN0cmluZyIhPXR5cGVvZiBkKXRocm93IG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpKyIsIHN0cmluZyBleHBlY3Rl''@;'; put 'put ''ZCIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBnJiYoaD1nLGc9bnVsbCksRWJlKGc9Zzgoe30sV2EuZGVmYXVsdHMsZ3x8e30pKSxoKXtjb25zdCB5PWcuaGlnaGxpZ2h0O2xldCBDO3RyeXtDPVR2LmxleChkLGcpfWNhdGNoKGNlKXtyZXR1cm4gaChjZSl9Y29uc3QgST1mdW5jdGlvbihjZSl7''@;'; put 'put ''bGV0IF9lO2lmKCFjZSl0cnl7Zy53YWxrVG9rZW5zJiZXYS53YWxrVG9rZW5zKEMsZy53YWxrVG9rZW5zKSxfZT1TZy5wYXJzZShDLGcpfWNhdGNoKFJlKXtjZT1SZX1yZXR1cm4gZy5oaWdobGlnaHQ9eSxjZT9oKGNlKTpoKG51bGwsX2UpfTtpZigheXx8eS5sZW5ndGg8M3x8KGRlbGV0ZSBn''@;'; put 'put ''LmhpZ2hsaWdodCwhQy5sZW5ndGgpKXJldHVybiBJKCk7bGV0IGo9MDtyZXR1cm4gV2Eud2Fsa1Rva2VucyhDLGZ1bmN0aW9uKGNlKXsiY29kZSI9PT1jZS50eXBlJiYoaisrLHNldFRpbWVvdXQoKCk9Pnt5KGNlLnRleHQsY2UubGFuZyxmdW5jdGlvbihfZSxSZSl7aWYoX2UpcmV0dXJuIEko''@;'; put 'put ''X2UpO251bGwhPVJlJiZSZSE9PWNlLnRleHQmJihjZS50ZXh0PVJlLGNlLmVzY2FwZWQ9ITApLGotLSwwPT09aiYmSSgpfSl9LDApKX0pLHZvaWQoMD09PWomJkkoKSl9ZnVuY3Rpb24gdih5KXtpZih5Lm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRwczovL2dpdGh1Yi5j''@;'; put 'put ''b20vbWFya2VkanMvbWFya2VkLiIsZy5zaWxlbnQpcmV0dXJuIjxwPkFuIGVycm9yIG9jY3VycmVkOjwvcD48cHJlPiIrbmYoeS5tZXNzYWdlKyIiLCEwKSsiPC9wcmU+Ijt0aHJvdyB5fXRyeXtjb25zdCB5PVR2LmxleChkLGcpO2lmKGcud2Fsa1Rva2Vucyl7aWYoZy5hc3luYylyZXR1cm4g''@;'; put 'put ''UHJvbWlzZS5hbGwoV2Eud2Fsa1Rva2Vucyh5LGcud2Fsa1Rva2VucykpLnRoZW4oKCk9PlNnLnBhcnNlKHksZykpLmNhdGNoKHYpO1dhLndhbGtUb2tlbnMoeSxnLndhbGtUb2tlbnMpfXJldHVybiBTZy5wYXJzZSh5LGcpfWNhdGNoKHkpe3YoeSl9fVdhLm9wdGlvbnM9V2Euc2V0T3B0aW9u''@;'; put 'put ''cz1mdW5jdGlvbihkKXtyZXR1cm4gZzgoV2EuZGVmYXVsdHMsZCksZnVuY3Rpb24gZVplKGQpe3dPPWR9KFdhLmRlZmF1bHRzKSxXYX0sV2EuZ2V0RGVmYXVsdHM9ZnVuY3Rpb24gX2JlKCl7cmV0dXJue2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdm''@;'; put 'put ''bTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0TGlzdHM6ITEsc21hcnR5''@;'; put 'put ''cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfX0sV2EuZGVmYXVsdHM9d08sV2EudXNlPWZ1bmN0aW9uKC4uLmQpe2NvbnN0IGc9Zzgoe30sLi4uZCksaD1XYS5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fTts''@;'; put 'put ''ZXQgdjtkLmZvckVhY2goeT0+e2lmKHkuZXh0ZW5zaW9ucyYmKHY9ITAseS5leHRlbnNpb25zLmZvckVhY2goQz0+e2lmKCFDLm5hbWUpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbmFtZSByZXF1aXJlZCIpO2lmKEMucmVuZGVyZXIpe2NvbnN0IEk9aC5yZW5kZXJlcnM/aC5yZW5kZXJl''@;'; put 'put ''cnNbQy5uYW1lXTpudWxsO2gucmVuZGVyZXJzW0MubmFtZV09ST9mdW5jdGlvbiguLi5qKXtsZXQgY2U9Qy5yZW5kZXJlci5hcHBseSh0aGlzLGopO3JldHVybiExPT09Y2UmJihjZT1JLmFwcGx5KHRoaXMsaikpLGNlfTpDLnJlbmRlcmVyfWlmKEMudG9rZW5pemVyKXtpZighQy5sZXZlbHx8''@;'; put 'put ''ImJsb2NrIiE9PUMubGV2ZWwmJiJpbmxpbmUiIT09Qy5sZXZlbCl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBsZXZlbCBtdXN0IGJlICdibG9jaycgb3IgJ2lubGluZSciKTtoW0MubGV2ZWxdP2hbQy5sZXZlbF0udW5zaGlmdChDLnRva2VuaXplcik6aFtDLmxldmVsXT1bQy50b2tlbml6''@;'; put 'put ''ZXJdLEMuc3RhcnQmJigiYmxvY2siPT09Qy5sZXZlbD9oLnN0YXJ0QmxvY2s/aC5zdGFydEJsb2NrLnB1c2goQy5zdGFydCk6aC5zdGFydEJsb2NrPVtDLnN0YXJ0XToiaW5saW5lIj09PUMubGV2ZWwmJihoLnN0YXJ0SW5saW5lP2guc3RhcnRJbmxpbmUucHVzaChDLnN0YXJ0KTpoLnN0YXJ0''@;'; put 'put ''SW5saW5lPVtDLnN0YXJ0XSkpfUMuY2hpbGRUb2tlbnMmJihoLmNoaWxkVG9rZW5zW0MubmFtZV09Qy5jaGlsZFRva2Vucyl9KSkseS5yZW5kZXJlcil7Y29uc3QgQz1XYS5kZWZhdWx0cy5yZW5kZXJlcnx8bmV3IFhaO2Zvcihjb25zdCBJIGluIHkucmVuZGVyZXIpe2NvbnN0IGo9Q1tJXTtD''@;'; put 'put ''W0ldPSguLi5jZSk9PntsZXQgX2U9eS5yZW5kZXJlcltJXS5hcHBseShDLGNlKTtyZXR1cm4hMT09PV9lJiYoX2U9ai5hcHBseShDLGNlKSksX2V9fWcucmVuZGVyZXI9Q31pZih5LnRva2VuaXplcil7Y29uc3QgQz1XYS5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBYaGU7Zm9yKGNvbnN0IEkg''@;'; put 'put ''aW4geS50b2tlbml6ZXIpe2NvbnN0IGo9Q1tJXTtDW0ldPSguLi5jZSk9PntsZXQgX2U9eS50b2tlbml6ZXJbSV0uYXBwbHkoQyxjZSk7cmV0dXJuITE9PT1fZSYmKF9lPWouYXBwbHkoQyxjZSkpLF9lfX1nLnRva2VuaXplcj1DfWlmKHkud2Fsa1Rva2Vucyl7Y29uc3QgQz1XYS5kZWZhdWx0''@;'; put 'put ''cy53YWxrVG9rZW5zO2cud2Fsa1Rva2Vucz1mdW5jdGlvbihJKXtsZXQgaj1bXTtyZXR1cm4gai5wdXNoKHkud2Fsa1Rva2Vucy5jYWxsKHRoaXMsSSkpLEMmJihqPWouY29uY2F0KEMuY2FsbCh0aGlzLEkpKSksan19diYmKGcuZXh0ZW5zaW9ucz1oKSxXYS5zZXRPcHRpb25zKGcpfSl9LFdh''@;'; put 'put ''LndhbGtUb2tlbnM9ZnVuY3Rpb24oZCxnKXtsZXQgaD1bXTtmb3IoY29uc3QgdiBvZiBkKXN3aXRjaChoPWguY29uY2F0KGcuY2FsbChXYSx2KSksdi50eXBlKXtjYXNlInRhYmxlIjpmb3IoY29uc3QgeSBvZiB2LmhlYWRlciloPWguY29uY2F0KFdhLndhbGtUb2tlbnMoeS50b2tlbnMsZykp''@;'; put 'put ''O2Zvcihjb25zdCB5IG9mIHYucm93cylmb3IoY29uc3QgQyBvZiB5KWg9aC5jb25jYXQoV2Eud2Fsa1Rva2VucyhDLnRva2VucyxnKSk7YnJlYWs7Y2FzZSJsaXN0IjpoPWguY29uY2F0KFdhLndhbGtUb2tlbnModi5pdGVtcyxnKSk7YnJlYWs7ZGVmYXVsdDpXYS5kZWZhdWx0cy5leHRlbnNp''@;'; put 'put ''b25zJiZXYS5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zJiZXYS5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW3YudHlwZV0/V2EuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1t2LnR5cGVdLmZvckVhY2goZnVuY3Rpb24oeSl7aD1oLmNvbmNhdChXYS53YWxr''@;'; put 'put ''VG9rZW5zKHZbeV0sZykpfSk6di50b2tlbnMmJihoPWguY29uY2F0KFdhLndhbGtUb2tlbnModi50b2tlbnMsZykpKX1yZXR1cm4gaH0sV2EucGFyc2VJbmxpbmU9ZnVuY3Rpb24oZCxnKXtpZihudWxsPT1kKXRocm93IG5ldyBFcnJvcigibWFya2VkLnBhcnNlSW5saW5lKCk6IGlucHV0IHBh''@;'; put 'put ''cmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpO2lmKCJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBuZXcgRXJyb3IoIm1hcmtlZC5wYXJzZUlubGluZSgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSAiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKSsiLCBzdHJpbmcg''@;'; put 'put ''ZXhwZWN0ZWQiKTtFYmUoZz1nOCh7fSxXYS5kZWZhdWx0cyxnfHx7fSkpO3RyeXtjb25zdCBoPVR2LmxleElubGluZShkLGcpO3JldHVybiBnLndhbGtUb2tlbnMmJldhLndhbGtUb2tlbnMoaCxnLndhbGtUb2tlbnMpLFNnLnBhcnNlSW5saW5lKGgsZyl9Y2F0Y2goaCl7aWYoaC5tZXNzYWdl''@;'; put 'put ''Kz0iXG5QbGVhc2UgcmVwb3J0IHRoaXMgdG8gaHR0cHM6Ly9naXRodWIuY29tL21hcmtlZGpzL21hcmtlZC4iLGcuc2lsZW50KXJldHVybiI8cD5BbiBlcnJvciBvY2N1cnJlZDo8L3A+PHByZT4iK25mKGgubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7dGhyb3cgaH19LFdhLlBhcnNlcj1TZyxX''@;'; put 'put ''YS5wYXJzZXI9U2cucGFyc2UsV2EuUmVuZGVyZXI9WFosV2EuVGV4dFJlbmRlcmVyPURiZSxXYS5MZXhlcj1UdixXYS5sZXhlcj1Udi5sZXgsV2EuVG9rZW5pemVyPVhoZSxXYS5TbHVnZ2VyPUxiZSxXYS5wYXJzZT1XYTtjb25zdCB2WmU9WyIqIl07bGV0IEtoZT0oKCk9PntjbGFzcyBke2Nv''@;'; put 'put ''bnN0cnVjdG9yKCl7dGhpcy5fYnV0dG9uQ2xpY2skPW5ldyAkZSx0aGlzLmNvcGllZCQ9dGhpcy5fYnV0dG9uQ2xpY2skLnBpcGUoYWgoKCk9Pm5yKFYwKCEwKSxmdW5jdGlvbiBYamUoZD0wLGcsaCl7bGV0IHY9LTE7cmV0dXJuIGJiZShnKT92PU51bWJlcihnKTwxPzE6TnVtYmVyKGcpOnl0''@;'; put 'put ''KGcpJiYoaD1nKSx5dChoKXx8KGg9RlYpLG5ldyBGKHk9Pntjb25zdCBDPWJiZShkKT9kOitkLWgubm93KCk7cmV0dXJuIGguc2NoZWR1bGUoS2plLEMse2luZGV4OjAscGVyaW9kOnYsc3Vic2NyaWJlcjp5fSl9KX0oM2UzKS5waXBlKHo2KCExKSkpKSxmdW5jdGlvbiBiWChkLGcpe3JldHVy''@;'; put 'put ''biBoPT5oLmxpZnQobmV3IF9YKGQsZykpfSgpLGZ1bmN0aW9uICRqZShkLGcsaCl7bGV0IHY7cmV0dXJuIHY9ZCYmIm9iamVjdCI9PXR5cGVvZiBkP2Q6e2J1ZmZlclNpemU6ZCx3aW5kb3dUaW1lOmcscmVmQ291bnQ6ITEsc2NoZWR1bGVyOmh9LHk9PnkubGlmdChmdW5jdGlvbiBxamUoe2J1''@;'; put 'put ''ZmZlclNpemU6ZD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksd2luZG93VGltZTpnPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyZWZDb3VudDpoLHNjaGVkdWxlcjp2fSl7bGV0IHksSSxDPTAsaj0hMSxjZT0hMTtyZXR1cm4gZnVuY3Rpb24oUmUpe2xldCBOZTtDKyssIXl8fGo/KGo9ITEs''@;'; put 'put ''eT1uZXcgaTgoZCxnLHYpLE5lPXkuc3Vic2NyaWJlKHRoaXMpLEk9UmUuc3Vic2NyaWJlKHtuZXh0KEtlKXt5Lm5leHQoS2UpfSxlcnJvcihLZSl7aj0hMCx5LmVycm9yKEtlKX0sY29tcGxldGUoKXtjZT0hMCxJPXZvaWQgMCx5LmNvbXBsZXRlKCl9fSksY2UmJihJPXZvaWQgMCkpOk5lPXku''@;'; put 'put ''c3Vic2NyaWJlKHRoaXMpLHRoaXMuYWRkKCgpPT57Qy0tLE5lLnVuc3Vic2NyaWJlKCksTmU9dm9pZCAwLEkmJiFjZSYmaCYmMD09PUMmJihJLnVuc3Vic2NyaWJlKCksST12b2lkIDAseT12b2lkIDApfSl9fSh2KSl9KDEpKSx0aGlzLmNvcGllZFRleHQkPXRoaXMuY29waWVkJC5waXBlKGN5''@;'; put 'put ''KCExKSxwdChoPT5oPyJDb3BpZWQiOiJDb3B5IikpfW9uQ29weVRvQ2xpcGJvYXJkQ2xpY2soKXt0aGlzLl9idXR0b25DbGljayQubmV4dCgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6''@;'; put 'put ''W1sibWFya2Rvd24tY2xpcGJvYXJkIl1dLGRlY2xzOjQsdmFyczo3LGNvbnN0czpbWzEsIm1hcmtkb3duLWNsaXBib2FyZC1idXR0b24iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiYnV0dG9uIiwwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHYub25Db3B5VG9DbGlwYm9hcmRDbGljaygpfSksWmUoMSwiYXN5bmMiKSxXdCgyKSxaZSgzLCJhc3luYyIpLGl0KCkpLDImaCYmKEhpKCJjb3BpZWQiLFN0KDEsMyx2LmNvcGllZCQpKSxzdCgyKSxqaShTdCgzLDUsdi5jb3BpZWRUZXh0JCkpKX0sZGVwZW5kZW5jaWVzOltEQ10sZW5jYXBz''@;'; put 'put ''dWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCk7Y2xhc3Mgd1ple312YXIgS1o9KCgpPT4oZnVuY3Rpb24oZCl7ZC5Db21tYW5kTGluZT0iY29tbWFuZC1saW5lIixkLkxpbmVIaWdobGlnaHQ9ImxpbmUtaGlnaGxpZ2h0IixkLkxpbmVOdW1iZXJzPSJsaW5lLW51bWJlcnMifShL''@;'; put 'put ''Wnx8KEtaPXt9KSksS1opKSgpO2NsYXNzIF9aZXt9Y29uc3QgT2JlPW5ldyBPdCgiU0VDVVJJVFlfQ09OVEVYVCIpO2xldCAkaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksail7dGhpcy5wbGF0Zm9ybT1oLHRoaXMuc2VjdXJpdHlDb250ZXh0PXYsdGhpcy5odHRwPXks''@;'; put 'put ''dGhpcy5jbGlwYm9hcmRPcHRpb25zPUMsdGhpcy5zYW5pdGl6ZXI9aix0aGlzLkRFRkFVTFRfUEFSU0VfT1BUSU9OUz17ZGVjb2RlSHRtbDohMSxpbmxpbmU6ITEsZW1vamk6ITEsbWVybWFpZDohMSxtYXJrZWRPcHRpb25zOnZvaWQgMH0sdGhpcy5ERUZBVUxUX1JFTkRFUl9PUFRJT05TPXtj''@;'; put 'put ''bGlwYm9hcmQ6ITEsY2xpcGJvYXJkT3B0aW9uczp2b2lkIDAsa2F0ZXg6ITEsa2F0ZXhPcHRpb25zOnZvaWQgMCxtZXJtYWlkOiExLG1lcm1haWRPcHRpb25zOnZvaWQgMH0sdGhpcy5ERUZBVUxUX01BUktFRF9PUFRJT05TPXtyZW5kZXJlcjpuZXcgWFp9LHRoaXMuREVGQVVMVF9LQVRFWF9P''@;'; put 'put ''UFRJT05TPXtkZWxpbWl0ZXJzOlt7bGVmdDoiJCQiLHJpZ2h0OiIkJCIsZGlzcGxheTohMH0se2xlZnQ6IiQiLHJpZ2h0OiIkIixkaXNwbGF5OiExfSx7bGVmdDoiXFwoIixyaWdodDoiXFwpIixkaXNwbGF5OiExfSx7bGVmdDoiXFxiZWdpbntlcXVhdGlvbn0iLHJpZ2h0OiJcXGVuZHtlcXVh''@;'; put 'put ''dGlvbn0iLGRpc3BsYXk6ITB9LHtsZWZ0OiJcXGJlZ2lue2FsaWdufSIscmlnaHQ6IlxcZW5ke2FsaWdufSIsZGlzcGxheTohMH0se2xlZnQ6IlxcYmVnaW57YWxpZ25hdH0iLHJpZ2h0OiJcXGVuZHthbGlnbmF0fSIsZGlzcGxheTohMH0se2xlZnQ6IlxcYmVnaW57Z2F0aGVyfSIscmlnaHQ6''@;'; put 'put ''IlxcZW5ke2dhdGhlcn0iLGRpc3BsYXk6ITB9LHtsZWZ0OiJcXGJlZ2lue0NEfSIscmlnaHQ6IlxcZW5ke0NEfSIsZGlzcGxheTohMH0se2xlZnQ6IlxcWyIscmlnaHQ6IlxcXSIsZGlzcGxheTohMH1dfSx0aGlzLkRFRkFVTFRfTUVSTUFJRF9PUFRJT05TPXtzdGFydE9uTG9hZDohMX0sdGhp''@;'; put 'put ''cy5ERUZBVUxUX0NMSVBCT0FSRF9PUFRJT05TPXtidXR0b25Db21wb25lbnQ6dm9pZCAwfSx0aGlzLl9yZWxvYWQkPW5ldyAkZSx0aGlzLnJlbG9hZCQ9dGhpcy5fcmVsb2FkJC5hc09ic2VydmFibGUoKSx0aGlzLm9wdGlvbnM9SX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9vcHRpb25z''@;'; put 'put ''fXNldCBvcHRpb25zKGgpe3RoaXMuX29wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuREVGQVVMVF9NQVJLRURfT1BUSU9OUyksaCl9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5yZW5kZXJlcn1zZXQgcmVuZGVyZXIoaCl7dGhpcy5vcHRpb25z''@;'; put 'put ''LnJlbmRlcmVyPWh9cGFyc2UoaCx2PXRoaXMuREVGQVVMVF9QQVJTRV9PUFRJT05TKXtjb25zdHtkZWNvZGVIdG1sOnksaW5saW5lOkMsZW1vamk6SSxtZXJtYWlkOmosbWFya2VkT3B0aW9uczpjZT10aGlzLm9wdGlvbnN9PXY7aiYmKHRoaXMucmVuZGVyZXI9dGhpcy5leHRlbmRSZW5kZXJl''@;'; put 'put ''cihjZS5yZW5kZXJlcnx8bmV3IFhaKSk7Y29uc3QgX2U9dGhpcy50cmltSW5kZW50YXRpb24oaCksUmU9eT90aGlzLmRlY29kZUh0bWwoX2UpOl9lLE5lPUk/dGhpcy5wYXJzZUVtb2ppKFJlKTpSZSxLZT10aGlzLnBhcnNlTWFya2VkKE5lLGNlLEMpO3JldHVybiB0aGlzLnNhbml0aXplci5z''@;'; put 'put ''YW5pdGl6ZSh0aGlzLnNlY3VyaXR5Q29udGV4dCxLZSl8fCIifXJlbmRlcihoLHY9dGhpcy5ERUZBVUxUX1JFTkRFUl9PUFRJT05TLHkpe2NvbnN0e2NsaXBib2FyZDpDLGNsaXBib2FyZE9wdGlvbnM6SSxrYXRleDpqLGthdGV4T3B0aW9uczpjZSxtZXJtYWlkOl9lLG1lcm1haWRPcHRpb25z''@;'; put 'put ''OlJlfT12O0MmJnRoaXMucmVuZGVyQ2xpcGJvYXJkKGgseSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLkRFRkFVTFRfQ0xJUEJPQVJEX09QVElPTlMpLHRoaXMuY2xpcGJvYXJkT3B0aW9ucyksSSkpLGomJnRoaXMucmVuZGVyS2F0ZXgoaCxPYmpl''@;'; put 'put ''Y3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5ERUZBVUxUX0tBVEVYX09QVElPTlMpLGNlKSksX2UmJnRoaXMucmVuZGVyTWVybWFpZChoLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLkRFRkFVTFRfTUVSTUFJRF9PUFRJT05TKSxSZSkpLHRoaXMuaGlnaGxpZ2h0''@;'; put 'put ''KGgpfXJlbG9hZCgpe3RoaXMuX3JlbG9hZCQubmV4dCgpfWdldFNvdXJjZShoKXtpZighdGhpcy5odHRwKXRocm93IG5ldyBFcnJvcigiW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgYHNyY2AgYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogcGFzcyB0aGUgYEh0dHBDbGllbnRgIGFzIGEg''@;'; put 'put ''cGFyYW1ldGVyIG9mIHRoZSBgZm9yUm9vdGAgbWV0aG9kLiBTZWUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uIik7cmV0dXJuIHRoaXMuaHR0cC5nZXQoaCx7cmVzcG9uc2VUeXBlOiJ0ZXh0In0pLnBpcGUocHQodj0+dGhpcy5oYW5kbGVFeHRlbnNpb24oaCx2KSkpfWhpZ2hsaWdodCho''@;'; put 'put ''KXtpZighYWwodGhpcy5wbGF0Zm9ybSl8fCJ1bmRlZmluZWQiPT10eXBlb2YgUHJpc218fHZvaWQgMD09PVByaXNtLmhpZ2hsaWdodEFsbFVuZGVyKXJldHVybjtofHwoaD1kb2N1bWVudCk7Y29uc3Qgdj1oLnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSBjb2RlOm5vdChbY2xhc3MqPSJsYW5ndWFn''@;'; put 'put ''ZS0iXSknKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHYseT0+eS5jbGFzc0xpc3QuYWRkKCJsYW5ndWFnZS1ub25lIikpLFByaXNtLmhpZ2hsaWdodEFsbFVuZGVyKGgpfWRlY29kZUh0bWwoaCl7aWYoIWFsKHRoaXMucGxhdGZvcm0pKXJldHVybiBoO2NvbnN0IHY9ZG9jdW1lbnQu''@;'; put 'put ''Y3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gdi5pbm5lckhUTUw9aCx2LnZhbHVlfWV4dGVuZFJlbmRlcmVyKGgpe2NvbnN0IHY9aDtpZighMD09PXYuXHUwMjc1Tmd4TWFya2Rvd25SZW5kZXJlckV4dGVuZGVkKXJldHVybiBoO2NvbnN0IHk9aC5jb2RlO3JldHVybiBoLmNvZGU9''@;'; put 'put ''ZnVuY3Rpb24oQyxJLGope3JldHVybiJtZXJtYWlkIj09PUk/YDxkaXYgY2xhc3M9Im1lcm1haWQiPiR7Q308L2Rpdj5gOnkuY2FsbCh0aGlzLEMsSSxqKX0sdi5cdTAyNzVOZ3hNYXJrZG93blJlbmRlcmVyRXh0ZW5kZWQ9ITAsaH1oYW5kbGVFeHRlbnNpb24oaCx2KXtjb25zdCB5PWgubGFz''@;'; put 'put ''dEluZGV4T2YoIjovLyIpLEM9eT4tMT9oLnN1YnN0cmluZyh5KzQpOmgsST1DLmxhc3RJbmRleE9mKCIvIiksaj1JPi0xP0Muc3Vic3RyaW5nKEkrMSkuc3BsaXQoIj8iKVswXToiIixjZT1qLmxhc3RJbmRleE9mKCIuIiksX2U9Y2U+LTE/ai5zdWJzdHJpbmcoY2UrMSk6IiI7cmV0dXJuIF9l''@;'; put 'put ''JiYibWQiIT09X2U/ImBgYCIrX2UrIlxuIit2KyJcbmBgYCI6dn1wYXJzZU1hcmtlZChoLHYseT0hMSl7cmV0dXJuIGFsKHRoaXMucGxhdGZvcm0pP3k/V2EucGFyc2VJbmxpbmUoaCx2KTpXYS5wYXJzZShoLHYpOmh9cGFyc2VFbW9qaShoKXtpZighYWwodGhpcy5wbGF0Zm9ybSkpcmV0dXJu''@;'; put 'put ''IGg7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBqb3lwaXhlbHN8fHZvaWQgMD09PWpveXBpeGVscy5zaG9ydG5hbWVUb1VuaWNvZGUpdGhyb3cgbmV3IEVycm9yKCJbbmd4LW1hcmtkb3duXSBXaGVuIHVzaW5nIHRoZSBgZW1vamlgIGF0dHJpYnV0ZSB5b3UgKmhhdmUgdG8qIGluY2x1ZGUgRW1v''@;'; put 'put ''amktVG9vbGtpdCBmaWxlcyB0byBgYW5ndWxhci5qc29uYCBvciB1c2UgaW1wb3J0cy4gU2VlIFJFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiIpO3JldHVybiBqb3lwaXhlbHMuc2hvcnRuYW1lVG9Vbmljb2RlKGgpfXJlbmRlckthdGV4KGgsdil7aWYoYWwodGhpcy5wbGF0Zm9ybSkpe2lm''@;'; put 'put ''KCJ1bmRlZmluZWQiPT10eXBlb2Yga2F0ZXh8fCJ1bmRlZmluZWQiPT10eXBlb2YgcmVuZGVyTWF0aEluRWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoIltuZ3gtbWFya2Rvd25dIFdoZW4gdXNpbmcgdGhlIGBrYXRleGAgYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogaW5jbHVkZSBLYVRlWCBmaWxl''@;'; put 'put ''cyB0byBgYW5ndWxhci5qc29uYCBvciB1c2UgaW1wb3J0cy4gU2VlIFJFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiIpO3JlbmRlck1hdGhJbkVsZW1lbnQoaCx2KX19cmVuZGVyQ2xpcGJvYXJkKGgsdix5KXtpZighYWwodGhpcy5wbGF0Zm9ybSkpcmV0dXJuO2lmKCJ1bmRlZmluZWQiPT10''@;'; put 'put ''eXBlb2YgQ2xpcGJvYXJkSlMpdGhyb3cgbmV3IEVycm9yKCJbbmd4LW1hcmtkb3duXSBXaGVuIHVzaW5nIHRoZSBgY2xpcGJvYXJkYCBhdHRyaWJ1dGUgeW91ICpoYXZlIHRvKiBpbmNsdWRlIENsaXBib2FyZCBmaWxlcyB0byBgYW5ndWxhci5qc29uYCBvciB1c2UgaW1wb3J0cy4gU2VlIFJF''@;'; put 'put ''QURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiIpO2lmKCF2KXRocm93IG5ldyBFcnJvcigiW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgYGNsaXBib2FyZGAgYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogcHJvdmlkZSB0aGUgYHZpZXdDb250YWluZXJSZWZgIHBhcmFtZXRlciB0byBgTWFy''@;'; put 'put ''a2Rvd25TZXJ2aWNlLnJlbmRlcigpYCBmdW5jdGlvbiIpO2NvbnN0e2J1dHRvbkNvbXBvbmVudDpDLGJ1dHRvblRlbXBsYXRlOkl9PXksaj1oLnF1ZXJ5U2VsZWN0b3JBbGwoInByZSIpO2ZvcihsZXQgY2U9MDtjZTxqLmxlbmd0aDtjZSsrKXtjb25zdCBfZT1qLml0ZW0oY2UpLFJlPWRvY3Vt''@;'; put 'put ''ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1JlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsX2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoUmUsX2UpLFJlLmFwcGVuZENoaWxkKF9lKTtjb25zdCBOZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsZXQgS2UsaHQ7TmUuc3R5bGUu''@;'; put 'put ''cG9zaXRpb249ImFic29sdXRlIixOZS5zdHlsZS50b3A9Ii41ZW0iLE5lLnN0eWxlLnJpZ2h0PSIuNWVtIixOZS5zdHlsZS5vcGFjaXR5PSIwIixOZS5zdHlsZS50cmFuc2l0aW9uPSJvcGFjaXR5IDI1MG1zIGVhc2Utb3V0IixSZS5pbnNlcnRBZGphY2VudEVsZW1lbnQoImJlZm9yZWVuZCIs''@;'; put 'put ''TmUpLF9lLm9ubW91c2VvdmVyPSgpPT5OZS5zdHlsZS5vcGFjaXR5PSIxIixfZS5vbm1vdXNlb3V0PSgpPT5OZS5zdHlsZS5vcGFjaXR5PSIwIixLZT1DP3YuY3JlYXRlQ29tcG9uZW50KEMpLmhvc3RWaWV3Okk/di5jcmVhdGVFbWJlZGRlZFZpZXcoSSk6di5jcmVhdGVDb21wb25lbnQoS2hl''@;'; put 'put ''KS5ob3N0VmlldyxLZS5yb290Tm9kZXMuZm9yRWFjaChCdD0+e0J0Lm9ubW91c2VvdmVyPSgpPT5OZS5zdHlsZS5vcGFjaXR5PSIxIixOZS5hcHBlbmRDaGlsZChCdCksaHQ9bmV3IENsaXBib2FyZEpTKEJ0LHt0ZXh0OigpPT5fZS5pbm5lclRleHR9KX0pLEtlLm9uRGVzdHJveSgoKT0+aHQu''@;'; put 'put ''ZGVzdHJveSgpKX19cmVuZGVyTWVybWFpZChoLHY9dGhpcy5ERUZBVUxUX01FUk1BSURfT1BUSU9OUyl7aWYoIWFsKHRoaXMucGxhdGZvcm0pKXJldHVybjtpZigidW5kZWZpbmVkIj09dHlwZW9mIG1lcm1haWR8fHZvaWQgMD09PW1lcm1haWQuaW5pdCl0aHJvdyBuZXcgRXJyb3IoIltuZ3gt''@;'; put 'put ''bWFya2Rvd25dIFdoZW4gdXNpbmcgdGhlIGBtZXJtYWlkYCBhdHRyaWJ1dGUgeW91ICpoYXZlIHRvKiBpbmNsdWRlIE1lcm1haWQgZmlsZXMgdG8gYGFuZ3VsYXIuanNvbmAgb3IgdXNlIGltcG9ydHMuIFNlZSBSRUFETUUgZm9yIG1vcmUgaW5mb3JtYXRpb24iKTtjb25zdCB5PWgucXVlcnlT''@;'; put 'put ''ZWxlY3RvckFsbCgiLm1lcm1haWQiKTswIT09eS5sZW5ndGgmJihtZXJtYWlkLmluaXRpYWxpemUodiksbWVybWFpZC5pbml0KHkpKX10cmltSW5kZW50YXRpb24oaCl7aWYoIWgpcmV0dXJuIiI7bGV0IHY7cmV0dXJuIGguc3BsaXQoIlxuIikubWFwKHk9PntsZXQgQz12O3JldHVybiB5Lmxl''@;'; put 'put ''bmd0aD4wJiYoQz1pc05hTihDKT95LnNlYXJjaCgvXFN8JC8pOk1hdGgubWluKHkuc2VhcmNoKC9cU3wkLyksQykpLGlzTmFOKHYpJiYodj1DKSxDP3kuc3Vic3RyaW5nKEMpOnl9KS5qb2luKCJcbiIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShF''@;'; put 'put ''aShFMiksRWkoT2JlKSxFaShtTiw4KSxFaSh3WmUsOCksRWkoX1plLDgpLEVpKHNIKSl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksUmJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuZWxlbWVudD1oLHRoaXMubWFy''@;'; put 'put ''a2Rvd25TZXJ2aWNlPXYsdGhpcy52aWV3Q29udGFpbmVyUmVmPXksdGhpcy5lcnJvcj1uZXcgZm4sdGhpcy5sb2FkPW5ldyBmbix0aGlzLnJlYWR5PW5ldyBmbix0aGlzLl9jb21tYW5kTGluZT0hMSx0aGlzLl9jbGlwYm9hcmQ9ITEsdGhpcy5fZW1vamk9ITEsdGhpcy5faW5saW5lPSExLHRo''@;'; put 'put ''aXMuX2thdGV4PSExLHRoaXMuX2xpbmVIaWdobGlnaHQ9ITEsdGhpcy5fbGluZU51bWJlcnM9ITEsdGhpcy5fbWVybWFpZD0hMSx0aGlzLmRlc3Ryb3llZCQ9bmV3ICRlfWdldCBpbmxpbmUoKXtyZXR1cm4gdGhpcy5faW5saW5lfXNldCBpbmxpbmUoaCl7dGhpcy5faW5saW5lPXRoaXMuY29l''@;'; put 'put ''cmNlQm9vbGVhblByb3BlcnR5KGgpfWdldCBjbGlwYm9hcmQoKXtyZXR1cm4gdGhpcy5fY2xpcGJvYXJkfXNldCBjbGlwYm9hcmQoaCl7dGhpcy5fY2xpcGJvYXJkPXRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KGgpfWdldCBlbW9qaSgpe3JldHVybiB0aGlzLl9lbW9qaX1zZXQgZW1vamko''@;'; put 'put ''aCl7dGhpcy5fZW1vamk9dGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkoaCl9Z2V0IGthdGV4KCl7cmV0dXJuIHRoaXMuX2thdGV4fXNldCBrYXRleChoKXt0aGlzLl9rYXRleD10aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShoKX1nZXQgbWVybWFpZCgpe3JldHVybiB0aGlzLl9tZXJtYWlk''@;'; put 'put ''fXNldCBtZXJtYWlkKGgpe3RoaXMuX21lcm1haWQ9dGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkoaCl9Z2V0IGxpbmVIaWdobGlnaHQoKXtyZXR1cm4gdGhpcy5fbGluZUhpZ2hsaWdodH1zZXQgbGluZUhpZ2hsaWdodChoKXt0aGlzLl9saW5lSGlnaGxpZ2h0PXRoaXMuY29lcmNlQm9vbGVh''@;'; put 'put ''blByb3BlcnR5KGgpfWdldCBsaW5lTnVtYmVycygpe3JldHVybiB0aGlzLl9saW5lTnVtYmVyc31zZXQgbGluZU51bWJlcnMoaCl7dGhpcy5fbGluZU51bWJlcnM9dGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkoaCl9Z2V0IGNvbW1hbmRMaW5lKCl7cmV0dXJuIHRoaXMuX2NvbW1hbmRMaW5l''@;'; put 'put ''fXNldCBjb21tYW5kTGluZShoKXt0aGlzLl9jb21tYW5kTGluZT10aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShoKX1uZ09uQ2hhbmdlcygpe3RoaXMubG9hZENvbnRlbnQoKX1sb2FkQ29udGVudCgpe251bGw9PXRoaXMuZGF0YT9udWxsPT10aGlzLnNyY3x8dGhpcy5oYW5kbGVTcmMoKTp0''@;'; put 'put ''aGlzLmhhbmRsZURhdGEoKX1uZ0FmdGVyVmlld0luaXQoKXshdGhpcy5kYXRhJiYhdGhpcy5zcmMmJnRoaXMuaGFuZGxlVHJhbnNjbHVzaW9uKCksdGhpcy5tYXJrZG93blNlcnZpY2UucmVsb2FkJC5waXBlKG44KHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKT0+dGhpcy5sb2FkQ29u''@;'; put 'put ''dGVudCgpKX1uZ09uRGVzdHJveSgpe3RoaXMuZGVzdHJveWVkJC5uZXh0KCksdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCl9cmVuZGVyKGgsdj0hMSl7Y29uc3QgQz17Y2xpcGJvYXJkOnRoaXMuY2xpcGJvYXJkLGNsaXBib2FyZE9wdGlvbnM6e2J1dHRvbkNvbXBvbmVudDp0aGlzLmNsaXBi''@;'; put 'put ''b2FyZEJ1dHRvbkNvbXBvbmVudCxidXR0b25UZW1wbGF0ZTp0aGlzLmNsaXBib2FyZEJ1dHRvblRlbXBsYXRlfSxrYXRleDp0aGlzLmthdGV4LGthdGV4T3B0aW9uczp0aGlzLmthdGV4T3B0aW9ucyxtZXJtYWlkOnRoaXMubWVybWFpZCxtZXJtYWlkT3B0aW9uczp0aGlzLm1lcm1haWRPcHRp''@;'; put 'put ''b25zfSxJPXRoaXMubWFya2Rvd25TZXJ2aWNlLnBhcnNlKGgse2RlY29kZUh0bWw6dixpbmxpbmU6dGhpcy5pbmxpbmUsZW1vamk6dGhpcy5lbW9qaSxtZXJtYWlkOnRoaXMubWVybWFpZH0pO3RoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTD1JLHRoaXMuaGFuZGxlUGx1Z2lu''@;'; put 'put ''cygpLHRoaXMubWFya2Rvd25TZXJ2aWNlLnJlbmRlcih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxDLHRoaXMudmlld0NvbnRhaW5lclJlZiksdGhpcy5yZWFkeS5lbWl0KCl9Y29lcmNlQm9vbGVhblByb3BlcnR5KGgpe3JldHVybiBudWxsIT1oJiYiZmFsc2UiIT1gJHtTdHJpbmcoaCl9''@;'; put 'put ''YH1oYW5kbGVEYXRhKCl7dGhpcy5yZW5kZXIodGhpcy5kYXRhKX1oYW5kbGVTcmMoKXt0aGlzLm1hcmtkb3duU2VydmljZS5nZXRTb3VyY2UodGhpcy5zcmMpLnN1YnNjcmliZSh7bmV4dDpoPT57dGhpcy5yZW5kZXIoaCksdGhpcy5sb2FkLmVtaXQoaCl9LGVycm9yOmg9PnRoaXMuZXJyb3Iu''@;'; put 'put ''ZW1pdChoKX0pfWhhbmRsZVRyYW5zY2x1c2lvbigpe3RoaXMucmVuZGVyKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCwhMCl9aGFuZGxlUGx1Z2lucygpe3RoaXMuY29tbWFuZExpbmUmJih0aGlzLnNldFBsdWdpbkNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50''@;'; put 'put ''LEtaLkNvbW1hbmRMaW5lKSx0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQse2RhdGFGaWx0ZXJPdXRwdXQ6dGhpcy5maWx0ZXJPdXRwdXQsZGF0YUhvc3Q6dGhpcy5ob3N0LGRhdGFQcm9tcHQ6dGhpcy5wcm9tcHQsZGF0YU91dHB1dDp0aGlzLm91dHB1''@;'; put 'put ''dCxkYXRhVXNlcjp0aGlzLnVzZXJ9KSksdGhpcy5saW5lSGlnaGxpZ2h0JiZ0aGlzLnNldFBsdWdpbk9wdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQse2RhdGFMaW5lOnRoaXMubGluZSxkYXRhTGluZU9mZnNldDp0aGlzLmxpbmVPZmZzZXR9KSx0aGlzLmxpbmVOdW1iZXJzJiYo''@;'; put 'put ''dGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxLWi5MaW5lTnVtYmVycyksdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LHtkYXRhU3RhcnQ6dGhpcy5zdGFydH0pKX1zZXRQbHVnaW5DbGFzcyhoLHYpe2NvbnN0IHk9''@;'; put 'put ''aC5xdWVyeVNlbGVjdG9yQWxsKCJwcmUiKTtmb3IobGV0IEM9MDtDPHkubGVuZ3RoO0MrKyl7Y29uc3QgST12IGluc3RhbmNlb2YgQXJyYXk/djpbdl07eS5pdGVtKEMpLmNsYXNzTGlzdC5hZGQoLi4uSSl9fXNldFBsdWdpbk9wdGlvbnMoaCx2KXtjb25zdCB5PWgucXVlcnlTZWxlY3RvckFs''@;'; put 'put ''bCgicHJlIik7Zm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspT2JqZWN0LmtleXModikuZm9yRWFjaChJPT57Y29uc3Qgaj12W0ldO2lmKGope2NvbnN0IGNlPXRoaXMudG9MaXNwQ2FzZShJKTt5Lml0ZW0oQykuc2V0QXR0cmlidXRlKGNlLGoudG9TdHJpbmcoKSl9fSl9dG9MaXNwQ2FzZSho''@;'; put 'put ''KXtjb25zdCB2PWgubWF0Y2goLyhbQS1aXSkvZyk7aWYoIXYpcmV0dXJuIGg7bGV0IHk9aC50b1N0cmluZygpO2ZvcihsZXQgQz0wLEk9di5sZW5ndGg7QzxJO0MrKyl5PXkucmVwbGFjZShuZXcgUmVnRXhwKHZbQ10pLCItIit2W0NdLnRvTG93ZXJDYXNlKCkpO3JldHVybiItIj09PXkuc2xp''@;'; put 'put ''Y2UoMCwxKSYmKHk9eS5zbGljZSgxKSkseX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoX28pLEt0KCRoZSksS3QoTXIpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sibWFya2Rvd24iXSxbIiIsIm1hcmtkb3duIiwiIl1d''@;'; put 'put ''LGlucHV0czp7ZGF0YToiZGF0YSIsc3JjOiJzcmMiLGlubGluZToiaW5saW5lIixjbGlwYm9hcmQ6ImNsaXBib2FyZCIsY2xpcGJvYXJkQnV0dG9uQ29tcG9uZW50OiJjbGlwYm9hcmRCdXR0b25Db21wb25lbnQiLGNsaXBib2FyZEJ1dHRvblRlbXBsYXRlOiJjbGlwYm9hcmRCdXR0b25UZW1w''@;'; put 'put ''bGF0ZSIsZW1vamk6ImVtb2ppIixrYXRleDoia2F0ZXgiLGthdGV4T3B0aW9uczoia2F0ZXhPcHRpb25zIixtZXJtYWlkOiJtZXJtYWlkIixtZXJtYWlkT3B0aW9uczoibWVybWFpZE9wdGlvbnMiLGxpbmVIaWdobGlnaHQ6ImxpbmVIaWdobGlnaHQiLGxpbmU6ImxpbmUiLGxpbmVPZmZzZXQ6''@;'; put 'put ''ImxpbmVPZmZzZXQiLGxpbmVOdW1iZXJzOiJsaW5lTnVtYmVycyIsc3RhcnQ6InN0YXJ0Iixjb21tYW5kTGluZToiY29tbWFuZExpbmUiLGZpbHRlck91dHB1dDoiZmlsdGVyT3V0cHV0Iixob3N0OiJob3N0Iixwcm9tcHQ6InByb21wdCIsb3V0cHV0OiJvdXRwdXQiLHVzZXI6InVzZXIifSxv''@;'; put 'put ''dXRwdXRzOntlcnJvcjoiZXJyb3IiLGxvYWQ6ImxvYWQiLHJlYWR5OiJyZWFkeSJ9LGZlYXR1cmVzOltkMl0sbmdDb250ZW50U2VsZWN0b3JzOnZaZSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksVmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSko''@;'; put 'put ''KSxUWmU9KCgpPT57Y2xhc3MgZHtzdGF0aWMgZm9yUm9vdChoKXtyZXR1cm57bmdNb2R1bGU6ZCxwcm92aWRlcnM6WyRoZSxoJiZoLmxvYWRlcnx8W10saCYmaC5jbGlwYm9hcmRPcHRpb25zfHxbXSxoJiZoLm1hcmtlZE9wdGlvbnN8fFtdLHtwcm92aWRlOk9iZSx1c2VWYWx1ZTpoJiZudWxs''@;'; put 'put ''IT1oLnNhbml0aXplP2guc2FuaXRpemU6V2wuSFRNTH1dfX1zdGF0aWMgZm9yQ2hpbGQoKXtyZXR1cm57bmdNb2R1bGU6ZH19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2lt''@;'; put 'put ''cG9ydHM6W2FhXX0pLGR9KSgpO3ZhciBCYmU7IWZ1bmN0aW9uKGQpe2xldCBnO3ZhciB5O2xldCBoLHY7KHk9Zz1kLlNlY3VyaXR5TGV2ZWx8fChkLlNlY3VyaXR5TGV2ZWw9e30pKS5TdHJpY3Q9InN0cmljdCIseS5Mb29zZT0ibG9vc2UiLHkuQW50aXNjcmlwdD0iYW50aXNjcmlwdCIseS5T''@;'; put 'put ''YW5kYm94PSJzYW5kYm94IixmdW5jdGlvbih5KXt5LkJhc2U9ImJhc2UiLHkuRm9yZXN0PSJmb3Jlc3QiLHkuRGFyaz0iZGFyayIseS5EZWZhdWx0PSJkZWZhdWx0Iix5Lk5ldXRyYWw9Im5ldXRyYWwifShoPWQuVGhlbWV8fChkLlRoZW1lPXt9KSksZnVuY3Rpb24oeSl7eVt5LkRlYnVnPTFd''@;'; put 'put ''PSJEZWJ1ZyIseVt5LkluZm89Ml09IkluZm8iLHlbeS5XYXJuPTNdPSJXYXJuIix5W3kuRXJyb3I9NF09IkVycm9yIix5W3kuRmF0YWw9NV09IkZhdGFsIn0odj1kLkxvZ0xldmVsfHwoZC5Mb2dMZXZlbD17fSkpfShCYmV8fChCYmU9e30pKTtsZXQgSVplPSgoKT0+e2NsYXNzIGR7Y29uc3Ry''@;'; put 'put ''dWN0b3IoaCl7dGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5hZ3JlZUNoZWNrZWQ9ITEsdGhpcy5hZ3JlZUJveExvY2tlZD0hMCx0aGlzLmFncmVlQ2xpY2tlZD0hMSx0aGlzLmV1bGFfbWFya2Rvd249J1xuRW5kIFVzZXIgTGljZW5jZSBBZ3JlZW1lbnQgZm9yIERhdGEgQ29udHJvbGxlciBmb3Ig''@;'; put 'put ''U0FTXHhhZVxuPT09PT09PT09PT09PT09PT09PT1cblBsZWFzZSByZWFkIHRoaXMgRW5kIFVzZXIgTGljZW5zZSBBZ3JlZW1lbnQgKCJFVUxBIikgYmVmb3JlIFlvdSBkb3dubG9hZCwgaW5zdGFsbCwgZXhhbWluZSwgb3Igb3RoZXJ3aXNlIHVzZSBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4''@;'; put 'put ''YWVcblxuQnkgZG93bmxvYWRpbmcgYW5kIHVzaW5nIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSwgWW91IGFncmVlLCB3aXRob3V0IHJlc2VydmF0aW9uIHRvIGJlIGJvdW5kIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzIEVVTEEuIElmIFlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGUgdGVybXMg''@;'; put 'put ''b2YgdGhpcyBFVUxBLCBwbGVhc2UgZG8gbm90IHB1cmNoYXNlIGEgTGljZW5zZSBLZXkgYW5kL29yIGRvd25sb2FkIGFuZCB1c2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlLlxuXG5JZiBZb3UgYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBpbiB0aGlzIEVVTEEgb24gYmVo''@;'; put 'put ''YWxmIG9mIGEgY29tcGFueSBvciBvdGhlciBsZWdhbCBlbnRpdHksIFlvdSB3YXJyYW50IHRoYXQgWW91IGhhdmUgZnVsbCBsZWdhbCBhdXRob3JpdHkgdG8gYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBpbiB0aGlzIEVVTEEgb24gYmVoYWxmIG9mIHN1Y2ggY29tcGFueSBvciBv''@;'; put 'put ''dGhlciBsZWdhbCBlbnRpdHksIGFuZCB0byBsZWdhbGx5IGJpbmQgc3VjaCBjb21wYW55IG9yIG90aGVyIGxlZ2FsIGVudGl0eS5cblxuWW91IG1heSBub3QgYWNjZXB0IHRoaXMgRVVMQSBpZiBZb3UgYXJlIG5vdCBvZiBsZWdhbCBhZ2UgdG8gZm9ybSBhIGJpbmRpbmcgY29udHJhY3Qgd2l0''@;'; put 'put ''aCA0R0wgQXBwcy5cblxuIyMgRGVmaW5pdGlvbnNcbkluIHRoaXMgRVVMQSB0aGUgZXhwcmVzc2lvbnMgYmVsb3cgc2hhbGwgaGF2ZSB0aGUgbWVhbmluZyBhc3NpZ25lZCB0byB0aGVtIGluIHRoaXMgY2xhdXNlLCB1bmxlc3MgdGhlIGNvbnRleHQgcmVxdWlyZXMgb3RoZXJ3aXNlOlxuXG4q''@;'; put 'put ''ICoqIkFjdGl2YXRlIioqIHR1cm5pbmcgdGhlIFRyaWFsIHZlcnNpb24gaW50byB0aGUgRnVsbCB2ZXJzaW9uIG9mIHRoZSBzYW1lIGFwcGxpY2F0aW9uIHdpdGggdGhlIExpY2Vuc2UgS2V5IHByb3ZpZGVkIGJ5IDRHTCBBcHBzO1xuKiAqKiJEb2N1bWVudGF0aW9uIioqIHRoZSBkZXRhaWxl''@;'; put 'put ''ZCBpbmZvcm1hdGlvbiBhYm91dCBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUsIGl0cyBmZWF0dXJlcyBhbmQgdGhlIHN5c3RlbSByZXF1aXJlbWVudHMgYXMgbWFkZSBhdmFpbGFibGUgb24gaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvLCBhcyBhbWVuZGVkIGZyb20gdGltZSB0''@;'; put 'put ''byB0aW1lO1xuKiAqKiJGdWxsIHZlcnNpb24iKiogdGhlIGxpY2Vuc2UgZm9yIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBmb3IgdGhlIHRlcm0gc3BlY2lmaWVkIG9uIHRoZSB3ZWJwYWdlIG9mIHRoZSBzdG9yZSB3aGVyZSBZb3UgcHVyY2hhc2UgdGhlIGxpY2Vuc2UsIG9yIGluIGFu''@;'; put 'put ''eSBhcHBsaWNhYmxlIGFncmVlbWVudCBjb25jZXJuaW5nIHRoZSBwdXJjaGFzZSBvZiB0aGUgbGljZW5zZSAoYXMgc3RhbmQtYWxvbmUgcHJvZHVjdCBvciBhcyBwYXJ0IG9mIGEgc3Vic2NyaXB0aW9uKSB0byBVc2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlO1xuKiAqKiJMaWNlbnNl''@;'; put 'put ''IEtleSIqKiBhbiB1bmlxdWUgY29kZSBwcm92aWRlZCBieSA0R0wgQXBwcywgd2hpY2ggZW5hYmxlcyBZb3UgdG8gYWN0aXZhdGUgdGhlIEZ1bGwgdmVyc2lvbiBieSBlbnRlcmluZyB0aGUgY29kZSBpbnRvIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhbmQgdG8gc3Vic2VxdWVudGx5''@;'; put 'put ''IHVzZSBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgZHVyaW5nIHRoZSBhcHBsaWNhYmxlIGxpY2Vuc2UgdGVybTtcbiogKioiT3BlbiBTb3VyY2UgU29mdHdhcmVcdTIwMWQqKiBhbnkgc29mdHdhcmUgdGhhdCByZXF1aXJlcyBhcyBhIGNvbmRpdGlvbiBvZiB1c2UsIGNvcHlpbmcsIG1v''@;'; put 'put ''ZGlmaWNhdGlvbiBhbmQvb3IgZGlzdHJpYnV0aW9uIG9mIHN1Y2ggc29mdHdhcmUgdGhhdCBzdWNoIHNvZnR3YXJlIG9yIG90aGVyIHNvZnR3YXJlIGluY29ycG9yYXRlZCBpbnRvLCBkZXJpdmVkIGZyb20gb3IgZGlzdHJpYnV0ZWQgd2l0aCBzdWNoIHNvZnR3YXJlIChhKSBiZSBkaXNjbG9z''@;'; put 'put ''ZWQgb3IgZGlzdHJpYnV0ZWQgaW4gc291cmNlIGNvZGUgZm9ybSwgYW5kIChiKSBiZSBsaWNlbnNlZCBmb3IgdGhlIHB1cnBvc2Ugb2YgbWFraW5nIGFuZC9vciBkaXN0cmlidXRpbmcgZGVyaXZhdGl2ZSB3b3JrcywgYW5kIChjKSBiZSByZWRpc3RyaWJ1dGFibGUgYXQgbm8gY2hhcmdlO1xu''@;'; put 'put ''KiAqKiI0R0wgQXBwcyIqKiBhIGJyYW5kIG93bmVkIGFuZCBtYW5hZ2VkIGJ5IEJvd2UgSU8gTHRkLCBhIGNvbXBhbnkgaW5jb3Jwb3JhdGVkIGFuZCByZWdpc3RlcmVkIGluIEVuZ2xhbmQgd2l0aCBSZWdpc3RlcmVkIE51bWJlciAwODc3NzE3MSB3aG9zZSByZWdpc3RlcmVkIG9mZmljZSBp''@;'; put 'put ''cyBhdCAyOSBPbGRmaWVsZCBSZCwgV2luZGVybWVyZSwgQ3VtYnJpYSwgTEEyMyAyQVpcbiogKioiRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlXHUyMDFkIGFueSBzb2Z0d2FyZSBhcHBsaWNhdGlvbiBhbmQvb3IgYWxsIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZXMgYW5kL29yIG90''@;'; put 'put ''aGVyIG1lZGlhLCBpbmNsdWRpbmcgc29mdHdhcmUgc2V0dXAgZmlsZXMsIGxpY2Vuc2VkIHRvIFlvdSBieSA0R0wgQXBwcywgaW5jbHVkaW5nIGFueSBVcGRhdGVzO1xuKiAqKiJUcmlhbCB2ZXJzaW9uXHUyMDFkKiogdGhlIGxpY2Vuc2UgZm9yIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhh''@;'; put 'put ''ZSBmb3IgdGhlIHRlcm0gb2YgMzAgZGF5cyB0byBVc2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGZvciB0aGUgc29sZSBwdXJwb3NlIG9mIHRlc3RpbmcgYW5kIGV2YWx1YXRpbmcgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlO1xuKiAqKiJVcGRhdGVzIioqIGFueSBtb2RpZmll''@;'; put 'put ''ZCB2ZXJzaW9ucyBhbmQgdXBkYXRlcyBvZiwgYW5kIGFkZGl0aW9ucyB0byBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgKGV4Y2x1ZGluZyB1cGdyYWRlcyBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUpO1xuKiAqKiJVc2UiKiogdGhlIGFjY2VzcywgZG93bmxvYWQsIGluc3Rh''@;'; put 'put ''bGwsIGNvcHkgb3IgZ2V0IGJlbmVmaXQgZnJvbSB1c2luZyBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkb2N1bWVudGF0aW9uO1xuKiAqKiJZb3UiKiogeW91LCB0aGUgZmluYWwgYW5kIHVsdGltYXRlIHVzZXIgb2YgRGF0YSBDb250cm9sbGVy''@;'; put 'put ''IGZvciBTQVNceGFlIG9yIHRoZSBhdXRob3JpemVkIHJlcHJlc2VudGF0aXZlIG9mIGEgY29tcGFueSBvciBvdGhlciBsZWdhbCBlbnRpdHkgdGhhdCB3aWxsIGJlIHRoZSBmaW5hbCBhbmQgdWx0aW1hdGUgdXNlciBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgIGFuZCB0aGUgY29t''@;'; put 'put ''cGFueSBvciBvdGhlciBsZWdhbCBlbnRpdHkgdGhhdCB3aWxsIGJlIHRoZSBmaW5hbCBhbmQgdWx0aW1hdGUgdXNlciBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgIGlmIGFwcGxpY2FibGUuXG5cbiMjIEdlbmVyYWxcblRoaXMgRVVMQSBhcHBsaWVzIHRvIGFueSBsaWNlbnNlcyBn''@;'; put 'put ''cmFudGVkIHRvIFlvdSBieSA0R0wgQXBwcyBmb3IgdGhlIHVzZSBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUuXG5CeSBwdXJjaGFzaW5nIGEgTGljZW5zZSBLZXkgZm9yIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhbmQvb3IgZG93bmxvYWRpbmcgYW5kIHVzaW5nIERhdGEg''@;'; put 'put ''Q29udHJvbGxlciBmb3IgU0FTXHhhZSwgWW91IGVudGVyIGludG8gdGhpcyBFVUxBIHdpdGggNEdMIEFwcHMuXG5UaGlzIEVVTEEgbWF5IGJlIG1vZGlmaWVkIGZyb20gdGltZSB0byB0aW1lLiA0R0wgQXBwcyB3aWxsIG5vdGlmeSB5b3Ugb2Ygc3VjaCBtb2RpZmljYXRpb25zIG9uIGl0cyB3''@;'; put 'put ''ZWJzaXRlIG9yIG90aGVyd2lzZSwgZS5nLiBieSB1c2luZyB0aGUgZW1haWwgYWRkcmVzcyB1c2VkIGZvciB0aGUgcHJvdmlzaW9uIG9mIHRoZSBMaWNlbnNlIEtleS4gQW55IG1vZGlmaWNhdGlvbnMgdG8gdGhpcyBFVUxBIHNoYWxsIG9ubHkgYXBwbHkgdXBvbiBhY2NlcHRhbmNlIGJ5IFlv''@;'; put 'put ''dS5cblxuIyMgTGljZW5zZVxuNEdMIEFwcHMgZ3JhbnRzIFlvdSBhIG5vbi1leGNsdXNpdmUsIG5vbi10cmFuc2ZlcmFibGUsIGxpbWl0ZWQsIHJldm9jYWJsZSBsaWNlbnNlIHRvIFVzZSBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgRVVMQS4g''@;'; put 'put ''TWFjZW8gUGVvcGxlIHJlc2VydmVzIGFsbCByaWdodHMgbm90IGV4cHJlc3NseSBncmFudGVkIHRvIFlvdS5cbjRHTCBBcHBzIGlzIGFuZCByZW1haW5zIHRoZSBvd25lciBvZiBhbnkgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyB3aXRoIHJlc3BlY3QgdG8gRGF0YSBDb250cm9sbGVy''@;'; put 'put ''IGZvciBTQVNceGFlLiBZb3Ugc2hhbGwgbm90IGFjcXVpcmUgYW55IG93bmVyc2hpcCB0byBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYXMgcmVzdWx0IG9mIFlvdXIgcHVyY2hhc2Ugb2YgdGhlIExpY2Vuc2UgS2V5IG9yIFlvdXIgVXNlIG9mIERhdGEgQ29udHJvbGxlciBmb3IgU0FT''@;'; put 'put ''XHhhZS5cblxuIyMgUGVybWl0dGVkIHVzZSBhbmQgcmVzdHJpY3Rpb25zXG5JbiBvcmRlciB0byBiZSBhYmxlIHRvIGluc3RhbGwgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGFuZCByZWNlaXZlIFVwZGF0ZXMgYW5kIHVwZ3JhZGVzLCBZb3VyIGNvbXB1dGVyIHNoYWxsIG1lZXQgdGhl''@;'; put 'put ''IHN5c3RlbSByZXF1aXJlbWVudHMgZGVzY3JpYmVkIGluIHRoZSBEb2N1bWVudGF0aW9uIHRoYXQgY2FuIGJlIGZvdW5kIG9uIHRoZSB3ZWJwYWdlOiBodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8uXG5Zb3UgbWF5IFVzZSBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgdXAgdG8g''@;'; put 'put ''dGhlIGxpY2VuY2VkIGNhcGFjaXR5IG9ubHkgKG51bWJlciBvZiB1c2VycyBvciBDUFUgY29yZXMpLiBJZiBZb3UgZXhjZWVkIHRoZSBsaW1pdCwgNEdMIEFwcHMgbWF5IHRlcm1pbmF0ZSB0aGUgYWdyZWVtZW50LlxuWW91IHNoYWxsIFVzZSB0aGUgRnVsbCB2ZXJzaW9uIG9yIFRyaWFsIHZl''@;'; put 'put ''cnNpb24gaW4gYWNjb3JkYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cyBhbmQgc2hhbGwgbm90OlxuXG4qIHJlbnQsIGxlYXNlLCBsZW5kLCBzZWxsLCByZWRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Ugb3Igb3RoZXJ3aXNlIGNvbW1lcmNpYWxseSBleHBsb2l0IHRoZSBMaWNlbnNlIEtleSwgdGhl''@;'; put 'put ''IEZ1bGwgdmVyc2lvbiwgb3IgdGhlIFRyaWFsIHZlcnNpb247XG4qIGFzc2lnbiB0aGUgTGljZW5zZSBLZXksIHRoZSBGdWxsIHZlcnNpb24sIG9yIHRoZSBUcmlhbCB2ZXJzaW9uIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhcHByb3ZhbCBvZiA0R0wgQXBwcztcbiogVXNlIHRoZSBGdWxsIHZl''@;'; put 'put ''cnNpb24gb3IgVHJpYWwgdmVyc2lvbiBmb3IgYW55IHVubGF3ZnVsIG9yIGlsbGVnYWwgYWN0aXZpdHksIG9yIHRvIGZhY2lsaXRhdGUgYW4gdW5sYXdmdWwgb3IgaWxsZWdhbCBhY3Rpdml0eTtcbiogZGVsZXRlIG9yIGFsdGVyIGFueSBkaXNjbGFpbWVycywgd2FybmluZ3MsIGNvcHlyaWdo''@;'; put 'put ''dCBvciBvdGhlciBwcm9wcmlldGFyeSBub3RpY2VzIGFjY29tcGFueWluZyBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWU7IG9yXG4qIGNvcHkgKGV4Y2VwdCBhcyBvdGhlcndpc2UgcHJvdmlkZWQgaW4gdGhpcyBFVUxBKSwgYWRhcHQsIHRyYW5zbGF0ZSwgZGVjb21waWxlLCByZXZlcnNl''@;'; put 'put ''IGVuZ2luZWVyLCBkaXNhc3NlbWJsZSwgYXR0ZW1wdCB0byBkZXJpdmUgdGhlIHNvdXJjZSBjb2RlIG9mLCBtb2RpZnkgb3IgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGFuZCB0aGUgTGljZW5zZSBLZXkgb3IgYW55IHBhcnRzIHRoZXJl''@;'; put 'put ''b2YsIGV4Y2VwdCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy5cblxuNEdMIEFwcHMgbWF5IG1vZGlmeSBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYXQgYW55IHRpbWUgYXQgaXRzIHNvbGUgZGlzY3JldGlvbiBhbmQgd2l0aG91dCBub3RpY2UgdG8gWW91''@;'; put 'put ''LCBmb3IgZXhhbXBsZSB0byBjb21wbHkgd2l0aCBhcHBsaWNhYmxlIGxhdyBvciBhIGNvdXJ0IG9yZGVyLCB0byBhdm9pZCBhIHRoaXJkIHBhcnR5IGluZnJpbmdlbWVudCBjbGFpbSBvciB0byBwcm92aWRlIFVwZGF0ZXMgYW5kIHVwZ3JhZGVzLlxuQ2VydGFpbiBjb21wb25lbnRzIG9mIERh''@;'; put 'put ''dGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhcmUgT3BlbiBTb3VyY2UgU29mdHdhcmUgYW5kIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgYXBwbGljYWJsZSBsaWNlbnNlKHMpIG9mIHRoZSBPcGVuIFNvdXJjZSBTb2Z0d2FyZS4gWW91IHNoYWxsIGFkaGVyZSB0byB0aGVzZSB0''@;'; put 'put ''ZXJtcyBhbmQgY29uZGl0aW9ucywgd2hpY2ggY2FuIGJlIGZvdW5kIHZpYSB0aGUgd2VicGFnZTogaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvL2xpY2VuY2VzLlxuXG4jIyBNYWludGVuYW5jZSBhbmQgc3VwcG9ydFxuNEdMIEFwcHMgd2lsbCBub3RpZnkgWW91IG9mIGFueSBhdmFp''@;'; put 'put ''bGFibGUgVXBkYXRlcyBhbmQgdXBncmFkZXMuXG5Zb3Ugd2lsbCBiZSBlbnRpdGxlZCB0byByZWNlaXZlIFVwZGF0ZXMgZnJlZSBvZiBjaGFyZ2UgZHVyaW5nIHRoZSBsaWNlbmNlIHBlcmlvZCwgdXBvbiBwdXJjaGFzaW5nIHRoZSBMaWNlbnNlIEtleSBmb3IgdGhlIEZ1bGwgdmVyc2lvbi4g''@;'; put 'put ''SW4gb3JkZXIgdG8gcmVjZWl2ZSBVcGRhdGVzIGFmdGVyIHRoaXMgdHdlbHZlIG1vbnRoc1x1MjAxOSBwZXJpb2QsIFlvdSB3aWxsIG5lZWQgdG8gcmVuZXcgeW91ciBMaWNlbnNlIEtleSBmb3IgdGhlIEZ1bGwgdmVyc2lvbjtcbkFueSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCBwcm92aWRl''@;'; put 'put ''ZCBieSA0R0wgQXBwcywgaW5jbHVkaW5nIHRoZSBwcm92aXNpb24gb2YgVXBkYXRlcyBhbmQgdXBncmFkZXMsIHdpbGwgYmUgcHJvdmlkZWQgaW4gYW4gYWRlcXVhdGUgd2F5IG9uIGFuIFx1MjAxY2FzIGlzXHUyMDFkIGJhc2lzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCBhcyBzb29uIGFzIHJl''@;'; put 'put ''YXNvbmFibHkgcHJhY3RpY2FibGUsIHN1YmplY3QgdG8gYXZhaWxhYmlsaXR5IG9mIHBlcnNvbm5lbC5cblxuIyMgVXNlIG9mIGRhdGFcbjRHTCBBcHBzIGFuZCBpdHMgc3Vic2lkaWFyaWVzIG1heSBwZXJpb2RpY2FsbHkgcmVxdWVzdCB0ZWNobmljYWwgYW5kIHJlbGF0ZWQgZGF0YSBjb25j''@;'; put 'put ''ZXJuaW5nIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBZb3UgaGF2ZSBsaWNlbnNlZCwgaW5jbHVkaW5nIGFib3V0IHRoZSB2ZXJzaW9uIG51bWJlciBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgWW91IGhhdmUgaW5zdGFsbGVkIGFuZCBhYm91dCB0aGUgc3lzdGVtIFlvdSBo''@;'; put 'put ''YXZlIGluc3RhbGxlZCBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgb24uIDRHTCBBcHBzIHdpbGwgdXNlIHN1Y2ggZGF0YSB0byBmYWNpbGl0YXRlIG1haW50ZW5hbmNlIGFuZCBzdXBwb3J0IHdpdGggcmVzcGVjdCB0byBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgIHRvIGltcHJv''@;'; put 'put ''dmUgaXRzIHByb2R1Y3RzIGFuZCB0byBwcm92aWRlIGZ1cnRoZXIgc2VydmljZXMgb3IgdGVjaG5vbG9naWVzIHRvIFlvdS5cbjRHTCBBcHBzIG1heSBwcm9jZXNzIHBlcnNvbmFsIGRhdGEgd2l0aCByZXNwZWN0IHRvIFlvdSwgaWYgYW5kIHRvIHRoZSBleHRlbnQgbmVjZXNzYXJ5IHRvIHBy''@;'; put 'put ''b3ZpZGUgdGhlIExpY2Vuc2UgS2V5LCB0byBwcm92aWRlIG1haW50ZW5hbmNlIGFuZCBzdXBwb3J0IHRvIFlvdSB3aXRoIHJlc3BlY3QgdG8gRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGFuZCB0byBjb21wbHkgd2l0aCBpdHMgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBFVUxBLiBUbyB0''@;'; put 'put ''aGUgZXh0ZW50IDRHTCBBcHBzIHdpbGwgcHJvY2VzcyBwZXJzb25hbCBkYXRhLCBpdCB3aWxsIGNvbXBseSB3aXRoIGl0cyBvYmxpZ2F0aW9ucyB1bmRlciBhcHBsaWNhYmxlIGRhdGEgcHJvdGVjdGlvbiBsYXcuIFBsZWFzZSBzZWUgb3VyIHByaXZhY3kgc3RhdGVtZW50IGZvciBtb3JlIGRl''@;'; put 'put ''dGFpbHMgb24gdGhlIHByb2Nlc3Npbmcgb2YgWW91ciBwZXJzb25hbCBkYXRhIHRoYXQgNEdMIEFwcHMgaGFzIGNvbGxlY3RlZCBhbmQgcmVjZWl2ZWQgdGhyb3VnaCBpdHMgd2Vic2l0ZS5cblxuIyMgRGlzY2xhaW1lclxuWW91IFVzZSBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYXQg''@;'; put 'put ''WW91ciBvd24gcmlzayBhbmQgdGhlIGVudGlyZSByaXNrIGFzIHRvIHNhdGlzZmFjdG9yeSBxdWFsaXR5LCBwZXJmb3JtYW5jZSBhbmQgYWNjdXJhY3kgaXMgd2l0aCBZb3UuXG5EYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYW5kIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGFyZSBw''@;'; put 'put ''cm92aWRlZCBvbiBhbiBcdTIwMWNhcyBpc1x1MjAxZCBhbmQgXHUyMDFjYXMgYXZhaWxhYmxlXHUyMDFkIGJhc2lzIHdpdGhvdXQgd2FycmFudHkgLSBleHByZXNzIG9yIGltcGxpZWQgLSBvZiBhbnkga2luZCwgYW5kIDRHTCBBcHBzIHNwZWNpZmljYWxseSBkaXNjbGFpbXMgdGhlIHdhcnJh''@;'; put 'put ''bnR5IG9mIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLiBObyBvcmFsIG9yIHdyaXR0ZW4gYWR2aWNlIGdpdmVuIGJ5IDRHTCBBcHBzLCBpdHMgZGVhbGVycywgZGlzdHJpYnV0b3JzLCBhZ2VudHMgb3IgZW1wbG95ZWVzIHNoYWxsIGNyZWF0ZSBhIHdhcnJhbnR5IG9yIGluIGFu''@;'; put 'put ''eSB3YXkgaW5jcmVhc2UgdGhlIHNjb3BlIG9mIHRoaXMgd2FycmFudHkgYW5kIFlvdSBtYXkgbm90IHJlbHkgdXBvbiBzdWNoIGluZm9ybWF0aW9uIG9yIGFkdmljZS5cblxuIyMgTGlhYmlsaXR5IGxpbWl0YXRpb25cblRoZSBsaWFiaWxpdHkgb2YgNEdMIEFwcHMgYW5kIGFueSB0aGlyZCBw''@;'; put 'put ''YXJ0eSB0aGF0IGhhcyBiZWVuIGludm9sdmVkIGluIHRoZSBjcmVhdGlvbiwgcHJvZHVjdGlvbiwgb3IgZGVsaXZlcnkgb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGZvciBhbGwgZGFtYWdlcyBhcmlzaW5nIG91dCBvZiBvciBpbiBhbnkgd2F5IHJlbGF0aW5nIHRvIHRoZSBGdWxs''@;'; put 'put ''IHZlcnNpb24sIHRoZSBUcmlhbCB2ZXJzaW9uLCB0aGUgTGljZW5zZSBLZXksIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhbmQvb3IgdGhpcyBFVUxBIHNoYWxsIGluIG5vIGV2ZW50IGV4Y2VlZCB0aGUgbGlzdCBwcmljZSBvZiB0aGUgc29mdHdhcmUuXG5cbjRHTCBBcHBzIGFuZCBh''@;'; put 'put ''bnkgdGhpcmQgcGFydHkgdGhhdCBoYXMgYmVlbiBpbnZvbHZlZCBpbiB0aGUgY3JlYXRpb24sIHByb2R1Y3Rpb24sIG9yIGRlbGl2ZXJ5IG9mIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhcmUgdW5kZXIgbm8gY2lyY3Vtc3RhbmNlcyBsaWFibGUgZm9yIGNvbnNlcXVlbnRpYWwgb3Ig''@;'; put 'put ''aW5kaXJlY3QgZGFtYWdlcyAoaW5jbHVkaW5nIGRhbWFnZSBmb3IgbG9zcyBvZiBwcm9maXQsIGJ1c2luZXNzIGludGVycnVwdGlvbiwgbG9zcyBvZiBkYXRhLCBhbmQgdGhlIGxpa2UgYXJpc2luZyBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIERhdGEgQ29udHJvbGxlciBm''@;'; put 'put ''b3IgU0FTXHhhZS5cblRoZSBsaW1pdGF0aW9ucyBvZiBsaWFiaWxpdHkgcmVmZXJyZWQgdG8gaW4gY2xhdXNlIDkuMSBhbmQgOS4yIHNoYWxsIG5vdCBhcHBseSBpbiB0aGUgZXZlbnQgdGhhdDogKGkpIGFueSBuZWdsaWdlbmNlIG9uIHRoZSBwYXJ0IG9mIDRHTCBBcHBzIGxlYWRzIHRvIGRl''@;'; put 'put ''YXRoIG9yIHBoeXNpY2FsIGluanVyeSBvciAoaWkpIGRhbWFnZXMgYXJpc2UgZnJvbSB0aGUgaW50ZW50LCB3aWxsZnVsIG1pc2NvbmR1Y3Qgb3IgZ3Jvc3MgbmVnbGlnZW5jZSBvZiA0R0wgQXBwcyBvciB0aGUgbWFuYWdlbWVudCBvZiA0R0wgQXBwcy5cblxuIyMgVGVybWluYXRpb25cblRo''@;'; put 'put ''aXMgRVVMQSB3aWxsIGNvbnRpbnVlIHRvIGJlIGluIGZvcmNlIHVudGlsIHRoZSBleHBpcnkgb3IgdGVybWluYXRpb24gb2YgdGhlIEZ1bGwgdmVyc2lvbiBvciB0aGUgVHJpYWwgdmVyc2lvbi5cblRoZSBGdWxsIHZlcnNpb24gb3IgVHJpYWwgdmVyc2lvbiB3aWxsIHRlcm1pbmF0ZSBhdXRv''@;'; put 'put ''bWF0aWNhbGx5IGF0IHRoZSBlbmQgb2YgdGhlIGFwcGxpY2FibGUgbGljZW5zZSB0ZXJtLCB1bmxlc3MgcmVuZXdlZCBvciBBY3RpdmF0ZWQgcHJpb3IgdG8gdGhlIGVuZCBvZiB0aGUgYXBwbGljYWJsZSBsaWNlbnNlIHRlcm0uXG5cbjRHTCBBcHBzIGlzIGVudGl0bGVkIHRvIHRlcm1pbmF0''@;'; put 'put ''ZSB0aGUgRnVsbCB2ZXJzaW9uIHdpdGggaW1tZWRpYXRlIGVmZmVjdCBhbmQgd2l0aG91dCBwcmlvciBub3RpY2UgaW4gdGhlIGV2ZW50IFlvdSBmYWlsIHRvIGNvbXBseSB3aXRoIHRoZSB0ZXJtcyBpbiB0aGlzIEVVTEEsIG9yIGluIHRoZSBldmVudCA0R0wgQXBwcyBpcyByZXF1aXJlZCB0''@;'; put 'put ''byBkbyBzbyBieSBsYXcgb3IgYW4gb3JkZXIgb2YgYW4gYXBwbGljYWJsZSBjb3VydC5cblVwb24gdGVybWluYXRpb24gb2YgdGhlIEZ1bGwgdmVyc2lvbiBvciB0aGUgVHJpYWwgdmVyc2lvbiBZb3Ugc2hhbGwgY2Vhc2UgYWxsIHVzZSBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUu''@;'; put 'put ''XG5Zb3UgYWNrbm93bGVkZ2UgdGhhdCB0aGUgcHJvdmlzaW9ucyBvZiB0aGlzIEVVTEEsIHdoaWNoIGJ5IHRoZWlyIG5hdHVyZSBhcmUgaW50ZW5kZWQgdG8gc3Vydml2ZSB0ZXJtaW5hdGlvbiwgd2lsbCByZW1haW4gaW4gZWZmZWN0IGFmdGVyIHRlcm1pbmF0aW9uIG9mIHRoaXMgRVVMQS5c''@;'; put 'put ''blxuXG4jIyBHb3Zlcm5pbmcgbGF3IGFuZCBqdXJpc2RpY3Rpb25cblRoaXMgYWdyZWVtZW50IGFuZCBhbnkgZGlzcHV0ZXMgb3IgY2xhaW1zIGFyaXNpbmcgb3V0IG9mIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgc3ViamVjdCBtYXR0ZXIgYXJlIGdvdmVybmVkIGJ5IGFuZCBjb25zdHJ1''@;'; put 'put ''ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsYXcgb2YgRW5nbGFuZC5cblRoZSBwYXJ0aWVzIGlycmV2b2NhYmx5IGFncmVlIHRoYXQgdGhlIGNvdXJ0cyBvZiBFbmdsYW5kIGhhdmUgZXhjbHVzaXZlIGp1cmlzZGljdGlvbiB0byBzZXR0bGUgYW55IGRpc3B1dGUgb3IgY2xhaW0gdGhhdCBh''@;'; put 'put ''cmlzZXMgb3V0IG9mIG9yIGluIGNvbm5lY3Rpb24gd2l0aCB0aGlzIGFncmVlbWVudC5cbid9bmdPbkluaXQoKXt9dGVybXNBZ3JlZUNoYW5nZSgpe3RoaXMuYWdyZWVDaGVja2VkJiYodGhpcy5hZ3JlZUJveExvY2tlZD0hMCx0aGlzLmFncmVlQ2xpY2tlZD0hMCx0aGlzLnNhc1NlcnZpY2Uu''@;'; put 'put ''cmVxdWVzdCgicHVibGljL3JlZ2lzdGVydXNlciIse1NBU0NvbnRyb2xUYWJsZTpbe0FDQ0VQVEVEOiJ5ZXMifV19KS50aGVuKHY9Pnt2LnJldHVybiYmdi5yZXR1cm5bMF0mJiJTVUNDRVNTIj09PXYucmV0dXJuWzBdLk1TRyYmbG9jYXRpb24ucmVsb2FkKCl9KS5jYXRjaCh2PT52KS5maW5h''@;'; put 'put ''bGx5KCgpPT57dGhpcy5hZ3JlZUJveExvY2tlZD0hMSx0aGlzLmFncmVlQ2xpY2tlZD0hMSx0aGlzLmFncmVlQ2hlY2tlZD0hMX0pKX1vbkNhcmRCbG9ja1Njcm9sbChoKXtpZighdGhpcy5hZ3JlZUNsaWNrZWQpe2xldCB2PWgudGFyZ2V0O3YmJih0aGlzLmFncmVlQm94TG9ja2VkPSEodi5z''@;'; put 'put ''Y3JvbGxUb3Ardi5vZmZzZXRIZWlnaHQ+PXYuc2Nyb2xsSGVpZ2h0LTIwKSl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChsMCkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtdGVybXMiXV0sZGVjbHM6MTEsdmFy''@;'; put 'put ''czo1LGNvbnN0czpbWzEsImNhcmQiXSxbMSwiY2FyZC1oZWFkZXIiXSxbMSwiY2FyZC1ibG9jayIsMywic2Nyb2xsIl0sWzMsImRhdGEiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLCJhY2NlcHQtY2hlY2tib3giXSxbInR5cGUiLCJjaGVja2JveCIsImlkIiwiY2hlY2tib3gxIiwibmFt''@;'; put 'put ''ZSIsImNoZWNrYm94LWJhc2ljIiwxLCJjbHItY2hlY2tib3giLDMsIm5nTW9kZWwiLCJkaXNhYmxlZCIsIm5nTW9kZWxDaGFuZ2UiLCJjaGFuZ2UiXSxbImZvciIsImNoZWNrYm94MSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImRpdiIsMCkoMSwiZGl2IiwxKSxXdCgy''@;'; put 'put ''LCIgRW5kIFVzZXIgTGljZW5zZSBBZ3JlZW1lbnQgIiksdHQoMywicCIpLFd0KDQsIiBXZWxjb21lIHRvIERhdGEgQ29udHJvbGxlciBmb3IgU0FTISBQbGVhc2UgcmV2aWV3IGFuZCBhY2NlcHQgYWdyZWVtZW50IGJlbG93IGluIG9yZGVyIHRvIHByb2NlZWQuICIpLGl0KCkoKSx0dCg1LCJk''@;'; put 'put ''aXYiLDIpLFpuKCJzY3JvbGwiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uQ2FyZEJsb2NrU2Nyb2xsKEMpfSksYnIoNiwibWFya2Rvd24iLDMpLGl0KCksdHQoNywiZGl2Iiw0KSg4LCJpbnB1dCIsNSksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LmFncmVlQ2hlY2tl''@;'; put 'put ''ZD1DfSkoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi50ZXJtc0FncmVlQ2hhbmdlKCl9KSxpdCgpLHR0KDksImxhYmVsIiw2KSxXdCgxMCwiSSBoYXZlIHJlYWQgYW5kIGFncmVlIHRvIHRoZSB0ZXJtcyBvZiBhYm92ZS4iKSxpdCgpKCkoKSksMiZoJiYoc3QoNikseHQoImRhdGEiLHYu''@;'; put 'put ''ZXVsYV9tYXJrZG93biksc3QoMSksSGkoImRpc2FibGVkIix2LmFncmVlQm94TG9ja2VkKSxzdCgxKSx4dCgibmdNb2RlbCIsdi5hZ3JlZUNoZWNrZWQpKCJkaXNhYmxlZCIsdi5hZ3JlZUJveExvY2tlZCkpfSxkZXBlbmRlbmNpZXM6W3VoLGpzLF9zLGFzLFJiZV0sc3R5bGVzOlsiW19uZ2hv''@;'; put 'put ''c3QtJUNPTVAlXXtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOiNmNWY2ZmZ9LmNsci1jaGVja2JveC13cmFwcGVyLmRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi41fS5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rp''@;'; put 'put ''b246Y29sdW1uO21hcmdpbi10b3A6MH0uY2FyZFtfbmdjb250ZW50LSVDT01QJV0gICAuY2FyZC1ibG9ja1tfbmdjb250ZW50LSVDT01QJV17ZmxleDoxO292ZXJmbG93OmF1dG87YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0fS5hY2NlcHQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde3Bh''@;'; put 'put ''ZGRpbmc6MTBweCAxNXB4fSJdfSksZH0pKCk7ZnVuY3Rpb24gRFplKGQsZyl7MSZkJiYodHQoMCwicCIsMjApLFd0KDEsIiBMaWNlbmNlIGtleSBpcyBpbnZhbGlkLiBXZSBjYW4ndCBwcm92aWRlIHlvdSBtb3JlIGRldGFpbHMgYXQgdGhlIG1vbWVudCAiKSxpdCgpKX1mdW5jdGlvbiBMWmUo''@;'; put 'put ''ZCxnKXtpZigxJmQmJmJyKDAsInAiLDIxKSwyJmQpe2NvbnN0IGg9VXQoMyk7eHQoImlubmVySFRNTCIsaC5saWNlbnNlRXJyb3JzW2gua2V5RXJyb3JdLG1tKX19ZnVuY3Rpb24gT1plKGQsZyl7aWYoMSZkJiYodHQoMCwicCIpKDEsInN0cm9uZyIpLFd0KDIsIkRldGFpbHM6IiksaXQoKSxX''@;'; put 'put ''dCgzKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMyksVWkoIiAiLGguZXJyb3JEZXRhaWxzLCIiKX19ZnVuY3Rpb24gUlplKGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxEWmUsMiwwLCJwIiwxOCksbm4oMixMWmUsMSwxLCJwIiwxOSksbm4oMyxPWmUsNCwxLCJwIiwxKSxPMCgpKSwy''@;'; put 'put ''JmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nSWYiLCFoLmtleUVycm9yKSxzdCgxKSx4dCgibmdJZiIsaC5rZXlFcnJvciksc3QoMSkseHQoIm5nSWYiLGguZXJyb3JEZXRhaWxzKX19ZnVuY3Rpb24gQlplKGQsZyl7MSZkJiYoTDAoMCksdHQoMSwicCIsMjApLFd0KDIsIiBUaGUgcmVn''@;'; put 'put ''aXN0ZXJlZCBudW1iZXIgb2YgdXNlcnMgcmVhY2hlZCB0aGUgbGltaXQgc3BlY2lmaWVkIGZvciB5b3VyIGxpY2VuY2UuIFBsZWFzZSBjb250YWN0ICIpLHR0KDMsImEiLDIyKSxXdCg0LCJzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksaXQoKSxXdCg1LCIgb3IgeW91ciByZXNlbGxlciB0''@;'; put 'put ''byBhcnJhbmdlIGFkZGl0aW9uYWwgbGljZW5jZXMgZm9yIHRoaXMgcHJvZHVjdC4gIiksaXQoKSxPMCgpKX1mdW5jdGlvbiBQWmUoZCxnKXsxJmQmJihMMCgwKSx0dCgxLCJwIiwyMCksV3QoMiwiIFVwZGF0ZSB0aGUgbGljZW5zZSBrZXkgYnkgcGFzdGluZyBsaWNlbnNlIGtleSBhbmQgYWN0''@;'; put 'put ''aXZhdGlvbiBrZXkgaW4gdGhlIGlucHV0cyBiZWxvdy4gIiksaXQoKSxPMCgpKX1mdW5jdGlvbiBGWmUoZCxnKXtpZigxJmQmJih0dCgwLCJzcGFuIiksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9Zy5pbmRleCx5PVV0KDIpO0hpKCJtaXNza2V5Iix5Lm1pc3NtYXRj''@;'; put 'put ''aGVkS2V5JiZ5Lm1pc3NtYXRjaGVkS2V5PT09aCksc3QoMSkscmgoIiAiLGgsIiIsdj09PShudWxsPT15LnN5c3NpdGUudmFsdWU/bnVsbDp5LnN5c3NpdGUudmFsdWUubGVuZ3RoKS0xPyIiOiIsIiwiICIpfX1mdW5jdGlvbiBIWmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJk''@;'; put 'put ''aXYiLDIpKDEsImRpdiIsMyksV3QoMiwiTGljZW5jaW5nIiksaXQoKSx0dCgzLCJkaXYiLDQpLG5uKDQsUlplLDQsMywibmctY29udGFpbmVyIiw1KSxubig1LEJaZSw2LDAsIm5nLWNvbnRhaW5lciIsNSksbm4oNixQWmUsMywwLCJuZy1jb250YWluZXIiLDUpLHR0KDcsInAiKSg4LCJzdHJv''@;'; put 'put ''bmciKSxXdCg5LCJTWVNTSVRFOiIpLGl0KCksbm4oMTAsRlplLDIsNCwic3BhbiIsNiksdHQoMTEsImEiLDcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9dWEoMTMpLEM9dWEoMTUpLEk9VXQoKTtyZXR1cm4gYnQoSS5jb3B5U3lzc2l0ZSh5LEMsSS5zeXNzaXRlLnZhbHVl''@;'; put 'put ''fHxbXSkpfSksYnIoMTIsImNsci1pY29uIiw4LDkpLHR0KDE0LCJzcGFuIiwxMCwxMSksV3QoMTYsIkNvcHkgdG8gY2xpcGJvYXJkIiksaXQoKSgpKCksdHQoMTcsImZvcm0iLDEyKSgxOCwicCIpLFd0KDE5LCJMaWNlbmNlIGtleToiKSxpdCgpLHR0KDIwLCJkaXYiLDEzKSgyMSwidGV4dGFy''@;'; put 'put ''ZWEiLDE0KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5saWNlbnNlS2V5VmFsdWU9eSl9KSgibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLnRyaW1LZXlzKCkpfSksaXQoKSgpKCksdHQoMjIsImZvcm0iLDE1KSgy''@;'; put 'put ''MywicCIpLFd0KDI0LCJBY3RpdmF0aW9uIGtleToiKSxpdCgpLHR0KDI1LCJkaXYiLDEzKSgyNiwidGV4dGFyZWEiLDE2KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5hY3RpdmF0aW9uS2V5VmFsdWU9eSl9KSgibW91c2VsZWF2ZSIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gYShoKSxidChVdCgpLnRyaW1LZXlzKCkpfSksaXQoKSgpKCksdHQoMjcsImJ1dHRvbiIsMTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmFwcGx5S2V5cygpKX0pLFd0KDI4LCIgQXBwbHkgbGljZW5jZSBrZXlzICIpLGl0KCkoKSgpfWlm''@;'; put 'put ''KDImZCl7Y29uc3QgaD1VdCgpO3N0KDMpLHh0KCJuZ1N3aXRjaCIsaC5hY3Rpb24pLHN0KDEpLHh0KCJuZ1N3aXRjaENhc2UiLCJrZXkiKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwibGltaXQiKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwidXBkYXRlIiksc3QoNCkseHQoIm5nRm9yT2Yi''@;'; put 'put ''LGguc3lzc2l0ZS52YWx1ZSksc3QoMTEpLHh0KCJuZ01vZGVsIixoLmxpY2Vuc2VLZXlWYWx1ZSksc3QoNSkseHQoIm5nTW9kZWwiLGguYWN0aXZhdGlvbktleVZhbHVlKSxzdCgxKSx4dCgiY2xyTG9hZGluZyIsaC5hcHBseWluZ0tleXMpKCJkaXNhYmxlZCIsaC5saWNlbnNlS2V5VmFsdWUu''@;'; put 'put ''bGVuZ3RoPDF8fGguYWN0aXZhdGlvbktleVZhbHVlLmxlbmd0aDwxKX19ZnVuY3Rpb24gTlplKGQsZyl7MSZkJiZicigwLCJhcHAtdGVybXMiKX12YXIgVXE9KCgpPT4oZnVuY3Rpb24oZCl7ZC5rZXk9ImtleSIsZC5yZWdpc3Rlcj0icmVnaXN0ZXIiLGQubGltaXQ9ImxpbWl0IixkLnVwZGF0''@;'; put 'put ''ZT0idXBkYXRlIn0oVXF8fChVcT17fSkpLFVxKSkoKTtsZXQgVlplPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnJvdXRlPWgsdGhpcy5yb3V0ZXI9dix0aGlzLmV2ZW50U2VydmljZT15LHRoaXMuc2FzU2VydmljZT1DLHRoaXMuYXBwU2VydmljZT1JLHRoaXMu''@;'; put 'put ''YWN0aW9uPW51bGwsdGhpcy5saWNlbnNlRXJyb3JzPXttaXNzaW5nOidMaWNlbmNlIGtleSBpcyBtaXNzaW5nIC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0YWNvbnRyb2xs''@;'; put 'put ''ZXIuaW88L2E+IGFuZCBlbnRlciB2YWxpZCBrZXlzIGJlbG93LicsZXhwaXJlZDonTGljZW5jZSBrZXkgaXMgZXhwaXJlZCAtIHBsZWFzZSBjb250YWN0IDxhIGNsYXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFj''@;'; put 'put ''b250cm9sbGVyLmlvPC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy4nLGludmFsaWQ6J0xpY2VuY2Uga2V5IGlzIGludmFsaWQgLSBwbGVhc2UgY29udGFjdCA8YSBjbGFzcz0iY29sb3ItZ3JlZW4iIGhyZWY9Im1haWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyI+c3VwcG9y''@;'; put 'put ''dEBkYXRhY29udHJvbGxlci5pbzwvYT4gYW5kIGVudGVyIHZhbGlkIGtleXMgYmVsb3cuJyxtaXNzbWF0Y2g6J1lvdXIgU1lTU0lURSAoYmVsb3cpIGlzIG5vdCBmb3VuZCBpbiB0aGUgbGljZW5jZSBrZXkgLSBwbGVhc2UgY29udGFjdCA8YSBjbGFzcz0iY29sb3ItZ3JlZW4iIGhyZWY9Im1h''@;'; put 'put ''aWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyI+c3VwcG9ydEBkYXRhY29udHJvbGxlci5pbzwvYT4gYW5kIGVudGVyIHZhbGlkIGtleXMgYmVsb3cuJ30sdGhpcy5saWNlbnNlS2V5VmFsdWU9IiIsdGhpcy5hY3RpdmF0aW9uS2V5VmFsdWU9IiIsdGhpcy5hcHBseWluZ0tleXM9ITEs''@;'; put 'put ''dGhpcy5zeXNzaXRlPXRoaXMuYXBwU2VydmljZS5zeXNzaXRlLHRoaXMubGljZW5jZUtleT10aGlzLmFwcFNlcnZpY2UubGljZW5jZUtleSx0aGlzLmFjdGl2YXRpb25LZXk9dGhpcy5hcHBTZXJ2aWNlLmFjdGl2YXRpb25LZXl9bmdPbkluaXQoKXt0aGlzLmxpY2Vuc2VLZXlWYWx1ZT10aGlz''@;'; put 'put ''LmxpY2VuY2VLZXl8fCIiLHRoaXMuYWN0aXZhdGlvbktleVZhbHVlPXRoaXMuYWN0aXZhdGlvbktleXx8IiIsdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoaD0+e3RoaXMua2V5RXJyb3I9aC5lcnJvcix0aGlzLm1pc3NtYXRjaGVkS2V5PWgubWlzc21hdGNoSWQsaC5kZXRhaWxz''@;'; put 'put ''JiYodGhpcy5lcnJvckRldGFpbHM9YXRvYihoLmRldGFpbHMpKX0pLHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShoPT57bGV0IHY9aC5hY3Rpb247diYmT2JqZWN0LnZhbHVlcyhVcSkuaW5jbHVkZXModikmJih0aGlzLmFjdGlvbj12KX0pfXRyaW1LZXlzKCl7dGhpcy5saWNlbnNlS2V5''@;'; put 'put ''VmFsdWU9dGhpcy5saWNlbnNlS2V5VmFsdWUudHJpbSgpLHRoaXMuYWN0aXZhdGlvbktleVZhbHVlPXRoaXMuYWN0aXZhdGlvbktleVZhbHVlLnRyaW0oKX1jb3B5U3lzc2l0ZShoLHYseSl7Y29uc3QgQz15LmpvaW4oIlxuIik7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoQykudGhl''@;'; put 'put ''bigoKT0+e2guc2V0QXR0cmlidXRlKCJzaGFwZSIsImNoZWNrIiksaC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaXMtc3VjY2VzcyIpLHYuaW5uZXJUZXh0PSJDb3BpZWQhIixzZXRUaW1lb3V0KCgpPT57aC5zZXRBdHRyaWJ1dGUoInNoYXBlIiwiY29weSIpLGgucmVtb3ZlQXR0cmlidXRlKCJj''@;'; put 'put ''bGFzcyIpLHYuaW5uZXJUZXh0PSJDb3B5IHRvIGNsaXBib2FyZCJ9LDFlMyl9KX1hcHBseUtleXMoKXt0aGlzLmFwcGx5aW5nS2V5cz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiYWRtaW4vcmVnaXN0ZXJrZXkiLHtrZXl1cGxvYWQ6W3tBQ1RJVkFUSU9OX0tFWTp0aGlzLmFjdGl2YXRp''@;'; put 'put ''b25LZXlWYWx1ZSxMSUNFTkNFX0tFWTp0aGlzLmxpY2Vuc2VLZXlWYWx1ZX1dfSkudGhlbih2PT57di5yZXR1cm4mJnYucmV0dXJuWzBdJiYiU1VDQ0VTUyI9PT12LnJldHVyblswXS5NU0cmJmxvY2F0aW9uLnJlcGxhY2UobG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKX0pLmZpbmFsbHko''@;'; put 'put ''KCk9Pnt0aGlzLmFwcGx5aW5nS2V5cz0hMX0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChKMSksS3QoRWwpLEt0KG11KSxLdChsMCksS3Qoc2gpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWxpY2Vuc2luZyJd''@;'; put 'put ''XSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1siY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJjYXJkLWJsb2NrIiwzLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMywibWlzc2tleSIsNCwibmdGb3IiLCJu''@;'; put 'put ''Z0Zvck9mIl0sWzEsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC10b3AtcmlnaHQiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNvcHkiLCJzaXplIiwiMTUiLDEsImN1cnNvci1wb2ludGVyIl0sWyJjb3B5SWNvbiIsIiJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbImNvcHlUb29sdGlw''@;'; put 'put ''IiwiIl0sWzEsImNsci1mb3JtIiwibGljZW5zZS1rZXktZm9ybSJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbIm5hbWUiLCJsaWNlbnNlLWtleS1hcmVhIiwicGxhY2Vob2xkZXIiLCJQYXN0ZSBsaWNlbmNlIGtleSBoZXJlIiwxLCJjbHItdGV4dGFyZWEiLDMsIm5nTW9kZWwiLCJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIiwibW91c2VsZWF2ZSJdLFsxLCJjbHItZm9ybSIsImFjdGl2YXRpb24ta2V5LWZvcm0iXSxbIm5hbWUiLCJhY3RpdmF0aW9uLWtleS1hcmVhIiwicGxhY2Vob2xkZXIiLCJQYXN0ZSBhY3RpdmF0aW9uIGtleSBoZXJlIiwxLCJjbHItdGV4dGFyZWEiLDMsIm5nTW9kZWwi''@;'; put 'put ''LCJuZ01vZGVsQ2hhbmdlIiwibW91c2VsZWF2ZSJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsImFwcGx5LWtleXMiLDMsImNsckxvYWRpbmciLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJjbGFzcyIsImtleS1lcnJvciIsNCwibmdJZiJdLFsiY2xhc3MiLCJrZXktZXJyb3IiLDMsImlubmVySFRN''@;'; put 'put ''TCIsNCwibmdJZiJdLFsxLCJrZXktZXJyb3IiXSxbMSwia2V5LWVycm9yIiwzLCJpbm5lckhUTUwiXSxbImhyZWYiLCJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iLDEsImNvbG9yLWdyZWVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobm4oMCxIWmUsMjksOSwi''@;'; put 'put ''ZGl2IiwwKSxubigxLE5aZSwxLDAsImFwcC10ZXJtcyIsMSkpLDImaCYmKHh0KCJuZ0lmIiwicmVnaXN0ZXIiIT09di5hY3Rpb24pLHN0KDEpLHh0KCJuZ0lmIiwicmVnaXN0ZXIiPT09di5hY3Rpb24pKX0sZGVwZW5kZW5jaWVzOltxbCxCbyxaZCxWNixvZyxwMSxqcyx0dixfcyx0NCxJWmUs''@;'; put 'put ''RzIsUmksVzJdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17aGVpZ2h0OmNhbGMoMTAwJSAtIDk2cHgpO3BhZGRpbmc6MjBweH0uY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowfS5rZXktZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5taXNza2V5''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTc0YzNjfS5saWNlbnNlLWtleS1mb3JtW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MH0ubGljZW5zZS1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xy''@;'; put 'put ''LWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1jb250cm9sLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ubGljZW5zZS1rZXktZm9ybVtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRhcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1jb250cm9sLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICB0ZXh0YXJlYVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtoZWlnaHQ6MTcwcHg7bWF4LWhlaWdodDoxNzBweDttaW4taGVpZ2h0OjE3MHB4O3Jlc2l6ZTpub25lfS5hcHBseS1rZXlzW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjEwcHg7aGVpZ2h0OjQwcHg7d2lkdGg6''@;'; put 'put ''MjAwcHh9Il19KSxkfSkoKSxxaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuYXBwU2VydmljZT1oLHRoaXMucm91dGVyPXZ9Y2FuQWN0aXZhdGUoaCx2KXtyZXR1cm4hIShudWxsIT12JiZ2LnVybC5pbmNsdWRlcygibGljZW5zaW5nL3VwZGF0ZSIpJiZ0aGlzLmFwcFNl''@;'; put 'put ''cnZpY2UuaXNBcHBBY3RpdmF0ZWR8fG51bGwhPT10aGlzLmFwcFNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWUmJiExPT09dGhpcy5hcHBTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnZhbHVlKXx8KHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9ob21lIiksITEpfWNhbkRlYWN0aXZhdGUo''@;'; put 'put ''aCx2LHksQyl7cmV0dXJuIG51bGw9PT10aGlzLmFwcFNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWV8fCEhdGhpcy5hcHBTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnZhbHVlfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShFaShzaCksRWkoRWwpKX0s''@;'; put 'put ''ZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTt2YXIgcjNlLGJPLHR6O2Z1bmN0aW9uIGUzZShkKXtyZXR1cm4oZTNlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9TCgxMzQwMCksTCgxMzI3OCksTCg1MjMxMyksTCg3''@;'; put 'put ''MDg2NCksTCg2NDk1MiksTCg5NzA4NyksTCgzMTEyMyksTCgyNDgwKSxMKDgzMDI4KSxMKDQyNzYwKSxMKDEwNDE0KSxMKDY5MTApLEwoNTM5NTApLEwoNjM5NjcpLEwoODM1OTApLEwoMjA2NDcpLEwoNTg1OTQpLEwoNTgzMjQpLEwoOTE5NDUpLEwoNTc5NDMpLEwoOTY2NCksTCg1ODI3Miks''@;'; put 'put ''TCgyNjU3KSxMKDg2NDI3KSxMKDMzNTgzKSxMKDE4MTU4KSxMKDI4NzY0KSxMKDQ1MTM1KSxMKDM0NzcwKSxMKDY0NDE4KSxMKDE2ODI1KSxMKDMwNTcxKSxMKDc2NzQ5KSxMKDgzNjIwKTtmb3IodmFyIFBiZT0wLFFxPVsibXMiLCJtb3oiLCJ3ZWJraXQiLCJvIl0sJFo9d2luZG93LnJlcXVl''@;'; put 'put ''c3RBbmltYXRpb25GcmFtZSxKcT13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUscVo9MDtxWjxRcS5sZW5ndGgmJiEkWjsrK3FaKSRaPXdpbmRvd1siIi5jb25jYXQoUXFbcVpdLCJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKV0sSnE9d2luZG93WyIiLmNvbmNhdChRcVtxWl0sIkNhbmNlbEFu''@;'; put 'put ''aW1hdGlvbkZyYW1lIildfHx3aW5kb3dbIiIuY29uY2F0KFFxW3FaXSwiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lIildO2Z1bmN0aW9uIHQzZShkKXtyZXR1cm4gJFouY2FsbCh3aW5kb3csZCl9ZnVuY3Rpb24gRmJlKCl7cmV0dXJuISFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xh''@;'; put 'put ''c3NMaXN0fWZ1bmN0aW9uIEhiZSgpe3JldHVybiEhZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRlc3QiKS50ZXh0Q29udGVudH1mdW5jdGlvbiBOYmUoKXtyZXR1cm4hIXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlfWZ1bmN0aW9uIGV6KGQpe0pxLmNhbGwod2luZG93LGQpfWZ1bmN0aW9uIG4z''@;'; put 'put ''ZSgpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4gd2luZG93fWZ1bmN0aW9uIGkzZSgpe3JldHVybiB2b2lkIDA9PT1yM2UmJmZ1bmN0aW9uIGpaZSgpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRBQkxFIik7ZC5zdHlsZS5ib3JkZXJTcGFjaW5nPSIwIixkLnN0eWxlLmJvcmRlcldp''@;'; put 'put ''ZHRoPSIwIixkLnN0eWxlLnBhZGRpbmc9IjAiO3ZhciBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRCT0RZIik7ZC5hcHBlbmRDaGlsZChnKSxnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIikpLGcuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh''@;'; put 'put ''dGVFbGVtZW50KCJURCIpKSxnLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5pbm5lckhUTUw9Ijx0cj48dGQ+dDxicj50PC90ZD48L3RyPiI7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQ0FQVElPTiIpO2guaW5uZXJIVE1MPSJjPGJyPmM8YnI+Yzxicj5jIixoLnN0eWxlLnBhZGRpbmc9''@;'; put 'put ''IjAiLGguc3R5bGUubWFyZ2luPSIwIixkLmluc2VydEJlZm9yZShoLGcpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZCkscjNlPWQub2Zmc2V0SGVpZ2h0PDIqZC5sYXN0Q2hpbGQub2Zmc2V0SGVpZ2h0LGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZCl9KCkscjNlfWZ1bmN0aW9uIFZi''@;'; put 'put ''ZShkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIGJPfHwoYk89Im9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBJbnRsPyJ1bmRlZmluZWQiOmUzZShJbnRsKSk/bmV3IEludGwuQ29sbGF0b3IoZCxn''@;'; put 'put ''KS5jb21wYXJlOiJmdW5jdGlvbiI9PXR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmU/ZnVuY3Rpb24odix5KXtyZXR1cm4iIi5jb25jYXQodikubG9jYWxlQ29tcGFyZSh5KX06ZnVuY3Rpb24odix5KXtyZXR1cm4gdj09PXk/MDp2Pnk/LTE6MX0pfWZ1bmN0aW9uIGpiZSgp''@;'; put 'put ''e2lmKHZvaWQgMCE9PXR6KXJldHVybiB0ejt0cnl7dmFyIGQ9e2dldCBwYXNzaXZlKCl7dHo9ITB9fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsZCxkKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsZCxkKX1jYXRjaChnKXt0ej0hMX1yZXR1cm4gdHp9ZnVuY3Rp''@;'; put 'put ''b24gWmJlKGQpe2Zvcih2YXIgZz1kLmxlbmd0aCxoPTA7aDxnOylkW2hdPVtkW2hdXSxoKz0xfWZ1bmN0aW9uIG8zZShkLGcpe2Zvcih2YXIgaD1nLmxlbmd0aCx2PTA7djxoOylkLnB1c2goZ1t2XSksdis9MX1mdW5jdGlvbiBueihkKXt2YXIgZz1bXTtpZighZHx8MD09PWQubGVuZ3RofHwh''@;'; put 'put ''ZFswXXx8MD09PWRbMF0ubGVuZ3RoKXJldHVybiBnO2Zvcih2YXIgaD1kLmxlbmd0aCx2PWRbMF0ubGVuZ3RoLHk9MDt5PGg7eSsrKWZvcih2YXIgQz0wO0M8djtDKyspZ1tDXXx8KGdbQ109W10pLGdbQ11beV09ZFt5XVtDXTtyZXR1cm4gZ31mdW5jdGlvbiBFdShkLGcsaCx2KXt2YXIgeT0t''@;'; put 'put ''MSxDPWQsST1oO0FycmF5LmlzQXJyYXkoZCl8fChDPUFycmF5LmZyb20oZCkpO3ZhciBqPUMubGVuZ3RoO2Zvcih2JiZqJiYoST1DW3krPTFdKSx5Kz0xO3k8ajspST1nKEksQ1t5XSx5LEMpLHkrPTE7cmV0dXJuIEl9ZnVuY3Rpb24gZDQoZCxnKXt2YXIgaD0wLHY9ZDtBcnJheS5pc0FycmF5''@;'; put 'put ''KGQpfHwodj1BcnJheS5mcm9tKGQpKTtmb3IodmFyIHk9di5sZW5ndGgsQz1bXSxJPS0xO2g8eTspe3ZhciBqPXZbaF07ZyhqLGgsdikmJihDW0krPTFdPWopLGgrPTF9cmV0dXJuIEN9ZnVuY3Rpb24gVGwoZCxnKXt2YXIgaD0wLHY9ZDtBcnJheS5pc0FycmF5KGQpfHwodj1BcnJheS5mcm9t''@;'; put 'put ''KGQpKTtmb3IodmFyIHk9di5sZW5ndGgsQz1bXSxJPS0xO2g8eTspQ1tJKz0xXT1nKHZbaF0saCx2KSxoKz0xO3JldHVybiBDfWZ1bmN0aW9uIEdyKGQsZyl7dmFyIGg9MCx2PWQ7QXJyYXkuaXNBcnJheShkKXx8KHY9QXJyYXkuZnJvbShkKSk7Zm9yKHZhciB5PXYubGVuZ3RoO2g8eSYmITEh''@;'; put 'put ''PT1nKHZbaF0saCx2KTspaCs9MTtyZXR1cm4gZH1mdW5jdGlvbiB6YmUoZCl7cmV0dXJuIEV1KGQsZnVuY3Rpb24oZyxoKXtyZXR1cm4gZytofSwwKX1mdW5jdGlvbiBaWmUoZCl7cmV0dXJuIEV1KGQsZnVuY3Rpb24oZyxoKXtyZXR1cm4gZz5oP2c6aH0sQXJyYXkuaXNBcnJheShkKT9kWzBd''@;'; put 'put ''OnZvaWQgMCl9ZnVuY3Rpb24gelplKGQpe3JldHVybiBFdShkLGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGc8aD9nOmh9LEFycmF5LmlzQXJyYXkoZCk/ZFswXTp2b2lkIDApfWZ1bmN0aW9uIEdaZShkKXtyZXR1cm4gZC5sZW5ndGg/emJlKGQpL2QubGVuZ3RoOjB9ZnVuY3Rpb24gR2JlKGQpe3Jl''@;'; put 'put ''dHVybiBFdShkLGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGcuY29uY2F0KEFycmF5LmlzQXJyYXkoaCk/R2JlKGgpOmgpfSxbXSl9ZnVuY3Rpb24gYTNlKGQpe3ZhciBnPVtdO3JldHVybiBHcihkLGZ1bmN0aW9uKGgpey0xPT09Zy5pbmRleE9mKGgpJiZnLnB1c2goaCl9KSxnfWZ1bmN0aW9uIGwz''@;'; put 'put ''ZSgpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGc9bmV3IEFycmF5KGQpLGg9MDtoPGQ7aCsrKWdbaF09YXJndW1lbnRzW2hdO3ZhciB2PVtdLmNvbmNhdChnKSx5PXZbMF0sQz12LnNsaWNlKDEpLEk9eTtyZXR1cm4gR3IoQyxmdW5jdGlvbihqKXtJPUkuZmlsdGVyKGZ1bmN0aW9uKGNl''@;'; put 'put ''KXtyZXR1cm4hai5pbmNsdWRlcyhjZSl9KX0pLEl9ZnVuY3Rpb24gV1plKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsZz1uZXcgQXJyYXkoZCksaD0wO2g8ZDtoKyspZ1toXT1hcmd1bWVudHNbaF07dmFyIHY9W10uY29uY2F0KGcpLHk9dlswXSxDPXYuc2xpY2UoMSksST15O3JldHVy''@;'; put 'put ''biBHcihDLGZ1bmN0aW9uKGope0k9SS5maWx0ZXIoZnVuY3Rpb24oY2Upe3JldHVybiBqLmluY2x1ZGVzKGNlKX0pfSksSX1mdW5jdGlvbiBZWmUoKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxnPW5ldyBBcnJheShkKSxoPTA7aDxkO2grKylnW2hdPWFyZ3VtZW50c1toXTt2YXIgdj1b''@;'; put 'put ''XS5jb25jYXQoZykseT12WzBdLEM9di5zbGljZSgxKSxJPW5ldyBTZXQoeSk7cmV0dXJuIEdyKEMsZnVuY3Rpb24oail7R3IoaixmdW5jdGlvbihjZSl7SS5oYXMoY2UpfHxJLmFkZChjZSl9KX0pLEFycmF5LmZyb20oSSl9ZnVuY3Rpb24gczNlKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiICI7cmV0dXJuIGQuc3BsaXQoZyl9ZnVuY3Rpb24gV2JlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFi''@;'; put 'put ''bGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBfTyhkKXtyZXR1cm4oX089ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBDTyhkKXt2YXIgZztyZXR1cm4gQXJyYXkuaXNBcnJheShkKT9nPVtdOihnPXt9LFpsKGQsZnVuY3Rpb24oaCx2KXsiX19jaGls''@;'; put 'put ''ZHJlbiIhPT12JiYoZ1t2XT1oJiYib2JqZWN0Ij09PV9PKGgpJiYhQXJyYXkuaXNBcnJheShoKT9DTyhoKTpBcnJheS5pc0FycmF5KGgpP2gubGVuZ3RoJiYib2JqZWN0Ij09PV9PKGhbMF0pJiYhQXJyYXkuaXNBcnJheShoWzBdKT9bQ08oaFswXSldOltdOm51bGwpfSkpLGd9ZnVuY3Rpb24g''@;'; put 'put ''SXYoZCxnKXtyZXR1cm4gZy5wcm90b3R5cGUuY29uc3RydWN0b3I9ZyxkLnByb3RvdHlwZT1uZXcgZyxkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kLGR9ZnVuY3Rpb24gUjEoZCxnLGgpe3ZhciB2PUFycmF5LmlzQXJyYXkoaCk7cmV0dXJuIFpsKGcsZnVuY3Rpb24oeSxDKXsoITE9PT12fHxo''@;'; put 'put ''LmluY2x1ZGVzKEMpKSYmKGRbQ109eSl9KSxkfWZ1bmN0aW9uIHJ6KGQsZyl7WmwoZyxmdW5jdGlvbihoLHYpe2dbdl0mJiJvYmplY3QiPT09X08oZ1t2XSk/KGRbdl18fChkW3ZdPUFycmF5LmlzQXJyYXkoZ1t2XSk/W106IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0''@;'; put 'put ''cmluZy5jYWxsKGdbdl0pP2dbdl06e30pLHJ6KGRbdl0sZ1t2XSkpOmRbdl09Z1t2XX0pfWZ1bmN0aW9uIEFoKGQpe3JldHVybiJvYmplY3QiPT09X08oZCk/SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkKSk6ZH1mdW5jdGlvbiBzMyhkKXt2YXIgZz17fTtyZXR1cm4gWmwoZCxmdW5jdGlv''@;'; put 'put ''bihoLHYpe2dbdl09aH0pLGd9ZnVuY3Rpb24gSTIoZCl7ZC5NSVhJTlN8fChkLk1JWElOUz1bXSk7Zm9yKHZhciBnPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZz4xP2ctMTowKSx2PTE7djxnO3YrKyloW3YtMV09YXJndW1lbnRzW3ZdO3JldHVybiBHcihoLGZ1bmN0aW9uKHkpe2Qu''@;'; put 'put ''TUlYSU5TLnB1c2goeS5NSVhJTl9OQU1FKSxabCh5LGZ1bmN0aW9uKEMsSSl7aWYodm9pZCAwIT09ZC5wcm90b3R5cGVbSV0pdGhyb3cgbmV3IEVycm9yKCJNaXhpbiBjb25mbGljdC4gUHJvcGVydHkgJyIuY29uY2F0KEksIicgYWxyZWFkeSBleGlzdCBhbmQgY2Fubm90IGJlIG92ZXJ3cml0''@;'; put 'put ''dGVuLiIpKTt2YXIgUmUsTmUsS2U7ImZ1bmN0aW9uIj09dHlwZW9mIEM/ZC5wcm90b3R5cGVbSV09QzpPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm90b3R5cGUsSSx7Z2V0OihSZT1JLE5lPUMsS2U9Il8iLmNvbmNhdChSZSksZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpc1tLZV0m''@;'; put 'put ''Jih0aGlzW0tlXT0oaG49TmUsKEFycmF5LmlzQXJyYXkoaG4pfHxBbChobikpJiYoaG49QWgoaG4pKSxobikpLHRoaXNbS2VdO3ZhciBobn0pLHNldDpmdW5jdGlvbihSZSl7dmFyIE5lPSJfIi5jb25jYXQoUmUpO3JldHVybiBmdW5jdGlvbihLZSl7dGhpc1tOZV09S2V9fShJKSxjb25maWd1''@;'; put 'put ''cmFibGU6ITB9KX0pfSksZH1mdW5jdGlvbiB1M2UoZCxnKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZCk9PT1KU09OLnN0cmluZ2lmeShnKX1mdW5jdGlvbiBBbChkKXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKX1mdW5jdGlvbiBN''@;'; put 'put ''ZyhkLGcsaCx2KXt2LnZhbHVlPWgsdi53cml0YWJsZT0hMSE9PXYud3JpdGFibGUsdi5lbnVtZXJhYmxlPSExIT09di5lbnVtZXJhYmxlLHYuY29uZmlndXJhYmxlPSExIT09di5jb25maWd1cmFibGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx2KX1mdW5jdGlvbiBabChkLGcpe2Zvcih2''@;'; put 'put ''YXIgaCBpbiBkKWlmKCghZC5oYXNPd25Qcm9wZXJ0eXx8ZC5oYXNPd25Qcm9wZXJ0eSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsaCkpJiYhMT09PWcoZFtoXSxoLGQpKWJyZWFrO3JldHVybiBkfWZ1bmN0aW9uIFliZShkLGcpe3ZhciBoPWcuc3BsaXQoIi4iKSx2''@;'; put 'put ''PWQ7cmV0dXJuIFpsKGgsZnVuY3Rpb24oeSl7aWYodm9pZCAwPT09KHY9dlt5XSkpcmV0dXJuIHY9dm9pZCAwLCExfSksdn1mdW5jdGlvbiBYcShkLGcsaCl7dmFyIHY9Zy5zcGxpdCgiLiIpLHk9ZDt2LmZvckVhY2goZnVuY3Rpb24oQyxJKXtJIT09di5sZW5ndGgtMT8oczEoeSxDKXx8KHlb''@;'; put 'put ''Q109e30pLHk9eVtDXSk6eVtDXT1ofSl9ZnVuY3Rpb24gS3EoZCl7cmV0dXJuIEFsKGQpP2Z1bmN0aW9uIGgodil7dmFyIHk9MDtyZXR1cm4gQWwodik/WmwodixmdW5jdGlvbihDLEkpeyJfX2NoaWxkcmVuIiE9PUkmJih5Kz1oKEMpKX0pOnkrPTEseX0oZCk6MH1mdW5jdGlvbiBGUyhkKXt2''@;'; put 'put ''YXIgZyxoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidmFsdWUiLHY9Il8iLmNvbmNhdChoKSx5PShXYmUoZz17X3RvdWNoZWQ6ITF9LHYsZCksV2JlKGcsImlzVG91Y2hlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG91Y2hlZH0p''@;'; put 'put ''LGcpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoeSxoLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t2XX0sc2V0OmZ1bmN0aW9uKEkpe3RoaXMuX3RvdWNoZWQ9ITAsdGhpc1t2XT1JfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHl9ZnVuY3Rpb24gczEoZCxnKXty''@;'; put 'put ''ZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZyl9JFp8fCgkWj1mdW5jdGlvbihnKXt2YXIgaD0obmV3IERhdGUpLmdldFRpbWUoKSx2PU1hdGgubWF4KDAsMTYtKGgtUGJlKSkseT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2coaCt2KX0sdik7cmV0''@;'; put 'put ''dXJuIFBiZT1oK3YseX0pLEpxfHwoSnE9ZnVuY3Rpb24oZyl7Y2xlYXJUaW1lb3V0KGcpfSksTCgxODMyMyk7dmFyIGVkPWZ1bmN0aW9uKGcpe3ZhciBoPXt2YWx1ZTohMSx0ZXN0OmZ1bmN0aW9uKHYseSl7aC52YWx1ZT1nKHYseSl9fTtyZXR1cm4gaH0scDQ9e2Nocm9tZTplZChmdW5jdGlv''@;'; put 'put ''bihkLGcpe3JldHVybi9DaHJvbWUvLnRlc3QoZCkmJi9Hb29nbGUvLnRlc3QoZyl9KSxjaHJvbWVXZWJLaXQ6ZWQoZnVuY3Rpb24oZCl7cmV0dXJuL0NyaU9TLy50ZXN0KGQpfSksZWRnZTplZChmdW5jdGlvbihkKXtyZXR1cm4vRWRnZS8udGVzdChkKX0pLGVkZ2VXZWJLaXQ6ZWQoZnVuY3Rp''@;'; put 'put ''b24oZCl7cmV0dXJuL0VkZ2lPUy8udGVzdChkKX0pLGZpcmVmb3g6ZWQoZnVuY3Rpb24oZCl7cmV0dXJuL0ZpcmVmb3gvLnRlc3QoZCl9KSxmaXJlZm94V2ViS2l0OmVkKGZ1bmN0aW9uKGQpe3JldHVybi9GeGlPUy8udGVzdChkKX0pLGllOmVkKGZ1bmN0aW9uKGQpe3JldHVybi9UcmlkZW50''@;'; put 'put ''Ly50ZXN0KGQpfSksaWU5OmVkKGZ1bmN0aW9uKCl7cmV0dXJuISFkb2N1bWVudC5kb2N1bWVudE1vZGV9KSxtb2JpbGU6ZWQoZnVuY3Rpb24oZCl7cmV0dXJuL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KGQpfSks''@;'; put 'put ''c2FmYXJpOmVkKGZ1bmN0aW9uKGQsZyl7cmV0dXJuL1NhZmFyaS8udGVzdChkKSYmL0FwcGxlIENvbXB1dGVyLy50ZXN0KGcpfSl9LGtPPXttYWM6ZWQoZnVuY3Rpb24oZCl7cmV0dXJuL15NYWMvLnRlc3QoZCl9KSx3aW46ZWQoZnVuY3Rpb24oZCl7cmV0dXJuL15XaW4vLnRlc3QoZCl9KSxs''@;'; put 'put ''aW51eDplZChmdW5jdGlvbihkKXtyZXR1cm4vXkxpbnV4Ly50ZXN0KGQpfSksaW9zOmVkKGZ1bmN0aW9uKGQpe3JldHVybi9pUGhvbmV8aVBhZHxpUG9kL2kudGVzdChkKX0pfTtmdW5jdGlvbiBVYmUoKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9h''@;'; put 'put ''cmd1bWVudHNbMF06e30sZz1kLnVzZXJBZ2VudCxoPXZvaWQgMD09PWc/bmF2aWdhdG9yLnVzZXJBZ2VudDpnLHY9ZC52ZW5kb3IseT12b2lkIDA9PT12P25hdmlnYXRvci52ZW5kb3I6djtabChwNCxmdW5jdGlvbihDKXsoMCxDLnRlc3QpKGgseSl9KX1mdW5jdGlvbiBRYmUoKXt2YXIgZD1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZz1kLnBsYXRmb3JtLGg9dm9pZCAwPT09Zz9uYXZpZ2F0b3IucGxhdGZvcm06ZztabChrTyxmdW5jdGlvbih2KXsoMCx2LnRlc3QpKGgpfSl9ZnVuY3Rpb24gSmJlKCl7cmV0dXJuIHA0LmNo''@;'; put 'put ''cm9tZS52YWx1ZX1mdW5jdGlvbiBYYmUoKXtyZXR1cm4gcDQuY2hyb21lV2ViS2l0LnZhbHVlfWZ1bmN0aW9uICRxKCl7cmV0dXJuIHA0LmZpcmVmb3gudmFsdWV9ZnVuY3Rpb24gS2JlKCl7cmV0dXJuIHA0LmZpcmVmb3hXZWJLaXQudmFsdWV9ZnVuY3Rpb24gJGJlKCl7cmV0dXJuIHA0LnNh''@;'; put 'put ''ZmFyaS52YWx1ZX1mdW5jdGlvbiBxYmUoKXtyZXR1cm4gcDQuZWRnZS52YWx1ZX1mdW5jdGlvbiBVWmUoKXtyZXR1cm4gcDQuZWRnZVdlYktpdC52YWx1ZX1mdW5jdGlvbiBlX2UoKXtyZXR1cm4gcDQuaWUudmFsdWV9ZnVuY3Rpb24gdF9lKCl7cmV0dXJuIHA0LmllOS52YWx1ZX1mdW5jdGlv''@;'; put 'put ''biBRWmUoKXtyZXR1cm4gcDQuaWUudmFsdWV8fHA0LmVkZ2UudmFsdWV9ZnVuY3Rpb24gbTgoKXtyZXR1cm4gcDQubW9iaWxlLnZhbHVlfWZ1bmN0aW9uIGMzZSgpe3JldHVybiBrTy5pb3MudmFsdWV9ZnVuY3Rpb24gZjNlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm5hdmlnYXRvcixnPWQubWF4VG91Y2hQb2ludHM7cmV0dXJuIGc+MiYma08ubWFjLnZhbHVlfWZ1bmN0aW9uIGgzZSgpe3JldHVybiBrTy53aW4udmFsdWV9ZnVuY3Rpb24gcXEoKXtyZXR1cm4ga08ubWFjLnZhbHVlfWZ1bmN0aW9uIEpaZSgpe3Jl''@;'; put 'put ''dHVybiBrTy5saW51eC52YWx1ZX1VYmUoKSxRYmUoKTt2YXIgbl9lLHJfZSxpX2Usb19lLGFfZSxsX2UsWFplPUwoOTI3MzUpO2Z1bmN0aW9uIEQyKGQpe2Zvcih2YXIgZz1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGc+MT9nLTE6MCksdj0xO3Y8Zzt2KyspaFt2LTFdPWFyZ3VtZW50''@;'; put 'put ''c1t2XTt2YXIgeT1FdShkLGZ1bmN0aW9uKEMsSSxqKXtyZXR1cm4gQytJLnJlcGxhY2UoL1xyP1xuXHMqL2csIiIpKyhoW2pdP2hbal06IiIpfSwiIik7cmV0dXJuIHkudHJpbSgpfWZ1bmN0aW9uIFNPKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX1mdW5jdGlvbiBkM2UoZCl7cmV0dXJuKGQzZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''IGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHExKGQpe3ZhciBnO3N3aXRjaChkM2UoZCkpe2Nhc2Uic3Ry''@;'; put 'put ''aW5nIjpjYXNlIm51bWJlciI6Zz0iIi5jb25jYXQoZCk7YnJlYWs7Y2FzZSJvYmplY3QiOmc9bnVsbD09PWQ/IiI6ZC50b1N0cmluZygpO2JyZWFrO2Nhc2UidW5kZWZpbmVkIjpnPSIiO2JyZWFrO2RlZmF1bHQ6Zz1kLnRvU3RyaW5nKCl9cmV0dXJuIGd9ZnVuY3Rpb24gRW8oZCl7cmV0dXJu''@;'; put 'put ''IHZvaWQgMCE9PWR9ZnVuY3Rpb24gdTEoZCl7cmV0dXJuIHZvaWQgMD09PWR9ZnVuY3Rpb24gZGMoZCl7cmV0dXJuIG51bGw9PT1kfHwiIj09PWR8fHUxKGQpfWZ1bmN0aW9uIHNfZShkKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChk''@;'; put 'put ''KX1MKDgyNzU2KSxMKDE2NjYxKSxMKDc4MjQ2KTt2YXIgYjNlLF8zZSxDM2UsaXo9Imxlbmd0aCIsb3o9ZnVuY3Rpb24oZyl7cmV0dXJuIHBhcnNlSW50KGcsMTYpfSx1X2U9ZnVuY3Rpb24oZyl7cmV0dXJuIHBhcnNlSW50KGcsMTApfSxlZWU9ZnVuY3Rpb24oZyxoLHYpe3JldHVybiBnLnN1''@;'; put 'put ''YnN0cihoLHYpfSxhej1mdW5jdGlvbihnKXtyZXR1cm4gZy5jb2RlUG9pbnRBdCgwKS02NX0scDNlPWZ1bmN0aW9uKGcpe3JldHVybiIiLmNvbmNhdChnKS5yZXBsYWNlKC9cLS9nLCIiKX0sY19lPSExLGZfZT17aW52YWxpZDpmdW5jdGlvbigpe3JldHVybiBEMihuX2V8fChuX2U9U08oWyJc''@;'; put 'put ''biAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBpbnZhbGlkLiBcbiAgICBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzdXBwb3J0QGhhbmRzb250YWJsZS5jb20uIl0sWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBp''@;'; put 'put ''bnZhbGlkLlxceDIwXG4gICAgSWYgeW91IG5lZWQgYW55IGhlbHAsIGNvbnRhY3QgdXMgYXQgc3VwcG9ydEBoYW5kc29udGFibGUuY29tLiJdKSkpfSxleHBpcmVkOmZ1bmN0aW9uKGcpe3ZhciBoPWcua2V5VmFsaWRpdHlEYXRlLHY9Zy5ob3RWZXJzaW9uO3JldHVybiBEMihyX2V8fChyX2U9''@;'; put 'put ''U08oWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9uICIsIiwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZCBcbiAgICB2ZXJzaW9uICIsIi4gUmVuZXcgeW91ciBsaWNlbnNlIGtleSBhdCBoYW5kc29udGFibGUuY29tIG9yIGRvd25n''@;'; put 'put ''cmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3IgXG4gICAgdG8gIiwiLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzYWxlc0BoYW5kc29udGFibGUuY29tLiJdLFsiXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgZXhwaXJlZCBvbiAiLCIs''@;'; put 'put ''IGFuZCBpcyBub3QgdmFsaWQgZm9yIHRoZSBpbnN0YWxsZWRcXHgyMFxuICAgIHZlcnNpb24gIiwiLiBSZW5ldyB5b3VyIGxpY2Vuc2Uga2V5IGF0IGhhbmRzb250YWJsZS5jb20gb3IgZG93bmdyYWRlIHRvIGEgdmVyc2lvbiByZWxlYXNlZCBwcmlvclxceDIwXG4gICAgdG8gIiwiLiBJZiB5''@;'; put 'put ''b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzYWxlc0BoYW5kc29udGFibGUuY29tLiJdKSksaCx2LGgpfSxtaXNzaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIEQyKGlfZXx8KGlfZT1TTyhbIlxuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIG1pc3NpbmcuIFVz''@;'; put 'put ''ZSB5b3VyIHB1cmNoYXNlZCBrZXkgdG8gYWN0aXZhdGUgdGhlIHByb2R1Y3QuIFxuICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWN0aXZhdGUgSGFuZHNvbnRhYmxlIHRvIHVzZSBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgYnkgXG4gICAgcGFzc2luZyB0aGUga2V5OiAnbm9uLWNv''@;'; put 'put ''bW1lcmNpYWwtYW5kLWV2YWx1YXRpb24nLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCBcbiAgICB1cyBhdCBzdXBwb3J0QGhhbmRzb250YWJsZS5jb20uIl0sWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFz''@;'; put 'put ''ZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0LlxceDIwXG4gICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhY3RpdmF0ZSBIYW5kc29udGFibGUgdG8gdXNlIGZvciBub24tY29tbWVyY2lhbCBwdXJwb3NlcyBieVxceDIwXG4gICAgcGFzc2luZyB0aGUga2V5OiAnbm9uLWNvbW1lcmNp''@;'; put 'put ''YWwtYW5kLWV2YWx1YXRpb24nLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdFxceDIwXG4gICAgdXMgYXQgc3VwcG9ydEBoYW5kc29udGFibGUuY29tLiJdKSkpfSxub25fY29tbWVyY2lhbDpmdW5jdGlvbigpe3JldHVybiIifX0saF9lPXtpbnZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IEQyKG9fZXx8KG9fZT1TTyhbJ1xuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIGludmFsaWQuIFxuICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9kb2NzL3R1dG9yaWFsLWxpY2Vuc2Uta2V5Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5SZWFkIG1v''@;'; put 'put ''cmU8L2E+IG9uIGhvdyB0byBcbiAgICBpbnN0YWxsIGl0IHByb3Blcmx5IG9yIGNvbnRhY3QgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbSI+c3VwcG9ydEBoYW5kc29udGFibGUuY29tPC9hPi4nXSxbJ1xuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFu''@;'; put 'put ''ZHNvbnRhYmxlIGlzIGludmFsaWQuXFx4MjBcbiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+UmVhZCBtb3JlPC9hPiBvbiBob3cgdG9cXHgyMFxuICAgIGluc3RhbGwgaXQgcHJvcGVy''@;'; put 'put ''bHkgb3IgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c3VwcG9ydEBoYW5kc29udGFibGUuY29tIj5zdXBwb3J0QGhhbmRzb250YWJsZS5jb208L2E+LiddKSkpfSxleHBpcmVkOmZ1bmN0aW9uKGcpe3ZhciBoPWcua2V5VmFsaWRpdHlEYXRlLHY9Zy5ob3RWZXJzaW9uO3JldHVybiBE''@;'; put 'put ''MihhX2V8fChhX2U9U08oWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9uICIsIiwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZCBcbiAgICB2ZXJzaW9uICIsJy4gPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29udGFibGUuY29tL3ByaWNp''@;'; put 'put ''bmciIHRhcmdldD0iX2JsYW5rIj5SZW5ldzwvYT4geW91ciBcbiAgICBsaWNlbnNlIGtleSBvciBkb3duZ3JhZGUgdG8gYSB2ZXJzaW9uIHJlbGVhc2VkIHByaW9yIHRvICcsJy4gSWYgeW91IG5lZWQgYW55IFxuICAgIGhlbHAsIGNvbnRhY3QgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOnNhbGVz''@;'; put 'put ''QGhhbmRzb250YWJsZS5jb20iPnNhbGVzQGhhbmRzb250YWJsZS5jb208L2E+LiddLFsiXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgZXhwaXJlZCBvbiAiLCIsIGFuZCBpcyBub3QgdmFsaWQgZm9yIHRoZSBpbnN0YWxsZWRcXHgyMFxuICAgIHZlcnNpb24gIiwnLiA8''@;'; put 'put ''YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vcHJpY2luZyIgdGFyZ2V0PSJfYmxhbmsiPlJlbmV3PC9hPiB5b3VyXFx4MjBcbiAgICBsaWNlbnNlIGtleSBvciBkb3duZ3JhZGUgdG8gYSB2ZXJzaW9uIHJlbGVhc2VkIHByaW9yIHRvICcsJy4gSWYgeW91IG5lZWQgYW55XFx4MjBc''@;'; put 'put ''biAgICBoZWxwLCBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzYWxlc0BoYW5kc29udGFibGUuY29tIj5zYWxlc0BoYW5kc29udGFibGUuY29tPC9hPi4nXSkpLGgsdixoKX0sbWlzc2luZzpmdW5jdGlvbigpe3JldHVybiBEMihsX2V8fChsX2U9U08oWydcbiAgICBUaGUgbGljZW5z''@;'; put 'put ''ZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0LiBcbiAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFjdGl2YXRlIEhhbmRzb250YWJsZSB0byB1c2UgZm9yIG5vbi1jb21tZXJjaWFsIHB1cnBv''@;'; put 'put ''c2VzIGJ5IFxuICAgIHBhc3NpbmcgdGhlIGtleTogXCdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvblwnLiBcbiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+UmVhZCBtb3JlPC9h''@;'; put 'put ''PiBhYm91dCBpdCBpbiBcbiAgICB0aGUgZG9jdW1lbnRhdGlvbiBvciBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbTwvYT4uJ10sWydcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250''@;'; put 'put ''YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0LlxceDIwXG4gICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhY3RpdmF0ZSBIYW5kc29udGFibGUgdG8gdXNlIGZvciBub24tY29tbWVyY2lhbCBwdXJwb3NlcyBieVxceDIwXG4g''@;'; put 'put ''ICAgcGFzc2luZyB0aGUga2V5OiBcJ25vbi1jb21tZXJjaWFsLWFuZC1ldmFsdWF0aW9uXCcuXFx4MjBcbiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+UmVhZCBtb3JlPC9hPiBhYm91''@;'; put 'put ''dCBpdCBpblxceDIwXG4gICAgdGhlIGRvY3VtZW50YXRpb24gb3IgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c3VwcG9ydEBoYW5kc29udGFibGUuY29tIj5zdXBwb3J0QGhhbmRzb250YWJsZS5jb208L2E+LiddKSkpfSxub25fY29tbWVyY2lhbDpmdW5jdGlvbigpe3JldHVybiIi''@;'; put 'put ''fX07ZnVuY3Rpb24gZF9lKGQsZyl7dmFyIEMsaD0hZGMoZCksdj0ic3RyaW5nIj09dHlwZW9mIGQmJiJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbiI9PT1kLnRvTG93ZXJDYXNlKCkseT0iMTIuMS4yIixJPSJpbnZhbGlkIixqPSJpbnZhbGlkIixjZT1mdW5jdGlvbiBxWmUoZCl7dmFy''@;'; put 'put ''IGc9W11baXpdLGg9ZztpZihkW2l6XSE9PWF6KCJaIikpcmV0dXJuITE7Zm9yKHZhciB2PSIiLHk9IkI8SDRQKyIuc3BsaXQoIiIpLEM9YXooeS5zaGlmdCgpKTtDO0M9YXooeS5zaGlmdCgpfHwiQSIpKS0tQzwiIltpel0/aHw9KHVfZSgiIi5jb25jYXQodV9lKG96KHYpKyhveihlZWUoZCxN''@;'; put 'put ''YXRoLmFicyhDKSwyKSkrW10pLnBhZFN0YXJ0KDIsIjAiKSkpKSU5N3x8Mik+PjE6dj1lZWUoZCxDLEM/MT09PXlbaXpdPzk6ODo2KTtyZXR1cm4gaD09PWd9KGQ9cDNlKGR8fCIiKSk7aWYoaHx8dnx8Y2UpaWYoY2Upe3ZhciBfZT1rbCgiMDgvMDcvMjAyMiIsIkREL01NL1lZWVkiKSxSZT1N''@;'; put 'put ''YXRoLmZsb29yKF9lLnRvRGF0ZSgpLmdldFRpbWUoKS84NjRlNSksTmU9ZnVuY3Rpb24oZyl7cmV0dXJuIG96KGVlZShwM2UoZyksb3ooIjEyIiksYXooIkYiKSkpLyhveihlZWUocDNlKGcpLGF6KCJCIiksfn4hW11baXpdKSl8fDkpfShkKTtpZihDPWtsKDg2NGU1KihOZSsxKSwieCIpLmZv''@;'; put 'put ''cm1hdCgiTU1NTSBERCwgWVlZWSIpLFJlPk5lKXt2YXIgS2U9a2woKS5kaWZmKF9lLCJkYXlzIik7ST1LZTw9MT8idmFsaWQiOiJleHBpcmVkIixqPUtlPD0xNT8idmFsaWQiOiJleHBpcmVkIn1lbHNlIEk9InZhbGlkIixqPSJ2YWxpZCJ9ZWxzZSB2PyhJPSJub25fY29tbWVyY2lhbCIsaj0i''@;'; put 'put ''dmFsaWQiKTooST0iaW52YWxpZCIsaj0iaW52YWxpZCIpO2Vsc2UgST0ibWlzc2luZyIsaj0ibWlzc2luZyI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBsb2NhdGlvbiYmL14oW2EtejAtOVwtXStcLik/XHg2OFx4NjFceDZFXHg2NFx4NzNceDZGXHg2RVx4NzRceDYxXHg2Mlx4NkNceDY1XHgy''@;'; put 'put ''RVx4NjNceDZGXHg2RCQvaS50ZXN0KGxvY2F0aW9uLmhvc3QpJiYoST0idmFsaWQiLGo9InZhbGlkIiksY19lfHwidmFsaWQiPT09SXx8KGZfZVtJXSh7a2V5VmFsaWRpdHlEYXRlOkMsaG90VmVyc2lvbjp5fSkmJmNvbnNvbGVbIm5vbl9jb21tZXJjaWFsIj09PUk/ImluZm8iOiJ3YXJuIl0o''@;'; put 'put ''Zl9lW0ldKHtrZXlWYWxpZGl0eURhdGU6Qyxob3RWZXJzaW9uOnl9KSksY19lPSEwKSwidmFsaWQiIT09aiYmZy5wYXJlbnROb2RlJiZoX2Vbal0oe2tleVZhbGlkaXR5RGF0ZTpDLGhvdFZlcnNpb246eX0pKXt2YXIgJHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7JHQuaWQ9Imhv''@;'; put 'put ''dC1kaXNwbGF5LWxpY2Vuc2UtaW5mbyIsJHQuaW5uZXJIVE1MPWhfZVtqXSh7a2V5VmFsaWRpdHlEYXRlOkMsaG90VmVyc2lvbjp5fSksZy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSgkdCxnLm5leHRTaWJsaW5nKX19ZnVuY3Rpb24gdGQoZCl7cmV0dXJuIGRbMF0udG9VcHBlckNhc2UoKStk''@;'; put 'put ''LnN1YnN0cigxKX1mdW5jdGlvbiBlemUoKXtmb3IodmFyIGQ9W10sZz1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGcpLHY9MDt2PGc7disrKWhbdl09YXJndW1lbnRzW3ZdO2Zvcih2YXIgeT1oLmxlbmd0aDt5Oyl7dmFyIEM9cTEoaFt5LT0xXSkudG9Mb3dlckNhc2UoKTstMT09PWQu''@;'; put 'put ''aW5kZXhPZihDKSYmZC5wdXNoKEMpfXJldHVybiAxPT09ZC5sZW5ndGh9ZnVuY3Rpb24gZzNlKCl7ZnVuY3Rpb24gZCgpe3JldHVybiBNYXRoLmZsb29yKDY1NTM2KigxK01hdGgucmFuZG9tKCkpKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpfXJldHVybiBkKCkrZCgpK2QoKStkKCl9ZnVu''@;'; put 'put ''Y3Rpb24gbTNlKGQpe3JldHVybi9eKFswLTldWzAtOV0/JSQpfCheMTAwJSQpLy50ZXN0KGQpfWZ1bmN0aW9uIHYzZShkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIiIuY29uY2F0KGQpLnJlcGxhY2UoLyg/''@;'; put 'put ''OlxcKT9cWyhbXltcXV0rKV0vZyxmdW5jdGlvbihoLHYpe3JldHVybiJcXCI9PT1oLmNoYXJBdCgwKT9oLnN1YnN0cigxLGgubGVuZ3RoLTEpOnZvaWQgMD09PWdbdl0/IiI6Z1t2XX0pfWZ1bmN0aW9uIEEzZShkKXtyZXR1cm4gdGVlKCIiLmNvbmNhdChkKSx7QUxMT1dFRF9UQUdTOltdfSl9''@;'; put 'put ''ZnVuY3Rpb24gdGVlKGQsZyl7cmV0dXJuIFhaZS5zYW5pdGl6ZShkLGcpfWZ1bmN0aW9uIHBfZShkKXtyZXR1cm4gZnVuY3Rpb24gaXplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHkzZShkKX0oZCl8fGZ1bmN0aW9uIHJ6ZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBuemUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHkzZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9T''@;'; put 'put ''dHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMy''@;'; put 'put ''KSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4geTNlKGQsZyl9fShkKXx8ZnVuY3Rpb24gdHplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9u''@;'; put 'put ''LWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24geTNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJu''@;'; put 'put ''IHZ9ZnVuY3Rpb24gZ19lKGQpe2Zvcih2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxoPS0xLHY9bnVsbCx5PWQ7bnVsbCE9PXk7KXtpZihoPT09Zyl7dj15O2JyZWFrfXkuaG9zdCYmeS5ub2RlVHlwZT09PU5vZGUuRE9DVU1F''@;'; put 'put ''TlRfRlJBR01FTlRfTk9ERT95PXkuaG9zdDooaCs9MSx5PXkucGFyZW50Tm9kZSl9cmV0dXJuIHZ9ZnVuY3Rpb24gbV9lKGQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZC5wYXJlbnQpJiZkLmZyYW1lRWxlbWVudH1mdW5jdGlvbiB3M2UoZCl7cmV0dXJuIG1fZShkKSYmZC5wYXJl''@;'; put 'put ''bnR9ZnVuY3Rpb24gb3plKGQpe3JldHVybiEhT2JqZWN0LmdldFByb3RvdHlwZU9mKGQucGFyZW50KX1mdW5jdGlvbiBEdihkKXtmb3IodmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLGg9YXJndW1lbnRzLmxlbmd0aD4yP2Fy''@;'; put 'put ''Z3VtZW50c1syXTp2b2lkIDAsdj1Ob2RlLHk9di5FTEVNRU5UX05PREUsQz12LkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUsST1kO251bGwhPUkmJkkhPT1oOyl7dmFyIGo9SSxjZT1qLm5vZGVUeXBlLF9lPWoubm9kZU5hbWU7aWYoY2U9PT15JiYoZy5pbmNsdWRlcyhfZSl8fGcuaW5jbHVkZXMo''@;'; put 'put ''SSkpKXJldHVybiBJO3ZhciBSZT1JLE5lPVJlLmhvc3Q7ST1OZSYmY2U9PT1DP05lOkkucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBseihkLGcsaCl7Zm9yKHZhciB2PVtdLHk9ZDt5JiYoeT1Edih5LGcsaCkpJiYoIWh8fGguY29udGFpbnMoeSkpOyl2LnB1c2goeSkseT15Lmhv''@;'; put 'put ''c3QmJnkubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/eS5ob3N0OnkucGFyZW50Tm9kZTt2YXIgQz12Lmxlbmd0aDtyZXR1cm4gQz92W0MtMV06bnVsbH1mdW5jdGlvbiBEdyhkLGcpe3ZhciBoPWQucGFyZW50Tm9kZSx2PVtdO2Zvcigic3RyaW5nIj09dHlwZW9mIGc/''@;'; put 'put ''dj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkLmRlZmF1bHRWaWV3P2QucXVlcnlTZWxlY3RvckFsbChnKTpkLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChnKSwwKTp2LnB1c2goZyk7bnVsbCE9PWg7KXtpZih2LmluZGV4T2YoaCk+LTEpcmV0dXJuITA7aD1oLnBhcmVudE5v''@;'; put 'put ''ZGV9cmV0dXJuITF9ZnVuY3Rpb24gdl9lKGQpe3ZhciBnPTAsaD1kO2lmKGgucHJldmlvdXNTaWJsaW5nKWZvcig7aD1oLnByZXZpb3VzU2libGluZzspZys9MTtyZXR1cm4gZ31mdW5jdGlvbiBMdyhkLGcsaCl7dmFyIHY9aC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5odF9jbG9u''@;'; put 'put ''ZV8iLmNvbmNhdChkKSk7cmV0dXJuIHY/di5jb250YWlucyhnKTpudWxsfWZ1bmN0aW9uIG5lZShkKXtyZXR1cm4gZCYmZC5sZW5ndGg/ZC5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuISFnfSk6W119aWYoRmJlKCkpe3ZhciBBX2U9ZnVuY3Rpb24oZyl7dmFyIGg9Zy5jcmVhdGVFbGVtZW50''@;'; put 'put ''KCJkaXYiKTtyZXR1cm4gaC5jbGFzc0xpc3QuYWRkKCJ0ZXN0IiwidGVzdDIiKSxoLmNsYXNzTGlzdC5jb250YWlucygidGVzdDIiKX07YjNlPWZ1bmN0aW9uKGcsaCl7cmV0dXJuIHZvaWQgMCE9PWcuY2xhc3NMaXN0JiYic3RyaW5nIj09dHlwZW9mIGgmJiIiIT09aCYmZy5jbGFzc0xpc3Qu''@;'; put 'put ''Y29udGFpbnMoaCl9LF8zZT1mdW5jdGlvbihnLGgpe3ZhciB2PWcub3duZXJEb2N1bWVudCx5PWg7aWYoInN0cmluZyI9PXR5cGVvZiB5JiYoeT15LnNwbGl0KCIgIikpLCh5PW5lZSh5KSkubGVuZ3RoPjApaWYoQV9lKHYpKXt2YXIgQzsoQz1nLmNsYXNzTGlzdCkuYWRkLmFwcGx5KEMscF9l''@;'; put 'put ''KHkpKX1lbHNlIGZvcih2YXIgST0wO3lbSV07KWcuY2xhc3NMaXN0LmFkZCh5W0ldKSxJKz0xfSxDM2U9ZnVuY3Rpb24oZyxoKXt2YXIgdj1nLm93bmVyRG9jdW1lbnQseT1oO2lmKCJzdHJpbmciPT10eXBlb2YgeSYmKHk9eS5zcGxpdCgiICIpKSwoeT1uZWUoeSkpLmxlbmd0aD4wKWlmKEFf''@;'; put 'put ''ZSh2KSl7dmFyIEM7KEM9Zy5jbGFzc0xpc3QpLnJlbW92ZS5hcHBseShDLHBfZSh5KSl9ZWxzZSBmb3IodmFyIEk9MDt5W0ldOylnLmNsYXNzTGlzdC5yZW1vdmUoeVtJXSksSSs9MX19ZWxzZXt2YXIgazNlPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgUmVnRXhwKCIoXFxzfF4pIi5jb25jYXQo''@;'; put 'put ''ZywiKFxcc3wkKSIpKX07YjNlPWZ1bmN0aW9uKGcsaCl7cmV0dXJuIHZvaWQgMCE9PWcuY2xhc3NOYW1lJiZrM2UoaCkudGVzdChnLmNsYXNzTmFtZSl9LF8zZT1mdW5jdGlvbihnLGgpe3ZhciB2PWcuY2xhc3NOYW1lLHk9aDtpZigic3RyaW5nIj09dHlwZW9mIHkmJih5PXkuc3BsaXQoIiAi''@;'; put 'put ''KSkseT1uZWUoeSksIiI9PT12KXY9eS5qb2luKCIgIik7ZWxzZSBmb3IodmFyIEM9MDtDPHkubGVuZ3RoO0MrKyl5W0NdJiYhazNlKHlbQ10pLnRlc3QodikmJih2Kz0iICIuY29uY2F0KHlbQ10pKTtnLmNsYXNzTmFtZT12fSxDM2U9ZnVuY3Rpb24oZyxoKXt2YXIgdj0wLHk9Zy5jbGFzc05h''@;'; put 'put ''bWUsQz1oO2Zvcigic3RyaW5nIj09dHlwZW9mIEMmJihDPUMuc3BsaXQoIiAiKSksQz1uZWUoQyk7Q1t2XTspeT15LnJlcGxhY2UoazNlKENbdl0pLCIgIikudHJpbSgpLHYrPTE7Zy5jbGFzc05hbWUhPT15JiYoZy5jbGFzc05hbWU9eSl9fWZ1bmN0aW9uIFhhKGQsZyl7cmV0dXJuIGIzZShk''@;'; put 'put ''LGcpfWZ1bmN0aW9uIFAwKGQsZyl7XzNlKGQsZyl9ZnVuY3Rpb24gdWwoZCxnKXtDM2UoZCxnKX1mdW5jdGlvbiBTM2UoZCl7aWYoMz09PWQubm9kZVR5cGUpZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpO2Vsc2UgaWYoWyJUQUJMRSIsIlRIRUFEIiwiVEJPRFkiLCJURk9PVCIsIlRSIl0u''@;'; put 'put ''aW5kZXhPZihkLm5vZGVOYW1lKT4tMSlmb3IodmFyIGc9ZC5jaGlsZE5vZGVzLGg9Zy5sZW5ndGgtMTtoPj0wO2gtLSlTM2UoZ1toXSl9ZnVuY3Rpb24gQ3AoZCl7Zm9yKHZhciBnO2c9ZC5sYXN0Q2hpbGQ7KWQucmVtb3ZlQ2hpbGQoZyl9dmFyIHgzZSx5X2U9Lyg8KC4qKT58JiguKik7KS87''@;'; put 'put ''ZnVuY3Rpb24gT3coZCxnKXt2YXIgaD0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3lfZS50ZXN0KGcpP2QuaW5uZXJIVE1MPWg/dGVlKGcpOmc6UncoZCxnKX1mdW5jdGlvbiBSdyhkLGcpe3ZhciBoPWQuZmlyc3RDaGlsZDtoJiYz''@;'; put 'put ''PT09aC5ub2RlVHlwZSYmbnVsbD09PWgubmV4dFNpYmxpbmc/SGJlP2gudGV4dENvbnRlbnQ9ZzpoLmRhdGE9ZzooQ3AoZCksZC5hcHBlbmRDaGlsZChkLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZykpKX1mdW5jdGlvbiBNTyhkKXtmb3IodmFyIGc9ZC5vd25lckRvY3VtZW50LmRv''@;'; put 'put ''Y3VtZW50RWxlbWVudCxoPWQ7aCE9PWc7KXtpZihudWxsPT09aClyZXR1cm4hMTtpZihoLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXtpZihoLmhvc3Qpe2lmKGguaG9zdC5pbXBsKXJldHVybiBNTyhoLmhvc3QuaW1wbCk7aWYoaC5ob3N0KXJldHVybiBNTyhoLmhv''@;'; put 'put ''c3QpO3Rocm93IG5ldyBFcnJvcigiTG9zdCBpbiBXZWIgQ29tcG9uZW50cyB3b3JsZCIpfXJldHVybiExfWlmKGguc3R5bGUmJiJub25lIj09PWguc3R5bGUuZGlzcGxheSlyZXR1cm4hMTtoPWgucGFyZW50Tm9kZX1yZXR1cm4hMH1mdW5jdGlvbiB6dShkKXt2YXIgQyxJLGosY2UsZz1kLm93''@;'; put 'put ''bmVyRG9jdW1lbnQsaD1nLmRlZmF1bHRWaWV3LHY9Zy5kb2N1bWVudEVsZW1lbnQseT1kO2lmKGkzZSgpJiZ5LmZpcnN0Q2hpbGQmJiJDQVBUSU9OIj09PXkuZmlyc3RDaGlsZC5ub2RlTmFtZSlyZXR1cm57dG9wOihjZT15LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS50b3ArKGgucGFnZVlP''@;'; put 'put ''ZmZzZXR8fHYuc2Nyb2xsVG9wKS0odi5jbGllbnRUb3B8fDApLGxlZnQ6Y2UubGVmdCsoaC5wYWdlWE9mZnNldHx8di5zY3JvbGxMZWZ0KS0odi5jbGllbnRMZWZ0fHwwKX07Zm9yKEM9eS5vZmZzZXRMZWZ0LEk9eS5vZmZzZXRUb3Asaj15Oyh5PXkub2Zmc2V0UGFyZW50KSYmeSE9PWcuYm9k''@;'; put 'put ''eTspQys9eS5vZmZzZXRMZWZ0LEkrPXkub2Zmc2V0VG9wLGo9eTtyZXR1cm4gaiYmImZpeGVkIj09PWouc3R5bGUucG9zaXRpb24mJihDKz1oLnBhZ2VYT2Zmc2V0fHx2LnNjcm9sbExlZnQsSSs9aC5wYWdlWU9mZnNldHx8di5zY3JvbGxUb3ApLHtsZWZ0OkMsdG9wOkl9fWZ1bmN0aW9uIEVP''@;'; put 'put ''KCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdyxnPWQuc2Nyb2xsWTtyZXR1cm4gdm9pZCAwPT09ZyYmKGc9ZC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKSxnfWZ1bmN0aW9uIEhTKCl7dmFyIGQ9''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdyxnPWQuc2Nyb2xsWDtyZXR1cm4gdm9pZCAwPT09ZyYmKGc9ZC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCksZ31mdW5jdGlvbiBzeihkKXt2YXIgZz1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06d2luZG93O3JldHVybiBkPT09Zz9FTyhnKTpkLnNjcm9sbFRvcH1mdW5jdGlvbiByZWUoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOndp''@;'; put 'put ''bmRvdztyZXR1cm4gZD09PWc/SFMoZyk6ZC5zY3JvbGxMZWZ0fWZ1bmN0aW9uIHV6KGQpe3ZhciBnPWQub3duZXJEb2N1bWVudCxoPWc/Zy5kZWZhdWx0Vmlldzp2b2lkIDA7Z3x8KGg9KGc9ZC5kb2N1bWVudD9kLmRvY3VtZW50OmQpLmRlZmF1bHRWaWV3KTtmb3IodmFyIHY9WyJhdXRvIiwi''@;'; put 'put ''c2Nyb2xsIl0seT1OYmUoKSxDPWQucGFyZW50Tm9kZTtDJiZDLnN0eWxlJiZnLmJvZHkhPT1DOyl7dmFyIEk9Qy5zdHlsZSxqPUkub3ZlcmZsb3csY2U9SS5vdmVyZmxvd1gsX2U9SS5vdmVyZmxvd1k7aWYoW2osY2UsX2VdLmluY2x1ZGVzKCJzY3JvbGwiKSlyZXR1cm4gQztpZih5KXt2YXIg''@;'; put 'put ''UmU9aC5nZXRDb21wdXRlZFN0eWxlKEMpO2lmKGNlPVJlLm92ZXJmbG93WCxfZT1SZS5vdmVyZmxvd1ksdi5pbmNsdWRlcyhqPVJlLm92ZXJmbG93KXx8di5pbmNsdWRlcyhjZSl8fHYuaW5jbHVkZXMoX2UpKXJldHVybiBDfWlmKEMuY2xpZW50SGVpZ2h0PD1DLnNjcm9sbEhlaWdodCsxJiYo''@;'; put 'put ''di5pbmNsdWRlcyhfZSl8fHYuaW5jbHVkZXMoaikpfHxDLmNsaWVudFdpZHRoPD1DLnNjcm9sbFdpZHRoKzEmJih2LmluY2x1ZGVzKGNlKXx8di5pbmNsdWRlcyhqKSkpcmV0dXJuIEM7Qz1DLnBhcmVudE5vZGV9cmV0dXJuIGh9ZnVuY3Rpb24geE8oZCl7Zm9yKHZhciBnPWQub3duZXJEb2N1''@;'; put 'put ''bWVudCxoPWcuZGVmYXVsdFZpZXcsdj1kLnBhcmVudE5vZGU7diYmdi5zdHlsZSYmZy5ib2R5IT09djspe2lmKCJ2aXNpYmxlIiE9PXYuc3R5bGUub3ZlcmZsb3cmJiIiIT09di5zdHlsZS5vdmVyZmxvdylyZXR1cm4gdjt2YXIgeT1Cdyh2LGgpLEM9WyJzY3JvbGwiLCJoaWRkZW4iLCJhdXRv''@;'; put 'put ''Il0sST15LmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iiksaj15LmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93LXkiKSxjZT15LmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93LXgiKTtpZihDLmluY2x1ZGVzKEkpfHxDLmluY2x1ZGVzKGopfHxDLmluY2x1ZGVzKGNlKSlyZXR1cm4gdjt2''@;'; put 'put ''PXYucGFyZW50Tm9kZX1yZXR1cm4gaH1mdW5jdGlvbiBpZWUoZCxnKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06d2luZG93O2lmKGQpe2lmKGQ9PT1oKXJldHVybiJ3aWR0aCI9PT1nPyIiLmNvbmNhdChoLmlubmVyV2lkdGgs''@;'; put 'put ''InB4Iik6ImhlaWdodCI9PT1nPyIiLmNvbmNhdChoLmlubmVySGVpZ2h0LCJweCIpOnZvaWQgMDt2YXIgdj1kLnN0eWxlW2ddO2lmKCIiIT09diYmdm9pZCAwIT09dilyZXR1cm4gdjt2YXIgeT1CdyhkLGgpO3JldHVybiIiIT09eVtnXSYmdm9pZCAwIT09eVtnXT95W2ddOnZvaWQgMH19ZnVu''@;'; put 'put ''Y3Rpb24gYXplKGQsZyl7dmFyIGg9Zy5zZWxlY3RvclRleHQsdj0hMTtyZXR1cm4gZy50eXBlPT09Q1NTUnVsZS5TVFlMRV9SVUxFJiZoJiYoZC5tc01hdGNoZXNTZWxlY3Rvcj92PWQubXNNYXRjaGVzU2VsZWN0b3IoaCk6ZC5tYXRjaGVzJiYodj1kLm1hdGNoZXMoaCkpKSx2fWZ1bmN0aW9u''@;'; put 'put ''IEJ3KGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cmV0dXJuIGQuY3VycmVudFN0eWxlfHxnLmdldENvbXB1dGVkU3R5bGUoZCl9ZnVuY3Rpb24gdzIoZCl7cmV0dXJuIGQub2Zmc2V0V2lkdGh9ZnVuY3Rpb24g''@;'; put 'put ''QjEoZCl7cmV0dXJuIGkzZSgpJiZkLmZpcnN0Q2hpbGQmJiJDQVBUSU9OIj09PWQuZmlyc3RDaGlsZC5ub2RlTmFtZT9kLm9mZnNldEhlaWdodCtkLmZpcnN0Q2hpbGQub2Zmc2V0SGVpZ2h0OmQub2Zmc2V0SGVpZ2h0fWZ1bmN0aW9uIEx2KGQpe3JldHVybiBkLmNsaWVudEhlaWdodHx8ZC5p''@;'; put 'put ''bm5lckhlaWdodH1mdW5jdGlvbiBjeihkKXtyZXR1cm4gZC5jbGllbnRXaWR0aHx8ZC5pbm5lcldpZHRofWZ1bmN0aW9uIGx6ZShkLGcsaCl7ZC5hZGRFdmVudExpc3RlbmVyKGcsaCwhMSl9ZnVuY3Rpb24gc3plKGQsZyxoKXtkLnJlbW92ZUV2ZW50TGlzdGVuZXIoZyxoLCExKX1mdW5jdGlv''@;'; put 'put ''biBNM2UoZCl7dmFyIGc9ZC5vd25lckRvY3VtZW50O2lmKGQuc2VsZWN0aW9uU3RhcnQpcmV0dXJuIGQuc2VsZWN0aW9uU3RhcnQ7aWYoZy5zZWxlY3Rpb24pe2QuZm9jdXMoKTt2YXIgaD1nLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO2lmKG51bGw9PT1oKXJldHVybiAwO3ZhciB2PWQuY3Jl''@;'; put 'put ''YXRlVGV4dFJhbmdlKCkseT12LmR1cGxpY2F0ZSgpO3JldHVybiB2Lm1vdmVUb0Jvb2ttYXJrKGguZ2V0Qm9va21hcmsoKSkseS5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsdikseS50ZXh0Lmxlbmd0aH1yZXR1cm4gMH1mdW5jdGlvbiB3X2UoZCl7dmFyIGc9ZC5vd25lckRvY3VtZW50O2lm''@;'; put 'put ''KGQuc2VsZWN0aW9uRW5kKXJldHVybiBkLnNlbGVjdGlvbkVuZDtpZihnLnNlbGVjdGlvbil7dmFyIGg9Zy5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtyZXR1cm4gbnVsbD09PWg/MDpkLmNyZWF0ZVRleHRSYW5nZSgpLnRleHQuaW5kZXhPZihoLnRleHQpK2gudGV4dC5sZW5ndGh9cmV0dXJu''@;'; put 'put ''IDB9ZnVuY3Rpb24gYl9lKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdyxnPWQuZG9jdW1lbnQsaD0iIjtyZXR1cm4gZC5nZXRTZWxlY3Rpb24/aD1kLmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk6Zy5zZWxlY3Rp''@;'; put 'put ''b24mJiJDb250cm9sIiE9PWcuc2VsZWN0aW9uLnR5cGUmJihoPWcuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkudGV4dCksaH1mdW5jdGlvbiBFM2UoKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LGc9ZC5kb2N1bWVu''@;'; put 'put ''dDtkLmdldFNlbGVjdGlvbj9kLmdldFNlbGVjdGlvbigpLmVtcHR5P2QuZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTpkLmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcyYmZC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTpnLnNlbGVjdGlvbiYmZy5zZWxlY3Rpb24uZW1wdHko''@;'; put 'put ''KX1mdW5jdGlvbiBmeihkLGcsaCl7aWYodm9pZCAwPT09aCYmKGg9ZyksZC5zZXRTZWxlY3Rpb25SYW5nZSl7ZC5mb2N1cygpO3RyeXtkLnNldFNlbGVjdGlvblJhbmdlKGcsaCl9Y2F0Y2goQyl7dmFyIHY9ZC5wYXJlbnROb2RlLHk9di5zdHlsZS5kaXNwbGF5O3Yuc3R5bGUuZGlzcGxheT0i''@;'; put 'put ''YmxvY2siLGQuc2V0U2VsZWN0aW9uUmFuZ2UoZyxoKSx2LnN0eWxlLmRpc3BsYXk9eX19fWZ1bmN0aW9uIHV6ZSgpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpkb2N1bWVudCxnPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zy5z''@;'; put 'put ''dHlsZS5oZWlnaHQ9IjIwMHB4IixnLnN0eWxlLndpZHRoPSIxMDAlIjt2YXIgaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2guc3R5bGUuYm94U2l6aW5nPSJjb250ZW50LWJveCIsaC5zdHlsZS5oZWlnaHQ9IjE1MHB4IixoLnN0eWxlLmxlZnQ9IjBweCIsaC5zdHlsZS5vdmVyZmxvdz0iaGlk''@;'; put 'put ''ZGVuIixoLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaC5zdHlsZS50b3A9IjBweCIsaC5zdHlsZS53aWR0aD0iMjAwcHgiLGguc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixoLmFwcGVuZENoaWxkKGcpLChkLmJvZHl8fGQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChoKTt2YXIg''@;'; put 'put ''dj1nLm9mZnNldFdpZHRoO2guc3R5bGUub3ZlcmZsb3c9InNjcm9sbCI7dmFyIHk9Zy5vZmZzZXRXaWR0aDtyZXR1cm4gdj09PXkmJih5PWguY2xpZW50V2lkdGgpLChkLmJvZHl8fGQuZG9jdW1lbnRFbGVtZW50KS5yZW1vdmVDaGlsZChoKSx2LXl9ZnVuY3Rpb24gUGMoKXt2YXIgZD1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ZG9jdW1lbnQ7cmV0dXJuIHZvaWQgMD09PXgzZSYmKHgzZT11emUoZCkpLHgzZX1mdW5jdGlvbiBDX2UoZCl7cmV0dXJuIGQub2Zmc2V0V2lkdGghPT1kLmNsaWVudFdpZHRofWZ1bmN0aW9uIGtfZShk''@;'; put 'put ''KXtyZXR1cm4gZC5vZmZzZXRIZWlnaHQhPT1kLmNsaWVudEhlaWdodH1mdW5jdGlvbiBvZWUoZCxnLGgpe3RfZSgpPyhkLnN0eWxlLnRvcD1oLGQuc3R5bGUubGVmdD1nKTokYmUoKT9kLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdPSJ0cmFuc2xhdGUzZCgiLmNvbmNhdChnLCIsIikuY29u''@;'; put 'put ''Y2F0KGgsIiwwKSIpOmQuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGUzZCgiLmNvbmNhdChnLCIsIikuY29uY2F0KGgsIiwwKSIpfWZ1bmN0aW9uIGN6ZShkKXt2YXIgZztyZXR1cm4gZC5zdHlsZS50cmFuc2Zvcm0mJiIiIT09KGc9ZC5zdHlsZS50cmFuc2Zvcm0pP1sidHJhbnNmb3JtIixn''@;'; put 'put ''XTpkLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdJiYiIiE9PShnPWQuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl0pP1siLXdlYmtpdC10cmFuc2Zvcm0iLGddOi0xfWZ1bmN0aW9uIGh6KGQpe2Quc3R5bGUudHJhbnNmb3JtJiYiIiE9PWQuc3R5bGUudHJhbnNmb3JtP2Quc3R5bGUudHJh''@;'; put 'put ''bnNmb3JtPSIiOmQuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl0mJiIiIT09ZC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXSYmKGQuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl09IiIpfWZ1bmN0aW9uIGR6KGQpe3JldHVybiBkJiYoWyJJTlBVVCIsIlNFTEVDVCIsIlRFWFRBUkVBIl0u''@;'; put 'put ''aW5kZXhPZihkLm5vZGVOYW1lKT4tMXx8InRydWUiPT09ZC5jb250ZW50RWRpdGFibGUpfWZ1bmN0aW9uIFQzZShkKXtyZXR1cm4gZHooZCkmJiExPT09ZC5oYXNBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0Iil9ZnVuY3Rpb24gU19lKGQpe1QzZShkLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxl''@;'; put 'put ''bWVudCl8fGQuc2VsZWN0KCl9ZnVuY3Rpb24gSTNlKGQpe3JldHVybiFkLnBhcmVudE5vZGV9ZnVuY3Rpb24gVTIoZCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGR9ZnVuY3Rpb24gTV9lKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3Vt''@;'; put 'put ''ZW50c1sxXToyMDAsaD0wLHY9e2xhc3RDYWxsVGhyb3R0bGVkOiEwfSx5PW51bGw7ZnVuY3Rpb24gQygpe2Zvcih2YXIgST10aGlzLGo9YXJndW1lbnRzLmxlbmd0aCxjZT1uZXcgQXJyYXkoaiksX2U9MDtfZTxqO19lKyspY2VbX2VdPWFyZ3VtZW50c1tfZV07dmFyIFJlPURhdGUubm93KCks''@;'; put 'put ''TmU9ITE7di5sYXN0Q2FsbFRocm90dGxlZD0hMCxofHwoaD1SZSxOZT0hMCk7dmFyIEtlPWctKFJlLWgpO3JldHVybiBOZT8odi5sYXN0Q2FsbFRocm90dGxlZD0hMSxkLmFwcGx5KHRoaXMsY2UpKTooeSYmY2xlYXJUaW1lb3V0KHkpLHk9c2V0VGltZW91dChmdW5jdGlvbigpe3YubGFzdENh''@;'; put 'put ''bGxUaHJvdHRsZWQ9ITEsZC5hcHBseShJLGNlKSxoPTAseT12b2lkIDB9LEtlKSksdn1yZXR1cm4gQ31mdW5jdGlvbiBmemUoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjIwMCxoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9p''@;'; put 'put ''ZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMCx2PU1fZShkLGcpLHk9aDtmdW5jdGlvbiBDKCl7eT1ofWZ1bmN0aW9uIEkoKXtmb3IodmFyIGo9YXJndW1lbnRzLmxlbmd0aCxjZT1uZXcgQXJyYXkoaiksX2U9MDtfZTxqO19lKyspY2VbX2VdPWFyZ3VtZW50c1tfZV07cmV0dXJu''@;'; put 'put ''IHk/KHktPTEsZC5hcHBseSh0aGlzLGNlKSk6di5hcHBseSh0aGlzLGNlKX1yZXR1cm4gSS5jbGVhckhpdHM9QyxJfWZ1bmN0aW9uIEQzZShkKXt2YXIgdixnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyMDAsaD1udWxsO2Z1bmN0aW9u''@;'; put 'put ''IHkoKXtmb3IodmFyIEM9dGhpcyxJPWFyZ3VtZW50cy5sZW5ndGgsaj1uZXcgQXJyYXkoSSksY2U9MDtjZTxJO2NlKyspaltjZV09YXJndW1lbnRzW2NlXTtyZXR1cm4gaCYmY2xlYXJUaW1lb3V0KGgpLGg9c2V0VGltZW91dChmdW5jdGlvbigpe3Y9ZC5hcHBseShDLGopfSxnKSx2fXJldHVy''@;'; put 'put ''biB5fWZ1bmN0aW9uIGh6ZSgpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGc9bmV3IEFycmF5KGQpLGg9MDtoPGQ7aCsrKWdbaF09YXJndW1lbnRzW2hdO3ZhciB2PWdbMF0seT1nLnNsaWNlKDEpO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLGo9bmV3''@;'; put 'put ''IEFycmF5KEkpLGNlPTA7Y2U8STtjZSsrKWpbY2VdPWFyZ3VtZW50c1tjZV07cmV0dXJuIEV1KHksZnVuY3Rpb24oX2UsUmUpe3JldHVybiBSZShfZSl9LHYuYXBwbHkodGhpcyxqKSl9fWZ1bmN0aW9uIEwzZShkKXtmb3IodmFyIGc9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShnPjE/''@;'; put 'put ''Zy0xOjApLHY9MTt2PGc7disrKWhbdi0xXT1hcmd1bWVudHNbdl07cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBDPWFyZ3VtZW50cy5sZW5ndGgsST1uZXcgQXJyYXkoQyksaj0wO2o8QztqKyspSVtqXT1hcmd1bWVudHNbal07cmV0dXJuIGQuYXBwbHkodGhpcyxoLmNvbmNhdChJKSl9fWZ1''@;'; put 'put ''bmN0aW9uIEVfZShkKXt2YXIgZz1kLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24gaCh2KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIEM9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShDKSxqPTA7ajxDO2orKylJW2pdPWFyZ3VtZW50c1tqXTt2YXIgY2U9di5jb25jYXQoSSk7cmV0dXJu''@;'; put 'put ''IGNlLmxlbmd0aD49Zz9kLmFwcGx5KHRoaXMsY2UpOmgoY2UpfX0oW10pfWZ1bmN0aW9uIGR6ZShkKXt2YXIgZz1kLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24gaCh2KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIEM9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShDKSxqPTA7ajxDO2or''@;'; put 'put ''KylJW2pdPWFyZ3VtZW50c1tqXTt2YXIgY2U9di5jb25jYXQoSS5yZXZlcnNlKCkpO3JldHVybiBjZS5sZW5ndGg+PWc/ZC5hcHBseSh0aGlzLGNlKTpoKGNlKX19KFtdKX1mdW5jdGlvbiBhZWUoZCxnLGgsdix5LEMsSSxqKXtyZXR1cm4gRW8oaik/ZC5jYWxsKGcsaCx2LHksQyxJLGopOkVv''@;'; put 'put ''KEkpP2QuY2FsbChnLGgsdix5LEMsSSk6RW8oQyk/ZC5jYWxsKGcsaCx2LHksQyk6RW8oeSk/ZC5jYWxsKGcsaCx2LHkpOkVvKHYpP2QuY2FsbChnLGgsdik6RW8oaCk/ZC5jYWxsKGcsaCk6ZC5jYWxsKGcpfUwoNjUxMjUpO3ZhciBJX2UsWW89e0FMVDoxOCxBUlJPV19ET1dOOjQwLEFSUk9X''@;'; put 'put ''X0xFRlQ6MzcsQVJST1dfUklHSFQ6MzksQVJST1dfVVA6MzgsQVVESU9fRE9XTjokcSgpPzE4MjoxNzQsQVVESU9fTVVURTokcSgpPzE4MToxNzMsQVVESU9fVVA6JHEoKT8xODM6MTc1LEJBQ0tTUEFDRTo4LENBUFNfTE9DSzoyMCxDT01NQToxODgsQ09NTUFORF9MRUZUOjkxLENPTU1BTkRf''@;'; put 'put ''UklHSFQ6OTMsQ09NTUFORF9GSVJFRk9YOjIyNCxDT05UUk9MOjE3LERFTEVURTo0NixFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEYxOjExMixGMjoxMTMsRjM6MTE0LEY0OjExNSxGNToxMTYsRjY6MTE3LEY3OjExOCxGODoxMTksRjk6MTIwLEYxMDoxMjEsRjExOjEyMixGMTI6MTIzLEYx''@;'; put 'put ''MzoxMjQsRjE0OjEyNSxGMTU6MTI2LEYxNjoxMjcsRjE3OjEyOCxGMTg6MTI5LEYxOToxMzAsSE9NRTozNixJTlNFUlQ6NDUsTUVESUFfTkVYVDoxNzYsTUVESUFfUExBWV9QQVVTRToxNzksTUVESUFfUFJFVjoxNzcsTUVESUFfU1RPUDoxNzgsTlVMTDowLE5VTV9MT0NLOjE0NCxQQUdFX0RP''@;'; put 'put ''V046MzQsUEFHRV9VUDozMyxQQVVTRToxOSxQRVJJT0Q6MTkwLFNDUk9MTF9MT0NLOjE0NSxTSElGVDoxNixTUEFDRTozMixUQUI6OSxBOjY1LEM6NjcsRDo2OCxGOjcwLEw6NzYsTzo3OSxQOjgwLFM6ODMsVjo4NixYOjg4LFk6ODksWjo5MH0scHplPVtZby5BTFQsWW8uQVJST1dfRE9XTixZ''@;'; put 'put ''by5BUlJPV19MRUZULFlvLkFSUk9XX1JJR0hULFlvLkFSUk9XX1VQLFlvLkFVRElPX0RPV04sWW8uQVVESU9fTVVURSxZby5BVURJT19VUCxZby5CQUNLU1BBQ0UsWW8uQ0FQU19MT0NLLFlvLkRFTEVURSxZby5FTkQsWW8uRU5URVIsWW8uRVNDQVBFLFlvLkYxLFlvLkYyLFlvLkYzLFlvLkY0''@;'; put 'put ''LFlvLkY1LFlvLkY2LFlvLkY3LFlvLkY4LFlvLkY5LFlvLkYxMCxZby5GMTEsWW8uRjEyLFlvLkYxMyxZby5GMTQsWW8uRjE1LFlvLkYxNixZby5GMTcsWW8uRjE4LFlvLkYxOSxZby5IT01FLFlvLklOU0VSVCxZby5NRURJQV9ORVhULFlvLk1FRElBX1BMQVlfUEFVU0UsWW8uTUVESUFfUFJF''@;'; put 'put ''VixZby5NRURJQV9TVE9QLFlvLk5VTEwsWW8uTlVNX0xPQ0ssWW8uUEFHRV9ET1dOLFlvLlBBR0VfVVAsWW8uUEFVU0UsWW8uU0NST0xMX0xPQ0ssWW8uU0hJRlQsWW8uVEFCXTtmdW5jdGlvbiB4X2UoZCl7cmV0dXJuIDMyPT09ZHx8ZD49NDgmJmQ8PTU3fHxkPj05NiYmZDw9MTExfHxkPj0x''@;'; put 'put ''ODYmJmQ8PTE5Mnx8ZD49MjE5JiZkPD0yMjJ8fGQ+PTIyNnx8ZD49NjUmJmQ8PTkwfWZ1bmN0aW9uIE8zZShkKXtyZXR1cm4gcHplLmluY2x1ZGVzKGQpfWZ1bmN0aW9uIGd6ZShkKXt2YXIgZz1bXTtyZXR1cm4gcXEoKT9nLnB1c2goWW8uQ09NTUFORF9MRUZULFlvLkNPTU1BTkRfUklHSFQs''@;'; put 'put ''WW8uQ09NTUFORF9GSVJFRk9YKTpnLnB1c2goWW8uQ09OVFJPTCksZy5pbmNsdWRlcyhkKX1mdW5jdGlvbiBUX2UoZCl7cmV0dXJuW1lvLkNPTlRST0wsWW8uQ09NTUFORF9MRUZULFlvLkNPTU1BTkRfUklHSFQsWW8uQ09NTUFORF9GSVJFRk9YXS5pbmNsdWRlcyhkKX1mdW5jdGlvbiBUTyhk''@;'; put 'put ''LGcpe3ZhciBoPWcuc3BsaXQoInwiKSx2PSExO3JldHVybiBHcihoLGZ1bmN0aW9uKHkpe2lmKGQ9PT1Zb1t5XSlyZXR1cm4gdj0hMCwhMX0pLHZ9ZnVuY3Rpb24gdjgoZCl7ZC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uRW5hYmxlZD0hMSxkLmNhbmNlbEJ1YmJsZT0hMH1mdW5jdGlvbiBOUyhk''@;'; put 'put ''KXtyZXR1cm4hMT09PWQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvbkVuYWJsZWR9ZnVuY3Rpb24gUHcoZCl7cmV0dXJuIDI9PT1kLmJ1dHRvbn1mdW5jdGlvbiBsZWUoZCl7cmV0dXJuIDA9PT1kLmJ1dHRvbn1mdW5jdGlvbiBjMSgpe3ZhciBkO0VvKGNvbnNvbGUpJiYoZD1jb25zb2xlKS53YXJu''@;'; put 'put ''LmFwcGx5KGQsYXJndW1lbnRzKX1mdW5jdGlvbiBSM2UoKXt2YXIgZDtFbyhjb25zb2xlKSYmKGQ9Y29uc29sZSkuZXJyb3IuYXBwbHkoZCxhcmd1bWVudHMpfWZ1bmN0aW9uIERfZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVu''@;'; put 'put ''dW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBJTz1bImFmdGVyQ2VsbE1ldGFSZXNldCIsImFmdGVyQ2hhbmdlIiwiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRp''@;'; put 'put ''b25zIiwiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLCJiZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsImFmdGVyQ29udGV4dE1lbnVIaWRlIiwiYmVmb3JlQ29udGV4dE1lbnVTaG93IiwiYWZ0ZXJDb250ZXh0TWVudVNob3ci''@;'; put 'put ''LCJhZnRlckNvcHlMaW1pdCIsImJlZm9yZUNyZWF0ZUNvbCIsImFmdGVyQ3JlYXRlQ29sIiwiYmVmb3JlQ3JlYXRlUm93IiwiYWZ0ZXJDcmVhdGVSb3ciLCJhZnRlckRlc2VsZWN0IiwiYWZ0ZXJEZXN0cm95IiwiYWZ0ZXJEb2N1bWVudEtleURvd24iLCJhZnRlckRyYXdTZWxlY3Rpb24iLCJi''@;'; put 'put ''ZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsImFmdGVyR2V0Q2VsbE1ldGEiLCJhZnRlckdldENvbEhlYWRlciIsImFmdGVyR2V0Um93SGVhZGVyIiwiYWZ0ZXJJbml0IiwiYWZ0ZXJMb2FkRGF0YSIsImFmdGVyVXBkYXRlRGF0YSIsImFmdGVyTW9tZW50dW1TY3JvbGwiLCJhZnRlck9uQ2Vs''@;'; put 'put ''bENvcm5lck1vdXNlRG93biIsImFmdGVyT25DZWxsQ29ybmVyRGJsQ2xpY2siLCJhZnRlck9uQ2VsbE1vdXNlRG93biIsImFmdGVyT25DZWxsTW91c2VVcCIsImFmdGVyT25DZWxsQ29udGV4dE1lbnUiLCJhZnRlck9uQ2VsbE1vdXNlT3ZlciIsImFmdGVyT25DZWxsTW91c2VPdXQiLCJhZnRl''@;'; put 'put ''clJlbW92ZUNvbCIsImFmdGVyUmVtb3ZlUm93IiwiYmVmb3JlUmVuZGVyZXIiLCJhZnRlclJlbmRlcmVyIiwiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLCJhZnRlclNlbGVjdGlvbiIsImFmdGVyU2VsZWN0aW9uQnlQcm9wIiwiYWZ0ZXJTZWxlY3Rp''@;'; put 'put ''b25FbmQiLCJhZnRlclNlbGVjdGlvbkVuZEJ5UHJvcCIsImFmdGVyU2V0Q2VsbE1ldGEiLCJhZnRlclJlbW92ZUNlbGxNZXRhIiwiYWZ0ZXJTZXREYXRhQXRDZWxsIiwiYWZ0ZXJTZXREYXRhQXRSb3dQcm9wIiwiYWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIiwiYWZ0ZXJVcGRhdGVTZXR0aW5n''@;'; put 'put ''cyIsImFmdGVyVmFsaWRhdGUiLCJiZWZvcmVMYW5ndWFnZUNoYW5nZSIsImFmdGVyTGFuZ3VhZ2VDaGFuZ2UiLCJiZWZvcmVBdXRvZmlsbCIsImFmdGVyQXV0b2ZpbGwiLCJiZWZvcmVDZWxsQWxpZ25tZW50IiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlQ2hhbmdlUmVuZGVyIiwiYmVmb3JlRHJh''@;'; put 'put ''d0JvcmRlcnMiLCJiZWZvcmVHZXRDZWxsTWV0YSIsImJlZm9yZVJlbW92ZUNlbGxNZXRhIiwiYmVmb3JlSW5pdCIsImJlZm9yZUluaXRXYWxrb250YWJsZSIsImJlZm9yZUxvYWREYXRhIiwiYmVmb3JlVXBkYXRlRGF0YSIsImJlZm9yZUtleURvd24iLCJiZWZvcmVPbkNlbGxNb3VzZURvd24i''@;'; put 'put ''LCJiZWZvcmVPbkNlbGxNb3VzZVVwIiwiYmVmb3JlT25DZWxsQ29udGV4dE1lbnUiLCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLCJiZWZvcmVPbkNlbGxNb3VzZU91dCIsImJlZm9yZVJlbW92ZUNvbCIsImJlZm9yZVJlbW92ZVJvdyIsImJlZm9yZVZpZXdSZW5kZXIiLCJhZnRlclZpZXdSZW5k''@;'; put 'put ''ZXIiLCJiZWZvcmVSZW5kZXIiLCJhZnRlclJlbmRlciIsImJlZm9yZVNldENlbGxNZXRhIiwiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLCJiZWZvcmVTZXRSYW5nZVN0YXJ0IiwiYmVmb3JlU2V0UmFuZ2VFbmQiLCJiZWZvcmVUb3VjaFNjcm9sbCIsImJlZm9yZVZhbGlkYXRlIiwiYmVmb3Jl''@;'; put 'put ''VmFsdWVSZW5kZXIiLCJjb25zdHJ1Y3QiLCJpbml0IiwibW9kaWZ5Q29sSGVhZGVyIiwibW9kaWZ5Q29sV2lkdGgiLCJtb2RpZnlSb3dIZWFkZXIiLCJtb2RpZnlSb3dIZWlnaHQiLCJtb2RpZnlEYXRhIiwibW9kaWZ5U291cmNlRGF0YSIsIm1vZGlmeVJvd0RhdGEiLCJtb2RpZnlHZXRDZWxs''@;'; put 'put ''Q29vcmRzIiwiYmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyIiwiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIiwicGVyc2lzdGVudFN0YXRlTG9hZCIsInBlcnNpc3RlbnRTdGF0ZVJlc2V0IiwicGVyc2lzdGVudFN0YXRlU2F2ZSIsImJlZm9yZUNvbHVtblNvcnQiLCJhZnRlckNv''@;'; put 'put ''bHVtblNvcnQiLCJtb2RpZnlBdXRvZmlsbFJhbmdlIiwibW9kaWZ5Q29weWFibGVSYW5nZSIsImJlZm9yZUN1dCIsImFmdGVyQ3V0IiwiYmVmb3JlQ29weSIsImFmdGVyQ29weSIsImJlZm9yZVBhc3RlIiwiYWZ0ZXJQYXN0ZSIsImJlZm9yZUNvbHVtbkZyZWV6ZSIsImFmdGVyQ29sdW1uRnJl''@;'; put 'put ''ZXplIiwiYmVmb3JlQ29sdW1uTW92ZSIsImFmdGVyQ29sdW1uTW92ZSIsImJlZm9yZUNvbHVtblVuZnJlZXplIiwiYWZ0ZXJDb2x1bW5VbmZyZWV6ZSIsImJlZm9yZVJvd01vdmUiLCJhZnRlclJvd01vdmUiLCJiZWZvcmVDb2x1bW5SZXNpemUiLCJhZnRlckNvbHVtblJlc2l6ZSIsImJlZm9y''@;'; put 'put ''ZVJvd1Jlc2l6ZSIsImFmdGVyUm93UmVzaXplIiwiYWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMiLCJhZnRlckdldFJvd0hlYWRlclJlbmRlcmVycyIsImJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsImJlZm9yZUZpbHRlciIsImFmdGVyRmlsdGVyIiwiYWZ0ZXJGb3JtdWxhc1Zh''@;'; put 'put ''bHVlc1VwZGF0ZSIsImFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQiLCJhZnRlck5hbWVkRXhwcmVzc2lvblJlbW92ZWQiLCJhZnRlclNoZWV0QWRkZWQiLCJhZnRlclNoZWV0UmVuYW1lZCIsImFmdGVyU2hlZXRSZW1vdmVkIiwibW9kaWZ5Q29sdW1uSGVhZGVySGVpZ2h0IiwiYmVmb3JlVW5k''@;'; put 'put ''byIsImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsImFmdGVyVW5kbyIsImFmdGVyVW5kb1N0YWNrQ2hhbmdlIiwiYmVmb3JlUmVkbyIsImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsImFmdGVyUmVkbyIsImFmdGVyUmVkb1N0YWNrQ2hhbmdlIiwibW9kaWZ5Um93SGVhZGVyV2lkdGgiLCJiZWZvcmVB''@;'; put 'put ''dXRvZmlsbEluc2lkZVBvcHVsYXRlIiwibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLCJtb2RpZnlUcmFuc2Zvcm1FbmQiLCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQiLCJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIiwiYWZ0ZXJW''@;'; put 'put ''aWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIiwiYmVmb3JlSGlkZVJvd3MiLCJhZnRlckhpZGVSb3dzIiwiYmVmb3JlVW5oaWRlUm93cyIsImFmdGVyVW5oaWRlUm93cyIsImJlZm9yZUhpZGVDb2x1bW5zIiwiYWZ0ZXJIaWRlQ29sdW1u''@;'; put 'put ''cyIsImJlZm9yZVVuaGlkZUNvbHVtbnMiLCJhZnRlclVuaGlkZUNvbHVtbnMiLCJiZWZvcmVUcmltUm93IiwiYWZ0ZXJUcmltUm93IiwiYmVmb3JlVW50cmltUm93IiwiYWZ0ZXJVbnRyaW1Sb3ciLCJiZWZvcmVEcm9wZG93bk1lbnVTaG93IiwiYWZ0ZXJEcm9wZG93bk1lbnVTaG93IiwiYWZ0''@;'; put 'put ''ZXJEcm9wZG93bk1lbnVIaWRlIiwiYmVmb3JlQWRkQ2hpbGQiLCJhZnRlckFkZENoaWxkIiwiYmVmb3JlRGV0YWNoQ2hpbGQiLCJhZnRlckRldGFjaENoaWxkIiwiYWZ0ZXJCZWdpbkVkaXRpbmciLCJiZWZvcmVNZXJnZUNlbGxzIiwiYWZ0ZXJNZXJnZUNlbGxzIiwiYmVmb3JlVW5tZXJnZUNl''@;'; put 'put ''bGxzIiwiYWZ0ZXJVbm1lcmdlQ2VsbHMiLCJhZnRlckxpc3RlbiIsImFmdGVyVW5saXN0ZW4iLCJhZnRlclJlZnJlc2hEaW1lbnNpb25zIiwiYmVmb3JlUmVmcmVzaERpbWVuc2lvbnMiLCJiZWZvcmVDb2x1bW5Db2xsYXBzZSIsImFmdGVyQ29sdW1uQ29sbGFwc2UiLCJiZWZvcmVDb2x1bW5F''@;'; put 'put ''eHBhbmQiLCJhZnRlckNvbHVtbkV4cGFuZCIsIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCJdLHl6ZT1EMihJX2V8fChJX2U9ZnVuY3Rpb24gQXplKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1''@;'; put 'put ''ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWydUaGUgcGx1Z2luIGhvb2sgIltob29rTmFtZV0iIHdhcyByZW1vdmVkIGluIEhhbmRzb250YWJsZSBbcmVtb3ZlZEluVmVyc2lvbl0uIFxuICBQbGVhc2UgY29uc3VsdCByZWxlYXNlIG5vdGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5kc29udGFi''@;'; put 'put ''bGUvaGFuZHNvbnRhYmxlL3JlbGVhc2VzL3RhZy9bcmVtb3ZlZEluVmVyc2lvbl0gdG8gXG4gIGxlYXJuIGFib3V0IHRoZSBtaWdyYXRpb24gcGF0aC4nXSxbJ1RoZSBwbHVnaW4gaG9vayAiW2hvb2tOYW1lXSIgd2FzIHJlbW92ZWQgaW4gSGFuZHNvbnRhYmxlIFtyZW1vdmVkSW5WZXJzaW9u''@;'; put 'put ''XS5cXHgyMFxuICBQbGVhc2UgY29uc3VsdCByZWxlYXNlIG5vdGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5kc29udGFibGUvaGFuZHNvbnRhYmxlL3JlbGVhc2VzL3RhZy9bcmVtb3ZlZEluVmVyc2lvbl0gdG9cXHgyMFxuICBsZWFybiBhYm91dCB0aGUgbWlncmF0aW9uIHBhdGguJ10pKSks''@;'; put 'put ''QjNlPW5ldyBNYXAoW1sibW9kaWZ5Um93IiwiOC4wLjAiXSxbIm1vZGlmeUNvbCIsIjguMC4wIl0sWyJ1bm1vZGlmeVJvdyIsIjguMC4wIl0sWyJ1bm1vZGlmeUNvbCIsIjguMC4wIl0sWyJza2lwTGVuZ3RoQ2FjaGUiLCI4LjAuMCJdLFsiaGlkZGVuQ29sdW1uIiwiOC4wLjAiXSxbImhpZGRl''@;'; put 'put ''blJvdyIsIjguMC4wIl1dKSxQM2U9bmV3IE1hcChbWyJiZWZvcmVBdXRvZmlsbEluc2lkZVBvcHVsYXRlIiwnVGhlIHBsdWdpbiBob29rICJiZWZvcmVBdXRvZmlsbEluc2lkZVBvcHVsYXRlIiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVs''@;'; put 'put ''ZWFzZS4nXV0pLExfZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXsoZnVuY3Rpb24gbXplKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuZ2xvYmFsQnVja2V0PXRo''@;'; put 'put ''aXMuY3JlYXRlRW1wdHlCdWNrZXQoKX1yZXR1cm4gZnVuY3Rpb24gdnplKGQsZyxoKXtnJiZEX2UoZC5wcm90b3R5cGUsZyksaCYmRF9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImNyZWF0ZUVtcHR5QnVja2V0Iix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciBoPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEdyKElPLGZ1bmN0aW9uKHYpe3JldHVybiBoW3ZdPVtdfSksaH19LHtrZXk6ImdldEJ1Y2tldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50''@;'; put 'put ''c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gaD8oaC5wbHVnaW5Ib29rQnVja2V0fHwoaC5wbHVnaW5Ib29rQnVja2V0PXRoaXMuY3JlYXRlRW1wdHlCdWNrZXQoKSksaC5wbHVnaW5Ib29rQnVja2V0KTp0aGlzLmdsb2JhbEJ1Y2tldH19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2KXt2YXIgeT10aGlzLEM9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoQXJyYXkuaXNBcnJheSh2KSlHcih2LGZ1bmN0aW9uKGNlKXtyZXR1cm4geS5hZGQoaCxjZSxDKX0pO2Vsc2V7QjNlLmhhcyhoKSYmYzEodjNlKHl6''@;'; put 'put ''ZSx7aG9va05hbWU6aCxyZW1vdmVkSW5WZXJzaW9uOkIzZS5nZXQoaCl9KSksUDNlLmhhcyhoKSYmYzEoUDNlLmdldChoKSk7dmFyIEk9dGhpcy5nZXRCdWNrZXQoQyk7aWYodm9pZCAwPT09SVtoXSYmKHRoaXMucmVnaXN0ZXIoaCksSVtoXT1bXSksdi5za2lwPSExLC0xPT09SVtoXS5pbmRl''@;'; put 'put ''eE9mKHYpKXt2YXIgaj0hMTt2LmluaXRpYWxIb29rJiZHcihJW2hdLGZ1bmN0aW9uKGNlLF9lKXtpZihjZS5pbml0aWFsSG9vaylyZXR1cm4gSVtoXVtfZV09dixqPSEwLCExfSksanx8SVtoXS5wdXNoKHYpfX1yZXR1cm4gdGhpc319LHtrZXk6Im9uY2UiLHZhbHVlOmZ1bmN0aW9uKGgsdil7''@;'; put 'put ''dmFyIHk9dGhpcyxDPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO0FycmF5LmlzQXJyYXkodik/R3IodixmdW5jdGlvbihJKXtyZXR1cm4geS5vbmNlKGgsSSxDKX0pOih2LnJ1bk9uY2U9ITAsdGhpcy5hZGQoaCx2LEMpKX19LHtr''@;'; put 'put ''ZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxDPXRoaXMuZ2V0QnVja2V0KHkpO3JldHVybiB2b2lkIDAhPT1DW2hdJiZDW2hdLmluZGV4T2Yodik+PTAmJih2LnNr''@;'; put 'put ''aXA9ITAsITApfX0se2tleToiaGFzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCx5PXRoaXMuZ2V0QnVja2V0KHYpO3JldHVybiEodm9pZCAwPT09eVtoXXx8IXlbaF0ubGVuZ3RoKX19''@;'; put 'put ''LHtrZXk6InJ1biIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJLGosY2UsX2Upe3ZhciBSZT10aGlzLmdsb2JhbEJ1Y2tldFt2XSxOZT1SZT9SZS5sZW5ndGg6MCxLZT0wO2lmKE5lKWZvcig7S2U8TmU7KWlmKFJlW0tlXSYmIVJlW0tlXS5za2lwKXt2YXIgaHQ9YWVlKFJlW0tlXSxoLHksQyxJ''@;'; put 'put ''LGosY2UsX2UpO3ZvaWQgMCE9PWh0JiYoeT1odCksUmVbS2VdJiZSZVtLZV0ucnVuT25jZSYmdGhpcy5yZW1vdmUodixSZVtLZV0pLEtlKz0xfWVsc2UgS2UrPTE7dmFyIEJ0PXRoaXMuZ2V0QnVja2V0KGgpW3ZdLCR0PUJ0P0J0Lmxlbmd0aDowLGhuPTA7aWYoJHQpZm9yKDtobjwkdDspaWYo''@;'; put 'put ''QnRbaG5dJiYhQnRbaG5dLnNraXApe3ZhciBEbj1hZWUoQnRbaG5dLGgseSxDLEksaixjZSxfZSk7dm9pZCAwIT09RG4mJih5PURuKSxCdFtobl0mJkJ0W2huXS5ydW5PbmNlJiZ0aGlzLnJlbW92ZSh2LEJ0W2huXSxoKSxobis9MX1lbHNlIGhuKz0xO3JldHVybiB5fX0se2tleToiZGVzdHJv''@;'; put 'put ''eSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtabCh0aGlzLmdldEJ1Y2tldChoKSxmdW5jdGlvbih2LHksQyl7cmV0dXJuIENbeV0ubGVuZ3RoPTB9KX19LHtrZXk6InJlZ2lzdGVyIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmlzUmVnaXN0ZXJlZChoKXx8SU8ucHVzaChoKX19LHtrZXk6ImRlcmVnaXN0ZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuaXNSZWdpc3RlcmVkKGgpJiZJTy5zcGxpY2UoSU8uaW5kZXhPZihoKSwxKX19LHtrZXk6ImlzRGVwcmVjYXRlZCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIFAzZS5oYXMoaCl8fEIzZS5oYXMoaCl9fSx7a2V5OiJpc1JlZ2lzdGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBJTy5pbmRleE9mKGgpPj0wfX0se2tleToiZ2V0UmVnaXN0ZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSU99fV0sW3trZXk6''@;'; put 'put ''ImdldFNpbmdsZXRvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gYnplKCl7cmV0dXJuIHd6ZX0oKX19XSksZH0oKSx3emU9bmV3IExfZTtjb25zdCBWbz1MX2U7ZnVuY3Rpb24gT19lKGQpe3JldHVybiBmdW5jdGlvbiBTemUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1''@;'; put 'put ''cm4gRjNlKGQpfShkKXx8ZnVuY3Rpb24ga3plKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIEN6ZShkLGcpe2lmKGQpe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgZClyZXR1cm4gRjNlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1''@;'; put 'put ''cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBGM2UoZCxnKX19KGQpfHxmdW5jdGlvbiBfemUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8g''@;'; put 'put ''c3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBGM2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQu''@;'; put 'put ''bGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn12YXIgSDNlPW5ldyBNYXA7ZnVuY3Rpb24ga3AoKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ImNvbW1vbiI7SDNl''@;'; put 'put ''LmhhcyhkKXx8SDNlLnNldChkLG5ldyBNYXApO3ZhciBnPUgzZS5nZXQoZCk7ZnVuY3Rpb24gaChqLGNlKXtnLnNldChqLGNlKX1mdW5jdGlvbiB2KGope3JldHVybiBnLmdldChqKX1mdW5jdGlvbiB5KGope3JldHVybiBnLmhhcyhqKX1mdW5jdGlvbiBDKCl7cmV0dXJuIE9fZShnLmtleXMo''@;'; put 'put ''KSl9ZnVuY3Rpb24gSSgpe3JldHVybiBPX2UoZy52YWx1ZXMoKSl9cmV0dXJue3JlZ2lzdGVyOmgsZ2V0SXRlbTp2LGhhc0l0ZW06eSxnZXROYW1lczpDLGdldFZhbHVlczpJfX12YXIgTjNlPW5ldyBXZWFrTWFwLHB6PWtwKCJlZGl0b3JzIiksTXplPXB6LnJlZ2lzdGVyLFJfZT1wei5nZXRJ''@;'; put 'put ''dGVtLEJfZT1wei5oYXNJdGVtLEV6ZT1wei5nZXROYW1lcztmdW5jdGlvbiB4emUoZCl7dmFyIGc9e30saD1kO3RoaXMuZ2V0Q29uc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sdGhpcy5nZXRJbnN0YW5jZT1mdW5jdGlvbih2KXtyZXR1cm4gdi5ndWlkIGluIGd8fChnW3YuZ3VpZF09''@;'; put 'put ''bmV3IGgodikpLGdbdi5ndWlkXX0sVm8uZ2V0U2luZ2xldG9uKCkuYWRkKCJhZnRlckRlc3Ryb3kiLGZ1bmN0aW9uKCl7Z1t0aGlzLmd1aWRdPW51bGx9KX1mdW5jdGlvbiBQX2UoZCxnKXt2YXIgaDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZClOM2UuZ2V0KGQpfHxuZChudWxsLGQpLGg9TjNl''@;'; put 'put ''LmdldChkKTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBFcnJvcignT25seSBzdHJpbmdzIGFuZCBmdW5jdGlvbnMgY2FuIGJlIHBhc3NlZCBhcyAiZWRpdG9yIiBwYXJhbWV0ZXInKTtoPVJfZShkKX1pZighaCl0aHJvdyBFcnJvcignTm8gZWRpdG9yIHJlZ2lzdGVyZWQgdW5k''@;'; put 'put ''ZXIgbmFtZSAiJy5jb25jYXQoZCwnIicpKTtyZXR1cm4gaC5nZXRJbnN0YW5jZShnKX1mdW5jdGlvbiBGX2UoZCl7aWYoIUJfZShkKSl0aHJvdyBFcnJvcignTm8gcmVnaXN0ZXJlZCBlZGl0b3IgZm91bmQgdW5kZXIgIicuY29uY2F0KGQsJyIgbmFtZScpKTtyZXR1cm4gUl9lKGQpLmdldENv''@;'; put 'put ''bnN0cnVjdG9yKCl9ZnVuY3Rpb24gbmQoZCxnKXtkJiYic3RyaW5nIiE9dHlwZW9mIGQmJihkPShnPWQpLkVESVRPUl9UWVBFKTt2YXIgaD1uZXcgeHplKGcpOyJzdHJpbmciPT10eXBlb2YgZCYmTXplKGQsaCksTjNlLnNldChnLGgpfWZ1bmN0aW9uIFR6ZShkLGcpe2lmKCEoZCBpbnN0YW5j''@;'; put 'put ''ZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEhfZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxl''@;'; put 'put ''PSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBzZWU9MCxEemU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBd''@;'; put 'put ''Om51bGw7VHplKHRoaXMsZCksdGhpcy5jb250ZXh0PWd8fHRoaXMsdGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzfHwodGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzPVtdKX1yZXR1cm4gZnVuY3Rpb24gSXplKGQsZyxoKXtnJiZIX2UoZC5wcm90b3R5cGUsZyksaCYmSF9lKGQsaCksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImFkZEV2ZW50TGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLEk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1sz''@;'; put 'put ''XTtmdW5jdGlvbiBqKGNlKXt5LmNhbGwodGhpcyxMemUoY2UpKX1yZXR1cm4iYm9vbGVhbiIhPXR5cGVvZiBJJiYhamJlKCkmJihJPSExKSx0aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMucHVzaCh7ZWxlbWVudDpoLGV2ZW50OnYsY2FsbGJhY2s6eSxjYWxsYmFja1Byb3h5Omosb3B0aW9u''@;'; put 'put ''czpJLGV2ZW50TWFuYWdlcjp0aGlzfSksaC5hZGRFdmVudExpc3RlbmVyKHYsaixJKSxzZWUrPTEsZnVuY3Rpb24oKXtDLnJlbW92ZUV2ZW50TGlzdGVuZXIoaCx2LHkpfX19LHtrZXk6InJlbW92ZUV2ZW50TGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtmb3IodmFyIGosQz1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLEk9dGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLmxlbmd0aDtJOylpZigoaj10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnNbSS09MV0pLmV2ZW50PT09diYmai5lbGVtZW50PT09aCl7aWYoeSYm''@;'; put 'put ''eSE9PWouY2FsbGJhY2t8fEMmJmouZXZlbnRNYW5hZ2VyIT09dGhpcyljb250aW51ZTt0aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMuc3BsaWNlKEksMSksai5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoai5ldmVudCxqLmNhbGxiYWNrUHJveHksai5vcHRpb25zKSxzZWUtPTF9fX0s''@;'; put 'put ''e2tleToiY2xlYXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZih0aGlzLmNvbnRleHQpZm9yKHZhciB2PXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVycy5sZW5ndGg7djspe3Zh''@;'; put 'put ''ciB5PXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc1t2LT0xXTtoJiZ5LmV2ZW50TWFuYWdlciE9PXRoaXN8fCh0aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMuc3BsaWNlKHYsMSkseS5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoeS5ldmVudCx5LmNhbGxiYWNrUHJveHkseS5vcHRp''@;'; put 'put ''b25zKSxzZWUtPTEpfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYXJFdmVudHMoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhckV2ZW50cygpLHRoaXMuY29udGV4dD1udWxsfX0se2tleToiZGVzdHJveVdpdGhPd25FdmVudHNP''@;'; put 'put ''bmx5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYXJFdmVudHMoITApLHRoaXMuY29udGV4dD1udWxsfX0se2tleToiZmlyZUV2ZW50Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWguZG9jdW1lbnQsQz1oO3l8fChDPSh5PWgub3duZXJEb2N1bWVudD9oLm93bmVyRG9jdW1lbnQ6aCku''@;'; put 'put ''ZGVmYXVsdFZpZXcpO3ZhciBqLEk9e2J1YmJsZXM6ITAsY2FuY2VsYWJsZToibW91c2Vtb3ZlIiE9PXYsdmlldzpDLGRldGFpbDowLHNjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDoxLGNsaWVudFk6MSxjdHJsS2V5OiExLGFsdEtleTohMSxzaGlmdEtleTohMSxtZXRhS2V5OiExLGJ1dHRv''@;'; put 'put ''bjowLHJlbGF0ZWRUYXJnZXQ6dm9pZCAwfTt5LmNyZWF0ZUV2ZW50PyhqPXkuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIikpLmluaXRNb3VzZUV2ZW50KHYsSS5idWJibGVzLEkuY2FuY2VsYWJsZSxJLnZpZXcsSS5kZXRhaWwsSS5zY3JlZW5YLEkuc2NyZWVuWSxJLmNsaWVudFgsSS5jbGll''@;'; put 'put ''bnRZLEkuY3RybEtleSxJLmFsdEtleSxJLnNoaWZ0S2V5LEkubWV0YUtleSxJLmJ1dHRvbixJLnJlbGF0ZWRUYXJnZXR8fHkuYm9keS5wYXJlbnROb2RlKTpqPXkuY3JlYXRlRXZlbnRPYmplY3QoKSxoLmRpc3BhdGNoRXZlbnQ/aC5kaXNwYXRjaEV2ZW50KGopOmguZmlyZUV2ZW50KCJvbiIu''@;'; put 'put ''Y29uY2F0KHYpLGopfX1dKSxkfSgpO2Z1bmN0aW9uIEx6ZShkKXt2YXIgZz1kLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjtyZXR1cm4gZC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtnLmFwcGx5KHRoaXMpLHY4KHRoaXMpfSxkfWNvbnN0IFAxPUR6ZTtmdW5jdGlvbiBO''@;'; put 'put ''X2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBWX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFi''@;'; put 'put ''bGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgdWVlPSJlZGl0b3JNYW5hZ2VyLm5hdmlnYXRpb24iLGd6PSJlZGl0b3JNYW5hZ2VyLmhhbmRsaW5nRWRp''@;'; put 'put ''dG9yIixWM2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCx2KXt2YXIgeT10aGlzOyhmdW5jdGlvbiBOemUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5pbnN0''@;'; put 'put ''YW5jZT1nLHRoaXMudGFibGVNZXRhPWgsdGhpcy5zZWxlY3Rpb249dix0aGlzLmV2ZW50TWFuYWdlcj1uZXcgUDEoZyksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5sb2NrPSExLHRoaXMuYWN0aXZlRWRpdG9yPXZvaWQgMCx0aGlzLmNlbGxQcm9wZXJ0aWVzPXZvaWQgMCx0aGlzLmluc3RhbmNl''@;'; put 'put ''LmdldFNob3J0Y3V0TWFuYWdlcigpLmFkZENvbnRleHQoImVkaXRvciIpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSx0aGlzLmluc3RhbmNlLmFkZEhvb2soImFmdGVyRG9jdW1lbnRLZXlEb3duIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbkFmdGVyRG9jdW1lbnRLZXlEb3duKEkpfSksdGhp''@;'; put 'put ''cy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmluc3RhbmNlLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsImNvbXBvc2l0aW9uc3RhcnQiLGZ1bmN0aW9uKEkpeyF5LmRlc3Ryb3llZCYmeS5hY3RpdmVFZGl0b3ImJiF5LmFjdGl2ZUVkaXRvci5pc09wZW5lZCgpJiZ5''@;'; put 'put ''Lmluc3RhbmNlLmlzTGlzdGVuaW5nKCkmJnkub3BlbkVkaXRvcigiIixJKX0pLHRoaXMuaW5zdGFuY2Uudmlldy5fd3QudXBkYXRlKCJvbkNlbGxEYmxDbGljayIsZnVuY3Rpb24oSSxqLGNlKXtyZXR1cm4geS5vbkNlbGxEYmxDbGljayhJLGosY2UpfSl9cmV0dXJuIGZ1bmN0aW9uIFZ6ZShk''@;'; put 'put ''LGcsaCl7ZyYmVl9lKGQucHJvdG90eXBlLGcpLGgmJlZfZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9dGhpcy5pbnN0YW5jZS5n''@;'; put 'put ''ZXRTaG9ydGN1dE1hbmFnZXIoKSx5PXYuZ2V0Q29udGV4dCgiZ3JpZCIpLEM9di5nZXRDb250ZXh0KCJlZGl0b3IiKSxJPXtncm91cDpnen07Qy5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkVudGVyIl0sWyJFbnRlciIsIlNoaWZ0Il0sWyJFbnRlciIsIkNvbnRyb2wvTWV0YSJdLFsiRW50ZXIi''@;'; put 'put ''LCJDb250cm9sL01ldGEiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbihjZSxfZSl7aC5jbG9zZUVkaXRvckFuZFNhdmVDaGFuZ2VzKHYuaXNDdHJsUHJlc3NlZCgpKSxoLm1vdmVTZWxlY3Rpb25BZnRlckVudGVyKF9lLmluY2x1ZGVzKCJzaGlmdCIpKX19LHtrZXlzOltbIkVzY2FwZSJd''@;'; put 'put ''LFsiRXNjYXBlIiwiQ29udHJvbC9NZXRhIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7aC5jbG9zZUVkaXRvckFuZFJlc3RvcmVPcmlnaW5hbFZhbHVlKHYuaXNDdHJsUHJlc3NlZCgpKSxoLmFjdGl2ZUVkaXRvci5mb2N1cygpfX1dLEkpLHkuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJGMiJdXSxj''@;'; put 'put ''YWxsYmFjazpmdW5jdGlvbihjZSl7aC5hY3RpdmVFZGl0b3ImJmguYWN0aXZlRWRpdG9yLmVuYWJsZUZ1bGxFZGl0TW9kZSgpLGgub3BlbkVkaXRvcihudWxsLGNlKX19LHtrZXlzOltbIkJhY2tzcGFjZSJdLFsiRGVsZXRlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7aC5pbnN0YW5jZS5lbXB0''@;'; put 'put ''eVNlbGVjdGVkQ2VsbHMoKSxoLnByZXBhcmVFZGl0b3IoKX19LHtrZXlzOltbIkVudGVyIl0sWyJFbnRlciIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKGNlLF9lKXtoLmluc3RhbmNlLmdldFNldHRpbmdzKCkuZW50ZXJCZWdpbnNFZGl0aW5nP2guY2VsbFByb3BlcnRpZXMucmVhZE9u''@;'; put 'put ''bHk/aC5tb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlcigpOmguYWN0aXZlRWRpdG9yJiYoaC5hY3RpdmVFZGl0b3IuZW5hYmxlRnVsbEVkaXRNb2RlKCksaC5vcGVuRWRpdG9yKG51bGwsY2UpKTpoLm1vdmVTZWxlY3Rpb25BZnRlckVudGVyKF9lLmluY2x1ZGVzKCJzaGlmdCIpKSx2OChjZSl9fV0s''@;'; put 'put ''SSl9fSx7a2V5OiJsb2NrRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubG9jaz0hMH19LHtrZXk6InVubG9ja0VkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxvY2s9ITF9fSx7a2V5OiJkZXN0cm95RWRpdG9yIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmxvY2t8fHRoaXMuY2xv''@;'; put 'put ''c2VFZGl0b3IoaCl9fSx7a2V5OiJnZXRBY3RpdmVFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlRWRpdG9yfX0se2tleToicHJlcGFyZUVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO2lmKCF0aGlzLmxvY2spe2lmKHRoaXMuYWN0aXZlRWRpdG9y''@;'; put 'put ''JiZ0aGlzLmFjdGl2ZUVkaXRvci5pc1dhaXRpbmcoKSlyZXR1cm4gdm9pZCB0aGlzLmNsb3NlRWRpdG9yKCExLCExLGZ1bmN0aW9uKCR0KXskdCYmaC5wcmVwYXJlRWRpdG9yKCl9KTt2YXIgdj10aGlzLmluc3RhbmNlLnNlbGVjdGlvbi5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKS5oaWdobGln''@;'; put 'put ''aHQseT12LnJvdyxDPXYuY29sLEk9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIseSxDKSxqPXksY2U9QztpZihBcnJheS5pc0FycmF5KEkpKXt2YXIgX2U9ZnVuY3Rpb24gUnplKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIEh6ZShkKXtpZihBcnJheS5pc0FycmF5''@;'; put 'put ''KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gRnplKGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1o''@;'; put 'put ''LmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVy''@;'; put 'put ''biB2fX0oZCxnKXx8ZnVuY3Rpb24gUHplKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBOX2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNv''@;'; put 'put ''bnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIE5fZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gQnpl''@;'; put 'put ''KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0o''@;'; put 'put ''KX0oSSwyKTtqPV9lWzBdLGNlPV9lWzFdfXRoaXMuY2VsbFByb3BlcnRpZXM9dGhpcy5pbnN0YW5jZS5nZXRDZWxsTWV0YShqLGNlKTt2YXIgUmU9dGhpcy5pbnN0YW5jZS5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihSZSYmUmUuYmx1cigpLHRoaXMuY2VsbFByb3BlcnRpZXMucmVh''@;'; put 'put ''ZE9ubHkpcmV0dXJuIHZvaWQgdGhpcy5jbGVhckFjdGl2ZUVkaXRvcigpO3ZhciBOZT10aGlzLmluc3RhbmNlLmdldENlbGxFZGl0b3IodGhpcy5jZWxsUHJvcGVydGllcyksS2U9dGhpcy5pbnN0YW5jZS5nZXRDZWxsKHksQywhMCk7aWYoTmUmJktlKXt2YXIgaHQ9dGhpcy5pbnN0YW5jZS5j''@;'; put 'put ''b2xUb1Byb3AoY2UpLEJ0PXRoaXMuaW5zdGFuY2UuZ2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3coaiksY2UpO3RoaXMuYWN0aXZlRWRpdG9yPVBfZShOZSx0aGlzLmluc3RhbmNlKSx0aGlzLmFjdGl2ZUVkaXRvci5wcmVwYXJlKHksQyxodCxLZSxCdCx0''@;'; put 'put ''aGlzLmNlbGxQcm9wZXJ0aWVzKX1lbHNlIHRoaXMuY2xlYXJBY3RpdmVFZGl0b3IoKX19fSx7a2V5OiJpc0VkaXRvck9wZW5lZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmVFZGl0b3ImJnRoaXMuYWN0aXZlRWRpdG9yLmlzT3BlbmVkKCl9fSx7a2V5OiJvcGVuRWRpdG9y''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihoLHYpeyF0aGlzLmFjdGl2ZUVkaXRvcnx8dGhpcy5hY3RpdmVFZGl0b3IuYmVnaW5FZGl0aW5nKGgsdil9fSx7a2V5OiJjbG9zZUVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3RoaXMuYWN0aXZlRWRpdG9yP3RoaXMuYWN0aXZlRWRpdG9yLmZpbmlzaEVk''@;'; put 'put ''aXRpbmcoaCx2LHkpOnkmJnkoITEpfX0se2tleToiY2xvc2VFZGl0b3JBbmRTYXZlQ2hhbmdlcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jbG9zZUVkaXRvcighMSxoKX19LHtrZXk6ImNsb3NlRWRpdG9yQW5kUmVzdG9yZU9yaWdpbmFsVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMu''@;'; put 'put ''Y2xvc2VFZGl0b3IoITAsaCl9fSx7a2V5OiJjbGVhckFjdGl2ZUVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZUVkaXRvcj12b2lkIDB9fSx7a2V5OiJtb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9ImZ1bmN0aW9uIj09dHlwZW9mIHRo''@;'; put 'put ''aXMudGFibGVNZXRhLmVudGVyTW92ZXM/dGhpcy50YWJsZU1ldGEuZW50ZXJNb3ZlcyhldmVudCk6dGhpcy50YWJsZU1ldGEuZW50ZXJNb3ZlcztoP3RoaXMuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC12LnJvdywtdi5jb2wpOnRoaXMuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KHYucm93''@;'; put 'put ''LHYuY29sLCEwKX19LHtrZXk6Im9uQWZ0ZXJEb2N1bWVudEtleURvd24iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXM7aWYodGhpcy5pbnN0YW5jZS5pc0xpc3RlbmluZygpKXt2YXIgeT1oLmtleUNvZGU7aWYoMjI5IT09eSYmdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZCgpKXt2YXIg''@;'; put 'put ''Qz0oaC5jdHJsS2V5fHxoLm1ldGFLZXkpJiYhaC5hbHRLZXk7IXRoaXMuYWN0aXZlRWRpdG9yfHx0aGlzLmFjdGl2ZUVkaXRvci5pc1dhaXRpbmcoKXx8TzNlKHkpfHxUX2UoeSl8fEN8fHRoaXMuaXNFZGl0b3JPcGVuZWQoKXx8KHRoaXMuaW5zdGFuY2UuZ2V0U2hvcnRjdXRNYW5hZ2VyKCku''@;'; put 'put ''Z2V0Q29udGV4dCgiZWRpdG9yIikuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7di5pbnN0YW5jZS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLTEsMCl9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2Lmlu''@;'; put 'put ''c3RhbmNlLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgxLDApfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7di5pbnN0YW5jZS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoMCwtMSp2Lmluc3RhbmNlLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltb''@;'; put 'put ''IkFycm93UmlnaHQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2Lmluc3RhbmNlLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLHYuaW5zdGFuY2UuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX1dLHtydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gRW8odi5pbnN0YW5jZS5nZXRTZWxlY3RlZCgp''@;'; put 'put ''KX0sZ3JvdXA6dWVlfSksdGhpcy5vcGVuRWRpdG9yKCIiLGgpKX19fX0se2tleToib25DZWxsRGJsQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXsiVEQiPT09eS5ub2RlTmFtZSYmKHRoaXMuYWN0aXZlRWRpdG9yJiZ0aGlzLmFjdGl2ZUVkaXRvci5lbmFibGVGdWxsRWRpdE1vZGUoKSx0''@;'; put 'put ''aGlzLm9wZW5FZGl0b3IobnVsbCxoKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKX19XSksZH0oKSxqX2U9bmV3IFdlYWtNYXA7VjNlLmdldEluc3RhbmNlPWZ1bmN0aW9uKGQsZyxoKXt2YXIg''@;'; put 'put ''dj1qX2UuZ2V0KGQpO3JldHVybiB2fHwodj1uZXcgVjNlKGQsZyxoKSxqX2Uuc2V0KGQsdikpLHZ9O2NvbnN0IGp6ZT1WM2U7ZnVuY3Rpb24gajNlKGQpe3JldHVybiBmdW5jdGlvbiBXemUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gWjNlKGQpfShkKXx8ZnVuY3Rpb24gR3plKGQp''@;'; put 'put ''e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIHp6ZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gWjNlKGQs''@;'; put 'put ''Zyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRz''@;'; put 'put ''Ij09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBaM2UoZCxnKX19KGQpfHxmdW5jdGlvbiBaemUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5c''@;'; put 'put ''bkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBaM2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJh''@;'; put 'put ''eShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1MKDk2MjUxKSxMKDI3NjIpLEwoNTgwKSxMKDcxNzcyKSxMKDM1ODEwKTt2YXIgWl9lPXsiJm5ic3A7IjoiICIsIiZhbXA7IjoiJiIsIiZsdDsiOiI8IiwiJmd0OyI6Ij4ifSxZemU9bmV3IFJlZ0V4cChPYmplY3Qua2V5cyhaX2UpLm1h''@;'; put 'put ''cChmdW5jdGlvbihkKXtyZXR1cm4iKCIuY29uY2F0KGQsIikiKX0pLmpvaW4oInwiKSwiZ2kiKTtmdW5jdGlvbiBVemUoZCl7cmV0dXJuIlRBQkxFIj09PShkJiZkLm5vZGVOYW1lfHwiIil9ZnVuY3Rpb24gejNlKGQpe2Zvcih2YXIgZz1kLmhhc0NvbEhlYWRlcnMoKSxoPWQuaGFzUm93SGVh''@;'; put 'put ''ZGVycygpLHY9W2c/LTE6MCxoPy0xOjAsZC5jb3VudFJvd3MoKS0xLGQuY291bnRDb2xzKCktMV0seT1kLmdldERhdGEuYXBwbHkoZCx2KSxDPXkubGVuZ3RoLEk9Qz4wP3lbMF0ubGVuZ3RoOjAsaj1bIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNlPWc/WyI8dGhlYWQ+IiwiPC90aGVhZD4iXTpb''@;'; put 'put ''XSxfZT1bIjx0Ym9keT4iLCI8L3Rib2R5PiJdLFJlPWg/MTowLE5lPWc/MTowLEtlPTA7S2U8QztLZSs9MSl7Zm9yKHZhciBodD1nJiYwPT09S2UsQnQ9W10sJHQ9MDskdDxJOyR0Kz0xKXt2YXIgaG49IWh0JiZoJiYwPT09JHQsRG49IiI7aWYoaHQpRG49Ijx0aD4iLmNvbmNhdChkLmdldENv''@;'; put 'put ''bEhlYWRlcigkdC1SZSksIjwvdGg+Iik7ZWxzZSBpZihobilEbj0iPHRoPiIuY29uY2F0KGQuZ2V0Um93SGVhZGVyKEtlLU5lKSwiPC90aD4iKTtlbHNle3ZhciBpcj15W0tlXVskdF0scHI9ZC5nZXRDZWxsTWV0YShLZS1OZSwkdC1SZSksQXI9cHIucm93c3BhbixZcj1wci5jb2xzcGFuO2lm''@;'; put 'put ''KCFwci5oaWRkZW4pe3ZhciBfaT1bXTtpZihBciYmX2kucHVzaCgncm93c3Bhbj0iJy5jb25jYXQoQXIsJyInKSksWXImJl9pLnB1c2goJ2NvbHNwYW49IicuY29uY2F0KFlyLCciJykpLGRjKGlyKSlEbj0iPHRkICIuY29uY2F0KF9pLmpvaW4oIiAiKSwiPjwvdGQ+Iik7ZWxzZXt2YXIgS2k9''@;'; put 'put ''aXIudG9TdHJpbmcoKS5yZXBsYWNlKCI8IiwiJmx0OyIpLnJlcGxhY2UoIj4iLCImZ3Q7IikucmVwbGFjZSgvKDxicihccyp8XC8pPihcclxufFxuKT98XHJcbnxcbikvZywiPGJyPlxyXG4iKS5yZXBsYWNlKC9ceDIwL2dpLCImbmJzcDsiKS5yZXBsYWNlKC9cdC9naSwiJiM5OyIpO0RuPSI8''@;'; put 'put ''dGQgIi5jb25jYXQoX2kuam9pbigiICIpLCI+IikuY29uY2F0KEtpLCI8L3RkPiIpfX19QnQucHVzaChEbil9dmFyIGtvPVsiPHRyPiJdLmNvbmNhdChCdCxbIjwvdHI+Il0pLmpvaW4oIiIpO2h0P2NlLnNwbGljZSgxLDAsa28pOl9lLnNwbGljZSgtMSwwLGtvKX1yZXR1cm4gai5zcGxpY2Uo''@;'; put 'put ''MSwwLGNlLmpvaW4oIiIpLF9lLmpvaW4oIiIpKSxqLmpvaW4oIiIpfWZ1bmN0aW9uIEczZShkKXtmb3IodmFyIGc9ZC5sZW5ndGgsaD1bIjx0YWJsZT4iXSx2PTA7djxnO3YrPTEpe3ZhciB5PWRbdl0sQz15Lmxlbmd0aCxJPVtdOzA9PT12JiZoLnB1c2goIjx0Ym9keT4iKTtmb3IodmFyIGo9''@;'; put 'put ''MDtqPEM7ais9MSl7dmFyIGNlPXlbal0sX2U9ZGMoY2UpPyIiOmNlLnRvU3RyaW5nKCkucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvKDxicihccyp8XC8pPihcclxufFxuKT98XHJcbnxcbikvZywiPGJyPlxyXG4iKS5yZXBsYWNlKC9ceDIwL2dp''@;'; put 'put ''LCImbmJzcDsiKS5yZXBsYWNlKC9cdC9naSwiJiM5OyIpO0kucHVzaCgiPHRkPiIuY29uY2F0KF9lLCI8L3RkPiIpKX1oLnB1c2guYXBwbHkoaCxbIjx0cj4iXS5jb25jYXQoSSxbIjwvdHI+Il0pKSx2KzE9PT1nJiZoLnB1c2goIjwvdGJvZHk+Iil9cmV0dXJuIGgucHVzaCgiPC90YWJsZT4i''@;'; put 'put ''KSxoLmpvaW4oIiIpfWZ1bmN0aW9uIHpfZShkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZG9jdW1lbnQsaD17fSx2PWcuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHk9Zy5jcmVhdGVFbGVtZW50KCJkaXYiKTt2LmFwcGVu''@;'; put 'put ''ZENoaWxkKHkpO3ZhciBDPWQ7aWYoInN0cmluZyI9PXR5cGVvZiBDKXt2YXIgST1DLnJlcGxhY2UoLzx0ZFxiW14+XSo/PihbXHNcU10qPyk8XC9ccyp0ZD4vZyxmdW5jdGlvbih6bil7dmFyIF9yPXpuLm1hdGNoKC88dGRcYltePl0qPz4vZylbMF0sUXI9em4uc3Vic3RyaW5nKF9yLmxlbmd0''@;'; put 'put ''aCx6bi5sYXN0SW5kZXhPZigiPCIpKS5yZXBsYWNlKC8oPCg/IWJyKShbXj5dKyk+KS9naSwiIik7cmV0dXJuIiIuY29uY2F0KF9yKS5jb25jYXQoUXIpLmNvbmNhdCgiPC90ZD4iKX0pO3kuaW5zZXJ0QWRqYWNlbnRIVE1MKCJhZnRlcmJlZ2luIiwiIi5jb25jYXQoSSkpLEM9eS5xdWVyeVNl''@;'; put 'put ''bGVjdG9yKCJ0YWJsZSIpfWlmKEMmJlV6ZShDKSl7dmFyIGo9eS5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWUkPSJlbmVyYXRvciJdJyksY2U9bnVsbCE9PUMucXVlcnlTZWxlY3RvcigidGJvZHkgdGgiKSxfZT1DLnF1ZXJ5U2VsZWN0b3IoInRyIiksUmU9X2U/QXJyYXkuZnJvbShfZS5jZWxs''@;'; put 'put ''cykucmVkdWNlKGZ1bmN0aW9uKHpuLF9yKXtyZXR1cm4gem4rX3IuY29sU3Bhbn0sMCktKGNlPzE6MCk6MCxOZT1DLnRGb290JiZBcnJheS5mcm9tKEMudEZvb3Qucm93cyl8fFtdLEtlPVtdLGh0PSExLEJ0PTAsJHQ9MDtpZihDLnRIZWFkKXt2YXIgaG49QXJyYXkuZnJvbShDLnRIZWFkLnJv''@;'; put 'put ''d3MpLmZpbHRlcihmdW5jdGlvbih6bil7dmFyIF9yPW51bGwhPT16bi5xdWVyeVNlbGVjdG9yKCJ0ZCIpO3JldHVybiBfciYmS2UucHVzaCh6biksIV9yfSk7aHQ9KEJ0PWhuLmxlbmd0aCk+MCxCdD4xP2gubmVzdGVkSGVhZGVycz1BcnJheS5mcm9tKGhuKS5yZWR1Y2UoZnVuY3Rpb24oem4s''@;'; put 'put ''X3Ipe3ZhciBRcj1BcnJheS5mcm9tKF9yLmNlbGxzKS5yZWR1Y2UoZnVuY3Rpb24odWksdTAsWGkpe2lmKGNlJiYwPT09WGkpcmV0dXJuIHVpO3ZhciBFMD11MC5jb2xTcGFuLHowPXUwLmlubmVySFRNTDtyZXR1cm4gdWkucHVzaChFMD4xP3tsYWJlbDp6MCxjb2xzcGFuOkUwfTp6MCksdWl9''@;'; put 'put ''LFtdKTtyZXR1cm4gem4ucHVzaChRciksem59LFtdKTpodCYmKGguY29sSGVhZGVycz1BcnJheS5mcm9tKGhuWzBdLmNoaWxkcmVuKS5yZWR1Y2UoZnVuY3Rpb24oem4sX3IsUXIpe3JldHVybiBjZSYmMD09PVFyfHx6bi5wdXNoKF9yLmlubmVySFRNTCksem59LFtdKSl9S2UubGVuZ3RoJiYo''@;'; put 'put ''aC5maXhlZFJvd3NUb3A9S2UubGVuZ3RoKSxOZS5sZW5ndGgmJihoLmZpeGVkUm93c0JvdHRvbT1OZS5sZW5ndGgpO3ZhciBEbj1bXS5jb25jYXQoS2UsajNlKEFycmF5LmZyb20oQy50Qm9kaWVzKS5yZWR1Y2UoZnVuY3Rpb24oem4sX3Ipe3JldHVybiB6bi5wdXNoLmFwcGx5KHpuLGozZShB''@;'; put 'put ''cnJheS5mcm9tKF9yLnJvd3MpKSksem59LFtdKSksajNlKE5lKSk7JHQ9RG4ubGVuZ3RoO2Zvcih2YXIgaXI9bmV3IEFycmF5KCR0KSxwcj0wO3ByPCR0O3ByKyspaXJbcHJdPW5ldyBBcnJheShSZSk7Zm9yKHZhciBFcj1bXSxBcj1bXSxZcj0wO1lyPCR0O1lyKyspZm9yKHZhciBfaT1EbltZ''@;'; put 'put ''cl0sS2k9QXJyYXkuZnJvbShfaS5jZWxscyksa289S2kubGVuZ3RoLE9vPTA7T288a287T28rKyl7dmFyIGJhPUtpW09vXSxZYT1iYS5ub2RlTmFtZSxvYT1iYS5pbm5lckhUTUwscWE9YmEucm93U3BhbixPcz1iYS5jb2xTcGFuLEgwPWlyW1lyXS5maW5kSW5kZXgoZnVuY3Rpb24oem4pe3Jl''@;'; put 'put ''dHVybiB2b2lkIDA9PT16bn0pO2lmKCJURCI9PT1ZYSl7aWYocWE+MXx8T3M+MSl7Zm9yKHZhciBvbz1ZcjtvbzxZcitxYTtvbysrKWlmKG9vPCR0KWZvcih2YXIgaG89SDA7aG88SDArT3M7aG8rKylpcltvb11baG9dPW51bGw7dmFyIFRhPWJhLmdldEF0dHJpYnV0ZSgic3R5bGUiKSxKbD1U''@;'; put 'put ''YSYmVGEuaW5jbHVkZXMoIm1zby1pZ25vcmU6Y29sc3BhbiIpO0psfHxFci5wdXNoKHtjb2w6SDAscm93OllyLHJvd3NwYW46cWEsY29sc3BhbjpPc30pfXZhciBIbj0iIjtIbj1qJiYvZXhjZWwvZ2kudGVzdChqLmNvbnRlbnQpP29hLnJlcGxhY2UoL1tcclxuXVtceDIwXXswLDJ9L2csIiAi''@;'; put 'put ''KS5yZXBsYWNlKC88YnIoXHMqfFwvKT5bXHJcbl0/W1x4MjBdezAsM30vZ2ltLCJcclxuIik6b2EucmVwbGFjZSgvPGJyKFxzKnxcLyk+W1xyXG5dPy9naW0sIlxyXG4iKSxpcltZcl1bSDBdPUhuLnJlcGxhY2UoWXplLGZ1bmN0aW9uKHpuKXtyZXR1cm4gWl9lW3puXX0pfWVsc2UgQXIucHVz''@;'; put 'put ''aChvYSl9cmV0dXJuIEVyLmxlbmd0aCYmKGgubWVyZ2VDZWxscz1FciksQXIubGVuZ3RoJiYoaC5yb3dIZWFkZXJzPUFyKSxpci5sZW5ndGgmJihoLmRhdGE9aXIpLGh9fWZ1bmN0aW9uIFF6ZShkKXtyZXR1cm4gZnVuY3Rpb24gJHplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIFcz''@;'; put 'put ''ZShkKX0oZCl8fGZ1bmN0aW9uIEt6ZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBYemUoZCxnKXtpZihkKXtpZigic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIGQpcmV0dXJuIFczZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFy''@;'; put 'put ''cmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gVzNlKGQsZyl9fShkKXx8ZnVuY3Rpb24gSnplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVh''@;'; put 'put ''ZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gVzNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0''@;'; put 'put ''aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gWTNlKGQpe3JldHVybihZM2U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5''@;'; put 'put ''cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBnNChkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saD1ZM2UoZCk7aWYoIm51bWJlciI9PT1oKXJldHVybiFpc05hTihkKSYmaXNGaW5pdGUoZCk7aWYoInN0cmluZyI9PT1oKXtpZigwPT09ZC5sZW5ndGgpcmV0dXJuITE7aWYoMT09PWQubGVuZ3RoKXJldHVybi9cZC8udGVz''@;'; put 'put ''dChkKTt2YXIgdj1BcnJheS5mcm9tKG5ldyBTZXQoWyIuIl0uY29uY2F0KFF6ZShnKSkpKS5tYXAoZnVuY3Rpb24oeSl7cmV0dXJuIlxcIi5jb25jYXQoeSl9KS5qb2luKCJ8Iik7cmV0dXJuIG5ldyBSZWdFeHAoIl5bKy1dP1xccyooKCgiLmNvbmNhdCh2LCIpP1xcZCsoKCIpLmNvbmNhdCh2''@;'; put 'put ''LCIpXFxkKyk/KGVbKy1dP1xcZCspPyl8KDB4W2EtZlxcZF0rKSkkIiksImkiKS50ZXN0KGQudHJpbSgpKX1yZXR1cm4ib2JqZWN0Ij09PWgmJiEoIWR8fCJudW1iZXIiIT10eXBlb2YgZC52YWx1ZU9mKCl8fGQgaW5zdGFuY2VvZiBEYXRlKX1mdW5jdGlvbiBHX2UoZCl7cmV0dXJuIGc0KGQs''@;'; put 'put ''WyIsIl0pfWZ1bmN0aW9uIHJhKGQsZyxoKXt2YXIgdj0tMTtmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGc/KGg9ZyxnPWQpOnY9ZC0xOysrdjw9ZyYmITEhPT1oKHYpOyk7fWZ1bmN0aW9uIGNlZShkLGcsaCl7dmFyIHY9ZCsxO2ZvcigiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGg9ZyxnPTApOy0t''@;'; put 'put ''dj49ZyYmITEhPT1oKHYpOyk7fWZ1bmN0aW9uIFUzZShkLGcpe3JldHVybiBnPXBhcnNlSW50KGcudG9TdHJpbmcoKS5yZXBsYWNlKCIlIiwiIiksMTApLGc9aXNOYU4oZyk/MDpnLHBhcnNlSW50KGQqZy8xMDAsMTApfWZ1bmN0aW9uIHF6ZShkKXtyZXR1cm4gZnVuY3Rpb24gbkdlKGQpe2lm''@;'; put 'put ''KEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIFEzZShkKX0oZCl8fGZ1bmN0aW9uIHRHZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxXX2UoZCl8''@;'; put 'put ''fGZ1bmN0aW9uIGVHZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0''@;'; put 'put ''aG9kLiIpfSgpfWZ1bmN0aW9uIHJHZShkLGcpe3JldHVybiBmdW5jdGlvbiBhR2UoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIG9HZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9Zmlu''@;'; put 'put ''YWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fFdfZShkLGcpfHxmdW5jdGlvbiBpR2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJh''@;'; put 'put ''YmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFdfZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gUTNlKGQsZyk7''@;'; put 'put ''dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09''@;'; put 'put ''PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBRM2UoZCxnKX19ZnVuY3Rpb24gUTNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hd''@;'; put 'put ''PWRbaF07cmV0dXJuIHZ9dmFyIEozZT0iYXNjIixZX2U9bmV3IE1hcChbW0ozZSxbLTEsMV1dLFsiZGVzYyIsWzEsLTFdXV0pLHNHZT1mdW5jdGlvbihnKXtyZXR1cm4iVGhlIHByaW9yaXR5ICciLmNvbmNhdChnLCInIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuIil9LHVHZT1mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4iVGhlIHByaW9yaXR5ICciLmNvbmNhdChnLCInIGlzIG5vdCBhIG51bWJlci4iKX07ZnVuY3Rpb24gZkdlKGQpe3JldHVybiBmdW5jdGlvbiBwR2UoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gWDNlKGQpfShkKXx8ZnVuY3Rpb24gZEdlKGQpe2lmKCJ1bmRl''@;'; put 'put ''ZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fFFfZShkKXx8ZnVuY3Rpb24gaEdlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVh''@;'; put 'put ''ZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gVV9lKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHZHZShkKXtpZihBcnJheS5p''@;'; put 'put ''c0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gbUdlKGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtm''@;'; put 'put ''b3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9''@;'; put 'put ''fXJldHVybiB2fX0oZCxnKXx8UV9lKGQsZyl8fGZ1bmN0aW9uIGdHZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVz''@;'; put 'put ''dCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gUV9lKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBYM2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVj''@;'; put 'put ''dCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJu''@;'; put 'put ''IFgzZShkLGcpfX1mdW5jdGlvbiBYM2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1MKDU0Njc5KTt2YXIgQUdlPWZ1bmN0aW9uKGcpe3JldHVybiJUaGUgaWQgJyIu''@;'; put 'put ''Y29uY2F0KGcsIicgaXMgYWxyZWFkeSBkZWNsYXJlZCBpbiBhIG1hcC4iKX07ZnVuY3Rpb24gZmVlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGc9ZC5lcnJvcklkRXhpc3RzLGg9bmV3IE1hcDtmdW5jdGlvbiB2KFJl''@;'; put 'put ''LE5lKXtpZihfZShSZSkpdGhyb3cgbmV3IEVycm9yKGcoUmUpKTtoLnNldChSZSxOZSl9ZnVuY3Rpb24geShSZSl7cmV0dXJuIGguZGVsZXRlKFJlKX1mdW5jdGlvbiBDKCl7aC5jbGVhcigpfWZ1bmN0aW9uIEkoUmUpe3ZhciBOZT1jZSgpLmZpbmQoZnVuY3Rpb24oQnQpe3ZhciAkdD1VX2Uo''@;'; put 'put ''QnQsMik7cmV0dXJuIFJlPT09JHRbMV0mJiR0WzBdfSl8fFtudWxsXTtyZXR1cm4gVV9lKE5lLDEpWzBdfWZ1bmN0aW9uIGooUmUpe3JldHVybiBoLmdldChSZSl9ZnVuY3Rpb24gY2UoKXtyZXR1cm4gZkdlKGgpfWZ1bmN0aW9uIF9lKFJlKXtyZXR1cm4gaC5oYXMoUmUpfXJldHVybiBnPVUy''@;'; put 'put ''KGcpP2c6QUdlLHthZGRJdGVtOnYsY2xlYXI6QyxnZXRJZDpJLGdldEl0ZW06aixnZXRJdGVtczpjZSxoYXNJdGVtOl9lLHJlbW92ZUl0ZW06eX19ZnVuY3Rpb24geUdlKGQpe3JldHVybiBmdW5jdGlvbiBDR2UoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gSzNlKGQpfShkKXx8ZnVu''@;'; put 'put ''Y3Rpb24gX0dlKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIGJHZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZCly''@;'; put 'put ''ZXR1cm4gSzNlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtp''@;'; put 'put ''ZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBLM2UoZCxnKX19KGQpfHxmdW5jdGlvbiB3R2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJs''@;'; put 'put ''ZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBLM2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9''@;'; put 'put ''MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn12YXIga0dlPWZ1bmN0aW9uKGcpe3JldHVybiInIi5jb25jYXQoZywiJyB2YWx1ZSBpcyBhbHJlYWR5IGRlY2xhcmVkIGluIGEgdW5pcXVlIHNldC4iKX07ZnVuY3Rpb24gSl9lKGQpe3JldHVybiBmdW5jdGlvbiBM''@;'; put 'put ''R2UoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gJDNlKGQpfShkKXx8ZnVuY3Rpb24gREdlKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8''@;'; put 'put ''fFhfZShkKXx8ZnVuY3Rpb24gSUdlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRv''@;'; put 'put ''cl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gWF9lKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiAkM2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYo''@;'; put 'put ''aD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuICQzZShkLGcpfX1mdW5jdGlvbiAkM2Uo''@;'; put 'put ''ZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn12YXIgcTNlPWZ1bmN0aW9uKGcpe3JldHVybidUaGVyZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgIicuY29uY2F0KGcsJyIg''@;'; put 'put ''cGx1Z2luLicpfSxLX2U9ZnVuY3Rpb24gY0dlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGc9ZC5lcnJvclByaW9yaXR5RXhpc3RzLGg9ZC5lcnJvclByaW9yaXR5TmFOLHY9bmV3IE1hcDtmdW5jdGlvbiB5KEksail7''@;'; put 'put ''aWYoIWc0KEkpKXRocm93IG5ldyBFcnJvcihoKEkpKTtpZih2LmhhcyhJKSl0aHJvdyBuZXcgRXJyb3IoZyhJKSk7di5zZXQoSSxqKX1mdW5jdGlvbiBDKCl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOkozZSxqPVlfZS5nZXQo''@;'; put 'put ''SSl8fFlfZS5nZXQoSjNlKSxjZT1yR2UoaiwyKSxfZT1jZVswXSxSZT1jZVsxXTtyZXR1cm4gcXplKHYpLnNvcnQoZnVuY3Rpb24oTmUsS2Upe3JldHVybiBOZVswXTxLZVswXT9fZTpSZX0pLm1hcChmdW5jdGlvbihOZSl7cmV0dXJuIE5lWzFdfSl9cmV0dXJuIGc9VTIoZyk/ZzpzR2UsaD1V''@;'; put 'put ''MihoKT9oOnVHZSx7YWRkSXRlbTp5LGdldEl0ZW1zOkN9fSh7ZXJyb3JQcmlvcml0eUV4aXN0czpmdW5jdGlvbihnKXtyZXR1cm4nVGhlcmUgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHBsdWdpbiBvbiBwcmlvcml0eSAiJy5jb25jYXQoZywnIi4nKX0sZXJyb3JQcmlvcml0eU5hTjpmdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4nVGhlIHByaW9yaXR5ICInLmNvbmNhdChnLCciIGlzIG5vdCBhIG51bWJlci4nKX19KSwkX2U9ZnVuY3Rpb24gU0dlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGc9ZC5lcnJvckl0ZW1FeGlzdHMs''@;'; put 'put ''aD1uZXcgU2V0O2Z1bmN0aW9uIHYoSSl7aWYoaC5oYXMoSSkpdGhyb3cgbmV3IEVycm9yKGcoSSkpO2guYWRkKEkpfWZ1bmN0aW9uIHkoKXtyZXR1cm4geUdlKGgpfWZ1bmN0aW9uIEMoKXtoLmNsZWFyKCl9cmV0dXJuIGc9VTIoZyk/ZzprR2Use2FkZEl0ZW06dixjbGVhcjpDLGdldEl0ZW1z''@;'; put 'put ''Onl9fSh7ZXJyb3JJdGVtRXhpc3RzOnEzZX0pLGVkZT1mZWUoe2Vycm9ySWRFeGlzdHM6cTNlfSk7ZnVuY3Rpb24gdGRlKCl7cmV0dXJuW10uY29uY2F0KEpfZShLX2UuZ2V0SXRlbXMoKSksSl9lKCRfZS5nZXRJdGVtcygpKSl9ZnVuY3Rpb24gbXooZCl7dmFyIGc9dGQoZCk7cmV0dXJuIGVk''@;'; put 'put ''ZS5nZXRJdGVtKGcpfWZ1bmN0aW9uIExzKGQsZyxoKXt2YXIgdj1mdW5jdGlvbiBGR2UoZCxnLGgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkJiYoZD0oZz1kKS5QTFVHSU5fS0VZLGg9Zy5QTFVHSU5fUFJJT1JJVFkpLFtkLGcsaF19KGQsZyxoKSx5PWZ1bmN0aW9uIE1HZShkLGcpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbiBUR2UoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHhHZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9''@;'; put 'put ''aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZo''@;'; put 'put ''LnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fFhfZShkLGcpfHxmdW5jdGlvbiBFR2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUg''@;'; put 'put ''aXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh2LDMpO2c9eVsxXSxoPXlbMl0sdm9pZCAwPT09bXooZD15WzBdKSYmZnVuY3Rpb24gUEdlKGQsZyxoKXt2YXIgdj10ZChkKTtpZihlZGUuaGFzSXRlbSh2KSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IocTNlKHYpKTt2b2lkIDA9PT1oPyRfZS5hZGRJdGVtKHYpOktfZS5hZGRJdGVtKGgsdiksZWRlLmFkZEl0ZW0odixnKX0oZCxnLGgpfXZhciB2ej1rcCgicmVuZGVyZXJzIiksSEdlPXZ6LnJlZ2lzdGVyLE5HZT12ei5nZXRJdGVtLHFfZT12ei5oYXNJdGVtLFZHZT12''@;'; put 'put ''ei5nZXROYW1lcztmdW5jdGlvbiBuZGUoZCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQpcmV0dXJuIGQ7aWYoIXFfZShkKSl0aHJvdyBFcnJvcignTm8gcmVnaXN0ZXJlZCByZW5kZXJlciBmb3VuZCB1bmRlciAiJy5jb25jYXQoZCwnIiBuYW1lJykpO3JldHVybiBOR2UoZCl9ZnVuY3Rpb24g''@;'; put 'put ''RWcoZCxnKXsic3RyaW5nIiE9dHlwZW9mIGQmJihkPShnPWQpLlJFTkRFUkVSX1RZUEUpLEhHZShkLGcpfXZhciBBej1rcCgidmFsaWRhdG9ycyIpLGpHZT1Bei5yZWdpc3RlcixaR2U9QXouZ2V0SXRlbSxlQ2U9QXouaGFzSXRlbSx6R2U9QXouZ2V0TmFtZXM7ZnVuY3Rpb24gcmRlKGQpe2lm''@;'; put 'put ''KCJmdW5jdGlvbiI9PXR5cGVvZiBkKXJldHVybiBkO2lmKCFlQ2UoZCkpdGhyb3cgRXJyb3IoJ05vIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGZvdW5kIHVuZGVyICInLmNvbmNhdChkLCciIG5hbWUnKSk7cmV0dXJuIFpHZShkKX1mdW5jdGlvbiBETyhkLGcpeyJzdHJpbmciIT10eXBlb2YgZCYm''@;'; put 'put ''KGQ9KGc9ZCkuVkFMSURBVE9SX1RZUEUpLGpHZShkLGcpfWZ1bmN0aW9uIEdHZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHRDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5s''@;'; put 'put ''ZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fUwoMTYxNjEpLEwoOTE2ODMpO3ZhciBMTz1uZXcgV2Vh''@;'; put 'put ''a01hcCxZR2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCx2LHksQyxJKXt2YXIgaj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbDtHR2UodGhpcyxkKSx0aGlzLnd0U2V0dGluZ3M9dix0aGlzLmRvbUJpbmRpbmdzPWgsdGhpcy53''@;'; put 'put ''dFRhYmxlPUMsdGhpcy5zZWxlY3Rpb25zPUksdGhpcy5wYXJlbnQ9aix0aGlzLmV2ZW50TWFuYWdlcj15LHRoaXMuZmFjYWRlR2V0dGVyPWcsTE8uc2V0KHRoaXMse3NlbGVjdGVkQ2VsbEJlZm9yZVRvdWNoRW5kOnZvaWQgMCxkYmxDbGlja1RpbWVvdXQ6W251bGwsbnVsbF0sZGJsQ2xpY2tP''@;'; put 'put ''cmlnaW46W251bGwsbnVsbF19KSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCl9cmV0dXJuIGZ1bmN0aW9uIFdHZShkLGcsaCl7ZyYmdENlKGQucHJvdG90eXBlLGcpLGgmJnRDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJy''@;'; put 'put ''ZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy53dFRhYmxlLmhvbGRlciwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKEMpe3JldHVybiBoLm9uQ29udGV4dE1lbnUoQyl9KSx0aGlzLmV2ZW50TWFu''@;'; put 'put ''YWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMud3RUYWJsZS5UQUJMRSwibW91c2VvdmVyIixmdW5jdGlvbihDKXtyZXR1cm4gaC5vbk1vdXNlT3ZlcihDKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy53dFRhYmxlLlRBQkxFLCJtb3VzZW91dCIsZnVuY3Rpb24o''@;'; put 'put ''Qyl7cmV0dXJuIGgub25Nb3VzZU91dChDKX0pO3ZhciB2PWZ1bmN0aW9uKCl7aC5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLnd0VGFibGUuaG9sZGVyLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihJKXtyZXR1cm4gaC5vblRvdWNoU3RhcnQoSSl9KSxoLmV2ZW50TWFuYWdlci5hZGRF''@;'; put 'put ''dmVudExpc3RlbmVyKGgud3RUYWJsZS5ob2xkZXIsInRvdWNoZW5kIixmdW5jdGlvbihJKXtyZXR1cm4gaC5vblRvdWNoRW5kKEkpfSksaC5tb21lbnR1bVNjcm9sbGluZ3x8KGgubW9tZW50dW1TY3JvbGxpbmc9e30pLGguZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaC53dFRhYmxl''@;'; put 'put ''LmhvbGRlciwic2Nyb2xsIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChoLm1vbWVudHVtU2Nyb2xsaW5nLl90aW1lb3V0KSxoLm1vbWVudHVtU2Nyb2xsaW5nLm9uZ29pbmd8fGgud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkJlZm9yZVRvdWNoU2Nyb2xsIiksaC5tb21lbnR1bVNjcm9sbGlu''@;'; put 'put ''Zy5vbmdvaW5nPSEwLGgubW9tZW50dW1TY3JvbGxpbmcuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2gudG91Y2hBcHBsaWVkfHwoaC5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nPSExLGgud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkFmdGVyTW9tZW50dW1TY3JvbGwiKSl9LDIw''@;'; put 'put ''MCl9KX07bTgoKT92KCk6KG4zZSgpJiZ2KCksaC5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLnd0VGFibGUuaG9sZGVyLCJtb3VzZXVwIixmdW5jdGlvbihJKXtyZXR1cm4gaC5vbk1vdXNlVXAoSSl9KSxoLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGgud3RUYWJsZS5o''@;'; put 'put ''b2xkZXIsIm1vdXNlZG93biIsZnVuY3Rpb24oSSl7cmV0dXJuIGgub25Nb3VzZURvd24oSSl9KSl9fSx7a2V5OiJzZWxlY3RlZENlbGxXYXNUb3VjaGVkIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1MTy5nZXQodGhpcyksQz10aGlzLnBhcmVudENlbGwoaCkuY29vcmRzO2lmKHYuc2VsZWN0''@;'; put 'put ''ZWRDZWxsQmVmb3JlVG91Y2hFbmQmJkMpe3ZhciBJPVtDLnJvdyx2LnNlbGVjdGVkQ2VsbEJlZm9yZVRvdWNoRW5kLmZyb20ucm93XSxfZT1bQy5jb2wsdi5zZWxlY3RlZENlbGxCZWZvcmVUb3VjaEVuZC5mcm9tLmNvbF07cmV0dXJuIElbMF09PT1JWzFdJiZfZVswXT09PV9lWzFdfXJldHVy''@;'; put 'put ''biExfX0se2tleToicGFyZW50Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9e30sQz1seihoLFsiVEQiLCJUSCJdLHRoaXMud3RUYWJsZS5UQUJMRSk7cmV0dXJuIEM/KHYuY29vcmRzPXRoaXMud3RUYWJsZS5nZXRDb29yZHMoQyksdi5URD1DKTpYYShoLCJ3dEJvcmRlciIpJiZYYSho''@;'; put 'put ''LCJjdXJyZW50Iik/KHYuY29vcmRzPXRoaXMuc2VsZWN0aW9ucy5nZXRDZWxsKCkuY2VsbFJhbmdlLmhpZ2hsaWdodCx2LlREPXRoaXMud3RUYWJsZS5nZXRDZWxsKHYuY29vcmRzKSk6WGEoaCwid3RCb3JkZXIiKSYmWGEoaCwiYXJlYSIpJiZ0aGlzLnNlbGVjdGlvbnMuY3JlYXRlT3JHZXRB''@;'; put 'put ''cmVhKCkuY2VsbFJhbmdlJiYodi5jb29yZHM9dGhpcy5zZWxlY3Rpb25zLmNyZWF0ZU9yR2V0QXJlYSgpLmNlbGxSYW5nZS50byx2LlREPXRoaXMud3RUYWJsZS5nZXRDZWxsKHYuY29vcmRzKSksdn19LHtrZXk6Im9uTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1MTy5nZXQo''@;'; put 'put ''dGhpcykseT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50LEM9TDNlKGdfZSxoLnRhcmdldCksST1oLnRhcmdldDtpZihJIT09eSYmQygwKSE9PXkmJkMoMSkhPT15KXt2YXIgaj10aGlzLnBhcmVudENlbGwoSSk7WGEoSSwiY29ybmVyIik/dGhpcy53dFNldHRp''@;'; put 'put ''bmdzLmdldFNldHRpbmcoIm9uQ2VsbENvcm5lck1vdXNlRG93biIsaCxJKTpqLlREJiZ0aGlzLnd0U2V0dGluZ3MuaGFzKCJvbkNlbGxNb3VzZURvd24iKSYmdGhpcy5jYWxsTGlzdGVuZXIoIm9uQ2VsbE1vdXNlRG93biIsaCxqLmNvb3JkcyxqLlREKSwoMD09PWguYnV0dG9ufHx0aGlzLnRv''@;'; put 'put ''dWNoQXBwbGllZCkmJmouVEQmJih2LmRibENsaWNrT3JpZ2luWzBdPWouVEQsY2xlYXJUaW1lb3V0KHYuZGJsQ2xpY2tUaW1lb3V0WzBdKSx2LmRibENsaWNrVGltZW91dFswXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5kYmxDbGlja09yaWdpblswXT1udWxsfSwxZTMpKX19fSx7a2V5OiJv''@;'; put 'put ''bkNvbnRleHRNZW51Iix2YWx1ZTpmdW5jdGlvbihoKXtpZih0aGlzLnd0U2V0dGluZ3MuaGFzKCJvbkNlbGxDb250ZXh0TWVudSIpKXt2YXIgdj10aGlzLnBhcmVudENlbGwoaC50YXJnZXQpO3YuVEQmJnRoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxDb250ZXh0TWVudSIsaCx2LmNvb3Jkcyx2''@;'; put 'put ''LlREKX19fSx7a2V5OiJvbk1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYodGhpcy53dFNldHRpbmdzLmhhcygib25DZWxsTW91c2VPdmVyIikpe3ZhciB2PXRoaXMud3RUYWJsZS5UQUJMRSx5PWx6KGgudGFyZ2V0LFsiVEQiLCJUSCJdLHYpLEM9dGhpcy5wYXJlbnR8fHRoaXM7eSYm''@;'; put 'put ''eSE9PUMubGFzdE1vdXNlT3ZlciYmRHcoeSx2KSYmKEMubGFzdE1vdXNlT3Zlcj15LHRoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxNb3VzZU92ZXIiLGgsdGhpcy53dFRhYmxlLmdldENvb3Jkcyh5KSx5KSl9fX0se2tleToib25Nb3VzZU91dCIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYodGhpcy53''@;'; put 'put ''dFNldHRpbmdzLmhhcygib25DZWxsTW91c2VPdXQiKSl7dmFyIHY9dGhpcy53dFRhYmxlLlRBQkxFLHk9bHooaC50YXJnZXQsWyJURCIsIlRIIl0sdiksQz1seihoLnJlbGF0ZWRUYXJnZXQsWyJURCIsIlRIIl0sdik7eSYmeSE9PUMmJkR3KHksdikmJnRoaXMuY2FsbExpc3RlbmVyKCJvbkNl''@;'; put 'put ''bGxNb3VzZU91dCIsaCx0aGlzLnd0VGFibGUuZ2V0Q29vcmRzKHkpLHkpfX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9TE8uZ2V0KHRoaXMpLHk9dGhpcy5wYXJlbnRDZWxsKGgudGFyZ2V0KTt5LlREJiZ0aGlzLnd0U2V0dGluZ3MuaGFzKCJvbkNlbGxNb3Vz''@;'; put 'put ''ZVVwIikmJnRoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxNb3VzZVVwIixoLHkuY29vcmRzLHkuVEQpLCgwPT09aC5idXR0b258fHRoaXMudG91Y2hBcHBsaWVkKSYmKHkuVEQ9PT12LmRibENsaWNrT3JpZ2luWzBdJiZ5LlREPT09di5kYmxDbGlja09yaWdpblsxXT8oWGEoaC50YXJnZXQsImNv''@;'; put 'put ''cm5lciIpP3RoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxDb3JuZXJEYmxDbGljayIsaCx5LmNvb3Jkcyx5LlREKTp0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsRGJsQ2xpY2siLGgseS5jb29yZHMseS5URCksdi5kYmxDbGlja09yaWdpblswXT1udWxsLHYuZGJsQ2xpY2tPcmlnaW5bMV09bnVs''@;'; put 'put ''bCk6eS5URD09PXYuZGJsQ2xpY2tPcmlnaW5bMF0mJih2LmRibENsaWNrT3JpZ2luWzFdPXkuVEQsY2xlYXJUaW1lb3V0KHYuZGJsQ2xpY2tUaW1lb3V0WzFdKSx2LmRibENsaWNrVGltZW91dFsxXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5kYmxDbGlja09yaWdpblsxXT1udWxsfSw1MDAp''@;'; put 'put ''KSl9fSx7a2V5OiJvblRvdWNoU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGgpe0xPLmdldCh0aGlzKS5zZWxlY3RlZENlbGxCZWZvcmVUb3VjaEVuZD10aGlzLnNlbGVjdGlvbnMuZ2V0Q2VsbCgpLmNlbGxSYW5nZSx0aGlzLnRvdWNoQXBwbGllZD0hMCx0aGlzLm9uTW91c2VEb3duKGgpfX0se2tl''@;'; put 'put ''eToib25Ub3VjaEVuZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHYseT1oLnRhcmdldCxDPW51bGw9PT0odj10aGlzLnBhcmVudENlbGwoeSkpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmNvb3JkcyxJPUVvKEMpJiZDLnJvdz49MCYmQy5jb2w+PTA7aC5jYW5jZWxhYmxlJiZJJiZ0aGlzLnd0U2V0''@;'; put 'put ''dGluZ3MuZ2V0U2V0dGluZygiaXNEYXRhVmlld0luc3RhbmNlIikmJihjM2UoKSYmKFhiZSgpfHxLYmUoKSkmJnRoaXMuc2VsZWN0ZWRDZWxsV2FzVG91Y2hlZCh5KSYmIVsiQSIsIkJVVFRPTiIsIklOUFVUIl0uaW5jbHVkZXMoeS50YWdOYW1lKT9oLnByZXZlbnREZWZhdWx0KCk6dGhpcy5z''@;'; put 'put ''ZWxlY3RlZENlbGxXYXNUb3VjaGVkKHkpfHxoLnByZXZlbnREZWZhdWx0KCkpLHRoaXMub25Nb3VzZVVwKGgpLHRoaXMudG91Y2hBcHBsaWVkPSExfX0se2tleToiY2FsbExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXt2YXIgST10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZ1B1''@;'; put 'put ''cmUoaCk7SSYmSSh2LHksQyx0aGlzLmZhY2FkZUdldHRlcigpKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9TE8uZ2V0KHRoaXMpO2NsZWFyVGltZW91dChoLmRibENsaWNrVGltZW91dFswXSksY2xlYXJUaW1lb3V0KGguZGJsQ2xpY2tUaW1lb3V0WzFdKSx0aGlz''@;'; put 'put ''LmV2ZW50TWFuYWdlci5kZXN0cm95KCl9fV0pLGR9KCk7Y29uc3QgbkNlPVlHZTtmdW5jdGlvbiByQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYm''@;'; put 'put ''KHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgSkdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgsdil7KGZ1bmN0aW9uIFVHZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh''@;'; put 'put ''c3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLm9mZnNldD1nLHRoaXMudG90YWw9aCx0aGlzLmNvdW50VEg9dn1yZXR1cm4gZnVuY3Rpb24gUUdlKGQsZyxoKXtnJiZyQ2UoZC5wcm90b3R5cGUsZyksaCYmckNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlw''@;'; put 'put ''ZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Im9mZnNldHRlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgrdGhpcy5vZmZzZXR9fSx7a2V5OiJ1bk9mZnNldHRlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgtdGhpcy5vZmZzZXR9fSx7a2V5OiJyZW5kZXJlZFRvU291cmNlIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5vZmZzZXR0ZWQoaCl9fSx7a2V5OiJzb3VyY2VUb1JlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZChoKX19LHtrZXk6Im9mZnNldHRlZFRIIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaC10aGlz''@;'; put 'put ''LmNvdW50VEh9fSx7a2V5OiJ1bk9mZnNldHRlZFRIIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaCt0aGlzLmNvdW50VEh9fSx7a2V5OiJ2aXNpYmxlUm93SGVhZGVkQ29sdW1uVG9Tb3VyY2VDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnJlbmRlcmVkVG9Tb3VyY2Uo''@;'; put 'put ''dGhpcy5vZmZzZXR0ZWRUSChoKSl9fSx7a2V5OiJzb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnVuT2Zmc2V0dGVkVEgodGhpcy5zb3VyY2VUb1JlbmRlcmVkKGgpKX19XSksZH0oKTtjb25zdCBYR2U9SkdlO2Z1bmN0''@;'; put 'put ''aW9uIGlDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZh''@;'; put 'put ''ciBxR2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCx2KXsoZnVuY3Rpb24gS0dlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMub2Zmc2V0PWcsdGhpcy50b3Rh''@;'; put 'put ''bD1oLHRoaXMuY291bnRUSD12fXJldHVybiBmdW5jdGlvbiAkR2UoZCxnLGgpe2cmJmlDZShkLnByb3RvdHlwZSxnKSxoJiZpQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToib2Zmc2V0dGVkIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gaCt0aGlzLm9mZnNldH19LHtrZXk6InVuT2Zmc2V0dGVkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaC10aGlzLm9mZnNldH19LHtrZXk6InJlbmRlcmVkVG9Tb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLm9mZnNldHRlZChoKX19LHtrZXk6InNv''@;'; put 'put ''dXJjZVRvUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnVuT2Zmc2V0dGVkKGgpfX0se2tleToib2Zmc2V0dGVkVEgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoLXRoaXMuY291bnRUSH19LHtrZXk6InVuT2Zmc2V0dGVkVEgiLHZhbHVlOmZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBoK3RoaXMuY291bnRUSH19LHtrZXk6InZpc2libGVDb2xIZWFkZWRSb3dUb1NvdXJjZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucmVuZGVyZWRUb1NvdXJjZSh0aGlzLm9mZnNldHRlZFRIKGgpKX19LHtrZXk6InNvdXJjZVJvd1RvVmlzaWJsZUNvbEhlYWRlZFJv''@;'; put 'put ''dyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMudW5PZmZzZXR0ZWRUSCh0aGlzLnNvdXJjZVRvUmVuZGVyZWQoaCkpfX1dKSxkfSgpO2NvbnN0IGVXZT1xR2U7ZnVuY3Rpb24gb0NlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxl''@;'; put 'put ''PXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGFDZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXsoZnVuY3Rpb24gbldlKGQsZyl7aWYoIShkIGluc3RhbmNl''@;'; put 'put ''b2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuY3VycmVudFNpemU9MCx0aGlzLm5leHRTaXplPTAsdGhpcy5jdXJyZW50T2Zmc2V0PTAsdGhpcy5uZXh0T2Zmc2V0PTB9cmV0dXJuIGZ1bmN0aW9uIHJX''@;'; put 'put ''ZShkLGcsaCl7ZyYmb0NlKGQucHJvdG90eXBlLGcpLGgmJm9DZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRTaXplIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmN1cnJlbnRTaXplPXRoaXMubmV4dFNpemUsdGhp''@;'; put 'put ''cy5uZXh0U2l6ZT1ofX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmN1cnJlbnRPZmZzZXQ9dGhpcy5uZXh0T2Zmc2V0LHRoaXMubmV4dE9mZnNldD1ofX1dKSxkfSgpO2Z1bmN0aW9uIGxDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1n''@;'; put 'put ''W2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBhV2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIGlXZShkLGcp''@;'; put 'put ''e2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnNpemU9bmV3IGFDZSx0aGlzLndvcmtpbmdTcGFjZT0wLHRoaXMuc2hhcmVkU2l6ZT1udWxsfXJldHVybiBmdW5jdGlvbiBv''@;'; put 'put ''V2UoZCxnLGgpe2cmJmxDZShkLnByb3RvdHlwZSxnKSxoJiZsQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5zaXplLnNldFNpemUoaCl9fSx7a2V5OiJzZXRP''@;'; put 'put ''ZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuc2l6ZS5zZXRPZmZzZXQoaCl9fSx7a2V5OiJnZXRWaWV3U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXplfX0se2tleToiaXNTaGFyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hhcmVkU2l6ZSBpbnN0''@;'; put 'put ''YW5jZW9mIGFDZX19LHtrZXk6ImlzUGxhY2VPbiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMud29ya2luZ1NwYWNlPT09aH19LHtrZXk6ImFwcGVuZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy53b3JraW5nU3BhY2U9MSxoLndvcmtpbmdTcGFjZT0yLHRoaXMuc2hhcmVkU2l6ZT1o''@;'; put 'put ''LmdldFZpZXdTaXplKCl9fSx7a2V5OiJwcmVwZW5kIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLndvcmtpbmdTcGFjZT0yLGgud29ya2luZ1NwYWNlPTEsdGhpcy5zaGFyZWRTaXplPWguZ2V0Vmlld1NpemUoKX19XSksZH0oKTtmdW5jdGlvbiBzQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVu''@;'; put 'put ''Z3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgdUNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgs''@;'; put 'put ''dil7KGZ1bmN0aW9uIGxXZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnJvb3ROb2RlPWcsdGhpcy5ub2Rlc1Bvb2w9aCx0aGlzLnNpemVTZXQ9bmV3IGFXZSx0''@;'; put 'put ''aGlzLmNoaWxkTm9kZVR5cGU9di50b1VwcGVyQ2FzZSgpLHRoaXMudmlzdWFsSW5kZXg9MCx0aGlzLmNvbGxlY3RlZE5vZGVzPVtdfXJldHVybiBmdW5jdGlvbiBzV2UoZCxnLGgpe2cmJnNDZShkLnByb3RvdHlwZSxnKSxoJiZzQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJv''@;'; put 'put ''dG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuc2l6ZVNldC5zZXRTaXplKGgpLHRoaXN9fSx7a2V5OiJzZXRPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnNpemVTZXQuc2V0T2Zmc2V0KGgp''@;'; put 'put ''LHRoaXN9fSx7a2V5OiJpc1NoYXJlZFZpZXdTZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZVNldC5pc1NoYXJlZCgpfX0se2tleToiZ2V0Tm9kZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGg8dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg/dGhpcy5jb2xsZWN0ZWRO''@;'; put 'put ''b2Rlc1toXTpudWxsfX0se2tleToiZ2V0Q3VycmVudE5vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg7cmV0dXJuIGg+MD90aGlzLmNvbGxlY3RlZE5vZGVzW2gtMV06bnVsbH19LHtrZXk6ImdldFJlbmRlcmVkQ2hpbGRDb3VudCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnJvb3ROb2RlLHY9dGhpcy5zaXplU2V0LHk9MDtpZih0aGlzLmlzU2hhcmVkVmlld1NldCgpKWZvcih2YXIgQz1oLmZpcnN0RWxlbWVudENoaWxkO0M7KXtpZihDLnRhZ05hbWU9PT10aGlzLmNoaWxkTm9kZVR5cGUpeSs9MTtlbHNlIGlmKHYuaXNQbGFj''@;'; put 'put ''ZU9uKDEpKWJyZWFrO0M9Qy5uZXh0RWxlbWVudFNpYmxpbmd9ZWxzZSB5PWguY2hpbGRFbGVtZW50Q291bnQ7cmV0dXJuIHl9fSx7a2V5OiJzdGFydCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbGxlY3RlZE5vZGVzLmxlbmd0aD0wLHRoaXMudmlzdWFsSW5kZXg9MDtmb3IodmFyIGg9dGhp''@;'; put 'put ''cy5yb290Tm9kZSx2PXRoaXMuc2l6ZVNldCx5PXRoaXMuaXNTaGFyZWRWaWV3U2V0KCksST12LmdldFZpZXdTaXplKCkubmV4dFNpemUsaj10aGlzLmdldFJlbmRlcmVkQ2hpbGRDb3VudCgpO2o8STspe3ZhciBjZT10aGlzLm5vZGVzUG9vbCgpOyF5fHx5JiZ2LmlzUGxhY2VPbigyKT9oLmFw''@;'; put 'put ''cGVuZENoaWxkKGNlKTpoLmluc2VydEJlZm9yZShjZSxoLmZpcnN0Q2hpbGQpLGorPTF9Zm9yKHZhciBfZT15JiZ2LmlzUGxhY2VPbigxKTtqPkk7KWgucmVtb3ZlQ2hpbGQoX2U/aC5maXJzdENoaWxkOmgubGFzdENoaWxkKSxqLT0xfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBoPXRoaXMucm9vdE5vZGUsdj10aGlzLnNpemVTZXQseT10aGlzLnZpc3VhbEluZGV4O3RoaXMuaXNTaGFyZWRWaWV3U2V0KCkmJnYuaXNQbGFjZU9uKDIpJiYoeSs9di5zaGFyZWRTaXplLm5leHRTaXplKTt2YXIgQz1oLmNoaWxkTm9kZXNbeV07aWYoQy50YWdOYW1lIT09dGhpcy5j''@;'; put 'put ''aGlsZE5vZGVUeXBlKXt2YXIgST10aGlzLm5vZGVzUG9vbCgpO2gucmVwbGFjZUNoaWxkKEksQyksQz1JfXRoaXMuY29sbGVjdGVkTm9kZXMucHVzaChDKSx0aGlzLnZpc3VhbEluZGV4Kz0xfX0se2tleToiZW5kIix2YWx1ZTpmdW5jdGlvbigpe319XSksZH0oKTtmdW5jdGlvbiBpZGUoZCl7''@;'; put 'put ''cmV0dXJuKGlkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHVXZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGNDZShkLGcp''@;'; put 'put ''e2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIG9kZShk''@;'; put 'put ''LGcpe3JldHVybihvZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBkV2UoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1pZGUoZyl8fCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIHBXZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZl''@;'; put 'put ''cmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIHBlZShkKXtyZXR1cm4ocGVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGZDZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gZldlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl''@;'; put 'put ''c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90''@;'; put 'put ''b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJm9kZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGhXZShkKXt2YXIgZz1mdW5jdGlvbiBnV2UoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4h''@;'; put 'put ''MTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIHksdj1wZWUoZCk7aWYoZyl7dmFyIEM9cGVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBkV2UodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gdVdl''@;'; put 'put ''KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIGNXZShkLGcsaCl7ZyYmY0NlKGQucHJvdG90eXBlLGcpLGgmJmNDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJwcmVwZW5kVmll''@;'; put 'put ''dyIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuc2l6ZVNldC5wcmVwZW5kKHkuc2l6ZVNldCkseS5zaXplU2V0LmFwcGVuZCh0aGlzLnNpemVTZXQpLHRoaXN9fSx7a2V5OiJhcHBlbmRWaWV3Iix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5zaXplU2V0LmFwcGVuZCh5LnNp''@;'; put 'put ''emVTZXQpLHkuc2l6ZVNldC5wcmVwZW5kKHRoaXMuc2l6ZVNldCksdGhpc319XSksaH0odUNlKTtmdW5jdGlvbiBoQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFs''@;'; put 'put ''dWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgQVdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gbVdlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwg''@;'; put 'put ''YSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMubm9kZVR5cGU9Zy50b1VwcGVyQ2FzZSgpfXJldHVybiBmdW5jdGlvbiB2V2UoZCxnLGgpe2cmJmhDZShkLnByb3RvdHlwZSxnKSxoJiZoQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3Jp''@;'; put 'put ''dGFibGU6ITF9KX0oZCxbe2tleToic2V0Um9vdERvY3VtZW50Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnJvb3REb2N1bWVudD1ofX0se2tleToib2J0YWluIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMubm9kZVR5cGUpfX1d''@;'; put 'put ''KSxkfSgpO2Z1bmN0aW9uIGRDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''di5rZXksdil9fXZhciB5ej1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24geVdlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMubm9kZXNQb29s''@;'; put 'put ''PSJzdHJpbmciPT10eXBlb2YgZz9uZXcgQVdlKGcpOm51bGwsdGhpcy5ub2RlVHlwZT1nLHRoaXMucm9vdE5vZGU9aCx0aGlzLnRhYmxlPW51bGwsdGhpcy5yZW5kZXJlZE5vZGVzPTB9cmV0dXJuIGZ1bmN0aW9uIHdXZShkLGcsaCl7ZyYmZENlKGQucHJvdG90eXBlLGcpLGgmJmRDZShkLGgp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5ub2Rlc1Bvb2wmJnRoaXMubm9kZXNQb29sLnNldFJvb3REb2N1bWVudChoLnJvb3REb2N1bWVudCksdGhpcy50YWJsZT1o''@;'; put 'put ''fX0se2tleToiYWRqdXN0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt9fV0pLGR9KCk7ZnVuY3Rpb24gYWRlKGQpe3JldHVybihhZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBwQ2UoZCxnKXtm''@;'; put 'put ''b3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBsZGUoZCxn''@;'; put 'put ''KXtyZXR1cm4obGRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gU1dlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09YWRlKGcpfHwiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBNV2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJl''@;'; put 'put ''bmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBnZWUoZCl7cmV0dXJuKGdlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciB4V2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIENXZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNz''@;'; put 'put ''aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90''@;'; put 'put ''eXBlIix7d3JpdGFibGU6ITF9KSxnJiZsZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBrV2UoZCl7dmFyIGc9ZnVuY3Rpb24gRVdlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7''@;'; put 'put ''aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3ZhciB5LHY9Z2VlKGQpO2lmKGcpe3ZhciBDPWdlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gU1dlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIGJXZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh2PWcuY2FsbCh0aGlzLCJUSCIpKS5vcmRlclZpZXdzPW5ldyBXZWFrTWFwLHYuc291cmNlUm93SW5k''@;'; put 'put ''ZXg9MCx2fXJldHVybiBmdW5jdGlvbiBfV2UoZCxnLGgpe2cmJnBDZShkLnByb3RvdHlwZSxnKSxoJiZwQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToib2J0YWluT3JkZXJWaWV3Iix2YWx1ZTpmdW5jdGlvbih5KXt2''@;'; put 'put ''YXIgSSxDPXRoaXM7cmV0dXJuIHRoaXMub3JkZXJWaWV3cy5oYXMoeSk/ST10aGlzLm9yZGVyVmlld3MuZ2V0KHkpOihJPW5ldyBmQ2UoeSxmdW5jdGlvbihqKXtyZXR1cm4gQy5ub2Rlc1Bvb2wub2J0YWluKEMuc291cmNlUm93SW5kZXgsail9LHRoaXMubm9kZVR5cGUpLHRoaXMub3JkZXJW''@;'; put 'put ''aWV3cy5zZXQoeSxJKSksSX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9dGhpcy50YWJsZSxDPXkucm93c1RvUmVuZGVyLEk9eS5yb3dIZWFkZXJGdW5jdGlvbnMsaj15LnJvd0hlYWRlcnNDb3VudCxjZT15LnJvd3MsX2U9eS5jZWxscyxSZT0wO1JlPEM7UmUr''@;'; put 'put ''Kyl7dmFyIE5lPXRoaXMudGFibGUucmVuZGVyZWRSb3dUb1NvdXJjZShSZSksS2U9Y2UuZ2V0UmVuZGVyZWROb2RlKFJlKTt0aGlzLnNvdXJjZVJvd0luZGV4PU5lO3ZhciBodD10aGlzLm9idGFpbk9yZGVyVmlldyhLZSksQnQ9X2Uub2J0YWluT3JkZXJWaWV3KEtlKTtodC5hcHBlbmRWaWV3''@;'; put 'put ''KEJ0KS5zZXRTaXplKGopLnNldE9mZnNldCh0aGlzLnRhYmxlLnJlbmRlcmVkQ29sdW1uVG9Tb3VyY2UoMCkpLnN0YXJ0KCk7Zm9yKHZhciAkdD0wOyR0PGo7JHQrKyl7aHQucmVuZGVyKCk7dmFyIGhuPWh0LmdldEN1cnJlbnROb2RlKCk7aG4uY2xhc3NOYW1lPSIiLGhuLnJlbW92ZUF0dHJp''@;'; put 'put ''YnV0ZSgic3R5bGUiKSxJWyR0XShOZSxobiwkdCl9aHQuZW5kKCl9fX1dKSxofSh5eik7ZnVuY3Rpb24gc2RlKGQpe3JldHVybihzZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBn''@;'; put 'put ''fTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBnQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7''@;'; put 'put ''dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiB1ZGUoZCxnKXtyZXR1cm4odWRlPU9iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gT1dlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09c2RlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAw''@;'; put 'put ''IT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBSV2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4g''@;'; put 'put ''aW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBtZWUoZCl7cmV0dXJuKG1lZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198''@;'; put 'put ''fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBQV2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIERXZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3Ig''@;'; put 'put ''YSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZ1ZGUo''@;'; put 'put ''ZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBMV2UoZCl7dmFyIGc9ZnVuY3Rpb24gQldlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5''@;'; put 'put ''KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9bWVlKGQpO2lmKGcpe3ZhciBD''@;'; put 'put ''PW1lZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gT1dlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3JldHVybiBmdW5jdGlvbiBUV2UoZCxnKXtpZighKGQgaW5zdGFu''@;'; put 'put ''Y2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyxudWxsLHYpfXJldHVybiBmdW5jdGlvbiBJV2UoZCxnLGgpe2cmJmdDZShkLnByb3RvdHlwZSxnKSxoJiZnQ2UoZCxoKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYWRqdXN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMudGFibGUsQz15LmNvbHVtbkhlYWRlcnNDb3VudCxqPXRoaXMucm9vdE5vZGUuZmlyc3RDaGlsZDtpZihDKXtmb3IodmFyIF9lPXRoaXMu''@;'; put 'put ''dGFibGUuY29sdW1uc1RvUmVuZGVyK3kucm93SGVhZGVyc0NvdW50LFJlPTAsTmU9QztSZTxOZTtSZSsrKXtmb3IoKGo9dGhpcy5yb290Tm9kZS5jaGlsZE5vZGVzW1JlXSl8fChqPXRoaXMudGFibGUucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksdGhpcy5yb290Tm9kZS5hcHBl''@;'; put 'put ''bmRDaGlsZChqKSksdGhpcy5yZW5kZXJlZE5vZGVzPWouY2hpbGROb2Rlcy5sZW5ndGg7dGhpcy5yZW5kZXJlZE5vZGVzPF9lOylqLmFwcGVuZENoaWxkKHRoaXMudGFibGUucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpLHRoaXMucmVuZGVyZWROb2Rlcys9MTtmb3IoO3RoaXMu''@;'; put 'put ''cmVuZGVyZWROb2Rlcz5fZTspai5yZW1vdmVDaGlsZChqLmxhc3RDaGlsZCksdGhpcy5yZW5kZXJlZE5vZGVzLT0xfXZhciBLZT10aGlzLnJvb3ROb2RlLmNoaWxkTm9kZXMubGVuZ3RoO2lmKEtlPkMpZm9yKHZhciBodD1DO2h0PEtlO2h0KyspdGhpcy5yb290Tm9kZS5yZW1vdmVDaGlsZCh0''@;'; put 'put ''aGlzLnJvb3ROb2RlLmxhc3RDaGlsZCl9ZWxzZSBqJiZDcChqKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9dGhpcy50YWJsZS5jb2x1bW5IZWFkZXJzQ291bnQsQz0wO0M8eTtDKz0xKWZvcih2YXIgST10aGlzLnRhYmxlLGo9SS5jb2x1bW5IZWFkZXJGdW5j''@;'; put 'put ''dGlvbnMsY2U9SS5jb2x1bW5zVG9SZW5kZXIsX2U9SS5yb3dIZWFkZXJzQ291bnQsUmU9dGhpcy5yb290Tm9kZS5jaGlsZE5vZGVzW0NdLE5lPS0xKl9lO05lPGNlO05lKz0xKXt2YXIgS2U9dGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKE5lKSxodD1SZS5jaGlsZE5vZGVzW05l''@;'; put 'put ''K19lXTtodC5jbGFzc05hbWU9IiIsaHQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLGpbQ10oS2UsaHQsQyl9fX1dKSxofSh5eik7ZnVuY3Rpb24gY2RlKGQpe3JldHVybihjZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBtQ2UoZCxnKXtmb3Io''@;'; put 'put ''dmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBmZGUoZCxnKXty''@;'; put 'put ''ZXR1cm4oZmRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24galdlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09Y2RlKGcpfHwiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBaV2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNl''@;'; put 'put ''RXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiB2ZWUoZCl7cmV0dXJuKHZlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciB2Q2UsR1dlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBOV2UoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVz''@;'; put 'put ''c2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSksZyYmZmRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gVldlKGQpe3ZhciBnPWZ1bmN0aW9uIHpXZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiEx''@;'; put 'put ''O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeSx2PXZlZShkKTtpZihnKXt2YXIgQz12ZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGpXZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gRldlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsbnVsbCx2KX1yZXR1cm4gZnVuY3Rpb24gSFdlKGQsZyxoKXtnJiZtQ2UoZC5wcm90b3R5''@;'; put 'put ''cGUsZyksaCYmbUNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImFkanVzdCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9dGhpcy50YWJsZSxqPXkuY29sdW1uc1RvUmVuZGVyK3kucm93SGVhZGVyc0NvdW50O3Ro''@;'; put 'put ''aXMucmVuZGVyZWROb2RlczxqOyl0aGlzLnJvb3ROb2RlLmFwcGVuZENoaWxkKHRoaXMudGFibGUucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbCIpKSx0aGlzLnJlbmRlcmVkTm9kZXMrPTE7Zm9yKDt0aGlzLnJlbmRlcmVkTm9kZXM+ajspdGhpcy5yb290Tm9kZS5yZW1vdmVDaGls''@;'; put 'put ''ZCh0aGlzLnJvb3ROb2RlLmxhc3RDaGlsZCksdGhpcy5yZW5kZXJlZE5vZGVzLT0xfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYWRqdXN0KCk7Zm9yKHZhciB5PXRoaXMudGFibGUsQz15LmNvbHVtbnNUb1JlbmRlcixJPXkucm93SGVhZGVyc0NvdW50LGo9MDtqPEk7''@;'; put 'put ''aisrKXt2YXIgY2U9dGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKGopLF9lPXRoaXMudGFibGUuY29sdW1uVXRpbHMuZ2V0SGVhZGVyV2lkdGgoY2UpO3RoaXMucm9vdE5vZGUuY2hpbGROb2Rlc1tqXS5zdHlsZS53aWR0aD0iIi5jb25jYXQoX2UsInB4Iil9Zm9yKHZhciBSZT0w''@;'; put 'put ''O1JlPEM7UmUrKyl7dmFyIE5lPXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShSZSksS2U9dGhpcy50YWJsZS5jb2x1bW5VdGlscy5nZXRTdHJldGNoZWRDb2x1bW5XaWR0aChOZSk7dGhpcy5yb290Tm9kZS5jaGlsZE5vZGVzW1JlK0ldLnN0eWxlLndpZHRoPSIiLmNvbmNhdChL''@;'; put 'put ''ZSwicHgiKX12YXIgaHQ9dGhpcy5yb290Tm9kZS5maXJzdENoaWxkO2h0JiZQMChodCwicm93SGVhZGVyIil9fV0pLGh9KHl6KTtmdW5jdGlvbiBoZGUoZCl7cmV0dXJuKGhkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEFDZShkLGcpe2Zvcih2''@;'; put 'put ''YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGRkZShkLGcpe3Jl''@;'; put 'put ''dHVybihkZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBYV2UoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1oZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEtXZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VF''@;'; put 'put ''cnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEFlZShkKXtyZXR1cm4oQWVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHlDZT0hMSxxV2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFFXZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHBy''@;'; put 'put ''ZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJv''@;'; put 'put ''dG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZkZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBKV2UoZCl7dmFyIGc9ZnVuY3Rpb24gJFdlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJu''@;'; put 'put ''ITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlv''@;'; put 'put ''bigpe3ZhciB5LHY9QWVlKGQpO2lmKGcpe3ZhciBDPUFlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gWFdlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbiBZV2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcywiVFIiLHYpKS5vcmRlclZpZXc9bmV3IHVDZSh2LGZ1bmN0aW9uKEMp''@;'; put 'put ''e3JldHVybiB5Lm5vZGVzUG9vbC5vYnRhaW4oQyl9LHkubm9kZVR5cGUpLHl9cmV0dXJuIGZ1bmN0aW9uIFVXZShkLGcsaCl7ZyYmQUNlKGQucHJvdG90eXBlLGcpLGgmJkFDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5''@;'; put 'put ''OiJnZXRSZW5kZXJlZE5vZGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLm9yZGVyVmlldy5nZXROb2RlKHkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMudGFibGUucm93c1RvUmVuZGVyOyF5Q2UmJnk+MWUzJiYoeUNlPSEwLGMxKEQyKHZDZXx8''@;'; put 'put ''KHZDZT1mdW5jdGlvbiBXV2UoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbJ1BlcmZvcm1hbmNlIHRpcDogSGFuZHNvbnRhYmxlIHJlbmRlcmVkIG1v''@;'; put 'put ''cmUgdGhhbiAxMDAwIHZpc2libGUgcm93cy4gQ29uc2lkZXIgbGltaXRpbmcgXG4gICAgICAgIHRoZSBudW1iZXIgb2YgcmVuZGVyZWQgcm93cyBieSBzcGVjaWZ5aW5nIHRoZSB0YWJsZSBoZWlnaHQgYW5kL29yIHR1cm5pbmcgb2ZmIHRoZSAicmVuZGVyQWxsUm93cyIgb3B0aW9uLiddLFsn''@;'; put 'put ''UGVyZm9ybWFuY2UgdGlwOiBIYW5kc29udGFibGUgcmVuZGVyZWQgbW9yZSB0aGFuIDEwMDAgdmlzaWJsZSByb3dzLiBDb25zaWRlciBsaW1pdGluZ1xceDIwXG4gICAgICAgIHRoZSBudW1iZXIgb2YgcmVuZGVyZWQgcm93cyBieSBzcGVjaWZ5aW5nIHRoZSB0YWJsZSBoZWlnaHQgYW5kL29y''@;'; put 'put ''IHR1cm5pbmcgb2ZmIHRoZSAicmVuZGVyQWxsUm93cyIgb3B0aW9uLiddKSkpKSksdGhpcy5vcmRlclZpZXcuc2V0U2l6ZSh5KS5zZXRPZmZzZXQodGhpcy50YWJsZS5yZW5kZXJlZFJvd1RvU291cmNlKDApKS5zdGFydCgpO2Zvcih2YXIgQz0wO0M8eTtDKyspdGhpcy5vcmRlclZpZXcucmVu''@;'; put 'put ''ZGVyKCk7dGhpcy5vcmRlclZpZXcuZW5kKCl9fV0pLGh9KHl6KTtmdW5jdGlvbiBwZGUoZCl7cmV0dXJuKHBkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHdDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3Yu''@;'; put 'put ''ZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGdkZShkLGcpe3JldHVybihnZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBpWWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1wZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIG9ZZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt''@;'; put 'put ''IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIHllZShkKXtyZXR1cm4oeWVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFBy''@;'; put 'put ''b3RvdHlwZU9mKGgpfSkoZCl9dmFyIGxZZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gblllKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7''@;'; put 'put ''ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmdkZShkLGcpfShoLGQpO3Zh''@;'; put 'put ''ciBnPWZ1bmN0aW9uIHJZZShkKXt2YXIgZz1mdW5jdGlvbiBhWWUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5''@;'; put 'put ''e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj15ZWUoZCk7aWYoZyl7dmFyIEM9eWVlKHRoaXMpLmNv''@;'; put 'put ''bnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpWWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtyZXR1cm4gZnVuY3Rpb24gZVllKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHY9Zy5jYWxsKHRoaXMsIlREIikpLm9yZGVyVmlld3M9bmV3IFdlYWtNYXAsdi5zb3VyY2VSb3dJbmRleD0wLHZ9cmV0dXJuIGZ1bmN0aW9uIHRZZShkLGcsaCl7ZyYmd0Nl''@;'; put 'put ''KGQucHJvdG90eXBlLGcpLGgmJndDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJvYnRhaW5PcmRlclZpZXciLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBJLEM9dGhpcztyZXR1cm4gdGhpcy5vcmRlclZpZXdzLmhhcyh5''@;'; put 'put ''KT9JPXRoaXMub3JkZXJWaWV3cy5nZXQoeSk6KEk9bmV3IGZDZSh5LGZ1bmN0aW9uKGope3JldHVybiBDLm5vZGVzUG9vbC5vYnRhaW4oQy5zb3VyY2VSb3dJbmRleCxqKX0sdGhpcy5ub2RlVHlwZSksdGhpcy5vcmRlclZpZXdzLnNldCh5LEkpKSxJfX0se2tleToicmVuZGVyIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe2Zvcih2YXIgeT10aGlzLnRhYmxlLEM9eS5yb3dzVG9SZW5kZXIsST15LmNvbHVtbnNUb1JlbmRlcixqPXkucm93cyxjZT15LnJvd0hlYWRlcnMsX2U9MDtfZTxDO19lKyspe3ZhciBSZT10aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9Tb3VyY2UoX2UpLE5lPWouZ2V0UmVuZGVy''@;'; put 'put ''ZWROb2RlKF9lKTt0aGlzLnNvdXJjZVJvd0luZGV4PVJlO3ZhciBLZT10aGlzLm9idGFpbk9yZGVyVmlldyhOZSksaHQ9Y2Uub2J0YWluT3JkZXJWaWV3KE5lKTtLZS5wcmVwZW5kVmlldyhodCkuc2V0U2l6ZShJKS5zZXRPZmZzZXQodGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNl''@;'; put 'put ''KDApKS5zdGFydCgpO2Zvcih2YXIgQnQ9MDtCdDxJO0J0Kyspe0tlLnJlbmRlcigpO3ZhciAkdD1LZS5nZXRDdXJyZW50Tm9kZSgpLGhuPXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShCdCk7WGEoJHQsImhpZGUiKXx8KCR0LmNsYXNzTmFtZT0iIiksJHQucmVtb3ZlQXR0cmli''@;'; put 'put ''dXRlKCJzdHlsZSIpLCR0LnJlbW92ZUF0dHJpYnV0ZSgiZGlyIiksdGhpcy50YWJsZS5jZWxsUmVuZGVyZXIoUmUsaG4sJHQpfUtlLmVuZCgpfX19XSksaH0oeXopO2Z1bmN0aW9uIHNZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs''@;'; put 'put ''IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGJDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBjWWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSx2PWguY2VsbFJlbmRlcmVyO3NZZSh0aGlzLGQpLHRoaXMucm9vdE5v''@;'; put 'put ''ZGU9Zyx0aGlzLnJvb3REb2N1bWVudD10aGlzLnJvb3ROb2RlLm93bmVyRG9jdW1lbnQsdGhpcy5yb3dIZWFkZXJzPW51bGwsdGhpcy5jb2x1bW5IZWFkZXJzPW51bGwsdGhpcy5jb2xHcm91cD1udWxsLHRoaXMucm93cz1udWxsLHRoaXMuY2VsbHM9bnVsbCx0aGlzLnJvd0ZpbHRlcj1udWxs''@;'; put 'put ''LHRoaXMuY29sdW1uRmlsdGVyPW51bGwsdGhpcy5yb3dVdGlscz1udWxsLHRoaXMuY29sdW1uVXRpbHM9bnVsbCx0aGlzLnJvd3NUb1JlbmRlcj0wLHRoaXMuY29sdW1uc1RvUmVuZGVyPTAsdGhpcy5yb3dIZWFkZXJGdW5jdGlvbnM9W10sdGhpcy5yb3dIZWFkZXJzQ291bnQ9MCx0aGlzLmNv''@;'; put 'put ''bHVtbkhlYWRlckZ1bmN0aW9ucz1bXSx0aGlzLmNvbHVtbkhlYWRlcnNDb3VudD0wLHRoaXMuY2VsbFJlbmRlcmVyPXZ9cmV0dXJuIGZ1bmN0aW9uIHVZZShkLGcsaCl7ZyYmYkNlKGQucHJvdG90eXBlLGcpLGgmJmJDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUi''@;'; put 'put ''LHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRBeGlzVXRpbHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5yb3dVdGlscz1oLHRoaXMuY29sdW1uVXRpbHM9dn19LHtrZXk6InNldFZpZXdwb3J0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLnJvd3NUb1JlbmRlcj1oLHRoaXMu''@;'; put 'put ''Y29sdW1uc1RvUmVuZGVyPXZ9fSx7a2V5OiJzZXRGaWx0ZXJzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMucm93RmlsdGVyPWgsdGhpcy5jb2x1bW5GaWx0ZXI9dn19LHtrZXk6InNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5yb3dIZWFkZXJG''@;'; put 'put ''dW5jdGlvbnM9aCx0aGlzLnJvd0hlYWRlcnNDb3VudD1oLmxlbmd0aCx0aGlzLmNvbHVtbkhlYWRlckZ1bmN0aW9ucz12LHRoaXMuY29sdW1uSGVhZGVyc0NvdW50PXYubGVuZ3RofX0se2tleToic2V0UmVuZGVyZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx2PWgucm93SGVhZGVycyx5PWguY29sdW1uSGVhZGVycyxDPWguY29sR3JvdXAsST1oLnJvd3Msaj1oLmNlbGxzO3Yuc2V0VGFibGUodGhpcykseS5zZXRUYWJsZSh0aGlzKSxDLnNldFRhYmxlKHRoaXMpLEkuc2V0VGFi''@;'; put 'put ''bGUodGhpcyksai5zZXRUYWJsZSh0aGlzKSx0aGlzLnJvd0hlYWRlcnM9dix0aGlzLmNvbHVtbkhlYWRlcnM9eSx0aGlzLmNvbEdyb3VwPUMsdGhpcy5yb3dzPUksdGhpcy5jZWxscz1qfX0se2tleToicmVuZGVyZWRSb3dUb1NvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''cm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoaCl9fSx7a2V5OiJyZW5kZXJlZENvbHVtblRvU291cmNlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShoKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNv''@;'; put 'put ''bEdyb3VwLmFkanVzdCgpLHRoaXMuY29sdW1uSGVhZGVycy5hZGp1c3QoKSx0aGlzLnJvd3MuYWRqdXN0KCksdGhpcy5yb3dIZWFkZXJzLmFkanVzdCgpLHRoaXMuY29sdW1uSGVhZGVycy5yZW5kZXIoKSx0aGlzLnJvd3MucmVuZGVyKCksdGhpcy5yb3dIZWFkZXJzLnJlbmRlcigpLHRoaXMu''@;'; put 'put ''Y2VsbHMucmVuZGVyKCksdGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLmNvbEdyb3VwLnJlbmRlcigpO2Zvcih2YXIgaD10aGlzLnJvd3NUb1JlbmRlcix2PXRoaXMucm93cyx5PTA7eTxoO3krKyl7dmFyIEM9di5nZXRSZW5kZXJlZE5vZGUoeSk7aWYoQy5maXJzdENo''@;'; put 'put ''aWxkKXt2YXIgST10aGlzLnJlbmRlcmVkUm93VG9Tb3VyY2UoeSksaj10aGlzLnJvd1V0aWxzLmdldEhlaWdodChJKTtDLmZpcnN0Q2hpbGQuc3R5bGUuaGVpZ2h0PWo/IiIuY29uY2F0KGotMSwicHgiKToiIn19fX1dKSxkfSgpO2Z1bmN0aW9uIGZZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9m''@;'; put 'put ''IGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIF9DZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEw''@;'; put 'put ''LCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBkWWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGg9Zy5U''@;'; put 'put ''QUJMRSx2PWcuVEhFQUQseT1nLkNPTEdST1VQLEM9Zy5UQk9EWSxJPWcucm93VXRpbHMsaj1nLmNvbHVtblV0aWxzLGNlPWcuY2VsbFJlbmRlcmVyO2ZZZSh0aGlzLGQpLHRoaXMucmVuZGVyZXI9bmV3IGNZZShoLHtjZWxsUmVuZGVyZXI6Y2V9KSx0aGlzLnJlbmRlcmVyLnNldFJlbmRlcmVy''@;'; put 'put ''cyh7cm93SGVhZGVyczpuZXcgeFdlLGNvbHVtbkhlYWRlcnM6bmV3IFBXZSh2KSxjb2xHcm91cDpuZXcgR1dlKHkpLHJvd3M6bmV3IHFXZShDKSxjZWxsczpuZXcgbFllfSksdGhpcy5yZW5kZXJlci5zZXRBeGlzVXRpbHMoSSxqKX1yZXR1cm4gZnVuY3Rpb24gaFllKGQsZyxoKXtnJiZfQ2Uo''@;'; put 'put ''ZC5wcm90b3R5cGUsZyksaCYmX0NlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldEZpbHRlcnMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0RmlsdGVycyhoLHYpLHRoaXN9fSx7''@;'; put 'put ''a2V5OiJzZXRWaWV3cG9ydFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0Vmlld3BvcnRTaXplKGgsdiksdGhpc319LHtrZXk6InNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMucmVuZGVyZXIu''@;'; put 'put ''c2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhoLHYpLHRoaXN9fSx7a2V5OiJhZGp1c3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5hZGp1c3QoKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnJlbmRlcigpfX1dKSxkfSgpO2Z1bmN0aW9u''@;'; put 'put ''IENDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBt''@;'; put 'put ''WWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIHBZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Zyx0aGlz''@;'; put 'put ''Lnd0U2V0dGluZ3M9aCx0aGlzLmhlYWRlcldpZHRocz1uZXcgTWFwfXJldHVybiBmdW5jdGlvbiBnWWUoZCxnLGgpe2cmJkNDZShkLnByb3RvdHlwZSxnKSxoJiZDQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0''@;'; put 'put ''V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uV2lkdGgiLGgpfHx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZGVmYXVsdENvbHVtbldpZHRoIil9fSx7a2V5OiJnZXRTdHJldGNoZWRDb2x1bW5XaWR0aCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3IseT10aGlzLmdldFdpZHRoKGgpO2lmKHYpe3ZhciBDPXYuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoaCx5KTtDJiYoeT1DKX1yZXR1cm4geX19LHtrZXk6Imdl''@;'; put 'put ''dEhlYWRlckhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSx5PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbaF07cmV0dXJuIHZvaWQgMCE9PXkm''@;'; put 'put ''Jih2PXY/TWF0aC5tYXgodix5KTp5KSx2fX0se2tleToiZ2V0SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmhlYWRlcldpZHRocy5nZXQodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuY29sdW1uRmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoaCkpfX0se2tl''@;'; put 'put ''eToiY2FsY3VsYXRlV2lkdGhzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMud3RTZXR0aW5ncyx2PXRoaXMuZGF0YUFjY2Vzc09iamVjdCxDPXYud3RWaWV3cG9ydCxJPXYuY2xvbmVTb3VyY2Usaj1JP0kud3RUYWJsZS5ob2xkZXI6di53dFRhYmxlLmhvbGRlcixjZT1qLm9mZnNldEhl''@;'; put 'put ''aWdodDxqLnNjcm9sbEhlaWdodD9QYygpOjAsX2U9aC5nZXRTZXR0aW5nKCJyb3dIZWFkZXJXaWR0aCIpO2lmKEMuY29sdW1uc1JlbmRlckNhbGN1bGF0b3IucmVmcmVzaFN0cmV0Y2hpbmcoQy5nZXRWaWV3cG9ydFdpZHRoKCktY2UpLG51bGwhPShfZT1oLmdldFNldHRpbmcoIm9uTW9kaWZ5''@;'; put 'put ''Um93SGVhZGVyV2lkdGgiLF9lKSkpZm9yKHZhciBSZT1oLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGgsTmU9aC5nZXRTZXR0aW5nKCJkZWZhdWx0Q29sdW1uV2lkdGgiKSxLZT0wO0tlPFJlO0tlKyspe3ZhciBodD1BcnJheS5pc0FycmF5KF9lKT9fZVtLZV06X2U7dGhpcy5oZWFk''@;'; put 'put ''ZXJXaWR0aHMuc2V0KEtlLGh0PW51bGw9PWh0P05lOmh0KX19fV0pLGR9KCk7ZnVuY3Rpb24ga0NlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2''@;'; put 'put ''LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIHlZZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gdlllKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh''@;'; put 'put ''cyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1nLHRoaXMud3RTZXR0aW5ncz1ofXJldHVybiBmdW5jdGlvbiBBWWUoZCxnLGgpe2cmJmtDZShkLnByb3RvdHlwZSxnKSxoJiZrQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7''@;'; put 'put ''d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVpZ2h0IixoKSx5PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZFJvd3NbaF07cmV0dXJuIHZvaWQg''@;'; put 'put ''MCE9PXkmJih2PXZvaWQgMD09PXY/eTpNYXRoLm1heCh2LHkpKSx2fX1dKSxkfSgpLFZTPSJ0b3AiLHhnPSJib3R0b20iLGpTPSJpbmxpbmVfc3RhcnQiLFpTPSJ0b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciIsRnc9ImJvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyIix3WWU9W1ZTLHhnLGpTLFpT''@;'; put 'put ''LEZ3XSxiWWU9bmV3IE1hcChbW1ZTLCJodF9jbG9uZV8iLmNvbmNhdChWUyldLFt4ZywiaHRfY2xvbmVfIi5jb25jYXQoeGcpXSxbalMsImh0X2Nsb25lXyIuY29uY2F0KGpTLCIgaHRfY2xvbmVfbGVmdCIpXSxbWlMsImh0X2Nsb25lXyIuY29uY2F0KFpTLCIgaHRfY2xvbmVfdG9wX2xlZnRf''@;'; put 'put ''Y29ybmVyIildLFtGdywiaHRfY2xvbmVfIi5jb25jYXQoRncsIiBodF9jbG9uZV9ib3R0b21fbGVmdF9jb3JuZXIiKV1dKTtmdW5jdGlvbiBTQ2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIG1kZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu''@;'; put 'put ''Y2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNs''@;'; put 'put ''YW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gbWRlKGQsZyl9fWZ1bmN0aW9uIG1kZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIE1DZShkLGcp''@;'; put 'put ''e2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFRnKGQs''@;'; put 'put ''ZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH12YXIgTFllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgsdix5LEMpe3ZhciBJPXRoaXM7KGZ1bmN0''@;'; put 'put ''aW9uIElZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxUZyh0aGlzLCJ3dFNldHRpbmdzIixudWxsKSxUZyh0aGlzLCJkb21CaW5kaW5ncyIsdm9pZCAwKSxUZyh0aGlz''@;'; put 'put ''LCJUQk9EWSIsbnVsbCksVGcodGhpcywiVEhFQUQiLG51bGwpLFRnKHRoaXMsIkNPTEdST1VQIixudWxsKSxUZyh0aGlzLCJoYXNUYWJsZUhlaWdodCIsITApLFRnKHRoaXMsImhhc1RhYmxlV2lkdGgiLCEwKSxUZyh0aGlzLCJpc1RhYmxlVmlzaWJsZSIsITEpLFRnKHRoaXMsInRhYmxlT2Zm''@;'; put 'put ''c2V0IiwwKSxUZyh0aGlzLCJob2xkZXJPZmZzZXQiLDApLHRoaXMuZG9tQmluZGluZ3M9dix0aGlzLmlzTWFzdGVyPSJtYXN0ZXIiPT09Qyx0aGlzLm5hbWU9Qyx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Zyx0aGlzLmZhY2FkZUdldHRlcj1oLHRoaXMud3RTZXR0aW5ncz15LHRoaXMuaW5zdGFu''@;'; put 'put ''Y2U9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LndvdCx0aGlzLndvdD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud290LHRoaXMuVEFCTEU9di5yb290VGFibGUsUzNlKHRoaXMuVEFCTEUpLHRoaXMuc3ByZWFkZXI9dGhpcy5jcmVhdGVTcHJlYWRlcih0aGlzLlRBQkxFKSx0aGlzLmhpZGVyPXRoaXMu''@;'; put 'put ''Y3JlYXRlSGlkZXIodGhpcy5zcHJlYWRlciksdGhpcy5ob2xkZXI9dGhpcy5jcmVhdGVIb2xkZXIodGhpcy5oaWRlciksdGhpcy53dFJvb3RFbGVtZW50PXRoaXMuaG9sZGVyLnBhcmVudE5vZGUsdGhpcy5pc01hc3RlciYmdGhpcy5hbGlnbk92ZXJsYXlzV2l0aFRyaW1taW5nQ29udGFpbmVy''@;'; put 'put ''KCksdGhpcy5maXhUYWJsZURvbVRyZWUoKSx0aGlzLnJvd0ZpbHRlcj1udWxsLHRoaXMuY29sdW1uRmlsdGVyPW51bGwsdGhpcy5jb3JyZWN0SGVhZGVyV2lkdGg9ITE7dmFyIGo9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJlKCJyb3dIZWFkZXJXaWR0aCIpO3RoaXMud3RTZXR0aW5n''@;'; put 'put ''cy51cGRhdGUoInJvd0hlYWRlcldpZHRoIixmdW5jdGlvbigpe3JldHVybiBJLl9tb2RpZnlSb3dIZWFkZXJXaWR0aChqKX0pLHRoaXMucm93VXRpbHM9bmV3IHlZZSh0aGlzLmRhdGFBY2Nlc3NPYmplY3QsdGhpcy53dFNldHRpbmdzKSx0aGlzLmNvbHVtblV0aWxzPW5ldyBtWWUodGhpcy5k''@;'; put 'put ''YXRhQWNjZXNzT2JqZWN0LHRoaXMud3RTZXR0aW5ncyksdGhpcy50YWJsZVJlbmRlcmVyPW5ldyBkWWUoe1RBQkxFOnRoaXMuVEFCTEUsVEhFQUQ6dGhpcy5USEVBRCxDT0xHUk9VUDp0aGlzLkNPTEdST1VQLFRCT0RZOnRoaXMuVEJPRFkscm93VXRpbHM6dGhpcy5yb3dVdGlscyxjb2x1bW5V''@;'; put 'put ''dGlsczp0aGlzLmNvbHVtblV0aWxzLGNlbGxSZW5kZXJlcjp0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZ1B1cmUoImNlbGxSZW5kZXJlciIpfSl9cmV0dXJuIGZ1bmN0aW9uIERZZShkLGcsaCl7ZyYmTUNlKGQucHJvdG90eXBlLGcpLGgmJk1DZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJpcyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMubmFtZT09PWh9fSx7a2V5OiJmaXhUYWJsZURvbVRyZWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQ7dGhp''@;'; put 'put ''cy5UQk9EWT10aGlzLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoInRib2R5IiksdGhpcy5UQk9EWXx8KHRoaXMuVEJPRFk9aC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLHRoaXMuVEFCTEUuYXBwZW5kQ2hpbGQodGhpcy5UQk9EWSkpLHRoaXMuVEhFQUQ9dGhpcy5UQUJMRS5xdWVyeVNlbGVjdG9yKCJ0''@;'; put 'put ''aGVhZCIpLHRoaXMuVEhFQUR8fCh0aGlzLlRIRUFEPWguY3JlYXRlRWxlbWVudCgidGhlYWQiKSx0aGlzLlRBQkxFLmluc2VydEJlZm9yZSh0aGlzLlRIRUFELHRoaXMuVEJPRFkpKSx0aGlzLkNPTEdST1VQPXRoaXMuVEFCTEUucXVlcnlTZWxlY3RvcigiY29sZ3JvdXAiKSx0aGlzLkNPTEdS''@;'; put 'put ''T1VQfHwodGhpcy5DT0xHUk9VUD1oLmNyZWF0ZUVsZW1lbnQoImNvbGdyb3VwIiksdGhpcy5UQUJMRS5pbnNlcnRCZWZvcmUodGhpcy5DT0xHUk9VUCx0aGlzLlRIRUFEKSl9fSx7a2V5OiJjcmVhdGVTcHJlYWRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHksdj1oLnBhcmVudE5vZGU7cmV0''@;'; put 'put ''dXJuKCF2fHx2Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREV8fCFYYSh2LCJ3dEhvbGRlciIpKSYmKCh5PXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5jbGFzc05hbWU9Ind0U3ByZWFkZXIiLHYmJnYuaW5zZXJ0QmVmb3JlKHksaCkseS5h''@;'; put 'put ''cHBlbmRDaGlsZChoKSkseS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHl9fSx7a2V5OiJjcmVhdGVIaWRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHksdj1oLnBhcmVudE5vZGU7cmV0dXJuKCF2fHx2Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREV8fCFYYSh2LCJ3dEhvbGRlciIp''@;'; put 'put ''KSYmKCh5PXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5jbGFzc05hbWU9Ind0SGlkZXIiLHYmJnYuaW5zZXJ0QmVmb3JlKHksaCkseS5hcHBlbmRDaGlsZChoKSkseX19LHtrZXk6ImNyZWF0ZUhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFy''@;'; put 'put ''IHksdj1oLnBhcmVudE5vZGU7cmV0dXJuKCF2fHx2Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREV8fCFYYSh2LCJ3dEhvbGRlciIpKSYmKCh5PXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHku''@;'; put 'put ''Y2xhc3NOYW1lPSJ3dEhvbGRlciIsdiYmdi5pbnNlcnRCZWZvcmUoeSxoKSx0aGlzLmlzTWFzdGVyJiYoeS5wYXJlbnROb2RlLmNsYXNzTmFtZSs9Imh0X21hc3RlciBoYW5kc29udGFibGUiLHkucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy53dFNldHRpbmdzLmdldFNldHRp''@;'; put 'put ''bmdQdXJlKCJydGxNb2RlIik/InJ0bCI6Imx0ciIpKSx5LmFwcGVuZENoaWxkKGgpKSx5fX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHY9dGhpcy53dFNldHRpbmdzLHk9''@;'; put 'put ''dGhpcy5kYXRhQWNjZXNzT2JqZWN0LEM9eS53dE92ZXJsYXlzLEk9eS53dFZpZXdwb3J0LGo9di5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKSxjZT12LmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLF9lPXYuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLFJlPV9lLmxlbmd0aCxOZT12LmdldFNl''@;'; put 'put ''dHRpbmcoImNvbHVtbkhlYWRlcnMiKSxLZT1OZS5sZW5ndGgsaHQ9ITEsQnQ9aDtpZih0aGlzLmlzTWFzdGVyJiYodGhpcy5ob2xkZXJPZmZzZXQ9enUodGhpcy5ob2xkZXIpLEJ0PUkuY3JlYXRlUmVuZGVyQ2FsY3VsYXRvcnMoQnQpLFJlJiYhdi5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNT''@;'; put 'put ''dGFydCIpKSl7dmFyICR0PUMuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCksaG49dGhpcy5jb3JyZWN0SGVhZGVyV2lkdGg7dGhpcy5jb3JyZWN0SGVhZGVyV2lkdGg9MCE9PSR0LGhuIT09dGhpcy5jb3JyZWN0SGVhZGVyV2lkdGgmJihCdD0hMSl9aWYodGhpcy5pc01h''@;'; put 'put ''c3RlciYmKGh0PUMudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpKSxCdCl0aGlzLmlzTWFzdGVyJiZJLmNyZWF0ZVZpc2libGVDYWxjdWxhdG9ycygpLEMmJkMucmVmcmVzaCghMCk7ZWxzZXt0aGlzLnRhYmxlT2Zmc2V0PXRoaXMuaXNNYXN0ZXI/enUodGhpcy5UQUJMRSk6dGhpcy5kYXRhQWNj''@;'; put 'put ''ZXNzT2JqZWN0LnBhcmVudFRhYmxlT2Zmc2V0O3ZhciBEbj1qPjA/dGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCk6MCxpcj1jZT4wP3RoaXMuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpOjA7dGhpcy5yb3dGaWx0ZXI9bmV3IGVXZShEbixqLEtlKSx0aGlzLmNvbHVtbkZpbHRlcj1uZXcgWEdl''@;'; put 'put ''KGlyLGNlLFJlKTt2YXIgQXIscHI9ITA7aWYodGhpcy5pc01hc3Rlcil7dGhpcy5hbGlnbk92ZXJsYXlzV2l0aFRyaW1taW5nQ29udGFpbmVyKCk7dmFyIEVyPXt9O3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJiZWZvcmVEcmF3IiwhMCxFcikscHI9ITAhPT1Fci5za2lwUmVuZGVyfWlm''@;'; put 'put ''KHByKWlmKHRoaXMudGFibGVSZW5kZXJlci5zZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzKF9lLE5lKSwodGhpcy5pcyh4Zyl8fHRoaXMuaXMoRncpKSYmdGhpcy50YWJsZVJlbmRlcmVyLnNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMoX2UsW10pLHRoaXMucmVzZXRPdmVyc2l6ZWRSb3dzKCks''@;'; put 'put ''dGhpcy50YWJsZVJlbmRlcmVyLnNldFZpZXdwb3J0U2l6ZSh0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCksdGhpcy5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpKS5zZXRGaWx0ZXJzKHRoaXMucm93RmlsdGVyLHRoaXMuY29sdW1uRmlsdGVyKS5yZW5kZXIoKSx0aGlzLmlzTWFzdGVyJiYo''@;'; put 'put ''QXI9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LndvcmtzcGFjZVdpZHRoLHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LmNvbnRhaW5lcldpZHRoPW51bGwsdGhpcy5tYXJrT3ZlcnNpemVkQ29sdW1uSGVhZGVycygpKSx0aGlzLmFkanVzdENvbHVtbkhlYWRlckhlaWdodHMoKSwodGhp''@;'; put 'put ''cy5pc01hc3Rlcnx8dGhpcy5pcyh4ZykpJiZ0aGlzLm1hcmtPdmVyc2l6ZWRSb3dzKCksdGhpcy5pc01hc3Rlcil7dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQuY3JlYXRlVmlzaWJsZUNhbGN1bGF0b3JzKCksdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0T3ZlcmxheXMucmVmcmVz''@;'; put 'put ''aCghMSksdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0T3ZlcmxheXMuYXBwbHlUb0RPTSgpO3ZhciBZcj13Mih0aGlzLmhpZGVyKSxfaT13Mih0aGlzLlRBQkxFKTswIT09WXImJl9pIT09WXImJih0aGlzLmNvbHVtblV0aWxzLmNhbGN1bGF0ZVdpZHRocygpLHRoaXMudGFibGVSZW5kZXJlci5y''@;'; put 'put ''ZW5kZXJlci5jb2xHcm91cC5yZW5kZXIoKSksQXIhPT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VXaWR0aCgpJiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQuY29udGFpbmVyV2lkdGg9bnVsbCx0aGlzLmNvbHVtblV0aWxzLmNhbGN1bGF0''@;'; put 'put ''ZVdpZHRocygpLHRoaXMudGFibGVSZW5kZXJlci5yZW5kZXJlci5jb2xHcm91cC5yZW5kZXIoKSksdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uRHJhdyIsITApfWVsc2UgdGhpcy5pcyh4ZykmJnRoaXMuZGF0YUFjY2Vzc09iamVjdC5jbG9uZVNvdXJjZS53dE92ZXJsYXlzLmFkanVz''@;'; put 'put ''dEVsZW1lbnRzU2l6ZSgpfWlmKHRoaXMuaXNNYXN0ZXIpe3ZhciBLaT1DLnRvcE92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCk7Qy5ib3R0b21PdmVybGF5LmNsb25lJiYoS2k9Qy5ib3R0b21PdmVybGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpfHxLaSksS2k9Qy5pbmxpbmVTdGFydE92ZXJs''@;'; put 'put ''YXkucmVzZXRGaXhlZFBvc2l0aW9uKCl8fEtpLEMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5JiZDLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZXNldEZpeGVkUG9zaXRpb24oKSxDLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmQy5ib3R0b21JbmxpbmVTdGFydENv''@;'; put 'put ''cm5lck92ZXJsYXkuY2xvbmUmJkMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpLEtpJiYoQy5yZWZyZXNoQWxsKCksQy5hZGp1c3RFbGVtZW50c1NpemUoKSl9cmV0dXJuIHRoaXMucmVmcmVzaFNlbGVjdGlvbnMoQnQpLGh0JiZDLnN5bmNTY3Jv''@;'; put 'put ''bGxXaXRoTWFzdGVyKCksdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmRyYXduPSEwLHRoaXN9fSx7a2V5OiJtYXJrSWZPdmVyc2l6ZWRDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe2Zvcih2YXIgSSxqLGNlLHY9dGhpcy5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShoKSx5PXRo''@;'; put 'put ''aXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoLEM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSxfZT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVySGVpZ2h0Iil8fFtdO3k7KUk9dGhpcy5n''@;'; put 'put ''ZXRDb2x1bW5IZWFkZXJIZWlnaHQoeS09MSksKGo9dGhpcy5nZXRDb2x1bW5IZWFkZXIodix5KSkmJihjZT1MdihqKSwoIUkmJkM8Y2V8fEk8Y2UpJiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1t5XT1jZSksQXJyYXkuaXNBcnJheShf''@;'; put 'put ''ZSk/bnVsbCE9X2VbeV0mJih0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW3ldPV9lW3ldKTppc05hTihfZSl8fCh0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW3ldPV9lKSx0aGlzLmRh''@;'; put 'put ''dGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW3ldPChfZVt5XXx8X2UpJiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1t5XT1fZVt5XXx8X2UpKX19LHtrZXk6ImFkanVzdENvbHVtbkhlYWRlckhl''@;'; put 'put ''aWdodHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB2PXRoaXMuVEhFQUQuY2hpbGROb2Rlcyx5PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnMsST0wLGo9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5s''@;'; put 'put ''ZW5ndGg7STxqO0krKylpZih5W0ldKXtpZighdltJXXx8MD09PXZbSV0uY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuO3ZbSV0uY2hpbGROb2Rlc1swXS5zdHlsZS5oZWlnaHQ9IiIuY29uY2F0KHlbSV0sInB4Iil9fX0se2tleToicmVzZXRPdmVyc2l6ZWRSb3dzIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBoPXRoaXMud3RTZXR0aW5ncyx2PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0O2lmKCh0aGlzLmlzTWFzdGVyfHx0aGlzLmlzKHhnKSkmJiFoLmdldFNldHRpbmcoImV4dGVybmFsUm93Q2FsY3VsYXRvciIpKWZvcih2YXIgeT10aGlzLmdldFJlbmRlcmVkUm93c0NvdW50''@;'; put 'put ''KCksQz0wO0M8eTtDKyspe3ZhciBJPXRoaXMucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoQyk7di5vdmVyc2l6ZWRSb3dzJiZ2Lm92ZXJzaXplZFJvd3NbSV0mJih2Lm92ZXJzaXplZFJvd3NbSV09dm9pZCAwKX19fSx7a2V5OiJyZW1vdmVDbGFzc0Zyb21DZWxscyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oaCl7Zm9yKHZhciB2PXRoaXMuVEFCTEUucXVlcnlTZWxlY3RvckFsbCgiLiIuY29uY2F0KGgpKSx5PTAsQz12Lmxlbmd0aDt5PEM7eSsrKXVsKHZbeV0saCl9fSx7a2V5OiJyZWZyZXNoU2VsZWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy53dFNldHRpbmdzLHk9dGhp''@;'; put 'put ''cy5kYXRhQWNjZXNzT2JqZWN0LnNlbGVjdGlvbnM7aWYoeSl7dmFyIEM9QXJyYXkuZnJvbSh5KSxJPUMubGVuZ3RoO2lmKGgpe2Zvcih2YXIgaj1bXSxjZT0wO2NlPEk7Y2UrKyl7Zm9yKHZhciBfZT1DW2NlXS5zZXR0aW5ncyxSZT1fZS5oaWdobGlnaHRIZWFkZXJDbGFzc05hbWUsTmU9X2Uu''@;'; put 'put ''aGlnaGxpZ2h0Um93Q2xhc3NOYW1lLEtlPV9lLmhpZ2hsaWdodENvbHVtbkNsYXNzTmFtZSxodD1DW2NlXS5jbGFzc05hbWVzLEJ0PWh0Lmxlbmd0aCwkdD0wOyR0PEJ0OyR0Kyspai5pbmNsdWRlcyhodFskdF0pfHxqLnB1c2goaHRbJHRdKTtSZSYmIWouaW5jbHVkZXMoUmUpJiZqLnB1c2go''@;'; put 'put ''UmUpLE5lJiYhai5pbmNsdWRlcyhOZSkmJmoucHVzaChOZSksS2UmJiFqLmluY2x1ZGVzKEtlKSYmai5wdXNoKEtlKX12YXIgaG49di5nZXRTZXR0aW5nKCJvbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIik7aWYoQXJyYXkuaXNBcnJheShobikpZm9yKHZhciBEbj0wO0RuPGhuLmxlbmd0''@;'; put 'put ''aDtEbisrKWoucHVzaChobltEbl0pO2Zvcih2YXIgaXI9ai5sZW5ndGgscHI9MDtwcjxpcjtwcisrKXRoaXMucmVtb3ZlQ2xhc3NGcm9tQ2VsbHMoaltwcl0pfWZvcih2YXIgRXI9MDtFcjxJO0VyKyspQ1tFcl0uZHJhdyh0aGlzLmZhY2FkZUdldHRlcigpLGgpfX19LHtrZXk6ImdldENlbGwi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciBqLHY9aC5yb3cseT1oLmNvbCxDPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbk1vZGlmeUdldENlbGxDb29yZHMiLHYseSk7aWYoQyYmQXJyYXkuaXNBcnJheShDKSl7dmFyIEk9ZnVuY3Rpb24gTVllKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFRZ''@;'; put 'put ''ZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24geFllKGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10s''@;'; put 'put ''eT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxs''@;'; put 'put ''eXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8U0NlKGQsZyl8fGZ1bmN0aW9uIEVZZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFy''@;'; put 'put ''cmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KEMsMik7dj1JWzBdLHk9SVsxXX1pZih0aGlzLmlzUm93QmVmb3JlUmVuZGVyZWRSb3dzKHYpKXJldHVybi0xO2lmKHRoaXMuaXNSb3dBZnRlclJlbmRlcmVkUm93cyh2KSlyZXR1cm4tMjtp''@;'; put 'put ''Zih0aGlzLmlzQ29sdW1uQmVmb3JlUmVuZGVyZWRDb2x1bW5zKHkpKXJldHVybi0zO2lmKHRoaXMuaXNDb2x1bW5BZnRlclJlbmRlcmVkQ29sdW1ucyh5KSlyZXR1cm4tNDtpZighKGo9djwwP3RoaXMuVEhFQUQuY2hpbGROb2Rlc1t0aGlzLnJvd0ZpbHRlci5zb3VyY2VSb3dUb1Zpc2libGVD''@;'; put 'put ''b2xIZWFkZWRSb3codildOnRoaXMuVEJPRFkuY2hpbGROb2Rlc1t0aGlzLnJvd0ZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKHYpXSkmJnY+PTApdGhyb3cgbmV3IEVycm9yKCJUUiB3YXMgZXhwZWN0ZWQgdG8gYmUgcmVuZGVyZWQgYnV0IGlzIG5vdCIpO3ZhciBjZT1qLmNoaWxkTm9kZXNbdGhp''@;'; put 'put ''cy5jb2x1bW5GaWx0ZXIuc291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uKHkpXTtpZighY2UmJnk+PTApdGhyb3cgbmV3IEVycm9yKCJURCBvciBUSCB3YXMgZXhwZWN0ZWQgdG8gYmUgcmVuZGVyZWQgYnV0IGlzIG5vdCIpO3JldHVybiBjZX19LHtrZXk6ImdldENvbHVtbkhl''@;'; put 'put ''YWRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAseT10aGlzLlRIRUFELmNoaWxkTm9kZXNbdl07cmV0dXJuIG51bGw9PXk/dm9pZCAwOnkuY2hpbGROb2Rlc1t0aGlzLmNvbHVtbkZpbHRl''@;'; put 'put ''ci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4oaCldfX0se2tleToiZ2V0Q29sdW1uSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9W10seT10aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4oaCk7cmV0dXJuIHRo''@;'; put 'put ''aXMuVEhFQUQuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKEMpe3ZhciBJPUMuY2hpbGROb2Rlc1t5XTtJJiZ2LnB1c2goSSl9KSx2fX0se2tleToiZ2V0Um93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sx''@;'; put 'put ''XT9hcmd1bWVudHNbMV06MDtpZigwIT09dGhpcy5jb2x1bW5GaWx0ZXIuc291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uKDApKXt2YXIgeT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aDtpZighKHY+PXkpKXt2YXIgQz10aGlzLlRCT0RZ''@;'; put 'put ''LmNoaWxkTm9kZXNbdGhpcy5yb3dGaWx0ZXIuc291cmNlVG9SZW5kZXJlZChoKV07cmV0dXJuIG51bGw9PUM/dm9pZCAwOkMuY2hpbGROb2Rlc1t2XX19fX0se2tleToiZ2V0Um93SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoMD09PXRoaXMuY29sdW1uRmlsdGVyLnNvdXJjZUNvbHVt''@;'; put 'put ''blRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbigwKSlyZXR1cm5bXTtmb3IodmFyIHY9W10seT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aCxDPTA7Qzx5O0MrKyl7dmFyIEk9dGhpcy5UQk9EWS5jaGlsZE5vZGVzW3RoaXMucm93RmlsdGVyLnNvdXJjZVRv''@;'; put 'put ''UmVuZGVyZWQoaCldLGo9bnVsbD09ST92b2lkIDA6SS5jaGlsZE5vZGVzW0NdO2omJnYucHVzaChqKX1yZXR1cm4gdn19LHtrZXk6ImdldENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aDtpZigiVEQiIT09di5ub2RlTmFtZSYmIlRIIiE9PXYubm9kZU5hbWUmJih2PUR2KHYsWyJU''@;'; put 'put ''RCIsIlRIIl0pKSxudWxsPT09dilyZXR1cm4gbnVsbDt2YXIgeT12LnBhcmVudE5vZGUsQz15LnBhcmVudE5vZGUsST12X2UoeSksaj12LmNlbGxJbmRleDtyZXR1cm4gTHcoWlMsdix0aGlzLnd0Um9vdEVsZW1lbnQpfHxMdyhWUyx2LHRoaXMud3RSb290RWxlbWVudCk/IlRIRUFEIj09PUMu''@;'; put 'put ''bm9kZU5hbWUmJihJLT1DLmNoaWxkTm9kZXMubGVuZ3RoKTpJPUx3KEZ3LHYsdGhpcy53dFJvb3RFbGVtZW50KXx8THcoeGcsdix0aGlzLnd0Um9vdEVsZW1lbnQpP3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKS1DLmNoaWxkTm9kZXMubGVuZ3RoK0k6Qz09PXRoaXMu''@;'; put 'put ''VEhFQUQ/dGhpcy5yb3dGaWx0ZXIudmlzaWJsZUNvbEhlYWRlZFJvd1RvU291cmNlUm93KEkpOnRoaXMucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoSSksaj1MdyhaUyx2LHRoaXMud3RSb290RWxlbWVudCl8fEx3KGpTLHYsdGhpcy53dFJvb3RFbGVtZW50KXx8THcoRncsdix0aGlzLnd0''@;'; put 'put ''Um9vdEVsZW1lbnQpP3RoaXMuY29sdW1uRmlsdGVyLm9mZnNldHRlZFRIKGopOnRoaXMuY29sdW1uRmlsdGVyLnZpc2libGVSb3dIZWFkZWRDb2x1bW5Ub1NvdXJjZUNvbHVtbihqKSx0aGlzLndvdC5jcmVhdGVDZWxsQ29vcmRzKEksail9fSx7a2V5OiJtYXJrT3ZlcnNpemVkUm93cyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtpZighdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImV4dGVybmFsUm93Q2FsY3VsYXRvciIpKXt2YXIgQyxJLGosY2UsX2UsaD10aGlzLlRCT0RZLmNoaWxkTm9kZXMubGVuZ3RoO2lmKGgqdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWln''@;'; put 'put ''aHQiKSE9THYodGhpcy5UQk9EWSktMXx8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpKWZvcig7aDspaj10aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKGgtPTEpLEM9dGhpcy5nZXRSb3dIZWlnaHQoaiksST0oX2U9KGNlPXRoaXMuZ2V0VHJGb3JS''@;'; put 'put ''b3coaikpLnF1ZXJ5U2VsZWN0b3IoInRoIikpP0x2KF9lKTpMdihjZSktMSwoIUMmJnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0Iik8SXx8QzxJKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZFJvd3Nbal09SSs9MSl9fX0s''@;'; put 'put ''e2tleToiZ2V0VHJGb3JSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLlRCT0RZLmNoaWxkTm9kZXNbdGhpcy5yb3dGaWx0ZXIuc291cmNlVG9SZW5kZXJlZChoKV19fSx7a2V5OiJpc0NvbHVtbkhlYWRlclJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihoKXtpZihoPj0wKXJldHVy''@;'; put 'put ''biExO3ZhciB5PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoO3JldHVybiBNYXRoLmFicyhoKTw9eX19LHtrZXk6ImlzUm93SGVhZGVyUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKGg+PTApcmV0dXJuITE7dmFyIHk9dGhpcy53dFNldHRpbmdz''@;'; put 'put ''LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg7cmV0dXJuIE1hdGguYWJzKGgpPD15fX0se2tleToiaXNSb3dCZWZvcmVSZW5kZXJlZFJvd3MiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpO3JldHVybiBoPDAmJnY8PTA/IXRoaXMu''@;'; put 'put ''aXNSb3dIZWFkZXJSZW5kZXJlZChoKTpoPHZ9fSx7a2V5OiJpc1Jvd0FmdGVyUmVuZGVyZWRSb3dzIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaD50aGlzLmdldExhc3RSZW5kZXJlZFJvdygpfX0se2tleToiaXNDb2x1bW5CZWZvcmVSZW5kZXJlZENvbHVtbnMiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3ZhciB2PXRoaXMuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpO3JldHVybiBoPDAmJnY8PTA/IXRoaXMuaXNDb2x1bW5IZWFkZXJSZW5kZXJlZChoKTpoPHZ9fSx7a2V5OiJpc0NvbHVtbkFmdGVyUmVuZGVyZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5jb2x1''@;'; put 'put ''bW5GaWx0ZXImJmg+dGhpcy5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX19LHtrZXk6ImlzQ29sdW1uQWZ0ZXJWaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuY29sdW1uRmlsdGVyJiZoPnRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKX19LHtrZXk6ImlzUm93QWZ0ZXJW''@;'; put 'put ''aWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucm93RmlsdGVyJiZoPnRoaXMuZ2V0TGFzdFZpc2libGVSb3coKX19LHtrZXk6ImlzQ29sdW1uQmVmb3JlVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmNvbHVtbkZpbHRlciYmdGhpcy5jb2x1bW5G''@;'; put 'put ''aWx0ZXIuc291cmNlVG9SZW5kZXJlZChoKTwwJiZoPj0wfX0se2tleToiaXNMYXN0Um93RnVsbHlWaXNpYmxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExhc3RWaXNpYmxlUm93KCk9PT10aGlzLmdldExhc3RSZW5kZXJlZFJvdygpfX0se2tleToiaXNMYXN0Q29sdW1uRnVs''@;'; put 'put ''bHlWaXNpYmxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExhc3RWaXNpYmxlQ29sdW1uKCk9PT10aGlzLmdldExhc3RSZW5kZXJlZENvbHVtbigpfX0se2tleToiYWxsUm93c0luVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRT''@;'; put 'put ''ZXR0aW5nKCJ0b3RhbFJvd3MiKT09PXRoaXMuZ2V0VmlzaWJsZVJvd3NDb3VudCgpfX0se2tleToiYWxsQ29sdW1uc0luVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKT09PXRoaXMuZ2V0VmlzaWJsZUNv''@;'; put 'put ''bHVtbnNDb3VudCgpfX0se2tleToiZ2V0Um93SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5yb3dVdGlscy5nZXRIZWlnaHQoaCl9fSx7a2V5OiJnZXRDb2x1bW5IZWFkZXJIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmNvbHVtblV0aWxzLmdldEhl''@;'; put 'put ''YWRlckhlaWdodChoKX19LHtrZXk6ImdldENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5jb2x1bW5VdGlscy5nZXRXaWR0aChoKX19LHtrZXk6ImdldFN0cmV0Y2hlZENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5jb2x1bW5VdGls''@;'; put 'put ''cy5nZXRTdHJldGNoZWRDb2x1bW5XaWR0aChoKX19LHtrZXk6Imhhc0RlZmluZWRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc1RhYmxlSGVpZ2h0JiZ0aGlzLmhhc1RhYmxlV2lkdGh9fSx7a2V5OiJnZXRXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdzIodGhp''@;'; put 'put ''cy5UQUJMRSl9fSx7a2V5OiJnZXRIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEIxKHRoaXMuVEFCTEUpfX0se2tleToiZ2V0VG90YWxXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD13Mih0aGlzLmhpZGVyKTtyZXR1cm4gMCE9PWg/aDp0aGlzLmdldFdpZHRoKCl9fSx7a2V5''@;'; put 'put ''OiJnZXRUb3RhbEhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1CMSh0aGlzLmhpZGVyKTtyZXR1cm4gMCE9PWg/aDp0aGlzLmdldEhlaWdodCgpfX0se2tleToiaXNWaXNpYmxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNTyh0aGlzLlRBQkxFKX19LHtrZXk6Il9tb2RpZnlSb3dI''@;'; put 'put ''ZWFkZXJXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9VTIoaCk/aCgpOm51bGw7cmV0dXJuIEFycmF5LmlzQXJyYXkodik/KHY9ZnVuY3Rpb24gX1llKGQpe3JldHVybiBmdW5jdGlvbiBTWWUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gbWRlKGQpfShkKXx8ZnVuY3Rpb24g''@;'; put 'put ''a1llKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fFNDZShkKXx8ZnVuY3Rpb24gQ1llKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBh''@;'; put 'put ''dHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KHYpKVt2Lmxlbmd0aC0xXT10aGlzLl9jb3JyZWN0Um93SGVh''@;'; put 'put ''ZGVyV2lkdGgodlt2Lmxlbmd0aC0xXSk6dj10aGlzLl9jb3JyZWN0Um93SGVhZGVyV2lkdGgodiksdn19LHtrZXk6Il9jb3JyZWN0Um93SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWg7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBoJiYodj10aGlzLnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZGVmYXVsdENvbHVtbldpZHRoIikpLHRoaXMuY29ycmVjdEhlYWRlcldpZHRoJiYodis9MSksdn19XSksZH0oKTtjb25zdCBPTz1MWWU7dmFyIEVDZT17Z2V0Rmlyc3RSZW5kZXJlZFJvdzpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmco''@;'; put 'put ''InRvdGFsUm93cyIpPy0xOjB9LGdldEZpcnN0VmlzaWJsZVJvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKX0sZ2V0TGFzdFJlbmRlcmVkUm93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKS0xfSxnZXRMYXN0VmlzaWJs''@;'; put 'put ''ZVJvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExhc3RSZW5kZXJlZFJvdygpfSxnZXRSZW5kZXJlZFJvd3NDb3VudDpmdW5jdGlvbigpe3ZhciBnPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtyZXR1cm4gTWF0aC5taW4odGhpcy53dFNldHRpbmdzLmdldFNl''@;'; put 'put ''dHRpbmcoImZpeGVkUm93c1RvcCIpLGcpfSxnZXRWaXNpYmxlUm93c0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKX19O01nKEVDZSwiTUlYSU5fTkFNRSIsInN0aWNreVJvd3NUb3AiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3Qg''@;'; put 'put ''eENlPUVDZTt2YXIgVENlPXtnZXRGaXJzdFJlbmRlcmVkQ29sdW1uOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Q29sdW1uUmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1nPy0xOmd9LGdldEZpcnN0VmlzaWJsZUNvbHVtbjpmdW5jdGlvbigpe3ZhciBnPXRoaXMu''@;'; put 'put ''ZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblZpc2libGU7cmV0dXJuIG51bGw9PT1nPy0xOmd9LGdldExhc3RSZW5kZXJlZENvbHVtbjpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRDb2x1bW5SZW5kZXJlZDtyZXR1cm4gbnVsbD09PWc/LTE6Z30sZ2V0TGFz''@;'; put 'put ''dFZpc2libGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5kQ29sdW1uVmlzaWJsZTtyZXR1cm4gbnVsbD09PWc/LTE6Z30sZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Q29s''@;'; put 'put ''dW1uc1JlbmRlcmVkfSxnZXRWaXNpYmxlQ29sdW1uc0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb3VudENvbHVtbnNWaXNpYmxlfX07TWcoVENlLCJNSVhJTl9OQU1FIiwiY2FsY3VsYXRlZENvbHVtbnMiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiEx''@;'; put 'put ''fSk7Y29uc3QgdmRlPVRDZTtmdW5jdGlvbiBBZGUoZCl7cmV0dXJuKEFkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIElDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFi''@;'; put 'put ''bGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHlkZShkLGcpe3JldHVybih5ZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBOWWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1BZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFZZZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4g''@;'; put 'put ''Y2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIHdlZShkKXtyZXR1cm4od2VlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFy''@;'; put 'put ''IHdkZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gRlllKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNy''@;'; put 'put ''ZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnlkZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEhZZShkKXt2''@;'; put 'put ''YXIgZz1mdW5jdGlvbiBqWWUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3Rv''@;'; put 'put ''dHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj13ZWUoZCk7aWYoZyl7dmFyIEM9d2VlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5j''@;'; put 'put ''b25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBOWWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7cmV0dXJuIGZ1bmN0aW9uIFBZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLHYseSxDLEksVlMpfXJldHVybiBmdW5jdGlvbiBCWWUoZCxnLGgpe3JldHVybiBnJiZJQ2UoZC5wcm90b3R5cGUsZyksaCYmSUNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInBy''@;'; put 'put ''b3RvdHlwZSIse3dyaXRhYmxlOiExfSksZH0oaCl9KE9PKTtJMih3ZGUseENlKSxJMih3ZGUsdmRlKTtjb25zdCBaWWU9d2RlO2Z1bmN0aW9uIERDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGJkZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmln''@;'; put 'put ''dXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIFdZZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIHpZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSko''@;'; put 'put ''dGhpcyxkKSxiZGUodGhpcywiZGF0YUFjY2Vzc09iamVjdCIsdm9pZCAwKSxiZGUodGhpcywibGFzdFNjcm9sbGVkQ29sdW1uUG9zIiwtMSksYmRlKHRoaXMsImxhc3RTY3JvbGxlZFJvd1BvcyIsLTEpLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1nfXJldHVybiBmdW5jdGlvbiBHWWUoZCxnLGgp''@;'; put 'put ''e2cmJkRDZShkLnByb3RvdHlwZSxnKSxoJiZEQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2Nyb2xsVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSl7dmFyIGo9dGhpcy5zY3JvbGxWaWV3cG9ydEhv''@;'; put 'put ''cml6b250YWxseShoLmNvbCx5LEkpLGNlPXRoaXMuc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGgucm93LHYsQyk7cmV0dXJuIGp8fGNlfX0se2tleToic2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLmRhdGFBY2Nlc3NPYmplY3Qs''@;'; put 'put ''aj1DLnRvdGFsQ29sdW1ucztpZighQy5kcmF3bnx8IU51bWJlci5pc0ludGVnZXIoaCl8fGg8MHx8aD5qKXJldHVybiExO3ZhciBjZT10aGlzLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpLF9lPXRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKSxSZT12b2lkIDA9PT12JiZ2b2lkIDA9PT15LE5l''@;'; put 'put ''PXRoaXMuZGF0YUFjY2Vzc09iamVjdCxodD1OZS5pbmxpbmVTdGFydE92ZXJsYXk7aWYoUmUmJmg8TmUuZml4ZWRDb2x1bW5zU3RhcnQpcmV0dXJuITE7dmFyIEJ0PSExO3JldHVybi0xPT09Y2U/QnQ9aHQuc2Nyb2xsVG8oaCxSZT9oPnRoaXMubGFzdFNjcm9sbGVkQ29sdW1uUG9zOnYpOihS''@;'; put 'put ''ZSYmKGg8Y2V8fGg+X2UpfHwhUmUpJiYoQnQ9aHQuc2Nyb2xsVG8oaCxSZT9oPl9lOnYpKSxCdCYmKHRoaXMubGFzdFNjcm9sbGVkQ29sdW1uUG9zPWgpLEJ0fX0se2tleToic2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcy5kYXRhQWNj''@;'; put 'put ''ZXNzT2JqZWN0LGo9Qy50b3RhbFJvd3M7aWYoIUMuZHJhd258fCFOdW1iZXIuaXNJbnRlZ2VyKGgpfHxoPDB8fGg+ailyZXR1cm4hMTt2YXIgY2U9dGhpcy5nZXRGaXJzdFZpc2libGVSb3coKSxfZT10aGlzLmdldExhc3RWaXNpYmxlUm93KCksUmU9dm9pZCAwPT09diYmdm9pZCAwPT09eSxO''@;'; put 'put ''ZT10aGlzLmRhdGFBY2Nlc3NPYmplY3QsQnQ9TmUudG9wT3ZlcmxheTtpZihSZSYmKGg8TmUuZml4ZWRSb3dzVG9wfHxoPmotTmUuZml4ZWRSb3dzQm90dG9tLTEpKXJldHVybiExO3ZhciAkdD0hMTtyZXR1cm4tMT09PWNlPyR0PUJ0LnNjcm9sbFRvKGgsUmU/aD50aGlzLmxhc3RTY3JvbGxl''@;'; put 'put ''ZFJvd1Bvczp5KTooUmUmJihoPGNlfHxoPl9lKXx8IVJlKSYmKCR0PUJ0LnNjcm9sbFRvKGgsUmU/aD5fZTp5KSksJHQmJih0aGlzLmxhc3RTY3JvbGxlZFJvd1Bvcz1oKSwkdH19LHtrZXk6ImdldEZpcnN0VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmRhdGFBY2Nl''@;'; put 'put ''c3NPYmplY3Qsdj1oLnRvcE92ZXJsYXkseT1oLnd0VGFibGUsQz1oLnd0Vmlld3BvcnQsST1oLnRvdGFsUm93cyxqPWguZml4ZWRSb3dzVG9wLGNlPWgucm9vdFdpbmRvdyxfZT15LmdldEZpcnN0VmlzaWJsZVJvdygpO2lmKHYubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT1jZSl7dmFy''@;'; put 'put ''IFJlPXp1KHkud3RSb290RWxlbWVudCksTmU9THYoeS5oaWRlciksS2U9THYoY2UpLGh0PXN6KGNlLGNlKTtpZihSZS50b3ArTmUtS2U8PWh0KXt2YXIgQnQ9Qy5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKTtCdCs9di5zdW1DZWxsU2l6ZXMoMCxqKTtmb3IodmFyICR0PUk7JHQ+MDskdC0tKWlm''@;'; put 'put ''KEJ0Kz12LnN1bUNlbGxTaXplcygkdC0xLCR0KSxSZS50b3ArTmUtQnQ8PWh0KXtfZT0kdDticmVha319fXJldHVybiBfZX19LHtrZXk6ImdldExhc3RWaXNpYmxlUm93Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZGF0YUFjY2Vzc09iamVjdCx2PWgudG9wT3ZlcmxheSx5PWgud3RU''@;'; put 'put ''YWJsZSxDPWgud3RWaWV3cG9ydCxJPWgudG90YWxSb3dzLGo9aC5yb290V2luZG93LGNlPXkuZ2V0TGFzdFZpc2libGVSb3coKTtpZih2Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09ail7dmFyIF9lPXp1KHkud3RSb290RWxlbWVudCksUmU9c3ooaixqKTtpZihfZS50b3A+UmUpZm9y''@;'; put 'put ''KHZhciBOZT1MdihqKSxLZT1DLmdldENvbHVtbkhlYWRlckhlaWdodCgpLGh0PTE7aHQ8PUk7aHQrKylpZihLZSs9di5zdW1DZWxsU2l6ZXMoaHQtMSxodCksX2UudG9wK0tlLVJlPj1OZSl7Y2U9aHQtMjticmVha319cmV0dXJuIGNlfX0se2tleToiZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZGF0YUFjY2Vzc09iamVjdCx2PWguaW5saW5lU3RhcnRPdmVybGF5LHk9aC53dFRhYmxlLEM9aC53dFZpZXdwb3J0LEk9aC50b3RhbENvbHVtbnMsaj1oLnJvb3RXaW5kb3csY2U9eS5nZXRGaXJzdFZpc2libGVDb2x1bW4oKTtpZih2Lm1haW5U''@;'; put 'put ''YWJsZVNjcm9sbGFibGVFbGVtZW50PT09ail7dmFyIF9lPXp1KHkud3RSb290RWxlbWVudCksUmU9Y3ooeS5oaWRlciksTmU9Y3ooaiksS2U9TWF0aC5hYnMocmVlKGosaikpO2lmKF9lLmxlZnQrUmUtTmU8PUtlKWZvcih2YXIgaHQ9Qy5nZXRSb3dIZWFkZXJXaWR0aCgpLEJ0PUk7QnQ+MDtC''@;'; put 'put ''dC0tKWlmKGh0Kz12LnN1bUNlbGxTaXplcyhCdC0xLEJ0KSxfZS5sZWZ0K1JlLWh0PD1LZSl7Y2U9QnQ7YnJlYWt9fXJldHVybiBjZX19LHtrZXk6ImdldExhc3RWaXNpYmxlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZGF0YUFjY2Vzc09iamVjdCx2PWguaW5saW5lU3Rh''@;'; put 'put ''cnRPdmVybGF5LHk9aC53dFRhYmxlLEM9aC53dFZpZXdwb3J0LEk9aC50b3RhbENvbHVtbnMsaj1oLnJvb3RXaW5kb3csY2U9eS5nZXRMYXN0VmlzaWJsZUNvbHVtbigpO2lmKHYubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT1qKXt2YXIgX2U9enUoeS53dFJvb3RFbGVtZW50KSxSZT1N''@;'; put 'put ''YXRoLmFicyhyZWUoaixqKSk7aWYoX2UubGVmdD5SZSlmb3IodmFyIE5lPWN6KGopLEtlPUMuZ2V0Um93SGVhZGVyV2lkdGgoKSxodD0xO2h0PD1JO2h0KyspaWYoS2UrPXYuc3VtQ2VsbFNpemVzKGh0LTEsaHQpLF9lLmxlZnQrS2UtUmU+PU5lKXtjZT1odC0yO2JyZWFrfX1yZXR1cm4gY2V9''@;'; put 'put ''fV0pLGR9KCk7Y29uc3QgWVllPVdZZTtmdW5jdGlvbiBVWWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBMQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7''@;'; put 'put ''dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBKWWUoZCxnLGgpeyhmdW5jdGlvbiBYWWUoZCxnKXtpZihn''@;'; put 'put ''LmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLnNldChkLGgpfWZ1bmN0aW9uIE9DZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gd3ooZCxnKXtyZXR1cm4gZnVuY3Rpb24gS1llKGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxSQ2UoZCxnLCJnZXQiKSl9''@;'; put 'put ''ZnVuY3Rpb24gJFllKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gcVllKGQsZyxoKXtpZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1o''@;'; put 'put ''fX0oZCxSQ2UoZCxnLCJzZXQiKSxoKSxofWZ1bmN0aW9uIFJDZShkLGcsaCl7aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX12YXIgelM9bmV3IFdlYWtNYXAs''@;'; put 'put ''ZVVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07VVllKHRoaXMsZCksT0NlKHRoaXMsInJvdyIsbnVsbCksT0NlKHRoaXMsImNvbCIsbnVsbCksSlllKHRoaXMselMse3dyaXRh''@;'; put 'put ''YmxlOiEwLHZhbHVlOiExfSksJFllKHRoaXMselMsdiksdm9pZCAwIT09ZyYmdm9pZCAwIT09aCYmKHRoaXMucm93PWcsdGhpcy5jb2w9aCl9cmV0dXJuIGZ1bmN0aW9uIFFZZShkLGcsaCl7ZyYmTENlKGQucHJvdG90eXBlLGcpLGgmJkxDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJpc1ZhbGlkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4hKHRoaXMucm93PDB8fHRoaXMuY29sPDB8fHRoaXMucm93Pj1oLmdldFNldHRpbmcoInRvdGFsUm93cyIpfHx0aGlzLmNvbD49aC5nZXRTZXR0aW5nKCJ0b3RhbENv''@;'; put 'put ''bHVtbnMiKSl9fSx7a2V5OiJpc0VxdWFsIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaD09PXRoaXN8fHRoaXMucm93PT09aC5yb3cmJnRoaXMuY29sPT09aC5jb2x9fSx7a2V5OiJpc1NvdXRoRWFzdE9mIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5yb3c+PWgucm93JiYod3oo''@;'; put 'put ''dGhpcyx6Uyk/dGhpcy5jb2w8PWguY29sOnRoaXMuY29sPj1oLmNvbCl9fSx7a2V5OiJpc05vcnRoV2VzdE9mIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5yb3c8PWgucm93JiYod3oodGhpcyx6Uyk/dGhpcy5jb2w+PWguY29sOnRoaXMuY29sPD1oLmNvbCl9fSx7a2V5OiJpc1Nv''@;'; put 'put ''dXRoV2VzdE9mIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5yb3c+PWgucm93JiYod3oodGhpcyx6Uyk/dGhpcy5jb2w+PWguY29sOnRoaXMuY29sPD1oLmNvbCl9fSx7a2V5OiJpc05vcnRoRWFzdE9mIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5yb3c8PWgucm93JiYo''@;'; put 'put ''d3oodGhpcyx6Uyk/dGhpcy5jb2w8PWguY29sOnRoaXMuY29sPj1oLmNvbCl9fSx7a2V5OiJub3JtYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm93PW51bGw9PT10aGlzLnJvdz90aGlzLnJvdzpNYXRoLm1heCh0aGlzLnJvdywwKSx0aGlzLmNvbD1udWxsPT09dGhpcy5j''@;'; put 'put ''b2w/dGhpcy5jb2w6TWF0aC5tYXgodGhpcy5jb2wsMCksdGhpc319LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgZCh0aGlzLnJvdyx0aGlzLmNvbCx3eih0aGlzLHpTKSl9fSx7a2V5OiJ0b09iamVjdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57cm93OnRoaXMu''@;'; put 'put ''cm93LGNvbDp0aGlzLmNvbH19fV0pLGR9KCk7Y29uc3QgX2RlPWVVZTtmdW5jdGlvbiB0VWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBCQ2UoZCxnKXtmb3IodmFyIGg9''@;'; put 'put ''MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiByVWUoZCxnLGgpeyhmdW5j''@;'; put 'put ''dGlvbiBpVWUoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLnNldChkLGgpfWZ1bmN0aW9uIENkZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9P''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gSWcoZCxnKXtyZXR1cm4gZnVuY3Rpb24gb1VlKGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0o''@;'; put 'put ''ZCxQQ2UoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gYVVlKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gbFVlKGQsZyxoKXtpZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRl''@;'; put 'put ''IGZpZWxkIik7Zy52YWx1ZT1ofX0oZCxQQ2UoZCxnLCJzZXQiKSxoKSxofWZ1bmN0aW9uIFBDZShkLGcsaCl7aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX12''@;'; put 'put ''YXIgU3A9bmV3IFdlYWtNYXAsc1VlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06Zyx2PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1sy''@;'; put 'put ''XTpnLHk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTt0VWUodGhpcyxkKSxDZGUodGhpcywiaGlnaGxpZ2h0IixudWxsKSxDZGUodGhpcywiZnJvbSIsbnVsbCksQ2RlKHRoaXMsInRvIixudWxsKSxyVWUodGhpcyxTcCx7d3JpdGFibGU6''@;'; put 'put ''ITAsdmFsdWU6ITF9KSx0aGlzLmhpZ2hsaWdodD1nLmNsb25lKCkubm9ybWFsaXplKCksdGhpcy5mcm9tPWguY2xvbmUoKSx0aGlzLnRvPXYuY2xvbmUoKSxhVWUodGhpcyxTcCx5KX1yZXR1cm4gZnVuY3Rpb24gblVlKGQsZyxoKXtnJiZCQ2UoZC5wcm90b3R5cGUsZyksaCYmQkNlKGQsaCks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldEhpZ2hsaWdodCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuaGlnaGxpZ2h0PWguY2xvbmUoKS5ub3JtYWxpemUoKSx0aGlzfX0se2tleToic2V0RnJvbSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZnJvbT1oLmNsb25lKCksdGhpc319LHtrZXk6InNldFRvIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy50bz1oLmNsb25lKCksdGhpc319LHtrZXk6ImlzVmFsaWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmZyb20uaXNWYWxp''@;'; put 'put ''ZChoKSYmdGhpcy50by5pc1ZhbGlkKGgpfX0se2tleToiaXNTaW5nbGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnJvbS5yb3c+PTAmJnRoaXMuZnJvbS5yb3c9PT10aGlzLnRvLnJvdyYmdGhpcy5mcm9tLmNvbD49MCYmdGhpcy5mcm9tLmNvbD09PXRoaXMudG8uY29sfX0se2tl''@;'; put 'put ''eToiZ2V0T3V0ZXJIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLU1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpKzF9fSx7a2V5OiJnZXRPdXRlcldpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBN''@;'; put 'put ''YXRoLm1heCh0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKS1NYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSsxfX0se2tleToiZ2V0SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPU1hdGgubWF4KHRoaXMuZnJvbS5yb3csMCksdj1NYXRoLm1heCh0aGlzLnRvLnJvdyww''@;'; put 'put ''KTtyZXR1cm4gTWF0aC5tYXgoaCx2KS1NYXRoLm1pbihoLHYpKzF9fSx7a2V5OiJnZXRXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1NYXRoLm1heCh0aGlzLmZyb20uY29sLDApLHY9TWF0aC5tYXgodGhpcy50by5jb2wsMCk7cmV0dXJuIE1hdGgubWF4KGgsdiktTWF0aC5taW4oaCx2''@;'; put 'put ''KSsxfX0se2tleToiZ2V0Q2VsbHNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRXaWR0aCgpKnRoaXMuZ2V0SGVpZ2h0KCl9fSx7a2V5OiJpbmNsdWRlcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aC5yb3cseT1oLmNvbCxDPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENv''@;'; put 'put ''cm5lcigpLEk9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpO3JldHVybiBDLnJvdzw9diYmSS5yb3c+PXYmJkMuY29sPD15JiZJLmNvbD49eX19LHtrZXk6ImluY2x1ZGVzUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmluY2x1ZGVzKGguZ2V0T3V0ZXJUb3BTdGFy''@;'; put 'put ''dENvcm5lcigpKSYmdGhpcy5pbmNsdWRlcyhoLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCkpfX0se2tleToiaXNFcXVhbCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpPT09TWF0aC5taW4oaC5mcm9tLnJvdyxoLnRvLnJvdykm''@;'; put 'put ''Jk1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpPT09TWF0aC5tYXgoaC5mcm9tLnJvdyxoLnRvLnJvdykmJk1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpPT09TWF0aC5taW4oaC5mcm9tLmNvbCxoLnRvLmNvbCkmJk1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhp''@;'; put 'put ''cy50by5jb2wpPT09TWF0aC5tYXgoaC5mcm9tLmNvbCxoLnRvLmNvbCl9fSx7a2V5OiJvdmVybGFwcyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGguaXNTb3V0aEVhc3RPZih0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpKSYmaC5pc05vcnRoV2VzdE9mKHRoaXMuZ2V0T3V0ZXJCb3R0''@;'; put 'put ''b21SaWdodENvcm5lcigpKX19LHtrZXk6ImlzU291dGhFYXN0T2YiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmlzU291dGhFYXN0T2YoaCl8fHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLmlzU291dGhFYXN0T2YoaCl9fSx7''@;'; put 'put ''a2V5OiJpc05vcnRoV2VzdE9mIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5pc05vcnRoV2VzdE9mKGgpfHx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5pc05vcnRoV2VzdE9mKGgpfX0se2tleToiaXNPdmVybGFwcGluZ0hv''@;'; put 'put ''cml6b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbD49aC5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5jb2wmJnRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbDw9aC5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCku''@;'; put 'put ''Y29sfHx0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmNvbDw9aC5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkuY29sJiZ0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmNvbD49aC5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5jb2x9fSx7a2V5OiJpc092ZXJsYXBwaW5nVmVydGljYWxs''@;'; put 'put ''eSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLnJvdz49aC5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkucm93JiZ0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3c8PWguZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigp''@;'; put 'put ''LnJvd3x8dGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkucm93PD1oLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3cmJnRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLnJvdz49aC5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkucm93fX0se2tleToiZXhwYW5kIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXt2YXIgdj10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSx5PXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtyZXR1cm4oaC5yb3c8di5yb3d8fGguY29sPHYuY29sfHxoLnJvdz55LnJvd3x8aC5jb2w+eS5jb2wpJiYodGhpcy5mcm9tPXRoaXMuX2NyZWF0ZUNl''@;'; put 'put ''bGxDb29yZHMoTWF0aC5taW4odi5yb3csaC5yb3cpLE1hdGgubWluKHYuY29sLGguY29sKSksdGhpcy50bz10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KHkucm93LGgucm93KSxNYXRoLm1heCh5LmNvbCxoLmNvbCkpLCEwKX19LHtrZXk6ImV4cGFuZEJ5UmFuZ2UiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgpe2lmKHRoaXMuaW5jbHVkZXNSYW5nZShoKXx8IXRoaXMub3ZlcmxhcHMoaCkpcmV0dXJuITE7dmFyIHY9dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkseT10aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCksQz10aGlzLmdldERpcmVjdGlvbigpLEk9aC5nZXRPdXRl''@;'; put 'put ''clRvcFN0YXJ0Q29ybmVyKCksaj1oLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCksY2U9TWF0aC5taW4odi5yb3csSS5yb3cpLF9lPU1hdGgubWluKHYuY29sLEkuY29sKSxSZT1NYXRoLm1heCh5LnJvdyxqLnJvdyksTmU9TWF0aC5tYXgoeS5jb2wsai5jb2wpLEtlPXRoaXMuX2NyZWF0ZUNl''@;'; put 'put ''bGxDb29yZHMoY2UsX2UpLGh0PXRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoUmUsTmUpO3JldHVybiB0aGlzLmZyb209S2UsdGhpcy50bz1odCx0aGlzLnNldERpcmVjdGlvbihDKSx0aGlzLmhpZ2hsaWdodC5yb3c9PT10aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3cmJiJOLVMi''@;'; put 'put ''PT09dGhpcy5nZXRWZXJ0aWNhbERpcmVjdGlvbigpJiZ0aGlzLmZsaXBEaXJlY3Rpb25WZXJ0aWNhbGx5KCksdGhpcy5oaWdobGlnaHQuY29sPT09dGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkuY29sJiYiVy1FIj09PXRoaXMuZ2V0SG9yaXpvbnRhbERpcmVjdGlvbigpJiZ0aGlzLmZs''@;'; put 'put ''aXBEaXJlY3Rpb25Ib3Jpem9udGFsbHkoKSwhMH19LHtrZXk6ImdldERpcmVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcm9tLmlzTm9ydGhXZXN0T2YodGhpcy50byk/Ik5XLVNFIjp0aGlzLmZyb20uaXNOb3J0aEVhc3RPZih0aGlzLnRvKT8iTkUtU1ciOnRoaXMuZnJv''@;'; put 'put ''bS5pc1NvdXRoRWFzdE9mKHRoaXMudG8pPyJTRS1OVyI6dGhpcy5mcm9tLmlzU291dGhXZXN0T2YodGhpcy50byk/IlNXLU5FIjp2b2lkIDB9fSx7a2V5OiJzZXREaXJlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGgpe3N3aXRjaChoKXtjYXNlIk5XLVNFIjp2YXIgdj1bdGhpcy5nZXRPdXRlclRv''@;'; put 'put ''cExlZnRDb3JuZXIoKSx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKV07dGhpcy5mcm9tPXZbMF0sdGhpcy50bz12WzFdO2JyZWFrO2Nhc2UiTkUtU1ciOnZhciB5PVt0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKSx0aGlzLmdldE91dGVyQm90dG9tTGVmdENvcm5lcigpXTt0''@;'; put 'put ''aGlzLmZyb209eVswXSx0aGlzLnRvPXlbMV07YnJlYWs7Y2FzZSJTRS1OVyI6dmFyIEM9W3RoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCldO3RoaXMuZnJvbT1DWzBdLHRoaXMudG89Q1sxXTticmVhaztjYXNlIlNXLU5FIjp2YXIg''@;'; put 'put ''ST1bdGhpcy5nZXRPdXRlckJvdHRvbUxlZnRDb3JuZXIoKSx0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKV07dGhpcy5mcm9tPUlbMF0sdGhpcy50bz1JWzFdfX19LHtrZXk6ImdldFZlcnRpY2FsRGlyZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblsiTkUtU1ciLCJOVy1TRSJd''@;'; put 'put ''LmluZGV4T2YodGhpcy5nZXREaXJlY3Rpb24oKSk+LTE/Ik4tUyI6IlMtTiJ9fSx7a2V5OiJnZXRIb3Jpem9udGFsRGlyZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblsiTlctU0UiLCJTVy1ORSJdLmluZGV4T2YodGhpcy5nZXREaXJlY3Rpb24oKSk+LTE/IlctRSI6IkUtVyJ9fSx7''@;'; put 'put ''a2V5OiJmbGlwRGlyZWN0aW9uVmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5nZXREaXJlY3Rpb24oKSl7Y2FzZSJOVy1TRSI6dGhpcy5zZXREaXJlY3Rpb24oIlNXLU5FIik7YnJlYWs7Y2FzZSJORS1TVyI6dGhpcy5zZXREaXJlY3Rpb24oIlNFLU5XIik7YnJlYWs7''@;'; put 'put ''Y2FzZSJTRS1OVyI6dGhpcy5zZXREaXJlY3Rpb24oIk5FLVNXIik7YnJlYWs7Y2FzZSJTVy1ORSI6dGhpcy5zZXREaXJlY3Rpb24oIk5XLVNFIil9fX0se2tleToiZmxpcERpcmVjdGlvbkhvcml6b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5nZXREaXJlY3Rpb24oKSl7''@;'; put 'put ''Y2FzZSJOVy1TRSI6dGhpcy5zZXREaXJlY3Rpb24oIk5FLVNXIik7YnJlYWs7Y2FzZSJORS1TVyI6dGhpcy5zZXREaXJlY3Rpb24oIk5XLVNFIik7YnJlYWs7Y2FzZSJTRS1OVyI6dGhpcy5zZXREaXJlY3Rpb24oIlNXLU5FIik7YnJlYWs7Y2FzZSJTVy1ORSI6dGhpcy5zZXREaXJlY3Rpb24o''@;'; put 'put ''IlNFLU5XIil9fX0se2tleToiZ2V0VG9wU3RhcnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpLm5vcm1hbGl6''@;'; put 'put ''ZSgpfX0se2tleToiZ2V0VG9wTGVmdENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSWcodGhpcyxTcCk/dGhpcy5nZXRUb3BFbmRDb3JuZXIoKTp0aGlzLmdldFRvcFN0YXJ0Q29ybmVyKCl9fSx7a2V5OiJnZXRCb3R0b21FbmRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpLm5vcm1hbGl6ZSgpfX0se2tleToiZ2V0Qm90dG9tUmlnaHRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEln''@;'; put 'put ''KHRoaXMsU3ApP3RoaXMuZ2V0Qm90dG9tU3RhcnRDb3JuZXIoKTp0aGlzLmdldEJvdHRvbUVuZENvcm5lcigpfX0se2tleToiZ2V0VG9wRW5kQ29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50''@;'; put 'put ''by5yb3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKS5ub3JtYWxpemUoKX19LHtrZXk6ImdldFRvcFJpZ2h0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBJZyh0aGlzLFNwKT90aGlzLmdldFRvcFN0YXJ0Q29ybmVyKCk6dGhpcy5nZXRUb3BFbmRDb3JuZXIo''@;'; put 'put ''KX19LHtrZXk6ImdldEJvdHRvbVN0YXJ0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKS5ub3JtYWxpemUoKX19''@;'; put 'put ''LHtrZXk6ImdldEJvdHRvbUxlZnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIElnKHRoaXMsU3ApP3RoaXMuZ2V0Qm90dG9tRW5kQ29ybmVyKCk6dGhpcy5nZXRCb3R0b21TdGFydENvcm5lcigpfX0se2tleToiZ2V0T3V0ZXJUb3BTdGFydENvcm5lciIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSl9fSx7a2V5OiJnZXRPdXRlclRvcExlZnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIElnKHRo''@;'; put 'put ''aXMsU3ApP3RoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKTp0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKX19LHtrZXk6ImdldE91dGVyQm90dG9tRW5kQ29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KHRoaXMuZnJvbS5y''@;'; put 'put ''b3csdGhpcy50by5yb3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKX19LHtrZXk6ImdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIElnKHRoaXMsU3ApP3RoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpOnRoaXMuZ2V0''@;'; put 'put ''T3V0ZXJCb3R0b21FbmRDb3JuZXIoKX19LHtrZXk6ImdldE91dGVyVG9wRW5kQ29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50''@;'; put 'put ''by5jb2wpKX19LHtrZXk6ImdldE91dGVyVG9wUmlnaHRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIElnKHRoaXMsU3ApP3RoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpOnRoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKX19LHtrZXk6ImdldE91dGVyQm90dG9tU3RhcnRDb3Ju''@;'; put 'put ''ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpfX0se2tleToiZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBJZyh0aGlzLFNwKT90aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk6dGhpcy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCl9fSx7a2V5OiJpc0Nvcm5lciIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4hISh2JiZ2LmluY2x1ZGVzKGgpJiYodGhpcy5n''@;'; put 'put ''ZXRPdXRlclRvcExlZnRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHModi5mcm9tLnJvdyx2LmZyb20uY29sKSl8fHRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3Jkcyh2LmZyb20ucm93LHYudG8uY29sKSl8fHRo''@;'; put 'put ''aXMuZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCkuaXNFcXVhbCh0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKHYudG8ucm93LHYuZnJvbS5jb2wpKXx8dGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkuaXNFcXVhbCh0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKHYudG8ucm93LHYudG8uY29s''@;'; put 'put ''KSkpKXx8aC5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCkpfHxoLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkpfHxoLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbUxlZnRDb3JuZXIoKSl8fGguaXNFcXVhbCh0aGlzLmdldE91dGVyQm90dG9tUmln''@;'; put 'put ''aHRDb3JuZXIoKSl9fSx7a2V5OiJnZXRPcHBvc2l0ZUNvcm5lciIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtpZighKGggaW5zdGFuY2VvZiBfZGUpKXJldHVybiExO2lmKHYpe3ZhciB5PXYuZnJvbSxDPXYudG87aWYodi5pbmNsdWRlcyhoKSl7aWYodGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVy''@;'; put 'put ''KCkuaXNFcXVhbCh0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKHkucm93LHkuY29sKSkpcmV0dXJuIHRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtpZih0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCkuaXNFcXVhbCh0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKHkucm93LEMuY29sKSkpcmV0''@;'; put 'put ''dXJuIHRoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpO2lmKHRoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhDLnJvdyx5LmNvbCkpKXJldHVybiB0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCk7aWYodGhpcy5nZXRP''@;'; put 'put ''dXRlckJvdHRvbUVuZENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhDLnJvdyxDLmNvbCkpKXJldHVybiB0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKX19cmV0dXJuIGguaXNFcXVhbCh0aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCkpP3RoaXMuZ2V0T3V0''@;'; put 'put ''ZXJUb3BTdGFydENvcm5lcigpOmguaXNFcXVhbCh0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSk/dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpOmguaXNFcXVhbCh0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCkpP3RoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpOmgu''@;'; put 'put ''aXNFcXVhbCh0aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKSk/dGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpOnZvaWQgMH19LHtrZXk6ImdldEJvcmRlcnNTaGFyZWRXaXRoIix2YWx1ZTpmdW5jdGlvbihoKXtpZighdGhpcy5pbmNsdWRlc1JhbmdlKGgpKXJldHVybltdO3ZhciB2''@;'; put 'put ''X3RvcD1NYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSx2X2JvdHRvbT1NYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSx2X2xlZnQ9TWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCksdl9yaWdodD1NYXRoLm1heCh0aGlzLmZyb20uY29sLHRoaXMu''@;'; put 'put ''dG8uY29sKSx5X3RvcD1NYXRoLm1pbihoLmZyb20ucm93LGgudG8ucm93KSx5X2JvdHRvbT1NYXRoLm1heChoLmZyb20ucm93LGgudG8ucm93KSx5X2xlZnQ9TWF0aC5taW4oaC5mcm9tLmNvbCxoLnRvLmNvbCkseV9yaWdodD1NYXRoLm1heChoLmZyb20uY29sLGgudG8uY29sKSxDPVtdO3Jl''@;'; put 'put ''dHVybiB2X3RvcD09PXlfdG9wJiZDLnB1c2goInRvcCIpLHZfcmlnaHQ9PT15X3JpZ2h0JiZDLnB1c2goInJpZ2h0Iiksdl9ib3R0b209PT15X2JvdHRvbSYmQy5wdXNoKCJib3R0b20iKSx2X2xlZnQ9PT15X2xlZnQmJkMucHVzaCgibGVmdCIpLEN9fSx7a2V5OiJnZXRJbm5lciIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtmb3IodmFyIGg9dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCksdj10aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCkseT1bXSxDPWgucm93O0M8PXYucm93O0MrKylmb3IodmFyIEk9aC5jb2w7STw9di5jb2w7SSsrKSh0aGlzLmZyb20ucm93IT09Q3x8dGhpcy5m''@;'; put 'put ''cm9tLmNvbCE9PUkpJiYodGhpcy50by5yb3chPT1DfHx0aGlzLnRvLmNvbCE9PUkpJiZ5LnB1c2godGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhDLEkpKTtyZXR1cm4geX19LHtrZXk6ImdldEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGg9dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVy''@;'; put 'put ''KCksdj10aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCkseT1bXSxDPWgucm93O0M8PXYucm93O0MrKylmb3IodmFyIEk9aC5jb2w7STw9di5jb2w7SSsrKXkucHVzaChoLnJvdz09PUMmJmguY29sPT09ST9oOnYucm93PT09QyYmdi5jb2w9PT1JP3Y6dGhpcy5fY3JlYXRlQ2VsbENvb3Jk''@;'; put 'put ''cyhDLEkpKTtyZXR1cm4geX19LHtrZXk6ImZvckFsbCIsdmFsdWU6ZnVuY3Rpb24oaCl7Zm9yKHZhciB2PXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHk9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLEM9di5yb3c7Qzw9eS5yb3c7QysrKWZvcih2YXIgST12LmNvbDtJPD15''@;'; put 'put ''LmNvbDtJKyspaWYoITE9PT1oKEMsSSkpcmV0dXJufX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkKHRoaXMuaGlnaGxpZ2h0LHRoaXMuZnJvbSx0aGlzLnRvLElnKHRoaXMsU3ApKX19LHtrZXk6InRvT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntm''@;'; put 'put ''cm9tOnRoaXMuZnJvbS50b09iamVjdCgpLHRvOnRoaXMudG8udG9PYmplY3QoKX19fSx7a2V5OiJfY3JlYXRlQ2VsbENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gbmV3IF9kZShoLHYsSWcodGhpcyxTcCkpfX1dKSxkfSgpO2NvbnN0IEZDZT1zVWU7ZnVuY3Rpb24gSENlKGQs''@;'; put 'put ''Zyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gQTgo''@;'; put 'put ''ZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBrZGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIHVVZShkLGcpe2lm''@;'; put 'put ''KCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxBOCh0aGlzLCJ3dFRhYmxlIix2b2lkIDApLEE4KHRoaXMsInd0U2Nyb2xsIix2b2lkIDApLEE4KHRoaXMsInd0Vmlld3BvcnQiLHZvaWQg''@;'; put 'put ''MCksQTgodGhpcywid3RPdmVybGF5cyIsdm9pZCAwKSxBOCh0aGlzLCJzZWxlY3Rpb25zIix2b2lkIDApLEE4KHRoaXMsInd0RXZlbnQiLHZvaWQgMCksQTgodGhpcywiZ3VpZCIsInd0XyIuY29uY2F0KGczZSgpKSksQTgodGhpcywiZHJhd0ludGVycnVwdGVkIiwhMSksQTgodGhpcywiZHJh''@;'; put 'put ''d24iLCExKSxBOCh0aGlzLCJkb21CaW5kaW5ncyIsdm9pZCAwKSxBOCh0aGlzLCJ3dFNldHRpbmdzIix2b2lkIDApLHRoaXMuZG9tQmluZGluZ3M9e3Jvb3RUYWJsZTpnLHJvb3REb2N1bWVudDpnLm93bmVyRG9jdW1lbnQscm9vdFdpbmRvdzpnLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd9''@;'; put 'put ''LHRoaXMud3RTZXR0aW5ncz1oLHRoaXMud3RTY3JvbGw9bmV3IFlZZSh0aGlzLmNyZWF0ZVNjcm9sbERhbygpKX1yZXR1cm4gZnVuY3Rpb24gY1VlKGQsZyxoKXtnJiZIQ2UoZC5wcm90b3R5cGUsZyksaCYmSENlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dy''@;'; put 'put ''aXRhYmxlOiExfSl9KGQsW3trZXk6ImV2ZW50TWFuYWdlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQMSh0aGlzKX19LHtrZXk6ImZpbmRPcmlnaW5hbEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9W107aWYodGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXMubGVuZ3Ro''@;'; put 'put ''JiZ0aGlzLnd0VGFibGUuVEhFQUQuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aCl7Zm9yKHZhciB2PTAseT10aGlzLnd0VGFibGUuVEhFQUQuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aDt2PHk7disrKWgucHVzaCh0aGlzLnd0VGFibGUuVEhFQUQuY2hpbGROb2Rlc1sw''@;'; put 'put ''XS5jaGlsZE5vZGVzW3ZdLmlubmVySFRNTCk7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGh8fHRoaXMud3RTZXR0aW5ncy51cGRhdGUoImNvbHVtbkhlYWRlcnMiLFtmdW5jdGlvbihDLEkpe1J3KEksaFtDXSl9XSl9fX0se2tleToiY3JlYXRlQ2Vs''@;'; put 'put ''bENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gbmV3IF9kZShoLHYsdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKSl9fSx7a2V5OiJjcmVhdGVDZWxsUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtyZXR1cm4gbmV3IEZDZShoLHYseSx0aGlzLnd0U2V0''@;'; put 'put ''dGluZ3MuZ2V0U2V0dGluZygicnRsTW9kZSIpKX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kcmF3SW50ZXJydXB0ZWQ9ITEsaHx8dGhpcy53dFRh''@;'; put 'put ''YmxlLmlzVmlzaWJsZSgpP3RoaXMud3RUYWJsZS5kcmF3KGgpOnRoaXMuZHJhd0ludGVycnVwdGVkPSEwLHRoaXN9fSx7a2V5OiJnZXRDZWxsIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lm''@;'; put 'put ''KCF2KXJldHVybiB0aGlzLnd0VGFibGUuZ2V0Q2VsbChoKTt2YXIgeT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiksQz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksST10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dz''@;'; put 'put ''Qm90dG9tIiksaj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKTtpZihoLnJvdzxDJiZoLmNvbDxqKXJldHVybiB0aGlzLnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lLnd0VGFibGUuZ2V0Q2VsbChoKTtpZihoLnJvdzxD''@;'; put 'put ''KXJldHVybiB0aGlzLnd0T3ZlcmxheXMudG9wT3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoaCk7aWYoaC5jb2w8aiYmaC5yb3c+PXktSSl7aWYodGhpcy53dE92ZXJsYXlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmdGhpcy53dE92ZXJsYXlzLmJvdHRvbUlubGluZVN0''@;'; put 'put ''YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZSlyZXR1cm4gdGhpcy53dE92ZXJsYXlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoaCl9ZWxzZXtpZihoLmNvbDxqKXJldHVybiB0aGlzLnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmNsb25l''@;'; put 'put ''Lnd0VGFibGUuZ2V0Q2VsbChoKTtpZihoLnJvdzx5JiZoLnJvdz49eS1JJiZ0aGlzLnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheSYmdGhpcy53dE92ZXJsYXlzLmJvdHRvbU92ZXJsYXkuY2xvbmUpcmV0dXJuIHRoaXMud3RPdmVybGF5cy5ib3R0b21PdmVybGF5LmNsb25lLnd0VGFibGUuZ2V0''@;'; put 'put ''Q2VsbChoKX1yZXR1cm4gdGhpcy53dFRhYmxlLmdldENlbGwoaCl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJKXtyZXR1cm4hKGguY29sPDB8fGgucm93PDApJiZ0aGlzLnd0U2Nyb2xsLnNjcm9sbFZpZXdwb3J0KGgsdix5LEMsSSl9fSx7a2V5OiJz''@;'; put 'put ''Y3JvbGxWaWV3cG9ydEhvcml6b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3JldHVybiEoaDwwKSYmdGhpcy53dFNjcm9sbC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShoLHYseSl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGgsdix5''@;'; put 'put ''KXtyZXR1cm4hKGg8MCkmJnRoaXMud3RTY3JvbGwuc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGgsdix5KX19LHtrZXk6ImdldFZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt0aGlzLnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlUm93KCksdGhpcy53dFRhYmxlLmdldEZpcnN0Vmlz''@;'; put 'put ''aWJsZUNvbHVtbigpLHRoaXMud3RUYWJsZS5nZXRMYXN0VmlzaWJsZVJvdygpLHRoaXMud3RUYWJsZS5nZXRMYXN0VmlzaWJsZUNvbHVtbigpXX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53dE92ZXJsYXlzLmRlc3Ryb3koKSx0aGlzLnd0RXZlbnQuZGVzdHJveSgp''@;'; put 'put ''fX0se2tleToiY3JlYXRlU2Nyb2xsRGFvIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXM7cmV0dXJue2dldCBkcmF3bigpe3JldHVybiBoLmRyYXdufSxnZXQgdG9wT3ZlcmxheSgpe3JldHVybiBoLnd0T3ZlcmxheXMudG9wT3ZlcmxheX0sZ2V0IGlubGluZVN0YXJ0T3ZlcmxheSgpe3Jl''@;'; put 'put ''dHVybiBoLnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5fSxnZXQgd3RUYWJsZSgpe3JldHVybiBoLnd0VGFibGV9LGdldCB3dFZpZXdwb3J0KCl7cmV0dXJuIGgud3RWaWV3cG9ydH0sZ2V0IHJvb3RXaW5kb3coKXtyZXR1cm4gaC5kb21CaW5kaW5ncy5yb290V2luZG93fSxnZXQgdG90''@;'; put 'put ''YWxSb3dzKCl7cmV0dXJuIGgud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKX0sZ2V0IHRvdGFsQ29sdW1ucygpe3JldHVybiBoLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIil9LGdldCBmaXhlZFJvd3NUb3AoKXtyZXR1cm4gaC53dFNldHRpbmdzLmdldFNl''@;'; put 'put ''dHRpbmcoImZpeGVkUm93c1RvcCIpfSxnZXQgZml4ZWRSb3dzQm90dG9tKCl7cmV0dXJuIGgud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKX0sZ2V0IGZpeGVkQ29sdW1uc1N0YXJ0KCl7cmV0dXJuIGgud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNT''@;'; put 'put ''dGFydCIpfX19fSx7a2V5OiJnZXRUYWJsZURhbyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3JldHVybntnZXQgd290KCl7cmV0dXJuIGh9LGdldCBwYXJlbnRUYWJsZU9mZnNldCgpe3JldHVybiBoLmNsb25lU291cmNlLnd0VGFibGUudGFibGVPZmZzZXR9LGdldCBjbG9uZVNvdXJj''@;'; put 'put ''ZSgpe3JldHVybiBoLmNsb25lU291cmNlfSxnZXQgd29ya3NwYWNlV2lkdGgoKXtyZXR1cm4gaC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCl9LGdldCB3dFZpZXdwb3J0KCl7cmV0dXJuIGgud3RWaWV3cG9ydH0sZ2V0IHd0T3ZlcmxheXMoKXtyZXR1cm4gaC53dE92ZXJsYXlzfSxn''@;'; put 'put ''ZXQgc2VsZWN0aW9ucygpe3JldHVybiBoLnNlbGVjdGlvbnN9LGdldCBkcmF3bigpe3JldHVybiBoLmRyYXdufSxzZXQgZHJhd24odil7aC5kcmF3bj12fSxnZXQgd3RUYWJsZSgpe3JldHVybiBoLnd0VGFibGV9LGdldCBzdGFydENvbHVtblJlbmRlcmVkKCl7cmV0dXJuIGgud3RWaWV3cG9y''@;'; put 'put ''dC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydENvbHVtbn0sZ2V0IHN0YXJ0Q29sdW1uVmlzaWJsZSgpe3JldHVybiBoLnd0Vmlld3BvcnQuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yLnN0YXJ0Q29sdW1ufSxnZXQgZW5kQ29sdW1uUmVuZGVyZWQoKXtyZXR1cm4gaC53dFZpZXdwb3J0''@;'; put 'put ''LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLmVuZENvbHVtbn0sZ2V0IGVuZENvbHVtblZpc2libGUoKXtyZXR1cm4gaC53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvci5lbmRDb2x1bW59LGdldCBjb3VudENvbHVtbnNSZW5kZXJlZCgpe3JldHVybiBoLnd0Vmlld3BvcnQuY29s''@;'; put 'put ''dW1uc1JlbmRlckNhbGN1bGF0b3IuY291bnR9LGdldCBjb3VudENvbHVtbnNWaXNpYmxlKCl7cmV0dXJuIGgud3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3IuY291bnR9LGdldCBzdGFydFJvd1JlbmRlcmVkKCl7cmV0dXJuIGgud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3Vs''@;'; put 'put ''YXRvci5zdGFydFJvd30sZ2V0IHN0YXJ0Um93VmlzaWJsZSgpe3JldHVybiBoLnd0Vmlld3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yLnN0YXJ0Um93fSxnZXQgZW5kUm93UmVuZGVyZWQoKXtyZXR1cm4gaC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLmVuZFJvd30sZ2V0IGVu''@;'; put 'put ''ZFJvd1Zpc2libGUoKXtyZXR1cm4gaC53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvci5lbmRSb3d9LGdldCBjb3VudFJvd3NSZW5kZXJlZCgpe3JldHVybiBoLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3IuY291bnR9LGdldCBjb3VudFJvd3NWaXNpYmxlKCl7cmV0dXJu''@;'; put 'put ''IGgud3RWaWV3cG9ydC5yb3dzVmlzaWJsZUNhbGN1bGF0b3IuY291bnR9fX19XSksZH0oKTtmdW5jdGlvbiBTZGUoZCl7cmV0dXJuKFNkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''IGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIE5DZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsr''@;'; put 'put ''KXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIE1kZShkLGcpe3JldHVybihNZGU9T2JqZWN0LnNldFBy''@;'; put 'put ''b3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBnVWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1TZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lk''@;'; put 'put ''IDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGJlZShkKX1mdW5jdGlvbiBiZWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFz''@;'; put 'put ''bid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIF9lZShkKXtyZXR1cm4oX2VlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJv''@;'; put 'put ''dG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9ZnVuY3Rpb24gVkNlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH12YXIgdlVl''@;'; put 'put ''PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBkVWUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl''@;'; put 'put ''KGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmTWRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gcFVlKGQpe3ZhciBn''@;'; put 'put ''PWZ1bmN0aW9uIG1VZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBl''@;'; put 'put ''LnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PV9lZShkKTtpZihnKXt2YXIgQz1fZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0''@;'; put 'put ''cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGdVZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyl7dmFyIEk7KGZ1bmN0aW9uIGhVZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxoKSxWQ2UoYmVlKEk9Zy5jYWxsKHRoaXMsdix5KSksImNsb25lU291cmNlIix2b2lkIDApLFZDZShiZWUoSSksImNsb25lT3ZlcmxheSIsdm9pZCAwKTt2YXIgaj1JLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZmFjYWRlIixi''@;'; put 'put ''ZWUoSSkpO3JldHVybiBJLmNsb25lU291cmNlPUMuc291cmNlLEkuY2xvbmVPdmVybGF5PUMub3ZlcmxheSxJLnd0VGFibGU9SS5jbG9uZU92ZXJsYXkuY3JlYXRlVGFibGUoSS5nZXRUYWJsZURhbygpLGosSS5kb21CaW5kaW5ncyxJLnd0U2V0dGluZ3MpLEkud3RWaWV3cG9ydD1DLnZpZXdw''@;'; put 'put ''b3J0LEkuc2VsZWN0aW9ucz1DLnNlbGVjdGlvbnMsSS53dEV2ZW50PW5ldyBuQ2UoaixJLmRvbUJpbmRpbmdzLEkud3RTZXR0aW5ncyxJLmV2ZW50TWFuYWdlcixJLnd0VGFibGUsSS5zZWxlY3Rpb25zLEMuZXZlbnQpLEkuZmluZE9yaWdpbmFsSGVhZGVycygpLEl9cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IGZVZShkLGcsaCl7cmV0dXJuIGcmJk5DZShkLnByb3RvdHlwZSxnKSxoJiZOQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfShoKX0oa2RlKTtmdW5jdGlvbiBqQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFy''@;'; put 'put ''IHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgYno9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCx2LHksQyl7KGZ1bmN0''@;'; put 'put ''aW9uIEFVZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxmdW5jdGlvbiB3VWUoZCxnLGgpe2cgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVu''@;'; put 'put ''dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1ofSh0aGlzLCJ3dFNldHRpbmdzIixudWxsKSxNZyh0aGlzLCJ3b3QiLGcse3dyaXRhYmxlOiExfSksdGhpcy5kb21CaW5kaW5ncz1DLHRoaXMuZmFjYWRlR2V0dGVyPWgsdGhpcy53dFNldHRpbmdzPXk7dmFy''@;'; put 'put ''IEk9dGhpcy53b3Qud3RUYWJsZSxqPUkuVEFCTEUsY2U9SS5oaWRlcixfZT1JLnNwcmVhZGVyLFJlPUkuaG9sZGVyLE5lPUkud3RSb290RWxlbWVudDt0aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMudHlwZT12LHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9bnVsbCx0aGlzLlRB''@;'; put 'put ''QkxFPWosdGhpcy5oaWRlcj1jZSx0aGlzLnNwcmVhZGVyPV9lLHRoaXMuaG9sZGVyPVJlLHRoaXMud3RSb290RWxlbWVudD1OZSx0aGlzLnRyaW1taW5nQ29udGFpbmVyPXhPKHRoaXMuaGlkZXIucGFyZW50Tm9kZS5wYXJlbnROb2RlKSx0aGlzLnVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoKSx0''@;'; put 'put ''aGlzLmNsb25lPXRoaXMubWFrZUNsb25lKCl9cmV0dXJuIGZ1bmN0aW9uIHlVZShkLGcsaCl7ZyYmakNlKGQucHJvdG90eXBlLGcpLGgmJmpDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJ1cGRhdGVTdGF0ZU9mUmVu''@;'; put 'put ''ZGVyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMubmVlZEZ1bGxSZW5kZXI7dGhpcy5uZWVkRnVsbFJlbmRlcj10aGlzLnNob3VsZEJlUmVuZGVyZWQoKTt2YXIgdj1oIT09dGhpcy5uZWVkRnVsbFJlbmRlcjtyZXR1cm4gdiYmIXRoaXMubmVlZEZ1bGxSZW5kZXImJnRoaXMucmVz''@;'; put 'put ''ZXQoKSx2fX0se2tleToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6InVwZGF0ZVRyaW1taW5nQ29udGFpbmVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpbW1pbmdDb250YWluZXI9eE8odGhpcy5oaWRlci5wYXJlbnROb2RlLnBhcmVudE5v''@;'; put 'put ''ZGUpfX0se2tleToidXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMud290Lnd0VGFibGU7dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD0iaGlkZGVuIj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0''@;'; put 'put ''eWxlKGgud3RSb290RWxlbWVudC5wYXJlbnROb2RlKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpP3RoaXMud290Lnd0VGFibGUuaG9sZGVyOnV6KGguVEFCTEUpfX0se2tleToiZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtpZighMSE9PXRoaXMu''@;'; put 'put ''Y2xvbmUud3RUYWJsZS5ob2xkZXIuY29udGFpbnMoaCkpe3ZhciBDPXRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csST15PHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLGo9djx0aGlzLnd0''@;'; put 'put ''U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksY2U9dj49dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxfZT10aGlzLmNsb25lLnd0VGFibGUuc3ByZWFkZXIsUmU9e3N0''@;'; put 'put ''YXJ0OnRoaXMuZ2V0UmVsYXRpdmVTdGFydFBvc2l0aW9uKF9lKSx0b3A6X2Uub2Zmc2V0VG9wfSxOZT17c3RhcnQ6dGhpcy5nZXRSZWxhdGl2ZVN0YXJ0UG9zaXRpb24oaCksdG9wOmgub2Zmc2V0VG9wfTtyZXR1cm4gQz90aGlzLmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uV2l0aGluV2luZG93''@;'; put 'put ''KGosSSxOZSxSZSk6dGhpcy5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbkhvbGRlcihqLGNlLEksTmUsUmUpfWMxKCJUaGUgcHJvdmlkZWQgZWxlbWVudCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgIi5jb25jYXQodGhpcy50eXBlLCIgb3ZlcmxheSIpKX19LHtrZXk6ImdldFJlbGF0aXZl''@;'; put 'put ''U3RhcnRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuaXNSdGwoKT9oLm9mZnNldFBhcmVudC5vZmZzZXRXaWR0aC1oLm9mZnNldExlZnQtaC5vZmZzZXRXaWR0aDpoLm9mZnNldExlZnR9fSx7a2V5OiJnZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbldpbmRvdyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9dGhpcy53b3Qud3RUYWJsZS53dFJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGo9MCxjZT0wO2lmKHYpe3ZhciBfZT1JLmxlZnQ7dGhpcy5pc1J0bCgpJiYoX2U9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LmlubmVy''@;'; put 'put ''V2lkdGgtKEkubGVmdCtJLndpZHRoK1BjKCkpKSxqPV9lPD0wPy0xKl9lOjB9ZWxzZSBqPUMuc3RhcnQ7cmV0dXJuIGNlPWg/dGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC1JLnRvcDpDLnRvcCx7c3RhcnQ6eS5zdGFydCtqLHRvcDp5LnRvcCtj''@;'; put 'put ''ZX19fSx7a2V5OiJnZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbkhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJKXt2YXIgal9ob3Jpem9udGFsPXRoaXMud290Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCksal92ZXJ0aWNhbD10aGlz''@;'; put 'put ''LndvdC53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKSxjZT0wLF9lPTA7aWYoeXx8KGNlPWpfaG9yaXpvbnRhbC1JLnN0YXJ0KSx2KXt2YXIgUmU9dGhpcy53b3Qud3RUYWJsZS53dFJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO19lPS0xKnRoaXMu''@;'; put 'put ''Y2xvbmUud3RUYWJsZS5UQUJMRS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArUmUudG9wfWVsc2UgaHx8KF9lPWpfdmVydGljYWwtSS50b3ApO3JldHVybntzdGFydDpDLnN0YXJ0LWNlLHRvcDpDLnRvcC1fZX19fSx7a2V5OiJtYWtlQ2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoLTE9''@;'; put 'put ''PT13WWUuaW5kZXhPZih0aGlzLnR5cGUpKXRocm93IG5ldyBFcnJvcignQ2xvbmUgdHlwZSAiJy5jb25jYXQodGhpcy50eXBlLCciIGlzIG5vdCBzdXBwb3J0ZWQuJykpO3ZhciBoPXRoaXMud290Lnd0VGFibGUsdj10aGlzLmRvbUJpbmRpbmdzLHk9di5yb290RG9jdW1lbnQsQz12LnJvb3RX''@;'; put 'put ''aW5kb3csST15LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGo9eS5jcmVhdGVFbGVtZW50KCJUQUJMRSIpLGNlPWgud3RSb290RWxlbWVudC5wYXJlbnROb2RlO0kuY2xhc3NOYW1lPSIiLmNvbmNhdChiWWUuZ2V0KHRoaXMudHlwZSksIiBoYW5kc29udGFibGUiKSxJLnNldEF0dHJpYnV0ZSgiZGly''@;'; put 'put ''Iix0aGlzLmlzUnRsKCk/InJ0bCI6Imx0ciIpLEkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixJLnN0eWxlLnRvcD0wLEkuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHRoaXMuaXNSdGwoKT9JLnN0eWxlLnJpZ2h0PTA6SS5zdHlsZS5sZWZ0PTAsai5jbGFzc05hbWU9aC5UQUJMRS5jbGFz''@;'; put 'put ''c05hbWUsSS5hcHBlbmRDaGlsZChqKSxjZS5hcHBlbmRDaGlsZChJKTt2YXIgX2U9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PSEwPT09X2V8fCJob3Jpem9udGFsIj09PV9lJiZ0aGlz''@;'; put 'put ''LnR5cGU9PT1WU3x8InZlcnRpY2FsIj09PV9lJiZ0aGlzLnR5cGU9PT1qUz9DOiJoaWRkZW4iPT09Qy5nZXRDb21wdXRlZFN0eWxlKGNlKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpP2guaG9sZGVyOnV6KGguVEFCTEUpLG5ldyB2VWUoaix0aGlzLnd0U2V0dGluZ3Mse3NvdXJjZTp0''@;'; put 'put ''aGlzLndvdCxvdmVybGF5OnRoaXMsdmlld3BvcnQ6dGhpcy53b3Qud3RWaWV3cG9ydCxldmVudDp0aGlzLndvdC53dEV2ZW50LHNlbGVjdGlvbnM6dGhpcy53b3Quc2VsZWN0aW9uc30pfX0se2tleToicmVmcmVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHY9dGhpcy5zaG91bGRCZVJlbmRlcmVkKCk7dGhpcy5jbG9uZSYmKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fHYpJiZ0aGlzLmNsb25lLmRyYXcoaCksdGhpcy5uZWVkRnVsbFJlbmRlcj12fX0se2tleToicmVzZXQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7aWYodGhpcy5jbG9uZSl7dmFyIGg9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlcjtHcihbaC5zdHlsZSx0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUsaC5wYXJlbnROb2RlLnN0eWxlXSxmdW5jdGlvbihqKXtqLndpZHRoPSIiLGouaGVpZ2h0PSIifSl9fX0se2tleToi''@;'; put 'put ''aXNSdGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xvbmUuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKX19XSksZH0oKTtmdW5jdGlvbiBFZGUoZCl7cmV0''@;'; put 'put ''dXJuKEVkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3lt''@;'; put 'put ''Ym9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIENlZShkLGcsaCl7cmV0dXJuKENlZT1HQ2UoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPVtudWxsXTtqLnB1c2guYXBwbHkoaixDKTt2YXIgX2U9''@;'; put 'put ''bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoeSxqKSk7cmV0dXJuIEkmJmtlZShfZSxJLnByb3RvdHlwZSksX2V9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWkNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVy''@;'; put 'put ''YWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24ga2VlKGQsZyl7cmV0dXJuKGtlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFNVZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PUVkZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZl''@;'; put 'put ''ZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gekNlKGQpfWZ1bmN0aW9uIHpDZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz''@;'; put 'put ''bid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gR0NlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3Ry''@;'; put 'put ''eXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fWZ1bmN0aW9uIFNlZShkKXtyZXR1cm4oU2VlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEVVZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gQ1VlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmtlZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGtVZShkKXt2YXIgZz1HQ2UoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVNlZShkKTtpZihnKXt2YXIgQz1TZWUodGhpcykuY29uc3RydWN0b3I7eT1S''@;'; put 'put ''ZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFNVZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJKXt2YXIgajtyZXR1cm4gZnVuY3Rpb24gYlVlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZnVuY3Rpb24gTVVlKGQsZyxoKXtnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0p''@;'; put 'put ''OmRbZ109aH0oekNlKGo9Zy5jYWxsKHRoaXMsdix5LFZTLEMsSSkpLCJjYWNoZWRGaXhlZFJvd3NUb3AiLC0xKSxqLmNhY2hlZEZpeGVkUm93c1RvcD1qLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksan1yZXR1cm4gZnVuY3Rpb24gX1VlKGQsZyxoKXtnJiZaQ2UoZC5w''@;'; put 'put ''cm90b3R5cGUsZyksaCYmWkNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7''@;'; put 'put ''SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBDZWUoWlllLEMpfX0se2tleToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlclRvcE92ZXJsYXkiKX19LHtrZXk6InJlc2V0Rml4ZWRQb3Np''@;'; put 'put ''dGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5uZWVkRnVsbFJlbmRlcnx8IXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpcmV0dXJuITE7dmFyIHk9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLEM9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93''@;'; put 'put ''LEk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpLGo9MCxjZT0hMTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09Q3x8SSYmInZlcnRpY2FsIj09PUkpaj10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksaHooeSk7ZWxzZXt2YXIgUmU9dGhpcy53b3Qud3RU''@;'; put 'put ''YWJsZS5oaWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjZT1NYXRoLmNlaWwoUmUuYm90dG9tKT09PXkub2Zmc2V0SGVpZ2h0LGo9dGhpcy5nZXRPdmVybGF5T2Zmc2V0KCksb2VlKHksIjBweCIsIiIuY29uY2F0KGosInB4IikpfXZhciBodD10aGlzLmFkanVzdEhlYWRlckJvcmRlcnNQ''@;'; put 'put ''b3NpdGlvbihqLGNlKTtyZXR1cm4gdGhpcy5hZGp1c3RFbGVtZW50c1NpemUoKSxodH19LHtrZXk6InNldFNjcm9sbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csST0hMTtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxl''@;'; put 'put ''RWxlbWVudD09PUMmJkMuc2Nyb2xsWSE9PXk/KEMuc2Nyb2xsVG8oSFMoQykseSksST0hMCk6dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3AhPT15JiYodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3A9eSxJPSEwKSxJfX0se2tleToib25T''@;'; put 'put ''Y3JvbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uU2Nyb2xsSG9yaXpvbnRhbGx5Iil9fSx7a2V5OiJzdW1DZWxsU2l6ZXMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93''@;'; put 'put ''SGVpZ2h0Iiksaj15LGNlPTA7ajxDOyl7dmFyIF9lPXRoaXMud290Lnd0VGFibGUuZ2V0Um93SGVpZ2h0KGopO2NlKz12b2lkIDA9PT1fZT9JOl9lLGorPTF9cmV0dXJuIGNlfX0se2tleToiYWRqdXN0RWxlbWVudHNTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07dGhpcy51cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpLCh0aGlzLm5lZWRGdWxsUmVuZGVyfHx5KSYmKHRoaXMuYWRqdXN0Um9vdEVsZW1lbnRTaXplKCksdGhpcy5hZGp1c3RSb290Q2hpbGRyZW5TaXplKCkpfX0se2tl''@;'; put 'put ''eToiYWRqdXN0Um9vdEVsZW1lbnRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMud290Lnd0VGFibGUsQz10aGlzLmRvbUJpbmRpbmdzLGo9Qy5yb290V2luZG93LGNlPVBjKEMucm9vdERvY3VtZW50KSxSZT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUuc3R5''@;'; put 'put ''bGUsTmU9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXIhPT1qfHwiaG9yaXpvbnRhbCI9PT1OZSl7dmFyIEtlPXRoaXMud290Lnd0Vmlld3BvcnQuZ2V0V29ya3NwYWNlV2lkdGgoKTt0aGlzLndvdC53dE92ZXJs''@;'; put 'put ''YXlzLmhhc1Njcm9sbGJhclJpZ2h0JiYoS2UtPWNlKSxLZT1NYXRoLm1pbihLZSx5Lnd0Um9vdEVsZW1lbnQuc2Nyb2xsV2lkdGgpLFJlLndpZHRoPSIiLmNvbmNhdChLZSwicHgiKX1lbHNlIFJlLndpZHRoPSIiO3RoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuc3R5bGUud2lkdGg9UmUud2lk''@;'; put 'put ''dGg7dmFyIGh0PUIxKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7dGhpcy53b3Qud3RUYWJsZS5oYXNEZWZpbmVkU2l6ZSgpfHwoaHQ9MCksUmUuaGVpZ2h0PSIiLmNvbmNhdChodCwicHgiKX19LHtrZXk6ImFkanVzdFJvb3RDaGlsZHJlblNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHks''@;'; put 'put ''Qz10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLEk9dGhpcy53b3Quc2VsZWN0aW9ucyxqPXRoaXMuZmFjYWRlR2V0dGVyKCksY2U9TWF0aC5hYnMobnVsbCE9PSh5PW51bGw9PUk/dm9pZCAwOkkuZ2V0Q2VsbCgpLmdldEJvcmRlcihqKS5jb3JuZXJDZW50ZXJQb2ludE9mZnNldCkmJnZvaWQg''@;'; put 'put ''MCE9PXk/eTowKTt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUud2lkdGg9dGhpcy5oaWRlci5zdHlsZS53aWR0aCxDLnN0eWxlLndpZHRoPUMucGFyZW50Tm9kZS5zdHlsZS53aWR0aCxDLnN0eWxlLmhlaWdodD0iIi5jb25jYXQocGFyc2VJbnQoQy5wYXJlbnROb2RlLnN0eWxlLmhl''@;'; put 'put ''aWdodCwxMCkrY2UsInB4Iil9fSx7a2V5OiJhcHBseVRvRE9NIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtpZigibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3Rh''@;'; put 'put ''cnRQb3NpdGlvbil0aGlzLnNwcmVhZGVyLnN0eWxlLnRvcD0iIi5jb25jYXQodGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uLCJweCIpO2Vsc2V7aWYoMCE9PXkpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgdmFsdWUgb2YgdGhlIHJvd3NS''@;'; put 'put ''ZW5kZXJDYWxjdWxhdG9yIik7dGhpcy5zcHJlYWRlci5zdHlsZS50b3A9IjAifXRoaXMuc3ByZWFkZXIuc3R5bGUuYm90dG9tPSIiLHRoaXMubmVlZEZ1bGxSZW5kZXImJnRoaXMuc3luY092ZXJsYXlPZmZzZXQoKX19LHtrZXk6InN5bmNPdmVybGF5T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3ZhciB5PXRoaXMuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Ijt0aGlzLmNsb25lLnd0VGFibGUuc3ByZWFkZXIuc3R5bGVbeV09Im51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24/IiIuY29uY2F0KHRoaXMud290''@;'; put 'put ''Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKToiIn19LHtrZXk6InNjcm9sbFRvIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMud290LGo9dGhpcy53dFNldHRpbmdzLF9lPShJLmNsb25lU291cmNlP0kuY2xvbmVTb3VyY2U6SSku''@;'; put 'put ''d3RUYWJsZS5ob2xkZXIsUmU9dGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLE5lPTA7aWYoQyYmdGhpcy53b3Qud3RUYWJsZS5nZXRSb3dIZWlnaHQoeSk+dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydEhlaWdodCgpJiYoQz0hMSksQyYmX2Uub2Zmc2V0SGVpZ2h0IT09X2UuY2xp''@;'; put 'put ''ZW50SGVpZ2h0JiYoTmU9UGModGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSxDKXt2YXIgQnQ9ai5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSwkdD1qLmdldFNldHRpbmcoInRvdGFsUm93cyIpO1JlKz10aGlzLnN1bUNlbGxTaXplcygwLHkrMSksUmUtPUkud3RWaWV3cG9y''@;'; put 'put ''dC5nZXRWaWV3cG9ydEhlaWdodCgpLXRoaXMuc3VtQ2VsbFNpemVzKCR0LUJ0LCR0KSxSZSs9MX1lbHNlIFJlKz10aGlzLnN1bUNlbGxTaXplcyhqLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLHkpO3JldHVybiB0aGlzLnNldFNjcm9sbFBvc2l0aW9uKFJlKz1OZSl9fSx7a2V5OiJnZXRU''@;'; put 'put ''YWJsZVBhcmVudE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdz90aGlzLndvdC53dFRhYmxlLmhvbGRlck9mZnNldC50b3A6MH19LHtrZXk6ImdldFNjcm9sbFBvc2l0aW9u''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzeih0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl9fSx7a2V5OiJnZXRPdmVybGF5T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRv''@;'; put 'put ''dyxDPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxJPTA7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXkmJighQ3x8InZlcnRpY2FsIiE9PUMpKXt2YXIgX2U9dGhpcy53b3Qud3RUYWJsZS5nZXRUb3RhbEhlaWdodCgpLXRoaXMuY2xvbmUud3RUYWJs''@;'; put 'put ''ZS5nZXRUb3RhbEhlaWdodCgpOyhJPU1hdGgubWF4KHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCksMCkpPl9lJiYoST0wKX1yZXR1cm4gSX19LHtrZXk6ImFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFy''@;'; put 'put ''IEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxJPXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsaj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIik7aj91bChJLCJlbXB0eUNvbHVtbnMiKTpQ''@;'; put 'put ''MChJLCJlbXB0eUNvbHVtbnMiKTt2YXIgY2U9ITE7aWYoIUMpe3ZhciBfZT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksUmU9dGhpcy5jYWNoZWRGaXhlZFJvd3NUb3AhPT1fZSxOZT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIp''@;'; put 'put ''O2lmKChSZXx8MD09PV9lKSYmTmUubGVuZ3RoPjApe3ZhciBLZT1YYShJLCJpbm5lckJvcmRlclRvcCIpO3RoaXMuY2FjaGVkRml4ZWRSb3dzVG9wPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSx5fHwwPT09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRv''@;'; put 'put ''dGFsUm93cyIpPyhQMChJLCJpbm5lckJvcmRlclRvcCIpLGNlPSFLZSk6KHVsKEksImlubmVyQm9yZGVyVG9wIiksY2U9S2UpfX1yZXR1cm4gY2V9fV0pLGh9KGJ6KSxXQ2U9e2dldEZpcnN0UmVuZGVyZWRSb3c6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygi''@;'; put 'put ''dG90YWxSb3dzIiksaD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksdj1nLWg7cmV0dXJuIDA9PT1nfHwwPT09aD8tMTp2PDA/MDp2fSxnZXRGaXJzdFZpc2libGVSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCl9LGdl''@;'; put 'put ''dExhc3RSZW5kZXJlZFJvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiktMX0sZ2V0TGFzdFZpc2libGVSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0UmVuZGVyZWRSb3dzQ291bnQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgZz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7cmV0dXJuIE1hdGgubWluKHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxnKX0sZ2V0VmlzaWJsZVJvd3NDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdl''@;'; put 'put ''dFJlbmRlcmVkUm93c0NvdW50KCl9fTtNZyhXQ2UsIk1JWElOX05BTUUiLCJzdGlja3lSb3dzQm90dG9tIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IFlDZT1XQ2U7ZnVuY3Rpb24geGRlKGQpe3JldHVybih4ZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IGd9KShkKX1mdW5jdGlvbiBVQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LHYua2V5LHYpfX1mdW5jdGlvbiBUZGUoZCxnKXtyZXR1cm4oVGRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gT1VlKGQsZyl7aWYoZyYmKCJvYmpl''@;'; put 'put ''Y3QiPT09eGRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBSVWUoZCl7aWYo''@;'; put 'put ''dm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBNZWUoZCl7cmV0dXJuKE1lZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0''@;'; put 'put ''LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBJZGU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIERVZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZUZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBMVWUoZCl7dmFyIGc9ZnVuY3Rpb24gQlVlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0''@;'; put 'put ''dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9TWVlKGQpO2lmKGcpe3ZhciBDPU1lZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gT1VlKHRoaXMseSl9fSho''@;'; put 'put ''KTtmdW5jdGlvbiBoKHYseSxDLEkpe3JldHVybiBmdW5jdGlvbiBJVWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyx2LHksQyxJLHhnKX1yZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gVFVlKGQsZyxoKXtyZXR1cm4gZyYmVUNlKGQucHJvdG90eXBlLGcpLGgmJlVDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9KGgpfShPTyk7STIoSWRlLFlDZSksSTIoSWRlLHZkZSk7Y29uc3QgUFVlPUlkZTtmdW5j''@;'; put 'put ''dGlvbiBEZGUoZCl7cmV0dXJuKERkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNv''@;'; put 'put ''bnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEVlZShkLGcsaCl7cmV0dXJuKEVlZT1YQ2UoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPVtudWxsXTtqLnB1c2guYXBw''@;'; put 'put ''bHkoaixDKTt2YXIgX2U9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoeSxqKSk7cmV0dXJuIEkmJnhlZShfZSxJLnByb3RvdHlwZSksX2V9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUUNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVt''@;'; put 'put ''ZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24geGVlKGQsZyl7cmV0dXJuKHhlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNl''@;'; put 'put ''dFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGpVZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PURkZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gSkNlKGQpfWZ1bmN0aW9uIEpDZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNl''@;'; put 'put ''ZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gWENlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFBy''@;'; put 'put ''b3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fWZ1bmN0aW9uIFRlZShkKXtyZXR1cm4oVGVlPU9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHpVZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gTlVlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwh''@;'; put 'put ''PT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxl''@;'; put 'put ''OiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnhlZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFZVZShkKXt2YXIgZz1YQ2UoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVRlZShkKTtpZihnKXt2YXIgQz1UZWUodGhpcyku''@;'; put 'put ''Y29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGpVZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJKXt2YXIgajtyZXR1cm4gZnVuY3Rpb24gRlVlKGQsZyl7aWYoIShkIGluc3Rh''@;'; put 'put ''bmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZnVuY3Rpb24gWlVlKGQsZyxoKXtnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MCx3cml0YWJsZTohMH0pOmRbZ109aH0oSkNlKGo9Zy5jYWxsKHRoaXMsdix5LHhnLEMsSSkpLCJjYWNoZWRGaXhlZFJvd3NCb3R0b20iLC0xKSxqLmNhY2hlZEZpeGVkUm93c0JvdHRvbT1qLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksan1yZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gSFVlKGQsZyxoKXtnJiZRQ2UoZC5wcm90b3R5cGUsZyksaCYmUUNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''LEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBFZWUoUFVlLEMpfX0se2tleToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlckJvdHRvbU92ZXJs''@;'; put 'put ''YXkiKX19LHtrZXk6InJlc2V0Rml4ZWRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5uZWVkRnVsbFJlbmRlcnx8IXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpcmV0dXJuITE7dmFyIHk9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEM9dGhpcy5jbG9u''@;'; put 'put ''ZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlO0Muc3R5bGUudG9wPSIiO3ZhciBJPTAsaj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7dGhpcy50cmltbWluZ0NvbnRhaW5lciE9PXl8fGomJiJ2ZXJ0aWNhbCI9PT1qPyhJPXRoaXMuZ2V0U2Nyb2xsUG9z''@;'; put 'put ''aXRpb24oKSx0aGlzLnJlcG9zaXRpb25PdmVybGF5KCkpOihJPXRoaXMuZ2V0T3ZlcmxheU9mZnNldCgpLEMuc3R5bGUuYm90dG9tPSIiLmNvbmNhdChJLCJweCIpKTt2YXIgY2U9dGhpcy5hZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24oSSk7cmV0dXJuIHRoaXMuYWRqdXN0RWxlbWVudHNT''@;'; put 'put ''aXplKCksY2V9fSx7a2V5OiJyZXBvc2l0aW9uT3ZlcmxheSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLndvdCxDPXkud3RUYWJsZSxJPXkud3RWaWV3cG9ydCxqPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LGNlPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9k''@;'; put 'put ''ZSxfZT0wO0kuaGFzVmVydGljYWxTY3JvbGwoKXx8KF9lKz1JLmdldFdvcmtzcGFjZUhlaWdodCgpLUMuZ2V0VG90YWxIZWlnaHQoKSksSS5oYXNWZXJ0aWNhbFNjcm9sbCgpJiZJLmhhc0hvcml6b250YWxTY3JvbGwoKSYmKF9lKz1QYyhqKSksY2Uuc3R5bGUuYm90dG9tPSIiLmNvbmNhdChf''@;'; put 'put ''ZSwicHgiKX19LHtrZXk6InNldFNjcm9sbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csST0hMTtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PUM/KEMuc2Nyb2xsVG8oSFMoQykseSksST0hMCk6dGhp''@;'; put 'put ''cy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3AhPT15JiYodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3A9eSxJPSEwKSxJfX0se2tleToib25TY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uU2Ny''@;'; put 'put ''b2xsSG9yaXpvbnRhbGx5Iil9fSx7a2V5OiJzdW1DZWxsU2l6ZXMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMud290LGo9SS53dFRhYmxlLF9lPUkud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0IiksUmU9eSxOZT0wO1JlPEM7KXt2YXIgS2U9ai5n''@;'; put 'put ''ZXRSb3dIZWlnaHQoUmUpO05lKz12b2lkIDA9PT1LZT9fZTpLZSxSZSs9MX1yZXR1cm4gTmV9fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlz''@;'; put 'put ''LnVwZGF0ZVRyaW1taW5nQ29udGFpbmVyKCksKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fHkpJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9fSx7a2V5OiJhZGp1c3RSb290RWxlbWVudFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHk9dGhpcy53b3QsQz15Lnd0VGFibGUsST15Lnd0Vmlld3BvcnQsaj10aGlzLmRvbUJpbmRpbmdzLF9lPWoucm9vdFdpbmRvdyxSZT1QYyhqLnJvb3REb2N1bWVudCksS2U9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLnN0eWxlLGh0PXRoaXMud3RTZXR0aW5ncy5nZXRT''@;'; put 'put ''ZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09X2V8fCJob3Jpem9udGFsIj09PWh0KXt2YXIgQnQ9SS5nZXRXb3Jrc3BhY2VXaWR0aCgpO3RoaXMud290Lnd0T3ZlcmxheXMuaGFzU2Nyb2xsYmFyUmlnaHQmJihCdC09UmUpLEJ0PU1hdGgubWlu''@;'; put 'put ''KEJ0LEMud3RSb290RWxlbWVudC5zY3JvbGxXaWR0aCksS2Uud2lkdGg9IiIuY29uY2F0KEJ0LCJweCIpfWVsc2UgS2Uud2lkdGg9IiI7dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5zdHlsZS53aWR0aD1LZS53aWR0aDt2YXIgJHQ9QjEodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKTt0aGlz''@;'; put 'put ''LndvdC53dFRhYmxlLmhhc0RlZmluZWRTaXplKCl8fCgkdD0wKSxLZS5oZWlnaHQ9IiIuY29uY2F0KCR0LCJweCIpfX0se2tleToiYWRqdXN0Um9vdENoaWxkcmVuU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyO3RoaXMuY2xvbmUud3RUYWJs''@;'; put 'put ''ZS5oaWRlci5zdHlsZS53aWR0aD10aGlzLmhpZGVyLnN0eWxlLndpZHRoLHkuc3R5bGUud2lkdGg9eS5wYXJlbnROb2RlLnN0eWxlLndpZHRoLHkuc3R5bGUuaGVpZ2h0PXkucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHR9fSx7a2V5OiJhcHBseVRvRE9NIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5''@;'; put 'put ''PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtpZigibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbil0aGlzLnNwcmVhZGVyLnN0eWxlLnRvcD0iIi5jb25jYXQodGhpcy53b3Qud3RWaWV3''@;'; put 'put ''cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uLCJweCIpO2Vsc2V7aWYoMCE9PXkpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgdmFsdWUgb2YgdGhlIHJvd3NSZW5kZXJDYWxjdWxhdG9yIik7dGhpcy5zcHJlYWRlci5zdHlsZS50b3A9IjAifXRoaXMuc3ByZWFkZXIu''@;'; put 'put ''c3R5bGUuYm90dG9tPSIiLHRoaXMubmVlZEZ1bGxSZW5kZXImJnRoaXMuc3luY092ZXJsYXlPZmZzZXQoKX19LHtrZXk6InN5bmNPdmVybGF5T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Ijt0aGlzLmNsb25lLnd0VGFibGUuc3ByZWFk''@;'; put 'put ''ZXIuc3R5bGVbeV09Im51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24/IiIuY29uY2F0KHRoaXMud290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKToiIn19''@;'; put 'put ''LHtrZXk6InNjcm9sbFRvIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSxjZT0odGhpcy53b3QuY2xvbmVTb3VyY2U/dGhpcy53b3QuY2xvbmVTb3VyY2U6dGhpcy53b3QpLnd0VGFibGUuaG9sZGVyLF9lPTA7QyYmY2Uub2Zmc2V0SGVpZ2h0''@;'; put 'put ''IT09Y2UuY2xpZW50SGVpZ2h0JiYoX2U9UGModGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSxDPyhJKz10aGlzLnN1bUNlbGxTaXplcygwLHkrMSksSS09dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydEhlaWdodCgpLEkrPTEpOkkrPXRoaXMuc3VtQ2VsbFNpemVzKHRoaXMu''@;'; put 'put ''d3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSx5KSx0aGlzLnNldFNjcm9sbFBvc2l0aW9uKEkrPV9lKX19LHtrZXk6ImdldFRhYmxlUGFyZW50T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09dGhp''@;'; put 'put ''cy5kb21CaW5kaW5ncy5yb290V2luZG93P3RoaXMud290Lnd0VGFibGUuaG9sZGVyT2Zmc2V0LnRvcDowfX0se2tleToiZ2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHN6KHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsdGhpcy5kb21CaW5kaW5ncy5y''@;'; put 'put ''b290V2luZG93KX19LHtrZXk6ImdldE92ZXJsYXlPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpLEk9MDtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVy''@;'; put 'put ''PT09eSYmKCFDfHwidmVydGljYWwiIT09Qykpe3ZhciBqPXRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKSxfZT1qLXRoaXMuY2xvbmUud3RUYWJsZS5nZXRUb3RhbEhlaWdodCgpLFJlPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRI''@;'; put 'put ''ZWlnaHQ7KEk9TWF0aC5tYXgodGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLXRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS1SZStqLDApKT5fZSYmKEk9MCl9cmV0dXJuIEl9fSx7a2V5OiJhZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMu''@;'; put 'put ''d3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxJPXRoaXMuY2FjaGVkRml4ZWRSb3dzQm90dG9tIT09QyxqPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIiksY2U9ITE7aWYoKEl8fDA9PT1DKSYmai5sZW5ndGg+MCl7dmFyIF9lPXRoaXMu''@;'; put 'put ''d290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsUmU9WGEoX2UsImlubmVyQm9yZGVyQm90dG9tIik7dGhpcy5jYWNoZWRGaXhlZFJvd3NCb3R0b209dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLHl8fDA9PT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGlu''@;'; put 'put ''ZygidG90YWxSb3dzIik/KFAwKF9lLCJpbm5lckJvcmRlckJvdHRvbSIpLGNlPSFSZSk6KHVsKF9lLCJpbm5lckJvcmRlckJvdHRvbSIpLGNlPVJlKX1yZXR1cm4gY2V9fV0pLGh9KGJ6KSxLQ2U9e2dldEZpcnN0UmVuZGVyZWRSb3c6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmRhdGFBY2Nlc3NP''@;'; put 'put ''YmplY3Quc3RhcnRSb3dSZW5kZXJlZDtyZXR1cm4gbnVsbD09PWc/LTE6Z30sZ2V0Rmlyc3RWaXNpYmxlUm93OmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Um93VmlzaWJsZTtyZXR1cm4gbnVsbD09PWc/LTE6Z30sZ2V0TGFzdFJlbmRlcmVkUm93OmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIGc9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZFJvd1JlbmRlcmVkO3JldHVybiBudWxsPT09Zz8tMTpnfSxnZXRMYXN0VmlzaWJsZVJvdzpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRSb3dWaXNpYmxlO3JldHVybiBudWxsPT09Zz8tMTpnfSxn''@;'; put 'put ''ZXRSZW5kZXJlZFJvd3NDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRSb3dzUmVuZGVyZWR9LGdldFZpc2libGVSb3dzQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Um93c1Zpc2libGV9fTtNZyhLQ2Us''@;'; put 'put ''Ik1JWElOX05BTUUiLCJjYWxjdWxhdGVkUm93cyIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCAkQ2U9S0NlO3ZhciBxQ2U9e2dldEZpcnN0UmVuZGVyZWRDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVt''@;'; put 'put ''bnMiKT8tMTowfSxnZXRGaXJzdFZpc2libGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCl9LGdldExhc3RSZW5kZXJlZENvbHVtbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCktMX0sZ2V0TGFzdFZp''@;'; put 'put ''c2libGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX0sZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIik7cmV0dXJuIE1hdGgubWluKHRoaXMu''@;'; put 'put ''d3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLGcpfSxnZXRWaXNpYmxlQ29sdW1uc0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKX19O01nKHFDZSwiTUlYSU5fTkFNRSIsInN0aWNreUNvbHVtbnNTdGFydCIse3dy''@;'; put 'put ''aXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCBMZGU9cUNlO2Z1bmN0aW9uIE9kZShkKXtyZXR1cm4oT2RlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gZWtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07''@;'; put 'put ''di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gUmRlKGQsZyl7cmV0dXJuKFJkZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2Jq''@;'; put 'put ''ZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFhVZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PU9kZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gS1VlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2Vk''@;'; put 'put ''IC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gSWVlKGQpe3JldHVybihJZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YoaCl9KShkKX12YXIgQmRlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBRVWUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24i''@;'; put 'put ''KTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmUmRlKGQsZyl9KGgsZCk7''@;'; put 'put ''dmFyIGc9ZnVuY3Rpb24gSlVlKGQpe3ZhciBnPWZ1bmN0aW9uICRVZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0''@;'; put 'put ''cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUllZShkKTtpZihnKXt2YXIgQz1JZWUodGhpcyku''@;'; put 'put ''Y29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFhVZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJKXtyZXR1cm4gZnVuY3Rpb24gVVVlKGQsZyl7aWYoIShkIGluc3RhbmNlb2Yg''@;'; put 'put ''ZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsdix5LEMsSSxqUyl9cmV0dXJuIGZ1bmN0aW9uIFlVZShkLGcsaCl7cmV0dXJuIGcmJmVrZShkLnByb3RvdHlwZSxnKSxoJiZla2UoZCxoKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfShoKX0oT08pO0kyKEJkZSwkQ2UpLEkyKEJkZSxMZGUpO2NvbnN0IHFVZT1CZGU7ZnVuY3Rpb24gUGRlKGQpe3JldHVybihQZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1m''@;'; put 'put ''dW5jdGlvbiBEZWUoZCxnLGgpe3JldHVybihEZWU9bmtlKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKHksQyxJKXt2YXIgaj1bbnVsbF07ai5wdXNoLmFwcGx5KGosQyk7dmFyIF9lPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KHksaikpO3JldHVybiBJJiZMZWUoX2UsSS5w''@;'; put 'put ''cm90b3R5cGUpLF9lfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHRrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJs''@;'; put 'put ''ZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIExlZShkLGcpe3JldHVybihMZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1m''@;'; put 'put ''dW5jdGlvbiBpUWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1QZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVk''@;'; put 'put ''Iik7cmV0dXJuIGZ1bmN0aW9uIG9RZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIG5rZSgpe2lmKCJ1bmRlZmlu''@;'; put 'put ''ZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0''@;'; put 'put ''cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBPZWUoZCl7cmV0dXJuKE9lZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9i''@;'; put 'put ''amVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBhUWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIG5RZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm''@;'; put 'put ''dW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZMZWUoZCxn''@;'; put 'put ''KX0oaCxkKTt2YXIgZz1mdW5jdGlvbiByUWUoZCl7dmFyIGc9bmtlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1PZWUoZCk7aWYoZyl7dmFyIEM9T2VlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpO3JldHVybiBpUWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7cmV0dXJuIGZ1bmN0aW9uIGVRZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgp''@;'; put 'put ''LGcuY2FsbCh0aGlzLHYseSxqUyxDLEkpfXJldHVybiBmdW5jdGlvbiB0UWUoZCxnLGgpe2cmJnRrZShkLnByb3RvdHlwZSxnKSxoJiZ0a2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiY3JlYXRlVGFibGUiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIERlZShxVWUsQyl9fSx7a2V5OiJzaG91bGRCZVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVySW5saW5lU3RhcnRPdmVybGF5Iil9fSx7a2V5OiJyZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMubmVlZEZ1bGxSZW5kZXJ8fCF0aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiExO3Zh''@;'; put 'put ''ciBDPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxJPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxqPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxjZT0wO3RoaXMudHJpbW1pbmdDb250YWluZXIhPT1DfHxqJiYiaG9yaXpvbnRh''@;'; put 'put ''bCI9PT1qPyhjZT10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksaHooSSkpOihjZT10aGlzLmdldE92ZXJsYXlPZmZzZXQoKSoodGhpcy5pc1J0bCgpPy0xOjEpLG9lZShJLCIiLmNvbmNhdChjZSwicHgiKSwiMHB4IikpO3ZhciBfZT10aGlzLmFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbihj''@;'; put 'put ''ZSk7cmV0dXJuIHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCksX2V9fSx7a2V5OiJzZXRTY3JvbGxQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEk9ITE7cmV0dXJuIHRoaXMuaXNSdGwoKSYmKHk9LXkpLHRoaXMubWFpblRhYmxl''@;'; put 'put ''U2Nyb2xsYWJsZUVsZW1lbnQ9PT1DJiZDLnNjcm9sbFghPT15PyhDLnNjcm9sbFRvKHksRU8oQykpLEk9ITApOnRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsTGVmdCE9PXkmJih0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQ9eSxJPSEwKSxJ''@;'; put 'put ''fX0se2tleToib25TY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uU2Nyb2xsVmVydGljYWxseSIpfX0se2tleToic3VtQ2VsbFNpemVzIix2YWx1ZTpmdW5jdGlvbih5LEMpe2Zvcih2YXIgST10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygi''@;'; put 'put ''ZGVmYXVsdENvbHVtbldpZHRoIiksaj15LGNlPTA7ajxDOyljZSs9dGhpcy53b3Qud3RUYWJsZS5nZXRTdHJldGNoZWRDb2x1bW5XaWR0aChqKXx8SSxqKz0xO3JldHVybiBjZX19LHtrZXk6ImFkanVzdEVsZW1lbnRzU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3RoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwodGhpcy5uZWVkRnVsbFJlbmRlcnx8eSkmJih0aGlzLmFkanVzdFJvb3RFbGVtZW50U2l6ZSgpLHRoaXMuYWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpKX19LHtr''@;'; put 'put ''ZXk6ImFkanVzdFJvb3RFbGVtZW50U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLndvdC53dFRhYmxlLEM9dGhpcy5kb21CaW5kaW5ncyxqPUMucm9vdFdpbmRvdyxjZT1QYyhDLnJvb3REb2N1bWVudCksUmU9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLnN0''@;'; put 'put ''eWxlLE5lPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09anx8InZlcnRpY2FsIj09PU5lKXt2YXIgS2U9dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VIZWlnaHQoKTt0aGlzLndvdC53dE92ZXJs''@;'; put 'put ''YXlzLmhhc1Njcm9sbGJhckJvdHRvbSYmKEtlLT1jZSksS2U9TWF0aC5taW4oS2UseS53dFJvb3RFbGVtZW50LnNjcm9sbEhlaWdodCksUmUuaGVpZ2h0PSIiLmNvbmNhdChLZSwicHgiKX1lbHNlIFJlLmhlaWdodD0iIjt0aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnN0eWxlLmhlaWdodD1S''@;'; put 'put ''ZS5oZWlnaHQ7dmFyIGh0PXcyKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7UmUud2lkdGg9IiIuY29uY2F0KGh0LCJweCIpfX0se2tleToiYWRqdXN0Um9vdENoaWxkcmVuU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSxDPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIsST10aGlzLndv''@;'; put 'put ''dC5zZWxlY3Rpb25zLGo9dGhpcy5mYWNhZGVHZXR0ZXIoKSxjZT1NYXRoLmFicyhudWxsIT09KHk9bnVsbD09ST92b2lkIDA6SS5nZXRDZWxsKCkuZ2V0Qm9yZGVyKGopLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0KSYmdm9pZCAwIT09eT95OjApO3RoaXMuY2xvbmUud3RUYWJsZS5oaWRlci5z''@;'; put 'put ''dHlsZS5oZWlnaHQ9dGhpcy5oaWRlci5zdHlsZS5oZWlnaHQsQy5zdHlsZS5oZWlnaHQ9Qy5wYXJlbnROb2RlLnN0eWxlLmhlaWdodCxDLnN0eWxlLndpZHRoPSIiLmNvbmNhdChwYXJzZUludChDLnBhcmVudE5vZGUuc3R5bGUud2lkdGgsMTApK2NlLCJweCIpfX0se2tleToiYXBwbHlUb0RP''@;'; put 'put ''TSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksQz10aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVmdCI7aWYoIm51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0''@;'; put 'put ''YXJ0UG9zaXRpb24pdGhpcy5zcHJlYWRlci5zdHlsZVtDXT0iIi5jb25jYXQodGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uLCJweCIpO2Vsc2V7aWYoMCE9PXkpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgdmFsdWUgb2YgdGhlIGNv''@;'; put 'put ''bHVtbnNSZW5kZXJDYWxjdWxhdG9yIik7dGhpcy5zcHJlYWRlci5zdHlsZVtDXT0iMCJ9dGhpcy5pc1J0bCgpP3RoaXMuc3ByZWFkZXIuc3R5bGUubGVmdD0iIjp0aGlzLnNwcmVhZGVyLnN0eWxlLnJpZ2h0PSIiLHRoaXMubmVlZEZ1bGxSZW5kZXImJnRoaXMuc3luY092ZXJsYXlPZmZzZXQo''@;'; put 'put ''KX19LHtrZXk6InN5bmNPdmVybGF5T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xvbmUud3RUYWJsZS5zcHJlYWRlci5zdHlsZS50b3A9Im51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24/IiIuY29uY2F0''@;'; put 'put ''KHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKToiIn19LHtrZXk6InNjcm9sbFRvIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSxjZT0odGhpcy53b3QuY2xvbmVTb3VyY2U/dGhp''@;'; put 'put ''cy53b3QuY2xvbmVTb3VyY2U6dGhpcy53b3QpLnd0VGFibGUuaG9sZGVyLF9lPTA7cmV0dXJuIEMmJnRoaXMud290Lnd0VGFibGUuZ2V0Q29sdW1uV2lkdGgoeSk+dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCkmJihDPSExKSxDJiZjZS5vZmZzZXRXaWR0aCE9PWNlLmNs''@;'; put 'put ''aWVudFdpZHRoJiYoX2U9UGModGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSxDPyhJKz10aGlzLnN1bUNlbGxTaXplcygwLHkrMSksSS09dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCkpOkkrPXRoaXMuc3VtQ2VsbFNpemVzKHRoaXMud3RTZXR0aW5ncy5nZXRT''@;'; put 'put ''ZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLHkpLHRoaXMuc2V0U2Nyb2xsUG9zaXRpb24oSSs9X2UpfX0se2tleToiZ2V0VGFibGVQYXJlbnRPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEM9MDtyZXR1cm4hdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxv''@;'; put 'put ''dyIpJiZ0aGlzLnRyaW1taW5nQ29udGFpbmVyPT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93JiYoQz10aGlzLndvdC53dFRhYmxlLmhvbGRlck9mZnNldC5sZWZ0KSxDfX0se2tleToiZ2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguYWJzKHJlZSh0''@;'; put 'put ''aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdykpfX0se2tleToiZ2V0T3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csQz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGlu''@;'; put 'put ''ZygicHJldmVudE92ZXJmbG93IiksST0wO3JldHVybiB0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09eXx8QyYmImhvcml6b250YWwiPT09Q3x8KEk9dGhpcy5pc1J0bCgpP01hdGguYWJzKE1hdGgubWluKHRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKS10aGlzLmdldFNjcm9sbFBvc2l0aW9u''@;'; put 'put ''KCksMCkpOk1hdGgubWF4KHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCksMCkpPnRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxXaWR0aCgpLXRoaXMuY2xvbmUud3RUYWJsZS5nZXRUb3RhbFdpZHRoKCkmJihJPTApLEl9fSx7a2V5OiJhZGp1c3RI''@;'; put 'put ''ZWFkZXJCb3JkZXJzUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsST10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLGo9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1u''@;'; put 'put ''c1N0YXJ0Iik7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpP3VsKEMsImVtcHR5Um93cyIpOlAwKEMsImVtcHR5Um93cyIpO3ZhciBfZT0hMTtpZihqJiYhSS5sZW5ndGgpUDAoQywiaW5uZXJCb3JkZXJMZWZ0IGlubmVyQm9yZGVySW5saW5lU3RhcnQiKTtlbHNlIGlm''@;'; put 'put ''KCFqJiZJLmxlbmd0aCl7dmFyIFJlPVhhKEMsImlubmVyQm9yZGVySW5saW5lU3RhcnQiKTt5PyhQMChDLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpLF9lPSFSZSk6KHVsKEMsImlubmVyQm9yZGVyTGVmdCBpbm5lckJvcmRlcklubGluZVN0YXJ0IiksX2U9UmUp''@;'; put 'put ''fXJldHVybiBfZX19XSksaH0oYnopO2Z1bmN0aW9uIEZkZShkKXtyZXR1cm4oRmRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gcmtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51''@;'; put 'put ''bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSGRlKGQsZyl7cmV0dXJuKEhkZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''LmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGZRZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PUZkZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVy''@;'; put 'put ''aXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gaFFlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg''@;'; put 'put ''YmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gUmVlKGQpe3JldHVybihSZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShk''@;'; put 'put ''KX12YXIgTmRlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiB1UWUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmpl''@;'; put 'put ''Y3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSGRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gY1Fl''@;'; put 'put ''KGQpe3ZhciBnPWZ1bmN0aW9uIGRRZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4u''@;'; put 'put ''cHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVJlZShkKTtpZihnKXt2YXIgQz1SZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZRZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJKXtyZXR1cm4gZnVuY3Rpb24gc1FlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsdix5LEMsSSxaUyl9cmV0dXJuIGZ1bmN0aW9uIGxRZShkLGcsaCl7cmV0dXJuIGcmJnJrZShkLnByb3RvdHlwZSxnKSxoJiZya2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfShoKX0oT08pO0kyKE5kZSx4Q2UpLEkyKE5kZSxMZGUpO2NvbnN0IHBRZT1OZGU7ZnVuY3Rpb24gVmRlKGQpe3JldHVybihWZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBCZWUoZCxnLGgp''@;'; put 'put ''e3JldHVybihCZWU9b2tlKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKHksQyxJKXt2YXIgaj1bbnVsbF07ai5wdXNoLmFwcGx5KGosQyk7dmFyIF9lPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KHksaikpO3JldHVybiBJJiZQZWUoX2UsSS5wcm90b3R5cGUpLF9lfSkuYXBw''@;'; put 'put ''bHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGlrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFBlZShkLGcpe3JldHVybihQZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiB5UWUoZCxnKXtp''@;'; put 'put ''ZihnJiYoIm9iamVjdCI9PT1WZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGpkZShkKX1m''@;'; put 'put ''dW5jdGlvbiBqZGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIG9rZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVm''@;'; put 'put ''bGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtd''@;'; put 'put ''LGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBGZWUoZCl7cmV0dXJuKEZlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5''@;'; put 'put ''cGVPZihoKX0pKGQpfWZ1bmN0aW9uIGFrZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIHdRZT1mdW5jdGlvbihkKXshZnVuY3Rpb24g''@;'; put 'put ''dlFlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3Ry''@;'; put 'put ''dWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlBlZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEFRZShkKXt2YXIgZz1va2UoKTtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeSx2PUZlZShkKTtpZihnKXt2YXIgQz1GZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHlRZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJLGosY2Up''@;'; put 'put ''e3ZhciBfZTtyZXR1cm4gZnVuY3Rpb24gZ1FlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksYWtlKGpkZShfZT1nLmNhbGwodGhpcyx2LHksWlMsQyxJKSksInRvcE92ZXJs''@;'; put 'put ''YXkiLHZvaWQgMCksYWtlKGpkZShfZSksImlubGluZVN0YXJ0T3ZlcmxheSIsdm9pZCAwKSxfZS50b3BPdmVybGF5PWosX2UuaW5saW5lU3RhcnRPdmVybGF5PWNlLF9lfXJldHVybiBmdW5jdGlvbiBtUWUoZCxnLGgpe2cmJmlrZShkLnByb3RvdHlwZSxnKSxoJiZpa2UoZCxoKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiY3JlYXRlVGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIEJl''@;'; put 'put ''ZShwUWUsQyl9fSx7a2V5OiJzaG91bGRCZVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVyVG9wT3ZlcmxheSIpJiZ0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVySW5saW5lU3RhcnRP''@;'; put 'put ''dmVybGF5Iil9fSx7a2V5OiJyZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy51cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpLCF0aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiExO3ZhciB5PXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIu''@;'; put 'put ''cGFyZW50Tm9kZTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyPT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93KXt2YXIgQz10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRPdmVybGF5T2Zmc2V0KCkqKHRoaXMuaXNSdGwoKT8tMToxKSxJPXRoaXMudG9wT3ZlcmxheS5nZXRPdmVybGF5''@;'; put 'put ''T2Zmc2V0KCk7b2VlKHksIiIuY29uY2F0KEMsInB4IiksIiIuY29uY2F0KEksInB4IikpfWVsc2UgaHooeSk7dmFyIGo9QjEodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKSxjZT13Mih0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO3JldHVybiB0aGlzLndvdC53dFRhYmxlLmhhc0RlZmluZWRT''@;'; put 'put ''aXplKCl8fChqPTApLHkuc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdChqLCJweCIpLHkuc3R5bGUud2lkdGg9IiIuY29uY2F0KGNlLCJweCIpLCExfX1dKSxofShieik7ZnVuY3Rpb24gWmRlKGQpe3JldHVybihaZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5j''@;'; put 'put ''dGlvbiBsa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1m''@;'; put 'put ''dW5jdGlvbiB6ZGUoZCxnKXtyZXR1cm4oemRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gU1FlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09WmRlKGcp''@;'; put 'put ''fHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBNUWUoZCl7aWYodm9pZCAwPT09ZCl0''@;'; put 'put ''aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBIZWUoZCl7cmV0dXJuKEhlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlw''@;'; put 'put ''ZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBHZGU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIENRZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZ6ZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBrUWUoZCl7dmFyIGc9ZnVuY3Rpb24gRVFlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SGVlKGQpO2lmKGcpe3ZhciBDPUhlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gU1FlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBo''@;'; put 'put ''KHYseSxDLEkpe3JldHVybiBmdW5jdGlvbiBfUWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyx2LHksQyxJLEZ3KX1yZXR1cm4gZnVuY3Rpb24gYlFl''@;'; put 'put ''KGQsZyxoKXtyZXR1cm4gZyYmbGtlKGQucHJvdG90eXBlLGcpLGgmJmxrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9KGgpfShPTyk7STIoR2RlLFlDZSksSTIoR2RlLExkZSk7Y29uc3QgeFFlPUdkZTtmdW5jdGlvbiBXZGUoZCl7''@;'; put 'put ''cmV0dXJuKFdkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIE5lZShkLGcsaCl7cmV0dXJuKE5lZT11a2UoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPVtudWxsXTtqLnB1c2guYXBwbHkoaixDKTt2YXIg''@;'; put 'put ''X2U9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoeSxqKSk7cmV0dXJuIEkmJlZlZShfZSxJLnByb3RvdHlwZSksX2V9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gc2tlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51''@;'; put 'put ''bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gVmVlKGQsZyl7cmV0dXJuKFZlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''LmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIE9RZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PVdkZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVy''@;'; put 'put ''aXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gUlFlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg''@;'; put 'put ''YmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gdWtlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3Ry''@;'; put 'put ''eXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fWZ1bmN0aW9uIGplZShkKXtyZXR1cm4oamVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEJRZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gRFFlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlZlZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIExRZShkKXt2YXIgZz11a2UoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWplZShkKTtpZihnKXt2YXIgQz1qZWUodGhpcykuY29uc3RydWN0b3I7eT1S''@;'; put 'put ''ZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIE9RZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJLGosY2Upe3ZhciBfZTtyZXR1cm4gZnVuY3Rpb24gVFFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKF9lPWcuY2FsbCh0aGlzLHYseSxGdyxDLEkpKS5ib3R0b21PdmVybGF5PWosX2UuaW5saW5lU3RhcnRPdmVybGF5PWNlLF9lfXJldHVybiBmdW5jdGlvbiBJUWUoZCxnLGgp''@;'; put 'put ''e2cmJnNrZShkLnByb3RvdHlwZSxnKSxoJiZza2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiY3JlYXRlVGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXko''@;'; put 'put ''eSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIE5lZSh4UWUsQyl9fSx7a2V5OiJzaG91bGRCZVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVyQm90dG9tT3ZlcmxheSIpJiZ0aGlzLnd0''@;'; put 'put ''U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVySW5saW5lU3RhcnRPdmVybGF5Iil9fSx7a2V5OiJyZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy53b3Q7aWYodGhpcy51cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpLCF5Lnd0VGFibGUuaG9sZGVy''@;'; put 'put ''LnBhcmVudE5vZGUpcmV0dXJuITE7dmFyIEM9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlO2lmKEMuc3R5bGUudG9wPSIiLHRoaXMudHJpbW1pbmdDb250YWluZXI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cpe3ZhciBJPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5''@;'; put 'put ''LmdldE92ZXJsYXlPZmZzZXQoKSxqPXRoaXMuYm90dG9tT3ZlcmxheS5nZXRPdmVybGF5T2Zmc2V0KCk7Qy5zdHlsZVt0aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVmdCJdPSIiLmNvbmNhdChJLCJweCIpLEMuc3R5bGUuYm90dG9tPSIiLmNvbmNhdChqLCJweCIpfWVsc2UgaHooQyksdGhpcy5y''@;'; put 'put ''ZXBvc2l0aW9uT3ZlcmxheSgpO3ZhciBjZT1CMSh0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpLF9lPXcyKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7cmV0dXJuIHRoaXMud290Lnd0VGFibGUuaGFzRGVmaW5lZFNpemUoKXx8KGNlPTApLEMuc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdChjZSwi''@;'; put 'put ''cHgiKSxDLnN0eWxlLndpZHRoPSIiLmNvbmNhdChfZSwicHgiKSwhMX19LHtrZXk6InJlcG9zaXRpb25PdmVybGF5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMud290LEM9eS53dFRhYmxlLEk9eS53dFZpZXdwb3J0LGo9dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQsY2U9dGhp''@;'; put 'put ''cy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLF9lPTA7SS5oYXNWZXJ0aWNhbFNjcm9sbCgpfHwoX2UrPUkuZ2V0V29ya3NwYWNlSGVpZ2h0KCktQy5nZXRUb3RhbEhlaWdodCgpKSxJLmhhc1ZlcnRpY2FsU2Nyb2xsKCkmJkkuaGFzSG9yaXpvbnRhbFNjcm9sbCgpJiYoX2UrPVBj''@;'; put 'put ''KGopKSxjZS5zdHlsZS5ib3R0b209IiIuY29uY2F0KF9lLCJweCIpfX1dKSxofShieik7ZnVuY3Rpb24gSHcoZCxnLGgpe3JldHVybihIdz1QUWUoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPVtudWxsXTtqLnB1c2guYXBwbHkoaixDKTt2YXIgX2U9''@;'; put 'put ''bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoeSxqKSk7cmV0dXJuIEkmJllkZShfZSxJLnByb3RvdHlwZSksX2V9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUFFlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9''@;'; put 'put ''fWZ1bmN0aW9uIFlkZShkLGcpe3JldHVybihZZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBja2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3Ro''@;'; put 'put ''O2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBOdyhkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIE5RZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoLHYseSxDLEkpeyhmdW5jdGlvbiBGUWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBn''@;'; put 'put ''KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksTncodGhpcywid290IixudWxsKSxOdyh0aGlzLCJ0b3BPdmVybGF5IixudWxsKSxOdyh0aGlzLCJib3R0b21PdmVybGF5IixudWxsKSxOdyh0aGlzLCJpbmxpbmVTdGFy''@;'; put 'put ''dE92ZXJsYXkiLG51bGwpLE53KHRoaXMsInRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSIsbnVsbCksTncodGhpcywiYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5IixudWxsKSxOdyh0aGlzLCJicm93c2VyTGluZUhlaWdodCIsdm9pZCAwKSxOdyh0aGlzLCJ3dFNldHRpbmdzIixu''@;'; put 'put ''dWxsKSx0aGlzLndvdD1nLHRoaXMud3RTZXR0aW5ncz15LHRoaXMuZG9tQmluZGluZ3M9dix0aGlzLmZhY2FkZUdldHRlcj1oLHRoaXMud3RUYWJsZT1JO3ZhciBqPXRoaXMuZG9tQmluZGluZ3MsY2U9ai5yb290RG9jdW1lbnQsX2U9ai5yb290V2luZG93O3RoaXMuaW5zdGFuY2U9dGhpcy53''@;'; put 'put ''b3QsdGhpcy5ldmVudE1hbmFnZXI9Qyx0aGlzLnNjcm9sbGJhclNpemU9UGMoY2UpO3ZhciBSZT0iaGlkZGVuIj09PV9lLmdldENvbXB1dGVkU3R5bGUoSS53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUpLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iik7dGhpcy5zY3JvbGxhYmxlRWxlbWVu''@;'; put 'put ''dD1SZT9JLmhvbGRlcjp1eihJLlRBQkxFKSx0aGlzLmluaXRPdmVybGF5cygpLHRoaXMuaGFzU2Nyb2xsYmFyQm90dG9tPSExLHRoaXMuaGFzU2Nyb2xsYmFyUmlnaHQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5rZXlQcmVzc2VkPSExLHRoaXMuc3ByZWFkZXJMYXN0U2l6ZT17d2lkdGg6''@;'; put 'put ''bnVsbCxoZWlnaHQ6bnVsbH0sdGhpcy52ZXJ0aWNhbFNjcm9sbGluZz0hMSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9ITEsdGhpcy5pbml0QnJvd3NlckxpbmVIZWlnaHQoKSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCksdGhpcy5sYXN0U2Nyb2xsWD1fZS5zY3JvbGxYLHRoaXMubGFzdFNj''@;'; put 'put ''cm9sbFk9X2Uuc2Nyb2xsWX1yZXR1cm4gZnVuY3Rpb24gSFFlKGQsZyxoKXtnJiZja2UoZC5wcm90b3R5cGUsZyksaCYmY2tlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImluaXRCcm93c2VyTGluZUhlaWdodCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmRvbUJpbmRpbmdzLEM9aC5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUoaC5yb290RG9jdW1lbnQuYm9keSksST1wYXJzZUludChDLmxpbmVIZWlnaHQsMTApLGo9MS4yKnBhcnNlSW50KEMuZm9udFNpemUsMTApO3RoaXMuYnJvd3NlckxpbmVI''@;'; put 'put ''ZWlnaHQ9SXx8an19LHtrZXk6ImluaXRPdmVybGF5cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1bdGhpcy53b3QsdGhpcy5mYWNhZGVHZXR0ZXIsdGhpcy53dFNldHRpbmdzLHRoaXMuZG9tQmluZGluZ3NdO3RoaXMudG9wT3ZlcmxheT1IdyhFVWUsaCksdGhpcy5ib3R0b21PdmVybGF5PUh3''@;'; put 'put ''KHpVZSxoKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheT1IdyhhUWUsaCksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXk9SHcod1FlLGguY29uY2F0KFt0aGlzLnRvcE92ZXJsYXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXldKSksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92''@;'; put 'put ''ZXJsYXk9SHcoQlFlLGguY29uY2F0KFt0aGlzLmJvdHRvbU92ZXJsYXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXldKSl9fSx7a2V5OiJ1cGRhdGVTdGF0ZU9mUmVuZGVyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMudG9wT3ZlcmxheS51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCk7''@;'; put 'put ''cmV0dXJuIGg9dGhpcy5ib3R0b21PdmVybGF5LnVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoKXx8aCxoPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5LnVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoKXx8aCx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKHRoaXMudG9wT3Zlcmxh''@;'; put 'put ''eS5uZWVkRnVsbFJlbmRlciYmKGg9dGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpfHxoKSx0aGlzLmJvdHRvbU92ZXJsYXkubmVlZEZ1bGxSZW5kZXImJihoPXRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnVwZGF0ZVN0''@;'; put 'put ''YXRlT2ZSZW5kZXJpbmcoKXx8aCkpLGh9fSx7a2V5OiJyZWZyZXNoQWxsIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMud290LmRyYXduKXtpZighdGhpcy53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiB2b2lkIHRoaXMuZGVzdHJveSgpO3RoaXMud290LmRyYXcoITApLHRoaXMu''@;'; put 'put ''dmVydGljYWxTY3JvbGxpbmcmJnRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm9uU2Nyb2xsKCksdGhpcy5ob3Jpem9udGFsU2Nyb2xsaW5nJiZ0aGlzLnRvcE92ZXJsYXkub25TY3JvbGwoKSx0aGlzLnZlcnRpY2FsU2Nyb2xsaW5nPSExLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZz0hMX19fSx7''@;'; put 'put ''a2V5OiJyZWdpc3Rlckxpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9dGhpcy5kb21CaW5kaW5ncyx5PXYucm9vdERvY3VtZW50LEM9di5yb290V2luZG93LEk9dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LGo9dGhpcy5pbmxpbmVTdGFy''@;'; put 'put ''dE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih5LmRvY3VtZW50RWxlbWVudCwia2V5ZG93biIsZnVuY3Rpb24oQnQpe3JldHVybiBoLm9uS2V5RG93bihCdCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKHkuZG9jdW1lbnRFbGVtZW50LCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbktleVVwKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHksInZpc2liaWxpdHljaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25LZXlVcCgpfSksdGhpcy5ldmVudE1h''@;'; put 'put ''bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLCJzY3JvbGwiLGZ1bmN0aW9uKEJ0KXtyZXR1cm4gaC5vblRhYmxlU2Nyb2xsKEJ0KX0se3Bhc3NpdmU6ITB9KSxJIT09aiYmdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihqLCJzY3JvbGwiLGZ1bmN0aW9uKEJ0KXtyZXR1cm4gaC5v''@;'; put 'put ''blRhYmxlU2Nyb2xsKEJ0KX0se3Bhc3NpdmU6ITB9KTt2YXIgaHQsY2U9Qy5kZXZpY2VQaXhlbFJhdGlvJiZDLmRldmljZVBpeGVsUmF0aW8+MSxfZT10aGlzLnNjcm9sbGFibGVFbGVtZW50PT09QyxSZT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudFdoZWVsIiksTmU9e3Bh''@;'; put 'put ''c3NpdmU6X2V9OyhSZXx8Y2V8fCFKYmUoKSkmJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQsIndoZWVsIixmdW5jdGlvbihCdCl7cmV0dXJuIGgub25DbG9uZVdoZWVsKEJ0LFJlKX0sTmUpLFt0aGlzLnRvcE92ZXJsYXksdGhp''@;'; put 'put ''cy5ib3R0b21PdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LHRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XS5mb3JFYWNoKGZ1bmN0aW9uKEJ0KXtCdCYmQnQubmVlZEZ1bGxSZW5kZXImJmguZXZlbnRNYW5h''@;'; put 'put ''Z2VyLmFkZEV2ZW50TGlzdGVuZXIoQnQuY2xvbmUud3RUYWJsZS5ob2xkZXIsIndoZWVsIixmdW5jdGlvbihobil7cmV0dXJuIGgub25DbG9uZVdoZWVsKGhuLFJlKX0sTmUpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJyZXNpemUiLGZ1bmN0aW9uKCl7Y2xlYXJU''@;'; put 'put ''aW1lb3V0KGh0KSxodD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uV2luZG93UmVzaXplIil9LDIwMCl9KX19LHtrZXk6ImRlcmVnaXN0ZXJMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ldmVudE1hbmFnZXIuY2xlYXJFdmVudHMoITAp''@;'; put 'put ''fX0se2tleToib25UYWJsZVNjcm9sbCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LHk9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsQz10aGlzLnRvcE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJs''@;'; put 'put ''ZUVsZW1lbnQsST1oLnRhcmdldDt0aGlzLmtleVByZXNzZWQmJihDIT09diYmSSE9PXYmJiFoLnRhcmdldC5jb250YWlucyhDKXx8eSE9PXYmJkkhPT12JiYhaC50YXJnZXQuY29udGFpbnMoeSkpfHx0aGlzLnN5bmNTY3JvbGxQb3NpdGlvbnMoaCl9fSx7a2V5OiJvbkNsb25lV2hlZWwiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEM9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsST10aGlzLnRvcE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsaj1oLnRhcmdldCxjZT1J''@;'; put 'put ''IT09eSYmaiE9PXkmJiFqLmNvbnRhaW5zKEkpLF9lPUMhPT15JiZqIT09eSYmIWouY29udGFpbnMoQyk7aWYoIXRoaXMua2V5UHJlc3NlZHx8IWNlJiYhX2Upe3ZhciBSZT10aGlzLnRyYW5zbGF0ZU1vdXNlV2hlZWxUb1Njcm9sbChoKTsodnx8dGhpcy5zY3JvbGxhYmxlRWxlbWVudCE9PXkm''@;'; put 'put ''JlJlKSYmaC5wcmV2ZW50RGVmYXVsdCgpfX19LHtrZXk6Im9uS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5rZXlQcmVzc2VkPVRPKGgua2V5Q29kZSwiQVJST1dfVVB8QVJST1dfUklHSFR8QVJST1dfRE9XTnxBUlJPV19MRUZUIil9fSx7a2V5OiJvbktleVVwIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3RoaXMua2V5UHJlc3NlZD0hMX19LHtrZXk6InRyYW5zbGF0ZU1vdXNlV2hlZWxUb1Njcm9sbCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aXNOYU4oaC5kZWx0YVkpPy0xKmgud2hlZWxEZWx0YVk6aC5kZWx0YVkseT1pc05hTihoLmRlbHRhWCk/LTEqaC53aGVlbERlbHRhWDpo''@;'; put 'put ''LmRlbHRhWDsxPT09aC5kZWx0YU1vZGUmJih5Kz15KnRoaXMuYnJvd3NlckxpbmVIZWlnaHQsdis9dip0aGlzLmJyb3dzZXJMaW5lSGVpZ2h0KTt2YXIgQz10aGlzLnNjcm9sbFZlcnRpY2FsbHkodiksST10aGlzLnNjcm9sbEhvcml6b250YWxseSh5KTtyZXR1cm4gQ3x8SX19LHtrZXk6InNj''@;'; put 'put ''cm9sbFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wO3JldHVybiB0aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcCs9aCx2IT09dGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3B9fSx7a2V5OiJzY3Jv''@;'; put 'put ''bGxIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsTGVmdDtyZXR1cm4gdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0Kz1oLHYhPT10aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnR9fSx7a2V5OiJz''@;'; put 'put ''eW5jU2Nyb2xsUG9zaXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmRlc3Ryb3llZCl7dmFyIGg9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LHY9dGhpcy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuaG9sZGVyLHk9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RU''@;'; put 'put ''YWJsZS5ob2xkZXIsQz1bdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0LHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wXSxJPUNbMF0saj1DWzFdO2lmKHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZz12LnNjcm9sbExlZnQhPT1JfHx0aGlzLmxhc3RTY3JvbGxYIT09aC5z''@;'; put 'put ''Y3JvbGxYLHRoaXMudmVydGljYWxTY3JvbGxpbmc9eS5zY3JvbGxUb3AhPT1qfHx0aGlzLmxhc3RTY3JvbGxZIT09aC5zY3JvbGxZLHRoaXMubGFzdFNjcm9sbFg9aC5zY3JvbGxYLHRoaXMubGFzdFNjcm9sbFk9aC5zY3JvbGxZLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZyl7di5zY3JvbGxM''@;'; put 'put ''ZWZ0PUk7dmFyIGNlPXRoaXMuYm90dG9tT3ZlcmxheS5uZWVkRnVsbFJlbmRlcj90aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXI6bnVsbDtjZSYmKGNlLnNjcm9sbExlZnQ9SSl9dGhpcy52ZXJ0aWNhbFNjcm9sbGluZyYmKHkuc2Nyb2xsVG9wPWopLHRoaXMucmVmcmVz''@;'; put 'put ''aEFsbCgpfX19LHtrZXk6InN5bmNTY3JvbGxXaXRoTWFzdGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMudG9wT3ZlcmxheS5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCx2PWguc2Nyb2xsTGVmdCx5PWguc2Nyb2xsVG9wO3RoaXMudG9wT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYm''@;'; put 'put ''KHRoaXMudG9wT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5zY3JvbGxMZWZ0PXYpLHRoaXMuYm90dG9tT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5zY3JvbGxMZWZ0PXYpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5''@;'; put 'put ''Lm5lZWRGdWxsUmVuZGVyJiYodGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXIuc2Nyb2xsVG9wPXkpfX0se2tleToidXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRlcmVnaXN0ZXJMaXN0ZW5lcnMoKSx0aGlzLmlu''@;'; put 'put ''bGluZVN0YXJ0T3ZlcmxheS51cGRhdGVNYWluU2Nyb2xsYWJsZUVsZW1lbnQoKSx0aGlzLnRvcE92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCksdGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmJvdHRvbU92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFi''@;'; put 'put ''bGVFbGVtZW50KCk7dmFyIGg9dGhpcy53dFRhYmxlO3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnQ9ImhpZGRlbiI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShoLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3ci''@;'; put 'put ''KT9oLmhvbGRlcjp1eihoLlRBQkxFKSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLnRvcE92ZXJsYXkuZGVzdHJveSgpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhp''@;'; put 'put ''cy5ib3R0b21PdmVybGF5LmRlc3Ryb3koKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5kZXN0cm95KCksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVy''@;'; put 'put ''T3ZlcmxheSYmdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3llZD0hMH19LHtrZXk6InJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx2PXRoaXMud3RUYWJsZS5zcHJlYWRlcix5PXYuY2xpZW50V2lkdGgsQz12LmNsaWVudEhlaWdodDsoeSE9PXRoaXMuc3ByZWFkZXJMYXN0U2l6ZS53aWR0aHx8QyE9PXRoaXMuc3ByZWFkZXJMYXN0U2l6ZS5o''@;'; put 'put ''ZWlnaHQpJiYodGhpcy5zcHJlYWRlckxhc3RTaXplLndpZHRoPXksdGhpcy5zcHJlYWRlckxhc3RTaXplLmhlaWdodD1DLHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCkpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhpcy5ib3R0b21PdmVybGF5LnJlZnJlc2goaCksdGhpcy5pbmxpbmVT''@;'; put 'put ''dGFydE92ZXJsYXkucmVmcmVzaChoKSx0aGlzLnRvcE92ZXJsYXkucmVmcmVzaChoKSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkucmVmcmVzaChoKSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYm''@;'; put 'put ''dGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlZnJlc2goaCl9fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx2PXRoaXMud290Lnd0Vmlld3BvcnQseT10aGlzLnd0VGFibGUsQz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksST10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiksaj12LmdldFJv''@;'; put 'put ''d0hlYWRlcldpZHRoKCksY2U9di5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKSxfZT15LmhpZGVyLnN0eWxlO2lmKF9lLndpZHRoPSIiLmNvbmNhdChqK3RoaXMuaW5saW5lU3RhcnRPdmVybGF5LnN1bUNlbGxTaXplcygwLEMpLCJweCIpLF9lLmhlaWdodD0iIi5jb25jYXQoY2UrdGhpcy50b3BP''@;'; put 'put ''dmVybGF5LnN1bUNlbGxTaXplcygwLEkpKzEsInB4IiksdGhpcy5zY3JvbGxiYXJTaXplPjApe3ZhciBSZT15Lnd0Um9vdEVsZW1lbnQsTmU9UmUuc2Nyb2xsSGVpZ2h0LEtlPVJlLnNjcm9sbFdpZHRoLGh0PXkuaG9sZGVyLEJ0PWh0LnNjcm9sbEhlaWdodCwkdD1odC5zY3JvbGxXaWR0aDt0''@;'; put 'put ''aGlzLmhhc1Njcm9sbGJhclJpZ2h0PU5lPEJ0LHRoaXMuaGFzU2Nyb2xsYmFyQm90dG9tPUtlPCR0LHRoaXMuaGFzU2Nyb2xsYmFyUmlnaHQmJnkuaGlkZXIuc2Nyb2xsV2lkdGgrdGhpcy5zY3JvbGxiYXJTaXplPktlP3RoaXMuaGFzU2Nyb2xsYmFyQm90dG9tPSEwOnRoaXMuaGFzU2Nyb2xs''@;'; put 'put ''YmFyQm90dG9tJiZ5LmhpZGVyLnNjcm9sbEhlaWdodCt0aGlzLnNjcm9sbGJhclNpemU+TmUmJih0aGlzLmhhc1Njcm9sbGJhclJpZ2h0PSEwKX10aGlzLnRvcE92ZXJsYXkuYWRqdXN0RWxlbWVudHNTaXplKGgpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LmFkanVzdEVsZW1lbnRzU2l6ZSho''@;'; put 'put ''KSx0aGlzLmJvdHRvbU92ZXJsYXkuYWRqdXN0RWxlbWVudHNTaXplKGgpfX0se2tleToiYXBwbHlUb0RPTSIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy53dFRhYmxlLmlzVmlzaWJsZSgpfHwodGhpcy50b3BPdmVybGF5LmFwcGx5VG9ET00oKSx0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRo''@;'; put 'put ''aXMuYm90dG9tT3ZlcmxheS5hcHBseVRvRE9NKCksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuYXBwbHlUb0RPTSgpKX19LHtrZXk6ImdldFBhcmVudE92ZXJsYXkiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybiBudWxsO3ZhciB5PW51bGw7cmV0dXJuIEdyKFt0aGlzLnRvcE92ZXJs''@;'; put 'put ''YXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXksdGhpcy5ib3R0b21PdmVybGF5LHRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XSxmdW5jdGlvbihDKXshQ3x8Qy5jbG9uZSYmQy5jbG9uZS53dFRhYmxlLlRBQkxFLmNv''@;'; put 'put ''bnRhaW5zKGgpJiYoeT1DLmNsb25lKX0pLHl9fSx7a2V5OiJzeW5jT3ZlcmxheVRhYmxlQ2xhc3NOYW1lcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnd0VGFibGUuVEFCTEU7R3IoW3RoaXMudG9wT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheSx0aGlzLmJvdHRvbU92ZXJs''@;'; put 'put ''YXksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXldLGZ1bmN0aW9uKHkpeyF5fHwoeS5jbG9uZS53dFRhYmxlLlRBQkxFLmNsYXNzTmFtZT1oLmNsYXNzTmFtZSl9KX19XSksZH0oKTtjb25zdCBWUWU9TlFlO2Z1bmN0''@;'; put 'put ''aW9uIGZrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1''@;'; put 'put ''bmN0aW9uIGhrZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIHpRZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9dGhpczso''@;'; put 'put ''ZnVuY3Rpb24galFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLGhrZSh0aGlzLCJzZXR0aW5ncyIse30pLGhrZSh0aGlzLCJkZWZhdWx0cyIsT2JqZWN0LmZyZWV6ZSh0''@;'; put 'put ''aGlzLmdldERlZmF1bHRzKCkpKSxabCh0aGlzLmRlZmF1bHRzLGZ1bmN0aW9uKHYseSl7aWYodm9pZCAwIT09Z1t5XSloLnNldHRpbmdzW3ldPWdbeV07ZWxzZXtpZih2b2lkIDA9PT12KXRocm93IG5ldyBFcnJvcignQSByZXF1aXJlZCBzZXR0aW5nICInLmNvbmNhdCh5LCciIHdhcyBub3Qg''@;'; put 'put ''cHJvdmlkZWQnKSk7aC5zZXR0aW5nc1t5XT12fX0pfXJldHVybiBmdW5jdGlvbiBaUWUoZCxnLGgpe2cmJmZrZShkLnByb3RvdHlwZSxnKSxoJiZma2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0RGVmYXVsdHMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcztyZXR1cm57ZmFjYWRlOnZvaWQgMCx0YWJsZTp2b2lkIDAsaXNEYXRhVmlld0luc3RhbmNlOiEwLGV4dGVybmFsUm93Q2FsY3VsYXRvcjohMSxzdHJldGNoSDoibm9uZSIsY3VycmVudFJvd0NsYXNzTmFtZTpudWxsLGN1cnJlbnRDb2x1bW5D''@;'; put 'put ''bGFzc05hbWU6bnVsbCxwcmV2ZW50T3ZlcmZsb3c6ZnVuY3Rpb24oKXtyZXR1cm4hMX0scHJldmVudFdoZWVsOiExLGRhdGE6dm9pZCAwLGZyZWV6ZU92ZXJsYXlzOiExLGZpeGVkQ29sdW1uc1N0YXJ0OjAsZml4ZWRSb3dzVG9wOjAsZml4ZWRSb3dzQm90dG9tOjAsc2hvdWxkUmVuZGVySW5s''@;'; put 'put ''aW5lU3RhcnRPdmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIGguZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKT4wfHxoLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGg+MH0sc2hvdWxkUmVuZGVyVG9wT3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiBoLmdldFNldHRpbmcoImZp''@;'; put 'put ''eGVkUm93c1RvcCIpPjB8fGguZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aD4wfSxzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIGguZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIik+MH0sbWluU3BhcmVSb3dzOjAscm93SGVhZGVyczpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybltdfSxjb2x1bW5IZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvdGFsUm93czp2b2lkIDAsdG90YWxDb2x1bW5zOnZvaWQgMCxjZWxsUmVuZGVyZXI6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPWguZ2V0U2V0dGluZygiZGF0YSIseSxDKTtSdyhJLG51bGw9PWo/IiI6''@;'; put 'put ''ail9LGNvbHVtbldpZHRoOmZ1bmN0aW9uKCl7fSxyb3dIZWlnaHQ6ZnVuY3Rpb24oKXt9LGRlZmF1bHRSb3dIZWlnaHQ6MjMsZGVmYXVsdENvbHVtbldpZHRoOjUwLHNlbGVjdGlvbnM6bnVsbCxoaWRlQm9yZGVyT25Nb3VzZURvd25PdmVyOiExLHZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJy''@;'; put 'put ''aWRlOm51bGwsdmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGU6bnVsbCxvbkNlbGxNb3VzZURvd246bnVsbCxvbkNlbGxDb250ZXh0TWVudTpudWxsLG9uQ2VsbE1vdXNlT3ZlcjpudWxsLG9uQ2VsbE1vdXNlT3V0Om51bGwsb25DZWxsTW91c2VVcDpudWxsLG9uQ2VsbERibENsaWNr''@;'; put 'put ''Om51bGwsb25DZWxsQ29ybmVyTW91c2VEb3duOm51bGwsb25DZWxsQ29ybmVyRGJsQ2xpY2s6bnVsbCxiZWZvcmVEcmF3Om51bGwsb25EcmF3Om51bGwsb25CZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lczpudWxsLG9uQWZ0ZXJEcmF3U2VsZWN0aW9uOm51bGwsb25CZWZvcmVEcmF3Qm9yZGVy''@;'; put 'put ''czpudWxsLG9uU2Nyb2xsVmVydGljYWxseTpudWxsLG9uU2Nyb2xsSG9yaXpvbnRhbGx5Om51bGwsb25CZWZvcmVUb3VjaFNjcm9sbDpudWxsLG9uQWZ0ZXJNb21lbnR1bVNjcm9sbDpudWxsLG9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoOmZ1bmN0aW9uKHkpe3JldHVybiB5fSxvbk1v''@;'; put 'put ''ZGlmeVJvd0hlYWRlcldpZHRoOm51bGwsb25Nb2RpZnlHZXRDZWxsQ29vcmRzOm51bGwsb25CZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXI6ZnVuY3Rpb24oeSl7cmV0dXJuIHl9LG9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyOmZ1bmN0aW9uKHkpe3JldHVybiB5fSxvbldpbmRv''@;'; put 'put ''d1Jlc2l6ZTpudWxsLHJlbmRlckFsbFJvd3M6ITEsZ3JvdXBzOiExLHJvd0hlYWRlcldpZHRoOm51bGwsY29sdW1uSGVhZGVySGVpZ2h0Om51bGwsaGVhZGVyQ2xhc3NOYW1lOm51bGwscnRsTW9kZTohMX19fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpczty''@;'; put 'put ''ZXR1cm4gdm9pZCAwPT09dj9abChoLGZ1bmN0aW9uKEMsSSl7eS5zZXR0aW5nc1tJXT1DfSk6dGhpcy5zZXR0aW5nc1toXT12LHRoaXN9fSx7a2V5OiJnZXRTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDLEkpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNldHRpbmdzW2hd''@;'; put 'put ''P3RoaXMuc2V0dGluZ3NbaF0odix5LEMsSSk6dm9pZCAwIT09diYmQXJyYXkuaXNBcnJheSh0aGlzLnNldHRpbmdzW2hdKT90aGlzLnNldHRpbmdzW2hdW3ZdOnRoaXMuc2V0dGluZ3NbaF19fSx7a2V5OiJnZXRTZXR0aW5nUHVyZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuc2V0''@;'; put 'put ''dGluZ3NbaF19fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiEhdGhpcy5zZXR0aW5nc1toXX19XSksZH0oKTtmdW5jdGlvbiBVZGUoZCl7cmV0dXJuKFVkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGRrZShkLGcpe2Zvcih2''@;'; put 'put ''YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFFkZShkLGcpe3Jl''@;'; put 'put ''dHVybihRZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBRUWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1VZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEpRZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VF''@;'; put 'put ''cnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFplZShkKXtyZXR1cm4oWmVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEpkZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gWVFlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g''@;'; put 'put ''bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUi''@;'; put 'put ''LHt3cml0YWJsZTohMX0pLGcmJlFkZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFVRZShkKXt2YXIgZz1mdW5jdGlvbiBYUWUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHksdj1aZWUoZCk7aWYoZyl7dmFyIEM9WmVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBRUWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIEdRZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLHYseSxDLEksIm1hc3RlciIpfXJldHVybiBmdW5jdGlvbiBXUWUoZCxnLGgpe2cmJmRr''@;'; put 'put ''ZShkLnByb3RvdHlwZSxnKSxoJiZka2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYWxpZ25PdmVybGF5c1dpdGhUcmltbWluZ0NvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT14Tyh0aGlzLnd0Um9vdEVs''@;'; put 'put ''ZW1lbnQpLEM9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93O2lmKHk9PT1DKXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKXx8KHRoaXMuaG9sZGVyLnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIix0aGlzLnd0Um9vdEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c9''@;'; put 'put ''InZpc2libGUiKTtlbHNle3ZhciBqPXkucGFyZW50RWxlbWVudCxjZT1pZWUoeSwiaGVpZ2h0IixDKSxfZT1pZWUoeSwib3ZlcmZsb3ciLEMpLFJlPXRoaXMuaG9sZGVyLnN0eWxlLE5lPXkuc2Nyb2xsV2lkdGgsS2U9eS5zY3JvbGxIZWlnaHQsaHQ9eS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo''@;'; put 'put ''KSxCdD1odC53aWR0aCwkdD1odC5oZWlnaHQ7aWYoaiYmWyJhdXRvIiwiaGlkZGVuIiwic2Nyb2xsIl0uaW5jbHVkZXMoX2UpKXt2YXIgRG49eS5jbG9uZU5vZGUoITEpO0RuLnN0eWxlLm92ZXJmbG93PSJhdXRvIix5Lm5leHRFbGVtZW50U2libGluZz9qLmluc2VydEJlZm9yZShEbix5Lm5l''@;'; put 'put ''eHRFbGVtZW50U2libGluZyk6ai5hcHBlbmRDaGlsZChEbik7dmFyIGlyPXBhcnNlSW50KEJ3KERuLEMpLmhlaWdodCwxMCk7ai5yZW1vdmVDaGlsZChEbiksMD09PWlyJiYoJHQ9MCl9JHQ9TWF0aC5taW4oJHQsS2UpLFJlLmhlaWdodD0iYXV0byI9PT1jZT8iYXV0byI6IiIuY29uY2F0KCR0''@;'; put 'put ''LCJweCIpLEJ0PU1hdGgubWluKEJ0LE5lKSxSZS53aWR0aD0iIi5jb25jYXQoQnQsInB4IiksUmUub3ZlcmZsb3c9IiIsdGhpcy5oYXNUYWJsZUhlaWdodD0iYXV0byI9PT1SZS5oZWlnaHR8fCR0PjAsdGhpcy5oYXNUYWJsZVdpZHRoPUJ0PjB9dGhpcy5pc1RhYmxlVmlzaWJsZT1NTyh0aGlz''@;'; put 'put ''LlRBQkxFKX19LHtrZXk6Im1hcmtPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMud3RTZXR0aW5ncyxDPXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LEk9Im1hc3RlciIsY2U9eS5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVu''@;'; put 'put ''Z3RoO2lmKGNlJiYhQy5oYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkW0ldKXtmb3IodmFyIFJlPXkuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aCxOZT10aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCksS2U9MDtLZTxjZTtLZSsrKWZvcih2YXIgaHQ9LTEqUmU7aHQ8''@;'; put 'put ''TmU7aHQrKyl0aGlzLm1hcmtJZk92ZXJzaXplZENvbHVtbkhlYWRlcihodCk7Qy5oYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkW0ldPSEwfX19XSksaH0oT08pO0kyKEpkZSwkQ2UpLEkyKEpkZSx2ZGUpO2NvbnN0IEtRZT1KZGU7ZnVuY3Rpb24gJFFlKGQsZyl7aWYoIShkIGluc3Rh''@;'; put 'put ''bmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcGtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFi''@;'; put 'put ''bGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGdrZT1uZXcgV2Vha01hcCxlSmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/''@;'; put 'put ''YXJndW1lbnRzWzBdOnt9LGg9Zy52aWV3cG9ydFNpemUsdj1nLnNjcm9sbE9mZnNldCx5PWcudG90YWxJdGVtcyxDPWcuaXRlbVNpemVGbixJPWcub3ZlcnJpZGVGbixqPWcuY2FsY3VsYXRpb25UeXBlLGNlPWcuc2Nyb2xsYmFySGVpZ2h0OyRRZSh0aGlzLGQpLGdrZS5zZXQodGhpcyx7dmll''@;'; put 'put ''d3BvcnRIZWlnaHQ6aCxzY3JvbGxPZmZzZXQ6dix0b3RhbFJvd3M6eSxyb3dIZWlnaHRGbjpDLG92ZXJyaWRlRm46SSxjYWxjdWxhdGlvblR5cGU6aixob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0OmNlfSksdGhpcy5jb3VudD0wLHRoaXMuc3RhcnRSb3c9bnVsbCx0aGlzLmVuZFJvdz1udWxs''@;'; put 'put ''LHRoaXMuc3RhcnRQb3NpdGlvbj1udWxsLHRoaXMuY2FsY3VsYXRlKCl9cmV0dXJuIGZ1bmN0aW9uIHFRZShkLGcsaCl7ZyYmcGtlKGQucHJvdG90eXBlLGcpLGgmJnBrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJj''@;'; put 'put ''YWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBodCxoPTAsdj0hMCx5PVtdLEM9Z2tlLmdldCh0aGlzKSxJPUMuY2FsY3VsYXRpb25UeXBlLGo9Qy5vdmVycmlkZUZuLGNlPUMucm93SGVpZ2h0Rm4sX2U9Qy5zY3JvbGxPZmZzZXQsUmU9Qy50b3RhbFJvd3MsTmU9Qy52aWV3cG9y''@;'; put 'put ''dEhlaWdodCxLZT1DLmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHR8fDAsQnQ9MDtCdDxSZTtCdCsrKWlmKGh0PWNlKEJ0KSxpc05hTihodCkmJihodD1kLkRFRkFVTFRfSEVJR0hUKSxoPD1fZSYmMiE9PUkmJih0aGlzLnN0YXJ0Um93PUJ0KSxoPj1fZSYmaCsoMj09PUk/aHQ6MCk8PV9lK05l''@;'; put 'put ''LUtlJiYobnVsbD09PXRoaXMuc3RhcnRSb3cmJih0aGlzLnN0YXJ0Um93PUJ0KSx0aGlzLmVuZFJvdz1CdCkseS5wdXNoKGgpLGgrPWh0LDIhPT1JJiYodGhpcy5lbmRSb3c9QnQpLGg+PV9lK05lLUtlKXt2PSExO2JyZWFrfWlmKHRoaXMuZW5kUm93PT09UmUtMSYmdilmb3IodGhpcy5zdGFy''@;'; put 'put ''dFJvdz10aGlzLmVuZFJvdzt0aGlzLnN0YXJ0Um93PjA7KXt2YXIgJHQ9eVt0aGlzLmVuZFJvd10raHQteVt0aGlzLnN0YXJ0Um93LTFdO2lmKCgkdDw9TmUtS2V8fDIhPT1JKSYmKHRoaXMuc3RhcnRSb3ctPTEpLCR0Pj1OZS1LZSlicmVha30xPT09SSYmbnVsbCE9PXRoaXMuc3RhcnRSb3cm''@;'; put 'put ''JmomJmoodGhpcyksdGhpcy5zdGFydFBvc2l0aW9uPXlbdGhpcy5zdGFydFJvd10sdm9pZCAwPT09dGhpcy5zdGFydFBvc2l0aW9uJiYodGhpcy5zdGFydFBvc2l0aW9uPW51bGwpLFJlPHRoaXMuZW5kUm93JiYodGhpcy5lbmRSb3c9UmUtMSksbnVsbCE9PXRoaXMuc3RhcnRSb3cmJih0aGlz''@;'; put 'put ''LmNvdW50PXRoaXMuZW5kUm93LXRoaXMuc3RhcnRSb3crMSl9fV0sW3trZXk6IkRFRkFVTFRfSEVJR0hUIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjN9fV0pLGR9KCk7Y29uc3QgbWtlPWVKZTtmdW5jdGlvbiB0SmUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB2a2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3Jp''@;'; put 'put ''dGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgUk89bmV3IFdlYWtNYXAsckplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxoPWcudmlld3Bv''@;'; put 'put ''cnRTaXplLHY9Zy5zY3JvbGxPZmZzZXQseT1nLnRvdGFsSXRlbXMsQz1nLml0ZW1TaXplRm4sST1nLm92ZXJyaWRlRm4saj1nLmNhbGN1bGF0aW9uVHlwZSxjZT1nLnN0cmV0Y2hNb2RlLF9lPWcuc3RyZXRjaGluZ0l0ZW1XaWR0aEZuLFJlPXZvaWQgMD09PV9lP2Z1bmN0aW9uKE5lKXtyZXR1''@;'; put 'put ''cm4gTmV9Ol9lO3RKZSh0aGlzLGQpLFJPLnNldCh0aGlzLHt2aWV3cG9ydFdpZHRoOmgsc2Nyb2xsT2Zmc2V0OnYsdG90YWxDb2x1bW5zOnksY29sdW1uV2lkdGhGbjpDLG92ZXJyaWRlRm46SSxjYWxjdWxhdGlvblR5cGU6aixzdHJldGNoaW5nQ29sdW1uV2lkdGhGbjpSZX0pLHRoaXMuY291''@;'; put 'put ''bnQ9MCx0aGlzLnN0YXJ0Q29sdW1uPW51bGwsdGhpcy5lbmRDb2x1bW49bnVsbCx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCx0aGlzLnN0cmV0Y2hBbGxSYXRpbz0wLHRoaXMuc3RyZXRjaExhc3RXaWR0aD0wLHRoaXMuc3RyZXRjaD1jZSx0aGlzLnRvdGFsVGFyZ2V0V2lkdGg9MCx0aGlzLm5l''@;'; put 'put ''ZWRWZXJpZnlMYXN0Q29sdW1uV2lkdGg9ITAsdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoPVtdLHRoaXMuY2FsY3VsYXRlKCl9cmV0dXJuIGZ1bmN0aW9uIG5KZShkLGcsaCl7ZyYmdmtlKGQucHJvdG90eXBlLGcpLGgmJnZrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90''@;'; put 'put ''b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBDLGg9MCx2PSEwLHk9W10sST1STy5nZXQodGhpcyksaj1JLmNhbGN1bGF0aW9uVHlwZSxjZT1JLm92ZXJyaWRlRm4sX2U9SS5zY3JvbGxPZmZzZXQsUmU9SS50b3RhbENv''@;'; put 'put ''bHVtbnMsTmU9SS52aWV3cG9ydFdpZHRoLEtlPTA7S2U8UmU7S2UrKylpZihDPXRoaXMuX2dldENvbHVtbldpZHRoKEtlKSxoPD1fZSYmMiE9PWomJih0aGlzLnN0YXJ0Q29sdW1uPUtlKSxoPj1fZSYmaCsoMj09PWo/QzowKTw9X2UrKF9lPjA/TmUrMTpOZSkmJihudWxsPT10aGlzLnN0YXJ0''@;'; put 'put ''Q29sdW1uJiYodGhpcy5zdGFydENvbHVtbj1LZSksdGhpcy5lbmRDb2x1bW49S2UpLHkucHVzaChoKSxoKz1DLDIhPT1qJiYodGhpcy5lbmRDb2x1bW49S2UpLGg+PV9lK05lKXt2PSExO2JyZWFrfWlmKHRoaXMuZW5kQ29sdW1uPT09UmUtMSYmdilmb3IodGhpcy5zdGFydENvbHVtbj10aGlz''@;'; put 'put ''LmVuZENvbHVtbjt0aGlzLnN0YXJ0Q29sdW1uPjA7KXt2YXIgQnQ9eVt0aGlzLmVuZENvbHVtbl0rQy15W3RoaXMuc3RhcnRDb2x1bW4tMV07aWYoKEJ0PD1OZXx8MiE9PWopJiYodGhpcy5zdGFydENvbHVtbi09MSksQnQ+TmUpYnJlYWt9MT09PWomJm51bGwhPT10aGlzLnN0YXJ0Q29sdW1u''@;'; put 'put ''JiZjZSYmY2UodGhpcyksdGhpcy5zdGFydFBvc2l0aW9uPXlbdGhpcy5zdGFydENvbHVtbl0sdm9pZCAwPT09dGhpcy5zdGFydFBvc2l0aW9uJiYodGhpcy5zdGFydFBvc2l0aW9uPW51bGwpLFJlPHRoaXMuZW5kQ29sdW1uJiYodGhpcy5lbmRDb2x1bW49UmUtMSksbnVsbCE9PXRoaXMuc3Rh''@;'; put 'put ''cnRDb2x1bW4mJih0aGlzLmNvdW50PXRoaXMuZW5kQ29sdW1uLXRoaXMuc3RhcnRDb2x1bW4rMSl9fSx7a2V5OiJyZWZyZXNoU3RyZXRjaGluZyIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoIm5vbmUiIT09dGhpcy5zdHJldGNoKXt2YXIgdj1oO3RoaXMudG90YWxUYXJnZXRXaWR0aD12O2Zvcih2''@;'; put 'put ''YXIgeT1STy5nZXQodGhpcyksQz15LnRvdGFsQ29sdW1ucyxJPTAsaj0wO2o8QztqKyspe3ZhciBjZT10aGlzLl9nZXRDb2x1bW5XaWR0aChqKSxfZT15LnN0cmV0Y2hpbmdDb2x1bW5XaWR0aEZuKHZvaWQgMCxqKTsibnVtYmVyIj09dHlwZW9mIF9lP3YtPV9lOkkrPWNlfXZhciBSZT12LUk7''@;'; put 'put ''aWYoImFsbCI9PT10aGlzLnN0cmV0Y2gmJlJlPjApdGhpcy5zdHJldGNoQWxsUmF0aW89di9JLHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aD1bXSx0aGlzLm5lZWRWZXJpZnlMYXN0Q29sdW1uV2lkdGg9ITA7ZWxzZSBpZigibGFzdCI9PT10aGlzLnN0cmV0Y2gmJnYhPT0xLzApe3ZhciBO''@;'; put 'put ''ZT10aGlzLl9nZXRDb2x1bW5XaWR0aChDLTEpLEtlPVJlK05lO3RoaXMuc3RyZXRjaExhc3RXaWR0aD1LZT49MD9LZTpOZX19fX0se2tleToiZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9bnVsbDtyZXR1cm4iYWxsIj09PXRoaXMuc3RyZXRjaCYm''@;'; put 'put ''MCE9PXRoaXMuc3RyZXRjaEFsbFJhdGlvP3k9dGhpcy5fZ2V0U3RyZXRjaGVkQWxsQ29sdW1uV2lkdGgoaCx2KToibGFzdCI9PT10aGlzLnN0cmV0Y2gmJjAhPT10aGlzLnN0cmV0Y2hMYXN0V2lkdGgmJih5PXRoaXMuX2dldFN0cmV0Y2hlZExhc3RDb2x1bW5XaWR0aChoKSkseX19LHtrZXk6''@;'; put 'put ''Il9nZXRTdHJldGNoZWRBbGxDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT0wLEM9Uk8uZ2V0KHRoaXMpLEk9Qy50b3RhbENvbHVtbnM7aWYoIXRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtoXSl7dmFyIGo9TWF0aC5yb3VuZCh2KnRoaXMuc3RyZXRjaEFsbFJhdGlv''@;'; put 'put ''KSxjZT1DLnN0cmV0Y2hpbmdDb2x1bW5XaWR0aEZuKGosaCk7dGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoW2hdPXZvaWQgMD09PWNlP2o6aXNOYU4oY2UpP3RoaXMuX2dldENvbHVtbldpZHRoKGgpOmNlfWlmKHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aC5sZW5ndGg9PT1JJiZ0aGlz''@;'; put 'put ''Lm5lZWRWZXJpZnlMYXN0Q29sdW1uV2lkdGgpe3RoaXMubmVlZFZlcmlmeUxhc3RDb2x1bW5XaWR0aD0hMTtmb3IodmFyIF9lPTA7X2U8dGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoLmxlbmd0aDtfZSsrKXkrPXRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtfZV07eSE9PXRoaXMudG90''@;'; put 'put ''YWxUYXJnZXRXaWR0aCYmKHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFt0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGgubGVuZ3RoLTFdKz10aGlzLnRvdGFsVGFyZ2V0V2lkdGgteSl9cmV0dXJuIHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtoXX19LHtrZXk6Il9nZXRTdHJldGNo''@;'; put 'put ''ZWRMYXN0Q29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoPT09Uk8uZ2V0KHRoaXMpLnRvdGFsQ29sdW1ucy0xP3RoaXMuc3RyZXRjaExhc3RXaWR0aDpudWxsfX0se2tleToiX2dldENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1STy5nZXQodGhpcyku''@;'; put 'put ''Y29sdW1uV2lkdGhGbihoKTtyZXR1cm4gaXNOYU4odikmJih2PWQuREVGQVVMVF9XSURUSCksdn19XSxbe2tleToiREVGQVVMVF9XSURUSCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDUwfX1dKSxkfSgpO2NvbnN0IFhkZT1ySmU7ZnVuY3Rpb24gQWtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxl''@;'; put 'put ''bmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGFKZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxo''@;'; put 'put ''LHYseSxDKXt2YXIgST10aGlzOyhmdW5jdGlvbiBpSmUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5kYXRhQWNjZXNzT2JqZWN0PWcsdGhpcy53b3Q9Zy53b3Qs''@;'; put 'put ''dGhpcy5pbnN0YW5jZT10aGlzLndvdCx0aGlzLmRvbUJpbmRpbmdzPWgsdGhpcy53dFNldHRpbmdzPXYsdGhpcy53dFRhYmxlPUMsdGhpcy5vdmVyc2l6ZWRSb3dzPVtdLHRoaXMub3ZlcnNpemVkQ29sdW1uSGVhZGVycz1bXSx0aGlzLmhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQ9''@;'; put 'put ''e30sdGhpcy5jbGllbnRIZWlnaHQ9MCx0aGlzLmNvbnRhaW5lcldpZHRoPU5hTix0aGlzLnJvd0hlYWRlcldpZHRoPU5hTix0aGlzLnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj1udWxsLHRoaXMuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yPW51bGwsdGhpcy5ldmVudE1hbmFnZXI9eSx0aGlzLmV2''@;'; put 'put ''ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdywicmVzaXplIixmdW5jdGlvbigpe0kuY2xpZW50SGVpZ2h0PUkuZ2V0V29ya3NwYWNlSGVpZ2h0KCl9KX1yZXR1cm4gZnVuY3Rpb24gb0plKGQsZyxoKXtnJiZBa2UoZC5wcm90b3R5cGUsZyks''@;'; put 'put ''aCYmQWtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldFdvcmtzcGFjZUhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdj10aGlzLmRhdGFBY2Nlc3NPYmplY3QudG9wT3ZlcmxheVRyaW1taW5nQ29udGFpbmVy''@;'; put 'put ''O3JldHVybiB2PT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93P3RoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ6QjEodik+MCYmdi5jbGllbnRIZWlnaHQ+MD92LmNsaWVudEhlaWdodDoxLzB9fSx7a2V5OiJnZXRXb3Jrc3BhY2VX''@;'; put 'put ''aWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQnQsJHQsaD10aGlzLnd0U2V0dGluZ3Msdj10aGlzLmRvbUJpbmRpbmdzLHk9di5yb290RG9jdW1lbnQsQz12LnJvb3RXaW5kb3csST10aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250YWluZXIsaj15''@;'; put 'put ''LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCxjZT1oLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLF9lPWguZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93IiksUmU9aC5nZXRTZXR0aW5nKCJydGxNb2RlIiksTmU9dGhpcy53dFRhYmxlLlRBQkxFLmdldEJvdW5kaW5nQ2xpZW50UmVj''@;'; put 'put ''dCgpLGh0PWotKFJlP05lLnJpZ2h0LWo6TmUubGVmdCk7aWYoX2UpcmV0dXJuIHcyKHRoaXMud3RUYWJsZS53dFJvb3RFbGVtZW50KTtpZihCdD1oLmdldFNldHRpbmcoImZyZWV6ZU92ZXJsYXlzIik/TWF0aC5taW4oaHQsaik6TWF0aC5taW4odGhpcy5nZXRDb250YWluZXJGaWxsV2lkdGgo''@;'; put 'put ''KSxodCxqKSxJPT09QyYmY2U+MCYmdGhpcy5zdW1Db2x1bW5XaWR0aHMoMCxjZS0xKT5CdClyZXR1cm4geS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7aWYoSSE9PUMmJigic2Nyb2xsIj09PSgkdD1pZWUodGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0T3ZlcmxheVRyaW1t''@;'; put 'put ''aW5nQ29udGFpbmVyLCJvdmVyZmxvdyIsQykpfHwiaGlkZGVuIj09PSR0fHwiYXV0byI9PT0kdCkpcmV0dXJuIE1hdGgubWF4KEJ0LEkuY2xpZW50V2lkdGgpO3ZhciBobj1oLmdldFNldHRpbmcoInN0cmV0Y2hIIik7cmV0dXJuIm5vbmUiIT09aG4mJmhuP0J0Ok1hdGgubWF4KEJ0LHcyKHRo''@;'; put 'put ''aXMud3RUYWJsZS5UQUJMRSkpfX0se2tleToiaGFzVmVydGljYWxTY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RUYWJsZS5oaWRlci5vZmZzZXRIZWlnaHQ+dGhpcy5nZXRXb3Jrc3BhY2VIZWlnaHQoKX19LHtrZXk6Imhhc0hvcml6b250YWxTY3JvbGwiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RUYWJsZS5oaWRlci5vZmZzZXRXaWR0aD50aGlzLmdldFdvcmtzcGFjZVdpZHRoKCl9fSx7a2V5OiJzdW1Db2x1bW5XaWR0aHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7Zm9yKHZhciB5PTAsQz1oO0M8djspeSs9dGhpcy53dFRhYmxlLmdldENvbHVtbldp''@;'; put 'put ''ZHRoKEMpLEMrPTE7cmV0dXJuIHl9fSx7a2V5OiJnZXRDb250YWluZXJGaWxsV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5jb250YWluZXJXaWR0aClyZXR1cm4gdGhpcy5jb250YWluZXJXaWR0aDt2YXIgaD10aGlzLnd0VGFibGUuaG9sZGVyLHY9dGhpcy5kb21CaW5kaW5ncy5y''@;'; put 'put ''b290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7di5zdHlsZS53aWR0aD0iMTAwJSIsdi5zdHlsZS5oZWlnaHQ9IjFweCIsaC5hcHBlbmRDaGlsZCh2KTt2YXIgeT12Lm9mZnNldFdpZHRoO3JldHVybiB0aGlzLmNvbnRhaW5lcldpZHRoPXksaC5yZW1vdmVDaGlsZCh2KSx5fX0se2tl''@;'; put 'put ''eToiZ2V0V29ya3NwYWNlT2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB6dSh0aGlzLnd0VGFibGUuVEFCTEUpfX0se2tleToiZ2V0Q29sdW1uSGVhZGVySGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVy''@;'; put 'put ''cyIpLmxlbmd0aD9pc05hTih0aGlzLmNvbHVtbkhlYWRlckhlaWdodCkmJih0aGlzLmNvbHVtbkhlYWRlckhlaWdodD1CMSh0aGlzLnd0VGFibGUuVEhFQUQpKTp0aGlzLmNvbHVtbkhlYWRlckhlaWdodD0wLHRoaXMuY29sdW1uSGVhZGVySGVpZ2h0fX0se2tleToiZ2V0Vmlld3BvcnRIZWln''@;'; put 'put ''aHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRXb3Jrc3BhY2VIZWlnaHQoKTtpZihoPT09MS8wKXJldHVybiBoO3ZhciB2PXRoaXMuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCk7cmV0dXJuIHY+MCYmKGgtPXYpLGh9fSx7a2V5OiJnZXRSb3dIZWFkZXJXaWR0aCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgaD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVyV2lkdGgiKSx2PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIik7aWYoaCl7dGhpcy5yb3dIZWFkZXJXaWR0aD0wO2Zvcih2YXIgeT0wLEM9di5sZW5ndGg7eTxDO3krKyl0aGlz''@;'; put 'put ''LnJvd0hlYWRlcldpZHRoKz1oW3ldfHxofWlmKGlzTmFOKHRoaXMucm93SGVhZGVyV2lkdGgpKWlmKHYubGVuZ3RoKXt2YXIgST10aGlzLnd0VGFibGUuVEFCTEUucXVlcnlTZWxlY3RvcigiVEgiKTt0aGlzLnJvd0hlYWRlcldpZHRoPTA7Zm9yKHZhciBqPTAsY2U9di5sZW5ndGg7ajxjZTtq''@;'; put 'put ''KyspST8odGhpcy5yb3dIZWFkZXJXaWR0aCs9dzIoSSksST1JLm5leHRTaWJsaW5nKTp0aGlzLnJvd0hlYWRlcldpZHRoKz01MH1lbHNlIHRoaXMucm93SGVhZGVyV2lkdGg9MDtyZXR1cm4gdGhpcy5yb3dIZWFkZXJXaWR0aD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25Nb2RpZnlS''@;'; put 'put ''b3dIZWFkZXJXaWR0aCIsdGhpcy5yb3dIZWFkZXJXaWR0aCl8fHRoaXMucm93SGVhZGVyV2lkdGgsdGhpcy5yb3dIZWFkZXJXaWR0aH19LHtrZXk6ImdldFZpZXdwb3J0V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRXb3Jrc3BhY2VXaWR0aCgpO2lmKGg9PT0xLzApcmV0''@;'; put 'put ''dXJuIGg7dmFyIHY9dGhpcy5nZXRSb3dIZWFkZXJXaWR0aCgpO3JldHVybiB2PjA/aC12Omh9fSx7a2V5OiJjcmVhdGVSb3dzQ2FsY3VsYXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQyxJLGosaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNb''@;'; put 'put ''MF06MSx2PXRoaXMud3RTZXR0aW5ncyx5PXRoaXMud3RUYWJsZTt0aGlzLnJvd0hlYWRlcldpZHRoPU5hTixDPXYuZ2V0U2V0dGluZygicmVuZGVyQWxsUm93cyIpJiYxPT09aD8xLzA6dGhpcy5nZXRWaWV3cG9ydEhlaWdodCgpO3ZhciBjZT10aGlzLmRhdGFBY2Nlc3NPYmplY3QudG9wU2Ny''@;'; put 'put ''b2xsUG9zaXRpb24tdGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcFBhcmVudE9mZnNldDtjZTwwJiYoY2U9MCk7dmFyIF9lPXYuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksUmU9di5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxOZT12LmdldFNldHRpbmcoInRvdGFsUm93cyIpO3Jl''@;'; put 'put ''dHVybiBfZSYmKGNlKz1qPXRoaXMuZGF0YUFjY2Vzc09iamVjdC50b3BPdmVybGF5LnN1bUNlbGxTaXplcygwLF9lKSxDLT1qKSxSZSYmdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmJvdHRvbU92ZXJsYXkuY2xvbmUmJihDLT1qPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5ib3R0b21PdmVybGF5LnN1''@;'; put 'put ''bUNlbGxTaXplcyhOZS1SZSxOZSkpLEk9eS5ob2xkZXIuY2xpZW50SGVpZ2h0PT09eS5ob2xkZXIub2Zmc2V0SGVpZ2h0PzA6UGModGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpLG5ldyBta2Uoe3ZpZXdwb3J0U2l6ZTpDLHNjcm9sbE9mZnNldDpjZSx0b3RhbEl0ZW1zOnYuZ2V0U2V0''@;'; put 'put ''dGluZygidG90YWxSb3dzIiksaXRlbVNpemVGbjpmdW5jdGlvbihodCl7cmV0dXJuIHkuZ2V0Um93SGVpZ2h0KGh0KX0sb3ZlcnJpZGVGbjp2LmdldFNldHRpbmdQdXJlKCJ2aWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIpLGNhbGN1bGF0aW9uVHlwZTpoLHNjcm9sbGJhckhlaWdodDpJ''@;'; put 'put ''fSl9fSx7a2V5OiJjcmVhdGVDb2x1bW5zQ2FsY3VsYXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MSx2PXRoaXMud3RTZXR0aW5ncyx5PXRoaXMud3RUYWJsZSxDPXRoaXMuZ2V0Vmlld3Bv''@;'; put 'put ''cnRXaWR0aCgpLEk9TWF0aC5hYnModGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0U2Nyb2xsUG9zaXRpb24pLXRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydFBhcmVudE9mZnNldDt0aGlzLmNvbHVtbkhlYWRlckhlaWdodD1OYU4sSTwwJiYoST0wKTt2YXIgaj12Lmdl''@;'; put 'put ''dFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7aWYoail7dmFyIGNlPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydE92ZXJsYXkuc3VtQ2VsbFNpemVzKDAsaik7SSs9Y2UsQy09Y2V9cmV0dXJuIHkuaG9sZGVyLmNsaWVudFdpZHRoIT09eS5ob2xkZXIub2Zmc2V0V2lkdGgm''@;'; put 'put ''JihDLT1QYyh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLG5ldyBYZGUoe3ZpZXdwb3J0U2l6ZTpDLHNjcm9sbE9mZnNldDpNYXRoLmFicyhJKSx0b3RhbEl0ZW1zOnYuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksaXRlbVNpemVGbjpmdW5jdGlvbihSZSl7cmV0dXJuIHkuZ2V0''@;'; put 'put ''Q29sdW1uV2lkdGgoUmUpfSxvdmVycmlkZUZuOnYuZ2V0U2V0dGluZ1B1cmUoInZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlIiksY2FsY3VsYXRpb25UeXBlOmgsc3RyZXRjaE1vZGU6di5nZXRTZXR0aW5nKCJzdHJldGNoSCIpLHN0cmV0Y2hpbmdJdGVtV2lkdGhGbjpmdW5jdGlv''@;'; put 'put ''bihSZSxOZSl7cmV0dXJuIHYuZ2V0U2V0dGluZygib25CZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgiLFJlLE5lKX19KX19LHtrZXk6ImNyZWF0ZVJlbmRlckNhbGN1bGF0b3JzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRz''@;'; put 'put ''WzBdJiZhcmd1bWVudHNbMF0sdj1oO2lmKHYpe3ZhciB5PXRoaXMuY3JlYXRlUm93c0NhbGN1bGF0b3IoMiksQz10aGlzLmNyZWF0ZUNvbHVtbnNDYWxjdWxhdG9yKDIpO3RoaXMuYXJlQWxsUHJvcG9zZWRWaXNpYmxlUm93c0FscmVhZHlSZW5kZXJlZCh5KSYmdGhpcy5hcmVBbGxQcm9wb3Nl''@;'; put 'put ''ZFZpc2libGVDb2x1bW5zQWxyZWFkeVJlbmRlcmVkKEMpfHwodj0hMSl9cmV0dXJuIHZ8fCh0aGlzLnJvd3NSZW5kZXJDYWxjdWxhdG9yPXRoaXMuY3JlYXRlUm93c0NhbGN1bGF0b3IoMSksdGhpcy5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcj10aGlzLmNyZWF0ZUNvbHVtbnNDYWxjdWxhdG9y''@;'; put 'put ''KDEpKSx0aGlzLnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj1udWxsLHRoaXMuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yPW51bGwsdn19LHtrZXk6ImNyZWF0ZVZpc2libGVDYWxjdWxhdG9ycyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj10aGlzLmNyZWF0ZVJv''@;'; put 'put ''d3NDYWxjdWxhdG9yKDIpLHRoaXMuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yPXRoaXMuY3JlYXRlQ29sdW1uc0NhbGN1bGF0b3IoMil9fSx7a2V5OiJhcmVBbGxQcm9wb3NlZFZpc2libGVSb3dzQWxyZWFkeVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihoKXtpZighdGhpcy5yb3dzVmlzaWJs''@;'; put 'put ''ZUNhbGN1bGF0b3IpcmV0dXJuITE7dmFyIHY9aC5zdGFydFJvdyx5PWguZW5kUm93O2lmKG51bGw9PT12JiZudWxsPT09eSlyZXR1cm4hMTt2YXIgQz10aGlzLnJvd3NSZW5kZXJDYWxjdWxhdG9yLEk9Qy5zdGFydFJvdyxqPUMuZW5kUm93O3JldHVybiEodjxJfHx2PT09SSYmdj4wfHx5Pmp8''@;'; put 'put ''fHk9PT1qJiZ5PHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKS0xKX19LHtrZXk6ImFyZUFsbFByb3Bvc2VkVmlzaWJsZUNvbHVtbnNBbHJlYWR5UmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCF0aGlzLmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcilyZXR1cm4h''@;'; put 'put ''MTt2YXIgdj1oLnN0YXJ0Q29sdW1uLHk9aC5lbmRDb2x1bW47aWYobnVsbD09PXYmJm51bGw9PT15KXJldHVybiExO3ZhciBDPXRoaXMuY29sdW1uc1JlbmRlckNhbGN1bGF0b3IsST1DLnN0YXJ0Q29sdW1uLGo9Qy5lbmRDb2x1bW47cmV0dXJuISh2PEl8fHY9PT1JJiZ2PjB8fHk+anx8eT09''@;'; put 'put ''PWomJnk8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLTEpfX0se2tleToicmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkIix2YWx1ZTpmdW5jdGlvbigpe1psKHRoaXMuaGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZCxmdW5jdGlvbiho''@;'; put 'put ''LHYseSl7eVt2XT12b2lkIDB9KX19XSksZH0oKTtjb25zdCBsSmU9YUplO2Z1bmN0aW9uIEtkZShkKXtyZXR1cm4oS2RlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24geWtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdb''@;'; put 'put ''aF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gJGRlKGQsZyl7cmV0dXJuKCRkZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGhKZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PUtkZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gcWRlKGQpfWZ1bmN0aW9uIHFkZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBp''@;'; put 'put ''bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gemVlKGQpe3JldHVybih6ZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmpl''@;'; put 'put ''Y3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgcEplPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBjSmUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVu''@;'; put 'put ''Y3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmJGRlKGQsZyl9''@;'; put 'put ''KGgsZCk7dmFyIGc9ZnVuY3Rpb24gZkplKGQpe3ZhciBnPWZ1bmN0aW9uIGRKZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1''@;'; put 'put ''cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXplZShkKTtpZihnKXt2YXIgQz16ZWUo''@;'; put 'put ''dGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGhKZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDOyFmdW5jdGlvbiBzSmUoZCxnKXtpZighKGQgaW5zdGFuY2Vv''@;'; put 'put ''ZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKTt2YXIgST0oQz1nLmNhbGwodGhpcyx2LG5ldyB6UWUoeSkpKS53dFNldHRpbmdzLmdldFNldHRpbmcoImZhY2FkZSIscWRlKEMpKTtyZXR1cm4gQy53dFRhYmxlPW5l''@;'; put 'put ''dyBLUWUoQy5nZXRUYWJsZURhbygpLEksQy5kb21CaW5kaW5ncyxDLnd0U2V0dGluZ3MpLEMud3RWaWV3cG9ydD1uZXcgbEplKEMuZ2V0Vmlld3BvcnREYW8oKSxDLmRvbUJpbmRpbmdzLEMud3RTZXR0aW5ncyxDLmV2ZW50TWFuYWdlcixDLnd0VGFibGUpLEMuc2VsZWN0aW9ucz1DLnd0U2V0''@;'; put 'put ''dGluZ3MuZ2V0U2V0dGluZygic2VsZWN0aW9ucyIpLEMud3RFdmVudD1uZXcgbkNlKEksQy5kb21CaW5kaW5ncyxDLnd0U2V0dGluZ3MsQy5ldmVudE1hbmFnZXIsQy53dFRhYmxlLEMuc2VsZWN0aW9ucyksQy53dE92ZXJsYXlzPW5ldyBWUWUocWRlKEMpLEksQy5kb21CaW5kaW5ncyxDLnd0''@;'; put 'put ''U2V0dGluZ3MsQy5ldmVudE1hbmFnZXIsQy53dFRhYmxlKSxDLmV4cG9ydFNldHRpbmdzQXNDbGFzc05hbWVzKCksQy5maW5kT3JpZ2luYWxIZWFkZXJzKCksQ31yZXR1cm4gZnVuY3Rpb24gdUplKGQsZyxoKXtnJiZ5a2UoZC5wcm90b3R5cGUsZyksaCYmeWtlKGQsaCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImV4cG9ydFNldHRpbmdzQXNDbGFzc05hbWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsST1bXSxqPVtdO1psKHtyb3dIZWFkZXJzOiJodFJvd0hlYWRlcnMiLGNvbHVtbkhlYWRlcnM6Imh0Q29s''@;'; put 'put ''dW1uSGVhZGVycyJ9LGZ1bmN0aW9uKGNlLF9lKXt5Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZyhfZSkubGVuZ3RoJiZqLnB1c2goY2UpLEkucHVzaChjZSl9KSx1bCh0aGlzLnd0VGFibGUud3RSb290RWxlbWVudC5wYXJlbnROb2RlLEkpLFAwKHRoaXMud3RUYWJsZS53dFJvb3RFbGVtZW50LnBh''@;'; put 'put ''cmVudE5vZGUsail9fSx7a2V5OiJnZXRWaWV3cG9ydERhbyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3JldHVybntnZXQgd290KCl7cmV0dXJuIHl9LGdldCB0b3BPdmVybGF5VHJpbW1pbmdDb250YWluZXIoKXtyZXR1cm4geS53dE92ZXJsYXlzLnRvcE92ZXJsYXkudHJpbW1pbmdD''@;'; put 'put ''b250YWluZXJ9LGdldCBpbmxpbmVTdGFydE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lcigpe3JldHVybiB5Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LnRyaW1taW5nQ29udGFpbmVyfSxnZXQgdG9wU2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4geS53dE92ZXJsYXlzLnRvcE92ZXJsYXku''@;'; put 'put ''Z2V0U2Nyb2xsUG9zaXRpb24oKX0sZ2V0IHRvcFBhcmVudE9mZnNldCgpe3JldHVybiB5Lnd0T3ZlcmxheXMudG9wT3ZlcmxheS5nZXRUYWJsZVBhcmVudE9mZnNldCgpfSxnZXQgaW5saW5lU3RhcnRTY3JvbGxQb3NpdGlvbigpe3JldHVybiB5Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVy''@;'; put 'put ''bGF5LmdldFNjcm9sbFBvc2l0aW9uKCl9LGdldCBpbmxpbmVTdGFydFBhcmVudE9mZnNldCgpe3JldHVybiB5Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFRhYmxlUGFyZW50T2Zmc2V0KCl9LGdldCB0b3BPdmVybGF5KCl7cmV0dXJuIHkud3RPdmVybGF5cy50b3BPdmVybGF5''@;'; put 'put ''fSxnZXQgaW5saW5lU3RhcnRPdmVybGF5KCl7cmV0dXJuIHkud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXl9LGdldCBib3R0b21PdmVybGF5KCl7cmV0dXJuIHkud3RPdmVybGF5cy5ib3R0b21PdmVybGF5fX19fV0pLGh9KGtkZSk7ZnVuY3Rpb24gd2tlKGQsZyl7Zm9yKHZhciBoPTA7''@;'; put 'put ''aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIHZKZT1mdW5jdGlvbigpe2Z1bmN0aW9u''@;'; put 'put ''IGQoZyl7KGZ1bmN0aW9uIGdKZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxnIGluc3RhbmNlb2Yga2RlP3RoaXMuX3dvdD1nOnRoaXMuX2luaXRGcm9tU2V0dGluZ3Mo''@;'; put 'put ''Zyl9cmV0dXJuIGZ1bmN0aW9uIG1KZShkLGcsaCl7ZyYmd2tlKGQucHJvdG90eXBlLGcpLGgmJndrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJfaW5pdEZyb21TZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oaCl7aC5m''@;'; put 'put ''YWNhZGU9ZnVuY3Rpb24odil7dmFyIHk9bmV3IGQodik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHl9fSx0aGlzLl93b3Q9bmV3IHBKZShoLnRhYmxlLGgpfX0se2tleToiZ3VpZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5ndWlkfX0se2tleToicm9vdERvY3VtZW50Iixn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudH19LHtrZXk6InJvb3RXaW5kb3ciLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZG9tQmluZGluZ3Mucm9vdFdpbmRvd319LHtrZXk6Ind0U2V0dGluZ3MiLGdldDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5nc319LHtrZXk6ImNsb25lU291cmNlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmNsb25lU291cmNlfX0se2tleToiY2xvbmVPdmVybGF5IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmNsb25lT3ZlcmxheX19LHtr''@;'; put 'put ''ZXk6InNlbGVjdGlvbnMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Quc2VsZWN0aW9uc319LHtrZXk6Ind0Vmlld3BvcnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qud3RWaWV3cG9ydH19LHtrZXk6Ind0T3ZlcmxheXMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLl93b3Qud3RPdmVybGF5c319LHtrZXk6Ind0VGFibGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qud3RUYWJsZX19LHtrZXk6Ind0RXZlbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qud3RFdmVudH19LHtrZXk6Ind0U2Nyb2xsIixnZXQ6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fd290Lnd0U2Nyb2xsfX0se2tleToiZHJhd24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZHJhd259LHNldDpmdW5jdGlvbihoKXt0aGlzLl93b3QuZHJhd249aH19LHtrZXk6ImRyYXdJbnRlcnJ1cHRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX3dvdC5kcmF3SW50ZXJydXB0ZWR9LHNldDpmdW5jdGlvbihoKXt0aGlzLl93b3QuZHJhd0ludGVycnVwdGVkPWh9fSx7a2V5OiJsYXN0TW91c2VPdmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lmxhc3RNb3VzZU92ZXJ9LHNldDpmdW5jdGlvbihoKXt0aGlzLl93b3Qu''@;'; put 'put ''bGFzdE1vdXNlT3Zlcj1ofX0se2tleToibW9tZW50dW1TY3JvbGxpbmciLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QubW9tZW50dW1TY3JvbGxpbmd9LHNldDpmdW5jdGlvbihoKXt0aGlzLl93b3QubW9tZW50dW1TY3JvbGxpbmc9aH19LHtrZXk6InRvdWNoQXBwbGllZCIsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC50b3VjaEFwcGxpZWR9LHNldDpmdW5jdGlvbihoKXt0aGlzLl93b3QudG91Y2hBcHBsaWVkPWh9fSx7a2V5OiJkb21CaW5kaW5ncyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5kb21CaW5kaW5nc319LHtrZXk6ImV2ZW50TGlz''@;'; put 'put ''dGVuZXJzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmV2ZW50TGlzdGVuZXJzfSxzZXQ6ZnVuY3Rpb24oaCl7dGhpcy5fd290LmV2ZW50TGlzdGVuZXJzPWh9fSx7a2V5OiJldmVudE1hbmFnZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZXZlbnRNYW5hZ2Vy''@;'; put 'put ''fX0se2tleToiY3JlYXRlQ2VsbENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gdGhpcy5fd290LmNyZWF0ZUNlbGxDb29yZHMoaCx2KX19LHtrZXk6ImNyZWF0ZUNlbGxSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3JldHVybiB0aGlzLl93b3QuY3JlYXRlQ2VsbFJhbmdl''@;'; put 'put ''KGgsdix5KX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5fd290LmRyYXcoaCksdGhpc319LHtrZXk6ImdldENlbGwiLHZhbHVlOmZ1bmN0aW9uKGgp''@;'; put 'put ''e3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIHRoaXMuX3dvdC5nZXRDZWxsKGgsdil9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJKXtyZXR1cm4gdGhpcy5fd290LnNjcm9s''@;'; put 'put ''bFZpZXdwb3J0KGgsdix5LEMsSSl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydEhvcml6b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3JldHVybiB0aGlzLl93b3Quc2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkoaCx2LHkpfX0se2tleToic2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5Iix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoLHYseSl7cmV0dXJuIHRoaXMuX3dvdC5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoaCx2LHkpfX0se2tleToiZ2V0Vmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5nZXRWaWV3cG9ydCgpfX0se2tleToiZ2V0T3ZlcmxheU5hbWUiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5jbG9uZU92ZXJsYXk/dGhpcy5fd290LmNsb25lT3ZlcmxheS50eXBlOiJtYXN0ZXIifX0se2tleToiZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5leHBvcnRTZXR0aW5n''@;'; put 'put ''c0FzQ2xhc3NOYW1lcygpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5ncy51cGRhdGUoaCx2KSx0aGlzfX0se2tleToiZ2V0U2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJKXtyZXR1cm4gdGhpcy5fd290Lnd0U2V0''@;'; put 'put ''dGluZ3MuZ2V0U2V0dGluZyhoLHYseSxDLEkpfX0se2tleToiaGFzU2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuX3dvdC53dFNldHRpbmdzLmhhc1NldHRpbmcoaCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3dvdC5kZXN0cm95KCl9fV0p''@;'; put 'put ''LGR9KCk7ZnVuY3Rpb24gYmtlKGQpe3ZhciBnPWQuaXNTaGlmdEtleSxoPWQuaXNMZWZ0Q2xpY2ssdj1kLmlzUmlnaHRDbGljayx5PWQuY29vcmRzLEM9ZC5zZWxlY3Rpb24sST1kLmNvbnRyb2xsZXIsaj1kLmNlbGxDb29yZHNGYWN0b3J5LGNlPUMuaXNTZWxlY3RlZCgpP0MuZ2V0U2VsZWN0''@;'; put 'put ''ZWRSYW5nZSgpLmN1cnJlbnQoKTpudWxsLF9lPUMuaXNTZWxlY3RlZEJ5Q29ybmVyKCksUmU9Qy5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKTtpZihnJiZjZSl5LnJvdz49MCYmeS5jb2w+PTAmJiFJLmNlbGw/Qy5zZXRSYW5nZUVuZCh5KTooX2V8fFJlKSYmeS5yb3c+PTAmJnkuY29sPj0wJiYh''@;'; put 'put ''SS5jZWxsP0Muc2V0UmFuZ2VFbmQoaih5LnJvdyx5LmNvbCkpOl9lJiZ5LnJvdzwwJiYhSS5jb2x1bW4/Qy5zZXRSYW5nZUVuZChqKGNlLnRvLnJvdyx5LmNvbCkpOlJlJiZ5LmNvbDwwJiYhSS5yb3c/Qy5zZXRSYW5nZUVuZChqKHkucm93LGNlLnRvLmNvbCkpOighX2UmJiFSZSYmeS5jb2w8''@;'; put 'put ''MHx8X2UmJnkuY29sPDApJiYhSS5yb3c/Qy5zZWxlY3RSb3dzKE1hdGgubWF4KGNlLmZyb20ucm93LDApLHkucm93LHkuY29sKTooIV9lJiYhUmUmJnkucm93PDB8fFJlJiZ5LnJvdzwwKSYmIUkuY29sdW1uJiZDLnNlbGVjdENvbHVtbnMoTWF0aC5tYXgoY2UuZnJvbS5jb2wsMCkseS5jb2ws''@;'; put 'put ''eS5yb3cpO2Vsc2V7dmFyIE5lPSFDLmluSW5TZWxlY3Rpb24oeSksS2U9aHx8diYmTmU7eS5yb3c8MCYmeS5jb2w+PTAmJiFJLmNvbHVtbj9LZSYmQy5zZWxlY3RDb2x1bW5zKHkuY29sLHkuY29sLHkucm93KTp5LmNvbDwwJiZ5LnJvdz49MCYmIUkucm93P0tlJiZDLnNlbGVjdFJvd3MoeS5y''@;'; put 'put ''b3cseS5yb3cseS5jb2wpOnkuY29sPj0wJiZ5LnJvdz49MCYmIUkuY2VsbD9LZSYmQy5zZXRSYW5nZVN0YXJ0KHkpOnkuY29sPDAmJnkucm93PDAmJkMuc2VsZWN0QWxsKCEwLCEwKX19dmFyIHlKZT1uZXcgTWFwKFtbIm1vdXNlZG93biIsYmtlXSxbIm1vdXNlb3ZlciIsZnVuY3Rpb24gQUpl''@;'; put 'put ''KGQpe3ZhciBoPWQuY29vcmRzLHY9ZC5zZWxlY3Rpb24seT1kLmNvbnRyb2xsZXIsQz1kLmNlbGxDb29yZHNGYWN0b3J5O2lmKGQuaXNMZWZ0Q2xpY2spe3ZhciBJPXYuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCksaj12LmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpLGNlPXYudGFibGVQcm9w''@;'; put 'put ''cy5jb3VudENvbHMoKSxfZT12LnRhYmxlUHJvcHMuY291bnRSb3dzKCk7aiYmIXkuY29sdW1uP3Yuc2V0UmFuZ2VFbmQoQyhfZS0xLGguY29sKSk6SSYmIXkucm93P3Yuc2V0UmFuZ2VFbmQoQyhoLnJvdyxjZS0xKSk6eS5jZWxsfHx2LnNldFJhbmdlRW5kKGgpfX1dLFsidG91Y2hzdGFydCIs''@;'; put 'put ''YmtlXV0pO2Z1bmN0aW9uIF9rZShkLGcpe3ZhciBoPWcuY29vcmRzLHY9Zy5zZWxlY3Rpb24seT1nLmNvbnRyb2xsZXIsQz1nLmNlbGxDb29yZHNGYWN0b3J5O3lKZS5nZXQoZC50eXBlKSh7Y29vcmRzOmgsc2VsZWN0aW9uOnYsY29udHJvbGxlcjp5LGNlbGxDb29yZHNGYWN0b3J5OkMsaXNT''@;'; put 'put ''aGlmdEtleTpkLnNoaWZ0S2V5LGlzTGVmdENsaWNrOmxlZShkKXx8InRvdWNoc3RhcnQiPT09ZC50eXBlLGlzUmlnaHRDbGljazpQdyhkKX0pfXZhciBDa2U9bmV3IFdlYWtNYXAsZTRlPVN5bWJvbCgicm9vdEluc3RhbmNlIik7ZnVuY3Rpb24gd0plKGQpe0NrZS5zZXQoZCwhMCl9ZnVuY3Rp''@;'; put 'put ''b24gYkplKGQpe3JldHVybiBkPT09ZTRlfWZ1bmN0aW9uIHQ0ZShkKXtyZXR1cm4gQ2tlLmhhcyhkKX1mdW5jdGlvbiBfeihkLGcpe3JldHVybiBmdW5jdGlvbiBrSmUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIENKZShkLGcpe3ZhciBoPW51bGw9PWQ/''@;'; put 'put ''bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSks''@;'; put 'put ''IWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fFNrZShkLGcpfHxmdW5jdGlvbiBfSmUoKXt0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGtrZShk''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24gRUplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIG40ZShkKX0oZCl8fGZ1bmN0aW9uIE1KZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJu''@;'; put 'put ''IEFycmF5LmZyb20oZCl9KGQpfHxTa2UoZCl8fGZ1bmN0aW9uIFNKZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2''@;'; put 'put ''ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFNrZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gbjRlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09''@;'; put 'put ''aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBuNGUo''@;'; put 'put ''ZCxnKX19ZnVuY3Rpb24gbjRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gTWtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2''@;'; put 'put ''PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFdTPW5ldyBXZWFrTWFwLElKZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7''@;'; put 'put ''KGZ1bmN0aW9uIHhKZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmluc3RhbmNlPWcsdGhpcy5ldmVudE1hbmFnZXI9bmV3IFAxKGcpLHRoaXMuc2V0dGluZ3M9''@;'; put 'put ''Zy5nZXRTZXR0aW5ncygpLHRoaXMuVEhFQUQ9dm9pZCAwLHRoaXMuVEJPRFk9dm9pZCAwLHRoaXMuX3d0PXZvaWQgMCx0aGlzLmFjdGl2ZVd0PXZvaWQgMCx0aGlzLnBvc3Rwb25lZEFkanVzdEVsZW1lbnRzU2l6ZT0hMSxXUy5zZXQodGhpcyx7c2VsZWN0aW9uTW91c2VEb3duOiExLG1vdXNl''@;'; put 'put ''RG93bjp2b2lkIDAsdGFibGU6dm9pZCAwLGxhc3RXaWR0aDowLGxhc3RIZWlnaHQ6MH0pLHRoaXMuY3JlYXRlRWxlbWVudHMoKSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksdGhpcy5pbml0aWFsaXplV2Fsa29udGFibGUoKX1yZXR1cm4gZnVuY3Rpb24gVEplKGQsZyxoKXtnJiZNa2UoZC5wcm90''@;'; put 'put ''b3R5cGUsZyksaCYmTWtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmluc3RhbmNlLmlzUmVuZGVyU3VzcGVuZGVkKCl8fCh0aGlzLmluc3RhbmNlLnJ1bkhvb2tz''@;'; put 'put ''KCJiZWZvcmVSZW5kZXIiLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyKSx0aGlzLnBvc3Rwb25lZEFkanVzdEVsZW1lbnRzU2l6ZSYmKHRoaXMucG9zdHBvbmVkQWRqdXN0RWxlbWVudHNTaXplPSExLHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCEwKSksdGhpcy5fd3QuZHJhdyghdGhp''@;'; put 'put ''cy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXIpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyUmVuZGVyIix0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlciksdGhpcy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXI9ITEsdGhpcy5pbnN0YW5jZS5yZW5kZXJDYWxsPSExKX19LHtrZXk6''@;'; put 'put ''ImFkanVzdEVsZW1lbnRzU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3RoaXMuaW5zdGFuY2UuaXNSZW5kZXJTdXNwZW5kZWQoKT90aGlzLnBvc3Rwb25lZEFkanVzdEVsZW1lbnRzU2l6''@;'; put 'put ''ZT0hMDp0aGlzLl93dC53dE92ZXJsYXlzLmFkanVzdEVsZW1lbnRzU2l6ZShoKX19LHtrZXk6ImdldENlbGxBdENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzLl93dC5nZXRDZWxsKGgsdik7cmV0dXJuIHk8MD9udWxsOnl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oaCx2LHksQyxJKXtyZXR1cm4gdGhpcy5fd3Quc2Nyb2xsVmlld3BvcnQoaCx2LHksQyxJKX19LHtrZXk6InNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5Iix2YWx1ZTpmdW5jdGlvbihoLHYseSl7cmV0dXJuIHRoaXMuX3d0LnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5''@;'; put 'put ''KGgsdix5KX19LHtrZXk6InNjcm9sbFZpZXdwb3J0VmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3JldHVybiB0aGlzLl93dC5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoaCx2LHkpfX0se2tleToiY3JlYXRlRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9V1MuZ2V0''@;'; put 'put ''KHRoaXMpLHY9dGhpcy5pbnN0YW5jZSx5PXYucm9vdEVsZW1lbnQsQz12LnJvb3REb2N1bWVudCxJPXkuZ2V0QXR0cmlidXRlKCJzdHlsZSIpO0kmJnkuc2V0QXR0cmlidXRlKCJkYXRhLW9yaWdpbmFsc3R5bGUiLEkpLFAwKHksImhhbmRzb250YWJsZSIpLGgudGFibGU9Qy5jcmVhdGVFbGVt''@;'; put 'put ''ZW50KCJUQUJMRSIpLFAwKGgudGFibGUsImh0Q29yZSIpLHRoaXMuaW5zdGFuY2UuZ2V0U2V0dGluZ3MoKS50YWJsZUNsYXNzTmFtZSYmUDAoaC50YWJsZSx0aGlzLmluc3RhbmNlLmdldFNldHRpbmdzKCkudGFibGVDbGFzc05hbWUpLHRoaXMuVEhFQUQ9Qy5jcmVhdGVFbGVtZW50KCJUSEVB''@;'; put 'put ''RCIpLGgudGFibGUuYXBwZW5kQ2hpbGQodGhpcy5USEVBRCksdGhpcy5UQk9EWT1DLmNyZWF0ZUVsZW1lbnQoIlRCT0RZIiksaC50YWJsZS5hcHBlbmRDaGlsZCh0aGlzLlRCT0RZKSx0aGlzLmluc3RhbmNlLnRhYmxlPWgudGFibGUsdGhpcy5pbnN0YW5jZS5jb250YWluZXIuaW5zZXJ0QmVm''@;'; put 'put ''b3JlKGgudGFibGUsdGhpcy5pbnN0YW5jZS5jb250YWluZXIuZmlyc3RDaGlsZCl9fSx7a2V5OiJyZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9V1MuZ2V0KHRoaXMpLHk9dGhpcy5pbnN0YW5jZSxDPXkucm9vdEVsZW1lbnQsST15LnJvb3REb2N1bWVudCxq''@;'; put 'put ''PXkuc2VsZWN0aW9uLGNlPUkuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vkb3duIixmdW5jdGlvbihfZSl7aWYodi5zZWxlY3Rpb25Nb3VzZURvd249ITAsIWguaXNUZXh0U2VsZWN0aW9uQWxsb3dlZChfZS50YXJnZXQpKXt2YXIg''@;'; put 'put ''UmU9aC5pbnN0YW5jZS5yb290V2luZG93O0UzZShSZSksX2UucHJldmVudERlZmF1bHQoKSxSZS5mb2N1cygpfX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2V1cCIsZnVuY3Rpb24oKXt2LnNlbGVjdGlvbk1vdXNlRG93bj0hMX0pLHRoaXMuZXZlbnRNYW5h''@;'; put 'put ''Z2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vtb3ZlIixmdW5jdGlvbihfZSl7di5zZWxlY3Rpb25Nb3VzZURvd24mJiFoLmlzVGV4dFNlbGVjdGlvbkFsbG93ZWQoX2UudGFyZ2V0KSYmKGguc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24mJkUzZShoLmluc3RhbmNlLnJvb3RXaW5kb3cp''@;'; put 'put ''LF9lLnByZXZlbnREZWZhdWx0KCkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihjZSwia2V5dXAiLGZ1bmN0aW9uKF9lKXtqLmlzSW5Qcm9ncmVzcygpJiYhX2Uuc2hpZnRLZXkmJmouZmluaXNoKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGNl''@;'; put 'put ''LCJtb3VzZXVwIixmdW5jdGlvbihfZSl7ai5pc0luUHJvZ3Jlc3MoKSYmbGVlKF9lKSYmai5maW5pc2goKSx2Lm1vdXNlRG93bj0hMSwoVDNlKEkuYWN0aXZlRWxlbWVudCl8fCFqLmlzU2VsZWN0ZWQoKSYmIWouaXNTZWxlY3RlZEJ5QW55SGVhZGVyKCkmJiFDLmNvbnRhaW5zKF9lLnRhcmdl''@;'; put 'put ''dCkmJiFQdyhfZSkpJiZoLmluc3RhbmNlLnVubGlzdGVuKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGNlLCJjb250ZXh0bWVudSIsZnVuY3Rpb24oX2Upe2ouaXNJblByb2dyZXNzKCkmJlB3KF9lKSYmKGouZmluaXNoKCksdi5tb3VzZURvd249ITEpfSksdGhpcy5l''@;'; put 'put ''dmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihjZSwidG91Y2hlbmQiLGZ1bmN0aW9uKCl7ai5pc0luUHJvZ3Jlc3MoKSYmai5maW5pc2goKSx2Lm1vdXNlRG93bj0hMX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoY2UsIm1vdXNlZG93biIsZnVuY3Rpb24oX2Upe3Zh''@;'; put 'put ''ciBSZT1fZS50YXJnZXQsTmU9X2UueHx8X2UuY2xpZW50WCxLZT1fZS55fHxfZS5jbGllbnRZLGh0PV9lLnRhcmdldDtpZighdi5tb3VzZURvd24mJkMmJmguaW5zdGFuY2Uudmlldyl7dmFyIEJ0PWguaW5zdGFuY2Uudmlldy5fd3Qud3RUYWJsZS5ob2xkZXI7aWYoaHQ9PT1CdCl7dmFyICR0''@;'; put 'put ''PVBjKEkpO2lmKEkuZWxlbWVudEZyb21Qb2ludChOZSskdCxLZSkhPT1CdHx8SS5lbGVtZW50RnJvbVBvaW50KE5lLEtlKyR0KSE9PUJ0KXJldHVybn1lbHNlIGZvcig7aHQhPT1jZTspe2lmKG51bGw9PT1odCl7aWYoX2UuaXNUYXJnZXRXZWJDb21wb25lbnQpYnJlYWs7cmV0dXJufWlmKGh0''@;'; put 'put ''PT09QylyZXR1cm47aHQ9aHQucGFyZW50Tm9kZX0oImZ1bmN0aW9uIj09dHlwZW9mIGguc2V0dGluZ3Mub3V0c2lkZUNsaWNrRGVzZWxlY3RzP2guc2V0dGluZ3Mub3V0c2lkZUNsaWNrRGVzZWxlY3RzKFJlKTpoLnNldHRpbmdzLm91dHNpZGVDbGlja0Rlc2VsZWN0cyk/aC5pbnN0YW5jZS5k''@;'; put 'put ''ZXNlbGVjdENlbGwoKTpoLmluc3RhbmNlLmRlc3Ryb3lFZGl0b3IoITEsITEpfX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodi50YWJsZSwic2VsZWN0c3RhcnQiLGZ1bmN0aW9uKF9lKXtoLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9ufHxkeihfZS50YXJnZXQpfHxf''@;'; put 'put ''ZS5wcmV2ZW50RGVmYXVsdCgpfSl9fSx7a2V5OiJ0cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4odj10aGlzLmluc3RhbmNlKS5fY3JlYXRlQ2VsbENvb3Jkcy5hcHBseSh2LGtrZSh0aGlzLnRyYW5zbGF0ZUZyb21S''@;'; put 'put ''ZW5kZXJhYmxlVG9WaXN1YWxJbmRleChoLnJvdyxoLmNvbCkpKX19LHtrZXk6InRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1oPj0wP3RoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFi''@;'; put 'put ''bGVJbmRleChoKTpoLEM9dj49MD90aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodik6djtyZXR1cm4gbnVsbD09PXkmJih5PWgpLG51bGw9PT1DJiYoQz12KSxbeSxDXX19LHtrZXk6ImNvdW50UmVuZGVyYWJsZUluZGV4ZXMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9TWF0aC5taW4oaC5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLHYpLEM9aC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoeS0xLC0xKTtyZXR1cm4gbnVsbD09PUM/MDpoLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoQykrMX19LHtrZXk6''@;'; put 'put ''ImNvdW50UmVuZGVyYWJsZUNvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY291bnRSZW5kZXJhYmxlSW5kZXhlcyh0aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLHRoaXMuc2V0dGluZ3MubWF4Q29scyl9fSx7a2V5OiJjb3VudFJlbmRlcmFibGVSb3dzIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvdW50UmVuZGVyYWJsZUluZGV4ZXModGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlcix0aGlzLnNldHRpbmdzLm1heFJvd3MpfX0se2tleToiY291bnROb3RIaWRkZW5Sb3dJbmRleGVzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlz''@;'; put 'put ''LmNvdW50Tm90SGlkZGVuSW5kZXhlcyhoLHYsdGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlcix0aGlzLmNvdW50UmVuZGVyYWJsZVJvd3MoKSl9fSx7a2V5OiJjb3VudE5vdEhpZGRlbkNvbHVtbkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMuY291bnROb3RIaWRk''@;'; put 'put ''ZW5JbmRleGVzKGgsdix0aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLHRoaXMuY291bnRSZW5kZXJhYmxlQ29sdW1ucygpKX19LHtrZXk6ImNvdW50Tm90SGlkZGVuSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7aWYoaXNOYU4oaCl8fGg8MClyZXR1cm4gMDt2YXIgST15''@;'; put 'put ''LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChoLHYpLGo9eS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGopKXJldHVybiAwO3ZhciBjZT0wO3JldHVybiB2PDA/Y2U9aisxOnY+MCYmKGNlPUMtaiksY2V9fSx7a2V5OiJjb3VudE5vdEhpZGRl''@;'; put 'put ''bkZpeGVkQ29sdW1uc1N0YXJ0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCksdj1NYXRoLm1pbihwYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkQ29sdW1uc1N0YXJ0LDEwKSxoKS0xO3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVuQ29sdW1uSW5k''@;'; put 'put ''ZXhlcyh2LC0xKX19LHtrZXk6ImNvdW50Tm90SGlkZGVuRml4ZWRSb3dzVG9wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuaW5zdGFuY2UuY291bnRSb3dzKCksdj1NYXRoLm1pbihwYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkUm93c1RvcCwxMCksaCktMTtyZXR1cm4gdGhpcy5j''@;'; put 'put ''b3VudE5vdEhpZGRlblJvd0luZGV4ZXModiwtMSl9fSx7a2V5OiJjb3VudE5vdEhpZGRlbkZpeGVkUm93c0JvdHRvbSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmluc3RhbmNlLmNvdW50Um93cygpLHY9TWF0aC5tYXgoaC1wYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkUm93c0Jv''@;'; put 'put ''dHRvbSwxMCksMCk7cmV0dXJuIHRoaXMuY291bnROb3RIaWRkZW5Sb3dJbmRleGVzKHYsMSl9fSx7a2V5OiJpc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkUm93c1RvcCgpK3RoaXMuY291''@;'; put 'put ''bnROb3RIaWRkZW5GaXhlZFJvd3NCb3R0b20oKSx2PXRoaXMuY291bnROb3RIaWRkZW5GaXhlZENvbHVtbnNTdGFydCgpO3JldHVybiB0aGlzLmluc3RhbmNlLmNvdW50UmVuZGVyZWRSb3dzKCk+aCYmdGhpcy5pbnN0YW5jZS5jb3VudFJlbmRlcmVkQ29scygpPnZ9fSx7a2V5OiJpbml0aWFs''@;'; put 'put ''aXplV2Fsa29udGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PVdTLmdldCh0aGlzKSx5PXtydGxNb2RlOnRoaXMuaW5zdGFuY2UuaXNSdGwoKSxleHRlcm5hbFJvd0NhbGN1bGF0b3I6dGhpcy5pbnN0YW5jZS5nZXRQbHVnaW4oImF1dG9Sb3dTaXplIikmJnRoaXMuaW5zdGFu''@;'; put 'put ''Y2UuZ2V0UGx1Z2luKCJhdXRvUm93U2l6ZSIpLmlzRW5hYmxlZCgpLHRhYmxlOnYudGFibGUsaXNEYXRhVmlld0luc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHQ0ZShoLmluc3RhbmNlKX0scHJldmVudE92ZXJmbG93OmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3MucHJldmVudE92ZXJm''@;'; put 'put ''bG93fSxwcmV2ZW50V2hlZWw6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zZXR0aW5ncy5wcmV2ZW50V2hlZWx9LHN0cmV0Y2hIOmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3Muc3RyZXRjaEh9LGRhdGE6ZnVuY3Rpb24oUmUsTmUpe3ZhciBLZTtyZXR1cm4oS2U9aC5pbnN0YW5jZSkuZ2V0RGF0''@;'; put 'put ''YUF0Q2VsbC5hcHBseShLZSxra2UoaC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgoUmUsTmUpKSl9LHRvdGFsUm93czpmdW5jdGlvbigpe3JldHVybiBoLmNvdW50UmVuZGVyYWJsZVJvd3MoKX0sdG90YWxDb2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIGguY291bnRSZW5k''@;'; put 'put ''ZXJhYmxlQ29sdW1ucygpfSxmaXhlZENvbHVtbnNTdGFydDpmdW5jdGlvbigpe3JldHVybiBoLmNvdW50Tm90SGlkZGVuRml4ZWRDb2x1bW5zU3RhcnQoKX0sZml4ZWRSb3dzVG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGguY291bnROb3RIaWRkZW5GaXhlZFJvd3NUb3AoKX0sZml4ZWRSb3dzQm90''@;'; put 'put ''dG9tOmZ1bmN0aW9uKCl7cmV0dXJuIGguY291bnROb3RIaWRkZW5GaXhlZFJvd3NCb3R0b20oKX0sc2hvdWxkUmVuZGVySW5saW5lU3RhcnRPdmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3MuZml4ZWRDb2x1bW5zU3RhcnQ+MHx8eS5yb3dIZWFkZXJzKCkubGVuZ3RoPjB9LHNo''@;'; put 'put ''b3VsZFJlbmRlclRvcE92ZXJsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zZXR0aW5ncy5maXhlZFJvd3NUb3A+MHx8eS5jb2x1bW5IZWFkZXJzKCkubGVuZ3RoPjB9LHNob3VsZFJlbmRlckJvdHRvbU92ZXJsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zZXR0aW5ncy5maXhlZFJvd3NCb3R0b20+''@;'; put 'put ''MH0sbWluU3BhcmVSb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3MubWluU3BhcmVSb3dzfSxyZW5kZXJBbGxSb3dzOnRoaXMuc2V0dGluZ3MucmVuZGVyQWxsUm93cyxyb3dIZWFkZXJzOmZ1bmN0aW9uKCl7dmFyIFJlPVtdO3JldHVybiBoLmluc3RhbmNlLmhhc1Jvd0hlYWRlcnMo''@;'; put 'put ''KSYmUmUucHVzaChmdW5jdGlvbihOZSxLZSl7dmFyIGh0PU5lPj0wP2guaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChOZSk6TmU7aC5hcHBlbmRSb3dIZWFkZXIoaHQsS2UpfSksaC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJHZXRSb3dIZWFk''@;'; put 'put ''ZXJSZW5kZXJlcnMiLFJlKSxSZX0sY29sdW1uSGVhZGVyczpmdW5jdGlvbigpe3ZhciBSZT1bXTtyZXR1cm4gaC5pbnN0YW5jZS5oYXNDb2xIZWFkZXJzKCkmJlJlLnB1c2goZnVuY3Rpb24oTmUsS2Upe3ZhciBodD1OZT49MD9oLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3Vh''@;'; put 'put ''bEZyb21SZW5kZXJhYmxlSW5kZXgoTmUpOk5lO2guYXBwZW5kQ29sSGVhZGVyKGh0LEtlKX0pLGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIixSZSksUmV9LGNvbHVtbldpZHRoOmZ1bmN0aW9uKFJlKXt2YXIgTmU9aC5pbnN0YW5jZS5jb2x1bW5J''@;'; put 'put ''bmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFJlKTtyZXR1cm4gaC5pbnN0YW5jZS5nZXRDb2xXaWR0aChudWxsPT09TmU/UmU6TmUpfSxyb3dIZWlnaHQ6ZnVuY3Rpb24oUmUpe3ZhciBOZT1oLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5k''@;'; put 'put ''ZXJhYmxlSW5kZXgoUmUpO3JldHVybiBoLmluc3RhbmNlLmdldFJvd0hlaWdodChudWxsPT09TmU/UmU6TmUpfSxjZWxsUmVuZGVyZXI6ZnVuY3Rpb24oUmUsTmUsS2Upe3ZhciBCdD1feihoLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChSZSxOZSksMiksJHQ9QnRbMF0s''@;'; put 'put ''aG49QnRbMV0sRG49aC5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIsJHQsaG4pLGlyPSR0LHByPWhuO2lmKEFycmF5LmlzQXJyYXkoRG4pKXt2YXIgRXI9X3ooRG4sMik7aXI9RXJbMF0scHI9RXJbMV19dmFyIEFyPWguaW5zdGFuY2UuZ2V0Q2VsbE1ldGEoaXIscHIp''@;'; put 'put ''LFlyPWguaW5zdGFuY2UuY29sVG9Qcm9wKHByKSxfaT1oLmluc3RhbmNlLmdldERhdGFBdFJvd1Byb3AoaXIsWXIpO2guaW5zdGFuY2UuaGFzSG9vaygiYmVmb3JlVmFsdWVSZW5kZXIiKSYmKF9pPWguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVZhbHVlUmVuZGVyIixfaSxBcikpLGguaW5z''@;'; put 'put ''dGFuY2UucnVuSG9va3MoImJlZm9yZVJlbmRlcmVyIixLZSwkdCxobixZcixfaSxBciksaC5pbnN0YW5jZS5nZXRDZWxsUmVuZGVyZXIoQXIpKGguaW5zdGFuY2UsS2UsJHQsaG4sWXIsX2ksQXIpLGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyUmVuZGVyZXIiLEtlLCR0LGhuLFlyLF9pLEFy''@;'; put 'put ''KX0sc2VsZWN0aW9uczp0aGlzLmluc3RhbmNlLnNlbGVjdGlvbi5oaWdobGlnaHQsaGlkZUJvcmRlck9uTW91c2VEb3duT3ZlcjpmdW5jdGlvbigpe3JldHVybiBoLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9ufSxvbldpbmRvd1Jlc2l6ZTpmdW5jdGlvbigpeyFoLmluc3RhbmNlfHxoLmlu''@;'; put 'put ''c3RhbmNlLmlzRGVzdHJveWVkfHxoLmluc3RhbmNlLnJlZnJlc2hEaW1lbnNpb25zKCl9LG9uQ2VsbE1vdXNlRG93bjpmdW5jdGlvbihSZSxOZSxLZSxodCl7dmFyIEJ0PWgudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhOZSksJHQ9e3JvdzohMSxjb2x1bW46ITEsY2Vs''@;'; put 'put ''bDohMX07aC5pbnN0YW5jZS5saXN0ZW4oKSxoLmFjdGl2ZVd0PWh0LHYubW91c2VEb3duPSEwLGguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsUmUsQnQsS2UsJHQpLCFOUyhSZSkmJihfa2UoUmUse2Nvb3JkczpCdCxzZWxlY3Rpb246aC5pbnN0YW5jZS5zZWxl''@;'; put 'put ''Y3Rpb24sY29udHJvbGxlcjokdCxjZWxsQ29vcmRzRmFjdG9yeTpmdW5jdGlvbihEbixpcil7cmV0dXJuIGguaW5zdGFuY2UuX2NyZWF0ZUNlbGxDb29yZHMoRG4saXIpfX0pLGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyT25DZWxsTW91c2VEb3duIixSZSxCdCxLZSksaC5hY3RpdmVXdD1o''@;'; put 'put ''Ll93dCl9LG9uQ2VsbENvbnRleHRNZW51OmZ1bmN0aW9uKFJlLE5lLEtlLGh0KXt2YXIgQnQ9aC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKE5lKTtoLmFjdGl2ZVd0PWh0LHYubW91c2VEb3duPSExLGguaW5zdGFuY2Uuc2VsZWN0aW9uLmlzSW5Qcm9ncmVzcygpJiZo''@;'; put 'put ''Lmluc3RhbmNlLnNlbGVjdGlvbi5maW5pc2goKSxoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxDb250ZXh0TWVudSIsUmUsQnQsS2UpLCFOUyhSZSkmJihoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixSZSxCdCxLZSksaC5hY3RpdmVXdD1oLl93''@;'; put 'put ''dCl9LG9uQ2VsbE1vdXNlT3V0OmZ1bmN0aW9uKFJlLE5lLEtlLGh0KXt2YXIgQnQ9aC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKE5lKTtoLmFjdGl2ZVd0PWh0LGguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlT3V0IixSZSxCdCxLZSksIU5TKFJl''@;'; put 'put ''KSYmKGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyT25DZWxsTW91c2VPdXQiLFJlLEJ0LEtlKSxoLmFjdGl2ZVd0PWguX3d0KX0sb25DZWxsTW91c2VPdmVyOmZ1bmN0aW9uKFJlLE5lLEtlLGh0KXt2YXIgQnQ9aC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKE5lKSwk''@;'; put 'put ''dD17cm93OiExLGNvbHVtbjohMSxjZWxsOiExfTtoLmFjdGl2ZVd0PWh0LGguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsUmUsQnQsS2UsJHQpLCFOUyhSZSkmJih2Lm1vdXNlRG93biYmX2tlKFJlLHtjb29yZHM6QnQsc2VsZWN0aW9uOmguaW5zdGFuY2Uuc2Vs''@;'; put 'put ''ZWN0aW9uLGNvbnRyb2xsZXI6JHQsY2VsbENvb3Jkc0ZhY3Rvcnk6ZnVuY3Rpb24oRG4saXIpe3JldHVybiBoLmluc3RhbmNlLl9jcmVhdGVDZWxsQ29vcmRzKERuLGlyKX19KSxoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlT3ZlciIsUmUsQnQsS2UpLGguYWN0aXZlV3Q9''@;'; put 'put ''aC5fd3QpfSxvbkNlbGxNb3VzZVVwOmZ1bmN0aW9uKFJlLE5lLEtlLGh0KXt2YXIgQnQ9aC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKE5lKTtoLmFjdGl2ZVd0PWh0LGguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlVXAiLFJlLEJ0LEtlKSwhTlMo''@;'; put 'put ''UmUpJiYhaC5pbnN0YW5jZS5pc0Rlc3Ryb3llZCYmKGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyT25DZWxsTW91c2VVcCIsUmUsQnQsS2UpLGguYWN0aXZlV3Q9aC5fd3QpfSxvbkNlbGxDb3JuZXJNb3VzZURvd246ZnVuY3Rpb24oUmUpe1JlLnByZXZlbnREZWZhdWx0KCksaC5pbnN0YW5j''@;'; put 'put ''ZS5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLFJlKX0sb25DZWxsQ29ybmVyRGJsQ2xpY2s6ZnVuY3Rpb24oUmUpe1JlLnByZXZlbnREZWZhdWx0KCksaC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGljayIsUmUpfSxiZWZvcmVEcmF3OmZ1''@;'; put 'put ''bmN0aW9uKFJlLE5lKXtyZXR1cm4gaC5iZWZvcmVSZW5kZXIoUmUsTmUpfSxvbkRyYXc6ZnVuY3Rpb24oUmUpe3JldHVybiBoLmFmdGVyUmVuZGVyKFJlKX0sb25TY3JvbGxWZXJ0aWNhbGx5OmZ1bmN0aW9uKCl7cmV0dXJuIGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyU2Nyb2xsVmVydGlj''@;'; put 'put ''YWxseSIpfSxvblNjcm9sbEhvcml6b250YWxseTpmdW5jdGlvbigpe3JldHVybiBoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIpfSxvbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIGguaW5zdGFuY2UucnVuSG9va3MoImJl''@;'; put 'put ''Zm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIil9LG9uQmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyOmZ1bmN0aW9uKFJlLE5lLEtlKXt2YXIgaHQ9aC5pbnN0YW5jZS5yb3dJbmRleE1hcHBlcixCdD1odC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFJlKSwkdD1oLmluc3RhbmNlLnJ1''@;'; put 'put ''bkhvb2tzKCJiZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXIiLEJ0LE5lLEtlKTtyZXR1cm4gaHQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChodC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoJHQsMSkpfSxvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjpmdW5jdGlvbihS''@;'; put 'put ''ZSxOZSxLZSl7dmFyIGh0PWguaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIsQnQ9aHQuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChSZSksJHQ9aC5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixCdCxOZSxLZSk7cmV0dXJuIGh0LmdldFJl''@;'; put 'put ''bmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoaHQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KCR0LDEpKX0sb25BZnRlckRyYXdTZWxlY3Rpb246ZnVuY3Rpb24oUmUsTmUsS2Upe3ZhciBodCwkdD1feihoLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChSZSxOZSksMiksaG49''@;'; put 'put ''JHRbMF0sRG49JHRbMV0saXI9aC5pbnN0YW5jZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSYW5nZSgpLHByPWlyLnNpemUoKTtpZihwcj4wKXt2YXIgQXI9aXIucGVla0J5SW5kZXgoKG51bGwhPUtlP0tlOjApKzEtcHIpO2h0PVtBci5mcm9tLnJvdyxBci5mcm9tLmNvbCxBci50by5yb3csQXIu''@;'; put 'put ''dG8uY29sXX1yZXR1cm4gaC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJEcmF3U2VsZWN0aW9uIixobixEbixodCxLZSl9LG9uQmVmb3JlRHJhd0JvcmRlcnM6ZnVuY3Rpb24oUmUsTmUpe3ZhciBLZT1feihSZSw0KSxCdD1LZVsxXSwkdD1LZVsyXSxobj1LZVszXSxEbj1baC5pbnN0YW5jZS5y''@;'; put 'put ''b3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KEtlWzBdKSxoLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoQnQpLGguaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRl''@;'; put 'put ''eCgkdCksaC5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGhuKV07cmV0dXJuIGguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZURyYXdCb3JkZXJzIixEbixOZSl9LG9uQmVmb3JlVG91Y2hTY3JvbGw6ZnVuY3Rpb24oKXtyZXR1cm4gaC5p''@;'; put 'put ''bnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlVG91Y2hTY3JvbGwiKX0sb25BZnRlck1vbWVudHVtU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyTW9tZW50dW1TY3JvbGwiKX0sb25CZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGg6ZnVuY3Rpb24oUmUs''@;'; put 'put ''TmUpe3ZhciBLZT1oLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoTmUpO3JldHVybiBoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgiLFJlLEtlKX0sb25Nb2RpZnlSb3dIZWFkZXJXaWR0aDpmdW5j''@;'; put 'put ''dGlvbihSZSl7cmV0dXJuIGguaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeVJvd0hlYWRlcldpZHRoIixSZSl9LG9uTW9kaWZ5R2V0Q2VsbENvb3JkczpmdW5jdGlvbihSZSxOZSxLZSl7dmFyIGh0PWguaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIsQnQ9aC5pbnN0YW5jZS5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlciwkdD1OZT49MD9CdC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KE5lKTpOZSxobj1SZT49MD9odC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFJlKTpSZSxEbj1oLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixobiwkdCxLZSk7aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShEbikpe3ZhciBpcj1feihEbiw0KSxwcj1pclswXSxFcj1pclsxXSxBcj1pclsyXSxZcj1pclszXTtyZXR1cm5bcHI+PTA/aHQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChodC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgocHIsMSkpOnByLEVyPj0wP0J0LmdldFJlbmRl''@;'; put 'put ''cmFibGVGcm9tVmlzdWFsSW5kZXgoQnQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEVyLDEpKTpFcixBcj49MD9odC5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGh0LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChBciwtMSkpOkFyLFlyPj0wP0J0LmdldFJlbmRlcmFibGVGcm9tVmlz''@;'; put 'put ''dWFsSW5kZXgoQnQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFlyLC0xKSk6WXJdfX0sdmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGU6ZnVuY3Rpb24oUmUpe3ZhciBOZT1oLnNldHRpbmdzLnZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0O2lmKCJhdXRvIj09PU5lJiZoLnNldHRpbmdz''@;'; put 'put ''LmZpeGVkUm93c1RvcCYmKE5lPTEwKSxOZT4wfHwiYXV0byI9PT1OZSl7dmFyIEtlPWguY291bnRSZW5kZXJhYmxlUm93cygpLGh0PVJlLnN0YXJ0Um93LEJ0PVJlLmVuZFJvdztpZigibnVtYmVyIj09dHlwZW9mIE5lKVJlLnN0YXJ0Um93PU1hdGgubWF4KGh0LU5lLDApLFJlLmVuZFJvdz1N''@;'; put 'put ''YXRoLm1pbihCdCtOZSxLZS0xKTtlbHNlIGlmKCJhdXRvIj09PU5lKXt2YXIgJHQ9TWF0aC5jZWlsKEJ0L0tlKjEyKTtSZS5zdGFydFJvdz1NYXRoLm1heChodC0kdCwwKSxSZS5lbmRSb3c9TWF0aC5taW4oQnQrJHQsS2UtMSl9fWguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVmlld3BvcnRS''@;'; put 'put ''b3dDYWxjdWxhdG9yT3ZlcnJpZGUiLFJlKX0sdmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGU6ZnVuY3Rpb24oUmUpe3ZhciBOZT1oLnNldHRpbmdzLnZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0O2lmKCJhdXRvIj09PU5lJiZoLnNldHRpbmdzLmZpeGVkQ29sdW1uc1N0YXJ0''@;'; put 'put ''JiYoTmU9MTApLE5lPjB8fCJhdXRvIj09PU5lKXt2YXIgS2U9aC5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCksaHQ9UmUuc3RhcnRDb2x1bW4sQnQ9UmUuZW5kQ29sdW1uO2lmKCJudW1iZXIiPT10eXBlb2YgTmUmJihSZS5zdGFydENvbHVtbj1NYXRoLm1heChodC1OZSwwKSxSZS5lbmRDb2x1''@;'; put 'put ''bW49TWF0aC5taW4oQnQrTmUsS2UtMSkpLCJhdXRvIj09PU5lKXt2YXIgJHQ9TWF0aC5jZWlsKEJ0L0tlKjYpO1JlLnN0YXJ0Q29sdW1uPU1hdGgubWF4KGh0LSR0LDApLFJlLmVuZENvbHVtbj1NYXRoLm1pbihCdCskdCxLZS0xKX19aC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJWaWV3cG9y''@;'; put 'put ''dENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsUmUpfSxyb3dIZWFkZXJXaWR0aDpmdW5jdGlvbigpe3JldHVybiBoLnNldHRpbmdzLnJvd0hlYWRlcldpZHRofSxjb2x1bW5IZWFkZXJIZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgUmU9aC5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5Q29sdW1uSGVh''@;'; put 'put ''ZGVySGVpZ2h0Iik7cmV0dXJuIGguc2V0dGluZ3MuY29sdW1uSGVhZGVySGVpZ2h0fHxSZX19O3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZUluaXRXYWxrb250YWJsZSIseSksdGhpcy5fd3Q9bmV3IHZKZSh5KSx0aGlzLmFjdGl2ZVd0PXRoaXMuX3d0O3ZhciBDPXRoaXMuX3d0Lnd0''@;'; put 'put ''VGFibGUuc3ByZWFkZXIsST10aGlzLmluc3RhbmNlLnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc2V0TGFzdFNpemUoSS53aWR0aCxJLmhlaWdodCksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJtb3VzZWRvd24iLGZ1bmN0aW9uKF9lKXtf''@;'; put 'put ''ZS50YXJnZXQ9PT1DJiYzPT09X2Uud2hpY2gmJl9lLnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJjb250ZXh0bWVudSIsZnVuY3Rpb24oX2Upe19lLnRhcmdldD09PUMmJjM9PT1fZS53aGljaCYmX2Uuc3RvcFByb3BhZ2F0aW9uKCl9''@;'; put 'put ''KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaW5zdGFuY2Uucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudCwiY2xpY2siLGZ1bmN0aW9uKCl7aC5zZXR0aW5ncy5vYnNlcnZlRE9NVmlzaWJpbGl0eSYmaC5fd3QuZHJhd0ludGVycnVwdGVkJiYoaC5pbnN0YW5j''@;'; put 'put ''ZS5mb3JjZUZ1bGxSZW5kZXI9ITAsaC5yZW5kZXIoKSl9KX19LHtrZXk6ImlzVGV4dFNlbGVjdGlvbkFsbG93ZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKGR6KGgpKXJldHVybiEwO3ZhciB2PUR3KGgsdGhpcy5pbnN0YW5jZS52aWV3Ll93dC53dFRhYmxlLnNwcmVhZGVyKTtyZXR1cm4hISgh''@;'; put 'put ''MD09PXRoaXMuc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24mJnZ8fCJjZWxsIj09PXRoaXMuc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24mJnRoaXMuaXNTZWxlY3RlZE9ubHlDZWxsKCkmJnZ8fCF0aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZ0aGlzLmlzQ2VsbEVkaXRlZCgp''@;'; put 'put ''JiZ0aGlzLmlzU2VsZWN0ZWRPbmx5Q2VsbCgpKX19LHtrZXk6ImlzTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBXUy5nZXQodGhpcykubW91c2VEb3dufX0se2tleToiaXNTZWxlY3RlZE9ubHlDZWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoLHY7cmV0dXJuIG51bGwhPT0o''@;'; put 'put ''aD1udWxsPT09KHY9dGhpcy5pbnN0YW5jZS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09dj92b2lkIDA6di5pc1NpbmdsZSgpKSYmdm9pZCAwIT09aCYmaH19LHtrZXk6ImlzQ2VsbEVkaXRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmluc3RhbmNlLmdldEFjdGl2''@;'; put 'put ''ZUVkaXRvcigpO3JldHVybiBoJiZoLmlzT3BlbmVkKCl9fSx7a2V5OiJiZWZvcmVSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aCYmdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlVmlld1JlbmRlciIsdGhpcy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXIsdil9fSx7a2V5OiJhZnRl''@;'; put 'put ''clJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7aCYmdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJWaWV3UmVuZGVyIix0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlcil9fSx7a2V5OiJhcHBlbmRSb3dIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodi5maXJzdENoaWxkKXt2''@;'; put 'put ''YXIgeT12LmZpcnN0Q2hpbGQ7aWYoIVhhKHksInJlbGF0aXZlIikpcmV0dXJuIENwKHYpLHZvaWQgdGhpcy5hcHBlbmRSb3dIZWFkZXIoaCx2KTt0aGlzLnVwZGF0ZUNlbGxIZWFkZXIoeS5xdWVyeVNlbGVjdG9yKCIucm93SGVhZGVyIiksaCx0aGlzLmluc3RhbmNlLmdldFJvd0hlYWRlcil9''@;'; put 'put ''ZWxzZXt2YXIgQz10aGlzLmluc3RhbmNlLEk9Qy5yb290RG9jdW1lbnQsaj1DLmdldFJvd0hlYWRlcixjZT1JLmNyZWF0ZUVsZW1lbnQoImRpdiIpLF9lPUkuY3JlYXRlRWxlbWVudCgic3BhbiIpO2NlLmNsYXNzTmFtZT0icmVsYXRpdmUiLF9lLmNsYXNzTmFtZT0icm93SGVhZGVyIix0aGlz''@;'; put 'put ''LnVwZGF0ZUNlbGxIZWFkZXIoX2UsaCxqKSxjZS5hcHBlbmRDaGlsZChfZSksdi5hcHBlbmRDaGlsZChjZSl9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJHZXRSb3dIZWFkZXIiLGgsdil9fSx7a2V5OiJhcHBlbmRDb2xIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodi5maXJz''@;'; put 'put ''dENoaWxkKXt2YXIgeT12LmZpcnN0Q2hpbGQ7WGEoeSwicmVsYXRpdmUiKT90aGlzLnVwZGF0ZUNlbGxIZWFkZXIoeS5xdWVyeVNlbGVjdG9yKCIuY29sSGVhZGVyIiksaCx0aGlzLmluc3RhbmNlLmdldENvbEhlYWRlcik6KENwKHYpLHRoaXMuYXBwZW5kQ29sSGVhZGVyKGgsdikpfWVsc2V7''@;'; put 'put ''dmFyIEM9dGhpcy5pbnN0YW5jZS5yb290RG9jdW1lbnQsST1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGo9Qy5jcmVhdGVFbGVtZW50KCJzcGFuIik7SS5jbGFzc05hbWU9InJlbGF0aXZlIixqLmNsYXNzTmFtZT0iY29sSGVhZGVyIix0aGlzLnVwZGF0ZUNlbGxIZWFkZXIoaixoLHRoaXMuaW5z''@;'; put 'put ''dGFuY2UuZ2V0Q29sSGVhZGVyKSxJLmFwcGVuZENoaWxkKGopLHYuYXBwZW5kQ2hpbGQoSSl9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGgsdil9fSx7a2V5OiJ1cGRhdGVDZWxsSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dixJPXRoaXMu''@;'; put 'put ''X3d0Lnd0T3ZlcmxheXMuZ2V0UGFyZW50T3ZlcmxheShoKXx8dGhpcy5fd3Q7aC5wYXJlbnROb2RlJiYoWGEoaCwiY29sSGVhZGVyIik/Qz1JLnd0VGFibGUuY29sdW1uRmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQodik6WGEoaCwicm93SGVhZGVyIikmJihDPUkud3RUYWJsZS5yb3dGaWx0ZXIu''@;'; put 'put ''c291cmNlVG9SZW5kZXJlZCh2KSkpLEM+LTE/T3coaCx5KHYpKTooUncoaCxTdHJpbmcuZnJvbUNoYXJDb2RlKDE2MCkpLFAwKGgsImNvcm5lckhlYWRlciIpKX19LHtrZXk6Im1heGltdW1WaXNpYmxlRWxlbWVudFdpZHRoIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgeT10aGlzLl93dC53dFZp''@;'; put 'put ''ZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCktaDtyZXR1cm4geT4wP3k6MH19LHtrZXk6Im1heGltdW1WaXNpYmxlRWxlbWVudEhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHk9dGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VIZWlnaHQoKS1oO3JldHVybiB5PjA/eTowfX0s''@;'; put 'put ''e2tleToic2V0TGFzdFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9V1MuZ2V0KHRoaXMpLEM9W2gsdl07eS5sYXN0V2lkdGg9Q1swXSx5Lmxhc3RIZWlnaHQ9Q1sxXX19LHtrZXk6ImdldExhc3RTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPVdTLmdldCh0aGlzKTtyZXR1cm57''@;'; put 'put ''d2lkdGg6aC5sYXN0V2lkdGgsaGVpZ2h0OmgubGFzdEhlaWdodH19fSx7a2V5OiJnZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaW5zdGFu''@;'; put 'put ''Y2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0Rmlyc3RWaXNpYmxlUm93KCkpfX0se2tleToiZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaW5z''@;'; put 'put ''dGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0TGFzdFZpc2libGVSb3coKSl9fSx7a2V5OiJnZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4''@;'; put 'put ''KHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCkpfX0se2tleToiZ2V0TGFzdEZ1bGx5VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVu''@;'; put 'put ''ZGVyYWJsZUluZGV4KHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0TGFzdFZpc2libGVDb2x1bW4oKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3d0LmRlc3Ryb3koKSx0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCl9fV0pLGR9KCk7Y29uc3Qg''@;'; put 'put ''REplPUlKZTt2YXIgQ3o9a3AoImNlbGxUeXBlcyIpLExKZT1Dei5yZWdpc3RlcixPSmU9Q3ouZ2V0SXRlbSxFa2U9Q3ouaGFzSXRlbSxSSmU9Q3ouZ2V0TmFtZXM7ZnVuY3Rpb24gR2VlKGQpe2lmKCFFa2UoZCkpdGhyb3cgRXJyb3IoJ1lvdSBkZWNsYXJlZCBjZWxsIHR5cGUgIicuY29uY2F0''@;'; put 'put ''KGQsJyIgYXMgYSBzdHJpbmcgdGhhdCBpcyBub3QgbWFwcGVkIHRvIGEga25vd24gb2JqZWN0LlxuICAgICAgICAgICAgICAgICBDZWxsIHR5cGUgbXVzdCBiZSBhbiBvYmplY3Qgb3IgYSBzdHJpbmcgbWFwcGVkIHRvIGFuIG9iamVjdCByZWdpc3RlcmVkIGJ5XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''ICJIYW5kc29udGFibGUuY2VsbFR5cGVzLnJlZ2lzdGVyQ2VsbFR5cGUiIG1ldGhvZCcpKTtyZXR1cm4gT0plKGQpfWZ1bmN0aW9uIHk4KGQsZyl7InN0cmluZyIhPXR5cGVvZiBkJiYoZD0oZz1kKS5DRUxMX1RZUEUpO3ZhciB2PWcuZWRpdG9yLHk9Zy5yZW5kZXJlcixDPWcudmFsaWRhdG9y''@;'; put 'put ''O3YmJm5kKGQsdikseSYmRWcoZCx5KSxDJiZETyhkLEMpLExKZShkLGcpfWZ1bmN0aW9uIHI0ZShkKXtyZXR1cm4ocjRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9dmFyIHhrZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLGk0ZT14a2UubGVuZ3RoO2Z1''@;'; put 'put ''bmN0aW9uIFdlZShkKXtmb3IodmFyIHYsZz1kKzEsaD0iIjtnPjA7KXY9KGctMSklaTRlLGg9U3RyaW5nLmZyb21DaGFyQ29kZSg2NSt2KStoLGc9cGFyc2VJbnQoKGctdikvaTRlLDEwKTtyZXR1cm4gaH1mdW5jdGlvbiBCSmUoZCl7dmFyIGc9MDtpZihkKWZvcih2YXIgaD0wLHY9ZC5sZW5n''@;'; put 'put ''dGgtMTtoPGQubGVuZ3RoO2grPTEsdi09MSlnKz1NYXRoLnBvdyhpNGUsdikqKHhrZS5pbmRleE9mKGRbaF0pKzEpO3JldHVybiBnLTF9ZnVuY3Rpb24gUEplKCl7dmFyIHYseSxkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxMDAsZz1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NCxoPVtdO2Zvcih2PTA7djxkO3YrKyl7dmFyIEM9W107Zm9yKHk9MDt5PGc7eSsrKUMucHVzaChXZWUoeSkrKHYrMSkpO2gucHVzaChDKX1yZXR1cm4gaH1mdW5jdGlvbiBGSmUoKXt2YXIgdix5''@;'; put 'put ''LGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjEwMCxnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo0LGg9W107Zm9yKHY9MDt2PGQ7disrKXt2YXIgQz17fTtmb3IoeT0wO3k8Zzt5''@;'; put 'put ''KyspQ1sicHJvcCIuY29uY2F0KHkpXT1XZWUoeSkrKHYrMSk7aC5wdXNoKEMpfXJldHVybiBofWZ1bmN0aW9uIEhKZShkLGcpe2Zvcih2YXIgdixoPVtdLHk9MDt5PGQ7eSsrKXt2PVtdO2Zvcih2YXIgQz0wO0M8ZztDKyspdi5wdXNoKCIiKTtoLnB1c2godil9cmV0dXJuIGh9ZnVuY3Rpb24g''@;'; put 'put ''a3ooZCxnKXt2YXIgaD12b2lkIDA9PT1nfHxnO3JldHVybiBmdW5jdGlvbih5LEMpe3JldHVybiBmdW5jdGlvbiBJKGope2lmKGope2lmKHMxKGosZCkmJnZvaWQgMCE9PWpbZF0pcmV0dXJuIGpbZF07aWYoczEoaiwidHlwZSIpJiZqLnR5cGUpe2lmKCJzdHJpbmciIT10eXBlb2Ygai50eXBl''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcignQ2VsbCAidHlwZSIgbXVzdCBiZSBhIHN0cmluZycpO3ZhciBjZT1HZWUoai50eXBlKTtpZihzMShjZSxkKSlyZXR1cm4gY2VbZF07aWYoaClyZXR1cm59cmV0dXJuIEkoT2JqZWN0LmdldFByb3RvdHlwZU9mKGopKX19KCJudW1iZXIiPT10eXBlb2YgeT90aGlz''@;'; put 'put ''LmdldENlbGxNZXRhKHksQyk6eSl9fWZ1bmN0aW9uIG80ZShkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxoPWQsdj1bXTtyZXR1cm4oIUFycmF5LmlzQXJyYXkoZCl8fCFBcnJheS5pc0FycmF5KGRbMF0pKSYmKGg9W2Rd''@;'; put 'put ''KSxoLmZvckVhY2goZnVuY3Rpb24oeSxDKXtBcnJheS5pc0FycmF5KHkpP3kuZm9yRWFjaChmdW5jdGlvbihJLGope3YucHVzaChbQytnLGosSV0pfSk6T2JqZWN0LmtleXMoeSkuZm9yRWFjaChmdW5jdGlvbihJKXt2LnB1c2goW0MrZyxJLHlbSV1dKX0pfSksdn1mdW5jdGlvbiBhNGUoZCl7''@;'; put 'put ''dmFyIGc9MDtyZXR1cm4gQXJyYXkuaXNBcnJheShkKSYmKGRbMF0mJkFycmF5LmlzQXJyYXkoZFswXSk/Zz1kWzBdLmxlbmd0aDpkWzBdJiZBbChkWzBdKSYmKGc9S3EoZFswXSkpKSxnfWZ1bmN0aW9uIFRrZShkKXtyZXR1cm4hIShBcnJheS5pc0FycmF5KGQpJiZkLmxlbmd0aCYmZC5ldmVy''@;'; put 'put ''eShmdW5jdGlvbihnKXtyZXR1cm4gQXJyYXkuaXNBcnJheShnKX0pKX1mdW5jdGlvbiBJa2UoZCl7cmV0dXJuISEoQXJyYXkuaXNBcnJheShkKSYmZC5sZW5ndGgmJmQuZXZlcnkoZnVuY3Rpb24oZyl7cmV0dXJuIm9iamVjdCI9PT1yNGUoZykmJiFBcnJheS5pc0FycmF5KGcpJiZudWxsIT09''@;'; put 'put ''Z30pKX1mdW5jdGlvbiBOSmUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBEa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1l''@;'; put 'put ''cmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgakplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjEmJnZv''@;'; put 'put ''aWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W107TkplKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmRhdGE9aCx0aGlzLmRhdGFUeXBlPSJhcnJheSIsdGhpcy5jb2xUb1Byb3A9ZnVuY3Rpb24oKXt9LHRoaXMucHJvcFRvQ29sPWZ1bmN0aW9uKCl7fX1yZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''VkplKGQsZyxoKXtnJiZEa2UoZC5wcm90b3R5cGUsZyksaCYmRGtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Im1vZGlmeVJvd0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2O3JldHVybiB0aGlzLmhvdC5oYXNI''@;'; put 'put ''b29rKCJtb2RpZnlSb3dEYXRhIikmJih2PXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlSb3dEYXRhIixoKSksdm9pZCAwPT09dnx8TnVtYmVyLmlzSW50ZWdlcih2KT90aGlzLmRhdGFbaF06dn19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kYXRhJiYwIT09dGhpcy5kYXRhLmxlbmd0aD90aGlzLmdldEJ5UmFuZ2UobnVsbCxudWxsLGgpOnRoaXMuZGF0YX19LHtrZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuZGF0YT1o''@;'; put 'put ''fX0se2tleToiZ2V0QXRDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1bXTtyZXR1cm4gR3IodGhpcy5kYXRhLGZ1bmN0aW9uKEMsSSl7dmFyIGo9di5nZXRBdENlbGwoSSxoKTt5LnB1c2goail9KSx5fX0se2tleToiZ2V0QXRSb3ciLHZhbHVlOmZ1bmN0aW9uKGgsdix5''@;'; put 'put ''KXt2YXIgQz10aGlzLEk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXSxqPXZvaWQgMD09PXYmJnZvaWQgMD09PXksY2U9bnVsbCxfZT1udWxsO2lmKGNlPXRoaXMubW9kaWZ5Um93RGF0YShoKSxBcnJheS5pc0FycmF5KGNlKSlfZT1bXSxq''@;'; put 'put ''P2NlLmZvckVhY2goZnVuY3Rpb24oS2UsaHQpe19lW2h0XT1DLmdldEF0UGh5c2ljYWxDZWxsKGgsaHQsY2UpfSk6cmEodix5LGZ1bmN0aW9uKEtlKXtfZVtLZS12XT1DLmdldEF0UGh5c2ljYWxDZWxsKGgsS2UsY2UpfSk7ZWxzZSBpZihBbChjZSl8fFUyKGNlKSlpZihfZT1JP1tdOnt9LCFq''@;'; put 'put ''fHxJKXt2YXIgUmU9MCxOZT10aGlzLmNvdW50Rmlyc3RSb3dLZXlzKCktMTtyYShSZSxOZSxmdW5jdGlvbihLZSl7dmFyIGh0PUMuY29sVG9Qcm9wKEtlKTtpZihLZT49KHZ8fFJlKSYmS2U8PSh5fHxOZSkmJiFOdW1iZXIuaXNJbnRlZ2VyKGh0KSl7dmFyIEJ0PUMuZ2V0QXRQaHlzaWNhbENl''@;'; put 'put ''bGwoaCxodCxjZSk7ST9fZS5wdXNoKEJ0KTpYcShfZSxodCxCdCl9fSl9ZWxzZSBabChjZSxmdW5jdGlvbihLZSxodCl7WHEoX2UsaHQsQy5nZXRBdFBoeXNpY2FsQ2VsbChoLGh0LGNlKSl9KTtyZXR1cm4gX2V9fSx7a2V5OiJzZXRBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtpZigh''@;'; put 'put ''KGg+PXRoaXMuY291bnRSb3dzKCl8fHY+PXRoaXMuY291bnRGaXJzdFJvd0tleXMoKSkpe2lmKHRoaXMuaG90Lmhhc0hvb2soIm1vZGlmeVNvdXJjZURhdGEiKSl7dmFyIEM9RlMoeSk7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJjZURhdGEiLGgsdGhpcy5wcm9wVG9Db2wodiksQywi''@;'; put 'put ''c2V0IiksQy5pc1RvdWNoZWQoKSYmKHk9Qy52YWx1ZSl9TnVtYmVyLmlzSW50ZWdlcih2KT90aGlzLmRhdGFbaF1bdl09eTpYcSh0aGlzLmRhdGFbaF0sdix5KX19fSx7a2V5OiJnZXRBdFBoeXNpY2FsQ2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPW51bGw7aWYoeSYmKEM9InN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiB2P1liZSh5LHYpOiJmdW5jdGlvbiI9PXR5cGVvZiB2P3YoeSk6eVt2XSksdGhpcy5ob3QuaGFzSG9vaygibW9kaWZ5U291cmNlRGF0YSIpKXt2YXIgST1GUyhDKTt0aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5U291cmNlRGF0YSIsaCx0aGlzLmNvbFRvUHJvcCh2KSxJ''@;'; put 'put ''LCJnZXQiKSxJLmlzVG91Y2hlZCgpJiYoQz1JLnZhbHVlKX1yZXR1cm4gQ319LHtrZXk6ImdldEF0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzLm1vZGlmeVJvd0RhdGEoaCk7cmV0dXJuIHRoaXMuZ2V0QXRQaHlzaWNhbENlbGwoaCx0aGlzLmNvbFRvUHJvcCh2KSx5KX19''@;'; put 'put ''LHtrZXk6ImdldEJ5UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFd''@;'; put 'put ''Om51bGwsQz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLEk9ITEsaj1udWxsLGNlPW51bGwsX2U9bnVsbCxSZT1udWxsO251bGw9PT12fHxudWxsPT09eT8oST0hMCxqPTAsX2U9dGhpcy5jb3VudFJvd3MoKS0xKTooaj1NYXRoLm1pbih2''@;'; put 'put ''LnJvdyx5LnJvdyksY2U9TWF0aC5taW4odi5jb2wseS5jb2wpLF9lPU1hdGgubWF4KHYucm93LHkucm93KSxSZT1NYXRoLm1heCh2LmNvbCx5LmNvbCkpO3ZhciBOZT1bXTtyZXR1cm4gcmEoaixfZSxmdW5jdGlvbihLZSl7TmUucHVzaChJP2guZ2V0QXRSb3coS2Usdm9pZCAwLHZvaWQgMCxD''@;'; put 'put ''KTpoLmdldEF0Um93KEtlLGNlLFJlLEMpKX0pLE5lfX0se2tleToiY291bnRSb3dzIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaG90Lmhhc0hvb2soIm1vZGlmeVNvdXJjZUxlbmd0aCIpKXt2YXIgaD10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5U291cmNlTGVuZ3RoIik7aWYoTnVtYmVy''@;'; put 'put ''LmlzSW50ZWdlcihoKSlyZXR1cm4gaH1yZXR1cm4gdGhpcy5kYXRhLmxlbmd0aH19LHtrZXk6ImNvdW50Rmlyc3RSb3dLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhNGUodGhpcy5kYXRhKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kYXRhPW51bGwsdGhp''@;'; put 'put ''cy5ob3Q9bnVsbH19XSksZH0oKTtjb25zdCBaSmU9akplO0woMjAyNzMpLEwoNTQ3NDApO3ZhciBMa2U9e19sb2NhbEhvb2tzOk9iamVjdC5jcmVhdGUobnVsbCksYWRkTG9jYWxIb29rOmZ1bmN0aW9uKGcsaCl7cmV0dXJuIHRoaXMuX2xvY2FsSG9va3NbZ118fCh0aGlzLl9sb2NhbEhvb2tz''@;'; put 'put ''W2ddPVtdKSx0aGlzLl9sb2NhbEhvb2tzW2ddLnB1c2goaCksdGhpc30scnVuTG9jYWxIb29rczpmdW5jdGlvbihnLGgsdix5LEMsSSxqKXtpZih0aGlzLl9sb2NhbEhvb2tzW2ddKWZvcih2YXIgY2U9dGhpcy5fbG9jYWxIb29rc1tnXS5sZW5ndGgsX2U9MDtfZTxjZTtfZSsrKWFlZSh0aGlz''@;'; put 'put ''Ll9sb2NhbEhvb2tzW2ddW19lXSx0aGlzLGgsdix5LEMsSSxqKX0sY2xlYXJMb2NhbEhvb2tzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2FsSG9va3M9e30sdGhpc319O01nKExrZSwiTUlYSU5fTkFNRSIsImxvY2FsSG9va3MiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29u''@;'; put 'put ''c3QgcmQ9TGtlO2Z1bmN0aW9uIEdKZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIE9rZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3Yu''@;'; put 'put ''ZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBZUz1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjAm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtHSmUodGhpcyxkKSx0aGlzLmluZGV4ZWRWYWx1ZXM9W10sdGhpcy5pbml0VmFsdWVPckZuPWd9cmV0dXJuIGZ1bmN0aW9uIFdKZShkLGcsaCl7ZyYmT2tlKGQucHJvdG90eXBlLGcpLGgmJk9rZShkLGgpLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXRWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXhlZFZhbHVlc319LHtrZXk6ImdldFZhbHVlQXRJbmRleCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5pbmRl''@;'; put 'put ''eGVkVmFsdWVzO2lmKGg8di5sZW5ndGgpcmV0dXJuIHZbaF19fSx7a2V5OiJzZXRWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuaW5kZXhlZFZhbHVlcz1oLnNsaWNlKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX19LHtrZXk6InNldFZhbHVlQXRJbmRleCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXtyZXR1cm4gaDx0aGlzLmluZGV4ZWRWYWx1ZXMubGVuZ3RoJiYodGhpcy5pbmRleGVkVmFsdWVzW2hdPXYsdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKSwhMCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRWYWx1ZXMoKX19LHtr''@;'; put 'put ''ZXk6ImdldExlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZXMoKS5sZW5ndGh9fSx7a2V5OiJzZXREZWZhdWx0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1''@;'; put 'put ''bWVudHNbMF06dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aDt0aGlzLmluZGV4ZWRWYWx1ZXMubGVuZ3RoPTAsVTIodGhpcy5pbml0VmFsdWVPckZuKT9yYSh2LTEsZnVuY3Rpb24oeSl7cmV0dXJuIGguaW5kZXhlZFZhbHVlcy5wdXNoKGguaW5pdFZhbHVlT3JGbih5KSl9KTpyYSh2LTEsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gaC5pbmRleGVkVmFsdWVzLnB1c2goaC5pbml0VmFsdWVPckZuKX0pLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5zZXREZWZhdWx0VmFsdWVzKGgpLHRoaXMucnVuTG9jYWxIb29r''@;'; put 'put ''cygiaW5pdCIpLHRoaXN9fSx7a2V5OiJpbnNlcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLmNsZWFyTG9jYWxIb29rcygpLHRoaXMuaW5kZXhlZFZhbHVlcz1udWxsLHRoaXMuaW5pdFZhbHVlT3JGbj1udWxsfX1dKSxkfSgpO2Z1bmN0aW9uIGw0ZShkKXtyZXR1cm4gZnVuY3Rpb24gSkplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHM0ZShkKX0oZCl8''@;'; put 'put ''fGZ1bmN0aW9uIFFKZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBVSmUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IGQpcmV0dXJuIHM0ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20o''@;'; put 'put ''ZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gczRlKGQsZyl9fShkKXx8ZnVuY3Rpb24gWUplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRl''@;'; put 'put ''cmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gczRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gdTRlKGQsZyxoKXtyZXR1cm5bXS5jb25jYXQobDRlKGQuc2xpY2UoMCxnKSksbDRlKGgpLGw0ZShkLnNsaWNlKGcpKSl9ZnVuY3Rpb24gU3ooZCxnKXtyZXR1cm4gZDQoZCxmdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4hMT09PWcuaW5jbHVkZXMoaCl9KX1mdW5jdGlvbiBjNGUoZCxnKXtyZXR1cm4gVGwoZCxmdW5jdGlvbihoKXtyZXR1cm4gaC1nLmZpbHRlcihmdW5jdGlvbih2KXtyZXR1cm4gdjxofSkubGVuZ3RofSl9ZnVuY3Rpb24gZjRlKGQsZyl7dmFyIGg9Z1swXSx2PWcubGVuZ3RoO3Jl''@;'; put 'put ''dHVybiBUbChkLGZ1bmN0aW9uKHkpe3JldHVybiB5Pj1oP3krdjp5fSl9ZnVuY3Rpb24gaDRlKGQpe3JldHVybihoNGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBSa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1to''@;'; put 'put ''XTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBNeigpe3JldHVybiBNej0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3Qm''@;'; put 'put ''JlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9JEplKGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFs''@;'; put 'put ''dWV9fSxNei5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gJEplKGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1VUyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBkNGUoZCxnKXtyZXR1cm4oZDRlPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gdFhlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09aDRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9p''@;'; put 'put ''ZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBuWGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJl''@;'; put 'put ''ZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBVUyhkKXtyZXR1cm4oVVM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19f''@;'; put 'put ''fHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1JMihZUyxyZCk7dmFyIEJrZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gcUplKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIg''@;'; put 'put ''YmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pLGcmJmQ0ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGVYZShkKXt2YXIgZz1mdW5jdGlvbiByWGUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1VUyhkKTtp''@;'; put 'put ''ZihnKXt2YXIgQz1VUyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdFhlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIGZ1bmN0aW9uIFhKZShkLGcpe2lmKCEo''@;'; put 'put ''ZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLGZ1bmN0aW9uKHYpe3JldHVybiB2fSl9cmV0dXJuIGZ1bmN0aW9uIEtKZShkLGcsaCl7ZyYmUmtlKGQucHJvdG90eXBlLGcp''@;'; put 'put ''LGgmJlJrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpbnNlcnQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9ZjRlKHRoaXMuaW5kZXhlZFZhbHVlcyxDKTt0aGlzLmluZGV4ZWRWYWx1ZXM9dTRlKEkseSxDKSxN''@;'; put 'put ''eihVUyhoLnByb3RvdHlwZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLHksQyl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPVN6KHRoaXMuaW5kZXhlZFZhbHVlcyx5KTt0aGlzLmluZGV4ZWRWYWx1ZXM9YzRlKEMseSksTXooVVMoaC5wcm90b3R5cGUpLCJyZW1v''@;'; put 'put ''dmUiLHRoaXMpLmNhbGwodGhpcyx5KX19XSksaH0oWVMpO2Z1bmN0aW9uIHA0ZShkKXtyZXR1cm4gZnVuY3Rpb24gbFhlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGc0ZShkKX0oZCl8fGZ1bmN0aW9uIGFYZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9''@;'; put 'put ''ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBvWGUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGc0ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs''@;'; put 'put ''bChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1w''@;'; put 'put ''ZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gZzRlKGQsZyl9fShkKXx8ZnVuY3Rpb24gaVhlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9i''@;'; put 'put ''amVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZzRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rp''@;'; put 'put ''b24gbTRlKGQsZyxoLHYpe3ZhciB5PWgubGVuZ3RoP2hbMF06dm9pZCAwO3JldHVybltdLmNvbmNhdChwNGUoZC5zbGljZSgwLHkpKSxwNGUoaC5tYXAoZnVuY3Rpb24oQyxJKXtyZXR1cm4gVTIodik/dihDLEkpOnZ9KSkscDRlKHZvaWQgMD09PXk/W106ZC5zbGljZSh5KSkpfWZ1bmN0aW9u''@;'; put 'put ''IHY0ZShkLGcpe3JldHVybiBkNChkLGZ1bmN0aW9uKGgsdil7cmV0dXJuITE9PT1nLmluY2x1ZGVzKHYpfSl9ZnVuY3Rpb24gQTRlKGQpe3JldHVybihBNGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBzWGUoZCxnKXtpZighKGQgaW5zdGFuY2Vv''@;'; put 'put ''ZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBQa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0h''@;'; put 'put ''MCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBFeigpe3JldHVybiBFej0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7''@;'; put 'put ''dmFyIHk9Y1hlKGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxFei5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gY1hlKGQsZyl7''@;'; put 'put ''Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1RUyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiB5NGUoZCxnKXtyZXR1cm4oeTRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9u''@;'; put 'put ''KHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gZFhlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09QTRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9y''@;'; put 'put ''cyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBwWGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3Jl''@;'; put 'put ''dHVybiBkfShkKX1mdW5jdGlvbiBRUyhkKXtyZXR1cm4oUVM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgVnc9ZnVuY3Rpb24o''@;'; put 'put ''ZCl7IWZ1bmN0aW9uIGZYZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90''@;'; put 'put ''b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZ5NGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBoWGUoZCl7dmFyIGc9ZnVuY3Rpb24g''@;'; put 'put ''Z1hlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5j''@;'; put 'put ''YWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9UVMoZCk7aWYoZyl7dmFyIEM9UVModGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3Vt''@;'; put 'put ''ZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGRYZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBzWGUodGhpcyxoKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gdVhlKGQsZyxoKXtnJiZQa2UoZC5wcm90b3R5cGUs''@;'; put 'put ''ZyksaCYmUGtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmluZGV4ZWRWYWx1ZXM9bTRlKHRoaXMuaW5kZXhlZFZhbHVlcywwLEMsdGhpcy5pbml0VmFsdWVP''@;'; put 'put ''ckZuKSxFeihRUyhoLnByb3RvdHlwZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLHksQyl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaW5kZXhlZFZhbHVlcz12NGUodGhpcy5pbmRleGVkVmFsdWVzLHkpLEV6KFFTKGgucHJvdG90eXBlKSwicmVtb3ZlIix0aGlz''@;'; put 'put ''KS5jYWxsKHRoaXMseSl9fV0pLGh9KFlTKTtmdW5jdGlvbiB3NGUoZCl7cmV0dXJuKHc0ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIG1YZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs''@;'; put 'put ''IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEZrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGI0ZShkLGcpe3JldHVybihiNGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiB3WGUo''@;'; put 'put ''ZCxnKXtpZihnJiYoIm9iamVjdCI9PT13NGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIGJYZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFllZShkKXtyZXR1cm4oWWVlPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIFVlZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gQVhlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcm''@;'; put 'put ''Jm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmln''@;'; put 'put ''dXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmI0ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHlYZShkKXt2YXIgZz1mdW5jdGlvbiBfWGUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0''@;'; put 'put ''LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30p''@;'; put 'put ''KSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1ZZWUoZCk7aWYoZyl7dmFyIEM9WWVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVy''@;'; put 'put ''biB3WGUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiBtWGUodGhpcyxoKSxnLmNhbGwodGhpcyx2KX1yZXR1cm4gZnVuY3Rpb24gdlhlKGQsZyxoKXtnJiZGa2UoZC5w''@;'; put 'put ''cm90b3R5cGUsZyksaCYmRmtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImdldEhpZGRlbkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEV1KHRoaXMuZ2V0VmFsdWVzKCksZnVuY3Rpb24oeSxDLEkpe3Jl''@;'; put 'put ''dHVybiBDJiZ5LnB1c2goSSkseX0sW10pfX1dKSxofShWdyk7ZnVuY3Rpb24gXzRlKGQpe3JldHVybihfNGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXty''@;'; put 'put ''ZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBDNGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFy''@;'; put 'put ''IGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiB4WGUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBIa2UoZCxnKXtmb3Io''@;'; put 'put ''dmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBPdigpe3JldHVy''@;'; put 'put ''biBPdj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9SVhlKGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5j''@;'; put 'put ''YWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxPdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSVhlKGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD13OChkKSk7KTtyZXR1cm4gZH1mdW5jdGlv''@;'; put 'put ''biBrNGUoZCxnKXtyZXR1cm4oazRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gT1hlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09XzRlKGcpfHwiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBOa2UoZCl9ZnVuY3Rpb24gTmtlKGQpe2lmKHZvaWQgMD09PWQp''@;'; put 'put ''dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiB3OChkKXtyZXR1cm4odzg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5i''@;'; put 'put ''aW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiBCWGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBRZWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIERYZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j''@;'; put 'put ''dGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZrNGUoZCxnKX0o''@;'; put 'put ''aCxkKTt2YXIgZz1mdW5jdGlvbiBMWGUoZCl7dmFyIGc9ZnVuY3Rpb24gUlhlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVy''@;'; put 'put ''biEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9dzgoZCk7aWYoZyl7dmFyIEM9dzgodGhp''@;'; put 'put ''cykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIE9YZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3ZhciB2O3hYZSh0aGlzLGgpO2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9''@;'; put 'put ''bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBCWGUoTmtlKHY9Zy5jYWxsLmFwcGx5KGcsW3RoaXNdLmNvbmNhdChDKSkpLCJvcmRlck9mSW5kZXhlcyIsW10pLHZ9cmV0dXJuIGZ1bmN0aW9uIFRYZShkLGcsaCl7ZyYmSGtlKGQucHJvdG90eXBlLGcp''@;'; put 'put ''LGgmJkhrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJnZXRWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm4gdGhpcy5vcmRlck9mSW5kZXhlcy5tYXAoZnVuY3Rpb24oQyl7cmV0dXJuIHku''@;'; put 'put ''aW5kZXhlZFZhbHVlc1tDXX0pfX0se2tleToic2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLm9yZGVyT2ZJbmRleGVzPWZ1bmN0aW9uIENYZShkKXtyZXR1cm4gZnVuY3Rpb24gRVhlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIEM0ZShkKX0oZCl8fGZ1bmN0aW9uIE1Y''@;'; put 'put ''ZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBTWGUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEM0''@;'; put 'put ''ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3Vt''@;'; put 'put ''ZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gQzRlKGQsZyl9fShkKXx8ZnVuY3Rpb24ga1hlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFu''@;'; put 'put ''Y2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KEFycmF5KHkubGVuZ3RoKS5rZXlzKCkpLE92KHc4KGgucHJvdG90eXBlKSwic2V0VmFsdWVzIix0aGlzKS5jYWxsKHRoaXMs''@;'; put 'put ''eSl9fSx7a2V5OiJzZXRWYWx1ZUF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMub3JkZXJPZkluZGV4ZXMubGVuZ3RoO3JldHVybiB5PHRoaXMuaW5kZXhlZFZhbHVlcy5s''@;'; put 'put ''ZW5ndGgmJih0aGlzLmluZGV4ZWRWYWx1ZXNbeV09QywhMT09PXRoaXMub3JkZXJPZkluZGV4ZXMuaW5jbHVkZXMoeSkmJnRoaXMub3JkZXJPZkluZGV4ZXMuc3BsaWNlKEksMCx5KSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIpLCEwKX19LHtrZXk6ImNsZWFyVmFsdWUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKHkpe3RoaXMub3JkZXJPZkluZGV4ZXM9U3oodGhpcy5vcmRlck9mSW5kZXhlcyxbeV0pLFUyKHRoaXMuaW5pdFZhbHVlT3JGbik/T3YodzgoaC5wcm90b3R5cGUpLCJzZXRWYWx1ZUF0SW5kZXgiLHRoaXMpLmNhbGwodGhpcyx5LHRoaXMuaW5pdFZhbHVlT3JGbih5KSk6T3Yodzgo''@;'; put 'put ''aC5wcm90b3R5cGUpLCJzZXRWYWx1ZUF0SW5kZXgiLHRoaXMpLmNhbGwodGhpcyx5LHRoaXMuaW5pdFZhbHVlT3JGbil9fSx7a2V5OiJnZXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3JkZXJPZkluZGV4ZXMubGVuZ3RofX0se2tleToic2V0RGVmYXVsdFZhbHVlcyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aDt0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aD0wLE92KHc4KGgucHJvdG90eXBlKSwic2V0RGVmYXVsdFZh''@;'; put 'put ''bHVlcyIsdGhpcykuY2FsbCh0aGlzLHkpfX0se2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaW5kZXhlZFZhbHVlcz1tNGUodGhpcy5pbmRleGVkVmFsdWVzLDAsQyx0aGlzLmluaXRWYWx1ZU9yRm4pLHRoaXMub3JkZXJPZkluZGV4ZXM9ZjRlKHRoaXMub3JkZXJPZklu''@;'; put 'put ''ZGV4ZXMsQyksT3YodzgoaC5wcm90b3R5cGUpLCJpbnNlcnQiLHRoaXMpLmNhbGwodGhpcyx5LEMpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLmluZGV4ZWRWYWx1ZXM9djRlKHRoaXMuaW5kZXhlZFZhbHVlcyx5KSx0aGlzLm9yZGVyT2ZJbmRleGVzPVN6KHRoaXMu''@;'; put 'put ''b3JkZXJPZkluZGV4ZXMseSksdGhpcy5vcmRlck9mSW5kZXhlcz1jNGUodGhpcy5vcmRlck9mSW5kZXhlcyx5KSxPdih3OChoLnByb3RvdHlwZSksInJlbW92ZSIsdGhpcykuY2FsbCh0aGlzLHkpfX0se2tleToiZ2V0RW50cmllcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3JldHVy''@;'; put 'put ''biB0aGlzLm9yZGVyT2ZJbmRleGVzLm1hcChmdW5jdGlvbihDKXtyZXR1cm5bQyx5LmdldFZhbHVlQXRJbmRleChDKV19KX19XSksaH0oWVMpO2Z1bmN0aW9uIFM0ZShkKXtyZXR1cm4oUzRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gUFhlKGQs''@;'; put 'put ''Zyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gVmtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8''@;'; put 'put ''ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gTTRlKGQsZyl7cmV0dXJuKE00ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpm''@;'; put 'put ''dW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFZYZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PVM0ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24galhlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs''@;'; put 'put ''ZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gSmVlKGQpe3JldHVybihKZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgeHo9''@;'; put 'put ''ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIEhYZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo''@;'; put 'put ''ZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZNNGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBOWGUoZCl7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gWlhlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUu''@;'; put 'put ''dmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SmVlKGQpO2lmKGcpe3ZhciBDPUplZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gVlhlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gUFhlKHRoaXMs''@;'; put 'put ''aCksZy5jYWxsKHRoaXMsdil9cmV0dXJuIGZ1bmN0aW9uIEZYZShkLGcsaCl7ZyYmVmtlKGQucHJvdG90eXBlLGcpLGgmJlZrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJnZXRUcmltbWVkSW5kZXhlcyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gRXUodGhpcy5nZXRWYWx1ZXMoKSxmdW5jdGlvbih5LEMsSSl7cmV0dXJuIEMmJnkucHVzaChJKSx5fSxbXSl9fV0pLGh9KFZ3KSxqa2U9bmV3IE1hcChbWyJoaWRpbmciLFVlZV0sWyJpbmRleCIsWVNdLFsibGlua2VkUGh5c2ljYWxJbmRleFRvVmFsdWUiLFFl''@;'; put 'put ''ZV0sWyJwaHlzaWNhbEluZGV4VG9WYWx1ZSIsVnddLFsidHJpbW1pbmciLHh6XV0pO2Z1bmN0aW9uIFprZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2''@;'; put 'put ''JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBFNGU9MCx4NGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIEdYZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg''@;'; put 'put ''Y2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmNvbGxlY3Rpb249bmV3IE1hcH1yZXR1cm4gZnVuY3Rpb24gV1hlKGQsZyxoKXtnJiZaa2UoZC5wcm90b3R5cGUsZyksaCYmWmtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiEx''@;'; put 'put ''fSl9KGQsW3trZXk6InJlZ2lzdGVyIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXM7ITE9PT10aGlzLmNvbGxlY3Rpb24uaGFzKGgpJiYodGhpcy5jb2xsZWN0aW9uLnNldChoLHYpLHYuYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkucnVuTG9jYWxIb29r''@;'; put 'put ''cygiY2hhbmdlIix2KX0pLEU0ZSs9MSl9fSx7a2V5OiJ1bnJlZ2lzdGVyIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLmNvbGxlY3Rpb24uZ2V0KGgpO0VvKHYpJiYodi5kZXN0cm95KCksdGhpcy5jb2xsZWN0aW9uLmRlbGV0ZShoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIs''@;'; put 'put ''diksRTRlLT0xKX19LHtrZXk6InVucmVnaXN0ZXJBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbih2LHkpe3JldHVybiBoLnVucmVnaXN0ZXIoeSl9KSx0aGlzLmNvbGxlY3Rpb24uY2xlYXIoKX19LHtrZXk6ImdldCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHUxKGgpP0FycmF5LmZyb20odGhpcy5jb2xsZWN0aW9uLnZhbHVlcygpKTp0aGlzLmNvbGxlY3Rpb24uZ2V0KGgpfX0se2tleToiZ2V0TGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbGxlY3Rpb24uc2l6ZX19LHtrZXk6InJlbW92''@;'; put 'put ''ZUZyb21FdmVyeSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jb2xsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24odil7di5yZW1vdmUoaCl9KX19LHtrZXk6Imluc2VydFRvRXZlcnkiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5jb2xsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24oeSl7eS5pbnNl''@;'; put 'put ''cnQoaCx2KX0pfX0se2tleToiaW5pdEV2ZXJ5Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbih2KXt2LmluaXQoaCl9KX19XSksZH0oKTtmdW5jdGlvbiBUNGUoZCl7cmV0dXJuKFQ0ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9s''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Yg''@;'; put 'put ''Z30pKGQpfWZ1bmN0aW9uIHprZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''di5rZXksdil9fWZ1bmN0aW9uIEk0ZShkLGcpe3JldHVybihJNGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBLWGUoZCxnKXtpZihnJiYoIm9iamVj''@;'; put 'put ''dCI9PT1UNGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uICRYZShkKXtpZih2''@;'; put 'put ''b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFhlZShkKXtyZXR1cm4oWGVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9STIoeDRlLHJkKTt2YXIgR2tlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBKWGUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9''@;'; put 'put ''PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6''@;'; put 'put ''ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSTRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gWFhlKGQpe3ZhciBnPWZ1bmN0aW9uIHFYZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNh''@;'; put 'put ''dGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVhlZShkKTtpZihnKXt2YXIgQz1YZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEtYZSh0''@;'; put 'put ''aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBVWGUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoQz1nLmNhbGwodGhpcykpLm1l''@;'; put 'put ''cmdlZFZhbHVlc0NhY2hlPVtdLEMuYWdncmVnYXRpb25GdW5jdGlvbj12LEMuZmFsbGJhY2tWYWx1ZT15LEN9cmV0dXJuIGZ1bmN0aW9uIFFYZShkLGcsaCl7ZyYmemtlKGQucHJvdG90eXBlLGcpLGgmJnprZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0''@;'; put 'put ''YWJsZTohMX0pfShoLFt7a2V5OiJnZXRNZXJnZWRWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTtpZighMD09PXkpcmV0dXJuIHRoaXMubWVyZ2VkVmFsdWVzQ2FjaGU7aWYoMD09''@;'; put 'put ''PXRoaXMuZ2V0TGVuZ3RoKCkpcmV0dXJuW107Zm9yKHZhciBDPVRsKHRoaXMuZ2V0KCksZnVuY3Rpb24oTmUpe3JldHVybiBOZS5nZXRWYWx1ZXMoKX0pLEk9W10saj1FbyhDWzBdKSYmQ1swXS5sZW5ndGh8fDAsY2U9MDtjZTxqO2NlKz0xKXtmb3IodmFyIF9lPVtdLFJlPTA7UmU8dGhpcy5n''@;'; put 'put ''ZXRMZW5ndGgoKTtSZSs9MSlfZS5wdXNoKENbUmVdW2NlXSk7SS5wdXNoKF9lKX1yZXR1cm4gVGwoSSx0aGlzLmFnZ3JlZ2F0aW9uRnVuY3Rpb24pfX0se2tleToiZ2V0TWVyZ2VkVmFsdWVBdEluZGV4Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuZ2V0TWVyZ2VkVmFsdWVzKEMp''@;'; put 'put ''W3ldO3JldHVybiBFbyhJKT9JOnRoaXMuZmFsbGJhY2tWYWx1ZX19LHtrZXk6InVwZGF0ZUNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWVyZ2VkVmFsdWVzQ2FjaGU9dGhpcy5nZXRNZXJnZWRWYWx1ZXMoITEpfX1dKSxofSh4NGUpO2Z1bmN0aW9uIFdrZShkLGcpe2Zvcih2YXIgaD0w''@;'; put 'put ''O2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFlrZShkLGcsaCl7aWYoIWcu''@;'; put 'put ''aGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX12YXIgRDRlPW5ldyBXZWFrTWFwLFVrZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXsoZnVuY3Rpb24gZUtlKGQsZyl7aWYo''@;'; put 'put ''IShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLGZ1bmN0aW9uIG5LZShkLGcsaCl7KGZ1bmN0aW9uIHJLZShkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBp''@;'; put 'put ''bml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9KHRoaXMsRDRlLHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pfXJldHVybiBmdW5jdGlvbiB0S2UoZCxnLGgpe2cmJldrZShkLnByb3RvdHlwZSxnKSxoJiZXa2Uo''@;'; put 'put ''ZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic3Vic2NyaWJlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5hZGRMb2NhbEhvb2soImNoYW5nZSIsaCksdGhpcy5fd3JpdGUoZnVuY3Rpb24gYUtlKGQsZyl7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIGxLZShkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsWWtlKGQsZywiZ2V0IikpfSh0aGlzLEQ0ZSkpLHRoaXN9fSx7a2V5OiJ1bnN1YnNjcmliZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ydW5Mb2NhbEhvb2tzKCJ1bnN1YnNj''@;'; put 'put ''cmliZSIpLHRoaXMuY2xlYXJMb2NhbEhvb2tzKCksdGhpc319LHtrZXk6Il93cml0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgubGVuZ3RoPjAmJnRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixoKSx0aGlzfX0se2tleToiX3dyaXRlSW5pdGlhbENoYW5nZXMiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGgpeyFmdW5jdGlvbiBpS2UoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBvS2UoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtn''@;'; put 'put ''LnZhbHVlPWh9fShkLFlrZShkLGcsInNldCIpLGgpLGh9KHRoaXMsRDRlLGgpfX1dKSxkfSgpO2Z1bmN0aW9uIFFrZShkLGcpe2Zvcih2YXIgaD1bXSx2PTAseT0wO3Y8ZC5sZW5ndGgmJnk8Zy5sZW5ndGg7disrLHkrKylkW3ZdIT09Z1t5XSYmaC5wdXNoKHtvcDoicmVwbGFjZSIsaW5kZXg6''@;'; put 'put ''eSxvbGRWYWx1ZTpkW3ZdLG5ld1ZhbHVlOmdbeV19KTtmb3IoO3Y8Zy5sZW5ndGg7disrKWgucHVzaCh7b3A6Imluc2VydCIsaW5kZXg6dixvbGRWYWx1ZTp2b2lkIDAsbmV3VmFsdWU6Z1t2XX0pO2Zvcig7eTxkLmxlbmd0aDt5KyspaC5wdXNoKHtvcDoicmVtb3ZlIixpbmRleDp5LG9sZFZh''@;'; put 'put ''bHVlOmRbeV0sbmV3VmFsdWU6dm9pZCAwfSk7cmV0dXJuIGh9ZnVuY3Rpb24gc0tlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gSmtlKGQsZyl7Zm9yKHZhciBoPTA7aDxn''@;'; put 'put ''Lmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gVHooZCxnLGgpeyhmdW5jdGlvbiBj''@;'; put 'put ''S2UoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLnNldChkLGgpfWZ1bmN0aW9uIEVwKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGZLZShkLGcp''@;'; put 'put ''e3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsWGtlKGQsZywiZ2V0IikpfWZ1bmN0aW9uIEtlZShkLGcsaCl7cmV0dXJuIGZ1bmN0aW9uIGhLZShkLGcsaCl7aWYoZy5zZXQpZy5zZXQuY2FsbChkLGgpO2Vsc2V7aWYoIWcud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2cudmFsdWU9aH19KGQsWGtlKGQsZywic2V0IiksaCksaH1mdW5jdGlvbiBYa2UoZCxnLGgpe2lmKCFnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIitoKyIgcHJpdmF0ZSBmaWVs''@;'; put 'put ''ZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZy5nZXQoZCl9STIoVWtlLHJkKTt2YXIgS2tlLCRlZT1uZXcgV2Vha01hcCxJej1uZXcgV2Vha01hcCxxZWU9bmV3IFdlYWtNYXAsZXRlPW5ldyBXZWFrTWFwLHR0ZT1uZXcgV2Vha01hcCxkS2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFy''@;'; put 'put ''IGc9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGg9Zy5pbml0aWFsSW5kZXhWYWx1ZTtzS2UodGhpcyxkKSxUeih0aGlzLCRlZSx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IFNldH0pLFR6KHRoaXMsSXose3dyaXRhYmxlOiEwLHZhbHVl''@;'; put 'put ''OltdfSksVHoodGhpcyxxZWUse3dyaXRhYmxlOiEwLHZhbHVlOltdfSksVHoodGhpcyxldGUse3dyaXRhYmxlOiEwLHZhbHVlOiExfSksVHoodGhpcyx0dGUse3dyaXRhYmxlOiEwLHZhbHVlOiExfSksS2VlKHRoaXMsdHRlLG51bGwhPWgmJmgpfXJldHVybiBmdW5jdGlvbiB1S2UoZCxnLGgp''@;'; put 'put ''e2cmJkprZShkLnByb3RvdHlwZSxnKSxoJiZKa2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiY3JlYXRlT2JzZXJ2ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PW5ldyBVa2U7cmV0dXJuIEVwKHRoaXMs''@;'; put 'put ''JGVlKS5hZGQodiksdi5hZGRMb2NhbEhvb2soInVuc3Vic2NyaWJlIixmdW5jdGlvbigpe0VwKGgsJGVlKS5kZWxldGUodil9KSx2Ll93cml0ZUluaXRpYWxDaGFuZ2VzKFFrZShFcCh0aGlzLEl6KSxFcCh0aGlzLHFlZSkpKSx2fX0se2tleToiZW1pdCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFy''@;'; put 'put ''IHY9RXAodGhpcyxxZWUpOyghRXAodGhpcyxldGUpfHxFcCh0aGlzLEl6KS5sZW5ndGghPT1oLmxlbmd0aCkmJigwPT09aC5sZW5ndGg/aD1uZXcgQXJyYXkodi5sZW5ndGgpLmZpbGwoRXAodGhpcyx0dGUpKTpLZWUodGhpcyxJeixuZXcgQXJyYXkoaC5sZW5ndGgpLmZpbGwoRXAodGhpcyx0''@;'; put 'put ''dGUpKSksRXAodGhpcyxldGUpfHwoS2VlKHRoaXMsZXRlLCEwKSx2PUVwKHRoaXMsSXopKSk7dmFyIHk9UWtlKHYsaCk7RXAodGhpcywkZWUpLmZvckVhY2goZnVuY3Rpb24oQyl7cmV0dXJuIEMuX3dyaXRlKHkpfSksS2VlKHRoaXMscWVlLGgpfX1dKSxkfSgpO2Z1bmN0aW9uIEw0ZShkKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gdktlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIE80ZShkKX0oZCl8fGZ1bmN0aW9uIG1LZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFy''@;'; put 'put ''cmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBnS2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIE80ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJiho''@;'; put 'put ''PWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gTzRlKGQsZyl9fShkKXx8ZnVuY3Rpb24g''@;'; put 'put ''cEtlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9''@;'; put 'put ''ZnVuY3Rpb24gTzRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gQUtlKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUo''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX1mdW5jdGlvbiAka2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwi''@;'; put 'put ''dmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgZVNlLHFrZT1uZXcgU2V0KFsiZ2V0Rmlyc3ROb3RIaWRkZW5JbmRleCJdKSxSNGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFyIGc9dGhpczsoZnVuY3Rpb24geUtlKGQs''@;'; put 'put ''Zyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaW5kZXhlc1NlcXVlbmNlPW5ldyBCa2UsdGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uPW5ldyBHa2UoZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIGguc29tZShmdW5jdGlvbih2KXtyZXR1cm4hMD09PXZ9KX0sITEpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb249bmV3IEdrZShmdW5jdGlvbihoKXtyZXR1cm4gaC5zb21lKGZ1bmN0aW9uKHYpe3JldHVybiEwPT09dn0pfSwhMSksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rp''@;'; put 'put ''b249bmV3IHg0ZSx0aGlzLmhpZGluZ0NoYW5nZXNPYnNlcnZhYmxlPW5ldyBkS2Uoe2luaXRpYWxJbmRleFZhbHVlOiExfSksdGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlPVtdLHRoaXMubm90SGlkZGVuSW5kZXhlc0NhY2hlPVtdLHRoaXMuaXNCYXRjaGVkPSExLHRoaXMuaW5kZXhlc1Nl''@;'; put 'put ''cXVlbmNlQ2hhbmdlZD0hMSx0aGlzLnRyaW1tZWRJbmRleGVzQ2hhbmdlZD0hMSx0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkPSExLHRoaXMucmVuZGVyYWJsZVBoeXNpY2FsSW5kZXhlc0NhY2hlPVtdLHRoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGU9bmV3IE1hcCx0aGlz''@;'; put 'put ''LmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGU9bmV3IE1hcCx0aGlzLmluZGV4ZXNTZXF1ZW5jZS5hZGRMb2NhbEhvb2soImNoYW5nZSIsZnVuY3Rpb24oKXtnLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9ITAsZy51cGRhdGVDYWNoZSgpLGcucnVuTG9jYWxIb29rcygiY2hhbmdl''@;'; put 'put ''IixnLmluZGV4ZXNTZXF1ZW5jZSxudWxsKX0pLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImNoYW5nZSIsZnVuY3Rpb24oaCl7Zy50cmltbWVkSW5kZXhlc0NoYW5nZWQ9ITAsZy51cGRhdGVDYWNoZSgpLGcucnVuTG9jYWxIb29rcygiY2hhbmdlIixoLGcudHJp''@;'; put 'put ''bW1pbmdNYXBzQ29sbGVjdGlvbil9KSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbihoKXtnLmhpZGRlbkluZGV4ZXNDaGFuZ2VkPSEwLGcudXBkYXRlQ2FjaGUoKSxnLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsaCxnLmhpZGluZ01hcHND''@;'; put 'put ''b2xsZWN0aW9uKX0pLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbihoKXtnLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsaCxnLnZhcmlvdXNNYXBzQ29sbGVjdGlvbil9KX1yZXR1cm4gZnVuY3Rpb24gd0tlKGQsZyxoKXtnJiYka2UoZC5w''@;'; put 'put ''cm90b3R5cGUsZyksaCYmJGtlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InN1c3BlbmRPcGVyYXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNCYXRjaGVkPSEwfX0se2tleToicmVzdW1lT3BlcmF0aW9ucyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQmF0Y2hlZD0hMSx0aGlzLnVwZGF0ZUNhY2hlKCl9fSx7a2V5OiJjcmVhdGVDaGFuZ2VzT2JzZXJ2ZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCJoaWRpbmciIT09aCl0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGluZGV4IG1hcCB0eXBlICIn''@;'; put 'put ''LmNvbmNhdChoLCciLicpKTtyZXR1cm4gdGhpcy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZS5jcmVhdGVPYnNlcnZlcigpfX0se2tleToiY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3JldHVybiB0aGlzLnJlZ2lzdGVyTWFwKGgsZnVuY3Rpb24gelhl''@;'; put 'put ''KGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO2lmKCFqa2UuaGFzKGQpKXRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIG1hcCB0eXBlICgiJy5jb25jYXQoZCwnIikgZG9lcyBub3QgZXhpc3QuJykpO3JldHVy''@;'; put 'put ''biBuZXcoamtlLmdldChkKSkoZyl9KHYseSkpfX0se2tleToicmVnaXN0ZXJNYXAiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLmdldChoKXx8dGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5nZXQoaCl8fHRoaXMudmFyaW91c01hcHNDb2xsZWN0''@;'; put 'put ''aW9uLmdldChoKSl0aHJvdyBFcnJvcignTWFwIHdpdGggbmFtZSAiJy5jb25jYXQoaCwnIiBoYXMgYmVlbiBhbHJlYWR5IHJlZ2lzdGVyZWQuJykpO3YgaW5zdGFuY2VvZiB4ej90aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24ucmVnaXN0ZXIoaCx2KTp2IGluc3RhbmNlb2YgVWVlP3RoaXMu''@;'; put 'put ''aGlkaW5nTWFwc0NvbGxlY3Rpb24ucmVnaXN0ZXIoaCx2KTp0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5yZWdpc3RlcihoLHYpO3ZhciB5PXRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCk7cmV0dXJuIHk+MCYmdi5pbml0KHkpLHZ9fSx7a2V5OiJ1bnJlZ2lzdGVyTWFwIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihoKXt0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlcihoKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXIoaCksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlcihoKX19LHtrZXk6InVucmVnaXN0ZXJBbGwiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXJBbGwoKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXJBbGwoKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyQWxsKCl9fSx7a2V5OiJnZXRQaHlzaWNhbEZyb21WaXN1YWxJ''@;'; put 'put ''bmRleCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlW2hdO3JldHVybiBFbyh2KT92Om51bGx9fSx7a2V5OiJnZXRQaHlzaWNhbEZyb21SZW5kZXJhYmxlSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMucmVuZGVyYWJsZVBoeXNp''@;'; put 'put ''Y2FsSW5kZXhlc0NhY2hlW2hdO3JldHVybiBFbyh2KT92Om51bGx9fSx7a2V5OiJnZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5mcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXNDYWNoZS5nZXQoaCk7cmV0dXJuIEVvKHYpP3Y6bnVsbH19''@;'; put 'put ''LHtrZXk6ImdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmdldFZpc3VhbEZyb21QaHlzaWNhbEluZGV4KHRoaXMuZ2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUluZGV4KGgpKX19LHtrZXk6ImdldFJlbmRlcmFibGVGcm9tVmlzdWFs''@;'; put 'put ''SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5nZXQoaCk7cmV0dXJuIEVvKHYpP3Y6bnVsbH19LHtrZXk6ImdldEZpcnN0Tm90SGlkZGVuSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxDPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpoLXY7cWtlLmhhcygiZ2V0Rmlyc3ROb3RIaWRkZW5JbmRleCIpJiYocWtlLmRlbGV0ZSgiZ2V0Rmlyc3RO''@;'; put 'put ''b3RIaWRkZW5JbmRleCIpLGMxKEQyKEtrZXx8KEtrZT1BS2UoWydUaGUgbWV0aG9kICJnZXRGaXJzdE5vdEhpZGRlbkluZGV4IiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWpvciByZWxlYXNlLiBQbGVh''@;'; put 'put ''c2UgdXNlICJnZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgiIGluc3RlYWQuJ10sWydUaGUgbWV0aG9kICJnZXRGaXJzdE5vdEhpZGRlbkluZGV4IiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHRcXHgyMFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Ig''@;'; put 'put ''cmVsZWFzZS4gUGxlYXNlIHVzZSAiZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4IiBpbnN0ZWFkLiddKSkpKSk7dmFyIEk9dGhpcy5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChoKTtyZXR1cm4gbnVsbD09PUk/ITA9PT15JiZDIT09aC12P3RoaXMuZ2V0Rmlyc3ROb3RIaWRkZW5JbmRleChD''@;'; put 'put ''LC12LCExLEMpOm51bGw6ITE9PT10aGlzLmlzSGlkZGVuKEkpP2g6dGhpcy5nZXRGaXJzdE5vdEhpZGRlbkluZGV4KGgrdix2LHksQyl9fSx7a2V5OiJnZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxDPXRoaXMuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoaCk7aWYobnVsbD09PUMpcmV0dXJuIG51bGw7aWYodGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLmhhcyhoKSlyZXR1cm4gaDt2YXIgST1BcnJheS5mcm9t''@;'; put 'put ''KHRoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5rZXlzKCkpLGo9LTE7cmV0dXJuLTE9PT0oaj12PjA/SS5maW5kSW5kZXgoZnVuY3Rpb24oY2Upe3JldHVybiBjZT5ofSk6SS5yZXZlcnNlKCkuZmluZEluZGV4KGZ1bmN0aW9uKGNlKXtyZXR1cm4gY2U8aH0pKT95P3Ro''@;'; put 'put ''aXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGgsLXYsITEpOm51bGw6SVtqXX19LHtrZXk6ImluaXRUb0xlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5nZXROdW1iZXJPZklu''@;'; put 'put ''ZGV4ZXMoKTt0aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGU9TDRlKG5ldyBBcnJheShoKS5rZXlzKCkpLHRoaXMubm90SGlkZGVuSW5kZXhlc0NhY2hlPUw0ZShuZXcgQXJyYXkoaCkua2V5cygpKSx0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzU2VxdWVuY2UuaW5pdCho''@;'; put 'put ''KSx0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24uaW5pdEV2ZXJ5KGgpLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpLHRoaXMuc3VzcGVuZE9wZXJhdGlvbnMoKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmluaXRFdmVyeShoKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5pbml0RXZl''@;'; put 'put ''cnkoaCksdGhpcy5yZXN1bWVPcGVyYXRpb25zKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJpbml0Iil9fSx7a2V5OiJmaXRUb0xlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKTtpZihoPHYpe3ZhciB5PUw0ZShBcnJheSh0aGlzLmdldE51bWJl''@;'; put 'put ''ck9mSW5kZXhlcygpLWgpLmtleXMoKSkubWFwKGZ1bmN0aW9uKEMpe3JldHVybiBDK2h9KTt0aGlzLnJlbW92ZUluZGV4ZXMoeSl9ZWxzZSB0aGlzLmluc2VydEluZGV4ZXModixoLXYpfX0se2tleToiZ2V0SW5kZXhlc1NlcXVlbmNlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlu''@;'; put 'put ''ZGV4ZXNTZXF1ZW5jZS5nZXRWYWx1ZXMoKX19LHtrZXk6InNldEluZGV4ZXNTZXF1ZW5jZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5pbmRleGVzU2VxdWVuY2Uuc2V0VmFsdWVzKGgpfX0se2tleToiZ2V0Tm90VHJpbW1lZEluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2''@;'; put 'put ''PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07aWYoITA9PT12KXJldHVybiB0aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGU7dmFyIHk9dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKTtyZXR1cm4geS5maWx0ZXIoZnVuY3Rpb24oQyl7''@;'; put 'put ''cmV0dXJuITE9PT1oLmlzVHJpbW1lZChDKX0pfX0se2tleToiZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKS5sZW5ndGh9fSx7a2V5OiJnZXROb3RIaWRkZW5JbmRleGVzIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBoPXRoaXMsdj0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2lmKCEwPT09dilyZXR1cm4gdGhpcy5ub3RIaWRkZW5JbmRleGVzQ2FjaGU7dmFyIHk9dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKTtyZXR1cm4geS5maWx0''@;'; put 'put ''ZXIoZnVuY3Rpb24oQyl7cmV0dXJuITE9PT1oLmlzSGlkZGVuKEMpfSl9fSx7a2V5OiJnZXROb3RIaWRkZW5JbmRleGVzTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE5vdEhpZGRlbkluZGV4ZXMoKS5sZW5ndGh9fSx7a2V5OiJnZXRSZW5kZXJhYmxlSW5kZXhlcyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTtpZighMD09PXYpcmV0dXJuIHRoaXMucmVuZGVyYWJsZVBoeXNpY2FsSW5kZXhlc0NhY2hlO3ZhciB5PXRoaXMuZ2V0Tm90VHJpbW1l''@;'; put 'put ''ZEluZGV4ZXMoKTtyZXR1cm4geS5maWx0ZXIoZnVuY3Rpb24oQyl7cmV0dXJuITE9PT1oLmlzSGlkZGVuKEMpfSl9fSx7a2V5OiJnZXRSZW5kZXJhYmxlSW5kZXhlc0xlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJhYmxlSW5kZXhlcygpLmxlbmd0aH19LHtr''@;'; put 'put ''ZXk6ImdldE51bWJlck9mSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5sZW5ndGh9fSx7a2V5OiJtb3ZlSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzOyJudW1iZXIiPT10eXBlb2YgaCYmKGg9W2hdKTt2YXIg''@;'; put 'put ''Qz1UbChoLGZ1bmN0aW9uKE5lKXtyZXR1cm4geS5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChOZSl9KSxJPXRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxqPWgubGVuZ3RoLGNlPVN6KHRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCksQyksX2U9SS1qO2lmKHYrajxJKXt2YXIg''@;'; put 'put ''UmU9Y2UuZmlsdGVyKGZ1bmN0aW9uKE5lKXtyZXR1cm4hMT09PXkuaXNUcmltbWVkKE5lKX0pW3ZdO19lPWNlLmluZGV4T2YoUmUpfXRoaXMuc2V0SW5kZXhlc1NlcXVlbmNlKHU0ZShjZSxfZSxDKSl9fSx7a2V5OiJpc1RyaW1tZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnRy''@;'; put 'put ''aW1taW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVBdEluZGV4KGgpfX0se2tleToiaXNIaWRkZW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmdldE1lcmdlZFZhbHVlQXRJbmRleChoKX19LHtrZXk6Imluc2VydEluZGV4ZXMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlcygpW2hdLEM9RW8oeSk/eTp0aGlzLmdldE51bWJlck9mSW5kZXhlcygpLEk9dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5pbmNsdWRlcyh5KT90aGlzLmdldEluZGV4ZXNTZXF1ZW5jZSgpLmluZGV4T2Yo''@;'; put 'put ''eSk6dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKSxqPVRsKG5ldyBBcnJheSh2KS5maWxsKEMpLGZ1bmN0aW9uKGNlLF9lKXtyZXR1cm4gY2UrX2V9KTt0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzU2VxdWVuY2UuaW5zZXJ0KEksaiksdGhpcy50cmltbWluZ01hcHNDb2xs''@;'; put 'put ''ZWN0aW9uLmluc2VydFRvRXZlcnkoSSxqKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmluc2VydFRvRXZlcnkoSSxqKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5pbnNlcnRUb0V2ZXJ5KEksaiksdGhpcy5yZXN1bWVPcGVyYXRpb25zKCl9fSx7a2V5OiJyZW1vdmVJbmRleGVzIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzU2VxdWVuY2UucmVtb3ZlKGgpLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5yZW1vdmVGcm9tRXZlcnkoaCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5yZW1vdmVGcm9tRXZlcnkoaCks''@;'; put 'put ''dGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24ucmVtb3ZlRnJvbUV2ZXJ5KGgpLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpfX0se2tleToidXBkYXRlQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50''@;'; put 'put ''c1swXSx2PXRoaXMuaW5kZXhlc1NlcXVlbmNlQ2hhbmdlZHx8dGhpcy50cmltbWVkSW5kZXhlc0NoYW5nZWR8fHRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQ7KCEwPT09aHx8ITE9PT10aGlzLmlzQmF0Y2hlZCYmITA9PT12KSYmKHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi51cGRhdGVD''@;'; put 'put ''YWNoZSgpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24udXBkYXRlQ2FjaGUoKSx0aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGU9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlcyghMSksdGhpcy5ub3RIaWRkZW5JbmRleGVzQ2FjaGU9dGhpcy5nZXROb3RIaWRkZW5JbmRleGVzKCExKSx0aGlz''@;'; put 'put ''LnJlbmRlcmFibGVQaHlzaWNhbEluZGV4ZXNDYWNoZT10aGlzLmdldFJlbmRlcmFibGVJbmRleGVzKCExKSx0aGlzLmNhY2hlRnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzKCksdGhpcy5jYWNoZUZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzKCksdGhpcy5oaWRkZW5JbmRleGVzQ2hh''@;'; put 'put ''bmdlZCYmdGhpcy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZS5lbWl0KHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVzKCkpLHRoaXMucnVuTG9jYWxIb29rcygiY2FjaGVVcGRhdGVkIix7aW5kZXhlc1NlcXVlbmNlQ2hhbmdlZDp0aGlzLmluZGV4ZXNTZXF1ZW5jZUNo''@;'; put 'put ''YW5nZWQsdHJpbW1lZEluZGV4ZXNDaGFuZ2VkOnRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkLGhpZGRlbkluZGV4ZXNDaGFuZ2VkOnRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWR9KSx0aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9ITEsdGhpcy50cmltbWVkSW5kZXhlc0NoYW5nZWQ9ITEs''@;'; put 'put ''dGhpcy5oaWRkZW5JbmRleGVzQ2hhbmdlZD0hMSl9fSx7a2V5OiJjYWNoZUZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCk7dGhpcy5mcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXNDYWNo''@;'; put 'put ''ZS5jbGVhcigpO2Zvcih2YXIgdj0wO3Y8aDt2Kz0xKXt2YXIgeT10aGlzLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KHYpO3RoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGUuc2V0KHksdil9fX0se2tleToiY2FjaGVGcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlcyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCk7dGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLmNsZWFyKCk7Zm9yKHZhciB2PTA7djxoO3YrPTEpe3ZhciB5PXRoaXMuZ2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUlu''@;'; put 'put ''ZGV4KHYpLEM9dGhpcy5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleCh5KTt0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuc2V0KEMsdil9fX1dKSxkfSgpO2Z1bmN0aW9uIHRTZShkKXt2YXIgaD0vXihbYS16QS1aXXsyfSktKFthLXpBLVpdezJ9KSQvLmV4ZWMoZCk7''@;'; put 'put ''cmV0dXJuIGg/IiIuY29uY2F0KGhbMV0udG9Mb3dlckNhc2UoKSwiLSIpLmNvbmNhdChoWzJdLnRvVXBwZXJDYXNlKCkpOmR9ZnVuY3Rpb24gblNlKGQpe0VvKGQpJiZSM2UoRDIoZVNlfHwoZVNlPWZ1bmN0aW9uIGJLZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJl''@;'; put 'put ''ZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9KFsnTGFuZ3VhZ2Ugd2l0aCBjb2RlICInLCciIHdhcyBub3QgZm91bmQuIFlvdSBzaG91bGQgcmVnaXN0ZXIgcGFydGljdWxhciBsYW5ndWFnZSBcbiAgICBiZWZvcmUgdXNpbmcg''@;'; put 'put ''aXQuIFJlYWQgbW9yZSBhYm91dCB0aGlzIGlzc3VlIGF0OiBodHRwczovL2RvY3MuaGFuZHNvbnRhYmxlLmNvbS9pMThuL21pc3NpbmctbGFuZ3VhZ2UtY29kZS4nXSxbJ0xhbmd1YWdlIHdpdGggY29kZSAiJywnIiB3YXMgbm90IGZvdW5kLiBZb3Ugc2hvdWxkIHJlZ2lzdGVyIHBhcnRpY3Vs''@;'; put 'put ''YXIgbGFuZ3VhZ2VcXHgyMFxuICAgIGJlZm9yZSB1c2luZyBpdC4gUmVhZCBtb3JlIGFib3V0IHRoaXMgaXNzdWUgYXQ6IGh0dHBzOi8vZG9jcy5oYW5kc29udGFibGUuY29tL2kxOG4vbWlzc2luZy1sYW5ndWFnZS1jb2RlLiddKSksZCkpfUkyKFI0ZSxyZCk7dmFyIHJTZT1rcCgicGhyYXNl''@;'; put 'put ''Rm9ybWF0dGVycyIpLGtLZT1yU2UucmVnaXN0ZXIsU0tlPXJTZS5nZXRWYWx1ZXM7IWZ1bmN0aW9uIE1LZShkLGcpe2tLZShkLGcpfSgicGx1cmFsaXplIixmdW5jdGlvbiBDS2UoZCxnKXtyZXR1cm4gQXJyYXkuaXNBcnJheShkKSYmTnVtYmVyLmlzSW50ZWdlcihnKT9kW2ddOmR9KTt2YXIg''@;'; put 'put ''eG8sSWw9IkNvbnRleHRNZW51Oml0ZW1zIixCNGU9IiIuY29uY2F0KElsLCIubm9JdGVtcyIpLFA0ZT0iIi5jb25jYXQoSWwsIi5pbnNlcnRSb3dBYm92ZSIpLEY0ZT0iIi5jb25jYXQoSWwsIi5pbnNlcnRSb3dCZWxvdyIpLEg0ZT0iIi5jb25jYXQoSWwsIi5pbnNlcnRDb2x1bW5PblRoZUxl''@;'; put 'put ''ZnQiKSxONGU9IiIuY29uY2F0KElsLCIuaW5zZXJ0Q29sdW1uT25UaGVSaWdodCIpLFY0ZT0iIi5jb25jYXQoSWwsIi5yZW1vdmVSb3ciKSxqNGU9IiIuY29uY2F0KElsLCIucmVtb3ZlQ29sdW1uIiksWjRlPSIiLmNvbmNhdChJbCwiLnVuZG8iKSx6NGU9IiIuY29uY2F0KElsLCIucmVkbyIp''@;'; put 'put ''LEc0ZT0iIi5jb25jYXQoSWwsIi5yZWFkT25seSIpLFc0ZT0iIi5jb25jYXQoSWwsIi5jbGVhckNvbHVtbiIpLFk0ZT0iIi5jb25jYXQoSWwsIi5jb3B5IiksVTRlPSIiLmNvbmNhdChJbCwiLmN1dCIpLFE0ZT0iIi5jb25jYXQoSWwsIi5mcmVlemVDb2x1bW4iKSxKNGU9IiIuY29uY2F0KEls''@;'; put 'put ''LCIudW5mcmVlemVDb2x1bW4iKSxYNGU9IiIuY29uY2F0KElsLCIubWVyZ2VDZWxscyIpLEs0ZT0iIi5jb25jYXQoSWwsIi51bm1lcmdlQ2VsbHMiKSwkNGU9IiIuY29uY2F0KElsLCIuYWRkQ29tbWVudCIpLHE0ZT0iIi5jb25jYXQoSWwsIi5lZGl0Q29tbWVudCIpLGVwZT0iIi5jb25jYXQo''@;'; put 'put ''SWwsIi5yZW1vdmVDb21tZW50IiksdHBlPSIiLmNvbmNhdChJbCwiLnJlYWRPbmx5Q29tbWVudCIpLG5wZT0iIi5jb25jYXQoSWwsIi5hbGlnbiIpLHJwZT0iIi5jb25jYXQoSWwsIi5hbGlnbi5sZWZ0IiksaXBlPSIiLmNvbmNhdChJbCwiLmFsaWduLmNlbnRlciIpLG9wZT0iIi5jb25jYXQo''@;'; put 'put ''SWwsIi5hbGlnbi5yaWdodCIpLGFwZT0iIi5jb25jYXQoSWwsIi5hbGlnbi5qdXN0aWZ5IiksbHBlPSIiLmNvbmNhdChJbCwiLmFsaWduLnRvcCIpLHNwZT0iIi5jb25jYXQoSWwsIi5hbGlnbi5taWRkbGUiKSx1cGU9IiIuY29uY2F0KElsLCIuYWxpZ24uYm90dG9tIiksY3BlPSIiLmNvbmNh''@;'; put 'put ''dChJbCwiLmJvcmRlcnMiKSxmcGU9IiIuY29uY2F0KElsLCIuYm9yZGVycy50b3AiKSxocGU9IiIuY29uY2F0KElsLCIuYm9yZGVycy5yaWdodCIpLGRwZT0iIi5jb25jYXQoSWwsIi5ib3JkZXJzLmJvdHRvbSIpLHBwZT0iIi5jb25jYXQoSWwsIi5ib3JkZXJzLmxlZnQiKSxncGU9IiIuY29u''@;'; put 'put ''Y2F0KElsLCIuYm9yZGVycy5yZW1vdmUiKSxtcGU9IiIuY29uY2F0KElsLCIubmVzdGVkSGVhZGVycy5pbnNlcnRDaGlsZFJvdyIpLHZwZT0iIi5jb25jYXQoSWwsIi5uZXN0ZWRIZWFkZXJzLmRldGFjaEZyb21QYXJlbnQiKSxBcGU9IiIuY29uY2F0KElsLCIuaGlkZUNvbHVtbiIpLHlwZT0i''@;'; put 'put ''Ii5jb25jYXQoSWwsIi5zaG93Q29sdW1uIiksd3BlPSIiLmNvbmNhdChJbCwiLmhpZGVSb3ciKSxicGU9IiIuY29uY2F0KElsLCIuc2hvd1JvdyIpLHUzPSJGaWx0ZXJzOiIsZXU9IiIuY29uY2F0KHUzLCJjb25kaXRpb25zIiksbnRlPSIiLmNvbmNhdChldSwiLm5vbmUiKSxfcGU9IiIuY29u''@;'; put 'put ''Y2F0KGV1LCIuaXNFbXB0eSIpLENwZT0iIi5jb25jYXQoZXUsIi5pc05vdEVtcHR5Iiksa3BlPSIiLmNvbmNhdChldSwiLmlzRXF1YWxUbyIpLFNwZT0iIi5jb25jYXQoZXUsIi5pc05vdEVxdWFsVG8iKSxNcGU9IiIuY29uY2F0KGV1LCIuYmVnaW5zV2l0aCIpLEVwZT0iIi5jb25jYXQoZXUs''@;'; put 'put ''Ii5lbmRzV2l0aCIpLHhwZT0iIi5jb25jYXQoZXUsIi5jb250YWlucyIpLFRwZT0iIi5jb25jYXQoZXUsIi5kb2VzTm90Q29udGFpbiIpLHhLZT0iIi5jb25jYXQoZXUsIi5ieVZhbHVlIiksSXBlPSIiLmNvbmNhdChldSwiLmdyZWF0ZXJUaGFuIiksRHBlPSIiLmNvbmNhdChldSwiLmdyZWF0''@;'; put 'put ''ZXJUaGFuT3JFcXVhbFRvIiksTHBlPSIiLmNvbmNhdChldSwiLmxlc3NUaGFuIiksT3BlPSIiLmNvbmNhdChldSwiLmxlc3NUaGFuT3JFcXVhbFRvIiksUnBlPSIiLmNvbmNhdChldSwiLmlzQmV0d2VlbiIpLEJwZT0iIi5jb25jYXQoZXUsIi5pc05vdEJldHdlZW4iKSxQcGU9IiIuY29uY2F0''@;'; put 'put ''KGV1LCIuYWZ0ZXIiKSxGcGU9IiIuY29uY2F0KGV1LCIuYmVmb3JlIiksSHBlPSIiLmNvbmNhdChldSwiLnRvZGF5IiksTnBlPSIiLmNvbmNhdChldSwiLnRvbW9ycm93IiksVnBlPSIiLmNvbmNhdChldSwiLnllc3RlcmRheSIpLGpwZT0iIi5jb25jYXQodTMsImxhYmVscy5maWx0ZXJCeUNv''@;'; put 'put ''bmRpdGlvbiIpLFpwZT0iIi5jb25jYXQodTMsImxhYmVscy5maWx0ZXJCeVZhbHVlIiksenBlPSIiLmNvbmNhdCh1MywibGFiZWxzLmNvbmp1bmN0aW9uIikscnRlPSIiLmNvbmNhdCh1MywibGFiZWxzLmRpc2p1bmN0aW9uIiksaXRlPSIiLmNvbmNhdCh1MywidmFsdWVzLmJsYW5rQ2VsbHMi''@;'; put 'put ''KSxHcGU9IiIuY29uY2F0KHUzLCJidXR0b25zLnNlbGVjdEFsbCIpLFdwZT0iIi5jb25jYXQodTMsImJ1dHRvbnMuY2xlYXIiKSxZcGU9IiIuY29uY2F0KHUzLCJidXR0b25zLm9rIiksVXBlPSIiLmNvbmNhdCh1MywiYnV0dG9ucy5jYW5jZWwiKSxRcGU9IiIuY29uY2F0KHUzLCJidXR0b25z''@;'; put 'put ''LnBsYWNlaG9sZGVyLnNlYXJjaCIpLEpwZT0iIi5jb25jYXQodTMsImJ1dHRvbnMucGxhY2Vob2xkZXIudmFsdWUiKSxYcGU9IiIuY29uY2F0KHUzLCJidXR0b25zLnBsYWNlaG9sZGVyLnNlY29uZFZhbHVlIik7ZnVuY3Rpb24gTG8oZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWNvbnN0IGlTZT0oTG8oeG89e2xhbmd1YWdlQ29kZToiZW4tVVMifSxCNGUsIk5vIGF2YWlsYWJsZSBvcHRpb25zIiksTG8oeG8sUDRlLCJJbnNlcnQgcm93''@;'; put 'put ''IGFib3ZlIiksTG8oeG8sRjRlLCJJbnNlcnQgcm93IGJlbG93IiksTG8oeG8sSDRlLCJJbnNlcnQgY29sdW1uIGxlZnQiKSxMbyh4byxONGUsIkluc2VydCBjb2x1bW4gcmlnaHQiKSxMbyh4byxWNGUsWyJSZW1vdmUgcm93IiwiUmVtb3ZlIHJvd3MiXSksTG8oeG8sajRlLFsiUmVtb3ZlIGNv''@;'; put 'put ''bHVtbiIsIlJlbW92ZSBjb2x1bW5zIl0pLExvKHhvLFo0ZSwiVW5kbyIpLExvKHhvLHo0ZSwiUmVkbyIpLExvKHhvLEc0ZSwiUmVhZCBvbmx5IiksTG8oeG8sVzRlLCJDbGVhciBjb2x1bW4iKSxMbyh4byxucGUsIkFsaWdubWVudCIpLExvKHhvLHJwZSwiTGVmdCIpLExvKHhvLGlwZSwiQ2Vu''@;'; put 'put ''dGVyIiksTG8oeG8sb3BlLCJSaWdodCIpLExvKHhvLGFwZSwiSnVzdGlmeSIpLExvKHhvLGxwZSwiVG9wIiksTG8oeG8sc3BlLCJNaWRkbGUiKSxMbyh4byx1cGUsIkJvdHRvbSIpLExvKHhvLFE0ZSwiRnJlZXplIGNvbHVtbiIpLExvKHhvLEo0ZSwiVW5mcmVlemUgY29sdW1uIiksTG8oeG8s''@;'; put 'put ''Y3BlLCJCb3JkZXJzIiksTG8oeG8sZnBlLCJUb3AiKSxMbyh4byxocGUsIlJpZ2h0IiksTG8oeG8sZHBlLCJCb3R0b20iKSxMbyh4byxwcGUsIkxlZnQiKSxMbyh4byxncGUsIlJlbW92ZSBib3JkZXIocykiKSxMbyh4bywkNGUsIkFkZCBjb21tZW50IiksTG8oeG8scTRlLCJFZGl0IGNvbW1l''@;'; put 'put ''bnQiKSxMbyh4byxlcGUsIkRlbGV0ZSBjb21tZW50IiksTG8oeG8sdHBlLCJSZWFkLW9ubHkgY29tbWVudCIpLExvKHhvLFg0ZSwiTWVyZ2UgY2VsbHMiKSxMbyh4byxLNGUsIlVubWVyZ2UgY2VsbHMiKSxMbyh4byxZNGUsIkNvcHkiKSxMbyh4byxVNGUsIkN1dCIpLExvKHhvLG1wZSwiSW5z''@;'; put 'put ''ZXJ0IGNoaWxkIHJvdyIpLExvKHhvLHZwZSwiRGV0YWNoIGZyb20gcGFyZW50IiksTG8oeG8sQXBlLFsiSGlkZSBjb2x1bW4iLCJIaWRlIGNvbHVtbnMiXSksTG8oeG8seXBlLFsiU2hvdyBjb2x1bW4iLCJTaG93IGNvbHVtbnMiXSksTG8oeG8sd3BlLFsiSGlkZSByb3ciLCJIaWRlIHJvd3Mi''@;'; put 'put ''XSksTG8oeG8sYnBlLFsiU2hvdyByb3ciLCJTaG93IHJvd3MiXSksTG8oeG8sbnRlLCJOb25lIiksTG8oeG8sX3BlLCJJcyBlbXB0eSIpLExvKHhvLENwZSwiSXMgbm90IGVtcHR5IiksTG8oeG8sa3BlLCJJcyBlcXVhbCB0byIpLExvKHhvLFNwZSwiSXMgbm90IGVxdWFsIHRvIiksTG8oeG8s''@;'; put 'put ''TXBlLCJCZWdpbnMgd2l0aCIpLExvKHhvLEVwZSwiRW5kcyB3aXRoIiksTG8oeG8seHBlLCJDb250YWlucyIpLExvKHhvLFRwZSwiRG9lcyBub3QgY29udGFpbiIpLExvKHhvLElwZSwiR3JlYXRlciB0aGFuIiksTG8oeG8sRHBlLCJHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8iKSxMbyh4byxM''@;'; put 'put ''cGUsIkxlc3MgdGhhbiIpLExvKHhvLE9wZSwiTGVzcyB0aGFuIG9yIGVxdWFsIHRvIiksTG8oeG8sUnBlLCJJcyBiZXR3ZWVuIiksTG8oeG8sQnBlLCJJcyBub3QgYmV0d2VlbiIpLExvKHhvLFBwZSwiQWZ0ZXIiKSxMbyh4byxGcGUsIkJlZm9yZSIpLExvKHhvLEhwZSwiVG9kYXkiKSxMbyh4''@;'; put 'put ''byxOcGUsIlRvbW9ycm93IiksTG8oeG8sVnBlLCJZZXN0ZXJkYXkiKSxMbyh4byxpdGUsIkJsYW5rIGNlbGxzIiksTG8oeG8sanBlLCJGaWx0ZXIgYnkgY29uZGl0aW9uIiksTG8oeG8sWnBlLCJGaWx0ZXIgYnkgdmFsdWUiKSxMbyh4byx6cGUsIkFuZCIpLExvKHhvLHJ0ZSwiT3IiKSxMbyh4''@;'; put 'put ''byxHcGUsIlNlbGVjdCBhbGwiKSxMbyh4byxXcGUsIkNsZWFyIiksTG8oeG8sWXBlLCJPSyIpLExvKHhvLFVwZSwiQ2FuY2VsIiksTG8oeG8sUXBlLCJTZWFyY2giKSxMbyh4byxKcGUsIlZhbHVlIiksTG8oeG8sWHBlLCJTZWNvbmQgdmFsdWUiKSx4byk7dmFyIEtwZT1pU2UubGFuZ3VhZ2VD''@;'; put 'put ''b2RlLG90ZT1rcCgibGFuZ3VhZ2VzRGljdGlvbmFyaWVzIiksSUtlPW90ZS5yZWdpc3RlcixvU2U9b3RlLmdldEl0ZW0sREtlPW90ZS5oYXNJdGVtLExLZT1vdGUuZ2V0VmFsdWVzO2Z1bmN0aW9uIGFTZShkLGcpe3ZhciBoPWQsdj1nO3JldHVybiBBbChkKSYmKGg9KHY9ZCkubGFuZ3VhZ2VD''@;'; put 'put ''b2RlKSxmdW5jdGlvbiBPS2UoZCxnKXtkIT09S3BlJiZmdW5jdGlvbiBfS2UoZCxnKXtabChnLGZ1bmN0aW9uKGgsdil7dTEoZFt2XSkmJihkW3ZdPWgpfSl9KGcsb1NlKEtwZSkpfShoLHYpLElLZShoLEFoKHYpKSxBaCh2KX1mdW5jdGlvbiBsU2UoZCl7cmV0dXJuICRwZShkKT9BaChvU2Uo''@;'; put 'put ''ZCkpOm51bGx9ZnVuY3Rpb24gJHBlKGQpe3JldHVybiBES2UoZCl9ZnVuY3Rpb24gc1NlKGQsZyxoKXt2YXIgdj1sU2UoZCk7aWYobnVsbD09PXYpcmV0dXJuIG51bGw7dmFyIHk9dltnXTtpZih1MSh5KSlyZXR1cm4gbnVsbDt2YXIgQz1mdW5jdGlvbiBCS2UoZCxnKXt2YXIgaD1kO3JldHVy''@;'; put 'put ''biBHcihmdW5jdGlvbiBFS2UoKXtyZXR1cm4gU0tlKCl9KCksZnVuY3Rpb24odil7aD12KGQsZyl9KSxofSh5LGgpO3JldHVybiBBcnJheS5pc0FycmF5KEMpP0NbMF06Q31mdW5jdGlvbiBQS2UoZCl7dmFyIGc9dFNlKGQpO3JldHVybiAkcGUoZyl8fChnPUtwZSxuU2UoZCkpLGd9YVNlKGlT''@;'; put 'put ''ZSksTCg1NTYxNSk7dmFyIGF0ZT0iYWN0aXZlLWhlYWRlciIsbHRlPSJhcmVhIixEej0iY2VsbCIsTHo9ImhlYWRlciIsZTZlPSJjdXN0b20tc2VsZWN0aW9uIjtmdW5jdGlvbiB0NmUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gVktlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQp''@;'; put 'put ''fHxmdW5jdGlvbiBOS2UoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9''@;'; put 'put ''aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5j''@;'; put 'put ''dGlvbiBIS2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHVTZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSks''@;'; put 'put ''Ik1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gdVNlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBGS2UoKXt0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHVTZShk''@;'; put 'put ''LGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIGNTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12''@;'; put 'put ''LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fUwoODM4NTcpO3ZhciB6S2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGpLZShkLGcpe2lmKCEo''@;'; put 'put ''ZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxoJiYodGhpcy5ldmVudE1hbmFnZXI9Zy5ldmVudE1hbmFnZXIsdGhpcy5pbnN0YW5jZT1nLHRoaXMud290PWcsdGhpcy5zZXR0aW5ncz1oLHRo''@;'; put 'put ''aXMubW91c2VEb3duPSExLHRoaXMubWFpbj1udWxsLHRoaXMudG9wPW51bGwsdGhpcy5ib3R0b209bnVsbCx0aGlzLnN0YXJ0PW51bGwsdGhpcy5lbmQ9bnVsbCx0aGlzLnRvcFN0eWxlPW51bGwsdGhpcy5ib3R0b21TdHlsZT1udWxsLHRoaXMuc3RhcnRTdHlsZT1udWxsLHRoaXMuZW5kU3R5''@;'; put 'put ''bGU9bnVsbCx0aGlzLmNvcm5lckRlZmF1bHRTdHlsZT17d2lkdGg6IjZweCIsaGVpZ2h0OiI2cHgiLGJvcmRlcldpZHRoOiIxcHgiLGJvcmRlclN0eWxlOiJzb2xpZCIsYm9yZGVyQ29sb3I6IiNGRkYifSx0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0PS1wYXJzZUludCh0aGlzLmNvcm5l''@;'; put 'put ''ckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMix0aGlzLmNvcm5lcj1udWxsLHRoaXMuY29ybmVyU3R5bGU9bnVsbCx0aGlzLmNyZWF0ZUJvcmRlcnMoaCksdGhpcy5yZWdpc3Rlckxpc3RlbmVycygpKX1yZXR1cm4gZnVuY3Rpb24gWktlKGQsZyxoKXtnJiZjU2UoZC5wcm90b3R5cGUsZyksaCYm''@;'; put 'put ''Y1NlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InJlZ2lzdGVyTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj10aGlzLndvdC5yb290RG9jdW1lbnQuYm9keTt0aGlzLmV2ZW50TWFuYWdlci5h''@;'; put 'put ''ZGRFdmVudExpc3RlbmVyKHYsIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbk1vdXNlRG93bigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih2LCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiBoLm9uTW91c2VVcCgpfSk7Zm9yKHZhciB5PWZ1bmN0aW9u''@;'; put 'put ''KGNlLF9lKXtoLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGgubWFpbi5jaGlsZE5vZGVzW2NlXSwibW91c2VlbnRlciIsZnVuY3Rpb24oTmUpe3JldHVybiBoLm9uTW91c2VFbnRlcihOZSxoLm1haW4uY2hpbGROb2Rlc1tjZV0pfSl9LEM9MCxJPXRoaXMubWFpbi5jaGlsZE5vZGVz''@;'; put 'put ''Lmxlbmd0aDtDPEk7QysrKXkoQyl9fSx7a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdXNlRG93bj0hMH19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdXNlRG93bj0hMX19LHtrZXk6Im9uTW91c2VFbnRlciIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oaCx2KXtpZih0aGlzLm1vdXNlRG93biYmdGhpcy53b3QuZ2V0U2V0dGluZygiaGlkZUJvcmRlck9uTW91c2VEb3duT3ZlciIpKXtoLnByZXZlbnREZWZhdWx0KCksdjgoaCk7dmFyIHk9dGhpcyxDPXRoaXMud290LnJvb3REb2N1bWVudC5ib2R5LEk9di5nZXRCb3VuZGluZ0NsaWVudFJl''@;'; put 'put ''Y3QoKTt2LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vtb3ZlIixmdW5jdGlvbiBjZShfZSl7KGZ1bmN0aW9uIGooX2Upe2lmKF9lLmNsaWVudFk8TWF0aC5mbG9vcihJLnRvcCl8fF9lLmNsaWVudFk+TWF0aC5jZWlsKEku''@;'; put 'put ''dG9wK0kuaGVpZ2h0KXx8X2UuY2xpZW50WDxNYXRoLmZsb29yKEkubGVmdCl8fF9lLmNsaWVudFg+TWF0aC5jZWlsKEkubGVmdCtJLndpZHRoKSlyZXR1cm4hMH0pKF9lKSYmKHkuZXZlbnRNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoQywibW91c2Vtb3ZlIixjZSksdi5zdHlsZS5kaXNw''@;'; put 'put ''bGF5PSJibG9jayIpfSl9fX0se2tleToiY3JlYXRlQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy53b3Qucm9vdERvY3VtZW50O3RoaXMubWFpbj12LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3ZhciB5PVsidG9wIiwic3RhcnQiLCJib3R0b20iLCJlbmQiLCJjb3JuZXIiXSxD''@;'; put 'put ''PXRoaXMubWFpbi5zdHlsZTtDLnBvc2l0aW9uPSJhYnNvbHV0ZSIsQy50b3A9MCxDLmxlZnQ9MDtmb3IodmFyIEk9MDtJPDU7SSsrKXt2YXIgaj15W0ldLGNlPXYuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y2UuY2xhc3NOYW1lPSJ3dEJvcmRlciAiLmNvbmNhdCh0aGlzLnNldHRpbmdzLmNsYXNz''@;'; put 'put ''TmFtZXx8IiIpLHRoaXMuc2V0dGluZ3Nbal0mJnRoaXMuc2V0dGluZ3Nbal0uaGlkZSYmKGNlLmNsYXNzTmFtZSs9IiBoaWRkZW4iKSwoQz1jZS5zdHlsZSkuYmFja2dyb3VuZENvbG9yPXRoaXMuc2V0dGluZ3Nbal0mJnRoaXMuc2V0dGluZ3Nbal0uY29sb3I/dGhpcy5zZXR0aW5nc1tqXS5j''@;'; put 'put ''b2xvcjpoLmJvcmRlci5jb2xvcixDLmhlaWdodD0iIi5jb25jYXQodGhpcy5zZXR0aW5nc1tqXSYmdGhpcy5zZXR0aW5nc1tqXS53aWR0aD90aGlzLnNldHRpbmdzW2pdLndpZHRoOmguYm9yZGVyLndpZHRoLCJweCIpLEMud2lkdGg9IiIuY29uY2F0KHRoaXMuc2V0dGluZ3Nbal0mJnRoaXMu''@;'; put 'put ''c2V0dGluZ3Nbal0ud2lkdGg/dGhpcy5zZXR0aW5nc1tqXS53aWR0aDpoLmJvcmRlci53aWR0aCwicHgiKSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQoY2UpfXRoaXMudG9wPXRoaXMubWFpbi5jaGlsZE5vZGVzWzBdLHRoaXMuc3RhcnQ9dGhpcy5tYWluLmNoaWxkTm9kZXNbMV0sdGhpcy5ib3R0''@;'; put 'put ''b209dGhpcy5tYWluLmNoaWxkTm9kZXNbMl0sdGhpcy5lbmQ9dGhpcy5tYWluLmNoaWxkTm9kZXNbM10sdGhpcy50b3BTdHlsZT10aGlzLnRvcC5zdHlsZSx0aGlzLnN0YXJ0U3R5bGU9dGhpcy5zdGFydC5zdHlsZSx0aGlzLmJvdHRvbVN0eWxlPXRoaXMuYm90dG9tLnN0eWxlLHRoaXMuZW5k''@;'; put 'put ''U3R5bGU9dGhpcy5lbmQuc3R5bGUsdGhpcy5jb3JuZXI9dGhpcy5tYWluLmNoaWxkTm9kZXNbNF0sdGhpcy5jb3JuZXIuY2xhc3NOYW1lKz0iIGNvcm5lciIsdGhpcy5jb3JuZXJTdHlsZT10aGlzLmNvcm5lci5zdHlsZSx0aGlzLmNvcm5lclN0eWxlLndpZHRoPXRoaXMuY29ybmVyRGVmYXVs''@;'; put 'put ''dFN0eWxlLndpZHRoLHRoaXMuY29ybmVyU3R5bGUuaGVpZ2h0PXRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmhlaWdodCx0aGlzLmNvcm5lclN0eWxlLmJvcmRlcj1bdGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuYm9yZGVyV2lkdGgsdGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuYm9yZGVyU3R5bGUs''@;'; put 'put ''dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuYm9yZGVyQ29sb3JdLmpvaW4oIiAiKSxtOCgpJiZ0aGlzLmNyZWF0ZU11bHRpcGxlU2VsZWN0b3JIYW5kbGVzKCksdGhpcy5kaXNhcHBlYXIoKTt2YXIgX2U9dGhpcy53b3Qud3RUYWJsZSxSZT1fZS5ib3JkZXJzSG9sZGVyO1JlfHwoKFJlPXYuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0iaHRCb3JkZXJzIixfZS5ib3JkZXJzSG9sZGVyPVJlLF9lLnNwcmVhZGVyLmFwcGVuZENoaWxkKFJlKSksUmUuYXBwZW5kQ2hpbGQodGhpcy5tYWluKX19LHtrZXk6ImNyZWF0ZU11bHRpcGxlU2VsZWN0b3JIYW5kbGVzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBoPXRoaXMsdj10aGlzLndvdC5yb290RG9jdW1lbnQ7dGhpcy5zZWxlY3Rpb25IYW5kbGVzPXt0b3A6di5jcmVhdGVFbGVtZW50KCJESVYiKSx0b3BIaXRBcmVhOnYuY3JlYXRlRWxlbWVudCgiRElWIiksYm90dG9tOnYuY3JlYXRlRWxlbWVudCgiRElWIiksYm90dG9tSGl0''@;'; put 'put ''QXJlYTp2LmNyZWF0ZUVsZW1lbnQoIkRJViIpfSx0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wLmNsYXNzTmFtZT0idG9wU2VsZWN0aW9uSGFuZGxlIHRvcExlZnRTZWxlY3Rpb25IYW5kbGUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy50b3BIaXRBcmVhLmNsYXNzTmFtZT0idG9wU2VsZWN0aW9u''@;'; put 'put ''SGFuZGxlLUhpdEFyZWEgdG9wTGVmdFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tLmNsYXNzTmFtZT0iYm90dG9tU2VsZWN0aW9uSGFuZGxlIGJvdHRvbVJpZ2h0U2VsZWN0aW9uSGFuZGxlIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9t''@;'; put 'put ''SGl0QXJlYS5jbGFzc05hbWU9ImJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIGJvdHRvbVJpZ2h0U2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXM9e3RvcDp0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wLnN0eWxlLHRvcEhpdEFyZWE6dGhp''@;'; put 'put ''cy5zZWxlY3Rpb25IYW5kbGVzLnRvcEhpdEFyZWEuc3R5bGUsYm90dG9tOnRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b20uc3R5bGUsYm90dG9tSGl0QXJlYTp0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tSGl0QXJlYS5zdHlsZX0sWmwoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaGVpZ2h0''@;'; put 'put ''OiIiLmNvbmNhdCg0MCwicHgiKSx3aWR0aDoiIi5jb25jYXQoNDAsInB4IiksImJvcmRlci1yYWRpdXMiOiIiLmNvbmNhdChwYXJzZUludCg0MC8xLjUsMTApLCJweCIpfSxmdW5jdGlvbihjZSxfZSl7aC5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhW19lXT1jZSxoLnNl''@;'; put 'put ''bGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWFbX2VdPWNlfSksWmwoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaGVpZ2h0OiIiLmNvbmNhdCgxMCwicHgiKSx3aWR0aDoiIi5jb25jYXQoMTAsInB4IiksImJvcmRlci1yYWRpdXMiOiIiLmNvbmNhdChwYXJzZUludCgxMC8xLjUsMTApLCJw''@;'; put 'put ''eCIpLGJhY2tncm91bmQ6IiNGNUY1RkYiLGJvcmRlcjoiMXB4IHNvbGlkICM0Mjg1YzgifSxmdW5jdGlvbihjZSxfZSl7aC5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21bX2VdPWNlLGguc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wW19lXT1jZX0pLHRoaXMubWFpbi5hcHBlbmRD''@;'; put 'put ''aGlsZCh0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wKSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbSksdGhpcy5tYWluLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0aW9uSGFuZGxlcy50b3BIaXRBcmVhKSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQodGhp''@;'; put 'put ''cy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbUhpdEFyZWEpfX0se2tleToiaXNQYXJ0UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy53b3Quc2VsZWN0aW9ucy5jcmVhdGVPckdldEFyZWEoKTtyZXR1cm4hKCF5LmNlbGxSYW5nZXx8aD09PXkuY2VsbFJhbmdlLnRvLnJvdyYm''@;'; put 'put ''dj09PXkuY2VsbFJhbmdlLnRvLmNvbCl9fSx7a2V5OiJ1cGRhdGVNdWx0aXBsZVNlbGVjdGlvbkhhbmRsZXNQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJLGope3ZhciBfZT10aGlzLndvdC53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKT8icmlnaHQiOiJsZWZ0IixS''@;'; put 'put ''ZT1wYXJzZUludCh0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcC53aWR0aCwxMCksTmU9cGFyc2VJbnQodGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BIaXRBcmVhLndpZHRoLDEwKTt0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcC50b3A9IiIuY29uY2F0KHBh''@;'; put 'put ''cnNlSW50KHktUmUtMSwxMCksInB4IiksdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BbX2VdPSIiLmNvbmNhdChwYXJzZUludChDLVJlLTEsMTApLCJweCIpLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wSGl0QXJlYS50b3A9IiIuY29uY2F0KHBhcnNlSW50KHktTmUv''@;'; put 'put ''NCozLDEwKSwicHgiKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWFbX2VdPSIiLmNvbmNhdChwYXJzZUludChDLU5lLzQqMywxMCksInB4IiksdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b20udG9wPSIiLmNvbmNhdChwYXJzZUludCh5K2osMTApLCJw''@;'; put 'put ''eCIpLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tW19lXT0iIi5jb25jYXQocGFyc2VJbnQoQytJLDEwKSwicHgiKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbUhpdEFyZWEudG9wPSIiLmNvbmNhdChwYXJzZUludCh5K2otTmUvNCwxMCksInB4IiksdGhp''@;'; put 'put ''cy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhW19lXT0iIi5jb25jYXQocGFyc2VJbnQoQytJLU5lLzQsMTApLCJweCIpLHRoaXMuc2V0dGluZ3MuYm9yZGVyLmNvcm5lclZpc2libGUmJnRoaXMuc2V0dGluZ3MuYm9yZGVyLmNvcm5lclZpc2libGUoKT8odGhpcy5zZWxl''@;'; put 'put ''Y3Rpb25IYW5kbGVzLnN0eWxlcy50b3AuZGlzcGxheT0iYmxvY2siLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wSGl0QXJlYS5kaXNwbGF5PSJibG9jayIsdGhpcy5pc1BhcnRSYW5nZShoLHYpPyh0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbS5kaXNwbGF5PSJu''@;'; put 'put ''b25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbUhpdEFyZWEuZGlzcGxheT0ibm9uZSIpOih0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbS5kaXNwbGF5PSJibG9jayIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhLmRpc3Bs''@;'; put 'put ''YXk9ImJsb2NrIikpOih0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcC5kaXNwbGF5PSJub25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbS5kaXNwbGF5PSJub25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWEuZGlzcGxheT0ibm9u''@;'; put 'put ''ZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhLmRpc3BsYXk9Im5vbmUiKSxoPT09dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKXx8dj09PXRoaXMud290Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3Rh''@;'; put 'put ''cnQiKT8odGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3AuekluZGV4PSI5OTk5Iix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWEuekluZGV4PSI5OTk5Iik6KHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wLnpJbmRleD0iIix0aGlzLnNlbGVjdGlv''@;'; put 'put ''bkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWEuekluZGV4PSIiKX19LHtrZXk6ImFwcGVhciIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoIXRoaXMuZGlzYWJsZWQpe2Zvcih2YXIgaixjZSxfZSxSZSxOZSxLZSx2PXRoaXMud290LHk9di53dFRhYmxlLEM9di5yb290RG9jdW1lbnQsST12LnJvb3RX''@;'; put 'put ''aW5kb3csaHQ9eS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLEJ0PTA7QnQ8aHQ7QnQrPTEpe3ZhciAkdD15LnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKEJ0KTtpZigkdD49aFswXSYmJHQ8PWhbMl0pe2o9JHQsTmU9aFswXTticmVha319Zm9yKHZhciBobj1odC0xO2huPj0wO2huLT0xKXt2''@;'; put 'put ''YXIgRG49eS5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShobik7aWYoRG4+PWhbMF0mJkRuPD1oWzJdKXtjZT1EbjticmVha319Zm9yKHZhciBpcj15LmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCkscHI9MDtwcjxpcjtwcis9MSl7dmFyIEVyPXkuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9T''@;'; put 'put ''b3VyY2UocHIpO2lmKEVyPj1oWzFdJiZFcjw9aFszXSl7X2U9RXIsS2U9aFsxXTticmVha319Zm9yKHZhciBBcj1pci0xO0FyPj0wO0FyLT0xKXt2YXIgWXI9eS5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShBcik7aWYoWXI+PWhbMV0mJllyPD1oWzNdKXtSZT1ZcjticmVha319aWYo''@;'; put 'put ''dm9pZCAwPT09anx8dm9pZCAwPT09X2UpcmV0dXJuIHZvaWQgdGhpcy5kaXNhcHBlYXIoKTt2YXIgX2k9eS5nZXRDZWxsKHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHMoaixfZSkpLEtpPWohPT1jZXx8X2UhPT1SZSxrbz1LaT95LmdldENlbGwodGhpcy53b3QuY3JlYXRlQ2VsbENvb3Jkcyhj''@;'; put 'put ''ZSxSZSkpOl9pLE9vPXp1KF9pKSxiYT1LaT96dShrbyk6T28sWWE9enUoeS5UQUJMRSksb2E9dzIoeS5UQUJMRSkscWE9T28udG9wLE9zPU9vLmxlZnQsSDA9dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIiksb289MCxobz0wO2lmKEgwKXt2YXIgVGE9dzIoX2kpO2hv''@;'; put 'put ''PU9zK1RhLWJhLmxlZnQsb289SS5pbm5lcldpZHRoLU9zLVRhLShJLmlubmVyV2lkdGgtWWEubGVmdC1vYSktMX1lbHNlIGhvPWJhLmxlZnQrdzIoa28pLU9zLG9vPU9zLVlhLmxlZnQtMTtpZih0aGlzLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoaixjZSkpe3ZhciBIbj10aGlzLmdldERpbWVu''@;'; put 'put ''c2lvbnNGcm9tSGVhZGVyKCJjb2x1bW5zIixfZSxSZSxOZSxZYSksem49bnVsbDtpZihIbil7dmFyIF9yPXQ2ZShIbiwzKTt6bj1fclswXSxvbz1fclsxXSxobz1fclsyXX16biYmKF9pPXpuKX12YXIgUXI9cWEtWWEudG9wLTEsdWk9YmEudG9wK0IxKGtvKS1xYTtpZih0aGlzLmlzRW50aXJl''@;'; put 'put ''Um93U2VsZWN0ZWQoX2UsUmUpKXt2YXIgdTA9dGhpcy5nZXREaW1lbnNpb25zRnJvbUhlYWRlcigicm93cyIsaixjZSxLZSxZYSksWGk9bnVsbDtpZih1MCl7dmFyIEUwPXQ2ZSh1MCwzKTtYaT1FMFswXSxRcj1FMFsxXSx1aT1FMFsyXX1YaSYmKF9pPVhpKX12YXIgejA9QncoX2ksSSk7cGFy''@;'; put 'put ''c2VJbnQoejAuYm9yZGVyVG9wV2lkdGgsMTApPjAmJihRcis9MSx1aT11aT4wP3VpLTE6MCkscGFyc2VJbnQoejBbSDA/ImJvcmRlclJpZ2h0V2lkdGgiOiJib3JkZXJMZWZ0V2lkdGgiXSwxMCk+MCYmKG9vKz0xLGhvPWhvPjA/aG8tMTowKTt2YXIgQ289SDA/InJpZ2h0IjoibGVmdCI7dGhp''@;'; put 'put ''cy50b3BTdHlsZS50b3A9IiIuY29uY2F0KFFyLCJweCIpLHRoaXMudG9wU3R5bGVbQ29dPSIiLmNvbmNhdChvbywicHgiKSx0aGlzLnRvcFN0eWxlLndpZHRoPSIiLmNvbmNhdChobywicHgiKSx0aGlzLnRvcFN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLnN0YXJ0U3R5bGUudG9wPSIiLmNv''@;'; put 'put ''bmNhdChRciwicHgiKSx0aGlzLnN0YXJ0U3R5bGVbQ29dPSIiLmNvbmNhdChvbywicHgiKSx0aGlzLnN0YXJ0U3R5bGUuaGVpZ2h0PSIiLmNvbmNhdCh1aSwicHgiKSx0aGlzLnN0YXJ0U3R5bGUuZGlzcGxheT0iYmxvY2siO3ZhciBibz1NYXRoLmZsb29yKHRoaXMuc2V0dGluZ3MuYm9yZGVy''@;'; put 'put ''LndpZHRoLzIpO3RoaXMuYm90dG9tU3R5bGUudG9wPSIiLmNvbmNhdChRcit1aS1ibywicHgiKSx0aGlzLmJvdHRvbVN0eWxlW0NvXT0iIi5jb25jYXQob28sInB4IiksdGhpcy5ib3R0b21TdHlsZS53aWR0aD0iIi5jb25jYXQoaG8sInB4IiksdGhpcy5ib3R0b21TdHlsZS5kaXNwbGF5PSJi''@;'; put 'put ''bG9jayIsdGhpcy5lbmRTdHlsZS50b3A9IiIuY29uY2F0KFFyLCJweCIpLHRoaXMuZW5kU3R5bGVbQ29dPSIiLmNvbmNhdChvbytoby1ibywicHgiKSx0aGlzLmVuZFN0eWxlLmhlaWdodD0iIi5jb25jYXQodWkrMSwicHgiKSx0aGlzLmVuZFN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIgemE9''@;'; put 'put ''dGhpcy5zZXR0aW5ncy5ib3JkZXIuY29ybmVyVmlzaWJsZTt6YT0iZnVuY3Rpb24iPT10eXBlb2YgemE/emEodGhpcy5zZXR0aW5ncy5sYXllckxldmVsKTp6YTt2YXIgSnM9dGhpcy53b3QuZ2V0U2V0dGluZygib25Nb2RpZnlHZXRDZWxsQ29vcmRzIixjZSxSZSksQmE9Y2UsWHM9UmU7aWYo''@;'; put 'put ''SnMmJkFycmF5LmlzQXJyYXkoSnMpKXt2YXIgRjE9dDZlKEpzLDQpO0JhPUYxWzJdLFhzPUYxWzNdfWlmKG04KCl8fCF6YXx8dGhpcy5pc1BhcnRSYW5nZShCYSxYcykpdGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5PSJub25lIjtlbHNle3RoaXMuY29ybmVyU3R5bGUudG9wPSIiLmNvbmNhdChR''@;'; put 'put ''cit1aSt0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LTEsInB4IiksdGhpcy5jb3JuZXJTdHlsZVtDb109IiIuY29uY2F0KG9vK2hvK3RoaXMuY29ybmVyQ2VudGVyUG9pbnRPZmZzZXQtMSwicHgiKSx0aGlzLmNvcm5lclN0eWxlLmJvcmRlclJpZ2h0V2lkdGg9dGhpcy5jb3JuZXJEZWZh''@;'; put 'put ''dWx0U3R5bGUuYm9yZGVyV2lkdGgsdGhpcy5jb3JuZXJTdHlsZS53aWR0aD10aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCx0aGlzLmNvcm5lclN0eWxlLmRpc3BsYXk9Im5vbmUiO3ZhciBIMT14Tyh5LlRBQkxFKSxXdT1IMT09PUk7aWYoV3UmJihIMT1DLmRvY3VtZW50RWxlbWVudCks''@;'; put 'put ''UmU9PT10aGlzLndvdC5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKS0xKXt2YXIgRmM9V3U/a28uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDprby5vZmZzZXRMZWZ0OyhIMD9GYy1wYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMjwwOkZjK3cyKGtvKStw''@;'; put 'put ''YXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMj49Y3ooSDEpKSYmKHRoaXMuY29ybmVyU3R5bGVbQ29dPSIiLmNvbmNhdChNYXRoLmZsb29yKG9vK2hvK3RoaXMuY29ybmVyQ2VudGVyUG9pbnRPZmZzZXQtcGFyc2VJbnQodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUu''@;'; put 'put ''d2lkdGgsMTApLzIpLCJweCIpLHRoaXMuY29ybmVyU3R5bGVbSDA/ImJvcmRlckxlZnRXaWR0aCI6ImJvcmRlclJpZ2h0V2lkdGgiXT0wKX1jZT09PXRoaXMud290LmdldFNldHRpbmcoInRvdGFsUm93cyIpLTEmJihXdT9rby5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A6a28ub2Zmc2V0''@;'; put 'put ''VG9wKStCMShrbykrcGFyc2VJbnQodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuaGVpZ2h0LDEwKS8yPj1MdihIMSkmJih0aGlzLmNvcm5lclN0eWxlLnRvcD0iIi5jb25jYXQoTWF0aC5mbG9vcihRcit1aSt0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LXBhcnNlSW50KHRoaXMuY29ybmVy''@;'; put 'put ''RGVmYXVsdFN0eWxlLmhlaWdodCwxMCkvMiksInB4IiksdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJCb3R0b21XaWR0aD0wKSx0aGlzLmNvcm5lclN0eWxlLmRpc3BsYXk9ImJsb2NrIn1tOCgpJiZ0aGlzLnVwZGF0ZU11bHRpcGxlU2VsZWN0aW9uSGFuZGxlc1Bvc2l0aW9uKGNlLFJlLFFyLG9v''@;'; put 'put ''LGhvLHVpKX19fSx7a2V5OiJpc0VudGlyZUNvbHVtblNlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiBoPT09dGhpcy53b3Qud3RUYWJsZS5nZXRGaXJzdFJlbmRlcmVkUm93KCkmJnY9PT10aGlzLndvdC53dFRhYmxlLmdldExhc3RSZW5kZXJlZFJvdygpfX0se2tleToiaXNF''@;'; put 'put ''bnRpcmVSb3dTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gaD09PXRoaXMud290Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpJiZ2PT09dGhpcy53b3Qud3RUYWJsZS5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX19LHtrZXk6ImdldERpbWVuc2lvbnNGcm9tSGVh''@;'; put 'put ''ZGVyIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDLEkpe3ZhciBqPXRoaXMud290Lnd0VGFibGUsY2U9ai53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUsX2U9bnVsbCxSZT1udWxsLE5lPW51bGwsS2U9bnVsbCxodD1udWxsLEJ0PW51bGwsJHQ9bnVsbCxobj1udWxsO3N3aXRjaChoKXtjYXNlInJv''@;'; put 'put ''d3MiOl9lPWZ1bmN0aW9uKCl7cmV0dXJuIGouZ2V0Um93SGVhZGVyLmFwcGx5KGosYXJndW1lbnRzKX0sUmU9ZnVuY3Rpb24oKXtyZXR1cm4gQjEuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9LE5lPSJodF9fc2VsZWN0aW9uLS1yb3dzIixCdD0idG9wIjticmVhaztjYXNlImNvbHVtbnMiOl9l''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIGouZ2V0Q29sdW1uSGVhZGVyLmFwcGx5KGosYXJndW1lbnRzKX0sUmU9ZnVuY3Rpb24oKXtyZXR1cm4gdzIuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9LE5lPSJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIixCdD0ibGVmdCJ9aWYoY2UuY2xhc3NMaXN0LmNvbnRh''@;'; put 'put ''aW5zKE5lKSl7dmFyIERuPXRoaXMud290LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg7aWYoJHQ9X2UodixEbi1DKSxobj1fZSh5LERuLUMpLCEkdHx8IWhuKXJldHVybiExO3ZhciBpcj16dSgkdCkscHI9enUoaG4pO3JldHVybiAkdCYmaG4mJihLZT1pcltCdF0tSVtCdF0t''@;'; put 'put ''MSxodD1wcltCdF0rUmUoaG4pLWlyW0J0XSksWyR0LEtlLGh0XX1yZXR1cm4hMX19LHtrZXk6ImNoYW5nZUJvcmRlclN0eWxlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXNbaF0uc3R5bGUsQz12W2hdOyFDfHxDLmhpZGU/UDAodGhpc1toXSwiaGlkZGVuIik6KFhhKHRoaXNbaF0s''@;'; put 'put ''ImhpZGRlbiIpJiZ1bCh0aGlzW2hdLCJoaWRkZW4iKSx5LmJhY2tncm91bmRDb2xvcj1DLmNvbG9yLCgidG9wIj09PWh8fCJib3R0b20iPT09aCkmJih5LmhlaWdodD0iIi5jb25jYXQoQy53aWR0aCwicHgiKSksKCJzdGFydCI9PT1ofHwiZW5kIj09PWgpJiYoeS53aWR0aD0iIi5jb25jYXQo''@;'; put 'put ''Qy53aWR0aCwicHgiKSkpfX0se2tleToiY2hhbmdlQm9yZGVyVG9EZWZhdWx0U3R5bGUiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB5PXRoaXNbaF0uc3R5bGU7eS5iYWNrZ3JvdW5kQ29sb3I9IiMwMDAiLHkud2lkdGg9IiIuY29uY2F0KDEsInB4IikseS5oZWlnaHQ9IiIuY29uY2F0KDEsInB4''@;'; put 'put ''Iil9fSx7a2V5OiJ0b2dnbGVIaWRkZW5DbGFzcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLmNoYW5nZUJvcmRlclRvRGVmYXVsdFN0eWxlKGgpLHY/UDAodGhpc1toXSwiaGlkZGVuIik6dWwodGhpc1toXSwiaGlkZGVuIil9fSx7a2V5OiJkaXNhcHBlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy50b3BTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmJvdHRvbVN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc3RhcnRTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmVuZFN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuY29ybmVyU3R5bGUuZGlzcGxheT0ibm9uZSIsbTgoKSYmKHRoaXMu''@;'; put 'put ''c2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tLmRpc3BsYXk9Im5vbmUiKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveVdpdGhPd25FdmVu''@;'; put 'put ''dHNPbmx5KCksdGhpcy5tYWluLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5tYWluKX19XSksZH0oKTtjb25zdCBHS2U9ektlO2Z1bmN0aW9uIGZTZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKysp''@;'; put 'put ''dltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIG42ZShkKXtyZXR1cm4objZlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gaFNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVy''@;'; put 'put ''YWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyICRLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gWEtlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuc2V0dGluZ3M9Zyx0aGlzLmNlbGxSYW5nZT1ofHxudWxsLHRoaXMuaW5zdGFuY2VCb3JkZXJzPXt9LHRoaXMuY2xhc3NOYW1lcz1bdGhpcy5zZXR0aW5ncy5jbGFz''@;'; put 'put ''c05hbWVdLHRoaXMuY2xhc3NOYW1lR2VuZXJhdG9yPXRoaXMubGluZWFyQ2xhc3NOYW1lR2VuZXJhdG9yKHRoaXMuc2V0dGluZ3MuY2xhc3NOYW1lLHRoaXMuc2V0dGluZ3MubGF5ZXJMZXZlbCl9cmV0dXJuIGZ1bmN0aW9uIEtLZShkLGcsaCl7ZyYmaFNlKGQucHJvdG90eXBlLGcpLGgmJmhT''@;'; put 'put ''ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXRCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmluc3RhbmNlQm9yZGVyc1toLmd1aWRdfHwodGhpcy5pbnN0YW5jZUJvcmRlcnNbaC5ndWlkXT1u''@;'; put 'put ''ZXcgR0tlKGgsdGhpcy5zZXR0aW5ncykpLHRoaXMuaW5zdGFuY2VCb3JkZXJzW2guZ3VpZF19fSx7a2V5OiJpc0VtcHR5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpcy5jZWxsUmFuZ2V9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmlzRW1w''@;'; put 'put ''dHkoKT90aGlzLmNlbGxSYW5nZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxSYW5nZShoKTp0aGlzLmNlbGxSYW5nZS5leHBhbmQoaCksdGhpc319LHtrZXk6InJlcGxhY2UiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYoIXRoaXMuaXNFbXB0eSgpKXtpZih0aGlzLmNlbGxSYW5nZS5mcm9tLmlz''@;'; put 'put ''RXF1YWwoaCkpcmV0dXJuIHRoaXMuY2VsbFJhbmdlLmZyb209diwhMDtpZih0aGlzLmNlbGxSYW5nZS50by5pc0VxdWFsKGgpKXJldHVybiB0aGlzLmNlbGxSYW5nZS50bz12LCEwfXJldHVybiExfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2VsbFJhbmdl''@;'; put 'put ''PW51bGwsdGhpc319LHtrZXk6ImdldENvcm5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5jZWxsUmFuZ2UuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHY9dGhpcy5jZWxsUmFuZ2UuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtyZXR1cm5baC5yb3csaC5jb2wsdi5yb3csdi5j''@;'; put 'put ''b2xdfX0se2tleToiYWRkQ2xhc3NBdENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxqPWgud3RUYWJsZS5nZXRDZWxsKHRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbENvb3Jk''@;'; put 'put ''cyh2LHkpKTtpZigib2JqZWN0Ij09PW42ZShqKSl7dmFyIGNlPUM7SSYmKGNlPXRoaXMuY2xhc3NOYW1lR2VuZXJhdG9yKGopLHRoaXMuY2xhc3NOYW1lcy5pbmNsdWRlcyhjZSl8fHRoaXMuY2xhc3NOYW1lcy5wdXNoKGNlKSksUDAoaixjZSl9cmV0dXJuIHRoaXN9fSx7a2V5OiJsaW5lYXJD''@;'; put 'put ''bGFzc05hbWVHZW5lcmF0b3IiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIGZ1bmN0aW9uIHkoQyl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi0xO2lmKDA9PT12fHwwPT09SSlyZXR1cm4gaDt2YXIgaj1JPj0wP0k6dixj''@;'; put 'put ''ZT1oLF9lPTA9PShqLT0xKT9oOiIiLmNvbmNhdChoLCItIikuY29uY2F0KGopO2lmKFhhKEMsX2UpKXt2YXIgUmU9aisxO2NlPSIiLmNvbmNhdChoLCItIikuY29uY2F0KFJlKX1lbHNlIGNlPXkoQyxqKTtyZXR1cm4gY2V9fX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYodGhp''@;'; put 'put ''cy5pc0VtcHR5KCkpdGhpcy5zZXR0aW5ncy5ib3JkZXImJnRoaXMuZ2V0Qm9yZGVyKGgpLmRpc2FwcGVhcigpO2Vsc2V7dmFyIHY9aC53dFRhYmxlLmdldFJlbmRlcmVkUm93c0NvdW50KCkseT1oLnd0VGFibGUuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKSxDPXRoaXMuZ2V0Q29ybmVycygp''@;'; put 'put ''LEk9ZnVuY3Rpb24gV0tlKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIEpLZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gUUtlKGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRb''@;'; put 'put ''IkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3Ry''@;'; put 'put ''eXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gVUtlKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBmU2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5n''@;'; put 'put ''LmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpD''@;'; put 'put ''bGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGZTZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gWUtlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBu''@;'; put 'put ''b24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oQyw0KSxqPUlbMF0sY2U9SVsxXSxfZT1JWzJdLFJlPUlbM10sTmU9dGhpcy5zZXR0aW5ncyxLZT1OZS5oaWdobGlnaHRIZWFkZXJDbGFzc05hbWUsaHQ9TmUuaGlnaGxpZ2h0Q29s''@;'; put 'put ''dW1uQ2xhc3NOYW1lLEJ0PU5lLmhpZ2hsaWdodFJvd0NsYXNzTmFtZSwkdD1OZS5oaWdobGlnaHRPbmx5Q2xvc2VzdEhlYWRlcixobj1OZS5zZWxlY3Rpb25UeXBlLERuPXZvaWQgMD09PWhufHxbImFjdGl2ZS1oZWFkZXIiLCJoZWFkZXIiXS5pbmNsdWRlcyhobik7aWYoRG4mJm51bGwhPT1j''@;'; put 'put ''ZSYmbnVsbCE9PVJlKWZvcih2YXIgaXI9MCxwcj0wO3ByPHk7cHIrPTEpe3ZhciBFcj1oLnd0VGFibGUuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UocHIpO2lmKEVyPj1jZSYmRXI8PVJlKXt2YXIgQXI9aC53dFRhYmxlLmdldENvbHVtbkhlYWRlcnMoRXIpLFlyPUFyLmxlbmd0aC0x''@;'; put 'put ''OyR0JiZBci5sZW5ndGg+MSYmKEFyPVtBcltZcl1dKTtmb3IodmFyIF9pPTA7X2k8QXIubGVuZ3RoO19pKz0xKXt2YXIgS2k9W10sa289QXJbX2ldO0tlJiZLaS5wdXNoKEtlKSxodCYmS2kucHVzaChodCk7dmFyIE9vPWguZ2V0U2V0dGluZygib25CZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5I''@;'; put 'put ''ZWFkZXIiLEVyLF9pPSR0P1lyOl9pLHtzZWxlY3Rpb25UeXBlOmhuLGNvbHVtbkN1cnNvcjppcixzZWxlY3Rpb25XaWR0aDpSZS1jZSsxLGNsYXNzTmFtZXM6S2l9KTtPbyE9PUVyJiYoa289aC53dFRhYmxlLmdldENvbHVtbkhlYWRlcihPbyxfaSkpLFAwKGtvLEtpKX1pcis9MX19aWYobnVs''@;'; put 'put ''bCE9PWomJm51bGwhPT1fZSlmb3IodmFyIGJhPTAsWWE9MDtZYTx2O1lhKz0xKXt2YXIgb2E9aC53dFRhYmxlLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKFlhKTtpZihEbiYmb2E+PWomJm9hPD1fZSl7dmFyIHFhPWgud3RUYWJsZS5nZXRSb3dIZWFkZXJzKG9hKSxPcz1xYS5sZW5ndGgt''@;'; put 'put ''MTskdCYmcWEubGVuZ3RoPjEmJihxYT1bcWFbT3NdXSk7Zm9yKHZhciBIMD0wO0gwPHFhLmxlbmd0aDtIMCs9MSl7dmFyIG9vPVtdLGhvPXFhW0gwXTtLZSYmb28ucHVzaChLZSksQnQmJm9vLnB1c2goQnQpO3ZhciBUYT1oLmdldFNldHRpbmcoIm9uQmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVh''@;'; put 'put ''ZGVyIixvYSxIMD0kdD9PczpIMCx7c2VsZWN0aW9uVHlwZTpobixyb3dDdXJzb3I6YmEsc2VsZWN0aW9uSGVpZ2h0Ol9lLWorMSxjbGFzc05hbWVzOm9vfSk7VGEhPT1vYSYmKGhvPWgud3RUYWJsZS5nZXRSb3dIZWFkZXIoVGEsSDApKSxQMChobyxvbyl9YmErPTF9aWYobnVsbCE9PWNlJiZu''@;'; put 'put ''dWxsIT09UmUpZm9yKHZhciBKbD0wO0psPHk7SmwrPTEpe3ZhciBIbj1oLnd0VGFibGUuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoSmwpO29hPj1qJiZvYTw9X2UmJkhuPj1jZSYmSG48PVJlP3RoaXMuc2V0dGluZ3MuY2xhc3NOYW1lJiZ0aGlzLmFkZENsYXNzQXRDb29yZHMoaCxv''@;'; put 'put ''YSxIbix0aGlzLnNldHRpbmdzLmNsYXNzTmFtZSx0aGlzLnNldHRpbmdzLm1hcmtJbnRlcnNlY3Rpb25zKTpvYT49aiYmb2E8PV9lP0J0JiZ0aGlzLmFkZENsYXNzQXRDb29yZHMoaCxvYSxIbixCdCk6SG4+PWNlJiZIbjw9UmUmJmh0JiZ0aGlzLmFkZENsYXNzQXRDb29yZHMoaCxvYSxIbixo''@;'; put 'put ''dCk7dmFyIHpuPWguZ2V0U2V0dGluZygib25BZnRlckRyYXdTZWxlY3Rpb24iLG9hLEhuLHRoaXMuc2V0dGluZ3MubGF5ZXJMZXZlbCk7InN0cmluZyI9PXR5cGVvZiB6biYmdGhpcy5hZGRDbGFzc0F0Q29vcmRzKGgsb2EsSG4sem4pfX1oLmdldFNldHRpbmcoIm9uQmVmb3JlRHJhd0JvcmRl''@;'; put 'put ''cnMiLEMsdGhpcy5zZXR0aW5ncy5jbGFzc05hbWUpLHRoaXMuc2V0dGluZ3MuYm9yZGVyJiZ0aGlzLmdldEJvcmRlcihoKS5hcHBlYXIoQyl9fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtPYmplY3QudmFsdWVzKHRoaXMuaW5zdGFuY2VCb3JkZXJzKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBoLmRlc3Ryb3koKX0pfX1dKSxkfSgpO2Z1bmN0aW9uIHI2ZShkKXtyZXR1cm4ocjZlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gZFNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5l''@;'; put 'put ''bnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gc3RlKCl7cmV0dXJuIHN0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJl''@;'; put 'put ''ZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9biRlKGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9''@;'; put 'put ''fSxzdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG4kZShkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9Qk8oZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gaTZlKGQsZyl7cmV0dXJuKGk2ZT1PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIG8kZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PXI2ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQg''@;'; put 'put ''MCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gcFNlKGQpfWZ1bmN0aW9uIHBTZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNu''@;'; put 'put ''J3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gQk8oZCl7cmV0dXJuKEJPPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9f''@;'; put 'put ''X3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHMkZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gciRlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv''@;'; put 'put ''ciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmk2''@;'; put 'put ''ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGkkZShkKXt2YXIgZz1mdW5jdGlvbiBhJGUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJv''@;'; put 'put ''eHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1CTyhkKTtpZihnKXt2YXIg''@;'; put 'put ''Qz1CTyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyRlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7cmV0dXJuIGZ1bmN0aW9uIGUkZShkLGcpe2lmKCEo''@;'; put 'put ''ZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGZ1bmN0aW9uIGwkZShkLGcsaCl7ZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWh9KHBTZShDPWcuY2FsbCh0aGlzLHYsbnVsbCkpLCJ2aXN1YWxDZWxsUmFuZ2UiLG51bGwpLEMudmlzdWFsQ2VsbFJhbmdlPXl8fG51bGwsQy5jb21taXQoKSxDfXJldHVybiBmdW5jdGlvbiB0JGUoZCxnLGgpe2cmJmRTZShkLnByb3RvdHlw''@;'; put 'put ''ZSxnKSxoJiZkU2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gbnVsbD09PXRoaXMudmlzdWFsQ2VsbFJhbmdlP3RoaXMudmlzdWFsQ2VsbFJhbmdlPXRoaXMuc2V0''@;'; put 'put ''dGluZ3MuY3JlYXRlQ2VsbFJhbmdlKHkpOnRoaXMudmlzdWFsQ2VsbFJhbmdlLmV4cGFuZCh5KSx0aGlzfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlzdWFsQ2VsbFJhbmdlPW51bGwsc3RlKEJPKGgucHJvdG90eXBlKSwiY2xlYXIiLHRoaXMpLmNhbGwo''@;'; put 'put ''dGhpcyl9fSx7a2V5OiJ0cmltVG9WaXNpYmxlQ2VsbHNSYW5nZU9ubHkiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXkuZnJvbSxJPXkudG8saj10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5Db29yZHMoQywxKSxjZT10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5Db29yZHMoSSwtMSk7aWYobnVs''@;'; put 'put ''bD09PWp8fG51bGw9PT1jZSlyZXR1cm4gbnVsbDtpZihqLnJvdz5jZS5yb3d8fGouY29sPmNlLmNvbCl7aWYoImhlYWRlciIhPT10aGlzLnNldHRpbmdzLnR5cGUmJiJhY3RpdmUtaGVhZGVyIiE9PXRoaXMuc2V0dGluZ3MudHlwZSlyZXR1cm4gbnVsbDtqPUMsY2U9SX1yZXR1cm4gdGhpcy5z''@;'; put 'put ''ZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoaixqLGNlKX19LHtrZXk6ImdldE5lYXJlc3ROb3RIaWRkZW5Db29yZHMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkMsaj10aGlzLmdldE5lYXJl''@;'; put 'put ''c3ROb3RIaWRkZW5JbmRleCh0aGlzLnNldHRpbmdzLnJvd0luZGV4TWFwcGVyKCkseS5yb3csQyk7aWYobnVsbD09PWopcmV0dXJuIG51bGw7dmFyIGNlPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHRoaXMuc2V0dGluZ3MuY29sdW1uSW5kZXhNYXBwZXIoKSx5LmNvbCxJKTtyZXR1''@;'; put 'put ''cm4gbnVsbD09PWNlP251bGw6dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsQ29vcmRzKGosY2UpfX0se2tleToiZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4Iix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7aWYoQzwwKXJldHVybiBDO3ZhciBqPXkuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEMsSSk7''@;'; put 'put ''cmV0dXJuImhlYWRlciIhPT10aGlzLnNldHRpbmdzLnR5cGUmJiJhY3RpdmUtaGVhZGVyIiE9PXRoaXMuc2V0dGluZ3MudHlwZXx8bnVsbCE9PWo/ajotMX19LHtrZXk6ImNvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihudWxsPT09dGhpcy52aXN1YWxDZWxsUmFuZ2UpcmV0dXJuIHRoaXM7''@;'; put 'put ''dmFyIHk9dGhpcy50cmltVG9WaXNpYmxlQ2VsbHNSYW5nZU9ubHkodGhpcy52aXN1YWxDZWxsUmFuZ2UpO3JldHVybiB0aGlzLmNlbGxSYW5nZT1udWxsPT09eT9udWxsOnRoaXMuY3JlYXRlUmVuZGVyYWJsZUNlbGxSYW5nZSh5LmZyb20seS50byksdGhpc319LHtrZXk6InN5bmNXaXRoIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz0iTi1TIj09PXkuZ2V0VmVydGljYWxEaXJlY3Rpb24oKT8xOi0xLEk9IlctRSI9PT15LmdldEhvcml6b250YWxEaXJlY3Rpb24oKT8xOi0xLGo9dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuQ29vcmRzKHkuZnJvbS5jbG9uZSgpLm5vcm1hbGl6ZSgpLEMs''@;'; put 'put ''SSk7aWYobnVsbCE9PWomJnkub3ZlcmxhcHMoaikpe2lmKG51bGw9PT10aGlzLmNlbGxSYW5nZSl7dmFyIGNlPXRoaXMuc2V0dGluZ3MudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKGopO3RoaXMuY2VsbFJhbmdlPXRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbFJhbmdlKGNlKX1yZXR1cm4geS5z''@;'; put 'put ''ZXRIaWdobGlnaHQoaiksdGhpc31yZXR1cm4geS5zZXRIaWdobGlnaHQoeS5mcm9tKSx0aGlzfX0se2tleToiZ2V0Q29ybmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmNlbGxSYW5nZSxDPXkuZnJvbSxJPXkudG8saj1udWxsPT09Qy5yb3d8fG51bGw9PT1JLnJvdyxjZT1udWxs''@;'; put 'put ''PT09Qy5jb2x8fG51bGw9PT1JLmNvbCxfZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxDb29yZHMoaj9udWxsOk1hdGgubWluKEMucm93LEkucm93KSxjZT9udWxsOk1hdGgubWluKEMuY29sLEkuY29sKSksUmU9dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsQ29vcmRzKGo/bnVsbDpNYXRoLm1h''@;'; put 'put ''eChDLnJvdyxJLnJvdyksY2U/bnVsbDpNYXRoLm1heChDLmNvbCxJLmNvbCkpO3JldHVybltfZS5yb3csX2UuY29sLFJlLnJvdyxSZS5jb2xdfX0se2tleToiZ2V0VmlzdWFsQ29ybmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnNldHRpbmdzLnJlbmRlcmFibGVUb1Zpc3VhbENv''@;'; put 'put ''b3Jkcyh0aGlzLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5lcigpKSxDPXRoaXMuc2V0dGluZ3MucmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHRoaXMuY2VsbFJhbmdlLmdldEJvdHRvbUVuZENvcm5lcigpKTtyZXR1cm5beS5yb3cseS5jb2wsQy5yb3csQy5jb2xdfX0se2tleToiY3JlYXRl''@;'; put 'put ''UmVuZGVyYWJsZUNlbGxSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLnNldHRpbmdzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3Jkcyh5KSxqPXRoaXMuc2V0dGluZ3MudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKEMpO3JldHVybiB0aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxS''@;'; put 'put ''YW5nZShJLEksail9fV0pLGh9KCRLZSk7Y29uc3QgUE89cyRlO3ZhciB1JGU9WyJhY3RpdmVIZWFkZXJDbGFzc05hbWUiXTtmdW5jdGlvbiBnU2UoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBtU2UoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/Z1NlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtjJGUoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6Z1NlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBj''@;'; put 'put ''JGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBnJGU9WyJsYXllckxldmVsIiwiYXJlYUNvcm5lclZpc2libGUiXTtmdW5jdGlvbiB2''@;'; put 'put ''U2UoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y''@;'; put 'put ''KGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBBU2UoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/dlNlKE9iamVjdChoKSwhMCkuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbih2KXttJGUoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6dlNlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBtJGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBiJGU9WyJjZWxsQ29ybmVyVmlzaWJsZSJdO2Z1bmN0aW9uIHlTZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv''@;'; put 'put ''bHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9uIHdTZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7''@;'; put 'put ''ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj95U2UoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe18kZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9i''@;'; put 'put ''amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTp5U2UoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIF8kZShkLGcsaCl7''@;'; put 'put ''cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIEUkZT1bImJvcmRlciIsInZpc3VhbENlbGxSYW5nZSJdO2Z1bmN0aW9uIGJTZShkLGcpe3ZhciBoPU9i''@;'; put 'put ''amVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxl''@;'; put 'put ''fSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9uIG82ZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9iU2UoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYp''@;'; put 'put ''e3gkZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpiU2UoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIHgkZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxl''@;'; put 'put ''OiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gX1NlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0''@;'; put 'put ''LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gQ1NlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307''@;'; put 'put ''ZyUyP19TZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7TyRlKGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOl9TZShPYmplY3Qo''@;'; put 'put ''aCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gTyRlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVl''@;'; put 'put ''OmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1MKDMzNDcwKTt2YXIgUCRlPVsiaGVhZGVyQ2xhc3NOYW1lIiwicm93Q2xhc3NOYW1lIiwiY29sdW1uQ2xhc3NOYW1lIl07ZnVuY3Rpb24ga1NlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7''@;'; put 'put ''aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFw''@;'; put 'put ''cGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gU1NlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP2tTZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7RiRlKGQsdixoW3Zd''@;'; put 'put ''KX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOmtTZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmpl''@;'; put 'put ''Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gRiRlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgs''@;'; put 'put ''ZH1mdW5jdGlvbiBNU2UoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiB6JGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJs''@;'; put 'put ''ZTohMH0pOmRbZ109aCxkfXZhciBFU2U9a3AoImhpZ2hsaWdodC90eXBlcyIpLEZPPUVTZS5yZWdpc3RlcixHJGU9RVNlLmdldEl0ZW07ZnVuY3Rpb24gSE8oZCxnKXtyZXR1cm4gRyRlKGQpKGZ1bmN0aW9uIFokZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIg''@;'; put 'put ''aD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9NU2UoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe3okZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpNU2UoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfSh7dHlwZTpkfSxnKSl9ZnVuY3Rpb24gancoZCl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIFEkZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBhNmUoZCl9KGQpfHxmdW5jdGlvbiBVJGUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBB''@;'; put 'put ''cnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gWSRlKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBhNmUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYo''@;'; put 'put ''aD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGE2ZShkLGcpfX0oZCl8fGZ1bmN0aW9u''@;'; put 'put ''IFckZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgp''@;'; put 'put ''fWZ1bmN0aW9uIGE2ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHhTZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Q''@;'; put 'put ''cm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBo''@;'; put 'put ''fWZ1bmN0aW9uIE96KGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP3hTZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7SiRlKGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Q''@;'; put 'put ''cm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOnhTZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlE''@;'; put 'put ''ZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gSiRlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBUU2UoZCxn''@;'; put 'put ''KXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1GTyhhdGUsZnVuY3Rp''@;'; put 'put ''b24gZCRlKGQpe3ZhciBnPWQuYWN0aXZlSGVhZGVyQ2xhc3NOYW1lLGg9ZnVuY3Rpb24gZiRlKGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgdix5LGg9ZnVuY3Rpb24gaCRlKGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgeSxDLGg9e30sdj1PYmplY3Qua2V5cyhkKTtmb3IoQz0w''@;'; put 'put ''O0M8di5sZW5ndGg7QysrKSEoZy5pbmRleE9mKHk9dltDXSk+PTApJiYoaFt5XT1kW3ldKTtyZXR1cm4gaH0oZCxnKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2Zvcih5PTA7eTxDLmxlbmd0aDt5KyspIShn''@;'; put 'put ''LmluZGV4T2Yodj1DW3ldKT49MCkmJighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGQsdil8fChoW3ZdPWRbdl0pKX1yZXR1cm4gaH0oZCx1JGUpO3JldHVybiBuZXcgUE8obVNlKG1TZSh7aGlnaGxpZ2h0SGVhZGVyQ2xhc3NOYW1lOmd9LGgpLHt9LHtzZWxl''@;'; put 'put ''Y3Rpb25UeXBlOmF0ZX0pKX0pLEZPKGx0ZSxmdW5jdGlvbiB5JGUoZCl7dmFyIGc9ZC5sYXllckxldmVsLGg9ZC5hcmVhQ29ybmVyVmlzaWJsZSx2PWZ1bmN0aW9uIHYkZShkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHYseSxoPWZ1bmN0aW9uIEEkZShkLGcpe2lmKG51bGw9PWQpcmV0''@;'; put 'put ''dXJue307dmFyIHksQyxoPXt9LHY9T2JqZWN0LmtleXMoZCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0MrKykhKGcuaW5kZXhPZih5PXZbQ10pPj0wKSYmKGhbeV09ZFt5XSk7cmV0dXJuIGh9KGQsZyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEM9T2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5U3ltYm9scyhkKTtmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKSEoZy5pbmRleE9mKHY9Q1t5XSk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChkLHYpfHwoaFt2XT1kW3ZdKSl9cmV0dXJuIGh9KGQsZyRlKTtyZXR1cm4gbmV3IFBPKEFTZShB''@;'; put 'put ''U2Uoe2NsYXNzTmFtZToiYXJlYSIsbWFya0ludGVyc2VjdGlvbnM6ITAsbGF5ZXJMZXZlbDpNYXRoLm1pbihnLDcpLGJvcmRlcjp7d2lkdGg6MSxjb2xvcjoiIzRiODlmZiIsY29ybmVyVmlzaWJsZTpofX0sdikse30se3NlbGVjdGlvblR5cGU6bHRlfSkpfSksRk8oRHosZnVuY3Rpb24gUyRl''@;'; put 'put ''KGQpe3ZhciBnPWQuY2VsbENvcm5lclZpc2libGUsaD1mdW5jdGlvbiBDJGUoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlvbiBrJGUoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMsaD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0''@;'; put 'put ''aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0pO3JldHVybiBofShkLGcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2''@;'; put 'put ''PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZCx2KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofShkLGIkZSk7cmV0dXJuIG5ldyBQTyh3U2Uod1NlKHtjbGFzc05hbWU6ImN1cnJlbnQiLGJvcmRlcjp7d2lkdGg6Mixjb2xvcjoiIzRiODlm''@;'; put 'put ''ZiIsY29ybmVyVmlzaWJsZTpnfX0saCkse30se3NlbGVjdGlvblR5cGU6RHp9KSl9KSxGTyhlNmUsZnVuY3Rpb24gRCRlKGQpe3ZhciBnPWQuYm9yZGVyLGg9ZC52aXN1YWxDZWxsUmFuZ2Usdj1mdW5jdGlvbiBUJGUoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlv''@;'; put 'put ''biBJJGUoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMsaD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0pO3JldHVybiBofShkLGcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv''@;'; put 'put ''bHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZCx2KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofShk''@;'; put 'put ''LEUkZSk7cmV0dXJuIG5ldyBQTyhvNmUobzZlKG82ZSh7fSxnKSx2KSx7fSx7c2VsZWN0aW9uVHlwZTplNmV9KSxoKX0pLEZPKCJmaWxsIixmdW5jdGlvbiBSJGUoZCl7dmFyIGc9T2JqZWN0LmFzc2lnbih7fSxkKTtyZXR1cm4gbmV3IFBPKENTZShDU2Uoe2NsYXNzTmFtZToiZmlsbCIsYm9y''@;'; put 'put ''ZGVyOnt3aWR0aDoxLGNvbG9yOiIjZmYwMDAwIn19LGcpLHt9LHtzZWxlY3Rpb25UeXBlOiJmaWxsIn0pKX0pLEZPKEx6LGZ1bmN0aW9uIFYkZShkKXt2YXIgZz1kLmhlYWRlckNsYXNzTmFtZSxoPWQucm93Q2xhc3NOYW1lLHY9ZC5jb2x1bW5DbGFzc05hbWUseT1mdW5jdGlvbiBIJGUoZCxn''@;'; put 'put ''KXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlvbiBOJGUoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMsaD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0pO3JldHVy''@;'; put 'put ''biBofShkLGcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJh''@;'; put 'put ''YmxlLmNhbGwoZCx2KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofShkLFAkZSk7cmV0dXJuIG5ldyBQTyhTU2UoU1NlKHtjbGFzc05hbWU6ImhpZ2hsaWdodCIsaGlnaGxpZ2h0SGVhZGVyQ2xhc3NOYW1lOmcsaGlnaGxpZ2h0Um93Q2xhc3NOYW1lOmgsaGlnaGxpZ2h0Q29sdW1uQ2xhc3NOYW1l''@;'; put 'put ''OnZ9LHkpLHt9LHtoaWdobGlnaHRPbmx5Q2xvc2VzdEhlYWRlcjohMCxzZWxlY3Rpb25UeXBlOkx6fSkpfSk7dmFyICQkZT1mdW5jdGlvbihkKXtmdW5jdGlvbiBnKGgpeyhmdW5jdGlvbiBYJGUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg''@;'; put 'put ''Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZyksdGhpcy5vcHRpb25zPWgsdGhpcy5sYXllckxldmVsPTAsdGhpcy5jZWxsPUhPKER6LGgpLHRoaXMuZmlsbD1ITygiZmlsbCIsaCksdGhpcy5hcmVhcz1uZXcgTWFwLHRoaXMuaGVhZGVycz1uZXcgTWFwLHRoaXMuYWN0aXZl''@;'; put 'put ''SGVhZGVycz1uZXcgTWFwLHRoaXMuY3VzdG9tU2VsZWN0aW9ucz1bXX1yZXR1cm4gZnVuY3Rpb24gSyRlKGQsZyxoKXtnJiZUU2UoZC5wcm90b3R5cGUsZyksaCYmVFNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGcsW3trZXk6Imlz''@;'; put 'put ''RW5hYmxlZEZvciIsdmFsdWU6ZnVuY3Rpb24odix5KXt2YXIgQz12O3Y9PT1EeiYmKEM9ImN1cnJlbnQiKTt2YXIgST10aGlzLm9wdGlvbnMuZGlzYWJsZWRDZWxsU2VsZWN0aW9uKHkucm93LHkuY29sKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEkmJihJPVtJXSksITE9PT1JfHxBcnJheS5p''@;'; put 'put ''c0FycmF5KEkpJiYhSS5pbmNsdWRlcyhDKX19LHtrZXk6InVzZUxheWVyTGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIHRoaXMubGF5ZXJMZXZlbD12LHRoaXN9fSx7a2V5''@;'; put 'put ''OiJnZXRDZWxsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNlbGx9fSx7a2V5OiJnZXRGaWxsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGx9fSx7a2V5OiJjcmVhdGVPckdldEFyZWEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHksdj10aGlzLmxheWVyTGV2ZWw7cmV0''@;'; put 'put ''dXJuIHRoaXMuYXJlYXMuaGFzKHYpP3k9dGhpcy5hcmVhcy5nZXQodik6KHk9SE8obHRlLE96KHtsYXllckxldmVsOnZ9LHRoaXMub3B0aW9ucykpLHRoaXMuYXJlYXMuc2V0KHYseSkpLHl9fSx7a2V5OiJnZXRBcmVhcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gancodGhpcy5hcmVhcy52''@;'; put 'put ''YWx1ZXMoKSl9fSx7a2V5OiJjcmVhdGVPckdldEhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSx2PXRoaXMubGF5ZXJMZXZlbDtyZXR1cm4gdGhpcy5oZWFkZXJzLmhhcyh2KT95PXRoaXMuaGVhZGVycy5nZXQodik6KHk9SE8oTHosT3ooe30sdGhpcy5vcHRpb25zKSksdGhpcy5oZWFk''@;'; put 'put ''ZXJzLnNldCh2LHkpKSx5fX0se2tleToiZ2V0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gancodGhpcy5oZWFkZXJzLnZhbHVlcygpKX19LHtrZXk6ImNyZWF0ZU9yR2V0QWN0aXZlSGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LHY9dGhpcy5sYXllckxldmVsO3JldHVy''@;'; put 'put ''biB0aGlzLmFjdGl2ZUhlYWRlcnMuaGFzKHYpP3k9dGhpcy5hY3RpdmVIZWFkZXJzLmdldCh2KTooeT1ITyhhdGUsT3ooe30sdGhpcy5vcHRpb25zKSksdGhpcy5hY3RpdmVIZWFkZXJzLnNldCh2LHkpKSx5fX0se2tleToiZ2V0QWN0aXZlSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gancodGhpcy5hY3RpdmVIZWFkZXJzLnZhbHVlcygpKX19LHtrZXk6ImdldEN1c3RvbVNlbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGp3KHRoaXMuY3VzdG9tU2VsZWN0aW9ucy52YWx1ZXMoKSl9fSx7a2V5OiJhZGRDdXN0b21TZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KHYpe3RoaXMuY3VzdG9tU2VsZWN0aW9ucy5wdXNoKEhPKGU2ZSxPeihPeih7fSx0aGlzLm9wdGlvbnMpLHYpKSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNlbGwuY2xlYXIoKSx0aGlzLmZpbGwuY2xlYXIoKSxHcih0aGlzLmFyZWFzLnZhbHVlcygpLGZ1bmN0aW9u''@;'; put 'put ''KHYpe3YuY2xlYXIoKX0pLEdyKHRoaXMuaGVhZGVycy52YWx1ZXMoKSxmdW5jdGlvbih2KXt2LmNsZWFyKCl9KSxHcih0aGlzLmFjdGl2ZUhlYWRlcnMudmFsdWVzKCksZnVuY3Rpb24odil7di5jbGVhcigpfSl9fSx7a2V5OlN5bWJvbC5pdGVyYXRvcix2YWx1ZTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''blt0aGlzLmNlbGwsdGhpcy5maWxsXS5jb25jYXQoancodGhpcy5hcmVhcy52YWx1ZXMoKSksancodGhpcy5oZWFkZXJzLnZhbHVlcygpKSxqdyh0aGlzLmFjdGl2ZUhlYWRlcnMudmFsdWVzKCkpLGp3KHRoaXMuY3VzdG9tU2VsZWN0aW9ucykpW1N5bWJvbC5pdGVyYXRvcl0oKX19XSksZ30o''@;'; put 'put ''KTtjb25zdCBxJGU9JCRlO2Z1bmN0aW9uIElTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsdi5rZXksdil9fXZhciBucWU9ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZyhoKXsoZnVuY3Rpb24gZXFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGcpLHRoaXMu''@;'; put 'put ''cmFuZ2VzPVtdLHRoaXMuY3JlYXRlQ2VsbFJhbmdlPWh9cmV0dXJuIGZ1bmN0aW9uIHRxZShkLGcsaCl7ZyYmSVNlKGQucHJvdG90eXBlLGcpLGgmJklTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShnLFt7a2V5OiJpc0VtcHR5Iix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zaXplKCl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLmNsZWFyKCksdGhpcy5yYW5nZXMucHVzaCh0aGlzLmNyZWF0ZUNlbGxSYW5nZSh2KSksdGhpc319LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''dil7cmV0dXJuIHRoaXMucmFuZ2VzLnB1c2godGhpcy5jcmVhdGVDZWxsUmFuZ2UodikpLHRoaXN9fSx7a2V5OiJwb3AiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VzLnBvcCgpLHRoaXN9fSx7a2V5OiJjdXJyZW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBl''@;'; put 'put ''ZWtCeUluZGV4KDApfX0se2tleToicHJldmlvdXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVla0J5SW5kZXgoLTEpfX0se2tleToiaW5jbHVkZXMiLHZhbHVlOmZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLnJhbmdlcy5zb21lKGZ1bmN0aW9uKHkpe3JldHVybiB5LmluY2x1ZGVz''@;'; put 'put ''KHYpfSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZXMubGVuZ3RoPTAsdGhpc319LHtrZXk6InNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VzLmxlbmd0aH19LHtrZXk6InBlZWtCeUluZGV4Iix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBDLHY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAseT10aGlzLnNpemUoKSt2LTE7cmV0dXJuIHk+PTAmJihDPXRoaXMucmFuZ2VzW3ldKSxDfX0se2tleTpTeW1ib2wuaXRlcmF0b3IsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5yYW5nZXNbU3ltYm9sLml0ZXJhdG9yXSgpfX1dKSxnfSgpO2NvbnN0IHJxZT1ucWU7ZnVuY3Rpb24gRFNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVl''@;'; put 'put ''ImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIExTZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gaXFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwg''@;'; put 'put ''YSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucmFuZ2U9Zyx0aGlzLm9wdGlvbnM9aH1yZXR1cm4gZnVuY3Rpb24gb3FlKGQsZyxoKXtnJiZEU2UoZC5wcm90b3R5cGUsZyksaCYmRFNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSl9KGQsW3trZXk6InRyYW5zZm9ybVN0YXJ0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sQz10aGlzLm9wdGlvbnMuY3JlYXRlQ2VsbENvb3JkcyhoLHYpLEk9dGhpcy5yYW5n''@;'; put 'put ''ZS5jdXJyZW50KCkuaGlnaGxpZ2h0LGo9dGhpcy5vcHRpb25zLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhJKSxjZT1qLnJvdyxfZT1qLmNvbCxSZT1JLE5lPTAsS2U9MDtpZih0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVRyYW5zZm9ybVN0YXJ0IixDKSxudWxsIT09Y2UmJm51bGwhPT1f''@;'; put 'put ''ZSl7dmFyIGh0PXRoaXMub3B0aW9ucy5jb3VudFJvd3MoKSxCdD10aGlzLm9wdGlvbnMuY291bnRDb2xzKCksJHQ9dGhpcy5vcHRpb25zLmZpeGVkUm93c0JvdHRvbSgpLGhuPXRoaXMub3B0aW9ucy5taW5TcGFyZVJvd3MoKSxEbj10aGlzLm9wdGlvbnMubWluU3BhcmVDb2xzKCksaXI9dGhp''@;'; put 'put ''cy5vcHRpb25zLmF1dG9XcmFwUm93KCkscHI9dGhpcy5vcHRpb25zLmF1dG9XcmFwQ29sKCk7Y2UraD5odC0xP3kmJmhuPjAmJiEoJHQmJmNlPj1odC0kdC0xKT8odGhpcy5ydW5Mb2NhbEhvb2tzKCJpbnNlcnRSb3dSZXF1aXJlIixodCksaHQ9dGhpcy5vcHRpb25zLmNvdW50Um93cygpKTpw''@;'; put 'put ''ciYmKEMucm93PTEtaHQsQy5jb2w9X2UrQy5jb2w9PT1CdC0xPzEtQnQ6MSk6cHImJmNlK0Mucm93PDAmJl9lK0MuY29sPj0wJiYoQy5yb3c9aHQtMSxDLmNvbD1fZStDLmNvbD09PTA/QnQtMTotMSksX2UrQy5jb2w+QnQtMT95JiZEbj4wPyh0aGlzLnJ1bkxvY2FsSG9va3MoImluc2VydENv''@;'; put 'put ''bFJlcXVpcmUiLEJ0KSxCdD10aGlzLm9wdGlvbnMuY291bnRDb2xzKCkpOmlyJiYoQy5yb3c9Y2UrQy5yb3c9PT1odC0xPzEtaHQ6MSxDLmNvbD0xLUJ0KTppciYmX2UrQy5jb2w8MCYmY2UrQy5yb3c+PTAmJihDLnJvdz1jZStDLnJvdz09PTA/aHQtMTotMSxDLmNvbD1CdC0xKTt2YXIgRXI9''@;'; put 'put ''dGhpcy5vcHRpb25zLmNyZWF0ZUNlbGxDb29yZHMoY2UrQy5yb3csX2UrQy5jb2wpO05lPTAsS2U9MCxFci5yb3c8MD8oTmU9LTEsRXIucm93PTApOkVyLnJvdz4wJiZFci5yb3c+PWh0JiYoTmU9MSxFci5yb3c9aHQtMSksRXIuY29sPDA/KEtlPS0xLEVyLmNvbD0wKTpFci5jb2w+MCYmRXIu''@;'; put 'put ''Y29sPj1CdCYmKEtlPTEsRXIuY29sPUJ0LTEpLFJlPXRoaXMub3B0aW9ucy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoRXIpfXJldHVybiB0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyVHJhbnNmb3JtU3RhcnQiLFJlLE5lLEtlKSxSZX19LHtrZXk6InRyYW5zZm9ybUVuZCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXt2YXIgeT10aGlzLm9wdGlvbnMuY3JlYXRlQ2VsbENvb3JkcyhoLHYpLEM9dGhpcy5yYW5nZS5jdXJyZW50KCksST1DLnRvLGo9MCxjZT0wO3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlVHJhbnNmb3JtRW5kIix5KTt2YXIgX2U9dGhpcy5vcHRpb25zLnZpc3VhbFRvUmVu''@;'; put 'put ''ZGVyYWJsZUNvb3JkcyhDLmhpZ2hsaWdodCk7aWYobnVsbCE9PV9lLnJvdyYmbnVsbCE9PV9lLmNvbCl7dmFyIEtlPXRoaXMub3B0aW9ucy5jb3VudFJvd3MoKSxodD10aGlzLm9wdGlvbnMuY291bnRDb2xzKCksQnQ9dGhpcy5vcHRpb25zLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhDLnRv''@;'; put 'put ''KSxEbj10aGlzLm9wdGlvbnMuY3JlYXRlQ2VsbENvb3JkcyhCdC5yb3creS5yb3csQnQuY29sK3kuY29sKTtqPTAsY2U9MCxEbi5yb3c8MD8oaj0tMSxEbi5yb3c9MCk6RG4ucm93PjAmJkRuLnJvdz49S2UmJihqPTEsRG4ucm93PUtlLTEpLERuLmNvbDwwPyhjZT0tMSxEbi5jb2w9MCk6RG4u''@;'; put 'put ''Y29sPjAmJkRuLmNvbD49aHQmJihjZT0xLERuLmNvbD1odC0xKSxJPXRoaXMub3B0aW9ucy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoRG4pfXJldHVybiB0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyVHJhbnNmb3JtRW5kIixJLGosY2UpLEl9fV0pLGR9KCk7STIoTFNlLHJkKTtjb25zdCBh''@;'; put 'put ''cWU9TFNlO2Z1bmN0aW9uIE9TZShkLGcpe3JldHVybiBmdW5jdGlvbiBjcWUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHVxZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''fHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxs''@;'; put 'put ''eXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHNxZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gUlNlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0''@;'; put 'put ''cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIp''@;'; put 'put ''KD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBSU2UoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIGxxZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJs''@;'; put 'put ''ZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gUlNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07''@;'; put 'put ''cmV0dXJuIHZ9ZnVuY3Rpb24gbDZlKGQpe3JldHVybihsNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX12YXIgRlNlLGZxZT1bMywyXSxocWU9W1sibnVtYmVyIl0sWyJudW1iZXIiLCJzdHJpbmciXSxbIm51bWJlciIsInVuZGVmaW5lZCJdLFsibnVtYmVyIiwi''@;'; put 'put ''c3RyaW5nIiwidW5kZWZpbmVkIl1dLHU2ZT1TeW1ib2woInJvb3QiKSxQU2U9U3ltYm9sKCJjaGlsZCIpO2Z1bmN0aW9uIE5PKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp1NmU7aWYoZyE9PXU2ZSYmZyE9PVBTZSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdXNlZCBpbnRlcm5hbGx5IG9ubHkgYW5kIGNhbm5vdCBiZSBvdmVyd3JpdHRlbi4iKTt2YXIgaD1BcnJheS5pc0FycmF5KGQpLHY9Zz09PXU2ZSx5PTA7aWYoaCl7dmFyIEM9ZFswXTtpZigwPT09ZC5sZW5ndGgpeT0xO2Vsc2Ug''@;'; put 'put ''aWYodiYmQyBpbnN0YW5jZW9mIEZDZSl5PTM7ZWxzZSBpZih2JiZBcnJheS5pc0FycmF5KEMpKXk9Tk8oQyxQU2UpO2Vsc2UgaWYoZC5sZW5ndGg+PTImJmQubGVuZ3RoPD00KXt2YXIgST0hZC5zb21lKGZ1bmN0aW9uKGosY2Upe3JldHVybiFocWVbY2VdLmluY2x1ZGVzKGw2ZShqKSl9KTtJ''@;'; put 'put ''JiYoeT0yKX19cmV0dXJuIHl9ZnVuY3Rpb24gUnooZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGg9Zy5rZWVwRGlyZWN0aW9uLHY9dm9pZCAwIT09aCYmaCx5PWcucHJvcFRvQ29sO2lmKCFmcWUuaW5jbHVkZXMoZCkp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzZWxlY3Rpb24gcmFuZ2VzIHNjaGVtYSB0eXBlIHdhcyBwcm92aWRlZC4iKTtyZXR1cm4gZnVuY3Rpb24oQyl7dmFyIEk9Mz09PWQsaj1JP0MuZnJvbS5yb3c6Q1swXSxjZT1JP0MuZnJvbS5jb2w6Q1sxXSxfZT1JP0MudG8ucm93OkNbMl0s''@;'; put 'put ''UmU9ST9DLnRvLmNvbDpDWzNdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB5JiYoInN0cmluZyI9PXR5cGVvZiBjZSYmKGNlPXkoY2UpKSwic3RyaW5nIj09dHlwZW9mIFJlJiYoUmU9eShSZSkpKSx1MShfZSkmJihfZT1qKSx1MShSZSkmJihSZT1jZSksIXYpe3ZhciBOZT1qLEtlPWNlLGh0PV9l''@;'; put 'put ''LEJ0PVJlO2o9TWF0aC5taW4oTmUsaHQpLGNlPU1hdGgubWluKEtlLEJ0KSxfZT1NYXRoLm1heChOZSxodCksUmU9TWF0aC5tYXgoS2UsQnQpfXJldHVybltqLGNlLF9lLFJlXX19ZnVuY3Rpb24gWncoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/''@;'; put 'put ''YXJndW1lbnRzWzFdOjEvMDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGQmJmQ+PTAmJmQ8Z31mdW5jdGlvbiBIU2UoZCxnKXtyZXR1cm4gZnVuY3Rpb24gQXFlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiB2cWUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6''@;'; put 'put ''InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2''@;'; put 'put ''Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBtcWUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IGQpcmV0dXJuIE5TZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20o''@;'; put 'put ''ZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gTlNlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBncWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUg''@;'; put 'put ''bm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIE5TZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgp''@;'; put 'put ''O2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFZTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1''@;'; put 'put ''ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBqU2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7dmFyIHY9dGhpczsoZnVuY3Rpb24gd3FlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuc2V0dGluZ3M9Zyx0aGlzLnRhYmxlUHJvcHM9aCx0aGlzLmluUHJvZ3Jlc3M9ITEsdGhpcy5zZWxlY3RlZEJ5Q29ybmVyPSExLHRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlcj1uZXcgU2V0LHRoaXMuc2Vs''@;'; put 'put ''ZWN0ZWRCeUNvbHVtbkhlYWRlcj1uZXcgU2V0LHRoaXMuc2VsZWN0ZWRSYW5nZT1uZXcgcnFlKGZ1bmN0aW9uKHksQyxJKXtyZXR1cm4gdi50YWJsZVByb3BzLmNyZWF0ZUNlbGxSYW5nZSh5LEMsSSl9KSx0aGlzLmhpZ2hsaWdodD1uZXcgcSRlKHtoZWFkZXJDbGFzc05hbWU6Zy5jdXJyZW50''@;'; put 'put ''SGVhZGVyQ2xhc3NOYW1lLGFjdGl2ZUhlYWRlckNsYXNzTmFtZTpnLmFjdGl2ZUhlYWRlckNsYXNzTmFtZSxyb3dDbGFzc05hbWU6Zy5jdXJyZW50Um93Q2xhc3NOYW1lLGNvbHVtbkNsYXNzTmFtZTpnLmN1cnJlbnRDb2xDbGFzc05hbWUsZGlzYWJsZWRDZWxsU2VsZWN0aW9uOmZ1bmN0aW9u''@;'; put 'put ''KEMsSSl7cmV0dXJuIHYudGFibGVQcm9wcy5pc0Rpc2FibGVkQ2VsbFNlbGVjdGlvbihDLEkpfSxjZWxsQ29ybmVyVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB2LmlzQ2VsbENvcm5lclZpc2libGUuYXBwbHkodixhcmd1bWVudHMpfSxhcmVhQ29ybmVyVmlzaWJsZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB2LmlzQXJlYUNvcm5lclZpc2libGUuYXBwbHkodixhcmd1bWVudHMpfSx2aXN1YWxUb1JlbmRlcmFibGVDb29yZHM6ZnVuY3Rpb24oQyl7cmV0dXJuIHYudGFibGVQcm9wcy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoQyl9LHJlbmRlcmFibGVUb1Zpc3VhbENvb3JkczpmdW5jdGlv''@;'; put 'put ''bihDKXtyZXR1cm4gdi50YWJsZVByb3BzLnJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhDKX0sY3JlYXRlQ2VsbENvb3JkczpmdW5jdGlvbihDLEkpe3JldHVybiB2LnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhDLEkpfSxjcmVhdGVDZWxsUmFuZ2U6ZnVuY3Rpb24oQyxJLGope3JldHVy''@;'; put 'put ''biB2LnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdlKEMsSSxqKX0scm93SW5kZXhNYXBwZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdi50YWJsZVByb3BzLnJvd0luZGV4TWFwcGVyKCl9LGNvbHVtbkluZGV4TWFwcGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHYudGFibGVQcm9wcy5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlcigpfX0pLHRoaXMudHJhbnNmb3JtYXRpb249bmV3IGFxZSh0aGlzLnNlbGVjdGVkUmFuZ2Use2NvdW50Um93czpmdW5jdGlvbigpe3JldHVybiB2LnRhYmxlUHJvcHMuY291bnRSb3dzVHJhbnNsYXRlZCgpfSxjb3VudENvbHM6ZnVuY3Rpb24oKXtyZXR1cm4gdi50YWJsZVByb3BzLmNv''@;'; put 'put ''dW50Q29sc1RyYW5zbGF0ZWQoKX0sdmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzOmZ1bmN0aW9uKEMpe3JldHVybiB2LnRhYmxlUHJvcHMudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKEMpfSxyZW5kZXJhYmxlVG9WaXN1YWxDb29yZHM6ZnVuY3Rpb24oQyl7cmV0dXJuIHYudGFibGVQcm9wcy5y''@;'; put 'put ''ZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoQyl9LGNyZWF0ZUNlbGxDb29yZHM6ZnVuY3Rpb24oQyxJKXtyZXR1cm4gdi50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoQyxJKX0sZml4ZWRSb3dzQm90dG9tOmZ1bmN0aW9uKCl7cmV0dXJuIGcuZml4ZWRSb3dzQm90dG9tfSxtaW5TcGFyZVJv''@;'; put 'put ''d3M6ZnVuY3Rpb24oKXtyZXR1cm4gZy5taW5TcGFyZVJvd3N9LG1pblNwYXJlQ29sczpmdW5jdGlvbigpe3JldHVybiBnLm1pblNwYXJlQ29sc30sYXV0b1dyYXBSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gZy5hdXRvV3JhcFJvd30sYXV0b1dyYXBDb2w6ZnVuY3Rpb24oKXtyZXR1cm4gZy5hdXRv''@;'; put 'put ''V3JhcENvbH19KSx0aGlzLnRyYW5zZm9ybWF0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlVHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIHYucnVuTG9j''@;'; put 'put ''YWxIb29rcy5hcHBseSh2LFsiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtU3RhcnQiXS5jb25jYXQoQykpfSksdGhpcy50cmFuc2Zvcm1hdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyVHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXko''@;'; put 'put ''eSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIHYucnVuTG9jYWxIb29rcy5hcHBseSh2LFsiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCJdLmNvbmNhdChDKSl9KSx0aGlzLnRyYW5zZm9ybWF0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlVHJhbnNmb3JtRW5kIixmdW5j''@;'; put 'put ''dGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiB2LnJ1bkxvY2FsSG9va3MuYXBwbHkodixbImJlZm9yZU1vZGlmeVRyYW5zZm9ybUVuZCJdLmNvbmNhdChDKSl9KSx0aGlzLnRyYW5zZm9y''@;'; put 'put ''bWF0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJUcmFuc2Zvcm1FbmQiLGZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIHYucnVuTG9jYWxIb29rcy5hcHBseSh2LFsiYWZ0ZXJNb2Rp''@;'; put 'put ''ZnlUcmFuc2Zvcm1FbmQiXS5jb25jYXQoQykpfSksdGhpcy50cmFuc2Zvcm1hdGlvbi5hZGRMb2NhbEhvb2soImluc2VydFJvd1JlcXVpcmUiLGZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07''@;'; put 'put ''cmV0dXJuIHYucnVuTG9jYWxIb29rcy5hcHBseSh2LFsiaW5zZXJ0Um93UmVxdWlyZSJdLmNvbmNhdChDKSl9KSx0aGlzLnRyYW5zZm9ybWF0aW9uLmFkZExvY2FsSG9vaygiaW5zZXJ0Q29sUmVxdWlyZSIsZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJh''@;'; put 'put ''eSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gdi5ydW5Mb2NhbEhvb2tzLmFwcGx5KHYsWyJpbnNlcnRDb2xSZXF1aXJlIl0uY29uY2F0KEMpKX0pfXJldHVybiBmdW5jdGlvbiBicWUoZCxnLGgpe2cmJlZTZShkLnByb3RvdHlwZSxnKSxoJiZWU2UoZCxoKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0U2VsZWN0ZWRSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZFJhbmdlfX0se2tleToiYmVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pblByb2dyZXNz''@;'; put 'put ''PSEwfX0se2tleToiZmluaXNoIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJTZWxlY3Rpb25GaW5pc2hlZCIsQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUmFuZ2UpKSx0aGlzLmluUHJvZ3Jlc3M9ITF9fSx7a2V5OiJpc0luUHJvZ3Jlc3MiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuaW5Qcm9ncmVzc319LHtrZXk6InNldFJhbmdlU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxDPSJtdWx0aXBsZSI9PT10aGlzLnNldHRpbmdzLnNl''@;'; put 'put ''bGVjdGlvbk1vZGUsST11MSh2KT90aGlzLnRhYmxlUHJvcHMuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpOnYsaj1oLnJvdzwwLGNlPWguY29sPDAsX2U9aiYmY2UsUmU9aC5jbG9uZSgpO3RoaXMuc2VsZWN0ZWRCeUNvcm5lcj1fZSx0aGlzLnJ1bkxvY2FsSG9va3MoImJl''@;'; put 'put ''Zm9yZVNldFJhbmdlU3RhcnQiLmNvbmNhdCh5PyJPbmx5IjoiIiksUmUpLCghQ3x8QyYmIUkmJnUxKHYpKSYmdGhpcy5zZWxlY3RlZFJhbmdlLmNsZWFyKCksdGhpcy5zZWxlY3RlZFJhbmdlLmFkZChSZSksMD09PXRoaXMuZ2V0TGF5ZXJMZXZlbCgpJiYodGhpcy5zZWxlY3RlZEJ5Um93SGVh''@;'; put 'put ''ZGVyLmNsZWFyKCksdGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLmNsZWFyKCkpLCFfZSYmY2UmJnRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLCFfZSYmaiYmdGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2''@;'; put 'put ''ZWwoKSkseXx8dGhpcy5zZXRSYW5nZUVuZChoKX19LHtrZXk6InNldFJhbmdlU3RhcnRPbmx5Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuc2V0UmFuZ2VTdGFydChoLHYsITApfX0se2tleToic2V0UmFuZ2VFbmQiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCF0aGlzLnNlbGVjdGVkUmFuZ2Uu''@;'; put 'put ''aXNFbXB0eSgpKXt2YXIgdj1oLmNsb25lKCk7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZXRSYW5nZUVuZCIsdiksdGhpcy5iZWdpbigpO3ZhciB5PXRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCk7InNpbmdsZSIhPT10aGlzLnNldHRpbmdzLnNlbGVjdGlvbk1vZGUmJnkuc2V0VG8o''@;'; put 'put ''dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHModi5yb3csdi5jb2wpKSx0aGlzLmhpZ2hsaWdodC5nZXRDZWxsKCkuY2xlYXIoKSx0aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3IoRHoseS5oaWdobGlnaHQpJiZ0aGlzLmhpZ2hsaWdodC5nZXRDZWxsKCkuYWRkKHRoaXMuc2VsZWN0''@;'; put 'put ''ZWRSYW5nZS5jdXJyZW50KCkuaGlnaGxpZ2h0KS5jb21taXQoKS5zeW5jV2l0aCh5KTt2YXIgQz10aGlzLmdldExheWVyTGV2ZWwoKTtDPHRoaXMuaGlnaGxpZ2h0LmxheWVyTGV2ZWwmJihHcih0aGlzLmhpZ2hsaWdodC5nZXRBcmVhcygpLGZ1bmN0aW9uKCR0KXskdC5jbGVhcigpfSksR3Io''@;'; put 'put ''dGhpcy5oaWdobGlnaHQuZ2V0SGVhZGVycygpLGZ1bmN0aW9uKCR0KXskdC5jbGVhcigpfSksR3IodGhpcy5oaWdobGlnaHQuZ2V0QWN0aXZlSGVhZGVycygpLGZ1bmN0aW9uKCR0KXskdC5jbGVhcigpfSkpLHRoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoQyk7dmFyIEk9dGhpcy5oaWdo''@;'; put 'put ''bGlnaHQuY3JlYXRlT3JHZXRBcmVhKCksaj10aGlzLmhpZ2hsaWdodC5jcmVhdGVPckdldEhlYWRlcigpLGNlPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9yR2V0QWN0aXZlSGVhZGVyKCk7aWYoSS5jbGVhcigpLGouY2xlYXIoKSxjZS5jbGVhcigpLHRoaXMuaGlnaGxpZ2h0LmlzRW5hYmxlZEZv''@;'; put 'put ''cihsdGUseS5oaWdobGlnaHQpJiYodGhpcy5pc011bHRpcGxlKCl8fEM+PTEpJiYoSS5hZGQoeS5mcm9tKS5hZGQoeS50bykuY29tbWl0KCksMT09PUMpKXt2YXIgX2U9dGhpcy5zZWxlY3RlZFJhbmdlLnByZXZpb3VzKCk7dGhpcy5oaWdobGlnaHQudXNlTGF5ZXJMZXZlbChDLTEpLmNyZWF0''@;'; put 'put ''ZU9yR2V0QXJlYSgpLmFkZChfZS5mcm9tKS5jb21taXQoKS5zeW5jV2l0aChfZSksdGhpcy5oaWdobGlnaHQudXNlTGF5ZXJMZXZlbChDKX1pZih0aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3IoTHoseS5oaWdobGlnaHQpKXt2YXIgUmU9MD09PXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3NU''@;'; put 'put ''cmFuc2xhdGVkKCksTmU9MD09PXRoaXMudGFibGVQcm9wcy5jb3VudENvbHNUcmFuc2xhdGVkKCksS2U9eTsoUmV8fE5lKSYmKEtlPXkuY2xvbmUoKSksUmUmJihLZS5mcm9tLnJvdz0tMSksTmUmJihLZS5mcm9tLmNvbD0tMSksInNpbmdsZSI9PT10aGlzLnNldHRpbmdzLnNlbGVjdGlvbk1v''@;'; put 'put ''ZGU/KHRoaXMuaXNTZWxlY3RlZEJ5QW55SGVhZGVyKCkmJktlLmZyb20ubm9ybWFsaXplKCksai5hZGQoS2UuZnJvbSkuY29tbWl0KCkpOmouYWRkKEtlLmZyb20pLmFkZChLZS50bykuY29tbWl0KCksdGhpcy5pc0VudGlyZVJvd1NlbGVjdGVkKCkmJnRoaXMudGFibGVQcm9wcy5jb3VudENv''@;'; put 'put ''bHMoKT09PXkuZ2V0V2lkdGgoKSYmY2UuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHkuZnJvbS5yb3csLTEpKS5hZGQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoeS50by5yb3csLTEpKS5jb21taXQoKSx0aGlzLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQo''@;'; put 'put ''KSYmdGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpPT09eS5nZXRIZWlnaHQoKSYmY2UuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC0xLHkuZnJvbS5jb2wpKS5hZGQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLTEseS50by5jb2wpKS5jb21taXQoKX10''@;'; put 'put ''aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyU2V0UmFuZ2VFbmQiLGgpfX19LHtrZXk6ImlzTXVsdGlwbGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9RlMoIXRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCkuaXNTaW5nbGUoKSk7cmV0dXJuIHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJJc011''@;'; put 'put ''bHRpcGxlU2VsZWN0aW9uIixoKSxoLnZhbHVlfX0se2tleToidHJhbnNmb3JtU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTt0aGlzLnNldFJhbmdlU3RhcnQodGhpcy50cmFuc2Zv''@;'; put 'put ''cm1hdGlvbi50cmFuc2Zvcm1TdGFydChoLHYseSkpfX0se2tleToidHJhbnNmb3JtRW5kIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuc2V0UmFuZ2VFbmQodGhpcy50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm1FbmQoaCx2KSl9fSx7a2V5OiJnZXRMYXllckxldmVsIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLnNlbGVjdGVkUmFuZ2Uuc2l6ZSgpLTF9fSx7a2V5OiJpc1NlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnNlbGVjdGVkUmFuZ2UuaXNFbXB0eSgpfX0se2tleToiaXNTZWxlY3RlZEJ5Um93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBo''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldExheWVyTGV2ZWwoKTtyZXR1cm4hdGhpcy5pc1NlbGVjdGVkQnlDb3JuZXIoaCkmJnRoaXMuaXNFbnRpcmVSb3dTZWxlY3RlZChoKX19LHtrZXk6ImlzRW50aXJlUm93U2VsZWN0''@;'; put 'put ''ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0TGF5ZXJMZXZlbCgpO3JldHVybi0xPT09aD90aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuc2l6ZT4wOnRoaXMuc2VsZWN0ZWRCeVJv''@;'; put 'put ''d0hlYWRlci5oYXMoaCl9fSx7a2V5OiJpc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0TGF5ZXJMZXZlbCgpO3JldHVybiF0aGlzLmlzU2Vs''@;'; put 'put ''ZWN0ZWRCeUNvcm5lcigpJiZ0aGlzLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoaCl9fSx7a2V5OiJpc0VudGlyZUNvbHVtblNlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdl''@;'; put 'put ''dExheWVyTGV2ZWwoKTtyZXR1cm4tMT09PWg/dGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLnNpemU+MDp0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuaGFzKGgpfX0se2tleToiaXNTZWxlY3RlZEJ5QW55SGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzU2VsZWN0''@;'; put 'put ''ZWRCeVJvd0hlYWRlcigtMSl8fHRoaXMuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKC0xKXx8dGhpcy5pc1NlbGVjdGVkQnlDb3JuZXIoKX19LHtrZXk6ImlzU2VsZWN0ZWRCeUNvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZEJ5Q29ybmVyfX0se2tleToiaW5J''@;'; put 'put ''blNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRSYW5nZS5pbmNsdWRlcyhoKX19LHtrZXk6ImlzQ2VsbENvcm5lclZpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3MuZmlsbEhhbmRsZSYmIXRoaXMudGFibGVQcm9wcy5p''@;'; put 'put ''c0VkaXRvck9wZW5lZCgpJiYhdGhpcy5pc011bHRpcGxlKCl9fSx7a2V5OiJpc0FyZWFDb3JuZXJWaXNpYmxlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4oIU51bWJlci5pc0ludGVnZXIoaCl8fGg9PT10aGlzLmdldExheWVyTGV2ZWwoKSkmJnRoaXMuc2V0dGluZ3MuZmlsbEhhbmRsZSYm''@;'; put 'put ''IXRoaXMudGFibGVQcm9wcy5pc0VkaXRvck9wZW5lZCgpJiZ0aGlzLmlzTXVsdGlwbGUoKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRSYW5nZS5jbGVhcigpLHRoaXMuaGlnaGxpZ2h0LmNsZWFyKCl9fSx7a2V5OiJkZXNlbGVjdCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXshdGhpcy5pc1NlbGVjdGVkKCl8fCh0aGlzLmluUHJvZ3Jlc3M9ITEsdGhpcy5jbGVhcigpLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJEZXNlbGVjdCIpKX19LHtrZXk6InNlbGVjdEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSx5PXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKSxDPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKTtpZihofHx2fHwwIT09eSYmMCE9''@;'; put 'put ''PUMpe3ZhciBJPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHY/LTE6MCxoPy0xOjApO3RoaXMuY2xlYXIoKSx0aGlzLnNldFJhbmdlU3RhcnRPbmx5KEkpLHRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLHRoaXMuc2VsZWN0ZWRCeUNv''@;'; put 'put ''bHVtbkhlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLHRoaXMuc2V0UmFuZ2VFbmQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoeS0xLEMtMSkpLHRoaXMuZmluaXNoKCl9fX0se2tleToic2VsZWN0Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1O''@;'; put 'put ''TyhoKTtpZigxPT09eSlyZXR1cm4hMTtpZigwPT09eSl0aHJvdyBuZXcgRXJyb3IoRDIoRlNlfHwoRlNlPWZ1bmN0aW9uIHlxZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZy''@;'; put 'put ''ZWV6ZShnKX19KSl9KFsiVW5zdXBwb3J0ZWQgZm9ybWF0IG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2VzIHdhcyBwYXNzZWQuIFRvIHNlbGVjdCBjZWxscyBwYXNzIFxuICAgICAgICB0aGUgY29vcmRpbmF0ZXMgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIChbW3Jvd1N0YXJ0LCBjb2x1bW5TdGFydC9j''@;'; put 'put ''b2x1bW5Qcm9wU3RhcnQsIHJvd0VuZCwgXG4gICAgICAgIGNvbHVtbkVuZC9jb2x1bW5Qcm9wRW5kXV0pIG9yIGFzIGFuIGFycmF5IG9mIENlbGxSYW5nZSBvYmplY3RzLiJdLFsiVW5zdXBwb3J0ZWQgZm9ybWF0IG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2VzIHdhcyBwYXNzZWQuIFRvIHNlbGVj''@;'; put 'put ''dCBjZWxscyBwYXNzXFx4MjBcbiAgICAgICAgdGhlIGNvb3JkaW5hdGVzIGFzIGFuIGFycmF5IG9mIGFycmF5cyAoW1tyb3dTdGFydCwgY29sdW1uU3RhcnQvY29sdW1uUHJvcFN0YXJ0LCByb3dFbmQsXFx4MjBcbiAgICAgICAgY29sdW1uRW5kL2NvbHVtblByb3BFbmRdXSkgb3IgYXMgYW4g''@;'; put 'put ''YXJyYXkgb2YgQ2VsbFJhbmdlIG9iamVjdHMuIl0pKSkpO3ZhciBDPVJ6KHkse3Byb3BUb0NvbDpmdW5jdGlvbihSZSl7cmV0dXJuIHYudGFibGVQcm9wcy5wcm9wVG9Db2woUmUpfSxrZWVwRGlyZWN0aW9uOiEwfSksST10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksaj10aGlzLnRhYmxl''@;'; put 'put ''UHJvcHMuY291bnRDb2xzKCksY2U9IWguc29tZShmdW5jdGlvbihfZSl7dmFyIE5lPUhTZShDKF9lKSw0KSxodD1OZVsxXSxCdD1OZVsyXSwkdD1OZVszXTtyZXR1cm4hKFp3KE5lWzBdLEkpJiZadyhodCxqKSYmWncoQnQsSSkmJlp3KCR0LGopKX0pO3JldHVybiBjZSYmKHRoaXMuY2xlYXIo''@;'; put 'put ''KSxHcihoLGZ1bmN0aW9uKF9lKXt2YXIgTmU9SFNlKEMoX2UpLDQpLEJ0PU5lWzJdLCR0PU5lWzNdO3Yuc2V0UmFuZ2VTdGFydE9ubHkodi50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoTmVbMF0sTmVbMV0pLCExKSx2LnNldFJhbmdlRW5kKHYudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29v''@;'; put 'put ''cmRzKEJ0LCR0KSksdi5maW5pc2goKX0pKSxjZX19LHtrZXk6InNlbGVjdENvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpoLHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOi0xLEM9InN0cmluZyI9PXR5cGVvZiBoP3RoaXMudGFibGVQcm9wcy5wcm9wVG9Db2woaCk6aCxJPSJzdHJpbmciPT10eXBlb2Ygdj90aGlzLnRhYmxlUHJvcHMucHJvcFRvQ29sKHYpOnYsaj10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCksY2U9''@;'; put 'put ''dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLF9lPVp3KEMsaikmJlp3KEksaik7cmV0dXJuIF9lJiYodGhpcy5zZXRSYW5nZVN0YXJ0T25seSh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jkcyh5LEMpKSx0aGlzLnNldFJhbmdlRW5kKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxs''@;'; put 'put ''Q29vcmRzKGNlLTEsSSkpLHRoaXMuZmluaXNoKCkpLF9lfX0se2tleToic2VsZWN0Um93cyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmgseT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LTEsQz10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksST10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCksaj1adyhoLEMpJiZadyh2LEMpO3JldHVybiBqJiYodGhpcy5zZXRSYW5nZVN0YXJ0T25seSh0aGlzLnRhYmxlUHJvcHMuY3JlYXRl''@;'; put 'put ''Q2VsbENvb3JkcyhoLHkpKSx0aGlzLnNldFJhbmdlRW5kKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHYsSS0xKSksdGhpcy5maW5pc2goKSksan19LHtrZXk6InJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5oaWdobGlnaHQuZ2V0Q3VzdG9tU2VsZWN0aW9ucygp''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oX2Upe19lLmNvbW1pdCgpfSksdGhpcy5pc1NlbGVjdGVkKCkpe3ZhciB2PXRoaXMuaGlnaGxpZ2h0LmdldENlbGwoKSx5PXRoaXMuZ2V0TGF5ZXJMZXZlbCgpO3YuY29tbWl0KCkuc3luY1dpdGgodGhpcy5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKSk7Zm9yKHZh''@;'; put 'put ''ciBDPTA7Qzx0aGlzLnNlbGVjdGVkUmFuZ2Uuc2l6ZSgpO0MrPTEpe3RoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoQyk7dmFyIEk9dGhpcy5oaWdobGlnaHQuY3JlYXRlT3JHZXRBcmVhKCksaj10aGlzLmhpZ2hsaWdodC5jcmVhdGVPckdldEhlYWRlcigpLGNlPXRoaXMuaGlnaGxpZ2h0''@;'; put 'put ''LmNyZWF0ZU9yR2V0QWN0aXZlSGVhZGVyKCk7SS5jb21taXQoKSxqLmNvbW1pdCgpLGNlLmNvbW1pdCgpfXRoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoeSl9fX1dKSxkfSgpO0kyKGpTZSxyZCk7Y29uc3QgX3FlPWpTZTtmdW5jdGlvbiBmdGUoZCxnKXt2YXIgaD0ic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGQ/R2VlKGQpOmQ7aWYoQWwoaCkpe3ZhciB2PUFsKGcpLHk9e307cmV0dXJuIFpsKGgsZnVuY3Rpb24oQyxJKXsiQ0VMTF9UWVBFIiE9PUkmJighdnx8diYmIXMxKGcsSSkpJiYoeVtJXT1DKX0pLHl9fWZ1bmN0aW9uIGh0ZShkKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihkKSYmZD49''@;'; put 'put ''MH1mdW5jdGlvbiBkdGUoZCxnKXtpZighZCgpKXRocm93IG5ldyBFcnJvcigiQXNzZXJ0aW9uIGZhaWxlZDogIi5jb25jYXQoZykpfWZ1bmN0aW9uIHB0ZShkKXtyZXR1cm4gbnVsbD09ZH1mdW5jdGlvbiBjNmUoZCl7cmV0dXJuKGM2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3lt''@;'; put 'put ''Ym9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBl''@;'; put 'put ''b2YgZ30pKGQpfWNvbnN0IFpTZT1mdW5jdGlvbigpe3JldHVybnthY3RpdmVIZWFkZXJDbGFzc05hbWU6Imh0X19hY3RpdmVfaGlnaGxpZ2h0IixhbGxvd0VtcHR5OiEwLGFsbG93SHRtbDohMSxhbGxvd0luc2VydENvbHVtbjohMCxhbGxvd0luc2VydFJvdzohMCxhbGxvd0ludmFsaWQ6ITAs''@;'; put 'put ''YWxsb3dSZW1vdmVDb2x1bW46ITAsYWxsb3dSZW1vdmVSb3c6ITAsYXV0b0NvbHVtblNpemU6dm9pZCAwLGF1dG9Sb3dTaXplOnZvaWQgMCxhdXRvV3JhcENvbDohMSxhdXRvV3JhcFJvdzohMSxiaW5kUm93c1dpdGhIZWFkZXJzOnZvaWQgMCxjZWxsOltdLGNlbGxzOnZvaWQgMCxjaGVja2Vk''@;'; put 'put ''VGVtcGxhdGU6dm9pZCAwLGNsYXNzTmFtZTp2b2lkIDAsY29sSGVhZGVyczpudWxsLGNvbGxhcHNpYmxlQ29sdW1uczp2b2lkIDAsY29sdW1uSGVhZGVySGVpZ2h0OnZvaWQgMCxjb2x1bW5zOnZvaWQgMCxjb2x1bW5Tb3J0aW5nOnZvaWQgMCxjb2x1bW5TdW1tYXJ5OnZvaWQgMCxjb2xXaWR0''@;'; put 'put ''aHM6dm9pZCAwLGNvbW1lbnRlZENlbGxDbGFzc05hbWU6Imh0Q29tbWVudENlbGwiLGNvbW1lbnRzOiExLGNvbnRleHRNZW51OnZvaWQgMCxjb3B5YWJsZTohMCxjb3B5UGFzdGU6ITAsY29ycmVjdEZvcm1hdDohMSxjdXJyZW50Q29sQ2xhc3NOYW1lOnZvaWQgMCxjdXJyZW50SGVhZGVyQ2xh''@;'; put 'put ''c3NOYW1lOiJodF9faGlnaGxpZ2h0IixjdXJyZW50Um93Q2xhc3NOYW1lOnZvaWQgMCxjdXN0b21Cb3JkZXJzOiExLGRhdGE6dm9pZCAwLGRhdGFTY2hlbWE6dm9pZCAwLGRhdGVGb3JtYXQ6IkREL01NL1lZWVkiLGRhdGVQaWNrZXJDb25maWc6dm9pZCAwLGRlZmF1bHREYXRlOnZvaWQgMCxk''@;'; put 'put ''aXNhYmxlVmlzdWFsU2VsZWN0aW9uOiExLGRyYWdUb1Njcm9sbDohMCxkcm9wZG93bk1lbnU6dm9pZCAwLGVkaXRvcjp2b2lkIDAsZW50ZXJCZWdpbnNFZGl0aW5nOiEwLGVudGVyTW92ZXM6e2NvbDowLHJvdzoxfSxmaWxsSGFuZGxlOnthdXRvSW5zZXJ0Um93OiExfSxmaWx0ZXI6ITAsZmls''@;'; put 'put ''dGVyaW5nQ2FzZVNlbnNpdGl2ZTohMSxmaWx0ZXJzOnZvaWQgMCxmaXhlZENvbHVtbnNMZWZ0OjAsZml4ZWRDb2x1bW5zU3RhcnQ6MCxmaXhlZFJvd3NCb3R0b206MCxmaXhlZFJvd3NUb3A6MCxmb3JtdWxhczp2b2lkIDAsZnJhZ21lbnRTZWxlY3Rpb246ITEsaGVpZ2h0OnZvaWQgMCxoaWRk''@;'; put 'put ''ZW5Db2x1bW5zOnZvaWQgMCxoaWRkZW5Sb3dzOnZvaWQgMCxpbnZhbGlkQ2VsbENsYXNzTmFtZToiaHRJbnZhbGlkIixpc0VtcHR5Q29sOmZ1bmN0aW9uKGcpe3ZhciBoLHY7Zm9yKGg9MCx2PXRoaXMuY291bnRSb3dzKCk7aDx2O2grKylpZighMT09PWRjKHRoaXMuZ2V0RGF0YUF0Q2VsbCho''@;'; put 'put ''LGcpKSlyZXR1cm4hMTtyZXR1cm4hMH0saXNFbXB0eVJvdzpmdW5jdGlvbihnKXt2YXIgaCx2LHksQztmb3IoaD0wLHY9dGhpcy5jb3VudENvbHMoKTtoPHY7aCsrKWlmKCExPT09ZGMoeT10aGlzLmdldERhdGFBdENlbGwoZyxoKSkpcmV0dXJuIm9iamVjdCI9PT1jNmUoeSkmJihDPXRoaXMu''@;'; put 'put ''Z2V0Q2VsbE1ldGEoZyxoKSx1M2UodGhpcy5nZXRTY2hlbWEoKVtDLnByb3BdLHkpKTtyZXR1cm4hMH0sbGFiZWw6dm9pZCAwLGxhbmd1YWdlOiJlbi1VUyIsbGF5b3V0RGlyZWN0aW9uOiJpbmhlcml0IixsaWNlbnNlS2V5OnZvaWQgMCxsb2NhbGU6ImVuLVVTIixtYW51YWxDb2x1bW5GcmVl''@;'; put 'put ''emU6dm9pZCAwLG1hbnVhbENvbHVtbk1vdmU6dm9pZCAwLG1hbnVhbENvbHVtblJlc2l6ZTp2b2lkIDAsbWFudWFsUm93TW92ZTp2b2lkIDAsbWFudWFsUm93UmVzaXplOnZvaWQgMCxtYXhDb2xzOjEvMCxtYXhSb3dzOjEvMCxtZXJnZUNlbGxzOiExLG1pbkNvbHM6MCxtaW5Sb3dzOjAsbWlu''@;'; put 'put ''U3BhcmVDb2xzOjAsbWluU3BhcmVSb3dzOjAsbXVsdGlDb2x1bW5Tb3J0aW5nOnZvaWQgMCxuZXN0ZWRIZWFkZXJzOnZvaWQgMCxuZXN0ZWRSb3dzOnZvaWQgMCxub1dvcmRXcmFwQ2xhc3NOYW1lOiJodE5vV3JhcCIsbnVtZXJpY0Zvcm1hdDp2b2lkIDAsb2JzZXJ2ZURPTVZpc2liaWxpdHk6''@;'; put 'put ''ITAsb3V0c2lkZUNsaWNrRGVzZWxlY3RzOiEwLHBlcnNpc3RlbnRTdGF0ZTp2b2lkIDAscGxhY2Vob2xkZXI6dm9pZCAwLHBsYWNlaG9sZGVyQ2VsbENsYXNzTmFtZToiaHRQbGFjZWhvbGRlciIscHJldmVudE92ZXJmbG93OiExLHByZXZlbnRXaGVlbDohMSxyZWFkT25seTohMSxyZWFkT25s''@;'; put 'put ''eUNlbGxDbGFzc05hbWU6Imh0RGltbWVkIixyZW5kZXJBbGxSb3dzOnZvaWQgMCxyZW5kZXJlcjp2b2lkIDAscm93SGVhZGVyczp2b2lkIDAscm93SGVhZGVyV2lkdGg6dm9pZCAwLHJvd0hlaWdodHM6dm9pZCAwLHNlYXJjaDohMSxzZWxlY3Rpb25Nb2RlOiJtdWx0aXBsZSIsc2VsZWN0T3B0''@;'; put 'put ''aW9uczp2b2lkIDAsc2tpcENvbHVtbk9uUGFzdGU6ITEsc2tpcFJvd09uUGFzdGU6ITEsc29ydEJ5UmVsZXZhbmNlOiEwLHNvdXJjZTp2b2lkIDAsc3RhcnRDb2xzOjUsc3RhcnRSb3dzOjUsc3RyZXRjaEg6Im5vbmUiLHN0cmljdDp2b2lkIDAsdGFibGVDbGFzc05hbWU6dm9pZCAwLHRhYk1v''@;'; put 'put ''dmVzOntyb3c6MCxjb2w6MX0sdGl0bGU6dm9pZCAwLHRyaW1Ecm9wZG93bjohMCx0cmltUm93czp2b2lkIDAsdHJpbVdoaXRlc3BhY2U6ITAsdHlwZToidGV4dCIsdW5jaGVja2VkVGVtcGxhdGU6dm9pZCAwLHVuZG86dm9pZCAwLHZhbGlkYXRvcjp2b2lkIDAsdmlld3BvcnRDb2x1bW5SZW5k''@;'; put 'put ''ZXJpbmdPZmZzZXQ6ImF1dG8iLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OiJhdXRvIix2aXNpYmxlUm93czoxMCx3aWR0aDp2b2lkIDAsd29yZFdyYXA6ITB9fTtmdW5jdGlvbiB6U2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9''@;'; put 'put ''di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBHU2UoZCxnLGgpe3JldHVybiBnJiZ6U2UoZC5wcm90b3R5cGUsZyksaCYmelNlKGQsaCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZH1mdW5jdGlvbiBXU2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgU3FlPWZ1bmN0aW9uKCl7ZnVu''@;'; put 'put ''Y3Rpb24gZChnKXtXU2UodGhpcyxkKSx0aGlzLm1ldGFDdG9yPWZ1bmN0aW9uIGtxZSgpe3JldHVybiBHU2UoZnVuY3Rpb24gZCgpe1dTZSh0aGlzLGQpfSl9KCksdGhpcy5tZXRhPXRoaXMubWV0YUN0b3IucHJvdG90eXBlLFIxKHRoaXMubWV0YSxaU2UoKSksdGhpcy5tZXRhLmluc3RhbmNl''@;'; put 'put ''PWd9cmV0dXJuIEdTZShkLFt7a2V5OiJnZXRNZXRhQ29uc3RydWN0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0YUN0b3J9fSx7a2V5OiJnZXRNZXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1ldGF9fSx7a2V5OiJ1cGRhdGVNZXRhIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihoKXtSMSh0aGlzLm1ldGEsaCksUjEodGhpcy5tZXRhLGZ0ZShoLnR5cGUsaCkpfX1dKSxkfSgpO2Z1bmN0aW9uIFlTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2''@;'; put 'put ''YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciB4cWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyFmdW5jdGlvbiBNcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs''@;'; put 'put ''bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxkKTt2YXIgaD1nLmdldE1ldGFDb25zdHJ1Y3RvcigpO3RoaXMubWV0YT1uZXcgaH1yZXR1cm4gZnVuY3Rpb24gRXFlKGQsZyxoKXtnJiZZU2UoZC5wcm90b3R5cGUsZyksaCYmWVNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''InByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldE1ldGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0YX19LHtrZXk6InVwZGF0ZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgpe1IxKHRoaXMubWV0YSxoKSxSMSh0aGlzLm1ldGEsZnRlKGgudHlwZSxoKSl9fV0p''@;'; put 'put ''LGR9KCk7ZnVuY3Rpb24gVVNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2''@;'; put 'put ''LmtleSx2KX19dmFyIGY2ZT1mdW5jdGlvbihkKXtmdW5jdGlvbiBnKGgpeyhmdW5jdGlvbiBUcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZyksdGhpcy52YWx1ZUZhY3Rv''@;'; put 'put ''cnk9aCx0aGlzLmRhdGE9W10sdGhpcy5pbmRleD1bXSx0aGlzLmhvbGVzPW5ldyBTZXR9cmV0dXJuIGZ1bmN0aW9uIElxZShkLGcsaCl7ZyYmVVNlKGQucHJvdG90eXBlLGcpLGgmJlVTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShn''@;'; put 'put ''LFt7a2V5OiJvYnRhaW4iLHZhbHVlOmZ1bmN0aW9uKHYpe2R0ZShmdW5jdGlvbigpe3JldHVybiBodGUodil9LCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyLiIpO3ZhciBDLHk9dGhpcy5fZ2V0U3RvcmFnZUluZGV4QnlLZXkodik7aWYoeT49MCl2b2lkIDA9PT0oQz10aGlzLmRhdGFb''@;'; put 'put ''eV0pJiYoQz10aGlzLnZhbHVlRmFjdG9yeSh2KSx0aGlzLmRhdGFbeV09Qyk7ZWxzZSBpZihDPXRoaXMudmFsdWVGYWN0b3J5KHYpLHRoaXMuaG9sZXMuc2l6ZT4wKXt2YXIgST10aGlzLmhvbGVzLnZhbHVlcygpLm5leHQoKS52YWx1ZTt0aGlzLmhvbGVzLmRlbGV0ZShJKSx0aGlzLmRhdGFb''@;'; put 'put ''SV09Qyx0aGlzLmluZGV4W3ZdPUl9ZWxzZSB0aGlzLmRhdGEucHVzaChDKSx0aGlzLmluZGV4W3ZdPXRoaXMuZGF0YS5sZW5ndGgtMTtyZXR1cm4gQ319LHtrZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24odil7dmFyIHksQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50''@;'; put 'put ''c1sxXT9hcmd1bWVudHNbMV06MTtkdGUoZnVuY3Rpb24oKXtyZXR1cm4gaHRlKHYpfHxwdGUodil9LCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyIG9yIG51bGwvdW5kZWZpbmVkIGFyZ3VtZW50LiIpO2Zvcih2YXIgST1bXSxqPXRoaXMuZGF0YS5sZW5ndGgsY2U9MDtjZTxDO2NlKysp''@;'; put 'put ''SS5wdXNoKGorY2UpLHRoaXMuZGF0YS5wdXNoKHZvaWQgMCk7KHk9dGhpcy5pbmRleCkuc3BsaWNlLmFwcGx5KHksW3B0ZSh2KT90aGlzLmluZGV4Lmxlbmd0aDp2LDBdLmNvbmNhdChJKSl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKHYpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxO2R0ZShmdW5jdGlvbigpe3JldHVybiBodGUodil8fHB0ZSh2KX0sIkV4cGVjdGluZyBhbiB1bnNpZ25lZCBudW1iZXIgb3IgbnVsbC91bmRlZmluZWQgYXJndW1lbnQuIik7Zm9yKHZhciBDPXRoaXMuaW5kZXguc3BsaWNl''@;'; put 'put ''KHB0ZSh2KT90aGlzLmluZGV4Lmxlbmd0aC15OnYseSksST0wO0k8Qy5sZW5ndGg7SSsrKXt2YXIgaj1DW0ldOyJudW1iZXIiPT10eXBlb2YgaiYmdGhpcy5ob2xlcy5hZGQoail9fX0se2tleToic2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmxlbmd0aC10aGlzLmhv''@;'; put 'put ''bGVzLnNpemV9fSx7a2V5OiJ2YWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHY9dGhpcztyZXR1cm4gZDQodGhpcy5kYXRhLGZ1bmN0aW9uKHksQyl7cmV0dXJuIXYuaG9sZXMuaGFzKEMpfSlbU3ltYm9sLml0ZXJhdG9yXSgpfX0se2tleToiZW50cmllcyIsdmFsdWU6ZnVuY3Rpb24oKXtm''@;'; put 'put ''b3IodmFyIHY9W10seT0wO3k8dGhpcy5kYXRhLmxlbmd0aDt5Kyspe3ZhciBDPXRoaXMuX2dldEtleUJ5U3RvcmFnZUluZGV4KHkpOy0xIT09QyYmdi5wdXNoKFtDLHRoaXMuZGF0YVt5XV0pfXZhciBJPTA7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtpZihJPHYubGVuZ3RoKXt2YXIgY2U9dltJ''@;'; put 'put ''XTtyZXR1cm4gSSs9MSx7dmFsdWU6Y2UsZG9uZTohMX19cmV0dXJue2RvbmU6ITB9fX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRhdGE9W10sdGhpcy5pbmRleD1bXSx0aGlzLmhvbGVzLmNsZWFyKCl9fSx7a2V5OiJfZ2V0U3RvcmFnZUluZGV4QnlLZXkiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLmluZGV4Lmxlbmd0aD52P3RoaXMuaW5kZXhbdl06LTF9fSx7a2V5OiJfZ2V0S2V5QnlTdG9yYWdlSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLmluZGV4LmluZGV4T2Yodil9fSx7a2V5OlN5bWJvbC5pdGVyYXRvcix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmVudHJpZXMoKX19XSksZ30oKTtmdW5jdGlvbiBRU2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3Jp''@;'; put 'put ''dGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgT3FlPVsiZGF0YSIsIndpZHRoIl0sUnFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXt2YXIgaD10aGlzOyhmdW5jdGlvbiBEcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5nbG9iYWxNZXRhPWcsdGhpcy5tZXRhcz1uZXcgZjZlKGZ1bmN0aW9uKCl7cmV0dXJuIGguX2NyZWF0ZU1ldGEoKX0pfXJldHVybiBmdW5jdGlvbiBMcWUoZCxnLGgpe2cmJlFTZShkLnByb3Rv''@;'; put 'put ''dHlwZSxnKSxoJiZRU2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToidXBkYXRlTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzLmdldE1ldGEoaCk7UjEoeSx2KSxSMSh5LGZ0ZSh2LnR5cGUseSkpfX0s''@;'; put 'put ''e2tleToiY3JlYXRlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMubWV0YXMuaW5zZXJ0KGgsdil9fSx7a2V5OiJyZW1vdmVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5tZXRhcy5yZW1vdmUoaCx2KX19LHtrZXk6ImdldE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLm1ldGFzLm9idGFpbihoKX19LHtrZXk6ImdldE1ldGFDb25zdHJ1Y3RvciIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMubWV0YXMub2J0YWluKGgpLmNvbnN0cnVjdG9yfX0se2tleToiY2xlYXJDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1ldGFzLmNsZWFy''@;'; put 'put ''KCl9fSx7a2V5OiJfY3JlYXRlTWV0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gQ3FlKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXTtmdW5jdGlvbiBoKCl7fUl2KGgsZCk7Zm9yKHZhciB2PTA7djxn''@;'; put 'put ''Lmxlbmd0aDt2KyspaC5wcm90b3R5cGVbZ1t2XV09dm9pZCAwO3JldHVybiBofSh0aGlzLmdsb2JhbE1ldGEuZ2V0TWV0YUNvbnN0cnVjdG9yKCksT3FlKS5wcm90b3R5cGV9fV0pLGR9KCk7ZnVuY3Rpb24gQnFlKGQpe3JldHVybiBmdW5jdGlvbiBOcWUoZCl7aWYoQXJyYXkuaXNBcnJheShk''@;'; put 'put ''KSlyZXR1cm4gaDZlKGQpfShkKXx8ZnVuY3Rpb24gSHFlKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIEZxZShkLGcpe2lmKGQp''@;'; put 'put ''e2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gaDZlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09''@;'; put 'put ''aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBoNmUoZCxnKX19KGQpfHxmdW5jdGlvbiBQcWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVt''@;'; put 'put ''cHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBoNmUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkm''@;'; put 'put ''JihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBKU2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3Vy''@;'; put 'put ''YWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgWnFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXt2YXIgaD10aGlzOyhmdW5jdGlvbiBWcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5jb2x1bW5NZXRhPWcsdGhpcy5tZXRhcz1uZXcgZjZlKGZ1bmN0aW9uKCl7cmV0dXJuIGguX2NyZWF0ZVJvdygpfSl9cmV0dXJuIGZ1bmN0aW9uIGpxZShkLGcsaCl7ZyYmSlNlKGQu''@;'; put 'put ''cHJvdG90eXBlLGcpLGgmJkpTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJ1cGRhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcy5nZXRNZXRhKGgsdik7UjEoQyx5KSxSMShDLGZ0ZSh5LnR5''@;'; put 'put ''cGUsQykpfX0se2tleToiY3JlYXRlUm93Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMubWV0YXMuaW5zZXJ0KGgsdil9fSx7a2V5OiJjcmVhdGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgsdil7Zm9yKHZhciB5PTA7eTx0aGlzLm1ldGFzLnNpemUoKTt5KyspdGhpcy5tZXRhcy5vYnRhaW4o''@;'; put 'put ''eSkuaW5zZXJ0KGgsdil9fSx7a2V5OiJyZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5tZXRhcy5yZW1vdmUoaCx2KX19LHtrZXk6InJlbW92ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtmb3IodmFyIHk9MDt5PHRoaXMubWV0YXMuc2l6ZSgpO3krKyl0aGlzLm1ldGFz''@;'; put 'put ''Lm9idGFpbih5KS5yZW1vdmUoaCx2KX19LHtrZXk6ImdldE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLm1ldGFzLm9idGFpbihoKS5vYnRhaW4odik7cmV0dXJuIHZvaWQgMD09PXk/QzpDW3ldfX0se2tleToic2V0TWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7''@;'; put 'put ''dGhpcy5tZXRhcy5vYnRhaW4oaCkub2J0YWluKHYpW3ldPUN9fSx7a2V5OiJyZW1vdmVNZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7ZGVsZXRlIHRoaXMubWV0YXMub2J0YWluKGgpLm9idGFpbih2KVt5XX19LHtrZXk6ImdldE1ldGFzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgaD1b''@;'; put 'put ''XSx2PUFycmF5LmZyb20odGhpcy5tZXRhcy52YWx1ZXMoKSkseT0wO3k8di5sZW5ndGg7eSsrKWgucHVzaC5hcHBseShoLEJxZSh2W3ldLnZhbHVlcygpKSk7cmV0dXJuIGh9fSx7a2V5OiJnZXRNZXRhc0F0Um93Iix2YWx1ZTpmdW5jdGlvbihoKXtkdGUoZnVuY3Rpb24oKXtyZXR1cm4gaHRl''@;'; put 'put ''KGgpfSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlci4iKTt2YXIgdj1uZXcgTWFwKHRoaXMubWV0YXMpO3JldHVybiB2LmhhcyhoKT9BcnJheS5mcm9tKHYuZ2V0KGgpLnZhbHVlcygpKTpbXX19LHtrZXk6ImNsZWFyQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tZXRhcy5jbGVh''@;'; put 'put ''cigpfX0se2tleToiX2NyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3JldHVybiBuZXcgZjZlKGZ1bmN0aW9uKHYpe3JldHVybiBoLl9jcmVhdGVNZXRhKHYpfSl9fSx7a2V5OiJfY3JlYXRlTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyh0aGlzLmNvbHVt''@;'; put 'put ''bk1ldGEuZ2V0TWV0YUNvbnN0cnVjdG9yKGgpKX19XSksZH0oKTtmdW5jdGlvbiB6cWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBYU2UoZCxnKXtmb3IodmFyIGg9MDto''@;'; put 'put ''PGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgS1NlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g''@;'; put 'put ''ZChnKXt2YXIgaD10aGlzLHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOltdO3pxZSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5n''@;'; put 'put ''bG9iYWxNZXRhPW5ldyBTcWUoZyksdGhpcy50YWJsZU1ldGE9bmV3IHhxZSh0aGlzLmdsb2JhbE1ldGEpLHRoaXMuY29sdW1uTWV0YT1uZXcgUnFlKHRoaXMuZ2xvYmFsTWV0YSksdGhpcy5jZWxsTWV0YT1uZXcgWnFlKHRoaXMuY29sdW1uTWV0YSkseS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3Jl''@;'; put 'put ''dHVybiBuZXcgQyhoKX0pLHRoaXMuZ2xvYmFsTWV0YS51cGRhdGVNZXRhKHYpfXJldHVybiBmdW5jdGlvbiBHcWUoZCxnLGgpe2cmJlhTZShkLnByb3RvdHlwZSxnKSxoJiZYU2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tl''@;'; put 'put ''eToiZ2V0R2xvYmFsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nbG9iYWxNZXRhLmdldE1ldGEoKX19LHtrZXk6InVwZGF0ZUdsb2JhbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuZ2xvYmFsTWV0YS51cGRhdGVNZXRhKGgpfX0se2tleToiZ2V0VGFibGVNZXRhIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRhYmxlTWV0YS5nZXRNZXRhKCl9fSx7a2V5OiJ1cGRhdGVUYWJsZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMudGFibGVNZXRhLnVwZGF0ZU1ldGEoaCl9fSx7a2V5OiJnZXRDb2x1bW5NZXRhIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5jb2x1bW5NZXRhLmdldE1ldGEoaCl9fSx7a2V5OiJ1cGRhdGVDb2x1bW5NZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuY29sdW1uTWV0YS51cGRhdGVNZXRhKGgsdil9fSx7a2V5OiJnZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXkudmlzdWFs''@;'; put 'put ''Um93LEk9eS52aXN1YWxDb2x1bW4saj10aGlzLmNlbGxNZXRhLmdldE1ldGEoaCx2KTtyZXR1cm4gai52aXN1YWxSb3c9QyxqLnZpc3VhbENvbD1JLGoucm93PWgsai5jb2w9dix0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyR2V0Q2VsbE1ldGEiLGopLGp9fSx7a2V5OiJnZXRDZWxsTWV0YUtl''@;'; put 'put ''eVZhbHVlIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7aWYoInN0cmluZyIhPXR5cGVvZiB5KXRocm93IG5ldyBFcnJvcigiVGhlIHBhc3NlZCBjZWxsIG1ldGEgb2JqZWN0IGtleSBpcyBub3QgYSBzdHJpbmciKTtyZXR1cm4gdGhpcy5jZWxsTWV0YS5nZXRNZXRhKGgsdix5KX19LHtrZXk6InNl''@;'; put 'put ''dENlbGxNZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXt0aGlzLmNlbGxNZXRhLnNldE1ldGEoaCx2LHksQyl9fSx7a2V5OiJ1cGRhdGVDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3RoaXMuY2VsbE1ldGEudXBkYXRlTWV0YShoLHYseSl9fSx7a2V5OiJyZW1vdmVDZWxsTWV0''@;'; put 'put ''YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3RoaXMuY2VsbE1ldGEucmVtb3ZlTWV0YShoLHYseSl9fSx7a2V5OiJnZXRDZWxsc01ldGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2VsbE1ldGEuZ2V0TWV0YXMoKX19LHtrZXk6ImdldENlbGxzTWV0YUF0Um93Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gdGhpcy5jZWxsTWV0YS5nZXRNZXRhc0F0Um93KGgpfX0se2tleToiY3JlYXRlUm93Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTt0aGlzLmNlbGxNZXRhLmNyZWF0''@;'; put 'put ''ZVJvdyhoLHYpfX0se2tleToicmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTt0aGlzLmNlbGxNZXRhLnJlbW92ZVJvdyhoLHYpfX0se2tleToiY3JlYXRlQ29sdW1uIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTt0aGlzLmNlbGxNZXRhLmNyZWF0ZUNvbHVtbihoLHYpLHRoaXMuY29sdW1uTWV0YS5jcmVhdGVDb2x1bW4oaCx2KX19LHtrZXk6InJlbW92ZUNvbHVtbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7dGhpcy5jZWxsTWV0YS5yZW1vdmVDb2x1bW4oaCx2KSx0aGlzLmNvbHVtbk1ldGEucmVtb3ZlQ29sdW1uKGgsdil9fSx7a2V5OiJjbGVhckNlbGxz''@;'; put 'put ''Q2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jZWxsTWV0YS5jbGVhckNhY2hlKCl9fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2VsbE1ldGEuY2xlYXJDYWNoZSgpLHRoaXMuY29sdW1uTWV0YS5jbGVhckNhY2hlKCl9fV0pLGR9KCk7ZnVuY3Rpb24gJFNl''@;'; put 'put ''KGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19STIoS1NlLHJk''@;'; put 'put ''KTt2YXIgVXFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXt2YXIgaD10aGlzOyhmdW5jdGlvbiBXcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5tZXRhTWFu''@;'; put 'put ''YWdlcj1nLHRoaXMubWV0YVN5bmNNZW1vPW5ldyBNYXAsZy5hZGRMb2NhbEhvb2soImFmdGVyR2V0Q2VsbE1ldGEiLGZ1bmN0aW9uKHYpe3JldHVybiBoLmV4dGVuZENlbGxNZXRhKHYpfSksVm8uZ2V0U2luZ2xldG9uKCkuYWRkKCJiZWZvcmVSZW5kZXIiLGZ1bmN0aW9uKHYpe3YmJmgubWV0''@;'; put 'put ''YVN5bmNNZW1vLmNsZWFyKCl9LHRoaXMubWV0YU1hbmFnZXIuaG90KX1yZXR1cm4gZnVuY3Rpb24gWXFlKGQsZyxoKXtnJiYkU2UoZC5wcm90b3R5cGUsZyksaCYmJFNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImV4''@;'; put 'put ''dGVuZENlbGxNZXRhIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdix5PWgucm93LEM9aC5jb2w7aWYobnVsbD09PSh2PXRoaXMubWV0YVN5bmNNZW1vLmdldCh5KSl8fHZvaWQgMD09PXZ8fCF2LmhhcyhDKSl7dmFyIEk9aC52aXN1YWxSb3csaj1oLnZpc3VhbENvbCxjZT10aGlzLm1ldGFNYW5h''@;'; put 'put ''Z2VyLmhvdCxfZT1jZS5jb2xUb1Byb3Aoaik7aC5wcm9wPV9lLGNlLnJ1bkhvb2tzKCJiZWZvcmVHZXRDZWxsTWV0YSIsSSxqLGgpO3ZhciBSZT1zMShoLCJ0eXBlIik/aC50eXBlOm51bGwsTmU9VTIoaC5jZWxscyk/aC5jZWxscyh5LEMsX2UpOm51bGw7aWYoUmUpaWYoTmUpe3ZhciBLZTtO''@;'; put 'put ''ZS50eXBlPW51bGwhPT0oS2U9TmUudHlwZSkmJnZvaWQgMCE9PUtlP0tlOlJlfWVsc2UgTmU9e3R5cGU6UmV9O05lJiZ0aGlzLm1ldGFNYW5hZ2VyLnVwZGF0ZUNlbGxNZXRhKHksQyxOZSksY2UucnVuSG9va3MoImFmdGVyR2V0Q2VsbE1ldGEiLEksaixoKSx0aGlzLm1ldGFTeW5jTWVtby5o''@;'; put 'put ''YXMoeSl8fHRoaXMubWV0YVN5bmNNZW1vLnNldCh5LG5ldyBTZXQpLHRoaXMubWV0YVN5bmNNZW1vLmdldCh5KS5hZGQoQyl9fX1dKSxkfSgpO2Z1bmN0aW9uIHFTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8''@;'; put 'put ''fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBYcWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBRcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5tZXRhTWFuYWdlcj1nLHRoaXMudXNhZ2VUcmFja2VyPW5ldyBTZXQsdGhpcy5wcm9wRGVzY3JpcHRvcnM9bmV3IE1hcChbWyJmaXhlZENvbHVtbnNMZWZ0Iix7dGFyZ2V0OiJm''@;'; put 'put ''aXhlZENvbHVtbnNTdGFydCIsb25DaGFuZ2U6ZnVuY3Rpb24odil7aWYodGhpcy5tZXRhTWFuYWdlci5ob3QuaXNSdGwoKSYmImZpeGVkQ29sdW1uc0xlZnQiPT09dil0aHJvdyBuZXcgRXJyb3IoIlRoZSBgZml4ZWRDb2x1bW5zTGVmdGAgaXMgbm90IHN1cHBvcnRlZCBmb3IgUlRMLiBQbGVh''@;'; put 'put ''c2UgdXNlIG9wdGlvbiBgZml4ZWRDb2x1bW5zU3RhcnRgLiIpO2lmKHRoaXMudXNhZ2VUcmFja2VyLmhhcygiZml4ZWRDb2x1bW5zTGVmdCIpJiZ0aGlzLnVzYWdlVHJhY2tlci5oYXMoImZpeGVkQ29sdW1uc1N0YXJ0IikpdGhyb3cgbmV3IEVycm9yKCJUaGUgYGZpeGVkQ29sdW1uc0xlZnRg''@;'; put 'put ''IGFuZCBgZml4ZWRDb2x1bW5zU3RhcnRgIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBvbmx5IHRoZSBvcHRpb24gYGZpeGVkQ29sdW1uc1N0YXJ0YC4iKX19XSxbImxheW91dERpcmVjdGlvbiIse29uQ2hhbmdlOmZ1bmN0aW9uKHYseSxDKXtpZighQyl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlRoZSBgIi5jb25jYXQodiwiYCBvcHRpb24gY2FuIG5vdCBiZSB1cGRhdGVkIGFmdGVyIHRoZSBIYW5kc29udGFibGUgaXMgaW5pdGlhbGl6ZWQuIikpfX1dXSksdGhpcy5leHRlbmRNZXRhUHJvcHMoKX1yZXR1cm4gZnVuY3Rpb24gSnFlKGQsZyxoKXtnJiZxU2UoZC5wcm90''@;'; put 'put ''b3R5cGUsZyksaCYmcVNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImV4dGVuZE1ldGFQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMucHJvcERlc2NyaXB0b3JzLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''dix5KXt2YXIgQz12LnRhcmdldCxJPXYub25DaGFuZ2Usaj12b2lkIDA9PT1JP2Z1bmN0aW9uKCl7fTpJLGNlPSJzdHJpbmciPT10eXBlb2YgQyxfZT1jZT9DOnksUmU9Il8iLmNvbmNhdChfZSk7aC5tZXRhTWFuYWdlci5nbG9iYWxNZXRhLm1ldGFbUmVdPWgubWV0YU1hbmFnZXIuZ2xvYmFs''@;'; put 'put ''TWV0YS5tZXRhW19lXSxoLmluc3RhbGxQcm9wV2F0Y2hlcih5LFJlLGopLGNlJiZoLmluc3RhbGxQcm9wV2F0Y2hlcihDLFJlLGopfSl9fSx7a2V5OiJpbnN0YWxsUHJvcFdhdGNoZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz''@;'; put 'put ''Lm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YSxoLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t2XX0sc2V0OmZ1bmN0aW9uKGope3ZhciBjZT0hQy51c2FnZVRyYWNrZXIuaGFzKGgpO0MudXNhZ2VUcmFja2VyLmFkZChoKSx5LmNhbGwoQyxoLGosY2UpLHRoaXNbdl09an0sZW51bWVy''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19XSksZH0oKSxlTWU9KEwoODU3MzUpLC9eKFxyXG58XG5ccnxccnxcbikvKSxLcWU9L15bXlx0XHJcbl0rLyx0TWU9L15cdC87ZnVuY3Rpb24gQnooZCl7dmFyIGcsaCx2LHksSSxDPSIiO2ZvcihnPTAsaD1kLmxlbmd0aDtnPGg7Zys9MSl7Zm9y''@;'; put 'put ''KHk9ZFtnXS5sZW5ndGgsdj0wO3Y8eTt2Kz0xKXY+MCYmKEMrPSJcdCIpLCJzdHJpbmciPT10eXBlb2YoST1kW2ddW3ZdKT9JLmluZGV4T2YoIlxuIik+LTE/Qys9JyInLmNvbmNhdChJLnJlcGxhY2UoLyIvZywnIiInKSwnIicpOkMrPUk6Qys9bnVsbD09ST8iIjpJO2chPT1oLTEmJihDKz0i''@;'; put 'put ''XG4iKX1yZXR1cm4gQ31mdW5jdGlvbiBkNmUoZCl7cmV0dXJuKGQ2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIG5NZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8''@;'; put 'put ''fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciB0ZXQ9a3ooImNvcHlhYmxlIiwhMSksbmV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgsdil7KGZ1bmN0aW9uIHFxZShkLGcpe2lm''@;'; put 'put ''KCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmluc3RhbmNlPWcsdGhpcy50YWJsZU1ldGE9dix0aGlzLmRhdGFTb3VyY2U9aCx0aGlzLmR1Y2tTY2hlbWE9dGhpcy5kYXRhU291''@;'; put 'put ''cmNlJiZ0aGlzLmRhdGFTb3VyY2VbMF0/Q08odGhpcy5kYXRhU291cmNlWzBdKTp7fSx0aGlzLmNvbFRvUHJvcENhY2hlPXZvaWQgMCx0aGlzLnByb3BUb0NvbENhY2hlPXZvaWQgMCx0aGlzLmNyZWF0ZU1hcCgpfXJldHVybiBmdW5jdGlvbiBlZXQoZCxnLGgpe2cmJm5NZShkLnByb3RvdHlw''@;'; put 'put ''ZSxnKSxoJiZuTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiY3JlYXRlTWFwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZ2V0U2NoZW1hKCk7aWYodm9pZCAwPT09aCl0aHJvdyBuZXcgRXJyb3IoInRyeWlu''@;'; put 'put ''ZyB0byBjcmVhdGUgYGNvbHVtbnNgIGRlZmluaXRpb24gYnV0IHlvdSBkaWRuJ3QgcHJvdmlkZSBgc2NoZW1hYCBub3IgYGRhdGFgIik7dmFyIHksdj10aGlzLnRhYmxlTWV0YS5jb2x1bW5zO2lmKHRoaXMuY29sVG9Qcm9wQ2FjaGU9W10sdGhpcy5wcm9wVG9Db2xDYWNoZT1uZXcgTWFwLHYp''@;'; put 'put ''e3ZhciBDPTAsST0wLGo9ITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHYpe3ZhciBjZT1LcShoKTtDPWNlPjA/Y2U6dGhpcy5jb3VudEZpcnN0Um93S2V5cygpLGo9ITB9ZWxzZSBDPU1hdGgubWluKHRoaXMudGFibGVNZXRhLm1heENvbHMsdi5sZW5ndGgpO2Zvcih5PTA7eTxDO3krKyl7dmFy''@;'; put 'put ''IFJlPWo/dih5KTp2W3ldO2lmKEFsKFJlKSl7aWYodm9pZCAwIT09UmUuZGF0YSl7dmFyIE5lPWo/STp5O3RoaXMuY29sVG9Qcm9wQ2FjaGVbTmVdPVJlLmRhdGEsdGhpcy5wcm9wVG9Db2xDYWNoZS5zZXQoUmUuZGF0YSxOZSl9SSs9MX19fWVsc2UgdGhpcy5yZWN1cnNpdmVEdWNrQ29sdW1u''@;'; put 'put ''cyhoKX19LHtrZXk6ImNvdW50Rmlyc3RSb3dLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhNGUodGhpcy5kYXRhU291cmNlKX19LHtrZXk6InJlY3Vyc2l2ZUR1Y2tDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIGNlLEM9dGhpcyxJPXYsaj15O3JldHVybiB2b2lkIDA9''@;'; put 'put ''PT1JJiYoST0wLGo9IiIpLCJvYmplY3QiPT09ZDZlKGgpJiYhQXJyYXkuaXNBcnJheShoKSYmWmwoaCxmdW5jdGlvbihfZSxSZSl7bnVsbD09PV9lPyhDLmNvbFRvUHJvcENhY2hlLnB1c2goY2U9aitSZSksQy5wcm9wVG9Db2xDYWNoZS5zZXQoY2UsSSksSSs9MSk6ST1DLnJlY3Vyc2l2ZUR1''@;'; put 'put ''Y2tDb2x1bW5zKF9lLEksIiIuY29uY2F0KFJlLCIuIikpfSksSX19LHtrZXk6ImNvbFRvUHJvcCIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoITE9PT1OdW1iZXIuaXNJbnRlZ2VyKGgpKXJldHVybiBoO3ZhciB2PXRoaXMuaW5zdGFuY2UudG9QaHlzaWNhbENvbHVtbihoKTtyZXR1cm4gbnVsbD09''@;'; put 'put ''PXY/aDp0aGlzLmNvbFRvUHJvcENhY2hlJiZFbyh0aGlzLmNvbFRvUHJvcENhY2hlW3ZdKT90aGlzLmNvbFRvUHJvcENhY2hlW3ZdOnZ9fSx7a2V5OiJwcm9wVG9Db2wiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMucHJvcFRvQ29sQ2FjaGUuZ2V0KGgpO2lmKEVvKHYpKXJldHVybiB0''@;'; put 'put ''aGlzLmluc3RhbmNlLnRvVmlzdWFsQ29sdW1uKHYpO3ZhciB5PXRoaXMuaW5zdGFuY2UudG9WaXN1YWxDb2x1bW4oaCk7cmV0dXJuIG51bGw9PT15P2g6eX19LHtrZXk6ImdldFNjaGVtYSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnRhYmxlTWV0YS5kYXRhU2NoZW1hO3JldHVybiBo''@;'; put 'put ''PyJmdW5jdGlvbiI9PXR5cGVvZiBoP2goKTpoOnRoaXMuZHVja1NjaGVtYX19LHtrZXk6ImNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcyx5PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxLEM9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsST10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpLGo9SSxjZT0wLF9lPWg7KCJudW1iZXIiIT10eXBlb2YgX2V8fF9lPj1JKSYmKF9lPUkpLF9lPHRoaXMuaW5zdGFuY2UuY291bnRSb3dzKCkmJihqPXRoaXMuaW5zdGFuY2UudG9QaHlz''@;'; put 'put ''aWNhbFJvdyhfZSkpO3ZhciBSZT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLF9lLHksQyk7aWYoITE9PT1SZXx8bnVsbD09PWopcmV0dXJuIDA7Zm9yKHZhciBOZT10aGlzLnRhYmxlTWV0YS5tYXhSb3dzLEtlPXRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCksaHQ9''@;'; put 'put ''W10sQnQ9ZnVuY3Rpb24oKXt2YXIgaG49bnVsbDsiYXJyYXkiPT09di5pbnN0YW5jZS5kYXRhVHlwZT92LnRhYmxlTWV0YS5kYXRhU2NoZW1hP2huPUFoKHYuZ2V0U2NoZW1hKCkpOihobj1bXSxyYShLZS0xLGZ1bmN0aW9uKCl7cmV0dXJuIGhuLnB1c2gobnVsbCl9KSk6ImZ1bmN0aW9uIj09''@;'; put 'put ''PXYuaW5zdGFuY2UuZGF0YVR5cGU/aG49di50YWJsZU1ldGEuZGF0YVNjaGVtYShfZStjZSk6cnooaG49e30sdi5nZXRTY2hlbWEoKSksaHQucHVzaChobiksY2UrPTF9O2NlPHkmJkkrY2U8TmU7KUJ0KCk7cmV0dXJuIHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhl''@;'; put 'put ''cyhfZSxjZSksdGhpcy5zcGxpY2VEYXRhLmFwcGx5KHRoaXMsW2osMF0uY29uY2F0KGh0KSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLF9lLGNlLEMpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLGNlfX0se2tleToiY3JlYXRlQ29sIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSx5PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCF0aGlzLmluc3RhbmNlLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiQ2Fubm90IGNyZWF0ZSBuZXcgY29sdW1uLiBXaGVuIGRhdGEgc291cmNlIGluIGFuIG9iamVjdCwgeW91IGNhbiBvbmx5IGhhdmUgYXMgbXVjaCBjb2x1bW5zIGFzIGRlZmluZWQgaW4gZmlyc3QgZGF0YSByb3csIGRhdGEgc2NoZW1hIG9yIGluIHRoZSAnY29sdW1u''@;'; put 'put ''cycgc2V0dGluZy5JZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGFkZCBuZXcgY29sdW1ucywgeW91IGhhdmUgdG8gdXNlIGFycmF5IGRhdGFzb3VyY2UuIik7dmFyIEM9dGhpcy5kYXRhU291cmNlLEk9dGhpcy50YWJsZU1ldGEubWF4Q29scyxqPWg7KCJudW1iZXIiIT10eXBlb2Yganx8aj49''@;'; put 'put ''dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZUNvbHMoKSkmJihqPXRoaXMuaW5zdGFuY2UuY291bnRTb3VyY2VDb2xzKCkpO3ZhciBjZT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVDb2wiLGosdix5KTtpZighMT09PWNlKXJldHVybiAwO3ZhciBfZT10aGlzLmluc3RhbmNl''@;'; put 'put ''LmNvdW50U291cmNlQ29scygpO2o8dGhpcy5pbnN0YW5jZS5jb3VudENvbHMoKSYmKF9lPXRoaXMuaW5zdGFuY2UudG9QaHlzaWNhbENvbHVtbihqKSk7Zm9yKHZhciBSZT10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpLE5lPXRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCksS2U9MCxo''@;'; put 'put ''dD1fZTtLZTx2JiZOZTxJOyl7aWYoIm51bWJlciIhPXR5cGVvZiBqfHxqPj1OZSlpZihSZT4wKWZvcih2YXIgQnQ9MDtCdDxSZTtCdCs9MSl2b2lkIDA9PT1DW0J0XSYmKENbQnRdPVtdKSxDW0J0XS5wdXNoKG51bGwpO2Vsc2UgQy5wdXNoKFtudWxsXSk7ZWxzZSBmb3IodmFyICR0PTA7JHQ8''@;'; put 'put ''UmU7JHQrKylDWyR0XS5zcGxpY2UoaHQsMCxudWxsKTtLZSs9MSxodCs9MSxOZSs9MX1yZXR1cm4gdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5pbnNlcnRJbmRleGVzKGosS2UpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyQ3JlYXRlQ29sIixqLEtlLHkpLHRoaXMuaW5z''@;'; put 'put ''dGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLEtlfX0se2tleToicmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSx5PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9p''@;'; put 'put ''ZCAwLEM9TnVtYmVyLmlzSW50ZWdlcihoKT9oOi12LEk9dGhpcy52aXN1YWxSb3dzVG9QaHlzaWNhbChDLHYpLGo9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKSxjZT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVSZW1vdmVSb3ciLEM9KGorQyklaixJLmxlbmd0aCxJLHkp''@;'; put 'put ''O2lmKCExPT09Y2UpcmV0dXJuITE7dmFyIF9lPUkubGVuZ3RoO2lmKHRoaXMuZmlsdGVyRGF0YShDLF9lLEkpLEM8dGhpcy5pbnN0YW5jZS5jb3VudFJvd3MoKSl7dGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5yZW1vdmVJbmRleGVzKEkpO3ZhciBSZT1Fbyh0aGlzLnRhYmxlTWV0YS5j''@;'; put 'put ''b2x1bW5zKXx8RW8odGhpcy50YWJsZU1ldGEuZGF0YVNjaGVtYSk7MD09PXRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSYmITE9PT1SZSYmdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoW10p''@;'; put 'put ''fXJldHVybiB0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlbW92ZVJvdyIsQyxfZSxJLHkpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLCEwfX0se2tleToicmVtb3ZlQ29sIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSx5PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJvYmplY3QiPT09dGhpcy5pbnN0YW5jZS5kYXRhVHlwZXx8dGhpcy50YWJsZU1ldGEuY29sdW1ucyl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCByZW1vdmUgY29s''@;'; put 'put ''dW1uIHdpdGggb2JqZWN0IGRhdGEgc291cmNlIG9yIGNvbHVtbnMgb3B0aW9uIHNwZWNpZmllZCIpO3ZhciBDPSJudW1iZXIiIT10eXBlb2YgaD8tdjpoO0M9KHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCkrQykldGhpcy5pbnN0YW5jZS5jb3VudENvbHMoKTt2YXIgST10aGlzLnZpc3VhbENv''@;'; put 'put ''bHVtbnNUb1BoeXNpY2FsKEMsdiksaj1JLnNsaWNlKDApLnNvcnQoZnVuY3Rpb24oaXIscHIpe3JldHVybiBwci1pcn0pLGNlPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlbW92ZUNvbCIsQyx2LEkseSk7aWYoITE9PT1jZSlyZXR1cm4hMTtmb3IodmFyIF9lPSEwLFJlPWoubGVu''@;'; put 'put ''Z3RoLE5lPXRoaXMuZGF0YVNvdXJjZSxLZT0wO0tlPFJlO0tlKyspX2UmJklbMF0hPT1JW0tlXS1LZSYmKF9lPSExKTtpZihfZSlmb3IodmFyIGh0PTAsQnQ9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKTtodDxCdDtodCsrKU5lW2h0XS5zcGxpY2UoSVswXSx2KTtlbHNlIGZvcih2''@;'; put 'put ''YXIgJHQ9MCxobj10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpOyR0PGhuOyR0KyspZm9yKHZhciBEbj0wO0RuPFJlO0RuKyspTmVbJHRdLnNwbGljZShqW0RuXSwxKTtyZXR1cm4gQzx0aGlzLmluc3RhbmNlLmNvdW50Q29scygpJiYodGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlci5yZW1vdmVJbmRleGVzKEkpLDA9PT10aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCkmJnRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKFtdKSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygi''@;'; put 'put ''YWZ0ZXJSZW1vdmVDb2wiLEMsdixJLHkpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLCEwfX0se2tleToic3BsaWNlQ29sIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7Zm9yKHZhciBDPXRoaXMuaW5zdGFuY2UuZ2V0RGF0YUF0Q29sKGgpLEk9Qy5zbGljZSh2LHYreSksaj1DLnNs''@;'; put 'put ''aWNlKHYreSksY2U9YXJndW1lbnRzLmxlbmd0aCxfZT1uZXcgQXJyYXkoY2U+Mz9jZS0zOjApLFJlPTM7UmU8Y2U7UmUrKylfZVtSZS0zXT1hcmd1bWVudHNbUmVdO28zZShfZSxqKTtmb3IodmFyIE5lPTA7TmU8eTspX2UucHVzaChudWxsKSxOZSs9MTtyZXR1cm4gWmJlKF9lKSx0aGlzLmlu''@;'; put 'put ''c3RhbmNlLnBvcHVsYXRlRnJvbUFycmF5KHYsaCxfZSxudWxsLG51bGwsInNwbGljZUNvbCIpLEl9fSx7a2V5OiJzcGxpY2VSb3ciLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtmb3IodmFyIEM9dGhpcy5pbnN0YW5jZS5nZXRTb3VyY2VEYXRhQXRSb3coaCksST1DLnNsaWNlKHYsdit5KSxqPUMu''@;'; put 'put ''c2xpY2Uodit5KSxjZT1hcmd1bWVudHMubGVuZ3RoLF9lPW5ldyBBcnJheShjZT4zP2NlLTM6MCksUmU9MztSZTxjZTtSZSsrKV9lW1JlLTNdPWFyZ3VtZW50c1tSZV07bzNlKF9lLGopO2Zvcih2YXIgTmU9MDtOZTx5OylfZS5wdXNoKG51bGwpLE5lKz0xO3JldHVybiB0aGlzLmluc3RhbmNl''@;'; put 'put ''LnBvcHVsYXRlRnJvbUFycmF5KGgsdixbX2VdLG51bGwsbnVsbCwic3BsaWNlUm93IiksSX19LHtrZXk6InNwbGljZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdil7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeT4yP3ktMjowKSxJPTI7STx5O0krKylDW0ktMl09YXJn''@;'; put 'put ''dW1lbnRzW0ldO3ZhciBjZSxqPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZURhdGFTcGxpY2UiLGgsdixDKTshMSE9PWomJihjZT10aGlzLmRhdGFTb3VyY2UpLnNwbGljZS5hcHBseShjZSxbaCx2XS5jb25jYXQoQykpfX0se2tleToiZmlsdGVyRGF0YSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2LHkpe3ZhciBDPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImZpbHRlckRhdGEiLGgsdix5KTshMT09PUFycmF5LmlzQXJyYXkoQykmJihDPXRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoZnVuY3Rpb24oSSxqKXtyZXR1cm4tMT09PXkuaW5kZXhPZihqKX0pKSx0aGlzLmRhdGFTb3VyY2UubGVu''@;'; put 'put ''Z3RoPTAsQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5kYXRhU291cmNlLEMpfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMuaW5zdGFuY2UudG9QaHlzaWNhbFJvdyhoKSxDPXRoaXMuZGF0YVNvdXJjZVt5XSxJPXRoaXMuaW5zdGFuY2UucnVuSG9v''@;'; put 'put ''a3MoIm1vZGlmeVJvd0RhdGEiLHkpLGo9bnVsbDtpZigoQz1pc05hTihJKT9JOkMpJiZDLmhhc093blByb3BlcnR5JiZzMShDLHYpKWo9Q1t2XTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdiYmdi5pbmRleE9mKCIuIik+LTEpe3ZhciBjZT12LnNwbGl0KCIuIiksX2U9QztpZighX2UpcmV0''@;'; put 'put ''dXJuIG51bGw7Zm9yKHZhciBSZT0wLE5lPWNlLmxlbmd0aDtSZTxOZTtSZSsrKWlmKHZvaWQgMD09PShfZT1fZVtjZVtSZV1dKSlyZXR1cm4gbnVsbDtqPV9lfWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgdiYmKGo9dih0aGlzLmRhdGFTb3VyY2Uuc2xpY2UoeSx5KzEpWzBdKSk7aWYodGhpcy5p''@;'; put 'put ''bnN0YW5jZS5oYXNIb29rKCJtb2RpZnlEYXRhIikpe3ZhciBLZT1GUyhqKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlEYXRhIix5LHRoaXMucHJvcFRvQ29sKHYpLEtlLCJnZXQiKSxLZS5pc1RvdWNoZWQoKSYmKGo9S2UudmFsdWUpfXJldHVybiBqfX0se2tleToiZ2V0Q29weWFi''@;'; put 'put ''bGUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRldC5jYWxsKHRoaXMuaW5zdGFuY2UsaCx0aGlzLnByb3BUb0NvbCh2KSk/dGhpcy5nZXQoaCx2KToiIn19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMuaW5zdGFuY2UudG9QaHlzaWNhbFJvdyhoKSxJ''@;'; put 'put ''PXksaj10aGlzLmRhdGFTb3VyY2VbQ10sY2U9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5Um93RGF0YSIsQyk7aWYoaj1pc05hTihjZSk/Y2U6aix0aGlzLmluc3RhbmNlLmhhc0hvb2soIm1vZGlmeURhdGEiKSl7dmFyIF9lPUZTKEkpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoIm1v''@;'; put 'put ''ZGlmeURhdGEiLEMsdGhpcy5wcm9wVG9Db2wodiksX2UsInNldCIpLF9lLmlzVG91Y2hlZCgpJiYoST1fZS52YWx1ZSl9aWYoaiYmai5oYXNPd25Qcm9wZXJ0eSYmczEoaix2KSlqW3ZdPUk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHYmJnYuaW5kZXhPZigiLiIpPi0xKXt2YXIgaHQsUmU9''@;'; put 'put ''di5zcGxpdCgiLiIpLE5lPWosS2U9MDtmb3IoS2U9MCxodD1SZS5sZW5ndGgtMTtLZTxodDtLZSsrKXZvaWQgMD09PU5lW1JlW0tlXV0mJihOZVtSZVtLZV1dPXt9KSxOZT1OZVtSZVtLZV1dO05lW1JlW0tlXV09SX1lbHNlImZ1bmN0aW9uIj09dHlwZW9mIHY/dih0aGlzLmRhdGFTb3VyY2Uu''@;'; put 'put ''c2xpY2UoQyxDKzEpWzBdLEkpOmpbdl09SX19LHtrZXk6InZpc3VhbFJvd3NUb1BoeXNpY2FsIix2YWx1ZTpmdW5jdGlvbihoLHYpe2Zvcih2YXIgY2UseT10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpLEM9W10sST0oeStoKSV5LGo9djtJPHkmJmo7KWNlPXRoaXMuaW5zdGFuY2Uu''@;'; put 'put ''dG9QaHlzaWNhbFJvdyhJKSxDLnB1c2goY2UpLGotPTEsSSs9MTtyZXR1cm4gQ319LHtrZXk6InZpc3VhbENvbHVtbnNUb1BoeXNpY2FsIix2YWx1ZTpmdW5jdGlvbihoLHYpe2Zvcih2YXIgeT10aGlzLmluc3RhbmNlLmNvdW50Q29scygpLEM9W10sST0oeStoKSV5LGo9djtJPHkmJmo7KXt2''@;'; put 'put ''YXIgY2U9dGhpcy5pbnN0YW5jZS50b1BoeXNpY2FsQ29sdW1uKEkpO0MucHVzaChjZSksai09MSxJKz0xfXJldHVybiBDfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPTA7aDx0aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpO2grKylmb3IodmFyIHY9MDt2''@;'; put 'put ''PHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCk7disrKXRoaXMuc2V0KGgsdGhpcy5jb2xUb1Byb3AodiksIiIpfX0se2tleToiZ2V0TGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB2LGg9dGhpcy50YWJsZU1ldGEubWF4Um93czt2PWg8MHx8MD09PWg/MDpofHwxLzA7dmFyIHk9dGhpcy5p''@;'; put 'put ''bnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3JldHVybiBNYXRoLm1pbih5LHYpfX0se2tleToiZ2V0QWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXtyb3c6MCxjb2w6MH0sdj17cm93Ok1hdGgubWF4KHRoaXMuaW5zdGFuY2UuY291bnRSb3dz''@;'; put 'put ''KCktMSwwKSxjb2w6TWF0aC5tYXgodGhpcy5pbnN0YW5jZS5jb3VudENvbHMoKS0xLDApfTtyZXR1cm4gaC5yb3ctdi5yb3chPTB8fHRoaXMuaW5zdGFuY2UuY291bnRTb3VyY2VSb3dzKCk/dGhpcy5nZXRSYW5nZShoLHYsZC5ERVNUSU5BVElPTl9SRU5ERVJFUik6W119fSx7a2V5OiJjb3Vu''@;'; put 'put ''dENhY2hlZENvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sVG9Qcm9wQ2FjaGUubGVuZ3RofX0se2tleToiZ2V0UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgSSxqLGNlLEM9W10sX2U9dGhpcy50YWJsZU1ldGEubWF4Um93cyxSZT10aGlzLnRhYmxlTWV0''@;'; put 'put ''YS5tYXhDb2xzO2lmKDA9PT1fZXx8MD09PVJlKXJldHVybltdO3ZhciBOZT15PT09ZC5ERVNUSU5BVElPTl9DTElQQk9BUkRfR0VORVJBVE9SP3RoaXMuZ2V0Q29weWFibGU6dGhpcy5nZXQsS2U9TWF0aC5taW4oTWF0aC5tYXgoX2UtMSwwKSxNYXRoLm1heChoLnJvdyx2LnJvdykpLGh0PU1h''@;'; put 'put ''dGgubWluKE1hdGgubWF4KFJlLTEsMCksTWF0aC5tYXgoaC5jb2wsdi5jb2wpKTtmb3IoST1NYXRoLm1pbihoLnJvdyx2LnJvdyk7STw9S2U7SSsrKXtjZT1bXTt2YXIgQnQ9ST49MD90aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3coSSk6STtmb3Ioaj1NYXRoLm1pbihoLmNvbCx2LmNvbCk7''@;'; put 'put ''ajw9aHQmJm51bGwhPT1CdDtqKyspY2UucHVzaChOZS5jYWxsKHRoaXMsSSx0aGlzLmNvbFRvUHJvcChqKSkpO251bGwhPT1CdCYmQy5wdXNoKGNlKX1yZXR1cm4gQ319LHtrZXk6ImdldFRleHQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIEJ6KHRoaXMuZ2V0UmFuZ2UoaCx2LGQuREVT''@;'; put 'put ''VElOQVRJT05fUkVOREVSRVIpKX19LHtrZXk6ImdldENvcHlhYmxlVGV4dCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gQnoodGhpcy5nZXRSYW5nZShoLHYsZC5ERVNUSU5BVElPTl9DTElQQk9BUkRfR0VORVJBVE9SKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuaW5zdGFuY2U9bnVsbCx0aGlzLnRhYmxlTWV0YT1udWxsLHRoaXMuZGF0YVNvdXJjZT1udWxsLHRoaXMuZHVja1NjaGVtYT1udWxsLHRoaXMuY29sVG9Qcm9wQ2FjaGUubGVuZ3RoPTAsdGhpcy5wcm9wVG9Db2xDYWNoZS5jbGVhcigpLHRoaXMucHJvcFRvQ29sQ2FjaGU9dm9pZCAwfX1d''@;'; put 'put ''LFt7a2V5OiJERVNUSU5BVElPTl9SRU5ERVJFUiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSx7a2V5OiJERVNUSU5BVElPTl9DTElQQk9BUkRfR0VORVJBVE9SIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMn19XSksZH0oKTtjb25zdCByZXQ9bmV0O2Z1bmN0aW9uIGd0ZShkKXtyZXR1cm4o''@;'; put 'put ''Z3RlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wm''@;'; put 'put ''JmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gck1lKGQsZyxoLHYpe3ZhciB5PXYuaG90SW5zdGFuY2UsQz12LmRhdGFNYXAsST12LmRhdGFTb3VyY2Usaj12LmludGVybmFsU291cmNlLGNlPXYuc291cmNlLF9lPXYuZmlyc3RSdW4sUmU9dGQo''@;'; put 'put ''aiksTmU9eS5nZXRTZXR0aW5ncygpO3kuZGF0YVR5cGU9QXJyYXkuaXNBcnJheShOZS5kYXRhU2NoZW1hKT8iYXJyYXkiOlUyKE5lLmRhdGFTY2hlbWEpPyJmdW5jdGlvbiI6Im9iamVjdCIsQyYmQy5kZXN0cm95KCksZD15LnJ1bkhvb2tzKCJiZWZvcmUiLmNvbmNhdChSZSksZCxfZSxjZSk7''@;'; put 'put ''dmFyIEtlPW5ldyByZXQoeSxkLE5lKTtpZihnKEtlKSwib2JqZWN0Ij09PWd0ZShkKSYmbnVsbCE9PWQpZC5wdXNoJiZkLnNwbGljZXx8KGQ9W2RdKTtlbHNle2lmKG51bGwhPT1kKXRocm93IG5ldyBFcnJvcigiIi5jb25jYXQoaiwiIG9ubHkgYWNjZXB0cyBhcnJheSBvZiBvYmplY3RzIG9y''@;'; put 'put ''IGFycmF5IG9mIGFycmF5cyAoIikuY29uY2F0KGd0ZShkKSwiIGdpdmVuKSIpKTt2YXIgaHQ9S2UuZ2V0U2NoZW1hKCk7ZD1bXTt2YXIgQnQsaG4sJHQ9MDtmb3IoJHQ9MCxobj1OZS5zdGFydFJvd3M7JHQ8aG47JHQrKylpZigib2JqZWN0IiE9PXkuZGF0YVR5cGUmJiJmdW5jdGlvbiIhPT15''@;'; put 'put ''LmRhdGFUeXBlfHwhTmUuZGF0YVNjaGVtYSlpZigiYXJyYXkiPT09eS5kYXRhVHlwZSlCdD1BaChodFswXSksZC5wdXNoKEJ0KTtlbHNle0J0PVtdO2Zvcih2YXIgRG49MCxpcj1OZS5zdGFydENvbHM7RG48aXI7RG4rKylCdC5wdXNoKG51bGwpO2QucHVzaChCdCl9ZWxzZSBCdD1BaChodCks''@;'; put 'put ''ZC5wdXNoKEJ0KX1BcnJheS5pc0FycmF5KGRbMF0pJiYoeS5kYXRhVHlwZT0iYXJyYXkiKSxOZS5kYXRhPWQsS2UuZGF0YVNvdXJjZT1kLEkuZGF0YT1kLEkuZGF0YVR5cGU9eS5kYXRhVHlwZSxJLmNvbFRvUHJvcD1LZS5jb2xUb1Byb3AuYmluZChLZSksSS5wcm9wVG9Db2w9S2UucHJvcFRv''@;'; put 'put ''Q29sLmJpbmQoS2UpLEkuY291bnRDYWNoZWRDb2x1bW5zPUtlLmNvdW50Q2FjaGVkQ29sdW1ucy5iaW5kKEtlKSxoKEtlKSx5LnJ1bkhvb2tzKCJhZnRlciIuY29uY2F0KFJlKSxkLF9lLGNlKSxfZXx8KHkucnVuSG9va3MoImFmdGVyQ2hhbmdlIixudWxsLGopLHkucmVuZGVyKCkpfXZhciBh''@;'; put 'put ''TWUsaU1lPW5ldyBNYXAoW1siICIsInNwYWNlIl0sWyJzcGFjZWJhciIsInNwYWNlIl0sWyJzY3JvbGwiLCJzY3JvbGxsb2NrIl0sWyJkZWwiLCJkZWxldGUiXSxbImVzYyIsImVzY2FwZSJdLFsibWVkaWFuZXh0dHJhY2siLCJtZWRpYXRyYWNrbmV4dCJdLFsibWVkaWFwcmV2aW91c3RyYWNr''@;'; put 'put ''IiwibWVkaWF0cmFja3ByZXZpb3VzIl0sWyJ2b2x1bWV1cCIsImF1ZGlvdm9sdW1ldXAiXSxbInZvbHVtZWRvd24iLCJhdWRpb3ZvbHVtZWRvd24iXSxbInZvbHVtZW11dGUiLCJhdWRpb3ZvbHVtZW11dGUiXSxbIm11bHRpcGx5IiwiKiJdLFsiYWRkIiwiKyJdLFsiZGl2aWRlIiwiLyJdLFsi''@;'; put 'put ''c3VidHJhY3QiLCItIl0sWyJsZWZ0IiwiYXJyb3dsZWZ0Il0sWyJyaWdodCIsImFycm93cmlnaHQiXSxbInVwIiwiYXJyb3d1cCJdLFsiZG93biIsImFycm93ZG93biJdXSksbXRlPWZ1bmN0aW9uKGcpe3JldHVybiBnLm1hcChmdW5jdGlvbihoKXt2YXIgdj1oLnRvTG93ZXJDYXNlKCk7cmV0''@;'; put 'put ''dXJuIGlNZS5oYXModik/aU1lLmdldCh2KTp2fSkuc29ydCgpLmpvaW4oIisiKX0sb01lPWZ1bmN0aW9uKGcpe3JldHVybiBnLnRvTG93ZXJDYXNlKCl9O2Z1bmN0aW9uIGxNZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gcDZlKGQsZyk7dmFyIGg9T2JqZWN0LnBy''@;'; put 'put ''b3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSlu''@;'; put 'put ''dCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBwNmUoZCxnKX19ZnVuY3Rpb24gcDZlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9''@;'; put 'put ''ZnVuY3Rpb24gcGV0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX12YXIgdmV0PVsibWV0YSIsImFsdCIsInNoaWZ0IiwiY29udHJvbCJdLHZ0ZT1mdW5j''@;'; put 'put ''dGlvbiBtZXQoKXt2YXIgZD1uZXcgU2V0O3JldHVybntwcmVzczpmdW5jdGlvbihoKXtkLmFkZChoKX0scmVsZWFzZTpmdW5jdGlvbihoKXtkLmRlbGV0ZShoKX0scmVsZWFzZUFsbDpmdW5jdGlvbigpe2QuY2xlYXIoKX0saXNQcmVzc2VkOmZ1bmN0aW9uKGgpe3JldHVybiBkLmhhcyhoKX19''@;'; put 'put ''fSgpLHlldD1mdW5jdGlvbihnKXt2YXIgaD1nLm93bmVyV2luZG93LHY9Zy5oYW5kbGVFdmVudCx5PWcuYmVmb3JlS2V5RG93bixDPWcuYWZ0ZXJLZXlEb3duLEk9ZmVlKHtlcnJvcklkRXhpc3RzOmZ1bmN0aW9uKCR0KXtyZXR1cm4nVGhlICInLmNvbmNhdCgkdCwnIiBjb250ZXh0IG5hbWUg''@;'; put 'put ''aXMgYWxyZWFkeSByZWdpc3RlcmVkLicpfX0pLGo9ImdyaWQiLF9lPWZ1bmN0aW9uKCl7cmV0dXJuIGp9LFJlPWZ1bmN0aW9uKCR0KXtyZXR1cm4gSS5nZXRJdGVtKCR0KX0sS2U9ITEsaHQ9ZnVuY3Rpb24gQWV0KGQsZyxoLHYseSl7dmFyIEM9ZnVuY3Rpb24oaHQpe3JldHVybiB2ZXQuaW5j''@;'; put 'put ''bHVkZXMoaHQpfSxJPWZ1bmN0aW9uKGh0KXt2YXIgQnQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSwkdD1bXTtyZXR1cm4gaHQuYWx0S2V5JiYkdC5wdXNoKCJhbHQiKSxCdCYmKGh0LmN0cmxLZXl8fGh0Lm1ldGFLZXkpPyR0LnB1c2go''@;'; put 'put ''ImNvbnRyb2wvbWV0YSIpOihodC5jdHJsS2V5JiYkdC5wdXNoKCJjb250cm9sIiksaHQubWV0YUtleSYmJHQucHVzaCgibWV0YSIpKSxodC5zaGlmdEtleSYmJHQucHVzaCgic2hpZnQiKSwkdH0saj1mdW5jdGlvbihodCl7aWYoITEhPT1nKGh0KSYmITEhPT1oKGh0KSYmIU5TKGh0KSl7dmFy''@;'; put 'put ''ICR0PW9NZShodC5rZXkpLGhuPVtdO0MoJHQpP3Z0ZS5wcmVzcygkdCk6aG49SShodCk7dmFyIERuPVskdF0uY29uY2F0KGhuKTsheShodCxEbikmJihxcSgpJiZobi5pbmNsdWRlcygibWV0YSIpfHwhcXEoKSYmaG4uaW5jbHVkZXMoImNvbnRyb2wiKSkmJnkoaHQsWyR0XS5jb25jYXQoSSho''@;'; put 'put ''dCwhMCkpKSx2KGh0KX19LGNlPWZ1bmN0aW9uKGh0KXtpZighMSE9PWcoaHQpKXt2YXIgQnQ9b01lKGh0LmtleSk7ITEhPT1DKEJ0KSYmdnRlLnJlbGVhc2UoQnQpfX0sX2U9ZnVuY3Rpb24oKXt2dGUucmVsZWFzZUFsbCgpfTtyZXR1cm57bW91bnQ6ZnVuY3Rpb24oKXtmb3IodmFyIGh0PWQ7''@;'; put 'put ''aHQ7KWh0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopLGh0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixjZSksaHQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsX2UpLGh0PWh0LmZyYW1lRWxlbWVudH0sdW5tb3VudDpmdW5jdGlvbigpe2Zvcih2YXIgaHQ9ZDtodDspaHQucmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsaiksaHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGNlKSxodC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixfZSksaHQ9aHQuZnJhbWVFbGVtZW50fSxpc1ByZXNzZWQ6ZnVuY3Rpb24oaHQpe3JldHVybiB2dGUuaXNQcmVzc2VkKGh0KX19''@;'; put 'put ''fShoLHYseSxDLGZ1bmN0aW9uKEJ0LCR0KXt2YXIgaG49UmUoX2UoKSksRG49ITE7aWYoIWhuLmhhc1Nob3J0Y3V0KCR0KSlyZXR1cm4gRG47Zm9yKHZhciBpcj1obi5nZXRTaG9ydGN1dHMoJHQpLHByPTA7cHI8aXIubGVuZ3RoO3ByKyspe3ZhciBFcj1pcltwcl0sQXI9RXIuY2FsbGJhY2ss''@;'; put 'put ''X2k9RXIucHJldmVudERlZmF1bHQsS2k9RXIuc3RvcFByb3BhZ2F0aW9uLGtvPUVyLmNhcHR1cmVDdHJsO2lmKCExIT09KDAsRXIucnVuT25seUlmKShCdCkmJihLZT1rbyxEbj0hMT09PUFyKEJ0LCR0KSxLZT0hMSxfaSYmQnQucHJldmVudERlZmF1bHQoKSxLaSYmQnQuc3RvcFByb3BhZ2F0''@;'; put 'put ''aW9uKCksRG4pKWJyZWFrfXJldHVybiBEbn0pO3JldHVybiBodC5tb3VudCgpLHthZGRDb250ZXh0OmZ1bmN0aW9uKCR0KXt2YXIgaG49ZnVuY3Rpb24oZyl7dmFyIGg9ZmVlKHtlcnJvcklkRXhpc3RzOmZ1bmN0aW9uKFJlKXtyZXR1cm4nVGhlICInLmNvbmNhdChSZSwnIiBzaG9ydGN1dCBp''@;'; put 'put ''cyBhbHJlYWR5IHJlZ2lzdGVyZWQgaW4gdGhlICInKS5jb25jYXQoZywnIiBjb250ZXh0LicpfX0pLHY9ZnVuY3Rpb24oKXt2YXIgUmU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LE5lPVJlLmtleXMsS2U9UmUuY2FsbGJhY2ssaHQ9''@;'; put 'put ''UmUuZ3JvdXAsQnQ9UmUucnVuT25seUlmLCR0PXZvaWQgMD09PUJ0P2Z1bmN0aW9uKCl7cmV0dXJuITB9OkJ0LGhuPVJlLmNhcHR1cmVDdHJsLERuPXZvaWQgMCE9PWhuJiZobixpcj1SZS5wcmV2ZW50RGVmYXVsdCxwcj12b2lkIDA9PT1pcnx8aXIsRXI9UmUuc3RvcFByb3BhZ2F0aW9uLEFy''@;'; put 'put ''PXZvaWQgMCE9PUVyJiZFcixZcj1SZS5yZWxhdGl2ZVRvR3JvdXAsX2k9UmUucG9zaXRpb247aWYodTEoaHQpKXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gZGVmaW5lIHRoZSBzaG9ydGN1dCdzIGdyb3VwLiIpO2lmKCExPT09VTIoS2UpKXRocm93IG5ldyBFcnJvcigiVGhlIHNob3J0''@;'; put 'put ''Y3V0J3MgY2FsbGJhY2sgbmVlZHMgdG8gYmUgYSBmdW5jdGlvbi4iKTtpZighMT09PUFycmF5LmlzQXJyYXkoTmUpKXRocm93IG5ldyBFcnJvcihEMihhTWV8fChhTWU9cGV0KFsiUGFzcyB0aGUgc2hvcnRjdXQncyBrZXlzIGFzIGFuIGFycmF5IG9mIGFycmF5cywgXG4gICAgICB1c2luZyB0''@;'; put 'put ''aGUgS2V5Ym9hcmRFdmVudC5rZXkgcHJvcGVydGllczogXG4gICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcy4iXSxbIlBhc3MgdGhlIHNob3J0Y3V0XFwncyBrZXlzIGFzIGFuIGFycmF5IG9m''@;'; put 'put ''IGFycmF5cyxcXHgyMFxuICAgICAgdXNpbmcgdGhlIEtleWJvYXJkRXZlbnQua2V5IHByb3BlcnRpZXM6XFx4MjBcbiAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzLiJdKSkpKTt2YXIgS2k9''@;'; put 'put ''e2NhbGxiYWNrOktlLGdyb3VwOmh0LHJ1bk9ubHlJZjokdCxjYXB0dXJlQ3RybDpEbixwcmV2ZW50RGVmYXVsdDpwcixzdG9wUHJvcGFnYXRpb246QXJ9O2lmKEVvKFlyKSl7dmFyIGtvPVtZcixfaV07S2kucmVsYXRpdmVUb0dyb3VwPWtvWzBdLEtpLnBvc2l0aW9uPWtvWzFdfU5lLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oT28pe3ZhciBiYT1tdGUoT28pO2lmKGguaGFzSXRlbShiYSkpe3ZhciBvYT1oLmdldEl0ZW0oYmEpLHFhPW9hLmZpbmRJbmRleChmdW5jdGlvbihPcyl7cmV0dXJuIE9zLmdyb3VwPT09WXJ9KTstMSE9PXFhPyJiZWZvcmUiPT09X2k/cWEtPTE6cWErPTE6cWE9b2EubGVu''@;'; put 'put ''Z3RoLG9hLnNwbGljZShxYSwwLEtpKX1lbHNlIGguYWRkSXRlbShiYSxbS2ldKX0pfSxDPWZ1bmN0aW9uKFJlKXt2YXIgTmU9bXRlKFJlKTtoLnJlbW92ZUl0ZW0oTmUpfTtyZXR1cm57YWRkU2hvcnRjdXQ6dixhZGRTaG9ydGN1dHM6ZnVuY3Rpb24oUmUpe3ZhciBOZT1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307UmUuZm9yRWFjaChmdW5jdGlvbihLZSl7WmwoTmUsZnVuY3Rpb24oaHQsQnQpeyExPT09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEtlLEJ0KSYmKEtlW0J0XT1OZVtCdF0pfSksdihLZSl9''@;'; put 'put ''KX0sZ2V0U2hvcnRjdXRzOmZ1bmN0aW9uKFJlKXt2YXIgTmU9bXRlKFJlKSxLZT1oLmdldEl0ZW0oTmUpO3JldHVybiBFbyhLZSk/S2Uuc2xpY2UoKTpbXX0saGFzU2hvcnRjdXQ6ZnVuY3Rpb24oUmUpe3ZhciBOZT1tdGUoUmUpO3JldHVybiBoLmhhc0l0ZW0oTmUpfSxyZW1vdmVTaG9ydGN1''@;'; put 'put ''dHNCeUtleXM6QyxyZW1vdmVTaG9ydGN1dHNCeUdyb3VwOmZ1bmN0aW9uKFJlKXtoLmdldEl0ZW1zKCkuZm9yRWFjaChmdW5jdGlvbihLZSl7dmFyIGh0PWZ1bmN0aW9uIGNldChkLGcpe3JldHVybiBmdW5jdGlvbiBkZXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1''@;'; put 'put ''bmN0aW9uIGhldChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5l''@;'; put 'put ''eHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGxNZShkLGcp''@;'; put 'put ''fHxmdW5jdGlvbiBmZXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''KCkgbWV0aG9kLiIpfSgpfShLZSwyKSxCdD1odFswXSwkdD1odFsxXSxobj0kdC5maWx0ZXIoZnVuY3Rpb24oRG4pe3JldHVybiBEbi5ncm91cCE9PVJlfSk7MD09PWhuLmxlbmd0aD9DKGZ1bmN0aW9uKGcpe3JldHVybiBnLnNwbGl0KCIrIil9KEJ0KSk6KCR0Lmxlbmd0aD0wLCR0LnB1c2gu''@;'; put 'put ''YXBwbHkoJHQsZnVuY3Rpb24gb2V0KGQpe3JldHVybiBmdW5jdGlvbiB1ZXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gcDZlKGQpfShkKXx8ZnVuY3Rpb24gc2V0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwh''@;'; put 'put ''PWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGxNZShkKXx8ZnVuY3Rpb24gYWV0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9u''@;'; put 'put ''LWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGhuKSkpfSl9fX0oJHQpO3JldHVybiBJLmFkZEl0ZW0oJHQsaG4pLGhufSxnZXRBY3RpdmVDb250ZXh0TmFtZTpfZSxnZXRDb250ZXh0OlJlLHNldEFjdGl2ZUNvbnRleHROYW1lOmZ1''@;'; put 'put ''bmN0aW9uKCR0KXtqPSR0fSxpc0N0cmxQcmVzc2VkOmZ1bmN0aW9uKCl7cmV0dXJuIUtlJiYoaHQuaXNQcmVzc2VkKCJjb250cm9sIil8fGh0LmlzUHJlc3NlZCgibWV0YSIpKX0sZGVzdHJveTpmdW5jdGlvbigpe3JldHVybiBodC51bm1vdW50KCl9fX07ZnVuY3Rpb24gaWQoZCl7cmV0dXJu''@;'; put 'put ''KGlkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wm''@;'; put 'put ''JmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gRGcoZCxnKXtyZXR1cm4gZnVuY3Rpb24gX2V0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBiZXQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5l''@;'; put 'put ''ZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9''@;'; put 'put ''PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxzTWUoZCxnKXx8ZnVuY3Rpb24gd2V0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxp''@;'; put 'put ''ZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB6dyhkKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gTWV0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGc2ZShkKX0oZCl8fGZ1bmN0aW9uIGtldChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9''@;'; put 'put ''KGQpfHxzTWUoZCl8fGZ1bmN0aW9uIENldCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHNNZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gZzZlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBnNmUoZCxnKX19ZnVuY3Rpb24g''@;'; put 'put ''ZzZlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9dmFyIEVldD0iZ3JpZERlZmF1bHQiLG02ZT1udWxsO2Z1bmN0aW9uIHY2ZShkLGcpe3ZhciBoLGNlLF9lLFJlLE5l''@;'; put 'put ''LHY9dGhpcyx5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sQz0hMSxJPXRoaXMsaj1uZXcgUDEoSSksS2U9ITA7YkplKHkpJiZ3SmUodGhpcyksdGhpcy5yb290RWxlbWVudD1kLHRoaXMucm9vdERvY3VtZW50PWQub3duZXJEb2N1bWVu''@;'; put 'put ''dCx0aGlzLnJvb3RXaW5kb3c9dGhpcy5yb290RG9jdW1lbnQuZGVmYXVsdFZpZXcsdGhpcy5pc0Rlc3Ryb3llZD0hMSx0aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXI9MCx0aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXI9MDt2YXIgaHQ9bnVsbCE9PShoPW51bGw9PWc/dm9pZCAwOmcu''@;'; put 'put ''bGF5b3V0RGlyZWN0aW9uKSYmdm9pZCAwIT09aD9oOiJpbmhlcml0IixCdD1bInJ0bCIsImx0ciJdLmluY2x1ZGVzKGh0KT9odDp0aGlzLnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJvb3RFbGVtZW50KS5kaXJlY3Rpb247dGhpcy5yb290RWxlbWVudC5zZXRBdHRyaWJ1dGUo''@;'; put 'put ''ImRpciIsQnQpLHRoaXMuaXNSdGw9ZnVuY3Rpb24oKXtyZXR1cm4icnRsIj09PUJ0fSx0aGlzLmlzTHRyPWZ1bmN0aW9uKCl7cmV0dXJuIUkuaXNSdGwoKX0sdGhpcy5nZXREaXJlY3Rpb25GYWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gSS5pc0x0cigpPzE6LTF9LGcubGFuZ3VhZ2U9UEtlKGcu''@;'; put 'put ''bGFuZ3VhZ2UpO3ZhciAkdD1uZXcgS1NlKEksZyxbVXFlLFhxZV0pLGhuPSR0LmdldFRhYmxlTWV0YSgpLERuPSR0LmdldEdsb2JhbE1ldGEoKSxpcj1mZWUoKTt0aGlzLmNvbnRhaW5lcj10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnJlbmRlckNhbGw9ITEs''@;'; put 'put ''ZC5pbnNlcnRCZWZvcmUodGhpcy5jb250YWluZXIsZC5maXJzdENoaWxkKSx0NGUodGhpcykmJmRfZShnLmxpY2Vuc2VLZXksZCksdGhpcy5ndWlkPSJodF8iLmNvbmNhdChnM2UoKSksdGhpcy5jb2x1bW5JbmRleE1hcHBlcj1uZXcgUjRlLHRoaXMucm93SW5kZXhNYXBwZXI9bmV3IFI0ZSxf''@;'; put 'put ''ZT1uZXcgWkplKEkpLCghdGhpcy5yb290RWxlbWVudC5pZHx8Imh0XyI9PT10aGlzLnJvb3RFbGVtZW50LmlkLnN1YnN0cmluZygwLDMpKSYmKHRoaXMucm9vdEVsZW1lbnQuaWQ9dGhpcy5ndWlkKTt2YXIgcHI9ZnVuY3Rpb24oem4pe3ZhciBfcj16bi5yb3csUXI9em4uY29sO3JldHVybiBJ''@;'; put 'put ''Ll9jcmVhdGVDZWxsQ29vcmRzKF9yPj0wP0kucm93SW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChfcik6X3IsUXI+PTA/SS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFFyKTpRcil9LEVyPWZ1bmN0aW9uKHpuKXt2YXIgX3I9''@;'; put 'put ''em4ucm93LFFyPXpuLmNvbDtyZXR1cm4gSS5fY3JlYXRlQ2VsbENvb3Jkcyhfcj49MD9JLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoX3IpOl9yLFFyPj0wP0kuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChRcik6UXIp''@;'; put 'put ''fSxBcj1uZXcgX3FlKGhuLHtyb3dJbmRleE1hcHBlcjpmdW5jdGlvbigpe3JldHVybiBJLnJvd0luZGV4TWFwcGVyfSxjb2x1bW5JbmRleE1hcHBlcjpmdW5jdGlvbigpe3JldHVybiBJLmNvbHVtbkluZGV4TWFwcGVyfSxjb3VudENvbHM6ZnVuY3Rpb24oKXtyZXR1cm4gSS5jb3VudENvbHMo''@;'; put 'put ''KX0sY291bnRSb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIEkuY291bnRSb3dzKCl9LHByb3BUb0NvbDpmdW5jdGlvbih6bil7cmV0dXJuIGNlLnByb3BUb0NvbCh6bil9LGlzRWRpdG9yT3BlbmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFJLmdldEFjdGl2ZUVkaXRvcigpJiZJLmdldEFjdGl2ZUVkaXRv''@;'; put 'put ''cigpLmlzT3BlbmVkKCl9LGNvdW50Q29sc1RyYW5zbGF0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi52aWV3LmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKX0sY291bnRSb3dzVHJhbnNsYXRlZDpmdW5jdGlvbigpe3JldHVybiB2LnZpZXcuY291bnRSZW5kZXJhYmxlUm93cygpfSxnZXRTaG9ydGN1''@;'; put 'put ''dE1hbmFnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSS5nZXRTaG9ydGN1dE1hbmFnZXIoKX0sY3JlYXRlQ2VsbENvb3JkczpmdW5jdGlvbih6bixfcil7cmV0dXJuIEkuX2NyZWF0ZUNlbGxDb29yZHMoem4sX3IpfSxjcmVhdGVDZWxsUmFuZ2U6ZnVuY3Rpb24oem4sX3IsUXIpe3JldHVybiBJLl9j''@;'; put 'put ''cmVhdGVDZWxsUmFuZ2Uoem4sX3IsUXIpfSx2aXN1YWxUb1JlbmRlcmFibGVDb29yZHM6cHIscmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzOkVyLGlzRGlzYWJsZWRDZWxsU2VsZWN0aW9uOmZ1bmN0aW9uKHpuLF9yKXtyZXR1cm4gSS5nZXRDZWxsTWV0YSh6bixfcikuZGlzYWJsZVZpc3VhbFNl''@;'; put 'put ''bGVjdGlvbn19KTt0aGlzLnNlbGVjdGlvbj1Bcjt2YXIgWXI9ZnVuY3Rpb24oem4pe3puLmhpZGRlbkluZGV4ZXNDaGFuZ2VkJiZ2LnNlbGVjdGlvbi5yZWZyZXNoKCl9O2Z1bmN0aW9uIF9pKEhuKXt2YXIgem49dFNlKEhuKTskcGUoem4pPyhJLnJ1bkhvb2tzKCJiZWZvcmVMYW5ndWFnZUNo''@;'; put 'put ''YW5nZSIsem4pLERuLmxhbmd1YWdlPXpuLEkucnVuSG9va3MoImFmdGVyTGFuZ3VhZ2VDaGFuZ2UiLHpuKSk6blNlKEhuKX1mdW5jdGlvbiBLaShIbix6bil7dmFyIF9yPSJjbGFzc05hbWUiPT09SG4/SS5yb290RWxlbWVudDpJLnRhYmxlO2lmKEtlKVAwKF9yLHpuKTtlbHNle3ZhciBRcj1b''@;'; put 'put ''XSx1aT1bXTtEbltIbl0mJihRcj1BcnJheS5pc0FycmF5KERuW0huXSk/RG5bSG5dOnMzZShEbltIbl0pKSx6biYmKHVpPUFycmF5LmlzQXJyYXkoem4pP3puOnMzZSh6bikpO3ZhciB1MD1sM2UoUXIsdWkpLFhpPWwzZSh1aSxRcik7dTAubGVuZ3RoJiZ1bChfcix1MCksWGkubGVuZ3RoJiZQ''@;'; put 'put ''MChfcixYaSl9RG5bSG5dPXpufWZ1bmN0aW9uIGtvKCl7dmFyIEhuPSExO3JldHVybnt2YWxpZGF0b3JzSW5RdWV1ZTowLHZhbGlkOiEwLGFkZFZhbGlkYXRvclRvUXVldWU6ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRvcnNJblF1ZXVlKz0xLEhuPSExfSxyZW1vdmVWYWxpZGF0b3JGb3JtUXVl''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRvcnNJblF1ZXVlPXRoaXMudmFsaWRhdG9yc0luUXVldWUtMTwwPzA6dGhpcy52YWxpZGF0b3JzSW5RdWV1ZS0xLHRoaXMuY2hlY2tJZlF1ZXVlSXNFbXB0eSgpfSxvblF1ZXVlRW1wdHk6ZnVuY3Rpb24oKXt9LGNoZWNrSWZRdWV1ZUlzRW1wdHk6''@;'; put 'put ''ZnVuY3Rpb24oKXswPT09dGhpcy52YWxpZGF0b3JzSW5RdWV1ZSYmITE9PT1IbiYmKEhuPSEwLHRoaXMub25RdWV1ZUVtcHR5KHRoaXMudmFsaWQpKX19fWZ1bmN0aW9uIE9vKEhuKXt2YXIgem49SG4ucmVwbGFjZSgiLCIsIi4iKTtyZXR1cm4hMT09PWlzTmFOKHBhcnNlRmxvYXQoem4pKT9w''@;'; put 'put ''YXJzZUZsb2F0KHpuKTpIbn1mdW5jdGlvbiBiYShIbix6bixfcil7aWYoSG4ubGVuZ3RoKXt2YXIgUXI9SS5nZXRBY3RpdmVFZGl0b3IoKSx1aT1JLnJ1bkhvb2tzKCJiZWZvcmVDaGFuZ2UiLEhuLHpufHwiZWRpdCIpLHUwPSEwO2lmKCExPT09dWkpcmV0dXJuIHZvaWQoUXImJlFyLmNhbmNl''@;'; put 'put ''bENoYW5nZXMoKSk7dmFyIFhpPW5ldyBrbztYaS5vblF1ZXVlRW1wdHk9ZnVuY3Rpb24oWHMpe1FyJiZ1MCYmUXIuY2FuY2VsQ2hhbmdlcygpLF9yKFhzKX07Zm9yKHZhciBFMD1Ibi5sZW5ndGgtMTtFMD49MDtFMC0tKWlmKG51bGw9PT1IbltFMF0pSG4uc3BsaWNlKEUwLDEpO2Vsc2V7dmFy''@;'; put 'put ''IHowPURnKEhuW0UwXSw0KSxDbz16MFswXSx6YT16MFszXSxKcz1jZS5wcm9wVG9Db2woejBbMV0pLEJhPUkuZ2V0Q2VsbE1ldGEoQ28sSnMpOyJudW1lcmljIj09PUJhLnR5cGUmJiJzdHJpbmciPT10eXBlb2YgemEmJkdfZSh6YSkmJihIbltFMF1bM109T28oemEpKSxJLmdldENlbGxWYWxp''@;'; put 'put ''ZGF0b3IoQmEpJiYoWGkuYWRkVmFsaWRhdG9yVG9RdWV1ZSgpLEkudmFsaWRhdGVDZWxsKEhuW0UwXVszXSxCYSxmdW5jdGlvbihYcyxGMSl7cmV0dXJuIGZ1bmN0aW9uKEgxKXtpZigiYm9vbGVhbiIhPXR5cGVvZiBIMSl0aHJvdyBuZXcgRXJyb3IoIlZhbGlkYXRpb24gZXJyb3I6IHJlc3Vs''@;'; put 'put ''dCBpcyBub3QgYm9vbGVhbiIpO2lmKCExPT09SDEmJiExPT09RjEuYWxsb3dJbnZhbGlkKXt1MD0hMSxIbi5zcGxpY2UoWHMsMSksRjEudmFsaWQ9ITA7dmFyIFd1PUkuZ2V0Q2VsbChGMS52aXN1YWxSb3csRjEudmlzdWFsQ29sKTtudWxsIT09V3UmJnVsKFd1LGhuLmludmFsaWRDZWxsQ2xh''@;'; put 'put ''c3NOYW1lKX1YaS5yZW1vdmVWYWxpZGF0b3JGb3JtUXVldWUoKX19KEUwLEJhKSx6bikpfVhpLmNoZWNrSWZRdWV1ZUlzRW1wdHkoKX19ZnVuY3Rpb24gWWEoSG4sem4pe3ZhciBfcj1Ibi5sZW5ndGgtMTtpZighKF9yPDApKXtmb3IoO19yPj0wO19yLS0pe3ZhciBRcj0hMTtpZihudWxsIT09''@;'; put 'put ''SG5bX3JdKXtpZihudWxsIT1Ibltfcl1bMl18fG51bGwhPUhuW19yXVszXSl7aWYoaG4uYWxsb3dJbnNlcnRSb3cpZm9yKDtIbltfcl1bMF0+SS5jb3VudFJvd3MoKS0xOyl7dmFyIHVpPWNlLmNyZWF0ZVJvdyh2b2lkIDAsdm9pZCAwLHpuKTtpZighKHVpPj0xKSl7UXI9ITA7YnJlYWt9JHQu''@;'; put 'put ''Y3JlYXRlUm93KG51bGwsdWkpfWlmKCJhcnJheSI9PT1JLmRhdGFUeXBlJiYoIWhuLmNvbHVtbnN8fDA9PT1obi5jb2x1bW5zLmxlbmd0aCkmJmhuLmFsbG93SW5zZXJ0Q29sdW1uKWZvcig7Y2UucHJvcFRvQ29sKEhuW19yXVsxXSk+SS5jb3VudENvbHMoKS0xOyl7dmFyIHUwPWNlLmNyZWF0''@;'; put 'put ''ZUNvbCh2b2lkIDAsdm9pZCAwLHpuKTtpZighKHUwPj0xKSl7UXI9ITA7YnJlYWt9JHQuY3JlYXRlQ29sdW1uKG51bGwsdTApfVFyfHxjZS5zZXQoSG5bX3JdWzBdLEhuW19yXVsxXSxIbltfcl1bM10pfX1lbHNlIEhuLnNwbGljZShfciwxKX1JLmZvcmNlRnVsbFJlbmRlcj0hMCxSZS5hZGp1''@;'; put 'put ''c3RSb3dzQW5kQ29scygpLEkucnVuSG9va3MoImJlZm9yZUNoYW5nZVJlbmRlciIsSG4sem4pLE5lLmxvY2tFZGl0b3IoKSxJLl9yZWZyZXNoQm9yZGVycyhudWxsKSxOZS51bmxvY2tFZGl0b3IoKSxJLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksSS5ydW5Ib29rcygiYWZ0ZXJDaGFuZ2Ui''@;'; put 'put ''LEhuLHpufHwiZWRpdCIpO3ZhciBYaT1JLmdldEFjdGl2ZUVkaXRvcigpO1hpJiZFbyhYaS5yZWZyZXNoVmFsdWUpJiZYaS5yZWZyZXNoVmFsdWUoKX19ZnVuY3Rpb24gb2EoSG4sem4sX3Ipe3JldHVybiBBcnJheS5pc0FycmF5KEhuKT9IbjpbW0huLHpuLF9yXV19dGhpcy5jb2x1bW5JbmRl''@;'; put 'put ''eE1hcHBlci5hZGRMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIsWXIpLHRoaXMucm93SW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLFlyKSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnQiLGZ1bmN0aW9uKEhuKXt2LnJ1bkhvb2tz''@;'; put 'put ''KCJiZWZvcmVTZXRSYW5nZVN0YXJ0IixIbil9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IixmdW5jdGlvbihIbil7di5ydW5Ib29rcygiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLEhuKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9v''@;'; put 'put ''aygiYmVmb3JlU2V0UmFuZ2VFbmQiLGZ1bmN0aW9uKEhuKXt2LnJ1bkhvb2tzKCJiZWZvcmVTZXRSYW5nZUVuZCIsSG4pLEhuLnJvdzwwJiYoSG4ucm93PXYudmlldy5fd3Qud3RUYWJsZS5nZXRGaXJzdFZpc2libGVSb3coKSksSG4uY29sPDAmJihIbi5jb2w9di52aWV3Ll93dC53dFRhYmxl''@;'; put 'put ''LmdldEZpcnN0VmlzaWJsZUNvbHVtbigpKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJTZXRSYW5nZUVuZCIsZnVuY3Rpb24oSG4pe3ZhciB6bj1GUyghMSksX3I9di5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSYW5nZSgpLFFyPV9yLmN1cnJlbnQoKSx1aT1Rci5mcm9tLHUw''@;'; put 'put ''PVFyLnRvLFhpPV9yLnNpemUoKS0xO3YucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uIix1aS5yb3csdWkuY29sLHUwLnJvdyx1MC5jb2wsem4sWGkpLHYucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uQnlQcm9wIix1aS5yb3csSS5jb2xUb1Byb3AodWkuY29sKSx1MC5yb3csSS5jb2xUb1Byb3Ao''@;'; put 'put ''dTAuY29sKSx6bixYaSk7dmFyIEUwPXYuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUFueUhlYWRlcigpLHowPXYuc2VsZWN0aW9uLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLENvPSEwO0MmJihDbz0hMSksem4uaXNUb3VjaGVkKCkmJihDbz0hem4udmFsdWUpO3ZhciBibz12LnNlbGVjdGlvbi5p''@;'; put 'put ''c1NlbGVjdGVkQnlSb3dIZWFkZXIoKSx6YT12LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKTshMSE9PUNvJiYoRTA/Ym8/di52aWV3LnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShJLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoSG4ucm93''@;'; put 'put ''KSk6emEmJnYudmlldy5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShJLmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoSG4uY29sKSk6ejAmJiF2LnNlbGVjdGlvbi5pc011bHRpcGxlKCk/di52aWV3LnNjcm9sbFZpZXdwb3J0KHByKHowLmZyb20pKTp2''@;'; put 'put ''LnZpZXcuc2Nyb2xsVmlld3BvcnQocHIoSG4pKSksYm8mJnphP1AwKHYucm9vdEVsZW1lbnQsWyJodF9fc2VsZWN0aW9uLS1yb3dzIiwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyJdKTpibz8odWwodi5yb290RWxlbWVudCwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyIpLFAwKHYucm9vdEVsZW1l''@;'; put 'put ''bnQsImh0X19zZWxlY3Rpb24tLXJvd3MiKSk6emE/KHVsKHYucm9vdEVsZW1lbnQsImh0X19zZWxlY3Rpb24tLXJvd3MiKSxQMCh2LnJvb3RFbGVtZW50LCJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIikpOnVsKHYucm9vdEVsZW1lbnQsWyJodF9fc2VsZWN0aW9uLS1yb3dzIiwiaHRfX3NlbGVj''@;'; put 'put ''dGlvbi0tY29sdW1ucyJdKSx2Ll9yZWZyZXNoQm9yZGVycyhudWxsKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3Rpb25GaW5pc2hlZCIsZnVuY3Rpb24oSG4pe3ZhciB6bj1Ibi5sZW5ndGgtMSxfcj1Iblt6bl0sUXI9X3IuZnJvbSx1aT1fci50bzt2LnJ1bkhv''@;'; put 'put ''b2tzKCJhZnRlclNlbGVjdGlvbkVuZCIsUXIucm93LFFyLmNvbCx1aS5yb3csdWkuY29sLHpuKSx2LnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbkVuZEJ5UHJvcCIsUXIucm93LEkuY29sVG9Qcm9wKFFyLmNvbCksdWkucm93LEkuY29sVG9Qcm9wKHVpLmNvbCksem4pfSksdGhpcy5zZWxlY3Rp''@;'; put 'put ''b24uYWRkTG9jYWxIb29rKCJhZnRlcklzTXVsdGlwbGVTZWxlY3Rpb24iLGZ1bmN0aW9uKEhuKXt2YXIgem49di5ydW5Ib29rcygiYWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIixIbi52YWx1ZSk7SG4udmFsdWUmJihIbi52YWx1ZT16bil9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImJlZm9yZU1vZGlmeVRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbihIbil7di5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLEhuKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oSG4sem4sX3Ipe3YucnVuSG9v''@;'; put 'put ''a3MoImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLEhuLHpuLF9yKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtRW5kIixmdW5jdGlvbihIbil7di5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtRW5kIixIbil9KSx0aGlzLnNlbGVjdGlvbi5h''@;'; put 'put ''ZGRMb2NhbEhvb2soImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIixmdW5jdGlvbihIbix6bixfcil7di5ydW5Ib29rcygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQiLEhuLHpuLF9yKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJEZXNlbGVjdCIsZnVuY3Rpb24oKXtOZS5k''@;'; put 'put ''ZXN0cm95RWRpdG9yKCksdi5fcmVmcmVzaEJvcmRlcnMoKSx1bCh2LnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiXSksdi5ydW5Ib29rcygiYWZ0ZXJEZXNlbGVjdCIpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJpbnNl''@;'; put 'put ''cnRSb3dSZXF1aXJlIixmdW5jdGlvbihIbil7di5hbHRlcigiaW5zZXJ0X3JvdyIsSG4sMSwiYXV0byIpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJpbnNlcnRDb2xSZXF1aXJlIixmdW5jdGlvbihIbil7di5hbHRlcigiaW5zZXJ0X2NvbCIsSG4sMSwiYXV0byIpfSksUmU9e2Fs''@;'; put 'put ''dGVyOmZ1bmN0aW9uKHpuLF9yKXt2YXIgWGksUXI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEsdWk9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAsdTA9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2''@;'; put 'put ''b2lkIDAsRTA9ZnVuY3Rpb24oWmcpe2lmKDA9PT1aZy5sZW5ndGgpcmV0dXJuW107dmFyIGFkPXp3KFpnKTtyZXR1cm4gYWQuc29ydChmdW5jdGlvbihwMyxZdSl7dmFyIFV1PURnKHAzLDEpWzBdLElwPURnKFl1LDEpWzBdO3JldHVybiBVdT09PUlwPzA6VXU+SXA/MTotMX0pLEV1KGFkLGZ1''@;'; put 'put ''bmN0aW9uKHAzLFl1KXt2YXIgVHU9RGcoWXUsMiksVXU9VHVbMF0sbGQ9VHVbMV0sSXA9cDNbcDMubGVuZ3RoLTFdLERwPURnKElwLDIpLFRSPURwWzBdK0RwWzFdO2lmKFV1PD1UUil7dmFyIFFuZT1NYXRoLm1heChsZC0oVFItVXUpLDApO0lwWzFdKz1RbmV9ZWxzZSBwMy5wdXNoKFtVdSxs''@;'; put 'put ''ZF0pO3JldHVybiBwM30sW2FkWzBdXSl9O3N3aXRjaCh6bil7Y2FzZSJpbnNlcnRfcm93Ijp2YXIgejA9SS5jb3VudFNvdXJjZVJvd3MoKTtpZihobi5tYXhSb3dzPT09ejApcmV0dXJuO2lmKF9yPUVvKF9yKT9fcjp6MCxYaT1jZS5jcmVhdGVSb3coX3IsUXIsdWkpKXskdC5jcmVhdGVSb3co''@;'; put 'put ''SS50b1BoeXNpY2FsUm93KF9yKSxRcik7dmFyIENvPUFyLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLGJvPW51bGw9PUNvP3ZvaWQgMDpDby5mcm9tLHphPW51bGw9PWJvP3ZvaWQgMDpiby5yb3c7aWYoRW8oemEpJiZ6YT49X3Ipe3ZhciBKcz1Dby50byxCYT1Kcy5yb3csWHM9SnMuY29sLEYx''@;'; put 'put ''PWJvLmNvbDtBci5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSYmKEYxPS0xKSxBci5nZXRTZWxlY3RlZFJhbmdlKCkucG9wKCksQXIuc2V0UmFuZ2VTdGFydE9ubHkoSS5fY3JlYXRlQ2VsbENvb3Jkcyh6YStYaSxGMSksITApLEFyLnNldFJhbmdlRW5kKEkuX2NyZWF0ZUNlbGxDb29yZHMoQmEr''@;'; put 'put ''WGksWHMpKX1lbHNlIEkuX3JlZnJlc2hCb3JkZXJzKCl9YnJlYWs7Y2FzZSJpbnNlcnRfY29sIjppZihYaT1jZS5jcmVhdGVDb2woX3IsUXIsdWkpKXtpZigkdC5jcmVhdGVDb2x1bW4oSS50b1BoeXNpY2FsQ29sdW1uKF9yKSxRciksQXJyYXkuaXNBcnJheShobi5jb2xIZWFkZXJzKSl7dmFy''@;'; put 'put ''IEgxPVtfciwwXTtIMS5sZW5ndGgrPVhpLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoaG4uY29sSGVhZGVycyxIMSl9dmFyIFd1PUFyLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLEZjPW51bGw9PVd1P3ZvaWQgMDpXdS5mcm9tLHJ1PW51bGw9PUZjP3ZvaWQgMDpGYy5jb2w7aWYoRW8o''@;'; put 'put ''cnUpJiZydT49X3Ipe3ZhciBIYz1XdS50byxvZD1IYy5yb3cseFI9SGMuY29sLGFiPUZjLnJvdztBci5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSYmKGFiPS0xKSxBci5nZXRTZWxlY3RlZFJhbmdlKCkucG9wKCksQXIuc2V0UmFuZ2VTdGFydE9ubHkoSS5fY3JlYXRlQ2VsbENvb3Jkcyhh''@;'; put 'put ''YixydStYaSksITApLEFyLnNldFJhbmdlRW5kKEkuX2NyZWF0ZUNlbGxDb29yZHMob2QseFIrWGkpKX1lbHNlIEkuX3JlZnJlc2hCb3JkZXJzKCl9YnJlYWs7Y2FzZSJyZW1vdmVfcm93Ijp2YXIgZEc9ZnVuY3Rpb24oWmcpe3ZhciBhZD0wO0dyKFpnLGZ1bmN0aW9uKEZNKXt2YXIgcDM9RGco''@;'; put 'put ''Rk0sMiksWXU9cDNbMF0sVHU9cDNbMV0sVXU9ZGMoWXUpP0kuY291bnRSb3dzKCktMTpNYXRoLm1heChZdS1hZCwwKTtpZihOdW1iZXIuaXNJbnRlZ2VyKFl1KSYmKFl1PU1hdGgubWF4KFl1LWFkLDApKSxjZS5yZW1vdmVSb3coWXUsVHUsdWkpKXskdC5yZW1vdmVSb3coSS50b1BoeXNpY2Fs''@;'; put 'put ''Um93KFV1KSxUdSk7dmFyIElwPUkuY291bnRSb3dzKCksRHA9aG4uZml4ZWRSb3dzVG9wO0RwPj1VdSsxJiYoaG4uZml4ZWRSb3dzVG9wLT1NYXRoLm1pbihUdSxEcC1VdSkpO3ZhciBmOT1obi5maXhlZFJvd3NCb3R0b207ZjkmJlV1Pj1JcC1mOSYmKGhuLmZpeGVkUm93c0JvdHRvbS09TWF0''@;'; put 'put ''aC5taW4oVHUsZjkpKSxhZCs9VHV9fSl9O0FycmF5LmlzQXJyYXkoX3IpP2RHKEUwKF9yKSk6ZEcoW1tfcixRcl1dKSxSZS5hZGp1c3RSb3dzQW5kQ29scygpLEkuX3JlZnJlc2hCb3JkZXJzKCk7YnJlYWs7Y2FzZSJyZW1vdmVfY29sIjp2YXIgcEc9ZnVuY3Rpb24oWmcpe3ZhciBhZD0wO0dy''@;'; put 'put ''KFpnLGZ1bmN0aW9uKEZNKXt2YXIgcDM9RGcoRk0sMiksWXU9cDNbMF0sVHU9cDNbMV0sVXU9ZGMoWXUpP0kuY291bnRDb2xzKCktMTpNYXRoLm1heChZdS1hZCwwKSxsZD1JLnRvUGh5c2ljYWxDb2x1bW4oVXUpO2lmKE51bWJlci5pc0ludGVnZXIoWXUpJiYoWXU9TWF0aC5tYXgoWXUtYWQs''@;'; put 'put ''MCkpLGNlLnJlbW92ZUNvbChZdSxUdSx1aSkpeyR0LnJlbW92ZUNvbHVtbihsZCxUdSk7dmFyIERwPWhuLmZpeGVkQ29sdW1uc1N0YXJ0O0RwPj1VdSsxJiYoaG4uZml4ZWRDb2x1bW5zU3RhcnQtPU1hdGgubWluKFR1LERwLVV1KSksQXJyYXkuaXNBcnJheShobi5jb2xIZWFkZXJzKSYmKHZv''@;'; put 'put ''aWQgMD09PWxkJiYobGQ9LTEpLGhuLmNvbEhlYWRlcnMuc3BsaWNlKGxkLFR1KSksYWQrPVR1fX0pfTtBcnJheS5pc0FycmF5KF9yKT9wRyhFMChfcikpOnBHKFtbX3IsUXJdXSksUmUuYWRqdXN0Um93c0FuZENvbHMoKSxJLl9yZWZyZXNoQm9yZGVycygpO2JyZWFrO2RlZmF1bHQ6dGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCdUaGVyZSBpcyBubyBzdWNoIGFjdGlvbiAiJy5jb25jYXQoem4sJyInKSl9dTB8fFJlLmFkanVzdFJvd3NBbmRDb2xzKCl9LGFkanVzdFJvd3NBbmRDb2xzOmZ1bmN0aW9uKCl7dmFyIENvLHpuPWhuLm1pblJvd3MsX3I9aG4ubWluU3BhcmVSb3dzLFFyPWhuLm1pbkNvbHMs''@;'; put 'put ''dWk9aG4ubWluU3BhcmVDb2xzO2lmKHpuKXt2YXIgdTA9SS5jb3VudFJvd3MoKTt1MDx6biYmY2UuY3JlYXRlUm93KHUwLHpuLXUwLCJhdXRvIil9aWYoX3Ipe3ZhciBYaT1JLmNvdW50RW1wdHlSb3dzKCEwKTtpZihYaTxfcil7dmFyIHowPU1hdGgubWluKF9yLVhpLGhuLm1heFJvd3MtSS5j''@;'; put 'put ''b3VudFNvdXJjZVJvd3MoKSk7Y2UuY3JlYXRlUm93KEkuY291bnRSb3dzKCksejAsImF1dG8iKX19KFFyfHx1aSkmJihDbz1JLmNvdW50RW1wdHlDb2xzKCEwKSk7dmFyIGJvPUkuY291bnRDb2xzKCk7aWYoUXImJiFobi5jb2x1bW5zJiZibzxRcil7dmFyIHphPVFyLWJvO0NvKz16YSxjZS5j''@;'; put 'put ''cmVhdGVDb2woYm8semEsImF1dG8iKX1pZih1aSYmIWhuLmNvbHVtbnMmJiJhcnJheSI9PT1JLmRhdGFUeXBlJiZDbzx1aSl7Ym89SS5jb3VudENvbHMoKTt2YXIgQmE9TWF0aC5taW4odWktQ28saG4ubWF4Q29scy1ibyk7Y2UuY3JlYXRlQ29sKGJvLEJhLCJhdXRvIil9dmFyIFhzPUkuY291''@;'; put 'put ''bnRSb3dzKCksRjE9SS5jb3VudENvbHMoKTsoMD09PVhzfHwwPT09RjEpJiZBci5kZXNlbGVjdCgpLEFyLmlzU2VsZWN0ZWQoKSYmR3IoQXIuc2VsZWN0ZWRSYW5nZSxmdW5jdGlvbihIMSl7dmFyIFd1PSExLEZjPUgxLmZyb20ucm93LHJ1PUgxLmZyb20uY29sLEhjPUgxLnRvLnJvdyxvZD1I''@;'; put 'put ''MS50by5jb2w7RmM+WHMtMT8oV3U9ITAsSGM+KEZjPVhzLTEpJiYoSGM9RmMpKTpIYz5Ycy0xJiYoV3U9ITAsRmM+KEhjPVhzLTEpJiYoRmM9SGMpKSxydT5GMS0xPyhXdT0hMCxvZD4ocnU9RjEtMSkmJihvZD1ydSkpOm9kPkYxLTEmJihXdT0hMCxydT4ob2Q9RjEtMSkmJihydT1vZCkpLFd1''@;'; put 'put ''JiZJLnNlbGVjdENlbGwoRmMscnUsSGMsb2QpfSksSS52aWV3JiZJLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCl9LHBvcHVsYXRlRnJvbUFycmF5OmZ1bmN0aW9uKHpuLF9yLFFyLHVpLHUwLFhpLEUwKXt2YXIgejAsQ28sYm8semEsSnM9W10sQmE9e30sWHM9W10sRjE9em4ucm93LEgxPXpu''@;'; put 'put ''LmNvbDtpZigwPT09KENvPV9yLmxlbmd0aCkpcmV0dXJuITE7dmFyIFd1PTAsRmM9MDtzd2l0Y2goQWwoUXIpJiYoV3U9UXIuY29sLUgxKzEsRmM9UXIucm93LUYxKzEpLHUwKXtjYXNlInNoaWZ0X2Rvd24iOnZhciBydT1ueihfciksSGM9cnUubGVuZ3RoLG9kPU1hdGgubWF4KEhjLFd1KSx4''@;'; put 'put ''Uj1JLmdldERhdGEoKS5zbGljZShGMSksYWI9bnooeFIpLnNsaWNlKEgxLEgxK29kKTtmb3IoYm89MDtibzxvZDtibys9MSlpZihibzxIYyl7Zm9yKHowPTAsQ289cnVbYm9dLmxlbmd0aDt6MDxGYy1Dbzt6MCs9MSlydVtib10ucHVzaChydVtib11bejAlQ29dKTtYcy5wdXNoKHJ1W2JvXS5j''@;'; put 'put ''b25jYXQoYm88YWIubGVuZ3RoP2FiW2JvXTpuZXcgQXJyYXkoeFIubGVuZ3RoKS5maWxsKG51bGwpKSl9ZWxzZSBYcy5wdXNoKHJ1W2JvJUhjXS5jb25jYXQoYWJbYm9dKSk7SS5wb3B1bGF0ZUZyb21BcnJheShGMSxIMSxueihYcykpO2JyZWFrO2Nhc2Uic2hpZnRfcmlnaHQiOnZhciBkRz1f''@;'; put 'put ''ci5sZW5ndGgscEc9TWF0aC5tYXgoZEcsRmMpLGxiPUkuZ2V0RGF0YSgpLnNsaWNlKEYxKS5tYXAoZnVuY3Rpb24oZ09lKXtyZXR1cm4gZ09lLnNsaWNlKEgxKX0pO2Zvcih6MD0wO3owPHBHO3owKz0xKWlmKHowPGRHKXtmb3IoYm89MCx6YT1fclt6MF0ubGVuZ3RoO2JvPFd1LXphO2JvKz0x''@;'; put 'put ''KV9yW3owXS5wdXNoKF9yW3owXVtibyV6YV0pO3ZhciBhZDtpZih6MDxsYi5sZW5ndGgpZm9yKHZhciBaZz0wO1pnPGxiW3owXS5sZW5ndGg7WmcrPTEpX3JbejBdLnB1c2gobGJbejBdW1pnXSk7ZWxzZShhZD1fclt6MF0pLnB1c2guYXBwbHkoYWQsencobmV3IEFycmF5KGxiWzBdLmxlbmd0''@;'; put 'put ''aCkuZmlsbChudWxsKSkpfWVsc2UgX3IucHVzaChfclt6MCVDb10uc2xpY2UoMCxwRykuY29uY2F0KGxiW3owXSkpO0kucG9wdWxhdGVGcm9tQXJyYXkoRjEsSDEsX3IpO2JyZWFrO2RlZmF1bHQ6QmEucm93PXpuLnJvdyxCYS5jb2w9em4uY29sO3ZhciBVdSxGTT17cm93OlFyJiZ6bj9Rci5y''@;'; put 'put ''b3ctem4ucm93KzE6MSxjb2w6UXImJnpuP1FyLmNvbC16bi5jb2wrMToxfSxwMz0wLFl1PTAsVHU9ITAsbGQ9ZnVuY3Rpb24oWnl0KXt2YXIgbU9lPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLFdtZT1fcltaeXQlX3IubGVuZ3Ro''@;'; put 'put ''XTtyZXR1cm4gbnVsbCE9PW1PZT9XbWVbbU9lJVdtZS5sZW5ndGhdOldtZX0sSXA9X3IubGVuZ3RoLERwPVFyP1FyLnJvdy16bi5yb3crMTowO2ZvcihDbz1Rcj9EcDpNYXRoLm1heChJcCxEcCksejA9MDt6MDxDbyYmIShRciYmQmEucm93PlFyLnJvdyYmRHA+SXB8fCFobi5hbGxvd0luc2Vy''@;'; put 'put ''dFJvdyYmQmEucm93PkkuY291bnRSb3dzKCktMXx8QmEucm93Pj1obi5tYXhSb3dzKTt6MCsrKXt2YXIgZjk9ejAtcDMsVW5lPWxkKGY5KS5sZW5ndGgsVFI9UXI/UXIuY29sLXpuLmNvbCsxOjA7aWYoemE9UXI/VFI6TWF0aC5tYXgoVW5lLFRSKSxCYS5jb2w9em4uY29sLFV1PUkuZ2V0Q2Vs''@;'; put 'put ''bE1ldGEoQmEucm93LEJhLmNvbCksIkNvcHlQYXN0ZS5wYXN0ZSIhPT11aSYmIkF1dG9maWxsLmZpbGwiIT09dWl8fCFVdS5za2lwUm93T25QYXN0ZSl7Zm9yKFl1PTAsYm89MDtibzx6YSYmIShRciYmQmEuY29sPlFyLmNvbCYmVFI+VW5lfHwhaG4uYWxsb3dJbnNlcnRDb2x1bW4mJkJhLmNv''@;'; put 'put ''bD5JLmNvdW50Q29scygpLTF8fEJhLmNvbD49aG4ubWF4Q29scyk7Ym8rKylpZihVdT1JLmdldENlbGxNZXRhKEJhLnJvdyxCYS5jb2wpLCJDb3B5UGFzdGUucGFzdGUiIT09dWkmJiJBdXRvZmlsbC5maWxsIiE9PXVpfHwhVXUuc2tpcENvbHVtbk9uUGFzdGUpaWYoVXUucmVhZE9ubHkmJiJV''@;'; put 'put ''bmRvUmVkby51bmRvIiE9PXVpKUJhLmNvbCs9MTtlbHNle3ZhciBRbmU9Ym8tWXUsTHA9bGQoZjksUW5lKSx6Zz1JLmdldERhdGFBdENlbGwoQmEucm93LEJhLmNvbCk7aWYoIkF1dG9maWxsLmZpbGwiPT09dWkpe3ZhciBHbWU9SS5ydW5Ib29rcygiYmVmb3JlQXV0b2ZpbGxJbnNpZGVQb3B1''@;'; put 'put ''bGF0ZSIse3JvdzpmOSxjb2w6UW5lfSxYaSxfcixFMCx7fSxGTSk7R21lJiYoTHA9dTEoR21lLnZhbHVlKT9McDpHbWUudmFsdWUpfW51bGwhPT1McCYmIm9iamVjdCI9PT1pZChMcCk/KEFycmF5LmlzQXJyYXkoTHApJiZudWxsPT09emcmJih6Zz1bXSksbnVsbD09PXpnfHwib2JqZWN0IiE9''@;'; put 'put ''PWlkKHpnKT9UdT0hMTp1M2UoQ08oQXJyYXkuaXNBcnJheSh6Zyk/emc6emdbMF18fHpnKSxDTyhBcnJheS5pc0FycmF5KExwKT9McDpMcFswXXx8THApKT9McD1BaChMcCk6VHU9ITEpOm51bGwhPT16ZyYmIm9iamVjdCI9PT1pZCh6ZykmJihUdT0hMSksVHUmJkpzLnB1c2goW0JhLnJvdyxC''@;'; put 'put ''YS5jb2wsTHBdKSxUdT0hMCxCYS5jb2wrPTF9ZWxzZSBZdSs9MSxCYS5jb2wrPTEsemErPTE7QmEucm93Kz0xfWVsc2UgcDMrPTEsQmEucm93Kz0xLENvKz0xfUkuc2V0RGF0YUF0Q2VsbChKcyxudWxsLG51bGwsdWl8fCJwb3B1bGF0ZUZyb21BcnJheSIpfX19LHRoaXMuaW5pdD1mdW5jdGlv''@;'; put 'put ''bigpe19lLnNldERhdGEoaG4uZGF0YSksSS5ydW5Ib29rcygiYmVmb3JlSW5pdCIpLChtOCgpfHxmM2UoKSkmJlAwKEkucm9vdEVsZW1lbnQsIm1vYmlsZSIpLHRoaXMudXBkYXRlU2V0dGluZ3MoaG4sITApLHRoaXMudmlldz1uZXcgREplKHRoaXMpLE5lPWp6ZS5nZXRJbnN0YW5jZShJLGhu''@;'; put 'put ''LEFyKSxJLnJ1bkhvb2tzKCJpbml0IiksdGhpcy5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy52aWV3LnJlbmRlcigpLCJvYmplY3QiPT09aWQoS2UpJiYoSS5ydW5Ib29rcygiYWZ0ZXJDaGFuZ2UiLEtlWzBdLEtlWzFdKSxLZT0hMSksSS5ydW5Ib29rcygiYWZ0ZXJJbml0Iil9LHRoaXMuX2Ny''@;'; put 'put ''ZWF0ZUNlbGxDb29yZHM9ZnVuY3Rpb24oSG4sem4pe3JldHVybiBJLnZpZXcuX3d0LmNyZWF0ZUNlbGxDb29yZHMoSG4sem4pfSx0aGlzLl9jcmVhdGVDZWxsUmFuZ2U9ZnVuY3Rpb24oSG4sem4sX3Ipe3JldHVybiBJLnZpZXcuX3d0LmNyZWF0ZUNlbGxSYW5nZShIbix6bixfcil9LHRoaXMu''@;'; put 'put ''dmFsaWRhdGVDZWxsPWZ1bmN0aW9uKEhuLHpuLF9yLFFyKXt2YXIgWGksdWk9SS5nZXRDZWxsVmFsaWRhdG9yKHpuKTtmdW5jdGlvbiB1MChYaSl7dmFyIEUwPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07aWYoRTAmJiEwIT09em4u''@;'; put 'put ''aGlkZGVuKXt2YXIgejA9em4udmlzdWFsQ29sLENvPXpuLnZpc3VhbFJvdyxibz1JLmdldENlbGwoQ28sejAsITApO2lmKGJvJiYiVEgiIT09Ym8ubm9kZU5hbWUpe3ZhciB6YT1JLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoQ28pLEpzPUkuY29sdW1uSW5k''@;'; put 'put ''ZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh6MCk7SS52aWV3Ll93dC5nZXRTZXR0aW5nKCJjZWxsUmVuZGVyZXIiLHphLEpzLGJvKX1fcihYaSl9ZWxzZSBfcihYaSl9c19lKHVpKSYmKFhpPXVpLHVpPWZ1bmN0aW9uKEUwLHowKXt6MChYaS50ZXN0KEUwKSl9KSxVMih1''@;'; put 'put ''aSk/KEhuPUkucnVuSG9va3MoImJlZm9yZVZhbGlkYXRlIixIbix6bi52aXN1YWxSb3csem4ucHJvcCxRciksSS5fcmVnaXN0ZXJJbW1lZGlhdGUoZnVuY3Rpb24oKXt1aS5jYWxsKHpuLEhuLGZ1bmN0aW9uKFhpKXshSXx8KFhpPUkucnVuSG9va3MoImFmdGVyVmFsaWRhdGUiLFhpLEhuLHpu''@;'; put 'put ''LnZpc3VhbFJvdyx6bi5wcm9wLFFyKSx6bi52YWxpZD1YaSx1MChYaSksSS5ydW5Ib29rcygicG9zdEFmdGVyVmFsaWRhdGUiLFhpLEhuLHpuLnZpc3VhbFJvdyx6bi5wcm9wLFFyKSl9KX0pKTpJLl9yZWdpc3RlckltbWVkaWF0ZShmdW5jdGlvbigpe3puLnZhbGlkPSEwLHUwKHpuLnZhbGlk''@;'; put 'put ''LCExKX0pfSx0aGlzLnNldERhdGFBdENlbGw9ZnVuY3Rpb24oSG4sem4sX3IsUXIpe3ZhciBFMCx6MCxDbyx1aT1vYShIbix6bixfciksdTA9W10sWGk9UXI7Zm9yKEUwPTAsejA9dWkubGVuZ3RoO0UwPHowO0UwKyspe2lmKCJvYmplY3QiIT09aWQodWlbRTBdKSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''Ik1ldGhvZCBgc2V0RGF0YUF0Q2VsbGAgYWNjZXB0cyByb3cgbnVtYmVyIG9yIGNoYW5nZXMgYXJyYXkgb2YgYXJyYXlzIGFzIGl0cyBmaXJzdCBwYXJhbWV0ZXIiKTtpZigibnVtYmVyIiE9dHlwZW9mIHVpW0UwXVsxXSl0aHJvdyBuZXcgRXJyb3IoIk1ldGhvZCBgc2V0RGF0YUF0Q2VsbGAg''@;'; put 'put ''YWNjZXB0cyByb3cgYW5kIGNvbHVtbiBudW1iZXIgYXMgaXRzIHBhcmFtZXRlcnMuIElmIHlvdSB3YW50IHRvIHVzZSBvYmplY3QgcHJvcGVydHkgbmFtZSwgdXNlIG1ldGhvZCBgc2V0RGF0YUF0Um93UHJvcGAiKTtDbz11aVtFMF1bMV0+PXRoaXMuY291bnRDb2xzKCk/dWlbRTBdWzFdOmNl''@;'; put 'put ''LmNvbFRvUHJvcCh1aVtFMF1bMV0pLHUwLnB1c2goW3VpW0UwXVswXSxDbyxfZS5nZXRBdENlbGwodGhpcy50b1BoeXNpY2FsUm93KHVpW0UwXVswXSksdWlbRTBdWzFdKSx1aVtFMF1bMl1dKX0hWGkmJiJvYmplY3QiPT09aWQoSG4pJiYoWGk9em4pLEkucnVuSG9va3MoImFmdGVyU2V0RGF0''@;'; put 'put ''YUF0Q2VsbCIsdTAsWGkpLGJhKHUwLFhpLGZ1bmN0aW9uKCl7WWEodTAsWGkpfSl9LHRoaXMuc2V0RGF0YUF0Um93UHJvcD1mdW5jdGlvbihIbix6bixfcixRcil7dmFyIEUwLHowLHVpPW9hKEhuLHpuLF9yKSx1MD1bXSxYaT1Rcjtmb3IoRTA9MCx6MD11aS5sZW5ndGg7RTA8ejA7RTArKyl1''@;'; put 'put ''MC5wdXNoKFt1aVtFMF1bMF0sdWlbRTBdWzFdLF9lLmdldEF0Q2VsbCh0aGlzLnRvUGh5c2ljYWxSb3codWlbRTBdWzBdKSx1aVtFMF1bMV0pLHVpW0UwXVsyXV0pOyFYaSYmIm9iamVjdCI9PT1pZChIbikmJihYaT16biksSS5ydW5Ib29rcygiYWZ0ZXJTZXREYXRhQXRSb3dQcm9wIix1MCxY''@;'; put 'put ''aSksYmEodTAsWGksZnVuY3Rpb24oKXtZYSh1MCxYaSl9KX0sdGhpcy5saXN0ZW49ZnVuY3Rpb24oKXtJJiYhSS5pc0xpc3RlbmluZygpJiYobTZlPUkuZ3VpZCxJLnJ1bkhvb2tzKCJhZnRlckxpc3RlbiIpKX0sdGhpcy51bmxpc3Rlbj1mdW5jdGlvbigpe3RoaXMuaXNMaXN0ZW5pbmcoKSYm''@;'; put 'put ''KG02ZT1udWxsLEkucnVuSG9va3MoImFmdGVyVW5saXN0ZW4iKSl9LHRoaXMuaXNMaXN0ZW5pbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbTZlPT09SS5ndWlkfSx0aGlzLmRlc3Ryb3lFZGl0b3I9ZnVuY3Rpb24oKXt2YXIgSG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNb''@;'; put 'put ''MF0mJmFyZ3VtZW50c1swXSx6bj0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO0kuX3JlZnJlc2hCb3JkZXJzKEhuLHpuKX0sdGhpcy5wb3B1bGF0ZUZyb21BcnJheT1mdW5jdGlvbihIbix6bixfcixRcix1aSx1MCxYaSxFMCx6MCl7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1pZChfcil8fCJvYmplY3QiIT09aWQoX3JbMF0pKXRocm93IG5ldyBFcnJvcigicG9wdWxhdGVGcm9tQXJyYXkgcGFyYW1ldGVyIGBpbnB1dGAgbXVzdCBiZSBhbiBhcnJheSBvZiBhcnJheXMiKTt2YXIgQ289Im51bWJlciI9PXR5cGVvZiBRcj9JLl9jcmVhdGVDZWxs''@;'; put 'put ''Q29vcmRzKFFyLHVpKTpudWxsO3JldHVybiBSZS5wb3B1bGF0ZUZyb21BcnJheShJLl9jcmVhdGVDZWxsQ29vcmRzKEhuLHpuKSxfcixDbyx1MCxYaSxFMCx6MCl9LHRoaXMuc3BsaWNlQ29sPWZ1bmN0aW9uKEhuLHpuLF9yKXtmb3IodmFyIFFyLHVpPWFyZ3VtZW50cy5sZW5ndGgsdTA9bmV3''@;'; put 'put ''IEFycmF5KHVpPjM/dWktMzowKSxYaT0zO1hpPHVpO1hpKyspdTBbWGktM109YXJndW1lbnRzW1hpXTtyZXR1cm4oUXI9Y2UpLnNwbGljZUNvbC5hcHBseShRcixbSG4sem4sX3JdLmNvbmNhdCh1MCkpfSx0aGlzLnNwbGljZVJvdz1mdW5jdGlvbihIbix6bixfcil7Zm9yKHZhciBRcix1aT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLHUwPW5ldyBBcnJheSh1aT4zP3VpLTM6MCksWGk9MztYaTx1aTtYaSsrKXUwW1hpLTNdPWFyZ3VtZW50c1tYaV07cmV0dXJuKFFyPWNlKS5zcGxpY2VSb3cuYXBwbHkoUXIsW0huLHpuLF9yXS5jb25jYXQodTApKX0sdGhpcy5nZXRTZWxlY3RlZD1mdW5jdGlvbigp''@;'; put 'put ''e2lmKEFyLmlzU2VsZWN0ZWQoKSlyZXR1cm4gVGwoQXIuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKEhuKXt2YXIgem49SG4uZnJvbSxfcj1Ibi50bztyZXR1cm5bem4ucm93LHpuLmNvbCxfci5yb3csX3IuY29sXX0pfSx0aGlzLmdldFNlbGVjdGVkTGFzdD1mdW5jdGlvbigpe3ZhciB6''@;'; put 'put ''bixIbj10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIEhuJiZIbi5sZW5ndGg+MCYmKHpuPUhuW0huLmxlbmd0aC0xXSksem59LHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZT1mdW5jdGlvbigpe2lmKEFyLmlzU2VsZWN0ZWQoKSlyZXR1cm4gQXJyYXkuZnJvbShBci5nZXRTZWxlY3RlZFJhbmdlKCkp''@;'; put 'put ''fSx0aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0PWZ1bmN0aW9uKCl7dmFyIHpuLEhuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpO3JldHVybiBIbiYmSG4ubGVuZ3RoPjAmJih6bj1IbltIbi5sZW5ndGgtMV0pLHpufSx0aGlzLmVtcHR5U2VsZWN0ZWRDZWxscz1mdW5jdGlvbihIbil7dmFyIHpu''@;'; put 'put ''PXRoaXM7aWYoQXIuaXNTZWxlY3RlZCgpJiYwIT09dGhpcy5jb3VudFJvd3MoKSYmMCE9PXRoaXMuY291bnRDb2xzKCkpe3ZhciBfcj1bXTtHcihBci5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oUXIpe3ZhciB1aT1Rci5nZXRUb3BTdGFydENvcm5lcigpLHUwPVFyLmdldEJvdHRvbUVu''@;'; put 'put ''ZENvcm5lcigpO3JhKHVpLnJvdyx1MC5yb3csZnVuY3Rpb24oWGkpe3JhKHVpLmNvbCx1MC5jb2wsZnVuY3Rpb24oRTApe3puLmdldENlbGxNZXRhKFhpLEUwKS5yZWFkT25seXx8X3IucHVzaChbWGksRTAsbnVsbF0pfSl9KX0pLF9yLmxlbmd0aD4wJiZ0aGlzLnNldERhdGFBdENlbGwoX3Is''@;'; put 'put ''SG4pfX0sdGhpcy5pc1JlbmRlclN1c3BlbmRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXI+MH0sdGhpcy5zdXNwZW5kUmVuZGVyPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyKz0xfSx0aGlzLnJlc3VtZVJlbmRlcj1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBIbj10aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXItMTt0aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXI9TWF0aC5tYXgoSG4sMCksIXRoaXMuaXNSZW5kZXJTdXNwZW5kZWQoKSYmSG49PT10aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXImJih0aGlzLnJlbmRlckNhbGw/dGhp''@;'; put 'put ''cy5yZW5kZXIoKTp0aGlzLl9yZWZyZXNoQm9yZGVycyhudWxsKSl9LHRoaXMucmVuZGVyPWZ1bmN0aW9uKCl7dGhpcy52aWV3JiYodGhpcy5yZW5kZXJDYWxsPSEwLHRoaXMuZm9yY2VGdWxsUmVuZGVyPSEwLHRoaXMuaXNSZW5kZXJTdXNwZW5kZWQoKXx8KE5lLmxvY2tFZGl0b3IoKSx0aGlz''@;'; put 'put ''Ll9yZWZyZXNoQm9yZGVycyhudWxsKSxOZS51bmxvY2tFZGl0b3IoKSkpfSx0aGlzLmJhdGNoUmVuZGVyPWZ1bmN0aW9uKEhuKXt0aGlzLnN1c3BlbmRSZW5kZXIoKTt2YXIgem49SG4oKTtyZXR1cm4gdGhpcy5yZXN1bWVSZW5kZXIoKSx6bn0sdGhpcy5pc0V4ZWN1dGlvblN1c3BlbmRlZD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXI+MH0sdGhpcy5zdXNwZW5kRXhlY3V0aW9uPWZ1bmN0aW9uKCl7dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyKz0xLHRoaXMuY29sdW1uSW5kZXhNYXBwZXIuc3VzcGVuZE9wZXJhdGlvbnMoKSx0aGlz''@;'; put 'put ''LnJvd0luZGV4TWFwcGVyLnN1c3BlbmRPcGVyYXRpb25zKCl9LHRoaXMucmVzdW1lRXhlY3V0aW9uPWZ1bmN0aW9uKCl7dmFyIEhuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sem49dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVy''@;'; put 'put ''LTE7dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyPU1hdGgubWF4KHpuLDApLCghdGhpcy5pc0V4ZWN1dGlvblN1c3BlbmRlZCgpJiZ6bj09PXRoaXMuZXhlY3V0aW9uU3VzcGVuZGVkQ291bnRlcnx8SG4pJiYodGhpcy5jb2x1bW5JbmRleE1hcHBlci5yZXN1bWVPcGVyYXRpb25zKCks''@;'; put 'put ''dGhpcy5yb3dJbmRleE1hcHBlci5yZXN1bWVPcGVyYXRpb25zKCkpfSx0aGlzLmJhdGNoRXhlY3V0aW9uPWZ1bmN0aW9uKEhuKXt2YXIgem49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTt0aGlzLnN1c3BlbmRFeGVjdXRpb24oKTt2YXIg''@;'; put 'put ''X3I9SG4oKTtyZXR1cm4gdGhpcy5yZXN1bWVFeGVjdXRpb24oem4pLF9yfSx0aGlzLmJhdGNoPWZ1bmN0aW9uKEhuKXt0aGlzLnN1c3BlbmRSZW5kZXIoKSx0aGlzLnN1c3BlbmRFeGVjdXRpb24oKTt2YXIgem49SG4oKTtyZXR1cm4gdGhpcy5yZXN1bWVFeGVjdXRpb24oKSx0aGlzLnJlc3Vt''@;'; put 'put ''ZVJlbmRlcigpLHpufSx0aGlzLnJlZnJlc2hEaW1lbnNpb25zPWZ1bmN0aW9uKCl7aWYoSS52aWV3KXt2YXIgSG49SS52aWV3LmdldExhc3RTaXplKCksem49SG4ud2lkdGgsX3I9SG4uaGVpZ2h0LFFyPUkucm9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdWk9UXIud2lkdGgs''@;'; put 'put ''dTA9UXIuaGVpZ2h0LFhpPXVpIT09em58fHUwIT09X3I7ITE9PT1JLnJ1bkhvb2tzKCJiZWZvcmVSZWZyZXNoRGltZW5zaW9ucyIse3dpZHRoOnpuLGhlaWdodDpfcn0se3dpZHRoOnVpLGhlaWdodDp1MH0sWGkpfHwoKFhpfHxJLnZpZXcuX3d0Lnd0T3ZlcmxheXMuc2Nyb2xsYWJsZUVsZW1l''@;'; put 'put ''bnQ9PT1JLnJvb3RXaW5kb3cpJiYoSS52aWV3LnNldExhc3RTaXplKHVpLHUwKSxJLnJlbmRlcigpKSxJLnJ1bkhvb2tzKCJhZnRlclJlZnJlc2hEaW1lbnNpb25zIix7d2lkdGg6em4saGVpZ2h0Ol9yfSx7d2lkdGg6dWksaGVpZ2h0OnUwfSxYaSkpfX0sdGhpcy51cGRhdGVEYXRhPWZ1bmN0''@;'; put 'put ''aW9uKEhuLHpuKXt2YXIgX3I9dGhpcztyTWUoSG4sZnVuY3Rpb24oUXIpe2NlPVFyfSxmdW5jdGlvbihRcil7Y2U9UXIsSS5jb2x1bW5JbmRleE1hcHBlci5maXRUb0xlbmd0aChfci5nZXRJbml0aWFsQ29sdW1uQ291bnQoKSksSS5yb3dJbmRleE1hcHBlci5maXRUb0xlbmd0aChfci5jb3Vu''@;'; put 'put ''dFNvdXJjZVJvd3MoKSksUmUuYWRqdXN0Um93c0FuZENvbHMoKX0se2hvdEluc3RhbmNlOkksZGF0YU1hcDpjZSxkYXRhU291cmNlOl9lLGludGVybmFsU291cmNlOiJ1cGRhdGVEYXRhIixzb3VyY2U6em4sZmlyc3RSdW46S2V9KX0sdGhpcy5sb2FkRGF0YT1mdW5jdGlvbihIbix6bil7ck1l''@;'; put 'put ''KEhuLGZ1bmN0aW9uKF9yKXtjZT1fcn0sZnVuY3Rpb24oKXskdC5jbGVhckNlbGxzQ2FjaGUoKSxJLmluaXRJbmRleE1hcHBlcnMoKSxSZS5hZGp1c3RSb3dzQW5kQ29scygpLEtlJiYoS2U9W251bGwsImxvYWREYXRhIl0pfSx7aG90SW5zdGFuY2U6SSxkYXRhTWFwOmNlLGRhdGFTb3VyY2U6''@;'; put 'put ''X2UsaW50ZXJuYWxTb3VyY2U6ImxvYWREYXRhIixzb3VyY2U6em4sZmlyc3RSdW46S2V9KX0sdGhpcy5nZXRJbml0aWFsQ29sdW1uQ291bnQ9ZnVuY3Rpb24oKXt2YXIgSG49aG4uY29sdW1ucyx6bj0wO2lmKEFycmF5LmlzQXJyYXkoSG4pKXpuPUhuLmxlbmd0aDtlbHNlIGlmKFUyKEhuKSlp''@;'; put 'put ''ZigiYXJyYXkiPT09SS5kYXRhVHlwZSlmb3IodmFyIF9yPXRoaXMuY291bnRTb3VyY2VDb2xzKCksUXI9MDtRcjxfcjtRcis9MSlIbihRcikmJih6bis9MSk7ZWxzZSgib2JqZWN0Ij09PUkuZGF0YVR5cGV8fCJmdW5jdGlvbiI9PT1JLmRhdGFUeXBlKSYmKHpuPWNlLmNvbFRvUHJvcENhY2hl''@;'; put 'put ''Lmxlbmd0aCk7ZWxzZSBpZihFbyhobi5kYXRhU2NoZW1hKSl7dmFyIHVpPWNlLmdldFNjaGVtYSgpO3puPUFycmF5LmlzQXJyYXkodWkpP3VpLmxlbmd0aDpLcSh1aSl9ZWxzZSB6bj10aGlzLmNvdW50U291cmNlQ29scygpO3JldHVybiB6bn0sdGhpcy5pbml0SW5kZXhNYXBwZXJzPWZ1bmN0''@;'; put 'put ''aW9uKCl7dGhpcy5jb2x1bW5JbmRleE1hcHBlci5pbml0VG9MZW5ndGgodGhpcy5nZXRJbml0aWFsQ29sdW1uQ291bnQoKSksdGhpcy5yb3dJbmRleE1hcHBlci5pbml0VG9MZW5ndGgodGhpcy5jb3VudFNvdXJjZVJvd3MoKSl9LHRoaXMuZ2V0RGF0YT1mdW5jdGlvbihIbix6bixfcixRcil7''@;'; put 'put ''cmV0dXJuIHUxKEhuKT9jZS5nZXRBbGwoKTpjZS5nZXRSYW5nZShJLl9jcmVhdGVDZWxsQ29vcmRzKEhuLHpuKSxJLl9jcmVhdGVDZWxsQ29vcmRzKF9yLFFyKSxjZS5ERVNUSU5BVElPTl9SRU5ERVJFUil9LHRoaXMuZ2V0Q29weWFibGVUZXh0PWZ1bmN0aW9uKEhuLHpuLF9yLFFyKXtyZXR1''@;'; put 'put ''cm4gY2UuZ2V0Q29weWFibGVUZXh0KEkuX2NyZWF0ZUNlbGxDb29yZHMoSG4sem4pLEkuX2NyZWF0ZUNlbGxDb29yZHMoX3IsUXIpKX0sdGhpcy5nZXRDb3B5YWJsZURhdGE9ZnVuY3Rpb24oSG4sem4pe3JldHVybiBjZS5nZXRDb3B5YWJsZShIbixjZS5jb2xUb1Byb3Aoem4pKX0sdGhpcy5n''@;'; put 'put ''ZXRTY2hlbWE9ZnVuY3Rpb24oKXtyZXR1cm4gY2UuZ2V0U2NoZW1hKCl9LHRoaXMudXBkYXRlU2V0dGluZ3M9ZnVuY3Rpb24oSG4pe3ZhciB1aSx1MCx6bj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLF9yPShLZT9JLmxvYWREYXRhOkku''@;'; put 'put ''dXBkYXRlRGF0YSkuYmluZCh0aGlzKSxRcj0hMTtpZihFbyhIbi5yb3dzKSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAicm93cyIgc2V0dGluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBEbyB5b3UgbWVhbiBzdGFydFJvd3MsIG1pblJvd3Mgb3IgbWF4Um93cz8nKTtpZihFbyhIbi5jb2xzKSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoJ1RoZSAiY29scyIgc2V0dGluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBEbyB5b3UgbWVhbiBzdGFydENvbHMsIG1pbkNvbHMgb3IgbWF4Q29scz8nKTtpZihFbyhIbi5nYW50dENoYXJ0KSl0aHJvdyBuZXcgRXJyb3IoJ1NpbmNlIDguMC4wIHRoZSAiZ2FudHRD''@;'; put 'put ''aGFydCIgc2V0dGluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLicpO2Zvcih1aSBpbiBIbikiZGF0YSI9PT11aXx8KCJsYW5ndWFnZSI9PT11aT9faShIbi5sYW5ndWFnZSk6ImNsYXNzTmFtZSI9PT11aT9LaSgiY2xhc3NOYW1lIixIbi5jbGFzc05hbWUpOiJ0YWJsZUNsYXNzTmFtZSI9PT11''@;'; put 'put ''aSYmSS50YWJsZT8oS2koInRhYmxlQ2xhc3NOYW1lIixIbi50YWJsZUNsYXNzTmFtZSksSS52aWV3Ll93dC53dE92ZXJsYXlzLnN5bmNPdmVybGF5VGFibGVDbGFzc05hbWVzKCkpOlZvLmdldFNpbmdsZXRvbigpLmlzUmVnaXN0ZXJlZCh1aSl8fFZvLmdldFNpbmdsZXRvbigpLmlzRGVwcmVj''@;'; put 'put ''YXRlZCh1aSk/KFUyKEhuW3VpXSl8fEFycmF5LmlzQXJyYXkoSG5bdWldKSkmJihIblt1aV0uaW5pdGlhbEhvb2s9ITAsSS5hZGRIb29rKHVpLEhuW3VpXSkpOiF6biYmczEoSG4sdWkpJiYoRG5bdWldPUhuW3VpXSkpO3ZvaWQgMD09PUhuLmRhdGEmJnZvaWQgMD09PWhuLmRhdGE/X3IobnVs''@;'; put 'put ''bCwidXBkYXRlU2V0dGluZ3MiKTp2b2lkIDAhPT1Ibi5kYXRhP19yKEhuLmRhdGEsInVwZGF0ZVNldHRpbmdzIik6dm9pZCAwIT09SG4uY29sdW1ucyYmKGNlLmNyZWF0ZU1hcCgpLEkuaW5pdEluZGV4TWFwcGVycygpKTt2YXIgWGk9SS5jb3VudENvbHMoKSxFMD1obi5jb2x1bW5zO2lmKEUw''@;'; put 'put ''JiZVMihFMCkmJihRcj0hMCksKHZvaWQgMCE9PUhuLmNlbGx8fHZvaWQgMCE9PUhuLmNlbGxzfHx2b2lkIDAhPT1Ibi5jb2x1bW5zKSYmJHQuY2xlYXJDYWNoZSgpLFhpPjApZm9yKHVpPTAsdTA9MDt1aTxYaTt1aSsrKXtpZihFMCl7dmFyIHowPVFyP0UwKHVpKTpFMFt1MF07ejAmJiR0LnVw''@;'; put 'put ''ZGF0ZUNvbHVtbk1ldGEodTAsejApfXUwKz0xfUVvKEhuLmNlbGwpJiZabChIbi5jZWxsLGZ1bmN0aW9uKFhzKXtJLnNldENlbGxNZXRhT2JqZWN0KFhzLnJvdyxYcy5jb2wsWHMpfSksSS5ydW5Ib29rcygiYWZ0ZXJDZWxsTWV0YVJlc2V0Iik7dmFyIENvPUkucm9vdEVsZW1lbnQuc3R5bGUu''@;'; put 'put ''aGVpZ2h0OyIiIT09Q28mJihDbz1wYXJzZUludChJLnJvb3RFbGVtZW50LnN0eWxlLmhlaWdodCwxMCkpO3ZhciBibz1Ibi5oZWlnaHQ7aWYoVTIoYm8pJiYoYm89Ym8oKSksem4pe3ZhciB6YT1JLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKTt6YSYmSS5yb290RWxlbWVudC5z''@;'; put 'put ''ZXRBdHRyaWJ1dGUoImRhdGEtaW5pdGlhbHN0eWxlIixJLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSl9aWYobnVsbD09PWJvKXt2YXIgSnM9SS5yb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtaW5pdGlhbHN0eWxlIik7SnMmJihKcy5pbmRleE9mKCJoZWlnaHQiKT4t''@;'; put 'put ''MXx8SnMuaW5kZXhPZigib3ZlcmZsb3ciKT4tMSk/SS5yb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIixKcyk6KEkucm9vdEVsZW1lbnQuc3R5bGUuaGVpZ2h0PSIiLEkucm9vdEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c9IiIpfWVsc2Ugdm9pZCAwIT09Ym8mJihJLnJvb3RFbGVtZW50''@;'; put 'put ''LnN0eWxlLmhlaWdodD1pc05hTihibyk/IiIuY29uY2F0KGJvKToiIi5jb25jYXQoYm8sInB4IiksSS5yb290RWxlbWVudC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIik7aWYodm9pZCAwIT09SG4ud2lkdGgpe3ZhciBCYT1Ibi53aWR0aDtVMihCYSkmJihCYT1CYSgpKSxJLnJvb3RFbGVtZW50''@;'; put 'put ''LnN0eWxlLndpZHRoPWlzTmFOKEJhKT8iIi5jb25jYXQoQmEpOiIiLmNvbmNhdChCYSwicHgiKX16bnx8KEkudmlldyYmKEkudmlldy5fd3Qud3RWaWV3cG9ydC5yZXNldEhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQoKSxJLnZpZXcuX3d0LmV4cG9ydFNldHRpbmdzQXNDbGFzc05h''@;'; put 'put ''bWVzKCkpLEkucnVuSG9va3MoImFmdGVyVXBkYXRlU2V0dGluZ3MiLEhuKSksUmUuYWRqdXN0Um93c0FuZENvbHMoKSxJLnZpZXcmJiFLZSYmKEkuZm9yY2VGdWxsUmVuZGVyPSEwLE5lLmxvY2tFZGl0b3IoKSxJLl9yZWZyZXNoQm9yZGVycyhudWxsKSxJLnZpZXcuX3d0Lnd0T3ZlcmxheXMu''@;'; put 'put ''YWRqdXN0RWxlbWVudHNTaXplKCksTmUudW5sb2NrRWRpdG9yKCkpLCF6biYmSS52aWV3JiYoIiI9PT1Db3x8IiI9PT1ib3x8dm9pZCAwPT09Ym8pJiZDbyE9PWJvJiZJLnZpZXcuX3d0Lnd0T3ZlcmxheXMudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50cygpfSx0aGlzLmdldFZhbHVlPWZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIEhuPUkuZ2V0U2VsZWN0ZWRMYXN0KCk7aWYoaG4uZ2V0VmFsdWUpe2lmKFUyKGhuLmdldFZhbHVlKSlyZXR1cm4gaG4uZ2V0VmFsdWUuY2FsbChJKTtpZihIbilyZXR1cm4gSS5nZXREYXRhKClbSG5bMF1bMF1dW2huLmdldFZhbHVlXX1lbHNlIGlmKEhuKXJldHVybiBJ''@;'; put 'put ''LmdldERhdGFBdENlbGwoSG5bMF0sSG5bMV0pfSx0aGlzLmdldFNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIGhufSx0aGlzLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RBbGwoKSx0aGlzLmVtcHR5U2VsZWN0ZWRDZWxscygpfSx0aGlzLmFsdGVyPWZ1bmN0aW9uKEhuLHpuLF9yLFFy''@;'; put 'put ''LHVpKXtSZS5hbHRlcihIbix6bixfcixRcix1aSl9LHRoaXMuZ2V0Q2VsbD1mdW5jdGlvbihIbix6bil7dmFyIF9yPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sUXI9em4sdWk9SG47aWYoem4+PTApe2lmKHRoaXMuY29sdW1uSW5kZXhN''@;'; put 'put ''YXBwZXIuaXNIaWRkZW4odGhpcy50b1BoeXNpY2FsQ29sdW1uKHpuKSkpcmV0dXJuIG51bGw7UXI9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHpuKX1pZihIbj49MCl7aWYodGhpcy5yb3dJbmRleE1hcHBlci5pc0hpZGRlbih0aGlzLnRvUGh5''@;'; put 'put ''c2ljYWxSb3coSG4pKSlyZXR1cm4gbnVsbDt1aT10aGlzLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoSG4pfXJldHVybiBudWxsPT09dWl8fG51bGw9PT1Rcj9udWxsOkkudmlldy5nZXRDZWxsQXRDb29yZHMoSS5fY3JlYXRlQ2VsbENvb3Jkcyh1aSxRciks''@;'; put 'put ''X3IpfSx0aGlzLmdldENvb3Jkcz1mdW5jdGlvbihIbil7dmFyIHpuPXRoaXMudmlldy5fd3Qud3RUYWJsZS5nZXRDb29yZHMoSG4pO2lmKG51bGw9PT16bilyZXR1cm4gbnVsbDt2YXIgX3I9em4ucm93LFFyPXpuLmNvbCx1aT1fcix1MD1RcjtyZXR1cm4gX3I+PTAmJih1aT10aGlzLnJvd0lu''@;'; put 'put ''ZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoX3IpKSxRcj49MCYmKHUwPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChRcikpLEkuX2NyZWF0ZUNlbGxDb29yZHModWksdTApfSx0aGlzLmNvbFRvUHJvcD1mdW5jdGlvbihI''@;'; put 'put ''bil7cmV0dXJuIGNlLmNvbFRvUHJvcChIbil9LHRoaXMucHJvcFRvQ29sPWZ1bmN0aW9uKEhuKXtyZXR1cm4gY2UucHJvcFRvQ29sKEhuKX0sdGhpcy50b1Zpc3VhbFJvdz1mdW5jdGlvbihIbil7cmV0dXJuIHYucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoSG4p''@;'; put 'put ''fSx0aGlzLnRvVmlzdWFsQ29sdW1uPWZ1bmN0aW9uKEhuKXtyZXR1cm4gdi5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleChIbil9LHRoaXMudG9QaHlzaWNhbFJvdz1mdW5jdGlvbihIbil7cmV0dXJuIHYucm93SW5kZXhNYXBwZXIuZ2V0UGh5c2ljYWxGcm9t''@;'; put 'put ''VmlzdWFsSW5kZXgoSG4pfSx0aGlzLnRvUGh5c2ljYWxDb2x1bW49ZnVuY3Rpb24oSG4pe3JldHVybiB2LmNvbHVtbkluZGV4TWFwcGVyLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KEhuKX0sdGhpcy5nZXREYXRhQXRDZWxsPWZ1bmN0aW9uKEhuLHpuKXtyZXR1cm4gY2UuZ2V0KEhuLGNl''@;'; put 'put ''LmNvbFRvUHJvcCh6bikpfSx0aGlzLmdldERhdGFBdFJvd1Byb3A9ZnVuY3Rpb24oSG4sem4pe3JldHVybiBjZS5nZXQoSG4sem4pfSx0aGlzLmdldERhdGFBdENvbD1mdW5jdGlvbihIbil7dmFyIHpuO3JldHVybih6bj1bXSkuY29uY2F0LmFwcGx5KHpuLHp3KGNlLmdldFJhbmdlKEkuX2Ny''@;'; put 'put ''ZWF0ZUNlbGxDb29yZHMoMCxIbiksSS5fY3JlYXRlQ2VsbENvb3Jkcyhobi5kYXRhLmxlbmd0aC0xLEhuKSxjZS5ERVNUSU5BVElPTl9SRU5ERVJFUikpKX0sdGhpcy5nZXREYXRhQXRQcm9wPWZ1bmN0aW9uKEhuKXt2YXIgem4sX3I9Y2UuZ2V0UmFuZ2UoSS5fY3JlYXRlQ2VsbENvb3Jkcygw''@;'; put 'put ''LGNlLnByb3BUb0NvbChIbikpLEkuX2NyZWF0ZUNlbGxDb29yZHMoaG4uZGF0YS5sZW5ndGgtMSxjZS5wcm9wVG9Db2woSG4pKSxjZS5ERVNUSU5BVElPTl9SRU5ERVJFUik7cmV0dXJuKHpuPVtdKS5jb25jYXQuYXBwbHkoem4sencoX3IpKX0sdGhpcy5nZXRTb3VyY2VEYXRhPWZ1bmN0aW9u''@;'; put 'put ''KEhuLHpuLF9yLFFyKXtyZXR1cm4gdm9pZCAwPT09SG4/X2UuZ2V0RGF0YSgpOl9lLmdldEJ5UmFuZ2UoSS5fY3JlYXRlQ2VsbENvb3JkcyhIbix6biksSS5fY3JlYXRlQ2VsbENvb3JkcyhfcixRcikpfSx0aGlzLmdldFNvdXJjZURhdGFBcnJheT1mdW5jdGlvbihIbix6bixfcixRcil7cmV0''@;'; put 'put ''dXJuIHZvaWQgMD09PUhuP19lLmdldERhdGEoITApOl9lLmdldEJ5UmFuZ2UoSS5fY3JlYXRlQ2VsbENvb3JkcyhIbix6biksSS5fY3JlYXRlQ2VsbENvb3JkcyhfcixRciksITApfSx0aGlzLmdldFNvdXJjZURhdGFBdENvbD1mdW5jdGlvbihIbil7cmV0dXJuIF9lLmdldEF0Q29sdW1uKEhu''@;'; put 'put ''KX0sdGhpcy5zZXRTb3VyY2VEYXRhQXRDZWxsPWZ1bmN0aW9uKEhuLHpuLF9yLFFyKXt2YXIgdWk9b2EoSG4sem4sX3IpLHUwPXRoaXMuaGFzSG9vaygiYWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIiksWGk9W107dTAmJkdyKHVpLGZ1bmN0aW9uKHowKXt2YXIgQ289RGcoejAsMyksYm89Q29b''@;'; put 'put ''MF0semE9Q29bMV0sSnM9Q29bMl07WGkucHVzaChbYm8semEsX2UuZ2V0QXRDZWxsKGJvLHphKSxKc10pfSksR3IodWksZnVuY3Rpb24oejApe3ZhciBDbz1EZyh6MCwzKTtfZS5zZXRBdENlbGwoQ29bMF0sQ29bMV0sQ29bMl0pfSksdTAmJnRoaXMucnVuSG9va3MoImFmdGVyU2V0U291cmNl''@;'; put 'put ''RGF0YUF0Q2VsbCIsWGksUXIpLHRoaXMucmVuZGVyKCk7dmFyIEUwPUkuZ2V0QWN0aXZlRWRpdG9yKCk7RTAmJkVvKEUwLnJlZnJlc2hWYWx1ZSkmJkUwLnJlZnJlc2hWYWx1ZSgpfSx0aGlzLmdldFNvdXJjZURhdGFBdFJvdz1mdW5jdGlvbihIbil7cmV0dXJuIF9lLmdldEF0Um93KEhuKX0s''@;'; put 'put ''dGhpcy5nZXRTb3VyY2VEYXRhQXRDZWxsPWZ1bmN0aW9uKEhuLHpuKXtyZXR1cm4gX2UuZ2V0QXRDZWxsKEhuLHpuKX0sdGhpcy5nZXREYXRhQXRSb3c9ZnVuY3Rpb24oSG4pe3JldHVybiBjZS5nZXRSYW5nZShJLl9jcmVhdGVDZWxsQ29vcmRzKEhuLDApLEkuX2NyZWF0ZUNlbGxDb29yZHMo''@;'; put 'put ''SG4sdGhpcy5jb3VudENvbHMoKS0xKSxjZS5ERVNUSU5BVElPTl9SRU5ERVJFUilbMF18fFtdfSx0aGlzLmdldERhdGFUeXBlPWZ1bmN0aW9uKEhuLHpuLF9yLFFyKXt2YXIgdWk9dGhpcyx1MD12b2lkIDA9PT1Ibj9bMCwwLHRoaXMuY291bnRSb3dzKCksdGhpcy5jb3VudENvbHMoKV06W0hu''@;'; put 'put ''LHpuLF9yLFFyXSxYaT11MFswXSxFMD11MFsxXSx6MD11MFsyXSxDbz11MFszXSxibz1udWxsLHphPW51bGw7dm9pZCAwPT09ejAmJih6MD1YaSksdm9pZCAwPT09Q28mJihDbz1FMCk7dmFyIEpzPSJtaXhlZCI7cmV0dXJuIHJhKE1hdGgubWF4KE1hdGgubWluKFhpLHowKSwwKSxNYXRoLm1h''@;'; put 'put ''eChYaSx6MCksZnVuY3Rpb24oQmEpe3ZhciBYcz0hMDtyZXR1cm4gcmEoTWF0aC5tYXgoTWF0aC5taW4oRTAsQ28pLDApLE1hdGgubWF4KEUwLENvKSxmdW5jdGlvbihGMSl7dmFyIEgxPXVpLmdldENlbGxNZXRhKEJhLEYxKTtyZXR1cm4gemE9SDEudHlwZSxibz9Ycz1ibz09PXphOmJvPXph''@;'; put 'put ''LFhzfSksSnM9WHM/emE6Im1peGVkIixYc30pLEpzfSx0aGlzLnJlbW92ZUNlbGxNZXRhPWZ1bmN0aW9uKEhuLHpuLF9yKXt2YXIgUXI9W3RoaXMudG9QaHlzaWNhbFJvdyhIbiksdGhpcy50b1BoeXNpY2FsQ29sdW1uKHpuKV0sdWk9UXJbMF0sdTA9UXJbMV0sWGk9JHQuZ2V0Q2VsbE1ldGFL''@;'; put 'put ''ZXlWYWx1ZSh1aSx1MCxfcik7ITEhPT1JLnJ1bkhvb2tzKCJiZWZvcmVSZW1vdmVDZWxsTWV0YSIsSG4sem4sX3IsWGkpJiYoJHQucmVtb3ZlQ2VsbE1ldGEodWksdTAsX3IpLEkucnVuSG9va3MoImFmdGVyUmVtb3ZlQ2VsbE1ldGEiLEhuLHpuLF9yLFhpKSksWGk9bnVsbH0sdGhpcy5zcGxp''@;'; put 'put ''Y2VDZWxsc01ldGE9ZnVuY3Rpb24oSG4pe2Zvcih2YXIgem49dGhpcyxfcj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxRcj1hcmd1bWVudHMubGVuZ3RoLHVpPW5ldyBBcnJheShRcj4yP1FyLTI6MCksdTA9Mjt1MDxRcjt1MCsrKXVp''@;'; put 'put ''W3UwLTJdPWFyZ3VtZW50c1t1MF07aWYodWkubGVuZ3RoPjAmJiFBcnJheS5pc0FycmF5KHVpWzBdKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSAzcmQgYXJndW1lbnQgKGNlbGxNZXRhUm93cykgaGFzIHRvIGJlIHBhc3NlZCBhcyBhbiBhcnJheSBvZiBjZWxsIG1ldGEgb2JqZWN0cyBhcnJheS4i''@;'; put 'put ''KTtfcj4wJiYkdC5yZW1vdmVSb3codGhpcy50b1BoeXNpY2FsUm93KEhuKSxfciksdWkubGVuZ3RoPjAmJkdyKHVpLnJldmVyc2UoKSxmdW5jdGlvbihYaSl7JHQuY3JlYXRlUm93KHpuLnRvUGh5c2ljYWxSb3coSG4pKSxHcihYaSxmdW5jdGlvbihFMCx6MCl7cmV0dXJuIHpuLnNldENlbGxN''@;'; put 'put ''ZXRhT2JqZWN0KEhuLHowLEUwKX0pfSksSS5yZW5kZXIoKX0sdGhpcy5zZXRDZWxsTWV0YU9iamVjdD1mdW5jdGlvbihIbix6bixfcil7dmFyIFFyPXRoaXM7Im9iamVjdCI9PT1pZChfcikmJlpsKF9yLGZ1bmN0aW9uKHVpLHUwKXtRci5zZXRDZWxsTWV0YShIbix6bix1MCx1aSl9KX0sdGhp''@;'; put 'put ''cy5zZXRDZWxsTWV0YT1mdW5jdGlvbihIbix6bixfcixRcil7aWYoITEhPT1JLnJ1bkhvb2tzKCJiZWZvcmVTZXRDZWxsTWV0YSIsSG4sem4sX3IsUXIpKXt2YXIgdTA9SG4sWGk9em47SG48dGhpcy5jb3VudFJvd3MoKSYmKHUwPXRoaXMudG9QaHlzaWNhbFJvdyhIbikpLHpuPHRoaXMuY291''@;'; put 'put ''bnRDb2xzKCkmJihYaT10aGlzLnRvUGh5c2ljYWxDb2x1bW4oem4pKSwkdC5zZXRDZWxsTWV0YSh1MCxYaSxfcixRciksSS5ydW5Ib29rcygiYWZ0ZXJTZXRDZWxsTWV0YSIsSG4sem4sX3IsUXIpfX0sdGhpcy5nZXRDZWxsc01ldGE9ZnVuY3Rpb24oKXtyZXR1cm4gJHQuZ2V0Q2VsbHNNZXRh''@;'; put 'put ''KCl9LHRoaXMuZ2V0Q2VsbE1ldGE9ZnVuY3Rpb24oSG4sem4pe3ZhciBfcj10aGlzLnRvUGh5c2ljYWxSb3coSG4pLFFyPXRoaXMudG9QaHlzaWNhbENvbHVtbih6bik7cmV0dXJuIG51bGw9PT1fciYmKF9yPUhuKSxudWxsPT09UXImJihRcj16biksJHQuZ2V0Q2VsbE1ldGEoX3IsUXIse3Zp''@;'; put 'put ''c3VhbFJvdzpIbix2aXN1YWxDb2x1bW46em59KX0sdGhpcy5nZXRDZWxsTWV0YUF0Um93PWZ1bmN0aW9uKEhuKXtyZXR1cm4gJHQuZ2V0Q2VsbHNNZXRhQXRSb3coSG4pfSx0aGlzLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZD1mdW5jdGlvbigpe3JldHVybiEoIm9iamVjdCI9PT1JLmRh''@;'; put 'put ''dGFUeXBlfHxobi5jb2x1bW5zKX07dmFyIHFhPWt6KCJyZW5kZXJlciIpO3RoaXMuZ2V0Q2VsbFJlbmRlcmVyPWZ1bmN0aW9uKEhuLHpuKXtyZXR1cm4gbmRlKHFhLmNhbGwodGhpcyxIbix6bikpfSx0aGlzLmdldENlbGxFZGl0b3I9a3ooImVkaXRvciIpO3ZhciBPcz1reigidmFsaWRhdG9y''@;'; put 'put ''Iik7dGhpcy5nZXRDZWxsVmFsaWRhdG9yPWZ1bmN0aW9uKEhuLHpuKXt2YXIgX3I9T3MuY2FsbCh0aGlzLEhuLHpuKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIF9yJiYoX3I9cmRlKF9yKSksX3J9LHRoaXMudmFsaWRhdGVDZWxscz1mdW5jdGlvbihIbil7dGhpcy5fdmFsaWRhdGVDZWxscyhI''@;'; put 'put ''bil9LHRoaXMudmFsaWRhdGVSb3dzPWZ1bmN0aW9uKEhuLHpuKXtpZighQXJyYXkuaXNBcnJheShIbikpdGhyb3cgbmV3IEVycm9yKCJ2YWxpZGF0ZVJvd3MgcGFyYW1ldGVyIGByb3dzYCBtdXN0IGJlIGFuIGFycmF5Iik7dGhpcy5fdmFsaWRhdGVDZWxscyh6bixIbil9LHRoaXMudmFsaWRh''@;'; put 'put ''dGVDb2x1bW5zPWZ1bmN0aW9uKEhuLHpuKXtpZighQXJyYXkuaXNBcnJheShIbikpdGhyb3cgbmV3IEVycm9yKCJ2YWxpZGF0ZUNvbHVtbnMgcGFyYW1ldGVyIGBjb2x1bW5zYCBtdXN0IGJlIGFuIGFycmF5Iik7dGhpcy5fdmFsaWRhdGVDZWxscyh6bix2b2lkIDAsSG4pfSx0aGlzLl92YWxp''@;'; put 'put ''ZGF0ZUNlbGxzPWZ1bmN0aW9uKEhuLHpuLF9yKXt2YXIgUXI9bmV3IGtvO0huJiYoUXIub25RdWV1ZUVtcHR5PUhuKTtmb3IodmFyIHVpPUkuY291bnRSb3dzKCktMTt1aT49MDspaWYodm9pZCAwPT09em58fC0xIT09em4uaW5kZXhPZih1aSkpe2Zvcih2YXIgdTA9SS5jb3VudENvbHMoKS0x''@;'; put 'put ''O3UwPj0wOyl2b2lkIDA9PT1fcnx8LTEhPT1fci5pbmRleE9mKHUwKT8oUXIuYWRkVmFsaWRhdG9yVG9RdWV1ZSgpLEkudmFsaWRhdGVDZWxsKEkuZ2V0RGF0YUF0Q2VsbCh1aSx1MCksSS5nZXRDZWxsTWV0YSh1aSx1MCksZnVuY3Rpb24oWGkpe2lmKCJib29sZWFuIiE9dHlwZW9mIFhpKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBlcnJvcjogcmVzdWx0IGlzIG5vdCBib29sZWFuIik7ITE9PT1YaSYmKFFyLnZhbGlkPSExKSxRci5yZW1vdmVWYWxpZGF0b3JGb3JtUXVldWUoKX0sInZhbGlkYXRlQ2VsbHMiKSx1MC09MSk6dTAtPTE7dWktPTF9ZWxzZSB1aS09MTtRci5jaGVj''@;'; put 'put ''a0lmUXVldWVJc0VtcHR5KCl9LHRoaXMuZ2V0Um93SGVhZGVyPWZ1bmN0aW9uKEhuKXt2YXIgem49aG4ucm93SGVhZGVycyxfcj1IbjtyZXR1cm4gdm9pZCAwIT09X3ImJihfcj1JLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWFkZXIiLF9yKSksdm9pZCAwPT09X3I/KHpuPVtdLHJhKEkuY291bnRS''@;'; put 'put ''b3dzKCktMSxmdW5jdGlvbihRcil7em4ucHVzaChJLmdldFJvd0hlYWRlcihRcikpfSkpOkFycmF5LmlzQXJyYXkoem4pJiZ2b2lkIDAhPT16bltfcl0/em49em5bX3JdOlUyKHpuKT96bj16bihfcik6em4mJiJzdHJpbmciIT10eXBlb2Ygem4mJiJudW1iZXIiIT10eXBlb2Ygem4mJih6bj1f''@;'; put 'put ''cisxKSx6bn0sdGhpcy5oYXNSb3dIZWFkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuISFobi5yb3dIZWFkZXJzfSx0aGlzLmhhc0NvbEhlYWRlcnM9ZnVuY3Rpb24oKXtpZihudWxsIT1obi5jb2xIZWFkZXJzKXJldHVybiEhaG4uY29sSGVhZGVycztmb3IodmFyIEhuPTAsem49SS5jb3VudENvbHMo''@;'; put 'put ''KTtIbjx6bjtIbisrKWlmKEkuZ2V0Q29sSGVhZGVyKEhuKSlyZXR1cm4hMDtyZXR1cm4hMX0sdGhpcy5nZXRDb2xIZWFkZXI9ZnVuY3Rpb24oSG4pe3ZhciB6bj1JLnJ1bkhvb2tzKCJtb2RpZnlDb2xIZWFkZXIiLEhuKSxfcj1obi5jb2xIZWFkZXJzO2lmKHZvaWQgMD09PXpuKXtmb3IodmFy''@;'; put 'put ''IFFyPVtdLHVpPUkuY291bnRDb2xzKCksdTA9MDt1MDx1aTt1MCsrKVFyLnB1c2goSS5nZXRDb2xIZWFkZXIodTApKTtfcj1Rcn1lbHNle3ZhciBFMD1JLnRvUGh5c2ljYWxDb2x1bW4oem4pLHowPWZ1bmN0aW9uKGJvKXtmb3IodmFyIHphPVtdLEpzPUkuY291bnRDb2xzKCksQmE9MDtCYTxK''@;'; put 'put ''cztCYSsrKVUyKGhuLmNvbHVtbnMpJiZobi5jb2x1bW5zKEJhKSYmemEucHVzaChCYSk7cmV0dXJuIHphW2JvXX0oRTApOyExPT09aG4uY29sSGVhZGVycz9fcj1udWxsOmhuLmNvbHVtbnMmJlUyKGhuLmNvbHVtbnMpJiZobi5jb2x1bW5zKHowKSYmaG4uY29sdW1ucyh6MCkudGl0bGU/X3I9''@;'; put 'put ''aG4uY29sdW1ucyh6MCkudGl0bGU6aG4uY29sdW1ucyYmaG4uY29sdW1uc1tFMF0mJmhuLmNvbHVtbnNbRTBdLnRpdGxlP19yPWhuLmNvbHVtbnNbRTBdLnRpdGxlOkFycmF5LmlzQXJyYXkoaG4uY29sSGVhZGVycykmJnZvaWQgMCE9PWhuLmNvbEhlYWRlcnNbRTBdP19yPWhuLmNvbEhlYWRl''@;'; put 'put ''cnNbRTBdOlUyKGhuLmNvbEhlYWRlcnMpP19yPWhuLmNvbEhlYWRlcnMoRTApOmhuLmNvbEhlYWRlcnMmJiJzdHJpbmciIT10eXBlb2YgaG4uY29sSGVhZGVycyYmIm51bWJlciIhPXR5cGVvZiBobi5jb2xIZWFkZXJzJiYoX3I9V2VlKHpuKSl9cmV0dXJuIF9yfSx0aGlzLl9nZXRDb2xXaWR0''@;'; put 'put ''aEZyb21TZXR0aW5ncz1mdW5jdGlvbihIbil7dmFyIHpuO2lmKEhuPj0wJiYoem49SS5nZXRDZWxsTWV0YSgwLEhuKS53aWR0aCksKHZvaWQgMD09PXpufHx6bj09PWhuLndpZHRoKSYmKHpuPWhuLmNvbFdpZHRocyksbnVsbCE9em4pe3N3aXRjaChpZCh6bikpe2Nhc2Uib2JqZWN0Ijp6bj16''@;'; put 'put ''bltIbl07YnJlYWs7Y2FzZSJmdW5jdGlvbiI6em49em4oSG4pfSJzdHJpbmciPT10eXBlb2Ygem4mJih6bj1wYXJzZUludCh6biwxMCkpfXJldHVybiB6bn0sdGhpcy5nZXRDb2xXaWR0aD1mdW5jdGlvbihIbil7dmFyIHpuPUkuX2dldENvbFdpZHRoRnJvbVNldHRpbmdzKEhuKTtyZXR1cm4g''@;'; put 'put ''dm9pZCAwPT09KHpuPUkucnVuSG9va3MoIm1vZGlmeUNvbFdpZHRoIix6bixIbikpJiYoem49WGRlLkRFRkFVTFRfV0lEVEgpLHpufSx0aGlzLl9nZXRSb3dIZWlnaHRGcm9tU2V0dGluZ3M9ZnVuY3Rpb24oSG4pe3ZhciB6bj1obi5yb3dIZWlnaHRzO2lmKG51bGwhPXpuKXtzd2l0Y2goaWQo''@;'; put 'put ''em4pKXtjYXNlIm9iamVjdCI6em49em5bSG5dO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnpuPXpuKEhuKX0ic3RyaW5nIj09dHlwZW9mIHpuJiYoem49cGFyc2VJbnQoem4sMTApKX1yZXR1cm4gem59LHRoaXMuZ2V0Um93SGVpZ2h0PWZ1bmN0aW9uKEhuKXt2YXIgem49SS5fZ2V0Um93SGVpZ2h0''@;'; put 'put ''RnJvbVNldHRpbmdzKEhuKTtyZXR1cm4gSS5ydW5Ib29rcygibW9kaWZ5Um93SGVpZ2h0Iix6bixIbil9LHRoaXMuY291bnRTb3VyY2VSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIF9lLmNvdW50Um93cygpfSx0aGlzLmNvdW50U291cmNlQ29scz1mdW5jdGlvbigpe3JldHVybiBfZS5jb3VudEZp''@;'; put 'put ''cnN0Um93S2V5cygpfSx0aGlzLmNvdW50Um93cz1mdW5jdGlvbigpe3JldHVybiBjZS5nZXRMZW5ndGgoKX0sdGhpcy5jb3VudENvbHM9ZnVuY3Rpb24oKXt2YXIgSG49aG4ubWF4Q29scyx6bj10aGlzLmNvbHVtbkluZGV4TWFwcGVyLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCk7cmV0''@;'; put 'put ''dXJuIE1hdGgubWluKEhuLHpuKX0sdGhpcy5jb3VudFJlbmRlcmVkUm93cz1mdW5jdGlvbigpe3JldHVybiBJLnZpZXcuX3d0LmRyYXduP0kudmlldy5fd3Qud3RUYWJsZS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpOi0xfSx0aGlzLmNvdW50VmlzaWJsZVJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''SS52aWV3Ll93dC5kcmF3bj9JLnZpZXcuX3d0Lnd0VGFibGUuZ2V0VmlzaWJsZVJvd3NDb3VudCgpOi0xfSx0aGlzLmNvdW50UmVuZGVyZWRDb2xzPWZ1bmN0aW9uKCl7cmV0dXJuIEkudmlldy5fd3QuZHJhd24/SS52aWV3Ll93dC53dFRhYmxlLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCk6''@;'; put 'put ''LTF9LHRoaXMuY291bnRWaXNpYmxlQ29scz1mdW5jdGlvbigpe3JldHVybiBJLnZpZXcuX3d0LmRyYXduP0kudmlldy5fd3Qud3RUYWJsZS5nZXRWaXNpYmxlQ29sdW1uc0NvdW50KCk6LTF9LHRoaXMuY291bnRFbXB0eVJvd3M9ZnVuY3Rpb24oKXt2YXIgSG49YXJndW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx6bj0wO3JldHVybiBjZWUoSS5jb3VudFJvd3MoKS0xLGZ1bmN0aW9uKF9yKXtpZihJLmlzRW1wdHlSb3coX3IpKXpuKz0xO2Vsc2UgaWYoITA9PT1IbilyZXR1cm4hMX0pLHpufSx0aGlzLmNvdW50RW1wdHlDb2xzPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIEhuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoSS5jb3VudFJvd3MoKTwxKXJldHVybiAwO3ZhciB6bj0wO3JldHVybiBjZWUoSS5jb3VudENvbHMoKS0xLGZ1bmN0aW9uKF9yKXtpZihJLmlzRW1wdHlDb2woX3Ip''@;'; put 'put ''KXpuKz0xO2Vsc2UgaWYoITA9PT1IbilyZXR1cm4hMX0pLHpufSx0aGlzLmlzRW1wdHlSb3c9ZnVuY3Rpb24oSG4pe3JldHVybiBobi5pc0VtcHR5Um93LmNhbGwoSSxIbil9LHRoaXMuaXNFbXB0eUNvbD1mdW5jdGlvbihIbil7cmV0dXJuIGhuLmlzRW1wdHlDb2wuY2FsbChJLEhuKX0sdGhp''@;'; put 'put ''cy5zZWxlY3RDZWxsPWZ1bmN0aW9uKEhuLHpuLF9yLFFyKXt2YXIgdWk9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSx1MD0hKGFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdKXx8YXJndW1lbnRzWzVdO3Jl''@;'; put 'put ''dHVybiF1MShIbikmJiF1MSh6bikmJnRoaXMuc2VsZWN0Q2VsbHMoW1tIbix6bixfcixRcl1dLHVpLHUwKX0sdGhpcy5zZWxlY3RDZWxscz1mdW5jdGlvbigpe3ZhciBIbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W1tdXSx6bj0hKGFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLF9yPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07ITE9PT16biYmKEM9ITApO3ZhciBRcj1Bci5zZWxlY3RDZWxscyhIbik7cmV0dXJu''@;'; put 'put ''IFFyJiZfciYmSS5saXN0ZW4oKSxDPSExLFFyfSx0aGlzLnNlbGVjdENvbHVtbnM9ZnVuY3Rpb24oSG4pe3ZhciB6bj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06SG47cmV0dXJuIEFyLnNlbGVjdENvbHVtbnMoSG4sem4pfSx0aGlzLnNl''@;'; put 'put ''bGVjdFJvd3M9ZnVuY3Rpb24oSG4pe3ZhciB6bj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06SG47cmV0dXJuIEFyLnNlbGVjdFJvd3MoSG4sem4pfSx0aGlzLmRlc2VsZWN0Q2VsbD1mdW5jdGlvbigpe0FyLmRlc2VsZWN0KCl9LHRoaXMu''@;'; put 'put ''c2VsZWN0QWxsPWZ1bmN0aW9uKCl7dmFyIEhuPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sem49SG4mJnRoaXMuaGFzUm93SGVhZGVycygpLF9yPUhuJiZ0aGlzLmhhc0NvbEhlYWRlcnMoKTtDPSEwLEFyLnNlbGVjdEFsbCh6bixf''@;'; put 'put ''ciksQz0hMX07dmFyIEgwPWZ1bmN0aW9uKHpuLF9yKXtyZXR1cm4gem4uZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KF9yLDEsITApfTtmdW5jdGlvbiBvbyhIbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdUaGUgIicuY29uY2F0KEhuLCciIG1ldGhvZCBjYW5ub3QgYmUg''@;'; put 'put ''Y2FsbGVkIGJlY2F1c2UgdGhpcyBIYW5kc29udGFibGUgaW5zdGFuY2UgaGFzIGJlZW4gZGVzdHJveWVkJykpfX10aGlzLnNjcm9sbFZpZXdwb3J0VG89ZnVuY3Rpb24oSG4sem4pe3ZhciBfcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJd''@;'; put 'put ''LFFyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sdWk9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSx1MD0hX3IsWGk9IVFyLEUwPUhuLHowPXpuO2lmKHVpKXt2YXIgQ289TnVt''@;'; put 'put ''YmVyLmlzSW50ZWdlcihIbiksYm89TnVtYmVyLmlzSW50ZWdlcih6biksemE9Q28/SDAodGhpcy5yb3dJbmRleE1hcHBlcixIbik6dm9pZCAwLEpzPWJvP0gwKHRoaXMuY29sdW1uSW5kZXhNYXBwZXIsem4pOnZvaWQgMDtpZihudWxsPT09emF8fG51bGw9PT1KcylyZXR1cm4hMTtFMD1Dbz9J''@;'; put 'put ''LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoemEpOnZvaWQgMCx6MD1ibz9JLmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoSnMpOnZvaWQgMH12YXIgQmE9TnVtYmVyLmlzSW50ZWdlcihFMCksWHM9TnVtYmVyLmlzSW50''@;'; put 'put ''ZWdlcih6MCk7cmV0dXJuIEJhJiZYcz9JLnZpZXcuc2Nyb2xsVmlld3BvcnQoSS5fY3JlYXRlQ2VsbENvb3JkcyhFMCx6MCksdTAsUXIsX3IsWGkpOkJhJiYhMT09PVhzP0kudmlldy5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoRTAsdTAsX3IpOiEoIVhzfHwhMSE9PUJhKSYmSS52aWV3LnNj''@;'; put 'put ''cm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KHowLFFyLFhpKX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7aWYoSS5fY2xlYXJUaW1lb3V0cygpLEkuX2NsZWFySW1tZWRpYXRlcygpLEkudmlldyYmSS52aWV3LmRlc3Ryb3koKSxfZSYmX2UuZGVzdHJveSgpLF9lPW51bGwsdGhpcy5nZXRTaG9y''@;'; put 'put ''dGN1dE1hbmFnZXIoKS5kZXN0cm95KCksJHQuY2xlYXJDYWNoZSgpLHQ0ZShJKSl7dmFyIEhuPXRoaXMucm9vdERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNob3QtZGlzcGxheS1saWNlbnNlLWluZm8iKTtIbiYmSG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChIbil9Q3AoSS5yb290RWxlbWVu''@;'; put 'put ''dCksai5kZXN0cm95KCksTmUmJk5lLmRlc3Ryb3koKSxJLmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7SS5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyQWxsKCksSS5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyQWxsKCksaXIuZ2V0SXRlbXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHpuKXtE''@;'; put 'put ''Zyh6biwyKVsxXS5kZXN0cm95KCl9KSxpci5jbGVhcigpLEkucnVuSG9va3MoImFmdGVyRGVzdHJveSIpfSwhMCksVm8uZ2V0U2luZ2xldG9uKCkuZGVzdHJveShJKSxabChJLGZ1bmN0aW9uKHpuLF9yLFFyKXtVMih6bik/UXJbX3JdPW9vKF9yKToiZ3VpZCIhPT1fciYmKFFyW19yXT1udWxs''@;'; put 'put ''KX0pLEkuaXNEZXN0cm95ZWQ9ITAsY2UmJmNlLmRlc3Ryb3koKSxJLnJvd0luZGV4TWFwcGVyPW51bGwsSS5jb2x1bW5JbmRleE1hcHBlcj1udWxsLGNlPW51bGwsUmU9bnVsbCxBcj1udWxsLE5lPW51bGwsST1udWxsfSx0aGlzLmdldEFjdGl2ZUVkaXRvcj1mdW5jdGlvbigpe3JldHVybiBO''@;'; put 'put ''ZS5nZXRBY3RpdmVFZGl0b3IoKX0sdGhpcy5nZXRQbHVnaW49ZnVuY3Rpb24oSG4pe3ZhciB6bj10ZChIbik7cmV0dXJuIlVuZG9SZWRvIj09PXpuP3RoaXMudW5kb1JlZG86aXIuZ2V0SXRlbSh6bil9LHRoaXMuZ2V0UGx1Z2luTmFtZT1mdW5jdGlvbihIbil7cmV0dXJuIEhuPT09dGhpcy51''@;'; put 'put ''bmRvUmVkbz90aGlzLnVuZG9SZWRvLmNvbnN0cnVjdG9yLlBMVUdJTl9LRVk6aXIuZ2V0SWQoSG4pfSx0aGlzLmdldEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIEl9LHRoaXMuYWRkSG9vaz1mdW5jdGlvbihIbix6bil7Vm8uZ2V0U2luZ2xldG9uKCkuYWRkKEhuLHpuLEkpfSx0aGlzLmhh''@;'; put 'put ''c0hvb2s9ZnVuY3Rpb24oSG4pe3JldHVybiBWby5nZXRTaW5nbGV0b24oKS5oYXMoSG4sSSl8fFZvLmdldFNpbmdsZXRvbigpLmhhcyhIbil9LHRoaXMuYWRkSG9va09uY2U9ZnVuY3Rpb24oSG4sem4pe1ZvLmdldFNpbmdsZXRvbigpLm9uY2UoSG4sem4sSSl9LHRoaXMucmVtb3ZlSG9vaz1m''@;'; put 'put ''dW5jdGlvbihIbix6bil7Vm8uZ2V0U2luZ2xldG9uKCkucmVtb3ZlKEhuLHpuLEkpfSx0aGlzLnJ1bkhvb2tzPWZ1bmN0aW9uKEhuLHpuLF9yLFFyLHVpLHUwLFhpKXtyZXR1cm4gVm8uZ2V0U2luZ2xldG9uKCkucnVuKEksSG4sem4sX3IsUXIsdWksdTAsWGkpfSx0aGlzLmdldFRyYW5zbGF0''@;'; put 'put ''ZWRQaHJhc2U9ZnVuY3Rpb24oSG4sem4pe3JldHVybiBzU2UoaG4ubGFuZ3VhZ2UsSG4sem4pfSx0aGlzLnRvSFRNTD1mdW5jdGlvbigpe3JldHVybiB6M2Uodil9LHRoaXMudG9UYWJsZUVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgSG49di5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2''@;'; put 'put ''Iik7cmV0dXJuIEhuLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJiZWdpbiIsejNlKHYpKSxIbi5maXJzdEVsZW1lbnRDaGlsZH0sdGhpcy50aW1lb3V0cz1bXSx0aGlzLl9yZWdpc3RlclRpbWVvdXQ9ZnVuY3Rpb24oSG4pe3ZhciB6bj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxfcj1IbjsiZnVuY3Rpb24iPT10eXBlb2YgX3ImJihfcj1zZXRUaW1lb3V0KF9yLHpuKSksdGhpcy50aW1lb3V0cy5wdXNoKF9yKX0sdGhpcy5fY2xlYXJUaW1lb3V0cz1mdW5jdGlvbigpe0dyKHRoaXMudGltZW91dHMsZnVuY3Rpb24oSG4pe2Ns''@;'; put 'put ''ZWFyVGltZW91dChIbil9KX0sdGhpcy5pbW1lZGlhdGVzPVtdLHRoaXMuX3JlZ2lzdGVySW1tZWRpYXRlPWZ1bmN0aW9uKEhuKXt0aGlzLmltbWVkaWF0ZXMucHVzaChzZXRJbW1lZGlhdGUoSG4pKX0sdGhpcy5fY2xlYXJJbW1lZGlhdGVzPWZ1bmN0aW9uKCl7R3IodGhpcy5pbW1lZGlhdGVz''@;'; put 'put ''LGZ1bmN0aW9uKEhuKXtjbGVhckltbWVkaWF0ZShIbil9KX0sdGhpcy5fcmVmcmVzaEJvcmRlcnM9ZnVuY3Rpb24oKXt2YXIgSG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx6bj0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO05lLmRlc3Ryb3lFZGl0b3IoSG4pLEkudmlldy5yZW5kZXIoKSx6biYmQXIuaXNTZWxlY3RlZCgpJiZOZS5wcmVwYXJlRWRpdG9yKCl9LHRoaXMuaXNSdGw9ZnVuY3Rpb24oKXtyZXR1cm4icnRsIj09PUkucm9vdFdpbmRvdy5nZXRDb21wdXRl''@;'; put 'put ''ZFN0eWxlKEkucm9vdEVsZW1lbnQpLmRpcmVjdGlvbn0sdGhpcy5pc0x0cj1mdW5jdGlvbigpe3JldHVybiFJLmlzUnRsKCl9LHRoaXMuZ2V0RGlyZWN0aW9uRmFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIEkuaXNMdHIoKT8xOi0xfTt2YXIgaG89eWV0KHtoYW5kbGVFdmVudDpmdW5jdGlvbih6''@;'; put 'put ''bil7cmV0dXJuIEkuaXNMaXN0ZW5pbmcoKSYmdm9pZCAwIT09KG51bGw9PXpuP3ZvaWQgMDp6bi5rZXkpfSxiZWZvcmVLZXlEb3duOmZ1bmN0aW9uKHpuKXtyZXR1cm4gdi5ydW5Ib29rcygiYmVmb3JlS2V5RG93biIsem4pfSxhZnRlcktleURvd246ZnVuY3Rpb24oem4pe3YuaXNEZXN0cm95''@;'; put 'put ''ZWR8fEkucnVuSG9va3MoImFmdGVyRG9jdW1lbnRLZXlEb3duIix6bil9LG93bmVyV2luZG93OnRoaXMucm9vdFdpbmRvd30pO3RoaXMuZ2V0U2hvcnRjdXRNYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuIGhvfTt2YXIgVGE9aG8uYWRkQ29udGV4dCgiZ3JpZCIpLEpsPXtydW5Pbmx5SWY6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gRW8oSS5nZXRTZWxlY3RlZCgpKSYmSS5jb3VudFJlbmRlcmVkUm93cygpPjAmJkkuY291bnRSZW5kZXJlZENvbHMoKT4wfSxncm91cDpFZXR9O2hvLnNldEFjdGl2ZUNvbnRleHROYW1lKCJncmlkIiksVGEuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250cm9sL01l''@;'; put 'put ''dGEiLCJBIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7SS5zZWxlY3RBbGwoKX19LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciB6bj1JLmdldFNlbGVjdGVkUmFuZ2UoKSxfcj16blt6bi5sZW5ndGgtMV0uaGlnaGxpZ2h0LFFyPV9y''@;'; put 'put ''LnJvdyx1aT1fci5jb2wsdTA9SS5nZXREYXRhQXRDZWxsKFFyLHVpKSxYaT1uZXcgTWFwLEUwPTA7RTA8em4ubGVuZ3RoO0UwKyspem5bRTBdLmZvckFsbChmdW5jdGlvbih6MCxDbyl7ejA+PTAmJkNvPj0wJiYoejAhPT1Rcnx8Q28hPT11aSkmJihJLmdldENlbGxNZXRhKHowLENvKS5yZWFk''@;'; put 'put ''T25seXx8WGkuc2V0KCIiLmNvbmNhdCh6MCwieCIpLmNvbmNhdChDbyksW3owLENvLHUwXSkpfSk7SS5zZXREYXRhQXRDZWxsKEFycmF5LmZyb20oWGkudmFsdWVzKCkpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIEkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5nZXRDZWxsc0NvdW50''@;'; put 'put ''KCk+MX19LHtrZXlzOltbIkFycm93VXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtBci50cmFuc2Zvcm1TdGFydCgtMSwwKX19LHtrZXlzOltbIkFycm93VXAiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXtBci5zZXRSYW5nZVN0YXJ0KEkuX2Ny''@;'; put 'put ''ZWF0ZUNlbGxDb29yZHMoSS5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoMCwxKSxJLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LmNvbCkpfX0se2tleXM6W1siQXJyb3dVcCIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7QXIudHJhbnNmb3Jt''@;'; put 'put ''RW5kKC0xLDApfX0se2tleXM6W1siQXJyb3dVcCIsIlNoaWZ0IiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHpuPUkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxfcj16bi5mcm9tLFFyPXpuLnRvLHVpPUkucm93SW5kZXhNYXBwZXIuZ2V0''@;'; put 'put ''TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSk7QXIuc2V0UmFuZ2VTdGFydChfci5jbG9uZSgpKSxBci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKHVpLFFyLmNvbCkpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4hKEkuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigp''@;'; put 'put ''fHxJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSl9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtBci50cmFuc2Zvcm1TdGFydCgxLDApfX0se2tleXM6W1siQXJyb3dEb3duIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKCl7QXIuc2V0UmFuZ2VTdGFydChJLl9jcmVhdGVDZWxsQ29vcmRzKEkucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEkuY291bnRSb3dzKCktMSwtMSksSS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5jb2wpKX19LHtrZXlz''@;'; put 'put ''OltbIkFycm93RG93biIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7QXIudHJhbnNmb3JtRW5kKDEsMCl9fSx7a2V5czpbWyJBcnJvd0Rvd24iLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciB6bj1JLmdldFNlbGVj''@;'; put 'put ''dGVkUmFuZ2VMYXN0KCksX3I9em4uZnJvbSxRcj16bi50byx1aT1JLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChJLmNvdW50Um93cygpLTEsLTEpO0FyLnNldFJhbmdlU3RhcnQoX3IuY2xvbmUoKSksQXIuc2V0UmFuZ2VFbmQoSS5fY3JlYXRlQ2VsbENvb3Jkcyh1''@;'; put 'put ''aSxRci5jb2wpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIShJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8SS5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7QXIudHJh''@;'; put 'put ''bnNmb3JtU3RhcnQoMCwtMSpJLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93TGVmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciB6bixfcj1JLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LnJvdyxR''@;'; put 'put ''cj0oem49SS5jb2x1bW5JbmRleE1hcHBlcikuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4LmFwcGx5KHpuLHp3KEkuaXNSdGwoKT9bSS5jb3VudENvbHMoKS0xLC0xXTpbMCwxXSkpO0FyLnNldFJhbmdlU3RhcnQoSS5fY3JlYXRlQ2VsbENvb3JkcyhfcixRcikpfX0se2tleXM6W1siQXJyb3dM''@;'; put 'put ''ZWZ0IiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtBci50cmFuc2Zvcm1FbmQoMCwtMSpJLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93TGVmdCIsIlNoaWZ0IiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHpuLF9yPUkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxRcj1fci5mcm9tLHVpPV9yLnRvLHUwPSh6bj1JLmNvbHVtbkluZGV4TWFwcGVyKS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXguYXBwbHkoem4sencoSS5pc1J0bCgpP1tJLmNvdW50Q29scygpLTEsLTFdOlswLDFdKSk7QXIuc2V0UmFu''@;'; put 'put ''Z2VTdGFydChRci5jbG9uZSgpKSxBci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKHVpLnJvdyx1MCkpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4hKEkuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHxJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIo''@;'; put 'put ''KSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7QXIudHJhbnNmb3JtU3RhcnQoMCxJLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93UmlnaHQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgem4sX3I9SS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csUXI9KHpuPUkuY29sdW1uSW5kZXhNYXBwZXIpLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleC5hcHBseSh6bix6dyhJLmlzUnRsKCk/WzAsMV06W0kuY291bnRDb2xzKCktMSwtMV0pKTtBci5zZXRSYW5n''@;'; put 'put ''ZVN0YXJ0KEkuX2NyZWF0ZUNlbGxDb29yZHMoX3IsUXIpKX19LHtrZXlzOltbIkFycm93UmlnaHQiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe0FyLnRyYW5zZm9ybUVuZCgwLEkuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX0se2tleXM6W1siQXJyb3dSaWdodCIsIlNoaWZ0IiwiQ29u''@;'; put 'put ''dHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHpuLF9yPUkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxRcj1fci5mcm9tLHVpPV9yLnRvLHUwPSh6bj1JLmNvbHVtbkluZGV4TWFwcGVyKS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXguYXBwbHkoem4s''@;'; put 'put ''encoSS5pc1J0bCgpP1swLDFdOltJLmNvdW50Q29scygpLTEsLTFdKSk7QXIuc2V0UmFuZ2VTdGFydChRci5jbG9uZSgpKSxBci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKHVpLnJvdyx1MCkpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4hKEkuc2VsZWN0aW9uLmlzU2Vs''@;'; put 'put ''ZWN0ZWRCeUNvcm5lcigpfHxJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSl9fSx7a2V5czpbWyJIb21lIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHpuPXBhcnNlSW50KEkuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCwxMCksX3I9''@;'; put 'put ''SS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csUXI9SS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoem4sMSk7QXIuc2V0UmFuZ2VTdGFydChJLl9jcmVhdGVDZWxsQ29vcmRzKF9yLFFyKSl9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBJLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9fSx7a2V5czpbWyJIb21lIiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtBci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKEFyLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLmZyb20ucm93''@;'; put 'put ''LEkuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSkpKX19LHtrZXlzOltbIkhvbWUiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgem49cGFyc2VJbnQoSS5nZXRTZXR0aW5ncygpLmZpeGVkUm93c1Rv''@;'; put 'put ''cCwxMCksX3I9cGFyc2VJbnQoSS5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0LDEwKSxRcj1JLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh6biwxKSx1aT1JLmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfciwxKTtBci5z''@;'; put 'put ''ZXRSYW5nZVN0YXJ0KEkuX2NyZWF0ZUNlbGxDb29yZHMoUXIsdWkpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIEkudmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX19LHtrZXlzOltbIkVuZCJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlv''@;'; put 'put ''bigpe0FyLnNldFJhbmdlU3RhcnQoSS5fY3JlYXRlQ2VsbENvb3JkcyhJLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LnJvdyxJLmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChJLmNvdW50Q29scygpLTEsLTEpKSl9LHJ1bk9ubHlJZjpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBJLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9fSx7a2V5czpbWyJFbmQiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe0FyLnNldFJhbmdlRW5kKEkuX2NyZWF0ZUNlbGxDb29yZHMoQXIuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCku''@;'; put 'put ''ZnJvbS5yb3csSS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSS5jb3VudENvbHMoKS0xLC0xKSkpfX0se2tleXM6W1siRW5kIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHpuPXBhcnNlSW50KEkuZ2V0''@;'; put 'put ''U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20sMTApLF9yPUkucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEkuY291bnRSb3dzKCktem4tMSwtMSksUXI9SS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSS5jb3VudENvbHMoKS0xLC0x''@;'; put 'put ''KTtBci5zZXRSYW5nZVN0YXJ0KEkuX2NyZWF0ZUNlbGxDb29yZHMoX3IsUXIpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIEkudmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX19LHtrZXlzOltbIlBhZ2VVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe0Fy''@;'; put 'put ''LnRyYW5zZm9ybVN0YXJ0KC1JLmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtrZXlzOltbIlBhZ2VVcCIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIF9yPUkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS50byxRcj1NYXRoLm1heChfci5yb3ctSS5jb3VudFZpc2libGVSb3dzKCks''@;'; put 'put ''MCksdWk9SS5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoUXIsMSk7aWYobnVsbCE9PXVpKXt2YXIgdTA9SS5fY3JlYXRlQ2VsbENvb3Jkcyh1aSxfci5jb2wpLFhpPV9yLnJvdy1JLnZpZXcuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3coKSxFMD1NYXRoLm1heCh1MC5y''@;'; put 'put ''b3ctWGksMCk7QXIuc2V0UmFuZ2VFbmQodTApLEkuc2Nyb2xsVmlld3BvcnRUbyhFMCl9fX0se2tleXM6W1siUGFnZURvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtBci50cmFuc2Zvcm1TdGFydChJLmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtrZXlzOltbIlBhZ2VEb3duIiwiU2hpZnQi''@;'; put 'put ''XV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgX3I9SS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLnRvLFFyPU1hdGgubWluKF9yLnJvdytJLmNvdW50VmlzaWJsZVJvd3MoKSxJLmNvdW50Um93cygpLTEpLHVpPUkucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFFyLC0x''@;'; put 'put ''KTtpZihudWxsIT09dWkpe3ZhciB1MD1JLl9jcmVhdGVDZWxsQ29vcmRzKHVpLF9yLmNvbCksWGk9X3Iucm93LUkudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLEUwPU1hdGgubWluKHUwLnJvdy1YaSxJLmNvdW50Um93cygpLTEpO0FyLnNldFJhbmdlRW5kKHUwKSxJLnNjcm9sbFZp''@;'; put 'put ''ZXdwb3J0VG8oRTApfX19LHtrZXlzOltbIlRhYiJdXSxjYWxsYmFjazpmdW5jdGlvbih6bil7dmFyIF9yPSJmdW5jdGlvbiI9PXR5cGVvZiBobi50YWJNb3Zlcz9obi50YWJNb3Zlcyh6bik6aG4udGFiTW92ZXM7QXIudHJhbnNmb3JtU3RhcnQoX3Iucm93LF9yLmNvbCwhMCl9fSx7a2V5czpb''@;'; put 'put ''WyJTaGlmdCIsIlRhYiJdXSxjYWxsYmFjazpmdW5jdGlvbih6bil7dmFyIF9yPSJmdW5jdGlvbiI9PXR5cGVvZiBobi50YWJNb3Zlcz9obi50YWJNb3Zlcyh6bik6aG4udGFiTW92ZXM7QXIudHJhbnNmb3JtU3RhcnQoLV9yLnJvdywtX3IuY29sKX19XSxKbCksdGRlKCkuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihIbil7dmFyIHpuPW16KEhuKTtpci5hZGRJdGVtKEhuLG5ldyB6bih2KSl9KSxWby5nZXRTaW5nbGV0b24oKS5ydW4oSSwiY29uc3RydWN0Iil9dmFyIHVNZT17X2hvb2tzU3RvcmFnZTpPYmplY3QuY3JlYXRlKG51bGwpLGFkZEhvb2s6ZnVuY3Rpb24oZyxoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''aG9va3NTdG9yYWdlW2ddfHwodGhpcy5faG9va3NTdG9yYWdlW2ddPVtdKSx0aGlzLmhvdC5hZGRIb29rKGcsaCksdGhpcy5faG9va3NTdG9yYWdlW2ddLnB1c2goaCksdGhpc30scmVtb3ZlSG9va3NCeUtleTpmdW5jdGlvbihnKXt2YXIgaD10aGlzO0dyKHRoaXMuX2hvb2tzU3RvcmFnZVtn''@;'; put 'put ''XXx8W10sZnVuY3Rpb24odil7aC5ob3QucmVtb3ZlSG9vayhnLHYpfSl9LGNsZWFySG9va3M6ZnVuY3Rpb24oKXt2YXIgZz10aGlzO1psKHRoaXMuX2hvb2tzU3RvcmFnZSxmdW5jdGlvbihoLHYpe3JldHVybiBnLnJlbW92ZUhvb2tzQnlLZXkodil9KSx0aGlzLl9ob29rc1N0b3JhZ2U9e319''@;'; put 'put ''fTtNZyh1TWUsIk1JWElOX05BTUUiLCJob29rc1JlZlJlZ2lzdGVyZXIiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3QgVGV0PXVNZTtmdW5jdGlvbiBBNmUoZCl7cmV0dXJuKEE2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5p''@;'; put 'put ''dGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGNN''@;'; put 'put ''ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHk2ZShkLGcpe3JldHVybih5NmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBGZXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1BNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEhldChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz''@;'; put 'put ''bid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEF0ZShkKXtyZXR1cm4oQXRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgp''@;'; put 'put ''fSkoZCl9ZnVuY3Rpb24gZk1lKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaE1lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVt''@;'; put 'put ''ZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZE1lKGQsZyxoKXtyZXR1cm4gZyYmaE1lKGQucHJvdG90eXBlLGcpLGgmJmhNZShkLGgp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9dmFyIHJmPU9iamVjdC5mcmVlemUoe1ZJUkdJTjoiU1RBVEVfVklSR0lOIixFRElUSU5HOiJTVEFURV9FRElUSU5HIixXQUlUSU5HOiJTVEFURV9XQUlUSU5HIixGSU5JU0hFRDoiU1RBVEVfRklO''@;'; put 'put ''SVNIRUQifSksdzZlPSJiYXNlRWRpdG9yIixWTz1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7Zk1lKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmluc3RhbmNlPWcsdGhpcy5zdGF0ZT1yZi5WSVJHSU4sdGhpcy5fb3BlbmVkPSExLHRoaXMuX2Z1bGxFZGl0TW9kZT0hMSx0aGlzLl9jbG9zZUNh''@;'; put 'put ''bGxiYWNrPW51bGwsdGhpcy5URD1udWxsLHRoaXMucm93PW51bGwsdGhpcy5jb2w9bnVsbCx0aGlzLnByb3A9bnVsbCx0aGlzLm9yaWdpbmFsVmFsdWU9bnVsbCx0aGlzLmNlbGxQcm9wZXJ0aWVzPW51bGwsdGhpcy5pbml0KCl9cmV0dXJuIGRNZShkLFt7a2V5OiJfZmlyZUNhbGxiYWNrcyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5fY2xvc2VDYWxsYmFjayYmKHRoaXMuX2Nsb3NlQ2FsbGJhY2soaCksdGhpcy5fY2xvc2VDYWxsYmFjaz1udWxsKX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhyb3cgRXJy''@;'; put 'put ''b3IoIkVkaXRvciBnZXRWYWx1ZSgpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiRWRpdG9yIHNldFZhbHVlKCkgbWV0aG9kIHVuaW1wbGVtZW50ZWQiKX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dGhyb3cgRXJyb3IoIkVkaXRvciBvcGVuKCkgbWV0aG9kIHVuaW1wbGVtZW50ZWQiKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IEVycm9yKCJFZGl0b3IgY2xvc2UoKSBtZXRob2QgdW5pbXBsZW1lbnRlZCIpfX0se2tleToicHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2LHksQyxJLGope3RoaXMuVEQ9Qyx0aGlzLnJvdz1oLHRoaXMuY29sPXYsdGhpcy5wcm9wPXksdGhpcy5vcmlnaW5hbFZhbHVlPUksdGhpcy5jZWxsUHJvcGVydGllcz1qLHRoaXMuc3RhdGU9cmYuVklSR0lOfX0se2tleToiZXh0ZW5kIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihoKXshZnVuY3Rpb24gQmV0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZn''@;'; put 'put ''LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnk2ZShkLGcpfSh5LGgpO3ZhciB2PWZ1bmN0aW9uIFBldChkKXt2YXIgZz1mdW5j''@;'; put 'put ''dGlvbiBOZXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1''@;'; put 'put ''ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1BdGUoZCk7aWYoZyl7dmFyIEM9QXRlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qo''@;'; put 'put ''dixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBGZXQodGhpcyx5KX19KHkpO2Z1bmN0aW9uIHkoKXtyZXR1cm4gZk1lKHRoaXMseSksdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGRNZSh5KX0odGhpcy5jb25zdHJ1Y3Rvcil9fSx7a2V5''@;'; put 'put ''OiJzYXZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIEMsSSxqLGNlLHk9dGhpcztpZih2KXt2YXIgX2U9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCk7Qz1NYXRoLm1heChNYXRoLm1pbihfZVswXSxfZVsyXSksMCksST1NYXRoLm1heChNYXRoLm1pbihfZVsxXSxfZVszXSksMCks''@;'; put 'put ''aj1NYXRoLm1heChfZVswXSxfZVsyXSksY2U9TWF0aC5tYXgoX2VbMV0sX2VbM10pfWVsc2V7dmFyIFJlPVt0aGlzLnJvdyx0aGlzLmNvbCxudWxsLG51bGxdO0M9UmVbMF0sST1SZVsxXSxqPVJlWzJdLGNlPVJlWzNdfXZhciBOZT10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENv''@;'; put 'put ''b3JkcyIsQyxJKTtpZihBcnJheS5pc0FycmF5KE5lKSl7dmFyIEtlPWZ1bmN0aW9uIElldChkLGcpe3JldHVybiBmdW5jdGlvbiBSZXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIE9ldChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7''@;'; put 'put ''eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIExldChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gY01l''@;'; put 'put ''KGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1l''@;'; put 'put ''bnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBjTWUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIERldCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUg''@;'; put 'put ''aW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KE5lLDIpO0M9S2VbMF0sST1LZVsxXX12YXIgQnQ9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29u''@;'; put 'put ''dGV4dCgiZWRpdG9yIiksJHQ9e3J1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBFbyh5LmhvdC5nZXRTZWxlY3RlZCgpKX0sZ3JvdXA6dzZlfTt0aGlzLmlzSW5GdWxsRWRpdE1vZGUoKSYmQnQuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7''@;'; put 'put ''eS5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC0xLDApfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KDEsMCl9fSx7a2V5czpbWyJBcnJvd0xlZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt5Lmhv''@;'; put 'put ''dC5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoMCwtMSp5LmhvdC5nZXREaXJlY3Rpb25GYWN0b3IoKSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KDAseS5ob3QuZ2V0RGlyZWN0aW9uRmFjdG9yKCkp''@;'; put 'put ''fX1dLCR0KSx0aGlzLmhvdC5wb3B1bGF0ZUZyb21BcnJheShDLEksaCxqLGNlLCJlZGl0Iil9fSx7a2V5OiJiZWdpbkVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodGhpcy5zdGF0ZT09PXJmLlZJUkdJTil7dmFyIHk9dGhpcy5ob3QsQz15LnJvd0luZGV4TWFwcGVyLmdldFJlbmRl''@;'; put 'put ''cmFibGVGcm9tVmlzdWFsSW5kZXgodGhpcy5yb3cpLEk9eS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMuY29sKTtpZih5LnZpZXcuc2Nyb2xsVmlld3BvcnQoeS5fY3JlYXRlQ2VsbENvb3JkcyhDLEkpKSx0aGlzLnN0YXRlPXJmLkVESVRJTkcs''@;'; put 'put ''dGhpcy5pc0luRnVsbEVkaXRNb2RlKCkpe3ZhciBqPSJzdHJpbmciPT10eXBlb2YgaD9oOnExKHRoaXMub3JpZ2luYWxWYWx1ZSk7dGhpcy5zZXRWYWx1ZShqKX10aGlzLm9wZW4odiksdGhpcy5fb3BlbmVkPSEwLHRoaXMuZm9jdXMoKSx5LnZpZXcucmVuZGVyKCkseS5ydW5Ib29rcygiYWZ0''@;'; put 'put ''ZXJCZWdpbkVkaXRpbmciLHRoaXMucm93LHRoaXMuY29sKX19fSx7a2V5OiJmaW5pc2hFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEksQz10aGlzO2lmKHkpe3ZhciBqPXRoaXMuX2Nsb3NlQ2FsbGJhY2s7dGhpcy5fY2xvc2VDYWxsYmFjaz1mdW5jdGlvbihOZSl7aiYmaihO''@;'; put 'put ''ZSkseShOZSksQy5ob3Qudmlldy5yZW5kZXIoKX19aWYoIXRoaXMuaXNXYWl0aW5nKCkpe3ZhciBfZT10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKTtpZihfZS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKHc2ZSksX2UucmVtb3ZlU2hvcnRjdXRzQnlH''@;'; put 'put ''cm91cCh1ZWUpLHRoaXMuc3RhdGU9PT1yZi5WSVJHSU4pcmV0dXJuIHZvaWQgdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe0MuX2ZpcmVDYWxsYmFja3MoITApfSk7aWYodGhpcy5zdGF0ZT09PXJmLkVESVRJTkcpe2lmKGgpcmV0dXJuIHRoaXMuY2FuY2VsQ2hhbmdlcygp''@;'; put 'put ''LHZvaWQgdGhpcy5ob3Qudmlldy5yZW5kZXIoKTt2YXIgUmU9dGhpcy5nZXRWYWx1ZSgpO0k9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS50cmltV2hpdGVzcGFjZT9bWyJzdHJpbmciPT10eXBlb2YgUmU/U3RyaW5nLnByb3RvdHlwZS50cmltLmNhbGwoUmV8fCIiKTpSZV1dOltbUmVdXSx0aGlz''@;'; put 'put ''LnN0YXRlPXJmLldBSVRJTkcsdGhpcy5zYXZlVmFsdWUoSSx2KSx0aGlzLmhvdC5nZXRDZWxsVmFsaWRhdG9yKHRoaXMuY2VsbFByb3BlcnRpZXMpP3RoaXMuaG90LmFkZEhvb2tPbmNlKCJwb3N0QWZ0ZXJWYWxpZGF0ZSIsZnVuY3Rpb24oTmUpe0Muc3RhdGU9cmYuRklOSVNIRUQsQy5kaXNj''@;'; put 'put ''YXJkRWRpdG9yKE5lKX0pOih0aGlzLnN0YXRlPXJmLkZJTklTSEVELHRoaXMuZGlzY2FyZEVkaXRvcighMCkpfX19fSx7a2V5OiJjYW5jZWxDaGFuZ2VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RhdGU9cmYuRklOSVNIRUQsdGhpcy5kaXNjYXJkRWRpdG9yKCl9fSx7a2V5OiJkaXNjYXJk''@;'; put 'put ''RWRpdG9yIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnN0YXRlPT09cmYuRklOSVNIRUQmJighMT09PWgmJiEwIT09dGhpcy5jZWxsUHJvcGVydGllcy5hbGxvd0ludmFsaWQ/KHRoaXMuaG90LnNlbGVjdENlbGwodGhpcy5yb3csdGhpcy5jb2wpLHRoaXMuZm9jdXMoKSx0aGlzLnN0YXRlPXJm''@;'; put 'put ''LkVESVRJTkcsdGhpcy5fZmlyZUNhbGxiYWNrcyghMSkpOih0aGlzLmNsb3NlKCksdGhpcy5fb3BlbmVkPSExLHRoaXMuX2Z1bGxFZGl0TW9kZT0hMSx0aGlzLnN0YXRlPXJmLlZJUkdJTix0aGlzLl9maXJlQ2FsbGJhY2tzKCEwKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRB''@;'; put 'put ''Y3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIpKSl9fSx7a2V5OiJlbmFibGVGdWxsRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZnVsbEVkaXRNb2RlPSEwfX0se2tleToiaXNJbkZ1bGxFZGl0TW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnVsbEVkaXRNb2RlfX0s''@;'; put 'put ''e2tleToiaXNPcGVuZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29wZW5lZH19LHtrZXk6ImlzV2FpdGluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZT09PXJmLldBSVRJTkd9fSx7a2V5OiJnZXRFZGl0ZWRDZWxsUmVjdCIsdmFsdWU6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgaCx2PXRoaXMuZ2V0RWRpdGVkQ2VsbCgpO2lmKHYpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0LEM9eS53dE92ZXJsYXlzLEk9eS53dFZpZXdwb3J0LGo9dGhpcy5ob3Qucm9vdFdpbmRvdyxjZT16dSh2KSxfZT13Mih2KSxSZT16dSh0aGlzLmhvdC5yb290RWxlbWVudCksTmU9dzIodGhp''@;'; put 'put ''cy5ob3Qucm9vdEVsZW1lbnQpLEtlPUMudG9wT3ZlcmxheS5ob2xkZXIsaHQ9Qy5pbmxpbmVTdGFydE92ZXJsYXkuaG9sZGVyLEJ0PUtlIT09aj9LZS5zY3JvbGxUb3A6MCwkdD1odCE9PWo/aHQuc2Nyb2xsTGVmdDowLGhuPWouaW5uZXJXaWR0aC1SZS5sZWZ0LU5lLGlyPShudWxsIT09KGg9''@;'; put 'put ''Qy5nZXRQYXJlbnRPdmVybGF5KHYpKSYmdm9pZCAwIT09aD9oOnRoaXMuaG90LnZpZXcuX3d0KS53dFRhYmxlLHByPWlyLm5hbWUsRXI9WyJtYXN0ZXIiLCJpbmxpbmVfc3RhcnQiXS5pbmNsdWRlcyhwcik/QnQ6MCxBcj1bIm1hc3RlciIsInRvcCIsImJvdHRvbSJdLmluY2x1ZGVzKHByKT8k''@;'; put 'put ''dDowLF9pPWNlLnRvcC1SZS50b3AtKGNlLnRvcD09PVJlLnRvcD8wOjEpLUVyLEtpPTA7S2k9dGhpcy5ob3QuaXNSdGwoKT9qLmlubmVyV2lkdGgtY2UubGVmdC1fZS1obi0xK0FyOmNlLmxlZnQtUmUubGVmdC0xLUFyLFsidG9wIiwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRl''@;'; put 'put ''cyhwcikmJihfaSs9Qy50b3BPdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKSksWyJpbmxpbmVfc3RhcnQiLCJ0b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciJdLmluY2x1ZGVzKHByKSYmKEtpKz1NYXRoLmFicyhDLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRPdmVybGF5T2Zmc2V0KCkpKTt2YXIga289''@;'; put 'put ''dGhpcy5ob3QuaGFzQ29sSGVhZGVycygpLE9vPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodGhpcy5yb3cpLGJhPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodGhpcy5jb2wpLG9hPXRo''@;'; put 'put ''aXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCktdGhpcy5ob3Qudmlldy5fd3QuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIik7KGtvJiZPbzw9MHx8T289PT1vYSkmJihfaSs9MSksYmE8PTAmJihLaSs9MSk7dmFyIHFhPUkucm93c1JlbmRlckNh''@;'; put 'put ''bGN1bGF0b3Iuc3RhcnRQb3NpdGlvbixPcz1JLmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sSDA9TWF0aC5hYnMoQy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKSksb289Qy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCksaG89UGModGhp''@;'; put 'put ''cy5ob3Qucm9vdERvY3VtZW50KSxUYT12Lm9mZnNldFRvcCtxYS1vbyxKbD0wO2lmKHRoaXMuaG90LmlzUnRsKCkpe3ZhciBIbj12Lm9mZnNldExlZnQ7Smw9SG4+PTA/aXIuZ2V0V2lkdGgoKS12Lm9mZnNldExlZnQ6TWF0aC5hYnMoSG4pLEpsKz1Pcy1IMC1fZX1lbHNlIEpsPXYub2Zmc2V0''@;'; put 'put ''TGVmdCtPcy1IMDt2YXIgem49QncodGhpcy5URCx0aGlzLmhvdC5yb290V2luZG93KSxfcj10aGlzLmhvdC5pc1J0bCgpPyJib3JkZXJSaWdodFdpZHRoIjoiYm9yZGVyTGVmdFdpZHRoIixRcj1wYXJzZUludCh6bltfcl0sMTApPjA/MDoxLHVpPXBhcnNlSW50KHpuLmJvcmRlclRvcFdpZHRo''@;'; put 'put ''LDEwKT4wPzA6MSx1MD13Mih2KStRcixYaT1CMSh2KSt1aSxFMD1DX2UoS2UpP2hvOjAsejA9a19lKGh0KT9obzowLENvPXRoaXMuaG90LnZpZXcubWF4aW11bVZpc2libGVFbGVtZW50V2lkdGgoSmwpLUUwK1FyO3JldHVybnt0b3A6X2ksc3RhcnQ6S2ksaGVpZ2h0OlhpLG1heEhlaWdodDpN''@;'; put 'put ''YXRoLm1heCh0aGlzLmhvdC52aWV3Lm1heGltdW1WaXNpYmxlRWxlbWVudEhlaWdodChUYSktejArdWksMjMpLHdpZHRoOnUwLG1heFdpZHRoOkNvfX19fSx7a2V5OiJnZXRFZGl0ZWRDZWxsc0xheWVyQ2xhc3MiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuY2hlY2tFZGl0b3JTZWN0''@;'; put 'put ''aW9uKCkpe2Nhc2UiaW5saW5lLXN0YXJ0IjpyZXR1cm4iaHRfY2xvbmVfbGVmdCBodF9jbG9uZV9pbmxpbmVfc3RhcnQiO2Nhc2UiYm90dG9tIjpyZXR1cm4iaHRfY2xvbmVfYm90dG9tIjtjYXNlImJvdHRvbS1pbmxpbmUtc3RhcnQtY29ybmVyIjpyZXR1cm4iaHRfY2xvbmVfYm90dG9tX2xl''@;'; put 'put ''ZnRfY29ybmVyIGh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyIjtjYXNlInRvcCI6cmV0dXJuImh0X2Nsb25lX3RvcCI7Y2FzZSJ0b3AtaW5saW5lLXN0YXJ0LWNvcm5lciI6cmV0dXJuImh0X2Nsb25lX3RvcF9sZWZ0X2Nvcm5lciBodF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0''@;'; put 'put ''X2Nvcm5lciI7ZGVmYXVsdDpyZXR1cm4iaHRfY2xvbmVfbWFzdGVyIn19fSx7a2V5OiJnZXRFZGl0ZWRDZWxsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRDZWxsKHRoaXMucm93LHRoaXMuY29sLCEwKX19LHtrZXk6ImNoZWNrRWRpdG9yU2VjdGlvbiIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgaD10aGlzLmhvdC5jb3VudFJvd3MoKSx2PSIiO3JldHVybiB0aGlzLnJvdzx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c1RvcD92PXRoaXMuY29sPHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQ/InRvcC1pbmxpbmUtc3RhcnQtY29y''@;'; put 'put ''bmVyIjoidG9wIjp0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbSYmdGhpcy5yb3c+PWgtdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20/dj10aGlzLmNvbDx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0PyJib3R0b20taW5s''@;'; put 'put ''aW5lLXN0YXJ0LWNvcm5lciI6ImJvdHRvbSI6dGhpcy5jb2w8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCYmKHY9ImlubGluZS1zdGFydCIpLHZ9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iYmFzZSJ9fV0pLGR9KCk7ZnVuY3Rp''@;'; put 'put ''b24gamV0KCl7dmFyIGcsZD17bWluSGVpZ2h0OjIwMCxtYXhIZWlnaHQ6MzAwLG1pbldpZHRoOjEwMCxtYXhXaWR0aDozMDB9LGg9ZG9jdW1lbnQuYm9keSx2PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSx5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKSxDPWZ1bmN0aW9uKGh0''@;'; put 'put ''LEJ0LCR0KXtodC5hZGRFdmVudExpc3RlbmVyKEJ0LCR0LCExKX0sST1mdW5jdGlvbihodCxCdCwkdCl7aHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihCdCwkdCwhMSl9LGo9ZnVuY3Rpb24oaHQpe3ZhciBCdCwkdDtodD8vXlthLXpBLVogXC4sXFxcL1x8MC05XSQvLnRlc3QoaHQpfHwoaHQ9Ii4i''@;'; put 'put ''KTpodD0iIix2b2lkIDAhPT12LnRleHRDb250ZW50P3YudGV4dENvbnRlbnQ9Zy52YWx1ZStodDp2LmRhdGE9Zy52YWx1ZStodCx5LnN0eWxlLmZvbnRTaXplPU5lKGcpLmZvbnRTaXplLHkuc3R5bGUuZm9udEZhbWlseT1OZShnKS5mb250RmFtaWx5LHkuc3R5bGUud2hpdGVTcGFjZT0icHJl''@;'; put 'put ''IixoLmFwcGVuZENoaWxkKHkpLEJ0PXkuY2xpZW50V2lkdGgrMixoLnJlbW92ZUNoaWxkKHkpLGcuc3R5bGUuaGVpZ2h0PWQubWluSGVpZ2h0KyJweCIsZy5zdHlsZS53aWR0aD1kLm1pbldpZHRoPkJ0P2QubWluV2lkdGgrInB4IjpCdD5kLm1heFdpZHRoP2QubWF4V2lkdGgrInB4IjpCdCsi''@;'; put 'put ''cHgiLGQubWluSGVpZ2h0PigkdD1nLnNjcm9sbEhlaWdodD9nLnNjcm9sbEhlaWdodC0xOjApP2cuc3R5bGUuaGVpZ2h0PWQubWluSGVpZ2h0KyJweCI6ZC5tYXhIZWlnaHQ8JHQ/KGcuc3R5bGUuaGVpZ2h0PWQubWF4SGVpZ2h0KyJweCIsZy5zdHlsZS5vdmVyZmxvd1k9InZpc2libGUiKTpn''@;'; put 'put ''LnN0eWxlLmhlaWdodD0kdCsicHgifSxjZT1mdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KGosMCl9O2Z1bmN0aW9uIE5lKEtlKXtyZXR1cm4gS2UuY3VycmVudFN0eWxlfHxkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKEtlKX1yZXR1cm57aW5pdDpmdW5jdGlvbiho''@;'; put 'put ''dCxCdCwkdCl7IWZ1bmN0aW9uKGh0LEJ0LCR0KXtnPWh0LGZ1bmN0aW9uKGh0KXtpZihodCYmaHQubWluSGVpZ2h0KWlmKCJpbmhlcml0Ij09aHQubWluSGVpZ2h0KWQubWluSGVpZ2h0PWcuY2xpZW50SGVpZ2h0O2Vsc2V7dmFyIEJ0PXBhcnNlSW50KGh0Lm1pbkhlaWdodCk7aXNOYU4oQnQp''@;'; put 'put ''fHwoZC5taW5IZWlnaHQ9QnQpfWlmKGh0JiZodC5tYXhIZWlnaHQpaWYoImluaGVyaXQiPT1odC5tYXhIZWlnaHQpZC5tYXhIZWlnaHQ9Zy5jbGllbnRIZWlnaHQ7ZWxzZXt2YXIgJHQ9cGFyc2VJbnQoaHQubWF4SGVpZ2h0KTtpc05hTigkdCl8fChkLm1heEhlaWdodD0kdCl9aWYoaHQmJmh0''@;'; put 'put ''Lm1pbldpZHRoKWlmKCJpbmhlcml0Ij09aHQubWluV2lkdGgpZC5taW5XaWR0aD1nLmNsaWVudFdpZHRoO2Vsc2V7dmFyIGhuPXBhcnNlSW50KGh0Lm1pbldpZHRoKTtpc05hTihobil8fChkLm1pbldpZHRoPWhuKX1pZihodCYmaHQubWF4V2lkdGgpaWYoImluaGVyaXQiPT1odC5tYXhXaWR0''@;'; put 'put ''aClkLm1heFdpZHRoPWcuY2xpZW50V2lkdGg7ZWxzZXt2YXIgRG49cGFyc2VJbnQoaHQubWF4V2lkdGgpO2lzTmFOKERuKXx8KGQubWF4V2lkdGg9RG4pfXkuZmlyc3RDaGlsZHx8KHkuY2xhc3NOYW1lPSJhdXRvUmVzaXplIix5LnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIseS5hcHBl''@;'; put 'put ''bmRDaGlsZCh2KSl9KEJ0KSwiVEVYVEFSRUEiPT1nLm5vZGVOYW1lJiYoZy5zdHlsZS5yZXNpemU9Im5vbmUiLGcuc3R5bGUub3ZlcmZsb3dZPSIiLGcuc3R5bGUuaGVpZ2h0PWQubWluSGVpZ2h0KyJweCIsZy5zdHlsZS5taW5XaWR0aD1kLm1pbldpZHRoKyJweCIsZy5zdHlsZS5tYXhXaWR0''@;'; put 'put ''aD1kLm1heFdpZHRoKyJweCIsZy5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpLCR0JiYoQyhnLCJjaGFuZ2UiLGopLEMoZywiY3V0IixjZSksQyhnLCJwYXN0ZSIsY2UpLEMoZywiZHJvcCIsY2UpLEMoZywia2V5ZG93biIsY2UpLEMoZywiZm9jdXMiLGopLEMoZywiY29tcG9zaXRpb25zdGFy''@;'; put 'put ''dCIsY2UpLEMoZywiY29tcG9zaXRpb251cGRhdGUiLGNlKSxDKGcsImNvbXBvc2l0aW9uZW5kIixjZSkpLGooKX0oaHQsQnQsJHQpfSx1bk9ic2VydmU6ZnVuY3Rpb24oKXtJKGcsImNoYW5nZSIsaiksSShnLCJjdXQiLGNlKSxJKGcsInBhc3RlIixjZSksSShnLCJkcm9wIixjZSksSShnLCJr''@;'; put 'put ''ZXlkb3duIixjZSksSShnLCJmb2N1cyIsaiksSShnLCJjb21wb3NpdGlvbnN0YXJ0IixjZSksSShnLCJjb21wb3NpdGlvbnVwZGF0ZSIsY2UpLEkoZywiY29tcG9zaXRpb25lbmQiLGNlKX0scmVzaXplOmp9fWZ1bmN0aW9uIHBNZShkLGcpe2Zvcih2YXIgaD1NM2UoZyksdj1nLnZhbHVlLnNw''@;'; put 'put ''bGl0KCJcbiIpLHk9aCxDPTAsST0wO0k8di5sZW5ndGg7SSsrKXswIT09SSYmKEMrPXZbSS0xXS5sZW5ndGgrMSk7dmFyIGNlPUMrdltJXS5sZW5ndGg7aWYoImhvbWUiPT09ZD95PUM6ImVuZCI9PT1kJiYoeT1jZSksaDw9Y2UpYnJlYWt9ZnooZyx5KX1mdW5jdGlvbiBiNmUoZCl7cmV0dXJu''@;'; put 'put ''KGI2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9s''@;'; put 'put ''JiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGdNZShkLGcpe3JldHVybiBmdW5jdGlvbiBXZXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIEdldChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZp''@;'; put 'put ''bmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3Ro''@;'; put 'put ''IT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHpldChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1''@;'; put 'put ''cm4gbU1lKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigi''@;'; put 'put ''QXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBtTWUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIFpldCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRl''@;'; put 'put ''cmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbU1lKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gdk1lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYm''@;'; put 'put ''Jih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gUHooKXtyZXR1cm4gUHo9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVFldChnLGgp''@;'; put 'put ''O2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sUHouYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFFldChkLGcpe2Zvcig7IU9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9SlMoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gXzZlKGQsZyl7cmV0dXJuKF82ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2''@;'; put 'put ''Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEtldChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWI2ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0''@;'; put 'put ''dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gQU1lKGQpfWZ1bmN0aW9uIEFNZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9''@;'; put 'put ''ZnVuY3Rpb24gSlMoZCl7cmV0dXJuKEpTPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9STIoVk8sVGV0KTt2YXIgeXRlPSJodF9lZGl0''@;'; put 'put ''b3JfaGlkZGVuIix5TWU9InRleHRFZGl0b3IiLFhTPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBKZXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rp''@;'; put 'put ''b24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmXzZlKGQsZyl9KGgs''@;'; put 'put ''ZCk7dmFyIGc9ZnVuY3Rpb24gWGV0KGQpe3ZhciBnPWZ1bmN0aW9uICRldCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4h''@;'; put 'put ''MDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUpTKGQpO2lmKGcpe3ZhciBDPUpTKHRoaXMp''@;'; put 'put ''LmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBLZXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIFlldChkLGcpe2lmKCEoZCBpbnN0YW5jZW9m''@;'; put 'put ''IGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5ldmVudE1hbmFnZXI9bmV3IFAxKEFNZSh5KSkseS5hdXRvUmVzaXplPWpldCgpLHkuVEVYVEFSRUE9dm9pZCAwLHkudGV4dGFyZWFT''@;'; put 'put ''dHlsZT12b2lkIDAseS5URVhUQVJFQV9QQVJFTlQ9dm9pZCAwLHkudGV4dGFyZWFQYXJlbnRTdHlsZT12b2lkIDAseS5sYXllckNsYXNzPXZvaWQgMCx5LmNyZWF0ZUVsZW1lbnRzKCkseS5iaW5kRXZlbnRzKCkseS5ob3QuYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4geS5kZXN0cm95KCl9KSx5fXJldHVybiBmdW5jdGlvbiBVZXQoZCxnLGgpe2cmJnZNZShkLnByb3RvdHlwZSxnKSxoJiZ2TWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuVEVYVEFSRUEudmFsdWV9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5URVhUQVJFQS52YWx1ZT15fX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMucmVmcmVzaERpbWVuc2lvbnMoKSx0aGlzLnNo''@;'; put 'put ''b3dFZGl0YWJsZUVsZW1lbnQoKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZWRpdG9yIiksdGhpcy5hZGRIb29rKCJhZnRlckRvY3VtZW50S2V5RG93biIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25BZnRlckRvY3VtZW50S2V5RG93bihJKX0p''@;'; put 'put ''LHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYXV0b1Jlc2l6ZS51bk9ic2VydmUoKSx0aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuVEVYVEFSRUEmJnRoaXMuaG90Lmxpc3RlbigpLHRoaXMuaGlk''@;'; put 'put ''ZUVkaXRhYmxlRWxlbWVudCgpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMucmVtb3ZlSG9va3NCeUtleSgiYWZ0ZXJEb2N1bWVudEtleURvd24iKX19LHtrZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGosY2UsX2Upe3ZhciBSZT10aGlzLnN0YXRlO2lmKFB6KEpT''@;'; put 'put ''KGgucHJvdG90eXBlKSwicHJlcGFyZSIsdGhpcykuY2FsbCh0aGlzLHksQyxJLGosY2UsX2UpLCFfZS5yZWFkT25seSl7dGhpcy5yZWZyZXNoRGltZW5zaW9ucyghMCk7dmFyIEtlPV9lLmZyYWdtZW50U2VsZWN0aW9uO19lLmFsbG93SW52YWxpZCYmKHRoaXMuVEVYVEFSRUEudmFsdWU9IiIp''@;'; put 'put ''LFJlIT09cmYuRklOSVNIRUQmJnRoaXMuaGlkZUVkaXRhYmxlRWxlbWVudCgpLCFLZSYmIW04KCkmJnRoaXMuZm9jdXMoKX19fSx7a2V5OiJiZWdpbkVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKHksQyl7dGhpcy5zdGF0ZT09PXJmLlZJUkdJTiYmKHRoaXMuVEVYVEFSRUEudmFsdWU9IiIsUHoo''@;'; put 'put ''SlMoaC5wcm90b3R5cGUpLCJiZWdpbkVkaXRpbmciLHRoaXMpLmNhbGwodGhpcyx5LEMpKX19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuVEVYVEFSRUEuc2VsZWN0KCksZnoodGhpcy5URVhUQVJFQSx0aGlzLlRFWFRBUkVBLnZhbHVlLmxlbmd0aCl9fSx7a2V5OiJjcmVh''@;'; put 'put ''dGVFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5yb290RG9jdW1lbnQ7dGhpcy5URVhUQVJFQT15LmNyZWF0ZUVsZW1lbnQoIlRFWFRBUkVBIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwiIiksdGhpcy5URVhUQVJFQS50YWJJ''@;'; put 'put ''bmRleD0tMSxQMCh0aGlzLlRFWFRBUkVBLCJoYW5kc29udGFibGVJbnB1dCIpLHRoaXMudGV4dGFyZWFTdHlsZT10aGlzLlRFWFRBUkVBLnN0eWxlLHRoaXMudGV4dGFyZWFTdHlsZS53aWR0aD0wLHRoaXMudGV4dGFyZWFTdHlsZS5oZWlnaHQ9MCx0aGlzLnRleHRhcmVhU3R5bGUub3ZlcmZs''@;'; put 'put ''b3dZPSJ2aXNpYmxlIix0aGlzLlRFWFRBUkVBX1BBUkVOVD15LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFAwKHRoaXMuVEVYVEFSRUFfUEFSRU5ULCJoYW5kc29udGFibGVJbnB1dEhvbGRlciIpLFhhKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHRoaXMubGF5ZXJDbGFzcykmJnVsKHRoaXMuVEVYVEFS''@;'; put 'put ''RUFfUEFSRU5ULHRoaXMubGF5ZXJDbGFzcyksUDAodGhpcy5URVhUQVJFQV9QQVJFTlQseXRlKSx0aGlzLnRleHRhcmVhUGFyZW50U3R5bGU9dGhpcy5URVhUQVJFQV9QQVJFTlQuc3R5bGUsdGhpcy5URVhUQVJFQV9QQVJFTlQuYXBwZW5kQ2hpbGQodGhpcy5URVhUQVJFQSksdGhpcy5ob3Qu''@;'; put 'put ''cm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5URVhUQVJFQV9QQVJFTlQpfX0se2tleToiaGlkZUVkaXRhYmxlRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXsoZV9lKCl8fHFiZSgpKSYmKHRoaXMudGV4dGFyZWFTdHlsZS50ZXh0SW5kZW50PSItOTk5OTlweCIpLHRoaXMudGV4dGFyZWFT''@;'; put 'put ''dHlsZS5vdmVyZmxvd1k9InZpc2libGUiLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZS5vcGFjaXR5PSIwIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUuaGVpZ2h0PSIxcHgiLHVsKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHRoaXMubGF5ZXJDbGFzcyksUDAodGhpcy5URVhUQVJFQV9QQVJFTlQs''@;'; put 'put ''eXRlKX19LHtrZXk6InNob3dFZGl0YWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLmhlaWdodD0iIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3ZlcmZsb3c9IiIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLnBvc2l0aW9uPSIiLHRoaXMu''@;'; put 'put ''dGV4dGFyZWFQYXJlbnRTdHlsZVt0aGlzLmhvdC5pc1J0bCgpPyJsZWZ0IjoicmlnaHQiXT0iYXV0byIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLm9wYWNpdHk9IjEiLHRoaXMudGV4dGFyZWFTdHlsZS50ZXh0SW5kZW50PSIiLHRoaXMudGV4dGFyZWFTdHlsZS5vdmVyZmxvd1k9ImhpZGRl''@;'; put 'put ''biI7dmFyIHk9dGhpcy5URVhUQVJFQV9QQVJFTlQuY2hpbGROb2RlcyxDPSExO3JhKHkubGVuZ3RoLTEsZnVuY3Rpb24oSSl7aWYoWGEoeVtJXSwiaGFuZHNvbnRhYmxlRWRpdG9yIikpcmV0dXJuIEM9ITAsITF9KSxYYSh0aGlzLlRFWFRBUkVBX1BBUkVOVCx5dGUpJiZ1bCh0aGlzLlRFWFRB''@;'; put 'put ''UkVBX1BBUkVOVCx5dGUpLEM/KHRoaXMubGF5ZXJDbGFzcz0iaHRfZWRpdG9yX3Zpc2libGUiLFAwKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHRoaXMubGF5ZXJDbGFzcykpOih0aGlzLmxheWVyQ2xhc3M9dGhpcy5nZXRFZGl0ZWRDZWxsc0xheWVyQ2xhc3MoKSxQMCh0aGlzLlRFWFRBUkVBX1BB''@;'; put 'put ''UkVOVCx0aGlzLmxheWVyQ2xhc3MpKX19LHtrZXk6InJlZnJlc2hWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC50b1BoeXNpY2FsUm93KHRoaXMucm93KSxDPXRoaXMuaG90LmdldFNvdXJjZURhdGFBdENlbGwoeSx0aGlzLmNvbCk7dGhpcy5vcmlnaW5hbFZhbHVlPUMs''@;'; put 'put ''dGhpcy5zZXRWYWx1ZShDKSx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCl9fSx7a2V5OiJyZWZyZXNoRGltZW5zaW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKHRoaXMuc3RhdGU9PT1y''@;'; put 'put ''Zi5FRElUSU5HfHx5KXtpZih0aGlzLlREPXRoaXMuZ2V0RWRpdGVkQ2VsbCgpLCF0aGlzLlREKXJldHVybiB2b2lkKHl8fHRoaXMuY2xvc2UoKSk7dmFyIEM9dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpLEk9Qy50b3Asaj1DLnN0YXJ0LGNlPUMud2lkdGgsX2U9Qy5tYXhXaWR0aCxSZT1DLmhl''@;'; put 'put ''aWdodCxOZT1DLm1heEhlaWdodDt0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUudG9wPSIiLmNvbmNhdChJLCJweCIpLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZVt0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQiXT0iIi5jb25jYXQoaiwicHgiKSx0aGlzLnNob3dFZGl0YWJsZUVsZW1l''@;'; put 'put ''bnQoKTt2YXIgS2U9QncodGhpcy5URCx0aGlzLmhvdC5yb290V2luZG93KTt0aGlzLlRFWFRBUkVBLnN0eWxlLmZvbnRTaXplPUtlLmZvbnRTaXplLHRoaXMuVEVYVEFSRUEuc3R5bGUuZm9udEZhbWlseT1LZS5mb250RmFtaWx5LHRoaXMuVEVYVEFSRUEuc3R5bGUuYmFja2dyb3VuZENvbG9y''@;'; put 'put ''PXRoaXMuVEQuc3R5bGUuYmFja2dyb3VuZENvbG9yO3ZhciBodD1Cdyh0aGlzLlRFWFRBUkVBKSxCdD1wYXJzZUludChodC5wYWRkaW5nTGVmdCwxMCkrcGFyc2VJbnQoaHQucGFkZGluZ1JpZ2h0LDEwKSwkdD1wYXJzZUludChodC5wYWRkaW5nVG9wLDEwKStwYXJzZUludChodC5wYWRkaW5n''@;'; put 'put ''Qm90dG9tLDEwKSxobj1jZS1CdCxEbj1SZS0kdCxpcj1fZS1CdCxwcj1OZS0kdDt0aGlzLmF1dG9SZXNpemUuaW5pdCh0aGlzLlRFWFRBUkVBLHttaW5XaWR0aDpNYXRoLm1pbihobixpciksbWluSGVpZ2h0Ok1hdGgubWluKERuLHByKSxtYXhXaWR0aDppcixtYXhIZWlnaHQ6cHJ9LCEwKX19''@;'; put 'put ''fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLlRFWFRBUkVBLCJjdXQiLGZ1bmN0aW9uKEMpe3JldHVybiBDLnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lcih0aGlzLlRFWFRBUkVBLCJwYXN0ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIEMuc3RvcFByb3BhZ2F0aW9uKCl9KSxjM2UoKSYmdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLlRFWFRBUkVBLCJmb2N1c291dCIsZnVuY3Rpb24oKXtyZXR1cm4geS5m''@;'; put 'put ''aW5pc2hFZGl0aW5nKCExKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHkucmVmcmVzaERpbWVuc2lvbnMoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IixmdW5jdGlvbigpe3JldHVybiB5LnJlZnJlc2hE''@;'; put 'put ''aW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ29sdW1uUmVzaXplIixmdW5jdGlvbigpe3kucmVmcmVzaERpbWVuc2lvbnMoKSx5LmZvY3VzKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUm93UmVzaXplIixmdW5jdGlvbigpe3kucmVmcmVzaERpbWVuc2lvbnMoKSx5LmZvY3VzKCl9''@;'; put 'put ''KX19LHtrZXk6ImFsbG93S2V5RXZlbnRQcm9wYWdhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLmNsZWFySG9va3MoKX19LHtrZXk6InJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsST10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKSxjZT1mdW5jdGlvbigpe3kuaG90LnJvb3REb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsITEsIlxuIil9O0kuYWRkU2hvcnRjdXRzKFt7a2V5''@;'; put 'put ''czpbWyJUYWIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oUmUpe3ZhciBOZT15LmhvdC5nZXRTZXR0aW5ncygpLEtlPSJmdW5jdGlvbiI9PXR5cGVvZiBOZS50YWJNb3Zlcz9OZS50YWJNb3ZlcyhSZSk6TmUudGFiTW92ZXM7eS5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KEtlLnJvdyxLZS5j''@;'; put 'put ''b2wsITApfX0se2tleXM6W1siU2hpZnQiLCJUYWIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oUmUpe3ZhciBOZT15LmhvdC5nZXRTZXR0aW5ncygpLEtlPSJmdW5jdGlvbiI9PXR5cGVvZiBOZS50YWJNb3Zlcz9OZS50YWJNb3ZlcyhSZSk6TmUudGFiTW92ZXM7eS5ob3Quc2VsZWN0aW9uLnRyYW5z''@;'; put 'put ''Zm9ybVN0YXJ0KC1LZS5yb3csLUtlLmNvbCl9fSx7a2V5czpbWyJDb250cm9sIiwiRW50ZXIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gY2UoKSwhMX0scnVuT25seUlmOmZ1bmN0aW9uKFJlKXtyZXR1cm4heS5ob3Quc2VsZWN0aW9uLmlzTXVsdGlwbGUoKSYmIVJlLmFsdEtleX0s''@;'; put 'put ''cmVsYXRpdmVUb0dyb3VwOmd6LHBvc2l0aW9uOiJiZWZvcmUifSx7a2V5czpbWyJNZXRhIiwiRW50ZXIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gY2UoKSwhMX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIXkuaG90LnNlbGVjdGlvbi5pc011bHRpcGxlKCl9LHJlbGF0aXZl''@;'; put 'put ''VG9Hcm91cDpneixwb3NpdGlvbjoiYmVmb3JlIn0se2tleXM6W1siQWx0IiwiRW50ZXIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gY2UoKSwhMX0scmVsYXRpdmVUb0dyb3VwOmd6LHBvc2l0aW9uOiJiZWZvcmUifSx7a2V5czpbWyJQYWdlVXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24o''@;'; put 'put ''KXt5LmhvdC5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLXkuaG90LmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtrZXlzOltbIlBhZ2VEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KHkuaG90LmNvdW50VmlzaWJsZVJvd3MoKSwwKX19''@;'; put 'put ''LHtrZXlzOltbIkhvbWUiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oUmUsTmUpe3BNZShnTWUoTmUsMSlbMF0seS5URVhUQVJFQSl9fSx7a2V5czpbWyJFbmQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oUmUsTmUpe3BNZShnTWUoTmUsMSlbMF0seS5URVhUQVJFQSl9fSx7a2V5czpbWyJDb250cm9sL01l''@;'; put 'put ''dGEiLCJaIl1dLHByZXZlbnREZWZhdWx0OiExLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe3kuYXV0b1Jlc2l6ZS5yZXNpemUoKX0sMTApfX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiU2hpZnQiLCJaIl1dLHByZXZlbnREZWZhdWx0OiEx''@;'; put 'put ''LGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe3kuYXV0b1Jlc2l6ZS5yZXNpemUoKX0sMTApfX1dLHtydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gRW8oeS5ob3QuZ2V0U2VsZWN0ZWQoKSl9LGdyb3VwOnlNZX0pfX0se2tleToidW5yZWdp''@;'; put 'put ''c3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQz10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKTtDLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAodWVlKSxDLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoeU1lKSxDLnJlbW92ZVNob3J0Y3V0''@;'; put 'put ''c0J5R3JvdXAodzZlKX19LHtrZXk6Im9uQWZ0ZXJEb2N1bWVudEtleURvd24iLHZhbHVlOmZ1bmN0aW9uKHkpey0xPT09W1lvLkFSUk9XX1VQLFlvLkFSUk9XX1JJR0hULFlvLkFSUk9XX0RPV04sWW8uQVJST1dfTEVGVF0uaW5kZXhPZih5LmtleUNvZGUpJiZ0aGlzLmF1dG9SZXNpemUucmVz''@;'; put 'put ''aXplKFN0cmluZy5mcm9tQ2hhckNvZGUoeS5rZXlDb2RlKSl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4idGV4dCJ9fV0pLGh9KFZPKTtmdW5jdGlvbiBGeihkLGcsaCx2LHksQyxJKXt2YXIgaj1bXSxjZT1bXTtJLmNsYXNzTmFtZSYmUDAoZyxJLmNsYXNz''@;'; put 'put ''TmFtZSksSS5yZWFkT25seSYmai5wdXNoKEkucmVhZE9ubHlDZWxsQ2xhc3NOYW1lKSwhMT09PUkudmFsaWQmJkkuaW52YWxpZENlbGxDbGFzc05hbWU/ai5wdXNoKEkuaW52YWxpZENlbGxDbGFzc05hbWUpOmNlLnB1c2goSS5pbnZhbGlkQ2VsbENsYXNzTmFtZSksITE9PT1JLndvcmRXcmFw''@;'; put 'put ''JiZJLm5vV29yZFdyYXBDbGFzc05hbWUmJmoucHVzaChJLm5vV29yZFdyYXBDbGFzc05hbWUpLCFDJiZJLnBsYWNlaG9sZGVyJiZqLnB1c2goSS5wbGFjZWhvbGRlckNlbGxDbGFzc05hbWUpLHVsKGcsY2UpLFAwKGcsail9ZnVuY3Rpb24gR3coZCxnLGgsdix5LEMsSSl7RnouYXBwbHkodGhp''@;'; put 'put ''cyxbZCxnLGgsdix5LEMsSV0pO3ZhciBqPUM7aWYoIWomJkkucGxhY2Vob2xkZXImJihqPUkucGxhY2Vob2xkZXIpLGo9cTEoaiksZC5nZXRTZXR0aW5ncygpLnRyaW1XaGl0ZXNwYWNlJiYoaj1qLnRyaW0oKSksSS5yZW5kZXJlclRlbXBsYXRlKXtDcChnKTt2YXIgY2U9ZC5yb290RG9jdW1l''@;'; put 'put ''bnQuY3JlYXRlRWxlbWVudCgiVEVNUExBVEUiKTtjZS5zZXRBdHRyaWJ1dGUoImJpbmQiLCJ7e319IiksY2UuaW5uZXJIVE1MPUkucmVuZGVyZXJUZW1wbGF0ZSxIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKGNlKSxjZS5tb2RlbD1kLmdldFNvdXJjZURhdGFBdFJvdyhoKSxnLmFwcGVu''@;'; put 'put ''ZENoaWxkKGNlKX1lbHNlIFJ3KGcsail9RnouUkVOREVSRVJfVFlQRT0iYmFzZSIsR3cuUkVOREVSRVJfVFlQRT0idGV4dCI7dmFyIHdNZT17Q0VMTF9UWVBFOiJ0ZXh0IixlZGl0b3I6WFMscmVuZGVyZXI6R3d9O2Z1bmN0aW9uIFJ2KGQsZyl7dmFyIGg9bmV3IHY2ZShkLGd8fHt9LGU0ZSk7''@;'; put 'put ''cmV0dXJuIGguaW5pdCgpLGh9eTgod01lKSxSdi5lZGl0b3JzPXtCYXNlRWRpdG9yOlZPfSxSdi5Db3JlPWZ1bmN0aW9uKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gbmV3IHY2ZShkLGcsZTRlKX0sUnYu''@;'; put 'put ''RGVmYXVsdFNldHRpbmdzPVpTZSgpLFJ2Lmhvb2tzPVZvLmdldFNpbmdsZXRvbigpLFJ2LnBhY2thZ2VOYW1lPSJoYW5kc29udGFibGUiLFJ2LmJ1aWxkRGF0ZT0iMDgvMDcvMjAyMiAxNToyNDowOCIsUnYudmVyc2lvbj0iMTIuMS4yIixSdi5sYW5ndWFnZXM9e2RpY3Rpb25hcnlLZXlzOnEs''@;'; put 'put ''Z2V0TGFuZ3VhZ2VEaWN0aW9uYXJ5OmxTZSxnZXRMYW5ndWFnZXNEaWN0aW9uYXJpZXM6ZnVuY3Rpb24gUktlKCl7cmV0dXJuIExLZSgpfSxyZWdpc3Rlckxhbmd1YWdlRGljdGlvbmFyeTphU2UsZ2V0VHJhbnNsYXRlZFBocmFzZTpzU2V9O2NvbnN0IFFsPVJ2LGl0dD1bImNvbnRhaW5lciJd''@;'; put 'put ''LEM2ZT1uZXcgTWFwLGJNZT0iVGhlIEhhbmRzb250YWJsZSBpbnN0YW5jZSBib3VuZCB0byB0aGlzIGNvbXBvbmVudCB3YXMgZGVzdHJveWVkIGFuZCBjYW5ub3QgYmUgdXNlZCBwcm9wZXJseS4iO2xldCBqTz0oKCk9PntjbGFzcyBke2dldEluc3RhbmNlKGgpe2NvbnN0IHY9QzZlLmdldCho''@;'; put 'put ''KTtyZXR1cm4gdi5pc0Rlc3Ryb3llZD8oY29uc29sZS53YXJuKGJNZSksbnVsbCk6dn1yZWdpc3Rlckluc3RhbmNlKGgsdil7cmV0dXJuIEM2ZS5zZXQoaCx2KX1yZW1vdmVJbnN0YW5jZShoKXtyZXR1cm4gQzZlLmRlbGV0ZShoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3Qgb3R0PU9iamVjdC5rZXlzKFFsLkRlZmF1bHRTZXR0aW5ncyksX01lPVFsLmhvb2tzLmdldFJlZ2lzdGVyZWQoKTtsZXQgQ01lPSgoKT0+e2NsYXNzIGR7bWVy''@;'; put 'put ''Z2VTZXR0aW5ncyhoKXtjb25zdCB2PSJvYmplY3QiPT10eXBlb2YgaC5zZXR0aW5ncyx5PXY/aC5zZXR0aW5nczp7fTtyZXR1cm4gX01lLmNvbmNhdChvdHQpLmZvckVhY2goST0+e2NvbnN0IGo9X01lLmluZGV4T2YoSSk+LTE7bGV0IGNlO3YmJmomJihjZT1oLnNldHRpbmdzW0ldKSx2b2lk''@;'; put 'put ''IDAhPT1oW0ldJiYoY2U9aFtJXSksdm9pZCAwIT09Y2UmJih5W0ldPSJmdW5jdGlvbiI9PXR5cGVvZiBjZSYmaj9mdW5jdGlvbiguLi5fZSl7cmV0dXJuIGguX25nWm9uZS5ydW4oKCk9PmNlLmFwcGx5KHRoaXMsX2UpKX06Y2UpfSkseX1wcmVwYXJlQ2hhbmdlcyhoKXtjb25zdCB2PXt9O3Jl''@;'; put 'put ''dHVybiBPYmplY3Qua2V5cyhoKS5mb3JFYWNoKEM9PntoLmhhc093blByb3BlcnR5KEMpJiYodltDXT1oW0NdLmN1cnJlbnRWYWx1ZSl9KSx2fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PXBpKHt0b2tlbjpkLGZhY3Rvcnk6''@;'; put 'put ''ZC5cdTAyNzVmYWN9KSxkfSkoKSx3dGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5fbmdab25lPWgsdGhpcy5faG90VGFibGVSZWdpc3RlcmVyPXYsdGhpcy5faG90U2V0dGluZ3NSZXNvbHZlcj15LHRoaXMuX19ob3RJbnN0YW5jZT1udWxsLHRoaXMuY29sdW1uc0Nv''@;'; put 'put ''bXBvbmVudHM9W10sdGhpcy5ob3RJZD0iIn1nZXQgaG90SW5zdGFuY2UoKXtyZXR1cm4hdGhpcy5fX2hvdEluc3RhbmNlfHx0aGlzLl9faG90SW5zdGFuY2UmJiF0aGlzLl9faG90SW5zdGFuY2UuaXNEZXN0cm95ZWQ/dGhpcy5fX2hvdEluc3RhbmNlOih0aGlzLl9ob3RUYWJsZVJlZ2lzdGVy''@;'; put 'put ''ZXIucmVtb3ZlSW5zdGFuY2UodGhpcy5ob3RJZCksY29uc29sZS53YXJuKGJNZSksbnVsbCl9c2V0IGhvdEluc3RhbmNlKGgpe3RoaXMuX19ob3RJbnN0YW5jZT1ofW5nQWZ0ZXJWaWV3SW5pdCgpe2NvbnN0IGg9dGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKHRoaXMp''@;'; put 'put ''O2lmKHRoaXMuY29sdW1uc0NvbXBvbmVudHMubGVuZ3RoPjApe2NvbnN0IHY9W107dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5mb3JFYWNoKHk9Pnt2LnB1c2godGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKHkpKX0pLGguY29sdW1ucz12fXRoaXMuX25nWm9uZS5ydW5P''@;'; put 'put ''dXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2U9bmV3IFFsLkNvcmUodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCxoKSx0aGlzLmhvdElkJiZ0aGlzLl9ob3RUYWJsZVJlZ2lzdGVyZXIucmVnaXN0ZXJJbnN0YW5jZSh0aGlzLmhvdElkLHRoaXMuaG90SW5zdGFuY2UpLHRo''@;'; put 'put ''aXMuaG90SW5zdGFuY2UuaW5pdCgpfSl9bmdPbkNoYW5nZXMoaCl7aWYobnVsbD09PXRoaXMuaG90SW5zdGFuY2UpcmV0dXJuO2NvbnN0IHY9dGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5wcmVwYXJlQ2hhbmdlcyhoKTt0aGlzLnVwZGF0ZUhvdFRhYmxlKHYpfW5nT25EZXN0cm95KCl7dGhp''@;'; put 'put ''cy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5ob3RJbnN0YW5jZSYmdGhpcy5ob3RJbnN0YW5jZS5kZXN0cm95KCl9KSx0aGlzLmhvdElkJiZ0aGlzLl9ob3RUYWJsZVJlZ2lzdGVyZXIucmVtb3ZlSW5zdGFuY2UodGhpcy5ob3RJZCl9dXBkYXRlSG90VGFibGUoaCl7IXRo''@;'; put 'put ''aXMuaG90SW5zdGFuY2V8fHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3MoaCwhMSl9KX1vbkFmdGVyQ29sdW1uc0NoYW5nZSgpe2lmKHZvaWQgMCE9PXRoaXMuY29sdW1uc0NvbXBvbmVudHMmJnRoaXMuY29sdW1uc0Nv''@;'; put 'put ''bXBvbmVudHMubGVuZ3RoPjApe2NvbnN0IGg9W107dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5mb3JFYWNoKHk9PntoLnB1c2godGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKHkpKX0pLHRoaXMudXBkYXRlSG90VGFibGUoe2NvbHVtbnM6aH0pfX1vbkFmdGVyQ29sdW1u''@;'; put 'put ''c051bWJlckNoYW5nZSgpe2NvbnN0IGg9W107dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5sZW5ndGg+MCYmdGhpcy5jb2x1bW5zQ29tcG9uZW50cy5mb3JFYWNoKHY9PntoLnB1c2godGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKHYpKX0pLHRoaXMudXBkYXRlSG90VGFi''@;'; put 'put ''bGUoe2NvbHVtbnM6aH0pfWFkZENvbHVtbihoKXt0aGlzLmNvbHVtbnNDb21wb25lbnRzLnB1c2goaCksdGhpcy5vbkFmdGVyQ29sdW1uc051bWJlckNoYW5nZSgpfXJlbW92ZUNvbHVtbihoKXtjb25zdCB2PXRoaXMuY29sdW1uc0NvbXBvbmVudHMuaW5kZXhPZihoKTt0aGlzLmNvbHVtbnND''@;'; put 'put ''b21wb25lbnRzLnNwbGljZSh2LDEpLHRoaXMub25BZnRlckNvbHVtbnNOdW1iZXJDaGFuZ2UoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZGwpLEt0KGpPKSxLdChDTWUpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1si''@;'; put 'put ''aG90LXRhYmxlIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmZzAoaXR0LDUpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuY29udGFpbmVyPXkuZmlyc3QpfX0saW5wdXRzOntob3RJZDoiaG90SWQiLHNldHRpbmdzOiJzZXR0aW5ncyIsYWN0aXZlSGVhZGVyQ2xhc3NOYW1l''@;'; put 'put ''OiJhY3RpdmVIZWFkZXJDbGFzc05hbWUiLGFsbG93RW1wdHk6ImFsbG93RW1wdHkiLGFsbG93SHRtbDoiYWxsb3dIdG1sIixhbGxvd0luc2VydENvbHVtbjoiYWxsb3dJbnNlcnRDb2x1bW4iLGFsbG93SW5zZXJ0Um93OiJhbGxvd0luc2VydFJvdyIsYWxsb3dJbnZhbGlkOiJhbGxvd0ludmFs''@;'; put 'put ''aWQiLGFsbG93UmVtb3ZlQ29sdW1uOiJhbGxvd1JlbW92ZUNvbHVtbiIsYWxsb3dSZW1vdmVSb3c6ImFsbG93UmVtb3ZlUm93IixhdXRvQ29sdW1uU2l6ZToiYXV0b0NvbHVtblNpemUiLGF1dG9Sb3dTaXplOiJhdXRvUm93U2l6ZSIsYXV0b1dyYXBDb2w6ImF1dG9XcmFwQ29sIixhdXRvV3Jh''@;'; put 'put ''cFJvdzoiYXV0b1dyYXBSb3ciLGJpbmRSb3dzV2l0aEhlYWRlcnM6ImJpbmRSb3dzV2l0aEhlYWRlcnMiLGNlbGw6ImNlbGwiLGNlbGxzOiJjZWxscyIsY2hlY2tlZFRlbXBsYXRlOiJjaGVja2VkVGVtcGxhdGUiLGNsYXNzTmFtZToiY2xhc3NOYW1lIixjb2xIZWFkZXJzOiJjb2xIZWFkZXJz''@;'; put 'put ''Iixjb2xsYXBzaWJsZUNvbHVtbnM6ImNvbGxhcHNpYmxlQ29sdW1ucyIsY29sdW1uSGVhZGVySGVpZ2h0OiJjb2x1bW5IZWFkZXJIZWlnaHQiLGNvbHVtbnM6ImNvbHVtbnMiLGNvbHVtblNvcnRpbmc6ImNvbHVtblNvcnRpbmciLGNvbHVtblN1bW1hcnk6ImNvbHVtblN1bW1hcnkiLGNvbFdp''@;'; put 'put ''ZHRoczoiY29sV2lkdGhzIixjb21tZW50ZWRDZWxsQ2xhc3NOYW1lOiJjb21tZW50ZWRDZWxsQ2xhc3NOYW1lIixjb21tZW50czoiY29tbWVudHMiLGNvbnRleHRNZW51OiJjb250ZXh0TWVudSIsY29weWFibGU6ImNvcHlhYmxlIixjb3B5UGFzdGU6ImNvcHlQYXN0ZSIsY29ycmVjdEZvcm1h''@;'; put 'put ''dDoiY29ycmVjdEZvcm1hdCIsY3VycmVudENvbENsYXNzTmFtZToiY3VycmVudENvbENsYXNzTmFtZSIsY3VycmVudEhlYWRlckNsYXNzTmFtZToiY3VycmVudEhlYWRlckNsYXNzTmFtZSIsY3VycmVudFJvd0NsYXNzTmFtZToiY3VycmVudFJvd0NsYXNzTmFtZSIsY3VzdG9tQm9yZGVyczoi''@;'; put 'put ''Y3VzdG9tQm9yZGVycyIsZGF0YToiZGF0YSIsZGF0YVNjaGVtYToiZGF0YVNjaGVtYSIsZGF0ZUZvcm1hdDoiZGF0ZUZvcm1hdCIsZGVmYXVsdERhdGU6ImRlZmF1bHREYXRlIixkaXNhYmxlVmlzdWFsU2VsZWN0aW9uOiJkaXNhYmxlVmlzdWFsU2VsZWN0aW9uIixkcmFnVG9TY3JvbGw6ImRy''@;'; put 'put ''YWdUb1Njcm9sbCIsZHJvcGRvd25NZW51OiJkcm9wZG93bk1lbnUiLGVkaXRvcjoiZWRpdG9yIixlbnRlckJlZ2luc0VkaXRpbmc6ImVudGVyQmVnaW5zRWRpdGluZyIsZW50ZXJNb3ZlczoiZW50ZXJNb3ZlcyIsZmlsbEhhbmRsZToiZmlsbEhhbmRsZSIsZmlsdGVyOiJmaWx0ZXIiLGZpbHRl''@;'; put 'put ''cmluZ0Nhc2VTZW5zaXRpdmU6ImZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUiLGZpbHRlcnM6ImZpbHRlcnMiLGZpeGVkQ29sdW1uc0xlZnQ6ImZpeGVkQ29sdW1uc0xlZnQiLGZpeGVkQ29sdW1uc1N0YXJ0OiJmaXhlZENvbHVtbnNTdGFydCIsZml4ZWRSb3dzQm90dG9tOiJmaXhlZFJvd3NCb3R0''@;'; put 'put ''b20iLGZpeGVkUm93c1RvcDoiZml4ZWRSb3dzVG9wIixmb3JtdWxhczoiZm9ybXVsYXMiLGZyYWdtZW50U2VsZWN0aW9uOiJmcmFnbWVudFNlbGVjdGlvbiIsaGVpZ2h0OiJoZWlnaHQiLGhpZGRlbkNvbHVtbnM6ImhpZGRlbkNvbHVtbnMiLGhpZGRlblJvd3M6ImhpZGRlblJvd3MiLGludmFs''@;'; put 'put ''aWRDZWxsQ2xhc3NOYW1lOiJpbnZhbGlkQ2VsbENsYXNzTmFtZSIsbGFiZWw6ImxhYmVsIixsYW5ndWFnZToibGFuZ3VhZ2UiLGxheW91dERpcmVjdGlvbjoibGF5b3V0RGlyZWN0aW9uIixsaWNlbnNlS2V5OiJsaWNlbnNlS2V5IixtYW51YWxDb2x1bW5GcmVlemU6Im1hbnVhbENvbHVtbkZy''@;'; put 'put ''ZWV6ZSIsbWFudWFsQ29sdW1uTW92ZToibWFudWFsQ29sdW1uTW92ZSIsbWFudWFsQ29sdW1uUmVzaXplOiJtYW51YWxDb2x1bW5SZXNpemUiLG1hbnVhbFJvd01vdmU6Im1hbnVhbFJvd01vdmUiLG1hbnVhbFJvd1Jlc2l6ZToibWFudWFsUm93UmVzaXplIixtYXhDb2xzOiJtYXhDb2xzIixt''@;'; put 'put ''YXhSb3dzOiJtYXhSb3dzIixtZXJnZUNlbGxzOiJtZXJnZUNlbGxzIixtaW5Db2xzOiJtaW5Db2xzIixtaW5Sb3dzOiJtaW5Sb3dzIixtaW5TcGFyZUNvbHM6Im1pblNwYXJlQ29scyIsbWluU3BhcmVSb3dzOiJtaW5TcGFyZVJvd3MiLG11bHRpQ29sdW1uU29ydGluZzoibXVsdGlDb2x1bW5T''@;'; put 'put ''b3J0aW5nIixuZXN0ZWRIZWFkZXJzOiJuZXN0ZWRIZWFkZXJzIixuZXN0ZWRSb3dzOiJuZXN0ZWRSb3dzIixub1dvcmRXcmFwQ2xhc3NOYW1lOiJub1dvcmRXcmFwQ2xhc3NOYW1lIixudW1lcmljRm9ybWF0OiJudW1lcmljRm9ybWF0IixvYnNlcnZlRE9NVmlzaWJpbGl0eToib2JzZXJ2ZURP''@;'; put 'put ''TVZpc2liaWxpdHkiLG91dHNpZGVDbGlja0Rlc2VsZWN0czoib3V0c2lkZUNsaWNrRGVzZWxlY3RzIixwZXJzaXN0ZW50U3RhdGU6InBlcnNpc3RlbnRTdGF0ZSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixwbGFjZWhvbGRlckNlbGxDbGFzc05hbWU6InBsYWNlaG9sZGVyQ2VsbENsYXNz''@;'; put 'put ''TmFtZSIscHJldmVudE92ZXJmbG93OiJwcmV2ZW50T3ZlcmZsb3ciLHByZXZlbnRXaGVlbDoicHJldmVudFdoZWVsIixyZWFkT25seToicmVhZE9ubHkiLHJlYWRPbmx5Q2VsbENsYXNzTmFtZToicmVhZE9ubHlDZWxsQ2xhc3NOYW1lIixyZW5kZXJBbGxSb3dzOiJyZW5kZXJBbGxSb3dzIixy''@;'; put 'put ''ZW5kZXJlcjoicmVuZGVyZXIiLHJvd0hlYWRlcnM6InJvd0hlYWRlcnMiLHJvd0hlYWRlcldpZHRoOiJyb3dIZWFkZXJXaWR0aCIscm93SGVpZ2h0czoicm93SGVpZ2h0cyIsc2VhcmNoOiJzZWFyY2giLHNlbGVjdGlvbk1vZGU6InNlbGVjdGlvbk1vZGUiLHNlbGVjdE9wdGlvbnM6InNlbGVj''@;'; put 'put ''dE9wdGlvbnMiLHNraXBDb2x1bW5PblBhc3RlOiJza2lwQ29sdW1uT25QYXN0ZSIsc2tpcFJvd09uUGFzdGU6InNraXBSb3dPblBhc3RlIixzb3J0QnlSZWxldmFuY2U6InNvcnRCeVJlbGV2YW5jZSIsc291cmNlOiJzb3VyY2UiLHN0YXJ0Q29sczoic3RhcnRDb2xzIixzdGFydFJvd3M6InN0''@;'; put 'put ''YXJ0Um93cyIsc3RyZXRjaEg6InN0cmV0Y2hIIixzdHJpY3Q6InN0cmljdCIsdGFibGVDbGFzc05hbWU6InRhYmxlQ2xhc3NOYW1lIix0YWJNb3ZlczoidGFiTW92ZXMiLHRpdGxlOiJ0aXRsZSIsdHJpbURyb3Bkb3duOiJ0cmltRHJvcGRvd24iLHRyaW1Sb3dzOiJ0cmltUm93cyIsdHJpbVdo''@;'; put 'put ''aXRlc3BhY2U6InRyaW1XaGl0ZXNwYWNlIix0eXBlOiJ0eXBlIix1bmNoZWNrZWRUZW1wbGF0ZToidW5jaGVja2VkVGVtcGxhdGUiLHVuZG86InVuZG8iLHZhbGlkYXRvcjoidmFsaWRhdG9yIix2aWV3cG9ydENvbHVtblJlbmRlcmluZ09mZnNldDoidmlld3BvcnRDb2x1bW5SZW5kZXJpbmdP''@;'; put 'put ''ZmZzZXQiLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OiJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsdmlzaWJsZVJvd3M6InZpc2libGVSb3dzIix3aWR0aDoid2lkdGgiLHdvcmRXcmFwOiJ3b3JkV3JhcCIsYWZ0ZXJBZGRDaGlsZDoiYWZ0ZXJBZGRDaGlsZCIsYWZ0ZXJBdXRvZmls''@;'; put 'put ''bDoiYWZ0ZXJBdXRvZmlsbCIsYWZ0ZXJCZWdpbkVkaXRpbmc6ImFmdGVyQmVnaW5FZGl0aW5nIixhZnRlckNlbGxNZXRhUmVzZXQ6ImFmdGVyQ2VsbE1ldGFSZXNldCIsYWZ0ZXJDaGFuZ2U6ImFmdGVyQ2hhbmdlIixhZnRlckNoYW5nZXNPYnNlcnZlZDoiYWZ0ZXJDaGFuZ2VzT2JzZXJ2ZWQi''@;'; put 'put ''LGFmdGVyQ29sdW1uQ29sbGFwc2U6ImFmdGVyQ29sdW1uQ29sbGFwc2UiLGFmdGVyQ29sdW1uRXhwYW5kOiJhZnRlckNvbHVtbkV4cGFuZCIsYWZ0ZXJDb2x1bW5Nb3ZlOiJhZnRlckNvbHVtbk1vdmUiLGFmdGVyQ29sdW1uUmVzaXplOiJhZnRlckNvbHVtblJlc2l6ZSIsYWZ0ZXJDb2x1bW5T''@;'; put 'put ''b3J0OiJhZnRlckNvbHVtblNvcnQiLGFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9uczoiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixhZnRlckNvbnRleHRNZW51SGlkZToiYWZ0ZXJDb250ZXh0TWVudUhpZGUiLGFmdGVyQ29udGV4dE1lbnVTaG93OiJhZnRlckNvbnRleHRN''@;'; put 'put ''ZW51U2hvdyIsYWZ0ZXJDb3B5OiJhZnRlckNvcHkiLGFmdGVyQ29weUxpbWl0OiJhZnRlckNvcHlMaW1pdCIsYWZ0ZXJDcmVhdGVDb2w6ImFmdGVyQ3JlYXRlQ29sIixhZnRlckNyZWF0ZVJvdzoiYWZ0ZXJDcmVhdGVSb3ciLGFmdGVyQ3V0OiJhZnRlckN1dCIsYWZ0ZXJEZXNlbGVjdDoiYWZ0''@;'; put 'put ''ZXJEZXNlbGVjdCIsYWZ0ZXJEZXN0cm95OiJhZnRlckRlc3Ryb3kiLGFmdGVyRGV0YWNoQ2hpbGQ6ImFmdGVyRGV0YWNoQ2hpbGQiLGFmdGVyRG9jdW1lbnRLZXlEb3duOiJhZnRlckRvY3VtZW50S2V5RG93biIsYWZ0ZXJEcmF3U2VsZWN0aW9uOiJhZnRlckRyYXdTZWxlY3Rpb24iLGFmdGVy''@;'; put 'put ''RHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnM6ImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLGFmdGVyRHJvcGRvd25NZW51SGlkZToiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIixhZnRlckRyb3Bkb3duTWVudVNob3c6ImFmdGVyRHJvcGRvd25NZW51U2hvdyIsYWZ0ZXJGaWx0ZXI6''@;'; put 'put ''ImFmdGVyRmlsdGVyIixhZnRlckdldENlbGxNZXRhOiJhZnRlckdldENlbGxNZXRhIixhZnRlckdldENvbEhlYWRlcjoiYWZ0ZXJHZXRDb2xIZWFkZXIiLGFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzOiJhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsYWZ0ZXJHZXRSb3dIZWFk''@;'; put 'put ''ZXI6ImFmdGVyR2V0Um93SGVhZGVyIixhZnRlckdldFJvd0hlYWRlclJlbmRlcmVyczoiYWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnMiLGFmdGVySGlkZUNvbHVtbnM6ImFmdGVySGlkZUNvbHVtbnMiLGFmdGVySGlkZVJvd3M6ImFmdGVySGlkZVJvd3MiLGFmdGVySW5pdDoiYWZ0ZXJJbml0''@;'; put 'put ''IixhZnRlckxhbmd1YWdlQ2hhbmdlOiJhZnRlckxhbmd1YWdlQ2hhbmdlIixhZnRlckxpc3RlbjoiYWZ0ZXJMaXN0ZW4iLGFmdGVyTG9hZERhdGE6ImFmdGVyTG9hZERhdGEiLGFmdGVyTWVyZ2VDZWxsczoiYWZ0ZXJNZXJnZUNlbGxzIixhZnRlck1vZGlmeVRyYW5zZm9ybUVuZDoiYWZ0ZXJN''@;'; put 'put ''b2RpZnlUcmFuc2Zvcm1FbmQiLGFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQ6ImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLGFmdGVyTW9tZW50dW1TY3JvbGw6ImFmdGVyTW9tZW50dW1TY3JvbGwiLGFmdGVyT25DZWxsQ29udGV4dE1lbnU6ImFmdGVyT25DZWxsQ29udGV4dE1lbnUiLGFm''@;'; put 'put ''dGVyT25DZWxsQ29ybmVyRGJsQ2xpY2s6ImFmdGVyT25DZWxsQ29ybmVyRGJsQ2xpY2siLGFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duOiJhZnRlck9uQ2VsbENvcm5lck1vdXNlRG93biIsYWZ0ZXJPbkNlbGxNb3VzZURvd246ImFmdGVyT25DZWxsTW91c2VEb3duIixhZnRlck9uQ2VsbE1v''@;'; put 'put ''dXNlT3V0OiJhZnRlck9uQ2VsbE1vdXNlT3V0IixhZnRlck9uQ2VsbE1vdXNlT3ZlcjoiYWZ0ZXJPbkNlbGxNb3VzZU92ZXIiLGFmdGVyT25DZWxsTW91c2VVcDoiYWZ0ZXJPbkNlbGxNb3VzZVVwIixhZnRlclBhc3RlOiJhZnRlclBhc3RlIixhZnRlclBsdWdpbnNJbml0aWFsaXplZDoiYWZ0''@;'; put 'put ''ZXJQbHVnaW5zSW5pdGlhbGl6ZWQiLGFmdGVyUmVkbzoiYWZ0ZXJSZWRvIixhZnRlclJlZG9TdGFja0NoYW5nZToiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2UiLGFmdGVyUmVmcmVzaERpbWVuc2lvbnM6ImFmdGVyUmVmcmVzaERpbWVuc2lvbnMiLGFmdGVyUmVtb3ZlQ2VsbE1ldGE6ImFmdGVyUmVt''@;'; put 'put ''b3ZlQ2VsbE1ldGEiLGFmdGVyUmVtb3ZlQ29sOiJhZnRlclJlbW92ZUNvbCIsYWZ0ZXJSZW1vdmVSb3c6ImFmdGVyUmVtb3ZlUm93IixhZnRlclJlbmRlcjoiYWZ0ZXJSZW5kZXIiLGFmdGVyUmVuZGVyZXI6ImFmdGVyUmVuZGVyZXIiLGFmdGVyUm93TW92ZToiYWZ0ZXJSb3dNb3ZlIixhZnRl''@;'; put 'put ''clJvd1Jlc2l6ZToiYWZ0ZXJSb3dSZXNpemUiLGFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5OiJhZnRlclNjcm9sbEhvcml6b250YWxseSIsYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5OiJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLGFmdGVyU2VsZWN0aW9uOiJhZnRlclNlbGVjdGlvbiIsYWZ0ZXJTZWxl''@;'; put 'put ''Y3Rpb25CeVByb3A6ImFmdGVyU2VsZWN0aW9uQnlQcm9wIixhZnRlclNlbGVjdGlvbkVuZDoiYWZ0ZXJTZWxlY3Rpb25FbmQiLGFmdGVyU2VsZWN0aW9uRW5kQnlQcm9wOiJhZnRlclNlbGVjdGlvbkVuZEJ5UHJvcCIsYWZ0ZXJTZXRDZWxsTWV0YToiYWZ0ZXJTZXRDZWxsTWV0YSIsYWZ0ZXJT''@;'; put 'put ''ZXREYXRhQXRDZWxsOiJhZnRlclNldERhdGFBdENlbGwiLGFmdGVyU2V0RGF0YUF0Um93UHJvcDoiYWZ0ZXJTZXREYXRhQXRSb3dQcm9wIixhZnRlclNldFNvdXJjZURhdGFBdENlbGw6ImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsYWZ0ZXJUcmltUm93OiJhZnRlclRyaW1Sb3ciLGFmdGVy''@;'; put 'put ''VW5kbzoiYWZ0ZXJVbmRvIixhZnRlclVuZG9TdGFja0NoYW5nZToiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLGFmdGVyVW5oaWRlQ29sdW1uczoiYWZ0ZXJVbmhpZGVDb2x1bW5zIixhZnRlclVuaGlkZVJvd3M6ImFmdGVyVW5oaWRlUm93cyIsYWZ0ZXJVbmxpc3RlbjoiYWZ0ZXJVbmxpc3RlbiIs''@;'; put 'put ''YWZ0ZXJVbm1lcmdlQ2VsbHM6ImFmdGVyVW5tZXJnZUNlbGxzIixhZnRlclVudHJpbVJvdzoiYWZ0ZXJVbnRyaW1Sb3ciLGFmdGVyVXBkYXRlU2V0dGluZ3M6ImFmdGVyVXBkYXRlU2V0dGluZ3MiLGFmdGVyVmFsaWRhdGU6ImFmdGVyVmFsaWRhdGUiLGFmdGVyVmlld3BvcnRDb2x1bW5DYWxj''@;'; put 'put ''dWxhdG9yT3ZlcnJpZGU6ImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLGFmdGVyVmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGU6ImFmdGVyVmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGUiLGFmdGVyVmlld1JlbmRlcjoiYWZ0ZXJWaWV3UmVuZGVyIixiZWZv''@;'; put 'put ''cmVBZGRDaGlsZDoiYmVmb3JlQWRkQ2hpbGQiLGJlZm9yZUF1dG9maWxsOiJiZWZvcmVBdXRvZmlsbCIsYmVmb3JlQXV0b2ZpbGxJbnNpZGVQb3B1bGF0ZToiYmVmb3JlQXV0b2ZpbGxJbnNpZGVQb3B1bGF0ZSIsYmVmb3JlQ2VsbEFsaWdubWVudDoiYmVmb3JlQ2VsbEFsaWdubWVudCIsYmVm''@;'; put 'put ''b3JlQ2hhbmdlOiJiZWZvcmVDaGFuZ2UiLGJlZm9yZUNoYW5nZVJlbmRlcjoiYmVmb3JlQ2hhbmdlUmVuZGVyIixiZWZvcmVDb2x1bW5Db2xsYXBzZToiYmVmb3JlQ29sdW1uQ29sbGFwc2UiLGJlZm9yZUNvbHVtbkV4cGFuZDoiYmVmb3JlQ29sdW1uRXhwYW5kIixiZWZvcmVDb2x1bW5Nb3Zl''@;'; put 'put ''OiJiZWZvcmVDb2x1bW5Nb3ZlIixiZWZvcmVDb2x1bW5SZXNpemU6ImJlZm9yZUNvbHVtblJlc2l6ZSIsYmVmb3JlQ29sdW1uU29ydDoiYmVmb3JlQ29sdW1uU29ydCIsYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtczoiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsYmVmb3JlQ29udGV4dE1l''@;'; put 'put ''bnVTaG93OiJiZWZvcmVDb250ZXh0TWVudVNob3ciLGJlZm9yZUNvcHk6ImJlZm9yZUNvcHkiLGJlZm9yZUNyZWF0ZUNvbDoiYmVmb3JlQ3JlYXRlQ29sIixiZWZvcmVDcmVhdGVSb3c6ImJlZm9yZUNyZWF0ZVJvdyIsYmVmb3JlQ3V0OiJiZWZvcmVDdXQiLGJlZm9yZURldGFjaENoaWxkOiJi''@;'; put 'put ''ZWZvcmVEZXRhY2hDaGlsZCIsYmVmb3JlRHJhd0JvcmRlcnM6ImJlZm9yZURyYXdCb3JkZXJzIixiZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtczoiYmVmb3JlRHJvcGRvd25NZW51U2V0SXRlbXMiLGJlZm9yZURyb3Bkb3duTWVudVNob3c6ImJlZm9yZURyb3Bkb3duTWVudVNob3ciLGJlZm9y''@;'; put 'put ''ZUZpbHRlcjoiYmVmb3JlRmlsdGVyIixiZWZvcmVHZXRDZWxsTWV0YToiYmVmb3JlR2V0Q2VsbE1ldGEiLGJlZm9yZUhpZGVDb2x1bW5zOiJiZWZvcmVIaWRlQ29sdW1ucyIsYmVmb3JlSGlkZVJvd3M6ImJlZm9yZUhpZGVSb3dzIixiZWZvcmVJbml0OiJiZWZvcmVJbml0IixiZWZvcmVJbml0''@;'; put 'put ''V2Fsa29udGFibGU6ImJlZm9yZUluaXRXYWxrb250YWJsZSIsYmVmb3JlS2V5RG93bjoiYmVmb3JlS2V5RG93biIsYmVmb3JlTGFuZ3VhZ2VDaGFuZ2U6ImJlZm9yZUxhbmd1YWdlQ2hhbmdlIixiZWZvcmVMb2FkRGF0YToiYmVmb3JlTG9hZERhdGEiLGJlZm9yZU1lcmdlQ2VsbHM6ImJlZm9y''@;'; put 'put ''ZU1lcmdlQ2VsbHMiLGJlZm9yZU9uQ2VsbENvbnRleHRNZW51OiJiZWZvcmVPbkNlbGxDb250ZXh0TWVudSIsYmVmb3JlT25DZWxsTW91c2VEb3duOiJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGJlZm9yZU9uQ2VsbE1vdXNlT3V0OiJiZWZvcmVPbkNlbGxNb3VzZU91dCIsYmVmb3JlT25DZWxs''@;'; put 'put ''TW91c2VPdmVyOiJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGJlZm9yZU9uQ2VsbE1vdXNlVXA6ImJlZm9yZU9uQ2VsbE1vdXNlVXAiLGJlZm9yZVBhc3RlOiJiZWZvcmVQYXN0ZSIsYmVmb3JlUmVkbzoiYmVmb3JlUmVkbyIsYmVmb3JlUmVkb1N0YWNrQ2hhbmdlOiJiZWZvcmVSZWRvU3RhY2tD''@;'; put 'put ''aGFuZ2UiLGJlZm9yZVJlZnJlc2hEaW1lbnNpb25zOiJiZWZvcmVSZWZyZXNoRGltZW5zaW9ucyIsYmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXM6ImJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIixiZWZvcmVSZW1vdmVDZWxsTWV0YToiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLGJlZm9yZVJl''@;'; put 'put ''bW92ZUNvbDoiYmVmb3JlUmVtb3ZlQ29sIixiZWZvcmVSZW1vdmVSb3c6ImJlZm9yZVJlbW92ZVJvdyIsYmVmb3JlUmVuZGVyOiJiZWZvcmVSZW5kZXIiLGJlZm9yZVJlbmRlcmVyOiJiZWZvcmVSZW5kZXJlciIsYmVmb3JlUm93TW92ZToiYmVmb3JlUm93TW92ZSIsYmVmb3JlUm93UmVzaXpl''@;'; put 'put ''OiJiZWZvcmVSb3dSZXNpemUiLGJlZm9yZVNldENlbGxNZXRhOiJiZWZvcmVTZXRDZWxsTWV0YSIsYmVmb3JlU2V0UmFuZ2VFbmQ6ImJlZm9yZVNldFJhbmdlRW5kIixiZWZvcmVTZXRSYW5nZVN0YXJ0OiJiZWZvcmVTZXRSYW5nZVN0YXJ0IixiZWZvcmVTZXRSYW5nZVN0YXJ0T25seToiYmVm''@;'; put 'put ''b3JlU2V0UmFuZ2VTdGFydE9ubHkiLGJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aDoiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixiZWZvcmVUb3VjaFNjcm9sbDoiYmVmb3JlVG91Y2hTY3JvbGwiLGJlZm9yZVRyaW1Sb3c6ImJlZm9yZVRyaW1Sb3ciLGJlZm9yZVVuZG86ImJlZm9y''@;'; put 'put ''ZVVuZG8iLGJlZm9yZVVuZG9TdGFja0NoYW5nZToiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIixiZWZvcmVVbmhpZGVDb2x1bW5zOiJiZWZvcmVVbmhpZGVDb2x1bW5zIixiZWZvcmVVbmhpZGVSb3dzOiJiZWZvcmVVbmhpZGVSb3dzIixiZWZvcmVVbm1lcmdlQ2VsbHM6ImJlZm9yZVVubWVyZ2VD''@;'; put 'put ''ZWxscyIsYmVmb3JlVW50cmltUm93OiJiZWZvcmVVbnRyaW1Sb3ciLGJlZm9yZVZhbGlkYXRlOiJiZWZvcmVWYWxpZGF0ZSIsYmVmb3JlVmFsdWVSZW5kZXI6ImJlZm9yZVZhbHVlUmVuZGVyIixiZWZvcmVWaWV3UmVuZGVyOiJiZWZvcmVWaWV3UmVuZGVyIixjb25zdHJ1Y3Q6ImNvbnN0cnVj''@;'; put 'put ''dCIsaW5pdDoiaW5pdCIsbW9kaWZ5QXV0b0NvbHVtblNpemVTZWVkOiJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiLG1vZGlmeUF1dG9maWxsUmFuZ2U6Im1vZGlmeUF1dG9maWxsUmFuZ2UiLG1vZGlmeUNvbEhlYWRlcjoibW9kaWZ5Q29sSGVhZGVyIixtb2RpZnlDb2x1bW5IZWFkZXJIZWln''@;'; put 'put ''aHQ6Im1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIsbW9kaWZ5Q29sV2lkdGg6Im1vZGlmeUNvbFdpZHRoIixtb2RpZnlDb3B5YWJsZVJhbmdlOiJtb2RpZnlDb3B5YWJsZVJhbmdlIixtb2RpZnlEYXRhOiJtb2RpZnlEYXRhIixtb2RpZnlHZXRDZWxsQ29vcmRzOiJtb2RpZnlHZXRDZWxsQ29v''@;'; put 'put ''cmRzIixtb2RpZnlSb3dEYXRhOiJtb2RpZnlSb3dEYXRhIixtb2RpZnlSb3dIZWFkZXI6Im1vZGlmeVJvd0hlYWRlciIsbW9kaWZ5Um93SGVhZGVyV2lkdGg6Im1vZGlmeVJvd0hlYWRlcldpZHRoIixtb2RpZnlSb3dIZWlnaHQ6Im1vZGlmeVJvd0hlaWdodCIsbW9kaWZ5U291cmNlRGF0YToi''@;'; put 'put ''bW9kaWZ5U291cmNlRGF0YSIsbW9kaWZ5VHJhbnNmb3JtRW5kOiJtb2RpZnlUcmFuc2Zvcm1FbmQiLG1vZGlmeVRyYW5zZm9ybVN0YXJ0OiJtb2RpZnlUcmFuc2Zvcm1TdGFydCIscGVyc2lzdGVudFN0YXRlTG9hZDoicGVyc2lzdGVudFN0YXRlTG9hZCIscGVyc2lzdGVudFN0YXRlUmVzZXQ6''@;'; put 'put ''InBlcnNpc3RlbnRTdGF0ZVJlc2V0IixwZXJzaXN0ZW50U3RhdGVTYXZlOiJwZXJzaXN0ZW50U3RhdGVTYXZlIn0sZmVhdHVyZXM6W2dvKFtqTyxDTWVdKSxkMl0sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbMywiaWQiXSxbImNvbnRhaW5lciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYp''@;'; put 'put ''ezEmaCYmYnIoMCwiZGl2IiwwLDEpLDImaCYmeHQoImlkIix2LmhvdElkKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksazZlPSgoKT0+e2NsYXNzIGR7c3RhdGljIGZvclJvb3QoKXtyZXR1cm57bmdNb2R1bGU6ZCxwcm92aWRlcnM6W2pPXX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe30pLGQudmVyc2lvbj0iMTIuMS4yIixkfSkoKTtmdW5jdGlvbiBhdHQoZCxnKXsxJmQmJih0dCgwLCJzcGFuIiw2KSxXdCgxLCIgTG9hZGluZy4uLiAiKSxpdCgpKX1mdW5jdGlv''@;'; put 'put ''biBsdHQoZCxnKXsxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIsIkxvYWRpbmcgc3VibWl0dGVkIHRhYmxlIiksaXQoKSgpKX1mdW5jdGlvbiBzdHQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDQpLG5uKDEsYXR0LDIsMCwic3BhbiIsNSksbm4oMixsdHQsMywwLCJkaXYiLDMpLGl0''@;'; put 'put ''KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lmIiwhaC5sb2FkZWQpLHN0KDEpLHh0KCJuZ0lmIiwhaC5sb2FkZWQpfX1jb25zdCB1dHQ9ZnVuY3Rpb24oZCxnKXtyZXR1cm57cmVqZWN0ZWQ6ZCxhY2NlcHRlZDpnfX07ZnVuY3Rpb24gY3R0KGQsZyl7aWYoMSZkKXtjb25zdCBo''@;'; put 'put ''PXlpKCk7dHQoMCwiZGl2IikoMSwiZGl2Iiw3KSgyLCJkaXYiLDgpKDMsImg0Iiw5KSxXdCg0LCJTdGFnZWQgRGF0YSIpLGl0KCkoKSgpLHR0KDUsImRpdiIsMTApKDYsImRpdiIsMTEpKDcsImRpdiIsMTIpKDgsImRpdiIsOCksV3QoOSwiQmFzaWMgU3VibWl0dGVkIERldGFpbHMiKSxpdCgp''@;'; put 'put ''KCksdHQoMTAsImRpdiIpKDExLCJzcGFuIiksV3QoMTIsIlRhYmxlIElkOiIpLGl0KCksdHQoMTMsInN0cm9uZyIpKDE0LCJzcGFuIiksV3QoMTUpLGl0KCkoKSgpLHR0KDE2LCJkaXYiKSgxNywic3BhbiIpLFd0KDE4LCJCYXNlIFRhYmxlOiIpLGl0KCksdHQoMTksImEiLDEzKSxabigiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS52aWV3ZXJUYWJsZVNjcmVlbigpKX0pLFd0KDIwKSxpdCgpKCksdHQoMjEsImRpdiIpKDIyLCJzcGFuIiksV3QoMjMsIlN1Ym1pdCBEYXRlOiIpLGl0KCksdHQoMjQsInNwYW4iLDE0KSxXdCgyNSksaXQoKSgpLHR0KDI2LCJkaXYi''@;'; put 'put ''KSgyNywic3BhbiIpLFd0KDI4LCJSZXZpZXcgU3RhdHVzOiIpLGl0KCksdHQoMjksInNwYW4iLDE1KSxXdCgzMCksaXQoKSgpKCksdHQoMzEsImRpdiIsMTYpKDMyLCJkaXYiLDEyKSgzMywiZGl2Iiw4KSxXdCgzNCwiQWN0aW9ucyIpLGl0KCkoKSx0dCgzNSwiZGl2IiwxNykoMzYsImRpdiIs''@;'; put 'put ''MTgpKDM3LCJidXR0b24iLDE5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS52aWV3ZXJUYWJsZVNjcmVlbigpKX0pLFd0KDM4LCIgR28gdG8gYmFzZSB0YWJsZSBzY3JlZW4gIiksaXQoKSx0dCgzOSwiYnV0dG9uIiwyMCksWm4oImNsaWNrIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBhKGgpLGJ0KFV0KCkuYXBwcm92ZVRhYmxlU2NyZWVuKCkpfSksV3QoNDAsIiBHbyB0byBhcHByb3ZhbHMgc2NyZWVuICIpLGl0KCksdHQoNDEsImJ1dHRvbiIsMjEpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmdvQmFjaygpKX0pLFd0KDQyLCIg''@;'; put 'put ''R28gYmFjayB0byBlZGl0b3IgIiksaXQoKSx0dCg0MywiYnV0dG9uIiwyMiksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpO3JldHVybiBidCh5LmRvd25sb2FkKG51bGw9PXkudGFibGVEZXRhaWxzP251bGw6eS50YWJsZURldGFpbHMuVEFCTEVfSUQpKX0pLGJyKDQ0''@;'; put 'put ''LCJjbHItaWNvbiIsMjMpLGl0KCkoKSgpKCkoKSx0dCg0NSwiZGl2IiwyNCksYnIoNDYsImhvdC10YWJsZSIsMjUpLGl0KCksYnIoNDcsImRpdiIsMjYpLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3QoMTUpLFVpKCIgIixudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRh''@;'; put 'put ''aWxzLlRBQkxFX0lELCIiKSxzdCg1KSxVaSgiICIsbnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5CQVNFX1RBQkxFLCIgIiksc3QoNSksVWkoIiAiLG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuU1VCTUlUVEVEX09OX0RUVE0sIiAiKSxz''@;'; put 'put ''dCg0KSx4dCgibmdDbGFzcyIsQmQoMTMsdXR0LCJSRUpFQ1RFRCI9PT0obnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKSwiQVBQUk9WRUQiPT09KG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuUkVWSUVXX1NU''@;'; put 'put ''QVRVU19JRCkpKSxzdCgxKSxVaSgiICIsbnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lELCIgIiksc3QoOSkseHQoImRpc2FibGVkIiwiQVBQUk9WRUQiPT09KG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuUkVW''@;'; put 'put ''SUVXX1NUQVRVU19JRCl8fCJSRUpFQ1RFRCI9PT0obnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKSksc3QoNykseHQoImRhdGEiLGguaG90VGFibGUuZGF0YSkoImNvbEhlYWRlcnMiLGguaG90VGFibGUuY29sSGVhZGVycykoImNvbHVt''@;'; put 'put ''bnMiLGguaG90VGFibGUuY29sdW1ucykoIm1heFJvd3MiLGguaG90VGFibGUubWF4Um93cykoImhlaWdodCIsaC5ob3RUYWJsZS5oZWlnaHQpKCJsaWNlbnNlS2V5IixoLmhvdFRhYmxlLmxpY2Vuc2VLZXkpKCJjZWxscyIsaC5ob3RUYWJsZS5jZWxscyl9fWNvbnN0IGZ0dD1be3BhdGg6Ijp0''@;'; put 'put ''YWJsZUlkIixjb21wb25lbnQ6KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksail7dGhpcy5hcHBTZXJ2aWNlPWgsdGhpcy5zYXNTdG9yZVNlcnZpY2U9dix0aGlzLmV2ZW50U2VydmljZT15LHRoaXMucm91dGU9Qyx0aGlzLnJvdXRlcj1JLHRoaXMuc2FzU2VydmljZT1qLHRo''@;'; put 'put ''aXMubG9hZGVkPSExLHRoaXMuaG90VGFibGU9e2RhdGE6W10sY29sSGVhZGVyczpbXSxjb2x1bW5zOltdLGhlaWdodDo1MDAsc2V0dGluZ3M6e30sbGljZW5zZUtleTp2b2lkIDAsbWF4Um93czp0aGlzLmFwcFNlcnZpY2UuZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWR8fDEvMH19c3VibWl0dGVk''@;'; put 'put ''VGFibGVTY3JlZW4oKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK3RoaXMudGFibGVfaWQpfWFwcHJvdmVUYWJsZVNjcmVlbigpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2FwcHJvdmUvYXBwcm92ZURldC8iK3RoaXMudGFibGVfaWQpfXZpZXdlclRhYmxlU2NyZWVu''@;'; put 'put ''KCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrdGhpcy50YWJsZURldGFpbHMuQkFTRV9UQUJMRSl9Z29CYWNrKCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvZWRpdG9yLyIrdGhpcy50YWJsZURldGFpbHMuQkFTRV9UQUJMRSl9ZG93bmxvYWQoaCl7bGV0IHY9''@;'; put 'put ''dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkseT12LnNlcnZlclVybCxDPXYuYXBwTG9jLEk9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3Blbih5K0krIi8/X3Byb2dyYW09IitDKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxl''@;'; put 'put ''PSIraCl9bmdPbkluaXQoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKHRoaXMuYXBwU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGg9Pnt0aGlzLmhvdFRhYmxlLmxpY2Vuc2VLZXk9aH0pLHZvaWQgMCE9PXRoaXMucm91dGVyLnNuYXBzaG90''@;'; put 'put ''LnBhcmFtcy50YWJsZUlkKXt0aGlzLnRhYmxlX2lkPXRoaXMucm91dGVyLnNuYXBzaG90LnBhcmFtcy50YWJsZUlkO3RyeXtsZXQgaD15aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5nZXRDaGFuZ2VJbmZvKHRoaXMudGFibGVfaWQpO2lmKCFofHwhaC5qc3BhcmFtcyl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoImpzcGFyYW1zIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSByZXNwb25zZS4iKTt0aGlzLnRhYmxlRGV0YWlscz1oLmpzcGFyYW1zWzBdfWNhdGNoKGgpe2xldCB2PXt9O2guTUVTU0FHRT92PWg6di5NRVNTQUdFPWgsdGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJw''@;'; put 'put ''dWJsaWMvZ2V0Y2hhbmdlaW5mbyIsdil9dHJ5e2xldCBoPXlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLm9wZW5UYWJsZSh0aGlzLnRhYmxlX2lkKTtpZighaHx8IWguc3RhZ2V0YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlN0YWdldGFibGUgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHJlc3Bv''@;'; put 'put ''bnNlLiIpO2xldCB2PWguc3RhZ2V0YWJsZVswXSx5PVtdLEM9W107Zm9yKGxldCBqIGluIHYpdiYmeS5wdXNoKGopO2ZvcihsZXQgaj0wO2o8eS5sZW5ndGg7aisrKUMucHVzaCh7ZGF0YTp5W2pdfSk7bGV0IEk9ZnVuY3Rpb24oKXtyZXR1cm57cmVhZE9ubHk6ITB9fTt0aGlzLmhvdFRhYmxl''@;'; put 'put ''LmRhdGE9aC5zdGFnZXRhYmxlLHRoaXMuaG90VGFibGUuY29sSGVhZGVycz15LHRoaXMuaG90VGFibGUuY29sdW1ucz1DLHRoaXMuaG90VGFibGUuY2VsbHM9SSx0aGlzLmxvYWRlZD0hMCx0aGlzLnNldEZvY3VzKCl9Y2F0Y2goaCl7bGV0IHY9e307aC5NRVNTQUdFfHwodi5NRVNTQUdFPWgp''@;'; put 'put ''LHRoaXMuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiYXVkaXRvcnMvZ2V0c3RhZ2V0YWJsZSIsdiksdGhpcy5sb2FkZWQ9ITF9fX0pfXNldEZvY3VzKCl7c2V0VGltZW91dCgoKT0+e2xldCBoPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXBwcm92YWwtYnRuIik7''@;'; put 'put ''aCYmaC5mb2N1cygpfSwyMDApfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChzaCksS3Qoa2cpLEt0KG11KSxLdChFbCksS3QoSjEpLEt0KGwwKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1zdGFnZSJdXSxob3N0''@;'; put 'put ''QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl0sWzEsImNsci1jb2wtbWQtMTIiLCJjYXJkIl0sWyJjbGFzcyIsImgtODB2aCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBhbGlnbi1p''@;'; put 'put ''dGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJoLTgwdmgiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsYXNzIiwic3Bpbm5lciIsNCwibmdJZiJdLFsxLCJzcGlubmVyIl0sWyJuZy1p''@;'; put 'put ''ZiIsImxvYWRlZCIsMSwiY2FyZC1oZWFkZXIiXSxbMSwiY2FyZC10aXRsZSIsInRleHQtY2VudGVyIl0sWzEsIm10LTAiXSxbIm5nLWlmIiwibG9hZGVkIiwxLCJjbHItcm93Il0sWzEsImNhcmQtYmxvY2siLCJjbHItY29sLW1kLTYiXSxbMSwiY2FyZC1oZWFkZXIiLCJweS01Il0sWzEsImJh''@;'; put 'put ''c2VUYWJsZUxpbmsiLDMsImNsaWNrIl0sWzEsIm10LTEwIl0sWzEsIm10LTEwIiwzLCJuZ0NsYXNzIl0sWzEsImNsci1jb2wtbWQtNiIsImNhcmQtYmxvY2siXSxbMSwibXQtMjAiXSxbMSwicm93Il0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC0y''@;'; put 'put ''MCIsMywiY2xpY2siXSxbImlkIiwiYXBwcm92YWwtYnRuIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC0yMCIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50''@;'; put 'put ''ZXIiLCJtdC0yMCIsMywiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJ0ZXh0LWNlbnRlciIsIm10LTIwIiwibWluLXctMCIsMywiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQiXSxbMSwiY2FyZC1ibG9jayJdLFsiaG90SWQiLCJob3RJbnN0YW5jZSIsImlkIiwi''@;'; put 'put ''aG90VGFibGUiLCJzdHJldGNoSCIsImFsbCIsMywiZGF0YSIsImNvbEhlYWRlcnMiLCJjb2x1bW5zIiwibWF4Um93cyIsImhlaWdodCIsImxpY2Vuc2VLZXkiLCJjZWxscyJdLFsxLCJjYXJkLWZvb3RlciIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXV0sdGVtcGxhdGU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXsxJmgmJih0dCgwLCJkaXYiLDApKDEsImRpdiIsMSksbm4oMixzdHQsMywyLCJkaXYiLDIpLG5uKDMsY3R0LDQ4LDE2LCJkaXYiLDMpLGl0KCkoKSksMiZoJiYoc3QoMikseHQoIm5nSWYiLCF2LmxvYWRlZCksc3QoMSkseHQoIm5nSWYiLHYubG9hZGVkKSl9LGRlcGVuZGVu''@;'; put 'put ''Y2llczpbRTEsQm8sRzIsd3RlXSxzdHlsZXM6WyIucmVqZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmODMxMjY7Zm9udC13ZWlnaHQ6NzAwfS5hY2NlcHRlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzNmYzQyNDtmb250LXdlaWdodDo3MDB9LmJhc2VUYWJsZUxpbmtbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO21hcmdpbi10b3A6MTBweDtjb2xvcjojMDA3Y2JifSJdfSksZH0pKCl9XTtsZXQgaHR0PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlw''@;'; put 'put ''ZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W2FhLE13LEI1LmZvckNoaWxkKGZ0dCksazZlLmZvclJvb3QoKV19KSxkfSkoKTtmdW5jdGlvbiBTNmUoZCl7cmV0dXJuKFM2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGR0dChkLGcpe2lm''@;'; put 'put ''KCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGtNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYu''@;'; put 'put ''Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGI4KCl7cmV0dXJuIGI4PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1''@;'; put 'put ''bmN0aW9uKGcsaCx2KXt2YXIgeT1ndHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGI4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5j''@;'; put 'put ''dGlvbiBndHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPW00KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIE02ZShkLGcpe3JldHVybihNNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5i''@;'; put 'put ''aW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBBdHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1TNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2''@;'; put 'put ''ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIHl0dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJl''@;'; put 'put ''ZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIG00KGQpe3JldHVybihtND1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZh''@;'; put 'put ''ciBTTWU9ImhhbmRzb250YWJsZUVkaXRvciIsRTZlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBtdHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rp''@;'; put 'put ''b24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmTTZlKGQsZyl9KGgs''@;'; put 'put ''ZCk7dmFyIGc9ZnVuY3Rpb24gdnR0KGQpe3ZhciBnPWZ1bmN0aW9uIHd0dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4h''@;'; put 'put ''MDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PW00KGQpO2lmKGcpe3ZhciBDPW00KHRoaXMp''@;'; put 'put ''LmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBBdHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gZHR0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIHB0dChkLGcsaCl7ZyYma01lKGQucHJvdG90eXBlLGcpLGgmJmtNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe2I4KG00KGgucHJvdG90eXBlKSwib3BlbiIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKSx0aGlzLmh0RWRpdG9yJiZ0aGlzLmh0RWRpdG9yLmRlc3Ryb3koKSwibm9uZSI9PT10aGlzLmh0Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkmJih0aGlzLmh0Q29udGFpbmVyLnN0eWxlLmRpc3BsYXk9IiIpLHRoaXMuaHRFZGl0b3I9bmV3IHRoaXMuaG90LmNvbnN0''@;'; put 'put ''cnVjdG9yKHRoaXMuaHRDb250YWluZXIsdGhpcy5odE9wdGlvbnMpLHRoaXMuaHRFZGl0b3IuaW5pdCgpLHRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGUuZGlzcGxheT0iIix0aGlzLmNlbGxQcm9wZXJ0aWVzLnN0cmljdD90aGlzLmh0RWRpdG9yLnNlbGVjdENlbGwoMCwwKTp0aGlz''@;'; put 'put ''Lmh0RWRpdG9yLmRlc2VsZWN0Q2VsbCgpLGZ6KHRoaXMuVEVYVEFSRUEsMCx0aGlzLlRFWFRBUkVBLnZhbHVlLmxlbmd0aCksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5odEVkaXRvciYmKHRoaXMuaHRFZGl0b3Iucm9vdEVs''@;'; put 'put ''ZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMucmVtb3ZlSG9va3NCeUtleSgiYmVmb3JlS2V5RG93biIpLGI4KG00KGgucHJvdG90eXBlKSwiY2xvc2UiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqLGNlLF9lKXtiOChtNCho''@;'; put 'put ''LnByb3RvdHlwZSksInByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx5LEMsSSxqLGNlLF9lKTt2YXIgUmU9dGhpcyxOZT17c3RhcnRSb3dzOjAsc3RhcnRDb2xzOjAsbWluUm93czowLG1pbkNvbHM6MCxjbGFzc05hbWU6Imxpc3Rib3giLGNvcHlQYXN0ZTohMSxhdXRvQ29sdW1uU2l6ZTohMSxh''@;'; put 'put ''dXRvUm93U2l6ZTohMSxyZWFkT25seTohMCxmaWxsSGFuZGxlOiExLGF1dG9XcmFwQ29sOiExLGF1dG9XcmFwUm93OiExLGFmdGVyT25DZWxsTW91c2VEb3duOmZ1bmN0aW9uKGh0LEJ0KXt2YXIgJHQ9dGhpcy5nZXRTb3VyY2VEYXRhKEJ0LnJvdyxCdC5jb2wpO3ZvaWQgMCE9PSR0JiZSZS5z''@;'; put 'put ''ZXRWYWx1ZSgkdCksUmUuaW5zdGFuY2UuZGVzdHJveUVkaXRvcigpfSxwcmV2ZW50V2hlZWw6ITAsbGF5b3V0RGlyZWN0aW9uOnRoaXMuaG90LmlzUnRsKCk/InJ0bCI6Imx0ciJ9O3RoaXMuY2VsbFByb3BlcnRpZXMuaGFuZHNvbnRhYmxlJiZSMShOZSxfZS5oYW5kc29udGFibGUpLHRoaXMu''@;'; put 'put ''aHRPcHRpb25zPU5lfX0se2tleToiYmVnaW5FZGl0aW5nIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuaG90LmdldFNldHRpbmdzKCkub25CZWdpbkVkaXRpbmc7SSYmITE9PT1JKCl8fGI4KG00KGgucHJvdG90eXBlKSwiYmVnaW5FZGl0aW5nIix0aGlzKS5jYWxsKHRoaXMseSxD''@;'; put 'put ''KX19LHtrZXk6ImNyZWF0ZUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe2I4KG00KGgucHJvdG90eXBlKSwiY3JlYXRlRWxlbWVudHMiLHRoaXMpLmNhbGwodGhpcyk7dmFyIHk9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO3kuY2xhc3NOYW1lPSJoYW5kc29u''@;'; put 'put ''dGFibGVFZGl0b3IiLHRoaXMuVEVYVEFSRUFfUEFSRU5ULmFwcGVuZENoaWxkKHkpLHRoaXMuaHRDb250YWluZXI9eSx0aGlzLmFzc2lnbkhvb2tzKCl9fSx7a2V5OiJmaW5pc2hFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7aWYodGhpcy5odEVkaXRvciYmdGhpcy5odEVkaXRvci5p''@;'; put 'put ''c0xpc3RlbmluZygpJiZ0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmh0RWRpdG9yJiZ0aGlzLmh0RWRpdG9yLmdldFNlbGVjdGVkTGFzdCgpKXt2YXIgaj10aGlzLmh0RWRpdG9yLmdldEluc3RhbmNlKCkuZ2V0VmFsdWUoKTt2b2lkIDAhPT1qJiZ0aGlzLnNldFZhbHVlKGopfWI4KG00KGgucHJv''@;'; put 'put ''dG90eXBlKSwiZmluaXNoRWRpdGluZyIsdGhpcykuY2FsbCh0aGlzLHksQyxJKX19LHtrZXk6ImFzc2lnbkhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJEZXN0cm95IixmdW5jdGlvbigpe3kuaHRFZGl0b3ImJnkuaHRFZGl0b3IuZGVz''@;'; put 'put ''dHJveSgpfSl9fSx7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEk9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIik7YjgobTQoaC5wcm90b3R5cGUpLCJyZWdpc3RlclNob3J0Y3V0cyIsdGhpcykuY2Fs''@;'; put 'put ''bCh0aGlzKTt2YXIgY2U9ZnVuY3Rpb24oUmUsTmUpe3ZhciBLZT15Lmh0RWRpdG9yLmdldEluc3RhbmNlKCk7aWYodm9pZCAwIT09UmUmJihSZTwwfHxLZS5mbGlwcGVkJiZSZT5LZS5jb3VudFJvd3MoKS0xP0tlLmRlc2VsZWN0Q2VsbCgpOktlLnNlbGVjdENlbGwoUmUsMCksS2UuZ2V0RGF0''@;'; put 'put ''YSgpLmxlbmd0aCkpcmV0dXJuIE5lLnByZXZlbnREZWZhdWx0KCksdjgoTmUpLHkuaG90Lmxpc3RlbigpLHkuVEVYVEFSRUEuZm9jdXMoKSwhMX07SS5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkFycm93VXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oUmUpe3ZhciBLZSxodCxOZT15Lmh0RWRpdG9y''@;'; put 'put ''LmdldEluc3RhbmNlKCk7cmV0dXJuIU5lLmdldFNlbGVjdGVkTGFzdCgpJiZOZS5mbGlwcGVkP0tlPU5lLmNvdW50Um93cygpLTE6TmUuZ2V0U2VsZWN0ZWRMYXN0KCkmJihOZS5mbGlwcGVkPyhodD1OZS5nZXRTZWxlY3RlZExhc3QoKVswXSxLZT1NYXRoLm1heCgwLGh0LTEpKTpLZT0oaHQ9''@;'; put 'put ''TmUuZ2V0U2VsZWN0ZWRMYXN0KClbMF0pLTEpLGNlKEtlLFJlKX0scHJldmVudERlZmF1bHQ6ITF9LHtrZXlzOltbIkFycm93RG93biJdXSxjYWxsYmFjazpmdW5jdGlvbihSZSl7dmFyIEtlLGh0LE5lPXkuaHRFZGl0b3IuZ2V0SW5zdGFuY2UoKTtpZihOZS5nZXRTZWxlY3RlZExhc3QoKXx8''@;'; put 'put ''TmUuZmxpcHBlZCl7aWYoTmUuZ2V0U2VsZWN0ZWRMYXN0KCkpaWYoTmUuZmxpcHBlZClLZT1OZS5nZXRTZWxlY3RlZExhc3QoKVswXSsxO2Vsc2UgaWYoIU5lLmZsaXBwZWQpe3ZhciBCdD1OZS5jb3VudFJvd3MoKS0xO2h0PU5lLmdldFNlbGVjdGVkTGFzdCgpWzBdLEtlPU1hdGgubWluKEJ0''@;'; put 'put ''LGh0KzEpfX1lbHNlIEtlPTA7cmV0dXJuIGNlKEtlLFJlKX0scHJldmVudERlZmF1bHQ6ITF9XSx7Z3JvdXA6U01lLHJlbGF0aXZlVG9Hcm91cDp1ZWUscG9zaXRpb246ImJlZm9yZSJ9KX19LHtrZXk6InVucmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7YjgobTQoaC5wcm90''@;'; put 'put ''b3R5cGUpLCJ1bnJlZ2lzdGVyU2hvcnRjdXRzIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoU01lKX19XSxbe2tleToiRURJVE9SX1RZUEUiLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiJoYW5kc29udGFibGUifX1dKSxofShYUyk7ZnVuY3Rpb24geDZlKGQpe3JldHVybih4NmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''ZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBNTWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFi''@;'; put 'put ''bGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBLUygpe3JldHVybiBLUz0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0''@;'; put 'put ''P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9a3R0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxLUy5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga3R0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1CdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBUNmUoZCxnKXtyZXR1cm4oVDZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gRXR0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09eDZlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBJNmUoZCl9ZnVuY3Rpb24gSTZlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGlu''@;'; put 'put ''aXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBCdihkKXtyZXR1cm4oQnY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgRDZlPW5ldyBXZWFrTWFwLEw2ZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gU3R0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUg''@;'; put 'put ''bnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0p''@;'; put 'put ''LGcmJlQ2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIE10dChkKXt2YXIgZz1mdW5jdGlvbiB4dHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1CdihkKTtpZihn''@;'; put 'put ''KXt2YXIgQz1Cdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gRXR0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBfdHQoZCxnKXtp''@;'; put 'put ''ZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxmdW5jdGlvbiBUdHQoZCxnLGgpe2cgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29u''@;'; put 'put ''ZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1ofShJNmUoeT1nLmNhbGwodGhpcyx2KSksInNvcnRCeVJlbGV2YW5jZSIsZnVuY3Rpb24oQyxJLGope3ZhciBodCxCdCwkdCxjZT1bXSxfZT1bXSxSZT1DLmxlbmd0aCxOZT1JLmxlbmd0aDtpZigwPT09UmUpe2ZvcihCdD0wO0J0PE5l''@;'; put 'put ''O0J0KyspX2UucHVzaChCdCk7cmV0dXJuIF9lfWZvcihCdD0wO0J0PE5lO0J0Kyspe2lmKGh0PUEzZShxMShJW0J0XSkpLGopJHQ9aHQuaW5kZXhPZihDKTtlbHNle3ZhciBobj10aGlzLmNlbGxQcm9wZXJ0aWVzLmxvY2FsZTskdD1odC50b0xvY2FsZUxvd2VyQ2FzZShobikuaW5kZXhPZihD''@;'; put 'put ''LnRvTG9jYWxlTG93ZXJDYXNlKGhuKSl9LTEhPT0kdCYmY2UucHVzaCh7YmFzZUluZGV4OkJ0LGluZGV4OiR0LGNoYXJzTGVmdDpodC5sZW5ndGgtJHQtUmUsdmFsdWU6aHR9KX1mb3IoY2Uuc29ydChmdW5jdGlvbihEbixpcil7aWYoLTE9PT1pci5pbmRleClyZXR1cm4tMTtpZigtMT09PURu''@;'; put 'put ''LmluZGV4KXJldHVybiAxO2lmKERuLmluZGV4PGlyLmluZGV4KXJldHVybi0xO2lmKGlyLmluZGV4PERuLmluZGV4KXJldHVybiAxO2lmKERuLmluZGV4PT09aXIuaW5kZXgpe2lmKERuLmNoYXJzTGVmdDxpci5jaGFyc0xlZnQpcmV0dXJuLTE7aWYoRG4uY2hhcnNMZWZ0PmlyLmNoYXJzTGVm''@;'; put 'put ''dClyZXR1cm4gMX1yZXR1cm4gMH0pLEJ0PTAsTmU9Y2UubGVuZ3RoO0J0PE5lO0J0KyspX2UucHVzaChjZVtCdF0uYmFzZUluZGV4KTtyZXR1cm4gX2V9KSx5LnF1ZXJ5PW51bGwseS5zdHJpcHBlZENob2ljZXM9W10seS5yYXdDaG9pY2VzPVtdLEQ2ZS5zZXQoSTZlKHkpLHtza2lwT25lOiEx''@;'; put 'put ''LGlzTWFjT1M6eS5ob3Qucm9vdFdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0uaW5kZXhPZigiTWFjIik+LTF9KSx5fXJldHVybiBmdW5jdGlvbiBDdHQoZCxnLGgpe2cmJk1NZShkLnByb3RvdHlwZSxnKSxoJiZNTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7''@;'; put 'put ''d3JpdGFibGU6ITF9KX0oaCxbe2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMucmF3Q2hvaWNlcy5maW5kKGZ1bmN0aW9uKEkpe3JldHVybiB5LnN0cmlwVmFsdWVJZk5lZWRlZChJKT09PXkuVEVYVEFSRUEudmFsdWV9KTtyZXR1cm4gRW8oQyk/Qzp0''@;'; put 'put ''aGlzLlRFWFRBUkVBLnZhbHVlfX0se2tleToiY3JlYXRlRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7S1MoQnYoaC5wcm90b3R5cGUpLCJjcmVhdGVFbGVtZW50cyIsdGhpcykuY2FsbCh0aGlzKSxQMCh0aGlzLmh0Q29udGFpbmVyLCJhdXRvY29tcGxldGVFZGl0b3IiKSxQMCh0aGlzLmh0''@;'; put 'put ''Q29udGFpbmVyLC0xPT09dGhpcy5ob3Qucm9vdFdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0uaW5kZXhPZigiTWFjIik/IiI6Imh0TWFjU2Nyb2xsIil9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1ENmUuZ2V0KHRoaXMpO0tTKEJ2KGgucHJvdG90eXBlKSwi''@;'; put 'put ''b3BlbiIsdGhpcykuY2FsbCh0aGlzKTt2YXIgST10aGlzLmh0RWRpdG9yLmdldEluc3RhbmNlKCksaj12b2lkIDA9PT10aGlzLmNlbGxQcm9wZXJ0aWVzLnRyaW1Ecm9wZG93bnx8dGhpcy5jZWxsUHJvcGVydGllcy50cmltRHJvcGRvd247dGhpcy5zaG93RWRpdGFibGVFbGVtZW50KCksdGhp''@;'; put 'put ''cy5mb2N1cygpO3ZhciBjZT1QYygpOzA9PT1jZSYmQy5pc01hY09TJiYoY2UrPTE1KSx0aGlzLmFkZEhvb2soImJlZm9yZUtleURvd24iLGZ1bmN0aW9uKF9lKXtyZXR1cm4geS5vbkJlZm9yZUtleURvd24oX2UpfSksSS51cGRhdGVTZXR0aW5ncyh7Y29sV2lkdGhzOmo/W3cyKHRoaXMuVEVY''@;'; put 'put ''VEFSRUEpLTJdOnZvaWQgMCx3aWR0aDpqP3cyKHRoaXMuVEVYVEFSRUEpK2NlOnZvaWQgMCxyZW5kZXJlcjpmdW5jdGlvbihSZSxOZSxLZSxodCxCdCwkdCxobil7R3coUmUsTmUsS2UsaHQsQnQsJHQsaG4pO3ZhciBfaSxLaSxEbj15LmNlbGxQcm9wZXJ0aWVzLGlyPURuLmZpbHRlcmluZ0Nh''@;'; put 'put ''c2VTZW5zaXRpdmUscHI9RG4uYWxsb3dIdG1sLEVyPURuLmxvY2FsZSxBcj15LnF1ZXJ5LFlyPXExKCR0KTtZciYmIXByJiYtMSE9PShfaT0hMD09PWlyP1lyLmluZGV4T2YoQXIpOllyLnRvTG9jYWxlTG93ZXJDYXNlKEVyKS5pbmRleE9mKEFyLnRvTG9jYWxlTG93ZXJDYXNlKEVyKSkpJiYo''@;'; put 'put ''S2k9WXIuc3Vic3RyKF9pLEFyLmxlbmd0aCksWXI9WXIucmVwbGFjZShLaSwiPHN0cm9uZz4iLmNvbmNhdChLaSwiPC9zdHJvbmc+IikpKSxOZS5pbm5lckhUTUw9WXJ9LGF1dG9Db2x1bW5TaXplOiEwfSksQy5za2lwT25lJiYoQy5za2lwT25lPSExKSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1l''@;'; put 'put ''b3V0KGZ1bmN0aW9uKCl7eS5xdWVyeUNob2ljZXMoeS5URVhUQVJFQS52YWx1ZSl9KX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVtb3ZlSG9va3NCeUtleSgiYmVmb3JlS2V5RG93biIpLEtTKEJ2KGgucHJvdG90eXBlKSwiY2xvc2UiLHRoaXMpLmNhbGwodGhpcyl9''@;'; put 'put ''fSx7a2V5OiJkaXNjYXJkRWRpdG9yIix2YWx1ZTpmdW5jdGlvbih5KXtLUyhCdihoLnByb3RvdHlwZSksImRpc2NhcmRFZGl0b3IiLHRoaXMpLmNhbGwodGhpcyx5KSx0aGlzLmhvdC52aWV3LnJlbmRlcigpfX0se2tleToicXVlcnlDaG9pY2VzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10''@;'; put 'put ''aGlzLEk9dGhpcy5jZWxsUHJvcGVydGllcy5zb3VyY2U7dGhpcy5xdWVyeT15LCJmdW5jdGlvbiI9PXR5cGVvZiBJP0kuY2FsbCh0aGlzLmNlbGxQcm9wZXJ0aWVzLHksZnVuY3Rpb24oail7Qy5yYXdDaG9pY2VzPWosQy51cGRhdGVDaG9pY2VzTGlzdChDLnN0cmlwVmFsdWVzSWZOZWVkZWQo''@;'; put 'put ''aikpfSk6QXJyYXkuaXNBcnJheShJKT8odGhpcy5yYXdDaG9pY2VzPUksdGhpcy51cGRhdGVDaG9pY2VzTGlzdCh0aGlzLnN0cmlwVmFsdWVzSWZOZWVkZWQoSSkpKTp0aGlzLnVwZGF0ZUNob2ljZXNMaXN0KFtdKX19LHtrZXk6InVwZGF0ZUNob2ljZXNMaXN0Iix2YWx1ZTpmdW5jdGlvbih5''@;'; put 'put ''KXt2YXIgQz1NM2UodGhpcy5URVhUQVJFQSksST13X2UodGhpcy5URVhUQVJFQSksaj10aGlzLmNlbGxQcm9wZXJ0aWVzLnNvcnRCeVJlbGV2YW5jZSxjZT10aGlzLmNlbGxQcm9wZXJ0aWVzLmZpbHRlcixfZT1udWxsLFJlPW51bGwsTmU9eTtqJiYoX2U9dGhpcy5zb3J0QnlSZWxldmFuY2Uo''@;'; put 'put ''dGhpcy5zdHJpcFZhbHVlSWZOZWVkZWQodGhpcy5nZXRWYWx1ZSgpKSxOZSx0aGlzLmNlbGxQcm9wZXJ0aWVzLmZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUpKTt2YXIgS2U9QXJyYXkuaXNBcnJheShfZSk/X2UubGVuZ3RoOjA7aWYoITE9PT1jZSlLZSYmKFJlPV9lWzBdKTtlbHNle2Zvcih2YXIg''@;'; put 'put ''aHQ9W10sQnQ9MCwkdD1OZS5sZW5ndGg7QnQ8JHQmJiEoaiYmS2U8PUJ0KTtCdCsrKWh0LnB1c2goS2U/TmVbX2VbQnRdXTpOZVtCdF0pO1JlPTAsTmU9aHR9dGhpcy5zdHJpcHBlZENob2ljZXM9TmUsdGhpcy5odEVkaXRvci5sb2FkRGF0YShueihbTmVdKSksdGhpcy51cGRhdGVEcm9wZG93''@;'; put 'put ''bkhlaWdodCgpLHRoaXMuZmxpcERyb3Bkb3duSWZOZWVkZWQoKSwhMD09PXRoaXMuY2VsbFByb3BlcnRpZXMuc3RyaWN0JiZ0aGlzLmhpZ2hsaWdodEJlc3RNYXRjaGluZ0Nob2ljZShSZSksdGhpcy5ob3QubGlzdGVuKCksZnoodGhpcy5URVhUQVJFQSxDLEM9PT1JP3ZvaWQgMDpJKX19LHtr''@;'; put 'put ''ZXk6ImZsaXBEcm9wZG93bklmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXhPKHRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuVEFCTEUpLEM9eT09PXRoaXMuaG90LnJvb3RXaW5kb3csST10aGlzLmNlbGxQcm9wZXJ0aWVzLnByZXZlbnRPdmVyZmxvdztpZihDfHwhQyYmKEl8fCJo''@;'; put 'put ''b3Jpem9udGFsIj09PUkpKXJldHVybiExO3ZhciBqPXp1KHRoaXMuVEVYVEFSRUEpLGNlPUIxKHRoaXMuVEVYVEFSRUEpLF9lPXRoaXMuZ2V0RHJvcGRvd25IZWlnaHQoKSxSZT15LnNjcm9sbFRvcCxOZT1CMSh0aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLlRIRUFEKSxLZT16dSh5KSxodD1q''@;'; put 'put ''LnRvcC1LZS50b3AtTmUrUmUsQnQ9eS5zY3JvbGxIZWlnaHQtaHQtTmUtY2UsJHQ9X2U+QnQmJmh0PkJ0O3JldHVybiAkdD90aGlzLmZsaXBEcm9wZG93bihfZSk6dGhpcy51bmZsaXBEcm9wZG93bigpLHRoaXMubGltaXREcm9wZG93bklmTmVlZGVkKCR0P2h0OkJ0LF9lKSwkdH19LHtrZXk6''@;'; put 'put ''ImxpbWl0RHJvcGRvd25JZk5lZWRlZCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZihDPnkpe3ZhciBfZSxJPTAsaj0wLGNlPTA7ZG97SSs9Y2U9dGhpcy5odEVkaXRvci5nZXRSb3dIZWlnaHQoail8fHRoaXMuaHRFZGl0b3Iudmlldy5fd3QuZ2V0U2V0dGluZygiZGVmYXVsdFJvd0hlaWdodCIp''@;'; put 'put ''LGorPTF9d2hpbGUoSTx5KTtfZT1JLWNlLHRoaXMuaHRFZGl0b3IuZmxpcHBlZCYmKHRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGUudG9wPSIiLmNvbmNhdChwYXJzZUludCh0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcCwxMCkrQy1fZSwicHgiKSksdGhpcy5zZXRE''@;'; put 'put ''cm9wZG93bkhlaWdodChJLWNlKX19fSx7a2V5OiJmbGlwRHJvcGRvd24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGU7Qy5wb3NpdGlvbj0iYWJzb2x1dGUiLEMudG9wPSIiLmNvbmNhdCgteSwicHgiKSx0aGlzLmh0RWRpdG9yLmZsaXBw''@;'; put 'put ''ZWQ9ITB9fSx7a2V5OiJ1bmZsaXBEcm9wZG93biIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlO3kucG9zaXRpb249ImFic29sdXRlIix5LnRvcD0iIix0aGlzLmh0RWRpdG9yLmZsaXBwZWQ9dm9pZCAwfX0se2tleToidXBkYXRlRHJvcGRv''@;'; put 'put ''d25IZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5odEVkaXRvci5nZXRDb2xXaWR0aCgwKStQYyh0aGlzLmhvdC5yb290RG9jdW1lbnQpKzIsQz10aGlzLmNlbGxQcm9wZXJ0aWVzLnRyaW1Ecm9wZG93bjt0aGlzLmh0RWRpdG9yLnVwZGF0ZVNldHRpbmdzKHtoZWlnaHQ6dGhp''@;'; put 'put ''cy5nZXREcm9wZG93bkhlaWdodCgpLHdpZHRoOkM/dm9pZCAwOnl9KSx0aGlzLmh0RWRpdG9yLnZpZXcuX3d0Lnd0VGFibGUuYWxpZ25PdmVybGF5c1dpdGhUcmltbWluZ0NvbnRhaW5lcigpfX0se2tleToic2V0RHJvcGRvd25IZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaHRFZGl0''@;'; put 'put ''b3IudXBkYXRlU2V0dGluZ3Moe2hlaWdodDp5fSl9fSx7a2V5OiJoaWdobGlnaHRCZXN0TWF0Y2hpbmdDaG9pY2UiLHZhbHVlOmZ1bmN0aW9uKHkpeyJudW1iZXIiPT10eXBlb2YgeT90aGlzLmh0RWRpdG9yLnNlbGVjdENlbGwoeSwwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLCExKTp0aGlzLmh0''@;'; put 'put ''RWRpdG9yLmRlc2VsZWN0Q2VsbCgpfX0se2tleToiZ2V0RHJvcGRvd25IZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5odEVkaXRvci5nZXRJbnN0YW5jZSgpLmdldFJvd0hlaWdodCgwKXx8MjMsQz10aGlzLmNlbGxQcm9wZXJ0aWVzLnZpc2libGVSb3dzO3JldHVybiB0aGlz''@;'; put 'put ''LnN0cmlwcGVkQ2hvaWNlcy5sZW5ndGg+PUM/Qyp5OnRoaXMuc3RyaXBwZWRDaG9pY2VzLmxlbmd0aCp5Kzh9fSx7a2V5OiJzdHJpcFZhbHVlSWZOZWVkZWQiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLnN0cmlwVmFsdWVzSWZOZWVkZWQoW3ldKVswXX19LHtrZXk6InN0cmlwVmFs''@;'; put 'put ''dWVzSWZOZWVkZWQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuY2VsbFByb3BlcnRpZXMuYWxsb3dIdG1sLEk9VGwoeSxmdW5jdGlvbihjZSl7cmV0dXJuIHExKGNlKX0pO3JldHVybiBUbChJLGZ1bmN0aW9uKGNlKXtyZXR1cm4gQz9jZTpBM2UoY2UpfSl9fSx7a2V5OiJhbGxvd0tl''@;'; put 'put ''eUV2ZW50UHJvcGFnYXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaHRFZGl0b3IuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxJX3Jvdz1DP0MuZnJvbS5yb3c6LTEsaj0hMTtyZXR1cm4geT09PVlvLkFSUk9XX0RPV04mJklfcm93PjAmJklfcm93PHRoaXMuaHRFZGl0b3IuY291''@;'; put 'put ''bnRSb3dzKCktMSYmKGo9ITApLHk9PT1Zby5BUlJPV19VUCYmSV9yb3c+LTEmJihqPSEwKSxqfX0se2tleToib25CZWZvcmVLZXlEb3duIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9RDZlLmdldCh0aGlzKTtpZihJLnNraXBPbmU9ITEseF9lKHkua2V5Q29kZSl8fHkua2V5Q29k''@;'; put 'put ''ZT09PVlvLkJBQ0tTUEFDRXx8eS5rZXlDb2RlPT09WW8uREVMRVRFfHx5LmtleUNvZGU9PT1Zby5JTlNFUlQpe3ZhciBqPTEwO2lmKHkua2V5Q29kZT09PVlvLkMmJih5LmN0cmxLZXl8fHkubWV0YUtleSkpcmV0dXJuO3RoaXMuaXNPcGVuZWQoKXx8KGorPTEwKSx0aGlzLmh0RWRpdG9yJiZ0''@;'; put 'put ''aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KGZ1bmN0aW9uKCl7Qy5xdWVyeUNob2ljZXMoQy5URVhUQVJFQS52YWx1ZSksSS5za2lwT25lPSEwfSxqKX19fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iYXV0b2NvbXBsZXRlIn19XSksaH0oRTZlKTtmdW5jdGlv''@;'; put 'put ''biBPNmUoZCl7cmV0dXJuKE82ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0''@;'; put 'put ''cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIER0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9u''@;'; put 'put ''IEVNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0''@;'; put 'put ''aW9uIFI2ZShkLGcpe3JldHVybihSNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBCdHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1PNmUoZyl8fCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFB0dChkKXtpZih2b2lkIDA9PT1kKXRocm93''@;'; put 'put ''IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIGJ0ZShkKXtyZXR1cm4oYnRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Yu''@;'; put 'put ''YmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHhNZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gT3R0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1''@;'; put 'put ''cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlI2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFJ0dChkKXt2YXIgZz1mdW5jdGlvbiBGdHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hh''@;'; put 'put ''bSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKCl7dmFyIHksdj1idGUoZCk7aWYoZyl7dmFyIEM9YnRlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBCdHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXty''@;'; put 'put ''ZXR1cm4gRHR0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIEx0dChkLGcsaCl7ZyYmRU1lKGQucHJvdG90eXBlLGcpLGgmJkVNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJi''@;'; put 'put ''ZWdpbkVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYoQyYmIm1vdXNldXAiPT09Qy50eXBlKXt2YXIgST10aGlzLlRELnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKTtYYShJLCJodEJhZFZhbHVlIil8fEkuY2xpY2soKX19fSx7a2V5OiJmaW5pc2hFZGl0aW5n''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJzZXRW''@;'; put 'put ''YWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iY2hlY2tib3gifX1dKSxofShWTyksVE1lPUwoNDEwNzgpO2Z1bmN0aW9uIEI2ZShkKXtyZXR1cm4oQjZlPSJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1T''@;'; put 'put ''eW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gSU1lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRh''@;'; put 'put ''YmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gUHYoKXtyZXR1cm4gUHY9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PWp0dChnLGgpO2lmKHkpe3Zh''@;'; put 'put ''ciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sUHYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGp0dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''aGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9XzgoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gUDZlKGQsZyl7cmV0dXJuKFA2ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9f''@;'; put 'put ''Xz15LHZ9KShkLGcpfWZ1bmN0aW9uIEd0dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PUI2ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVj''@;'; put 'put ''dCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gV3R0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gXzgo''@;'; put 'put ''ZCl7cmV0dXJuKF84PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIExNZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gWnR0KGQsZyl7''@;'; put 'put ''aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3Zh''@;'; put 'put ''bHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlA2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHp0dChkKXt2YXIgZz1mdW5jdGlvbiBZdHQoKXtpZigidW5kZWZpbmVkIj09''@;'; put 'put ''dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3Qo''@;'; put 'put ''Qm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1fOChkKTtpZihnKXt2YXIgQz1fOCh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5''@;'; put 'put ''KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gR3R0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBOdHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0o''@;'; put 'put ''dGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuZGVmYXVsdERhdGVGb3JtYXQ9IkREL01NL1lZWVkiLHkuaXNDZWxsRWRpdGVkPSExLHkucGFyZW50RGVzdHJveWVkPSExLHkuJGRhdGVQaWNrZXI9bnVsbCx5fXJldHVybiBmdW5jdGlvbiBWdHQoZCxnLGgpe2cmJklNZShkLnByb3RvdHlwZSxn''@;'; put 'put ''KSxoJiZJTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBrbCl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIGlu''@;'; put 'put ''Y2x1ZGUgbW9tZW50LmpzIHRvIHlvdXIgcHJvamVjdC4iKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgVE1lKXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gaW5jbHVkZSBQaWthZGF5IHRvIHlvdXIgcHJvamVjdC4iKTtQdihfOChoLnByb3RvdHlwZSksImluaXQiLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cyksdGhpcy5pbnN0YW5jZS5hZGRIb29rKCJhZnRlckRlc3Ryb3kiLGZ1bmN0aW9uKCl7eS5wYXJlbnREZXN0cm95ZWQ9ITAseS5kZXN0cm95RWxlbWVudHMoKX0pfX0se2tleToiY3JlYXRlRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7UHYoXzgoaC5wcm90b3R5cGUpLCJjcmVhdGVFbGVt''@;'; put 'put ''ZW50cyIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmRhdGVQaWNrZXI9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHRoaXMuZGF0ZVBpY2tlclN0eWxlPXRoaXMuZGF0ZVBpY2tlci5zdHlsZSx0aGlzLmRhdGVQaWNrZXJTdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUi''@;'; put 'put ''LHRoaXMuZGF0ZVBpY2tlclN0eWxlLnRvcD0wLHRoaXMuZGF0ZVBpY2tlclN0eWxlLmxlZnQ9MCx0aGlzLmRhdGVQaWNrZXJTdHlsZS56SW5kZXg9OTk5OSx0aGlzLmRhdGVQaWNrZXIuc2V0QXR0cmlidXRlKCJkaXIiLHRoaXMuaG90LmlzUnRsKCk/InJ0bCI6Imx0ciIpLFAwKHRoaXMuZGF0''@;'; put 'put ''ZVBpY2tlciwiaHREYXRlcGlja2VySG9sZGVyIiksdGhpcy5ob3Qucm9vdERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kYXRlUGlja2VyKSxuZXcgUDEodGhpcykuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmRhdGVQaWNrZXIsIm1vdXNlZG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIEMu''@;'; put 'put ''c3RvcFByb3BhZ2F0aW9uKCl9KX19LHtrZXk6ImRlc3Ryb3lFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmRhdGVQaWNrZXIucGFyZW50Tm9kZTt0aGlzLiRkYXRlUGlja2VyJiZ0aGlzLiRkYXRlUGlja2VyLmRlc3Ryb3koKSx5JiZ5LnJlbW92ZUNoaWxkKHRoaXMuZGF0''@;'; put 'put ''ZVBpY2tlcil9fSx7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqLGNlLF9lKXtQdihfOChoLnByb3RvdHlwZSksInByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx5LEMsSSxqLGNlLF9lKX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7UHYoXzgoaC5wcm90b3R5cGUpLCJvcGVuIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuc2hvd0RhdGVwaWNrZXIoeSl9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSxDPXRoaXM7dGhpcy5f''@;'; put 'put ''b3BlbmVkPSExLG51bGwhPT0oeT10aGlzLiRkYXRlUGlja2VyKSYmdm9pZCAwIT09eSYmeS5kZXN0cm95JiZ0aGlzLiRkYXRlUGlja2VyLmRlc3Ryb3koKSx0aGlzLmluc3RhbmNlLl9yZWdpc3RlclRpbWVvdXQoZnVuY3Rpb24oKXtDLmluc3RhbmNlLl9yZWZyZXNoQm9yZGVycygpfSksUHYo''@;'; put 'put ''XzgoaC5wcm90b3R5cGUpLCJjbG9zZSIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImZpbmlzaEVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxDPWFyZ3VtZW50cy5sZW5ndGg+MSYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoeSl7dmFyIEk9dGhpcy5vcmlnaW5hbFZhbHVlO3ZvaWQgMCE9PUkmJnRoaXMuc2V0VmFsdWUoSSl9UHYoXzgoaC5wcm90b3R5cGUpLCJmaW5pc2hFZGl0aW5nIix0aGlzKS5jYWxsKHRoaXMseSxDKX19LHtrZXk6InNob3dE''@;'; put 'put ''YXRlcGlja2VyIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgX2UsQz10aGlzLlRELmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEk9dGhpcy5jZWxsUHJvcGVydGllcy5kYXRlRm9ybWF0fHx0aGlzLmRlZmF1bHREYXRlRm9ybWF0LGo9dGhpcy5pbnN0YW5jZS52aWV3LmlzTW91c2VEb3duKCksY2U9''@;'; put 'put ''ISF5JiZPM2UoeS5rZXlDb2RlKTt0aGlzLmRhdGVQaWNrZXIuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuJGRhdGVQaWNrZXI9bmV3IFRNZSh0aGlzLmdldERhdGVQaWNrZXJDb25maWcoKSksdGhpcy4kZGF0ZVBpY2tlci5fb25JbnB1dEZvY3VzPWZ1bmN0aW9uKCl7fSx0aGlzLmRhdGVQ''@;'; put 'put ''aWNrZXJTdHlsZS50b3A9IiIuY29uY2F0KHRoaXMuaG90LnJvb3RXaW5kb3cucGFnZVlPZmZzZXQrQy50b3ArQjEodGhpcy5URCksInB4Iik7dmFyIFJlO1JlPXRoaXMuaG90LmlzUnRsKCk/Qy5yaWdodC13Mih0aGlzLmRhdGVQaWNrZXIpOkMubGVmdCx0aGlzLmRhdGVQaWNrZXJTdHlsZS5s''@;'; put 'put ''ZWZ0PSIiLmNvbmNhdChSZSwicHgiKSx0aGlzLm9yaWdpbmFsVmFsdWU/KGtsKF9lPXRoaXMub3JpZ2luYWxWYWx1ZSxJLCEwKS5pc1ZhbGlkKCkmJnRoaXMuJGRhdGVQaWNrZXIuc2V0TW9tZW50KGtsKF9lLEkpLCEwKSx0aGlzLmdldFZhbHVlKCkhPT10aGlzLm9yaWdpbmFsVmFsdWUmJnRo''@;'; put 'put ''aXMuc2V0VmFsdWUodGhpcy5vcmlnaW5hbFZhbHVlKSwhY2UmJiFqJiZ0aGlzLnNldFZhbHVlKCIiKSk6dGhpcy5jZWxsUHJvcGVydGllcy5kZWZhdWx0RGF0ZT8oa2woX2U9dGhpcy5jZWxsUHJvcGVydGllcy5kZWZhdWx0RGF0ZSxJLCEwKS5pc1ZhbGlkKCkmJnRoaXMuJGRhdGVQaWNrZXIu''@;'; put 'put ''c2V0TW9tZW50KGtsKF9lLEkpLCEwKSwhY2UmJiFqJiZ0aGlzLnNldFZhbHVlKCIiKSk6dGhpcy4kZGF0ZVBpY2tlci5nb3RvVG9kYXkoKX19LHtrZXk6ImhpZGVEYXRlcGlja2VyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGF0ZVBpY2tlclN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGRh''@;'; put 'put ''dGVQaWNrZXIuaGlkZSgpfX0se2tleToiZ2V0RGF0ZVBpY2tlckNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5URVhUQVJFQSxJPXt9O3RoaXMuY2VsbFByb3BlcnRpZXMmJnRoaXMuY2VsbFByb3BlcnRpZXMuZGF0ZVBpY2tlckNvbmZpZyYmcnooSSx0aGlzLmNl''@;'; put 'put ''bGxQcm9wZXJ0aWVzLmRhdGVQaWNrZXJDb25maWcpO3ZhciBqPUkub25TZWxlY3QsY2U9SS5vbkNsb3NlO3JldHVybiBJLmZpZWxkPUMsSS50cmlnZ2VyPUMsSS5jb250YWluZXI9dGhpcy5kYXRlUGlja2VyLEkuYm91bmQ9ITEsSS5mb3JtYXQ9SS5mb3JtYXR8fHRoaXMuZGVmYXVsdERhdGVG''@;'; put 'put ''b3JtYXQsSS5yZXBvc2l0aW9uPUkucmVwb3NpdGlvbnx8ITEsSS5pc1JUTD0hMSxJLm9uU2VsZWN0PWZ1bmN0aW9uKF9lKXt2YXIgUmU9X2U7aXNOYU4oUmUuZ2V0VGltZSgpKXx8KFJlPWtsKFJlKS5mb3JtYXQoeS5jZWxsUHJvcGVydGllcy5kYXRlRm9ybWF0fHx5LmRlZmF1bHREYXRlRm9y''@;'; put 'put ''bWF0KSkseS5zZXRWYWx1ZShSZSkseS5oaWRlRGF0ZXBpY2tlcigpLGomJmooKX0sSS5vbkNsb3NlPWZ1bmN0aW9uKCl7eS5wYXJlbnREZXN0cm95ZWR8fHkuZmluaXNoRWRpdGluZyghMSksY2UmJmNlKCl9LEl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4i''@;'; put 'put ''ZGF0ZSJ9fV0pLGh9KFhTKTtmdW5jdGlvbiBGNmUoZCl7cmV0dXJuKEY2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFV0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg''@;'; put 'put ''YXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIE9NZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIF90ZSgpe3JldHVybiBfdGU9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUp0dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sX3RlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBKdHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo''@;'; put 'put ''ZCxnKSYmbnVsbCE9PShkPVpPKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEg2ZShkLGcpe3JldHVybihINmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlv''@;'; put 'put ''biAkdHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1GNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIHF0dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFpPKGQpe3JldHVybihaTz1PYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBONmU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFh0dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVv''@;'; put 'put ''ZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZINmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBLdHQoZCl7dmFyIGc9ZnVuY3Rpb24gZW50KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVm''@;'; put 'put ''bGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24o''@;'; put 'put ''KXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9Wk8oZCk7aWYoZyl7dmFyIEM9Wk8odGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0''@;'; put 'put ''dXJuICR0dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBVdHQodGhpcyxoKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gUXR0KGQsZyxoKXtnJiZPTWUoZC5wcm90b3R5cGUsZyksaCYmT01lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInBy''@;'; put 'put ''b3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGosY2UsX2Upe190ZShaTyhoLnByb3RvdHlwZSksInByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx5LEMsSSxqLGNlLF9lKSx0aGlzLmNlbGxQcm9wZXJ0aWVzLmZpbHRlcj0hMSx0''@;'; put 'put ''aGlzLmNlbGxQcm9wZXJ0aWVzLnN0cmljdD0hMH19XSxbe2tleToiRURJVE9SX1RZUEUiLGdldDpmdW5jdGlvbigpe3JldHVybiJkcm9wZG93biJ9fV0pLGh9KEw2ZSk7ZnVuY3Rpb24gVjZlKGQpe3JldHVybihWNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1m''@;'; put 'put ''dW5jdGlvbiBubnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBSTWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9''@;'; put 'put ''di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBqNmUoZCxnKXtyZXR1cm4oajZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gYW50KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09VjZlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBsbnQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhh''@;'; put 'put ''c24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBDdGUoZCl7cmV0dXJuKEN0ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZiho''@;'; put 'put ''KX0pKGQpfVZvLmdldFNpbmdsZXRvbigpLmFkZCgiYmVmb3JlVmFsaWRhdGUiLGZ1bmN0aW9uKGQsZyxoKXt2YXIgdj10aGlzLmdldENlbGxNZXRhKGcsdGhpcy5wcm9wVG9Db2woaCkpO3YuZWRpdG9yPT09TjZlJiZ2b2lkIDA9PT12LnN0cmljdCYmKHYuZmlsdGVyPSExLHYuc3RyaWN0PSEw''@;'; put 'put ''KX0pO3ZhciBCTWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGludChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9i''@;'; put 'put ''amVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZqNmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBv''@;'; put 'put ''bnQoZCl7dmFyIGc9ZnVuY3Rpb24gc250KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVh''@;'; put 'put ''bi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9Q3RlKGQpO2lmKGcpe3ZhciBDPUN0ZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJl''@;'; put 'put ''ZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYW50KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIG5udCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBybnQoZCxn''@;'; put 'put ''LGgpe2cmJlJNZShkLnByb3RvdHlwZSxnKSxoJiZSTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxudWxsLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIm51bWVyaWMifX1dKSxofShYUyk7ZnVuY3Rp''@;'; put 'put ''b24gWjZlKGQpe3JldHVybihaNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25z''@;'; put 'put ''dHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBjbnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv''@;'; put 'put ''biBQTWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5j''@;'; put 'put ''dGlvbiBrdGUoKXtyZXR1cm4ga3RlPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1obnQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0''@;'; put 'put ''dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGt0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaG50KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD16TyhkKSk7''@;'; put 'put ''KTtyZXR1cm4gZH1mdW5jdGlvbiB6NmUoZCxnKXtyZXR1cm4oejZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gZ250KGQsZyl7aWYoZyYmKCJvYmpl''@;'; put 'put ''Y3QiPT09WjZlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBtbnQoZCl7aWYo''@;'; put 'put ''dm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiB6TyhkKXtyZXR1cm4oek89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5n''@;'; put 'put ''ZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgRk1lPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBkbnQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmejZlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gcG50KGQpe3ZhciBnPWZ1bmN0aW9uIHZudCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0''@;'; put 'put ''LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVy''@;'; put 'put ''biExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXpPKGQpO2lmKGcpe3ZhciBDPXpPKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBnbnQodGhpcyx5KX19KGgpO2Z1''@;'; put 'put ''bmN0aW9uIGgoKXtyZXR1cm4gY250KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIGZudChkLGcsaCl7ZyYmUE1lKGQucHJvdG90eXBlLGcpLGgmJlBNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0p''@;'; put 'put ''fShoLFt7a2V5OiJjcmVhdGVFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtrdGUoek8oaC5wcm90b3R5cGUpLCJjcmVhdGVFbGVtZW50cyIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLlRFWFRBUkVBPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHRoaXMuVEVY''@;'; put 'put ''VEFSRUEuc2V0QXR0cmlidXRlKCJ0eXBlIiwicGFzc3dvcmQiKSx0aGlzLlRFWFRBUkVBLnNldEF0dHJpYnV0ZSgiZGF0YS1ob3QtaW5wdXQiLCIiKSx0aGlzLlRFWFRBUkVBLmNsYXNzTmFtZT0iaGFuZHNvbnRhYmxlSW5wdXQiLHRoaXMudGV4dGFyZWFTdHlsZT10aGlzLlRFWFRBUkVBLnN0''@;'; put 'put ''eWxlLHRoaXMudGV4dGFyZWFTdHlsZS53aWR0aD0wLHRoaXMudGV4dGFyZWFTdHlsZS5oZWlnaHQ9MCxDcCh0aGlzLlRFWFRBUkVBX1BBUkVOVCksdGhpcy5URVhUQVJFQV9QQVJFTlQuYXBwZW5kQ2hpbGQodGhpcy5URVhUQVJFQSl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4icGFzc3dvcmQifX1dKSxofShYUyk7ZnVuY3Rpb24gU3RlKGQpe3JldHVybihTdGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1''@;'; put 'put ''cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB5bnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u''@;'; put 'put ''b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBITWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITAp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBNdGUoKXtyZXR1cm4gTXRlPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1ibnQoZyxoKTtpZih5KXt2YXIgQz1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LE10ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYm50KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNP''@;'; put 'put ''d25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1HTyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBHNmUoZCxnKXtyZXR1cm4oRzZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXks''@;'; put 'put ''dn0pKGQsZyl9ZnVuY3Rpb24ga250KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09U3RlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9y''@;'; put 'put ''IHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBTbnQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBHTyhkKXty''@;'; put 'put ''ZXR1cm4oR089T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgVzZlPSJodF9lZGl0b3JfdmlzaWJsZSIsTk1lPSJzZWxlY3RFZGl0''@;'; put 'put ''b3IiLHhudD1mdW5jdGlvbihkKXshZnVuY3Rpb24gX250KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0''@;'; put 'put ''LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkc2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIENudChk''@;'; put 'put ''KXt2YXIgZz1mdW5jdGlvbiBNbnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnBy''@;'; put 'put ''b3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1HTyhkKTtpZihnKXt2YXIgQz1HTyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4ga250KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIHludCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiB3bnQoZCxnLGgpe2cm''@;'; put 'put ''JkhNZShkLnByb3RvdHlwZSxnKSxoJiZITWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi''@;'; put 'put ''U0VMRUNUIiksUDAodGhpcy5zZWxlY3QsImh0U2VsZWN0RWRpdG9yIiksdGhpcy5zZWxlY3Quc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3QpLHRoaXMucmVnaXN0ZXJIb29rcygpfX0se2tleToiZ2V0VmFsdWUiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0LnZhbHVlfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuc2VsZWN0LnZhbHVlPXl9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX29wZW5lZD0hMCx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCks''@;'; put 'put ''dGhpcy5zZWxlY3Quc3R5bGUuZGlzcGxheT0iIix0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZWRpdG9yIiksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fb3BlbmVkPSExLHRo''@;'; put 'put ''aXMuc2VsZWN0LnN0eWxlLmRpc3BsYXk9Im5vbmUiLFhhKHRoaXMuc2VsZWN0LFc2ZSkmJnVsKHRoaXMuc2VsZWN0LFc2ZSksdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5jbGVhckhvb2tzKCl9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdC5mb2N1''@;'; put 'put ''cygpfX0se2tleToicmVnaXN0ZXJIb29rcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHkucmVmcmVzaERpbWVuc2lvbnMoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxWZXJ0''@;'; put 'put ''aWNhbGx5IixmdW5jdGlvbigpe3JldHVybiB5LnJlZnJlc2hEaW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ29sdW1uUmVzaXplIixmdW5jdGlvbigpe3JldHVybiB5LnJlZnJlc2hEaW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUm93UmVzaXplIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB5LnJlZnJlc2hEaW1lbnNpb25zKCl9KX19LHtrZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGosY2UsX2Upe3ZhciBSZT10aGlzO010ZShHTyhoLnByb3RvdHlwZSksInByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx5LEMsSSxqLGNlLF9lKTt2YXIgS2UsTmU9dGhp''@;'; put 'put ''cy5jZWxsUHJvcGVydGllcy5zZWxlY3RPcHRpb25zO0tlPXRoaXMucHJlcGFyZU9wdGlvbnMoImZ1bmN0aW9uIj09dHlwZW9mIE5lP05lKHRoaXMucm93LHRoaXMuY29sLHRoaXMucHJvcCk6TmUpLENwKHRoaXMuc2VsZWN0KSxabChLZSxmdW5jdGlvbihodCxCdCl7dmFyICR0PVJlLmhvdC5y''@;'; put 'put ''b290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiT1BUSU9OIik7JHQudmFsdWU9QnQsT3coJHQsaHQpLFJlLnNlbGVjdC5hcHBlbmRDaGlsZCgkdCl9KX19LHtrZXk6InByZXBhcmVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz17fTtpZihBcnJheS5pc0FycmF5KHkpKWZvcih2YXIg''@;'; put 'put ''ST0wLGo9eS5sZW5ndGg7STxqO0krKylDW3lbSV1dPXlbSV07ZWxzZSJvYmplY3QiPT09U3RlKHkpJiYoQz15KTtyZXR1cm4gQ319LHtrZXk6InJlZnJlc2hWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKHRoaXMucm93LHRoaXMucHJv''@;'; put 'put ''cCk7dGhpcy5vcmlnaW5hbFZhbHVlPXksdGhpcy5zZXRWYWx1ZSh5KSx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCl9fSx7a2V5OiJyZWZyZXNoRGltZW5zaW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLnN0YXRlPT09cmYuRURJVElORyl7aWYodGhpcy5URD10aGlzLmdldEVkaXRlZENl''@;'; put 'put ''bGwoKSwhdGhpcy5URClyZXR1cm4gdm9pZCB0aGlzLmNsb3NlKCk7dmFyIHk9dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpLEM9eS50b3AsST15LnN0YXJ0LGo9eS53aWR0aCxfZT10aGlzLnNlbGVjdC5zdHlsZTtfZS5oZWlnaHQ9IiIuY29uY2F0KHkuaGVpZ2h0LCJweCIpLF9lLndpZHRoPSIi''@;'; put 'put ''LmNvbmNhdChqLCJweCIpLF9lLnRvcD0iIi5jb25jYXQoQywicHgiKSxfZVt0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQiXT0iIi5jb25jYXQoSSwicHgiKSxfZS5tYXJnaW49IjBweCIsUDAodGhpcy5zZWxlY3QsVzZlKX19fSx7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEk9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIiksaj17Z3JvdXA6Tk1lfTshMSE9PXRoaXMuaXNJbkZ1bGxFZGl0TW9kZSgpJiZJLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBfZT15LnNlbGVjdC5zZWxlY3RlZEluZGV4LTE7X2U+PTAmJih5LnNlbGVjdFtfZV0uc2VsZWN0ZWQ9ITApfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIF9lPXkuc2VsZWN0LnNlbGVjdGVkSW5kZXgrMTtfZTw9eS5zZWxlY3Qu''@;'; put 'put ''bGVuZ3RoLTEmJih5LnNlbGVjdFtfZV0uc2VsZWN0ZWQ9ITApfX1dLGopfX0se2tleToidW5yZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKE5N''@;'; put 'put ''ZSl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ic2VsZWN0In19XSksaH0oVk8pO2Z1bmN0aW9uIFk2ZShkKXtyZXR1cm4oWTZlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gVG50KGQsZyl7aWYoIShkIGluc3Rh''@;'; put 'put ''bmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gVk1lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFi''@;'; put 'put ''bGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gRXRlKCl7cmV0dXJuIEV0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihn''@;'; put 'put ''LGgsdil7dmFyIHk9RG50KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxFdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIERu''@;'; put 'put ''dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9V08oZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gVTZlKGQsZyl7cmV0dXJuKFU2ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpm''@;'; put 'put ''dW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFJudChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVk2ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gQm50KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs''@;'; put 'put ''ZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gV08oZCl7cmV0dXJuKFdPPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGpNZT1m''@;'; put 'put ''dW5jdGlvbihkKXshZnVuY3Rpb24gTG50KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShn''@;'; put 'put ''JiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlU2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIE9udChkKXt2YXIgZz1m''@;'; put 'put ''dW5jdGlvbiBQbnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52''@;'; put 'put ''YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1XTyhkKTtpZihnKXt2YXIgQz1XTyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gUm50KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIFRudCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBJbnQoZCxnLGgpe2cmJlZNZShkLnBy''@;'; put 'put ''b3RvdHlwZSxnKSxoJiZWTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToicHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksaixjZSxfZSl7RXRlKFdPKGgucHJvdG90eXBlKSwicHJlcGFyZSIsdGhpcykuY2FsbCh0''@;'; put 'put ''aGlzLHksQyxJLGosY2UsX2UpLHRoaXMuVEVYVEFSRUEuZGlyPSJsdHIifX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInRpbWUifX1dKSxofShYUyk7ZnVuY3Rpb24gUTZlKGQsZyxoLHYseSxDLEkpe0Z6LmFwcGx5KHRoaXMsW2QsZyxoLHYseSxDLEldKSxP''@;'; put 'put ''dyhnLG51bGw9PUM/IiI6QywhMSl9ZnVuY3Rpb24gWU8oZCxnLGgsdix5LEMsSSl7dmFyIGo9ZC5yb290RG9jdW1lbnQsY2U9SS5hbGxvd0h0bWw/UTZlOkd3LF9lPWouY3JlYXRlRWxlbWVudCgiRElWIik7aWYoX2UuY2xhc3NOYW1lPSJodEF1dG9jb21wbGV0ZUFycm93IixfZS5hcHBlbmRD''@;'; put 'put ''aGlsZChqLmNyZWF0ZVRleHROb2RlKFN0cmluZy5mcm9tQ2hhckNvZGUoOTY2MCkpKSxjZS5hcHBseSh0aGlzLFtkLGcsaCx2LHksQyxJXSksZy5maXJzdENoaWxkfHxnLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApKSksZy5pbnNlcnRCZWZv''@;'; put 'put ''cmUoX2UsZy5maXJzdENoaWxkKSxQMChnLCJodEF1dG9jb21wbGV0ZSIpLCFkLmFjQXJyb3dMaXN0ZW5lcil7dmFyIFJlPW5ldyBQMShkKTtkLmFjQXJyb3dMaXN0ZW5lcj1mdW5jdGlvbihOZSl7WGEoTmUudGFyZ2V0LCJodEF1dG9jb21wbGV0ZUFycm93IikmJmQudmlldy5fd3QuZ2V0U2V0''@;'; put 'put ''dGluZygib25DZWxsRGJsQ2xpY2siLG51bGwsZC5fY3JlYXRlQ2VsbENvb3JkcyhoLHYpLGcpfSxSZS5hZGRFdmVudExpc3RlbmVyKGQucm9vdEVsZW1lbnQsIm1vdXNlZG93biIsZC5hY0Fycm93TGlzdGVuZXIpLGQuYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXtSZS5k''@;'; put 'put ''ZXN0cm95KCl9KX19UTZlLlJFTkRFUkVSX1RZUEU9Imh0bWwiLFlPLlJFTkRFUkVSX1RZUEU9ImF1dG9jb21wbGV0ZSI7dmFyIFpNZT1uZXcgV2Vha01hcCx6TWU9bmV3IFdlYWtNYXAsVU89ImRhdGEtcm93IixRTz0iZGF0YS1jb2wiO2Z1bmN0aW9uIEo2ZShkLGcsaCx2LHksQyxJKXt2YXIg''@;'; put 'put ''aj1kLnJvb3REb2N1bWVudDtGei5hcHBseSh0aGlzLFtkLGcsaCx2LHksQyxJXSksZnVuY3Rpb24gem50KGQpe3ZhciBnPXpNZS5nZXQoZCk7aWYoIWcpe3ZhciBoPWQucm9vdEVsZW1lbnQ7KGc9bmV3IFAxKGQpKS5hZGRFdmVudExpc3RlbmVyKGgsImNsaWNrIixmdW5jdGlvbih2KXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gVW50KGQsZyl7dmFyIGg9ZC50YXJnZXQ7aWYoWDZlKGgpJiZoLmhhc0F0dHJpYnV0ZShVTykmJmguaGFzQXR0cmlidXRlKFFPKSl7dmFyIHY9cGFyc2VJbnQoaC5nZXRBdHRyaWJ1dGUoVU8pLDEwKSx5PXBhcnNlSW50KGguZ2V0QXR0cmlidXRlKFFPKSwxMCk7Zy5nZXRD''@;'; put 'put ''ZWxsTWV0YSh2LHkpLnJlYWRPbmx5JiZkLnByZXZlbnREZWZhdWx0KCl9fSh2LGQpfSksZy5hZGRFdmVudExpc3RlbmVyKGgsIm1vdXNldXAiLGZ1bmN0aW9uKHYpe3JldHVybiBmdW5jdGlvbiBZbnQoZCxnKXt2YXIgaD1kLnRhcmdldDshWDZlKGgpfHwhaC5oYXNBdHRyaWJ1dGUoVU8pfHwh''@;'; put 'put ''aC5oYXNBdHRyaWJ1dGUoUU8pfHxzZXRUaW1lb3V0KGcubGlzdGVuLDEwKX0odixkKX0pLGcuYWRkRXZlbnRMaXN0ZW5lcihoLCJjaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBmdW5jdGlvbiBRbnQoZCxnKXt2YXIgaD1kLnRhcmdldDtpZihYNmUoaCkmJmguaGFzQXR0cmlidXRlKFVPKSYm''@;'; put 'put ''aC5oYXNBdHRyaWJ1dGUoUU8pKXt2YXIgdj1wYXJzZUludChoLmdldEF0dHJpYnV0ZShVTyksMTApLHk9cGFyc2VJbnQoaC5nZXRBdHRyaWJ1dGUoUU8pLDEwKSxDPWcuZ2V0Q2VsbE1ldGEodix5KTtDLnJlYWRPbmx5fHxnLnNldERhdGFBdENlbGwodix5LGQudGFyZ2V0LmNoZWNrZWQ/dm9p''@;'; put 'put ''ZCAwPT09Qy51bmNoZWNrZWRUZW1wbGF0ZXx8Qy5jaGVja2VkVGVtcGxhdGU6dm9pZCAwIT09Qy51bmNoZWNrZWRUZW1wbGF0ZSYmQy51bmNoZWNrZWRUZW1wbGF0ZSl9fSh2LGQpfSksek1lLnNldChkLGcpfX0oZCk7dmFyIGNlPWZ1bmN0aW9uIEdudChkKXt2YXIgZz1kLmNyZWF0ZUVsZW1l''@;'; put 'put ''bnQoImlucHV0Iik7cmV0dXJuIGcuY2xhc3NOYW1lPSJodENoZWNrYm94UmVuZGVyZXJJbnB1dCIsZy50eXBlPSJjaGVja2JveCIsZy5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsIm9mZiIpLGcuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksZy5jbG9uZU5vZGUoITEpfShqKSxf''@;'; put 'put ''ZT1JLmxhYmVsLFJlPSExO2lmKHZvaWQgMD09PUkuY2hlY2tlZFRlbXBsYXRlJiYoSS5jaGVja2VkVGVtcGxhdGU9ITApLHZvaWQgMD09PUkudW5jaGVja2VkVGVtcGxhdGUmJihJLnVuY2hlY2tlZFRlbXBsYXRlPSExKSxDcChnKSxDPT09SS5jaGVja2VkVGVtcGxhdGV8fHExKEMpLnRvTG9j''@;'; put 'put ''YWxlTG93ZXJDYXNlKEkubG9jYWxlKT09PXExKEkuY2hlY2tlZFRlbXBsYXRlKS50b0xvY2FsZUxvd2VyQ2FzZShJLmxvY2FsZSk/Y2UuY2hlY2tlZD0hMDpDPT09SS51bmNoZWNrZWRUZW1wbGF0ZXx8cTEoQykudG9Mb2NhbGVMb3dlckNhc2UoSS5sb2NhbGUpPT09cTEoSS51bmNoZWNrZWRU''@;'; put 'put ''ZW1wbGF0ZSkudG9Mb2NhbGVMb3dlckNhc2UoSS5sb2NhbGUpP2NlLmNoZWNrZWQ9ITE6ZGMoQyk/UDAoY2UsIm5vVmFsdWUiKTooY2Uuc3R5bGUuZGlzcGxheT0ibm9uZSIsUDAoY2UsImh0QmFkVmFsdWUiKSxSZT0hMCksY2Uuc2V0QXR0cmlidXRlKFVPLGgpLGNlLnNldEF0dHJpYnV0ZShR''@;'; put 'put ''Tyx2KSwhUmUmJl9lKXt2YXIgTmU9IiI7aWYoX2UudmFsdWUpTmU9ImZ1bmN0aW9uIj09dHlwZW9mIF9lLnZhbHVlP19lLnZhbHVlLmNhbGwodGhpcyxoLHYseSxDKTpfZS52YWx1ZTtlbHNlIGlmKF9lLnByb3BlcnR5KXt2YXIgS2U9ZC5nZXREYXRhQXRSb3dQcm9wKGgsX2UucHJvcGVydHkp''@;'; put 'put ''O05lPW51bGwhPT1LZT9LZToiIn12YXIgaHQ9ZnVuY3Rpb24gV250KGQsZyxoKXt2YXIgdj1kLmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7cmV0dXJuIHYuY2xhc3NOYW1lPSJodENoZWNrYm94UmVuZGVyZXJMYWJlbCAiLmNvbmNhdChoPyJmdWxsV2lkdGgiOiIiKSx2LmFwcGVuZENoaWxkKGQu''@;'; put 'put ''Y3JlYXRlVGV4dE5vZGUoZykpLHYuY2xvbmVOb2RlKCEwKX0oaixOZSwhMCE9PV9lLnNlcGFyYXRlZCk7ImJlZm9yZSI9PT1fZS5wb3NpdGlvbj9fZS5zZXBhcmF0ZWQ/KGcuYXBwZW5kQ2hpbGQoaHQpLGcuYXBwZW5kQ2hpbGQoY2UpKTooaHQuYXBwZW5kQ2hpbGQoY2UpLGNlPWh0KTooIV9l''@;'; put 'put ''LnBvc2l0aW9ufHwiYWZ0ZXIiPT09X2UucG9zaXRpb24pJiYoX2Uuc2VwYXJhdGVkPyhnLmFwcGVuZENoaWxkKGNlKSxnLmFwcGVuZENoaWxkKGh0KSk6KGh0Lmluc2VydEJlZm9yZShjZSxodC5maXJzdENoaWxkKSxjZT1odCkpfWZ1bmN0aW9uICR0KCl7dmFyIERuPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0saXI9ZC5nZXRTZWxlY3RlZFJhbmdlKCk7aWYoaXIpZm9yKHZhciBwcj0wO3ByPGlyLmxlbmd0aDtwcisrKXtmb3IodmFyIEVyPWlyW3ByXS5nZXRUb3BTdGFydENvcm5lcigpLEFyPUVyLnJvdyxZcj1Fci5jb2wsX2k9''@;'; put 'put ''aXJbcHJdLmdldEJvdHRvbUVuZENvcm5lcigpLEtpPV9pLnJvdyxrbz1faS5jb2wsT289W10sYmE9QXI7YmE8PUtpO2JhKz0xKWZvcih2YXIgWWE9WXI7WWE8PWtvO1lhKz0xKXt2YXIgb2E9ZC5nZXRDZWxsTWV0YShiYSxZYSk7aWYoImNoZWNrYm94IiE9PW9hLnR5cGUpcmV0dXJuO2lmKCEw''@;'; put 'put ''IT09b2EucmVhZE9ubHkpe3ZvaWQgMD09PW9hLmNoZWNrZWRUZW1wbGF0ZSYmKG9hLmNoZWNrZWRUZW1wbGF0ZT0hMCksdm9pZCAwPT09b2EudW5jaGVja2VkVGVtcGxhdGUmJihvYS51bmNoZWNrZWRUZW1wbGF0ZT0hMSk7dmFyIHFhPWQuZ2V0RGF0YUF0Q2VsbChiYSxZYSk7ITE9PT1Ebj9b''@;'; put 'put ''b2EuY2hlY2tlZFRlbXBsYXRlLG9hLmNoZWNrZWRUZW1wbGF0ZS50b1N0cmluZygpXS5pbmNsdWRlcyhxYSk/T28ucHVzaChbYmEsWWEsb2EudW5jaGVja2VkVGVtcGxhdGVdKTpbb2EudW5jaGVja2VkVGVtcGxhdGUsb2EudW5jaGVja2VkVGVtcGxhdGUudG9TdHJpbmcoKSxudWxsLHZvaWQg''@;'; put 'put ''MF0uaW5jbHVkZXMocWEpJiZPby5wdXNoKFtiYSxZYSxvYS5jaGVja2VkVGVtcGxhdGVdKTpPby5wdXNoKFtiYSxZYSxvYS51bmNoZWNrZWRUZW1wbGF0ZV0pfX1Pby5sZW5ndGg+MCYmZC5zZXREYXRhQXRDZWxsKE9vKX19ZnVuY3Rpb24gaG4oKXt2YXIgRG49ZC5nZXRTZWxlY3RlZFJhbmdl''@;'; put 'put ''KCk7aWYoRG4pe2Zvcih2YXIgaXI9MDtpcjxEbi5sZW5ndGg7aXIrKylmb3IodmFyIHByPURuW2lyXS5nZXRUb3BTdGFydENvcm5lcigpLEVyPURuW2lyXS5nZXRCb3R0b21FbmRDb3JuZXIoKSxBcj1wci5yb3c7QXI8PUVyLnJvdztBcisrKWZvcih2YXIgWXI9cHIuY29sO1lyPD1Fci5jb2w7''@;'; put 'put ''WXIrKyl7dmFyIF9pPWQuZ2V0Q2VsbE1ldGEoQXIsWXIpO2lmKCJjaGVja2JveCIhPT1faS50eXBlKXJldHVybiExO3ZhciBLaT1kLmdldENlbGwoQXIsWXIpO2lmKG51bGw9PUtpKXJldHVybiEwO2lmKEtpLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W3R5cGU9Y2hlY2tib3hdIikubGVuZ3Ro''@;'; put 'put ''PjAmJiFfaS5yZWFkT25seSlyZXR1cm4hMH1yZXR1cm4hMX19KCFfZXx8X2UmJiFfZS5zZXBhcmF0ZWQpJiZnLmFwcGVuZENoaWxkKGNlKSxSZSYmZy5hcHBlbmRDaGlsZChqLmNyZWF0ZVRleHROb2RlKCIjYmFkLXZhbHVlIyIpKSxaTWUuaGFzKGQpfHwoWk1lLnNldChkLCEwKSxmdW5jdGlv''@;'; put 'put ''biBCdCgpe2QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0cyhbe2tleXM6W1sic3BhY2UiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gJHQoKSwhaG4oKX19LHtrZXlzOltbImVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''ICR0KCksIWhuKCl9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBkLmdldFNldHRpbmdzKCkuZW50ZXJCZWdpbnNFZGl0aW5nfX0se2tleXM6W1siZGVsZXRlIl0sWyJiYWNrc3BhY2UiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gJHQoITApLCFobigpfSxyZWxhdGl2ZVRvR3Jv''@;'; put 'put ''dXA6Z3oscG9zaXRpb246ImJlZm9yZSJ9XSx7Z3JvdXA6ImNoZWNrYm94UmVuZGVyZXIifSl9KCkpfWZ1bmN0aW9uIFg2ZShkKXtyZXR1cm4iSU5QVVQiPT09ZC50YWdOYW1lJiYiY2hlY2tib3giPT09ZC5nZXRBdHRyaWJ1dGUoInR5cGUiKX1Wby5nZXRTaW5nbGV0b24oKS5hZGQoIm1vZGlm''@;'; put 'put ''eUF1dG9Db2x1bW5TaXplU2VlZCIsZnVuY3Rpb24oZCxnLGgpe3ZhciB2PWcubGFiZWwsQz1nLnJvdztpZigiY2hlY2tib3giPT09Zy50eXBlKXtpZih2KXt2YXIgY2U9di52YWx1ZSxfZT12LnByb3BlcnR5LFJlPWg7aWYoY2UpUmU9ImZ1bmN0aW9uIj09dHlwZW9mIGNlP2NlKEMsZy5jb2x1''@;'; put 'put ''bW4sZy5wcm9wLGgpOmNlO2Vsc2UgaWYoX2Upe3ZhciBOZT10aGlzLmdldERhdGFBdFJvd1Byb3AoQyxfZSk7UmU9bnVsbCE9PU5lP05lOmh9ZD1SZX1yZXR1cm4gZH19KSxKNmUuUkVOREVSRVJfVFlQRT0iY2hlY2tib3giO3ZhciAkUz1MKDI0NzE1KTtmdW5jdGlvbiBLNmUoZCxnLGgsdix5''@;'; put 'put ''LEMsSSl7dmFyIGo9QztpZihnNChqKSl7dmFyIGNlPUkubnVtZXJpY0Zvcm1hdCxfZT1jZSYmY2UuY3VsdHVyZXx8Ii0iLFJlPWNlJiZjZS5wYXR0ZXJuLE5lPUkuY2xhc3NOYW1lfHwiIixLZT1OZS5sZW5ndGg/TmUuc3BsaXQoIiAiKTpbXTtpZih2b2lkIDAhPT1fZSYmISRTLmxhbmd1YWdl''@;'; put 'put ''cygpW19lXSl7dmFyIGh0PV9lLnJlcGxhY2UoIi0iLCIiKSxCdD0kUy5hbGxMYW5ndWFnZXM/JFMuYWxsTGFuZ3VhZ2VzW19lXTokU1todF07QnQmJiRTLnJlZ2lzdGVyTGFuZ3VhZ2UoQnQpfSRTLnNldExhbmd1YWdlKF9lKSxqPSRTKGopLmZvcm1hdChSZXx8IjAiKSxLZS5pbmRleE9mKCJo''@;'; put 'put ''dExlZnQiKTwwJiZLZS5pbmRleE9mKCJodENlbnRlciIpPDAmJktlLmluZGV4T2YoImh0UmlnaHQiKTwwJiZLZS5pbmRleE9mKCJodEp1c3RpZnkiKTwwJiZLZS5wdXNoKCJodFJpZ2h0IiksS2UuaW5kZXhPZigiaHROdW1lcmljIik8MCYmS2UucHVzaCgiaHROdW1lcmljIiksSS5jbGFzc05h''@;'; put 'put ''bWU9S2Uuam9pbigiICIpLGcuZGlyPSJsdHIifUd3KGQsZyxoLHYseSxqLEkpfWZ1bmN0aW9uICQ2ZShkLGcsaCx2LHksQyxJKXtHdy5hcHBseSh0aGlzLFtkLGcsaCx2LHksQyxJXSk7dmFyIGNlPUkuaGFzaFN5bWJvbHx8IioiLF9lPSIiO3JhKChJLmhhc2hMZW5ndGh8fGcuaW5uZXJIVE1M''@;'; put 'put ''Lmxlbmd0aCktMSxmdW5jdGlvbigpe19lKz1jZX0pLE93KGcsX2UpfWZ1bmN0aW9uIHE2ZShkLGcsaCx2LHksQyxJKXtHdy5hcHBseSh0aGlzLFtkLGcsaCx2LHksQyxJXSksZy5kaXI9Imx0ciJ9ZnVuY3Rpb24gSHooZCxnKXt2YXIgaD1kO251bGw9PWgmJihoPSIiKSx0aGlzLmFsbG93RW1w''@;'; put 'put ''dHkmJiIiPT09aD9nKCEwKTp0aGlzLnN0cmljdCYmdGhpcy5zb3VyY2U/ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuc291cmNlP3RoaXMuc291cmNlKGgsV01lKGgsZykpOldNZShoLGcpKHRoaXMuc291cmNlKTpnKCEwKX1mdW5jdGlvbiBXTWUoZCxnKXt2YXIgaD1kO3JldHVybiBmdW5jdGlv''@;'; put 'put ''bih2KXtmb3IodmFyIHk9ITEsQz0wLEk9di5sZW5ndGg7QzxJO0MrKylpZihoPT09dltDXSl7eT0hMDticmVha31nKHkpfX1mdW5jdGlvbiBZTWUoZCl7dmFyIGc9bmV3IERhdGUoZCk7cmV0dXJuIGlzTmFOKG5ldyBEYXRlKCIiLmNvbmNhdChkLCJUMDA6MDAiKSkuZ2V0RGF0ZSgpKT9nOm5l''@;'; put 'put ''dyBEYXRlKGcuZ2V0VGltZSgpKzZlNCpnLmdldFRpbWV6b25lT2Zmc2V0KCkpfWZ1bmN0aW9uIHh0ZShkLGcpe3ZhciBoPVBfZSgiZGF0ZSIsdGhpcy5pbnN0YW5jZSksdj1kLHk9ITA7bnVsbD09diYmKHY9IiIpO3ZhciBDPWtsKHYsdGhpcy5kYXRlRm9ybWF0fHxoLmRlZmF1bHREYXRlRm9y''@;'; put 'put ''bWF0LCEwKS5pc1ZhbGlkKCksST1rbChuZXcgRGF0ZSh2KSkuaXNWYWxpZCgpfHxDO2lmKHRoaXMuYWxsb3dFbXB0eSYmIiI9PT12JiYoST0hMCxDPSEwKSxJfHwoeT0hMSksIUkmJkMmJih5PSEwKSxJJiYhQylpZighMD09PXRoaXMuY29ycmVjdEZvcm1hdCl7dmFyIGo9ZnVuY3Rpb24gdHJ0''@;'; put 'put ''KGQsZyl7dmFyIGg9a2woWU1lKGQpKSx2PWtsKGQsZykseT1kLnNlYXJjaCgvW0Etel0vZyk+LTE7cmV0dXJuKGguaXNWYWxpZCgpJiZoLmZvcm1hdCgieCIpPT09di5mb3JtYXQoIngiKXx8IXYuaXNWYWxpZCgpfHx5P2g6dikuZm9ybWF0KGcpfSh2LHRoaXMuZGF0ZUZvcm1hdCksY2U9dGhp''@;'; put 'put ''cy5pbnN0YW5jZS50b1Zpc3VhbFJvdyh0aGlzLnJvdyksX2U9dGhpcy5pbnN0YW5jZS50b1Zpc3VhbENvbHVtbih0aGlzLmNvbCk7dGhpcy5pbnN0YW5jZS5zZXREYXRhQXRDZWxsKGNlLF9lLGosImRhdGVWYWxpZGF0b3IiKSx5PSEwfWVsc2UgeT0hMTtnKHkpfWZ1bmN0aW9uIGU4ZShkLGcp''@;'; put 'put ''e3ZhciBoPWQ7bnVsbD09aCYmKGg9IiIpLGcoISghdGhpcy5hbGxvd0VtcHR5fHwiIiE9PWgpfHwiIiE9PWgmJmc0KGQpKX1LNmUuUkVOREVSRVJfVFlQRT0ibnVtZXJpYyIsJDZlLlJFTkRFUkVSX1RZUEU9InBhc3N3b3JkIixxNmUuUkVOREVSRVJfVFlQRT0idGltZSIsSHouVkFMSURBVE9S''@;'; put 'put ''X1RZUEU9ImF1dG9jb21wbGV0ZSIsTCg3Nzk0KSx4dGUuVkFMSURBVE9SX1RZUEU9ImRhdGUiLGU4ZS5WQUxJREFUT1JfVFlQRT0ibnVtZXJpYyI7dmFyIHJydD1bIllZWVktTU0tRERUSEg6bW06c3MuU1NTWiIsIlgiLCJ4Il07ZnVuY3Rpb24gVHRlKGQsZyl7dmFyIGg9dGhpcy50aW1lRm9y''@;'; put 'put ''bWF0fHwiaDptbTpzcyBhIix2PSEwLHk9ZDtudWxsPT09eSYmKHk9IiIpLHk9L15cZHszLH0kLy50ZXN0KHkpP3BhcnNlSW50KHksMTApOnk7dmFyIEM9L15cZHsxLDJ9JC8udGVzdCh5KTtDJiYoeSs9IjowMCIpO3ZhciBJPWtsKHkscnJ0LCEwKS5pc1ZhbGlkKCk/a2woeSk6a2woeSxoKSxq''@;'; put 'put ''PUkuaXNWYWxpZCgpLGNlPWtsKHksaCwhMCkuaXNWYWxpZCgpJiYhQztpZih0aGlzLmFsbG93RW1wdHkmJiIiPT09eSYmKGo9ITAsY2U9ITApLGp8fCh2PSExKSwhaiYmY2UmJih2PSEwKSxqJiYhY2UpaWYoITA9PT10aGlzLmNvcnJlY3RGb3JtYXQpe3ZhciBfZT1JLmZvcm1hdChoKSxSZT10''@;'; put 'put ''aGlzLmluc3RhbmNlLnRvVmlzdWFsUm93KHRoaXMucm93KSxOZT10aGlzLmluc3RhbmNlLnRvVmlzdWFsQ29sdW1uKHRoaXMuY29sKTt0aGlzLmluc3RhbmNlLnNldERhdGFBdENlbGwoUmUsTmUsX2UsInRpbWVWYWxpZGF0b3IiKSx2PSEwfWVsc2Ugdj0hMTtnKHYpfVR0ZS5WQUxJREFUT1Jf''@;'; put 'put ''VFlQRT0idGltZSI7dmFyIGxydD17Q0VMTF9UWVBFOiJhdXRvY29tcGxldGUiLGVkaXRvcjpMNmUscmVuZGVyZXI6WU8sdmFsaWRhdG9yOkh6fSx1cnQ9e0NFTExfVFlQRToiY2hlY2tib3giLGVkaXRvcjp4TWUscmVuZGVyZXI6SjZlfSxmcnQ9e0NFTExfVFlQRToiZGF0ZSIsZWRpdG9yOkxN''@;'; put 'put ''ZSxyZW5kZXJlcjpZTyx2YWxpZGF0b3I6eHRlfSxkcnQ9e0NFTExfVFlQRToiZHJvcGRvd24iLGVkaXRvcjpONmUscmVuZGVyZXI6WU8sdmFsaWRhdG9yOkh6fSxncnQ9e0NFTExfVFlQRToiaGFuZHNvbnRhYmxlIixlZGl0b3I6RTZlLHJlbmRlcmVyOllPfSx2cnQ9e0NFTExfVFlQRToibnVt''@;'; put 'put ''ZXJpYyIsZWRpdG9yOkJNZSxyZW5kZXJlcjpLNmUsdmFsaWRhdG9yOmU4ZSxkYXRhVHlwZToibnVtYmVyIn0seXJ0PXtDRUxMX1RZUEU6InBhc3N3b3JkIixlZGl0b3I6Rk1lLHJlbmRlcmVyOiQ2ZSxjb3B5YWJsZTohMX0sYnJ0PXtDRUxMX1RZUEU6InRpbWUiLGVkaXRvcjpqTWUscmVuZGVy''@;'; put 'put ''ZXI6cTZlLHZhbGlkYXRvcjpUdGV9O2Z1bmN0aW9uIFVNZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFFNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5s''@;'; put 'put ''ZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fUwoMzgxODMpO3ZhciBKTWU9bmV3IE1hcChbWyJwbHVn''@;'; put 'put ''aW4iLGZ1bmN0aW9uIEJHZShkKXtyZXR1cm4hIW16KGQpfV0sWyJjZWxsLXR5cGUiLEVrZV0sWyJlZGl0b3IiLEJfZV0sWyJyZW5kZXJlciIscV9lXSxbInZhbGlkYXRvciIsZUNlXV0pLHFTPW5ldyBXZWFrTWFwLHQ4ZT1bXSxMZz1udWxsLFhNZT1uZXcgV2Vha1NldCxHcz1mdW5jdGlvbigp''@;'; put 'put ''e2Z1bmN0aW9uIGQoZyl7dmFyIGg9dGhpczsoZnVuY3Rpb24geHJ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLGZ1bmN0aW9uIElydChkLGcpeyhmdW5jdGlvbiBEcnQo''@;'; put 'put ''ZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLmFkZChkKX0odGhpcyxYTWUpLE1nKHRoaXMsImhvdCIsZyx7d3JpdGFibGU6ITF9KSxxUy5z''@;'; put 'put ''ZXQodGhpcyx7aG9va3M6e319KSxMZz1udWxsLHRoaXMucGx1Z2luTmFtZT1udWxsLHRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzPVtdLHRoaXMuaXNQbHVnaW5zUmVhZHk9ITEsdGhpcy5lbmFibGVkPSExLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5ob3QuYWRkSG9vaygiYWZ0''@;'; put 'put ''ZXJQbHVnaW5zSW5pdGlhbGl6ZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25BZnRlclBsdWdpbnNJbml0aWFsaXplZCgpfSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJVcGRhdGVTZXR0aW5ncyIsZnVuY3Rpb24odil7cmV0dXJuIGgub25VcGRhdGVTZXR0aW5ncyh2KX0pLHRoaXMuaG90LmFk''@;'; put 'put ''ZEhvb2soImJlZm9yZUluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGguaW5pdCgpfSl9cmV0dXJuIGZ1bmN0aW9uIFRydChkLGcsaCl7ZyYmUU1lKGQucHJvdG90eXBlLGcpLGgmJlFNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7''@;'; put 'put ''a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXM7dGhpcy5wbHVnaW5OYW1lPXRoaXMuaG90LmdldFBsdWdpbk5hbWUodGhpcyk7dmFyIHY9dGhpcy5jb25zdHJ1Y3Rvci5QTFVHSU5fREVQUyx5PUFycmF5LmlzQXJyYXkodik/djpbXTtpZih5Lmxlbmd0aD4wKXt2YXIgQz1b''@;'; put 'put ''XTtpZih5LmZvckVhY2goZnVuY3Rpb24oX2Upe3ZhciBOZT1mdW5jdGlvbiBDcnQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gRXJ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBNcnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITAp''@;'; put 'put ''O31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBTcnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFVNZShkLGcp''@;'; put 'put ''O3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9''@;'; put 'put ''PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gVU1lKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBrcnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3Rh''@;'; put 'put ''bmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShfZS5zcGxpdCgiOiIpLDIpLEtlPU5lWzBdLGh0PU5lWzFdO2lmKCFKTWUuaGFzKEtlKSl0aHJvdyBuZXcgRXJyb3IoJ1Vu''@;'; put 'put ''a25vd24gcGx1Z2luIGRlcGVuZGVuY3kgdHlwZSAiJy5jb25jYXQoS2UsJyIgd2FzIGZvdW5kLicpKTtKTWUuZ2V0KEtlKShodCl8fEMucHVzaCgiIC0gIi5jb25jYXQoaHQsIiAoIikuY29uY2F0KEtlLCIpIikpfSksQy5sZW5ndGg+MCl7dmFyIEk9WyJUaGUgIi5jb25jYXQodGhpcy5wbHVn''@;'; put 'put ''aW5OYW1lLCIgcGx1Z2luIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgbW9kdWxlczpcbiIpLCIiLmNvbmNhdChDLmpvaW4oIlxuIiksIlxuIildLmpvaW4oIiIpO3Q4ZS5wdXNoKEkpfX1pZihMZ3x8KExnPXRkZSgpKSxMZy5pbmRleE9mKCJVbmRvUmVkbyIpPj0wJiZMZy5zcGxpY2UoTGcuaW5k''@;'; put 'put ''ZXhPZigiVW5kb1JlZG8iKSwxKSxMZy5pbmRleE9mKHRoaXMucGx1Z2luTmFtZSk+PTAmJkxnLnNwbGljZShMZy5pbmRleE9mKHRoaXMucGx1Z2luTmFtZSksMSksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIixmdW5jdGlvbigpe2guaXNFbmFibGVkJiZo''@;'; put 'put ''LmlzRW5hYmxlZCgpJiZoLmVuYWJsZVBsdWdpbigpfSksMD09PUxnLmxlbmd0aCl7aWYodDhlLmxlbmd0aD4wKXt2YXIgY2U9WyIiLmNvbmNhdCh0OGUuam9pbigiXG4iKSwiXG4iKSwiWW91IGhhdmUgdG8gaW1wb3J0IGFuZCByZWdpc3RlciB0aGVtIG1hbnVhbGx5LiJdLmpvaW4oIiIpO3Ro''@;'; put 'put ''cm93IG5ldyBFcnJvcihjZSl9dGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIil9dGhpcy5pbml0aWFsaXplZD0hMH19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITB9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyJiZ0aGlzLmV2ZW50TWFuYWdlci5jbGVhcigpLHRoaXMuY2xlYXJIb29rcygpLHRoaXMuZW5hYmxlZD0hMX19LHtrZXk6ImFkZEhvb2siLHZhbHVlOmZ1bmN0aW9uKGgsdil7cVMuZ2V0KHRoaXMpLmhvb2tzW2hdPXFTLmdldCh0aGlzKS5o''@;'; put 'put ''b29rc1toXXx8W107dmFyIHk9cVMuZ2V0KHRoaXMpLmhvb2tzW2hdO3RoaXMuaG90LmFkZEhvb2soaCx2KSx5LnB1c2godikscVMuZ2V0KHRoaXMpLmhvb2tzW2hdPXl9fSx7a2V5OiJyZW1vdmVIb29rcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcztHcihxUy5nZXQodGhpcykuaG9v''@;'; put 'put ''a3NbaF18fFtdLGZ1bmN0aW9uKHkpe3YuaG90LnJlbW92ZUhvb2soaCx5KX0pfX0se2tleToiY2xlYXJIb29rcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9cVMuZ2V0KHRoaXMpLmhvb2tzO1psKHYsZnVuY3Rpb24oeSxDKXtyZXR1cm4gaC5yZW1vdmVIb29rcyhDKX0pLHYubGVu''@;'; put 'put ''Z3RoPTB9fSx7a2V5OiJjYWxsT25QbHVnaW5zUmVhZHkiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuaXNQbHVnaW5zUmVhZHk/aCgpOnRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzLnB1c2goaCl9fSx7a2V5OiJvbkFmdGVyUGx1Z2luc0luaXRpYWxpemVkIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe0dyKHRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzLGZ1bmN0aW9uKGgpe3JldHVybiBoKCl9KSx0aGlzLnBsdWdpbnNJbml0aWFsaXplZENhbGxiYWNrcy5sZW5ndGg9MCx0aGlzLmlzUGx1Z2luc1JlYWR5PSEwfX0se2tleToib25VcGRhdGVTZXR0aW5ncyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oaCl7dmFyIHY9ZnVuY3Rpb24gTHJ0KGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBofSh0aGlzLFhNZSxScnQpLmNhbGwodGhpcyxoKTt0aGlzLmlzRW5h''@;'; put 'put ''YmxlZCYmKHRoaXMuZW5hYmxlZCYmIXRoaXMuaXNFbmFibGVkKCkmJnRoaXMuZGlzYWJsZVBsdWdpbigpLCF0aGlzLmVuYWJsZWQmJnRoaXMuaXNFbmFibGVkKCkmJnRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5lbmFibGVkJiZ0aGlzLmlzRW5hYmxlZCgpJiZ2JiZ0aGlzLnVwZGF0ZVBsdWdp''@;'; put 'put ''bihoKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMuZXZlbnRNYW5hZ2VyJiZ0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCksdGhpcy5jbGVhckhvb2tzKCksWmwodGhpcyxm''@;'; put 'put ''dW5jdGlvbih2LHkpeyJob3QiIT09eSYmKGhbeV09bnVsbCl9KSxkZWxldGUgdGhpcy50LGRlbGV0ZSB0aGlzLmhvdH19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImJhc2UifX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bdGhp''@;'; put 'put ''cy5QTFVHSU5fS0VZXX19XSksZH0oKTtmdW5jdGlvbiBScnQoZCl7aWYoIWQpcmV0dXJuITE7dmFyIGc9dGhpcy5jb25zdHJ1Y3Rvci5TRVRUSU5HX0tFWVM7aWYoImJvb2xlYW4iPT10eXBlb2YgZylyZXR1cm4gZztmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKylpZih2b2lkIDAhPT1kW2db''@;'; put 'put ''aF1dKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEtNZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uICRNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5s''@;'; put 'put ''ZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBacnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcp''@;'; put 'put ''eyhmdW5jdGlvbiBWcnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmNvbnRhaW5lcj1udWxsLHRoaXMuaW5qZWN0ZWQ9ITEsdGhpcy5yb3dz''@;'; put 'put ''PVtdLHRoaXMuY29sdW1ucz1bXSx0aGlzLnNhbXBsZXM9bnVsbCx0aGlzLnNldHRpbmdzPXt1c2VIZWFkZXJzOiEwfX1yZXR1cm4gZnVuY3Rpb24ganJ0KGQsZyxoKXtnJiYkTWUoZC5wcm90b3R5cGUsZyksaCYmJE1lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIs''@;'; put 'put ''e3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImFkZFJvdyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtpZih0aGlzLmNvbHVtbnMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRG9lc24ndCBzdXBwb3J0IG11bHRpLWRpbWVuc2lvbmFsIHRhYmxlIik7dGhpcy5yb3dzLmxlbmd0aHx8KHRoaXMuY29udGFp''@;'; put 'put ''bmVyPXRoaXMuY3JlYXRlQ29udGFpbmVyKHRoaXMuaG90LnJvb3RFbGVtZW50LmNsYXNzTmFtZSkpO3ZhciB5PXtyb3c6aH07dGhpcy5yb3dzLnB1c2goeSksdGhpcy5zYW1wbGVzPXYsdGhpcy50YWJsZT10aGlzLmNyZWF0ZVRhYmxlKHRoaXMuaG90LnRhYmxlLmNsYXNzTmFtZSksdGhpcy50''@;'; put 'put ''YWJsZS5jb2xHcm91cC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUNvbEdyb3Vwc0NvbCgpKSx0aGlzLnRhYmxlLnRyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlUm93KGgpKSx0aGlzLmNvbnRhaW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCkseS50YWJsZT10''@;'; put 'put ''aGlzLnRhYmxlLnRhYmxlfX0se2tleToiYWRkQ29sdW1uSGVhZGVyc1JvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYobnVsbCE9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKDApKXt2YXIgeT17cm93Oi0xfTt0aGlzLnJvd3MucHVzaCh5KSx0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0ZUNvbnRhaW5l''@;'; put 'put ''cih0aGlzLmhvdC5yb290RWxlbWVudC5jbGFzc05hbWUpLHRoaXMuc2FtcGxlcz1oLHRoaXMudGFibGU9dGhpcy5jcmVhdGVUYWJsZSh0aGlzLmhvdC50YWJsZS5jbGFzc05hbWUpLHRoaXMudGFibGUuY29sR3JvdXAuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2xHcm91cHNDb2woKSksdGhp''@;'; put 'put ''cy5hcHBlbmRDb2x1bW5IZWFkZXJzUm93KCksdGhpcy5jb250YWluZXIuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMudGFibGUuZnJhZ21lbnQpLHkudGFibGU9dGhpcy50YWJsZS50YWJsZX19fSx7a2V5OiJhZGRDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodGhpcy5yb3dzLmxl''@;'; put 'put ''bmd0aCl0aHJvdyBuZXcgRXJyb3IoIkRvZXNuJ3Qgc3VwcG9ydCBtdWx0aS1kaW1lbnNpb25hbCB0YWJsZSIpO3RoaXMuY29sdW1ucy5sZW5ndGh8fCh0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0ZUNvbnRhaW5lcih0aGlzLmhvdC5yb290RWxlbWVudC5jbGFzc05hbWUpKTt2YXIgeT17Y29s''@;'; put 'put ''Omh9O3RoaXMuY29sdW1ucy5wdXNoKHkpLHRoaXMuc2FtcGxlcz12LHRoaXMudGFibGU9dGhpcy5jcmVhdGVUYWJsZSh0aGlzLmhvdC50YWJsZS5jbGFzc05hbWUpLHRoaXMuZ2V0U2V0dGluZygidXNlSGVhZGVycyIpJiZudWxsIT09dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKGgpJiZ0aGlzLmhv''@;'; put 'put ''dC52aWV3LmFwcGVuZENvbEhlYWRlcihoLHRoaXMudGFibGUudGgpLHRoaXMudGFibGUudEJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2woaCkpLHRoaXMuY29udGFpbmVyLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLmZyYWdtZW50KSx5LnRhYmxlPXRoaXMudGFibGUu''@;'; put 'put ''dGFibGV9fSx7a2V5OiJnZXRIZWlnaHRzIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmluamVjdGVkfHx0aGlzLmluamVjdFRhYmxlKCksR3IodGhpcy5yb3dzLGZ1bmN0aW9uKHYpe2godi5yb3csQjEodi50YWJsZSktMSl9KX19LHtrZXk6ImdldFdpZHRocyIsdmFsdWU6ZnVuY3Rpb24oaCl7''@;'; put 'put ''dGhpcy5pbmplY3RlZHx8dGhpcy5pbmplY3RUYWJsZSgpLEdyKHRoaXMuY29sdW1ucyxmdW5jdGlvbih2KXt2YXIgeT12LnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2godi5jb2wsTWF0aC5jZWlsKHkud2lkdGgpKX0pfX0se2tleToic2V0U2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3RoaXMuc2V0dGluZ3M9aH19LHtrZXk6InNldFNldHRpbmciLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5zZXR0aW5nc3x8KHRoaXMuc2V0dGluZ3M9e30pLHRoaXMuc2V0dGluZ3NbaF09dn19LHtrZXk6ImdldFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNl''@;'; put 'put ''dHRpbmdzfX0se2tleToiZ2V0U2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuc2V0dGluZ3M/dGhpcy5zZXR0aW5nc1toXTpudWxsfX0se2tleToiY3JlYXRlQ29sR3JvdXBzQ29sIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj10aGlzLmhvdC5yb290RG9jdW1l''@;'; put 'put ''bnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO3JldHVybiB0aGlzLmhvdC5oYXNSb3dIZWFkZXJzKCkmJnYuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2xFbGVtZW50KC0xKSksdGhpcy5zYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oeSl7R3IoeS5zdHJpbmdzLGZ1bmN0aW9uKEMpe3YuYXBw''@;'; put 'put ''ZW5kQ2hpbGQoaC5jcmVhdGVDb2xFbGVtZW50KEMuY29sKSl9KX0pLHZ9fSx7a2V5OiJjcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT10aGlzLmhvdC5yb290RG9jdW1lbnQsQz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxJPXkuY3JlYXRlRWxlbWVudCgidGgi''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5ob3QuaGFzUm93SGVhZGVycygpJiYodGhpcy5ob3Qudmlldy5hcHBlbmRSb3dIZWFkZXIoaCxJKSxDLmFwcGVuZENoaWxkKEkpKSx0aGlzLnNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihqKXtHcihqLnN0cmluZ3MsZnVuY3Rpb24oY2Upe3ZhciBfZT1jZS5jb2wsUmU9''@;'; put 'put ''di5ob3QuZ2V0Q2VsbE1ldGEoaCxfZSk7UmUuY29sPV9lLFJlLnJvdz1oO3ZhciBOZT12LmhvdC5nZXRDZWxsUmVuZGVyZXIoUmUpLEtlPXkuY3JlYXRlRWxlbWVudCgidGQiKTtLZS5zZXRBdHRyaWJ1dGUoImdob3N0LXRhYmxlIiwxKSxOZSh2LmhvdCxLZSxoLF9lLHYuaG90LmNvbFRvUHJv''@;'; put 'put ''cChfZSksY2UudmFsdWUsUmUpLEMuYXBwZW5kQ2hpbGQoS2UpfSl9KSxDfX0se2tleToiYXBwZW5kQ29sdW1uSGVhZGVyc1JvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9dGhpcy5ob3Qucm9vdERvY3VtZW50LHk9di5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksQz1bXTtpZih0''@;'; put 'put ''aGlzLmhvdC5oYXNSb3dIZWFkZXJzKCkpe3ZhciBJPXYuY3JlYXRlRWxlbWVudCgidGgiKTtDLnB1c2goWy0xLEldKSx5LmFwcGVuZENoaWxkKEkpfXRoaXMuc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKGope0dyKGouc3RyaW5ncyxmdW5jdGlvbihjZSl7dmFyIF9lPWNlLmNvbCxSZT12LmNy''@;'; put 'put ''ZWF0ZUVsZW1lbnQoInRoIik7Qy5wdXNoKFtfZSxSZV0pLHkuYXBwZW5kQ2hpbGQoUmUpfSl9KSx0aGlzLnRhYmxlLnRIZWFkLmFwcGVuZENoaWxkKHkpLEdyKEMsZnVuY3Rpb24oail7dmFyIGNlPWZ1bmN0aW9uIEJydChkLGcpe3JldHVybiBmdW5jdGlvbiBOcnQoZCl7aWYoQXJyYXkuaXNB''@;'; put 'put ''cnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIEhydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9y''@;'; put 'put ''KGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1y''@;'; put 'put ''ZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIEZydChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gS01lKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9''@;'; put 'put ''ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBLTWUoZCxnKX19KGQsZyl8fGZ1bmN0aW9u''@;'; put 'put ''IFBydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2Qu''@;'; put 'put ''Iil9KCl9KGosMik7aC5ob3Qudmlldy5hcHBlbmRDb2xIZWFkZXIoY2VbMF0sY2VbMV0pfSl9fSx7a2V5OiJjcmVhdGVDb2wiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT10aGlzLmhvdC5yb290RG9jdW1lbnQsQz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdGhp''@;'; put 'put ''cy5zYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oSSl7R3IoSS5zdHJpbmdzLGZ1bmN0aW9uKGope3ZhciBjZT1qLnJvdyxfZT12LmhvdC5nZXRDZWxsTWV0YShjZSxoKTtfZS5jb2w9aCxfZS5yb3c9Y2U7dmFyIFJlPXYuaG90LmdldENlbGxSZW5kZXJlcihfZSksTmU9eS5jcmVhdGVFbGVtZW50''@;'; put 'put ''KCJ0ZCIpLEtlPXkuY3JlYXRlRWxlbWVudCgidHIiKTtOZS5zZXRBdHRyaWJ1dGUoImdob3N0LXRhYmxlIiwxKSxSZSh2LmhvdCxOZSxjZSxoLHYuaG90LmNvbFRvUHJvcChoKSxqLnZhbHVlLF9lKSxLZS5hcHBlbmRDaGlsZChOZSksQy5hcHBlbmRDaGlsZChLZSl9KX0pLEN9fSx7a2V5OiJj''@;'; put 'put ''bGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJvd3MubGVuZ3RoPTAsdGhpcy5yb3dzWy0xXT12b2lkIDAsdGhpcy5jb2x1bW5zLmxlbmd0aD0wLHRoaXMuc2FtcGxlcyYmdGhpcy5zYW1wbGVzLmNsZWFyKCksdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5yZW1vdmVUYWJsZSgpfX0se2tleToi''@;'; put 'put ''aW5qZWN0VGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7dGhpcy5pbmplY3RlZHx8KChofHx0aGlzLmhvdC5yb290RWxlbWVudCkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIu''@;'; put 'put ''ZnJhZ21lbnQpLHRoaXMuaW5qZWN0ZWQ9ITApfX0se2tleToicmVtb3ZlVGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbmplY3RlZCYmdGhpcy5jb250YWluZXIuY29udGFpbmVyLnBhcmVudE5vZGUmJih0aGlzLmNvbnRhaW5lci5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGls''@;'; put 'put ''ZCh0aGlzLmNvbnRhaW5lci5jb250YWluZXIpLHRoaXMuY29udGFpbmVyPW51bGwsdGhpcy5pbmplY3RlZD0hMSl9fSx7a2V5OiJjcmVhdGVDb2xFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29sIik7cmV0dXJu''@;'; put 'put ''IHYuc3R5bGUud2lkdGg9IiIuY29uY2F0KHRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoaCksInB4Iiksdn19LHtrZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1l''@;'; put 'put ''bnRzWzBdP2FyZ3VtZW50c1swXToiIix2PXRoaXMuaG90LnJvb3REb2N1bWVudCx5PXYuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEM9di5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLEk9di5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpLGo9di5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLGNlPXYuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgiY29sZ3JvdXAiKSxfZT12LmNyZWF0ZUVsZW1lbnQoInRyIiksUmU9di5jcmVhdGVFbGVtZW50KCJ0aCIpO3JldHVybiB0aGlzLmlzVmVydGljYWwoKSYmQy5hcHBlbmRDaGlsZChjZSksdGhpcy5pc0hvcml6b250YWwoKSYmKF9lLmFwcGVuZENoaWxkKFJlKSxJLmFwcGVu''@;'; put 'put ''ZENoaWxkKF9lKSxDLnN0eWxlLnRhYmxlTGF5b3V0PSJhdXRvIixDLnN0eWxlLndpZHRoPSJhdXRvIiksQy5hcHBlbmRDaGlsZChJKSx0aGlzLmlzVmVydGljYWwoKSYmai5hcHBlbmRDaGlsZChfZSksQy5hcHBlbmRDaGlsZChqKSxQMChDLGgpLHkuYXBwZW5kQ2hpbGQoQykse2ZyYWdtZW50''@;'; put 'put ''OnksdGFibGU6Qyx0SGVhZDpJLHRCb2R5OmosY29sR3JvdXA6Y2UsdHI6X2UsdGg6UmV9fX0se2tleToiY3JlYXRlQ29udGFpbmVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIix2PXRoaXMu''@;'; put 'put ''aG90LnJvb3REb2N1bWVudCx5PXYuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEM9di5jcmVhdGVFbGVtZW50KCJkaXYiKSxJPSJodEdob3N0VGFibGUgaHRBdXRvU2l6ZSAiLmNvbmNhdChoLnRyaW0oKSk7cmV0dXJuIFAwKEMsSSkseS5hcHBlbmRDaGlsZChDKSx7ZnJhZ21lbnQ6eSxjb250''@;'; put 'put ''YWluZXI6Q319fSx7a2V5OiJpc1ZlcnRpY2FsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMucm93cy5sZW5ndGh8fHRoaXMuY29sdW1ucy5sZW5ndGgpfX0se2tleToiaXNIb3Jpem9udGFsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuY29sdW1ucy5sZW5ndGh8fHRo''@;'; put 'put ''aXMucm93cy5sZW5ndGgpfX1dKSxkfSgpO2NvbnN0IG44ZT1acnQ7ZnVuY3Rpb24gcU1lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRh''@;'; put 'put ''YmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFlydD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIEdydChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j''@;'; put 'put ''dGlvbiIpfSkodGhpcyxkKSx0aGlzLnNhbXBsZXM9bnVsbCx0aGlzLmRhdGFGYWN0b3J5PWcsdGhpcy5jdXN0b21TYW1wbGVDb3VudD1udWxsLHRoaXMuYWxsb3dEdXBsaWNhdGVzPSExfXJldHVybiBmdW5jdGlvbiBXcnQoZCxnLGgpe2cmJnFNZShkLnByb3RvdHlwZSxnKSxoJiZxTWUoZCxo''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0U2FtcGxlQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VzdG9tU2FtcGxlQ291bnQ/dGhpcy5jdXN0b21TYW1wbGVDb3VudDpkLlNBTVBMRV9DT1VOVH19''@;'; put 'put ''LHtrZXk6InNldFNhbXBsZUNvdW50Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmN1c3RvbVNhbXBsZUNvdW50PWh9fSx7a2V5OiJzZXRBbGxvd0R1cGxpY2F0ZXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuYWxsb3dEdXBsaWNhdGVzPWh9fSx7a2V5OiJnZW5lcmF0ZVJvd1NhbXBsZXMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMuZ2VuZXJhdGVTYW1wbGVzKCJyb3ciLHYsaCl9fSx7a2V5OiJnZW5lcmF0ZUNvbHVtblNhbXBsZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMuZ2VuZXJhdGVTYW1wbGVzKCJjb2wiLHYsaCl9fSx7a2V5OiJnZW5lcmF0ZVNh''@;'; put 'put ''bXBsZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLEk9bmV3IE1hcCxqPSJudW1iZXIiPT10eXBlb2YgeT97ZnJvbTp5LHRvOnl9Onk7cmV0dXJuIHJhKGouZnJvbSxqLnRvLGZ1bmN0aW9uKFJlKXt2YXIgTmU9Qy5nZW5lcmF0ZVNhbXBsZShoLHYsUmUpO0kuc2V0KFJlLE5l''@;'; put 'put ''KX0pLEl9fSx7a2V5OiJnZW5lcmF0ZVNhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXM7aWYoInJvdyIhPT1oJiYiY29sIiE9PWgpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzYW1wbGUgdHlwZSIpO3ZhciBJPW5ldyBNYXAsaj0icm93Ij09PWg/ImNvbCI6InJv''@;'; put 'put ''dyIsY2U9W107cmV0dXJuIHJhKHYuZnJvbSx2LnRvLGZ1bmN0aW9uKF9lKXt2YXIgQnQsUmU9InJvdyI9PT1oP0MuZGF0YUZhY3RvcnkoeSxfZSk6Qy5kYXRhRmFjdG9yeShfZSx5KSxOZT1SZS52YWx1ZSxLZT1SZS5idW5kbGVTZWVkLGh0PSJzdHJpbmciPT10eXBlb2YgS2UmJktlLmxlbmd0''@;'; put 'put ''aD4wO0J0PWh0P0tlOkFsKE5lKT8iIi5jb25jYXQoT2JqZWN0LmtleXMoTmUpLmxlbmd0aCk6QXJyYXkuaXNBcnJheShOZSk/IiIuY29uY2F0KE5lLmxlbmd0aCk6IiIuY29uY2F0KHExKE5lKS5sZW5ndGgpLEkuaGFzKEJ0KXx8SS5zZXQoQnQse25lZWRlZDpDLmdldFNhbXBsZUNvdW50KCks''@;'; put 'put ''c3RyaW5nczpbXX0pO3ZhciAkdD1JLmdldChCdCk7JHQubmVlZGVkJiYoIShjZS5pbmRleE9mKE5lKT4tMSl8fEMuYWxsb3dEdXBsaWNhdGVzfHxodCkmJigkdC5zdHJpbmdzLnB1c2goZnVuY3Rpb24genJ0KGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcs''@;'; put 'put ''e3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH0oe3ZhbHVlOk5lfSxqLF9lKSksY2UucHVzaChOZSksJHQubmVlZGVkLT0xKX0pLEl9fV0sW3trZXk6IlNBTVBMRV9DT1VOVCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDN9fV0pLGR9''@;'; put 'put ''KCk7Y29uc3QgZUVlPVlydDtmdW5jdGlvbiByOGUoZCl7cmV0dXJuKHI4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHRFZShkLGcpe3JldHVybiBmdW5jdGlvbiBYcnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0''@;'; put 'put ''aW9uIEpydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQo''@;'; put 'put ''KSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIFFy''@;'; put 'put ''dChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gbkVlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09''@;'; put 'put ''PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBuRWUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIFVydCgpe3Rocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbkVlKGQsZyl7KG51''@;'; put 'put ''bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gckVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVy''@;'; put 'put ''YWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZU0oKXtyZXR1cm4gZU09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0Lmdl''@;'; put 'put ''dC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PXFydChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sZU0uYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfWZ1bmN0aW9uIHFydChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9RnYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gaThlKGQsZyl7cmV0dXJuKGk4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFBy''@;'; put 'put ''b3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIG5pdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXI4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gaUVlKGQpfWZ1bmN0aW9uIGlFZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt''@;'; put 'put ''IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gRnYoZCl7cmV0dXJuKEZ2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlw''@;'; put 'put ''ZU9mKGgpfSkoZCl9Vm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIpO3ZhciBOej0iYXV0b0NvbHVtblNpemUiLG84ZT1uZXcgV2Vha01hcCxhaXQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGVpdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBn''@;'; put 'put ''JiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZp''@;'; put 'put ''Z3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZpOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiB0aXQoZCl7dmFyIGc9ZnVuY3Rpb24gcml0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9''@;'; put 'put ''KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9RnYoZCk7aWYoZyl7dmFyIEM9RnYodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJu''@;'; put 'put ''IG5pdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gS3J0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCkseT1nLmNhbGwodGhpcyx2''@;'; put 'put ''KSxvOGUuc2V0KGlFZSh5KSx7Y2FjaGVkQ29sdW1uSGVhZGVyczpbXX0pLHkuZ2hvc3RUYWJsZT1uZXcgbjhlKHkuaG90KSx5LnNhbXBsZXNHZW5lcmF0b3I9bmV3IGVFZShmdW5jdGlvbihDLEkpe3ZhciBqPXkuaG90LmdldENlbGxNZXRhKEMsSSksY2U9IiI7ai5zcGFubmVkfHwoY2U9eS5o''@;'; put 'put ''b3QuZ2V0RGF0YUF0Q2VsbChDLEkpKTt2YXIgX2U9IiI7cmV0dXJuIHkuaG90Lmhhc0hvb2soIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIpJiYoX2U9eS5ob3QucnVuSG9va3MoIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIsX2UsaixjZSkpLHt2YWx1ZTpjZSxidW5kbGVTZWVkOl9lfX0p''@;'; put 'put ''LHkuZmlyc3RDYWxjdWxhdGlvbj0hMCx5LmluUHJvZ3Jlc3M9ITEseS5tZWFzdXJlZENvbHVtbnM9MCx5LmNvbHVtbldpZHRoc01hcD1uZXcgVncseS5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoImF1dG9Db2x1bW5TaXplIix5LmNvbHVtbldpZHRoc01hcCkseS5hZGRIb29r''@;'; put 'put ''KCJiZWZvcmVDb2x1bW5SZXNpemUiLGZ1bmN0aW9uKEMsSSxqKXtyZXR1cm4geS5vbkJlZm9yZUNvbHVtblJlc2l6ZShDLEksail9KSx5fXJldHVybiBmdW5jdGlvbiAkcnQoZCxnLGgpe2cmJnJFZShkLnByb3RvdHlwZSxnKSxoJiZyRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwi''@;'; put 'put ''cHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExIT09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtOel0mJiF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmNvbFdpZHRoc319LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKClbTnpdO0MmJm51bGwhPUMudXNlSGVhZGVycyYmdGhpcy5naG9zdFRhYmxlLnNldFNldHRpbmcoInVzZUhlYWRlcnMiLEMudXNlSGVhZGVycyksdGhpcy5zZXRTYW1wbGlu''@;'; put 'put ''Z09wdGlvbnMoKSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckxvYWREYXRhLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ2hhbmdlUmVuZGVyIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbkJlZm9yZUNoYW5n''@;'; put 'put ''ZShJKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25BZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlKEkpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbkJlZm9yZVZp''@;'; put 'put ''ZXdSZW5kZXIoSSl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixmdW5jdGlvbihJLGope3JldHVybiB5LmdldENvbHVtbldpZHRoKGosSSl9KSx0aGlzLmFkZEhvb2soImFmdGVySW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVySW5pdCgpfSksZU0oRnYoaC5wcm90b3R5''@;'; put 'put ''cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZmluZENvbHVtbnNXaGVyZUhlYWRlcldhc0NoYW5nZWQoKTt5Lmxlbmd0aCYmKHRoaXMuY2xlYXJDYWNoZSh5KSx0aGlzLmNhbGN1bGF0''@;'; put 'put ''ZVZpc2libGVDb2x1bW5zV2lkdGgoKSksZU0oRnYoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7ZU0oRnYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlz''@;'; put 'put ''KS5jYWxsKHRoaXMpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uUmVzaXplIixmdW5jdGlvbihDLEksail7cmV0dXJuIHkub25CZWZvcmVDb2x1bW5SZXNpemUoQyxJLGopfSl9fSx7a2V5OiJjYWxjdWxhdGVWaXNpYmxlQ29sdW1uc1dpZHRoIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMu''@;'; put 'put ''aG90LmNvdW50Um93cygpKXt2YXIgQz10aGlzLmhvdC5yZW5kZXJDYWxsLEk9dGhpcy5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSxqPXRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKTstMT09PUl8fC0xPT09anx8dGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoe2Zyb206SSx0bzpqfSx2b2lk''@;'; put 'put ''IDAsQyl9fX0se2tleToiY2FsY3VsYXRlQ29sdW1uc1dpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfSxJPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Um93cygpLTF9LGo9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxjZT0ibnVtYmVyIj09dHlwZW9mIEM/''@;'; put 'put ''e2Zyb206Qyx0bzpDfTpDLF9lPSJudW1iZXIiPT10eXBlb2YgST97ZnJvbTpJLHRvOkl9Okk7cmEoY2UuZnJvbSxjZS50byxmdW5jdGlvbihSZSl7dmFyIE5lPXkuaG90LnRvUGh5c2ljYWxDb2x1bW4oUmUpO251bGw9PT1OZSYmKE5lPVJlKSwoanx8bnVsbD09PXkuY29sdW1uV2lkdGhzTWFw''@;'; put 'put ''LmdldFZhbHVlQXRJbmRleChOZSkmJiF5LmhvdC5fZ2V0Q29sV2lkdGhGcm9tU2V0dGluZ3MoTmUpKSYmR3IoeS5zYW1wbGVzR2VuZXJhdG9yLmdlbmVyYXRlQ29sdW1uU2FtcGxlcyhSZSxfZSksZnVuY3Rpb24oaHQpe3ZhciBCdD10RWUoaHQsMik7cmV0dXJuIHkuZ2hvc3RUYWJsZS5hZGRD''@;'; put 'put ''b2x1bW4oQnRbMF0sQnRbMV0pfSl9KSx0aGlzLmdob3N0VGFibGUuY29sdW1ucy5sZW5ndGgmJih0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe3kuZ2hvc3RUYWJsZS5nZXRXaWR0aHMoZnVuY3Rpb24oUmUsTmUpe3ZhciBLZT15LmhvdC50b1BoeXNpY2FsQ29sdW1uKFJlKTt5''@;'; put 'put ''LmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoS2UsTmUpfSl9LCEwKSx0aGlzLm1lYXN1cmVkQ29sdW1ucz1jZS50bysxLHRoaXMuZ2hvc3RUYWJsZS5jbGVhbigpKX19LHtrZXk6ImNhbGN1bGF0ZUFsbENvbHVtbnNXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRSb3dzKCktMX0sST0wLGo9dGhpcy5ob3QuY291bnRDb2xzKCktMSxjZT1udWxsO3RoaXMuaW5Qcm9ncmVzcz0hMDt2YXIgX2U9ZnVuY3Rpb24gTmUo''@;'; put 'put ''KXtpZigheS5ob3QpcmV0dXJuIGV6KGNlKSx2b2lkKHkuaW5Qcm9ncmVzcz0hMSk7eS5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoe2Zyb206SSx0bzpNYXRoLm1pbihJK2guQ0FMQ1VMQVRJT05fU1RFUCxqKX0sQyksKEk9SStoLkNBTENVTEFUSU9OX1NURVArMSk8aj9jZT10M2UoTmUpOihleihj''@;'; put 'put ''ZSkseS5pblByb2dyZXNzPSExLHkuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCkpfSxSZT10aGlzLmdldFN5bmNDYWxjdWxhdGlvbkxpbWl0KCk7dGhpcy5maXJzdENhbGN1bGF0aW9uJiZSZT49MCYmKHRoaXMuY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHtmcm9tOjAsdG86UmV9LEMpLHRo''@;'; put 'put ''aXMuZmlyc3RDYWxjdWxhdGlvbj0hMSxJPVJlKzEpLEk8aj9fZSgpOnRoaXMuaW5Qcm9ncmVzcz0hMX19LHtrZXk6InNldFNhbXBsaW5nT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW056XSxDPXkmJnMxKHksInNhbXBsaW5nUmF0aW8iKT95''@;'; put 'put ''LnNhbXBsaW5nUmF0aW86dm9pZCAwLEk9eSYmczEoeSwiYWxsb3dTYW1wbGVEdXBsaWNhdGVzIik/eS5hbGxvd1NhbXBsZUR1cGxpY2F0ZXM6dm9pZCAwO0MmJiFpc05hTihDKSYmdGhpcy5zYW1wbGVzR2VuZXJhdG9yLnNldFNhbXBsZUNvdW50KHBhcnNlSW50KEMsMTApKSxJJiZ0aGlzLnNh''@;'; put 'put ''bXBsZXNHZW5lcmF0b3Iuc2V0QWxsb3dEdXBsaWNhdGVzKEkpfX0se2tleToicmVjYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QudmlldyYmdGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5pc1Zpc2libGUoKSYmKHRoaXMuY2xlYXJDYWNoZSgpLHRo''@;'; put 'put ''aXMuY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCkpfX0se2tleToiZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtOel0sQz1oLlNZTkNfQ0FMQ1VMQVRJT05fTElNSVQsST10aGlzLmhvdC5jb3VudENvbHMoKS0x''@;'; put 'put ''O3JldHVybiBBbCh5KSYmKG0zZShDPXkuc3luY0xpbWl0KT9DPVUzZShJLEMpOkM+Pj0wKSxNYXRoLm1pbihDLEkpfX0se2tleToiZ2V0Q29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50''@;'; put 'put ''c1sxXTp2b2lkIDAsST0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGo9QztyZXR1cm4gdm9pZCAwPT09aiYmKGo9dGhpcy5jb2x1bW5XaWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oeSkp''@;'; put 'put ''LEkmJiJudW1iZXIiPT10eXBlb2YgaiYmKGo9TWF0aC5tYXgoaixYZGUuREVGQVVMVF9XSURUSCkpKSxqfX0se2tleToiZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0O2lmKHkud3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNh''@;'; put 'put ''bGN1bGF0b3Ipe3ZhciBDPXkud3RUYWJsZS5nZXRGaXJzdFZpc2libGVDb2x1bW4oKTtpZigtMSE9PUMpcmV0dXJuIHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoQyl9aWYoeS53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9y''@;'; put 'put ''KXt2YXIgST15Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpO2lmKC0xIT09SSlyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChJKX1yZXR1cm4tMX19LHtrZXk6ImdldExhc3RWaXNpYmxlQ29sdW1uIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0O2lmKHkud3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3Ipe3ZhciBDPXkud3RUYWJsZS5nZXRMYXN0VmlzaWJsZUNvbHVtbigpO2lmKC0xIT09QylyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0Vmlz''@;'; put 'put ''dWFsRnJvbVJlbmRlcmFibGVJbmRleChDKX1pZih5Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Ipe3ZhciBJPXkud3RUYWJsZS5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKTtpZigtMSE9PUkpcmV0dXJuIHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21S''@;'; put 'put ''ZW5kZXJhYmxlSW5kZXgoSSl9cmV0dXJuLTF9fSx7a2V5OiJmaW5kQ29sdW1uc1doZXJlSGVhZGVyV2FzQ2hhbmdlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRDb2xIZWFkZXIoKSxJPW84ZS5nZXQodGhpcykuY2FjaGVkQ29sdW1uSGVhZGVycztyZXR1cm4gRXUoeSxm''@;'; put 'put ''dW5jdGlvbihjZSxfZSxSZSl7dmFyIE5lPUkubGVuZ3RoO3JldHVybihOZS0xPFJlfHxJW1JlXSE9PV9lKSYmY2UucHVzaChSZSksTmUtMTxSZT9JLnB1c2goX2UpOklbUmVdPV9lLGNlfSxbXSl9fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W107Qy5sZW5ndGg/dGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtHcihDLGZ1bmN0aW9uKEkpe3kuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChJLG51bGwpfSl9LCEwKTp0''@;'; put 'put ''aGlzLmNvbHVtbldpZHRoc01hcC5jbGVhcigpfX0se2tleToiaXNOZWVkUmVjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISFkNCh0aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZXMoKS5zbGljZSgwLHRoaXMubWVhc3VyZWRDb2x1bW5zKSxmdW5jdGlvbih5KXtyZXR1cm4g''@;'; put 'put ''bnVsbD09PXl9KS5sZW5ndGh9fSx7a2V5OiJvbkJlZm9yZVZpZXdSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jYWxjdWxhdGVWaXNpYmxlQ29sdW1uc1dpZHRoKCksdGhpcy5pc05lZWRSZWNhbGN1bGF0ZSgpJiYhdGhpcy5pblByb2dyZXNzJiZ0aGlzLmNhbGN1bGF0ZUFsbENvbHVt''@;'; put 'put ''bnNXaWR0aCgpfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ob3Qudmlldz90aGlzLnJlY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCk6c2V0VGltZW91dChmdW5jdGlvbigpe3kuaG90JiZ5LnJlY2FsY3VsYXRlQWxsQ29sdW1uc1dp''@;'; put 'put ''ZHRoKCl9LDApfX0se2tleToib25CZWZvcmVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1UbCh5LGZ1bmN0aW9uKGope3ZhciBjZT10RWUoaiwyKTtyZXR1cm4gQy5ob3QudG9QaHlzaWNhbENvbHVtbihDLmhvdC5wcm9wVG9Db2woY2VbMV0pKX0pO3RoaXMuY2xlYXJD''@;'; put 'put ''YWNoZShBcnJheS5mcm9tKG5ldyBTZXQoSSkpKX19LHtrZXk6Im9uQmVmb3JlQ29sdW1uUmVzaXplIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIGo9eTtyZXR1cm4gSSYmKHRoaXMuY2FsY3VsYXRlQ29sdW1uc1dpZHRoKEMsdm9pZCAwLCEwKSxqPXRoaXMuZ2V0Q29sdW1uV2lkdGgoQyx2''@;'; put 'put ''b2lkIDAsITEpKSxqfX0se2tleToib25BZnRlckluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7bzhlLmdldCh0aGlzKS5jYWNoZWRDb2x1bW5IZWFkZXJzPXRoaXMuaG90LmdldENvbEhlYWRlcigpfX0se2tleToib25BZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIix2YWx1ZTpmdW5jdGlvbih5KXt2''@;'; put 'put ''YXIgST1UbChkNCh5LGZ1bmN0aW9uKGope3ZhciBjZTtyZXR1cm4gRW8obnVsbD09PShjZT1qLmFkZHJlc3MpfHx2b2lkIDA9PT1jZT92b2lkIDA6Y2UuY29sKX0pLGZ1bmN0aW9uKGope3JldHVybiBqLmFkZHJlc3MuY29sfSk7dGhpcy5jbGVhckNhY2hlKEFycmF5LmZyb20obmV3IFNldChJ''@;'; put 'put ''KSkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdob3N0VGFibGUuY2xlYW4oKSxlTShGdihoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBOen19LHtrZXk6IlBM''@;'; put 'put ''VUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEwfX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6IkNBTENVTEFUSU9OX1NURVAiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MH19LHtrZXk6IlNZTkNfQ0FMQ1VMQVRJT05fTElN''@;'; put 'put ''SVQiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MH19XSksaH0oR3MpLHRNPXtob3Jpem9udGFsOiJob3Jpem9udGFsIix2ZXJ0aWNhbDoidmVydGljYWwifTtmdW5jdGlvbiBhOGUoZCl7cmV0dXJuKGE4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9u''@;'; put 'put ''IG9FZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gbDhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFw''@;'; put 'put ''Ij09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBsOGUoZCxnKX19ZnVuY3Rpb24gbDhlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgp''@;'; put 'put ''JiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gYUVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1''@;'; put 'put ''cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gbk0oKXtyZXR1cm4gbk09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24o''@;'; put 'put ''ZyxoLHYpe3ZhciB5PXdpdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sbk0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHdp''@;'; put 'put ''dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9SHYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gczhlKGQsZyl7cmV0dXJuKHM4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpm''@;'; put 'put ''dW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIENpdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWE4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gbEVlKGQpfWZ1bmN0aW9uIGxFZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJl''@;'; put 'put ''ZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gSHYoZCl7cmV0dXJuKEh2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9Vm8uZ2V0''@;'; put 'put ''U2luZ2xldG9uKCkucmVnaXN0ZXIoIm1vZGlmeUF1dG9maWxsUmFuZ2UiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQXV0b2ZpbGwiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJBdXRvZmlsbCIpO3ZhciBzRWU9ImF1dG9maWxsIixNaXQ9WyJmaWxsSGFu''@;'; put 'put ''ZGxlIl0sVGl0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBiaXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmpl''@;'; put 'put ''Y3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmczhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gX2l0''@;'; put 'put ''KGQpe3ZhciBnPWZ1bmN0aW9uIGtpdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4u''@;'; put 'put ''cHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUh2KGQpO2lmKGcpe3ZhciBDPUh2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBDaXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIEFpdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5ldmVudE1hbmFnZXI9bmV3IFAxKGxFZSh5KSkseS5hZGRpbmdTdGFydGVkPSExLHkubW91c2VEb3duT25DZWxsQ29ybmVyPSExLHkubW91c2VEcmFnT3V0c2lkZT0hMSx5''@;'; put 'put ''LmhhbmRsZURyYWdnZWRDZWxscz0wLHkuZGlyZWN0aW9ucz1bXSx5LmF1dG9JbnNlcnRSb3c9ITEseX1yZXR1cm4gZnVuY3Rpb24geWl0KGQsZyxoKXtnJiZhRWUoZC5wcm90b3R5cGUsZyksaCYmYUVlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxl''@;'; put 'put ''OiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maWxsSGFuZGxlfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5tYXBTZXR0aW5n''@;'; put 'put ''cygpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixmdW5jdGlvbihDKXtyZXR1cm4geS5vbkFmdGVyQ2VsbENvcm5lck1vdXNlRG93bihDKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oQyl7cmV0dXJuIHkub25DZWxsQ29ybmVyRGJsQ2xpY2soQyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkJlZm9yZUNlbGxNb3VzZU92ZXIoSSl9KSxuTShIdihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxuTShIdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQ''@;'; put 'put ''bHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhck1hcHBlZFNldHRpbmdzKCksbk0oSHYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0U2VsZWN0aW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5o''@;'; put 'put ''b3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxJPUMuZ2V0VG9wU3RhcnRDb3JuZXIoKSxqPUkucm93LGNlPUkuY29sLF9lPUMuZ2V0Qm90dG9tRW5kQ29ybmVyKCksS2U9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLFt7c3RhcnRSb3c6aixzdGFydENvbDpjZSxlbmRS''@;'; put 'put ''b3c6X2Uucm93LGVuZENvbDpfZS5jb2x9XSksaHQ9W10sQnQ9W10sJHQ9W107cmV0dXJuIEdyKEtlLGZ1bmN0aW9uKGhuKXtmb3IodmFyIERuPWhuLnN0YXJ0Um93O0RuPD1obi5lbmRSb3c7RG4rPTEpLTE9PT1odC5pbmRleE9mKERuKSYmaHQucHVzaChEbik7Zm9yKHZhciBpcj1obi5zdGFy''@;'; put 'put ''dENvbDtpcjw9aG4uZW5kQ29sO2lyKz0xKS0xPT09QnQuaW5kZXhPZihpcikmJkJ0LnB1c2goaXIpfSksR3IoaHQsZnVuY3Rpb24oaG4pe3ZhciBEbj1bXTtHcihCdCxmdW5jdGlvbihpcil7RG4ucHVzaCh5LmhvdC5nZXRDb3B5YWJsZURhdGEoaG4saXIpKX0pLCR0LnB1c2goRG4pfSksJHR9''@;'; put 'put ''fSx7a2V5OiJmaWxsSW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5pc0VtcHR5KCkpcmV0dXJuITE7dmFyIEk9ZnVuY3Rpb24gcGl0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHZpdChkKXtpZihBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gbWl0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3Io''@;'; put 'put ''aD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJl''@;'; put 'put ''dHVybiB2fX0oZCxnKXx8b0VlKGQsZyl8fGZ1bmN0aW9uIGdpdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBo''@;'; put 'put ''YXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgpLmdldFZpc3VhbENvcm5lcnMoKSw0KSxqPUlbMF0sY2U9SVsxXSxfZT1JWzJdLFJlPUlbM10sTmU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3Qo''@;'; put 'put ''KSxLZT1OZS5nZXRUb3BTdGFydENvcm5lcigpLGh0PU5lLmdldEJvdHRvbUVuZENvcm5lcigpO3RoaXMucmVzZXRTZWxlY3Rpb25PZkRyYWdnZWRBcmVhKCk7dmFyIEJ0PVtLZS5yb3csS2UuY29sLGh0LnJvdyxodC5jb2xdLCR0PXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlBdXRvZmlsbFJh''@;'; put 'put ''bmdlIixbTWF0aC5taW4oS2Uucm93LGopLE1hdGgubWluKEtlLmNvbCxjZSksTWF0aC5tYXgoaHQucm93LF9lKSxNYXRoLm1heChodC5jb2wsUmUpXSxCdCksaG49ZnVuY3Rpb24gc2l0KGQsZyxoKXt2YXIgdix5LEM7cmV0dXJuIGdbMF09PT1kWzBdJiZnWzFdPGRbMV0/KEM9ImxlZnQiLHY9''@;'; put 'put ''aChnWzBdLGdbMV0pLHk9aChnWzJdLGRbMV0tMSkpOmdbMl09PT1kWzJdJiZnWzBdPT09ZFswXSYmZ1szXT5kWzNdPyhDPSJyaWdodCIsdj1oKGdbMF0sZFszXSsxKSx5PWgoZ1syXSxnWzNdKSk6Z1swXTxkWzBdJiZnWzFdPT09ZFsxXT8oQz0idXAiLHY9aChnWzBdLGdbMV0pLHk9aChkWzBd''@;'; put 'put ''LTEsZ1szXSkpOmdbMl0+ZFsyXSYmZ1sxXT09PWRbMV0mJihDPSJkb3duIix2PWgoZFsyXSsxLGdbMV0pLHk9aChnWzJdLGdbM10pKSx2JiZ2Lm5vcm1hbGl6ZSgpLHkmJnkubm9ybWFsaXplKCkse2RpcmVjdGlvbk9mRHJhZzpDLHN0YXJ0T2ZEcmFnQ29vcmRzOnYsZW5kT2ZEcmFnQ29vcmRz''@;'; put 'put ''Onl9fShCdCwkdCxmdW5jdGlvbihobyxUYSl7cmV0dXJuIHkuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGhvLFRhKX0pLERuPWhuLmRpcmVjdGlvbk9mRHJhZyxpcj1obi5zdGFydE9mRHJhZ0Nvb3Jkcyxwcj1obi5lbmRPZkRyYWdDb29yZHM7aWYoaXImJmlyLnJvdz4tMSYmaXIuY29sPi0xKXt2''@;'; put 'put ''YXIgRXI9dGhpcy5nZXRTZWxlY3Rpb25EYXRhKCksQXI9TmUuY2xvbmUoKSxZcj10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGlyLGlyLHByKSxfaT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQXV0b2ZpbGwiLEVyLEFyLFlyLERuKTtpZighMT09PV9pKXJldHVybiB0aGlzLmhvdC5zZWxl''@;'; put 'put ''Y3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpLHRoaXMuaG90LnJlbmRlcigpLCExO3ZhciBLaT1mdW5jdGlvbiBsaXQoZCxnLGgsdil7dmFyIHk9aC5sZW5ndGgsQz1oP2hbMF0ubGVuZ3RoOjAsST1bXSxqPWcucm93LWQucm93LGNlPWcuY29sLWQuY29sO2lmKC0xIT09WyJkb3du''@;'; put 'put ''IiwidXAiXS5pbmRleE9mKHYpKXtmb3IodmFyIF9lPVtdLFJlPTA7UmU8Y2U7UmUrKyl7dmFyIE5lPXBhcnNlSW50KGhbMF1bUmVdLDEwKSxLZT1wYXJzZUludChoW3ktMV1bUmVdLDEwKTtfZS5wdXNoKCgiZG93biI9PT12P0tlLU5lOk5lLUtlKS8oeS0xKXx8MCl9SS5wdXNoKF9lKX1pZigt''@;'; put 'put ''MSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZih2KSlmb3IodmFyIEJ0PTA7QnQ8ajtCdCsrKXt2YXIgJHQ9cGFyc2VJbnQoaFtCdF1bMF0sMTApLGhuPXBhcnNlSW50KGhbQnRdW0MtMV0sMTApO0kucHVzaChbKCJyaWdodCI9PT12P2huLSR0OiR0LWhuKS8oQy0xKXx8MF0pfXJldHVybiBJ''@;'; put 'put ''fShpcixwcixFcixEbiksa289X2ksT289X2k7aWYoWyJ1cCIsImxlZnQiXS5pbmRleE9mKERuKT4tMSYmKDEhPT1Pby5sZW5ndGh8fDAhPT1Pb1swXS5sZW5ndGgpKWlmKGtvPVtdLCJ1cCI9PT1Ebilmb3IodmFyIGJhPXByLnJvdy1pci5yb3crMSxZYT1iYSVPby5sZW5ndGgsb2E9MDtvYTxi''@;'; put 'put ''YTtvYSsrKWtvLnB1c2goT29bKG9hKyhPby5sZW5ndGgtWWEpKSVPby5sZW5ndGhdKTtlbHNlIGZvcih2YXIgcWE9cHIuY29sLWlyLmNvbCsxLE9zPXFhJU9vWzBdLmxlbmd0aCxIMD0wO0gwPE9vLmxlbmd0aDtIMCsrKXtrby5wdXNoKFtdKTtmb3IodmFyIG9vPTA7b288cWE7b28rKylrb1tI''@;'; put 'put ''MF0ucHVzaChPb1tIMF1bKG9vKyhPb1tIMF0ubGVuZ3RoLU9zKSklT29bSDBdLmxlbmd0aF0pfXRoaXMuaG90LnBvcHVsYXRlRnJvbUFycmF5KGlyLnJvdyxpci5jb2wsa28scHIucm93LHByLmNvbCwiIi5jb25jYXQodGhpcy5wbHVnaW5OYW1lLCIuZmlsbCIpLG51bGwsRG4sS2kpLHRoaXMu''@;'; put 'put ''c2V0U2VsZWN0aW9uKCR0KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJBdXRvZmlsbCIsa28sQXIsWXIsRG4pLHRoaXMuaG90LnJlbmRlcigpfWVsc2UgdGhpcy5ob3QuX3JlZnJlc2hCb3JkZXJzKCk7cmV0dXJuITB9fSx7a2V5OiJyZWR1Y2VTZWxlY3Rpb25BcmVhSWZOZWVkZWQiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKHkpe3JldHVybiB5LnJvdzwwJiYoeS5yb3c9MCkseS5jb2w8MCYmKHkuY29sPTApLHl9fSx7a2V5OiJnZXRDb29yZHNPZkRyYWdBbmREcm9wQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxJPUMuZ2V0Qm90''@;'; put 'put ''dG9tRW5kQ29ybmVyKCksaj15O2lmKHRoaXMuZGlyZWN0aW9ucy5pbmNsdWRlcyh0TS52ZXJ0aWNhbCkmJnRoaXMuZGlyZWN0aW9ucy5pbmNsdWRlcyh0TS5ob3Jpem9udGFsKSl7dmFyIGNlPUMuZ2V0VG9wU3RhcnRDb3JuZXIoKTsoSS5jb2w8PXkuY29sfHxjZS5jb2w+PXkuY29sKSYmKGo9''@;'; put 'put ''dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSS5yb3cseS5jb2wpKSwoSS5yb3c8eS5yb3d8fGNlLnJvdz55LnJvdykmJihqPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHkucm93LEkuY29sKSl9ZWxzZSBpZih0aGlzLmRpcmVjdGlvbnMuaW5jbHVkZXModE0udmVydGljYWwpKWo9dGhp''@;'; put 'put ''cy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoeS5yb3csSS5jb2wpO2Vsc2V7aWYoIXRoaXMuZGlyZWN0aW9ucy5pbmNsdWRlcyh0TS5ob3Jpem9udGFsKSlyZXR1cm47aj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhJLnJvdyx5LmNvbCl9cmV0dXJuIHRoaXMucmVkdWNlU2VsZWN0aW9uQXJl''@;'; put 'put ''YUlmTmVlZGVkKGopfX0se2tleToic2hvd0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5nZXRDb29yZHNPZkRyYWdBbmREcm9wQm9yZGVycyh5KTtDJiZ0aGlzLnJlZHJhd0JvcmRlcnMoQyl9fSx7a2V5OiJhZGRSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0''@;'; put 'put ''aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KGZ1bmN0aW9uKCl7eS5ob3QuYWx0ZXIoImluc2VydF9yb3ciLHZvaWQgMCwxLCIiLmNvbmNhdCh5LnBsdWdpbk5hbWUsIi5maWxsIikpLHkuYWRkaW5nU3RhcnRlZD0hMX0sMjAwKX19LHtrZXk6ImFkZE5ld1Jvd0lmTmVlZGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe2lmKCF0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5pc0VtcHR5KCkmJiExPT09dGhpcy5hZGRpbmdTdGFydGVkJiZ0aGlzLmF1dG9JbnNlcnRSb3cpe3ZhciB5PXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpLEM9dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hs''@;'; put 'put ''aWdodC5nZXRGaWxsKCkuZ2V0VmlzdWFsQ29ybmVycygpLEk9dGhpcy5ob3QuY291bnRSb3dzKCk7eVsyXTxJLTEmJkNbMl09PT1JLTEmJih0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITAsdGhpcy5hZGRSb3coKSl9fX0se2tleToiZ2V0SW5kZXhPZkxhc3RBZGphY2VudEZpbGxlZEluUm93Iix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbih5KXtmb3IodmFyIGosQz10aGlzLmhvdC5nZXREYXRhKCksST10aGlzLmhvdC5jb3VudFJvd3MoKSxjZT15WzJdKzE7Y2U8STtjZSsrKXtmb3IodmFyIF9lPXlbMV07X2U8PXlbM107X2UrKylpZihDW2NlXVtfZV0pcmV0dXJuLTE7KENbY2VdW3lbMV0tMV18fENbY2VdW3lb''@;'; put 'put ''M10rMV0pJiYoaj1jZSl9cmV0dXJuIGp9fSx7a2V5OiJhZGRTZWxlY3Rpb25Gcm9tU3RhcnRBcmVhVG9TcGVjaWZpY1Jvd0luZGV4Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgpLmNsZWFyKCkuYWRkKHRoaXMuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsQ29vcmRzKHlbMF0seVsxXSkpLmFkZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhDLHlbM10pKS5jb21taXQoKX19LHtrZXk6InNldFNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM7KEM9dGhpcy5ob3QpLnNlbGVjdENlbGwuYXBwbHkoQyxmdW5jdGlvbiBjaXQoZCl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIGRpdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBsOGUoZCl9KGQpfHxmdW5jdGlvbiBoaXQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBB''@;'; put 'put ''cnJheS5mcm9tKGQpfShkKXx8b0VlKGQpfHxmdW5jdGlvbiBmaXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUg''@;'; put 'put ''YSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oVGwoeSxmdW5jdGlvbihJKXtyZXR1cm4gTWF0aC5tYXgoSSwwKX0pKS5jb25jYXQoWyExLCExXSkpfX0se2tleToic2VsZWN0QWRqYWNlbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRMYXN0''@;'; put 'put ''KCksQz10aGlzLmdldEluZGV4T2ZMYXN0QWRqYWNlbnRGaWxsZWRJblJvdyh5KTtyZXR1cm4tMSE9PUMmJnZvaWQgMCE9PUMmJih0aGlzLmFkZFNlbGVjdGlvbkZyb21TdGFydEFyZWFUb1NwZWNpZmljUm93SW5kZXgoeSxDKSwhMCl9fSx7a2V5OiJyZXNldFNlbGVjdGlvbk9mRHJhZ2dlZEFy''@;'; put 'put ''ZWEiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpfX0se2tleToicmVkcmF3Qm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5n''@;'; put 'put ''ZXRGaWxsKCkuY2xlYXIoKS5hZGQodGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5mcm9tKS5hZGQodGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS50bykuYWRkKHkpLmNvbW1pdCgpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9fSx7a2V5OiJnZXRJZk1vdXNlV2FzRHJhZ2dl''@;'; put 'put ''ZE91dHNpZGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsST16dSh0aGlzLmhvdC50YWJsZSkudG9wLSh0aGlzLmhvdC5yb290V2luZG93LnBhZ2VZT2Zmc2V0fHxDLnNjcm9sbFRvcCkrQjEodGhpcy5ob3QudGFibGUpLGo9''@;'; put 'put ''enUodGhpcy5ob3QudGFibGUpLmxlZnQtKHRoaXMuaG90LnJvb3RXaW5kb3cucGFnZVhPZmZzZXR8fEMuc2Nyb2xsTGVmdCkrdzIodGhpcy5ob3QudGFibGUpO3JldHVybiB5LmNsaWVudFk+SSYmeS5jbGllbnRYPD1qfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIHk9dGhpcyxDPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l''@;'; put 'put ''cihDLCJtb3VzZW1vdmUiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uTW91c2VNb3ZlKEkpfSl9fSx7a2V5OiJvbkNlbGxDb3JuZXJEYmxDbGljayIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdEFkamFjZW50KCkmJnRoaXMuZmlsbEluKCl9fSx7a2V5OiJvbkFmdGVyQ2VsbENvcm5lck1v''@;'; put 'put ''dXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscz0xLHRoaXMubW91c2VEb3duT25DZWxsQ29ybmVyPSEwfX0se2tleToib25CZWZvcmVDZWxsTW91c2VPdmVyIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lciYmIXRoaXMu''@;'; put 'put ''aG90LnZpZXcuaXNNb3VzZURvd24oKSYmdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHMmJih0aGlzLmhhbmRsZURyYWdnZWRDZWxscys9MSx0aGlzLnNob3dCb3JkZXIoeSksdGhpcy5hZGROZXdSb3dJZk5lZWRlZCgpKX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhh''@;'; put 'put ''bmRsZURyYWdnZWRDZWxscyYmKHRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjEmJnRoaXMuZmlsbEluKCksdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lcj0hMSl9fSx7a2V5OiJvbk1vdXNlTW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhp''@;'; put 'put ''cy5nZXRJZk1vdXNlV2FzRHJhZ2dlZE91dHNpZGUoeSk7ITE9PT10aGlzLmFkZGluZ1N0YXJ0ZWQmJnRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjAmJkM/KHRoaXMubW91c2VEcmFnT3V0c2lkZT0hMCx0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITApOnRoaXMubW91c2VEcmFnT3V0c2lkZT0hMSx0aGlz''@;'; put 'put ''Lm1vdXNlRHJhZ091dHNpZGUmJnRoaXMuYXV0b0luc2VydFJvdyYmdGhpcy5hZGRSb3coKX19LHtrZXk6ImNsZWFyTWFwcGVkU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXJlY3Rpb25zLmxlbmd0aD0wLHRoaXMuYXV0b0luc2VydFJvdz0hMX19LHtrZXk6Im1hcFNldHRpbmdz''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWZ1bmN0aW9uIHVpdChkKXt2YXIgZz17fTtyZXR1cm4hMD09PWQ/KGcuZGlyZWN0aW9ucz1PYmplY3Qua2V5cyh0TSksZy5hdXRvSW5zZXJ0Um93PSEwKTpBbChkKT8oZy5hdXRvSW5zZXJ0Um93PSEhRW8oZC5hdXRvSW5zZXJ0Um93KSYmZC5kaXJl''@;'; put 'put ''Y3Rpb24hPT10TS5ob3Jpem9udGFsJiZkLmF1dG9JbnNlcnRSb3csZy5kaXJlY3Rpb25zPUVvKGQuZGlyZWN0aW9uKT9bZC5kaXJlY3Rpb25dOk9iamVjdC5rZXlzKHRNKSk6InN0cmluZyI9PXR5cGVvZiBkPyhnLmRpcmVjdGlvbnM9W2RdLGcuYXV0b0luc2VydFJvdz0hMCk6KGcuZGlyZWN0''@;'; put 'put ''aW9ucz1bXSxnLmF1dG9JbnNlcnRSb3c9ITEpLGd9KHRoaXMuaG90LmdldFNldHRpbmdzKCkuZmlsbEhhbmRsZSk7dGhpcy5kaXJlY3Rpb25zPXkuZGlyZWN0aW9ucyx0aGlzLmF1dG9JbnNlcnRSb3c9eS5hdXRvSW5zZXJ0Um93fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtu''@;'; put 'put ''TShIdihoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBzRWV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMH19LHtrZXk6IlNFVFRJTkdfS0VZUyIs''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuW3NFZV0uY29uY2F0KE1pdCl9fV0pLGh9KEdzKTtmdW5jdGlvbiB1OGUoZCl7cmV0dXJuKHU4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9''@;'; put 'put ''OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIElpdChkLGcpe3JldHVybiBmdW5jdGlvbiBSaXQoZCl7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIE9pdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0''@;'; put 'put ''cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJv''@;'; put 'put ''dyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIExpdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gdUVlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiB1RWUoZCxnKX19KGQsZyl8fGZ1''@;'; put 'put ''bmN0aW9uIERpdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBt''@;'; put 'put ''ZXRob2QuIil9KCl9ZnVuY3Rpb24gdUVlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gY0VlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKysp''@;'; put 'put ''e3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSk8oKXtyZXR1cm4gSk89InVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUZpdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/''@;'; put 'put ''Zzp2KTpDLnZhbHVlfX0sSk8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEZpdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9V3coZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gYzhlKGQsZyl7cmV0dXJuKGM4ZT1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFZpdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXU4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVy''@;'; put 'put ''biBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gaml0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlz''@;'; put 'put ''IGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gV3coZCl7cmV0dXJuKFd3PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBo''@;'; put 'put ''Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEl0ZT0iYXV0b1Jvd1NpemUiLFdpdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gSGl0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl''@;'; put 'put ''c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90''@;'; put 'put ''b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmM4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIE5pdChkKXt2YXIgZz1mdW5jdGlvbiBaaXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4h''@;'; put 'put ''MTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIHksdj1XdyhkKTtpZihnKXt2YXIgQz1Xdyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gVml0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVy''@;'; put 'put ''biBmdW5jdGlvbiBCaXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkucm93SGVpZ2h0c01hcD12b2lkIDAseS5oZWFkZXJIZWlnaHQ9bnVs''@;'; put 'put ''bCx5Lmdob3N0VGFibGU9bmV3IG44ZSh5LmhvdCkseS5zYW1wbGVzR2VuZXJhdG9yPW5ldyBlRWUoZnVuY3Rpb24oQyxJKXt2YXIgajtyZXR1cm4gQz49MD9qPXkuaG90LmdldERhdGFBdENlbGwoQyxJKTotMT09PUMmJihqPXkuaG90LmdldENvbEhlYWRlcihJKSkse3ZhbHVlOmp9fSkseS5m''@;'; put 'put ''aXJzdENhbGN1bGF0aW9uPSEwLHkuaW5Qcm9ncmVzcz0hMSx5Lm1lYXN1cmVkUm93cz0wLHkucm93SGVpZ2h0c01hcD1uZXcgVncseS5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoImF1dG9Sb3dTaXplIix5LnJvd0hlaWdodHNNYXApLHkuYWRkSG9vaygiYmVmb3JlUm93UmVzaXpl''@;'; put 'put ''IixmdW5jdGlvbihDLEksail7cmV0dXJuIHkub25CZWZvcmVSb3dSZXNpemUoQyxJLGopfSkseX1yZXR1cm4gZnVuY3Rpb24gUGl0KGQsZyxoKXtnJiZjRWUoZC5wcm90b3R5cGUsZyksaCYmY0VlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiEx''@;'; put 'put ''fSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0l0ZV07cmV0dXJuITA9PT15fHxBbCh5KX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMu''@;'; put 'put ''c2V0U2FtcGxpbmdPcHRpb25zKCksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJMb2FkRGF0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNoYW5nZVJlbmRlciIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25C''@;'; put 'put ''ZWZvcmVDaGFuZ2UoQyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5yZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld1JlbmRlciIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25CZWZvcmVWaWV3''@;'; put 'put ''UmVuZGVyKEMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dIZWlnaHQiLGZ1bmN0aW9uKEMsSSl7cmV0dXJuIHkuZ2V0Um93SGVpZ2h0KEksQyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4geS5nZXRDb2x1bW5IZWFkZXJIZWln''@;'; put 'put ''aHQoKX0pLEpPKFd3KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmhlYWRlckhlaWdodD1udWxsLEpPKFd3KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdp''@;'; put 'put ''biIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmFkZEhvb2soImJlZm9yZVJvd1Jlc2l6ZSIsZnVuY3Rpb24oQyxJLGope3JldHVybiB5Lm9uQmVmb3JlUm93UmVzaXplKEMsSSxqKX0pfX0se2tleToiY2FsY3VsYXRlUm93c0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRSb3dzKCktMX0sST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e2Zyb206MCx0bzp0aGlzLmhvdC5j''@;'; put 'put ''b3VudENvbHMoKS0xfSxqPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sY2U9Im51bWJlciI9PXR5cGVvZiBDP3tmcm9tOkMsdG86Q306QyxfZT0ibnVtYmVyIj09dHlwZW9mIEk/e2Zyb206SSx0bzpJfTpJO2lmKG51bGwhPT10aGlzLmhv''@;'; put 'put ''dC5nZXRDb2xIZWFkZXIoMCkpe3ZhciBSZT10aGlzLnNhbXBsZXNHZW5lcmF0b3IuZ2VuZXJhdGVSb3dTYW1wbGVzKC0xLF9lKTt0aGlzLmdob3N0VGFibGUuYWRkQ29sdW1uSGVhZGVyc1JvdyhSZS5nZXQoLTEpKX1yYShjZS5mcm9tLGNlLnRvLGZ1bmN0aW9uKE5lKXsoanx8bnVsbD09PXku''@;'; put 'put ''cm93SGVpZ2h0c01hcC5nZXRWYWx1ZUF0SW5kZXgoTmUpKSYmR3IoeS5zYW1wbGVzR2VuZXJhdG9yLmdlbmVyYXRlUm93U2FtcGxlcyhOZSxfZSksZnVuY3Rpb24oaHQpe3ZhciBCdD1JaXQoaHQsMik7cmV0dXJuIHkuZ2hvc3RUYWJsZS5hZGRSb3coQnRbMF0sQnRbMV0pfSl9KSx0aGlzLmdo''@;'; put 'put ''b3N0VGFibGUucm93cy5sZW5ndGgmJih0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe3kuZ2hvc3RUYWJsZS5nZXRIZWlnaHRzKGZ1bmN0aW9uKE5lLEtlKXtOZTwwP3kuaGVhZGVySGVpZ2h0PUtlOnkucm93SGVpZ2h0c01hcC5zZXRWYWx1ZUF0SW5kZXgoeS5ob3QudG9QaHlz''@;'; put 'put ''aWNhbFJvdyhOZSksS2UpfSl9LCEwKSx0aGlzLm1lYXN1cmVkUm93cz1jZS50bysxLHRoaXMuZ2hvc3RUYWJsZS5jbGVhbigpKX19LHtrZXk6ImNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Q29scygpLTF9LEk9MCxqPXRoaXMuaG90LmNvdW50Um93cygpLTEsY2U9bnVsbDt0aGlzLmluUHJvZ3Jlc3M9ITA7dmFyIF9lPWZ1bmN0aW9uIE5lKCl7aWYoIXkuaG90KXJldHVybiBleihjZSksdm9p''@;'; put 'put ''ZCh5LmluUHJvZ3Jlc3M9ITEpO3kuY2FsY3VsYXRlUm93c0hlaWdodCh7ZnJvbTpJLHRvOk1hdGgubWluKEkraC5DQUxDVUxBVElPTl9TVEVQLGopfSxDKSwoST1JK2guQ0FMQ1VMQVRJT05fU1RFUCsxKTxqP2NlPXQzZShOZSk6KGV6KGNlKSx5LmluUHJvZ3Jlc3M9ITEseS5ob3Qudmlldy5h''@;'; put 'put ''ZGp1c3RFbGVtZW50c1NpemUoITApLHkuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ5LmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS5kcmF3KCkpfSxSZT10aGlzLmdldFN5bmNDYWxjdWxh''@;'; put 'put ''dGlvbkxpbWl0KCk7dGhpcy5maXJzdENhbGN1bGF0aW9uJiZSZT49MCYmKHRoaXMuY2FsY3VsYXRlUm93c0hlaWdodCh7ZnJvbTowLHRvOlJlfSxDKSx0aGlzLmZpcnN0Q2FsY3VsYXRpb249ITEsST1SZSsxKSxJPGo/X2UoKToodGhpcy5pblByb2dyZXNzPSExLHRoaXMuaG90LnZpZXcuYWRq''@;'; put 'put ''dXN0RWxlbWVudHNTaXplKCExKSl9fSx7a2V5OiJzZXRTYW1wbGluZ09wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtJdGVdLEM9eSYmczEoeSwic2FtcGxpbmdSYXRpbyIpP3kuc2FtcGxpbmdSYXRpbzp2b2lkIDAsST15JiZzMSh5LCJhbGxv''@;'; put 'put ''d1NhbXBsZUR1cGxpY2F0ZXMiKT95LmFsbG93U2FtcGxlRHVwbGljYXRlczp2b2lkIDA7QyYmIWlzTmFOKEMpJiZ0aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0U2FtcGxlQ291bnQocGFyc2VJbnQoQywxMCkpLEkmJnRoaXMuc2FtcGxlc0dlbmVyYXRvci5zZXRBbGxvd0R1cGxpY2F0ZXMoSSl9''@;'; put 'put ''fSx7a2V5OiJyZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7TU8odGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5UQUJMRSkmJih0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLmNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKSl9fSx7a2V5OiJnZXRTeW5jQ2FsY3VsYXRpb25M''@;'; put 'put ''aW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0l0ZV0sQz1oLlNZTkNfQ0FMQ1VMQVRJT05fTElNSVQsST10aGlzLmhvdC5jb3VudFJvd3MoKS0xO3JldHVybiBBbCh5KSYmKG0zZShDPXkuc3luY0xpbWl0KT9DPVUzZShJLEMpOkM+Pj0wKSxNYXRo''@;'; put 'put ''Lm1pbihDLEkpfX0se2tleToiZ2V0Um93SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwLEk9eTwwP3RoaXMuaGVhZGVySGVpZ2h0OnRoaXMucm93SGVpZ2h0c01hcC5nZXRW''@;'; put 'put ''YWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSksaj1DO3JldHVybiBudWxsIT09SSYmST4oQ3x8MCkmJihqPUkpLGp9fSx7a2V5OiJnZXRDb2x1bW5IZWFkZXJIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVhZGVySGVpZ2h0fX0se2tleToiZ2V0Rmly''@;'; put 'put ''c3RWaXNpYmxlUm93Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0O3JldHVybiB5Lnd0Vmlld3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yP3kud3RUYWJsZS5nZXRGaXJzdFZpc2libGVSb3coKTp5Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/eS53''@;'; put 'put ''dFRhYmxlLmdldEZpcnN0UmVuZGVyZWRSb3coKTotMX19LHtrZXk6ImdldExhc3RWaXNpYmxlUm93Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0O3JldHVybiB5Lnd0Vmlld3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yP3kud3RUYWJsZS5nZXRMYXN0VmlzaWJs''@;'; put 'put ''ZVJvdygpOnkud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvcj95Lnd0VGFibGUuZ2V0TGFzdFJlbmRlcmVkUm93KCk6LTF9fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZGVySGVpZ2h0PW51bGwsdGhpcy5yb3dIZWlnaHRzTWFwLmluaXQoKX19LHtr''@;'; put 'put ''ZXk6ImNsZWFyQ2FjaGVCeVJhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9Im51bWJlciI9PXR5cGVvZiB5P3tmcm9tOnksdG86eX06eSxqPUkuZnJvbSxjZT1JLnRvO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7cmEoTWF0aC5taW4oaixjZSksTWF0aC5t''@;'; put 'put ''YXgoaixjZSksZnVuY3Rpb24oX2Upe0Mucm93SGVpZ2h0c01hcC5zZXRWYWx1ZUF0SW5kZXgoX2UsbnVsbCl9KX0sITApfX0se2tleToiaXNOZWVkUmVjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISFkNCh0aGlzLnJvd0hlaWdodHNNYXAuZ2V0VmFsdWVzKCkuc2xpY2UoMCx0''@;'; put 'put ''aGlzLm1lYXN1cmVkUm93cyksZnVuY3Rpb24oeSl7cmV0dXJuIG51bGw9PT15fSkubGVuZ3RofX0se2tleToib25CZWZvcmVWaWV3UmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnJlbmRlckNhbGwsQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRv''@;'; put 'put ''bSxJPXRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93KCksaj10aGlzLmdldExhc3RWaXNpYmxlUm93KCk7aWYoLTEhPT1JJiYtMSE9PWope2lmKHRoaXMuY2FsY3VsYXRlUm93c0hlaWdodCh7ZnJvbTpJLHRvOmp9LHZvaWQgMCx5KSxDKXt2YXIgY2U9dGhpcy5ob3QuY291bnRSb3dzKCktMTt0aGlz''@;'; put 'put ''LmNhbGN1bGF0ZVJvd3NIZWlnaHQoe2Zyb206Y2UtQyx0bzpjZX0pfXRoaXMuaXNOZWVkUmVjYWxjdWxhdGUoKSYmIXRoaXMuaW5Qcm9ncmVzcyYmdGhpcy5jYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCl9fX0se2tleToib25CZWZvcmVSb3dNb3ZlIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMu''@;'; put 'put ''Y2xlYXJDYWNoZUJ5UmFuZ2Uoe2Zyb206eSx0bzpDfSksdGhpcy5jYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCl9fSx7a2V5OiJvbkJlZm9yZVJvd1Jlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPXk7cmV0dXJuIEkmJih0aGlzLmNhbGN1bGF0ZVJvd3NIZWlnaHQoQyx2b2lkIDAs''@;'; put 'put ''ITApLGo9dGhpcy5nZXRSb3dIZWlnaHQoQykpLGp9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmhvdC52aWV3P3RoaXMucmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCk6c2V0VGltZW91dChmdW5jdGlvbigpe3kuaG90JiZ5LnJlY2Fs''@;'; put 'put ''Y3VsYXRlQWxsUm93c0hlaWdodCgpfSwwKX19LHtrZXk6Im9uQmVmb3JlQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1udWxsOzE9PT15Lmxlbmd0aD9DPXlbMF1bMF06eS5sZW5ndGg+MSYmKEM9e2Zyb206eVswXVswXSx0bzp5W3kubGVuZ3RoLTFdWzBdfSksbnVsbCE9PUMmJnRo''@;'; put 'put ''aXMuY2xlYXJDYWNoZUJ5UmFuZ2UoQyl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ2hvc3RUYWJsZS5jbGVhbigpLEpPKFd3KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIEl0ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDQwfX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6IkNBTENVTEFUSU9OX1NURVAiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MH19LHtrZXk6''@;'; put 'put ''IlNZTkNfQ0FMQ1VMQVRJT05fTElNSVQiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MDB9fV0pLGh9KEdzKSxmRWU9bmV3IE1hcChbWyJpbmRleGVzU2VxdWVuY2UiLHtnZXRMaXN0V2l0aEluc2VydGVkSXRlbXM6dTRlLGdldExpc3RXaXRoUmVtb3ZlZEl0ZW1zOlN6fV0sWyJwaHlzaWNhbGx5''@;'; put 'put ''SW5kZXhlZCIse2dldExpc3RXaXRoSW5zZXJ0ZWRJdGVtczptNGUsZ2V0TGlzdFdpdGhSZW1vdmVkSXRlbXM6djRlfV1dKSxoRWU9ZnVuY3Rpb24oZyl7aWYoITE9PT1mRWUuaGFzKGcpKXRocm93IG5ldyBFcnJvcigiQWx0ZXIgc3RyYXRlZ3kgd2l0aCBJRCAnIi5jb25jYXQoZywiJyBkb2Vz''@;'; put 'put ''IG5vdCBleGlzdC4iKSk7cmV0dXJuIGZFZS5nZXQoZyl9O2Z1bmN0aW9uIGY4ZShkKXtyZXR1cm4oZjhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gZEVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVt''@;'; put 'put ''ZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gVnooKXtyZXR1cm4gVno9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0''@;'; put 'put ''LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVFpdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sVnou''@;'; put 'put ''YXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFFpdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9ck0oZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gaDhlKGQsZyl7cmV0dXJuKGg4ZT1PYmplY3Quc2V0UHJvdG90eXBl''@;'; put 'put ''T2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEtpdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWY4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gJGl0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRp''@;'; put 'put ''YWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gck0oZCl7cmV0dXJuKHJNPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0''@;'; put 'put ''LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHBFZT1oRWUoInBoeXNpY2FsbHlJbmRleGVkIiksZTB0PXBFZS5nZXRMaXN0V2l0aEluc2VydGVkSXRlbXMsdDB0PXBFZS5nZXRMaXN0V2l0aFJlbW92ZWRJdGVtcyxuMHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIEppdChkLGcpe2lmKCJmdW5j''@;'; put 'put ''dGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdy''@;'; put 'put ''aXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZoOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBYaXQoZCl7dmFyIGc9ZnVuY3Rpb24gcWl0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBS''@;'; put 'put ''ZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4s''@;'; put 'put ''W10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9ck0oZCk7aWYoZyl7dmFyIEM9ck0odGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFy''@;'; put 'put ''Z3VtZW50cyk7cmV0dXJuIEtpdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBmdW5jdGlvbiBZaXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwo''@;'; put 'put ''dGhpcyxmdW5jdGlvbih2KXtyZXR1cm4gdn0pfXJldHVybiBmdW5jdGlvbiBVaXQoZCxnLGgpe2cmJmRFZShkLnByb3RvdHlwZSxnKSxoJiZkRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaW5zZXJ0Iix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5LEMpe3ZhciBJPWY0ZSh0aGlzLmluZGV4ZWRWYWx1ZXMsQyk7dGhpcy5pbmRleGVkVmFsdWVzPWUwdChJLHksQyx0aGlzLmluaXRWYWx1ZU9yRm4pLFZ6KHJNKGgucHJvdG90eXBlKSwiaW5zZXJ0Iix0aGlzKS5jYWxsKHRoaXMseSxDKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSl7dmFyIEM9dDB0KHRoaXMuaW5kZXhlZFZhbHVlcyx5KTt0aGlzLmluZGV4ZWRWYWx1ZXM9YzRlKEMseSksVnoock0oaC5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNhbGwodGhpcyx5KX19XSksaH0oWVMpO2NvbnN0IHIwdD1uMHQ7ZnVuY3Rpb24gZDhlKGQpe3JldHVy''@;'; put 'put ''bihkOGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJv''@;'; put 'put ''bCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBwOGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBn''@;'; put 'put ''RWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlv''@;'; put 'put ''biBqeigpe3JldHVybiBqej0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9ZjB0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBD''@;'; put 'put ''LmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxqei5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZjB0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1pTShkKSk7KTtyZXR1''@;'; put 'put ''cm4gZH1mdW5jdGlvbiBnOGUoZCxnKXtyZXR1cm4oZzhlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gcDB0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09''@;'; put 'put ''ZDhlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBnMHQoZCl7aWYodm9pZCAw''@;'; put 'put ''PT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBpTShkKXtyZXR1cm4oaU09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90''@;'; put 'put ''b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgbUVlPWhFZSgicGh5c2ljYWxseUluZGV4ZWQiKSx2MHQ9bUVlLmdldExpc3RXaXRoSW5zZXJ0ZWRJdGVtcyxBMHQ9bUVlLmdldExpc3RXaXRoUmVt''@;'; put 'put ''b3ZlZEl0ZW1zLHkwdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gaDB0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9''@;'; put 'put ''T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmc4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9u''@;'; put 'put ''IGQwdChkKXt2YXIgZz1mdW5jdGlvbiBtMHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29s''@;'; put 'put ''ZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1pTShkKTtpZihnKXt2YXIgQz1pTSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJl''@;'; put 'put ''ZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gcDB0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIGZ1bmN0aW9uIHUwdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLGZ1bmN0aW9uKHYpe3JldHVybiB2fSl9cmV0dXJuIGZ1bmN0aW9uIGMwdChkLGcsaCl7ZyYmZ0VlKGQucHJvdG90eXBlLGcpLGgmJmdFZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpbnNlcnQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpczt0aGlzLmluZGV4ZWRWYWx1ZXM9djB0KHRoaXMuaW5kZXhlZFZhbHVlcyx5LEMsZnVuY3Rpb24oaixjZSl7cmV0dXJuIEkuZ2V0TmV4dFZhbHVlKGNlKX0p''@;'; put 'put ''LGp6KGlNKGgucHJvdG90eXBlKSwiaW5zZXJ0Iix0aGlzKS5jYWxsKHRoaXMseSxDKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5pbmRleGVkVmFsdWVzPUEwdCh0aGlzLmluZGV4ZWRWYWx1ZXMseSksanooaU0oaC5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNh''@;'; put 'put ''bGwodGhpcyx5KX19LHtrZXk6ImdldE5leHRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsZnVuY3Rpb24gaTB0KGQpe3JldHVybiBmdW5jdGlvbiBzMHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gcDhlKGQpfShkKXx8ZnVuY3Rpb24g''@;'; put 'put ''bDB0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIGEwdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4g''@;'; put 'put ''cDhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJn''@;'; put 'put ''dW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBwOGUoZCxnKX19KGQpfHxmdW5jdGlvbiBvMHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0''@;'; put 'put ''YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odGhpcy5nZXRWYWx1ZXMoKSkpKzEreX19XSksaH0oWVMpO2Z1bmN0aW9uIG04ZShkKXtyZXR1cm4obThlPSJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wu''@;'; put 'put ''cHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gdkVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEw''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gWE8oKXtyZXR1cm4gWE89InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUMwdChnLGgpO2lmKHkpe3ZhciBDPU9i''@;'; put 'put ''amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sWE8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEMwdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3du''@;'; put 'put ''UHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9WXcoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gdjhlKGQsZyl7cmV0dXJuKHY4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9''@;'; put 'put ''KShkLGcpfWZ1bmN0aW9uIE0wdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PW04ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1''@;'; put 'put ''bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gRTB0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gWXcoZCl7cmV0''@;'; put 'put ''dXJuKFl3PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEE4ZT0iYmluZFJvd3NXaXRoSGVhZGVycyIsRDB0PW5ldyBNYXAoW1si''@;'; put 'put ''bG9vc2UiLHIwdF0sWyJzdHJpY3QiLHkwdF1dKSxMMHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGswdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j''@;'; put 'put ''dGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZ2OGUoZCxnKX0o''@;'; put 'put ''aCxkKTt2YXIgZz1mdW5jdGlvbiBTMHQoZCl7dmFyIGc9ZnVuY3Rpb24geDB0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVy''@;'; put 'put ''biEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9WXcoZCk7aWYoZyl7dmFyIEM9WXcodGhp''@;'; put 'put ''cykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIE0wdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gYjB0KGQsZyl7aWYoIShkIGluc3RhbmNl''@;'; put 'put ''b2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmhlYWRlckluZGV4ZXM9bnVsbCx5fXJldHVybiBmdW5jdGlvbiBfMHQoZCxnLGgpe2cmJnZFZShkLnByb3RvdHlwZSxnKSxoJiZ2''@;'; put 'put ''RWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtBOGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciB5PXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtBOGVdOyJzdHJpbmciIT10eXBlb2YgQyYmKEM9Imxvb3NlIik7dmFyIEk9RDB0LmdldChDKTt0aGlzLmhlYWRlckluZGV4ZXM9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVn''@;'; put 'put ''aXN0ZXJNYXAoImJpbmRSb3dzV2l0aEhlYWRlcnMiLG5ldyBJKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlYWRlciIsZnVuY3Rpb24oail7cmV0dXJuIHkub25Nb2RpZnlSb3dIZWFkZXIoail9KSxYTyhZdyhoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19''@;'; put 'put ''fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoImJpbmRSb3dzV2l0aEhlYWRlcnMiKSxYTyhZdyhoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJvbk1v''@;'; put 'put ''ZGlmeVJvd0hlYWRlciIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuaGVhZGVySW5kZXhlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe1hPKFl3KGgucHJvdG90eXBlKSwiZGVzdHJveSIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEE4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDIxMH19XSksaH0oR3MpO2Z1bmN0aW9uIHk4ZShkKXtyZXR1cm4oeThlPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJv''@;'; put 'put ''dG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gQUVlKGQpe3JldHVybiBmdW5jdGlvbiBQMHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gdzhlKGQpfShkKXx8ZnVuY3Rpb24gQjB0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIFIwdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gdzhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQp''@;'; put 'put ''LnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/''@;'; put 'put ''QXJyYXkkLy50ZXN0KGgpKXJldHVybiB3OGUoZCxnKX19KGQpfHxmdW5jdGlvbiBPMHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0''@;'; put 'put ''cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB3OGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBG''@;'; put 'put ''MHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB5RWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJh''@;'; put 'put ''YmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBvTSgpe3JldHVybiBvTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0''@;'; put 'put ''LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9TjB0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxvTS5hcHBseSh0aGlzLGFyZ3Vt''@;'; put 'put ''ZW50cyl9ZnVuY3Rpb24gTjB0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1OdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBiOGUoZCxnKXtyZXR1cm4oYjhlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gWjB0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09eThlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBLTyhkKX1mdW5jdGlvbiBLTyhkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1''@;'; put 'put ''cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gTnYoZCl7cmV0dXJuKE52PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9m''@;'; put 'put ''KGgpfSkoZCl9ZnVuY3Rpb24gRzB0KGQsZyxoKXsoZnVuY3Rpb24gVzB0KGQsZyl7aWYoZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5zZXQoZCxoKX1m''@;'; put 'put ''dW5jdGlvbiBfOGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIHdFZShkLGcpe3JldHVybiBmdW5jdGlvbiBZMHQoZCxnKXty''@;'; put 'put ''ZXR1cm4gZy5nZXQ/Zy5nZXQuY2FsbChkKTpnLnZhbHVlfShkLGJFZShkLGcsImdldCIpKX1mdW5jdGlvbiBDOGUoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBVMHQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''ImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLGJFZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gYkVlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQg''@;'; put 'put ''b24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQpfXZhciBrOGU9ImNvbGxhcHNpYmxlQ29sdW1ucyIsSjB0PVsibmVzdGVkSGVhZGVycyJdLF9FZT1uZXcgTWFwKFtbImNvbGxhcHNlIix7aGlkZUNvbHVtbjohMCxiZWZvcmVIb29rOiJiZWZvcmVDb2x1bW5Db2xsYXBzZSIsYWZ0ZXJI''@;'; put 'put ''b29rOiJhZnRlckNvbHVtbkNvbGxhcHNlIn1dLFsiZXhwYW5kIix7aGlkZUNvbHVtbjohMSxiZWZvcmVIb29rOiJiZWZvcmVDb2x1bW5FeHBhbmQiLGFmdGVySG9vazoiYWZ0ZXJDb2x1bW5FeHBhbmQifV1dKSwkTz1uZXcgV2Vha01hcCxYMHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFYwdChk''@;'; put 'put ''LGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9y''@;'; put 'put ''Ont2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZiOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBqMHQoZCl7dmFyIGc9ZnVuY3Rpb24gejB0KCl7aWYoInVuZGVmaW5l''@;'; put 'put ''ZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9TnYoZCk7aWYoZyl7dmFyIEM9TnYodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5h''@;'; put 'put ''cHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFowdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3ZhciB2O0YwdCh0aGlzLGgpO2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBfOGUoS08odj1n''@;'; put 'put ''LmNhbGwuYXBwbHkoZyxbdGhpc10uY29uY2F0KEMpKSksIm5lc3RlZEhlYWRlcnNQbHVnaW4iLG51bGwpLF84ZShLTyh2KSwiZXZlbnRNYW5hZ2VyIixuZXcgUDEoS08odikpKSxfOGUoS08odiksImhlYWRlclN0YXRlTWFuYWdlciIsbnVsbCksRzB0KEtPKHYpLCRPLHt3cml0YWJsZTohMCx2''@;'; put 'put ''YWx1ZTpudWxsfSksdn1yZXR1cm4gZnVuY3Rpb24gSDB0KGQsZyxoKXtnJiZ5RWUoZC5wcm90b3R5cGUsZyksaCYmeUVlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbazhlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuaG90LmdldFNldHRpbmdzKCkubmVzdGVkSGVhZGVyc3x8YzEoIllvdSBuZWVkIHRvIGNvbmZpZ3VyZSB0''@;'; put 'put ''aGUgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIGluIG9yZGVyIHRvIHVzZSBjb2xsYXBzaWJsZSBoZWFkZXJzLiIpLEM4ZSh0aGlzLCRPLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmNyZWF0ZUFuZFJlZ2lzdGVySW5kZXhNYXAodGhpcy5wbHVnaW5OYW1lLCJoaWRpbmciKSksdGhpcy5uZXN0''@;'; put 'put ''ZWRIZWFkZXJzUGx1Z2luPXRoaXMuaG90LmdldFBsdWdpbigibmVzdGVkSGVhZGVycyIpLHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyPXRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbi5nZXRTdGF0ZU1hbmFnZXIoKSx0aGlzLmFkZEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25Jbml0''@;'; put 'put ''KCl9KSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckxvYWREYXRhLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGZ1bmN0aW9uKGosY2Upe3JldHVybiB5Lm9uQWZ0ZXJHZXRDb2xIZWFk''@;'; put 'put ''ZXIoaixjZSl9KSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oaixjZSxfZSl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZURvd24oaixjZSxfZSl9KSxvTShOdihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSx0aGlz''@;'; put 'put ''LnVwZGF0ZVBsdWdpbigpKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC52aWV3KXtpZighdGhpcy5uZXN0ZWRIZWFkZXJzUGx1Z2luLmRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnMpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKCkuY29sbGFw''@;'; put 'put ''c2libGVDb2x1bW5zOyJib29sZWFuIj09dHlwZW9mIEM/dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIubWFwU3RhdGUoZnVuY3Rpb24oSSl7cmV0dXJue2NvbGxhcHNpYmxlOkkub3JpZ0NvbHNwYW4+MX19KTpBcnJheS5pc0FycmF5KEMpJiYodGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIubWFwU3Rh''@;'; put 'put ''dGUoZnVuY3Rpb24oKXtyZXR1cm57Y29sbGFwc2libGU6ITF9fSksdGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIubWVyZ2VTdGF0ZVdpdGgoQykpfW9NKE52KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpLEM4ZSh0aGlzLCRPLG51bGwpLHRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbj1udWxsLHRoaXMuY2xlYXJCdXR0b25zKCksb00oTnYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1''@;'; put 'put ''Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiY2xlYXJCdXR0b25zIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaG90LnZpZXcpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGgsQz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxl''@;'; put 'put ''LlRIRUFELEk9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuVEhFQUQsaj10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT90aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRvcElubGlu''@;'; put 'put ''ZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZS53dFRhYmxlLlRIRUFEOm51bGwsY2U9ZnVuY3Rpb24oUmUpe1JlJiZSZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFJlKX07cmEoMCx5LTEsZnVuY3Rpb24oX2Upe3ZhciBSZT1DLmNoaWxkTm9kZXNbX2VdLE5lPUkuY2hpbGROb2Rlc1tfZV0sS2U9''@;'; put 'put ''aj9qLmNoaWxkTm9kZXNbX2VdOm51bGw7cmEoMCxSZS5jaGlsZE5vZGVzLmxlbmd0aC0xLGZ1bmN0aW9uKGh0KXt2YXIgQnQ9UmUuY2hpbGROb2Rlc1todF0ucXVlcnlTZWxlY3RvcigiLmNvbGxhcHNpYmxlSW5kaWNhdG9yIik7Y2UoQnQpLE5lJiZOZS5jaGlsZE5vZGVzW2h0XSYmKEJ0PU5l''@;'; put 'put ''LmNoaWxkTm9kZXNbaHRdLnF1ZXJ5U2VsZWN0b3IoIi5jb2xsYXBzaWJsZUluZGljYXRvciIpLGNlKEJ0KSksaiYmS2UmJktlLmNoaWxkTm9kZXNbaHRdJiYoQnQ9S2UuY2hpbGROb2Rlc1todF0ucXVlcnlTZWxlY3RvcigiLmNvbGxhcHNpYmxlSW5kaWNhdG9yIiksY2UoQnQpKX0pfSl9fX0s''@;'; put 'put ''e2tleToiZXhwYW5kU2VjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy50b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oW3ldLCJleHBhbmQiKX19LHtrZXk6ImNvbGxhcHNlU2VjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy50b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oW3ldLCJjb2xs''@;'; put 'put ''YXBzZSIpfX0se2tleToidG9nZ2xlQWxsQ29sbGFwc2libGVTZWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPXRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1hcE5vZGVzKGZ1bmN0aW9uKGope3ZhciBOZT1qLmNvbHVtbkluZGV4LEtlPWouaXNDb2xsYXBzZWQ7aWYoITA9''@;'; put 'put ''PT1qLmNvbGxhcHNpYmxlJiZqLm9yaWdDb2xzcGFuPjEmJihLZSYmImV4cGFuZCI9PT15fHwhS2UmJiJjb2xsYXBzZSI9PT15KSlyZXR1cm57cm93OkMuaGVhZGVyU3RhdGVNYW5hZ2VyLmxldmVsVG9Sb3dDb29yZHMoai5oZWFkZXJMZXZlbCksY29sOk5lfX0pO3RoaXMudG9nZ2xlQ29sbGFw''@;'; put 'put ''c2libGVTZWN0aW9uKEkseSl9fSx7a2V5OiJjb2xsYXBzZUFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUFsbENvbGxhcHNpYmxlU2VjdGlvbnMoImNvbGxhcHNlIil9fSx7a2V5OiJleHBhbmRBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVBbGxDb2xsYXBzaWJsZVNl''@;'; put 'put ''Y3Rpb25zKCJleHBhbmQiKX19LHtrZXk6InRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzO2lmKCFfRWUuaGFzKEMpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWN0aW9uIGlzIHBhc3NlZCAoIi5jb25jYXQoQywiKS4iKSk7aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheSh5KSl7dmFyIGo9ZDQoeSxmdW5jdGlvbihobil7cmV0dXJuIGhuLnJvdzwwfSksY2U9ai5sZW5ndGg+MDtHcihqLGZ1bmN0aW9uKGhuKXt2YXIgRG4sRXI9bnVsbCE9PShEbj1JLmhlYWRlclN0YXRlTWFuYWdlci5nZXRIZWFkZXJTZXR0aW5ncyhobi5yb3csaG4uY29s''@;'; put 'put ''KSkmJnZvaWQgMCE9PURuP0RuOnt9LFlyPUVyLmlzQ29sbGFwc2VkO2lmKCFFci5jb2xsYXBzaWJsZXx8WXImJiJjb2xsYXBzZSI9PT1DfHwhWXImJiJleHBhbmQiPT09QylyZXR1cm4gY2U9ITEsITF9KTt2YXIgX2U9W10sUmU9W107Y2UmJkdyKGosZnVuY3Rpb24oaG4pe3ZhciBwcj1JLmhl''@;'; put 'put ''YWRlclN0YXRlTWFuYWdlci50cmlnZ2VyTm9kZU1vZGlmaWNhdGlvbihDLGhuLnJvdyxobi5jb2wpLFlyPXByLnJvbGxiYWNrTW9kaWZpY2F0aW9uO3ByLmNvbHNwYW5Db21wZW5zYXRpb24+MCYmKFJlLnB1c2guYXBwbHkoUmUsQUVlKHByLmFmZmVjdGVkQ29sdW1ucykpLF9lLnB1c2goWXIp''@;'; put 'put ''KX0pO3ZhciBOZT10aGlzLmdldENvbGxhcHNlZENvbHVtbnMoKSxLZT1bXTsiY29sbGFwc2UiPT09Qz9LZT1hM2UoW10uY29uY2F0KEFFZShOZSksUmUpKToiZXhwYW5kIj09PUMmJihLZT1kNChOZSxmdW5jdGlvbihobil7cmV0dXJuIVJlLmluY2x1ZGVzKGhuKX0pKTt2YXIgaHQ9X0VlLmdl''@;'; put 'put ''dChDKTtpZighMT09PXRoaXMuaG90LnJ1bkhvb2tzKGh0LmJlZm9yZUhvb2ssTmUsS2UsY2UpKXJldHVybiB2b2lkIEdyKF9lLGZ1bmN0aW9uKGhuKXtobigpfSk7dGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtHcihSZSxmdW5jdGlvbihobil7d0VlKEksJE8pLnNldFZhbHVl''@;'; put 'put ''QXRJbmRleChJLmhvdC50b1BoeXNpY2FsQ29sdW1uKGhuKSxodC5oaWRlQ29sdW1uKX0pfSwhMCk7dmFyICR0PXRoaXMuZ2V0Q29sbGFwc2VkQ29sdW1ucygpLmxlbmd0aCE9PU5lLmxlbmd0aDt0aGlzLmhvdC5ydW5Ib29rcyhodC5hZnRlckhvb2ssTmUsS2UsY2UsJHQpLHRoaXMuaG90LnJl''@;'; put 'put ''bmRlcigpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKX19fSx7a2V5OiJnZXRDb2xsYXBzZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB3RWUodGhpcywkTykuZ2V0SGlkZGVuSW5kZXhlcygpfX0se2tleToiZ2VuZXJhdGVJbmRpY2F0b3IiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGo9dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIuZ2V0SGVhZGVyU2V0dGluZ3MoeSxDKTtyZXR1cm4gUDAoSSwiY29sbGFwc2libGVJbmRpY2F0b3IiKSxqLmlzQ29sbGFwc2VkPyhQMChJ''@;'; put 'put ''LCJjb2xsYXBzZWQiKSxSdyhJLCIrIikpOihQMChJLCJleHBhbmRlZCIpLFJ3KEksIi0iKSksSX19LHtrZXk6Im9uQWZ0ZXJHZXRDb2xIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEksaj1DLnBhcmVudE5vZGUsY2U9ai5wYXJlbnROb2RlLF9lPS0xKmNlLmNoaWxkTm9kZXMubGVu''@;'; put 'put ''Z3RoK0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoY2UuY2hpbGROb2RlcyxqKSxSZT1udWxsIT09KEk9dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIuZ2V0SGVhZGVyU2V0dGluZ3MoX2UseSkpJiZ2b2lkIDAhPT1JP0k6e307aWYoUmUuY29sbGFwc2libGUmJlJlLm9yaWdDb2xzcGFuPjEm''@;'; put 'put ''Jnk+PXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQpe3ZhciBodD10aGlzLmdlbmVyYXRlSW5kaWNhdG9yKF9lLHkpO0MucXVlcnlTZWxlY3RvcigiZGl2OmZpcnN0LWNoaWxkIikuYXBwZW5kQ2hpbGQoaHQpfX19LHtrZXk6Im9uQmVmb3JlT25DZWxsTW91c2VEb3du''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbih5LEMpe1hhKHkudGFyZ2V0LCJjb2xsYXBzaWJsZUluZGljYXRvciIpJiYoWGEoeS50YXJnZXQsImV4cGFuZGVkIik/KHRoaXMuZXZlbnRNYW5hZ2VyLmZpcmVFdmVudCh5LnRhcmdldCwibW91c2V1cCIpLHRoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFtD''@;'; put 'put ''XSwiY29sbGFwc2UiKSk6WGEoeS50YXJnZXQsImNvbGxhcHNlZCIpJiYodGhpcy5ldmVudE1hbmFnZXIuZmlyZUV2ZW50KHkudGFyZ2V0LCJtb3VzZXVwIiksdGhpcy50b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oW0NdLCJleHBhbmQiKSksdjgoeSkpfX0se2tleToib25Jbml0Iix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMudXBkYXRlUGx1Z2luKCl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Q3x8dGhpcy51cGRhdGVQbHVnaW4oKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7QzhlKHRoaXMsJE8sbnVsbCksb00oTnYoaC5wcm90b3R5''@;'; put 'put ''cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gazhlfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjkwfX0se2tleToiUExVR0lOX0RFUFMiLGdldDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVyblsicGx1Z2luOk5lc3RlZEhlYWRlcnMiXX19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW2s4ZV0uY29uY2F0KEowdCl9fV0pLGh9KEdzKTtmdW5jdGlvbiBDRWUoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5j''@;'; put 'put ''dGlvbiAkMHQoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIGtFZShkLGcpe3JldHVybiBmdW5jdGlvbiBub3QoZCl7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHRvdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0''@;'; put 'put ''cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJv''@;'; put 'put ''dyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIGVvdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gU0VlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBTRWUoZCxnKX19KGQsZyl8fGZ1''@;'; put 'put ''bmN0aW9uIHEwdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBt''@;'; put 'put ''ZXRob2QuIil9KCl9ZnVuY3Rpb24gU0VlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gTUVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKysp''@;'; put 'put ''e3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIG9vdD1bInNvcnRFbXB0eUNlbGxzIiwiaW5kaWNhdG9yIiwiaGVh''@;'; put 'put ''ZGVyQWN0aW9uIiwiY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSJdLHVvdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gcm90KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9''@;'; put 'put ''KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5zb3J0aW5nU3RhdGVzPW5ldyBRZWUsdGhpcy5zb3J0RW1wdHlDZWxscz0hMSx0aGlzLmluZGljYXRvcj0hMCx0aGlzLmhlYWRlckFjdGlvbj0hMCx0aGlzLmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk9dm9pZCAwLHRoaXMubWFwTmFtZT1oLHRoaXMu''@;'; put 'put ''aG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKGgsdGhpcy5zb3J0aW5nU3RhdGVzKX1yZXR1cm4gZnVuY3Rpb24gaW90KGQsZyxoKXtnJiZNRWUoZC5wcm90b3R5cGUsZyksaCYmTUVlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiEx''@;'; put 'put ''fSl9KGQsW3trZXk6InVwZGF0ZUFsbENvbHVtbnNQcm9wZXJ0aWVzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzOyFBbChoKXx8WmwoaCxmdW5jdGlvbih5LEMpe29vdC5pbmNsdWRlcyhDKSYmKHZbQ109eSl9KX19LHtrZXk6ImdldEFsbENvbHVtbnNQcm9wZXJ0aWVzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBoPXtzb3J0RW1wdHlDZWxsczp0aGlzLnNvcnRFbXB0eUNlbGxzLGluZGljYXRvcjp0aGlzLmluZGljYXRvcixoZWFkZXJBY3Rpb246dGhpcy5oZWFkZXJBY3Rpb259O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmNvbXBhcmVGdW5jdGlvbkZhY3RvcnkmJiho''@;'; put 'put ''LmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk9dGhpcy5jb21wYXJlRnVuY3Rpb25GYWN0b3J5KSxofX0se2tleToiZ2V0U29ydE9yZGVyT2ZDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2O3JldHVybiBudWxsPT09KHY9dGhpcy5zb3J0aW5nU3RhdGVzLmdldFZhbHVlQXRJbmRleCh0aGlz''@;'; put 'put ''LmhvdC50b1BoeXNpY2FsQ29sdW1uKGgpKSl8fHZvaWQgMD09PXY/dm9pZCAwOnYuc29ydE9yZGVyfX0se2tleToiZ2V0SW5kZXhPZkNvbHVtbkluU29ydFF1ZXVlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaD10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGgpLHRoaXMuc29ydGluZ1N0''@;'; put 'put ''YXRlcy5nZXRFbnRyaWVzKCkuZmluZEluZGV4KGZ1bmN0aW9uKHYpe3JldHVybiBrRWUodiwxKVswXT09PWh9KX19LHtrZXk6ImdldE51bWJlck9mU29ydGVkQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3J0aW5nU3RhdGVzLmdldExlbmd0aCgpfX0se2tleToiaXNM''@;'; put 'put ''aXN0T2ZTb3J0ZWRDb2x1bW5zRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmdldE51bWJlck9mU29ydGVkQ29sdW1ucygpfX0se2tleToiaXNDb2x1bW5Tb3J0ZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBBbCh0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0VmFsdWVB''@;'; put 'put ''dEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oaCkpKX19LHtrZXk6ImdldFNvcnRTdGF0ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcztyZXR1cm4gbnVsbD09PXRoaXMuc29ydGluZ1N0YXRlcz9bXTp0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0RW50cmllcygpLm1hcChmdW5j''@;'; put 'put ''dGlvbih5KXt2YXIgQz1rRWUoeSwyKSxqPUNbMV07cmV0dXJuIGZ1bmN0aW9uIEswdChkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9DRWUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKHYpeyQwdChkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpDRWUoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfSh7Y29sdW1uOmguaG90LnRvVmlzdWFsQ29sdW1uKENbMF0pfSxqKX0pfX0se2tleToiZ2V0Q29sdW1uU29ydFN0YXRlIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLmdl''@;'; put 'put ''dFNvcnRPcmRlck9mQ29sdW1uKGgpO2lmKEVvKHYpKXJldHVybntjb2x1bW46aCxzb3J0T3JkZXI6dn19fSx7a2V5OiJzZXRTb3J0U3RhdGVzIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnNvcnRpbmdTdGF0ZXMuY2xlYXIoKTtmb3IodmFyIHY9MDt2PGgubGVuZ3RoO3YrPTEpdGhpcy5zb3J0''@;'; put 'put ''aW5nU3RhdGVzLnNldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGhbdl0uY29sdW1uKSx7c29ydE9yZGVyOmhbdl0uc29ydE9yZGVyfSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJN''@;'; put 'put ''YXAodGhpcy5tYXBOYW1lKSx0aGlzLnNvcnRpbmdTdGF0ZXM9bnVsbH19XSksZH0oKSxEdGU9ImFzYyIsTHRlPSJkZXNjIjtmdW5jdGlvbiBFRWUoZCl7aWYoZCE9PUx0ZSlyZXR1cm4gZD09PUR0ZT9MdGU6RHRlfWZ1bmN0aW9uIHhFZShkKXtyZXR1cm4gZC5xdWVyeVNlbGVjdG9yKCIuIi5j''@;'; put 'put ''b25jYXQoImNvbEhlYWRlciIpKX1mdW5jdGlvbiBURWUoZCxnKXtpZihkPDB8fCFnLnBhcmVudE5vZGUpcmV0dXJuITE7dmFyIGg9Zy5wYXJlbnROb2RlLnBhcmVudE5vZGUuY2hpbGROb2RlcztyZXR1cm4tMT09QXJyYXkuZnJvbShoKS5pbmRleE9mKGcucGFyZW50Tm9kZSktaC5sZW5ndGh9''@;'; put 'put ''ZnVuY3Rpb24gUzhlKGQsZyxoKXtyZXR1cm4tMT09PWQmJmc+PTAmJiExPT09UHcoaCl9dmFyIElFZT0iaW5kaWNhdG9yRGlzYWJsZWQiLERFZT0iY29sdW1uU29ydGluZyIsTEVlPSJzb3J0QWN0aW9uIixPRWU9bmV3IE1hcChbW0R0ZSwiYXNjZW5kaW5nIl0sW0x0ZSwiZGVzY2VuZGluZyJd''@;'; put 'put ''XSk7ZnVuY3Rpb24gZ290KGQsZyxoLHYpe3ZhciB5PVtERWVdO2lmKHYmJnkucHVzaChMRWUpLCExPT09aClyZXR1cm4geS5wdXNoKElFZSkseTt2YXIgQz1kLmdldFNvcnRPcmRlck9mQ29sdW1uKGcpO3JldHVybiBFbyhDKSYmeS5wdXNoKE9FZS5nZXQoQykpLHl9ZnVuY3Rpb24gbW90KCl7''@;'; put 'put ''cmV0dXJuIEFycmF5LmZyb20oT0VlLnZhbHVlcygpKS5jb25jYXQoTEVlLElFZSxERWUpfWZ1bmN0aW9uIFJFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEJFZShkLGcsaCl7cmV0dXJuIGcmJlJFZShkLnByb3RvdHlwZSxnKSxoJiZSRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9''@;'; put 'put ''KSxkfWZ1bmN0aW9uIFBFZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfXZhciBGRWU9QkVlKGZ1bmN0aW9uIGQoZyl7UEVlKHRoaXMsZCksdGhpcy5kYXRhPWcsdGhpcy5uZXh0PW51bGws''@;'; put 'put ''dGhpcy5wcmV2PW51bGx9KSx2b3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7UEVlKHRoaXMsZCksdGhpcy5maXJzdD1udWxsLHRoaXMubGFzdD1udWxsfXJldHVybiBCRWUoZCxbe2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9bmV3IEZFZShoKTtpZihudWxsPT09dGhpcy5m''@;'; put 'put ''aXJzdCl0aGlzLmZpcnN0PXYsdGhpcy5sYXN0PXY7ZWxzZXt2YXIgeT10aGlzLmxhc3Q7dGhpcy5sYXN0PXYsdi5wcmV2PXkseS5uZXh0PXZ9fX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9bmV3IEZFZShoKTtpZihudWxsPT09dGhpcy5maXJzdCl0aGlzLmZpcnN0''@;'; put 'put ''PXYsdGhpcy5sYXN0PXY7ZWxzZXt2YXIgeT10aGlzLmZpcnN0O3RoaXMuZmlyc3Q9dix2Lm5leHQ9eSx5LnByZXY9dn19fSx7a2V5OiJpbm9yZGVyIix2YWx1ZTpmdW5jdGlvbihoKXtmb3IodmFyIHY9dGhpcy5maXJzdDt2OyloKHYpLHY9di5uZXh0fX0se2tleToicmVtb3ZlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXtpZihudWxsPT09dGhpcy5maXJzdClyZXR1cm4hMTtmb3IodmFyIHksQyx2PXRoaXMuZmlyc3Q7djspe2lmKHYuZGF0YT09PWgpcmV0dXJuIEM9di5wcmV2LCh5PXYubmV4dCkmJih5LnByZXY9QyksQyYmKEMubmV4dD15KSx2PT09dGhpcy5maXJzdCYmKHRoaXMuZmlyc3Q9''@;'; put 'put ''eSksdj09PXRoaXMubGFzdCYmKHRoaXMubGFzdD1DKSwhMDt2PXYubmV4dH1yZXR1cm4hMX19LHtrZXk6Imhhc0N5Y2xlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgaD10aGlzLmZpcnN0LHY9dGhpcy5maXJzdDs7KXtpZihudWxsPT09aHx8bnVsbD09PShoPWgubmV4dCkpcmV0dXJuITE7''@;'; put 'put ''aWYoKGg9aC5uZXh0KT09PSh2PXYubmV4dCkpcmV0dXJuITB9fX0se2tleToicG9wIix2YWx1ZTpmdW5jdGlvbigpe2lmKG51bGw9PT10aGlzLmxhc3QpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5sYXN0O3JldHVybiB0aGlzLmxhc3Q9dGhpcy5sYXN0LnByZXYsaH19LHtrZXk6InNoaWZ0Iix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe2lmKG51bGw9PT10aGlzLmZpcnN0KXJldHVybiBudWxsO3ZhciBoPXRoaXMuZmlyc3Q7cmV0dXJuIHRoaXMuZmlyc3Q9dGhpcy5maXJzdC5uZXh0LGh9fSx7a2V5OiJyZWN1cnNpdmVSZXZlcnNlIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZmlyc3QpeyhmdW5j''@;'; put 'put ''dGlvbiBoKHksQyl7IUN8fChoKEMsQy5uZXh0KSxDLm5leHQ9eSl9KSh0aGlzLmZpcnN0LHRoaXMuZmlyc3QubmV4dCksdGhpcy5maXJzdC5uZXh0PW51bGw7dmFyIHY9dGhpcy5maXJzdDt0aGlzLmZpcnN0PXRoaXMubGFzdCx0aGlzLmxhc3Q9dn19fSx7a2V5OiJyZXZlcnNlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe2lmKHRoaXMuZmlyc3QmJnRoaXMuZmlyc3QubmV4dCl7Zm9yKHZhciB5LGg9dGhpcy5maXJzdC5uZXh0LHY9dGhpcy5maXJzdDtoOyl5PWgubmV4dCxoLm5leHQ9dix2LnByZXY9aCx2PWgsaD15O3RoaXMuZmlyc3QubmV4dD1udWxsLHRoaXMubGFzdC5wcmV2PW51bGwseT10''@;'; put 'put ''aGlzLmZpcnN0LHRoaXMuZmlyc3Q9dix0aGlzLmxhc3Q9eX19fV0pLGR9KCk7Y29uc3QgSEVlPXZvdDt2YXIgQW90PWZ1bmN0aW9uKGcsaCl7dmFyIHY9Zy50b1N0cmluZygpLHk9aC50b1N0cmluZygpO3JldHVybiB2PT09eT8wOnY8eT8tMToxfTtmdW5jdGlvbiBNOGUoZCl7dmFyIGc9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOkFvdCxoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLHY9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1l''@;'; put 'put ''bnRzWzNdOmQubGVuZ3RoO2lmKE1hdGguYWJzKHYtaCk8PTEpcmV0dXJuW107dmFyIHk9TWF0aC5jZWlsKChoK3YpLzIpO3JldHVybiBNOGUoZCxnLGgseSksTThlKGQsZyx5LHYpLHlvdChkLGcsaCx5LHYpfWZ1bmN0aW9uIHlvdChkLGcsaCx2LHkpe2Zvcih2YXIgQz1uZXcgSEVlLEk9bmV3''@;'; put 'put ''IEhFZSxqPXYtaCxjZT15LXYsX2U9TWF0aC5tYXgoaixjZSksUmU9eS1oLE5lPTA7TmU8X2U7TmUrPTEpTmU8aiYmQy5wdXNoKGRbaCtOZV0pLE5lPGNlJiZJLnB1c2goZFt2K05lXSk7Zm9yKHZhciBLZT0wO0tlPFJlOylkW2grS2VdPUMuZmlyc3QmJkkuZmlyc3Q/ZyhDLmZpcnN0LmRhdGEs''@;'; put 'put ''SS5maXJzdC5kYXRhKT4wP0kuc2hpZnQoKS5kYXRhOkMuc2hpZnQoKS5kYXRhOkMuZmlyc3Q/Qy5zaGlmdCgpLmRhdGE6SS5zaGlmdCgpLmRhdGEsS2UrPTE7cmV0dXJuIGR9ZnVuY3Rpb24gTkVlKGQsZyxoKXt2YXIgdj1nLmxvY2FsZTtyZXR1cm4gZnVuY3Rpb24oeSxDKXt2YXIgST1oLnNv''@;'; put 'put ''cnRFbXB0eUNlbGxzO3JldHVybiJzdHJpbmciPT10eXBlb2YgeSYmKHk9eS50b0xvY2FsZUxvd2VyQ2FzZSh2KSksInN0cmluZyI9PXR5cGVvZiBDJiYoQz1DLnRvTG9jYWxlTG93ZXJDYXNlKHYpKSx5PT09Qz8wOmRjKHkpP2RjKEMpPzA6SSYmImFzYyI9PT1kPy0xOjE6ZGMoQyk/SSYmImFz''@;'; put 'put ''YyI9PT1kPzE6LTE6aXNOYU4oeSkmJiFpc05hTihDKT8iYXNjIj09PWQ/MTotMTohaXNOYU4oeSkmJmlzTmFOKEMpfHwoaXNOYU4oeSl8fGlzTmFOKEMpfHwoeT1wYXJzZUZsb2F0KHkpLEM9cGFyc2VGbG9hdChDKSkseTxDKT8iYXNjIj09PWQ/LTE6MTp5PkM/ImFzYyI9PT1kPzE6LTE6MH19''@;'; put 'put ''dmFyIEU4ZT1rcCgic29ydGluZy5jb21wYXJlRnVuY3Rpb25GYWN0b3J5IiksT3RlPUU4ZS5yZWdpc3RlcixqRWU9RThlLmdldEl0ZW0sRW90PUU4ZS5oYXNJdGVtLFpFZT1rcCgic29ydGluZy5tYWluU29ydENvbXBhcmF0b3IiKSx6RWU9WkVlLnJlZ2lzdGVyLHhvdD1aRWUuZ2V0SXRlbTtm''@;'; put 'put ''dW5jdGlvbiBHRWUoZCl7cmV0dXJuIEVvdChkKT9qRWUoZCk6akVlKCJkZWZhdWx0Iil9ZnVuY3Rpb24gV0VlKGQpe3JldHVybiBmdW5jdGlvbiBMb3QoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIERvdChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBJb3QoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFlFZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''dG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2''@;'; put 'put ''fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gWUVlKGQsZyl9fShkKXx8ZnVuY3Rpb24gVG90KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJh''@;'; put 'put ''YmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBZRWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFto''@;'; put 'put ''XTtyZXR1cm4gdn1mdW5jdGlvbiB4OGUoZCl7cmV0dXJuKHg4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfU90ZSgibnVtZXJpYyIsZnVuY3Rpb24gYm90KGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24odix5KXt2YXIgQz1wYXJzZUZsb2F0KHYpLEk9cGFyc2VGbG9h''@;'; put 'put ''dCh5KSxqPWguc29ydEVtcHR5Q2VsbHM7aWYoQz09PUl8fGlzTmFOKEMpJiZpc05hTihJKSlyZXR1cm4gMDtpZihqKXtpZihkYyh2KSlyZXR1cm4iYXNjIj09PWQ/LTE6MTtpZihkYyh5KSlyZXR1cm4iYXNjIj09PWQ/MTotMX1yZXR1cm4gaXNOYU4oQyk/MTppc05hTihJKT8tMTpDPEk/ImFz''@;'; put 'put ''YyI9PT1kPy0xOjE6Qz5JPyJhc2MiPT09ZD8xOi0xOjB9fSksT3RlKCJjaGVja2JveCIsZnVuY3Rpb24gQ290KGQsZyxoKXt2YXIgdj1nLmNoZWNrZWRUZW1wbGF0ZSx5PWcudW5jaGVja2VkVGVtcGxhdGUsQz1oLnNvcnRFbXB0eUNlbGxzO3JldHVybiBmdW5jdGlvbihJLGope3ZhciBjZT1k''@;'; put 'put ''YyhJKSxfZT1kYyhqKSxSZT1jZT95OkksTmU9X2U/eTpqLEtlPVJlPT09eXx8UmU9PT12LGh0PU5lPT09eXx8TmU9PT12O2lmKCExPT09Qyl7aWYoY2UmJiExPT09X2UpcmV0dXJuIDE7aWYoITE9PT1jZSYmX2UpcmV0dXJuLTF9cmV0dXJuITE9PT1LZSYmaHQ/ImFzYyI9PT1kPy0xOjE6S2Um''@;'; put 'put ''JiExPT09aHQ/ImFzYyI9PT1kPzE6LTE6ITE9PT1LZSYmITE9PT1odD9ORWUoZCxnLGgpKEksaik6UmU9PT15JiZOZT09PXY/ImFzYyI9PT1kPy0xOjE6UmU9PT12JiZOZT09PXk/ImFzYyI9PT1kPzE6LTE6MH19KSxPdGUoImRhdGUiLGZ1bmN0aW9uIFNvdChkLGcsaCl7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uKHYseSl7dmFyIEM9aC5zb3J0RW1wdHlDZWxscztpZih2PT09eSlyZXR1cm4gMDtpZihkYyh2KSlyZXR1cm4gZGMoeSk/MDpDJiYiYXNjIj09PWQ/LTE6MTtpZihkYyh5KSlyZXR1cm4gQyYmImFzYyI9PT1kPzE6LTE7dmFyIEk9Zy5kYXRlRm9ybWF0LGo9a2wodixJKSxjZT1rbCh5LEkp''@;'; put 'put ''O3JldHVybiBqLmlzVmFsaWQoKT9jZS5pc1ZhbGlkKCk/Y2UuaXNBZnRlcihqKT8iYXNjIj09PWQ/LTE6MTpjZS5pc0JlZm9yZShqKT8iYXNjIj09PWQ/MTotMTowOi0xOjF9fSksT3RlKCJkZWZhdWx0IixORWUpO3ZhciBSb3Q9WyJjb2x1bW4iXSxCb3Q9WyJjb2x1bW4iXTtmdW5jdGlvbiBx''@;'; put 'put ''TyhkKXtyZXR1cm4gZnVuY3Rpb24gTm90KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIFQ4ZShkKX0oZCl8fGZ1bmN0aW9uIEhvdChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0''@;'; put 'put ''dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBGb3QoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFQ4ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0''@;'; put 'put ''b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gVDhlKGQsZyl9fShkKXx8ZnVu''@;'; put 'put ''Y3Rpb24gUG90KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2Qu''@;'; put 'put ''Iil9KCl9ZnVuY3Rpb24gVDhlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gVUVlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0Lmdl''@;'; put 'put ''dE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0''@;'; put 'put ''dXJuIGh9ZnVuY3Rpb24gUUVlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP1VFZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7Vm90KGQsdixoW3ZdKX0pOk9iamVjdC5n''@;'; put 'put ''ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOlVFZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gVm90KGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBK''@;'; put 'put ''RWUoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlvbiBqb3QoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMsaD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0p''@;'; put 'put ''O3JldHVybiBofShkLGcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNF''@;'; put 'put ''bnVtZXJhYmxlLmNhbGwoZCx2KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofWZ1bmN0aW9uIFhFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53''@;'; put 'put ''cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGFNKCl7cmV0dXJuIGFNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1Hb3QoZyxoKTtpZih5''@;'; put 'put ''KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGFNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBHb3QoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90''@;'; put 'put ''eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVZ2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEk4ZShkLGcpe3JldHVybihJOGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3By''@;'; put 'put ''b3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBVb3QoZCxnKXtpZihnJiYoIm9iamVjdCI9PT14OGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBv''@;'; put 'put ''YmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFFvdChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9u''@;'; put 'put ''IFZ2KGQpe3JldHVybihWdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBEOGU9ImNvbHVtblNvcnRpbmciLEtFZT0iYXBwZW5k''@;'; put 'put ''Ijt6RWUoRDhlLGZ1bmN0aW9uIE9vdChkLGcpe3JldHVybiBmdW5jdGlvbihoLHYpe3ZhciBSZSxOZSxLZSxodCxCdCxDPVdFZShoKS5zbGljZSgxKSxqPVdFZSh2KS5zbGljZSgxKTtyZXR1cm4gUmU9ZFswXSxLZT1DWzBdLGh0PWpbMF0sKChCdD0oTmU9Z1swXSkuY29sdW1uU29ydGluZyku''@;'; put 'put ''Y29tcGFyZUZ1bmN0aW9uRmFjdG9yeT9CdC5jb21wYXJlRnVuY3Rpb25GYWN0b3J5OkdFZShOZS50eXBlKSkoUmUsTmUsQnQpKEtlLGh0KX19KSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uU29ydCIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNv''@;'; put 'put ''bHVtblNvcnQiKTt2YXIgJEVlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBXb3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3Rv''@;'; put 'put ''dHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSThlKGQsZyl9KGgsZCk7dmFyIGc9ZnVu''@;'; put 'put ''Y3Rpb24gWW90KGQpe3ZhciBnPWZ1bmN0aW9uIEpvdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJu''@;'; put 'put ''IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVZ2KGQpO2lmKGcpe3ZhciBDPVZ2KHRoaXMpLmNvbnN0cnVjdG9y''@;'; put 'put ''O3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBVb3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIFpvdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5jb2x1bW5TdGF0ZXNNYW5hZ2VyPW51bGwseS5jb2x1bW5NZXRhQ2FjaGU9bnVsbCx5LnBsdWdpbktleT1EOGUseS5pbmRleGVzU2VxdWVuY2VDYWNoZT1u''@;'; put 'put ''dWxsLHl9cmV0dXJuIGZ1bmN0aW9uIHpvdChkLGcsaCl7ZyYmWEVlKGQucHJvdG90eXBlLGcpLGgmJlhFZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0''@;'; put 'put ''aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuY29sdW1uU3RhdGVzTWFuYWdlcj1uZXcgdW90KHRoaXMuaG90LCIiLmNvbmNhdCh0aGlzLnBsdWdp''@;'; put 'put ''bktleSwiLnNvcnRpbmdTdGF0ZXMiKSksdGhpcy5jb2x1bW5NZXRhQ2FjaGU9bmV3IFZ3KGZ1bmN0aW9uKEMpe3ZhciBJPXkuaG90LnRvVmlzdWFsQ29sdW1uKEMpO3JldHVybiBudWxsPT09SSYmKEk9QykseS5nZXRNZXJnZWRQbHVnaW5TZXR0aW5ncyhJKX0pLHRoaXMuaG90LmNvbHVtbklu''@;'; put 'put ''ZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCIiLmNvbmNhdCh0aGlzLnBsdWdpbktleSwiLmNvbHVtbk1ldGEiKSx0aGlzLmNvbHVtbk1ldGFDYWNoZSksdGhpcy5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkFmdGVyR2V0Q29sSGVhZGVyKEMsSSl9''@;'; put 'put ''KSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZU9uQ2VsbE1vdXNlRG93bi5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsTW91c2VEb3duIixmdW5jdGlvbihDLEkpe3JldHVybiB5Lm9u''@;'; put 'put ''QWZ0ZXJPbkNlbGxNb3VzZURvd24oQyxJKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiB5LmxvYWRPclNvcnRCeVNldHRpbmdzKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckxvYWREYXRhLmFw''@;'; put 'put ''cGx5KHksYXJndW1lbnRzKX0pLHRoaXMuaG90LnZpZXcmJnRoaXMubG9hZE9yU29ydEJ5U2V0dGluZ3MoKSxhTShWdihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMs''@;'; put 'put ''Qz1mdW5jdGlvbihqLGNlKXt2YXIgX2U9eEVlKGNlKTshMT09PVRFZShqLGNlKXx8bnVsbD09PV9lfHx5LnVwZGF0ZUhlYWRlckNsYXNzZXMoX2UpfTt0aGlzLmhvdC5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsQyksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIs''@;'; put 'put ''ZnVuY3Rpb24oKXt5LmhvdC5yZW1vdmVIb29rKCJhZnRlckdldENvbEhlYWRlciIsQyl9KSx0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe251bGwhPT15LmluZGV4ZXNTZXF1ZW5jZUNhY2hlJiYoeS5ob3Qucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKHkuaW5k''@;'; put 'put ''ZXhlc1NlcXVlbmNlQ2FjaGUuZ2V0VmFsdWVzKCkpLHkuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoeS5wbHVnaW5LZXkpKX0sITApLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoIiIuY29uY2F0KHRoaXMucGx1Z2luS2V5LCIuY29sdW1uTWV0YSIp''@;'; put 'put ''KSx0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZGVzdHJveSgpLHRoaXMuY29sdW1uTWV0YUNhY2hlPW51bGwsdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyPW51bGwsYU0oVnYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic29ydCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5nZXRTb3J0Q29uZmlnKCksST10aGlzLmdldE5vcm1hbGl6ZWRTb3J0Q29uZmlncyh5KSxqPXRoaXMuYXJlVmFsaWRTb3J0Q29uZmlncyhJKTshMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb2x1bW5Tb3J0IixDLEksaikmJigwPT09Qy5sZW5n''@;'; put 'put ''dGgmJm51bGw9PT10aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlJiYodGhpcy5pbmRleGVzU2VxdWVuY2VDYWNoZT10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbktleSxuZXcgQmtlKSx0aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlLnNldFZhbHVlcyh0aGlz''@;'; put 'put ''LmhvdC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKSkpLGomJih0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuc2V0U29ydFN0YXRlcyhJKSx0aGlzLnNvcnRCeVByZXNldFNvcnRTdGF0ZXMoSSksdGhpcy5zYXZlQWxsU29ydFNldHRpbmdzKEkpKSx0aGlzLmhvdC5ydW5Ib29r''@;'; put 'put ''cygiYWZ0ZXJDb2x1bW5Tb3J0IixDLGo/STpDLGopLGomJih0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITEsdGhpcy5ob3Qudmlldy5yZW5kZXIoKSkpfX0se2tleToiY2xlYXJTb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc29ydChbXSl9fSx7a2V5OiJp''@;'; put 'put ''c1NvcnRlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmFibGVkJiYhdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmlzTGlzdE9mU29ydGVkQ29sdW1uc0VtcHR5KCl9fSx7a2V5OiJnZXRTb3J0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gRW8oeSk/dGhpcy5jb2x1''@;'; put 'put ''bW5TdGF0ZXNNYW5hZ2VyLmdldENvbHVtblNvcnRTdGF0ZSh5KTp0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0U29ydFN0YXRlcygpfX0se2tleToic2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5nZXROb3JtYWxpemVkU29ydENvbmZpZ3MoeSk7dGhpcy5h''@;'; put 'put ''cmVWYWxpZFNvcnRDb25maWdzKEMpJiZ0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuc2V0U29ydFN0YXRlcyhDKX19LHtrZXk6ImdldE5vcm1hbGl6ZWRTb3J0Q29uZmlncyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9h''@;'; put 'put ''cmd1bWVudHNbMF06W107cmV0dXJuIEFycmF5LmlzQXJyYXkoeSk/eS5zbGljZSgwLDEpOlt5XX19LHtrZXk6ImFyZVZhbGlkU29ydENvbmZpZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmNvdW50Q29scygpO3JldHVybiBmdW5jdGlvbiBob3QoZCl7aWYoZC5zb21lKGZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiExPT09ZnVuY3Rpb24gZm90KGQpe2lmKCExPT09QWwoZCkpcmV0dXJuITE7dmFyIGg9ZC5zb3J0T3JkZXI7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZC5jb2x1bW4pJiZbRHRlLEx0ZV0uaW5jbHVkZXMoaCl9KGgpfSkpcmV0dXJuITE7dmFyIGc9ZC5tYXAoZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIGguY29sdW1ufSk7cmV0dXJuIG5ldyBTZXQoZykuc2l6ZT09PWcubGVuZ3RofSh5KSYmeS5ldmVyeShmdW5jdGlvbihJKXt2YXIgaj1JLmNvbHVtbjtyZXR1cm4gajw9QyYmaj49MH0pfX0se2tleToic2F2ZUFsbFNvcnRTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''eSl7dmFyIEM9dGhpcyxJPXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5nZXRBbGxDb2x1bW5zUHJvcGVydGllcygpO0kuaW5pdGlhbENvbmZpZz1UbCh5LGZ1bmN0aW9uKF9lKXt2YXIgUmU9X2UuY29sdW1uLE5lPUpFZShfZSxSb3QpO3JldHVybiBRRWUoe2NvbHVtbjpDLmhvdC50b1BoeXNp''@;'; put 'put ''Y2FsQ29sdW1uKFJlKX0sTmUpfSksdGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLCJjb2x1bW5Tb3J0aW5nIixJKX19LHtrZXk6ImdldEFsbFNhdmVkU29ydFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz17fTt0aGlzLmhvdC5ydW5Ib29rcygi''@;'; put 'put ''cGVyc2lzdGVudFN0YXRlTG9hZCIsImNvbHVtblNvcnRpbmciLEMpO3ZhciBJPUMudmFsdWU7cmV0dXJuIEVvKEkpJiZBcnJheS5pc0FycmF5KEkuaW5pdGlhbENvbmZpZykmJihJLmluaXRpYWxDb25maWc9VGwoSS5pbml0aWFsQ29uZmlnLGZ1bmN0aW9uKF9lKXt2YXIgUmU9X2UuY29sdW1u''@;'; put 'put ''LE5lPUpFZShfZSxCb3QpO3JldHVybiBRRWUoe2NvbHVtbjp5LmhvdC50b1Zpc3VhbENvbHVtbihSZSl9LE5lKX0pKSxJfX0se2tleToiZ2V0Q29sdW1uTmV4dENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldFNvcnRPcmRlck9mQ29s''@;'; put 'put ''dW1uKHkpO2lmKEVvKEMpKXt2YXIgST1FRWUoQyk7cmV0dXJuIEVvKEkpP3tjb2x1bW46eSxzb3J0T3JkZXI6SX06dm9pZCAwfXZhciBqPXRoaXMuaG90LmNvdW50Q29scygpO2lmKE51bWJlci5pc0ludGVnZXIoeSkmJnk+PTAmJnk8ailyZXR1cm57Y29sdW1uOnksc29ydE9yZGVyOkVFZSgp''@;'; put 'put ''fX19LHtrZXk6ImdldE5leHRTb3J0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06S0VlLEk9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldEluZGV4T2ZDb2x1bW5JblNvcnRRdWV1''@;'; put 'put ''ZSh5KSxqPS0xIT09SSxjZT10aGlzLmdldFNvcnRDb25maWcoKSxfZT10aGlzLmdldENvbHVtbk5leHRDb25maWcoeSk7aWYoail7aWYodTEoX2UpKXJldHVybltdLmNvbmNhdChxTyhjZS5zbGljZSgwLEkpKSxxTyhjZS5zbGljZShJKzEpKSk7aWYoQz09PUtFZSlyZXR1cm5bXS5jb25jYXQo''@;'; put 'put ''cU8oY2Uuc2xpY2UoMCxJKSkscU8oY2Uuc2xpY2UoSSsxKSksW19lXSk7aWYoInJlcGxhY2UiPT09QylyZXR1cm5bXS5jb25jYXQocU8oY2Uuc2xpY2UoMCxJKSksW19lXSxxTyhjZS5zbGljZShJKzEpKSl9cmV0dXJuIEVvKF9lKT9jZS5jb25jYXQoX2UpOmNlfX0se2tleToiZ2V0UGx1Z2lu''@;'; put 'put ''Q29sdW1uQ29uZmlnIix2YWx1ZTpmdW5jdGlvbih5KXtpZihBbCh5KSl7dmFyIEM9eVt0aGlzLnBsdWdpbktleV07aWYoQWwoQykpcmV0dXJuIEN9cmV0dXJue319fSx7a2V5OiJnZXRNZXJnZWRQbHVnaW5TZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVt0aGlzLnBsdWdpbktleV0sST10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0QWxsQ29sdW1uc1Byb3BlcnRpZXMoKSxqPXRoaXMuaG90LmdldENlbGxNZXRhKDAseSksY2U9T2JqZWN0LmdldFByb3RvdHlwZU9mKGopO3JldHVybiBBcnJheS5pc0FycmF5KGNlLmNvbHVtbnMp''@;'; put 'put ''P09iamVjdC5hc3NpZ24oSSxDLHRoaXMuZ2V0UGx1Z2luQ29sdW1uQ29uZmlnKGNlLmNvbHVtbnNbeV0pKTpVMihjZS5jb2x1bW5zKT9PYmplY3QuYXNzaWduKEksQyx0aGlzLmdldFBsdWdpbkNvbHVtbkNvbmZpZyhjZS5jb2x1bW5zKHkpKSk6T2JqZWN0LmFzc2lnbihJLEMpfX0se2tleToi''@;'; put 'put ''Z2V0Rmlyc3RDZWxsU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmdldENlbGxNZXRhKDAseSksST1PYmplY3QuY3JlYXRlKEMpO3JldHVybiBJW3RoaXMucGx1Z2luS2V5XT10aGlzLmNvbHVtbk1ldGFDYWNoZS5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9Q''@;'; put 'put ''aHlzaWNhbENvbHVtbih5KSksSX19LHtrZXk6ImdldE51bWJlck9mUm93c1RvU29ydCIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTtyZXR1cm4gQy5tYXhSb3dzPD15P0MubWF4Um93czp5LUMubWluU3BhcmVSb3dzfX0se2tleToic29ydEJ5UHJlc2V0''@;'; put 'put ''U29ydFN0YXRlcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcztpZigwIT09eS5sZW5ndGgpe2Zvcih2YXIgST1bXSxqPXRoaXMuaG90LmNvdW50Um93cygpLGNlPWZ1bmN0aW9uKGhuKXtyZXR1cm4gVGwoeSxmdW5jdGlvbihEbil7cmV0dXJuIEMuaG90LmdldERhdGFBdENlbGwoaG4s''@;'; put 'put ''RG4uY29sdW1uKX0pfSxfZT0wO19lPHRoaXMuZ2V0TnVtYmVyT2ZSb3dzVG9Tb3J0KGopO19lKz0xKUkucHVzaChbdGhpcy5ob3QudG9QaHlzaWNhbFJvdyhfZSldLmNvbmNhdChjZShfZSkpKTt2YXIgUmU9VGwoSSxmdW5jdGlvbigkdCl7cmV0dXJuICR0WzBdfSk7IWZ1bmN0aW9uIHdvdChk''@;'; put 'put ''LGcpe2Zvcih2YXIgaD14b3QoZyksdj1hcmd1bWVudHMubGVuZ3RoLHk9bmV3IEFycmF5KHY+Mj92LTI6MCksQz0yO0M8djtDKyspeVtDLTJdPWFyZ3VtZW50c1tDXTtNOGUoZCxoLmFwcGx5KHZvaWQgMCx5KSl9KEksdGhpcy5wbHVnaW5LZXksVGwoeSxmdW5jdGlvbigkdCl7cmV0dXJuICR0''@;'; put 'put ''LnNvcnRPcmRlcn0pLFRsKHksZnVuY3Rpb24oJHQpe3JldHVybiBDLmdldEZpcnN0Q2VsbFNldHRpbmdzKCR0LmNvbHVtbil9KSk7Zm9yKHZhciBOZT1JLmxlbmd0aDtOZTxqO05lKz0xKUkucHVzaChbTmVdLmNvbmNhdChjZShOZSkpKTt2YXIgS2U9VGwoSSxmdW5jdGlvbigkdCl7cmV0dXJu''@;'; put 'put ''ICR0WzBdfSksaHQ9bmV3IE1hcChUbChSZSxmdW5jdGlvbigkdCxobil7cmV0dXJuWyR0LEtlW2huXV19KSksQnQ9VGwodGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksZnVuY3Rpb24oJHQpe3JldHVybiBodC5oYXMoJHQpP2h0LmdldCgkdCk6JHR9KTt0aGlz''@;'; put 'put ''LmhvdC5yb3dJbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoQnQpfWVsc2UgdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGUuZ2V0VmFsdWVzKCkpfX0se2tleToibG9hZE9yU29ydEJ5U2V0dGluZ3MiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5nZXRBbGxTYXZlZFNvcnRTZXR0aW5ncygpO2lmKEFsKHkpKXRoaXMuc29ydEJ5U2V0dGluZ3MoeSk7ZWxzZXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XTt0aGlzLnNvcnRCeVNldHRpbmdzKEMpfX19LHtrZXk6InNv''@;'; put 'put ''cnRCeVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbih5KXtpZihBbCh5KSl7dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnVwZGF0ZUFsbENvbHVtbnNQcm9wZXJ0aWVzKHkpO3ZhciBDPXkuaW5pdGlhbENvbmZpZzsoQXJyYXkuaXNBcnJheShDKXx8QWwoQykpJiZ0aGlzLnNvcnQoQyl9ZWxzZSB0''@;'; put 'put ''aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6Im9uQWZ0ZXJHZXRDb2xIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9eEVlKEMpO2lmKCExIT09VEVlKHksQykmJm51bGwhPT1JKXt2YXIgaj10aGlzLmdldEZpcnN0Q2VsbFNldHRpbmdzKHkpW3RoaXMucGx1Z2luS2V5XTt0aGlzLnVw''@;'; put 'put ''ZGF0ZUhlYWRlckNsYXNzZXMoSSx0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIseSxqLmluZGljYXRvcixqLmhlYWRlckFjdGlvbil9fX0se2tleToidXBkYXRlSGVhZGVyQ2xhc3NlcyIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYodWwoeSxtb3QoKSksITEhPT10aGlzLmVuYWJsZWQpe2Zvcih2YXIg''@;'; put 'put ''Qz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KEM+MT9DLTE6MCksaj0xO2o8QztqKyspSVtqLTFdPWFyZ3VtZW50c1tqXTtQMCh5LGdvdC5hcHBseSh2b2lkIDAsSSkpfX19LHtrZXk6Im9uVXBkYXRlU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe2FNKFZ2KGgucHJvdG90eXBlKSwi''@;'; put 'put ''b25VcGRhdGVTZXR0aW5ncyIsdGhpcykuY2FsbCh0aGlzKSxudWxsIT09dGhpcy5jb2x1bW5NZXRhQ2FjaGUmJnRoaXMuY29sdW1uTWV0YUNhY2hlLmluaXQodGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TnVtYmVyT2ZJbmRleGVzKCkpLEVvKHlbdGhpcy5wbHVnaW5LZXldKSYmdGhp''@;'; put 'put ''cy5zb3J0QnlTZXR0aW5ncyh5W3RoaXMucGx1Z2luS2V5XSl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpeyEwPT09eSYmdGhpcy5ob3QudmlldyYmdGhpcy5sb2FkT3JTb3J0QnlTZXR0aW5ncygpfX0se2tleToid2FzQ2xpY2thYmxlSGVhZGVyQ2xpY2tlZCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhpcy5nZXRGaXJzdENlbGxTZXR0aW5ncyhDKVt0aGlzLnBsdWdpbktleV0uaGVhZGVyQWN0aW9uJiYiU1BBTiI9PT15LnRhcmdldC5ub2RlTmFtZX19LHtrZXk6Im9uQmVmb3JlT25DZWxsTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbih5LEMs''@;'; put 'put ''SSxqKXshMSE9PVM4ZShDLnJvdyxDLmNvbCx5KSYmdGhpcy53YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKHksQy5jb2wpJiZ0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5pc0N0cmxQcmVzc2VkKCkmJihqLmNvbHVtbj0hMCl9fSx7a2V5OiJvbkFmdGVyT25DZWxsTW91c2VEb3duIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbih5LEMpeyExIT09UzhlKEMucm93LEMuY29sLHkpJiZ0aGlzLndhc0NsaWNrYWJsZUhlYWRlckNsaWNrZWQoeSxDLmNvbCkmJih0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5pc0N0cmxQcmVzc2VkKCkmJih0aGlzLmhvdC5kZXNlbGVjdENlbGwoKSx0aGlzLmhv''@;'; put 'put ''dC5zZWxlY3RDb2x1bW5zKEMuY29sKSksdGhpcy5zb3J0KHRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyhDLmNvbCkpKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk7bnVsbD09PSh5PXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlcil8fHZvaWQgMD09PXl8fHkuZGVzdHJv''@;'; put 'put ''eSgpLGFNKFZ2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQ4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDUwfX1dKSxofShHcyk7ZnVuY3Rp''@;'; put 'put ''b24gcUVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19TCg0''@;'; put 'put ''MjE0MCk7dmFyIGVhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gJG90KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucGx1Z2luPWcsdGhp''@;'; put 'put ''cy5ob3Q9dGhpcy5wbHVnaW4uaG90LHRoaXMuZW5kcG9pbnRzPVtdLHRoaXMuc2V0dGluZ3M9aCx0aGlzLnNldHRpbmdzVHlwZT0iYXJyYXkiLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGwsdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W119cmV0dXJuIGZ1bmN0aW9uIHFvdChkLGcsaCl7ZyYmcUVl''@;'; put 'put ''KGQucHJvdG90eXBlLGcpLGgmJnFFZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXRFbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuImZ1bmN0aW9uIj09PXRoaXMuc2V0dGluZ3NUeXBlP3RoaXMuZmls''@;'; put 'put ''bE1pc3NpbmdFbmRwb2ludERhdGEodGhpcy5zZXR0aW5ncylbaF06dGhpcy5lbmRwb2ludHNbaF19fSx7a2V5OiJnZXRBbGxFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09PXRoaXMuc2V0dGluZ3NUeXBlP3RoaXMuZmlsbE1pc3NpbmdFbmRwb2ludERhdGEo''@;'; put 'put ''dGhpcy5zZXR0aW5ncyk6dGhpcy5lbmRwb2ludHN9fSx7a2V5OiJmaWxsTWlzc2luZ0VuZHBvaW50RGF0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucGFyc2VTZXR0aW5ncyhoLmNhbGwodGhpcykpfX0se2tleToicGFyc2VTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFy''@;'; put 'put ''IHY9dGhpcyx5PVtdLEM9aDtpZihDfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5zZXR0aW5ncylyZXR1cm4gQ3x8KEM9dGhpcy5zZXR0aW5ncyksR3IoQyxmdW5jdGlvbihJKXt2YXIgaj17fTt2LmFzc2lnblNldHRpbmcoSSxqLCJyYW5nZXMiLFtbMCx2LmhvdC5jb3VudFJvd3MoKS0xXV0p''@;'; put 'put ''LHYuYXNzaWduU2V0dGluZyhJLGosInJldmVyc2VkUm93Q29vcmRzIiwhMSksdi5hc3NpZ25TZXR0aW5nKEksaiwiZGVzdGluYXRpb25Sb3ciLG5ldyBFcnJvcigiXG4gICAgICAgIFlvdSBtdXN0IHByb3ZpZGUgYSBkZXN0aW5hdGlvbiByb3cgZm9yIHRoZSBDb2x1bW4gU3VtbWFyeSBwbHVn''@;'; put 'put ''aW4gaW4gb3JkZXIgdG8gd29yayBwcm9wZXJseSFcbiAgICAgICIpKSx2LmFzc2lnblNldHRpbmcoSSxqLCJkZXN0aW5hdGlvbkNvbHVtbiIsbmV3IEVycm9yKCJcbiAgICAgICAgWW91IG11c3QgcHJvdmlkZSBhIGRlc3RpbmF0aW9uIGNvbHVtbiBmb3IgdGhlIENvbHVtbiBTdW1tYXJ5IHBs''@;'; put 'put ''dWdpbiBpbiBvcmRlciB0byB3b3JrIHByb3Blcmx5IVxuICAgICAgIikpLHYuYXNzaWduU2V0dGluZyhJLGosInNvdXJjZUNvbHVtbiIsSS5kZXN0aW5hdGlvbkNvbHVtbiksdi5hc3NpZ25TZXR0aW5nKEksaiwidHlwZSIsInN1bSIpLHYuYXNzaWduU2V0dGluZyhJLGosImZvcmNlTnVtZXJp''@;'; put 'put ''YyIsITEpLHYuYXNzaWduU2V0dGluZyhJLGosInN1cHByZXNzRGF0YVR5cGVFcnJvcnMiLCEwKSx2LmFzc2lnblNldHRpbmcoSSxqLCJzdXBwcmVzc0RhdGFUeXBlRXJyb3JzIiwhMCksdi5hc3NpZ25TZXR0aW5nKEksaiwiY3VzdG9tRnVuY3Rpb24iLG51bGwpLHYuYXNzaWduU2V0dGluZyhJ''@;'; put 'put ''LGosInJlYWRPbmx5IiwhMCksdi5hc3NpZ25TZXR0aW5nKEksaiwicm91bmRGbG9hdCIsITEpLHkucHVzaChqKX0pLHk7dGhpcy5zZXR0aW5nc1R5cGU9ImZ1bmN0aW9uIn19LHtrZXk6ImFzc2lnblNldHRpbmciLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe2lmKCJyYW5nZXMiIT09eXx8dm9p''@;'; put 'put ''ZCAwIT09aFt5XSl7aWYoInJhbmdlcyIhPT15fHwwIT09aFt5XS5sZW5ndGgpaWYodm9pZCAwPT09aFt5XSl7aWYoQyBpbnN0YW5jZW9mIEVycm9yKXRocm93IEM7dlt5XT1DfWVsc2Ugdlt5XT0iZGVzdGluYXRpb25Sb3ciPT09eSYmdi5yZXZlcnNlZFJvd0Nvb3Jkcz90aGlzLmhvdC5jb3Vu''@;'; put 'put ''dFJvd3MoKS1oW3ldLTE6aFt5XX1lbHNlIHZbeV09Q319LHtrZXk6InJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7aWYoImZ1bmN0aW9uIj09PXRoaXMuc2V0dGluZ3NUeXBlKXt2YXIgQz1oLmluZGV4T2YoInJvdyIpPi0xPyJyb3ci''@;'; put 'put ''OiJjb2wiLEk9dGhpcy5nZXRBbGxFbmRwb2ludHMoKTtHcihJLGZ1bmN0aW9uKGopeyJyb3ciPT09QyYmai5kZXN0aW5hdGlvblJvdz49diYmKCJpbnNlcnRfcm93Ij09PWg/ai5hbHRlclJvd09mZnNldD15OiJyZW1vdmVfcm93Ij09PWgmJihqLmFsdGVyUm93T2Zmc2V0PS0xKnkpKSwiY29s''@;'; put 'put ''Ij09PUMmJmouZGVzdGluYXRpb25Db2x1bW4+PXYmJigiaW5zZXJ0X2NvbCI9PT1oP2ouYWx0ZXJDb2x1bW5PZmZzZXQ9eToicmVtb3ZlX2NvbCI9PT1oJiYoai5hbHRlckNvbHVtbk9mZnNldD0tMSp5KSl9KSx0aGlzLnJlc2V0QWxsRW5kcG9pbnRzKEksITEpfX19LHtrZXk6InJlc2V0U2V0''@;'; put 'put ''dXBBZnRlclN0cnVjdHVyZUFsdGVyYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSl7dmFyIGo9dGhpcyxjZT0hKGFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdKXx8YXJndW1lbnRzWzVdO2lmKCJmdW5jdGlvbiIhPT10aGlzLnNldHRpbmdzVHlwZSl7dmFy''@;'; put 'put ''IFJlPWguaW5kZXhPZigicm93Iik+LTE/InJvdyI6ImNvbCIsTmU9aC5pbmRleE9mKCJyZW1vdmUiKT4tMT8tMToxLEtlPXRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksaHQ9MD09PWguaW5kZXhPZigibW92ZV9yb3ciKSxCdD12O0dyKEtlLGZ1bmN0aW9uKCR0KXsicm93Ij09PVJlJiYkdC5kZXN0''@;'; put 'put ''aW5hdGlvblJvdz49QnQmJigkdC5hbHRlclJvd09mZnNldD1OZSp5KSwiY29sIj09PVJlJiYkdC5kZXN0aW5hdGlvbkNvbHVtbj49QnQmJigkdC5hbHRlckNvbHVtbk9mZnNldD1OZSp5KX0pLHRoaXMucmVzZXRBbGxFbmRwb2ludHMoS2UsIWh0KSxHcihLZSxodD9mdW5jdGlvbigkdCl7ai5l''@;'; put 'put ''eHRlbmRFbmRwb2ludFJhbmdlcygkdCxCdCxDWzBdLEMubGVuZ3RoKSxqLnJlY3JlYXRlUGh5c2ljYWxSYW5nZXMoJHQpLGouY2xlYXJPZmZzZXRJbmZvcm1hdGlvbigkdCl9OmZ1bmN0aW9uKCR0KXtqLnNoaWZ0RW5kcG9pbnRDb29yZGluYXRlcygkdCxCdCl9KSxjZSYmdGhpcy5yZWZyZXNo''@;'; put 'put ''QWxsRW5kcG9pbnRzKCl9ZWxzZXt2YXIgX2U9ZnVuY3Rpb24gJHQoKXtyZXR1cm4gai5ob3QucmVtb3ZlSG9vaygiYmVmb3JlVmlld1JlbmRlciIsJHQpLGoucmVmcmVzaEFsbEVuZHBvaW50cygpfTt0aGlzLmhvdC5hZGRIb29rT25jZSgiYmVmb3JlVmlld1JlbmRlciIsX2UpfX19LHtrZXk6''@;'; put 'put ''ImNsZWFyT2Zmc2V0SW5mb3JtYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgpe2guYWx0ZXJSb3dPZmZzZXQ9dm9pZCAwLGguYWx0ZXJDb2x1bW5PZmZzZXQ9dm9pZCAwfX0se2tleToiZXh0ZW5kRW5kcG9pbnRSYW5nZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe0dyKGgucmFuZ2VzLGZ1bmN0''@;'; put 'put ''aW9uKEkpe0lbMV0mJih2Pj1JWzBdJiZ2PD1JWzFdP3k+SVsxXT9JWzFdKz1DOnk8SVswXSYmKElbMF0tPUMpOnk+PUlbMF0mJnk8PUlbMV0mJihJWzFdLT1DLHY8PUlbMF0mJihJWzBdKz0xLElbMV0rPTEpKSl9KX19LHtrZXk6InJlY3JlYXRlUGh5c2ljYWxSYW5nZXMiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGgpe3ZhciB2PXRoaXMsQz1bXSxJPVtdO0dyKGgucmFuZ2VzLGZ1bmN0aW9uKGope3ZhciBjZT1bXTtpZihqWzFdKWZvcih2YXIgX2U9alswXTtfZTw9alsxXTtfZSsrKWNlLnB1c2godi5ob3QudG9QaHlzaWNhbFJvdyhfZSkpO2Vsc2UgY2UucHVzaCh2LmhvdC50b1BoeXNpY2FsUm93''@;'; put 'put ''KGpbMF0pKTtJLnB1c2goY2UpfSksR3IoSSxmdW5jdGlvbihqKXt2YXIgY2U9W107R3IoaixmdW5jdGlvbihfZSxSZSl7MD09PVJlP2NlLnB1c2goX2UpOmpbUmVdIT09altSZS0xXSsxJiYoY2UucHVzaChqW1JlLTFdKSxDLnB1c2goY2UpLChjZT1bXSkucHVzaChfZSkpLFJlPT09ai5sZW5n''@;'; put 'put ''dGgtMSYmKGNlLnB1c2goX2UpLEMucHVzaChjZSkpfSl9KSxoLnJhbmdlcz1DfX0se2tleToic2hpZnRFbmRwb2ludENvb3JkaW5hdGVzIix2YWx1ZTpmdW5jdGlvbihoLHYpe2guYWx0ZXJSb3dPZmZzZXQmJjAhPT1oLmFsdGVyUm93T2Zmc2V0PyhoLmRlc3RpbmF0aW9uUm93Kz1oLmFsdGVy''@;'; put 'put ''Um93T2Zmc2V0fHwwLEdyKGgucmFuZ2VzLGZ1bmN0aW9uKHkpe0dyKHksZnVuY3Rpb24oQyxJKXtDPj12JiYoeVtJXSs9aC5hbHRlclJvd09mZnNldHx8MCl9KX0pKTpoLmFsdGVyQ29sdW1uT2Zmc2V0JiYwIT09aC5hbHRlckNvbHVtbk9mZnNldCYmKGguZGVzdGluYXRpb25Db2x1bW4rPWgu''@;'; put 'put ''YWx0ZXJDb2x1bW5PZmZzZXR8fDAsaC5zb3VyY2VDb2x1bW4rPWguYWx0ZXJDb2x1bW5PZmZzZXR8fDApfX0se2tleToicmVzZXRBbGxFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3Vt''@;'; put 'put ''ZW50c1swXTp0aGlzLmdldEFsbEVuZHBvaW50cygpLHk9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxDPXYuc29tZShmdW5jdGlvbihJKXt2YXIgY2U9SS5hbHRlckNvbHVtbk9mZnNldHx8MDtyZXR1cm4gSS5kZXN0aW5hdGlvblJv''@;'; put 'put ''dysoSS5hbHRlclJvd09mZnNldHx8MCk+PWguaG90LmNvdW50Um93cygpfHxJLmRlc3RpbmF0aW9uQ29sdW1uK2NlPj1oLmhvdC5jb3VudENvbHMoKX0pO0N8fCh0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSxHcih2LGZ1bmN0aW9uKEkpe2gucmVzZXRFbmRwb2ludFZhbHVlKEkseSl9KSx0aGlz''@;'; put 'put ''LmhvdC5zZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10pfX0se2tleToicmVmcmVzaEFsbEVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMuY2VsbHNUb1NldENhY2hl''@;'; put 'put ''PVtdLEdyKHRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksZnVuY3Rpb24odil7aC5jdXJyZW50RW5kcG9pbnQ9dixoLnBsdWdpbi5jYWxjdWxhdGUodiksaC5zZXRFbmRwb2ludFZhbHVlKHYsImluaXQiKX0pLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGwsdGhpcy5ob3Quc2V0RGF0YUF0Q2VsbCh0''@;'; put 'put ''aGlzLmNlbGxzVG9TZXRDYWNoZSwiQ29sdW1uU3VtbWFyeS5yZXNldCIpLHRoaXMuY2VsbHNUb1NldENhY2hlPVtdfX0se2tleToicmVmcmVzaENoYW5nZWRFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1bXTt0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSxHcihoLGZ1''@;'; put 'put ''bmN0aW9uKEMsSSxqKXsiIi5jb25jYXQoQ1syXXx8IiIpIT09IiIuY29uY2F0KENbM10pJiZHcih2LmdldEFsbEVuZHBvaW50cygpLGZ1bmN0aW9uKGNlLF9lKXt2LmhvdC5wcm9wVG9Db2woaltJXVsxXSk9PT1jZS5zb3VyY2VDb2x1bW4mJi0xPT09eS5pbmRleE9mKF9lKSYmeS5wdXNoKF9l''@;'; put 'put ''KX0pfSksR3IoeSxmdW5jdGlvbihDKXt2LnJlZnJlc2hFbmRwb2ludCh2LmdldEVuZHBvaW50KEMpKX0pLHRoaXMuaG90LnNldERhdGFBdENlbGwodGhpcy5jZWxsc1RvU2V0Q2FjaGUsIkNvbHVtblN1bW1hcnkucmVzZXQiKSx0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXX19LHtrZXk6InJlZnJl''@;'; put 'put ''c2hFbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jdXJyZW50RW5kcG9pbnQ9aCx0aGlzLnBsdWdpbi5jYWxjdWxhdGUoaCksdGhpcy5zZXRFbmRwb2ludFZhbHVlKGgpLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGx9fSx7a2V5OiJyZXNldEVuZHBvaW50VmFsdWUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgpe3ZhciB2PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0seT1oLmFsdGVyUm93T2Zmc2V0fHwwLEM9aC5hbHRlckNvbHVtbk9mZnNldHx8MCxJPVt0aGlzLmhvdC50b1Zpc3VhbFJvdyhoLmRlc3RpbmF0aW9uUm93KSx0''@;'; put 'put ''aGlzLmhvdC50b1Zpc3VhbENvbHVtbihoLmRlc3RpbmF0aW9uQ29sdW1uKV0saj1JWzBdLGNlPUlbMV07aWYobnVsbCE9PWNlJiZudWxsIT09ail7dmFyIF9lPXRoaXMuaG90LmdldENlbGxNZXRhKGosY2UpO19lLnJlYWRPbmx5PSExLF9lLmNsYXNzTmFtZT0iIn10aGlzLmNlbGxzVG9TZXRD''@;'; put 'put ''YWNoZS5wdXNoKFt0aGlzLmhvdC50b1Zpc3VhbFJvdyhoLmRlc3RpbmF0aW9uUm93Kyh2P3k6MCkpLHRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGguZGVzdGluYXRpb25Db2x1bW4rKHY/QzowKSksIiJdKX19LHtrZXk6InNldEVuZHBvaW50VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFy''@;'; put 'put ''IHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxDPS0xKmguYWx0ZXJSb3dPZmZzZXR8fDAsST0tMSpoLmFsdGVyQ29sdW1uT2Zmc2V0fHwwLGo9dGhpcy5ob3QudG9WaXN1YWxSb3coaC5kZXN0aW5hdGlvblJvdyk7aWYoaC5kZXN0aW5h''@;'; put 'put ''dGlvblJvdz49dGhpcy5ob3QuY291bnRSb3dzKCl8fGguZGVzdGluYXRpb25Db2x1bW4+PXRoaXMuaG90LmNvdW50Q29scygpKXRoaXMudGhyb3dPdXRPZkJvdW5kc1dhcm5pbmcoKTtlbHNle3ZhciBjZT10aGlzLmhvdC50b1Zpc3VhbFJvdyhoLmRlc3RpbmF0aW9uUm93K0MpO2lmKG51bGwh''@;'; put 'put ''PT1jZSl7dmFyIF9lPXRoaXMuaG90LmdldENlbGxNZXRhKGNlLGguZGVzdGluYXRpb25Db2x1bW4rSSk7KCJpbml0Ij09PXZ8fF9lLnJlYWRPbmx5IT09aC5yZWFkT25seSkmJihfZS5yZWFkT25seT1oLnJlYWRPbmx5LF9lLmNsYXNzTmFtZT0iY29sdW1uU3VtbWFyeVJlc3VsdCIpfWgucm91''@;'; put 'put ''bmRGbG9hdCYmIWlzTmFOKGgucmVzdWx0KSYmKGgucmVzdWx0PWgucmVzdWx0LnRvRml4ZWQoaC5yb3VuZEZsb2F0KSkseT90aGlzLmhvdC5zZXREYXRhQXRDZWxsKGosaC5kZXN0aW5hdGlvbkNvbHVtbixoLnJlc3VsdCwiQ29sdW1uU3VtbWFyeS5zZXQiKTp0aGlzLmNlbGxzVG9TZXRDYWNo''@;'; put 'put ''ZS5wdXNoKFtqLGguZGVzdGluYXRpb25Db2x1bW4saC5yZXN1bHRdKSxoLmFsdGVyUm93T2Zmc2V0PXZvaWQgMCxoLmFsdGVyQ29sdW1uT2Zmc2V0PXZvaWQgMH19fSx7a2V5OiJ0aHJvd091dE9mQm91bmRzV2FybmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtjMSgiT25lIG9mIHRoZSBDb2x1bW4g''@;'; put 'put ''U3VtbWFyeSBwbHVnaW5zJyBkZXN0aW5hdGlvbiBwb2ludHMgeW91IHByb3ZpZGVkIGlzIGJleW9uZCB0aGUgdGFibGUgYm91bmRhcmllcyEiKX19XSksZH0oKTtjb25zdCB0YXQ9ZWF0O2Z1bmN0aW9uIEw4ZShkKXtyZXR1cm4oTDhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVv''@;'; put 'put ''ZiBnfSkoZCl9dmFyIGV4ZTtmdW5jdGlvbiB0eGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBSdGUoKXtyZXR1cm4gUnRlPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1vYXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LFJ0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gb2F0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs''@;'; put 'put ''KGQsZykmJm51bGwhPT0oZD1lUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBPOGUoZCxnKXtyZXR1cm4oTzhlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rp''@;'; put 'put ''b24gc2F0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09TDhlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbiB1YXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBlUihkKXtyZXR1cm4oZVI9T2JqZWN0''@;'; put 'put ''LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgUjhlPSJjb2x1bW5TdW1tYXJ5IixoYXQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGFhdChkLGcp''@;'; put 'put ''e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2''@;'; put 'put ''YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZPOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBsYXQoZCl7dmFyIGc9ZnVuY3Rpb24gY2F0KCl7aWYoInVuZGVmaW5lZCI9''@;'; put 'put ''PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9ZVIoZCk7aWYoZyl7dmFyIEM9ZVIodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHNhdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gcmF0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9''@;'; put 'put ''KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmVuZHBvaW50cz1udWxsLHl9cmV0dXJuIGZ1bmN0aW9uIGlhdChkLGcsaCl7ZyYmdHhlKGQucHJvdG90eXBlLGcpLGgmJnR4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5''@;'; put 'put ''OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1I4ZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnNldHRpbmdzPXRoaXMuaG90LmdldFNldHRpbmdz''@;'; put 'put ''KClbUjhlXSx0aGlzLmVuZHBvaW50cz1uZXcgdGF0KHRoaXMsdGhpcy5zZXR0aW5ncyksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckluaXQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNoYW5nZSIsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4geS5vbkFmdGVyQ2hhbmdlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ3JlYXRlUm93IixmdW5jdGlvbihDLEksail7cmV0dXJuIHkuZW5kcG9pbnRzLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfcm93IixDLEks''@;'; put 'put ''bnVsbCxqKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ3JlYXRlQ29sIixmdW5jdGlvbihDLEksail7cmV0dXJuIHkuZW5kcG9pbnRzLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfY29sIixDLEksbnVsbCxqKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3Zl''@;'; put 'put ''Um93IixmdW5jdGlvbigpe2Zvcih2YXIgQyxJPWFyZ3VtZW50cy5sZW5ndGgsaj1uZXcgQXJyYXkoSSksY2U9MDtjZTxJO2NlKyspaltjZV09YXJndW1lbnRzW2NlXTtyZXR1cm4oQz15LmVuZHBvaW50cykucmVzZXRTZXR1cEJlZm9yZVN0cnVjdHVyZUFsdGVyYXRpb24uYXBwbHkoQyxbInJl''@;'; put 'put ''bW92ZV9yb3ciXS5jb25jYXQoaikpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVDb2wiLGZ1bmN0aW9uKCl7Zm9yKHZhciBDLEk9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheShJKSxjZT0wO2NlPEk7Y2UrKylqW2NlXT1hcmd1bWVudHNbY2VdO3JldHVybihDPXkuZW5kcG9pbnRz''@;'; put 'put ''KS5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbi5hcHBseShDLFsicmVtb3ZlX2NvbCJdLmNvbmNhdChqKSl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbihDLEksail7cmV0dXJuIHkuZW5kcG9pbnRzLnJlc2V0U2V0dXBBZnRlclN0cnVjdHVyZUFs''@;'; put 'put ''dGVyYXRpb24oImluc2VydF9yb3ciLEMsSSxudWxsLGopfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsZnVuY3Rpb24oQyxJLGope3JldHVybiB5LmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfY29sIixDLEksbnVsbCxqKX0pLHRo''@;'; put 'put ''aXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBDLEk9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheShJKSxjZT0wO2NlPEk7Y2UrKylqW2NlXT1hcmd1bWVudHNbY2VdO3JldHVybihDPXkuZW5kcG9pbnRzKS5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVB''@;'; put 'put ''bHRlcmF0aW9uLmFwcGx5KEMsWyJyZW1vdmVfcm93Il0uY29uY2F0KGopKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVDb2wiLGZ1bmN0aW9uKCl7Zm9yKHZhciBDLEk9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheShJKSxjZT0wO2NlPEk7Y2UrKylqW2NlXT1hcmd1bWVudHNbY2Vd''@;'; put 'put ''O3JldHVybihDPXkuZW5kcG9pbnRzKS5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uLmFwcGx5KEMsWyJyZW1vdmVfY29sIl0uY29uY2F0KGopKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSb3dNb3ZlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJSb3dNb3ZlLmFwcGx5KHks''@;'; put 'put ''YXJndW1lbnRzKX0pLFJ0ZShlUihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZW5kcG9pbnRzPW51bGwsdGhpcy5zZXR0aW5ncz1udWxsLHRoaXMuY3VycmVudEVuZHBvaW50''@;'; put 'put ''PW51bGx9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3N3aXRjaCh5LnR5cGUudG9Mb3dlckNhc2UoKSl7Y2FzZSJzdW0iOnkucmVzdWx0PXRoaXMuY2FsY3VsYXRlU3VtKHkpO2JyZWFrO2Nhc2UibWluIjpjYXNlIm1heCI6eS5yZXN1bHQ9dGhpcy5jYWxjdWxhdGVNaW5N''@;'; put 'put ''YXgoeSx5LnR5cGUpO2JyZWFrO2Nhc2UiY291bnQiOnkucmVzdWx0PXRoaXMuY291bnRFbnRyaWVzKHkpO2JyZWFrO2Nhc2UiYXZlcmFnZSI6eS5yZXN1bHQ9dGhpcy5jYWxjdWxhdGVBdmVyYWdlKHkpO2JyZWFrO2Nhc2UiY3VzdG9tIjp5LnJlc3VsdD15LmN1c3RvbUZ1bmN0aW9uLmNhbGwo''@;'; put 'put ''dGhpcyx5KX19fSx7a2V5OiJjYWxjdWxhdGVTdW0iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST0wO3JldHVybiBabCh5LnJhbmdlcyxmdW5jdGlvbihqKXtJKz1DLmdldFBhcnRpYWxTdW0oaix5LnNvdXJjZUNvbHVtbil9KSxJfX0se2tleToiZ2V0UGFydGlhbFN1bSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSxDKXt2YXIgST0wLGo9eVsxXXx8eVswXSxjZT1udWxsLF9lPTA7ZG97Y2U9dGhpcy5nZXRDZWxsVmFsdWUoaixDKXx8MDt2YXIgUmU9KCIiLmNvbmNhdChjZSkuc3BsaXQoIi4iKVsxXXx8W10pLmxlbmd0aHx8MTtSZT5fZSYmKF9lPVJlKSxJKz1jZXx8MCxqLT0xfXdoaWxl''@;'; put 'put ''KGo+PXlbMF0pO3JldHVybiBNYXRoLnJvdW5kKEkqTWF0aC5wb3coMTAsX2UpKS9NYXRoLnBvdygxMCxfZSl9fSx7a2V5OiJjYWxjdWxhdGVNaW5NYXgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcyxqPW51bGw7cmV0dXJuIFpsKHkucmFuZ2VzLGZ1bmN0aW9uKGNlKXt2YXIgX2U9''@;'; put 'put ''SS5nZXRQYXJ0aWFsTWluTWF4KGNlLHkuc291cmNlQ29sdW1uLEMpO2lmKG51bGw9PT1qJiZudWxsIT09X2UmJihqPV9lKSxudWxsIT09X2Upc3dpdGNoKEMpe2Nhc2UibWluIjpqPU1hdGgubWluKGosX2UpO2JyZWFrO2Nhc2UibWF4IjpqPU1hdGgubWF4KGosX2UpfX0pLG51bGw9PT1qPyJO''@;'; put 'put ''b3QgZW5vdWdoIGRhdGEiOmp9fSx7a2V5OiJnZXRQYXJ0aWFsTWluTWF4Iix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIF9lLGo9bnVsbCxjZT15WzFdfHx5WzBdO2Rve2lmKF9lPXRoaXMuZ2V0Q2VsbFZhbHVlKGNlLEMpfHxudWxsLG51bGw9PT1qKWo9X2U7ZWxzZSBpZihudWxsIT09X2Up''@;'; put 'put ''c3dpdGNoKEkpe2Nhc2UibWluIjpqPU1hdGgubWluKGosX2UpO2JyZWFrO2Nhc2UibWF4IjpqPU1hdGgubWF4KGosX2UpfWNlLT0xfXdoaWxlKGNlPj15WzBdKTtyZXR1cm4gan19LHtrZXk6ImNvdW50RW1wdHkiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIGo9MCxjZT15WzFdfHx5WzBdO2Rv''@;'; put 'put ''e3RoaXMuZ2V0Q2VsbFZhbHVlKGNlLEMpfHwoais9MSksY2UtPTF9d2hpbGUoY2U+PXlbMF0pO3JldHVybiBqfX0se2tleToiY291bnRFbnRyaWVzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9MDtyZXR1cm4gWmwoeS5yYW5nZXMsZnVuY3Rpb24oY2Upe3ZhciBfZT12b2lkIDA9''@;'; put 'put ''PT1jZVsxXT8xOmNlWzFdLWNlWzBdKzEsUmU9Qy5jb3VudEVtcHR5KGNlLHkuc291cmNlQ29sdW1uKTtJKz1fZSxJLT1SZX0pLEl9fSx7a2V5OiJjYWxjdWxhdGVBdmVyYWdlIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5jYWxjdWxhdGVTdW0oeSkvdGhpcy5jb3VudEVudHJpZXMo''@;'; put 'put ''eSl9fSx7a2V5OiJnZXRDZWxsVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5ob3QudG9WaXN1YWxSb3coeSksaj10aGlzLmhvdC50b1Zpc3VhbENvbHVtbihDKSxjZT10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKHksQyksX2U9IiI7aWYobnVsbCE9PUkmJm51bGwh''@;'; put 'put ''PT1qJiYoX2U9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoSSxqKS5jbGFzc05hbWV8fCIiKSxfZS5pbmRleE9mKCJjb2x1bW5TdW1tYXJ5UmVzdWx0Iik+LTEpcmV0dXJuIG51bGw7aWYodGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LmZvcmNlTnVtZXJpYyYmKCJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''Y2UmJihjZT1jZS5yZXBsYWNlKC8sLywiLiIpKSxjZT1wYXJzZUZsb2F0KGNlKSksaXNOYU4oY2UpJiYhdGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LnN1cHByZXNzRGF0YVR5cGVFcnJvcnMpdGhyb3cgbmV3IEVycm9yKEQyKGV4ZXx8KGV4ZT1mdW5jdGlvbiBuYXQoZCxnKXtyZXR1''@;'; put 'put ''cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIkNvbHVtblN1bW1hcnkgcGx1Z2luOiBjZWxsIGF0ICgiLCIsICIsIikgaXMgbm90IGluIGEgXG4gICAgICAgICAgbnVt''@;'; put 'put ''ZXJpYyBmb3JtYXQuIENhbm5vdCBkbyB0aGUgY2FsY3VsYXRpb24uIl0sWyJDb2x1bW5TdW1tYXJ5IHBsdWdpbjogY2VsbCBhdCAoIiwiLCAiLCIpIGlzIG5vdCBpbiBhXFx4MjBcbiAgICAgICAgICBudW1lcmljIGZvcm1hdC4gQ2Fubm90IGRvIHRoZSBjYWxjdWxhdGlvbi4iXSkpLHksQykp''@;'; put 'put ''O3JldHVybiBjZX19LHtrZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZW5kcG9pbnRzLmVuZHBvaW50cz10aGlzLmVuZHBvaW50cy5wYXJzZVNldHRpbmdzKCksdGhpcy5lbmRwb2ludHMucmVmcmVzaEFsbEVuZHBvaW50cyghMCl9fSx7a2V5OiJvbkFmdGVyQ2hhbmdl''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3kmJiJDb2x1bW5TdW1tYXJ5LnJlc2V0IiE9PUMmJiJDb2x1bW5TdW1tYXJ5LnNldCIhPT1DJiYibG9hZERhdGEiIT09QyYmdGhpcy5lbmRwb2ludHMucmVmcmVzaENoYW5nZWRFbmRwb2ludHMoeSl9fSx7a2V5OiJvbkFmdGVyUm93TW92ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSxDKXt0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbigibW92ZV9yb3ciLHlbMF0seS5sZW5ndGgseSx0aGlzLnBsdWdpbk5hbWUpLHRoaXMuZW5kcG9pbnRzLnJlc2V0U2V0dXBBZnRlclN0cnVjdHVyZUFsdGVyYXRpb24oIm1vdmVf''@;'; put 'put ''cm93IixDLHkubGVuZ3RoLHksdGhpcy5wbHVnaW5OYW1lKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFI4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDIyMH19XSksaH0oR3MpO2Z1bmN0aW9uIG54ZShkLGcpe2Zv''@;'; put 'put ''cih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBnYXQ9ZnVuY3Rpb24o''@;'; put 'put ''KXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGRhdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnJvb3REb2N1bWVudD1nLHRoaXMuaXNSdGw9aCx0aGlzLmNv''@;'; put 'put ''bnRhaW5lcj1udWxsLHRoaXMuZWRpdG9yPXRoaXMuY3JlYXRlRWRpdG9yKCksdGhpcy5lZGl0b3JTdHlsZT10aGlzLmVkaXRvci5zdHlsZSx0aGlzLmhpZGRlbj0hMCx0aGlzLmhpZGUoKX1yZXR1cm4gZnVuY3Rpb24gcGF0KGQsZyxoKXtnJiZueGUoZC5wcm90b3R5cGUsZyksaCYmbnhlKGQs''@;'; put 'put ''aCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuZWRpdG9yU3R5bGUubGVmdD0iIi5jb25jYXQoaCwicHgiKSx0aGlzLmVkaXRvclN0eWxlLnRvcD0iIi5jb25j''@;'; put 'put ''YXQodiwicHgiKX19LHtrZXk6InNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYoaCYmdil7dmFyIHk9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKTt5LnN0eWxlLndpZHRoPSIiLmNvbmNhdChoLCJweCIpLHkuc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdCh2LCJweCIpfX19LHtrZXk6ImdldFNp''@;'; put 'put ''emUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOncyKHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkpLGhlaWdodDpCMSh0aGlzLmdldElucHV0RWxlbWVudCgpKX19fSx7a2V5OiJyZXNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtoLnN0''@;'; put 'put ''eWxlLndpZHRoPSIiLGguc3R5bGUuaGVpZ2h0PSIifX0se2tleToic2V0UmVhZE9ubHlTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5yZWFkT25seT1ofX0se2tleToic2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVkaXRvclN0eWxlLmRpc3BsYXk9''@;'; put 'put ''ImJsb2NrIix0aGlzLmhpZGRlbj0hMX19LHtrZXk6ImhpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oaWRkZW58fCh0aGlzLmVkaXRvclN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLmhpZGRlbj0hMH19LHtrZXk6ImlzVmlzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iYmxvY2si''@;'; put 'put ''PT09dGhpcy5lZGl0b3JTdHlsZS5kaXNwbGF5fX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiLHY9aHx8IiI7dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS52YWx1ZT12''@;'; put 'put ''fX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkudmFsdWV9fSx7a2V5OiJpc0ZvY3VzZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLmdldElucHV0RWxl''@;'; put 'put ''bWVudCgpfX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5mb2N1cygpfX0se2tleToiY3JlYXRlRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHY9dGhpcy5yb290''@;'; put 'put ''RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gaC5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmNvbnRhaW5lcj10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5pc1J0bD8i''@;'; put 'put ''cnRsIjoibHRyIiksUDAodGhpcy5jb250YWluZXIsZC5DTEFTU19FRElUT1JfQ09OVEFJTkVSKSx0aGlzLnJvb3REb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKSxQMChoLGQuQ0xBU1NfRURJVE9SKSxQMCh2LGQuQ0xBU1NfSU5QVVQpLGguYXBwZW5kQ2hpbGQodiks''@;'; put 'put ''dGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoaCksaH19LHtrZXk6ImdldElucHV0RWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0b3IucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KGQuQ0xBU1NfSU5QVVQpKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGg9dGhpcy5jb250YWluZXI/dGhpcy5jb250YWluZXIucGFyZW50Tm9kZTpudWxsO3RoaXMuZWRpdG9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lZGl0b3IpLHRoaXMuZWRpdG9yPW51bGwsdGhpcy5lZGl0b3JTdHlsZT1udWxsLGgmJmgucmVtb3ZlQ2hpbGQodGhpcy5j''@;'; put 'put ''b250YWluZXIpfX1dLFt7a2V5OiJDTEFTU19FRElUT1JfQ09OVEFJTkVSIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iaHRDb21tZW50c0NvbnRhaW5lciJ9fSx7a2V5OiJDTEFTU19FRElUT1IiLGdldDpmdW5jdGlvbigpe3JldHVybiJodENvbW1lbnRzIn19LHtrZXk6IkNMQVNTX0lOUFVUIixn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iaHRDb21tZW50VGV4dEFyZWEifX0se2tleToiQ0xBU1NfQ0VMTCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImh0Q29tbWVudENlbGwifX1dKSxkfSgpO2NvbnN0IG1hdD1nYXQ7dmFyIHpsPSItLS0tLS0tLS0iO2Z1bmN0aW9uIEJ0ZShkKXtyZXR1cm4gWGEo''@;'; put 'put ''ZCwiaHRTZXBhcmF0b3IiKX1mdW5jdGlvbiBQdGUoZCl7cmV0dXJuIFhhKGQsImh0RGlzYWJsZWQiKX1mdW5jdGlvbiBGdGUoZCl7cmV0dXJuIFhhKGQsImh0U2VsZWN0aW9uRGlzYWJsZWQiKX1mdW5jdGlvbiBsTShkKXt2YXIgZz1kLmdldFNlbGVjdGVkKCk7cmV0dXJuIWd8fGdbMF08MD9u''@;'; put 'put ''dWxsOmd9ZnVuY3Rpb24gc00oZCxnKXt2YXIgaD17fTtyZXR1cm4gR3IoZCxmdW5jdGlvbih2KXt2LmZvckFsbChmdW5jdGlvbih5LEMpe3k+PTAmJkM+PTAmJihoW3ldfHwoaFt5XT1bXSksaFt5XVtDXT1nKHksQykpfSl9KSxofWZ1bmN0aW9uIFV3KGQsZyxoLHYseSl7R3IoZCxmdW5jdGlv''@;'; put 'put ''bihDKXtDLmZvckFsbChmdW5jdGlvbihJLGope0k+PTAmJmo+PTAmJmZ1bmN0aW9uIF9hdChkLGcsaCx2LHksQyl7dmFyIEk9eShkLGcpLGo9djtJLmNsYXNzTmFtZSYmKGo9InZlcnRpY2FsIj09PWg/ZnVuY3Rpb24gd2F0KGQsZyl7aWYoLTEhPT1kLmluZGV4T2YoZykpcmV0dXJuIGQ7dmFy''@;'; put 'put ''IGg9ZC5yZXBsYWNlKCJodFRvcCIsIiIpLnJlcGxhY2UoImh0TWlkZGxlIiwiIikucmVwbGFjZSgiaHRCb3R0b20iLCIiKS5yZXBsYWNlKCIgICIsIiIpO3JldHVybiIiLmNvbmNhdChoLCIgIikuY29uY2F0KGcpfShJLmNsYXNzTmFtZSx2KTpmdW5jdGlvbiBiYXQoZCxnKXtpZigtMSE9PWQu''@;'; put 'put ''aW5kZXhPZihnKSlyZXR1cm4gZDt2YXIgaD1kLnJlcGxhY2UoImh0TGVmdCIsIiIpLnJlcGxhY2UoImh0Q2VudGVyIiwiIikucmVwbGFjZSgiaHRSaWdodCIsIiIpLnJlcGxhY2UoImh0SnVzdGlmeSIsIiIpLnJlcGxhY2UoIiAgIiwiIik7cmV0dXJuIiIuY29uY2F0KGgsIiAiKS5jb25jYXQo''@;'; put 'put ''Zyl9KEkuY2xhc3NOYW1lLHYpKSxDKGQsZywiY2xhc3NOYW1lIixqKX0oSSxqLGcsaCx2LHkpfSl9KX1mdW5jdGlvbiBSZyhkLGcpe3ZhciBoPSExO3JldHVybiBBcnJheS5pc0FycmF5KGQpJiZHcihkLGZ1bmN0aW9uKHYpe3JldHVybiB2LmZvckFsbChmdW5jdGlvbih5LEMpe2lmKHk+PTAm''@;'; put 'put ''JkM+PTAmJmcoeSxDKSlyZXR1cm4gaD0hMCwhMX0pLGh9KSxofWZ1bmN0aW9uIGp2KGQpe3JldHVybic8c3BhbiBjbGFzcz0ic2VsZWN0ZWQiPicuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoMTAwMDMpLCI8L3NwYW4+IikuY29uY2F0KGQpfWZ1bmN0aW9uIHJ4ZShkLGcpe2Zvcih2YXIg''@;'; put 'put ''aD1kLnNsaWNlKDApOzA8aC5sZW5ndGgmJmhbMF0ubmFtZT09PWc7KWguc2hpZnQoKTtyZXR1cm4gaH1mdW5jdGlvbiBrYXQoZCxnKXt2YXIgaD1kLnNsaWNlKDApO3JldHVybiBoLnJldmVyc2UoKSwoaD1yeGUoaCxnKSkucmV2ZXJzZSgpLGh9ZnVuY3Rpb24gU2F0KGQpe3ZhciBnPVtdO3Jl''@;'; put 'put ''dHVybiBHcihkLGZ1bmN0aW9uKGgsdil7dj4wP2dbZy5sZW5ndGgtMV0ubmFtZSE9PWgubmFtZSYmZy5wdXNoKGgpOmcucHVzaChoKX0pLGd9ZnVuY3Rpb24gaXhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8''@;'; put 'put ''ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIG94ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIEVhdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLndhc0xhc3RBY3Rpb25TaG93PSEwLHRoaXMuc2hvd0RlYm91bmNlZD1udWxsLHRoaXMuaGlkaW5nVGltZXI9bnVsbCx0aGlzLnVwZGF0ZURlbGF5KGcpfXJldHVybiBmdW5jdGlv''@;'; put 'put ''biB4YXQoZCxnLGgpe2cmJml4ZShkLnByb3RvdHlwZSxnKSxoJiZpeGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMud2FzTGFzdEFjdGlvblNob3c9''@;'; put 'put ''ITEsdGhpcy5oaWRpbmdUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ITE9PT1oLndhc0xhc3RBY3Rpb25TaG93JiZoLnJ1bkxvY2FsSG9va3MoImhpZGUiKX0sMjUwKX19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMud2FzTGFzdEFjdGlvblNob3c9ITAsdGhpcy5zaG93''@;'; put 'put ''RGVib3VuY2VkKGgpfX0se2tleToiY2FuY2VsSGlkaW5nIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMud2FzTGFzdEFjdGlvblNob3c9ITAsY2xlYXJUaW1lb3V0KHRoaXMuaGlkaW5nVGltZXIpLHRoaXMuaGlkaW5nVGltZXI9bnVsbH19LHtrZXk6InVwZGF0ZURlbGF5Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBoPXRoaXMsdj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MjUwO3RoaXMuc2hvd0RlYm91bmNlZD1EM2UoZnVuY3Rpb24oeSl7aC53YXNMYXN0QWN0aW9uU2hvdyYmaC5ydW5Mb2NhbEhvb2tzKCJzaG93Iix5LmZyb20ucm93''@;'; put 'put ''LHkuZnJvbS5jb2wpfSx2KX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhckxvY2FsSG9va3MoKX19XSksZH0oKTtJMihveGUscmQpO2NvbnN0IERhdD1veGU7ZnVuY3Rpb24gQjhlKGQpe3JldHVybihCOGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIGd9KShkKX1mdW5jdGlvbiBQOGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIGF4ZShkLGcpe2Zvcih2YXIgaD0wO2g8''@;'; put 'put ''Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHVNKCl7cmV0dXJuIHVNPSJ1bmRl''@;'; put 'put ''ZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1SYXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHVNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBSYXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVp2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEY4ZShkLGcp''@;'; put 'put ''e3JldHVybihGOGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBGYXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1COGUoZyl8fCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGx4ZShkKX1mdW5jdGlvbiBseGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcg''@;'; put 'put ''UmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFp2KGQpe3JldHVybihadj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBIOGU9ImNvbW1lbnRzIixIdGU9bmV3IFdlYWtNYXAsQmc9ImNvbW1lbnQiLHRSPSJ2YWx1ZSIsTnRlPSJyZWFkT25seSIsVmF0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBCYXQoZCxn''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7''@;'; put 'put ''dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRjhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gUGF0KGQpe3ZhciBnPWZ1bmN0aW9uIEhhdCgpe2lmKCJ1bmRlZmluZWQi''@;'; put 'put ''PT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVj''@;'; put 'put ''dChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVp2KGQpO2lmKGcpe3ZhciBDPVp2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBw''@;'; put 'put ''bHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBGYXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIExhdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIp''@;'; put 'put ''fSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5lZGl0b3I9bnVsbCx5LmRpc3BsYXlTd2l0Y2g9bnVsbCx5LmV2ZW50TWFuYWdlcj1udWxsLHkucmFuZ2U9e30seS5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaD0hMSxIdGUuc2V0KGx4ZSh5KSx7dGVtcEVkaXRvckRpbWVuc2lvbnM6e30sY2Vs''@;'; put 'put ''bEJlbG93Q3Vyc29yOm51bGx9KSx5fXJldHVybiBmdW5jdGlvbiBPYXQoZCxnLGgpe2cmJmF4ZShkLnByb3RvdHlwZSxnKSxoJiZheGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtIOGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5lZGl0b3J8fCh0aGlzLmVkaXRvcj1uZXcgbWF0KHRoaXMuaG90LnJvb3REb2N1bWVudCx0''@;'; put 'put ''aGlzLmhvdC5pc1J0bCgpKSksdGhpcy5ldmVudE1hbmFnZXJ8fCh0aGlzLmV2ZW50TWFuYWdlcj1uZXcgUDEodGhpcykpLHRoaXMuZGlzcGxheVN3aXRjaHx8KHRoaXMuZGlzcGxheVN3aXRjaD1uZXcgRGF0KHRoaXMuZ2V0RGlzcGxheURlbGF5U2V0dGluZygpKSksdGhpcy5hZGRIb29rKCJh''@;'; put 'put ''ZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKEMpe3JldHVybiB5LmFkZFRvQ29udGV4dE1lbnUoQyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVuZGVyZXIiLGZ1bmN0aW9uKEMsSSxqLGNlLF9lLFJlKXtyZXR1cm4geS5vbkFmdGVyUmVuZGVyZXIoQyxSZSl9KSx0aGlz''@;'; put 'put ''LmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IixmdW5jdGlvbigpe3JldHVybiB5LmhpZGUoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IixmdW5jdGlvbigpe3JldHVybiB5LmhpZGUoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJCZWdpbkVkaXRpbmciLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHkuaGlkZSgpfSksdGhpcy5kaXNwbGF5U3dpdGNoLmFkZExvY2FsSG9vaygiaGlkZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5oaWRlKCl9KSx0aGlzLmRpc3BsYXlTd2l0Y2guYWRkTG9jYWxIb29rKCJzaG93IixmdW5jdGlvbihDLEkpe3JldHVybiB5LnNob3dBdENl''@;'; put 'put ''bGwoQyxJKX0pLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSx1TShadihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4o''@;'; put 'put ''KSx1TShadihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmRpc3BsYXlTd2l0Y2gudXBkYXRlRGVsYXkodGhpcy5nZXREaXNwbGF5RGVsYXlTZXR0aW5nKCkpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt1TShadihoLnBy''@;'; put 'put ''b3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJyZWdpc3Rlckxpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5ob3Qucm9vdERvY3VtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vv''@;'; put 'put ''dmVyIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbk1vdXNlT3ZlcihJKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vkb3duIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbk1vdXNlRG93bihJKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo''@;'; put 'put ''QywibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vdXNlVXAoKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5lZGl0b3IuZ2V0SW5wdXRFbGVtZW50KCksImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25FZGl0b3JCbHVyKCl9KSx0aGlzLmV2ZW50''@;'; put 'put ''TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuZWRpdG9yLmdldElucHV0RWxlbWVudCgpLCJtb3VzZWRvd24iLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uRWRpdG9yTW91c2VEb3duKEkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmVkaXRvci5nZXRJbnB1''@;'; put 'put ''dEVsZW1lbnQoKSwibW91c2V1cCIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25FZGl0b3JNb3VzZVVwKEkpfSl9fSx7a2V5OiJzZXRSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5yYW5nZT15fX0se2tleToiY2xlYXJSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJhbmdlPXt9fX0s''@;'; put 'put ''e2tleToidGFyZ2V0SXNDZWxsV2l0aENvbW1lbnQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPUR2KHkudGFyZ2V0LCJURCIsIlRCT0RZIik7cmV0dXJuISEoQyYmWGEoQywiaHRDb21tZW50Q2VsbCIpJiZEdihDLFt0aGlzLmhvdC5yb290RWxlbWVudF0pKX19LHtrZXk6InRhcmdldElzQ29t''@;'; put 'put ''bWVudFRleHRBcmVhIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5lZGl0b3IuZ2V0SW5wdXRFbGVtZW50KCk9PT15LnRhcmdldH19LHtrZXk6InNldENvbW1lbnQiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKCF0aGlzLnJhbmdlLmZyb20pdGhyb3cgbmV3IEVycm9yKCdCZWZvcmUgdXNp''@;'; put 'put ''bmcgdGhpcyBtZXRob2QsIGZpcnN0IHNldCBjZWxsIHJhbmdlIChob3QuZ2V0UGx1Z2luKCJjb21tZW50Iikuc2V0UmFuZ2UoKSknKTt2YXIgQz10aGlzLmVkaXRvci5nZXRWYWx1ZSgpLEk9IiI7bnVsbCE9eT9JPXk6bnVsbCE9QyYmKEk9QyksdGhpcy51cGRhdGVDb21tZW50TWV0YSh0aGlz''@;'; put 'put ''LnJhbmdlLmZyb20ucm93LHRoaXMucmFuZ2UuZnJvbS5jb2wsUDhlKHt9LHRSLEkpKSx0aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6InNldENvbW1lbnRBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt0aGlzLnNldFJhbmdlKHtmcm9tOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHks''@;'; put 'put ''Qyl9KSx0aGlzLnNldENvbW1lbnQoSSl9fSx7a2V5OiJyZW1vdmVDb21tZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07aWYoIXRoaXMucmFuZ2UuZnJvbSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''J0JlZm9yZSB1c2luZyB0aGlzIG1ldGhvZCwgZmlyc3Qgc2V0IGNlbGwgcmFuZ2UgKGhvdC5nZXRQbHVnaW4oImNvbW1lbnQiKS5zZXRSYW5nZSgpKScpO3RoaXMuaG90LnNldENlbGxNZXRhKHRoaXMucmFuZ2UuZnJvbS5yb3csdGhpcy5yYW5nZS5mcm9tLmNvbCxCZykseSYmdGhpcy5ob3Qu''@;'; put 'put ''cmVuZGVyKCksdGhpcy5oaWRlKCl9fSx7a2V5OiJyZW1vdmVDb21tZW50QXRDZWxsIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07dGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5f''@;'; put 'put ''Y3JlYXRlQ2VsbENvb3Jkcyh5LEMpfSksdGhpcy5yZW1vdmVDb21tZW50KEkpfX0se2tleToiZ2V0Q29tbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YSh0aGlzLnJhbmdlLmZyb20ucm93LHRoaXMucmFuZ2UuZnJvbS5jb2wsdFIpfX0se2tleToiZ2V0''@;'; put 'put ''Q29tbWVudEF0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YSh5LEMsdFIpfX0se2tleToic2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5yYW5nZS5mcm9tKXRocm93IG5ldyBFcnJvcignQmVmb3JlIHVzaW5nIHRoaXMgbWV0aG9kLCBm''@;'; put 'put ''aXJzdCBzZXQgY2VsbCByYW5nZSAoaG90LmdldFBsdWdpbigiY29tbWVudCIpLnNldFJhbmdlKCkpJyk7dmFyIHk9dGhpcy5yYW5nZS5mcm9tLEM9eS5yb3csST15LmNvbDtpZihDPDB8fEM+dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCktMXx8STwwfHxJPnRoaXMuaG90LmNvdW50U291cmNl''@;'; put 'put ''Q29scygpLTEpcmV0dXJuITE7dmFyIGo9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEodGhpcy5yYW5nZS5mcm9tLnJvdyx0aGlzLnJhbmdlLmZyb20uY29sKTtyZXR1cm4gdGhpcy5lZGl0b3Iuc2V0VmFsdWUoaltCZ10/altCZ11bdFJdOiIiKSx0aGlzLmVkaXRvci5zaG93KCksdGhpcy5yZWZyZXNo''@;'; put 'put ''RWRpdG9yKCEwKSwhMH19LHtrZXk6InNob3dBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHRoaXMuc2V0UmFuZ2Uoe2Zyb206dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoeSxDKX0pLHRoaXMuc2hvdygpfX0se2tleToiaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVk''@;'; put 'put ''aXRvci5oaWRlKCl9fSx7a2V5OiJyZWZyZXNoRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LEMsST1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKEl8fHRoaXMucmFuZ2UuZnJvbSYmdGhpcy5lZGl0b3IuaXNWaXNpYmxlKCkp''@;'; put 'put ''e3ZhciBqPXRoaXMuaG90LGNlPWoucm93SW5kZXhNYXBwZXIsX2U9ai5jb2x1bW5JbmRleE1hcHBlcixSZT10aGlzLnJhbmdlLmZyb20sTmU9UmUucm93LEtlPVJlLmNvbCxodD1jZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KE5lKSxCdD1fZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3Vh''@;'; put 'put ''bEluZGV4KEtlKSwkdD1udWxsPT09aHQ7bnVsbD09PWh0JiYoaHQ9Y2UuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChjZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoTmUsLTEpKSksbnVsbD09PUJ0JiYoQnQ9X2UuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChfZS5nZXROZWFy''@;'; put 'put ''ZXN0Tm90SGlkZGVuSW5kZXgoS2UsLTEpKSk7dmFyIGhuPW51bGw9PT1odCxEbj1udWxsPT09QnQ7aHQ9bnVsbCE9PSh5PWh0KSYmdm9pZCAwIT09eT95OjAsQnQ9bnVsbCE9PShDPUJ0KSYmdm9pZCAwIT09Qz9DOjA7dmFyIGlyPXRoaXMuaG90LHByPWlyLnJvb3RXaW5kb3csRXI9aXIudmll''@;'; put 'put ''dy5fd3QsQXI9RXIud3RUYWJsZSxZcj1Bci5nZXRDZWxsKHtyb3c6aHQsY29sOkJ0fSksX2k9dGhpcy5nZXRDb21tZW50TWV0YShOZSxLZSwic3R5bGUiKTtfaT90aGlzLmVkaXRvci5zZXRTaXplKF9pLndpZHRoLF9pLmhlaWdodCk6dGhpcy5lZGl0b3IucmVzZXRTaXplKCk7dmFyIEtpPURu''@;'; put 'put ''PzA6QXIuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoQnQpLGtvPSR0JiYhaG4/QjEoWXIpOjAsT289WXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYmE9T28ubGVmdCxZYT1Pby50b3Asb2E9T28ud2lkdGgscWE9T28uaGVpZ2h0LE9zPXRoaXMuZWRpdG9yLmdldFNpemUoKSxIMD1Pcy53aWR0''@;'; put 'put ''aCxvbz1Pcy5oZWlnaHQsaG89dGhpcy5ob3Qucm9vdFdpbmRvdyxUYT1oby5pbm5lcldpZHRoLEpsPWhvLmlubmVySGVpZ2h0LEhuPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsem49YmErcHIuc2Nyb2xsWCtLaSxfcj1ZYStwci5zY3JvbGxZK2tvO3RoaXMuaG90Lmlz''@;'; put 'put ''UnRsKCkmJih6bi09SDArS2kpLHRoaXMuaG90LmlzTHRyKCkmJmJhK29hK0gwPlRhP3puPWJhK3ByLnNjcm9sbFgtSDAtMTp0aGlzLmhvdC5pc1J0bCgpJiZ6bjwtKEhuLnNjcm9sbFdpZHRoLUhuLmNsaWVudFdpZHRoKSYmKHpuPWJhK3ByLnNjcm9sbFgrS2krMSksWWErb28+SmwmJihfci09''@;'; put 'put ''b28tcWErMSksdGhpcy5lZGl0b3Iuc2V0UG9zaXRpb24oem4sX3IpLHRoaXMuZWRpdG9yLnNldFJlYWRPbmx5U3RhdGUodGhpcy5nZXRDb21tZW50TWV0YShOZSxLZSxOdGUpKX19fSx7a2V5OiJjaGVja1NlbGVjdGlvbkNvbW1lbnRzQ29uc2lzdGVuY3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZigheSlyZXR1cm4hMTt2YXIgQz0hMSxJPXkuZ2V0VG9wU3RhcnRDb3JuZXIoKTtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YShJLnJvdyxJLmNvbCx0UikmJihDPSEwKSxDfX0se2tleToidXBkYXRlQ29tbWVudE1ldGEiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgY2Usaj10aGlzLmhvdC5nZXRDZWxsTWV0YSh5LEMpW0JnXTtqP3J6KGNlPUFoKGopLEkpOmNlPUksdGhpcy5ob3Quc2V0Q2VsbE1ldGEoeSxDLEJnLGNlKX19LHtrZXk6ImdldENvbW1lbnRNZXRhIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIGo9''@;'; put 'put ''dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoeSxDKTtpZihqW0JnXSlyZXR1cm4galtCZ11bSV19fSx7a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYodGhpcy5ob3QudmlldyYmdGhpcy5ob3Qudmlldy5fd3QmJiF0aGlzLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNoJiYhdGhpcy50''@;'; put 'put ''YXJnZXRJc0NvbW1lbnRUZXh0QXJlYSh5KSl7dmFyIEM9RHYoeS50YXJnZXQsIlREIiwiVEJPRFkiKSxJPW51bGw7QyYmKEk9dGhpcy5ob3QuZ2V0Q29vcmRzKEMpKSwoIUN8fHRoaXMucmFuZ2UuZnJvbSYmSSYmKHRoaXMucmFuZ2UuZnJvbS5yb3chPT1JLnJvd3x8dGhpcy5yYW5nZS5mcm9t''@;'; put 'put ''LmNvbCE9PUkuY29sKSkmJnRoaXMuaGlkZSgpfX19LHtrZXk6Im9uTW91c2VPdmVyIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1IdGUuZ2V0KHRoaXMpLEk9dGhpcy5ob3Qucm9vdERvY3VtZW50O2lmKCEodGhpcy5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaHx8dGhpcy5lZGl0b3IuaXNGb2N1''@;'; put 'put ''c2VkKCl8fFhhKHkudGFyZ2V0LCJ3dEJvcmRlciIpfHxDLmNlbGxCZWxvd0N1cnNvcj09PXkudGFyZ2V0KSYmdGhpcy5lZGl0b3IpaWYoQy5jZWxsQmVsb3dDdXJzb3I9SS5lbGVtZW50RnJvbVBvaW50KHkuY2xpZW50WCx5LmNsaWVudFkpLHRoaXMudGFyZ2V0SXNDZWxsV2l0aENvbW1lbnQo''@;'; put 'put ''eSkpe3ZhciBqPXRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UodGhpcy5ob3QuZ2V0Q29vcmRzKHkudGFyZ2V0KSk7dGhpcy5kaXNwbGF5U3dpdGNoLnNob3coail9ZWxzZSBEdyh5LnRhcmdldCxJKSYmIXRoaXMudGFyZ2V0SXNDb21tZW50VGV4dEFyZWEoeSkmJnRoaXMuZGlzcGxheVN3aXRj''@;'; put 'put ''aC5oaWRlKCl9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaD0hMX19LHtrZXk6Im9uQWZ0ZXJSZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtDW0JnXSYmQ1tCZ11bdFJdJiZQMCh5LEMuY29tbWVudGVkQ2VsbENsYXNz''@;'; put 'put ''TmFtZSl9fSx7a2V5OiJvbkVkaXRvckJsdXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRDb21tZW50KCl9fSx7a2V5OiJvbkVkaXRvck1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSl7SHRlLmdldCh0aGlzKS50ZW1wRWRpdG9yRGltZW5zaW9ucz17d2lkdGg6dzIoeS50YXJnZXQpLGhl''@;'; put 'put ''aWdodDpCMSh5LnRhcmdldCl9fX0se2tleToib25FZGl0b3JNb3VzZVVwIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1IdGUuZ2V0KHRoaXMpLEk9dzIoeS50YXJnZXQpLGo9QjEoeS50YXJnZXQpOyhJIT09Qy50ZW1wRWRpdG9yRGltZW5zaW9ucy53aWR0aCsxfHxqIT09Qy50ZW1wRWRpdG9y''@;'; put 'put ''RGltZW5zaW9ucy5oZWlnaHQrMikmJnRoaXMudXBkYXRlQ29tbWVudE1ldGEodGhpcy5yYW5nZS5mcm9tLnJvdyx0aGlzLnJhbmdlLmZyb20uY29sLFA4ZSh7fSwic3R5bGUiLHt3aWR0aDpJLGhlaWdodDpqfSkpfX0se2tleToib25Db250ZXh0TWVudUFkZENvbW1lbnQiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTt0aGlzLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNoPSEwLHRoaXMuZGlzcGxheVN3aXRjaC5jYW5jZWxIaWRpbmcoKSx0aGlzLnNldFJhbmdlKHtmcm9tOnkuaGlnaGxpZ2h0fSksdGhpcy5zaG93KCksdGhpcy5ob3Qu''@;'; put 'put ''ZGVzZWxlY3RDZWxsKCksdGhpcy5lZGl0b3IuZm9jdXMoKX19LHtrZXk6Im9uQ29udGV4dE1lbnVSZW1vdmVDb21tZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO3RoaXMucHJldmVudEVkaXRvckF1dG9Td2l0Y2g9ITAs''@;'; put 'put ''Qy5mb3JBbGwoZnVuY3Rpb24oSSxqKXtJPj0wJiZqPj0wJiZ5LnJlbW92ZUNvbW1lbnRBdENlbGwoSSxqLCExKX0pLHRoaXMuaG90LnJlbmRlcigpfX0se2tleToib25Db250ZXh0TWVudU1ha2VSZWFkT25seSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5ob3QuZ2V0U2Vs''@;'; put 'put ''ZWN0ZWRSYW5nZUxhc3QoKTt0aGlzLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNoPSEwLEMuZm9yQWxsKGZ1bmN0aW9uKEksail7aWYoST49MCYmaj49MCl7dmFyIGNlPSEheS5nZXRDb21tZW50TWV0YShJLGosTnRlKTt5LnVwZGF0ZUNvbW1lbnRNZXRhKEksaixQOGUoe30sTnRlLCFjZSkpfX0p''@;'; put 'put ''fX0se2tleToiYWRkVG9Db250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPWZ1bmN0aW9uKCl7cmV0dXJuIEMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCk+MCYmQy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJs''@;'; put 'put ''ZUluZGV4ZXNMZW5ndGgoKT4wfTt5Lml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LHtrZXk6ImNvbW1lbnRzQWRkRWRpdCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiBDLmNoZWNrU2VsZWN0aW9uQ29tbWVudHNDb25zaXN0ZW5jeSgpP0MuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UocTRl''@;'; put 'put ''KTpDLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKCQ0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIEMub25Db250ZXh0TWVudUFkZENvbW1lbnQoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hSSgpfHwhKEMuaG90LmdldFNlbGVjdGVkTGFzdCgpJiYhQy5ob3Quc2VsZWN0aW9u''@;'; put 'put ''LmlzU2VsZWN0ZWRCeUNvcm5lcigpKX19LHtrZXk6ImNvbW1lbnRzUmVtb3ZlIixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShlcGUpfSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBDLm9uQ29udGV4dE1lbnVSZW1vdmVDb21tZW50KCl9LGRpc2Fi''@;'; put 'put ''bGVkOmZ1bmN0aW9uKCl7cmV0dXJuIUkoKXx8IShDLmhvdC5nZXRTZWxlY3RlZExhc3QoKSYmIUMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9fSx7a2V5OiJjb21tZW50c1JlYWRPbmx5IixuYW1lOmZ1bmN0aW9uKCl7dmFyIGNlPXRoaXMsX2U9dGhpcy5nZXRUcmFuc2xh''@;'; put 'put ''dGVkUGhyYXNlKHRwZSk7cmV0dXJuIFJnKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxmdW5jdGlvbihOZSxLZSl7dmFyIGh0PWNlLmdldENlbGxNZXRhKE5lLEtlKVtCZ107aWYoaHQmJihodD1odFtOdGVdKSxodClyZXR1cm4hMH0pJiYoX2U9anYoX2UpKSxfZX0sY2FsbGJhY2s6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gQy5vbkNvbnRleHRNZW51TWFrZVJlYWRPbmx5KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIUkoKXx8IShDLmhvdC5nZXRTZWxlY3RlZExhc3QoKSYmIUMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmQy5jaGVja1NlbGVjdGlvbkNvbW1l''@;'; put 'put ''bnRzQ29uc2lzdGVuY3koKSl9fSl9fSx7a2V5OiJnZXREaXNwbGF5RGVsYXlTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFNldHRpbmdzKClbSDhlXTtpZihBbCh5KSlyZXR1cm4geS5kaXNwbGF5RGVsYXl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3RoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5kZXN0cm95KCksdGhpcy5kaXNwbGF5U3dpdGNoJiZ0aGlzLmRpc3BsYXlTd2l0Y2guZGVzdHJveSgpLHVNKFp2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIEg4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDYwfX1dKSxofShHcyk7ZnVuY3Rpb24gdXhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEs''@;'; put 'put ''di5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIHphdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIGphdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmhvdD1nLHRoaXMuY29tbWFuZHM9e30sdGhpcy5jb21tb25DYWxsYmFjaz1udWxsfXJldHVybiBmdW5jdGlvbiBaYXQoZCxnLGgpe2cmJnV4ZShkLnByb3RvdHlwZSxnKSxoJiZ1eGUo''@;'; put 'put ''ZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToicmVnaXN0ZXJDb21tYW5kIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuY29tbWFuZHNbaF09dn19LHtrZXk6InNldENvbW1vbkNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''KXt0aGlzLmNvbW1vbkNhbGxiYWNrPWh9fSx7a2V5OiJleGVjdXRlIix2YWx1ZTpmdW5jdGlvbihoKXtmb3IodmFyIHY9dGhpcyx5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeT4xP3ktMTowKSxJPTE7STx5O0krKylDW0ktMV09YXJndW1lbnRzW0ldO3ZhciBqPWguc3BsaXQoIjoi''@;'; put 'put ''KSxjZT1qWzBdLF9lPTI9PT1qLmxlbmd0aD9qWzFdOm51bGwsUmU9dGhpcy5jb21tYW5kc1tjZV07aWYoIVJlKXRocm93IG5ldyBFcnJvcigiTWVudSBjb21tYW5kICciLmNvbmNhdChjZSwiJyBub3QgZXhpc3RzLiIpKTtpZihfZSYmUmUuc3VibWVudSYmKFJlPUdhdChfZSxSZS5zdWJtZW51''@;'; put 'put ''Lml0ZW1zKSksITAhPT1SZS5kaXNhYmxlZCYmKCJmdW5jdGlvbiIhPXR5cGVvZiBSZS5kaXNhYmxlZHx8ITAhPT1SZS5kaXNhYmxlZC5jYWxsKHRoaXMuaG90KSkmJiFzMShSZSwic3VibWVudSIpKXt2YXIgTmU9W107ImZ1bmN0aW9uIj09dHlwZW9mIFJlLmNhbGxiYWNrJiZOZS5wdXNoKFJl''@;'; put 'put ''LmNhbGxiYWNrKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb21tb25DYWxsYmFjayYmTmUucHVzaCh0aGlzLmNvbW1vbkNhbGxiYWNrKSxDLnVuc2hpZnQoai5qb2luKCI6IikpLEdyKE5lLGZ1bmN0aW9uKEtlKXtyZXR1cm4gS2UuYXBwbHkodi5ob3QsQyl9KX19fV0pLGR9KCk7ZnVuY3Rp''@;'; put 'put ''b24gR2F0KGQsZyl7dmFyIGg7cmV0dXJuIEdyKGcsZnVuY3Rpb24odil7dmFyIHk9di5rZXk/di5rZXkuc3BsaXQoIjoiKTpudWxsO2lmKEFycmF5LmlzQXJyYXkoeSkmJnlbMV09PT1kKXJldHVybiBoPXYsITF9KSxofWNvbnN0IGN4ZT16YXQ7dmFyIHhwPSJhbGlnbm1lbnQiLFZ0ZT0iY2xl''@;'; put 'put ''YXJfY29sdW1uIixaej0iY29sX2xlZnQiLHp6PSJjb2xfcmlnaHQiLEd6PSJtYWtlX3JlYWRfb25seSIsanRlPSJyZWRvIjtmdW5jdGlvbiBmeGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09''@;'; put 'put ''ZFtoXTtyZXR1cm4gdn12YXIgV3o9InJlbW92ZV9jb2wiO2Z1bmN0aW9uIGh4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fXZhciBjMyxadGU9InJlbW92ZV9yb3ci''@;'; put 'put ''LHp0ZT0icm93X2Fib3ZlIixHdGU9InJvd19iZWxvdyIsWXo9Im5vX2l0ZW1zIixXdGU9InVuZG8iO2Z1bmN0aW9uIHY0KGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6''@;'; put 'put ''ITB9KTpkW2ddPWgsZH12YXIgZHhlPVt6dGUsR3RlLFp6LHp6LFZ0ZSxadGUsV3osV3RlLGp0ZSxHeix4cCx6bCxZel0scHhlPSh2NChjMz17fSx6bCxmdW5jdGlvbiB2YXQoKXtyZXR1cm57bmFtZTp6bH19KSx2NChjMyxZeixmdW5jdGlvbiBmbHQoKXtyZXR1cm57a2V5Oll6LG5hbWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEI0ZSl9LGRpc2FibGVkOiEwLGlzQ29tbWFuZDohMX19KSx2NChjMyx6dGUsZnVuY3Rpb24gdWx0KCl7cmV0dXJue2tleTp6dGUsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoUDRl''@;'; put 'put ''KX0sY2FsbGJhY2s6ZnVuY3Rpb24oZyxoKXt2YXIgdj10aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSx5PTA7dnx8KHk9aFtNYXRoLm1heChoLmxlbmd0aC0xLDApXS5zdGFydC5yb3cpLHRoaXMuYWx0ZXIoImluc2VydF9yb3ciLHksMSwiQ29udGV4dE1lbnUucm93QWJvdmUi''@;'; put 'put ''KSx2JiZ0aGlzLnNlbGVjdEFsbCgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFsTSh0aGlzKXx8KHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpPzA9PT10aGlzLmNvdW50Um93cygpOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpfHx0aGlz''@;'; put 'put ''LmNvdW50Um93cygpPj10aGlzLmdldFNldHRpbmdzKCkubWF4Um93cyl9LGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dJbnNlcnRSb3d9fX0pLHY0KGMzLEd0ZSxmdW5jdGlvbiBjbHQoKXtyZXR1cm57a2V5Okd0ZSxuYW1lOmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShGNGUpfSxjYWxsYmFjazpmdW5jdGlvbihnLGgpe3ZhciB2PXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpLHk9MDtpZih2KXk9dGhpcy5jb3VudFJvd3MoKTtlbHNle3ZhciBDLEk9aFtNYXRoLm1heChoLmxlbmd0aC0xLDAp''@;'; put 'put ''XSxqPW51bGw9PUl8fG51bGw9PT0oQz1JLmVuZCl8fHZvaWQgMD09PUM/dm9pZCAwOkMucm93O3k9RW8oaik/aisxOjB9dGhpcy5hbHRlcigiaW5zZXJ0X3JvdyIseSwxLCJDb250ZXh0TWVudS5yb3dCZWxvdyIpLHYmJnRoaXMuc2VsZWN0QWxsKCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIWxNKHRoaXMpfHwhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJih0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5jb3VudFJvd3MoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heFJvd3MpfSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Um93fX19KSx2NChjMyxaeixmdW5jdGlvbiBVYXQoKXtyZXR1cm57a2V5Olp6LG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEg0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5z''@;'; put 'put ''ZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCksaD10aGlzLmlzUnRsKCk/dGhpcy5jb3VudENvbHMoKTowO2lmKCFnKXt2YXIgdj10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoRW8odikpe3ZhciBDPXYuZ2V0VG9wTGVmdENvcm5lcigpLmNvbDtoPXRoaXMuaXNSdGwoKT9DKzE6''@;'; put 'put ''Q319dGhpcy5hbHRlcigiaW5zZXJ0X2NvbCIsaCwxLCJDb250ZXh0TWVudS5jb2x1bW5MZWZ0IiksZyYmdGhpcy5zZWxlY3RBbGwoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKXx8IWxNKHRoaXMpfHwodGhpcy5zZWxlY3Rp''@;'; put 'put ''b24uaXNTZWxlY3RlZEJ5Q29ybmVyKCk/MD09PXRoaXMuY291bnRDb2xzKCk6dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCl8fHRoaXMuY291bnRDb2xzKCk+PXRoaXMuZ2V0U2V0dGluZ3MoKS5tYXhDb2xzKX0saGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0''@;'; put 'put ''U2V0dGluZ3MoKS5hbGxvd0luc2VydENvbHVtbn19fSksdjQoYzMsenosZnVuY3Rpb24gUWF0KCl7cmV0dXJue2tleTp6eixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShONGUpfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBnPXRoaXMuc2VsZWN0aW9u''@;'; put 'put ''LmlzU2VsZWN0ZWRCeUNvcm5lcigpLGg9dGhpcy5pc1J0bCgpPzA6dGhpcy5jb3VudENvbHMoKTtpZighZyl7dmFyIHY9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKEVvKHYpKXt2YXIgQz12LmdldFRvcFJpZ2h0Q29ybmVyKCkuY29sO2g9dGhpcy5pc1J0bCgpP0M6QysxfX10aGlz''@;'; put 'put ''LmFsdGVyKCJpbnNlcnRfY29sIixoLDEsIkNvbnRleHRNZW51LmNvbHVtblJpZ2h0IiksZyYmdGhpcy5zZWxlY3RBbGwoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKXx8IWxNKHRoaXMpfHwhdGhpcy5zZWxlY3Rpb24uaXNT''@;'; put 'put ''ZWxlY3RlZEJ5Q29ybmVyKCkmJih0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8dGhpcy5jb3VudENvbHMoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heENvbHMpfSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Q29s''@;'; put 'put ''dW1ufX19KSx2NChjMyxWdGUsZnVuY3Rpb24gWWF0KCl7cmV0dXJue2tleTpWdGUsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoVzRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oZyxoKXt2YXIgdj1oWzBdLnN0YXJ0LmNvbCx5PWhbMF0uZW5kLmNvbDt0aGlz''@;'; put 'put ''LmNvdW50Um93cygpJiZ0aGlzLnBvcHVsYXRlRnJvbUFycmF5KDAsdixbW251bGxdXSxNYXRoLm1heChoWzBdLnN0YXJ0LnJvdyxoWzBdLmVuZC5yb3cpLHksIkNvbnRleHRNZW51LmNsZWFyQ29sdW1uIil9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWxNKHRoaXMpfHwhdGhpcy5zZWxl''@;'; put 'put ''Y3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl9fX0pLHY0KGMzLFp0ZSxmdW5jdGlvbiBzbHQoKXtyZXR1cm57a2V5Olp0ZSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5nZXRTZWxlY3RlZCgpLGg9MDtpZihnKWlmKGcubGVuZ3RoPjEpaD0xO2Vsc2V7dmFyIHY9ZnVuY3Rpb24g''@;'; put 'put ''cmx0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGxsdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gYWx0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3Ii''@;'; put 'put ''XTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9''@;'; put 'put ''aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gb2x0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBoeGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xp''@;'; put 'put ''Y2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJh''@;'; put 'put ''eSQvLnRlc3QoaCkpcmV0dXJuIGh4ZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gaWx0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2Jq''@;'; put 'put ''ZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZ1swXSwzKTt2WzBdLXZbMl0hPTAmJihoPTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoVjRlLGgpfSxjYWxsYmFjazpmdW5jdGlvbigpe3RoaXMuYWx0ZXIoInJlbW92ZV9yb3ciLGZ1''@;'; put 'put ''bmN0aW9uIHBxZShkKXt2YXIgZz1OTyhkKTtpZigwPT09Z3x8MT09PWcpcmV0dXJuW107dmFyIGg9UnooZyksdj1uZXcgU2V0O3JldHVybiBHcihkLGZ1bmN0aW9uKEkpe3ZhciBjZT1PU2UoaChJKSwzKSxSZT1jZVsyXSxOZT1NYXRoLm1heChjZVswXSwwKTtHcihBcnJheS5mcm9tKG5ldyBB''@;'; put 'put ''cnJheShSZS1OZSsxKSxmdW5jdGlvbihodCxCdCl7cmV0dXJuIE5lK0J0fSksZnVuY3Rpb24oaHQpe3YuaGFzKGh0KXx8di5hZGQoaHQpfSl9KSxFdShBcnJheS5mcm9tKHYpLnNvcnQoZnVuY3Rpb24oSSxqKXtyZXR1cm4gSS1qfSksZnVuY3Rpb24oSSxqLGNlLF9lKXtyZXR1cm4gMCE9PWNl''@;'; put 'put ''JiZqPT09X2VbY2UtMV0rMT9JW0kubGVuZ3RoLTFdWzFdKz0xOkkucHVzaChbaiwxXSksSX0sW10pfSh0aGlzLmdldFNlbGVjdGVkKCkpLDEsIkNvbnRleHRNZW51LnJlbW92ZVJvdyIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe2lmKCFsTSh0aGlzKSlyZXR1cm4hMDt2YXIgaD10aGlzLmNvdW50''@;'; put 'put ''Um93cygpO3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09aDp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8MD09PWh9LGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dSZW1vdmVSb3d9''@;'; put 'put ''fX0pLHY0KGMzLFd6LGZ1bmN0aW9uIG5sdCgpe3JldHVybntrZXk6V3osbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZ2V0U2VsZWN0ZWQoKSxoPTA7aWYoZylpZihnLmxlbmd0aD4xKWg9MTtlbHNle3ZhciB2PWZ1bmN0aW9uIEthdChkLGcpe3JldHVybiBmdW5jdGlvbiB0bHQoZCl7aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIGVsdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0h''@;'; put 'put ''MTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0''@;'; put 'put ''aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHFhdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gZnhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1''@;'; put 'put ''Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBmeGUoZCxnKX19KGQsZyl8''@;'; put 'put ''fGZ1bmN0aW9uICRhdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0o''@;'; put 'put ''KSBtZXRob2QuIil9KCl9KGdbMF0sNCk7dlsxXS12WzNdIT0wJiYoaD0xKX1yZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGo0ZSxoKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLmFsdGVyKCJyZW1vdmVfY29sIixmdW5jdGlvbiBkcWUoZCl7dmFyIGc9Tk8oZCk7aWYoMD09PWd8''@;'; put 'put ''fDE9PT1nKXJldHVybltdO3ZhciBoPVJ6KGcpLHY9bmV3IFNldDtyZXR1cm4gR3IoZCxmdW5jdGlvbihJKXt2YXIgY2U9T1NlKGgoSSksNCksUmU9Y2VbM10sTmU9TWF0aC5tYXgoY2VbMV0sMCk7R3IoQXJyYXkuZnJvbShuZXcgQXJyYXkoUmUtTmUrMSksZnVuY3Rpb24oaHQsQnQpe3JldHVy''@;'; put 'put ''biBOZStCdH0pLGZ1bmN0aW9uKGh0KXt2LmhhcyhodCl8fHYuYWRkKGh0KX0pfSksRXUoQXJyYXkuZnJvbSh2KS5zb3J0KGZ1bmN0aW9uKEksail7cmV0dXJuIEktan0pLGZ1bmN0aW9uKEksaixjZSxfZSl7cmV0dXJuIDAhPT1jZSYmaj09PV9lW2NlLTFdKzE/SVtJLmxlbmd0aC0xXVsxXSs9''@;'; put 'put ''MTpJLnB1c2goW2osMV0pLEl9LFtdKX0odGhpcy5nZXRTZWxlY3RlZCgpKSxudWxsLCJDb250ZXh0TWVudS5yZW1vdmVDb2x1bW4iKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKSlyZXR1cm4hMDtpZighbE0odGhpcykpcmV0dXJu''@;'; put 'put ''ITA7dmFyIGg9dGhpcy5jb3VudENvbHMoKTtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCk/MD09PWg6dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCl8fDA9PT1ofSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygp''@;'; put 'put ''LmFsbG93UmVtb3ZlQ29sdW1ufX19KSx2NChjMyxXdGUsZnVuY3Rpb24gaGx0KCl7cmV0dXJue2tleTpXdGUsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoWjRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLnVuZG8oKX0saGlkZGVuOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGc9dGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIik7cmV0dXJuIWd8fCFnLmlzRW5hYmxlZCgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKS5pc1VuZG9BdmFpbGFibGUoKX19fSksdjQoYzMsanRlLGZ1bmN0aW9uIFhhdCgpe3Jl''@;'; put 'put ''dHVybntrZXk6anRlLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHo0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5yZWRvKCl9LGhpZGRlbjpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpO3JldHVybiFnfHwhZy5p''@;'; put 'put ''c0VuYWJsZWQoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIikuaXNSZWRvQXZhaWxhYmxlKCl9fX0pLHY0KGMzLEd6LGZ1bmN0aW9uIEphdCgpe3JldHVybntrZXk6R3osbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRy''@;'; put 'put ''YW5zbGF0ZWRQaHJhc2UoRzRlKTtyZXR1cm4gUmcodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXtyZXR1cm4gZy5nZXRDZWxsTWV0YSh5LEMpLnJlYWRPbmx5fSkmJihoPWp2KGgpKSxofSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFNlbGVj''@;'; put 'put ''dGVkUmFuZ2UoKSx2PVJnKGgsZnVuY3Rpb24oeSxDKXtyZXR1cm4gZy5nZXRDZWxsTWV0YSh5LEMpLnJlYWRPbmx5fSk7R3IoaCxmdW5jdGlvbih5KXt5LmZvckFsbChmdW5jdGlvbihDLEkpe0M+PTAmJkk+PTAmJmcuc2V0Q2VsbE1ldGEoQyxJLCJyZWFkT25seSIsIXYpfSl9KSx0aGlzLnJl''@;'; put 'put ''bmRlcigpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYwIT09dGhpcy5jb3VudFJvd3MoKSYmMCE9PXRoaXMuY291bnRDb2xzKCkmJnRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpJiYwIT09dGhpcy5nZXRTZWxlY3RlZFJh''@;'; put 'put ''bmdlKCkubGVuZ3RoKX19fSksdjQoYzMseHAsZnVuY3Rpb24gV2F0KCl7cmV0dXJue2tleTp4cCxuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShucGUpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5jb3VudFJvd3MoKXx8MD09PXRo''@;'; put 'put ''aXMuY291bnRDb2xzKCl8fCEodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCkmJiF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9LHN1Ym1lbnU6e2l0ZW1zOlt7a2V5OiIiLmNvbmNhdCh4cCwiOmxlZnQiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0VHJh''@;'; put 'put ''bnNsYXRlZFBocmFzZShycGUpO3JldHVybiBSZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbih5LEMpe3ZhciBJPWcuZ2V0Q2VsbE1ldGEoeSxDKS5jbGFzc05hbWU7aWYoSSYmLTEhPT1JLmluZGV4T2YoImh0TGVmdCIpKXJldHVybiEwfSkmJihoPWp2KGgpKSxofSxjYWxsYmFj''@;'; put 'put ''azpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PXNNKGgsZnVuY3Rpb24oSSxqKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLGopLmNsYXNzTmFtZX0pLHk9Imhvcml6b250YWwiLEM9Imh0TGVmdCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdu''@;'; put 'put ''bWVudCIsdixoLHksQyksVXcoaCx5LEMsZnVuY3Rpb24oSSxqKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLGopfSxmdW5jdGlvbihJLGosY2UsX2Upe3JldHVybiBnLnNldENlbGxNZXRhKEksaixjZSxfZSl9KSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleToiIi5jb25jYXQoeHAs''@;'; put 'put ''IjpjZW50ZXIiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShpcGUpO3JldHVybiBSZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbih5LEMpe3ZhciBJPWcuZ2V0Q2VsbE1ldGEoeSxDKS5jbGFzc05hbWU7aWYoSSYmLTEhPT1J''@;'; put 'put ''LmluZGV4T2YoImh0Q2VudGVyIikpcmV0dXJuITB9KSYmKGg9anYoaCkpLGh9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLHY9c00oaCxmdW5jdGlvbihJLGope3JldHVybiBnLmdldENlbGxNZXRhKEksaikuY2xhc3NOYW1lfSkseT0i''@;'; put 'put ''aG9yaXpvbnRhbCIsQz0iaHRDZW50ZXIiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLHYsaCx5LEMpLFV3KGgseSxDLGZ1bmN0aW9uKEksail7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxqKX0sZnVuY3Rpb24oSSxqLGNlLF9lKXtyZXR1cm4gZy5zZXRDZWxsTWV0YShJLGos''@;'; put 'put ''Y2UsX2UpfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtrZXk6IiIuY29uY2F0KHhwLCI6cmlnaHQiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShvcGUpO3JldHVybiBSZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlv''@;'; put 'put ''bih5LEMpe3ZhciBJPWcuZ2V0Q2VsbE1ldGEoeSxDKS5jbGFzc05hbWU7aWYoSSYmLTEhPT1JLmluZGV4T2YoImh0UmlnaHQiKSlyZXR1cm4hMH0pJiYoaD1qdihoKSksaH0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj1zTShoLGZ1''@;'; put 'put ''bmN0aW9uKEksail7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxqKS5jbGFzc05hbWV9KSx5PSJob3Jpem9udGFsIixDPSJodFJpZ2h0Ijt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50Iix2LGgseSxDKSxVdyhoLHksQyxmdW5jdGlvbihJLGope3JldHVybiBnLmdldENlbGxNZXRh''@;'; put 'put ''KEksail9LGZ1bmN0aW9uKEksaixjZSxfZSl7cmV0dXJuIGcuc2V0Q2VsbE1ldGEoSSxqLGNlLF9lKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7a2V5OiIiLmNvbmNhdCh4cCwiOmp1c3RpZnkiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0VHJhbnNsYXRl''@;'; put 'put ''ZFBocmFzZShhcGUpO3JldHVybiBSZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbih5LEMpe3ZhciBJPWcuZ2V0Q2VsbE1ldGEoeSxDKS5jbGFzc05hbWU7aWYoSSYmLTEhPT1JLmluZGV4T2YoImh0SnVzdGlmeSIpKXJldHVybiEwfSkmJihoPWp2KGgpKSxofSxjYWxsYmFjazpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PXNNKGgsZnVuY3Rpb24oSSxqKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLGopLmNsYXNzTmFtZX0pLHk9Imhvcml6b250YWwiLEM9Imh0SnVzdGlmeSI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdu''@;'; put 'put ''bWVudCIsdixoLHksQyksVXcoaCx5LEMsZnVuY3Rpb24oSSxqKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLGopfSxmdW5jdGlvbihJLGosY2UsX2Upe3JldHVybiBnLnNldENlbGxNZXRhKEksaixjZSxfZSl9KSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se25hbWU6emx9LHtrZXk6IiIu''@;'; put 'put ''Y29uY2F0KHhwLCI6dG9wIiksbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobHBlKTtyZXR1cm4gUmcodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXt2YXIgST1nLmdldENlbGxNZXRhKHksQykuY2xhc3NOYW1lO2lmKEkm''@;'; put 'put ''Ji0xIT09SS5pbmRleE9mKCJodFRvcCIpKXJldHVybiEwfSkmJihoPWp2KGgpKSxofSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PXNNKGgsZnVuY3Rpb24oSSxqKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLGopLmNsYXNzTmFtZX0p''@;'; put 'put ''LHk9InZlcnRpY2FsIixDPSJodFRvcCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsdixoLHksQyksVXcoaCx5LEMsZnVuY3Rpb24oSSxqKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLGopfSxmdW5jdGlvbihJLGosY2UsX2Upe3JldHVybiBnLnNldENlbGxNZXRhKEksaixj''@;'; put 'put ''ZSxfZSl9KSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleToiIi5jb25jYXQoeHAsIjptaWRkbGUiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShzcGUpO3JldHVybiBSZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlv''@;'; put 'put ''bih5LEMpe3ZhciBJPWcuZ2V0Q2VsbE1ldGEoeSxDKS5jbGFzc05hbWU7aWYoSSYmLTEhPT1JLmluZGV4T2YoImh0TWlkZGxlIikpcmV0dXJuITB9KSYmKGg9anYoaCkpLGh9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLHY9c00oaCxm''@;'; put 'put ''dW5jdGlvbihJLGope3JldHVybiBnLmdldENlbGxNZXRhKEksaikuY2xhc3NOYW1lfSkseT0idmVydGljYWwiLEM9Imh0TWlkZGxlIjt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50Iix2LGgseSxDKSxVdyhoLHksQyxmdW5jdGlvbihJLGope3JldHVybiBnLmdldENlbGxNZXRh''@;'; put 'put ''KEksail9LGZ1bmN0aW9uKEksaixjZSxfZSl7cmV0dXJuIGcuc2V0Q2VsbE1ldGEoSSxqLGNlLF9lKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7a2V5OiIiLmNvbmNhdCh4cCwiOmJvdHRvbSIpLG5hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRUcmFuc2xhdGVk''@;'; put 'put ''UGhyYXNlKHVwZSk7cmV0dXJuIFJnKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKHksQyl7dmFyIEk9Zy5nZXRDZWxsTWV0YSh5LEMpLmNsYXNzTmFtZTtpZihJJiYtMSE9PUkuaW5kZXhPZigiaHRCb3R0b20iKSlyZXR1cm4hMH0pJiYoaD1qdihoKSksaH0sY2FsbGJhY2s6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj1zTShoLGZ1bmN0aW9uKEksail7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxqKS5jbGFzc05hbWV9KSx5PSJ2ZXJ0aWNhbCIsQz0iaHRCb3R0b20iO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQi''@;'; put 'put ''LHYsaCx5LEMpLFV3KGgseSxDLGZ1bmN0aW9uKEksail7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxqKX0sZnVuY3Rpb24oSSxqLGNlLF9lKXtyZXR1cm4gZy5zZXRDZWxsTWV0YShJLGosY2UsX2UpfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9XX19fSksYzMpO2Z1bmN0aW9uIGd4ZSgp''@;'; put 'put ''e3ZhciBkPXt9O3JldHVybiBabChweGUsZnVuY3Rpb24oZyxoKXtkW2hdPWcoKX0pLGR9ZnVuY3Rpb24gZGx0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbXhlKGQsZyl7''@;'; put 'put ''Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGdsdD1mdW5jdGlv''@;'; put 'put ''bigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7ZGx0KHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLnByZWRlZmluZWRJdGVtcz1neGUoKSx0aGlzLmRlZmF1bHRPcmRlclBhdHRlcm49aH1yZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gcGx0KGQsZyxoKXtnJiZteGUoZC5wcm90b3R5cGUsZyksaCYmbXhlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldFByZWRlZmluZWRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhp''@;'; put 'put ''cyx5PXt9O3RoaXMuZGVmYXVsdE9yZGVyUGF0dGVybi5sZW5ndGg9MCxabChoLGZ1bmN0aW9uKEMsSSl7dmFyIGo9IiI7Qy5uYW1lPT09emw/KHlbemxdPUMsaj16bCk6aXNOYU4ocGFyc2VJbnQoSSwxMCkpPyhDLmtleT12b2lkIDA9PT1DLmtleT9JOkMua2V5LHlbSV09QyxqPUMua2V5KToo''@;'; put 'put ''eVtDLmtleV09QyxqPUMua2V5KSx2LmRlZmF1bHRPcmRlclBhdHRlcm4ucHVzaChqKX0pLHRoaXMucHJlZGVmaW5lZEl0ZW1zPXl9fSx7a2V5OiJnZXRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVu''@;'; put 'put ''dHNbMF06bnVsbDtyZXR1cm4gbWx0KGgsdGhpcy5kZWZhdWx0T3JkZXJQYXR0ZXJuLHRoaXMucHJlZGVmaW5lZEl0ZW1zKX19XSksZH0oKTtmdW5jdGlvbiBtbHQoKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxnPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSx2PVtdLHk9ZDtyZXR1cm4geSYmeS5pdGVtcz95PXkuaXRlbXM6QXJyYXkuaXNBcnJh''@;'; put 'put ''eSh5KXx8KHk9ZyksQWwoeSk/WmwoeSxmdW5jdGlvbihDLEkpe3ZhciBqPWhbInN0cmluZyI9PXR5cGVvZiBDP0M6SV07anx8KGo9QyksQWwoQyk/UjEoaixDKToic3RyaW5nIj09dHlwZW9mIGomJihqPXtuYW1lOmp9KSx2b2lkIDA9PT1qLmtleSYmKGoua2V5PUkpLHYucHVzaChqKX0pOkdy''@;'; put 'put ''KHksZnVuY3Rpb24oQyxJKXt2YXIgaj1oW0NdOyFqJiZkeGUuaW5kZXhPZihDKT49MHx8KGp8fChqPXtuYW1lOkMsa2V5OiIiLmNvbmNhdChJKX0pLEFsKEMpJiZSMShqLEMpLHZvaWQgMD09PWoua2V5JiYoai5rZXk9SSksdi5wdXNoKGopKX0pLHZ9Y29uc3QgdnhlPWdsdDtmdW5jdGlvbiBB''@;'; put 'put ''eGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgeWx0''@;'; put 'put ''PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpeyFmdW5jdGlvbiB2bHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxkKTt2YXIgQyxJLGosY2UsX2UsUmUsdj1FTyhoKSx5PUhT''@;'; put 'put ''KGgpO3RoaXMucm9vdFdpbmRvdz1oLHRoaXMudHlwZT10aGlzLmdldFNvdXJjZVR5cGUoZyksImxpdGVyYWwiPT09dGhpcy50eXBlPyhDPXBhcnNlSW50KGcudG9wLDEwKSxqPXBhcnNlSW50KGcubGVmdCwxMCksX2U9Zy5oZWlnaHR8fDAsUmU9Zy53aWR0aHx8MCxJPUMsY2U9aixDKz12LGor''@;'; put 'put ''PXkpOiJldmVudCI9PT10aGlzLnR5cGUmJihDPXBhcnNlSW50KGcucGFnZVksMTApLGo9cGFyc2VJbnQoZy5wYWdlWCwxMCksX2U9Zy50YXJnZXQuY2xpZW50SGVpZ2h0LFJlPWcudGFyZ2V0LmNsaWVudFdpZHRoLEk9Qy12LGNlPWoteSksdGhpcy50b3A9Qyx0aGlzLnRvcFJlbGF0aXZlPUks''@;'; put 'put ''dGhpcy5sZWZ0PWosdGhpcy5sZWZ0UmVsYXRpdmU9Y2UsdGhpcy5zY3JvbGxUb3A9dix0aGlzLnNjcm9sbExlZnQ9eSx0aGlzLmNlbGxIZWlnaHQ9X2UsdGhpcy5jZWxsV2lkdGg9UmV9cmV0dXJuIGZ1bmN0aW9uIEFsdChkLGcsaCl7ZyYmQXhlKGQucHJvdG90eXBlLGcpLGgmJkF4ZShkLGgp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXRTb3VyY2VUeXBlIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj0ibGl0ZXJhbCI7cmV0dXJuIGggaW5zdGFuY2VvZiBFdmVudCYmKHY9ImV2ZW50Iiksdn19LHtrZXk6ImZpdHNB''@;'; put 'put ''Ym92ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMudG9wUmVsYXRpdmU+PWgub2Zmc2V0SGVpZ2h0fX0se2tleToiZml0c0JlbG93Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhp''@;'; put 'put ''cy5yb290V2luZG93LmlubmVySGVpZ2h0O3JldHVybiB0aGlzLnRvcFJlbGF0aXZlK2gub2Zmc2V0SGVpZ2h0PD12fX0se2tleToiZml0c09uUmlnaHQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sx''@;'; put 'put ''XTp0aGlzLnJvb3RXaW5kb3cuaW5uZXJXaWR0aDtyZXR1cm4gdGhpcy5sZWZ0UmVsYXRpdmUrdGhpcy5jZWxsV2lkdGgraC5vZmZzZXRXaWR0aDw9dn19LHtrZXk6ImZpdHNPbkxlZnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmxlZnRSZWxhdGl2ZT49aC5vZmZzZXRXaWR0aH19''@;'; put 'put ''XSksZH0oKTtjb25zdCB3bHQ9eWx0O2Z1bmN0aW9uIHl4ZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJu''@;'; put 'put ''IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9uIHd4ZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRz''@;'; put 'put ''W2ddOnt9O2clMj95eGUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe2JsdChkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTp5eGUo''@;'; put 'put ''T2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIGJsdChkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxn''@;'; put 'put ''LHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gYnhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9''@;'; put 'put ''ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGt4ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gX2x0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5vcHRpb25zPWh8fHtwYXJlbnQ6bnVsbCxuYW1lOm51bGwsY2xhc3NOYW1lOiIiLGtlZXBJblZpZXdwb3J0OiEwLHN0YW5kYWxvbmU6ITEsbWluV2lkdGg6MjE1LGNvbnRhaW5lcjp0aGlz''@;'; put 'put ''LmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSx0aGlzLmV2ZW50TWFuYWdlcj1uZXcgUDEodGhpcyksdGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5vcHRpb25zLm5hbWUpLHRoaXMuaG90TWVudT1udWxsLHRoaXMuaG90U3ViTWVudXM9e30sdGhpcy5w''@;'; put 'put ''YXJlbnRNZW51PXRoaXMub3B0aW9ucy5wYXJlbnR8fG51bGwsdGhpcy5tZW51SXRlbXM9bnVsbCx0aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHM9bnVsbCx0aGlzLmtleUV2ZW50PSExLHRoaXMub2Zmc2V0PXthYm92ZTowLGJlbG93OjAsbGVmdDowLHJpZ2h0OjB9LHRoaXMuX2FmdGVy''@;'; put 'put ''U2Nyb2xsQ2FsbGJhY2s9bnVsbCx0aGlzLnJlZ2lzdGVyRXZlbnRzKCl9cmV0dXJuIGZ1bmN0aW9uIENsdChkLGcsaCl7ZyYmYnhlKGQucHJvdG90eXBlLGcpLGgmJmJ4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJy''@;'; put 'put ''ZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGg9dGhpcyx2PXRoaXMuaG90LnJvb3RXaW5kb3c7djspdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih2LmRvY3VtZW50LCJtb3VzZWRvd24iLGZ1bmN0aW9uKHkpe3JldHVybiBoLm9uRG9jdW1lbnRNb3Vz''@;'; put 'put ''ZURvd24oeSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHYuZG9jdW1lbnQsImNvbnRleHRtZW51IixmdW5jdGlvbih5KXtyZXR1cm4gaC5vbkRvY3VtZW50Q29udGV4dE1lbnUoeSl9KSx2PXczZSh2KX19LHtrZXk6InNldE1lbnVJdGVtcyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCl7dGhpcy5tZW51SXRlbXM9aH19LHtrZXk6ImdldFNlbGVjdGVkSXRlbSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNTZWxlY3RlZEl0ZW0oKT90aGlzLmhvdE1lbnUuZ2V0U291cmNlRGF0YUF0Um93KHRoaXMuaG90TWVudS5nZXRTZWxlY3RlZExhc3QoKVswXSk6bnVsbH19''@;'; put 'put ''LHtrZXk6Imhhc1NlbGVjdGVkSXRlbSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCkpfX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDt0aGlzLm9mZnNldFtoXT12fX0se2tleToiaXNTdWJNZW51Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5wYXJlbnRNZW51fX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMucnVuTG9j''@;'; put 'put ''YWxIb29rcygiYmVmb3JlT3BlbiIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSx0aGlzLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJibG9jayI7dmFyIHY9RDNlKGZ1bmN0aW9uKGh0KXtyZXR1cm4gaC5vcGVuU3ViTWVudShodCl9LDMwMCkseT10aGlzLm9wdGlv''@;'; put 'put ''bnMubWluV2lkdGh8fDIxNSxDPSExLEk9ZDQodGhpcy5tZW51SXRlbXMsZnVuY3Rpb24oaHQpe3JldHVybiBodC5rZXk9PT1ZeiYmKEM9ITApLGZ1bmN0aW9uIENhdChkLGcpe3JldHVybiFkLmhpZGRlbnx8ISgiZnVuY3Rpb24iPT10eXBlb2YgZC5oaWRkZW4mJmQuaGlkZGVuLmNhbGwoZykp''@;'; put 'put ''fShodCxoLmhvdCl9KTtpZihJLmxlbmd0aDwxJiYhQylJLnB1c2goZ3hlKClbWXpdKTtlbHNlIGlmKDA9PT1JLmxlbmd0aClyZXR1cm47ST1mdW5jdGlvbiBNYXQoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnpsLGg9ZC5z''@;'; put 'put ''bGljZSgwKTtyZXR1cm4gU2F0KGg9a2F0KGg9cnhlKGgsZyksZykpfShJLHpsKTt2YXIgaj0hMSxjZT17ZGF0YTpJLGNvbEhlYWRlcnM6ITEsYXV0b0NvbHVtblNpemU6ITAsYXV0b1dyYXBSb3c6ITEsbW9kaWZ5Q29sV2lkdGg6ZnVuY3Rpb24oQnQpe3JldHVybiBFbyhCdCkmJkJ0PHk/eTpC''@;'; put 'put ''dH0sYXV0b1Jvd1NpemU6ITEscmVhZE9ubHk6ITAsZWRpdG9yOiExLGNvcHlQYXN0ZTohMSxtYXhDb2xzOjEsY29sdW1uczpbe2RhdGE6Im5hbWUiLHJlbmRlcmVyOmZ1bmN0aW9uKEJ0LCR0LGhuLERuLGlyLHByKXtyZXR1cm4gaC5tZW51SXRlbVJlbmRlcmVyKEJ0LCR0LGhuLERuLGlyLHBy''@;'; put 'put ''KX19XSxyZW5kZXJBbGxSb3dzOiEwLGZyYWdtZW50U2VsZWN0aW9uOiExLG91dHNpZGVDbGlja0Rlc2VsZWN0czohMSxkaXNhYmxlVmlzdWFsU2VsZWN0aW9uOiJhcmVhIixsYXlvdXREaXJlY3Rpb246dGhpcy5ob3QuaXNSdGwoKT8icnRsIjoibHRyIixhZnRlck9uQ2VsbE1vdXNlT3Zlcjpm''@;'; put 'put ''dW5jdGlvbihCdCwkdCl7aC5pc0FsbFN1Yk1lbnVzQ2xvc2VkKCk/digkdC5yb3cpOmgub3BlblN1Yk1lbnUoJHQucm93KX0scm93SGVpZ2h0czpmdW5jdGlvbihCdCl7cmV0dXJuIElbQnRdLm5hbWU9PT16bD8xOjIzfSxhZnRlck9uQ2VsbENvbnRleHRNZW51OmZ1bmN0aW9uKEJ0KXtCdC5w''@;'; put 'put ''cmV2ZW50RGVmYXVsdCgpLGgzZSgpJiZqJiZoLmhhc1NlbGVjdGVkSXRlbSgpJiZoLmNsb3NlKCEwKX0sYmVmb3JlT25DZWxsTW91c2VVcDpmdW5jdGlvbihCdCl7aC5oYXNTZWxlY3RlZEl0ZW0oKSYmKGo9IWguaXNDb21tYW5kUGFzc2l2ZShoLmdldFNlbGVjdGVkSXRlbSgpKSxoLmV4ZWN1''@;'; put 'put ''dGVDb21tYW5kKEJ0KSl9LGFmdGVyT25DZWxsTW91c2VVcDpmdW5jdGlvbihCdCl7KCFoM2UoKXx8IVB3KEJ0KSkmJmomJmguaGFzU2VsZWN0ZWRJdGVtKCkmJihtOCgpfHxmM2UoKT9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGguY2xvc2UoITApfSwzMjUpOmguY2xvc2UoITApKX0s''@;'; put 'put ''YWZ0ZXJVbmxpc3RlbjpmdW5jdGlvbigpeyFoLmhhc1NlbGVjdGVkSXRlbSgpJiZoLmlzT3BlbmVkKCkmJmguaG90TWVudS5saXN0ZW4oKX19O3RoaXMub3JpZ091dHNpZGVDbGlja0Rlc2VsZWN0cz10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cyx0aGlzLmhv''@;'; put 'put ''dC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cz0hMSx0aGlzLmhvdE1lbnU9bmV3IHY2ZSh0aGlzLmNvbnRhaW5lcixjZSksdGhpcy5ob3RNZW51LmFkZEhvb2soImFmdGVySW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVySW5pdCgpfSksdGhpcy5ob3RNZW51LmFk''@;'; put 'put ''ZEhvb2soImFmdGVyU2VsZWN0aW9uIixmdW5jdGlvbigpe3JldHVybiBoLm9uQWZ0ZXJTZWxlY3Rpb24uYXBwbHkoaCxhcmd1bWVudHMpfSksdGhpcy5ob3RNZW51LmluaXQoKSx0aGlzLmhvdE1lbnUubGlzdGVuKCk7dmFyIF9lPXRoaXMuaG90TWVudS5nZXRTaG9ydGN1dE1hbmFnZXIoKSxS''@;'; put 'put ''ZT1fZS5hZGRDb250ZXh0KCJtZW51IiksS2U9d3hlKHd4ZSh7fSx7Z3JvdXA6Im1lbnUifSkse30se3J1bk9ubHlJZjpmdW5jdGlvbihCdCl7cmV0dXJuITE9PT1keihCdC50YXJnZXQpfHwhMT09PWguY29udGFpbmVyLmNvbnRhaW5zKEJ0LnRhcmdldCl9fSk7X2Uuc2V0QWN0aXZlQ29udGV4''@;'; put 'put ''dE5hbWUoIm1lbnUiKSxSZS5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazpmdW5jdGlvbigpe2gua2V5RXZlbnQ9ITAsaC5jbG9zZSgpLGgua2V5RXZlbnQ9ITF9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgQnQ9aC5ob3RN''@;'; put 'put ''ZW51LmdldFNlbGVjdGVkTGFzdCgpO2gua2V5RXZlbnQ9ITAsQnQ/aC5zZWxlY3ROZXh0Q2VsbChCdFswXSxCdFsxXSk6aC5zZWxlY3RGaXJzdENlbGwoKSxoLmtleUV2ZW50PSExfX0se2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBCdD1oLmhvdE1lbnUuZ2V0''@;'; put 'put ''U2VsZWN0ZWRMYXN0KCk7aC5rZXlFdmVudD0hMCxCdD9oLnNlbGVjdFByZXZDZWxsKEJ0WzBdLEJ0WzFdKTpoLnNlbGVjdExhc3RDZWxsKCksaC5rZXlFdmVudD0hMX19LHtrZXlzOltbIkFycm93UmlnaHQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgQnQ9aC5ob3RNZW51LmdldFNlbGVj''@;'; put 'put ''dGVkTGFzdCgpO2lmKGgua2V5RXZlbnQ9ITAsQnQpe3ZhciAkdD1oLm9wZW5TdWJNZW51KEJ0WzBdKTskdCYmJHQuc2VsZWN0Rmlyc3RDZWxsKCl9aC5rZXlFdmVudD0hMX19LHtrZXlzOltbIkFycm93TGVmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBCdD1oLmhvdE1lbnUuZ2V0U2Vs''@;'; put 'put ''ZWN0ZWRMYXN0KCk7aC5rZXlFdmVudD0hMCxCdCYmaC5pc1N1Yk1lbnUoKSYmKGguY2xvc2UoKSxoLnBhcmVudE1lbnUmJmgucGFyZW50TWVudS5ob3RNZW51Lmxpc3RlbigpKSxoLmtleUV2ZW50PSExfX0se2tleXM6W1siRW50ZXIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oQnQpe3ZhciAkdD1o''@;'; put 'put ''LmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCk7aC5rZXlFdmVudD0hMCxoLmhvdE1lbnUuZ2V0U291cmNlRGF0YUF0Um93KCR0WzBdKS5zdWJtZW51fHwoaC5leGVjdXRlQ29tbWFuZChCdCksaC5jbG9zZSghMCkpLGgua2V5RXZlbnQ9ITF9fSx7a2V5czpbWyJQYWdlVXAiXV0sY2FsbGJhY2s6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgQnQ9aC5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgpO2gua2V5RXZlbnQ9ITAsQnQ/aC5ob3RNZW51LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgtaC5ob3RNZW51LmNvdW50VmlzaWJsZVJvd3MoKSwwKTpoLnNlbGVjdEZpcnN0Q2VsbCgpLGgua2V5RXZlbnQ9ITF9''@;'; put 'put ''fSx7a2V5czpbWyJQYWdlRG93biJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBCdD1oLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCk7aC5rZXlFdmVudD0hMCxCdD9oLmhvdE1lbnUuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KGguaG90TWVudS5jb3VudFZpc2libGVSb3dzKCksMCk6aC5z''@;'; put 'put ''ZWxlY3RMYXN0Q2VsbCgpLGgua2V5RXZlbnQ9ITF9fV0sS2UpLHRoaXMuYmxvY2tNYWluVGFibGVDYWxsYmFja3MoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyT3BlbiIpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTshdGhpcy5pc09wZW5lZCgpfHwoaCYmdGhpcy5wYXJlbnRNZW51P3RoaXMucGFyZW50TWVudS5jbG9zZSgpOih0aGlzLmNsb3NlQWxsU3ViTWVudXMoKSx0aGlzLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnJlbGVhc2VN''@;'; put 'put ''YWluVGFibGVDYWxsYmFja3MoKSx0aGlzLmhvdE1lbnUuZGVzdHJveSgpLHRoaXMuaG90TWVudT1udWxsLHRoaXMuaG90LmdldFNldHRpbmdzKCkub3V0c2lkZUNsaWNrRGVzZWxlY3RzPXRoaXMub3JpZ091dHNpZGVDbGlja0Rlc2VsZWN0cyx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xv''@;'; put 'put ''c2UiKSx0aGlzLnBhcmVudE1lbnUmJnRoaXMucGFyZW50TWVudS5ob3RNZW51Lmxpc3RlbigpKSl9fSx7a2V5OiJvcGVuU3ViTWVudSIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoIXRoaXMuaG90TWVudSlyZXR1cm4hMTt2YXIgdj10aGlzLmhvdE1lbnUuZ2V0Q2VsbChoLDApO2lmKHRoaXMuY2xv''@;'; put 'put ''c2VBbGxTdWJNZW51cygpLCF2fHwhZnVuY3Rpb24geWF0KGQpe3JldHVybiBYYShkLCJodFN1Ym1lbnUiKX0odikpcmV0dXJuITE7dmFyIHk9dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyhoKSxDPW5ldyBkKHRoaXMuaG90LHtwYXJlbnQ6dGhpcyxuYW1lOnkubmFtZSxjbGFzc05h''@;'; put 'put ''bWU6dGhpcy5vcHRpb25zLmNsYXNzTmFtZSxrZWVwSW5WaWV3cG9ydDohMCxjb250YWluZXI6dGhpcy5vcHRpb25zLmNvbnRhaW5lcn0pO3JldHVybiBDLnNldE1lbnVJdGVtcyh5LnN1Ym1lbnUuaXRlbXMpLEMub3BlbigpLEMuc2V0UG9zaXRpb24odi5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo''@;'; put 'put ''KSksdGhpcy5ob3RTdWJNZW51c1t5LmtleV09QyxDfX0se2tleToiY2xvc2VTdWJNZW51Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLmhvdE1lbnUuZ2V0U291cmNlRGF0YUF0Um93KGgpLHk9dGhpcy5ob3RTdWJNZW51c1t2LmtleV07eSYmKHkuZGVzdHJveSgpLGRlbGV0ZSB0aGlz''@;'; put 'put ''LmhvdFN1Yk1lbnVzW3Yua2V5XSl9fSx7a2V5OiJjbG9zZUFsbFN1Yk1lbnVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXM7R3IodGhpcy5ob3RNZW51LmdldERhdGEoKSxmdW5jdGlvbih2LHkpe3JldHVybiBoLmNsb3NlU3ViTWVudSh5KX0pfX0se2tleToiaXNBbGxTdWJNZW51c0Ns''@;'; put 'put ''b3NlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PU9iamVjdC5rZXlzKHRoaXMuaG90U3ViTWVudXMpLmxlbmd0aH19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5jb250YWluZXIucGFyZW50Tm9kZTt0aGlzLmNsZWFyTG9jYWxIb29rcygpLHRoaXMu''@;'; put 'put ''Y2xvc2UoKSx0aGlzLnBhcmVudE1lbnU9bnVsbCx0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCksaCYmaC5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lcil9fSx7a2V5OiJpc09wZW5lZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuaG90TWVudX19LHtrZXk6ImV4ZWN1''@;'; put 'put ''dGVDb21tYW5kIix2YWx1ZTpmdW5jdGlvbihoKXtpZih0aGlzLmlzT3BlbmVkKCkmJnRoaXMuaGFzU2VsZWN0ZWRJdGVtKCkpe3ZhciB2PXRoaXMuZ2V0U2VsZWN0ZWRJdGVtKCk7aWYodGhpcy5ydW5Mb2NhbEhvb2tzKCJzZWxlY3QiLHYsaCksIXRoaXMuaXNDb21tYW5kUGFzc2l2ZSh2KSl7''@;'; put 'put ''dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpLEM9eT9mdW5jdGlvbiBBYXQoZCl7cmV0dXJuIFRsKGQsZnVuY3Rpb24oZyl7cmV0dXJue3N0YXJ0OmcuZ2V0VG9wU3RhcnRDb3JuZXIoKSxlbmQ6Zy5nZXRCb3R0b21FbmRDb3JuZXIoKX19KX0oeSk6W107dGhpcy5ydW5Mb2NhbEhv''@;'; put 'put ''b2tzKCJleGVjdXRlQ29tbWFuZCIsdi5rZXksQyxoKSx0aGlzLmlzU3ViTWVudSgpJiZ0aGlzLnBhcmVudE1lbnUucnVuTG9jYWxIb29rcygiZXhlY3V0ZUNvbW1hbmQiLHYua2V5LEMsaCl9fX19LHtrZXk6ImlzQ29tbWFuZFBhc3NpdmUiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWguaXND''@;'; put 'put ''b21tYW5kLHk9aC5uYW1lLEM9aC5kaXNhYmxlZCxJPWguc3VibWVudSxqPSEwPT09Q3x8ImZ1bmN0aW9uIj09dHlwZW9mIEMmJiEwPT09Qy5jYWxsKHRoaXMuaG90KTtyZXR1cm4hMT09PXZ8fHk9PT16bHx8ITA9PT1qfHxJfX0se2tleToic2V0UG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgp''@;'; put 'put ''e3ZhciB2PW5ldyB3bHQoaCx0aGlzLmNvbnRhaW5lci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KTt0aGlzLm9wdGlvbnMua2VlcEluVmlld3BvcnQ/KHYuZml0c0JlbG93KHRoaXMuY29udGFpbmVyKT90aGlzLnNldFBvc2l0aW9uQmVsb3dDdXJzb3Iodik6di5maXRzQWJvdmUodGhpcy5j''@;'; put 'put ''b250YWluZXIpP3RoaXMuc2V0UG9zaXRpb25BYm92ZUN1cnNvcih2KTp0aGlzLnNldFBvc2l0aW9uQmVsb3dDdXJzb3IodiksdGhpcy5ob3QuaXNMdHIoKT90aGlzLnNldEhvcml6b250YWxQb3NpdGlvbkZvckx0cih2KTp0aGlzLnNldEhvcml6b250YWxQb3NpdGlvbkZvclJ0bCh2KSk6KHRo''@;'; put 'put ''aXMuc2V0UG9zaXRpb25CZWxvd0N1cnNvcih2KSx0aGlzLnNldFBvc2l0aW9uT25SaWdodE9mQ3Vyc29yKHYpKX19LHtrZXk6InNldEhvcml6b250YWxQb3NpdGlvbkZvclJ0bCIsdmFsdWU6ZnVuY3Rpb24oaCl7aC5maXRzT25MZWZ0KHRoaXMuY29udGFpbmVyKT90aGlzLnNldFBvc2l0aW9u''@;'; put 'put ''T25MZWZ0T2ZDdXJzb3IoaCk6dGhpcy5zZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvcihoKX19LHtrZXk6InNldEhvcml6b250YWxQb3NpdGlvbkZvckx0ciIsdmFsdWU6ZnVuY3Rpb24oaCl7aC5maXRzT25SaWdodCh0aGlzLmNvbnRhaW5lcik/dGhpcy5zZXRQb3NpdGlvbk9uUmlnaHRPZkN1''@;'; put 'put ''cnNvcihoKTp0aGlzLnNldFBvc2l0aW9uT25MZWZ0T2ZDdXJzb3IoaCl9fSx7a2V5OiJzZXRQb3NpdGlvbkFib3ZlQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLm9mZnNldC5hYm92ZStoLnRvcC10aGlzLmNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7dGhpcy5pc1N1Yk1lbnUo''@;'; put 'put ''KSYmKHY9aC50b3AraC5jZWxsSGVpZ2h0LXRoaXMuY29udGFpbmVyLm9mZnNldEhlaWdodCszKSx0aGlzLmNvbnRhaW5lci5zdHlsZS50b3A9IiIuY29uY2F0KHYsInB4Iil9fSx7a2V5OiJzZXRQb3NpdGlvbkJlbG93Q3Vyc29yIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLm9mZnNl''@;'; put 'put ''dC5iZWxvdytoLnRvcCsxO3RoaXMuaXNTdWJNZW51KCkmJih2PWgudG9wLTEpLHRoaXMuY29udGFpbmVyLnN0eWxlLnRvcD0iIi5jb25jYXQodiwicHgiKX19LHtrZXk6InNldFBvc2l0aW9uT25SaWdodE9mQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1oLmxlZnQ7aWYodGhpcy5p''@;'; put 'put ''c1N1Yk1lbnUoKSl7dmFyIHk9dGhpcy5wYXJlbnRNZW51LmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt2Kz1oLmNlbGxXaWR0aCt5LnJpZ2h0LShoLmxlZnQraC5jZWxsV2lkdGgpfWVsc2Ugdis9dGhpcy5vZmZzZXQucmlnaHQ7dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0i''@;'; put 'put ''Ii5jb25jYXQodiwicHgiKX19LHtrZXk6InNldFBvc2l0aW9uT25MZWZ0T2ZDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMub2Zmc2V0LmxlZnQraC5sZWZ0LXRoaXMuY29udGFpbmVyLm9mZnNldFdpZHRoO2lmKHRoaXMuaXNTdWJNZW51KCkpe3ZhciB5PXRoaXMucGFyZW50''@;'; put 'put ''TWVudS5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7di09aC5sZWZ0LXkubGVmdH10aGlzLmNvbnRhaW5lci5zdHlsZS5sZWZ0PSIiLmNvbmNhdCh2LCJweCIpfX0se2tleToic2VsZWN0Rmlyc3RDZWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuaG90TWVudS5nZXRD''@;'; put 'put ''ZWxsKDAsMCk7QnRlKGgpfHxQdGUoaCl8fEZ0ZShoKT90aGlzLnNlbGVjdE5leHRDZWxsKDAsMCk6dGhpcy5ob3RNZW51LnNlbGVjdENlbGwoMCwwKX19LHtrZXk6InNlbGVjdExhc3RDZWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuaG90TWVudS5jb3VudFJvd3MoKS0xLHY9dGhp''@;'; put 'put ''cy5ob3RNZW51LmdldENlbGwoaCwwKTtCdGUodil8fFB0ZSh2KXx8RnRlKHYpP3RoaXMuc2VsZWN0UHJldkNlbGwoaCwwKToodGhpcy5ob3RNZW51LnNlbGVjdENlbGwoaCwwLHZvaWQgMCx2b2lkIDAsITEpLHRoaXMuaG90TWVudS5zY3JvbGxWaWV3cG9ydFRvKGgsMCwhMCwhMSkpfX0se2tl''@;'; put 'put ''eToic2VsZWN0TmV4dENlbGwiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9aCsxLEM9eTx0aGlzLmhvdE1lbnUuY291bnRSb3dzKCk/dGhpcy5ob3RNZW51LmdldENlbGwoeSx2KTpudWxsOyFDfHwoQnRlKEMpfHxQdGUoQyl8fEZ0ZShDKT90aGlzLnNlbGVjdE5leHRDZWxsKHksdik6dGhp''@;'; put 'put ''cy5ob3RNZW51LnNlbGVjdENlbGwoeSx2KSl9fSx7a2V5OiJzZWxlY3RQcmV2Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1oLTEsQz15Pj0wP3RoaXMuaG90TWVudS5nZXRDZWxsKHksdik6bnVsbDshQ3x8KEJ0ZShDKXx8UHRlKEMpfHxGdGUoQyk/dGhpcy5zZWxlY3RQcmV2Q2Vs''@;'; put 'put ''bCh5LHYpOnRoaXMuaG90TWVudS5zZWxlY3RDZWxsKHksdikpfX0se2tleToibWVudUl0ZW1SZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJLGope3ZhciBEbixjZT10aGlzLF9lPWguZ2V0U291cmNlRGF0YUF0Um93KHkpLFJlPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJkaXYiKSxCdD1mdW5jdGlvbihEbil7cmV0dXJuIERuLmRpc2FibGVTZWxlY3Rpb259LCR0PWo7ImZ1bmN0aW9uIj09dHlwZW9mICR0JiYoJHQ9JHQuY2FsbCh0aGlzLmhvdCkpLENwKHYpLFAwKFJlLCJodEl0ZW1XcmFwcGVyIiksdi5hcHBlbmRDaGlsZChSZSksRG49X2UsbmV3''@;'; put 'put ''IFJlZ0V4cCh6bCwiaSIpLnRlc3QoRG4ubmFtZSk/UDAodiwiaHRTZXBhcmF0b3IiKToiZnVuY3Rpb24iPT10eXBlb2YgX2UucmVuZGVyZXI/KFAwKHYsImh0Q3VzdG9tTWVudVJlbmRlcmVyIiksdi5hcHBlbmRDaGlsZChfZS5yZW5kZXJlcihoLFJlLHksQyxJLCR0KSkpOk93KFJlLCR0KSxm''@;'; put 'put ''dW5jdGlvbihEbil7cmV0dXJuITA9PT1Ebi5kaXNhYmxlZHx8ImZ1bmN0aW9uIj09dHlwZW9mIERuLmRpc2FibGVkJiYhMD09PURuLmRpc2FibGVkLmNhbGwoY2UuaG90KX0oX2UpPyhQMCh2LCJodERpc2FibGVkIiksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih2LCJtb3Vz''@;'; put 'put ''ZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBoLmRlc2VsZWN0Q2VsbCgpfSkpOkJ0KF9lKT8oUDAodiwiaHRTZWxlY3Rpb25EaXNhYmxlZCIpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5kZXNlbGVjdENlbGwo''@;'; put 'put ''KX0pKTpmdW5jdGlvbihEbil7cmV0dXJuIHMxKERuLCJzdWJtZW51Iil9KF9lKT8oUDAodiwiaHRTdWJtZW51IiksQnQoX2UpP3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5kZXNlbGVjdENlbGwoKX0pOnRoaXMu''@;'; put 'put ''ZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5zZWxlY3RDZWxsKHksQyx2b2lkIDAsdm9pZCAwLCExLCExKX0pKToodWwodixbImh0U3VibWVudSIsImh0RGlzYWJsZWQiXSksQnQoX2UpP3RoaXMuZXZlbnRNYW5hZ2VyLmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIodiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5kZXNlbGVjdENlbGwoKX0pOnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5zZWxlY3RDZWxsKHksQyx2b2lkIDAsdm9pZCAw''@;'; put 'put ''LCExLCExKX0pKX19LHtrZXk6ImNyZWF0ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQyxoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHY9dGhpcy5vcHRpb25zLmNvbnRhaW5lci5vd25lckRvY3VtZW50LHk9aDty''@;'; put 'put ''ZXR1cm4geSYmKFUyKHkpJiYoeT1udWxsPT09KHk9eS5jYWxsKHRoaXMuaG90KSl8fHUxKHkpPyIiOnkudG9TdHJpbmcoKSkseT15LnJlcGxhY2UoL1teQS16MC05XS9nLCJfIikseT0iIi5jb25jYXQodGhpcy5vcHRpb25zLmNsYXNzTmFtZSwiU3ViXyIpLmNvbmNhdCh5KSxDPXYucXVlcnlT''@;'; put 'put ''ZWxlY3RvcigiLiIuY29uY2F0KHRoaXMub3B0aW9ucy5jbGFzc05hbWUsIi4iKS5jb25jYXQoeSkpKSxDfHwoUDAoQz12LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCJodE1lbnUgIi5jb25jYXQodGhpcy5vcHRpb25zLmNsYXNzTmFtZSkpLHkmJlAwKEMseSksdGhpcy5vcHRpb25zLmNvbnRhaW5l''@;'; put 'put ''ci5hcHBlbmRDaGlsZChDKSksQ319LHtrZXk6ImJsb2NrTWFpblRhYmxlQ2FsbGJhY2tzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2s9ZnVuY3Rpb24oKXt9LHRoaXMuaG90LmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsdGhpcy5fYWZ0ZXJTY3Jv''@;'; put 'put ''bGxDYWxsYmFjayksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLHRoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2spfX0se2tleToicmVsZWFzZU1haW5UYWJsZUNhbGxiYWNrcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrJiYodGhp''@;'; put 'put ''cy5ob3QucmVtb3ZlSG9vaygiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5Iix0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrKSx0aGlzLmhvdC5yZW1vdmVIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsdGhpcy5fYWZ0ZXJTY3JvbGxDYWxsYmFjayksdGhpcy5fYWZ0ZXJTY3JvbGxDYWxsYmFj''@;'; put 'put ''az1udWxsKX19LHtrZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuaG90TWVudS52aWV3Ll93dC53dFRhYmxlLHY9dGhpcy5ob3RNZW51LmdldFNldHRpbmdzKCkuZGF0YSx5PWguaGlkZXIuc3R5bGUsQz1oLmhvbGRlci5zdHlsZSxJPXBhcnNlSW50KHkud2lk''@;'; put 'put ''dGgsMTApLGo9RXUodixmdW5jdGlvbihjZSxfZSl7cmV0dXJuIGNlKyhfZS5uYW1lPT09emw/MToyNil9LDApO0Mud2lkdGg9IiIuY29uY2F0KEkrMywicHgiKSxDLmhlaWdodD0iIi5jb25jYXQoaiszLCJweCIpLHkuaGVpZ2h0PUMuaGVpZ2h0fX0se2tleToib25BZnRlclNlbGVjdGlvbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJKXshMT09PXRoaXMua2V5RXZlbnQmJihJLnZhbHVlPSEwKX19LHtrZXk6Im9uRG9jdW1lbnRNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKGgpeyF0aGlzLmlzT3BlbmVkKCl8fCh0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSYmdGhpcy5ob3RNZW51JiYh''@;'; put 'put ''RHcoaC50YXJnZXQsdGhpcy5ob3RNZW51LnJvb3RFbGVtZW50KXx8KHRoaXMuaXNBbGxTdWJNZW51c0Nsb3NlZCgpfHx0aGlzLmlzU3ViTWVudSgpKSYmIUR3KGgudGFyZ2V0LCIuaHRNZW51IikpJiZ0aGlzLmNsb3NlKCEwKX19LHtrZXk6Im9uRG9jdW1lbnRDb250ZXh0TWVudSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCl7IXRoaXMuaXNPcGVuZWQoKXx8WGEoaC50YXJnZXQsImh0Q29yZSIpJiZEdyhoLnRhcmdldCx0aGlzLmhvdE1lbnUucm9vdEVsZW1lbnQpJiZoLnByZXZlbnREZWZhdWx0KCl9fV0pLGR9KCk7STIoa3hlLHJkKTtjb25zdCBOOGU9a3hlO2Z1bmN0aW9uIFY4ZShkKXtyZXR1''@;'; put 'put ''cm4oVjhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1i''@;'; put 'put ''b2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gU3hlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYm''@;'; put 'put ''Jih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gY00oKXtyZXR1cm4gY009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUVsdChnLGgp''@;'; put 'put ''O2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sY00uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEVsdChkLGcpe2Zvcig7IU9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9enYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gajhlKGQsZyl7cmV0dXJuKGo4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2''@;'; put 'put ''Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIElsdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVY4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0''@;'; put 'put ''dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gTXhlKGQpfWZ1bmN0aW9uIE14ZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9''@;'; put 'put ''ZnVuY3Rpb24genYoZCl7cmV0dXJuKHp2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIFl0ZT0iY29udGV4dE1lbnUiO1ZvLmdl''@;'; put 'put ''dFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29udGV4dE1lbnVTaG93IiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVTaG93IiksVm8uZ2V0''@;'; put 'put ''U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVIaWRlIiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVFeGVjdXRlIik7dmFyIEV4ZT1mdW5jdGlvbihkKXshZnVuY3Rpb24geGx0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51''@;'; put 'put ''bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJh''@;'; put 'put ''YmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmo4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFRsdChkKXt2YXIgZz1mdW5jdGlvbiBEbHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwh''@;'; put 'put ''MH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj16dihkKTtpZihnKXt2YXIgQz16dih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gSWx0''@;'; put 'put ''KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBTbHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSku''@;'; put 'put ''ZXZlbnRNYW5hZ2VyPW5ldyBQMShNeGUoeSkpLHkuY29tbWFuZEV4ZWN1dG9yPW5ldyBjeGUoeS5ob3QpLHkuaXRlbXNGYWN0b3J5PW51bGwseS5tZW51PW51bGwseX1yZXR1cm4gZnVuY3Rpb24gTWx0KGQsZyxoKXtnJiZTeGUoZC5wcm90b3R5cGUsZyksaCYmU3hlKGQsaCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbWXRlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlz''@;'; put 'put ''O2lmKCF0aGlzLmVuYWJsZWQpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKClbWXRlXTsiZnVuY3Rpb24iPT10eXBlb2YgQy5jYWxsYmFjayYmdGhpcy5jb21tYW5kRXhlY3V0b3Iuc2V0Q29tbW9uQ2FsbGJhY2soQy5jYWxsYmFjayksdGhpcy5tZW51PW5ldyBOOGUodGhpcy5ob3Qse2Ns''@;'; put 'put ''YXNzTmFtZToiaHRDb250ZXh0TWVudSIsa2VlcEluVmlld3BvcnQ6ITAsY29udGFpbmVyOkMudWlDb250YWluZXJ8fHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5fSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYmVmb3JlT3BlbiIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1lbnVCZWZvcmVP''@;'; put 'put ''cGVuKCl9KSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlck9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NZW51QWZ0ZXJPcGVuKCl9KSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWVudUFmdGVyQ2xvc2UoKX0pLHRoaXMu''@;'; put 'put ''bWVudS5hZGRMb2NhbEhvb2soImV4ZWN1dGVDb21tYW5kIixmdW5jdGlvbigpe2Zvcih2YXIgSSxqPWFyZ3VtZW50cy5sZW5ndGgsY2U9bmV3IEFycmF5KGopLF9lPTA7X2U8ajtfZSsrKWNlW19lXT1hcmd1bWVudHNbX2VdO3JldHVybihJPXkuZXhlY3V0ZUNvbW1hbmQpLmNhbGwuYXBwbHko''@;'; put 'put ''SSxbeV0uY29uY2F0KGNlKSl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29udGV4dE1lbnUiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uQWZ0ZXJPbkNlbGxDb250ZXh0TWVudShJKX0pLGNNKHp2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtr''@;'; put 'put ''ZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLGNNKHp2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiYodGhpcy5tZW51LmRlc3Ryb3koKSx0aGlzLm1lbnU9bnVsbCksY00oenYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYodGhpcy5tZW51JiYodGhp''@;'; put 'put ''cy5wcmVwYXJlTWVudUl0ZW1zKCksdGhpcy5tZW51Lm9wZW4oKSx0aGlzLm1lbnUuaXNPcGVuZWQoKSkpe3ZhciBDPTAsST0wO2lmKHRoaXMuaG90LnJvb3REb2N1bWVudCE9PXRoaXMubWVudS5jb250YWluZXIub3duZXJEb2N1bWVudCl7dmFyIGNlPXRoaXMuaG90LnJvb3RXaW5kb3cuZnJh''@;'; put 'put ''bWVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFJlPWNlLmxlZnQ7Qz1jZS50b3AtRU8oeS52aWV3KSxJPVJlLUhTKHkudmlldyl9ZWxzZSBDPS0xKkVPKHRoaXMubWVudS5ob3RNZW51LnJvb3RXaW5kb3cpLEk9LTEqSFModGhpcy5tZW51LmhvdE1lbnUucm9vdFdpbmRvdyk7dGhp''@;'; put 'put ''cy5tZW51LnNldFBvc2l0aW9uKHt0b3A6cGFyc2VJbnQoeS5wYWdlWSwxMCkrQyxsZWZ0OnBhcnNlSW50KHkucGFnZVgsMTApK0l9KX19fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5tZW51fHwodGhpcy5tZW51LmNsb3NlKCksdGhpcy5pdGVtc0ZhY3Rvcnk9bnVsbCl9''@;'; put 'put ''fSx7a2V5OiJleGVjdXRlQ29tbWFuZCIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM7bnVsbD09PXRoaXMuaXRlbXNGYWN0b3J5JiZ0aGlzLnByZXBhcmVNZW51SXRlbXMoKTtmb3IodmFyIEk9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheShJPjE/SS0xOjApLGNlPTE7Y2U8STtjZSsrKWpb''@;'; put 'put ''Y2UtMV09YXJndW1lbnRzW2NlXTsoQz10aGlzLmNvbW1hbmRFeGVjdXRvcikuZXhlY3V0ZS5hcHBseShDLFt5XS5jb25jYXQoaikpfX0se2tleToicHJlcGFyZU1lbnVJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuaXRlbXNGYWN0b3J5PW5ldyB2eGUodGhpcy5ob3Qs''@;'; put 'put ''aC5ERUZBVUxUX0lURU1TKTt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW1l0ZV0sST17aXRlbXM6dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoQyl9O3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLEkpLHRoaXMuaXRlbXNGYWN0b3J5LnNl''@;'; put 'put ''dFByZWRlZmluZWRJdGVtcyhJLml0ZW1zKTt2YXIgaj10aGlzLml0ZW1zRmFjdG9yeS5nZXRJdGVtcyhDKTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsaiksdGhpcy5tZW51LnNldE1lbnVJdGVtcyhqKSxHcihqLGZ1bmN0aW9uKGNlKXtyZXR1cm4geS5j''@;'; put 'put ''b21tYW5kRXhlY3V0b3IucmVnaXN0ZXJDb21tYW5kKGNlLmtleSxjZSl9KX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxDb250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSxJPUMucm93SGVhZGVycyxqPUMuY29sSGVhZGVycyxfZT15LnRhcmdl''@;'; put 'put ''dDt0aGlzLmNsb3NlKCksIVhhKF9lLCJoYW5kc29udGFibGVJbnB1dCIpJiYoeS5wcmV2ZW50RGVmYXVsdCgpLHkuc3RvcFByb3BhZ2F0aW9uKCksKEl8fGp8fGZ1bmN0aW9uIGNlKFJlKXtyZXR1cm4iVEQiPT09UmUubm9kZU5hbWV8fCJURCI9PT1SZS5wYXJlbnROb2RlLm5vZGVOYW1lfShf''@;'; put 'put ''ZSl8fFhhKF9lLCJjdXJyZW50IikmJlhhKF9lLCJ3dEJvcmRlciIpKSYmdGhpcy5vcGVuKHkpKX19LHtrZXk6Im9uTWVudUJlZm9yZU9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbnRleHRNZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRl''@;'; put 'put ''ck9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29udGV4dE1lbnVTaG93Iix0aGlzKX19LHtrZXk6Im9uTWVudUFmdGVyQ2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QubGlzdGVuKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29udGV4dE1l''@;'; put 'put ''bnVIaWRlIix0aGlzKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgpLHRoaXMubWVudSYmdGhpcy5tZW51LmRlc3Ryb3koKSxjTSh6dihoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBZdGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA3MH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bInBsdWdpbjpBdXRvQ29sdW1uU2l6ZSJdfX0se2tleToiREVGQVVMVF9JVEVNUyIsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuW3p0ZSxHdGUsemwsWnosenosemwsWnRlLFd6LHpsLFd0ZSxqdGUsemwsR3osemwseHBdfX1dKSxofShHcyk7ZnVuY3Rpb24geHhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8''@;'; put 'put ''ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19RXhlLlNFUEFSQVRPUj17bmFtZTp6bH07dmFyIEZsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXsoZnVuY3Rpb24gQmx0KGQsZyl7aWYoIShk''@;'; put 'put ''IGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuZGF0YT17fX1yZXR1cm4gZnVuY3Rpb24gUGx0KGQsZyxoKXtnJiZ4eGUoZC5wcm90b3R5cGUsZyksaCYmeHhlKGQsaCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5kYXRhW2hdPXZ9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5kYXRhW2hdfHx2b2lkIDB9fV0pLGR9''@;'; put 'put ''KCk7ZnVuY3Rpb24gVHhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2Lmtl''@;'; put 'put ''eSx2KX19ZnVuY3Rpb24gSGx0KGQsZyxoKXtyZXR1cm4gZyYmVHhlKGQucHJvdG90eXBlLGcpLGgmJlR4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9dmFyIFZsdD1IbHQoZnVuY3Rpb24gZCgpeyhmdW5jdGlvbiBObHQoZCxnKXtp''@;'; put 'put ''ZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5jbGlwYm9hcmREYXRhPW5ldyBGbHR9KTtmdW5jdGlvbiBJeGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFy''@;'; put 'put ''IHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgWjhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gamx0''@;'; put 'put ''KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucm9vdERvY3VtZW50PWcuZGVmYXVsdFZpZXc/ZzpnLm93bmVyRG9jdW1lbnQsdGhpcy5tYWluRWxlbWVudD1udWxs''@;'; put 'put ''LHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyBQMSh0aGlzKSx0aGlzLmxpc3RlbmVyc0NvdW50PW5ldyBXZWFrU2V0LHRoaXMuY29udGFpbmVyPWd9cmV0dXJuIGZ1bmN0aW9uIFpsdChkLGcsaCl7ZyYmSXhlKGQucHJvdG90eXBlLGcpLGgmJkl4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJ1c2VTZWNvbmRhcnlFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWZ1bmN0aW9uIFdsdChkKXt2YXIgZz1RdGUuZ2V0KGQpO2lmKGcpcmV0dXJuIGcucGFyZW50RWxlbWVudHx8ZC5hcHBlbmRDaGlsZChnKSxnO3Zh''@;'; put 'put ''ciB2PShkLmRlZmF1bHRWaWV3P2Q6ZC5vd25lckRvY3VtZW50KS5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO3JldHVybiBRdGUuc2V0KGQsdiksdi5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwiIiksdi5jbGFzc05hbWU9IkhhbmRzb250YWJsZUNvcHlQYXN0ZSIsdi50YWJJbmRl''@;'; put 'put ''eD0tMSx2LmF1dG9jb21wbGV0ZT0ib2ZmIix2LndyYXA9ImhhcmQiLHYudmFsdWU9IiAiLGQuYXBwZW5kQ2hpbGQodiksdn0odGhpcy5jb250YWluZXIpO3RoaXMubGlzdGVuZXJzQ291bnQuaGFzKGgpfHwodGhpcy5saXN0ZW5lcnNDb3VudC5hZGQoaCksRHhlKHRoaXMuZXZlbnRNYW5hZ2Vy''@;'; put 'put ''LGgsdGhpcykpLHRoaXMubWFpbkVsZW1lbnQ9aH19LHtrZXk6InNldEZvY3VzYWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMubGlzdGVuZXJzQ291bnQuaGFzKGgpfHwodGhpcy5saXN0ZW5lcnNDb3VudC5hZGQoaCksRHhlKHRoaXMuZXZlbnRNYW5hZ2VyLGgsdGhpcykpLHRo''@;'; put 'put ''aXMubWFpbkVsZW1lbnQ9aH19LHtrZXk6ImdldEZvY3VzYWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFpbkVsZW1lbnR9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1haW5FbGVtZW50LnZhbHVlPSIgIixtOCgpfHxTX2UodGhpcy5tYWlu''@;'; put 'put ''RWxlbWVudCl9fV0pLGR9KCk7STIoWjhlLHJkKTt2YXIgVXRlPW5ldyBXZWFrTWFwLHo4ZT1mdW5jdGlvbihnLGgpe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gaC5ydW5Mb2NhbEhvb2tzKGcsdil9fTtmdW5jdGlvbiBEeGUoZCxnLGgpe2QuYWRkRXZlbnRMaXN0ZW5lcihnLCJjb3B5Iix6''@;'; put 'put ''OGUoImNvcHkiLGgpKSxkLmFkZEV2ZW50TGlzdGVuZXIoZywiY3V0Iix6OGUoImN1dCIsaCkpLGQuYWRkRXZlbnRMaXN0ZW5lcihnLCJwYXN0ZSIsejhlKCJwYXN0ZSIsaCkpfXZhciBRdGU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTHhlKGQpe2lmKGQgaW5zdGFuY2VvZiBaOGUpe3ZhciBnPVV0''@;'; put 'put ''ZS5nZXQoZC5jb250YWluZXIpO2lmKChnPWlzTmFOKGcpPzA6Zyk+MCYmKGctPTEpLGZ1bmN0aW9uIEdsdChkKXtkLmV2ZW50TWFuYWdlci5jbGVhcigpfShkKSxnPD0wKXtnPTA7dmFyIGg9UXRlLmdldChkLmNvbnRhaW5lcik7aCYmaC5wYXJlbnROb2RlJiYoaC5wYXJlbnROb2RlLnJlbW92''@;'; put 'put ''ZUNoaWxkKGgpLFF0ZS5kZWxldGUoZC5jb250YWluZXIpKSxkLm1haW5FbGVtZW50PW51bGx9VXRlLnNldChkLmNvbnRhaW5lcixnKX19ZnVuY3Rpb24gT3hlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2gr''@;'; put 'put ''Kyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gSnRlKGQpe3JldHVybihKdGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBSeGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVt''@;'; put 'put ''ZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBmTSgpe3JldHVybiBmTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3Qu''@;'; put 'put ''Z2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9cWx0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxmTS5hcHBseSh0aGlzLGFy''@;'; put 'put ''Z3VtZW50cyl9ZnVuY3Rpb24gcWx0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1HdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBHOGUoZCxnKXtyZXR1cm4oRzhlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gbnN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09SnRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBCeGUoZCl9ZnVuY3Rpb24gQnhlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2Vk''@;'; put 'put ''IC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBHdihkKXtyZXR1cm4oR3Y9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YoaCl9KShkKX1Wby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb3B5TGltaXQiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigibW9kaWZ5Q29weWFibGVSYW5nZSIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDdXQiKSxWby5nZXRTaW5nbGV0b24o''@;'; put 'put ''KS5yZWdpc3RlcigiYWZ0ZXJDdXQiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlUGFzdGUiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJQYXN0ZSIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb3B5IiksVm8uZ2V0U2luZ2xldG9uKCku''@;'; put 'put ''cmVnaXN0ZXIoImFmdGVyQ29weSIpO3ZhciBYdGU9ImNvcHlQYXN0ZSIsb3N0PVsiZnJhZ21lbnRTZWxlY3Rpb24iXSxoTT1uZXcgV2Vha01hcCxQeGU9Wyc8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkhhbmRzb250YWJsZSIvPicsJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+dGR7''@;'; put 'put ''d2hpdGUtc3BhY2U6bm9ybWFsfWJye21zby1kYXRhLXBsYWNlbWVudDpzYW1lLWNlbGx9PC9zdHlsZT4nXS5qb2luKCIiKSxzc3Q9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGVzdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBl''@;'; put 'put ''ciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZHOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiB0c3QoZCl7dmFyIGc9ZnVuY3Rpb24gcnN0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0p''@;'; put 'put ''cmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBm''@;'; put 'put ''dW5jdGlvbigpe3ZhciB5LHY9R3YoZCk7aWYoZyl7dmFyIEM9R3YodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG5zdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIg''@;'; put 'put ''eTtyZXR1cm4gZnVuY3Rpb24gS2x0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmNvbHVtbnNMaW1pdD0xLzAseS5jb3B5YWJsZVJhbmdl''@;'; put 'put ''cz1bXSx5LmZvY3VzYWJsZUVsZW1lbnQ9dm9pZCAwLHkucGFzdGVNb2RlPSJvdmVyd3JpdGUiLHkucm93c0xpbWl0PTEvMCx5LnVpQ29udGFpbmVyPXkuaG90LnJvb3REb2N1bWVudC5ib2R5LGhNLnNldChCeGUoeSkse2lzVHJpZ2dlcmVkQnlDb3B5OiExLGlzVHJpZ2dlcmVkQnlDdXQ6ITEs''@;'; put 'put ''aXNCZWdpbkVkaXRpbmc6ITEsaXNGcmFnbWVudFNlbGVjdGlvbkVuYWJsZWQ6ITF9KSx5fXJldHVybiBmdW5jdGlvbiAkbHQoZCxnLGgpe2cmJlJ4ZShkLnByb3RvdHlwZSxnKSxoJiZSeGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0o''@;'; put 'put ''aCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtYdGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGlu''@;'; put 'put ''Z3MoKSxJPUNbWHRlXSxqPUMuZnJhZ21lbnRTZWxlY3Rpb247aE0uZ2V0KHRoaXMpLmlzRnJhZ21lbnRTZWxlY3Rpb25FbmFibGVkPSEhaiwib2JqZWN0Ij09PUp0ZShJKSYmKHRoaXMucGFzdGVNb2RlPUkucGFzdGVNb2RlfHx0aGlzLnBhc3RlTW9kZSx0aGlzLnJvd3NMaW1pdD1pc05hTihJ''@;'; put 'put ''LnJvd3NMaW1pdCk/dGhpcy5yb3dzTGltaXQ6SS5yb3dzTGltaXQsdGhpcy5jb2x1bW5zTGltaXQ9aXNOYU4oSS5jb2x1bW5zTGltaXQpP3RoaXMuY29sdW1uc0xpbWl0OkkuY29sdW1uc0xpbWl0LHRoaXMudWlDb250YWluZXI9SS51aUNvbnRhaW5lcnx8dGhpcy51aUNvbnRhaW5lciksdGhp''@;'; put 'put ''cy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKF9lKXtyZXR1cm4geS5vbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyhfZSl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsTW91c2VVcCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVy''@;'; put 'put ''T25DZWxsTW91c2VVcCgpfSksdGhpcy5hZGRIb29rKCJhZnRlclNlbGVjdGlvbkVuZCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyU2VsZWN0aW9uRW5kKCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUtleURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVLZXlEb3duKCl9KSx0''@;'; put 'put ''aGlzLmZvY3VzYWJsZUVsZW1lbnQ9ZnVuY3Rpb24gemx0KGQpe3ZhciBnPW5ldyBaOGUoZCksaD1VdGUuZ2V0KGQpO3JldHVybiBoPWlzTmFOKGgpPzA6aCxVdGUuc2V0KGQsaCsxKSxnfSh0aGlzLnVpQ29udGFpbmVyKSx0aGlzLmZvY3VzYWJsZUVsZW1lbnQuYWRkTG9jYWxIb29rKCJjb3B5''@;'; put 'put ''IixmdW5jdGlvbihfZSl7cmV0dXJuIHkub25Db3B5KF9lKX0pLmFkZExvY2FsSG9vaygiY3V0IixmdW5jdGlvbihfZSl7cmV0dXJuIHkub25DdXQoX2UpfSkuYWRkTG9jYWxIb29rKCJwYXN0ZSIsZnVuY3Rpb24oX2Upe3JldHVybiB5Lm9uUGFzdGUoX2UpfSksZk0oR3YoaC5wcm90b3R5cGUp''@;'; put 'put ''LCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5nZXRPckNyZWF0ZUZvY3VzYWJsZUVsZW1lbnQoKSxmTShHdihoLnByb3RvdHlw''@;'; put 'put ''ZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c2FibGVFbGVtZW50JiZMeGUodGhpcy5mb2N1c2FibGVFbGVtZW50KSxmTShHdihoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMp''@;'; put 'put ''LmNhbGwodGhpcyl9fSx7a2V5OiJjb3B5Iix2YWx1ZTpmdW5jdGlvbigpe2hNLmdldCh0aGlzKS5pc1RyaWdnZXJlZEJ5Q29weT0hMCx0aGlzLmdldE9yQ3JlYXRlRm9jdXNhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpLHRoaXMuaG90LnJvb3REb2N1bWVudC5l''@;'; put 'put ''eGVjQ29tbWFuZCgiY29weSIpfX0se2tleToiY3V0Iix2YWx1ZTpmdW5jdGlvbigpe2hNLmdldCh0aGlzKS5pc1RyaWdnZXJlZEJ5Q3V0PSEwLHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksdGhpcy5mb2N1c2FibGVFbGVtZW50LmZvY3VzKCksdGhpcy5ob3Qucm9vdERvY3Vt''@;'; put 'put ''ZW50LmV4ZWNDb21tYW5kKCJjdXQiKX19LHtrZXk6ImdldFJhbmdlZENvcHlhYmxlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPVtdLGo9W10sY2U9W107cmV0dXJuIEdyKHksZnVuY3Rpb24oX2Upe3JhKF9lLnN0YXJ0Um93LF9lLmVuZFJvdyxmdW5jdGlvbihSZSl7LTE9''@;'; put 'put ''PT1qLmluZGV4T2YoUmUpJiZqLnB1c2goUmUpfSkscmEoX2Uuc3RhcnRDb2wsX2UuZW5kQ29sLGZ1bmN0aW9uKFJlKXstMT09PWNlLmluZGV4T2YoUmUpJiZjZS5wdXNoKFJlKX0pfSksR3IoaixmdW5jdGlvbihfZSl7dmFyIFJlPVtdO0dyKGNlLGZ1bmN0aW9uKE5lKXtSZS5wdXNoKEMuaG90''@;'; put 'put ''LmdldENvcHlhYmxlRGF0YShfZSxOZSkpfSksSS5wdXNoKFJlKX0pLEJ6KEkpfX0se2tleToiZ2V0UmFuZ2VkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPVtdLGo9W10sY2U9W107cmV0dXJuIEdyKHksZnVuY3Rpb24oX2Upe3JhKF9lLnN0YXJ0Um93LF9lLmVuZFJvdyxm''@;'; put 'put ''dW5jdGlvbihSZSl7LTE9PT1qLmluZGV4T2YoUmUpJiZqLnB1c2goUmUpfSkscmEoX2Uuc3RhcnRDb2wsX2UuZW5kQ29sLGZ1bmN0aW9uKFJlKXstMT09PWNlLmluZGV4T2YoUmUpJiZjZS5wdXNoKFJlKX0pfSksR3IoaixmdW5jdGlvbihfZSl7dmFyIFJlPVtdO0dyKGNlLGZ1bmN0aW9uKE5l''@;'; put 'put ''KXtSZS5wdXNoKEMuaG90LmdldENvcHlhYmxlRGF0YShfZSxOZSkpfSksSS5wdXNoKFJlKX0pLEl9fSx7a2V5OiJwYXN0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsQz1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06eTtpZih5fHxDKXt2YXIgST1uZXcgVmx0O3kmJkkuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIix5KSxDJiZJLmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9odG1sIixDKSx0aGlzLmdldE9y''@;'; put 'put ''Q3JlYXRlRm9jdXNhYmxlRWxlbWVudCgpLHRoaXMub25QYXN0ZShJKX19fSx7a2V5OiJzZXRDb3B5YWJsZVRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZih5KXt2YXIgQz15LmdldFRvcFN0YXJ0Q29ybmVyKCksST15LmdldEJv''@;'; put 'put ''dHRvbUVuZENvcm5lcigpLGo9Qy5yb3csY2U9Qy5jb2wsX2U9SS5yb3csUmU9SS5jb2wsTmU9TWF0aC5taW4oX2Usait0aGlzLnJvd3NMaW1pdC0xKSxLZT1NYXRoLm1pbihSZSxjZSt0aGlzLmNvbHVtbnNMaW1pdC0xKTt0aGlzLmNvcHlhYmxlUmFuZ2VzLmxlbmd0aD0wLHRoaXMuY29weWFi''@;'; put 'put ''bGVSYW5nZXMucHVzaCh7c3RhcnRSb3c6aixzdGFydENvbDpjZSxlbmRSb3c6TmUsZW5kQ29sOktlfSksdGhpcy5jb3B5YWJsZVJhbmdlcz10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5Q29weWFibGVSYW5nZSIsdGhpcy5jb3B5YWJsZVJhbmdlcyksKF9lIT09TmV8fFJlIT09S2UpJiZ0aGlz''@;'; put 'put ''LmhvdC5ydW5Ib29rcygiYWZ0ZXJDb3B5TGltaXQiLF9lLWorMSxSZS1jZSsxLHRoaXMucm93c0xpbWl0LHRoaXMuY29sdW1uc0xpbWl0KX19fSx7a2V5OiJnZXRPckNyZWF0ZUZvY3VzYWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0QWN0aXZlRWRpdG9y''@;'; put 'put ''KCksQz15P3kuVEVYVEFSRUE6dm9pZCAwO0M/dGhpcy5mb2N1c2FibGVFbGVtZW50LnNldEZvY3VzYWJsZUVsZW1lbnQoQyk6dGhpcy5mb2N1c2FibGVFbGVtZW50LnVzZVNlY29uZGFyeUVsZW1lbnQoKX19LHtrZXk6ImlzRWRpdG9yT3BlbmVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRo''@;'; put 'put ''aXMuaG90LmdldEFjdGl2ZUVkaXRvcigpO3JldHVybiB5JiZ5LmlzT3BlbmVkKCl9fSx7a2V5OiJwb3B1bGF0ZVZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuaG90LmdldFNl''@;'; put 'put ''bGVjdGVkUmFuZ2VMYXN0KCk7aWYoeS5sZW5ndGgpe2Zvcih2YXIgST15Lmxlbmd0aCxqPXlbMF0ubGVuZ3RoLGNlPVtdLF9lPUMuZ2V0VG9wU3RhcnRDb3JuZXIoKSxSZT1fZS5yb3csTmU9X2UuY29sLEtlPUMuZ2V0Qm90dG9tRW5kQ29ybmVyKCksaHQ9S2Uucm93LEJ0PUtlLmNvbCwkdD1S''@;'; put 'put ''ZSxobj1OZSxEbj1SZSxpcj1OZTtjZS5sZW5ndGg8SXx8JHQ8PWh0Oyl7dmFyIHByPXRoaXMuaG90LmdldENlbGxNZXRhKCR0LE5lKSxFcj1wci5za2lwUm93T25QYXN0ZSxBcj1wci52aXN1YWxSb3c7aWYoJHQ9QXIrMSwhMCE9PUVyKXtEbj1Bcixobj1OZTtmb3IodmFyIFlyPVtdLF9pPWNl''@;'; put 'put ''Lmxlbmd0aCVJO1lyLmxlbmd0aDxqfHxobjw9QnQ7KXt2YXIgS2k9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoUmUsaG4pLGtvPUtpLnNraXBDb2x1bW5PblBhc3RlLE9vPUtpLnZpc3VhbENvbDtpZihobj1PbysxLCEwIT09a28pe2lyPU9vO3ZhciBiYT1Zci5sZW5ndGglajtZci5wdXNoKHlbX2ld''@;'; put 'put ''W2JhXSl9fWNlLnB1c2goWXIpfX1yZXR1cm4gdGhpcy5ob3QucG9wdWxhdGVGcm9tQXJyYXkoUmUsTmUsY2Usdm9pZCAwLHZvaWQgMCwiQ29weVBhc3RlLnBhc3RlIix0aGlzLnBhc3RlTW9kZSksW1JlLE5lLERuLGlyXX19fSx7a2V5OiJvbkNvcHkiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBD''@;'; put 'put ''PWhNLmdldCh0aGlzKTtpZigodGhpcy5ob3QuaXNMaXN0ZW5pbmcoKXx8Qy5pc1RyaWdnZXJlZEJ5Q29weSkmJiF0aGlzLmlzRWRpdG9yT3BlbmVkKCkpe3RoaXMuc2V0Q29weWFibGVUZXh0KCksQy5pc1RyaWdnZXJlZEJ5Q29weT0hMTt2YXIgST10aGlzLmdldFJhbmdlZERhdGEodGhpcy5j''@;'; put 'put ''b3B5YWJsZVJhbmdlcyk7aWYodGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvcHkiLEksdGhpcy5jb3B5YWJsZVJhbmdlcykpe3ZhciBjZT1CeihJKTtpZih5JiZ5LmNsaXBib2FyZERhdGEpe3ZhciBfZT1HM2UoSSk7eS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLGNlKSx5''@;'; put 'put ''LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9odG1sIixbUHhlLF9lXS5qb2luKCIiKSl9ZWxzZSJ1bmRlZmluZWQiPT10eXBlb2YgQ2xpcGJvYXJkRXZlbnQmJnRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJUZXh0IixjZSk7dGhpcy5ob3QucnVuSG9va3Mo''@;'; put 'put ''ImFmdGVyQ29weSIsSSx0aGlzLmNvcHlhYmxlUmFuZ2VzKX15LnByZXZlbnREZWZhdWx0KCl9fX0se2tleToib25DdXQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWhNLmdldCh0aGlzKTtpZigodGhpcy5ob3QuaXNMaXN0ZW5pbmcoKXx8Qy5pc1RyaWdnZXJlZEJ5Q3V0KSYmIXRoaXMuaXNF''@;'; put 'put ''ZGl0b3JPcGVuZWQoKSl7dGhpcy5zZXRDb3B5YWJsZVRleHQoKSxDLmlzVHJpZ2dlcmVkQnlDdXQ9ITE7dmFyIEk9dGhpcy5nZXRSYW5nZWREYXRhKHRoaXMuY29weWFibGVSYW5nZXMpO2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDdXQiLEksdGhpcy5jb3B5YWJsZVJhbmdlcykpe3Zh''@;'; put 'put ''ciBjZT1CeihJKTtpZih5JiZ5LmNsaXBib2FyZERhdGEpe3ZhciBfZT1HM2UoSSk7eS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLGNlKSx5LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9odG1sIixbUHhlLF9lXS5qb2luKCIiKSl9ZWxzZSJ1bmRlZmluZWQiPT10eXBl''@;'; put 'put ''b2YgQ2xpcGJvYXJkRXZlbnQmJnRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJUZXh0IixjZSk7dGhpcy5ob3QuZW1wdHlTZWxlY3RlZENlbGxzKCJDb3B5UGFzdGUuY3V0IiksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3V0IixJLHRoaXMuY29weWFibGVSYW5n''@;'; put 'put ''ZXMpfXkucHJldmVudERlZmF1bHQoKX19fSx7a2V5OiJvblBhc3RlIix2YWx1ZTpmdW5jdGlvbih5KXtpZih0aGlzLmhvdC5pc0xpc3RlbmluZygpJiYhdGhpcy5pc0VkaXRvck9wZW5lZCgpKXt2YXIgQztpZih5JiZ5LnByZXZlbnREZWZhdWx0JiZ5LnByZXZlbnREZWZhdWx0KCkseSYmdm9p''@;'; put 'put ''ZCAwIT09eS5jbGlwYm9hcmREYXRhKXt2YXIgST10ZWUoeS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvaHRtbCIpLHtBRERfVEFHUzpbIm1ldGEiXSxBRERfQVRUUjpbImNvbnRlbnQiXSxGT1JDRV9CT0RZOiEwfSk7Qz1JJiYvKDx0YWJsZSl8KDxUQUJMRSkvZy50ZXN0KEkpP3pfZShJ''@;'; put 'put ''LHRoaXMuaG90LnJvb3REb2N1bWVudCkuZGF0YTp5LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpfWVsc2UidW5kZWZpbmVkIj09dHlwZW9mIENsaXBib2FyZEV2ZW50JiZ2b2lkIDAhPT10aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGEmJihDPXRoaXMuaG90LnJv''@;'; put 'put ''b3RXaW5kb3cuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJUZXh0IikpO2lmKCJzdHJpbmciPT10eXBlb2YgQyYmKEM9ZnVuY3Rpb24gJHFlKGQpe3ZhciBnPVtbIiJdXTtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIGc7Zm9yKHZhciB5LGg9MCx2PTA7ZC5sZW5ndGg+MCYmeSE9PWQubGVuZ3RoOylp''@;'; put 'put ''Zih5PWQubGVuZ3RoLGQubWF0Y2godE1lKSlkPWQucmVwbGFjZSh0TWUsIiIpLGdbdl1baCs9MV09IiI7ZWxzZSBpZihkLm1hdGNoKGVNZSkpZD1kLnJlcGxhY2UoZU1lLCIiKSxoPTAsZ1t2Kz0xXT1bIiJdO2Vsc2V7dmFyIEM9IiI7aWYoZC5zdGFydHNXaXRoKCciJykpe2Zvcih2YXIgST0w''@;'; put 'put ''LGo9ITA7ajspe3ZhciBjZT1kLnNsaWNlKDAsMSk7JyInPT09Y2UmJihJKz0xKSxDKz1jZSwoMD09PShkPWQuc2xpY2UoMSkpLmxlbmd0aHx8ZC5tYXRjaCgvXltcdFxyXG5dLykmJkklMj09MCkmJihqPSExKX1DPUMucmVwbGFjZSgvXiIvLCIiKS5yZXBsYWNlKC8iJC8sIiIpLnJlcGxhY2Uo''@;'; put 'put ''L1siXSovZyxmdW5jdGlvbihSZSl7cmV0dXJuIG5ldyBBcnJheShNYXRoLmZsb29yKFJlLmxlbmd0aC8yKSkuZmlsbCgnIicpLmpvaW4oIiIpfSl9ZWxzZXt2YXIgX2U9ZC5tYXRjaChLcWUpO2Q9ZC5zbGljZSgoQz1fZT9fZVswXToiIikubGVuZ3RoKX1nW3ZdW2hdPUN9cmV0dXJuIGd9KEMp''@;'; put 'put ''KSwoIUN8fDAhPT1DLmxlbmd0aCkmJiExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVBhc3RlIixDLHRoaXMuY29weWFibGVSYW5nZXMpKXt2YXIgX2U9ZnVuY3Rpb24gWWx0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFhsdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8''@;'; put 'put ''ZnVuY3Rpb24gSmx0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgu''@;'; put 'put ''bmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rp''@;'; put 'put ''b24gUWx0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBPeGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJN''@;'; put 'put ''YXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIE94ZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gVWx0KCl7dGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odGhpcy5wb3B1bGF0ZVZh''@;'; put 'put ''bHVlcyhDKSw0KSxLZT1fZVsyXSxodD1fZVszXTt0aGlzLmhvdC5zZWxlY3RDZWxsKF9lWzBdLF9lWzFdLE1hdGgubWluKHRoaXMuaG90LmNvdW50Um93cygpLTEsS2UpLE1hdGgubWluKHRoaXMuaG90LmNvdW50Q29scygpLTEsaHQpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJQYXN0ZSIs''@;'; put 'put ''Qyx0aGlzLmNvcHlhYmxlUmFuZ2VzKX19fX0se2tleToib25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gT2x0KGQpe3JldHVybntrZXk6ImNvcHkiLG5hbWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFk0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC5jb3B5KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuY291bnRSb3dzKCl8fDA9PT10aGlzLmNvdW50Q29scygpKXJldHVybiEwO3ZhciBoPXRoaXMuZ2V0U2VsZWN0''@;'; put 'put ''ZWQoKTtyZXR1cm4haHx8aC5sZW5ndGg+MX0saGlkZGVuOiExfX0odGhpcyksZnVuY3Rpb24gUmx0KGQpe3JldHVybntrZXk6ImN1dCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoVTRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLmN1dCgpfSxkaXNh''@;'; put 'put ''YmxlZDpmdW5jdGlvbigpe2lmKDA9PT10aGlzLmNvdW50Um93cygpfHwwPT09dGhpcy5jb3VudENvbHMoKSlyZXR1cm4hMDt2YXIgaD10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIWh8fGgubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZVVw''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpeyF0aGlzLmhvdC5pc0xpc3RlbmluZygpfHx0aGlzLmlzRWRpdG9yT3BlbmVkKCl8fHRoaXMuaG90LmdldFNldHRpbmdzKCkuZnJhZ21lbnRTZWxlY3Rpb258fCh0aGlzLmdldE9yQ3JlYXRlRm9jdXNhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVu''@;'; put 'put ''dC5mb2N1cygpKX19LHtrZXk6Im9uQWZ0ZXJTZWxlY3Rpb25FbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEM9aE0uZ2V0KHRoaXMpLmlzRnJhZ21lbnRTZWxlY3Rpb25FbmFibGVkO3RoaXMuaXNFZGl0b3JPcGVuZWQoKXx8KHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksKCFD''@;'; put 'put ''fHx0aGlzLmZvY3VzYWJsZUVsZW1lbnQuZ2V0Rm9jdXNhYmxlRWxlbWVudCgpPT09dGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fCFiX2UoKSkmJih0aGlzLnNldENvcHlhYmxlVGV4dCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpKSl9fSx7a2V5OiJvbkJlZm9y''@;'; put 'put ''ZUtleURvd24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5ob3QuaXNMaXN0ZW5pbmcoKSYmIXRoaXMuaXNFZGl0b3JPcGVuZWQoKSl7dmFyIHk9dGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQsQz10aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKTshQ3x8eSE9PXRoaXMuZm9j''@;'; put 'put ''dXNhYmxlRWxlbWVudC5nZXRGb2N1c2FibGVFbGVtZW50KCkmJnkhPT1DLnNlbGVjdHx8KHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksdGhpcy5mb2N1c2FibGVFbGVtZW50LmZvY3VzKCkpfX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c2Fi''@;'; put 'put ''bGVFbGVtZW50JiYoTHhlKHRoaXMuZm9jdXNhYmxlRWxlbWVudCksdGhpcy5mb2N1c2FibGVFbGVtZW50PW51bGwpLGZNKEd2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFh0ZX19LHtr''@;'; put 'put ''ZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW1h0ZV0uY29uY2F0KG9zdCl9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA4MH19XSksaH0oR3MpO2Z1bmN0aW9uIEZ4ZShkLGcpe3JldHVybiJib3JkZXJfcm93Ii5jb25jYXQoZCwi''@;'; put 'put ''Y29sIikuY29uY2F0KGcpfWZ1bmN0aW9uIFc4ZShkKXt2YXIgZyxoO3JldHVybihFbyhkLnN0YXJ0KXx8RW8oZC5sZWZ0KSkmJihkLnN0YXJ0PW51bGwhPT0oZz1kLnN0YXJ0KSYmdm9pZCAwIT09Zz9nOmQubGVmdCksKEVvKGQuZW5kKXx8RW8oZC5yaWdodCkpJiYoZC5lbmQ9bnVsbCE9PSho''@;'; put 'put ''PWQuZW5kKSYmdm9pZCAwIT09aD9oOmQucmlnaHQpLGRlbGV0ZSBkLmxlZnQsZGVsZXRlIGQucmlnaHQsZH1mdW5jdGlvbiBReihkKXtyZXR1cm4gRW8oZC5zdGFydCkmJihkLmxlZnQ9ZC5zdGFydCksRW8oZC5lbmQpJiYoZC5yaWdodD1kLmVuZCksZH1mdW5jdGlvbiBZOGUoZCxnKXtyZXR1''@;'; put 'put ''cm57aWQ6RnhlKGQsZyksYm9yZGVyOnt3aWR0aDoxLGNvbG9yOiIjMDAwIixjb3JuZXJWaXNpYmxlOiExfSxyb3c6ZCxjb2w6Zyx0b3A6e2hpZGU6ITB9LGJvdHRvbTp7aGlkZTohMH0sc3RhcnQ6e2hpZGU6ITB9LGVuZDp7aGlkZTohMH19fWZ1bmN0aW9uIFl2KGQsZyl7dmFyIGg9ITE7cmV0''@;'; put 'put ''dXJuIEdyKGQuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKHYpe3YuZm9yQWxsKGZ1bmN0aW9uKHksQyl7aWYoISh5PDB8fEM8MCkpe3ZhciBJPWQuZ2V0Q2VsbE1ldGEoeSxDKS5ib3JkZXJzO2lmKEkpe2lmKCFnKXJldHVybiBoPSEwLCExO2lmKCFzMShJW2ddLCJoaWRlIil8fCExPT09''@;'; put 'put ''SVtnXS5oaWRlKXJldHVybiBoPSEwLCExfX19KX0pLGh9ZnVuY3Rpb24gS3RlKGQpe3JldHVybic8c3BhbiBjbGFzcz0ic2VsZWN0ZWQiPicuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoMTAwMDMpLCI8L3NwYW4+IikuY29uY2F0KGQpfXZhciBkc3Q9bmV3IE1hcChbWyJsZWZ0Iiwic3Rh''@;'; put 'put ''cnQiXSxbInJpZ2h0IiwiZW5kIl1dKTtmdW5jdGlvbiBnc3QoZCl7cmV0dXJue2tleToiYm9yZGVyczp0b3AiLG5hbWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoZnBlKTtyZXR1cm4gWXYodGhpcywidG9wIikmJihoPUt0ZShoKSksaH0sY2FsbGJhY2s6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXt2YXIgeT1Zdih0aGlzLCJ0b3AiKTtkLnByZXBhcmVCb3JkZXIodiwidG9wIix5KX19fWZ1bmN0aW9uIG1zdChkKXt2YXIgZz1kLmhvdC5pc1J0bCgpPyJzdGFydCI6ImVuZCI7cmV0dXJue2tleToiYm9yZGVyczpyaWdodCIsbmFtZTpmdW5jdGlvbigpe3ZhciB2PXRoaXMu''@;'; put 'put ''Z2V0VHJhbnNsYXRlZFBocmFzZShocGUpO3JldHVybiBZdih0aGlzLGcpJiYodj1LdGUodikpLHZ9LGNhbGxiYWNrOmZ1bmN0aW9uKHYseSl7dmFyIEM9WXYodGhpcyxnKTtkLnByZXBhcmVCb3JkZXIoeSxnLEMpfX19ZnVuY3Rpb24gdnN0KGQpe3JldHVybntrZXk6ImJvcmRlcnM6Ym90dG9t''@;'; put 'put ''IixuYW1lOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGRwZSk7cmV0dXJuIFl2KHRoaXMsImJvdHRvbSIpJiYoaD1LdGUoaCkpLGh9LGNhbGxiYWNrOmZ1bmN0aW9uKGgsdil7dmFyIHk9WXYodGhpcywiYm90dG9tIik7ZC5wcmVwYXJlQm9yZGVyKHYsImJvdHRv''@;'; put 'put ''bSIseSl9fX1mdW5jdGlvbiBBc3QoZCl7dmFyIGc9ZC5ob3QuaXNSdGwoKT8iZW5kIjoic3RhcnQiO3JldHVybntrZXk6ImJvcmRlcnM6bGVmdCIsbmFtZTpmdW5jdGlvbigpe3ZhciB2PXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShwcGUpO3JldHVybiBZdih0aGlzLGcpJiYodj1LdGUodikp''@;'; put 'put ''LHZ9LGNhbGxiYWNrOmZ1bmN0aW9uKHYseSl7dmFyIEM9WXYodGhpcyxnKTtkLnByZXBhcmVCb3JkZXIoeSxnLEMpfX19ZnVuY3Rpb24geXN0KGQpe3JldHVybntrZXk6ImJvcmRlcnM6bm9fYm9yZGVycyIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uo''@;'; put 'put ''Z3BlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oaCx2KXtkLnByZXBhcmVCb3JkZXIodiwibm9Cb3JkZXJzIil9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIVl2KHRoaXMpfX19ZnVuY3Rpb24gVThlKGQpe3JldHVybihVOGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShk''@;'; put 'put ''KX1mdW5jdGlvbiBIeGUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gQ3N0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBfc3QoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsi''@;'; put 'put ''QEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5''@;'; put 'put ''eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBic3QoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIE54ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu''@;'; put 'put ''Y2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNs''@;'; put 'put ''YW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gTnhlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiB3c3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5v''@;'; put 'put ''bi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIE54ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVy''@;'; put 'put ''biB2fWZ1bmN0aW9uIGtzdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIFZ4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVy''@;'; put 'put ''YWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGRNKCl7cmV0dXJuIGRNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5n''@;'; put 'put ''ZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1Nc3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGRNLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNc3QoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVV2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFE4ZShkLGcpe3JldHVybihROGU9T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''P09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBUc3QoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1VOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGp4ZShkKX1mdW5jdGlvbiBqeGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4g''@;'; put 'put ''aW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFV2KGQpe3JldHVybihVdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVj''@;'; put 'put ''dC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9uIERzdChkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyICR0ZT0iY3VzdG9tQm9y''@;'; put 'put ''ZGVycyIsT3N0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBFc3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmpl''@;'; put 'put ''Y3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmUThlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24geHN0''@;'; put 'put ''KGQpe3ZhciBnPWZ1bmN0aW9uIElzdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4u''@;'; put 'put ''cHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVV2KGQpO2lmKGcpe3ZhciBDPVV2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBUc3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtrc3QodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0kr''@;'; put 'put ''KylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gRHN0KGp4ZSh2PWcuY2FsbC5hcHBseShnLFt0aGlzXS5jb25jYXQoQykpKSwic2F2ZWRCb3JkZXJzIixbXSksdn1yZXR1cm4gZnVuY3Rpb24gU3N0KGQsZyxoKXtnJiZWeGUoZC5wcm90b3R5cGUsZyksaCYmVnhlKGQsaCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbJHRlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3Ro''@;'; put 'put ''aXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbihDKXtyZXR1cm4geS5vbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyhDKX0pLHRoaXMuYWRkSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVy''@;'; put 'put ''SW5pdCgpfSksZE0oVXYoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhpZGVCb3JkZXJzKCksZE0oVXYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxs''@;'; put 'put ''KHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5jaGFuZ2VCb3JkZXJTZXR0aW5ncygpLGRNKFV2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMp''@;'; put 'put ''fX0se2tleToic2V0Qm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLGo9WyJ0b3AiLCJib3R0b20iLCJzdGFydCIsImVuZCJdLGNlPW51bGw7QyYmKHRoaXMuY2hlY2tTZXR0aW5nc0NvaGVzaW9uKFtDXSksaj1PYmplY3Qua2V5cyhDKSxjZT1XOGUoQykpO3ZhciBSZT1S''@;'; put 'put ''eihOTyh5KSk7R3IoeSxmdW5jdGlvbihOZSl7Zm9yKHZhciBodD1IeGUoUmUoTmUpLDQpLCR0PWh0WzFdLGhuPWh0WzJdLERuPWh0WzNdLGlyPWZ1bmN0aW9uKEFyKXtmb3IodmFyIFlyPWZ1bmN0aW9uKGtvKXtHcihqLGZ1bmN0aW9uKE9vKXtJLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRk''@;'; put 'put ''ZWQoQXIsa28sY2UsZnVuY3Rpb24gcHN0KGQpe3ZhciBnO3JldHVybiBudWxsIT09KGc9ZHN0LmdldChkKSkmJnZvaWQgMCE9PWc/ZzpkfShPbykpfSl9LF9pPSR0O19pPD1EbjtfaSs9MSlZcihfaSl9LHByPWh0WzBdO3ByPD1objtwcis9MSlpcihwcil9KSx0aGlzLmhvdC52aWV3LnJlbmRl''@;'; put 'put ''cigpfX0se2tleToiZ2V0Qm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcztpZighQXJyYXkuaXNBcnJheSh5KSlyZXR1cm4gdGhpcy5zYXZlZEJvcmRlcnM7dmFyIGo9UnooTk8oeSkpLGNlPVtdO3JldHVybiBHcih5LGZ1bmN0aW9uKF9lKXtmb3IodmFyIE5lPUh4ZShqKF9l''@;'; put 'put ''KSw0KSxodD1OZVsxXSxCdD1OZVsyXSwkdD1OZVszXSxobj1mdW5jdGlvbihwcil7Zm9yKHZhciBFcj1mdW5jdGlvbihfaSl7R3IoQy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oS2kpe0tpLnJvdz09PXByJiZLaS5jb2w9PT1faSYmY2UucHVzaChReihLaSkpfSl9LEFyPWh0O0FyPD0kdDtBcis9''@;'; put 'put ''MSlFcihBcil9LERuPU5lWzBdO0RuPD1CdDtEbis9MSlobihEbil9KSxjZX19LHtrZXk6ImNsZWFyQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt5P3RoaXMuc2V0Qm9yZGVycyh5KTooR3IodGhpcy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oSSl7Qy5jbGVhckJvcmRlcnNG''@;'; put 'put ''cm9tU2VsZWN0aW9uU2V0dGluZ3MoSS5pZCksQy5jbGVhck51bGxDZWxsUmFuZ2UoKSxDLmhvdC5yZW1vdmVDZWxsTWV0YShJLnJvdyxJLmNvbCwiYm9yZGVycyIpfSksdGhpcy5zYXZlZEJvcmRlcnMubGVuZ3RoPTApfX0se2tleToiaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5LEMpe3RoaXMuY2hlY2tTYXZlZEJvcmRlcnMoeSl8fHRoaXMuc2F2ZWRCb3JkZXJzLnB1c2goeSk7dmFyIGo9dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5LnJvdyx5LmNvbCkpO3RoaXMuY2hlY2tDdXN0b21TZWxlY3Rpb25z''@;'; put 'put ''KHksaixDKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5hZGRDdXN0b21TZWxlY3Rpb24oe2JvcmRlcjp5LHZpc3VhbENlbGxSYW5nZTpqfSl9fSx7a2V5OiJwcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqKXt2YXIgY2U9dGhpcy5ob3Qu''@;'; put 'put ''Y291bnRSb3dzKCksX2U9dGhpcy5ob3QuY291bnRDb2xzKCk7aWYoISh5Pj1jZXx8Qz49X2UpKXt2YXIgUmU9WThlKHksQyk7SSYmKFJlPWZ1bmN0aW9uIGNzdChkLGcpe3JldHVybiBzMShnLCJib3JkZXIiKSYmZy5ib3JkZXImJihkLmJvcmRlcj1nLmJvcmRlciksczEoZywidG9wIikmJkVv''@;'; put 'put ''KGcudG9wKSYmKGcudG9wPyhBbChnLnRvcCl8fChnLnRvcD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxkLnRvcD1nLnRvcCk6KGcudG9wPXtoaWRlOiEwfSxkLnRvcD1nLnRvcCkpLHMxKGcsImJvdHRvbSIpJiZFbyhnLmJvdHRvbSkmJihnLmJvdHRvbT8oQWwoZy5ib3R0b20pfHwoZy5ib3R0''@;'; put 'put ''b209e3dpZHRoOjEsY29sb3I6IiMwMDAifSksZC5ib3R0b209Zy5ib3R0b20pOihnLmJvdHRvbT17aGlkZTohMH0sZC5ib3R0b209Zy5ib3R0b20pKSxzMShnLCJzdGFydCIpJiZFbyhnLnN0YXJ0KSYmKGcuc3RhcnQ/KEFsKGcuc3RhcnQpfHwoZy5zdGFydD17d2lkdGg6MSxjb2xvcjoiIzAw''@;'; put 'put ''MCJ9KSxkLnN0YXJ0PWcuc3RhcnQpOihnLnN0YXJ0PXtoaWRlOiEwfSxkLnN0YXJ0PWcuc3RhcnQpKSxzMShnLCJlbmQiKSYmRW8oZy5lbmQpJiYoZy5lbmQ/KEFsKGcuZW5kKXx8KGcuZW5kPXt3aWR0aDoxLGNvbG9yOiIjMDAwIn0pLGQuZW5kPWcuZW5kKTooZy5lbmQ9e2hpZGU6ITB9LGQu''@;'; put 'put ''ZW5kPWcuZW5kKSksZH0oUmUsSSksR3IodGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLGZ1bmN0aW9uKE5lKXtpZihSZS5pZD09PU5lLnNldHRpbmdzLmlkKXJldHVybiBPYmplY3QuYXNzaWduKE5lLnNldHRpbmdzLEkpLFJlLmlkPU5lLnNldHRpbmdzLmlk''@;'; put 'put ''LFJlLnRvcD1OZS5zZXR0aW5ncy50b3AsUmUuYm90dG9tPU5lLnNldHRpbmdzLmJvdHRvbSxSZS5zdGFydD1OZS5zZXR0aW5ncy5zdGFydCxSZS5lbmQ9TmUuc2V0dGluZ3MuZW5kLCExfSkpLHRoaXMuaG90LnNldENlbGxNZXRhKHksQywiYm9yZGVycyIsUXooUmUpKSx0aGlzLmluc2VydEJv''@;'; put 'put ''cmRlckludG9TZXR0aW5ncyhSZSxqKX19fSx7a2V5OiJwcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcyxqPU1hdGgubWluKHkudG8ucm93LHRoaXMuaG90LmNvdW50Um93cygpLTEpLGNlPU1hdGgubWluKHkudG8uY29sLHRo''@;'; put 'put ''aXMuaG90LmNvdW50Q29scygpLTEpO3JhKHkuZnJvbS5yb3csaixmdW5jdGlvbihfZSl7cmEoeS5mcm9tLmNvbCxjZSxmdW5jdGlvbihSZSl7dmFyIE5lPVk4ZShfZSxSZSksS2U9MDtfZT09PXkuZnJvbS5yb3cmJnMxKEMsInRvcCIpJiYoS2UrPTEsTmUudG9wPUMudG9wKSxfZT09PXkudG8u''@;'; put 'put ''cm93JiZzMShDLCJib3R0b20iKSYmKEtlKz0xLE5lLmJvdHRvbT1DLmJvdHRvbSksUmU9PT15LmZyb20uY29sJiZzMShDLCJzdGFydCIpJiYoS2UrPTEsTmUuc3RhcnQ9Qy5zdGFydCksUmU9PT15LnRvLmNvbCYmczEoQywiZW5kIikmJihLZSs9MSxOZS5lbmQ9Qy5lbmQpLEtlPjAmJihJLmhv''@;'; put 'put ''dC5zZXRDZWxsTWV0YShfZSxSZSwiYm9yZGVycyIsUXooTmUpKSxJLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhOZSkpfSl9KX19LHtrZXk6InJlbW92ZUFsbEJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9RnhlKHksQyk7dGhpcy5zcGxpY2VCb3JkZXIoSSksdGhpcy5jbGVh''@;'; put 'put ''ckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MoSSksdGhpcy5jbGVhck51bGxDZWxsUmFuZ2UoKSx0aGlzLmhvdC5yZW1vdmVDZWxsTWV0YSh5LEMsImJvcmRlcnMiKX19LHtrZXk6InNldEJvcmRlciIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7dmFyIGNlPXRoaXMuaG90LmdldENlbGxN''@;'; put 'put ''ZXRhKHksQykuYm9yZGVycztjZT1jZSYmdm9pZCAwIT09Y2UuYm9yZGVyP1c4ZShjZSk6WThlKHksQyksaj8oY2VbSV09e2hpZGU6ITB9LDQ9PT10aGlzLmNvdW50SGlkZShjZSk/dGhpcy5yZW1vdmVBbGxCb3JkZXJzKHksQyk6KHRoaXMuY2hlY2tDdXN0b21TZWxlY3Rpb25zRnJvbUNvbnRl''@;'; put 'put ''eHRNZW51KGNlLEksail8fHRoaXMuaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzKGNlKSx0aGlzLmhvdC5zZXRDZWxsTWV0YSh5LEMsImJvcmRlcnMiLFF6KGNlKSkpKTooY2VbSV09e3dpZHRoOjEsY29sb3I6IiMwMDAifSx0aGlzLmNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVu''@;'; put 'put ''dShjZSxJLGopfHx0aGlzLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhjZSksdGhpcy5ob3Quc2V0Q2VsbE1ldGEoeSxDLCJib3JkZXJzIixReihjZSkpKX19LHtrZXk6InByZXBhcmVCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgaj10aGlzO0dyKHksZnVuY3Rpb24oY2Upe3Zh''@;'; put 'put ''ciBfZT1jZS5zdGFydCxSZT1jZS5lbmQ7aWYoX2Uucm93PT09UmUucm93JiZfZS5jb2w9PT1SZS5jb2wpIm5vQm9yZGVycyI9PT1DP2oucmVtb3ZlQWxsQm9yZGVycyhfZS5yb3csX2UuY29sKTpqLnNldEJvcmRlcihfZS5yb3csX2UuY29sLEMsSSk7ZWxzZSBzd2l0Y2goQyl7Y2FzZSJub0Jv''@;'; put 'put ''cmRlcnMiOnJhKF9lLmNvbCxSZS5jb2wsZnVuY3Rpb24oTmUpe3JhKF9lLnJvdyxSZS5yb3csZnVuY3Rpb24oS2Upe2oucmVtb3ZlQWxsQm9yZGVycyhLZSxOZSl9KX0pO2JyZWFrO2Nhc2UidG9wIjpyYShfZS5jb2wsUmUuY29sLGZ1bmN0aW9uKE5lKXtqLnNldEJvcmRlcihfZS5yb3csTmUs''@;'; put 'put ''QyxJKX0pO2JyZWFrO2Nhc2UiYm90dG9tIjpyYShfZS5jb2wsUmUuY29sLGZ1bmN0aW9uKE5lKXtqLnNldEJvcmRlcihSZS5yb3csTmUsQyxJKX0pO2JyZWFrO2Nhc2Uic3RhcnQiOnJhKF9lLnJvdyxSZS5yb3csZnVuY3Rpb24oTmUpe2ouc2V0Qm9yZGVyKE5lLF9lLmNvbCxDLEkpfSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJlbmQiOnJhKF9lLnJvdyxSZS5yb3csZnVuY3Rpb24oTmUpe2ouc2V0Qm9yZGVyKE5lLFJlLmNvbCxDLEkpfSl9fSl9fSx7a2V5OiJjcmVhdGVDdXN0b21Cb3JkZXJzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO0dyKHksZnVuY3Rpb24oSSl7dmFyIGo9VzhlKEkpO0ku''@;'; put 'put ''cmFuZ2U/Qy5wcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkUmFuZ2UoSS5yYW5nZSxqKTpDLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQoSS5yb3csSS5jb2wsail9KX19LHtrZXk6ImNvdW50SGlkZSIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIEV1KFt5LnRvcCx5LmJvdHRvbSx5''@;'; put 'put ''LnN0YXJ0LHkuZW5kXSxmdW5jdGlvbihSZSxOZSl7dmFyIEtlPVJlO3JldHVybiBOZSYmTmUuaGlkZSYmKEtlKz0xKSxLZX0sMCl9fSx7a2V5OiJjbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPVRsKHRoaXMuaG90LnNlbGVjdGlvbi5o''@;'; put 'put ''aWdobGlnaHQuY3VzdG9tU2VsZWN0aW9ucyxmdW5jdGlvbihJKXtyZXR1cm4gSS5zZXR0aW5ncy5pZH0pLmluZGV4T2YoeSk7Qz4tMSYmdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zW0NdLmNsZWFyKCl9fSx7a2V5OiJjbGVhck51bGxDZWxsUmFuZ2UiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztHcih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsZnVuY3Rpb24oQyxJKXtpZihudWxsPT09Qy5jZWxsUmFuZ2UpcmV0dXJuIHkuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9tU2VsZWN0aW9uc1tJXS5k''@;'; put 'put ''ZXN0cm95KCkseS5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLnNwbGljZShJLDEpLCExfSl9fSx7a2V5OiJoaWRlQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO0dyKHRoaXMuc2F2ZWRCb3JkZXJzLGZ1bmN0aW9uKEMpe3kuY2xlYXJCb3JkZXJz''@;'; put 'put ''RnJvbVNlbGVjdGlvblNldHRpbmdzKEMuaWQpLHkuY2xlYXJOdWxsQ2VsbFJhbmdlKCl9KX19LHtrZXk6InNwbGljZUJvcmRlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9VGwodGhpcy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oSSl7cmV0dXJuIEkuaWR9KS5pbmRleE9mKHkpO0M+LTEmJnRo''@;'; put 'put ''aXMuc2F2ZWRCb3JkZXJzLnNwbGljZShDLDEpfX0se2tleToiY2hlY2tTYXZlZEJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST0hMTtyZXR1cm4gND09PXRoaXMuY291bnRIaWRlKHkpPyh0aGlzLnNwbGljZUJvcmRlcih5LmlkKSxJPSEwKTpHcih0aGlzLnNhdmVkQm9y''@;'; put 'put ''ZGVycyxmdW5jdGlvbihjZSxfZSl7aWYoeS5pZD09PWNlLmlkKXJldHVybiBDLnNhdmVkQm9yZGVyc1tfZV09eSxJPSEwLCExfSksSX19LHtrZXk6ImNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPSExO3JldHVybiBHcih0''@;'; put 'put ''aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsZnVuY3Rpb24oY2Upe2lmKHkuaWQ9PT1jZS5zZXR0aW5ncy5pZClyZXR1cm4gWmwoY2UuaW5zdGFuY2VCb3JkZXJzLGZ1bmN0aW9uKF9lKXtfZS50b2dnbGVIaWRkZW5DbGFzcyhDLEkpfSksaj0hMCwhMX0pLGp9''@;'; put 'put ''fSx7a2V5OiJjaGVja0N1c3RvbVNlbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgaj10aGlzLmNvdW50SGlkZSh5KSxjZT0hMTtyZXR1cm4gND09PWo/KHRoaXMucmVtb3ZlQWxsQm9yZGVycyh5LnJvdyx5LmNvbCksY2U9ITApOkdyKHRoaXMuaG90LnNlbGVjdGlvbi5oaWdo''@;'; put 'put ''bGlnaHQuY3VzdG9tU2VsZWN0aW9ucyxmdW5jdGlvbihfZSl7aWYoeS5pZD09PV9lLnNldHRpbmdzLmlkKXJldHVybiBfZS52aXN1YWxDZWxsUmFuZ2U9QyxfZS5jb21taXQoKSxJJiZabChfZS5pbnN0YW5jZUJvcmRlcnMsZnVuY3Rpb24oUmUpe1JlLmNoYW5nZUJvcmRlclN0eWxlKEkseSl9''@;'; put 'put ''KSxjZT0hMCwhMX0pLGNlfX0se2tleToiY2hhbmdlQm9yZGVyU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVskdGVdO2lmKEFycmF5LmlzQXJyYXkoeSkpe3ZhciBDPUFoKHkpO3RoaXMuY2hlY2tTZXR0aW5nc0NvaGVzaW9uKEMpLEMubGVu''@;'; put 'put ''Z3RofHwodGhpcy5zYXZlZEJvcmRlcnM9QyksdGhpcy5jcmVhdGVDdXN0b21Cb3JkZXJzKEMpfWVsc2Ugdm9pZCAwIT09eSYmdGhpcy5jcmVhdGVDdXN0b21Cb3JkZXJzKHRoaXMuc2F2ZWRCb3JkZXJzKX19LHtrZXk6ImNoZWNrU2V0dGluZ3NDb2hlc2lvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7''@;'; put 'put ''dmFyIEM9ZnVuY3Rpb24gZnN0KGQpe3JldHVybiBkLnNvbWUoZnVuY3Rpb24oZyl7cmV0dXJuIEVvKGcubGVmdCl8fEVvKGcucmlnaHQpfSl9KHkpLEk9ZnVuY3Rpb24gaHN0KGQpe3JldHVybiBkLnNvbWUoZnVuY3Rpb24oZyl7cmV0dXJuIEVvKGcuc3RhcnQpfHxFbyhnLmVuZCl9KX0oeSk7''@;'; put 'put ''aWYoQyYmSSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAibGVmdCIvInJpZ2h0IiBhbmQgInN0YXJ0Ii8iZW5kIiBvcHRpb25zIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBvbmx5IHRoZSBvcHRpb24gInN0YXJ0Ii8iZW5kIi4nKTtpZih0aGlzLmhvdC5pc1J0bCgpJiZD''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcignVGhlICJsZWZ0Ii8icmlnaHQiIHByb3BlcnRpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFJUTC4gUGxlYXNlIHVzZSBvcHRpb24gInN0YXJ0Ii8iZW5kIi4nKX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bih5KXshdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVskdGVdfHx5Lml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LHtrZXk6ImJvcmRlcnMiLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGNwZSl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfSxzdWJtZW51OntpdGVtczpbZ3N0KHRoaXMpLG1zdCh0aGlzKSx2c3QodGhpcyksQXN0KHRoaXMpLHlzdCh0aGlzKV19fSl9fSx7a2V5OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNoYW5nZUJvcmRlclNldHRp''@;'; put 'put ''bmdzKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2RNKFV2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuICR0ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIDkwfX1dKSxofShHcyk7ZnVuY3Rpb24gSjhlKGQpe3JldHVybihKOGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''ZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBaeGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFi''@;'; put 'put ''bGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBwTSgpe3JldHVybiBwTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0''@;'; put 'put ''P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9UHN0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxwTS5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUHN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1RdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBYOGUoZCxnKXtyZXR1cm4oWDhlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gTnN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09SjhlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB6eGUoZCl9ZnVuY3Rpb24genhlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGlu''@;'; put 'put ''aXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBRdihkKXtyZXR1cm4oUXY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgR3hlPSJkcmFnVG9TY3JvbGwiLFpzdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gRnN0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIg''@;'; put 'put ''YmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pLGcmJlg4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEhzdChkKXt2YXIgZz1mdW5jdGlvbiBWc3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1RdihkKTtp''@;'; put 'put ''ZihnKXt2YXIgQz1Rdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gTnN0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBSc3QoZCxn''@;'; put 'put ''KXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuZXZlbnRNYW5hZ2VyPW5ldyBQMSh6eGUoeSkpLHkuYm91bmRhcmllcz1udWxsLHkuY2FsbGJhY2s9''@;'; put 'put ''bnVsbCx5Lmxpc3RlbmluZz0hMSx5fXJldHVybiBmdW5jdGlvbiBCc3QoZCxnLGgpe2cmJlp4ZShkLnByb3RvdHlwZSxnKSxoJiZaeGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtHeGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHku''@;'; put 'put ''c2V0dXBMaXN0ZW5pbmcoQyl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixmdW5jdGlvbihDKXtyZXR1cm4geS5zZXR1cExpc3RlbmluZyhDKX0pLHRoaXMucmVnaXN0ZXJFdmVudHMoKSxwTShRdihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcyku''@;'; put 'put ''Y2FsbCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxwTShRdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4i''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51bnJlZ2lzdGVyRXZlbnRzKCkscE0oUXYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2V0Qm91bmRhcmllcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5ib3VuZGFyaWVzPXl9fSx7a2V5OiJzZXRD''@;'; put 'put ''YWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5jYWxsYmFjaz15fX0se2tleToiY2hlY2siLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9MCxqPTA7Qzx0aGlzLmJvdW5kYXJpZXMudG9wP2o9Qy10aGlzLmJvdW5kYXJpZXMudG9wOkM+dGhpcy5ib3VuZGFyaWVzLmJvdHRvbSYmKGo9''@;'; put 'put ''Qy10aGlzLmJvdW5kYXJpZXMuYm90dG9tKSx5PHRoaXMuYm91bmRhcmllcy5sZWZ0P0k9eS10aGlzLmJvdW5kYXJpZXMubGVmdDp5PnRoaXMuYm91bmRhcmllcy5yaWdodCYmKEk9eS10aGlzLmJvdW5kYXJpZXMucmlnaHQpLHRoaXMuY2FsbGJhY2soSSxqKX19LHtrZXk6Imxpc3RlbiIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmluZz0hMH19LHtrZXk6InVubGlzdGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubGlzdGVuaW5nPSExfX0se2tleToiaXNMaXN0ZW5pbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGlzdGVuaW5nfX0se2tleToicmVnaXN0ZXJFdmVu''@;'; put 'put ''dHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PXRoaXMsST10aGlzLmhvdC5yb290V2luZG93O0k7KXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSS5kb2N1bWVudCwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKCl7cmV0dXJuIHkudW5saXN0ZW4oKX0pLHRoaXMuZXZlbnRN''@;'; put 'put ''YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSS5kb2N1bWVudCwibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4geS51bmxpc3RlbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLmRvY3VtZW50LCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGope3JldHVybiB5Lm9uTW91c2VN''@;'; put 'put ''b3ZlKGopfSksST13M2UoSSl9fSx7a2V5OiJ1bnJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyKCl9fSx7a2V5OiJzZXR1cExpc3RlbmluZyIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoIVB3KHkpKXt2YXIgQz10aGlzLmhvdC52aWV3Ll93dC53''@;'; put 'put ''dFRhYmxlLmhvbGRlcjtDIT09dGhpcy5ob3Qucm9vdFdpbmRvdyYmKHRoaXMuc2V0Qm91bmRhcmllcyhDLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSx0aGlzLnNldENhbGxiYWNrKGZ1bmN0aW9uKEksail7STwwP0Muc2Nyb2xsTGVmdC09NTA6ST4wJiYoQy5zY3JvbGxMZWZ0Kz01MCksajww''@;'; put 'put ''P0Muc2Nyb2xsVG9wLT0yMDpqPjAmJihDLnNjcm9sbFRvcCs9MjApfSksdGhpcy5saXN0ZW4oKSl9fX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpeyF0aGlzLmlzTGlzdGVuaW5nKCl8fHRoaXMuY2hlY2soeS5jbGllbnRYLHkuY2xpZW50WSl9fSx7a2V5OiJkZXN0cm95''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3BNKFF2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEd4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEwMH19''@;'; put 'put ''XSksaH0oR3MpO2Z1bmN0aW9uIEs4ZShkKXtyZXR1cm4oSzhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gV3hlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEs''@;'; put 'put ''di5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZ00oKXtyZXR1cm4gZ009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6''@;'; put 'put ''ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVdzdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sZ00uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1''@;'; put 'put ''bmN0aW9uIFdzdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9SnYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gJDhlKGQsZyl7cmV0dXJuKCQ4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''LmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFFzdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PUs4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVy''@;'; put 'put ''aXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gWXhlKGQpfWZ1bmN0aW9uIFl4ZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg''@;'; put 'put ''aGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gSnYoZCl7cmV0dXJuKEp2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSko''@;'; put 'put ''ZCl9Vm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckRyb3Bkb3duTWVudVNo''@;'; put 'put ''b3ciKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51RXhlY3V0ZSIpO3ZhciBxOGU9ImRyb3Bkb3duTWVudSIsZTVlPSJjaGFuZ2VUeXBlIixVeGU9ZnVuY3Rpb24o''@;'; put 'put ''ZCl7IWZ1bmN0aW9uIFlzdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90''@;'; put 'put ''b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiYkOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBVc3QoZCl7dmFyIGc9ZnVuY3Rpb24g''@;'; put 'put ''SnN0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5j''@;'; put 'put ''YWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SnYoZCk7aWYoZyl7dmFyIEM9SnYodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3Vt''@;'; put 'put ''ZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFFzdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24genN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj''@;'; put 'put ''bGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmV2ZW50TWFuYWdlcj1uZXcgUDEoWXhlKHkpKSx5LmNvbW1hbmRFeGVjdXRvcj1uZXcgY3hlKHkuaG90KSx5Lml0ZW1zRmFjdG9yeT1udWxsLHkubWVudT1udWxsLHkuaG90LmFkZEhvb2soImFmdGVyR2V0''@;'; put 'put ''Q29sSGVhZGVyIixmdW5jdGlvbihDLEkpe3JldHVybiB5Lm9uQWZ0ZXJHZXRDb2xIZWFkZXIoQyxJKX0pLHl9cmV0dXJuIGZ1bmN0aW9uIEdzdChkLGcsaCl7ZyYmV3hlKGQucHJvdG90eXBlLGcpLGgmJld4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0''@;'; put 'put ''YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG90LmdldFNldHRpbmdzKClbcThlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3RoaXMuaXRlbXNGYWN0''@;'; put 'put ''b3J5PW5ldyB2eGUodGhpcy5ob3QsaC5ERUZBVUxUX0lURU1TKTt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3E4ZV0sST17aXRlbXM6dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoQyl9O3RoaXMucmVnaXN0ZXJFdmVudHMoKSwiZnVuY3Rpb24iPT10eXBlb2YgQy5jYWxsYmFjayYm''@;'; put 'put ''dGhpcy5jb21tYW5kRXhlY3V0b3Iuc2V0Q29tbW9uQ2FsbGJhY2soQy5jYWxsYmFjayksZ00oSnYoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5jYWxsT25QbHVnaW5zUmVhZHkoZnVuY3Rpb24oKXt5LmhvdC5ydW5Ib29rcygiYWZ0ZXJEcm9wZG93''@;'; put 'put ''bk1lbnVEZWZhdWx0T3B0aW9ucyIsSSkseS5pdGVtc0ZhY3Rvcnkuc2V0UHJlZGVmaW5lZEl0ZW1zKEkuaXRlbXMpO3ZhciBqPXkuaXRlbXNGYWN0b3J5LmdldEl0ZW1zKEMpO3kubWVudSYmeS5tZW51LmRlc3Ryb3koKSx5Lm1lbnU9bmV3IE44ZSh5LmhvdCx7Y2xhc3NOYW1lOiJodERyb3Bk''@;'; put 'put ''b3duTWVudSIsa2VlcEluVmlld3BvcnQ6ITAsY29udGFpbmVyOkMudWlDb250YWluZXJ8fHkuaG90LnJvb3REb2N1bWVudC5ib2R5fSkseS5ob3QucnVuSG9va3MoImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixqKSx5Lm1lbnUuc2V0TWVudUl0ZW1zKGopLHkubWVudS5hZGRMb2NhbEhv''@;'; put 'put ''b2soImJlZm9yZU9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NZW51QmVmb3JlT3BlbigpfSkseS5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWVudUFmdGVyT3BlbigpfSkseS5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4geS5vbk1lbnVBZnRlckNsb3NlKCl9KSx5Lm1lbnUuYWRkTG9jYWxIb29rKCJleGVjdXRlQ29tbWFuZCIsZnVuY3Rpb24oKXtmb3IodmFyIGNlLF9lPWFyZ3VtZW50cy5sZW5ndGgsUmU9bmV3IEFycmF5KF9lKSxOZT0wO05lPF9lO05lKyspUmVbTmVdPWFyZ3VtZW50''@;'; put 'put ''c1tOZV07cmV0dXJuKGNlPXkuZXhlY3V0ZUNvbW1hbmQpLmNhbGwuYXBwbHkoY2UsW3ldLmNvbmNhdChSZSkpfSksR3IoaixmdW5jdGlvbihjZSl7cmV0dXJuIHkuY29tbWFuZEV4ZWN1dG9yLnJlZ2lzdGVyQ29tbWFuZChjZS5rZXksY2UpfSl9KX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxnTShKdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgpLHRoaXMu''@;'; put 'put ''bWVudSYmdGhpcy5tZW51LmRlc3Ryb3koKSxnTShKdihoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJyZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo''@;'; put 'put ''dGhpcy5ob3Qucm9vdEVsZW1lbnQsImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4geS5vblRhYmxlQ2xpY2soQyl9KX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKHkpeyF0aGlzLm1lbnV8fCh0aGlzLm1lbnUub3BlbigpLHkud2lkdGgmJnRoaXMubWVudS5zZXRPZmZzZXQoImxlZnQi''@;'; put 'put ''LHkud2lkdGgpLHRoaXMubWVudS5zZXRQb3NpdGlvbih5KSl9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5tZW51fHx0aGlzLm1lbnUuY2xvc2UoKX19LHtrZXk6ImV4ZWN1dGVDb21tYW5kIix2YWx1ZTpmdW5jdGlvbih5KXtmb3IodmFyIEMsST1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoLGo9bmV3IEFycmF5KEk+MT9JLTE6MCksY2U9MTtjZTxJO2NlKyspaltjZS0xXT1hcmd1bWVudHNbY2VdOyhDPXRoaXMuY29tbWFuZEV4ZWN1dG9yKS5leGVjdXRlLmFwcGx5KEMsW3ldLmNvbmNhdChqKSl9fSx7a2V5OiJzZXRMaXN0ZW5pbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9''@;'; put 'put ''IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTt0aGlzLm1lbnUuaXNPcGVuZWQoKSYmKHk/dGhpcy5tZW51LmhvdE1lbnUubGlzdGVuKCk6dGhpcy5tZW51LmhvdE1lbnUudW5saXN0ZW4oKSl9fSx7a2V5OiJvblRhYmxlQ2xpY2siLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHkpe2lmKHkuc3RvcFByb3BhZ2F0aW9uKCksWGEoeS50YXJnZXQsZTVlKSYmIXRoaXMubWVudS5pc09wZW5lZCgpKXt2YXIgQz0wLEk9MDtpZih0aGlzLmhvdC5yb290RG9jdW1lbnQhPT10aGlzLm1lbnUuY29udGFpbmVyLm93bmVyRG9jdW1lbnQpe3ZhciBjZT10aGlz''@;'; put 'put ''LmhvdC5yb290V2luZG93LmZyYW1lRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtDPWNlLnRvcCxJPWNlLmxlZnR9dmFyIE5lPXkudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMub3Blbih7bGVmdDpOZS5sZWZ0K0ksdG9wOk5lLnRvcCt5LnRhcmdldC5vZmZzZXRI''@;'; put 'put ''ZWlnaHQrMytDLHdpZHRoOk5lLndpZHRoLGhlaWdodDpOZS5oZWlnaHR9KX19fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPUMucGFyZW50Tm9kZTtpZihJKXt2YXIgaj1JLnBhcmVudE5vZGUuY2hpbGROb2RlcyxjZT1BcnJheS5wcm90b3R5''@;'; put 'put ''cGUuaW5kZXhPZi5jYWxsKGosSSk7aWYoISh5PDB8fGNlIT09ai5sZW5ndGgtMSkpe3ZhciBfZT1DLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChlNWUpKTtpZighdGhpcy5lbmFibGVkfHwhX2Upe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQoX2UmJl9lLnBhcmVudE5vZGUucmVtb3Zl''@;'; put 'put ''Q2hpbGQoX2UpKTt2YXIgUmU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO1JlLmNsYXNzTmFtZT1lNWUsUmUudHlwZT0iYnV0dG9uIixSZS5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEMuZmlyc3RDaGlsZC5pbnNlcnRCZWZvcmUoUmUsQy5maXJz''@;'; put 'put ''dENoaWxkLmZpcnN0Q2hpbGQpfX19fX0se2tleToib25NZW51QmVmb3JlT3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlck9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qu''@;'; put 'put ''cnVuSG9va3MoImFmdGVyRHJvcGRvd25NZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlckNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90Lmxpc3RlbigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckRyb3Bkb3duTWVudUhpZGUiLHRoaXMpfX0se2tleToiZGVzdHJveSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLGdNKEp2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHE4ZX19LHtrZXk6IlBM''@;'; put 'put ''VUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDIzMH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bInBsdWdpbjpBdXRvQ29sdW1uU2l6ZSJdfX0se2tleToiREVGQVVMVF9JVEVNUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW1p6LHp6LHpsLFd6''@;'; put 'put ''LHpsLFZ0ZSx6bCxHeix6bCx4cF19fV0pLGh9KEdzKTtmdW5jdGlvbiBReGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBKeGUoZCxnKXtmb3IodmFy''@;'; put 'put ''IGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1VeGUuU0VQQVJBVE9SPXtuYW1lOnps''@;'; put 'put ''fTt2YXIgaTJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gbjJ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5vcHRpb25z''@;'; put 'put ''PXt9fXJldHVybiBmdW5jdGlvbiByMnQoZCxnLGgpe2cmJkp4ZShkLnByb3RvdHlwZSxnKSxoJiZKeGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5vcHRp''@;'; put 'put ''b25zPWh9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj10aGlzLl9nZXREYXRhUmFuZ2UoKSxDPXYuc3RhcnRDb2wsaj12LmVuZENvbCxjZT10aGlzLm9wdGlvbnMsX2U9W107cmV0dXJuIHJhKHYuc3RhcnRSb3csdi5lbmRSb3csZnVuY3Rpb24oUmUpe3Zh''@;'; put 'put ''ciBOZT1bXTshY2UuZXhwb3J0SGlkZGVuUm93cyYmaC5faXNIaWRkZW5Sb3coUmUpfHwocmEoQyxqLGZ1bmN0aW9uKEtlKXshY2UuZXhwb3J0SGlkZGVuQ29sdW1ucyYmaC5faXNIaWRkZW5Db2x1bW4oS2UpfHxOZS5wdXNoKGguaG90LmdldERhdGFBdENlbGwoUmUsS2UpKX0pLF9lLnB1c2go''@;'; put 'put ''TmUpKX0pLF9lfX0se2tleToiZ2V0Um93SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9W107aWYodGhpcy5vcHRpb25zLnJvd0hlYWRlcnMpe3ZhciB5PXRoaXMuX2dldERhdGFSYW5nZSgpLEM9eS5zdGFydFJvdyxJPXkuZW5kUm93LGo9dGhpcy5ob3QuZ2V0Um93SGVh''@;'; put 'put ''ZGVyKCk7cmEoQyxJLGZ1bmN0aW9uKGNlKXshaC5vcHRpb25zLmV4cG9ydEhpZGRlblJvd3MmJmguX2lzSGlkZGVuUm93KGNlKXx8di5wdXNoKGpbY2VdKX0pfXJldHVybiB2fX0se2tleToiZ2V0Q29sdW1uSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9W107aWYodGhp''@;'; put 'put ''cy5vcHRpb25zLmNvbHVtbkhlYWRlcnMpe3ZhciB5PXRoaXMuX2dldERhdGFSYW5nZSgpLEM9eS5zdGFydENvbCxJPXkuZW5kQ29sLGo9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKCk7cmEoQyxJLGZ1bmN0aW9uKGNlKXshaC5vcHRpb25zLmV4cG9ydEhpZGRlbkNvbHVtbnMmJmguX2lzSGlkZGVu''@;'; put 'put ''Q29sdW1uKGNlKXx8di5wdXNoKGpbY2VdKX0pfXJldHVybiB2fX0se2tleToiX2dldERhdGFSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmhvdC5jb3VudENvbHMoKS0xLHY9dGhpcy5ob3QuY291bnRSb3dzKCktMSx5PWZ1bmN0aW9uIEtzdChkLGcpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''biB0MnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIGUydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2''@;'; put 'put ''PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZp''@;'; put 'put ''bmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHFzdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gUXhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09''@;'; put 'put ''aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBReGUo''@;'; put 'put ''ZCxnKX19KGQsZyl8fGZ1bmN0aW9uICRzdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJv''@;'; put 'put ''bC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KHRoaXMub3B0aW9ucy5yYW5nZSw0KSxDPXlbMF0sST12b2lkIDA9PT1DPzA6QyxqPXlbMV0sY2U9dm9pZCAwPT09aj8wOmosX2U9eVsyXSxSZT12b2lkIDA9PT1fZT92Ol9lLE5lPXlbM10sS2U9dm9pZCAwPT09TmU/aDpOZTtyZXR1cm57c3Rh''@;'; put 'put ''cnRSb3c6ST1NYXRoLm1heChJLDApLHN0YXJ0Q29sOmNlPU1hdGgubWF4KGNlLDApLGVuZFJvdzpSZT1NYXRoLm1pbihSZSx2KSxlbmRDb2w6S2U9TWF0aC5taW4oS2UsaCl9fX0se2tleToiX2lzSGlkZGVuUm93Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhN''@;'; put 'put ''YXBwZXIuaXNIaWRkZW4odGhpcy5ob3QudG9QaHlzaWNhbFJvdyhoKSl9fSx7a2V5OiJfaXNIaWRkZW5Db2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbih0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGgpKX19XSksZH0o''@;'; put 'put ''KTtjb25zdCBvMnQ9aTJ0O2Z1bmN0aW9uIFh4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsdi5rZXksdil9fXZhciBzMnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGEydChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlz''@;'; put 'put ''LmRhdGFQcm92aWRlcj1nLHRoaXMub3B0aW9ucz10aGlzLl9tZXJnZU9wdGlvbnMoaCksdGhpcy5kYXRhUHJvdmlkZXIuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMpfXJldHVybiBmdW5jdGlvbiBsMnQoZCxnLGgpe2cmJlh4ZShkLnByb3RvdHlwZSxnKSxoJiZYeGUoZCxoKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiX21lcmdlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9czModGhpcy5jb25zdHJ1Y3Rvci5ERUZBVUxUX09QVElPTlMpLHk9bmV3IERhdGU7cmV0dXJuIHY9UjEoczMoZC5ERUZBVUxUX09Q''@;'; put 'put ''VElPTlMpLHYpLCh2PVIxKHYsaCkpLmZpbGVuYW1lPXYzZSh2LmZpbGVuYW1lLHtZWVlZOnkuZ2V0RnVsbFllYXIoKSxNTToiIi5jb25jYXQoeS5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKSxERDoiIi5jb25jYXQoeS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIjAiKX0pLHZ9fV0sW3tr''@;'; put 'put ''ZXk6IkRFRkFVTFRfT1BUSU9OUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue21pbWVUeXBlOiJ0ZXh0L3BsYWluIixmaWxlRXh0ZW5zaW9uOiJ0eHQiLGZpbGVuYW1lOiJIYW5kc29udGFibGUgW1lZWVldLVtNTV0tW0REXSIsZW5jb2Rpbmc6InV0Zi04Iixib206ITEsY29sdW1uSGVhZGVyczoh''@;'; put 'put ''MSxyb3dIZWFkZXJzOiExLGV4cG9ydEhpZGRlbkNvbHVtbnM6ITEsZXhwb3J0SGlkZGVuUm93czohMSxyYW5nZTpbXX19fV0pLGR9KCk7Y29uc3QgdTJ0PXMydDtmdW5jdGlvbiB0NWUoZCl7cmV0dXJuKHQ1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0''@;'; put 'put ''aW9uIGMydChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEt4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVu''@;'; put 'put ''dW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIG41ZShkLGcpe3JldHVybihuNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVP''@;'; put 'put ''Zi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBwMnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT10NWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRl''@;'; put 'put ''cml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGcydChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0''@;'; put 'put ''IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIHF0ZShkKXtyZXR1cm4ocXRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSko''@;'; put 'put ''ZCl9dmFyIHYydD1TdHJpbmcuZnJvbUNoYXJDb2RlKDEzKSxBMnQ9U3RyaW5nLmZyb21DaGFyQ29kZSgzNCkseTJ0PVN0cmluZy5mcm9tQ2hhckNvZGUoMTApLHcydD1mdW5jdGlvbihkKXshZnVuY3Rpb24gaDJ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJm41ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGQydChkKXt2YXIgZz1mdW5jdGlvbiBtMnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVm''@;'; put 'put ''bGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXty''@;'; put 'put ''ZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1xdGUoZCk7aWYoZyl7dmFyIEM9cXRlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBwMnQodGhpcyx5KX19''@;'; put 'put ''KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gYzJ0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIGYydChkLGcsaCl7ZyYmS3hlKGQucHJvdG90eXBlLGcpLGgmJkt4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pfShoLFt7a2V5OiJleHBvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMub3B0aW9ucyxJPXRoaXMuZGF0YVByb3ZpZGVyLmdldERhdGEoKSxqPXRoaXMuZGF0YVByb3ZpZGVyLmdldENvbHVtbkhlYWRlcnMoKSxjZT1qLmxlbmd0aD4wLF9lPXRoaXMuZGF0YVBy''@;'; put 'put ''b3ZpZGVyLmdldFJvd0hlYWRlcnMoKSxSZT1fZS5sZW5ndGg+MCxOZT1DLmJvbT9TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KToiIjtyZXR1cm4gY2UmJihqPVRsKGosZnVuY3Rpb24oS2Upe3JldHVybiB5Ll9lc2NhcGVDZWxsKEtlLCEwKX0pLFJlJiYoTmUrPUMuY29sdW1uRGVsaW1pdGVy''@;'; put 'put ''KSxOZSs9ai5qb2luKEMuY29sdW1uRGVsaW1pdGVyKSxOZSs9Qy5yb3dEZWxpbWl0ZXIpLEdyKEksZnVuY3Rpb24oS2UsaHQpe2h0PjAmJihOZSs9Qy5yb3dEZWxpbWl0ZXIpLFJlJiYoTmUrPXkuX2VzY2FwZUNlbGwoX2VbaHRdKStDLmNvbHVtbkRlbGltaXRlciksTmUrPUtlLm1hcChmdW5j''@;'; put 'put ''dGlvbihCdCl7cmV0dXJuIHkuX2VzY2FwZUNlbGwoQnQpfSkuam9pbihDLmNvbHVtbkRlbGltaXRlcil9KSxOZX19LHtrZXk6Il9lc2NhcGVDZWxsIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFd''@;'; put 'put ''LEk9cTEoeSk7cmV0dXJuIiIhPT1JJiYoQ3x8SS5pbmRleE9mKHYydCk+PTB8fEkuaW5kZXhPZihBMnQpPj0wfHxJLmluZGV4T2YoeTJ0KT49MHx8SS5pbmRleE9mKHRoaXMub3B0aW9ucy5jb2x1bW5EZWxpbWl0ZXIpPj0wKSYmKEk9SS5yZXBsYWNlKG5ldyBSZWdFeHAoJyInLCJnIiksJyIi''@;'; put 'put ''JyksST0nIicuY29uY2F0KEksJyInKSksSX19XSxbe2tleToiREVGQVVMVF9PUFRJT05TIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57bWltZVR5cGU6InRleHQvY3N2IixmaWxlRXh0ZW5zaW9uOiJjc3YiLGJvbTohMCxjb2x1bW5EZWxpbWl0ZXI6IiwiLHJvd0RlbGltaXRlcjoiXHJcbiJ9fX1d''@;'; put 'put ''KSxofSh1MnQpLHI1ZT1mdW5jdGlvbiBfMnQoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfSh7fSwiY3N2Iix3MnQpO2Z1bmN0aW9uIGsydChk''@;'; put 'put ''LGcsaCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI1ZVtkXT9uZXcgcjVlW2RdKGcsaCk6bnVsbH1mdW5jdGlvbiBpNWUoZCl7cmV0dXJuKGk1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''dHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFMydChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcp''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uICR4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2''@;'; put 'put ''YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIG81ZShkLGcpe3JldHVybihvNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5f''@;'; put 'put ''X3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBUMnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1pNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVy''@;'; put 'put ''biBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEkydChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0''@;'; put 'put ''aW9uIGVuZShkKXtyZXR1cm4oZW5lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIFIydD1mdW5jdGlvbihkKXshZnVuY3Rpb24g''@;'; put 'put ''RTJ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3Ry''@;'; put 'put ''dWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJm81ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHgydChkKXt2YXIgZz1mdW5jdGlvbiBEMnQoKXtpZigidW5k''@;'; put 'put ''ZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5j''@;'; put 'put ''b25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1lbmUoZCk7aWYoZyl7dmFyIEM9ZW5lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxz''@;'; put 'put ''ZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBUMnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gUzJ0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIE0ydChkLGcsaCl7ZyYmJHhlKGQucHJvdG90eXBlLGcpLGgmJiR4ZShk''@;'; put 'put ''LGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJleHBvcnRBc1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiB0aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKHksQykuZXhwb3J0KCl9fSx7a2V5OiJleHBvcnRBc0Jsb2IiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gdGhpcy5fY3JlYXRlQmxvYih0aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKHksQykpfX0se2tleToiZG93bmxvYWRGaWxlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1sxXT9hcmd1bWVudHNbMV06e30sST10aGlzLmhvdCxqPUkucm9vdERvY3VtZW50LGNlPUkucm9vdFdpbmRvdyxfZT10aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKHksQyksUmU9dGhpcy5fY3JlYXRlQmxvYihfZSksTmU9Y2UuVVJMfHxjZS53ZWJraXRVUkwsS2U9ai5jcmVhdGVFbGVt''@;'; put 'put ''ZW50KCJhIiksaHQ9IiIuY29uY2F0KF9lLm9wdGlvbnMuZmlsZW5hbWUsIi4iKS5jb25jYXQoX2Uub3B0aW9ucy5maWxlRXh0ZW5zaW9uKTtpZih2b2lkIDAhPT1LZS5kb3dubG9hZCl7dmFyIEJ0PU5lLmNyZWF0ZU9iamVjdFVSTChSZSk7S2Uuc3R5bGUuZGlzcGxheT0ibm9uZSIsS2Uuc2V0''@;'; put 'put ''QXR0cmlidXRlKCJocmVmIixCdCksS2Uuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsaHQpLGouYm9keS5hcHBlbmRDaGlsZChLZSksS2UuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgiY2xpY2siKSksai5ib2R5LnJlbW92ZUNoaWxkKEtlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TmUu''@;'; put 'put ''cmV2b2tlT2JqZWN0VVJMKEJ0KX0sMTAwKX1lbHNlIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iJiZuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihSZSxodCl9fSx7a2V5OiJfY3JlYXRlVHlwZUZvcm1hdHRlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0aD4x''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFyNWVbeV0pdGhyb3cgbmV3IEVycm9yKCdFeHBvcnQgZm9ybWF0IHR5cGUgIicuY29uY2F0KHksJyIgaXMgbm90IHN1cHBvcnRlZC4nKSk7cmV0dXJuIGsydCh5LG5ldyBvMnQodGhpcy5ob3QpLEMpfX0se2tleToi''@;'; put 'put ''X2NyZWF0ZUJsb2IiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPW51bGw7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYoQz1uZXcgQmxvYihbeS5leHBvcnQoKV0se3R5cGU6IiIuY29uY2F0KHkub3B0aW9ucy5taW1lVHlwZSwiO2NoYXJzZXQ9IikuY29uY2F0KHkub3B0aW9ucy5l''@;'; put 'put ''bmNvZGluZyl9KSksQ319XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImV4cG9ydEZpbGUifX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjQwfX1dKSxofShHcyk7ZnVuY3Rpb24gcXhlKGQsZyl7Zm9yKHZhciBoPTA7aDxn''@;'; put 'put ''Lmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGVUZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQo''@;'; put 'put ''ZyxoKXt2YXIgdj1oLmlkLHk9aC5zdGF0ZWxlc3MsQz12b2lkIDA9PT15fHx5OyhmdW5jdGlvbiBCMnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9Zyx0''@;'; put 'put ''aGlzLmlkPXYsdGhpcy5lbGVtZW50cz1bXSx0aGlzLmhpZGRlbj0hMSx0aGlzLnN0YXRlSWQ9IkZpbHRlcnMuY29tcG9uZW50LiIuY29uY2F0KHRoaXMuaWQpLHRoaXMuc3RhdGU9Qz9udWxsOnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMuc3RhdGVJZCxuZXcg''@;'; put 'put ''UWVlKX1yZXR1cm4gZnVuY3Rpb24gUDJ0KGQsZyxoKXtnJiZxeGUoZC5wcm90b3R5cGUsZyksaCYmcXhlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe0dyKHRoaXMuZWxlbWVu''@;'; put 'put ''dHMsZnVuY3Rpb24oaCl7cmV0dXJuIGgucmVzZXQoKX0pfX0se2tleToiaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhpZGRlbj0hMH19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oaWRkZW49ITF9fSx7a2V5OiJpc0hpZGRlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gbnVsbD09PXRoaXMuaG90fHx0aGlzLmhpZGRlbn19LHtrZXk6InJlc3RvcmVTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5zdGF0ZSYmdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlLmdldFZhbHVlQXRJbmRleChoKSl9fSx7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIlRoZSBzdGF0ZSBzZXR0aW5nIGxvZ2ljIGlzIG5vdCBpbXBsZW1lbnRlZCIpfX0se2tleToic2F2ZVN0YXRlIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnN0YXRlJiZ0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChoLHRoaXMuZ2V0U3RhdGUoKSl9fSx7a2V5OiJn''@;'; put 'put ''ZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlRoZSBzdGF0ZSBnYXRoZXJpbmcgbG9naWMgaXMgbm90IGltcGxlbWVudGVkIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAo''@;'; put 'put ''dGhpcy5zdGF0ZUlkKSx0aGlzLmNsZWFyTG9jYWxIb29rcygpLEdyKHRoaXMuZWxlbWVudHMsZnVuY3Rpb24oaCl7cmV0dXJuIGguZGVzdHJveSgpfSksdGhpcy5zdGF0ZT1udWxsLHRoaXMuZWxlbWVudHM9bnVsbCx0aGlzLmhvdD1udWxsfX1dKSxkfSgpO0kyKGVUZSxyZCk7Y29uc3QgdG5l''@;'; put 'put ''PWVUZTt2YXIgSno9e307ZnVuY3Rpb24gUXcoZCxnKXtpZighSnpbZF0pdGhyb3cgRXJyb3IoJ0ZpbHRlciBjb25kaXRpb24gIicuY29uY2F0KGQsJyIgZG9lcyBub3QgZXhpc3QuJykpO3ZhciBoPUp6W2RdLHY9aC5jb25kaXRpb24seT1oLmRlc2NyaXB0b3IsQz1nO3JldHVybiB5LmlucHV0''@;'; put 'put ''VmFsdWVzRGVjb3JhdG9yJiYoQz15LmlucHV0VmFsdWVzRGVjb3JhdG9yKEMpKSxmdW5jdGlvbihJKXtyZXR1cm4gdi5hcHBseShJLm1ldGEuaW5zdGFuY2UsW10uY29uY2F0KFtJXSxbQ10pKX19ZnVuY3Rpb24gblIoZCl7aWYoIUp6W2RdKXRocm93IEVycm9yKCdGaWx0ZXIgY29uZGl0aW9u''@;'; put 'put ''ICInLmNvbmNhdChkLCciIGRvZXMgbm90IGV4aXN0LicpKTtyZXR1cm4gSnpbZF0uZGVzY3JpcHRvcn1mdW5jdGlvbiBHdShkLGcsaCl7aC5rZXk9ZCxKeltkXT17Y29uZGl0aW9uOmcsZGVzY3JpcHRvcjpofX12YXIgT2Y9Im5vbmUiO0d1KE9mLGZ1bmN0aW9uIEYydCgpe3JldHVybiEwfSx7''@;'; put 'put ''bmFtZTpudGUsaW5wdXRzQ291bnQ6MCxzaG93T3BlcmF0b3JzOiExfSk7dmFyIFh6PSJlbXB0eSI7R3UoWHosZnVuY3Rpb24gSDJ0KGQpe3JldHVybiBkYyhkLnZhbHVlKX0se25hbWU6X3BlLGlucHV0c0NvdW50OjAsc2hvd09wZXJhdG9yczohMH0pO3ZhciBubmU9Im5vdF9lbXB0eSI7ZnVu''@;'; put 'put ''Y3Rpb24gdFRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9R3Uobm5lLGZ1bmN0aW9uIE4ydChkLGcpe3JldHVybiFRdyhYeixnKShkKX0se25hbWU6Q3BlLGlucHV0''@;'; put 'put ''c0NvdW50OjAsc2hvd09wZXJhdG9yczohMH0pO3ZhciBLej0iZXEiO2Z1bmN0aW9uIG5UZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIGlUZShkLGcp''@;'; put 'put ''eyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIGFUZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFy''@;'; put 'put ''cmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHNUZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIGNUZShkLGcpeyhudWxs''@;'; put 'put ''PT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fUd1KEt6LGZ1bmN0aW9uIFcydChkLGcpe3ZhciB2PWZ1bmN0aW9uIFYydChkLGcpe3JldHVybiBmdW5jdGlvbiBHMnQoZCl7aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHoydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7''@;'; put 'put ''Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBq''@;'; put 'put ''fX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIFoydChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gdFRlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYm''@;'; put 'put ''KGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiB0VGUoZCxnKX19KGQsZyl8fGZ1bmN0''@;'; put 'put ''aW9uIGoydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRo''@;'; put 'put ''b2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIHExKGQudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGQubWV0YS5sb2NhbGUpPT09cTEodil9LHtuYW1lOmtwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxHdSgibmVxIixmdW5jdGlvbiBZMnQoZCxnKXtyZXR1cm4hUXcoS3osZyko''@;'; put 'put ''ZCl9LHtuYW1lOlNwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxHdSgiZ3QiLGZ1bmN0aW9uICQydChkLGcpe3ZhciB5PWZ1bmN0aW9uIFUydChkLGcpe3JldHVybiBmdW5jdGlvbiBLMnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIFgy''@;'; put 'put ''dChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9u''@;'; put 'put ''ZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIEoydChkLGcp''@;'; put 'put ''e2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gblRlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJT''@;'; put 'put ''ZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBuVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIFEydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFs''@;'; put 'put ''aWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09''@;'; put 'put ''ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU+eX0se25hbWU6SXBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLEd1KCJndGUiLGZ1bmN0aW9uIGkxdChkLGcpe3ZhciB5PWZ1bmN0aW9uIHEydChkLGcpe3JldHVybiBmdW5jdGlvbiByMXQoZCl7aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIG4xdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0h''@;'; put 'put ''MTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0''@;'; put 'put ''aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHQxdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gaVRlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1''@;'; put 'put ''Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBpVGUoZCxnKX19KGQsZyl8''@;'; put 'put ''fGZ1bmN0aW9uIGUxdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0o''@;'; put 'put ''KSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU+PXl9LHtuYW1lOkRwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxHdSgibHQiLGZ1bmN0aW9uIGMxdChkLGcpe3ZhciB5PWZ1''@;'; put 'put ''bmN0aW9uIG8xdChkLGcpe3JldHVybiBmdW5jdGlvbiB1MXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHMxdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0''@;'; put 'put ''ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkm''@;'; put 'put ''Jm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIGwxdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gYVRlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs''@;'; put 'put ''KGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBl''@;'; put 'put ''ZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBhVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIGExdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFy''@;'; put 'put ''cmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU8eX0se25hbWU6THBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9y''@;'; put 'put ''czohMH0pLEd1KCJsdGUiLGZ1bmN0aW9uIG0xdChkLGcpe3ZhciB5PWZ1bmN0aW9uIGYxdChkLGcpe3JldHVybiBmdW5jdGlvbiBnMXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHAxdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7''@;'; put 'put ''eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIGQxdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gc1Rl''@;'; put 'put ''KGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1l''@;'; put 'put ''bnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBzVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIGgxdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUg''@;'; put 'put ''aW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFs''@;'; put 'put ''dWU8PXl9LHtuYW1lOk9wZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgYTVlPSJkYXRlX2FmdGVyIjtmdW5jdGlvbiBmVGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09''@;'; put 'put ''ZFtoXTtyZXR1cm4gdn1HdShhNWUsZnVuY3Rpb24gXzF0KGQsZyl7dmFyIHY9ZnVuY3Rpb24gdjF0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGIxdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gdzF0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGgh''@;'; put 'put ''PT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24geTF0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVy''@;'; put 'put ''biBjVGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJB''@;'; put 'put ''cmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGNUZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gQTF0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVy''@;'; put 'put ''YWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZywxKVswXSx5PWtsKGQudmFsdWUsZC5tZXRhLmRhdGVGb3JtYXQpLEM9a2wodixkLm1ldGEuZGF0ZUZv''@;'; put 'put ''cm1hdCk7cmV0dXJuISgheS5pc1ZhbGlkKCl8fCFDLmlzVmFsaWQoKSkmJnkuZGlmZihDKT49MH0se25hbWU6UHBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO3ZhciBsNWU9ImRhdGVfYmVmb3JlIjtmdW5jdGlvbiBoVGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihn''@;'; put 'put ''PWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1HdShsNWUsZnVuY3Rpb24geDF0KGQsZyl7dmFyIHY9ZnVuY3Rpb24gQzF0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIEUxdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBk''@;'; put 'put ''fShkKXx8ZnVuY3Rpb24gTTF0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5''@;'; put 'put ''PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8''@;'; put 'put ''ZnVuY3Rpb24gUzF0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBmVGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5h''@;'; put 'put ''bWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGZUZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gazF0KCl7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZywxKVswXSx5''@;'; put 'put ''PWtsKGQudmFsdWUsZC5tZXRhLmRhdGVGb3JtYXQpLEM9a2wodixkLm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISgheS5pc1ZhbGlkKCl8fCFDLmlzVmFsaWQoKSkmJnkuZGlmZihDKTw9MH0se25hbWU6RnBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO3ZhciBpbmU9ImJldHdl''@;'; put 'put ''ZW4iO0d1KGluZSxmdW5jdGlvbiBSMXQoZCxnKXt2YXIgaD1mdW5jdGlvbiBUMXQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gTzF0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBMMXQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITAp''@;'; put 'put ''O31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBEMXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGhUZShkLGcp''@;'; put 'put ''O3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9''@;'; put 'put ''PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gaFRlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBJMXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3Rh''@;'; put 'put ''bmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShnLDIpLEM9aFswXSxJPWhbMV07aWYoIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUpe3ZhciBqPXBhcnNlRmxvYXQoQywxMCks''@;'; put 'put ''Y2U9cGFyc2VGbG9hdChJLDEwKTtDPU1hdGgubWluKGosY2UpLEk9TWF0aC5tYXgoaixjZSl9ZWxzZSBpZigiZGF0ZSI9PT1kLm1ldGEudHlwZSl7dmFyIF9lPVF3KGw1ZSxbSV0pLFJlPVF3KGE1ZSxbQ10pO3JldHVybiBfZShkKSYmUmUoZCl9cmV0dXJuIGQudmFsdWU+PUMmJmQudmFsdWU8''@;'; put 'put ''PUl9LHtuYW1lOlJwZSxpbnB1dHNDb3VudDoyLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgZFRlPSJub3RfYmV0d2VlbiI7ZnVuY3Rpb24gcFRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRb''@;'; put 'put ''aF07cmV0dXJuIHZ9R3UoZFRlLGZ1bmN0aW9uIEIxdChkLGcpe3JldHVybiFRdyhpbmUsZykoZCl9LHtuYW1lOkJwZSxpbnB1dHNDb3VudDoyLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgZ1RlPSJiZWdpbnNfd2l0aCI7ZnVuY3Rpb24gbVRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYo''@;'; put 'put ''Zz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gQVRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07''@;'; put 'put ''cmV0dXJuIHZ9R3UoZ1RlLGZ1bmN0aW9uIGoxdChkLGcpe3ZhciB2PWZ1bmN0aW9uIFAxdChkLGcpe3JldHVybiBmdW5jdGlvbiBWMXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIE4xdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7''@;'; put 'put ''eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIEgxdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gcFRl''@;'; put 'put ''KGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1l''@;'; put 'put ''bnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBwVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIEYxdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUg''@;'; put 'put ''aW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIHExKGQudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGQubWV0YS5sb2NhbGUpLnN0YXJ0''@;'; put 'put ''c1dpdGgocTEodikpfSx7bmFtZTpNcGUsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSksTCgzNzQ5OSksR3UoImVuZHNfd2l0aCIsZnVuY3Rpb24gVTF0KGQsZyl7dmFyIHY9ZnVuY3Rpb24gWjF0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFkxdChkKXtpZihBcnJheS5pc0FycmF5KGQp''@;'; put 'put ''KXJldHVybiBkfShkKXx8ZnVuY3Rpb24gVzF0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNh''@;'; put 'put ''bGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2''@;'; put 'put ''fX0oZCxnKXx8ZnVuY3Rpb24gRzF0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBtVGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0''@;'; put 'put ''cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIG1UZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gejF0KCl7''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0o''@;'; put 'put ''ZywxKVswXTtyZXR1cm4gcTEoZC52YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoZC5tZXRhLmxvY2FsZSkuZW5kc1dpdGgocTEodikpfSx7bmFtZTpFcGUsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIHM1ZT0iY29udGFpbnMiO0d1KHM1ZSxmdW5jdGlvbiBxMXQoZCxnKXt2''@;'; put 'put ''YXIgdj1mdW5jdGlvbiBRMXQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gJDF0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBLMXQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8''@;'; put 'put ''ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7''@;'; put 'put ''dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBYMXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEFUZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJp''@;'; put 'put ''bmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/''@;'; put 'put ''OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gQVRlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBKMXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUs''@;'; put 'put ''IG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShnLDEpWzBdO3JldHVybiBxMShkLnZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZShkLm1ldGEubG9jYWxlKS5pbmRleE9mKHExKHYpKT49MH0se25hbWU6eHBlLGlucHV0c0NvdW50''@;'; put 'put ''OjEsc2hvd09wZXJhdG9yczohMH0pO3ZhciB5VGU9Im5vdF9jb250YWlucyI7R3UoeVRlLGZ1bmN0aW9uIGV1dChkLGcpe3JldHVybiFRdyhzNWUsZykoZCl9LHtuYW1lOlRwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgd1RlPSJkYXRlX3RvbW9ycm93IjtHdSh3VGUs''@;'; put 'put ''ZnVuY3Rpb24gdHV0KGQpe3ZhciBnPWtsKGQudmFsdWUsZC5tZXRhLmRhdGVGb3JtYXQpO3JldHVybiEhZy5pc1ZhbGlkKCkmJmcuaXNTYW1lKGtsKCkuc3VidHJhY3QoLTEsImRheXMiKS5zdGFydE9mKCJkYXkiKSwiZCIpfSx7bmFtZTpOcGUsaW5wdXRzQ291bnQ6MH0pO3ZhciBiVGU9ImRh''@;'; put 'put ''dGVfdG9kYXkiO0d1KGJUZSxmdW5jdGlvbiBudXQoZCl7dmFyIGc9a2woZC52YWx1ZSxkLm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISFnLmlzVmFsaWQoKSYmZy5pc1NhbWUoa2woKS5zdGFydE9mKCJkYXkiKSwiZCIpfSx7bmFtZTpIcGUsaW5wdXRzQ291bnQ6MH0pO3ZhciAkeixfVGU9ImRh''@;'; put 'put ''dGVfeWVzdGVyZGF5IjtmdW5jdGlvbiB1NWUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfUd1KF9UZSxmdW5jdGlvbiBydXQoZCl7dmFyIGc9''@;'; put 'put ''a2woZC52YWx1ZSxkLm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISFnLmlzVmFsaWQoKSYmZy5pc1NhbWUoa2woKS5zdWJ0cmFjdCgxLCJkYXlzIikuc3RhcnRPZigiZGF5IiksImQiKX0se25hbWU6VnBlLGlucHV0c0NvdW50OjB9KTt2YXIga1RlPSh1NWUoJHo9e30sIm51bWVyaWMiLFtPZix6''@;'; put 'put ''bCxYeixubmUsemwsS3osIm5lcSIsemwsImd0IiwiZ3RlIiwibHQiLCJsdGUiLGluZSxkVGVdKSx1NWUoJHosInRleHQiLFtPZix6bCxYeixubmUsemwsS3osIm5lcSIsemwsZ1RlLCJlbmRzX3dpdGgiLHpsLHM1ZSx5VGVdKSx1NWUoJHosImRhdGUiLFtPZix6bCxYeixubmUsemwsS3osIm5l''@;'; put 'put ''cSIsemwsbDVlLGE1ZSxpbmUsemwsd1RlLGJUZSxfVGVdKSwkeik7ZnVuY3Rpb24gU1RlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRh''@;'; put 'put ''YmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGY1ZT0iYnVpbGRpbmciLE1UZT1bImNsaWNrIiwiaW5wdXQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImZvY3VzIiwiYmx1ciIsImNoYW5nZSJdLEVUZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxo''@;'; put 'put ''KXsoZnVuY3Rpb24gbHV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5ldmVudE1hbmFnZXI9bmV3IFAxKHRoaXMpLHRoaXMub3B0aW9ucz1S''@;'; put 'put ''MShkLkRFRkFVTFRTLGgpLHRoaXMuX2VsZW1lbnQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5vcHRpb25zLndyYXBJdD8iZGl2Ijp0aGlzLm9wdGlvbnMudGFnTmFtZSksdGhpcy5idWlsZFN0YXRlPW51bGx9cmV0dXJuIGZ1bmN0aW9uIHN1dChkLGcsaCl7ZyYm''@;'; put 'put ''U1RlKGQucHJvdG90eXBlLGcpLGgmJlNUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5vcHRpb25zLnZhbHVlPWgsdGhpcy51cGRhdGUoKX19LHtrZXk6Imdl''@;'; put 'put ''dFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMudmFsdWV9fSx7a2V5OiJlbGVtZW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5idWlsZFN0YXRlPT09ZjVlP3RoaXMuX2VsZW1lbnQ6ImJ1aWx0Ij09PXRoaXMuYnVpbGRTdGF0ZT8odGhpcy51cGRhdGUo''@;'; put 'put ''KSx0aGlzLl9lbGVtZW50KToodGhpcy5idWlsZFN0YXRlPWY1ZSx0aGlzLmJ1aWxkKCksdGhpcy5idWlsZFN0YXRlPSJidWlsdCIsdGhpcy5fZWxlbWVudCl9fSx7a2V5OiJpc0J1aWx0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJidWlsdCI9PT10aGlzLmJ1aWxkU3RhdGV9fSx7a2V5OiJ0''@;'; put 'put ''cmFuc2xhdGVJZlBvc3NpYmxlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGgmJmguc3RhcnRzV2l0aCh1Myk/dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShoKTpofX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PWZ1bmN0''@;'; put 'put ''aW9uKEksail7aC5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLGosZnVuY3Rpb24oY2Upe3JldHVybiBoLnJ1bkxvY2FsSG9va3MoaixjZSxoKX0pfTtpZih0aGlzLmJ1aWxkU3RhdGV8fCh0aGlzLmJ1aWxkU3RhdGU9ZjVlKSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZQMCh0aGlz''@;'; put 'put ''Ll9lbGVtZW50LHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLHRoaXMub3B0aW9ucy5jaGlsZHJlbi5sZW5ndGgpR3IodGhpcy5vcHRpb25zLmNoaWxkcmVuLGZ1bmN0aW9uKEMpe3JldHVybiBoLl9lbGVtZW50LmFwcGVuZENoaWxkKEMuZWxlbWVudCl9KTtlbHNlIGlmKHRoaXMub3B0aW9ucy53''@;'; put 'put ''cmFwSXQpe3ZhciB5PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMub3B0aW9ucy50YWdOYW1lKTtabCh0aGlzLm9wdGlvbnMsZnVuY3Rpb24oQyxJKXt2b2lkIDAhPT15W0ldJiYiY2xhc3NOYW1lIiE9PUkmJiJ0YWdOYW1lIiE9PUkmJiJjaGlsZHJlbiIhPT1JJiYo''@;'; put 'put ''eVtJXT1oLnRyYW5zbGF0ZUlmUG9zc2libGUoQykpfSksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh5KSxHcihNVGUsZnVuY3Rpb24oQyl7cmV0dXJuIHYoeSxDKX0pfWVsc2UgR3IoTVRlLGZ1bmN0aW9uKEMpe3JldHVybiB2KGguX2VsZW1lbnQsQyl9KX19LHtrZXk6InVwZGF0ZSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMudmFsdWU9IiIsdGhpcy51cGRhdGUoKX19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXk9IiJ9fSx7a2V5OiJoaWRlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIn19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLHRoaXMuZXZlbnRNYW5hZ2VyPW51bGwsdGhp''@;'; put 'put ''cy5ob3Q9bnVsbCx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50PW51bGx9fV0sW3trZXk6IkRFRkFVTFRTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gczMoe2NsYXNzTmFtZToi''@;'; put 'put ''Iix2YWx1ZToiIix0YWdOYW1lOiJkaXYiLGNoaWxkcmVuOltdLHdyYXBJdDohMH0pfX1dKSxkfSgpO0kyKEVUZSxyZCk7Y29uc3QgSnc9RVRlO2Z1bmN0aW9uIGg1ZShkKXtyZXR1cm4oaDVlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24geFRlKGQs''@;'; put 'put ''Zyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gb25l''@;'; put 'put ''KCl7cmV0dXJuIG9uZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9ZnV0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdl''@;'; put 'put ''dD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxvbmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGZ1dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9clIoZCkpOyk7cmV0dXJu''@;'; put 'put ''IGR9ZnVuY3Rpb24gZDVlKGQsZyl7cmV0dXJuKGQ1ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHB1dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWg1''@;'; put 'put ''ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gVFRlKGQpfWZ1bmN0aW9uIFRUZShkKXtpZih2''@;'; put 'put ''b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gclIoZCl7cmV0dXJuKHJSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJv''@;'; put 'put ''dG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGFuZT1uZXcgV2Vha01hcCxtdXQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGh1dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09''@;'; put 'put ''Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZkNWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBkdXQoZCl7dmFyIGc9ZnVuY3Rpb24gZ3V0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1''@;'; put 'put ''Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0''@;'; put 'put ''Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9clIoZCk7aWYoZyl7dmFyIEM9clIodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHB1dCh0aGlz''@;'; put 'put ''LHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiB1dXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxDPWcuY2FsbCh0aGlzLHYsUjEoaC5E''@;'; put 'put ''RUZBVUxUUyx5KSksYW5lLnNldChUVGUoQykse30pLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIGN1dChkLGcsaCl7ZyYmeFRlKGQucHJvdG90eXBlLGcpLGgmJnhUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfSho''@;'; put 'put ''LFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQ2xpY2soKX0pLHRoaXMuYWRkTG9jYWxIb29rKCJrZXl1cCIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25LZXl1cChD''@;'; put 'put ''KX0pfX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7b25lKHJSKGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIHk9YW5lLmdldCh0aGlzKSxDPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt5LmlucHV0PXRoaXMuX2VsZW1l''@;'; put 'put ''bnQuZmlyc3RDaGlsZCxQMCh0aGlzLl9lbGVtZW50LCJodFVJSW5wdXQiKSxQMChDLCJodFVJSW5wdXRJY29uIiksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChDKSx0aGlzLnVwZGF0ZSgpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaXNCdWlsdCgpKXt2YXIg''@;'; put 'put ''eT1hbmUuZ2V0KHRoaXMpLmlucHV0O3kudHlwZT10aGlzLm9wdGlvbnMudHlwZSx5LnBsYWNlaG9sZGVyPXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpLHkudmFsdWU9dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy52YWx1ZSl9''@;'; put 'put ''fX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0J1aWx0KCkmJmFuZS5nZXQodGhpcykuaW5wdXQuZm9jdXMoKX19LHtrZXk6Im9uQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToib25LZXl1cCIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5vcHRpb25zLnZhbHVl''@;'; put 'put ''PXkudGFyZ2V0LnZhbHVlfX1dLFt7a2V5OiJERUZBVUxUUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMzKHtwbGFjZWhvbGRlcjoiIix0eXBlOiJ0ZXh0Iix0YWdOYW1lOiJpbnB1dCJ9KX19XSksaH0oSncpO2NvbnN0IGlSPW11dDtmdW5jdGlvbiBwNWUoZCl7cmV0dXJuKHA1ZT0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIElUZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIG9SKCl7cmV0dXJuIG9SPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT15dXQoZyxoKTtpZih5KXt2YXIgQz1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LG9SLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB5dXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093''@;'; put 'put ''blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVh3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIGc1ZShkLGcpe3JldHVybihnNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2''@;'; put 'put ''fSkoZCxnKX1mdW5jdGlvbiBfdXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1wNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3Ig''@;'; put 'put ''dW5kZWZpbmVkIik7cmV0dXJuIERUZShkKX1mdW5jdGlvbiBEVGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFh3KGQp''@;'; put 'put ''e3JldHVybihYdz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBsbmU9bmV3IFdlYWtNYXAsa3V0PWZ1bmN0aW9uKGQpeyFmdW5j''@;'; put 'put ''dGlvbiB3dXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtj''@;'; put 'put ''b25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmZzVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gYnV0KGQpe3ZhciBnPWZ1bmN0aW9uIEN1dCgpe2lm''@;'; put 'put ''KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVh3KGQpO2lmKGcpe3ZhciBDPVh3KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9''@;'; put 'put ''ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBfdXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gdnV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh''@;'; put 'put ''cyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksQz1nLmNhbGwodGhpcyx2LFIxKGguREVGQVVMVFMseSkpLGxuZS5zZXQoRFRlKEMpLHt9KSxDLm1lbnU9bnVsbCxDLml0ZW1zPVtdLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIEF1dChkLGcsaCl7ZyYmSVRlKGQucHJvdG90eXBl''@;'; put 'put ''LGcpLGgmJklUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB5''@;'; put 'put ''Lm9uQ2xpY2soKX0pfX0se2tleToic2V0SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaXRlbXM9dGhpcy50cmFuc2xhdGVOYW1lcyh5KSx0aGlzLm1lbnUmJnRoaXMubWVudS5zZXRNZW51SXRlbXModGhpcy5pdGVtcyl9fSx7a2V5OiJ0cmFuc2xhdGVOYW1lcyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oeSl7dmFyIEM9dGhpcztyZXR1cm4gR3IoeSxmdW5jdGlvbihJKXtJLm5hbWU9Qy50cmFuc2xhdGVJZlBvc3NpYmxlKEkubmFtZSl9KSx5fX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztvUihYdyhoLnByb3RvdHlwZSksImJ1aWxkIix0aGlzKS5jYWxsKHRo''@;'; put 'put ''aXMpLHRoaXMubWVudT1uZXcgTjhlKHRoaXMuaG90LHtjbGFzc05hbWU6Imh0U2VsZWN0VUkgaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUiLGtlZXBJblZpZXdwb3J0OiExLHN0YW5kYWxvbmU6ITAsY29udGFpbmVyOnRoaXMub3B0aW9ucy5tZW51Q29udGFpbmVyfSksdGhpcy5tZW51LnNldE1l''@;'; put 'put ''bnVJdGVtcyh0aGlzLml0ZW1zKTt2YXIgQz1uZXcgSncodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRVSVNlbGVjdENhcHRpb24ifSksST1uZXcgSncodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRVSVNlbGVjdERyb3Bkb3duIn0pLGo9bG5lLmdldCh0aGlzKTtqLmNhcHRpb249QyxqLmNhcHRpb25F''@;'; put 'put ''bGVtZW50PUMuZWxlbWVudCxqLmRyb3Bkb3duPUksR3IoW0MsSV0sZnVuY3Rpb24oY2Upe3JldHVybiB5Ll9lbGVtZW50LmFwcGVuZENoaWxkKGNlLmVsZW1lbnQpfSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygic2VsZWN0IixmdW5jdGlvbihjZSl7cmV0dXJuIHkub25NZW51U2VsZWN0KGNl''@;'; put 'put ''KX0pLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NZW51Q2xvc2VkKCl9KSx0aGlzLnVwZGF0ZSgpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5O3RoaXMuaXNCdWlsdCgpJiYoeT10aGlzLm9wdGlvbnMudmFs''@;'; put 'put ''dWU/dGhpcy5vcHRpb25zLnZhbHVlLm5hbWU6dGhpcy5tZW51LmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKG50ZSksbG5lLmdldCh0aGlzKS5jYXB0aW9uRWxlbWVudC50ZXh0Q29udGVudD15LG9SKFh3KGgucHJvdG90eXBlKSwidXBkYXRlIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6Im9w''@;'; put 'put ''ZW5PcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLm1lbnUmJih0aGlzLm1lbnUub3BlbigpLHRoaXMubWVudS5zZXRQb3NpdGlvbih7bGVmdDp0aGlzLmhvdC5pc0x0cigpP3kubGVmdC01OnkubGVmdC0zMSx0''@;'; put 'put ''b3A6eS50b3AtMSx3aWR0aDp5LndpZHRoLGhlaWdodDp5LmhlaWdodH0pKX19LHtrZXk6ImNsb3NlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1lbnUmJnRoaXMubWVudS5jbG9zZSgpfX0se2tleToib25NZW51U2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih5KXt5Lm5hbWUhPT16bCYm''@;'; put 'put ''KHRoaXMub3B0aW9ucy52YWx1ZT15LHRoaXMudXBkYXRlKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJzZWxlY3QiLHRoaXMub3B0aW9ucy52YWx1ZSkpfX0se2tleToib25NZW51Q2xvc2VkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJDbG9zZSIpfX0se2tleToi''@;'; put 'put ''b25DbGljayIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5PcHRpb25zKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWVudSYmKHRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW51bGwpO3ZhciB5PWxuZS5nZXQodGhpcyksQz15LmNhcHRpb24sST15LmRy''@;'; put 'put ''b3Bkb3duO0MmJkMuZGVzdHJveSgpLEkmJkkuZGVzdHJveSgpLG9SKFh3KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBzMyh7Y2xhc3NOYW1lOiJodFVJU2VsZWN0Iix3cmFwSXQ6ITF9KX19''@;'; put 'put ''XSksaH0oSncpO2NvbnN0IExUZT1rdXQ7ZnVuY3Rpb24gbTVlKGQpe3JldHVybihtNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB2NWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBB''@;'; put 'put ''cnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBPVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9''@;'; put 'put ''ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBzbmUoKXtyZXR1cm4gc25lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1MdXQoZyxoKTtpZih5KXt2YXIg''@;'; put 'put ''Qz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHNuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTHV0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1hUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBBNWUoZCxnKXtyZXR1cm4oQTVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19f''@;'; put 'put ''PXksdn0pKGQsZyl9ZnVuY3Rpb24gQnV0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bTVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0''@;'; put 'put ''IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBQdXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBhUihk''@;'; put 'put ''KXtyZXR1cm4oYVI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgSHV0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBPdXQoZCxnKXtp''@;'; put 'put ''ZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFs''@;'; put 'put ''dWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmQTVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gUnV0KGQpe3ZhciBnPWZ1bmN0aW9uIEZ1dCgpe2lmKCJ1bmRlZmluZWQiPT10''@;'; put 'put ''eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChC''@;'; put 'put ''b29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWFSKGQpO2lmKGcpe3ZhciBDPWFSKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHko''@;'; put 'put ''dGhpcyxhcmd1bWVudHMpO3JldHVybiBCdXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gSXV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9''@;'; put 'put ''KHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMsdix7aWQ6eS5pZCxzdGF0ZWxlc3M6ITF9KSkubmFtZT15Lm5hbWUsQy5hZGRTZXBhcmF0b3I9eS5hZGRTZXBhcmF0b3IsQy5lbGVtZW50cy5wdXNoKG5ldyBMVGUoQy5ob3Qse21lbnVDb250YWluZXI6eS5tZW51Q29udGFpbmVyfSkpLEMuZWxlbWVu''@;'; put 'put ''dHMucHVzaChuZXcgaVIoQy5ob3Qse3BsYWNlaG9sZGVyOkpwZX0pKSxDLmVsZW1lbnRzLnB1c2gobmV3IGlSKEMuaG90LHtwbGFjZWhvbGRlcjpYcGV9KSksQy5yZWdpc3Rlckhvb2tzKCksQ31yZXR1cm4gZnVuY3Rpb24gRHV0KGQsZyxoKXtnJiZPVGUoZC5wcm90b3R5cGUsZyksaCYmT1Rl''@;'; put 'put ''KGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soInNlbGVjdCIsZnVuY3Rpb24o''@;'; put 'put ''Qyl7cmV0dXJuIHkub25Db25kaXRpb25TZWxlY3QoQyl9KSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25TZWxlY3RVSUNsb3NlZCgpfSksR3IodGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksZnVuY3Rpb24oQyl7''@;'; put 'put ''Qy5hZGRMb2NhbEhvb2soImtleWRvd24iLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uSW5wdXRLZXlEb3duKEkpfSl9KX19LHtrZXk6InNldFN0YXRlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO2lmKHRoaXMucmVzZXQoKSx5KXt2YXIgST1zMyh5LmNvbW1hbmQpO0kubmFtZS5zdGFy''@;'; put 'put ''dHNXaXRoKGV1KSYmKEkubmFtZT10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEkubmFtZSkpLHRoaXMuZ2V0U2VsZWN0RWxlbWVudCgpLnNldFZhbHVlKEkpLEdyKHkuYXJncyxmdW5jdGlvbihqLGNlKXtpZihjZT5JLmlucHV0c0NvdW50LTEpcmV0dXJuITE7dmFyIF9lPUMuZ2V0SW5w''@;'; put 'put ''dXRFbGVtZW50KGNlKTtfZS5zZXRWYWx1ZShqKSxfZVtJLmlucHV0c0NvdW50PmNlPyJzaG93IjoiaGlkZSJdKCksY2V8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gX2UuZm9jdXMoKX0sMTApfSl9fX0se2tleToiZ2V0U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5n''@;'; put 'put ''ZXRTZWxlY3RFbGVtZW50KCkuZ2V0VmFsdWUoKXx8blIoT2YpLEM9W107cmV0dXJuIEdyKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKEksail7eS5pbnB1dHNDb3VudD5qJiZDLnB1c2goSS5nZXRWYWx1ZSgpKX0pLHtjb21tYW5kOnksYXJnczpDfX19LHtrZXk6InVwZGF0ZVN0''@;'; put 'put ''YXRlIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPW5SKHk/eS5uYW1lOk9mKTt0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChDLHtjb21tYW5kOkksYXJnczp5P3kuYXJnczpbXX0pLHl8fEdyKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKGope3JldHVybiBqLnNldFZhbHVl''@;'; put 'put ''KG51bGwpfSl9fSx7a2V5OiJnZXRTZWxlY3RFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4geSBpbnN0YW5jZW9mIExUZX0pWzBdfX0se2tleToiZ2V0SW5wdXRFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudHMoKVt5XX19LHtrZXk6ImdldElucHV0RWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVy''@;'; put 'put ''KGZ1bmN0aW9uKHkpe3JldHVybiB5IGluc3RhbmNlb2YgaVJ9KX19LHtrZXk6ImdldE1lbnVJdGVtRGVzY3JpcHRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3JldHVybntrZXk6dGhpcy5pZCxuYW1lOnRoaXMubmFtZSxpc0NvbW1hbmQ6ITEsZGlzYWJsZVNlbGVjdGlvbjohMCxo''@;'; put 'put ''aWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4geS5pc0hpZGRlbigpfSxyZW5kZXJlcjpmdW5jdGlvbihJLGosY2UsX2UsUmUsTmUpe1AwKGoucGFyZW50Tm9kZSwiaHRGaWx0ZXJzTWVudUNvbmRpdGlvbiIpLHkuYWRkU2VwYXJhdG9yJiZQMChqLnBhcmVudE5vZGUsImJvcmRlciIpO3ZhciBLZT15''@;'; put 'put ''LmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIFAwKEtlLCJodEZpbHRlcnNNZW51TGFiZWwiKSxLZS50ZXh0Q29udGVudD1OZSxqLmFwcGVuZENoaWxkKEtlKSxqLnBhcmVudE5vZGUuaGFzQXR0cmlidXRlKCJnaG9zdC10YWJsZSIpfHxHcih5LmVsZW1lbnRz''@;'; put 'put ''LGZ1bmN0aW9uKGh0KXtyZXR1cm4gai5hcHBlbmRDaGlsZChodC5lbGVtZW50KX0pLGp9fX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LEM9dGhpcy5ob3QuZ2V0UGx1Z2luKCJmaWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKSxJPUMmJkMudmlzdWFsSW5kZXgsY2U9''@;'; put 'put ''ZnVuY3Rpb24gYXV0KGQpe3ZhciBnPVtdLGg9ZDtyZXR1cm4ga1RlW2hdfHwoaD0idGV4dCIpLEdyKGtUZVtoXSxmdW5jdGlvbih2KXt2YXIgeTt5PXY9PT16bD97bmFtZTp6bH06czMoblIodikpLGcucHVzaCh5KX0pLGd9KCh5PXRoaXMuaG90KS5nZXREYXRhVHlwZS5hcHBseSh5LGZ1bmN0''@;'; put 'put ''aW9uIFN1dChkKXtyZXR1cm4gZnVuY3Rpb24gVHV0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHY1ZShkKX0oZCl8fGZ1bmN0aW9uIHh1dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9y''@;'; put 'put ''Il0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBFdXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHY1ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29u''@;'; put 'put ''c3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gdjVlKGQsZyl9fShk''@;'; put 'put ''KXx8ZnVuY3Rpb24gTXV0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBt''@;'; put 'put ''ZXRob2QuIil9KCl9KHRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpfHxbMCxJXSkpKTtHcih0aGlzLmdldElucHV0RWxlbWVudHMoKSxmdW5jdGlvbihfZSl7cmV0dXJuIF9lLmhpZGUoKX0pLHRoaXMuZ2V0U2VsZWN0RWxlbWVudCgpLnNldEl0ZW1zKGNlKSxzbmUoYVIoaC5wcm90b3R5cGUp''@;'; put 'put ''LCJyZXNldCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5zZXRWYWx1ZShjZVswXSl9fSx7a2V5OiJvbkNvbmRpdGlvblNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24oeSl7R3IodGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksZnVuY3Rpb24oQyxJKXtDW3kuaW5wdXRzQ291''@;'; put 'put ''bnQ+ST8ic2hvdyI6ImhpZGUiXSgpLDA9PT1JJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIEMuZm9jdXMoKX0sMTApfSksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLHkpfX0se2tleToib25TZWxlY3RVSUNsb3NlZCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9v''@;'; put 'put ''a3MoImFmdGVyQ2xvc2UiKX19LHtrZXk6Im9uSW5wdXRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbih5KXtUTyh5LmtleUNvZGUsIkVOVEVSIik/KHRoaXMucnVuTG9jYWxIb29rcygiYWNjZXB0IiksdjgoeSkpOlRPKHkua2V5Q29kZSwiRVNDQVBFIikmJih0aGlzLnJ1bkxvY2FsSG9va3MoImNh''@;'; put 'put ''bmNlbCIpLHY4KHkpKX19XSksaH0odG5lKTtjb25zdCB5NWU9SHV0O3ZhciBxej17fTtmdW5jdGlvbiBOdXQoZCl7aWYoIXF6W2RdKXRocm93IEVycm9yKCdPcGVyYXRpb24gd2l0aCBpZCAiJy5jb25jYXQoZCwnIiBkb2VzIG5vdCBleGlzdC4nKSk7dmFyIGc9cXpbZF0uZnVuYztyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oaCx2KXtyZXR1cm4gZyhoLHYpfX1mdW5jdGlvbiBWdXQoZCl7cmV0dXJuIHF6W2RdLm5hbWV9ZnVuY3Rpb24gdzVlKGQsZyxoKXtxeltkXT17bmFtZTpnLGZ1bmM6aH19dmFyIEt3PSJjb25qdW5jdGlvbiI7dzVlKEt3LHpwZSxmdW5jdGlvbiBadXQoZCxnKXtyZXR1cm4gZC5l''@;'; put 'put ''dmVyeShmdW5jdGlvbihoKXtyZXR1cm4gaC5mdW5jKGcpfSl9KTt2YXIgdW5lPSJkaXNqdW5jdGlvbiI7dzVlKHVuZSxydGUsZnVuY3Rpb24gR3V0KGQsZyl7cmV0dXJuIGQuc29tZShmdW5jdGlvbihoKXtyZXR1cm4gaC5mdW5jKGcpfSl9KTt2YXIgYjVlPSJkaXNqdW5jdGlvbldpdGhFeHRy''@;'; put 'put ''YUNvbmRpdGlvbiI7ZnVuY3Rpb24gXzVlKGQpe3JldHVybihfNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBSVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwh''@;'; put 'put ''MSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBjbmUoKXtyZXR1cm4gY25lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1KdXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGNuZS5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyl9ZnVuY3Rpb24gSnV0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1sUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBDNWUoZCxnKXtyZXR1cm4oQzVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gJHV0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09XzVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBCVGUoZCl9ZnVuY3Rpb24gQlRlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw''@;'; put 'put ''ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBsUihkKXtyZXR1cm4obFI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yo''@;'; put 'put ''aCl9KShkKX13NWUoYjVlLHJ0ZSxmdW5jdGlvbiBZdXQoZCxnKXtpZihkLmxlbmd0aDwzKXRocm93IEVycm9yKCJPcGVyYXRpb24gZG9lc24ndCB3b3JrIG9uIGxlc3MgdGhlbiB0aHJlZSBjb25kaXRpb25zLiIpO3JldHVybiBkLnNsaWNlKDAsZC5sZW5ndGgtMSkuc29tZShmdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gaC5mdW5jKGcpfSkmJmRbZC5sZW5ndGgtMV0uZnVuYyhnKX0pO3ZhciBmbmU9bmV3IFdlYWtNYXAsZWN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBYdXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhw''@;'; put 'put ''cmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInBy''@;'; put 'put ''b3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmQzVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gS3V0KGQpe3ZhciBnPWZ1bmN0aW9uIHF1dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVy''@;'; put 'put ''biExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgeSx2PWxSKGQpO2lmKGcpe3ZhciBDPWxSKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiAkdXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQzty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gVXV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksQz1nLmNhbGwodGhpcyx2LFIxKGguREVGQVVMVFMseSkpLGZuZS5zZXQoQlRlKEMpLHt9KSxD''@;'; put 'put ''fXJldHVybiBmdW5jdGlvbiBRdXQoZCxnLGgpe2cmJlJUZShkLnByb3RvdHlwZSxnKSxoJiZSVGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7Y25lKGxSKGgucHJvdG90eXBl''@;'; put 'put ''KSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIHk9Zm5lLmdldCh0aGlzKTt5LmlucHV0PXRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDt2YXIgQz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTtDLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3Nz''@;'; put 'put ''aWJsZSh0aGlzLm9wdGlvbnMubGFiZWwudGV4dENvbnRlbnQpLEMuaHRtbEZvcj10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLmxhYmVsLmh0bWxGb3IpLHkubGFiZWw9Qyx0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKEMpLHRoaXMudXBkYXRlKCl9fSx7a2V5OiJ1cGRh''@;'; put 'put ''dGUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0J1aWx0KCkpe3ZhciB5PWZuZS5nZXQodGhpcyk7eS5pbnB1dC5jaGVja2VkPXRoaXMub3B0aW9ucy5jaGVja2VkLHkubGFiZWwudGV4dENvbnRlbnQ9dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0''@;'; put 'put ''Q29udGVudCl9fX0se2tleToiaXNDaGVja2VkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuY2hlY2tlZH19LHtrZXk6InNldENoZWNrZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFy''@;'; put 'put ''Z3VtZW50c1swXTt0aGlzLm9wdGlvbnMuY2hlY2tlZD15LHRoaXMudXBkYXRlKCl9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQnVpbHQoKSYmZm5lLmdldCh0aGlzKS5pbnB1dC5mb2N1cygpfX1dLFt7a2V5OiJERUZBVUxUUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHMzKHt0eXBlOiJyYWRpbyIsdGFnTmFtZToiaW5wdXQiLGNsYXNzTmFtZToiaHRVSVJhZGlvIixsYWJlbDp7fX0pfX1dKSxofShKdyk7Y29uc3QgUFRlPWVjdDtmdW5jdGlvbiBrNWUoZCl7cmV0dXJuKGs1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfXZhciBG''@;'; put 'put ''VGU7ZnVuY3Rpb24gSFRlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2Lmtl''@;'; put 'put ''eSx2KX19ZnVuY3Rpb24gUzVlKGQsZyl7cmV0dXJuKFM1ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGFjdChkLGcpe2lmKGcmJigib2JqZWN0Ij09''@;'; put 'put ''PWs1ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gbGN0KGQpe2lmKHZvaWQg''@;'; put 'put ''MD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gaG5lKGQpe3JldHVybihobmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQ''@;'; put 'put ''cm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgdWN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBpY3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmUzVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gb2N0KGQpe3ZhciBnPWZ1bmN0aW9uIHNjdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiEx''@;'; put 'put ''fX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWhuZShkKTtpZihnKXt2YXIgQz1obmUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGFjdCh0aGlzLHkpfX0oaCk7ZnVu''@;'; put 'put ''Y3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBuY3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoQz1nLmNhbGwodGhpcyx2LHtpZDp5LmlkLHN0YXRlbGVz''@;'; put 'put ''czohMX0pKS5uYW1lPXkubmFtZSxDLmJ1aWxkT3BlcmF0b3JzRWxlbWVudCgpLEN9cmV0dXJuIGZ1bmN0aW9uIHJjdChkLGcsaCl7ZyYmSFRlKGQucHJvdG90eXBlLGcpLGgmJkhUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7''@;'; put 'put ''a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXNIaWRkZW4oKX0scmVu''@;'; put 'put ''ZGVyZXI6ZnVuY3Rpb24oSSxqKXtyZXR1cm4gUDAoai5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51T3BlcmF0b3JzIiksai5wYXJlbnROb2RlLmhhc0F0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiKXx8R3IoeS5lbGVtZW50cyxmdW5jdGlvbihjZSl7cmV0dXJuIGouYXBwZW5kQ2hpbGQoY2UuZWxl''@;'; put 'put ''bWVudCl9KSxqfX19fSx7a2V5OiJidWlsZE9wZXJhdG9yc0VsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPVtLdyx1bmVdO0dyKEMsZnVuY3Rpb24oSSl7dmFyIGo9bmV3IFBUZSh5LmhvdCx7bmFtZToib3BlcmF0b3IiLGxhYmVsOntodG1sRm9yOkksdGV4dENvbnRlbnQ6''@;'; put 'put ''VnV0KEkpfSx2YWx1ZTpJLGNoZWNrZWQ6ST09PUNbMF0saWQ6SX0pO2ouYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKGNlKXtyZXR1cm4geS5vblJhZGlvSW5wdXRDaGFuZ2UoY2UpfSkseS5lbGVtZW50cy5wdXNoKGopfSl9fSx7a2V5OiJzZXRDaGVja2VkIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bih5KXtpZih0aGlzLmVsZW1lbnRzLmxlbmd0aDx5KXRocm93IEVycm9yKEQyKEZUZXx8KEZUZT1mdW5jdGlvbiB0Y3QoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUo''@;'; put 'put ''Zyl9fSkpfShbIlJhZGlvIGJ1dHRvbiB3aXRoIGluZGV4ICIsIiBkb2Vzbid0IGV4aXN0LiJdKSkseSkpO0dyKHRoaXMuZWxlbWVudHMsZnVuY3Rpb24oQyxJKXtDLnNldENoZWNrZWQoST09PXkpfSl9fSx7a2V5OiJnZXRBY3RpdmVPcGVyYXRpb25JZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''eT10aGlzLmVsZW1lbnRzLmZpbmQoZnVuY3Rpb24oQyl7cmV0dXJuIEMgaW5zdGFuY2VvZiBQVGUmJkMuaXNDaGVja2VkKCl9KTtyZXR1cm4geT95LmdldFZhbHVlKCk6S3d9fSx7a2V5OiJnZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRBY3RpdmVPcGVyYXRpb25J''@;'; put 'put ''ZCgpfX0se2tleToic2V0U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMucmVzZXQoKSx5JiZ0aGlzLmdldEFjdGl2ZU9wZXJhdGlvbklkKCkhPT15JiZHcih0aGlzLmVsZW1lbnRzLGZ1bmN0aW9uKEMpe0Muc2V0Q2hlY2tlZChDLmdldFZhbHVlKCk9PT15KX0pfX0se2tleToidXBkYXRl''@;'; put 'put ''U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOkt3LEM9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsST15O0k9PT1iNWUmJihJPXVuZSksdGhpcy5zdGF0ZS5zZXRW''@;'; put 'put ''YWx1ZUF0SW5kZXgoQyxJKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0Q2hlY2tlZCgwKX19LHtrZXk6Im9uUmFkaW9JbnB1dENoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5zZXRTdGF0ZSh5LnRhcmdldC52YWx1ZSl9fV0pLGh9KHRuZSk7Y29uc3QgY2N0''@;'; put 'put ''PXVjdDtmdW5jdGlvbiBoY3QoZCxnKXt2YXIgaD1kO3JldHVybiIiPT09aCYmKGg9IigiLmNvbmNhdChnLCIpIikpLGh9VmJlKCk7dmFyIE01ZT1uZXcgU2V0KFsxXSkuaGFzKDEpLGRjdD1NNWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5mcm9tO2Z1bmN0aW9uIGVHKGQpe3ZhciBnPWQ7''@;'; put 'put ''cmV0dXJuIE01ZSYmKGc9bmV3IFNldChnKSksZnVuY3Rpb24oaCl7cmV0dXJuIE01ZT9nLmhhcyhoKTohIX5nLmluZGV4T2YoaCl9fWZ1bmN0aW9uIFZUZShkKXtyZXR1cm4gbnVsbD09ZD8iIjpkfWZ1bmN0aW9uIEU1ZShkKXt2YXIgZz1kO3JldHVybihnPWRjdD9BcnJheS5mcm9tKG5ldyBT''@;'; put 'put ''ZXQoZykpOmEzZShnKSkuc29ydChmdW5jdGlvbihoLHYpe3JldHVybiJudW1iZXIiPT10eXBlb2YgaCYmIm51bWJlciI9PXR5cGVvZiB2P2gtdjpoPT09dj8wOmg+dj8xOi0xfSl9ZnVuY3Rpb24galRlKGQsZyxoLHYpe3ZhciBJLHk9W10sQz1kPT09ZztyZXR1cm4gQ3x8KEk9ZUcoZykpLEdy''@;'; put 'put ''KGQsZnVuY3Rpb24oail7dmFyIGNlPSExOyhDfHxJKGopKSYmKGNlPSEwKTt2YXIgX2U9e2NoZWNrZWQ6Y2UsdmFsdWU6aix2aXN1YWxWYWx1ZTpoY3QoaixoKX07diYmdihfZSkseS5wdXNoKF9lKX0pLHl9ZnVuY3Rpb24geDVlKGQpe3JldHVybih4NWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5''@;'; put 'put ''bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBaVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBkbmUoKXtyZXR1cm4gZG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1tY3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3du''@;'; put 'put ''UHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGRuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbWN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j''@;'; put 'put ''YWxsKGQsZykmJm51bGwhPT0oZD1zUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBUNWUoZCxnKXtyZXR1cm4oVDVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVu''@;'; put 'put ''Y3Rpb24geWN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09eDVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIp''@;'; put 'put ''O3JldHVybiB6VGUoZCl9ZnVuY3Rpb24gelRlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBzUihkKXtyZXR1cm4oc1I9''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1MKDQ5Mjk1KTt2YXIgSTVlPW5ldyBXZWFrTWFwLGJjdD1mdW5jdGlvbihkKXshZnVuY3Rp''@;'; put 'put ''b24gdmN0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29u''@;'; put 'put ''c3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlQ1ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEFjdChkKXt2YXIgZz1mdW5jdGlvbiB3Y3QoKXtpZigi''@;'; put 'put ''dW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1zUihkKTtpZihnKXt2YXIgQz1zUih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVs''@;'; put 'put ''c2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geWN0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7cmV0dXJuIGZ1bmN0aW9uIHBjdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg''@;'; put 'put ''YSBmdW5jdGlvbiIpfSh0aGlzLGgpLEM9Zy5jYWxsKHRoaXMsdixSMShoLkRFRkFVTFRTLHkpKSxJNWUuc2V0KHpUZShDKSx7fSksQ31yZXR1cm4gZnVuY3Rpb24gZ2N0KGQsZyxoKXtnJiZaVGUoZC5wcm90b3R5cGUsZyksaCYmWlRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInBy''@;'; put 'put ''b3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe2RuZShzUihoLnByb3RvdHlwZSksImJ1aWxkIix0aGlzKS5jYWxsKHRoaXMpLEk1ZS5nZXQodGhpcykubGluaz10aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGR9fSx7a2V5OiJ1cGRhdGUiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7IXRoaXMuaXNCdWlsdCgpfHwoSTVlLmdldCh0aGlzKS5saW5rLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMudGV4dENvbnRlbnQpKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBzMyh7aHJl''@;'; put 'put ''ZjoiIyIsdGFnTmFtZToiYSJ9KX19XSksaH0oSncpO2NvbnN0IEdUZT1iY3Q7ZnVuY3Rpb24gRDVlKGQpe3JldHVybihENWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBXVGUoZCl7cmV0dXJuIGZ1bmN0aW9uIFNjdChkKXtpZihBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGQpKXJldHVybiBMNWUoZCl9KGQpfHxmdW5jdGlvbiBrY3QoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gQ2N0KGQsZyl7''@;'; put 'put ''aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBMNWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNl''@;'; put 'put ''dCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEw1ZShkLGcpfX0oZCl8fGZ1bmN0aW9uIF9jdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQg''@;'; put 'put ''YXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEw1ZShkLGcpeyhudWxsPT1nfHxnPmQubGVu''@;'; put 'put ''Z3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFlUZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHVSKCl7cmV0dXJuIHVSPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0''@;'; put 'put ''aW9uKGcsaCx2KXt2YXIgeT14Y3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHVSLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlv''@;'; put 'put ''biB4Y3QoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPSR3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIE81ZShkLGcpe3JldHVybihPNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBEY3QoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1ENWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFVUZShkKX1mdW5jdGlvbiBVVGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n''@;'; put 'put ''dCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uICR3KGQpe3JldHVybigkdz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZh''@;'; put 'put ''ciBPY3Q9bmV3IFdlYWtNYXAsQmN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBUY3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnBy''@;'; put 'put ''b3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmTzVlKGQsZyl9KGgsZCk7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gSWN0KGQpe3ZhciBnPWZ1bmN0aW9uIExjdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0''@;'; put 'put ''dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PSR3KGQpO2lmKGcpe3ZhciBDPSR3KHRoaXMpLmNvbnN0cnVj''@;'; put 'put ''dG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBEY3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gTWN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksQz1nLmNhbGwodGhpcyx2LFIxKGguREVGQVVMVFMseSkpLE9jdC5zZXQoVVRlKEMpLHt9KSxDLnNlYXJjaElucHV0PW5ldyBpUihDLmhvdCx7cGxhY2Vob2xkZXI6UXBlLGNsYXNz''@;'; put 'put ''TmFtZToiaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoIn0pLEMuc2VsZWN0QWxsVUk9bmV3IEdUZShDLmhvdCx7dGV4dENvbnRlbnQ6R3BlLGNsYXNzTmFtZToiaHRVSVNlbGVjdEFsbCJ9KSxDLmNsZWFyQWxsVUk9bmV3IEdUZShDLmhvdCx7dGV4dENvbnRlbnQ6V3BlLGNsYXNzTmFtZToiaHRV''@;'; put 'put ''SUNsZWFyQWxsIn0pLEMuaXRlbXM9W10sQy5pdGVtc0JveD1udWxsLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIEVjdChkLGcsaCl7ZyYmWVRlKGQucHJvdG90eXBlLGcpLGgmJllUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pfShoLFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5zZWFyY2hJbnB1dC5hZGRMb2NhbEhvb2soImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uSW5wdXRLZXlEb3duKEMpfSksdGhpcy5zZWFyY2hJbnB1dC5hZGRMb2Nh''@;'; put 'put ''bEhvb2soImlucHV0IixmdW5jdGlvbihDKXtyZXR1cm4geS5vbklucHV0KEMpfSksdGhpcy5zZWxlY3RBbGxVSS5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4geS5vblNlbGVjdEFsbENsaWNrKEMpfSksdGhpcy5jbGVhckFsbFVJLmFkZExvY2FsSG9vaygiY2xpY2si''@;'; put 'put ''LGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uQ2xlYXJBbGxDbGljayhDKX0pfX0se2tleToic2V0SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaXRlbXM9eSx0aGlzLml0ZW1zQm94JiZ0aGlzLml0ZW1zQm94LmxvYWREYXRhKHRoaXMuaXRlbXMpfX0se2tleToic2V0TG9jYWxlIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbih5KXt0aGlzLmxvY2FsZT15fX0se2tleToiZ2V0TG9jYWxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZX19LHtrZXk6ImdldEl0ZW1zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBXVGUodGhpcy5pdGVtcyl9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gRmN0KGQpe3ZhciBnPVtdO3JldHVybiBHcihkLGZ1bmN0aW9uKGgpe2guY2hlY2tlZCYmZy5wdXNoKGgudmFsdWUpfSksZ30odGhpcy5pdGVtcyl9fSx7a2V5OiJpc1NlbGVjdGVkQWxsVmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLml0ZW1zLmxlbmd0aD09PXRoaXMuZ2V0VmFsdWUoKS5sZW5ndGh9fSx7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3VSKCR3KGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIEM9dGhpcy5ob3Qucm9vdERvY3VtZW50LEk9Qy5jcmVh''@;'; put 'put ''dGVFbGVtZW50KCJkaXYiKSxqPW5ldyBKdyh0aGlzLmhvdCx7Y2xhc3NOYW1lOiJodFVJU2VsZWN0aW9uQ29udHJvbHMiLGNoaWxkcmVuOlt0aGlzLnNlbGVjdEFsbFVJLHRoaXMuY2xlYXJBbGxVSV19KTt0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VhcmNoSW5wdXQuZWxlbWVu''@;'; put 'put ''dCksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChqLmVsZW1lbnQpLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoSSk7dmFyIGNlPWZ1bmN0aW9uKFJlKXt5Ll9lbGVtZW50JiYoeS5pdGVtc0JveCYmeS5pdGVtc0JveC5kZXN0cm95KCksUDAoUmUsImh0VUlNdWx0aXBsZVNlbGVjdEhvdCIp''@;'; put 'put ''LHkuaXRlbXNCb3g9bmV3IHkuaG90LmNvbnN0cnVjdG9yKFJlLHtkYXRhOnkuaXRlbXMsY29sdW1uczpbe2RhdGE6ImNoZWNrZWQiLHR5cGU6ImNoZWNrYm94IixsYWJlbDp7cHJvcGVydHk6InZpc3VhbFZhbHVlIixwb3NpdGlvbjoiYWZ0ZXIifX1dLGJlZm9yZVJlbmRlcmVyOmZ1bmN0aW9u''@;'; put 'put ''KEJ0LCR0LGhuLERuLGlyLHByKXtCdC50aXRsZT1wci5pbnN0YW5jZS5nZXREYXRhQXRSb3dQcm9wKCR0LHByLmxhYmVsLnByb3BlcnR5KX0sbWF4Q29sczoxLGF1dG9XcmFwQ29sOiEwLGhlaWdodDoxMTAsY29sV2lkdGhzOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXRlbXNCb3guY29udGFpbmVy''@;'; put 'put ''LnNjcm9sbFdpZHRoLVBjKEMpfSxjb3B5UGFzdGU6ITEsZGlzYWJsZVZpc3VhbFNlbGVjdGlvbjoiYXJlYSIsZmlsbEhhbmRsZTohMSxmcmFnbWVudFNlbGVjdGlvbjoiY2VsbCIsdGFiTW92ZXM6e3JvdzoxLGNvbDowfSxsYXlvdXREaXJlY3Rpb246eS5ob3QuaXNSdGwoKT8icnRsIjoibHRy''@;'; put 'put ''In0pLHkuaXRlbXNCb3guaW5pdCgpLHkuaXRlbXNCb3guZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0KHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazpmdW5jdGlvbihCdCl7eS5ydW5Mb2NhbEhvb2tzKCJrZXlkb3duIixCdCx5KX0sZ3JvdXA6''@;'; put 'put ''Im11bHRpcGxlU2VsZWN0Lml0ZW1Cb3gifSkpfTtjZShJKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGNlKEkpfSwxMDApfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpLHRoaXMuc2VsZWN0QWxsVUkucmVzZXQoKSx0aGlzLmNs''@;'; put 'put ''ZWFyQWxsVUkucmVzZXQoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5pc0J1aWx0KCl8fCh0aGlzLml0ZW1zQm94LmxvYWREYXRhKGZ1bmN0aW9uIFBjdChkLGcpe3ZhciBoPWVHKGcpO3JldHVybiBUbChkLGZ1bmN0aW9uKHYpe3JldHVybiB2LmNoZWNrZWQ9aCh2''@;'; put 'put ''LnZhbHVlKSx2fSl9KHRoaXMuaXRlbXMsdGhpcy5vcHRpb25zLnZhbHVlKSksdVIoJHcoaC5wcm90b3R5cGUpLCJ1cGRhdGUiLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLml0ZW1zQm94JiZ0aGlzLml0ZW1zQm94LmRlc3Ryb3koKSx0''@;'; put 'put ''aGlzLnNlYXJjaElucHV0LmRlc3Ryb3koKSx0aGlzLmNsZWFyQWxsVUkuZGVzdHJveSgpLHRoaXMuc2VsZWN0QWxsVUkuZGVzdHJveSgpLHRoaXMuc2VhcmNoSW5wdXQ9bnVsbCx0aGlzLmNsZWFyQWxsVUk9bnVsbCx0aGlzLnNlbGVjdEFsbFVJPW51bGwsdGhpcy5pdGVtc0JveD1udWxsLHRo''@;'; put 'put ''aXMuaXRlbXM9bnVsbCx1UigkdyhoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJvbklucHV0Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgaixDPXRoaXMsST15LnRhcmdldC52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmdldExvY2FsZSgpKTtqPSIi''@;'; put 'put ''PT09ST9XVGUodGhpcy5pdGVtcyk6ZDQodGhpcy5pdGVtcyxmdW5jdGlvbihjZSl7cmV0dXJuIiIuY29uY2F0KGNlLnZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZShDLmdldExvY2FsZSgpKS5pbmRleE9mKEkpPj0wfSksdGhpcy5pdGVtc0JveC5sb2FkRGF0YShqKX19LHtrZXk6Im9uSW5wdXRL''@;'; put 'put ''ZXlEb3duIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLnJ1bkxvY2FsSG9va3MoImtleWRvd24iLHksdGhpcyksTDNlKFRPLHkua2V5Q29kZSkoIkFSUk9XX0RPV058VEFCIikmJiF0aGlzLml0ZW1zQm94LmlzTGlzdGVuaW5nKCkmJih2OCh5KSx0aGlzLml0ZW1zQm94Lmxpc3RlbigpLHRoaXMu''@;'; put 'put ''aXRlbXNCb3guc2VsZWN0Q2VsbCgwLDApKX19LHtrZXk6Im9uU2VsZWN0QWxsQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPVtdO3kucHJldmVudERlZmF1bHQoKSxHcih0aGlzLml0ZW1zQm94LmdldFNvdXJjZURhdGEoKSxmdW5jdGlvbihJLGope0kuY2hlY2tlZD0hMCxDLnB1c2go''@;'; put 'put ''bzRlKEksailbMF0pfSksdGhpcy5pdGVtc0JveC5zZXRTb3VyY2VEYXRhQXRDZWxsKEMpfX0se2tleToib25DbGVhckFsbENsaWNrIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1bXTt5LnByZXZlbnREZWZhdWx0KCksR3IodGhpcy5pdGVtc0JveC5nZXRTb3VyY2VEYXRhKCksZnVuY3Rpb24o''@;'; put 'put ''SSxqKXtJLmNoZWNrZWQ9ITEsQy5wdXNoKG80ZShJLGopWzBdKX0pLHRoaXMuaXRlbXNCb3guc2V0U291cmNlRGF0YUF0Q2VsbChDKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBzMyh7Y2xhc3NOYW1lOiJodFVJTXVsdGlwbGVTZWxlY3QiLHZhbHVlOltdfSl9''@;'; put 'put ''fV0pLGh9KEp3KTtjb25zdCBRVGU9QmN0O2Z1bmN0aW9uIEpUZShkLGcpe3JldHVybiBmdW5jdGlvbiBqY3QoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIFZjdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''ZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNl''@;'; put 'put ''KXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIE5jdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gWFRlKGQsZyk7dmFyIGg9T2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86''@;'; put 'put ''VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBYVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIEhjdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBv''@;'; put 'put ''cmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gWFRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7''@;'; put 'put ''aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9dmFyIG1NPSJieV92YWx1ZSI7ZnVuY3Rpb24gUjVlKGQpe3JldHVybihSNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBLVGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3Ro''@;'; put 'put ''KTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiAkVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFs''@;'; put 'put ''dWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBwbmUoKXtyZXR1cm4gcG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIg''@;'; put 'put ''eT1YY3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHBuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWGN0KGQsZyl7Zm9y''@;'; put 'put ''KDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1jUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBCNWUoZCxnKXtyZXR1cm4oQjVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYs''@;'; put 'put ''eSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gcWN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09UjVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBt''@;'; put 'put ''YXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBlZnQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVy''@;'; put 'put ''biBkfShkKX1mdW5jdGlvbiBjUihkKXtyZXR1cm4oY1I9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1HdShtTSxmdW5jdGlvbiBaY3Qo''@;'; put 'put ''ZCxnKXtyZXR1cm4oMCxKVGUoZywxKVswXSkoZC52YWx1ZSl9LHtuYW1lOiJCeSB2YWx1ZSIsaW5wdXRzQ291bnQ6MCxpbnB1dFZhbHVlc0RlY29yYXRvcjpmdW5jdGlvbihnKXtyZXR1cm5bZUcoSlRlKGcsMSlbMF0pXX0sc2hvd09wZXJhdG9yczohMX0pO3ZhciBuZnQ9ZnVuY3Rpb24oZCl7''@;'; put 'put ''IWZ1bmN0aW9uIEtjdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5''@;'; put 'put ''cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZCNWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiAkY3QoZCl7dmFyIGc9ZnVuY3Rpb24gdGZ0''@;'; put 'put ''KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxs''@;'; put 'put ''KFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9Y1IoZCk7aWYoZyl7dmFyIEM9Y1IodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50''@;'; put 'put ''cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHFjdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBRY3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs''@;'; put 'put ''YXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoQz1nLmNhbGwodGhpcyx2LHtpZDp5LmlkLHN0YXRlbGVzczohMX0pKS5uYW1lPXkubmFtZSxDLmVsZW1lbnRzLnB1c2gobmV3IFFUZShDLmhvdCkpLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIEpjdChkLGcsaCl7ZyYm''@;'; put 'put ''JFRlKGQucHJvdG90eXBlLGcpLGgmJiRUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQo''@;'; put 'put ''KS5hZGRMb2NhbEhvb2soImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uSW5wdXRLZXlEb3duKEMpfSl9fSx7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYodGhpcy5yZXNldCgpLHkmJnkuY29tbWFuZC5rZXk9PT1tTSl7dmFyIEM9dGhpcy5nZXRNdWx0aXBsZVNl''@;'; put 'put ''bGVjdEVsZW1lbnQoKTtDLnNldEl0ZW1zKHkuaXRlbXNTbmFwc2hvdCksQy5zZXRWYWx1ZSh5LmFyZ3NbMF0pLEMuc2V0TG9jYWxlKHkubG9jYWxlKX19fSx7a2V5OiJnZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLEM9eS5n''@;'; put 'put ''ZXRJdGVtcygpO3JldHVybntjb21tYW5kOntrZXk6eS5pc1NlbGVjdGVkQWxsVmFsdWVzKCl8fCFDLmxlbmd0aD9PZjptTX0sYXJnczpbeS5nZXRWYWx1ZSgpXSxpdGVtc1NuYXBzaG90OkN9fX0se2tleToidXBkYXRlU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1mdW5j''@;'; put 'put ''dGlvbihjZSxfZSxSZSxOZSxLZSl7dmFyICR0PWZ1bmN0aW9uIHpjdChkLGcpe3JldHVybiBmdW5jdGlvbiBVY3QoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIFljdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNo''@;'; put 'put ''KGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBqfX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIFdjdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gS1RlKGQsZyk7dmFyIGg9''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9e''@;'; put 'put ''KD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBLVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIEdjdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5J''@;'; put 'put ''biBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGQ0KF9lLGZ1bmN0aW9uKFlyKXtyZXR1cm4gWXIubmFtZT09PW1NfSksMSlbMF0saG49e30sRG49Qy5ob3QuZ2V0VHJhbnNsYXRlZFBo''@;'; put 'put ''cmFzZShpdGUpO2lmKCR0KXt2YXIgaXI9RTVlKFRsKE5lKGNlLEtlKSxmdW5jdGlvbihZcil7cmV0dXJuIFlyLnZhbHVlfSkpO1JlJiYoJHQuYXJnc1swXT1SZSk7dmFyIHByPVtdLEVyPWpUZShpciwkdC5hcmdzWzBdLERuLGZ1bmN0aW9uKFlyKXtZci5jaGVja2VkJiZwci5wdXNoKFlyLnZh''@;'; put 'put ''bHVlKX0pO2huLmxvY2FsZT1DLmhvdC5nZXRDZWxsTWV0YSgwLHkuZWRpdGVkQ29uZGl0aW9uU3RhY2suY29sdW1uKS5sb2NhbGUsaG4uYXJncz1bcHJdLGhuLmNvbW1hbmQ9blIobU0pLGhuLml0ZW1zU25hcHNob3Q9RXJ9ZWxzZSBobi5hcmdzPVtdLGhuLmNvbW1hbmQ9blIoT2YpO0Muc3Rh''@;'; put 'put ''dGUuc2V0VmFsdWVBdEluZGV4KGNlLGhuKX07SSh5LmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbHVtbix5LmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbmRpdGlvbnMseS5jb25kaXRpb25BcmdzQ2hhbmdlLHkuZmlsdGVyZWRSb3dzRmFjdG9yeSkseS5kZXBlbmRlbnRDb25kaXRpb25TdGFja3Mu''@;'; put 'put ''bGVuZ3RoJiZJKHkuZGVwZW5kZW50Q29uZGl0aW9uU3RhY2tzWzBdLmNvbHVtbix5LmRlcGVuZGVudENvbmRpdGlvblN0YWNrc1swXS5jb25kaXRpb25zLHkuY29uZGl0aW9uQXJnc0NoYW5nZSx5LmZpbHRlcmVkUm93c0ZhY3RvcnkseS5lZGl0ZWRDb25kaXRpb25TdGFjayl9fSx7a2V5OiJn''@;'; put 'put ''ZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiB5IGluc3RhbmNlb2YgUVRlfSlbMF19fSx7a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9''@;'; put 'put ''dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24oSSxqLGNlLF9lLFJlLE5lKXtQMChqLnBhcmVudE5vZGUsImh0''@;'; put 'put ''RmlsdGVyc01lbnVWYWx1ZSIpO3ZhciBLZT15LmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIFAwKEtlLCJodEZpbHRlcnNNZW51TGFiZWwiKSxLZS50ZXh0Q29udGVudD1OZSxqLmFwcGVuZENoaWxkKEtlKSxqLnBhcmVudE5vZGUuaGFzQXR0cmlidXRlKCJn''@;'; put 'put ''aG9zdC10YWJsZSIpfHxHcih5LmVsZW1lbnRzLGZ1bmN0aW9uKGh0KXtyZXR1cm4gai5hcHBlbmRDaGlsZChodC5lbGVtZW50KX0pLGp9fX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoaXRlKSxDPUU1ZSh0aGlzLl9n''@;'; put 'put ''ZXRDb2x1bW5WaXNpYmxlVmFsdWVzKCkpLEk9alRlKEMsQyx5KTt0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldEl0ZW1zKEkpLHBuZShjUihoLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCkuc2V0VmFs''@;'; put 'put ''dWUoQyk7dmFyIGo9dGhpcy5ob3QuZ2V0UGx1Z2luKCJmaWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKS52aXN1YWxJbmRleDt0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldExvY2FsZSh0aGlzLmhvdC5nZXRDZWxsTWV0YSgwLGopLmxvY2FsZSl9fSx7a2V5OiJvbklucHV0''@;'; put 'put ''S2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oeSl7VE8oeS5rZXlDb2RlLCJFU0NBUEUiKSYmKHRoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIiksdjgoeSkpfX0se2tleToiX2dldENvbHVtblZpc2libGVWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0UGx1Z2luKCJm''@;'; put 'put ''aWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKTtyZXR1cm4gVGwodGhpcy5ob3QuZ2V0RGF0YUF0Q29sKHkmJnkudmlzdWFsSW5kZXgpLGZ1bmN0aW9uKEkpe3JldHVybiBWVGUoSSl9KX19XSksaH0odG5lKTtjb25zdCByZnQ9bmZ0O2Z1bmN0aW9uIFA1ZShkKXtyZXR1cm4oUDVlPSJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1i''@;'; put 'put ''b2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gcVRlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxl''@;'; put 'put ''PSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gRjVlKGQsZyl7cmV0dXJuKEY1ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1''@;'; put 'put ''bmN0aW9uIHNmdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVA1ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQi''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24gdWZ0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gZ25lKGQpe3JldHVybihnbmU9''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgZmZ0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBhZnQoZCxnKXtpZigiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJs''@;'; put 'put ''ZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRjVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gbGZ0KGQpe3ZhciBnPWZ1bmN0aW9uIGNmdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVj''@;'; put 'put ''dHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1''@;'; put 'put ''bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWduZShkKTtpZihnKXt2YXIgQz1nbmUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3Vt''@;'; put 'put ''ZW50cyk7cmV0dXJuIHNmdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBpZnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwo''@;'; put 'put ''Qz1nLmNhbGwodGhpcyx2LHtpZDp5LmlkLHN0YXRlbGVzczohMH0pKS5uYW1lPXkubmFtZSxDLmVsZW1lbnRzLnB1c2gobmV3IGlSKEMuaG90LHt0eXBlOiJidXR0b24iLHZhbHVlOllwZSxjbGFzc05hbWU6Imh0VUlCdXR0b24gaHRVSUJ1dHRvbk9LIixpZGVudGlmaWVyOmguQlVUVE9OX09L''@;'; put 'put ''fSkpLEMuZWxlbWVudHMucHVzaChuZXcgaVIoQy5ob3Qse3R5cGU6ImJ1dHRvbiIsdmFsdWU6VXBlLGNsYXNzTmFtZToiaHRVSUJ1dHRvbiBodFVJQnV0dG9uQ2FuY2VsIixpZGVudGlmaWVyOmguQlVUVE9OX0NBTkNFTH0pKSxDLnJlZ2lzdGVySG9va3MoKSxDfXJldHVybiBmdW5jdGlvbiBv''@;'; put 'put ''ZnQoZCxnLGgpe2cmJnFUZShkLnByb3RvdHlwZSxnKSxoJiZxVGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToicmVnaXN0ZXJIb29rcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO0dyKHRoaXMuZWxlbWVudHMs''@;'; put 'put ''ZnVuY3Rpb24oQyl7Qy5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbihJLGope3JldHVybiB5Lm9uQnV0dG9uQ2xpY2soSSxqKX0pfSl9fSx7a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0''@;'; put 'put ''aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24oSSxqKXtyZXR1cm4gUDAoai5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51QWN0aW9uQmFyIiksai5wYXJlbnROb2Rl''@;'; put 'put ''Lmhhc0F0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiKXx8R3IoeS5lbGVtZW50cyxmdW5jdGlvbihjZSl7cmV0dXJuIGouYXBwZW5kQ2hpbGQoY2UuZWxlbWVudCl9KSxqfX19fSx7a2V5OiJhY2NlcHQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJhY2NlcHQiKX19LHtrZXk6''@;'; put 'put ''ImNhbmNlbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImNhbmNlbCIpfX0se2tleToib25CdXR0b25DbGljayIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtDLm9wdGlvbnMuaWRlbnRpZmllcj09PWguQlVUVE9OX09LP3RoaXMuYWNjZXB0KCk6dGhpcy5jYW5jZWwoKX19XSxb''@;'; put 'put ''e2tleToiQlVUVE9OX09LIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ib2sifX0se2tleToiQlVUVE9OX0NBTkNFTCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImNhbmNlbCJ9fV0pLGh9KHRuZSk7Y29uc3QgaGZ0PWZmdDt2YXIgZUllLHRJZTtmdW5jdGlvbiBuSWUoZCxnKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gbWZ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBnZnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGos''@;'; put 'put ''dj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1m''@;'; put 'put ''aW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBwZnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHJJZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09''@;'; put 'put ''PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gckll''@;'; put 'put ''KGQsZyl9fShkLGcpfHxmdW5jdGlvbiBkZnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHJJZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIGlJZShkLGcpe3JldHVybiBnfHwo''@;'; put 'put ''Zz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9ZnVuY3Rpb24gdmZ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz''@;'; put 'put ''cyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gb0llKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGFJZT0iQ29uZGl0aW9uQ29sbGVjdGlvbi5maWx0ZXJpbmdTdGF0ZXMiLGxJZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt2ZnQo''@;'; put 'put ''dGhpcyxkKSx0aGlzLmhvdD1nLHRoaXMuaXNNYXBSZWdpc3RyYWJsZT1oLHRoaXMuZmlsdGVyaW5nU3RhdGVzPW5ldyBRZWUsITA9PT10aGlzLmlzTWFwUmVnaXN0cmFibGU/dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoYUllLHRoaXMuZmlsdGVyaW5nU3RhdGVzKTp0''@;'; put 'put ''aGlzLmZpbHRlcmluZ1N0YXRlcy5pbml0KHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE51bWJlck9mSW5kZXhlcygpKX1yZXR1cm4gZnVuY3Rpb24gQWZ0KGQsZyxoKXtnJiZvSWUoZC5wcm90b3R5cGUsZyksaCYmb0llKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImlzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmdldEZpbHRlcmVkQ29sdW1ucygpLmxlbmd0aH19LHtrZXk6ImlzTWF0Y2giLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHksQz10aGlzLmZpbHRlcmluZ1N0YXRl''@;'; put 'put ''cy5nZXRWYWx1ZUF0SW5kZXgodiksST1udWxsIT09KHk9bnVsbD09Qz92b2lkIDA6Qy5jb25kaXRpb25zKSYmdm9pZCAwIT09eT95OltdO3JldHVybiB0aGlzLmlzTWF0Y2hJbkNvbmRpdGlvbnMoSSxoLG51bGw9PUM/dm9pZCAwOkMub3BlcmF0aW9uKX19LHtrZXk6ImlzTWF0Y2hJbkNvbmRp''@;'; put 'put ''dGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkt3O3JldHVybiFoLmxlbmd0aHx8TnV0KHkpKGgsdil9fSx7a2V5OiJhZGRDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFy''@;'; put 'put ''IHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOkt3LEM9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAsST10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLGgpLmxvY2FsZSxqPVRsKHYuYXJncyxmdW5jdGlvbihOZSl7cmV0''@;'; put 'put ''dXJuInN0cmluZyI9PXR5cGVvZiBOZT9OZS50b0xvY2FsZUxvd2VyQ2FzZShJKTpOZX0pLGNlPXYubmFtZXx8di5jb21tYW5kLmtleTt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZUFkZCIsaCk7dmFyIF9lPXRoaXMuZ2V0T3BlcmF0aW9uKGgpO2lmKF9lKXtpZihfZSE9PXkpdGhyb3cgRXJy''@;'; put 'put ''b3IoRDIoZUllfHwoZUllPWlJZShbIlRoZSBjb2x1bW4gb2YgaW5kZXggIiwiIGhhcyBiZWVuIGFscmVhZHkgYXBwbGllZCB3aXRoIGEgYCIsImAgXG4gICAgICAgIGZpbHRlciBvcGVyYXRpb24uIFVzZSBgcmVtb3ZlQ29uZGl0aW9uc2AgdG8gY2xlYXIgdGhlIGN1cnJlbnQgY29uZGl0aW9u''@;'; put 'put ''cyBhbmQgdGhlbiBhZGQgbmV3IG9uZXMuIFxuICAgICAgICBNaW5kIHRoYXQgeW91IGNhbm5vdCBtaXggZGlmZmVyZW50IHR5cGVzIG9mIG9wZXJhdGlvbnMgKGZvciBpbnN0YW5jZSwgaWYgeW91IHVzZSBgY29uanVuY3Rpb25gLCBcbiAgICAgICAgdXNlIGl0IGNvbnNlcXVlbnRseSBmb3Ig''@;'; put 'put ''YSBwYXJ0aWN1bGFyIGNvbHVtbikuIl0sWyJUaGUgY29sdW1uIG9mIGluZGV4ICIsIiBoYXMgYmVlbiBhbHJlYWR5IGFwcGxpZWQgd2l0aCBhIFxcYCIsIlxcYFxceDIwXG4gICAgICAgIGZpbHRlciBvcGVyYXRpb24uIFVzZSBcXGByZW1vdmVDb25kaXRpb25zXFxgIHRvIGNsZWFyIHRoZSBj''@;'; put 'put ''dXJyZW50IGNvbmRpdGlvbnMgYW5kIHRoZW4gYWRkIG5ldyBvbmVzLlxceDIwXG4gICAgICAgIE1pbmQgdGhhdCB5b3UgY2Fubm90IG1peCBkaWZmZXJlbnQgdHlwZXMgb2Ygb3BlcmF0aW9ucyAoZm9yIGluc3RhbmNlLCBpZiB5b3UgdXNlIFxcYGNvbmp1bmN0aW9uXFxgLFxceDIwXG4gICAg''@;'; put 'put ''ICAgIHVzZSBpdCBjb25zZXF1ZW50bHkgZm9yIGEgcGFydGljdWxhciBjb2x1bW4pLiJdKSksaCxfZSkpfWVsc2UgaWYodTEocXpbeV0pKXRocm93IG5ldyBFcnJvcihEMih0SWV8fCh0SWU9aUllKFsiVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgYCIsImAuIFBvc3NpYmxlIG9uZXMgYXJl''@;'; put 'put ''IFxuICAgICAgICBgZGlzanVuY3Rpb25gIGFuZCBgY29uanVuY3Rpb25gLiJdLFsiVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgXFxgIiwiXFxgLiBQb3NzaWJsZSBvbmVzIGFyZVxceDIwXG4gICAgICAgIFxcYGRpc2p1bmN0aW9uXFxgIGFuZCBcXGBjb25qdW5jdGlvblxcYC4iXSkpLHkp''@;'; put 'put ''KTt2YXIgUmU9dGhpcy5nZXRDb25kaXRpb25zKGgpOzA9PT1SZS5sZW5ndGg/dGhpcy5maWx0ZXJpbmdTdGF0ZXMuc2V0VmFsdWVBdEluZGV4KGgse29wZXJhdGlvbjp5LGNvbmRpdGlvbnM6W3tuYW1lOmNlLGFyZ3M6aixmdW5jOlF3KGNlLGopfV19LEMpOlJlLnB1c2goe25hbWU6Y2UsYXJn''@;'; put 'put ''czpqLGZ1bmM6UXcoY2Usail9KSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQWRkIixoKX19LHtrZXk6ImdldENvbmRpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2LHk7cmV0dXJuIG51bGwhPT0odj1udWxsPT09KHk9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4''@;'; put 'put ''KGgpKXx8dm9pZCAwPT09eT92b2lkIDA6eS5jb25kaXRpb25zKSYmdm9pZCAwIT09dj92OltdfX0se2tleToiZ2V0T3BlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4gbnVsbD09PSh2PXRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldFZhbHVlQXRJbmRleChoKSl8fHZvaWQg''@;'; put 'put ''MD09PXY/dm9pZCAwOnYub3BlcmF0aW9ufX0se2tleToiZ2V0RmlsdGVyZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcmluZ1N0YXRlcy5nZXRFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBuSWUoaCwxKVswXX0pfX0se2tleToiZ2V0Q29sdW1u''@;'; put 'put ''U3RhY2tQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVyZWRDb2x1bW5zKCkuaW5kZXhPZihoKX19LHtrZXk6ImV4cG9ydEFsbENvbmRpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEV1KHRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldEVudHJpZXMo''@;'; put 'put ''KSxmdW5jdGlvbihoLHYpe3ZhciB5PW5JZSh2LDIpLEk9eVsxXTtyZXR1cm4gaC5wdXNoKHtjb2x1bW46eVswXSxvcGVyYXRpb246SS5vcGVyYXRpb24sY29uZGl0aW9uczpUbChJLmNvbmRpdGlvbnMsZnVuY3Rpb24oX2Upe3JldHVybntuYW1lOl9lLm5hbWUsYXJnczpfZS5hcmdzfX0pfSks''@;'; put 'put ''aH0sW10pfX0se2tleToiaW1wb3J0QWxsQ29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpczt0aGlzLmNsZWFuKCksR3IoaCxmdW5jdGlvbih5KXtHcih5LmNvbmRpdGlvbnMsZnVuY3Rpb24oQyl7cmV0dXJuIHYuYWRkQ29uZGl0aW9uKHkuY29sdW1uLEMpfSl9KX19LHtr''@;'; put 'put ''ZXk6InJlbW92ZUNvbmRpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlUmVtb3ZlIixoKSx0aGlzLmZpbHRlcmluZ1N0YXRlcy5jbGVhclZhbHVlKGgpLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJSZW1vdmUiLGgpfX0se2tleToiY2xlYW4iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVDbGVhbiIpLHRoaXMuZmlsdGVyaW5nU3RhdGVzLmNsZWFyKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckNsZWFuIil9fSx7a2V5OiJoYXNDb25kaXRpb25zIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMu''@;'; put 'put ''Z2V0Q29uZGl0aW9ucyhoKTtyZXR1cm4gdj95LnNvbWUoZnVuY3Rpb24oQyl7cmV0dXJuIEMubmFtZT09PXZ9KTp5Lmxlbmd0aD4wfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzTWFwUmVnaXN0cmFibGUmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVn''@;'; put 'put ''aXN0ZXJNYXAoYUllKSx0aGlzLmZpbHRlcmluZ1N0YXRlcz1udWxsLHRoaXMuY2xlYXJMb2NhbEhvb2tzKCl9fV0pLGR9KCk7STIobEllLHJkKTtjb25zdCBzSWU9bEllO2Z1bmN0aW9uIHlmdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBj''@;'; put 'put ''YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHVJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBiZnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpmdW5jdGlvbigpe3JldHVybltdfTt5ZnQodGhpcyxkKSx0aGlzLmNv''@;'; put 'put ''bmRpdGlvbkNvbGxlY3Rpb249Zyx0aGlzLmNvbHVtbkRhdGFGYWN0b3J5PWh9cmV0dXJuIGZ1bmN0aW9uIHdmdChkLGcsaCl7ZyYmdUllKGQucHJvdG90eXBlLGcpLGgmJnVJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5''@;'; put 'put ''OiJmaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PVtdO3JldHVybiBHcih0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0RmlsdGVyZWRDb2x1bW5zKCksZnVuY3Rpb24oeSxDKXt2YXIgST1oLmNvbHVtbkRhdGFGYWN0b3J5KHkpO0MmJihJPWguX2dldEludGVyc2VjdERh''@;'; put 'put ''dGEoSSx2KSksdj1oLmZpbHRlckJ5Q29sdW1uKHksSSl9KSx2fX0se2tleToiZmlsdGVyQnlDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sQz1bXTtyZXR1cm4gR3Io''@;'; put 'put ''eSxmdW5jdGlvbihJKXt2b2lkIDAhPT1JJiZ2LmNvbmRpdGlvbkNvbGxlY3Rpb24uaXNNYXRjaChJLGgpJiZDLnB1c2goSSl9KSxDfX0se2tleToiX2dldEludGVyc2VjdERhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9W107cmV0dXJuIEdyKHYsZnVuY3Rpb24oQyl7dmFyIEk9Qy5t''@;'; put 'put ''ZXRhLnZpc3VhbFJvdzt2b2lkIDAhPT1oW0ldJiYoeVtJXT1oW0ldKX0pLHl9fV0pLGR9KCk7Y29uc3QgY0llPWJmdDtmdW5jdGlvbiBfZnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1m''@;'; put 'put ''dW5jdGlvbiBmSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYp''@;'; put 'put ''fX12YXIgaEllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ZnVuY3Rpb24oKXtyZXR1cm5bXX07X2Z0KHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmNvbmRpdGlvbkNv''@;'; put 'put ''bGxlY3Rpb249aCx0aGlzLmNvbHVtbkRhdGFGYWN0b3J5PXksdGhpcy5jaGFuZ2VzPVtdLHRoaXMuZ3JvdXBpbmc9ITEsdGhpcy5sYXRlc3RFZGl0ZWRDb2x1bW5Qb3NpdGlvbj0tMSx0aGlzLmxhdGVzdE9yZGVyU3RhY2s9W10sdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9v''@;'; put 'put ''aygiYmVmb3JlUmVtb3ZlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5fb25Db25kaXRpb25CZWZvcmVNb2RpZnkoQyl9KSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlclJlbW92ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudXBkYXRlU3RhdGVzQXRDb2x1bW4oQyl9''@;'; put 'put ''KSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlckFkZCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudXBkYXRlU3RhdGVzQXRDb2x1bW4oQyl9KSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVDbGVhbiIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdi5fb25Db25kaXRpb25CZWZvcmVDbGVhbigpfSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJDbGVhbiIsZnVuY3Rpb24oKXtyZXR1cm4gdi5fb25Db25kaXRpb25BZnRlckNsZWFuKCl9KX1yZXR1cm4gZnVuY3Rpb24gQ2Z0KGQsZyxoKXtnJiZmSWUo''@;'; put 'put ''ZC5wcm90b3R5cGUsZyksaCYmZkllKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Imdyb3VwQ2hhbmdlcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdyb3VwaW5nPSEwfX0se2tleToiZmx1c2giLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGg9dGhpczt0aGlzLmdyb3VwaW5nPSExLEdyKHRoaXMuY2hhbmdlcyxmdW5jdGlvbih2KXtoLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKHYpfSksdGhpcy5jaGFuZ2VzLmxlbmd0aD0wfX0se2tleToiX29uQ29uZGl0aW9uQmVmb3JlTW9kaWZ5Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlz''@;'; put 'put ''LmxhdGVzdEVkaXRlZENvbHVtblBvc2l0aW9uPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb2x1bW5TdGFja1Bvc2l0aW9uKGgpfX0se2tleToidXBkYXRlU3RhdGVzQXRDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcztpZih0aGlzLmdyb3VwaW5nKS0xPT09dGhp''@;'; put 'put ''cy5jaGFuZ2VzLmluZGV4T2YoaCkmJnRoaXMuY2hhbmdlcy5wdXNoKGgpO2Vsc2V7dmFyIEM9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmV4cG9ydEFsbENvbmRpdGlvbnMoKSxJPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb2x1bW5TdGFja1Bvc2l0aW9uKGgpOy0xPT09SSYmKEk9''@;'; put 'put ''dGhpcy5sYXRlc3RFZGl0ZWRDb2x1bW5Qb3NpdGlvbik7dmFyIGo9Qy5zbGljZSgwLEkpLGNlPUMuc2xpY2UoSSk7Y2UubGVuZ3RoJiZjZVswXS5jb2x1bW49PT1oJiZjZS5zaGlmdCgpO3ZhciBfZT1FX2UoZnVuY3Rpb24oTmUsS2Upe3ZhciBodD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQg''@;'; put 'put ''MCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W10sQnQ9bmV3IHNJZSh5LmhvdCwhMSksJHQ9W10uY29uY2F0KE5lLGh0KTtCdC5pbXBvcnRBbGxDb25kaXRpb25zKCR0KTt2YXIgaG49eS5jb2x1bW5EYXRhRmFjdG9yeShLZSksaXI9ZUcoVGwoQnQuaXNFbXB0eSgpP2huOm5ldyBjSWUo''@;'; put 'put ''QnQsZnVuY3Rpb24ocHIpe3JldHVybiB5LmNvbHVtbkRhdGFGYWN0b3J5KHByKX0pLmZpbHRlcigpLGZ1bmN0aW9uKHByKXtyZXR1cm4gcHIubWV0YS52aXN1YWxSb3d9KSk7cmV0dXJuIEJ0LmRlc3Ryb3koKSxkNChobixmdW5jdGlvbihwcil7cmV0dXJuIGlyKHByLm1ldGEudmlzdWFsUm93''@;'; put 'put ''KX0pfSkoaiksUmU9W10uY29uY2F0KHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb25kaXRpb25zKGgpKTt0aGlzLnJ1bkxvY2FsSG9va3MoInVwZGF0ZSIse2VkaXRlZENvbmRpdGlvblN0YWNrOntjb2x1bW46aCxjb25kaXRpb25zOlJlfSxkZXBlbmRlbnRDb25kaXRpb25TdGFja3M6''@;'; put 'put ''Y2UsZmlsdGVyZWRSb3dzRmFjdG9yeTpfZSxjb25kaXRpb25BcmdzQ2hhbmdlOnZ9KX19fSx7a2V5OiJfb25Db25kaXRpb25CZWZvcmVDbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxhdGVzdE9yZGVyU3RhY2s9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldEZpbHRlcmVkQ29sdW1u''@;'; put 'put ''cygpfX0se2tleToiX29uQ29uZGl0aW9uQWZ0ZXJDbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO0dyKHRoaXMubGF0ZXN0T3JkZXJTdGFjayxmdW5jdGlvbih2KXtoLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKHYpfSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBoPXRoaXM7dGhpcy5jbGVhckxvY2FsSG9va3MoKSxabCh0aGlzLGZ1bmN0aW9uKHYseSl7aFt5XT1udWxsfSl9fV0pLGR9KCk7STIoaEllLHJkKTtjb25zdCBrZnQ9aEllO2Z1bmN0aW9uIEg1ZShkKXtyZXR1cm4oSDVlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSko''@;'; put 'put ''ZCl9dmFyIGRJZTtmdW5jdGlvbiBwSWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBnSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7''@;'; put 'put ''dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBmUigpe3JldHVybiBmUj0idW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9T2Z0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9n''@;'; put 'put ''OnYpOkMudmFsdWV9fSxmUi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gT2Z0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1xdyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBONWUoZCxnKXtyZXR1cm4oTjVlPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gUGZ0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09SDVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJu''@;'; put 'put ''IGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBtSWUoZCl9ZnVuY3Rpb24gbUllKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9y''@;'; put 'put ''KCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBxdyhkKXtyZXR1cm4ocXc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgTmZ0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBSZnQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhl''@;'; put 'put ''ciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxl''@;'; put 'put ''OiExfSksZyYmTjVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gQmZ0KGQpe3ZhciBnPWZ1bmN0aW9uIEZmdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXF3KGQp''@;'; put 'put ''O2lmKGcpe3ZhciBDPXF3KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBQZnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIERmdChk''@;'; put 'put ''LGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5ldmVudE1hbmFnZXI9bmV3IFAxKG1JZSh5KSkseS5kcm9wZG93bk1lbnVQbHVnaW49bnVsbCx5''@;'; put 'put ''LmNvbmRpdGlvbkNvbGxlY3Rpb249bnVsbCx5LmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyPW51bGwseS5jb21wb25lbnRzPW5ldyBNYXAoW1siZmlsdGVyX2J5X2NvbmRpdGlvbiIsbnVsbF0sWyJmaWx0ZXJfb3BlcmF0b3JzIixudWxsXSxbImZpbHRlcl9ieV9jb25kaXRpb24yIixudWxsXSxb''@;'; put 'put ''ImZpbHRlcl9ieV92YWx1ZSIsbnVsbF0sWyJmaWx0ZXJfYWN0aW9uX2JhciIsbnVsbF1dKSx5Lmxhc3RTZWxlY3RlZENvbHVtbj1udWxsLHkuZmlsdGVyc1Jvd3NNYXA9bnVsbCx5LmhvdC5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkFmdGVy''@;'; put 'put ''R2V0Q29sSGVhZGVyKEMsSSl9KSx5fXJldHVybiBmdW5jdGlvbiBMZnQoZCxnLGgpe2cmJmdJZShkLnByb3RvdHlwZSxnKSxoJiZnSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maWx0ZXJzfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dGhpcy5maWx0ZXJzUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rl''@;'; put 'put ''ck1hcCh0aGlzLnBsdWdpbk5hbWUsbmV3IHh6KSx0aGlzLmRyb3Bkb3duTWVudVBsdWdpbj10aGlzLmhvdC5nZXRQbHVnaW4oImRyb3Bkb3duTWVudSIpO3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKCkuZHJvcGRvd25NZW51LEk9QyYmQy51aUNvbnRhaW5lcnx8dGhpcy5ob3Qucm9vdERv''@;'; put 'put ''Y3VtZW50LmJvZHksaj1mdW5jdGlvbihodCl7cmV0dXJuIGh0LmFkZExvY2FsSG9vaygiYWNjZXB0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWN0aW9uQmFyU3VibWl0KCJhY2NlcHQiKX0pLGh0LmFkZExvY2FsSG9vaygiY2FuY2VsIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWN0aW9uQmFy''@;'; put 'put ''U3VibWl0KCJjYW5jZWwiKX0pLGh0LmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbihCdCl7cmV0dXJuIHkub25Db21wb25lbnRDaGFuZ2UoaHQsQnQpfSksaHR9O2lmKCF0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikpe3ZhciBSZT1uZXcgeTVlKHRoaXMu''@;'; put 'put ''aG90LHtpZDoiZmlsdGVyX2J5X2NvbmRpdGlvbiIsbmFtZTpmdW5jdGlvbigpe3JldHVybiIiLmNvbmNhdCh5LmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKGpwZSksIjoiKX0sYWRkU2VwYXJhdG9yOiExLG1lbnVDb250YWluZXI6SX0pO1JlLmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4geS5vblNlbGVjdFVJQ2xvc2VkKCl9KSx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIixqKFJlKSl9aWYodGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIpfHx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfb3BlcmF0''@;'; put 'put ''b3JzIixuZXcgY2N0KHRoaXMuaG90LHtpZDoiZmlsdGVyX29wZXJhdG9ycyIsbmFtZToiT3BlcmF0b3JzIn0pKSwhdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiKSl7dmFyIE5lPW5ldyB5NWUodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfY29uZGl0aW9uMiIsbmFt''@;'; put 'put ''ZToiIixhZGRTZXBhcmF0b3I6ITAsbWVudUNvbnRhaW5lcjpJfSk7TmUuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uU2VsZWN0VUlDbG9zZWQoKX0pLHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIixqKE5lKSl9dGhpcy5j''@;'; put 'put ''b21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIil8fHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9ieV92YWx1ZSIsaihuZXcgcmZ0KHRoaXMuaG90LHtpZDoiZmlsdGVyX2J5X3ZhbHVlIixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIiIuY29uY2F0KHkuaG90LmdldFRyYW5zbGF0ZWRQ''@;'; put 'put ''aHJhc2UoWnBlKSwiOiIpfX0pKSksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2FjdGlvbl9iYXIiKXx8dGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2FjdGlvbl9iYXIiLGoobmV3IGhmdCh0aGlzLmhvdCx7aWQ6ImZpbHRlcl9hY3Rpb25fYmFyIixuYW1lOiJBY3Rpb24gYmFyIn0p''@;'; put 'put ''KSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9ufHwodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPW5ldyBzSWUodGhpcy5ob3QpKSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyfHwodGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlcj1uZXcga2Z0KHRoaXMuaG90LHRoaXMuY29uZGl0aW9u''@;'; put 'put ''Q29sbGVjdGlvbixmdW5jdGlvbihLZSl7cmV0dXJuIHkuZ2V0RGF0YU1hcEF0Q29sdW1uKEtlKX0pLHRoaXMuY29uZGl0aW9uVXBkYXRlT2JzZXJ2ZXIuYWRkTG9jYWxIb29rKCJ1cGRhdGUiLGZ1bmN0aW9uKEtlKXtyZXR1cm4geS51cGRhdGVDb21wb25lbnRzKEtlKX0pKSx0aGlzLmNvbXBv''@;'; put 'put ''bmVudHMuZm9yRWFjaChmdW5jdGlvbihLZSl7cmV0dXJuIEtlLnNob3coKX0pLHRoaXMucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmFkZEhvb2soImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixmdW5jdGlvbihLZSl7cmV0dXJuIHkub25CZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyhLZSl9''@;'; put 'put ''KSx0aGlzLmFkZEhvb2soImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKEtlKXtyZXR1cm4geS5vbkFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMoS2UpfSksdGhpcy5hZGRIb29rKCJhZnRlckRyb3Bkb3duTWVudVNob3ciLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHkub25BZnRlckRyb3Bkb3duTWVudVNob3coKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJEcm9wZG93bk1lbnVIaWRlKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ2hhbmdlIixmdW5jdGlvbihLZSl7cmV0dXJuIHku''@;'; put 'put ''b25BZnRlckNoYW5nZShLZSl9KSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSYmdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJih0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5kaXNhYmxlUGx1Z2luKCksdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4uZW5hYmxlUGx1Z2luKCkpLGZS''@;'; put 'put ''KHF3KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RWxlbWVudCwiY2xpY2si''@;'; put 'put ''LGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uVGFibGVDbGljayhDKX0pfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQyx5PXRoaXM7dGhpcy5lbmFibGVkJiYobnVsbCE9PShDPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKSYmdm9pZCAwIT09QyYmQy5lbmFibGVk''@;'; put 'put ''JiZ0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51LmNsZWFyTG9jYWxIb29rcygpLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKEksail7SS5kZXN0cm95KCkseS5jb21wb25lbnRzLnNldChqLG51bGwpfSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmRlc3Ryb3koKSx0aGlz''@;'; put 'put ''LmNvbmRpdGlvbkNvbGxlY3Rpb249bnVsbCx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSkpLGZSKHF3KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImFkZENvbmRpdGlvbiIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oeSxDLEkpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpLdyxjZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpO3RoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24oY2Use2NvbW1hbmQ6e2tleTpD''@;'; put 'put ''fSxhcmdzOkl9LGopfX0se2tleToicmVtb3ZlQ29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih5KTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24ucmVtb3ZlQ29uZGl0aW9ucyhDKX19LHtrZXk6ImNsZWFyQ29uZGl0aW9ucyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oeSl7aWYodm9pZCAwPT09eSl0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uY2xlYW4oKTtlbHNle3ZhciBDPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oeSk7dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLnJlbW92ZUNvbmRpdGlvbnMoQyl9fX0se2tleToiZmlsdGVyIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLl9jcmVhdGVEYXRhRmlsdGVyKCksST0hdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmlzRW1wdHkoKSxqPVtdLGNlPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5leHBvcnRBbGxDb25kaXRpb25zKCk7aWYoITEhPT10aGlzLmhvdC5y''@;'; put 'put ''dW5Ib29rcygiYmVmb3JlRmlsdGVyIixjZSkpaWYoSSl7dmFyIFJlPVtdO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7eS5maWx0ZXJzUm93c01hcC5jbGVhcigpO3ZhciBOZT1lRyhqPVRsKEMuZmlsdGVyKCksZnVuY3Rpb24oS2Upe3JldHVybiBLZS5tZXRhLnZpc3VhbFJv''@;'; put 'put ''d30pKTtyYSh5LmhvdC5jb3VudFNvdXJjZVJvd3MoKS0xLGZ1bmN0aW9uKEtlKXtOZShLZSl8fFJlLnB1c2goS2UpfSksR3IoUmUsZnVuY3Rpb24oS2Upe3kuZmlsdGVyc1Jvd3NNYXAuc2V0VmFsdWVBdEluZGV4KEtlLCEwKX0pfSwhMCksai5sZW5ndGh8fHRoaXMuaG90LmRlc2VsZWN0Q2Vs''@;'; put 'put ''bCgpfWVsc2UgdGhpcy5maWx0ZXJzUm93c01hcC5jbGVhcigpO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckZpbHRlciIsY2UpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmNsZWFyQ29sdW1uU2VsZWN0aW9uKCl9fSx7a2V5OiJn''@;'; put 'put ''ZXRTZWxlY3RlZENvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0U2VsZWN0ZWRDb2x1bW59fSx7a2V5OiJjbGVhckNvbHVtblNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSxDPW51bGw9PT0oeT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8''@;'; put 'put ''dm9pZCAwPT09eT92b2lkIDA6eS5nZXRUb3BTdGFydENvcm5lcigpO3ZvaWQgMCE9PUMmJnRoaXMuaG90LnNlbGVjdENlbGwoQy5yb3csQy5jb2wpfX0se2tleToiZ2V0RGF0YU1hcEF0Q29sdW1uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhpcy5ob3QudG9WaXN1YWxDb2x1''@;'; put 'put ''bW4oeSksaj1bXTtyZXR1cm4gR3IodGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q29sKEkpLGZ1bmN0aW9uKGNlLF9lKXt2YXIgUmUsTmU9Qy5ob3QuZ2V0Q2VsbE1ldGEoX2UsSSksS2U9TmUucm93LGh0PU5lLmNvbCxCdD1OZS52aXN1YWxDb2wsJHQ9TmUudmlzdWFsUm93LGhuPU5lLnR5cGUs''@;'; put 'put ''RG49TmUuaW5zdGFuY2UsaXI9TmUuZGF0ZUZvcm1hdCxwcj1OZS5sb2NhbGUsRXI9bnVsbCE9PShSZT1DLmhvdC5nZXREYXRhQXRDZWxsKEMuaG90LnRvVmlzdWFsUm93KF9lKSxJKSkmJnZvaWQgMCE9PVJlP1JlOmNlO2oucHVzaCh7bWV0YTp7cm93OktlLGNvbDpodCx2aXN1YWxDb2w6QnQs''@;'; put 'put ''dmlzdWFsUm93OiR0LHR5cGU6aG4saW5zdGFuY2U6RG4sZGF0ZUZvcm1hdDppcixsb2NhbGU6cHJ9LHZhbHVlOlZUZShFcil9KX0pLGp9fSx7a2V5OiJvbkFmdGVyQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO3kmJkdyKHksZnVuY3Rpb24oSSl7dmFyIGo9ZnVuY3Rpb24g''@;'; put 'put ''TWZ0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIElmdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gVGZ0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3Ii''@;'; put 'put ''XTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9''@;'; put 'put ''aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24geGZ0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBwSWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xp''@;'; put 'put ''Y2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJh''@;'; put 'put ''eSQvLnRlc3QoaCkpcmV0dXJuIHBJZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gRWZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2Jq''@;'; put 'put ''ZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oSSwyKSxfZT1DLmhvdC5wcm9wVG9Db2woalsxXSk7Qy5jb25kaXRpb25Db2xsZWN0aW9uLmhhc0NvbmRpdGlvbnMoX2UpJiZDLnVwZGF0ZVZhbHVlQ29tcG9uZW50Q29uZGl0aW9uKF9lKX0pfX0se2tl''@;'; put 'put ''eToidXBkYXRlVmFsdWVDb21wb25lbnRDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBJPUU1ZSh0aGlzLmhvdC5nZXREYXRhQXRDb2woeSkpO3RoaXMuY29uZGl0aW9uVXBkYXRlT2JzZXJ2ZXIudXBkYXRlU3RhdGVzQXRDb2x1bW4oeSxJKX19LHtrZXk6InJlc3RvcmVDb21wb25l''@;'; put 'put ''bnRzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQyxJPW51bGw9PT0oQz10aGlzLmdldFNlbGVjdGVkQ29sdW1uKCkpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnBoeXNpY2FsSW5kZXg7eS5mb3JFYWNoKGZ1bmN0aW9uKGope2ouaXNIaWRkZW4oKXx8ai5yZXN0b3JlU3RhdGUoSSl9KSx0aGlzLnVw''@;'; put 'put ''ZGF0ZURlcGVuZGVudENvbXBvbmVudHNWaXNpYmlsaXR5KCl9fSx7a2V5OiJvbkFmdGVyRHJvcGRvd25NZW51U2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlc3RvcmVDb21wb25lbnRzKEFycmF5LmZyb20odGhpcy5jb21wb25lbnRzLnZhbHVlcygpKSl9fSx7a2V5OiJvbkFmdGVyRHJv''@;'; put 'put ''cGRvd25NZW51SGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikuZ2V0U2VsZWN0RWxlbWVudCgpLmNsb3NlT3B0aW9ucygpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIikuZ2V0U2VsZWN0RWxl''@;'; put 'put ''bWVudCgpLmNsb3NlT3B0aW9ucygpfX0se2tleToib25CZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZHJvcGRvd25NZW51UGx1Z2luJiZ0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVu''@;'; put 'put ''IixmdW5jdGlvbigpe3kuZHJvcGRvd25NZW51UGx1Z2luLm1lbnUuaG90TWVudS51cGRhdGVTZXR0aW5ncyh7aGlkZGVuUm93czohMH0pfSl9fSx7a2V5OiJvbkFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZTp6bH0p''@;'; put 'put ''LHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKEMpe3kuaXRlbXMucHVzaChDLmdldE1lbnVJdGVtRGVzY3JpcHRvcigpKX0pfX0se2tleToiZ2V0T3BlcmF0aW9uQmFzZWRPbkFyZ3VtZW50cyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7dmFyIGNlPXk7cmV0dXJuIGNlPT09dW5l''@;'; put 'put ''JiZDLmNvbW1hbmQua2V5IT09T2YmJkkuY29tbWFuZC5rZXkhPT1PZiYmai5jb21tYW5kLmtleSE9PU9mP2NlPWI1ZTpqLmNvbW1hbmQua2V5IT09T2YmJihDLmNvbW1hbmQua2V5PT09T2Z8fEkuY29tbWFuZC5rZXk9PT1PZikmJihjZT1LdyksY2V9fSx7a2V5OiJvbkFjdGlvbkJhclN1Ym1p''@;'; put 'put ''dCIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoImFjY2VwdCI9PT15KXt2YXIgQyxJPW51bGw9PT0oQz10aGlzLmdldFNlbGVjdGVkQ29sdW1uKCkpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnBoeXNpY2FsSW5kZXgsaj10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikuZ2V0''@;'; put 'put ''U3RhdGUoKSxjZT10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpLmdldFN0YXRlKCksX2U9dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikuZ2V0U3RhdGUoKSxSZT10aGlzLmdldE9wZXJhdGlvbkJhc2VkT25Bcmd1bWVudHModGhpcy5jb21w''@;'; put 'put ''b25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIpLmdldEFjdGl2ZU9wZXJhdGlvbklkKCksaixjZSxfZSk7dGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5ncm91cENoYW5nZXMoKTt2YXIgTmU9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldENvbHVtblN0YWNrUG9zaXRpb24oSSk7''@;'; put 'put ''LTE9PT1OZSYmKE5lPXZvaWQgMCksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLnJlbW92ZUNvbmRpdGlvbnMoSSksai5jb21tYW5kLmtleSE9PU9mJiYodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZENvbmRpdGlvbihJLGosUmUsTmUpLGNlLmNvbW1hbmQua2V5IT09T2YmJnRoaXMuY29u''@;'; put 'put ''ZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24oSSxjZSxSZSxOZSkpLF9lLmNvbW1hbmQua2V5IT09T2YmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24oSSxfZSxSZSxOZSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5mbHVzaCgpLHRoaXMuY29tcG9uZW50''@;'; put 'put ''cy5mb3JFYWNoKGZ1bmN0aW9uKEtlKXtyZXR1cm4gS2Uuc2F2ZVN0YXRlKEkpfSksdGhpcy5maWx0ZXJzUm93c01hcC5jbGVhcigpLHRoaXMuZmlsdGVyKCl9dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLmNsb3NlKCl9fSx7a2V5OiJvbkNvbXBvbmVu''@;'; put 'put ''dENoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLnVwZGF0ZURlcGVuZGVudENvbXBvbmVudHNWaXNpYmlsaXR5KCkseS5jb25zdHJ1Y3Rvcj09PXk1ZSYmIUMuaW5wdXRzQ291bnQmJnRoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9fSx7a2V5OiJvblNlbGVjdFVJQ2xvc2Vk''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9fSx7a2V5OiJzZXRMaXN0ZW5pbmdEcm9wZG93bk1lbnUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLnNldExpc3RlbmluZygp''@;'; put 'put ''fX0se2tleToidXBkYXRlRGVwZW5kZW50Q29tcG9uZW50c1Zpc2liaWxpdHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEk9dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbiIpLmdldFN0YXRlKCkuY29tbWFuZCxqPVt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlf''@;'; put 'put ''Y29uZGl0aW9uMiIpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9vcGVyYXRvcnMiKV07SS5zaG93T3BlcmF0b3JzP3RoaXMuc2hvd0NvbXBvbmVudHMuYXBwbHkodGhpcyxqKTp0aGlzLmhpZGVDb21wb25lbnRzLmFwcGx5KHRoaXMsail9fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVy''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oeSk7dGhpcy5lbmFibGVkJiZ0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uaGFzQ29uZGl0aW9ucyhJKT9QMChDLCJodEZpbHRlcnNBY3RpdmUiKTp1bChDLCJodEZpbHRlcnNBY3RpdmUiKX19LHtr''@;'; put 'put ''ZXk6Im9uVGFibGVDbGljayIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9RHYoeS50YXJnZXQsIlRIIik7aWYoQyl7dmFyIEk9dGhpcy5ob3QuZ2V0Q29vcmRzKEMpLmNvbCxqPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oSSk7dGhpcy5sYXN0U2VsZWN0ZWRDb2x1bW49e3Zpc3VhbEluZGV4''@;'; put 'put ''OkkscGh5c2ljYWxJbmRleDpqfX19fSx7a2V5OiJfY3JlYXRlRGF0YUZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbjtyZXR1cm4g''@;'; put 'put ''bmV3IGNJZShDLGZ1bmN0aW9uKEkpe3JldHVybiB5LmdldERhdGFNYXBBdENvbHVtbihJKX0pfX0se2tleToidXBkYXRlQ29tcG9uZW50cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM7aWYobnVsbCE9PShDPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKSYmdm9pZCAwIT09QyYmQy5lbmFibGVk''@;'; put 'put ''KXt2YXIgST15LmVkaXRlZENvbmRpdGlvblN0YWNrLGo9SS5jb25kaXRpb25zLGNlPUkuY29sdW1uLF9lPWouZmlsdGVyKGZ1bmN0aW9uKEtlKXtyZXR1cm4gS2UubmFtZT09PW1NfSksUmU9ai5maWx0ZXIoZnVuY3Rpb24oS2Upe3JldHVybiBLZS5uYW1lIT09bU19KTtpZihfZS5sZW5ndGg+''@;'; put 'put ''PTJ8fFJlLmxlbmd0aD49MyljMShEMihkSWV8fChkSWU9ZnVuY3Rpb24gU2Z0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWyJUaGUgZmlsdGVyIGNv''@;'; put 'put ''bmRpdGlvbnMgaGF2ZSBiZWVuIGFwcGxpZWQgcHJvcGVybHksIGJ1dCBjb3VsZG5cdTIwMTl0IGJlIGRpc3BsYXllZCB2aXN1YWxseS4gXG4gICAgICAgIFRoZSBvdmVyYWxsIGFtb3VudCBvZiBjb25kaXRpb25zIGV4Y2VlZCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gbWVudS4g''@;'; put 'put ''XG4gICAgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBkb2N1bWVudGF0aW9uLiJdLFsiVGhlIGZpbHRlciBjb25kaXRpb25zIGhhdmUgYmVlbiBhcHBsaWVkIHByb3Blcmx5LCBidXQgY291bGRuXHUyMDE5dCBiZSBkaXNwbGF5ZWQgdmlzdWFsbHkuXFx4MjBcbiAgICAgICAgVGhlIG92''@;'; put 'put ''ZXJhbGwgYW1vdW50IG9mIGNvbmRpdGlvbnMgZXhjZWVkIHRoZSBjYXBhYmlsaXR5IG9mIHRoZSBkcm9wZG93biBtZW51LlxceDIwXG4gICAgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBkb2N1bWVudGF0aW9uLiJdKSkpKTtlbHNle3ZhciBOZT10aGlzLmNvbmRpdGlvbkNvbGxlY3Rp''@;'; put 'put ''b24uZ2V0T3BlcmF0aW9uKGNlKTt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikudXBkYXRlU3RhdGUoUmVbMF0sY2UpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIikudXBkYXRlU3RhdGUoUmVbMV0sY2UpLHRoaXMuY29tcG9uZW50''@;'; put 'put ''cy5nZXQoImZpbHRlcl9vcGVyYXRvcnMiKS51cGRhdGVTdGF0ZShOZSxjZSksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikudXBkYXRlU3RhdGUoeSl9fX19LHtrZXk6ImdldEluZGV4ZXNPZkNvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9W107aWYoIXRo''@;'; put 'put ''aXMuZHJvcGRvd25NZW51UGx1Z2luKXJldHVybiB5O2Zvcih2YXIgQz10aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51LEk9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheShJKSxjZT0wO2NlPEk7Y2UrKylqW2NlXT1hcmd1bWVudHNbY2VdO3JldHVybiBHcihqLGZ1bmN0aW9uKF9lKXtH''@;'; put 'put ''cihDLm1lbnVJdGVtcyxmdW5jdGlvbihSZSxOZSl7UmUua2V5PT09X2UuZ2V0TWVudUl0ZW1EZXNjcmlwdG9yKCkua2V5JiZ5LnB1c2goTmUpfSl9KSx5fX0se2tleToiY2hhbmdlQ29tcG9uZW50c1Zpc2liaWxpdHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9IShhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTtpZih0aGlzLmRyb3Bkb3duTWVudVBsdWdpbil7Zm9yKHZhciBDPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luLm1lbnUsST1DLmhvdE1lbnUsaj1JLmdldFBsdWdpbigiaGlkZGVuUm93cyIpLGNlPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGgsX2U9bmV3IEFycmF5KGNlPjE/Y2UtMTowKSxSZT0xO1JlPGNlO1JlKyspX2VbUmUtMV09YXJndW1lbnRzW1JlXTt2YXIgTmU9dGhpcy5nZXRJbmRleGVzT2ZDb21wb25lbnRzLmFwcGx5KHRoaXMsX2UpO3k/ai5zaG93Um93cyhOZSk6ai5oaWRlUm93cyhOZSksSS5yZW5kZXIoKX19fSx7''@;'; put 'put ''a2V5OiJoaWRlQ29tcG9uZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTt0aGlzLmNoYW5nZUNvbXBvbmVudHNWaXNpYmlsaXR5LmFwcGx5KHRoaXMsWyExXS5jb25jYXQo''@;'; put 'put ''QykpfX0se2tleToic2hvd0NvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07dGhpcy5jaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eS5hcHBseSh0aGlzLFshMF0u''@;'; put 'put ''Y29uY2F0KEMpKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWQmJih0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbihDLEkpe251bGwhPT1DJiYoQy5kZXN0cm95KCkseS5jb21wb25lbnRzLnNldChJLG51bGwpKX0pLHRoaXMu''@;'; put 'put ''Y29uZGl0aW9uQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5kZXN0cm95KCksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpKSxmUihxdyhoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwo''@;'; put 'put ''dGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJmaWx0ZXJzIn19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDI1MH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bInBsdWdpbjpEcm9w''@;'; put 'put ''ZG93bk1lbnUiLCJwbHVnaW46SGlkZGVuUm93cyIsImNlbGwtdHlwZTpjaGVja2JveCJdfX1dKSxofShHcyk7ZnVuY3Rpb24gQUllKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3lt''@;'; put 'put ''Ym9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gdEcoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''O2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/QUllKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtWZnQoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxP''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6QUllKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBWZnQoZCxnLGgp''@;'; put 'put ''e3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciB5SWU9ImludGVybmFsLXVzZS1pbi1oYW5kc29udGFibGUiLGpmdD17bGljZW5zZUtleTp5SWUsdXNl''@;'; put 'put ''QXJyYXlBcml0aG1ldGljOiEwLHVzZUNvbHVtbkluZGV4OiExLHVzZVN0YXRzOiExLGV2YWx1YXRlTnVsbFRvWmVybzohMCxwcmVjaXNpb25FcHNpbG9uOjFlLTEzLHByZWNpc2lvblJvdW5kaW5nOjE0LHNtYXJ0Um91bmRpbmc6ITAsbGVhcFllYXIxOTAwOiEwLG51bGxEYXRlOnt5ZWFyOjE4''@;'; put 'put ''OTksbW9udGg6MTIsZGF5OjMxfSxudWxsWWVhcjozMCxkYXRlRm9ybWF0czpbIkREL01NL1lZWVkiLCJERC9NTS9ZWSJdLHRpbWVGb3JtYXRzOlsiaGg6bW0iLCJoaDptbTpzcy5zc3MiXSxtYXRjaFdob2xlQ2VsbDohMCx1c2VSZWd1bGFyRXhwcmVzc2lvbnM6ITEsdXNlV2lsZGNhcmRzOiEw''@;'; put 'put ''LGZ1bmN0aW9uQXJnU2VwYXJhdG9yOiIsIix0aG91c2FuZFNlcGFyYXRvcjoiIixkZWNpbWFsU2VwYXJhdG9yOiIuIixsYW5ndWFnZToiZW5HQiJ9O2Z1bmN0aW9uIHdJZShkKXt2YXIgZyxoO3JldHVybnttYXhDb2x1bW5zOmQubWF4Q29sdW1ucyxtYXhSb3dzOmQubWF4Um93cyxsYW5ndWFn''@;'; put 'put ''ZTpudWxsPT09KGc9ZFtmM10pfHx2b2lkIDA9PT1nfHxudWxsPT09KGg9Zy5sYW5ndWFnZSl8fHZvaWQgMD09PWg/dm9pZCAwOmgubGFuZ0NvZGV9fWZ1bmN0aW9uIGJJZShkKXtyZXR1cm4gT2JqZWN0LmtleXMoZCkucmVkdWNlKGZ1bmN0aW9uKGcsaCl7cmV0dXJuImh5cGVyZm9ybXVsYSIh''@;'; put 'put ''PT1oJiYoZ1toXT1kW2hdKSxnfSx7fSl9ZnVuY3Rpb24gVjVlKGQpe3JldHVybihWNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBtbmUoKXt2YXIgZD0iZW5naW5lX3JlbGF0aW9uc2hpcCIsZz1rcChmMyk7cmV0dXJuIGcuaGFzSXRlbShkKXx8''@;'; put 'put ''Zy5yZWdpc3RlcihkLG5ldyBNYXApLGcuZ2V0SXRlbShkKX1mdW5jdGlvbiBqNWUoKXt2YXIgZD0ic2hhcmVkX2VuZ2luZV91c2FnZSIsZz1rcChmMyk7cmV0dXJuIGcuaGFzSXRlbShkKXx8Zy5yZWdpc3RlcihkLG5ldyBNYXApLGcuZ2V0SXRlbShkKX1mdW5jdGlvbiBfSWUoZCl7dmFyIGcs''@;'; put 'put ''aD1tbmUoKSx2PTA9PT1oLnNpemU/W106QXJyYXkuZnJvbShudWxsIT09KGc9aC5nZXQoZCkpJiZ2b2lkIDAhPT1nP2c6W10pO3JldHVybiBuZXcgTWFwKHYubWFwKGZ1bmN0aW9uKHkpe3JldHVyblt5LmdldFBsdWdpbigiZm9ybXVsYXMiKS5zaGVldElkLHldfSkpfWZ1bmN0aW9uIENJZShk''@;'; put 'put ''LGcpe2lmKGQpe3ZhciBoPW1uZSgpLHY9aC5nZXQoZCkseT1qNWUoKSxDPXkuZ2V0KGQpO3YmJnYuaW5jbHVkZXMoZykmJih2LnNwbGljZSh2LmluZGV4T2YoZyksMSksMD09PXYubGVuZ3RoJiZoLmRlbGV0ZShkKSksQyYmQy5pbmNsdWRlcyhnLmd1aWQpJiYoQy5zcGxpY2UoQy5pbmRleE9m''@;'; put 'put ''KGcuZ3VpZCksMSksMD09PUMubGVuZ3RoJiYoeS5kZWxldGUoZCksZC5kZXN0cm95KCkpKX19ZnVuY3Rpb24gSmZ0KGQsZyl7cmV0dXJuKHUxKGcpfHwhZC5kb2VzU2hlZXRFeGlzdChnKSkmJihnPWQuYWRkU2hlZXQoZykpLGd9ZnVuY3Rpb24ga0llKGQpe3JldHVybiJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgZCYmIiciPT09ZC5jaGFyQXQoMCkmJiI9Ij09PWQuY2hhckF0KDEpfWZ1bmN0aW9uIFNJZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0''@;'; put 'put ''ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9uIE1JZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1h''@;'; put 'put ''cmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9TSWUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe3ZuZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0''@;'; put 'put ''eURlc2NyaXB0b3JzKGgpKTpTSWUoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIG5HKGQpe3JldHVybihuRz0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3Rv''@;'; put 'put ''dHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGhSKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHJodChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gbmh0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2go''@;'; put 'put ''Y2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8RUllKGQsZyl8fGZ1bmN0aW9uIHRodCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0''@;'; put 'put ''cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRUllKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBk''@;'; put 'put ''KXJldHVybiBaNWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQp''@;'; put 'put ''O2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIFo1ZShkLGcpfX1mdW5jdGlvbiBaNWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJh''@;'; put 'put ''eShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBpaHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB4SWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVu''@;'; put 'put ''Z3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiB2TSgpe3JldHVybiB2TT0idW5kZWZpbmVk''@;'; put 'put ''IiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9YWh0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSx2TS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYWh0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1YdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiB6NWUoZCxnKXtyZXR1''@;'; put 'put ''cm4oejVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gdWh0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bkcoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBn''@;'; put 'put ''KSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEFNKGQpfWZ1bmN0aW9uIEFNKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5j''@;'; put 'put ''ZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBYdihkKXtyZXR1cm4oWHY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7''@;'; put 'put ''cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiB2bmUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRb''@;'; put 'put ''Z109aCxkfWZ1bmN0aW9uIEc1ZShkLGcsaCl7KGZ1bmN0aW9uIGZodChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVu''@;'; put 'put ''Y3Rpb24gZFIoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBoaHQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShk''@;'; put 'put ''LFRJZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gcFIoZCxnKXtyZXR1cm4gZnVuY3Rpb24gZGh0KGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxUSWUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gVEllKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQpfXZhciBmMz0iZm9ybXVsYXMiO1ZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIiksVm8uZ2V0U2luZ2xldG9uKCku''@;'; put 'put ''cmVnaXN0ZXIoImFmdGVyTmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0QWRkZWQiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJTaGVldFJlbW92ZWQiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0''@;'; put 'put ''ZXJTaGVldFJlbmFtZWQiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIpO3ZhciBnUj1mdW5jdGlvbihnKXtyZXR1cm4iVW5kb1JlZG8udW5kbyI9PT1nfHwiVW5kb1JlZG8ucmVkbyI9PT1nfHwiYXV0byI9PT1nfSx5TT1uZXcgV2Vha01h''@;'; put 'put ''cCxXNWU9bmV3IFdlYWtNYXAsckc9bmV3IFdlYWtNYXAsZ2h0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBsaHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg''@;'; put 'put ''ZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmejVlKGQs''@;'; put 'put ''Zyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gc2h0KGQpe3ZhciBnPWZ1bmN0aW9uIGNodCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSly''@;'; put 'put ''ZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVh2KGQpO2lmKGcpe3ZhciBDPVh2''@;'; put 'put ''KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB1aHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtpaHQodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gRzVlKEFNKHY9Zy5jYWxsLmFwcGx5KGcsW3RoaXNdLmNvbmNhdChDKSkpLHlNLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLEc1ZShBTSh2KSxXNWUse3dyaXRhYmxlOiEwLHZhbHVlOiExfSksRzVl''@;'; put 'put ''KEFNKHYpLHJHLHt3cml0YWJsZTohMCx2YWx1ZTpbWyJ2YWx1ZXNVcGRhdGVkIixmdW5jdGlvbigpe3ZhciBqO3JldHVybihqPXYpLm9uRW5naW5lVmFsdWVzVXBkYXRlZC5hcHBseShqLGFyZ3VtZW50cyl9XSxbIm5hbWVkRXhwcmVzc2lvbkFkZGVkIixmdW5jdGlvbigpe3ZhciBqO3JldHVy''@;'; put 'put ''bihqPXYpLm9uRW5naW5lTmFtZWRFeHByZXNzaW9uc0FkZGVkLmFwcGx5KGosYXJndW1lbnRzKX1dLFsibmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsZnVuY3Rpb24oKXt2YXIgajtyZXR1cm4oaj12KS5vbkVuZ2luZU5hbWVkRXhwcmVzc2lvbnNSZW1vdmVkLmFwcGx5KGosYXJndW1lbnRzKX1d''@;'; put 'put ''LFsic2hlZXRBZGRlZCIsZnVuY3Rpb24oKXt2YXIgajtyZXR1cm4oaj12KS5vbkVuZ2luZVNoZWV0QWRkZWQuYXBwbHkoaixhcmd1bWVudHMpfV0sWyJzaGVldFJlbmFtZWQiLGZ1bmN0aW9uKCl7dmFyIGo7cmV0dXJuKGo9dikub25FbmdpbmVTaGVldFJlbmFtZWQuYXBwbHkoaixhcmd1bWVu''@;'; put 'put ''dHMpfV0sWyJzaGVldFJlbW92ZWQiLGZ1bmN0aW9uKCl7dmFyIGo7cmV0dXJuKGo9dikub25FbmdpbmVTaGVldFJlbW92ZWQuYXBwbHkoaixhcmd1bWVudHMpfV1dfSksdm5lKEFNKHYpLCJzdGF0aWNSZWdpc3RlciIsa3AoImZvcm11bGFzIikpLHZuZShBTSh2KSwiZW5naW5lIixudWxsKSx2''@;'; put 'put ''bmUoQU0odiksInNoZWV0TmFtZSIsbnVsbCksdn1yZXR1cm4gZnVuY3Rpb24gb2h0KGQsZyxoKXtnJiZ4SWUoZC5wcm90b3R5cGUsZyksaCYmeEllKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6InNoZWV0SWQiLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpcy5zaGVldE5hbWU/bnVsbDp0aGlzLmVuZ2luZS5nZXRTaGVldElkKHRoaXMuc2hlZXROYW1lKX19LHtrZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbZjNdfX0se2tleToiZW5h''@;'; put 'put ''YmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LEM9dGhpcztpZighdGhpcy5lbmFibGVkKXtpZih0aGlzLmVuZ2luZT1udWxsIT09KHk9ZnVuY3Rpb24gR2Z0KGQpe3ZhciB5LGc9ZC5nZXRTZXR0aW5ncygpLGg9Z1tmM10sdj1udWxsPT1oP3ZvaWQgMDpoLmVuZ2luZTtpZighMD09''@;'; put 'put ''PWh8fHUxKHYpKXJldHVybiBudWxsO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB2Lmh5cGVyZm9ybXVsYXx8ImZ1bmN0aW9uIj09dHlwZW9mIHYpcmV0dXJuIGZ1bmN0aW9uIFdmdChkLGcsaCl7dmFyIHY9Z1tmM10seT1mdW5jdGlvbiBaZnQoZCl7dmFyIGcsaD1kW2YzXSx2PWJJZShudWxsIT1o''@;'; put 'put ''JiZudWxsIT09KGc9aC5lbmdpbmUpJiZ2b2lkIDAhPT1nJiZnLmh5cGVyZm9ybXVsYT9oLmVuZ2luZTp7fSkseT13SWUoZCk7cmV0dXJuIHRHKHRHKHRHKHt9LGpmdCksdikseSl9KGcpLEM9bW5lKCksST1qNWUoKTsoZnVuY3Rpb24gWWZ0KGQsZyl7ZyYmZy5mb3JFYWNoKGZ1bmN0aW9uKGgp''@;'; put 'put ''e3ZhciB2PWgubmFtZSx5PWgucGx1Z2luLEM9aC50cmFuc2xhdGlvbnM7dHJ5e2QucmVnaXN0ZXJGdW5jdGlvbih2LHksQyl9Y2F0Y2goSSl7YzEoSS5tZXNzYWdlKX19KX0pKGQsdi5mdW5jdGlvbnMpLGZ1bmN0aW9uIFVmdChkLGcpe2lmKGcpe3ZhciBoPWcubGFuZ0NvZGU7dHJ5e2QucmVn''@;'; put 'put ''aXN0ZXJMYW5ndWFnZShoLGcpfWNhdGNoKHYpe2MxKHYubWVzc2FnZSl9fX0oZCx2Lmxhbmd1YWdlKTt2YXIgaj1kLmJ1aWxkRW1wdHkoeSk7cmV0dXJuIEMuc2V0KGosW2hdKSxJLnNldChqLFtoLmd1aWRdKSxmdW5jdGlvbiBRZnQoZCxnKXtnJiYoZC5zdXNwZW5kRXZhbHVhdGlvbigpLGcu''@;'; put 'put ''Zm9yRWFjaChmdW5jdGlvbihoKXt2YXIgdj1oLm5hbWUseT1oLmV4cHJlc3Npb24sQz1oLnNjb3BlLEk9aC5vcHRpb25zO3RyeXtkLmFkZE5hbWVkRXhwcmVzc2lvbih2LHksQyxJKX1jYXRjaChqKXtjMShqLm1lc3NhZ2UpfX0pLGQucmVzdW1lRXZhbHVhdGlvbigpKX0oaix2Lm5hbWVkRXhw''@;'; put 'put ''cmVzc2lvbnMpLGoub24oInNoZWV0QWRkZWQiLGZ1bmN0aW9uKCl7ai5yZWJ1aWxkQW5kUmVjYWxjdWxhdGUoKX0pLGoub24oInNoZWV0UmVtb3ZlZCIsZnVuY3Rpb24oKXtqLnJlYnVpbGRBbmRSZWNhbGN1bGF0ZSgpfSksan0obnVsbCE9PSh5PXYuaHlwZXJmb3JtdWxhKSYmdm9pZCAwIT09''@;'; put 'put ''eT95OnYsZyxkKTtpZigib2JqZWN0Ij09PVY1ZSh2KSYmdTEodi5oeXBlcmZvcm11bGEpKXt2YXIgQz1tbmUoKSxJPWo1ZSgpLmdldCh2KTtyZXR1cm4gQy5oYXModil8fEMuc2V0KHYsW10pLEMuZ2V0KHYpLnB1c2goZCksSSYmSS5wdXNoKGQuZ3VpZCksdi5nZXRDb25maWcoKS5saWNlbnNl''@;'; put 'put ''S2V5fHx2LnVwZGF0ZUNvbmZpZyh7bGljZW5zZUtleTp5SWV9KSx2fXJldHVybiBudWxsfSh0aGlzLmhvdCkpJiZ2b2lkIDAhPT15P3k6dGhpcy5lbmdpbmUsIXRoaXMuZW5naW5lKXJldHVybiB2b2lkIGMxKCJNaXNzaW5nIHRoZSByZXF1aXJlZCBgZW5naW5lYCBrZXkgaW4gdGhlIEZvcm11''@;'; put 'put ''bGFzIHNldHRpbmdzLiBQbGVhc2UgZmlsbCBpdCB3aXRoIGVpdGhlciBhbiBlbmdpbmUgY2xhc3Mgb3IgYW4gZW5naW5lIGluc3RhbmNlLiIpO2lmKG51bGwhPT10aGlzLnNoZWV0TmFtZSYmIXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7dmFyIEk9dGhpcy5h''@;'; put 'put ''ZGRTaGVldCh0aGlzLnNoZWV0TmFtZSx0aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKSk7ITEhPT1JJiYodGhpcy5zaGVldE5hbWU9SSl9dGhpcy5hZGRIb29rKCJiZWZvcmVMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkJlZm9yZUxvYWREYXRhLmFwcGx5KEMsYXJndW1lbnRz''@;'; put 'put ''KX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyTG9hZERhdGEuYXBwbHkoQyxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlEYXRhIixmdW5jdGlvbigpe3JldHVybiBDLm9uTW9kaWZ5RGF0YS5hcHBseShDLGFyZ3VtZW50''@;'; put 'put ''cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVNvdXJjZURhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25Nb2RpZnlTb3VyY2VEYXRhLmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmFsaWRhdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25CZWZvcmVWYWxpZGF0ZS5h''@;'; put 'put ''cHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Q2VsbCIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyU2V0RGF0YUF0Q2VsbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyU2V0RGF0YUF0Q2VsbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFk''@;'; put 'put ''ZEhvb2soImJlZm9yZUNyZWF0ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkJlZm9yZUNyZWF0ZVJvdy5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkJlZm9yZUNyZWF0ZUNvbC5hcHBseShDLGFyZ3Vt''@;'; put 'put ''ZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbigpe3JldHVybiBDLm9uQWZ0ZXJDcmVhdGVSb3cuYXBwbHkoQyxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyQ3JlYXRlQ29sLmFw''@;'; put 'put ''cGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiBDLm9uQmVmb3JlUmVtb3ZlUm93LmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlQ29sIixmdW5jdGlvbigpe3JldHVybiBDLm9uQmVm''@;'; put 'put ''b3JlUmVtb3ZlQ29sLmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25BZnRlclJlbW92ZVJvdy5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBDLm9uQWZ0ZXJSZW1vdmVDb2wuYXBwbHkoQyxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvIixmdW5jdGlvbihqKXsicm93X21vdmUiIT09KG51bGw9PWo/dm9pZCAwOmouYWN0aW9uVHlwZSkmJkMuZW5naW5lLnVuZG8oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3Jl''@;'; put 'put ''UmVkbyIsZnVuY3Rpb24oail7InJvd19tb3ZlIiE9PShudWxsPT1qP3ZvaWQgMDpqLmFjdGlvblR5cGUpJiZDLmVuZ2luZS5yZWRvKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyRGV0YWNoQ2hpbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25BZnRlckRldGFjaENoaWxkLmFwcGx5KEMsYXJndW1l''@;'; put 'put ''bnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQXV0b2ZpbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25CZWZvcmVBdXRvZmlsbC5hcHBseShDLGFyZ3VtZW50cyl9KSxwUih0aGlzLHJHKS5mb3JFYWNoKGZ1bmN0aW9uKGope3ZhciBjZT1oUihqLDIpO3JldHVybiBDLmVuZ2luZS5vbihjZVsw''@;'; put 'put ''XSxjZVsxXSl9KSx2TShYdihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7cFIodGhpcyxyRykuZm9yRWFjaChmdW5jdGlvbihDKXt2YXIgST1oUihDLDIpO3JldHVy''@;'; put 'put ''biB5LmVuZ2luZS5vZmYoSVswXSxJWzFdKX0pLENJZSh0aGlzLmVuZ2luZSx0aGlzLmhvdCksdGhpcy5lbmdpbmU9bnVsbCx2TShYdihoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3Ro''@;'; put 'put ''aXMuZW5naW5lLnVwZGF0ZUNvbmZpZyhmdW5jdGlvbiB6ZnQoZCl7dmFyIGcsaD1kW2YzXSx2PWJJZShudWxsIT1oJiZudWxsIT09KGc9aC5lbmdpbmUpJiZ2b2lkIDAhPT1nJiZnLmh5cGVyZm9ybXVsYT9oLmVuZ2luZTp7fSkseT13SWUoZCk7cmV0dXJuIHRHKHRHKHt9LHYpLHkpfSh0aGlz''@;'; put 'put ''LmhvdC5nZXRTZXR0aW5ncygpKSk7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtmM107aWYoRW8oQykmJkVvKEMuc2hlZXROYW1lKSYmQy5zaGVldE5hbWUhPT10aGlzLnNoZWV0TmFtZSYmdGhpcy5zd2l0Y2hTaGVldChDLnNoZWV0TmFtZSksIXkuZGF0YSYmbnVsbD09PXRoaXMuc2hl''@;'; put 'put ''ZXROYW1lKXt2YXIgST10aGlzLmhvdC5nZXRTZXR0aW5ncygpW2YzXS5zaGVldE5hbWU7SSYmdGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QoSSk/dGhpcy5zd2l0Y2hTaGVldCh0aGlzLnNoZWV0TmFtZSk6dGhpcy5zaGVldE5hbWU9dGhpcy5hZGRTaGVldChudWxsIT1JP0k6dm9pZCAwLHRo''@;'; put 'put ''aXMuaG90LmdldFNvdXJjZURhdGFBcnJheSgpKX12TShYdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzLHkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3BSKHRoaXMsckcpLmZvckVhY2goZnVuY3Rpb24oQyl7dmFyIEks''@;'; put 'put ''aj1oUihDLDIpO3JldHVybiBudWxsPT09KEk9eS5lbmdpbmUpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLm9mZihqWzBdLGpbMV0pfSksZFIodGhpcyxyRyxudWxsKSxDSWUodGhpcy5lbmdpbmUsdGhpcy5ob3QpLHRoaXMuZW5naW5lPW51bGwsdk0oWHYoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0''@;'; put 'put ''aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0UGh5c2ljYWxJbmRleFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqLGNlKXtyZXR1cm4hY2UmJnk+PUk/aisoeS1JKTpDfX0se2tleToidG9QaHlzaWNhbFJvd1Bvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3JldHVybiB0aGlzLmdldFBoeXNpY2FsSW5kZXhQb3NpdGlvbih5LHRoaXMuaG90LnRvUGh5c2ljYWxSb3coeSksdGhpcy5ob3QuY291bnRSb3dzKCksdGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCksQyl9''@;'; put 'put ''fSx7a2V5OiJ0b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIHRoaXMuZ2V0UGh5c2ljYWxJbmRleFBvc2l0aW9uKHksdGhpcy5ob3QudG9Q''@;'; put 'put ''aHlzaWNhbENvbHVtbih5KSx0aGlzLmhvdC5jb3VudENvbHMoKSx0aGlzLmhvdC5jb3VudFNvdXJjZUNvbHMoKSxDKX19LHtrZXk6ImFkZFNoZWV0Iix2YWx1ZTpmdW5jdGlvbih5LEMpe2lmKEVvKEMpJiYhVGtlKEMpKXJldHVybiBjMSgiVGhlIHByb3ZpZGVkIGRhdGEgc2hvdWxkIGJlIGFu''@;'; put 'put ''IGFycmF5IG9mIGFycmF5cy4iKSwhMTtpZihudWxsIT15JiZ0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh5KSlyZXR1cm4gYzEoIlNoZWV0IHdpdGggdGhlIHByb3ZpZGVkIG5hbWUgYWxyZWFkeSBleGlzdHMuIiksITE7dHJ5e3ZhciBJPXRoaXMuZW5naW5lLmFkZFNoZWV0KG51bGwhPXk/''@;'; put 'put ''eTp2b2lkIDApO3JldHVybiBDJiZ0aGlzLmVuZ2luZS5zZXRTaGVldENvbnRlbnQodGhpcy5lbmdpbmUuZ2V0U2hlZXRJZChJKSxDKSxJfWNhdGNoKGope3JldHVybiBjMShqLm1lc3NhZ2UpLCExfX19LHtrZXk6InN3aXRjaFNoZWV0Iix2YWx1ZTpmdW5jdGlvbih5KXtpZih0aGlzLmVuZ2lu''@;'; put 'put ''ZS5kb2VzU2hlZXRFeGlzdCh5KSl7dGhpcy5zaGVldE5hbWU9eTt2YXIgQz10aGlzLmVuZ2luZS5nZXRTaGVldFNlcmlhbGl6ZWQodGhpcy5zaGVldElkKTtDLmxlbmd0aD4wJiZ0aGlzLmhvdC5sb2FkRGF0YShDLCIiLmNvbmNhdCh0ZChmMyksIi5zd2l0Y2hTaGVldCIpKX1lbHNlIFIzZSgi''@;'; put 'put ''VGhlIHNoZWV0IG5hbWVkIGAiLmNvbmNhdCh5LCJgIGRvZXMgbm90IGV4aXN0LCBzd2l0Y2ggYWJvcnRlZC4iKSl9fSx7a2V5OiJnZXRDZWxsVHlwZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNb''@;'; put 'put ''Ml06dGhpcy5zaGVldElkLGo9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSxjZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKEMpO3JldHVybiBudWxsIT09aiYmbnVsbCE9PWNlP3RoaXMuZW5naW5lLmdldENlbGxUeXBlKHtzaGVldDpJLHJvdzpqLGNvbDpjZX0pOiJFTVBUWSJ9fSx7a2V5''@;'; put 'put ''OiJpc0Zvcm11bGFDZWxsVHlwZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5zaGVldElkLGo9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSxjZT10aGlzLmhvdC50b1BoeXNpY2Fs''@;'; put 'put ''Q29sdW1uKEMpO3JldHVybiBudWxsIT09aiYmbnVsbCE9PWNlJiZ0aGlzLmVuZ2luZS5kb2VzQ2VsbEhhdmVGb3JtdWxhKHtzaGVldDpJLHJvdzpqLGNvbDpjZX0pfX0se2tleToicmVuZGVyRGVwZW5kZW50U2hlZXRzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxqPW5ldyBTZXQ7eS5mb3JFYWNoKGZ1bmN0aW9uKGNlKXt2YXIgX2UsUmU9bnVsbD09Y2V8fG51bGw9PT0oX2U9Y2UuYWRkcmVzcyl8fHZvaWQgMD09PV9lP3ZvaWQgMDpfZS5zaGVldDt2b2lkIDAhPT1SZSYm''@;'; put 'put ''KGouaGFzKFJlKXx8ai5hZGQoUmUpKX0pLF9JZSh0aGlzLmVuZ2luZSkuZm9yRWFjaChmdW5jdGlvbihjZSxfZSl7dmFyIFJlOyhJfHxfZSE9PUMuc2hlZXRJZCkmJmouaGFzKF9lKSYmKGNlLnJlbmRlcigpLG51bGw9PT0oUmU9Y2Uudmlldyl8fHZvaWQgMD09PVJlfHxSZS5hZGp1c3RFbGVt''@;'; put 'put ''ZW50c1NpemUoKSl9KX19LHtrZXk6InZhbGlkYXRlRGVwZW5kZW50Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saj1mdW5jdGlvbihSZSl7dmFyIE5lLEtlPW51bGwh''@;'; put 'put ''PT0oTmU9bnVsbD09UmU/dm9pZCAwOlJlLmFkZHJlc3MpJiZ2b2lkIDAhPT1OZT9OZTp7fSxodD1LZS5yb3csQnQ9S2UuY29sLCR0PUtlLnNoZWV0O3JldHVybiBFbygkdCk/IiIuY29uY2F0KCR0LCI6IikuY29uY2F0KGh0LCJ4IikuY29uY2F0KEJ0KToiIn0sY2U9bmV3IFNldChJLm1hcChm''@;'; put 'put ''dW5jdGlvbihfZSl7cmV0dXJuIGooX2UpfSkpO3kuZm9yRWFjaChmdW5jdGlvbihfZSl7dmFyIFJlLE5lLEtlPW51bGwhPT0oUmU9X2UuYWRkcmVzcykmJnZvaWQgMCE9PVJlP1JlOnt9LGh0PUtlLnJvdyxCdD1LZS5jb2wsJHQ9RW8oaHQpP0MuaG90LnRvVmlzdWFsUm93KGh0KTpudWxsLGhu''@;'; put 'put ''PUVvKEJ0KT9DLmhvdC50b1Zpc3VhbENvbHVtbihCdCk6bnVsbDtpZihudWxsIT09JHQmJm51bGwhPT1obil7dmFyIERuPW51bGw9PV9lfHxudWxsPT09KE5lPV9lLmFkZHJlc3MpfHx2b2lkIDA9PT1OZT92b2lkIDA6TmUuc2hlZXQsaXI9aihfZSk7aWYodm9pZCAwIT09RG4mJiFjZS5oYXMo''@;'; put 'put ''aXIpKXt2YXIgcHI9X0llKEMuZW5naW5lKS5nZXQoRG4pO2lmKCFwcilyZXR1cm47cHIudmFsaWRhdGVDZWxsKHByLmdldERhdGFBdENlbGwoJHQsaG4pLHByLmdldENlbGxNZXRhKCR0LGhuKSxmdW5jdGlvbigpe30pfX19KX19LHtrZXk6InN5bmNDaGFuZ2VXaXRoRW5naW5lIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5LEMsSSl7dmFyIGo9e3Jvdzp0aGlzLnRvUGh5c2ljYWxSb3dQb3NpdGlvbih5KSxjb2w6dGhpcy50b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24oQyksc2hlZXQ6dGhpcy5zaGVldElkfTtpZih0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhqKSlyZXR1''@;'; put 'put ''cm4gdGhpcy5lbmdpbmUuc2V0Q2VsbENvbnRlbnRzKGosSSk7YzEoIk5vdCBwb3NzaWJsZSB0byBzZXQgY2VsbCBkYXRhIGF0ICIuY29uY2F0KEpTT04uc3RyaW5naWZ5KGopKSl9fSx7a2V5OiJvbkJlZm9yZVZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIGo9dGhpcy5ob3Qu''@;'; put 'put ''cHJvcFRvQ29sKEkpO2lmKHRoaXMuaXNGb3JtdWxhQ2VsbFR5cGUoQyxqKSl7dmFyIGNlPXtyb3c6dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhDKSxjb2w6dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihqKSxzaGVldDp0aGlzLnNoZWV0SWR9LF9lPXRoaXMuZW5naW5lLmdldENlbGxWYWx1ZShj''@;'; put 'put ''ZSk7cmV0dXJuIm9iamVjdCI9PT1uRyhfZSkmJm51bGwhPT1fZT9fZS52YWx1ZTpfZX1yZXR1cm4geX19LHtrZXk6Im9uQmVmb3JlQXV0b2ZpbGwiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgaj10aGlzLGNlPWZ1bmN0aW9uKEtlKXtyZXR1cm4gTUllKE1JZSh7fSxLZSkse30se3NoZWV0''@;'; put 'put ''Omouc2hlZXRJZH0pfSxfZT17c3RhcnQ6Y2UoQy5nZXRUb3BTdGFydENvcm5lcigpKSxlbmQ6Y2UoQy5nZXRCb3R0b21FbmRDb3JuZXIoKSl9LFJlPXtzdGFydDpjZShJLmdldFRvcFN0YXJ0Q29ybmVyKCkpLGVuZDpjZShJLmdldEJvdHRvbUVuZENvcm5lcigpKX07cmV0dXJuITEhPT10aGlz''@;'; put 'put ''LmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhSZSkmJnRoaXMuZW5naW5lLmdldEZpbGxSYW5nZURhdGEoX2UsUmUpfX0se2tleToib25CZWZvcmVMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1syXT9hcmd1bWVudHNbMl06IiI7SS5pbmNsdWRlcyh0ZChmMykpfHxkUih0aGlzLFc1ZSx1MSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRhdGEpKX19LHtrZXk6Im9uQWZ0ZXJMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQg''@;'; put 'put ''MCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiI7aWYoIUkuaW5jbHVkZXModGQoZjMpKSlpZih0aGlzLnNoZWV0TmFtZT1KZnQodGhpcy5lbmdpbmUsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtmM10uc2hlZXROYW1lKSxwUih0aGlzLFc1ZSkpdGhpcy5zd2l0Y2hTaGVldCh0aGlzLnNo''@;'; put 'put ''ZWV0TmFtZSk7ZWxzZXt2YXIgaj10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKTtpZih0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlcGxhY2VTaGVldENvbnRlbnQodGhpcy5zaGVldElkLGopKXtkUih0aGlzLHlNLCEwKTt2YXIgY2U9dGhpcy5lbmdpbmUuc2V0U2hlZXRDb250ZW50''@;'; put 'put ''KHRoaXMuc2hlZXRJZCx0aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoY2UpLGRSKHRoaXMseU0sITEpfX19fSx7a2V5OiJvbk1vZGlmeURhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope2lmKCJnZXQiPT09aiYmIXBSKHRoaXMseU0p''@;'; put 'put ''JiZudWxsIT09dGhpcy5zaGVldE5hbWUmJnRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7dmFyIGNlPXRoaXMuaG90LnRvVmlzdWFsUm93KHkpO2lmKCF0aGlzLmlzRm9ybXVsYUNlbGxUeXBlKGNlLEMpJiYiQVJSQVkiIT09dGhpcy5nZXRDZWxsVHlwZShjZSxD''@;'; put 'put ''KSlyZXR1cm4gdm9pZChrSWUoSS52YWx1ZSkmJihJLnZhbHVlPWZ1bmN0aW9uIFhmdChkKXtyZXR1cm4ga0llKGQpP2Quc3Vic3RyKDEpOmR9KEkudmFsdWUpKSk7dmFyIE5lPXtyb3c6eSxjb2w6dGhpcy50b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24oQyksc2hlZXQ6dGhpcy5zaGVldElkfSxL''@;'; put 'put ''ZT10aGlzLmVuZ2luZS5nZXRDZWxsVmFsdWUoTmUpLGh0PSJvYmplY3QiPT09bkcoS2UpJiZudWxsIT09S2U/S2UudmFsdWU6S2U7SS52YWx1ZT1odH19fSx7a2V5OiJvbk1vZGlmeVNvdXJjZURhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope2lmKCJnZXQiPT09aiYmIXBSKHRoaXMseU0p''@;'; put 'put ''JiZudWxsIT09dGhpcy5zaGVldE5hbWUmJnRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7dmFyIGNlPXRoaXMuaG90LnRvVmlzdWFsUm93KHkpLF9lPXRoaXMuaG90LnByb3BUb0NvbChDKTtpZighdGhpcy5pc0Zvcm11bGFDZWxsVHlwZShjZSxfZSkmJiJBUlJB''@;'; put 'put ''WSIhPT10aGlzLmdldENlbGxUeXBlKGNlLF9lKSlyZXR1cm47dmFyIEtlPXRoaXMuZW5naW5lLmdldFNoZWV0RGltZW5zaW9ucyh0aGlzLmVuZ2luZS5nZXRTaGVldElkKHRoaXMuc2hlZXROYW1lKSk7aWYoMCE9PUtlLndpZHRofHwwIT09S2UuaGVpZ2h0KXt2YXIgaHQ9e3Jvdzp5LGNvbDp0''@;'; put 'put ''aGlzLnRvUGh5c2ljYWxDb2x1bW5Qb3NpdGlvbihfZSksc2hlZXQ6dGhpcy5zaGVldElkfTtJLnZhbHVlPXRoaXMuZW5naW5lLmdldENlbGxTZXJpYWxpemVkKGh0KX19fX0se2tleToib25BZnRlclNldERhdGFBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcztpZighZ1Io''@;'; put 'put ''Qykpe3ZhciBqPVtdLGNlPVtdLF9lPXRoaXMuZW5naW5lLmJhdGNoKGZ1bmN0aW9uKCl7eS5mb3JFYWNoKGZ1bmN0aW9uKFJlKXt2YXIgTmU9aFIoUmUsNCksS2U9TmVbMF0sQnQ9TmVbM10sJHQ9SS5ob3QucHJvcFRvQ29sKE5lWzFdKSxobj1JLmhvdC50b1BoeXNpY2FsUm93KEtlKSxEbj1J''@;'; put 'put ''LmhvdC50b1BoeXNpY2FsQ29sdW1uKCR0KSxpcj17cm93OmhuLGNvbDpEbixzaGVldDpJLnNoZWV0SWR9O251bGwhPT1obiYmbnVsbCE9PURuP0kuc3luY0NoYW5nZVdpdGhFbmdpbmUoS2UsJHQsQnQpOmoucHVzaChbS2UsJHQsQnRdKSxjZS5wdXNoKHthZGRyZXNzOmlyfSl9KX0pO2oubGVu''@;'; put 'put ''Z3RoJiZ0aGlzLmhvdC5hZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIFJlPUkuZW5naW5lLmJhdGNoKGZ1bmN0aW9uKCl7ai5mb3JFYWNoKGZ1bmN0aW9uKE5lKXt2YXIgS2U9aFIoTmUsMyk7SS5zeW5jQ2hhbmdlV2l0aEVuZ2luZShLZVswXSxLZVsxXSxLZVsyXSl9''@;'; put 'put ''KX0pO0kucmVuZGVyRGVwZW5kZW50U2hlZXRzKFJlLCEwKX0pLHRoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKF9lKSx0aGlzLnZhbGlkYXRlRGVwZW5kZW50Q2VsbHMoX2UsY2UpfX19LHtrZXk6Im9uQWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJ''@;'; put 'put ''PXRoaXM7aWYoIWdSKEMpKXt2YXIgaj1bXSxjZT1bXTt5LmZvckVhY2goZnVuY3Rpb24oX2Upe3ZhciBSZT1oUihfZSw0KSxOZT1SZVswXSxodD1SZVszXSxCdD1JLmhvdC5wcm9wVG9Db2woUmVbMV0pO2lmKGc0KEJ0KSl7dmFyICR0PXtyb3c6TmUsY29sOkkudG9QaHlzaWNhbENvbHVtblBv''@;'; put 'put ''c2l0aW9uKEJ0KSxzaGVldDpJLnNoZWV0SWR9O2lmKCFJLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cygkdCkpcmV0dXJuIHZvaWQgYzEoIk5vdCBwb3NzaWJsZSB0byBzZXQgc291cmNlIGNlbGwgZGF0YSBhdCAiLmNvbmNhdChKU09OLnN0cmluZ2lmeSgkdCkpKTtjZS5w''@;'; put 'put ''dXNoKHthZGRyZXNzOiR0fSksai5wdXNoLmFwcGx5KGosZnVuY3Rpb24gS2Z0KGQpe3JldHVybiBmdW5jdGlvbiBlaHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gWjVlKGQpfShkKXx8ZnVuY3Rpb24gcWZ0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1k''@;'; put 'put ''W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fEVJZShkKXx8ZnVuY3Rpb24gJGZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBv''@;'; put 'put ''cmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KEkuZW5naW5lLnNldENlbGxDb250ZW50cygkdCxodCkpKX19KSx0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhqKSx0aGlzLnZhbGlkYXRl''@;'; put 'put ''RGVwZW5kZW50Q2VsbHMoaixjZSl9fX0se2tleToib25CZWZvcmVDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYobnVsbD09PXRoaXMuc2hlZXRJZHx8IXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKXx8IXRoaXMuZW5naW5lLmlzSXRQb3NzaWJsZVRv''@;'; put 'put ''QWRkUm93cyh0aGlzLnNoZWV0SWQsW3RoaXMudG9QaHlzaWNhbFJvd1Bvc2l0aW9uKHkpLENdKSlyZXR1cm4hMX19LHtrZXk6Im9uQmVmb3JlQ3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbih5LEMpe2lmKG51bGw9PT10aGlzLnNoZWV0SWR8fCF0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh0''@;'; put 'put ''aGlzLnNoZWV0TmFtZSl8fCF0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb0FkZENvbHVtbnModGhpcy5zaGVldElkLFt0aGlzLnRvUGh5c2ljYWxDb2x1bW5Qb3NpdGlvbih5KSxDXSkpcmV0dXJuITF9fSx7a2V5OiJvbkJlZm9yZVJlbW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3Zh''@;'; put 'put ''ciBqPXRoaXM7cmV0dXJuITEhPT1JLmV2ZXJ5KGZ1bmN0aW9uKF9lKXtyZXR1cm4gai5lbmdpbmUuaXNJdFBvc3NpYmxlVG9SZW1vdmVSb3dzKGouc2hlZXRJZCxbX2UsMV0pfSkmJnZvaWQgMH19LHtrZXk6Im9uQmVmb3JlUmVtb3ZlQ29sIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIGo9''@;'; put 'put ''dGhpcztyZXR1cm4hMSE9PUkuZXZlcnkoZnVuY3Rpb24oX2Upe3JldHVybiBqLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlbW92ZUNvbHVtbnMoai5zaGVldElkLFtfZSwxXSl9KSYmdm9pZCAwfX0se2tleToib25BZnRlckNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe2lmKCFnUihJ''@;'; put 'put ''KSl7dmFyIGo9dGhpcy5lbmdpbmUuYWRkUm93cyh0aGlzLnNoZWV0SWQsW3RoaXMudG9QaHlzaWNhbFJvd1Bvc2l0aW9uKHkpLENdKTt0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhqKX19fSx7a2V5OiJvbkFmdGVyQ3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7aWYoIWdSKEkp''@;'; put 'put ''KXt2YXIgaj10aGlzLmVuZ2luZS5hZGRDb2x1bW5zKHRoaXMuc2hlZXRJZCxbdGhpcy50b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24oeSksQ10pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGopfX19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope3Zh''@;'; put 'put ''ciBjZT10aGlzO2lmKCFnUihqKSl7dmFyIF9lPUkuc29ydCgpLnJldmVyc2UoKSxSZT10aGlzLmVuZ2luZS5iYXRjaChmdW5jdGlvbigpe19lLmZvckVhY2goZnVuY3Rpb24oTmUpe2NlLmVuZ2luZS5yZW1vdmVSb3dzKGNlLnNoZWV0SWQsW05lLDFdKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRl''@;'; put 'put ''bnRTaGVldHMoUmUpfX19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVDb2wiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope3ZhciBjZT10aGlzO2lmKCFnUihqKSl7dmFyIF9lPUkuc29ydCgpLnJldmVyc2UoKSxSZT10aGlzLmVuZ2luZS5iYXRjaChmdW5jdGlvbigpe19lLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''TmUpe2NlLmVuZ2luZS5yZW1vdmVDb2x1bW5zKGNlLnNoZWV0SWQsW05lLDFdKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoUmUpfX19LHtrZXk6Im9uQWZ0ZXJEZXRhY2hDaGlsZCIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqLGNlPXRoaXM7ZFIodGhpcyx5TSwhMCk7dmFy''@;'; put 'put ''IF9lPXRoaXMuaG90LmdldFNvdXJjZURhdGFBcnJheShJLDAsSSsoKG51bGw9PT0oaj1DLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT1qP3ZvaWQgMDpqLmxlbmd0aCl8fDApLHRoaXMuaG90LmNvdW50U291cmNlQ29scygpKTtkUih0aGlzLHlNLCExKSxfZS5mb3JFYWNoKGZ1bmN0aW9uKFJlLE5l''@;'; put 'put ''KXtSZS5mb3JFYWNoKGZ1bmN0aW9uKEtlLGh0KXtjZS5lbmdpbmUuc2V0Q2VsbENvbnRlbnRzKHtjb2w6aHQscm93OkkrTmUsc2hlZXQ6Y2Uuc2hlZXRJZH0sW1tLZV1dKX0pfSl9fSx7a2V5OiJvbkVuZ2luZVZhbHVlc1VwZGF0ZWQiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaG90LnJ1bkhv''@;'; put 'put ''b2tzKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIix5KX19LHtrZXk6Im9uRW5naW5lTmFtZWRFeHByZXNzaW9uc0FkZGVkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIix5LEMpfX0se2tleToib25FbmdpbmVOYW1l''@;'; put 'put ''ZEV4cHJlc3Npb25zUmVtb3ZlZCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIix5LEMpfX0se2tleToib25FbmdpbmVTaGVldEFkZGVkIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJT''@;'; put 'put ''aGVldEFkZGVkIix5KX19LHtrZXk6Im9uRW5naW5lU2hlZXRSZW5hbWVkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNoZWV0UmVuYW1lZCIseSxDKX19LHtrZXk6Im9uRW5naW5lU2hlZXRSZW1vdmVkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90''@;'; put 'put ''LnJ1bkhvb2tzKCJhZnRlclNoZWV0UmVtb3ZlZCIseSxDKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYzfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjYwfX1dKSxofShHcyk7ZnVuY3Rpb24gREllKGQsZyl7KG51''@;'; put 'put ''bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gQW5lKGQpe3JldHVybiBmdW5jdGlvbiBTaHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gWTVlKGQpfShkKXx8''@;'; put 'put ''ZnVuY3Rpb24ga2h0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIENodChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''ZClyZXR1cm4gWTVlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShk''@;'; put 'put ''KTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBZNWUoZCxnKX19KGQpfHxmdW5jdGlvbiBfaHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVy''@;'; put 'put ''YWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBZNWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFy''@;'; put 'put ''IGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBVNWUoZCl7cmV0dXJuKFU1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1''@;'; put 'put ''bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEVodChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIExJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYo''@;'; put 'put ''di53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHdNKCl7cmV0dXJuIHdNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1UaHQoZyxoKTtp''@;'; put 'put ''Zih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHdNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBUaHQoZCxnKXtmb3IoOyFPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPUt2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFE1ZShkLGcpe3JldHVybihRNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5f''@;'; put 'put ''X3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBMaHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1VNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVy''@;'; put 'put ''biBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEo1ZShkKX1mdW5jdGlvbiBKNWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1''@;'; put 'put ''bmN0aW9uIEt2KGQpe3JldHVybihLdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9uIE9JZShkLGcsaCl7KGZ1bmN0aW9u''@;'; put 'put ''IFJodChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gQTQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gQmh0KGQs''@;'; put 'put ''Zyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxSSWUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gaUcoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBQaHQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLFJJZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gUkllKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmll''@;'; put 'put ''bGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQpfVZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVIaWRlQ29sdW1ucyIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckhpZGVDb2x1bW5zIiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9y''@;'; put 'put ''ZVVuaGlkZUNvbHVtbnMiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJVbmhpZGVDb2x1bW5zIik7dmFyIFg1ZT0iaGlkZGVuQ29sdW1ucyIsUGc9bmV3IFdlYWtNYXAsRmc9bmV3IFdlYWtNYXAsSGh0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBJaHQoZCxnKXtpZigiZnVuY3Rp''@;'; put 'put ''b24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmUTVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gRGh0KGQpe3ZhciBnPWZ1bmN0aW9uIE9odCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVm''@;'; put 'put ''bGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtd''@;'; put 'put ''LGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUt2KGQpO2lmKGcpe3ZhciBDPUt2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpO3JldHVybiBMaHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtFaHQodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gT0llKEo1ZSh2PWcuY2FsbC5hcHBseShn''@;'; put 'put ''LFt0aGlzXS5jb25jYXQoQykpKSxQZyx7d3JpdGFibGU6ITAsdmFsdWU6e319KSxPSWUoSjVlKHYpLEZnLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksdn1yZXR1cm4gZnVuY3Rpb24geGh0KGQsZyxoKXtnJiZMSWUoZC5wcm90b3R5cGUsZyksaCYmTEllKGQsaCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbWDVlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCF0''@;'; put 'put ''aGlzLmVuYWJsZWQpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKClbWDVlXTtBbChDKSYmKGlHKHRoaXMsUGcsQyksdTEoQy5jb3B5UGFzdGVFbmFibGVkKSYmKEMuY29weVBhc3RlRW5hYmxlZD0hMCkpLGlHKHRoaXMsRmcsbmV3IFVlZSksQTQodGhpcyxGZykuYWRkTG9jYWxIb29rKCJp''@;'; put 'put ''bml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWFwSW5pdCgpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lLEE0KHRoaXMsRmcpKSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4geS5vbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q2VsbE1ldGEiLGZ1bmN0aW9uKEksaixjZSl7cmV0dXJuIHkub25BZnRlckdldENlbGxNZXRhKEksaixjZSl9KSx0aGlzLmFkZEhvb2soIm1v''@;'; put 'put ''ZGlmeUNvbFdpZHRoIixmdW5jdGlvbihJLGope3JldHVybiB5Lm9uTW9kaWZ5Q29sV2lkdGgoSSxqKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckdldENvbEhlYWRlci5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhv''@;'; put 'put ''b2soIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uTW9kaWZ5Q29weWFibGVSYW5nZShJKX0pLHdNKEt2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHdNKEt2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lz''@;'; put 'put ''dGVyTWFwKHRoaXMucGx1Z2luTmFtZSksaUcodGhpcyxQZyx7fSksd00oS3YoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMucmVzZXRDZWxsc01ldGEoKX19LHtrZXk6InNob3dDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9''@;'; put 'put ''dGhpcy5nZXRIaWRkZW5Db2x1bW5zKCksaj10aGlzLmlzVmFsaWRDb25maWcoeSksY2U9SSxfZT1BNCh0aGlzLEZnKS5nZXRWYWx1ZXMoKS5zbGljZSgpLFJlPXkubGVuZ3RoPjA7aiYmUmUmJihHcih5Lm1hcChmdW5jdGlvbihodCl7cmV0dXJuIEMuaG90LnRvUGh5c2ljYWxDb2x1bW4oaHQp''@;'; put 'put ''fSksZnVuY3Rpb24oaHQpe19lW2h0XT0hMX0pLGNlPUV1KF9lLGZ1bmN0aW9uKGh0LEJ0LCR0KXtyZXR1cm4gQnQmJmh0LnB1c2goQy5ob3QudG9WaXN1YWxDb2x1bW4oJHQpKSxodH0sW10pKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVVbmhpZGVDb2x1bW5zIixJLGNlLGomJlJl''@;'; put 'put ''KSYmKGomJlJlJiZBNCh0aGlzLEZnKS5zZXRWYWx1ZXMoX2UpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVW5oaWRlQ29sdW1ucyIsSSxjZSxqJiZSZSxqJiZjZS5sZW5ndGg8SS5sZW5ndGgpKX19LHtrZXk6InNob3dDb2x1bW4i''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07dGhpcy5zaG93Q29sdW1ucyhDKX19LHtrZXk6ImhpZGVDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhp''@;'; put 'put ''cy5nZXRIaWRkZW5Db2x1bW5zKCksaj10aGlzLmlzVmFsaWRDb25maWcoeSksY2U9STtqJiYoY2U9QXJyYXkuZnJvbShuZXcgU2V0KEkuY29uY2F0KHkpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUhpZGVDb2x1bW5zIixJLGNlLGopJiYoaiYmdGhpcy5ob3QuYmF0Y2hFeGVj''@;'; put 'put ''dXRpb24oZnVuY3Rpb24oKXtHcih5LGZ1bmN0aW9uKFJlKXtBNChDLEZnKS5zZXRWYWx1ZUF0SW5kZXgoQy5ob3QudG9QaHlzaWNhbENvbHVtbihSZSksITApfSl9LCEwKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJIaWRlQ29sdW1ucyIsSSxjZSxqLGomJmNlLmxlbmd0aD5JLmxlbmd0aCkp''@;'; put 'put ''fX0se2tleToiaGlkZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTt0aGlzLmhpZGVDb2x1bW5zKEMpfX0se2tleToiZ2V0SGlkZGVuQ29sdW1ucyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgeT10aGlzO3JldHVybiBUbChBNCh0aGlzLEZnKS5nZXRIaWRkZW5JbmRleGVzKCksZnVuY3Rpb24oQyl7cmV0dXJuIHkuaG90LnRvVmlzdWFsQ29sdW1uKEMpfSl9fSx7a2V5OiJpc0hpZGRlbiIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIEE0KHRoaXMsRmcpLmdldFZh''@;'; put 'put ''bHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpKXx8ITF9fSx7a2V5OiJpc1ZhbGlkQ29uZmlnIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5jb3VudENvbHMoKTtyZXR1cm4hIShBcnJheS5pc0FycmF5KHkpJiZ5Lmxlbmd0aD4wKSYmeS5ldmVyeShmdW5j''@;'; put 'put ''dGlvbihJKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihJKSYmST49MCYmSTxDfSl9fSx7a2V5OiJyZXNldENlbGxzTWV0YSIsdmFsdWU6ZnVuY3Rpb24oKXtHcih0aGlzLmhvdC5nZXRDZWxsc01ldGEoKSxmdW5jdGlvbih5KXt5JiYoeS5za2lwQ29sdW1uT25QYXN0ZT0hMSl9KX19LHtrZXk6''@;'; put 'put ''Im9uTW9kaWZ5Q29sV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHRoaXMuaXNIaWRkZW4oQyk/MDpBNCh0aGlzLFBnKS5pbmRpY2F0b3JzJiYodGhpcy5pc0hpZGRlbihDKzEpfHx0aGlzLmlzSGlkZGVuKEMtMSkpJiYibnVtYmVyIj09dHlwZW9mIHkmJnRoaXMuaG90Lmhhc0Nv''@;'; put 'put ''bEhlYWRlcnMoKT95KzE1OnZvaWQgMH19LHtrZXk6Im9uQWZ0ZXJHZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe2lmKCExPT09QTQodGhpcyxQZykuY29weVBhc3RlRW5hYmxlZCYmdGhpcy5pc0hpZGRlbihDKSYmKEkuc2tpcENvbHVtbk9uUGFzdGU9ITApLHRoaXMuaXNIaWRk''@;'; put 'put ''ZW4oQy0xKSlJLmNsYXNzTmFtZT1JLmNsYXNzTmFtZXx8IiIsLTE9PT1JLmNsYXNzTmFtZS5pbmRleE9mKCJhZnRlckhpZGRlbkNvbHVtbiIpJiYoSS5jbGFzc05hbWUrPSIgYWZ0ZXJIaWRkZW5Db2x1bW4iKTtlbHNlIGlmKEkuY2xhc3NOYW1lKXt2YXIgaj1JLmNsYXNzTmFtZS5zcGxpdCgi''@;'; put 'put ''ICIpO2lmKGoubGVuZ3RoPjApe3ZhciBjZT1qLmluZGV4T2YoImFmdGVySGlkZGVuQ29sdW1uIik7Y2U+LTEmJmouc3BsaWNlKGNlLDEpLEkuY2xhc3NOYW1lPWouam9pbigiICIpfX19fSx7a2V5OiJvbk1vZGlmeUNvcHlhYmxlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7''@;'; put 'put ''aWYoQTQodGhpcyxQZykuY29weVBhc3RlRW5hYmxlZClyZXR1cm4geTt2YXIgST1bXSxqPWZ1bmN0aW9uKF9lLFJlLE5lLEtlKXtJLnB1c2goe3N0YXJ0Um93Ol9lLGVuZFJvdzpSZSxzdGFydENvbDpOZSxlbmRDb2w6S2V9KX07cmV0dXJuIEdyKHksZnVuY3Rpb24oY2Upe3ZhciBfZT0hMCxS''@;'; put 'put ''ZT0wO3JhKGNlLnN0YXJ0Q29sLGNlLmVuZENvbCxmdW5jdGlvbihOZSl7Qy5pc0hpZGRlbihOZSk/KF9lfHxqKGNlLnN0YXJ0Um93LGNlLmVuZFJvdyxSZSxOZS0xKSxfZT0hMCk6KF9lJiYoUmU9TmUpLE5lPT09Y2UuZW5kQ29sJiZqKGNlLnN0YXJ0Um93LGNlLmVuZFJvdyxSZSxOZSksX2U9''@;'; put 'put ''ITEpfSl9KSxJfX0se2tleToib25BZnRlckdldENvbEhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZihBNCh0aGlzLFBnKS5pbmRpY2F0b3JzJiYhKHk8MCkpe3ZhciBJPVtdO3k+PTEmJnRoaXMuaXNIaWRkZW4oeS0xKSYmSS5wdXNoKCJhZnRlckhpZGRlbkNvbHVtbiIpLHk8dGhpcy5o''@;'; put 'put ''b3QuY291bnRDb2xzKCktMSYmdGhpcy5pc0hpZGRlbih5KzEpJiZJLnB1c2goImJlZm9yZUhpZGRlbkNvbHVtbiIpLFAwKEMsSSl9fX0se2tleToib25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZTp6bH0sZnVuY3Rp''@;'; put 'put ''b24gYmh0KGQpe3JldHVybntrZXk6ImhpZGRlbl9jb2x1bW5zX2hpZGUiLG5hbWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFNlbGVjdGVkTGFzdCgpLHY9MDtpZihBcnJheS5pc0FycmF5KGgpKXt2YXIgeT1mdW5jdGlvbiBtaHQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gd2h0KGQpe2lmKEFy''@;'; put 'put ''cmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiB5aHQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7''@;'; put 'put ''dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhy''@;'; put 'put ''b3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBBaHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIERJZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0''@;'; put 'put ''b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gREllKGQsZyl9fShkLGcpfHxm''@;'; put 'put ''dW5jdGlvbiB2aHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkg''@;'; put 'put ''bWV0aG9kLiIpfSgpfShoLDQpO3lbMV0teVszXSE9MCYmKHY9MSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShBcGUsdil9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx2PWguZnJvbSx5PWgudG8sQz1NYXRoLm1heChN''@;'; put 'put ''YXRoLm1pbih2LmNvbCx5LmNvbCksMCksST1NYXRoLm1heCh2LmNvbCx5LmNvbCksaj1bXSxjZT1DO2NlPD1JO2NlKz0xKWoucHVzaChjZSk7ZC5oaWRlQ29sdW1ucyhqKTt2YXIgUmU9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoaltqLmxlbmd0aC0x''@;'; put 'put ''XSwxLCEwKTtOdW1iZXIuaXNJbnRlZ2VyKFJlKSYmUmU+PTA/dGhpcy5zZWxlY3RDb2x1bW5zKFJlKTp0aGlzLmRlc2VsZWN0Q2VsbCgpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LGRpc2FibGVkOiExLGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiEo''@;'; put 'put ''dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpKX19fSh0aGlzKSxmdW5jdGlvbiBNaHQoZCl7dmFyIGc9W107cmV0dXJue2tleToiaGlkZGVuX2NvbHVtbnNfc2hvdyIsbmFtZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoeXBlLGcubGVuZ3RoPjE/MTowKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgdix5O2lmKDAhPT1nLmxlbmd0aCl7dmFyIEM9Z1swXSxJPWdbZy5sZW5ndGgtMV07Qz1udWxsIT09KHY9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFy''@;'; put 'put ''ZXN0Tm90SGlkZGVuSW5kZXgoQy0xLC0xKSkmJnZvaWQgMCE9PXY/djowLEk9bnVsbCE9PSh5PXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEkrMSwxKSkmJnZvaWQgMCE9PXk/eTp0aGlzLmNvdW50Q29scygpLTEsZC5zaG93Q29sdW1ucyhnKSx0aGlz''@;'; put 'put ''LnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApLEktQysxPT09dGhpcy5jb3VudENvbHMoKXx8dGhpcy5zZWxlY3RDb2x1bW5zKEMsSSl9fSxkaXNhYmxlZDohMSxoaWRkZW46ZnVuY3Rpb24oKXt2YXIgdj10aGlzLHk9VGwoZC5nZXRIaWRkZW5Db2x1bW5zKCksZnVu''@;'; put 'put ''Y3Rpb24oaXIpe3JldHVybiB2LnRvUGh5c2ljYWxDb2x1bW4oaXIpfSk7aWYoIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpJiYhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fHkubGVuZ3RoPDEpcmV0dXJuITA7Zy5sZW5ndGg9MDt2YXIgQz10''@;'; put 'put ''aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksST1DLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLGo9Qy5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2wsY2U9dGhpcy5jb2x1bW5JbmRleE1hcHBlcixfZT1jZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkpLFJlPWNlLmdldFJlbmRlcmFi''@;'; put 'put ''bGVGcm9tVmlzdWFsSW5kZXgoaiksTmU9Y2UuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKSxLZT1bXTtpZihJIT09ail7aWYoai1JKzE+UmUtX2UrMSl7dmFyICR0PU5lLnNsaWNlKEksaisxKTtLZS5wdXNoLmFwcGx5KEtlLEFuZSgkdC5maWx0ZXIoZnVuY3Rpb24oaXIpe3JldHVybiB5LmluY2x1''@;'; put 'put ''ZGVzKGlyKX0pKSl9fWVsc2UgaWYoMD09PV9lJiZfZTxJKUtlLnB1c2guYXBwbHkoS2UsQW5lKE5lLnNsaWNlKDAsSSkpKTtlbHNlIGlmKG51bGw9PT1fZSlLZS5wdXNoLmFwcGx5KEtlLEFuZShOZS5zbGljZSgwLHRoaXMuY291bnRDb2xzKCkpKSk7ZWxzZXt2YXIgaG49dGhpcy5jb3VudENv''@;'; put 'put ''bHMoKS0xO1JlPT09Y2UuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChjZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoaG4sLTEpKSYmaG4+aiYmS2UucHVzaC5hcHBseShLZSxBbmUoTmUuc2xpY2UoaisxKSkpfXJldHVybiBHcihLZSxmdW5jdGlvbihpcil7Zy5wdXNoKHYudG9WaXN1''@;'; put 'put ''YWxDb2x1bW4oaXIpKX0pLDA9PT1nLmxlbmd0aH19fSh0aGlzKSl9fSx7a2V5OiJvbk1hcEluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7QXJyYXkuaXNBcnJheShBNCh0aGlzLFBnKS5jb2x1bW5zKSYmdGhpcy5oaWRlQ29sdW1ucyhBNCh0aGlzLFBnKS5jb2x1bW5zKX19LHtrZXk6ImRlc3Ryb3ki''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7aUcodGhpcyxQZyxudWxsKSxpRyh0aGlzLEZnLG51bGwpLHdNKEt2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFg1ZX19LHtrZXk6IlBMVUdJTl9QUklP''@;'; put 'put ''UklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMxMH19XSksaH0oR3MpO2Z1bmN0aW9uIEJJZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHluZShk''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24gUWh0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIEs1ZShkKX0oZCl8fGZ1bmN0aW9uIFVodChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJu''@;'; put 'put ''IEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBZaHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEs1ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3Im''@;'; put 'put ''JihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gSzVlKGQsZyl9fShkKXx8ZnVuY3Rp''@;'; put 'put ''b24gV2h0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9''@;'; put 'put ''KCl9ZnVuY3Rpb24gSzVlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gJDVlKGQpe3JldHVybigkNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''InN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6''@;'; put 'put ''dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBYaHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBQSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1to''@;'; put 'put ''XTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBiTSgpe3JldHVybiBiTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3Qm''@;'; put 'put ''JlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9JGh0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFs''@;'; put 'put ''dWV9fSxiTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gJGh0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD0kdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBxNWUoZCxnKXtyZXR1cm4ocTVlPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gdDN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09JDVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9p''@;'; put 'put ''ZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBlZ2UoZCl9ZnVuY3Rpb24gZWdlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhh''@;'; put 'put ''c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiAkdihkKXtyZXR1cm4oJHY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90''@;'; put 'put ''b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiBGSWUoZCxnLGgpeyhmdW5jdGlvbiByM3QoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9i''@;'; put 'put ''amVjdCIpfSkoZCxnKSxnLnNldChkLGgpfWZ1bmN0aW9uIFRwKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGkzdChkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsSEllKGQsZywiZ2V0IikpfWZ1bmN0aW9uIG9HKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gbzN0KGQsZyxo''@;'; put 'put ''KXtpZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1ofX0oZCxISWUoZCxnLCJzZXQiKSxoKSxofWZ1bmN0aW9uIEhJZShkLGcsaCl7''@;'; put 'put ''aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX1Wby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlSGlkZVJvd3MiKSxWby5nZXRTaW5nbGV0b24oKS5y''@;'; put 'put ''ZWdpc3RlcigiYWZ0ZXJIaWRlUm93cyIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVVbmhpZGVSb3dzIiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyVW5oaWRlUm93cyIpO3ZhciB0Z2U9ImhpZGRlblJvd3MiLHF2PW5ldyBXZWFrTWFwLEhnPW5ldyBXZWFr''@;'; put 'put ''TWFwLGwzdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gcWh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0''@;'; put 'put ''LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnE1ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGUzdChk''@;'; put 'put ''KXt2YXIgZz1mdW5jdGlvbiBuM3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnBy''@;'; put 'put ''b3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj0kdihkKTtpZihnKXt2YXIgQz0kdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdDN0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY7WGh0KHRoaXMsaCk7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKysp''@;'; put 'put ''Q1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIEZJZShlZ2Uodj1nLmNhbGwuYXBwbHkoZyxbdGhpc10uY29uY2F0KEMpKSkscXYse3dyaXRhYmxlOiEwLHZhbHVlOnt9fSksRkllKGVnZSh2KSxIZyx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLHZ9cmV0dXJuIGZ1bmN0aW9uIEtodChkLGcsaCl7''@;'; put 'put ''ZyYmUEllKGQucHJvdG90eXBlLGcpLGgmJlBJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RnZV19fSx7a2V5''@;'; put 'put ''OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RnZV07QWwoQykmJihvRyh0aGlzLHF2LEMpLHUxKEMuY29weVBhc3RlRW5hYmxlZCkmJihDLmNvcHlQYXN0ZUVuYWJsZWQ9ITAp''@;'; put 'put ''KSxvRyh0aGlzLEhnLG5ldyBVZWUpLFRwKHRoaXMsSGcpLmFkZExvY2FsSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1hcEluaXQoKX0pLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSxUcCh0aGlzLEhnKSksdGhpcy5hZGRIb29r''@;'; put 'put ''KCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckdldENlbGxNZXRhIixmdW5jdGlvbihJLGosY2Upe3JldHVybiB5''@;'; put 'put ''Lm9uQWZ0ZXJHZXRDZWxsTWV0YShJLGosY2UpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dIZWlnaHQiLGZ1bmN0aW9uKEksail7cmV0dXJuIHkub25Nb2RpZnlSb3dIZWlnaHQoSSxqKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRSb3dIZWFkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25B''@;'; put 'put ''ZnRlckdldFJvd0hlYWRlci5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uTW9kaWZ5Q29weWFibGVSYW5nZShJKX0pLGJNKCR2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxs''@;'; put 'put ''KHRoaXMpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLGJNKCR2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksb0codGhpcyxxdix7fSksYk0oJHYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMucmVzZXRDZWxsc01ldGEoKX19LHtrZXk6''@;'; put 'put ''InNob3dSb3dzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhpcy5nZXRIaWRkZW5Sb3dzKCksaj10aGlzLmlzVmFsaWRDb25maWcoeSksY2U9SSxfZT1UcCh0aGlzLEhnKS5nZXRWYWx1ZXMoKS5zbGljZSgpLFJlPXkubGVuZ3RoPjA7aiYmUmUmJihHcih5Lm1hcChmdW5jdGlv''@;'; put 'put ''bihodCl7cmV0dXJuIEMuaG90LnRvUGh5c2ljYWxSb3coaHQpfSksZnVuY3Rpb24oaHQpe19lW2h0XT0hMX0pLGNlPUV1KF9lLGZ1bmN0aW9uKGh0LEJ0LCR0KXtyZXR1cm4gQnQmJmh0LnB1c2goQy5ob3QudG9WaXN1YWxSb3coJHQpKSxodH0sW10pKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tz''@;'; put 'put ''KCJiZWZvcmVVbmhpZGVSb3dzIixJLGNlLGomJlJlKSYmKGomJlJlJiZUcCh0aGlzLEhnKS5zZXRWYWx1ZXMoX2UpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVuaGlkZVJvd3MiLEksY2UsaiYmUmUsaiYmY2UubGVuZ3RoPEkubGVuZ3RoKSl9fSx7a2V5OiJzaG93Um93Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3RoaXMuc2hvd1Jvd3MoQyl9fSx7a2V5OiJoaWRlUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPXRoaXMuZ2V0SGlkZGVuUm93cygp''@;'; put 'put ''LGo9dGhpcy5pc1ZhbGlkQ29uZmlnKHkpLGNlPUk7aiYmKGNlPUFycmF5LmZyb20obmV3IFNldChJLmNvbmNhdCh5KSkpKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVIaWRlUm93cyIsSSxjZSxqKSYmKGomJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7R3IoeSxm''@;'; put 'put ''dW5jdGlvbihSZSl7VHAoQyxIZykuc2V0VmFsdWVBdEluZGV4KEMuaG90LnRvUGh5c2ljYWxSb3coUmUpLCEwKX0pfSwhMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVySGlkZVJvd3MiLEksY2UsaixqJiZjZS5sZW5ndGg+SS5sZW5ndGgpKX19LHtrZXk6ImhpZGVSb3ciLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07dGhpcy5oaWRlUm93cyhDKX19LHtrZXk6ImdldEhpZGRlblJvd3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm4gVGwoVHAodGhpcyxI''@;'; put 'put ''ZykuZ2V0SGlkZGVuSW5kZXhlcygpLGZ1bmN0aW9uKEMpe3JldHVybiB5LmhvdC50b1Zpc3VhbFJvdyhDKX0pfX0se2tleToiaXNIaWRkZW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiBUcCh0aGlzLEhnKS5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSl8fCEx''@;'; put 'put ''fX0se2tleToiaXNWYWxpZENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuY291bnRSb3dzKCk7cmV0dXJuISEoQXJyYXkuaXNBcnJheSh5KSYmeS5sZW5ndGg+MCkmJnkuZXZlcnkoZnVuY3Rpb24oSSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoSSkmJkk+PTAmJkk8''@;'; put 'put ''Q30pfX0se2tleToicmVzZXRDZWxsc01ldGEiLHZhbHVlOmZ1bmN0aW9uKCl7R3IodGhpcy5ob3QuZ2V0Q2VsbHNNZXRhKCksZnVuY3Rpb24oeSl7eSYmKHkuc2tpcFJvd09uUGFzdGU9ITEpfSl9fSx7a2V5OiJvbk1vZGlmeVJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5pc0hpZGRlbihDKT8wOnl9fSx7a2V5OiJvbkFmdGVyR2V0Q2VsbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXtpZighMT09PVRwKHRoaXMscXYpLmNvcHlQYXN0ZUVuYWJsZWQmJnRoaXMuaXNIaWRkZW4oeSkmJihJLnNraXBSb3dPblBhc3RlPSEwKSx0aGlzLmlzSGlkZGVuKHkt''@;'; put 'put ''MSkpSS5jbGFzc05hbWU9SS5jbGFzc05hbWV8fCIiLC0xPT09SS5jbGFzc05hbWUuaW5kZXhPZigiYWZ0ZXJIaWRkZW5Sb3ciKSYmKEkuY2xhc3NOYW1lKz0iIGFmdGVySGlkZGVuUm93Iik7ZWxzZSBpZihJLmNsYXNzTmFtZSl7dmFyIGo9SS5jbGFzc05hbWUuc3BsaXQoIiAiKTtpZihqLmxl''@;'; put 'put ''bmd0aD4wKXt2YXIgY2U9ai5pbmRleE9mKCJhZnRlckhpZGRlblJvdyIpO2NlPi0xJiZqLnNwbGljZShjZSwxKSxJLmNsYXNzTmFtZT1qLmpvaW4oIiAiKX19fX0se2tleToib25Nb2RpZnlDb3B5YWJsZVJhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO2lmKFRwKHRoaXMscXYp''@;'; put 'put ''LmNvcHlQYXN0ZUVuYWJsZWQpcmV0dXJuIHk7dmFyIEk9W10saj1mdW5jdGlvbihfZSxSZSxOZSxLZSl7SS5wdXNoKHtzdGFydFJvdzpfZSxlbmRSb3c6UmUsc3RhcnRDb2w6TmUsZW5kQ29sOktlfSl9O3JldHVybiBHcih5LGZ1bmN0aW9uKGNlKXt2YXIgX2U9ITAsUmU9MDtyYShjZS5zdGFy''@;'; put 'put ''dFJvdyxjZS5lbmRSb3csZnVuY3Rpb24oTmUpe0MuaXNIaWRkZW4oTmUpPyhfZXx8aihSZSxOZS0xLGNlLnN0YXJ0Q29sLGNlLmVuZENvbCksX2U9ITApOihfZSYmKFJlPU5lKSxOZT09PWNlLmVuZFJvdyYmaihSZSxOZSxjZS5zdGFydENvbCxjZS5lbmRDb2wpLF9lPSExKX0pfSksSX19LHtr''@;'; put 'put ''ZXk6Im9uQWZ0ZXJHZXRSb3dIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYoVHAodGhpcyxxdikuaW5kaWNhdG9ycyYmISh5PDApKXt2YXIgST1bXTt5Pj0xJiZ0aGlzLmlzSGlkZGVuKHktMSkmJkkucHVzaCgiYWZ0ZXJIaWRkZW5Sb3ciKSx5PHRoaXMuaG90LmNvdW50Um93cygpLTEm''@;'; put 'put ''JnRoaXMuaXNIaWRkZW4oeSsxKSYmSS5wdXNoKCJiZWZvcmVIaWRkZW5Sb3ciKSxQMChDLEkpfX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt5Lml0ZW1zLnB1c2goe25hbWU6emx9LGZ1bmN0aW9uIEdodChkKXtyZXR1cm57a2V5''@;'; put 'put ''OiJoaWRkZW5fcm93c19oaWRlIixuYW1lOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRTZWxlY3RlZExhc3QoKSx2PTA7aWYoQXJyYXkuaXNBcnJheShoKSl7dmFyIHk9ZnVuY3Rpb24gTmh0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHpodChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBk''@;'; put 'put ''fShkKXx8ZnVuY3Rpb24gWmh0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5''@;'; put 'put ''PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8''@;'; put 'put ''ZnVuY3Rpb24gamh0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBCSWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5h''@;'; put 'put ''bWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEJJZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gVmh0KCl7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oaCwzKTt5WzBd''@;'; put 'put ''LXlbMl0hPTAmJih2PTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uod3BlLHYpfSxjYWxsYmFjazpmdW5jdGlvbigpe2Zvcih2YXIgaD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksdj1oLmZyb20seT1oLnRvLEM9TWF0aC5tYXgoTWF0aC5taW4odi5yb3cseS5yb3cpLDAp''@;'; put 'put ''LEk9TWF0aC5tYXgodi5yb3cseS5yb3cpLGo9W10sY2U9QztjZTw9STtjZSs9MSlqLnB1c2goY2UpO2QuaGlkZVJvd3Moaik7dmFyIFJlPXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGpbai5sZW5ndGgtMV0sMSwhMCk7TnVtYmVyLmlzSW50ZWdlcihSZSkm''@;'; put 'put ''JlJlPj0wP3RoaXMuc2VsZWN0Um93cyhSZSk6dGhpcy5kZXNlbGVjdENlbGwoKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxkaXNhYmxlZDohMSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hKHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hl''@;'; put 'put ''YWRlcigpfHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9fX0odGhpcyksZnVuY3Rpb24gSmh0KGQpe3ZhciBnPVtdO3JldHVybntrZXk6ImhpZGRlbl9yb3dzX3Nob3ciLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGJwZSxnLmxl''@;'; put 'put ''bmd0aD4xPzE6MCl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHYseTtpZigwIT09Zy5sZW5ndGgpe3ZhciBDPWdbMF0sST1nW2cubGVuZ3RoLTFdO0M9bnVsbCE9PSh2PXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEMtMSwtMSkpJiZ2b2lkIDAhPT12P3Y6''@;'; put 'put ''MCxJPW51bGwhPT0oeT10aGlzLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChJKzEsMSkpJiZ2b2lkIDAhPT15P3k6dGhpcy5jb3VudFJvd3MoKS0xLGQuc2hvd1Jvd3MoZyksdGhpcy5yZW5kZXIoKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKSxJLUMr''@;'; put 'put ''MT09PXRoaXMuY291bnRSb3dzKCl8fHRoaXMuc2VsZWN0Um93cyhDLEkpfX0sZGlzYWJsZWQ6ITEsaGlkZGVuOmZ1bmN0aW9uKCl7dmFyIHY9dGhpcyx5PVRsKGQuZ2V0SGlkZGVuUm93cygpLGZ1bmN0aW9uKGlyKXtyZXR1cm4gdi50b1BoeXNpY2FsUm93KGlyKX0pO2lmKCF0aGlzLnNlbGVj''@;'; put 'put ''dGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSYmIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHx5Lmxlbmd0aDwxKXJldHVybiEwO2cubGVuZ3RoPTA7dmFyIEM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLEk9Qy5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxqPUMu''@;'; put 'put ''Z2V0Qm90dG9tRW5kQ29ybmVyKCkucm93LGNlPXRoaXMucm93SW5kZXhNYXBwZXIsX2U9Y2UuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChJKSxSZT1jZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGopLE5lPWNlLmdldE5vdFRyaW1tZWRJbmRleGVzKCksS2U9W107aWYoSSE9''@;'; put 'put ''PWope2lmKGotSSsxPlJlLV9lKzEpe3ZhciAkdD1OZS5zbGljZShJLGorMSk7S2UucHVzaC5hcHBseShLZSx5bmUoJHQuZmlsdGVyKGZ1bmN0aW9uKGlyKXtyZXR1cm4geS5pbmNsdWRlcyhpcil9KSkpfX1lbHNlIGlmKDA9PT1fZSYmX2U8SSlLZS5wdXNoLmFwcGx5KEtlLHluZShOZS5zbGlj''@;'; put 'put ''ZSgwLEkpKSk7ZWxzZSBpZihudWxsPT09X2UpS2UucHVzaC5hcHBseShLZSx5bmUoTmUuc2xpY2UoMCx0aGlzLmNvdW50Um93cygpKSkpO2Vsc2V7dmFyIGhuPXRoaXMuY291bnRSb3dzKCktMTtSZT09PWNlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoY2UuZ2V0TmVhcmVzdE5vdEhp''@;'; put 'put ''ZGRlbkluZGV4KGhuLC0xKSkmJmhuPmomJktlLnB1c2guYXBwbHkoS2UseW5lKE5lLnNsaWNlKGorMSkpKX1yZXR1cm4gR3IoS2UsZnVuY3Rpb24oaXIpe2cucHVzaCh2LnRvVmlzdWFsUm93KGlyKSl9KSwwPT09Zy5sZW5ndGh9fX0odGhpcykpfX0se2tleToib25NYXBJbml0Iix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe0FycmF5LmlzQXJyYXkoVHAodGhpcyxxdikucm93cykmJnRoaXMuaGlkZVJvd3MoVHAodGhpcyxxdikucm93cyl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe29HKHRoaXMscXYsbnVsbCksb0codGhpcyxIZyxudWxsKSxiTSgkdihoLnByb3RvdHlwZSksImRl''@;'; put 'put ''c3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiB0Z2V9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAzMjB9fV0pLGh9KEdzKTtmdW5jdGlvbiBOSWUoZCxnKXsobnVsbD09Z3x8Zz5k''@;'; put 'put ''Lmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBWSWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsr''@;'; put 'put ''KXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBuZ2UoZCl7cmV0dXJuKG5nZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGpJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1l''@;'; put 'put ''cmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIG1SKCl7cmV0dXJuIG1SPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5n''@;'; put 'put ''ZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1fM3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LG1SLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKX1mdW5jdGlvbiBfM3QoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPWViKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIHJnZShkLGcpe3JldHVybihyZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBTM3QoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1uZ2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFpJZShkKX1mdW5jdGlvbiBaSWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQg''@;'; put 'put ''LSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIGViKGQpe3JldHVybihlYj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5''@;'; put 'put ''cGVPZihoKX0pKGQpfVZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5GcmVlemUiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb2x1bW5GcmVlemUiKSxWby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uVW5mcmVlemUiKSxWby5n''@;'; put 'put ''ZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb2x1bW5VbmZyZWV6ZSIpO3ZhciB6SWU9Im1hbnVhbENvbHVtbkZyZWV6ZSIsYUc9bmV3IFdlYWtNYXAseDN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBDM3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcmdlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gazN0KGQpe3ZhciBnPWZ1bmN0aW9uIE0zdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3Jl''@;'; put 'put ''dHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWViKGQpO2lmKGcpe3ZhciBDPWViKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBTM3QodGhpcyx5KX19KGgp''@;'; put 'put ''O2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIHczdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLHk9Zy5jYWxsKHRoaXMsdiksYUcuc2V0KFpJZSh5KSx7''@;'; put 'put ''YWZ0ZXJGaXJzdFVzZTohMX0pLHl9cmV0dXJuIGZ1bmN0aW9uIGIzdChkLGcsaCl7ZyYmakllKGQucHJvdG90eXBlLGcpLGgmJmpJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3pJZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oQyl7''@;'; put 'put ''cmV0dXJuIHkuYWRkQ29udGV4dE1lbnVFbnRyeShDKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uTW92ZSIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkJlZm9yZUNvbHVtbk1vdmUoQyxJKX0pLG1SKGViKGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMp''@;'; put 'put ''KX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7YUcuZ2V0KHRoaXMpLmFmdGVyRmlyc3RVc2U9ITEsbVIoZWIoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksbVIoZWIoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJmcmVlemVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFHLmdldCh0aGlzKSxJPXRoaXMuaG90LmdldFNl''@;'; put 'put ''dHRpbmdzKCksaj1JLmZpeGVkQ29sdW1uc1N0YXJ0PHRoaXMuaG90LmNvdW50Q29scygpJiZ5PkkuZml4ZWRDb2x1bW5zU3RhcnQtMTtDLmFmdGVyRmlyc3RVc2V8fChDLmFmdGVyRmlyc3RVc2U9ITApLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbkZyZWV6ZSIseSxqKSYm''@;'; put 'put ''KGomJih0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5tb3ZlSW5kZXhlcyh5LEkuZml4ZWRDb2x1bW5zU3RhcnQpLEkuX2ZpeGVkQ29sdW1uc1N0YXJ0Kz0xKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5GcmVlemUiLHksaikpfX0se2tleToidW5mcmVlemVDb2x1bW4iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKHkpe3ZhciBDPWFHLmdldCh0aGlzKSxJPXRoaXMuaG90LmdldFNldHRpbmdzKCksaj1JLmZpeGVkQ29sdW1uc1N0YXJ0PjAmJnk8PUkuZml4ZWRDb2x1bW5zU3RhcnQtMTtDLmFmdGVyRmlyc3RVc2V8fChDLmFmdGVyRmlyc3RVc2U9ITApLCExIT09dGhpcy5ob3QucnVuSG9v''@;'; put 'put ''a3MoImJlZm9yZUNvbHVtblVuZnJlZXplIix5LGopJiYoaiYmKEkuX2ZpeGVkQ29sdW1uc1N0YXJ0LT0xLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLm1vdmVJbmRleGVzKHksSS5maXhlZENvbHVtbnNTdGFydCkpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblVuZnJlZXplIix5''@;'; put 'put ''LGopKX19LHtrZXk6ImFkZENvbnRleHRNZW51RW50cnkiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gZDN0KGQpe3JldHVybntrZXk6ImZyZWV6ZV9jb2x1bW4iLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xh''@;'; put 'put ''dGVkUGhyYXNlKFE0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKGgsdil7dmFyIHk9ZnVuY3Rpb24gczN0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGgzdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gZjN0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGgh''@;'; put 'put ''PT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gYzN0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVy''@;'; put 'put ''biBOSWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJB''@;'; put 'put ''cmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIE5JZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gdTN0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVy''@;'; put 'put ''YWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odiwxKTtkLmZyZWV6ZUNvbHVtbih5WzBdLnN0YXJ0LmNvbCksdGhpcy5yZW5kZXIoKSx0aGlzLnZpZXcu''@;'; put 'put ''YWRqdXN0RWxlbWVudHNTaXplKCEwKX0saGlkZGVuOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj0hMTtyZXR1cm4odm9pZCAwPT09aHx8aC5sZW5ndGg+MXx8aFswXS5mcm9tLmNvbCE9PWhbMF0udG8uY29sfHxoWzBdLmZyb20uY29sPD10aGlzLmdldFNldHRp''@;'; put 'put ''bmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQtMSkmJih2PSEwKSx2fX19KHRoaXMpLGZ1bmN0aW9uIHkzdChkKXtyZXR1cm57a2V5OiJ1bmZyZWV6ZV9jb2x1bW4iLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEo0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKGgs''@;'; put 'put ''dil7dmFyIHk9ZnVuY3Rpb24gcDN0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIEEzdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gdjN0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRv''@;'; put 'put ''cl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5h''@;'; put 'put ''bGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gbTN0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBWSWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRv''@;'; put 'put ''U3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwz''@;'; put 'put ''MikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIFZJZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gZzN0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJh''@;'; put 'put ''YmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odiwxKTtkLnVuZnJlZXplQ29sdW1uKHlbMF0uc3RhcnQuY29sKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxoaWRkZW46ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgaD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PSExO3JldHVybih2b2lkIDA9PT1ofHxoLmxlbmd0aD4xfHxoWzBdLmZyb20uY29sIT09aFswXS50by5jb2x8fGhbMF0uZnJvbS5jb2w+PXRoaXMuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCkmJih2PSEwKSx2''@;'; put 'put ''fX19KHRoaXMpKX19LHtrZXk6Im9uQmVmb3JlQ29sdW1uTW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZihhRy5nZXQodGhpcykuYWZ0ZXJGaXJzdFVzZSl7dmFyIGo9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydDtpZihDPGp8fHkuc29tZShmdW5jdGlvbihjZSl7''@;'; put 'put ''cmV0dXJuIGNlPGp9KSlyZXR1cm4hMX19fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiB6SWV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxMTB9fV0pLGh9KEdzKTtmdW5jdGlvbiBHSWUoZCxnKXtmb3IodmFyIGg9MDto''@;'; put 'put ''PGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgdlI9InB4IixEM3Q9ZnVuY3Rpb24oKXtm''@;'; put 'put ''dW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBUM3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5zdGF0ZT0wLHRo''@;'; put 'put ''aXMuaW5saW5lUHJvcGVydHk9Zy5pc1J0bCgpPyJyaWdodCI6ImxlZnQifXJldHVybiBmdW5jdGlvbiBJM3QoZCxnLGgpe2cmJkdJZShkLnByb3RvdHlwZSxnKSxoJiZHSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToi''@;'; put 'put ''YXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKGgpe2guYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5zdGF0ZT0yfX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7MD09PXRoaXMuc3RhdGUmJih0aGlzLl9lbGVtZW50PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVt''@;'; put 'put ''ZW50KCJkaXYiKSx0aGlzLnN0YXRlPTEpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQXBwZW5kZWQoKSYmdGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLnN0YXRlPTB9''@;'; put 'put ''fSx7a2V5OiJpc0FwcGVuZGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAyPT09dGhpcy5zdGF0ZX19LHtrZXk6ImlzQnVpbHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU+PTF9fSx7a2V5OiJzZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtnNChoKSYmKHRo''@;'; put 'put ''aXMuX2VsZW1lbnQuc3R5bGUudG9wPWgrdlIpLGc0KHYpJiYodGhpcy5fZWxlbWVudC5zdHlsZVt0aGlzLmlubGluZVByb3BlcnR5XT12K3ZSKX19LHtrZXk6ImdldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuX2VsZW1lbnQuc3R5bGU7cmV0dXJue3RvcDpoLnRvcD9w''@;'; put 'put ''YXJzZUludChoLnRvcCwxMCk6MCxzdGFydDpoW3RoaXMuaW5saW5lUHJvcGVydHldP3BhcnNlSW50KGhbdGhpcy5pbmxpbmVQcm9wZXJ0eV0sMTApOjB9fX0se2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtnNChoKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg9aCt2Uiks''@;'; put 'put ''ZzQodikmJih0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD12K3ZSKX19LHtrZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aCwxMCk6MCxoZWlnaHQ6dGhp''@;'; put 'put ''cy5fZWxlbWVudC5zdHlsZS5oZWlnaHQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQsMTApOjB9fX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe2c0KGgpJiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A9aCt2UiksZzQodikmJih0aGlzLl9l''@;'; put 'put ''bGVtZW50LnN0eWxlWyJtYXJnaW4iLmNvbmNhdCh0ZCh0aGlzLmlubGluZVByb3BlcnR5KSldPXYrdlIpfX0se2tleToiZ2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuX2VsZW1lbnQuc3R5bGUsdj0ibWFyZ2luIi5jb25jYXQodGQodGhpcy5pbmxpbmVQcm9wZXJ0eSkp''@;'; put 'put ''O3JldHVybnt0b3A6aC5tYXJnaW5Ub3A/cGFyc2VJbnQoaC5tYXJnaW5Ub3AsMTApOjAsc3RhcnQ6aFt2XT9wYXJzZUludChoW3ZdLDEwKTowfX19XSksZH0oKTtjb25zdCBVSWU9RDN0O2Z1bmN0aW9uIG9nZShkKXtyZXR1cm4ob2dlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVv''@;'; put 'put ''ZiBnfSkoZCl9ZnVuY3Rpb24gTDN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gUUllKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5l''@;'; put 'put ''bnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gd25lKCl7cmV0dXJuIHduZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJl''@;'; put 'put ''ZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9UjN0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9''@;'; put 'put ''fSx3bmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFIzdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9QVIoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gYWdlKGQsZyl7cmV0dXJuKGFnZT1PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEYzdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PW9nZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQg''@;'; put 'put ''MCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gSDN0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu''@;'; put 'put ''IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gQVIoZCl7cmV0dXJuKEFSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8''@;'; put 'put ''T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGozdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gQjN0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBh''@;'; put 'put ''IGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmFnZShk''@;'; put 'put ''LGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFAzdChkKXt2YXIgZz1mdW5jdGlvbiBOM3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkp''@;'; put 'put ''cmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1BUihkKTtpZihnKXt2YXIgQz1B''@;'; put 'put ''Uih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gRjN0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIEwzdCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMp''@;'; put 'put ''fXJldHVybiBmdW5jdGlvbiBPM3QoZCxnLGgpe2cmJlFJZShkLnByb3RvdHlwZSxnKSxoJiZRSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7d25lKEFSKGgucHJvdG90eXBl''@;'; put 'put ''KSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksUDAodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodCIpfX1dKSxofShVSWUpO2NvbnN0IFozdD1qM3Q7ZnVuY3Rpb24gbGdlKGQpe3JldHVybihsZ2U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IGd9KShkKX1mdW5jdGlvbiB6M3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBKSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVu''@;'; put 'put ''dW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBibmUoKXtyZXR1cm4gYm5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVm''@;'; put 'put ''bGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1XM3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19''@;'; put 'put ''LGJuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVzN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD15UihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBzZ2UoZCxnKXtyZXR1cm4oc2dlPU9iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gUTN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bGdlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAw''@;'; put 'put ''IT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBKM3QoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4g''@;'; put 'put ''aW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiB5UihkKXtyZXR1cm4oeVI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxP''@;'; put 'put ''YmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgJDN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBZM3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg''@;'; put 'put ''ZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmc2dlKGQs''@;'; put 'put ''Zyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gVTN0KGQpe3ZhciBnPWZ1bmN0aW9uIFgzdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSly''@;'; put 'put ''ZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXlSKGQpO2lmKGcpe3ZhciBDPXlS''@;'; put 'put ''KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBRM3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gejN0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIEczdChkLGcsaCl7ZyYmSkllKGQucHJvdG90eXBlLGcpLGgmJkpJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXtibmUoeVIoaC5wcm90b3R5cGUp''@;'; put 'put ''LCJidWlsZCIsdGhpcykuY2FsbCh0aGlzKSxQMCh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lIil9fV0pLGh9KFVJZSk7Y29uc3QgcTN0PSQzdDtmdW5jdGlvbiB1Z2UoZCl7cmV0dXJuKHVnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9s''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Yg''@;'; put 'put ''Z30pKGQpfWZ1bmN0aW9uIFhJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''di5rZXksdil9fWZ1bmN0aW9uIF9NKCl7cmV0dXJuIF9NPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1uZHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LF9NLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBuZHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9''@;'; put 'put ''PShkPWU5KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIGNnZShkLGcpe3JldHVybihjZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBvZHQoZCxnKXtp''@;'; put 'put ''ZihnJiYoIm9iamVjdCI9PT11Z2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZnZShkKX1m''@;'; put 'put ''dW5jdGlvbiBmZ2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIGU5KGQpe3JldHVybihlOT1PYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfVZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5Nb3ZlIiksVm8uZ2V0U2luZ2xldG9uKCkucmVn''@;'; put 'put ''aXN0ZXIoImFmdGVyQ29sdW1uTW92ZSIpO3ZhciBoZ2U9Im1hbnVhbENvbHVtbk1vdmUiLHRiPW5ldyBXZWFrTWFwLEtJZT0iaHRfX21hbnVhbENvbHVtbk1vdmUiLF9uZT0ic2hvdy11aSIsZGdlPSJvbi1tb3ZpbmctLWNvbHVtbnMiLHBnZT0iYWZ0ZXItc2VsZWN0aW9uLS1jb2x1bW5zIixz''@;'; put 'put ''ZHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIHJkdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVh''@;'; put 'put ''dGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZjZ2UoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBpZHQoZCl7dmFy''@;'; put 'put ''IGc9ZnVuY3Rpb24gYWR0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5''@;'; put 'put ''cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9ZTkoZCk7aWYoZyl7dmFyIEM9ZTkodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0''@;'; put 'put ''cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG9kdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gZWR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCkseT1nLmNhbGwodGhpcyx2KSx0Yi5zZXQoZmdlKHkpLHtjb2x1bW5zVG9Nb3ZlOltdLGNvdW50Q29sczowLGZpeGVkQ29sdW1uczowLHByZXNzZWQ6dm9pZCAwLHRhcmdldDp7ZXZlbnRQYWdlWDp2b2lkIDAsY29vcmRz''@;'; put 'put ''OnZvaWQgMCxURDp2b2lkIDAsY29sOnZvaWQgMH0sY2FjaGVkRHJvcEluZGV4OnZvaWQgMH0pLHkuZXZlbnRNYW5hZ2VyPW5ldyBQMShmZ2UoeSkpLHkuYmFja2xpZ2h0PW5ldyBaM3QodikseS5ndWlkZWxpbmU9bmV3IHEzdCh2KSx5fXJldHVybiBmdW5jdGlvbiB0ZHQoZCxnLGgpe2cmJlhJ''@;'; put 'put ''ZShkLnByb3RvdHlwZSxnKSxoJiZYSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtoZ2VdfX0se2tleToiZW5h''@;'; put 'put ''YmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRI''@;'; put 'put ''b29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZU92ZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlclNjcm9sbFZl''@;'; put 'put ''cnRpY2FsbHkoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyTG9hZERhdGEuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5idWlsZFBsdWdpblVJKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLFAwKHRoaXMuaG90LnJvb3RFbGVtZW50''@;'; put 'put ''LEtJZSksX00oZTkoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgp''@;'; put 'put ''LF9NKGU5KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt1bCh0aGlzLmhvdC5yb290RWxlbWVudCxLSWUpLHRoaXMudW5yZWdpc3RlckV2ZW50cygpLHRoaXMuYmFja2xpZ2h0LmRlc3Ry''@;'; put 'put ''b3koKSx0aGlzLmd1aWRlbGluZS5kZXN0cm95KCksX00oZTkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToibW92ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhpcy5tb3ZlQ29sdW1ucyhbeV0sQyl9fSx7a2V5OiJtb3Zl''@;'; put 'put ''Q29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10Yi5nZXQodGhpcyksaj1JLmNhY2hlZERyb3BJbmRleCxjZT10aGlzLmlzTW92ZVBvc3NpYmxlKHksQyksX2U9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbk1vdmUiLHksQyxqLGNlKTtpZihJLmNhY2hlZERyb3BJbmRl''@;'; put 'put ''eD12b2lkIDAsITEhPT1fZSl7Y2UmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLm1vdmVJbmRleGVzKHksQyk7dmFyIFJlPWNlJiZ0aGlzLmlzQ29sdW1uT3JkZXJDaGFuZ2VkKHksQyk7cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtbk1vdmUiLHksQyxqLGNlLFJlKSxS''@;'; put 'put ''ZX19fSx7a2V5OiJkcmFnQ29sdW1uIix2YWx1ZTpmdW5jdGlvbih5LEMpe3JldHVybiB0aGlzLmRyYWdDb2x1bW5zKFt5XSxDKX19LHtrZXk6ImRyYWdDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuY291bnRGaW5hbEluZGV4KHksQyk7cmV0dXJuIHRiLmdldCh0aGlz''@;'; put 'put ''KS5jYWNoZWREcm9wSW5kZXg9Qyx0aGlzLm1vdmVDb2x1bW5zKHksSSl9fSx7a2V5OiJpc01vdmVQb3NzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLGo9eS5sZW5ndGgrQz5JLGNl''@;'; put 'put ''PUM8MCxfZT15LnNvbWUoZnVuY3Rpb24oTmUpe3JldHVybiBOZTwwfSksUmU9eS5zb21lKGZ1bmN0aW9uKE5lKXtyZXR1cm4gTmU+PUl9KTtyZXR1cm4hKGp8fGNlfHxfZXx8UmUpfX0se2tleToiaXNDb2x1bW5PcmRlckNoYW5nZWQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHkuc29t''@;'; put 'put ''ZShmdW5jdGlvbihJLGope3JldHVybiBJLWohPT1DfSl9fSx7a2V5OiJjb3VudEZpbmFsSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9RXUoeSxmdW5jdGlvbihqLGNlKXtyZXR1cm4gY2U8QyYmKGorPTEpLGp9LDApO3JldHVybiBDLUl9fSx7a2V5OiJnZXRDb2x1bW5zV2lkdGgi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGo9MCxjZT15O2NlPD1DO2NlKz0xKXt2YXIgX2U9SS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGNlKTtjZTwwP2orPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93''@;'; put 'put ''SGVhZGVyV2lkdGgoKXx8MDpudWxsIT09X2UmJihqKz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKF9lKXx8MCl9cmV0dXJuIGp9fSx7a2V5OiJtb3ZlQnlTZXR0aW5nc09yTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRT''@;'; put 'put ''ZXR0aW5ncygpW2hnZV07aWYoQXJyYXkuaXNBcnJheSh5KSl0aGlzLm1vdmVDb2x1bW5zKHksMCk7ZWxzZSBpZih2b2lkIDAhPT15KXt2YXIgQz10aGlzLnBlcnNpc3RlbnRTdGF0ZUxvYWQoKTtDLmxlbmd0aCYmdGhpcy5tb3ZlQ29sdW1ucyhDLDApfX19LHtrZXk6ImlzRml4ZWRDb2x1bW5z''@;'; put 'put ''U3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB5PHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnR9fSx7a2V5OiJwZXJzaXN0ZW50U3RhdGVTYXZlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwibWFu''@;'; put 'put ''dWFsQ29sdW1uTW92ZSIsdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfX0se2tleToicGVyc2lzdGVudFN0YXRlTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT17fTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZUxvYWQi''@;'; put 'put ''LCJtYW51YWxDb2x1bW5Nb3ZlIix5KSx5LnZhbHVlP3kudmFsdWU6W119fSx7a2V5OiJwcmVwYXJlQ29sdW1uc1RvTW92aW5nIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPVtdO3JldHVybiByYSh5LEMsZnVuY3Rpb24oail7SS5wdXNoKGopfSksSX19LHtrZXk6InJlZnJlc2hQb3NpdGlv''@;'; put 'put ''bnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGIuZ2V0KHRoaXMpLEM9dGhpcy5ob3Qudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbigpO3RoaXMuaXNGaXhlZENvbHVtbnNTdGFydCh5LmhvdmVyZWRDb2x1bW4pJiZDPjAmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odm9pZCAw''@;'; put 'put ''LHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChDLTEsLTEpKTt2YXIgST10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLGo9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zY3JvbGxhYmxlRWxlbWVudCxjZT0ibnVtYmVyIj09dHlwZW9mIGou''@;'; put 'put ''c2Nyb2xsWD9qLnNjcm9sbFg6ai5zY3JvbGxMZWZ0LF9lPXRoaXMuaG90LnZpZXcuVEhFQUQub2Zmc2V0TGVmdCt0aGlzLmdldENvbHVtbnNXaWR0aCgwLHkuaG92ZXJlZENvbHVtbi0xKSxSZT1JLmhpZGVyLm9mZnNldFdpZHRoLE5lPUkuVEJPRFkub2Zmc2V0TGVmdCxLZT10aGlzLmJhY2ts''@;'; put 'put ''aWdodC5nZXRPZmZzZXQoKS5zdGFydCxodD10aGlzLmJhY2tsaWdodC5nZXRTaXplKCkud2lkdGgsQnQ9MCwkdD0wO2lmKHRoaXMuaG90LmlzUnRsKCkpe3ZhciBobj10aGlzLmhvdC5yb290V2luZG93LERuPXcyKHRoaXMuaG90LnJvb3RFbGVtZW50KTskdD1obi5pbm5lcldpZHRoLXkudGFy''@;'; put 'put ''Z2V0LmV2ZW50UGFnZVgtKGhuLmlubmVyV2lkdGgteS5yb290RWxlbWVudE9mZnNldC1EbiktKHZvaWQgMD09PWouc2Nyb2xsWD9jZTowKX1lbHNlICR0PXkudGFyZ2V0LmV2ZW50UGFnZVgtKHkucm9vdEVsZW1lbnRPZmZzZXQtKHZvaWQgMD09PWouc2Nyb2xsWD9jZTowKSk7eS5oYXNSb3dI''@;'; put 'put ''ZWFkZXJzJiYoQnQ9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDb2x1bW5IZWFkZXIoLTEpLm9mZnNldFdpZHRoKSx0aGlzLmlzRml4ZWRDb2x1bW5zU3RhcnQoeS5ob3ZlcmVkQ29sdW1uKSYmKF9lKz1jZSksX2UrPUJ0''@;'; put 'put ''LHkuaG92ZXJlZENvbHVtbjwwP3kudGFyZ2V0LmNvbD15LmZpeGVkQ29sdW1uc1N0YXJ0PjA/MDpDPjA/Qy0xOkM6eS50YXJnZXQuVEQub2Zmc2V0V2lkdGgvMitfZTw9JHQ/KHkudGFyZ2V0LmNvbD0oeS5ob3ZlcmVkQ29sdW1uPj15LmNvdW50Q29scz95LmNvdW50Q29scy0xOnkuaG92ZXJl''@;'; put 'put ''ZENvbHVtbikrMSxfZSs9eS50YXJnZXQuVEQub2Zmc2V0V2lkdGgpOnkudGFyZ2V0LmNvbD15LmhvdmVyZWRDb2x1bW47dmFyIEVyPSR0LEFyPV9lOyR0K2h0K0tlPj1SZT9Fcj1SZS1odC1LZTokdCtLZTxOZStCdCYmKEVyPU5lK0J0K01hdGguYWJzKEtlKSksX2U+PVJlLTE/QXI9UmUtMTow''@;'; put 'put ''PT09QXI/QXI9MTp2b2lkIDAhPT1qLnNjcm9sbFgmJnkuaG92ZXJlZENvbHVtbjx5LmZpeGVkQ29sdW1uc1N0YXJ0JiYoQXItPXkucm9vdEVsZW1lbnRPZmZzZXQ8PWouc2Nyb2xsWD95LnJvb3RFbGVtZW50T2Zmc2V0OjApLHRoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwsRXIpLHRo''@;'; put 'put ''aXMuZ3VpZGVsaW5lLnNldFBvc2l0aW9uKG51bGwsQXIpfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJt''@;'; put 'put ''b3VzZW1vdmUiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uTW91c2VNb3ZlKEkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSl9fSx7a2V5OiJ1bnJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyKCl9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7dmFyIGNlPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsX2U9dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhl''@;'; put 'put ''YWRlcigpLFJlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksTmU9dGIuZ2V0KHRoaXMpLEtlPVhhKHkudGFyZ2V0LCJzb3J0QWN0aW9uIik7aWYoIVJlfHwhX2V8fE5lLnByZXNzZWR8fDAhPT15LmJ1dHRvbnx8S2UpcmV0dXJuIE5lLnByZXNzZWQ9ITEsTmUuY29sdW1uc1RvTW92''@;'; put 'put ''ZS5sZW5ndGg9MCx2b2lkIHVsKHRoaXMuaG90LnJvb3RFbGVtZW50LFtkZ2UsX25lXSk7dmFyIGh0PXRoaXMuZ3VpZGVsaW5lLmlzQnVpbHQoKSYmIXRoaXMuZ3VpZGVsaW5lLmlzQXBwZW5kZWQoKSxCdD10aGlzLmJhY2tsaWdodC5pc0J1aWx0KCkmJiF0aGlzLmJhY2tsaWdodC5pc0FwcGVu''@;'; put 'put ''ZGVkKCk7aHQmJkJ0JiYodGhpcy5ndWlkZWxpbmUuYXBwZW5kVG8oY2UuaGlkZXIpLHRoaXMuYmFja2xpZ2h0LmFwcGVuZFRvKGNlLmhpZGVyKSk7dmFyICR0PVJlLmZyb20saG49UmUudG8sRG49TWF0aC5taW4oJHQuY29sLGhuLmNvbCksaXI9TWF0aC5tYXgoJHQuY29sLGhuLmNvbCk7aWYo''@;'; put 'put ''Qy5yb3c8MCYmQy5jb2w+PURuJiZDLmNvbDw9aXIpe2ouY29sdW1uPSEwLE5lLnByZXNzZWQ9ITAsTmUudGFyZ2V0LmV2ZW50UGFnZVg9eS5wYWdlWCxOZS50YXJnZXQuZXZlbnRPZmZzZXRYPXkub2Zmc2V0WCxOZS5ob3ZlcmVkQ29sdW1uPUMuY29sLE5lLnRhcmdldC5URD1JLE5lLnRhcmdl''@;'; put 'put ''dC5jb2w9Qy5jb2wsTmUuY29sdW1uc1RvTW92ZT10aGlzLnByZXBhcmVDb2x1bW5zVG9Nb3ZpbmcoRG4saXIpLE5lLmhhc1Jvd0hlYWRlcnM9ISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLnJvd0hlYWRlcnMsTmUuY291bnRDb2xzPXRoaXMuaG90LmNvdW50Q29scygpLE5lLmZpeGVkQ29sdW1u''@;'; put 'put ''c1N0YXJ0PXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQsTmUucm9vdEVsZW1lbnRPZmZzZXQ9enUodGhpcy5ob3Qucm9vdEVsZW1lbnQpLmxlZnQ7dmFyIHByPU5lLmhhc1Jvd0hlYWRlcnM/LTE6MCxFcj1jZS5ob2xkZXIuc2Nyb2xsVG9wK2NlLmdldENvbHVtbkhl''@;'; put 'put ''YWRlckhlaWdodCgwKSsxLEFyPUMuY29sPE5lLmZpeGVkQ29sdW1uc1N0YXJ0LFlyPU1hdGguYWJzKHRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCkpLF9pPU1hdGguYWJzKHkub2Zmc2V0WC0odGhpcy5ob3QuaXNSdGwo''@;'; put 'put ''KT95LnRhcmdldC5vZmZzZXRXaWR0aDowKSksS2k9dGhpcy5nZXRDb2x1bW5zV2lkdGgoRG4sQy5jb2wtMSkrX2ksa289dGhpcy5nZXRDb2x1bW5zV2lkdGgocHIsRG4tMSkrKEFyP1lyOjApK0tpO3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKEVyLGtvKSx0aGlzLmJhY2tsaWdodC5zZXRT''@;'; put 'put ''aXplKHRoaXMuZ2V0Q29sdW1uc1dpZHRoKERuLGlyKSxjZS5oaWRlci5vZmZzZXRIZWlnaHQtRXIpLHRoaXMuYmFja2xpZ2h0LnNldE9mZnNldChudWxsLC1LaSksUDAodGhpcy5ob3Qucm9vdEVsZW1lbnQsZGdlKX1lbHNlIHVsKHRoaXMuaG90LnJvb3RFbGVtZW50LHBnZSksTmUucHJlc3Nl''@;'; put 'put ''ZD0hMSxOZS5jb2x1bW5zVG9Nb3ZlLmxlbmd0aD0wfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRiLmdldCh0aGlzKTtpZihDLnByZXNzZWQpe2lmKHkudGFyZ2V0PT09dGhpcy5iYWNrbGlnaHQuZWxlbWVudCl7dmFyIEk9dGhpcy5iYWNrbGlnaHQuZ2V0''@;'; put 'put ''U2l6ZSgpLndpZHRoO3RoaXMuYmFja2xpZ2h0LnNldFNpemUoMCksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKEkpfSl9Qy50YXJnZXQuZXZlbnRQYWdlWD15LnBhZ2VYLHRoaXMucmVmcmVzaFBvc2l0aW9ucygpfX19LHtrZXk6Im9uQmVmb3JlT25D''@;'; put 'put ''ZWxsTW91c2VPdmVyIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqKXt2YXIgY2U9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxfZT10Yi5nZXQodGhpcyk7IWNlfHwhX2UucHJlc3NlZHx8KF9lLmNvbHVtbnNUb01vdmUuaW5kZXhPZihDLmNvbCk+LTE/dWwodGhpcy5ob3Qucm9vdEVs''@;'; put 'put ''ZW1lbnQsX25lKTpQMCh0aGlzLmhvdC5yb290RWxlbWVudCxfbmUpLGoucm93PSEwLGouY29sdW1uPSEwLGouY2VsbD0hMCxfZS5ob3ZlcmVkQ29sdW1uPUMuY29sLF9lLnRhcmdldC5URD1JKX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10Yi5nZXQodGhpcyks''@;'; put 'put ''Qz15LnRhcmdldC5jb2wsST15LmNvbHVtbnNUb01vdmUubGVuZ3RoO2lmKHkuaG92ZXJlZENvbHVtbj12b2lkIDAseS5wcmVzc2VkPSExLHkuYmFja2xpZ2h0V2lkdGg9MCx1bCh0aGlzLmhvdC5yb290RWxlbWVudCxbZGdlLF9uZSxwZ2VdKSx0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3Rl''@;'; put 'put ''ZEJ5Q29sdW1uSGVhZGVyKCkmJlAwKHRoaXMuaG90LnJvb3RFbGVtZW50LHBnZSksIShJPDF8fHZvaWQgMD09PUMpKXt2YXIgY2U9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih5LmNvbHVtbnNUb01vdmVbMF0pLF9lPXRoaXMuZHJhZ0NvbHVtbnMoeS5jb2x1bW5zVG9Nb3ZlLEMpO2lmKHku''@;'; put 'put ''Y29sdW1uc1RvTW92ZS5sZW5ndGg9MCwhMD09PV9lKXt0aGlzLnBlcnNpc3RlbnRTdGF0ZVNhdmUoKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCk7dmFyIFJlPXRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGNlKTt0aGlzLmhvdC5zZWxlY3RD''@;'; put 'put ''b2x1bW5zKFJlLFJlK0ktMSl9fX19LHtrZXk6Im9uQWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsaj15LmdldENvbHVtbkhlYWRlckhlaWdodCgwKSsxK3kuaG9sZGVyLnNjcm9sbFRvcDt0aGlzLmJhY2tsaWdo''@;'; put 'put ''dC5zZXRQb3NpdGlvbihqKSx0aGlzLmJhY2tsaWdodC5zZXRTaXplKG51bGwseS5oaWRlci5vZmZzZXRIZWlnaHQtail9fSx7a2V5OiJidWlsZFBsdWdpblVJIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LmJ1aWxkKCksdGhpcy5ndWlkZWxpbmUuYnVpbGQoKX19LHtrZXk6Im9u''@;'; put 'put ''QWZ0ZXJMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdmVCeVNldHRpbmdzT3JMb2FkKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LmRlc3Ryb3koKSx0aGlzLmd1aWRlbGluZS5kZXN0cm95KCksX00oZTkoaC5wcm90b3R5cGUpLCJk''@;'; put 'put ''ZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaGdlfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTIwfX1dKSxofShHcyk7ZnVuY3Rpb24gZ2dlKGQpe3JldHVybihnZ2U9ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiAkSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFi''@;'; put 'put ''bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBDTSgpe3JldHVybiBDTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9ZmR0KGcsaCk7aWYoeSl7dmFy''@;'; put 'put ''IEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxDTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZmR0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD10OShkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBtZ2UoZCxnKXtyZXR1cm4obWdlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19f''@;'; put 'put ''PXksdn0pKGQsZyl9ZnVuY3Rpb24gcGR0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09Z2dlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0''@;'; put 'put ''IG9yIHVuZGVmaW5lZCIpO3JldHVybiB2Z2UoZCl9ZnVuY3Rpb24gdmdlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiB0''@;'; put 'put ''OShkKXtyZXR1cm4odDk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgQ25lPSJtYW51YWxDb2x1bW5SZXNpemUiLHFJZT0ibWFu''@;'; put 'put ''dWFsQ29sdW1uV2lkdGhzIixBZ2U9bmV3IFdlYWtNYXAsdmR0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBoZHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg''@;'; put 'put ''ZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmbWdlKGQs''@;'; put 'put ''Zyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gZGR0KGQpe3ZhciBnPWZ1bmN0aW9uIGdkdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSly''@;'; put 'put ''ZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXQ5KGQpO2lmKGcpe3ZhciBDPXQ5''@;'; put 'put ''KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBwZHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7IWZ1bmN0aW9uIHVkdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9m''@;'; put 'put ''IGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpO3ZhciBDPSh5PWcuY2FsbCh0aGlzLHYpKS5ob3Qucm9vdERvY3VtZW50O3JldHVybiB5LmN1cnJlbnRUSD1udWxsLHkuY3VycmVudENvbD1udWxsLHkuc2VsZWN0ZWRD''@;'; put 'put ''b2xzPVtdLHkuY3VycmVudFdpZHRoPW51bGwseS5uZXdTaXplPW51bGwseS5zdGFydFk9bnVsbCx5LnN0YXJ0V2lkdGg9bnVsbCx5LnN0YXJ0T2Zmc2V0PW51bGwseS5oYW5kbGU9Qy5jcmVhdGVFbGVtZW50KCJESVYiKSx5Lmd1aWRlPUMuY3JlYXRlRWxlbWVudCgiRElWIikseS5ldmVudE1h''@;'; put 'put ''bmFnZXI9bmV3IFAxKHZnZSh5KSkseS5wcmVzc2VkPW51bGwseS5kYmxjbGljaz0wLHkuYXV0b3Jlc2l6ZVRpbWVvdXQ9bnVsbCx5LmNvbHVtbldpZHRoc01hcD12b2lkIDAsQWdlLnNldCh2Z2UoeSkse2NvbmZpZzp2b2lkIDB9KSxQMCh5LmhhbmRsZSwibWFudWFsQ29sdW1uUmVzaXplciIp''@;'; put 'put ''LFAwKHkuZ3VpZGUsIm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZSIpLHl9cmV0dXJuIGZ1bmN0aW9uIGNkdChkLGcsaCl7ZyYmJEllKGQucHJvdG90eXBlLGcpLGgmJiRJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJp''@;'; put 'put ''bmxpbmVEaXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifX0se2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0NuZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmNvbHVtbldpZHRoc01hcD1uZXcgVncsdGhpcy5jb2x1bW5XaWR0aHNNYXAuYWRkTG9jYWxIb29rKCJpbml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWFwSW5pdCgpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIu''@;'; put 'put ''cmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lLHRoaXMuY29sdW1uV2lkdGhzTWFwKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixmdW5jdGlvbihDLEkpe3JldHVybiB5Lm9uTW9kaWZ5Q29sV2lkdGgoQyxJKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldp''@;'; put 'put ''ZHRoIixmdW5jdGlvbihDLEkpe3JldHVybiB5Lm9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoKEMsSSl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oQyxJLGope3JldHVybiB5Lm9uQmVmb3JlQ29sdW1uUmVzaXplKEMsSSxqKX0pLHRoaXMuYmluZEV2''@;'; put 'put ''ZW50cygpLENNKHQ5KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLENNKHQ5KGgucHJvdG90eXBlKSwidXBkYXRl''@;'; put 'put ''UGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtBZ2UuZ2V0KHRoaXMpLmNvbmZpZz10aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZXMoKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMu''@;'; put 'put ''cGx1Z2luTmFtZSksQ00odDkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2F2ZU1hbnVhbENvbHVtbldpZHRocyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlU2F2ZSIscUllLHRoaXMuY29s''@;'; put 'put ''dW1uV2lkdGhzTWFwLmdldFZhbHVlcygpKX19LHtrZXk6ImxvYWRNYW51YWxDb2x1bW5XaWR0aHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixxSWUseSkseS52YWx1ZX19LHtrZXk6InNldE1hbnVhbFNp''@;'; put 'put ''emUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9TWF0aC5tYXgoQywyMCksaj10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpO3JldHVybiB0aGlzLmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoaixJKSxJfX0se2tleToiY2xlYXJNYW51YWxTaXplIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bih5KXt2YXIgQz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpO3RoaXMuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChDLG51bGwpfX0se2tleToib25NYXBJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1BZ2UuZ2V0KHRoaXMpLEk9dGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVtDbmVdLGo9dGhpcy5sb2FkTWFudWFsQ29sdW1uV2lkdGhzKCk7dm9pZCAwIT09aj90aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe2ouZm9yRWFjaChmdW5jdGlvbihjZSxfZSl7eS5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLGNlKX0pfSwhMCk6''@;'; put 'put ''QXJyYXkuaXNBcnJheShJKT8odGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtJLmZvckVhY2goZnVuY3Rpb24oY2UsX2Upe3kuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChfZSxjZSl9KX0sITApLEMuY29uZmlnPUkpOiEwPT09SSYmQXJyYXkuaXNBcnJheShDLmNv''@;'; put 'put ''bmZpZykmJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7Qy5jb25maWcuZm9yRWFjaChmdW5jdGlvbihjZSxfZSl7eS5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLGNlKX0pfSwhMCl9fSx7a2V5OiJzZXR1cEhhbmRsZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bih5KXt2YXIgQz10aGlzO2lmKHkucGFyZW50Tm9kZSl7dGhpcy5jdXJyZW50VEg9eTt2YXIgST10aGlzLmhvdC52aWV3Ll93dCxqPUkud3RUYWJsZS5nZXRDb29yZHModGhpcy5jdXJyZW50VEgpLGNlPWouY29sO2lmKCEoY2U8MCkpe3ZhciBLZSxfZT1CMSh0aGlzLmN1cnJlbnRUSCksUmU9''@;'; put 'put ''dGhpcy5jdXJyZW50VEguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y2U8SS5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpJiYoS2U9SS53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCxqLnJv''@;'; put 'put ''dyxqLmNvbCkpLEtlfHwoS2U9SS53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24odGhpcy5jdXJyZW50VEgsai5yb3csai5jb2wpKSx0aGlzLmN1cnJlbnRDb2w9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRl''@;'; put 'put ''eChjZSksdGhpcy5zZWxlY3RlZENvbHM9W107dmFyIGh0PXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpO3RoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkKCkmJmh0JiZHcih0aGlz''@;'; put 'put ''LmhvdC5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oJHQpe3JhKCR0LmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLCR0LmdldEJvdHRvbUVuZENvcm5lcigpLmNvbCxmdW5jdGlvbihpcil7Qy5zZWxlY3RlZENvbHMuaW5jbHVkZXMoaXIpfHxDLnNlbGVjdGVkQ29scy5wdXNoKGlyKX0pfSks''@;'; put 'put ''dGhpcy5zZWxlY3RlZENvbHMuaW5jbHVkZXModGhpcy5jdXJyZW50Q29sKXx8KHRoaXMuc2VsZWN0ZWRDb2xzPVt0aGlzLmN1cnJlbnRDb2xdKSx0aGlzLnN0YXJ0T2Zmc2V0PUtlLnN0YXJ0LTYsdGhpcy5zdGFydFdpZHRoPXBhcnNlSW50KFJlLndpZHRoLDEwKSx0aGlzLmhhbmRsZS5zdHls''@;'; put 'put ''ZS50b3A9IiIuY29uY2F0KEtlLnRvcCwicHgiKSx0aGlzLmhhbmRsZS5zdHlsZVt0aGlzLmlubGluZURpcl09IiIuY29uY2F0KHRoaXMuc3RhcnRPZmZzZXQrdGhpcy5zdGFydFdpZHRoLCJweCIpLHRoaXMuaGFuZGxlLnN0eWxlLmhlaWdodD0iIi5jb25jYXQoX2UsInB4IiksdGhpcy5ob3Qu''@;'; put 'put ''cm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oYW5kbGUpfX19fSx7a2V5OiJyZWZyZXNoSGFuZGxlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGUuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPSIiLmNvbmNhdCh0aGlzLnN0YXJ0T2Zmc2V0K3RoaXMuY3VycmVudFdpZHRo''@;'; put 'put ''LCJweCIpfX0se2tleToic2V0dXBHdWlkZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXBhcnNlSW50KEIxKHRoaXMuaGFuZGxlKSwxMCksQz1wYXJzZUludCh0aGlzLmhhbmRsZS5zdHlsZS50b3AsMTApK3ksST1wYXJzZUludCh0aGlzLmhvdC52aWV3Lm1heGltdW1WaXNpYmxl''@;'; put 'put ''RWxlbWVudEhlaWdodCgwKSwxMCk7UDAodGhpcy5oYW5kbGUsImFjdGl2ZSIpLFAwKHRoaXMuZ3VpZGUsImFjdGl2ZSIpLHRoaXMuZ3VpZGUuc3R5bGUudG9wPSIiLmNvbmNhdChDLCJweCIpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKSx0aGlzLmd1aWRlLnN0eWxlLmhlaWdodD0iIi5j''@;'; put 'put ''b25jYXQoSS15LCJweCIpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZ3VpZGUpfX0se2tleToicmVmcmVzaEd1aWRlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ndWlkZS5zdHlsZVt0aGlzLmlubGluZURpcl09dGhpcy5oYW5kbGUuc3R5bGVbdGhpcy5p''@;'; put 'put ''bmxpbmVEaXJdfX0se2tleToiaGlkZUhhbmRsZUFuZEd1aWRlIix2YWx1ZTpmdW5jdGlvbigpe3VsKHRoaXMuaGFuZGxlLCJhY3RpdmUiKSx1bCh0aGlzLmd1aWRlLCJhY3RpdmUiKX19LHtrZXk6ImNoZWNrSWZDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiEhRHYoeSxb''@;'; put 'put ''IlRIRUFEIl0sdGhpcy5ob3Qucm9vdEVsZW1lbnQpfX0se2tleToiZ2V0Q2xvc2VzdFRIUGFyZW50Iix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4iVEFCTEUiIT09eS50YWdOYW1lPyJUSCI9PT15LnRhZ05hbWU/eTp0aGlzLmdldENsb3Nlc3RUSFBhcmVudCh5LnBhcmVudE5vZGUpOm51bGx9''@;'; put 'put ''fSx7a2V5OiJvbk1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoIUkzZSh5LnRhcmdldCkmJnRoaXMuY2hlY2tJZkNvbHVtbkhlYWRlcih5LnRhcmdldCkpe3ZhciBDPXRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KHkudGFyZ2V0KTtpZighQylyZXR1cm47dmFyIEk9Qy5nZXRBdHRyaWJ1''@;'; put 'put ''dGUoImNvbHNwYW4iKTtDJiYobnVsbD09PUl8fCIxIj09PUkpJiYodGhpcy5wcmVzc2VkfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oQykpfX19LHtrZXk6ImFmdGVyTW91c2VEb3duVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9ZnVuY3Rpb24oKXt5LmhvdC5mb3Jj''@;'; put 'put ''ZUZ1bGxSZW5kZXI9ITAseS5ob3Qudmlldy5yZW5kZXIoKSx5LmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LEk9ZnVuY3Rpb24oX2UsUmUpe3ZhciBOZT15LmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uUmVzaXplIix5Lm5ld1NpemUsX2UsITApO3ZvaWQgMCE9PU5lJiYoeS5u''@;'; put 'put ''ZXdTaXplPU5lKSwiYWxsIj09PXkuaG90LmdldFNldHRpbmdzKCkuc3RyZXRjaEg/eS5jbGVhck1hbnVhbFNpemUoX2UpOnkuc2V0TWFudWFsU2l6ZShfZSx5Lm5ld1NpemUpLHkuc2F2ZU1hbnVhbENvbHVtbldpZHRocygpLHkuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblJlc2l6ZSIseS5u''@;'; put 'put ''ZXdTaXplLF9lLCEwKSxSZSYmQygpfTt0aGlzLmRibGNsaWNrPj0yJiYodGhpcy5zZWxlY3RlZENvbHMubGVuZ3RoPjE/KEdyKHRoaXMuc2VsZWN0ZWRDb2xzLGZ1bmN0aW9uKGNlKXtJKGNlKX0pLEMoKSk6R3IodGhpcy5zZWxlY3RlZENvbHMsZnVuY3Rpb24oY2Upe0koY2UsITApfSkpLHRo''@;'; put 'put ''aXMuZGJsY2xpY2s9MCx0aGlzLmF1dG9yZXNpemVUaW1lb3V0PW51bGx9fSx7a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcztYYSh5LnRhcmdldCwibWFudWFsQ29sdW1uUmVzaXplciIpJiYodGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVu''@;'; put 'put ''dFRIKSx0aGlzLnNldHVwR3VpZGVQb3NpdGlvbigpLHRoaXMucHJlc3NlZD0hMCxudWxsPT09dGhpcy5hdXRvcmVzaXplVGltZW91dCYmKHRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBDLmFmdGVyTW91c2VEb3duVGltZW91dCgpfSw1MDApLHRo''@;'; put 'put ''aXMuaG90Ll9yZWdpc3RlclRpbWVvdXQodGhpcy5hdXRvcmVzaXplVGltZW91dCkpLHRoaXMuZGJsY2xpY2srPTEsdGhpcy5zdGFydFg9eS5wYWdlWCx0aGlzLm5ld1NpemU9dGhpcy5zdGFydFdpZHRoKX19LHtrZXk6Im9uTW91c2VNb3ZlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlz''@;'; put 'put ''O2lmKHRoaXMucHJlc3NlZCl7dmFyIEk9KHkucGFnZVgtdGhpcy5zdGFydFgpKnRoaXMuaG90LmdldERpcmVjdGlvbkZhY3RvcigpO3RoaXMuY3VycmVudFdpZHRoPXRoaXMuc3RhcnRXaWR0aCtJLEdyKHRoaXMuc2VsZWN0ZWRDb2xzLGZ1bmN0aW9uKGope0MubmV3U2l6ZT1DLnNldE1hbnVh''@;'; put 'put ''bFNpemUoaixDLmN1cnJlbnRXaWR0aCl9KSx0aGlzLnJlZnJlc2hIYW5kbGVQb3NpdGlvbigpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKX19fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPWZ1bmN0aW9uKCl7eS5ob3QuZm9yY2VGdWxsUmVuZGVy''@;'; put 'put ''PSEwLHkuaG90LnZpZXcucmVuZGVyKCkseS5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxJPWZ1bmN0aW9uKF9lLFJlKXt5LmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uUmVzaXplIix5Lm5ld1NpemUsX2UsITEpLFJlJiZDKCkseS5zYXZlTWFudWFsQ29sdW1uV2lkdGhzKCks''@;'; put 'put ''eS5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uUmVzaXplIix5Lm5ld1NpemUsX2UsITEpfTt0aGlzLnByZXNzZWQmJih0aGlzLmhpZGVIYW5kbGVBbmRHdWlkZSgpLHRoaXMucHJlc3NlZD0hMSx0aGlzLm5ld1NpemUhPT10aGlzLnN0YXJ0V2lkdGgmJih0aGlzLnNlbGVjdGVkQ29scy5sZW5n''@;'; put 'put ''dGg+MT8oR3IodGhpcy5zZWxlY3RlZENvbHMsZnVuY3Rpb24oY2Upe0koY2UpfSksQygpKTpHcih0aGlzLnNlbGVjdGVkQ29scyxmdW5jdGlvbihjZSl7SShjZSwhMCl9KSksdGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSl9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLmhvdCxJPUMucm9vdFdpbmRvdyxqPUMucm9vdEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihqLCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGNlKXtyZXR1cm4geS5vbk1vdXNlT3ZlcihjZSl9KSx0aGlzLmV2ZW50''@;'; put 'put ''TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGosIm1vdXNlZG93biIsZnVuY3Rpb24oY2Upe3JldHVybiB5Lm9uTW91c2VEb3duKGNlKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSSwibW91c2Vtb3ZlIixmdW5jdGlvbihjZSl7cmV0dXJuIHkub25Nb3VzZU1vdmUoY2Up''@;'; put 'put ''fSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSl9fSx7a2V5OiJvbk1vZGlmeUNvbFdpZHRoIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXk7aWYodGhpcy5lbmFibGVkKXt2YXIgaj10aGlz''@;'; put 'put ''LmhvdC50b1BoeXNpY2FsQ29sdW1uKEMpLGNlPXRoaXMuY29sdW1uV2lkdGhzTWFwLmdldFZhbHVlQXRJbmRleChqKTt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0NuZV0mJmNlJiYoST1jZSl9cmV0dXJuIEl9fSx7a2V5OiJvbkJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oeSxDKXt2YXIgST10aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZUF0SW5kZXgoQyk7cmV0dXJuIG51bGw9PT1JJiYoST15KSxJfX0se2tleToib25CZWZvcmVDb2x1bW5SZXNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qudmlldy5fd3Qud3RWaWV3cG9ydC5yZXNldEhh''@;'; put 'put ''c092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7Q00odDkoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ25lfX0se2tl''@;'; put 'put ''eToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTMwfX1dKSxofShHcyk7ZnVuY3Rpb24gZURlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZh''@;'; put 'put ''bHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIHdSPSJweCIsd2R0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gQWR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuc3RhdGU9MH1yZXR1cm4gZnVuY3Rpb24geWR0KGQsZyxoKXtnJiZlRGUoZC5wcm90b3R5cGUsZyksaCYmZURlKGQsaCksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImFwcGVuZFRvIix2YWx1ZTpmdW5jdGlvbihoKXtoLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuc3RhdGU9Mn19LHtrZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpezA9PT10aGlzLnN0YXRlJiYodGhp''@;'; put 'put ''cy5fZWxlbWVudD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5zdGF0ZT0xKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0FwcGVuZGVkKCkmJnRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlz''@;'; put 'put ''Ll9lbGVtZW50KSx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5zdGF0ZT0wfX0se2tleToiaXNBcHBlbmRlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRoaXMuc3RhdGV9fSx7a2V5OiJpc0J1aWx0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlPj0xfX0se2tleToi''@;'; put 'put ''c2V0UG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgsdil7dm9pZCAwIT09aCYmKHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wPWgrd1IpLHZvaWQgMCE9PXYmJih0aGlzLl9lbGVtZW50LnN0eWxlLmxlZnQ9dit3Uil9fSx7a2V5OiJnZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57''@;'; put 'put ''dG9wOnRoaXMuX2VsZW1lbnQuc3R5bGUudG9wP3BhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wLDEwKTowLGxlZnQ6dGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0P3BhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUubGVmdCwxMCk6MH19fSx7a2V5OiJzZXRTaXplIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihoLHYpe2gmJih0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoPWgrd1IpLHYmJih0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD12K3dSKX19LHtrZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/cGFyc2VJbnQo''@;'; put 'put ''dGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aCwxMCk6MCxoZWlnaHQ6dGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQsMTApOjB9fX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe2gmJih0aGlzLl9lbGVtZW50''@;'; put 'put ''LnN0eWxlLm1hcmdpblRvcD1oK3dSKSx2JiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0PXYrd1IpfX0se2tleToiZ2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0b3A6dGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5z''@;'; put 'put ''dHlsZS5tYXJnaW5Ub3AsMTApOjAsbGVmdDp0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0LDEwKTowfX19XSksZH0oKTtjb25zdCByRGU9d2R0O2Z1bmN0aW9uIHdnZShkKXtyZXR1cm4od2dlPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJv''@;'; put 'put ''dG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gYmR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaURlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0''@;'; put 'put ''aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24ga25lKCl7cmV0dXJuIGtuZT0idW5kZWZpbmVk''@;'; put 'put ''IiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9Q2R0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxrbmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIENkdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9YlIoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gYmdlKGQsZyl7cmV0''@;'; put 'put ''dXJuKGJnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIE1kdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXdnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gRWR0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVy''@;'; put 'put ''cm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gYlIoZCl7cmV0dXJuKGJSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIElkdD1mdW5jdGlvbihkKXshZnVuY3Rpb24ga2R0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVz''@;'; put 'put ''dCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3''@;'; put 'put ''cml0YWJsZTohMX0pLGcmJmJnZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFNkdChkKXt2YXIgZz1mdW5jdGlvbiB4ZHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHks''@;'; put 'put ''dj1iUihkKTtpZihnKXt2YXIgQz1iUih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gTWR0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIGJkdCh0aGlzLGgpLGcu''@;'; put 'put ''YXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBfZHQoZCxnLGgpe2cmJmlEZShkLnByb3RvdHlwZSxnKSxoJiZpRGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7a25lKGJSKGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksUDAodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodCIpfX1dKSxofShyRGUpO2NvbnN0IERkdD1JZHQ7ZnVuY3Rpb24gX2dlKGQpe3JldHVybihfZ2U9ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5''@;'; put 'put ''cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBMZHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvRGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2gr''@;'; put 'put ''Kyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBTbmUoKXtyZXR1cm4gU25lPSJ1bmRlZmluZWQiIT10''@;'; put 'put ''eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1SZHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aDwzP2c6dik6Qy52YWx1ZX19LFNuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUmR0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1fUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBDZ2UoZCxnKXtyZXR1cm4o''@;'; put 'put ''Q2dlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gRmR0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09X2dlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykp''@;'; put 'put ''cmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBIZHQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3Io''@;'; put 'put ''InRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBfUihkKXtyZXR1cm4oX1I9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgamR0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBCZHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp''@;'; put 'put ''dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSksZyYmQ2dlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gUGR0KGQpe3ZhciBnPWZ1bmN0aW9uIE5kdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PV9S''@;'; put 'put ''KGQpO2lmKGcpe3ZhciBDPV9SKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBGZHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gTGR0KHRoaXMsaCksZy5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIE9kdChkLGcsaCl7ZyYmb0RlKGQucHJvdG90eXBlLGcpLGgmJm9EZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXtT''@;'; put 'put ''bmUoX1IoaC5wcm90b3R5cGUpLCJidWlsZCIsdGhpcykuY2FsbCh0aGlzKSxQMCh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5lIil9fV0pLGh9KHJEZSk7Y29uc3QgWmR0PWpkdDtmdW5jdGlvbiBrZ2UoZCl7cmV0dXJuKGtnZT0iZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8i''@;'; put 'put ''c3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGFEZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGtNKCl7cmV0dXJuIGtNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1XZHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3du''@;'; put 'put ''UHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGtNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBXZHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh''@;'; put 'put ''bGwoZCxnKSYmbnVsbCE9PShkPW45KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFNnZShkLGcpe3JldHVybihTZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5j''@;'; put 'put ''dGlvbiBRZHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1rZ2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7''@;'; put 'put ''cmV0dXJuIE1nZShkKX1mdW5jdGlvbiBNZ2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIG45KGQpe3JldHVybihuOT1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfVZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVSb3dNb3ZlIiksVm8uZ2V0U2lu''@;'; put 'put ''Z2xldG9uKCkucmVnaXN0ZXIoImFmdGVyUm93TW92ZSIpO3ZhciBFZ2U9Im1hbnVhbFJvd01vdmUiLG5iPW5ldyBXZWFrTWFwLGxEZT0iaHRfX21hbnVhbFJvd01vdmUiLE1uZT0ic2hvdy11aSIseGdlPSJvbi1tb3ZpbmctLXJvd3MiLFRnZT0iYWZ0ZXItc2VsZWN0aW9uLS1yb3dzIixLZHQ9''@;'; put 'put ''ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFlkdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo''@;'; put 'put ''ZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZTZ2UoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBVZHQoZCl7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gSmR0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUu''@;'; put 'put ''dmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9bjkoZCk7aWYoZyl7dmFyIEM9bjkodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVj''@;'; put 'put ''dCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFFkdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gemR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90''@;'; put 'put ''IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCkseT1nLmNhbGwodGhpcyx2KSxuYi5zZXQoTWdlKHkpLHtyb3dzVG9Nb3ZlOltdLHByZXNzZWQ6dm9pZCAwLHRhcmdldDp7ZXZlbnRQYWdlWTp2b2lkIDAsY29vcmRzOnZvaWQgMCxURDp2b2lkIDAscm93OnZvaWQgMH0sY2Fj''@;'; put 'put ''aGVkRHJvcEluZGV4OnZvaWQgMH0pLHkuZXZlbnRNYW5hZ2VyPW5ldyBQMShNZ2UoeSkpLHkuYmFja2xpZ2h0PW5ldyBEZHQodikseS5ndWlkZWxpbmU9bmV3IFpkdCh2KSx5fXJldHVybiBmdW5jdGlvbiBHZHQoZCxnLGgpe2cmJmFEZShkLnByb3RvdHlwZSxnKSxoJiZhRGUoZCxoKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtFZ2VdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5''@;'; put 'put ''PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZU92ZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5KCl9KSx0aGlzLmFkZEhvb2soImFm''@;'; put 'put ''dGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckxvYWREYXRhLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYnVpbGRQbHVnaW5VSSgpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSxQMCh0aGlzLmhvdC5yb290RWxlbWVudCxsRGUpLGtNKG45KGgucHJvdG90eXBlKSwiZW5h''@;'; put 'put ''YmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKSxrTShuOShoLnByb3RvdHlwZSksInVwZGF0ZVBs''@;'; put 'put ''dWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dWwodGhpcy5ob3Qucm9vdEVsZW1lbnQsbERlKSx0aGlzLnVucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmJhY2tsaWdodC5kZXN0cm95KCksdGhpcy5ndWlkZWxpbmUuZGVzdHJveSgp''@;'; put 'put ''LGtNKG45KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHRoaXMubW92ZVJvd3MoW3ldLEMpfX0se2tleToibW92ZVJvd3MiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9bmIu''@;'; put 'put ''Z2V0KHRoaXMpLGo9SS5jYWNoZWREcm9wSW5kZXgsY2U9dGhpcy5pc01vdmVQb3NzaWJsZSh5LEMpLF9lPXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSb3dNb3ZlIix5LEMsaixjZSk7aWYoSS5jYWNoZWREcm9wSW5kZXg9dm9pZCAwLCExIT09X2Upe2NlJiZ0aGlzLmhvdC5yb3dJbmRleE1h''@;'; put 'put ''cHBlci5tb3ZlSW5kZXhlcyh5LEMpO3ZhciBSZT1jZSYmdGhpcy5pc1Jvd09yZGVyQ2hhbmdlZCh5LEMpO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIix5LEMsaixjZSxSZSksUmV9fX0se2tleToiZHJhZ1JvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kcmFnUm93cyhbeV0sQyl9fSx7a2V5OiJkcmFnUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmNvdW50RmluYWxJbmRleCh5LEMpO3JldHVybiBuYi5nZXQodGhpcykuY2FjaGVkRHJvcEluZGV4PUMsdGhpcy5tb3ZlUm93cyh5LEkpfX0se2tleToiaXNNb3ZlUG9zc2li''@;'; put 'put ''bGUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxqPXkubGVuZ3RoK0M+SSxjZT1DPDAsX2U9eS5zb21lKGZ1bmN0aW9uKE5lKXtyZXR1cm4gTmU8MH0pLFJlPXkuc29tZShmdW5jdGlvbihOZSl7''@;'; put 'put ''cmV0dXJuIE5lPj1JfSk7cmV0dXJuIShqfHxjZXx8X2V8fFJlKX19LHtrZXk6ImlzUm93T3JkZXJDaGFuZ2VkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3JldHVybiB5LnNvbWUoZnVuY3Rpb24oSSxqKXtyZXR1cm4gSS1qIT09Q30pfX0se2tleToiY291bnRGaW5hbEluZGV4Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbih5LEMpe3ZhciBJPUV1KHksZnVuY3Rpb24oaixjZSl7cmV0dXJuIGNlPEMmJihqKz0xKSxqfSwwKTtyZXR1cm4gQy1JfX0se2tleToiZ2V0Um93c0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsaj0wLGNlPXk7Y2U8PUM7''@;'; put 'put ''Y2UrKyl7dmFyIF9lPUkuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChjZSk7bnVsbCE9PV9lJiYoais9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5nZXRSb3dIZWlnaHQoX2UpfHwyMyl9cmV0dXJuIGp9fSx7a2V5OiJtb3ZlQnlTZXR0aW5nc09yTG9hZCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0VnZV07aWYoQXJyYXkuaXNBcnJheSh5KSl0aGlzLm1vdmVSb3dzKHksMCk7ZWxzZSBpZih2b2lkIDAhPT15KXt2YXIgQz10aGlzLnBlcnNpc3RlbnRTdGF0ZUxvYWQoKTtDLmxlbmd0aCYmdGhpcy5tb3ZlUm93cyhDLDApfX19LHtrZXk6''@;'; put 'put ''ImlzRml4ZWRSb3dUb3AiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB5PHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wfX0se2tleToiaXNGaXhlZFJvd0JvdHRvbSIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHk+dGhpcy5ob3QuY291bnRSb3dzKCktMS10aGlzLmhvdC5n''@;'; put 'put ''ZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbX19LHtrZXk6InBlcnNpc3RlbnRTdGF0ZVNhdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLCJtYW51YWxSb3dNb3ZlIix0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVz''@;'; put 'put ''U2VxdWVuY2UoKSl9fSx7a2V5OiJwZXJzaXN0ZW50U3RhdGVMb2FkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXt9O3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlTG9hZCIsIm1hbnVhbFJvd01vdmUiLHkpLHkudmFsdWU/eS52YWx1ZTpbXX19LHtrZXk6InByZXBh''@;'; put 'put ''cmVSb3dzVG9Nb3ZpbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxDPVtdO2lmKCF5KXJldHVybiBDO3ZhciBJPXkuZnJvbSxqPXkudG87cmV0dXJuIHJhKE1hdGgubWluKEkucm93LGoucm93KSxNYXRoLm1heChJLnJvdyxqLnJvdyks''@;'; put 'put ''ZnVuY3Rpb24oUmUpe0MucHVzaChSZSl9KSxDfX0se2tleToicmVmcmVzaFBvc2l0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1uYi5nZXQodGhpcyksQz15LnRhcmdldC5jb29yZHMsST10aGlzLmhvdC52aWV3LmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCksaj10aGlzLmhvdC52aWV3''@;'; put 'put ''LmdldExhc3RGdWxseVZpc2libGVSb3coKSxjZT10aGlzLmhvdC5jb3VudFJvd3MoKTt0aGlzLmlzRml4ZWRSb3dUb3AoQy5yb3cpJiZJPjAmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEktMSwtMSkp''@;'; put 'put ''LHRoaXMuaXNGaXhlZFJvd0JvdHRvbShDLnJvdykmJmo8Y2UmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGorMSwxKSx2b2lkIDAsITApO3ZhciBfZT10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLFJl''@;'; put 'put ''PXkudGFyZ2V0LlRELE5lPXp1KHRoaXMuaG90LnJvb3RFbGVtZW50KSxLZT10aGlzLmhvdC52aWV3LlRIRUFELm9mZnNldEhlaWdodCt0aGlzLmdldFJvd3NIZWlnaHQoMCxDLnJvdy0xKSxodD15LnRhcmdldC5ldmVudFBhZ2VZLU5lLnRvcCtfZS5ob2xkZXIuc2Nyb2xsVG9wLEJ0PV9lLmhp''@;'; put 'put ''ZGVyLm9mZnNldEhlaWdodCwkdD1fZS5UQk9EWS5vZmZzZXRUb3AsaG49dGhpcy5iYWNrbGlnaHQuZ2V0T2Zmc2V0KCkudG9wLERuPXRoaXMuYmFja2xpZ2h0LmdldFNpemUoKS5oZWlnaHQ7dGhpcy5pc0ZpeGVkUm93VG9wKEMucm93KSYmKEtlKz1fZS5ob2xkZXIuc2Nyb2xsVG9wKSxDLnJv''@;'; put 'put ''dzwwP3kudGFyZ2V0LnJvdz1JPjA/SS0xOkk6UmUub2Zmc2V0SGVpZ2h0LzIrS2U8PWh0Pyh5LnRhcmdldC5yb3c9Qy5yb3crMSxLZSs9MD09PUMucm93P1JlLm9mZnNldEhlaWdodC0xOlJlLm9mZnNldEhlaWdodCk6eS50YXJnZXQucm93PUMucm93O3ZhciBpcj1odCxwcj1LZTtodCtEbito''@;'; put 'put ''bj49QnQ/aXI9QnQtRG4taG46aHQraG48JHQmJihpcj0kdCtNYXRoLmFicyhobikpLEtlPj1CdC0xJiYocHI9QnQtMSksdGhpcy5iYWNrbGlnaHQuc2V0UG9zaXRpb24oaXIpLHRoaXMuZ3VpZGVsaW5lLnNldFBvc2l0aW9uKHByKX19LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vtb3ZlIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbk1vdXNlTW92ZShJKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIoQywibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vdXNlVXAoKX0pfX0se2tleToidW5yZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmV2ZW50TWFuYWdlci5jbGVhcigpfX0se2tleToib25CZWZvcmVPbkNlbGxNb3VzZURvd24iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHksQyxJLGope3ZhciBjZT10aGlzLmhvdC52aWV3Ll93dCxfZT1jZS53dFRhYmxlLFJlPWNlLnd0Vmlld3BvcnQsTmU9dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpLEtlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksaHQ9bmIu''@;'; put 'put ''Z2V0KHRoaXMpO2lmKCFLZXx8IU5lfHxodC5wcmVzc2VkfHwwIT09eS5idXR0b24pcmV0dXJuIGh0LnByZXNzZWQ9ITEsaHQucm93c1RvTW92ZS5sZW5ndGg9MCx2b2lkIHVsKHRoaXMuaG90LnJvb3RFbGVtZW50LFt4Z2UsTW5lXSk7dmFyIEJ0PXRoaXMuZ3VpZGVsaW5lLmlzQnVpbHQoKSYm''@;'; put 'put ''IXRoaXMuZ3VpZGVsaW5lLmlzQXBwZW5kZWQoKSwkdD10aGlzLmJhY2tsaWdodC5pc0J1aWx0KCkmJiF0aGlzLmJhY2tsaWdodC5pc0FwcGVuZGVkKCk7QnQmJiR0JiYodGhpcy5ndWlkZWxpbmUuYXBwZW5kVG8oX2UuaGlkZXIpLHRoaXMuYmFja2xpZ2h0LmFwcGVuZFRvKF9lLmhpZGVyKSk7''@;'; put 'put ''dmFyIGhuPUtlLmZyb20sRG49S2UudG8saXI9TWF0aC5taW4oaG4ucm93LERuLnJvdykscHI9TWF0aC5tYXgoaG4ucm93LERuLnJvdyk7aWYoQy5jb2w8MCYmQy5yb3c+PWlyJiZDLnJvdzw9cHIpe2oucm93PSEwLGh0LnByZXNzZWQ9ITAsaHQudGFyZ2V0LmV2ZW50UGFnZVk9eS5wYWdlWSxo''@;'; put 'put ''dC50YXJnZXQuY29vcmRzPUMsaHQudGFyZ2V0LlREPUksaHQucm93c1RvTW92ZT10aGlzLnByZXBhcmVSb3dzVG9Nb3ZpbmcoKTt2YXIgRXI9X2UuaG9sZGVyLnNjcm9sbExlZnQrUmUuZ2V0Um93SGVhZGVyV2lkdGgoKTt0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbihudWxsLEVyKSx0aGlz''@;'; put 'put ''LmJhY2tsaWdodC5zZXRTaXplKF9lLmhpZGVyLm9mZnNldFdpZHRoLUVyLHRoaXMuZ2V0Um93c0hlaWdodChpcixwcikpLHRoaXMuYmFja2xpZ2h0LnNldE9mZnNldCgtMSoodGhpcy5nZXRSb3dzSGVpZ2h0KGlyLEMucm93LTEpK3kub2Zmc2V0WSksbnVsbCksUDAodGhpcy5ob3Qucm9vdEVs''@;'; put 'put ''ZW1lbnQseGdlKSx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX1lbHNlIHVsKHRoaXMuaG90LnJvb3RFbGVtZW50LFRnZSksaHQucHJlc3NlZD0hMSxodC5yb3dzVG9Nb3ZlLmxlbmd0aD0wfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPW5iLmdldCh0aGlzKTtp''@;'; put 'put ''ZihDLnByZXNzZWQpe2lmKHkudGFyZ2V0PT09dGhpcy5iYWNrbGlnaHQuZWxlbWVudCl7dmFyIEk9dGhpcy5iYWNrbGlnaHQuZ2V0U2l6ZSgpLmhlaWdodDt0aGlzLmJhY2tsaWdodC5zZXRTaXplKG51bGwsMCksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0''@;'; put 'put ''aW9uKG51bGwsSSl9KX1DLnRhcmdldC5ldmVudFBhZ2VZPXkucGFnZVksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9fX0se2tleToib25CZWZvcmVPbkNlbGxNb3VzZU92ZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope3ZhciBjZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLF9l''@;'; put 'put ''PW5iLmdldCh0aGlzKTshY2V8fCFfZS5wcmVzc2VkfHwoX2Uucm93c1RvTW92ZS5pbmRleE9mKEMucm93KT4tMT91bCh0aGlzLmhvdC5yb290RWxlbWVudCxNbmUpOlAwKHRoaXMuaG90LnJvb3RFbGVtZW50LE1uZSksai5yb3c9ITAsai5jb2x1bW49ITAsai5jZWxsPSEwLF9lLnRhcmdldC5j''@;'; put 'put ''b29yZHM9QyxfZS50YXJnZXQuVEQ9SSl9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9bmIuZ2V0KHRoaXMpLEM9eS50YXJnZXQucm93LEk9eS5yb3dzVG9Nb3ZlLmxlbmd0aDtpZih5LnByZXNzZWQ9ITEseS5iYWNrbGlnaHRIZWlnaHQ9MCx1bCh0aGlzLmhvdC5y''@;'; put 'put ''b290RWxlbWVudCxbeGdlLE1uZSxUZ2VdKSx0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJlAwKHRoaXMuaG90LnJvb3RFbGVtZW50LFRnZSksIShJPDF8fHZvaWQgMD09PUMpKXt2YXIgY2U9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5LnJvd3NUb01vdmVbMF0p''@;'; put 'put ''LF9lPXRoaXMuZHJhZ1Jvd3MoeS5yb3dzVG9Nb3ZlLEMpO2lmKHkucm93c1RvTW92ZS5sZW5ndGg9MCwhMD09PV9lKXt0aGlzLnBlcnNpc3RlbnRTdGF0ZVNhdmUoKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCk7dmFyIFJlPXRoaXMuaG90''@;'; put 'put ''LnRvVmlzdWFsUm93KGNlKTt0aGlzLmhvdC5zZWxlY3RSb3dzKFJlLFJlK0ktMSl9fX19LHtrZXk6Im9uQWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxqPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQu''@;'; put 'put ''Z2V0Um93SGVhZGVyV2lkdGgoKSt5LmhvbGRlci5zY3JvbGxMZWZ0O3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwsaiksdGhpcy5iYWNrbGlnaHQuc2V0U2l6ZSh5LmhpZGVyLm9mZnNldFdpZHRoLWopfX0se2tleToiYnVpbGRQbHVnaW5VSSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlz''@;'; put 'put ''LmJhY2tsaWdodC5idWlsZCgpLHRoaXMuZ3VpZGVsaW5lLmJ1aWxkKCl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJhY2tsaWdodC5kZXN0''@;'; put 'put ''cm95KCksdGhpcy5ndWlkZWxpbmUuZGVzdHJveSgpLGtNKG45KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEVnZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIDE0MH19XSksaH0oR3MpO2Z1bmN0aW9uIElnZShkKXtyZXR1cm4oSWdlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gc0RlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51''@;'; put 'put ''bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gU00oKXtyZXR1cm4gU009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0''@;'; put 'put ''LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PWU0dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sU00uYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpfWZ1bmN0aW9uIGU0dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9cjkoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gRGdlKGQsZyl7cmV0dXJuKERnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNl''@;'; put 'put ''dFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHI0dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PUlnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gTGdlKGQpfWZ1bmN0aW9uIExnZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNl''@;'; put 'put ''ZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gcjkoZCl7cmV0dXJuKHI5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3Rv''@;'; put 'put ''dHlwZU9mKGgpfSkoZCl9dmFyIGNEZSxmRGUsaERlLGREZSxFbmU9Im1hbnVhbFJvd1Jlc2l6ZSIsdURlPSJtYW51YWxSb3dIZWlnaHRzIixPZ2U9bmV3IFdlYWtNYXAsYTR0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiB0NHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9''@;'; put 'put ''fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRGdlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gbjR0KGQpe3ZhciBnPWZ1bmN0aW9uIGk0dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNo''@;'; put 'put ''KGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXI5KGQpO2lmKGcpe3ZhciBDPXI5KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByNHQodGhpcyx5''@;'; put 'put ''KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7IWZ1bmN0aW9uICRkdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpO3ZhciBDPSh5PWcuY2FsbCh0aGlzLHYpKS5ob3Qucm9v''@;'; put 'put ''dERvY3VtZW50O3JldHVybiB5LmN1cnJlbnRUSD1udWxsLHkuY3VycmVudFJvdz1udWxsLHkuc2VsZWN0ZWRSb3dzPVtdLHkuY3VycmVudEhlaWdodD1udWxsLHkubmV3U2l6ZT1udWxsLHkuc3RhcnRZPW51bGwseS5zdGFydEhlaWdodD1udWxsLHkuc3RhcnRPZmZzZXQ9bnVsbCx5LmhhbmRs''@;'; put 'put ''ZT1DLmNyZWF0ZUVsZW1lbnQoIkRJViIpLHkuZ3VpZGU9Qy5jcmVhdGVFbGVtZW50KCJESVYiKSx5LmV2ZW50TWFuYWdlcj1uZXcgUDEoTGdlKHkpKSx5LnByZXNzZWQ9bnVsbCx5LmRibGNsaWNrPTAseS5hdXRvcmVzaXplVGltZW91dD1udWxsLHkucm93SGVpZ2h0c01hcD12b2lkIDAsT2dl''@;'; put 'put ''LnNldChMZ2UoeSkse2NvbmZpZzp2b2lkIDB9KSxQMCh5LmhhbmRsZSwibWFudWFsUm93UmVzaXplciIpLFAwKHkuZ3VpZGUsIm1hbnVhbFJvd1Jlc2l6ZXJHdWlkZSIpLHl9cmV0dXJuIGZ1bmN0aW9uIHFkdChkLGcsaCl7ZyYmc0RlKGQucHJvdG90eXBlLGcpLGgmJnNEZShkLGgpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpbmxpbmVEaXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifX0se2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLmhvdC5nZXRTZXR0aW5ncygpW0VuZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnJvd0hlaWdodHNNYXA9bmV3IFZ3LHRoaXMucm93SGVpZ2h0c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHkub25NYXBJbml0KCl9KSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUsdGhpcy5yb3dIZWlnaHRzTWFwKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbk1vZGlmeVJvd0hl''@;'; put 'put ''aWdodChDLEkpfSksdGhpcy5iaW5kRXZlbnRzKCksU00ocjkoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksU00o''@;'; put 'put ''cjkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe09nZS5nZXQodGhpcykuY29uZmlnPXRoaXMucm93SGVpZ2h0c01hcC5nZXRWYWx1ZXMoKSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51''@;'; put 'put ''bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksU00ocjkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2F2ZU1hbnVhbFJvd0hlaWdodHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNh''@;'; put 'put ''dmUiLHVEZSx0aGlzLnJvd0hlaWdodHNNYXAuZ2V0VmFsdWVzKCkpfX0se2tleToibG9hZE1hbnVhbFJvd0hlaWdodHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIix1RGUseSkseS52YWx1ZX19LHtrZXk6''@;'; put 'put ''InNldE1hbnVhbFNpemUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSxqPU1hdGgubWF4KEMsbWtlLkRFRkFVTFRfSEVJR0hUKTtyZXR1cm4gdGhpcy5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleChJLGopLGp9fSx7a2V5OiJzZXR1cEhh''@;'; put 'put ''bmRsZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO3RoaXMuY3VycmVudFRIPXk7dmFyIEk9dGhpcy5ob3QudmlldyxqPUkuX3d0LGNlPWoud3RUYWJsZS5nZXRDb29yZHModGhpcy5jdXJyZW50VEgpLF9lPWNlLnJvdztpZighKF9lPDApKXt2YXIgQnQsUmU9dzIodGhp''@;'; put 'put ''cy5jdXJyZW50VEgpLE5lPXRoaXMuY3VycmVudFRILmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEtlPV9lPGouZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksaHQ9X2U+PUkuY291bnROb3RIaWRkZW5Sb3dJbmRleGVzKDAsMSktai5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKTtLZT9C''@;'; put 'put ''dD1qLnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKHRoaXMuY3VycmVudFRILGNlLnJvdyxjZS5jb2wpOmh0JiYoQnQ9ai53dE92ZXJsYXlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQ''@;'; put 'put ''b3NpdGlvbih0aGlzLmN1cnJlbnRUSCxjZS5yb3csY2UuY29sKSksQnR8fChCdD1qLnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKHRoaXMuY3VycmVudFRILGNlLnJvdyxjZS5jb2wpKSx0aGlzLmN1cnJlbnRSb3c9dGhpcy5ob3Qucm93SW5k''@;'; put 'put ''ZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChfZSksdGhpcy5zZWxlY3RlZFJvd3M9W107dmFyICR0PXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpO3RoaXMuaG90LnNl''@;'; put 'put ''bGVjdGlvbi5pc1NlbGVjdGVkKCkmJiR0JiZHcih0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oRG4pe3JhKERuLmdldFRvcFN0YXJ0Q29ybmVyKCkucm93LERuLmdldEJvdHRvbVN0YXJ0Q29ybmVyKCkucm93LGZ1bmN0aW9uKEVyKXtDLnNlbGVjdGVkUm93cy5pbmNsdWRl''@;'; put 'put ''cyhFcil8fEMuc2VsZWN0ZWRSb3dzLnB1c2goRXIpfSl9KSx0aGlzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRSb3cpfHwodGhpcy5zZWxlY3RlZFJvd3M9W3RoaXMuY3VycmVudFJvd10pLHRoaXMuc3RhcnRPZmZzZXQ9QnQudG9wLTYsdGhpcy5zdGFydEhlaWdodD1wYXJz''@;'; put 'put ''ZUludChOZS5oZWlnaHQsMTApLHRoaXMuaGFuZGxlLnN0eWxlLnRvcD0iIi5jb25jYXQodGhpcy5zdGFydE9mZnNldCt0aGlzLnN0YXJ0SGVpZ2h0LCJweCIpLHRoaXMuaGFuZGxlLnN0eWxlW3RoaXMuaW5saW5lRGlyXT0iIi5jb25jYXQoQnQuc3RhcnQsInB4IiksdGhpcy5oYW5kbGUuc3R5''@;'; put 'put ''bGUud2lkdGg9IiIuY29uY2F0KFJlLCJweCIpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGFuZGxlKX19fSx7a2V5OiJyZWZyZXNoSGFuZGxlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGUuc3R5bGUudG9wPSIiLmNvbmNhdCh0aGlzLnN0YXJ0''@;'; put 'put ''T2Zmc2V0K3RoaXMuY3VycmVudEhlaWdodCwicHgiKX19LHtrZXk6InNldHVwR3VpZGVQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1wYXJzZUludCh3Mih0aGlzLmhhbmRsZSksMTApLEM9cGFyc2VJbnQodGhpcy5oYW5kbGUuc3R5bGVbdGhpcy5pbmxpbmVEaXJdLDEwKSt5LEk9''@;'; put 'put ''cGFyc2VJbnQodGhpcy5ob3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRXaWR0aCgwKSwxMCk7UDAodGhpcy5oYW5kbGUsImFjdGl2ZSIpLFAwKHRoaXMuZ3VpZGUsImFjdGl2ZSIpLHRoaXMuZ3VpZGUuc3R5bGUudG9wPXRoaXMuaGFuZGxlLnN0eWxlLnRvcCx0aGlzLmd1aWRlLnN0eWxl''@;'; put 'put ''W3RoaXMuaW5saW5lRGlyXT0iIi5jb25jYXQoQywicHgiKSx0aGlzLmd1aWRlLnN0eWxlLndpZHRoPSIiLmNvbmNhdChJLXksInB4IiksdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5ndWlkZSl9fSx7a2V5OiJyZWZyZXNoR3VpZGVQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLmd1aWRlLnN0eWxlLnRvcD10aGlzLmhhbmRsZS5zdHlsZS50b3B9fSx7a2V5OiJoaWRlSGFuZGxlQW5kR3VpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dWwodGhpcy5oYW5kbGUsImFjdGl2ZSIpLHVsKHRoaXMuZ3VpZGUsImFjdGl2ZSIpfX0se2tleToiY2hlY2tJZlJvd0hlYWRl''@;'; put 'put ''ciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEMsSTtyZXR1cm4gRHYoeSxbIlRIIl0sdGhpcy5ob3Qucm9vdEVsZW1lbnQpJiYiVEJPRFkiPT09KG51bGw9PT0oQz15LnBhcmVudE5vZGUpfHx2b2lkIDA9PT1DfHxudWxsPT09KEk9Qy5wYXJlbnROb2RlKXx8dm9pZCAwPT09ST92b2lkIDA6SS50''@;'; put 'put ''YWdOYW1lKX19LHtrZXk6ImdldENsb3Nlc3RUSFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIlRBQkxFIiE9PXkudGFnTmFtZT8iVEgiPT09eS50YWdOYW1lP3k6dGhpcy5nZXRDbG9zZXN0VEhQYXJlbnQoeS5wYXJlbnROb2RlKTpudWxsfX0se2tleToiZ2V0QWN0dWFsUm93SGVp''@;'; put 'put ''Z2h0Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFJvd0hlaWdodCh5KTtyZXR1cm4gdm9pZCAwIT09QyYmdGhpcy5uZXdTaXplPEM/Qzp0aGlzLm5ld1NpemV9fSx7a2V5OiJvbk1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoIUkz''@;'; put 'put ''ZSh5LnRhcmdldCkmJnRoaXMuY2hlY2tJZlJvd0hlYWRlcih5LnRhcmdldCkpe3ZhciBDPXRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KHkudGFyZ2V0KTtDJiYodGhpcy5wcmVzc2VkfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oQykpfX19LHtrZXk6ImFmdGVyTW91c2VEb3duVGltZW91dCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9ZnVuY3Rpb24oKXt5LmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAseS5ob3Qudmlldy5yZW5kZXIoKSx5LmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LEk9ZnVuY3Rpb24oX2UsUmUpe3ZhciBOZT15LmhvdC5ydW5Ib29rcygiYmVm''@;'; put 'put ''b3JlUm93UmVzaXplIix5LmdldEFjdHVhbFJvd0hlaWdodChfZSksX2UsITApO3ZvaWQgMCE9PU5lJiYoeS5uZXdTaXplPU5lKSx5LnNldE1hbnVhbFNpemUoX2UseS5uZXdTaXplKSx5LmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dSZXNpemUiLHkuZ2V0QWN0dWFsUm93SGVpZ2h0KF9lKSxfZSwh''@;'; put 'put ''MCksUmUmJkMoKX07dGhpcy5kYmxjbGljaz49MiYmKHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aD4xPyhHcih0aGlzLnNlbGVjdGVkUm93cyxmdW5jdGlvbihjZSl7SShjZSl9KSxDKCkpOkdyKHRoaXMuc2VsZWN0ZWRSb3dzLGZ1bmN0aW9uKGNlKXtJKGNlLCEwKX0pKSx0aGlzLmRibGNsaWNr''@;'; put 'put ''PTAsdGhpcy5hdXRvcmVzaXplVGltZW91dD1udWxsfX0se2tleToib25Nb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7WGEoeS50YXJnZXQsIm1hbnVhbFJvd1Jlc2l6ZXIiKSYmKHRoaXMuc2V0dXBIYW5kbGVQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCksdGhpcy5zZXR1''@;'; put 'put ''cEd1aWRlUG9zaXRpb24oKSx0aGlzLnByZXNzZWQ9ITAsbnVsbD09PXRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQmJih0aGlzLmF1dG9yZXNpemVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gQy5hZnRlck1vdXNlRG93blRpbWVvdXQoKX0sNTAwKSx0aGlzLmhvdC5fcmVnaXN0''@;'; put 'put ''ZXJUaW1lb3V0KHRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQpKSx0aGlzLmRibGNsaWNrKz0xLHRoaXMuc3RhcnRZPXkucGFnZVksdGhpcy5uZXdTaXplPXRoaXMuc3RhcnRIZWlnaHQpfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7dGhpcy5wcmVzc2Vk''@;'; put 'put ''JiYodGhpcy5jdXJyZW50SGVpZ2h0PXRoaXMuc3RhcnRIZWlnaHQrKHkucGFnZVktdGhpcy5zdGFydFkpLEdyKHRoaXMuc2VsZWN0ZWRSb3dzLGZ1bmN0aW9uKEkpe0MubmV3U2l6ZT1DLnNldE1hbnVhbFNpemUoSSxDLmN1cnJlbnRIZWlnaHQpfSksdGhpcy5yZWZyZXNoSGFuZGxlUG9zaXRp''@;'; put 'put ''b24oKSx0aGlzLnJlZnJlc2hHdWlkZVBvc2l0aW9uKCkpfX0se2tleToib25Nb3VzZVVwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1mdW5jdGlvbigpe3kuaG90LmZvcmNlRnVsbFJlbmRlcj0hMCx5LmhvdC52aWV3LnJlbmRlcigpLHkuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNT''@;'; put 'put ''aXplKCEwKX0sST1mdW5jdGlvbihfZSxSZSl7eS5ob3QucnVuSG9va3MoImJlZm9yZVJvd1Jlc2l6ZSIseS5nZXRBY3R1YWxSb3dIZWlnaHQoX2UpLF9lLCExKSxSZSYmQygpLHkuc2F2ZU1hbnVhbFJvd0hlaWdodHMoKSx5LmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dSZXNpemUiLHkuZ2V0QWN0''@;'; put 'put ''dWFsUm93SGVpZ2h0KF9lKSxfZSwhMSl9O3RoaXMucHJlc3NlZCYmKHRoaXMuaGlkZUhhbmRsZUFuZEd1aWRlKCksdGhpcy5wcmVzc2VkPSExLHRoaXMubmV3U2l6ZSE9PXRoaXMuc3RhcnRIZWlnaHQmJih0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGg+MT8oR3IodGhpcy5zZWxlY3RlZFJvd3Ms''@;'; put 'put ''ZnVuY3Rpb24oY2Upe0koY2UpfSksQygpKTpHcih0aGlzLnNlbGVjdGVkUm93cyxmdW5jdGlvbihjZSl7SShjZSwhMCl9KSksdGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSl9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10''@;'; put 'put ''aGlzLmhvdCxJPUMucm9vdEVsZW1lbnQsaj1DLnJvb3RXaW5kb3c7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGNlKXtyZXR1cm4geS5vbk1vdXNlT3ZlcihjZSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEks''@;'; put 'put ''Im1vdXNlZG93biIsZnVuY3Rpb24oY2Upe3JldHVybiB5Lm9uTW91c2VEb3duKGNlKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaiwibW91c2Vtb3ZlIixmdW5jdGlvbihjZSl7cmV0dXJuIHkub25Nb3VzZU1vdmUoY2UpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZl''@;'; put 'put ''bnRMaXN0ZW5lcihqLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSl9fSx7a2V5OiJvbk1vZGlmeVJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST15O2lmKHRoaXMuZW5hYmxlZCl7dmFyIGo9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhDKSxjZT10''@;'; put 'put ''aGlzLnJvd0hlaWdodHNNYXAuZ2V0VmFsdWVBdEluZGV4KGopO3RoaXMuaG90LmdldFNldHRpbmdzKClbRW5lXSYmY2UmJihJPWNlKX1yZXR1cm4gSX19LHtrZXk6Im9uTWFwSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9T2dlLmdldCh0aGlzKSxJPXRoaXMuaG90LmdldFNl''@;'; put 'put ''dHRpbmdzKClbRW5lXSxqPXRoaXMubG9hZE1hbnVhbFJvd0hlaWdodHMoKTt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe3ZvaWQgMCE9PWo/ai5mb3JFYWNoKGZ1bmN0aW9uKGNlLF9lKXt5LnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLGNlKX0pOkFycmF5Lmlz''@;'; put 'put ''QXJyYXkoSSk/KEkuZm9yRWFjaChmdW5jdGlvbihjZSxfZSl7eS5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleChfZSxjZSl9KSxDLmNvbmZpZz1JKTohMD09PUkmJkFycmF5LmlzQXJyYXkoQy5jb25maWcpJiZDLmNvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uKGNlLF9lKXt5LnJvd0hlaWdo''@;'; put 'put ''dHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLGNlKX0pfSwhMCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe1NNKHI5KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEVuZX19''@;'; put 'put ''LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMwfX1dKSxofShHcyk7ZnVuY3Rpb24geG5lKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJl''@;'; put 'put ''ZXplKGcpfX0pKX1mdW5jdGlvbiBwRGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLHYua2V5LHYpfX12YXIgdTR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgsdix5LEMsSSl7KGZ1bmN0aW9uIGw0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0''@;'; put 'put ''aGlzLnJvdz1nLHRoaXMuY29sPWgsdGhpcy5yb3dzcGFuPXYsdGhpcy5jb2xzcGFuPXksdGhpcy5yZW1vdmVkPSExLHRoaXMuY2VsbENvb3Jkc0ZhY3Rvcnk9Qyx0aGlzLmNlbGxSYW5nZUZhY3Rvcnk9SX1yZXR1cm4gZnVuY3Rpb24gczR0KGQsZyxoKXtnJiZwRGUoZC5wcm90b3R5cGUsZyks''@;'; put 'put ''aCYmcERlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Im5vcm1hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aC5jb3VudFJvd3MoKSx5PWguY291bnRDb2xzKCk7dGhpcy5yb3c8MD90aGlzLnJvdz0wOnRoaXMu''@;'; put 'put ''cm93PnYtMSYmKHRoaXMucm93PXYtMSksdGhpcy5jb2w8MD90aGlzLmNvbD0wOnRoaXMuY29sPnktMSYmKHRoaXMuY29sPXktMSksdGhpcy5yb3crdGhpcy5yb3dzcGFuPnYtMSYmKHRoaXMucm93c3Bhbj12LXRoaXMucm93KSx0aGlzLmNvbCt0aGlzLmNvbHNwYW4+eS0xJiYodGhpcy5jb2xz''@;'; put 'put ''cGFuPXktdGhpcy5jb2wpfX0se2tleToiaW5jbHVkZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMucm93PD1oJiZ0aGlzLmNvbDw9diYmdGhpcy5yb3crdGhpcy5yb3dzcGFuLTE+PWgmJnRoaXMuY29sK3RoaXMuY29sc3Bhbi0xPj12fX0se2tleToiaW5jbHVkZXNIb3Jpem9u''@;'; put 'put ''dGFsbHkiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmNvbDw9aCYmdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE+PWh9fSx7a2V5OiJpbmNsdWRlc1ZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnJvdzw9aCYmdGhpcy5yb3crdGhpcy5yb3dzcGFuLTE+PWh9''@;'; put 'put ''fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1oWzBdfHxoWzFdLEM9ditNYXRoLmFicyhoWzBdfHxoWzFdKS0xLEk9aFswXT8iY29sc3BhbiI6InJvd3NwYW4iLGo9aFswXT8iY29sIjoicm93IixjZT1NYXRoLm1pbih2LEMpLF9lPU1hdGgubWF4KHYsQyksUmU9dGhp''@;'; put 'put ''c1tqXSxOZT10aGlzW2pdK3RoaXNbSV0tMTtpZihSZT49diYmKHRoaXNbal0rPXkpLHk+MCl2PD1OZSYmdj5SZSYmKHRoaXNbSV0rPXkpO2Vsc2UgaWYoeTwwKXtpZihjZTw9UmUmJl9lPj1OZSlyZXR1cm4gdGhpcy5yZW1vdmVkPSEwLCExO2lmKFJlPj1jZSYmUmU8PV9lKXt2YXIgS2U9X2Ut''@;'; put 'put ''UmUrMSxodD1NYXRoLmFicyh5KS1LZTt0aGlzW2pdLT1odCt5LHRoaXNbSV0tPUtlfWVsc2UgUmU8PWNlJiZOZT49X2U/dGhpc1tJXSs9eTpSZTw9Y2UmJk5lPj1jZSYmTmU8X2UmJih0aGlzW0ldLT1OZS1jZSsxKX1yZXR1cm4hMH19LHtrZXk6ImlzRmFydGhlciIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2KXtyZXR1cm4haHx8KCJkb3duIj09PXY/aC5yb3craC5yb3dzcGFuLTE8dGhpcy5yb3crdGhpcy5yb3dzcGFuLTE6InVwIj09PXY/aC5yb3c+dGhpcy5yb3c6InJpZ2h0Ij09PXY/aC5jb2wraC5jb2xzcGFuLTE8dGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE6ImxlZnQiPT09dj9oLmNvbD50''@;'; put 'put ''aGlzLmNvbDpudWxsKX19LHtrZXk6ImdldExhc3RSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm93K3RoaXMucm93c3Bhbi0xfX0se2tleToiZ2V0TGFzdENvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTF9fSx7a2V5OiJnZXRS''@;'; put 'put ''YW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jZWxsUmFuZ2VGYWN0b3J5KHRoaXMuY2VsbENvb3Jkc0ZhY3RvcnkodGhpcy5yb3csdGhpcy5jb2wpLHRoaXMuY2VsbENvb3Jkc0ZhY3RvcnkodGhpcy5yb3csdGhpcy5jb2wpLHRoaXMuY2VsbENvb3Jkc0ZhY3RvcnkodGhpcy5n''@;'; put 'put ''ZXRMYXN0Um93KCksdGhpcy5nZXRMYXN0Q29sdW1uKCkpKX19XSxbe2tleToiTkVHQVRJVkVfVkFMVUVTX1dBUk5JTkciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBEMihjRGV8fChjRGU9eG5lKFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdpdGgge3JvdzogIiwiLCBjb2w6ICIsIiwg''@;'; put 'put ''XG4gICAgICByb3dzcGFuOiAiLCIsIGNvbHNwYW46ICIsIn0gY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCBpcyBcbiAgICAgIG5vdCBzdXBwb3J0ZWQuIEl0IHdpbGwgbm90IGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLiJdLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdp''@;'; put 'put ''dGgge3JvdzogIiwiLCBjb2w6ICIsIixcXHgyMFxuICAgICAgcm93c3BhbjogIiwiLCBjb2xzcGFuOiAiLCJ9IGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcywgd2hpY2ggaXNcXHgyMFxuICAgICAgbm90IHN1cHBvcnRlZC4gSXQgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24u''@;'; put 'put ''Il0pKSxoLnJvdyxoLmNvbCxoLnJvd3NwYW4saC5jb2xzcGFuKX19LHtrZXk6IklTX09VVF9PRl9CT1VORFNfV0FSTklORyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIEQyKGZEZXx8KGZEZT14bmUoWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwiXSBpcyBwb3NpdGlv''@;'; put 'put ''bmVkIFxuICAgICAgKG9yIHBvc2l0aW9uZWQgcGFydGlhbGx5KSBvdXRzaWRlIG9mIHRoZSB0YWJsZSByYW5nZS4gSXQgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZSBmaXggeW91ciBzZXR1cC4iXSxbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCJdIGlz''@;'; put 'put ''IHBvc2l0aW9uZWRcXHgyMFxuICAgICAgKG9yIHBvc2l0aW9uZWQgcGFydGlhbGx5KSBvdXRzaWRlIG9mIHRoZSB0YWJsZSByYW5nZS4gSXQgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZSBmaXggeW91ciBzZXR1cC4iXSkpLGgucm93LGguY29sKX19LHtrZXk6IklTX1NJTkdM''@;'; put 'put ''RV9DRUxMIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gRDIoaERlfHwoaERlPXhuZShbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCddIGhhcyBib3RoICJyb3dzcGFuIiBcbiAgICAgIGFuZCAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjEiLCB3aGljaCBtYWtlcyBpdCBh''@;'; put 'put ''IHNpbmdsZSBjZWxsLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uJ10sWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwnXSBoYXMgYm90aCAicm93c3BhbiJcXHgyMFxuICAgICAgYW5kICJjb2xzcGFuIiBkZWNsYXJlZCBhcyAiMSIsIHdoaWNoIG1h''@;'; put 'put ''a2VzIGl0IGEgc2luZ2xlIGNlbGwuIEl0IGNhbm5vdCBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi4nXSkpLGgucm93LGguY29sKX19LHtrZXk6IlpFUk9fU1BBTl9XQVJOSU5HIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gRDIoZERlfHwoZERlPXhuZShbIlRoZSBtZXJnZWQgY2VsbCBk''@;'; put 'put ''ZWNsYXJlZCBhdCBbIiwiLCAiLCddIGhhcyAicm93c3BhbiIgXG4gICAgICBvciAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjAiLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uJ10sWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQg''@;'; put 'put ''YXQgWyIsIiwgIiwnXSBoYXMgInJvd3NwYW4iXFx4MjBcbiAgICAgIG9yICJjb2xzcGFuIiBkZWNsYXJlZCBhcyAiMCIsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIEl0IGNhbm5vdCBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi4nXSkpLGgucm93LGguY29sKX19LHtrZXk6ImNvbnRhaW5z''@;'; put 'put ''TmVnYXRpdmVWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoLnJvdzwwfHxoLmNvbDwwfHxoLnJvd3NwYW48MHx8aC5jb2xzcGFuPDB9fSx7a2V5OiJpc1NpbmdsZUNlbGwiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiAxPT09aC5jb2xzcGFuJiYxPT09aC5yb3dzcGFufX0se2tl''@;'; put 'put ''eToiY29udGFpbnNaZXJvU3BhbiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIDA9PT1oLmNvbHNwYW58fDA9PT1oLnJvd3NwYW59fSx7a2V5OiJpc091dE9mQm91bmRzIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7cmV0dXJuIGgucm93PDB8fGguY29sPDB8fGgucm93Pj12fHxoLnJvdytoLnJv''@;'; put 'put ''d3NwYW4tMT49dnx8aC5jb2w+PXl8fGguY29sK2guY29sc3Bhbi0xPj15fX1dKSxkfSgpO2NvbnN0IE5nPXU0dDtmdW5jdGlvbiBSZ2UoZCxnLGgsdil7Zz9nLnJvdz09PWgmJmcuY29sPT09dj8oZC5zZXRBdHRyaWJ1dGUoInJvd3NwYW4iLGcucm93c3Bhbi50b1N0cmluZygpKSxkLnNldEF0''@;'; put 'put ''dHJpYnV0ZSgiY29sc3BhbiIsZy5jb2xzcGFuLnRvU3RyaW5nKCkpKTooZC5yZW1vdmVBdHRyaWJ1dGUoInJvd3NwYW4iKSxkLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLGQuc3R5bGUuZGlzcGxheT0ibm9uZSIpOihkLnJlbW92ZUF0dHJpYnV0ZSgicm93c3BhbiIpLGQucmVtb3ZlQXR0''@;'; put 'put ''cmlidXRlKCJjb2xzcGFuIiksZC5zdHlsZS5kaXNwbGF5PSIiKX12YXIgZ0RlO2Z1bmN0aW9uIG1EZShkKXtyZXR1cm4gZnVuY3Rpb24gcDR0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIEJnZShkKX0oZCl8fGZ1bmN0aW9uIGQ0dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBoNHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEJnZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''dG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2''@;'; put 'put ''fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gQmdlKGQsZyl9fShkKXx8ZnVuY3Rpb24gZjR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwg''@;'; put 'put ''bm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gQmdlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0''@;'; put 'put ''dXJuIHZ9ZnVuY3Rpb24gdkRlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2''@;'; put 'put ''LmtleSx2KX19dmFyIHY0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIGc0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnBsdWdpbj1nLHRo''@;'; put 'put ''aXMubWVyZ2VkQ2VsbHM9W10sdGhpcy5ob3Q9Zy5ob3R9cmV0dXJuIGZ1bmN0aW9uIG00dChkLGcsaCl7ZyYmdkRlKGQucHJvdG90eXBlLGcpLGgmJnZEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXQiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgsdil7dmFyIEM9ITE7cmV0dXJuIEdyKHRoaXMubWVyZ2VkQ2VsbHMsZnVuY3Rpb24oSSl7cmV0dXJuIShJLnJvdzw9aCYmSS5yb3crSS5yb3dzcGFuLTE+PWgmJkkuY29sPD12JiZJLmNvbCtJLmNvbHNwYW4tMT49diYmKEM9SSwxKSl9KSxDfX0se2tleToiZ2V0QnlSYW5n''@;'; put 'put ''ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHk9ITE7cmV0dXJuIEdyKHRoaXMubWVyZ2VkQ2VsbHMsZnVuY3Rpb24oQyl7cmV0dXJuIShDLnJvdzw9aC5mcm9tLnJvdyYmQy5yb3crQy5yb3dzcGFuLTE+PWgudG8ucm93JiZDLmNvbDw9aC5mcm9tLmNvbCYmQy5jb2wrQy5jb2xzcGFuLTE+PWgu''@;'; put 'put ''dG8uY29sKXx8KHk9Qyl9KSx5fX0se2tleToiZ2V0V2l0aGluUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLEM9dGhpcy5tZXJnZWRDZWxscyxJPVtdLGo9aDtpZighai5p''@;'; put 'put ''bmNsdWRlc1JhbmdlKXt2YXIgY2U9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoai5mcm9tLnJvdyxqLmZyb20uY29sKSxfZT10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhqLnRvLnJvdyxqLnRvLmNvbCk7aj10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGNlLGNlLF9lKX1yZXR1cm4g''@;'; put 'put ''R3IoQyxmdW5jdGlvbihSZSl7dmFyIE5lPXYuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKFJlLnJvdyxSZS5jb2wpLEtlPXYuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKFJlLnJvdytSZS5yb3dzcGFuLTEsUmUuY29sK1JlLmNvbHNwYW4tMSksaHQ9di5ob3QuX2NyZWF0ZUNlbGxSYW5nZShOZSxOZSxL''@;'; put 'put ''ZSk7eT9qLm92ZXJsYXBzKGh0KSYmSS5wdXNoKFJlKTpqLmluY2x1ZGVzUmFuZ2UoaHQpJiZJLnB1c2goUmUpfSksISFJLmxlbmd0aCYmSX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5tZXJnZWRDZWxscyx5PWgucm93LEM9aC5jb2wsY2U9bmV3IE5nKHksQyxo''@;'; put 'put ''LnJvd3NwYW4saC5jb2xzcGFuLHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzLHRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UpLF9lPXRoaXMuZ2V0KHksQyksUmU9dGhpcy5pc092ZXJsYXBwaW5nKGNlKTtyZXR1cm4gX2V8fFJlPyhjMShkLklTX09WRVJMQVBQSU5HX1dBUk5JTkcoY2UpKSwh''@;'; put 'put ''MSk6KHRoaXMuaG90JiZjZS5ub3JtYWxpemUodGhpcy5ob3QpLHYucHVzaChjZSksY2UpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMubWVyZ2VkQ2VsbHMsQz10aGlzLmdldChoLHYpLEk9Qz90aGlzLm1lcmdlZENlbGxzLmluZGV4T2YoQyk6LTE7cmV0''@;'; put 'put ''dXJuISghQ3x8LTE9PT1JKSYmKHkuc3BsaWNlKEksMSksQyl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHk9W10sQz1bXTtHcih0aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKEkpe3ZhciBqPWguaG90LmdldENlbGwoSS5yb3csSS5jb2wpO2omJnkucHVzaChb''@;'; put 'put ''aixoLmdldChJLnJvdyxJLmNvbCksSS5yb3csSS5jb2xdKX0pLHRoaXMubWVyZ2VkQ2VsbHMubGVuZ3RoPTAsR3IoeSxmdW5jdGlvbihJLGope3JhKDAsSS5yb3dzcGFuLTEsZnVuY3Rpb24oY2Upe3JhKDAsSS5jb2xzcGFuLTEsZnVuY3Rpb24oX2Upe2lmKDAhPT1fZXx8MCE9PWNlKXt2YXIg''@;'; put 'put ''UmU9aC5ob3QuZ2V0Q2VsbChJLnJvdytjZSxJLmNvbCtfZSk7UmUmJkMucHVzaChbUmUsbnVsbCxudWxsLG51bGxdKX19KX0pLHlbal1bMV09bnVsbH0pLEdyKHksZnVuY3Rpb24oSSl7UmdlLmFwcGx5KHZvaWQgMCxtRGUoSSkpfSksR3IoQyxmdW5jdGlvbihJKXtSZ2UuYXBwbHkodm9pZCAw''@;'; put 'put ''LG1EZShJKSl9KX19LHtrZXk6ImlzT3ZlcmxhcHBpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKDAsMCksdGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoaC5yb3csaC5jb2wpLHRo''@;'; put 'put ''aXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGgucm93K2gucm93c3Bhbi0xLGguY29sK2guY29sc3Bhbi0xKSksQz0hMTtyZXR1cm4gR3IodGhpcy5tZXJnZWRDZWxscyxmdW5jdGlvbihJKXtyZXR1cm4hdi5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh2LmhvdC5fY3JlYXRlQ2VsbENvb3JkcygwLDAp''@;'; put 'put ''LHYuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEkucm93LEkuY29sKSx2LmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhJLnJvdytJLnJvd3NwYW4tMSxJLmNvbCtJLmNvbHNwYW4tMSkpLm92ZXJsYXBzKHkpfHwoQz0hMCwhMSl9KSxDfX0se2tleToiaXNGaXJzdFJlbmRlcmFibGVNZXJnZWRDZWxsIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMuZ2V0KGgsdik7cmV0dXJuIHkmJnRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh5LnJvdywxKT09PWgmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh5''@;'; put 'put ''LmNvbCwxKT09PXZ9fSx7a2V5OiJnZXRGaXJzdFJlbmRlcmFibGVDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5nZXQoaCx2KTtpZigheXx8dGhpcy5pc0ZpcnN0UmVuZGVyYWJsZU1lcmdlZENlbGwoaCx2KSlyZXR1cm4gdGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMo''@;'; put 'put ''aCx2KTt2YXIgQz10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoeS5yb3csMSksST10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoeS5jb2wsMSk7cmV0dXJuIHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRz''@;'; put 'put ''KEMsSSl9fSx7a2V5OiJzaGlmdENvbGxlY3Rpb25zIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcyxJPVswLDBdO3N3aXRjaChoKXtjYXNlInJpZ2h0IjpJWzBdKz15O2JyZWFrO2Nhc2UibGVmdCI6SVswXS09eTticmVhaztjYXNlImRvd24iOklbMV0rPXk7YnJlYWs7Y2FzZSJ1''@;'; put 'put ''cCI6SVsxXS09eX1Hcih0aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKGope2ouc2hpZnQoSSx2KX0pLGNlZSh0aGlzLm1lcmdlZENlbGxzLmxlbmd0aC0xLDAsZnVuY3Rpb24oail7dmFyIGNlPUMubWVyZ2VkQ2VsbHNbal07Y2UmJmNlLnJlbW92ZWQmJkMubWVyZ2VkQ2VsbHMuc3BsaWNlKEMu''@;'; put 'put ''bWVyZ2VkQ2VsbHMuaW5kZXhPZihjZSksMSl9KX19XSxbe2tleToiSVNfT1ZFUkxBUFBJTkdfV0FSTklORyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIEQyKGdEZXx8KGdEZT1mdW5jdGlvbiBjNHQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCJdLCBvdmVybGFwcyBcbiAgICAgIHdpdGggdGhlIG90aGVyIGRlY2xhcmVkIG1lcmdlZCBjZWxsLiBUaGUgb3ZlcmxhcHBpbmcg''@;'; put 'put ''bWVyZ2VkIGNlbGwgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZSBcbiAgICAgIGZpeCB5b3VyIHNldHVwLiJdLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFsiLCIsICIsIl0sIG92ZXJsYXBzXFx4MjBcbiAgICAgIHdpdGggdGhlIG90aGVyIGRlY2xhcmVkIG1lcmdl''@;'; put 'put ''ZCBjZWxsLiBUaGUgb3ZlcmxhcHBpbmcgbWVyZ2VkIGNlbGwgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZVxceDIwXG4gICAgICBmaXggeW91ciBzZXR1cC4iXSkpLGgucm93LGguY29sKX19XSksZH0oKTtjb25zdCBBNHQ9djR0O2Z1bmN0aW9uIE1NKGQsZyl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIF80dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gYjR0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIg''@;'; put 'put ''SSxqLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2goY2Upe0M9ITAsaj1jZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJu''@;'; put 'put ''KCl9ZmluYWxseXtpZihDKXRocm93IGp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gdzR0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBBRGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVj''@;'; put 'put ''dCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJu''@;'; put 'put ''IEFEZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24geTR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBBRGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiB5RGUoZCxnKXtmb3IodmFy''@;'; put 'put ''IGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgUzR0PWZ1bmN0aW9uKCl7ZnVu''@;'; put 'put ''Y3Rpb24gZChnKXsoZnVuY3Rpb24gQzR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucGx1Z2luPWcsdGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb249dGhpcy5w''@;'; put 'put ''bHVnaW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLHRoaXMuY3VycmVudEZpbGxEYXRhPW51bGx9cmV0dXJuIGZ1bmN0aW9uIGs0dChkLGcsaCl7ZyYmeURlKGQucHJvdG90eXBlLGcpLGgmJnlEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0p''@;'; put 'put ''fShkLFt7a2V5OiJjb3JyZWN0U2VsZWN0aW9uQXJlYVNpemUiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKGhbMF09PT1oWzJdJiZoWzFdPT09aFszXSl7dmFyIHY9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGhbMF0saFsxXSk7diYmKGhbMl09aFswXSt2LnJvd3NwYW4tMSxoWzNdPWhb''@;'; put 'put ''MV0rdi5jb2xzcGFuLTEpfX19LHtrZXk6ImdldERpcmVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gdlswXT09PWhbMF0mJnZbMV09PT1oWzFdJiZ2WzNdPT09aFszXT8iZG93biI6dlsyXT09PWhbMl0mJnZbMV09PT1oWzFdJiZ2WzNdPT09aFszXT8idXAiOnZbMV09PT1oWzFd''@;'; put 'put ''JiZ2WzJdPT09aFsyXT8icmlnaHQiOiJsZWZ0In19LHtrZXk6InNuYXBEcmFnQXJlYSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9di5zbGljZSgwKSxqPXRoaXMuZ2V0QXV0b2ZpbGxTaXplKGgsdix5KSxjZT1NTShoLDQpLF9lPWNlWzBdLFJlPWNlWzFdLE5lPWNlWzJdLEtlPWNl''@;'; put 'put ''WzNdLEJ0PVsidXAiLCJkb3duIl0uaW5kZXhPZih5KT4tMT9OZS1fZSsxOktlLVJlKzEsaG49ai1NYXRoLmZsb29yKGovQnQpKkJ0LERuPXRoaXMuZ2V0RmFydGhlc3RDb2xsZWN0aW9uKGgsdix5LEMpO2lmKERuKWlmKCJkb3duIj09PXkpe3ZhciBpcj1Ebi5yb3crRG4ucm93c3Bhbi1fZS1o''@;'; put 'put ''bjtJWzJdK2lyPj10aGlzLnBsdWdpbi5ob3QuY291bnRSb3dzKCk/SVsyXS09aG46SVsyXSs9aG4/aXI6MH1lbHNlIGlmKCJyaWdodCI9PT15KXt2YXIgRXI9RG4uY29sK0RuLmNvbHNwYW4tUmUtaG47SVszXStFcj49dGhpcy5wbHVnaW4uaG90LmNvdW50Q29scygpP0lbM10tPWhuOklbM10r''@;'; put 'put ''PWhuP0VyOjB9ZWxzZSBpZigidXAiPT09eSl7dmFyIFlyPU5lLWhuLURuLnJvdysxO0lbMF0rWXI8MD9JWzBdKz1objpJWzBdLT1obj9ZcjowfWVsc2UgaWYoImxlZnQiPT09eSl7dmFyIEtpPUtlLWhuLURuLmNvbCsxO0lbMV0rS2k8MD9JWzFdKz1objpJWzFdLT1obj9LaTowfXJldHVybiB0''@;'; put 'put ''aGlzLnVwZGF0ZUN1cnJlbnRGaWxsQ2FjaGUoe2Jhc2VBcmVhOmgsZHJhZ0RpcmVjdGlvbjp5LGZvdW5kTWVyZ2VkQ2VsbHM6QyxmaWxsU2l6ZTpqLGRyYWdBcmVhOkksY3ljbGVMZW5ndGg6QnR9KSxJfX0se2tleToidXBkYXRlQ3VycmVudEZpbGxDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oaCl7''@;'; put 'put ''dGhpcy5jdXJyZW50RmlsbERhdGF8fCh0aGlzLmN1cnJlbnRGaWxsRGF0YT17fSksUjEodGhpcy5jdXJyZW50RmlsbERhdGEsaCl9fSx7a2V5OiJnZXRBdXRvZmlsbFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz1NTShoLDQpLEk9Q1swXSxqPUNbMV0sY2U9Q1syXSxfZT1DWzNd''@;'; put 'put ''LFJlPU1NKHYsNCksTmU9UmVbMF0sS2U9UmVbMV0saHQ9UmVbMl0sQnQ9UmVbM107c3dpdGNoKHkpe2Nhc2UidXAiOnJldHVybiBJLU5lO2Nhc2UiZG93biI6cmV0dXJuIGh0LWNlO2Nhc2UibGVmdCI6cmV0dXJuIGotS2U7Y2FzZSJyaWdodCI6cmV0dXJuIEJ0LV9lO2RlZmF1bHQ6cmV0dXJu''@;'; put 'put ''IG51bGx9fX0se2tleToiZ2V0RHJhZ0FyZWEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz1NTShoLDQpLEk9Q1swXSxqPUNbMV0sY2U9Q1syXSxfZT1DWzNdLFJlPU1NKHYsNCksTmU9UmVbMF0sS2U9UmVbMV0saHQ9UmVbMl0sQnQ9UmVbM107c3dpdGNoKHkpe2Nhc2UidXAiOnJldHVy''@;'; put 'put ''bltOZSxLZSxJLTEsX2VdO2Nhc2UiZG93biI6cmV0dXJuW2NlKzEsaixodCxfZV07Y2FzZSJsZWZ0IjpyZXR1cm5bTmUsS2UsY2Usai0xXTtjYXNlInJpZ2h0IjpyZXR1cm5bSSxfZSsxLGh0LEJ0XTtkZWZhdWx0OnJldHVybiBudWxsfX19LHtrZXk6ImdldEZhcnRoZXN0Q29sbGVjdGlvbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9TU0oaCw0KSxqPUlbMF0sY2U9SVsxXSxfZT1JWzJdLFJlPUlbM10sTmU9WyJ1cCIsImRvd24iXS5pbmRleE9mKHkpPi0xLEtlPU5lP19lOlJlLGh0PU5lP2o6Y2UsQnQ9dGhpcy5nZXRBdXRvZmlsbFNpemUoaCx2LHkpLCR0PU5lP19lLWor''@;'; put 'put ''MTpSZS1jZSsxLERuPUJ0LU1hdGguZmxvb3IoQnQvJHQpKiR0LGlyPW51bGwscHI9bnVsbCxFcj1udWxsO3N3aXRjaCh5KXtjYXNlInVwIjppcj0iaW5jbHVkZXNWZXJ0aWNhbGx5IixFcj1LZS1EbisxO2JyZWFrO2Nhc2UibGVmdCI6aXI9ImluY2x1ZGVzSG9yaXpvbnRhbGx5IixFcj1LZS1E''@;'; put 'put ''bisxO2JyZWFrO2Nhc2UiZG93biI6aXI9ImluY2x1ZGVzVmVydGljYWxseSIsRXI9aHQrRG4tMTticmVhaztjYXNlInJpZ2h0Ijppcj0iaW5jbHVkZXNIb3Jpem9udGFsbHkiLEVyPWh0K0RuLTF9cmV0dXJuIEdyKEMsZnVuY3Rpb24oQXIpe0FyW2lyXShFcikmJkFyLmlzRmFydGhlcihwcix5''@;'; put 'put ''KSYmKHByPUFyKX0pLHByfX0se2tleToicmVjcmVhdGVBZnRlckRhdGFQb3B1bGF0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXtpZih0aGlzLmN1cnJlbnRGaWxsRGF0YSl7dmFyIHY9dGhpcy5nZXRSYW5nZUZyb21DaGFuZ2VzKGgpLHk9dGhpcy5jdXJyZW50RmlsbERhdGEuZm91bmRNZXJnZWRD''@;'; put 'put ''ZWxscyxDPXRoaXMuY3VycmVudEZpbGxEYXRhLmRyYWdEaXJlY3Rpb24sST1mdW5jdGlvbihLZSxodCl7c3dpdGNoKEMpe2Nhc2UidXAiOnJldHVybiBLZS5yb3ctaHQ+PXYuZnJvbS5yb3c7Y2FzZSJkb3duIjpyZXR1cm4gS2Uucm93K0tlLnJvd3NwYW4tMStodDw9di50by5yb3c7Y2FzZSJs''@;'; put 'put ''ZWZ0IjpyZXR1cm4gS2UuY29sLWh0Pj12LmZyb20uY29sdW1uO2Nhc2UicmlnaHQiOnJldHVybiBLZS5jb2wrS2UuY29sc3Bhbi0xK2h0PD12LnRvLmNvbHVtbjtkZWZhdWx0OnJldHVybiBudWxsfX0saj0wLGNlPW51bGwsX2U9MTtkb3tmb3IodmFyIFJlPTA7UmU8eS5sZW5ndGg7UmUrPTEp''@;'; put 'put ''e2lmKEkoY2U9eVtSZV0saj1fZSp0aGlzLmN1cnJlbnRGaWxsRGF0YS5jeWNsZUxlbmd0aCkpc3dpdGNoKEMpe2Nhc2UidXAiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpjZS5yb3ctaixyb3dzcGFuOmNlLnJvd3NwYW4sY29sOmNlLmNvbCxjb2xzcGFuOmNl''@;'; put 'put ''LmNvbHNwYW59KTticmVhaztjYXNlImRvd24iOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpjZS5yb3craixyb3dzcGFuOmNlLnJvd3NwYW4sY29sOmNlLmNvbCxjb2xzcGFuOmNlLmNvbHNwYW59KTticmVhaztjYXNlImxlZnQiOnRoaXMucGx1Z2luLm1lcmdl''@;'; put 'put ''ZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpjZS5yb3cscm93c3BhbjpjZS5yb3dzcGFuLGNvbDpjZS5jb2wtaixjb2xzcGFuOmNlLmNvbHNwYW59KTticmVhaztjYXNlInJpZ2h0Ijp0aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uYWRkKHtyb3c6Y2Uucm93LHJvd3NwYW46Y2Uu''@;'; put 'put ''cm93c3Bhbixjb2w6Y2UuY29sK2osY29sc3BhbjpjZS5jb2xzcGFufSl9UmU9PT15Lmxlbmd0aC0xJiYoX2UrPTEpfX13aGlsZShJKGNlLGopKTt0aGlzLmN1cnJlbnRGaWxsRGF0YT1udWxsLHRoaXMucGx1Z2luLmhvdC5yZW5kZXIoKX19fSx7a2V5OiJnZXRSYW5nZUZyb21DaGFuZ2VzIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLHk9e21pbjpudWxsLG1heDpudWxsfSxDPXttaW46bnVsbCxtYXg6bnVsbH07cmV0dXJuIEdyKGgsZnVuY3Rpb24oSSl7dmFyIGo9SVswXSxjZT12LnBsdWdpbi5ob3QucHJvcFRvQ29sKElbMV0pOyhudWxsPT09eS5taW58fGo8eS5taW4pJiYo''@;'; put 'put ''eS5taW49aiksKG51bGw9PT15Lm1heHx8aj55Lm1heCkmJih5Lm1heD1qKSwobnVsbD09PUMubWlufHxjZTxDLm1pbikmJihDLm1pbj1jZSksKG51bGw9PT1DLm1heHx8Y2U+Qy5tYXgpJiYoQy5tYXg9Y2UpfSkse2Zyb206e3Jvdzp5Lm1pbixjb2x1bW46Qy5taW59LHRvOntyb3c6eS5tYXgs''@;'; put 'put ''Y29sdW1uOkMubWF4fX19fSx7a2V5OiJkcmFnQXJlYU92ZXJsYXBzQ29sbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgST1NTSh0aGlzLmdldERyYWdBcmVhKGgsdix5KSw0KSxfZT1JWzJdLFJlPUlbM10sTmU9dGhpcy5wbHVnaW4uaG90Ll9jcmVhdGVDZWxsQ29vcmRzKElb''@;'; put 'put ''MF0sSVsxXSksS2U9dGhpcy5wbHVnaW4uaG90Ll9jcmVhdGVDZWxsQ29vcmRzKF9lLFJlKSxodD10aGlzLnBsdWdpbi5ob3QuX2NyZWF0ZUNlbGxSYW5nZShOZSxOZSxLZSk7cmV0dXJuISF0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRoaW5SYW5nZShodCwhMCl9fV0pLGR9KCk7''@;'; put 'put ''Y29uc3QgTTR0PVM0dDtmdW5jdGlvbiB3RGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLHYua2V5LHYpfX12YXIgVDR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gRTR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucGx1''@;'; put 'put ''Z2luPWcsdGhpcy5ob3Q9Zy5ob3QsdGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZT0iZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwifXJldHVybiBmdW5jdGlvbiB4NHQoZCxnLGgpe2cmJndEZShkLnByb3RvdHlwZSxnKSxoJiZ3RGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic25hcERlbHRhIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9di50byxqPUMuY29sK2guY29sO2gucm93P3RoaXMuanVtcE92ZXJNZXJnZWRDZWxsKGgseSxDLnJvdytoLnJvdyk6aC5jb2wmJnRoaXMuanVtcE92''@;'; put 'put ''ZXJNZXJnZWRDZWxsKGgseSxqKX19LHtrZXk6Imp1bXBPdmVyTWVyZ2VkQ2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPWgucm93fHxoLmNvbCxJPW51bGwsaj1udWxsLGNlPW51bGw7aC5yb3c/KEk9di5pbmNsdWRlc1ZlcnRpY2FsbHkoeSksaj12LnJvdyxjZT12LmdldExhc3RS''@;'; put 'put ''b3coKSk6aC5jb2wmJihJPXYuaW5jbHVkZXNIb3Jpem9udGFsbHkoeSksaj12LmNvbCxjZT12LmdldExhc3RDb2x1bW4oKSksMCE9PUMmJihDPjA/SSYmeSE9PWomJihDKz1jZS15KzEpOkkmJnkhPT1jZSYmKEMtPXktaisxKSxoLnJvdz9oLnJvdz1DOmguY29sJiYoaC5jb2w9QykpfX0se2tl''@;'; put 'put ''eToiZ2V0VXBkYXRlZFNlbGVjdGlvblJhbmdlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGguaGlnaGxpZ2h0LGguZnJvbSx0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnRvLnJvdyt2LnJvdyxoLnRvLmNvbCt2LmNvbCkpfX0se2tl''@;'; put 'put ''eToiZ2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXt2YXIgST1NYXRoLm1pbih5WzBdLHlbMl0pLGo9TWF0aC5taW4oeVsxXSx5WzNdKSxjZT1NYXRoLm1heCh5WzBdLHlbMl0pLF9lPU1hdGgubWF4KHlbMV0seVszXSk7aWYodm9pZCAwIT09''@;'; put 'put ''QyYmdGhpcy5wbHVnaW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmlzRmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbChoLHYpKXt2YXIgTmU9dGhpcy5wbHVnaW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChoLHYpO2lmKE5lKXt2YXIgS2U9TmUuZ2V0TGFzdFJvdygpLGh0PU5lLmdldExhc3RD''@;'; put 'put ''b2x1bW4oKTtpZihJPD1OZS5yb3cmJmo8PU5lLmNvbCYmY2U+PUtlJiZfZT49aHQpcmV0dXJuIiIuY29uY2F0KHRoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUsIi0iKS5jb25jYXQoQyk7aWYodGhpcy5wbHVnaW4uc2VsZWN0aW9uQ2FsY3VsYXRpb25zLmlzTWVyZ2VDZWxs''@;'; put 'put ''RnVsbHlTZWxlY3RlZChOZSx0aGlzLnBsdWdpbi5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpKSlyZXR1cm4iIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZSwiLW11bHRpcGxlIil9fX19LHtrZXk6ImlzTWVyZ2VDZWxsRnVsbHlTZWxlY3RlZCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXt2YXIgeT1bXTtpZighdnx8IWgpcmV0dXJuITE7Zm9yKHZhciBDPTA7QzxoLnJvd3NwYW47Qys9MSlmb3IodmFyIEk9MDtJPGguY29sc3BhbjtJKz0xKXkucHVzaCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnJvdytDLGguY29sK0kpKTtmb3IodmFyIGo9MDtqPHku''@;'; put 'put ''bGVuZ3RoO2orPTEpe2Zvcih2YXIgY2U9W10sX2U9MDtfZTx2Lmxlbmd0aDtfZSs9MSljZVtfZV09dltfZV0uaW5jbHVkZXMoeVtqXSk7aWYoIWNlLmluY2x1ZGVzKCEwKSlyZXR1cm4hMX1yZXR1cm4hMH19LHtrZXk6ImdldFNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZVRvUmVtb3ZlIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgaD1bXSx2PTA7djw9Nzt2Kz0xKWgucHVzaCgiIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZSwiLSIpLmNvbmNhdCh2KSk7cmV0dXJuIGgucHVzaCgiIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2Vs''@;'; put 'put ''bENsYXNzTmFtZSwiLW11bHRpcGxlIikpLGh9fV0pLGR9KCk7Y29uc3QgSTR0PVQ0dDtmdW5jdGlvbiBQZ2UoZCl7cmV0dXJuKFBnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9''@;'; put 'put ''OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGJEZShkLGcpe3JldHVybiBmdW5jdGlvbiBSNHQoZCl7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIE80dChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksaix2PVtdLHk9ITAsQz0hMTt0''@;'; put 'put ''cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKGNlKXtDPSEwLGo9Y2V9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJv''@;'; put 'put ''dyBqfX1yZXR1cm4gdn19KGQsZyl8fENEZShkLGcpfHxmdW5jdGlvbiBMNHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3Rz''@;'; put 'put ''IG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIF9EZShkKXtyZXR1cm4gZnVuY3Rpb24gRjR0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIEZnZShkKX0oZCl8fGZ1bmN0aW9uIFA0dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxDRGUoZCl8fGZ1bmN0aW9uIEI0dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGlu''@;'; put 'put ''c3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIENEZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gRmdlKGQsZyk7dmFyIGg9''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9e''@;'; put 'put ''KD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBGZ2UoZCxnKX19ZnVuY3Rpb24gRmdlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07''@;'; put 'put ''cmV0dXJuIHZ9ZnVuY3Rpb24ga0RlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCx2LmtleSx2KX19ZnVuY3Rpb24gQ1IoKXtyZXR1cm4gQ1I9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVY0dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny''@;'; put 'put ''aXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sQ1IuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFY0dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxs''@;'; put 'put ''IT09KGQ9cmIoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gSGdlKGQsZyl7cmV0dXJuKEhnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHo0dChkLGcp''@;'; put 'put ''e2lmKGcmJigib2JqZWN0Ij09PVBnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gU0RlKGQp''@;'; put 'put ''fWZ1bmN0aW9uIFNEZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gcmIoZCl7cmV0dXJuKHJiPU9iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9Vm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZU1lcmdlQ2VsbHMiKSxWby5nZXRTaW5nbGV0b24oKS5y''@;'; put 'put ''ZWdpc3RlcigiYWZ0ZXJNZXJnZUNlbGxzIiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVVubWVyZ2VDZWxscyIpLFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclVubWVyZ2VDZWxscyIpO3ZhciBJRGUsbEc9Im1lcmdlQ2VsbHMiLE1EZT1uZXcgV2Vha01hcCxF''@;'; put 'put ''RGU9bEcsWTR0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBqNHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmpl''@;'; put 'put ''Y3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSGdlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gWjR0''@;'; put 'put ''KGQpe3ZhciBnPWZ1bmN0aW9uIEc0dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4u''@;'; put 'put ''cHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXJiKGQpO2lmKGcpe3ZhciBDPXJiKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB6NHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIEg0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLHk9Zy5jYWxsKHRoaXMsdiksTURlLnNldChTRGUoeSkse2xhc3REZXNpcmVkQ29vcmRzOm51bGx9KSx5Lm1lcmdlZENlbGxzQ29sbGVjdGlvbj1udWxsLHkuYXV0b2ZpbGxDYWxjdWxhdGlvbnM9bnVsbCx5''@;'; put 'put ''LnNlbGVjdGlvbkNhbGN1bGF0aW9ucz1udWxsLHl9cmV0dXJuIGZ1bmN0aW9uIE40dChkLGcsaCl7ZyYma0RlKGQucHJvdG90eXBlLGcpLGgmJmtEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2xHXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uPW5ldyBBNHQodGhpcyksdGhpcy5hdXRv''@;'; put 'put ''ZmlsbENhbGN1bGF0aW9ucz1uZXcgTTR0KHRoaXMpLHRoaXMuc2VsZWN0aW9uQ2FsY3VsYXRpb25zPW5ldyBJNHQodGhpcyksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckluaXQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJt''@;'; put 'put ''b2RpZnlUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vZGlmeVRyYW5zZm9ybVN0YXJ0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyTW9kaWZ5VHJhbnNm''@;'; put 'put ''b3JtU3RhcnQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlUcmFuc2Zvcm1FbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25Nb2RpZnlUcmFuc2Zvcm1FbmQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5R2V0Q2VsbENvb3Jkcy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVTZXRSYW5nZVN0YXJ0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRk''@;'; put 'put ''SG9vaygiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVTZXRSYW5nZVN0YXJ0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlU2V0UmFuZ2VFbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVTZXRSYW5nZUVu''@;'; put 'put ''ZC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbi5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVuZGVyZXIiLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHkub25BZnRlclJlbmRlcmVyLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbigpe3JldHVybiB5LmFkZE1lcmdlQWN0aW9uc1RvQ29udGV4dE1lbnUuYXBwbHkoeSxhcmd1bWVudHMp''@;'; put 'put ''fSksdGhpcy5hZGRIb29rKCJhZnRlckdldENlbGxNZXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJHZXRDZWxsTWV0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyVmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHku''@;'; put 'put ''b25BZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3Zl''@;'; put 'put ''cnJpZGUuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlBdXRvZmlsbFJhbmdlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5QXV0b2ZpbGxSYW5nZS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlQ29sIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB5Lm9uQWZ0ZXJDcmVhdGVDb2wuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclJlbW92ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyUmVtb3ZlQ29sLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ci''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckNyZWF0ZVJvdy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJSZW1vdmVSb3cuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRl''@;'; put 'put ''ckNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyQ2hhbmdlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRHJhd0JvcmRlcnMiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVEcmF3QXJlYUJvcmRlcnMuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhp''@;'; put 'put ''cy5hZGRIb29rKCJhZnRlckRyYXdTZWxlY3Rpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckRyYXdTZWxlY3Rpb24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVJl''@;'; put 'put ''bW92ZUNlbGxDbGFzc05hbWVzLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIixmdW5jdGlvbihDLEkpe2lmKCJNZXJnZUNlbGxzIj09PUkpcmV0dXJuITF9KSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksQ1IocmIoaC5wcm90b3R5cGUp''@;'; put 'put ''LCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyQ29sbGVjdGlvbnMoKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSx0aGlzLmhvdC5yZW5kZXIoKSxDUihyYihoLnByb3RvdHlwZSksImRp''@;'; put 'put ''c2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtsR107dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSx0aGlzLmdlbmVyYXRlRnJvbVNldHRp''@;'; put 'put ''bmdzKHkpLENSKHJiKGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidmFsaWRhdGVTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz0hMDtyZXR1cm4hIXkmJihOZy5jb250YWluc05lZ2F0aXZlVmFsdWVzKHkpPyhjMShOZy5ORUdBVElW''@;'; put 'put ''RV9WQUxVRVNfV0FSTklORyh5KSksQz0hMSk6TmcuaXNPdXRPZkJvdW5kcyh5LHRoaXMuaG90LmNvdW50Um93cygpLHRoaXMuaG90LmNvdW50Q29scygpKT8oYzEoTmcuSVNfT1VUX09GX0JPVU5EU19XQVJOSU5HKHkpKSxDPSExKTpOZy5pc1NpbmdsZUNlbGwoeSk/KGMxKE5nLklTX1NJTkdM''@;'; put 'put ''RV9DRUxMKHkpKSxDPSExKTpOZy5jb250YWluc1plcm9TcGFuKHkpJiYoYzEoTmcuWkVST19TUEFOX1dBUk5JTkcoeSkpLEM9ITEpLEMpfX0se2tleToiZ2VuZXJhdGVGcm9tU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh5KSl7dmFyIEks''@;'; put 'put ''aj1bXTtHcih5LGZ1bmN0aW9uKF9lKXtpZihDLnZhbGlkYXRlU2V0dGluZyhfZSkpe3ZhciBSZT1DLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfZS5yb3csX2UuY29sKSxOZT1DLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfZS5yb3crX2Uucm93c3Bhbi0xLF9lLmNvbCtfZS5jb2xzcGFuLTEpLEtl''@;'; put 'put ''PUMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UoUmUsUmUsTmUpO2oucHVzaChDLm1lcmdlUmFuZ2UoS2UsITAsITApKX19KSxqPWouZmlsdGVyKGZ1bmN0aW9uKF9lKXtyZXR1cm4hMCE9PV9lfSk7dmFyIGNlPXRoaXMuZ2V0QnVsa0NvbGxlY3Rpb25EYXRhKGopOyhJPXRoaXMuaG90KS5wb3B1bGF0''@;'; put 'put ''ZUZyb21BcnJheS5hcHBseShJLF9EZShjZSkpfX19LHtrZXk6ImdldEJ1bGtDb2xsZWN0aW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEMsST10aGlzLmdldEJ1bGtDb2xsZWN0aW9uRGF0YVJhbmdlKHkpLGNlPShDPXRoaXMuaG90KS5nZXREYXRhLmFwcGx5KEMsX0RlKEkpKS5zcGxp''@;'; put 'put ''Y2UoMCk7cmV0dXJuIEdyKHksZnVuY3Rpb24oX2Upe3ZhciBSZT1iRGUoX2UsMyksTmU9UmVbMF0sS2U9UmVbMV07R3IoUmVbMl0sZnVuY3Rpb24oQnQsJHQpe0dyKEJ0LGZ1bmN0aW9uKGhuLERuKXtjZVtOZS1JWzBdKyR0XVtLZS1JWzFdK0RuXT1obn0pfSl9KSxbSVswXSxJWzFdLGNlXX19''@;'; put 'put ''LHtrZXk6ImdldEJ1bGtDb2xsZWN0aW9uRGF0YVJhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1bMCwwXSxJPVswLDBdLGo9bnVsbCxjZT1udWxsLF9lPW51bGw7cmV0dXJuIEdyKHksZnVuY3Rpb24oUmUpe2o9UmVbMF0sY2U9UmVbMV0sX2U9UmVbMl0sQ1swXT1NYXRoLm1pbihqLENb''@;'; put 'put ''MF0pLENbMV09TWF0aC5taW4oY2UsQ1sxXSksSVswXT1NYXRoLm1heChqK19lLmxlbmd0aC0xLElbMF0pLElbMV09TWF0aC5tYXgoY2UrX2VbMF0ubGVuZ3RoLTEsSVsxXSl9KSxbXS5jb25jYXQoQyxJKX19LHtrZXk6ImNsZWFyQ29sbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5t''@;'; put 'put ''ZXJnZWRDZWxsc0NvbGxlY3Rpb24uY2xlYXIoKX19LHtrZXk6ImNhbk1lcmdlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuISFDfHx0aGlzLnZhbGlkYXRlU2V0dGluZyh5''@;'; put 'put ''KX19LHtrZXk6InRvZ2dsZU1lcmdlT25TZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZih5KXt5LnNldERpcmVjdGlvbih0aGlzLmhvdC5pc1J0bCgpPyJORS1TVyI6Ik5XLVNFIik7dmFyIEM9eS5mcm9tLEk9eS50bzt0''@;'; put 'put ''aGlzLnRvZ2dsZU1lcmdlKHkpLHRoaXMuaG90LnNlbGVjdENlbGwoQy5yb3csQy5jb2wsSS5yb3csSS5jb2wsITEpfX19LHtrZXk6Im1lcmdlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50''@;'; put 'put ''c1swXTp0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKHkpe3kuc2V0RGlyZWN0aW9uKHRoaXMuaG90LmlzUnRsKCk/Ik5FLVNXIjoiTlctU0UiKTt2YXIgQz15LmZyb20sST15LnRvO3RoaXMudW5tZXJnZVJhbmdlKHksITApLHRoaXMubWVyZ2VSYW5nZSh5KSx0aGlzLmhvdC5z''@;'; put 'put ''ZWxlY3RDZWxsKEMucm93LEMuY29sLEkucm93LEkuY29sLCExKX19fSx7a2V5OiJ1bm1lcmdlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmhvdC5nZXRTZWxlY3RlZFJh''@;'; put 'put ''bmdlTGFzdCgpO2lmKHkpe3ZhciBDPXkuZnJvbSxJPXkudG87dGhpcy51bm1lcmdlUmFuZ2UoeSwhMCksdGhpcy5ob3Quc2VsZWN0Q2VsbChDLnJvdyxDLmNvbCxJLnJvdyxJLmNvbCwhMSl9fX0se2tleToibWVyZ2VSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0saj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGNlPXkuZ2V0VG9wU3RhcnRDb3JuZXIoKSxfZT15LmdldEJvdHRvbUVuZENvcm5lcigpLFJlPXty''@;'; put 'put ''b3c6Y2Uucm93LGNvbDpjZS5jb2wscm93c3BhbjpfZS5yb3ctY2Uucm93KzEsY29sc3BhbjpfZS5jb2wtY2UuY29sKzF9LE5lPVtdLEtlPW51bGw7aWYoIXRoaXMuY2FuTWVyZ2VSYW5nZShSZSxJKSlyZXR1cm4hMTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlTWVyZ2VDZWxscyIseSxJKSxy''@;'; put 'put ''YSgwLFJlLnJvd3NwYW4tMSxmdW5jdGlvbihCdCl7cmEoMCxSZS5jb2xzcGFuLTEsZnVuY3Rpb24oJHQpe3ZhciBobj1udWxsO05lW0J0XXx8KE5lW0J0XT1bXSksMD09PUJ0JiYwPT09JHQ/aG49Qy5ob3QuZ2V0RGF0YUF0Q2VsbChSZS5yb3csUmUuY29sKTpDLmhvdC5zZXRDZWxsTWV0YShS''@;'; put 'put ''ZS5yb3crQnQsUmUuY29sKyR0LCJoaWRkZW4iLCEwKSxOZVtCdF1bJHRdPWhufSl9KSx0aGlzLmhvdC5zZXRDZWxsTWV0YShSZS5yb3csUmUuY29sLCJzcGFubmVkIiwhMCk7dmFyIGh0PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmFkZChSZSk7cmV0dXJuIWh0fHwoaj9LZT1bUmUucm93''@;'; put 'put ''LFJlLmNvbCxOZV06dGhpcy5ob3QucG9wdWxhdGVGcm9tQXJyYXkoUmUucm93LFJlLmNvbCxOZSx2b2lkIDAsdm9pZCAwLHRoaXMucGx1Z2luTmFtZSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyTWVyZ2VDZWxscyIseSxSZSxJKSxLZSl9fSx7a2V5OiJ1bm1lcmdlUmFuZ2UiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGo9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0V2l0aGluUmFuZ2UoeSk7IWp8fCh0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW5tZXJnZUNl''@;'; put 'put ''bGxzIix5LEkpLEdyKGosZnVuY3Rpb24oY2Upe0MubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLnJlbW92ZShjZS5yb3csY2UuY29sKSxyYSgwLGNlLnJvd3NwYW4tMSxmdW5jdGlvbihfZSl7cmEoMCxjZS5jb2xzcGFuLTEsZnVuY3Rpb24oUmUpe0MuaG90LnJlbW92ZUNlbGxNZXRhKGNlLnJvdytf''@;'; put 'put ''ZSxjZS5jb2wrUmUsImhpZGRlbiIpfSl9KSxDLmhvdC5yZW1vdmVDZWxsTWV0YShjZS5yb3csY2UuY29sLCJzcGFubmVkIil9KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbm1lcmdlQ2VsbHMiLHksSSksdGhpcy5ob3QucmVuZGVyKCkpfX0se2tleToidG9nZ2xlTWVyZ2UiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKHkpe3ZhciBDPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LmZyb20ucm93LHkuZnJvbS5jb2wpO0Mucm93PT09eS5mcm9tLnJvdyYmQy5jb2w9PT15LmZyb20uY29sJiZDLnJvdytDLnJvd3NwYW4tMT09PXkudG8ucm93JiZDLmNvbCtDLmNvbHNwYW4tMT09PXkudG8u''@;'; put 'put ''Y29sP3RoaXMudW5tZXJnZVJhbmdlKHkpOnRoaXMubWVyZ2VTZWxlY3Rpb24oeSl9fSx7a2V5OiJtZXJnZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7dmFyIGNlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHksQyksX2U9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSSxqKTt0aGlz''@;'; put 'put ''Lm1lcmdlUmFuZ2UodGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShjZSxjZSxfZSkpfX0se2tleToidW5tZXJnZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7dmFyIGNlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHksQyksX2U9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSSxqKTt0''@;'; put 'put ''aGlzLnVubWVyZ2VSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGNlLGNlLF9lKSl9fSx7a2V5OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdlbmVyYXRlRnJvbVNldHRpbmdzKHRoaXMuaG90LmdldFNldHRpbmdzKClbbEddKSx0aGlzLmhvdC5yZW5kZXIoKX19''@;'; put 'put ''LHtrZXk6InJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0KHtrZXlzOltbIkNvbnRyb2wiLCJtIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS50b2dn''@;'; put 'put ''bGVNZXJnZSh5LmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKSx5LmhvdC5yZW5kZXIoKX0scnVuT25seUlmOmZ1bmN0aW9uKGNlKXtyZXR1cm4hY2UuYWx0S2V5fSxncm91cDpFRGV9KX19LHtrZXk6InVucmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QuZ2V0''@;'; put 'put ''U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoRURlKX19LHtrZXk6Im9uQWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXtpZih5KWZvcih2YXIgQz10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJn''@;'; put 'put ''ZWRDZWxscyxJPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksaj0wO2o8Qy5sZW5ndGg7ais9MSlpZihJLmZyb20ucm93PT09Q1tqXS5yb3cmJkkuZnJvbS5jb2w9PT1DW2pdLmNvbCYmSS50by5yb3c9PT1DW2pdLnJvdytDW2pdLnJvd3NwYW4tMSYmSS50by5jb2w9PT1DW2pdLmNv''@;'; put 'put ''bCtDW2pdLmNvbHNwYW4tMSlyZXR1cm4hMTtyZXR1cm4geX19LHtrZXk6Im9uTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBjZSxDPU1EZS5nZXQodGhpcyksST10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGo9e3Jvdzp5LnJvdyxjb2w6eS5jb2x9''@;'; put 'put ''LF9lPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEkuaGlnaGxpZ2h0LnJvdyxJLmhpZ2hsaWdodC5jb2wpLFJlPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChfZS5yb3csX2UuY29sKTtpZihDLmxhc3REZXNpcmVkQ29vcmRzfHwoQy5sYXN0RGVzaXJlZENvb3Jkcz10aGlzLmhv''@;'; put 'put ''dC5fY3JlYXRlQ2VsbENvb3JkcyhudWxsLG51bGwpKSxSZSl7dmFyIE5lPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKFJlLnJvdyxSZS5jb2wpLEtlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKFJlLnJvdytSZS5yb3dzcGFuLTEsUmUuY29sK1JlLmNvbHNwYW4tMSk7dGhpcy5ob3Qu''@;'; put 'put ''X2NyZWF0ZUNlbGxSYW5nZShOZSxOZSxLZSkuaW5jbHVkZXMoQy5sYXN0RGVzaXJlZENvb3Jkcyl8fChDLmxhc3REZXNpcmVkQ29vcmRzPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKG51bGwsbnVsbCkpLGoucm93PUMubGFzdERlc2lyZWRDb29yZHMucm93P0MubGFzdERlc2lyZWRDb29y''@;'; put 'put ''ZHMucm93LV9lLnJvdzpqLnJvdyxqLmNvbD1DLmxhc3REZXNpcmVkQ29vcmRzLmNvbD9DLmxhc3REZXNpcmVkQ29vcmRzLmNvbC1fZS5jb2w6ai5jb2wseS5yb3c+MD9qLnJvdz1SZS5yb3crUmUucm93c3Bhbi0xLV9lLnJvdyt5LnJvdzp5LnJvdzwwJiYoai5yb3c9X2Uucm93LVJlLnJvdyt5''@;'; put 'put ''LnJvdykseS5jb2w+MD9qLmNvbD1SZS5jb2wrUmUuY29sc3Bhbi0xLV9lLmNvbCt5LmNvbDp5LmNvbDwwJiYoai5jb2w9X2UuY29sLVJlLmNvbCt5LmNvbCl9Y2U9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSS5oaWdobGlnaHQucm93K2oucm93LEkuaGlnaGxpZ2h0LmNvbCtqLmNvbCk7''@;'; put 'put ''dmFyIEJ0PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChjZS5yb3csY2UuY29sKTtpZihCdCl7dmFyICR0PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldEZpcnN0UmVuZGVyYWJsZUNvb3JkcyhCdC5yb3csQnQuY29sKTtDLmxhc3REZXNpcmVkQ29vcmRzPWNlLGo9e3Jvdzok''@;'; put 'put ''dC5yb3ctX2Uucm93LGNvbDokdC5jb2wtX2UuY29sfX0wIT09ai5yb3cmJih5LnJvdz1qLnJvdyksMCE9PWouY29sJiYoeS5jb2w9ai5jb2wpfX0se2tleToib25Nb2RpZnlUcmFuc2Zvcm1FbmQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST10aGlzLmhvdC5nZXRTZWxlY3RlZFJh''@;'; put 'put ''bmdlTGFzdCgpLGo9czMoeSksY2U9dGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0VXBkYXRlZFNlbGVjdGlvblJhbmdlKEkseSksX2U9czMoaiksUmU9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0V2l0aGluUmFuZ2UoY2UsITApO2Rve19lPXMzKGopLHRoaXMuc2VsZWN0aW9u''@;'; put 'put ''Q2FsY3VsYXRpb25zLmdldFVwZGF0ZWRTZWxlY3Rpb25SYW5nZShJLGopLEdyKFJlLGZ1bmN0aW9uKE5lKXtDLnNlbGVjdGlvbkNhbGN1bGF0aW9ucy5zbmFwRGVsdGEoaixJLE5lKX0pfXdoaWxlKGoucm93IT09X2Uucm93fHxqLmNvbCE9PV9lLmNvbCk7eS5yb3c9ai5yb3cseS5jb2w9ai5j''@;'; put 'put ''b2x9fSx7a2V5OiJvbk1vZGlmeUdldENlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYoISh5PDB8fEM8MCkpe3ZhciBJPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LEMpO2lmKEkpe3ZhciBqPUkucm93LGNlPUkuY29sO3JldHVybltqLGNlLGorSS5yb3dzcGFuLTEs''@;'; put 'put ''Y2UrSS5jb2xzcGFuLTFdfX19fSx7a2V5OiJhZGRNZXJnZUFjdGlvbnNUb0NvbnRleHRNZW51Iix2YWx1ZTpmdW5jdGlvbih5KXt5Lml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LGZ1bmN0aW9uIEQ0dChkKXtyZXR1cm57a2V5OiJtZXJnZUNlbGxzIixuYW1lOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGg9dGhpcy5nZXRTZWxlY3RlZExhc3QoKTtpZihoKXt2YXIgdj1kLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoaFswXSxoWzFdKTtpZih2LnJvdz09PWhbMF0mJnYuY29sPT09aFsxXSYmdi5yb3crdi5yb3dzcGFuLTE9PT1oWzJdJiZ2LmNvbCt2LmNvbHNwYW4tMT09PWhbM10pcmV0dXJu''@;'; put 'put ''IHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShLNGUpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoWDRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLnRvZ2dsZU1lcmdlT25TZWxlY3Rpb24oKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFNlbGVjdGVkTGFzdCgp''@;'; put 'put ''O3JldHVybiFofHxOZy5pc1NpbmdsZUNlbGwoe3JvdzpoWzBdLGNvbDpoWzFdLHJvd3NwYW46aFsyXS1oWzBdKzEsY29sc3BhbjpoWzNdLWhbMV0rMX0pfHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKX0saGlkZGVuOiExfX0odGhpcykpfX0se2tleToib25BZnRlclJlbmRl''@;'; put 'put ''cmVyIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIGo9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KEMsSSksY2U9QWwoaik/czMoaik6dm9pZCAwO2lmKEFsKGNlKSl7dmFyIF9lPXRoaXMuaG90LFJlPV9lLnJvd0luZGV4TWFwcGVyLE5lPV9lLmNvbHVtbkluZGV4TWFwcGVyLERu''@;'; put 'put ''PWJEZSh0aGlzLnRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUoY2Uucm93LGNlLnJvd3NwYW4sY2UuY29sLGNlLmNvbHNwYW4pLDIpLHByPURuWzFdLFlyPURuWzBdLVJlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoQykrMSxfaT1wci1OZS5nZXRSZW5kZXJhYmxlRnJvbVZp''@;'; put 'put ''c3VhbEluZGV4KEkpKzE7Y2Uucm93PVJlLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChjZS5yb3csMSksY2UuY29sPU5lLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChjZS5jb2wsMSksY2Uucm93c3Bhbj1NYXRoLm1pbihjZS5yb3dzcGFuLFlyKSxjZS5jb2xzcGFuPU1hdGgubWluKGNlLmNv''@;'; put 'put ''bHNwYW4sX2kpfVJnZSh5LGNlLEMsSSl9fSx7a2V5OiJvbkJlZm9yZVNldFJhbmdlU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmlzRmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbCh5LnJvdyx5LmNvbCkpe3ZhciBDPXRoaXMubWVyZ2VkQ2Vs''@;'; put 'put ''bHNDb2xsZWN0aW9uLmdldCh5LnJvdyx5LmNvbCksST1bQy5yb3csQy5jb2xdO3kucm93PUlbMF0seS5jb2w9SVsxXX19fSx7a2V5OiJvbkJlZm9yZVNldFJhbmdlRW5kIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO0MuaGlnaGxpZ2h0''@;'; put 'put ''PXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEMuaGlnaGxpZ2h0LnJvdyxDLmhpZ2hsaWdodC5jb2wpLEMudG89eTt2YXIgST0hMTtpZighdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpJiYhdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hl''@;'; put 'put ''YWRlcigpKWRve0k9ITE7Zm9yKHZhciBqPTA7ajx0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxscy5sZW5ndGg7ais9MSl7dmFyIF9lPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzW2pdLmdldFJhbmdlKCk7Qy5leHBhbmRCeVJhbmdlKF9lKSYmKHku''@;'; put 'put ''cm93PUMudG8ucm93LHkuY29sPUMudG8uY29sLEk9ITApfX13aGlsZShJKX19LHtrZXk6Im9uQWZ0ZXJHZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBqPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LEMpO2omJihqLnJvdyE9PXl8fGouY29sIT09Qz9JLmNv''@;'; put 'put ''cHlhYmxlPSExOihJLnJvd3NwYW49ai5yb3dzcGFuLEkuY29sc3Bhbj1qLmNvbHNwYW4pKX19LHtrZXk6Im9uQWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuY291bnRDb2xzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydFJv''@;'; put 'put ''d1N0YXJ0KHksQyksdGhpcy5tb2RpZnlWaWV3cG9ydFJvd0VuZCh5LEMpfX0se2tleToibW9kaWZ5Vmlld3BvcnRSb3dTdGFydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsaj1JLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoeS5z''@;'; put 'put ''dGFydFJvdyksY2U9MDtjZTxDO2NlKz0xKXt2YXIgX2U9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGosY2UpO2lmKEFsKF9lKSl7dmFyIFJlPUkuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChJLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfZS5yb3csMSkpO2lmKFJlPHku''@;'; put 'put ''c3RhcnRSb3cpcmV0dXJuIHkuc3RhcnRSb3c9UmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93U3RhcnQoeSxDKX19fX0se2tleToibW9kaWZ5Vmlld3BvcnRSb3dFbmQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLGo9SS5nZXRWaXN1''@;'; put 'put ''YWxGcm9tUmVuZGVyYWJsZUluZGV4KHkuZW5kUm93KSxjZT0wO2NlPEM7Y2UrPTEpe3ZhciBfZT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoaixjZSk7aWYoQWwoX2UpKXt2YXIgTmU9SS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkuZ2V0TmVhcmVzdE5vdEhpZGRlbklu''@;'; put 'put ''ZGV4KF9lLnJvdytfZS5yb3dzcGFuLTEsLTEpKTtpZihOZT55LmVuZFJvdylyZXR1cm4geS5lbmRSb3c9TmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93RW5kKHksQyl9fX19LHtrZXk6Im9uQWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''eSl7dmFyIEM9dGhpcy5ob3QuY291bnRSb3dzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtblN0YXJ0KHksQyksdGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtbkVuZCh5LEMpfX0se2tleToibW9kaWZ5Vmlld3BvcnRDb2x1bW5TdGFydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9''@;'; put 'put ''dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsaj1JLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoeS5zdGFydENvbHVtbiksY2U9MDtjZTxDO2NlKz0xKXt2YXIgX2U9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGNlLGopO2lmKEFsKF9lKSl7dmFyIFJlPUkuZ2V0UmVuZGVy''@;'; put 'put ''YWJsZUZyb21WaXN1YWxJbmRleChJLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfZS5jb2wsMSkpO2lmKFJlPHkuc3RhcnRDb2x1bW4pcmV0dXJuIHkuc3RhcnRDb2x1bW49UmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Q29sdW1uU3RhcnQoeSxDKX19fX0se2tleToibW9kaWZ5Vmlld3Bv''@;'; put 'put ''cnRDb2x1bW5FbmQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGo9SS5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHkuZW5kQ29sdW1uKSxjZT0wO2NlPEM7Y2UrPTEpe3ZhciBfZT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlv''@;'; put 'put ''bi5nZXQoY2Usaik7aWYoQWwoX2UpKXt2YXIgTmU9SS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KF9lLmNvbCtfZS5jb2xzcGFuLTEsLTEpKTtpZihOZT55LmVuZENvbHVtbilyZXR1cm4geS5lbmRDb2x1bW49TmUsdm9pZCB0aGlzLm1v''@;'; put 'put ''ZGlmeVZpZXdwb3J0Q29sdW1uRW5kKHksQyl9fX19LHtrZXk6InRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope3ZhciBOZSxLZSxjZT10aGlzLmhvdCxfZT1jZS5yb3dJbmRleE1hcHBlcixSZT1jZS5jb2x1bW5JbmRleE1hcHBlcjtyZXR1''@;'; put 'put ''cm4gTmU9MD09PUM/X2UuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHksMSk6X2UuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHkrQy0xLC0xKSxLZT0wPT09aj9SZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSSwxKTpSZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSStqLTEsLTEpLFt5''@;'; put 'put ''Pj0wP19lLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoTmUpOnksST49MD9SZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEtlKTpJXX19LHtrZXk6Im9uTW9kaWZ5QXV0b2ZpbGxSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLmNv''@;'; put 'put ''cnJlY3RTZWxlY3Rpb25BcmVhU2l6ZShDKTt2YXIgST10aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLmdldERpcmVjdGlvbihDLHkpLGo9eTtpZih0aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLmRyYWdBcmVhT3ZlcmxhcHNDb2xsZWN0aW9ucyhDLGosSSkpcmV0dXJuIEM7dmFyIGNlPXRoaXMu''@;'; put 'put ''bWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKHtmcm9tOntyb3c6Q1swXSxjb2w6Q1sxXX0sdG86e3JvdzpDWzJdLGNvbDpDWzNdfX0pO3JldHVybiBjZSYmKGo9dGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5zbmFwRHJhZ0FyZWEoQyxqLEksY2UpKSxqfX0se2tleToib25B''@;'; put 'put ''ZnRlckNyZWF0ZUNvbCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJyaWdodCIseSxDKX19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVDb2wiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24u''@;'; put 'put ''c2hpZnRDb2xsZWN0aW9ucygibGVmdCIseSxDKX19LHtrZXk6Im9uQWZ0ZXJDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXsiYXV0byIhPT1JJiZ0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJkb3duIix5LEMpfX0se2tleToib25BZnRlclJlbW92''@;'; put 'put ''ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJ1cCIseSxDKX19LHtrZXk6Im9uQWZ0ZXJDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHksQyl7IkF1dG9maWxsLmZpbGwiPT09QyYmdGhpcy5hdXRvZmlsbENhbGN1bGF0''@;'; put 'put ''aW9ucy5yZWNyZWF0ZUFmdGVyRGF0YVBvcHVsYXRpb24oeSl9fSx7a2V5OiJvbkJlZm9yZURyYXdBcmVhQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZihDJiYiYXJlYSI9PT1DKXt2YXIgST10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO0dyKHRoaXMubWVyZ2VkQ2VsbHND''@;'; put 'put ''b2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKEkpLGZ1bmN0aW9uKGNlKXtJLmdldEJvdHRvbUVuZENvcm5lcigpLnJvdz09PWNlLmdldExhc3RSb3coKSYmSS5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2w9PT1jZS5nZXRMYXN0Q29sdW1uKCkmJih5WzJdPWNlLnJvdyx5WzNdPWNlLmNvbCl9KX19''@;'; put 'put ''fSx7a2V5OiJvbkFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXtpZih0aGlzLmVuYWJsZWQpe3ZhciBqPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LnJvdyx5LmNvbCk7aWYoail7dmFyIGNlPUM+MCxfZT1DPDAsUmU9STwwLE5lPUk+MCxL''@;'; put 'put ''ZT1qLnJvdytqLnJvd3NwYW4tMT09dGhpcy5ob3QuY291bnRSb3dzKCktMSxodD0wPT09ai5yb3csQnQ9ai5jb2wrai5jb2xzcGFuLTE9PXRoaXMuaG90LmNvdW50Q29scygpLTE7KGNlJiZLZXx8X2UmJmh0fHxOZSYmQnR8fFJlJiYwPT09ai5jb2wpJiYoeS5yb3c9ai5yb3cseS5jb2w9ai5j''@;'; put 'put ''b2wpfX19fSx7a2V5OiJvbkFmdGVyRHJhd1NlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7aWYoSSlyZXR1cm4gdGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lKHksQyxJLGopfX0se2tleToib25CZWZvcmVSZW1vdmVDZWxs''@;'; put 'put ''Q2xhc3NOYW1lcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lVG9SZW1vdmUoKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxHfX0se2tleToiUExVR0lO''@;'; put 'put ''X1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTUwfX1dKSxofShHcyk7ZnVuY3Rpb24geERlKGQpe3JldHVybiBmdW5jdGlvbiBYNHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIEo0dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBRNHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFREZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9T''@;'; put 'put ''dHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMy''@;'; put 'put ''KSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gVERlKGQsZyl9fShkKXx8ZnVuY3Rpb24gVTR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxl''@;'; put 'put ''LCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBURGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTty''@;'; put 'put ''ZXR1cm4gdn1mdW5jdGlvbiBERGUoKXtjMShEMihJRGV8fChJRGU9ZnVuY3Rpb24gJDR0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWyJQbHVnaW5z''@;'; put 'put ''IGBjb2x1bW5Tb3J0aW5nYCBhbmQgYG11bHRpQ29sdW1uU29ydGluZ2Agc2hvdWxkIG5vdCBiZSBlbmFibGVkIHNpbXVsdGFuZW91c2x5LiBcbiAgICBPbmx5IGBtdWx0aUNvbHVtblNvcnRpbmdgIHdpbGwgd29yay4iXSxbIlBsdWdpbnMgXFxgY29sdW1uU29ydGluZ1xcYCBhbmQgXFxgbXVs''@;'; put 'put ''dGlDb2x1bW5Tb3J0aW5nXFxgIHNob3VsZCBub3QgYmUgZW5hYmxlZCBzaW11bHRhbmVvdXNseS4gXG4gICAgT25seSBcXGBtdWx0aUNvbHVtblNvcnRpbmdcXGAgd2lsbCB3b3JrLiJdKSkpKX1mdW5jdGlvbiBxNHQoZCxnLGgpe3ZhciB2PVtdO3JldHVybiExPT09aHx8ZC5pc0NvbHVtblNv''@;'; put 'put ''cnRlZChnKSYmZC5nZXROdW1iZXJPZlNvcnRlZENvbHVtbnMoKT4xJiZ2LnB1c2goIiIuY29uY2F0KCJzb3J0IiwiLSIpLmNvbmNhdChkLmdldEluZGV4T2ZDb2x1bW5JblNvcnRRdWV1ZShnKSsxKSksdn1mdW5jdGlvbiBlcHQoZCl7dmFyIGc9ZC5jbGFzc05hbWUuc3BsaXQoIiAiKSxoPW5l''@;'; put 'put ''dyBSZWdFeHAoIl4iLmNvbmNhdCgic29ydCIsIi1bMC05XXsxLDJ9JCIpKTtyZXR1cm4gZy5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuIGgudGVzdCh2KX0pfWZ1bmN0aW9uIE5nZShkKXtyZXR1cm4oTmdlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rp''@;'; put 'put ''b24gT0RlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVu''@;'; put 'put ''Y3Rpb24geTQoKXtyZXR1cm4geTQ9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PXJwdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1''@;'; put 'put ''cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0seTQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJwdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9aDMoZCkpOyk7''@;'; put 'put ''cmV0dXJuIGR9ZnVuY3Rpb24gVmdlKGQsZyl7cmV0dXJuKFZnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGFwdChkLGcpe2lmKGcmJigib2JqZWN0''@;'; put 'put ''Ij09PU5nZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gbHB0KGQpe2lmKHZv''@;'; put 'put ''aWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gaDMoZCl7cmV0dXJuKGgzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGpnZT0ibXVsdGlDb2x1bW5Tb3J0aW5nIixSRGU9ImNvbHVtblNvcnRpbmciO3pFZShqZ2UsZnVuY3Rpb24gSzR0KGQsZyl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKGgsdil7dmFyIEM9eERlKGgpLnNsaWNlKDEpLGo9eERlKHYpLnNsaWNlKDEpO3JldHVybiBmdW5jdGlvbiBjZShfZSl7dmFyIFJlPWRbX2VdLE5lPWdbX2VdLEtlPUNbX2VdLGh0PWpbX2VdLEJ0PU5lLm11bHRpQ29sdW1uU29ydGluZyxobj0oQnQuY29tcGFyZUZ1bmN0aW9uRmFj''@;'; put 'put ''dG9yeT9CdC5jb21wYXJlRnVuY3Rpb25GYWN0b3J5OkdFZShOZS50eXBlKSkoUmUsTmUsQnQpKEtlLGh0KTtpZigwPT09aG4pe3ZhciBEbj1fZSsxO2lmKHZvaWQgMCE9PWdbRG5dKXJldHVybiBjZShEbil9cmV0dXJuIGhufSgwKX19KTt2YXIgZnB0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBp''@;'; put 'put ''cHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1''@;'; put 'put ''Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmVmdlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gb3B0KGQpe3ZhciBnPWZ1bmN0aW9uIHNwdCgpe2lmKCJ1bmRl''@;'; put 'put ''ZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWgzKGQpO2lmKGcpe3ZhciBDPWgzKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5''@;'; put 'put ''PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhcHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIHRwdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j''@;'; put 'put ''dGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5wbHVnaW5LZXk9amdlLHl9cmV0dXJuIGZ1bmN0aW9uIG5wdChkLGcsaCl7ZyYmT0RlKGQucHJvdG90eXBlLGcpLGgmJk9EZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfSho''@;'; put 'put ''LFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHk0KGgzKGgucHJvdG90eXBlKSwiaXNFbmFibGVkIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpeyF0aGlzLmVuYWJsZWQmJnRoaXMuaG90LmdldFNldHRpbmdz''@;'; put 'put ''KClbdGhpcy5wbHVnaW5LZXldJiZ0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1JEZV0mJkREZSgpLHk0KGgzKGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt5NChoMyhoLnByb3RvdHlwZSks''@;'; put 'put ''ImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJzb3J0Iix2YWx1ZTpmdW5jdGlvbih5KXt5NChoMyhoLnByb3RvdHlwZSksInNvcnQiLHRoaXMpLmNhbGwodGhpcyx5KX19LHtrZXk6ImNsZWFyU29ydCIsdmFsdWU6ZnVuY3Rpb24oKXt5NChoMyhoLnByb3RvdHlwZSks''@;'; put 'put ''ImNsZWFyU29ydCIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImlzU29ydGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB5NChoMyhoLnByb3RvdHlwZSksImlzU29ydGVkIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJu''@;'; put 'put ''IHk0KGgzKGgucHJvdG90eXBlKSwiZ2V0U29ydENvbmZpZyIsdGhpcykuY2FsbCh0aGlzLHkpfX0se2tleToic2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7eTQoaDMoaC5wcm90b3R5cGUpLCJzZXRTb3J0Q29uZmlnIix0aGlzKS5jYWxsKHRoaXMseSl9fSx7a2V5OiJnZXROb3Jt''@;'; put 'put ''YWxpemVkU29ydENvbmZpZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3JldHVybiBBcnJheS5pc0FycmF5KHkpP3k6W3ldfX0se2tleToidXBkYXRlSGVhZGVyQ2xhc3NlcyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSl7Zm9yKHZhciBDLEk9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheShJPjE/SS0xOjApLGNlPTE7Y2U8STtjZSsrKWpbY2UtMV09YXJndW1lbnRzW2NlXTsoQz15NChoMyhoLnByb3RvdHlwZSksInVwZGF0ZUhlYWRlckNsYXNzZXMiLHRoaXMpKS5jYWxsLmFwcGx5KEMs''@;'; put 'put ''W3RoaXMseV0uY29uY2F0KGopKSx1bCh5LGVwdCh5KSksITEhPT10aGlzLmVuYWJsZWQmJlAwKHkscTR0LmFwcGx5KHZvaWQgMCxqKSl9fSx7a2V5OiJvblVwZGF0ZVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XSYmdGhp''@;'; put 'put ''cy5ob3QuZ2V0U2V0dGluZ3MoKVtSRGVdJiZERGUoKSx5NChoMyhoLnByb3RvdHlwZSksIm9uVXBkYXRlU2V0dGluZ3MiLHRoaXMpLmNhbGwodGhpcyx5KX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHksQyl7ITEhPT1TOGUoQy5yb3csQy5jb2wseSkm''@;'; put 'put ''JnRoaXMud2FzQ2xpY2thYmxlSGVhZGVyQ2xpY2tlZCh5LEMuY29sKSYmKHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKT8odGhpcy5ob3QuZGVzZWxlY3RDZWxsKCksdGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhDLmNvbCksdGhpcy5zb3J0KHRoaXMuZ2V0TmV4''@;'; put 'put ''dFNvcnRDb25maWcoQy5jb2wsImFwcGVuZCIpKSk6dGhpcy5zb3J0KHRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyhDLmNvbCkpKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGpnZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIDE3MH19XSksaH0oJEVlKTtmdW5jdGlvbiBaZ2UoZCl7cmV0dXJuKFpnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEJEZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1l''@;'; put 'put ''cmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFRuZSgpe3JldHVybiBUbmU9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0''@;'; put 'put ''LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PXBwdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sVG5lLmFwcGx5KHRoaXMs''@;'; put 'put ''YXJndW1lbnRzKX1mdW5jdGlvbiBwcHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPWtSKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIHpnZShkLGcpe3JldHVybih6Z2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5z''@;'; put 'put ''ZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiB2cHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1aZ2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEFwdChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1''@;'; put 'put ''cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIGtSKGQpe3JldHVybihrUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5''@;'; put 'put ''cGVPZihoKX0pKGQpfXZhciBfcHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGdwdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJv''@;'; put 'put ''dG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZ6Z2UoZCxnKX0oaCxkKTt2YXIgZz1m''@;'; put 'put ''dW5jdGlvbiBtcHQoZCl7dmFyIGc9ZnVuY3Rpb24geXB0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1''@;'; put 'put ''cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9a1IoZCk7aWYoZyl7dmFyIEM9a1IodGhpcykuY29uc3RydWN0''@;'; put 'put ''b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHZwdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gaHB0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmRyYWdnZWQ9W10seS5ldmVudE1hbmFnZXI9bnVsbCx5Lmxhc3RTZXRDZWxsPW51bGwseX1yZXR1cm4gZnVuY3Rpb24gZHB0KGQsZyxoKXtnJiZCRGUo''@;'; put 'put ''ZC5wcm90b3R5cGUsZyksaCYmQkRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbTgoKX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLmVuYWJsZWR8fCh0aGlzLmV2ZW50TWFuYWdlcnx8KHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyBQMSh0aGlzKSksdGhpcy5yZWdpc3Rlckxpc3RlbmVycygpLFRuZShrUihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJyZWdpc3Rlckxp''@;'; put 'put ''c3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcyxJPXRoaXMuaG90LnJvb3RFbGVtZW50O2Z1bmN0aW9uIGooY2Upe2lmKDE9PT1DLmRyYWdnZWQubGVuZ3RoKXJldHVybiBDLmRyYWdnZWQuc3BsaWNlKDAsQy5kcmFnZ2VkLmxlbmd0aCksITA7dmFyIF9lPUMuZHJh''@;'; put 'put ''Z2dlZC5pbmRleE9mKGNlKTtpZigtMT09PV9lKXJldHVybiExOzA9PT1fZT9DLmRyYWdnZWQ9Qy5kcmFnZ2VkLnNsaWNlKDAsMSk6MT09PV9lJiYoQy5kcmFnZ2VkPUMuZHJhZ2dlZC5zbGljZSgtMSkpfXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSSwidG91Y2hzdGFydCIs''@;'; put 'put ''ZnVuY3Rpb24oY2Upe3ZhciBfZTtyZXR1cm4gWGEoY2UudGFyZ2V0LCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhfZT1DLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLEMuZHJhZ2dlZC5wdXNoKCJ0b3AiKSxDLnRvdWNoU3RhcnRSYW5nZT17d2lkdGg6X2UuZ2V0V2lkdGgoKSxo''@;'; put 'put ''ZWlnaHQ6X2UuZ2V0SGVpZ2h0KCksZGlyZWN0aW9uOl9lLmdldERpcmVjdGlvbigpfSxjZS5wcmV2ZW50RGVmYXVsdCgpLCExKTpYYShjZS50YXJnZXQsImJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIik/KF9lPUMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksQy5kcmFnZ2VkLnB1''@;'; put 'put ''c2goImJvdHRvbSIpLEMudG91Y2hTdGFydFJhbmdlPXt3aWR0aDpfZS5nZXRXaWR0aCgpLGhlaWdodDpfZS5nZXRIZWlnaHQoKSxkaXJlY3Rpb246X2UuZ2V0RGlyZWN0aW9uKCl9LGNlLnByZXZlbnREZWZhdWx0KCksITEpOnZvaWQgMH0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlz''@;'; put 'put ''dGVuZXIoSSwidG91Y2hlbmQiLGZ1bmN0aW9uKGNlKXtyZXR1cm4gWGEoY2UudGFyZ2V0LCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhqLmNhbGwoQywidG9wIiksQy50b3VjaFN0YXJ0UmFuZ2U9dm9pZCAwLGNlLnByZXZlbnREZWZhdWx0KCksITEpOlhhKGNlLnRhcmdldCwiYm90''@;'; put 'put ''dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEiKT8oai5jYWxsKEMsImJvdHRvbSIpLEMudG91Y2hTdGFydFJhbmdlPXZvaWQgMCxjZS5wcmV2ZW50RGVmYXVsdCgpLCExKTp2b2lkIDB9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEksInRvdWNobW92ZSIsZnVuY3Rpb24o''@;'; put 'put ''Y2Upe3ZhciBSZSxOZSxLZSxodCxCdCwkdDtpZigwIT09Qy5kcmFnZ2VkLmxlbmd0aCl7dmFyIGhuPXkuaG90LnJvb3REb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGNlLnRvdWNoZXNbMF0uY2xpZW50WCxjZS50b3VjaGVzWzBdLmNsaWVudFkpOyFobnx8aG49PT1DLmxhc3RTZXRDZWxsfHwo''@;'; put 'put ''KCJURCI9PT1obi5ub2RlTmFtZXx8IlRIIj09PWhuLm5vZGVOYW1lKSYmKC0xPT09KFJlPUMuaG90LmdldENvb3JkcyhobikpLmNvbCYmKFJlLmNvbD0wKSxLZT0oTmU9Qy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSkuZ2V0V2lkdGgoKSxodD1OZS5nZXRIZWlnaHQoKSxCdD1OZS5nZXRE''@;'; put 'put ''aXJlY3Rpb24oKSwxPT09S2UmJjE9PT1odCYmQy5ob3Quc2VsZWN0aW9uLnNldFJhbmdlRW5kKFJlKSxudWxsIT09KCR0PUMuZ2V0Q3VycmVudFJhbmdlQ29vcmRzKE5lLFJlLEMudG91Y2hTdGFydFJhbmdlLmRpcmVjdGlvbixCdCxDLmRyYWdnZWRbMF0pKS5zdGFydCYmQy5ob3Quc2VsZWN0''@;'; put 'put ''aW9uLnNldFJhbmdlU3RhcnQoJHQuc3RhcnQpLEMuaG90LnNlbGVjdGlvbi5zZXRSYW5nZUVuZCgkdC5lbmQpLEMubGFzdFNldENlbGw9aG4pLGNlLnByZXZlbnREZWZhdWx0KCkpfX0pfX0se2tleToiZ2V0Q3VycmVudFJhbmdlQ29vcmRzIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqLGNlKXt2''@;'; put 'put ''YXIgX2U9eS5nZXRUb3BTdGFydENvcm5lcigpLFJlPXkuZ2V0Qm90dG9tRW5kQ29ybmVyKCksTmU9eS5nZXRCb3R0b21TdGFydENvcm5lcigpLEtlPXkuZ2V0VG9wRW5kQ29ybmVyKCksaHQ9e3N0YXJ0Om51bGwsZW5kOm51bGx9O3N3aXRjaChJKXtjYXNlIk5FLVNXIjpzd2l0Y2goail7Y2Fz''@;'; put 'put ''ZSJORS1TVyI6Y2FzZSJOVy1TRSI6aHQ9InRvcCI9PT1jZT97c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3cseS5oaWdobGlnaHQuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoTmUucm93LEMuY29sKX06e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxs''@;'; put 'put ''Q29vcmRzKHkuaGlnaGxpZ2h0LnJvdyxDLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEMucm93LF9lLmNvbCl9O2JyZWFrO2Nhc2UiU0UtTlciOiJib3R0b20iPT09Y2UmJihodD17c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoUmUucm93LEMuY29sKSxlbmQ6''@;'; put 'put ''dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3csX2UuY29sKX0pfWJyZWFrO2Nhc2UiTlctU0UiOnN3aXRjaChqKXtjYXNlIk5FLVNXIjoidG9wIj09PWNlP2h0PXtzdGFydDpDLGVuZDpOZX06aHQuZW5kPUM7YnJlYWs7Y2FzZSJOVy1TRSI6InRvcCI9PT1jZT9odD17c3RhcnQ6Qyxl''@;'; put 'put ''bmQ6UmV9Omh0LmVuZD1DO2JyZWFrO2Nhc2UiU0UtTlciOiJ0b3AiPT09Y2U/aHQ9e3N0YXJ0OkMsZW5kOl9lfTpodC5lbmQ9QzticmVhaztjYXNlIlNXLU5FIjoidG9wIj09PWNlP2h0PXtzdGFydDpDLGVuZDpLZX06aHQuZW5kPUN9YnJlYWs7Y2FzZSJTVy1ORSI6c3dpdGNoKGope2Nhc2Ui''@;'; put 'put ''TlctU0UiOmh0PSJib3R0b20iPT09Y2U/e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEMucm93LF9lLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKE5lLnJvdyxDLmNvbCl9OntzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfZS5yb3csQy5jb2wp''@;'; put 'put ''LGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhDLnJvdyxSZS5jb2wpfTticmVhaztjYXNlIlNXLU5FIjpodD0idG9wIj09PWNlP3tzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5LmhpZ2hsaWdodC5yb3csQy5jb2wpLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jk''@;'; put 'put ''cyhDLnJvdyxSZS5jb2wpfTp7c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3csX2UuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoX2Uucm93LEMuY29sKX07YnJlYWs7Y2FzZSJTRS1OVyI6ImJvdHRvbSI9PT1jZT9odD17c3RhcnQ6dGhpcy5ob3QuX2Ny''@;'; put 'put ''ZWF0ZUNlbGxDb29yZHMoQy5yb3csS2UuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoX2Uucm93LEMuY29sKX06InRvcCI9PT1jZSYmKGh0PXtzdGFydDpOZSxlbmQ6Q30pfWJyZWFrO2Nhc2UiU0UtTlciOnN3aXRjaChqKXtjYXNlIk5XLVNFIjpjYXNlIk5FLVNXIjpjYXNl''@;'; put 'put ''IlNXLU5FIjoidG9wIj09PWNlJiYoaHQuZW5kPUMpO2JyZWFrO2Nhc2UiU0UtTlciOiJ0b3AiPT09Y2U/aHQuZW5kPUM6aHQ9e3N0YXJ0OkMsZW5kOl9lfX19cmV0dXJuIGh0fX0se2tleToiaXNEcmFnZ2VkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyYWdnZWQubGVuZ3RoPjB9''@;'; put 'put ''fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJtdWx0aXBsZVNlbGVjdGlvbkhhbmRsZXMifX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTYwfX1dKSxofShHcyk7ZnVuY3Rpb24gR2dlKCl7dmFyIGQ9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGc9ZC5sYWJlbCxoPXZvaWQgMD09PWc/IiI6Zyx2PWQuY29sc3Bhbix5PXZvaWQgMD09PXY/MTp2LEM9ZC5vcmlnQ29sc3BhbixJPXZvaWQgMD09PUM/MTpDLGo9ZC5jb2xsYXBzaWJsZSxjZT12b2lkIDAhPT1q''@;'; put 'put ''JiZqLF9lPWQuY3Jvc3NIaWRkZW5Db2x1bW5zLFJlPXZvaWQgMD09PV9lP1tdOl9lLE5lPWQuaXNDb2xsYXBzZWQsS2U9dm9pZCAwIT09TmUmJk5lLGh0PWQuaXNIaWRkZW4sQnQ9dm9pZCAwIT09aHQmJmh0LCR0PWQuaXNSb290LGhuPXZvaWQgMCE9PSR0JiYkdCxEbj1kLmlzUGxhY2Vob2xk''@;'; put 'put ''ZXIsaXI9dm9pZCAwIT09RG4mJkRuO3JldHVybntsYWJlbDpoLGNvbHNwYW46eSxvcmlnQ29sc3BhbjpJLGNvbGxhcHNpYmxlOmNlLGlzQ29sbGFwc2VkOktlLGNyb3NzSGlkZGVuQ29sdW1uczpSZSxpc0hpZGRlbjpCdCxpc1Jvb3Q6aG4saXNQbGFjZWhvbGRlcjppcn19ZnVuY3Rpb24gRkRl''@;'; put 'put ''KGQpe3JldHVybiBmdW5jdGlvbiBNcHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gV2dlKGQpfShkKXx8ZnVuY3Rpb24gU3B0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1''@;'; put 'put ''cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIGtwdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gV2dlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBXZ2UoZCxnKX19KGQpfHxmdW5j''@;'; put 'put ''dGlvbiBDcHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4i''@;'; put 'put ''KX0oKX1mdW5jdGlvbiBXZ2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBFcHQoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEvMCxoPVtdO2lmKDA9PT1nKXJldHVybiBoO0dyKGQsZnVuY3Rpb24oeSl7dmFyIEM9W10sST0wO2gucHVzaChDKSxHcih5LGZ1bmN0aW9uKGope3ZhciBjZT1HZ2UoKTtpZihBbChqKSl7dmFyIFJlPWouY29sc3BhbjtjZS5sYWJlbD1xMShqLmxh''@;'; put 'put ''YmVsKSwibnVtYmVyIj09dHlwZW9mIFJlJiZSZT4xJiYoY2UuY29sc3Bhbj1SZSxjZS5vcmlnQ29sc3Bhbj1SZSl9ZWxzZSBjZS5sYWJlbD1xMShqKTt2YXIgTmU9ITE7aWYoKEkrPWNlLm9yaWdDb2xzcGFuKT49ZyYmKGNlLmNvbHNwYW49Y2Uub3JpZ0NvbHNwYW4tKEktZyksY2Uub3JpZ0Nv''@;'; put 'put ''bHNwYW49Y2UuY29sc3BhbixOZT0hMCksQy5wdXNoKGNlKSxjZS5jb2xzcGFuPjEpZm9yKHZhciBLZT0wO0tlPGNlLmNvbHNwYW4tMTtLZSsrKUMucHVzaCh7bGFiZWw6IiIsaXNQbGFjZWhvbGRlcjohMH0pO3JldHVybiFOZX0pfSk7dmFyIHY9TWF0aC5tYXguYXBwbHkoTWF0aCxGRGUoVGwo''@;'; put 'put ''aCxmdW5jdGlvbih5KXtyZXR1cm4geS5sZW5ndGh9KSkpO3JldHVybiBHcihoLGZ1bmN0aW9uKHkpe2lmKHkubGVuZ3RoPHYpe3ZhciBDPVRsKG5ldyBBcnJheSh2LXkubGVuZ3RoKSxmdW5jdGlvbigpe3JldHVybiBHZ2UoKX0pO3kuc3BsaWNlLmFwcGx5KHksW3kubGVuZ3RoLDBdLmNvbmNh''@;'; put 'put ''dChGRGUoQykpKX19KSxofXZhciB4cHQ9WyJyb3ciLCJjb2wiXTtmdW5jdGlvbiBIRGUoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1''@;'; put 'put ''bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBJcHQoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxl''@;'; put 'put ''bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIE5EZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFlnZShkLGcsaCl7KGZ1bmN0aW9uIEJwdChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxl''@;'; put 'put ''bWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gQzgoZCxnKXtyZXR1cm4gZnVuY3Rpb24gUHB0KGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxWRGUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gc0coZCxnLGgpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbiBGcHQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLFZEZShkLGcsInNldCIpLGgpLGh9''@;'; put 'put ''ZnVuY3Rpb24gVkRlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQpfXZhciBqRGU9WyJsYWJlbCIsImNvbGxhcHNpYmxlIl0saTk9bmV3IFdlYWtN''@;'; put 'put ''YXAsRU09bmV3IFdlYWtNYXAsVWdlPW5ldyBXZWFrTWFwLEhwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXsoZnVuY3Rpb24gT3B0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlz''@;'; put 'put ''LGQpLFlnZSh0aGlzLGk5LHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pLFlnZSh0aGlzLEVNLHt3cml0YWJsZTohMCx2YWx1ZTowfSksWWdlKHRoaXMsVWdlLHt3cml0YWJsZTohMCx2YWx1ZToxLzB9KX1yZXR1cm4gZnVuY3Rpb24gUnB0KGQsZyxoKXtnJiZORGUoZC5wcm90b3R5cGUsZyksaCYm''@;'; put 'put ''TkRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldENvbHVtbnNMaW1pdCIsdmFsdWU6ZnVuY3Rpb24oaCl7c0codGhpcyxVZ2UsaCl9fSx7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtzRyh0aGlzLGk5LEVwdChoLEM4KHRoaXMsVWdlKSkpLHNHKHRoaXMsRU0sQzgodGhpcyxpOSkubGVuZ3RoKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEM4KHRoaXMs''@;'; put 'put ''aTkpfX0se2tleToibWVyZ2VXaXRoIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzO0dyKGgsZnVuY3Rpb24oeSl7dmFyIEM9eS5yb3csST15LmNvbCxqPWZ1bmN0aW9uIERwdChkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHYseSxoPWZ1bmN0aW9uIExwdChkLGcpe2lmKG51bGw9''@;'; put 'put ''PWQpcmV0dXJue307dmFyIHksQyxoPXt9LHY9T2JqZWN0LmtleXMoZCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0MrKykhKGcuaW5kZXhPZih5PXZbQ10pPj0wKSYmKGhbeV09ZFt5XSk7cmV0dXJuIGh9KGQsZyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEM9T2JqZWN0Lmdl''@;'; put 'put ''dE93blByb3BlcnR5U3ltYm9scyhkKTtmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKSEoZy5pbmRleE9mKHY9Q1t5XSk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChkLHYpfHwoaFt2XT1kW3ZdKSl9cmV0dXJuIGh9KHkseHB0KSxjZT12LmdldEhlYWRl''@;'; put 'put ''clNldHRpbmdzKEMsSSk7bnVsbCE9PWNlJiZSMShjZSxqLGpEZSl9KX19LHtrZXk6Im1hcCIsdmFsdWU6ZnVuY3Rpb24oaCl7R3IoQzgodGhpcyxpOSksZnVuY3Rpb24odil7R3IodixmdW5jdGlvbih5KXt2YXIgQz1oKGZ1bmN0aW9uIFRwdChkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9IRGUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe0lwdChkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGll''@;'; put 'put ''cyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpIRGUoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfSh7fSx5KSk7QWwoQykm''@;'; put 'put ''JlIxKHksQyxqRGUpfSl9KX19LHtrZXk6ImdldEhlYWRlclNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5O2lmKGg+PUM4KHRoaXMsRU0pfHxoPDApcmV0dXJuIG51bGw7dmFyIEM9QzgodGhpcyxpOSlbaF07cmV0dXJuIHY+PUMubGVuZ3RoP251bGw6bnVsbCE9PSh5PUNbdl0p''@;'; put 'put ''JiZ2b2lkIDAhPT15P3k6bnVsbH19LHtrZXk6ImdldEhlYWRlcnNTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxDPVtdO2lmKGg+PUM4KHRoaXMsRU0pfHxoPDApcmV0dXJu''@;'; put 'put ''IEM7Zm9yKHZhciBJPUM4KHRoaXMsaTkpW2hdLGo9MCxjZT12O2NlPEkubGVuZ3RoO2NlKyspe3ZhciBfZT1JW2NlXTtpZihfZS5pc1BsYWNlaG9sZGVyKXRocm93IG5ldyBFcnJvcigiVGhlIGZpcnN0IGNvbHVtbiBzZXR0aW5ncyBjYW5ub3Qgb3ZlcmxhcCB0aGUgb3RoZXIgaGVhZGVyIGxh''@;'; put 'put ''eWVycyIpO2lmKGorPV9lLmNvbHNwYW4sQy5wdXNoKF9lKSxfZS5jb2xzcGFuPjEmJihjZSs9X2UuY29sc3Bhbi0xKSxqPT09eSlicmVhaztpZihqPnkpdGhyb3cgbmV3IEVycm9yKCJUaGUgbGFzdCBjb2x1bW4gc2V0dGluZ3MgY2Fubm90IG92ZXJsYXAgdGhlIG90aGVyIGhlYWRlciBsYXll''@;'; put 'put ''cnMiKX1yZXR1cm4gQ319LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBDOCh0aGlzLEVNKX19LHtrZXk6ImdldENvbHVtbnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQzgodGhpcyxFTSk+MD9DOCh0aGlzLGk5KVswXS5sZW5ndGg6MH19LHtr''@;'; put 'put ''ZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3NHKHRoaXMsaTksW10pLHNHKHRoaXMsRU0sMCl9fV0pLGR9KCk7ZnVuY3Rpb24gWkRlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5''@;'; put 'put ''U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gekRlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP1pEZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7SW5lKGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVz''@;'; put 'put ''KGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOlpEZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gR0RlKGQs''@;'; put 'put ''Zyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSW5l''@;'; put 'put ''KGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBRZ2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtm''@;'; put 'put ''b3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn12YXIgUURlPW5ldyBNYXAoW1siREYtcHJlLW9yZGVyIixmdW5jdGlvbiBXRGUoZCxnKXtmb3IodmFyIGg9ZC5jYWxsKGcsdGhpcyksdj0wO3Y8dGhpcy5jaGlsZHMubGVuZ3RoO3YrKyl7aWYoITE9''@;'; put 'put ''PT1oKXJldHVybiExO2g9V0RlLmNhbGwodGhpcy5jaGlsZHNbdl0sZCxnKX1yZXR1cm4gaH1dLFsiREYtcG9zdC1vcmRlciIsZnVuY3Rpb24gWURlKGQsZyl7Zm9yKHZhciBoPTA7aDx0aGlzLmNoaWxkcy5sZW5ndGg7aCsrKWlmKCExPT09WURlLmNhbGwodGhpcy5jaGlsZHNbaF0sZCxnKSly''@;'; put 'put ''ZXR1cm4hMTtyZXR1cm4gZC5jYWxsKGcsdGhpcyl9XSxbIkJGIixmdW5jdGlvbiBRcHQoZCxnKXt2YXIgaD1bdGhpc107IWZ1bmN0aW9uIHYoKXtpZigwIT09aC5sZW5ndGgpe3ZhciB5PWguc2hpZnQoKTtoLnB1c2guYXBwbHkoaCxmdW5jdGlvbiBqcHQoZCl7cmV0dXJuIGZ1bmN0aW9uIFdw''@;'; put 'put ''dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBRZ2UoZCl9KGQpfHxmdW5jdGlvbiBHcHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8''@;'; put 'put ''ZnVuY3Rpb24genB0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBRZ2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5h''@;'; put 'put ''bWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIFFnZShkLGcpfX0oZCl8fGZ1bmN0aW9uIFpwdCgpe3Rocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh5LmNoaWxkcykpLCExIT09''@;'; put 'put ''ZC5jYWxsKGcseSkmJnYoKX19KCl9XV0pLEpEZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIE5wdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxJbmUo''@;'; put 'put ''dGhpcywiZGF0YSIse30pLEluZSh0aGlzLCJwYXJlbnQiLG51bGwpLEluZSh0aGlzLCJjaGlsZHMiLFtdKSx0aGlzLmRhdGE9Z31yZXR1cm4gZnVuY3Rpb24gVnB0KGQsZyxoKXtnJiZHRGUoZC5wcm90b3R5cGUsZyksaCYmR0RlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbihoKXtoLnBhcmVudD10aGlzLHRoaXMuY2hpbGRzLnB1c2goaCl9fSx7a2V5OiJjbG9uZVRyZWUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAw''@;'; put 'put ''IT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLHY9bmV3IGQoekRlKHt9LGguZGF0YSkpLHk9MDt5PGguY2hpbGRzLmxlbmd0aDt5Kyspdi5hZGRDaGlsZCh0aGlzLmNsb25lVHJlZShoLmNoaWxkc1t5XSkpO3JldHVybiB2fX0se2tleToicmVwbGFjZVRyZWVXaXRoIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXt0aGlzLmRhdGE9ekRlKHt9LGguZGF0YSksdGhpcy5jaGlsZHM9W107Zm9yKHZhciB2PTA7djxoLmNoaWxkcy5sZW5ndGg7disrKXRoaXMuYWRkQ2hpbGQoaC5jaGlsZHNbdl0pfX0se2tleToid2Fsa0Rvd24iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiQkYiO2lmKCFRRGUuaGFzKHYpKXRocm93IG5ldyBFcnJvcignVHJhdmVyc2FsIHN0cmF0ZWd5ICInLmNvbmNhdCh2LCciIGRvZXMgbm90IGV4aXN0JykpO1FEZS5nZXQodikuY2FsbCh0aGlzLGgsdGhpcyl9fSx7''@;'; put 'put ''a2V5OiJ3YWxrVXAiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXM7IWZ1bmN0aW9uIEMoSSl7ITEhPT1oLmNhbGwodixJKSYmbnVsbCE9PUkucGFyZW50JiZDKEkucGFyZW50KX0odGhpcyl9fV0pLGR9KCk7ZnVuY3Rpb24gWERlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2Jq''@;'; put 'put ''ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgs''@;'; put 'put ''dil9cmV0dXJuIGh9ZnVuY3Rpb24gS0RlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP1hEZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7WHB0KGQsdixoW3ZdKX0pOk9i''@;'; put 'put ''amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOlhEZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0''@;'; put 'put ''T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gWHB0KGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5j''@;'; put 'put ''dGlvbiAkRGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBxRGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVu''@;'; put 'put ''dW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBKZ2UoZCxnLGgpeyhmdW5jdGlvbiBpNnQoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLnNldChkLGgpfWZ1bmN0aW9uIGQzKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIG82dChkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQp''@;'; put 'put ''OmcudmFsdWV9KGQsZUxlKGQsZywiZ2V0IikpfWZ1bmN0aW9uIGVMZShkLGcsaCl7aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX12YXIgbkxlLHJMZSxTUj1u''@;'; put 'put ''ZXcgV2Vha01hcCx4TT1uZXcgV2Vha01hcCxNUj1uZXcgV2Vha01hcCxzNnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBuNnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i''@;'; put 'put ''KX0pKHRoaXMsZCksSmdlKHRoaXMsU1Ise3dyaXRhYmxlOiEwLHZhbHVlOm5ldyBNYXB9KSxKZ2UodGhpcyx4TSx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IE1hcH0pLEpnZSh0aGlzLE1SLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksZnVuY3Rpb24gYTZ0KGQsZyxoKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gbDZ0KGQsZyxoKXtpZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1ofX0oZCxlTGUoZCxnLCJzZXQiKSxoKSxofSh0aGlzLE1S''@;'; put 'put ''LGcpfXJldHVybiBmdW5jdGlvbiByNnQoZCxnLGgpe2cmJnFEZShkLnByb3RvdHlwZSxnKSxoJiZxRGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0Um9vdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5''@;'; put 'put ''LmZyb20oZDModGhpcyxTUikudmFsdWVzKCkpfX0se2tleToiZ2V0Um9vdEJ5Q29sdW1uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4gZDModGhpcyx4TSkuaGFzKGgpJiYodj1kMyh0aGlzLFNSKS5nZXQoZDModGhpcyx4TSkuZ2V0KGgpKSksdn19LHtrZXk6ImdldE5vZGUiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5nZXRSb290QnlDb2x1bW4odik7aWYoeSl7dmFyIGosQz12LWQzKHRoaXMseE0pLmdldCh2KSxJPTA7cmV0dXJuIHkud2Fsa0Rvd24oZnVuY3Rpb24oY2Upe3ZhciBfZT1jZS5kYXRhLFJlPV9lLm9yaWdDb2xzcGFuO2lmKGg9PT1fZS5oZWFk''@;'; put 'put ''ZXJMZXZlbCl7aWYoQz49SSYmQzw9SStSZS0xKXJldHVybiBqPWNlLCExO0krPVJlfX0pLGp9fX0se2tleToicmVidWlsZFRyZWVJbmRleCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9MDtkMyh0aGlzLHhNKS5jbGVhcigpLEdyKGQzKHRoaXMsU1IpLGZ1bmN0aW9uKHkpe2Zvcih2''@;'; put 'put ''YXIgST1mdW5jdGlvbiBLcHQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gdDZ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBlNnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8''@;'; put 'put ''ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7''@;'; put 'put ''dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBxcHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuICREZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJp''@;'; put 'put ''bmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/''@;'; put 'put ''OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gJERlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiAkcHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUs''@;'; put 'put ''IG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh5LDIpWzFdLmRhdGEuY29sc3BhbixqPXY7ajx2K0k7aisrKWQzKGgseE0pLnNldChqLHYpO3YrPUl9KX19LHtrZXk6ImJ1aWxkVHJlZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlz''@;'; put 'put ''LmNsZWFyKCk7Zm9yKHZhciBoPWQzKHRoaXMsTVIpLmdldENvbHVtbnNDb3VudCgpLHY9MDt2PGg7KXt2YXIgeT1kMyh0aGlzLE1SKS5nZXRIZWFkZXJTZXR0aW5ncygwLHYpLEM9bmV3IEpEZTtkMyh0aGlzLFNSKS5zZXQodixDKSx0aGlzLmJ1aWxkTGVhdmVzKEMsdiwwLHkub3JpZ0NvbHNw''@;'; put 'put ''YW4pLHYrPXkub3JpZ0NvbHNwYW59dGhpcy5yZWJ1aWxkVHJlZUluZGV4KCl9fSx7a2V5OiJidWlsZExlYXZlcyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MSxqPWQzKHRo''@;'; put 'put ''aXMsTVIpLmdldEhlYWRlcnNTZXR0aW5ncyh5LHYsSSk7eSs9MSxHcihqLGZ1bmN0aW9uKGNlKXt2YXIgUmUsX2U9S0RlKEtEZSh7fSxjZSkse30se2hlYWRlckxldmVsOnktMSxjb2x1bW5JbmRleDp2fSk7MT09PXk/KGguZGF0YT1fZSxSZT1oKTooUmU9bmV3IEpEZShfZSksaC5hZGRDaGls''@;'; put 'put ''ZChSZSkpLHk8ZDMoQyxNUikuZ2V0TGF5ZXJzQ291bnQoKSYmQy5idWlsZExlYXZlcyhSZSx2LHksY2Uub3JpZ0NvbHNwYW4pLHYrPWNlLm9yaWdDb2xzcGFufSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXtkMyh0aGlzLFNSKS5jbGVhcigpLGQzKHRoaXMseE0pLmNsZWFyKCl9''@;'; put 'put ''fV0pLGR9KCk7ZnVuY3Rpb24gdExlKGQsZyl7ZC53YWxrRG93bihmdW5jdGlvbihoKXt2YXIgdj1oLmRhdGEseT1oLmNoaWxkcztpZighdi5pc0hpZGRlbiYmKGcodi5jb2x1bW5JbmRleCksMD09PXkubGVuZ3RoKSlmb3IodmFyIEM9MTtDPHYuY29sc3BhbjtDKyspZyh2LmNvbHVtbkluZGV4''@;'; put 'put ''K0MpfSl9ZnVuY3Rpb24gRG5lKGQsZyl7dmFyIGg9ZC5jaGlsZHM7aWYoMCE9PWgubGVuZ3RoKXJldHVybiBoWzBdLmRhdGFbZ119ZnVuY3Rpb24gTG5lKGQpe3JldHVybiBEbmUoZCwib3JpZ0NvbHNwYW4iKT09PWQuZGF0YS5vcmlnQ29sc3Bhbn1mdW5jdGlvbiBYZ2UoZCl7dmFyIGc9ZC5k''@;'; put 'put ''YXRhLGg9ZC5jaGlsZHM7aWYoIWcuaXNDb2xsYXBzZWR8fGcuaXNIaWRkZW58fGcub3JpZ0NvbHNwYW48PTEpcmV0dXJue3JvbGxiYWNrTW9kaWZpY2F0aW9uOmZ1bmN0aW9uKCl7fSxhZmZlY3RlZENvbHVtbnM6W10sY29sc3BhbkNvbXBlbnNhdGlvbjowfTtpZihMbmUoZCkpcmV0dXJuIFhn''@;'; put 'put ''ZShoWzBdKTtnLmlzQ29sbGFwc2VkPSExO3ZhciB5PWguc2xpY2UoMSksQz1uZXcgU2V0LEk9MDtpZih5Lmxlbmd0aD4wKUdyKHksZnVuY3Rpb24oTmUpe05lLnJlcGxhY2VUcmVlV2l0aChOZS5kYXRhLmNsb25lZFRyZWUpLE5lLmRhdGEuY2xvbmVkVHJlZT1udWxsLEkrPU5lLmRhdGEuY29s''@;'; put 'put ''c3Bhbix0TGUoTmUsZnVuY3Rpb24oaHQpe0MuYWRkKGh0KX0pfSk7ZWxzZXt2YXIgY2U9Zy5vcmlnQ29sc3BhbixfZT1nLmNvbHVtbkluZGV4O0k9Y2UtZy5jb2xzcGFuO2Zvcih2YXIgUmU9MTtSZTxjZTtSZSsrKUMuYWRkKF9lK1JlKX1yZXR1cm4gZC53YWxrVXAoZnVuY3Rpb24oTmUpe3Zh''@;'; put 'put ''ciBLZT1OZS5kYXRhO0tlLmNvbHNwYW4rPUksS2UuY29sc3Bhbj49S2Uub3JpZ0NvbHNwYW4/KEtlLmNvbHNwYW49S2Uub3JpZ0NvbHNwYW4sS2UuaXNDb2xsYXBzZWQ9ITEpOkxuZShOZSkmJihLZS5pc0NvbGxhcHNlZD1EbmUoTmUsImlzQ29sbGFwc2VkIikpfSkse3JvbGxiYWNrTW9kaWZp''@;'; put 'put ''Y2F0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIEtnZShkKX0sYWZmZWN0ZWRDb2x1bW5zOkFycmF5LmZyb20oQyksY29sc3BhbkNvbXBlbnNhdGlvbjpJfX1mdW5jdGlvbiBLZ2UoZCl7dmFyIGcsaD1kLmRhdGEsdj1kLmNoaWxkcztpZihoLmlzQ29sbGFwc2VkfHxoLmlzSGlkZGVufHxoLm9yaWdD''@;'; put 'put ''b2xzcGFuPD0xKXJldHVybntyb2xsYmFja01vZGlmaWNhdGlvbjpmdW5jdGlvbigpe30sYWZmZWN0ZWRDb2x1bW5zOltdLGNvbHNwYW5Db21wZW5zYXRpb246MH07aWYoTG5lKGQpKXJldHVybiBLZ2UodlswXSk7aC5pc0NvbGxhcHNlZD0hMDt2YXIgQz12LnNsaWNlKDEpLEk9bmV3IFNldDtp''@;'; put 'put ''ZihDLmxlbmd0aD4wKUdyKEMsZnVuY3Rpb24oS2Upe3RMZShLZSxmdW5jdGlvbihodCl7SS5hZGQoaHQpfSksS2UuZGF0YS5jbG9uZWRUcmVlPUtlLmNsb25lVHJlZSgpLEtlLndhbGtEb3duKGZ1bmN0aW9uKGh0KXtodC5kYXRhLmlzSGlkZGVuPSEwfSl9KTtlbHNlIGZvcih2YXIgaj1oLm9y''@;'; put 'put ''aWdDb2xzcGFuLGNlPWguY29sdW1uSW5kZXgsX2U9MTtfZTxqO19lKyspSS5hZGQoY2UrX2UpO3ZhciBOZT1oLmNvbHNwYW4tKG51bGwhPT0oZz1EbmUoZCwiY29sc3BhbiIpKSYmdm9pZCAwIT09Zz9nOjEpO3JldHVybiBkLndhbGtVcChmdW5jdGlvbihLZSl7dmFyIGh0PUtlLmRhdGE7aHQu''@;'; put 'put ''Y29sc3Bhbi09TmUsaHQuY29sc3Bhbjw9MT8oaHQuY29sc3Bhbj0xLGh0LmlzQ29sbGFwc2VkPSEwKTpMbmUoS2UpJiYoaHQuaXNDb2xsYXBzZWQ9RG5lKEtlLCJpc0NvbGxhcHNlZCIpKX0pLHtyb2xsYmFja01vZGlmaWNhdGlvbjpmdW5jdGlvbigpe3JldHVybiBYZ2UoZCl9LGFmZmVjdGVk''@;'; put 'put ''Q29sdW1uczpBcnJheS5mcm9tKEkpLGNvbHNwYW5Db21wZW5zYXRpb246TmV9fXZhciBpTGU9bmV3IE1hcChbWyJjb2xsYXBzZSIsS2dlXSxbImV4cGFuZCIsWGdlXSxbImhpZGUtY29sdW1uIixmdW5jdGlvbiBjNnQoZCxnKXtpZighTnVtYmVyLmlzSW50ZWdlcihnKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlRoZSBwYXNzZWQgZ3JpZENvbHVtbkluZGV4IGFyZ3VtZW50IGhhcyBpbnZhbGlkIHR5cGUuIik7aWYoZC5jaGlsZHMubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKEQyKG5MZXx8KG5MZT1mdW5jdGlvbiB1NnQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6''@;'; put 'put ''ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlRoZSBwYXNzZWQgbm9kZSBpcyBub3QgdGhlIGxhc3Qgbm9kZSBvbiB0aGUgdHJlZS4gT25seSBmb3IgXG50aGUgbGFzdCBub2RlLCB0aGUgaGlkZSBjb2x1bW4gbW9kaWZpY2F0''@;'; put 'put ''aW9uIGNhbiBiZSBhcHBsaWVkLiJdLFsiVGhlIHBhc3NlZCBub2RlIGlzIG5vdCB0aGUgbGFzdCBub2RlIG9uIHRoZSB0cmVlLiBPbmx5IGZvclxceDIwXG50aGUgbGFzdCBub2RlLCB0aGUgaGlkZSBjb2x1bW4gbW9kaWZpY2F0aW9uIGNhbiBiZSBhcHBsaWVkLiJdKSkpKTtpZighZC5kYXRh''@;'; put 'put ''LmNyb3NzSGlkZGVuQ29sdW1ucy5pbmNsdWRlcyhnKSl7dmFyIHY9ITE7ZC53YWxrVXAoZnVuY3Rpb24oeSl7aWYoeS5kYXRhLmNvbGxhcHNpYmxlKXJldHVybiB2PSEwLCExfSksIXYmJmQud2Fsa1VwKGZ1bmN0aW9uKHkpe3ZhciBDPXkuZGF0YTtDLmNyb3NzSGlkZGVuQ29sdW1ucy5wdXNo''@;'; put 'put ''KGcpLEMuY29sc3Bhbj4xP0MuY29sc3Bhbi09MTpDLmlzSGlkZGVuPSEwfSl9fV0sWyJzaG93LWNvbHVtbiIsZnVuY3Rpb24gaDZ0KGQsZyl7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGFzc2VkIGdyaWRDb2x1bW5JbmRleCBhcmd1bWVudCBoYXMgaW52''@;'; put 'put ''YWxpZCB0eXBlLiIpO2lmKGQuY2hpbGRzLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcihEMihyTGV8fChyTGU9ZnVuY3Rpb24gZjZ0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3Qu''@;'; put 'put ''ZnJlZXplKGcpfX0pKX0oWyJUaGUgcGFzc2VkIG5vZGUgaXMgbm90IHRoZSBsYXN0IG5vZGUgb24gdGhlIHRyZWUuIE9ubHkgZm9yIFxudGhlIGxhc3Qgbm9kZSwgdGhlIHNob3cgY29sdW1uIG1vZGlmaWNhdGlvbiBjYW4gYmUgYXBwbGllZC4iXSxbIlRoZSBwYXNzZWQgbm9kZSBpcyBub3Qg''@;'; put 'put ''dGhlIGxhc3Qgbm9kZSBvbiB0aGUgdHJlZS4gT25seSBmb3JcXHgyMFxudGhlIGxhc3Qgbm9kZSwgdGhlIHNob3cgY29sdW1uIG1vZGlmaWNhdGlvbiBjYW4gYmUgYXBwbGllZC4iXSkpKSk7aWYoZC5kYXRhLmNyb3NzSGlkZGVuQ29sdW1ucy5pbmNsdWRlcyhnKSl7dmFyIHY9ITE7ZC53YWxr''@;'; put 'put ''VXAoZnVuY3Rpb24oeSl7aWYoeS5kYXRhLmNvbGxhcHNpYmxlKXJldHVybiB2PSEwLCExfSksIXYmJmQud2Fsa1VwKGZ1bmN0aW9uKHkpe3ZhciBDPXkuZGF0YTtDLmNyb3NzSGlkZGVuQ29sdW1ucy5zcGxpY2UoQy5jcm9zc0hpZGRlbkNvbHVtbnMuaW5kZXhPZihnKSwxKSwhQy5pc0hpZGRl''@;'; put 'put ''biYmQy5jb2xzcGFuPEMub3JpZ0NvbHNwYW4mJihDLmNvbHNwYW4rPTEpLEMuaXNIaWRkZW49ITF9KX19XV0pLHA2dD1bImNyb3NzSGlkZGVuQ29sdW1ucyJdO2Z1bmN0aW9uIE9uZShkKXt2YXIgZz1bXTtyZXR1cm4gR3IoZCxmdW5jdGlvbihoKXtoLndhbGtEb3duKGZ1bmN0aW9uKHYpe2Zv''@;'; put 'put ''cih2YXIgeT12LmRhdGEsQz15Lm9yaWdDb2xzcGFuLEk9eS5jb2x1bW5JbmRleCxjZT15LmNyb3NzSGlkZGVuQ29sdW1ucyxfZT1mdW5jdGlvbiBBNnQoZCxnKXt2YXIgaDtyZXR1cm4gQXJyYXkuaXNBcnJheShkW2ddKT9oPWRbZ106ZFtnXT1oPVtdLGh9KGcseS5oZWFkZXJMZXZlbCksUmU9''@;'; put 'put ''ITEsTmU9STtOZTxJK0M7TmUrKylpZihjZS5pbmNsdWRlcyhOZSl8fFJlKV9lLnB1c2goe2xhYmVsOiIiLGlzUGxhY2Vob2xkZXI6ITB9KTtlbHNle3ZhciBodD12NnQoeSk7aHQuaXNSb290PSEwLF9lLnB1c2goaHQpLFJlPSEwfX0pfSksZ31mdW5jdGlvbiB2NnQoZCl7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIGc2dChkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHYseSxoPWZ1bmN0aW9uIG02dChkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHksQyxoPXt9LHY9T2JqZWN0LmtleXMoZCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0MrKykhKGcuaW5kZXhPZih5PXZbQ10pPj0wKSYmKGhbeV09''@;'; put 'put ''ZFt5XSk7cmV0dXJuIGh9KGQsZyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKSEoZy5pbmRleE9mKHY9Q1t5XSk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVy''@;'; put 'put ''dHlJc0VudW1lcmFibGUuY2FsbChkLHYpfHwoaFt2XT1kW3ZdKSl9cmV0dXJuIGh9KEdnZShkKSxwNnQpfXZhciB5NnQ9WyJyb3ciXTtmdW5jdGlvbiBvTGUoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0''@;'; put 'put ''T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBhTGUoZCl7Zm9yKHZhciBnPTE7Zzxh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/b0xlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXt3NnQoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6b0xlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5j''@;'; put 'put ''dGlvbiB3NnQoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIGxMZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2''@;'; put 'put ''YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uICRnZShkLGcsaCl7KGZ1bmN0aW9uIFM2dChkLGcpe2lmKGcu''@;'; put 'put ''aGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gdUcoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBNNnQoZCxnLGgpe2lmKGcuc2V0''@;'; put 'put ''KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLHNMZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24geHUoZCxnKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gRTZ0KGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxzTGUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gc0xlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3Rh''@;'; put 'put ''bmNlIik7cmV0dXJuIGcuZ2V0KGQpfXZhciBWZz1uZXcgV2Vha01hcCx3ND1uZXcgV2Vha01hcCxUTT1uZXcgV2Vha01hcCx4NnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIEM2dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSwkZ2UodGhpcyxWZyx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IEhwdH0pLCRnZSh0aGlzLHc0LHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgczZ0KHh1KHRoaXMsVmcpKX0pLCRnZSh0aGlzLFRNLHt3cml0YWJsZTohMCx2YWx1''@;'; put 'put ''ZTpbW11dfSl9cmV0dXJuIGZ1bmN0aW9uIGs2dChkLGcsaCl7ZyYmbExlKGQucHJvdG90eXBlLGcpLGgmJmxMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7eHUodGhp''@;'; put 'put ''cyxWZykuc2V0RGF0YShoKTt2YXIgdj0hMTt0cnl7eHUodGhpcyx3NCkuYnVpbGRUcmVlKCl9Y2F0Y2goeSl7eHUodGhpcyx3NCkuY2xlYXIoKSx4dSh0aGlzLFZnKS5jbGVhcigpLHY9ITB9cmV0dXJuIHVHKHRoaXMsVE0sT25lKHh1KHRoaXMsdzQpLmdldFJvb3RzKCkpKSx2fX0se2tleToi''@;'; put 'put ''c2V0Q29sdW1uc0xpbWl0Iix2YWx1ZTpmdW5jdGlvbihoKXt4dSh0aGlzLFZnKS5zZXRDb2x1bW5zTGltaXQoaCl9fSx7a2V5OiJtZXJnZVN0YXRlV2l0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcyx5PVRsKGgsZnVuY3Rpb24oQyl7dmFyIEk9Qy5yb3csaj1mdW5jdGlvbiBiNnQo''@;'; put 'put ''ZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlvbiBfNnQoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMsaD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0pO3Jl''@;'; put 'put ''dHVybiBofShkLGcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVt''@;'; put 'put ''ZXJhYmxlLmNhbGwoZCx2KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofShDLHk2dCk7cmV0dXJuIGFMZSh7cm93Okk8MD92LnJvd0Nvb3Jkc1RvTGV2ZWwoSSk6SX0sail9KTt4dSh0aGlzLFZnKS5tZXJnZVdpdGgoeSkseHUodGhpcyx3NCkuYnVpbGRUcmVlKCksdUcodGhpcyxUTSxPbmUoeHUo''@;'; put 'put ''dGhpcyx3NCkuZ2V0Um9vdHMoKSkpfX0se2tleToibWFwU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGgpe3h1KHRoaXMsVmcpLm1hcChoKSx4dSh0aGlzLHc0KS5idWlsZFRyZWUoKSx1Ryh0aGlzLFRNLE9uZSh4dSh0aGlzLHc0KS5nZXRSb290cygpKSl9fSx7a2V5OiJtYXBOb2RlcyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIEV1KHh1KHRoaXMsdzQpLmdldFJvb3RzKCksZnVuY3Rpb24odix5KXtyZXR1cm4geS53YWxrRG93bihmdW5jdGlvbihDKXt2YXIgST1oKEMuZGF0YSk7dm9pZCAwIT09SSYmdi5wdXNoKEkpfSksdn0sW10pfX0se2tleToidHJpZ2dlck5vZGVNb2RpZmljYXRp''@;'; put 'put ''b24iLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2PDAmJih2PXRoaXMucm93Q29vcmRzVG9MZXZlbCh2KSk7dmFyIEksQz14dSh0aGlzLHc0KS5nZXROb2RlKHYseSk7cmV0dXJuIEMmJihJPWZ1bmN0aW9uIGQ2dChkLGcsaCl7aWYoIWlMZS5oYXMoZCkpdGhyb3cgbmV3IEVycm9yKCdUaGUgbm9k''@;'; put 'put ''ZSBtb2RpZmllciBhY3Rpb24gKCInLmNvbmNhdChkLCciKSBkb2VzIG5vdCBleGlzdC4nKSk7cmV0dXJuIGlMZS5nZXQoZCkoZyxoKX0oaCxDLHkpLHVHKHRoaXMsVE0sT25lKHh1KHRoaXMsdzQpLmdldFJvb3RzKCkpKSksSX19LHtrZXk6InRyaWdnZXJDb2x1bW5Nb2RpZmljYXRpb24iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMudHJpZ2dlck5vZGVNb2RpZmljYXRpb24oaCwtMSx2KX19LHtrZXk6InJvd0Nvb3Jkc1RvTGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PU1hdGgubWF4KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSwxKSx5PXYtMTtyZXR1cm4gTWF0aC5t''@;'; put 'put ''aW4oTWF0aC5tYXgoaCt2LDApLHkpfX0se2tleToibGV2ZWxUb1Jvd0Nvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9TWF0aC5tYXgodGhpcy5nZXRMYXllcnNDb3VudCgpLDEpO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChoLXYsLXYpLC0xKX19LHtrZXk6ImdldEhlYWRlclNldHRp''@;'; put 'put ''bmdzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5LEM7cmV0dXJuIGg8MCYmKGg9dGhpcy5yb3dDb29yZHNUb0xldmVsKGgpKSxoPj10aGlzLmdldExheWVyc0NvdW50KCk/bnVsbDpudWxsIT09KHk9bnVsbD09PShDPXh1KHRoaXMsVE0pW2hdKXx8dm9pZCAwPT09Qz92b2lkIDA6Q1t2XSkm''@;'; put 'put ''JnZvaWQgMCE9PXk/eTpudWxsfX0se2tleToiZ2V0SGVhZGVyVHJlZU5vZGVEYXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe2g8MCYmKGg9dGhpcy5yb3dDb29yZHNUb0xldmVsKGgpKTt2YXIgeT14dSh0aGlzLHc0KS5nZXROb2RlKGgsdik7cmV0dXJuIHk/YUxlKHt9LHkuZGF0YSk6bnVsbH19''@;'; put 'put ''LHtrZXk6ImZpbmRMZWZ0TW9zdENvbHVtbkluZGV4Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5O2lmKChudWxsIT09KHk9dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhoLHYpKSYmdm9pZCAwIT09eT95Ontpc1Jvb3Q6ITB9KS5pc1Jvb3QpcmV0dXJuIHY7Zm9yKHZhciBqPXYtMTtqPj0wOyl7''@;'; put 'put ''dmFyIGNlO2lmKChudWxsIT09KGNlPXRoaXMuZ2V0SGVhZGVyU2V0dGluZ3MoaCxqKSkmJnZvaWQgMCE9PWNlP2NlOntpc1Jvb3Q6ITB9KS5pc1Jvb3QpYnJlYWs7ai09MX1yZXR1cm4gan19LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4dSh0aGlzLFZn''@;'; put 'put ''KS5nZXRMYXllcnNDb3VudCgpfX0se2tleToiZ2V0Q29sdW1uc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4dSh0aGlzLFZnKS5nZXRDb2x1bW5zQ291bnQoKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3VHKHRoaXMsVE0sW10pLHh1KHRoaXMsVmcpLmNsZWFyKCks''@;'; put 'put ''eHUodGhpcyx3NCkuY2xlYXIoKX19XSksZH0oKTtmdW5jdGlvbiB1TGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBjRyhkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIEQ2dD1mdW5j''@;'; put 'put ''dGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gVDZ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLGNHKHRoaXMsImhvdCIsdm9pZCAwKSxjRyh0aGlzLCJuZXN0''@;'; put 'put ''ZWRIZWFkZXJTZXR0aW5nc0dldHRlciIsdm9pZCAwKSxjRyh0aGlzLCJsYXllcnNDb3VudCIsMCksY0codGhpcywiY29udGFpbmVyIix2b2lkIDApLGNHKHRoaXMsIndpZHRoc01hcCIsdm9pZCAwKSx0aGlzLmhvdD1nLHRoaXMubmVzdGVkSGVhZGVyU2V0dGluZ3NHZXR0ZXI9aCx0aGlzLndp''@;'; put 'put ''ZHRoc01hcD10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVBbmRSZWdpc3RlckluZGV4TWFwKCJuZXN0ZWRIZWFkZXJzLndpZHRoc01hcCIsInBoeXNpY2FsSW5kZXhUb1ZhbHVlIil9cmV0dXJuIGZ1bmN0aW9uIEk2dChkLGcsaCl7ZyYmdUxlKGQucHJvdG90eXBlLGcpLGgmJnVM''@;'; put 'put ''ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRMYXllcnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMubGF5ZXJzQ291bnQ9aCx0aGlzfX0se2tleToiZ2V0V2lkdGgiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiB0aGlzLndpZHRoc01hcC5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihoKSl9fSx7a2V5OiJidWlsZFdpZHRoc01hcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lcj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi''@;'; put 'put ''ZGl2IiksdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFuZHNvbnRhYmxlIiwiaHRHaG9zdFRhYmxlIiwiaHRBdXRvU2l6ZSIpLHRoaXMuX2J1aWxkR2hvc3RUYWJsZSh0aGlzLmNvbnRhaW5lciksdGhpcy5ob3Qucm9vdERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250''@;'; put 'put ''YWluZXIpO3ZhciBoPXRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoInRyOmxhc3Qtb2YtdHlwZSB0aCIpLHY9aC5sZW5ndGg7dGhpcy53aWR0aHNNYXAuY2xlYXIoKTtmb3IodmFyIHk9MDt5PHY7eSsrKXt2YXIgQz10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxG''@;'; put 'put ''cm9tUmVuZGVyYWJsZUluZGV4KHkpLEk9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihDKTt0aGlzLndpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoSSxoW3ldLm9mZnNldFdpZHRoKX10aGlzLmNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyKSx0aGlzLmNv''@;'; put 'put ''bnRhaW5lcj1udWxsfX0se2tleToiX2J1aWxkR2hvc3RUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oaCl7Zm9yKHZhciB2PXRoaXMuaG90LHk9di5yb290RG9jdW1lbnQsQz12LmNvbHVtbkluZGV4TWFwcGVyLEk9eS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksaj15LmNyZWF0ZUVsZW1lbnQoInRh''@;'; put 'put ''YmxlIiksY2U9ISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSxfZT1DLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCksUmU9MDtSZTx0aGlzLmxheWVyc0NvdW50O1JlKyspe2Zvcih2YXIgTmU9eS5jcmVhdGVFbGVtZW50KCJ0ciIpLEtlPTA7S2U8X2U7S2UrKyl7dmFy''@;'; put 'put ''IGh0PUMuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChLZSk7bnVsbD09PWh0JiYoaHQ9S2UpO3ZhciBCdD15LmNyZWF0ZUVsZW1lbnQoInRoIiksJHQ9dGhpcy5uZXN0ZWRIZWFkZXJTZXR0aW5nc0dldHRlcihSZSxodCk7aWYoJHQmJighJHQuaXNQbGFjZWhvbGRlcnx8JHQuaXNIaWRk''@;'; put 'put ''ZW4pKXt2YXIgaG49JHQubGFiZWw7Y2UmJihobis9JzxidXR0b24gY2xhc3M9ImNoYW5nZVR5cGUiPjwvYnV0dG9uPicpLE93KEJ0LGhuKSxCdC5jb2xTcGFuPSR0LmNvbHNwYW4sTmUuYXBwZW5kQ2hpbGQoQnQpfX1qLmFwcGVuZENoaWxkKE5lKX1JLmFwcGVuZENoaWxkKGopLGguYXBwZW5k''@;'; put 'put ''Q2hpbGQoSSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLndpZHRoc01hcC5jbGVhcigpLHRoaXMuY29udGFpbmVyPW51bGx9fV0pLGR9KCk7Y29uc3QgTDZ0PUQ2dDtmdW5jdGlvbiBxZ2UoZCl7cmV0dXJuKHFnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3lt''@;'; put 'put ''Ym9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBl''@;'; put 'put ''b2YgZ30pKGQpfXZhciBjTGUsZkxlO2Z1bmN0aW9uIGhMZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9ZnVuY3Rpb24gTzZ0KGQsZyl7aWYoIShkIGlu''@;'; put 'put ''c3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZExlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1''@;'; put 'put ''cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSU0oKXtyZXR1cm4gSU09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24o''@;'; put 'put ''ZyxoLHYpe3ZhciB5PUI2dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sSU0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEI2''@;'; put 'put ''dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9bzkoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gZW1lKGQsZyl7cmV0dXJuKGVtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpm''@;'; put 'put ''dW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEg2dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXFnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZkcoZCl9ZnVuY3Rpb24gZkcoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu''@;'; put 'put ''IGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIG85KGQpe3JldHVybihvOT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9u''@;'; put 'put ''IHBMZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gZ0xlKGQsZyxoKXsoZnVuY3Rpb24gVjZ0KGQsZyl7aWYoZy5oYXMoZCkp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5zZXQoZCxoKX1mdW5jdGlvbiBSbmUoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBqNnQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0''@;'; put 'put ''LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLG1MZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gcGMoZCxnKXtyZXR1cm4gZnVuY3Rpb24gWjZ0''@;'; put 'put ''KGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxtTGUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gbUxlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7''@;'; put 'put ''cmV0dXJuIGcuZ2V0KGQpfXZhciB2TGU9Im5lc3RlZEhlYWRlcnMiLGFmPW5ldyBXZWFrTWFwLGliPW5ldyBXZWFrTWFwLEc2dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gUDZ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVy''@;'; put 'put ''IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmVtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEY2dChkKXt2YXIgZz1mdW5jdGlvbiBONnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSly''@;'; put 'put ''ZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHksdj1vOShkKTtpZihnKXt2YXIgQz1vOSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gSDZ0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY7''@;'; put 'put ''TzZ0KHRoaXMsaCk7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIGdMZShmRyh2PWcuY2FsbC5hcHBseShnLFt0aGlzXS5jb25jYXQoQykpKSxhZix7d3JpdGFibGU6ITAsdmFsdWU6bmV3IHg2dH0p''@;'; put 'put ''LGdMZShmRyh2KSxpYix7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLHBMZShmRyh2KSwiZ2hvc3RUYWJsZSIsbmV3IEw2dCh2LmhvdCxmdW5jdGlvbihqLGNlKXtyZXR1cm4gdi5nZXRIZWFkZXJTZXR0aW5ncyhqLGNlKX0pKSxwTGUoZkcodiksImRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnMi''@;'; put 'put ''LCExKSx2fXJldHVybiBmdW5jdGlvbiBSNnQoZCxnLGgpe2cmJmRMZShkLnByb3RvdHlwZSxnKSxoJiZkTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEh''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt2TGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIEk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5uZXN0ZWRIZWFkZXJzOyghQXJyYXkuaXNBcnJheShJKXx8IUFycmF5''@;'; put 'put ''LmlzQXJyYXkoSVswXSkpJiZjMShEMihjTGV8fChjTGU9aExlKFsiWW91ciBOZXN0ZWQgSGVhZGVycyBwbHVnaW4gY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLiBUaGUgc2V0dGluZ3MgaGFzIHRvIGJlIFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkIGFzIGFuIGFycmF5IG9mIGFy''@;'; put 'put ''cmF5cyBlLnEuIFtbJ0ExJywgeyBsYWJlbDogJ0EyJywgY29sc3BhbjogMiB9XV0iXSxbIllvdXIgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4gVGhlIHNldHRpbmdzIGhhcyB0byBiZVxceDIwXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQg''@;'; put 'put ''YXMgYW4gYXJyYXkgb2YgYXJyYXlzIGUucS4gW1snQTEnLCB7IGxhYmVsOiAnQTInLCBjb2xzcGFuOiAyIH1dXSJdKSkpKSx0aGlzLmFkZEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25Jbml0KCl9KSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHkub25BZnRlckxvYWREYXRhLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlT25DZWxsTW91c2VEb3duLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJP''@;'; put 'put ''bkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlck9uQ2VsbE1vdXNlRG93bi5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZU9uQ2VsbE1vdXNlT3Zlci5hcHBs''@;'; put 'put ''eSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIixmdW5jdGlvbihqKXtyZXR1cm4geS5vbkFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzKGopfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4geS5vbk1vZGlmeUNvbFdpZHRoLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyLmFwcGx5KHksYXJndW1lbnRzKX0pLHRo''@;'; put 'put ''aXMuYWRkSG9vaygiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUuYXBwbHkoeSxhcmd1bWVudHMpfSksSU0obzkoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4i''@;'; put 'put ''LHRoaXMpLmNhbGwodGhpcyksdGhpcy51cGRhdGVQbHVnaW4oKX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZih0aGlzLmhvdC52aWV3KXt2YXIgST10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm5lc3RlZEhlYWRlcnM7cGModGhpcyxhZikuc2V0''@;'; put 'put ''Q29sdW1uc0xpbWl0KHRoaXMuaG90LmNvdW50Q29scygpKSxBcnJheS5pc0FycmF5KEkpJiYodGhpcy5kZXRlY3RlZE92ZXJsYXBwZWRIZWFkZXJzPXBjKHRoaXMsYWYpLnNldFN0YXRlKEkpKSx0aGlzLmRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnMmJmMxKEQyKGZMZXx8KGZMZT1oTGUoWyJZ''@;'; put 'put ''b3VyIE5lc3RlZCBIZWFkZXJzIHBsdWdpbiBzZXR1cCBjb250YWlucyBvdmVybGFwcGluZyBoZWFkZXJzLiBUaGlzIGtpbmQgb2YgY29uZmlndXJhdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLiJdLFsiWW91ciBOZXN0ZWQgSGVhZGVy''@;'; put 'put ''cyBwbHVnaW4gc2V0dXAgY29udGFpbnMgb3ZlcmxhcHBpbmcgaGVhZGVycy4gVGhpcyBraW5kIG9mIGNvbmZpZ3VyYXRpb25cXHgyMFxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuIl0pKSkpLHRoaXMuZW5hYmxlZCYmdGhpcy5ob3QuY29sdW1u''@;'; put 'put ''SW5kZXhNYXBwZXIuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVzKCkuZm9yRWFjaChmdW5jdGlvbihqLGNlKXt2YXIgX2U9ITA9PT1qPyJoaWRlLWNvbHVtbiI6InNob3ctY29sdW1uIjtwYyh5LGFmKS50cmlnZ2VyQ29sdW1uTW9kaWZpY2F0aW9uKF9lLGNlKX0pLCFwYyh0''@;'; put 'put ''aGlzLGliKSYmdGhpcy5lbmFibGVkJiZSbmUodGhpcyxpYix0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVDaGFuZ2VzT2JzZXJ2ZXIoImhpZGluZyIpLnN1YnNjcmliZShmdW5jdGlvbihqKXtqLmZvckVhY2goZnVuY3Rpb24oY2Upe3ZhciBSZT1jZS5pbmRleDtpZigicmVwbGFj''@;'; put 'put ''ZSI9PT1jZS5vcCl7dmFyIEtlPSEwPT09Y2UubmV3VmFsdWU/ImhpZGUtY29sdW1uIjoic2hvdy1jb2x1bW4iO3BjKHksYWYpLnRyaWdnZXJDb2x1bW5Nb2RpZmljYXRpb24oS2UsUmUpfX0pLHkuZ2hvc3RUYWJsZS5idWlsZFdpZHRoc01hcCgpfSkpLHRoaXMuZ2hvc3RUYWJsZS5zZXRMYXll''@;'; put 'put ''cnNDb3VudCh0aGlzLmdldExheWVyc0NvdW50KCkpLmJ1aWxkV2lkdGhzTWFwKCksSU0obzkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyQ29sc3BhbnMoKSxwYyh0''@;'; put 'put ''aGlzLGFmKS5jbGVhcigpLHBjKHRoaXMsaWIpLnVuc3Vic2NyaWJlKCksUm5lKHRoaXMsaWIsbnVsbCksdGhpcy5naG9zdFRhYmxlLmNsZWFyKCksSU0obzkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0U3RhdGVNYW5hZ2VyIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3JldHVybiBwYyh0aGlzLGFmKX19LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBwYyh0aGlzLGFmKS5nZXRMYXllcnNDb3VudCgpfX0se2tleToiZ2V0SGVhZGVyU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHBj''@;'; put 'put ''KHRoaXMsYWYpLmdldEhlYWRlclNldHRpbmdzKHksQyl9fSx7a2V5OiJjbGVhckNvbHNwYW5zIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaG90LnZpZXcpZm9yKHZhciB5PXRoaXMuaG90LnZpZXcuX3d0LEM9eS5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoLEk9eS53dFRh''@;'; put 'put ''YmxlLlRIRUFELGo9eS53dE92ZXJsYXlzLnRvcE92ZXJsYXkuY2xvbmUud3RUYWJsZS5USEVBRCxjZT15Lnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5P3kud3RPdmVybGF5cy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUud3RUYWJsZS5USEVBRDpudWxs''@;'; put 'put ''LF9lPTA7X2U8QztfZSsrKXt2YXIgUmU9SS5jaGlsZE5vZGVzW19lXTtpZighUmUpYnJlYWs7Zm9yKHZhciBOZT1qLmNoaWxkTm9kZXNbX2VdLEtlPWNlP2NlLmNoaWxkTm9kZXNbX2VdOm51bGwsaHQ9MCxCdD1SZS5jaGlsZE5vZGVzLmxlbmd0aDtodDxCdDtodCsrKVJlLmNoaWxkTm9kZXNb''@;'; put 'put ''aHRdLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLHVsKFJlLmNoaWxkTm9kZXNbaHRdLCJoaWRkZW5IZWFkZXIiKSxOZSYmTmUuY2hpbGROb2Rlc1todF0mJihOZS5jaGlsZE5vZGVzW2h0XS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSx1bChOZS5jaGlsZE5vZGVzW2h0XSwiaGlkZGVu''@;'; put 'put ''SGVhZGVyIikpLGNlJiZLZSYmS2UuY2hpbGROb2Rlc1todF0mJihLZS5jaGlsZE5vZGVzW2h0XS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSx1bChLZS5jaGlsZE5vZGVzW2h0XSwiaGlkZGVuSGVhZGVyIikpfX19LHtrZXk6ImhlYWRlclJlbmRlcmVyRmFjdG9yeSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oeSl7dmFyIEM9dGhpcyxJPXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7cmV0dXJuIGZ1bmN0aW9uKGosY2Upe3ZhciBfZSxSZT1DLmhvdCxOZT1SZS5yb290RG9jdW1lbnQsaHQ9UmUudmlldyxCdD1SZS5jb2x1bW5JbmRleE1hcHBlci5nZXRW''@;'; put 'put ''aXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGopO251bGw9PT1CdCYmKEJ0PWopLGNlLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLHVsKGNlLCJoaWRkZW5IZWFkZXIiKTt2YXIgJHQ9bnVsbCE9PShfZT1wYyhDLGFmKS5nZXRIZWFkZXJTZXR0aW5ncyh5LEJ0KSkmJnZvaWQgMCE9PV9lP19l''@;'; put 'put ''OntsYWJlbDoiIn0saG49JHQuY29sc3BhbixEbj0kdC5sYWJlbDtpZigkdC5pc1BsYWNlaG9sZGVyfHwkdC5pc0hpZGRlbilQMChjZSwiaGlkZGVuSGVhZGVyIik7ZWxzZSBpZihobj4xKXt2YXIgRXIsQXIsWXI9aHQuX3d0Lnd0T3ZlcmxheXMsX2k9bnVsbD09PShFcj1Zci50b3BJbmxpbmVT''@;'; put 'put ''dGFydENvcm5lck92ZXJsYXkpfHx2b2lkIDA9PT1Fcj92b2lkIDA6RXIuY2xvbmUud3RUYWJsZS5USEVBRC5jb250YWlucyhjZSksS2k9bnVsbD09PShBcj1Zci5pbmxpbmVTdGFydE92ZXJsYXkpfHx2b2lkIDA9PT1Bcj92b2lkIDA6QXIuY2xvbmUud3RUYWJsZS5USEVBRC5jb250YWlucyhj''@;'; put 'put ''ZSksa289X2l8fEtpP01hdGgubWluKGhuLEktaik6aG47a28+MSYmY2Uuc2V0QXR0cmlidXRlKCJjb2xzcGFuIixrbyl9dmFyIE9vPU5lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGJhPU5lLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtQMChPbywicmVsYXRpdmUiKSxQMChiYSwiY29sSGVhZGVyIiks''@;'; put 'put ''T3coYmEsRG4pLE9vLmFwcGVuZENoaWxkKGJhKSxDcChjZSksY2UuYXBwZW5kQ2hpbGQoT28pLEMuaG90LnJ1bkhvb2tzKCJhZnRlckdldENvbEhlYWRlciIsQnQsY2UpfX19LHtrZXk6Im9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFy''@;'; put 'put ''IGo9cGModGhpcyxhZikuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKEMseSk7aWYoIWopcmV0dXJuIHk7dmFyIGNlPUkuY2xhc3NOYW1lcyxfZT1JLmNvbHVtbkN1cnNvcixSZT1JLnNlbGVjdGlvblR5cGUsTmU9SS5zZWxlY3Rpb25XaWR0aCxLZT1wYyh0aGlzLGFmKS5nZXRIZWFkZXJTZXR0aW5n''@;'; put 'put ''cyhDLHkpLGh0PUtlLmlzUm9vdDtpZihSZT09PUx6KXtpZighaHQpcmV0dXJuIGouY29sdW1uSW5kZXh9ZWxzZSBSZT09PWF0ZSYmKEtlLmNvbHNwYW4+TmUtX2V8fCFodCkmJihjZS5sZW5ndGg9MCk7cmV0dXJuIHl9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oeSxDLEksail7dGhpcy5fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoQykmJihqLmNvbHVtbj0hMCl9fSx7a2V5OiJvbkFmdGVyT25DZWxsTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKEMp''@;'; put 'put ''O2lmKEkpe3ZhciBqPXRoaXMuaG90LnNlbGVjdGlvbixjZT1qLmlzU2VsZWN0ZWQoKT9qLmdldFNlbGVjdGVkUmFuZ2UoKS5jdXJyZW50KCk6bnVsbCxfZT1bXSxSZT1JLmNvbHVtbkluZGV4LE5lPUkub3JpZ0NvbHNwYW4sS2U9IWouaW5JblNlbGVjdGlvbihDKTt5LnNoaWZ0S2V5JiZjZT9D''@;'; put 'put ''LmNvbDxjZS5mcm9tLmNvbD9fZS5wdXNoKGNlLmdldFRvcEVuZENvcm5lcigpLmNvbCxSZSxDLnJvdyk6X2UucHVzaChDLmNvbD5jZS5mcm9tLmNvbD9jZS5nZXRUb3BTdGFydENvcm5lcigpLmNvbDpSZSxSZStOZS0xLEMucm93KToobGVlKHkpfHxQdyh5KSYmS2UpJiZfZS5wdXNoKFJlLFJl''@;'; put 'put ''K05lLTEsQy5yb3cpLGouc2VsZWN0Q29sdW1ucy5hcHBseShqLF9lKX19fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksail7dmFyIGNlO2lmKHRoaXMuaG90LnZpZXcuaXNNb3VzZURvd24oKSl7dmFyIF9lPXRoaXMuX2dldEhlYWRlclRyZWVO''@;'; put 'put ''b2RlRGF0YUJ5Q29vcmRzKEMpO2lmKF9lKXt2YXIgUmU9X2UuY29sdW1uSW5kZXgsTmU9X2Uub3JpZ0NvbHNwYW4sS2U9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxodD1LZS5nZXRUb3BTdGFydENvcm5lcigpLEJ0PUtlLmdldEJvdHRvbUVuZENvcm5lcigpLCR0PUtlLmZyb207''@;'; put 'put ''ai5jb2x1bW49ITAsai5jZWxsPSEwO3ZhciBobj1bXTtDLmNvbDwkdC5jb2w/aG4ucHVzaChCdC5jb2wsUmUpOmhuLnB1c2goQy5jb2w+JHQuY29sP2h0LmNvbDpSZSxSZStOZS0xKSwoY2U9dGhpcy5ob3QpLnNlbGVjdENvbHVtbnMuYXBwbHkoY2UsaG4pfX19fSx7a2V5OiJvbkFmdGVyR2V0''@;'; put 'put ''Q29sdW1uSGVhZGVyUmVuZGVyZXJzIix2YWx1ZTpmdW5jdGlvbih5KXtpZih5KXt5Lmxlbmd0aD0wO2Zvcih2YXIgQz0wO0M8cGModGhpcyxhZikuZ2V0TGF5ZXJzQ291bnQoKTtDKyspeS5wdXNoKHRoaXMuaGVhZGVyUmVuZGVyZXJGYWN0b3J5KEMpKX19fSx7a2V5OiJvbkFmdGVyVmlld3Bv''@;'; put 'put ''cnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLHZhbHVlOmZ1bmN0aW9uKHkpe2Zvcih2YXIgQz1wYyh0aGlzLGFmKS5nZXRMYXllcnNDb3VudCgpLEk9eS5zdGFydENvbHVtbixqPSEhQyxjZT0wO2NlPEM7Y2UrKyl7dmFyIF9lPXBjKHRoaXMsYWYpLmZpbmRMZWZ0TW9zdENvbHVtbkluZGV4''@;'; put 'put ''KGNlLHkuc3RhcnRDb2x1bW4pLFJlPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoX2UpO2lmKF9lPj0wJiYoaj0hMSksZzQoUmUpJiZSZTx5LnN0YXJ0Q29sdW1uKXtJPVJlO2JyZWFrfX15LnN0YXJ0Q29sdW1uPWo/cGModGhpcyxhZiku''@;'; put 'put ''Z2V0SGVhZGVyVHJlZU5vZGVEYXRhKDAsSSkuY29sdW1uSW5kZXg6SX19LHtrZXk6Im9uTW9kaWZ5Q29sV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5naG9zdFRhYmxlLmdldFdpZHRoKEMpO3JldHVybiB5Pkk/eTpJfX0se2tleToib25Jbml0Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3RoaXMudXBkYXRlUGx1Z2luKCl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Q3x8dGhpcy51cGRhdGVQbHVnaW4oKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7Um5lKHRoaXMsYWYsbnVsbCksbnVsbCE9PXBjKHRoaXMsaWIpJiYo''@;'; put 'put ''cGModGhpcyxpYikudW5zdWJzY3JpYmUoKSxSbmUodGhpcyxpYixudWxsKSksSU0obzkoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzIix2YWx1ZTpmdW5jdGlvbih5KXtpZighKHkucm93Pj0wfHx5''@;'; put 'put ''LmNvbDwwKSlyZXR1cm4gcGModGhpcyxhZikuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKHkucm93LHkuY29sKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZMZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDI4MH19XSks''@;'; put 'put ''aH0oR3MpO2Z1bmN0aW9uIEFMZShkKXtyZXR1cm4gZnVuY3Rpb24gUTZ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHRtZShkKX0oZCl8fGZ1bmN0aW9uIFU2dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1k''@;'; put 'put ''WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBZNnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHRtZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0''@;'; put 'put ''Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4g''@;'; put 'put ''dG1lKGQsZyl9fShkKXx8ZnVuY3Rpb24gVzZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5p''@;'; put 'put ''dGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdG1lKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gbm1lKGQpe3JldHVybihubWU9ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJv''@;'; put 'put ''bC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB5TGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9''@;'; put 'put ''ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgSzZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBKNnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rp''@;'; put 'put ''b24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9aCx0aGlzLmRhdGE9bnVsbCx0aGlzLnBsdWdpbj1nLHRoaXMucGFyZW50UmVmZXJlbmNlPW5ldyBXZWFrTWFwLHRoaXMuY2FjaGU9e2xldmVsczpbXSxsZXZlbENvdW50OjAscm93czpbXSxub2RlSW5mbzpuZXcgV2Vha01hcH19cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIFg2dChkLGcsaCl7ZyYmeUxlKGQucHJvdG90eXBlLGcpLGgmJnlMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmRhdGE9aH19LHtrZXk6ImdldERhdGEi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX19LHtrZXk6ImdldFJhd1NvdXJjZURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg7cmV0dXJuIHRoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksaD10aGlzLmhvdC5nZXRTb3VyY2VEYXRhKCksdGhpcy5wbHVn''@;'; put 'put ''aW4uZW5hYmxlQ29yZUFQSU1vZGlmaWVycygpLGh9fSx7a2V5OiJ1cGRhdGVXaXRoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5zZXREYXRhKGgpLHRoaXMucmV3cml0ZUNhY2hlKCl9fSx7a2V5OiJyZXdyaXRlQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLmNh''@;'; put 'put ''Y2hlPXtsZXZlbHM6W10sbGV2ZWxDb3VudDowLHJvd3M6W10sbm9kZUluZm86bmV3IFdlYWtNYXB9LHJhKDAsdGhpcy5kYXRhLmxlbmd0aC0xLGZ1bmN0aW9uKHYpe2guY2FjaGVOb2RlKGguZGF0YVt2XSwwLG51bGwpfSl9fSx7a2V5OiJjYWNoZU5vZGUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5''@;'; put 'put ''KXt2YXIgQz10aGlzO3RoaXMuY2FjaGUubGV2ZWxzW3ZdfHwodGhpcy5jYWNoZS5sZXZlbHNbdl09W10sdGhpcy5jYWNoZS5sZXZlbENvdW50Kz0xKSx0aGlzLmNhY2hlLmxldmVsc1t2XS5wdXNoKGgpLHRoaXMuY2FjaGUucm93cy5wdXNoKGgpLHRoaXMuY2FjaGUubm9kZUluZm8uc2V0KGgs''@;'; put 'put ''e3BhcmVudDp5LHJvdzp0aGlzLmNhY2hlLnJvd3MubGVuZ3RoLTEsbGV2ZWw6dn0pLHRoaXMuaGFzQ2hpbGRyZW4oaCkmJkdyKGguX19jaGlsZHJlbixmdW5jdGlvbihJKXtDLmNhY2hlTm9kZShJLHYrMSxoKX0pfX0se2tleToiZ2V0RGF0YU9iamVjdCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG51bGw9PWg/bnVsbDp0aGlzLmNhY2hlLnJvd3NbaF19fSx7a2V5OiJyZWFkVHJlZU5vZGVzIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXt2YXIgST10aGlzLGo9ITEsY2U9djtpZihpc05hTihjZSkmJmNlLmVuZClyZXR1cm4gY2U7dmFyIF9lPWg7cmV0dXJuIF9lfHwoX2U9e19fY2hp''@;'; put 'put ''bGRyZW46dGhpcy5kYXRhfSxqPSEwLGNlLT0xKSxudWxsIT15JiZjZT09PXk/e3Jlc3VsdDpfZSxlbmQ6ITB9Om51bGwhPUMmJl9lPT09Qz97cmVzdWx0OmNlLGVuZDohMH06KGNlKz0xLF9lLl9fY2hpbGRyZW4mJkdyKF9lLl9fY2hpbGRyZW4sZnVuY3Rpb24oUmUpe2lmKEkucGFyZW50UmVm''@;'; put 'put ''ZXJlbmNlLnNldChSZSxqP251bGw6X2UpLGNlPUkucmVhZFRyZWVOb2RlcyhSZSxjZSx5LEMpLGlzTmFOKGNlKSYmY2UuZW5kKXJldHVybiExfSksY2UpfX0se2tleToibW9ja1BhcmVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm1vY2tOb2RlKCk7cmV0dXJuIGguX19jaGlsZHJl''@;'; put 'put ''bj10aGlzLmRhdGEsaH19LHtrZXk6Im1vY2tOb2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXt9O3JldHVybiBabCh0aGlzLmRhdGFbMF0sZnVuY3Rpb24odix5KXtoW3ldPW51bGx9KSxofX0se2tleToiZ2V0Um93SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBudWxsPT1oP251''@;'; put 'put ''bGw6dGhpcy5jYWNoZS5ub2RlSW5mby5nZXQoaCkucm93fX0se2tleToiZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2O3Y9aXNOYU4oaCk/aDp0aGlzLmdldERhdGFPYmplY3QoaCk7dmFyIHk9dGhpcy5nZXRSb3dQYXJlbnQoaCk7cmV0dXJuIG51bGw9''@;'; put 'put ''PXk/dGhpcy5kYXRhLmluZGV4T2Yodik6eS5fX2NoaWxkcmVuLmluZGV4T2Yodil9fSx7a2V5OiJjb3VudEFsbFJvd3MiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY291bnRDaGlsZHJlbih7X19jaGlsZHJlbjp0aGlzLmRhdGF9KX19LHtrZXk6ImNvdW50Q2hpbGRyZW4iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT0wLEM9aDtyZXR1cm4gaXNOYU4oQyl8fChDPXRoaXMuZ2V0RGF0YU9iamVjdChDKSksQyYmQy5fX2NoaWxkcmVuPyhHcihDLl9fY2hpbGRyZW4sZnVuY3Rpb24oSSl7eSs9MSxJLl9fY2hpbGRyZW4mJih5Kz12LmNvdW50Q2hpbGRyZW4oSSkpfSks''@;'; put 'put ''eSk6MH19LHtrZXk6ImdldFJvd1BhcmVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY7cmV0dXJuIHY9aXNOYU4oaCk/aDp0aGlzLmdldERhdGFPYmplY3QoaCksdGhpcy5nZXRSb3dPYmplY3RQYXJlbnQodil9fSx7a2V5OiJnZXRSb3dPYmplY3RQYXJlbnQiLHZhbHVlOmZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBoJiYib2JqZWN0Ij09PW5tZShoKT90aGlzLmNhY2hlLm5vZGVJbmZvLmdldChoKS5wYXJlbnQ6bnVsbH19LHtrZXk6ImdldFJvd0xldmVsIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4odj1pc05hTihoKT9oOnRoaXMuZ2V0RGF0YU9iamVjdChoKSk/dGhpcy5nZXRS''@;'; put 'put ''b3dPYmplY3RMZXZlbCh2KTpudWxsfX0se2tleToiZ2V0Um93T2JqZWN0TGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBudWxsPT1oP251bGw6dGhpcy5jYWNoZS5ub2RlSW5mby5nZXQoaCkubGV2ZWx9fSx7a2V5OiJoYXNDaGlsZHJlbiIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9''@;'; put 'put ''aDtyZXR1cm4gaXNOYU4odil8fCh2PXRoaXMuZ2V0RGF0YU9iamVjdCh2KSksISghdi5fX2NoaWxkcmVufHwhdi5fX2NoaWxkcmVuLmxlbmd0aCl9fSx7a2V5OiJpc0NoaWxkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZ2V0Um93UGFyZW50KGgpfX0se2tleToiZ2V0''@;'; put 'put ''Q2hpbGQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk7cmV0dXJuKG51bGw9PT0oeT1oLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT15P3ZvaWQgMDp5W3ZdKXx8bnVsbH19LHtrZXk6ImlzUm93SGlnaGVzdExldmVsIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4hdGhpcy5pc0NoaWxkKGgpfX0s''@;'; put 'put ''e2tleToiaXNQYXJlbnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2LHk9aDtyZXR1cm4gaXNOYU4oeSl8fCh5PXRoaXMuZ2V0RGF0YU9iamVjdCh5KSkseSYmISF5Ll9fY2hpbGRyZW4mJjAhPT0obnVsbD09PSh2PXkuX19jaGlsZHJlbil8fHZvaWQgMD09PXY/dm9pZCAwOnYubGVuZ3RoKX19''@;'; put 'put ''LHtrZXk6ImFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXY7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUFkZENoaWxkIixoLHkpO3ZhciBDPW51bGw7aCYmKEM9dGhpcy5nZXRSb3dJbmRleChoKSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIsQyt0aGlz''@;'; put 'put ''LmNvdW50Q2hpbGRyZW4oaCkrMSwxKTt2YXIgST1oO2h8fChJPXRoaXMubW9ja1BhcmVudCgpKSxJLl9fY2hpbGRyZW58fChJLl9fY2hpbGRyZW49W10pLHl8fCh5PXRoaXMubW9ja05vZGUoKSksSS5fX2NoaWxkcmVuLnB1c2goeSksdGhpcy5yZXdyaXRlQ2FjaGUoKTt2YXIgaj10aGlzLmdl''@;'; put 'put ''dFJvd0luZGV4KHkpO3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoaiwxKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLGosMSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGgseSl9fSx7a2V5OiJhZGRDaGlsZEF0SW5kZXgiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgsdix5KXt2YXIgSSxDPXk7aWYoQ3x8KEM9dGhpcy5tb2NrTm9kZSgpKSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQWRkQ2hpbGQiLGgsQyx2KSxoKXt2YXIgY2U9dGhpcy5nZXRSb3dJbmRleChoKSt2KzE7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIs''@;'; put 'put ''Y2UsMSksaC5fX2NoaWxkcmVuLnNwbGljZSh2LG51bGwsQyksdGhpcy5yZXdyaXRlQ2FjaGUoKSx0aGlzLnBsdWdpbi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENlbGwodGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChoKSwiX19jaGlsZHJl''@;'; put 'put ''biIsaC5fX2NoaWxkcmVuLCJOZXN0ZWRSb3dzLmFkZENoaWxkQXRJbmRleCIpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoY2UsMSksdGhpcy5wbHVnaW4uZW5hYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNyZWF0ZVJvdyIsY2Us''@;'; put 'put ''MSksST1jZX1lbHNlIHRoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3QuYWx0ZXIoImluc2VydF9yb3ciLHYsMSwiTmVzdGVkUm93cy5hZGRDaGlsZEF0SW5kZXgiKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksST10aGlzLmdldFJvd0lu''@;'; put 'put ''ZGV4KHRoaXMuZGF0YVt2XSk7Qz10aGlzLmdldERhdGFPYmplY3QoSSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGgsQyx2KX19LHtrZXk6ImFkZFNpYmxpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRz''@;'; put 'put ''WzFdP2FyZ3VtZW50c1sxXToiYmVsb3ciLHk9dGhpcy50cmFuc2xhdGVUcmltbWVkUm93KGgpLEM9dGhpcy5nZXRSb3dQYXJlbnQoeSksST10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KHkpO3N3aXRjaCh2KXtjYXNlImJlbG93Ijp0aGlzLmFkZENoaWxkQXRJbmRleChDLEkrMSxudWxs''@;'; put 'put ''KTticmVhaztjYXNlImFib3ZlIjp0aGlzLmFkZENoaWxkQXRJbmRleChDLEksbnVsbCl9fX0se2tleToiZGV0YWNoRnJvbVBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcyx5PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNb''@;'; put 'put ''MV0sQz1udWxsLEk9W107QXJyYXkuaXNBcnJheShoKT8ocmEoaFswXSxoWzJdLGZ1bmN0aW9uKERuKXt2YXIgaXI9di50cmFuc2xhdGVUcmltbWVkUm93KERuKTtJLnB1c2godi5nZXREYXRhT2JqZWN0KGlyKSl9KSxyYSgwLEkubGVuZ3RoLTIsZnVuY3Rpb24oRG4pe3YuZGV0YWNoRnJvbVBh''@;'; put 'put ''cmVudChJW0RuXSwhMSl9KSxDPUlbSS5sZW5ndGgtMV0pOkM9aDt2YXIgaj10aGlzLmdldFJvd0luZGV4KEMpLGNlPXRoaXMuY291bnRDaGlsZHJlbihDKSxfZT10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KEMpLFJlPXRoaXMuZ2V0Um93UGFyZW50KEMpLE5lPXRoaXMuZ2V0Um93UGFy''@;'; put 'put ''ZW50KFJlKSxLZT10aGlzLmdldFJvd0luZGV4KE5lKSxodD1udWxsO2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVEZXRhY2hDaGlsZCIsUmUsQyksbnVsbCE9X2Upe3ZhciBCdD1BcnJheS5mcm9tKG5ldyBBcnJheShqK2NlKzEpLmtleXMoKSkuc3BsaWNlKC0xKihjZSsxKSk7aWYodGhp''@;'; put 'put ''cy5ob3QucnVuSG9va3MoImJlZm9yZVJlbW92ZVJvdyIsaixjZSsxLEJ0LHRoaXMucGx1Z2luLnBsdWdpbk5hbWUpLFJlLl9fY2hpbGRyZW4uc3BsaWNlKF9lLDEpLHRoaXMucmV3cml0ZUNhY2hlKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVtb3ZlUm93IixqLGNlKzEsQnQsdGhpcy5w''@;'; put 'put ''bHVnaW4ucGx1Z2luTmFtZSksTmUpe2h0PUtlK3RoaXMuY291bnRDaGlsZHJlbihOZSk7dmFyICR0PXRoaXMuZ2V0Q2hpbGQoTmUsdGhpcy5jb3VudENoaWxkcmVuKE5lKS0xKSxobj10aGlzLmdldFJvd0luZGV4KCR0KTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93Iixobisx''@;'; put 'put ''LGNlKzEsdGhpcy5wbHVnaW4ucGx1Z2luTmFtZSksTmUuX19jaGlsZHJlbi5wdXNoKEMpfWVsc2UgaHQ9dGhpcy5ob3QuY291bnRSb3dzKCkrMSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93IixodC0yLGNlKzEsdGhpcy5wbHVnaW4ucGx1Z2luTmFtZSksdGhpcy5kYXRhLnB1''@;'; put 'put ''c2goQyl9dGhpcy5yZXdyaXRlQ2FjaGUoKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLGh0LTIsY2UrMSx0aGlzLnBsdWdpbi5wbHVnaW5OYW1lKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEZXRhY2hDaGlsZCIsUmUsQyx0aGlzLmdldFJvd0luZGV4KEMpKSx5JiZ0aGlz''@;'; put 'put ''LmhvdC5yZW5kZXIoKX19LHtrZXk6ImZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLEk9W107R3IoeSxmdW5jdGlvbihqKXtJLnB1c2goQy5nZXREYXRhT2JqZWN0KGopKX0pLEdyKEksZnVuY3Rpb24oail7dmFyIGNlPUMuZ2V0Um93SW5kZXhXaXRoaW5QYXJl''@;'; put 'put ''bnQoaiksX2U9Qy5nZXRSb3dQYXJlbnQoaik7bnVsbD09PV9lP0MuZGF0YS5zcGxpY2UoY2UsMSk6X2UuX19jaGlsZHJlbi5zcGxpY2UoY2UsMSl9KSx0aGlzLnJld3JpdGVDYWNoZSgpfX0se2tleToic3BsaWNlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMuZ2V0RGF0''@;'; put 'put ''YU9iamVjdChoLTEpLEk9bnVsbCxqPWg7aWYoQyYmQy5fX2NoaWxkcmVuJiYwPT09Qy5fX2NoaWxkcmVuLmxlbmd0aD8oST1DLGo9MCk6aDx0aGlzLmNvdW50QWxsUm93cygpJiYoST10aGlzLmdldFJvd1BhcmVudChoKSxqPXRoaXMuZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQoaCkpLEkpaWYo''@;'; put 'put ''eSl7dmFyIGNlOyhjZT1JLl9fY2hpbGRyZW4pLnNwbGljZS5hcHBseShjZSxbaix2XS5jb25jYXQoQUxlKHkpKSl9ZWxzZSBJLl9fY2hpbGRyZW4uc3BsaWNlKGosdik7ZWxzZSBpZih5KXt2YXIgX2U7KF9lPXRoaXMuZGF0YSkuc3BsaWNlLmFwcGx5KF9lLFtqLHZdLmNvbmNhdChBTGUoeSkp''@;'; put 'put ''KX1lbHNlIHRoaXMuZGF0YS5zcGxpY2Uoaix2KTt0aGlzLnJld3JpdGVDYWNoZSgpfX0se2tleToic3luY1Jvd1dpdGhSYXdTb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWgseT1udWxsO2Rve251bGwhPT0oeT10aGlzLmdldFJvd1BhcmVudCh5KSkmJih2PXkpfXdoaWxlKG51bGwh''@;'; put 'put ''PT15KTt0aGlzLnBsdWdpbi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENlbGwodGhpcy5nZXRSb3dJbmRleCh2KSwiX19jaGlsZHJlbiIsdi5fX2NoaWxkcmVuLCJOZXN0ZWRSb3dzLnN5bmNSb3dXaXRoUmF3U291cmNlIiksdGhpcy5wbHVnaW4u''@;'; put 'put ''ZW5hYmxlQ29yZUFQSU1vZGlmaWVycygpfX0se2tleToibW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9dj09PXRoaXMuaG90LmNvdW50Um93cygpLGo9dGhpcy5nZXRSb3dQYXJlbnQoaCksY2U9dGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChoKSxfZT1qLl9fY2hp''@;'; put 'put ''bGRyZW4uc2xpY2UoY2UsY2UrMSksUmU9aD52LE5lPXRoaXMuZ2V0Um93UGFyZW50KEk/di0xOnYpO251bGw9PU5lJiYoTmU9dGhpcy5nZXRSb3dQYXJlbnQodi0xKSksbnVsbD09TmUmJihOZT10aGlzLmdldERhdGFPYmplY3Qodi0xKSksTmU/TmUuX19jaGlsZHJlbnx8KE5lLl9fY2hpbGRy''@;'; put 'put ''ZW49W10pOihOZT10aGlzLmdldERhdGFPYmplY3QodikpLl9fY2hpbGRyZW49W107dmFyIEtlPUl8fHl8fEM/TmUuX19jaGlsZHJlbi5sZW5ndGg6dGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudCh2KSxodD1qPT09TmU7TmUuX19jaGlsZHJlbi5zcGxpY2UoS2UsMCxfZVswXSksai5fX2No''@;'; put 'put ''aWxkcmVuLnNwbGljZShjZSsoUmUmJmh0PzE6MCksMSksdGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShqKSxodHx8dGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShOZSl9fSx7a2V5OiJ0cmFuc2xhdGVUcmltbWVkUm93Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5wbHVnaW4uY29s''@;'; put 'put ''bGFwc2luZ1VJP3RoaXMucGx1Z2luLmNvbGxhcHNpbmdVSS50cmFuc2xhdGVUcmltbWVkUm93KGgpOmh9fSx7a2V5OiJ1bnRyYW5zbGF0ZVRyaW1tZWRSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnBsdWdpbi5jb2xsYXBzaW5nVUk/dGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJ''@;'; put 'put ''LnVudHJhbnNsYXRlVHJpbW1lZFJvdyhoKTpofX1dKSxkfSgpO2NvbnN0ICQ2dD1LNnQ7ZnVuY3Rpb24gd0xlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImlu''@;'; put 'put ''IHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gcTZ0KGQsZyxoKXtyZXR1cm4gZyYmd0xlKGQucHJvdG90eXBlLGcpLGgmJndMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0p''@;'; put 'put ''LGR9dmFyIHQ4dD1xNnQoZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBlOHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9aCx0aGlzLnBsdWdpbj1nfSk7''@;'; put 'put ''Y29uc3Qgcm1lPXQ4dDtmdW5jdGlvbiBpbWUoZCl7cmV0dXJuKGltZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGJMZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8''@;'; put 'put ''fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIG9tZShkLGcpe3JldHVybihvbWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6''@;'; put 'put ''ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBhOHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1pbWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29u''@;'; put 'put ''c3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGw4dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2Fs''@;'; put 'put ''bGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEJuZShkKXtyZXR1cm4oQm5lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHU4''@;'; put 'put ''dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gaTh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0''@;'; put 'put ''ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJm9tZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIG84dChkKXt2YXIg''@;'; put 'put ''Zz1mdW5jdGlvbiBzOHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlw''@;'; put 'put ''ZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1CbmUoZCk7aWYoZyl7dmFyIEM9Qm5lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25z''@;'; put 'put ''dHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhOHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gbjh0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMsdix5KSkuZGF0YU1hbmFnZXI9Qy5wbHVnaW4uZGF0YU1hbmFnZXIsQy5jb2xsYXBzaW5nVUk9Qy5wbHVnaW4uY29sbGFwc2luZ1VJLEMucm93SGVhZGVyV2lkdGhDYWNoZT1udWxsLEN9''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIHI4dChkLGcsaCl7ZyYmYkxlKGQucHJvdG90eXBlLGcpLGgmJmJMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJhcHBlbmRMZXZlbEluZGljYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7''@;'; put 'put ''dmFyIEk9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSxqPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93TGV2ZWwoSSksY2U9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KEkpLF9lPUMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkRJViIpWzBdLFJlPV9lLnF1ZXJ5U2VsZWN0b3IoInNwYW4u''@;'; put 'put ''cm93SGVhZGVyIik7aWYoR3IoX2UucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzXj0iaHRfbmVzdGluZyJdJyksZnVuY3Rpb24oJHQpeyR0JiZfZS5yZW1vdmVDaGlsZCgkdCl9KSxQMChDLGguQ1NTX0NMQVNTRVMuaW5kaWNhdG9yQ29udGFpbmVyKSxqKXt2YXIgS2U9dGhpcy5ob3Qucm9vdERv''@;'; put 'put ''Y3VtZW50LGh0PVJlLmNsb25lTm9kZSghMCk7X2UuaW5uZXJIVE1MPSIiLHJhKDAsai0xLGZ1bmN0aW9uKCl7dmFyICR0PUtlLmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTtQMCgkdCxoLkNTU19DTEFTU0VTLmVtcHR5SW5kaWNhdG9yKSxfZS5hcHBlbmRDaGlsZCgkdCl9KSxfZS5hcHBlbmRDaGls''@;'; put 'put ''ZChodCl9aWYodGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihjZSkpe3ZhciBCdD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7UDAoQyxoLkNTU19DTEFTU0VTLnBhcmVudCksdGhpcy5jb2xsYXBzaW5nVUkuYXJlQ2hpbGRyZW5Db2xsYXBzZWQoSSk/UDAo''@;'; put 'put ''QnQsIiIuY29uY2F0KGguQ1NTX0NMQVNTRVMuYnV0dG9uLCIgIikuY29uY2F0KGguQ1NTX0NMQVNTRVMuZXhwYW5kQnV0dG9uKSk6UDAoQnQsIiIuY29uY2F0KGguQ1NTX0NMQVNTRVMuYnV0dG9uLCIgIikuY29uY2F0KGguQ1NTX0NMQVNTRVMuY29sbGFwc2VCdXR0b24pKSxfZS5hcHBlbmRD''@;'; put 'put ''aGlsZChCdCl9fX0se2tleToidXBkYXRlUm93SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXk7Q3x8KEM9dGhpcy5kYXRhTWFuYWdlci5jYWNoZS5sZXZlbENvdW50KSx0aGlzLnJvd0hlYWRlcldpZHRoQ2FjaGU9TWF0aC5tYXgoNTAsMTErMTAqQysyNSksdGhpcy5ob3Qu''@;'; put 'put ''cmVuZGVyKCl9fV0sW3trZXk6IkNTU19DTEFTU0VTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aW5kaWNhdG9yQ29udGFpbmVyOiJodF9uZXN0aW5nTGV2ZWxzIixwYXJlbnQ6Imh0X25lc3RpbmdQYXJlbnQiLGluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVsIixlbXB0eUluZGljYXRvcjoiaHRf''@;'; put 'put ''bmVzdGluZ0xldmVsX2VtcHR5IixidXR0b246Imh0X25lc3RpbmdCdXR0b24iLGV4cGFuZEJ1dHRvbjoiaHRfbmVzdGluZ0V4cGFuZCIsY29sbGFwc2VCdXR0b246Imh0X25lc3RpbmdDb2xsYXBzZSJ9fX1dKSxofShybWUpO2NvbnN0IF9MZT11OHQ7ZnVuY3Rpb24gYW1lKGQpe3JldHVybihh''@;'; put 'put ''bWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYm''@;'; put 'put ''ZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBDTGUoZCl7cmV0dXJuIGZ1bmN0aW9uIGQ4dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBsbWUoZCl9KGQpfHxmdW5jdGlvbiBoOHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1i''@;'; put 'put ''b2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gZjh0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBsbWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRv''@;'; put 'put ''U3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwz''@;'; put 'put ''MikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGxtZShkLGcpfX0oZCl8fGZ1bmN0aW9uIGM4dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5v''@;'; put 'put ''bi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGxtZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVy''@;'; put 'put ''biB2fWZ1bmN0aW9uIGtMZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5r''@;'; put 'put ''ZXksdil9fWZ1bmN0aW9uIHNtZShkLGcpe3JldHVybihzbWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBBOHQoZCxnKXtpZihnJiYoIm9iamVjdCI9''@;'; put 'put ''PT1hbWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIHk4dChkKXtpZih2b2lk''@;'; put 'put ''IDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFBuZShkKXtyZXR1cm4oUG5lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGI4dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gbTh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnNtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHY4dChkKXt2YXIgZz1mdW5jdGlvbiB3OHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5j''@;'; put 'put ''b25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4h''@;'; put 'put ''MX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1QbmUoZCk7aWYoZyl7dmFyIEM9UG5lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBBOHQodGhpcyx5KX19KGgpO2Z1''@;'; put 'put ''bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gcDh0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMsdix5KSkuZGF0YU1hbmFnZXI9''@;'; put 'put ''Qy5wbHVnaW4uZGF0YU1hbmFnZXIsQy5jb2xsYXBzZWRSb3dzPVtdLEMuY29sbGFwc2VkUm93c1N0YXNoPXtzdGFzaDpmdW5jdGlvbigpe3ZhciBqPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Qy5sYXN0Q29sbGFwc2VkUm93cz1DLmNv''@;'; put 'put ''bGxhcHNlZFJvd3Muc2xpY2UoMCksQy5leHBhbmRNdWx0aXBsZUNoaWxkcmVuKEMubGFzdENvbGxhcHNlZFJvd3Msail9LHNoaWZ0U3Rhc2g6ZnVuY3Rpb24oaixjZSl7dmFyIF9lPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxO251bGw9''@;'; put 'put ''PWNlJiYoY2U9MS8wKSxHcihDLmxhc3RDb2xsYXBzZWRSb3dzLGZ1bmN0aW9uKFJlLE5lKXtSZT49aiYmUmU8Y2UmJihDLmxhc3RDb2xsYXBzZWRSb3dzW05lXT1SZStfZSl9KX0sYXBwbHlTdGFzaDpmdW5jdGlvbigpe3ZhciBqPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0pfHxhcmd1bWVudHNbMF07Qy5jb2xsYXBzZU11bHRpcGxlQ2hpbGRyZW4oQy5sYXN0Q29sbGFwc2VkUm93cyxqKSxDLmxhc3RDb2xsYXBzZWRSb3dzPXZvaWQgMH0sdHJpbVN0YXNoOmZ1bmN0aW9uKGosY2Upe3JhKGosaitjZS0xLGZ1bmN0aW9uKF9lKXt2YXIgUmU9Qy5sYXN0''@;'; put 'put ''Q29sbGFwc2VkUm93cy5pbmRleE9mKF9lKTtSZT4tMSYmQy5sYXN0Q29sbGFwc2VkUm93cy5zcGxpY2UoUmUsMSl9KX19LEN9cmV0dXJuIGZ1bmN0aW9uIGc4dChkLGcsaCl7ZyYma0xlKGQucHJvdG90eXBlLGcpLGgmJmtMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5''@;'; put 'put ''cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJjb2xsYXBzZUNoaWxkcmVuIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxqPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sY2U9W10sX2U9bnVsbCxSZT1udWxsLE5lPW51bGw7cmV0dXJuIGlzTmFOKHkpP1JlPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoX2U9eSk6KF9lPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdCh5KSxSZT15KSx0aGlz''@;'; put 'put ''LmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKF9lKSYmR3IoX2UuX19jaGlsZHJlbixmdW5jdGlvbihLZSl7Y2UucHVzaChDLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KEtlKSl9KSxOZT10aGlzLmNvbGxhcHNlUm93cyhjZSwhMCwhMSksaiYmdGhpcy50cmltUm93cyhOZSksSSYmdGhpcy5yZW5k''@;'; put 'put ''ZXJBbmRBZGp1c3QoKSwtMT09PXRoaXMuY29sbGFwc2VkUm93cy5pbmRleE9mKFJlKSYmdGhpcy5jb2xsYXBzZWRSb3dzLnB1c2goUmUpLE5lfX0se2tleToiY29sbGFwc2VNdWx0aXBsZUNoaWxkcmVuIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9IShhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxqPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sY2U9W107R3IoeSxmdW5jdGlvbihfZSl7Y2UucHVzaC5hcHBseShjZSxDTGUoQy5jb2xsYXBzZUNoaWxkcmVu''@;'; put 'put ''KF9lLCExLCExKSkpfSksaiYmdGhpcy50cmltUm93cyhjZSksSSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKX19LHtrZXk6ImNvbGxhcHNlUm93Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFd''@;'; put 'put ''O3RoaXMuY29sbGFwc2VSb3dzKFt5XSxDKX19LHtrZXk6ImNvbGxhcHNlUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQg''@;'; put 'put ''MCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGNlPVtdO3JldHVybiBHcih5LGZ1bmN0aW9uKF9lKXtjZS5wdXNoKF9lKSxJJiZDLmNvbGxhcHNlQ2hpbGRSb3dzKF9lLGNlKX0pLGomJnRoaXMudHJpbVJvd3MoY2UpLGNlfX0se2tleToiY29sbGFwc2VDaGlsZFJvd3MiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sY2U9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtpZih0aGlzLmRhdGFNYW5hZ2VyLmhhc0No''@;'; put 'put ''aWxkcmVuKHkpKXt2YXIgX2U9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KHkpO0dyKF9lLl9fY2hpbGRyZW4sZnVuY3Rpb24oUmUpe3ZhciBOZT1DLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KFJlKTtJLnB1c2goTmUpLEMuY29sbGFwc2VDaGlsZFJvd3MoTmUsSSl9KX1jZSYmdGhp''@;'; put 'put ''cy50cmltUm93cyhJKX19LHtrZXk6ImV4cGFuZFJvdyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt0aGlzLmV4cGFuZFJvd3MoW3ldLEMpfX0se2tleToiZXhwYW5kUm93cyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGNlPVtdO3JldHVybiBHcih5LGZ1bmN0''@;'; put 'put ''aW9uKF9lKXtjZS5wdXNoKF9lKSxJJiZDLmV4cGFuZENoaWxkUm93cyhfZSxjZSl9KSxqJiZ0aGlzLnVudHJpbVJvd3MoY2UpLGNlfX0se2tleToiZXhwYW5kQ2hpbGRSb3dzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLGNlPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107aWYodGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbih5KSl7dmFyIF9lPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdCh5KTtHcihf''@;'; put 'put ''ZS5fX2NoaWxkcmVuLGZ1bmN0aW9uKFJlKXtpZighQy5pc0FueVBhcmVudENvbGxhcHNlZChSZSkpe3ZhciBOZT1DLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KFJlKTtJLnB1c2goTmUpLEMuZXhwYW5kQ2hpbGRSb3dzKE5lLEkpfX0pfWNlJiZ0aGlzLnVudHJpbVJvd3MoSSl9fSx7a2V5OiJl''@;'; put 'put ''eHBhbmRDaGlsZHJlbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJd''@;'; put 'put ''LGNlPVtdLF9lPW51bGwsUmU9bnVsbCxOZT1udWxsO3JldHVybiBpc05hTih5KT8oX2U9eSxSZT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KHkpKTooX2U9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KHkpLFJlPXkpLHRoaXMuY29sbGFwc2VkUm93cy5zcGxpY2UodGhpcy5j''@;'; put 'put ''b2xsYXBzZWRSb3dzLmluZGV4T2YoUmUpLDEpLHRoaXMuZGF0YU1hbmFnZXIuaGFzQ2hpbGRyZW4oX2UpJiZHcihfZS5fX2NoaWxkcmVuLGZ1bmN0aW9uKEtlKXt2YXIgaHQ9Qy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChLZSk7Y2UucHVzaChodCl9KSxOZT10aGlzLmV4cGFuZFJvd3MoY2Us''@;'; put 'put ''ITAsITEpLGomJnRoaXMudW50cmltUm93cyhOZSksSSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKSxOZX19LHtrZXk6ImV4cGFuZE11bHRpcGxlQ2hpbGRyZW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFd''@;'; put 'put ''KXx8YXJndW1lbnRzWzFdLGo9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxjZT1bXTtHcih5LGZ1bmN0aW9uKF9lKXtjZS5wdXNoLmFwcGx5KGNlLENMZShDLmV4cGFuZENoaWxkcmVuKF9lLCExLCExKSkpfSksaiYmdGhpcy51bnRy''@;'; put 'put ''aW1Sb3dzKGNlKSxJJiZ0aGlzLnJlbmRlckFuZEFkanVzdCgpfX0se2tleToiY29sbGFwc2VBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YSgpLEk9W107R3IoQyxmdW5jdGlvbihqKXt5LmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGop''@;'; put 'put ''JiZJLnB1c2goail9KSx0aGlzLmNvbGxhcHNlTXVsdGlwbGVDaGlsZHJlbihJKSx0aGlzLnJlbmRlckFuZEFkanVzdCgpfX0se2tleToiZXhwYW5kQWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKSxJPVtdO0dyKEMsZnVuY3Rpb24o''@;'; put 'put ''ail7eS5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihqKSYmSS5wdXNoKGopfSksdGhpcy5leHBhbmRNdWx0aXBsZUNoaWxkcmVuKEkpLHRoaXMucmVuZGVyQW5kQWRqdXN0KCl9fSx7a2V5OiJ0cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt0aGlzLmhvdC5iYXRjaEV4ZWN1''@;'; put 'put ''dGlvbihmdW5jdGlvbigpe0dyKHksZnVuY3Rpb24oSSl7Qy5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgoSSwhMCl9KX0sITApfX0se2tleToidW50cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5j''@;'; put 'put ''dGlvbigpe0dyKHksZnVuY3Rpb24oSSl7Qy5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgoSSwhMSl9KX0sITApfX0se2tleToiYXJlQ2hpbGRyZW5Db2xsYXBzZWQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1pc05hTih5KT95OnRoaXMuZGF0YU1hbmFn''@;'; put 'put ''ZXIuZ2V0RGF0YU9iamVjdCh5KSxqPSEwO3JldHVybiBudWxsPT09SSYmKEk9e19fY2hpbGRyZW46dGhpcy5kYXRhTWFuYWdlci5kYXRhfSksdGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihJKSYmR3IoSS5fX2NoaWxkcmVuLGZ1bmN0aW9uKGNlKXt2YXIgX2U9Qy5kYXRhTWFuYWdlci5n''@;'; put 'put ''ZXRSb3dJbmRleChjZSk7aWYoIUMucGx1Z2luLmNvbGxhcHNlZFJvd3NNYXAuZ2V0VmFsdWVBdEluZGV4KF9lKSlyZXR1cm4gaj0hMSwhMX0pLGp9fSx7a2V5OiJpc0FueVBhcmVudENvbGxhcHNlZCIsdmFsdWU6ZnVuY3Rpb24oeSl7Zm9yKHZhciBDPXk7bnVsbCE9PUM7KXtDPXRoaXMuZGF0''@;'; put 'put ''YU1hbmFnZXIuZ2V0Um93UGFyZW50KEMpO3ZhciBJPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoQyk7aWYodGhpcy5jb2xsYXBzZWRSb3dzLmluZGV4T2YoSSk+LTEpcmV0dXJuITB9cmV0dXJuITF9fSx7a2V5OiJ0b2dnbGVTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZighKEMu''@;'; put 'put ''Y29sPj0wKSl7dmFyIEk9dGhpcy50cmFuc2xhdGVUcmltbWVkUm93KEMucm93KTtYYSh5LnRhcmdldCxfTGUuQ1NTX0NMQVNTRVMuYnV0dG9uKSYmKHRoaXMuYXJlQ2hpbGRyZW5Db2xsYXBzZWQoSSk/dGhpcy5leHBhbmRDaGlsZHJlbihJKTp0aGlzLmNvbGxhcHNlQ2hpbGRyZW4oSSksdjgo''@;'; put 'put ''eSkpfX19LHtrZXk6InRyYW5zbGF0ZVRyaW1tZWRSb3ciLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmhvdC50b1BoeXNpY2FsUm93KHkpfX0se2tleToidW50cmFuc2xhdGVUcmltbWVkUm93Iix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5ob3QudG9WaXN1YWxSb3coeSl9''@;'; put 'put ''fSx7a2V5OiJyZW5kZXJBbmRBZGp1c3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucmVuZGVyKCksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKX19XSksaH0ocm1lKTtjb25zdCBfOHQ9Yjh0O2Z1bmN0aW9uIHVtZShkKXtyZXR1cm4odW1lPSJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBl''@;'; put 'put ''PyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gU0xlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gY21lKGQsZyl7cmV0dXJuKGNtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEU4dChk''@;'; put 'put ''LGcpe2lmKGcmJigib2JqZWN0Ij09PXVtZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gTUxl''@;'; put 'put ''KGQpfWZ1bmN0aW9uIE1MZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gRm5lKGQpe3JldHVybihGbmU9T2JqZWN0LnNl''@;'; put 'put ''dFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgRUxlPW5ldyBXZWFrTWFwLFQ4dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gUzh0KGQsZyl7aWYoImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQs''@;'; put 'put ''d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmNtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIE04dChkKXt2YXIgZz1mdW5jdGlvbiB4OHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9m''@;'; put 'put ''IFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVh''@;'; put 'put ''bixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1GbmUoZCk7aWYoZyl7dmFyIEM9Rm5lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhp''@;'; put 'put ''cyxhcmd1bWVudHMpO3JldHVybiBFOHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gQzh0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRo''@;'; put 'put ''aXMsaCksQz1nLmNhbGwodGhpcyx2LHkpLEVMZS5zZXQoTUxlKEMpLHtyb3dfYWJvdmU6ZnVuY3Rpb24oaixjZSl7Qy5kYXRhTWFuYWdlci5hZGRTaWJsaW5nKGNlW2NlLmxlbmd0aC0xXS5zdGFydC5yb3csImFib3ZlIil9LHJvd19iZWxvdzpmdW5jdGlvbihqLGNlKXtDLmRhdGFNYW5hZ2Vy''@;'; put 'put ''LmFkZFNpYmxpbmcoY2VbY2UubGVuZ3RoLTFdLnN0YXJ0LnJvdywiYmVsb3ciKX19KSxDLmRhdGFNYW5hZ2VyPUMucGx1Z2luLmRhdGFNYW5hZ2VyLEN9cmV0dXJuIGZ1bmN0aW9uIGs4dChkLGcsaCl7ZyYmU0xlKGQucHJvdG90eXBlLGcpLGgmJlNMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJhcHBlbmRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9W3trZXk6ImFkZF9jaGlsZCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobXBlKX0sY2Fs''@;'; put 'put ''bGJhY2s6ZnVuY3Rpb24oKXt2YXIgY2U9Qy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KEMuaG90LmdldFNlbGVjdGVkTGFzdCgpWzBdKSxfZT1DLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoY2UpO0MuZGF0YU1hbmFnZXIuYWRkQ2hpbGQoX2UpfSxkaXNhYmxlZDpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBjZT1DLmhvdC5nZXRTZWxlY3RlZExhc3QoKTtyZXR1cm4hY2V8fGNlWzBdPDB8fEMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8Qy5ob3QuY291bnRSb3dzKCk+PUMuaG90LmdldFNldHRpbmdzKCkubWF4Um93c319LHtrZXk6ImRldGFjaF9mcm9t''@;'; put 'put ''X3BhcmVudCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UodnBlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtDLmRhdGFNYW5hZ2VyLmRldGFjaEZyb21QYXJlbnQoQy5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCkpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3ZhciBj''@;'; put 'put ''ZT1DLmhvdC5nZXRTZWxlY3RlZExhc3QoKSxfZT1DLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3coY2VbMF0pO3JldHVybiFDLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChfZSl8fCFjZXx8Y2VbMF08MHx8Qy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigp''@;'; put 'put ''fHxDLmhvdC5jb3VudFJvd3MoKT49Qy5ob3QuZ2V0U2V0dGluZ3MoKS5tYXhSb3dzfX0se25hbWU6Ii0tLS0tLS0tLSJ9XTtyZXR1cm4gcmEoMCx5Lml0ZW1zLmxlbmd0aC0xLGZ1bmN0aW9uKGope2lmKDA9PT1qKXJldHVybiBHcihJLGZ1bmN0aW9uKGNlLF9lKXt5Lml0ZW1zLnNwbGljZShq''@;'; put 'put ''K19lLDAsY2UpfSksITF9KSx0aGlzLm1vZGlmeVJvd0luc2VydGluZ09wdGlvbnMoeSl9fSx7a2V5OiJtb2RpZnlSb3dJbnNlcnRpbmdPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1FTGUuZ2V0KHRoaXMpO3JldHVybiByYSgwLHkuaXRlbXMubGVuZ3RoLTEsZnVuY3Rpb24oSSl7''@;'; put 'put ''dmFyIGo9Q1t5Lml0ZW1zW0ldLmtleV07bnVsbCE9aiYmKHkuaXRlbXNbSV0uY2FsbGJhY2s9ail9KSx5fX1dKSxofShybWUpO2NvbnN0IEk4dD1UOHQ7dmFyIHhMZTtmdW5jdGlvbiBUTGUoZCl7cmV0dXJuIGZ1bmN0aW9uIFI4dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBmbWUo''@;'; put 'put ''ZCl9KGQpfHxmdW5jdGlvbiBPOHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gTDh0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiBkKXJldHVybiBmbWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJh''@;'; put 'put ''eS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGZtZShkLGcpfX0oZCl8fGZ1bmN0aW9uIEQ4dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQg''@;'; put 'put ''bm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGZtZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgp''@;'; put 'put ''O2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIElMZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1''@;'; put 'put ''ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBIOHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBQOHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh''@;'; put 'put ''IGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5wbHVnaW49Zyx0aGlzLmhvdD1nLmhvdCx0aGlzLmRhdGFNYW5hZ2VyPWcuZGF0YU1hbmFnZXIsdGhpcy5jb2xsYXBzaW5nVUk9Zy5jb2xsYXBzaW5nVUl9cmV0dXJuIGZ1bmN0aW9uIEY4dChkLGcsaCl7ZyYmSUxlKGQucHJv''@;'; put 'put ''dG90eXBlLGcpLGgmJklMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJvbkJlZm9yZVJvd01vdmUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe3ZhciBJPXRoaXM7aWYodGhpcy5kaXNwbGF5QVBJQ29tcGF0aWJpbGl0''@;'; put 'put ''eVdhcm5pbmcoe3Jvd3M6aCxmaW5hbEluZGV4OnYsZHJvcEluZGV4OnksbW92ZVBvc3NpYmxlOkN9KSlyZXR1cm4hMTt0aGlzLm1vdmVkVG9Db2xsYXBzZWQ9ITE7dmFyIGNlPXk9PT10aGlzLmhvdC5jb3VudFJvd3MoKSxfZT1jZT90aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTp0aGlzLmRh''@;'; put 'put ''dGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3coeSksUmU9ITAsTmU9aC5tYXAoZnVuY3Rpb24oaG4pe2lmKCFSZSlyZXR1cm4hMTt2YXIgRG49SS5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KGhuKTtyZXR1cm4gUmU9SS5zaG91bGRBbGxvd01vdmluZyhEbixfZSksRG59KSxL''@;'; put 'put ''ZT0tMT09PU5lLmluZGV4T2YoX2UpO2lmKCFSZXx8IUtlKXJldHVybiExO3ZhciBodD10aGlzLmdldEJhc2VQYXJlbnQoTmUpLEJ0PXRoaXMuZ2V0VGFyZ2V0UGFyZW50KGNlLF9lKSwkdD1odD09PUJ0O3JldHVybiB0aGlzLm1vdmVkVG9Db2xsYXBzZWQ9dGhpcy5jb2xsYXBzaW5nVUkuYXJl''@;'; put 'put ''Q2hpbGRyZW5Db2xsYXBzZWQoQnQpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpLHRoaXMuc2hpZnRDb2xsYXBzaWJsZVBhcmVudHNMb2NhdGlvbnMoTmUsX2UsJHQpLHRoaXMubW92ZVJvd3MoTmUsX2UsQnQpLHRoaXMuZGF0YU1hbmFnZXIucmV3cml0ZUNh''@;'; put 'put ''Y2hlKCksdGhpcy5tb3ZlQ2VsbHNNZXRhKE5lLF9lKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guYXBwbHlTdGFzaCghMSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUm93TW92ZSIsaCx2LHksQyxDJiZ0aGlzLmlzUm93T3JkZXJDaGFuZ2VkKGgsdikpLHRoaXMuaG90''@;'; put 'put ''LnJlbmRlcigpLHRoaXMuc2VsZWN0Q2VsbHMoaCx5KSwhMX19LHtrZXk6ImRpc3BsYXlBUElDb21wYXRpYmlsaXR5V2FybmluZyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aC5yb3dzLHk9aC5maW5hbEluZGV4LEM9aC5kcm9wSW5kZXgsST1oLm1vdmVQb3NzaWJsZSxqPSExO3JldHVybiB1''@;'; put 'put ''MShDKSYmKGMxKEQyKHhMZXx8KHhMZT1mdW5jdGlvbiBCOHQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlNpbmNlIHZlcnNpb24gOC4wLjAgb2Yg''@;'; put 'put ''dGhlIEhhbmRzb250YWJsZSB0aGUgJ21vdmVSb3dzJyBtZXRob2QgaXNuJ3QgdXNlZCBmb3IgbW92aW5nIHJvd3MgXG4gICAgICB3aGVuIHRoZSBOZXN0ZWRSb3dzIHBsdWdpbiBpcyBlbmFibGVkLiBQbGVhc2UgdXNlIHRoZSAnZHJhZ1Jvd3MnIG1ldGhvZCBpbnN0ZWFkLiJdLFsiU2luY2Ug''@;'; put 'put ''dmVyc2lvbiA4LjAuMCBvZiB0aGUgSGFuZHNvbnRhYmxlIHRoZSAnbW92ZVJvd3MnIG1ldGhvZCBpc24ndCB1c2VkIGZvciBtb3Zpbmcgcm93c1xceDIwXG4gICAgICB3aGVuIHRoZSBOZXN0ZWRSb3dzIHBsdWdpbiBpcyBlbmFibGVkLiBQbGVhc2UgdXNlIHRoZSAnZHJhZ1Jvd3MnIG1ldGhv''@;'; put 'put ''ZCBpbnN0ZWFkLiJdKSkpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIix2LHksQyxJLCExKSxqPSEwKSxqfX0se2tleToic2hvdWxkQWxsb3dNb3ZpbmciLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuISh0aGlzLmRhdGFNYW5hZ2VyLmlzUGFyZW50KGgpfHx0aGlzLmRhdGFN''@;'; put 'put ''YW5hZ2VyLmlzUm93SGlnaGVzdExldmVsKGgpfHxoPT09dnx8MD09PXYpfX0se2tleToiZ2V0QmFzZVBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGhbMF0pfX0se2tleToiZ2V0VGFyZ2V0UGFyZW50Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihoLHYpe3ZhciB5PXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGg/di0xOnYpO3JldHVybiBudWxsPT15JiYoeT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudCh2LTEpKSx5fX0se2tleToic2hpZnRDb2xsYXBzaWJsZVBhcmVudHNMb2NhdGlvbnMiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgsdix5KXt5fHwoTWF0aC5tYXguYXBwbHkoTWF0aCxUTGUoaCkpPD12P3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlmdFN0YXNoKGhbMF0sdiwtMSpoLmxlbmd0aCk6dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2godixoWzBd''@;'; put 'put ''LGgubGVuZ3RoKSl9fSx7a2V5OiJtb3ZlUm93cyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMsST12PT09dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleCh5KSt0aGlzLmRhdGFNYW5hZ2VyLmNvdW50Q2hpbGRyZW4oeSkrMTt0aGlzLmhvdC5iYXRjaFJlbmRlcihmdW5jdGlv''@;'; put 'put ''bigpe2guZm9yRWFjaChmdW5jdGlvbihqKXtDLmRhdGFNYW5hZ2VyLm1vdmVSb3coaix2LEMubW92ZWRUb0NvbGxhcHNlZCxJKX0pfSl9fSx7a2V5OiJtb3ZlQ2VsbHNNZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciBDLHk9dGhpcyxJPVtdLGo9TWF0aC5tYXguYXBwbHkoTWF0aCxUTGUo''@;'; put 'put ''aCkpPHY7aC5mb3JFYWNoKGZ1bmN0aW9uKGNlKXtJLnB1c2goeS5ob3QuZ2V0Q2VsbE1ldGFBdFJvdyhjZSkpfSksdGhpcy5ob3Quc3BsaWNlQ2VsbHNNZXRhKGhbMF0saC5sZW5ndGgpLChDPXRoaXMuaG90KS5zcGxpY2VDZWxsc01ldGEuYXBwbHkoQyxbdi0oaj9JLmxlbmd0aDowKSwwXS5j''@;'; put 'put ''b25jYXQoSSkpfX0se2tleToic2VsZWN0Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIGNlLHk9aC5sZW5ndGgsQz0wLEk9MCxqPW51bGw7aWYodGhpcy5tb3ZlZFRvQ29sbGFwc2VkKXt2YXIgX2U7X2U9dGhpcy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KGhbeS0xXTx2''@;'; put 'put ''P3YteTp2KTt2YXIgUmU9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQYXJlbnQobnVsbD09PV9lP3RoaXMuaG90LmNvdW50U291cmNlUm93cygpLTE6X2UtMSksTmU9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChSZSk7ST1DPXRoaXMuZGF0YU1hbmFnZXIudW50cmFuc2xhdGVUcmltbWVk''@;'; put 'put ''Um93KE5lKX1lbHNlIGhbeS0xXTx2P0M9KEk9di0xKS15KzE6ST0oQz12KSt5LTE7aj10aGlzLmhvdC5zZWxlY3Rpb24sY2U9dGhpcy5ob3QuY291bnRDb2xzKCktMSxqLnNldFJhbmdlU3RhcnQodGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQywwKSksai5zZXRSYW5nZUVuZCh0aGlzLmhv''@;'; put 'put ''dC5fY3JlYXRlQ2VsbENvb3JkcyhJLGNlKSwhMCl9fSx7a2V5OiJpc1Jvd09yZGVyQ2hhbmdlZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gaC5zb21lKGZ1bmN0aW9uKHksQyl7cmV0dXJuIHktQyE9PXZ9KX19XSksZH0oKTtmdW5jdGlvbiBobWUoZCl7cmV0dXJuKGhtZT0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIERMZShkKXtyZXR1cm4gZnVuY3Rpb24gWjh0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGRtZShkKX0oZCl8fGZ1bmN0aW9uIGo4dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9''@;'; put 'put ''ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBWOHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGRtZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs''@;'; put 'put ''bChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1w''@;'; put 'put ''ZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gZG1lKGQsZyl9fShkKXx8ZnVuY3Rpb24gTjh0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9i''@;'; put 'put ''amVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZG1lKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rp''@;'; put 'put ''b24gTExlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVu''@;'; put 'put ''Y3Rpb24gRE0oKXtyZXR1cm4gRE09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVc4dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1''@;'; put 'put ''cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sRE0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFc4dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9YTkoZCkpOyk7''@;'; put 'put ''cmV0dXJuIGR9ZnVuY3Rpb24gcG1lKGQsZyl7cmV0dXJuKHBtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFE4dChkLGcpe2lmKGcmJigib2JqZWN0''@;'; put 'put ''Ij09PWhtZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT0xlKGQpfWZ1bmN0aW9uIE9MZShk''@;'; put 'put ''KXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gYTkoZCl7cmV0dXJuKGE5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGdtZT0ibmVzdGVkUm93cyIsbDk9bmV3IFdlYWtNYXAsJDh0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBZOHQoZCxnKXtpZigiZnVuY3Rp''@;'; put 'put ''b24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcG1lKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gVTh0KGQpe3ZhciBnPWZ1bmN0aW9uIEo4dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVm''@;'; put 'put ''bGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtd''@;'; put 'put ''LGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWE5KGQpO2lmKGcpe3ZhciBDPWE5KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpO3JldHVybiBROHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIHo4dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5''@;'; put 'put ''PWcuY2FsbCh0aGlzLHYpKS5kYXRhTWFuYWdlcj1udWxsLHkuaGVhZGVyc1VJPW51bGwseS5jb2xsYXBzZWRSb3dzTWFwPW51bGwsbDkuc2V0KE9MZSh5KSx7bW92ZWRUb0NvbGxhcHNlZDohMSxza2lwUmVuZGVyOm51bGwsc2tpcENvcmVBUElNb2RpZmllcnM6ITF9KSx5fXJldHVybiBmdW5j''@;'; put 'put ''dGlvbiBHOHQoZCxnLGgpe2cmJkxMZShkLnByb3RvdHlwZSxnKSxoJiZMTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGlu''@;'; put 'put ''Z3MoKVtnbWVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5jb2xsYXBzZWRSb3dzTWFwPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJuZXN0ZWRSb3dzIixuZXcgeHopLHRoaXMuZGF0YU1h''@;'; put 'put ''bmFnZXI9bmV3ICQ2dCh0aGlzLHRoaXMuaG90KSx0aGlzLmNvbGxhcHNpbmdVST1uZXcgXzh0KHRoaXMsdGhpcy5ob3QpLHRoaXMuaGVhZGVyc1VJPW5ldyBfTGUodGhpcyx0aGlzLmhvdCksdGhpcy5jb250ZXh0TWVudVVJPW5ldyBJOHQodGhpcyx0aGlzLmhvdCksdGhpcy5yb3dNb3ZlQ29u''@;'; put 'put ''dHJvbGxlcj1uZXcgSDh0KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJJbml0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld1JlbmRlciIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVZpZXdS''@;'; put 'put ''ZW5kZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dEYXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5Um93RGF0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVNvdXJjZUxlbmd0aCIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''eS5vbk1vZGlmeVNvdXJjZUxlbmd0aC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZURhdGFTcGxpY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVEYXRhU3BsaWNlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiZmlsdGVyRGF0YSIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4geS5vbkZpbHRlckRhdGEuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMuYXBwbHkoeSxhcmd1bWVu''@;'; put 'put ''dHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckdldFJvd0hlYWRlciIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyR2V0Um93SGVhZGVyLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3Jl''@;'; put 'put ''T25DZWxsTW91c2VEb3duLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlUmVtb3ZlUm93LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHkub25BZnRlclJlbW92ZVJvdy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUFkZENoaWxkIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlQWRkQ2hpbGQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckFkZENoaWxk''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJBZGRDaGlsZC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZURldGFjaENoaWxkIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlRGV0YWNoQ2hpbGQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29r''@;'; put 'put ''KCJhZnRlckRldGFjaENoaWxkIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJEZXRhY2hDaGlsZC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlYWRlcldpZHRoIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5Um93SGVhZGVyV2lkdGguYXBwbHko''@;'; put 'put ''eSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyQ3JlYXRlUm93LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUm93TW92ZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVJvd01v''@;'; put 'put ''dmUuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVMb2FkRGF0YSIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25CZWZvcmVMb2FkRGF0YShDKX0pLERNKGE5KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6ImRpc2FibGVQ''@;'; put 'put ''bHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCgibmVzdGVkUm93cyIpLERNKGE5KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLmRpc2FibGVQbHVnaW4oKTt2YXIgeT10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKTt0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuZGF0YU1hbmFnZXIudXBkYXRlV2l0aERhdGEoeSksRE0oYTkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7''@;'; put 'put ''a2V5OiJvbkJlZm9yZVJvd01vdmUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLGope3JldHVybiB0aGlzLnJvd01vdmVDb250cm9sbGVyLm9uQmVmb3JlUm93TW92ZSh5LEMsSSxqKX19LHtrZXk6ImRpc2FibGVDb3JlQVBJTW9kaWZpZXJzIix2YWx1ZTpmdW5jdGlvbigpe2w5LmdldCh0aGlzKS5z''@;'; put 'put ''a2lwQ29yZUFQSU1vZGlmaWVycz0hMH19LHtrZXk6ImVuYWJsZUNvcmVBUElNb2RpZmllcnMiLHZhbHVlOmZ1bmN0aW9uKCl7bDkuZ2V0KHRoaXMpLnNraXBDb3JlQVBJTW9kaWZpZXJzPSExfX0se2tleToib25CZWZvcmVPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt0''@;'; put 'put ''aGlzLmNvbGxhcHNpbmdVSS50b2dnbGVTdGF0ZSh5LEMsSSl9fSx7a2V5OiJvbk1vZGlmeVJvd0RhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKCFsOS5nZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnMpcmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdCh5KX19LHtrZXk6''@;'; put 'put ''Im9uTW9kaWZ5U291cmNlTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe2lmKCFsOS5nZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnMpcmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuY291bnRBbGxSb3dzKCl9fSx7a2V5OiJvbkJlZm9yZURhdGFTcGxpY2UiLHZhbHVlOmZ1bmN0aW9uKHksQyxJ''@;'; put 'put ''KXtyZXR1cm4hKCFsOS5nZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnMmJiF0aGlzLmRhdGFNYW5hZ2VyLmlzUm93SGlnaGVzdExldmVsKHkpJiYodGhpcy5kYXRhTWFuYWdlci5zcGxpY2VEYXRhKHksQyxJKSwxKSl9fSx7a2V5OiJvbkZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKHks''@;'; put 'put ''QyxJKXt2YXIgaj1sOS5nZXQodGhpcyk7cmV0dXJuIHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC50cmltU3Rhc2goSVswXSxDKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rh''@;'; put 'put ''c2guc2hpZnRTdGFzaChJWzBdLG51bGwsLTEqQyksdGhpcy5kYXRhTWFuYWdlci5maWx0ZXJEYXRhKHksQyxJKSxqLnNraXBSZW5kZXI9ITAsdGhpcy5kYXRhTWFuYWdlci5nZXREYXRhKCkuc2xpY2UoKX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5KXtyZXR1cm4gdGhpcy5jb250ZXh0TWVudVVJLmFwcGVuZE9wdGlvbnMoeSl9fSx7a2V5OiJvbkFmdGVyR2V0Um93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaGVhZGVyc1VJLmFwcGVuZExldmVsSW5kaWNhdG9ycyh5LEMpfX0se2tleToib25Nb2RpZnlSb3dI''@;'; put 'put ''ZWFkZXJXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuaGVhZGVyc1VJLnJvd0hlYWRlcldpZHRoQ2FjaGV8fHl9fSx7a2V5OiJvbkFmdGVyUmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbih5LEMsSSxqKXt2YXIgY2U9dGhpcztpZihqIT09dGhpcy5wbHVnaW5OYW1lKXt2YXIg''@;'; put 'put ''X2U9bDkuZ2V0KHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtfZS5za2lwUmVuZGVyPW51bGwsY2UuaGVhZGVyc1VJLnVwZGF0ZVJvd0hlYWRlcldpZHRoKCksY2UuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCl9LDApfX19LHtrZXk6Im9uQmVmb3JlUmVt''@;'; put 'put ''b3ZlUm93Iix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIGo9dGhpcyxjZT1BcnJheS5mcm9tKEkucmVkdWNlKGZ1bmN0aW9uKF9lLFJlKXtpZihqLmRhdGFNYW5hZ2VyLmlzUGFyZW50KFJlKSl7dmFyIE5lPWouZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdChSZSkuX19jaGlsZHJlbjtyZXR1''@;'; put 'put ''cm4gX2UuYWRkKFJlKSxBcnJheS5pc0FycmF5KE5lKSYmTmUuZm9yRWFjaChmdW5jdGlvbihLZSl7cmV0dXJuIF9lLmFkZChqLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KEtlKSl9KSxfZX1yZXR1cm4gX2UuYWRkKFJlKX0sbmV3IFNldCkpO0kubGVuZ3RoPTAsSS5wdXNoLmFwcGx5KEksRExl''@;'; put 'put ''KGNlKSl9fSx7a2V5OiJvbkJlZm9yZUFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpfX0se2tleToib25BZnRlckFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNl''@;'; put 'put ''ZFJvd3NTdGFzaC5zaGlmdFN0YXNoKHRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoQykpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKX19LHtrZXk6Im9uQmVmb3JlRGV0YWNo''@;'; put 'put ''Q2hpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCl9fSx7a2V5OiJvbkFmdGVyRGV0YWNoQ2hpbGQiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFz''@;'; put 'put ''aChJLG51bGwsLTEpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKX19LHtrZXk6Im9uQWZ0ZXJDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kYXRhTWFuYWdlci5yZXdy''@;'; put 'put ''aXRlQ2FjaGUoKX19LHtrZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PU1hdGgubWF4LmFwcGx5KE1hdGgsRExlKHRoaXMuZGF0YU1hbmFnZXIuY2FjaGUubGV2ZWxzKSk7eT4wJiZ0aGlzLmhlYWRlcnNVSS51cGRhdGVSb3dIZWFkZXJXaWR0aCh5KX19LHtrZXk6Im9u''@;'; put 'put ''QmVmb3JlVmlld1JlbmRlciIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtsOS5nZXQodGhpcykuc2tpcFJlbmRlciYmKEMuc2tpcFJlbmRlcj0hMCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe0RNKGE5KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19LHtr''@;'; put 'put ''ZXk6Im9uQmVmb3JlTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKCFJa2UoeSkpcmV0dXJuIFIzZSgiVGhlIE5lc3RlZCBSb3dzIHBsdWdpbiByZXF1aXJlcyBhbiBBcnJheSBvZiBPYmplY3RzIGFzIGEgZGF0YXNldCB0byBiZSBwcm92aWRlZC4gVGhlIHBsdWdpbiBoYXMgYmVlbiBk''@;'; put 'put ''aXNhYmxlZC4iKSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2dtZV09ITEsdm9pZCB0aGlzLmRpc2FibGVQbHVnaW4oKTt0aGlzLmRhdGFNYW5hZ2VyLnNldERhdGEoeSksdGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGdtZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMwMH19XSksaH0oR3MpO2Z1bmN0aW9uIHE4dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv''@;'; put 'put ''biIpfWZ1bmN0aW9uIFJMZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5r''@;'; put 'put ''ZXksdil9fXZhciB0NXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cTh0KHRoaXMsZCksdGhpcy5yb290V2luZG93PWgsdGhpcy5wcmVmaXg9Zyx0aGlzLnNhdmVkS2V5''@;'; put 'put ''cz1bXSx0aGlzLmxvYWRTYXZlZEtleXMoKX1yZXR1cm4gZnVuY3Rpb24gZTV0KGQsZyxoKXtnJiZSTGUoZC5wcm90b3R5cGUsZyksaCYmUkxlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNhdmVWYWx1ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCx2KXt0aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oIiIuY29uY2F0KHRoaXMucHJlZml4LCJfIikuY29uY2F0KGgpLEpTT04uc3RyaW5naWZ5KHYpKSwtMT09PXRoaXMuc2F2ZWRLZXlzLmluZGV4T2YoaCkmJih0aGlzLnNhdmVkS2V5cy5wdXNoKGgpLHRo''@;'; put 'put ''aXMuc2F2ZVNhdmVkS2V5cygpKX19LHtrZXk6ImxvYWRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT12b2lkIDA9PT1oP3Y6aCxDPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiIi5jb25jYXQodGhpcy5wcmVmaXgsIl8iKS5jb25jYXQoeSkpO3JldHVybiBu''@;'; put 'put ''dWxsPT09Qz92b2lkIDA6SlNPTi5wYXJzZShDKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIiIuY29uY2F0KHRoaXMucHJlZml4LCJfIikuY29uY2F0KGgpKX19LHtrZXk6InJlc2V0QWxsIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBoPXRoaXM7R3IodGhpcy5zYXZlZEtleXMsZnVuY3Rpb24odix5KXtoLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIiIuY29uY2F0KGgucHJlZml4LCJfIikuY29uY2F0KGguc2F2ZWRLZXlzW3ldKSl9KSx0aGlzLmNsZWFyU2F2ZWRLZXlzKCl9fSx7''@;'; put 'put ''a2V5OiJsb2FkU2F2ZWRLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiIi5jb25jYXQodGhpcy5wcmVmaXgsIl9fcGVyc2lzdGVudFN0YXRlS2V5cyIpKSx2PSJzdHJpbmciPT10eXBlb2YgaD9KU09OLnBhcnNlKGgpOnZv''@;'; put 'put ''aWQgMDt0aGlzLnNhdmVkS2V5cz12fHxbXX19LHtrZXk6InNhdmVTYXZlZEtleXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yb290V2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCIiLmNvbmNhdCh0aGlzLnByZWZpeCwiX19wZXJzaXN0ZW50U3RhdGVLZXlzIiksSlNPTi5zdHJpbmdpZnko''@;'; put 'put ''dGhpcy5zYXZlZEtleXMpKX19LHtrZXk6ImNsZWFyU2F2ZWRLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2F2ZWRLZXlzLmxlbmd0aD0wLHRoaXMuc2F2ZVNhdmVkS2V5cygpfX1dKSxkfSgpO2NvbnN0IG41dD10NXQ7ZnVuY3Rpb24gbW1lKGQpe3JldHVybihtbWU9ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90''@;'; put 'put ''b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBCTGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBMTSgpe3JldHVybiBMTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9bzV0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0''@;'; put 'put ''LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxMTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbzV0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1zOShkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiB2bWUoZCxnKXtyZXR1cm4odm1lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQs''@;'; put 'put ''Zyl9ZnVuY3Rpb24gczV0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bW1lKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVm''@;'; put 'put ''aW5lZCIpO3JldHVybiBmdW5jdGlvbiB1NXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBzOShkKXtyZXR1cm4o''@;'; put 'put ''czk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1Wby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigicGVyc2lzdGVudFN0YXRlU2F2ZSIp''@;'; put 'put ''LFZvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiksVm8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoInBlcnNpc3RlbnRTdGF0ZVJlc2V0Iik7dmFyIFBMZT0icGVyc2lzdGVudFN0YXRlIixoNXQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGE1dChkLGcpe2lm''@;'; put 'put ''KCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1''@;'; put 'put ''ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZ2bWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBsNXQoZCl7dmFyIGc9ZnVuY3Rpb24gYzV0KCl7aWYoInVuZGVmaW5lZCI9PXR5''@;'; put 'put ''cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJv''@;'; put 'put ''b2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9czkoZCk7aWYoZyl7dmFyIEM9czkodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHM1dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gcjV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRo''@;'; put 'put ''aXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLnN0b3JhZ2U9dm9pZCAwLHl9cmV0dXJuIGZ1bmN0aW9uIGk1dChkLGcsaCl7ZyYmQkxlKGQucHJvdG90eXBlLGcpLGgmJkJMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJp''@;'; put 'put ''c0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1BMZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnN0b3JhZ2V8fCh0aGlzLnN0b3JhZ2U9bmV3IG41dCh0''@;'; put 'put ''aGlzLmhvdC5yb290RWxlbWVudC5pZCx0aGlzLmhvdC5yb290V2luZG93KSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVTYXZlIixmdW5jdGlvbihDLEkpe3JldHVybiB5LnNhdmVWYWx1ZShDLEkpfSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixmdW5jdGlvbihD''@;'; put 'put ''LEkpe3JldHVybiB5LmxvYWRWYWx1ZShDLEkpfSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVSZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4geS5yZXNldFZhbHVlKCl9KSxMTShzOShoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNh''@;'; put 'put ''YmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RvcmFnZT12b2lkIDAsTE0oczkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMu''@;'; put 'put ''ZW5hYmxlUGx1Z2luKCksTE0oczkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJsb2FkVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Qy52YWx1ZT10aGlzLnN0b3JhZ2UubG9hZFZhbHVlKHkpfX0se2tleToic2F2ZVZhbHVlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5LEMpe3RoaXMuc3RvcmFnZS5zYXZlVmFsdWUoeSxDKX19LHtrZXk6InJlc2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZvaWQgMD09PXk/dGhpcy5zdG9yYWdlLnJlc2V0QWxsKCk6dGhpcy5zdG9yYWdlLnJlc2V0KHkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXtMTShzOShoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBQTGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAwfX1dKSxofShHcyk7ZnVuY3Rp''@;'; put 'put ''b24gQW1lKGQpe3JldHVybihBbWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25z''@;'; put 'put ''dHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB5bWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1''@;'; put 'put ''cm4gdn1mdW5jdGlvbiBGTGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYu''@;'; put 'put ''a2V5LHYpfX1mdW5jdGlvbiBPTSgpe3JldHVybiBPTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9dzV0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv''@;'; put 'put ''cih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxPTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdzV0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0o''@;'; put 'put ''ZD11OShkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiB3bWUoZCxnKXtyZXR1cm4od21lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gQzV0KGQsZyl7aWYo''@;'; put 'put ''ZyYmKCJvYmplY3QiPT09QW1lKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBr''@;'; put 'put ''NXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiB1OShkKXtyZXR1cm4odTk9T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''P09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgYm1lPSJzZWFyY2giLHg1dD1mdW5jdGlvbihnLGgsdix5LEMpe2cuZ2V0Q2VsbE1ldGEoaCx2KS5pc1NlYXJjaFJlc3Vs''@;'; put 'put ''dD1DfSxUNXQ9ZnVuY3Rpb24oZyxoLHYpe3JldHVybiEodTEoZyl8fG51bGw9PT1nfHwhZy50b0xvY2FsZUxvd2VyQ2FzZXx8MD09PWcubGVuZ3RofHx1MShoKXx8bnVsbD09PWgpJiYtMSE9PWgudG9TdHJpbmcoKS50b0xvY2FsZUxvd2VyQ2FzZSh2LmxvY2FsZSkuaW5kZXhPZihnLnRvTG9j''@;'; put 'put ''YWxlTG93ZXJDYXNlKHYubG9jYWxlKSl9LEk1dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gYjV0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u''@;'; put 'put ''Iik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJndtZShkLGcpfShoLGQp''@;'; put 'put ''O3ZhciBnPWZ1bmN0aW9uIF81dChkKXt2YXIgZz1mdW5jdGlvbiBTNXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7''@;'; put 'put ''dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj11OShkKTtpZihnKXt2YXIgQz11OSh0aGlzKS5j''@;'; put 'put ''b25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gQzV0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBBNXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBn''@;'; put 'put ''KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuY2FsbGJhY2s9eDV0LHkucXVlcnlNZXRob2Q9VDV0LHkuc2VhcmNoUmVzdWx0Q2xhc3M9Imh0U2VhcmNoUmVzdWx0Iix5fXJldHVybiBm''@;'; put 'put ''dW5jdGlvbiB5NXQoZCxnLGgpe2cmJkZMZShkLnByb3RvdHlwZSxnKSxoJiZGTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0''@;'; put 'put ''aW5ncygpW2JtZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW2JtZV07dGhpcy51cGRhdGVQbHVnaW5TZXR0aW5ncyhDKSx0aGlzLmFkZEhvb2soImJlZm9yZVJl''@;'; put 'put ''bmRlcmVyIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlUmVuZGVyZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksT00odTkoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10''@;'; put 'put ''aGlzLEM9ZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVJlbmRlcmVyLmFwcGx5KHksYXJndW1lbnRzKX07dGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlUmVuZGVyZXIiLEMpLHRoaXMuaG90LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGZ1bmN0aW9uKCl7eS5ob3QucmVtb3ZlSG9v''@;'; put 'put ''aygiYmVmb3JlUmVuZGVyZXIiLEMpfSksT00odTkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksT00odTkoaC5w''@;'; put 'put ''cm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJxdWVyeSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLmdldENhbGxiYWNrKCksaj1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5nZXRRdWVyeU1ldGhvZCgpLGNlPXRoaXMuaG90LmNvdW50Um93cygpLF9lPXRoaXMuaG90LmNvdW50Q29scygpLFJlPVtdLE5lPXRoaXMuaG90O3JldHVybiByYSgwLGNlLTEsZnVuY3Rp''@;'; put 'put ''b24oS2Upe3JhKDAsX2UtMSxmdW5jdGlvbihodCl7dmFyIEJ0PUMuaG90LmdldERhdGFBdENlbGwoS2UsaHQpLCR0PUMuaG90LmdldENlbGxNZXRhKEtlLGh0KSxobj0kdC5zZWFyY2guY2FsbGJhY2t8fEksaXI9KCR0LnNlYXJjaC5xdWVyeU1ldGhvZHx8aikoeSxCdCwkdCk7aXImJlJlLnB1''@;'; put 'put ''c2goe3JvdzpLZSxjb2w6aHQsZGF0YTpCdH0pLGhuJiZobihOZSxLZSxodCxCdCxpcil9KX0pLFJlfX0se2tleToiZ2V0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FsbGJhY2t9fSx7a2V5OiJzZXRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5jYWxs''@;'; put 'put ''YmFjaz15fX0se2tleToiZ2V0UXVlcnlNZXRob2QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlNZXRob2R9fSx7a2V5OiJzZXRRdWVyeU1ldGhvZCIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5xdWVyeU1ldGhvZD15fX0se2tleToiZ2V0U2VhcmNoUmVzdWx0Q2xhc3MiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3N9fSx7a2V5OiJzZXRTZWFyY2hSZXN1bHRDbGFzcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5zZWFyY2hSZXN1bHRDbGFzcz15fX0se2tleToidXBkYXRlUGx1Z2luU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkp''@;'; put 'put ''e0FsKHkpJiYoeS5zZWFyY2hSZXN1bHRDbGFzcyYmdGhpcy5zZXRTZWFyY2hSZXN1bHRDbGFzcyh5LnNlYXJjaFJlc3VsdENsYXNzKSx5LnF1ZXJ5TWV0aG9kJiZ0aGlzLnNldFF1ZXJ5TWV0aG9kKHkucXVlcnlNZXRob2QpLHkuY2FsbGJhY2smJnRoaXMuc2V0Q2FsbGJhY2soeS5jYWxsYmFj''@;'; put 'put ''aykpfX0se2tleToib25CZWZvcmVSZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksaixjZSxfZSl7dmFyIEtlLFJlPV9lLmNsYXNzTmFtZXx8W10sTmU9W107InN0cmluZyI9PXR5cGVvZiBSZT9OZT1SZS5zcGxpdCgiICIpOihLZT1OZSkucHVzaC5hcHBseShLZSxmdW5jdGlvbiBkNXQo''@;'; put 'put ''ZCl7cmV0dXJuIGZ1bmN0aW9uIHY1dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiB5bWUoZCl9KGQpfHxmdW5jdGlvbiBtNXQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVy''@;'; put 'put ''biBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gZzV0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiB5bWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9y''@;'; put 'put ''JiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIHltZShkLGcpfX0oZCl8fGZ1bmN0''@;'; put 'put ''aW9uIHA1dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIp''@;'; put 'put ''fSgpfShSZSkpLHRoaXMuaXNFbmFibGVkKCkmJl9lLmlzU2VhcmNoUmVzdWx0P05lLmluY2x1ZGVzKHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpfHxOZS5wdXNoKCIiLmNvbmNhdCh0aGlzLnNlYXJjaFJlc3VsdENsYXNzKSk6TmUuaW5jbHVkZXModGhpcy5zZWFyY2hSZXN1bHRDbGFzcykmJk5l''@;'; put 'put ''LnNwbGljZShOZS5pbmRleE9mKHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpLDEpLF9lLmNsYXNzTmFtZT1OZS5qb2luKCIgIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe09NKHU5KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExV''@;'; put 'put ''R0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJtZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDE5MH19XSksaH0oR3MpO2Z1bmN0aW9uIF9tZShkKXtyZXR1cm4oX21lPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9''@;'; put 'put ''ZnVuY3Rpb24gSExlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2''@;'; put 'put ''KX19ZnVuY3Rpb24gRVIoKXtyZXR1cm4gRVI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PU81dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxo''@;'; put 'put ''KTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sRVIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIE81dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9b2Io''@;'; put 'put ''ZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gQ21lKGQsZyl7cmV0dXJuKENtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFA1dChkLGcpe2lmKGcmJigi''@;'; put 'put ''b2JqZWN0Ij09PV9tZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gRjV0KGQp''@;'; put 'put ''e2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gb2IoZCl7cmV0dXJuKG9iPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl''@;'; put 'put ''Y3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGo1dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gUjV0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkNtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEI1dChkKXt2YXIgZz1mdW5jdGlvbiBINXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVm''@;'; put 'put ''bGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXty''@;'; put 'put ''ZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1vYihkKTtpZihnKXt2YXIgQz1vYih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gUDV0KHRoaXMseSl9fSho''@;'; put 'put ''KTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBENXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuc2Nyb2xsYmFycz1b''@;'; put 'put ''XSx5LmNsb25lcz1bXSx5LmxvY2tlZENvbGxlY3Rpb249ITEseS5mcmVlemVPdmVybGF5cz0hMSx5fXJldHVybiBmdW5jdGlvbiBMNXQoZCxnLGgpe2cmJkhMZShkLnByb3RvdHlwZSxnKSxoJiZITGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6''@;'; put 'put ''ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuM2UoKX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3UmVuZGVyIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB5Lm9uQWZ0ZXJWaWV3UmVuZGVyKCl9KSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksRVIob2IoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubG9ja2VkQ29sbGVjdGlvbj0h''@;'; put 'put ''MSxFUihvYihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7RVIob2IoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToicmVnaXN0ZXJFdmVu''@;'; put 'put ''dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmFkZEhvb2soImJlZm9yZVRvdWNoU2Nyb2xsIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlVG91Y2hTY3JvbGwoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJNb21lbnR1bVNjcm9sbCIsZnVuY3Rpb24oKXtyZXR1cm4geS5v''@;'; put 'put ''bkFmdGVyTW9tZW50dW1TY3JvbGwoKX0pfX0se2tleToib25BZnRlclZpZXdSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMubG9ja2VkQ29sbGVjdGlvbil7dmFyIHk9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cyxDPXkudG9wT3ZlcmxheSxJPXkuYm90dG9tT3ZlcmxheSxq''@;'; put 'put ''PXkuaW5saW5lU3RhcnRPdmVybGF5LGNlPXkudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LF9lPXkuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5O3RoaXMubG9ja2VkQ29sbGVjdGlvbj0hMCx0aGlzLnNjcm9sbGJhcnMubGVuZ3RoPTAsdGhpcy5zY3JvbGxiYXJzLnB1c2goQyks''@;'; put 'put ''SS5jbG9uZSYmdGhpcy5zY3JvbGxiYXJzLnB1c2goSSksdGhpcy5zY3JvbGxiYXJzLnB1c2goaiksY2UmJnRoaXMuc2Nyb2xsYmFycy5wdXNoKGNlKSxfZSYmX2UuY2xvbmUmJnRoaXMuc2Nyb2xsYmFycy5wdXNoKF9lKSx0aGlzLmNsb25lcz1bXSxDLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmNs''@;'; put 'put ''b25lcy5wdXNoKEMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSksSS5uZWVkRnVsbFJlbmRlciYmdGhpcy5jbG9uZXMucHVzaChJLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpLGoubmVlZEZ1bGxSZW5kZXImJnRoaXMuY2xvbmVzLnB1c2goai5jbG9uZS53dFRhYmxl''@;'; put 'put ''LmhvbGRlci5wYXJlbnROb2RlKSxjZSYmdGhpcy5jbG9uZXMucHVzaChjZS5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKSxfZSYmX2UuY2xvbmUmJnRoaXMuY2xvbmVzLnB1c2goX2UuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSl9fX0se2tleToib25CZWZvcmVUb3Vj''@;'; put 'put ''aFNjcm9sbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZyZWV6ZU92ZXJsYXlzPSEwLEdyKHRoaXMuY2xvbmVzLGZ1bmN0aW9uKHkpe1AwKHksImhpZGUtdHdlZW4iKX0pfX0se2tleToib25BZnRlck1vbWVudHVtU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5mcmVl''@;'; put 'put ''emVPdmVybGF5cz0hMSxHcih0aGlzLmNsb25lcyxmdW5jdGlvbihDKXt1bChDLCJoaWRlLXR3ZWVuIiksUDAoQywic2hvdy10d2VlbiIpfSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe0dyKHkuY2xvbmVzLGZ1bmN0aW9uKEMpe3VsKEMsInNob3ctdHdlZW4iKX0pfSw0''@;'; put 'put ''MDApLEdyKHRoaXMuc2Nyb2xsYmFycyxmdW5jdGlvbihDKXtDLnJlZnJlc2goKSxDLnJlc2V0Rml4ZWRQb3NpdGlvbigpfSksdGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zeW5jU2Nyb2xsV2l0aE1hc3RlcigpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4idG91Y2hTY3JvbGwifX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjAwfX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19XSksaH0oR3MpO2Z1bmN0aW9uIGttZShkKXtyZXR1cm4oa21lPSJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90''@;'; put 'put ''eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gTkxlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gUk0oKXtyZXR1cm4gUk09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUc1dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5n''@;'; put 'put ''ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sUk0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEc1dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbChkLGcpJiZudWxsIT09KGQ9YzkoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gU21lKGQsZyl7cmV0dXJuKFNtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcp''@;'; put 'put ''fWZ1bmN0aW9uIFU1dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWttZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmlu''@;'; put 'put ''ZWQiKTtyZXR1cm4gZnVuY3Rpb24gUTV0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gYzkoZCl7cmV0dXJuKGM5''@;'; put 'put ''PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEhuZT0idHJpbVJvd3MiLEs1dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gVzV0KGQs''@;'; put 'put ''Zyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6''@;'; put 'put ''e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlNtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFk1dChkKXt2YXIgZz1mdW5jdGlvbiBKNXQoKXtpZigidW5kZWZpbmVk''@;'; put 'put ''Ij09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1''@;'; put 'put ''Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1jOShkKTtpZihnKXt2YXIgQz1jOSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gVTV0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBaNXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i''@;'; put 'put ''KX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkudHJpbW1lZFJvd3NNYXA9bnVsbCx5fXJldHVybiBmdW5jdGlvbiB6NXQoZCxnLGgpe2cmJk5MZShkLnByb3RvdHlwZSxnKSxoJiZOTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0o''@;'; put 'put ''aCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtIbmVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy50cmltbWVkUm93c01hcD10aGlzLmhv''@;'; put 'put ''dC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCgidHJpbVJvd3MiLG5ldyB4eiksdGhpcy50cmltbWVkUm93c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NYXBJbml0KCl9KSxSTShjOShoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2Fs''@;'; put 'put ''bCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LmdldFNldHRpbmdzKClbSG5lXTtBcnJheS5pc0FycmF5KEMpJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe3kudHJpbW1lZFJvd3NNYXAuY2xlYXIo''@;'; put 'put ''KSxHcihDLGZ1bmN0aW9uKEkpe3kudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KEksITApfSl9LCEwKSxSTShjOShoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qu''@;'; put 'put ''cm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCgidHJpbVJvd3MiKSxSTShjOShoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJnZXRUcmltbWVkUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmltbWVkUm93c01hcC5nZXRU''@;'; put 'put ''cmltbWVkSW5kZXhlcygpfX0se2tleToidHJpbVJvd3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST10aGlzLmdldFRyaW1tZWRSb3dzKCksaj10aGlzLmlzVmFsaWRDb25maWcoeSksY2U9STtqJiYoY2U9QXJyYXkuZnJvbShuZXcgU2V0KEkuY29uY2F0KHkpKSkpLCExIT09dGhp''@;'; put 'put ''cy5ob3QucnVuSG9va3MoImJlZm9yZVRyaW1Sb3ciLEksY2UsaikmJihqJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe0dyKHksZnVuY3Rpb24oUmUpe0MudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KFJlLCEwKX0pfSwhMCksdGhpcy5ob3QucnVuSG9va3MoImFm''@;'; put 'put ''dGVyVHJpbVJvdyIsSSxjZSxqLGomJmNlLmxlbmd0aD5JLmxlbmd0aCkpfX0se2tleToidHJpbVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTt0aGlzLnRyaW1Sb3dzKEMp''@;'; put 'put ''fX0se2tleToidW50cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5nZXRUcmltbWVkUm93cygpLEk9dGhpcy5pc1ZhbGlkQ29uZmlnKHkpLGo9QyxjZT10aGlzLnRyaW1tZWRSb3dzTWFwLmdldFZhbHVlcygpLnNsaWNlKCksX2U9eS5sZW5ndGg+MDtJJiZfZSYmKEdyKHks''@;'; put 'put ''ZnVuY3Rpb24oTmUpe2NlW05lXT0hMX0pLGo9RXUoY2UsZnVuY3Rpb24oTmUsS2UsaHQpe3JldHVybiBLZSYmTmUucHVzaChodCksTmV9LFtdKSksITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW50cmltUm93IixDLGosSSYmX2UpJiYoSSYmX2UmJnRoaXMudHJpbW1lZFJvd3NNYXAu''@;'; put 'put ''c2V0VmFsdWVzKGNlKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbnRyaW1Sb3ciLEMsaixJJiZfZSxJJiZqLmxlbmd0aDxDLmxlbmd0aCkpfX0se2tleToidW50cmltUm93Iix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJ''@;'; put 'put ''PHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3RoaXMudW50cmltUm93cyhDKX19LHtrZXk6ImlzVHJpbW1lZCIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMudHJpbW1lZFJvd3NNYXAuZ2V0VmFsdWVBdEluZGV4KHkpfHwhMX19LHtrZXk6InVudHJpbUFsbCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLnVudHJpbVJvd3ModGhpcy5nZXRUcmltbWVkUm93cygpKX19LHtrZXk6ImlzVmFsaWRDb25maWciLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmNvdW50U291cmNlUm93cygpO3JldHVybiB5LmV2ZXJ5KGZ1bmN0aW9uKEkpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2Vy''@;'; put 'put ''KEkpJiZJPj0wJiZJPEN9KX19LHtrZXk6Im9uTWFwSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtIbmVdO0FycmF5LmlzQXJyYXkoQykmJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7R3IoQyxmdW5jdGlvbihJKXt5''@;'; put 'put ''LnRyaW1tZWRSb3dzTWFwLnNldFZhbHVlQXRJbmRleChJLCEwKX0pfSwhMCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe1JNKGM5KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEhuZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMzMH19XSksaH0oR3MpO2Z1bmN0aW9uIE1tZShkKXtyZXR1cm4oTW1lPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9u''@;'; put 'put ''KGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gVkxlKGQsZyl7aWYoIShkIGlu''@;'; put 'put ''c3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gakxlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1''@;'; put 'put ''cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gWkxlKGQsZyxoKXtyZXR1cm4gZyYmakxlKGQucHJvdG90eXBlLGcpLGgmJmpMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5''@;'; put 'put ''cGUiLHt3cml0YWJsZTohMX0pLGR9ZnVuY3Rpb24gekxlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0''@;'; put 'put ''LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkVtZShkLGcpfWZ1bmN0aW9uIEVtZShkLGcpe3JldHVybihF''@;'; put 'put ''bWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBHTGUoZCl7dmFyIGc9ZnVuY3Rpb24gZWd0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0''@;'; put 'put ''fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVu''@;'; put 'put ''Y3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9Tm5lKGQpO2lmKGcpe3ZhciBDPU5uZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1l''@;'; put 'put ''bnRzKTtyZXR1cm4gJDV0KHRoaXMseSl9fWZ1bmN0aW9uICQ1dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PU1tZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkg''@;'; put 'put ''cmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gcTV0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9''@;'; put 'put ''ZnVuY3Rpb24gTm5lKGQpe3JldHVybihObmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiBXTGUoZCxnKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gbGd0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBhZ3QoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3Zh''@;'; put 'put ''ciBJLGosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaChjZSl7Qz0hMCxqPWNlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1''@;'; put 'put ''cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgan19cmV0dXJuIHZ9fShkLGcpfHxZTGUoZCxnKXx8ZnVuY3Rpb24gb2d0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJh''@;'; put 'put ''YmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBZTGUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHhtZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs''@;'; put 'put ''bChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1w''@;'; put 'put ''ZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4geG1lKGQsZyl9fWZ1bmN0aW9uIHhtZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFBvKGQpe3ZhciBn''@;'; put 'put ''PXRoaXM7dGhpcy5pbnN0YW5jZT1kLHRoaXMuZG9uZUFjdGlvbnM9W10sdGhpcy51bmRvbmVBY3Rpb25zPVtdLHRoaXMuaWdub3JlTmV3QWN0aW9ucz0hMSx0aGlzLmVuYWJsZWQ9ITEsZC5hZGRIb29rKCJhZnRlckNoYW5nZSIsZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzLEM9aCYmaC5sZW5n''@;'; put 'put ''dGg7QyYmaC5maW5kKGZ1bmN0aW9uKGNlKXt2YXIgX2U9V0xlKGNlLDQpO3JldHVybiBfZVsyXSE9PV9lWzNdfSkmJmcuZG9uZShmdW5jdGlvbigpe3ZhciBfZT1oLnJlZHVjZShmdW5jdGlvbihOZSxLZSl7cmV0dXJuIE5lLnB1c2goZnVuY3Rpb24gdGd0KGQpe3JldHVybiBmdW5jdGlvbiBp''@;'; put 'put ''Z3QoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4geG1lKGQpfShkKXx8ZnVuY3Rpb24gcmd0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8''@;'; put 'put ''fFlMZShkKXx8ZnVuY3Rpb24gbmd0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRv''@;'; put 'put ''cl0oKSBtZXRob2QuIil9KCl9KEtlKSksTmV9LFtdKTtHcihfZSxmdW5jdGlvbihOZSl7TmVbMV09ZC5wcm9wVG9Db2woTmVbMV0pfSk7dmFyIFJlPUM+MT95LmdldFNlbGVjdGVkKCk6W1tfZVswXVswXSxfZVswXVsxXV1dO3JldHVybiBuZXcgUG8uQ2hhbmdlQWN0aW9uKF9lLFJlKX0sdil9''@;'; put 'put ''KSxkLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbihoLHYseSl7Zy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQby5DcmVhdGVSb3dBY3Rpb24oaCx2KX0seSl9KSxkLmFkZEhvb2soImJlZm9yZVJlbW92ZVJvdyIsZnVuY3Rpb24oaCx2LHksQyl7Zy5kb25lKGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGNlPWcuaW5zdGFuY2UuZ2V0U291cmNlRGF0YUFycmF5KCksX2U9KGNlLmxlbmd0aCtoKSVjZS5sZW5ndGgsUmU9ZC50b1BoeXNpY2FsUm93KF9lKSxOZT1BaChjZS5zbGljZShSZSxSZSt2KSk7cmV0dXJuIG5ldyBQby5SZW1vdmVSb3dBY3Rpb24oX2UsTmUsZC5nZXRTZXR0aW5n''@;'; put 'put ''cygpLmZpeGVkUm93c0JvdHRvbSxkLmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wKX0sQyl9KSxkLmFkZEhvb2soImFmdGVyQ3JlYXRlQ29sIixmdW5jdGlvbihoLHYseSl7Zy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQby5DcmVhdGVDb2x1bW5BY3Rpb24oaCx2KX0seSl9KSxkLmFk''@;'; put 'put ''ZEhvb2soImJlZm9yZVJlbW92ZUNvbCIsZnVuY3Rpb24oaCx2LHksQyl7Zy5kb25lKGZ1bmN0aW9uKCl7dmFyIGNlPWcuaW5zdGFuY2UuZ2V0U291cmNlRGF0YUFycmF5KCksX2U9KGcuaW5zdGFuY2UuY291bnRDb2xzKCkraCklZy5pbnN0YW5jZS5jb3VudENvbHMoKSxSZT1bXSxOZT1bXSxL''@;'; put 'put ''ZT1bXTtyYShjZS5sZW5ndGgtMSxmdW5jdGlvbigkdCl7dmFyIGhuPVtdLERuPWNlWyR0XTtyYShfZSxfZSsodi0xKSxmdW5jdGlvbihpcil7aG4ucHVzaChEbltkLnRvUGh5c2ljYWxDb2x1bW4oaXIpXSl9KSxSZS5wdXNoKGhuKX0pLHJhKHYtMSxmdW5jdGlvbigkdCl7S2UucHVzaChkLnRv''@;'; put 'put ''UGh5c2ljYWxDb2x1bW4oX2UrJHQpKX0pLEFycmF5LmlzQXJyYXkoZC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnMpJiZyYSh2LTEsZnVuY3Rpb24oJHQpe05lLnB1c2goZC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnNbZC50b1BoeXNpY2FsQ29sdW1uKF9lKyR0KV18fG51bGwpfSk7dmFyIGh0''@;'; put 'put ''PWQuY29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksQnQ9ZC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKTtyZXR1cm4gbmV3IFBvLlJlbW92ZUNvbHVtbkFjdGlvbihfZSxLZSxSZSxOZSxodCxCdCxkLmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3Rh''@;'; put 'put ''cnQpfSxDKX0pLGQuYWRkSG9vaygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZnVuY3Rpb24oaCx2LHksQyl7Zy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQby5DZWxsQWxpZ25tZW50QWN0aW9uKGgsdix5LEMpfSl9KSxkLmFkZEhvb2soImJlZm9yZUZpbHRlciIsZnVuY3Rpb24oaCl7Zy5k''@;'; put 'put ''b25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQby5GaWx0ZXJzQWN0aW9uKGgpfSl9KSxkLmFkZEhvb2soImJlZm9yZVJvd01vdmUiLGZ1bmN0aW9uKGgsdil7ITEhPT1oJiZnLmRvbmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFBvLlJvd01vdmVBY3Rpb24oaCx2KX0pfSksZC5hZGRIb29rKCJi''@;'; put 'put ''ZWZvcmVNZXJnZUNlbGxzIixmdW5jdGlvbihoLHYpe3Z8fGcuZG9uZShmdW5jdGlvbigpe3JldHVybiBuZXcgUG8uTWVyZ2VDZWxsc0FjdGlvbihkLGgpfSl9KSxkLmFkZEhvb2soImFmdGVyVW5tZXJnZUNlbGxzIixmdW5jdGlvbihoLHYpe3Z8fGcuZG9uZShmdW5jdGlvbigpe3JldHVybiBu''@;'; put 'put ''ZXcgUG8uVW5tZXJnZUNlbGxzQWN0aW9uKGQsaCl9KX0pLGQuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe2cuaW5pdCgpfSl9UG8ucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oZCxnKXtpZighdGhpcy5pZ25vcmVOZXdBY3Rpb25zJiYiVW5kb1JlZG8udW5kbyIhPT1nJiYiVW5kb1Jl''@;'; put 'put ''ZG8ucmVkbyIhPT1nJiYiYXV0byIhPT1nKXt2YXIgdj10aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCk7aWYoITEhPT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLHYsZykpe3ZhciBDPWQoKSxJPXRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuZG9u''@;'; put 'put ''ZUFjdGlvbnMucHVzaChDKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclVuZG9TdGFja0NoYW5nZSIsdix0aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCkpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsSSksdGhpcy51bmRvbmVBY3Rpb25zLmxlbmd0''@;'; put 'put ''aD0wLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixJLHRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpKX19fSxQby5wcm90b3R5cGUudW5kbz1mdW5jdGlvbigpe2lmKHRoaXMuaXNVbmRvQXZhaWxhYmxlKCkpe3ZhciBkPXRoaXMuZG9uZUFjdGlvbnMuc2xp''@;'; put 'put ''Y2UoKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLGQpO3ZhciBnPXRoaXMuZG9uZUFjdGlvbnMucG9wKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLGQsdGhpcy5kb25lQWN0aW9ucy5zbGljZSgpKTt2YXIgaD1B''@;'; put 'put ''aChnKTtpZighMT09PXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG8iLGgpKXJldHVybjt0aGlzLmlnbm9yZU5ld0FjdGlvbnM9ITA7dmFyIHk9dGhpcyxDPXRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0No''@;'; put 'put ''YW5nZSIsQyksZy51bmRvKHRoaXMuaW5zdGFuY2UsZnVuY3Rpb24oKXt5Lmlnbm9yZU5ld0FjdGlvbnM9ITEseS51bmRvbmVBY3Rpb25zLnB1c2goZyl9KSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlZG9TdGFja0NoYW5nZSIsQyx0aGlzLnVuZG9uZUFjdGlvbnMuc2xpY2UoKSks''@;'; put 'put ''dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJVbmRvIixoKX19LFBvLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1JlZG9BdmFpbGFibGUoKSl7dmFyIGQ9dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVkb1N0''@;'; put 'put ''YWNrQ2hhbmdlIixkKTt2YXIgZz10aGlzLnVuZG9uZUFjdGlvbnMucG9wKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2UiLGQsdGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCkpO3ZhciBoPUFoKGcpO2lmKCExPT09dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygi''@;'; put 'put ''YmVmb3JlUmVkbyIsaCkpcmV0dXJuO3RoaXMuaWdub3JlTmV3QWN0aW9ucz0hMDt2YXIgeT10aGlzLEM9dGhpcy5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsQyksZy5yZWRvKHRoaXMuaW5zdGFuY2UsZnVuY3Rpb24o''@;'; put 'put ''KXt5Lmlnbm9yZU5ld0FjdGlvbnM9ITEseS5kb25lQWN0aW9ucy5wdXNoKGcpfSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLEMsdGhpcy5kb25lQWN0aW9ucy5zbGljZSgpKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlZG8iLGgpfX0sUG8u''@;'; put 'put ''cHJvdG90eXBlLmlzVW5kb0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbmVBY3Rpb25zLmxlbmd0aD4wfSxQby5wcm90b3R5cGUuaXNSZWRvQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5kb25lQWN0aW9ucy5sZW5ndGg+MH0sUG8ucHJvdG90eXBlLmNsZWFy''@;'; put 'put ''PWZ1bmN0aW9uKCl7dGhpcy5kb25lQWN0aW9ucy5sZW5ndGg9MCx0aGlzLnVuZG9uZUFjdGlvbnMubGVuZ3RoPTB9LFBvLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmFibGVkfSxQby5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNF''@;'; put 'put ''bmFibGVkKCkpe3ZhciBkPXRoaXMuaW5zdGFuY2U7dGhpcy5lbmFibGVkPSEwLGZ1bmN0aW9uIGZndChkKXtkLnVuZG89ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby51bmRvKCl9LGQucmVkbz1mdW5jdGlvbigpe3JldHVybiBkLnVuZG9SZWRvLnJlZG8oKX0sZC5pc1VuZG9BdmFpbGFi''@;'; put 'put ''bGU9ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby5pc1VuZG9BdmFpbGFibGUoKX0sZC5pc1JlZG9BdmFpbGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby5pc1JlZG9BdmFpbGFibGUoKX0sZC5jbGVhclVuZG89ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby5jbGVhcigp''@;'; put 'put ''fX0oZCksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpLGQuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLFFMZSl9fSxQby5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe2lmKHRoaXMuaXNFbmFibGVkKCkpe3ZhciBkPXRoaXMuaW5zdGFuY2U7dGhpcy5lbmFibGVkPSExLGZ1bmN0aW9uIGhndChk''@;'; put 'put ''KXtkZWxldGUgZC51bmRvLGRlbGV0ZSBkLnJlZG8sZGVsZXRlIGQuaXNVbmRvQXZhaWxhYmxlLGRlbGV0ZSBkLmlzUmVkb0F2YWlsYWJsZSxkZWxldGUgZC5jbGVhclVuZG99KGQpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLGQucmVtb3ZlSG9vaygiYWZ0ZXJDaGFuZ2UiLFFMZSl9fSxQ''@;'; put 'put ''by5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuY2xlYXIoKSx0aGlzLmluc3RhbmNlPW51bGwsdGhpcy5kb25lQWN0aW9ucz1udWxsLHRoaXMudW5kb25lQWN0aW9ucz1udWxsfSwoUG8uQWN0aW9uPWZ1bmN0aW9uKCl7fSkucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24oKXt9LFBv''@;'; put 'put ''LkFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbigpe30sSXYoUG8uQ2hhbmdlQWN0aW9uPWZ1bmN0aW9uKGQsZyl7dGhpcy5jaGFuZ2VzPWQsdGhpcy5zZWxlY3RlZD1nLHRoaXMuYWN0aW9uVHlwZT0iY2hhbmdlIn0sUG8uQWN0aW9uKSxQby5DaGFuZ2VBY3Rpb24ucHJvdG90eXBlLnVu''@;'; put 'put ''ZG89ZnVuY3Rpb24oZCxnKXtmb3IodmFyIGg9QWgodGhpcy5jaGFuZ2VzKSx2PWQuY291bnRFbXB0eVJvd3MoITApLHk9ZC5jb3VudEVtcHR5Q29scyghMCksQz0wLEk9aC5sZW5ndGg7QzxJO0MrKyloW0NdLnNwbGljZSgzLDEpO2QuYWRkSG9va09uY2UoImFmdGVyQ2hhbmdlIixnKSxkLnNl''@;'; put 'put ''dERhdGFBdENlbGwoaCxudWxsLG51bGwsIlVuZG9SZWRvLnVuZG8iKTtmb3IodmFyIGo9MCxjZT1oLmxlbmd0aDtqPGNlO2orKyl7dmFyIF9lPVdMZShoW2pdLDIpLFJlPV9lWzBdLE5lPV9lWzFdO2QuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3MmJlJlKzErZC5nZXRTZXR0aW5ncygpLm1p''@;'; put 'put ''blNwYXJlUm93cz09PWQuY291bnRSb3dzKCkmJnY9PT1kLmdldFNldHRpbmdzKCkubWluU3BhcmVSb3dzJiYoZC5hbHRlcigicmVtb3ZlX3JvdyIscGFyc2VJbnQoUmUrMSwxMCksZC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cyksZC51bmRvUmVkby5kb25lQWN0aW9ucy5wb3AoKSksZC5n''@;'; put 'put ''ZXRTZXR0aW5ncygpLm1pblNwYXJlQ29scyYmTmUrMStkLmdldFNldHRpbmdzKCkubWluU3BhcmVDb2xzPT09ZC5jb3VudENvbHMoKSYmeT09PWQuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZUNvbHMmJihkLmFsdGVyKCJyZW1vdmVfY29sIixwYXJzZUludChOZSsxLDEwKSxkLmdldFNldHRpbmdz''@;'; put 'put ''KCkubWluU3BhcmVDb2xzKSxkLnVuZG9SZWRvLmRvbmVBY3Rpb25zLnBvcCgpKX1kLnNlbGVjdENlbGxzKHRoaXMuc2VsZWN0ZWQsITEsITEpfSxQby5DaGFuZ2VBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXtmb3IodmFyIGg9QWgodGhpcy5jaGFuZ2VzKSx2PTAseT1oLmxl''@;'; put 'put ''bmd0aDt2PHk7disrKWhbdl0uc3BsaWNlKDIsMSk7ZC5hZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLGcpLGQuc2V0RGF0YUF0Q2VsbChoLG51bGwsbnVsbCwiVW5kb1JlZG8ucmVkbyIpLHRoaXMuc2VsZWN0ZWQmJmQuc2VsZWN0Q2VsbHModGhpcy5zZWxlY3RlZCwhMSwhMSl9LEl2KFBvLkNy''@;'; put 'put ''ZWF0ZVJvd0FjdGlvbj1mdW5jdGlvbihkLGcpe3RoaXMuaW5kZXg9ZCx0aGlzLmFtb3VudD1nLHRoaXMuYWN0aW9uVHlwZT0iaW5zZXJ0X3JvdyJ9LFBvLkFjdGlvbiksUG8uQ3JlYXRlUm93QWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9ZC5jb3VudFJvd3MoKSx2''@;'; put 'put ''PWQuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3M7dGhpcy5pbmRleD49aCYmdGhpcy5pbmRleC12PGgmJih0aGlzLmluZGV4LT12KSxkLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZVJvdyIsZyksZC5hbHRlcigicmVtb3ZlX3JvdyIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8u''@;'; put 'put ''dW5kbyIpfSxQby5DcmVhdGVSb3dBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXtkLmFkZEhvb2tPbmNlKCJhZnRlckNyZWF0ZVJvdyIsZyksZC5hbHRlcigiaW5zZXJ0X3JvdyIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8ucmVkbyIpfSxJdihQby5SZW1vdmVS''@;'; put 'put ''b3dBY3Rpb249ZnVuY3Rpb24oZCxnLGgsdil7dGhpcy5pbmRleD1kLHRoaXMuZGF0YT1nLHRoaXMuYWN0aW9uVHlwZT0icmVtb3ZlX3JvdyIsdGhpcy5maXhlZFJvd3NCb3R0b209aCx0aGlzLmZpeGVkUm93c1RvcD12fSxQby5BY3Rpb24pLFBvLlJlbW92ZVJvd0FjdGlvbi5wcm90b3R5cGUu''@;'; put 'put ''dW5kbz1mdW5jdGlvbihkLGcpe3ZhciBoPWQuZ2V0U2V0dGluZ3MoKTtoLmZpeGVkUm93c0JvdHRvbT10aGlzLmZpeGVkUm93c0JvdHRvbSxoLmZpeGVkUm93c1RvcD10aGlzLmZpeGVkUm93c1RvcCxkLmFsdGVyKCJpbnNlcnRfcm93Iix0aGlzLmluZGV4LHRoaXMuZGF0YS5sZW5ndGgsIlVu''@;'; put 'put ''ZG9SZWRvLnVuZG8iKSxkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGQucG9wdWxhdGVGcm9tQXJyYXkodGhpcy5pbmRleCwwLHRoaXMuZGF0YSx2b2lkIDAsdm9pZCAwLCJVbmRvUmVkby51bmRvIil9LFBvLlJlbW92ZVJvd0FjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlv''@;'; put 'put ''bihkLGcpe2QuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlUm93IixnKSxkLmFsdGVyKCJyZW1vdmVfcm93Iix0aGlzLmluZGV4LHRoaXMuZGF0YS5sZW5ndGgsIlVuZG9SZWRvLnJlZG8iKX0sSXYoUG8uQ3JlYXRlQ29sdW1uQWN0aW9uPWZ1bmN0aW9uKGQsZyl7dGhpcy5pbmRleD1kLHRoaXMu''@;'; put 'put ''YW1vdW50PWcsdGhpcy5hY3Rpb25UeXBlPSJpbnNlcnRfY29sIn0sUG8uQWN0aW9uKSxQby5DcmVhdGVDb2x1bW5BY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24oZCxnKXtkLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZUNvbCIsZyksZC5hbHRlcigicmVtb3ZlX2NvbCIsdGhpcy5pbmRl''@;'; put 'put ''eCx0aGlzLmFtb3VudCwiVW5kb1JlZG8udW5kbyIpfSxQby5DcmVhdGVDb2x1bW5BY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXtkLmFkZEhvb2tPbmNlKCJhZnRlckNyZWF0ZUNvbCIsZyksZC5hbHRlcigiaW5zZXJ0X2NvbCIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5k''@;'; put 'put ''b1JlZG8ucmVkbyIpfSxJdihQby5SZW1vdmVDb2x1bW5BY3Rpb249ZnVuY3Rpb24oZCxnLGgsdix5LEMsSSl7dGhpcy5pbmRleD1kLHRoaXMuaW5kZXhlcz1nLHRoaXMuZGF0YT1oLHRoaXMuYW1vdW50PXRoaXMuZGF0YVswXS5sZW5ndGgsdGhpcy5oZWFkZXJzPXYsdGhpcy5jb2x1bW5Qb3Np''@;'; put 'put ''dGlvbnM9eS5zbGljZSgwKSx0aGlzLnJvd1Bvc2l0aW9ucz1DLnNsaWNlKDApLHRoaXMuYWN0aW9uVHlwZT0icmVtb3ZlX2NvbCIsdGhpcy5maXhlZENvbHVtbnNTdGFydD1JfSxQby5BY3Rpb24pLFBvLlJlbW92ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihkLGcpe3Zh''@;'; put 'put ''ciBoPXRoaXM7ZC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0PXRoaXMuZml4ZWRDb2x1bW5zU3RhcnQ7Zm9yKHZhciB5PXRoaXMuaW5kZXhlcy5zbGljZSgwKS5zb3J0KCksQz1mdW5jdGlvbihLZSxodCxCdCl7cmV0dXJuIEJ0W2guaW5kZXhlcy5pbmRleE9mKHlbaHRdKV19LEk9''@;'; put 'put ''dGhpcy5kYXRhLmxlbmd0aCxqPVtdLGNlPTA7Y2U8STtjZSsrKWoucHVzaChUbCh0aGlzLmRhdGFbY2VdLEMpKTt2YXIgX2U9VGwodGhpcy5oZWFkZXJzLEMpLFJlPVtdO2QuYWx0ZXIoImluc2VydF9jb2wiLHRoaXMuaW5kZXhlc1swXSx0aGlzLmluZGV4ZXMubGVuZ3RoLCJVbmRvUmVkby51''@;'; put 'put ''bmRvIiksR3IoZC5nZXRTb3VyY2VEYXRhQXJyYXkoKSxmdW5jdGlvbihOZSxLZSl7R3IoeSxmdW5jdGlvbihodCxCdCl7TmVbaHRdPWpbS2VdW0J0XSxSZS5wdXNoKFtLZSxodCxOZVtodF1dKX0pfSksZC5zZXRTb3VyY2VEYXRhQXRDZWxsKFJlLHZvaWQgMCx2b2lkIDAsIlVuZG9SZWRvLnVu''@;'; put 'put ''ZG8iKSxkLmNvbHVtbkluZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoeVswXSx5Lmxlbmd0aCksdm9pZCAwIT09dGhpcy5oZWFkZXJzJiZHcihfZSxmdW5jdGlvbihOZSxLZSl7ZC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnNbeVtLZV1dPU5lfSksZC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigp''@;'; put 'put ''e2Qucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKGgucm93UG9zaXRpb25zKSxkLmNvbHVtbkluZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShoLmNvbHVtblBvc2l0aW9ucyl9LCEwKSxkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGQucmVuZGVyKCl9LFBv''@;'; put 'put ''LlJlbW92ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihkLGcpe2QuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlQ29sIixnKSxkLmFsdGVyKCJyZW1vdmVfY29sIix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5yZWRvIil9LChQby5DZWxsQWxpZ25tZW50QWN0''@;'; put 'put ''aW9uPWZ1bmN0aW9uKGQsZyxoLHYpe3RoaXMuc3RhdGVCZWZvcmU9ZCx0aGlzLnJhbmdlPWcsdGhpcy50eXBlPWgsdGhpcy5hbGlnbm1lbnQ9dn0pLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9dGhpcztHcih0aGlzLnJhbmdlLGZ1bmN0aW9uKHYpe3YuZm9yQWxsKGZ1bmN0''@;'; put 'put ''aW9uKHksQyl7eT49MCYmQz49MCYmZC5zZXRDZWxsTWV0YSh5LEMsImNsYXNzTmFtZSIsaC5zdGF0ZUJlZm9yZVt5XVtDXXx8IiBodExlZnQiKX0pfSksZC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixnKSxkLnJlbmRlcigpfSxQby5DZWxsQWxpZ25tZW50QWN0aW9uLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRvPWZ1bmN0aW9uKGQsZyl7VXcodGhpcy5yYW5nZSx0aGlzLnR5cGUsdGhpcy5hbGlnbm1lbnQsZnVuY3Rpb24oaCx2KXtyZXR1cm4gZC5nZXRDZWxsTWV0YShoLHYpfSxmdW5jdGlvbihoLHYseSxDKXtyZXR1cm4gZC5zZXRDZWxsTWV0YShoLHYseSxDKX0pLGQuYWRkSG9va09uY2Uo''@;'; put 'put ''ImFmdGVyVmlld1JlbmRlciIsZyksZC5yZW5kZXIoKX0sSXYoUG8uRmlsdGVyc0FjdGlvbj1mdW5jdGlvbihkKXt0aGlzLmNvbmRpdGlvbnNTdGFjaz1kLHRoaXMuYWN0aW9uVHlwZT0iZmlsdGVyIn0sUG8uQWN0aW9uKSxQby5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9u''@;'; put 'put ''KGQsZyl7dmFyIGg9ZC5nZXRQbHVnaW4oImZpbHRlcnMiKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGguY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25kaXRpb25zKHRoaXMuY29uZGl0aW9uc1N0YWNrLnNsaWNlKDAsdGhpcy5jb25kaXRpb25zU3RhY2subGVu''@;'; put 'put ''Z3RoLTEpKSxoLmZpbHRlcigpfSxQby5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9ZC5nZXRQbHVnaW4oImZpbHRlcnMiKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGguY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25k''@;'; put 'put ''aXRpb25zKHRoaXMuY29uZGl0aW9uc1N0YWNrKSxoLmZpbHRlcigpfTt2YXIgdWd0PWZ1bmN0aW9uKGQpe3pMZShoLGQpO3ZhciBnPUdMZShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7VkxlKHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMpKS5jZWxsUmFuZ2U9eTt2YXIgST1DLmNlbGxSYW5nZS5n''@;'; put 'put ''ZXRUb3BTdGFydENvcm5lcigpLGo9Qy5jZWxsUmFuZ2UuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7cmV0dXJuIEMucmFuZ2VEYXRhPXYuZ2V0RGF0YShJLnJvdyxJLmNvbCxqLnJvdyxqLmNvbCksQ31yZXR1cm4gWkxlKGgsW3trZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9eS5n''@;'; put 'put ''ZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTt5LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLEMpLEkudW5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlLCEwKTt2YXIgaj10aGlzLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5lcigpO3kucG9wdWxhdGVGcm9tQXJyYXkoai5yb3csai5jb2ws''@;'; put 'put ''dGhpcy5yYW5nZURhdGEsdm9pZCAwLHZvaWQgMCwiTWVyZ2VDZWxscyIpfX0se2tleToicmVkbyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST15LmdldFBsdWdpbigibWVyZ2VDZWxscyIpO3kuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsQyksSS5tZXJnZVJhbmdlKHRoaXMuY2Vs''@;'; put 'put ''bFJhbmdlKX19XSksaH0oUG8uQWN0aW9uKTtQby5NZXJnZUNlbGxzQWN0aW9uPXVndDt2YXIgY2d0PWZ1bmN0aW9uKGQpe3pMZShoLGQpO3ZhciBnPUdMZShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7cmV0dXJuIFZMZSh0aGlzLGgpLChDPWcuY2FsbCh0aGlzKSkuY2VsbFJhbmdlPXksQ31y''@;'; put 'put ''ZXR1cm4gWkxlKGgsW3trZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9eS5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTt5LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLEMpLEkubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCl9fSx7a2V5OiJyZWRvIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5LEMpe3ZhciBJPXkuZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7eS5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixDKSxJLnVubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCkseS5yZW5kZXIoKX19XSksaH0oUG8uQWN0aW9uKTtmdW5jdGlvbiBRTGUoZCxnKXtpZigi''@;'; put 'put ''bG9hZERhdGEiPT09ZylyZXR1cm4gdGhpcy51bmRvUmVkby5jbGVhcigpfVBvLlVubWVyZ2VDZWxsc0FjdGlvbj1jZ3QsSXYoUG8uUm93TW92ZUFjdGlvbj1mdW5jdGlvbihkLGcpe3RoaXMucm93cz1kLnNsaWNlKCksdGhpcy5maW5hbEluZGV4PWcsdGhpcy5hY3Rpb25UeXBlPSJyb3dfbW92''@;'; put 'put ''ZSJ9LFBvLkFjdGlvbiksUG8uUm93TW92ZUFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihkLGcpe3ZhciBoPXRoaXMsdj1kLmdldFBsdWdpbigibWFudWFsUm93TW92ZSIpLHk9W10uY29uY2F0KHRoaXMucm93cyksQz15LmZpbHRlcihmdW5jdGlvbihSZSl7cmV0dXJuIFJlPmguZmlu''@;'; put 'put ''YWxJbmRleH0pLEk9eS5maWx0ZXIoZnVuY3Rpb24oUmUpe3JldHVybiBSZTw9aC5maW5hbEluZGV4fSksaj1DLnNvcnQoZnVuY3Rpb24oUmUsTmUpe3JldHVybiBOZS1SZX0pLmNvbmNhdChJLnNvcnQoZnVuY3Rpb24oUmUsTmUpe3JldHVybiBSZS1OZX0pKTtkLmFkZEhvb2tPbmNlKCJhZnRl''@;'; put 'put ''clZpZXdSZW5kZXIiLGcpO2Zvcih2YXIgY2U9MDtjZTxqLmxlbmd0aDtjZSs9MSl7dmFyIF9lPWQudG9WaXN1YWxSb3coaltjZV0pO3YubW92ZVJvdyhfZSxqW2NlXSl9ZC5yZW5kZXIoKSxkLmRlc2VsZWN0Q2VsbCgpLGQuc2VsZWN0Um93cyh0aGlzLnJvd3NbMF0sdGhpcy5yb3dzWzBdK3Ro''@;'; put 'put ''aXMucm93cy5sZW5ndGgtMSl9LFBvLlJvd01vdmVBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXt2YXIgaD1kLmdldFBsdWdpbigibWFudWFsUm93TW92ZSIpO2QuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsZyksaC5tb3ZlUm93cyh0aGlzLnJvd3Muc2xpY2UoKSx0''@;'; put 'put ''aGlzLmZpbmFsSW5kZXgpLGQucmVuZGVyKCksZC5kZXNlbGVjdENlbGwoKSxkLnNlbGVjdFJvd3ModGhpcy5maW5hbEluZGV4LHRoaXMuZmluYWxJbmRleCt0aGlzLnJvd3MubGVuZ3RoLTEpfSxQby5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3ZhciBkPXRoaXMuaW5zdGFuY2UuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKS51bmRvLGc9dm9pZCAwPT09ZHx8ZDt0aGlzLmluc3RhbmNlLnVuZG9SZWRvfHwodGhpcy5pbnN0YW5jZS51bmRvUmVkbz10aGlzKSxnP3RoaXMuaW5zdGFuY2UudW5kb1JlZG8uZW5hYmxlKCk6dGhpcy5pbnN0YW5jZS51bmRvUmVkby5kaXNhYmxlKCl9LFBvLnByb3RvdHlwZS5y''@;'; put 'put ''ZWdpc3RlclNob3J0Y3V0cz1mdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250cm9sL01ldGEiLCJ6Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC51bmRvKCl9''@;'; put 'put ''fSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJ5Il0sWyJDb250cm9sL01ldGEiLCJTaGlmdCIsInoiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLnJlZG8oKX19XSx7cnVuT25seUlmOmZ1bmN0aW9uKEkpe3JldHVybiFJLmFsdEtleX0sZ3JvdXA6InVuZG9SZWRvIn0pfSxQby5wcm90b3R5cGUu''@;'; put 'put ''dW5yZWdpc3RlclNob3J0Y3V0cz1mdW5jdGlvbigpe3RoaXMuaW5zdGFuY2UuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoInVuZG9SZWRvIil9O3ZhciBoRz1Wby5nZXRTaW5nbGV0b24oKTtoRy5hZGQoImFmdGVyVXBkYXRl''@;'; put 'put ''U2V0dGluZ3MiLGZ1bmN0aW9uKCl7dmFyIGQ7bnVsbD09PShkPXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpKXx8dm9pZCAwPT09ZHx8ZC5pbml0KCl9KSxoRy5yZWdpc3RlcigiYmVmb3JlVW5kbyIpLGhHLnJlZ2lzdGVyKCJhZnRlclVuZG8iKSxoRy5yZWdpc3RlcigiYmVmb3JlUmVkbyIp''@;'; put 'put ''LGhHLnJlZ2lzdGVyKCJhZnRlclJlZG8iKSxQby5QTFVHSU5fS0VZPSJ1bmRvUmVkbyIsUG8uU0VUVElOR19LRVlTPSEwO2NvbnN0IGRndD1QbztmdW5jdGlvbiBKTGUoKXsoZnVuY3Rpb24gSG50KCl7bmQoVk8pLG5kKEw2ZSksbmQoeE1lKSxuZChMTWUpLG5kKE42ZSksbmQoRTZlKSxuZChC''@;'; put 'put ''TWUpLG5kKEZNZSksbmQoeG50KSxuZChYUyksbmQoak1lKX0pKCksZnVuY3Rpb24gJG50KCl7RWcoWU8pLEVnKEZ6KSxFZyhKNmUpLEVnKFE2ZSksRWcoSzZlKSxFZygkNmUpLEVnKEd3KSxFZyhxNmUpfSgpLGZ1bmN0aW9uIG9ydCgpe0RPKEh6KSxETyh4dGUpLERPKGU4ZSksRE8oVHRlKX0o''@;'; put 'put ''KSxmdW5jdGlvbiBfcnQoKXt5OChscnQpLHk4KHVydCkseTgoZnJ0KSx5OChkcnQpLHk4KGdydCkseTgodnJ0KSx5OCh5cnQpLHk4KHdNZSkseTgoYnJ0KX0oKSxmdW5jdGlvbiBwZ3QoKXtMcyhhaXQpLExzKFRpdCksTHMoV2l0KSxMcyhMMHQpLExzKFgwdCksTHMoJEVlKSxMcyhoYXQpLExz''@;'; put 'put ''KFZhdCksTHMoRXhlKSxMcyhzc3QpLExzKE9zdCksTHMoWnN0KSxMcyhVeGUpLExzKFIydCksTHMoTmZ0KSxMcyhnaHQpLExzKEhodCksTHMobDN0KSxMcyh4M3QpLExzKHNkdCksTHModmR0KSxMcyhLZHQpLExzKGE0dCksTHMoWTR0KSxMcyhmcHQpLExzKF9wdCksTHMoRzZ0KSxMcygkOHQp''@;'; put 'put ''LExzKGg1dCksTHMoSTV0KSxMcyhqNXQpLExzKEs1dCksTHMoZGd0KX0oKX1jbGFzcyBUbWV7Y29uc3RydWN0b3IoZyl7dGhpcy5yYXdGaWxlPWc7bGV0IHY9ZnVuY3Rpb24gZ2d0KGQpe3JldHVybiEoIWR8fCEoZC5ub2RlTmFtZXx8ZC5wcm9wJiZkLmF0dHImJmQuZmluZCkpfShnKT9nLnZh''@;'; put 'put ''bHVlOmc7dGhpc1siX2NyZWF0ZUZyb20iKygic3RyaW5nIj09dHlwZW9mIHY/IkZha2VQYXRoIjoiT2JqZWN0IildKHYpfV9jcmVhdGVGcm9tRmFrZVBhdGgoZyl7dGhpcy5sYXN0TW9kaWZpZWREYXRlPXZvaWQgMCx0aGlzLnNpemU9dm9pZCAwLHRoaXMudHlwZT0ibGlrZS8iK2cuc2xpY2Uo''@;'; put 'put ''Zy5sYXN0SW5kZXhPZigiLiIpKzEpLnRvTG93ZXJDYXNlKCksdGhpcy5uYW1lPWcuc2xpY2UoZy5sYXN0SW5kZXhPZigiLyIpK2cubGFzdEluZGV4T2YoIlxcIikrMil9X2NyZWF0ZUZyb21PYmplY3QoZyl7dGhpcy5zaXplPWcuc2l6ZSx0aGlzLnR5cGU9Zy50eXBlLHRoaXMubmFtZT1nLm5h''@;'; put 'put ''bWV9fWNsYXNzIG1ndHtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy51cmw9Ii8iLHRoaXMuaGVhZGVycz1bXSx0aGlzLndpdGhDcmVkZW50aWFscz0hMCx0aGlzLmZvcm1EYXRhPVtdLHRoaXMuaXNSZWFkeT0hMSx0aGlzLmlzVXBsb2FkaW5nPSExLHRoaXMuaXNVcGxvYWRlZD0hMSx0aGlzLmlz''@;'; put 'put ''U3VjY2Vzcz0hMSx0aGlzLmlzQ2FuY2VsPSExLHRoaXMuaXNFcnJvcj0hMSx0aGlzLnByb2dyZXNzPTAsdGhpcy5pbmRleD12b2lkIDAsdGhpcy51cGxvYWRlcj1nLHRoaXMuc29tZT1oLHRoaXMub3B0aW9ucz12LHRoaXMuZmlsZT1uZXcgVG1lKGgpLHRoaXMuX2ZpbGU9aCxnLm9wdGlvbnMm''@;'; put 'put ''Jih0aGlzLm1ldGhvZD1nLm9wdGlvbnMubWV0aG9kfHwiUE9TVCIsdGhpcy5hbGlhcz1nLm9wdGlvbnMuaXRlbUFsaWFzfHwiZmlsZSIpLHRoaXMudXJsPWcub3B0aW9ucy51cmx9dXBsb2FkKCl7dHJ5e3RoaXMudXBsb2FkZXIudXBsb2FkSXRlbSh0aGlzKX1jYXRjaChnKXt0aGlzLnVwbG9h''@;'; put 'put ''ZGVyLl9vbkNvbXBsZXRlSXRlbSh0aGlzLCIiLDAse30pLHRoaXMudXBsb2FkZXIuX29uRXJyb3JJdGVtKHRoaXMsIiIsMCx7fSl9fWNhbmNlbCgpe3RoaXMudXBsb2FkZXIuY2FuY2VsSXRlbSh0aGlzKX1yZW1vdmUoKXt0aGlzLnVwbG9hZGVyLnJlbW92ZUZyb21RdWV1ZSh0aGlzKX1vbkJl''@;'; put 'put ''Zm9yZVVwbG9hZCgpe31vbkJ1aWxkRm9ybShnKXtyZXR1cm57Zm9ybTpnfX1vblByb2dyZXNzKGcpe3JldHVybntwcm9ncmVzczpnfX1vblN1Y2Nlc3MoZyxoLHYpe3JldHVybntyZXNwb25zZTpnLHN0YXR1czpoLGhlYWRlcnM6dn19b25FcnJvcihnLGgsdil7cmV0dXJue3Jlc3BvbnNlOmcs''@;'; put 'put ''c3RhdHVzOmgsaGVhZGVyczp2fX1vbkNhbmNlbChnLGgsdil7cmV0dXJue3Jlc3BvbnNlOmcsc3RhdHVzOmgsaGVhZGVyczp2fX1vbkNvbXBsZXRlKGcsaCx2KXtyZXR1cm57cmVzcG9uc2U6ZyxzdGF0dXM6aCxoZWFkZXJzOnZ9fV9vbkJlZm9yZVVwbG9hZCgpe3RoaXMuaXNSZWFkeT0hMCx0''@;'; put 'put ''aGlzLmlzVXBsb2FkaW5nPSEwLHRoaXMuaXNVcGxvYWRlZD0hMSx0aGlzLmlzU3VjY2Vzcz0hMSx0aGlzLmlzQ2FuY2VsPSExLHRoaXMuaXNFcnJvcj0hMSx0aGlzLnByb2dyZXNzPTAsdGhpcy5vbkJlZm9yZVVwbG9hZCgpfV9vbkJ1aWxkRm9ybShnKXt0aGlzLm9uQnVpbGRGb3JtKGcpfV9v''@;'; put 'put ''blByb2dyZXNzKGcpe3RoaXMucHJvZ3Jlc3M9Zyx0aGlzLm9uUHJvZ3Jlc3MoZyl9X29uU3VjY2VzcyhnLGgsdil7dGhpcy5pc1JlYWR5PSExLHRoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5pc1VwbG9hZGVkPSEwLHRoaXMuaXNTdWNjZXNzPSEwLHRoaXMuaXNDYW5jZWw9ITEsdGhpcy5pc0Vy''@;'; put 'put ''cm9yPSExLHRoaXMucHJvZ3Jlc3M9MTAwLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMub25TdWNjZXNzKGcsaCx2KX1fb25FcnJvcihnLGgsdil7dGhpcy5pc1JlYWR5PSExLHRoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5pc1VwbG9hZGVkPSEwLHRoaXMuaXNTdWNjZXNzPSExLHRoaXMuaXNDYW5j''@;'; put 'put ''ZWw9ITEsdGhpcy5pc0Vycm9yPSEwLHRoaXMucHJvZ3Jlc3M9MCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLm9uRXJyb3IoZyxoLHYpfV9vbkNhbmNlbChnLGgsdil7dGhpcy5pc1JlYWR5PSExLHRoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5pc1VwbG9hZGVkPSExLHRoaXMuaXNTdWNjZXNzPSEx''@;'; put 'put ''LHRoaXMuaXNDYW5jZWw9ITAsdGhpcy5pc0Vycm9yPSExLHRoaXMucHJvZ3Jlc3M9MCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLm9uQ2FuY2VsKGcsaCx2KX1fb25Db21wbGV0ZShnLGgsdil7dGhpcy5vbkNvbXBsZXRlKGcsaCx2KSx0aGlzLnVwbG9hZGVyLm9wdGlvbnMucmVtb3ZlQWZ0ZXJV''@;'; put 'put ''cGxvYWQmJnRoaXMucmVtb3ZlKCl9X3ByZXBhcmVUb1VwbG9hZGluZygpe3RoaXMuaW5kZXg9dGhpcy5pbmRleHx8Kyt0aGlzLnVwbG9hZGVyLl9uZXh0SW5kZXgsdGhpcy5pc1JlYWR5PSEwfX1sZXQgdmd0PSgoKT0+e2NsYXNzIGR7c3RhdGljIGdldE1pbWVDbGFzcyhoKXtsZXQgdj0iYXBw''@;'; put 'put ''bGljYXRpb24iO3JldHVybi0xIT09dGhpcy5taW1lX3BzZC5pbmRleE9mKGgudHlwZSl8fGgudHlwZS5tYXRjaCgiaW1hZ2UuKiIpP3Y9ImltYWdlIjpoLnR5cGUubWF0Y2goInZpZGVvLioiKT92PSJ2aWRlbyI6aC50eXBlLm1hdGNoKCJhdWRpby4qIik/dj0iYXVkaW8iOiJhcHBsaWNhdGlv''@;'; put 'put ''bi9wZGYiPT09aC50eXBlP3Y9InBkZiI6LTEhPT10aGlzLm1pbWVfY29tcHJlc3MuaW5kZXhPZihoLnR5cGUpP3Y9ImNvbXByZXNzIjotMSE9PXRoaXMubWltZV9kb2MuaW5kZXhPZihoLnR5cGUpP3Y9ImRvYyI6LTEhPT10aGlzLm1pbWVfeHNsLmluZGV4T2YoaC50eXBlKT92PSJ4bHMiOi0x''@;'; put 'put ''IT09dGhpcy5taW1lX3BwdC5pbmRleE9mKGgudHlwZSkmJih2PSJwcHQiKSwiYXBwbGljYXRpb24iPT09diYmKHY9dGhpcy5maWxlVHlwZURldGVjdGlvbihoLm5hbWUpKSx2fXN0YXRpYyBmaWxlVHlwZURldGVjdGlvbihoKXtsZXQgdj17anBnOiJpbWFnZSIsanBlZzoiaW1hZ2UiLHRpZjoi''@;'; put 'put ''aW1hZ2UiLHBzZDoiaW1hZ2UiLGJtcDoiaW1hZ2UiLHBuZzoiaW1hZ2UiLG5lZjoiaW1hZ2UiLHRpZmY6ImltYWdlIixjcjI6ImltYWdlIixkd2c6ImltYWdlIixjZHI6ImltYWdlIixhaToiaW1hZ2UiLGluZGQ6ImltYWdlIixwaW46ImltYWdlIixjZHA6ImltYWdlIixza3A6ImltYWdlIixz''@;'; put 'put ''dHA6ImltYWdlIiwiM2RtIjoiaW1hZ2UiLG1wMzoiYXVkaW8iLHdhdjoiYXVkaW8iLHdtYToiYXVkaW8iLG1vZDoiYXVkaW8iLG00YToiYXVkaW8iLGNvbXByZXNzOiJjb21wcmVzcyIsemlwOiJjb21wcmVzcyIscmFyOiJjb21wcmVzcyIsIjd6IjoiY29tcHJlc3MiLGx6OiJjb21wcmVzcyIs''@;'; put 'put ''ejAxOiJjb21wcmVzcyIsYnoyOiJjb21wcmVzcyIsZ3o6ImNvbXByZXNzIixwZGY6InBkZiIseGxzOiJ4bHMiLHhsc3g6InhscyIsb2RzOiJ4bHMiLG1wNDoidmlkZW8iLGF2aToidmlkZW8iLHdtdjoidmlkZW8iLG1wZzoidmlkZW8iLG10czoidmlkZW8iLGZsdjoidmlkZW8iLCIzZ3AiOiJ2''@;'; put 'put ''aWRlbyIsdm9iOiJ2aWRlbyIsbTR2OiJ2aWRlbyIsbXBlZzoidmlkZW8iLG0ydHM6InZpZGVvIixtb3Y6InZpZGVvIixkb2M6ImRvYyIsZG9jeDoiZG9jIixlcHM6ImRvYyIsdHh0OiJkb2MiLG9kdDoiZG9jIixydGY6ImRvYyIscHB0OiJwcHQiLHBwdHg6InBwdCIscHBzOiJwcHQiLHBwc3g6''@;'; put 'put ''InBwdCIsb2RwOiJwcHQifSx5PWguc3BsaXQoIi4iKTtpZih5Lmxlbmd0aDwyKXJldHVybiJhcHBsaWNhdGlvbiI7bGV0IEM9eVt5Lmxlbmd0aC0xXS50b0xvd2VyQ2FzZSgpO3JldHVybiB2b2lkIDA9PT12W0NdPyJhcHBsaWNhdGlvbiI6dltDXX19cmV0dXJuIGQubWltZV9kb2M9WyJhcHBs''@;'; put 'put ''aWNhdGlvbi9tc3dvcmQiLCJhcHBsaWNhdGlvbi9tc3dvcmQiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJv''@;'; put 'put ''Y2Vzc2luZ21sLnRlbXBsYXRlIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9FbmFibGVkLjEyIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyIl0sZC5taW1lX3hzbD1bImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCIsImFw''@;'; put 'put ''cGxpY2F0aW9uL3ZuZC5tcy1leGNlbCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50''@;'; put 'put ''LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvRW5hYmxlZC4xMiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0Vu''@;'; put 'put ''YWJsZWQuMTIiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC4xMiJdLGQubWltZV9wcHQ9WyJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50IiwiYXBwbGljYXRpb24vdm5kLm1zLXBv''@;'; put 'put ''d2VycG9pbnQiLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQu''@;'; put 'put ''cHJlc2VudGF0aW9ubWwudGVtcGxhdGUiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93IiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuYWRkaW4ubWFjcm9FbmFibGVkLjEyIiwiYXBwbGljYXRpb24v''@;'; put 'put ''dm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvRW5hYmxlZC4xMiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTIiLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9FbmFibGVkLjEy''@;'; put 'put ''Il0sZC5taW1lX3BzZD1bImltYWdlL3Bob3Rvc2hvcCIsImltYWdlL3gtcGhvdG9zaG9wIiwiaW1hZ2UvcHNkIiwiYXBwbGljYXRpb24vcGhvdG9zaG9wIiwiYXBwbGljYXRpb24vcHNkIiwienotYXBwbGljYXRpb24venotd2luYXNzb2MtcHNkIl0sZC5taW1lX2NvbXByZXNzPVsiYXBwbGlj''@;'; put 'put ''YXRpb24veC1ndGFyIiwiYXBwbGljYXRpb24veC1nY29tcHJlc3MiLCJhcHBsaWNhdGlvbi9jb21wcmVzcyIsImFwcGxpY2F0aW9uL3gtdGFyIiwiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsImFwcGxpY2F0aW9uL3gtemlwLWNvbXBy''@;'; put 'put ''ZXNzZWQiLCJhcHBsaWNhdGlvbi96aXAtY29tcHJlc3NlZCIsImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCIsImFwcGxpY2F0aW9uL2d6aXAiLCJhcHBsaWNhdGlvbi94LWJ6aXAyIl0sZH0pKCk7Y2xhc3MgeWd0e2NvbnN0cnVjdG9yKGcpe3RoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5x''@;'; put 'put ''dWV1ZT1bXSx0aGlzLnByb2dyZXNzPTAsdGhpcy5fbmV4dEluZGV4PTAsdGhpcy5vcHRpb25zPXthdXRvVXBsb2FkOiExLGlzSFRNTDU6ITAsZmlsdGVyczpbXSxyZW1vdmVBZnRlclVwbG9hZDohMSxkaXNhYmxlTXVsdGlwYXJ0OiExLGZvcm1hdERhdGFGdW5jdGlvbjpoPT5oLl9maWxlLGZv''@;'; put 'put ''cm1hdERhdGFGdW5jdGlvbklzQXN5bmM6ITF9LHRoaXMuc2V0T3B0aW9ucyhnKSx0aGlzLnJlc3BvbnNlPW5ldyBmbn1zZXRPcHRpb25zKGcpe3RoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucyxnKSx0aGlzLmF1dGhUb2tlbj10aGlzLm9wdGlvbnMuYXV0aFRva2VuLHRo''@;'; put 'put ''aXMuYXV0aFRva2VuSGVhZGVyPXRoaXMub3B0aW9ucy5hdXRoVG9rZW5IZWFkZXJ8fCJBdXRob3JpemF0aW9uIix0aGlzLmF1dG9VcGxvYWQ9dGhpcy5vcHRpb25zLmF1dG9VcGxvYWQsdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToicXVldWVMaW1pdCIsZm46dGhpcy5fcXVl''@;'; put 'put ''dWVMaW1pdEZpbHRlcn0pLHRoaXMub3B0aW9ucy5tYXhGaWxlU2l6ZSYmdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToiZmlsZVNpemUiLGZuOnRoaXMuX2ZpbGVTaXplRmlsdGVyfSksdGhpcy5vcHRpb25zLmFsbG93ZWRGaWxlVHlwZSYmdGhpcy5vcHRpb25zLmZpbHRlcnMu''@;'; put 'put ''dW5zaGlmdCh7bmFtZToiZmlsZVR5cGUiLGZuOnRoaXMuX2ZpbGVUeXBlRmlsdGVyfSksdGhpcy5vcHRpb25zLmFsbG93ZWRNaW1lVHlwZSYmdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToibWltZVR5cGUiLGZuOnRoaXMuX21pbWVUeXBlRmlsdGVyfSk7Zm9yKGxldCBoPTA7''@;'; put 'put ''aDx0aGlzLnF1ZXVlLmxlbmd0aDtoKyspdGhpcy5xdWV1ZVtoXS51cmw9dGhpcy5vcHRpb25zLnVybH1hZGRUb1F1ZXVlKGcsaCx2KXtsZXQgeT1bXTtmb3IobGV0IGNlIG9mIGcpeS5wdXNoKGNlKTtsZXQgQz10aGlzLl9nZXRGaWx0ZXJzKHYpLEk9dGhpcy5xdWV1ZS5sZW5ndGgsaj1bXTt5''@;'; put 'put ''Lm1hcChjZT0+e2h8fChoPXRoaXMub3B0aW9ucyk7bGV0IF9lPW5ldyBUbWUoY2UpO2lmKHRoaXMuX2lzVmFsaWRGaWxlKF9lLEMsaCkpe2xldCBSZT1uZXcgbWd0KHRoaXMsY2UsaCk7ai5wdXNoKFJlKSx0aGlzLnF1ZXVlLnB1c2goUmUpLHRoaXMuX29uQWZ0ZXJBZGRpbmdGaWxlKFJlKX1l''@;'; put 'put ''bHNlIHRoaXMuX29uV2hlbkFkZGluZ0ZpbGVGYWlsZWQoX2UsQ1t0aGlzLl9mYWlsRmlsdGVySW5kZXhdLGgpfSksdGhpcy5xdWV1ZS5sZW5ndGghPT1JJiYodGhpcy5fb25BZnRlckFkZGluZ0FsbChqKSx0aGlzLnByb2dyZXNzPXRoaXMuX2dldFRvdGFsUHJvZ3Jlc3MoKSksdGhpcy5fcmVu''@;'; put 'put ''ZGVyKCksdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQmJnRoaXMudXBsb2FkQWxsKCl9cmVtb3ZlRnJvbVF1ZXVlKGcpe2xldCBoPXRoaXMuZ2V0SW5kZXhPZkl0ZW0oZyksdj10aGlzLnF1ZXVlW2hdO3YuaXNVcGxvYWRpbmcmJnYuY2FuY2VsKCksdGhpcy5xdWV1ZS5zcGxpY2UoaCwxKSx0aGlz''@;'; put 'put ''LnByb2dyZXNzPXRoaXMuX2dldFRvdGFsUHJvZ3Jlc3MoKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLnF1ZXVlLmxlbmd0aDspdGhpcy5xdWV1ZVswXS5yZW1vdmUoKTt0aGlzLnByb2dyZXNzPTB9dXBsb2FkSXRlbShnKXtsZXQgaD10aGlzLmdldEluZGV4T2ZJdGVtKGcpLHY9dGhpcy5xdWV1''@;'; put 'put ''ZVtoXSx5PXRoaXMub3B0aW9ucy5pc0hUTUw1PyJfeGhyVHJhbnNwb3J0IjoiX2lmcmFtZVRyYW5zcG9ydCI7di5fcHJlcGFyZVRvVXBsb2FkaW5nKCksIXRoaXMuaXNVcGxvYWRpbmcmJih0aGlzLmlzVXBsb2FkaW5nPSEwLHRoaXNbeV0odikpfWNhbmNlbEl0ZW0oZyl7bGV0IGg9dGhpcy5n''@;'; put 'put ''ZXRJbmRleE9mSXRlbShnKSx2PXRoaXMucXVldWVbaF07diYmdi5pc1VwbG9hZGluZyYmKHRoaXMub3B0aW9ucy5pc0hUTUw1P3YuX3hocjp2Ll9mb3JtKS5hYm9ydCgpfXVwbG9hZEFsbCgpe2xldCBnPXRoaXMuZ2V0Tm90VXBsb2FkZWRJdGVtcygpLmZpbHRlcihoPT4haC5pc1VwbG9hZGlu''@;'; put 'put ''Zyk7IWcubGVuZ3RofHwoZy5tYXAoaD0+aC5fcHJlcGFyZVRvVXBsb2FkaW5nKCkpLGdbMF0udXBsb2FkKCkpfWNhbmNlbEFsbCgpe3RoaXMuZ2V0Tm90VXBsb2FkZWRJdGVtcygpLm1hcChoPT5oLmNhbmNlbCgpKX1pc0ZpbGUoZyl7cmV0dXJuIGZ1bmN0aW9uIEFndChkKXtyZXR1cm4gRmls''@;'; put 'put ''ZSYmZCBpbnN0YW5jZW9mIEZpbGV9KGcpfWlzRmlsZUxpa2VPYmplY3QoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBUbWV9Z2V0SW5kZXhPZkl0ZW0oZyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBnP2c6dGhpcy5xdWV1ZS5pbmRleE9mKGcpfWdldE5vdFVwbG9hZGVkSXRlbXMoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5xdWV1ZS5maWx0ZXIoZz0+IWcuaXNVcGxvYWRlZCl9Z2V0UmVhZHlJdGVtcygpe3JldHVybiB0aGlzLnF1ZXVlLmZpbHRlcihnPT5nLmlzUmVhZHkmJiFnLmlzVXBsb2FkaW5nKS5zb3J0KChnLGgpPT5nLmluZGV4LWguaW5kZXgpfWRlc3Ryb3koKXt9b25BZnRlckFkZGluZ0FsbChn''@;'; put 'put ''KXtyZXR1cm57ZmlsZUl0ZW1zOmd9fW9uQnVpbGRJdGVtRm9ybShnLGgpe3JldHVybntmaWxlSXRlbTpnLGZvcm06aH19b25BZnRlckFkZGluZ0ZpbGUoZyl7cmV0dXJue2ZpbGVJdGVtOmd9fW9uV2hlbkFkZGluZ0ZpbGVGYWlsZWQoZyxoLHYpe3JldHVybntpdGVtOmcsZmlsdGVyOmgsb3B0''@;'; put 'put ''aW9uczp2fX1vbkJlZm9yZVVwbG9hZEl0ZW0oZyl7cmV0dXJue2ZpbGVJdGVtOmd9fW9uUHJvZ3Jlc3NJdGVtKGcsaCl7cmV0dXJue2ZpbGVJdGVtOmcscHJvZ3Jlc3M6aH19b25Qcm9ncmVzc0FsbChnKXtyZXR1cm57cHJvZ3Jlc3M6Z319b25TdWNjZXNzSXRlbShnLGgsdix5KXtyZXR1cm57''@;'; put 'put ''aXRlbTpnLHJlc3BvbnNlOmgsc3RhdHVzOnYsaGVhZGVyczp5fX1vbkVycm9ySXRlbShnLGgsdix5KXtyZXR1cm57aXRlbTpnLHJlc3BvbnNlOmgsc3RhdHVzOnYsaGVhZGVyczp5fX1vbkNhbmNlbEl0ZW0oZyxoLHYseSl7cmV0dXJue2l0ZW06ZyxyZXNwb25zZTpoLHN0YXR1czp2LGhlYWRl''@;'; put 'put ''cnM6eX19b25Db21wbGV0ZUl0ZW0oZyxoLHYseSl7cmV0dXJue2l0ZW06ZyxyZXNwb25zZTpoLHN0YXR1czp2LGhlYWRlcnM6eX19b25Db21wbGV0ZUFsbCgpe31fbWltZVR5cGVGaWx0ZXIoZyl7cmV0dXJuISh0aGlzLm9wdGlvbnMuYWxsb3dlZE1pbWVUeXBlJiYtMT09PXRoaXMub3B0aW9u''@;'; put 'put ''cy5hbGxvd2VkTWltZVR5cGUuaW5kZXhPZihnLnR5cGUpKX1fZmlsZVNpemVGaWx0ZXIoZyl7cmV0dXJuISh0aGlzLm9wdGlvbnMubWF4RmlsZVNpemUmJmcuc2l6ZT50aGlzLm9wdGlvbnMubWF4RmlsZVNpemUpfV9maWxlVHlwZUZpbHRlcihnKXtyZXR1cm4hKHRoaXMub3B0aW9ucy5hbGxv''@;'; put 'put ''d2VkRmlsZVR5cGUmJi0xPT09dGhpcy5vcHRpb25zLmFsbG93ZWRGaWxlVHlwZS5pbmRleE9mKHZndC5nZXRNaW1lQ2xhc3MoZykpKX1fb25FcnJvckl0ZW0oZyxoLHYseSl7Zy5fb25FcnJvcihoLHYseSksdGhpcy5vbkVycm9ySXRlbShnLGgsdix5KX1fb25Db21wbGV0ZUl0ZW0oZyxoLHYs''@;'; put 'put ''eSl7Zy5fb25Db21wbGV0ZShoLHYseSksdGhpcy5vbkNvbXBsZXRlSXRlbShnLGgsdix5KTtsZXQgQz10aGlzLmdldFJlYWR5SXRlbXMoKVswXTt0aGlzLmlzVXBsb2FkaW5nPSExLEM/Qy51cGxvYWQoKToodGhpcy5vbkNvbXBsZXRlQWxsKCksdGhpcy5wcm9ncmVzcz10aGlzLl9nZXRUb3Rh''@;'; put 'put ''bFByb2dyZXNzKCksdGhpcy5fcmVuZGVyKCkpfV9oZWFkZXJzR2V0dGVyKGcpe3JldHVybiBoPT5oP2dbaC50b0xvd2VyQ2FzZSgpXXx8dm9pZCAwOmd9X3hoclRyYW5zcG9ydChnKXtsZXQgeSxoPXRoaXMsdj1nLl94aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKHRoaXMuX29uQmVmb3JlVXBs''@;'; put 'put ''b2FkSXRlbShnKSwibnVtYmVyIiE9dHlwZW9mIGcuX2ZpbGUuc2l6ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlsZSBzcGVjaWZpZWQgaXMgbm8gbG9uZ2VyIHZhbGlkIik7aWYodGhpcy5vcHRpb25zLmRpc2FibGVNdWx0aXBhcnQpeT10aGlzLm9wdGlvbnMuZm9ybWF0RGF0YUZ1bmN0''@;'; put 'put ''aW9uKGcpO2Vsc2V7eT1uZXcgRm9ybURhdGEsdGhpcy5fb25CdWlsZEl0ZW1Gb3JtKGcseSk7Y29uc3QgQz0oKT0+eS5hcHBlbmQoZy5hbGlhcyxnLl9maWxlLGcuZmlsZS5uYW1lKTt0aGlzLm9wdGlvbnMucGFyYW1ldGVyc0JlZm9yZUZpbGVzfHxDKCksdm9pZCAwIT09dGhpcy5vcHRpb25z''@;'; put 'put ''LmFkZGl0aW9uYWxQYXJhbWV0ZXImJk9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsUGFyYW1ldGVyKS5mb3JFYWNoKEk9PntsZXQgaj10aGlzLm9wdGlvbnMuYWRkaXRpb25hbFBhcmFtZXRlcltJXTsic3RyaW5nIj09dHlwZW9mIGomJmouaW5kZXhPZigie3tmaWxlX25hbWV9''@;'; put 'put ''fSIpPj0wJiYoaj1qLnJlcGxhY2UoInt7ZmlsZV9uYW1lfX0iLGcuZmlsZS5uYW1lKSkseS5hcHBlbmQoSSxqKX0pLHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzQmVmb3JlRmlsZXMmJkMoKX1pZih2LnVwbG9hZC5vbnByb2dyZXNzPUM9PntsZXQgST1NYXRoLnJvdW5kKEMubGVuZ3RoQ29tcHV0''@;'; put 'put ''YWJsZT8xMDAqQy5sb2FkZWQvQy50b3RhbDowKTt0aGlzLl9vblByb2dyZXNzSXRlbShnLEkpfSx2Lm9ubG9hZD0oKT0+e2xldCBDPXRoaXMuX3BhcnNlSGVhZGVycyh2LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxJPXRoaXMuX3RyYW5zZm9ybVJlc3BvbnNlKHYucmVzcG9uc2UsQyk7dGhp''@;'; put 'put ''c1siX29uIisodGhpcy5faXNTdWNjZXNzQ29kZSh2LnN0YXR1cyk/IlN1Y2Nlc3MiOiJFcnJvciIpKyJJdGVtIl0oZyxJLHYuc3RhdHVzLEMpLHRoaXMuX29uQ29tcGxldGVJdGVtKGcsSSx2LnN0YXR1cyxDKX0sdi5vbmVycm9yPSgpPT57bGV0IEM9dGhpcy5fcGFyc2VIZWFkZXJzKHYuZ2V0''@;'; put 'put ''QWxsUmVzcG9uc2VIZWFkZXJzKCkpLEk9dGhpcy5fdHJhbnNmb3JtUmVzcG9uc2Uodi5yZXNwb25zZSxDKTt0aGlzLl9vbkVycm9ySXRlbShnLEksdi5zdGF0dXMsQyksdGhpcy5fb25Db21wbGV0ZUl0ZW0oZyxJLHYuc3RhdHVzLEMpfSx2Lm9uYWJvcnQ9KCk9PntsZXQgQz10aGlzLl9wYXJz''@;'; put 'put ''ZUhlYWRlcnModi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksST10aGlzLl90cmFuc2Zvcm1SZXNwb25zZSh2LnJlc3BvbnNlLEMpO3RoaXMuX29uQ2FuY2VsSXRlbShnLEksdi5zdGF0dXMsQyksdGhpcy5fb25Db21wbGV0ZUl0ZW0oZyxJLHYuc3RhdHVzLEMpfSx2Lm9wZW4oZy5tZXRob2Qs''@;'; put 'put ''Zy51cmwsITApLHYud2l0aENyZWRlbnRpYWxzPWcud2l0aENyZWRlbnRpYWxzLHRoaXMub3B0aW9ucy5oZWFkZXJzKWZvcihsZXQgQyBvZiB0aGlzLm9wdGlvbnMuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoQy5uYW1lLEMudmFsdWUpO2lmKGcuaGVhZGVycy5sZW5ndGgpZm9yKGxldCBD''@;'; put 'put ''IG9mIGcuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoQy5uYW1lLEMudmFsdWUpO3RoaXMuYXV0aFRva2VuJiZ2LnNldFJlcXVlc3RIZWFkZXIodGhpcy5hdXRoVG9rZW5IZWFkZXIsdGhpcy5hdXRoVG9rZW4pLHYub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7di5yZWFkeVN0YXRl''@;'; put 'put ''PT1YTUxIdHRwUmVxdWVzdC5ET05FJiZoLnJlc3BvbnNlLmVtaXQodi5yZXNwb25zZVRleHQpfSx0aGlzLm9wdGlvbnMuZm9ybWF0RGF0YUZ1bmN0aW9uSXNBc3luYz95LnRoZW4oQz0+di5zZW5kKEpTT04uc3RyaW5naWZ5KEMpKSk6di5zZW5kKHkpLHRoaXMuX3JlbmRlcigpfV9nZXRUb3Rh''@;'; put 'put ''bFByb2dyZXNzKGc9MCl7aWYodGhpcy5vcHRpb25zLnJlbW92ZUFmdGVyVXBsb2FkKXJldHVybiBnO2xldCBoPXRoaXMuZ2V0Tm90VXBsb2FkZWRJdGVtcygpLmxlbmd0aCx5PTEwMC90aGlzLnF1ZXVlLmxlbmd0aDtyZXR1cm4gTWF0aC5yb3VuZCgoaD90aGlzLnF1ZXVlLmxlbmd0aC1oOnRo''@;'; put 'put ''aXMucXVldWUubGVuZ3RoKSp5K2cqeS8xMDApfV9nZXRGaWx0ZXJzKGcpe2lmKCFnKXJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVycztpZihBcnJheS5pc0FycmF5KGcpKXJldHVybiBnO2lmKCJzdHJpbmciPT10eXBlb2YgZyl7bGV0IGg9Zy5tYXRjaCgvW15ccyxdKy9nKTtyZXR1cm4gdGhp''@;'; put 'put ''cy5vcHRpb25zLmZpbHRlcnMuZmlsdGVyKHY9Pi0xIT09aC5pbmRleE9mKHYubmFtZSkpfXJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyc31fcmVuZGVyKCl7fV9xdWV1ZUxpbWl0RmlsdGVyKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9ucy5xdWV1ZUxpbWl0fHx0aGlzLnF1ZXVlLmxl''@;'; put 'put ''bmd0aDx0aGlzLm9wdGlvbnMucXVldWVMaW1pdH1faXNWYWxpZEZpbGUoZyxoLHYpe3JldHVybiB0aGlzLl9mYWlsRmlsdGVySW5kZXg9LTEsIWgubGVuZ3RofHxoLmV2ZXJ5KHk9Pih0aGlzLl9mYWlsRmlsdGVySW5kZXgrKyx5LmZuLmNhbGwodGhpcyxnLHYpKSl9X2lzU3VjY2Vzc0NvZGUo''@;'; put 'put ''Zyl7cmV0dXJuIGc+PTIwMCYmZzwzMDB8fDMwND09PWd9X3RyYW5zZm9ybVJlc3BvbnNlKGcsaCl7cmV0dXJuIGd9X3BhcnNlSGVhZGVycyhnKXtsZXQgdix5LEMsaD17fTtyZXR1cm4gZyYmZy5zcGxpdCgiXG4iKS5tYXAoST0+e0M9SS5pbmRleE9mKCI6Iiksdj1JLnNsaWNlKDAsQykudHJp''@;'; put 'put ''bSgpLnRvTG93ZXJDYXNlKCkseT1JLnNsaWNlKEMrMSkudHJpbSgpLHYmJihoW3ZdPWhbdl0/aFt2XSsiLCAiK3k6eSl9KSxofV9vbldoZW5BZGRpbmdGaWxlRmFpbGVkKGcsaCx2KXt0aGlzLm9uV2hlbkFkZGluZ0ZpbGVGYWlsZWQoZyxoLHYpfV9vbkFmdGVyQWRkaW5nRmlsZShnKXt0aGlz''@;'; put 'put ''Lm9uQWZ0ZXJBZGRpbmdGaWxlKGcpfV9vbkFmdGVyQWRkaW5nQWxsKGcpe3RoaXMub25BZnRlckFkZGluZ0FsbChnKX1fb25CZWZvcmVVcGxvYWRJdGVtKGcpe2cuX29uQmVmb3JlVXBsb2FkKCksdGhpcy5vbkJlZm9yZVVwbG9hZEl0ZW0oZyl9X29uQnVpbGRJdGVtRm9ybShnLGgpe2cuX29u''@;'; put 'put ''QnVpbGRGb3JtKGgpLHRoaXMub25CdWlsZEl0ZW1Gb3JtKGcsaCl9X29uUHJvZ3Jlc3NJdGVtKGcsaCl7bGV0IHY9dGhpcy5fZ2V0VG90YWxQcm9ncmVzcyhoKTt0aGlzLnByb2dyZXNzPXYsZy5fb25Qcm9ncmVzcyhoKSx0aGlzLm9uUHJvZ3Jlc3NJdGVtKGcsaCksdGhpcy5vblByb2dyZXNz''@;'; put 'put ''QWxsKHYpLHRoaXMuX3JlbmRlcigpfV9vblN1Y2Nlc3NJdGVtKGcsaCx2LHkpe2cuX29uU3VjY2VzcyhoLHYseSksdGhpcy5vblN1Y2Nlc3NJdGVtKGcsaCx2LHkpfV9vbkNhbmNlbEl0ZW0oZyxoLHYseSl7Zy5fb25DYW5jZWwoaCx2LHkpLHRoaXMub25DYW5jZWxJdGVtKGcsaCx2LHkpfX1s''@;'; put 'put ''ZXQgd2d0PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5vbkZpbGVTZWxlY3RlZD1uZXcgZm4sdGhpcy5lbGVtZW50PWh9Z2V0T3B0aW9ucygpe3JldHVybiB0aGlzLnVwbG9hZGVyLm9wdGlvbnN9Z2V0RmlsdGVycygpe3JldHVybnt9fWlzRW1wdHlBZnRlclNlbGVjdGlvbigp''@;'; put 'put ''e3JldHVybiEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcy5tdWx0aXBsZX1vbkNoYW5nZSgpe2xldCBoPXRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpbGVzLHY9dGhpcy5nZXRPcHRpb25zKCkseT10aGlzLmdldEZpbHRlcnMoKTt0aGlzLnVwbG9hZGVyLmFkZFRv''@;'; put 'put ''UXVldWUoaCx2LHkpLHRoaXMub25GaWxlU2VsZWN0ZWQuZW1pdChoKSx0aGlzLmlzRW1wdHlBZnRlclNlbGVjdGlvbigpJiYodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU9IiIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChfbykp''@;'; put 'put ''fSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZzJGaWxlU2VsZWN0IiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkNoYW5nZSgpfSl9LGlucHV0czp7dXBsb2FkZXI6InVwbG9hZGVy''@;'; put 'put ''In0sb3V0cHV0czp7b25GaWxlU2VsZWN0ZWQ6Im9uRmlsZVNlbGVjdGVkIn19KSxkfSkoKSxiZ3Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmZpbGVPdmVyPW5ldyBmbix0aGlzLm9uRmlsZURyb3A9bmV3IGZuLHRoaXMuZWxlbWVudD1ofWdldE9wdGlvbnMoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy51cGxvYWRlci5vcHRpb25zfWdldEZpbHRlcnMoKXtyZXR1cm57fX1vbkRyb3AoaCl7bGV0IHY9dGhpcy5fZ2V0VHJhbnNmZXIoaCk7aWYoIXYpcmV0dXJuO2xldCB5PXRoaXMuZ2V0T3B0aW9ucygpLEM9dGhpcy5nZXRGaWx0ZXJzKCk7dGhpcy5fcHJldmVudEFuZFN0b3AoaCksdGhp''@;'; put 'put ''cy51cGxvYWRlci5hZGRUb1F1ZXVlKHYuZmlsZXMseSxDKSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpLHRoaXMub25GaWxlRHJvcC5lbWl0KHYuZmlsZXMpfW9uRHJhZ092ZXIoaCl7bGV0IHY9dGhpcy5fZ2V0VHJhbnNmZXIoaCk7IXRoaXMuX2hhdmVGaWxlcyh2LnR5cGVzKXx8KHYuZHJvcEVm''@;'; put 'put ''ZmVjdD0iY29weSIsdGhpcy5fcHJldmVudEFuZFN0b3AoaCksdGhpcy5maWxlT3Zlci5lbWl0KCEwKSl9b25EcmFnTGVhdmUoaCl7dGhpcy5lbGVtZW50JiZoLmN1cnJlbnRUYXJnZXQ9PT10aGlzLmVsZW1lbnRbMF18fCh0aGlzLl9wcmV2ZW50QW5kU3RvcChoKSx0aGlzLmZpbGVPdmVyLmVt''@;'; put 'put ''aXQoITEpKX1fZ2V0VHJhbnNmZXIoaCl7cmV0dXJuIGguZGF0YVRyYW5zZmVyP2guZGF0YVRyYW5zZmVyOmgub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXJ9X3ByZXZlbnRBbmRTdG9wKGgpe2gucHJldmVudERlZmF1bHQoKSxoLnN0b3BQcm9wYWdhdGlvbigpfV9oYXZlRmlsZXMoaCl7cmV0''@;'; put 'put ''dXJuISFoJiYoaC5pbmRleE9mPy0xIT09aC5pbmRleE9mKCJGaWxlcyIpOiEhaC5jb250YWlucyYmaC5jb250YWlucygiRmlsZXMiKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9vKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0''@;'; put 'put ''b3JzOltbIiIsIm5nMkZpbGVEcm9wIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmWm4oImRyb3AiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uRHJvcChDKX0pKCJkcmFnb3ZlciIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EcmFnT3ZlcihDKX0pKCJkcmFnbGVhdmUiLGZ1''@;'; put 'put ''bmN0aW9uKEMpe3JldHVybiB2Lm9uRHJhZ0xlYXZlKEMpfSl9LGlucHV0czp7dXBsb2FkZXI6InVwbG9hZGVyIn0sb3V0cHV0czp7ZmlsZU92ZXI6ImZpbGVPdmVyIixvbkZpbGVEcm9wOiJvbkZpbGVEcm9wIn19KSxkfSkoKSxfZ3Q9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbYWFdfSksZH0pKCksSW1lPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1''@;'; put 'put ''MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W2FhXX0pLGR9KSgpLFZuZT0oKCk9PntjbGFzcyBke25nT25Jbml0KCl7fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQu''@;'; put 'put ''XHUwMjc1aW5qPW0wKHtwcm92aWRlcnM6W2hOLGNOXSxpbXBvcnRzOlthYSx4ZixCNSxNdyxJbWUsVFplLmZvclJvb3QoKV19KSxkfSkoKSxqbmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0''@;'; put 'put ''eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbYWFdfSksZH0pKCksWm5lPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W2Fh''@;'; put 'put ''LHhmLE13LEI1LFZuZSxqbmUsSW1lXX0pLGR9KSgpO3ZhciBEbWUsTG1lLE9tZSxSbWUsQm1lLEJNPUwoMzA2MjgpO0woNDM5OSksSkxlKCksZnVuY3Rpb24gQ2d0KGQpe3ZhciBnPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cualF1ZXJ5OyFnfHwoZy5mbi5oYW5kc29udGFi''@;'; put 'put ''bGU9ZnVuY3Rpb24oaCl7dmFyIEksdj10aGlzLmZpcnN0KCkseT12LmRhdGEoImhhbmRzb250YWJsZSIpO2lmKCJzdHJpbmciIT10eXBlb2YgaCl7dmFyIEM9aHx8e307cmV0dXJuIHk/eS51cGRhdGVTZXR0aW5ncyhDKTooeT1uZXcgZC5Db3JlKHZbMF0sQyksdi5kYXRhKCJoYW5kc29udGFi''@;'; put 'put ''bGUiLHkpLHkuaW5pdCgpKSx2fWlmKHkpe2lmKHZvaWQgMD09PXlbaF0pdGhyb3cgbmV3IEVycm9yKCJIYW5kc29udGFibGUgZG8gbm90IHByb3ZpZGUgYWN0aW9uOiAiLmNvbmNhdChoKSk7Zm9yKHZhciBqLGNlPWFyZ3VtZW50cy5sZW5ndGgsX2U9bmV3IEFycmF5KGNlPjE/Y2UtMTowKSxS''@;'; put 'put ''ZT0xO1JlPGNlO1JlKyspX2VbUmUtMV09YXJndW1lbnRzW1JlXTtJPShqPXlbaF0pLmNhbGwuYXBwbHkoaixbeV0uY29uY2F0KF9lKSksImRlc3Ryb3kiPT09aCYmdi5yZW1vdmVEYXRhKCl9cmV0dXJuIEl9KX0oUWwpLFFsLl9fR2hvc3RUYWJsZT1uOGUsUWwuX2dldExpc3RlbmVyc0NvdW50''@;'; put 'put ''ZXI9ZnVuY3Rpb24gT3plKCl7cmV0dXJuIHNlZX0sUWwuX2dldFJlZ2lzdGVyZWRNYXBzQ291bnRlcj1mdW5jdGlvbiBZWGUoKXtyZXR1cm4gRTRlfSxRbC5FdmVudE1hbmFnZXI9UDE7dmFyIGtndD1bQixNZSxlZSxKLGdlLGllLFUsTixFLFEsbGUsV10sU2d0PVtaLFldO1FsLmhlbHBlcj17''@;'; put 'put ''fSxRbC5kb209e30sR3Ioa2d0LGZ1bmN0aW9uKGQpe0dyKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGQpLGZ1bmN0aW9uKGcpeyJfIiE9PWcuY2hhckF0KDApJiYoUWwuaGVscGVyW2ddPWRbZ10pfSl9KSxHcihTZ3QsZnVuY3Rpb24oZCl7R3IoT2JqZWN0LmdldE93blByb3BlcnR5TmFt''@;'; put 'put ''ZXMoZCksZnVuY3Rpb24oZyl7Il8iIT09Zy5jaGFyQXQoMCkmJihRbC5kb21bZ109ZFtnXSl9KX0pLFFsLmNlbGxUeXBlcz1udWxsIT09KERtZT1RbC5jZWxsVHlwZXMpJiZ2b2lkIDAhPT1EbWU/RG1lOnt9LEdyKFJKZSgpLGZ1bmN0aW9uKGQpe1FsLmNlbGxUeXBlc1tkXT1HZWUoZCl9KSxR''@;'; put 'put ''bC5jZWxsVHlwZXMucmVnaXN0ZXJDZWxsVHlwZT15OCxRbC5jZWxsVHlwZXMuZ2V0Q2VsbFR5cGU9R2VlLFFsLmVkaXRvcnM9bnVsbCE9PShMbWU9UWwuZWRpdG9ycykmJnZvaWQgMCE9PUxtZT9MbWU6e30sR3IoRXplKCksZnVuY3Rpb24oZCl7UWwuZWRpdG9yc1siIi5jb25jYXQodGQoZCks''@;'; put 'put ''IkVkaXRvciIpXT1GX2UoZCl9KSxRbC5lZGl0b3JzLnJlZ2lzdGVyRWRpdG9yPW5kLFFsLmVkaXRvcnMuZ2V0RWRpdG9yPUZfZSxRbC5yZW5kZXJlcnM9bnVsbCE9PShPbWU9UWwucmVuZGVyZXJzKSYmdm9pZCAwIT09T21lP09tZTp7fSxHcihWR2UoKSxmdW5jdGlvbihkKXt2YXIgZz1uZGUo''@;'; put 'put ''ZCk7ImJhc2UiPT09ZCYmKFFsLnJlbmRlcmVycy5jZWxsRGVjb3JhdG9yPWcpLFFsLnJlbmRlcmVyc1siIi5jb25jYXQodGQoZCksIlJlbmRlcmVyIildPWd9KSxRbC5yZW5kZXJlcnMucmVnaXN0ZXJSZW5kZXJlcj1FZyxRbC5yZW5kZXJlcnMuZ2V0UmVuZGVyZXI9bmRlLFFsLnZhbGlkYXRv''@;'; put 'put ''cnM9bnVsbCE9PShSbWU9UWwudmFsaWRhdG9ycykmJnZvaWQgMCE9PVJtZT9SbWU6e30sR3IoekdlKCksZnVuY3Rpb24oZCl7UWwudmFsaWRhdG9yc1siIi5jb25jYXQodGQoZCksIlZhbGlkYXRvciIpXT1yZGUoZCl9KSxRbC52YWxpZGF0b3JzLnJlZ2lzdGVyVmFsaWRhdG9yPURPLFFsLnZh''@;'; put 'put ''bGlkYXRvcnMuZ2V0VmFsaWRhdG9yPXJkZSxRbC5wbHVnaW5zPW51bGwhPT0oQm1lPVFsLnBsdWdpbnMpJiZ2b2lkIDAhPT1CbWU/Qm1lOnt9LEdyKHRkZSgpLGZ1bmN0aW9uKGQpe1FsLnBsdWdpbnNbZF09bXooZCl9KSxRbC5wbHVnaW5zWyIiLmNvbmNhdCh0ZChHcy5QTFVHSU5fS0VZKSwi''@;'; put 'put ''UGx1Z2luIildPUdzLFFsLnBsdWdpbnMucmVnaXN0ZXJQbHVnaW49THMsUWwucGx1Z2lucy5nZXRQbHVnaW49bXo7Y29uc3QgTWd0PVFsLFhMZT0oZCxnLGgpPT57Zm9yKGxldCB2IG9mIGQpe2NvbnN0IHk9Zy5maW5kKEk9PkkuZGF0YT09PXYuTkFNRSksQz1oLnZhcnNbdi5OQU1FXTtDJiYo''@;'; put 'put ''di5UWVBFPVsiREFURSIsIkRBVEVUSU1FIiwiVElNRSJdLmluY2x1ZGVzKHYuRERUWVBFKT8ibnVtIjpDLnR5cGUpLHkmJnYuREVTQyYmKHkuZGVzYz12LkRFU0MpLHkmJkMubGVuZ3RoJiYoeS5sZW5ndGg9cGFyc2VJbnQoQy5sZW5ndGgpKSx5JiZ2LkNMU19SVUxFJiYoeS5jbHNSdWxlPXYu''@;'; put 'put ''Q0xTX1JVTEUpfXJldHVybiBnfTtmdW5jdGlvbiBQbWUoZCxnKXtpZihudWxsPT1kfHwhaXNOYU4oZCkmJmlzRmluaXRlKGQpKXJldHVybiBnJiZnKCEwKSwhMDtjb25zdCBoPSgwLEl3LmlzU3BlY2lhbE1pc3NpbmcpKGQpO3JldHVybiBnJiZnKGgpLGh9Y29uc3QgS0xlPXtDQVNFOihkLGcp''@;'; put 'put ''PT57c3dpdGNoKGcpe2Nhc2UiVVBDQVNFIjpyZXR1cm4hIVt2b2lkIDAsbnVsbF0uaW5jbHVkZXMoZCl8fCJzdHJpbmciPT10eXBlb2YgZCYmZC50b1N0cmluZygpPT09ZC50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7Y2FzZSJMT1dDQVNFIjpyZXR1cm4hIVt2b2lkIDAsbnVsbF0uaW5jbHVk''@;'; put 'put ''ZXMoZCl8fCJzdHJpbmciPT10eXBlb2YgZCYmZC50b1N0cmluZygpPT09ZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl9cmV0dXJuITB9LE1JTlZBTDooZCxnKT0+e2NvbnN0IGg9UG1lKGQpLHY9cGFyc2VGbG9hdChkKTtyZXR1cm4oIWh8fCFpc05hTih2KSkmJnY+PU51bWJlcihnLnRvU3Ry''@;'; put 'put ''aW5nKCkpfSxNQVhWQUw6KGQsZyk9Pntjb25zdCBoPVBtZShkKSx2PXBhcnNlRmxvYXQoZCk7cmV0dXJuISghaHx8IWlzTmFOKHYpKXx8djw9TnVtYmVyKGcudG9TdHJpbmcoKSl9LE5PVE5VTEw6KGQsZyk9Pm51bGwhPWQmJmQudG9TdHJpbmcoKS5sZW5ndGg+MH07Y2xhc3MgSWd0e2NvbnN0''@;'; put 'put ''cnVjdG9yKGcsaCx2LHksQyxJKXt0aGlzLnJ1bGVzPVtdLHRoaXMuZHFydWxlcz1bXSx0aGlzLmRxZGF0YT1bXSx0aGlzLmhpZGRlbkNvbHVtbnM9W10sdGhpcy5wcmltYXJ5S2V5cz1bXSx0aGlzLmV4ZWN1dGVIb3RWYWxpZGF0b3I9KGosY2UsX2UpPT57Y29uc3QgUmU9T2JqZWN0LmFzc2ln''@;'; put 'put ''bihPYmplY3QuYXNzaWduKHt9LGopLHt2YWxpZGF0b3I6dm9pZCAwLGNvcnJlY3RGb3JtYXQ6ITEscm93OjAsY29sOjAsaW5zdGFuY2U6bmV3IE1ndChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx7fSksdmlzdWFsUm93OjAsdmlzdWFsQ29sOjAscHJvcDowfSk7bnVsbD09Y2UmJihj''@;'; put 'put ''ZT0iIiksaiYmai52YWxpZGF0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBqLnZhbGlkYXRvcj9qLnZhbGlkYXRvci5jYWxsKFJlLGNlLE5lPT57X2UmJl9lKE5lKX0pOl9lJiZfZSghMSl9LHRoaXMuc2FzcGFyYW1zPWcsdGhpcy5ob3RJbnN0YW5jZT1JLHRoaXMucnVsZXM9KGQ9Pnt0cnl7cmV0''@;'; put 'put ''dXJuIEpTT04ucGFyc2UoYFske2R9XWApfWNhdGNoKGcpe3JldHVybltdfX0pKGcuQ09MVFlQRSksdGhpcy5ydWxlcz1YTGUodix0aGlzLnJ1bGVzLGgpLHRoaXMuZHFydWxlcz15LHRoaXMuZHFkYXRhPUMsdGhpcy5wcmltYXJ5S2V5cz1nLlBLLnNwbGl0KCIgIiksdGhpcy51cGRhdGVEcURh''@;'; put 'put ''dGEoKSx0aGlzLnNldHVwVmFsaWRhdGlvbnMoKX1nZXRSdWxlcygpe3JldHVybiB0aGlzLnJ1bGVzfWdldFJ1bGUoZyl7Y29uc3QgaD10aGlzLmdldFJ1bGVJbmRleChnKTtyZXR1cm4gdGhpcy5ydWxlc1toXX1nZXRIaWRkZW5Db2x1bW5zKCl7cmV0dXJuIHRoaXMuaGlkZGVuQ29sdW1uc311''@;'; put 'put ''cGRhdGVSdWxlKGcsaCl7bGV0IHY9dGhpcy5nZXRSdWxlSW5kZXgoZyk7dGhpcy5ydWxlc1t2XT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5ydWxlc1t2XSksaCl9cmVtb3ZlUnVsZShnKXtjb25zdCBoPXRoaXMuZ2V0UnVsZUluZGV4KGcpO3RoaXMucnVsZXMuc3BsaWNl''@;'; put 'put ''KGgsMSl9Z2V0RHFEZXRhaWxzKGcpe3JldHVybiBnP3RoaXMuZHFydWxlcy5maWx0ZXIoaD0+aC5CQVNFX0NPTD09PWcpOnRoaXMuZHFydWxlc31pc0RxQ29sKGcpe3JldHVybiEhdGhpcy5kcXJ1bGVzLmZpbmQoaD0+aC5CQVNFX0NPTD09PWcpfWhhc0RxUnVsZXMoZyxoLHY9ITEpe3JldHVy''@;'; put 'put ''biB2P3RoaXMuZHFydWxlcy5maWx0ZXIoeT0+eS5CQVNFX0NPTD09PWcmJmguaW5jbHVkZXMoeS5SVUxFX1RZUEUpKS5sZW5ndGg9PT1oLmxlbmd0aDohIXRoaXMuZHFydWxlcy5maW5kKHk9PnkuQkFTRV9DT0w9PT1nJiZoLmluY2x1ZGVzKHkuUlVMRV9UWVBFKSl9Z2V0RHFEcm9wZG93blNv''@;'; put 'put ''dXJjZShnKXtsZXQgaD1bXTtyZXR1cm4gdGhpcy5kcXJ1bGVzLmZvckVhY2godj0+e3YuQkFTRV9DT0wudG9TdHJpbmcoKT09PWcuZGF0YSYmZy5kYXRhLnRvU3RyaW5nKCkmJlsiSEFSRFNFTEVDVCIsIlNPRlRTRUxFQ1QiLCJIQVJEU0VMRUNUX0hPT0siLCJTT0ZUU0VMRUNUX0hPT0siXS5p''@;'; put 'put ''bmNsdWRlcyh2LlJVTEVfVFlQRS50b1N0cmluZygpKSYmdGhpcy5kcWRhdGEuZmlsdGVyKHk9PnkuQkFTRV9DT0w9PT12LkJBU0VfQ09MKS5mb3JFYWNoKHk9PntoLnB1c2goZy50eXBlJiYibnVtZXJpYyI9PT1nLnR5cGU/TnVtYmVyKHkuUlVMRV9EQVRBKTp5LlJVTEVfREFUQSl9KX0pLGh9''@;'; put 'put ''dXBkYXRlRHFEYXRhKCl7dGhpcy5kcWRhdGEubGVuZ3RoPjAmJihkPT57Y29uc3QgZz1bXTtyZXR1cm4gdGhpcy5kcWRhdGEuZm9yRWFjaChoPT57Zy5pbmNsdWRlcyhoLkJBU0VfQ09MKXx8Zy5wdXNoKGguQkFTRV9DT0wpfSksZ30pKCkuZm9yRWFjaChoPT57bGV0IHY9ITE7dGhpcy5kcXJ1''@;'; put 'put ''bGVzLmxlbmd0aD4wJiZ0aGlzLmRxcnVsZXMuZm9yRWFjaCh5PT57eS5CQVNFX0NPTD09PWgmJigiU09GVFNFTEVDVCI9PT15LlJVTEVfVFlQRXx8IkhBUkRTRUxFQ1QiPT09eS5SVUxFX1RZUEUpJiYodj0hMCl9KSx2fHx0aGlzLmRxcnVsZXMucHVzaCh7QkFTRV9DT0w6aCxSVUxFX1RZUEU6''@;'; put 'put ''IlNPRlRTRUxFQ1QiLFJVTEVfVkFMVUU6aCxYOjF9KX0pfXNldHVwVmFsaWRhdGlvbnMoKXt2YXIgZztmb3IobGV0IGg9MDtoPHRoaXMucnVsZXMubGVuZ3RoO2grKyl7Y29uc3Qgdj10aGlzLnJ1bGVzW2hdLmRhdGF8fCIiO2lmKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09''@;'; put 'put ''dil7aWYodGhpcy5pc0RxQ29sKHYpKXtsZXQgQz10aGlzLmdldERxRHJvcGRvd25Tb3VyY2UodGhpcy5ydWxlc1toXSk7Qy5sZW5ndGg+MCYmKHRoaXMucnVsZXNbaF0uc291cmNlPUMsdGhpcy5ydWxlc1toXS50eXBlPSJhdXRvY29tcGxldGUiLHRoaXMucnVsZXNbaF0uZmlsdGVyPSExKSx0''@;'; put 'put ''aGlzLmhhc0RxUnVsZXModixbIlNPRlRTRUxFQ1QiXSkmJih0aGlzLnJ1bGVzW2hdLnN0cmljdD0hMSksdGhpcy5oYXNEcVJ1bGVzKHYsWyJIQVJEU0VMRUNUIl0pJiYodGhpcy5ydWxlc1toXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyh2LFsiU09GVFNFTEVDVF9IT09LIl0pJiYodGhp''@;'; put 'put ''cy5ydWxlc1toXS5zdHJpY3Q9ITEpLHRoaXMuaGFzRHFSdWxlcyh2LFsiSEFSRFNFTEVDVF9IT09LIl0pJiYodGhpcy5ydWxlc1toXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyh2LFsiTk9UTlVMTCJdKSYmKHRoaXMucnVsZXNbaF0uYWxsb3dFbXB0eT0hMSl9InRydWUiPT09dGhpcy5y''@;'; put 'put ''dWxlc1toXS5jb3JyZWN0Rm9ybWF0JiYodGhpcy5ydWxlc1toXS5jb3JyZWN0Rm9ybWF0PSEwKSx0aGlzLnNldERlZmF1bHRWYWxpZGF0b3IodGhpcyxoKSx0aGlzLnNldENvbHVtbkxldmVsU2VjdXJpdHkoaCl9fW51bGwhPT0oZz10aGlzLnNhc3BhcmFtcykmJnZvaWQgMCE9PWcmJmcuQ0xT''@;'; put 'put ''X0ZMQUcmJnRoaXMuaGlkZGVuQ29sdW1ucy5wdXNoKDApfXNldERlZmF1bHRWYWxpZGF0b3IoZyxoKXt0aGlzLnJ1bGVzW2hdLnZhbGlkYXRvcj1mdW5jdGlvbih2LHkpe3ZhciBDO2NvbnN0IEk9bnVsbD09PShDPWcucnVsZXNbaF0uZGF0YSl8fHZvaWQgMD09PUM/dm9pZCAwOkMudG9TdHJp''@;'; put 'put ''bmcoKSxqPWcucnVsZXNbaF0udHlwZXx8IiI7bGV0IGNlPW51bGw7cmV0dXJuImF1dG9jb21wbGV0ZSIhPT10aGlzLmVkaXRvcnx8KGcuZ2V0SGFuZHNvbnRhYmxlVmFsaWRhdG9yKCJhdXRvY29tcGxldGUiKS5jYWxsKHRoaXMsdixfZT0+e2NlPV9lfSksY2UpPyhnLmdldEhhbmRzb250YWJs''@;'; put 'put ''ZVZhbGlkYXRvcihqKS5jYWxsKHRoaXMsdixfZT0+e2NlPV9lfSksY2U/Zy5sZW5ndGhDaGVjayh2LGcucnVsZXNbaF0ubGVuZ3RoLGopP2cuaXNEcUNvbChJfHwiIikmJiEoKGQsZyk9Pntmb3IobGV0IGggb2YgZClpZihLTGVbaC5SVUxFX1RZUEVdJiYhS0xlW2guUlVMRV9UWVBFXShnLGgu''@;'; put 'put ''UlVMRV9WQUxVRSkpcmV0dXJuIGNvbnNvbGUud2FybihgRFEgSW52YWxpZCBSZWFzb246ICR7aC5SVUxFX1RZUEV9XG5WYWx1ZTogJHtnfSlcblJ1bGUgVmFsdWU6ICR7aC5SVUxFX1ZBTFVFLmxlbmd0aD4wJiYiICIhPT1oLlJVTEVfVkFMVUU/aC5SVUxFX1ZBTFVFOiJOb3QgZGVmaW5lZCJ9''@;'; put 'put ''YCksITE7cmV0dXJuITB9KShnLmdldERxRGV0YWlscyhJfHwiIiksdik/KGNvbnNvbGUud2FybihgRFEgVmFsaWRhdGlvbiAtIGludmFsaWQgKFZhbHVlOiAke3Z9KWApLHZvaWQgeSghMSkpOnZvaWQgeSghMCk6KGNvbnNvbGUud2FybihgTGVuZ3RoIFZhbGlkYXRpb24gLSBpbnZhbGlkIChW''@;'; put 'put ''YWx1ZTogJHt2fSlgKSx2b2lkIHkoITEpKTooY29uc29sZS53YXJuKGBIT1QgTmF0aXZlIFZhbGlkYXRpb24gLSBpbnZhbGlkIChWYWx1ZTogJHt2fSlgKSx2b2lkIHkoITEpKSk6KGNvbnNvbGUud2FybihgSE9UIE5hdGl2ZSBWYWxpZGF0aW9uIChhdXRvY29tcGxldGUpIC0gaW52YWxpZCAo''@;'; put 'put ''VmFsdWU6ICR7dn0pYCksdm9pZCB5KCExKSl9fWxlbmd0aENoZWNrKGcsaCx2KXtpZigoMCxJdy5pc1NwZWNpYWxNaXNzaW5nKShnKXx8bnVsbD09Z3x8bnVsbD09aClyZXR1cm4hMDtpZigibnVtZXJpYyI9PT12KXtpZig4PT09aClyZXR1cm4hMDtpZihoPDN8fGg+OHx8IU51bWJlci5pc0lu''@;'; put 'put ''dGVnZXIoaCkpcmV0dXJuIGNvbnNvbGUud2FybigiaW52YWxpZCBsZW5ndGggZnJvbSBTQVMsIHJ1bGUgbGVuZ3RoIGNhbiBvbmx5IGJlIGFuIGludGVnZXIgYmV0d2VlbiAzLTgiKSwhMTtjb25zdCB5PU51bWJlcihnKT09PWcmJmclMSE9MDtpZihoPDgmJnkpcmV0dXJuIGNvbnNvbGUud2Fy''@;'; put 'put ''bigicmVkdWNlZCBsZW5ndGggbnVtZXJpY3MgY2Fubm90IGNvbnRhaW4gZGVjaW1hbHMgZWxzZSBwcmVjaXNpb24gd2lsbCBiZSBhZmZlY3RlZCIpLCExO3N3aXRjaChoKXtjYXNlIDM6cmV0dXJuIGc8PTgxOTI7Y2FzZSA0OnJldHVybiBnPD0yMDk3MTUyO2Nhc2UgNTpyZXR1cm4gZzw9NTM2''@;'; put 'put ''ODcwOTEyO2Nhc2UgNjpyZXR1cm4gZzw9MTM3NDM4OTUzNDcyO2Nhc2UgNzpyZXR1cm4gZzw9MzUxODQzNzIwODg4MzJ9fXJldHVybiBnLnRvU3RyaW5nKCkubGVuZ3RoPD1ofWdldEhhbmRzb250YWJsZVZhbGlkYXRvcihnKXtzd2l0Y2goZyl7Y2FzZSJhdXRvY29tcGxldGUiOnJldHVybiBI''@;'; put 'put ''ejtjYXNlIm51bWVyaWMiOnJldHVybiBQbWU7Y2FzZSJkYXRlIjpyZXR1cm4geHRlO2Nhc2UidGltZSI6cmV0dXJuIFR0ZTtkZWZhdWx0OnJldHVybihoLHYpPT52P3YoITApOm51bGx9fWdldFJ1bGVJbmRleChnKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGc/Zzp0aGlzLnJ1bGVzLmZpbmRJ''@;'; put 'put ''bmRleChoPT5oLmRhdGE9PT1nKX1zZXRDb2x1bW5MZXZlbFNlY3VyaXR5KGcpe3ZhciBoO2lmKG51bGw9PT0oaD10aGlzLnNhc3BhcmFtcyl8fHZvaWQgMD09PWh8fCFoLkNMU19GTEFHKXJldHVybjtjb25zdCB2PXRoaXMucnVsZXNbZ107aWYodGhpcy5wcmltYXJ5S2V5cy5pbmNsdWRlcyh2''@;'; put 'put ''LmRhdGEpJiYodi5jbHNSdWxlPSJSRUFEIiksIkhJREUiPT09di5jbHNSdWxlJiZ0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChnKSwiUkVBRCI9PT12LmNsc1J1bGUmJih2LnJlYWRPbmx5PSEwKSwiRURJVCI9PT12LmNsc1J1bGUpe3YucmVhZE9ubHk9ITE7Y29uc3QgeT10aGlzLmhpZGRlbkNv''@;'; put 'put ''bHVtbnMuaW5kZXhPZihnKTt0aGlzLmhpZGRlbkNvbHVtbnMuc3BsaWNlKHksMSl9fX1jb25zdCB6bmU9e251bWVyaWM6MCxkZWZhdWx0OiIifSxEZ3Q9KGQsZyk9PmQ/ImF1dG9jb21wbGV0ZSI9PT1kP2cmJmcuc291cmNlP2cuc291cmNlWzBdOltdOnpuZS5oYXNPd25Qcm9wZXJ0eShkKT96''@;'; put 'put ''bmVbZF06em5lLmRlZmF1bHQ6em5lLmRlZmF1bHQsJExlPWQ9PntsZXQgZz0oIjAiK2QuZ2V0VVRDSG91cnMoKSkuc2xpY2UoLTIpKyI6IjtyZXR1cm4gZz1nKygiMCIrZC5nZXRVVENNaW51dGVzKCkpLnNsaWNlKC0yKSsiOiIsZys9KCIwIitkLmdldFVUQ1NlY29uZHMoKSkuc2xpY2UoLTIp''@;'; put 'put ''LGd9LEZtZT1kPT5kLmdldEZ1bGxZZWFyKCkrIi0iKygiMCIrKGQuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpKyItIisoIjAiK2QuZ2V0RGF0ZSgpKS5zbGljZSgtMiksSG1lPWQ9Pm5ldyBEYXRlKE1hdGgucm91bmQoODY0MDAqKGQtMjU1NjkpKjFlMykpLFJndD0oZCxnKT0+e2NvbnN0IGg9''@;'; put 'put ''W10sdj1bXTtyZXR1cm4gZy5mb3JFYWNoKHk9PnstMT09PWQuaW5kZXhPZih5KT9oLnB1c2goeSk6di5wdXNoKHkpfSksW2gsdl19LEJndD0oZCxnLGgsdix5LEMsSSk9PihnLmlubmVySFRNTD1gJHtDP0MudG9TdHJpbmcoKToiIn0gPGNkcy1pY29uIHNoYXBlPSJleGNsYW1hdGlvbi1jaXJj''@;'; put 'put ''bGUiIHN0YXR1cz0id2FybmluZyI+PC9jZHMtaWNvbj5gLGcpLE5tZT0oZCxnLGgsdix5LEMsSSk9PihnLmlubmVySFRNTD1DfHwiIixnKSxQZ3Q9KGQsZyxoLHYseSxDLEkpPT4oZy5pbm5lckhUTUw9YCR7Qz9DLnRvU3RyaW5nKCk6IiJ9IDxzcGFuIGNsYXNzPSJzcGlubmVyIHNwaW5uZXIt''@;'; put 'put ''c20gdmVydGljYWwtYWxpZ24tbWlkZGxlIj48L3NwYW4+YCxnKSxWbWU9ZD0+ISEvXi17MCwxfVxkKyQvLnRlc3QoZCkscUxlPWQ9PiEhL15cZCtcLlxkKyQvLnRlc3QoZCksUE09dm9pZCAwLEhndD1bImVuLUdCIixbWyJhIiwicCJdLFsiYW0iLCJwbSJdLFBNXSxbWyJhbSIsInBtIl0sUE0s''@;'; put 'put ''UE1dLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJU''@;'; put 'put ''dSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLFBNLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwdCIsIk9jdCIsIk5vdiIsIkRlYyJdLFsiSmFudWFyeSIs''@;'; put 'put ''IkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXV0sUE0sW1siQiIsIkEiXSxbIkJDIiwiQUQiXSxbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdXSwxLFs2''@;'; put 'put ''LDBdLFsiZGQvTU0veSIsImQgTU1NIHkiLCJkIE1NTU0geSIsIkVFRUUsIGQgTU1NTSB5Il0sWyJISDptbSIsIkhIOm1tOnNzIiwiSEg6bW06c3MgeiIsIkhIOm1tOnNzIHp6enoiXSxbInsxfSwgezB9IixQTSwiezF9ICdhdCcgezB9IixQTV0sWyIuIiwiLCIsIjsiLCIlIiwiKyIsIi0iLCJF''@;'; put 'put ''IiwiXHhkNyIsIlx1MjAzMCIsIlx1MjIxZSIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIlx4YTQjLCMjMC4wMCIsIiNFMCJdLCJHQlAiLCJceGEzIiwiQnJpdGlzaCBQb3VuZCIse0pQWTpbIkpQXHhhNSIsIlx4YTUiXSxVU0Q6WyJVUyQiLCIkIl19LCJsdHIiLGZ1bmN0aW9u''@;'; put 'put ''IEZndChkKXtjb25zdCBoPU1hdGguZmxvb3IoTWF0aC5hYnMoZCkpLHY9ZC50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwuPy8sIiIpLmxlbmd0aDtyZXR1cm4gMT09PWgmJjA9PT12PzE6NX1dO2xldCBlT2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMudGVtcGxhdGVS''@;'; put 'put ''ZWY9aCx0aGlzLnZjUmVmPXYsdGhpcy5jb250ZXh0PXskaW1wbGljaXQ6bnVsbCxuZ1ZhcjpudWxsfSx0aGlzLmhhc1ZpZXc9ITF9c2V0IG5nVmFyKGgpe3RoaXMuY29udGV4dC4kaW1wbGljaXQ9dGhpcy5jb250ZXh0Lm5nVmFyPWgsdGhpcy5oYXNWaWV3fHwodGhpcy52Y1JlZi5jcmVhdGVF''@;'; put 'put ''bWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZix0aGlzLmNvbnRleHQpLHRoaXMuaGFzVmlldz0hMCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFZuKSxLdChNcikpfSxkLlx1MDI3NWRpcj1ZaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJu''@;'; put 'put ''Z1ZhciIsIiJdXSxpbnB1dHM6e25nVmFyOiJuZ1ZhciJ9fSksZH0pKCk7Y29uc3QgTmd0PVsiaW5wdXQiXSxWZ3Q9ZnVuY3Rpb24oZCxnKXtyZXR1cm57IndpZHRoLnB4IjpkLCJtYXgtaGVpZ2h0LnB4IjpnfX0samd0PVsiKiJdO2xldCBaZ3Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvciho''@;'; put 'put ''KXt0aGlzLmNkcj1oLHRoaXMuaW5wdXRJZD0iIix0aGlzLnBsYWNlaG9sZGVyPSIiLHRoaXMudmFsdWU9IiIsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnR5cGU9InRleHQiLHRoaXMuYXV0b2NvbXBsZXRlPSJvZmYiLHRoaXMudGFiaW5kZXg9IiIsdGhpcy5lbWl0T25seVNlbGVjdGVkPSExLHRo''@;'; put 'put ''aXMub25JbnB1dEtleWRvd249bmV3IGZuLHRoaXMub25JbnB1dENoYW5nZT1uZXcgZm4sdGhpcy52YWx1ZUNoYW5nZT1uZXcgZm4sdGhpcy5kYXRhbGlzdE9wZW49ITEsdGhpcy5pbnB1dEZvY3VzZWQ9ITEsdGhpcy5pbnB1dENsaWVudFJlY3Q9e30sdGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9z''@;'; put 'put ''ZT0hMX1uZ09uSW5pdCgpe31uZ0FmdGVyVmlld0luaXQoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9LDUwMCl9b25JbnB1dEZpcmVkKGgsdil7dGhpcy5kYXRhbGlzdE9wZW49ITAsdGhpcy51bnNlbGVjdEFsbE9wdGlvbnMoKSx0aGlzLmZpbHRlck9w''@;'; put 'put ''dGlvbnNMaXN0KCksKCF0aGlzLmVtaXRPbmx5U2VsZWN0ZWR8fHYpJiYodGhpcy5vbklucHV0Q2hhbmdlLmVtaXQoe3RhcmdldDp7dmFsdWU6dGhpcy52YWx1ZX19KSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSkpfW9uSW5wdXRDbGljayhoKXt0aGlzLmRhdGFsaXN0T3Blbj0h''@;'; put 'put ''MH1yZXNldERhdGFsaXN0RmlsdGVyKCl7dGhpcy5maWx0ZXJPcHRpb25zTGlzdCghMCl9b25JbnB1dEZvY3VzaW4oaCl7dGhpcy5pbnB1dEZvY3VzZWQ9ITB9b25JbnB1dEZvY3Vzb3V0KGgpe3RoaXMuaW5wdXRGb2N1c2VkPSExLHRoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9ZmlsdGVyT3B0''@;'; put 'put ''aW9uc0xpc3QoaCl7Y29uc3Qgdj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbmApO2ZvcihsZXQgeT0wO3k8di5sZW5ndGg7eSsrKXtjb25zdCBDPXZbeV07aWYoMD09PXRoaXMudmFsdWUubGVuZ3RoKXtDLmNsYXNzTGlzdC5yZW1v''@;'; put 'put ''dmUoImhpZGRlbiIpO2NvbnRpbnVlfWlmKGgpe0MuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Y29udGludWV9Y29uc3QgY2U9KEMuaW5uZXJUZXh0fHwiIikrKEMudmFsdWV8fCIiKTtudWxsIT1jZSYmY2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNl''@;'; put 'put ''KCkpP0MuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6Qy5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19c2V0VG9DbG9zZURhdGFsaXN0KCl7dGhpcy5kYXRhbGlzdENsb3NlVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZXx8KHRoaXMuZGF0YWxpc3RP''@;'; put 'put ''cGVuPSExLHRoaXMudW5zZWxlY3RBbGxPcHRpb25zKCksdGhpcy5yZXNldERhdGFsaXN0RmlsdGVyKCkpfSwxMDApfWNhbGN1bGF0ZUlucHV0UG9zaXRpb24oKXtjb25zdCBoPXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsdj1udWxsPT1oP3ZvaWQgMDpoLmdldEJvdW5kaW5nQ2xp''@;'; put 'put ''ZW50UmVjdCgpO3RoaXMuaW5wdXRDbGllbnRSZWN0PXt3aWR0aDp2LndpZHRoLGJvdHRvbTp2LmJvdHRvbX0sdGhpcy5pbm5lckhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHR9b25EYXRhTGlzdE1vdXNlRW50ZXIoaCl7dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZT0hMH1vbkRhdGFMaXN0TW91''@;'; put 'put ''c2VMZWF2ZShoKXt0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1vbkRhdGFMaXN0U2Nyb2xsKGgpe3RoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9b25EYXRhTGlzdENsaWNrKGgpe2NvbnN0IHY9aC50YXJnZXQ7aWYo''@;'; put 'put ''Ik9QVElPTiIhPT12LnRhZ05hbWUpcmV0dXJuO2xldCB5PXYuaW5uZXJUZXh0LEM9di52YWx1ZTsoeXx8QykmJihDfHwoQz15KSksQyYmKHRoaXMucHJldmVudERhdGFsaXN0Q2xvc2U9ITEsdGhpcy52YWx1ZT1DLHRoaXMub25JbnB1dEZpcmVkKG51bGwsITApLHRoaXMuc2V0VG9DbG9zZURh''@;'; put 'put ''dGFsaXN0KCkpfW9uTWFpbktleWRvd24oaCl7c3dpdGNoKGgua2V5KXtjYXNlIkFycm93VXAiOnRoaXMuZ2V0T3B0aW9uc01vdmVGb2N1cygidXAiKTticmVhaztjYXNlIkFycm93RG93biI6dGhpcy5nZXRPcHRpb25zTW92ZUZvY3VzKCJkb3duIik7YnJlYWs7Y2FzZSJFbnRlciI6dGhpcy5z''@;'; put 'put ''ZWxlY3RGb2N1c2VkT3B0aW9uKCk7YnJlYWs7Y2FzZSJFc2NhcGUiOnRoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9fXVuc2VsZWN0QWxsT3B0aW9ucygpe2NvbnN0IGg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb25gKTtmb3IobGV0''@;'; put 'put ''IHY9MDt2PGgubGVuZ3RoO3YrKyloW3ZdLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKX1zZWxlY3RGb2N1c2VkT3B0aW9uKCl7Y29uc3QgaD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbi5mb2N1c2VkYCk7aCYmdGhpcy5vbkRhdGFM''@;'; put 'put ''aXN0Q2xpY2soe3RhcmdldDpofSksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1nZXRPcHRpb25zTW92ZUZvY3VzKGgpe2NvbnN0IHY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb246bm90KC5oaWRkZW4pYCk7bGV0IHk9MDtmb3Io''@;'; put 'put ''bGV0IEM9MDtDPHYubGVuZ3RoO0MrKyl7Y29uc3QgST12W0NdO2lmKEkuY2xhc3NMaXN0LmNvbnRhaW5zKCJmb2N1c2VkIikpe3k9ImRvd24iPT09aD9DKzE6Qy0xLHk8MCYmKHk9di5sZW5ndGgtMSkseT52Lmxlbmd0aC0xJiYoeT0wKSxJLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKTti''@;'; put 'put ''cmVha319dlt5XS5jbGFzc0xpc3QuYWRkKCJmb2N1c2VkIil9b25SZXNpemUoaCl7dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0''@;'; put 'put ''b3JzOltbImFwcC1hdXRvY29tcGxldGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZnMChOZ3QsNSksMiZoKXtsZXQgeTt6aSh5PUFpKCkpJiYodi5pbnB1dEVsZW1lbnQ9eS5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJyZXNpemUiLGZ1''@;'; put 'put ''bmN0aW9uKEMpe3JldHVybiB2Lm9uUmVzaXplKEMpfSwwLFhiKX0saW5wdXRzOntpbnB1dElkOiJpbnB1dElkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHZhbHVlOiJ2YWx1ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIix0eXBlOiJ0eXBlIixhdXRvY29tcGxldGU6ImF1dG9jb21wbGV0ZSIs''@;'; put 'put ''dGFiaW5kZXg6InRhYmluZGV4IixlbWl0T25seVNlbGVjdGVkOiJlbWl0T25seVNlbGVjdGVkIn0sb3V0cHV0czp7b25JbnB1dEtleWRvd246Im9uSW5wdXRLZXlkb3duIixvbklucHV0Q2hhbmdlOiJvbklucHV0Q2hhbmdlIix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxuZ0NvbnRlbnRT''@;'; put 'put ''ZWxlY3RvcnM6amd0LGRlY2xzOjYsdmFyczoxNCxjb25zdHM6W1sxLCJhdXRvY29tcGxldGUtd3JhcHBlciIsMywia2V5ZG93biJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLCJ0YWJpbmRleCIsIjAiLDEsImlucHV0LXZhbCIsMywiaWQiLCJw''@;'; put 'put ''bGFjZWhvbGRlciIsIm5nTW9kZWwiLCJkaXNhYmxlZCIsIm5nTW9kZWxDaGFuZ2UiLCJjbGljayIsImZvY3VzIiwiZm9jdXNvdXQiXSxbImlucHV0IiwiIl0sWzEsIm92ZXJsYXkiXSxbMSwiZGF0YWxpc3QiLDMsIm5nU3R5bGUiLCJpZCIsImNsaWNrIiwibW91c2VlbnRlciIsIm1vdXNlbGVh''@;'; put 'put ''dmUiLCJzY3JvbGwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJigkMCgpLHR0KDAsImRpdiIsMCksWm4oImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uTWFpbktleWRvd24oQyl9KSx0dCgxLCJpbnB1dCIsMSwyKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7''@;'; put 'put ''cmV0dXJuIHYudmFsdWU9Q30pKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25JbnB1dENsaWNrKEMpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uSW5wdXRGaXJlZChDKX0pKCJmb2N1cyIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25JbnB1dEZvY3VzaW4o''@;'; put 'put ''Qyl9KSgiZm9jdXNvdXQiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uSW5wdXRGb2N1c291dChDKX0pLGl0KCksYnIoMywiZGl2IiwzKSx0dCg0LCJkaXYiLDQpLFpuKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EYXRhTGlzdENsaWNrKEMpfSkoIm1vdXNlZW50ZXIiLGZ1bmN0aW9u''@;'; put 'put ''KEMpe3JldHVybiB2Lm9uRGF0YUxpc3RNb3VzZUVudGVyKEMpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uRGF0YUxpc3RNb3VzZUxlYXZlKEMpfSkoInNjcm9sbCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EYXRhTGlzdFNjcm9sbChDKX0pLFZpKDUpLGl0KCkoKSks''@;'; put 'put ''MiZoJiYoc3QoMSkseHQoImlkIix2LmlucHV0SWQpKCJwbGFjZWhvbGRlciIsdi5wbGFjZWhvbGRlcikoIm5nTW9kZWwiLHYudmFsdWUpKCJkaXNhYmxlZCIsdi5kaXNhYmxlZCksR2koImxpc3QiLCJkYXRhbGlzdF8iK3YuaW5wdXRJZCksc3QoMiksSGkoImhpZGRlbiIsIXYuZGF0YWxpc3RP''@;'; put 'put ''cGVuKSxzdCgxKSxIaSgiaGlkZGVuIiwhdi5kYXRhbGlzdE9wZW4pLHh0KCJuZ1N0eWxlIixCZCgxMSxWZ3Qsdi5pbnB1dENsaWVudFJlY3Qud2lkdGgsdi5pbm5lckhlaWdodCYmdi5pbnB1dENsaWVudFJlY3QuYm90dG9tP3YuaW5uZXJIZWlnaHQtdi5pbnB1dENsaWVudFJlY3QuYm90dG9t''@;'; put 'put ''OnZvaWQgMCkpKCJpZCIsImRhdGFsaXN0XyIrdi5pbnB1dElkKSl9LGRlcGVuZGVuY2llczpbTlcscDEsanMsX3NdLHN0eWxlczpbIi5pbnB1dC12YWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHg7YmFja2dyb3VuZDojZmJmOGY4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTk5''@;'; put 'put ''OTl9aW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7b3V0bGluZTpub25lfWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi10b3A6LTVweH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt0b3A6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6MTUwMH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtw''@;'; put 'put ''b3NpdGlvbjpmaXhlZDtiYWNrZ3JvdW5kOndoaXRlO2JveC1zaGFkb3c6MCAzcHggMTBweCAtMXB4ICMwMDAwMDAyYjtvdmVyZmxvdzphdXRvO3otaW5kZXg6MjAwMH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgICAgb3B0aW9ue3BhZGRpbmc6NXB4IDEwcHg7Y3Vyc29yOnBvaW50ZXJ9LmF1dG9jb21wbGV0ZS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAgIG9wdGlvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1ODgyMzUy''@;'; put 'put ''OTQpfS5hdXRvY29tcGxldGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgICBvcHRpb24uZm9jdXNlZHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1ODgyMzUyOTQpfSJdfSksZH0pKCksemd0PSgoKT0+e2NsYXNzIGR7dHJhbnNm''@;'; put 'put ''b3JtKGgsdil7aWYoInN0cmluZyI9PXR5cGVvZiBoJiZoLmxlbmd0aDwxKXJldHVybiBoO3N3aXRjaCh2KXtjYXNlImRhdGUiOnJldHVybiBrbChoLCJERE1NTVlZWVk6aGg6bW06c3MiKS5mb3JtYXQoIkREL01NL1lZWVkiKTtjYXNlInRpbWUiOntpZigic3RyaW5nIiE9dHlwZW9mIGgpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJFcnJvciBwYXJzaW5nIHRpbWUuIFZhbHVlIGlzIG5vdCBzdHJpbmcuIik7Y29uc3QgeT1wYXJzZUludChoLnNwbGl0KCI6IilbMF0pLEM9cGFyc2VJbnQoaC5zcGxpdCgiOiIpWzFdKSxJPXBhcnNlSW50KGguc3BsaXQoIjoiKVsyXSk7cmV0dXJuYCR7eTwxMD8iMCIr''@;'; put 'put ''eTp5fToke0M8MTA/IjAiK0M6Q306JHtJPDEwPyIwIitJOkl9YH19cmV0dXJuInN0cmluZyI9PXR5cGVvZiBoP2g6aC50b1N0cmluZygpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwaXBlPVdzKHtuYW1lOiJkYXRlVGltZUZvcm1h''@;'; put 'put ''dHRlciIsdHlwZTpkLHB1cmU6ITB9KSxkfSkoKTtjb25zdCBHZ3Q9WyJpbnB1dCJdO2Z1bmN0aW9uIFdndChkLGcpe2lmKDEmZCYmKHR0KDAsImxhYmVsIiwzKSxXdCgxKSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgxKSxqaShoLmxhYmVsKX19ZnVuY3Rpb24gWWd0KGQsZyl7aWYoMSZk''@;'; put 'put ''KXtjb25zdCBoPXlpKCk7TDAoMCksdHQoMSwiY2xyLWRhdGUtY29udGFpbmVyIikoMiwiaW5wdXQiLDQpLFpuKCJjbHJEYXRlQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLm9uRGF0ZUlucHV0RmlyZWQoeSkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBhKGgp''@;'; put 'put ''LGJ0KFV0KCkuaW5wdXRGb2N1c2VkPSEwKX0pKCJmb2N1c291dCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5vbkZvY3VzaW5JbnB1dCh5KSl9KSgibW91c2VvdmVyIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkub25JbnB1dE1vdXNlT3ZlcigpKX0pKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLFplKDMsImRhdGVUaW1lRm9ybWF0dGVyIiksaXQoKSgpLE8wKCl9aWYoMiZkKXtjb25z''@;'; put 'put ''dCBoPVV0KCk7c3QoMikseHQoImlkIixoLmlucHV0SWQpKCJwbGFjZWhvbGRlciIsSXQoMyw1LGgudGVtcCwiZGF0ZSIpKSgiY2xyRGF0ZSIsaC52YWx1ZSkoImRpc2FibGVkIixoLmRpc2FibGVkKSxHaSgibGlzdCIsImRhdGFsaXN0XyIraC5pbnB1dElkKX19ZnVuY3Rpb24gVWd0KGQsZyl7''@;'; put 'put ''aWYoMSZkKXtjb25zdCBoPXlpKCk7TDAoMCksdHQoMSwiaW5wdXQiLDUpLFpuKCJpbnB1dCIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5vbklucHV0RmlyZWQoeSkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuaW5wdXRGb2N1c2VkPSEwKX0pKCJm''@;'; put 'put ''b2N1c291dCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5vbkZvY3VzaW5JbnB1dCh5KSl9KSgibW91c2VvdmVyIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCku''@;'; put 'put ''b25JbnB1dE1vdXNlT3ZlcigpKX0pKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLGl0KCksTzAoKX1pZigyJmQpe2NvbnN0IGg9VXQoKTtzdCgxKSx4dCgidmFsdWUiLGgudmFsdWUpKCJpZCIsaC5pbnB1dElkKSgiZGlzYWJs''@;'; put 'put ''ZWQiLGguZGlzYWJsZWQpLEdpKCJsaXN0IiwiZGF0YWxpc3RfIitoLmlucHV0SWQpfX1mdW5jdGlvbiBRZ3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJhcHAtYXV0b2NvbXBsZXRlIiw2LDcpLFpuKCJvbklucHV0Q2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYSho''@;'; put 'put ''KSxidChVdCgpLm9uSW5wdXRGaXJlZCh5KSl9KSxWaSgzKSxpdCgpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoImlucHV0SWQiLGguaW5wdXRJZCkoInZhbHVlIiwobnVsbD09aC52YWx1ZT9udWxsOmgudmFsdWUudG9TdHJpbmcoKSl8fCIiKSgiZW1pdE9ubHlTZWxlY3Rl''@;'; put 'put ''ZCIsaC5lbWl0T25seVNlbGVjdGVkKSgiZGlzYWJsZWQiLGguZGlzYWJsZWQpfX1jb25zdCBKZ3Q9WyIqIl07bGV0IHRPZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5pbnB1dElkPSIiLHRoaXMudmFsdWU9IiIsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnR5cGU9InRleHQiLHRo''@;'; put 'put ''aXMuZGlzYWJsZVNvZnRzZWxlY3Q9ITEsdGhpcy5lbWl0T25seVNlbGVjdGVkPSExLHRoaXMudmFsdWVDaGFuZ2U9bmV3IGZuLHRoaXMub25JbnB1dEV2ZW50PW5ldyBmbix0aGlzLmZvY3VzaW5JbnB1dD1uZXcgZm4sdGhpcy50ZW1wPSIiLHRoaXMuaW5wdXRGb2N1c2VkPSExfW5nT25DaGFu''@;'; put 'put ''Z2VzKGgpe2gudmFsdWUmJmgudmFsdWUuY3VycmVudFZhbHVlIT09aC52YWx1ZS5wcmV2aW91c1ZhbHVlJiZ0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoaC52YWx1ZS5jdXJyZW50VmFsdWUpfW5nT25Jbml0KCl7fW9uSW5wdXRGaXJlZChoKXtjb25zdCB2PWgudGFyZ2V0LnZhbHVlO3RoaXMudGVt''@;'; put 'put ''cD12LHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KSx0aGlzLm9uSW5wdXRFdmVudC5lbWl0KGgpfW9uRGF0ZUlucHV0RmlyZWQoaCl7dGhpcy50ZW1wPWgsdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGgpLHRoaXMub25JbnB1dEV2ZW50LmVtaXQoaCl9b25JbnB1dE1vdXNlT3V0KCl7dGhpcy5kaXNh''@;'; put 'put ''YmxlU29mdHNlbGVjdHx8KHRoaXMudmFsdWU9dGhpcy50ZW1wLHRoaXMudGVtcD0iIil9b25JbnB1dE1vdXNlT3Zlcigpe3RoaXMuZGlzYWJsZVNvZnRzZWxlY3R8fCh0aGlzLnRlbXA9dGhpcy52YWx1ZT90aGlzLnZhbHVlOiIiLHRoaXMudmFsdWU9IiIpfW9uRm9jdXNpbklucHV0KGgpe3Ro''@;'; put 'put ''aXMuZm9jdXNpbklucHV0LmVtaXQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtc29mdC1zZWxlY3QiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZnMChH''@;'; put 'put ''Z3QsNSksMiZoKXtsZXQgeTt6aSh5PUFpKCkpJiYodi5pbnB1dEVsZW1lbnQ9eS5maXJzdCl9fSxpbnB1dHM6e2lucHV0SWQ6ImlucHV0SWQiLGxhYmVsOiJsYWJlbCIsdmFsdWU6InZhbHVlIixkaXNhYmxlZDoiZGlzYWJsZWQiLHR5cGU6InR5cGUiLGRpc2FibGVTb2Z0c2VsZWN0OiJkaXNh''@;'; put 'put ''YmxlU29mdHNlbGVjdCIsZW1pdE9ubHlTZWxlY3RlZDoiZW1pdE9ubHlTZWxlY3RlZCJ9LG91dHB1dHM6e3ZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSIsb25JbnB1dEV2ZW50OiJvbklucHV0RXZlbnQiLGZvY3VzaW5JbnB1dDoiZm9jdXNpbklucHV0In0sZmVhdHVyZXM6W2QyXSxuZ0NvbnRl''@;'; put 'put ''bnRTZWxlY3RvcnM6Smd0LGRlY2xzOjUsdmFyczo1LGNvbnN0czpbWyJjbGFzcyIsImNsci1jb250cm9sLWxhYmVsIiw0LCJuZ0lmIl0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJjbHItY29udHJvbC1sYWJlbCJdLFsidHlwZSIsImRhdGUiLCJjbHJEYXRlIiwiIiwz''@;'; put 'put ''LCJpZCIsInBsYWNlaG9sZGVyIiwiY2xyRGF0ZSIsImRpc2FibGVkIiwiY2xyRGF0ZUNoYW5nZSIsImZvY3VzIiwiZm9jdXNvdXQiLCJmb2N1c2luIiwibW91c2VvdmVyIiwibW91c2VvdXQiXSxbInR5cGUiLCJ0aW1lIiwic3RlcCIsIjEiLDEsImlucHV0LXZhbCIsMywidmFsdWUiLCJpZCIs''@;'; put 'put ''ImRpc2FibGVkIiwiaW5wdXQiLCJmb2N1cyIsImZvY3Vzb3V0IiwiZm9jdXNpbiIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0Il0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsImF1dG9mb2N1cyIsIiIsInRhYmluZGV4IiwiMCIsMSwiaW5wdXQtdmFsIiwzLCJpbnB1dElkIiwi''@;'; put 'put ''dmFsdWUiLCJlbWl0T25seVNlbGVjdGVkIiwiZGlzYWJsZWQiLCJvbklucHV0Q2hhbmdlIl0sWyJpbnB1dCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKCQwKCksbm4oMCxXZ3QsMiwxLCJsYWJlbCIsMCksTDAoMSwxKSxubigyLFlndCw0LDgsIm5nLWNvbnRhaW5lciIsMiks''@;'; put 'put ''bm4oMyxVZ3QsMiw0LCJuZy1jb250YWluZXIiLDIpLG5uKDQsUWd0LDQsNCwibmctY29udGFpbmVyIiwyKSxPMCgpKSwyJmgmJih4dCgibmdJZiIsdi5sYWJlbCksc3QoMSkseHQoIm5nU3dpdGNoIix2LnR5cGUpLHN0KDEpLHh0KCJuZ1N3aXRjaENhc2UiLCJkYXRlIiksc3QoMSkseHQoIm5n''@;'; put 'put ''U3dpdGNoQ2FzZSIsInRpbWUiKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwidGV4dCIpKX0sZGVwZW5kZW5jaWVzOltCbyxaZCxWNixhcyx4WixqZmUsWmd0LHpndF0sc3R5bGVzOlsiLmlucHV0LXZhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjBweDtiYWNrZ3JvdW5kOiNmYmY4Zjg7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzk5OTk5OX1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtvdXRsaW5lOm5vbmV9aW5wdXRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7bWFyZ2luLXRvcDotNXB4fWNsci1kYXRl''@;'; put 'put ''LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50fWNsci1kYXRlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257cG9zaXRpb246YWJzb2x1dGU7cmln''@;'; put 'put ''aHQ6LTVweH1jbHItZGF0ZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi1yaWdodDoyMHB4O21hcmdpbi10b3A6LTVweH0iXX0pLGR9KSgpLFhndD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9y''@;'; put 'put ''KGgpe3RoaXMuaGVscGVyU2VydmljZT1ofXRyYW5zZm9ybShoLHY9ImRheXMiLHk9ITEpe2lmKHZvaWQgMD09PWgmJihoPSIiKSwic3RyaW5nIiE9dHlwZW9mIGgmJihoPWgudG9TdHJpbmcoKSksMD09PWgubGVuZ3RoKXtpZigiZGF5cyI9PT12KXJldHVybiBudWxsO2lmKCJzZWNvbmRzIj09''@;'; put 'put ''PXYpcmV0dXJuIHk/IjExOjAwOjAwIjpudWxsfWxldCBDPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0U2FzRGF5c1RvSnNEYXRlKGgsdik7aWYoND09PWguc3BsaXQoIjoiKS5sZW5ndGgpe2NvbnN0IGo9aC5zcGxpdCgiOiIpO0M9bmV3IERhdGUoalswXSksQy5zZXRIb3VycyhwYXJzZUlu''@;'; put 'put ''dChqWzFdKSksQy5zZXRNaW51dGVzKHBhcnNlSW50KGpbMl0pKSxDLnNldFNlY29uZHMocGFyc2VJbnQoalszXSkpfWVsc2UgaXNOYU4oTnVtYmVyKGgpKSYmKEM9bmV3IERhdGUoaCkpO2xldCBJPWAke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhDLmdldEhvdXJzKCkudG9T''@;'; put 'put ''dHJpbmcoKSl9OiR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKEMuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhDLmdldFNlY29uZHMoKS50b1N0cmluZygpKX1gO3JldHVybiB5P0k6Q319cmV0dXJuIGQuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoY2MsMTYpKX0sZC5cdTAyNzVwaXBlPVdzKHtuYW1lOiJzYXNUb0pzRGF0ZSIsdHlwZTpkLHB1cmU6ITB9KSxkfSkoKSxLZ3Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmhlbHBlclNlcnZpY2U9aH10cmFu''@;'; put 'put ''c2Zvcm0oaCl7aWYobnVsbD09aHx8IiI9PT1oKXJldHVybiIiO2xldCB2LHksQztpZigic3RyaW5nIj09dHlwZW9mIGgmJjM9PT1oLnNwbGl0KCI6IikubGVuZ3RoKXtjb25zdCBJPWguc3BsaXQoIjoiKTt2PUlbMF0seT1JWzFdLEM9SVsyXX1lbHNlIm51bWJlciIhPXR5cGVvZiBoJiYoaD1w''@;'; put 'put ''YXJzZUludChoKSksdj1NYXRoLmZsb29yKGgvMzYwMCkseT1NYXRoLmZsb29yKGglMzYwMC82MCksQz1NYXRoLmZsb29yKGglMzYwMCU2MCk7cmV0dXJuYCR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKHYpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyh5''@;'; put 'put ''KX06JHt0aGlzLmhlbHBlclNlcnZpY2UuYWRkTGVhZGluZ1plcm8oQyl9YH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoY2MsMTYpKX0sZC5cdTAyNzVwaXBlPVdzKHtuYW1lOiJzZWNvbmRzUGFyc2VyIix0eXBlOmQscHVyZTohMH0pLGR9KSgp''@;'; put 'put ''O2Z1bmN0aW9uICRndChkLGcpe2lmKDEmZCYmKHR0KDAsIm9wdGlvbiIsMjQpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt4dCgic2VsZWN0ZWQiLFV0KCkubG9naWNPcGVyYXRvcnNbMF0pLHN0KDEpLFVpKCIgIixoLCIgIil9fWZ1bmN0aW9uIHFndChkLGcpezEmZCYm''@;'; put 'put ''KHR0KDAsImRpdiIsMjUpLFd0KDEsIlxuICAgICAgICAiKSxicigyLCJwcm9ncmVzcyIpLFd0KDMsIlxuICAgICAgIiksaXQoKSl9ZnVuY3Rpb24gZW10KGQsZyl7MSZkJiZicigwLCJkaXYiKX1mdW5jdGlvbiB0bXQoZCxnKXtpZigxJmQmJih0dCgwLCJvcHRpb24iLDI0KSxXdCgxKSxpdCgp''@;'; put 'put ''KSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7eHQoInNlbGVjdGVkIixVdCgyKS5sb2dpY09wZXJhdG9yc1swXSksc3QoMSksVWkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gbm10KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiwzNCksWm4oImNsaWNrIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBhKGgpLGJ0KFV0KDIpLmFkZEdyb3VwQ2xhdXNlKCkpfSksYnIoMSwiY2xyLWljb24iLDM1KSx0dCgyLCJzcGFuIiksV3QoMywiR3JvdXAiKSxpdCgpKCl9fWZ1bmN0aW9uIHJtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pY29uIiwzNiksWm4oImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpLmluZGV4O3JldHVybiBidChVdCgpLnJlbW92ZUdyb3VwQ2xhdXNlKHkpKX0pLGl0KCl9fWZ1bmN0aW9uIGltdChkLGcpe2lmKDEmZCYmKHR0KDAsIm9wdGlvbiIpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgx''@;'; put 'put ''KSxVaSgiICIsaC5OQU1FLCIgIil9fWZ1bmN0aW9uIG9tdChkLGcpe2lmKDEmZCYmKHR0KDAsIm9wdGlvbiIpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgxKSxqaShoKX19ZnVuY3Rpb24gYW10KGQsZyl7MSZkJiZoMSgwKX1jb25zdCBsbXQ9ZnVuY3Rpb24oZCxn''@;'; put 'put ''LGgpe3JldHVybntxdWVyeTpkLHF1ZXJ5SW5kZXg6ZyxjbGF1c2VJbmRleDpofX07ZnVuY3Rpb24gc210KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2Iiw1MykoMSwiYnV0dG9uIiw1NCksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgyKS5pbmRleCxD''@;'; put 'put ''PVV0KCkuaW5kZXgsST1VdCgpO3JldHVybiBJLmN1cnJlbnRRdWVyeUluZGV4PXksYnQoSS5jdXJyZW50Q2xhdXNlSW5kZXg9Qyl9KSxXdCgyLCIgQ2hvb3NlIHZhbHVlcyAiKSxpdCgpLG5uKDMsYW10LDEsMCwibmctY29udGFpbmVyIiw1NSksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoMiks''@;'; put 'put ''dj1oLiRpbXBsaWNpdCx5PWguaW5kZXgsQz1VdCgpLmluZGV4O1V0KCk7Y29uc3QgST11YSgzNyk7c3QoMykseHQoIm5nVGVtcGxhdGVPdXRsZXQiLEkpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsS0EoMixsbXQsdix5LEMpKX19ZnVuY3Rpb24gdW10KGQsZyl7MSZkJiZoMSgwKX1jb25z''@;'; put 'put ''dCBjbXQ9ZnVuY3Rpb24oZCxnLGgsdil7cmV0dXJue3F1ZXJ5OmQscXVlcnlJbmRleDpnLGNsYXVzZUluZGV4OmgsaXNEYXRlVGltZTp2fX07ZnVuY3Rpb24gZm10KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw1Niksbm4oMSx1bXQsMSwwLCJuZy1jb250YWluZXIiLDU1KSxpdCgpKSwyJmQp''@;'; put 'put ''e2NvbnN0IGg9VXQoKS5uZ1Zhcix2PVV0KCkseT12LiRpbXBsaWNpdCxDPXYuaW5kZXgsST1VdCgpLmluZGV4LGo9VXQoKSxjZT11YSgzMSksX2U9dWEoMzMpO3N0KDEpLHh0KCJuZ1RlbXBsYXRlT3V0bGV0IixoJiZqLnVzZVBpY2tlcnM/Y2U6X2UpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4''@;'; put 'put ''dCIsazEoMixjbXQseSxDLEksaCkpfX1mdW5jdGlvbiBobXQoZCxnKXsxJmQmJmgxKDApfWZ1bmN0aW9uIGRtdChkLGcpezEmZCYmaDEoMCl9Y29uc3QgcG10PWZ1bmN0aW9uKGQsZyxoLHYpe3JldHVybntyYW5nZToic3RhcnQiLHF1ZXJ5OmQscXVlcnlWYWx1ZUluZGV4OjAscXVlcnlJbmRl''@;'; put 'put ''eDpnLGNsYXVzZUluZGV4OmgsaXNEYXRlVGltZTp2fX0sZ210PWZ1bmN0aW9uKGQsZyxoLHYpe3JldHVybntyYW5nZToiZW5kIixxdWVyeTpkLHF1ZXJ5VmFsdWVJbmRleDoxLHF1ZXJ5SW5kZXg6ZyxjbGF1c2VJbmRleDpoLGlzRGF0ZVRpbWU6dn19O2Z1bmN0aW9uIG1tdChkLGcpe2lmKDEm''@;'; put 'put ''ZCYmKHR0KDAsImRpdiIsNTcpKDEsImRpdiIsNTgpLG5uKDIsaG10LDEsMCwibmctY29udGFpbmVyIiw1NSksaXQoKSx0dCgzLCJkaXYiLDU5KSxubig0LGRtdCwxLDAsIm5nLWNvbnRhaW5lciIsNTUpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KCkubmdWYXIsdj1VdCgpLHk9di4kaW1wbGlj''@;'; put 'put ''aXQsQz12LmluZGV4LEk9VXQoKS5pbmRleCxqPVV0KCksY2U9dWEoMzEpLF9lPXVhKDM1KTtzdCgyKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsaCYmai51c2VQaWNrZXJzP2NlOl9lKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGsxKDQscG10LHksQyxJLGgpKSxzdCgyKSx4dCgibmdUZW1w''@;'; put 'put ''bGF0ZU91dGxldCIsaCYmai51c2VQaWNrZXJzP2NlOl9lKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGsxKDksZ210LHksQyxJLGgpKX19ZnVuY3Rpb24gdm10KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2Iiw2MCkoMSwibGFiZWwiLDYxKSxXdCgyLCJWYWx1ZSIpLGl0''@;'; put 'put ''KCksdHQoMywiaW5wdXQiLDYyKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuJGltcGxpY2l0LnZhbHVlPXkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgyKS5pbmRleCxJPVV0KCkuaW5kZXg7cmV0dXJu''@;'; put 'put ''IGJ0KFV0KCkuc2V0VmFyaWFibGVWYWx1ZXMoeSxDLEkpKX0pLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMikuJGltcGxpY2l0O3N0KDMpLHh0KCJuZ01vZGVsIixoLnZhbHVlKX19ZnVuY3Rpb24gQW10KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw0OCksbm4oMSxzbXQsNCw2LCJkaXYi''@;'; put 'put ''LDQ5KSxubigyLGZtdCwyLDcsImRpdiIsNTApLG5uKDMsbW10LDUsMTQsImRpdiIsNTEpLG5uKDQsdm10LDQsMSwiZGl2Iiw1MiksaXQoKSksMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0O3N0KDEpLHh0KCJuZ0lmIiwiSU4iPT09aC5vcGVyYXRvcnx8Ik5PVCBJTiI9PT1oLm9wZXJhdG9y''@;'; put 'put ''KSxzdCgxKSx4dCgibmdJZiIsIkJFVFdFRU4iIT09aC5vcGVyYXRvciYmIklOIiE9PWgub3BlcmF0b3ImJiJOT1QgSU4iIT09aC5vcGVyYXRvciYmIkxJS0UiIT09aC5vcGVyYXRvciYmIkNPTlRBSU5TIiE9PWgub3BlcmF0b3ImJiJCRUdJTlNfV0lUSCIhPT1oLm9wZXJhdG9yKSxzdCgxKSx4''@;'; put 'put ''dCgibmdJZiIsIkJFVFdFRU4iPT09aC5vcGVyYXRvciksc3QoMSkseHQoIm5nSWYiLCJMSUtFIj09PWgub3BlcmF0b3J8fCJCRUdJTlNfV0lUSCI9PT1oLm9wZXJhdG9yfHwiQ09OVEFJTlMiPT09aC5vcGVyYXRvcil9fWZ1bmN0aW9uIHltdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0''@;'; put 'put ''KDAsImRpdiIsOCkoMSwiZGl2IiwzNykoMiwiZGl2IiwzOCkoMywiYXBwLXNvZnQtc2VsZWN0IiwzOSksWm4oInZhbHVlQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYnQoYShoKS4kaW1wbGljaXQudmFyaWFibGU9eSl9KSgib25JbnB1dEV2ZW50IixmdW5jdGlvbih5KXtjb25zdCBDPWEo''@;'; put 'put ''aCksST1DLiRpbXBsaWNpdCxqPUMuaW5kZXgsY2U9VXQoKS5pbmRleDtyZXR1cm4gYnQoVXQoKS52YXJpYWJsZUlucHV0Q2hhbmdlKEkudmFyaWFibGUsaixjZSx5KSl9KSxubig0LGltdCwyLDEsIm9wdGlvbiIsNDApLGl0KCkoKSgpLHR0KDUsImRpdiIsNDEpKDYsImNsci1zZWxlY3QtY29u''@;'; put 'put ''dGFpbmVyIikoNywibGFiZWwiKSxXdCg4LCJPcGVyYXRvciIpLGl0KCksdHQoOSwic2VsZWN0Iiw0MiksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBidChhKGgpLiRpbXBsaWNpdC5vcGVyYXRvcj15KX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbigpe2NvbnN0IHk9''@;'; put 'put ''YShoKSxDPXkuaW5kZXgsST15LiRpbXBsaWNpdCxqPVV0KCkuaW5kZXg7cmV0dXJuIGJ0KFV0KCkuc2V0VmFyaWFibGVPcGVyYXRvcihDLEkub3BlcmF0b3IsaikpfSksbm4oMTAsb210LDIsMSwib3B0aW9uIiw0MCksaXQoKSgpKCksbm4oMTEsQW10LDUsNCwiZGl2Iiw0MyksdHQoMTIsImRp''@;'; put 'put ''diIsNDQpKDEzLCJidXR0b24iLDQ1KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgQz1hKGgpLmluZGV4LEk9VXQoKS5pbmRleDtyZXR1cm4gYnQoVXQoKS5yZW1vdmVDbGF1c2UoQyxJKSl9KSxicigxNCwiY2xyLWljb24iLDQ2KSgxNSwic3BhbiIpLGl0KCksdHQoMTYsImJ1dHRvbiIs''@;'; put 'put ''NDcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKS5pbmRleDtyZXR1cm4gYnQoVXQoKS5hZGRDbGF1c2UoeSkpfSksYnIoMTcsImNsci1pY29uIiwzNSkoMTgsInNwYW4iKSxpdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1nLmluZGV4LHk9VXQo''@;'; put 'put ''KS5pbmRleCxDPVV0KCk7SGkoImludmFsaWQtY2xhdXNlIixoLmludmFsaWRDbGF1c2UpLHN0KDMpLHh0KCJpZCIsInNlbGVjdF92YWxzX3Zhcl9pZCIrdisiXyIreSkoImlucHV0SWQiLCJ2YWxzX3Zhcl9pZCIrdisiXyIreSkoImVtaXRPbmx5U2VsZWN0ZWQiLCEwKSgidmFsdWUiLGgudmFy''@;'; put 'put ''aWFibGUpLHN0KDEpLHh0KCJuZ0Zvck9mIixDLmNvbHMpLHN0KDUpLHh0KCJuZ01vZGVsIixoLm9wZXJhdG9yKSxzdCgxKSx4dCgibmdGb3JPZiIsaC5vcGVyYXRvcnMpLHN0KDEpLHh0KCJuZ1ZhciIsIkRBVEUiPT09aC5kZHR5cGV8fCJEQVRFVElNRSI9PT1oLmRkdHlwZXx8IlRJTUUiPT09''@;'; put 'put ''aC5kZHR5cGUpLHN0KDIpLHh0KCJkaXNhYmxlZCIsMT09PUMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50cy5sZW5ndGgpfX1mdW5jdGlvbiB3bXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDI2KSgxLCJkaXYiLDgpKDIsImRpdiIsMjcpKDMsImRpdiIsMjgpKDQs''@;'; put 'put ''ImNsci1zZWxlY3QtY29udGFpbmVyIikoNSwibGFiZWwiKSxXdCg2LCJMb2dpYyIpLGl0KCksdHQoNywic2VsZWN0IiwyOSksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBidChhKGgpLiRpbXBsaWNpdC5jbGF1c2VMb2dpYz15KX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuc2V0TG9naWMoKSl9KSxubig4LHRtdCwyLDIsIm9wdGlvbiIsMTEpLGl0KCkoKSgpLGJyKDksImJyIiksbm4oMTAsbm10LDQsMCwiYnV0dG9uIiwzMCksaXQoKSx0dCgxMSwiZGl2IiwzMSksbm4oMTIscm10LDEsMCwiY2xyLWljb24iLDMyKSxu''@;'; put 'put ''bigxMyx5bXQsMTksMTEsImRpdiIsMzMpLGl0KCkoKSxicigxNCwiYnIiKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVV0KCk7c3QoMSksSGkoImludmFsaWQtY2xhdXNlIixoLmludmFsaWRDbGF1c2UpLHN0KDYpLHh0KCJuZ01vZGVsIixoLmNsYXVzZUxvZ2ljKSgiZGlz''@;'; put 'put ''YWJsZWQiLGguZWxlbWVudHMubGVuZ3RoPDIpLHN0KDEpLHh0KCJuZ0Zvck9mIix2LmxvZ2ljT3BlcmF0b3JzKSxzdCgyKSx4dCgibmdJZiIsdi5pbm5lcldpZHRoPjc2OCksc3QoMikseHQoIm5nSWYiLHYuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg+MSksc3QoMSkseHQoIm5nRm9yT2YiLGgu''@;'; put 'put ''ZWxlbWVudHMpfX1mdW5jdGlvbiBibXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJhcHAtc29mdC1zZWxlY3QiLDY1KSxabigidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgpLEk9Qy5xdWVyeSxqPUMucXVlcnlJbmRleCxjZT1DLmNsYXVz''@;'; put 'put ''ZUluZGV4LF9lPUMucXVlcnlWYWx1ZUluZGV4O3JldHVybiBidChVdCgpLmRhdGVDaGFuZ2UoeSxJLGosY2UsX2UpKX0pLFplKDIsInNhc1RvSnNEYXRlIiksWmUoMywic2FzVG9Kc0RhdGUiKSxpdCgpLE8wKCl9aWYoMiZkKXtjb25zdCBoPVV0KCksdj1oLnF1ZXJ5SW5kZXgseT1oLmNsYXVz''@;'; put 'put ''ZUluZGV4LEM9aC5xdWVyeVZhbHVlSW5kZXgsST1oLnF1ZXJ5O3N0KDEpLHh0KCJkaXNhYmxlU29mdHNlbGVjdCIsITApKCJpbnB1dElkIiwidmFsc19kYXRlIit2KyJfIit5KSgidmFsdWUiLHZvaWQgMCE9PUM/U3QoMiwzLEkudmFsdWVbQ10pOlN0KDMsNSxJLnZhbHVlKSl9fWZ1bmN0aW9u''@;'; put 'put ''IF9tdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO0wwKDApLHR0KDEsImFwcC1zb2Z0LXNlbGVjdCIsNjYpLFpuKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPVV0KCksST1DLmNsYXVzZUluZGV4LGo9Qy5xdWVyeUluZGV4O3JldHVybiBidChVdCgpLmdldFF1ZXJ5''@;'; put 'put ''RGF0ZVRpbWUoSSxqKS5kYXRlPXkpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKSxDPXkucXVlcnksST15LnF1ZXJ5SW5kZXgsaj15LmNsYXVzZUluZGV4LGNlPXkucXVlcnlWYWx1ZUluZGV4O3JldHVybiBidChVdCgpLmRhdGVUaW1lQ2hhbmdlKEMsSSxq''@;'; put 'put ''LGNlKSl9KSxaZSgyLCJzYXNUb0pzRGF0ZSIpLFplKDMsInNhc1RvSnNEYXRlIiksaXQoKSx0dCg0LCJhcHAtc29mdC1zZWxlY3QiLDY3KSxabigidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgpLEk9Qy5jbGF1c2VJbmRleCxqPUMucXVlcnlJbmRleDtyZXR1cm4g''@;'; put 'put ''YnQoVXQoKS5nZXRRdWVyeURhdGVUaW1lKEksaikudGltZT15KX0pKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCksQz15LnF1ZXJ5LEk9eS5xdWVyeUluZGV4LGo9eS5jbGF1c2VJbmRleCxjZT15LnF1ZXJ5VmFsdWVJbmRleDtyZXR1cm4gYnQoVXQoKS5kYXRl''@;'; put 'put ''VGltZUNoYW5nZShDLEksaixjZSkpfSksWmUoNSwic2FzVG9Kc0RhdGUiKSxaZSg2LCJzYXNUb0pzRGF0ZSIpLGl0KCksTzAoKX1pZigyJmQpe2NvbnN0IGg9VXQoKSx2PWgucXVlcnlJbmRleCx5PWguY2xhdXNlSW5kZXgsQz1oLnF1ZXJ5VmFsdWVJbmRleCxJPWgucXVlcnk7c3QoMSkseHQo''@;'; put 'put ''ImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzX2RhdGUiK3YrIl8iK3kpKCJ2YWx1ZSIsdm9pZCAwIT09Qz9JdCgyLDYsSS52YWx1ZVtDXSwic2Vjb25kcyIpOkl0KDMsOSxJLnZhbHVlLCJzZWNvbmRzIikpLHN0KDMpLHh0KCJkaXNhYmxlU29mdHNlbGVjdCIsITApKCJp''@;'; put 'put ''bnB1dElkIiwidmFsc190aW1lIit2KyJfIit5KSgidmFsdWUiLHZvaWQgMCE9PUM/UHQoNSwxMixJLnZhbHVlW0NdLCJzZWNvbmRzIiwhMCk6UHQoNiwxNixJLnZhbHVlLCJzZWNvbmRzIiwhMCkpfX1mdW5jdGlvbiBDbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJh''@;'; put 'put ''cHAtc29mdC1zZWxlY3QiLDY4KSxabigib25JbnB1dEV2ZW50IixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoKSxJPUMucXVlcnksaj1DLnF1ZXJ5SW5kZXgsY2U9Qy5jbGF1c2VJbmRleCxfZT1DLnF1ZXJ5VmFsdWVJbmRleDtyZXR1cm4gYnQoVXQoKS50aW1lQ2hhbmdlKHksSSxqLGNl''@;'; put 'put ''LF9lKSl9KSxaZSgyLCJzZWNvbmRzUGFyc2VyIiksWmUoMywic2Vjb25kc1BhcnNlciIpLGl0KCksTzAoKX1pZigyJmQpe2NvbnN0IGg9VXQoKSx2PWgucXVlcnlJbmRleCx5PWguY2xhdXNlSW5kZXgsQz1oLnF1ZXJ5VmFsdWVJbmRleCxJPWgucXVlcnk7c3QoMSkseHQoImRpc2FibGVTb2Z0''@;'; put 'put ''c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzXyIrdisiXyIreSkoInZhbHVlIix2b2lkIDAhPT1DP1N0KDIsMyxJLnZhbHVlW0NdKTpTdCgzLDUsSS52YWx1ZSkpfX1mdW5jdGlvbiBrbXQoZCxnKXsxJmQmJihMMCgwLDYzKSxubigxLGJtdCw0LDcsIm5nLWNvbnRhaW5lciIsNjQpLG5uKDIs''@;'; put 'put ''X210LDcsMjAsIm5nLWNvbnRhaW5lciIsNjQpLG5uKDMsQ210LDQsNywibmctY29udGFpbmVyIiw2NCksTzAoKSksMiZkJiYoeHQoIm5nU3dpdGNoIixnLnF1ZXJ5LmRkdHlwZSksc3QoMSkseHQoIm5nU3dpdGNoQ2FzZSIsIkRBVEUiKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwiREFURVRJ''@;'; put 'put ''TUUiKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwiVElNRSIpKX1mdW5jdGlvbiBTbXQoZCxnKXtpZigxJmQmJih0dCgwLCJvcHRpb24iLDcxKSxXdCgxKSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7eHQoInZhbHVlIixoLnVuZm9ybWF0dGVkKSxzdCgxKSxVaSgiICIsaC5mb3Jt''@;'; put 'put ''YXR0ZWQudHJpbSgpLCIgIil9fWZ1bmN0aW9uIE1tdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImFwcC1zb2Z0LXNlbGVjdCIsNjkpLFpuKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGJ0KGEoaCkucXVlcnkudmFsdWU9eSl9KSgib25JbnB1dEV2ZW50IixmdW5j''@;'; put 'put ''dGlvbih5KXtjb25zdCBDPWEoaCksST1DLnF1ZXJ5SW5kZXgsaj1DLmNsYXVzZUluZGV4O3JldHVybiBidChVdCgpLnNldFZhcmlhYmxlVmFsdWVzKHkudGFyZ2V0LnZhbHVlLEksaikpfSksbm4oMSxTbXQsMiwyLCJvcHRpb24iLDcwKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1nLnF1ZXJ5O3h0''@;'; put 'put ''KCJpbnB1dElkIiwidmFsc18iK2cucXVlcnlJbmRleCsiXyIrZy5jbGF1c2VJbmRleCkoInZhbHVlIixoLnZhbHVlKSxzdCgxKSx4dCgibmdGb3JPZiIsaC52YWx1ZXMpfX1mdW5jdGlvbiBFbXQoZCxnKXtpZigxJmQmJih0dCgwLCJvcHRpb24iLDcxKSxXdCgxKSxpdCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9Zy4kaW1wbGljaXQ7eHQoInZhbHVlIixoLmZvcm1hdHRlZCksc3QoMSksVWkoIiAiLGguZm9ybWF0dGVkLCIgIil9fWZ1bmN0aW9uIHhtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImFwcC1zb2Z0LXNlbGVjdCIsNzIpLFpuKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7''@;'; put 'put ''Y29uc3QgQz1hKGgpO3JldHVybiBidChDLnF1ZXJ5LnZhbHVlW0MucXVlcnlWYWx1ZUluZGV4XT15KX0pKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKCl7Y29uc3QgeT1hKGgpLEM9eS5xdWVyeSxJPXkucXVlcnlJbmRleCxqPXkuY2xhdXNlSW5kZXg7cmV0dXJuIGJ0KFV0KCkuc2V0VmFyaWFi''@;'; put 'put ''bGVWYWx1ZXMoQy52YWx1ZSxJLGopKX0pLG5uKDEsRW10LDIsMiwib3B0aW9uIiw3MCksaXQoKX1pZigyJmQpe2NvbnN0IGg9Zy5yYW5nZSx2PWcucXVlcnkseT1nLnF1ZXJ5VmFsdWVJbmRleDt4dCgiaW5wdXRJZCIsInZhbHMtIitoKyJfIitnLnF1ZXJ5SW5kZXgrIl8iK2cuY2xhdXNlSW5k''@;'; put 'put ''ZXgpKCJ2YWx1ZSIsdi52YWx1ZVt5XSkoImRpc2FibGVkIix2b2lkIDAhPT15JiYic3RhcnQiIT09aCYmIXYudmFsdWVbMF0pLHN0KDEpLHh0KCJuZ0Zvck9mIix2LnZhbHVlcyl9fWZ1bmN0aW9uIFRtdChkLGcpezEmZCYmKHR0KDAsImg1Iiw4MCksV3QoMSwiIE5vIHZhbHVlcyBhdmFpbGFi''@;'; put 'put ''bGUuICIpLGl0KCkpfWZ1bmN0aW9uIEltdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1jaGVja2JveC13cmFwcGVyIikoMSwiaW5wdXQiLDgyKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7Y29uc3QgST1hKGgpLmluZGV4O3JldHVybiBidChVdCgyKS5xdWVy''@;'; put 'put ''eS52YWx1ZVtJXS5jaGVja2VkPXkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgyKSxJPUMucXVlcnlJbmRleCxqPUMuY2xhdXNlSW5kZXg7cmV0dXJuIGJ0KFV0KCkuc2V0VmFyaWFibGVWYWx1ZXMoeSxJLGopKX0pLGl0KCksdHQoMiwibGFiZWwiKSxX''@;'; put 'put ''dCgzKSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9Zy5pbmRleCx5PVV0KDIpLnF1ZXJ5O3N0KDEpLHh0KCJuZ01vZGVsIix5LnZhbHVlW3ZdLmNoZWNrZWQpLHN0KDIpLFVpKCIgIixoLmZvcm1hdHRlZCwiICIpfX1mdW5jdGlvbiBEbXQoZCxnKXtpZigxJmQmJih0dCgw''@;'; put 'put ''LCJzZWN0aW9uIiw4MSkoMSwiY2xyLWNoZWNrYm94LWNvbnRhaW5lciIpLG5uKDIsSW10LDQsMiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDQwKSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgpLnF1ZXJ5O3N0KDIpLHh0KCJuZ0Zvck9mIixoLnZhbHVlcyl9fWZ1bmN0aW9uIExtdChkLGcpe2lm''@;'; put 'put ''KDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1tb2RhbCIsNzMpKDEsImgzIiw3NCksV3QoMiwiU2VsZWN0IHZhbHVlcyIpLGl0KCksdHQoMywiZGl2Iiw3NSksbm4oNCxUbXQsMiwwLCJoNSIsNzYpLG5uKDUsRG10LDMsMSwic2VjdGlvbiIsNzcpLGl0KCksdHQoNiwiZGl2Iiw3OCkoNywi''@;'; put 'put ''YnV0dG9uIiw3OSksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpO3JldHVybiB5LmN1cnJlbnRRdWVyeUluZGV4PS0xLGJ0KHkuY3VycmVudENsYXVzZUluZGV4PS0xKX0pLFd0KDgsIiBBcHBseSAiKSxpdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9Zy5xdWVyeSx2PWcu''@;'; put 'put ''cXVlcnlJbmRleCx5PWcuY2xhdXNlSW5kZXgsQz1VdCgpO3h0KCJjbHJNb2RhbE9wZW4iLEMuY3VycmVudFF1ZXJ5SW5kZXg9PT12JiZDLmN1cnJlbnRDbGF1c2VJbmRleD09PXkpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksc3QoNCkseHQoIm5nSWYiLCFDLmlzQXJyKGgudmFsdWUpKSxzdCgx''@;'; put 'put ''KSx4dCgibmdJZiIsQy5pc0FycihoLnZhbHVlKSl9fSFmdW5jdGlvbiBuSShkLGcsaCl7KGZ1bmN0aW9uIGhUKGQsZyxoKXsic3RyaW5nIiE9dHlwZW9mIGcmJihoPWcsZz1kW1NvLkxvY2FsZUlkXSksZz1nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIiksSGhbZ109ZCxoJiYoSGhb''@;'; put 'put ''Z11bU28uRXh0cmFEYXRhXT1oKX0pKGQsZyxoKX0oSGd0KTtsZXQgbk9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMuaGVscGVyU2VydmljZT15LHRoaXMuY2RmPUMsdGhpcy5jbGF1c2VB''@;'; put 'put ''bXQ9WyIiXSx0aGlzLm51bU9wZXJhdG9ycz1bIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJCRVRXRUVOIiwiSU4iLCJOT1QgSU4iLCJORSJdLHRoaXMuY2hhck9wZXJhdG9ycz1bIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJDT05UQUlOUyIsIklOIiwiTk9UIElOIiwiTkUiXSx0aGlzLm5vdEluPSEx''@;'; put 'put ''LHRoaXMubm90QXJyPSEwLHRoaXMud2FzQmV0d2Vlbj0hMSx0aGlzLndoZXJlQ2xhdXNlTG9hZGluZz0hMSx0aGlzLmR5bmFtaWNXaGVyZUNsYXVzZT0hMCx0aGlzLnVzZVBpY2tlcnM9ITEsdGhpcy5xdWVyeU9iaj17ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCxkZHR5cGU6bnVs''@;'; put 'put ''bCx2YXJpYWJsZTpudWxsLG9wZXJhdG9yOm51bGwsdmFsdWU6bnVsbCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV0sY2xhdXNlTG9naWM6IiIsaW52YWxpZENsYXVzZTohMX0sdGhpcy5zZWxWYXI9e2luZGV4Om51bGwsZm9ybWF0Om51bGwsdHlwZTpudWxsfSx0aGlzLmluT2JqPVt7Y2hlY2tl''@;'; put 'put ''ZDohMSx2YWx1ZTpudWxsfV0sdGhpcy5ncm91cExvZ2ljPSJBTkQiLHRoaXMuY2xhdXNlcz17cXVlcnlPYmo6W3RoaXMucXVlcnlPYmpdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6dGhpcy5ncm91cExvZ2ljfSx0aGlzLmxvZ2ljT3BlcmF0b3JzPVsiQU5EIiwiT1IiXSx0aGlzLnF1ZXJ5''@;'; put 'put ''RGF0ZVRpbWU9W10sdGhpcy5jdXJyZW50Q2xhdXNlSW5kZXg9LTEsdGhpcy5jdXJyZW50UXVlcnlJbmRleD0tMSx0aGlzLnBlbmRpbmdJTlZhbHVlc1NldD1udWxsLHRoaXMuaW5uZXJXaWR0aD13aW5kb3cuc2NyZWVuLndpZHRoLHRoaXMuaW5uZXJXaWR0aD43NjgmJih0aGlzLm5vQm9yZGVy''@;'; put 'put ''PSJib3JkZXItbGVmdDogMnB4IHNvbGlkIGdyYXk7Iil9Z2V0UXVlcnlEYXRlVGltZShoLHYpe2xldCB5PXRoaXMucXVlcnlEYXRlVGltZS5maW5kKEM9PkMuY2xhdXNlSW5kZXg9PT1oJiZDLnF1ZXJ5SW5kZXg9PT12KTtpZigheSl7Y29uc3QgQz10aGlzLnF1ZXJ5RGF0ZVRpbWUucHVzaCh7''@;'; put 'put ''Y2xhdXNlSW5kZXg6aCxxdWVyeUluZGV4OnYsZGF0ZToiIix0aW1lOiIifSktMTt5PXRoaXMucXVlcnlEYXRlVGltZVtDXX1yZXR1cm4geX11c2VQaWNrZXJzQ2hhbmdlKCl7dGhpcy5xdWVyeURhdGVUaW1lPVtdfXJlc2V0RmlsdGVyKCl7dGhpcy53aGVyZVN0cmluZz12b2lkIDAsdGhpcy53''@;'; put 'put ''aGVyZUNsYXVzZT12b2lkIDAsdGhpcy5xdWVyeU9iaj17ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCxkZHR5cGU6bnVsbCx2YXJpYWJsZTpudWxsLG9wZXJhdG9yOm51bGwsdmFsdWU6bnVsbCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV19LHRoaXMuY2xhdXNlcz17cXVlcnlPYmo6''@;'; put 'put ''W3RoaXMucXVlcnlPYmpdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6dGhpcy5ncm91cExvZ2ljfSx0aGlzLndoZXJlQ2xhdXNlRm4oITApfXNldFRvR2xvYmFscygpeygiaG9tZSI9PT1yaS5yb290UGFyYW18fCJlZGl0b3IiPT09cmkucm9vdFBhcmFtKSYmKHJpLmVkaXRvci5maWx0ZXIu''@;'; put 'put ''Z3JvdXBMb2dpYz10aGlzLmdyb3VwTG9naWMsInN0cmluZyI9PXR5cGVvZiB0aGlzLndoZXJlQ2xhdXNlJiYocmkuZWRpdG9yLmZpbHRlci53aGVyZUNsYXVzZT10aGlzLndoZXJlQ2xhdXNlKSwic3RyaW5nIj09dHlwZW9mIHRoaXMubGliZHMmJihyaS5lZGl0b3IuZmlsdGVyLmxpYmRzPXRo''@;'; put 'put ''aXMubGliZHMpLHJpLmVkaXRvci5maWx0ZXIuY2xhdXNlcz10aGlzLmNsYXVzZXMpLCJ2aWV3Ij09PXJpLnJvb3RQYXJhbSYmKHJpLnZpZXdlci5maWx0ZXIuZ3JvdXBMb2dpYz10aGlzLmdyb3VwTG9naWMsInN0cmluZyI9PXR5cGVvZiB0aGlzLndoZXJlQ2xhdXNlJiYocmkudmlld2VyLmZp''@;'; put 'put ''bHRlci53aGVyZUNsYXVzZT10aGlzLndoZXJlQ2xhdXNlKSwic3RyaW5nIj09dHlwZW9mIHRoaXMubGliZHMmJihyaS52aWV3ZXIuZmlsdGVyLmxpYmRzPXRoaXMubGliZHMpLHJpLnZpZXdlci5maWx0ZXIuY2xhdXNlcz10aGlzLmNsYXVzZXMpfWdldEZyb21HbG9iYWxzKCl7KCJob21lIj09''@;'; put 'put ''PXJpLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1yaS5yb290UGFyYW0pJiYocmkuZWRpdG9yLmZpbHRlci5jb2xzLmxlbmd0aD4wJiYodGhpcy5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmkuZWRpdG9yLmZpbHRlci5jb2xzKSkpLHJpLmVkaXRvci5maWx0ZXIudmFscy5sZW5ndGg+''@;'; put 'put ''MCYmKHRoaXMudmFscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJpLmVkaXRvci5maWx0ZXIudmFscykpKSwiIiE9PXJpLmVkaXRvci5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBMb2dpYz1yaS5lZGl0b3IuZmlsdGVyLmdyb3VwTG9naWMsdGhpcy53aGVyZUNsYXVzZT1yaS5l''@;'; put 'put ''ZGl0b3IuZmlsdGVyLndoZXJlQ2xhdXNlLHRoaXMubGliZHM9cmkuZWRpdG9yLmZpbHRlci5saWJkcyx0aGlzLmNsYXVzZXM9cmkuZWRpdG9yLmZpbHRlci5jbGF1c2VzLHRoaXMud2hlcmVDbGF1c2VGbigpKSksInZpZXciPT09cmkucm9vdFBhcmFtJiYocmkudmlld2VyLmZpbHRlci5jb2xz''@;'; put 'put ''Lmxlbmd0aD4wJiYodGhpcy5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmkudmlld2VyLmZpbHRlci5jb2xzKSkpLHJpLnZpZXdlci5maWx0ZXIudmFscy5sZW5ndGg+MCYmKHRoaXMudmFscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJpLnZpZXdlci5maWx0ZXIudmFscykp''@;'; put 'put ''KSwiIiE9PXJpLnZpZXdlci5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBMb2dpYz1yaS52aWV3ZXIuZmlsdGVyLmdyb3VwTG9naWMsdGhpcy53aGVyZUNsYXVzZT1yaS52aWV3ZXIuZmlsdGVyLndoZXJlQ2xhdXNlLHRoaXMubGliZHM9cmkudmlld2VyLmZpbHRlci5saWJkcyx0aGlz''@;'; put 'put ''LmNsYXVzZXM9cmkudmlld2VyLmZpbHRlci5jbGF1c2VzLHRoaXMud2hlcmVDbGF1c2VGbigpKSl9c2V0R3JvdXBMb2dpYyhoKXt0aGlzLmdyb3VwTG9naWM9aCx0aGlzLmNsYXVzZXMuZ3JvdXBMb2dpYz1oLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9ZGF0ZUNo''@;'; put 'put ''YW5nZShoLHYseSxDLEkpe2xldCBqPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0SnNEYXRlVG9TYXNEYXRlKGgpOyJCRVRXRUVOIj09PXYub3BlcmF0b3ImJnZvaWQgMCE9PUkmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbeV0udmFsdWVbSV09aiksdGhpcy5zZXRWYXJp''@;'; put 'put ''YWJsZVZhbHVlcyhqLHksQyl9ZGF0ZVRpbWVDaGFuZ2UoaCx2LHksQyl7Y29uc3QgST10aGlzLmdldFF1ZXJ5RGF0ZVRpbWUoeSx2KTtpZigiIj09PUkuZGF0ZSl7aWYoIiI9PT1oLnZhbHVlKXJldHVybjtJLmRhdGU9aC52YWx1ZS5zcGxpdCgiOiIpWzBdfWNvbnN0IGo9cGFyc2VJbnQoSS50''@;'; put 'put ''aW1lLnNwbGl0KCI6IilbMF0pLGNlPXBhcnNlSW50KEkudGltZS5zcGxpdCgiOiIpWzFdKSxfZT1wYXJzZUludChJLnRpbWUuc3BsaXQoIjoiKVsyXSl8fDA7bGV0IFJlPW5ldyBEYXRlKEkuZGF0ZSksTmU9bmV3IERhdGUoUmUuZ2V0RnVsbFllYXIoKSxSZS5nZXRNb250aCgpLFJlLmdldERh''@;'; put 'put ''dGUoKSxqLGNlLF9lKSxLZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0ZVRvU2FzRGF0ZShOZSwic2Vjb25kcyIpOyJCRVRXRUVOIj09PWgub3BlcmF0b3ImJnZvaWQgMCE9PUMmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0udmFsdWVbQ109S2UpLHRoaXMu''@;'; put 'put ''c2V0VmFyaWFibGVWYWx1ZXMoS2Usdix5KX10aW1lQ2hhbmdlKGgsdix5LEMsSSl7aD1oLnRhcmdldC52YWx1ZTtsZXQgS2U9NjAqcGFyc2VJbnQoaC5zcGxpdCgiOiIpWzBdKSo2MCs2MCpwYXJzZUludChoLnNwbGl0KCI6IilbMV0pKyhwYXJzZUludChoLnNwbGl0KCI6IilbMl0pfHwwKTsi''@;'; put 'put ''QkVUV0VFTiI9PT12Lm9wZXJhdG9yJiZ2b2lkIDAhPT1JJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmVsZW1lbnRzW3ldLnZhbHVlW0ldPUtlKSx0aGlzLnNldFZhcmlhYmxlVmFsdWVzKEtlLHksQyl9ZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihoLHYpe2xldCB5PVtdO2lmKHRoaXMu''@;'; put 'put ''Y2xhdXNlcy5xdWVyeU9iai5sZW5ndGg+MXx8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzLmxlbmd0aD4xKWZvcihsZXQgQz0wO0M8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aDtDKyspZm9yKGxldCBJPTA7STx0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHMu''@;'; put 'put ''bGVuZ3RoO0krKyl7aWYoQz09PWgmJkk9PT12fHxbbnVsbCx2b2lkIDBdLmluY2x1ZGVzKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtDXS5lbGVtZW50c1tJXS52YXJpYWJsZSl8fFtudWxsLHZvaWQgMF0uaW5jbHVkZXModGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmVsZW1lbnRzW0ldLm9wZXJh''@;'; put 'put ''dG9yKXx8W251bGwsdm9pZCAwXS5pbmNsdWRlcyh0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWUpKWNvbnRpbnVlO2xldCBqPSIiO2NvbnN0IGNlPXRoaXMuY2xhdXNlcy5xdWVyeU9ialtDXS5lbGVtZW50c1tJXS5vcGVyYXRvcixfZT10aGlzLmNsYXVzZXMucXVl''@;'; put 'put ''cnlPYmpbQ10uZWxlbWVudHNbSV0udmFyaWFibGU7IkJFVFdFRU4iPT09Y2U/aj1gJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWVbMF19IEFORCAke3RoaXMuY2xhdXNlcy5xdWVyeU9ialtDXVtJXS52YWx1ZVsxXX1gOiJJTiI9PT1jZXx8Ik5PVCBJTiI9PT1j''@;'; put 'put ''ZT8odGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdW0ldLnZhbHVlLmZvckVhY2goUmU9PntpZihSZS5jaGVja2VkKXtsZXQgTmU9UmUudmFsOyJzdHJpbmciIT10eXBlb2YgTmV8fCgwLEl3LmlzU3BlY2lhbE1pc3NpbmcpKE5lKT9qLmxlbmd0aD4wP2orPWAsJHtOZX1gOmo9YCgke05lfWA6ai5s''@;'; put 'put ''ZW5ndGg+MD9qKz1gLCcke05lfSdgOmo9YCgnJHtOZX0nYH19KSxqLmxlbmd0aD4wJiYoais9IikiKSk6IiI9PT10aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWU/aj0iY2hhciI9PT10aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udHlwZT8iJyAn''@;'; put 'put ''IjoiLiI6ImNoYXIiPT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmVsZW1lbnRzW0ldLnR5cGUmJihqPWAnJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWV9J2ApLHkucHVzaCh7R1JPVVBfTE9HSUM6dGhpcy5jbGF1c2VzLmdyb3VwTG9naWMsU1VCR1JPVVBf''@;'; put 'put ''TE9HSUM6dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmNsYXVzZUxvZ2ljfHwiQU5EIixTVUJHUk9VUF9JRDpDLFZBUklBQkxFX05NOl9lLE9QRVJBVE9SX05NOmNlLFJBV19WQUxVRTpqfHx0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWV9KX1yZXR1cm4geX1nZXRW''@;'; put 'put ''YWx1ZXMoaCx2LHkpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy53aGVyZUNsYXVzZUxvYWRpbmc9ITA7bGV0IEM9IiI7dm9pZCAwIT09dGhpcy5saWJkcyYmKEM9dGhpcy5saWJkcyksdGhpcy5jbGVhclZhbHVlcyh2LHkpLHRoaXMuY2xhdXNlcy5xdWVy''@;'; put 'put ''eU9ialt5XS5lbGVtZW50c1t2XS52YWx1ZXM9W10sdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLnZhbHVlPSIiLHRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50c1t2XS5vcGVyYXRvcj0iPSIsdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLnZh''@;'; put 'put ''cmlhYmxlPWg7dHJ5e2lmKHZvaWQgMCE9PXRoaXMuY29scyl7Zm9yKGxldCBfZT0wO19lPHRoaXMuY29scy5sZW5ndGg7X2UrKyl0aGlzLmNvbHNbX2VdLk5BTUU9PT1oJiYodGhpcy5zZWxWYXIuaW5kZXg9X2UpO2NvbnN0IEk9dGhpcy5jb2xzW3RoaXMuc2VsVmFyLmluZGV4XS5ERFRZUEU7''@;'; put 'put ''dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLmRkdHlwZT1JLHRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50c1t2XS50eXBlPXRoaXMuY29sc1t0aGlzLnNlbFZhci5pbmRleF0uVFlQRSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0ub3BlcmF0''@;'; put 'put ''b3JzPSJudW0iPT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLnR5cGU/dGhpcy5udW1PcGVyYXRvcnM6dGhpcy5jaGFyT3BlcmF0b3JzO2xldCBqPVtdO3RoaXMuZHluYW1pY1doZXJlQ2xhdXNlJiYoaj10aGlzLmR5bmFtaWNXaGVyZUNsYXVzZUNyZWF0b3IoeSx2KSk7''@;'; put 'put ''Y29uc3QgY2U9WyJEQVRFVElNRSIsIlRJTUUiLCJEQVRFIl0uaW5jbHVkZXMoSSk7dGhpcy5zYXNTdG9yZVNlcnZpY2UuZ2V0UXVlcnlWYWx1ZXMoaCxDLGopLnRoZW4oX2U9PntpZih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0udmFsdWVzPV9lLnZhbHMubWFwKE5lPT57''@;'; put 'put ''Y29uc3QgS2U9Im51bSI9PT1fZS4kdmFscy52YXJzLlVORk9STUFUVEVELnR5cGU7bGV0IEJ0PUtlJiYoMCxJdy5pc1NwZWNpYWxNaXNzaW5nKShOZS5VTkZPUk1BVFRFRCk/Ii4iK05lLlVORk9STUFUVEVEOk5lLlVORk9STUFUVEVEO3JldHVybiBLZSYmbnVsbD09PUJ0JiYoQnQ9Ii4iKSx7''@;'; put 'put ''Zm9ybWF0dGVkOmNlP05lLkZPUk1BVFRFRC5zcGxpdCgiLiIpWzBdOk5lLkZPUk1BVFRFRCx1bmZvcm1hdHRlZDpCdH19KS5zbGljZSgwLDJlMyksdGhpcy53aGVyZUNsYXVzZUZuKCksdGhpcy5zZXRUb0dsb2JhbHMoKSx0aGlzLndoZXJlQ2xhdXNlTG9hZGluZz0hMSxudWxsIT09dGhpcy5w''@;'; put 'put ''ZW5kaW5nSU5WYWx1ZXNTZXQpe2NvbnN0e2NsYXVzZUluZGV4Ok5lLHF1ZXJ5SW5kZXg6S2V9PXRoaXMucGVuZGluZ0lOVmFsdWVzU2V0O3RoaXMuc2V0SU5WYWx1ZXMoTmUsS2UpLHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PW51bGx9dGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpfSkuY2F0Y2go''@;'; put 'put ''X2U9Pnt0aGlzLndoZXJlQ2xhdXNlTG9hZGluZz0hMX0pfX1jYXRjaChJKXt0aGlzLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoInB1YmxpYy9nZXRjb2x2YWxzIixJKX19KX1nZXRsb2dpYyhoKXt0aGlzLmxvZ2ljPWgsdGhpcy53aGVyZUNsYXVzZUZuKCl9c2V0TG9naWMoKXt0''@;'; put 'put ''aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfWlzQXJyKGgpe3JldHVybiBoIGluc3RhbmNlb2YgQXJyYXkmJmgubGVuZ3RoPjAmJnZvaWQgMCE9PWhbMF0uY2hlY2tlZH12YXJpYWJsZUlucHV0Q2hhbmdlKGgsdix5LEMpe3RoaXMuZ2V0VmFsdWVzKGgsdix5KX1zZXRW''@;'; put 'put ''YXJpYWJsZVZhbHVlcyhoLHYseSl7bGV0IEM9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLm9wZXJhdG9yOyJCRVRXRUVOIiE9PUMmJiJJTiIhPT1DJiYiTk9UIElOIiE9PUMmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0udmFsdWU9aC50b1N0cmlu''@;'; put 'put ''ZygpKSx0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfXNldFZhcmlhYmxlT3BlcmF0b3IoaCx2LHkpe2xldCBDPXRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50c1toXS52YWx1ZTtDIGluc3RhbmNlb2YgQXJyYXkmJiJJTiIhPT12JiYiTk9UIElOIiE9PXYm''@;'; put 'put ''JihDPUMgaW5zdGFuY2VvZiBBcnJheSYmMj09PUMubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIENbMF0/Q1swXToiIiksdGhpcy5jbGVhclZhbHVlc09wZXJhdG9yKGgseSksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLm9wZXJhdG9yPXYsKCI9Ij09PXZ8fCI+Ij09PXZ8''@;'; put 'put ''fCI8Ij09PXZ8fCI8PSI9PT12fHwiPj0iPT09dnx8Ik5FIj09PXYpJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLnZhbHVlPUMpLCJCRVRXRUVOIj09PXYmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbaF0udmFsdWU9W10sdGhpcy5jbGF1c2VzLnF1''@;'; put 'put ''ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLnZhbHVlLnB1c2goQyksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLnZhbHVlLnB1c2goIiIpKSwoIklOIj09PXZ8fCJOT1QgSU4iPT09dikmJnRoaXMuc2V0SU5WYWx1ZXMoeSxoKSx0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNl''@;'; put 'put ''dFRvR2xvYmFscygpfXNldElOVmFsdWVzKGgsdil7Y29uc3QgeT1bXSxDPXRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1t2XS52YWx1ZXM7Qy5sZW5ndGg8MSYmKHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PXtjbGF1c2VJbmRleDpoLHF1ZXJ5SW5kZXg6dn0pO2ZvcihsZXQgST0w''@;'; put 'put ''O0k8Qy5sZW5ndGg7SSsrKXkucHVzaCh7Y2hlY2tlZDohMSx2YWw6Q1tJXS5mb3JtYXR0ZWR9KTt0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbdl0udmFsdWU9eX1jbGVhclZhbHVlcyhoLHYpe3RoaXMuY2xhdXNlcy5xdWVyeU9ialt2XS5lbGVtZW50c1toXS52YWx1ZT0iIn1j''@;'; put 'put ''bGVhclZhbHVlc09wZXJhdG9yKGgsdil7bGV0IHk9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ZdLmVsZW1lbnRzW2hdLm9wZXJhdG9yOygiQkVUV0VFTiI9PT15fHwiSU4iPT09eXx8Ik5PVCBJTiI9PT15fHwiQ09OVEFJTlMiPT09eSkmJnRoaXMuY2xlYXJWYWx1ZXMoaCx2KX1oYXNJbnZhbGlk''@;'; put 'put ''Q2x1YXNlKGgpe2ZvcihsZXQgdiBvZiBoKXtpZihudWxsPT09di52YXJpYWJsZXx8bnVsbD09PXYub3BlcmF0b3J8fG51bGw9PT12LnZhbHVlfHwiIj09PXYudmFsdWUpcmV0dXJuIHYuaW52YWxpZENsYXVzZT0hMCwhMDt2LmludmFsaWRDbGF1c2U9ITF9cmV0dXJuIGguaW52YWxpZENsYXVz''@;'; put 'put ''ZT0hMSwhMX1oYXNJbnZhbGlkR3JvdXBDbHVhc2UoKXtmb3IobGV0IGg9MDtoPHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg7aCsrKXtpZih0aGlzLmhhc0ludmFsaWRDbHVhc2UodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzKSlyZXR1cm4gdGhpcy5jbGF1c2VzLnF1ZXJ5''@;'; put 'put ''T2JqW2hdLmludmFsaWRDbGF1c2U9ITAsITA7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmludmFsaWRDbGF1c2U9ITF9cmV0dXJuITF9YWRkQ2xhdXNlKGgpe2lmKHRoaXMuaGFzSW52YWxpZENsdWFzZSh0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHMpKXJldHVybiB2b2lkIHRo''@;'; put 'put ''aXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik7dGhpcy5jbGF1c2VBbXQucHVzaCgiIiksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1l''@;'; put 'put ''bnRzLnB1c2goe2xvZ2ljOm51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119KTtsZXQgdj10aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uY2xhdXNlTG9naWM7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmNs''@;'; put 'put ''YXVzZUxvZ2ljPXZvaWQgMD09PXY/IkFORCI6Ik9SIj09PXY/Ik9SIjoiQU5EIix0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfWFkZEdyb3VwQ2xhdXNlKCl7dGhpcy5oYXNJbnZhbGlkR3JvdXBDbHVhc2UoKT90aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFs''@;'; put 'put ''KCJFcnJvciIsIkNhbm5vdCBhZGQgbmV3IGNsYXVzZSwgd2hlbiBvbmUgb3IgbW9yZSBjbGF1c2VzIGFyZSBpbnZhbGlkIG9yIGVtcHR5LiIpOih0aGlzLmNsYXVzZXMucXVlcnlPYmoucHVzaCh7ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCx2YXJpYWJsZTpudWxsLG9wZXJhdG9y''@;'; put 'put ''Om51bGwsdmFsdWU6bnVsbCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV19KSx0aGlzLnNldFRvR2xvYmFscygpKX1pc0luSHRtbENvbGxlY3Rpb24oaCx2KXtmb3IobGV0IHk9MDt5PHYubGVuZ3RoO3krKylpZih2W3ldLnZhbHVlPT09aClyZXR1cm4hMDtyZXR1cm4hMX1yZW1vdmVHcm91cENs''@;'; put 'put ''YXVzZShoKXt0aGlzLmNsYXVzZXMucXVlcnlPYmouc3BsaWNlKGgsMSksdGhpcy53aGVyZUNsYXVzZUZuKCl9cmVtb3ZlQ2xhdXNlKGgsdil7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ZdLmVsZW1lbnRzLnNwbGljZShoLDEpLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxz''@;'; put 'put ''KCl9d2hlcmVDbGF1c2VGbihoPSExKXtjb25zdCB2PXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5jbGF1c2VzKTtpZihoJiYodi5xdWVyeU9ialswXS5lbGVtZW50cz1bXSksdm9pZCAwIT09dGhpcy5saWJkcyl7bGV0IHk9dGhpcy5zYXNTdG9yZVNlcnZpY2Uud2hlcmVDbGF1''@;'; put 'put ''c2VDcmVhdG9yKHYsdGhpcy5ncm91cExvZ2ljLHRoaXMubGliZHMpO2h8fCh0aGlzLndoZXJlQ2xhdXNlPXkud2hlcmVDbGF1c2UsdGhpcy53aGVyZVN0cmluZz15LnN0cmluZyl9fW5nQWZ0ZXJWaWV3SW5pdCgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhp''@;'; put 'put ''cy5fcmVtb3ZlUXJ5PXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZVF1ZXJ5LnN1YnNjcmliZShoPT57dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD49MSYmKHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg9MSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMubGVuZ3Ro''@;'; put 'put ''Pj0xJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzLmxlbmd0aD0xLHRoaXMuY2xhdXNlcy5xdWVyeU9ialswXS5lbGVtZW50cz1bXSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMucHVzaCh7bG9naWM6bnVsbCx0eXBlOm51bGwsdmFyaWFibGU6bnVsbCxvcGVy''@;'; put 'put ''YXRvcjpudWxsLHZhbHVlOm51bGwsdmFsdWVzOltdLG9wZXJhdG9yczpbXX0pLHRoaXMud2hlcmVDbGF1c2VGbigpKSl9KSx0aGlzLmNvbHVtbnNTdWI9dGhpcy5zYXNTdG9yZVNlcnZpY2UuY29sdW1ucy5zdWJzY3JpYmUoaD0+e2xldCB2PWguZGF0YS5jb2xzOygiaG9tZSI9PT1yaS5yb290''@;'; put 'put ''UGFyYW18fCJlZGl0b3IiPT09cmkucm9vdFBhcmFtKSYmcmkuZWRpdG9yLmZpbHRlci5jb2xzLmxlbmd0aDwxJiYodGhpcy5jb2xzPXYsdGhpcy5saWJkcz1oLmxpYmRzLHJpLmVkaXRvci5maWx0ZXIuY29scz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHYpKSksInZpZXciPT09cmkucm9v''@;'; put 'put ''dFBhcmFtJiZyaS52aWV3ZXIuZmlsdGVyLmNvbHMubGVuZ3RoPDEmJih0aGlzLmNvbHM9dix0aGlzLmxpYmRzPWgubGliZHMscmkudmlld2VyLmZpbHRlci5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodikpKSx0aGlzLmxpYmRzfHwodGhpcy5saWJkcz1oLmxpYmRzKX0pLHRoaXMu''@;'; put 'put ''dmFsdWVzU3ViPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZhbHVlcy5zdWJzY3JpYmUoaD0+eygiaG9tZSI9PT1yaS5yb290UGFyYW18fCJlZGl0b3IiPT09cmkucm9vdFBhcmFtKSYmcmkuZWRpdG9yLmZpbHRlci52YWxzLmxlbmd0aDwxJiYodGhpcy52YWxzPWgudmFscyxyaS5lZGl0b3IuZmls''@;'; put 'put ''dGVyLnZhbHM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoLnZhbHMpKSksInZpZXciPT09cmkucm9vdFBhcmFtJiZyaS52aWV3ZXIuZmlsdGVyLnZhbHMubGVuZ3RoPDEmJih0aGlzLnZhbHM9aC52YWxzLHJpLnZpZXdlci5maWx0ZXIudmFscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5''@;'; put 'put ''KGgudmFscykpKX0pfSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5nZXRGcm9tR2xvYmFscygpLHNldFRpbWVvdXQoKCk9PntsZXQgaD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdmFsc192YXJfaWQwXzAiKTtoJiZoLmZvY3VzKCl9LDUwMCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNvbHVt''@;'; put 'put ''bnNTdWImJnRoaXMuY29sdW1uc1N1Yi51bnN1YnNjcmliZSgpLHRoaXMudmFsdWVzU3ViJiZ0aGlzLnZhbHVlc1N1Yi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChrZyksS3QobXUpLEt0KGNjKSxLdChkMSkpfSxkLlx1''@;'; put 'put ''MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtcXVlcnkiXV0sZmVhdHVyZXM6W2dvKFt7cHJvdmlkZTpQMyx1c2VWYWx1ZToiZW4tR0IifV0pXSxkZWNsczozOCx2YXJzOjExLGNvbnN0czpbWzEsImNsci1mbGV4LXJvdyIsImNsci1mb3JtLWNvbnRyb2wiLCJtLTAiXSxbMSwi''@;'; put 'put ''Y2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1jaGVja2JveC13cmFwcGVyIl0sWyJuYW1lIiwiZHluYW1pYy13aGVyZS1jbGF1c2UiLCJ0eXBlIiwiY2hlY2tib3giLCJpZCIsImR5bmFtaWNXaGVyZUNsYXVzZSIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImZvciIsImR5''@;'; put 'put ''bmFtaWNXaGVyZUNsYXVzZSIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwibWwtMTUiXSxbIm5hbWUiLCJkeW5hbWljLXdoZXJlLWNsYXVzZSIsInR5cGUiLCJjaGVja2JveCIsImlkIiwidXNlUGlja2VycyIsMywibmdNb2RlbCIsIm5nTW9kZWxD''@;'; put 'put ''aGFuZ2UiLCJjaGFuZ2UiXSxbImZvciIsInVzZVBpY2tlcnMiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWzEsImNsci1yb3ciXSxbMSwic2VsZWN0IiwiY2xyLWNvbC1tZC0yIiwibWItMzAiXSxbImNsclNlbGVjdCIsIiIsMywiZGlzYWJsZWQiLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJd''@;'; put 'put ''LFszLCJzZWxlY3RlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNsci1jb2wtbWQtMTAiLCJtYi0zMCJdLFsxLCJsaW5lLW51bWJlcnMiLCJsYW5ndWFnZS1tYXJrdXAiXSxbImNsYXNzIiwicHJvZ3Jlc1N0YXRpYyBwcm9ncmVzcyBsb29wIiw0LCJuZ0lmIl0sWzEsImxhbmd1YWdlLXNx''@;'; put 'put ''bCJdLFsxLCJjb250ZW50Il0sWzEsImNsYXVzZXMtY29udGFpbmVyIiwiY2xyLWNvbC1tZC0xMiJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsImNsYXVzZS1yb3ciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicGlja2VyIiwiIl0sWyJub3RQaWNrZXIiLCIiXSxbIm5vdFBpY2tlclJhbmdlIiwiIl0s''@;'; put 'put ''WyJjaGVja2JveFZhbHVlcyIsIiJdLFszLCJzZWxlY3RlZCJdLFsxLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jlc3MiLCJsb29wIl0sWzEsImNsYXVzZS1yb3ciXSxbMSwiY2xhdXNlLWxvZ2ljIiwiY2xyLWNvbC1tZC0yIl0sWzEsInNlbGVjdCJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVs''@;'; put 'put ''IiwiZGlzYWJsZWQiLCJuZ01vZGVsQ2hhbmdlIl0sWyJjbGFzcyIsImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2sgbXQtMTAiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImNsYXVzZS1xdWVyeSIsImNsci1jb2wtbWQtMTAiXSxbInNoYXBlIiwidGltZXMiLCJzaXplIiwiMzYiLCJjbGFzcyIs''@;'; put 'put ''InJlbW92ZS1ncm91cC1jbGF1c2UtYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItcm93IiwzLCJpbnZhbGlkLWNsYXVzZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwiYnRuLWJsb2NrIiwibXQtMTAiLDMsImNsaWNrIl0sWyJz''@;'; put 'put ''aGFwZSIsInBsdXMiXSxbInNoYXBlIiwidGltZXMiLCJzaXplIiwiMzYiLDEsInJlbW92ZS1ncm91cC1jbGF1c2UtYnV0dG9uIiwzLCJjbGljayJdLFsxLCJ2YXJpYWJsZS1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWzEsImRhdGFsaXN0LXdyYXBwZXIiXSxbImxhYmVsIiwi''@;'; put 'put ''VmFyaWFibGUiLDMsImlkIiwiaW5wdXRJZCIsImVtaXRPbmx5U2VsZWN0ZWQiLCJ2YWx1ZSIsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50Il0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJvcGVyYXRvci1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWyJjbHJTZWxlY3Qi''@;'; put 'put ''LCIiLDEsIm10LTIiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJjbGFzcyIsInZhbHVlLWNvbCBmb3JtLWdyb3VwIGNsci1jb2wtbWQtMyIsNCwibmdWYXIiXSxbMSwiY2xhdXNlLWJ1dHRvbnMiLCJjbHItY29sLW1kLTIiLCJidG4tZ3JvdXAiXSxbMSwiYnRuIiwiYnRuLXdhcm5p''@;'; put 'put ''bmciLCJidG4tYmxvY2siLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInNoYXBlIiwibWludXMiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLCJidG4tYmxvY2siLDMsImNsaWNrIl0sWzEsInZhbHVlLWNvbCIsImZvcm0tZ3JvdXAiLCJjbHItY29sLW1kLTMiXSxbImNsYXNzIiwiY2hlY2tib3gt''@;'; put 'put ''dmFscyIsNCwibmdJZiJdLFsiY2xhc3MiLCJzaW5nbGUtZmllbGQtdmFscyIsNCwibmdJZiJdLFsiY2xhc3MiLCJyYW5nZS12YWxzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNvbnRhaW5zLXZhbHMiLDQsIm5nSWYiXSxbMSwiY2hlY2tib3gtdmFscyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRu''@;'; put 'put ''IiwiYnRuLWxpbmsiLDMsImNsaWNrIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJzaW5nbGUtZmllbGQtdmFscyJdLFsxLCJyYW5nZS12YWxzIl0sWzEsImZyb20iXSxbMSwidG8iXSxbMSwiY29udGFpbnMtdmFscyJdLFsxLCJjbHItY29u''@;'; put 'put ''dHJvbC1sYWJlbCJdLFsidHlwZSIsInRleHQiLDEsImlucHV0LXZhbCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJsYWJlbCIsIlZhbHVlIiwidHlwZSIsImRhdGUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJ''@;'; put 'put ''ZCIsInZhbHVlIiwidmFsdWVDaGFuZ2UiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwiZGF0ZSIsMywiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCJdLFsidHlwZSIsInRpbWUiLDMsImRpc2FibGVTb2Z0c2VsZWN0Iiwi''@;'; put 'put ''aW5wdXRJZCIsInZhbHVlIiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwidGltZSIsMywiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiLCJvbklucHV0RXZlbnQiXSxbImxhYmVsIiwiVmFsdWUiLDMsImlucHV0SWQiLCJ2''@;'; put 'put ''YWx1ZSIsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50Il0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywidmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLDMsImlucHV0SWQiLCJ2YWx1ZSIsImRpc2FibGVkIiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiXSxbMSwiaW4t''@;'; put 'put ''dmFsdWVzLW1vZGFsIiwzLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbImNsYXNzIiwibm8tdmFsdWVzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZvcm0tYmxvY2siLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVy''@;'; put 'put ''Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMSwibm8tdmFsdWVzIl0sWzEsImZvcm0tYmxvY2siXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5j''@;'; put 'put ''dGlvbihoLHYpezEmaCYmKHR0KDAsImRpdiIsMCkoMSwiZGl2IiwxKSgyLCJkaXYiLDIpKDMsImlucHV0IiwzKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuZHluYW1pY1doZXJlQ2xhdXNlPUN9KSxpdCgpLHR0KDQsImxhYmVsIiw0KSxXdCg1LCJEeW5hbWljIHdo''@;'; put 'put ''ZXJlIGNsYXVzZSIpLGl0KCkoKSgpLHR0KDYsImRpdiIsNSkoNywiZGl2IiwyKSg4LCJpbnB1dCIsNiksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LnVzZVBpY2tlcnM9Q30pKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHYudXNlUGlja2Vyc0NoYW5nZSgpfSks''@;'; put 'put ''aXQoKSx0dCg5LCJsYWJlbCIsNyksV3QoMTAsIiBVc2UgcGlja2VycyAiKSxpdCgpKCkoKSgpLHR0KDExLCJkaXYiLDgpKDEyLCJkaXYiLDkpKDEzLCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDE0LCJsYWJlbCIpLFd0KDE1LCJHcm91cCBsb2dpYyIpLGl0KCksdHQoMTYsInNlbGVjdCIsMTAp''@;'; put 'put ''LFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5ncm91cExvZ2ljPUN9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zZXRHcm91cExvZ2ljKHYuZ3JvdXBMb2dpYyl9KSxubigxNywkZ3QsMiwyLCJvcHRpb24iLDExKSxpdCgpKCkoKSx0dCgxOCwi''@;'; put 'put ''ZGl2IiwxMikoMTksInByZSIsMTMpLFd0KDIwLCIgICAgICAiKSxubigyMSxxZ3QsNCwwLCJkaXYiLDE0KSxXdCgyMiwiXG5cbiAgICAgICIpLHR0KDIzLCJjb2RlIiwxNSksV3QoMjQpLGl0KCksV3QoMjUsIlxuICAgICIpLGl0KCkoKSgpLHR0KDI2LCJkaXYiLDE2KSgyNywiZGl2IiwxNyks''@;'; put 'put ''bm4oMjgsZW10LDEsMCwiZGl2IiwxOCksbm4oMjksd210LDE1LDgsImRpdiIsMTkpLGl0KCkoKSxubigzMCxrbXQsNCw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwyMCxfbCksbm4oMzIsTW10LDIsMywibmctdGVtcGxhdGUiLG51bGwsMjEsX2wpLG5uKDM0LHhtdCwyLDQsIm5nLXRlbXBsYXRlIixu''@;'; put 'put ''dWxsLDIyLF9sKSxubigzNixMbXQsOSw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwyMyxfbCkpLDImaCYmKHN0KDMpLHh0KCJuZ01vZGVsIix2LmR5bmFtaWNXaGVyZUNsYXVzZSksc3QoNSkseHQoIm5nTW9kZWwiLHYudXNlUGlja2Vycyksc3QoOCkseHQoImRpc2FibGVkIiwobnVsbD09di5jbGF1''@;'; put 'put ''c2VzfHxudWxsPT12LmNsYXVzZXMucXVlcnlPYmo/bnVsbDp2LmNsYXVzZXMucXVlcnlPYmoubGVuZ3RoKTwxKSgibmdNb2RlbCIsdi5ncm91cExvZ2ljKSxzdCgxKSx4dCgibmdGb3JPZiIsdi5sb2dpY09wZXJhdG9ycyksc3QoNCkseHQoIm5nSWYiLHYud2hlcmVDbGF1c2VMb2FkaW5nKSxz''@;'; put 'put ''dCgzKSxqaSh2LndoZXJlQ2xhdXNlKSxzdCgzKSxIaSgiY2xyLWNvbC1tZC0xMCIsKG51bGw9PXYuY2xhdXNlc3x8bnVsbD09di5jbGF1c2VzLnF1ZXJ5T2JqP251bGw6di5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aCk+MSksc3QoMSkseHQoIm5nSWYiLChudWxsPT12LmNsYXVzZXN8fG51bGw9''@;'; put 'put ''PXYuY2xhdXNlcy5xdWVyeU9iaj9udWxsOnYuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGgpPjEpLHN0KDEpLHh0KCJuZ0Zvck9mIix2LmNsYXVzZXMucXVlcnlPYmopKX0sZGVwZW5kZW5jaWVzOltxbCxCbyx6ZCxaZCxWNixKMyxYMyxwMSx1aCxFZixqcyxfcyxHMixhMyxsMyxhcyxBdyxscSx2''@;'; put 'put ''dyxJWixUWixlT2UsdE9lLFhndCxLZ3RdLHN0eWxlczpbJ0BjaGFyc2V0ICJVVEYtOCI7LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtbG9naWNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2Vu''@;'; put 'put ''dGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNlOWU5ZTk7cGFkZGluZzoxNXB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRk''@;'; put 'put ''aW5nOjMwcHggMCAyMHB4IDIwcHg7YmFja2dyb3VuZDojZmJmOGY4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpyZWxhdGl2ZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gPiAuY2xyLXJvd1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdID4gLmNsci1yb3dbX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFzdC1jaGlsZCl7cGFkZGluZy1ib3R0b206MTVweDttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdi''@;'; put 'put ''YSgwLDAsMCwuMTYpfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZW1vdmUtZ3JvdXAtY2xhdXNlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''cG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDtyaWdodDoxMHB4O2NvbG9yOmdyYXl9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhcmlhYmxlLWNv''@;'; put 'put ''bFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7cGFkZGluZy1ib3R0b206MXB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC52YXJpYWJsZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVz''@;'; put 'put ''ZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFyaWFibGUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhbGlzdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vcGVyYXRvci1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jb250ZW50W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vcGVyYXRvci1jb2xbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNlbGVjdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hl''@;'; put 'put ''aWdodDo0NXB4O21hcmdpbi10b3A6MDt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3BhZGRpbmctYm90dG9tOjFweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''dmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jaGVja2JveC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO3BhZGRpbmc6MCA1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMyl9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVz''@;'; put 'put ''ZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY2hlY2tib3gtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICBjbHItY2hlY2tib3gtY29udGFpbmVyW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjB9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''Y2hlY2tib3gtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICBzZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEyMHB4O292ZXJmbG93LXk6c2Nyb2xsfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5l''@;'; put 'put ''cltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAl''@;'; put 'put ''fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXJ7bWF4LXdpZHRoOm5vbmV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlciAuY2xyLWlucHV0LWdyb3Vwe3dpZHRoOjEwMCV9LmNvbnRlbnRb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ID4gaW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVy''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xh''@;'; put 'put ''dXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0''@;'; put 'put ''aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cHt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MTBweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5mcm9tW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLnRvW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4td2lkdGg6MTAwcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0gPiBpbnB1dFtfbmdjb250ZW50LSVDT01QJV0s''@;'; put 'put ''IC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLnRvW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLnRvW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IGlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxN3B4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVl''@;'; put 'put ''cnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGFpbnMtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNl''@;'; put 'put ''cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xy''@;'; put 'put ''LWlucHV0LXdyYXBwZXJ7bWF4LXdpZHRoOm5vbmV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuY29udGFpbnMtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyIC5jbHItaW5wdXQtZ3JvdXB7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgaW5w''@;'; put 'put ''dXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgLmNsYXVzZS1idXR0b25zW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5l''@;'; put 'put ''cltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtYnV0dG9uc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde21pbi13aWR0aDphdXRvfS5pbnZhbGlkLWNsYXVzZVtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkICNkOTRiMzF9LmNsYXVzZS1yb3dbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbjowfS5jbGF1c2Utcm93W19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcntwb3NpdGlvbjpyZWxhdGl2ZTtjb250''@;'; put 'put ''ZW50OiIiO2hlaWdodDouNDE2NjdyZW07d2lkdGg6LjQxNjY3cmVtO3RvcDouMjkxNjdyZW07cmlnaHQ6LjI1cmVtO2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZ1xc''@;'; put 'put ''MjAyNiUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbjowfVtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV06bm90KHByZSkgPiBjb2RlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXSwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYmY4Zjh9cHJlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtwYWRkaW5nOjhweDttYXJnaW46MDtib3JkZXItcmFkaXVzOjFweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLWhlaWdodDo2NnB4O3Bvc2l0aW9uOnJlbGF0aXZlfXByZVtjbGFzcyo9bGFuZ3VhZ2UtXVtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICBzcGFuLnNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTBweDt0b3A6MTBweH1wcmVbY2xhc3MqPWxhbmd1YWdlLV1bX25nY29udGVudC0lQ09NUCVdICAgY29kZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3Bh''@;'; put 'put ''Y2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay13b3JkfS5pbnB1dC12YWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHg7YmFja2dyb3VuZDojZmJmOGY4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTk5OTl9Y2xyLWRhdGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtt''@;'; put 'put ''YXJnaW4tdG9wOjJweCFpbXBvcnRhbnR9aW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjNiM2IzfWlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vz''@;'; put 'put ''e291dGxpbmU6bm9uZX0uaW4tdmFsdWVzLW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb2RhbC1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNkOGQ4ZDg7bWFyZ2luLXRvcDoxMHB4fS5wcm9ncmVzc1tfbmdjb250ZW50LSVDT01QJV0sIC5wcm9n''@;'; put 'put ''cmVzcy1zdGF0aWNbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O3RvcDozcHh9J119KSxkfSkoKSxyT2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlsZU92ZXI9ITEsdGhpcy5maWxlRHJvcHBl''@;'; put 'put ''ZD1uZXcgZm4sdGhpcy5maWxlRHJhZ2dlZE92ZXI9bmV3IGZufW9uRHJhZ092ZXIoaCl7aC5wcmV2ZW50RGVmYXVsdCgpLGguc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jb250YWluc0ZpbGVzKGgpJiYhdGhpcy5maWxlT3ZlciYmKHRoaXMuZmlsZU92ZXI9ITAsdGhpcy5maWxlRHJhZ2dlZE92''@;'; put 'put ''ZXIuZW1pdCgpKX1vbkRyYWdMZWF2ZShoKXtoLnByZXZlbnREZWZhdWx0KCksaC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExfW9uZHJvcChoKXtoLnByZXZlbnREZWZhdWx0KCksaC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExO2NvbnN0IHY9aC5kYXRhVHJh''@;'; put 'put ''bnNmZXIuZmlsZXM7di5sZW5ndGg+MCYmdGhpcy5maWxlRHJvcHBlZC5lbWl0KHYpfWNvbnRhaW5zRmlsZXMoaCl7aWYoaCYmaC5kYXRhVHJhbnNmZXImJmguZGF0YVRyYW5zZmVyLnR5cGVzKWZvcihsZXQgdj0wO3Y8aC5kYXRhVHJhbnNmZXIudHlwZXMubGVuZ3RoO3YrKylpZigiRmlsZXMi''@;'; put 'put ''PT1oLmRhdGFUcmFuc2Zlci50eXBlc1t2XSlyZXR1cm4hMH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImFwcERyYWdOZHJvcCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5n''@;'; put 'put ''czpmdW5jdGlvbihoLHYpezEmaCYmWm4oImRyYWdvdmVyIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbkRyYWdPdmVyKEMpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EcmFnTGVhdmUoQyl9KSgiZHJvcCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25kcm9wKEMpfSksMiZo''@;'; put 'put ''JiZIaSgiZmlsZW92ZXIiLHYuZmlsZU92ZXIpfSxvdXRwdXRzOntmaWxlRHJvcHBlZDoiZmlsZURyb3BwZWQiLGZpbGVEcmFnZ2VkT3ZlcjoiZmlsZURyYWdnZWRPdmVyIn19KSxkfSkoKTtmdW5jdGlvbiBPbXQoZCxnKXsxJmQmJih0dCgwLCJwIiw4KSxXdCgxLCIgTm8gZGF0YXNldCBtZXRh''@;'; put 'put ''IHRvIHNob3cuICIpLGl0KCkpfWZ1bmN0aW9uIFJtdChkLGcpe2lmKDEmZCYmKHR0KDAsImNsci1kZy1yb3ciKSgxLCJjbHItZGctY2VsbCIpLFd0KDIpLGl0KCksdHQoMywiY2xyLWRnLWNlbGwiKSxXdCg0KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgyKSxqaShoLk5B''@;'; put 'put ''TUUpLHN0KDIpLGppKGguVkFMVUUpfX1mdW5jdGlvbiBCbXQoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItdGFiLWNvbnRlbnQiLDExKSgxLCJjbHItZGF0YWdyaWQiKSgyLCJjbHItZGctY29sdW1uIiksV3QoMywiTmFtZSIpLGl0KCksdHQoNCwiY2xyLWRnLWNvbHVtbiIpLFd0KDUsIlZhbHVl''@;'; put 'put ''IiksaXQoKSxubig2LFJtdCw1LDIsImNsci1kZy1yb3ciLDUpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0O3N0KDYpLHh0KCJuZ0Zvck9mIixoLmRzbWV0YSl9fWZ1bmN0aW9uIFBtdChkLGcpe2lmKDEmZCYmKHR0KDAsImNsci10YWIiKSgxLCJidXR0b24iLDkpLFd0KDIp''@;'; put 'put ''LGl0KCksbm4oMyxCbXQsNywxLCJjbHItdGFiLWNvbnRlbnQiLDEwKSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1nLmluZGV4O3N0KDIpLGppKGguZ3JvdXApLHN0KDEpLHh0KCJjbHJJZkFjdGl2ZSIsMD09PXYpfX1sZXQgaU9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3Io''@;'; put 'put ''KXt0aGlzLm9wZW49ITEsdGhpcy5kc21ldGE9W10sdGhpcy5vcGVuQ2hhbmdlPW5ldyBmbix0aGlzLmRzbWV0YUdyb3VwcGVkPVtdfW5nT25Jbml0KCl7fW5nT25DaGFuZ2VzKGgpe3ZhciB2LHk7KG51bGw9PT0oeT1udWxsPT09KHY9aC5kc21ldGEpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmN1''@;'; put 'put ''cnJlbnRWYWx1ZSl8fHZvaWQgMD09PXk/dm9pZCAwOnkubGVuZ3RoKT4wJiZ0aGlzLnBhcnNlRFNNZXRhKCl9cGFyc2VEU01ldGEoKXt0aGlzLmRzbWV0YUdyb3VwcGVkPVtdO2ZvcihsZXQgaCBvZiB0aGlzLmRzbWV0YSl7bGV0IHY9dGhpcy5kc21ldGFHcm91cHBlZC5maW5kSW5kZXgoeT0+''@;'; put 'put ''eS5ncm91cD09PWguT0RTX1RBQkxFKTt2PDAmJih2PXRoaXMuZHNtZXRhR3JvdXBwZWQucHVzaCh7Z3JvdXA6aC5PRFNfVEFCTEUsZHNtZXRhOltdfSktMSksdGhpcy5kc21ldGFHcm91cHBlZFt2XS5kc21ldGEucHVzaChoKX19b25PcGVuQ2hhbmdlKGgpe3RoaXMub3Blbj1oLHRoaXMub3Bl''@;'; put 'put ''bkNoYW5nZS5lbWl0KGgpfW9uQ2xvc2VDbGljaygpe3RoaXMub25PcGVuQ2hhbmdlKCExKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1kYXRhc2V0LWluZm8iXV0saW5wdXRz''@;'; put 'put ''OntvcGVuOiJvcGVuIixkc21ldGE6ImRzbWV0YSJ9LG91dHB1dHM6e29wZW5DaGFuZ2U6Im9wZW5DaGFuZ2UifSxmZWF0dXJlczpbZDJdLGRlY2xzOjEwLHZhcnM6NSxjb25zdHM6W1szLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxP''@;'; put 'put ''cGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtb2RhbC1ib2R5Il0sWyJjbGFzcyIsInRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbHJMYXlvdXQiLCJ2ZXJ0aWNhbCJdLFs0LCJuZ0ZvciIsIm5nRm9y''@;'; put 'put ''T2YiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsiY2xyVGFiTGluayIsIiIsImlkIiwibGluazEiXSxbImlkIiwiY29udGVudDEiLCJjbGFzcyIsImQt''@;'; put 'put ''ZmxleCBjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCIsNCwiY2xySWZBY3RpdmUiXSxbImlkIiwiY29udGVudDEiLDEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwidy0xMDAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJjbHItbW9k''@;'; put 'put ''YWwiLDApLFpuKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uT3BlbkNoYW5nZShDKX0pLHR0KDEsImgzIiwxKSxXdCgyLCJEYXRhc2V0IE1ldGEiKSxpdCgpLHR0KDMsImRpdiIsMiksbm4oNCxPbXQsMiwwLCJwIiwzKSx0dCg1LCJjbHItdGFicyIsNCksbm4o''@;'; put 'put ''NixQbXQsNCwyLCJjbHItdGFiIiw1KSxpdCgpKCksdHQoNywiZGl2Iiw2KSg4LCJidXR0b24iLDcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkNsb3NlQ2xpY2soKX0pLFd0KDksIiBDbG9zZSAiKSxpdCgpKCkoKSksMiZoJiYoeHQoImNsck1vZGFsT3BlbiIsdi5vcGVuKSgi''@;'; put 'put ''Y2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITApLHN0KDQpLHh0KCJuZ0lmIix2LmRzbWV0YUdyb3VwcGVkLmxlbmd0aDwxKSxzdCgyKSx4dCgibmdGb3JPZiIsdi5kc21ldGFHcm91cHBlZCkpfSxkZXBlbmRlbmNpZXM6W3FsLEJvLGxPLFNTLE1TLGt3LHVPLHhTLFRT''@;'; put 'put ''LEVTLF93LHJPLG9PLGEzLGwzLENaLHBPLG1PLHpaLGdPLGRPLGpaXSxzdHlsZXM6WyIubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBjbHItdGFic1tfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDo3MHZofS5tb2RhbC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRh''@;'; put 'put ''Yi1jb250ZW50e3dpZHRoOjEwMCU7b3ZlcmZsb3c6YXV0b30ubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICAgIC50YWItY29udGVudCAuZGF0YWdyaWQtb3V0ZXItd3JhcHBlcnt3aWR0aDoxMDAlfSJdfSksZH0pKCk7ZnVuY3Rpb24gRm10KGQsZyl7aWYoMSZkJiYodHQoMCwic3Bh''@;'; put 'put ''biIsMTMpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSxqaShoLmdlbmVyYXRlZFJlY29yZFVybCl9fWZ1bmN0aW9uIEhtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMTQpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChV''@;'; put 'put ''dCgyKS5nZW5lcmF0ZUVkaXRSZWNvcmRVcmwoKSl9KSxXdCgxKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgyKTt4dCgiZGlzYWJsZWQiLGguZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZyksc3QoMSksVWkoIiAiLGguZ2VuZXJhdGVkUmVjb3JkVXJsPyJjb3B5IHRvIGNsaXBib2FyZCI6''@;'; put 'put ''aC5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPyJHZW5lcmF0aW5nIHVybC4uLiI6IkxpbmsgdG8gdGhpcyByZWNvcmQiLCIgIil9fWZ1bmN0aW9uIE5tdChkLGcpe2lmKDEmZCYmKEwwKDApLG5uKDEsRm10LDIsMSwic3BhbiIsMTEpLG5uKDIsSG10LDIsMiwiYnV0dG9uIiwxMiksTzAo''@;'; put 'put ''KSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoIm5nSWYiLCEobnVsbCE9aC5jdXJyZW50UmVjb3JkJiZoLmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uKSksc3QoMSkseHQoIm5nSWYiLCEobnVsbCE9aC5jdXJyZW50UmVjb3JkJiZoLmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uKSl9''@;'; put 'put ''fWZ1bmN0aW9uIFZtdChkLGcpezEmZCYmKHR0KDAsImRpdiIsMTUpKDEsInNwYW4iLDE2KSxXdCgyLCIgTG9hZGluZy4uLiAiKSxpdCgpKCkpfWZ1bmN0aW9uIGptdChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDI5KX1mdW5jdGlvbiBabXQoZCxnKXsxJmQmJih0dCgwLCJzcGFuIiwzMCks''@;'; put 'put ''V3QoMSwiIExvYWRpbmcuLi4gIiksaXQoKSl9ZnVuY3Rpb24gem10KGQsZyl7MSZkJiZicigwLCJjZHMtaWNvbiIsMzEpfWZ1bmN0aW9uIEdtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pbnB1dC1jb250YWluZXIiLDMzKSgxLCJpbnB1dCIsMzQpLFpuKCJmb2N1c2lu''@;'; put 'put ''IixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoMykuaW5kZXg7cmV0dXJuIGJ0KFV0KDIpLm9uUmVjb3JkSW5wdXRGb2N1cyh5LEMpKX0pKCJwYXN0ZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoNSkucmVjb3JkSW5wdXRQYXN0ZSh5KSl9KSgiaW5wdXQiLGZ1bmN0aW9uKHkp''@;'; put 'put ''e2EoaCk7Y29uc3QgQz1VdCgzKS4kaW1wbGljaXQsST1VdCgyKTtyZXR1cm4gSS5yZWNvcmRJbnB1dENoYW5nZSh5LEMua2V5KSxidChJLmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uPSEwKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoMykuJGltcGxp''@;'; put 'put ''Y2l0O3JldHVybiBidChVdCgyKS5jdXJyZW50UmVjb3JkW0Mua2V5XT15KX0pLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMykuJGltcGxpY2l0LHY9VXQoMik7SGkoImludmFsaWQtZGF0YSIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoaC5rZXkpKSxzdCgxKSx4dCgi''@;'; put 'put ''bmdNb2RlbCIsdi5jdXJyZW50UmVjb3JkW2gua2V5XSl9fWZ1bmN0aW9uIFdtdChkLGcpezEmZCYmaDEoMCl9Y29uc3Qgam1lPWZ1bmN0aW9uKGQsZyl7cmV0dXJue2NvbDpkLGNvbEluZGV4Omd9fTtmdW5jdGlvbiBZbXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiKSxubigxLFdtdCwxLDAs''@;'; put 'put ''Im5nLWNvbnRhaW5lciIsMzUpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgzKSx2PWguJGltcGxpY2l0LHk9aC5pbmRleDtVdCgyKTtjb25zdCBDPXVhKDE2KTtzdCgxKSx4dCgibmdUZW1wbGF0ZU91dGxldCIsQykoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixCZCgyLGptZSx2LHkpKX19Y29u''@;'; put 'put ''c3QgVW10PWZ1bmN0aW9uKCl7cmV0dXJuWyJudW1lcmljIix2b2lkIDBdfSxvT2U9ZnVuY3Rpb24oKXtyZXR1cm5bImF1dG9jb21wbGV0ZSJdfTtmdW5jdGlvbiBRbXQoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLEdtdCwyLDMsImNsci1pbnB1dC1jb250YWluZXIiLDMyKSxubigyLFltdCwy''@;'; put 'put ''LDUsImRpdiIsMiksTzAoKSksMiZkKXtjb25zdCBoPVV0KDIpLiRpbXBsaWNpdCx2PVV0KDIpO2xldCB5LEM7c3QoMSkseHQoIm5nSWYiLGxzKDIsVW10KS5pbmNsdWRlcyhudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5n''@;'; put 'put ''ZXRSdWxlKGgua2V5KSk/bnVsbDp5LmVkaXRvcikpLHN0KDEpLHh0KCJuZ0lmIixscygzLG9PZSkuaW5jbHVkZXMobnVsbD09di5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oQz12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShoLmtleSkpP251bGw6Qy5lZGl0b3IpKX19''@;'; put 'put ''ZnVuY3Rpb24gSm10KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIpKDEsInRleHRhcmVhIiwzNiwzNyksWm4oImZvY3VzaW4iLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgzKS5pbmRleDtyZXR1cm4gYnQoVXQoMikub25SZWNvcmRJ''@;'; put 'put ''bnB1dEZvY3VzKHksQykpfSkoInBhc3RlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCg1KS5yZWNvcmRJbnB1dFBhc3RlKHkpKX0pKCJpbnB1dCIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPVV0KDMpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoMikucmVjb3JkSW5wdXRDaGFuZ2Uo''@;'; put 'put ''eSxDLmtleSkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgzKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KDIpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSksV3QoMywiICAgICAgICAgICAgICAgICAgIiksaXQoKSx0dCg0LCJjbHItY29udHJvbC1oZWxw''@;'; put 'put ''ZXIiKSxXdCg1KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPXVhKDIpLHY9VXQoMykuJGltcGxpY2l0LHk9VXQoMik7bGV0IEMsSSxqO3N0KDEpLEhpKCJpbnZhbGlkLWRhdGEiLHkuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluY2x1ZGVzKHYua2V5KSkoIm5vdC1jaGFyIixudWxsPT15LmN1''@;'; put 'put ''cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShDPXkuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpDLnR5cGUpLHh0KCJyb3dzIix2LnZhbHVlLmxlbmd0aD44MD82OjEpKCJuZ01vZGVsIix5LmN1cnJlbnRSZWNvcmRbdi5rZXldKSgibWF4TGVuZ3RoIixu''@;'; put 'put ''dWxsPT15LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShJPXkuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpJLmxlbmd0aCksc3QoNCkscmgoIiIsaC52YWx1ZS5sZW5ndGgsIiAvICIsbnVsbD09eS5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxs''@;'; put 'put ''PT0oaj15LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZSh2LmtleSkpP251bGw6ai5sZW5ndGgsIiIpfX1mdW5jdGlvbiBYbXQoZCxnKXsxJmQmJmgxKDApfWZ1bmN0aW9uIEttdChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIpLG5uKDEsWG10LDEsMCwibmctY29udGFpbmVyIiwzNSks''@;'; put 'put ''aXQoKSksMiZkKXtjb25zdCBoPVV0KDMpLHY9aC4kaW1wbGljaXQseT1oLmluZGV4O1V0KDIpO2NvbnN0IEM9dWEoMTYpO3N0KDEpLHh0KCJuZ1RlbXBsYXRlT3V0bGV0IixDKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLEJkKDIsam1lLHYseSkpfX1jb25zdCAkbXQ9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm5bdm9pZCAwXX07ZnVuY3Rpb24gcW10KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxKbXQsNiw5LCJjbHItdGV4dGFyZWEtY29udGFpbmVyIiwyKSxubigyLEttdCwyLDUsImRpdiIsMiksTzAoKSksMiZkKXtjb25zdCBoPVV0KDIpLiRpbXBsaWNpdCx2PVV0KDIpO2xldCB5LEM7c3Qo''@;'; put 'put ''MSkseHQoIm5nSWYiLGxzKDIsJG10KS5pbmNsdWRlcyhudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/bnVsbDp5LmVkaXRvcikpLHN0KDEpLHh0KCJuZ0lmIixscygzLG9PZSkuaW5jbHVkZXMo''@;'; put 'put ''bnVsbD09di5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oQz12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShoLmtleSkpP251bGw6Qy5lZGl0b3IpKX19ZnVuY3Rpb24gZTd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRleHRhcmVhLWNvbnRhaW5l''@;'; put 'put ''ciIsMzgpKDEsInRleHRhcmVhIiwzOSksWm4oInBhc3RlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCg0KS5yZWNvcmRJbnB1dFBhc3RlKHkpKX0pKCJpbnB1dCIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPVV0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoMikucmVjb3JkSW5w''@;'; put 'put ''dXRDaGFuZ2UoeSxDLmtleSkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KDIpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSksaXQoKSx0dCgyLCJjbHItY29udHJvbC1oZWxwZXIiKSxXdCgzLCJISDptbTpz''@;'; put 'put ''cyIpLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMikuJGltcGxpY2l0LHY9VXQoMik7bGV0IHk7c3QoMSksSGkoImludmFsaWQtZGF0YSIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoaC5rZXkpKSgibm90LWNoYXIiLG51bGw9PXYuY3VycmVudFJlY29yZFZhbGlkYXRv''@;'; put 'put ''cnx8bnVsbD09KHk9di5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoaC5rZXkpKT9udWxsOnkudHlwZSkseHQoInJvd3MiLGgudmFsdWUubGVuZ3RoPjgwPzY6MSkoIm5nTW9kZWwiLHYuY3VycmVudFJlY29yZFtoLmtleV0pfX1mdW5jdGlvbiB0N3QoZCxnKXtpZigxJmQpe2NvbnN0''@;'; put 'put ''IGg9eWkoKTt0dCgwLCJkaXYiLDM4KSgxLCJ0ZXh0YXJlYSIsNDApLFpuKCJwYXN0ZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoNCkucmVjb3JkSW5wdXRQYXN0ZSh5KSl9KSgiaW5wdXQiLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0''@;'; put 'put ''KFV0KDIpLnJlY29yZElucHV0Q2hhbmdlKHksQy5rZXkpKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgyKS5jdXJyZW50UmVjb3JkW0Mua2V5XT15KX0pLGl0KCksdHQoMiwiY2xyLWRhdGUtY29udGFpbmVy''@;'; put 'put ''Iiw0MSkoMywiaW5wdXQiLDQyKSxabigiY2xyRGF0ZUNoYW5nZSIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPVV0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoMikucmVjb3JkRGF0ZUNoYW5nZSh5LEMua2V5KSl9KSxpdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMikuJGltcGxpY2l0''@;'; put 'put ''LHY9VXQoMik7c3QoMSksSGkoImludmFsaWQtZGF0YSIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoaC5rZXkpKSx4dCgibmdNb2RlbCIsdi5jdXJyZW50UmVjb3JkW2gua2V5XSl9fWZ1bmN0aW9uIG43dChkLGcpezEmZCYmaDEoMCl9ZnVuY3Rpb24gcjd0KGQsZyl7aWYo''@;'; put 'put ''MSZkJiYodHQoMCwiZGl2Iiksbm4oMSxuN3QsMSwwLCJuZy1jb250YWluZXIiLDM1KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMiksdj1oLiRpbXBsaWNpdCx5PWguaW5kZXg7VXQoMik7Y29uc3QgQz11YSgxNik7c3QoMSkseHQoIm5nVGVtcGxhdGVPdXRsZXQiLEMpKCJuZ1RlbXBsYXRlT3V0''@;'; put 'put ''bGV0Q29udGV4dCIsQmQoMixqbWUsdix5KSl9fWZ1bmN0aW9uIGk3dChkLGcpe2lmKDEmZCYmKEwwKDApLHR0KDEsImRpdiIsMTgpKDIsImRpdiIsMTkpKDMsInAiLDIwKSxXdCg0KSxubig1LGptdCwxLDAsImNsci1pY29uIiwyMSksaXQoKSx0dCg2LCJwIiwyMiksV3QoNyksaXQoKSgpLHR0''@;'; put 'put ''KDgsImRpdiIsMjMpLG5uKDksWm10LDIsMCwic3BhbiIsMjQpLG5uKDEwLHptdCwxLDAsImNkcy1pY29uIiwyNSksbm4oMTEsUW10LDMsNCwibmctY29udGFpbmVyIiwyNiksbm4oMTIscW10LDMsNCwibmctY29udGFpbmVyIiwyNiksbm4oMTMsZTd0LDQsNiwiY2xyLXRleHRhcmVhLWNvbnRh''@;'; put 'put ''aW5lciIsMjcpLG5uKDE0LHQ3dCw0LDMsImRpdiIsMjcpLG5uKDE1LHI3dCwyLDUsImRpdiIsMjYpLGl0KCkoKSxicigxNiwiaHIiLDI4KSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoKSx2PWguJGltcGxpY2l0LHk9aC5pbmRleCxDPVV0KDIpO2xldCBJLGo7c3QoNCksVWkoIiAiLHYua2V5LCIg''@;'; put 'put ''Iiksc3QoMSkseHQoIm5nSWYiLEMuaXNDb2xQayh2LmtleSkpLHN0KDIpLFVpKCIgIixudWxsPT1DLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShJPUMuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpJLmRlc2MsIiAiKSxzdCgxKSx4dCgibmdTd2l0''@;'; put 'put ''Y2giLG51bGw9PUMuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGo9Qy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUodi5rZXkpKT9udWxsOmoudHlwZSksc3QoMSkseHQoIm5nSWYiLEMuY3VycmVudFJlY29yZExvYWRpbmdzLmluY2x1ZGVzKHkpKSxzdCgxKSx4dCgibmdJ''@;'; put 'put ''ZiIsQy5jdXJyZW50UmVjb3JkRXJyb3JzLmluY2x1ZGVzKHkpKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwibnVtZXJpYyIpLHN0KDEpLHh0KCJuZ1N3aXRjaENhc2UiLHZvaWQgMCksc3QoMSkseHQoIm5nU3dpdGNoQ2FzZSIsInRpbWUiKSxzdCgxKSx4dCgibmdTd2l0Y2hDYXNlIiwiZGF0''@;'; put 'put ''ZSIpLHN0KDEpLHh0KCJuZ1N3aXRjaENhc2UiLCJhdXRvY29tcGxldGUiKX19ZnVuY3Rpb24gbzd0KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxpN3QsMTcsMTEsIm5nLWNvbnRhaW5lciIsMiksTzAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLHh0KCJuZ0lmIiwiQWN0aW9u''@;'; put 'put ''IiE9PWgua2V5JiYiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiE9PWgua2V5JiYibm9MaW5rT3B0aW9uIiE9PWgua2V5KX19ZnVuY3Rpb24gYTd0KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxvN3QsMiwxLCJuZy1jb250YWluZXIiLDE3KSxaZSgyLCJrZXl2YWx1ZSIpLE8wKCkp''@;'; put 'put ''LDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0Zvck9mIixJdCgyLDIsaC5jdXJyZW50UmVjb3JkLGgub3JpZ2luYWxPcmRlcikpKCJuZ0ZvclRyYWNrQnkiLGgudHJhY2tCeUZuKX19ZnVuY3Rpb24gbDd0KGQsZyl7MSZkJiYodHQoMCwiY2xyLWFsZXJ0Iiw0MykoMSwiY2xyLWFsZXJ0''@;'; put 'put ''LWl0ZW0iKSgyLCJzcGFuIiw0NCksV3QoMywiIERhdGEgVmFsaWRhdGlvbiBFcnJvcnMgLSBQbGVhc2UgUmV2aWV3ICIpLGl0KCkoKSgpKSwyJmQmJihJZCgidmlzaWJpbGl0eSIsVXQoKS5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjA/InZpc2libGUiOiJoaWRkZW4iKSx4dCgi''@;'; put 'put ''Y2xyQWxlcnRDbG9zYWJsZSIsITEpKCJjbHJBbGVydFR5cGUiLCJkYW5nZXIiKSl9ZnVuY3Rpb24gczd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2Iiw0NSkoMSwiYnV0dG9uIiw0NiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkub25QcmV2''@;'; put 'put ''aW91c1JlY29yZENsaWNrKCkpfSksYnIoMiwiY2xyLWljb24iLDQ3KSxpdCgpLHR0KDMsInAiKSxXdCg0LCIgQ3VycmVudCByb3c6ICIpLHR0KDUsInN0cm9uZyIpLFd0KDYpLGl0KCkoKSx0dCg3LCJidXR0b24iLDQ2KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQo''@;'; put 'put ''KS5vbk5leHRSZWNvcmRDbGljaygpKX0pLGJyKDgsImNsci1pY29uIiw0OCksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJkaXNhYmxlZCIsaC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjApLHN0KDUpLFVpKCIgIixoLmN1cnJlbnRSZWNvcmRJbmRleCsx''@;'; put 'put ''LCIgIiksc3QoMSkseHQoImRpc2FibGVkIixoLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCl9fWZ1bmN0aW9uIHU3dChkLGcpe2lmKDEmZCYmKHR0KDAsIm9wdGlvbiIsNTMpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt4dCgibmdWYWx1ZSIsaCksc3Qo''@;'; put 'put ''MSksVWkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gYzd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2IikoMSwiYXBwLXNvZnQtc2VsZWN0Iiw1MSksWm4oImZvY3VzaW4iLGZ1bmN0aW9uKHkpe2EoaCk7Y29uc3QgQz1VdCgpLmNvbEluZGV4O3JldHVybiBidChVdCgpLm9uUmVj''@;'; put 'put ''b3JkSW5wdXRGb2N1cyh5LEMpKX0pKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPVV0KCkuY29sO3JldHVybiBidChVdCgpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKSxDPXkuY29sLEk9''@;'; put 'put ''eS5jb2xJbmRleDtyZXR1cm4gYnQoVXQoKS5vblJlY29yZERyb3Bkb3duQ2hhbmdlKEMua2V5LEkpKX0pLG5uKDIsdTd0LDIsMiwib3B0aW9uIiw1MiksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgpLmNvbCx2PVV0KCk7bGV0IHk7c3QoMSkseHQoInZhbHVlIix2LmN1cnJlbnRSZWNvcmRb''@;'; put 'put ''aC5rZXldKSgiaW5wdXRJZCIsaC5rZXkpLHN0KDEpLHh0KCJuZ0Zvck9mIixudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/bnVsbDp5LnNvdXJjZSl9fWZ1bmN0aW9uIGY3dChkLGcpe2lmKDEm''@;'; put 'put ''ZCYmKHR0KDAsIm9wdGlvbiIsNTYpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt4dCgidmFsdWUiLGgpLHN0KDEpLFVpKCIgIixoLCIgIil9fWZ1bmN0aW9uIGg3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsInNlbGVjdCIsNTQpLFpuKCJmb2N1c2luIixm''@;'; put 'put ''dW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoKS5jb2xJbmRleDtyZXR1cm4gYnQoVXQoKS5vblJlY29yZElucHV0Rm9jdXMoeSxDKSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7YShoKTtjb25zdCBDPVV0KCkuY29sO3JldHVybiBidChVdCgpLmN1cnJlbnRSZWNvcmRbQy5rZXld''@;'; put 'put ''PXkpfSksbm4oMSxmN3QsMiwyLCJvcHRpb24iLDU1KSxpdCgpfWlmKDImZCl7Y29uc3QgaD1VdCgpLmNvbCx2PVV0KCk7bGV0IHk7eHQoIm5nTW9kZWwiLHYuY3VycmVudFJlY29yZFtoLmtleV0pLHN0KDEpLHh0KCJuZ0Zvck9mIixudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51''@;'; put 'put ''bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/bnVsbDp5LnNvdXJjZSl9fWNvbnN0IGQ3dD1mdW5jdGlvbigpe3JldHVyblsiU09GVFNFTEVDVCIsIlNPRlRTRUxFQ1RfSE9PSyJdfTtmdW5jdGlvbiBwN3QoZCxnKXtpZigxJmQmJihubigwLGM3dCwzLDMs''@;'; put 'put ''ImRpdiIsNDkpLG5uKDEsaDd0LDIsMiwibmctdGVtcGxhdGUiLG51bGwsNTAsX2wpKSwyJmQpe2NvbnN0IGg9Zy5jb2wsdj11YSgyKSx5PVV0KCk7eHQoIm5nSWYiLG51bGw9PXkuY3VycmVudFJlY29yZFZhbGlkYXRvcj9udWxsOnkuY3VycmVudFJlY29yZFZhbGlkYXRvci5oYXNEcVJ1bGVz''@;'; put 'put ''KGgua2V5LGxzKDIsZDd0KSkpKCJuZ0lmRWxzZSIsdil9fWxldCBnN3Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPWgsdGhpcy5oZWxwZXJTZXJ2aWNlPXYsdGhpcy5yZWNvcmRBY3Rpb249bnVsbCx0aGlzLmZpbHRlcj0hMSx0aGlzLnN1Ym1p''@;'; put 'put ''dExvYWRpbmc9ITEsdGhpcy5oZWFkZXJQa3M9W10sdGhpcy5jZWxsVmFsaWRhdGlvbj1bXSx0aGlzLmN1cnJlbnRSZWNvcmRJbmRleD0tMSx0aGlzLmN1cnJlbnRSZWNvcmRMb2FkaW5ncz1bXSx0aGlzLmN1cnJlbnRSZWNvcmRFcnJvcnM9W10sdGhpcy5vblJlY29yZENoYW5nZT1uZXcgZm4s''@;'; put 'put ''dGhpcy5vblJlY29yZElucHV0Rm9jdXNlZD1uZXcgZm4sdGhpcy5vblJlY29yZERyb3Bkb3duQ2hhbmdlZD1uZXcgZm4sdGhpcy5vblJlY29yZEVkaXRDbG9zZT1uZXcgZm4sdGhpcy5vblJlY29yZEVkaXRDb25maXJtPW5ldyBmbix0aGlzLm9uTmV4dFJlY29yZD1uZXcgZm4sdGhpcy5vblBy''@;'; put 'put ''ZXZpb3VzUmVjb3JkPW5ldyBmbix0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scz1bXSx0aGlzLmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmc9ITEsdGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmw9bnVsbCx0aGlzLmFkZFJlY29yZFVybD1udWxsLHRoaXMucmVjb3JkTmV3T3JQa01vZGlm''@;'; put 'put ''aWVkPSExLHRoaXMuYWRkUmVjb3JkTG9hZGluZz0hMSx0aGlzLm9yaWdpbmFsT3JkZXI9KHksQyk9PjB9bmdPbkluaXQoKXt9dmFsaWRhdGVSZWNvcmRDb2woaCx2KXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoeSxDKT0+e3Zh''@;'; put 'put ''ciBJO251bGw9PT0oST10aGlzLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1JfHxJLmV4ZWN1dGVIb3RWYWxpZGF0b3IoaCx2LGo9Pnt5KGopfSl9KX0pfXJlY29yZERhdGVDaGFuZ2UoaCx2KXt2YXIgeTtsZXQgQz1udWxsPT09KHk9dGhpcy5jdXJyZW50UmVjb3JkVmFsaWRh''@;'; put 'put ''dG9yKXx8dm9pZCAwPT09eT92b2lkIDA6eS5nZXRSdWxlKHYpLEk9Qz9DLmRhdGVGb3JtYXQ6IiI7dGhpcy5jdXJyZW50UmVjb3JkJiYodGhpcy5jdXJyZW50UmVjb3JkW3ZdPXQwZSgpKGgpLmZvcm1hdChJKSl9aXNSZWNvcmRNb2RhbEludmFsaWQoKXtyZXR1cm4gdGhpcy5jdXJyZW50UmVj''@;'; put 'put ''b3JkSW52YWxpZENvbHMubGVuZ3RoPjB9Y29uZmlybVJlY29yZEVkaXQoKXt0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg8MSYmdGhpcy5vblJlY29yZENoYW5nZS5lbWl0KHRoaXMuY3VycmVudFJlY29yZCl9Y2xvc2VSZWNvcmRFZGl0KCl7dGhpcy5vblJlY29yZEVkaXRD''@;'; put 'put ''bG9zZS5lbWl0KCl9b25SZWNvcmREcm9wZG93bkNoYW5nZShoLHYpe3RoaXMub25SZWNvcmREcm9wZG93bkNoYW5nZWQuZW1pdCh7Y29sTmFtZTpoLGNvbDp2fSl9b25SZWNvcmRJbnB1dEZvY3VzKGgsdil7dGhpcy5vblJlY29yZElucHV0Rm9jdXNlZC5lbWl0KHtldmVudDpoLGNvbE5hbWU6''@;'; put 'put ''dn0pfXJlY29yZElucHV0UGFzdGUoaCl7c2V0VGltZW91dCgoKT0+e2gudGFyZ2V0LnZhbHVlPWgudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1xzKyQvLCIiKX0sMCl9cmVjb3JkSW5wdXRDaGFuZ2UoaCx2KXt2YXIgeTtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2Nv''@;'; put 'put ''bnN0IEM9bnVsbD09PSh5PXRoaXMuY3VycmVudFJlY29yZFZhbGlkYXRvcil8fHZvaWQgMD09PXk/dm9pZCAwOnkuZ2V0UnVsZSh2KSxJPWgudGFyZ2V0LnZhbHVlO3RoaXMuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoMzAwLCgpPT57dGhpcy52YWxpZGF0ZVJlY29yZENvbChDLEkpLnRo''@;'; put 'put ''ZW4oaj0+e2NvbnN0IGNlPXRoaXMuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluZGV4T2Yodik7aj9jZT4tMSYmdGhpcy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuc3BsaWNlKGNlLDEpOmNlPDAmJnRoaXMuY3VycmVudFJlY29yZEludmFsaWRDb2xzLnB1c2godil9KX0pfSl9b25OZXh0''@;'; put 'put ''UmVjb3JkQ2xpY2soKXt0aGlzLm9uTmV4dFJlY29yZC5lbWl0KCl9b25QcmV2aW91c1JlY29yZENsaWNrKCl7dGhpcy5vblByZXZpb3VzUmVjb3JkLmVtaXQoKX1jb3B5VG9DbGlwKGgpe2NvbnN0IHY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3JlY29yZE1vZGFsUmVmIC5tb2RhbC10aXRs''@;'; put 'put ''ZSIpO2lmKHYpe2NvbnN0IHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTt5LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIseS5zdHlsZS5sZWZ0PSIwIix5LnN0eWxlLnRvcD0iMCIseS5zdHlsZS5vcGFjaXR5PSIwIix5LnN0eWxlLnpJbmRleD0iNTAwMCIseS52YWx1ZT1oLHYu''@;'; put 'put ''YXBwZW5kQ2hpbGQoeSkseS5mb2N1cygpLHkuc2VsZWN0KCksZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSx2LnJlbW92ZUNoaWxkKHkpLHRoaXMuZ2VuZXJhdGVkUmVjb3JkVXJsPWh9fWdlbmVyYXRlRWRpdFJlY29yZFVybCgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVu''@;'; put 'put ''Y3Rpb24qKCl7aWYodGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmwpdGhpcy5jb3B5VG9DbGlwKHRoaXMuZ2VuZXJhdGVkUmVjb3JkVXJsKTtlbHNle3RoaXMuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMDtjb25zdCBoPVtdO3RoaXMuaGVhZGVyUGtzLmZvckVhY2godj0+e2xldCB5PSJD''@;'; put 'put ''IixDPSIiO2ZvcihsZXQgST0wO0k8dGhpcy5jZWxsVmFsaWRhdGlvbi5sZW5ndGg7SSsrKXtjb25zdCBqPXRoaXMuY2VsbFZhbGlkYXRpb25bSV07aWYoai5kYXRhPT09dil7KCJudW1lcmljIj09PWoudHlwZXx8ImRhdGUiPT09ai50eXBlfHwidGltZSI9PT1qLnR5cGUpJiYoeT0iTiIpO2Jy''@;'; put 'put ''ZWFrfX1DPSJDIj09PXk/YCcke3RoaXMuY3VycmVudFJlY29yZFt2XX0nYDp0aGlzLmN1cnJlbnRSZWNvcmRbdl0udG9TdHJpbmcoKSxoLnB1c2goe0dST1VQX0xPR0lDOiJBTkQiLFNVQkdST1VQX0xPR0lDOiJBTkQiLFNVQkdST1VQX0lEOjAsVkFSSUFCTEVfTk06dixPUEVSQVRPUl9OTToi''@;'; put 'put ''PSIsUkFXX1ZBTFVFOkN9KX0pLGgubGVuZ3RoPjAmJnRoaXMubGliZHMmJih5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnkodGhpcy5saWJkcyxoKS50aGVuKHY9Pnt0aGlzLnF1ZXJ5RmlsdGVyPXtpZDp2LnJlc3VsdFswXS5GSUxURVJfUkssdGFibGU6di5yZXN1bHRbMF0u''@;'; put 'put ''RklMVEVSX1RBQkxFfTtjb25zdCBJPWxvY2F0aW9uLmhyZWYuc3BsaXQoIiMiKVswXSsiIy9lZGl0b3IvZWRpdC1yZWNvcmQvIit0aGlzLnF1ZXJ5RmlsdGVyLnRhYmxlKyIvIit0aGlzLnF1ZXJ5RmlsdGVyLmlkO3RoaXMuY29weVRvQ2xpcChJKSx0aGlzLmdlbmVyYXRlRWRpdFJlY29yZFVy''@;'; put 'put ''bExvYWRpbmc9ITEsdGhpcy5maWx0ZXI9ITF9KS5jYXRjaCh2PT57dGhpcy5zdWJtaXRMb2FkaW5nPSExfSkpfX0pfWlzQ29sUGsoaCl7cmV0dXJuIHRoaXMuaGVhZGVyUGtzLmluZGV4T2YoaCk+LTF9dHJhY2tCeUZuKGgsdil7cmV0dXJuIGh9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGtnKSxLdChjYykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtZWRpdC1yZWNvcmQiXV0saW5wdXRzOntjdXJyZW50UmVjb3JkOiJjdXJyZW50UmVjb3JkIixyZWNvcmRBY3Rpb246InJlY29yZEFjdGlvbiIsbGliZHM6''@;'; put 'put ''ImxpYmRzIixxdWVyeUZpbHRlcjoicXVlcnlGaWx0ZXIiLGZpbHRlcjoiZmlsdGVyIixzdWJtaXRMb2FkaW5nOiJzdWJtaXRMb2FkaW5nIixoZWFkZXJQa3M6ImhlYWRlclBrcyIsY2VsbFZhbGlkYXRpb246ImNlbGxWYWxpZGF0aW9uIixjdXJyZW50UmVjb3JkSW5kZXg6ImN1cnJlbnRSZWNv''@;'; put 'put ''cmRJbmRleCIsY3VycmVudFJlY29yZExvYWRpbmdzOiJjdXJyZW50UmVjb3JkTG9hZGluZ3MiLGN1cnJlbnRSZWNvcmRFcnJvcnM6ImN1cnJlbnRSZWNvcmRFcnJvcnMiLGN1cnJlbnRSZWNvcmRWYWxpZGF0b3I6ImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IifSxvdXRwdXRzOntvblJlY29yZENo''@;'; put 'put ''YW5nZToib25SZWNvcmRDaGFuZ2UiLG9uUmVjb3JkSW5wdXRGb2N1c2VkOiJvblJlY29yZElucHV0Rm9jdXNlZCIsb25SZWNvcmREcm9wZG93bkNoYW5nZWQ6Im9uUmVjb3JkRHJvcGRvd25DaGFuZ2VkIixvblJlY29yZEVkaXRDbG9zZToib25SZWNvcmRFZGl0Q2xvc2UiLG9uUmVjb3JkRWRp''@;'; put 'put ''dENvbmZpcm06Im9uUmVjb3JkRWRpdENvbmZpcm0iLG9uTmV4dFJlY29yZDoib25OZXh0UmVjb3JkIixvblByZXZpb3VzUmVjb3JkOiJvblByZXZpb3VzUmVjb3JkIn0sZGVjbHM6MTcsdmFyczoxMSxjb25zdHM6W1siaWQiLCJyZWNvcmRNb2RhbFJlZiIsMSwicmVjb3JkLWVkaXQtbW9kYWwi''@;'; put 'put ''LCJwb3NpdGlvbi1yZWxhdGl2ZSIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFs0LCJuZ0lmIl0sWzEsIm1vZGFsLWJvZHkiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHct''@;'; put 'put ''MTAwIHB5LTEwIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciIsInAtMCIsImNsci1nYXAtNSIsImNsci1nYXAtbWQtMCIsImNsci1mbGV4LWNvbHVtbiIsImNsci1mbGV4LW1kLXJvdyJdLFsiY2xhc3MiLCJ2YWxpZGF0aW9uLWluZm8tYWxlcnQiLDMsInZpc2liaWxpdHkiLCJjbHJBbGVy''@;'; put 'put ''dENsb3NhYmxlIiwiY2xyQWxlcnRUeXBlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInByZXYtbmV4dCIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJmb2N1c2FibGUiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFy''@;'; put 'put ''eSIsImZvY3VzYWJsZSIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsiYXV0b2NvbXBsZXRlIiwiIl0sWyJjbGFzcyIsInBvc2l0aW9uLWFic29sdXRlIGdlbmVyYXRlLXJlY29yZC11cmwiLDQsIm5nSWYiXSxbImNsYXNzIiwiYnRuIGJ0bi1saW5rIGdlbmVyYXRlLXJlY29yZC11cmwtYnV0dG9u''@;'; put 'put ''IHBvc2l0aW9uLWFic29sdXRlIiwzLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsInBvc2l0aW9uLWFic29sdXRlIiwiZ2VuZXJhdGUtcmVjb3JkLXVybCJdLFsxLCJidG4iLCJidG4tbGluayIsImdlbmVyYXRlLXJlY29yZC11cmwtYnV0dG9uIiwicG9zaXRpb24tYWJzb2x1dGUi''@;'; put 'put ''LDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImFsaWduLWl0ZW1zLWNlbnRlciIsInctMTAwIiwicHktMTAiXSxbMSwic3Bpbm5lciJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMSwiY29sdW1uLWVudHJ5''@;'; put 'put ''IiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtbWQtcm93Il0sWzEsIm5hbWUtaW5wdXQtcm93Il0sWzEsImZvbnQtd2VpZ2h0LWJvbGQiXSxbInNoYXBlIiwia2V5Iiw0LCJuZ0lmIl0sWzEsImNlbGwtZGVzYyJdLFsxLCJpbnB1dHMtd3JhcHBlciIsInBvc2l0aW9uLXJlbGF0aXZlIiwz''@;'; put 'put ''LCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJzcGlubmVyIHNwaW5uZXItaW5saW5lIGZsZXgtdW5zZXQgcG9zaXRpb24tYWJzb2x1dGUgZW50cnktaW5wdXQtbGVmdC1vZmZzZXQiLDQsIm5nSWYiXSxbImNsYXNzIiwiZmxleC11bnNldCBwb3NpdGlvbi1hYnNvbHV0ZSBlbnRyeS1pbnB1dC1sZWZ0''@;'; put 'put ''LW9mZnNldCIsInNoYXBlIiwiZXJyb3Itc3RhbmRhcmQiLCJzdGF0dXMiLCJ3YXJuaW5nIiw0LCJuZ0lmIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJkYXRlLWZpZWxkIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibXQtMTAiXSxbInNoYXBlIiwia2V5Il0sWzEsInNwaW5uZXIiLCJz''@;'; put 'put ''cGlubmVyLWlubGluZSIsImZsZXgtdW5zZXQiLCJwb3NpdGlvbi1hYnNvbHV0ZSIsImVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Il0sWyJzaGFwZSIsImVycm9yLXN0YW5kYXJkIiwic3RhdHVzIiwid2FybmluZyIsMSwiZmxleC11bnNldCIsInBvc2l0aW9uLWFic29sdXRlIiwiZW50cnktaW5w''@;'; put 'put ''dXQtbGVmdC1vZmZzZXQiXSxbImNsYXNzIiwibnVtZXJpYy1pbnB1dCIsMywiaW52YWxpZC1kYXRhIiw0LCJuZ0lmIl0sWzEsIm51bWVyaWMtaW5wdXQiXSxbImNscklucHV0IiwiIiwidHlwZSIsInRleHQiLDEsIm5vdC1jaGFyIiwzLCJuZ01vZGVsIiwiZm9jdXNpbiIsInBhc3RlIiwiaW5w''@;'; put 'put ''dXQiLCJuZ01vZGVsQ2hhbmdlIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsiY2xyVGV4dGFyZWEiLCIiLDMsInJvd3MiLCJuZ01vZGVsIiwibWF4TGVuZ3RoIiwiZm9jdXNpbiIsInBhc3RlIiwiaW5wdXQiLCJuZ01vZGVsQ2hhbmdlIl0sWyJj''@;'; put 'put ''aGFyVGV4dGFyZWEiLCIiXSxbMSwiZGF0ZS1maWVsZCJdLFsiY2xyVGV4dGFyZWEiLCIiLDMsInJvd3MiLCJuZ01vZGVsIiwicGFzdGUiLCJpbnB1dCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsclRleHRhcmVhIiwiIiwicm93cyIsIjEiLCJjb2xzIiwiYXV0byIsMSwibm90LWNoYXIiLDMsIm5n''@;'; put 'put ''TW9kZWwiLCJwYXN0ZSIsImlucHV0IiwibmdNb2RlbENoYW5nZSJdLFsxLCJkYXRlLXBpY2tlciJdLFsidHlwZSIsImRhdGUiLCJuYW1lIiwiZGF0ZSIsImNsckRhdGUiLCIiLDEsImQtbm9uZSIsMywiY2xyRGF0ZUNoYW5nZSJdLFsxLCJ2YWxpZGF0aW9uLWluZm8tYWxlcnQiLDMsImNsckFs''@;'; put 'put ''ZXJ0Q2xvc2FibGUiLCJjbHJBbGVydFR5cGUiXSxbMSwiYWxlcnQtdGV4dCJdLFsxLCJwcmV2LW5leHQiXSxbInR5cGUiLCJidXR0b24iLCJ0YWJpbmRleCIsIjAiLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwiZm9jdXNhYmxlIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xl''@;'; put 'put ''IGxlZnQiLCJzaXplIiwiMjMiXSxbInNoYXBlIiwiYW5nbGUgcmlnaHQiLCJzaXplIiwiMjMiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvdGhlcl90aGFuX3NvZnRfc2VsZWN0IiwiIl0sWzMsInZhbHVlIiwiaW5wdXRJZCIsImZvY3VzaW4iLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVu''@;'; put 'put ''dCJdLFszLCJuZ1ZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibmdWYWx1ZSJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVsIiwiZm9jdXNpbiIsIm5nTW9kZWxDaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5j''@;'; put 'put ''dGlvbihoLHYpezEmaCYmKHR0KDAsImNsci1tb2RhbCIsMCkoMSwiaDMiLDEpLFd0KDIpLG5uKDMsTm10LDMsMiwibmctY29udGFpbmVyIiwyKSxpdCgpLHR0KDQsImRpdiIsMyksbm4oNSxWbXQsMywwLCJkaXYiLDQpLG5uKDYsYTd0LDMsNSwibmctY29udGFpbmVyIiwyKSxpdCgpLHR0KDcs''@;'; put 'put ''ImRpdiIsNSksbm4oOCxsN3QsNCw0LCJjbHItYWxlcnQiLDYpLG5uKDksczd0LDksMywiZGl2Iiw3KSx0dCgxMCwiZGl2IikoMTEsImJ1dHRvbiIsOCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uPSExLHYuY2xvc2VSZWNvcmRFZGl0''@;'; put 'put ''KCl9KSxXdCgxMiwiIENhbmNlbCAiKSxpdCgpLHR0KDEzLCJidXR0b24iLDkpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jb25maXJtUmVjb3JkRWRpdCgpfSksV3QoMTQsIiBDb25maXJtICIpLGl0KCkoKSgpLG5uKDE1LHA3dCwzLDMsIm5nLXRlbXBsYXRlIixudWxsLDEwLF9s''@;'; put 'put ''KSxpdCgpKSwyJmgmJih4dCgiY2xyTW9kYWxPcGVuIiwhMCkoImNsck1vZGFsQ2xvc2FibGUiLCExKSxzdCgyKSxQaCgiICIsIkFERCI9PT12LnJlY29yZEFjdGlvbj8iQWRkIjoiRWRpdCIsIiByZWNvcmQgaW4gIiwobnVsbD09di5saWJkcz9udWxsOnYubGliZHMuc3BsaXQoIi4iKSlbMF0s''@;'; put 'put ''Ii4iLChudWxsPT12LmxpYmRzP251bGw6di5saWJkcy5zcGxpdCgiLiIpKVsxXSwiICIpLHN0KDEpLHh0KCJuZ0lmIiwiRURJVCI9PT12LnJlY29yZEFjdGlvbiksc3QoMikseHQoIm5nSWYiLHYuYWRkUmVjb3JkTG9hZGluZyksc3QoMSkseHQoIm5nSWYiLCF2LmFkZFJlY29yZExvYWRpbmcp''@;'; put 'put ''LHN0KDIpLHh0KCJuZ0lmIix2LmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCksc3QoMSkseHQoIm5nSWYiLHYuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aDwxKSxzdCg0KSx4dCgiZGlzYWJsZWQiLHYuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wKSl9''@;'; put 'put ''LGRlcGVuZGVuY2llczpbcWwsQm8semQsWmQsVjYsSjMsWDMscDEsRWYsanMsX3MsTloscXllLFZaLGFoZSxHMixrcyxhMyxsMyx5Uyx4WixqZmUsd3YsdXllLElaLGFSZSxieWUsdE9lLG9JXSxzdHlsZXM6WyIucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVt''@;'; put 'put ''bi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYW1lLWlucHV0LXJvd1tfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17d2lkdGg6MTAwJTttYXgtd2lkdGg6MjYwcHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgLm5hbWUtaW5wdXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZWxsLWRlc2Nb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDozMHB4O21hcmdpbi10b3A6MTBweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAuaW5wdXRzLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Zs''@;'; put 'put ''ZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5pbnB1dHMtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAgPio6bm90KC5kYXRlLWZp''@;'; put 'put ''ZWxkKTpub3QoY2xyLXNlbGVjdC1jb250YWluZXIpe2ZsZXg6MX0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjB9LnJlY29yZC1lZGl0LW1vZGFs''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLXRleHRhcmVhLXdyYXBwZXJ7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAgIC5jbHItZm9ybS1jb250cm9se21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3R7ZGlzcGxheTpibG9jazt3''@;'; put 'put ''aWR0aDoyMjRweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2NvbG9yOiMwMDA7cGFkZGluZzpjYWxjKC4yNXJlbSArIDJweCkgLjVyZW07Ym9yZGVyLXJhZGl1czouMTI1cmVtO2ZvbnQtc2l6ZTouNTQxNjY3cmVtO21hcmdpbi1yaWdodDo2cHh9LnJlY29yZC1lZGl0''@;'; put 'put ''LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXR7d2lkdGg6MTAwJTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpub25lO2JvcmRlcjowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXQ6''@;'; put 'put ''Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxkICAgcFtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0ZS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5kYXRlLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRhcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMzBweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUt''@;'; put 'put ''cGlja2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDo0cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRlLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRlLXBpY2tlcltfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAgIC5jbHItaW5wdXQtZ3JvdXB7Ym9yZGVyOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTBweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lcntib3JkZXI6MXB4IHNvbGlkICM5OTk7Y29sb3I6IzAwMDtib3JkZXItcmFkaXVzOi4xMjVyZW07bWFyZ2luLXJpZ2h0OjVweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciAu''@;'; put 'put ''Y2xyLXNlbGVjdC13cmFwcGVye21heC1oZWlnaHQ6dW5zZXR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLXNlbGVjdC1jb250YWluZXIgLmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcnt0b3A6MTVweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciBzZWxlY3R7aGVpZ2h0OmF1dG87cGFkZGluZzoxMHB4IDIwcHggMTBweCAxMHB4O2JvcmRlcjowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciBzZWxl''@;'; put 'put ''Y3Q6Zm9jdXN7YmFja2dyb3VuZDowIDAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIHNlbGVjdDpob3ZlcntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXJ7d2lkdGg6MjI0cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgIzk5OTtjb2xvcjojMDAwO3BhZGRpbmc6Y2FsYyguMjVyZW0gKyAycHgpIC41cmVtO2JvcmRlci1yYWRpdXM6LjEyNXJlbTtmb250LXNpemU6LjU0MTY2N3Jl''@;'; put 'put ''bTttYXJnaW4tcmlnaHQ6NnB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXIgaW5wdXR7d2lkdGg6MTAwJTtib3JkZXI6MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItaW5wdXQtY29udGFp''@;'; put 'put ''bmVyIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnJlY29yZC1lZGl0LW1vZGFs''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItaW5wdXQtY29u''@;'; put 'put ''dGFpbmVyLmludmFsaWQtZGF0YXtib3JkZXItY29sb3I6cmVkfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1kaWFsb2d7d2lkdGg6ODB2d30ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFp''@;'; put 'put ''bmVye3dpZHRoOjEwMCV9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYXt3aWR0aDoxMDAlO3Jlc2l6ZTpub25lO2JvcmRlci1jb2xvcjojOTk5fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgdGV4dGFyZWEuaW52YWxpZC1kYXRhe2JvcmRlci1jb2xvcjpyZWQ7b3V0bGluZTowfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgdGV4dGFyZWEubm90LWNoYXJ7Zm9u''@;'; put 'put ''dC1mYW1pbHk6THVjaWRhIENvbnNvbGUsTW9uYWNvLG1vbm9zcGFjZX0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuZ2VuZXJhdGUtcmVjb3JkLXVybHtyaWdodDo0MHB4O3RvcDo0MHB4O2ZvbnQtc2l6ZToxMnB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAgIC5nZW5lcmF0ZS1yZWNvcmQtdXJsLWJ1dHRvbntyaWdodDoyNXB4O3RvcDo1cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1vZGFsLWhlYWRlcntwYWRkaW5nOjAgMCAxcmVtfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAgIC5tb2RhbC1mb290ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtZm9vdGVyIC5hbGVydHttYXJnaW46MH0ucHJl''@;'; put 'put ''di1uZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5wcmV2LW5leHRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjB9LnByZXYtbmV4dFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde21hcmdpbjowIDEwcHh9LmZvY3VzYWJsZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7Ym94LXNoYWRvdzowIDAgM3B4ICM1YWEyMjB9LmVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0zMHB4fS52YWxpZGF0aW9uLWluZm8tYWxl''@;'; put 'put ''cnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMxMHB4fSJdfSksZH0pKCk7ZnVuY3Rpb24gbTd0KGQsZyl7aWYoMSZkJiYodHQoMCwicCIsMyksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLFVpKCIgIixoLCIgIil9fWxldCB2N3Q9KCgpPT57Y2xhc3MgZHtj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe3RoaXMuc3RhdGVzTGlzdD1bXSx0aGlzLnByb2Nlc3NlZFN0YXRlcz1bXSx0aGlzLnN0YXRlckluUHJvZ3Jlc3M9ITEsdGhpcy5taW5EZWxheT0xZTN9bmdPbkluaXQoKXt9YXBwZW5kU3RhdGUoaCl7aWYoIntmaW5pc2h9Ij09PWgpcmV0dXJuIHRoaXMuc3RhdGVySW5Q''@;'; put 'put ''cm9ncmVzcz0hMSx2b2lkIGNsZWFySW50ZXJ2YWwodGhpcy5zdGF0ZUludGVydmFsKTt0aGlzLnN0YXRlc0xpc3QucHVzaChoKSx0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKGgpfXJlcGxhY2VMYXN0U3RhdGUoaCl7dGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4wPyh0aGlzLnN0YXRlc0xpc3Qu''@;'; put 'put ''cG9wKCksdGhpcy5zdGF0ZXNMaXN0LnB1c2goaCkpOnRoaXMucHJvY2Vzc2VkU3RhdGVzW3RoaXMucHJvY2Vzc2VkU3RhdGVzLmxlbmd0aC0xXT1ofWNsZWFyU3RhdGVzKCl7dGhpcy5wcm9jZXNzZWRTdGF0ZXM9W119c3RhcnRTdGF0ZXIoKXt0aGlzLnN0YXRlckluUHJvZ3Jlc3M9ITAsdGhp''@;'; put 'put ''cy5zdGF0ZXNMaXN0Lmxlbmd0aD4wJiZ0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKHRoaXMuc3RhdGVzTGlzdC5zaGlmdCgpfHwiIiksdGhpcy5zdGF0ZUludGVydmFsPXNldEludGVydmFsKCgpPT57dGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4wJiZ0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNo''@;'; put 'put ''KHRoaXMuc3RhdGVzTGlzdC5zaGlmdCgpfHwiIil9LHRoaXMubWluRGVsYXkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXVwbG9hZC1zdGF0ZXIiXV0sZGVjbHM6NSx2YXJz''@;'; put 'put ''OjEsY29uc3RzOltbImNsYXNzIiwibS0wIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwidGV4dC1jZW50ZXIiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItc20iLCJ2ZXJ0aWNhbC1hbGlnbi1taWRkbGUiXSxbMSwibS0wIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiZGl2''@;'; put 'put ''Iiksbm4oMSxtN3QsMiwxLCJwIiwwKSxpdCgpLHR0KDIsImRpdiIsMSkoMywic3BhbiIsMiksV3QoNCwiTG9hZGluZy4uLiIpLGl0KCkoKSksMiZoJiYoc3QoMSkseHQoIm5nRm9yT2YiLHYucHJvY2Vzc2VkU3RhdGVzKSl9LGRlcGVuZGVuY2llczpbcWxdLHN0eWxlczpbIltfbmdob3N0LSVD''@;'; put 'put ''T01QJV17ZGlzcGxheTpibG9ja31wW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcn0iXX0pLGR9KSgpLEE3dD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5uZXdWaWV3Ym94TW9kYWw9ITB9bmdPbkluaXQoKXt9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtdmlld2JveGVzIl1dLGRlY2xzOjUsdmFyczozLGNvbnN0czpbWyJhcHBEcmFnTmRyb3AiLCIiLDEsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2RhbE9wZW4i''@;'; put 'put ''LCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJjbHItbW9kYWwiLDApLFpuKCJjbHJNb2RhbE9wZW5DaGFuZ2Ui''@;'; put 'put ''LGZ1bmN0aW9uKEMpe3JldHVybiB2Lm5ld1ZpZXdib3hNb2RhbD1DfSksdHQoMSwiaDMiLDEpLFd0KDIsIiBOZXcgVmlld2JveCAiKSxpdCgpLHR0KDMsImRpdiIsMiksYnIoNCwiaG9tZS1jb21wb25lbnQiKSxpdCgpKCkpLDImaCYmeHQoImNsck1vZGFsT3BlbiIsdi5uZXdWaWV3Ym94TW9k''@;'; put 'put ''YWwpKCJjbHJNb2RhbENsb3NhYmxlIiwhMCkoImNsck1vZGFsU2l6ZSIsImxnIil9LGRlcGVuZGVuY2llczpbYTMsbDMsck9lLGRiZV0sc3R5bGVzOlsiaG9tZS1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2MTNweH0iXX0pLGR9KSgpLHk3dD0oKCk9PntjbGFzcyBke3Ry''@;'; put 'put ''YW5zZm9ybShoKXtyZXR1cm4gaC5yZXBsYWNlKC9cfC9nLCIgfCAiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cGlwZT1Xcyh7bmFtZToicGtTcGFjZVNlcGFyYXRlIix0eXBlOmQscHVyZTohMH0pLGR9KSgpLGFPZT0oKCk9Pntj''@;'; put 'put ''bGFzcyBke3RyYW5zZm9ybShoLHYpe3JldHVybiB0aGlzLmFkZFNlcGFyYXRvcnMoaC50b1N0cmluZygpLHYpfWFkZFNlcGFyYXRvcnMoaCx2PSIgIil7Y29uc3QgeT0oaCs9IiIpLnNwbGl0KCIuIik7bGV0IEM9eVswXTtjb25zdCBJPXkubGVuZ3RoPjE/Ii4iK3lbMV06IiIsaj0vKFxkKyko''@;'; put 'put ''XGR7M30pLztmb3IoO2oudGVzdChDKTspQz1DLnJlcGxhY2UoaiwiJDEiK3YrIiQyIik7cmV0dXJuIEMrSX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cGlwZT1Xcyh7bmFtZToidGhvdXNhbmRTZXBhcmF0b3IiLHR5cGU6ZCxwdXJl''@;'; put 'put ''OiEwfSksZH0pKCk7Y29uc3Qgdzd0PVsiaHQiXSxiN3Q9WyJ1cGxvYWRTdGF0ZXIiXSxfN3Q9WyJxdWVyeUZpbHRlciJdLEM3dD1bImhvdEluc3RhbmNlIl0sazd0PVsiZmlsZVVwbG9hZElucHV0Il07ZnVuY3Rpb24gUzd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2Iiw1''@;'; put 'put ''OCkoMSwic3BhbiIsNTkpKDIsImxhYmVsIiw2MCksV3QoMywiIEJyb3dzZSAiKSxpdCgpKCksdHQoNCwiaW5wdXQiLDYxLDYyKSxabigiY2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLmdldEZpbGVEZXNjKHkpKX0pLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoKTtz''@;'; put 'put ''dCg0KSx4dCgidXBsb2FkZXIiLGgudXBsb2FkZXIpfX1mdW5jdGlvbiBNN3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDYzKSgxLCJidXR0b24iLDY0KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5nZXRGaWxlKCkpfSksV3QoMiwiIFVw''@;'; put 'put ''bG9hZCAiKSxpdCgpKCl9MiZkJiYoc3QoMSkseHQoImRpc2FibGVkIiwhMCkpfWZ1bmN0aW9uIEU3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsNjUpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLnNob3dVcGxvYWRNb2RhbD0hMSl9''@;'; put 'put ''KSxXdCgxLCIgQ2xvc2UgIiksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoKTt4dCgiZGlzYWJsZWQiLGguZXhjZWxGaWxlUGFyc2luZ3x8aC51cGxvYWRMb2FkaW5nKX19ZnVuY3Rpb24geDd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiw2NiksWm4oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuc2hvd1VwbG9hZE1vZGFsPSExKX0pLFd0KDEsIiBTa2lwICIpLGl0KCl9fWZ1bmN0aW9uIFQ3dChkLGcpezEmZCYmKHR0KDAsImRpdiIsNjcpLGJyKDEsImFwcC11cGxvYWQtc3RhdGVyIixudWxsLDY4KSxpdCgpKX1mdW5jdGlvbiBJN3Qo''@;'; put 'put ''ZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJhcHAtZWRpdC1yZWNvcmQiLDY5KSxabigib25SZWNvcmRDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5jb25maXJtUmVjb3JkRWRpdCgpKX0pKCJvblJlY29yZElucHV0Rm9jdXNlZCIsZnVuY3Rpb24oeSl7cmV0''@;'; put 'put ''dXJuIGEoaCksYnQoVXQoKS5vblJlY29yZElucHV0Rm9jdXMoeSkpfSkoIm9uUmVjb3JkRWRpdENsb3NlIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuY2xvc2VSZWNvcmRFZGl0KCkpfSkoIm9uTmV4dFJlY29yZCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLm9uTmV4''@;'; put 'put ''dFJlY29yZCgpKX0pKCJvblByZXZpb3VzUmVjb3JkIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkub25QcmV2aW91c1JlY29yZCgpKX0pLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KCk7eHQoImN1cnJlbnRSZWNvcmQiLGguY3VycmVudEVkaXRSZWNvcmQpKCJyZWNvcmRBY3Rpb24i''@;'; put 'put ''LGgucmVjb3JkQWN0aW9uKSgibGliZHMiLGgubGliZHMpKCJxdWVyeUZpbHRlciIsaC5xdWVyeUZpbHRlcikoImZpbHRlciIsaC5maWx0ZXIpKCJzdWJtaXRMb2FkaW5nIixoLnN1Ym1pdExvYWRpbmcpKCJoZWFkZXJQa3MiLGguaGVhZGVyUGtzKSgiY2VsbFZhbGlkYXRpb24iLGguY2VsbFZh''@;'; put 'put ''bGlkYXRpb24pKCJjdXJyZW50UmVjb3JkSW5kZXgiLGguY3VycmVudEVkaXRSZWNvcmRJbmRleCkoImN1cnJlbnRSZWNvcmRMb2FkaW5ncyIsaC5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzKSgiY3VycmVudFJlY29yZEVycm9ycyIsaC5jdXJyZW50RWRpdFJlY29yZEVycm9ycykoImN1cnJl''@;'; put 'put ''bnRSZWNvcmRWYWxpZGF0b3IiLGguY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfX1mdW5jdGlvbiBEN3QoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDcwKSxicigxLCJwcm9ncmVzcyIpLGl0KCkpfWNvbnN0IEw3dD1mdW5jdGlvbigpe3JldHVyblsiL2hvbWUiXX07ZnVuY3Rpb24gTzd0KGQs''@;'; put 'put ''Zyl7MSZkJiYodHQoMCwiZGl2Iiw3MSkoMSwic3BhbiIsNzIpLGJyKDIsImNsci1pY29uIiw3MyksV3QoMywiQmFjayB0byB0YWJsZSBzZWxlY3Rpb24gIiksaXQoKSx0dCg0LCJzcGFuIiw3NCksYnIoNSwiY2xyLWljb24iLDc1KSxXdCg2LCIgTmV3IFZpZXdib3ggIiksaXQoKSgpKSwyJmQm''@;'; put 'put ''JihzdCgxKSx4dCgicm91dGVyTGluayIsbHMoMSxMN3QpKSl9ZnVuY3Rpb24gUjd0KGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsODApfWZ1bmN0aW9uIEI3dChkLGcpe2lmKDEmZCYmKEwwKDApLFd0KDEpLFplKDIsInRob3VzYW5kU2VwYXJhdG9yIiksTzAoKSksMiZkKXtjb25zdCBoPVV0''@;'; put 'put ''KDMpO3N0KDEpLHJoKCIgKCIsSXQoMiwyLGguZGF0YVNvdXJjZS5sZW5ndGgsIiwiKSwiICIsMT09PWguZGF0YVNvdXJjZS5sZW5ndGg/InJvdyI6InJvd3MiLCIpICIpfX1mdW5jdGlvbiBQN3QoZCxnKXsxJmQmJihMMCgwKSxXdCgxLCIgKDAgcm93cykgIiksTzAoKSl9ZnVuY3Rpb24gRjd0''@;'; put 'put ''KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxCN3QsMyw1LCJuZy1jb250YWluZXIiLDQ1KSxubigyLFA3dCwyLDAsIm5nLWNvbnRhaW5lciIsNDUpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSx4dCgibmdJZiIsIWguemVyb0ZpbHRlclJvd3MpLHN0KDEpLHh0KCJuZ0lmIixoLnpl''@;'; put 'put ''cm9GaWx0ZXJSb3dzKX19ZnVuY3Rpb24gSDd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiaDQiLDc2KSgxLCJjbHItaWNvbiIsNzcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmRhdGFzZXRJbmZvPSEwKX0pLGl0KCksbm4oMixSN3QsMSwwLCJj''@;'; put 'put ''bHItaWNvbiIsNzgpLFd0KDMpLHR0KDQsImEiLDc5KSxXdCg1KSxpdCgpLG5uKDYsRjd0LDMsMiwibmctY29udGFpbmVyIiw0NSksaXQoKX1pZigyJmQpe2NvbnN0IGg9Zy5uZ1Zhcix2PVV0KCk7c3QoMikseHQoIm5nSWYiLGgudGFibGVOYW1lLmluY2x1ZGVzKCItRkMiKSksc3QoMSksVWko''@;'; put 'put ''IiAiLGgubGliTmFtZSwiLiIpLHN0KDEpLHh0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvZGF0YS8iK3YubGliZHMpLHN0KDEpLGppKGgudGFibGVOYW1lLnJlcGxhY2UoIi1GQyIsIiIpKSxzdCgxKSx4dCgibmdJZiIsdi5kYXRhU291cmNlKX19ZnVuY3Rpb24gTjd0KGQsZyl7aWYoMSZkKXtjb25z''@;'; put 'put ''dCBoPXlpKCk7dHQoMCwiYnV0dG9uIiw4NyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLm9uU2hvd1VwbG9hZE1vZGFsKCkpfSksYnIoMSwiY2xyLWljb24iLDg4KSx0dCgyLCJzcGFuIiksV3QoMywiVXBsb2FkIiksaXQoKSgpfX1mdW5jdGlvbiBWN3QoZCxn''@;'; put 'put ''KXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJidXR0b24iLDgyKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMikub3BlblFiKCkpfSksYnIoMiwiY2xyLWljb24iLDgzKSx0dCgzLCJzcGFuIiksV3QoNCwiRmlsdGVyIiksaXQoKSgpLHR0KDUsImJ1''@;'; put 'put ''dHRvbiIsODQpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5lZGl0VGFibGUoKSl9KSxicig2LCJjbHItaWNvbiIsODUpLHR0KDcsInNwYW4iKSxXdCg4LCJFZGl0IiksaXQoKSgpLG5uKDksTjd0LDQsMCwiYnV0dG9uIiw4NiksTzAoKX1pZigyJmQpe2NvbnN0''@;'; put 'put ''IGg9VXQoMik7c3QoOSkseHQoIm5nSWYiLCFoLmNvbHVtbkxldmVsU2VjdXJpdHlGbGFnKX19ZnVuY3Rpb24gajd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiw5MyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLmFkZFJvdygpKX0p''@;'; put 'put ''LGJyKDEsImNsci1pY29uIiw5NCksV3QoMiwiQWRkIFJvdyAiKSxpdCgpfTImZCYmeHQoImNsckxvYWRpbmciLFV0KDMpLmFkZGluZ05ld1Jvdyl9ZnVuY3Rpb24gWjd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7TDAoMCksdHQoMSwiYnV0dG9uIiw4OSksWm4oImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLmNhbmNlbEVkaXQoKSl9KSxicigyLCJjbHItaWNvbiIsOTApLHR0KDMsInNwYW4iKSxXdCg0LCJDYW5jZWwiKSxpdCgpKCksbm4oNSxqN3QsMywxLCJidXR0b24iLDkxKSx0dCg2LCJidXR0b24iLDM4KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIGEoaCksYnQoVXQoMikuY2hlY2tTYXZlKCkpfSksYnIoNywiY2xyLWljb24iLDkyKSxXdCg4LCJTdWJtaXQgIiksaXQoKSxPMCgpfWlmKDImZCl7Y29uc3QgaD1VdCgyKTtzdCg1KSx4dCgibmdJZiIsIWgucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93KX19ZnVuY3Rpb24gejd0KGQs''@;'; put 'put ''Zyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiYnV0dG9uIiw5OCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLm1hbnVhbEZpbGVFZGl0TW9kYWw9ITApfSksYnIoMSwiY2xyLWljb24iLDg1KSx0dCgyLCJzcGFuIiksV3QoMywiRWRpdCIpLGl0KCkoKX19''@;'; put 'put ''ZnVuY3Rpb24gRzd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7TDAoMCksdHQoMSwiYnV0dG9uIiw5NSksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLmRpc2NhcmRTb3VyY2VGaWxlPSEwKX0pLGJyKDIsImNsci1pY29uIiw5MCksdHQoMywic3BhbiIpLFd0''@;'; put 'put ''KDQsIkRpc2NhcmQgZmlsZSIpLGl0KCkoKSxubig1LHo3dCw0LDAsImJ1dHRvbiIsOTYpLHR0KDYsImJ1dHRvbiIsOTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5nZXRGaWxlKCkpfSksYnIoNywiY2xyLWljb24iLDkyKSxXdCg4LCIgU3VibWl0ICIpLGl0''@;'; put 'put ''KCksTzAoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7c3QoNSkseHQoIm5nSWYiLGguaG90VGFibGUucmVhZE9ubHkpLHN0KDEpLHh0KCJjbHJMb2FkaW5nIixoLnVwbG9hZExvYWRpbmcpfX1mdW5jdGlvbiBXN3QoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDgxKSxubigxLFY3dCwxMCwxLCJu''@;'; put 'put ''Zy1jb250YWluZXIiLDQ1KSxubigyLFo3dCw5LDEsIm5nLWNvbnRhaW5lciIsNDUpLG5uKDMsRzd0LDksMiwibmctY29udGFpbmVyIiw0NSksaXQoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoIm5nSWYiLGguaG90VGFibGUucmVhZE9ubHkmJiFoLnVwbG9hZFByZXZpZXcpLHN0KDEp''@;'; put 'put ''LHh0KCJuZ0lmIiwhaC5ob3RUYWJsZS5yZWFkT25seSYmIWgudXBsb2FkUHJldmlldyksc3QoMSkseHQoIm5nSWYiLGgudXBsb2FkUHJldmlldyl9fWZ1bmN0aW9uIFk3dChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsOTkpKDEsInNwYW4iKSxXdCgyLCJGSUxURVIgOiAiKSx0dCgzLCJiIiks''@;'; put 'put ''V3QoNCksaXQoKSgpKCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDQpLGppKGgucXVlcnlUZXh0KX19ZnVuY3Rpb24gVTd0KGQsZyl7MSZkJiYoTDAoMCksdHQoMSwic3BhbiIsMTAyKSxXdCgyLCIgTG9hZGluZy4uLiAiKSxpdCgpLHR0KDMsImRpdiIpKDQsImgzIiksV3QoNSwiTG9hZGluZyB0''@;'; put 'put ''YWJsZSIpLGl0KCkoKSxPMCgpKX1mdW5jdGlvbiBRN3QoZCxnKXsxJmQmJihMMCgwKSx0dCgxLCJzcGFuIiksYnIoMiwiY2xyLWljb24iLDEwMyksaXQoKSx0dCgzLCJkaXYiKSg0LCJoMyIpLFd0KDUsIkxvYWRpbmcgdGFibGUgZXJyb3IiKSxpdCgpKCksTzAoKSl9ZnVuY3Rpb24gSjd0KGQs''@;'; put 'put ''Zyl7aWYoMSZkJiYodHQoMCwiZGl2IiwxMDApKDEsImRpdiIsMTAxKSxubigyLFU3dCw2LDAsIm5nLWNvbnRhaW5lciIsNDUpLG5uKDMsUTd0LDYsMCwibmctY29udGFpbmVyIiw0NSksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgyKSx4dCgibmdJZiIsIWguZ2V0ZGF0YUVycm9yKSxz''@;'; put 'put ''dCgxKSx4dCgibmdJZiIsaC5nZXRkYXRhRXJyb3IpfX1mdW5jdGlvbiBYN3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0b24iLDEwNCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkuYWRkUmVjb3JkQnV0dG9uQ2xpY2soKSl9KSxicigxLCJj''@;'; put 'put ''bHItaWNvbiIsOTQpLFd0KDIsIiBBZGQgUmVjb3JkICIpLGl0KCl9fWZ1bmN0aW9uIEs3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMTE1KSgxLCJkaXYiLDExNikoMiwibGFiZWwiLDExNyksV3QoMywiTWVzc2FnZSIpLGl0KCksdHQoNCwidGV4dGFyZWEiLDExOCks''@;'; put 'put ''Wm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KDIpLm1lc3NhZ2U9eSl9KSxpdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7c3QoNCkseHQoIm5nTW9kZWwiLGgubWVzc2FnZSkoImRpc2FibGVkIiwhaC52YWxpZGF0aW9uRG9uZSkoInZhbHVlIixo''@;'; put 'put ''LnZhbGlkYXRpb25Eb25lPyIiOiJQbGVhc2Ugd2FpdCB3aGlsZSB3ZSB2YWxpZGF0ZSAiK2guY29scy5sZW5ndGgqaC5tb2RpZmVkUm93c0luZGV4ZXMubGVuZ3RoKyIgY2VsbHMuIil9fWZ1bmN0aW9uICQ3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsMTA1KSgxLCJk''@;'; put 'put ''aXYiLDEwNikoMiwiZGl2IiwxMDcpKDMsImRpdiIsMTA4KSg0LCJidXR0b24iLDEwOSksYnIoNSwiY2xyLWljb24iLDExMCksaXQoKSx0dCg2LCJoMyIsMiksV3QoNyksaXQoKSgpLHR0KDgsImRpdiIsMyksbm4oOSxLN3QsNSwzLCJkaXYiLDExMSksaXQoKSx0dCgxMCwiZGl2IiwxMTIpKDEx''@;'; put 'put ''LCJidXR0b24iLDExMyksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpO3JldHVybiBidCh5LnNhdmVUYWJsZSh5LmhvdFRhYmxlLmRhdGEpKX0pLFd0KDEyLCIgU3VibWl0ICIpLGl0KCksdHQoMTMsImJ1dHRvbiIsMTE0KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YSho''@;'; put 'put ''KTtjb25zdCB5PVV0KCk7cmV0dXJuIHkuY2FuY2VsU3VibWl0KCkseS5zdWJtaXQ9ITEsYnQoeS52YWxpZGF0aW9uRG9uZT0wKX0pLFd0KDE0LCIgQ2FuY2VsICIpLGl0KCkoKSgpKCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoKTtzdCg3KSxQaCgiIFN1Ym1pdCBmb3IgQXBwcm92YWwgKCIsaC5y''@;'; put 'put ''b3dzQ2hhbmdlZC5yb3dzQWRkZWQsIiBhZGRlZCwgIixoLnJvd3NDaGFuZ2VkLnJvd3NVcGRhdGVkLCIgdXBkYXRlZCwgIixoLnJvd3NDaGFuZ2VkLnJvd3NEZWxldGVkLCIgZGVsZXRlZCkgIiksc3QoMikseHQoIm5nSWYiLGgudGFibGVUcnVlKSxzdCgyKSx4dCgiZGlzYWJsZWQiLCFoLnZh''@;'; put 'put ''bGlkYXRpb25Eb25lKX19ZnVuY3Rpb24gcTd0KGQsZyl7aWYoMSZkJiYodHQoMCwic3BhbiIsMTE5KSxXdCgxKSxaZSgyLCJwa1NwYWNlU2VwYXJhdGUiKSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCgpO3N0KDEpLHJoKCIgT24gcm93ICIsaCsxLCI6ICIsU3QoMiwyLHYu''@;'; put 'put ''cGtGaWVsZHNbaF0ucmVwbGFjZSgifCIsIiIpKSwiICIpfX1mdW5jdGlvbiBldnQoZCxnKXtpZigxJmQmJih0dCgwLCJwIiksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLFBoKCIgIixoLmNvbCwiKCIsaC5sZW4sIiksICIsaC52YWwsIiAiKX19ZnVuY3Rpb24g''@;'; put 'put ''dHZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiZGl2IiwxMjApKDEsImRpdiIsMTIxKSgyLCJkaXYiLDEwNykoMywiZGl2IiwxMDgpKDQsImJ1dHRvbiIsMTA5KSxicig1LCJjbHItaWNvbiIsMTEwKSxpdCgpLHR0KDYsImgzIiwyKSxXdCg3LCJFcnJvciIpLGl0KCkoKSx0dCg4''@;'; put 'put ''LCJkaXYiLDMpKDksInAiKSxXdCgxMCwiWW91IGNhbm5vdCBzdWJtaXQgZW1wdHkgY2xhdXNlcyIpLGl0KCkoKSx0dCgxMSwiZGl2IiwxNykoMTIsImJ1dHRvbiIsMzgpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLm51bGxWYXJpYWJsZXM9ITEpfSksV3QoMTMs''@;'; put 'put ''IiBPayAiKSxpdCgpKCkoKSgpKCl9fWZ1bmN0aW9uIG52dChkLGcpezEmZCYmYnIoMCwiYXBwLXF1ZXJ5IixudWxsLDEyMil9ZnVuY3Rpb24gcnZ0KGQsZyl7MSZkJiYodHQoMCwicCIsMTIzKSxXdCgxLCIgU29ycnkgdGhhdCBkaWRuJ3Qgd29yaywgdHJ5IGFnYWluLiAiKSxpdCgpKX1jb25z''@;'; put 'put ''dCBpdnQ9ZnVuY3Rpb24oZCxnKXtyZXR1cm57bGliTmFtZTpkLHRhYmxlTmFtZTpnfX0sbE9lPWZ1bmN0aW9uKCl7cmV0dXJuWyIiLCIgIl19LG92dD1mdW5jdGlvbihkKXtyZXR1cm57aGVhZGVyQmFyRmlsdGVyOmR9fSxzT2U9TCg0MTkyNSksdU9lPUwoOTMxNzIpLkJ1ZmZlcjtsZXQgR25l''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLGosY2UsX2UsUmUsTmUpe3RoaXMuYXBwU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPXYsdGhpcy5sb2dnZXJTZXJ2aWNlPXksdGhpcy5zYXNTdG9yZVNlcnZpY2U9Qyx0aGlzLmhlbHBlclNlcnZpY2U9SSx0aGlzLnJvdXRl''@;'; put 'put ''cj1qLHRoaXMucm91dGU9Y2UsdGhpcy5zYXNTZXJ2aWNlPV9lLHRoaXMuY2RmPVJlLHRoaXMuaG90UmVnaXN0ZXJlcj1OZSx0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0PW5ldyBSbix0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3Q9bmV3IFJuLHRoaXMuaG90SW5zdGFuY2VDb21wTGlzdD1uZXcg''@;'; put 'put ''Um4sdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdD1uZXcgUm4sdGhpcy5tZXNzYWdlPSIiLHRoaXMuJGRhdGFGb3JtYXRzPW51bGwsdGhpcy5jb2xzPVtdLHRoaXMuZGVtb0xpbWl0cz10aGlzLmFwcFNlcnZpY2UuZGVtb0xpbWl0cyx0aGlzLnJlc3RyaWN0aW9ucz17fSx0aGlzLmRhdGFz''@;'; put 'put ''ZXRJbmZvPSExLHRoaXMuZHNtZXRhPVtdLHRoaXMuaG90VGFibGU9e2RhdGE6W10sY29sSGVhZGVyczpbXSxoaWRkZW46ITAsY29sdW1uczpbXSxoZWlnaHQ6IjEwMCUiLG1pblNwYXJlUm93czoxLGxpY2Vuc2VLZXk6dm9pZCAwLHJlYWRPbmx5OiEwLHNldHRpbmdzOntjb250ZXh0TWVudTp7''@;'; put 'put ''aXRlbXM6e2VkaXRfcm93OntuYW1lOiJFZGl0IHJvdyIsaGlkZGVuKCl7Y29uc3QgaHQ9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk7aWYoIWh0KXJldHVybiExO2NvbnN0IEJ0PWh0WzBdO3JldHVybiBCdC5mcm9tLnJvdyE9PUJ0LnRvLnJvd30sY2FsbGJhY2s6KEtlLGh0LEJ0KT0+e2xldCAk''@;'; put 'put ''dD1odFswXTskdC5zdGFydC5yb3c9PT0kdC5lbmQucm93JiZ0aGlzLmVkaXRSZWNvcmQobnVsbCwkdC5zdGFydC5yb3cpfX0scm93X2Fib3ZlOntuYW1lOiJSb3cgYWJvdmUifSxyb3dfYmVsb3c6e25hbWU6IlJvdyBiZWxvdyJ9LHJlbW92ZV9yb3c6e25hbWU6Iklnbm9yZSByb3cifSxzcDE6''@;'; put 'put ''e25hbWU6Ii0tLS0tLS0tLSJ9LHVuZG86e25hbWU6IlVuZG8ifSxyZWRvOntuYW1lOiJSZWRvIn19fX19LHRoaXMuaG90Q2VsbHNQcm9wUm93PW51bGwsdGhpcy5maWx0ZXI9ITEsdGhpcy5zdWJtaXRMb2FkaW5nPSExLHRoaXMudXBsb2FkTG9hZGluZz0hMSx0aGlzLnJvd3NDaGFuZ2VkPXty''@;'; put 'put ''b3dzVXBkYXRlZDowLHJvd3NEZWxldGVkOjAscm93c0FkZGVkOjB9LHRoaXMubW9kaWZlZFJvd3NJbmRleGVzPVtdLHRoaXMucXVlcnlFcnI9ITEsdGhpcy5zdWNjZXNzRW5hYmxlPSExLHRoaXMubnVsbFZhcmlhYmxlcz0hMSx0aGlzLnBrRmllbGRzPVtdLHRoaXMuZmlsZW5hbWU9IiIsdGhp''@;'; put 'put ''cy5iYWRFZGl0PSExLHRoaXMuc2F2ZUxvYWRpbmc9ITEsdGhpcy5hcHByb3ZlcnM9W10sdGhpcy5lcnJWYWxpZGF0aW9uPSExLHRoaXMucGtOdWxsPSExLHRoaXMubm9Qa051bGw9ITEsdGhpcy50YWJsZURhdGE9W10sdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy5xdWVyeVRleHRTYXZlZD0iIix0''@;'; put 'put ''aGlzLnNob3dBcHByb3ZlcnM9ITEsdGhpcy5wa0R1cHM9ITEsdGhpcy52YWxpZGF0aW9uRG9uZT0wLHRoaXMuZHVwbGljYXRlUGtJbmRleGVzPVtdLHRoaXMuY29sdW1uSGVhZGVyPVtdLHRoaXMuc3BlY0luZm89W10sdGhpcy50b29Mb25nPSExLHRoaXMuZXhjZWVkQ2VsbHM9W10sdGhpcy51''@;'; put 'put ''cGxvYWRlcj1uZXcgeWd0KHt1cmw6IiJ9KSx0aGlzLnVwbG9hZFVybD0iIix0aGlzLmV4Y2VsRmlsZVJlYWR5PSExLHRoaXMudXBsb2FkUHJldmlldz0hMSx0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdGhpcy5leGNlbFVwbG9hZFN0YXRlPW51bGwsdGhpcy5kYXRhPVtdLHRoaXMuaGVhZGVy''@;'; put 'put ''QXJyYXk9W10sdGhpcy5ob3REYXRhU2NoZW1hPXt9LHRoaXMuaGVhZGVyU2hvdz1bXSx0aGlzLmhlYWRlclZpc2libGU9ITEsdGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPSExLHRoaXMuaGFzQW5vdGhlckRyb3Bab25lT3Zlcj0hMSx0aGlzLmhlYWRlclBrcz1bXSx0aGlzLmNvbHVtbkxldmVs''@;'; put 'put ''U2VjdXJpdHlGbGFnPSExLHRoaXMuZGF0ZVRpbWVIZWFkZXJzPVtdLHRoaXMudGltZUhlYWRlcnM9W10sdGhpcy5kYXRlSGVhZGVycz1bXSx0aGlzLnhsUnVsZXM9W10sdGhpcy5lbmNvZGluZz0iVVRGLTgiLHRoaXMuaGVhZGVyQ29sdW1ucz1bXSx0aGlzLmNlbGxWYWxpZGF0aW9uPVtdLHRo''@;'; put 'put ''aXMuZmlsZVBhc3N3b3JkU3ViamVjdD1uZXcgJGUsdGhpcy5maWxlVW5sb2NrRXJyb3I9ITEsdGhpcy5maWxlUGFzc3dvcmRNb2RhbD0hMSx0aGlzLnNob3dVcGxvYWRNb2RhbD0hMSx0aGlzLmRpc2NhcmRTb3VyY2VGaWxlPSExLHRoaXMubWFudWFsRmlsZUVkaXRNb2RhbD0hMSx0aGlzLnJl''@;'; put 'put ''Y29yZEFjdGlvbj1udWxsLHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncz1bXSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzPVtdLHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD0tMSx0aGlzLmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmc9ITEsdGhpcy5nZW5lcmF0ZWRS''@;'; put 'put ''ZWNvcmRVcmw9bnVsbCx0aGlzLmFkZFJlY29yZFVybD1udWxsLHRoaXMucmVjb3JkTmV3T3JQa01vZGlmaWVkPSExLHRoaXMuYWRkUmVjb3JkTG9hZGluZz0hMSx0aGlzLnNpbmdsZVJvd1NlbGVjdGVkPSExLHRoaXMuYWRkaW5nTmV3Um93PSExLHRoaXMuZ2V0ZGF0YUVycm9yPSExLHRoaXMu''@;'; put 'put ''emVyb0ZpbHRlclJvd3M9ITEsdGhpcy50YWJsZUZpbGVEcmFnT3Zlcj0hMSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlPVtdLHRoaXMudmFsaWRhdGlvblRhYmxlTGltaXQ9MjAsdGhpcy5leHRlbmRlZENlbGxWYWxpZGF0aW9uRmllbGRzPXtESVNQTEFZX0lOREVYOjAsRVhUUkFfQ09MX05B''@;'; put 'put ''TUU6MSxESVNQTEFZX1ZBTFVFOjIsRElTUExBWV9UWVBFOjMsUkFXX1ZBTFVFX05VTTo0LFJBV19WQUxVRV9DSEFSOjUsRk9SQ0VfRkxBRzo2fSx0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzPXtESVNQTEFZX0lOREVYOjAsRElTUExBWV9WQUxVRToxLFJBV19WQUxVRToyfSx0aGlzLmRpc2Fi''@;'; put 'put ''bGVkQmFzaWNEeW5hbWljQ2VsbFZhbGlkYXRpb25NYXA9W10sdGhpcy50aW1lc0NsaWNrZWQ9MCx0aGlzLmhvdFJlZ2lzdGVyZXI9bmV3IGpPLHRoaXMucGFyc2VSZXN0cmljdGlvbnMoKSx0aGlzLnNldFJlc3RyaWN0aW9ucygpfXBhcnNlUmVzdHJpY3Rpb25zKCl7dGhpcy5hcHBTZXJ2aWNl''@;'; put 'put ''LnJlc3RyaWN0RWRpdFJlY29yZCYmKHRoaXMucmVzdHJpY3Rpb25zLnJlbW92ZUFkZFJlY29yZEJ1dHRvbj0hMCx0aGlzLnJlc3RyaWN0aW9ucy5yZW1vdmVFZGl0UmVjb3JkQnV0dG9uPSEwKSx0aGlzLmRlbW9MaW1pdHMuZGlzYWJsZWRFZGl0UmVjb3JkJiYodGhpcy5yZXN0cmljdGlvbnMu''@;'; put 'put ''cmVzdHJpY3RBZGRSZWNvcmQ9ITApfXNldFJlc3RyaWN0aW9ucyhoKXt2YXIgdix5LEMsSSxqLGNlLF9lLFJlO2gmJih0aGlzLnJlc3RyaWN0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yZXN0cmljdGlvbnMpLGgpKSx0aGlzLnJlc3RyaWN0aW9ucy5yZW1vdmVF''@;'; put 'put ''ZGl0UmVjb3JkQnV0dG9uJiZkZWxldGUobnVsbD09PSh5PW51bGw9PT0odj10aGlzLmhvdFRhYmxlKXx8dm9pZCAwPT09dj92b2lkIDA6di5zZXR0aW5ncyl8fHZvaWQgMD09PXk/dm9pZCAwOnkuY29udGV4dE1lbnUpLml0ZW1zLmVkaXRfcm93LHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0''@;'; put 'put ''QWRkUm93JiYoZGVsZXRlKG51bGw9PT0oST1udWxsPT09KEM9dGhpcy5ob3RUYWJsZSl8fHZvaWQgMD09PUM/dm9pZCAwOkMuc2V0dGluZ3MpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLmNvbnRleHRNZW51KS5pdGVtcy5yb3dfYWJvdmUsZGVsZXRlKG51bGw9PT0oY2U9bnVsbD09PShqPXRoaXMu''@;'; put 'put ''aG90VGFibGUpfHx2b2lkIDA9PT1qP3ZvaWQgMDpqLnNldHRpbmdzKXx8dm9pZCAwPT09Y2U/dm9pZCAwOmNlLmNvbnRleHRNZW51KS5pdGVtcy5yb3dfYmVsb3csZGVsZXRlKG51bGw9PT0oUmU9bnVsbD09PShfZT10aGlzLmhvdFRhYmxlKXx8dm9pZCAwPT09X2U/dm9pZCAwOl9lLnNldHRp''@;'; put 'put ''bmdzKXx8dm9pZCAwPT09UmU/dm9pZCAwOlJlLmNvbnRleHRNZW51KS5pdGVtcy5yZW1vdmVfcm93KX1jaGVja1Jvd0xpbWl0KCl7dmFyIGg7dGhpcy5kZW1vTGltaXRzLnJvd3NfYWxsb3dlZCYmKHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93PShudWxsPT09KGg9dGhpcy5kYXRh''@;'; put 'put ''U291cmNlKXx8dm9pZCAwPT09aD92b2lkIDA6aC5sZW5ndGgpPj10aGlzLmRlbW9MaW1pdHMucm93c19hbGxvd2VkKX1yZXNldEZpbHRlcigpe3RoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdCYmdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0LmZpcnN0LnJlc2V0RmlsdGVyKCl9b25TaG93''@;'; put 'put ''VXBsb2FkTW9kYWwoKXt0aGlzLmRlbW9MaW1pdHMuZGlzYWJsZWRGaWxlVXBsb2FkP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2RhbCgpOnRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiSW5mb3JtYXRpb24iLCJV''@;'; put 'put ''cGxvYWQgZmVhdHVyZSBpcyBkaXNhYmxlZCB3aGlsZSBDb2x1bW4gTGV2ZWwgU2VjdXJpdHkgcnVsZXMgYXJlIGFjdGl2ZSIpOnRoaXMudXBsb2FkUHJldmlld3x8KHRoaXMuc2hvd1VwbG9hZE1vZGFsPSEwKX1maWxlT3ZlckJhc2UoaCl7dGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPWh9dXBk''@;'; put 'put ''YXRlX3NoZWV0X3JhbmdlKGgpe3ZhciB2PXtzOntyOjEvMCxjOjEvMH0sZTp7cjowLGM6MH19O09iamVjdC5rZXlzKGgpLmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4iISIhPXkuY2hhckF0KDApfSkubWFwKEJNLnV0aWxzLmRlY29kZV9jZWxsKS5mb3JFYWNoKGZ1bmN0aW9uKHkpe3Yucy5j''@;'; put 'put ''PU1hdGgubWluKHYucy5jLHkuYyksdi5zLnI9TWF0aC5taW4odi5zLnIseS5yKSx2LmUuYz1NYXRoLm1heCh2LmUuYyx5LmMpLHYuZS5yPU1hdGgubWF4KHYuZS5yLHkucil9KSxoWyIhcmVmIl09Qk0udXRpbHMuZW5jb2RlX3JhbmdlKHYpfWdldFJhbmdlQW5kU2hlZXQoaCl7bGV0IHY9MCx5''@;'; put 'put ''PTAsQz0tMSxJPS0xLGo9IiIsY2U9ITEsX2U9W10sTmU9WyJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iLC4uLnRoaXMuaGVhZGVyQXJyYXldLm1hcChCdD0+QnQudG9Mb3dlckNhc2UoKSksS2U9TmUucmVkdWNlKChCdCwkdCk9PihCdFskdF09LTEsQnQpLHt9KTtyZXR1cm4gaC5T''@;'; put 'put ''aGVldE5hbWVzLmZvckVhY2goQnQ9PntpZihjZSlyZXR1cm47X2U9W10saj1CdDtjb25zdCAkdD1oLlNoZWV0c1tqXTtpZih0aGlzLmRhdGE9Qk0udXRpbHMuc2hlZXRfdG9fanNvbigkdCx7aGVhZGVyOjEsYmxhbmtyb3dzOiExLGRlZnZhbDoiIn0pLHRoaXMuZGF0YS5sZW5ndGg8PTEpcmV0''@;'; put 'put ''dXJuO2xldCBobj1bXTt0aGlzLmhlYWRlckFycmF5LmZvckVhY2goKCk9PmhuLnB1c2goIiIpKSx0aGlzLmRhdGEucHVzaChobik7bGV0IERuPSExO2lmKHRoaXMuZGF0YS5mb3JFYWNoKChpcixwcik9PntpZighY2UpaWYoRG4pe2xldCBFcj0hMCxBcj0hMTtOZS5mb3JFYWNoKFlyPT57Y29u''@;'; put 'put ''c3QgX2k9S2VbWXJdOyIiIT09aXJbX2ldJiZ2b2lkIDAhPT1pcltfaV0/RXI9ITE6LTEhPT10aGlzLmhlYWRlclBrcy5pbmRleE9mKFlyLnRvVXBwZXJDYXNlKCkpJiYoQXI9ITApfSksRXJ8fEFyPyhJPXByLGNlPSEwKTotMT09PUMmJihDPXByKX1lbHNle2NvbnN0IEVyPWlyLm1hcChZcj0+''@;'; put 'put ''WXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtpZighRXIuaW5jbHVkZXMoIl9fX19fZGVsZXRlX190aGlzX19yZWNvcmRfX19fXyIpKXtjb25zdCBZcj1OZS5pbmRleE9mKCJfX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18iKTtZcj4tMSYmTmUuc3BsaWNlKFlyLDEpfURuPSEwLE5l''@;'; put 'put ''LmZvckVhY2goWXI9PnstMT09PUVyLmluZGV4T2YoWXIpJiYoRG49ITEpfSk7bGV0IEFyPVtdO0FyPXRoaXMuZmluZFZhbGlkSGVhZGVycyhFcixOZSxwcixqKSwhMT09PUFyWzBdPyhEbj0hMSxBclsxXS5sZW5ndGg+MCYmQXJbMV0uZm9yRWFjaChZcj0+e19lLnB1c2goWXIpfSkpOktlPUFy''@;'; put 'put ''WzFdfX0pLGNlJiYodGhpcy51cGRhdGVfc2hlZXRfcmFuZ2UoJHQpLCR0WyIhcmVmIl0pKXtjb25zdCBwcj1CTS51dGlscy5kZWNvZGVfcmFuZ2UoJHRbIiFyZWYiXXx8IiIpO3Y9cHIucy5yLHk9cHIucy5jfX0pLC0xPT09QyYmKGNlPSExKSx7Zm91bmREYXRhOmNlLHNoZWV0TmFtZTpqLHN0''@;'; put 'put ''YXJ0Um93OkMsZW5kUm93OkksY3N2QXJyYXlIZWFkZXJzTWFwOktlLG1pc3NpbmdIZWFkZXJzOl9lLHJhbmdlU3RhcnRSb3c6dixyYW5nZVN0YXJ0Q29sOnl9fXByb21wdEV4Y2VsUGFzc3dvcmQoKXtyZXR1cm4gbmV3IFByb21pc2UoKGgsdik9Pnt0aGlzLmZpbGVQYXNzd29yZE1vZGFsPSEw''@;'; put 'put ''LHNldFRpbWVvdXQoKCk9Pntjb25zdCB5PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmaWxlUGFzc3dvcmRJbnB1dCIpO3kmJih5LmZvY3VzKCkseS52YWx1ZT0iIil9LDEwMCksdGhpcy5maWxlUGFzc3dvcmRTdWJqZWN0LnN1YnNjcmliZSh5PT57dGhpcy5maWxlVW5sb2NrRXJyb3I9ITEs''@;'; put 'put ''aCh5fHx2b2lkIDApfSl9KX1nZXRGaWxlRGVzYyhoLHY9ITEpe2xldCB5O3RoaXMuZXhjZWxVcGxvYWRTdGF0ZT0iTG9hZGluZyIsdGhpcy5leGNlbEZpbGVQYXJzaW5nPSEwLHk9dj9oWzBdOmgudGFyZ2V0LmZpbGVzWzBdLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy5maWxlbmFtZT0i''@;'; put 'put ''IjtsZXQgQz15Lm5hbWU7dGhpcy5maWxlbmFtZT1DLHRoaXMuYXBwZW5kVXBsb2FkU3RhdGUoYExvYWRpbmcgJHtDfSBpbnRvIHRoZSBicm93c2VyYCk7bGV0IGo9Qy5zbGljZShDLmxhc3RJbmRleE9mKCIuIikrMSxDLmxhc3RJbmRleE9mKCIuIikrNCk7aWYoInhscyI9PT1qLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkpe2xldCBjZT1uZXcgRmlsZVJlYWRlcjtjZS5vbmxvYWQ9UmU9PnRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBOZT10aGlzLnRvQnN0cihSZS50YXJnZXQucmVzdWx0KTtsZXQgS2UsaHQ9ITE7Y29uc3QgQnQ9e3R5cGU6ImJpbmFyeSIsY2VsbERhdGVzOiEx''@;'; put 'put ''LGNlbGxGb3JtdWxhOiEwLGNlbGxTdHlsZXM6ITAsY2VsbE5GOiExLGNlbGxUZXh0OiExfTt0cnl7S2U9Qk0ucmVhZChOZSxPYmplY3QuYXNzaWduKHt9LEJ0KSl9Y2F0Y2goWXIpe2lmKFlyLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygicGFzc3dvcmQiKSlmb3IoaHQ9ITA7aHQ7''@;'; put 'put ''KXtjb25zdCBfaT15aWVsZCB0aGlzLnByb21wdEV4Y2VsUGFzc3dvcmQoKTtpZihfaSl0cnl7S2U9Qk0ucmVhZChOZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sQnQpLHtwYXNzd29yZDpfaX0pKSxodD0hMSx0aGlzLmZpbGVVbmxvY2tFcnJvcj0hMX1jYXRjaChLaSl7dGhpcy5m''@;'; put 'put ''aWxlVW5sb2NrRXJyb3I9ITAsS2kubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJwYXNzd29yZCIpfHwoaHQ9ITEpfWVsc2UgaHQ9ITF9ZWxzZSB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLFlyLHZvaWQgMCwiRXJyb3IgcmVhZGluZyBmaWxlIil9aWYoIUtl''@;'; put 'put ''KXJldHVybiB0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdm9pZCh0aGlzLnNob3dVcGxvYWRNb2RhbD0hMSk7bGV0ICR0PSExLGhuPVtdO2NvbnN0IERuPVsiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiwuLi50aGlzLmhlYWRlckFycmF5XTtsZXQgaXI9RG4ubWFwKFlyPT5Zci50''@;'; put 'put ''b0xvd2VyQ2FzZSgpKSxwcj1pci5yZWR1Y2UoKFlyLF9pKT0+KFlyW19pXT0tMSxZcikse30pLEVyPVtdO2NvbnN0IEFyPXRoaXMuZ2V0UmFuZ2VBbmRTaGVldChLZSk7aWYoaG49QXIubWlzc2luZ0hlYWRlcnMsQXIuZm91bmREYXRhKXskdD0hMCxwcj1Bci5jc3ZBcnJheUhlYWRlcnNNYXA7''@;'; put 'put ''Y29uc3QgWXI9S2UuU2hlZXRzW0FyLnNoZWV0TmFtZV07dGhpcy5hcHBlbmRVcGxvYWRTdGF0ZShgVGFibGUgZm91bmQgb24gc2hlZXQgJHtBci5zaGVldE5hbWV9IG9uIHJvdyAke0FyLnN0YXJ0Um93fWApO2xldCBfaT0iIixLaT0iIjtmb3IobGV0IGtvPUFyLnN0YXJ0Um93O2tvPEFyLmVu''@;'; put 'put ''ZFJvdzsrK2tvKXtjb25zdCBPbz1bXTtpci5mb3JFYWNoKFlhPT57Y29uc3QgcWE9Qk0udXRpbHMuZW5jb2RlX2NlbGwoe3I6QXIucmFuZ2VTdGFydFJvdytrbyxjOkFyLnJhbmdlU3RhcnRDb2wrcHJbWWFdfSk7bGV0IE9zOyIiPT09X2kmJihfaT1xYSksS2k9cWEsT3M9WXJbcWFdP1lyW3Fh''@;'; put 'put ''XTp7djoiIn0sT28ucHVzaChPcyl9KSxPby5maW5kKFlhPT4iIiE9PVlhLnYpJiZFci5wdXNoKE9vKX10aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJUYWJsZSBGb3VuZCIsYFNoZWV0OiAke0FyLnNoZWV0TmFtZX1cblJhbmdlOiAke19pfToke0tpfWApfWVsc2UgaG49QXIubWlz''@;'; put 'put ''c2luZ0hlYWRlcnM7aWYoaG4ubGVuZ3RoPjApe2huLnNvcnQoZnVuY3Rpb24oS2ksa28pe3JldHVybiBLaVsxXT09PWtvWzFdPzA6S2lbMV0+a29bMV0/LTE6MX0pO2xldCBZcj1obi5tYXAoX2k9Pl9pWzBdKS5zbGljZSgwLDUpLmpvaW4oIlxuIik7cmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNl''@;'; put 'put ''LnNob3dBYm9ydE1vZGFsKG51bGwsWXIpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbGVuYW1lPSIifSksdGhpcy5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgdGhpcy51cGxvYWRlci5xdWV1ZS5wb3AoKX1pZigwPT09RXIubGVuZ3RofHwwPT09RXJbMF0ubGVuZ3RoKXJldHVybiB0aGlzLmV2''@;'; put 'put ''ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJObyByZWxldmFudCBkYXRhIGZvdW5kIGluIEZpbGUgISIpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbGVuYW1lPSIifSksdGhpcy5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgdGhpcy51cGxvYWRlci5xdWV1ZS5wb3AoKTtpZigodGhp''@;'; put 'put ''cy5kYXRlVGltZUhlYWRlcnMubGVuZ3RoPjB8fHRoaXMuZGF0ZUhlYWRlcnMubGVuZ3RoPjB8fHRoaXMudGltZUhlYWRlcnMubGVuZ3RoPjApJiYoRXI9dGhpcy51cGRhdGVEYXRlVGltZUNvbHMoRG4sRXIpKSx0aGlzLnhsUnVsZXMubGVuZ3RoPjAmJihFcj10aGlzLnVwZGF0ZVhMUnVsZUNv''@;'; put 'put ''bHMoRG4sRXIpKSwhJHQpe2lmKDA9PT1obi5sZW5ndGgpdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCwiTm8gcmVsZXZhbnQgZGF0YSBmb3VuZCBpbiBGaWxlICEiKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5maWxlbmFtZT0iIn0pO2Vsc2V7aG4uc29ydChmdW5jdGlvbihL''@;'; put 'put ''aSxrbyl7cmV0dXJuIEtpWzFdPT09a29bMV0/MDpLaVsxXT5rb1sxXT8tMToxfSk7bGV0IFlyPWhuLm1hcChfaT0+X2lbMF0pLnNsaWNlKDAsNSkuam9pbigiXG4iKTt0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLFlyKX1yZXR1cm4gdGhpcy5leGNlbEZpbGVQYXJzaW5n''@;'; put 'put ''PSExLHZvaWQgdGhpcy51cGxvYWRlci5xdWV1ZS5wb3AoKX17dGhpcy5oZWFkZXJTaG93PURuLEVyPUVyLm1hcChfaT0+X2kubWFwKEtpPT4ibiI9PT1LaS50P0tpLnY6S2kudykpLEVyPUVyLm1hcChfaT0+X2kubWFwKChLaSxrbyk9Pnt2YXIgT287IUtpJiYwIT09S2kmJihLaT0iIiksaXNO''@;'; put 'put ''YU4oS2kpJiYoS2k9S2kucmVwbGFjZSgvIi9nLCciIicpKS5zZWFyY2goLywvZyk+LTEmJihLaT0nIicrS2krJyInKTtjb25zdCBZYT1udWxsPT09KE9vPXRoaXMuZGNWYWxpZGF0b3IpfHx2b2lkIDA9PT1Pbz92b2lkIDA6T28uZ2V0UnVsZSh0aGlzLmhlYWRlclNob3dba29dKTtyZXR1cm4i''@;'; put 'put ''bnVtZXJpYyI9PT0obnVsbD09WWE/dm9pZCAwOllhLnR5cGUpJiYoMCxJdy5pc1NwZWNpYWxNaXNzaW5nKShLaSkmJiFLaS5pbmNsdWRlcygiLiIpJiYoS2k9Ii4iK0tpKSxLaX0pKSx0aGlzLmRhdGE9RXI7bGV0IFlyPURuLmpvaW4oIiwiKSsiXG4iO2lmKFlyKz1Fci5tYXAoX2k9Pl9pLmpv''@;'; put 'put ''aW4oIiwiKSkuam9pbigiXG4iKSwiV0xBVElOMSI9PT10aGlzLmVuY29kaW5nKXtsZXQgX2k9c09lLmRlY29kZSh1T2UuZnJvbShZciksIkNQLTEyNTIiKSxLaT1uZXcgQmxvYihbX2ldLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSksa289dGhpcy5ibG9iVG9GaWxlKEtpLHRoaXMuZmlsZW5h''@;'; put 'put ''bWUrIi5jc3YiKTt0aGlzLnVwbG9hZGVyLmFkZFRvUXVldWUoW2tvXSl9ZWxzZXtsZXQgX2k9bmV3IEJsb2IoW1lyXSx7dHlwZToiYXBwbGljYXRpb24vY3N2In0pLEtpPXRoaXMuYmxvYlRvRmlsZShfaSx0aGlzLmZpbGVuYW1lKyIuY3N2Iik7dGhpcy51cGxvYWRlci5hZGRUb1F1ZXVlKFtL''@;'; put 'put ''aV0pfXRoaXMuZXhjZWxGaWxlUmVhZHk9ITB9aWYoMD09PXRoaXMuZGF0YS5sZW5ndGgpcmV0dXJuIHRoaXMuc2hvd1VwbG9hZE1vZGFsPSExLHRoaXMudXBsb2FkUHJldmlldz0hMSx0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdm9pZCB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2Rh''@;'; put 'put ''bChudWxsLCJUYWJsZSBpbiB0aGUgZmlsZSBpcyBlbXB0eS4gRGF0YSBmb3VuZCBvbiBzaGVldDogIik7dGhpcy5leGNlbEZpbGVSZWFkeT0hMCx0aGlzLmdldFBlbmRpbmdFeGNlbFByZXZpZXcoKX0pLGNlLnJlYWRBc0FycmF5QnVmZmVyKHkpfWVsc2UgaWYoImNzdiI9PT1qLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkpaWYoIldMQVRJTjEiPT09dGhpcy5lbmNvZGluZyl7bGV0IGNlPW5ldyBGaWxlUmVhZGVyO2NlLm9ubG9hZD1SZT0+e2xldCBOZT1zT2UuZGVjb2RlKHVPZS5mcm9tKFJlLnRhcmdldC5yZXN1bHQpLCJDUC0xMjUyIiksS2U9bmV3IEJsb2IoW05lXSx7dHlwZTpqfSksaHQ9dGhpcy5i''@;'; put 'put ''bG9iVG9GaWxlKEtlLHRoaXMuZmlsZW5hbWUpO3RoaXMudXBsb2FkZXIucXVldWUucG9wKCksdGhpcy51cGxvYWRlci5hZGRUb1F1ZXVlKFtodF0pLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITB9LHRoaXMuZXhjZWxGaWxlUmVhZHk9ITAsdGhpcy5leGNlbEZpbGVQYXJzaW5nPSExLGNlLnJlYWRB''@;'; put 'put ''c0FycmF5QnVmZmVyKHkpLHRoaXMuZ2V0RmlsZSgpfWVsc2UgdGhpcy5leGNlbEZpbGVSZWFkeT0hMCx0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdGhpcy5nZXRGaWxlKCk7ZWxzZSB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCdJbnZhbGlkIGZpbGUgdHlwZSAiPGI+''@;'; put 'put ''Jyt0aGlzLmZpbGVuYW1lKyc8L2I+Ii4gUGxlYXNlIHVwbG9hZCBjc3Ygb3IgZXhjZWwgZmlsZS4nKSx0aGlzLmV4Y2VsRmlsZVJlYWR5PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLnVwbG9hZGVyLnF1ZXVlLnBvcCgpfWdldEZpbGUoKXtpZih0aGlzLmNoZWNrSW52YWxpZCgp''@;'; put 'put ''KXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIkludmFsaWQgdmFsdWVzIGFyZSBwcmVzZW50LiIpO3RoaXMudXBsb2FkTG9hZGluZz0hMDtsZXQgaD1bXTtmb3IoY29uc3QgdiBvZiB0aGlzLnVwbG9hZGVyLnF1ZXVlKWgucHVzaCh7ZmlsZTp2Ll9m''@;'; put 'put ''aWxlLGZpbGVOYW1lOnYuX2ZpbGUubmFtZX0pO3RoaXMuc2FzU2VydmljZS51cGxvYWRGaWxlKHRoaXMudXBsb2FkVXJsLGgse3RhYmxlOnRoaXMubGliZHN9KS50aGVuKHY9PntpZih2b2lkIDA9PT12LnNhc2pzQWJvcnQpe2lmKHZvaWQgMD09PXYuc2FzcGFyYW1zKXJldHVybjt7dGhpcy51''@;'; put 'put ''cGxvYWRMb2FkaW5nPSExO2xldCB5PXYuc2FzcGFyYW1zWzBdO3RoaXMuc3VjY2Vzc0VuYWJsZT0hMCx0aGlzLnRhYmxlSWQ9eS5EU0lELHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK3RoaXMudGFibGVJZCl9fWVsc2V7Y29uc3QgeT12LEM9eS5zYXNqc0Fib3J0WzBdLk1T''@;'; put 'put ''RyxJPXkuc2FzanNBYm9ydFswXS5NQUM7dGhpcy51cGxvYWRMb2FkaW5nPSExLHRoaXMuZmlsZW5hbWU9IiIsdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3QuZmlyc3QubmF0aXZlRWxlbWVudC52YWx1ZT0iIiksdGhpcy51''@;'; put 'put ''cGxvYWRlci5xdWV1ZT1bXSx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgiIixDLHtTWVNXQVJOSU5HVEVYVDp5LlNZU1dBUk5JTkdURVhULFNZU0VSUk9SVEVYVDp5LlNZU0VSUk9SVEVYVCxNQUM6SX0pfX0sdj0+e3RoaXMudXBsb2FkTG9hZGluZz0hMSx0aGlzLmZpbGVVcGxv''@;'; put 'put ''YWRJbnB1dENvbXBMaXN0LmZpcnN0JiYodGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSx0aGlzLnVwbG9hZGVyLnF1ZXVlPVtdLHRoaXMuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiZmlsZSB1cGxvYWQiLHYpfSl9Z2V0''@;'; put 'put ''UGVuZGluZ0V4Y2VsUHJldmlldygpe3RoaXMucXVlcnlUZXh0U2F2ZWQ9dGhpcy5xdWVyeVRleHQsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy5leGNlbFVwbG9hZFN0YXRlPSJQYXJzaW5nIix0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKTtsZXQgaD1bXTt0aGlzLmRhdGEu''@;'; put 'put ''bWFwKHk9PntsZXQgQz17fTt0aGlzLmhlYWRlclNob3cubWFwKChJLGopPT57Q1tJXT15W2pdfSksQy5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX198fChDLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXz0iTm8iKSxoLnB1c2goQyl9KSx0aGlzLmRhdGFTb3VyY2VVbmNoYW5n''@;'; put 'put ''ZWQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpLHRoaXMuZGF0YVNvdXJjZT1oLHRoaXMuaG90VGFibGUuZGF0YT1oO2NvbnN0IHY9dGhpcy5ob3RJbnN0YW5jZTt0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9IlZhbGlkYXRpbmctSE9UIix2LnVwZGF0ZVNldHRp''@;'; put 'put ''bmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpLHYucmVuZGVyKCksdGhpcy5hcHBlbmRVcGxvYWRTdGF0ZSgiVmFsaWRhdGluZyByb3dzIiksdi52YWxpZGF0ZUNlbGxzKCgpPT57dGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSEwLHRoaXMuZXhjZWxGaWxl''@;'; put 'put ''UGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbH0pfWRpc2NhcmRQZW5kaW5nRXhjZWwoaCl7aCYmdGhpcy5jYW5jZWxFZGl0KCksdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3QuZmlyc3QubmF0aXZlRWxl''@;'; put 'put ''bWVudC52YWx1ZT0iIiksdGhpcy51cGxvYWRQcmV2aWV3PSExLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy51cGxvYWRlci5xdWV1ZT1bXSxpc05hTihwYXJzZUludCh0aGlzLnJvdXRlci51cmwuc3BsaXQoIi8iKS5wb3AoKXx8IiIpKXx8dGhpcy5xdWVyeVRleHRTYXZlZC5sZW5ndGg+''@;'; put 'put ''MCYmKHRoaXMucXVlcnlUZXh0PXRoaXMucXVlcnlUZXh0U2F2ZWQsdGhpcy5xdWVyeVRleHRTYXZlZD0iIil9cHJldmlld1RhYmxlRWRpdENvbmZpcm0oKXt0aGlzLmRpc2NhcmRQZW5kaW5nRXhjZWwoKSx0aGlzLmNvbnZlcnRUb0NvcnJlY3RUeXBlcyh0aGlzLmRhdGFTb3VyY2UpLHRoaXMu''@;'; put 'put ''ZWRpdFRhYmxlKCEwKX1hcHBlbmRVcGxvYWRTdGF0ZShoLHY9ITEpe3RoaXMuY2RmLmRldGVjdENoYW5nZXMoKSx0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0JiYodj90aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0LnJlcGxhY2VMYXN0U3RhdGUoaCk6dGhpcy51cGxvYWRT''@;'; put 'put ''dGF0ZXJDb21wTGlzdC5maXJzdC5hcHBlbmRTdGF0ZShoKSl9ZmluZFZhbGlkSGVhZGVycyhoLHYseSxDKXtsZXQgST0hMSxqPVtdLGNlPTA7Zm9yKDtjZTxoLmxlbmd0aDspe2lmKCFJJiYtMSE9PXYuaW5kZXhPZihoW2NlXSkpe2xldCBfZSxSZT0wLE5lPTAsS2U9MCxodD1bXSxCdD0hMTtm''@;'; put 'put ''b3IobGV0IERuPWNlO0RuPGgubGVuZ3RoO0RuKyspe2lmKCIiPT09aFtEbl18fC0xIT09aHQuaW5kZXhPZihoW0RuXSkmJnRoaXMuaXNDb2xIZWFkZXIoaFtEbl0pKXsiIj09PWhbRG5dJiYoQnQ9ITApLF9lPURuO2JyZWFrfWh0LnB1c2goaFtEbl0pfWxldCAkdD1bXTt2b2lkIDAhPT1fZT8o''@;'; put 'put ''JHQ9aC5zbGljZShjZSxfZSksS2U9Y2UsTmU9X2UsQnQ/KFJlPWNlLGNlPV9lKTooUmU9Y2UsY2U9X2UtMSkpOigkdD1oLnNsaWNlKGNlKSxSZT1jZSxLZT1jZSxOZT1oLmxlbmd0aCxjZT1oLmxlbmd0aCk7bGV0IGhuPSEwO2lmKHYuZm9yRWFjaChEbj0+ey0xPT09JHQuaW5kZXhPZihEbikm''@;'; put 'put ''Jihobj0hMSl9KSxobil7ST0hMDtsZXQgaXI9di5yZWR1Y2UoZnVuY3Rpb24oRXIsQXIpe3JldHVybiBFcltBcl09LTEsRXJ9LHt9KSxwcj1oLnNsaWNlKFJlLE5lKTtyZXR1cm4gdi5mb3JFYWNoKEVyPT57aXJbRXJdPXByLmluZGV4T2YoRXIpK1JlfSksWyEwLGlyXX17bGV0IERuPVJndCgk''@;'; put 'put ''dCx2KTtqLnB1c2goWyI8Yj5UQUIoIitDKyIpPC9iPiAtICIrRG5bMV0uam9pbigiLCIpKyIgKCBtaXNzaW5nICIrRG5bMF0uam9pbigiLCIpKyIgKSIsRG5bMV0ubGVuZ3RoXSl9fWNlKyt9cmV0dXJuWyExLGpdfWlzQ29sUGsoaCl7cmV0dXJuIHRoaXMuaGVhZGVyUGtzLmluZGV4T2YoaCk+''@;'; put 'put ''LTF9aXNSZWFkb25seUNvbChoKXt2YXIgdjtjb25zdCB5PW51bGw9PT0odj10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09dj92b2lkIDA6di5nZXRSdWxlKGgpO3JldHVybiBudWxsPT15P3ZvaWQgMDp5LnJlYWRPbmx5fWlzQ29sSGVhZGVyKGgpe3JldHVybiB0aGlzLmhlYWRlckFycmF5''@;'; put 'put ''LmluZGV4T2YoaC50b1VwcGVyQ2FzZSgpKT4tMX1yZW1vdmVRdWVyeSgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZUNsYXVzZSgpfXVwZGF0ZURhdGVUaW1lQ29scyhoLHYpe2lmKHRoaXMuZGF0ZUhlYWRlcnMubGVuZ3RoPjApe2xldCB5PVtdO3RoaXMuZGF0ZUhlYWRlcnMuZm9yRWFj''@;'; put 'put ''aChDPT57LTEhPT1oLmluZGV4T2YoQykmJnkucHVzaChoLmluZGV4T2YoQykpfSksdi5mb3JFYWNoKEM9Pnt5LmZvckVhY2goST0+e2NvbnN0IGo9Q1tJXTtpZihWbWUoai52KSl7Y29uc3QgY2U9SG1lKE51bWJlcihqLnYpKTtqLnY9Y2UuZ2V0RnVsbFllYXIoKSsiLSIrKCIwIisoY2UuZ2V0''@;'; put 'put ''TW9udGgoKSsxKSkuc2xpY2UoLTIpKyItIisoIjAiK2NlLmdldERhdGUoKSkuc2xpY2UoLTIpfWVsc2UgaWYoaiYmai52JiYtMT09PWoudi50b1N0cmluZygpLmluZGV4T2YoIjoiKSl7Y29uc3QgY2U9bmV3IERhdGUoai52KTsiSW52YWxpZCBEYXRlIiE9PWNlLnRvVVRDU3RyaW5nKCkmJihq''@;'; put 'put ''LnY9Rm1lKGNlKSl9Q1tJXT1qfSl9KX1pZih0aGlzLnRpbWVIZWFkZXJzLmxlbmd0aD4wKXtsZXQgeT1bXTt0aGlzLnRpbWVIZWFkZXJzLmZvckVhY2goQz0+ey0xIT09aC5pbmRleE9mKEMpJiZ5LnB1c2goaC5pbmRleE9mKEMpKX0pLHYuZm9yRWFjaChDPT57eS5mb3JFYWNoKEk9Pntjb25z''@;'; put 'put ''dCBqPUNbSV07aWYoVm1lKGoudil8fHFMZShqLnYpfHxqLnYuaW5jbHVkZXMoIkUtIikpe2NvbnN0IGNlPUhtZShOdW1iZXIoai52KSk7ai52PSRMZShjZSl9Q1tJXT1qfSl9KX1pZih0aGlzLmRhdGVUaW1lSGVhZGVycy5sZW5ndGg+MCl7bGV0IHk9W107dGhpcy5kYXRlVGltZUhlYWRlcnMu''@;'; put 'put ''Zm9yRWFjaChDPT57LTEhPT1oLmluZGV4T2YoQykmJnkucHVzaChoLmluZGV4T2YoQykpfSksdi5mb3JFYWNoKEM9Pnt5LmZvckVhY2goST0+e2NvbnN0IGo9Q1tJXTtpZihWbWUoai52KXx8cUxlKGoudikpe2xldCBjZT1IbWUoTnVtYmVyKGoudikpO2oudj1GbWUoY2UpKyIgIiskTGUoY2Up''@;'; put 'put ''fWVsc2V7aWYoLTE9PT1qLnYuaW5kZXhPZigiICIpJiYtMSE9PWoudi5pbmRleE9mKCI6Iikpe2xldCBfZT1qLnYuc3Vic3RyaW5nKDAsai52LmluZGV4T2YoIjoiKSk7X2U9X2UrIiAiK2oudi5zdWJzdHJpbmcoai52LmluZGV4T2YoIjoiKSsxKSxqLnY9X2V9bGV0IGNlPW5ldyBEYXRlKGou''@;'; put 'put ''dik7IkludmFsaWQgRGF0ZSIhPT1jZS50b1VUQ1N0cmluZygpJiYoai52PUZtZShjZSkrIiAiKyhkPT57bGV0IGc9KCIwIitkLmdldEhvdXJzKCkpLnNsaWNlKC0yKSsiOiI7cmV0dXJuIGc9ZysoIjAiK2QuZ2V0TWludXRlcygpKS5zbGljZSgtMikrIjoiLGcrPSgiMCIrZC5nZXRTZWNvbmRz''@;'; put 'put ''KCkpLnNsaWNlKC0yKSxnfSkoY2UpKX1DW0ldPWp9KX0pfXJldHVybiB2fXVwZGF0ZVhMUnVsZUNvbHMoaCx2KXtpZih0aGlzLnhsUnVsZXMubGVuZ3RoPjApe2NvbnN0IHk9W107dGhpcy54bFJ1bGVzLmZvckVhY2goQz0+ey0xIT09aC5pbmRleE9mKEMuWExfQ09MVU1OKSYmKEMuaW5kZXg9''@;'; put 'put ''aC5pbmRleE9mKEMuWExfQ09MVU1OKSx5LnB1c2goQykpfSksdi5mb3JFYWNoKEM9Pnt5LmZvckVhY2goST0+e2NvbnN0IGo9Q1tJLmluZGV4XTsiRk9STVVMQSI9PT1JLlhMX1JVTEUmJiJmImluIGomJigibiI9PT1qLnQ/ai52PSI9IitqLmY6ai53PSI9IitqLmYpLENbSV09an0pfSl9cmV0''@;'; put 'put ''dXJuIHZ9YmxvYlRvRmlsZShoLHYpe2NvbnN0IHk9aDtyZXR1cm4geS5sYXN0TW9kaWZpZWREYXRlPW5ldyBEYXRlLHkubmFtZT12LHl9dG9Cc3RyKGgpe2xldCB2PW5ldyBVaW50OEFycmF5KGgpLHk9IiIsQz12LmJ5dGVMZW5ndGg7Zm9yKGxldCBJPTA7STxDO0krKyl5Kz1TdHJpbmcuZnJv''@;'; put 'put ''bUNoYXJDb2RlKHZbSV0pO3JldHVybiB5fXNlbmRDbGF1c2UoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc3VibWl0TG9hZGluZz0hMDtsZXQgaD1bXSx2PVtdO2lmKHZvaWQgMD09PXRoaXMuY2xhdXNlcylyZXR1cm4gdGhpcy5udWxsVmFyaWFibGVz''@;'; put 'put ''PSEwLHZvaWQodGhpcy5zdWJtaXRMb2FkaW5nPSExKTt7bGV0IHk9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqO2lmKHlbMF0uZWxlbWVudHMubGVuZ3RoPDEpcmV0dXJuKCJob21lIj09PXJpLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1yaS5yb290UGFyYW0pJiYocmkuZWRpdG9yLmZpbHRlci5jbGF1''@;'; put 'put ''c2VzPVtdLHJpLmVkaXRvci5maWx0ZXIucXVlcnk9W10scmkuZWRpdG9yLmZpbHRlci5ncm91cExvZ2ljPSIiKSx2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxpYmRzKTtmb3IobGV0IEM9MDtDPHkubGVuZ3RoO0MrKyl7Y29uc3QgST15W0NdLmVsZW1l''@;'; put 'put ''bnRzO2g9SS5maWx0ZXIoZnVuY3Rpb24oail7cmV0dXJuIG51bGw9PT1qLnZhcmlhYmxlfSksaC5sZW5ndGgmJnYucHVzaChJKX19aWYodi5sZW5ndGgpcmV0dXJuIHRoaXMubnVsbFZhcmlhYmxlcz0hMCx2b2lkKHRoaXMuc3VibWl0TG9hZGluZz0hMSk7dHJ5e2lmKHZvaWQgMCE9PXRoaXMu''@;'; put 'put ''Y2xhdXNlcyYmdGhpcy5saWJkcyl7Y29uc3QgeT17Z3JvdXBMb2dpYzp0aGlzLmNsYXVzZXMuZ3JvdXBMb2dpYyxmaWx0ZXJHcm91cHM6W119O3RoaXMuY2xhdXNlcy5xdWVyeU9iai5mb3JFYWNoKEk9Pntjb25zdCBqPXtmaWx0ZXJDbGF1c2VzOltdfTtJLmVsZW1lbnRzLmZvckVhY2goY2U9''@;'; put 'put ''PntqLmZpbHRlckNsYXVzZXMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGNlKSl9KSxqLmNsYXVzZUxvZ2ljPUkuY2xhdXNlTG9naWMseS5maWx0ZXJHcm91cHMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGopKX0pO2NvbnN0IEM9dGhpcy5zYXNTdG9yZVNl''@;'; put 'put ''cnZpY2UuY3JlYXRlRmlsdGVyUXVlcnlUYWJsZSh5KTt5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnkodGhpcy5saWJkcyxDKS50aGVuKEk9Pnt0aGlzLnF1ZXJ5RmlsdGVyPXtpZDpJLnJlc3VsdFswXS5GSUxURVJfUkssdGFibGU6SS5yZXN1bHRbMF0uRklMVEVSX1RBQkxF''@;'; put 'put ''fSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvIix7c2tpcExvY2F0aW9uQ2hhbmdlOiEwfSkudGhlbigoKT0+dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMucXVlcnlGaWx0ZXIudGFibGUrIi8iK3RoaXMucXVlcnlGaWx0ZXIuaWQpKSx0aGlzLmZpbHRlcj0h''@;'; put 'put ''MX0pLmNhdGNoKEk9Pnt0aGlzLnN1Ym1pdExvYWRpbmc9ITF9KX19Y2F0Y2goeSl7dGhpcy5xdWVyeUVycj0hMCx0aGlzLnN1Ym1pdExvYWRpbmc9ITEsdGhpcy5xdWVyeUVyck1lc3NhZ2U9eX19KX1vcGVuUWIoKXt0aGlzLmxpYmRzJiYodGhpcy5maWx0ZXI9ITAsdGhpcy5jZGYuZGV0ZWN0''@;'; put 'put ''Q2hhbmdlcygpLHRoaXMuc3VibWl0TG9hZGluZz0hMSx0aGlzLnNhc1N0b3JlU2VydmljZS5zZXRRdWVyeVZhcmlhYmxlcyh0aGlzLmxpYmRzLHRoaXMuY29scykpfWVkaXRUYWJsZShoLHYpe3RoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITApO2NvbnN0IHk9dGhpcy5ob3RJ''@;'; put 'put ''bnN0YW5jZTtsZXQgQz15LmdldFBsdWdpbigibXVsdGlDb2x1bW5Tb3J0aW5nIiksST1DLmdldFNvcnRDb25maWcoKSxqPUFycmF5LmlzQXJyYXkoSSk/STpbSV07c2V0VGltZW91dCgoKT0+e2h8fCh0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9u''@;'; put 'put ''ZSh0aGlzLmRhdGFTb3VyY2UpLHYmJnRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZC5wb3AoKSksdGhpcy5ob3RUYWJsZS5yZWFkT25seT0hMSx0aGlzLmhvdFRhYmxlLmRhdGE9dGhpcy5kYXRhU291cmNlLHkudXBkYXRlU2V0dGluZ3Moe3JlYWRPbmx5OnRoaXMuaG90VGFibGUucmVhZE9ubHl9''@;'; put 'put ''LCExKSx5LnJlbmRlcigpO2ZvcihsZXQgY2Ugb2YgailDLnNvcnQoY2UpO3RoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpfSwwKX1jb252ZXJ0VG9Db3JyZWN0VHlwZXMoaCl7Zm9yKGxldCB2IG9mIGgpZm9yKGxldCB5IGluIHYpe2xldCBDPXRoaXMuY29scy5maW5kKEk9PkkuTkFN''@;'; put 'put ''RT09PXkpO0MmJiIiIT09dlt5XSYmIm51bSI9PT1DLlRZUEUmJiFDLkREVFlQRS5pbmNsdWRlcygiVElNRSIpJiYhQy5ERFRZUEUuaW5jbHVkZXMoIkRBVEUiKSYmKHZbeV09cGFyc2VJbnQodlt5XSkpfX1jYW5jZWxFZGl0KCl7dGhpcy50b2dnbGVIb3RQbHVnaW4oImNvbnRleHRNZW51Iiwh''@;'; put 'put ''MSksdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZT1bXTtjb25zdCBoPXRoaXMuaG90SW5zdGFuY2U7bGV0IHY9aC5nZXRQbHVnaW4oIm11bHRpQ29sdW1uU29ydGluZyIpLHk9di5nZXRTb3J0Q29uZmlnKCksQz1BcnJheS5pc0FycmF5KHkpP3k6W3ldO3RoaXMuZGF0YVNvdXJjZVVuY2hhbmdl''@;'; put 'put ''ZCYmKHRoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCkpLHRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2UsdGhpcy5ob3RUYWJsZS5yZWFkT25seT0hMCxoLnVwZGF0ZVNldHRpbmdzKHtyZWFkT25seTp0''@;'; put 'put ''aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGRhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksaC52YWxpZGF0ZVJvd3ModGhpcy5tb2RpZmVkUm93c0luZGV4ZXMpO2ZvcihsZXQgSSBvZiBDKXYuc29ydChJKTt0aGlzLmNoZWNrUm93TGltaXQoKX1ob3RDbGlja2VkKCl7MT09PXRoaXMudGltZXNDbGlj''@;'; put 'put ''a2VkJiZ0aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmVkaXRUYWJsZSgpLDA9PT10aGlzLnRpbWVzQ2xpY2tlZCYmKHRoaXMudGltZXNDbGlja2VkKyssc2V0VGltZW91dCgoKT0+e3RoaXMudGltZXNDbGlja2VkPTB9LDIwMCkpfWNsZWFuRXhjZWVkKCl7dGhpcy5leGNlZWRDZWxscz1b''@;'; put 'put ''XX1hcHByb3ZlcnNUb2dnbGUoKXt0aGlzLnNob3dBcHByb3ZlcnM9IXRoaXMuc2hvd0FwcHJvdmVyc31hZGRSb3coKXt0aGlzLmFkZGluZ05ld1Jvdz0hMCxzZXRUaW1lb3V0KCgpPT57Y29uc3QgaD10aGlzLmhvdEluc3RhbmNlO2xldCB2PXRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7aC5hbHRl''@;'; put 'put ''cigiaW5zZXJ0X3JvdyIsdiwxKSxoLnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpLGguc2VsZWN0Q2VsbCh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsMCksaC5yZW5kZXIoKSx0aGlzLmRhdGFTb3VyY2Vbdl0mJih0aGlzLmRhdGFTb3VyY2Vbdl0ubm9MaW5rT3B0''@;'; put 'put ''aW9uPSEwKSx0aGlzLmFkZGluZ05ld1Jvdz0hMSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKX0pfWNhbmNlbFN1Ym1pdCgpe3RoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZUJlZm9yZVN1Ym1pdCksdGhpcy5kYXRhU291''@;'; put 'put ''cmNlQmVmb3JlU3VibWl0PVtdLHRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2U7Y29uc3QgaD10aGlzLmhvdEluc3RhbmNlO2gudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5jZWxs''@;'; put 'put ''VmFsaWRhdGlvbixtb2RpZnlDb2xXaWR0aDpmdW5jdGlvbih2LHkpe3JldHVybiAwPT09eT82MDp2PjUwMD81MDA6dn19LCExKSxoLnNlbGVjdENlbGwoMCwwKSxoLnJlbmRlcigpLGgudmFsaWRhdGVSb3dzKHRoaXMubW9kaWZlZFJvd3NJbmRleGVzKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRp''@;'; put 'put ''b25WYWx1ZXMoKX1nZXRSb3dzU3VibWl0dGluZ0NvdW50KCl7dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkuZGVidWcmJih0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMuZGF0YVNvdXJjZSksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQp''@;'; put 'put ''KTtsZXQgaD0wLHY9MCx5PTA7dGhpcy5tb2RpZmVkUm93c0luZGV4ZXM9W10sdGhpcy5kYXRhTW9kaWZpZWQ9W107Zm9yKGxldCBDPTA7Qzx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoO0MrKyl7bGV0IEk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2VbQ10pO2lm''@;'; put 'put ''KCJZZXMiPT09SS5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18pdGhpcy5kYXRhTW9kaWZpZWQucHVzaChJKSx2Kys7ZWxzZXtsZXQgaj10aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQuZmluZChjZT0+e2ZvcihsZXQgX2Ugb2YgdGhpcy5oZWFkZXJQa3MpaWYoY2VbX2VdIT09SVtfZV0p''@;'; put 'put ''cmV0dXJuITE7cmV0dXJuITB9KTtqP0pTT04uc3RyaW5naWZ5KEkpIT09SlNPTi5zdHJpbmdpZnkoaikmJih0aGlzLmRhdGFNb2RpZmllZC5wdXNoKEkpLHRoaXMubW9kaWZlZFJvd3NJbmRleGVzLnB1c2goQyksaCsrKToodGhpcy5kYXRhTW9kaWZpZWQucHVzaChJKSx0aGlzLm1vZGlmZWRS''@;'; put 'put ''b3dzSW5kZXhlcy5wdXNoKEMpLHkrKyl9fXRoaXMucm93c0NoYW5nZWQ9e3Jvd3NVcGRhdGVkOmgscm93c0RlbGV0ZWQ6dixyb3dzQWRkZWQ6eX19dmFsaWRhdGVQcmltYXJ5S2V5cygpe2NvbnN0IGg9dGhpcy5ob3RJbnN0YW5jZTtsZXQgdj1oLmdldERhdGEoKTt0aGlzLnBrRmllbGRzPVtd''@;'; put 'put ''O2ZvcihsZXQgaj0wO2o8di5sZW5ndGg7aisrKXtsZXQgY2U9IiI7Zm9yKGxldCBfZT0xO19lPHRoaXMucmVhZE9ubHlGaWVsZHMrMTtfZSsrKWNlPWNlKyJ8Iit2W2pdW19lXTt0aGlzLnBrRmllbGRzLnB1c2goY2UpfWxldCBJLHk9W10sQz10aGlzLmRhdGFTb3VyY2UubGVuZ3RoO2Zvcihs''@;'; put 'put ''ZXQgaj0wO2o8dGhpcy5wa0ZpZWxkcy5sZW5ndGg7aisrKWZvcihsZXQgY2U9MDtjZTx0aGlzLnBrRmllbGRzLmxlbmd0aDtjZSsrKXRoaXMucGtGaWVsZHNbal09PT10aGlzLnBrRmllbGRzW2NlXSYmY2UhPT1qJiZ5LnB1c2goY2UpO2lmKHRoaXMucGtGaWVsZHMubGVuZ3RoPkMpZm9yKGxl''@;'; put 'put ''dCBqPUM7ajx0aGlzLnBrRmllbGRzLmxlbmd0aDtqKyspZm9yKGxldCBjZT1DO2NlPHRoaXMucGtGaWVsZHMubGVuZ3RoO2NlKyspajxjZSYmdGhpcy5wa0ZpZWxkc1tqXT09PXRoaXMucGtGaWVsZHNbY2VdJiZ5LnB1c2goY2UpO2ZvcihsZXQgaj0wO2o8eS5sZW5ndGg7aisrKWZvcihsZXQg''@;'; put 'put ''Y2U9MTtjZTx0aGlzLnJlYWRPbmx5RmllbGRzKzE7Y2UrKylJPWguZ2V0Q2VsbE1ldGEoeVtqXSxjZSksSS52YWxpZD0hMSxJLmR1cEtleT0hMCxoLnJlbmRlcigpO3RoaXMuZHVwbGljYXRlUGtJbmRleGVzPVsuLi5uZXcgU2V0KHkuc29ydCgpKV19cmVTZXRDZWxsVmFsaWRhdGlvblZhbHVl''@;'; put 'put ''cyhoPSExLHYpe2NvbnN0IHk9dGhpcy5ob3RJbnN0YW5jZTtmb3IobGV0IEMgb2YgdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZSl7Y29uc3QgST1DLnZhbHVlcy5tYXAoaj0+alt0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzLlJBV19WQUxVRV0pO3kuYmF0Y2goKCk9Pnt2YXIgaixjZSxfZSxS''@;'; put 'put ''ZTtjb25zdCBOZT15LmdldENlbGxNZXRhKEMucm93LEMuY29sKSxLZT1udWxsPT09KGo9dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PWo/dm9pZCAwOmouZ2V0UnVsZShOZS5kYXRhfHwiIik7bGV0IGh0O0tlJiYoaHQ9bnVsbD09PShjZT10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09''@;'; put 'put ''Y2U/dm9pZCAwOmNlLmdldERxRHJvcGRvd25Tb3VyY2UoS2UpKSxodHx8KGh0PVtdKTtjb25zdCBCdD1bLi4ubmV3IFNldChbLi4uaHQsLi4uSV0pXTtudWxsPT09KF9lPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1fZXx8X2UudXBkYXRlUnVsZShDLmNvbCx7''@;'; put 'put ''c291cmNlOkJ0fSkseS5zZXRDZWxsTWV0YShDLnJvdyxDLmNvbCwic291cmNlIixCdCksQy52YWx1ZXMubGVuZ3RoPjAmJih5LnNldENlbGxNZXRhKEMucm93LEMuY29sLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLHkuc2V0Q2VsbE1ldGEoQy5yb3csQy5jb2wsImVkaXRvciIsImF1dG9j''@;'; put 'put ''b21wbGV0ZSIpLHkuc2V0Q2VsbE1ldGEoQy5yb3csQy5jb2wsInN0cmljdCIsQy5zdHJpY3QpLHkuc2V0Q2VsbE1ldGEoQy5yb3csQy5jb2wsImZpbHRlciIsITEpLG51bGw9PT0oUmU9dGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcil8fHZvaWQgMD09PVJlfHxSZS51cGRhdGVSdWxl''@;'; put 'put ''KEMuY29sLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0OkMuc3RyaWN0LGZpbHRlcjohMX0pKSx0aGlzLnJlU2V0RXh0ZW5kZWRDZWxsVmFsaWRhdGlvblZhbHVlcyhDLHZvaWQgMCxoLHYpLHkucmVuZGVyKCl9KX19cmVTZXRFeHRlbmRlZENl''@;'; put 'put ''bGxWYWxpZGF0aW9uVmFsdWVzKGgsdix5PSExLEMpe2lmKGgpe3Z8fCh2PWgucm93KTtjb25zdCBqPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZShoKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhoLHYsaix5LEMpfWVsc2UgZm9yKGxldCBqIG9mIHRoaXMuY2VsbFZh''@;'; put 'put ''bGlkYXRpb25Tb3VyY2Upe2NvbnN0IGNlPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZShqKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhqLGoucm93LGNlLHksQyl9fXNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhoLHYseSxDPSExLEkpe3ZhciBqLGNlLF9lLFJlO2Nv''@;'; put 'put ''bnN0IE5lPXRoaXMuaG90SW5zdGFuY2U7bGV0IEtlPVtdO2ZvcihsZXQgaHQgb2YgeSlLZS5pbmRleE9mKGh0LkVYVFJBX0NPTF9OQU1FKTwwJiZLZS5wdXNoKGh0LkVYVFJBX0NPTF9OQU1FKTtmb3IobGV0IGh0IG9mIEtlKXtjb25zdCBCdD15LmZpbHRlcihZcj0+WXIuRVhUUkFfQ09MX05B''@;'; put 'put ''TUU9PT1odCk7bGV0ICR0PUJ0Lm1hcChZcj0+IkMiPT09WXIuRElTUExBWV9UWVBFP1lyLlJBV19WQUxVRV9DSEFSOllyLlJBV19WQUxVRV9OVU0pO2NvbnN0IGhuPU5lLnByb3BUb0NvbChodCk7dGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0aW9uTWFwLmZpbmQoWXI9Plly''@;'; put 'put ''LnJvdz09PXYmJllyLmNvbD09PWhuKXx8dGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0aW9uTWFwLnB1c2goe3Jvdzp2LGNvbDpobixhY3RpdmU6ITF9KSxOZS5zZXRDZWxsTWV0YSh2LGhuLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLE5lLnNldENlbGxNZXRhKHYsaG4s''@;'; put 'put ''ImVkaXRvciIsImF1dG9jb21wbGV0ZSIpLE5lLnNldENlbGxNZXRhKHYsaG4sInN0cmljdCIsaC5zdHJpY3QpLE5lLnNldENlbGxNZXRhKHYsaG4sImZpbHRlciIsITEpLG51bGw9PT0oaj10aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yKXx8dm9pZCAwPT09anx8ai51cGRhdGVSdWxl''@;'; put 'put ''KGhuLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0Omguc3RyaWN0LGZpbHRlcjohMX0pO2NvbnN0IGlyPU5lLmdldENlbGxNZXRhKHYsaG4pLHByPW51bGw9PT0oY2U9dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PWNlP3ZvaWQgMDpjZS5n''@;'; put 'put ''ZXRSdWxlKGlyLmRhdGF8fCIiKTtsZXQgRXI7cHImJihFcj1udWxsPT09KF9lPXRoaXMuZGNWYWxpZGF0b3IpfHx2b2lkIDA9PT1fZT92b2lkIDA6X2UuZ2V0RHFEcm9wZG93blNvdXJjZShwcikpLEVyfHwoRXI9W10pLCJudW1lcmljIj09PShudWxsPT1wcj92b2lkIDA6cHIudHlwZSk/KEVy''@;'; put 'put ''PXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMoRXIsIm51bWJlciIpLCR0PXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMoJHQsIm51bWJlciIpKTooRXI9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhFciwic3RyaW5nIiksJHQ9''@;'; put 'put ''dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcygkdCwic3RyaW5nIikpO2NvbnN0IEFyPVsuLi5uZXcgU2V0KFsuLi5FciwuLi4kdF0pXTtpZihOZS5zZXRDZWxsTWV0YSh2LGhuLCJzb3VyY2UiLEFyKSxudWxsPT09KFJlPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0''@;'; put 'put ''b3IpfHx2b2lkIDA9PT1SZXx8UmUudXBkYXRlUnVsZShobix7c291cmNlOkFyfSksQyl7aWYoSSYmSSE9PXYpcmV0dXJuO2NvbnN0IFlyPUJ0LmZpbmQoX2k9PjE9PT1faS5GT1JDRV9GTEFHKTtZciYmc2V0VGltZW91dCgoKT0+e05lLnNldERhdGFBdENlbGwodixobiwiQyI9PT1Zci5ESVNQ''@;'; put 'put ''TEFZX1RZUEU/WXIuUkFXX1ZBTFVFX0NIQVI6WXIuUkFXX1ZBTFVFX05VTSwiZm9yY2VfY2VsbF92YWxpZGF0aW9uX3ZhbHVlIiksdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PT09diYmKHRoaXMuZGF0YVNvdXJjZVt0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXhdW2h0XT0iQyI9PT1Z''@;'; put 'put ''ci5ESVNQTEFZX1RZUEU/WXIuUkFXX1ZBTFVFX0NIQVI6WXIuUkFXX1ZBTFVFX05VTSl9KX19fWdldEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUoaCx2KXt2YXIgeTtjb25zdCBJPXRoaXMuaG90SW5zdGFuY2UuZ2V0RGF0YUF0Q2VsbCh2fHxoLnJvdyxoLmNvbCksaj0oaC52YWx1ZXMuZmlu''@;'; put 'put ''ZChOZT0+TmVbdGhpcy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5SQVdfVkFMVUVdPT09SSl8fFtdKVt0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzLkRJU1BMQVlfSU5ERVhdLGNlPW51bGw9PT0oeT1oLmV4dGVuZGVkX3ZhbHVlcyl8fHZvaWQgMD09PXk/dm9pZCAwOnkuZmlsdGVyKE5lPT5OZVsw''@;'; put 'put ''XT09PWopLF9lPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5leHRlbmRlZENlbGxWYWxpZGF0aW9uRmllbGRzKSxSZT1bXTtmb3IobGV0IE5lIG9mIGNlfHxbXSl7bGV0IEtlPXt9O2ZvcihsZXQgaHQgb2YgT2JqZWN0LmtleXMoX2UpKUtlW2h0XT1OZVtfZVtodF1dO1JlLnB1''@;'; put 'put ''c2goS2UpfXJldHVybiBSZX1jaGVja1NhdmUoKXtpZih0aGlzLmdldFJvd3NTdWJtaXR0aW5nQ291bnQoKSwwPT09dGhpcy5yb3dzQ2hhbmdlZC5yb3dzQWRkZWQmJjA9PT10aGlzLnJvd3NDaGFuZ2VkLnJvd3NVcGRhdGVkJiYwPT09dGhpcy5yb3dzQ2hhbmdlZC5yb3dzRGVsZXRlZClyZXR1''@;'; put 'put ''cm4gdGhpcy5iYWRFZGl0VGl0bGU9Ik5vIGNoYW5nZXMgdG8gc3VibWl0Iix0aGlzLmJhZEVkaXRDYXVzZT0iUGxlYXNlIG1vZGlmeSBzb21lIHZhbHVlcyBhbmQgdHJ5IGFnYWluLiIsdm9pZCh0aGlzLmJhZEVkaXQ9ITApO2NvbnN0IGg9dGhpcy5ob3RJbnN0YW5jZTt0aGlzLmRhdGFTb3Vy''@;'; put 'put ''Y2VCZWZvcmVTdWJtaXQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpO2ZvcihsZXQgeT0wO3k8dGhpcy5kYXRhU291cmNlLmxlbmd0aDt5KyspZGVsZXRlIHRoaXMuZGF0YVNvdXJjZVt5XS5ub0xpbmtPcHRpb247aC51cGRhdGVTZXR0aW5ncyh7ZGF0YTp0''@;'; put 'put ''aGlzLmRhdGFTb3VyY2UsY29sSGVhZGVyczp0aGlzLmhlYWRlckNvbHVtbnMsY29sdW1uczp0aGlzLmNlbGxWYWxpZGF0aW9uLG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHk+NTAwPzUwMDp5fX0sITEpLHRoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpLGQuY250''@;'; put 'put ''PTAsZC5ub25Qa0NudD0wO2xldCB2PWguZ2V0RGF0YSgpO2lmKHYubGVuZ3RoPjEmJmguaXNFbXB0eVJvdyh2Lmxlbmd0aC0xKSYmaC5hbHRlcigicmVtb3ZlX3JvdyIsdi5sZW5ndGgtMSksdGhpcy52YWxpZGF0ZVByaW1hcnlLZXlzKCksMCE9PXRoaXMuZHVwbGljYXRlUGtJbmRleGVzLmxl''@;'; put 'put ''bmd0aClyZXR1cm4gdGhpcy5wa0R1cHM9ITAsdGhpcy5zdWJtaXQ9ITEsdm9pZCB0aGlzLmNhbmNlbFN1Ym1pdCgpO3RoaXMucGtEdXBzPSExLGgudmFsaWRhdGVSb3dzKHRoaXMubW9kaWZlZFJvd3NJbmRleGVzLCgpPT57dGhpcy5jaGVja0ludmFsaWQoKT90aGlzLmV2ZW50U2VydmljZS5z''@;'; put 'put ''aG93SW5mb01vZGFsKCJWYWxpZGF0aW9uIGVycm9yIiwiSW52YWxpZCBWYWx1ZXMgYXJlIFByZXNlbnQiKToodGhpcy5zdWJtaXQ9ITAsdGhpcy52YWxpZGF0aW9uRG9uZT0xLHNldFRpbWVvdXQoKCk9Pntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybUZpZWxkc184IikuZm9jdXMoKX0p''@;'; put 'put ''KX0pfXNhdmVUYWJsZShoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKHRoaXMuaG90SW5zdGFuY2UuZ2V0RGF0YSgpLGg9KGg9aC5maWx0ZXIoQz0+ISF0aGlzLmRhdGFNb2RpZmllZC5maW5kKGo9Pntmb3IobGV0IGNlIG9mIHRoaXMuaGVhZGVyUGtzKWlm''@;'; put 'put ''KGpbY2VdIT09Q1tjZV0pcmV0dXJuITE7cmV0dXJuITB9KSkpLm1hcChDPT57bGV0IEk9Qy5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX187cmV0dXJuIGRlbGV0ZSBDLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyxDLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXz1J''@;'; put 'put ''LE9iamVjdC5rZXlzKEMpLm1hcChqPT57dmFyIGNlO2NvbnN0IF9lPW51bGw9PT0oY2U9dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PWNlP3ZvaWQgMDpjZS5nZXRSdWxlKGopOyJudW1lcmljIj09PShudWxsPT1fZT92b2lkIDA6X2UudHlwZSkmJiIuIj09PUNbal0mJihDW2pdPW51bGwp''@;'; put 'put ''fSksQ30pLHRoaXMubG9nZ2VyU2VydmljZS5sb2coIkRhdGEgc3VibWl0dGVkIixoKSx0aGlzLmNoZWNrSW52YWxpZCgpKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJWYWxpZGF0aW9uIGVycm9yIiwiSW52YWxpZCBWYWx1ZXMgYXJlIFByZXNlbnQiKSx0aGlzLmNh''@;'; put 'put ''bmNlbFN1Ym1pdCgpLHZvaWQodGhpcy5zdWJtaXQ9ITEpO2lmKHRoaXMudmFsaWRhdGlvbkRvbmU9MCx0aGlzLnNhdmVMb2FkaW5nPSEwLGQuY250PDEmJjA9PT10aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcy5sZW5ndGgmJmQubm9uUGtDbnQ8MSl7dGhpcy5zYXZlTG9hZGluZz0hMCx0aGlzLmRp''@;'; put 'put ''c2FibGVTdWJtaXQ9ITEsdGhpcy5zdWJtaXQ9ITA7bGV0IEM9e0FDVElPTjoiTE9BRCJ9O2lmKHRoaXMubWVzc2FnZT10aGlzLm1lc3NhZ2UucmVwbGFjZSgvXG4vZywiLiAiKSxDLk1FU1NBR0U9dGhpcy5tZXNzYWdlLEMuTElCRFM9dGhpcy5saWJkcyx0aGlzLmNvbHMmJih5aWVsZCB0aGlz''@;'; put 'put ''LnNhc1N0b3JlU2VydmljZS51cGRhdGVUYWJsZShDLGgsIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvc3RhZ2VkYXRhIix0aGlzLiRkYXRhRm9ybWF0cykudGhlbihqPT57aWYodm9pZCAwIT09ai5zYXNwYXJhbXMpcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8i''@;'; put 'put ''K2ouc2FzcGFyYW1zWzBdLkRTSUQpLCEwfSkuY2F0Y2goaj0+KGNvbnNvbGUubG9nKCJlcnIiLGopLGQuY250PTAsZC5ub25Qa0NudD0wLHRoaXMuZGlzYWJsZVN1Ym1pdD0hMCx0aGlzLnN1Ym1pdD0hMSwhMSkpKSlyZXR1cm59ZC5jbnQ+PTE/KHRoaXMucGtOdWxsPSEwLHRoaXMuc3VibWl0''@;'; put 'put ''PSEwKTp0aGlzLnN1Ym1pdD0hMSxkLm5vblBrQ250Pj0xPyh0aGlzLm5vUGtOdWxsPSEwLHRoaXMuc3VibWl0PSEwKTp0aGlzLnN1Ym1pdD0hMSx0aGlzLmNhbmNlbFN1Ym1pdCgpLGQuY250PTAsZC5ub25Qa0NudD0wLHRoaXMuZGlzYWJsZVN1Ym1pdD0hMH0pfXZhbGlkYXRvclJ1bGVTb3Vy''@;'; put 'put ''Y2UoaCl7dmFyIHY7cmV0dXJuIG51bGw9PT0odj10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09dj92b2lkIDA6di5nZXRSdWxlKGgpfWNoZWNrSW52YWxpZCgpe3JldHVybiB0aGlzLmhvdEluc3RhbmNlQ29tcExpc3QuZmlyc3QuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxl''@;'; put 'put ''Y3RvckFsbCgiLmh0SW52YWxpZCIpLmxlbmd0aD4wfWdvVG9FZGl0b3IoKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvIil9Y2xvc2VSZWNvcmRFZGl0KGgpe3RoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD0tMSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkPXZvaWQgMCx0aGlzLmN1cnJl''@;'; put 'put ''bnRFZGl0UmVjb3JkVmFsaWRhdG9yPXZvaWQgMCwiQUREIj09PXRoaXMucmVjb3JkQWN0aW9uJiYhaCYmKHRoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMucHJldkRhdGFTb3VyY2UpLHRoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2RhdGE6''@;'; put 'put ''dGhpcy5kYXRhU291cmNlfSwhMSkpfWNvbmZpcm1SZWNvcmRFZGl0KGg9ITApe2NvbnN0IHY9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4O2gmJih0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9LTEpLHRoaXMuY29sdW1uSGVhZGVyLm1hcChDPT57dmFyIEksajtjb25zdCBjZT10aGlz''@;'; put 'put ''LmN1cnJlbnRFZGl0UmVjb3JkW0NdLF9lPSJudW0iPT09KG51bGw9PT0oaj1udWxsPT09KEk9dGhpcy4kZGF0YUZvcm1hdHMpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLnZhcnNbQ10pfHx2b2lkIDA9PT1qP3ZvaWQgMDpqLnR5cGUpLFJlPSgwLEl3LmlzU3BlY2lhbE1pc3NpbmcpKGNlKTtfZSYm''@;'; put 'put ''IWlzTmFOKGNlKSYmIVJlJiYodGhpcy5jdXJyZW50RWRpdFJlY29yZFtDXT0xKmNlKX0pLHRoaXMuZGF0YVNvdXJjZVt2XT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkLHRoaXMuaG90VGFibGUuZGF0YVt2XT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkLHRoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0''@;'; put 'put ''dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksaCYmKHRoaXMuY3VycmVudEVkaXRSZWNvcmQ9dm9pZCAwKX1vbk5leHRSZWNvcmQoKXt0aGlzLmNvbmZpcm1SZWNvcmRFZGl0KCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4''@;'; put 'put ''Pj10aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTE/MDp0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgrMSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgpfW9uUHJldmlvdXNSZWNvcmQoKXt0aGlzLmNvbmZpcm1SZWNvcmRFZGl0KCExKSx0aGlzLmN1cnJl''@;'; put 'put ''bnRFZGl0UmVjb3JkSW5kZXg9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PD0wP3RoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMTp0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgtMSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgpfWFkZFJlY29yZEJ1''@;'; put 'put ''dHRvbkNsaWNrKCl7dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSZWNvcmQ/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCk6dGhpcy5hZGRFZGl0TmV3UmVjb3JkKCl9YWRkRWRpdE5ld1JlY29yZCgpe3RoaXMuYWRkUmVjb3JkKCksc2V0VGltZW91dCgoKT0+e3Ro''@;'; put 'put ''aXMuZWRpdFJlY29yZChudWxsLHRoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMSwhMCl9LDFlMyl9YWRkUmVjb3JkKCl7dGhpcy5hZGRSb3coKX1lZGl0UmVjb3JkKGgsdix5KXt2YXIgQyxJO2lmKCEodm9pZCAwPT09dnx8djwwfHx0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEVkaXRSZWNvcmQp''@;'; put 'put ''KXtpZih0aGlzLnJlY29yZEFjdGlvbj15PyJBREQiOiJFRElUIix0aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmVkaXRUYWJsZSghMSx5KSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kY1ZhbGlkYXRvcikseSl0''@;'; put 'put ''aGlzLnByZXZEYXRhU291cmNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSx0aGlzLnByZXZEYXRhU291cmNlLnBvcCgpO2Vsc2V7Y29uc3Qgaj10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuaG90SW5zdGFuY2UuZ2V0Q2VsbE1ldGFBdFJv''@;'; put 'put ''dyh2KSk7Zm9yKGxldCBjZSBvZiBqKWlmKGNlKXtjb25zdCBfZT1udWxsPT09KEM9Y2UucHJvcCl8fHZvaWQgMD09PUM/dm9pZCAwOkMudG9TdHJpbmcoKTtkZWxldGUgY2UucHJvcCxkZWxldGUgY2UuZGF0YSxudWxsPT09KEk9dGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcil8fHZv''@;'; put 'put ''aWQgMD09PUl8fEkudXBkYXRlUnVsZShjZS5jb2wsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGNlKSx7ZGF0YTpfZX0pKX19dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PXYsdGhpcy5jdXJyZW50RWRpdFJlY29yZD10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMu''@;'; put 'put ''ZGF0YVNvdXJjZVt2XSl9fXRvZ2dsZUhvdFBsdWdpbihoLHYpe2NvbnN0IHk9dGhpcy5ob3RJbnN0YW5jZTt5LmJhdGNoKCgpPT57bGV0IEM9eS5nZXRQbHVnaW4oaCk7Qz8oc2V0VGltZW91dCgoKT0+e3Y/Qy5lbmFibGVQbHVnaW4oKTpDLmRpc2FibGVQbHVnaW4oKX0sMTAwKSx5LnJlbmRl''@;'; put 'put ''cigpKTpjb25zb2xlLndhcm4oIlRvZ2dsZSBIb3QgUGx1Z2luIGZhaWxlZCAtIFBsdWdpbiBuYW1lZDogIitoKyIgLSBjb3VsZCBub3QgYmUgZm91bmQuIil9KX1keW5hbWljQ2VsbFZhbGlkYXRpb25EaXNhYmxlZChoLHYpe3JldHVybiEhdGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxW''@;'; put 'put ''YWxpZGF0aW9uTWFwLmZpbmQoQz0+Qy5yb3c9PT1oJiZDLmNvbD09PXYmJiFDLmFjdGl2ZSl9ZHluYW1pY0NlbGxWYWxpZGF0aW9uKGgsdil7dmFyIHk7aWYodGhpcy5keW5hbWljQ2VsbFZhbGlkYXRpb25EaXNhYmxlZChoLHYpKXJldHVybjtjb25zdCBDPXRoaXMuaG90SW5zdGFuY2U7aWYo''@;'; put 'put ''Qy5nZXRDZWxsTWV0YShoLHYpLnJlYWRPbmx5KXJldHVybjtjb25zdCBqPUMuZ2V0RGF0YUF0Q2VsbChoLHYpLGNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlW2hdKSxfZT1PYmplY3Qua2V5cyhjZSlbdl0sUmU9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlbGV0''@;'; put 'put ''ZUtleXNBbmRIYXNoKGNlLFtfZSwibm9MaW5rT3B0aW9uIl0sITEpLE5lPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KEtlPT5LZS5oYXNoPT09UmUpO2lmKE5lPi0xKXtsZXQgS2U9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZVtOZV0udmFsdWVzLm1hcCgkdD0+JHRbdGhp''@;'; put 'put ''cy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5SQVdfVkFMVUVdKTtjb25zdCBodD0oQy5nZXRDZWxsTWV0YShoLHYpLnNvdXJjZXx8W10pLmxlbmd0aDwxLEJ0PSIgIiE9PWo7Qy5iYXRjaCgoKT0+e3ZhciAkdCxobixEbixpcjtjb25zdCBwcj1DLmdldENlbGxNZXRhKGgsdiksRXI9bnVsbD09PSgk''@;'; put 'put ''dD10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09JHQ/dm9pZCAwOiR0LmdldFJ1bGUocHIuZGF0YXx8IiIpO2xldCBBcjtFciYmKEFyPW51bGw9PT0oaG49dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PWhuP3ZvaWQgMDpobi5nZXREcURyb3Bkb3duU291cmNlKEVyKSksQXJ8fChBcj1b''@;'; put 'put ''XSksIm51bWVyaWMiPT09KG51bGw9PUVyP3ZvaWQgMDpFci50eXBlKT8oQXI9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhBciwibnVtYmVyIiksS2U9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhLZSwibnVtYmVyIikpOihBcj10aGlzLmhlbHBl''@;'; put 'put ''clNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKEFyLCJzdHJpbmciKSxLZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKEtlLCJzdHJpbmciKSk7Y29uc3QgWXI9Wy4uLm5ldyBTZXQoWy4uLkFyLC4uLktlXSldO2lmKEMuc2V0Q2VsbE1ldGEoaCx2LCJzb3VyY2UiLFly''@;'; put 'put ''KSxudWxsPT09KERuPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1Ebnx8RG4udXBkYXRlUnVsZSh2LHtzb3VyY2U6WXJ9KSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlW05lXS52YWx1ZXMubGVuZ3RoPjApe2NvbnN0IF9pPXRoaXMuY2VsbFZhbGlkYXRpb25T''@;'; put 'put ''b3VyY2VbTmVdLnN0cmljdDtDLnNldENlbGxNZXRhKGgsdiwicmVuZGVyZXIiLCJhdXRvY29tcGxldGUiKSxDLnNldENlbGxNZXRhKGgsdiwiZWRpdG9yIiwiYXV0b2NvbXBsZXRlIiksQy5zZXRDZWxsTWV0YShoLHYsInN0cmljdCIsX2kpLEMuc2V0Q2VsbE1ldGEoaCx2LCJmaWx0ZXIiLCEx''@;'; put 'put ''KSxudWxsPT09KGlyPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1pcnx8aXIudXBkYXRlUnVsZSh2LHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0Ol9pLGZpbHRlcjohMX0pfXRoaXMucmVTZXRFeHRlbmRlZENl''@;'; put 'put ''bGxWYWxpZGF0aW9uVmFsdWVzKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbTmVdLGgsaHQmJkJ0KSxDLnJlbmRlcigpfSl9aWYoTmU8MCl7Y29uc3QgS2U9e1NBU0NvbnRyb2xUYWJsZTpbe2xpYmRzOnRoaXMubGliZHMsdmFyaWFibGVfbm06X2V9XSxzb3VyY2Vfcm93OltjZV19LGh0PW51''@;'; put 'put ''bGw9PT0oeT10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09eT92b2lkIDA6eS5nZXREcURldGFpbHMoX2UpLmZpbmQoQnQ9PiJTT0ZUU0VMRUNUX0hPT0siPT09QnQuUlVMRV9UWVBFfHwiSEFSRFNFTEVDVF9IT09LIj09PUJ0LlJVTEVfVFlQRSk7aHQmJih0aGlzLmNlbGxWYWxpZGF0aW9u''@;'; put 'put ''U291cmNlLnB1c2goe3JvdzpoLGNvbDp2LHN0cmljdDoiSEFSRFNFTEVDVF9IT09LIj09PWh0LlJVTEVfVFlQRSx2YWx1ZXM6W10saGFzaDpSZSxjb3VudDp0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmxlbmd0aCsxfSksQy5zZXRDZWxsTWV0YShoLHYsInJlbmRlcmVyIixQZ3QpLHRoaXMu''@;'; put 'put ''Y3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5wdXNoKHYpLEMucmVuZGVyKCksdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImVkaXRvcnMvZ2V0ZHluYW1pY2NvbHZhbHMiLEtlLHZvaWQgMCx7c3VwcHJlc3NTdWNjZXNzQWJvcnRNb2RhbDohMCxzdXBwcmVzc0Vycm9yQWJvcnRNb2RhbDohMH0p''@;'; put 'put ''LnRoZW4oQnQ9PntpZihCdC5keW5hbWljX3ZhbHVlcy5tYXAoaG49PmhuW3RoaXMuY2VsbFZhbGlkYXRpb25GaWVsZHMuUkFXX1ZBTFVFXSkubGVuZ3RoPjApe2NvbnN0IGhuPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KERuPT5Ebi5oYXNoPT09UmUpO2huPi0xJiYodGhp''@;'; put 'put ''cy5jZWxsVmFsaWRhdGlvblNvdXJjZVtobl09T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbaG5dKSx7cm93OmgsY29sOnYsdmFsdWVzOkJ0LmR5bmFtaWNfdmFsdWVzLGV4dGVuZGVkX3ZhbHVlczpCdC5keW5hbWljX2V4dGVuZGVkX3Zh''@;'; put 'put ''bHVlc30pKSxDLnNldENlbGxNZXRhKGgsdiwicmVuZGVyZXIiLE5tZSksdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLnNwbGljZSh0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZih2KSwxKSxDLmRlc2VsZWN0Q2VsbCgpLEMucmVuZGVyKCksQy5iYXRjaCgoKT0+''@;'; put 'put ''e3NldFRpbWVvdXQoKCk9Pnt0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoITAsaCksQy5yZW5kZXIoKSxDLnZhbGlkYXRlUm93cyhbaF0pfSwxMDApfSl9aWYoQy5zZXRDZWxsTWV0YShoLHYsInJlbmRlcmVyIixObWUpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5zcGxp''@;'; put 'put ''Y2UodGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLmluZGV4T2YodiksMSksQy5kZXNlbGVjdENlbGwoKSxDLnJlbmRlcigpLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UubGVuZ3RoPnRoaXMudmFsaWRhdGlvblRhYmxlTGltaXQpe2NvbnN0IGhuPXRoaXMuY2VsbFZhbGlkYXRpb25T''@;'; put 'put ''b3VyY2UucmVkdWNlKChpcixwcik9PmlyLmNvdW50PHByLmNvdW50P2lyOnByKSxEbj10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmluZGV4T2YoaG4pO3RoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Uuc3BsaWNlKERuLDEpfX0pLmNhdGNoKEJ0PT57Y29uc3QgJHQ9dGhpcy5jZWxsVmFsaWRh''@;'; put 'put ''dGlvblNvdXJjZS5maW5kSW5kZXgoaG49PmhuLmhhc2g9PT1SZSk7dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5zcGxpY2UoJHQsMSksQy5iYXRjaCgoKT0+e0Muc2V0Q2VsbE1ldGEoaCx2LCJyZW5kZXJlciIsQmd0KSxDLnJlbmRlcigpfSksdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRp''@;'; put 'put ''bmdzLnNwbGljZSh0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZih2KSwxKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzLnB1c2godiksc2V0VGltZW91dCgoKT0+e0Muc2V0Q2VsbE1ldGEoaCx2LCJyZW5kZXJlciIsTm1lKSxDLnJlbmRlcigpLHRoaXMuY3VycmVu''@;'; put 'put ''dEVkaXRSZWNvcmRFcnJvcnMuc3BsaWNlKHRoaXMuY3VycmVudEVkaXRSZWNvcmRFcnJvcnMuaW5kZXhPZih2KSwxKX0sM2UzKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKCJnZXRkeW5hbWljY29sdmFscyBlcnJvcjoiLEJ0KX0pKX19''@;'; put 'put ''Y2hlY2tFbXB0eVJvd1doZW5GaWx0ZXIoKXt0aGlzLnplcm9GaWx0ZXJSb3dzPSExLHZvaWQgMCE9PXRoaXMuZmlsdGVyX3BrJiYxPT09dGhpcy5ob3RUYWJsZS5kYXRhLmxlbmd0aCYmW251bGwsIiJdLmluY2x1ZGVzKHRoaXMuaG90VGFibGUuZGF0YVswXVt0aGlzLmhlYWRlclBrc1swXV0p''@;'; put 'put ''JiYodGhpcy56ZXJvRmlsdGVyUm93cz0hMCl9b25SZWNvcmRJbnB1dEZvY3VzKGgpe3RoaXMuZHluYW1pY0NlbGxWYWxpZGF0aW9uKHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleCxoLmNvbE5hbWUpfWV4ZWN1dGVEeW5hbWljQ2VsbFZhbGlkYXRpb25JZkFwcGxpY2FibGUoaCx2LHkpe2Nv''@;'; put 'put ''bnN0IEM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlbGV0ZUtleXNBbmRIYXNoKHRoaXMuZGF0YVNvdXJjZVt5XSxbaCwibm9MaW5rT3B0aW9uIl0pLEk9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kKGo9PmouaGFzaD09PUMmJnY9PT1qLmNvbCk7aWYoSSYmSS5leHRlbmRlZF92YWx1ZXMm''@;'; put 'put ''JkkuZXh0ZW5kZWRfdmFsdWVzLmxlbmd0aD4wKXtjb25zdCBqPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZShJLHkpO3RoaXMuc2V0RXh0ZW5kZWRWYWx1ZXNUb0NlbGxzKEkseSxqLCEwKX19bmdPbkluaXQoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''Kigpe3RoaXMuYXBwU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKHY9Pnt0aGlzLmhvdFRhYmxlLmxpY2Vuc2VLZXk9dn0pLHRoaXMuX3F1ZXJ5PXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZSh2PT57dGhpcy53aGVyZVN0cmluZz12LnN0cmluZyx0aGlzLmNs''@;'; put 'put ''YXVzZXM9di5vYmosdGhpcy5saWJkcz12LmxpYmRzfSk7bGV0IGg9e307dm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtJiYodGhpcy5saWJkcz10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW0sdGhpcy5maWx0ZXJfcGs9dGhpcy5yb3V0ZS5zbmFwc2hv''@;'; put 'put ''dC5wYXJhbXMuZmlsdGVySWQsImVkaXQtcmVjb3JkIj09PXRoaXMucm91dGUuc25hcHNob3QudXJsWzBdLnBhdGgmJih0aGlzLnJlY29yZEFjdGlvbj12b2lkIDAhPT10aGlzLmZpbHRlcl9waz8iRURJVCI6IkFERCIpLGguTElCRFM9dGhpcy5saWJkcyx2b2lkIDAhPT10aGlzLmZpbHRlcl9w''@;'; put 'put ''ayYmKGguRklMVEVSX1JLPXBhcnNlSW50KHRoaXMuZmlsdGVyX3BrKSksaC5PVVRERVNUPSJXRUIiLHRoaXMubGliZHMmJihyaS5lZGl0b3IubGlicmFyeT10aGlzLmxpYmRzLnNwbGl0KCIuIilbMF0scmkuZWRpdG9yLnRhYmxlPXRoaXMubGliZHMuc3BsaXQoIi4iKVsxXSkpLHRoaXMubGli''@;'; put 'put ''ZHMmJih0aGlzLmdldGRhdGFFcnJvcj0hMSx5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5jYWxsU2VydmljZShoLCJTQVNDb250cm9sVGFibGUiLCJlZGl0b3JzL2dldGRhdGEiLHRoaXMubGliZHMpLnRoZW4odj0+e3RoaXMuaW5pdFNldHVwKHYpfSkuY2F0Y2godj0+e3RoaXMuZ2V0ZGF0''@;'; put 'put ''YUVycm9yPSEwLHRoaXMudGFibGVUcnVlPSEwfSkpfSl9bmdBZnRlclZpZXdJbml0KCl7fWluaXRTZXR1cChoKXtpZih0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90UmVnaXN0ZXJlci5nZXRJbnN0YW5jZSgiaG90SW5zdGFuY2UiKSx0aGlzLmdldGRhdGFFcnJvcnx8IWh8fCFoLmRhdGEpcmV0''@;'; put 'put ''dXJuO3RoaXMuY29scz1oLmRhdGEuY29scyx0aGlzLmRzbWV0YT1oLmRhdGEuZHNtZXRhO2NvbnN0IHY9dGhpcy5ob3RJbnN0YW5jZSx5PWguZGF0YS5hcHByb3ZlcnM7dGhpcy5jb2xzJiYodGhpcy5oZWFkZXJBcnJheT0oZD0+e2NvbnN0IGc9W107Zm9yKGxldCBoIG9mIGQpIl9fX19fREVM''@;'; put 'put ''RVRFX19USElTX19SRUNPUkRfX19fXyIhPT1oLk5BTUUmJmcucHVzaChoLk5BTUUpO3JldHVybiBnfSkodGhpcy5jb2xzKSkseS5mb3JFYWNoKEk9Pnt0aGlzLmFwcHJvdmVycy5wdXNoKEkuUEVSU09OTkFNRSl9KSx0aGlzLnRhYmxlVHJ1ZT0hMCx0aGlzLmxpYmRzPWgubGliZHMsdGhpcy5o''@;'; put 'put ''b3RUYWJsZS5kYXRhPWguZGF0YS5zYXNkYXRhLHRoaXMuaGVhZGVyQ29sdW1ucz1oLmRhdGEuc2FzcGFyYW1zWzBdLkNPTEhFQURFUlMuc3BsaXQoIiwiKSx0aGlzLmhlYWRlclBrcz1oLmRhdGEuc2FzcGFyYW1zWzBdLlBLLnNwbGl0KCIgIiksdGhpcy5jb2x1bW5MZXZlbFNlY3VyaXR5Rmxh''@;'; put 'put ''Zz0hIWguZGF0YS5zYXNwYXJhbXNbMF0uQ0xTX0ZMQUcsdGhpcy5jb2x1bW5MZXZlbFNlY3VyaXR5RmxhZyYmdGhpcy5zZXRSZXN0cmljdGlvbnMoe3Jlc3RyaWN0QWRkUm93OiEwLHJlbW92ZUVkaXRSZWNvcmRCdXR0b246ITAscmVtb3ZlQWRkUmVjb3JkQnV0dG9uOiEwfSksdGhpcy5jaGVj''@;'; put 'put ''a0VtcHR5Um93V2hlbkZpbHRlcigpLC0xIT09dGhpcy5oZWFkZXJDb2x1bW5zLmluZGV4T2YoIl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyIpJiYodGhpcy5oZWFkZXJDb2x1bW5zW3RoaXMuaGVhZGVyQ29sdW1ucy5pbmRleE9mKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19f''@;'; put 'put ''X18iKV09IkRlbGV0ZT8iKSx0aGlzLmhlYWRlckFycmF5PXRoaXMuaGVhZGVyQ29sdW1ucy5zbGljZSgxKSwiIiE9PWguZGF0YS5zYXNwYXJhbXNbMF0uRFRWQVJTJiYodGhpcy5kYXRlSGVhZGVycz1oLmRhdGEuc2FzcGFyYW1zWzBdLkRUVkFSUy5zcGxpdCgiICIpKSwiIiE9PWguZGF0YS5z''@;'; put 'put ''YXNwYXJhbXNbMF0uVE1WQVJTJiYodGhpcy50aW1lSGVhZGVycz1oLmRhdGEuc2FzcGFyYW1zWzBdLlRNVkFSUy5zcGxpdCgiICIpKSwiIiE9PWguZGF0YS5zYXNwYXJhbXNbMF0uRFRUTVZBUlMmJih0aGlzLmRhdGVUaW1lSGVhZGVycz1oLmRhdGEuc2FzcGFyYW1zWzBdLkRUVE1WQVJTLnNw''@;'; put 'put ''bGl0KCIgIikpLGguZGF0YS54bF9ydWxlcy5sZW5ndGg+MCYmKHRoaXMueGxSdWxlcz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGguZGF0YS54bF9ydWxlcykpLHRoaXMuZGNWYWxpZGF0b3I9bmV3IElndChoLmRhdGEuc2FzcGFyYW1zWzBdLGguZGF0YS4kc2FzZGF0YSx0aGlzLmNv''@;'; put 'put ''bHMsaC5kYXRhLmRxcnVsZXMsaC5kYXRhLmRxZGF0YSksdGhpcy5jZWxsVmFsaWRhdGlvbj10aGlzLmRjVmFsaWRhdG9yLmdldFJ1bGVzKCksdGhpcy5kYXRhU291cmNlPWguZGF0YS5zYXNkYXRhLHRoaXMuJGRhdGFGb3JtYXRzPWguZGF0YS4kc2FzZGF0YTtmb3IobGV0IEk9MDtJPHRoaXMu''@;'; put 'put ''aGVhZGVyQ29sdW1ucy5sZW5ndGg7SSsrKXRoaXMuaG90RGF0YVNjaGVtYVt0aGlzLmNlbGxWYWxpZGF0aW9uW0ldLmRhdGFdPURndCh0aGlzLmNlbGxWYWxpZGF0aW9uW0ldLnR5cGUsdGhpcy5jZWxsVmFsaWRhdGlvbltJXSk7dGhpcy5jaGVja1Jvd0xpbWl0KCksdi51cGRhdGVTZXR0aW5n''@;'; put 'put ''cyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2UsY29sSGVhZGVyczp0aGlzLmhlYWRlckNvbHVtbnMsY29sdW1uczp0aGlzLmNlbGxWYWxpZGF0aW9uLGhlaWdodDp0aGlzLmhvdFRhYmxlLmhlaWdodCxzdHJldGNoSDoiYWxsIixyZWFkT25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGhpZGRlbkNv''@;'; put 'put ''bHVtbnM6e2luZGljYXRvcnM6ITAsY29sdW1uczp0aGlzLmRjVmFsaWRhdG9yLmdldEhpZGRlbkNvbHVtbnMoKX0sbW9kaWZ5Q29sV2lkdGg6ZnVuY3Rpb24oSSxqKXtyZXR1cm4gMD09PWo/NjA6ST41MDA/NTAwOkl9LG1hbnVhbENvbHVtbkZyZWV6ZTohMSxtdWx0aUNvbHVtblNvcnRpbmc6''@;'; put 'put ''ITAsbWFudWFsQ29sdW1uUmVzaXplOiEwLGZpbHRlcnM6ITEsbWFudWFsUm93UmVzaXplOiEwLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OjUwLHJvd0hlYWRlcnM6ST0+IiAiLHJvd0hlYWRlcldpZHRoOjE1LHJvd0hlaWdodHM6MjQsbWF4Um93czp0aGlzLmFwcFNlcnZpY2UuZGVtb0xp''@;'; put 'put ''bWl0cy5yb3dzX2FsbG93ZWR8fDEvMCxpbnZhbGlkQ2VsbENsYXNzTmFtZToiaHRJbnZhbGlkIixkcm9wZG93bk1lbnU6e2l0ZW1zOnttYWtlX3JlYWRfb25seTp7bmFtZToibWFrZV9yZWFkX29ubHkifSxhbGlnbm1lbnQ6e25hbWU6ImFsaWdubWVudCJ9LHNwMTp7bmFtZToiLS0tLS0tLS0t''@;'; put 'put ''In0saW5mbzp7bmFtZToidGVzdCBpbmZvIixyZW5kZXJlcjooSSxqLGNlLF9lLFJlLE5lKT0+e3ZhciBLZSxodDtjb25zdCBCdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bGV0ICR0LGhuPSJObyBpbmZvIGZvdW5kIjtpZih0aGlzLmhvdEluc3RhbmNlKXtjb25zdCBEbj10aGlz''@;'; put 'put ''LmhvdEluc3RhbmNlLmdldFNlbGVjdGVkKCl8fFtdLGlyPURuP0RuWzBdWzFdOi0xLHByPW51bGw9PT0oS2U9dGhpcy5ob3RJbnN0YW5jZSl8fHZvaWQgMD09PUtlP3ZvaWQgMDpLZS5jb2xUb1Byb3AoaXIpOyR0PW51bGw9PT0oaHQ9dGhpcy4kZGF0YUZvcm1hdHMpfHx2b2lkIDA9PT1odD92''@;'; put 'put ''b2lkIDA6aHQudmFyc1twcl0sJHQmJihobj1gTEFCRUw6ICR7bnVsbD09JHQ/dm9pZCAwOiR0LmxhYmVsfTxicj5UWVBFOiAke251bGw9PSR0P3ZvaWQgMDokdC50eXBlfTxicj5MRU5HVEg6ICR7bnVsbD09JHQ/dm9pZCAwOiR0Lmxlbmd0aH08YnI+Rk9STUFUOiAke251bGw9PSR0P3ZvaWQg''@;'; put 'put ''MDokdC5mb3JtYXR9YCl9cmV0dXJuIEJ0LmlubmVySFRNTD1obixCdH19fX0sZGF0YVNjaGVtYTp0aGlzLmhvdERhdGFTY2hlbWEsY29udGV4dE1lbnU6dGhpcy5ob3RUYWJsZS5zZXR0aW5ncy5jb250ZXh0TWVudSxjdXJyZW50SGVhZGVyQ2xhc3NOYW1lOiJjdXN0b21IIixhZnRlckdldENv''@;'; put 'put ''bEhlYWRlcjooSSxqKT0+e2NvbnN0IGNlPXRoaXMuY29sdW1uSGVhZGVyW0ldLF9lPWNlJiZ0aGlzLmlzQ29sUGsoY2UpLFJlPWNlJiZ0aGlzLmlzUmVhZG9ubHlDb2woY2UpO19lJiZqLmNsYXNzTGlzdC5hZGQoInByaW1hcnlLZXlIZWFkZXJTdHlsZSIpLFJlJiYhX2UmJmouY2xhc3NMaXN0''@;'; put 'put ''LmFkZCgicmVhZG9ubHlDZWxsIiksMD09PUkmJmouY2xhc3NMaXN0LmFkZCgiZmlyc3RDb2x1bW5IZWFkZXJTdHlsZSIpfSxhZnRlckdldENlbGxNZXRhOihJLGosY2UpPT57aiYmdGhpcy5pc1JlYWRvbmx5Q29sKGopJiYoY2UuY2xhc3NOYW1lPSJyZWFkb25seUNlbGwiKX19LCExKSx0aGlz''@;'; put 'put ''LmhvdFRhYmxlLmhpZGRlbj0hMSx0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKSx0aGlzLnF1ZXJ5VGV4dD1oLmRhdGEuc2FzcGFyYW1zWzBdLkZJTFRFUl9URVhULHRoaXMuY29sdW1uSGVhZGVyPWguZGF0YS5zYXNwYXJhbXNbMF0uQ09MSEVBREVSUy5zcGxpdCgiLCIp''@;'; put 'put ''LHRoaXMuY29sdW1uSGVhZGVyWzBdPSJEZWxldGU/Iix0aGlzLnJlYWRPbmx5RmllbGRzPWguZGF0YS5zYXNwYXJhbXNbMF0uUEtDTlQ7bGV0IEM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvdEluc3RhbmNlIik7QyYmQy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEk9Pnt0aGlz''@;'; put 'put ''LnVwbG9hZFByZXZpZXd8fHRoaXMuaG90Q2xpY2tlZCgpLHNldFRpbWVvdXQoKCk9PntsZXQgaj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZGVidWctc3dpdGNoLWl0ZW0iKXx8dm9pZCAwO2omJmouY2xpY2soKX0sMTAwKX0pLHYuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLChJLGosY2Us''@;'; put 'put ''X2UsUmUsTmUpPT57ST09PWNlJiZqPT09X2UmJiExPT09dGhpcy5ob3RUYWJsZS5yZWFkT25seSYmdGhpcy5keW5hbWljQ2VsbFZhbGlkYXRpb24oSSxqKX0pLHYuYWRkSG9vaygiYmVmb3JlS2V5RG93biIsST0+e2NvbnN0IGo9dGhpcy5ob3RJbnN0YW5jZS5nZXRTZWxlY3RlZCgpLGNlPWom''@;'; put 'put ''JmpbMF07aWYoY2Upe2NvbnN0IF9lPWNlWzBdLE5lPWNlWzFdLEtlPWNlWzNdO2lmKF9lPT09Y2VbMl0mJk5lPT09S2Upe2NvbnN0IGh0PXRoaXMuaG90SW5zdGFuY2UuZ2V0Q2VsbE1ldGEoX2UsTmUpO2h0JiYhMT09PWh0LmZpbHRlciYmdGhpcy5ob3RJbnN0YW5jZS5zZXRDZWxsTWV0YShf''@;'; put 'put ''ZSxOZSwiZmlsdGVyIiwhMCl9fX0pLHYuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLChJLGopPT57aWYoImVkaXQiPT09ail7Y29uc3QgY2U9dGhpcy5ob3RJbnN0YW5jZSxfZT1JWzBdWzBdLFJlPUlbMF1bMV0sTmU9Y2UucHJvcFRvQ29sKFJlKSxLZT1jZS5nZXRDZWxsTWV0YShfZSxOZSk7S2Um''@;'; put 'put ''JiExPT09S2UuZmlsdGVyJiZjZS5zZXRDZWxsTWV0YShfZSxOZSwiZmlsdGVyIiwhMCksdGhpcy5leGVjdXRlRHluYW1pY0NlbGxWYWxpZGF0aW9uSWZBcHBsaWNhYmxlKFJlLE5lLF9lKX19KSx2LmFkZEhvb2soImFmdGVyUmVuZGVyIixJPT57dGhpcy5ldmVudFNlcnZpY2UuZGlzcGF0Y2hF''@;'; put 'put ''dmVudCgicmVzaXplIil9KSx2LmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IiwoSSxqKT0+e2xldCBjZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIud3RIb2xkZXIiKTtzZXRUaW1lb3V0KCgpPT57Y2UmJihjZS5zY3JvbGxUb3A9Y2Uuc2Nyb2xsSGVpZ2h0KX0pfSksdi5hZGRIb29rKCJiZWZv''@;'; put 'put ''cmVQYXN0ZSIsKEksaik9Pntjb25zdCBjZT1qWzBdLnN0YXJ0Q29sO0lbMF09SVswXS5tYXAoKF9lLFJlKT0+e3ZhciBOZSxLZTtjb25zdCBCdD0ibnVtIj09PShudWxsPT09KEtlPW51bGw9PT0oTmU9dGhpcy4kZGF0YUZvcm1hdHMpfHx2b2lkIDA9PT1OZT92b2lkIDA6TmUudmFyc1t0aGlz''@;'; put 'put ''LmNvbHVtbkhlYWRlcltjZStSZV1dKXx8dm9pZCAwPT09S2U/dm9pZCAwOktlLnR5cGUpLCR0PSgwLEl3LmlzU3BlY2lhbE1pc3NpbmcpKF9lKTtyZXR1cm4gQnQmJiFpc05hTihfZSkmJiEkdCYmKF9lKj0xKSxfZX0pfSksdi5hZGRIb29rKCJhZnRlclJlbW92ZVJvdyIsKCk9Pnt0aGlzLmNo''@;'; put 'put ''ZWNrUm93TGltaXQoKX0pLHYuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLCgpPT57dGhpcy5jaGVja1Jvd0xpbWl0KCl9KSx0aGlzLnVwbG9hZFVybD0ic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSIsbnVsbCE9PXRoaXMucmVjb3JkQWN0aW9uJiYoIkFERCI9PT10aGlzLnJlY29yZEFjdGlv''@;'; put 'put ''bj8odGhpcy5hZGRSZWNvcmQoKSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsITApKToxPT09dGhpcy5kYXRhU291cmNlLmxlbmd0aCYmdGhpcy5lZGl0UmVjb3JkKG51bGwsMCkpLGguZGF0YS5xdWVyeS5sZW5ndGg+MCYmKCJob21lIj09PXJpLnJvb3RQ''@;'; put 'put ''YXJhbXx8ImVkaXRvciI9PT1yaS5yb290UGFyYW0pJiYwPT09cmkuZWRpdG9yLmZpbHRlci5jbGF1c2VzLmxlbmd0aCYmKHJpLmVkaXRvci5maWx0ZXIucXVlcnk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShoLmRhdGEucXVlcnkpLHJpLmVkaXRvci5maWx0ZXIubGliZHM9dGhpcy5y''@;'; put 'put ''b3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoImVkaXQiLHRoaXMuY29scykpLHYucmVuZGVyKCl9fXJldHVybiBkLmNudD0wLGQubm9uUGtDbnQ9MCxkLmxhc3RDZWxsPTAsZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChzaCksS3QobXUpLEt0KEdoKSxLdChrZyksS3QoY2MpLEt0KEVsKSxLdChKMSksS3QobDApLEt0KGQxKSxLdChqTykpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtZWRpdG9yIl1dLHZpZXdRdWVyeTpmdW5jdGlv''@;'; put 'put ''bihoLHYpe2lmKDEmaCYmKGcwKHc3dCw3KSxnMChiN3QsNSksZzAoXzd0LDUpLGcwKEM3dCw1KSxnMChrN3QsNSkpLDImaCl7bGV0IHk7emkoeT1BaSgpKSYmKHYuaHQ9eS5maXJzdCksemkoeT1BaSgpKSYmKHYudXBsb2FkU3RhdGVyQ29tcExpc3Q9eSksemkoeT1BaSgpKSYmKHYucXVlcnlG''@;'; put 'put ''aWx0ZXJDb21wTGlzdD15KSx6aSh5PUFpKCkpJiYodi5ob3RJbnN0YW5jZUNvbXBMaXN0PXkpLHppKHk9QWkoKSkmJih2LmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0PXkpfX0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjE2NCx2YXJzOjY5LGNvbnN0czpbWzEsImNv''@;'; put 'put ''bnRlbnQtYXJlYSIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsibmcyRmlsZURyb3AiLCIiLDEsInJlbGF0aXZlIiwzLCJ1cGxvYWRlciIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxPcGVuIiwiZmlsZU92''@;'; put 'put ''ZXIiLCJvbkZpbGVEcm9wIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiZHJvcC1hcmVhIl0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwiY2xyLXJvdyIsImNhcmQtYmxvY2siLCJtdC0xNSIsImQtZmxleCIsImp1c3RpZnktY29u''@;'; put 'put ''dGVudC1iZXR3ZWVuIl0sWzEsImNsci1jb2wtbWQtYXV0byJdLFsxLCJlbmNvZGluZy1ibG9jayJdLFsiY2xySW5saW5lIiwiIiwxLCJtdC0wLWkiXSxbInR5cGUiLCJyYWRpbyIsImNsclJhZGlvIiwiIiwidmFsdWUiLCJVVEYtOCIsIm5hbWUiLCJlbmNvZGluZyIsMywibmdNb2RlbCIsImRp''@;'; put 'put ''c2FibGVkIiwibmdNb2RlbENoYW5nZSJdLFsidHlwZSIsInJhZGlvIiwiY2xyUmFkaW8iLCIiLCJ2YWx1ZSIsIldMQVRJTjEiLCJuYW1lIiwiZW5jb2RpbmciLDMsIm5nTW9kZWwiLCJkaXNhYmxlZCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0zIGZpbHRlckJ0biIs''@;'; put 'put ''NCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTMgZWRpdEJ0biIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1wcmltYXJ5IG1yLTAiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4t''@;'; put 'put ''cHJpbWFyeSBtci0wIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJleGNlbC1wYXJzaW5nIGNsci1jb2wtbWQtMTIiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1ZXJ5RmlsdGVyIiwiZmlsdGVy''@;'; put 'put ''Iiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLCJvblJlY29yZENoYW5nZSIsIm9uUmVjb3Jk''@;'; put 'put ''SW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIiw0LCJuZ0lmIl0sWzEsImNsci1mbGV4LTEiXSxbImh0IiwiIl0sWyJjbGFzcyIsInByb2dyZXNTdGF0aWMgcHJvZ3Jlc3MgbG9vcCIsNCwibmdJZiJdLFsiYXBwRHJhZ05k''@;'; put 'put ''cm9wIiwiIiwxLCJjYXJkIiwiYm9yZGVyLTAiLCJib3gtc2hhZG93LW5vbmUtaSIsInBvc2l0aW9uLXJlbGF0aXZlIiwiaC0xMDAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJiYWNrZ3JvdW5kLXRyYW5zcGFyZW50IiwzLCJmaWxlRHJhZ2dlZE92ZXIiXSxbMSwiY2FyZC1oZWFkZXIi''@;'; put 'put ''LCJjbHItcm93IiwiYnV0dG9uQmFyIiwiaGVhZGVyQmFyIiwiY2xyLWZsZXgtbWQtcm93IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWxnLWVuZCJdLFsiY2xhc3MiLCJjbHItY29sLTEyIGNsci1jb2wtbGctNCBiYWNrQnRuIiw0LCJuZ0lmIl0s''@;'; put 'put ''WzEsImNsci1jb2wtMTIiLCJjbHItY29sLWxnLTQiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xhc3MiLCJlZGl0b3ItdGl0bGUgdGV4dC1jZW50ZXIgbXQtMC1pIiw0LCJuZ1ZhciJdLFsiY2xhc3MiLCJjbHItY29sLTEyIGNsci1jb2wtbGctNCBi''@;'; put 'put ''dG5DdHJsIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1jb2wtbWQtMTIgaW5mb0JhciIsNCwibmdJZiJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIiwiY2xyLWZsZXgtMSIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2FyZC10ZXh0Iiw0LCJuZ0lmIl0s''@;'; put 'put ''WzEsImNhcmQtdGV4dCIsImhvdEVkaXRvciIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwiYmFja2dyb3VuZC10cmFuc3BhcmVudCJdLFsxLCJob3Qtd3JhcHBlciIsImNsci1mbGV4LTEiXSxbImhvdElkIiwiaG90SW5zdGFuY2UiLCJpZCIsImhvdFRhYmxlIiwxLCJlZGl0''@;'; put 'put ''LWhvdCIsMywibGljZW5zZUtleSJdLFsiaG90SW5zdGFuY2UiLCIiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXQtNS1pIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJtb2RhbCIsNCwibmdJZiJdLFszLCJjbHJNb2RhbE9wZW4iLCJj''@;'; put 'put ''bHJNb2RhbE9wZW5DaGFuZ2UiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbGFzcyIsImQtYmxvY2siLDQsIm5nRm9yIiwibmdGb3JP''@;'; put 'put ''ZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwibW9kYWwgei1pbmRleC1oaWdoZXN0Iiw0LCJuZ0lmIl0sWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50''@;'; put 'put ''ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0s''@;'; put 'put ''WyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwi''@;'; put 'put ''YnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siXSxbMSwibW9kYWwtYm9keSIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsIm0tMCJdLFsiZGF0YS1scGlnbm9yZSIsInRydWUiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJpZCIsImZpbGVQYXNzd29yZElucHV0''@;'; put 'put ''IiwidHlwZSIsInRleHQiLDEsImNsci1pbnB1dCIsImRpc2FibGUtcGFzc3dvcmQtbWFuYWdlciJdLFsiZmlsZVBhc3N3b3JkSW5wdXQiLCIiXSxbImNsYXNzIiwibS0wIGNvbG9yLXJlZCIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mt''@;'; put 'put ''b3V0bGluZSIsMywiZGlzYWJsZWQiLCJjbGljayJdLFszLCJvcGVuIiwiZHNtZXRhIiwib3BlbkNoYW5nZSJdLFsxLCJjbHItY29sLW1kLTMiLCJmaWx0ZXJCdG4iXSxbMSwiZmlsdGVyQnRuIiwidy0xMDAiXSxbImZvciIsImZpbGUtdXBsb2FkIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0''@;'; put 'put ''bGluZSIsInByb2ZpbGUtYnV0dG9ucyIsInctMTAwIl0sWyJoaWRkZW4iLCIiLCJpZCIsImZpbGUtdXBsb2FkIiwidHlwZSIsImZpbGUiLCJuZzJGaWxlU2VsZWN0IiwiIiwzLCJ1cGxvYWRlciIsImNoYW5nZSJdLFsiZmlsZVVwbG9hZElucHV0IiwiIl0sWzEsImNsci1jb2wtbWQtMyIsImVk''@;'; put 'put ''aXRCdG4iXSxbMSwiYnRuVmlldyIsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwicHJvZmlsZS1idXR0b25zIiwidy0xMDAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCIsMywiZGlzYWJsZWQiLCJjbGljayJd''@;'; put 'put ''LFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtci0wIiwzLCJjbGljayJdLFsxLCJleGNlbC1wYXJzaW5nIiwiY2xyLWNvbC1tZC0xMiJdLFsidXBsb2FkU3RhdGVyIiwiIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1ZXJ5Rmls''@;'; put 'put ''dGVyIiwiZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLCJvblJlY29yZENoYW5n''@;'; put 'put ''ZSIsIm9uUmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIl0sWzEsInByb2dyZXNTdGF0aWMiLCJwcm9ncmVzcyIsImxvb3AiXSxbMSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbGctNCIsImJhY2tCdG4iXSxbMSwi''@;'; put 'put ''YnRuIiwiYnRuLXNtIiwzLCJyb3V0ZXJMaW5rIl0sWyJzaGFwZSIsImNhcmV0IiwiZGlyIiwibGVmdCIsInNpemUiLCIyMCJdLFsxLCJidG4iLCJidG4tc20iXSxbInNoYXBlIiwidmlldy1jYXJkcyIsInNpemUiLCIyMCJdLFsxLCJlZGl0b3ItdGl0bGUiLCJ0ZXh0LWNlbnRlciIsIm10LTAt''@;'; put 'put ''aSJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSIsInNpemUiLCIyNCIsMSwiaXMtaGlnaGxpZ2h0IiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJvbHQiLCJjbGFzcyIsImNvbG9yLXllbGxvdyIsNCwibmdJZiJdLFsxLCJtci0xMCIsMywicm91dGVyTGluayJdLFsic2hh''@;'; put 'put ''cGUiLCJib2x0IiwxLCJjb2xvci15ZWxsb3ciXSxbMSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbGctNCIsImJ0bkN0cmwiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0blZpZXciLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1ibG9jayIsMywiY2xpY2siXSxbInNoYXBlIiwiZmlsdGVy''@;'; put 'put ''Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsImJ0bi1ibG9jayIsMywiY2xpY2siXSxbInNoYXBlIiwibm90ZSJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBidG4tYmxvY2sgbXItMCIsMywiY2xpY2si''@;'; put 'put ''LDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwiYnRuLWJsb2NrIiwibXItMCIsMywiY2xpY2siXSxbInNoYXBlIiwidXBsb2FkIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5l''@;'; put 'put ''LWRhbmdlciIsMywiY2xpY2siXSxbInNoYXBlIiwidGltZXMiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MiLDMsImNsckxvYWRpbmciLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJjaGVjayIsInNpemUiLCIyMCJdLFsidHlwZSIsImJ1dHRv''@;'; put 'put ''biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFsic2hhcGUiLCJwbHVzIiwic2l6ZSIsIjE2Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5lLWRhbmdlciIsImJ0bi11cGxvYWQt''@;'; put 'put ''cHJldmlldyIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXByaW1hcnkgYnRuLXVwbG9hZC1wcmV2aWV3IiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJwcmV2aWV3''@;'; put 'put ''LXN1Ym1pdCIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsImJ0bi11cGxvYWQtcHJldmlldyIsMywiY2xpY2siXSxbMSwiY2xyLWNvbC1tZC0xMiIsImluZm9CYXIiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImgt''@;'; put 'put ''NzB2aCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0sWyJzaGFwZSIsImVycm9yLXN0YW5kYXJkIiwxLCJlcnJvci1pY29uIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20i''@;'; put 'put ''LCJidG4tc3VjY2VzcyIsIm10LTUtaSIsMywiY2xpY2siXSxbMSwibW9kYWwiXSxbInJvbGUiLCJkaWFsb2ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWRpYWxvZyIsIm1vZGFsLWxnIl0sWzEsIm1vZGFsLWNvbnRlbnQiXSxbMSwibW9kYWwtaGVhZGVyIl0sWyJhcmlhLWxhYmVs''@;'; put 'put ''IiwiQ2xvc2UiLCJ0eXBlIiwiYnV0dG9uIiwxLCJjbG9zZSJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjbG9zZSJdLFsiY2xhc3MiLCJjbHItb2Zmc2V0LW1kLTIgY2xyLWNvbC1tZC04Iiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciIsImp1c3RpZnktY29udGVudC1jZW50''@;'; put 'put ''ZXItaSJdLFsiaWQiLCJzdWJtaXRCdG4iLCJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwibS0wIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJpZCIsImNhbmNlbFN1Ym1pdEJ0biIsInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIs''@;'; put 'put ''ImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJjbHItb2Zmc2V0LW1kLTIiLCJjbHItY29sLW1kLTgiXSxbMSwiZm9ybS1ncm91cCJdLFsiZm9yIiwiZm9ybUZpZWxkc184Il0sWyJ0eXBlIiwidGV4dCIsImlkIiwiZm9ybUZpZWxkc184Iiwicm93cyIsIjUiLDEsInctMTAwIiwzLCJuZ01v''@;'; put 'put ''ZGVsIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwiZC1ibG9jayJdLFsxLCJtb2RhbCIsInotaW5kZXgtaGlnaGVzdCJdLFsicm9sZSIsImRpYWxvZyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtZGlhbG9nIl0sWyJxdWVyeUZpbHRlciIsIiJdLFsxLCJt''@;'; put 'put ''LTAiLCJjb2xvci1yZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXtpZigxJmgpe2NvbnN0IHk9eWkoKTt0dCgwLCJkaXYiLDApKDEsImNsci1tb2RhbCIsMSksWm4oImZpbGVPdmVyIixmdW5jdGlvbihJKXtyZXR1cm4gdi5maWxlT3ZlckJhc2UoSSl9KSgib25GaWxlRHJvcCIsZnVuY3Rp''@;'; put 'put ''b24oSSl7cmV0dXJuIHYuZ2V0RmlsZURlc2MoSSwhMCl9KSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5zaG93VXBsb2FkTW9kYWw9SX0pLHR0KDIsImgzIiwyKSxXdCgzLCJVcGxvYWQgRmlsZSIpLGl0KCksdHQoNCwiZGl2IiwzKSg1LCJkaXYiLDQpKDYsInNw''@;'; put 'put ''YW4iKSxXdCg3LCJEcm9wIGZpbGUgYW55d2hlcmUgdG8gdXBsb2FkISIpLGl0KCkoKSx0dCg4LCJkaXYiLDUpKDksImRpdiIsNikoMTAsImRpdiIsNykoMTEsImRpdiIsOCkoMTIsImNsci1yYWRpby1jb250YWluZXIiLDkpKDEzLCJjbHItcmFkaW8td3JhcHBlciIpKDE0LCJpbnB1dCIsMTAp''@;'; put 'put ''LFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5lbmNvZGluZz1JfSksaXQoKSx0dCgxNSwibGFiZWwiKSxXdCgxNiwiVVRGLTgiKSxpdCgpKCksdHQoMTcsImNsci1yYWRpby13cmFwcGVyIikoMTgsImlucHV0IiwxMSksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9u''@;'; put 'put ''KEkpe3JldHVybiB2LmVuY29kaW5nPUl9KSxpdCgpLHR0KDE5LCJsYWJlbCIpLFd0KDIwLCJXTEFUSU4xIiksaXQoKSgpKCkoKSgpLG5uKDIxLFM3dCw2LDEsImRpdiIsMTIpLG5uKDIyLE03dCwzLDEsImRpdiIsMTMpLHR0KDIzLCJkaXYiLDcpLG5uKDI0LEU3dCwyLDEsImJ1dHRvbiIsMTQp''@;'; put 'put ''LG5uKDI1LHg3dCwyLDAsImJ1dHRvbiIsMTUpLGl0KCksbm4oMjYsVDd0LDMsMCwiZGl2IiwxNiksaXQoKSgpKCksYnIoMjcsImRpdiIsMTcpLGl0KCksbm4oMjgsSTd0LDEsMTIsImFwcC1lZGl0LXJlY29yZCIsMTgpLHR0KDI5LCJkaXYiLDE5LDIwKSxubigzMSxEN3QsMiwwLCJkaXYiLDIx''@;'; put 'put ''KSx0dCgzMiwiZGl2IiwyMiksWm4oImZpbGVEcmFnZ2VkT3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vblNob3dVcGxvYWRNb2RhbCgpfSksdHQoMzMsImRpdiIsMjMpLG5uKDM0LE83dCw3LDIsImRpdiIsMjQpLHR0KDM1LCJkaXYiLDI1KSxubigzNixIN3QsNyw1LCJoNCIsMjYpLGl0KCks''@;'; put 'put ''bm4oMzcsVzd0LDQsMywiZGl2IiwyNyksbm4oMzgsWTd0LDUsMSwiZGl2IiwyOCksaXQoKSx0dCgzOSwiZGl2IiwyOSksbm4oNDAsSjd0LDQsMiwiZGl2IiwzMCksdHQoNDEsImRpdiIsMzEpKDQyLCJkaXYiLDMyKSxicig0MywiaG90LXRhYmxlIiwzMywzNCksaXQoKSxubig0NSxYN3QsMyww''@;'; put 'put ''LCJidXR0b24iLDM1KSxubig0NiwkN3QsMTUsNSwiZGl2IiwzNiksdHQoNDcsImNsci1tb2RhbCIsMzcpLFpuKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2LmJhZEVkaXQ9SX0pLHR0KDQ4LCJoMyIsMiksV3QoNDkpLGl0KCksdHQoNTAsImRpdiIsMykoNTEsInAi''@;'; put 'put ''KSxXdCg1MiksaXQoKSgpLHR0KDUzLCJkaXYiLDE3KSg1NCwiYnV0dG9uIiwzOCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmJhZEVkaXQ9ITF9KSxXdCg1NSwiIE9rICIpLGl0KCkoKSgpLHR0KDU2LCJjbHItbW9kYWwiLDM3KSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5j''@;'; put 'put ''dGlvbihJKXtyZXR1cm4gdi5wa051bGw9SX0pLHR0KDU3LCJoMyIsMiksV3QoNTgsIkVycm9yIiksaXQoKSx0dCg1OSwiZGl2IiwzKSg2MCwicCIpLFd0KDYxLCIgTnVsbCB2YWx1ZXMgb3IgaW5jb3JyZWN0IGRhdGEgdHlwZXMgY2Fubm90IGJlIHN1Ym1pdHRlZCBmb3IgUHJpbWFyeSBLZXkg''@;'; put 'put ''Y29sdW1ucyAiKSxpdCgpKCksdHQoNjIsImRpdiIsMTcpKDYzLCJidXR0b24iLDM5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucGtOdWxsPSExLHYuYmFkRWRpdD0hMX0pLFd0KDY0LCIgT2sgIiksaXQoKSgpKCksdHQoNjUsImNsci1tb2RhbCIsMzcpLFpuKCJjbHJNb2RhbE9w''@;'; put 'put ''ZW5DaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2Lm5vUGtOdWxsPUl9KSx0dCg2NiwiaDMiLDIpLFd0KDY3LCJFcnJvciIpLGl0KCksdHQoNjgsImRpdiIsMykoNjksInAiKSxXdCg3MCwiSW5jb3JyZWN0IGRhdGEgdHlwZXMgaW4gbm9uLVByaW1hcnkgS2V5IGNvbHVtbnMiKSxpdCgpKCks''@;'; put 'put ''dHQoNzEsImRpdiIsMTcpKDcyLCJidXR0b24iLDM5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYubm9Qa051bGw9ITEsdi5iYWRFZGl0PSExfSksV3QoNzMsIiBPayAiKSxpdCgpKCkoKSx0dCg3NCwiY2xyLW1vZGFsIiwzNyksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rp''@;'; put 'put ''b24oSSl7cmV0dXJuIHYucGtEdXBzPUl9KSx0dCg3NSwiaDMiLDIpLFd0KDc2LCJFcnJvciIpLGl0KCksdHQoNzcsImRpdiIsMykoNzgsInAiKSxXdCg3OSwiIER1cGxpY2F0ZSB2YWx1ZXMgY2Fubm90IGJlIHN1Ym1pdHRlZCBmb3IgUHJpbWFyeSBLZXkgY29sdW1ucyAiKSxpdCgpLHR0KDgw''@;'; put 'put ''LCJwIiksV3QoODEsIkR1cGxpY2F0ZXMgZm91bmQ6IiksaXQoKSxubig4MixxN3QsMyw0LCJzcGFuIiw0MCksaXQoKSx0dCg4MywiZGl2IiwxNykoODQsImJ1dHRvbiIsMzkpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5wa0R1cHM9ITF9KSxXdCg4NSwiIE9rICIpLGl0KCkoKSgp''@;'; put 'put ''LHR0KDg2LCJjbHItbW9kYWwiLDM3KSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi50b29Mb25nPUl9KSx0dCg4NywiaDMiLDIpLFd0KDg4LCJFcnJvciIpLGl0KCksdHQoODksImRpdiIsMykoOTAsInAiKSxXdCg5MSwiIFRoZSBmb2xsb3dpbmcgY29sdW1u''@;'; put 'put ''cyBoYXZlIHZhbHVlcyB0aGF0IGV4Y2VlZCBsZW5ndGggbGltaXRzOiAiKSxpdCgpLG5uKDkyLGV2dCwyLDMsInAiLDQxKSxpdCgpLHR0KDkzLCJkaXYiLDE3KSg5NCwiYnV0dG9uIiwzOSksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnRvb0xvbmc9ITEsdi5jbGVhbkV4Y2VlZCgp''@;'; put 'put ''fSksV3QoOTUsIiBPayAiKSxpdCgpKCkoKSgpKCkoKSgpKCksbm4oOTYsdHZ0LDE0LDAsImRpdiIsNDIpLHR0KDk3LCJjbHItbW9kYWwiLDQzKSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5maWx0ZXI9SX0pLHR0KDk4LCJoMyIsNDQpLFd0KDk5LCIgRmls''@;'; put 'put ''dGVyIGZvciB0YWJsZTogIiksdHQoMTAwLCJzcGFuIiksV3QoMTAxKSxpdCgpKCksdHQoMTAyLCJkaXYiLDMpLG5uKDEwMyxudnQsMiwwLCJhcHAtcXVlcnkiLDQ1KSxpdCgpLHR0KDEwNCwiZGl2IiwxNykoMTA1LCJidXR0b24iLDQ2KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYu''@;'; put 'put ''cmVzZXRGaWx0ZXIoKX0pLFd0KDEwNiwiIHJlc2V0IGZpbHRlciAiKSxpdCgpLHR0KDEwNywiYnV0dG9uIiw0NyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmZpbHRlcj0hMX0pLFd0KDEwOCwiIENhbmNlbCAiKSxpdCgpLHR0KDEwOSwiYnV0dG9uIiw0OCksWm4oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB2LnNlbmRDbGF1c2UoKX0pLFd0KDExMCwiIE9rICIpLGl0KCkoKSgpLHR0KDExMSwiY2xyLW1vZGFsIiwzNyksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYucXVlcnlFcnI9SX0pLHR0KDExMiwiaDMiLDIpLFd0KDExMywiRXJy''@;'; put 'put ''b3IiKSxpdCgpLHR0KDExNCwiZGl2IiwzKSgxMTUsInAiKSxXdCgxMTYpLGl0KCkoKSx0dCgxMTcsImRpdiIsMTcpKDExOCwiYnV0dG9uIiw0OSksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnF1ZXJ5RXJyPSExfSksV3QoMTE5LCIgQ2FuY2VsICIpLGl0KCksdHQoMTIwLCJidXR0''@;'; put 'put ''b24iLDM5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucXVlcnlFcnI9ITF9KSxXdCgxMjEsIiBPayAiKSxpdCgpKCkoKSx0dCgxMjIsImNsci1tb2RhbCIsNDMpLFpuKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2LmRpc2NhcmRTb3VyY2VGaWxlPUl9''@;'; put 'put ''KSx0dCgxMjMsImgzIiw0NCksV3QoMTI0LCJXYXJuaW5nIiksaXQoKSx0dCgxMjUsImRpdiIsMyksV3QoMTI2LCIgVGhpcyBhY3Rpb24gd2lsbCBkaXNjYXJkIHRoZSBzb3VyY2UgZmlsZSBhbmQgaXQncyBsb2FkZWQgZGF0YSAiKSx0dCgxMjcsImIiKSxXdCgxMjgpLGl0KCksV3QoMTI5LCIg''@;'; put 'put ''RG8geW91IHdpc2ggdG8gcHJvY2VlZD8gIiksaXQoKSx0dCgxMzAsImRpdiIsMTcpKDEzMSwiYnV0dG9uIiw0NyksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmRpc2NhcmRTb3VyY2VGaWxlPSExfSksV3QoMTMyLCIgQ2FuY2VsICIpLGl0KCksdHQoMTMzLCJidXR0b24iLDUwKSxa''@;'; put 'put ''bigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZGlzY2FyZFNvdXJjZUZpbGU9ITEsdi5kaXNjYXJkUGVuZGluZ0V4Y2VsKCEwKX0pLFd0KDEzNCwiIE9rICIpLGl0KCkoKSgpLHR0KDEzNSwiY2xyLW1vZGFsIiw0MyksWm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0''@;'; put 'put ''dXJuIHYuZmlsZVBhc3N3b3JkTW9kYWw9SX0pLHR0KDEzNiwiaDMiLDQ0KSxXdCgxMzcsIiBQYXNzd29yZCBQcm90ZWN0ZWQgRmlsZSAiKSxpdCgpLHR0KDEzOCwiZGl2Iiw1MSkoMTM5LCJwIiw1MiksV3QoMTQwLCJQbGVhc2UgZW50ZXIgcGFzc3dvcmQ6IiksaXQoKSxicigxNDEsImlucHV0''@;'; put 'put ''Iiw1Myw1NCksaXQoKSx0dCgxNDMsImRpdiIsMTcpLG5uKDE0NCxydnQsMiwwLCJwIiw1NSksdHQoMTQ1LCJidXR0b24iLDQ3KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZmlsZVBhc3N3b3JkTW9kYWw9ITEsdi5maWxlUGFzc3dvcmRTdWJqZWN0Lm5leHQodm9pZCAwKX0pLFd0''@;'; put 'put ''KDE0NiwiIENhbmNlbCB1cGxvYWQgIiksaXQoKSx0dCgxNDcsImJ1dHRvbiIsNTYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKHkpO2NvbnN0IEk9dWEoMTQyKTtyZXR1cm4gdi5maWxlUGFzc3dvcmRNb2RhbD0hMSxidCh2LmZpbGVQYXNzd29yZFN1YmplY3QubmV4dChJLnZhbHVlKSl9KSxX''@;'; put 'put ''dCgxNDgsIiBVbmxvY2sgIiksaXQoKSgpKCksdHQoMTQ5LCJjbHItbW9kYWwiLDQzKSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5tYW51YWxGaWxlRWRpdE1vZGFsPUl9KSx0dCgxNTAsImgzIiw0NCksV3QoMTUxLCJXYXJuaW5nIiksaXQoKSx0dCgxNTIs''@;'; put 'put ''ImRpdiIsMyksV3QoMTUzLCIgTWFudWFsbHkgZWRpdGluZyB0aGlzIGRhdGEgd2lsbCBtZWFuIHRoZSBzb3VyY2UgZmlsZSAiKSx0dCgxNTQsImIiKSxXdCgxNTUpLGl0KCksV3QoMTU2LCIgd2lsbCBiZSBkaXNjYXJkZWQuIERvIHlvdSB3aXNoIHRvIHByb2NlZWQ/ICIpLGl0KCksdHQoMTU3''@;'; put 'put ''LCJkaXYiLDE3KSgxNTgsImJ1dHRvbiIsNDcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5tYW51YWxGaWxlRWRpdE1vZGFsPSExfSksV3QoMTU5LCIgQ2FuY2VsICIpLGl0KCksdHQoMTYwLCJidXR0b24iLDUwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYubWFudWFs''@;'; put 'put ''RmlsZUVkaXRNb2RhbD0hMSx2LnByZXZpZXdUYWJsZUVkaXRDb25maXJtKCl9KSxXdCgxNjEsIiBPayAiKSxpdCgpKCkoKSx0dCgxNjIsImFwcC1kYXRhc2V0LWluZm8iLDU3KSxabigib3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYuZGF0YXNldEluZm89SX0pLGl0KCksYnIoMTYz''@;'; put 'put ''LCJhcHAtdmlld2JveGVzIil9aWYoMiZoKXtjb25zdCB5PXVhKDE0Mik7c3QoMSkseHQoInVwbG9hZGVyIix2LnVwbG9hZGVyKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxTdGF0aWNCYWNrZHJvcCIsITEpKCJjbHJNb2RhbENsb3NhYmxlIiwiVmFsaWRhdGluZy1EUSI9PT12LmV4''@;'; put 'put ''Y2VsVXBsb2FkU3RhdGUpKCJjbHJNb2RhbE9wZW4iLHYuc2hvd1VwbG9hZE1vZGFsKSxzdCgxMykseHQoIm5nTW9kZWwiLHYuZW5jb2RpbmcpKCJkaXNhYmxlZCIsIiIhPXYuZmlsZW5hbWUpLHN0KDQpLHh0KCJuZ01vZGVsIix2LmVuY29kaW5nKSgiZGlzYWJsZWQiLCIiIT12LmZpbGVuYW1l''@;'; put 'put ''KSxzdCgzKSx4dCgibmdJZiIsIXYuZXhjZWxGaWxlUGFyc2luZyYmIXYudXBsb2FkTG9hZGluZyksc3QoMSkseHQoIm5nSWYiLCF2LmV4Y2VsRmlsZVBhcnNpbmcmJiF2LnVwbG9hZExvYWRpbmcpLHN0KDIpLHh0KCJuZ0lmIiwiVmFsaWRhdGluZyIhPT12LmV4Y2VsVXBsb2FkU3RhdGUpLHN0''@;'; put 'put ''KDEpLHh0KCJuZ0lmIiwiVmFsaWRhdGluZy1EUSI9PT12LmV4Y2VsVXBsb2FkU3RhdGUpLHN0KDEpLHh0KCJuZ0lmIix2LmV4Y2VsRmlsZVBhcnNpbmcpLHN0KDIpLHh0KCJuZ0lmIix2LmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg+LTEpLHN0KDMpLHh0KCJuZ0lmIiwhdi52YWxpZGF0aW9uRG9u''@;'; put 'put ''ZSYmdi5zdWJtaXQpLHN0KDMpLHh0KCJuZ0lmIix2LnRhYmxlVHJ1ZSksc3QoMSksSGkoImNsci1jb2wtbGctMTIiLCF2LnRhYmxlVHJ1ZSksc3QoMSkseHQoIm5nVmFyIixCZCg2MixpdnQsKG51bGw9PXYubGliZHM/bnVsbDp2LmxpYmRzLnNwbGl0KCIuIikpWzBdLChudWxsPT12LmxpYmRz''@;'; put 'put ''P251bGw6di5saWJkcy5zcGxpdCgiLiIpKVsxXSkpLHN0KDEpLHh0KCJuZ0lmIix2LnRhYmxlVHJ1ZSksc3QoMSkseHQoIm5nSWYiLCFscyg2NSxsT2UpLmluY2x1ZGVzKHYucXVlcnlUZXh0KSksc3QoMSkseHQoIm5nQ2xhc3MiLGpoKDY3LG92dCwhbHMoNjYsbE9lKS5pbmNsdWRlcyh2LnF1''@;'; put 'put ''ZXJ5VGV4dCkpKSxzdCgxKSx4dCgibmdJZiIsIXYudGFibGVUcnVlKSxzdCgzKSxIaSgiaGlkZGVuIix2LmhvdFRhYmxlLmhpZGRlbikseHQoImxpY2Vuc2VLZXkiLHYuaG90VGFibGUubGljZW5zZUtleSksc3QoMikseHQoIm5nSWYiLHYudGFibGVUcnVlJiYhdi5yZXN0cmljdGlvbnMucmVt''@;'; put 'put ''b3ZlQWRkUmVjb3JkQnV0dG9uKSxzdCgxKSx4dCgibmdJZiIsdi5zdWJtaXQpLHN0KDEpLHh0KCJjbHJNb2RhbE9wZW4iLHYuYmFkRWRpdCksc3QoMiksamkodi5iYWRFZGl0VGl0bGV8fCJFcnJvciIpLHN0KDMpLGppKHYuYmFkRWRpdENhdXNlKSxzdCg0KSx4dCgiY2xyTW9kYWxPcGVuIix2''@;'; put 'put ''LnBrTnVsbCksc3QoOSkseHQoImNsck1vZGFsT3BlbiIsdi5ub1BrTnVsbCksc3QoOSkseHQoImNsck1vZGFsT3BlbiIsdi5wa0R1cHMpLHN0KDgpLHh0KCJuZ0Zvck9mIix2LmR1cGxpY2F0ZVBrSW5kZXhlcyksc3QoNCkseHQoImNsck1vZGFsT3BlbiIsdi50b29Mb25nKSxzdCg2KSx4dCgi''@;'; put 'put ''bmdGb3JPZiIsdi5leGNlZWRDZWxscyksc3QoNCkseHQoIm5nSWYiLHYubnVsbFZhcmlhYmxlcyksc3QoMSkseHQoImNsck1vZGFsT3BlbiIsdi5maWx0ZXIpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksc3QoNCksVWkoIiAiLHYubGliZHMsIiAiKSxzdCgy''@;'; put 'put ''KSx4dCgibmdJZiIsdi5maWx0ZXIpLHN0KDYpLHh0KCJjbHJMb2FkaW5nIix2LnN1Ym1pdExvYWRpbmcpLHN0KDIpLHh0KCJjbHJNb2RhbE9wZW4iLHYucXVlcnlFcnIpLHN0KDUpLGppKHYucXVlcnlFcnJNZXNzYWdlKSxzdCg2KSx4dCgiY2xyTW9kYWxPcGVuIix2LmRpc2NhcmRTb3VyY2VG''@;'; put 'put ''aWxlKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLHN0KDYpLGppKHYuZmlsZW5hbWUpLHN0KDcpLHh0KCJjbHJNb2RhbE9wZW4iLHYuZmlsZVBhc3N3b3JkTW9kYWwpKCJjbHJNb2RhbFNpemUiLCJtZCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksc3QoOSks''@;'; put 'put ''eHQoIm5nSWYiLHYuZmlsZVVubG9ja0Vycm9yKSxzdCgzKSx4dCgiZGlzYWJsZWQiLHkudmFsdWUubGVuZ3RoPDEpLHN0KDIpLHh0KCJjbHJNb2RhbE9wZW4iLHYubWFudWFsRmlsZUVkaXRNb2RhbCkoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSxzdCg2KSxq''@;'; put 'put ''aSh2LmZpbGVuYW1lKSxzdCg3KSx4dCgib3BlbiIsdi5kYXRhc2V0SW5mbykoImRzbWV0YSIsdi5kc21ldGEpfX0sZGVwZW5kZW5jaWVzOltFMSxxbCxCbyxwMSxKayxqcyxfcyxZNixPNyxHMixhMyxsMyxSaSxXMixhcyxaZmUsblJlLHd5ZSxiZ3Qsd2d0LHd0ZSxuT2UsZU9lLHJPZSxpT2Us''@;'; put 'put ''Zzd0LHY3dCxBN3QseTd0LGFPZV0sc3R5bGVzOlsiLmNhcmRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MDtib3JkZXI6MH0uYnV0dG9uQmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn0udGVzdFJlZFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnJnYmEoMjU1LDAsMCwuOCkhaW1wb3J0YW50fWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5maXJzdENvbHVtbkhlYWRlclN0eWxlIGJ1dHRvbi5jaGFuZ2VUeXBle2Rpc3BsYXk6bm9uZX1ob3QtdGFibGVbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgICAuaGFuZHNvbnRhYmxlIHRib2R5IHRoLmh0X19oaWdobGlnaHQucHJpbWFyeUtleUhlYWRlclN0eWxlLCBob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19oaWdobGlnaHQucHJpbWFyeUtleUhlYWRlclN0eWxle2Jh''@;'; put 'put ''Y2tncm91bmQ6cmdiYSg0OCwxMDcsMCwuNjkwMTk2MDc4NCl9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kOnJnYmEoNDgsMTA3LDAsLjQzMTM3MjU0OSl9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgdGgu''@;'; put 'put ''cmVhZG9ubHlDZWxsIGRpdntvcGFjaXR5Oi40fWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIHRkLnJlYWRvbmx5Q2VsbHtvcGFjaXR5Oi41fS5pbmZvQmFyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjE0cHg7YmFja2dyb3VuZDojNDk1OTY3O2NvbG9yOiNmZmY7dGV4''@;'; put 'put ''dC1hbGlnbjpjZW50ZXI7cGFkZGluZzozcHg7Zm9udC1zaXplOjE2cHg7aGVpZ2h0OjMwcHg7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwfS5pbmZvQmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e3dpZHRoOjgwJX0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7aGVpZ2h0OnVuc2V0O3doaXRlLXNwYWNlOm5vcm1hbH0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDp1bnNldH0ucGtIZWFkZXJbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzY4NzY4Mjtjb2xvcjojZmZmO21hcmdpbjotMXB4fS5oZWFkZXJCYXJbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmZmZmZmY7YmFja2dyb3VuZDojZjVmNmZlfS5lcnJvci1pY29uW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXt3aWR0aDozMHB4O2hlaWdodDozMHB4O2NvbG9yOnJlZH0uYnRuQ3RybFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRy''@;'; put 'put ''YW5zcGFyZW50fS5oaWRkZW5bX25nY29udGVudC0lQ09NUCVde3Zpc2liaWxpdHk6aGlkZGVufS5teS1kcm9wLXpvbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggbGlnaHRncmF5O2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOndoaXRlc21va2U7Ym94LXNoYWRv''@;'; put 'put ''dzppbnNldCAwIDAgNHB4IDJweCAjYTdhNWE1MmI7aGVpZ2h0OjUwdmh9Lm52LWZpbGUtb3Zlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDJweCBncmVlbn0uZmlsZS1kcm9wLXRleHRbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfUBtZWRpYSBzY3JlZW4g''@;'; put 'put ''YW5kIChtYXgtd2lkdGg6IDc2OHB4KXsucHJvZ3Jlc1N0YXRpY1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDo5cHghaW1wb3J0YW50fS5wcm9ncmVzc1tfbmdjb250ZW50LSVDT01QJV0sIC5wcm9ncmVzcy1zdGF0aWNbX25nY29udGVudC0lQ09NUCVde3dpZHRoOmNhbGMoMTAwJSAt''@;'; put 'put ''IDE0cHgpfX0uaG90RWRpdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZXhjZWwtcGFyc2luZ1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9LmV4''@;'; put 'put ''Y2VsLXBhcnNpbmdbX25nY29udGVudC0lQ09NUCVdICAgLmRldGFpbHNbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNDVweH0uZWRpdC1yZWNvcmQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNik7cG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDtib3R0b206MHB4O3dpZHRoOjEwMCU7ei1pbmRleDo1MDB9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpey5wcm9ncmVz''@;'; put 'put ''U3RhdGljW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjMycHghaW1wb3J0YW50fS5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNhcmQtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjEwcHggMCAwfX0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXtwYWRkaW5nOjAgLjhyZW0gLjhyZW0haW1wb3J0YW50O3BhZGRpbmctdG9wOjB9LmRyb3AtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2lu''@;'; put 'put ''OjFweDtib3JkZXI6MnB4IGRhc2hlZCAjZmZmO3otaW5kZXg6LTF9LmRyb3AtYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweDttYXJnaW4tdG9wOjIwcHg7Y29sb3I6I2ZmZn0jc3VibWl0QnRuW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSwgI2NhbmNlbFN1Ym1pdEJ0bltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTUwcHh9Il19KSxkfSkoKTtjb25zdCBhdnQ9W3twYXRoOiI6bGliTWVtIixjb21wb25lbnQ6R25lfSx7cGF0aDoiOmxpYk1lbS86ZmlsdGVySWQiLGNvbXBvbmVudDpHbmV9LHtwYXRoOiJlZGl0LXJlY29yZC86''@;'; put 'put ''bGliTWVtIixjb21wb25lbnQ6R25lfSx7cGF0aDoiZWRpdC1yZWNvcmQvOmxpYk1lbS86ZmlsdGVySWQiLGNvbXBvbmVudDpHbmV9XTtsZXQgbHZ0PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7''@;'; put 'put ''dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W2FhLEI1LmZvckNoaWxkKGF2dCksQjVdfSksZH0pKCksc3Z0PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAy''@;'; put 'put ''NzVpbmo9bTAoe2ltcG9ydHM6W2FhLE13LGFhLHhmXX0pLGR9KSgpLGNPZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9cm8oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPW0wKHtpbXBvcnRzOlt4ZixNdyxa''@;'; put 'put ''bmUsYWEsc3Z0XX0pLGR9KSgpO0pMZSgpO2xldCB1dnQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbYWEseGYsbHZ0LE13LF9ndCxr''@;'; put 'put ''NmUuZm9yUm9vdCgpLFpuZSxJbWUsVm5lLGNPZSxqbmVdfSksZH0pKCk7ZnVuY3Rpb24gY3Z0KGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsMTIpfWZ1bmN0aW9uIGZ2dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pY29uIiwxMyksWm4oImNsaWNrIixmdW5jdGlvbigp''@;'; put 'put ''e2EoaCk7Y29uc3QgeT1VdCgyKTtyZXR1cm4geS5ncm91cFNlYXJjaD0iIixidCh5Lmdyb3VwTGlzdE9uRmlsdGVyKCkpfSksaXQoKX19ZnVuY3Rpb24gaHZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRyZWUtbm9kZSIsNikoMSwiZGl2Iiw3KSgyLCJpbnB1dCIsOCw5''@;'; put 'put ''KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5ncm91cFNlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmdyb3VwTGlzdE9uRmlsdGVyKCkpfSksaXQoKSxubig0LGN2dCwxLDAsImNsci1pY29uIiwxMCks''@;'; put 'put ''bm4oNSxmdnQsMSwwLCJjbHItaWNvbiIsMTEpLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9dWEoMyksdj1VdCgpO3N0KDIpLHh0KCJuZ01vZGVsIix2Lmdyb3VwU2VhcmNoKSxzdCgyKSx4dCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksc3QoMSkseHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPjAp''@;'; put 'put ''fX1mdW5jdGlvbiBkdnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwxNSksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpLiRpbXBsaWNpdDtyZXR1cm4gYnQoVXQoKS5ncm91cE9uQ2xpY2soeSkpfSksdHQoMSwicCIsMTYpLGJy''@;'; put 'put ''KDIsImNsci1pY29uIiwxNyksV3QoMyksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdCx2PVV0KCk7SGkoInRhYmxlLWFjdGl2ZSIsaC5HUk9VUFVSST09PXYuZ3JvdXBVcmkpLHN0KDMpLFVpKCIgIixoLkdST1VQTkFNRSwiICIpfX1mdW5jdGlvbiBwdnQoZCxnKXtpZigx''@;'; put 'put ''JmQmJihMMCgwKSxubigxLGR2dCw0LDMsImNsci10cmVlLW5vZGUiLDE0KSxPMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7c3QoMSkseHQoIm5nSWYiLCFoLmhpZGRlbil9fWZ1bmN0aW9uIGd2dChkLGcpezEmZCYmKHR0KDAsImRpdiIsMTgpKDEsInNwYW4iLDE5KSxXdCgyLCIgTG9h''@;'; put 'put ''ZGluZy4uLiAiKSxpdCgpKCkpfWZ1bmN0aW9uIG12dChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMjEpKDEsImRpdiIsMjIpKDIsInRhYmxlIiwyNCkoMywidGJvZHkiKSg0LCJ0ciIpKDUsInRkIiwyNSkoNiwicCIsMjYpKDcsImIiKSxXdCg4KSxpdCgpKCkoKSgpLHR0KDksInRyIikoMTAs''@;'; put 'put ''InRkIiwyNSkoMTEsImkiKSxXdCgxMiksaXQoKSgpKCkoKSgpKCkoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDgpLGppKGguZ3JvdXBOYW1lKSxzdCg0KSxqaShoLmdyb3VwRGVzY3x8Im5vIGRlc2NyaXB0aW9uIil9fWZ1bmN0aW9uIHZ2dChkLGcpezEmZCYmKHR0KDAsImg1IiksV3QoMSwi''@;'; put 'put ''Tm8gTWVtYmVycyBQcmVzZW50IiksaXQoKSl9ZnVuY3Rpb24gQXZ0KGQsZyl7MSZkJiYoTDAoMCksdHQoMSwidGQiLDMxKSgyLCJiIiksV3QoMywiTkFNRSIpLGl0KCkoKSx0dCg0LCJ0ZCIsMzEpKDUsImIiKSxXdCg2LCJFTUFJTCIpLGl0KCkoKSx0dCg3LCJ0ZCIsMzEpKDgsImIiKSxXdCg5''@;'; put 'put ''LCJDUkVBVEVEIiksaXQoKSgpLHR0KDEwLCJ0ZCIsMzIpKDExLCJiIiksV3QoMTIsIlVQREFURUQiKSxpdCgpKCksTzAoKSl9ZnVuY3Rpb24geXZ0KGQsZyl7MSZkJiYoTDAoMCksdHQoMSwidGQiLDMxKSgyLCJiIiksV3QoMywiSUQiKSxpdCgpKCksdHQoNCwidGQiLDMxKSg1LCJiIiksV3Qo''@;'; put 'put ''NiwiRElTUExBWSBOQU1FIiksaXQoKSgpLHR0KDcsInRkIiwzMSkoOCwiYiIpLFd0KDksIlVTRVIgTkFNRSIpLGl0KCkoKSxPMCgpKX1mdW5jdGlvbiB3dnQoZCxnKXtpZigxJmQmJihMMCgwKSx0dCgxLCJ0ZCIsMzIpLFd0KDIpLGl0KCksdHQoMywidGQiLDMyKSxXdCg0KSxpdCgpLHR0KDUs''@;'; put 'put ''InRkIiwzMiksV3QoNiksaXQoKSx0dCg3LCJ0ZCIsMzIpLFd0KDgpLGl0KCksTzAoKSksMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0O3N0KDIpLGppKGguTUVNQkVSTkFNRSksc3QoMiksamkoaC5FTUFJTCksc3QoMiksamkoaC5NRU1CRVJDUkVBVEVEKSxzdCgyKSxqaShoLk1FTUJFUlVQ''@;'; put 'put ''REFURUQpfX1mdW5jdGlvbiBidnQoZCxnKXtpZigxJmQmJihMMCgwKSx0dCgxLCJ0ZCIsMzIpLFd0KDIpLGl0KCksdHQoMywidGQiLDMyKSxXdCg0KSxpdCgpLHR0KDUsInRkIiwzMiksV3QoNiksaXQoKSxPMCgpKSwyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQ7c3QoMiksamkoaC5JRCks''@;'; put 'put ''c3QoMiksamkoaC5ESVNQTEFZTkFNRSksc3QoMiksamkoaC5VU0VSTkFNRSl9fWZ1bmN0aW9uIF92dChkLGcpe2lmKDEmZCYmKHR0KDAsInRyIiwzMyksbm4oMSx3dnQsOSw0LCJuZy1jb250YWluZXIiLDUpLG5uKDIsYnZ0LDcsMywibmctY29udGFpbmVyIiw1KSxpdCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9Zy4kaW1wbGljaXQsdj1VdCg0KTt4dCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvdXNlcnMvIisoaC5VUklNRU18fGguSUQpKSxzdCgxKSx4dCgibmdJZiIsdi5zZXJ2ZXJUeXBlPT09di5TZXJ2ZXJUeXBlLlNhczkpLHN0KDEpLHh0KCJuZ0lmIix2LnNlcnZlclR5cGU9PT12LlNl''@;'; put 'put ''cnZlclR5cGUuU2FzanMpfX1mdW5jdGlvbiBDdnQoZCxnKXtpZigxJmQmJih0dCgwLCJ0YWJsZSIsMjkpKDEsInRoZWFkIikoMiwidHIiKSxubigzLEF2dCwxMywwLCJuZy1jb250YWluZXIiLDUpLG5uKDQseXZ0LDEwLDAsIm5nLWNvbnRhaW5lciIsNSksaXQoKSgpLHR0KDUsInRib2R5Iiks''@;'; put 'put ''bm4oNixfdnQsMywzLCJ0ciIsMzApLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDMpLHh0KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSksc3QoMSkseHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXNqcyksc3QoMikseHQoIm5nRm9y''@;'; put 'put ''T2YiLGguZ3JvdXBNZW1iZXJzKX19ZnVuY3Rpb24ga3Z0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IikoMSwiaDMiKSxXdCgyKSxpdCgpLG5uKDMsdnZ0LDIsMCwiaDUiLDUpLHR0KDQsImRpdiIsMjcpLG5uKDUsQ3Z0LDcsMywidGFibGUiLDI4KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgy''@;'; put 'put ''KTtzdCgyKSxVaSgiTUVNQkVSUyAoIixoLmdyb3VwTWVtYmVyQ291bnQsIikiKSxzdCgxKSx4dCgibmdJZiIsMD09aC5ncm91cE1lbWJlckNvdW50KSxzdCgyKSx4dCgibmdJZiIsMCE9aC5ncm91cE1lbWJlckNvdW50KX19ZnVuY3Rpb24gU3Z0KGQsZyl7MSZkJiYodHQoMCwiaDUiKSxXdCgx''@;'; put 'put ''LCJObyBNZW1iZXJzIFByZXNlbnQiKSxpdCgpKX1mdW5jdGlvbiBNdnQoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIsMzMpKDEsInRkIiwzMiksV3QoMiksaXQoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7eHQoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3VzZXJzLyIraC5NRU1C''@;'; put 'put ''RVJJRCksc3QoMiksamkoaC5NRU1CRVJOQU1FKX19ZnVuY3Rpb24gRXZ0KGQsZyl7aWYoMSZkJiYodHQoMCwidGFibGUiLDI5KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiKSg0LCJiIiksV3QoNSksaXQoKSgpKCkoKSx0dCg2LCJ0Ym9keSIpLG5uKDcsTXZ0LDMsMiwidHIiLDMwKSxpdCgp''@;'; put 'put ''KCkpLDImZCl7Y29uc3QgaD1VdCgzKTtzdCg1KSxVaSgiTUVNQkVSUyAoIixoLmdyb3VwTWVtYmVyQ291bnQsIikiKSxzdCgyKSx4dCgibmdGb3JPZiIsaC5ncm91cE1lbWJlcnMpfX1mdW5jdGlvbiB4dnQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIpLGl0KCksbm4o''@;'; put 'put ''MyxTdnQsMiwwLCJoNSIsNSksdHQoNCwiZGl2IiwyNyksbm4oNSxFdnQsOCwyLCJ0YWJsZSIsMjgpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KDIpO3N0KDIpLGppKGguZ3JvdXBOYW1lKSxzdCgxKSx4dCgibmdJZiIsMD09aC5ncm91cE1lbWJlckNvdW50KSxzdCgyKSx4dCgibmdJZiIsMCE9''@;'; put 'put ''aC5ncm91cE1lbWJlckNvdW50KX19ZnVuY3Rpb24gVHZ0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiksbm4oMSxtdnQsMTMsMiwiZGl2IiwyMCksdHQoMiwiZGl2IiwyMSkoMywiZGl2IiwyMikoNCwiZGl2IiwyMyksbm4oNSxrdnQsNiwzLCJkaXYiLDUpLG5uKDYseHZ0LDYsMywiZGl2Iiw1''@;'; put 'put ''KSxicig3LCJiciIpLGl0KCkoKSgpKCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lmIixoLnNlcnZlclR5cGUhPT1oLlNlcnZlclR5cGUuU2FzVml5YSksc3QoNCkseHQoIm5nSWYiLGguc2VydmVyVHlwZSE9PWguU2VydmVyVHlwZS5TYXNWaXlhKSxzdCgxKSx4dCgibmdJZiIs''@;'; put 'put ''aC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhc1ZpeWEpfX1sZXQgZk9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmhlbHBlclNlcnZpY2U9dix0aGlzLnJvdXRlcj15LHRoaXMubG9jYXRpb249Qyx0aGlzLnJvdXRlPUks''@;'; put 'put ''dGhpcy5ncm91cFNlYXJjaD0iIix0aGlzLnBhcmFtUHJlc2VudD0hMSx0aGlzLnBhcmFtVVJJPSIiLHRoaXMuZ3JvdXBVcmk9IiIsdGhpcy5ncm91cE5hbWU9IiIsdGhpcy5ncm91cERlc2M9IiIsdGhpcy5zYXNqc0NvbmZpZz1uZXcgUWQuU0FTanNDb25maWcsdGhpcy5pc1ZpeWE9ITEsdGhp''@;'; put 'put ''cy5sb2FkaW5nPSExLHRoaXMuU2VydmVyVHlwZT14MS5ELHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5zZXJ2ZXJUeXBlPXRoaXMuc2FzU2VydmljZS5nZXRTZXJ2ZXJUeXBlKCksIlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2''@;'; put 'put ''ZXJUeXBlJiYodGhpcy5pc1ZpeWE9ITApfW5nT25Jbml0KCl7cmkudmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvdXNlcm5hdi9ncm91cHMiLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSYmKHRoaXMucGFyYW1QcmVzZW50PSEwLHRoaXMucGFyYW1VUkk9dGhp''@;'; put 'put ''cy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpKSxyaS51c2VybmF2Lmdyb3VwTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50Pyh0aGlzLmdyb3Vwcz1yaS51c2VybmF2Lmdyb3VwTGlzdCx0aGlzLmdyb3VwU2VhcmNoPXJpLnVzZXJuYXYuZ3JvdXBTZWFyY2gpOih2b2lkIDA9PT1yaS51c2VybmF2''@;'; put 'put ''Lmdyb3VwTGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihoPT5oLnRleHQoKSkudGhl''@;'; put 'put ''bihoPT57bGV0IHk9SlNPTi5wYXJzZShoKS5pdGVtcy5tYXAoQz0+KHtHUk9VUFVSSTpDLmlkLEdST1VQTkFNRTpDLm5hbWUsR1JPVVBERVNDOkMuZGVzY3JpcHRpb259KSk7dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBzPXkscmkudXNlcm5hdi5ncm91cExpc3Q9eX0pOnRoaXMuc2FzU2Vy''@;'; put 'put ''dmljZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Z3JvdXBzIixudWxsKS50aGVuKGg9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cHM9aC5ncm91cHMscmkudXNlcm5hdi5ncm91cExpc3Q9aC5ncm91cHN9KSk6KHRoaXMuZ3JvdXBzPXJpLnVzZXJuYXYuZ3JvdXBMaXN0LHRoaXMuZ3JvdXBTZWFy''@;'; put 'put ''Y2g9cmkudXNlcm5hdi5ncm91cFNlYXJjaCksdGhpcy5wYXJhbVByZXNlbnQmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcy8iK3RoaXMucGFyYW1VUkkrIi9tZW1iZXJzP2xpbWl0PTIwMDAi''@;'; put 'put ''LHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4oaD0+aC50ZXh0KCkpLnRoZW4oaD0+e2xldCB2PUpTT04ucGFyc2UoaCk7dGhpcy5sb2FkaW5nPSExO2xldCB5PXYuaXRlbXMubWFwKEM9Pih7TUVNQkVSTkFNRTpDLm5hbWUsTUVNQkVSSUQ6Qy5pZH0pKTt0aGlz''@;'; put 'put ''Lmdyb3VwTWVtYmVycz15LHRoaXMuZ3JvdXBNZW1iZXJDb3VudD15Lmxlbmd0aCx0aGlzLmdyb3VwVXJpPXRoaXMucGFyYW1VUkksdGhpcy5ncm91cE5hbWU9dGhpcy5wYXJhbVVSSX0pOnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJtZW1iZXJzYnlncm91cCIse2l3YW50''@;'; put 'put ''Olt7Z3JvdXBpZDp0aGlzLnBhcmFtVVJJfV19KS50aGVuKHY9Pnt0aGlzLmdyb3VwTWVtYmVycz12LnNhc21lbWJlcnMsdGhpcy5ncm91cE1lbWJlckNvdW50PXYuc2FzbWVtYmVycy5sZW5ndGgsdm9pZCAwIT09di5zYXNtZW1iZXJzWzBdJiYodGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBV''@;'; put 'put ''cmk9di5zYXNtZW1iZXJzWzBdLlVSSU1FTXx8dGhpcy5wYXJhbVVSSSx0aGlzLmdyb3VwTmFtZT12LnNhc21lbWJlcnNbMF0uR1JPVVBOQU1FLHRoaXMuZ3JvdXBEZXNjPXYuc2FzbWVtYmVyc1swXS5HUk9VUERFU0MsdGhpcy5ncm91cE5hbWV8fCh0aGlzLmdyb3VwTmFtZT10aGlzLnBhcmFt''@;'; put 'put ''VVJJKSl9KSkpfWdyb3VwTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmdyb3Vwcyx0aGlzLmdyb3VwU2VhcmNoLCJHUk9VUE5BTUUiKSxyaS51c2VybmF2Lmdyb3VwU2VhcmNoPXRoaXMuZ3JvdXBTZWFyY2h9Z3JvdXBPbkNsaWNrKGgpe3Ro''@;'; put 'put ''aXMubG9hZGluZz0hMDtsZXQgdj10aGlzLnJvdXRlci51cmw7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5wYXJhbVByZXNlbnQ/di5zbGljZSgwLHYubGFzdEluZGV4T2YoIi8iKSkrIi8iK2VuY29kZVVSSShoLkdST1VQVVJJKTp2KyIvIitlbmNvZGVVUkkoaC5HUk9VUFVSSSkp''@;'; put 'put ''LHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHMvIitoLkdST1VQVVJJKyIvbWVtYmVycz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKHk9PnkudGV4dCgpKS50aGVuKHk9''@;'; put 'put ''PntsZXQgQz1KU09OLnBhcnNlKHkpO3RoaXMubG9hZGluZz0hMSx0aGlzLmdyb3VwVXJpPWguR1JPVVBVUkksdGhpcy5ncm91cE5hbWU9aC5HUk9VUE5BTUUsdGhpcy5ncm91cERlc2M9aC5HUk9VUERFU0M7bGV0IEk9Qy5pdGVtcy5tYXAoaj0+KHtNRU1CRVJOQU1FOmoubmFtZSxNRU1CRVJJ''@;'; put 'put ''RDpqLmlkfSkpO3RoaXMuZ3JvdXBNZW1iZXJzPUksdGhpcy5ncm91cE1lbWJlckNvdW50PUkubGVuZ3RofSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieWdyb3VwIix7aXdhbnQ6W3tncm91cGlkOmguR1JPVVBVUkl9XX0pLnRoZW4oQz0+e3RoaXMubG9h''@;'; put 'put ''ZGluZz0hMSx0aGlzLmdyb3VwVXJpPWguR1JPVVBVUkksdGhpcy5ncm91cE5hbWU9aC5HUk9VUE5BTUUsdGhpcy5ncm91cERlc2M9aC5HUk9VUERFU0MsdGhpcy5ncm91cE1lbWJlcnM9Qy5zYXNtZW1iZXJzLHRoaXMuZ3JvdXBNZW1iZXJDb3VudD1DLnNhc21lbWJlcnMubGVuZ3RofSl9fXJl''@;'; put 'put ''dHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGwwKSxLdChjYyksS3QoRWwpLEt0KFZkKSxLdChKMSkpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtZ3JvdXAiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJd''@;'; put 'put ''LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsInNpZGViYXItaGVpZ2h0Il0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJd''@;'; put 'put ''LFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiRmlsdGVyIGJ5IEdyb3VwcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJd''@;'; put 'put ''LFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJ0YWJsZS1hY3RpdmUiLCJjbGljayIs''@;'; put 'put ''NCwibmdJZiJdLFszLCJjbGljayJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsImxpc3QtcGFkZGluZyJdLFsic2hhcGUiLCJ1c2VycyJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWyJjbGFzcyIsImNsci1yb3ciLDQsIm5nSWYiXSxbMSwiY2xyLXJvdyJdLFsxLCJj''@;'; put 'put ''bHItY29sLTgiXSxbMSwiY2FyZCIsImdyb3VwLWRhdGEiXSxbMSwidGFibGUiLCJncm91cC1pbmZvIl0sWzEsImxlZnQiXSxbMSwiZ3JvdXAtaW5mby10ZXh0Il0sWzEsInRhYmxlLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJ0YWJsZSBtZW1iZXItdGFibGUiLDQsIm5nSWYiXSxbMSwidGFibGUi''@;'; put 'put ''LCJtZW1iZXItdGFibGUiXSxbMywicm91dGVyTGluayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIndpZHRoLTI1Il0sWzEsIiJdLFszLCJyb3V0ZXJMaW5rIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYodHQoMCwiYXBwLXNpZGViYXIiLDApKDEsImNsci10cmVlIiksbm4oMixo''@;'; put 'put ''dnQsNiwzLCJjbHItdHJlZS1ub2RlIiwxKSxubigzLHB2dCwyLDEsIm5nLWNvbnRhaW5lciIsMiksaXQoKSgpLHR0KDQsImRpdiIsMyksbm4oNSxndnQsMywwLCJkaXYiLDQpLG5uKDYsVHZ0LDgsMywiZGl2Iiw1KSxpdCgpKSwyJmgmJihzdCgyKSx4dCgibmdJZiIsdi5ncm91cHMpLHN0KDEp''@;'; put 'put ''LHh0KCJuZ0Zvck9mIix2Lmdyb3Vwcyksc3QoMikseHQoIm5nSWYiLHYubG9hZGluZyksc3QoMSkseHQoIm5nSWYiLHYuZ3JvdXBNZW1iZXJzJiYhdi5sb2FkaW5nKSl9LGRlcGVuZGVuY2llczpbcWwsQm8scDEsanMsX3MsWTYsU3YsX2csRzIsd3YsUFNdLHN0eWxlczpbIi5zaWRlYmFyLWhl''@;'; put 'put ''aWdodFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9Lmdyb3VwLWluZm8tdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOjIwcHh9Lmdyb3VwLWluZm9bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXI6''@;'; put 'put ''MXB4IHNvbGlkICNhN2E3YTc7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN30uZ3JvdXAtaW5mb1tfbmdjb250ZW50LSVDT01QJV0gICB0ZFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXI6MXB4IHNvbGlkICNhN2E3YTc7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN30uZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDphdXRvfS5ncm91cC1kYXRhW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5ncm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tZW1iZXItdGFibGVbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTt3aWR0aDoxMDAlfS5ncm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2RhZGFk''@;'; put 'put ''YX0uZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICAubWVtYmVyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Y3Vyc29yOnBvaW50ZXJ9''@;'; put 'put ''LnRhYmxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0b31AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6dW5zZXQhaW1wb3J0YW50fX0iXX0pLGR9KSgpO3ZhciBabWU9''@;'; put 'put ''TCg5OTIxKSxJdnQ9TCgyMDMzKTtmdW5jdGlvbiBEdnQoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwyOCl9ZnVuY3Rpb24gTHZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWljb24iLDI5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KDIpO3Jl''@;'; put 'put ''dHVybiB5LmxpYnJhcmllc1NlYXJjaD0iIixidCh5LmxpYnJhcnlPbkZpbHRlcigpKX0pLGl0KCl9fWZ1bmN0aW9uIE92dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDIyKSgxLCJkaXYiLDIzKSgyLCJpbnB1dCIsMjQsMjUpLFpuKCJuZ01vZGVsQ2hh''@;'; put 'put ''bmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLmxpYnJhcmllc1NlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLmxpYnJhcnlPbkZpbHRlcigpKX0pLGl0KCksbm4oNCxEdnQsMSwwLCJjbHItaWNvbiIsMjYpLG5uKDUsTHZ0LDEsMCwi''@;'; put 'put ''Y2xyLWljb24iLDI3KSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPXVhKDMpLHY9VXQoKTtzdCgyKSx4dCgibmdNb2RlbCIsdi5saWJyYXJpZXNTZWFyY2gpLHN0KDIpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSxzdCgxKSx4dCgibmdJZiIsaC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9u''@;'; put 'put ''IFJ2dChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDI4KX1mdW5jdGlvbiBCdnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItaWNvbiIsMjkpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpLFV0KCk7Y29uc3QgeT11YSgzKSxDPVV0KDIpLiRpbXBsaWNpdCxJPVV0KCk7''@;'; put 'put ''cmV0dXJuIHkudmFsdWU9IiIsQy5zZWFyY2hTdHJpbmc9IiIsYnQoSS50cmVlT25GaWx0ZXIoQywidGFibGVzLlRBQkxFTkFNRSIpKX0pLGl0KCl9fWZ1bmN0aW9uIFB2dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDIyKSgxLCJkaXYiLDIzKSgyLCJp''@;'; put 'put ''bnB1dCIsMzUsMzYpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgyKS4kaW1wbGljaXQuc2VhcmNoU3RyaW5nPXkpfSkoImtleXVwIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KCkudHJlZU9uRmls''@;'; put 'put ''dGVyKHksInRhYmxlcy5UQUJMRU5BTUUiKSl9KSxpdCgpLG5uKDQsUnZ0LDEsMCwiY2xyLWljb24iLDI2KSxubig1LEJ2dCwxLDAsImNsci1pY29uIiwyNyksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgzKSx2PVV0KDIpLiRpbXBsaWNpdDtzdCgyKSx4dCgibmdNb2RlbCIsdi5zZWFyY2hT''@;'; put 'put ''dHJpbmcpLHN0KDIpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSxzdCgxKSx4dCgibmdJZiIsaC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIEZ2dChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDI4KX1mdW5jdGlvbiBIdnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJj''@;'; put 'put ''bHItaWNvbiIsMjkpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpLFV0KCk7Y29uc3QgeT11YSgzKSxDPVV0KCkuJGltcGxpY2l0LEk9VXQoMyk7cmV0dXJuIHkudmFsdWU9IiIsQy5zZWFyY2hTdHJpbmc9IiIsYnQoSS50cmVlT25GaWx0ZXIoQywiY29sdW1ucy5DT0xOQU1FIikpfSksaXQo''@;'; put 'put ''KX19ZnVuY3Rpb24gTnZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRyZWUtbm9kZSIsMjIpKDEsImRpdiIsMjMpKDIsImlucHV0IiwzOSwzNiksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkuJGltcGxpY2l0LnNlYXJjaFN0''@;'; put 'put ''cmluZz15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KDMpLnRyZWVPbkZpbHRlcih5LCJjb2x1bW5zLkNPTE5BTUUiKSl9KSxpdCgpLG5uKDQsRnZ0LDEsMCwiY2xyLWljb24iLDI2KSxubig1LEh2dCwxLDAsImNsci1pY29u''@;'; put 'put ''IiwyNyksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgzKSx2PVV0KCkuJGltcGxpY2l0O3N0KDIpLHh0KCJuZ01vZGVsIix2LnNlYXJjaFN0cmluZyksc3QoMikseHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHN0KDEpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24g''@;'; put 'put ''VnZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsNDApLFpuKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0LEk9VXQoKS4kaW1wbGljaXQsaj1VdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KCkuY29s''@;'; put 'put ''dW1uT25DbGljayhDLGosSSkpfSksYnIoMiwiY2xyLWljb24iLDQxKSxXdCgzKSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9VXQoNCk7c3QoMSksSGkoImNvbHVtbi1hY3RpdmUiLHYubGliQ29sdW1uQWN0aXZlKGguQ09MVVJJKSksc3QoMiksVWkoIiAiLGguQ09MTkFN''@;'; put 'put ''RSwiICIpfX1mdW5jdGlvbiBqdnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwzMSksWm4oImNsaWNrIixmdW5jdGlvbih5KXtjb25zdCBJPWEoaCkuJGltcGxpY2l0LGo9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgpLnRyZWVOb2RlQ2xpY2tl''@;'; put 'put ''ZCh5LEksai50YWJsZXMpKX0pKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGJ0KGEoaCkuJGltcGxpY2l0LmV4cGFuZGVkPXkpfSksdHQoMSwicCIsMzcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWEoaCkuJGltcGxpY2l0LEk9VXQoMikuJGltcGxpY2l0''@;'; put 'put ''O3JldHVybiBidChVdCgpLnRhYmxlT25DbGljayhDLlRBQkxFVVJJLEMsSSkpfSksYnIoMiwiY2xyLWljb24iLDM4KSxXdCgzKSxpdCgpLG5uKDQsTnZ0LDYsMywiY2xyLXRyZWUtbm9kZSIsMSksbm4oNSxWdnQsNCwzLCJjbHItdHJlZS1ub2RlIiwyKSxpdCgpfWlmKDImZCl7Y29uc3QgaD1n''@;'; put 'put ''LiRpbXBsaWNpdDtIaSgiY2xyLWV4cGFuZGVkIixoLmV4cGFuZGVkKSx4dCgiY2xyRXhwYW5kZWQiLGguZXhwYW5kZWQpKCJjbHJMb2FkaW5nIixoLmxvYWRpbmdDb2x1bW5zJiYhaC5jb2x1bW5zKSxzdCgxKSx4dCgiaWQiLGguVEFCTEVVUkkpLHN0KDIpLFVpKCIgIixoLlRBQkxFTkFNRSwi''@;'; put 'put ''ICIpLHN0KDEpLHh0KCJuZ0lmIixoLmNvbHVtbnMpLHN0KDEpLHh0KCJuZ0Zvck9mIixoLmNvbHVtbnMpfX1mdW5jdGlvbiBadnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwzMSksWm4oImNsaWNrIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQo''@;'; put 'put ''KS4kaW1wbGljaXQsST1VdCgpO3JldHVybiBidChJLnRyZWVOb2RlQ2xpY2tlZCh5LEMsSS5saWJyYXJ5TGlzdCkpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLiRpbXBsaWNpdC5leHBhbmRlZD15KX0pLHR0KDEsInAiLDMyKSxabigiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCkuJGltcGxpY2l0LEM9VXQoKTtyZXR1cm4gQy5saWI9eS5MSUJSQVJZSUQsYnQoQy5saWJyYXJ5T25DbGljayhDLmxpYnx8IiIseSkpfSksYnIoMiwiY2xyLWljb24iLDMzKSxXdCgzKSxpdCgpLG5uKDQsUHZ0LDYsMywiY2xyLXRyZWUt''@;'; put 'put ''bm9kZSIsMSksbm4oNSxqdnQsNiw4LCJjbHItdHJlZS1ub2RlIiwzNCksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQ7SGkoImNsci1leHBhbmRlZCIsaC5leHBhbmRlZCkseHQoImNsckV4cGFuZGVkIixoLmV4cGFuZGVkKSgiY2xyTG9hZGluZyIsaC5sb2FkaW5nVGFibGVz''@;'; put 'put ''JiYhaC50YWJsZXMpLHN0KDMpLFVpKCIgIixoLkxJQlJBUllOQU1FLCIgIiksc3QoMSkseHQoIm5nSWYiLGgudGFibGVzKSxzdCgxKSx4dCgibmdGb3JPZiIsaC50YWJsZXMpfX1mdW5jdGlvbiB6dnQoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLFp2dCw2LDcsImNsci10cmVlLW5vZGUiLDMw''@;'; put 'put ''KSxPMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7c3QoMSkseHQoIm5nSWYiLCFoLmhpZGRlbiYmaC5pbkZvcmVncm91bmQpfX1mdW5jdGlvbiBHdnQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDQyKSgxLCJzcGFuIiw0MyksV3QoMiwiIExvYWRpbmcuLi4gIiksaXQoKSgpKX1mdW5jdGlv''@;'; put 'put ''biBXdnQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDQ0KSxicigxLCJjbHItaWNvbiIsNDUpLHR0KDIsImgzIiw0NiksV3QoMywiUGxlYXNlIHNlbGVjdCBhIGNvbHVtbiBvciB0YWJsZSIpLGl0KCkoKSl9ZnVuY3Rpb24gWXZ0KGQsZyl7aWYoMSZkJiYodHQoMCwiaDMiLDU1KSxXdCgxKSxpdCgp''@;'; put 'put ''KSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMSksVWkoIiAiLGguY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uP2guY3VycmVudExpbmVhZ2VQYXRoTGliVGFibGUrIi4iK2guY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uOmguY3VycmVudExpbmVhZ2VQYXRoTGliVGFibGUsIiAiKX19ZnVuY3Rpb24g''@;'; put 'put ''VXZ0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw1Myksbm4oMSxZdnQsMiwxLCJoMyIsNTQpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSx4dCgibmdJZiIsIWguY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uJiYhaC5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZSl9fWZ1bmN0aW9u''@;'; put 'put ''IFF2dChkLGcpe2lmKDEmZCYmKHR0KDAsInNwYW4iKSxXdCgxKSx0dCgyLCJhIiw1NiksV3QoMyksaXQoKSxXdCg0KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSksVWkoIiAiLGgubGluZWFnZVRhYmxlTmFtZS5zcGxpdCgiLiIpWzBdLCIuIiksc3QoMSkseHQoInJvdXRlckxpbmsi''@;'; put 'put ''LCIvdmlldy9kYXRhLyIraC5saW5lYWdlVGFibGVOYW1lKSxzdCgxKSxqaShoLmxpbmVhZ2VUYWJsZU5hbWUuc3BsaXQoIi4iKVsxXSksc3QoMSksVWkoIiIsaC5saW5lYWdlQ29sdW1uTmFtZS5sZW5ndGg+MD8iLiIraC5saW5lYWdlQ29sdW1uTmFtZToiIiwiICIpfX1mdW5jdGlvbiBKdnQo''@;'; put 'put ''ZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDY2KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoNCkuZG93bmxvYWRQTkcoKSl9KSxXdCgxLCIgUE5HICIpLGl0KCl9fWZ1bmN0aW9uIFh2dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAs''@;'; put 'put ''ImRpdiIsNjYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCg0KS5kb3dubG9hZENTVigpKX0pLFd0KDEsIiBDU1YgIiksaXQoKX19ZnVuY3Rpb24gS3Z0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDY1KSgxLCJkaXYi''@;'; put 'put ''LDY2KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMykuZG93bmxvYWRTVkcoKSl9KSxXdCgyLCJTVkciKSxpdCgpLG5uKDMsSnZ0LDIsMCwiZGl2Iiw2NyksdHQoNCwiZGl2Iiw2NiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLmRv''@;'; put 'put ''d25sb2FkRG90KCkpfSksV3QoNSwiRG90IiksaXQoKSxubig2LFh2dCwyLDAsImRpdiIsNjcpLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KDMpO3N0KDMpLHh0KCJuZ0lmIiwhaC5oZWxwZXJTZXJ2aWNlLmlzTWljcm9zb2Z0KSxzdCgzKSx4dCgibmdJZiIsaC5mbGF0ZGF0YSl9fWZ1bmN0aW9u''@;'; put 'put ''ICR2dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1jaGVja2JveC13cmFwcGVyIiw2OCkoMSwiaW5wdXQiLDY5KSxabigiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDMpLmdlbmVyYXRlR3JhcGgoKSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24o''@;'; put 'put ''eSl7cmV0dXJuIGEoaCksYnQoVXQoMykucmVmcmVzaENhY2hlPXkpfSksaXQoKSx0dCgyLCJsYWJlbCIpLFd0KDMsIlJlZnJlc2ggQ2FjaGUiKSxpdCgpKCl9aWYoMiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLHh0KCJuZ01vZGVsIixoLnJlZnJlc2hDYWNoZSl9fWZ1bmN0aW9uIHF2dChkLGcp''@;'; put 'put ''e2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImRpdiIsNTcpKDEsImJ1dHRvbiIsNTgpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5saW1pdERvdERlcHRoPSEwKX0pLFd0KDIsIiBMaW1pdCBkZXB0aCAiKSxpdCgpLHR0KDMsImRpdiIsNTkpKDQsImRpdiIs''@;'; put 'put ''NjApLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIHkuZm9yd2FyZExpbmVhZ2U9ITEsYnQoeS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKT95Lm9uR2VuZXJhdGVDbGljaygpOnkub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKX0pLGJyKDUs''@;'; put 'put ''ImlucHV0Iiw2MSksdHQoNiwibGFiZWwiKSxXdCg3LCJCYWNrd2FyZCIpLGl0KCkoKSx0dCg4LCJkaXYiLDYwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KDIpO3JldHVybiB5LmZvcndhcmRMaW5lYWdlPSEwLGJ0KHkucm91dGVyLnVybC5pbmNsdWRlcygiY29sdW1u''@;'; put 'put ''Iik/eS5vbkdlbmVyYXRlQ2xpY2soKTp5Lm9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xpY2soKSl9KSxicig5LCJpbnB1dCIsNjEpLHR0KDEwLCJsYWJlbCIpLFd0KDExLCJGb3J3YXJkIiksaXQoKSgpKCksdHQoMTIsImNsci1kcm9wZG93biIsNjIpKDEzLCJidXR0b24iLDYzKSxXdCgxNCwiIERv''@;'; put 'put ''d25sb2FkICIpLGJyKDE1LCJjbHItaWNvbiIsMTkpLGl0KCksbm4oMTYsS3Z0LDcsMiwiY2xyLWRyb3Bkb3duLW1lbnUiLDIwKSxpdCgpLG5uKDE3LCR2dCw0LDEsImNsci1jaGVja2JveC13cmFwcGVyIiw2NCksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7c3QoNSkseHQoImNoZWNrZWQi''@;'; put 'put ''LCFoLmZvcndhcmRMaW5lYWdlKSxzdCg0KSx4dCgiY2hlY2tlZCIsaC5mb3J3YXJkTGluZWFnZSksc3QoNCkseHQoImRpc2FibGVkIiwhaC5jb2x1bW4mJiFoLnRhYmxlKSxzdCg0KSx4dCgibmdJZiIsaC5jb2x1bW4pfX1mdW5jdGlvbiBlOXQoZCxnKXsxJmQmJih0dCgwLCJzcGFuIiw3Myks''@;'; put 'put ''V3QoMSwiIExvYWRpbmcuLi4gIiksaXQoKSl9ZnVuY3Rpb24gdDl0KGQsZyl7MSZkJiZicigwLCJzcGFuIiw0Myl9ZnVuY3Rpb24gbjl0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw3NCkoMSwiZGl2Iiw3NSksbm4oMix0OXQsMSwwLCJzcGFuIiw3NiksaXQoKSxicigzLCJkaXYiLDc3KSxp''@;'; put 'put ''dCgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMikseHQoIm5nSWYiLGguZ3JhcGhSZW5kZXJpbmcpfX1mdW5jdGlvbiByOXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiKSgxLCJkaXYiLDcwKSxubigyLGU5dCwyLDAsInNwYW4iLDcxKSxubigzLG45dCw0LDEsImRpdiIsNzIpLGl0KCkoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPVV0KDIpO0hpKCJtdC0yIixoLnRhYmxlRmxhZyksc3QoMikseHQoIm5nSWYiLGguZ3JhcGhMb2FkaW5nKSxzdCgxKSx4dCgibmdJZiIsIWguZ3JhcGhMb2FkaW5nKX19ZnVuY3Rpb24gaTl0KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxVdnQsMiwxLCJkaXYiLDQ3KSx0''@;'; put 'put ''dCgyLCJkaXYiLDQ4KSgzLCJzZWN0aW9uIiw0OSkoNCwiZGl2Iiw1MCksbm4oNSxRdnQsNSw0LCJzcGFuIiw3KSxpdCgpLG5uKDYscXZ0LDE4LDQsImRpdiIsNTEpLGl0KCksbm4oNyxyOXQsNCw0LCJkaXYiLDUyKSxpdCgpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lm''@;'; put 'put ''IiwhaC5ncmFwaENvbnRhaW5lciksc3QoNCkseHQoIm5nSWYiLGgubGluZWFnZVRhYmxlTmFtZS5sZW5ndGg+MCksc3QoMSkseHQoIm5nSWYiLGguZ3JhcGhDb250YWluZXIpLHN0KDEpLHh0KCJuZ0lmIixoLmdyYXBoQ29udGFpbmVyKX19ZnVuY3Rpb24gbzl0KGQsZyl7aWYoMSZkKXtjb25z''@;'; put 'put ''dCBoPXlpKCk7dHQoMCwiZGl2Iiw2NiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLnJlbmRlclRvRG93bmxvYWQoIlBORyIpKX0pLFd0KDEsIiBQTkcgIiksaXQoKX19ZnVuY3Rpb24gYTl0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWRy''@;'; put 'put ''b3Bkb3duLW1lbnUiLDY1KSgxLCJkaXYiLDY2KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5yZW5kZXJUb0Rvd25sb2FkKCJTVkciKSl9KSxXdCgyLCJTVkciKSxpdCgpLG5uKDMsbzl0LDIsMCwiZGl2Iiw2NyksdHQoNCwiZGl2Iiw2NiksWm4oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgpO3JldHVybiB5LmRvd25sb2FkRG90KCksYnQoeS5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpKX0pLFd0KDUsIiBEb3QgIiksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgpO3N0KDMpLHh0KCJuZ0lmIiwhaC5oZWxwZXJTZXJ2aWNlLmlzTWljcm9z''@;'; put 'put ''b2Z0KX19Y29uc3QgbDl0PUwoMTU0MzkpO2xldCBXbmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksaixjZSl7dGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5yb3V0ZT12LHRoaXMucm91dGVyPXksdGhpcy5sb2NhdGlvbj1DLHRoaXMuZXZlbnRTZXJ2aWNlPUksdGhpcy5sb2dn''@;'; put 'put ''ZXJTZXJ2aWNlPWosdGhpcy5oZWxwZXJTZXJ2aWNlPWNlLHRoaXMuc3dpdGNoRmxhZz0hMSx0aGlzLnRhYmxlRmxhZz0hMCx0aGlzLmZvcndhcmRMaW5lYWdlPSExLHRoaXMuZmxhdGRhdGE9W10sdGhpcy5ncmFwaExvYWRpbmc9ITEsdGhpcy5ncmFwaFJlbmRlcmluZz0hMSx0aGlzLmdyYXBo''@;'; put 'put ''Q29udGFpbmVyPSExLHRoaXMudml6SW5wdXQ9IiIsdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEsdGhpcy5saWJyYXJ5VGFibGVzUmVmPSIiLHRoaXMubGlicmFyaWVzU2VhcmNoPSIiLHRoaXMudGFibGVDb2x1bW5zUmVmPSIiLHRoaXMubGluZWFnZVRhYmxlTmFtZT0iIix0aGlzLmxpbmVhZ2VD''@;'; put 'put ''b2x1bW5OYW1lPSIiLHRoaXMubGliPW51bGwsdGhpcy50YWJsZURpc2FibGU9ITEsdGhpcy5yZWZyZXNoQ2FjaGU9ITEsdGhpcy5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZT0iIix0aGlzLmN1cnJlbnRMaW5lYWdlUGF0aENvbHVtbj0iIix0aGlzLmxhcmdlRG90RmlsZUxpbmVzPW51bGws''@;'; put 'put ''dGhpcy5sYXJnZURvdEZpbGVMaW1pdD0xZTMsdGhpcy5saW1pdERvdERlcHRoPSExLHRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkPW51bGwsdGhpcy5kZWJvdW5jZVRpbWU9MjAwfXNob3dUYWJsZVNlbGVjdCgpe3RoaXMudGFibGVGbGFnPSF0aGlzLnRhYmxlRmxhZ310YWJsZU9uQ2xpY2so''@;'; put 'put ''aCx2LHksQz0hMSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2LmNvbHVtbnM/KHYuZXhwYW5kZWQ9IXYuZXhwYW5kZWQsITA9PT12LmV4cGFuZGVkJiYodGhpcy50YWJsZT1oLEN8fHRoaXMub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKSk6KHYuZXhwYW5k''@;'; put 'put ''ZWQ9IXYuZXhwYW5kZWQsdi5sb2FkaW5nQ29sdW1ucz0hMCx0aGlzLnRhYmxlPWgsdGhpcy5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZT12LkxJQk5BTUUrIi4iK3YuVEFCTEVOQU1FLHlpZWxkIHRoaXMuc2VsZWN0VGFibGUoaCx2KSxDfHx0aGlzLm9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xp''@;'; put 'put ''Y2soKSksdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyh5LnRhYmxlcyx2KX0pfXNlbGVjdFRhYmxlKGgsdil7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmNvbHVtbnNMaXN0PVtdO2xldCB5PXtTQVNDb250cm9sVGFibGU6W3t0YWJsZXVyaTpofV19O3lpZWxk''@;'; put 'put ''IHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJsaW5lYWdlL2dldG1ldGFjb2xzIix5KS50aGVuKEM9Pnt0aGlzLmNvbHVtbnNMaXN0PUMubWV0YWNvbHMsdGhpcy5jb2x1bW5zTGlzdCYmdGhpcy5jb2x1bW5zTGlzdC5sZW5ndGg+MCYmKHYuY29sdW1ucz10aGlzLmNvbHVtbnNMaXN0LHYuZXhw''@;'; put 'put ''YW5kZWQ9ITAsdi5sb2FkaW5nQ29sdW1ucz0hMSl9KS5jYXRjaChDPT5DKSx0aGlzLnNldEdsb2JhbERhdGEoKX0pfWxvYWRNb3JlTGlicmFyaWVzKCl7dGhpcy5saWJyYXJpZXNQYWdpbmd8fCh0aGlzLmxpYnJhcmllc1BhZ2luZz0hMCx0aGlzLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJh''@;'; put 'put ''cmllcyh0aGlzLmxpYnJhcnlMaXN0LCEwKSx0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSl9Y29sbGFwc2VUcmVlSXRlbXMoaCx2KXtoLmZvckVhY2goeT0+e0pTT04uc3RyaW5naWZ5KHkpIT09SlNPTi5zdHJpbmdpZnkodikmJih5LmV4cGFuZGVkPSExKX0pfXRyZWVOb2RlQ2xpY2tlZChoLHYs''@;'; put 'put ''eSl7IkNvbGxhcHNlIj09PWgudGFyZ2V0LnRpdGxlJiZ0aGlzLmNvbGxhcHNlVHJlZUl0ZW1zKHksdil9bGlicmFyeU9uQ2xpY2soaCx2KXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3YuaW5Gb3JlZ3JvdW5kPSEwLHYudGFibGVzP3YuZXhwYW5kZWQ9IXYuZXhw''@;'; put 'put ''YW5kZWQ6KHYubG9hZGluZ1RhYmxlcz0hMCx5aWVsZCB0aGlzLnNlbGVjdExpYnJhcnkoaCx2KSksdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyh0aGlzLmxpYnJhcnlMaXN0LHYpfSl9c2VsZWN0TGlicmFyeShoLHYpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhp''@;'; put 'put ''cy50YWJsZXNMaXN0PVtdLHRoaXMuY29sdW1uc0xpc3Q9W107bGV0IHk9e1NBU0NvbnRyb2xUYWJsZTpbe2xpYnVyaTpofV19O3lpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJsaW5lYWdlL2dldG1ldGF0YWJsZXMiLHkpLnRoZW4oQz0+e3RoaXMudGFibGVzTGlzdD1DLm1ldGF0YWJs''@;'; put 'put ''ZXMsdGhpcy50YWJsZXNMaXN0JiZ0aGlzLnRhYmxlc0xpc3QubGVuZ3RoPjAmJih2LnRhYmxlcz10aGlzLnRhYmxlc0xpc3Qsdi5leHBhbmRlZD0hMCksdGhpcy5zZXRHbG9iYWxEYXRhKCl9KS5jYXRjaChDPT5DKSx2LmxvYWRpbmdUYWJsZXM9ITF9KX1jb2x1bW5PbkNsaWNrKGgsdix5KXt0''@;'; put 'put ''aGlzLmxpYj12LkxJQlJBUllJRCx0aGlzLnRhYmxlPXkuVEFCTEVVUkksdGhpcy5jb2x1bW49aC5DT0xVUkksdGhpcy5zZXRHbG9iYWxEYXRhKCksdGhpcy5vbkdlbmVyYXRlQ2xpY2soKX10cmVlT25GaWx0ZXIoaCx2KXt0aGlzLmhlbHBlclNlcnZpY2UudHJlZU9uRmlsdGVyKGgsdil9bGli''@;'; put 'put ''cmFyeU9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmxpYnJhcnlMaXN0LHRoaXMubGlicmFyaWVzU2VhcmNoLCJMSUJSQVJZTkFNRSIpLHJpLmxpbmVhZ2UubGlicmFyaWVzU2VhcmNoPXRoaXMubGlicmFyaWVzU2VhcmNofWxpYkNvbHVtbkFjdGl2''@;'; put 'put ''ZShoKXtpZighdGhpcy5jb2x1bW4pcmV0dXJuITE7bGV0IHY9aC5zcGxpdCgiXFwiKSx5PXRoaXMuY29sdW1uLnNwbGl0KCJcXCIpO3JldHVybiB2W3YubGVuZ3RoLTFdPT15W3kubGVuZ3RoLTFdfXNldEdsb2JhbERhdGEoKXtyaS5saW5lYWdlLmxpYnJhcnlMaXN0PXRoaXMubGlicmFyeUxp''@;'; put 'put ''c3QscmkubGluZWFnZS50YWJsZXNMaXN0PXRoaXMudGFibGVzTGlzdCxyaS5saW5lYWdlLmNvbHVtbnNMaXN0PXRoaXMuY29sdW1uc0xpc3QscmkubGluZWFnZS5saWI9dGhpcy5saWIscmkubGluZWFnZS50YWJsZT10aGlzLnRhYmxlLHJpLmxpbmVhZ2UuY29sdW1uPXRoaXMuY29sdW1ufWxv''@;'; put 'put ''YWRHbG9iYWxEYXRhKCl7dGhpcy5saWJyYXJ5TGlzdD1yaS5saW5lYWdlLmxpYnJhcnlMaXN0LHRoaXMudGFibGVzTGlzdD1yaS5saW5lYWdlLnRhYmxlc0xpc3QsdGhpcy5jb2x1bW5zTGlzdD1yaS5saW5lYWdlLmNvbHVtbnNMaXN0LHRoaXMubGlicmFyaWVzU2VhcmNoPXJpLmxpbmVhZ2Uu''@;'; put 'put ''bGlicmFyaWVzU2VhcmNofXJlc3VibWl0V2l0aE1heERlcHRoKGgpe2xldCB2O3RoaXMuY2FuY2VsUmVuZGVyaW5nR3JhcGgoKSxoJiYodj17bWF4X2RlcHRoOmh9KSx0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSx7cmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5UGFyYW1zOnZ9KX1uZ09uSW5p''@;'; put 'put ''dCgpe3JpLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L2xpbmVhZ2UiO2xldCBoPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnJlbG9hZDtpZih2b2lkIDAhPT1oKXtsZXQgdj10aGlzLnJvdXRlci51cmw7InJlbG9hZCI9PT1oP2xvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaXJzdExv''@;'; put 'put ''YWQiKT8obG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpcnN0TG9hZCIpLHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHYuc2xpY2UoMCx2Lmxhc3RJbmRleE9mKCIvIikpKSk6KGxvY2FsU3RvcmFnZS5maXJzdExvYWQ9ITAsc2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlv''@;'; put 'put ''bi5yZWxvYWQoKX0sMmUzKSk6dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodi5zbGljZSgwLHYubGFzdEluZGV4T2YoIi8iKSkpfXRoaXMuaW5pdERhdGEoKX1pbml0RGF0YSgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmkubGluZWFnZS5saWJyYXJ5TGlz''@;'; put 'put ''dCYmKHJpLmxpbmVhZ2UubGlicmFyeUxpc3QubGVuZ3RoPjA/dGhpcy5sb2FkR2xvYmFsRGF0YSgpOnlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmlld2xpYnMiLG51bGwpLnRoZW4oQz0+e3RoaXMubGlicmFyeUxpc3Q9Qy5zYXNsaWJzLHRoaXMuaGVscGVyU2Vydmlj''@;'; put 'put ''ZS5kaXNwbGF5TGlicmFyaWVzKHRoaXMubGlicmFyeUxpc3QpLHRoaXMubGlicmFyeUxpc3QmJnRoaXMubGlicmFyeUxpc3QubGVuZ3RoPjAmJih0aGlzLmxpYj10aGlzLmxpYnJhcnlMaXN0WzBdLkxJQlJBUllJRCksdGhpcy5zZXRHbG9iYWxEYXRhKCl9KS5jYXRjaChDPT5DKSx0aGlzLnJv''@;'; put 'put ''dXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShDPT57dGhpcy5vblJvdXRlQ2hhbmdlKCl9KSx0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoQz0+e3RoaXMub25Sb3V0ZUNoYW5nZSgpfSkpfSl9b25Sb3V0ZUNoYW5nZSgpe2NsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZW91dCksdGhp''@;'; put 'put ''cy5kZWJvdW5jZVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e2NvbnN0IGg9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuY29sdXJpLHY9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZGlyZWN0aW9uLHk9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudGFibGVpZCxDPXRoaXMucm91dGUu''@;'; put 'put ''c25hcHNob3QucXVlcnlQYXJhbXMubWF4X2RlcHRoO2gmJnYmJih0aGlzLmZvcndhcmRMaW5lYWdlPSJGT1JXQVJEIj09PXYsdGhpcy5jb2x1bW49aCx0aGlzLmdlbmVyYXRlR3JhcGgoaCx2LEMpKSwhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKSYmeSYmdiYmKHRoaXMuZm9y''@;'; put 'put ''d2FyZExpbmVhZ2U9IkZPUldBUkQiPT09dix0aGlzLnRhYmxlPXksdGhpcy5nZW5lcmF0ZUdyYXBoVGFibGVMZXZlbCh5LHYsQykpfSx0aGlzLmRlYm91bmNlVGltZSl9bmdBZnRlckNvbnRlbnRJbml0KCl7fWRpcmVjdGlvblRleHQoKXtyZXR1cm4gdGhpcy5mb3J3YXJkTGluZWFnZT8iRk9S''@;'; put 'put ''V0FSRCI6IlJFVkVSU0UifW9uR2VuZXJhdGVDbGljaygpe2xldCBoPXRoaXMuZGlyZWN0aW9uVGV4dCgpLHY9dGhpcy5jb2x1bW4/dGhpcy5jb2x1bW4uc3Vic3RyaW5nKHRoaXMuY29sdW1uLmluZGV4T2YoIlxcIikrMSk6bnVsbDt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9s''@;'; put 'put ''aW5lYWdlL2NvbHVtbi8iK3YrIi8iK2gpfW9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xpY2soKXtsZXQgaD10aGlzLmRpcmVjdGlvblRleHQoKSx2PXRoaXMudGFibGUuaW5jbHVkZXMoIlxcIik/dGhpcy50YWJsZS5zcGxpdCgiXFwiKVsxXTp0aGlzLnRhYmxlO3RoaXMucm91dGVyLm5hdmlnYXRl''@;'; put 'put ''QnlVcmwoIi92aWV3L2xpbmVhZ2UvIit2KyIvIitoKX1nZW5lcmF0ZUdyYXBoVGFibGVMZXZlbChoLHYseSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17U0FTQ29udHJvbFRhYmxlOlt7dGFibGVfaWQ6aCxkaXJlY3Rpb246dnx8dGhpcy5kaXJlY3Rp''@;'; put 'put ''b25UZXh0KCl9XX07cmV0dXJuInVuZGVmaW5lZCI9PT1DLlNBU0NvbnRyb2xUYWJsZVswXS50YWJsZV9pZCYmdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoImdlbmVyYXRlR3JhcGhUYWJsZUxldmVsKCkiLCJ0YWJsZV9pZCBpcyB1bmRlZmluZWQuIix2b2lkIDAsIkZyb250ZW5k''@;'; put 'put ''IGVycm9yIikseSYmKEMuU0FTQ29udHJvbFRhYmxlWzBdLm1heF9kZXB0aD15KSx0aGlzLnRhYmxlRmxhZz0hMSx0aGlzLnN3aXRjaEZsYWc9ITAsdGhpcy5ncmFwaENvbnRhaW5lcj0hMCx0aGlzLmdyYXBoTG9hZGluZz0hMCx0aGlzLnZpeklucHV0PSIiLG5ldyBQcm9taXNlKChJLGopPT57''@;'; put 'put ''dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZmV0Y2h0YWJsZWxpbmVhZ2UiLEMpLnRoZW4oY2U9PnRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZigic3RyaW5nIj09dHlwZW9mIGNlKXJldHVybiB0aGlzLnZpeklucHV0PSJkaWdyYXBoIEcge1NBUyBFcnJvcn0i''@;'; put 'put ''LHZvaWQgdGhpcy5idWlsZEdyYXBoKCk7dGhpcy5saW5lYWdlVGFibGVOYW1lPWNlLmluZm9bMF0uTElCUkVGKyIuIitjZS5pbmZvWzBdLlRBQkxFTkFNRTtsZXQgX2U9Y2UuZmluYWxmaW5hbCxSZT0iIjtmb3IobGV0IE5lPTA7TmU8X2UubGVuZ3RoO05lKyspUmUrPXVuZXNjYXBlKF9lW05l''@;'; put 'put ''XS5MSU5FKSsiXG4iO2lmKHRoaXMuZmxhdGRhdGE9Y2UuZmxhdGRhdGEsdGhpcy5saWJyYXJ5TGlzdCl7bGV0IE5lPXRoaXMubGlicmFyeUxpc3QuZmluZChLZT0+Y2UuaW5mb1swXS5MSUJVUkkudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhLZS5MSUJSQVJZSUQudG9VcHBlckNhc2UoKSkpO2lm''@;'; put 'put ''KE5lKXtsZXQgS2U7aWYoeWllbGQgdGhpcy5saWJyYXJ5T25DbGljayhOZS5MSUJSQVJZSUQsTmUpLE5lLnRhYmxlcyYmKEtlPU5lLnRhYmxlcy5maW5kKGh0PT5odC5UQUJMRVVSSS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGNlLmluZm9bMF0uVEFCTEVJRC50b1VwcGVyQ2FzZSgpKSksS2Up''@;'; put 'put ''KXtpZih0aGlzLnRhYmxlPUtlLlRBQkxFVVJJLHRoaXMudGFibGUpe2NvbnN0IGh0PXRoaXMudGFibGUucmVwbGFjZSgiXFwiLCJcXFxcIik7c2V0VGltZW91dCgoKT0+e2xldCBCdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9JyR7aHR9J11gKTtCdCYmQnQuc2Nyb2xsSW50b1ZpZXco''@;'; put 'put ''KX0sMWUzKX10aGlzLnRhYmxlT25DbGljayhLZS5UQUJMRVVSSSxLZSxOZSx2b2lkIDAhPT12KX1OZSYmKE5lLmV4cGFuZGVkPSEwKSxLZSYmKEtlLmV4cGFuZGVkPSEwKX19dGhpcy52aXpJbnB1dD1SZXx8ImRpZ3JhcGggRyB7Tm8gTGluZWFnZSBBdmFpbGFibGV9Iix0aGlzLnZpeklucHV0''@;'; put 'put ''PXRoaXMudml6SW5wdXQucmVwbGFjZSgvXHNkczovZywiXG5kczoiKS5yZXBsYWNlKC9cc1xuL2csIlxuIiksdGhpcy5pZGxvb2t1cD1jZS5pZGxvb2t1cCxjZS5maW5hbGZpbmFsLmxlbmd0aD50aGlzLmxhcmdlRG90RmlsZUxpbWl0P3RoaXMubGFyZ2VEb3RGaWxlTGluZXM9Y2UuZmluYWxm''@;'; put 'put ''aW5hbC5sZW5ndGg6dGhpcy5idWlsZEdyYXBoKCksSSgpfSkpLmNhdGNoKGNlPT57dGhpcy5ncmFwaExvYWRpbmc9ITEsdGhpcy5ncmFwaENvbnRhaW5lcj0hMX0pfSl9KX1jYW5jZWxSZW5kZXJpbmdHcmFwaCgpe3RoaXMudml6SW5wdXQ9ImRpZ3JhcGggRyB7Tm8gTGluZWFnZSBBdmFpbGFi''@;'; put 'put ''bGV9Iix0aGlzLmxhcmdlRG90RmlsZUxpbmVzPW51bGwsdGhpcy5idWlsZEdyYXBoKCl9Y29udGludWVSZW5kZXJpbmdHcmFwaCgpe3RoaXMubGFyZ2VEb3RGaWxlTGluZXM9bnVsbCx0aGlzLmJ1aWxkR3JhcGgoKCk9PntpZihudWxsIT09dGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQpe3N3''@;'; put 'put ''aXRjaCh0aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZCl7Y2FzZSJQTkciOnRoaXMuZG93bmxvYWRQTkcoKTticmVhaztjYXNlIlNWRyI6dGhpcy5kb3dubG9hZFNWRygpfXRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkPW51bGwsdGhpcy52aXpJbnB1dD0iZGlncmFwaCBHIHtObyBMaW5lYWdl''@;'; put 'put ''IEF2YWlsYWJsZX0iLHRoaXMuYnVpbGRHcmFwaCgpfX0pfXJlbmRlclRvRG93bmxvYWQoaCl7c3dpdGNoKGgpe2Nhc2UiUE5HIjp0aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZD0iUE5HIix0aGlzLmNvbnRpbnVlUmVuZGVyaW5nR3JhcGgoKTticmVhaztjYXNlIlNWRyI6dGhpcy5wZW5kaW5n''@;'; put 'put ''UmVuZGVyRG93bmxvYWQ9IlNWRyIsdGhpcy5jb250aW51ZVJlbmRlcmluZ0dyYXBoKCl9fW1ha2VHcmFwaExpbmthYmxlKGgpe2xldCB2PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNncmFwaCAubm9kZSIpO2ZvcihsZXQgeSBvZiB2KXtsZXQgaixDPXkucXVlcnlTZWxlY3RvcigidGl0''@;'; put 'put ''bGUiKS5pbm5lckhUTUwsST1oLmZpbmQoY2U9PmNlLk1FVEFJRD09PUMpO0kmJihqPSJUQUJMRSI9PT1JLk1FVEFUWVBFPyIvdmlldy9kYXRhLyIrSS5NRVRBTkFNRToiL3ZpZXcvbWV0YWRhdGEvb2JqZWN0LyIrSS5NRVRBSUQseS5jbGFzc0xpc3QuYWRkKCJjdXJzb3ItcG9pbnRlciIpLHku''@;'; put 'put ''YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGNlPT57dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChqKX0pKX19Z2VuZXJhdGVHcmFwaChoLHYseSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17U0FTQ29udHJvbFRhYmxlOlt7Y29sdXJpOmh8fHRoaXMu''@;'; put 'put ''Y29sdW1uLGRpcmVjdGlvbjp2fHx0aGlzLmRpcmVjdGlvblRleHQoKSxyZWZyZXNoOnRoaXMucmVmcmVzaENhY2hlPzE6MH1dfTtyZXR1cm4idW5kZWZpbmVkIj09PUMuU0FTQ29udHJvbFRhYmxlWzBdLmNvbHVyaSYmdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoImdlbmVyYXRl''@;'; put 'put ''R3JhcGgoKSIsImNvbHVyaSBpcyB1bmRlZmluZWQuIix2b2lkIDAsIkZyb250ZW5kIGVycm9yIikseSYmKEMuU0FTQ29udHJvbFRhYmxlWzBdLm1heF9kZXB0aD15KSx0aGlzLnRhYmxlRmxhZz0hMSx0aGlzLnN3aXRjaEZsYWc9ITAsdGhpcy5ncmFwaENvbnRhaW5lcj0hMCx0aGlzLmdyYXBo''@;'; put 'put ''TG9hZGluZz0hMCx0aGlzLnZpeklucHV0PSIiLG5ldyBQcm9taXNlKChJLGopPT57dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZmV0Y2hjb2xsaW5lYWdlIixDKS50aGVuKGNlPT50byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoInN0cmluZyI9PXR5cGVvZiBj''@;'; put 'put ''ZSlyZXR1cm4gdGhpcy52aXpJbnB1dD0iZGlncmFwaCBHIHtTQVMgRXJyb3J9Iix2b2lkIHRoaXMuYnVpbGRHcmFwaCgpO3RoaXMubGluZWFnZVRhYmxlTmFtZT1jZS5pbmZvWzBdLkxJQlJFRisiLiIrY2UuaW5mb1swXS5UQUJOQU1FLHRoaXMubGluZWFnZUNvbHVtbk5hbWU9Y2UuaW5mb1sw''@;'; put 'put ''XS5DT0xOQU1FLHRoaXMuaWRsb29rdXA9Y2UuaWRsb29rdXA7bGV0IF9lPWNlLmZyb21zYXMsUmU9IiI7Zm9yKGxldCBOZT0wO05lPF9lLmxlbmd0aDtOZSsrKVJlKz11bmVzY2FwZShfZVtOZV0uU1RSSU5HKSsiXG4iO2lmKHRoaXMudml6SW5wdXQ9UmV8fCJkaWdyYXBoIEcge05vIExpbmVh''@;'; put 'put ''Z2UgQXZhaWxhYmxlfSIsdGhpcy52aXpJbnB1dD10aGlzLnZpeklucHV0LnJlcGxhY2UoL1xzZHM6L2csIlxuZHM6IikucmVwbGFjZSgvXHNcbi9nLCJcbiIpLHRoaXMuZmxhdGRhdGE9Y2UuZmxhdGRhdGEsdGhpcy5saWJyYXJ5TGlzdCl7bGV0IEtlLE5lPXRoaXMubGlicmFyeUxpc3QuZmlu''@;'; put 'put ''ZChodD0+e3ZhciBCdCwkdCxobixEbjtyZXR1cm4gbnVsbD09PShobj1udWxsPT09KCR0PW51bGw9PT0oQnQ9Y2UuaW5mb1swXSl8fHZvaWQgMD09PUJ0P3ZvaWQgMDpCdC5MSUJVUkkpfHx2b2lkIDA9PT0kdD92b2lkIDA6JHQudG9VcHBlckNhc2UoKSl8fHZvaWQgMD09PWhuP3ZvaWQgMDpo''@;'; put 'put ''bi5pbmNsdWRlcyhudWxsPT09KERuPW51bGw9PWh0P3ZvaWQgMDpodC5MSUJSQVJZSUQpfHx2b2lkIDA9PT1Ebj92b2lkIDA6RG4udG9VcHBlckNhc2UoKSl9KTtOZSYmKHlpZWxkIHRoaXMubGlicmFyeU9uQ2xpY2soTmUuTElCUkFSWUlELE5lKSxOZS50YWJsZXMmJihLZT1OZS50YWJsZXMu''@;'; put 'put ''ZmluZChodD0+aHQuVEFCTEVVUkk9PT1jZS5pbmZvWzBdLlRBQlVSSSksS2UmJnRoaXMudGFibGVPbkNsaWNrKEtlLlRBQkxFVVJJLEtlLE5lLCEwKS50aGVuKCgpPT57bGV0IGh0PUtlLlRBQkxFVVJJO2lmKGh0KXtjb25zdCBCdD1odC5yZXBsYWNlKCJcXCIsIlxcXFwiKTtsZXQgJHQ9ZG9j''@;'; put 'put ''dW1lbnQucXVlcnlTZWxlY3RvcihgW2lkPScke0J0fSddYCk7c2V0VGltZW91dCgoKT0+eyR0JiYodGhpcy5sb2dnZXJTZXJ2aWNlLmxvZygibGlicmFyeVRvU2VsZWN0IixOZSksJHQuc2Nyb2xsSW50b1ZpZXcoKSl9LDFlMyl9fSkpLE5lJiYoTmUuZXhwYW5kZWQ9ITApLEtlJiYoS2UuZXhw''@;'; put 'put ''YW5kZWQ9ITApKX1jZS5mcm9tc2FzLmxlbmd0aD50aGlzLmxhcmdlRG90RmlsZUxpbWl0P3RoaXMubGFyZ2VEb3RGaWxlTGluZXM9Y2UuZnJvbXNhcy5sZW5ndGg6dGhpcy5idWlsZEdyYXBoKCksSSgpfSkpLmNhdGNoKGNlPT57dGhpcy5ncmFwaExvYWRpbmc9ITEsdGhpcy5ncmFwaENvbnRh''@;'; put 'put ''aW5lcj0hMX0pfSl9KX1nZXRTVkdVUkwoKXtsZXQgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiKSx2PW5ldyBYTUxTZXJpYWxpemVyLHk9bmV3IEJsb2IoW3Yuc2VyaWFsaXplVG9TdHJpbmcoaCldLHt0eXBlOiJpbWFnZS9zdmcreG1sIn0pO3JldHVybiBVUkwuY3JlYXRlT2Jq''@;'; put 'put ''ZWN0VVJMKHkpfWdldFNWR0Jsb2IoKXtsZXQgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiKSx2PW5ldyBYTUxTZXJpYWxpemVyO3JldHVybiBuZXcgQmxvYihbdi5zZXJpYWxpemVUb1N0cmluZyhoKV0se3R5cGU6ImltYWdlL3N2Zyt4bWwifSl9ZG93bmxvYWRTVkcoKXtpZiha''@;'; put 'put ''bWUuZ3JhcGh2aXooIiNncmFwaCIpLnJlc2V0Wm9vbSgpLG5hdmlnYXRvci5hcHBWZXJzaW9uLnRvU3RyaW5nKCkuaW5kZXhPZigiLk5FVCIpPjApd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKHRoaXMuZ2V0U1ZHQmxvYigpLHRoaXMuY29uc3RydWN0TmFtZSgic3ZnIikpO2Vsc2V7bGV0''@;'; put 'put ''IGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2guaHJlZj10aGlzLmdldFNWR1VSTCgpLGguZG93bmxvYWQ9dGhpcy5jb25zdHJ1Y3ROYW1lKCJzdmciKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGgpLGguY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGgpfX1kb3du''@;'; put 'put ''bG9hZFBORygpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Wm1lLmdyYXBodml6KCIjZ3JhcGgiKS5yZXNldFpvb20oKSxJdnQuc2F2ZVN2Z0FzUG5nKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNncmFwaCBzdmciKSx0aGlzLmNvbnN0cnVjdE5hbWUoInBuZyIp''@;'; put 'put ''KX0pfWRvd25sb2FkQ1NWKCl7bGV0IGg9dGhpcy5mbGF0ZGF0YTtjb25zdCB2PShSZSxOZSk9Pm51bGw9PT1OZT8iIjpOZSx5PU9iamVjdC5rZXlzKGhbMF0pO2xldCBDPWgubWFwKFJlPT55Lm1hcChOZT0+SlNPTi5zdHJpbmdpZnkoUmVbTmVdLHYpKS5qb2luKCIsIikpO0MudW5zaGlmdCh5''@;'; put 'put ''LmpvaW4oIiwiKSk7bGV0IEk9Qy5qb2luKCJcclxuIik7dmFyIGo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGNlPW5ldyBCbG9iKFtJXSx7dHlwZToidGV4dC9jc3YifSk7aWYobmF2aWdhdG9yLmFwcFZlcnNpb24udG9TdHJpbmcoKS5pbmRleE9mKCIuTkVUIik+MCl3aW5kb3cubmF2''@;'; put 'put ''aWdhdG9yLm1zU2F2ZUJsb2IoY2UsdGhpcy5jb25zdHJ1Y3ROYW1lKCJjc3YiKSk7ZWxzZXt2YXIgX2U9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoY2UpO2ouaHJlZj1fZSxqLmRvd25sb2FkPXRoaXMuY29uc3RydWN0TmFtZSgiY3N2Iiksai5jbGljaygpLHdpbmRvdy5VUkwucmV2b2tl''@;'; put 'put ''T2JqZWN0VVJMKF9lKSxqLnJlbW92ZSgpfX1nZXREb3RVcmwoKXtsZXQgdj1uZXcgQmxvYihbdGhpcy52aXpJbnB1dF0se3R5cGU6InRleHQvcGxhaW4ifSk7cmV0dXJuIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHYpfWdldERvdEJsb2IoKXtyZXR1cm4gbmV3IEJsb2IoW3RoaXMudml6''@;'; put 'put ''SW5wdXRdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pfWRvd25sb2FkRG90KCl7aWYobmF2aWdhdG9yLmFwcFZlcnNpb24udG9TdHJpbmcoKS5pbmRleE9mKCIuTkVUIik+MCl3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IodGhpcy5nZXREb3RCbG9iKCksdGhpcy5jb25zdHJ1Y3ROYW1lKCJ0eHQi''@;'; put 'put ''KSk7ZWxzZXtsZXQgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aC5ocmVmPXRoaXMuZ2V0RG90VXJsKCksaC5kb3dubG9hZD10aGlzLmNvbnN0cnVjdE5hbWUoInR4dCIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaCksaC5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp''@;'; put 'put ''bGQoaCl9fXNob3dTdmcoKXt3aW5kb3cub3Blbih0aGlzLmdldFNWR1VSTCgpLCJfYmxhbmsiKX1idWlsZEdyYXBoKGgpe3RoaXMuZXZlbnRTZXJ2aWNlLmNsb3NlU2lkZWJhcigpLHRoaXMuZ3JhcGhMb2FkaW5nPSExLHRoaXMuZ3JhcGhSZW5kZXJpbmc9ITAsc2V0VGltZW91dCgoKT0+e1pt''@;'; put 'put ''ZS5ncmFwaHZpeigiI2dyYXBoIikuem9vbSghMCkudG90YWxNZW1vcnkoNjcxMDg4NjQpLmFkZEltYWdlKCJodHRwczovL2RhdGFjb250cm9sbGVyLmlvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzAxL2ZjMS5wbmciLCIzMHB4IiwiMzBweCIpLnJlbmRlckRvdCh0aGlzLnZpeklucHV0LCgp''@;'; put 'put ''PT57dGhpcy5ncmFwaFJlbmRlcmluZz0hMSx0aGlzLmlkbG9va3VwJiZ0aGlzLm1ha2VHcmFwaExpbmthYmxlKHRoaXMuaWRsb29rdXApLGgmJmgoKX0pfSwxMDApfWNvbnN0cnVjdE5hbWUoaCl7bGV0IHY9IiIseT0iIixDPSIiLEk9bDl0KCkuZm9ybWF0KCJZWU1NRERfSEhtbSIpO2lmKHRo''@;'; put 'put ''aXMubGlicmFyeUxpc3QmJnRoaXMubGlicmFyeUxpc3QubGVuZ3RoKXtsZXQgaj10aGlzLmxpYnJhcnlMaXN0LmZpbmQoY2U9PmNlLkxJQlJBUllJRD09dGhpcy5saWIpO2omJih2PWBfJHtqLkxJQlJBUllOQU1FfWApfWlmKHRoaXMudGFibGVzTGlzdCYmdGhpcy50YWJsZXNMaXN0Lmxlbmd0''@;'; put 'put ''aCl7bGV0IGo9dGhpcy50YWJsZXNMaXN0LmZpbmQoY2U9PmNlLlRBQkxFVVJJPT10aGlzLnRhYmxlKTtqJiYoeT1gXyR7ai5UQUJMRU5BTUV9YCl9aWYodGhpcy5jb2x1bW5zTGlzdCYmdGhpcy5jb2x1bW5zTGlzdC5sZW5ndGgpe2xldCBqPXRoaXMuY29sdW1uc0xpc3QuZmluZChjZT0+Y2Uu''@;'; put 'put ''Q09MVVJJPT10aGlzLmNvbHVtbik7aiYmKEM9YF8ke2ouQ09MTkFNRX1gKX1yZXR1cm5gJHt0aGlzLmRpcmVjdGlvblRleHQoKX0ke3Z9JHt5fSR7Q31fJHtJfS4ke2h9YH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobDApLEt0KEoxKSxLdChF''@;'; put 'put ''bCksS3QoVmQpLEt0KG11KSxLdChHaCksS3QoY2MpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWxpbmVhZ2UiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjU4LHZhcnM6MTEsY29uc3RzOltbMywic2Nyb2xsZWRUb0JvdHRvbSJd''@;'; put 'put ''LFsiY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwidy0xMDAgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbImNsYXNzIiwibm8tdGFibGUtc2VsZWN0ZWQiLDQsIm5nSWYiXSxb''@;'; put 'put ''NCwibmdJZiJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwibW9kYWwtZm9vdGVyIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iXSxbMSwiYmlnbGluZWFnZS1yb3ciLCJtYi0waSJdLFsidHlwZSIsIm51''@;'; put 'put ''bWJlciIsIm1pbiIsIjEiLCJwbGFjZWhvbGRlciIsIk1heCBkZXB0aCB2YWx1ZSIsMSwiY2xyLWlucHV0IiwibWF4LWRlcHRoLWlucHV0Il0sWyJtYXhEZXB0aERvdCIsIiJdLFsxLCJtYi0yMCJdLFsxLCJiaWdsaW5lYWdlLXJvdyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNt''@;'; put 'put ''IiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwibXQtMy1uZWdhdGl2ZSIsMywiZGlzYWJsZWQiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIs''@;'; put 'put ''NCwiY2xySWZPcGVuIl0sWyJtYXhEZXB0aCIsIiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwi''@;'; put 'put ''bmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMs''@;'; put 'put ''ImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsci1leHBhbmRlZCIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIs''@;'; put 'put ''MywiY2xpY2siXSxbInNoYXBlIiwicmFjay1zZXJ2ZXIiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFibGVz''@;'; put 'put ''IiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hUcmVlSW5wdXQiLCIiXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImlkIiwiY2xpY2siXSxbInNoYXBlIiwidGFibGUiXSxbImNscklu''@;'; put 'put ''cHV0IiwiIiwicGxhY2Vob2xkZXIiLCJDb2x1bW5zIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsic2hhcGUiLCJvYmplY3RzIl0sWzEsInct''@;'; put 'put ''MTAwIiwidGV4dC1jZW50ZXIiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItc20iXSxbMSwibm8tdGFibGUtc2VsZWN0ZWQiXSxbInNoYXBlIiwid2FybmluZy1zdGFuZGFyZCIsInNpemUiLCI2MCIsMSwiaXMtaW5mbyIsImljb24tZGMtZmlsbCJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdy''@;'; put 'put ''YXkiXSxbImNsYXNzIiwiY2FyZC1oZWFkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1ibG9jayJdLFsxLCJmb3JtLWJsb2NrIiwic3ciLCJwb3NpdGlvbi1yZWxhdGl2ZSIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRl''@;'; put 'put ''ciJdLFsxLCJsaW5hZ2UtdGl0bGUtd3JhcHBlciIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciIsImZvbnQtd2VpZ2h0LWJvbGQiLCJwb3NpdGlvbi1hYnNvbHV0ZSJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTEyIHRleHQtY2VudGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIiw0''@;'; put 'put ''LCJuZ0lmIl0sWzMsIm10LTIiLDQsIm5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgcGItMTAiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJwYi0xMCJdLFszLCJy''@;'; put 'put ''b3V0ZXJMaW5rIl0sWzEsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNlbnRlciIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1lbmQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJidG4tZ3JvdXAiLCJkLWJsb2NrIl0sWzEsInJhZGlvIiwi''@;'; put 'put ''YnRuIiwzLCJjbGljayJdLFsidHlwZSIsInJhZGlvIiwibmFtZSIsImJ0bi1ncm91cC1kZW1vLXJhZGlvcyIsMywiY2hlY2tlZCJdLFsxLCJtci0xMCJdLFsiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIiwxLCJidG4iLCJidG4taW5mby1vdXRsaW5lIiwzLCJkaXNhYmxlZCJdLFsiY2xhc3MiLCJk''@;'; put 'put ''LWZsZXggYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0Il0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIl0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImQtZmxleCIsImFsaWduLWl0ZW1z''@;'; put 'put ''LWNlbnRlciJdLFsidHlwZSIsImNoZWNrYm94IiwiY2xyQ2hlY2tib3giLCIiLCJuYW1lIiwicmVmcmVzaENhY2hlIiwzLCJuZ01vZGVsIiwiY2hhbmdlIiwibmdNb2RlbENoYW5nZSJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsiY2xhc3MiLCJzcGlubmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInBv''@;'; put 'put ''c2l0aW9uLXJlbGF0aXZlIiw0LCJuZ0lmIl0sWzEsInNwaW5uZXIiXSxbMSwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiZ3JhcGgtcmVuZGVyLXNwaW5uZXIiXSxbImNsYXNzIiwic3Bpbm5lciBzcGlubmVyLXNtIiw0LCJuZ0lmIl0sWyJpZCIsImdyYXBoIl1dLHRlbXBsYXRlOmZ1bmN0aW9u''@;'; put 'put ''KGgsdil7aWYoMSZoKXtjb25zdCB5PXlpKCk7dHQoMCwiYXBwLXNpZGViYXIiLDApLFpuKCJzY3JvbGxlZFRvQm90dG9tIixmdW5jdGlvbigpe3JldHVybiB2LmxvYWRNb3JlTGlicmFyaWVzKCl9KSx0dCgxLCJjbHItdHJlZSIpLG5uKDIsT3Z0LDYsMywiY2xyLXRyZWUtbm9kZSIsMSksbm4o''@;'; put 'put ''Myx6dnQsMiwxLCJuZy1jb250YWluZXIiLDIpLGl0KCksbm4oNCxHdnQsMywwLCJkaXYiLDMpLGl0KCksdHQoNSwiZGl2Iiw0KSg2LCJkaXYiLDUpLG5uKDcsV3Z0LDQsMCwiZGl2Iiw2KSxubig4LGk5dCw4LDQsIm5nLWNvbnRhaW5lciIsNyksaXQoKSgpLHR0KDksImNsci1tb2RhbCIsOCko''@;'; put 'put ''MTAsImgzIiw5KSxXdCgxMSwiTGltaXQgRGVwdGgiKSxpdCgpLHR0KDEyLCJkaXYiLDEwKSgxMywicCIpLFd0KDE0LCJFbnRlciB0aGUgZGVwdGggbnVtYmVyIHlvdSB3b3VsZCBsaWtlIHRvIGxpbWl0IERPVCByZW5kZXJpbmcgdG86IiksaXQoKSgpLHR0KDE1LCJkaXYiLDExKSgxNiwiZGl2''@;'; put 'put ''IiwxMiksYnIoMTcsImlucHV0IiwxMywxNCksaXQoKSx0dCgxOSwiY2xyLWNvbnRyb2wtaGVscGVyIiwxNSksV3QoMjAsIlRvIHJlbmRlciB3aXRoIHVubGltaXRlZCBkZXB0aCwgbGVhdmUgdGhlIGlucHV0IGVtcHR5IiksaXQoKSx0dCgyMSwiZGl2IiwxNikoMjIsImJ1dHRvbiIsMTcpLFpu''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5saW1pdERvdERlcHRoPSExfSksV3QoMjMsIiBDYW5jZWwgIiksaXQoKSx0dCgyNCwiYnV0dG9uIiwxNyksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoeSk7Y29uc3QgST11YSgxOCk7cmV0dXJuIHYucmVzdWJtaXRXaXRoTWF4RGVwdGgoSS52''@;'; put 'put ''YWx1ZSksYnQodi5saW1pdERvdERlcHRoPSExKX0pLFd0KDI1LCIgUmVzdWJtaXQgIiksaXQoKSgpKCkoKSx0dCgyNiwiY2xyLW1vZGFsIiw4KSgyNywiaDMiLDkpLFd0KDI4LCJXYXJuaW5nIiksaXQoKSx0dCgyOSwiZGl2IiwxMCkoMzAsInAiKSxXdCgzMSksaXQoKSgpLHR0KDMyLCJkaXYi''@;'; put 'put ''LDExKSgzMywiZGl2IiwxNikoMzQsInAiKSxXdCgzNSwiUmVuZGVyIGFueXdheSAodGhpcyBtYXkgdGFrZSBhIGxvbmcgdGltZSkiKSxpdCgpLHR0KDM2LCJidXR0b24iLDE3KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY29udGludWVSZW5kZXJpbmdHcmFwaCgpfSksV3QoMzcs''@;'; put 'put ''IiBSZW5kZXIgIiksaXQoKSgpLHR0KDM4LCJkaXYiLDE2KSgzOSwicCIpLFd0KDQwLCJEb3dubG9hZCB0aGUgcmVzdWx0IChQTkcgJiBTVkcgcmVxdWlyZSByZW5kZXJpbmcpIiksaXQoKSx0dCg0MSwiY2xyLWRyb3Bkb3duIikoNDIsImJ1dHRvbiIsMTgpLFd0KDQzLCIgRG93bmxvYWQgIiks''@;'; put 'put ''YnIoNDQsImNsci1pY29uIiwxOSksaXQoKSxubig0NSxhOXQsNiwxLCJjbHItZHJvcGRvd24tbWVudSIsMjApLGl0KCkoKSx0dCg0NiwiZGl2IiwxNikoNDcsInAiKSxXdCg0OCwiUmVzdWJtaXQgd2l0aCBhIG1heC1kZXB0aCAoc3BlY2lmeSBkZXB0aCkiKSxpdCgpLGJyKDQ5LCJpbnB1dCIs''@;'; put 'put ''MTMsMjEpLHR0KDUxLCJidXR0b24iLDE3KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YSh5KTtjb25zdCBJPXVhKDUwKTtyZXR1cm4gYnQodi5yZXN1Ym1pdFdpdGhNYXhEZXB0aChJLnZhbHVlKSl9KSxXdCg1MiwiIFJlc3VibWl0ICIpLGl0KCkoKSx0dCg1MywiZGl2IiwxNikoNTQsInAiKSxX''@;'; put 'put ''dCg1NSwiQ2FuY2VsIHRoaXMgc3VibWlzc2lvbiIpLGl0KCksdHQoNTYsImJ1dHRvbiIsMTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpfSksV3QoNTcsIiBDYW5jZWwgIiksaXQoKSgpKCkoKX0yJmgmJihzdCgyKSx4dCgibmdJZiIsdi5s''@;'; put 'put ''aWJyYXJ5TGlzdCksc3QoMSkseHQoIm5nRm9yT2YiLHYubGlicmFyeUxpc3QpLHN0KDEpLHh0KCJuZ0lmIix2LmxpYnJhcmllc1BhZ2luZyksc3QoMykseHQoIm5nSWYiLCF2LmNvbHVtbiYmIXYudGFibGUpLHN0KDEpLHh0KCJuZ0lmIix2LmNvbHVtbnx8di50YWJsZSksc3QoMSkseHQoImNs''@;'; put 'put ''ck1vZGFsT3BlbiIsdi5saW1pdERvdERlcHRoKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLHN0KDE3KSx4dCgiY2xyTW9kYWxPcGVuIixudWxsIT09di5sYXJnZURvdEZpbGVMaW5lcykoImNsck1vZGFsQ2xvc2FibGUiLCExKSxzdCg1KSxVaSgiIFRoZSBnZW5lcmF0ZWQgZG90IGZpbGUgaGFz''@;'; put 'put ''ICIsdi5sYXJnZURvdEZpbGVMaW5lcywiIGxpbmVzLiBSZW5kZXJpbmcgbWF5IHRha2UgYSBsb25nIHRpbWUsIGhvdyB3b3VsZCB5b3UgbGlrZSB0byBwcm9jZWVkPyAiKSxzdCgxMSkseHQoImRpc2FibGVkIiwhdi5jb2x1bW4mJiF2LnRhYmxlKSl9LGRlcGVuZGVuY2llczpbcWwsQm8scDEs''@;'; put 'put ''dWgsanMsX3MsTzcsU3YsX2csZk8sRzIsYTMsbDMsUmkseXcsYXMseVMsQXcsdncsd3YsTXYsRFMsTFMsaE8sUFNdLHN0eWxlczpbIi50b2dnbGUtc3dpdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9Y2hlY2tib3hdW19uZ2NvbnRlbnQtJUNPTVAlXTpjaGVja2VkICsgbGFi''@;'; put 'put ''ZWxbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTEhaW1wb3J0YW50O3RyYW5zaXRpb246LjE1cyBlYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9I2dyYXBo''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6Y2FsYygxMDB2aCAtIDE5NXB4KTtvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2U0ZTRlNDttYXJnaW4tdG9wOjEwcHh9LnNlbGVjdGlvbi13cmFwcGVy''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21heC13aWR0aDo2NzBweH0uY29sdW1uLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZDhlM2U5O2NvbG9yOiMwMDB9LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNXJlbSFpbXBvcnRh''@;'; put 'put ''bnR9LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICAuY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDpjYWxjKDEwMHZoIC0gMTIwcHgpfS5jb250ZW50LWFyZWFbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmQtYmxv''@;'; put 'put ''Y2tbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVyZW0gLjM1cmVtIWltcG9ydGFudH1jbHItdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS5ncmFwaC1yZW5kZXItc3Bpbm5lcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjEwcHh9LmJpZ2xpbmVhZ2Utcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNl''@;'; put 'put ''LWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweH0ubW9kYWwtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowfS5saW5lYWdlLXRpdGxlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MTJweH0u''@;'; put 'put ''bWF4LWRlcHRoLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfUBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCl7LnRvZ2dsZS1zd2l0Y2gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjIwcHh9fSJdfSksZH0pKCk7ZnVuY3Rpb24gczl0KGQsZyl7''@;'; put 'put ''aWYoMSZkJiYodHQoMCwib3B0aW9uIiwxMCksV3QoMSksaXQoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O1U0KCJ2YWx1ZSIsaCksc3QoMSksVWkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gdTl0KGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsMTcpfWZ1bmN0aW9uIGM5dChkLGcpe2lmKDEm''@;'; put 'put ''ZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pY29uIiwxOCksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgyKTtyZXR1cm4geS5tZXRhRGF0YVNlYXJjaD0iIixidCh5Lm1ldGFMaXN0T25GaWx0ZXIoKSl9KSxpdCgpfX1mdW5jdGlvbiBmOXQoZCxnKXtpZigxJmQpe2Nv''@;'; put 'put ''bnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiwxMSkoMSwiZGl2IiwxMikoMiwiaW5wdXQiLDEzLDE0KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoKS5tZXRhRGF0YVNlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYSho''@;'; put 'put ''KSxidChVdCgpLm1ldGFMaXN0T25GaWx0ZXIoKSl9KSxpdCgpLG5uKDQsdTl0LDEsMCwiY2xyLWljb24iLDE1KSxubig1LGM5dCwxLDAsImNsci1pY29uIiwxNiksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgzKSx2PVV0KCk7c3QoMikseHQoIm5nTW9kZWwiLHYubWV0YURhdGFTZWFyY2gp''@;'; put 'put ''LHN0KDIpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSxzdCgxKSx4dCgibmdJZiIsaC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIGg5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDIwKSxabigiY2xpY2siLGZ1bmN0aW9uKHkpe2EoaCk7Y29u''@;'; put 'put ''c3QgQz1VdCgpLiRpbXBsaWNpdCxJPVV0KCk7cmV0dXJuIGJ0KEkudHJlZU5vZGVDbGlja2VkKHksQyxJLm1ldGFEYXRhTGlzdCkpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLiRpbXBsaWNpdC5leHBhbmRlZD15KX0pLHR0KDEsInAiLDIx''@;'; put 'put ''KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCkuJGltcGxpY2l0LEM9VXQoKTtyZXR1cm4gQy5tZXRhRGF0YUlkPXkuSUQsYnQoQy5tZXRhRGF0YU9uQ2xpY2soQy5tZXRhRGF0YUlkLHkpKX0pLGJyKDIsImNsci1pY29uIiwyMiksV3QoMyksaXQoKSgpfWlmKDImZCl7''@;'; put 'put ''Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDt4dCgiY2xyRXhwYW5kZWQiLGguZXhwYW5kZWQpKCJjbHJMb2FkaW5nIixoLmxvYWRpbmdUYWJsZXMmJiFoLnRhYmxlcyksc3QoMyksVWkoIiAiLGguSUQsIiAiKX19ZnVuY3Rpb24gZDl0KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxoOXQsNCwzLCJj''@;'; put 'put ''bHItdHJlZS1ub2RlIiwxOSksTzAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLHh0KCJuZ0lmIiwhaC5oaWRkZW4pfX1mdW5jdGlvbiBwOXQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDIzKSxicigxLCJjbHItaWNvbiIsMjQpLHR0KDIsImgzIiwyNSksV3QoMywiUGxlYXNlIHNl''@;'; put 'put ''bGVjdCBhIHR5cGUiKSxpdCgpKCkpfWZ1bmN0aW9uIGc5dChkLGcpezEmZCYmKHR0KDAsImg0IiksV3QoMSwiTG9hZGluZyBtZXRhZGF0YSB0eXBlcyIpLGl0KCkpfWZ1bmN0aW9uIG05dChkLGcpezEmZCYmKHR0KDAsImg0IiksV3QoMSwiTG9hZGluZyBtZXRhZGF0YSBvYmplY3RzIiksaXQo''@;'; put 'put ''KSl9ZnVuY3Rpb24gdjl0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiksbm4oMSxnOXQsMiwwLCJoNCIsMjgpLG5uKDIsbTl0LDIsMCwiaDQiLDI4KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nSWYiLGgubWV0YXR5cGVzTG9hZGluZyksc3QoMSkseHQoIm5nSWYiLCFo''@;'; put 'put ''Lm1ldGF0eXBlc0xvYWRpbmcpfX1mdW5jdGlvbiBBOXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDI2KSgxLCJzcGFuIiwyNyksV3QoMiwiIExvYWRpbmcuLi4gIiksaXQoKSxubigzLHY5dCwzLDIsImRpdiIsMjgpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDMpLHh0KCJuZ0lmIixo''@;'; put 'put ''LmxvYWRpbmcpfX1mdW5jdGlvbiB5OXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDM1KSgxLCJpbnB1dCIsMzYsMzcpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgyKS5tZXRhT2JqZWN0U2VhcmNoPXkpfSkoImtleXVwIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KDIpLm1ldGFPYmplY3RPbkZpbHRlcigpKX0pLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoMik7c3QoMSkseHQoIm5nTW9kZWwiLGgubWV0YU9iamVjdFNlYXJjaCl9fWZ1bmN0aW9uIHc5dChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDQx''@;'; put 'put ''KX1mdW5jdGlvbiBiOXQoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwyMil9ZnVuY3Rpb24gXzl0KGQsZyl7aWYoMSZkJiYodHQoMCwicCIsNTIpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDtzdCgxKSxVaSgiICIsaC5VUkksIiAiKX19ZnVuY3Rpb24gQzl0KGQs''@;'; put 'put ''Zyl7aWYoMSZkJiYodHQoMCwiY2xyLXRyZWUtbm9kZSIsNDcpKDEsImRpdiIsNDgpLG5uKDIsdzl0LDEsMCwiY2xyLWljb24iLDQ5KSxubigzLGI5dCwxLDAsImNsci1pY29uIiw1MCksV3QoNCksbm4oNSxfOXQsMiwxLCJwIiw1MSksaXQoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7''@;'; put 'put ''eHQoImNsckV4cGFuZGFibGUiLCEwKSxzdCgxKSxIaSgib2JqZWN0LWhlYWRlciIsIWguY291bnQpLHN0KDEpLHh0KCJuZ0lmIiwhaC5jb3VudCksc3QoMSkseHQoIm5nSWYiLGguY291bnQpLHN0KDEpLFVpKCIgIixoLmRpc3BsYXksIiAiKSxzdCgxKSx4dCgibmdJZiIsIWguY291bnQpfX1m''@;'; put 'put ''dW5jdGlvbiBrOXQoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItdHJlZSIsNDUpLG5uKDEsQzl0LDYsNywiY2xyLXRyZWUtbm9kZSIsNDYpLFplKDIsImFzeW5jIiksaXQoKSksMiZkKXtjb25zdCBoPVV0KDYpO3h0KCJjbHJMYXp5IiwhMCksc3QoMSkseHQoImNsclJlY3Vyc2l2ZUZvck9mIixT''@;'; put 'put ''dCgyLDMsaC5yb290JCkpKCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsaC5nZXRDaGlsZHJlbil9fWZ1bmN0aW9uIFM5dChkLGcpe2lmKDEmZCYmKHR0KDAsImNsci1hY2NvcmRpb24tY29udGVudCIpLG5uKDEsazl0LDMsNSwiY2xyLXRyZWUiLDQ0KSxpdCgpKSwyJmQpe2NvbnN0IGg9''@;'; put 'put ''VXQoNSk7c3QoMSkseHQoIm5nSWYiLGguc2hvd0FjYyl9fWZ1bmN0aW9uIE05dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1hY2NvcmRpb24tcGFuZWwiLDQwKSxabigiY2xyQWNjb3JkaW9uUGFuZWxPcGVuQ2hhbmdlIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQo''@;'; put 'put ''KS4kaW1wbGljaXQsST1VdCgzKTtyZXR1cm4gYnQoeT9JLnBhbmVsQ2hhbmdlKHksQyk6IiIpfSksdHQoMSwiY2xyLWFjY29yZGlvbi10aXRsZSIpLGJyKDIsImNsci1pY29uIiw0MSksV3QoMyksdHQoNCwicCIsNDIpLFd0KDUpLGl0KCkoKSxubig2LFM5dCwyLDEsImNsci1hY2NvcmRpb24t''@;'; put 'put ''Y29udGVudCIsNDMpLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0O3N0KDMpLFVpKCIgIixoLk5BTUUsIiAiKSxzdCgyKSxqaShoLklEKX19ZnVuY3Rpb24gRTl0KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxNOXQsNywyLCJjbHItYWNjb3JkaW9uLXBhbmVsIiwzOSksTzAo''@;'; put 'put ''KSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLHh0KCJuZ0lmIiwhaC5oaWRkZW4pfX1mdW5jdGlvbiB4OXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDM4KSgxLCJjbHItYWNjb3JkaW9uIiksbm4oMixFOXQsMiwxLCJuZy1jb250YWluZXIiLDQpLGl0KCkoKSksMiZkKXtjb25z''@;'; put 'put ''dCBoPVV0KDIpO3N0KDIpLHh0KCJuZ0Zvck9mIixoLm1ldGFPYmplY3RTaG93TGlzdCl9fWZ1bmN0aW9uIFQ5dChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDQxKX1mdW5jdGlvbiBJOXQoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwyMil9ZnVuY3Rpb24gRDl0KGQsZyl7aWYoMSZkJiYo''@;'; put 'put ''dHQoMCwicCIsNTIpLFd0KDEpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDtzdCgxKSxVaSgiICIsaC5VUkksIiAiKX19ZnVuY3Rpb24gTDl0KGQsZyl7aWYoMSZkJiYodHQoMCwiY2xyLXRyZWUtbm9kZSIsNDcpKDEsImRpdiIsNDgpLG5uKDIsVDl0LDEsMCwiY2xyLWljb24i''@;'; put 'put ''LDQ5KSxubigzLEk5dCwxLDAsImNsci1pY29uIiw1MCksV3QoNCksbm4oNSxEOXQsMiwxLCJwIiw1MSksaXQoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7eHQoImNsckV4cGFuZGFibGUiLCEwKSxzdCgxKSxIaSgib2JqZWN0LWhlYWRlciIsIWguY291bnQpLHN0KDEpLHh0KCJuZ0lm''@;'; put 'put ''IiwhaC5jb3VudCksc3QoMSkseHQoIm5nSWYiLGguY291bnQpLHN0KDEpLFVpKCIgIixoLmRpc3BsYXksIiAiKSxzdCgxKSx4dCgibmdJZiIsIWguY291bnQpfX1mdW5jdGlvbiBPOXQoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItdHJlZSIsNDUpLG5uKDEsTDl0LDYsNywiY2xyLXRyZWUtbm9k''@;'; put 'put ''ZSIsNDYpLFplKDIsImFzeW5jIiksaXQoKSksMiZkKXtjb25zdCBoPVV0KDQpO3h0KCJjbHJMYXp5IiwhMCksc3QoMSkseHQoImNsclJlY3Vyc2l2ZUZvck9mIixTdCgyLDMsaC5yb290JCkpKCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsaC5nZXRDaGlsZHJlbil9fWZ1bmN0aW9uIFI5''@;'; put 'put ''dChkLGcpe2lmKDEmZCYmKEwwKDApLHR0KDEsImRpdiIsNTMpLGJyKDIsImNsci1pY29uIiw0MSksdHQoMywiZGl2Iiw1NCkoNCwicCIsNTUpLFd0KDUpLGl0KCksdHQoNiwicCIsNTYpLFd0KDcpLGl0KCkoKSgpLG5uKDgsTzl0LDMsNSwiY2xyLXRyZWUiLDQ0KSxPMCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9Zy4kaW1wbGljaXQsdj1VdCgzKTtzdCg1KSxVaSgiICIsaC5OQU1FLCIgIiksc3QoMiksVWkoIiAiLGguSUQsIiAiKSxzdCgxKSx4dCgibmdJZiIsdi5zaG93QWNjKX19ZnVuY3Rpb24gQjl0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IiwzOCksbm4oMSxSOXQsOSwzLCJuZy1jb250YWlu''@;'; put 'put ''ZXIiLDQpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxKSx4dCgibmdGb3JPZiIsaC5tZXRhT2JqZWN0U2hvd0xpc3QpfX1mdW5jdGlvbiBQOXQoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItZGctcm93IikoMSwiY2xyLWRnLWNlbGwiKSxXdCgyKSxpdCgpLHR0KDMsImNsci1kZy1jZWxs''@;'; put 'put ''IiksV3QoNCksaXQoKSx0dCg1LCJjbHItZGctY2VsbCIpLFd0KDYpLGl0KCkoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDIpLGppKGguVFlQRSksc3QoMiksamkoaC5OQU1FKSxzdCgyKSxqaShoLlZBTFVFKX19Y29uc3QgRjl0PWZ1bmN0aW9uKCl7cmV0dXJuWzEwLDIwLDUwLDEw''@;'; put 'put ''MF19O2Z1bmN0aW9uIEg5dChkLGcpe2lmKDEmZCYmKHR0KDAsImNsci1kYXRhZ3JpZCIsNTcpKDEsImNsci1kZy1jb2x1bW4iKSxXdCgyLCIgVFlQRSAiKSxicigzLCJjbHItZGctc3RyaW5nLWZpbHRlciIsNTgpLGl0KCksdHQoNCwiY2xyLWRnLWNvbHVtbiIpLFd0KDUsIiBOQU1FICIpLGJy''@;'; put 'put ''KDYsImNsci1kZy1zdHJpbmctZmlsdGVyIiw1OCksaXQoKSx0dCg3LCJjbHItZGctY29sdW1uIiksV3QoOCwiIFZBTFVFICIpLGJyKDksImNsci1kZy1zdHJpbmctZmlsdGVyIiw1OCksaXQoKSxubigxMCxQOXQsNywzLCJjbHItZGctcm93Iiw1OSksdHQoMTEsImNsci1kZy1mb290ZXIiKSgx''@;'; put 'put ''MiwiY2xyLWRnLXBhZ2luYXRpb24iLDYwLDYxKSgxNCwiY2xyLWRnLXBhZ2Utc2l6ZSIsNjIpLFd0KDE1LCJBdHRyaWJ1dGVzIHBlciBwYWdlIiksaXQoKSxXdCgxNiksaXQoKSgpKCkpLDImZCl7Y29uc3QgaD11YSgxMyksdj1VdCgyKTtzdCgzKSx4dCgiY2xyRGdTdHJpbmdGaWx0ZXIiLHYu''@;'; put 'put ''dHlwZUZpbHRlciksc3QoMykseHQoImNsckRnU3RyaW5nRmlsdGVyIix2Lm5hbWVGaWx0ZXIpLHN0KDMpLHh0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsdi52YWx1ZUZpbHRlciksc3QoMSkseHQoImNsckRnSXRlbXNPZiIsdi5tZXRhT2JqZWN0QXR0cmlidXRlcyksc3QoMikseHQoImNsckRnUGFn''@;'; put 'put ''ZVNpemUiLDEwKSxzdCgyKSx4dCgiY2xyUGFnZVNpemVPcHRpb25zIixscyg5LEY5dCkpLHN0KDIpLFBoKCIgIixoLmZpcnN0SXRlbSsxLCIgLSAiLGgubGFzdEl0ZW0rMSwiIG9mICIsaC50b3RhbEl0ZW1zLCIgQXR0cmlidXRlcyAiKX19ZnVuY3Rpb24gTjl0KGQsZyl7aWYoMSZkJiYodHQo''@;'; put 'put ''MCwiZGl2IiwyOSkoMSwiZGl2IiwzMCksbm4oMix5OXQsMywxLCJkaXYiLDMxKSxicigzLCJiciIpLG5uKDQseDl0LDMsMSwiZGl2IiwzMiksbm4oNSxCOXQsMiwxLCJkaXYiLDMyKSxpdCgpLHR0KDYsImRpdiIsMzMpKDcsImgzIiksV3QoOCksaXQoKSxubig5LEg5dCwxNywxMCwiY2xyLWRh''@;'; put 'put ''dGFncmlkIiwzNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoKTtzdCgyKSx4dCgibmdJZiIsaC5tZXRhT2JqZWN0TGlzdCYmIWgub2JqZWN0Um91dGUpLHN0KDIpLHh0KCJuZ0lmIiwhaC5vYmplY3RWaWV3KSxzdCgxKSx4dCgibmdJZiIsaC5vYmplY3RWaWV3KSxzdCgzKSxqaShoLmFzc29P''@;'; put 'put ''YmplY3RTZWxlY3RlZCksc3QoMSkseHQoIm5nSWYiLGguc2hvd1RhYmxlKX19bGV0IHptZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxqKXt0aGlzLmV2ZW50U2VydmljZT1oLHRoaXMuc2FzU2VydmljZT12LHRoaXMuaGVscGVyU2VydmljZT15LHRoaXMubG9jYXRpb249''@;'; put 'put ''Qyx0aGlzLnJvdXRlcj1JLHRoaXMucm91dGU9aix0aGlzLm1ldGFEYXRhU2VhcmNoPSIiLHRoaXMubWV0YU9iamVjdFNlYXJjaD0iIix0aGlzLm1ldGFPYmplY3RBc3NvY2lhdGlvbnM9W10sdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLnNob3dUYWJsZT0hMSx0aGlzLnNob3dB''@;'; put 'put ''Y2M9ITEsdGhpcy5tZXRhRGF0YUlkPSIiLHRoaXMubG9hZGluZz0hMCx0aGlzLm1ldGF0eXBlc0xvYWRpbmc9ITAsdGhpcy5tZXRhT2JqZWN0U2l6ZT0yMDAsdGhpcy5hc3NvVHlwZVNlbGVjdGVkPSIiLHRoaXMuYXNzb09iamVjdFNlbGVjdGVkPSIiLHRoaXMucmVwb3NpdG9yeT0iIix0aGlz''@;'; put 'put ''Lm9iamVjdFJvdXRlPSExLHRoaXMuc2hvd0RhdGE9ITEsdGhpcy5vYmplY3RWaWV3PSExLHRoaXMuZ2V0Q2hpbGRyZW49Y2U9PmNlLmNvdW50P1YwKGNlLmRldGFpbHMpOnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFkZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2Jq''@;'; put 'put ''ZWN0dXJpOmNlLkFTU09DVVJJfV19KS50aGVuKFJlPT57dGhpcy5zaG93VGFibGU9ITAsdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1SZS5hdHRyaWJ1dGVzLHRoaXMuYXNzb09iamVjdFNlbGVjdGVkPWNlLk5BTUU7bGV0IE5lPXRoaXMucm91dGVyLnVybDtyZXR1cm4gdGhpcy5sb2NhdGlv''@;'; put 'put ''bi5yZXBsYWNlU3RhdGUodGhpcy5vYmplY3RSb3V0ZT9OZS5zbGljZSgwLE5lLmxhc3RJbmRleE9mKCJvYmplY3QiKSkrIm9iamVjdC8iK2NlLkFTU09DVVJJLnNsaWNlKDErY2UuQVNTT0NVUkkuaW5kZXhPZigiXFwiKSk6TmUrIi9vYmplY3QvIitjZS5BU1NPQ1VSSS5zbGljZSgxK2NlLkFT''@;'; put 'put ''U09DVVJJLmluZGV4T2YoIlxcIikpKSx0aGlzLmdldEFzc29zaWF0aW9uc0NvdW50KFJlLmFzc29jaWF0aW9ucyl9KSx0aGlzLmRlYm91bmNlPSExfW5nT25Jbml0KCl7cmkudmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvbWV0YWRhdGEiLHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygi''@;'; put 'put ''L3ZpZXcvbWV0YWRhdGEvb2JqZWN0LyIpJiYodGhpcy5vYmplY3RSb3V0ZT0hMCx0aGlzLm9iamVjdFZpZXc9ITApLHRoaXMucGFnZVNpemU9NSxyaS5tZXRhZGF0YS5tZXRhRGF0YUxpc3QmJnJpLm1ldGFkYXRhLm1ldGFSZXBvc2l0b3JpZXMmJiF0aGlzLm9iamVjdFJvdXRlPyh0aGlzLm1l''@;'; put 'put ''dGFEYXRhTGlzdD1yaS5tZXRhZGF0YS5tZXRhRGF0YUxpc3QsdGhpcy5yZXBvc2l0b3JpZXM9cmkubWV0YWRhdGEubWV0YVJlcG9zaXRvcmllcyx0aGlzLnJlcG9zaXRvcnk9cmkubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5LHRoaXMubG9hZGluZz0hMSx0aGlzLm1ldGF0eXBlc0xvYWRp''@;'; put 'put ''bmc9ITEsdGhpcy5tZXRhRGF0YVNlYXJjaD1yaS5tZXRhZGF0YS5tZXRhRGF0YVNlYXJjaCk6KHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGF0eXBlcyIsbnVsbCkudGhlbihoPT57dGhpcy5tZXRhRGF0YUxpc3Q9aC50eXBlcyxyaS5tZXRhZGF0YS5tZXRhRGF0YUxpc3Q9''@;'; put 'put ''dGhpcy5tZXRhRGF0YUxpc3QsdGhpcy5sb2FkaW5nPSExLHRoaXMubWV0YXR5cGVzTG9hZGluZz0hMX0pLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFyZXBvcyIsbnVsbCkudGhlbihoPT57bGV0IHY9ITE7dGhpcy5yZXBvc2l0b3JpZXM9W107Zm9yKGxldCB5PTA7eTxo''@;'; put 'put ''Lm91dHJlcG9zLmxlbmd0aDt5KyspdGhpcy5yZXBvc2l0b3JpZXMucHVzaChoLm91dHJlcG9zW3ldLk5BTUUpLCJGb3VuZGF0aW9uIj09PWgub3V0cmVwb3NbeV0uTkFNRSYmKHY9ITApO2lmKHRoaXMucmVwb3NpdG9yeT12PyJGb3VuZGF0aW9uIjpoLm91dHJlcG9zWzBdLk5BTUUscmkubWV0''@;'; put 'put ''YWRhdGEubWV0YVJlcG9zaXRvcmllcz10aGlzLnJlcG9zaXRvcmllcyxyaS5tZXRhZGF0YS5zZWxlY3RlZFJlcG9zaXRvcnk9dGhpcy5yZXBvc2l0b3J5LHRoaXMub2JqZWN0Um91dGUpe3RoaXMuZXZlbnRTZXJ2aWNlLmNsb3NlU2lkZWJhcigpLHRoaXMuc2hvd0RhdGE9ITA7bGV0IHk9IiIs''@;'; put 'put ''Qz10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5vYmplY3RJRDt0aGlzLm1ldGFPYmplY3RMaXN0PVtdLHRoaXMubWV0YU9iamVjdExpc3QucHVzaCh7SUQ6QyxOQU1FOnl9KSx0aGlzLm1ldGFPYmplY3RTaG93TGlzdD10aGlzLm1ldGFPYmplY3RMaXN0LHRoaXMubWV0YU9iamVjdE9uQ2xp''@;'; put 'put ''Y2sodGhpcy5tZXRhT2JqZWN0U2hvd0xpc3RbMF0uSUQsdGhpcy5tZXRhT2JqZWN0U2hvd0xpc3RbMF0pfX0pKX10cmVlTm9kZUNsaWNrZWQoaCx2LHkpeyJDb2xsYXBzZSI9PT1oLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyh5LHYpfWNvbGxhcHNlVHJlZUl0ZW1zKGgs''@;'; put 'put ''dil7aC5mb3JFYWNoKHk9PntKU09OLnN0cmluZ2lmeSh5KSE9PUpTT04uc3RyaW5naWZ5KHYpJiYoeS5leHBhbmRlZD0hMSl9KX1tZXRhRGF0YU9uQ2xpY2soaCx2KXt0aGlzLm9iamVjdFZpZXc9ITEsdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoIi92aWV3L21ldGFkYXRhIiksdGhpcy5z''@;'; put 'put ''aG93RGF0YT0hMSx0aGlzLmxvYWRpbmc9ITAsdGhpcy5zZWxlY3RtZXRhRGF0YShoLHYpfW1ldGFPYmplY3RPbkNsaWNrKGgsdil7dGhpcy5hc3NvT2JqZWN0U2VsZWN0ZWQ9IiAuICIsdGhpcy5zaG93QWNjPSExLHRoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9W10sdGhpcy5zZWxlY3RtZXRh''@;'; put 'put ''T2JqZWN0KGgsdil9c2VsZWN0bWV0YURhdGEoaCx2KXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFvYmplY3RzIix7U0FTQ29udHJvbFRhYmxlOlt7bWV0YXR5cGU6aCxyZXBvOnRoaXMucmVwb3Np''@;'; put 'put ''dG9yeX1dfSkudGhlbihDPT57dGhpcy5tZXRhT2JqZWN0TGlzdD1DLm9iamVjdHMsdGhpcy5nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyh0aGlzLm1ldGFPYmplY3RTaXplKSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5hc3NvVHlwZVNlbGVjdGVkPWgsdGhpcy5ldmVudFNlcnZpY2UuY2xvc2VTaWRl''@;'; put 'put ''YmFyKCksdGhpcy5zaG93RGF0YT0hMH0pfSl9c2VsZWN0bWV0YU9iamVjdChoLHYpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YWRldGFpbHMiLHtTQVNDb250cm9sVGFibGU6W3tvYmplY3R1cmk6''@;'; put 'put ''aH1dfSkudGhlbihDPT57dGhpcy5tZXRhT2JqZWN0QXNzb2NpYXRpb25zPUMuYXNzb2NpYXRpb25zLHRoaXMucm9vdCQ9VjAodGhpcy5nZXRBc3Nvc2lhdGlvbnNDb3VudChDLmFzc29jaWF0aW9ucykpLHRoaXMuc2hvd0FjYz0hMCx0aGlzLnNob3dUYWJsZT0hMDtsZXQgST1DLmF0dHJpYnV0''@;'; put 'put ''ZXMuZmluZChjZT0+Ik5hbWUiPT09Y2UuTkFNRSkuVkFMVUU7dGhpcy5hc3NvT2JqZWN0U2VsZWN0ZWQ9SSx2Lk5BTUU9STtsZXQgaj10aGlzLnJvdXRlci51cmw7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5vYmplY3RSb3V0ZT9qLnNsaWNlKDAsai5sYXN0SW5kZXhPZigib2Jq''@;'; put 'put ''ZWN0IikpKyJvYmplY3QvIitoLnNsaWNlKDEraC5pbmRleE9mKCJcXCIpKTpqKyIvb2JqZWN0LyIraC5zbGljZSgxK2guaW5kZXhPZigiXFwiKSkpLHRoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9Qy5hdHRyaWJ1dGVzfSl9KX1zZWxlY3RBc3Nvc2lhdGlvbnNEZXRhaWxzKGgsdil7cmV0dXJu''@;'; put 'put ''IHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhZGV0YWlscyIse1NBU0NvbnRyb2xUYWJsZTpbe29iamVjdHVyaTpofV19KS50aGVuKEM9Pnt0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPUMuYXR0cmlidXRlcyx0''@;'; put 'put ''aGlzLnNob3dUYWJsZT0hMH0pfSl9Z2V0QXNzb3NpYXRpb25zQ291bnQoaCl7bGV0IHY9bmV3IE1hcDtmb3IobGV0IEMgb2YgaCl7di5oYXMoQy5BU1NPQyl8fHYuc2V0KEMuQVNTT0Mse2NvdW50OjAsZGV0YWlsczpbXX0pO2xldCBJPXYuZ2V0KEMuQVNTT0MpO0kuY291bnQrKyxJLmRldGFp''@;'; put 'put ''bHMucHVzaCh7QVNTT0NVUkk6Qy5BU1NPQ1VSSSxOQU1FOkMuTkFNRSxkaXNwbGF5OkMuTkFNRSxVUkk6Qy5BU1NPQ1VSSS5zbGljZShDLkFTU09DVVJJLmluZGV4T2YoIjoiKSsxKX0pfWxldCB5PVtdO3JldHVybiB2LmZvckVhY2goZnVuY3Rpb24oQyxJKXt5LnB1c2goe0FTU09DOkksY291''@;'; put 'put ''bnQ6Qy5jb3VudCxkZXRhaWxzOkMuZGV0YWlscyxkaXNwbGF5OkkrIiAoICIrQy5jb3VudCsiICkifSl9KSx5fXNldFR5cGVBc3Nvc2lhdGlvbnMoaCl7bGV0IHY9W107Zm9yKGxldCB5IG9mIHRoaXMubWV0YU9iamVjdEFzc29jaWF0aW9ucyl5LkFTU09DPT09aCYmdi5wdXNoKHkpO3JldHVy''@;'; put 'put ''biB0aGlzLmFzc29zaWF0aW9uTmFtZXM9dix2fWFzc29zaWF0aW9uTmFtZU9uQ2xpY2soaCl7dGhpcy5hc3NvT2JqZWN0U2VsZWN0ZWQ9IiAuICIsdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLnNob3dUYWJsZT0hMSx0aGlzLnNlbGVjdEFzc29zaWF0aW9uc0RldGFpbHMoaCl9''@;'; put 'put ''bWV0YUxpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5tZXRhRGF0YUxpc3QsdGhpcy5tZXRhRGF0YVNlYXJjaCwiSUQiKSxyaS5tZXRhZGF0YS5tZXRhRGF0YVNlYXJjaD10aGlzLm1ldGFEYXRhU2VhcmNofW1ldGFPYmplY3RPbkZpbHRlcigp''@;'; put 'put ''e3RoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9W10sdGhpcy5oZWxwZXJTZXJ2aWNlLm1ldGFPYmplY3RPbkZpbHRlcih0aGlzLm1ldGFPYmplY3RMaXN0LHRoaXMubWV0YU9iamVjdFNlYXJjaCwiTkFNRSIpLHRoaXMuZ2V0TWV0YU9iamVjdEF0dHJpYnV0ZXModGhpcy5tZXRhT2JqZWN0U2l6''@;'; put 'put ''ZSkscmkubWV0YWRhdGEubWV0YU9iamVjdFNlYXJjaD10aGlzLm1ldGFPYmplY3RTZWFyY2h9Z2V0TWV0YU9iamVjdEF0dHJpYnV0ZXMoaCl7aWYodm9pZCAwIT09dGhpcy5tZXRhT2JqZWN0TGlzdCYmdGhpcy5tZXRhT2JqZWN0TGlzdC5sZW5ndGg+aCl7bGV0IHY9MCx5PS0xO2ZvcihsZXQg''@;'; put 'put ''Qz0wO0M8dGhpcy5tZXRhT2JqZWN0TGlzdC5sZW5ndGg7QysrKWlmKCh2b2lkIDA9PT10aGlzLm1ldGFPYmplY3RMaXN0W0NdLmhpZGRlbnx8ITE9PT10aGlzLm1ldGFPYmplY3RMaXN0W0NdLmhpZGRlbikmJnYrKyx2PT09aCl7eT1DO2JyZWFrfXRoaXMubWV0YU9iamVjdFNob3dMaXN0PS0x''@;'; put 'put ''IT09eT90aGlzLm1ldGFPYmplY3RMaXN0LnNsaWNlKDAseSk6dGhpcy5tZXRhT2JqZWN0TGlzdH1lbHNlIHRoaXMubWV0YU9iamVjdFNob3dMaXN0PXRoaXMubWV0YU9iamVjdExpc3R9cGFuZWxDaGFuZ2UoaCx2KXt0aGlzLmRlYm91bmNlfHwodGhpcy5tZXRhT2JqZWN0T25DbGljayh2LklE''@;'; put 'put ''LHYpLHRoaXMuZGVib3VuY2U9ITAsc2V0VGltZW91dCgoKT0+e3RoaXMuZGVib3VuY2U9ITF9LDYwMCkpfXVwZGF0ZVNlbGVjdGVkUmVwb3NpdG9yeSgpe3JpLm1ldGFkYXRhLnNlbGVjdGVkUmVwb3NpdG9yeT10aGlzLnJlcG9zaXRvcnl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gbmV3KGh8fGQpKEt0KG11KSxLdChsMCksS3QoY2MpLEt0KFZkKSxLdChFbCksS3QoSjEpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLW1ldGFkYXRhIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxNSx2YXJzOjcs''@;'; put 'put ''Y29uc3RzOltbMSwicmVwby1kcm9wZG93biJdLFsiY2xyU2VsZWN0IiwiIiwiaWQiLCJyZXBvc2l0b3J5IiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0s''@;'; put 'put ''WzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQtaSJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJsb2FkaW5nU3Bpbm5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJj''@;'; put 'put ''bHItcm93IGNsci1mbGV4LWdyb3ctMSIsNCwibmdJZiJdLFszLCJ2YWx1ZSJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwic2VhcmNoIFNBUyBUeXBlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0''@;'; put 'put ''ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIs''@;'; put 'put ''InRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiXSxbMSwibS0wIiwiY3Vyc29yLXBv''@;'; put 'put ''aW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJsb2NrIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImxv''@;'; put 'put ''YWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbNCwibmdJZiJdLFsxLCJjbHItcm93IiwiY2xyLWZsZXgtZ3Jvdy0xIl0sWzEsImNsci1jb2wtNiJdLFsiY2xhc3MiLCJzZWFyY2gtaW5wdXQiLDQsIm5nSWYiXSxbImNsYXNzIiwib2JqZWN0cy1jb2wiLDQsIm5nSWYiXSxbMSwiY2xyLWNv''@;'; put 'put ''bC02IiwidGV4dC1jZW50ZXIiXSxbImNsYXNzIiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciIsNCwibmdJZiJdLFsxLCJzZWFyY2gtaW5wdXQiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9k''@;'; put 'put ''ZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaE9ialRyZWVJbnB1dCIsIiJdLFsxLCJvYmplY3RzLWNvbCJdLFszLCJjbHJBY2NvcmRpb25QYW5lbE9wZW5DaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyQWNjb3JkaW9uUGFuZWxPcGVuQ2hhbmdlIl0sWyJzaGFwZSIsInJhY2st''@;'; put 'put ''c2VydmVyIl0sWzEsImZsb2F0LXJpZ2h0Il0sWzQsImNscklmRXhwYW5kZWQiXSxbMywiY2xyTGF6eSIsNCwibmdJZiJdLFszLCJjbHJMYXp5Il0sWzMsImNsckV4cGFuZGFibGUiLDQsImNsclJlY3Vyc2l2ZUZvciIsImNsclJlY3Vyc2l2ZUZvck9mIiwiY2xyUmVjdXJzaXZlRm9yR2V0Q2hp''@;'; put 'put ''bGRyZW4iXSxbMywiY2xyRXhwYW5kYWJsZSJdLFsxLCJmdWxsLXdpZHRoIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImJsb2NrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZsb2F0LXJpZ2h0IG9iamVjdC11cmkiLDQsIm5nSWYiXSxbMSwiZmxvYXQtcmlnaHQi''@;'; put 'put ''LCJvYmplY3QtdXJpIl0sWzEsImNvbHMtaGVhZCJdLFsxLCJvYmplY3QtdGV4dCJdLFsxLCJtLTAiLCJ3b3JkLWJyZWFrIiwibXItMjAiXSxbMSwiZmxvYXQtcmlnaHQiLCJtbC0zIl0sWzEsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbNCwiY2xy''@;'; put 'put ''RGdJdGVtcyIsImNsckRnSXRlbXNPZiJdLFszLCJjbHJEZ1BhZ2VTaXplIl0sWyJwYWdpbmF0aW9uIiwiIl0sWzMsImNsclBhZ2VTaXplT3B0aW9ucyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHR0KDAsImFwcC1zaWRlYmFyIikoMSwiZGl2IiwwKSgyLCJjbHItc2VsZWN0LWNv''@;'; put 'put ''bnRhaW5lciIpKDMsImxhYmVsIiksV3QoNCwiTWV0YWRhdGEgUmVwb3NpdG9yeSIpLGl0KCksdHQoNSwic2VsZWN0IiwxKSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYucmVwb3NpdG9yeT1DfSkoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi51cGRhdGVTZWxl''@;'; put 'put ''Y3RlZFJlcG9zaXRvcnkoKX0pLG5uKDYsczl0LDIsMiwib3B0aW9uIiwyKSxpdCgpKCkoKSx0dCg3LCJjbHItdHJlZSIpLG5uKDgsZjl0LDYsMywiY2xyLXRyZWUtbm9kZSIsMyksbm4oOSxkOXQsMiwxLCJuZy1jb250YWluZXIiLDQpLGl0KCkoKSx0dCgxMCwiZGl2Iiw1KSgxMSwiZGl2Iiw2''@;'; put 'put ''KSxubigxMixwOXQsNCwwLCJkaXYiLDcpLG5uKDEzLEE5dCw0LDEsImRpdiIsOCksbm4oMTQsTjl0LDEwLDUsImRpdiIsOSksaXQoKSgpKSwyJmgmJihzdCg1KSx4dCgibmdNb2RlbCIsdi5yZXBvc2l0b3J5KSxzdCgxKSx4dCgibmdGb3JPZiIsdi5yZXBvc2l0b3JpZXMpLHN0KDIpLHh0KCJu''@;'; put 'put ''Z0lmIix2Lm1ldGFEYXRhTGlzdCksc3QoMSkseHQoIm5nRm9yT2YiLHYubWV0YURhdGFMaXN0KSxzdCgzKSx4dCgibmdJZiIsIXYubG9hZGluZyYmIXYubWV0YU9iamVjdExpc3QpLHN0KDEpLHh0KCJuZ0lmIix2LmxvYWRpbmcpLHN0KDEpLHh0KCJuZ0lmIix2LnNob3dEYXRhKSl9LGRlcGVu''@;'; put 'put ''ZGVuY2llczpbcWwsQm8sSjMsWDMscDEsRWYsanMsX3MsbE8sU1MsYU8sTVMsVnllLGt3LFBaLEZaLHVoZSx1Tyx4UyxUUyxFUyxfdyxyTyxvTyxRZmUsU3YsX2csVXllLEcyLFJpLGF5ZSxhcyx3dixJWixUWixwLGYsQSxtLE0sayxQUyxEQ10sc3R5bGVzOlsiLm9iamVjdHMtY29sW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzV2aDtvdmVyZmxvdzpzY3JvbGw7Ym9yZGVyOjFweCBzb2xpZCAjY2NjY2NjO2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXJhZGl1czo0cHh9LmNvbHMtaGVhZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmFmYWZhO2JvcmRlcjoxcHggc29s''@;'; put 'put ''aWQgI2NjY2NjYztwYWRkaW5nOjEwcHg7ZGlzcGxheTpmbGV4fS5vYmplY3QtdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWxlZnQ6MTBweDtmbGV4OjF9LnJlcG8t''@;'; put 'put ''ZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDoxNXB4O21hcmdpbi1sZWZ0OjE1cHg7bWFyZ2luLWJvdHRvbToxMHB4fS5jbHItYWNjb3JkaW9uLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5mbG9hdC1yaWdodFtfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''bWFyZ2luOjA7ZmxvYXQ6cmlnaHR9LmZ1bGwtd2lkdGhbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9Lm9iamVjdC11cmlbX25nY29udGVudC0lQ09NUCVde21hcmdpbjo1cHggMCAwfS5vYmplY3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWxlZnQ6M3B4O3BhZGRp''@;'; put 'put ''bmctcmlnaHQ6M3B4fS5vYmplY3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkOGUzZTk7Ym9yZGVyLXJhZGl1czozcHh9LmRhdGFncmlkLWhvc3RbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6dW5zZXQhaW1wb3J0YW50fS5jYXJkW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjA7ZmxleDoxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNXJlbSFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0iXX0p''@;'; put 'put ''LGQuXHUwMjc1cHJvdj1waSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7ZnVuY3Rpb24gVjl0KGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsMTIpfWZ1bmN0aW9uIGo5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1p''@;'; put 'put ''Y29uIiwxMyksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT1VdCgyKTtyZXR1cm4geS5yb2xlU2VhcmNoPSIiLGJ0KHkucm9sZUxpc3RPbkZpbHRlcigpKX0pLGl0KCl9fWZ1bmN0aW9uIFo5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUi''@;'; put 'put ''LDYpKDEsImRpdiIsNykoMiwiaW5wdXQiLDgsOSksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgpLGJ0KFV0KCkucm9sZVNlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgpLnJvbGVMaXN0T25GaWx0ZXIoKSl9KSxpdCgpLG5u''@;'; put 'put ''KDQsVjl0LDEsMCwiY2xyLWljb24iLDEwKSxubig1LGo5dCwxLDAsImNsci1pY29uIiwxMSksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgzKSx2PVV0KCk7c3QoMikseHQoIm5nTW9kZWwiLHYucm9sZVNlYXJjaCksc3QoMikseHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHN0KDEpLHh0''@;'; put 'put ''KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gejl0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRyZWUtbm9kZSIsMTUpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KCkucm9sZU9uQ2xp''@;'; put 'put ''Y2soeSkpfSksdHQoMSwicCIsMTYpLGJyKDIsImNsci1pY29uIiwxNyksV3QoMyksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdCx2PVV0KCk7SGkoInRhYmxlLWFjdGl2ZSIsaC5ST0xFVVJJPT09di5yb2xlVXJpKSxzdCgzKSxVaSgiICIsaC5ST0xFTkFNRSwiICIpfX1m''@;'; put 'put ''dW5jdGlvbiBHOXQoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLHo5dCw0LDMsImNsci10cmVlLW5vZGUiLDE0KSxPMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7c3QoMSkseHQoIm5nSWYiLCFoLmhpZGRlbil9fWZ1bmN0aW9uIFc5dChkLGcpezEmZCYmKHR0KDAsImRpdiIsMTgpKDEs''@;'; put 'put ''InNwYW4iLDE5KSxXdCgyLCIgTG9hZGluZy4uLiAiKSxpdCgpKCkpfWZ1bmN0aW9uIFk5dChkLGcpezEmZCYmKHR0KDAsImg1IiksV3QoMSwiTm8gTWVtYmVycyBQcmVzZW50IiksaXQoKSl9ZnVuY3Rpb24gVTl0KGQsZyl7aWYoMSZkJiYodHQoMCwidHIiLDMyKSgxLCJ0ZCIsMzApLFd0KDIp''@;'; put 'put ''LGl0KCksdHQoMywidGQiLDMwKSxXdCg0KSxpdCgpLHR0KDUsInRkIiwzMCksV3QoNiksaXQoKSx0dCg3LCJ0ZCIsMzApLFd0KDgpLGl0KCkoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3h0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi91c2Vycy8iK2guVVJJTUVNKSxzdCgyKSxq''@;'; put 'put ''aShoLk1FTUJFUk5BTUUpLHN0KDIpLGppKGguRU1BSUwpLHN0KDIpLGppKGguTUVNQkVSQ1JFQVRFRCksc3QoMiksamkoaC5NRU1CRVJVUERBVEVEKX19ZnVuY3Rpb24gUTl0KGQsZyl7aWYoMSZkJiYodHQoMCwidGFibGUiLDI4KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDI5KSg0LCJi''@;'; put 'put ''IiksV3QoNSwiTkFNRSIpLGl0KCkoKSx0dCg2LCJ0ZCIsMjkpKDcsImIiKSxXdCg4LCJFTUFJTCIpLGl0KCkoKSx0dCg5LCJ0ZCIsMjkpKDEwLCJiIiksV3QoMTEsIkNSRUFURUQiKSxpdCgpKCksdHQoMTIsInRkIiwzMCkoMTMsImIiKSxXdCgxNCwiVVBEQVRFRCIpLGl0KCkoKSgpKCksdHQo''@;'; put 'put ''MTUsInRib2R5Iiksbm4oMTYsVTl0LDksNSwidHIiLDMxKSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxNikseHQoIm5nRm9yT2YiLGgucm9sZU1lbWJlcnMpfX1mdW5jdGlvbiBKOXQoZCxnKXsxJmQmJih0dCgwLCJoNSIpLFd0KDEsIk5vIEdyb3VwcyBQcmVzZW50ICEiKSxpdCgp''@;'; put 'put ''KX1mdW5jdGlvbiBYOXQoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIsMzIpKDEsInRkIiwzMCksV3QoMiksaXQoKSx0dCgzLCJ0ZCIsMzApLFd0KDQpLGl0KCksdHQoNSwidGQiLDMwKSxXdCg2KSxpdCgpLHR0KDcsInRkIiwzMCksV3QoOCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGlj''@;'; put 'put ''aXQ7eHQoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L2dyb3Vwcy8iK2guVVJJTUVNKSxzdCgyKSxqaShoLk1FTUJFUk5BTUUpLHN0KDIpLGppKGguRU1BSUwpLHN0KDIpLGppKGguTUVNQkVSQ1JFQVRFRCksc3QoMiksamkoaC5NRU1CRVJVUERBVEVEKX19ZnVuY3Rpb24gSzl0KGQsZyl7''@;'; put 'put ''aWYoMSZkJiYodHQoMCwidGFibGUiLDI4KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDI5KSg0LCJiIiksV3QoNSwiTkFNRSIpLGl0KCkoKSx0dCg2LCJ0ZCIsMjkpKDcsImIiKSxXdCg4LCJFTUFJTCIpLGl0KCkoKSx0dCg5LCJ0ZCIsMjkpKDEwLCJiIiksV3QoMTEsIkNSRUFURUQiKSxp''@;'; put 'put ''dCgpKCksdHQoMTIsInRkIiwzMCkoMTMsImIiKSxXdCgxNCwiVVBEQVRFRCIpLGl0KCkoKSgpKCksdHQoMTUsInRib2R5Iiksbm4oMTYsWDl0LDksNSwidHIiLDMxKSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgxNikseHQoIm5nRm9yT2YiLGgucm9sZUdyb3Vwcyl9fWZ1bmN0aW9u''@;'; put 'put ''ICQ5dChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIpKDEsImRpdiIsMjApKDIsImRpdiIsMjEpKDMsInRhYmxlIiwyMikoNCwidGJvZHkiKSg1LCJ0ciIpKDYsInRkIiwyMykoNywicCIsMjQpKDgsImIiKSxXdCg5KSxpdCgpKCkoKSgpLHR0KDEwLCJ0ciIpKDExLCJ0ZCIsMjMpKDEyLCJpIiks''@;'; put 'put ''V3QoMTMpLGl0KCkoKSgpKCkoKSgpKCksdHQoMTQsImRpdiIsMjApKDE1LCJkaXYiLDIxKSgxNiwiZGl2IiwyNSkoMTcsImRpdiIpKDE4LCJoMyIpLFd0KDE5KSxpdCgpLG5uKDIwLFk5dCwyLDAsImg1Iiw1KSx0dCgyMSwiZGl2IiwyNiksbm4oMjIsUTl0LDE3LDEsInRhYmxlIiwyNyksaXQo''@;'; put 'put ''KSgpLGJyKDIzLCJociIpLHR0KDI0LCJkaXYiKSgyNSwiaDMiKSxXdCgyNiksaXQoKSxubigyNyxKOXQsMiwwLCJoNSIsNSksdHQoMjgsImRpdiIsMjYpLG5uKDI5LEs5dCwxNywxLCJ0YWJsZSIsMjcpLGl0KCkoKSxicigzMCwiYnIiKSxpdCgpKCkoKSgpKSwyJmQpe2NvbnN0IGg9VXQoKTtz''@;'; put 'put ''dCg5KSxqaShoLnJvbGVOYW1lKSxzdCg0KSxqaShoLnJvbGVEZXNjKSxzdCg2KSxVaSgiTUVNQkVSUyAoIixoLnJvbGVNZW1iZXJzQ291bnQsIikiKSxzdCgxKSx4dCgibmdJZiIsMD09aC5yb2xlTWVtYmVyc0NvdW50KSxzdCgyKSx4dCgibmdJZiIsMCE9aC5yb2xlTWVtYmVyc0NvdW50KSxz''@;'; put 'put ''dCg0KSxVaSgiR3JvdXBzICgiLGgucm9sZUdyb3Vwc0NvdW50LCIpIiksc3QoMSkseHQoIm5nSWYiLDA9PWgucm9sZUdyb3Vwc0NvdW50KSxzdCgyKSx4dCgibmdJZiIsMCE9aC5yb2xlR3JvdXBzQ291bnQpfX1sZXQgaE9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0''@;'; put 'put ''aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmhlbHBlclNlcnZpY2U9dix0aGlzLnJvdXRlcj15LHRoaXMubG9jYXRpb249Qyx0aGlzLnJvdXRlPUksdGhpcy5yb2xlU2VhcmNoPSIiLHRoaXMucm9sZVVyaT0iIix0aGlzLnJvbGVOYW1lPSIiLHRoaXMucm9sZURlc2M9IiIsdGhpcy5wYXJhbVByZXNl''@;'; put 'put ''bnQ9ITEsdGhpcy5wYXJhbVVSST0iIix0aGlzLmxvYWRpbmc9ITF9bmdPbkluaXQoKXtyaS52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L3JvbGVzIix2b2lkIDAhPT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmkmJih0aGlzLnBhcmFtUHJlc2VudD0hMCx0aGlz''@;'; put 'put ''LnBhcmFtVVJJPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSkscmkudXNlcm5hdi5yb2xlTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50Pyh0aGlzLnJvbGVzPXJpLnVzZXJuYXYucm9sZUxpc3QsdGhpcy5yb2xlU2VhcmNoPXJpLnVzZXJuYXYucm9sZVNlYXJjaCk6dm9pZCAwPT09cmku''@;'; put 'put ''dXNlcm5hdi5yb2xlTGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJyb2xlcyIsbnVsbCkudGhlbihoPT57aWYodGhpcy5sb2FkaW5nPSExLHRoaXMucm9sZXM9aC5yb2xlcyxyaS51c2VybmF2LnJvbGVMaXN0PWgucm9sZXMsdGhpcy5w''@;'; put 'put ''YXJhbVByZXNlbnQmJnZvaWQgMCE9PXRoaXMucm9sZXMpe2xldCB2PXRoaXMuZmluZFJvbGUodGhpcy5yb2xlcyx0aGlzLnBhcmFtVVJJKTshMSE9PXYmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpb''@;'; put 'put ''e3JvbGVpZDp0aGlzLnBhcmFtVVJJfV19KS50aGVuKEM9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1DLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PUMuc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPUMuc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vw''@;'; put 'put ''c0NvdW50PUMuc2FzZ3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9di5ST0xFVVJJLHRoaXMucm9sZU5hbWU9di5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPXYuUk9MRURFU0N9KSl9fSkpOih0aGlzLnJvbGVzPXJpLnVzZXJuYXYucm9sZUxpc3QsdGhpcy5yb2xlU2VhcmNoPXJpLnVzZXJuYXYu''@;'; put 'put ''cm9sZVNlYXJjaCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2Vycm9sZXMiLG51bGwpLnRoZW4oaD0+e2lmKHRoaXMucm9sZXM9aC5yb2xlcyxyaS51c2VybmF2LnJvbGVMaXN0PWgucm9sZXMsdGhpcy5wYXJhbVByZXNlbnQmJnZvaWQgMCE9PXRoaXMucm9sZXMpe2xldCB2''@;'; put 'put ''PXRoaXMuZmluZFJvbGUodGhpcy5yb2xlcyx0aGlzLnBhcmFtVVJJKTshMSE9PXYmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpbe3JvbGVpZDp0aGlzLnBhcmFtVVJJfV19KS50aGVuKEM9Pnt0aGlz''@;'; put 'put ''LmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1DLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PUMuc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPUMuc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PUMuc2FzZ3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9''@;'; put 'put ''di5ST0xFVVJJLHRoaXMucm9sZU5hbWU9di5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPXYuUk9MRURFU0N9KSl9fSkpfXJvbGVMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMucm9sZXMsdGhpcy5yb2xlU2VhcmNoLCJST0xFTkFNRSIpLHJpLnVz''@;'; put 'put ''ZXJuYXYucm9sZVNlYXJjaD10aGlzLnJvbGVTZWFyY2h9cm9sZU9uQ2xpY2soaCl7dGhpcy5sb2FkaW5nPSEwO2xldCB2PXRoaXMucm91dGVyLnVybDt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnBhcmFtUHJlc2VudD92LnNsaWNlKDAsdi5sYXN0SW5kZXhPZigiLyIpKSsiLyIr''@;'; put 'put ''ZW5jb2RlVVJJKGguUk9MRVVSSSk6disiLyIrZW5jb2RlVVJJKGguUk9MRVVSSSkpLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJtZW1iZXJzYnlyb2xlIix7aXdhbnQ6W3tyb2xlaWQ6aC5ST0xFVVJJfV19KS50aGVuKEM9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xl''@;'; put 'put ''TWVtYmVycz1DLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PUMuc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPUMuc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PUMuc2FzZ3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9aC5ST0xFVVJJLHRoaXMucm9sZU5h''@;'; put 'put ''bWU9aC5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPWguUk9MRURFU0N9KX1maW5kUm9sZShoLHYpe2xldCB5PSExO3JldHVybiBoLmZvckVhY2goQz0+e0MuUk9MRVVSST09PXYmJih5PUMpfSkseX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobDAp''@;'; put 'put ''LEt0KGNjKSxLdChFbCksS3QoVmQpLEt0KEoxKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1yb2xlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo3LHZhcnM6NCxjb25zdHM6W1sxLCJzaWRlYmFyLWhlaWdodCJdLFsiY2xhc3Mi''@;'; put 'put ''LCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3JhcHBlciJdLFsiY2xySW5w''@;'; put 'put ''dXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBSb2xlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJd''@;'; put 'put ''LFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJ0YWJsZS1hY3RpdmUiLCJjbGljayIsNCwibmdJZiJdLFszLCJjbGljayJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsImxpc3Qt''@;'; put 'put ''cGFkZGluZyJdLFsic2hhcGUiLCJibG9ja3MtZ3JvdXAiXSxbMSwibG9hZGluZ1NwaW5uZXIiXSxbMSwic3Bpbm5lciJdLFsxLCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJ0YWJsZSIsInJvbGUtaW5mbyJdLFsxLCJsZWZ0Il0sWzEsInJvbGUtaW5mby10ZXh0Il0sWzEsImNhcmQi''@;'; put 'put ''LCJyb2xlLWRhdGEiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWyJjbGFzcyIsInRhYmxlIG1lbWJlci10YWJsZSIsNCwibmdJZiJdLFsxLCJ0YWJsZSIsIm1lbWJlci10YWJsZSJdLFsxLCJ3aWR0aC0yNSJdLFsxLCIiXSxbMywicm91dGVyTGluayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMs''@;'; put 'put ''InJvdXRlckxpbmsiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJih0dCgwLCJhcHAtc2lkZWJhciIsMCkoMSwiY2xyLXRyZWUiKSxubigyLFo5dCw2LDMsImNsci10cmVlLW5vZGUiLDEpLG5uKDMsRzl0LDIsMSwibmctY29udGFpbmVyIiwyKSxpdCgpKCksdHQoNCwiZGl2IiwzKSxu''@;'; put 'put ''big1LFc5dCwzLDAsImRpdiIsNCksbm4oNiwkOXQsMzEsOCwiZGl2Iiw1KSxpdCgpKSwyJmgmJihzdCgyKSx4dCgibmdJZiIsdi5yb2xlcyksc3QoMSkseHQoIm5nRm9yT2YiLHYucm9sZXMpLHN0KDIpLHh0KCJuZ0lmIix2LmxvYWRpbmcpLHN0KDEpLHh0KCJuZ0lmIix2LnJvbGVNZW1iZXJz''@;'; put 'put ''JiYhdi5sb2FkaW5nKSl9LGRlcGVuZGVuY2llczpbcWwsQm8scDEsanMsX3MsWTYsU3YsX2csRzIsd3YsUFNdLHN0eWxlczpbIi5zaWRlYmFyLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LnJvbGUtaW5mby10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Omlu''@;'; put 'put ''bGluZTtmb250LXNpemU6MjBweH0ucm9sZS1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyOjFweCBzb2xpZCAjYTdhN2E3O2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9LnJvbGUtaW5mb1tfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICB0ZFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAg''@;'; put 'put ''MnB4IDVweCAjZGFkN2Q3fS5yb2xlLWRhdGFbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6dW5zZXR9LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5yb2xlLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTt3aWR0aDoxMDAlfS5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6I2RhZGFkYX0ubWVtYmVyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Y3Vyc29yOnBvaW50ZXJ9LnRhYmxlLWNvbnRhaW5lcltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17b3ZlcmZsb3cteTpzY3JvbGw7bWF4LWhlaWdodDo3MDBweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fSJdfSksZH0pKCkscTl0PSgoKT0+''@;'; put 'put ''e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD12aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtdXNlcm5hdi1yb3V0ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQt''@;'; put 'put ''Y29udGFpbmVyIl0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJmJyKDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltUN119KSxkfSkoKSxlQXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgpe31uZ09uRGVzdHJveSgpe319''@;'; put 'put ''cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC12aWV3LXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5j''@;'; put 'put ''dGlvbihoLHYpezEmaCYmYnIoMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W1Q3XX0pLGR9KSgpO2Z1bmN0aW9uIHRBdChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDEyKX1mdW5jdGlvbiBuQXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItaWNvbiIsMTMp''@;'; put 'put ''LFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIHkudXNlclNlYXJjaD0iIixidCh5LnVzZXJMaXN0T25GaWx0ZXIoKSl9KSxpdCgpfX1mdW5jdGlvbiByQXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiw2KSgxLCJk''@;'; put 'put ''aXYiLDcpKDIsImlucHV0Iiw4LDkpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShoKSxidChVdCgpLnVzZXJTZWFyY2g9eSl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS51c2VyTGlzdE9uRmlsdGVyKCkpfSksaXQoKSxubig0LHRBdCwx''@;'; put 'put ''LDAsImNsci1pY29uIiwxMCksbm4oNSxuQXQsMSwwLCJjbHItaWNvbiIsMTEpLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9dWEoMyksdj1VdCgpO3N0KDIpLHh0KCJuZ01vZGVsIix2LnVzZXJTZWFyY2gpLHN0KDIpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSxzdCgxKSx4dCgibmdJZiIs''@;'; put 'put ''aC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIGlBdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci10cmVlLW5vZGUiLDE1KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCkuJGltcGxpY2l0O3JldHVybiBidChVdCgpLnVzZXJPbkNsaWNrKHkpKX0p''@;'; put 'put ''LHR0KDEsInAiLDE2KSxicigyLCJjbHItaWNvbiIsMTcpLFd0KDMpLGl0KCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQsdj1VdCgpO0hpKCJ0YWJsZS1hY3RpdmUiLChudWxsPT12LnVzZXJJbmZvP251bGw6di51c2VySW5mby5VUkkpPT09aC5VUkkpLHN0KDMpLFVpKCIgIixo''@;'; put 'put ''Lk5BTUUsIiAiKX19ZnVuY3Rpb24gb0F0KGQsZyl7aWYoMSZkJiYoTDAoMCksbm4oMSxpQXQsNCwzLCJjbHItdHJlZS1ub2RlIiwxNCksTzAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3N0KDEpLHh0KCJuZ0lmIiwhaC5oaWRkZW4pfX1mdW5jdGlvbiBhQXQoZCxnKXsxJmQmJih0dCgw''@;'; put 'put ''LCJkaXYiLDE4KSgxLCJzcGFuIiwxOSksV3QoMiwiIExvYWRpbmcuLi4gIiksaXQoKSgpKX1mdW5jdGlvbiBsQXQoZCxnKXtpZigxJmQmJihMMCgwKSx0dCgxLCJ0ciIpKDIsInRkIiwyNyksV3QoMywiIE1ldGFkYXRhIENyZWF0ZWQ6ICIpLHR0KDQsImIiKSxXdCg1KSxpdCgpKCkoKSx0dCg2''@;'; put 'put ''LCJ0ciIpKDcsInRkIiwyNyksV3QoOCwiIE1ldGFkYXRhIFVwZGF0ZWQ6ICIpLHR0KDksImIiKSxXdCgxMCksaXQoKSgpKCksTzAoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDUpLGppKGgudXNlckluZm8uTUVUQURBVEFDUkVBVEVEKSxzdCg1KSxqaShoLnVzZXJJbmZvLk1FVEFEQVRBVVBE''@;'; put 'put ''QVRFRCl9fWZ1bmN0aW9uIHNBdChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMjEpKDEsImRpdiIsMjIpKDIsInRhYmxlIiwyNikoMywidGJvZHkiKSg0LCJ0ciIpKDUsInRkIiwyNykoNiwicCIsMjgpKDcsImIiKSxXdCg4KSxpdCgpKCkoKSgpLHR0KDksInRyIikoMTAsInRkIiwyNykoMTEs''@;'; put 'put ''InAiLDI4KSgxMiwiYiIpLFd0KDEzKSxpdCgpKCkoKSgpLG5uKDE0LGxBdCwxMSwyLCJuZy1jb250YWluZXIiLDUpLGl0KCkoKSgpKCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCg4KSxqaShoLnVzZXJJbmZvLk5BTUUpLHN0KDUpLGppKGgudXNlckluZm8uRElTUExBWU5BTUUpLHN0KDEpLHh0''@;'; put 'put ''KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSl9fWZ1bmN0aW9uIHVBdChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMjEpKDEsImRpdiIsMjIpKDIsInRhYmxlIiwyNikoMywidGJvZHkiKSg0LCJ0ciIpKDUsInRkIiwyNykoNiwicCIsMjgpKDcsImIiKSxXdCg4KSxp''@;'; put 'put ''dCgpKCkoKSgpLHR0KDksInRyIikoMTAsInRkIiwyNyksV3QoMTEsIiBVc2VyIElEOiAiKSx0dCgxMiwiYiIpLFd0KDEzKSxpdCgpKCkoKSx0dCgxNCwidHIiKSgxNSwidGQiLDI3KSxXdCgxNiwiIFVzZXIgcHJvdmlkZXIgSUQ6ICIpLHR0KDE3LCJiIiksV3QoMTgpLGl0KCkoKSgpKCkoKSgp''@;'; put 'put ''KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCg4KSxqaShoLnVzZXJJbmZvLk5BTUUpLHN0KDUpLGppKGgudXNlckluZm8uVVJJKSxzdCg1KSxqaShoLnVzZXJJbmZvLlBST1ZJREVSKX19ZnVuY3Rpb24gY0F0KGQsZyl7MSZkJiYodHQoMCwiaDUiKSxXdCgxLCJObyBFbWFpbHMgUHJlc2VudCIp''@;'; put 'put ''LGl0KCkpfWZ1bmN0aW9uIGZBdChkLGcpe2lmKDEmZCYmKHR0KDAsInRyIikoMSwidGQiLDMxKSxXdCgyKSxpdCgpLHR0KDMsInRkIiwzMSksV3QoNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7c3QoMiksamkoaC5FTUFJTCksc3QoMiksamkoaC5UWVBFKX19ZnVuY3Rpb24g''@;'; put 'put ''aEF0KGQsZyl7aWYoMSZkJiYodHQoMCwidGFibGUiLDI5KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDMwKSg0LCJiIiksV3QoNSwiRU1BSUwiKSxpdCgpKCksdHQoNiwidGQiLDMxKSg3LCJiIiksV3QoOCwiVFlQRSIpLGl0KCkoKSgpKCksdHQoOSwidGJvZHkiKSxubigxMCxmQXQsNSwy''@;'; put 'put ''LCJ0ciIsMiksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMTApLHh0KCJuZ0Zvck9mIixoLnVzZXJFbWFpbHMpfX1mdW5jdGlvbiBkQXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIpLGl0KCksbm4oMyxjQXQsMiwwLCJoNSIsNSksdHQoNCwiZGl2IiwyNCks''@;'; put 'put ''bm4oNSxoQXQsMTEsMSwidGFibGUiLDI1KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgyKSxVaSgiRU1BSUxTICgiLGgudXNlckVtYWlsc0NvdW50fHwiMCIsIikiKSxzdCgxKSx4dCgibmdJZiIsMD09aC51c2VyRW1haWxzQ291bnQpLHN0KDIpLHh0KCJuZ0lmIiwwIT1oLnVzZXJF''@;'; put 'put ''bWFpbHNDb3VudCl9fWZ1bmN0aW9uIHBBdChkLGcpezEmZCYmYnIoMCwiaHIiKX1mdW5jdGlvbiBnQXQoZCxnKXsxJmQmJih0dCgwLCJoNSIpLFd0KDEsIk5vIEdyb3VwcyBQcmVzZW50IiksaXQoKSl9ZnVuY3Rpb24gbUF0KGQsZyl7aWYoMSZkJiYodHQoMCwidGQiLDMzKSxXdCgxKSxpdCgp''@;'; put 'put ''KSwyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQ7eHQoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L2dyb3Vwcy8iK2guVVJJKSxzdCgxKSxVaSgiICIsaC5HUk9VUE5BTUUsIiAiKX19ZnVuY3Rpb24gdkF0KGQsZyl7aWYoMSZkJiYoTDAoMCksdHQoMSwidGQiLDMzKSxXdCgyKSxpdCgp''@;'; put 'put ''LE8wKCkpLDImZCl7Y29uc3QgaD1VdCgpLiRpbXBsaWNpdDtzdCgxKSx4dCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvZ3JvdXBzLyIrKGguR1JPVVBVUkl8fGguVVJJKSksc3QoMSksVWkoIiAiLGguR1JPVVBOQU1FLCIgIil9fWZ1bmN0aW9uIEFBdChkLGcpe2lmKDEmZCYmKHR0KDAs''@;'; put 'put ''InRyIiksbm4oMSxtQXQsMiwyLCJ0ZCIsMzIpLG5uKDIsdkF0LDMsMiwibmctY29udGFpbmVyIiw1KSxpdCgpKSwyJmQpe2NvbnN0IGg9VXQoMyk7c3QoMSkseHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXNWaXlhKSxzdCgxKSx4dCgibmdJZiIsaC5zZXJ2ZXJUeXBl''@;'; put 'put ''IT09aC5TZXJ2ZXJUeXBlLlNhc1ZpeWEpfX1mdW5jdGlvbiB5QXQoZCxnKXtpZigxJmQmJih0dCgwLCJ0YWJsZSIsMjkpKDEsInRib2R5Iiksbm4oMixBQXQsMywyLCJ0ciIsMiksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMikseHQoIm5nRm9yT2YiLGgudXNlckdyb3Vwcyl9fWZ1''@;'; put 'put ''bmN0aW9uIHdBdChkLGcpezEmZCYmYnIoMCwiaHIiKX1mdW5jdGlvbiBiQXQoZCxnKXsxJmQmJih0dCgwLCJoNSIpLFd0KDEsIk5vIFJvbGVzIFByZXNlbnQiKSxpdCgpKX1mdW5jdGlvbiBfQXQoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIpKDEsInRkIiwzNCksV3QoMiksaXQoKSgpKSwyJmQp''@;'; put 'put ''e2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1VdCg0KTtzdCgxKSx4dCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvcm9sZXMvIit2LmdldFJvbGVVUkkoaC5ST0xFVVJJKSksc3QoMSksVWkoIiAiLGguUk9MRU5BTUUsIiAiKX19ZnVuY3Rpb24gQ0F0KGQsZyl7aWYoMSZkJiYodHQoMCwidGFi''@;'; put 'put ''bGUiLDI5KSgxLCJ0Ym9keSIpLG5uKDIsX0F0LDMsMiwidHIiLDIpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDIpLHh0KCJuZ0Zvck9mIixoLnVzZXJSb2xlcyl9fWZ1bmN0aW9uIGtBdChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIpKDEsImgzIiksV3QoMiksaXQoKSxubigzLGJB''@;'; put 'put ''dCwyLDAsImg1Iiw1KSx0dCg0LCJkaXYiLDI0KSxubig1LENBdCwzLDEsInRhYmxlIiwyNSksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoMik7c3QoMiksVWkoIlJPTEVTICgiLGgudXNlclJvbGVzQ291bnR8fCIwIiwiKSIpLHN0KDEpLHh0KCJuZ0lmIiwwPT1oLnVzZXJSb2xlc0NvdW50KSxz''@;'; put 'put ''dCgyKSx4dCgibmdJZiIsMCE9aC51c2VyUm9sZXNDb3VudCl9fWZ1bmN0aW9uIFNBdChkLGcpezEmZCYmYnIoMCwiaHIiKX1mdW5jdGlvbiBNQXQoZCxnKXsxJmQmJih0dCgwLCJoNSIpLFd0KDEsIk5vIExvZ2lucyBQcmVzZW50IiksaXQoKSl9ZnVuY3Rpb24gRUF0KGQsZyl7aWYoMSZkJiYo''@;'; put 'put ''dHQoMCwidHIiKSgxLCJ0ZCIsMzEpLFd0KDIpLGl0KCksdHQoMywidGQiLDMxKSxXdCg0KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtzdCgyKSxqaShoLkRPTUFJTiksc3QoMiksamkoaC5VU0VSSUQpfX1mdW5jdGlvbiB4QXQoZCxnKXtpZigxJmQmJih0dCgwLCJ0YWJsZSIs''@;'; put 'put ''MjkpKDEsInRoZWFkIikoMiwidHIiKSgzLCJ0ZCIsMzApKDQsImIiKSxXdCg1LCJET01BSU4iKSxpdCgpKCksdHQoNiwidGQiKSg3LCJiIiksV3QoOCwiVVNFUiBJRCIpLGl0KCkoKSgpKCksdHQoOSwidGJvZHkiKSxubigxMCxFQXQsNSwyLCJ0ciIsMiksaXQoKSgpKSwyJmQpe2NvbnN0IGg9''@;'; put 'put ''VXQoMyk7c3QoMTApLHh0KCJuZ0Zvck9mIixoLnVzZXJMb2dpbnMpfX1mdW5jdGlvbiBUQXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiKSgxLCJoMyIpLFd0KDIpLGl0KCksbm4oMyxNQXQsMiwwLCJoNSIsNSksdHQoNCwiZGl2IiwyNCksbm4oNSx4QXQsMTEsMSwidGFibGUiLDI1KSxpdCgp''@;'; put 'put ''KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgyKSxVaSgiTE9HSU5TICgiLGgudXNlckxvZ2luc0NvdW50fHwiMCIsIikiKSxzdCgxKSx4dCgibmdJZiIsMD09aC51c2VyTG9naW5zQ291bnQpLHN0KDIpLHh0KCJuZ0lmIiwwIT1oLnVzZXJMb2dpbnNDb3VudCl9fWZ1bmN0aW9uIElBdChkLGcp''@;'; put 'put ''e2lmKDEmZCYmKHR0KDAsImRpdiIpLG5uKDEsc0F0LDE1LDMsImRpdiIsMjApLG5uKDIsdUF0LDE5LDMsImRpdiIsMjApLHR0KDMsImRpdiIsMjEpKDQsImRpdiIsMjIpKDUsImRpdiIsMjMpLG5uKDYsZEF0LDYsMywiZGl2Iiw1KSxubig3LHBBdCwxLDAsImhyIiw1KSx0dCg4LCJkaXYiKSg5''@;'; put 'put ''LCJoMyIpLFd0KDEwKSxpdCgpLG5uKDExLGdBdCwyLDAsImg1Iiw1KSx0dCgxMiwiZGl2IiwyNCksbm4oMTMseUF0LDMsMSwidGFibGUiLDI1KSxpdCgpKCksbm4oMTQsd0F0LDEsMCwiaHIiLDUpLG5uKDE1LGtBdCw2LDMsImRpdiIsNSksbm4oMTYsU0F0LDEsMCwiaHIiLDUpLG5uKDE3LFRB''@;'; put 'put ''dCw2LDMsImRpdiIsNSksYnIoMTgsImJyIiksaXQoKSgpKCkoKSksMiZkKXtjb25zdCBoPVV0KCk7c3QoMSkseHQoIm5nSWYiLGguc2VydmVyVHlwZSE9PWguU2VydmVyVHlwZS5TYXNWaXlhKSxzdCgxKSx4dCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhc1ZpeWEmJmgu''@;'; put 'put ''dXNlckluZm8pLHN0KDQpLHh0KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSksc3QoMSkseHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXM5KSxzdCgzKSxVaSgiR1JPVVBTICgiLGgudXNlckdyb3Vwc0NvdW50fHwiMCIsIikiKSxzdCgxKSx4''@;'; put 'put ''dCgibmdJZiIsMD09aC51c2VyR3JvdXBzQ291bnQpLHN0KDIpLHh0KCJuZ0lmIiwwIT1oLnVzZXJHcm91cHNDb3VudCksc3QoMSkseHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXM5KSxzdCgxKSx4dCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNh''@;'; put 'put ''czkpLHN0KDEpLHh0KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSksc3QoMSkseHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXM5KX19bGV0IGRPZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5oZWxwZXJTZXJ2''@;'; put 'put ''aWNlPWgsdGhpcy5zYXNTZXJ2aWNlPXYsdGhpcy5yb3V0ZT15LHRoaXMubG9jYXRpb249Qyx0aGlzLnJvdXRlcj1JLHRoaXMubG9hZGluZz0hMSx0aGlzLnVzZXJTZWFyY2g9IiIsdGhpcy5wYXJhbVByZXNlbnQ9ITEsdGhpcy5wYXJhbU5hbWU9IiIsdGhpcy5zYXNqc0NvbmZpZz1uZXcgUWQu''@;'; put 'put ''U0FTanNDb25maWcsdGhpcy5pc1ZpeWE9ITEsdGhpcy5zZXJ2ZXJUeXBlPSIiLHRoaXMuU2VydmVyVHlwZT14MS5ELHRoaXMuc2VydmVyVHlwZT10aGlzLnNhc1NlcnZpY2UuZ2V0U2VydmVyVHlwZSgpLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCks''@;'; put 'put ''IlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlJiYodGhpcy5pc1ZpeWE9ITApfW5nT25Jbml0KCl7aWYocmkudmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvdXNlcm5hdi91c2VycyIsdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpJiYodGhp''@;'; put 'put ''cy5wYXJhbVByZXNlbnQ9ITAsdGhpcy5wYXJhbU5hbWU9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpKSxyaS51c2VybmF2LnVzZXJMaXN0JiYhdGhpcy5wYXJhbVByZXNlbnQpdGhpcy51c2Vycz1yaS51c2VybmF2LnVzZXJMaXN0LHRoaXMudXNlclNlYXJjaD1yaS51c2VybmF2LnVz''@;'; put 'put ''ZXJTZWFyY2g7ZWxzZSBpZih2b2lkIDA9PT1yaS51c2VybmF2LnVzZXJMaXN0Pyh0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL3VzZXJzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0''@;'; put 'put ''aW9uL2pzb24ifX0pLnRoZW4oaD0+aC50ZXh0KCkpLnRoZW4oaD0+e2xldCB5PUpTT04ucGFyc2UoaCkuaXRlbXMubWFwKEM9Pih7TkFNRTpDLm5hbWUsVVJJOkMuaWQsUFJPVklERVI6Qy5wcm92aWRlcklkfSkpO3RoaXMubG9hZGluZz0hMSx0aGlzLnVzZXJzPXkscmkudXNlcm5hdi51c2Vy''@;'; put 'put ''TGlzdD15fSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnMiLG51bGwpLnRoZW4oaD0+e3RoaXMubG9hZGluZz0hMSx0aGlzLnVzZXJzPWgudXNlcnMscmkudXNlcm5hdi51c2VyTGlzdD1oLnVzZXJzfSkpOih0aGlzLnVzZXJzPXJpLnVzZXJuYXYudXNlckxp''@;'; put 'put ''c3QsdGhpcy51c2VyU2VhcmNoPXJpLnVzZXJuYXYudXNlclNlYXJjaCksdGhpcy5wYXJhbVByZXNlbnQpaWYodGhpcy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhKXtsZXQgaD10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmk7ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9p''@;'; put 'put ''ZGVudGl0aWVzL3VzZXJzLyIraCsiL21lbWJlcnNoaXBzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4odj0+di50ZXh0KCkpLnRoZW4odj0+e2xldCB5PUpTT04ucGFyc2Uodik7dGhpcy51c2VyRGF0YT15LHRoaXMubG9hZGluZz0hMTts''@;'; put 'put ''ZXQgQz15Lml0ZW1zLm1hcChJPT4oe0dST1VQTkFNRTpJLm5hbWUsVVJJOkkuaWR9KSk7dGhpcy51c2VyR3JvdXBzPUMsdGhpcy51c2VyR3JvdXBzQ291bnQ9Qy5sZW5ndGgsdGhpcy51c2VycyYmKHRoaXMudXNlckluZm89dGhpcy51c2Vycy5maW5kKEk9PkkuVVJJPT09aCkpfSl9ZWxzZXtj''@;'; put 'put ''b25zdCBoPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaTt0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VyZ3JvdXBzYnltZW1iZXIiLHtpd2FudDpbe3VyaTpofV19KS50aGVuKHk9Pntzd2l0Y2godGhpcy5sb2FkaW5nPSExLHRoaXMuc2VydmVyVHlwZSl7Y2FzZSB4''@;'; put 'put ''MS5ELlNhczk6dGhpcy51c2VySW5mbz15LmluZm9bMF0sdGhpcy51c2VyRW1haWxzPXkuZW1haWxzLHRoaXMudXNlckVtYWlsc0NvdW50PXkuZW1haWxzLmxlbmd0aCx0aGlzLnVzZXJSb2xlcz15LnJvbGVzLHRoaXMudXNlclJvbGVzQ291bnQ9eS5yb2xlcy5sZW5ndGgsdGhpcy51c2VyTG9n''@;'; put 'put ''aW5zPXkubG9naW5zLHRoaXMudXNlckxvZ2luc0NvdW50PXkubG9naW5zLmxlbmd0aDticmVhaztjYXNlIHgxLkQuU2FzanM6aWYodGhpcy51c2Vycyl0aGlzLnVzZXJJbmZvPXRoaXMudXNlcnMuZmluZChDPT5DLlVSST09PWgpO2Vsc2V7Y29uc3QgQz15Lmdyb3Vwc1swXTt0aGlzLnVzZXJJ''@;'; put 'put ''bmZvPXtVUkk6Qy5JRCxOQU1FOkMuTkFNRSxESVNQTEFZTkFNRTpDLk5BTUV9fX10aGlzLnVzZXJEYXRhPXksdGhpcy51c2VyR3JvdXBzPXkuZ3JvdXBzLHRoaXMudXNlckdyb3Vwc0NvdW50PXkuZ3JvdXBzLmxlbmd0aH0pfX11c2VyTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNl''@;'; put 'put ''LmxpYnJhcnlPbkZpbHRlcih0aGlzLnVzZXJzLHRoaXMudXNlclNlYXJjaCwiTkFNRSIpLHJpLnVzZXJuYXYudXNlclNlYXJjaD10aGlzLnVzZXJTZWFyY2h9dXNlck9uQ2xpY2soaCl7dGhpcy5sb2FkaW5nPSEwO2xldCB2PXRoaXMucm91dGVyLnVybDt0aGlzLmxvY2F0aW9uLnJlcGxhY2VT''@;'; put 'put ''dGF0ZSh0aGlzLnBhcmFtUHJlc2VudD92LnNsaWNlKDAsdi5sYXN0SW5kZXhPZigiLyIpKSsiLyIrZW5jb2RlVVJJKGguVVJJKTp2KyIvIitlbmNvZGVVUkkoaC5VUkkpKSx0aGlzLmlzVml5YT9mZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvdXNlcnMvIito''@;'; put 'put ''LlVSSSsiL21lbWJlcnNoaXBzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4oeT0+eS50ZXh0KCkpLnRoZW4oeT0+e2xldCBDPUpTT04ucGFyc2UoeSk7dGhpcy51c2VyRGF0YT1DLHRoaXMubG9hZGluZz0hMTtsZXQgST1DLml0ZW1zLm1h''@;'; put 'put ''cChqPT4oe0dST1VQTkFNRTpqLm5hbWUsVVJJOmouaWR9KSk7dGhpcy51c2VyR3JvdXBzPUksdGhpcy51c2VyR3JvdXBzQ291bnQ9SS5sZW5ndGgsdGhpcy51c2VycyYmKHRoaXMudXNlckluZm89dGhpcy51c2Vycy5maW5kKGo9PmouVVJJPT09aC5VUkkpKX0pOnRoaXMuc2FzU2VydmljZS5y''@;'; put 'put ''ZXF1ZXN0KCJ1c2VybmF2L3VzZXJncm91cHNieW1lbWJlciIse2l3YW50Olt7dXJpOmguVVJJfV19KS50aGVuKEM9Pntzd2l0Y2godGhpcy5sb2FkaW5nPSExLHRoaXMuc2VydmVyVHlwZSl7Y2FzZSB4MS5ELlNhczk6dGhpcy51c2VySW5mbz1DLmluZm9bMF0sdGhpcy51c2VyRW1haWxzPUMu''@;'; put 'put ''ZW1haWxzLHRoaXMudXNlckVtYWlsc0NvdW50PUMuZW1haWxzLmxlbmd0aCx0aGlzLnVzZXJSb2xlcz1DLnJvbGVzLHRoaXMudXNlclJvbGVzQ291bnQ9Qy5yb2xlcy5sZW5ndGgsdGhpcy51c2VyTG9naW5zPUMubG9naW5zLHRoaXMudXNlckxvZ2luc0NvdW50PUMubG9naW5zLmxlbmd0aDti''@;'; put 'put ''cmVhaztjYXNlIHgxLkQuU2FzanM6aWYodGhpcy51c2Vycyl0aGlzLnVzZXJJbmZvPXRoaXMudXNlcnMuZmluZChJPT5JLlVSST09PWguVVJJKTtlbHNle2NvbnN0IEk9Qy5ncm91cHNbMF07dGhpcy51c2VySW5mbz17VVJJOkkuSUQsTkFNRTpJLk5BTUUsRElTUExBWU5BTUU6SS5OQU1FfX19''@;'; put 'put ''dGhpcy51c2VyRGF0YT1DLHRoaXMudXNlckdyb3Vwcz1DLmdyb3Vwcyx0aGlzLnVzZXJHcm91cHNDb3VudD1DLmdyb3Vwcy5sZW5ndGh9KX1nZXRSb2xlVVJJKGgpe3JldHVybiBoLnNwbGl0KCJPTVNPQko6SWRlbnRpdHlHcm91cCIpWzFdLnNsaWNlKDEpfX1yZXR1cm4gZC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChjYyksS3QobDApLEt0KEoxKSxLdChWZCksS3QoRWwpKX0sZC5cdTAyNzVjbXA9dmkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXVzZXIiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjcsdmFyczo0LGNv''@;'; put 'put ''bnN0czpbWzEsInNpZGViYXItaGVpZ2h0Il0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJzZWFyY2gtbm9kZSJd''@;'; put 'put ''LFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiRmlsdGVyIGJ5IFVzZXJzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5w''@;'; put 'put ''dXQiLCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsInRhYmxlLWFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNr''@;'; put 'put ''Il0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwibGlzdC1wYWRkaW5nIl0sWyJzaGFwZSIsInVzZXIiXSxbMSwibG9hZGluZ1NwaW5uZXIiXSxbMSwic3Bpbm5lciJdLFsiY2xhc3MiLCJjbHItcm93Iiw0LCJuZ0lmIl0sWzEsImNsci1yb3ciXSxbMSwiY2xyLWNvbC04Il0sWzEsImNhcmQi''@;'; put 'put ''LCJ1c2VyLWRhdGEiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWyJjbGFzcyIsInRhYmxlIHVzZXItdGFibGUiLDQsIm5nSWYiXSxbMSwidGFibGUiLCJ1c2VyLWluZm8iXSxbMSwibGVmdCJdLFsxLCJ1c2VyLWluZm8tdGV4dCJdLFsxLCJ0YWJsZSIsInVzZXItdGFibGUiXSxbMSwid2lkdGgt''@;'; put 'put ''NTAiXSxbMSwiIl0sWyJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiwiY2xhc3MiLCIiLDMsInJvdXRlckxpbmsiLDQsIm5nSWYiXSxbInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDEsIiIsMywicm91dGVyTGluayJdLFszLCJyb3V0ZXJMaW5rIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgs''@;'; put 'put ''dil7MSZoJiYodHQoMCwiYXBwLXNpZGViYXIiLDApKDEsImNsci10cmVlIiksbm4oMixyQXQsNiwzLCJjbHItdHJlZS1ub2RlIiwxKSxubigzLG9BdCwyLDEsIm5nLWNvbnRhaW5lciIsMiksaXQoKSgpLHR0KDQsImRpdiIsMyksbm4oNSxhQXQsMywwLCJkaXYiLDQpLG5uKDYsSUF0LDE5LDEx''@;'; put 'put ''LCJkaXYiLDUpLGl0KCkpLDImaCYmKHN0KDIpLHh0KCJuZ0lmIix2LnVzZXJzKSxzdCgxKSx4dCgibmdGb3JPZiIsdi51c2Vycyksc3QoMikseHQoIm5nSWYiLHYubG9hZGluZyksc3QoMSkseHQoIm5nSWYiLHYudXNlckRhdGEmJiF2LmxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOltxbCxCbyxw''@;'; put 'put ''MSxqcyxfcyxZNixFeSxTdixfZyxHMix3dixQU10sc3R5bGVzOlsiLnNpZGViYXItaGVpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJX0udXNlci1pbmZvLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZToyMHB4fS51c2VyLWluZm9bX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXI6MXB4IHNvbGlkICNhN2E3YTc7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN30udXNlci1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXt0ZXh0LWFsaWduOmNlbnRlcn0udXNlci1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyOjFweCBzb2xpZCAjYTdhN2E3O2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9LnVzZXItZGF0YVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV17bWluLWhlaWdodDphdXRvfS51c2VyLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAudXNlci1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcn0udXNlci10YWJs''@;'; put 'put ''ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O3dpZHRoOjEwMCV9LnVzZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2RhZGFkYX0udXNlci10YWJsZVtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0gICB0cltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2N1cnNvcjpwb2ludGVyfS53aWR0aC01MFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NTAlfS53aWR0aC0zM1tfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17d2lkdGg6MzMlfS50YWJsZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXk6c2Nyb2xsO21heC1oZWlnaHQ6NTAwcHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey51c2VyLWRhdGFbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6''@;'; put 'put ''dW5zZXQhaW1wb3J0YW50fX0iXX0pLGR9KSgpO2NvbnN0IHBPZT1uZXcgT3QoIldpbmRvd1Rva2VuIiwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmRvY3VtZW50P3twcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT53aW5kb3d9OnZvaWQgMCk7Y2xhc3Mgamd7Y29uc3Ry''@;'; put 'put ''dWN0b3IoZyxoKXt0aGlzLmRvY3VtZW50PWcsdGhpcy53aW5kb3c9aCx0aGlzLmNvcHlTdWJqZWN0PW5ldyAkZSx0aGlzLmNvcHlSZXNwb25zZSQ9dGhpcy5jb3B5U3ViamVjdC5hc09ic2VydmFibGUoKSx0aGlzLmNvbmZpZz17fX1jb25maWd1cmUoZyl7dGhpcy5jb25maWc9Z31jb3B5KGcp''@;'; put 'put ''e2lmKCF0aGlzLmlzU3VwcG9ydGVkfHwhZylyZXR1cm4gdGhpcy5wdXNoQ29weVJlc3BvbnNlKHtpc1N1Y2Nlc3M6ITEsY29udGVudDpnfSk7Y29uc3QgaD10aGlzLmNvcHlGcm9tQ29udGVudChnKTtyZXR1cm4gdGhpcy5wdXNoQ29weVJlc3BvbnNlKGg/e2NvbnRlbnQ6Zyxpc1N1Y2Nlc3M6''@;'; put 'put ''aH06e2lzU3VjY2VzczohMSxjb250ZW50Omd9KX1nZXQgaXNTdXBwb3J0ZWQoKXtyZXR1cm4hIXRoaXMuZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkJiYhIXRoaXMuZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKCJjb3B5IikmJiEhdGhpcy53aW5kb3d9aXNUYXJnZXRWYWxp''@;'; put 'put ''ZChnKXtpZihnIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudHx8ZyBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpe2lmKGcuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCAidGFyZ2V0IiBhdHRyaWJ1dGUuIFBsZWFzZSB1c2UgInJlYWRv''@;'; put 'put ''bmx5IiBpbnN0ZWFkIG9mICJkaXNhYmxlZCIgYXR0cmlidXRlJyk7cmV0dXJuITB9dGhyb3cgbmV3IEVycm9yKCJUYXJnZXQgc2hvdWxkIGJlIGlucHV0IG9yIHRleHRhcmVhIil9Y29weUZyb21JbnB1dEVsZW1lbnQoZyxoPSEwKXt0cnl7dGhpcy5zZWxlY3RUYXJnZXQoZyk7Y29uc3Qgdj10''@;'; put 'put ''aGlzLmNvcHlUZXh0KCk7cmV0dXJuIHRoaXMuY2xlYXJTZWxlY3Rpb24oaD9nOnZvaWQgMCx0aGlzLndpbmRvdyksdiYmdGhpcy5pc0NvcHlTdWNjZXNzSW5JRTExKCl9Y2F0Y2godil7cmV0dXJuITF9fWlzQ29weVN1Y2Nlc3NJbklFMTEoKXtjb25zdCBnPXRoaXMud2luZG93LmNsaXBib2Fy''@;'; put 'put ''ZERhdGE7cmV0dXJuIShnJiZnLmdldERhdGEmJiFnLmdldERhdGEoIlRleHQiKSl9Y29weUZyb21Db250ZW50KGcsaD10aGlzLmRvY3VtZW50LmJvZHkpe2lmKHRoaXMudGVtcFRleHRBcmVhJiYhaC5jb250YWlucyh0aGlzLnRlbXBUZXh0QXJlYSkmJnRoaXMuZGVzdHJveSh0aGlzLnRlbXBU''@;'; put 'put ''ZXh0QXJlYS5wYXJlbnRFbGVtZW50KSwhdGhpcy50ZW1wVGV4dEFyZWEpe3RoaXMudGVtcFRleHRBcmVhPXRoaXMuY3JlYXRlVGVtcFRleHRBcmVhKHRoaXMuZG9jdW1lbnQsdGhpcy53aW5kb3cpO3RyeXtoLmFwcGVuZENoaWxkKHRoaXMudGVtcFRleHRBcmVhKX1jYXRjaCh5KXt0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkNvbnRhaW5lciBzaG91bGQgYmUgYSBEb20gZWxlbWVudCIpfX10aGlzLnRlbXBUZXh0QXJlYS52YWx1ZT1nO2NvbnN0IHY9dGhpcy5jb3B5RnJvbUlucHV0RWxlbWVudCh0aGlzLnRlbXBUZXh0QXJlYSwhMSk7cmV0dXJuIHRoaXMuY29uZmlnLmNsZWFuVXBBZnRlckNvcHkm''@;'; put 'put ''JnRoaXMuZGVzdHJveSh0aGlzLnRlbXBUZXh0QXJlYS5wYXJlbnRFbGVtZW50KSx2fWRlc3Ryb3koZz10aGlzLmRvY3VtZW50LmJvZHkpe3RoaXMudGVtcFRleHRBcmVhJiYoZy5yZW1vdmVDaGlsZCh0aGlzLnRlbXBUZXh0QXJlYSksdGhpcy50ZW1wVGV4dEFyZWE9dm9pZCAwKX1zZWxlY3RU''@;'; put 'put ''YXJnZXQoZyl7cmV0dXJuIGcuc2VsZWN0KCksZy5zZXRTZWxlY3Rpb25SYW5nZSgwLGcudmFsdWUubGVuZ3RoKSxnLnZhbHVlLmxlbmd0aH1jb3B5VGV4dCgpe3JldHVybiB0aGlzLmRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iil9Y2xlYXJTZWxlY3Rpb24oZyxoKXtnJiZnLmZvY3VzKCks''@;'; put 'put ''aC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKX1jcmVhdGVUZW1wVGV4dEFyZWEoZyxoKXtjb25zdCB2PSJydGwiPT09Zy5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKTtsZXQgeTtyZXR1cm4geT1nLmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIikseS5zdHlsZS5m''@;'; put 'put ''b250U2l6ZT0iMTJwdCIseS5zdHlsZS5ib3JkZXI9IjAiLHkuc3R5bGUucGFkZGluZz0iMCIseS5zdHlsZS5tYXJnaW49IjAiLHkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix5LnN0eWxlW3Y/InJpZ2h0IjoibGVmdCJdPSItOTk5OXB4Iix5LnN0eWxlLnRvcD0oaC5wYWdlWU9mZnNldHx8''@;'; put 'put ''Zy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKSsicHgiLHkuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpLHl9cHVzaENvcHlSZXNwb25zZShnKXt0aGlzLmNvcHlTdWJqZWN0Lm5leHQoZyl9cHVzaENvcHlSZXBvbnNlKGcpe3RoaXMucHVzaENvcHlSZXNwb25zZShnKX19amcuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcoZ3x8amcpKEVpKHVzKSxFaShwT2UsOCkpfSxqZy5cdTAyNzVwcm92PXBpKHt0b2tlbjpqZyxmYWN0b3J5OmpnLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGpnLm5nSW5qZWN0YWJsZURlZj13aSh7ZmFjdG9yeTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBuZXcgamcoQzIodXMpLEMyKHBPZSw4KSl9LHRva2VuOmpnLHByb3ZpZGVkSW46InJvb3QifSk7bGV0IERBdD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuY2xpcGJvYXJkU3J2PWgsdGhpcy5jYk9uU3VjY2Vzcz1uZXcgZm4sdGhpcy5jYk9uRXJyb3I9bmV3IGZufW5n''@;'; put 'put ''T25Jbml0KCl7fW5nT25EZXN0cm95KCl7dGhpcy5jbGlwYm9hcmRTcnYuZGVzdHJveSh0aGlzLmNvbnRhaW5lcil9b25DbGljayhoKXt0aGlzLmNsaXBib2FyZFNydi5pc1N1cHBvcnRlZD90aGlzLnRhcmdldEVsbSYmdGhpcy5jbGlwYm9hcmRTcnYuaXNUYXJnZXRWYWxpZCh0aGlzLnRhcmdl''@;'; put 'put ''dEVsbSk/dGhpcy5oYW5kbGVSZXN1bHQodGhpcy5jbGlwYm9hcmRTcnYuY29weUZyb21JbnB1dEVsZW1lbnQodGhpcy50YXJnZXRFbG0pLHRoaXMudGFyZ2V0RWxtLnZhbHVlLGgpOnRoaXMuY2JDb250ZW50JiZ0aGlzLmhhbmRsZVJlc3VsdCh0aGlzLmNsaXBib2FyZFNydi5jb3B5RnJvbUNv''@;'; put 'put ''bnRlbnQodGhpcy5jYkNvbnRlbnQsdGhpcy5jb250YWluZXIpLHRoaXMuY2JDb250ZW50LGgpOnRoaXMuaGFuZGxlUmVzdWx0KCExLHZvaWQgMCxoKX1oYW5kbGVSZXN1bHQoaCx2LHkpe2xldCBDPXtpc1N1Y2Nlc3M6aCxldmVudDp5fTtoPyhDPU9iamVjdC5hc3NpZ24oQyx7Y29udGVudDp2''@;'; put 'put ''LHN1Y2Nlc3NNZXNzYWdlOnRoaXMuY2JTdWNjZXNzTXNnfSksdGhpcy5jYk9uU3VjY2Vzcy5lbWl0KEMpKTp0aGlzLmNiT25FcnJvci5lbWl0KEMpLHRoaXMuY2xpcGJvYXJkU3J2LnB1c2hDb3B5UmVzcG9uc2UoQyl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3''@;'; put 'put ''KGh8fGQpKEt0KGpnKSl9LGQuXHUwMjc1ZGlyPVlpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5neENsaXBib2FyZCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJlpuKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25DbGljayhDLnRhcmdldCl9KX0saW5wdXRz''@;'; put 'put ''Ont0YXJnZXRFbG06WyJuZ3hDbGlwYm9hcmQiLCJ0YXJnZXRFbG0iXSxjb250YWluZXI6ImNvbnRhaW5lciIsY2JDb250ZW50OiJjYkNvbnRlbnQiLGNiU3VjY2Vzc01zZzoiY2JTdWNjZXNzTXNnIn0sb3V0cHV0czp7Y2JPblN1Y2Nlc3M6ImNiT25TdWNjZXNzIixjYk9uRXJyb3I6ImNiT25F''@;'; put 'put ''cnJvciJ9fSksZH0pKCksTEF0PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9bTAoe2ltcG9ydHM6W2FhXX0pLGR9KSgpO3ZhciBPQXQ9TCgzNjYyNSk7bGV0''@;'; put 'put ''IFJBdD0oKCk9PntjbGFzcyBke3RyYW5zZm9ybShoLC4uLnYpe2NvbnN0IHk9cGFyc2VJbnQodlswXSl8fDIsQz0ibnVtYmVyIiE9dHlwZW9mIGg/cGFyc2VJbnQoaCk6aDtyZXR1cm4oMCxPQXQuUikoQyx5KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1cGlwZT1Xcyh7bmFtZToiY29udmVydFNpemUiLHR5cGU6ZCxwdXJlOiEwfSksZH0pKCk7Y29uc3QgQkF0PVsicXVlcnlGaWx0ZXIiXTtmdW5jdGlvbiBQQXQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDQ5KSxicigxLCJjbHItc3Bpbm5lciIsNTApLGl0KCkpfWZ1bmN0aW9u''@;'; put 'put ''IEZBdChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDU3KX1mdW5jdGlvbiBIQXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItaWNvbiIsNTgpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMik7cmV0dXJuIHkubGlicmFyaWVzU2VhcmNoPSIiLGJ0''@;'; put 'put ''KHkubGlicmFyeU9uRmlsdGVyKCkpfSksaXQoKX19ZnVuY3Rpb24gTkF0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLXRyZWUtbm9kZSIsNTEpKDEsImRpdiIsNTIpKDIsImlucHV0Iiw1Myw1NCksWm4oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGgp''@;'; put 'put ''LGJ0KFV0KCkubGlicmFyaWVzU2VhcmNoPXkpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBhKGgpLGJ0KFV0KCkubGlicmFyeU9uRmlsdGVyKCkpfSksaXQoKSxubig0LEZBdCwxLDAsImNsci1pY29uIiw1NSksbm4oNSxIQXQsMSwwLCJjbHItaWNvbiIsNTYpLGl0KCkoKX1pZigyJmQp''@;'; put 'put ''e2NvbnN0IGg9dWEoMyksdj1VdCgpO3N0KDIpLHh0KCJuZ01vZGVsIix2LmxpYnJhcmllc1NlYXJjaCksc3QoMikseHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHN0KDEpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gVkF0KGQsZyl7MSZkJiZicigwLCJjbHItaWNv''@;'; put 'put ''biIsNTcpfWZ1bmN0aW9uIGpBdChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pY29uIiw1OCksWm4oImNsaWNrIixmdW5jdGlvbigpe2EoaCksVXQoKTtjb25zdCB5PXVhKDMpLEM9VXQoMikuJGltcGxpY2l0LEk9VXQoKTtyZXR1cm4geS52YWx1ZT0iIixDLnNlYXJjaFN0''@;'; put 'put ''cmluZz0iIixidChJLnRyZWVPbkZpbHRlcihDLCJ0YWJsZXMiKSl9KSxpdCgpfX1mdW5jdGlvbiBaQXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiw1MSkoMSwiZGl2Iiw1MikoMiwiaW5wdXQiLDYzLDY0KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rp''@;'; put 'put ''b24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuJGltcGxpY2l0LnNlYXJjaFN0cmluZz15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXthKGgpO2NvbnN0IHk9VXQoMikuJGltcGxpY2l0O3JldHVybiBidChVdCgpLnRyZWVPbkZpbHRlcih5LCJ0YWJsZXMiKSl9KSxpdCgpLG5uKDQsVkF0LDEsMCwi''@;'; put 'put ''Y2xyLWljb24iLDU1KSxubig1LGpBdCwxLDAsImNsci1pY29uIiw1NiksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD11YSgzKSx2PVV0KDIpLiRpbXBsaWNpdDtzdCgyKSx4dCgiaWQiLCJzZWFyY2hfIit2LkxJQlJBUllSRUYpKCJuZ01vZGVsIix2LnNlYXJjaFN0cmluZyksc3QoMikseHQoIm5n''@;'; put 'put ''SWYiLGgudmFsdWUubGVuZ3RoPDEpLHN0KDEpLHh0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gekF0KGQsZyl7MSZkJiZicigwLCJjbHItaWNvbiIsNzApfWZ1bmN0aW9uIEdBdChkLGcpezEmZCYmYnIoMCwiY2xyLWljb24iLDcxKX1mdW5jdGlvbiBXQXQoZCxnKXtpZigx''@;'; put 'put ''JmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJidXR0b24iLDY2KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCkuJGltcGxpY2l0LEM9VXQoMikuJGltcGxpY2l0LEk9VXQoKTtyZXR1cm4gSS5saWI9Qy5MSUJSQVJZUkVGLEkudGFibGU9eSxJLnNlbGVjdExpYlRhYmxlKHkp''@;'; put 'put ''LGJ0KEkudmlld0RhdGEoMCkpfSksTDAoMSw2Nyksbm4oMix6QXQsMSwwLCJjbHItaWNvbiIsNjgpLG5uKDMsR0F0LDEsMCwiY2xyLWljb24iLDY5KSxPMCgpLFd0KDQpLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KCkuJGltcGxpY2l0LHY9VXQoMikuJGltcGxpY2l0O0hpKCJ0YWJsZS1hY3Rp''@;'; put 'put ''dmUiLFV0KCkubGliVGFiQWN0aXZlKHYuTElCUkFSWVJFRixoKSksc3QoMSkseHQoIm5nU3dpdGNoIixoLmluY2x1ZGVzKCItRkMiKSksc3QoMSkseHQoIm5nU3dpdGNoQ2FzZSIsITApLHN0KDEpLHh0KCJuZ1N3aXRjaENhc2UiLCExKSxzdCgxKSxVaSgiICIsaC5yZXBsYWNlKCItRkMiLCIi''@;'; put 'put ''KSwiICIpfX1mdW5jdGlvbiBZQXQoZCxnKXtpZigxJmQmJih0dCgwLCJjbHItdHJlZS1ub2RlIiksbm4oMSxXQXQsNSw2LCJidXR0b24iLDY1KSxpdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7c3QoMSkseHQoIm5nSWYiLGgubGVuZ3RoPjApfX1mdW5jdGlvbiBVQXQoZCxnKXtpZigx''@;'; put 'put ''JmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJjbHItdHJlZS1ub2RlIiw2MCksWm4oImNsaWNrIixmdW5jdGlvbih5KXthKGgpO2NvbnN0IEM9VXQoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KFV0KCkudHJlZU5vZGVDbGlja2VkKHksQykpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbih5KXty''@;'; put 'put ''ZXR1cm4gYShoKSxidChVdCgpLiRpbXBsaWNpdC5leHBhbmRlZD15KX0pLHR0KDEsInAiLDYxKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7YShoKTtjb25zdCB5PVV0KCkuJGltcGxpY2l0LEM9VXQoKTtyZXR1cm4gQy5saWI9eS5MSUJSQVJZUkVGLGJ0KEMubGlicmFyeU9uQ2xpY2soeS5MSUJS''@;'; put 'put ''QVJZUkVGLHkpKX0pLGJyKDIsImNsci1pY29uIiw2MiksV3QoMyksaXQoKSxubig0LFpBdCw2LDQsImNsci10cmVlLW5vZGUiLDIpLG5uKDUsWUF0LDIsMSwiY2xyLXRyZWUtbm9kZSIsMyksaXQoKX1pZigyJmQpe2NvbnN0IGg9VXQoKS4kaW1wbGljaXQ7SGkoImNsci1leHBhbmRlZCIsaC5l''@;'; put 'put ''eHBhbmRlZCkseHQoImNsckV4cGFuZGVkIixoLmV4cGFuZGVkKSgiY2xyTG9hZGluZyIsaC5sb2FkaW5nVGFibGVzJiYhaC50YWJsZXMpLHN0KDMpLFVpKCIgIixoLkxJQlJBUllOQU1FLCIgIiksc3QoMSkseHQoIm5nSWYiLGgudGFibGVzKSxzdCgxKSx4dCgibmdGb3JPZiIsaC50YWJsZXMp''@;'; put 'put ''fX1mdW5jdGlvbiBRQXQoZCxnKXtpZigxJmQmJihMMCgwKSxubigxLFVBdCw2LDcsImNsci10cmVlLW5vZGUiLDU5KSxPMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7c3QoMSkseHQoIm5nSWYiLCFoLmhpZGRlbiYmaC5pbkZvcmVncm91bmQpfX1mdW5jdGlvbiBKQXQoZCxnKXsxJmQm''@;'; put 'put ''Jih0dCgwLCJkaXYiLDcyKSgxLCJzcGFuIiw3MyksV3QoMiwiIExvYWRpbmcuLi4gIiksaXQoKSgpKX1mdW5jdGlvbiBYQXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDc0KSgxLCJkaXYiLDc1KSgyLCJkaXYiLDc2KSgzLCJkaXYiLDc3KSg0LCJidXR0b24iLDc4KSxi''@;'; put 'put ''cig1LCJjbHItaWNvbiIsNzkpLGl0KCksdHQoNiwiaDMiLDQzKSxXdCg3LCJFcnJvciIpLGl0KCkoKSx0dCg4LCJkaXYiLDEwKSg5LCJwIiksV3QoMTAsIllvdSBjYW5ub3Qgc3VibWl0IGVtcHR5IGNsYXVzZXMiKSxpdCgpKCksdHQoMTEsImRpdiIsMjEpKDEyLCJidXR0b24iLDgwKSxabigi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoKS5udWxsVmFyaWFibGVzPSExKX0pLFd0KDEzLCIgT2sgIiksaXQoKSgpKCkoKSgpfX1mdW5jdGlvbiBLQXQoZCxnKXsxJmQmJmJyKDAsImRpdiIsODEpfWZ1bmN0aW9uICRBdChkLGcpezEmZCYmYnIoMCwiYXBwLXF1ZXJ5Iixu''@;'; put 'put ''dWxsLDgyKX1mdW5jdGlvbiBxQXQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDgzKSgxLCJzcGFuIiw4NCksV3QoMiwiIExvYWRpbmcuLi4gIiksaXQoKSx0dCgzLCJkaXYiKSg0LCJoNCIpLFd0KDUsIkxvYWRpbmcgdGFibGUgdmlld2VyIiksaXQoKSgpKCkpfWZ1bmN0aW9uIGV5dChkLGcpe2lm''@;'; put 'put ''KDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImNsci1pY29uIiwxMDYpLFpuKCJjbGljayIsZnVuY3Rpb24oKXthKGgpLFV0KCk7Y29uc3QgeT11YSg1KTtyZXR1cm4gYnQoVXQoMikuc2VhcmNoVGFibGUoeSkpfSksaXQoKX19ZnVuY3Rpb24gdHl0KGQsZyl7MSZkJiYodHQoMCwic3BhbiIsMTA3''@;'; put 'put ''KSxXdCgxLCIgTG9hZGluZy4uLiAiKSxpdCgpKX1mdW5jdGlvbiBueXQoZCxnKXsxJmQmJmJyKDAsImNsci1pY29uIiwxMDgpfWZ1bmN0aW9uIHJ5dChkLGcpe2lmKDEmZCYmKHR0KDAsInNwYW4iKSxXdCgxKSxaZSgyLCJ0aG91c2FuZFNlcGFyYXRvciIpLGl0KCkpLDImZCl7Y29uc3QgaD1V''@;'; put 'put ''dCg0KTtzdCgxKSxyaCgiICgiLEl0KDIsMixoLm51bWJlck9mUm93cywiLCIpLCIgIiwxPT09aC5udW1iZXJPZlJvd3M/InJvdyI6InJvd3MiLCIpICIpfX1mdW5jdGlvbiBpeXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJoMyIsMTA5KSxXdCgxKSxubigyLHJ5dCwzLDUsInNw''@;'; put 'put ''YW4iLDM4KSx0dCgzLCJjbHItaWNvbiIsMTEwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMykucmVsb2FkVGFibGVEYXRhKCkpfSksaXQoKSgpfWlmKDImZCl7Y29uc3QgaD1VdCgzKTtzdCgxKSxVaSgiICIsbnVsbD09aC50YWJsZVRpdGxlP251bGw6aC50YWJs''@;'; put 'put ''ZVRpdGxlLnJlcGxhY2UoIi1GQyIsIiIpLCIgIiksc3QoMSkseHQoIm5nSWYiLG51bGwhPT1oLm51bWJlck9mUm93cyl9fWZ1bmN0aW9uIG95dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMTE5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQo''@;'; put 'put ''VXQoNSkuZWRpdFRhYmxlKCkpfSksYnIoMSwiY2xyLWljb24iLDEyMiksdHQoMiwic3BhbiIpLFd0KDMsIkVkaXQiKSxpdCgpKCl9fWZ1bmN0aW9uIGF5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD15aSgpO3R0KDAsImJ1dHRvbiIsMTE5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEo''@;'; put 'put ''aCksYnQoVXQoNSkuZ29Ub0xpbmVhZ2UoKSl9KSxicigxLCJjbHItaWNvbiIsMTIzKSx0dCgyLCJzcGFuIiksV3QoMywiTGluZWFnZSIpLGl0KCkoKX19ZnVuY3Rpb24gbHl0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXlpKCk7dHQoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDExNSksbm4oMSxveXQs''@;'; put 'put ''NCwwLCJidXR0b24iLDExNiksbm4oMixheXQsNCwwLCJidXR0b24iLDExNiksdHQoMywiYnV0dG9uIiwxMTcpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCg0KS5vcGVuUWIoKSl9KSxicig0LCJjbHItaWNvbiIsMTE4KSx0dCg1LCJzcGFuIiksV3QoNiwiRmlsdGVy''@;'; put 'put ''IiksaXQoKSgpLHR0KDcsImJ1dHRvbiIsMTE5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoNCkub3BlbkRvd25sb2FkPSEwKX0pLGJyKDgsImNsci1pY29uIiwxMjApLHR0KDksInNwYW4iKSxXdCgxMCwiRG93bmxvYWQiKSxpdCgpKCksdHQoMTEsImJ1dHRvbiIs''@;'; put 'put ''MTE5KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoNCkuc2hvd1dlYlF1ZXJ5KCkpfSksYnIoMTIsImNsci1pY29uIiwxMjEpLHR0KDEzLCJzcGFuIiksV3QoMTQsIldlYiBRdWVyeSBVUkwiKSxpdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9VXQoNCk7c3QoMSkseHQo''@;'; put 'put ''Im5nSWYiLGgudGFibGVFZGl0RXhpc3RzKCkpLHN0KDEpLHh0KCJuZ0lmIixoLnRhYmxldXJpKX19ZnVuY3Rpb24gc3l0KGQsZyl7MSZkJiYodHQoMCwiY2xyLWRyb3Bkb3duIiwxMTEpKDEsImJ1dHRvbiIsMTEyKSxicigyLCJjbHItaWNvbiIsMTEzKSxXdCgzLCIgb3B0aW9ucyAiKSxpdCgp''@;'; put 'put ''LG5uKDQsbHl0LDE1LDIsImNsci1kcm9wZG93bi1tZW51IiwxMTQpLGl0KCkpLDImZCYmeHQoImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIiwhMCl9ZnVuY3Rpb24gdXl0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2IiwxMjQpKDEsInNwYW4iKSxXdCgyLCJGSUxURVIgOiAiKSx0dCgzLCJiIiks''@;'; put 'put ''V3QoNCksaXQoKSgpKCkpLDImZCl7Y29uc3QgaD1VdCgzKTtzdCg0KSxqaShoLnF1ZXJ5VGV4dCl9fWNvbnN0IGN5dD1mdW5jdGlvbigpe3JldHVyblsiIiwiICJdfTtmdW5jdGlvbiBmeXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJkaXYiLDkwKSgxLCJzZWN0aW9uIiw5MSko''@;'; put 'put ''MiwiZm9ybSIsOTIpKDMsImRpdiIsOTMpKDQsImlucHV0Iiw5NCw5NSksWm4oImtleXVwLmVudGVyIixmdW5jdGlvbigpe2EoaCk7Y29uc3QgeT11YSg1KTtyZXR1cm4gYnQoVXQoMikuc2VhcmNoVGFibGUoeSkpfSksaXQoKSxubig2LGV5dCwxLDAsImNsci1pY29uIiw5Niksbm4oNyx0eXQs''@;'; put 'put ''MiwwLCJzcGFuIiw5NyksaXQoKSx0dCg4LCJjbHItY2hlY2tib3gtY29udGFpbmVyIikoOSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgxMCwiaW5wdXQiLDk4KSxabigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaCksYnQoVXQoMikuc2VhcmNoTnVtZXJpYz15KX0pLGl0''@;'; put 'put ''KCksdHQoMTEsImxhYmVsIiksV3QoMTIsIk51bWVyaWMiKSxpdCgpKCkoKSgpKCksdHQoMTMsImRpdiIsOTkpKDE0LCJjbHItaWNvbiIsMTAwKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGEoaCksYnQoVXQoMikuZGF0YXNldEluZm89ITApfSksaXQoKSxubigxNSxueXQsMSwwLCJj''@;'; put 'put ''bHItaWNvbiIsMTAxKSxubigxNixpeXQsNCwyLCJoMyIsMTAyKSxpdCgpLHR0KDE3LCJkaXYiLDEwMyksbm4oMTgsc3l0LDUsMSwiY2xyLWRyb3Bkb3duIiwxMDQpLGl0KCksbm4oMTksdXl0LDUsMSwiZGl2IiwxMDUpLGl0KCl9aWYoMiZkKXtjb25zdCBoPVV0KDIpO3N0KDQpLHh0KCJ0eXBl''@;'; put 'put ''IixoLnNlYXJjaE51bWVyaWM/Im51bWJlciI6InRleHQiKSxzdCgyKSx4dCgibmdJZiIsIWguc2VhcmNoTG9hZGluZyksc3QoMSkseHQoIm5nSWYiLGguc2VhcmNoTG9hZGluZyksc3QoMykseHQoIm5nTW9kZWwiLGguc2VhcmNoTnVtZXJpYyksc3QoNSkseHQoIm5nSWYiLG51bGw9PWgudGFi''@;'; put 'put ''bGVUaXRsZT9udWxsOmgudGFibGVUaXRsZS5pbmNsdWRlcygiLUZDIikpLHN0KDEpLHh0KCJuZ0lmIixoLnRhYmxlVGl0bGUmJmgudGFibGVUaXRsZS5sZW5ndGg+MCksc3QoMikseHQoIm5nSWYiLGgudGFibGVUaXRsZSYmIWguYWJvcnRBY3RpdmUpLHN0KDEpLHh0KCJuZ0lmIiwiMT0xIiE9''@;'; put 'put ''PWgucXVlcnlUZXh0JiYhbHMoOCxjeXQpLmluY2x1ZGVzKGgucXVlcnlUZXh0KSYmIWguYWJvcnRBY3RpdmUpfX1mdW5jdGlvbiBoeXQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDEyNSksYnIoMSwiY2xyLWljb24iLDEyNiksdHQoMiwiaDMiLDEyNyksV3QoMywiUGxlYXNlIHNlbGVjdCBhIGxp''@;'; put 'put ''YnJhcnkiKSxpdCgpKCkpfWZ1bmN0aW9uIGR5dChkLGcpezEmZCYmYnIoMCwiY2xyLXNwaW5uZXIiLDUwKX1mdW5jdGlvbiBweXQoZCxnKXsxJmQmJih0dCgwLCJkaXYiLDEzNSksYnIoMSwiY2xyLWljb24iLDEzNiksdHQoMiwiaDMiLDEyNyksV3QoMywiUGxlYXNlIHNlbGVjdCBhIHRhYmxl''@;'; put 'put ''IiksaXQoKSgpKX1mdW5jdGlvbiBneXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTt0dCgwLCJwIiwxMzkpLFd0KDEsIiBObyBsaWJyYXJ5IGluZm8gZm91bmQuIENsaWNrICIpLHR0KDIsImNsci1pY29uIiwxNDApLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCg0''@;'; put 'put ''KS5yZWxvYWRMaWJJbmZvKCkpfSksaXQoKSxXdCgzLCIgYnV0dG9uIHRvIHJlZnJlc2guICIpLGl0KCl9fWZ1bmN0aW9uIG15dChkLGcpe2lmKDEmZCYmKHR0KDAsInRyIikoMSwidGQiLDE0MSksV3QoMiwiRU5HSU5FOiIpLGl0KCksdHQoMywidGQiLDE0MiksV3QoNCksaXQoKSgpKSwyJmQp''@;'; put 'put ''e2NvbnN0IGg9VXQoNSk7c3QoNCksVWkoIiAiLGgubGliaW5mb1swXT9oLmxpYmluZm9bMF0uRU5HSU5FOiIiLCIgIil9fWZ1bmN0aW9uIHZ5dChkLGcpe2lmKDEmZCYmKHR0KDAsInRyIikoMSwidGQiLDE0MSksV3QoMiwiTElCSUQ6IiksaXQoKSx0dCgzLCJ0ZCIsMTQyKSxXdCg0KSxpdCgp''@;'; put 'put ''KCkpLDImZCl7Y29uc3QgaD1VdCg1KTtzdCg0KSxVaSgiICIsaC5saWJpbmZvWzBdP2gubGliaW5mb1swXS5MSUJJRDoiIiwiICIpfX1mdW5jdGlvbiBBeXQoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIpKDEsInRkIiwxNDEpLFd0KDIsIkxJQk5BTUU6IiksaXQoKSx0dCgzLCJ0ZCIsMTQyKSxX''@;'; put 'put ''dCg0KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCg1KTtzdCg0KSxVaSgiICIsaC5saWJpbmZvWzBdP2gubGliaW5mb1swXS5MSUJOQU1FOiIiLCIgIil9fWZ1bmN0aW9uIHl5dChkLGcpe2lmKDEmZCYmKHR0KDAsInRyIikoMSwidGQiLDE0MSksV3QoMiwiTElCU0laRToiKSxpdCgpLHR0KDMs''@;'; put 'put ''InRkIiwxNDIpLFd0KDQpLFplKDUsImNvbnZlcnRTaXplIiksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoNSk7c3QoNCksVWkoIiAiLGgubGliaW5mb1swXT9TdCg1LDEsaC5saWJpbmZvWzBdLkxJQlNJWkUpOiIiLCIgIil9fWZ1bmN0aW9uIHd5dChkLGcpe2lmKDEmZCYmKHR0KDAsInRyIiko''@;'; put 'put ''MSwidGQiLDE0MSksV3QoMiwiT1dORVJTOiIpLGl0KCksdHQoMywidGQiLDE0MiksV3QoNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoNSk7c3QoNCksVWkoIiAiLGgubGliaW5mb1swXT9oLmxpYmluZm9bMF0uT1dORVJTOiIiLCIgIil9fWZ1bmN0aW9uIGJ5dChkLGcpe2lmKDEmZCYmKHR0''@;'; put 'put ''KDAsInRyIikoMSwidGQiLDE0MSksV3QoMiwiUEFUSFM6IiksaXQoKSx0dCgzLCJ0ZCIsMTQyKSxXdCg0KSxpdCgpKCkpLDImZCl7Y29uc3QgaD1VdCg1KTtzdCg0KSxVaSgiICIsaC5saWJpbmZvWzBdP2gubGliaW5mb1swXS5QQVRIUzoiIiwiICIpfX1mdW5jdGlvbiBfeXQoZCxnKXtpZigx''@;'; put 'put ''JmQmJih0dCgwLCJ0ciIpKDEsInRkIiwxNDEpLFd0KDIsIlBFUk1TOiIpLGl0KCksdHQoMywidGQiLDE0MiksV3QoNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoNSk7c3QoNCksVWkoIiAiLGgubGliaW5mb1swXT9oLmxpYmluZm9bMF0uUEVSTVM6IiIsIiAiKX19ZnVuY3Rpb24gQ3l0KGQs''@;'; put 'put ''Zyl7aWYoMSZkJiYodHQoMCwidHIiKSgxLCJ0ZCIsMTQxKSxXdCgyLCJTQ0hFTUFTOiIpLGl0KCksdHQoMywidGQiLDE0MiksV3QoNCksaXQoKSgpKSwyJmQpe2NvbnN0IGg9VXQoNSk7c3QoNCksVWkoIiAiLGgubGliaW5mb1swXT9oLmxpYmluZm9bMF0uU0NIRU1BUzoiIiwiICIpfX1mdW5j''@;'; put 'put ''dGlvbiBreXQoZCxnKXtpZigxJmQmJih0dCgwLCJ0ciIpKDEsInRkIiwxNDEpLFd0KDIsIlRBQkxFX0NOVDoiKSxpdCgpLHR0KDMsInRkIiwxNDIpLFd0KDQpLGl0KCkoKSksMiZkKXtjb25zdCBoPVV0KDUpO3N0KDQpLFVpKCIgIixoLmxpYmluZm9bMF0/aC5saWJpbmZvWzBdLlRBQkxFX0NO''@;'; put 'put ''VDoiIiwiICIpfX1mdW5jdGlvbiBTeXQoZCxnKXtpZigxJmQmJihMMCgwKSx0dCgxLCJ0YWJsZSIpLG5uKDIsbXl0LDUsMSwidHIiLDM4KSxubigzLHZ5dCw1LDEsInRyIiwzOCksbm4oNCxBeXQsNSwxLCJ0ciIsMzgpLG5uKDUseXl0LDYsMywidHIiLDM4KSxubig2LHd5dCw1LDEsInRyIiwz''@;'; put 'put ''OCksbm4oNyxieXQsNSwxLCJ0ciIsMzgpLG5uKDgsX3l0LDUsMSwidHIiLDM4KSxubig5LEN5dCw1LDEsInRyIiwzOCksbm4oMTAsa3l0LDUsMSwidHIiLDM4KSxpdCgpLE8wKCkpLDImZCl7Y29uc3QgaD1VdCg0KTtzdCgyKSx4dCgibmdJZiIsIiIhPT1oLmxpYmluZm9bMF0uRU5HSU5FKSxz''@;'; put 'put ''dCgxKSx4dCgibmdJZiIsIiIhPT1oLmxpYmluZm9bMF0uTElCSUQpLHN0KDEpLHh0KCJuZ0lmIiwiIiE9PWgubGliaW5mb1swXS5MSUJOQU1FKSxzdCgxKSx4dCgibmdJZiIsbnVsbCE9PWgubGliaW5mb1swXS5MSUJTSVpFKSxzdCgxKSx4dCgibmdJZiIsIiIhPT1oLmxpYmluZm9bMF0uT1dO''@;'; put 'put ''RVJTKSxzdCgxKSx4dCgibmdJZiIsIiIhPT1oLmxpYmluZm9bMF0uUEFUSFMpLHN0KDEpLHh0KCJuZ0lmIiwiIiE9PWgubGliaW5mb1swXS5QRVJNUyksc3QoMSkseHQoIm5nSWYiLCIiIT09aC5saWJpbmZvWzBdLlNDSEVNQVMpLHN0KDEpLHh0KCJuZ0lmIixudWxsIT09aC5saWJpbmZvWzBd''@;'; put 'put ''LlRBQkxFX0NOVCl9fWZ1bmN0aW9uIE15dChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMTM3KSxubigxLGd5dCw0LDAsInAiLDEzOCksbm4oMixTeXQsMTEsOSwibmctY29udGFpbmVyIiwzOCksaXQoKSksMiZkKXtjb25zdCBoPVV0KDMpO3N0KDEpLHh0KCJuZ0lmIixoLmxpYmluZm8ubGVu''@;'; put 'put ''Z3RoPDEpLHN0KDEpLHh0KCJuZ0lmIixoLmxpYmluZm8ubGVuZ3RoPjApfX1mdW5jdGlvbiBFeXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9eWkoKTtMMCgwKSx0dCgxLCJkaXYiLDEyOCksYnIoMiwic2VjdGlvbiIsOTEpLHR0KDMsImRpdiIsMTI5KSg0LCJoMyIsMTMwKSxXdCg1KSxpdCgpLHR0''@;'; put 'put ''KDYsImNsci1pY29uIiwxMTApLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gYShoKSxidChVdCgyKS5yZWxvYWRMaWJJbmZvKCkpfSksaXQoKSgpLGJyKDcsImRpdiIsMTAzKSxpdCgpLHR0KDgsImRpdiIsMTMxKSxubig5LGR5dCwxLDAsImNsci1zcGlubmVyIiwxMzIpLGl0KCksbm4o''@;'; put 'put ''MTAscHl0LDQsMCwiZGl2IiwxMzMpLG5uKDExLE15dCwzLDIsImRpdiIsMTM0KSxPMCgpfWlmKDImZCl7Y29uc3QgaD1VdCgyKTtzdCg1KSxVaSgiICIsaC5saWIsIiAiKSxzdCg0KSx4dCgibmdJZiIsbnVsbD09PWgubGliaW5mbyksc3QoMSkseHQoIm5nSWYiLG51bGwhPT1oLmxpYmluZm8p''@;'; put 'put ''LHN0KDEpLHh0KCJuZ0lmIixudWxsIT09aC5saWJpbmZvKX19ZnVuY3Rpb24geHl0KGQsZyl7MSZkJiYodHQoMCwiaDMiLDEyNyksV3QoMSwiIE5vIGRhdGEgZm91bmQgd2l0aCBnaXZlbiBjb25kaXRpb25zICIpLGl0KCkpfWZ1bmN0aW9uIFR5dChkLGcpezEmZCYmKHR0KDAsImgzIiwxMjcp''@;'; put 'put ''LFd0KDEsIiBObyBkYXRhIGZvdW5kIGR1ZSB0byBzYXMgcmVxdWVzdCBlcnJvciAiKSxpdCgpKX1mdW5jdGlvbiBJeXQoZCxnKXtpZigxJmQmJih0dCgwLCJkaXYiLDE0MyksYnIoMSwiY2xyLWljb24iLDE0NCksbm4oMix4eXQsMiwwLCJoMyIsMTQ1KSxubigzLFR5dCwyLDAsImgzIiwxNDUp''@;'; put 'put ''LGl0KCkpLDImZCl7Y29uc3QgaD1VdCgyKTtzdCgyKSx4dCgibmdJZiIsaC5ub0RhdGEpLHN0KDEpLHh0KCJuZ0lmIixoLm5vRGF0YVJlcUVycil9fWZ1bmN0aW9uIER5dChkLGcpe2lmKDEmZCYmKHR0KDAsImRpdiIsMTQ2KSxicigxLCJob3QtdGFibGUiLDE0NyksaXQoKSksMiZkKXtjb25z''@;'; put 'put ''dCBoPVV0KDIpO3N0KDEpLHh0KCJtdWx0aUNvbHVtblNvcnRpbmciLCEwKSgidmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQiLDUwKSgiZGF0YSIsaC5ob3RUYWJsZS5kYXRhKSgiY29sSGVhZGVycyIsaC5ob3RUYWJsZS5jb2xIZWFkZXJzKSgiY29sdW1ucyIsaC5ob3RUYWJsZS5jb2x1bW5z''@;'; put 'put ''KSgiZmlsdGVycyIsITApKCJkcm9wZG93bk1lbnUiLGguaG90VGFibGUuZHJvcGRvd25NZW51KSgiaGVpZ2h0IixoLmhvdFRhYmxlLmhlaWdodCkoIm1vZGlmeUNvbFdpZHRoIixoLm1heFdpZHRoQ2hla2VyKSgiY2VsbHMiLGguaG90VGFibGUuY2VsbHMpKCJtYXhSb3dzIixoLmhvdFRhYmxl''@;'; put 'put ''Lm1heFJvd3MpKCJtYW51YWxDb2x1bW5SZXNpemUiLCEwKSgibGljZW5zZUtleSIsaC5ob3RUYWJsZS5saWNlbnNlS2V5KX19ZnVuY3Rpb24gTHl0KGQsZyl7aWYoMSZkJiYodHQoMCwiZGl2Iiw4NSksbm4oMSxmeXQsMjAsOSwiZGl2Iiw4Niksbm4oMixoeXQsNCwwLCJkaXYiLDg3KSxubigz''@;'; put 'put ''LEV5dCwxMiw0LCJuZy1jb250YWluZXIiLDM4KSxubig0LEl5dCw0LDIsImRpdiIsODgpLG5uKDUsRHl0LDIsMTMsImRpdiIsODkpLGl0KCkpLDImZCl7Y29uc3QgaD1VdCgpO3N0KDEpLHh0KCJuZ0lmIixoLnRhYmxlKSxzdCgxKSx4dCgibmdJZiIsIShoLmxpYnx8aC50YWJsZXx8aC5ub0Rh''@;'; put 'put ''dGFSZXFFcnJ8fGgubm9EYXRhKSksc3QoMSkseHQoIm5nSWYiLCFoLm5vRGF0YSYmIWgubm9EYXRhUmVxRXJyJiYhaC50YWJsZSYmaC5saWIpLHN0KDEpLHh0KCJuZ0lmIixoLm5vRGF0YXx8aC5ub0RhdGFSZXFFcnIpLHN0KDEpLHh0KCJuZ0lmIiwhaC5ub0RhdGEmJiFoLm5vRGF0YVJlcUVy''@;'; put 'put ''ciYmaC50YWJsZSl9fWxldCBZbmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksaixjZSxfZSxSZSl7dGhpcy5hcHBTZXJ2aWNlPWgsdGhpcy5zYXNTdG9yZVNlcnZpY2U9dix0aGlzLnNhc1NlcnZpY2U9eSx0aGlzLnJvdXRlcj1DLHRoaXMucm91dGU9SSx0aGlzLmV2ZW50''@;'; put 'put ''U2VydmljZT1qLHRoaXMubG9nZ2VyU2VydmljZT1jZSx0aGlzLmhlbHBlclNlcnZpY2U9X2UsdGhpcy5jZGY9UmUsdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0PW5ldyBSbix0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSx0aGlzLmxpYnJhcmllc1NlYXJjaD0iIix0aGlzLmxpYnJhcnlUYWJsZXNS''@;'; put 'put ''ZWY9IiIsdGhpcy5saWJyYXJpZXNUcmVlRXhwYW5kZWQ9ITEsdGhpcy5saWJpbmZvPW51bGwsdGhpcy50YWJsZXVyaT1udWxsLHRoaXMuZmlsdGVyPSExLHRoaXMuZmlsdGVyQ29scz1bXSx0aGlzLm51bGxWYXJpYWJsZXM9ITEsdGhpcy5hYm9ydEFjdGl2ZT0hMSx0aGlzLnVybEZpbHRlclBr''@;'; put 'put ''PW51bGwsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy53ZWJRdWVyeVRleHQ9IiIsdGhpcy5xdWVyeUVycj0hMSx0aGlzLnRhYmxlRmxhZz0hMCx0aGlzLmxpYnJhcmllc0xvYWRpbmc9ITEsdGhpcy5sb2FkaW5nVGFibGVWaWV3PSExLHRoaXMuc3dpdGNoRmxhZz0hMSx0aGlzLm5vRGF0YT0hMSx0''@;'; put 'put ''aGlzLm5vRGF0YVJlcUVycj0hMSx0aGlzLnRhYmxlRGlzYWJsZT0hMSx0aGlzLmFjdGlvbkRpc2FibGU9ITEsdGhpcy5vcGVuRG93bmxvYWQ9ITEsdGhpcy53ZWJRdWVyeT0hMSx0aGlzLndlYlF1ZXJ5VGFiPSExLHRoaXMuZG93bmxvYWRGb3JtYXQ9IkNTViIsdGhpcy5zYXNqc0NvbmZpZz1u''@;'; put 'put ''ZXcgUWQuU0FTanNDb25maWcsdGhpcy5zZWFyY2hMb2FkaW5nPSExLHRoaXMuc2VhcmNoTnVtZXJpYz0hMSx0aGlzLm51bWJlck9mUm93cz1udWxsLHRoaXMuaGVhZGVyUGtzPVtdLHRoaXMuJGRhdGFGb3JtYXRzPW51bGwsdGhpcy5kYXRhc2V0SW5mbz0hMSx0aGlzLmRzbWV0YT1bXSx0aGlz''@;'; put 'put ''LmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10sY29sdW1uczpbXSxoZWlnaHQ6IjEwMCUiLG1heFJvd3M6dGhpcy5hcHBTZXJ2aWNlLmRlbW9MaW1pdHMucm93c19hbGxvd2VkfHwxLzAsc2V0dGluZ3M6e30sYWZ0ZXJHZXRDb2xIZWFkZXI6dm9pZCAwLGxpY2Vuc2VLZXk6dm9pZCAw''@;'; put 'put ''LGRyb3Bkb3duTWVudTp7aXRlbXM6e21ha2VfcmVhZF9vbmx5OntuYW1lOiJtYWtlX3JlYWRfb25seSJ9LGFsaWdubWVudDp7bmFtZToiYWxpZ25tZW50In0sc3AxOntuYW1lOiItLS0tLS0tLS0ifSxpbmZvOntuYW1lOiJ0ZXN0IGluZm8iLHJlbmRlcmVyOihOZSxLZSxodCxCdCwkdCxobik9''@;'; put 'put ''Pnt2YXIgRG4saXI7Y29uc3QgcHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2xldCBFcixBcj0iTm8gaW5mbyBmb3VuZCI7aWYodGhpcy5ob3RJbnN0YW5jZSl7Y29uc3QgWXI9dGhpcy5ob3RJbnN0YW5jZS5nZXRTZWxlY3RlZCgpfHxbXSxfaT1Zcj9ZclswXVsxXTotMSxLaT1u''@;'; put 'put ''dWxsPT09KERuPXRoaXMuaG90SW5zdGFuY2UpfHx2b2lkIDA9PT1Ebj92b2lkIDA6RG4uY29sVG9Qcm9wKF9pKTtFcj1udWxsPT09KGlyPXRoaXMuJGRhdGFGb3JtYXRzKXx8dm9pZCAwPT09aXI/dm9pZCAwOmlyLnZhcnNbS2ldLEVyJiYoQXI9YExBQkVMOiAke251bGw9PUVyP3ZvaWQgMDpF''@;'; put 'put ''ci5sYWJlbH08YnI+VFlQRTogJHtudWxsPT1Fcj92b2lkIDA6RXIudHlwZX08YnI+TEVOR1RIOiAke251bGw9PUVyP3ZvaWQgMDpFci5sZW5ndGh9PGJyPkZPUk1BVDogJHtudWxsPT1Fcj92b2lkIDA6RXIuZm9ybWF0fWApfXJldHVybiBwci5pbm5lckhUTUw9QXIscHJ9fX19fSx0aGlzLmhv''@;'; put 'put ''dEluc3RhbmNlPW51bGwsdGhpcy5ob3RJbnN0YW5jZUNsaWNrTGlzdGVuZXI9ITEsdGhpcy5ob3RUYWJsZVJlZ2lzdGVyZXI9bmV3IGpPLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCl9bmdPbkluaXQoKXsiIiE9PXJpLnZpZXdlci5jdXJyZW50U2Vs''@;'; put 'put ''ZWN0aW9uJiYwPT09T2JqZWN0LmtleXModGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMpLmxlbmd0aCYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyaS52aWV3ZXIuY3VycmVudFNlbGVjdGlvbiksdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtJiYocmkudmll''@;'; put 'put ''d2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvZGF0YSIpLHRoaXMuYXBwU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGg9Pnt0aGlzLmhvdFRhYmxlLmxpY2Vuc2VLZXk9aH0pfXJlc2V0RmlsdGVyKCl7dGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0LmZpcnN0JiZ0aGlzLnF1ZXJ5''@;'; put 'put ''RmlsdGVyQ29tcExpc3QuZmlyc3QucmVzZXRGaWx0ZXIoKX1zZWFyY2hUYWJsZShoKXtyZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc2VhcmNoTG9hZGluZz0hMDtsZXQgdj1oLnZhbHVlLHk9dGhpcy5saWIrIi4iK3RoaXMudGFibGUsQz1wYXJzZUludCh0''@;'; put 'put ''aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCl8fDA7eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGFTZWFyY2godix0aGlzLnNlYXJjaE51bWVyaWMseSxDKS50aGVuKEk9PntJLnNhc3BhcmFtc3x8SS52aWV3RGF0YT8odGhpcy5ob3RUYWJsZS5kYXRhPUkudmll''@;'; put 'put ''d2RhdGEsdGhpcy4kZGF0YUZvcm1hdHM9SS4kdmlld2RhdGEsdGhpcy5kc21ldGE9SS5kc21ldGEsdGhpcy5udW1iZXJPZlJvd3M9SS5zYXNwYXJhbXNbMF0uTk9CUyx0aGlzLnF1ZXJ5VGV4dD1JLnNhc3BhcmFtc1swXS5GSUxURVJfVEVYVCx0aGlzLmhlYWRlclBrcz1JLnNhc3BhcmFtc1sw''@;'; put 'put ''XS5QS19GSUVMRFMuc3BsaXQoIiAiKSwwPT09dGhpcy5ob3RUYWJsZS5kYXRhLmxlbmd0aD90aGlzLm5vRGF0YT0hMDoodGhpcy5ub0RhdGE9ITEsdGhpcy50YWJsZUZsYWc9ITEsdGhpcy5zZXR1cEhvdCgpKSk6dGhpcy5zZWFyY2hMb2FkaW5nPSExfSkuY2F0Y2goST0+e3RoaXMubG9nZ2Vy''@;'; put 'put ''U2VydmljZS5lcnJvcihJKX0pLHRoaXMuc2VhcmNoTG9hZGluZz0hMX0pfXJlbG9hZFRhYmxlRGF0YSgpe3RoaXMudmlld0RhdGEodGhpcy51cmxGaWx0ZXJQa3x8MCl9cmVsb2FkTGliSW5mbygpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5saWJpbmZv''@;'; put 'put ''PW51bGwsdGhpcy5zYXNTdG9yZVNlcnZpY2UucmVmcmVzaExpYkluZm8odGhpcy5saWIpLnRoZW4oaD0+dG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMubGliaW5mbz1oLmxpYmluZm8scmkudmlld2VyLmxpYmluZm89dGhpcy5saWJpbmZvO2NvbnN0IHY9dGhpcy5saWJy''@;'; put 'put ''YXJpZXMuZmluZCh5PT55LkxJQlJBUllSRUY9PT10aGlzLmxpYik7diYmKHYubGliaW5mbz10aGlzLmxpYmluZm8pfSksaD0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihoKSxudWxsPT09dGhpcy5saWJpbmZvJiYodGhpcy5saWJpbmZvPVtdKX0pfSl9ZmlsdGVyRm4oaCl7dGhpcy5saWJy''@;'; put 'put ''YXJpZXM9dGhpcy5saWJyYXJpZXMuZmlsdGVyKHk9Pi0xIT09eS5MSUJSQVJZTkFNRS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoaC50b0xvY2FsZUxvd2VyQ2FzZSgpKSl9ZG93bmxvYWREYXRhKCl7bGV0IGg9dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdj10aGlzLnNhc2pzQ29uZmlnLmFw''@;'; put 'put ''cExvYztjb25zdCB5PXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7bGV0IGNlLEM9IiZ0eXBlPSIrdGhpcy5kb3dubG9hZEZvcm1hdCxJPSImdGFibGU9Iit0aGlzLnRhYmxlVGl0bGUsaj0iU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU/YCZfY29udGV4''@;'; put 'put ''dG5hbWU9JHt0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lfWA6IiI7Y2U9dm9pZCAwPT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWQ/MDpwYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCksd2luZG93Lm9wZW4oaCt5KyIvP19wcm9ncmFt''@;'; put 'put ''PSIrdisiL3NlcnZpY2VzL3B1YmxpYy9nZXRyYXdkYXRhIitDK0kraisiJmZpbHRlcj0iK2NlKSx0aGlzLm9wZW5Eb3dubG9hZD0hMX1kb3dubG9hZERETCgpe2xldCBoPXRoaXMubGliLHY9dGhpcy50YWJsZSx5PXRoaXMuZG93bmxvYWRGb3JtYXQucmVwbGFjZSgiX0RETCIsIiIpLEM9dGhp''@;'; put 'put ''cy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsST10aGlzLnNhc2pzQ29uZmlnLmFwcExvYztjb25zdCBqPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oQytqKyIvP19wcm9ncmFtPSIrSSsiL3NlcnZpY2VzL3B1YmxpYy9nZXRkZGwiK2AmZHM9JHt2fSZsaWJy''@;'; put 'put ''ZWY9JHtofSZmbGF2b3VyPSR7eX0keyJTQVNWSVlBIj09PXRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT9gJl9jb250ZXh0bmFtZT0ke3RoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWV9YDoiIn1gKSx0aGlzLm9wZW5Eb3dubG9hZD0hMX1vbkNsaUNvbW1hbmRGb2N1cyhoKXtoLnByZXZl''@;'; put 'put ''bnREZWZhdWx0KCksaC50YXJnZXQuc2VsZWN0KCl9ZWRpdFRhYmxlKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMubGliVGFiKX10YWJsZUVkaXRFeGlzdHMoKXtsZXQgaD17fTtoPXJpLmVkaXRvci5saWJzQW5kVGFibGVzO2xldCB2PXRoaXMubGliVGFiLnNw''@;'; put 'put ''bGl0KCIuIilbMV0seT10aGlzLmxpYlRhYi5zcGxpdCgiLiIpWzBdO3JldHVybiEhaFt5XSYmaFt5XS5pbmNsdWRlcyh2KX1nb1RvTGluZWFnZSgpe2xldCB2PWAvdmlldy9saW5lYWdlLyR7dGhpcy50YWJsZXVyaS5zcGxpdCgiXFwiKVsxXX0vUkVWRVJTRWA7dGhpcy5yb3V0ZXIubmF2aWdh''@;'; put 'put ''dGVCeVVybCh2KX1zaG93V2ViUXVlcnkoKXtsZXQgaDt0aGlzLndlYlF1ZXJ5PSEwLGg9dm9pZCAwPT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWQ/MDpwYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCk7bGV0IHY9d2luZG93LmxvY2F0aW9u''@;'; put 'put ''LnBvcnQubGVuZ3RoPjA/IjoiK3dpbmRvdy5sb2NhdGlvbi5wb3J0OiIiO2NvbnN0IHk9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTtsZXQgST1gJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0ke3Z9LyR7eX0vP19wcm9n''@;'; put 'put ''cmFtPSR7dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2N9L3NlcnZpY2VzL3B1YmxpYy9nZXRyYXdkYXRhJnR5cGU9V0VCJHt0aGlzLndlYlF1ZXJ5VGFiPyJUQUIiOiJDU1YifSZ0YWJsZT0ke3RoaXMudGFibGVUaXRsZX0keyImZmlsdGVyPSIraH1gO3RoaXMud2ViUXVlcnlUZXh0PUkucmVwbGFj''@;'; put 'put ''ZSgvIC9naW0sIiUyMCIpfWNvcHlUb0NsaXAoKXtsZXQgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2guc3R5bGUucG9zaXRpb249ImZpeGVkIixoLnN0eWxlLmxlZnQ9IjAiLGguc3R5bGUudG9wPSIwIixoLnN0eWxlLm9wYWNpdHk9IjAiLGgudmFsdWU9dGhpcy53ZWJR''@;'; put 'put ''dWVyeVRleHQsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoKSxoLmZvY3VzKCksaC5zZWxlY3QoKSxkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaCl9Z29Ub1ZpZXdlcigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2Rh''@;'; put 'put ''dGEiKX1zaG93VGFibGVTZWxlY3QoKXt0aGlzLnRhYmxlRmxhZz0hdGhpcy50YWJsZUZsYWd9Y2hlY2tFeHBhbmQoaCl7fWNvbGxhcHNlTGlicmFyeUl0ZW1zKGgsdil7aC5mb3JFYWNoKHk9Pnt5LkxJQlJBUllSRUYhPT12LkxJQlJBUllSRUYmJih5LmV4cGFuZGVkPSExKX0pfWxvYWRNb3Jl''@;'; put 'put ''TGlicmFyaWVzKCl7dGhpcy5saWJyYXJpZXNQYWdpbmd8fCh0aGlzLmxpYnJhcmllc1BhZ2luZz0hMCx0aGlzLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcmllcywhMCksdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEpfXRyZWVOb2RlQ2xpY2tlZChoLHYpeyJDb2xs''@;'; put 'put ''YXBzZSI9PT1oLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyx2KX1saWJyYXJ5RXhwYW5kZWRDaGFuZ2UoaCx2KXtoJiZ0aGlzLmNvbGxhcHNlTGlicmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLHYpfWxpYnJhcnlPbkNsaWNrKGgsdix5KXty''@;'; put 'put ''ZXR1cm4gdG8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKHYudGFibGVzP3YuZXhwYW5kZWQ9ISF5fHwhdi5leHBhbmRlZDp5aWVsZCB0aGlzLnNlbGVjdFRhYmxlKGgsITEsdiksdi5leHBhbmRlZCl7dGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpO2xldCBDPWRvY3VtZW50LnF1''@;'; put 'put ''ZXJ5U2VsZWN0b3IoYCNzZWFyY2hfJHt2LkxJQlJBUllSRUZ9YCk7dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZygiW2xpYlRyZWVTZWFyY2hJbnB1dF0iLEMpLEMmJkMuZm9jdXMoKSx2JiZ2LmxpYmluZm8mJih0aGlzLmxpYmluZm89di5saWJpbmZvKSx0aGlzLmxpYiYmdGhpcy50YWJsZSYmIXkm''@;'; put 'put ''JnRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiLHtza2lwTG9jYXRpb25DaGFuZ2U6ITB9KS50aGVuKCgpPT57dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iK3RoaXMubGliKX0pfXRoaXMuY29sbGFwc2VMaWJyYXJ5SXRlbXModGhpcy5saWJyYXJp''@;'; put 'put ''ZXMsdil9KX1zZWxlY3RUYWJsZShoLHYseSl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt5LmxvYWRpbmdUYWJsZXM9ITAsdGhpcy50YWJsZT0hMSx0aGlzLnRhYmxlRGlzYWJsZT0hMCwiUGxlYXNlIHNlbGVjdCBsaWJyYXJ5IiE9PWg/cmkudmlld2VyLnRhYmxl''@;'; put 'put ''c1NldCYmdj8odGhpcy5hYm9ydEFjdGl2ZT0hMSx0aGlzLnRhYmxlRGlzYWJsZT0hMSx0aGlzLnRhYmxlcz1yaS52aWV3ZXIudGFibGVzLHRoaXMubGliaW5mbz1yaS52aWV3ZXIubGliaW5mbyk6KHRoaXMubGliaW5mbz1udWxsLHlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJs''@;'; put 'put ''ZXMoaCkudGhlbihDPT57dGhpcy5hYm9ydEFjdGl2ZT0hMSx0aGlzLnRhYmxlRGlzYWJsZT0hMTtsZXQgST1DLm1wdGFibGVzLm1hcChmdW5jdGlvbihqKXtyZXR1cm4gai5NRU1OQU1FfSk7dGhpcy5saWJpbmZvPUMubGliaW5mb3x8W10sdGhpcy50YWJsZXM9SSx5JiYoeS50YWJsZXM9SSx5''@;'; put 'put ''LmxpYmluZm89dGhpcy5saWJpbmZvKSx0aGlzLnJvdXRlci51cmwuc3BsaXQoIi8iKS5sZW5ndGg+MyYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iKSxyaS52aWV3ZXIubGlicmFyaWVzPXRoaXMubGlicmFyaWVzLHJpLnZpZXdlci5saWJyYXJ5PXRoaXMubGliLHJp''@;'; put 'put ''LnZpZXdlci50YWJsZXM9dGhpcy50YWJsZXMscmkudmlld2VyLmxpYmluZm89dGhpcy5saWJpbmZvLHJpLnZpZXdlci50YWJsZXNTZXQ9ITB9KS5jYXRjaChDPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKEMpLHRoaXMuYWJvcnRBY3RpdmU9ITAsdGhpcy5ub0RhdGE9ITAsdGhpcy50YWJs''@;'; put 'put ''ZVRpdGxlPSIiLHRoaXMudGFibGVEaXNhYmxlPSEwfSkpOnRoaXMudGFibGVEaXNhYmxlPSEwLHJpLnZpZXdlci5saWJyYXJ5PXRoaXMubGliLHZ8fHRoaXMuY2xlYXJHbG9iYWxzRmlsdGVyKCkseS5sb2FkaW5nVGFibGVzPSExLHkuZXhwYW5kZWQ9IXkuZXhwYW5kZWR9KX1zZWxlY3RMaWJU''@;'; put 'put ''YWJsZShoLHYpeyJQbGVhc2Ugc2VsZWN0IHRhYmxlIiE9PWg/KHRoaXMuYWN0aW9uRGlzYWJsZT0hMSx0aGlzLmxpYlRhYj10aGlzLmxpYisiLiIrdGhpcy50YWJsZSk6dGhpcy5hY3Rpb25EaXNhYmxlPSEwLHJpLnZpZXdlci50YWJsZT1oLHZ8fHRoaXMuY2xlYXJHbG9iYWxzRmlsdGVyKCks''@;'; put 'put ''dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLmxpYlRhYil9Y2xlYXJHbG9iYWxzRmlsdGVyKCl7cmkudmlld2VyLmZpbHRlci5saWJkcz0iIixyaS52aWV3ZXIuZmlsdGVyLndoZXJlQ2xhdXNlPSIiLHJpLnZpZXdlci5maWx0ZXIuZ3JvdXBMb2dpYz0iIixyaS52aWV3ZXIuZmlsdGVyLmNs''@;'; put 'put ''YXVzZXM9W10scmkudmlld2VyLmZpbHRlci5jb2xzPVtdLHJpLnZpZXdlci5maWx0ZXIudmFscz1bXX1saWJUYWJBY3RpdmUoaCx2KXtyZXR1cm4hIXRoaXMubGliVGFiJiZoKyIuIit2PT09dGhpcy5saWJUYWJ9dHJlZU9uRmlsdGVyKGgsdil7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZp''@;'; put 'put ''bHRlcihoLHYpfWxpYnJhcnlPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5saWJyYXJpZXMsdGhpcy5saWJyYXJpZXNTZWFyY2gsIkxJQlJBUllOQU1FIikscmkudmlld2VyLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH1saWJy''@;'; put 'put ''YXJ5UmVzZXRGaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UucmVzZXRBcnJheUZpbHRlcih0aGlzLmxpYnJhcmllcyl9dmlld0RhdGEoaCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgdjtpZih0aGlzLmxvYWRpbmdUYWJsZVZpZXc9ITAsdm9pZCAwPT09''@;'; put 'put ''dGhpcy5saWJEYXRhc2V0KXY9dGhpcy5saWIrIi4iK3RoaXMudGFibGU7ZWxzZSBpZih2b2lkIDA9PT10aGlzLmxpYiYmdm9pZCAwPT09dGhpcy50YWJsZSl7bGV0IEk9W107aWYoST10aGlzLmxpYkRhdGFzZXQuc3BsaXQoIi4iKSxyaS52aWV3ZXIuc3RhcnR1cFNldD90aGlzLmxpYnJhcmll''@;'; put 'put ''cz1yaS52aWV3ZXIubGlicmFyaWVzOnlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihqPT57dGhpcy5saWJyYXJpZXM9ai5zYXNsaWJzfSkuY2F0Y2goaj0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihqKX0pLHRoaXMubGliPUlbMF0scmkudmlld2VyLnN0YXJ0''@;'; put 'put ''dXBTZXQpdGhpcy50YWJsZXM9cmkudmlld2VyLnRhYmxlcztlbHNle2xldCBqPXRoaXMubGlicmFyaWVzLmZpbmQoY2U9PmNlLkxJQlJBUllSRUYudG9Mb3dlckNhc2UoKT09PXRoaXMubGliLnRvTG93ZXJDYXNlKCkpO3lpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJsZXModGhp''@;'; put 'put ''cy5saWIpLnRoZW4oY2U9Pnt0aGlzLnRhYmxlcz1jZS5tcHRhYmxlcy5tYXAoZnVuY3Rpb24oX2Upe3JldHVybiBfZS5NRU1OQU1FfSksai50YWJsZXM9dGhpcy50YWJsZXMscmkudmlld2VyLmxpYnJhcmllcz10aGlzLmxpYnJhcmllcyxyaS52aWV3ZXIudGFibGVzPXRoaXMudGFibGVzLHJp''@;'; put 'put ''LnZpZXdlci5zdGFydHVwU2V0PSEwfSkuY2F0Y2goY2U9Pnt0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoY2UpfSl9dGhpcy50YWJsZT1JWzFdLHRoaXMudGFibGVGbGFnPSExLHY9dGhpcy5saWJEYXRhc2V0LHRoaXMubGliVGFiPXZ9ZWxzZSByaS52aWV3ZXIuc3RhcnR1cFNldD90aGlzLmxp''@;'; put 'put ''YnJhcmllcz1yaS52aWV3ZXIubGlicmFyaWVzOnlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihJPT57dGhpcy5saWJyYXJpZXM9SS5zYXNsaWJzfSkuY2F0Y2goST0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihJKX0pLHZvaWQgMCE9PXRoaXMudGFibGUmJihy''@;'; put 'put ''aS52aWV3ZXIuc3RhcnR1cFNldD90aGlzLnRhYmxlcz1yaS52aWV3ZXIudGFibGVzOnlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJsZXModGhpcy5saWIpLnRoZW4oST0+e3RoaXMudGFibGVzPUkubXB0YWJsZXMubWFwKGZ1bmN0aW9uKGope3JldHVybiBqLk1FTU5BTUV9KX0p''@;'; put 'put ''LmNhdGNoKEk9Pnt0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoSSksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfSksdGhpcy50YWJsZUZsYWc9ITEsdj10aGlzLmxpYisiLiIrdGhpcy50YWJsZSx0aGlzLnRhYmxlVGl0bGU9dix0aGlzLmxpYlRhYj12KTt0aGlzLnJv''@;'; put 'put ''dXRlci51cmwuc3BsaXQoIi8iKS5sZW5ndGg+MyYmdiYmKHlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdEYXRhKHYsaCkudGhlbihJPT57aWYoSS5xdWVyeS5sZW5ndGg+MCYmInZpZXciPT09cmkucm9vdFBhcmFtJiYwPT09cmkudmlld2VyLmZpbHRlci5jbGF1c2VzLmxlbmd0aCYm''@;'; put 'put ''KHJpLnZpZXdlci5maWx0ZXIucXVlcnk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShJLnF1ZXJ5KSxyaS52aWV3ZXIuZmlsdGVyLmxpYmRzPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSx0aGlzLnNhc1N0b3JlU2VydmljZS5pbml0aWFsaXplR2xvYmFsRmlsdGVyQ2xh''@;'; put 'put ''dXNlKCJ2aWV3IixJLmNvbHMpKSx0aGlzLmFib3J0QWN0aXZlPSExLHRoaXMuZmlsdGVyQ29scz1JLmNvbHMsWExlKHRoaXMuZmlsdGVyQ29scyxbXSxJLiR2aWV3ZGF0YSksdGhpcy5udW1iZXJPZlJvd3M9SS5zYXNwYXJhbXNbMF0uTk9CUyx0aGlzLmhlYWRlclBrcz1JLnNhc3BhcmFtc1sw''@;'; put 'put ''XS5QS19GSUVMRFMuc3BsaXQoIiAiKSwiU0FTOSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUpe2xldCBOZT1JLnNhc3BhcmFtc1swXS5UQUJMRVVSSTtOZSYmTmUubGVuZ3RoPjAmJih0aGlzLnRhYmxldXJpPU5lKX10aGlzLmhvdFRhYmxlLmRhdGE9SS52aWV3ZGF0YSx0aGlzLiRk''@;'; put 'put ''YXRhRm9ybWF0cz1JLiR2aWV3ZGF0YSx0aGlzLmRzbWV0YT1JLmRzbWV0YSx0aGlzLnF1ZXJ5VGV4dD1JLnNhc3BhcmFtc1swXS5GSUxURVJfVEVYVDtsZXQgaj1bXSxjZT1bXTtmb3IobGV0IE5lIGluIEkudmlld2RhdGFbMF0pTmUmJmNlLnB1c2goTmUpO2ZvcihsZXQgTmU9MDtOZTxjZS5s''@;'; put 'put ''ZW5ndGg7TmUrKylqLnB1c2goe2RhdGE6Y2VbTmVdfSk7dGhpcy5ob3RUYWJsZS5jb2xIZWFkZXJzPWNlLHRoaXMuaG90VGFibGUuY29sdW1ucz1qLHRoaXMuaG90VGFibGUuY2VsbHM9ZnVuY3Rpb24oKXtyZXR1cm57cmVhZE9ubHk6ITB9fSx0aGlzLnRhYmxlRmxhZz0hMTtsZXQgUmU9W107''@;'; put 'put ''UmU9di5zcGxpdCgiLiIpLHRoaXMubGliPVJlWzBdLHRoaXMudGFibGU9UmVbMV0sMD09PXRoaXMuaG90VGFibGUuZGF0YS5sZW5ndGg/KHRoaXMubm9EYXRhPSEwLHRoaXMudGFibGVGbGFnPSEwKToodGhpcy5ub0RhdGE9ITEsdGhpcy50YWJsZUZsYWc9ITEpLHRoaXMubm9EYXRhUmVxRXJy''@;'; put 'put ''PSExfSkuY2F0Y2goST0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihJKSx0aGlzLmFib3J0QWN0aXZlPSEwLHRoaXMubm9EYXRhUmVxRXJyPSEwfSkpLHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygiL2RhdGEiKSYmdiYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgwIT09aD8iL3ZpZXcv''@;'; put 'put ''ZGF0YS8iK3YrIi8iK2g6Ii92aWV3L2RhdGEvIit2KTtsZXQgeT10aGlzLnRhYmxlLEM9dGhpcy5saWJyYXJpZXMuZmluZChJPT5JLkxJQlJBUllSRUYudG9Mb3dlckNhc2UoKT09PXRoaXMubGliLnRvTG93ZXJDYXNlKCkpO0M/cmkudmlld2VyLmxpYnJhcmllcy5sZW5ndGg+MD8odGhpcy5s''@;'; put 'put ''aWJyYXJpZXM9cmkudmlld2VyLmxpYnJhcmllcyx0aGlzLmxpYnJhcmllc1NlYXJjaD1yaS52aWV3ZXIubGlicmFyaWVzU2VhcmNoLHRoaXMubGlicmFyeU9uQ2xpY2sodGhpcy5saWIsQywhMCkpOnRoaXMuc2VsZWN0VGFibGUodGhpcy5saWIsITEsQyk6dGhpcy5saWJpbmZvPVtdLHRoaXMu''@;'; put 'put ''dGFibGU9eXx8dGhpcy50YWJsZSx0aGlzLmxpYnJhcmllcyYmdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJpZXMpLHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygiL2RhdGEiKSYmdGhpcy5ldmVudFNlcnZpY2UuY2xvc2VTaWRlYmFyKCksdGhpcy5sb2Fk''@;'; put 'put ''aW5nVGFibGVWaWV3PSExLCF0aGlzLm5vRGF0YSYmIXRoaXMubm9EYXRhUmVxRXJyJiZ2JiZ0aGlzLnNldHVwSG90KCksdGhpcy5ob3RJbnN0YW5jZUNsaWNrTGlzdGVuZXJ8fHNldFRpbWVvdXQoKCk9PntsZXQgST1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG90SW5zdGFuY2UiKTtJJiYo''@;'; put 'put ''SS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGo9PntzZXRUaW1lb3V0KCgpPT57bGV0IGNlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kZWJ1Zy1zd2l0Y2gtaXRlbSIpfHx2b2lkIDA7Y2UmJmNlLmNsaWNrKCl9LDEwMCl9KSx0aGlzLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5lcj0h''@;'; put 'put ''MCl9LDJlMyl9KX1tYXhXaWR0aENoZWtlcihoLHYpe3JldHVybiBoPjIwMD8yMDA6aH1vcGVuUWIoKXt0aGlzLmZpbHRlcj0hMCx0aGlzLmNkZi5kZXRlY3RDaGFuZ2VzKCksdGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2V0UXVlcnlWYXJpYWJsZXModGhpcy5saWIrIi4iK3RoaXMudGFibGUsdGhp''@;'; put 'put ''cy5maWx0ZXJDb2xzKX1zZW5kQ2xhdXNlKCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnN1Ym1pdExvYWRpbmc9ITA7bGV0IGg9W10sdj1bXTtpZih2b2lkIDA9PT10aGlzLmNsYXVzZXMpcmV0dXJuIHRoaXMubnVsbFZhcmlhYmxlcz0hMCx2b2lkKHRo''@;'; put 'put ''aXMuc3VibWl0TG9hZGluZz0hMSk7e2xldCB5PXRoaXMuY2xhdXNlcy5xdWVyeU9iajtpZih5WzBdLmVsZW1lbnRzLmxlbmd0aDwxKXJldHVybiJ2aWV3Ij09PXJpLnJvb3RQYXJhbSYmKHJpLnZpZXdlci5maWx0ZXIuY2xhdXNlcz1bXSxyaS52aWV3ZXIuZmlsdGVyLnF1ZXJ5PVtdLHJpLnZp''@;'; put 'put ''ZXdlci5maWx0ZXIuZ3JvdXBMb2dpYz0iIiksdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrdGhpcy5saWJkcyk7Zm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspe2NvbnN0IEk9eVtDXS5lbGVtZW50cztoPUkuZmlsdGVyKGZ1bmN0aW9uKGope3JldHVybiBu''@;'; put 'put ''dWxsPT09ai52YXJpYWJsZX0pLGgubGVuZ3RoJiZ2LnB1c2goSSl9fWlmKHYubGVuZ3RoKXJldHVybiB0aGlzLm51bGxWYXJpYWJsZXM9ITAsdm9pZCh0aGlzLnN1Ym1pdExvYWRpbmc9ITEpO3tjb25zdCB5PXtncm91cExvZ2ljOnRoaXMuY2xhdXNlcy5ncm91cExvZ2ljLGZpbHRlckdyb3Vw''@;'; put 'put ''czpbXX07dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmZvckVhY2goST0+e2NvbnN0IGo9e2ZpbHRlckNsYXVzZXM6W119O0kuZWxlbWVudHMuZm9yRWFjaChjZT0+e2ouZmlsdGVyQ2xhdXNlcy5wdXNoKHRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoY2UpKX0pLGouY2xhdXNlTG9naWM9SS5j''@;'; put 'put ''bGF1c2VMb2dpYyx5LmZpbHRlckdyb3Vwcy5wdXNoKHRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoaikpfSk7Y29uc3QgQz10aGlzLnNhc1N0b3JlU2VydmljZS5jcmVhdGVGaWx0ZXJRdWVyeVRhYmxlKHkpO3lpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNhdmVRdWVyeSh0aGlzLmxp''@;'; put 'put ''YmRzLEMpLnRoZW4oST0+e3RoaXMucXVlcnlUZXh0PUkucmVzdWx0WzBdLkZJTFRFUl9URVhUO2xldCBqPUkucmVzdWx0WzBdLkZJTFRFUl9SSzt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrdGhpcy5saWJkcysiLyIraiksdGhpcy52aWV3RGF0YShqKSx0aGlzLmZp''@;'; put 'put ''bHRlcj0hMX0pLmNhdGNoKEk9Pnt0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoSSl9KSx0aGlzLnN1Ym1pdExvYWRpbmc9ITF9fSl9cmVtb3ZlUXVlcnkoKXt0aGlzLnNhc1N0b3JlU2VydmljZS5yZW1vdmVDbGF1c2UoKX1zZXR1cEhvdCgpe3NldFRpbWVvdXQoKCk9PnshdGhpcy5sb2FkaW5n''@;'; put 'put ''VGFibGVWaWV3JiZ0aGlzLmxpYkRhdGFzZXQmJih0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90VGFibGVSZWdpc3RlcmVyLmdldEluc3RhbmNlKCJob3RJbnN0YW5jZSIpLHRoaXMuaG90SW5zdGFuY2UmJnRoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2hlaWdodDp0aGlzLmhvdFRh''@;'; put 'put ''YmxlLmhlaWdodCxtb2RpZnlDb2xXaWR0aDpmdW5jdGlvbihoLHYpe3JldHVybiBoPjUwMD81MDA6aH0sYWZ0ZXJHZXRDb2xIZWFkZXI6KGgsdik9Pnt2YXIgeTtjb25zdCBDPW51bGw9PT0oeT10aGlzLmhvdEluc3RhbmNlKXx8dm9pZCAwPT09eT92b2lkIDA6eS5jb2xUb1Byb3AoaCk7QyYm''@;'; put 'put ''dGhpcy5oZWFkZXJQa3MuaW5kZXhPZihDKT4tMSYmdi5jbGFzc0xpc3QuYWRkKCJwcmltYXJ5S2V5SGVhZGVyU3R5bGUiKX19KSl9LDFlMyl9bG9hZFdpdGhQYXJhbWV0ZXJzKCl7cmV0dXJuIHRvKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnN3aXRjaEZsYWc9ITAsdGhp''@;'; put 'put ''cy50YWJsZVRpdGxlPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbXx8MCx0aGlzLnVybEZpbHRlclBrPXBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkfHwiMCIpO2xldCB2PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbTt0aGlzLmxp''@;'; put 'put ''YkRhdGFzZXQ9dix2LmluY2x1ZGVzKCIuIil8fCh0aGlzLmxpYj12KSx5aWVsZCB0aGlzLnZpZXdEYXRhKHRoaXMudXJsRmlsdGVyUGspLHRoaXMubm9EYXRhP3NldFRpbWVvdXQoKCk9Pnt0aGlzLnRhYmxlRmxhZz0hMH0sMTIwMCk6c2V0VGltZW91dCgoKT0+e3RoaXMudGFibGVGbGFnPSEx''@;'; put 'put ''fSwxMjAwKX0pfWxvYWRXaXRob3V0UGFyYW1ldGVycygpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zd2l0Y2hGbGFnPSExLHRoaXMubGlicmFyaWVzTG9hZGluZz0hMCxyaS52aWV3ZXIuc3RhcnR1cFNldD9zZXRUaW1lb3V0KCgpPT57dGhpcy5saWJy''@;'; put 'put ''YXJpZXM9cmkudmlld2VyLmxpYnJhcmllcyx0aGlzLmxpYnJhcmllc1NlYXJjaD1yaS52aWV3ZXIubGlicmFyaWVzU2VhcmNoLHRoaXMubGliPXJpLnZpZXdlci5saWJyYXJ5LHRoaXMubGlicmFyaWVzVHJlZUV4cGFuZGVkPSEwLHRoaXMubGlicmFyaWVzTG9hZGluZz0hMSx0aGlzLmhlbHBl''@;'; put 'put ''clNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcmllcyl9LDEwMCk6KHRoaXMubm9EYXRhUmVxRXJyPSExLHlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihoPT57dGhpcy5saWJyYXJpZXM9aC5zYXNsaWJzLHJpLnZpZXdlci5saWJyYXJpZXM9dGhp''@;'; put 'put ''cy5saWJyYXJpZXMscmkudmlld2VyLnN0YXJ0dXBTZXQ9ITAsdGhpcy5saWJyYXJpZXNMb2FkaW5nPSExLHRoaXMuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKHRoaXMubGlicmFyaWVzKX0pLmNhdGNoKGg9Pnt0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoaCksdGhpcy5saWJyYXJp''@;'; put 'put ''ZXNMb2FkaW5nPSExLHRoaXMubm9EYXRhUmVxRXJyPSEwfSkpfSl9bmdBZnRlclZpZXdJbml0KCl7fW5nQWZ0ZXJDb250ZW50SW5pdCgpe3JldHVybiB0byh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5ob3RUYWJsZS5kYXRhLmxlbmd0aD4wJiYodGhpcy50YWJsZUZsYWc9''@;'; put 'put ''ITApLHRoaXMuX3F1ZXJ5PXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZShoPT57dGhpcy53aGVyZVN0cmluZz1oLnN0cmluZyx0aGlzLmNsYXVzZXM9aC5vYmosdGhpcy5saWJkcz1oLmxpYmRzfSksdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVt''@;'; put 'put ''P3RoaXMubG9hZFdpdGhQYXJhbWV0ZXJzKCk6dGhpcy5sb2FkV2l0aG91dFBhcmFtZXRlcnMoKX0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChzaCksS3Qoa2cpLEt0KGwwKSxLdChFbCksS3QoSjEpLEt0KG11KSxLdChHaCksS3QoY2MpLEt0''@;'; put 'put ''KGQxKSl9LGQuXHUwMjc1Y21wPXZpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC12aWV3ZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZnMChCQXQsNSksMiZoKXtsZXQgeTt6aSh5PUFpKCkpJiYodi5xdWVyeUZpbHRlckNvbXBMaXN0PXkpfX0saG9zdEF0dHJzOlsxLCJj''@;'; put 'put ''b250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjk0LHZhcnM6MjgsY29uc3RzOltbMywic2Nyb2xsZWRUb0JvdHRvbSJdLFsiY2xhc3MiLCJteS0xMC1teC1hdXRvIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JP''@;'; put 'put ''ZiJdLFsiY2xhc3MiLCJ3LTEwMCB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwibW9kYWwgei1pbmRleC1oaWdoZXN0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm1vZGFsLWJhY2tkcm9wIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWzMs''@;'; put 'put ''ImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSIsImNlbnRlciIsInRleHQtY2VudGVyIiwiY29sb3ItZGFya2VyLWdyYXkiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJjbHItY29sLW1kLTYiXSxbMSwiZG93bmxvYWQtc2Vs''@;'; put 'put ''ZWN0Il0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJ2YWx1ZSIsIkNTViJdLFsidmFsdWUiLCJTQVMiXSxbInZhbHVlIiwiUEdTUUxfRERMIl0sWyJ2YWx1ZSIsIlNBU19EREwiXSxbInZhbHVlIiwiVFNRTF9EREwiXSxbInZhbHVlIiwiRVhDRUwiXSxb''@;'; put 'put ''InZhbHVlIiwiTUFSS0RPV04iXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImlkIiwiY2xp''@;'; put 'put ''Y2siXSxbMSwibW9kYWwtYm9keSIsIndlYi1xdWVyeSJdLFsxLCJyb3ciXSxbMSwiY2xyLWNvbC1sZy0xMiIsImNsci1jb2wtbWQtMTIiLCJjbHItY29sLXNtLTEyIiwiY2xyLWNvbC14cy0xMiJdLFsxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50''@;'; put 'put ''LWJldHdlZW4iXSxbMSwiYnRuLWdyb3VwIl0sWzEsInJhZGlvIiwiYnRuIiwzLCJjbGljayJdLFsidHlwZSIsInJhZGlvIiwibmFtZSIsImJ0bi1ncm91cC1kZW1vLXJhZGlvcyIsMywiY2hlY2tlZCJdLFsxLCJjYXJkLWJsb2NrIiwid29yZC1icmVhay1hbGwiXSxbInJvd3MiLCI0IiwiY29s''@;'; put 'put ''cyIsIjUwIiwidHlwZSIsInRleHQiLCJyZWFkb25seSIsIiIsMSwid2ViLXF1ZXJ5LXRleHQiLCJ3LTEwMCIsMywidmFsdWUiLCJmb2N1cyJdLFsiY2xpQ29tbWFuZElucHV0IiwiIl0sWzEsImNhcmQtZm9vdGVyIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwzLCJuZ3hDbGlwYm9h''@;'; put 'put ''cmQiLCJjbGljayJdLFsiYXJpYS1tb2RhbCIsInRydWUiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMs''@;'; put 'put ''ImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsImJ0bi1zbSIsMywiY2xpY2siXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFszLCJjbHJNb2RhbE9wZW4i''@;'; put 'put ''LCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVy''@;'; put 'put ''Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNhcmQgaC0xMDAgZC1mbGV4IGNsci1mbGV4LWNvbHVtbiIsNCwibmdJZiJdLFszLCJvcGVuIiwiZHNtZXRhIiwib3BlbkNoYW5nZSJdLFsxLCJteS0xMC1teC1hdXRvIiwidGV4dC1jZW50ZXIiXSxbImNsck1lZGl1bSIsIiJdLFsxLCJzZWFyY2gtbm9k''@;'; put 'put ''ZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQi''@;'; put 'put ''LCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsci1leHBhbmRlZCIsImNs''@;'; put 'put ''aWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInNoYXBlIiwicmFjay1zZXJ2ZXIiXSxbImNscklucHV0''@;'; put 'put ''IiwiIiwicGxhY2Vob2xkZXIiLCJUYWJsZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsImlkIiwibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoVHJlZUlucHV0IiwiIl0sWyJjbGFzcyIsImNsci10cmVlbm9kZS1saW5rIiwzLCJ0YWJs''@;'; put 'put ''ZS1hY3RpdmUiLCJjbGljayIsNCwibmdJZiJdLFsxLCJjbHItdHJlZW5vZGUtbGluayIsMywiY2xpY2siXSxbMywibmdTd2l0Y2giXSxbInNoYXBlIiwiYm9sdCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJzaGFwZSIsInRhYmxlIiw0LCJuZ1N3aXRjaENhc2UiXSxbInNoYXBlIiwiYm9sdCJdLFsi''@;'; put 'put ''c2hhcGUiLCJ0YWJsZSJdLFsxLCJ3LTEwMCIsInRleHQtY2VudGVyIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl0sWzEsIm1vZGFsIiwiei1pbmRleC1oaWdoZXN0Il0sWyJyb2xlIiwiZGlhbG9nIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciXSxbMSwibW9kYWwt''@;'; put 'put ''Y29udGVudCJdLFsxLCJtb2RhbC1oZWFkZXIiXSxbImFyaWEtbGFiZWwiLCJDbG9zZSIsInR5cGUiLCJidXR0b24iLDEsImNsb3NlIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsImNsb3NlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIs''@;'; put 'put ''MywiY2xpY2siXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtYmFja2Ryb3AiXSxbInF1ZXJ5RmlsdGVyIiwiIl0sWzEsImxvYWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbMSwiY2FyZCIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWyJjbGFzcyIsImhl''@;'; put 'put ''YWRlci1yb3cgY2xyLXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCBtLTAiLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tdGFibGUtc2VsZWN0ZWQiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2FyZC1ibG9jayBub0RhdGEiLDQsIm5nSWYi''@;'; put 'put ''XSxbImNsYXNzIiwiY2xyLWZsZXgtMSIsNCwibmdJZiJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJ3LTEwMCIsIm0tMCJdLFsxLCJmb3JtLWJsb2NrIiwic2VhcmNoLXdyYXBwZXIiLCJz''@;'; put 'put ''dyIsImNsci1jb2wtbWQiXSxbImNsckZvcm0iLCIiLDEsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJpbnB1dC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIiwibmFtZSIsInNlYXJjaC1pbnB1dCIsMywidHlwZSIsImtleXVwLmVudGVy''@;'; put 'put ''Il0sWyJzZWFyY2hFbCIsIiJdLFsic2hhcGUiLCJzZWFyY2giLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5lci1pbmxpbmUiLDQsIm5nSWYiXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwibmFtZSIsIm51bWVyaWNfY2hlY2siLDMsIm5n''@;'; put 'put ''TW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzEsInRpdGxlLWNvbCIsImNsci1jb2wtYXV0byIsImNsci1mbGV4LWNvbHVtbiIsImNsci1mbGV4LXNtLXJvdyJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSIsInNpemUiLCIyNCIsMSwiaXMtaGlnaGxpZ2h0IiwiY3Vyc29yLXBvaW50ZXIiLDMsImNs''@;'; put 'put ''aWNrIl0sWyJzaGFwZSIsImJvbHQiLCJjbGFzcyIsImNvbG9yLXllbGxvdyBtdC01IG1yLTUiLDQsIm5nSWYiXSxbImNsYXNzIiwidmlld2VyVGl0bGUgY2xyLWZsZXgtY29sdW1uIGQtZmxleCBjbHItZmxleC1zbS1yb3cgY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFsxLCJv''@;'; put 'put ''cHRpb25zLWNvbCIsImNsci1jb2wtbWQiXSxbImNsYXNzIiwib3B0aW9ucy1kcm9wZG93biIsMywiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0xMiBpbmZvQmFyIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCIsMywiY2xpY2siXSxb''@;'; put 'put ''MSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIl0sWyJzaGFwZSIsImJvbHQiLDEsImNvbG9yLXllbGxvdyIsIm10LTUiLCJtci01Il0sWzEsInZpZXdlclRpdGxlIiwiY2xyLWZsZXgtY29sdW1uIiwiZC1mbGV4IiwiY2xyLWZsZXgtc20tcm93IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJd''@;'; put 'put ''LFsic2hhcGUiLCJyZWZyZXNoIiwxLCJyZWZyZXNoLXRhYmxlIiwzLCJjbGljayJdLFsxLCJvcHRpb25zLWRyb3Bkb3duIiwzLCJjbHJDbG9zZU1lbnVPbkl0ZW1DbGljayJdLFsidHlwZSIsImJ1dHRvbiIsImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91''@;'; put 'put ''dGxpbmUiLCJmaWx0ZXJTaWRlIl0sWyJzaGFwZSIsImNvZyIsInNpemUiLCIxNSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tcmlnaHQiLDQsImNscklmT3BlbiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tcmlnaHQiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRu''@;'; put 'put ''LXN1Y2Nlc3Mtb3V0bGluZSIsImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLCJjbHJEcm9wZG93bkl0ZW0iLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwiYnRuLWJsb2NrIiwzLCJjbGljayJdLFsic2hhcGUiLCJmaWx0''@;'; put 'put ''ZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbHJEcm9wZG93bkl0ZW0iLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl0sWyJzaGFwZSIsImRvd25sb2FkLWNsb3VkIl0sWyJzaGFwZSIsInBlbmNpbCJdLFsic2hh''@;'; put 'put ''cGUiLCJzd2l0Y2giXSxbMSwiY2xyLWNvbC1tZC0xMiIsImluZm9CYXIiXSxbMSwibm8tdGFibGUtc2VsZWN0ZWQiXSxbInNoYXBlIiwid2FybmluZy1zdGFuZGFyZCIsInNpemUiLCI2MCIsMSwiaXMtaW5mbyIsImljb24tZGMtZmlsbCJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXki''@;'; put 'put ''XSxbMSwiaGVhZGVyLXJvdyIsImNsci1yb3ciLCJib3JkZXItYm90dG9tLWRpdmlkZXIiLCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsInctMTAwIiwibS0wIl0sWzEsInRpdGxlLWNvbCIsImNsci1jb2wtYXV0byJdLFsxLCJ2aWV3ZXJUaXRsZSIsIm10LTE3Il0sWzEsInRleHQtY2VudGVy''@;'; put 'put ''IiwibXQtMTAiXSxbImNsck1lZGl1bSIsIiIsNCwibmdJZiJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZC1pbmZvIHBvaW50ZXItZXZlbnRzLW5vbmUiLDQsIm5nSWYiXSxbImNsYXNzIiwibGliaW5mbyBtLTAgY2xyLXJvdyIsNCwibmdJZiJdLFsxLCJuby10YWJsZS1zZWxlY3RlZC1p''@;'; put 'put ''bmZvIiwicG9pbnRlci1ldmVudHMtbm9uZSJdLFsic2hhcGUiLCJpbmZvLXN0YW5kYXJkIiwic2l6ZSIsIjQwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsImxpYmluZm8iLCJtLTAiLCJjbHItcm93Il0sWyJjbGFzcyIsInRleHQtY2VudGVyIG0tMCB3LTEwMCIsNCwibmdJZiJd''@;'; put 'put ''LFsxLCJ0ZXh0LWNlbnRlciIsIm0tMCIsInctMTAwIl0sWyJzaGFwZSIsInJlZnJlc2giLDEsInJlZnJlc2gtdGFibGUiLCJtLTAiLDMsImNsaWNrIl0sWzEsIm0tMCJdLFsxLCJtLTAiLCJmb250LWJvbGQiXSxbMSwiY2FyZC1ibG9jayIsIm5vRGF0YSJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0''@;'; put 'put ''YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIl0sWyJjbGFzcyIsInRleHQtY2VudGVyIGNvbG9yLWdyYXkiLDQsIm5nSWYiXSxbMSwiY2xyLWZsZXgtMSJdLFsiaG90SWQiLCJob3RJbnN0YW5jZSIsImlkIiwiaG90VGFibGUiLCJzdHJldGNoSCIsImFsbCIsMywibXVsdGlDb2x1bW5T''@;'; put 'put ''b3J0aW5nIiwidmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQiLCJkYXRhIiwiY29sSGVhZGVycyIsImNvbHVtbnMiLCJmaWx0ZXJzIiwiZHJvcGRvd25NZW51IiwiaGVpZ2h0IiwibW9kaWZ5Q29sV2lkdGgiLCJjZWxscyIsIm1heFJvd3MiLCJtYW51YWxDb2x1bW5SZXNpemUiLCJsaWNlbnNl''@;'; put 'put ''S2V5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7aWYoMSZoJiYodHQoMCwiYXBwLXNpZGViYXIiLDApLFpuKCJzY3JvbGxlZFRvQm90dG9tIixmdW5jdGlvbigpe3JldHVybiB2LmxvYWRNb3JlTGlicmFyaWVzKCl9KSxubigxLFBBdCwyLDAsImRpdiIsMSksdHQoMiwiY2xyLXRyZWUiKSxu''@;'; put 'put ''bigzLE5BdCw2LDMsImNsci10cmVlLW5vZGUiLDIpLG5uKDQsUUF0LDIsMSwibmctY29udGFpbmVyIiwzKSxpdCgpLG5uKDUsSkF0LDMsMCwiZGl2Iiw0KSxpdCgpLHR0KDYsImRpdiIsNSksbm4oNyxYQXQsMTQsMCwiZGl2Iiw2KSxubig4LEtBdCwxLDAsImRpdiIsNyksdHQoOSwiY2xyLW1v''@;'; put 'put ''ZGFsIiw4KSxabigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vcGVuRG93bmxvYWQ9Q30pLHR0KDEwLCJoMyIsOSksV3QoMTEsIkRvd25sb2FkIiksaXQoKSx0dCgxMiwiZGl2IiwxMCkoMTMsImRpdiIsMTEpKDE0LCJjbHItc2VsZWN0LWNvbnRhaW5lciIsMTIp''@;'; put 'put ''KDE1LCJsYWJlbCIpLFd0KDE2LCJQbGVhc2UgY2hvb3NlIGRvd25sb2FkIGZvcm1hdCIpLGl0KCksdHQoMTcsInNlbGVjdCIsMTMpLFpuKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kb3dubG9hZEZvcm1hdD1DfSksdHQoMTgsIm9wdGlvbiIsMTQpLFd0KDE5LCJDU1Yi''@;'; put 'put ''KSxpdCgpLHR0KDIwLCJvcHRpb24iLDE1KSxXdCgyMSwiRGF0YWxpbmVzIChjYXJkcyBmaWxlKSIpLGl0KCksdHQoMjIsIm9wdGlvbiIsMTYpLFd0KDIzLCJEREwgKFBHU1FMIEZsYXZvdXIpIiksaXQoKSx0dCgyNCwib3B0aW9uIiwxNyksV3QoMjUsIkRETCAoU0FTIEZsYXZvdXIpIiksaXQo''@;'; put 'put ''KSx0dCgyNiwib3B0aW9uIiwxOCksV3QoMjcsIkRETCAoVFNRTCBGbGF2b3VyKSIpLGl0KCksdHQoMjgsIm9wdGlvbiIsMTkpLFd0KDI5LCJFeGNlbCAoLnhsc3gpIiksaXQoKSx0dCgzMCwib3B0aW9uIiwyMCksV3QoMzEsIk1hcmtkb3duICgubWQpIiksaXQoKSgpKCkoKSgpLHR0KDMyLCJk''@;'; put 'put ''aXYiLDIxKSgzMywiYnV0dG9uIiwyMiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2Lm9wZW5Eb3dubG9hZD0hMX0pLFd0KDM0LCIgQ2FuY2VsICIpLGl0KCksdHQoMzUsImJ1dHRvbiIsMjMpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5kb3dubG9hZEZvcm1hdC5pbmNs''@;'; put 'put ''dWRlcygiRERMIik/di5kb3dubG9hZERETCgpOnYuZG93bmxvYWREYXRhKCl9KSxXdCgzNiwiIE9rICIpLGl0KCkoKSgpLHR0KDM3LCJjbHItbW9kYWwiLDgpLFpuKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LndlYlF1ZXJ5PUN9KSx0dCgzOCwiaDMiLDkpLFd0''@;'; put 'put ''KDM5LCIgV2ViIFF1ZXJ5IFVSTCAiKSxpdCgpLHR0KDQwLCJkaXYiLDI0KSg0MSwiZGl2IiwyNSkoNDIsImRpdiIsMjYpKDQzLCJkaXYiLDI3KSg0NCwiZGl2IiwyOCkoNDUsInNwYW4iKSxXdCg0NiwiQ29weSB0aGUgYmVsb3cgaW50byB5b3VyIHByZWZlcnJlZCBjbGllbnQgdG9vbDoiKSxp''@;'; put 'put ''dCgpLHR0KDQ3LCJkaXYiLDI5KSg0OCwiZGl2IiwzMCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LndlYlF1ZXJ5VGFiPSEwLHYuc2hvd1dlYlF1ZXJ5KCl9KSxicig0OSwiaW5wdXQiLDMxKSx0dCg1MCwibGFiZWwiKSxXdCg1MSwiVEFCIiksaXQoKSgpLHR0KDUyLCJkaXYiLDMw''@;'; put 'put ''KSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYud2ViUXVlcnlUYWI9ITEsdi5zaG93V2ViUXVlcnkoKX0pLGJyKDUzLCJpbnB1dCIsMzEpLHR0KDU0LCJsYWJlbCIpLFd0KDU1LCJDU1YiKSxpdCgpKCkoKSgpLHR0KDU2LCJkaXYiLDMyKSg1NywidGV4dGFyZWEiLDMzLDM0KSxabigi''@;'; put 'put ''Zm9jdXMiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uQ2xpQ29tbWFuZEZvY3VzKEMpfSksV3QoNTksIiAgICAgICAgICAgICAgIiksaXQoKSgpLHR0KDYwLCJkaXYiLDM1KSg2MSwiYnV0dG9uIiwzNiksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmNvcHlUb0NsaXAoKX0pLFd0KDYy''@;'; put 'put ''LCIgY29weSB0byBjbGlwYm9hcmQgIiksaXQoKSgpKCkoKSgpKCksdHQoNjMsImRpdiIsMjEpKDY0LCJidXR0b24iLDIyKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYud2ViUXVlcnk9ITF9KSxXdCg2NSwiIGNsb3NlICIpLGl0KCkoKSgpLHR0KDY2LCJjbHItbW9kYWwiLDM3KSxa''@;'; put 'put ''bigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5maWx0ZXI9Q30pLHR0KDY3LCJoMyIsOSksV3QoNjgsIiBGaWx0ZXIgZm9yIHRhYmxlOiIpLHR0KDY5LCJzcGFuIiksV3QoNzApLGl0KCkoKSx0dCg3MSwiZGl2IiwxMCksbm4oNzIsJEF0LDIsMCwiYXBwLXF1ZXJ5''@;'; put 'put ''IiwzOCksaXQoKSx0dCg3MywiZGl2IiwyMSkoNzQsImJ1dHRvbiIsMzkpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZXNldEZpbHRlcigpfSksV3QoNzUsIiByZXNldCBmaWx0ZXIgIiksaXQoKSx0dCg3NiwiYnV0dG9uIiw0MCksWm4oImNsaWNrIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB2LmZpbHRlcj0hMSx2LnJlbW92ZVF1ZXJ5KCl9KSxXdCg3NywiIENhbmNlbCAiKSxpdCgpLHR0KDc4LCJidXR0b24iLDQxKSxabigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuc2VuZENsYXVzZSgpfSksV3QoNzksIiBPayAiKSxpdCgpKCkoKSx0dCg4MCwiY2xyLW1vZGFsIiw0Miks''@;'; put 'put ''Wm4oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYucXVlcnlFcnI9Q30pLHR0KDgxLCJoMyIsNDMpLFd0KDgyLCJFcnJvciIpLGl0KCksdHQoODMsImRpdiIsMTApKDg0LCJwIiksV3QoODUpLGl0KCkoKSx0dCg4NiwiZGl2IiwyMSkoODcsImJ1dHRvbiIsNDQpLFpu''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5xdWVyeUVycj0hMX0pLFd0KDg4LCIgQ2FuY2VsICIpLGl0KCksdHQoODksImJ1dHRvbiIsNDUpLFpuKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5xdWVyeUVycj0hMX0pLFd0KDkwLCIgT2sgIiksaXQoKSgpKCksbm4oOTEscUF0LDYs''@;'; put 'put ''MCwiZGl2Iiw0Niksbm4oOTIsTHl0LDYsNSwiZGl2Iiw0NyksaXQoKSx0dCg5MywiYXBwLWRhdGFzZXQtaW5mbyIsNDgpLFpuKCJvcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kYXRhc2V0SW5mbz1DfSksaXQoKSksMiZoKXtjb25zdCB5PXVhKDU4KTtzdCgxKSx4dCgibmdJZiIs''@;'; put 'put ''di5saWJyYXJpZXNMb2FkaW5nKSxzdCgyKSx4dCgibmdJZiIsdi5saWJyYXJpZXMpLHN0KDEpLHh0KCJuZ0Zvck9mIix2LmxpYnJhcmllcyksc3QoMSkseHQoIm5nSWYiLHYubGlicmFyaWVzUGFnaW5nKSxzdCgyKSx4dCgibmdJZiIsdi5udWxsVmFyaWFibGVzKSxzdCgxKSx4dCgibmdJZiIs''@;'; put 'put ''di5udWxsVmFyaWFibGVzKSxzdCgxKSx4dCgiY2xyTW9kYWxPcGVuIix2Lm9wZW5Eb3dubG9hZCkoImNsck1vZGFsU2l6ZSIsIm1kIiksc3QoOCkseHQoIm5nTW9kZWwiLHYuZG93bmxvYWRGb3JtYXQpLHN0KDE4KSx4dCgiaWQiLHYudGFibGVUaXRsZSksc3QoMikseHQoImNsck1vZGFsT3Bl''@;'; put 'put ''biIsdi53ZWJRdWVyeSkoImNsck1vZGFsU2l6ZSIsImxnIiksc3QoMTIpLHh0KCJjaGVja2VkIix2LndlYlF1ZXJ5VGFiKSxzdCg0KSx4dCgiY2hlY2tlZCIsIXYud2ViUXVlcnlUYWIpLHN0KDQpLFU0KCJ2YWx1ZSIsdi53ZWJRdWVyeVRleHQpLHN0KDQpLHh0KCJuZ3hDbGlwYm9hcmQiLHkp''@;'; put 'put ''LHN0KDUpLHh0KCJjbHJNb2RhbE9wZW4iLHYuZmlsdGVyKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLHN0KDQpLFVpKCIgIix2LmxpYlRhYiwiICIpLHN0KDIpLHh0KCJuZ0lmIix2LmZpbHRlciksc3QoNikseHQoImNsckxvYWRpbmciLHYuc3VibWl0TG9h''@;'; put 'put ''ZGluZyksc3QoMikseHQoImNsck1vZGFsT3BlbiIsdi5xdWVyeUVyciksc3QoNSksamkodi5xdWVyeUVyck1lc3NhZ2UpLHN0KDYpLHh0KCJuZ0lmIix2LmxvYWRpbmdUYWJsZVZpZXcpLHN0KDEpLHh0KCJuZ0lmIiwhdi5sb2FkaW5nVGFibGVWaWV3KSxzdCgxKSx4dCgib3BlbiIsdi5kYXRh''@;'; put 'put ''c2V0SW5mbykoImRzbWV0YSIsdi5kc21ldGEpfX0sZGVwZW5kZW5jaWVzOltxbCxCbyxaZCxWNixEQXQsb2csSjMsWDMscDEsdWgsRWYsanMsdHYsX3MsdDQsU3YsX2csZk8sRzIsYTMsbDMsUmkseXcsVzIsYXMsd09lLEF3LGxxLHZ3LHd2LElaLFRaLE12LERTLExTLGhPLEpMLHd0ZSxuT2Us''@;'; put 'put ''UFMsaU9lLGFPZSxSQXRdLHN0eWxlczpbIi5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjA7ZmxleDoxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Y2xyLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e3doaXRlLXNwYWNlOm5vd3JhcH0udG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPWNoZWNrYm94XVtfbmdjb250ZW50LSVDT01QJV06Y2hlY2tlZCArIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjojMzE0MzUxIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS5oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZS1jb2xbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLm9wdGlvbnMtY29sW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5zZWFyY2gtd3JhcHBlcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAgIC5pbnB1dC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21pbi13aWR0aDoxNzBweH0uc2VhcmNoLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgICAuaW5wdXQtd3JhcHBlciBjbHItaWNvbiwgLnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmlu''@;'; put 'put ''cHV0LXdyYXBwZXIgLnNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTlweDt0b3A6MHB4fS5zZWFyY2gtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAgIC5pbnB1dC13cmFwcGVyIGNsci1pY29ue2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6d2hpdGV9LnNlYXJjaC13cmFw''@;'; put 'put ''cGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lcnttYXJnaW4tdG9wOi01cHg7bWFyZ2luLXJpZ2h0OjB9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBsYWJlbHtkaXNwbGF5Om5vbmV9LnNlYXJjaC13''@;'; put 'put ''cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWNoZWNrYm94LWNvbnRhaW5lcnttYXJnaW4tdG9wOjB9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaW5wdXR7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlcjoxcHggc29saWQgIzk5OX0uc2VhcmNoLXdyYXBw''@;'; put 'put ''ZXJbX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9''@;'; put 'put ''LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaW5wdXRbdHlwZT1udW1iZXJdey1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGR9LnN3W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MXJlbSAwcmVtIC41cmVtIDFyZW19LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVde21h''@;'; put 'put ''cmdpbi10b3A6MTBweDtiYWNrZ3JvdW5kOiM0OTU5Njc7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjNweDtmb250LXNpemU6MTZweH0uZmlsdGVyU2lkZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoyNnB4O21hcmdpbi1ib3R0b206MTlweH0ub3B0aW9ucy1k''@;'; put 'put ''cm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pY29ue21hcmdpbi1yaWdodDo1cHh9LnZpZXdlclRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjE1cHh9LmRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVde3dpZHRo''@;'; put 'put ''OjE4MHB4O21hcmdpbi10b3A6LTE4cHg7cGFkZGluZzowfS5kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idG5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2FyZEZsZXhbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Zmxl''@;'; put 'put ''eDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ub0RhdGFbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxfS5maWx0ZXJCdG5bX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmVkaXRCdG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uYnRuVmlld1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAhaW1wb3J0YW50fS5jb250ZW50LWFy''@;'; put 'put ''ZWFbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVyZW0haW1wb3J0YW50O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRvd25sb2FkLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDp1bnNldCFpbXBvcnRh''@;'; put 'put ''bnR9LnJlZnJlc2gtdGFibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO21hcmdpbi1sZWZ0OjVweH0ubGliaW5mb1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxMHB4IDIwcHg7b3ZlcmZsb3c6YXV0b31ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAucHJp''@;'; put 'put ''bWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQ6cmdiYSg0OCwxMDcsMCwuNDMxMzcyNTQ5KX0ubm8tdGFibGUtc2VsZWN0ZWQtaW5mb1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29s''@;'; put 'put ''dW1ufS53ZWItcXVlcnlbX25nY29udGVudC0lQ09NUCVde21heC1oZWlnaHQ6MzV2aH0ud2ViLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53ZWItcXVlcnktdGV4dFtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDoxMDBweDttYXgtaGVpZ2h0OjEwMHB4fUBtZWRpYSBzY3JlZW4g''@;'; put 'put ''YW5kIChtYXgtd2lkdGg6IDc2OHB4KXsuZmlsdGVyQnRuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmVkaXRCdG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfX1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey5yb3dbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde21hcmdpbi1yaWdodDowcmVtO21hcmdpbi1sZWZ0OjByZW19fSJdfSksZH0pKCk7Y29uc3QgT3l0PVt7cGF0aDoiIixjb21wb25lbnQ6ZUF0LGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86ImRhdGEifSx7cGF0aDoiZGF0YSIsY29tcG9uZW50Ollu''@;'; put 'put ''ZX0se3BhdGg6ImRhdGEiLGNvbXBvbmVudDpZbmV9LHtwYXRoOiJkYXRhLzpsaWJNZW0vOmZpbHRlcklkIixjb21wb25lbnQ6WW5lfSx7cGF0aDoiZGF0YS86bGliTWVtIixjb21wb25lbnQ6WW5lfSx7cGF0aDoibGluZWFnZSIsY29tcG9uZW50OlduZX0se3BhdGg6ImxpbmVhZ2UvOnRhYmxl''@;'; put 'put ''aWQvOmRpcmVjdGlvbiIsY29tcG9uZW50OlduZX0se3BhdGg6ImxpbmVhZ2UvY29sdW1uLzpjb2x1cmkvOmRpcmVjdGlvbiIsY29tcG9uZW50OlduZX0se3BhdGg6ImxpbmVhZ2UvY29sdW1uLzpjb2x1cmkvOmRpcmVjdGlvbi86cmVsb2FkIixjb21wb25lbnQ6V25lfSx7cGF0aDoibWV0YWRh''@;'; put 'put ''dGEiLGNvbXBvbmVudDp6bWV9LHtwYXRoOiJtZXRhZGF0YS9vYmplY3QvOm9iamVjdElEIixjb21wb25lbnQ6em1lfSx7cGF0aDoibWV0YWRhdGEvb2JqZWN0LzpvYmplY3RJRC86b2JqZWN0TmFtZSIsY29tcG9uZW50OnptZX0se3BhdGg6InVzZXJuYXYiLGNvbXBvbmVudDpxOXQsY2hpbGRy''@;'; put 'put ''ZW46W3twYXRoOiIiLHBhdGhNYXRjaDoiZnVsbCIscmVkaXJlY3RUbzoiZ3JvdXBzIn0se3BhdGg6InVzZXJzIixjb21wb25lbnQ6ZE9lfSx7cGF0aDoidXNlcnMvOnVyaSIsY29tcG9uZW50OmRPZX0se3BhdGg6Imdyb3VwcyIsY29tcG9uZW50OmZPZX0se3BhdGg6Imdyb3Vwcy86dXJpIixj''@;'; put 'put ''b21wb25lbnQ6Zk9lfSx7cGF0aDoicm9sZXMiLGNvbXBvbmVudDpoT2V9LHtwYXRoOiJyb2xlcy86dXJpIixjb21wb25lbnQ6aE9lfV19XX1dO2xldCBSeXQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9k''@;'; put 'put ''PXJvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1tMCh7aW1wb3J0czpbQjUuZm9yQ2hpbGQoT3l0KSxCNV19KSxkfSkoKSxCeXQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPXJvKHt0eXBlOmR9KSxkLlx1''@;'; put 'put ''MDI3NWluaj1tMCh7aW1wb3J0czpbYWEsUnl0LExBdCx4ZixNdyxrNmUuZm9yUm9vdCgpLFpuZSxWbmUsam5lXX0pLGR9KSgpO2NvbnN0IEZ5dD1CNS5mb3JSb290KFt7cGF0aDoiIixyZWRpcmVjdFRvOiJob21lIixwYXRoTWF0Y2g6ImZ1bGwifSx7cGF0aDoidmlldyIsbG9hZENoaWxkcmVu''@;'; put 'put ''OigpPT5CeXR9LHtwYXRoOiJhcHByb3ZlIixjb21wb25lbnQ6ZGplLGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86InRvYXBwcm92ZSJ9LHtwYXRoOiJ0b2FwcHJvdmUiLGNvbXBvbmVudDpwYmV9LHtwYXRoOiJhcHByb3ZlRGV0Lzp0YWJsZUlkIixjb21w''@;'; put 'put ''b25lbnQ6dmJlfSx7cGF0aDoic3VibWl0dGVkIixjb21wb25lbnQ6QWJlfV19LHtwYXRoOiJsaWNlbnNpbmcvOmFjdGlvbiIsY29tcG9uZW50OlZaZSxjYW5BY3RpdmF0ZTpbcWhlXSxjYW5EZWFjdGl2YXRlOltxaGVdfSx7cGF0aDoiaG9tZSIsY29tcG9uZW50OmRiZX0se3BhdGg6ImVkaXRv''@;'; put 'put ''ciIsbG9hZENoaWxkcmVuOigpPT51dnR9LHtwYXRoOiJzdGFnZSIsbG9hZENoaWxkcmVuOigpPT5odHR9LHtwYXRoOiJhYm91dCIsY29tcG9uZW50OmVOZX0se3BhdGg6ImFjdGlvbnMvOmxpYmRzLzpkc2lkIixjb21wb25lbnQ6SFZlfSx7cGF0aDoiaGlzdG9yeSIsY29tcG9uZW50OiRWZX0s''@;'; put 'put ''e3BhdGg6InN1Ym1pdHRlZCIsY29tcG9uZW50OkFiZX0se3BhdGg6ImRlcGxveSIsY29tcG9uZW50OndiZX0se3BhdGg6ImRlcGxveS9tYW51YWxkZXBsb3kiLGNvbXBvbmVudDp3YmV9LHtwYXRoOiIqKiIsY29tcG9uZW50OnFWZX1dLHt1c2VIYXNoOiEwLHJlbGF0aXZlTGlua1Jlc29sdXRp''@;'; put 'put ''b246ImxlZ2FjeSJ9KTtsZXQgSHl0PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1ybyh7dHlwZTpkLGJvb3RzdHJhcDpbZUZlXX0pLGQuXHUwMjc1aW5qPW0wKHtwcm92aWRlcnM6W3NoLGtnLHBiZSxx''@;'; put 'put ''aGVdLGltcG9ydHM6W3FIZSxzWSx4ZixtSyxZVSxGeXQsVm5lLE13LFpuZSxjT2Usam5lXX0pLGR9KSgpOyhmdW5jdGlvbiBOZCgpe05zPSExfSkoKSxZaWUoKS5ib290c3RyYXBNb2R1bGUoSHl0KX0sMTE0MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgxNzE1NikuZGVmYXVsdDtzZWxmLFhlLmV4''@;'; put 'put ''cG9ydHM9KCgpPT57dmFyIEI9ezI2NTY6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFcpe3JldHVybiBXJiZXLl9fZXNNb2R1bGU/Vzp7ZGVmYXVsdDpXfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZGVjb2RlVG9rZW49US5oYXNUb2tlbkV4cGlyZWQ9US5pc1JlZnJlc2hUb2tlbkV4cGlyaW5nPVEuaXNBY2Nlc3NUb2tlbkV4cGlyaW5nPXZvaWQgMDt2YXIgbGU9aWUoWig2MjQ1KSk7ZnVuY3Rpb24gWShXLE4pe3JldHVybigwLGxlLmRlZmF1bHQp''@;'; put 'put ''KFcpLmV4cC0obmV3IERhdGUpLnZhbHVlT2YoKS8xZTM8PU59US5pc0FjY2Vzc1Rva2VuRXhwaXJpbmc9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gdm9pZCAwPT09TiYmKE49MzYwMCksIVd8fFkoVyxOKX0sUS5pc1JlZnJlc2hUb2tlbkV4cGlyaW5nPWZ1bmN0aW9uKFcsTil7cmV0dXJuIHZvaWQg''@;'; put 'put ''MD09PU4mJihOPTMwKSwhV3x8WShXLE4pfSxRLmhhc1Rva2VuRXhwaXJlZD1mdW5jdGlvbihXKXtyZXR1cm4hV3x8WShXLDApfSxRLmRlY29kZVRva2VuPWZ1bmN0aW9uKFcpe3ZhciBOO3RyeXtOPSgwLGxlLmRlZmF1bHQpKFcpfWNhdGNoKGVlKXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQg''@;'; put 'put ''dG9rZW4gc3VwcGxpZWQuIil9cmV0dXJuIE59fSw2Nzk5OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTixlZSl7dm9pZCAwPT09ZWUmJihlZT1OKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoWSxlZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV1tOXX19KX06ZnVuY3Rpb24oWSxXLE4sZWUpe3ZvaWQgMD09PWVlJiYoZWU9TiksWVtlZV09V1tOXX0pLGxlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihZLFcpe2Zvcih2YXIgTiBp''@;'; put 'put ''biBZKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLE4pfHxpZShXLFksTil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsZShaKDI2NTYpLFEpfSwzMjU5OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBaPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFo9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oaWUpe2Zvcih2YXIgbGUsWT0xLFc9YXJndW1lbnRzLmxlbmd0aDtZPFc7WSsrKWZvcih2YXIgTiBpbiBsZT1hcmd1bWVudHNbWV0pT2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxlLE4pJiYoaWVbTl09bGVbTl0pO3JldHVybiBpZX0sWi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnByZWZpeE1lc3NhZ2U9dm9pZCAwLFEucHJlZml4TWVzc2Fn''@;'; put 'put ''ZT1mdW5jdGlvbihpZSxsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBpZSlpZihpZS5oYXNPd25Qcm9wZXJ0eSgibWVzc2FnZSIpKWllLm1lc3NhZ2U9bGUraWUubWVzc2FnZTtlbHNle2lmKCFpZS5oYXNPd25Qcm9wZXJ0eSgiYm9keSIpKXJldHVybiBaKFooe30saWUpLHttZXNzYWdlOmxlfSk7''@;'; put 'put ''aWYoIm9iamVjdCI9PXR5cGVvZiBpZS5ib2R5JiYoaWUubWVzc2FnZT1pZS5ib2R5Lm1lc3NhZ2U/bGUraWUuYm9keS5tZXNzYWdlOmxlKSwic3RyaW5nIj09dHlwZW9mIGllLmJvZHkpe3ZhciBZPXZvaWQgMDt0cnl7WT1KU09OLnBhcnNlKGllLmJvZHkpfWNhdGNoKFcpe3JldHVybiBpZS5t''@;'; put 'put ''ZXNzYWdlPWxlLGllfXJldHVybiBZLm1lc3NhZ2U9WS5tZXNzYWdlP2xlK1kubWVzc2FnZTpsZSxpZS5ib2R5PVksaWV9fXJldHVybiJzdHJpbmciPT10eXBlb2YgaWUmJihpZT1sZStpZSksaWV9fSw5Nzc4OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMu''@;'; put 'put ''X19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTixlZSl7dm9pZCAwPT09ZWUmJihlZT1OKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWSxlZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV1tOXX19KX06ZnVuY3Rpb24oWSxXLE4sZWUpe3Zv''@;'; put 'put ''aWQgMD09PWVlJiYoZWU9TiksWVtlZV09V1tOXX0pLGxlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihZLFcpe2Zvcih2YXIgTiBpbiBZKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLE4pfHxpZShXLFksTil9O09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsZShaKDMyNTkpLFEpLGxlKFooMTA2NCksUSl9LDEwNjQ6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpZT1mdW5jdGlvbihxLEope3JldHVybihpZT1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oc2UsYWUpe3NlLl9fcHJvdG9fXz1hZX18fGZ1bmN0aW9uKHNlLGFlKXtmb3IodmFyIGZlIGluIGFlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhZSxmZSkm''@;'; put 'put ''JihzZVtmZV09YWVbZmVdKX0pKHEsSil9LGZ1bmN0aW9uKHEsSil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEomJm51bGwhPT1KKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoSikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rp''@;'; put 'put ''b24gc2UoKXt0aGlzLmNvbnN0cnVjdG9yPXF9aWUocSxKKSxxLnByb3RvdHlwZT1udWxsPT09Sj9PYmplY3QuY3JlYXRlKEopOihzZS5wcm90b3R5cGU9Si5wcm90b3R5cGUsbmV3IHNlKX0pLFk9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKHEsSil7dmFyIHNlPSJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wmJnFbU3ltYm9sLml0ZXJhdG9yXTtpZighc2UpcmV0dXJuIHE7dmFyIGFlLGZlLGRlPXNlLmNhbGwocSksdmU9W107dHJ5e2Zvcig7KHZvaWQgMD09PUp8fEotLSA+MCkmJiEoYWU9ZGUubmV4dCgpKS5kb25lOyl2ZS5wdXNoKGFlLnZhbHVlKX1jYXRjaChBZSl7ZmU9e2Vy''@;'; put 'put ''cm9yOkFlfX1maW5hbGx5e3RyeXthZSYmIWFlLmRvbmUmJihzZT1kZS5yZXR1cm4pJiZzZS5jYWxsKGRlKX1maW5hbGx5e2lmKGZlKXRocm93IGZlLmVycm9yfX1yZXR1cm4gdmV9LFc9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihxLEosc2Upe2lmKHNlfHwyPT09YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aClmb3IodmFyIGFlLGZlPTAsZGU9Si5sZW5ndGg7ZmU8ZGU7ZmUrKykhYWUmJmZlIGluIEp8fChhZXx8KGFlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKEosMCxmZSkpLGFlW2ZlXT1KW2ZlXSk7cmV0dXJuIHEuY29uY2F0KGFlfHxBcnJheS5wcm90b3R5cGUuc2xpY2Uu''@;'; put 'put ''Y2FsbChKKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLlNlcnZlclR5cGVFcnJvcj12b2lkIDA7dmFyIE49WigzOTAwKSxlZT1mdW5jdGlvbihxKXtmdW5jdGlvbiBKKHNlKXt2b2lkIDA9PT1zZSYmKHNlPVtdKTt2YXIgYWU9dGhpcyxmZT0o''@;'; put 'put ''c2U9VyhbXSxZKG5ldyBTZXQoc2UpKSwhMSkpLmxlbmd0aD9zZS5qb2luKCIsICIpLnRyaW0oKTpbTi5TZXJ2ZXJUeXBlLlNhc1ZpeWEsTi5TZXJ2ZXJUeXBlLlNhczksTi5TZXJ2ZXJUeXBlLlNhc2pzXS5qb2luKCIsICIpLnRyaW0oKTtyZXR1cm4gZmU9ZmUucmVwbGFjZSgvLFxzKFteLF0q''@;'; put 'put ''KSQvLCIgYW5kICQxIiksKGFlPXEuY2FsbCh0aGlzLCJJbnZhbGlkIHNlcnZlciB0eXBlOiB2YWxpZCBvcHRpb24iLmNvbmNhdCgxIT09c2UubGVuZ3RoPyJzIjoiIiwiICIpLmNvbmNhdCgxIT09c2UubGVuZ3RoPyJhcmUiOiJpcyIsIiAiKS5jb25jYXQoZmUpKXx8dGhpcykubmFtZT0iU2Vy''@;'; put 'put ''dmVyVHlwZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoYWUsSi5wcm90b3R5cGUpLGFlfXJldHVybiBsZShKLHEpLEp9KEVycm9yKTtRLlNlcnZlclR5cGVFcnJvcj1lZX0sMzkwNjpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8''@;'; put 'put ''ZnVuY3Rpb24oc2UsYWUsZmUsZGUpe3JldHVybiBuZXcoZmV8fChmZT1Qcm9taXNlKSkoZnVuY3Rpb24odmUsQWUpe2Z1bmN0aW9uIGtlKFRlKXt0cnl7SWUoZGUubmV4dChUZSkpfWNhdGNoKEVlKXtBZShFZSl9fWZ1bmN0aW9uIFNlKFRlKXt0cnl7SWUoZGUudGhyb3coVGUpKX1jYXRjaChF''@;'; put 'put ''ZSl7QWUoRWUpfX1mdW5jdGlvbiBJZShUZSl7dmFyIEVlO1RlLmRvbmU/dmUoVGUudmFsdWUpOihFZT1UZS52YWx1ZSxFZSBpbnN0YW5jZW9mIGZlP0VlOm5ldyBmZShmdW5jdGlvbihoZSl7aGUoRWUpfSkpLnRoZW4oa2UsU2UpfUllKChkZT1kZS5hcHBseShzZSxhZXx8W10pKS5uZXh0KCkp''@;'; put 'put ''fSl9LGxlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHNlLGFlKXt2YXIgZmUsZGUsdmUsQWUsa2U9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJuIHZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEFlPXtuZXh0OlNlKDAp''@;'; put 'put ''LHRocm93OlNlKDEpLHJldHVybjpTZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEFlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEFlO2Z1bmN0aW9uIFNlKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUpe3JldHVybiBmdW5jdGlvbihFZSl7aWYoZmUp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7a2U7KXRyeXtpZihmZT0xLGRlJiYodmU9MiZFZVswXT9kZS5yZXR1cm46RWVbMF0/ZGUudGhyb3d8fCgodmU9ZGUucmV0dXJuKSYmdmUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodmU9''@;'; put 'put ''dmUuY2FsbChkZSxFZVsxXSkpLmRvbmUpcmV0dXJuIHZlO3N3aXRjaChkZT0wLHZlJiYoRWU9WzImRWVbMF0sdmUudmFsdWVdKSxFZVswXSl7Y2FzZSAwOmNhc2UgMTp2ZT1FZTticmVhaztjYXNlIDQ6cmV0dXJuIGtlLmxhYmVsKysse3ZhbHVlOkVlWzFdLGRvbmU6ITF9O2Nhc2UgNTprZS5s''@;'; put 'put ''YWJlbCsrLGRlPUVlWzFdLEVlPVswXTtjb250aW51ZTtjYXNlIDc6RWU9a2Uub3BzLnBvcCgpLGtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh2ZT0odmU9a2UudHJ5cykubGVuZ3RoPjAmJnZlW3ZlLmxlbmd0aC0xXSl8fDYhPT1FZVswXSYmMiE9PUVlWzBdKSl7a2U9MDtj''@;'; put 'put ''b250aW51ZX1pZigzPT09RWVbMF0mJighdmV8fEVlWzFdPnZlWzBdJiZFZVsxXTx2ZVszXSkpe2tlLmxhYmVsPUVlWzFdO2JyZWFrfWlmKDY9PT1FZVswXSYma2UubGFiZWw8dmVbMV0pe2tlLmxhYmVsPXZlWzFdLHZlPUVlO2JyZWFrfWlmKHZlJiZrZS5sYWJlbDx2ZVsyXSl7a2UubGFiZWw9''@;'; put 'put ''dmVbMl0sa2Uub3BzLnB1c2goRWUpO2JyZWFrfXZlWzJdJiZrZS5vcHMucG9wKCksa2UudHJ5cy5wb3AoKTtjb250aW51ZX1FZT1hZS5jYWxsKHNlLGtlKX1jYXRjaChoZSl7RWU9WzYsaGVdLGRlPTB9ZmluYWxseXtmZT12ZT0wfWlmKDUmRWVbMF0pdGhyb3cgRWVbMV07cmV0dXJue3ZhbHVl''@;'; put 'put ''OkVlWzBdP0VlWzFdOnZvaWQgMCxkb25lOiEwfX0oW0llLFRlXSl9fX0sWT10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oc2UsYWUpe3ZhciBmZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZzZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFmZSlyZXR1cm4gc2U7dmFyIGRlLHZlLEFlPWZl''@;'; put 'put ''LmNhbGwoc2UpLGtlPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1hZXx8YWUtLSA+MCkmJiEoZGU9QWUubmV4dCgpKS5kb25lOylrZS5wdXNoKGRlLnZhbHVlKX1jYXRjaChTZSl7dmU9e2Vycm9yOlNlfX1maW5hbGx5e3RyeXtkZSYmIWRlLmRvbmUmJihmZT1BZS5yZXR1cm4pJiZmZS5jYWxsKEFl''@;'; put 'put ''KX1maW5hbGx5e2lmKHZlKXRocm93IHZlLmVycm9yfX1yZXR1cm4ga2V9LFc9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihzZSxhZSxmZSl7aWYoZmV8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgZGUsdmU9MCxBZT1hZS5sZW5ndGg7dmU8QWU7dmUrKykhZGUmJnZl''@;'; put 'put ''IGluIGFlfHwoZGV8fChkZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhZSwwLHZlKSksZGVbdmVdPWFlW3ZlXSk7cmV0dXJuIHNlLmNvbmNhdChkZXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYWUpKX0sTj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oc2Up''@;'; put 'put ''e3JldHVybiBzZSYmc2UuX19lc01vZHVsZT9zZTp7ZGVmYXVsdDpzZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnVwZGF0ZUNzdj1RLmNyZWF0ZUNzdj1RLnJlYWRDc3Y9dm9pZCAwO3ZhciBlZT1aKDE1NTkpLHE9TihaKDc1NjUpKTtRLnJl''@;'; put 'put ''YWRDc3Y9ZnVuY3Rpb24oc2Upe3JldHVybiBpZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCxlZS5yZWFkRmlsZSkoc2UpXTtjYXNlIDE6cmV0dXJuWzIsYWUuc2Vu''@;'; put 'put ''dCgpLnNwbGl0KCJcbiIpLmZpbHRlcihmdW5jdGlvbihmZSl7cmV0dXJuIGZlLmxlbmd0aH0pLm1hcChmdW5jdGlvbihmZSl7cmV0dXJuIGZlLnNwbGl0KCIsIil9KV19fSl9KX0sUS5jcmVhdGVDc3Y9ZnVuY3Rpb24oc2UsYWUsZmUpe3JldHVybiBpZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBkZTtyZXR1cm4gbGUodGhpcyxmdW5jdGlvbih2ZSl7c3dpdGNoKHZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGRlPSgwLHEuZGVmYXVsdCkoYWUse2hlYWRlcjoxPT09YWUubGVuZ3RoLGNvbHVtbnM6ZmV9KSxbNCwoMCxlZS5jcmVhdGVGaWxlKShzZSxkZSldO2Nhc2Ug''@;'; put 'put ''MTpyZXR1cm4gdmUuc2VudCgpLFsyXX19KX0pfSxRLnVwZGF0ZUNzdj1mdW5jdGlvbihzZSxhZSxmZSxkZSl7cmV0dXJuIGllKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHZlLEFlLGtlO3JldHVybiBsZSh0aGlzLGZ1bmN0aW9uKFNlKXtzd2l0Y2goU2UubGFiZWwpe2Nh''@;'; put 'put ''c2UgMDpyZXR1cm5bNCxKKHNlLGFlLGZlLGRlKV07Y2FzZSAxOnJldHVybiB2ZT1TZS5zZW50KCksZGUmJihBZT0wPT09dmUubGVuZ3RoPzE6dmUubGVuZ3RoLChrZT1mZS5maW5kSW5kZXgoZnVuY3Rpb24oSWUpe3JldHVybiBJZT09PWRlfSkpPi0xP2FlLnNwbGljZShrZSwwLEFlKTooZmUu''@;'; put 'put ''c3BsaWNlKDAsMCxkZSksYWUuc3BsaWNlKDAsMCxBZSkpKSx2ZS5wdXNoKGFlKSxbNCwoMCxRLmNyZWF0ZUNzdikoc2UsdmUsZmUpXTtjYXNlIDI6cmV0dXJuIFNlLnNlbnQoKSxbMl19fSl9KX07dmFyIEo9ZnVuY3Rpb24oc2UsYWUsZmUsZGUpe3JldHVybiBpZSh2b2lkIDAsdm9pZCAwLHZv''@;'; put 'put ''aWQgMCxmdW5jdGlvbigpe3ZhciB2ZSxBZSxrZSxTZTtyZXR1cm4gbGUodGhpcyxmdW5jdGlvbihJZSl7c3dpdGNoKEllLmxhYmVsKXtjYXNlIDA6aWYoYWUubGVuZ3RoIT09ZmUubGVuZ3RoKXtpZihhZS5sZW5ndGg+ZmUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYSByZWNvcmQgY2FuIG5v''@;'; put 'put ''dCBoYXZlIG1vcmUgZmllbGRzIHRoYW4gcHJvdmlkZWQgY29sdW1ucyIpO2lmKCFkZXx8YWUubGVuZ3RoKzEhPT1mZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhIHJlY29yZCBjYW4gbm90IGhhdmUgbGVzcyBmaWVsZHMgdGhhbiBwcm92aWRlZCBjb2x1bW5zIil9ZWxzZSBpZihkZSYmZmUu''@;'; put 'put ''aW5jbHVkZXMoZGUpKXRocm93IG5ldyBFcnJvcigiYSByZWNvcmQgY2FuIG5vdCBoYXZlIG1vcmUgZmllbGRzIHRoYW4gcHJvdmlkZWQgY29sdW1ucyIpO3JldHVybls0LCgwLFEucmVhZENzdikoc2UpLmNhdGNoKGZ1bmN0aW9uKFRlKXtyZXR1cm5bXX0pXTtjYXNlIDE6aWYodmU9SWUuc2Vu''@;'; put 'put ''dCgpLEFlPXZlWzBdKXtpZihmZS5sZW5ndGg+QWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibnVtYmVyIG9mIHByb3ZpZGVkIGNvbHVtbnMgYXJlIGdyZWF0ZXIgdGhhbiBudW1iZXIgb2YgZXhpc3RpbmcgY29sdW1ucyIpO2lmKGZlLmxlbmd0aDxBZS5sZW5ndGgpe2lmKCFkZXx8ZmUubGVu''@;'; put 'put ''Z3RoKzEhPT1BZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJudW1iZXIgb2YgcHJvdmlkZWQgY29sdW1ucyBhcmUgbGVzcyB0aGFuIG51bWJlciBvZiBleGlzdGluZyBjb2x1bW5zIik7aWYoa2U9QWUuZmluZEluZGV4KGZ1bmN0aW9uKFRlKXtyZXR1cm4gVGU9PT1kZX0pLFNlPVcoW10sWShm''@;'; put 'put ''ZSksITEpLCEoa2U+LTEpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7aWYoU2Uuc3BsaWNlKGtlLDAsZGUpLEpTT04uc3RyaW5naWZ5KGZlKSE9PUpTT04uc3RyaW5naWZ5KFNlKSl0aHJvdyBuZXcgRXJyb3IoInBy''@;'; put 'put ''b3ZpZGVkIGNvbHVtbnMgZG9lcyBub3QgbWF0Y2ggZXhpc3RpbmcgY29sdW1ucyIpfWVsc2V7aWYoSlNPTi5zdHJpbmdpZnkoZmUpIT09SlNPTi5zdHJpbmdpZnkoQWUpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7''@;'; put 'put ''aWYoZGUmJiFmZS5pbmNsdWRlcyhkZSkpdGhyb3cgbmV3IEVycm9yKCJjYW4gbm90IGFkZCBuZXcgaWQgdG8gZXhpc3RpbmcgZGF0YSIpfX1yZXR1cm5bMix2ZV19fSl9KX19LDE1NTk6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRp''@;'; put 'put ''bmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEVlLGhlLE8seil7dm9pZCAwPT09eiYmKHo9TyksT2JqZWN0LmRlZmluZVByb3BlcnR5KEVlLHose2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGhlW09dfX0pfTpmdW5jdGlvbihFZSxoZSxPLHope3ZvaWQgMD09PXomJih6''@;'; put 'put ''PU8pLEVlW3pdPWhlW09dfSksbGU9dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEVlLGhlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoRWUsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmhlfSl9OmZ1bmN0aW9uKEVlLGhlKXtFZS5k''@;'; put 'put ''ZWZhdWx0PWhlfSksWT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oRWUpe2lmKEVlJiZFZS5fX2VzTW9kdWxlKXJldHVybiBFZTt2YXIgaGU9e307aWYobnVsbCE9RWUpZm9yKHZhciBPIGluIEVlKSJkZWZhdWx0IiE9PU8mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbChFZSxPKSYmaWUoaGUsRWUsTyk7cmV0dXJuIGxlKGhlLEVlKSxoZX0sVz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oRWUsaGUsTyx6KXtyZXR1cm4gbmV3KE98fChPPVByb21pc2UpKShmdW5jdGlvbihuZSx0ZSl7ZnVuY3Rpb24geChUKXt0cnl7Vih6Lm5leHQoVCkp''@;'; put 'put ''fWNhdGNoKFMpe3RlKFMpfX1mdW5jdGlvbiBQKFQpe3RyeXtWKHoudGhyb3coVCkpfWNhdGNoKFMpe3RlKFMpfX1mdW5jdGlvbiBWKFQpe3ZhciBTO1QuZG9uZT9uZShULnZhbHVlKTooUz1ULnZhbHVlLFMgaW5zdGFuY2VvZiBPP1M6bmV3IE8oZnVuY3Rpb24oRil7RihTKX0pKS50aGVuKHgs''@;'; put 'put ''UCl9Vigoej16LmFwcGx5KEVlLGhlfHxbXSkpLm5leHQoKSl9KX0sTj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihFZSxoZSl7dmFyIE8seixuZSx0ZSx4PXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm5lWzBdKXRocm93IG5lWzFdO3JldHVybiBuZVsxXX0sdHJ5czpb''@;'; put 'put ''XSxvcHM6W119O3JldHVybiB0ZT17bmV4dDpQKDApLHRocm93OlAoMSkscmV0dXJuOlAoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJih0ZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx0ZTtmdW5jdGlvbiBQKFYpe3JldHVybiBmdW5jdGlvbihUKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oUyl7aWYoTyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt4Oyl0cnl7aWYoTz0xLHomJihuZT0yJlNbMF0/ei5yZXR1cm46U1swXT96LnRocm93fHwoKG5lPXoucmV0dXJuKSYmbmUuY2FsbCh6KSwwKTp6''@;'; put 'put ''Lm5leHQpJiYhKG5lPW5lLmNhbGwoeixTWzFdKSkuZG9uZSlyZXR1cm4gbmU7c3dpdGNoKHo9MCxuZSYmKFM9WzImU1swXSxuZS52YWx1ZV0pLFNbMF0pe2Nhc2UgMDpjYXNlIDE6bmU9UzticmVhaztjYXNlIDQ6cmV0dXJuIHgubGFiZWwrKyx7dmFsdWU6U1sxXSxkb25lOiExfTtjYXNlIDU6''@;'; put 'put ''eC5sYWJlbCsrLHo9U1sxXSxTPVswXTtjb250aW51ZTtjYXNlIDc6Uz14Lm9wcy5wb3AoKSx4LnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChuZT0obmU9eC50cnlzKS5sZW5ndGg+MCYmbmVbbmUubGVuZ3RoLTFdKXx8NiE9PVNbMF0mJjIhPT1TWzBdKSl7eD0wO2NvbnRpbnVl''@;'; put 'put ''fWlmKDM9PT1TWzBdJiYoIW5lfHxTWzFdPm5lWzBdJiZTWzFdPG5lWzNdKSl7eC5sYWJlbD1TWzFdO2JyZWFrfWlmKDY9PT1TWzBdJiZ4LmxhYmVsPG5lWzFdKXt4LmxhYmVsPW5lWzFdLG5lPVM7YnJlYWt9aWYobmUmJngubGFiZWw8bmVbMl0pe3gubGFiZWw9bmVbMl0seC5vcHMucHVzaChT''@;'; put 'put ''KTticmVha31uZVsyXSYmeC5vcHMucG9wKCkseC50cnlzLnBvcCgpO2NvbnRpbnVlfVM9aGUuY2FsbChFZSx4KX1jYXRjaChGKXtTPVs2LEZdLHo9MH1maW5hbGx5e089bmU9MH1pZig1JlNbMF0pdGhyb3cgU1sxXTtyZXR1cm57dmFsdWU6U1swXT9TWzFdOnZvaWQgMCxkb25lOiEwfX0oW1Ys''@;'; put 'put ''VF0pfX19LGVlPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihFZSxoZSl7dmFyIE89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmRWVbU3ltYm9sLml0ZXJhdG9yXTtpZighTylyZXR1cm4gRWU7dmFyIHosbmUsdGU9Ty5jYWxsKEVlKSx4PVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1oZXx8''@;'; put 'put ''aGUtLSA+MCkmJiEoej10ZS5uZXh0KCkpLmRvbmU7KXgucHVzaCh6LnZhbHVlKX1jYXRjaChQKXtuZT17ZXJyb3I6UH19ZmluYWxseXt0cnl7eiYmIXouZG9uZSYmKE89dGUucmV0dXJuKSYmTy5jYWxsKHRlKX1maW5hbGx5e2lmKG5lKXRocm93IG5lLmVycm9yfX1yZXR1cm4geH0scT10aGlz''@;'; put 'put ''JiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKEVlLGhlLE8pe2lmKE98fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgeixuZT0wLHRlPWhlLmxlbmd0aDtuZTx0ZTtuZSsrKSF6JiZuZSBpbiBoZXx8KHp8fCh6PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGhlLDAsbmUpKSx6''@;'; put 'put ''W25lXT1oZVtuZV0pO3JldHVybiBFZS5jb25jYXQoenx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaGUpKX0sSj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oRWUpe3JldHVybiBFZSYmRWUuX19lc01vZHVsZT9FZTp7ZGVmYXVsdDpFZX19O09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzVGVzdEZpbGU9US50ZXN0RmlsZVJlZ0V4cD1RLmNyZWF0ZVdyaXRlU3RyZWFtPVEuZ2V0UmVhbFBhdGg9US5iYXNlNjRFbmNvZGVGaWxlPVEuYmFzZTY0RW5jb2RlSW1hZ2VGaWxlPVEucGF0aFNlcEVzY2FwZWQ9US5jb3B5''@;'; put 'put ''PVEubW92ZUZpbGU9US5nZXRSZWxhdGl2ZVBhdGg9US51bmlmeUZpbGVQYXRoPVEuZGVsZXRlRm9sZGVyPVEuZGVsZXRlRmlsZT1RLmNyZWF0ZUZpbGU9US5jcmVhdGVGb2xkZXI9US5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9US5saXN0U3ViRm9sZGVyc0luRm9sZGVyPVEubGlz''@;'; put 'put ''dEluaUZpbGVzSW5Gb2xkZXI9US5saXN0RmlsZXNJbkZvbGRlcj1RLnJlYWRGaWxlQmluYXJ5PVEucmVhZEZpbGU9US5pc0ZvbGRlcj1RLmZvbGRlckV4aXN0cz1RLmZpbGVFeGlzdHM9dm9pZCAwO3ZhciBzZT1KKFooNTY3NCkpLGFlPUooWig5ODQpKSxmZT1KKFooMjUyMCkpLGRlPVooNjI2''@;'; put 'put ''NiksdmU9WShaKDI5NzUpKTtmdW5jdGlvbiBBZShFZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihoZSl7cmV0dXJuWzIsc2UuZGVmYXVsdC5wcm9taXNlcy5hY2Nlc3MoRWUsc2UuZGVmYXVsdC5jb25zdGFudHMuRl9PSyku''@;'; put 'put ''dGhlbihmdW5jdGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pXX0pfSl9ZnVuY3Rpb24ga2UoRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLHNlLmRlZmF1bHQucHJv''@;'; put 'put ''bWlzZXMucmVhZEZpbGUoRWUpXX0pfSl9ZnVuY3Rpb24gU2UoRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMucmVhZGRpcihFZSx7d2l0aEZpbGVUeXBlczohMH0p''@;'; put 'put ''LnRoZW4oZnVuY3Rpb24oTyl7cmV0dXJuIE8uZmlsdGVyKGZ1bmN0aW9uKHope3JldHVybiF6LmlzRGlyZWN0b3J5KCl9KS5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIHoubmFtZX0pfSldfSl9KX1mdW5jdGlvbiBJZShFZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIE4odGhpcyxmdW5jdGlvbihoZSl7cmV0dXJuWzIsc2UuZGVmYXVsdC5wcm9taXNlcy5ta2RpcihFZSx7cmVjdXJzaXZlOiEwfSldfSl9KX1mdW5jdGlvbiBUZShFZSxoZSxPKXt2b2lkIDA9PT1oZSYmKGhlPWZlLmRlZmF1bHQuc2VwKSx2b2lkIDA9PT1PJiYoTz0iLyIpO3ZhciB6''@;'; put 'put ''PXt1bml4OiIvIix3aW46IlxcIn0sbmU9T2JqZWN0LmtleXMoeikuZmluZChmdW5jdGlvbih4KXtyZXR1cm4gelt4XT09PWhlfSk7aWYobmUpe3ZhciB0ZT16W09iamVjdC5rZXlzKHopLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHghPT1uZX0pXTtyZXR1cm4gbmU9eltuZV0sRWUuc3BsaXQo''@;'; put 'put ''dGUpLmpvaW4obmUpfXJldHVybiBFZS5zcGxpdChPKS5qb2luKGhlKX1RLmZpbGVFeGlzdHM9ZnVuY3Rpb24oRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMuYWNj''@;'; put 'put ''ZXNzKEVlLHNlLmRlZmF1bHQuY29uc3RhbnRzLkZfT0spLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KV19KX0pfSxRLmZvbGRlckV4aXN0cz1BZSxRLmlzRm9sZGVyPWZ1bmN0aW9uKEVlKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLmxzdGF0KEVlKS50aGVuKGZ1bmN0aW9uKE8pe3JldHVybiBPLmlzRGlyZWN0b3J5KCl9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSldfSl9KX0sUS5yZWFkRmlsZT1m''@;'; put 'put ''dW5jdGlvbihFZSxoZSl7cmV0dXJuIHZvaWQgMD09PWhlJiYoaGU9InV0ZjgiKSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oTyl7cmV0dXJuWzIsc2UuZGVmYXVsdC5wcm9taXNlcy5yZWFkRmlsZShFZSxoZSldfSl9KX0sUS5yZWFkRmls''@;'; put 'put ''ZUJpbmFyeT1rZSxRLmxpc3RGaWxlc0luRm9sZGVyPVNlLFEubGlzdEluaUZpbGVzSW5Gb2xkZXI9ZnVuY3Rpb24oRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOnJldHVy''@;'; put 'put ''bls0LFNlKEVlKV07Y2FzZSAxOnJldHVyblsyLGhlLnNlbnQoKS5maWx0ZXIoZnVuY3Rpb24oTyl7cmV0dXJuIE8uZW5kc1dpdGgoIi5pbmkiKX0pXX19KX0pfSxRLmxpc3RTdWJGb2xkZXJzSW5Gb2xkZXI9ZnVuY3Rpb24oRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMucmVhZGRpcihFZSx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oTyl7cmV0dXJuIE8uZmlsdGVyKGZ1bmN0aW9uKHope3JldHVybiB6LmlzRGlyZWN0b3J5KCl9KS5tYXAo''@;'; put 'put ''ZnVuY3Rpb24oeil7cmV0dXJuIHoubmFtZX0pfSldfSl9KX0sUS5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9ZnVuY3Rpb24gRWUoaGUsTyl7cmV0dXJuIHZvaWQgMD09PU8mJihPPSEwKSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6PXRoaXM7cmV0dXJuIE4o''@;'; put 'put ''dGhpcyxmdW5jdGlvbihuZSl7cmV0dXJuWzIsc2UuZGVmYXVsdC5wcm9taXNlcy5yZWFkZGlyKGhlLHt3aXRoRmlsZVR5cGVzOiEwfSkudGhlbihmdW5jdGlvbih0ZSl7cmV0dXJuIFcoeix2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHgsUD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oVil7c3dpdGNoKFYubGFiZWwpe2Nhc2UgMDpyZXR1cm4gTyYmdGUuZmlsdGVyKGZ1bmN0aW9uKFQpe3JldHVybiBULmlzRGlyZWN0b3J5KCl9KS5sZW5ndGg/KHg9W10sWzQsKDAsZGUuYXN5bmNGb3JFYWNoKSh0ZS5maWx0ZXIoZnVuY3Rpb24oVCl7cmV0dXJuIFQuaXNEaXJlY3Rvcnko''@;'; put 'put ''KX0pLGZ1bmN0aW9uKFQpe3JldHVybiBXKFAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBTLEYseWU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihDZSl7c3dpdGNoKENlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEY9ZmUuZGVmYXVsdC5qb2luKGhlLFM9VC5uYW1lKSx5ZT1bcShbXSxlZSh4''@;'; put 'put ''KSwhMSldLFs0LEVlKEYpXTtjYXNlIDE6cmV0dXJuIHg9cS5hcHBseSh2b2lkIDAseWUuY29uY2F0KFtlZS5hcHBseSh2b2lkIDAsW0NlLnNlbnQoKS5tYXAoZnVuY3Rpb24oRGUpe3JldHVybiBmZS5kZWZhdWx0LmpvaW4oUyxEZSl9KV0pLCExXSkpLFsyXX19KX0pfSldKTpbMywyXTtjYXNl''@;'; put 'put ''IDE6cmV0dXJuIFYuc2VudCgpLFsyLHEocShbXSxlZSh0ZS5maWx0ZXIoZnVuY3Rpb24oVCl7cmV0dXJuIVQuaXNEaXJlY3RvcnkoKX0pLm1hcChmdW5jdGlvbihUKXtyZXR1cm4gVC5uYW1lfSkpLCExKSxlZSh4KSwhMSldO2Nhc2UgMjpyZXR1cm5bMix0ZS5tYXAoZnVuY3Rpb24oVCl7cmV0''@;'; put 'put ''dXJuIFQubmFtZX0pXX19KX0pfSldfSl9KX0sUS5jcmVhdGVGb2xkZXI9SWUsUS5jcmVhdGVGaWxlPWZ1bmN0aW9uKEVlLGhlLE8pe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6LG5lO3JldHVybiBOKHRoaXMsZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJl''@;'; put 'put ''bCl7Y2FzZSAwOnJldHVybihFZT1UZShFZSkpLnNwbGl0KGZlLmRlZmF1bHQuc2VwKS5sZW5ndGg+MT8oKHo9RWUuc3BsaXQoZmUuZGVmYXVsdC5zZXApKS5wb3AoKSxbNCxBZShuZT16LmpvaW4oZmUuZGVmYXVsdC5zZXApKV0pOlszLDNdO2Nhc2UgMTpyZXR1cm4gdGUuc2VudCgpP1szLDNd''@;'; put 'put ''Ols0LEllKG5lKV07Y2FzZSAyOnRlLnNlbnQoKSx0ZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLndyaXRlRmlsZShFZSxoZSxPKV19fSl9KX0sUS5kZWxldGVGaWxlPWZ1bmN0aW9uKEVlKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixzZS5kZWZhdWx0LnJlbW92ZShFZSldfSl9KX0sUS5kZWxldGVGb2xkZXI9ZnVuY3Rpb24oRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVy''@;'; put 'put ''blsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKE8seil7KDAsYWUuZGVmYXVsdCkoRWUse30sZnVuY3Rpb24obmUpe3JldHVybiBuZT96KG5lKTpPKCl9KX0pXX0pfSl9LFEudW5pZnlGaWxlUGF0aD1UZSxRLmdldFJlbGF0aXZlUGF0aD1mdW5jdGlvbihFZSxoZSl7dmFyIE89RWUuc3BsaXQoZmUu''@;'; put 'put ''ZGVmYXVsdC5zZXApLHo9aGUuc3BsaXQoZmUuZGVmYXVsdC5zZXApLG5lPVtdLHRlPVtdO08uZm9yRWFjaChmdW5jdGlvbihULFMpe3ZvaWQgMCE9PXpbU10mJk9bU109PT16W1NdP25lLnB1c2goVCk6VCYmdGUucHVzaChUKX0pO3ZhciB4PW5lLmpvaW4oZmUuZGVmYXVsdC5zZXApLFA9bmV3''@;'; put 'put ''IFJlZ0V4cCgiXiIuY29uY2F0KGZlLmRlZmF1bHQuc2VwLnJlcGxhY2UoL1xcL2csIlxcXFwiKSkpLFY9bmV3IFJlZ0V4cCgiIi5jb25jYXQoZmUuZGVmYXVsdC5zZXAucmVwbGFjZSgvXFwvZywiXFxcXCIpLCIkIikpO3JldHVybih0ZS5sZW5ndGg/Ii4uIi5jb25jYXQoZmUuZGVmYXVsdC5z''@;'; put 'put ''ZXApLnJlcGVhdCh0ZS5sZW5ndGgpOiIuIi5jb25jYXQoZmUuZGVmYXVsdC5zZXApKStoZS5yZXBsYWNlKHgsIiIpLnJlcGxhY2UoUCwiIikucmVwbGFjZShWLCIiKX0sUS5tb3ZlRmlsZT1mdW5jdGlvbihFZSxoZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIE4odGhpcyxmdW5jdGlvbihPKXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLnJlbmFtZShFZSxoZSldfSl9KX0sUS5jb3B5PWZ1bmN0aW9uKEVlLGhlKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKE8pe3JldHVy''@;'; put 'put ''blsyLHNlLmRlZmF1bHQuY29weShFZSxoZSldfSl9KX0sUS5wYXRoU2VwRXNjYXBlZD1mZS5kZWZhdWx0LnNlcC5yZXBsYWNlKC9cXC9nLCJcXFxcIiksUS5iYXNlNjRFbmNvZGVJbWFnZUZpbGU9ZnVuY3Rpb24oRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLGtlKEVlKS50aGVuKGZ1bmN0aW9uKE8pe3ZhciB6PWZlLmRlZmF1bHQuZXh0bmFtZShFZSkuc3Vic3RyKDEpfHwicG5nIjtyZXR1cm4ic3ZnIj09PXomJih6PSJzdmcreG1sIiksImRhdGE6aW1hZ2UvIit6KyI7YmFzZTY0LCIrTy50''@;'; put 'put ''b1N0cmluZygiYmFzZTY0Iil9KV19KX0pfSxRLmJhc2U2NEVuY29kZUZpbGU9ZnVuY3Rpb24oRWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMucmVhZEZpbGUoRWUs''@;'; put 'put ''e2VuY29kaW5nOiJiYXNlNjQifSldfSl9KX0sUS5nZXRSZWFsUGF0aD1mdW5jdGlvbihFZSl7cmV0dXJuIHNlLmRlZmF1bHQucmVhbHBhdGhTeW5jKEVlKX0sUS5jcmVhdGVXcml0ZVN0cmVhbT1mdW5jdGlvbihFZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIE4odGhpcyxmdW5jdGlvbihoZSl7c3dpdGNoKGhlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdmUuZmlsZUV4aXN0cyhFZSldO2Nhc2UgMTpyZXR1cm4gaGUuc2VudCgpP1syLHNlLmRlZmF1bHQuY3JlYXRlV3JpdGVTdHJlYW0oRWUse2ZsYWdzOiJhIn0pXTpbNCx2ZS5jcmVhdGVGaWxl''@;'; put 'put ''KEVlLCIiKV07Y2FzZSAyOnJldHVybiBoZS5zZW50KCksWzIsc2UuZGVmYXVsdC5jcmVhdGVXcml0ZVN0cmVhbShFZSx7ZmxhZ3M6ImEifSldfX0pfSl9LFEudGVzdEZpbGVSZWdFeHA9L1wudGVzdFwuKFxkK1wuKT9zYXMkL2ksUS5pc1Rlc3RGaWxlPWZ1bmN0aW9uKEVlKXtyZXR1cm4gUS50''@;'; put 'put ''ZXN0RmlsZVJlZ0V4cC50ZXN0KEVlKX19LDU2MjY6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFcpe3JldHVybiBXJiZXLl9fZXNNb2R1bGU/Vzp7ZGVmYXVsdDpXfX07T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZ2V0QWJzb2x1dGVQYXRoPXZvaWQgMDt2YXIgbGU9aWUoWigyNTIwKSksWT1pZShaKDc0MzUpKTtRLmdldEFic29sdXRlUGF0aD1mdW5jdGlvbihXLE4pe3JldHVybiBsZS5kZWZhdWx0LmlzQWJzb2x1dGUoVyl8fC9efi8uZXhlYyhXKT9s''@;'; put 'put ''ZS5kZWZhdWx0Lm5vcm1hbGl6ZShXLnJlcGxhY2UoL15+LyxZLmRlZmF1bHQuaG9tZWRpcigpKSk6bGUuZGVmYXVsdC5qb2luKE4sVyl9fSwyOTc1OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9m''@;'; put 'put ''dW5jdGlvbihOLGVlLHEsSil7dm9pZCAwPT09SiYmKEo9cSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4sSix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZWVbcV19fSl9OmZ1bmN0aW9uKE4sZWUscSxKKXt2b2lkIDA9PT1KJiYoSj1xKSxOW0pdPWVlW3FdfSksbGU9dGhp''@;'; put 'put ''cyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKE4sZWUpe2Zvcih2YXIgcSBpbiBOKSJkZWZhdWx0Ij09PXF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSxxKXx8aWUoZWUsTixxKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLFEucmVhZENzdj1RLmNyZWF0ZUNzdj1RLnVwZGF0ZUNzdj1RLnRlc3RGaWxlUmVnRXhwPVEuaXNUZXN0RmlsZT1RLmdldFJlYWxQYXRoPVEuYmFzZTY0RW5jb2RlRmlsZT1RLmJhc2U2NEVuY29kZUltYWdlRmlsZT1RLmNvcHk9US5wYXRoU2VwRXNjYXBlZD1RLm1vdmVGaWxlPVEu''@;'; put 'put ''dW5pZnlGaWxlUGF0aD1RLmdldFJlbGF0aXZlUGF0aD1RLmRlbGV0ZUZvbGRlcj1RLmRlbGV0ZUZpbGU9US5jcmVhdGVXcml0ZVN0cmVhbT1RLmNyZWF0ZUZvbGRlcj1RLmNyZWF0ZUZpbGU9US5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9US5saXN0U3ViRm9sZGVyc0luRm9sZGVy''@;'; put 'put ''PVEubGlzdEluaUZpbGVzSW5Gb2xkZXI9US5saXN0RmlsZXNJbkZvbGRlcj1RLnJlYWRGaWxlQmluYXJ5PVEucmVhZEZpbGU9US5pc0ZvbGRlcj1RLmZvbGRlckV4aXN0cz1RLmZpbGVFeGlzdHM9dm9pZCAwO3ZhciBZPVooMTU1OSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImZpbGVFeGlz''@;'; put 'put ''dHMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmZpbGVFeGlzdHN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImZvbGRlckV4aXN0cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuZm9sZGVyRXhpc3RzfX0pLE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShRLCJpc0ZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuaXNGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInJlYWRGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5yZWFkRmlsZX19KSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoUSwicmVhZEZpbGVCaW5hcnkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLnJlYWRGaWxlQmluYXJ5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJsaXN0RmlsZXNJbkZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIFkubGlzdEZpbGVzSW5Gb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImxpc3RJbmlGaWxlc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5saXN0SW5pRmlsZXNJbkZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwi''@;'; put 'put ''bGlzdFN1YkZvbGRlcnNJbkZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkubGlzdFN1YkZvbGRlcnNJbkZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwibGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gWS5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImNyZWF0ZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmNyZWF0ZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFEsImNyZWF0ZUZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuY3JlYXRlRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJjcmVhdGVXcml0ZVN0cmVhbSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuY3JlYXRlV3Jp''@;'; put 'put ''dGVTdHJlYW19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImRlbGV0ZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmRlbGV0ZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImRlbGV0ZUZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIFkuZGVsZXRlRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJnZXRSZWxhdGl2ZVBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmdldFJlbGF0aXZlUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwidW5pZnlGaWxl''@;'; put 'put ''UGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkudW5pZnlGaWxlUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwibW92ZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLm1vdmVGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShRLCJwYXRoU2VwRXNjYXBlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkucGF0aFNlcEVzY2FwZWR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImNvcHkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmNvcHl9fSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KFEsImJhc2U2NEVuY29kZUltYWdlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuYmFzZTY0RW5jb2RlSW1hZ2VGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJiYXNlNjRFbmNvZGVGaWxlIix7ZW51bWVyYWJsZTohMCxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5iYXNlNjRFbmNvZGVGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJnZXRSZWFsUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuZ2V0UmVhbFBhdGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImlzVGVz''@;'; put 'put ''dEZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmlzVGVzdEZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInRlc3RGaWxlUmVnRXhwIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS50ZXN0RmlsZVJlZ0V4cH19KTt2YXIgVz1a''@;'; put 'put ''KDM5MDYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJ1cGRhdGVDc3YiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXLnVwZGF0ZUNzdn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiY3JlYXRlQ3N2Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gVy5jcmVhdGVDc3Z9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInJlYWRDc3YiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXLnJlYWRDc3Z9fSksbGUoWig1NjI2KSxRKX0sMjc3NzooVSxRLFopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLm5ld0xpbmU9US5jYXBpdGFsaXplRmlyc3RDaGFyPVEuc2FuaXRpemVTcGVjaWFsQ2hhcnM9US5wYWRXaXRoTnVtYmVyPXZvaWQgMDt2YXIgaWU9Wig1MzA2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwicGFkV2l0aE51bWJlciIse2Vu''@;'; put 'put ''dW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGllLnBhZFdpdGhOdW1iZXJ9fSk7dmFyIGxlPVooOTAxNyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInNhbml0aXplU3BlY2lhbENoYXJzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGUuc2FuaXRpemVT''@;'; put 'put ''cGVjaWFsQ2hhcnN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImNhcGl0YWxpemVGaXJzdENoYXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsZS5jYXBpdGFsaXplRmlyc3RDaGFyfX0pO3ZhciBZPVooMTYyOCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIm5l''@;'; put 'put ''d0xpbmUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLm5ld0xpbmV9fSl9LDUzMDY6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEucGFkV2l0aE51bWJlcj12b2lkIDAsUS5wYWRXaXRo''@;'; put 'put ''TnVtYmVyPWZ1bmN0aW9uKFosaWUpe3JldHVybiB2b2lkIDA9PT1pZSYmKGllPTApLFo+OT9aOiIiLmNvbmNhdChpZSkuY29uY2F0KFopfX0sMTYyODooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQxNTUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KSxRLm5ld0xpbmU9dm9pZCAwLFEubmV3TGluZT1mdW5jdGlvbigpe3JldHVybiJ3aW4zMiI9PT1pZS5wbGF0Zm9ybT8iXFxyXFxuIjoiXFxuIn19LDkwMTc6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p''@;'; put 'put ''LFEuY2FwaXRhbGl6ZUZpcnN0Q2hhcj1RLnNhbml0aXplU3BlY2lhbENoYXJzPXZvaWQgMCxRLnNhbml0aXplU3BlY2lhbENoYXJzPWZ1bmN0aW9uKFope3JldHVybiBaLnJlcGxhY2UoL1tcdTAwMWJcdTAwOWJdW1soKSM7P10qKD86WzAtOV17MSw0fSg/OjtbMC05XXswLDR9KSopP1swLTlB''@;'; put 'put ''LU9SWmNmLW5xcnk9PjxdL2csIiIpfSxRLmNhcGl0YWxpemVGaXJzdENoYXI9ZnVuY3Rpb24oWil7cmV0dXJuIFouY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrWi5zbGljZSgxKX19LDY0Njc6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2ltcG9ydERl''@;'; put 'put ''ZmF1bHR8fGZ1bmN0aW9uKFkpe3JldHVybiBZJiZZLl9fZXNNb2R1bGU/WTp7ZGVmYXVsdDpZfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuaXNTcGVjaWFsTWlzc2luZz1RLmNob2ljZVZhbGlkYXRvcj1RLmNvbmZpcm1hdGlvblZhbGlkYXRv''@;'; put 'put ''cj1RLnVybFZhbGlkYXRvcj12b2lkIDA7dmFyIGxlPWllKFooNDgxKSk7US51cmxWYWxpZGF0b3I9ZnVuY3Rpb24oWSxXKXtyZXR1cm4hIWxlLmRlZmF1bHQuaXNIdHRwVXJpKFkpfHwhIWxlLmRlZmF1bHQuaXNIdHRwc1VyaShZKXx8IiI9PT1ZfHxXfSxRLmNvbmZpcm1hdGlvblZhbGlkYXRv''@;'; put 'put ''cj1mdW5jdGlvbihZKXtyZXR1cm4hMD09PVl8fCExPT09WX0sUS5jaG9pY2VWYWxpZGF0b3I9ZnVuY3Rpb24oWSxXLE4pe3JldHVybiBZPjAmJlk8PVd8fE59LFEuaXNTcGVjaWFsTWlzc2luZz1mdW5jdGlvbihZKXtyZXR1cm4oInN0cmluZyIhPXR5cGVvZiBZfHwhWS5pbmNsdWRlcygiLi4i''@;'; put 'put ''KSkmJm5ldyBSZWdFeHAoIl4oXFwuKT9bYS16Xy5dezF9JCIsImkiKS50ZXN0KFkpfX0sNzc1NzooVSxRLFopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdlbmVyYXRlVGltZXN0YW1wPVEudGltZXN0YW1wVG9ZWVlZ''@;'; put 'put ''TU1EREhITU1TUz12b2lkIDA7dmFyIGllPVooMTMwMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpZS50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTfX0pLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShRLCJnZW5lcmF0ZVRpbWVzdGFtcCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGllLmdlbmVyYXRlVGltZXN0YW1wfX0pfSwxMzAyOihVLFEsWik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLFEuZ2VuZXJhdGVUaW1lc3RhbXA9US50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTPXZvaWQgMDt2YXIgaWU9WigyNzc3KTtRLnRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1M9ZnVuY3Rpb24obGUpe3ZvaWQgMD09PWxlJiYobGU9RGF0ZS5ub3coKSk7dmFyIFk9bmV3IERhdGUobGUp''@;'; put 'put ''O3JldHVybltZLmdldEZ1bGxZZWFyKCksKDAsaWUucGFkV2l0aE51bWJlcikoWS5nZXRNb250aCgpKzEpLCgwLGllLnBhZFdpdGhOdW1iZXIpKFkuZ2V0RGF0ZSgpKV0uam9pbigiLyIpKyIgIitbKDAsaWUucGFkV2l0aE51bWJlcikoWS5nZXRIb3VycygpKSwoMCxpZS5wYWRXaXRoTnVtYmVy''@;'; put 'put ''KShZLmdldE1pbnV0ZXMoKSksKDAsaWUucGFkV2l0aE51bWJlcikoWS5nZXRTZWNvbmRzKCkpXS5qb2luKCI6Iil9LFEuZ2VuZXJhdGVUaW1lc3RhbXA9ZnVuY3Rpb24obGUsWSl7dm9pZCAwPT09bGUmJihsZT0iIik7dmFyIFc9bmV3IERhdGUsTj1bVy5nZXRVVENGdWxsWWVhcigpLFcuZ2V0''@;'; put 'put ''VVRDTW9udGgoKSsxLFcuZ2V0VVRDRGF0ZSgpLFcuZ2V0VVRDSG91cnMoKSxXLmdldFVUQ01pbnV0ZXMoKSxXLmdldFVUQ1NlY29uZHMoKV07cmV0dXJuIE49Ti5tYXAoZnVuY3Rpb24oZWUpe3JldHVybigwLGllLnBhZFdpdGhOdW1iZXIpKGVlKX0pLFkmJmxlJiZZPE4ubGVuZ3RoJiZZPj0w''@;'; put 'put ''JiZOLnNwbGljZShZLDAsbGUpLE4uam9pbihZPyIiOmxlKX19LDgyMzk6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwyNDI3OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJf''@;'; put 'put ''X2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMTg5OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMzY5MjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3Zh''@;'; put 'put ''bHVlOiEwfSl9LDY5Mzk6KFUsUSk9PnsidXNlIHN0cmljdCI7dmFyIFo7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuTWVtYmVyVHlwZT12b2lkIDAsKFo9US5NZW1iZXJUeXBlfHwoUS5NZW1iZXJUeXBlPXt9KSkuc2VydmljZT0ic2VydmljZSIs''@;'; put 'put ''Wi5maWxlPSJmaWxlIixaLmZvbGRlcj0iZm9sZGVyIn0sNTE2NTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDM5MDA6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2Ny''@;'; put 'put ''ZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFksVyxOLGVlKXt2b2lkIDA9PT1lZSYmKGVlPU4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLGVlLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXW05dfX0pfTpmdW5jdGlvbihZLFcsTixlZSl7dm9pZCAw''@;'; put 'put ''PT09ZWUmJihlZT1OKSxZW2VlXT1XW05dfSksbGU9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKFksVyl7Zm9yKHZhciBOIGluIFkpImRlZmF1bHQiPT09Tnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFcsTil8fGllKFcsWSxOKX07T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGxlKFooODIzOSksUSksbGUoWigyNDI3KSxRKSxsZShaKDE4OSksUSksbGUoWigzNjkyKSxRKSxsZShaKDY5MzkpLFEpLGxlKFooNTE2NSksUSksbGUoWig0MDY5KSxRKSxsZShaKDg5MzIpLFEpLGxlKFooNCksUSksbGUoWigy''@;'; put 'put ''MDE1KSxRKSxsZShaKDg1MTUpLFEpLGxlKFooNTMxMyksUSksbGUoWig4OTc5KSxRKX0sNDA2OTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5pc01hY3JvVmFycz12b2lkIDAsUS5pc01hY3JvVmFycz1mdW5j''@;'; put 'put ''dGlvbihaKXtyZXR1cm4gWiYmIm9iamVjdCI9PXR5cGVvZiBaLm1hY3JvVmFycyYmIUFycmF5LmlzQXJyYXkoWi5tYWNyb1ZhcnMpfX0sODkzMjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQ6KFUsUSk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIFo7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU0FTSnNGaWxlVHlwZT12b2lkIDAsKFo9US5TQVNKc0ZpbGVUeXBlfHwoUS5TQVNKc0ZpbGVUeXBlPXt9KSkuc2VydmljZT0iU2VydmljZSIsWi5qb2I9IkpvYiIsWi50''@;'; put 'put ''ZXN0PSJUZXN0In0sMjAxNTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDg1MTU6KFUsUSk9PnsidXNlIHN0cmljdCI7dmFyIFo7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZToh''@;'; put 'put ''MH0pLFEuU2VydmVyVHlwZT12b2lkIDAsKFo9US5TZXJ2ZXJUeXBlfHwoUS5TZXJ2ZXJUeXBlPXt9KSkuU2FzVml5YT0iU0FTVklZQSIsWi5TYXM5PSJTQVM5IixaLlNhc2pzPSJTQVNKUyJ9LDUzMTM6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNN''@;'; put 'put ''b2R1bGUiLHt2YWx1ZTohMH0pfSw4OTc5OihVLFEsWik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuVGFyZ2V0PXZvaWQgMDt2YXIgaWU9Wig4NTE1KSxsZT1aKDY3ODEpLFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBXKE4p''@;'; put 'put ''e3RoaXMuX3NlcnZlclR5cGU9aWUuU2VydmVyVHlwZS5TYXNWaXlhO3RyeXtpZighTil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGFyZ2V0OiBJbnB1dCBKU09OIGlzIG51bGwgb3IgdW5kZWZpbmVkLiIpO3RoaXMuX25hbWU9KDAsbGUudmFsaWRhdGVUYXJnZXROYW1lKShOLm5hbWUpLHRo''@;'; put 'put ''aXMuX3NlcnZlclVybD0oMCxsZS52YWxpZGF0ZVNlcnZlclVybCkoTi5zZXJ2ZXJVcmwpLHRoaXMuX3NlcnZlclR5cGU9KDAsbGUudmFsaWRhdGVTZXJ2ZXJUeXBlKShOLnNlcnZlclR5cGUpLHRoaXMuX2h0dHBzQWdlbnRPcHRpb25zPSgwLGxlLnZhbGlkYXRlSHR0cHNBZ2VudE9wdGlvbnMp''@;'; put 'put ''KE4uaHR0cHNBZ2VudE9wdGlvbnMpLHRoaXMuX2FwcExvYz0oMCxsZS52YWxpZGF0ZUFwcExvYykoTi5hcHBMb2MpLHRoaXMuX2NvbnRleHROYW1lPSgwLGxlLnZhbGlkYXRlQ29udGV4dE5hbWUpKE4uY29udGV4dE5hbWUsdGhpcy5fc2VydmVyVHlwZSksdGhpcy5fc2VydmVyTmFtZT0oMCxs''@;'; put 'put ''ZS52YWxpZGF0ZVNlcnZlck5hbWUpKE4uc2VydmVyTmFtZSx0aGlzLl9zZXJ2ZXJUeXBlKSx0aGlzLl9yZXBvc2l0b3J5TmFtZT0oMCxsZS52YWxpZGF0ZVJlcG9zaXRvcnlOYW1lKShOLnJlcG9zaXRvcnlOYW1lLHRoaXMuX3NlcnZlclR5cGUpLE4uZG9jQ29uZmlnJiYodGhpcy5fZG9jQ29u''@;'; put 'put ''ZmlnPSgwLGxlLnZhbGlkYXRlRG9jQ29uZmlnKShOLmRvY0NvbmZpZykpLE4uYXV0aENvbmZpZyYmKHRoaXMuX2F1dGhDb25maWc9KDAsbGUudmFsaWRhdGVBdXRoQ29uZmlnKShOLmF1dGhDb25maWcpKSxOLmF1dGhDb25maWdTYXM5JiYodGhpcy5fYXV0aENvbmZpZ1Nhczk9KDAsbGUudmFs''@;'; put 'put ''aWRhdGVBdXRoQ29uZmlnU2FzOSkoTi5hdXRoQ29uZmlnU2FzOSkpLE4uYnVpbGRDb25maWcmJih0aGlzLl9idWlsZENvbmZpZz0oMCxsZS52YWxpZGF0ZUJ1aWxkQ29uZmlnKShOLmJ1aWxkQ29uZmlnLHRoaXMuX25hbWUpKSx0aGlzLl9kZXBsb3lDb25maWc9KDAsbGUudmFsaWRhdGVEZXBs''@;'; put 'put ''b3lDb25maWcpKE4uZGVwbG95Q29uZmlnP04uZGVwbG95Q29uZmlnOntkZXBsb3lTZXJ2aWNlUGFjazohMCxkZXBsb3lTY3JpcHRzOltdfSksTi5zZXJ2aWNlQ29uZmlnJiYodGhpcy5fc2VydmljZUNvbmZpZz0oMCxsZS52YWxpZGF0ZVNlcnZpY2VDb25maWcpKE4uc2VydmljZUNvbmZpZykp''@;'; put 'put ''LE4uam9iQ29uZmlnJiYodGhpcy5fam9iQ29uZmlnPSgwLGxlLnZhbGlkYXRlSm9iQ29uZmlnKShOLmpvYkNvbmZpZykpLE4uc3RyZWFtQ29uZmlnJiYodGhpcy5fc3RyZWFtQ29uZmlnPSgwLGxlLnZhbGlkYXRlU3RyZWFtQ29uZmlnKShOLnN0cmVhbUNvbmZpZykpLE4udGVzdENvbmZpZyYm''@;'; put 'put ''KHRoaXMuX3Rlc3RDb25maWc9KDAsbGUudmFsaWRhdGVUZXN0Q29uZmlnKShOLnRlc3RDb25maWcpKSxOLm1hY3JvRm9sZGVycyYmTi5tYWNyb0ZvbGRlcnMubGVuZ3RoJiYodGhpcy5fbWFjcm9Gb2xkZXJzPU4ubWFjcm9Gb2xkZXJzKSxOLnByb2dyYW1Gb2xkZXJzJiZOLnByb2dyYW1Gb2xk''@;'; put 'put ''ZXJzLmxlbmd0aCYmKHRoaXMuX3Byb2dyYW1Gb2xkZXJzPU4ucHJvZ3JhbUZvbGRlcnMpLE4uYmluYXJ5Rm9sZGVycyYmTi5iaW5hcnlGb2xkZXJzLmxlbmd0aCYmKHRoaXMuX2JpbmFyeUZvbGRlcnM9Ti5iaW5hcnlGb2xkZXJzKX1jYXRjaChlZSl7dGhyb3cgbmV3IEVycm9yKCJFcnJvciBw''@;'; put 'put ''YXJzaW5nIHRhcmdldDogIi5jb25jYXQoZWUubWVzc2FnZSkpfX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFcucHJvdG90eXBlLCJzZXJ2ZXJVcmwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VydmVyVXJsfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwic2VydmVyVHlwZSIse2dldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLl9zZXJ2ZXJUeXBlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiaHR0cHNBZ2VudE9wdGlvbnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faHR0cHNBZ2VudE9wdGlvbnN9LGVu''@;'; put 'put ''dW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJhcHBMb2MiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwTG9jfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShX''@;'; put 'put ''LnByb3RvdHlwZSwiZG9jQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvY0NvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsImF1dGhDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fYXV0aENvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsImF1dGhDb25maWdTYXM5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhDb25maWdTYXM5fSxlbnVtZXJhYmxlOiExLGNvbmZp''@;'; put 'put ''Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiYnVpbGRDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVpbGRDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90''@;'; put 'put ''eXBlLCJkZXBsb3lDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVwbG95Q29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwic2VydmljZUNvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLl9zZXJ2aWNlQ29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiam9iQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2pvYkNvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFi''@;'; put 'put ''bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInN0cmVhbUNvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJlYW1Db25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBl''@;'; put 'put ''LCJtYWNyb0ZvbGRlcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFjcm9Gb2xkZXJzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwicHJvZ3JhbUZvbGRlcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fcHJvZ3JhbUZvbGRlcnN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJiaW5hcnlGb2xkZXJzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JpbmFyeUZvbGRlcnN9LGVudW1lcmFibGU6ITEsY29u''@;'; put 'put ''ZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJjb250ZXh0TmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZXh0TmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90''@;'; put 'put ''b3R5cGUsInNlcnZlck5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VydmVyTmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInJlcG9zaXRvcnlOYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3JlcG9zaXRvcnlOYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwidGVzdENvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZXN0Q29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMH0pLFcucHJvdG90eXBlLnRvSnNvbj1mdW5jdGlvbihOKXt2YXIgZWUscSxKO3ZvaWQgMD09PU4mJihOPSEwKTt2YXIgc2U9e25hbWU6dGhpcy5uYW1lLHNlcnZlclVybDp0aGlzLnNlcnZlclVybCxzZXJ2ZXJUeXBlOnRoaXMuc2VydmVyVHlwZSxodHRwc0FnZW50T3B0aW9uczp0''@;'; put 'put ''aGlzLmh0dHBzQWdlbnRPcHRpb25zLGFwcExvYzp0aGlzLmFwcExvYyxkb2NDb25maWc6dGhpcy5kb2NDb25maWd9O3JldHVybiEobnVsbD09PShlZT10aGlzLm1hY3JvRm9sZGVycyl8fHZvaWQgMD09PWVlKSYmZWUubGVuZ3RoJiYoc2UubWFjcm9Gb2xkZXJzPXRoaXMubWFjcm9Gb2xkZXJz''@;'; put 'put ''KSwhKG51bGw9PT0ocT10aGlzLnByb2dyYW1Gb2xkZXJzKXx8dm9pZCAwPT09cSkmJnEubGVuZ3RoJiYoc2UucHJvZ3JhbUZvbGRlcnM9dGhpcy5wcm9ncmFtRm9sZGVycyksIShudWxsPT09KEo9dGhpcy5iaW5hcnlGb2xkZXJzKXx8dm9pZCAwPT09SikmJkoubGVuZ3RoJiYoc2UuYmluYXJ5''@;'; put 'put ''Rm9sZGVycz10aGlzLmJpbmFyeUZvbGRlcnMpLHRoaXMuYXV0aENvbmZpZyYmKHNlLmF1dGhDb25maWc9dGhpcy5hdXRoQ29uZmlnKSx0aGlzLmF1dGhDb25maWdTYXM5JiYoc2UuYXV0aENvbmZpZ1Nhczk9dGhpcy5hdXRoQ29uZmlnU2FzOSksdGhpcy5idWlsZENvbmZpZz9zZS5idWlsZENv''@;'; put 'put ''bmZpZz10aGlzLmJ1aWxkQ29uZmlnOk4mJihzZS5idWlsZENvbmZpZz17aW5pdFByb2dyYW06IiIsdGVybVByb2dyYW06IiIsYnVpbGRPdXRwdXRGaWxlTmFtZToiIi5jb25jYXQodGhpcy5uYW1lLCIuc2FzIiksYnVpbGRPdXRwdXRGb2xkZXI6InNhc2pzYnVpbGQiLGJ1aWxkUmVzdWx0c0Zv''@;'; put 'put ''bGRlcjoic2FzanNyZXN1bHRzIixtYWNyb1ZhcnM6e319KSx0aGlzLmpvYkNvbmZpZz9zZS5qb2JDb25maWc9dGhpcy5qb2JDb25maWc6TiYmKHNlLmpvYkNvbmZpZz17am9iRm9sZGVyczpbXSxpbml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixtYWNyb1ZhcnM6e319KSx0aGlzLnNlcnZp''@;'; put 'put ''Y2VDb25maWc/c2Uuc2VydmljZUNvbmZpZz10aGlzLnNlcnZpY2VDb25maWc6TiYmKHNlLnNlcnZpY2VDb25maWc9e3NlcnZpY2VGb2xkZXJzOltdLGluaXRQcm9ncmFtOiIiLHRlcm1Qcm9ncmFtOiIiLG1hY3JvVmFyczp7fX0pLHRoaXMuc3RyZWFtQ29uZmlnP3NlLnN0cmVhbUNvbmZpZz10''@;'; put 'put ''aGlzLnN0cmVhbUNvbmZpZzpOJiYoc2Uuc3RyZWFtQ29uZmlnPXtzdHJlYW1XZWJGb2xkZXI6IiIsc3RyZWFtV2ViOiExLHdlYlNvdXJjZVBhdGg6IiIsc3RyZWFtU2VydmljZU5hbWU6IiIsYXNzZXRQYXRoczpbXX0pLCF0aGlzLmRlcGxveUNvbmZpZ3x8dGhpcy5kZXBsb3lDb25maWcuZGVw''@;'; put 'put ''bG95U2VydmljZVBhY2smJiF0aGlzLmRlcGxveUNvbmZpZy5kZXBsb3lTY3JpcHRzLmxlbmd0aD9OJiYoc2UuZGVwbG95Q29uZmlnPXtkZXBsb3lTY3JpcHRzOltdLGRlcGxveVNlcnZpY2VQYWNrOiExfSk6c2UuZGVwbG95Q29uZmlnPXRoaXMuZGVwbG95Q29uZmlnLHRoaXMudGVzdENvbmZp''@;'; put 'put ''Zz9zZS50ZXN0Q29uZmlnPXRoaXMudGVzdENvbmZpZzpOJiYoc2UudGVzdENvbmZpZz17aW5pdFByb2dyYW06IiIsdGVybVByb2dyYW06IiIsbWFjcm9WYXJzOnt9LHRlc3RTZXRVcDoiIix0ZXN0VGVhckRvd246IiJ9KSx0aGlzLnNlcnZlclR5cGU9PT1pZS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/''@;'; put 'put ''c2UuY29udGV4dE5hbWU9dGhpcy5jb250ZXh0TmFtZTp0aGlzLnNlcnZlclR5cGU9PT1pZS5TZXJ2ZXJUeXBlLlNhczkmJihzZS5zZXJ2ZXJOYW1lPXRoaXMuc2VydmVyTmFtZSxzZS5yZXBvc2l0b3J5TmFtZT10aGlzLnJlcG9zaXRvcnlOYW1lKSxzZX0sV30oKTtRLlRhcmdldD1ZfSw2Nzgx''@;'; put 'put ''OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihXKXtyZXR1cm4gVyYmVy5fX2VzTW9kdWxlP1c6e2RlZmF1bHQ6V319O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxR''@;'; put 'put ''LnZhbGlkYXRlUmVwb3NpdG9yeU5hbWU9US52YWxpZGF0ZVNlcnZlck5hbWU9US52YWxpZGF0ZUNvbnRleHROYW1lPVEudmFsaWRhdGVTdHJlYW1Db25maWc9US52YWxpZGF0ZURlcGxveUNvbmZpZz1RLnZhbGlkYXRlSm9iQ29uZmlnPVEudmFsaWRhdGVUZXN0Q29uZmlnPVEudmFsaWRhdGVT''@;'; put 'put ''ZXJ2aWNlQ29uZmlnPVEudmFsaWRhdGVCdWlsZENvbmZpZz1RLnZhbGlkYXRlQXV0aENvbmZpZ1Nhczk9US52YWxpZGF0ZUF1dGhDb25maWc9US52YWxpZGF0ZURvY0NvbmZpZz1RLnZhbGlkYXRlQXBwTG9jPVEudmFsaWRhdGVIdHRwc0FnZW50T3B0aW9ucz1RLnZhbGlkYXRlU2VydmVyVXJs''@;'; put 'put ''PVEudmFsaWRhdGVUYXJnZXROYW1lPVEudmFsaWRhdGVTZXJ2ZXJUeXBlPXZvaWQgMDt2YXIgbGU9aWUoWig0ODEpKSxZPVooMzkwMCk7US52YWxpZGF0ZVNlcnZlclR5cGU9ZnVuY3Rpb24oVyl7aWYoIVcpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciB0eXBlOiBgc2VydmVyVHlw''@;'; put 'put ''ZWAgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKFchPT1ZLlNlcnZlclR5cGUuU2FzOSYmVyE9PVkuU2VydmVyVHlwZS5TYXNWaXlhJiZXIT09WS5TZXJ2ZXJUeXBlLlNhc2pzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzZXJ2ZXIgdHlwZTogU3VwcG9ydGVkIHZhbHVlcyBm''@;'; put 'put ''b3IgIGBzZXJ2ZXJUeXBlYCBhcmUgIi5jb25jYXQoWS5TZXJ2ZXJUeXBlLlNhc1ZpeWEsIiwgIikuY29uY2F0KFkuU2VydmVyVHlwZS5TYXM5LCIgYW5kICIpLmNvbmNhdChZLlNlcnZlclR5cGUuU2FzanMsIi4iKSk7cmV0dXJuIFd9LFEudmFsaWRhdGVUYXJnZXROYW1lPWZ1bmN0aW9uKFcp''@;'; put 'put ''e2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQgbmFtZTogYG5hbWVgIGNhbm5vdCBiZSBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoVy50cmltKCkuaW5jbHVkZXMoIiAiKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGFyZ2V0IG5hbWU6IGBuYW1lYCBjYW5u''@;'; put 'put ''b3QgaW5jbHVkZSBzcGFjZXMuIik7aWYoIS9eW2EtekEtWjAtOVwtXSskL2kudGVzdChXKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGFyZ2V0IG5hbWU6IGBuYW1lYCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMuIik7cmV0dXJuIFd9LFEu''@;'; put 'put ''dmFsaWRhdGVTZXJ2ZXJVcmw9ZnVuY3Rpb24oVyl7aWYobnVsbD09VyYmKFc9IiIpLCIiIT09VyYmIWxlLmRlZmF1bHQuaXNIdHRwVXJpKFcpJiYhbGUuZGVmYXVsdC5pc0h0dHBzVXJpKFcpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzZXJ2ZXIgVVJMOiBgc2VydmVyVXJsYCBzaG91bGQg''@;'; put 'put ''ZWl0aGVyIGJlIGFuIGVtcHR5IHN0cmluZyBvciBhIHZhbGlkIFVSTCBvZiB0aGUgZm9ybSBodHRwKHMpOi8veW91ci1zZXJ2ZXIuY29tKDpwb3J0KS4iKTtyZXR1cm4gV30sUS52YWxpZGF0ZUh0dHBzQWdlbnRPcHRpb25zPWZ1bmN0aW9uKFcpe2lmKFcpe2lmKCJvYmplY3QiIT10eXBlb2Yg''@;'; put 'put ''Vyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWU6IGBodHRwc0FnZW50T3B0aW9uc2Agc2hvdWxkIGVpdGhlciBiZSBhbiBlbXB0eSBvciBhbiBvYmplY3Qgb2YgYEh0dHBzQWdlbnRPcHRpb25zYCIpO2lmKG51bGw9PVcuYWxsb3dJbnNlY3VyZVJlcXVlc3RzKVcuYWxsb3dJbnNlY3Vy''@;'; put 'put ''ZVJlcXVlc3RzPSExO2Vsc2UgaWYoImJvb2xlYW4iIT10eXBlb2YgVy5hbGxvd0luc2VjdXJlUmVxdWVzdHMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlOiBgaHR0cHNBZ2VudE9wdGlvbnMuYWxsb3dJbnNlY3VyZVJlcXVlc3RzYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IG9y''@;'; put 'put ''IGEgYm9vbGVhbiIpO3JldHVybiJzdHJpbmciIT10eXBlb2YgVy5jYVBhdGgmJihXLmNhUGF0aD12b2lkIDApLCJzdHJpbmciIT10eXBlb2YgVy5rZXlQYXRoJiYoVy5rZXlQYXRoPXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBXLmNlcnRQYXRoJiYoVy5jZXJ0UGF0aD12b2lkIDApLFd9fSxR''@;'; put 'put ''LnZhbGlkYXRlQXBwTG9jPWZ1bmN0aW9uKFcpe2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcHAgbG9jYXRpb246IGBhcHBMb2NgIGNhbm5vdCBiZSBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoIVcuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBFcnJvcigiSW52YWxp''@;'; put 'put ''ZCBhcHAgbG9jYXRpb246IGBhcHBMb2NgIG11c3Qgc3RhcnQgd2l0aCBhIGAvYC4iKTtyZXR1cm4gV30sUS52YWxpZGF0ZURvY0NvbmZpZz1mdW5jdGlvbihXKXtpZihXfHwoVz17fSksImJvb2xlYW4iIT10eXBlb2YgVy5kaXNwbGF5TWFjcm9Db3JlJiYoVy5kaXNwbGF5TWFjcm9Db3JlPXZv''@;'; put 'put ''aWQgMCksImJvb2xlYW4iIT10eXBlb2YgVy5lbmFibGVMaW5lYWdlJiYoVy5lbmFibGVMaW5lYWdlPXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBXLm91dERpcmVjdG9yeSYmKFcub3V0RGlyZWN0b3J5PXZvaWQgMCksInN0cmluZyI9PXR5cGVvZiBXLmRhdGFDb250cm9sbGVyVXJsKXtpZigi''@;'; put 'put ''IiE9PVcuZGF0YUNvbnRyb2xsZXJVcmwmJiFsZS5kZWZhdWx0LmlzSHR0cFVyaShXLmRhdGFDb250cm9sbGVyVXJsKSYmIWxlLmRlZmF1bHQuaXNIdHRwc1VyaShXLmRhdGFDb250cm9sbGVyVXJsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGF0YSBDb250cm9sbGVyIFVybDogYGRhdGFD''@;'; put 'put ''b250cm9sbGVyVXJsYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IHN0cmluZyBvciBhIHZhbGlkIFVSTCBvZiB0aGUgZm9ybSBodHRwKHMpOi8veW91ci1zZXJ2ZXIuY29tKDpwb3J0KS4iKX1lbHNlIFcuZGF0YUNvbnRyb2xsZXJVcmw9dm9pZCAwO3JldHVybiBXfSxRLnZhbGlkYXRlQXV0''@;'; put 'put ''aENvbmZpZz1mdW5jdGlvbihXKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXV0aCBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBXfSxRLnZhbGlkYXRlQXV0aENvbmZpZ1Nhczk9ZnVuY3Rpb24oVyl7aWYoIVcpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJJbnZhbGlkIGF1dGggY29uZmlnIGZvciBzYXM5OiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZighVy51c2VyTmFtZXx8IVcucGFzc3dvcmQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGF1dGggY29uZmlnIGZvciBzYXM5OiB1c2VyTmFtZSBhbmQgcGFzc3dv''@;'; put 'put ''cmQgY2FuIG5vdCBiZSBlbXB0eSIpO3JldHVybiBXfSxRLnZhbGlkYXRlQnVpbGRDb25maWc9ZnVuY3Rpb24oVyxOKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYnVpbGQgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gVy5idWlsZFJl''@;'; put 'put ''c3VsdHNGb2xkZXJ8fChXLmJ1aWxkUmVzdWx0c0ZvbGRlcj0ic2FzanNyZXN1bHRzIiksVy5idWlsZE91dHB1dEZvbGRlcnx8KFcuYnVpbGRPdXRwdXRGb2xkZXI9InNhc2pzYnVpbGQiKSxXLmJ1aWxkT3V0cHV0RmlsZU5hbWV8fChXLmJ1aWxkT3V0cHV0RmlsZU5hbWU9IiIuY29uY2F0KE4s''@;'; put 'put ''Ii5zYXMiKSksVy5pbml0UHJvZ3JhbXx8KFcuaW5pdFByb2dyYW09IiIpLFcudGVybVByb2dyYW18fChXLnRlcm1Qcm9ncmFtPSIiKSxXLm1hY3JvVmFyc3x8KFcubWFjcm9WYXJzPXt9KSxXfSxRLnZhbGlkYXRlU2VydmljZUNvbmZpZz1mdW5jdGlvbihXKXtpZighVyl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkludmFsaWQgc2VydmljZSBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBXLmluaXRQcm9ncmFtfHwoVy5pbml0UHJvZ3JhbT0iIiksVy50ZXJtUHJvZ3JhbXx8KFcudGVybVByb2dyYW09IiIpLFcuc2VydmljZUZvbGRlcnN8fChXLnNlcnZp''@;'; put 'put ''Y2VGb2xkZXJzPVtdKSxXLm1hY3JvVmFyc3x8KFcubWFjcm9WYXJzPXt9KSxXfSxRLnZhbGlkYXRlVGVzdENvbmZpZz1mdW5jdGlvbihXKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGVzdCBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVy''@;'; put 'put ''biBXLmluaXRQcm9ncmFtfHwoVy5pbml0UHJvZ3JhbT0iIiksVy50ZXJtUHJvZ3JhbXx8KFcudGVybVByb2dyYW09IiIpLFcubWFjcm9WYXJzfHwoVy5tYWNyb1ZhcnM9e30pLFcudGVzdFNldFVwfHwoVy50ZXN0U2V0VXA9IiIpLFcudGVzdFRlYXJEb3dufHwoVy50ZXN0VGVhckRvd249IiIp''@;'; put 'put ''LFd9LFEudmFsaWRhdGVKb2JDb25maWc9ZnVuY3Rpb24oVyl7aWYoIVcpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGpvYiBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBXLmluaXRQcm9ncmFtfHwoVy5pbml0UHJvZ3JhbT0iIiksVy50ZXJtUHJv''@;'; put 'put ''Z3JhbXx8KFcudGVybVByb2dyYW09IiIpLFcuam9iRm9sZGVyc3x8KFcuam9iRm9sZGVycz1bXSksVy5tYWNyb1ZhcnN8fChXLm1hY3JvVmFycz17fSksV30sUS52YWxpZGF0ZURlcGxveUNvbmZpZz1mdW5jdGlvbihXKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGVwbG95IGNv''@;'; put 'put ''bmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFcuZGVwbG95U2VydmljZVBhY2s9ISFXLmRlcGxveVNlcnZpY2VQYWNrLFcuZGVwbG95U2NyaXB0c3x8KFcuZGVwbG95U2NyaXB0cz1bXSksV30sUS52YWxpZGF0ZVN0cmVhbUNvbmZpZz1mdW5jdGlvbihX''@;'; put 'put ''KXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoITAhPT1XLnN0cmVhbVdlYiYmITEhPT1XLnN0cmVhbVdlYil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogYHN0''@;'; put 'put ''cmVhbVdlYmAgY2Fubm90IGJlIGEgbm9uLWJvb2xlYW4gdmFsdWUuIik7aWYoVy5zdHJlYW1XZWImJiFXLnN0cmVhbVdlYkZvbGRlcil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogYHN0cmVhbVdlYkZvbGRlcmAgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVm''@;'; put 'put ''aW5lZCB3aGVuIGBzdHJlYW1XZWJgIGlzIHRydWUuIik7aWYoVy5zdHJlYW1XZWImJiFXLndlYlNvdXJjZVBhdGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmVhbSBjb25maWc6IGB3ZWJTb3VyY2VQYXRoYCBjYW5ub3QgYmUgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVy''@;'; put 'put ''biBXLnN0cmVhbUxvZ28mJiJzdHJpbmciIT10eXBlb2YgVy5zdHJlYW1Mb2dvJiYoVy5zdHJlYW1Mb2dvPXZvaWQgMCksVy5hc3NldFBhdGhzfHwoVy5hc3NldFBhdGhzPVtdKSxXLnN0cmVhbVNlcnZpY2VOYW1lfHwoVy5zdHJlYW1TZXJ2aWNlTmFtZT0iY2xpY2ttZSIpLFd9LFEudmFsaWRh''@;'; put 'put ''dGVDb250ZXh0TmFtZT1mdW5jdGlvbihXLE4pe3JldHVybiBOIT09WS5TZXJ2ZXJUeXBlLlNhc1ZpeWF8fFc/VzoiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0In0sUS52YWxpZGF0ZVNlcnZlck5hbWU9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gTiE9PVkuU2VydmVyVHlwZS5TYXM5''@;'; put 'put ''fHxXP1c6IlNBU0FwcCJ9LFEudmFsaWRhdGVSZXBvc2l0b3J5TmFtZT1mdW5jdGlvbihXLE4pe3JldHVybiBOIT09WS5TZXJ2ZXJUeXBlLlNhczl8fFc/VzoiRm91bmRhdGlvbiJ9fSwyOTI3OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPVooODc2NCkuQnVmZmVyLGxlPXRo''@;'; put 'put ''aXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihOKXtyZXR1cm4gTiYmTi5fX2VzTW9kdWxlP046e2RlZmF1bHQ6Tn19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmRlY29kZUZyb21CYXNlNjQ9US5lbmNvZGVUb0Jhc2U2ND12b2lk''@;'; put 'put ''IDA7dmFyIFk9bGUoWig1ODM1KSksVz0ie3Nhc2pzX2VuY29kZWR9IjtRLmVuY29kZVRvQmFzZTY0PWZ1bmN0aW9uKE4pe3ZhciBlZT1ZLmRlZmF1bHQucmFuZG9tQnl0ZXMoMTAwKS50b1N0cmluZygiaGV4IikscT1pZS5mcm9tKGVlK04pLnRvU3RyaW5nKCJiYXNlNjQiKTtyZXR1cm4gVytx''@;'; put 'put ''fSxRLmRlY29kZUZyb21CYXNlNjQ9ZnVuY3Rpb24oTil7cmV0dXJuIE4uc3RhcnRzV2l0aChXKT8oTj1OLnJlcGxhY2UoL157c2FzanNfZW5jb2RlZH0vLCIiKSxpZS5mcm9tKE4sImJhc2U2NCIpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIwMCkpOk59fSw1ODE6KFUsUSk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuYnl0ZXNUb1NpemU9dm9pZCAwLFEuYnl0ZXNUb1NpemU9ZnVuY3Rpb24oWixpZSxsZSl7aWYodm9pZCAwPT09aWUmJihpZT0xKSx2b2lkIDA9PT1sZSYmKGxlPTEwOTk1MTE2Mjc3NzYpLDA9PT1a''@;'; put 'put ''KXJldHVybiIwIEIiO1o9Wj5sZT9sZTpaO3ZhciBZPWllPDA/MDppZSxXPU1hdGguZmxvb3IoTWF0aC5sb2coWikvTWF0aC5sb2coMTAyNCkpO3JldHVybihaL01hdGgucG93KDEwMjQsVykpLnRvRml4ZWQoWSkrIiAiK1siQiIsIktCIiwiTUIiLCJHQiIsIlRCIl1bV119fSw4NjUzOihVLFEp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmNodW5rPXZvaWQgMCxRLmNodW5rPWZ1bmN0aW9uKFosaWUpe3JldHVybiB2b2lkIDA9PT1pZSYmKGllPTIyMCksWi5sZW5ndGg8PWllP1taXTooWi5tYXRjaChuZXcgUmVn''@;'; put 'put ''RXhwKCIuezEsIitpZSsifSIsImciKSl8fFtdKS5maWx0ZXIoZnVuY3Rpb24obGUpe3JldHVybiEhbGV9KX19LDY0NTc6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFo9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKGxlLFkpe3ZhciBXPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wmJmxlW1N5bWJvbC5pdGVyYXRvcl07aWYoIVcpcmV0dXJuIGxlO3ZhciBOLGVlLHE9Vy5jYWxsKGxlKSxKPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1ZfHxZLS0gPjApJiYhKE49cS5uZXh0KCkpLmRvbmU7KUoucHVzaChOLnZhbHVlKX1jYXRjaChzZSl7ZWU9e2Vycm9yOnNlfX1maW5hbGx5''@;'; put 'put ''e3RyeXtOJiYhTi5kb25lJiYoVz1xLnJldHVybikmJlcuY2FsbChxKX1maW5hbGx5e2lmKGVlKXRocm93IGVlLmVycm9yfX1yZXR1cm4gSn0saWU9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihsZSxZLFcpe2lmKFd8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgTixl''@;'; put 'put ''ZT0wLHE9WS5sZW5ndGg7ZWU8cTtlZSsrKSFOJiZlZSBpbiBZfHwoTnx8KE49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoWSwwLGVlKSksTltlZV09WVtlZV0pO3JldHVybiBsZS5jb25jYXQoTnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoWSkpfTtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5kaWZmPXZvaWQgMCxRLmRpZmY9ZnVuY3Rpb24obGUsWSl7dmFyIFc9bGUuZmlsdGVyKGZ1bmN0aW9uKGVlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGVlPyFKU09OLnN0cmluZ2lmeShZKS5pbmNsdWRlcyhKU09OLnN0cmluZ2lmeShl''@;'; put 'put ''ZSkpOiFZLmluY2x1ZGVzKGVlKX0pLE49WS5maWx0ZXIoZnVuY3Rpb24oZWUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZWU/IUpTT04uc3RyaW5naWZ5KGxlKS5pbmNsdWRlcyhKU09OLnN0cmluZ2lmeShlZSkpOiFsZS5pbmNsdWRlcyhlZSl9KTtyZXR1cm4gaWUoaWUoW10sWihXKSwhMSks''@;'; put 'put ''WihOKSwhMSl9fSwxNTI5OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdldEV4ZWN1dG9yUGF0aD12b2lkIDA7dmFyIFo9e1NBU1ZJWUE6Ii9TQVNKb2JFeGVjdXRpb24iLFNBUzk6Ii9TQVNTdG9yZWRQcm9j''@;'; put 'put ''ZXNzL2RvIn07US5nZXRFeGVjdXRvclBhdGg9ZnVuY3Rpb24oaWUpe3JldHVybiBpZT8oaWU9aWUudG9VcHBlckNhc2UoKSxaW2llXXx8IiIpOiIifX0sMzMxNjooVSxRLFopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxR''@;'; put 'put ''LmdldFRyZWVFeGFtcGxlPVEuaXNGaWxlVHJlZT12b2lkIDA7dmFyIGllPVooMzkwMCk7US5pc0ZpbGVUcmVlPWZ1bmN0aW9uKE4pe3JldHVybiBOJiZOLm1lbWJlcnMmJkFycmF5LmlzQXJyYXkoTi5tZW1iZXJzKSYmMD09PU4ubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24oZWUpe3JldHVybiFs''@;'; put 'put ''ZShlZSkmJiFZKGVlKSYmIVcoZWUpfSkubGVuZ3RofTt2YXIgbGU9ZnVuY3Rpb24oTil7cmV0dXJuIE4mJiJzdHJpbmciPT10eXBlb2YgTi5uYW1lJiZOLnR5cGU9PT1pZS5NZW1iZXJUeXBlLnNlcnZpY2UmJiJzdHJpbmciPT10eXBlb2YgTi5jb2RlfSxZPWZ1bmN0aW9uKE4pe3JldHVybiBO''@;'; put 'put ''JiYic3RyaW5nIj09dHlwZW9mIE4ubmFtZSYmTi50eXBlPT09aWUuTWVtYmVyVHlwZS5maWxlJiYic3RyaW5nIj09dHlwZW9mIE4uY29kZX0sVz1mdW5jdGlvbihOKXtyZXR1cm4gTiYmInN0cmluZyI9PXR5cGVvZiBOLm5hbWUmJk4udHlwZT09PWllLk1lbWJlclR5cGUuZm9sZGVyJiZOLm1l''@;'; put 'put ''bWJlcnMmJkFycmF5LmlzQXJyYXkoTi5tZW1iZXJzKSYmMD09PU4ubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24oZWUpe3JldHVybiFsZShlZSkmJiFZKGVlKSYmIVcoZWUpfSkubGVuZ3RofTtRLmdldFRyZWVFeGFtcGxlPWZ1bmN0aW9uKCl7cmV0dXJue21lbWJlcnM6W3tuYW1lOiJqb2JzIix0''@;'; put 'put ''eXBlOmllLk1lbWJlclR5cGUuZm9sZGVyLG1lbWJlcnM6W3tuYW1lOiJleHRyYWN0Iix0eXBlOmllLk1lbWJlclR5cGUuZm9sZGVyLG1lbWJlcnM6W3tuYW1lOiJtYWtlZGF0YTEiLHR5cGU6aWUuTWVtYmVyVHlwZS5zZXJ2aWNlLGNvZGU6IiVwdXQgSGVsbG8gV29ybGQhOyJ9XX1dfV19fX0s''@;'; put 'put ''NjI2NjpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oYWUsZmUsZGUsdmUpe3ZvaWQgMD09PXZlJiYodmU9ZGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhZSx2ZSx7ZW51bWVyYWJs''@;'; put 'put ''ZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZmVbZGVdfX0pfTpmdW5jdGlvbihhZSxmZSxkZSx2ZSl7dm9pZCAwPT09dmUmJih2ZT1kZSksYWVbdmVdPWZlW2RlXX0pLGxlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihhZSxmZSl7Zm9yKHZhciBkZSBpbiBhZSkiZGVmYXVs''@;'; put 'put ''dCI9PT1kZXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZlLGRlKXx8aWUoZmUsYWUsZGUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5jaHVuaz1RLmRpZmY9US5ieXRlc1RvU2l6ZT1RLmdldEV4ZWN1dG9yUGF0aD1R''@;'; put 'put ''LmRlY29kZUZyb21CYXNlNjQ9US5lbmNvZGVUb0Jhc2U2ND1RLnVybE9yaWdpbj1RLmlzV2luZG93cz1RLnVuaXFBcnJheT1RLmFzeW5jRm9yRWFjaD1RLnV1aWR2ND12b2lkIDA7dmFyIFk9WigxMTMxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwidXVpZHY0Iix7ZW51bWVyYWJsZTohMCxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS51dWlkdjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImFzeW5jRm9yRWFjaCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuYXN5bmNGb3JFYWNofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJ1bmlxQXJyYXkiLHtl''@;'; put 'put ''bnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLnVuaXFBcnJheX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiaXNXaW5kb3dzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5pc1dpbmRvd3N9fSksbGUoWigzMzE2KSxRKTt2YXIgVz1aKDk2NTIp''@;'; put 'put ''O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJ1cmxPcmlnaW4iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXLnVybE9yaWdpbn19KTt2YXIgTj1aKDI5MjcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJlbmNvZGVUb0Jhc2U2NCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIE4uZW5jb2RlVG9CYXNlNjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImRlY29kZUZyb21CYXNlNjQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBOLmRlY29kZUZyb21CYXNlNjR9fSk7dmFyIGVlPVooMTUyOSk7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFEsImdldEV4ZWN1dG9yUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVlLmdldEV4ZWN1dG9yUGF0aH19KTt2YXIgcT1aKDU4MSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImJ5dGVzVG9TaXplIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gcS5ieXRlc1RvU2l6ZX19KTt2YXIgSj1aKDY0NTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJkaWZmIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSi5kaWZmfX0pO3ZhciBzZT1aKDg2NTMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJjaHVu''@;'; put 'put ''ayIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHNlLmNodW5rfX0pfSw5NjUyOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnVybE9yaWdpbj12b2lkIDAsUS51cmxPcmlnaW49ZnVuY3Rp''@;'; put 'put ''b24oWil7aWYoIiI9PT1aKXJldHVybiBaO3ZhciBpZTt0cnl7aWU9bmV3IFVSTChaKS5vcmlnaW59Y2F0Y2gobGUpe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBVUkwuIil9cmV0dXJuIGllfX0sMTEzMTpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQxNTUpLGxlPXRo''@;'; put 'put ''aXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihXLE4sZWUscSl7cmV0dXJuIG5ldyhlZXx8KGVlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5jdGlvbiBhZSh2ZSl7dHJ5e2RlKHEubmV4dCh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGZlKHZlKXt0cnl7ZGUocS50aHJv''@;'; put 'put ''dyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5zdGFuY2VvZiBlZT9BZTpuZXcgZWUoZnVuY3Rpb24oa2Upe2tlKEFlKX0pKS50aGVuKGFlLGZlKX1kZSgocT1xLmFwcGx5KFcsTnx8W10p''@;'; put 'put ''KS5uZXh0KCkpfSl9LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVyxOKXt2YXIgZWUscSxKLHNlLGFlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkpbMF0pdGhyb3cgSlsxXTtyZXR1cm4gSlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBzZT17bmV4dDpmZSgw''@;'; put 'put ''KSx0aHJvdzpmZSgxKSxyZXR1cm46ZmUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihzZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxzZTtmdW5jdGlvbiBmZShkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlKXtyZXR1cm4gZnVuY3Rpb24oQWUpe2lmKGVl''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2FlOyl0cnl7aWYoZWU9MSxxJiYoSj0yJkFlWzBdP3EucmV0dXJuOkFlWzBdP3EudGhyb3d8fCgoSj1xLnJldHVybikmJkouY2FsbChxKSwwKTpxLm5leHQpJiYhKEo9Si5jYWxsKHEs''@;'; put 'put ''QWVbMV0pKS5kb25lKXJldHVybiBKO3N3aXRjaChxPTAsSiYmKEFlPVsyJkFlWzBdLEoudmFsdWVdKSxBZVswXSl7Y2FzZSAwOmNhc2UgMTpKPUFlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYWUubGFiZWwrKyx7dmFsdWU6QWVbMV0sZG9uZTohMX07Y2FzZSA1OmFlLmxhYmVsKysscT1BZVsxXSxB''@;'; put 'put ''ZT1bMF07Y29udGludWU7Y2FzZSA3OkFlPWFlLm9wcy5wb3AoKSxhZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1hZS50cnlzKS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1BZVswXSYmMiE9PUFlWzBdKSl7YWU9MDtjb250aW51ZX1pZigzPT09QWVbMF0m''@;'; put 'put ''JighSnx8QWVbMV0+SlswXSYmQWVbMV08SlszXSkpe2FlLmxhYmVsPUFlWzFdO2JyZWFrfWlmKDY9PT1BZVswXSYmYWUubGFiZWw8SlsxXSl7YWUubGFiZWw9SlsxXSxKPUFlO2JyZWFrfWlmKEomJmFlLmxhYmVsPEpbMl0pe2FlLmxhYmVsPUpbMl0sYWUub3BzLnB1c2goQWUpO2JyZWFrfUpb''@;'; put 'put ''Ml0mJmFlLm9wcy5wb3AoKSxhZS50cnlzLnBvcCgpO2NvbnRpbnVlfUFlPU4uY2FsbChXLGFlKX1jYXRjaChrZSl7QWU9WzYsa2VdLHE9MH1maW5hbGx5e2VlPUo9MH1pZig1JkFlWzBdKXRocm93IEFlWzFdO3JldHVybnt2YWx1ZTpBZVswXT9BZVsxXTp2b2lkIDAsZG9uZTohMH19KFtkZSx2''@;'; put 'put ''ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzV2luZG93cz1RLnVuaXFBcnJheT1RLnV1aWR2ND1RLmFzeW5jRm9yRWFjaD12b2lkIDAsUS5hc3luY0ZvckVhY2g9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKCl7dmFyIGVlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24ocSl7c3dpdGNoKHEubGFiZWwpe2Nhc2UgMDplZT0wLHEubGFiZWw9MTtjYXNlIDE6cmV0dXJuIGVlPFcubGVuZ3RoP1s0LE4oV1tlZV0sZWUsVyldOlszLDRdO2Nhc2UgMjpxLnNlbnQoKSxxLmxhYmVsPTM7Y2Fz''@;'; put 'put ''ZSAzOnJldHVybiBlZSsrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0sUS51dWlkdjQ9ZnVuY3Rpb24oKXtyZXR1cm4ieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Ii5yZXBsYWNlKC9beHldL2csZnVuY3Rpb24oVyl7dmFyIE49MTYqTWF0aC5yYW5kb20oKXwwO3Jl''@;'; put 'put ''dHVybigieCI9PVc/TjozJk58OCkudG9TdHJpbmcoMTYpfSl9LFEudW5pcUFycmF5PWZ1bmN0aW9uKFcpe3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoVykpfSxRLmlzV2luZG93cz1mdW5jdGlvbigpe3JldHVybiJ3aW4zMiI9PT1pZS5wbGF0Zm9ybX19LDk4MDk6KFUsUSxaKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijtjb25zdCBpZT1RO2llLmJpZ251bT1aKDQ1OTApLGllLmRlZmluZT1aKDI1MDApLmRlZmluZSxpZS5iYXNlPVooMTk3OSksaWUuY29uc3RhbnRzPVooNjgyNiksaWUuZGVjb2RlcnM9Wig4MzA3KSxpZS5lbmNvZGVycz1aKDY1NzkpfSwyNTAwOihVLFEsWik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7Y29uc3QgaWU9Wig2NTc5KSxsZT1aKDgzMDcpLFk9Wig1NzE3KTtmdW5jdGlvbiBXKE4sZWUpe3RoaXMubmFtZT1OLHRoaXMuYm9keT1lZSx0aGlzLmRlY29kZXJzPXt9LHRoaXMuZW5jb2RlcnM9e319US5kZWZpbmU9ZnVuY3Rpb24oTixlZSl7cmV0dXJuIG5ldyBXKE4sZWUpfSxXLnBy''@;'; put 'put ''b3RvdHlwZS5fY3JlYXRlTmFtZWQ9ZnVuY3Rpb24oTil7Y29uc3QgZWU9dGhpcy5uYW1lO2Z1bmN0aW9uIHEoSil7dGhpcy5faW5pdE5hbWVkKEosZWUpfXJldHVybiBZKHEsTikscS5wcm90b3R5cGUuX2luaXROYW1lZD1mdW5jdGlvbihKLHNlKXtOLmNhbGwodGhpcyxKLHNlKX0sbmV3IHEo''@;'; put 'put ''dGhpcyl9LFcucHJvdG90eXBlLl9nZXREZWNvZGVyPWZ1bmN0aW9uKE4pe3JldHVybiB0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KE49Tnx8ImRlciIpfHwodGhpcy5kZWNvZGVyc1tOXT10aGlzLl9jcmVhdGVOYW1lZChsZVtOXSkpLHRoaXMuZGVjb2RlcnNbTl19LFcucHJvdG90eXBl''@;'; put 'put ''LmRlY29kZT1mdW5jdGlvbihOLGVlLHEpe3JldHVybiB0aGlzLl9nZXREZWNvZGVyKGVlKS5kZWNvZGUoTixxKX0sVy5wcm90b3R5cGUuX2dldEVuY29kZXI9ZnVuY3Rpb24oTil7cmV0dXJuIHRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoTj1OfHwiZGVyIil8fCh0aGlzLmVuY29kZXJz''@;'; put 'put ''W05dPXRoaXMuX2NyZWF0ZU5hbWVkKGllW05dKSksdGhpcy5lbmNvZGVyc1tOXX0sVy5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKE4sZWUscSl7cmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZWUpLmVuY29kZShOLHEpfX0sNjYyNTooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVoo''@;'; put 'put ''NTcxNyksbGU9Wig4NDY1KS5iLFk9WigyMzk5KS5CdWZmZXI7ZnVuY3Rpb24gVyhlZSxxKXtsZS5jYWxsKHRoaXMscSksWS5pc0J1ZmZlcihlZSk/KHRoaXMuYmFzZT1lZSx0aGlzLm9mZnNldD0wLHRoaXMubGVuZ3RoPWVlLmxlbmd0aCk6dGhpcy5lcnJvcigiSW5wdXQgbm90IEJ1ZmZlciIp''@;'; put 'put ''fWZ1bmN0aW9uIE4oZWUscSl7aWYoQXJyYXkuaXNBcnJheShlZSkpdGhpcy5sZW5ndGg9MCx0aGlzLnZhbHVlPWVlLm1hcChmdW5jdGlvbihKKXtyZXR1cm4gTi5pc0VuY29kZXJCdWZmZXIoSil8fChKPW5ldyBOKEoscSkpLHRoaXMubGVuZ3RoKz1KLmxlbmd0aCxKfSx0aGlzKTtlbHNlIGlm''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgZWUpe2lmKCEoMDw9ZWUmJmVlPD0yNTUpKXJldHVybiBxLmVycm9yKCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlIik7dGhpcy52YWx1ZT1lZSx0aGlzLmxlbmd0aD0xfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlZSl0aGlzLnZhbHVlPWVlLHRoaXMu''@;'; put 'put ''bGVuZ3RoPVkuYnl0ZUxlbmd0aChlZSk7ZWxzZXtpZighWS5pc0J1ZmZlcihlZSkpcmV0dXJuIHEuZXJyb3IoIlVuc3VwcG9ydGVkIHR5cGU6ICIrdHlwZW9mIGVlKTt0aGlzLnZhbHVlPWVlLHRoaXMubGVuZ3RoPWVlLmxlbmd0aH19aWUoVyxsZSksUS5DPVcsVy5pc0RlY29kZXJCdWZmZXI9''@;'; put 'put ''ZnVuY3Rpb24oZWUpe3JldHVybiBlZSBpbnN0YW5jZW9mIFd8fCJvYmplY3QiPT10eXBlb2YgZWUmJlkuaXNCdWZmZXIoZWUuYmFzZSkmJiJEZWNvZGVyQnVmZmVyIj09PWVlLmNvbnN0cnVjdG9yLm5hbWUmJiJudW1iZXIiPT10eXBlb2YgZWUub2Zmc2V0JiYibnVtYmVyIj09dHlwZW9mIGVl''@;'; put 'put ''Lmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGVlLnNhdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlZS5yZXN0b3JlJiYiZnVuY3Rpb24iPT10eXBlb2YgZWUuaXNFbXB0eSYmImZ1bmN0aW9uIj09dHlwZW9mIGVlLnJlYWRVSW50OCYmImZ1bmN0aW9uIj09dHlwZW9mIGVlLnNraXAmJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBlZS5yYXd9LFcucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57b2Zmc2V0OnRoaXMub2Zmc2V0LHJlcG9ydGVyOmxlLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcyl9fSxXLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKGVlKXtjb25zdCBxPW5ldyBXKHRo''@;'; put 'put ''aXMuYmFzZSk7cmV0dXJuIHEub2Zmc2V0PWVlLm9mZnNldCxxLmxlbmd0aD10aGlzLm9mZnNldCx0aGlzLm9mZnNldD1lZS5vZmZzZXQsbGUucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLGVlLnJlcG9ydGVyKSxxfSxXLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMub2Zmc2V0PT09dGhpcy5sZW5ndGh9LFcucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlZSl7cmV0dXJuIHRoaXMub2Zmc2V0KzE8PXRoaXMubGVuZ3RoP3RoaXMuYmFzZS5yZWFkVUludDgodGhpcy5vZmZzZXQrKywhMCk6dGhpcy5lcnJvcihlZXx8IkRlY29kZXJCdWZmZXIgb3Zl''@;'; put 'put ''cnJ1biIpfSxXLnByb3RvdHlwZS5za2lwPWZ1bmN0aW9uKGVlLHEpe2lmKCEodGhpcy5vZmZzZXQrZWU8PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5lcnJvcihxfHwiRGVjb2RlckJ1ZmZlciBvdmVycnVuIik7Y29uc3QgSj1uZXcgVyh0aGlzLmJhc2UpO3JldHVybiBKLl9yZXBvcnRlclN0''@;'; put 'put ''YXRlPXRoaXMuX3JlcG9ydGVyU3RhdGUsSi5vZmZzZXQ9dGhpcy5vZmZzZXQsSi5sZW5ndGg9dGhpcy5vZmZzZXQrZWUsdGhpcy5vZmZzZXQrPWVlLEp9LFcucHJvdG90eXBlLnJhdz1mdW5jdGlvbihlZSl7cmV0dXJuIHRoaXMuYmFzZS5zbGljZShlZT9lZS5vZmZzZXQ6dGhpcy5vZmZzZXQs''@;'; put 'put ''dGhpcy5sZW5ndGgpfSxRLlI9TixOLmlzRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbihlZSl7cmV0dXJuIGVlIGluc3RhbmNlb2YgTnx8Im9iamVjdCI9PXR5cGVvZiBlZSYmIkVuY29kZXJCdWZmZXIiPT09ZWUuY29uc3RydWN0b3IubmFtZSYmIm51bWJlciI9PXR5cGVvZiBlZS5sZW5ndGgmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBlZS5qb2lufSxOLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKGVlLHEpe3JldHVybiBlZXx8KGVlPVkuYWxsb2ModGhpcy5sZW5ndGgpKSxxfHwocT0wKSwwPT09dGhpcy5sZW5ndGh8fChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpP3RoaXMudmFsdWUuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihKKXtKLmpvaW4oZWUscSkscSs9Si5sZW5ndGh9KTooIm51bWJlciI9PXR5cGVvZiB0aGlzLnZhbHVlP2VlW3FdPXRoaXMudmFsdWU6InN0cmluZyI9PXR5cGVvZiB0aGlzLnZhbHVlP2VlLndyaXRlKHRoaXMudmFsdWUscSk6WS5pc0J1ZmZlcih0aGlzLnZhbHVlKSYmdGhp''@;'; put 'put ''cy52YWx1ZS5jb3B5KGVlLHEpLHErPXRoaXMubGVuZ3RoKSksZWV9fSwxOTc5OihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9UTtpZS5SZXBvcnRlcj1aKDg0NjUpLmIsaWUuRGVjb2RlckJ1ZmZlcj1aKDY2MjUpLkMsaWUuRW5jb2RlckJ1ZmZlcj1aKDY2MjUpLlIsaWUuTm9kZT1a''@;'; put 'put ''KDE5NDkpfSwxOTQ5OihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9Wig4NDY1KS5iLGxlPVooNjYyNSkuUixZPVooNjYyNSkuQyxXPVooOTc0NiksTj1bInNlcSIsInNlcW9mIiwic2V0Iiwic2V0b2YiLCJvYmppZCIsImJvb2wiLCJnZW50aW1lIiwidXRjdGltZSIsIm51bGxfIiwi''@;'; put 'put ''ZW51bSIsImludCIsIm9iakRlc2MiLCJiaXRzdHIiLCJibXBzdHIiLCJjaGFyc3RyIiwiZ2Vuc3RyIiwiZ3JhcGhzdHIiLCJpYTVzdHIiLCJpc282NDZzdHIiLCJudW1zdHIiLCJvY3RzdHIiLCJwcmludHN0ciIsInQ2MXN0ciIsInVuaXN0ciIsInV0ZjhzdHIiLCJ2aWRlb3N0ciJdLGVlPVsi''@;'; put 'put ''a2V5Iiwib2JqIiwidXNlIiwib3B0aW9uYWwiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiZGVmIiwiY2hvaWNlIiwiYW55IiwiY29udGFpbnMiXS5jb25jYXQoTik7ZnVuY3Rpb24gcShzZSxhZSxmZSl7Y29uc3QgZGU9e307dGhpcy5fYmFzZVN0YXRlPWRlLGRlLm5hbWU9ZmUsZGUuZW5jPXNl''@;'; put 'put ''LGRlLnBhcmVudD1hZXx8bnVsbCxkZS5jaGlsZHJlbj1udWxsLGRlLnRhZz1udWxsLGRlLmFyZ3M9bnVsbCxkZS5yZXZlcnNlQXJncz1udWxsLGRlLmNob2ljZT1udWxsLGRlLm9wdGlvbmFsPSExLGRlLmFueT0hMSxkZS5vYmo9ITEsZGUudXNlPW51bGwsZGUudXNlRGVjb2Rlcj1udWxsLGRl''@;'; put 'put ''LmtleT1udWxsLGRlLmRlZmF1bHQ9bnVsbCxkZS5leHBsaWNpdD1udWxsLGRlLmltcGxpY2l0PW51bGwsZGUuY29udGFpbnM9bnVsbCxkZS5wYXJlbnR8fChkZS5jaGlsZHJlbj1bXSx0aGlzLl93cmFwKCkpfVUuZXhwb3J0cz1xO2NvbnN0IEo9WyJlbmMiLCJwYXJlbnQiLCJjaGlsZHJlbiIs''@;'; put 'put ''InRhZyIsImFyZ3MiLCJyZXZlcnNlQXJncyIsImNob2ljZSIsIm9wdGlvbmFsIiwiYW55Iiwib2JqIiwidXNlIiwiYWx0ZXJlZFVzZSIsImtleSIsImRlZmF1bHQiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiY29udGFpbnMiXTtxLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe2NvbnN0IHNl''@;'; put 'put ''PXRoaXMuX2Jhc2VTdGF0ZSxhZT17fTtKLmZvckVhY2goZnVuY3Rpb24oZGUpe2FlW2RlXT1zZVtkZV19KTtjb25zdCBmZT1uZXcgdGhpcy5jb25zdHJ1Y3RvcihhZS5wYXJlbnQpO3JldHVybiBmZS5fYmFzZVN0YXRlPWFlLGZlfSxxLnByb3RvdHlwZS5fd3JhcD1mdW5jdGlvbigpe2NvbnN0''@;'; put 'put ''IHNlPXRoaXMuX2Jhc2VTdGF0ZTtlZS5mb3JFYWNoKGZ1bmN0aW9uKGFlKXt0aGlzW2FlXT1mdW5jdGlvbigpe2NvbnN0IGZlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiBzZS5jaGlsZHJlbi5wdXNoKGZlKSxmZVthZV0uYXBwbHkoZmUsYXJndW1lbnRzKX19LHRoaXMpfSxx''@;'; put 'put ''LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihzZSl7Y29uc3QgYWU9dGhpcy5fYmFzZVN0YXRlO1cobnVsbD09PWFlLnBhcmVudCksc2UuY2FsbCh0aGlzKSxhZS5jaGlsZHJlbj1hZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oZmUpe3JldHVybiBmZS5fYmFzZVN0YXRlLnBhcmVudD09PXRo''@;'; put 'put ''aXN9LHRoaXMpLFcuZXF1YWwoYWUuY2hpbGRyZW4ubGVuZ3RoLDEsIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCIpfSxxLnByb3RvdHlwZS5fdXNlQXJncz1mdW5jdGlvbihzZSl7Y29uc3QgYWU9dGhpcy5fYmFzZVN0YXRlLGZlPXNlLmZpbHRlcihmdW5jdGlvbihkZSl7cmV0''@;'; put 'put ''dXJuIGRlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcn0sdGhpcyk7c2U9c2UuZmlsdGVyKGZ1bmN0aW9uKGRlKXtyZXR1cm4hKGRlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcil9LHRoaXMpLDAhPT1mZS5sZW5ndGgmJihXKG51bGw9PT1hZS5jaGlsZHJlbiksYWUuY2hpbGRyZW49''@;'; put 'put ''ZmUsZmUuZm9yRWFjaChmdW5jdGlvbihkZSl7ZGUuX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30sdGhpcykpLDAhPT1zZS5sZW5ndGgmJihXKG51bGw9PT1hZS5hcmdzKSxhZS5hcmdzPXNlLGFlLnJldmVyc2VBcmdzPXNlLm1hcChmdW5jdGlvbihkZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBkZXx8''@;'; put 'put ''ZGUuY29uc3RydWN0b3IhPT1PYmplY3QpcmV0dXJuIGRlO2NvbnN0IHZlPXt9O3JldHVybiBPYmplY3Qua2V5cyhkZSkuZm9yRWFjaChmdW5jdGlvbihBZSl7QWU9PSgwfEFlKSYmKEFlfD0wKSx2ZVtkZVtBZV1dPUFlfSksdmV9KSl9LFsiX3BlZWtUYWciLCJfZGVjb2RlVGFnIiwiX3VzZSIs''@;'; put 'put ''Il9kZWNvZGVTdHIiLCJfZGVjb2RlT2JqaWQiLCJfZGVjb2RlVGltZSIsIl9kZWNvZGVOdWxsIiwiX2RlY29kZUludCIsIl9kZWNvZGVCb29sIiwiX2RlY29kZUxpc3QiLCJfZW5jb2RlQ29tcG9zaXRlIiwiX2VuY29kZVN0ciIsIl9lbmNvZGVPYmppZCIsIl9lbmNvZGVUaW1lIiwiX2VuY29k''@;'; put 'put ''ZU51bGwiLCJfZW5jb2RlSW50IiwiX2VuY29kZUJvb2wiXS5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtxLnByb3RvdHlwZVtzZV09ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Ioc2UrIiBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAiK3RoaXMuX2Jhc2VTdGF0ZS5lbmMpfX0pLE4uZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihzZSl7cS5wcm90b3R5cGVbc2VdPWZ1bmN0aW9uKCl7Y29uc3QgYWU9dGhpcy5fYmFzZVN0YXRlLGZlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFcobnVsbD09PWFlLnRhZyksYWUudGFnPXNlLHRoaXMuX3VzZUFyZ3MoZmUpLHRo''@;'; put 'put ''aXN9fSkscS5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKHNlKXtXKHNlKTtjb25zdCBhZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFcobnVsbD09PWFlLnVzZSksYWUudXNlPXNlLHRoaXN9LHEucHJvdG90eXBlLm9wdGlvbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5vcHRp''@;'; put 'put ''b25hbD0hMCx0aGlzfSxxLnByb3RvdHlwZS5kZWY9ZnVuY3Rpb24oc2Upe2NvbnN0IGFlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gVyhudWxsPT09YWUuZGVmYXVsdCksYWUuZGVmYXVsdD1zZSxhZS5vcHRpb25hbD0hMCx0aGlzfSxxLnByb3RvdHlwZS5leHBsaWNpdD1mdW5jdGlvbihzZSl7''@;'; put 'put ''Y29uc3QgYWU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBXKG51bGw9PT1hZS5leHBsaWNpdCYmbnVsbD09PWFlLmltcGxpY2l0KSxhZS5leHBsaWNpdD1zZSx0aGlzfSxxLnByb3RvdHlwZS5pbXBsaWNpdD1mdW5jdGlvbihzZSl7Y29uc3QgYWU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBXKG51''@;'; put 'put ''bGw9PT1hZS5leHBsaWNpdCYmbnVsbD09PWFlLmltcGxpY2l0KSxhZS5pbXBsaWNpdD1zZSx0aGlzfSxxLnByb3RvdHlwZS5vYmo9ZnVuY3Rpb24oKXtjb25zdCBzZT10aGlzLl9iYXNlU3RhdGUsYWU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gc2Uub2Jq''@;'; put 'put ''PSEwLDAhPT1hZS5sZW5ndGgmJnRoaXMuX3VzZUFyZ3MoYWUpLHRoaXN9LHEucHJvdG90eXBlLmtleT1mdW5jdGlvbihzZSl7Y29uc3QgYWU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBXKG51bGw9PT1hZS5rZXkpLGFlLmtleT1zZSx0aGlzfSxxLnByb3RvdHlwZS5hbnk9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fYmFzZVN0YXRlLmFueT0hMCx0aGlzfSxxLnByb3RvdHlwZS5jaG9pY2U9ZnVuY3Rpb24oc2Upe2NvbnN0IGFlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gVyhudWxsPT09YWUuY2hvaWNlKSxhZS5jaG9pY2U9c2UsdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyhzZSkubWFw''@;'; put 'put ''KGZ1bmN0aW9uKGZlKXtyZXR1cm4gc2VbZmVdfSkpLHRoaXN9LHEucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHNlKXtjb25zdCBhZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFcobnVsbD09PWFlLnVzZSksYWUuY29udGFpbnM9c2UsdGhpc30scS5wcm90b3R5cGUuX2RlY29kZT1mdW5j''@;'; put 'put ''dGlvbihzZSxhZSl7Y29uc3QgZmU9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1mZS5wYXJlbnQpcmV0dXJuIHNlLndyYXBSZXN1bHQoZmUuY2hpbGRyZW5bMF0uX2RlY29kZShzZSxhZSkpO2xldCBkZSx2ZT1mZS5kZWZhdWx0LEFlPSEwLGtlPW51bGw7aWYobnVsbCE9PWZlLmtleSYmKGtl''@;'; put 'put ''PXNlLmVudGVyS2V5KGZlLmtleSkpLGZlLm9wdGlvbmFsKXtsZXQgU2U9bnVsbDtpZihudWxsIT09ZmUuZXhwbGljaXQ/U2U9ZmUuZXhwbGljaXQ6bnVsbCE9PWZlLmltcGxpY2l0P1NlPWZlLmltcGxpY2l0Om51bGwhPT1mZS50YWcmJihTZT1mZS50YWcpLG51bGwhPT1TZXx8ZmUuYW55KXtp''@;'; put 'put ''ZihBZT10aGlzLl9wZWVrVGFnKHNlLFNlLGZlLmFueSksc2UuaXNFcnJvcihBZSkpcmV0dXJuIEFlfWVsc2V7Y29uc3QgSWU9c2Uuc2F2ZSgpO3RyeXtudWxsPT09ZmUuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoZmUudGFnLHNlLGFlKTp0aGlzLl9kZWNvZGVDaG9pY2Uoc2UsYWUpLEFl''@;'; put 'put ''PSEwfWNhdGNoKFRlKXtBZT0hMX1zZS5yZXN0b3JlKEllKX19aWYoZmUub2JqJiZBZSYmKGRlPXNlLmVudGVyT2JqZWN0KCkpLEFlKXtpZihudWxsIT09ZmUuZXhwbGljaXQpe2NvbnN0IEllPXRoaXMuX2RlY29kZVRhZyhzZSxmZS5leHBsaWNpdCk7aWYoc2UuaXNFcnJvcihJZSkpcmV0dXJu''@;'; put 'put ''IEllO3NlPUllfWNvbnN0IFNlPXNlLm9mZnNldDtpZihudWxsPT09ZmUudXNlJiZudWxsPT09ZmUuY2hvaWNlKXtsZXQgSWU7ZmUuYW55JiYoSWU9c2Uuc2F2ZSgpKTtjb25zdCBUZT10aGlzLl9kZWNvZGVUYWcoc2UsbnVsbCE9PWZlLmltcGxpY2l0P2ZlLmltcGxpY2l0OmZlLnRhZyxmZS5h''@;'; put 'put ''bnkpO2lmKHNlLmlzRXJyb3IoVGUpKXJldHVybiBUZTtmZS5hbnk/dmU9c2UucmF3KEllKTpzZT1UZX1pZihhZSYmYWUudHJhY2smJm51bGwhPT1mZS50YWcmJmFlLnRyYWNrKHNlLnBhdGgoKSxTZSxzZS5sZW5ndGgsInRhZ2dlZCIpLGFlJiZhZS50cmFjayYmbnVsbCE9PWZlLnRhZyYmYWUu''@;'; put 'put ''dHJhY2soc2UucGF0aCgpLHNlLm9mZnNldCxzZS5sZW5ndGgsImNvbnRlbnQiKSxmZS5hbnl8fCh2ZT1udWxsPT09ZmUuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoZmUudGFnLHNlLGFlKTp0aGlzLl9kZWNvZGVDaG9pY2Uoc2UsYWUpKSxzZS5pc0Vycm9yKHZlKSlyZXR1cm4gdmU7aWYo''@;'; put 'put ''ZmUuYW55fHxudWxsIT09ZmUuY2hvaWNlfHxudWxsPT09ZmUuY2hpbGRyZW58fGZlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oSWUpe0llLl9kZWNvZGUoc2UsYWUpfSksZmUuY29udGFpbnMmJigib2N0c3RyIj09PWZlLnRhZ3x8ImJpdHN0ciI9PT1mZS50YWcpKXtjb25zdCBJZT1uZXcg''@;'; put 'put ''WSh2ZSk7dmU9dGhpcy5fZ2V0VXNlKGZlLmNvbnRhaW5zLHNlLl9yZXBvcnRlclN0YXRlLm9iaikuX2RlY29kZShJZSxhZSl9fXJldHVybiBmZS5vYmomJkFlJiYodmU9c2UubGVhdmVPYmplY3QoZGUpKSxudWxsPT09ZmUua2V5fHxudWxsPT09dmUmJiEwIT09QWU/bnVsbCE9PWtlJiZzZS5l''@;'; put 'put ''eGl0S2V5KGtlKTpzZS5sZWF2ZUtleShrZSxmZS5rZXksdmUpLHZlfSxxLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYz1mdW5jdGlvbihzZSxhZSxmZSl7Y29uc3QgZGU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiJzZXEiPT09c2V8fCJzZXQiPT09c2U/bnVsbDoic2Vxb2YiPT09c2V8fCJzZXRv''@;'; put 'put ''ZiI9PT1zZT90aGlzLl9kZWNvZGVMaXN0KGFlLHNlLGRlLmFyZ3NbMF0sZmUpOi9zdHIkLy50ZXN0KHNlKT90aGlzLl9kZWNvZGVTdHIoYWUsc2UsZmUpOiJvYmppZCI9PT1zZSYmZGUuYXJncz90aGlzLl9kZWNvZGVPYmppZChhZSxkZS5hcmdzWzBdLGRlLmFyZ3NbMV0sZmUpOiJvYmppZCI9''@;'; put 'put ''PT1zZT90aGlzLl9kZWNvZGVPYmppZChhZSxudWxsLG51bGwsZmUpOiJnZW50aW1lIj09PXNlfHwidXRjdGltZSI9PT1zZT90aGlzLl9kZWNvZGVUaW1lKGFlLHNlLGZlKToibnVsbF8iPT09c2U/dGhpcy5fZGVjb2RlTnVsbChhZSxmZSk6ImJvb2wiPT09c2U/dGhpcy5fZGVjb2RlQm9vbChh''@;'; put 'put ''ZSxmZSk6Im9iakRlc2MiPT09c2U/dGhpcy5fZGVjb2RlU3RyKGFlLHNlLGZlKToiaW50Ij09PXNlfHwiZW51bSI9PT1zZT90aGlzLl9kZWNvZGVJbnQoYWUsZGUuYXJncyYmZGUuYXJnc1swXSxmZSk6bnVsbCE9PWRlLnVzZT90aGlzLl9nZXRVc2UoZGUudXNlLGFlLl9yZXBvcnRlclN0YXRl''@;'; put 'put ''Lm9iaikuX2RlY29kZShhZSxmZSk6YWUuZXJyb3IoInVua25vd24gdGFnOiAiK3NlKX0scS5wcm90b3R5cGUuX2dldFVzZT1mdW5jdGlvbihzZSxhZSl7Y29uc3QgZmU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBmZS51c2VEZWNvZGVyPXRoaXMuX3VzZShzZSxhZSksVyhudWxsPT09ZmUudXNl''@;'; put 'put ''RGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCksZmUudXNlRGVjb2Rlcj1mZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF0sZmUuaW1wbGljaXQhPT1mZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQmJihmZS51c2VEZWNvZGVyPWZlLnVzZURlY29kZXIuY2xvbmUoKSxm''@;'; put 'put ''ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQ9ZmUuaW1wbGljaXQpLGZlLnVzZURlY29kZXJ9LHEucHJvdG90eXBlLl9kZWNvZGVDaG9pY2U9ZnVuY3Rpb24oc2UsYWUpe2NvbnN0IGZlPXRoaXMuX2Jhc2VTdGF0ZTtsZXQgZGU9bnVsbCx2ZT0hMTtyZXR1cm4gT2JqZWN0LmtleXMo''@;'; put 'put ''ZmUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKEFlKXtjb25zdCBrZT1zZS5zYXZlKCksU2U9ZmUuY2hvaWNlW0FlXTt0cnl7Y29uc3QgSWU9U2UuX2RlY29kZShzZSxhZSk7aWYoc2UuaXNFcnJvcihJZSkpcmV0dXJuITE7ZGU9e3R5cGU6QWUsdmFsdWU6SWV9LHZlPSEwfWNhdGNoKEllKXtyZXR1''@;'; put 'put ''cm4gc2UucmVzdG9yZShrZSksITF9cmV0dXJuITB9LHRoaXMpLHZlP2RlOnNlLmVycm9yKCJDaG9pY2Ugbm90IG1hdGNoZWQiKX0scS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXI9ZnVuY3Rpb24oc2Upe3JldHVybiBuZXcgbGUoc2UsdGhpcy5yZXBvcnRlcil9LHEucHJvdG90eXBl''@;'; put 'put ''Ll9lbmNvZGU9ZnVuY3Rpb24oc2UsYWUsZmUpe2NvbnN0IGRlPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsIT09ZGUuZGVmYXVsdCYmZGUuZGVmYXVsdD09PXNlKXJldHVybjtjb25zdCB2ZT10aGlzLl9lbmNvZGVWYWx1ZShzZSxhZSxmZSk7cmV0dXJuIHZvaWQgMD09PXZlfHx0aGlzLl9za2lw''@;'; put 'put ''RGVmYXVsdCh2ZSxhZSxmZSk/dm9pZCAwOnZlfSxxLnByb3RvdHlwZS5fZW5jb2RlVmFsdWU9ZnVuY3Rpb24oc2UsYWUsZmUpe2NvbnN0IGRlPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09ZGUucGFyZW50KXJldHVybiBkZS5jaGlsZHJlblswXS5fZW5jb2RlKHNlLGFlfHxuZXcgaWUpO2xl''@;'; put 'put ''dCB2ZT1udWxsO2lmKHRoaXMucmVwb3J0ZXI9YWUsZGUub3B0aW9uYWwmJnZvaWQgMD09PXNlKXtpZihudWxsPT09ZGUuZGVmYXVsdClyZXR1cm47c2U9ZGUuZGVmYXVsdH1sZXQgQWU9bnVsbCxrZT0hMTtpZihkZS5hbnkpdmU9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzZSk7ZWxzZSBp''@;'; put 'put ''ZihkZS5jaG9pY2UpdmU9dGhpcy5fZW5jb2RlQ2hvaWNlKHNlLGFlKTtlbHNlIGlmKGRlLmNvbnRhaW5zKUFlPXRoaXMuX2dldFVzZShkZS5jb250YWlucyxmZSkuX2VuY29kZShzZSxhZSksa2U9ITA7ZWxzZSBpZihkZS5jaGlsZHJlbilBZT1kZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oU2Up''@;'; put 'put ''e2lmKCJudWxsXyI9PT1TZS5fYmFzZVN0YXRlLnRhZylyZXR1cm4gU2UuX2VuY29kZShudWxsLGFlLHNlKTtpZihudWxsPT09U2UuX2Jhc2VTdGF0ZS5rZXkpcmV0dXJuIGFlLmVycm9yKCJDaGlsZCBzaG91bGQgaGF2ZSBhIGtleSIpO2NvbnN0IEllPWFlLmVudGVyS2V5KFNlLl9iYXNlU3Rh''@;'; put 'put ''dGUua2V5KTtpZigib2JqZWN0IiE9dHlwZW9mIHNlKXJldHVybiBhZS5lcnJvcigiQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Iik7Y29uc3QgVGU9U2UuX2VuY29kZShzZVtTZS5fYmFzZVN0YXRlLmtleV0sYWUsc2UpO3JldHVybiBhZS5sZWF2ZUtleShJZSksVGV9''@;'; put 'put ''LHRoaXMpLmZpbHRlcihmdW5jdGlvbihTZSl7cmV0dXJuIFNlfSksQWU9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihBZSk7ZWxzZSBpZigic2Vxb2YiPT09ZGUudGFnfHwic2V0b2YiPT09ZGUudGFnKXtpZighZGUuYXJnc3x8MSE9PWRlLmFyZ3MubGVuZ3RoKXJldHVybiBhZS5lcnJvcigi''@;'; put 'put ''VG9vIG1hbnkgYXJncyBmb3IgOiAiK2RlLnRhZyk7aWYoIUFycmF5LmlzQXJyYXkoc2UpKXJldHVybiBhZS5lcnJvcigic2Vxb2Yvc2V0b2YsIGJ1dCBkYXRhIGlzIG5vdCBBcnJheSIpO2NvbnN0IFNlPXRoaXMuY2xvbmUoKTtTZS5fYmFzZVN0YXRlLmltcGxpY2l0PW51bGwsQWU9dGhpcy5f''@;'; put 'put ''Y3JlYXRlRW5jb2RlckJ1ZmZlcihzZS5tYXAoZnVuY3Rpb24oSWUpe3JldHVybiB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3NbMF0sc2UpLl9lbmNvZGUoSWUsYWUpfSxTZSkpfWVsc2UgbnVsbCE9PWRlLnVzZT92ZT10aGlzLl9nZXRVc2UoZGUudXNlLGZlKS5fZW5jb2RlKHNl''@;'; put 'put ''LGFlKTooQWU9dGhpcy5fZW5jb2RlUHJpbWl0aXZlKGRlLnRhZyxzZSksa2U9ITApO2lmKCFkZS5hbnkmJm51bGw9PT1kZS5jaG9pY2Upe2NvbnN0IFNlPW51bGwhPT1kZS5pbXBsaWNpdD9kZS5pbXBsaWNpdDpkZS50YWcsSWU9bnVsbD09PWRlLmltcGxpY2l0PyJ1bml2ZXJzYWwiOiJjb250''@;'; put 'put ''ZXh0IjtudWxsPT09U2U/bnVsbD09PWRlLnVzZSYmYWUuZXJyb3IoIlRhZyBjb3VsZCBiZSBvbWl0dGVkIG9ubHkgZm9yIC51c2UoKSIpOm51bGw9PT1kZS51c2UmJih2ZT10aGlzLl9lbmNvZGVDb21wb3NpdGUoU2Usa2UsSWUsQWUpKX1yZXR1cm4gbnVsbCE9PWRlLmV4cGxpY2l0JiYodmU9''@;'; put 'put ''dGhpcy5fZW5jb2RlQ29tcG9zaXRlKGRlLmV4cGxpY2l0LCExLCJjb250ZXh0Iix2ZSkpLHZlfSxxLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlPWZ1bmN0aW9uKHNlLGFlKXtjb25zdCBmZT10aGlzLl9iYXNlU3RhdGUsZGU9ZmUuY2hvaWNlW3NlLnR5cGVdO3JldHVybiBkZXx8VyghMSxzZS50''@;'; put 'put ''eXBlKyIgbm90IGZvdW5kIGluICIrSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoZmUuY2hvaWNlKSkpLGRlLl9lbmNvZGUoc2UudmFsdWUsYWUpfSxxLnByb3RvdHlwZS5fZW5jb2RlUHJpbWl0aXZlPWZ1bmN0aW9uKHNlLGFlKXtjb25zdCBmZT10aGlzLl9iYXNlU3RhdGU7aWYoL3N0ciQv''@;'; put 'put ''LnRlc3Qoc2UpKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoYWUsc2UpO2lmKCJvYmppZCI9PT1zZSYmZmUuYXJncylyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoYWUsZmUucmV2ZXJzZUFyZ3NbMF0sZmUuYXJnc1sxXSk7aWYoIm9iamlkIj09PXNlKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChh''@;'; put 'put ''ZSxudWxsLG51bGwpO2lmKCJnZW50aW1lIj09PXNlfHwidXRjdGltZSI9PT1zZSlyZXR1cm4gdGhpcy5fZW5jb2RlVGltZShhZSxzZSk7aWYoIm51bGxfIj09PXNlKXJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7aWYoImludCI9PT1zZXx8ImVudW0iPT09c2UpcmV0dXJuIHRoaXMuX2VuY29k''@;'; put 'put ''ZUludChhZSxmZS5hcmdzJiZmZS5yZXZlcnNlQXJnc1swXSk7aWYoImJvb2wiPT09c2UpcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woYWUpO2lmKCJvYmpEZXNjIj09PXNlKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoYWUsc2UpO3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdGFnOiAiK3Nl''@;'; put 'put ''KX0scS5wcm90b3R5cGUuX2lzTnVtc3RyPWZ1bmN0aW9uKHNlKXtyZXR1cm4vXlswLTkgXSokLy50ZXN0KHNlKX0scS5wcm90b3R5cGUuX2lzUHJpbnRzdHI9ZnVuY3Rpb24oc2Upe3JldHVybi9eW0EtWmEtejAtOSAnKCkrLC0uLzo9P10qJC8udGVzdChzZSl9fSw4NDY1OihVLFEsWik9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7Y29uc3QgaWU9Wig1NzE3KTtmdW5jdGlvbiBsZShXKXt0aGlzLl9yZXBvcnRlclN0YXRlPXtvYmo6bnVsbCxwYXRoOltdLG9wdGlvbnM6V3x8e30sZXJyb3JzOltdfX1mdW5jdGlvbiBZKFcsTil7dGhpcy5wYXRoPVcsdGhpcy5yZXRocm93KE4pfVEuYj1sZSxsZS5wcm90''@;'; put 'put ''b3R5cGUuaXNFcnJvcj1mdW5jdGlvbihXKXtyZXR1cm4gVyBpbnN0YW5jZW9mIFl9LGxlLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7Y29uc3QgVz10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybntvYmo6Vy5vYmoscGF0aExlbjpXLnBhdGgubGVuZ3RofX0sbGUucHJvdG90eXBlLnJlc3Rv''@;'; put 'put ''cmU9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9yZXBvcnRlclN0YXRlO04ub2JqPVcub2JqLE4ucGF0aD1OLnBhdGguc2xpY2UoMCxXLnBhdGhMZW4pfSxsZS5wcm90b3R5cGUuZW50ZXJLZXk9ZnVuY3Rpb24oVyl7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKFcpfSxs''@;'; put 'put ''ZS5wcm90b3R5cGUuZXhpdEtleT1mdW5jdGlvbihXKXtjb25zdCBOPXRoaXMuX3JlcG9ydGVyU3RhdGU7Ti5wYXRoPU4ucGF0aC5zbGljZSgwLFctMSl9LGxlLnByb3RvdHlwZS5sZWF2ZUtleT1mdW5jdGlvbihXLE4sZWUpe2NvbnN0IHE9dGhpcy5fcmVwb3J0ZXJTdGF0ZTt0aGlzLmV4aXRL''@;'; put 'put ''ZXkoVyksbnVsbCE9PXEub2JqJiYocS5vYmpbTl09ZWUpfSxsZS5wcm90b3R5cGUucGF0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbigiLyIpfSxsZS5wcm90b3R5cGUuZW50ZXJPYmplY3Q9ZnVuY3Rpb24oKXtjb25zdCBXPXRoaXMuX3JlcG9ydGVy''@;'; put 'put ''U3RhdGUsTj1XLm9iajtyZXR1cm4gVy5vYmo9e30sTn0sbGUucHJvdG90eXBlLmxlYXZlT2JqZWN0PWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fcmVwb3J0ZXJTdGF0ZSxlZT1OLm9iajtyZXR1cm4gTi5vYmo9VyxlZX0sbGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKFcpe2xldCBOO2Nv''@;'; put 'put ''bnN0IGVlPXRoaXMuX3JlcG9ydGVyU3RhdGUscT1XIGluc3RhbmNlb2YgWTtpZihOPXE/VzpuZXcgWShlZS5wYXRoLm1hcChmdW5jdGlvbihKKXtyZXR1cm4iWyIrSlNPTi5zdHJpbmdpZnkoSikrIl0ifSkuam9pbigiIiksVy5tZXNzYWdlfHxXLFcuc3RhY2spLCFlZS5vcHRpb25zLnBhcnRp''@;'; put 'put ''YWwpdGhyb3cgTjtyZXR1cm4gcXx8ZWUuZXJyb3JzLnB1c2goTiksTn0sbGUucHJvdG90eXBlLndyYXBSZXN1bHQ9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybiBOLm9wdGlvbnMucGFydGlhbD97cmVzdWx0OnRoaXMuaXNFcnJvcihXKT9udWxsOlcsZXJy''@;'; put 'put ''b3JzOk4uZXJyb3JzfTpXfSxpZShZLEVycm9yKSxZLnByb3RvdHlwZS5yZXRocm93PWZ1bmN0aW9uKFcpe2lmKHRoaXMubWVzc2FnZT1XKyIgYXQ6ICIrKHRoaXMucGF0aHx8IihzaGFsbG93KSIpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlz''@;'; put 'put ''LFkpLCF0aGlzLnN0YWNrKXRyeXt0aHJvdyBuZXcgRXJyb3IodGhpcy5tZXNzYWdlKX1jYXRjaChOKXt0aGlzLnN0YWNrPU4uc3RhY2t9cmV0dXJuIHRoaXN9fSwxNjA6KFUsUSk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gWihpZSl7Y29uc3QgbGU9e307cmV0dXJuIE9iamVjdC5rZXlzKGll''@;'; put 'put ''KS5mb3JFYWNoKGZ1bmN0aW9uKFkpeygwfFkpPT1ZJiYoWXw9MCksbGVbaWVbWV1dPVl9KSxsZX1RLnRhZ0NsYXNzPXswOiJ1bml2ZXJzYWwiLDE6ImFwcGxpY2F0aW9uIiwyOiJjb250ZXh0IiwzOiJwcml2YXRlIn0sUS50YWdDbGFzc0J5TmFtZT1aKFEudGFnQ2xhc3MpLFEudGFnPXswOiJl''@;'; put 'put ''bmQiLDE6ImJvb2wiLDI6ImludCIsMzoiYml0c3RyIiw0OiJvY3RzdHIiLDU6Im51bGxfIiw2OiJvYmppZCIsNzoib2JqRGVzYyIsODoiZXh0ZXJuYWwiLDk6InJlYWwiLDEwOiJlbnVtIiwxMToiZW1iZWQiLDEyOiJ1dGY4c3RyIiwxMzoicmVsYXRpdmVPaWQiLDE2OiJzZXEiLDE3OiJzZXQi''@;'; put 'put ''LDE4OiJudW1zdHIiLDE5OiJwcmludHN0ciIsMjA6InQ2MXN0ciIsMjE6InZpZGVvc3RyIiwyMjoiaWE1c3RyIiwyMzoidXRjdGltZSIsMjQ6ImdlbnRpbWUiLDI1OiJncmFwaHN0ciIsMjY6ImlzbzY0NnN0ciIsMjc6ImdlbnN0ciIsMjg6InVuaXN0ciIsMjk6ImNoYXJzdHIiLDMwOiJibXBz''@;'; put 'put ''dHIifSxRLnRhZ0J5TmFtZT1aKFEudGFnKX0sNjgyNjooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVE7aWUuX3JldmVyc2U9ZnVuY3Rpb24obGUpe2NvbnN0IFk9e307cmV0dXJuIE9iamVjdC5rZXlzKGxlKS5mb3JFYWNoKGZ1bmN0aW9uKFcpeygwfFcpPT1XJiYoV3w9MCksWVts''@;'; put 'put ''ZVtXXV09V30pLFl9LGllLmRlcj1aKDE2MCl9LDE2NzE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDU3MTcpLGxlPVooNDU5MCksWT1aKDY2MjUpLkMsVz1aKDE5NDkpLE49WigxNjApO2Z1bmN0aW9uIGVlKGFlKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9YWUubmFtZSx0''@;'; put 'put ''aGlzLmVudGl0eT1hZSx0aGlzLnRyZWU9bmV3IHEsdGhpcy50cmVlLl9pbml0KGFlLmJvZHkpfWZ1bmN0aW9uIHEoYWUpe1cuY2FsbCh0aGlzLCJkZXIiLGFlKX1mdW5jdGlvbiBKKGFlLGZlKXtsZXQgZGU9YWUucmVhZFVJbnQ4KGZlKTtpZihhZS5pc0Vycm9yKGRlKSlyZXR1cm4gZGU7Y29u''@;'; put 'put ''c3QgdmU9Ti50YWdDbGFzc1tkZT4+Nl0sQWU9MD09KDMyJmRlKTtpZigzMT09KDMxJmRlKSl7bGV0IGtlPWRlO2ZvcihkZT0wOzEyOD09KDEyOCZrZSk7KXtpZihrZT1hZS5yZWFkVUludDgoZmUpLGFlLmlzRXJyb3Ioa2UpKXJldHVybiBrZTtkZTw8PTcsZGV8PTEyNyZrZX19ZWxzZSBkZSY9''@;'; put 'put ''MzE7cmV0dXJue2Nsczp2ZSxwcmltaXRpdmU6QWUsdGFnOmRlLHRhZ1N0cjpOLnRhZ1tkZV19fWZ1bmN0aW9uIHNlKGFlLGZlLGRlKXtsZXQgdmU9YWUucmVhZFVJbnQ4KGRlKTtpZihhZS5pc0Vycm9yKHZlKSlyZXR1cm4gdmU7aWYoIWZlJiYxMjg9PT12ZSlyZXR1cm4gbnVsbDtpZigwPT0o''@;'; put 'put ''MTI4JnZlKSlyZXR1cm4gdmU7Y29uc3QgQWU9MTI3JnZlO2lmKEFlPjQpcmV0dXJuIGFlLmVycm9yKCJsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nIik7dmU9MDtmb3IobGV0IGtlPTA7a2U8QWU7a2UrKyl7dmU8PD04O2NvbnN0IFNlPWFlLnJlYWRVSW50OChkZSk7aWYoYWUuaXNFcnJvcihT''@;'; put 'put ''ZSkpcmV0dXJuIFNlO3ZlfD1TZX1yZXR1cm4gdmV9VS5leHBvcnRzPWVlLGVlLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oYWUsZmUpe3JldHVybiBZLmlzRGVjb2RlckJ1ZmZlcihhZSl8fChhZT1uZXcgWShhZSxmZSkpLHRoaXMudHJlZS5fZGVjb2RlKGFlLGZlKX0saWUocSxXKSxxLnBy''@;'; put 'put ''b3RvdHlwZS5fcGVla1RhZz1mdW5jdGlvbihhZSxmZSxkZSl7aWYoYWUuaXNFbXB0eSgpKXJldHVybiExO2NvbnN0IHZlPWFlLnNhdmUoKSxBZT1KKGFlLCdGYWlsZWQgdG8gcGVlayB0YWc6ICInK2ZlKyciJyk7cmV0dXJuIGFlLmlzRXJyb3IoQWUpP0FlOihhZS5yZXN0b3JlKHZlKSxBZS50''@;'; put 'put ''YWc9PT1mZXx8QWUudGFnU3RyPT09ZmV8fEFlLnRhZ1N0cisib2YiPT09ZmV8fGRlKX0scS5wcm90b3R5cGUuX2RlY29kZVRhZz1mdW5jdGlvbihhZSxmZSxkZSl7Y29uc3QgdmU9SihhZSwnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgIicrZmUrJyInKTtpZihhZS5pc0Vycm9yKHZlKSlyZXR1''@;'; put 'put ''cm4gdmU7bGV0IEFlPXNlKGFlLHZlLnByaW1pdGl2ZSwnRmFpbGVkIHRvIGdldCBsZW5ndGggb2YgIicrZmUrJyInKTtpZihhZS5pc0Vycm9yKEFlKSlyZXR1cm4gQWU7aWYoIWRlJiZ2ZS50YWchPT1mZSYmdmUudGFnU3RyIT09ZmUmJnZlLnRhZ1N0cisib2YiIT09ZmUpcmV0dXJuIGFlLmVy''@;'; put 'put ''cm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiAiJytmZSsnIicpO2lmKHZlLnByaW1pdGl2ZXx8bnVsbCE9PUFlKXJldHVybiBhZS5za2lwKEFlLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrZmUrJyInKTtjb25zdCBrZT1hZS5zYXZlKCksU2U9dGhpcy5fc2tpcFVudGlsRW5kKGFlLCdG''@;'; put 'put ''YWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiAiJyt0aGlzLnRhZysnIicpO3JldHVybiBhZS5pc0Vycm9yKFNlKT9TZTooQWU9YWUub2Zmc2V0LWtlLm9mZnNldCxhZS5yZXN0b3JlKGtlKSxhZS5za2lwKEFlLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrZmUrJyIn''@;'; put 'put ''KSl9LHEucHJvdG90eXBlLl9za2lwVW50aWxFbmQ9ZnVuY3Rpb24oYWUsZmUpe2Zvcig7Oyl7Y29uc3QgZGU9SihhZSxmZSk7aWYoYWUuaXNFcnJvcihkZSkpcmV0dXJuIGRlO2NvbnN0IHZlPXNlKGFlLGRlLnByaW1pdGl2ZSxmZSk7aWYoYWUuaXNFcnJvcih2ZSkpcmV0dXJuIHZlO2xldCBB''@;'; put 'put ''ZTtpZihBZT1kZS5wcmltaXRpdmV8fG51bGwhPT12ZT9hZS5za2lwKHZlKTp0aGlzLl9za2lwVW50aWxFbmQoYWUsZmUpLGFlLmlzRXJyb3IoQWUpKXJldHVybiBBZTtpZigiZW5kIj09PWRlLnRhZ1N0cilicmVha319LHEucHJvdG90eXBlLl9kZWNvZGVMaXN0PWZ1bmN0aW9uKGFlLGZlLGRl''@;'; put 'put ''LHZlKXtjb25zdCBBZT1bXTtmb3IoOyFhZS5pc0VtcHR5KCk7KXtjb25zdCBrZT10aGlzLl9wZWVrVGFnKGFlLCJlbmQiKTtpZihhZS5pc0Vycm9yKGtlKSlyZXR1cm4ga2U7Y29uc3QgU2U9ZGUuZGVjb2RlKGFlLCJkZXIiLHZlKTtpZihhZS5pc0Vycm9yKFNlKSYma2UpYnJlYWs7QWUucHVz''@;'; put 'put ''aChTZSl9cmV0dXJuIEFlfSxxLnByb3RvdHlwZS5fZGVjb2RlU3RyPWZ1bmN0aW9uKGFlLGZlKXtpZigiYml0c3RyIj09PWZlKXtjb25zdCBkZT1hZS5yZWFkVUludDgoKTtyZXR1cm4gYWUuaXNFcnJvcihkZSk/ZGU6e3VudXNlZDpkZSxkYXRhOmFlLnJhdygpfX1pZigiYm1wc3RyIj09PWZl''@;'; put 'put ''KXtjb25zdCBkZT1hZS5yYXcoKTtpZihkZS5sZW5ndGglMj09MSlyZXR1cm4gYWUuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBibXBzdHIgbGVuZ3RoIG1pc21hdGNoIik7bGV0IHZlPSIiO2ZvcihsZXQgQWU9MDtBZTxkZS5sZW5ndGgvMjtBZSsrKXZlKz1TdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKGRlLnJlYWRVSW50MTZCRSgyKkFlKSk7cmV0dXJuIHZlfWlmKCJudW1zdHIiPT09ZmUpe2NvbnN0IGRlPWFlLnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc051bXN0cihkZSk/ZGU6YWUuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIg''@;'; put 'put ''dW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfWlmKCJvY3RzdHIiPT09ZmV8fCJvYmpEZXNjIj09PWZlKXJldHVybiBhZS5yYXcoKTtpZigicHJpbnRzdHIiPT09ZmUpe2NvbnN0IGRlPWFlLnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc1ByaW50c3RyKGRlKT9kZTphZS5l''@;'; put 'put ''cnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMiKX1yZXR1cm4vc3RyJC8udGVzdChmZSk/YWUucmF3KCkudG9TdHJpbmcoKTphZS5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrZmUrIiB1bnN1cHBvcnRlZCIpfSxx''@;'; put 'put ''LnByb3RvdHlwZS5fZGVjb2RlT2JqaWQ9ZnVuY3Rpb24oYWUsZmUsZGUpe2xldCB2ZTtjb25zdCBBZT1bXTtsZXQga2U9MCxTZT0wO2Zvcig7IWFlLmlzRW1wdHkoKTspU2U9YWUucmVhZFVJbnQ4KCksa2U8PD03LGtlfD0xMjcmU2UsMD09KDEyOCZTZSkmJihBZS5wdXNoKGtlKSxrZT0wKTtp''@;'; put 'put ''ZigxMjgmU2UmJkFlLnB1c2goa2UpLHZlPWRlP0FlOltBZVswXS80MHwwLEFlWzBdJTQwXS5jb25jYXQoQWUuc2xpY2UoMSkpLGZlKXtsZXQgRWU9ZmVbdmUuam9pbigiICIpXTt2b2lkIDA9PT1FZSYmKEVlPWZlW3ZlLmpvaW4oIi4iKV0pLHZvaWQgMCE9PUVlJiYodmU9RWUpfXJldHVybiB2''@;'; put 'put ''ZX0scS5wcm90b3R5cGUuX2RlY29kZVRpbWU9ZnVuY3Rpb24oYWUsZmUpe2NvbnN0IGRlPWFlLnJhdygpLnRvU3RyaW5nKCk7bGV0IHZlLEFlLGtlLFNlLEllLFRlO2lmKCJnZW50aW1lIj09PWZlKXZlPTB8ZGUuc2xpY2UoMCw0KSxBZT0wfGRlLnNsaWNlKDQsNiksa2U9MHxkZS5zbGljZSg2''@;'; put 'put ''LDgpLFNlPTB8ZGUuc2xpY2UoOCwxMCksSWU9MHxkZS5zbGljZSgxMCwxMiksVGU9MHxkZS5zbGljZSgxMiwxNCk7ZWxzZXtpZigidXRjdGltZSIhPT1mZSlyZXR1cm4gYWUuZXJyb3IoIkRlY29kaW5nICIrZmUrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7dmU9MHxkZS5zbGljZSgw''@;'; put 'put ''LDIpLEFlPTB8ZGUuc2xpY2UoMiw0KSxrZT0wfGRlLnNsaWNlKDQsNiksU2U9MHxkZS5zbGljZSg2LDgpLEllPTB8ZGUuc2xpY2UoOCwxMCksVGU9MHxkZS5zbGljZSgxMCwxMiksdmU9dmU8NzA/MmUzK3ZlOjE5MDArdmV9cmV0dXJuIERhdGUuVVRDKHZlLEFlLTEsa2UsU2UsSWUsVGUsMCl9''@;'; put 'put ''LHEucHJvdG90eXBlLl9kZWNvZGVOdWxsPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHEucHJvdG90eXBlLl9kZWNvZGVCb29sPWZ1bmN0aW9uKGFlKXtjb25zdCBmZT1hZS5yZWFkVUludDgoKTtyZXR1cm4gYWUuaXNFcnJvcihmZSk/ZmU6MCE9PWZlfSxxLnByb3RvdHlwZS5fZGVjb2RlSW50''@;'; put 'put ''PWZ1bmN0aW9uKGFlLGZlKXtjb25zdCBkZT1hZS5yYXcoKTtsZXQgdmU9bmV3IGxlKGRlKTtyZXR1cm4gZmUmJih2ZT1mZVt2ZS50b1N0cmluZygxMCldfHx2ZSksdmV9LHEucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oYWUsZmUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhZSYmKGFlPWFl''@;'; put 'put ''KGZlKSksYWUuX2dldERlY29kZXIoImRlciIpLnRyZWV9fSw4MzA3OihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9UTtpZS5kZXI9WigxNjcxKSxpZS5wZW09Wig5NjMxKX0sOTYzMTooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNTcxNyksbGU9WigyMzk5KS5CdWZm''@;'; put 'put ''ZXIsWT1aKDE2NzEpO2Z1bmN0aW9uIFcoTil7WS5jYWxsKHRoaXMsTiksdGhpcy5lbmM9InBlbSJ9aWUoVyxZKSxVLmV4cG9ydHM9VyxXLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oTixlZSl7Y29uc3QgcT1OLnRvU3RyaW5nKCkuc3BsaXQoL1tcclxuXSsvZyksSj1lZS5sYWJlbC50b1Vw''@;'; put 'put ''cGVyQ2FzZSgpLHNlPS9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztsZXQgYWU9LTEsZmU9LTE7Zm9yKGxldCBBZT0wO0FlPHEubGVuZ3RoO0FlKyspe2NvbnN0IGtlPXFbQWVdLm1hdGNoKHNlKTtpZihudWxsIT09a2UmJmtlWzJdPT09Sil7aWYoLTEhPT1hZSl7aWYoIkVORCIh''@;'; put 'put ''PT1rZVsxXSlicmVhaztmZT1BZTticmVha31pZigiQkVHSU4iIT09a2VbMV0pYnJlYWs7YWU9QWV9fWlmKC0xPT09YWV8fC0xPT09ZmUpdGhyb3cgbmV3IEVycm9yKCJQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAiK0opO2NvbnN0IGRlPXEuc2xpY2UoYWUrMSxmZSkuam9pbigiIik7ZGUu''@;'; put 'put ''cmVwbGFjZSgvW15hLXowLTkrLz1dKy9naSwiIik7Y29uc3QgdmU9bGUuZnJvbShkZSwiYmFzZTY0Iik7cmV0dXJuIFkucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsdmUsZWUpfX0sNjk4NDooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNTcxNyksbGU9WigyMzk5KS5CdWZm''@;'; put 'put ''ZXIsWT1aKDE5NDkpLFc9WigxNjApO2Z1bmN0aW9uIE4oSil7dGhpcy5lbmM9ImRlciIsdGhpcy5uYW1lPUoubmFtZSx0aGlzLmVudGl0eT1KLHRoaXMudHJlZT1uZXcgZWUsdGhpcy50cmVlLl9pbml0KEouYm9keSl9ZnVuY3Rpb24gZWUoSil7WS5jYWxsKHRoaXMsImRlciIsSil9ZnVuY3Rp''@;'; put 'put ''b24gcShKKXtyZXR1cm4gSjwxMD8iMCIrSjpKfVUuZXhwb3J0cz1OLE4ucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihKLHNlKXtyZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoSixzZSkuam9pbigpfSxpZShlZSxZKSxlZS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZT1mdW5jdGlvbihKLHNl''@;'; put 'put ''LGFlLGZlKXtjb25zdCBkZT1mdW5jdGlvbihrZSxTZSxJZSxUZSl7bGV0IEVlO2lmKCJzZXFvZiI9PT1rZT9rZT0ic2VxIjoic2V0b2YiPT09a2UmJihrZT0ic2V0IiksVy50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkoa2UpKUVlPVcudGFnQnlOYW1lW2tlXTtlbHNle2lmKCJudW1iZXIiIT10''@;'; put 'put ''eXBlb2Yga2V8fCgwfGtlKSE9PWtlKXJldHVybiBUZS5lcnJvcigiVW5rbm93biB0YWc6ICIra2UpO0VlPWtlfXJldHVybiBFZT49MzE/VGUuZXJyb3IoIk11bHRpLW9jdGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRlZCIpOihTZXx8KEVlfD0zMiksRWV8PVcudGFnQ2xhc3NCeU5hbWVbSWV8''@;'; put 'put ''fCJ1bml2ZXJzYWwiXTw8NixFZSl9KEosc2UsYWUsdGhpcy5yZXBvcnRlcik7aWYoZmUubGVuZ3RoPDEyOCl7Y29uc3Qga2U9bGUuYWxsb2MoMik7cmV0dXJuIGtlWzBdPWRlLGtlWzFdPWZlLmxlbmd0aCx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFtrZSxmZV0pfWxldCB2ZT0xO2Zvcihs''@;'; put 'put ''ZXQga2U9ZmUubGVuZ3RoO2tlPj0yNTY7a2U+Pj04KXZlKys7Y29uc3QgQWU9bGUuYWxsb2MoMit2ZSk7QWVbMF09ZGUsQWVbMV09MTI4fHZlO2ZvcihsZXQga2U9MSt2ZSxTZT1mZS5sZW5ndGg7U2U+MDtrZS0tLFNlPj49OClBZVtrZV09MjU1JlNlO3JldHVybiB0aGlzLl9jcmVhdGVFbmNv''@;'; put 'put ''ZGVyQnVmZmVyKFtBZSxmZV0pfSxlZS5wcm90b3R5cGUuX2VuY29kZVN0cj1mdW5jdGlvbihKLHNlKXtpZigiYml0c3RyIj09PXNlKXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswfEoudW51c2VkLEouZGF0YV0pO2lmKCJibXBzdHIiPT09c2Upe2NvbnN0IGFlPWxlLmFsbG9j''@;'; put 'put ''KDIqSi5sZW5ndGgpO2ZvcihsZXQgZmU9MDtmZTxKLmxlbmd0aDtmZSsrKWFlLndyaXRlVUludDE2QkUoSi5jaGFyQ29kZUF0KGZlKSwyKmZlKTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihhZSl9cmV0dXJuIm51bXN0ciI9PT1zZT90aGlzLl9pc051bXN0cihKKT90aGlzLl9j''@;'; put 'put ''cmVhdGVFbmNvZGVyQnVmZmVyKEopOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgb25seSBkaWdpdHMgYW5kIHNwYWNlIik6InByaW50c3RyIj09PXNlP3RoaXMuX2lzUHJpbnRzdHIoSik/dGhpcy5fY3JlYXRlRW5jb2RlckJ1''@;'; put 'put ''ZmZlcihKKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCBwYXJlbnRoZXNp''@;'; put 'put ''cywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCBkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgcXVlc3Rpb24gbWFyayIpOi9zdHIkLy50ZXN0KHNlKXx8Im9iakRlc2MiPT09c2U/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihKKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGlu''@;'; put 'put ''ZyBvZiBzdHJpbmcgdHlwZTogIitzZSsiIHVuc3VwcG9ydGVkIil9LGVlLnByb3RvdHlwZS5fZW5jb2RlT2JqaWQ9ZnVuY3Rpb24oSixzZSxhZSl7aWYoInN0cmluZyI9PXR5cGVvZiBKKXtpZighc2UpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoInN0cmluZyBvYmppZCBnaXZlbiwgYnV0''@;'; put 'put ''IG5vIHZhbHVlcyBtYXAgZm91bmQiKTtpZighc2UuaGFzT3duUHJvcGVydHkoSikpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwIik7Sj1zZVtKXS5zcGxpdCgvW1xzLl0rL2cpO2ZvcihsZXQgQWU9MDtBZTxKLmxlbmd0aDtBZSsrKUpb''@;'; put 'put ''QWVdfD0wfWVsc2UgaWYoQXJyYXkuaXNBcnJheShKKSl7Sj1KLnNsaWNlKCk7Zm9yKGxldCBBZT0wO0FlPEoubGVuZ3RoO0FlKyspSltBZV18PTB9aWYoIUFycmF5LmlzQXJyYXkoSikpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBv''@;'; put 'put ''ciBzdHJpbmcsIGdvdDogIitKU09OLnN0cmluZ2lmeShKKSk7aWYoIWFlKXtpZihKWzFdPj00MClyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CIik7Si5zcGxpY2UoMCwyLDQwKkpbMF0rSlsxXSl9bGV0IGZlPTA7Zm9yKGxldCBBZT0wO0Fl''@;'; put 'put ''PEoubGVuZ3RoO0FlKyspe2xldCBrZT1KW0FlXTtmb3IoZmUrKztrZT49MTI4O2tlPj49NylmZSsrfWNvbnN0IGRlPWxlLmFsbG9jKGZlKTtsZXQgdmU9ZGUubGVuZ3RoLTE7Zm9yKGxldCBBZT1KLmxlbmd0aC0xO0FlPj0wO0FlLS0pe2xldCBrZT1KW0FlXTtmb3IoZGVbdmUtLV09MTI3Jmtl''@;'; put 'put ''OyhrZT4+PTcpPjA7KWRlW3ZlLS1dPTEyOHwxMjcma2V9cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGUpfSxlZS5wcm90b3R5cGUuX2VuY29kZVRpbWU9ZnVuY3Rpb24oSixzZSl7bGV0IGFlO2NvbnN0IGZlPW5ldyBEYXRlKEopO3JldHVybiJnZW50aW1lIj09PXNlP2FlPVtx''@;'; put 'put ''KGZlLmdldFVUQ0Z1bGxZZWFyKCkpLHEoZmUuZ2V0VVRDTW9udGgoKSsxKSxxKGZlLmdldFVUQ0RhdGUoKSkscShmZS5nZXRVVENIb3VycygpKSxxKGZlLmdldFVUQ01pbnV0ZXMoKSkscShmZS5nZXRVVENTZWNvbmRzKCkpLCJaIl0uam9pbigiIik6InV0Y3RpbWUiPT09c2U/YWU9W3EoZmUu''@;'; put 'put ''Z2V0VVRDRnVsbFllYXIoKSUxMDApLHEoZmUuZ2V0VVRDTW9udGgoKSsxKSxxKGZlLmdldFVUQ0RhdGUoKSkscShmZS5nZXRVVENIb3VycygpKSxxKGZlLmdldFVUQ01pbnV0ZXMoKSkscShmZS5nZXRVVENTZWNvbmRzKCkpLCJaIl0uam9pbigiIik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5j''@;'; put 'put ''b2RpbmcgIitzZSsiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQiKSx0aGlzLl9lbmNvZGVTdHIoYWUsIm9jdHN0ciIpfSxlZS5wcm90b3R5cGUuX2VuY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcigiIil9LGVlLnByb3RvdHlwZS5fZW5jb2Rl''@;'; put 'put ''SW50PWZ1bmN0aW9uKEosc2Upe2lmKCJzdHJpbmciPT10eXBlb2YgSil7aWYoIXNlKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIik7aWYoIXNlLmhhc093blByb3BlcnR5KEopKXJldHVybiB0aGlzLnJlcG9y''@;'; put 'put ''dGVyLmVycm9yKCJWYWx1ZXMgbWFwIGRvZXNuJ3QgY29udGFpbjogIitKU09OLnN0cmluZ2lmeShKKSk7Sj1zZVtKXX1pZigibnVtYmVyIiE9dHlwZW9mIEomJiFsZS5pc0J1ZmZlcihKKSl7Y29uc3QgZGU9Si50b0FycmF5KCk7IUouc2lnbiYmMTI4JmRlWzBdJiZkZS51bnNoaWZ0KDApLEo9''@;'; put 'put ''bGUuZnJvbShkZSl9aWYobGUuaXNCdWZmZXIoSikpe2xldCBkZT1KLmxlbmd0aDswPT09Si5sZW5ndGgmJmRlKys7Y29uc3QgdmU9bGUuYWxsb2MoZGUpO3JldHVybiBKLmNvcHkodmUpLDA9PT1KLmxlbmd0aCYmKHZlWzBdPTApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodmUpfWlmKEo8''@;'; put 'put ''MTI4KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEopO2lmKEo8MjU2KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLEpdKTtsZXQgYWU9MTtmb3IobGV0IGRlPUo7ZGU+PTI1NjtkZT4+PTgpYWUrKztjb25zdCBmZT1uZXcgQXJyYXkoYWUpO2ZvcihsZXQgZGU9''@;'; put 'put ''ZmUubGVuZ3RoLTE7ZGU+PTA7ZGUtLSlmZVtkZV09MjU1JkosSj4+PTg7cmV0dXJuIDEyOCZmZVswXSYmZmUudW5zaGlmdCgwKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGxlLmZyb20oZmUpKX0sZWUucHJvdG90eXBlLl9lbmNvZGVCb29sPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLl9j''@;'; put 'put ''cmVhdGVFbmNvZGVyQnVmZmVyKEo/MjU1OjApfSxlZS5wcm90b3R5cGUuX3VzZT1mdW5jdGlvbihKLHNlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgSiYmKEo9SihzZSkpLEouX2dldEVuY29kZXIoImRlciIpLnRyZWV9LGVlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQ9ZnVuY3Rpb24oSixz''@;'; put 'put ''ZSxhZSl7Y29uc3QgZmU9dGhpcy5fYmFzZVN0YXRlO2xldCBkZTtpZihudWxsPT09ZmUuZGVmYXVsdClyZXR1cm4hMTtjb25zdCB2ZT1KLmpvaW4oKTtpZih2b2lkIDA9PT1mZS5kZWZhdWx0QnVmZmVyJiYoZmUuZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZShmZS5kZWZhdWx0LHNl''@;'; put 'put ''LGFlKS5qb2luKCkpLHZlLmxlbmd0aCE9PWZlLmRlZmF1bHRCdWZmZXIubGVuZ3RoKXJldHVybiExO2ZvcihkZT0wO2RlPHZlLmxlbmd0aDtkZSsrKWlmKHZlW2RlXSE9PWZlLmRlZmF1bHRCdWZmZXJbZGVdKXJldHVybiExO3JldHVybiEwfX0sNjU3OTooVSxRLFopPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O2NvbnN0IGllPVE7aWUuZGVyPVooNjk4NCksaWUucGVtPVooMjg4Myl9LDI4ODM6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDU3MTcpLGxlPVooNjk4NCk7ZnVuY3Rpb24gWShXKXtsZS5jYWxsKHRoaXMsVyksdGhpcy5lbmM9InBlbSJ9aWUoWSxsZSksVS5leHBvcnRzPVks''@;'; put 'put ''WS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKFcsTil7Y29uc3QgZWU9bGUucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsVykudG9TdHJpbmcoImJhc2U2NCIpLHE9WyItLS0tLUJFR0lOICIrTi5sYWJlbCsiLS0tLS0iXTtmb3IobGV0IEo9MDtKPGVlLmxlbmd0aDtKKz02NClxLnB1c2go''@;'; put 'put ''ZWUuc2xpY2UoSixKKzY0KSk7cmV0dXJuIHEucHVzaCgiLS0tLS1FTkQgIitOLmxhYmVsKyItLS0tLSIpLHEuam9pbigiXG4iKX19LDQ1OTA6ZnVuY3Rpb24oVSxRLFopeyFmdW5jdGlvbihpZSxsZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFkoeCxQKXtpZigheCl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''UHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBXKHgsUCl7eC5zdXBlcl89UDt2YXIgVj1mdW5jdGlvbigpe307Vi5wcm90b3R5cGU9UC5wcm90b3R5cGUseC5wcm90b3R5cGU9bmV3IFYseC5wcm90b3R5cGUuY29uc3RydWN0b3I9eH1mdW5jdGlvbiBOKHgsUCxWKXtpZihOLmlzQk4o''@;'; put 'put ''eCkpcmV0dXJuIHg7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PXgmJigibGUiIT09UCYmImJlIiE9PVB8fChWPVAsUD0xMCksdGhpcy5faW5pdCh4fHwwLFB8fDEwLFZ8fCJiZSIpKX12YXIgZWU7Im9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBpZT9pZS5leHBvcnRzPU46bGUuQk49TixOLkJOPU4sTi53b3JkU2l6ZT0yNjt0cnl7ZWU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpaKDk1MCkuQnVmZmVyfWNhdGNoKHgpe31mdW5jdGlvbiBxKHgsUCl7dmFy''@;'; put 'put ''IFY9eC5jaGFyQ29kZUF0KFApO3JldHVybiBWPj02NSYmVjw9NzA/Vi01NTpWPj05NyYmVjw9MTAyP1YtODc6Vi00OCYxNX1mdW5jdGlvbiBKKHgsUCxWKXt2YXIgVD1xKHgsVik7cmV0dXJuIFYtMT49UCYmKFR8PXEoeCxWLTEpPDw0KSxUfWZ1bmN0aW9uIHNlKHgsUCxWLFQpe2Zvcih2YXIg''@;'; put 'put ''Uz0wLEY9TWF0aC5taW4oeC5sZW5ndGgsVikseWU9UDt5ZTxGO3llKyspe3ZhciBDZT14LmNoYXJDb2RlQXQoeWUpLTQ4O1MqPVQsUys9Q2U+PTQ5P0NlLTQ5KzEwOkNlPj0xNz9DZS0xNysxMDpDZX1yZXR1cm4gU31OLmlzQk49ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBOfHxu''@;'; put 'put ''dWxsIT09eCYmIm9iamVjdCI9PXR5cGVvZiB4JiZ4LmNvbnN0cnVjdG9yLndvcmRTaXplPT09Ti53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheSh4LndvcmRzKX0sTi5tYXg9ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk+MD94OlB9LE4ubWluPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHguY21w''@;'; put 'put ''KFApPDA/eDpQfSxOLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih4LFAsVil7aWYoIm51bWJlciI9PXR5cGVvZiB4KXJldHVybiB0aGlzLl9pbml0TnVtYmVyKHgsUCxWKTtpZigib2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh4LFAsVik7ImhleCI9PT1QJiYoUD0x''@;'; put 'put ''NiksWShQPT09KDB8UCkmJlA+PTImJlA8PTM2KTt2YXIgVD0wOyItIj09PSh4PXgudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoVCsrLHRoaXMubmVnYXRpdmU9MSksVDx4Lmxlbmd0aCYmKDE2PT09UD90aGlzLl9wYXJzZUhleCh4LFQsVik6KHRoaXMuX3BhcnNlQmFzZSh4''@;'; put 'put ''LFAsVCksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpKSl9LE4ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHgsUCxWKXt4PDAmJih0aGlzLm5lZ2F0aXZlPTEseD0teCkseDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeF0sdGhpcy5s''@;'; put 'put ''ZW5ndGg9MSk6eDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihZKHg8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVu''@;'; put 'put ''Z3RoPTMpLCJsZSI9PT1WJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKX0sTi5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbih4LFAsVil7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgubGVuZ3RoKSx4Lmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5s''@;'; put 'put ''ZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbCh4Lmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBUPTA7VDx0aGlzLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEYseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0''@;'; put 'put ''aC0xLFM9MDtUPj0wO1QtPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QtMV08PDh8eFtULTJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7ZWxzZSBpZigibGUiPT09Vilmb3IoVD0wLFM9''@;'; put 'put ''MDtUPHgubGVuZ3RoO1QrPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QrMV08PDh8eFtUKzJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90''@;'; put 'put ''b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKHgsUCxWKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHgubGVuZ3RoLVApLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRj0wLHllPTA7''@;'; put 'put ''aWYoImJlIj09PVYpZm9yKFQ9eC5sZW5ndGgtMTtUPj1QO1QtPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jkc1t5ZSs9MV18PVM+Pj4yNik6Ris9ODtlbHNlIGZvcihUPSh4Lmxlbmd0aC1QKSUyPT0wP1ArMTpQO1Q8eC5s''@;'; put 'put ''ZW5ndGg7VCs9MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O3RoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih4LFAsVil7dGhpcy53b3Jkcz1bMF0s''@;'; put 'put ''dGhpcy5sZW5ndGg9MTtmb3IodmFyIFQ9MCxTPTE7Uzw9NjcxMDg4NjM7Uyo9UClUKys7VC0tLFM9Uy9QfDA7Zm9yKHZhciBGPXgubGVuZ3RoLVYseWU9RiVULENlPU1hdGgubWluKEYsRi15ZSkrVixEZT0wLFBlPVY7UGU8Q2U7UGUrPVQpRGU9c2UoeCxQZSxQZStULFApLHRoaXMuaW11bG4o''@;'; put 'put ''UyksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSk7aWYoMCE9PXllKXt2YXIgUWU9MTtmb3IoRGU9c2UoeCxQZSx4Lmxlbmd0aCxQKSxQZT0wO1BlPHllO1BlKyspUWUqPVA7dGhpcy5pbXVsbihRZSksdGhpcy53b3Jkc1swXStEZTw2''@;'; put 'put ''NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSl9dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHgpe3gud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl4LndvcmRzW1BdPXRoaXMud29y''@;'; put 'put ''ZHNbUF07eC5sZW5ndGg9dGhpcy5sZW5ndGgseC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHgucmVkPXRoaXMucmVkfSxOLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB4PW5ldyBOKG51bGwpO3JldHVybiB0aGlzLmNvcHkoeCkseH0sTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlv''@;'; put 'put ''bih4KXtmb3IoO3RoaXMubGVuZ3RoPHg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVy''@;'; put 'put ''biB0aGlzLl9ub3JtU2lnbigpfSxOLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJl''@;'; put 'put ''ZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgYWU9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sZmU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYs''@;'; put 'put ''Niw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sZGU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwx''@;'; put 'put ''MTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQy''@;'; put 'put ''NCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdmUoeCxQLFYpe1YubmVnYXRpdmU9UC5uZWdhdGl2ZV54Lm5lZ2F0aXZlO3ZhciBUPXgubGVuZ3RoK1AubGVuZ3RofDA7Vi5sZW5ndGg9VCxUPVQtMXwwO3ZhciBTPTB8eC53b3Jkc1swXSxGPTB8UC53b3Jkc1swXSx5ZT1TKkYsRGU9eWUv''@;'; put 'put ''NjcxMDg4NjR8MDtWLndvcmRzWzBdPTY3MTA4ODYzJnllO2Zvcih2YXIgUGU9MTtQZTxUO1BlKyspe2Zvcih2YXIgUWU9RGU+Pj4yNiwkZT02NzEwODg2MyZEZSxndD1NYXRoLm1pbihQZSxQLmxlbmd0aC0xKSx5dD1NYXRoLm1heCgwLFBlLXgubGVuZ3RoKzEpO3l0PD1ndDt5dCsrKVFlKz0o''@;'; put 'put ''eWU9KFM9MHx4LndvcmRzW1BlLXl0fDBdKSooRj0wfFAud29yZHNbeXRdKSskZSkvNjcxMDg4NjR8MCwkZT02NzEwODg2MyZ5ZTtWLndvcmRzW1BlXT0wfCRlLERlPTB8UWV9cmV0dXJuIDAhPT1EZT9WLndvcmRzW1BlXT0wfERlOlYubGVuZ3RoLS0sVi5zdHJpcCgpfU4ucHJvdG90eXBlLnRv''@;'; put 'put ''U3RyaW5nPWZ1bmN0aW9uKHgsUCl7dmFyIFY7aWYoUD0wfFB8fDEsMTY9PT0oeD14fHwxMCl8fCJoZXgiPT09eCl7Vj0iIjtmb3IodmFyIFQ9MCxTPTAsRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9dGhpcy53b3Jkc1tGXSxDZT0oMTY3NzcyMTUmKHllPDxUfFMpKS50b1N0cmluZygx''@;'; put 'put ''Nik7Vj0wIT0oUz15ZT4+PjI0LVQmMTY3NzcyMTUpfHxGIT09dGhpcy5sZW5ndGgtMT9hZVs2LUNlLmxlbmd0aF0rQ2UrVjpDZStWLChUKz0yKT49MjYmJihULT0yNixGLS0pfWZvcigwIT09UyYmKFY9Uy50b1N0cmluZygxNikrVik7Vi5sZW5ndGglUCE9MDspVj0iMCIrVjtyZXR1cm4gMCE9''@;'; put 'put ''PXRoaXMubmVnYXRpdmUmJihWPSItIitWKSxWfWlmKHg9PT0oMHx4KSYmeD49MiYmeDw9MzYpe3ZhciBEZT1mZVt4XSxQZT1kZVt4XTtWPSIiO3ZhciBRZT10aGlzLmNsb25lKCk7Zm9yKFFlLm5lZ2F0aXZlPTA7IVFlLmlzWmVybygpOyl7dmFyICRlPVFlLm1vZG4oUGUpLnRvU3RyaW5nKHgp''@;'; put 'put ''O1Y9KFFlPVFlLmlkaXZuKFBlKSkuaXNaZXJvKCk/JGUrVjphZVtEZS0kZS5sZW5ndGhdKyRlK1Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihWPSIwIitWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9WSghMSwiQmFzZSBzaG91bGQg''@;'; put 'put ''YmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxOLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB4PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD94Kz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/eCs9NDUw''@;'; put 'put ''MzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJlkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy14Onh9LE4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLnRvU3RyaW5nKDE2KX0sTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gWSh2b2lkIDAhPT1lZSksdGhpcy50b0FycmF5TGlrZShlZSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXks''@;'; put 'put ''eCxQKX0sTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPXRoaXMuYnl0ZUxlbmd0aCgpLFM9Vnx8TWF0aC5tYXgoMSxUKTtZKFQ8PVMsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxZKFM+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0''@;'; put 'put ''aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBGLHllLENlPSJsZSI9PT1QLERlPW5ldyB4KFMpLFBlPXRoaXMuY2xvbmUoKTtpZihDZSl7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVt5ZV09Rjtmb3IoO3llPFM7eWUrKylEZVt5ZV09''@;'; put 'put ''MH1lbHNle2Zvcih5ZT0wO3llPFMtVDt5ZSsrKURlW3llXT0wO2Zvcih5ZT0wOyFQZS5pc1plcm8oKTt5ZSsrKUY9UGUuYW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbUy15ZS0xXT1GfXJldHVybiBEZX0sTi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKHgpe3Jl''@;'; put 'put ''dHVybiAzMi1NYXRoLmNsejMyKHgpfTpmdW5jdGlvbih4KXt2YXIgUD14LFY9MDtyZXR1cm4gUD49NDA5NiYmKFYrPTEzLFA+Pj49MTMpLFA+PTY0JiYoVis9NyxQPj4+PTcpLFA+PTgmJihWKz00LFA+Pj49NCksUD49MiYmKFYrPTIsUD4+Pj0yKSxWK1B9LE4ucHJvdG90eXBlLl96ZXJvQml0''@;'; put 'put ''cz1mdW5jdGlvbih4KXtpZigwPT09eClyZXR1cm4gMjY7dmFyIFA9eCxWPTA7cmV0dXJuIDA9PSg4MTkxJlApJiYoVis9MTMsUD4+Pj0xMyksMD09KDEyNyZQKSYmKFYrPTcsUD4+Pj03KSwwPT0oMTUmUCkmJihWKz00LFA+Pj49NCksMD09KDMmUCkmJihWKz0yLFA+Pj49MiksMD09KDEmUCkm''@;'; put 'put ''JlYrKyxWfSxOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgUD10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStQfSxOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJv''@;'; put 'put ''KCkpcmV0dXJuIDA7Zm9yKHZhciB4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW1BdKTtpZih4Kz1WLDI2IT09VilicmVha31yZXR1cm4geH0sTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwo''@;'; put 'put ''dGhpcy5iaXRMZW5ndGgoKS84KX0sTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHgpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''dGVzdG4oeC0xKT90aGlzLm5vdG4oeCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxO''@;'; put 'put ''LnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxOLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFy''@;'; put 'put ''IFA9MDtQPHgubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPXRoaXMud29yZHNbUF18eC53b3Jkc1tQXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih4KX0sTi5w''@;'; put 'put ''cm90b3R5cGUub3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoeCk6eC5jbG9uZSgpLmlvcih0aGlzKX0sTi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVv''@;'; put 'put ''cih4KTp4LmNsb25lKCkuaXVvcih0aGlzKX0sTi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oeCl7dmFyIFA7UD10aGlzLmxlbmd0aD54Lmxlbmd0aD94OnRoaXM7Zm9yKHZhciBWPTA7VjxQLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT10aGlzLndvcmRzW1ZdJngud29yZHNbVl07cmV0dXJu''@;'; put 'put ''IHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdWFuZCh4KX0sTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0''@;'; put 'put ''aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh4KTp4LmNsb25lKCkuaWFuZCh0aGlzKX0sTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHgpOnguY2xvbmUoKS5pdWFuZCh0aGlzKX0sTi5wcm90b3R5''@;'; put 'put ''cGUuaXV4b3I9ZnVuY3Rpb24oeCl7dmFyIFAsVjt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oUD10aGlzLFY9eCk6KFA9eCxWPXRoaXMpO2Zvcih2YXIgVD0wO1Q8Vi5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09UC53b3Jkc1tUXV5WLndvcmRzW1RdO2lmKHRoaXMhPT1QKWZvcig7VDxQLmxlbmd0''@;'; put 'put ''aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoeCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLnhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoeCk6eC5jbG9uZSgpLml4b3IodGhpcyl9LE4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhv''@;'; put 'put ''cih4KTp4LmNsb25lKCkuaXV4b3IodGhpcyl9LE4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD0wfE1hdGguY2VpbCh4LzI2KSxWPXglMjY7dGhpcy5fZXhwYW5kKFApLFY+MCYmUC0tO2Zvcih2YXIgVD0wO1Q8UDtUKyspdGhp''@;'; put 'put ''cy53b3Jkc1tUXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tUXTtyZXR1cm4gVj4wJiYodGhpcy53b3Jkc1tUXT1+dGhpcy53b3Jkc1tUXSY2NzEwODg2Mz4+MjYtViksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oeCl9''@;'; put 'put ''LE4ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oeCxQKXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFY9eC8yNnwwLFQ9eCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFYrMSksdGhpcy53b3Jkc1tWXT1QP3RoaXMud29yZHNbVl18MTw8VDp0aGlzLndvcmRzW1ZdJn4oMTw8VCksdGhp''@;'; put 'put ''cy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgpe3ZhciBQLFYsVDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09''@;'; put 'put ''PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlKXJldHVybiB4Lm5lZ2F0aXZlPTAsUD10aGlzLmlzdWIoeCkseC5uZWdhdGl2ZT0xLFAuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0''@;'; put 'put ''aDtGKyspdGhpcy53b3Jkc1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKSsoMHxULndvcmRzW0ZdKStTKSxTPVA+Pj4yNjtmb3IoOzAhPT1TJiZGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pK1MpLFM9UD4+PjI2O2lmKHRoaXMubGVu''@;'; put 'put ''Z3RoPVYubGVuZ3RoLDAhPT1TKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPVMsdGhpcy5sZW5ndGgrKztlbHNlIGlmKFYhPT10aGlzKWZvcig7RjxWLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT1WLndvcmRzW0ZdO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCl7dmFy''@;'; put 'put ''IFA7cmV0dXJuIDAhPT14Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLFA9dGhpcy5zdWIoeCkseC5uZWdhdGl2ZV49MSxQKTowPT09eC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxQPXguc3ViKHRoaXMpLHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MSxQKTp0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh4KTp4LmNsb25lKCkuaWFkZCh0aGlzKX0sTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih4KXtpZigwIT09eC5uZWdhdGl2ZSl7eC5uZWdhdGl2ZT0wO3ZhciBQPXRoaXMuaWFkZCh4KTtyZXR1cm4geC5uZWdh''@;'; put 'put ''dGl2ZT0xLFAuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIFYsVCxTPXRoaXMuY21wKHgpO2lmKDA9PT1TKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAs''@;'; put 'put ''dGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztTPjA/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIEY9MCx5ZT0wO3llPFQubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSktKDB8VC53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2''@;'; put 'put ''MyZQO2Zvcig7MCE9PUYmJnllPFYubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7aWYoMD09PUYmJnllPFYubGVuZ3RoJiZWIT09dGhpcylmb3IoO3llPFYubGVuZ3RoO3llKyspdGhpcy53b3Jkc1t5ZV09Vi53b3Jkc1t5''@;'; put 'put ''ZV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHllKSxWIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHgpfTt2YXIgQWU9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''LFYpe3ZhciBULFMsRix5ZT14LndvcmRzLENlPVAud29yZHMsRGU9Vi53b3JkcyxQZT0wLFFlPTB8eWVbMF0sJGU9ODE5MSZRZSxndD1RZT4+PjEzLHl0PTB8eWVbMV0scHQ9ODE5MSZ5dCxtdD15dD4+PjEzLHZ0PTB8eWVbMl0sZnQ9ODE5MSZ2dCxGdD12dD4+PjEzLG9uPTB8eWVbM10sX3Q9''@;'; put 'put ''ODE5MSZvbixudD1vbj4+PjEzLHFlPTB8eWVbNF0sb3Q9ODE5MSZxZSxSdD1xZT4+PjEzLEN0PTB8eWVbNV0sY3Q9ODE5MSZDdCxOdD1DdD4+PjEzLHplPTB8eWVbNl0sWWU9ODE5MSZ6ZSxBdD16ZT4+PjEzLGp0PTB8eWVbN10sSnQ9ODE5MSZqdCxtbj1qdD4+PjEzLHBuPTB8eWVbOF0sYm49''@;'; put 'put ''ODE5MSZwbixsbj1wbj4+PjEzLE5uPTB8eWVbOV0sa249ODE5MSZObixlcj1Obj4+PjEzLHVyPTB8Q2VbMF0sWG49ODE5MSZ1cixGcj11cj4+PjEzLHhyPTB8Q2VbMV0sZW49ODE5MSZ4cixkcj14cj4+PjEzLG5yPTB8Q2VbMl0sd249ODE5MSZuciwkbj1ucj4+PjEzLFl0PTB8Q2VbM10sZ249''@;'; put 'put ''ODE5MSZZdCxLbj1ZdD4+PjEzLFZ0PTB8Q2VbNF0sc249ODE5MSZWdCxVbj1WdD4+PjEzLF9uPTB8Q2VbNV0sdG49ODE5MSZfbixHbj1fbj4+PjEzLFRyPTB8Q2VbNl0sUG49ODE5MSZUcixTcj1Ucj4+PjEzLHZuPTB8Q2VbN10sdW49ODE5MSZ2bixjbj12bj4+PjEzLFNuPTB8Q2VbOF0sR3Q9''@;'; put 'put ''ODE5MSZTbixFbj1Tbj4+PjEzLGpuPTB8Q2VbOV0scXQ9ODE5MSZqbixMbj1qbj4+PjEzO1YubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPTE5O3ZhciBKbj0oUGUrKFQ9TWF0aC5pbXVsKCRlLFhuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bCgkZSxGcikpK01h''@;'; put 'put ''dGguaW11bChndCxYbil8MCkpPDwxMyl8MDtQZT0oKEY9TWF0aC5pbXVsKGd0LEZyKSkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHB0LFhuKSxTPShTPU1hdGguaW11bChwdCxGcikpK01hdGguaW11bChtdCxYbil8MCxGPU1hdGguaW11bChtdCxG''@;'; put 'put ''cik7dmFyIG9yPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGRyKXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGRyKXwwKSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9Njcx''@;'; put 'put ''MDg4NjMsVD1NYXRoLmltdWwoZnQsWG4pLFM9KFM9TWF0aC5pbXVsKGZ0LEZyKSkrTWF0aC5pbXVsKEZ0LFhuKXwwLEY9TWF0aC5pbXVsKEZ0LEZyKSxUPVQrTWF0aC5pbXVsKHB0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsZHIpfDApK01hdGguaW11bChtdCxlbil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKG10LGRyKXwwO3ZhciBncj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsd24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSwkbil8MCkrTWF0aC5pbXVsKGd0LHduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCwkbil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYp''@;'; put 'put ''fDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKF90LFhuKSxTPShTPU1hdGguaW11bChfdCxGcikpK01hdGguaW11bChudCxYbil8MCxGPU1hdGguaW11bChudCxGciksVD1UK01hdGguaW11bChmdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGRyKXwwKStNYXRoLmltdWwoRnQsZW4pfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChGdCxkcil8MCxUPVQrTWF0aC5pbXVsKHB0LHduKXwwLFM9KFM9UytNYXRoLmltdWwocHQsJG4pfDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5pbXVsKG10LCRuKXwwO3ZhciBKcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsZ24pfDApfDApKygoODE5MSYoUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bCgkZSxLbil8MCkrTWF0aC5pbXVsKGd0LGduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxLbil8MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG90LFhuKSxTPShTPU1hdGguaW11bChvdCxGcikpK01hdGgu''@;'; put 'put ''aW11bChSdCxYbil8MCxGPU1hdGguaW11bChSdCxGciksVD1UK01hdGguaW11bChfdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGRyKXwwKStNYXRoLmltdWwobnQsZW4pfDAsRj1GK01hdGguaW11bChudCxkcil8MCxUPVQrTWF0aC5pbXVsKGZ0LHduKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''ZnQsJG4pfDApK01hdGguaW11bChGdCx3bil8MCxGPUYrTWF0aC5pbXVsKEZ0LCRuKXwwLFQ9VCtNYXRoLmltdWwocHQsZ24pfDAsUz0oUz1TK01hdGguaW11bChwdCxLbil8MCkrTWF0aC5pbXVsKG10LGduKXwwLEY9RitNYXRoLmltdWwobXQsS24pfDA7dmFyIFZyPShQZSsoVD1UK01hdGgu''@;'; put 'put ''aW11bCgkZSxzbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLFVuKXwwKStNYXRoLmltdWwoZ3Qsc24pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LFVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoY3QsWG4p''@;'; put 'put ''LFM9KFM9TWF0aC5pbXVsKGN0LEZyKSkrTWF0aC5pbXVsKE50LFhuKXwwLEY9TWF0aC5pbXVsKE50LEZyKSxUPVQrTWF0aC5pbXVsKG90LGVuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsZHIpfDApK01hdGguaW11bChSdCxlbil8MCxGPUYrTWF0aC5pbXVsKFJ0LGRyKXwwLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwoX3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChfdCwkbil8MCkrTWF0aC5pbXVsKG50LHduKXwwLEY9RitNYXRoLmltdWwobnQsJG4pfDAsVD1UK01hdGguaW11bChmdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEtuKXwwKStNYXRoLmltdWwoRnQsZ24pfDAsRj1GK01hdGguaW11bChG''@;'; put 'put ''dCxLbil8MCxUPVQrTWF0aC5pbXVsKHB0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsVW4pfDApK01hdGguaW11bChtdCxzbil8MCxGPUYrTWF0aC5pbXVsKG10LFVuKXwwO3ZhciB0aT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgk''@;'; put 'put ''ZSxHbil8MCkrTWF0aC5pbXVsKGd0LHRuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxHbil8MCkrKFM+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFllLFhuKSxTPShTPU1hdGguaW11bChZZSxGcikpK01hdGguaW11bChBdCxYbil8MCxG''@;'; put 'put ''PU1hdGguaW11bChBdCxGciksVD1UK01hdGguaW11bChjdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGRyKXwwKStNYXRoLmltdWwoTnQsZW4pfDAsRj1GK01hdGguaW11bChOdCxkcil8MCxUPVQrTWF0aC5pbXVsKG90LHduKXwwLFM9KFM9UytNYXRoLmltdWwob3QsJG4pfDApK01hdGgu''@;'; put 'put ''aW11bChSdCx3bil8MCxGPUYrTWF0aC5pbXVsKFJ0LCRuKXwwLFQ9VCtNYXRoLmltdWwoX3QsZ24pfDAsUz0oUz1TK01hdGguaW11bChfdCxLbil8MCkrTWF0aC5pbXVsKG50LGduKXwwLEY9RitNYXRoLmltdWwobnQsS24pfDAsVD1UK01hdGguaW11bChmdCxzbil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKGZ0LFVuKXwwKStNYXRoLmltdWwoRnQsc24pfDAsRj1GK01hdGguaW11bChGdCxVbil8MCxUPVQrTWF0aC5pbXVsKHB0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsR24pfDApK01hdGguaW11bChtdCx0bil8MCxGPUYrTWF0aC5pbXVsKG10LEduKXwwO3ZhciBPcj0oUGUrKFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoJGUsUG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxTcil8MCkrTWF0aC5pbXVsKGd0LFBuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxTcil8MCkrKFM+Pj4xMyl8MCkrKE9yPj4+MjYpfDAsT3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEp0''@;'; put 'put ''LFhuKSxTPShTPU1hdGguaW11bChKdCxGcikpK01hdGguaW11bChtbixYbil8MCxGPU1hdGguaW11bChtbixGciksVD1UK01hdGguaW11bChZZSxlbil8MCxTPShTPVMrTWF0aC5pbXVsKFllLGRyKXwwKStNYXRoLmltdWwoQXQsZW4pfDAsRj1GK01hdGguaW11bChBdCxkcil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKGN0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsJG4pfDApK01hdGguaW11bChOdCx3bil8MCxGPUYrTWF0aC5pbXVsKE50LCRuKXwwLFQ9VCtNYXRoLmltdWwob3QsZ24pfDAsUz0oUz1TK01hdGguaW11bChvdCxLbil8MCkrTWF0aC5pbXVsKFJ0LGduKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwoUnQsS24pfDAsVD1UK01hdGguaW11bChfdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LFVuKXwwKStNYXRoLmltdWwobnQsc24pfDAsRj1GK01hdGguaW11bChudCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsR24pfDApK01hdGguaW11bChG''@;'; put 'put ''dCx0bil8MCxGPUYrTWF0aC5pbXVsKEZ0LEduKXwwLFQ9VCtNYXRoLmltdWwocHQsUG4pfDAsUz0oUz1TK01hdGguaW11bChwdCxTcil8MCkrTWF0aC5pbXVsKG10LFBuKXwwLEY9RitNYXRoLmltdWwobXQsU3IpfDA7dmFyIGxpPShQZSsoVD1UK01hdGguaW11bCgkZSx1bil8MCl8MCkrKCg4''@;'; put 'put ''MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGNuKXwwKStNYXRoLmltdWwoZ3QsdW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGNuKXwwKSsoUz4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZy''@;'; put 'put ''KSkrTWF0aC5pbXVsKGxuLFhuKXwwLEY9TWF0aC5pbXVsKGxuLEZyKSxUPVQrTWF0aC5pbXVsKEp0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsZHIpfDApK01hdGguaW11bChtbixlbil8MCxGPUYrTWF0aC5pbXVsKG1uLGRyKXwwLFQ9VCtNYXRoLmltdWwoWWUsd24pfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChZZSwkbil8MCkrTWF0aC5pbXVsKEF0LHduKXwwLEY9RitNYXRoLmltdWwoQXQsJG4pfDAsVD1UK01hdGguaW11bChjdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEtuKXwwKStNYXRoLmltdWwoTnQsZ24pfDAsRj1GK01hdGguaW11bChOdCxLbil8MCxUPVQrTWF0aC5pbXVs''@;'; put 'put ''KG90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsVW4pfDApK01hdGguaW11bChSdCxzbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwoX3QsdG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxHbil8MCkrTWF0aC5pbXVsKG50LHRuKXwwLEY9RitNYXRoLmltdWwobnQs''@;'; put 'put ''R24pfDAsVD1UK01hdGguaW11bChmdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFNyKXwwKStNYXRoLmltdWwoRnQsUG4pfDAsRj1GK01hdGguaW11bChGdCxTcil8MCxUPVQrTWF0aC5pbXVsKHB0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsY24pfDApK01hdGguaW11bChtdCx1bil8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKG10LGNuKXwwO3ZhciBJaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsR3QpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxFbil8MCkrTWF0aC5pbXVsKGd0LEd0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxFbil8MCkrKFM+Pj4xMyl8''@;'; put 'put ''MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFhuKSxTPShTPU1hdGguaW11bChrbixGcikpK01hdGguaW11bChlcixYbil8MCxGPU1hdGguaW11bChlcixGciksVD1UK01hdGguaW11bChibixlbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGRyKXwwKStNYXRoLmlt''@;'; put 'put ''dWwobG4sZW4pfDAsRj1GK01hdGguaW11bChsbixkcil8MCxUPVQrTWF0aC5pbXVsKEp0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsJG4pfDApK01hdGguaW11bChtbix3bil8MCxGPUYrTWF0aC5pbXVsKG1uLCRuKXwwLFQ9VCtNYXRoLmltdWwoWWUsZ24pfDAsUz0oUz1TK01hdGguaW11''@;'; put 'put ''bChZZSxLbil8MCkrTWF0aC5pbXVsKEF0LGduKXwwLEY9RitNYXRoLmltdWwoQXQsS24pfDAsVD1UK01hdGguaW11bChjdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LFVuKXwwKStNYXRoLmltdWwoTnQsc24pfDAsRj1GK01hdGguaW11bChOdCxVbil8MCxUPVQrTWF0aC5pbXVsKG90LHRu''@;'; put 'put ''KXwwLFM9KFM9UytNYXRoLmltdWwob3QsR24pfDApK01hdGguaW11bChSdCx0bil8MCxGPUYrTWF0aC5pbXVsKFJ0LEduKXwwLFQ9VCtNYXRoLmltdWwoX3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxTcil8MCkrTWF0aC5pbXVsKG50LFBuKXwwLEY9RitNYXRoLmltdWwobnQsU3IpfDAs''@;'; put 'put ''VD1UK01hdGguaW11bChmdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGNuKXwwKStNYXRoLmltdWwoRnQsdW4pfDAsRj1GK01hdGguaW11bChGdCxjbil8MCxUPVQrTWF0aC5pbXVsKHB0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwocHQsRW4pfDApK01hdGguaW11bChtdCxHdCl8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKG10LEVuKXwwO3ZhciByMD0oUGUrKFQ9VCtNYXRoLmltdWwoJGUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxMbil8MCkrTWF0aC5pbXVsKGd0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxMbil8MCkrKFM+Pj4xMyl8MCkrKHIw''@;'; put 'put ''Pj4+MjYpfDAscjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGVuKSxTPShTPU1hdGguaW11bChrbixkcikpK01hdGguaW11bChlcixlbil8MCxGPU1hdGguaW11bChlcixkciksVD1UK01hdGguaW11bChibix3bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLCRuKXwwKStNYXRoLmltdWwobG4s''@;'; put 'put ''d24pfDAsRj1GK01hdGguaW11bChsbiwkbil8MCxUPVQrTWF0aC5pbXVsKEp0LGduKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsS24pfDApK01hdGguaW11bChtbixnbil8MCxGPUYrTWF0aC5pbXVsKG1uLEtuKXwwLFQ9VCtNYXRoLmltdWwoWWUsc24pfDAsUz0oUz1TK01hdGguaW11bChZZSxV''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKEF0LHNuKXwwLEY9RitNYXRoLmltdWwoQXQsVW4pfDAsVD1UK01hdGguaW11bChjdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEduKXwwKStNYXRoLmltdWwoTnQsdG4pfDAsRj1GK01hdGguaW11bChOdCxHbil8MCxUPVQrTWF0aC5pbXVsKG90LFBuKXwwLFM9''@;'; put 'put ''KFM9UytNYXRoLmltdWwob3QsU3IpfDApK01hdGguaW11bChSdCxQbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFNyKXwwLFQ9VCtNYXRoLmltdWwoX3QsdW4pfDAsUz0oUz1TK01hdGguaW11bChfdCxjbil8MCkrTWF0aC5pbXVsKG50LHVuKXwwLEY9RitNYXRoLmltdWwobnQsY24pfDAsVD1UK01h''@;'; put 'put ''dGguaW11bChmdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEVuKXwwKStNYXRoLmltdWwoRnQsR3QpfDAsRj1GK01hdGguaW11bChGdCxFbil8MDt2YXIgZTA9KFBlKyhUPVQrTWF0aC5pbXVsKHB0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwocHQsTG4pfDApK01hdGgu''@;'; put 'put ''aW11bChtdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobXQsTG4pfDApKyhTPj4+MTMpfDApKyhlMD4+PjI2KXwwLGUwJj02NzEwODg2MyxUPU1hdGguaW11bChrbix3biksUz0oUz1NYXRoLmltdWwoa24sJG4pKStNYXRoLmltdWwoZXIsd24pfDAsRj1NYXRoLmltdWwoZXIs''@;'; put 'put ''JG4pLFQ9VCtNYXRoLmltdWwoYm4sZ24pfDAsUz0oUz1TK01hdGguaW11bChibixLbil8MCkrTWF0aC5pbXVsKGxuLGduKXwwLEY9RitNYXRoLmltdWwobG4sS24pfDAsVD1UK01hdGguaW11bChKdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LFVuKXwwKStNYXRoLmltdWwobW4sc24pfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChtbixVbil8MCxUPVQrTWF0aC5pbXVsKFllLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsR24pfDApK01hdGguaW11bChBdCx0bil8MCxGPUYrTWF0aC5pbXVsKEF0LEduKXwwLFQ9VCtNYXRoLmltdWwoY3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChjdCxTcil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKE50LFBuKXwwLEY9RitNYXRoLmltdWwoTnQsU3IpfDAsVD1UK01hdGguaW11bChvdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKG90LGNuKXwwKStNYXRoLmltdWwoUnQsdW4pfDAsRj1GK01hdGguaW11bChSdCxjbil8MCxUPVQrTWF0aC5pbXVsKF90LEd0KXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoX3QsRW4pfDApK01hdGguaW11bChudCxHdCl8MCxGPUYrTWF0aC5pbXVsKG50LEVuKXwwO3ZhciBkMD0oUGUrKFQ9VCtNYXRoLmltdWwoZnQscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChmdCxMbil8MCkrTWF0aC5pbXVsKEZ0LHF0KXwwKSk8PDEzKXwwO1Bl''@;'; put 'put ''PSgoRj1GK01hdGguaW11bChGdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGduKSxTPShTPU1hdGguaW11bChrbixLbikpK01hdGguaW11bChlcixnbil8MCxGPU1hdGguaW11bChlcixLbiksVD1UK01hdGguaW11bChibixzbil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKGJuLFVuKXwwKStNYXRoLmltdWwobG4sc24pfDAsRj1GK01hdGguaW11bChsbixVbil8MCxUPVQrTWF0aC5pbXVsKEp0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsR24pfDApK01hdGguaW11bChtbix0bil8MCxGPUYrTWF0aC5pbXVsKG1uLEduKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoWWUsUG4pfDAsUz0oUz1TK01hdGguaW11bChZZSxTcil8MCkrTWF0aC5pbXVsKEF0LFBuKXwwLEY9RitNYXRoLmltdWwoQXQsU3IpfDAsVD1UK01hdGguaW11bChjdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGNuKXwwKStNYXRoLmltdWwoTnQsdW4pfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChOdCxjbil8MCxUPVQrTWF0aC5pbXVsKG90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwob3QsRW4pfDApK01hdGguaW11bChSdCxHdCl8MCxGPUYrTWF0aC5pbXVsKFJ0LEVuKXwwO3ZhciBfMD0oUGUrKFQ9VCtNYXRoLmltdWwoX3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChfdCxMbil8MCkrTWF0aC5pbXVsKG50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChudCxMbil8MCkrKFM+Pj4xMyl8MCkrKF8wPj4+MjYpfDAsXzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHNuKSxTPShTPU1hdGguaW11bChrbixVbikpK01hdGguaW11bChl''@;'; put 'put ''cixzbil8MCxGPU1hdGguaW11bChlcixVbiksVD1UK01hdGguaW11bChibix0bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEduKXwwKStNYXRoLmltdWwobG4sdG4pfDAsRj1GK01hdGguaW11bChsbixHbil8MCxUPVQrTWF0aC5pbXVsKEp0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsU3Ip''@;'; put 'put ''fDApK01hdGguaW11bChtbixQbil8MCxGPUYrTWF0aC5pbXVsKG1uLFNyKXwwLFQ9VCtNYXRoLmltdWwoWWUsdW4pfDAsUz0oUz1TK01hdGguaW11bChZZSxjbil8MCkrTWF0aC5pbXVsKEF0LHVuKXwwLEY9RitNYXRoLmltdWwoQXQsY24pfDAsVD1UK01hdGguaW11bChjdCxHdCl8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKGN0LEVuKXwwKStNYXRoLmltdWwoTnQsR3QpfDAsRj1GK01hdGguaW11bChOdCxFbil8MDt2YXIgVTA9KFBlKyhUPVQrTWF0aC5pbXVsKG90LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob3QsTG4pfDApK01hdGguaW11bChSdCxxdCl8MCkpPDwxMyl8''@;'; put 'put ''MDtQZT0oKEY9RitNYXRoLmltdWwoUnQsTG4pfDApKyhTPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2MyxUPU1hdGguaW11bChrbix0biksUz0oUz1NYXRoLmltdWwoa24sR24pKStNYXRoLmltdWwoZXIsdG4pfDAsRj1NYXRoLmltdWwoZXIsR24pLFQ9VCtNYXRoLmltdWwoYm4s''@;'; put 'put ''UG4pfDAsUz0oUz1TK01hdGguaW11bChibixTcil8MCkrTWF0aC5pbXVsKGxuLFBuKXwwLEY9RitNYXRoLmltdWwobG4sU3IpfDAsVD1UK01hdGguaW11bChKdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGNuKXwwKStNYXRoLmltdWwobW4sdW4pfDAsRj1GK01hdGguaW11bChtbixjbil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKFllLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoWWUsRW4pfDApK01hdGguaW11bChBdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEF0LEVuKXwwO3ZhciBCaT0oUGUrKFQ9VCtNYXRoLmltdWwoY3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChjdCxMbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKE50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChOdCxMbil8MCkrKFM+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFBuKSxTPShTPU1hdGguaW11bChrbixTcikpK01hdGguaW11bChlcixQbil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChlcixTciksVD1UK01hdGguaW11bChibix1bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGNuKXwwKStNYXRoLmltdWwobG4sdW4pfDAsRj1GK01hdGguaW11bChsbixjbil8MCxUPVQrTWF0aC5pbXVsKEp0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoSnQsRW4pfDApK01hdGguaW11bCht''@;'; put 'put ''bixHdCl8MCxGPUYrTWF0aC5pbXVsKG1uLEVuKXwwO3ZhciBqMD0oUGUrKFQ9VCtNYXRoLmltdWwoWWUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChZZSxMbil8MCkrTWF0aC5pbXVsKEF0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChBdCxMbil8MCkrKFM+''@;'; put 'put ''Pj4xMyl8MCkrKGowPj4+MjYpfDAsajAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHVuKSxTPShTPU1hdGguaW11bChrbixjbikpK01hdGguaW11bChlcix1bil8MCxGPU1hdGguaW11bChlcixjbiksVD1UK01hdGguaW11bChibixHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEVuKXwwKStN''@;'; put 'put ''YXRoLmltdWwobG4sR3QpfDAsRj1GK01hdGguaW11bChsbixFbil8MDt2YXIgQW89KFBlKyhUPVQrTWF0aC5pbXVsKEp0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoSnQsTG4pfDApK01hdGguaW11bChtbixxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobW4s''@;'; put 'put ''TG4pfDApKyhTPj4+MTMpfDApKyhBbz4+PjI2KXwwLEFvJj02NzEwODg2MyxUPU1hdGguaW11bChrbixHdCksUz0oUz1NYXRoLmltdWwoa24sRW4pKStNYXRoLmltdWwoZXIsR3QpfDAsRj1NYXRoLmltdWwoZXIsRW4pO3ZhciBLbz0oUGUrKFQ9VCtNYXRoLmltdWwoYm4scXQpfDApfDApKygo''@;'; put 'put ''ODE5MSYoUz0oUz1TK01hdGguaW11bChibixMbil8MCkrTWF0aC5pbXVsKGxuLHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChsbixMbil8MCkrKFM+Pj4xMyl8MCkrKEtvPj4+MjYpfDAsS28mPTY3MTA4ODYzO3ZhciBmYT0oUGUrKFQ9TWF0aC5pbXVsKGtuLHF0KSl8MCkrKCg4''@;'; put 'put ''MTkxJihTPShTPU1hdGguaW11bChrbixMbikpK01hdGguaW11bChlcixxdCl8MCkpPDwxMyl8MDtyZXR1cm4gUGU9KChGPU1hdGguaW11bChlcixMbikpKyhTPj4+MTMpfDApKyhmYT4+PjI2KXwwLGZhJj02NzEwODg2MyxEZVswXT1KbixEZVsxXT1vcixEZVsyXT1ncixEZVszXT1KcixEZVs0''@;'; put 'put ''XT1WcixEZVs1XT10aSxEZVs2XT1PcixEZVs3XT1saSxEZVs4XT1JaSxEZVs5XT1yMCxEZVsxMF09ZTAsRGVbMTFdPWQwLERlWzEyXT1fMCxEZVsxM109VTAsRGVbMTRdPUJpLERlWzE1XT1qMCxEZVsxNl09QW8sRGVbMTddPUtvLERlWzE4XT1mYSwwIT09UGUmJihEZVsxOV09UGUsVi5sZW5n''@;'; put 'put ''dGgrKyksVn07ZnVuY3Rpb24ga2UoeCxQLFYpe3JldHVybihuZXcgU2UpLm11bHAoeCxQLFYpfWZ1bmN0aW9uIFNlKHgsUCl7dGhpcy54PXgsdGhpcy55PVB9TWF0aC5pbXVsfHwoQWU9dmUpLE4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHgsUCl7dmFyIFQ9dGhpcy5sZW5ndGgreC5sZW5n''@;'; put 'put ''dGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09eC5sZW5ndGg/QWUodGhpcyx4LFApOlQ8NjM/dmUodGhpcyx4LFApOlQ8MTAyND9mdW5jdGlvbihTLEYseWUpe3llLm5lZ2F0aXZlPUYubmVnYXRpdmVeUy5uZWdhdGl2ZSx5ZS5sZW5ndGg9Uy5sZW5ndGgrRi5sZW5ndGg7Zm9yKHZh''@;'; put 'put ''ciBDZT0wLERlPTAsUGU9MDtQZTx5ZS5sZW5ndGgtMTtQZSsrKXt2YXIgUWU9RGU7RGU9MDtmb3IodmFyICRlPTY3MTA4ODYzJkNlLGd0PU1hdGgubWluKFBlLEYubGVuZ3RoLTEpLHl0PU1hdGgubWF4KDAsUGUtUy5sZW5ndGgrMSk7eXQ8PWd0O3l0Kyspe3ZhciBtdD0oMHxTLndvcmRzW1Bl''@;'; put 'put ''LXl0XSkqKDB8Ri53b3Jkc1t5dF0pLHZ0PTY3MTA4ODYzJm10OyRlPTY3MTA4ODYzJih2dD12dCskZXwwKSxEZSs9KFFlPShRZT1RZSsobXQvNjcxMDg4NjR8MCl8MCkrKHZ0Pj4+MjYpfDApPj4+MjYsUWUmPTY3MTA4ODYzfXllLndvcmRzW1BlXT0kZSxDZT1RZSxRZT1EZX1yZXR1cm4gMCE9''@;'; put 'put ''PUNlP3llLndvcmRzW1BlXT1DZTp5ZS5sZW5ndGgtLSx5ZS5zdHJpcCgpfSh0aGlzLHgsUCk6a2UodGhpcyx4LFApfSxTZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9Ti5wcm90b3R5cGUuX2NvdW50Qml0cyh4KS0xLFQ9MDtUPHg7VCsr''@;'; put 'put ''KVBbVF09dGhpcy5yZXZCaW4oVCxWLHgpO3JldHVybiBQfSxTZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHgsUCxWKXtpZigwPT09eHx8eD09PVYtMSlyZXR1cm4geDtmb3IodmFyIFQ9MCxTPTA7UzxQO1MrKylUfD0oMSZ4KTw8UC1TLTEseD4+PTE7cmV0dXJuIFR9LFNlLnByb3RvdHlw''@;'; put 'put ''ZS5wZXJtdXRlPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXtmb3IodmFyIHllPTA7eWU8Rjt5ZSsrKVRbeWVdPVBbeFt5ZV1dLFNbeWVdPVZbeFt5ZV1dfSxTZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXt0aGlzLnBlcm11dGUoRix4LFAsVixULFMpO2Zvcih2YXIg''@;'; put 'put ''eWU9MTt5ZTxTO3llPDw9MSlmb3IodmFyIENlPXllPDwxLERlPU1hdGguY29zKDIqTWF0aC5QSS9DZSksUGU9TWF0aC5zaW4oMipNYXRoLlBJL0NlKSxRZT0wO1FlPFM7UWUrPUNlKWZvcih2YXIgJGU9RGUsZ3Q9UGUseXQ9MDt5dDx5ZTt5dCsrKXt2YXIgcHQ9VltRZSt5dF0sbXQ9VFtRZSt5''@;'; put 'put ''dF0sdnQ9VltRZSt5dCt5ZV0sZnQ9VFtRZSt5dCt5ZV0sRnQ9JGUqdnQtZ3QqZnQ7ZnQ9JGUqZnQrZ3QqdnQsVltRZSt5dF09cHQrKHZ0PUZ0KSxUW1FlK3l0XT1tdCtmdCxWW1FlK3l0K3llXT1wdC12dCxUW1FlK3l0K3llXT1tdC1mdCx5dCE9PUNlJiYoRnQ9RGUqJGUtUGUqZ3QsZ3Q9RGUq''@;'; put 'put ''Z3QrUGUqJGUsJGU9RnQpfX0sU2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHgsUCl7dmFyIFY9MXxNYXRoLm1heChQLHgpLFQ9MSZWLFM9MDtmb3IoVj1WLzJ8MDtWO1Y+Pj49MSlTKys7cmV0dXJuIDE8PFMrMStUfSxTZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKHgs''@;'; put 'put ''UCxWKXtpZighKFY8PTEpKWZvcih2YXIgVD0wO1Q8Vi8yO1QrKyl7dmFyIFM9eFtUXTt4W1RdPXhbVi1ULTFdLHhbVi1ULTFdPVMsUz1QW1RdLFBbVF09LVBbVi1ULTFdLFBbVi1ULTFdPS1TfX0sU2UucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj0wLFQ9''@;'; put 'put ''MDtUPFAvMjtUKyspe3ZhciBTPTgxOTIqTWF0aC5yb3VuZCh4WzIqVCsxXS9QKStNYXRoLnJvdW5kKHhbMipUXS9QKStWO3hbVF09NjcxMDg4NjMmUyxWPVM8NjcxMDg4NjQ/MDpTLzY3MTA4ODY0fDB9cmV0dXJuIHh9LFNlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHgsUCxWLFQp''@;'; put 'put ''e2Zvcih2YXIgUz0wLEY9MDtGPFA7RisrKVZbMipGXT04MTkxJihTKz0wfHhbRl0pLFZbMipGKzFdPTgxOTEmKFM+Pj49MTMpLFM+Pj49MTM7Zm9yKEY9MipQO0Y8VDsrK0YpVltGXT0wO1koMD09PVMpLFkoMD09KC04MTkyJlMpKX0sU2UucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oeCl7Zm9y''@;'; put 'put ''KHZhciBQPW5ldyBBcnJheSh4KSxWPTA7Vjx4O1YrKylQW1ZdPTA7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVD0yKnRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsUC5sZW5ndGgpLFM9dGhpcy5tYWtlUkJUKFQpLEY9dGhpcy5zdHViKFQpLHllPW5l''@;'; put 'put ''dyBBcnJheShUKSxDZT1uZXcgQXJyYXkoVCksRGU9bmV3IEFycmF5KFQpLFBlPW5ldyBBcnJheShUKSxRZT1uZXcgQXJyYXkoVCksJGU9bmV3IEFycmF5KFQpLGd0PVYud29yZHM7Z3QubGVuZ3RoPVQsdGhpcy5jb252ZXJ0MTNiKHgud29yZHMseC5sZW5ndGgseWUsVCksdGhpcy5jb252ZXJ0''@;'; put 'put ''MTNiKFAud29yZHMsUC5sZW5ndGgsUGUsVCksdGhpcy50cmFuc2Zvcm0oeWUsRixDZSxEZSxULFMpLHRoaXMudHJhbnNmb3JtKFBlLEYsUWUsJGUsVCxTKTtmb3IodmFyIHl0PTA7eXQ8VDt5dCsrKXt2YXIgcHQ9Q2VbeXRdKlFlW3l0XS1EZVt5dF0qJGVbeXRdO0RlW3l0XT1DZVt5dF0qJGVb''@;'; put 'put ''eXRdK0RlW3l0XSpRZVt5dF0sQ2VbeXRdPXB0fXJldHVybiB0aGlzLmNvbmp1Z2F0ZShDZSxEZSxUKSx0aGlzLnRyYW5zZm9ybShDZSxEZSxndCxGLFQsUyksdGhpcy5jb25qdWdhdGUoZ3QsRixUKSx0aGlzLm5vcm1hbGl6ZTEzYihndCxUKSxWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5uZWdh''@;'; put 'put ''dGl2ZSxWLmxlbmd0aD14Lmxlbmd0aCtQLmxlbmd0aCxWLnN0cmlwKCl9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLHRoaXMubXVsVG8oeCxQKX0sTi5wcm90b3R5cGUu''@;'; put 'put ''bXVsZj1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLGtlKHRoaXMseCxQKX0sTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHgsdGhpcyl9LE4ucHJv''@;'; put 'put ''dG90eXBlLmltdWxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpO2Zvcih2YXIgUD0wLFY9MDtWPHRoaXMubGVuZ3RoO1YrKyl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkqeCxTPSg2NzEwODg2MyZUKSsoNjcxMDg4NjMmUCk7UD4+PTI2LFArPVQvNjcx''@;'; put 'put ''MDg4NjR8MCxQKz1TPj4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZTfXJldHVybiAwIT09UCYmKHRoaXMud29yZHNbVl09UCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeCl9LE4ucHJvdG90eXBl''@;'; put 'put ''LnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgpe3ZhciBQPWZ1bmN0aW9uKEYpe2Zvcih2YXIgeWU9bmV3IEFycmF5''@;'; put 'put ''KEYuYml0TGVuZ3RoKCkpLENlPTA7Q2U8eWUubGVuZ3RoO0NlKyspe3ZhciBQZT1DZSUyNjt5ZVtDZV09KEYud29yZHNbQ2UvMjZ8MF0mMTw8UGUpPj4+UGV9cmV0dXJuIHllfSh4KTtpZigwPT09UC5sZW5ndGgpcmV0dXJuIG5ldyBOKDEpO2Zvcih2YXIgVj10aGlzLFQ9MDtUPFAubGVuZ3Ro''@;'; put 'put ''JiYwPT09UFtUXTtUKyssVj1WLnNxcigpKTtpZigrK1Q8UC5sZW5ndGgpZm9yKHZhciBTPVYuc3FyKCk7VDxQLmxlbmd0aDtUKyssUz1TLnNxcigpKTAhPT1QW1RdJiYoVj1WLm11bChTKSk7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgeCYmeD49MCk7dmFyIFAsVj14JTI2LFQ9KHgtVikvMjYsUz02NzEwODg2Mz4+PjI2LVY8PDI2LVY7aWYoMCE9PVYpe3ZhciBGPTA7Zm9yKFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIHllPXRoaXMud29yZHNbUF0mUzt0aGlzLndvcmRzW1BdPSgwfHRoaXMud29yZHNbUF0pLXllPDxW''@;'; put 'put ''fEYsRj15ZT4+PjI2LVZ9RiYmKHRoaXMud29yZHNbUF09Rix0aGlzLmxlbmd0aCsrKX1pZigwIT09VCl7Zm9yKFA9dGhpcy5sZW5ndGgtMTtQPj0wO1AtLSl0aGlzLndvcmRzW1ArVF09dGhpcy53b3Jkc1tQXTtmb3IoUD0wO1A8VDtQKyspdGhpcy53b3Jkc1tQXT0wO3RoaXMubGVuZ3RoKz1U''@;'; put 'put ''fXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih4KX0sTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVDtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCks''@;'; put 'put ''VD1QPyhQLVAlMjYpLzI2OjA7dmFyIFM9eCUyNixGPU1hdGgubWluKCh4LVMpLzI2LHRoaXMubGVuZ3RoKSx5ZT02NzEwODg2M142NzEwODg2Mz4+PlM8PFMsQ2U9VjtpZihULT1GLFQ9TWF0aC5tYXgoMCxUKSxDZSl7Zm9yKHZhciBEZT0wO0RlPEY7RGUrKylDZS53b3Jkc1tEZV09dGhpcy53''@;'; put 'put ''b3Jkc1tEZV07Q2UubGVuZ3RoPUZ9aWYoMCE9PUYpaWYodGhpcy5sZW5ndGg+Rilmb3IodGhpcy5sZW5ndGgtPUYsRGU9MDtEZTx0aGlzLmxlbmd0aDtEZSsrKXRoaXMud29yZHNbRGVdPXRoaXMud29yZHNbRGUrRl07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgUGU9''@;'; put 'put ''MDtmb3IoRGU9dGhpcy5sZW5ndGgtMTtEZT49MCYmKDAhPT1QZXx8RGU+PVQpO0RlLS0pe3ZhciBRZT0wfHRoaXMud29yZHNbRGVdO3RoaXMud29yZHNbRGVdPVBlPDwyNi1TfFFlPj4+UyxQZT1RZSZ5ZX1yZXR1cm4gQ2UmJjAhPT1QZSYmKENlLndvcmRzW0NlLmxlbmd0aCsrXT1QZSksMD09''@;'; put 'put ''PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih4LFAsVil9LE4ucHJvdG90eXBlLnNobG49ZnVuY3Rp''@;'; put 'put ''b24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih4KX0sTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oeCl9LE4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih4KX0sTi5wcm90b3R5''@;'; put 'put ''cGUudXNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oeCl9LE4ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Vnx8ISh0aGlzLndv''@;'; put 'put ''cmRzW1ZdJjE8PFApKX0sTi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIp''@;'; put 'put ''LHRoaXMubGVuZ3RoPD1WP3RoaXM6KDAhPT1QJiZWKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oVix0aGlzLmxlbmd0aCksMCE9PVAmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PlA8PFApLHRoaXMuc3RyaXAoKSl9LE4ucHJvdG90eXBlLm1hc2tuPWZ1''@;'; put 'put ''bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHgpfSxOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwP3RoaXMuaXN1Ym4oLXgpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0''@;'; put 'put ''aCYmKDB8dGhpcy53b3Jkc1swXSk8eD8odGhpcy53b3Jkc1swXT14LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHgpfSxOLnByb3RvdHlwZS5faWFk''@;'; put 'put ''ZG49ZnVuY3Rpb24oeCl7dGhpcy53b3Jkc1swXSs9eDtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW1BdPj02NzEwODg2NDtQKyspdGhpcy53b3Jkc1tQXS09NjcxMDg4NjQsUD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tQKzFdPTE6dGhpcy53b3Jkc1tQKzFdKys7''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFArMSksdGhpc30sTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oeCl7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwKXJldHVybiB0aGlzLmlhZGRuKC14KTtpZigwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09eCwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZv''@;'; put 'put ''cih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF08MDtQKyspdGhpcy53b3Jkc1tQXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tQKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbih4''@;'; put 'put ''KX0sTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKHgpfSxOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgp''@;'; put 'put ''LmlhYnMoKX0sTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTO3RoaXMuX2V4cGFuZCh4Lmxlbmd0aCtWKTt2YXIgeWU9MDtmb3IoVD0wO1Q8eC5sZW5ndGg7VCsrKXtTPSgwfHRoaXMud29yZHNbVCtWXSkreWU7dmFyIENlPSgwfHgud29yZHNbVF0pKlA7''@;'; put 'put ''eWU9KChTLT02NzEwODg2MyZDZSk+PjI2KS0oQ2UvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlN9Zm9yKDtUPHRoaXMubGVuZ3RoLVY7VCsrKXllPShTPSgwfHRoaXMud29yZHNbVCtWXSkreWUpPj4yNix0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmUztpZigwPT09eWUp''@;'; put 'put ''cmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoWSgtMT09PXllKSx5ZT0wLFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl5ZT0oUz0tKDB8dGhpcy53b3Jkc1tUXSkreWUpPj4yNix0aGlzLndvcmRzW1RdPTY3MTA4ODYzJlM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLl93b3JkRGl2PWZ1bmN0aW9uKHgsUCl7dmFyIFYsVD10aGlzLmNsb25lKCksUz14LEY9MHxTLndvcmRzW1MubGVuZ3RoLTFdOzAhPShWPTI2LXRoaXMuX2NvdW50Qml0cyhGKSkmJihTPVMudXNobG4oViksVC5pdXNobG4oViksRj0wfFMud29yZHNbUy5sZW5ndGgtMV0pO3ZhciB5ZSxD''@;'; put 'put ''ZT1ULmxlbmd0aC1TLmxlbmd0aDtpZigibW9kIiE9PVApeyh5ZT1uZXcgTihudWxsKSkubGVuZ3RoPUNlKzEseWUud29yZHM9bmV3IEFycmF5KHllLmxlbmd0aCk7Zm9yKHZhciBEZT0wO0RlPHllLmxlbmd0aDtEZSsrKXllLndvcmRzW0RlXT0wfXZhciBQZT1ULmNsb25lKCkuX2lzaGxuc3Vi''@;'; put 'put ''bXVsKFMsMSxDZSk7MD09PVBlLm5lZ2F0aXZlJiYoVD1QZSx5ZSYmKHllLndvcmRzW0NlXT0xKSk7Zm9yKHZhciBRZT1DZS0xO1FlPj0wO1FlLS0pe3ZhciAkZT02NzEwODg2NCooMHxULndvcmRzW1MubGVuZ3RoK1FlXSkrKDB8VC53b3Jkc1tTLmxlbmd0aCtRZS0xXSk7Zm9yKCRlPU1hdGgu''@;'; put 'put ''bWluKCRlL0Z8MCw2NzEwODg2MyksVC5faXNobG5zdWJtdWwoUywkZSxRZSk7MCE9PVQubmVnYXRpdmU7KSRlLS0sVC5uZWdhdGl2ZT0wLFQuX2lzaGxuc3VibXVsKFMsMSxRZSksVC5pc1plcm8oKXx8KFQubmVnYXRpdmVePTEpO3llJiYoeWUud29yZHNbUWVdPSRlKX1yZXR1cm4geWUmJnll''@;'; put 'put ''LnN0cmlwKCksVC5zdHJpcCgpLCJkaXYiIT09UCYmMCE9PVYmJlQuaXVzaHJuKFYpLHtkaXY6eWV8fG51bGwsbW9kOlR9fSxOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKCF4LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IE4oMCksbW9kOm5ldyBO''@;'; put 'put ''KDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmU/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeCxQKSwibW9kIiE9PVAmJihUPUYuZGl2Lm5lZygpKSwiZGl2IiE9PVAmJihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlhZGQoeCkpLHtkaXY6VCxtb2Q6U30pOjA9''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZT8oRj10aGlzLmRpdm1vZCh4Lm5lZygpLFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLHtkaXY6VCxtb2Q6Ri5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZ4Lm5lZ2F0aXZlKT8oRj10aGlzLm5lZygpLmRpdm1vZCh4Lm5lZygpLFAp''@;'; put 'put ''LCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaXN1Yih4KSkse2RpdjpGLmRpdixtb2Q6U30pOngubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh4KTwwP3tkaXY6bmV3IE4oMCksbW9kOnRoaXN9OjE9PT14Lmxlbmd0aD8iZGl2Ij09PVA/e2Rpdjp0''@;'; put 'put ''aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09UD97ZGl2Om51bGwsbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHgsUCk7''@;'; put 'put ''dmFyIFQsUyxGfSxOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsImRpdiIsITEpLmRpdn0sTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCExKS5tb2R9LE4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24o''@;'; put 'put ''eCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITApLm1vZH0sTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5kaXZtb2QoeCk7aWYoUC5tb2QuaXNaZXJvKCkpcmV0dXJuIFAuZGl2O3ZhciBWPTAhPT1QLmRpdi5uZWdhdGl2ZT9QLm1vZC5pc3ViKHgpOlAu''@;'; put 'put ''bW9kLFQ9eC51c2hybigxKSxTPXguYW5kbG4oMSksRj1WLmNtcChUKTtyZXR1cm4gRjwwfHwxPT09UyYmMD09PUY/UC5kaXY6MCE9PVAuZGl2Lm5lZ2F0aXZlP1AuZGl2LmlzdWJuKDEpOlAuZGl2LmlhZGRuKDEpfSxOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMp''@;'; put 'put ''O2Zvcih2YXIgUD02NzEwODg2NCV4LFY9MCxUPXRoaXMubGVuZ3RoLTE7VD49MDtULS0pVj0oUCpWKygwfHRoaXMud29yZHNbVF0pKSV4O3JldHVybiBWfSxOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49''@;'; put 'put ''MDtWLS0pe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKzY3MTA4ODY0KlA7dGhpcy53b3Jkc1tWXT1UL3h8MCxQPVQleH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oeCl9LE4ucHJvdG90eXBlLmVnY2Q9''@;'; put 'put ''ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSksWSgheC5pc1plcm8oKSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQPTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25lKCk7Zm9yKHZhciBUPW5ldyBOKDEpLFM9bmV3IE4oMCksRj1uZXcgTigwKSx5ZT1uZXcgTigxKSxDZT0wO1Au''@;'; put 'put ''aXNFdmVuKCkmJlYuaXNFdmVuKCk7KVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpLCsrQ2U7Zm9yKHZhciBEZT1WLmNsb25lKCksUGU9UC5jbG9uZSgpOyFQLmlzWmVybygpOyl7Zm9yKHZhciBRZT0wLCRlPTE7MD09KFAud29yZHNbMF0mJGUpJiZRZTwyNjsrK1FlLCRlPDw9MSk7aWYoUWU+MClm''@;'; put 'put ''b3IoUC5pdXNocm4oUWUpO1FlLS0gPjA7KShULmlzT2RkKCl8fFMuaXNPZGQoKSkmJihULmlhZGQoRGUpLFMuaXN1YihQZSkpLFQuaXVzaHJuKDEpLFMuaXVzaHJuKDEpO2Zvcih2YXIgZ3Q9MCx5dD0xOzA9PShWLndvcmRzWzBdJnl0KSYmZ3Q8MjY7KytndCx5dDw8PTEpO2lmKGd0PjApZm9y''@;'; put 'put ''KFYuaXVzaHJuKGd0KTtndC0tID4wOykoRi5pc09kZCgpfHx5ZS5pc09kZCgpKSYmKEYuaWFkZChEZSkseWUuaXN1YihQZSkpLEYuaXVzaHJuKDEpLHllLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFQuaXN1YihGKSxTLmlzdWIoeWUpKTooVi5pc3ViKFApLEYuaXN1YihUKSx5''@;'; put 'put ''ZS5pc3ViKFMpKX1yZXR1cm57YTpGLGI6eWUsZ2NkOlYuaXVzaGxuKENlKX19LE4ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xv''@;'; put 'put ''bmUoKTtmb3IodmFyIFQsUz1uZXcgTigxKSxGPW5ldyBOKDApLHllPVYuY2xvbmUoKTtQLmNtcG4oMSk+MCYmVi5jbXBuKDEpPjA7KXtmb3IodmFyIENlPTAsRGU9MTswPT0oUC53b3Jkc1swXSZEZSkmJkNlPDI2OysrQ2UsRGU8PD0xKTtpZihDZT4wKWZvcihQLml1c2hybihDZSk7Q2UtLSA+''@;'; put 'put ''MDspUy5pc09kZCgpJiZTLmlhZGQoeWUpLFMuaXVzaHJuKDEpO2Zvcih2YXIgUGU9MCxRZT0xOzA9PShWLndvcmRzWzBdJlFlKSYmUGU8MjY7KytQZSxRZTw8PTEpO2lmKFBlPjApZm9yKFYuaXVzaHJuKFBlKTtQZS0tID4wOylGLmlzT2RkKCkmJkYuaWFkZCh5ZSksRi5pdXNocm4oMSk7UC5j''@;'; put 'put ''bXAoVik+PTA/KFAuaXN1YihWKSxTLmlzdWIoRikpOihWLmlzdWIoUCksRi5pc3ViKFMpKX1yZXR1cm4oVD0wPT09UC5jbXBuKDEpP1M6RikuY21wbigwKTwwJiZULmlhZGQoeCksVH0sTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHguYWJzKCk7''@;'; put 'put ''aWYoeC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgUD10aGlzLmNsb25lKCksVj14LmNsb25lKCk7UC5uZWdhdGl2ZT0wLFYubmVnYXRpdmU9MDtmb3IodmFyIFQ9MDtQLmlzRXZlbigpJiZWLmlzRXZlbigpO1QrKylQLml1c2hybigxKSxWLml1c2hybigxKTtmb3IoOzspe2Zvcig7''@;'; put 'put ''UC5pc0V2ZW4oKTspUC5pdXNocm4oMSk7Zm9yKDtWLmlzRXZlbigpOylWLml1c2hybigxKTt2YXIgUz1QLmNtcChWKTtpZihTPDApe3ZhciBGPVA7UD1WLFY9Rn1lbHNlIGlmKDA9PT1TfHwwPT09Vi5jbXBuKDEpKWJyZWFrO1AuaXN1YihWKX1yZXR1cm4gVi5pdXNobG4oVCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZWdjZCh4KS5hLnVtb2QoeCl9LE4ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1sw''@;'; put 'put ''XSl9LE4ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLndvcmRzWzBdJnh9LE4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KTt2YXIgUD14JTI2LFY9KHgtUCkvMjYsVD0xPDxQO2lmKHRoaXMubGVuZ3RoPD1WKXJldHVybiB0''@;'; put 'put ''aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdfD1ULHRoaXM7Zm9yKHZhciBTPVQsRj1WOzAhPT1TJiZGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIHllPTB8dGhpcy53b3Jkc1tGXTtTPSh5ZSs9Uyk+Pj4yNix0aGlzLndvcmRzW0ZdPXllJj02NzEwODg2M31yZXR1cm4gMCE9PVMmJih0aGlz''@;'; put 'put ''LndvcmRzW0ZdPVMsdGhpcy5sZW5ndGgrKyksdGhpc30sTi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LE4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oeCl7dmFyIFAsVj14PDA7aWYoMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmUmJiFWKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZWKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKVA9MTtlbHNle1YmJih4PS14KSxZKHg8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBUPTB8dGhpcy53b3Jkc1swXTtQPVQ9PT14PzA6''@;'; put 'put ''VDx4Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHgpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIDE7dmFy''@;'; put 'put ''IFA9dGhpcy51Y21wKHgpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oeCl7aWYodGhpcy5sZW5ndGg+eC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8eC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBQPTAsVj10aGlzLmxl''@;'; put 'put ''bmd0aC0xO1Y+PTA7Vi0tKXt2YXIgVD0wfHRoaXMud29yZHNbVl0sUz0wfHgud29yZHNbVl07aWYoVCE9PVMpe1Q8Uz9QPS0xOlQ+UyYmKFA9MSk7YnJlYWt9fXJldHVybiBQfSxOLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBl''@;'; put 'put ''Lmd0PWZ1bmN0aW9uKHgpe3JldHVybiAxPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KT49MH0sTi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KT49MH0sTi5wcm90b3R5cGUubHRuPWZ1bmN0''@;'; put 'put ''aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5sdD1mdW5jdGlvbih4KXtyZXR1cm4tMT09PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk8PTB9LE4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih4KXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jbXAoeCk8PTB9LE4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PT10aGlzLmNtcCh4KX0sTi5yZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBuZSh4KX0sTi5w''@;'; put 'put ''cm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksWSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VS''@;'; put 'put ''ZWQoeCl9LE4ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxOLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVu''@;'; put 'put ''Y3Rpb24oeCl7cmV0dXJuIHRoaXMucmVkPXgsdGhpc30sTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLnJlZEFkZD1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElTdWI9''@;'; put 'put ''ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5tdWwodGhp''@;'; put 'put ''cyx4KX0sTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQuaW11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTcXI9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3Fy''@;'; put 'put ''IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE4ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0''@;'; put 'put ''aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQu''@;'; put 'put ''aW52bSh0aGlzKX0sTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE4ucHJvdG90eXBlLnJlZFBvdz1mdW5j''@;'; put 'put ''dGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCYmIXgucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHgpfTt2YXIgSWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBUZSh4''@;'; put 'put ''LFApe3RoaXMubmFtZT14LHRoaXMucD1uZXcgTihQLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gRWUoKXtUZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZm''@;'; put 'put ''ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGhlKCl7VGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAw''@;'; put 'put ''MDEiKX1mdW5jdGlvbiBPKCl7VGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB6KCl7VGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBuZSh4KXtpZigic3RyaW5nIj09dHlwZW9mIHgpe3ZhciBQPU4uX3ByaW1lKHgpO3RoaXMubT1QLnAsdGhpcy5wcmltZT1QfWVsc2UgWSh4Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiks''@;'; put 'put ''dGhpcy5tPXgsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIHRlKHgpe25lLmNhbGwodGhpcyx4KSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBOKDEpLml1c2hsbih0aGlzLnNo''@;'; put 'put ''aWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9''@;'; put 'put ''dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSx4fSxUZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih4KXt2YXIgUCxWPXg7ZG97''@;'; put 'put ''dGhpcy5zcGxpdChWLHRoaXMudG1wKSxQPShWPShWPXRoaXMuaW11bEsoVikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShQPnRoaXMubik7dmFyIFQ9UDx0aGlzLm4/LTE6Vi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1UPyhWLndvcmRzWzBdPTAsVi5sZW5ndGg9MSk6VD4w''@;'; put 'put ''P1YuaXN1Yih0aGlzLnApOnZvaWQgMCE9PVYuc3RyaXA/Vi5zdHJpcCgpOlYuX3N0cmlwKCksVn0sVGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7eC5pdXNocm4odGhpcy5uLDAsUCl9LFRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtyZXR1cm4geC5pbXVsKHRoaXMuayl9''@;'; put 'put ''LFcoRWUsVGUpLEVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj00MTk0MzAzLFQ9TWF0aC5taW4oeC5sZW5ndGgsOSksUz0wO1M8VDtTKyspUC53b3Jkc1tTXT14LndvcmRzW1NdO2lmKFAubGVuZ3RoPVQseC5sZW5ndGg8PTkpcmV0dXJuIHgud29yZHNbMF09MCx2''@;'; put 'put ''b2lkKHgubGVuZ3RoPTEpO3ZhciBGPXgud29yZHNbOV07Zm9yKFAud29yZHNbUC5sZW5ndGgrK109RiZWLFM9MTA7Uzx4Lmxlbmd0aDtTKyspe3ZhciB5ZT0wfHgud29yZHNbU107eC53b3Jkc1tTLTEwXT0oeWUmVik8PDR8Rj4+PjIyLEY9eWV9eC53b3Jkc1tTLTEwXT1GPj4+PTIyLHgubGVu''@;'; put 'put ''Z3RoLT0wPT09RiYmeC5sZW5ndGg+MTA/MTA6OX0sRWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3gud29yZHNbeC5sZW5ndGhdPTAseC53b3Jkc1t4Lmxlbmd0aCsxXT0wLHgubGVuZ3RoKz0yO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MHx4LndvcmRzW1Zd''@;'; put 'put ''O3gud29yZHNbVl09NjcxMDg4NjMmKFArPTk3NypUKSxQPTY0KlQrKFAvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiYoeC5sZW5ndGgtLSwwPT09eC53b3Jkc1t4Lmxlbmd0aC0xXSYmeC5sZW5ndGgtLSkseH0sVyhoZSxUZSksVyhPLFRlKSxXKHosVGUpLHou''@;'; put 'put ''cHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MTkqKDB8eC53b3Jkc1tWXSkrUCxTPTY3MTA4ODYzJlQ7VD4+Pj0yNix4LndvcmRzW1ZdPVMsUD1UfXJldHVybiAwIT09UCYmKHgud29yZHNbeC5sZW5ndGgrK109UCkseH0s''@;'; put 'put ''Ti5fcHJpbWU9ZnVuY3Rpb24oeCl7aWYoSWVbeF0pcmV0dXJuIEllW3hdO3ZhciBQO2lmKCJrMjU2Ij09PXgpUD1uZXcgRWU7ZWxzZSBpZigicDIyNCI9PT14KVA9bmV3IGhlO2Vsc2UgaWYoInAxOTIiPT09eClQPW5ldyBPO2Vsc2V7aWYoInAyNTUxOSIhPT14KXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''VW5rbm93biBwcmltZSAiK3gpO1A9bmV3IHp9cmV0dXJuIEllW3hdPVAsUH0sbmUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVt''@;'; put 'put ''YmVycyIpfSxuZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oeCxQKXtZKDA9PSh4Lm5lZ2F0aXZlfFAubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFkoeC5yZWQmJngucmVkPT09UC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0s''@;'; put 'put ''bmUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHgpLl9mb3JjZVJlZCh0aGlzKTp4LnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaXNaZXJvKCk/''@;'; put 'put ''eC5jbG9uZSgpOnRoaXMubS5zdWIoeCkuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0s''@;'; put 'put ''bmUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWfSxuZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBW''@;'; put 'put ''PXguc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguaXN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlzLm0p''@;'; put 'put ''LFZ9LG5lLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh4KSx0aGlzLmltb2QoeC51c2hsbihQKSl9LG5lLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5pbXVsKFApKX0sbmUu''@;'; put 'put ''cHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHgubXVsKFApKX0sbmUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW11bCh4LHguY2xvbmUoKSl9LG5lLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oeCl7''@;'; put 'put ''cmV0dXJuIHRoaXMubXVsKHgseCl9LG5lLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIHguY2xvbmUoKTt2YXIgUD10aGlzLm0uYW5kbG4oMyk7aWYoWShQJTI9PTEpLDM9PT1QKXt2YXIgVj10aGlzLm0uYWRkKG5ldyBOKDEpKS5pdXNocm4oMik7cmV0''@;'; put 'put ''dXJuIHRoaXMucG93KHgsVil9Zm9yKHZhciBUPXRoaXMubS5zdWJuKDEpLFM9MDshVC5pc1plcm8oKSYmMD09PVQuYW5kbG4oMSk7KVMrKyxULml1c2hybigxKTtZKCFULmlzWmVybygpKTt2YXIgRj1uZXcgTigxKS50b1JlZCh0aGlzKSx5ZT1GLnJlZE5lZygpLENlPXRoaXMubS5zdWJuKDEp''@;'; put 'put ''Lml1c2hybigxKSxEZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKERlPW5ldyBOKDIqRGUqRGUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhEZSxDZSkuY21wKHllKTspRGUucmVkSUFkZCh5ZSk7Zm9yKHZhciBQZT10aGlzLnBvdyhEZSxUKSxRZT10aGlzLnBvdyh4LFQuYWRkbigxKS5pdXNo''@;'; put 'put ''cm4oMSkpLCRlPXRoaXMucG93KHgsVCksZ3Q9UzswIT09JGUuY21wKEYpOyl7Zm9yKHZhciB5dD0kZSxwdD0wOzAhPT15dC5jbXAoRik7cHQrKyl5dD15dC5yZWRTcXIoKTtZKHB0PGd0KTt2YXIgbXQ9dGhpcy5wb3coUGUsbmV3IE4oMSkuaXVzaGxuKGd0LXB0LTEpKTtRZT1RZS5yZWRNdWwo''@;'; put 'put ''bXQpLFBlPW10LnJlZFNxcigpLCRlPSRlLnJlZE11bChQZSksZ3Q9cHR9cmV0dXJuIFFlfSxuZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXt2YXIgUD14Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09UC5uZWdhdGl2ZT8oUC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChQKS5yZWROZWcoKSk6''@;'; put 'put ''dGhpcy5pbW9kKFApfSxuZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgsUCl7aWYoUC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMSkudG9SZWQodGhpcyk7aWYoMD09PVAuY21wbigxKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBWPW5ldyBBcnJheSgxNik7VlswXT1uZXcgTigxKS50b1JlZCh0aGlz''@;'; put 'put ''KSxWWzFdPXg7Zm9yKHZhciBUPTI7VDxWLmxlbmd0aDtUKyspVltUXT10aGlzLm11bChWW1QtMV0seCk7dmFyIFM9VlswXSxGPTAseWU9MCxDZT1QLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09Q2UmJihDZT0yNiksVD1QLmxlbmd0aC0xO1Q+PTA7VC0tKXtmb3IodmFyIERlPVAud29yZHNbVF0s''@;'; put 'put ''UGU9Q2UtMTtQZT49MDtQZS0tKXt2YXIgUWU9RGU+PlBlJjE7UyE9PVZbMF0mJihTPXRoaXMuc3FyKFMpKSwwIT09UWV8fDAhPT1GPyhGPDw9MSxGfD1RZSwoND09Kyt5ZXx8MD09PVQmJjA9PT1QZSkmJihTPXRoaXMubXVsKFMsVltGXSkseWU9MCxGPTApKTp5ZT0wfUNlPTI2fXJldHVybiBT''@;'; put 'put ''fSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3ZhciBQPXgudW1vZCh0aGlzLm0pO3JldHVybiBQPT09eD9QLmNsb25lKCk6UH0sbmUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXguY2xvbmUoKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSxOLm1vbnQ9''@;'; put 'put ''ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyB0ZSh4KX0sVyh0ZSxuZSksdGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHgudXNobG4odGhpcy5zaGlmdCkpfSx0ZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5pbW9k''@;'; put 'put ''KHgubXVsKHRoaXMucmludikpO3JldHVybiBQLnJlZD1udWxsLFB9LHRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4geC53b3Jkc1swXT0wLHgubGVuZ3RoPTEseDt2YXIgVj14LmltdWwoUCksVD1WLm1hc2tuKHRoaXMuc2hp''@;'; put 'put ''ZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4odGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wP0Y9Uy5pc3ViKHRoaXMubSk6Uy5jbXBuKDApPDAmJihGPVMuaWFkZCh0aGlzLm0pKSxGLl9mb3Jj''@;'; put 'put ''ZVJlZCh0aGlzKX0sdGUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgVj14Lm11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMu''@;'; put 'put ''c2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSx0ZS5wcm90b3R5cGUuaW52bT1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHguX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShVPVoubm1kKFUpLHRoaXMpfSw5MjgyOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KTtmdW5jdGlvbiBZKFFlKXty''@;'; put 'put ''ZXR1cm4oWT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbigkZSl7cmV0dXJuIHR5cGVvZiAkZX06ZnVuY3Rpb24oJGUpe3JldHVybiAkZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmJGUuY29uc3RydWN0b3I9''@;'; put 'put ''PT1TeW1ib2wmJiRlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgJGV9KShRZSl9dmFyIFcsTixlZT1aKDIxMzYpLmNvZGVzLHE9ZWUuRVJSX0FNQklHVU9VU19BUkdVTUVOVCxKPWVlLkVSUl9JTlZBTElEX0FSR19UWVBFLHNlPWVlLkVSUl9JTlZBTElEX0FSR19WQUxVRSxh''@;'; put 'put ''ZT1lZS5FUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUsZmU9ZWUuRVJSX01JU1NJTkdfQVJHUyxkZT1aKDU5NjEpLHZlPVooOTUzOSkuaW5zcGVjdCxBZT1aKDk1MzkpLnR5cGVzLGtlPUFlLmlzUHJvbWlzZSxTZT1BZS5pc1JlZ0V4cCxJZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ246Wig4''@;'; put 'put ''MDkxKS5hc3NpZ24sVGU9T2JqZWN0LmlzP09iamVjdC5pczpaKDYwOSk7ZnVuY3Rpb24gRWUoKXt2YXIgUWU9Wig5MTU4KTtXPVFlLmlzRGVlcEVxdWFsLE49UWUuaXNEZWVwU3RyaWN0RXF1YWx9dmFyIGhlPSExLE89VS5leHBvcnRzPXgsej17fTtmdW5jdGlvbiBuZShRZSl7dGhyb3cgUWUu''@;'; put 'put ''bWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yP1FlLm1lc3NhZ2U6bmV3IGRlKFFlKX1mdW5jdGlvbiB0ZShRZSwkZSxndCx5dCl7aWYoIWd0KXt2YXIgcHQ9ITE7aWYoMD09PSRlKXB0PSEwLHl0PSJObyB2YWx1ZSBhcmd1bWVudCBwYXNzZWQgdG8gYGFzc2VydC5vaygpYCI7ZWxzZSBpZih5dCBp''@;'; put 'put ''bnN0YW5jZW9mIEVycm9yKXRocm93IHl0O3ZhciBtdD1uZXcgZGUoe2FjdHVhbDpndCxleHBlY3RlZDohMCxtZXNzYWdlOnl0LG9wZXJhdG9yOiI9PSIsc3RhY2tTdGFydEZuOlFlfSk7dGhyb3cgbXQuZ2VuZXJhdGVkTWVzc2FnZT1wdCxtdH19ZnVuY3Rpb24geCgpe2Zvcih2YXIgUWU9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCwkZT1uZXcgQXJyYXkoUWUpLGd0PTA7Z3Q8UWU7Z3QrKykkZVtndF09YXJndW1lbnRzW2d0XTt0ZS5hcHBseSh2b2lkIDAsW3gsJGUubGVuZ3RoXS5jb25jYXQoJGUpKX1PLmZhaWw9ZnVuY3Rpb24gUWUoJGUsZ3QseXQscHQsbXQpe3ZhciB2dCxmdD1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoO2lmKDA9PT1mdD92dD0iRmFpbGVkIjoxPT09ZnQ/KHl0PSRlLCRlPXZvaWQgMCk6KCExPT09aGUmJihoZT0hMCwoaWUuZW1pdFdhcm5pbmc/aWUuZW1pdFdhcm5pbmc6bGUud2Fybi5iaW5kKGxlKSkoImFzc2VydC5mYWlsKCkgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IGlz''@;'; put 'put ''IGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYXNzZXJ0LnN0cmljdEVxdWFsKCkgaW5zdGVhZCBvciBvbmx5IHBhc3MgYSBtZXNzYWdlLiIsIkRlcHJlY2F0aW9uV2FybmluZyIsIkRFUDAwOTQiKSksMj09PWZ0JiYocHQ9IiE9IikpLHl0IGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgeXQ7dmFyIG9u''@;'; put 'put ''PXthY3R1YWw6JGUsZXhwZWN0ZWQ6Z3Qsb3BlcmF0b3I6dm9pZCAwPT09cHQ/ImZhaWwiOnB0LHN0YWNrU3RhcnRGbjptdHx8UWV9O3ZvaWQgMCE9PXl0JiYob24ubWVzc2FnZT15dCk7dmFyIF90PW5ldyBkZShvbik7dGhyb3cgdnQmJihfdC5tZXNzYWdlPXZ0LF90LmdlbmVyYXRlZE1lc3Nh''@;'; put 'put ''Z2U9ITApLF90fSxPLkFzc2VydGlvbkVycm9yPWRlLE8ub2s9eCxPLmVxdWFsPWZ1bmN0aW9uIFFlKCRlLGd0LHl0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IGZlKCJhY3R1YWwiLCJleHBlY3RlZCIpOyRlIT1ndCYmbmUoe2FjdHVhbDokZSxleHBlY3RlZDpndCxtZXNzYWdl''@;'; put 'put ''Onl0LG9wZXJhdG9yOiI9PSIsc3RhY2tTdGFydEZuOlFlfSl9LE8ubm90RXF1YWw9ZnVuY3Rpb24gUWUoJGUsZ3QseXQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgZmUoImFjdHVhbCIsImV4cGVjdGVkIik7JGU9PWd0JiZuZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG1lc3Nh''@;'; put 'put ''Z2U6eXQsb3BlcmF0b3I6IiE9IixzdGFja1N0YXJ0Rm46UWV9KX0sTy5kZWVwRXF1YWw9ZnVuY3Rpb24gUWUoJGUsZ3QseXQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgZmUoImFjdHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09VyYmRWUoKSxXKCRlLGd0KXx8bmUoe2FjdHVh''@;'; put 'put ''bDokZSxleHBlY3RlZDpndCxtZXNzYWdlOnl0LG9wZXJhdG9yOiJkZWVwRXF1YWwiLHN0YWNrU3RhcnRGbjpRZX0pfSxPLm5vdERlZXBFcXVhbD1mdW5jdGlvbiBRZSgkZSxndCx5dCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBmZSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lk''@;'; put 'put ''IDA9PT1XJiZFZSgpLFcoJGUsZ3QpJiZuZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG1lc3NhZ2U6eXQsb3BlcmF0b3I6Im5vdERlZXBFcXVhbCIsc3RhY2tTdGFydEZuOlFlfSl9LE8uZGVlcFN0cmljdEVxdWFsPWZ1bmN0aW9uIFFlKCRlLGd0LHl0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIp''@;'; put 'put ''dGhyb3cgbmV3IGZlKCJhY3R1YWwiLCJleHBlY3RlZCIpO3ZvaWQgMD09PVcmJkVlKCksTigkZSxndCl8fG5lKHthY3R1YWw6JGUsZXhwZWN0ZWQ6Z3QsbWVzc2FnZTp5dCxvcGVyYXRvcjoiZGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46UWV9KX0sTy5ub3REZWVwU3RyaWN0RXF1YWw9''@;'; put 'put ''ZnVuY3Rpb24gUWUoJGUsZ3QseXQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgZmUoImFjdHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09VyYmRWUoKSxOKCRlLGd0KSYmbmUoe2FjdHVhbDokZSxleHBlY3RlZDpndCxtZXNzYWdlOnl0LG9wZXJhdG9yOiJub3REZWVwU3RyaWN0''@;'; put 'put ''RXF1YWwiLHN0YWNrU3RhcnRGbjpRZX0pfSxPLnN0cmljdEVxdWFsPWZ1bmN0aW9uIFFlKCRlLGd0LHl0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IGZlKCJhY3R1YWwiLCJleHBlY3RlZCIpO1RlKCRlLGd0KXx8bmUoe2FjdHVhbDokZSxleHBlY3RlZDpndCxtZXNzYWdlOnl0''@;'; put 'put ''LG9wZXJhdG9yOiJzdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOlFlfSl9LE8ubm90U3RyaWN0RXF1YWw9ZnVuY3Rpb24gUWUoJGUsZ3QseXQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgZmUoImFjdHVhbCIsImV4cGVjdGVkIik7VGUoJGUsZ3QpJiZuZSh7YWN0dWFsOiRlLGV4''@;'; put 'put ''cGVjdGVkOmd0LG1lc3NhZ2U6eXQsb3BlcmF0b3I6Im5vdFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46UWV9KX07dmFyIFA9ZnVuY3Rpb24gUWUoJGUsZ3QseXQpe3ZhciBwdD10aGlzOyhmdW5jdGlvbihtdCx2dCl7aWYoIShtdCBpbnN0YW5jZW9mIHZ0KSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsUWUpLGd0LmZvckVhY2goZnVuY3Rpb24obXQpe210IGluICRlJiYocHRbbXRdPXZvaWQgMCE9PXl0JiYic3RyaW5nIj09dHlwZW9mIHl0W210XSYmU2UoJGVbbXRdKSYmJGVbbXRdLnRlc3QoeXRbbXRdKT95dFtt''@;'; put 'put ''dF06JGVbbXRdKX0pfTtmdW5jdGlvbiBWKFFlLCRlLGd0LHl0LHB0LG10KXtpZighKGd0IGluIFFlKXx8IU4oUWVbZ3RdLCRlW2d0XSkpe2lmKCF5dCl7dmFyIHZ0PW5ldyBQKFFlLHB0KSxmdD1uZXcgUCgkZSxwdCxRZSksRnQ9bmV3IGRlKHthY3R1YWw6dnQsZXhwZWN0ZWQ6ZnQsb3BlcmF0''@;'; put 'put ''b3I6ImRlZXBTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOm10fSk7dGhyb3cgRnQuYWN0dWFsPVFlLEZ0LmV4cGVjdGVkPSRlLEZ0Lm9wZXJhdG9yPW10Lm5hbWUsRnR9bmUoe2FjdHVhbDpRZSxleHBlY3RlZDokZSxtZXNzYWdlOnl0LG9wZXJhdG9yOm10Lm5hbWUsc3RhY2tTdGFydEZuOm10''@;'; put 'put ''fSl9fWZ1bmN0aW9uIFQoUWUsJGUsZ3QseXQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiAkZSl7aWYoU2UoJGUpKXJldHVybiAkZS50ZXN0KFFlKTtpZigyPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgSigiZXhwZWN0ZWQiLFsiRnVuY3Rpb24iLCJSZWdFeHAiXSwkZSk7aWYoIm9iamVj''@;'; put 'put ''dCIhPT1ZKFFlKXx8bnVsbD09PVFlKXt2YXIgcHQ9bmV3IGRlKHthY3R1YWw6UWUsZXhwZWN0ZWQ6JGUsbWVzc2FnZTpndCxvcGVyYXRvcjoiZGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46eXR9KTt0aHJvdyBwdC5vcGVyYXRvcj15dC5uYW1lLHB0fXZhciBtdD1PYmplY3Qua2V5cygk''@;'; put 'put ''ZSk7aWYoJGUgaW5zdGFuY2VvZiBFcnJvciltdC5wdXNoKCJuYW1lIiwibWVzc2FnZSIpO2Vsc2UgaWYoMD09PW10Lmxlbmd0aCl0aHJvdyBuZXcgc2UoImVycm9yIiwkZSwibWF5IG5vdCBiZSBhbiBlbXB0eSBvYmplY3QiKTtyZXR1cm4gdm9pZCAwPT09VyYmRWUoKSxtdC5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKHZ0KXsic3RyaW5nIj09dHlwZW9mIFFlW3Z0XSYmU2UoJGVbdnRdKSYmJGVbdnRdLnRlc3QoUWVbdnRdKXx8VihRZSwkZSx2dCxndCxtdCx5dCl9KSwhMH1yZXR1cm4gdm9pZCAwIT09JGUucHJvdG90eXBlJiZRZSBpbnN0YW5jZW9mICRlfHwhRXJyb3IuaXNQcm90b3R5cGVPZigk''@;'; put 'put ''ZSkmJiEwPT09JGUuY2FsbCh7fSxRZSl9ZnVuY3Rpb24gUyhRZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFFlKXRocm93IG5ldyBKKCJmbiIsIkZ1bmN0aW9uIixRZSk7dHJ5e1FlKCl9Y2F0Y2goJGUpe3JldHVybiAkZX1yZXR1cm4gen1mdW5jdGlvbiBGKFFlKXtyZXR1cm4ga2UoUWUpfHxu''@;'; put 'put ''dWxsIT09UWUmJiJvYmplY3QiPT09WShRZSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBRZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgUWUuY2F0Y2h9ZnVuY3Rpb24geWUoUWUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7dmFyICRlO2lmKCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBRZSl7aWYoIUYoJGU9UWUoKSkpdGhyb3cgbmV3IGFlKCJpbnN0YW5jZSBvZiBQcm9taXNlIiwicHJvbWlzZUZuIiwkZSl9ZWxzZXtpZighRihRZSkpdGhyb3cgbmV3IEooInByb21pc2VGbiIsWyJGdW5jdGlvbiIsIlByb21pc2UiXSxRZSk7JGU9UWV9cmV0dXJuIFByb21pc2UucmVz''@;'; put 'put ''b2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gJGV9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHp9KS5jYXRjaChmdW5jdGlvbihndCl7cmV0dXJuIGd0fSl9KX1mdW5jdGlvbiBDZShRZSwkZSxndCx5dCl7aWYoInN0cmluZyI9PXR5cGVvZiBndCl7aWYoND09PWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGgpdGhyb3cgbmV3IEooImVycm9yIixbIk9iamVjdCIsIkVycm9yIiwiRnVuY3Rpb24iLCJSZWdFeHAiXSxndCk7aWYoIm9iamVjdCI9PT1ZKCRlKSYmbnVsbCE9PSRlKXtpZigkZS5tZXNzYWdlPT09Z3QpdGhyb3cgbmV3IHEoImVycm9yL21lc3NhZ2UiLCdUaGUgZXJyb3IgbWVzc2FnZSAi''@;'; put 'put ''Jy5jb25jYXQoJGUubWVzc2FnZSwnIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuJykpfWVsc2UgaWYoJGU9PT1ndCl0aHJvdyBuZXcgcSgiZXJyb3IvbWVzc2FnZSIsJ1RoZSBlcnJvciAiJy5jb25jYXQoJGUsJyIgaXMgaWRlbnRpY2FsIHRvIHRoZSBtZXNzYWdlLicpKTt5dD1ndCxn''@;'; put 'put ''dD12b2lkIDB9ZWxzZSBpZihudWxsIT1ndCYmIm9iamVjdCIhPT1ZKGd0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIGd0KXRocm93IG5ldyBKKCJlcnJvciIsWyJPYmplY3QiLCJFcnJvciIsIkZ1bmN0aW9uIiwiUmVnRXhwIl0sZ3QpO2lmKCRlPT09eil7dmFyIHB0PSIiO2d0JiZndC5uYW1lJiYo''@;'; put 'put ''cHQrPSIgKCIuY29uY2F0KGd0Lm5hbWUsIikiKSkscHQrPXl0PyI6ICIuY29uY2F0KHl0KToiLiIsbmUoe2FjdHVhbDp2b2lkIDAsZXhwZWN0ZWQ6Z3Qsb3BlcmF0b3I6UWUubmFtZSxtZXNzYWdlOiJNaXNzaW5nIGV4cGVjdGVkICIuY29uY2F0KCJyZWplY3RzIj09PVFlLm5hbWU/InJlamVj''@;'; put 'put ''dGlvbiI6ImV4Y2VwdGlvbiIpLmNvbmNhdChwdCksc3RhY2tTdGFydEZuOlFlfSl9aWYoZ3QmJiFUKCRlLGd0LHl0LFFlKSl0aHJvdyAkZX1mdW5jdGlvbiBEZShRZSwkZSxndCx5dCl7aWYoJGUhPT16KXtpZigic3RyaW5nIj09dHlwZW9mIGd0JiYoeXQ9Z3QsZ3Q9dm9pZCAwKSwhZ3R8fFQo''@;'; put 'put ''JGUsZ3QpKXt2YXIgcHQ9eXQ/IjogIi5jb25jYXQoeXQpOiIuIjtuZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG9wZXJhdG9yOlFlLm5hbWUsbWVzc2FnZToiR290IHVud2FudGVkICIuY29uY2F0KCJkb2VzTm90UmVqZWN0Ij09PVFlLm5hbWU/InJlamVjdGlvbiI6ImV4Y2VwdGlvbiIpLmNv''@;'; put 'put ''bmNhdChwdCwiXG4iKSsnQWN0dWFsIG1lc3NhZ2U6ICInLmNvbmNhdCgkZSYmJGUubWVzc2FnZSwnIicpLHN0YWNrU3RhcnRGbjpRZX0pfXRocm93ICRlfX1mdW5jdGlvbiBQZSgpe2Zvcih2YXIgUWU9YXJndW1lbnRzLmxlbmd0aCwkZT1uZXcgQXJyYXkoUWUpLGd0PTA7Z3Q8UWU7Z3QrKykk''@;'; put 'put ''ZVtndF09YXJndW1lbnRzW2d0XTt0ZS5hcHBseSh2b2lkIDAsW1BlLCRlLmxlbmd0aF0uY29uY2F0KCRlKSl9Ty50aHJvd3M9ZnVuY3Rpb24gUWUoJGUpe2Zvcih2YXIgZ3Q9YXJndW1lbnRzLmxlbmd0aCx5dD1uZXcgQXJyYXkoZ3Q+MT9ndC0xOjApLHB0PTE7cHQ8Z3Q7cHQrKyl5dFtwdC0x''@;'; put 'put ''XT1hcmd1bWVudHNbcHRdO0NlLmFwcGx5KHZvaWQgMCxbUWUsUygkZSldLmNvbmNhdCh5dCkpfSxPLnJlamVjdHM9ZnVuY3Rpb24gUWUoJGUpe2Zvcih2YXIgZ3Q9YXJndW1lbnRzLmxlbmd0aCx5dD1uZXcgQXJyYXkoZ3Q+MT9ndC0xOjApLHB0PTE7cHQ8Z3Q7cHQrKyl5dFtwdC0xXT1hcmd1''@;'; put 'put ''bWVudHNbcHRdO3JldHVybiB5ZSgkZSkudGhlbihmdW5jdGlvbihtdCl7cmV0dXJuIENlLmFwcGx5KHZvaWQgMCxbUWUsbXRdLmNvbmNhdCh5dCkpfSl9LE8uZG9lc05vdFRocm93PWZ1bmN0aW9uIFFlKCRlKXtmb3IodmFyIGd0PWFyZ3VtZW50cy5sZW5ndGgseXQ9bmV3IEFycmF5KGd0PjE/''@;'; put 'put ''Z3QtMTowKSxwdD0xO3B0PGd0O3B0KyspeXRbcHQtMV09YXJndW1lbnRzW3B0XTtEZS5hcHBseSh2b2lkIDAsW1FlLFMoJGUpXS5jb25jYXQoeXQpKX0sTy5kb2VzTm90UmVqZWN0PWZ1bmN0aW9uIFFlKCRlKXtmb3IodmFyIGd0PWFyZ3VtZW50cy5sZW5ndGgseXQ9bmV3IEFycmF5KGd0PjE/''@;'; put 'put ''Z3QtMTowKSxwdD0xO3B0PGd0O3B0KyspeXRbcHQtMV09YXJndW1lbnRzW3B0XTtyZXR1cm4geWUoJGUpLnRoZW4oZnVuY3Rpb24obXQpe3JldHVybiBEZS5hcHBseSh2b2lkIDAsW1FlLG10XS5jb25jYXQoeXQpKX0pfSxPLmlmRXJyb3I9ZnVuY3Rpb24gUWUoJGUpe2lmKG51bGwhPSRlKXt2''@;'; put 'put ''YXIgZ3Q9ImlmRXJyb3IgZ290IHVud2FudGVkIGV4Y2VwdGlvbjogIjsib2JqZWN0Ij09PVkoJGUpJiYic3RyaW5nIj09dHlwZW9mICRlLm1lc3NhZ2U/Z3QrPTA9PT0kZS5tZXNzYWdlLmxlbmd0aCYmJGUuY29uc3RydWN0b3I/JGUuY29uc3RydWN0b3IubmFtZTokZS5tZXNzYWdlOmd0Kz12''@;'; put 'put ''ZSgkZSk7dmFyIHl0PW5ldyBkZSh7YWN0dWFsOiRlLGV4cGVjdGVkOm51bGwsb3BlcmF0b3I6ImlmRXJyb3IiLG1lc3NhZ2U6Z3Qsc3RhY2tTdGFydEZuOlFlfSkscHQ9JGUuc3RhY2s7aWYoInN0cmluZyI9PXR5cGVvZiBwdCl7dmFyIG10PXB0LnNwbGl0KCJcbiIpO210LnNoaWZ0KCk7Zm9y''@;'; put 'put ''KHZhciB2dD15dC5zdGFjay5zcGxpdCgiXG4iKSxmdD0wO2Z0PG10Lmxlbmd0aDtmdCsrKXt2YXIgRnQ9dnQuaW5kZXhPZihtdFtmdF0pO2lmKC0xIT09RnQpe3Z0PXZ0LnNsaWNlKDAsRnQpO2JyZWFrfX15dC5zdGFjaz0iIi5jb25jYXQodnQuam9pbigiXG4iKSwiXG4iKS5jb25jYXQobXQu''@;'; put 'put ''am9pbigiXG4iKSl9dGhyb3cgeXR9fSxPLnN0cmljdD1JZShQZSxPLHtlcXVhbDpPLnN0cmljdEVxdWFsLGRlZXBFcXVhbDpPLmRlZXBTdHJpY3RFcXVhbCxub3RFcXVhbDpPLm5vdFN0cmljdEVxdWFsLG5vdERlZXBFcXVhbDpPLm5vdERlZXBTdHJpY3RFcXVhbH0pLE8uc3RyaWN0LnN0cmlj''@;'; put 'put ''dD1PLnN0cmljdH0sNTk2MTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQxNTUpO2Z1bmN0aW9uIGxlKHRlLHgsUCl7cmV0dXJuIHggaW4gdGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KHRlLHgse3ZhbHVlOlAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6''@;'; put 'put ''ITB9KTp0ZVt4XT1QLHRlfWZ1bmN0aW9uIFkodGUseCl7Zm9yKHZhciBQPTA7UDx4Lmxlbmd0aDtQKyspe3ZhciBWPXhbUF07Vi5lbnVtZXJhYmxlPVYuZW51bWVyYWJsZXx8ITEsVi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIFYmJihWLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkodGUsVi5rZXksVil9fWZ1bmN0aW9uIFcodGUseCl7cmV0dXJuIXh8fCJvYmplY3QiIT09ZmUoeCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB4P04odGUpOnh9ZnVuY3Rpb24gTih0ZSl7aWYodm9pZCAwPT09dGUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu''@;'; put 'put ''IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdGV9ZnVuY3Rpb24gZWUodGUpe3ZhciB4PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGVlPWZ1bmN0aW9uKFApe2lmKG51bGw9PT1QfHwtMT09PUZ1bmN0aW9uLnRv''@;'; put 'put ''U3RyaW5nLmNhbGwoUCkuaW5kZXhPZigiW25hdGl2ZSBjb2RlXSIpKXJldHVybiBQO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBQKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7aWYodm9pZCAwIT09eCl7aWYo''@;'; put 'put ''eC5oYXMoUCkpcmV0dXJuIHguZ2V0KFApO3guc2V0KFAsVCl9ZnVuY3Rpb24gVCgpe3JldHVybiBKKFAsYXJndW1lbnRzLGFlKHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gVC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShQLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlQsZW51bWVy''@;'; put 'put ''YWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksc2UoVCxQKX0sZWUodGUpfWZ1bmN0aW9uIHEoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2godGUpe3JldHVybiExfX1mdW5jdGlvbiBKKHRlLHgsUCl7cmV0dXJuKEo9cSgpP1JlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0OmZ1bmN0aW9uKFYsVCxTKXt2YXIgRj1bbnVsbF07Ri5wdXNoLmFwcGx5KEYsVCk7dmFyIHllPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KFYsRikpO3JldHVybiBTJiZzZSh5ZSxTLnByb3RvdHlwZSkseWV9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gc2Uo''@;'; put 'put ''dGUseCl7cmV0dXJuKHNlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oUCxWKXtyZXR1cm4gUC5fX3Byb3RvX189VixQfSkodGUseCl9ZnVuY3Rpb24gYWUodGUpe3JldHVybihhZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHgp''@;'; put 'put ''e3JldHVybiB4Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHgpfSkodGUpfWZ1bmN0aW9uIGZlKHRlKXtyZXR1cm4oZmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oeCl7cmV0dXJuIHR5cGVvZiB4''@;'; put 'put ''fTpmdW5jdGlvbih4KXtyZXR1cm4geCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmeC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmeCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHh9KSh0ZSl9dmFyIGRlPVooOTUzOSkuaW5zcGVjdCx2ZT1aKDIxMzYpLmNvZGVzLkVSUl9J''@;'; put 'put ''TlZBTElEX0FSR19UWVBFO2Z1bmN0aW9uIEFlKHRlLHgsUCl7cmV0dXJuKHZvaWQgMD09PVB8fFA+dGUubGVuZ3RoKSYmKFA9dGUubGVuZ3RoKSx0ZS5zdWJzdHJpbmcoUC14Lmxlbmd0aCxQKT09PXh9dmFyIGtlPSIiLFNlPSIiLEllPSIiLFRlPSIiLEVlPXtkZWVwU3RyaWN0RXF1YWw6IkV4''@;'; put 'put ''cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBkZWVwLWVxdWFsOiIsc3RyaWN0RXF1YWw6IkV4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBlcXVhbDoiLHN0cmljdEVxdWFsT2JqZWN0OidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSByZWZlcmVuY2UtZXF1YWwgdG8gImV4cGVjdGVk''@;'; put 'put ''IjonLGRlZXBFcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIGxvb3NlbHkgZGVlcC1lcXVhbDoiLGVxdWFsOiJFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBlcXVhbDoiLG5vdERlZXBTdHJpY3RFcXVhbDonRXhwZWN0ZWQgImFjdHVhbCIgbm90IHRvIGJlIHN0cmljdGx5IGRlZXAt''@;'; put 'put ''ZXF1YWwgdG86Jyxub3RTdHJpY3RFcXVhbDonRXhwZWN0ZWQgImFjdHVhbCIgdG8gYmUgc3RyaWN0bHkgdW5lcXVhbCB0bzonLG5vdFN0cmljdEVxdWFsT2JqZWN0OidFeHBlY3RlZCAiYWN0dWFsIiBub3QgdG8gYmUgcmVmZXJlbmNlLWVxdWFsIHRvICJleHBlY3RlZCI6Jyxub3REZWVwRXF1''@;'; put 'put ''YWw6J0V4cGVjdGVkICJhY3R1YWwiIG5vdCB0byBiZSBsb29zZWx5IGRlZXAtZXF1YWwgdG86Jyxub3RFcXVhbDonRXhwZWN0ZWQgImFjdHVhbCIgdG8gYmUgbG9vc2VseSB1bmVxdWFsIHRvOicsbm90SWRlbnRpY2FsOiJWYWx1ZXMgaWRlbnRpY2FsIGJ1dCBub3QgcmVmZXJlbmNlLWVxdWFs''@;'; put 'put ''OiJ9O2Z1bmN0aW9uIGhlKHRlKXt2YXIgeD1PYmplY3Qua2V5cyh0ZSksUD1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0ZSkpO3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oVil7UFtWXT10ZVtWXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQLCJtZXNzYWdlIix7dmFs''@;'; put 'put ''dWU6dGUubWVzc2FnZX0pLFB9ZnVuY3Rpb24gTyh0ZSl7cmV0dXJuIGRlKHRlLHtjb21wYWN0OiExLGN1c3RvbUluc3BlY3Q6ITEsZGVwdGg6MWUzLG1heEFycmF5TGVuZ3RoOjEvMCxzaG93SGlkZGVuOiExLGJyZWFrTGVuZ3RoOjEvMCxzaG93UHJveHk6ITEsc29ydGVkOiEwLGdldHRlcnM6''@;'; put 'put ''ITB9KX12YXIgbmU9ZnVuY3Rpb24odGUpe2Z1bmN0aW9uIHgoUyl7dmFyIEY7aWYoZnVuY3Rpb24oZnQsRnQpe2lmKCEoZnQgaW5zdGFuY2VvZiBGdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMseCksIm9iamVjdCIhPT1m''@;'; put 'put ''ZShTKXx8bnVsbD09PVMpdGhyb3cgbmV3IHZlKCJvcHRpb25zIiwiT2JqZWN0IixTKTt2YXIgeWU9Uy5tZXNzYWdlLENlPVMub3BlcmF0b3IsRGU9Uy5zdGFja1N0YXJ0Rm4sUGU9Uy5hY3R1YWwsUWU9Uy5leHBlY3RlZCwkZT1FcnJvci5zdGFja1RyYWNlTGltaXQ7aWYoRXJyb3Iuc3RhY2tU''@;'; put 'put ''cmFjZUxpbWl0PTAsbnVsbCE9eWUpRj1XKHRoaXMsYWUoeCkuY2FsbCh0aGlzLFN0cmluZyh5ZSkpKTtlbHNlIGlmKGllLnN0ZGVyciYmaWUuc3RkZXJyLmlzVFRZJiYoaWUuc3RkZXJyJiZpZS5zdGRlcnIuZ2V0Q29sb3JEZXB0aCYmMSE9PWllLnN0ZGVyci5nZXRDb2xvckRlcHRoKCk/KGtl''@;'; put 'put ''PSJceDFiWzM0bSIsU2U9Ilx4MWJbMzJtIixUZT0iXHgxYlszOW0iLEllPSJceDFiWzMxbSIpOihrZT0iIixTZT0iIixUZT0iIixJZT0iIikpLCJvYmplY3QiPT09ZmUoUGUpJiZudWxsIT09UGUmJiJvYmplY3QiPT09ZmUoUWUpJiZudWxsIT09UWUmJiJzdGFjayJpbiBQZSYmUGUgaW5zdGFu''@;'; put 'put ''Y2VvZiBFcnJvciYmInN0YWNrImluIFFlJiZRZSBpbnN0YW5jZW9mIEVycm9yJiYoUGU9aGUoUGUpLFFlPWhlKFFlKSksImRlZXBTdHJpY3RFcXVhbCI9PT1DZXx8InN0cmljdEVxdWFsIj09PUNlKUY9Vyh0aGlzLGFlKHgpLmNhbGwodGhpcyxmdW5jdGlvbiB6KHRlLHgsUCl7dmFyIFY9IiIs''@;'; put 'put ''VD0iIixTPTAsRj0iIix5ZT0hMSxDZT1PKHRlKSxEZT1DZS5zcGxpdCgiXG4iKSxQZT1PKHgpLnNwbGl0KCJcbiIpLFFlPTAsJGU9IiI7aWYoInN0cmljdEVxdWFsIj09PVAmJiJvYmplY3QiPT09ZmUodGUpJiYib2JqZWN0Ij09PWZlKHgpJiZudWxsIT09dGUmJm51bGwhPT14JiYoUD0ic3Ry''@;'; put 'put ''aWN0RXF1YWxPYmplY3QiKSwxPT09RGUubGVuZ3RoJiYxPT09UGUubGVuZ3RoJiZEZVswXSE9PVBlWzBdKXt2YXIgZ3Q9RGVbMF0ubGVuZ3RoK1BlWzBdLmxlbmd0aDtpZihndDw9MTApe2lmKCEoIm9iamVjdCI9PT1mZSh0ZSkmJm51bGwhPT10ZXx8Im9iamVjdCI9PT1mZSh4KSYmbnVsbCE9''@;'; put 'put ''PXh8fDA9PT10ZSYmMD09PXgpKXJldHVybiIiLmNvbmNhdChFZVtQXSwiXG5cbiIpKyIiLmNvbmNhdChEZVswXSwiICE9PSAiKS5jb25jYXQoUGVbMF0sIlxuIil9ZWxzZSBpZigic3RyaWN0RXF1YWxPYmplY3QiIT09UCYmZ3Q8KGllLnN0ZGVyciYmaWUuc3RkZXJyLmlzVFRZP2llLnN0ZGVy''@;'; put 'put ''ci5jb2x1bW5zOjgwKSl7Zm9yKDtEZVswXVtRZV09PT1QZVswXVtRZV07KVFlKys7UWU+MiYmKCRlPSJcbiAgIi5jb25jYXQoZnVuY3Rpb24oUnQsQ3Qpe2lmKEN0PU1hdGguZmxvb3IoQ3QpLDA9PVJ0Lmxlbmd0aHx8MD09Q3QpcmV0dXJuIiI7dmFyIGN0PVJ0Lmxlbmd0aCpDdDtmb3IoQ3Q9''@;'; put 'put ''TWF0aC5mbG9vcihNYXRoLmxvZyhDdCkvTWF0aC5sb2coMikpO0N0OylSdCs9UnQsQ3QtLTtyZXR1cm4gUnQrUnQuc3Vic3RyaW5nKDAsY3QtUnQubGVuZ3RoKX0oIiAiLFFlKSwiXiIpLFFlPTApfX1mb3IodmFyIHl0PURlW0RlLmxlbmd0aC0xXSxwdD1QZVtQZS5sZW5ndGgtMV07eXQ9PT1w''@;'; put 'put ''dCYmKFFlKys8Mj9GPSJcbiAgIi5jb25jYXQoeXQpLmNvbmNhdChGKTpWPXl0LERlLnBvcCgpLFBlLnBvcCgpLDAhPT1EZS5sZW5ndGgmJjAhPT1QZS5sZW5ndGgpOyl5dD1EZVtEZS5sZW5ndGgtMV0scHQ9UGVbUGUubGVuZ3RoLTFdO3ZhciBtdD1NYXRoLm1heChEZS5sZW5ndGgsUGUubGVu''@;'; put 'put ''Z3RoKTtpZigwPT09bXQpe3ZhciB2dD1DZS5zcGxpdCgiXG4iKTtpZih2dC5sZW5ndGg+MzApZm9yKHZ0WzI2XT0iIi5jb25jYXQoa2UsIi4uLiIpLmNvbmNhdChUZSk7dnQubGVuZ3RoPjI3Oyl2dC5wb3AoKTtyZXR1cm4iIi5jb25jYXQoRWUubm90SWRlbnRpY2FsLCJcblxuIikuY29uY2F0''@;'; put 'put ''KHZ0LmpvaW4oIlxuIiksIlxuIil9UWU+MyYmKEY9IlxuIi5jb25jYXQoa2UsIi4uLiIpLmNvbmNhdChUZSkuY29uY2F0KEYpLHllPSEwKSwiIiE9PVYmJihGPSJcbiAgIi5jb25jYXQoVikuY29uY2F0KEYpLFY9IiIpO3ZhciBmdD0wLEZ0PUVlW1BdKyJcbiIuY29uY2F0KFNlLCIrIGFjdHVh''@;'; put 'put ''bCIpLmNvbmNhdChUZSwiICIpLmNvbmNhdChJZSwiLSBleHBlY3RlZCIpLmNvbmNhdChUZSksb249IiAiLmNvbmNhdChrZSwiLi4uIikuY29uY2F0KFRlLCIgTGluZXMgc2tpcHBlZCIpO2ZvcihRZT0wO1FlPG10O1FlKyspe3ZhciBfdD1RZS1TO2lmKERlLmxlbmd0aDxRZSsxKV90PjEmJlFl''@;'; put 'put ''PjImJihfdD40PyhUKz0iXG4iLmNvbmNhdChrZSwiLi4uIikuY29uY2F0KFRlKSx5ZT0hMCk6X3Q+MyYmKFQrPSJcbiAgIi5jb25jYXQoUGVbUWUtMl0pLGZ0KyspLFQrPSJcbiAgIi5jb25jYXQoUGVbUWUtMV0pLGZ0KyspLFM9UWUsVis9IlxuIi5jb25jYXQoSWUsIi0iKS5jb25jYXQoVGUs''@;'; put 'put ''IiAiKS5jb25jYXQoUGVbUWVdKSxmdCsrO2Vsc2UgaWYoUGUubGVuZ3RoPFFlKzEpX3Q+MSYmUWU+MiYmKF90PjQ/KFQrPSJcbiIuY29uY2F0KGtlLCIuLi4iKS5jb25jYXQoVGUpLHllPSEwKTpfdD4zJiYoVCs9IlxuICAiLmNvbmNhdChEZVtRZS0yXSksZnQrKyksVCs9IlxuICAiLmNvbmNh''@;'; put 'put ''dChEZVtRZS0xXSksZnQrKyksUz1RZSxUKz0iXG4iLmNvbmNhdChTZSwiKyIpLmNvbmNhdChUZSwiICIpLmNvbmNhdChEZVtRZV0pLGZ0Kys7ZWxzZXt2YXIgbnQ9UGVbUWVdLHFlPURlW1FlXSxvdD1xZSE9PW50JiYoIUFlKHFlLCIsIil8fHFlLnNsaWNlKDAsLTEpIT09bnQpO290JiZBZShu''@;'; put 'put ''dCwiLCIpJiZudC5zbGljZSgwLC0xKT09PXFlJiYob3Q9ITEscWUrPSIsIiksb3Q/KF90PjEmJlFlPjImJihfdD40PyhUKz0iXG4iLmNvbmNhdChrZSwiLi4uIikuY29uY2F0KFRlKSx5ZT0hMCk6X3Q+MyYmKFQrPSJcbiAgIi5jb25jYXQoRGVbUWUtMl0pLGZ0KyspLFQrPSJcbiAgIi5jb25j''@;'; put 'put ''YXQoRGVbUWUtMV0pLGZ0KyspLFM9UWUsVCs9IlxuIi5jb25jYXQoU2UsIisiKS5jb25jYXQoVGUsIiAiKS5jb25jYXQocWUpLFYrPSJcbiIuY29uY2F0KEllLCItIikuY29uY2F0KFRlLCIgIikuY29uY2F0KG50KSxmdCs9Mik6KFQrPVYsVj0iIiwxIT09X3QmJjAhPT1RZXx8KFQrPSJcbiAg''@;'; put 'put ''Ii5jb25jYXQocWUpLGZ0KyspKX1pZihmdD4yMCYmUWU8bXQtMilyZXR1cm4iIi5jb25jYXQoRnQpLmNvbmNhdChvbiwiXG4iKS5jb25jYXQoVCwiXG4iKS5jb25jYXQoa2UsIi4uLiIpLmNvbmNhdChUZSkuY29uY2F0KFYsIlxuIikrIiIuY29uY2F0KGtlLCIuLi4iKS5jb25jYXQoVGUpfXJl''@;'; put 'put ''dHVybiIiLmNvbmNhdChGdCkuY29uY2F0KHllP29uOiIiLCJcbiIpLmNvbmNhdChUKS5jb25jYXQoVikuY29uY2F0KEYpLmNvbmNhdCgkZSl9KFBlLFFlLENlKSkpO2Vsc2UgaWYoIm5vdERlZXBTdHJpY3RFcXVhbCI9PT1DZXx8Im5vdFN0cmljdEVxdWFsIj09PUNlKXt2YXIgZ3Q9RWVbQ2Vd''@;'; put 'put ''LHl0PU8oUGUpLnNwbGl0KCJcbiIpO2lmKCJub3RTdHJpY3RFcXVhbCI9PT1DZSYmIm9iamVjdCI9PT1mZShQZSkmJm51bGwhPT1QZSYmKGd0PUVlLm5vdFN0cmljdEVxdWFsT2JqZWN0KSx5dC5sZW5ndGg+MzApZm9yKHl0WzI2XT0iIi5jb25jYXQoa2UsIi4uLiIpLmNvbmNhdChUZSk7eXQu''@;'; put 'put ''bGVuZ3RoPjI3Oyl5dC5wb3AoKTtGPVcodGhpcywxPT09eXQubGVuZ3RoP2FlKHgpLmNhbGwodGhpcywiIi5jb25jYXQoZ3QsIiAiKS5jb25jYXQoeXRbMF0pKTphZSh4KS5jYWxsKHRoaXMsIiIuY29uY2F0KGd0LCJcblxuIikuY29uY2F0KHl0LmpvaW4oIlxuIiksIlxuIikpKX1lbHNle3Zh''@;'; put 'put ''ciBwdD1PKFBlKSxtdD0iIix2dD1FZVtDZV07Im5vdERlZXBFcXVhbCI9PT1DZXx8Im5vdEVxdWFsIj09PUNlPyhwdD0iIi5jb25jYXQoRWVbQ2VdLCJcblxuIikuY29uY2F0KHB0KSkubGVuZ3RoPjEwMjQmJihwdD0iIi5jb25jYXQocHQuc2xpY2UoMCwxMDIxKSwiLi4uIikpOihtdD0iIi5j''@;'; put 'put ''b25jYXQoTyhRZSkpLHB0Lmxlbmd0aD41MTImJihwdD0iIi5jb25jYXQocHQuc2xpY2UoMCw1MDkpLCIuLi4iKSksbXQubGVuZ3RoPjUxMiYmKG10PSIiLmNvbmNhdChtdC5zbGljZSgwLDUwOSksIi4uLiIpKSwiZGVlcEVxdWFsIj09PUNlfHwiZXF1YWwiPT09Q2U/cHQ9IiIuY29uY2F0KHZ0''@;'; put 'put ''LCJcblxuIikuY29uY2F0KHB0LCJcblxuc2hvdWxkIGVxdWFsXG5cbiIpOm10PSIgIi5jb25jYXQoQ2UsIiAiKS5jb25jYXQobXQpKSxGPVcodGhpcyxhZSh4KS5jYWxsKHRoaXMsIiIuY29uY2F0KHB0KS5jb25jYXQobXQpKSl9cmV0dXJuIEVycm9yLnN0YWNrVHJhY2VMaW1pdD0kZSxGLmdl''@;'; put 'put ''bmVyYXRlZE1lc3NhZ2U9IXllLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOKEYpLCJuYW1lIix7dmFsdWU6IkFzc2VydGlvbkVycm9yIFtFUlJfQVNTRVJUSU9OXSIsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxGLmNvZGU9IkVSUl9BU1NFUlRJT04iLEYuYWN0''@;'; put 'put ''dWFsPVBlLEYuZXhwZWN0ZWQ9UWUsRi5vcGVyYXRvcj1DZSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoTihGKSxEZSksRi5uYW1lPSJBc3NlcnRpb25FcnJvciIsVyhGKX12YXIgUCxWO3JldHVybiBmdW5jdGlvbihTLEYpe2lmKCJmdW5jdGlvbiIh''@;'; put 'put ''PXR5cGVvZiBGJiZudWxsIT09Ril0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO1MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRiYmRi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpTLHdyaXRhYmxl''@;'; put 'put ''OiEwLGNvbmZpZ3VyYWJsZTohMH19KSxGJiZzZShTLEYpfSh4LHRlKSxQPXgsVj1be2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIiIuY29uY2F0KHRoaXMubmFtZSwiIFsiKS5jb25jYXQodGhpcy5jb2RlLCJdOiAiKS5jb25jYXQodGhpcy5tZXNzYWdlKX19LHtrZXk6''@;'; put 'put ''ZGUuY3VzdG9tLHZhbHVlOmZ1bmN0aW9uKFMsRil7cmV0dXJuIGRlKHRoaXMsZnVuY3Rpb24oeWUpe2Zvcih2YXIgQ2U9MTtDZTxhcmd1bWVudHMubGVuZ3RoO0NlKyspe3ZhciBEZT1udWxsIT1hcmd1bWVudHNbQ2VdP2FyZ3VtZW50c1tDZV06e30sUGU9T2JqZWN0LmtleXMoRGUpOyJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYoUGU9UGUuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRGUpLmZpbHRlcihmdW5jdGlvbihRZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRGUsUWUpLmVudW1lcmFi''@;'; put 'put ''bGV9KSkpLFBlLmZvckVhY2goZnVuY3Rpb24oUWUpe2xlKHllLFFlLERlW1FlXSl9KX1yZXR1cm4geWV9KHt9LEYse2N1c3RvbUluc3BlY3Q6ITEsZGVwdGg6MH0pKX19XSxWJiZZKFAucHJvdG90eXBlLFYpLHh9KGVlKEVycm9yKSk7VS5leHBvcnRzPW5lfSwyMTM2OihVLFEsWik9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7ZnVuY3Rpb24gaWUoYWUpe3JldHVybihpZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihmZSl7cmV0dXJuIHR5cGVvZiBmZX06ZnVuY3Rpb24oZmUpe3JldHVybiBmZSYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN5bWJvbCYmZmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZmV9KShhZSl9ZnVuY3Rpb24gWShhZSl7cmV0dXJuKFk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihmZSl7''@;'; put 'put ''cmV0dXJuIGZlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGZlKX0pKGFlKX1mdW5jdGlvbiBXKGFlLGZlKXtyZXR1cm4oVz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGRlLHZlKXtyZXR1cm4gZGUuX19wcm90b19fPXZlLGRlfSkoYWUsZmUpfXZhciBOLGVlLHE9''@;'; put 'put ''e307ZnVuY3Rpb24gSihhZSxmZSxkZSl7ZGV8fChkZT1FcnJvcik7dmFyIHZlPWZ1bmN0aW9uKEFlKXtmdW5jdGlvbiBrZShTZSxJZSxUZSl7dmFyIEVlLGhlLE8sejtyZXR1cm4gZnVuY3Rpb24oaGUsTyl7aWYoIShoZSBpbnN0YW5jZW9mIE8pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGtlKSwoRWU9ZnVuY3Rpb24gbGUoYWUsZmUpe3JldHVybiFmZXx8Im9iamVjdCIhPT1pZShmZSkmJiJmdW5jdGlvbiIhPXR5cGVvZiBmZT9mdW5jdGlvbihkZSl7aWYodm9pZCAwPT09ZGUpdGhyb3cgbmV3IFJlZmVyZW5jZUVy''@;'; put 'put ''cm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZGV9KGFlKTpmZX0odGhpcyxZKGtlKS5jYWxsKHRoaXMsKGhlPVNlLE89SWUsej1UZSwic3RyaW5nIj09dHlwZW9mIGZlP2ZlOmZlKGhlLE8seikpKSkpLmNvZGU9''@;'; put 'put ''YWUsRWV9cmV0dXJuIGZ1bmN0aW9uKFNlLEllKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgSWUmJm51bGwhPT1JZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO1NlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl''@;'; put 'put ''KEllJiZJZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpTZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksSWUmJlcoU2UsSWUpfShrZSxBZSksa2V9KGRlKTtxW2FlXT12ZX1mdW5jdGlvbiBzZShhZSxmZSl7aWYoQXJyYXkuaXNBcnJheShhZSkpe3ZhciBkZT1hZS5sZW5n''@;'; put 'put ''dGg7cmV0dXJuIGFlPWFlLm1hcChmdW5jdGlvbih2ZSl7cmV0dXJuIFN0cmluZyh2ZSl9KSxkZT4yPyJvbmUgb2YgIi5jb25jYXQoZmUsIiAiKS5jb25jYXQoYWUuc2xpY2UoMCxkZS0xKS5qb2luKCIsICIpLCIsIG9yICIpK2FlW2RlLTFdOjI9PT1kZT8ib25lIG9mICIuY29uY2F0KGZlLCIg''@;'; put 'put ''IikuY29uY2F0KGFlWzBdLCIgb3IgIikuY29uY2F0KGFlWzFdKToib2YgIi5jb25jYXQoZmUsIiAiKS5jb25jYXQoYWVbMF0pfXJldHVybiJvZiAiLmNvbmNhdChmZSwiICIpLmNvbmNhdChTdHJpbmcoYWUpKX1KKCJFUlJfQU1CSUdVT1VTX0FSR1VNRU5UIiwnVGhlICIlcyIgYXJndW1lbnQg''@;'; put 'put ''aXMgYW1iaWd1b3VzLiAlcycsVHlwZUVycm9yKSxKKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oYWUsZmUsZGUpe3ZhciB2ZSxTZSxUZSxoZTtpZih2b2lkIDA9PT1OJiYoTj1aKDkyODIpKSxOKCJzdHJpbmciPT10eXBlb2YgYWUsIiduYW1lJyBtdXN0IGJlIGEgc3RyaW5nIiks''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBmZSYmIm5vdCAiPT09ZmUuc3Vic3RyKDAsIm5vdCAiLmxlbmd0aCk/KHZlPSJtdXN0IG5vdCBiZSIsZmU9ZmUucmVwbGFjZSgvXm5vdCAvLCIiKSk6dmU9Im11c3QgYmUiLFRlPWFlLCh2b2lkIDA9PT1oZXx8aGU+VGUubGVuZ3RoKSYmKGhlPVRlLmxlbmd0aCks''@;'; put 'put ''IiBhcmd1bWVudCI9PT1UZS5zdWJzdHJpbmcoaGUtIiBhcmd1bWVudCIubGVuZ3RoLGhlKSlTZT0iVGhlICIuY29uY2F0KGFlLCIgIikuY29uY2F0KHZlLCIgIikuY29uY2F0KHNlKGZlLCJ0eXBlIikpO2Vsc2V7dmFyIEllPWZ1bmN0aW9uKFRlLEVlLGhlKXtyZXR1cm4ibnVtYmVyIiE9dHlw''@;'; put 'put ''ZW9mIGhlJiYoaGU9MCksIShoZSsiLiIubGVuZ3RoPlRlLmxlbmd0aCkmJi0xIT09VGUuaW5kZXhPZigiLiIsaGUpfShhZSk/InByb3BlcnR5IjoiYXJndW1lbnQiO1NlPSdUaGUgIicuY29uY2F0KGFlLCciICcpLmNvbmNhdChJZSwiICIpLmNvbmNhdCh2ZSwiICIpLmNvbmNhdChzZShmZSwi''@;'; put 'put ''dHlwZSIpKX1yZXR1cm4gU2UrIi4gUmVjZWl2ZWQgdHlwZSAiLmNvbmNhdChpZShkZSkpfSxUeXBlRXJyb3IpLEooIkVSUl9JTlZBTElEX0FSR19WQUxVRSIsZnVuY3Rpb24oYWUsZmUpe3ZhciBkZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNb''@;'; put 'put ''Ml06ImlzIGludmFsaWQiO3ZvaWQgMD09PWVlJiYoZWU9Wig5NTM5KSk7dmFyIHZlPWVlLmluc3BlY3QoZmUpO3JldHVybiB2ZS5sZW5ndGg+MTI4JiYodmU9IiIuY29uY2F0KHZlLnNsaWNlKDAsMTI4KSwiLi4uIikpLCJUaGUgYXJndW1lbnQgJyIuY29uY2F0KGFlLCInICIpLmNvbmNhdChk''@;'; put 'put ''ZSwiLiBSZWNlaXZlZCAiKS5jb25jYXQodmUpfSxUeXBlRXJyb3IsUmFuZ2VFcnJvciksSigiRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFIixmdW5jdGlvbihhZSxmZSxkZSl7dmFyIHZlO3JldHVybiB2ZT1kZSYmZGUuY29uc3RydWN0b3ImJmRlLmNvbnN0cnVjdG9yLm5hbWU/Imluc3RhbmNl''@;'; put 'put ''IG9mICIuY29uY2F0KGRlLmNvbnN0cnVjdG9yLm5hbWUpOiJ0eXBlICIuY29uY2F0KGllKGRlKSksIkV4cGVjdGVkICIuY29uY2F0KGFlLCcgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgIicpLmNvbmNhdChmZSwnIicpKyIgZnVuY3Rpb24gYnV0IGdvdCAiLmNvbmNhdCh2ZSwiLiIpfSxUeXBl''@;'; put 'put ''RXJyb3IpLEooIkVSUl9NSVNTSU5HX0FSR1MiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhZT1hcmd1bWVudHMubGVuZ3RoLGZlPW5ldyBBcnJheShhZSksZGU9MDtkZTxhZTtkZSsrKWZlW2RlXT1hcmd1bWVudHNbZGVdO3ZvaWQgMD09PU4mJihOPVooOTI4MikpLE4oZmUubGVuZ3RoPjAsIkF0IGxl''@;'; put 'put ''YXN0IG9uZSBhcmcgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIik7dmFyIHZlPSJUaGUgIixBZT1mZS5sZW5ndGg7c3dpdGNoKGZlPWZlLm1hcChmdW5jdGlvbihrZSl7cmV0dXJuJyInLmNvbmNhdChrZSwnIicpfSksQWUpe2Nhc2UgMTp2ZSs9IiIuY29uY2F0KGZlWzBdLCIgYXJndW1lbnQiKTti''@;'; put 'put ''cmVhaztjYXNlIDI6dmUrPSIiLmNvbmNhdChmZVswXSwiIGFuZCAiKS5jb25jYXQoZmVbMV0sIiBhcmd1bWVudHMiKTticmVhaztkZWZhdWx0OnZlKz1mZS5zbGljZSgwLEFlLTEpLmpvaW4oIiwgIiksdmUrPSIsIGFuZCAiLmNvbmNhdChmZVtBZS0xXSwiIGFyZ3VtZW50cyIpfXJldHVybiIi''@;'; put 'put ''LmNvbmNhdCh2ZSwiIG11c3QgYmUgc3BlY2lmaWVkIil9LFR5cGVFcnJvciksVS5leHBvcnRzLmNvZGVzPXF9LDkxNTg6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpZSh2dCxmdCl7cmV0dXJuIGZ1bmN0aW9uKEZ0KXtpZihBcnJheS5pc0FycmF5KEZ0KSlyZXR1cm4gRnR9KHZ0''@;'; put 'put ''KXx8ZnVuY3Rpb24oRnQsb24pe3ZhciBfdD1bXSxudD0hMCxxZT0hMSxvdD12b2lkIDA7dHJ5e2Zvcih2YXIgUnQsQ3Q9RnRbU3ltYm9sLml0ZXJhdG9yXSgpOyEobnQ9KFJ0PUN0Lm5leHQoKSkuZG9uZSkmJihfdC5wdXNoKFJ0LnZhbHVlKSwhb258fF90Lmxlbmd0aCE9PW9uKTtudD0hMCk7''@;'; put 'put ''fWNhdGNoKGN0KXtxZT0hMCxvdD1jdH1maW5hbGx5e3RyeXtudHx8bnVsbD09Q3QucmV0dXJufHxDdC5yZXR1cm4oKX1maW5hbGx5e2lmKHFlKXRocm93IG90fX1yZXR1cm4gX3R9KHZ0LGZ0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVz''@;'; put 'put ''dHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gbGUodnQpe3JldHVybihsZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihmdCl7cmV0dXJuIHR5cGVvZiBmdH06ZnVuY3Rpb24oZnQp''@;'; put 'put ''e3JldHVybiBmdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJmZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZnR9KSh2dCl9dmFyIFk9dm9pZCAwIT09L2EvZy5mbGFncyxXPWZ1bmN0aW9uKHZ0KXt2YXIgZnQ9W107cmV0''@;'; put 'put ''dXJuIHZ0LmZvckVhY2goZnVuY3Rpb24oRnQpe3JldHVybiBmdC5wdXNoKEZ0KX0pLGZ0fSxOPWZ1bmN0aW9uKHZ0KXt2YXIgZnQ9W107cmV0dXJuIHZ0LmZvckVhY2goZnVuY3Rpb24oRnQsb24pe3JldHVybiBmdC5wdXNoKFtvbixGdF0pfSksZnR9LGVlPU9iamVjdC5pcz9PYmplY3QuaXM6''@;'; put 'put ''Wig2MDkpLHE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKCl7cmV0dXJuW119LEo9TnVtYmVyLmlzTmFOP051bWJlci5pc05hTjpaKDM2MCk7ZnVuY3Rpb24gc2UodnQpe3JldHVybiB2dC5jYWxsLmJpbmQodnQpfXZh''@;'; put 'put ''ciBhZT1zZShPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSxmZT1zZShPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlKSxkZT1zZShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSx2ZT1aKDk1MzkpLnR5cGVzLEFlPXZlLmlzQW55QXJyYXlCdWZmZXIsa2U9dmUu''@;'; put 'put ''aXNBcnJheUJ1ZmZlclZpZXcsU2U9dmUuaXNEYXRlLEllPXZlLmlzTWFwLFRlPXZlLmlzUmVnRXhwLEVlPXZlLmlzU2V0LGhlPXZlLmlzTmF0aXZlRXJyb3IsTz12ZS5pc0JveGVkUHJpbWl0aXZlLHo9dmUuaXNOdW1iZXJPYmplY3QsbmU9dmUuaXNTdHJpbmdPYmplY3QsdGU9dmUuaXNCb29s''@;'; put 'put ''ZWFuT2JqZWN0LHg9dmUuaXNCaWdJbnRPYmplY3QsUD12ZS5pc1N5bWJvbE9iamVjdCxWPXZlLmlzRmxvYXQzMkFycmF5LFQ9dmUuaXNGbG9hdDY0QXJyYXk7ZnVuY3Rpb24gUyh2dCl7aWYoMD09PXZ0Lmxlbmd0aHx8dnQubGVuZ3RoPjEwKXJldHVybiEwO2Zvcih2YXIgZnQ9MDtmdDx2dC5s''@;'; put 'put ''ZW5ndGg7ZnQrKyl7dmFyIEZ0PXZ0LmNoYXJDb2RlQXQoZnQpO2lmKEZ0PDQ4fHxGdD41NylyZXR1cm4hMH1yZXR1cm4gMTA9PT12dC5sZW5ndGgmJnZ0Pj1NYXRoLnBvdygyLDMyKX1mdW5jdGlvbiBGKHZ0KXtyZXR1cm4gT2JqZWN0LmtleXModnQpLmZpbHRlcihTKS5jb25jYXQocSh2dCku''@;'; put 'put ''ZmlsdGVyKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuYmluZCh2dCkpKX1mdW5jdGlvbiB5ZSh2dCxmdCl7aWYodnQ9PT1mdClyZXR1cm4gMDtmb3IodmFyIEZ0PXZ0Lmxlbmd0aCxvbj1mdC5sZW5ndGgsX3Q9MCxudD1NYXRoLm1pbihGdCxvbik7X3Q8bnQ7KytfdClp''@;'; put 'put ''Zih2dFtfdF0hPT1mdFtfdF0pe0Z0PXZ0W190XSxvbj1mdFtfdF07YnJlYWt9cmV0dXJuIEZ0PG9uPy0xOm9uPEZ0PzE6MH1mdW5jdGlvbiBDZSh2dCxmdCxGdCxvbil7aWYodnQ9PT1mdClyZXR1cm4gMCE9PXZ0fHwhRnR8fGVlKHZ0LGZ0KTtpZihGdCl7aWYoIm9iamVjdCIhPT1sZSh2dCkp''@;'; put 'put ''cmV0dXJuIm51bWJlciI9PXR5cGVvZiB2dCYmSih2dCkmJkooZnQpO2lmKCJvYmplY3QiIT09bGUoZnQpfHxudWxsPT09dnR8fG51bGw9PT1mdHx8T2JqZWN0LmdldFByb3RvdHlwZU9mKHZ0KSE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihmdCkpcmV0dXJuITF9ZWxzZXtpZihudWxsPT09dnR8''@;'; put 'put ''fCJvYmplY3QiIT09bGUodnQpKXJldHVybihudWxsPT09ZnR8fCJvYmplY3QiIT09bGUoZnQpKSYmdnQ9PWZ0O2lmKG51bGw9PT1mdHx8Im9iamVjdCIhPT1sZShmdCkpcmV0dXJuITF9dmFyIF90LG50LHFlLG90LFllLEF0LFJ0PWRlKHZ0KTtpZihSdCE9PWRlKGZ0KSlyZXR1cm4hMTtpZihB''@;'; put 'put ''cnJheS5pc0FycmF5KHZ0KSl7aWYodnQubGVuZ3RoIT09ZnQubGVuZ3RoKXJldHVybiExO3ZhciBDdD1GKHZ0KSxjdD1GKGZ0KTtyZXR1cm4gQ3QubGVuZ3RoPT09Y3QubGVuZ3RoJiZQZSh2dCxmdCxGdCxvbiwxLEN0KX1pZigiW29iamVjdCBPYmplY3RdIj09PVJ0JiYoIUllKHZ0KSYmSWUo''@;'; put 'put ''ZnQpfHwhRWUodnQpJiZFZShmdCkpKXJldHVybiExO2lmKFNlKHZ0KSl7aWYoIVNlKGZ0KXx8RGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKHZ0KSE9PURhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbChmdCkpcmV0dXJuITF9ZWxzZSBpZihUZSh2dCkpe2lmKCFUZShmdCl8fChxZT12dCxv''@;'; put 'put ''dD1mdCwhKFk/cWUuc291cmNlPT09b3Quc291cmNlJiZxZS5mbGFncz09PW90LmZsYWdzOlJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChxZSk9PT1SZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob3QpKSkpcmV0dXJuITF9ZWxzZSBpZihoZSh2dCl8fHZ0IGluc3RhbmNlb2Yg''@;'; put 'put ''RXJyb3Ipe2lmKHZ0Lm1lc3NhZ2UhPT1mdC5tZXNzYWdlfHx2dC5uYW1lIT09ZnQubmFtZSlyZXR1cm4hMX1lbHNle2lmKGtlKHZ0KSl7aWYoRnR8fCFWKHZ0KSYmIVQodnQpKXtpZigoWWU9dnQpLmJ5dGVMZW5ndGghPT0oQXQ9ZnQpLmJ5dGVMZW5ndGh8fDAhPT15ZShuZXcgVWludDhBcnJh''@;'; put 'put ''eShZZS5idWZmZXIsWWUuYnl0ZU9mZnNldCxZZS5ieXRlTGVuZ3RoKSxuZXcgVWludDhBcnJheShBdC5idWZmZXIsQXQuYnl0ZU9mZnNldCxBdC5ieXRlTGVuZ3RoKSkpcmV0dXJuITF9ZWxzZSBpZighZnVuY3Rpb24oWWUsQXQpe2lmKFllLmJ5dGVMZW5ndGghPT1BdC5ieXRlTGVuZ3RoKXJl''@;'; put 'put ''dHVybiExO2Zvcih2YXIganQ9MDtqdDxZZS5ieXRlTGVuZ3RoO2p0KyspaWYoWWVbanRdIT09QXRbanRdKXJldHVybiExO3JldHVybiEwfSh2dCxmdCkpcmV0dXJuITE7dmFyIE50PUYodnQpLHplPUYoZnQpO3JldHVybiBOdC5sZW5ndGg9PT16ZS5sZW5ndGgmJlBlKHZ0LGZ0LEZ0LG9uLDAs''@;'; put 'put ''TnQpfWlmKEVlKHZ0KSlyZXR1cm4hKCFFZShmdCl8fHZ0LnNpemUhPT1mdC5zaXplKSYmUGUodnQsZnQsRnQsb24sMik7aWYoSWUodnQpKXJldHVybiEoIUllKGZ0KXx8dnQuc2l6ZSE9PWZ0LnNpemUpJiZQZSh2dCxmdCxGdCxvbiwzKTtpZihBZSh2dCkpe2lmKChfdD12dCkuYnl0ZUxlbmd0''@;'; put 'put ''aCE9PShudD1mdCkuYnl0ZUxlbmd0aHx8MCE9PXllKG5ldyBVaW50OEFycmF5KF90KSxuZXcgVWludDhBcnJheShudCkpKXJldHVybiExfWVsc2UgaWYoTyh2dCkmJiFmdW5jdGlvbihZZSxBdCl7cmV0dXJuIHooWWUpP3ooQXQpJiZlZShOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbChZ''@;'; put 'put ''ZSksTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoQXQpKTpuZShZZSk/bmUoQXQpJiZTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YuY2FsbChZZSk9PT1TdHJpbmcucHJvdG90eXBlLnZhbHVlT2YuY2FsbChBdCk6dGUoWWUpP3RlKEF0KSYmQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5j''@;'; put 'put ''YWxsKFllKT09PUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChBdCk6eChZZSk/eChBdCkmJkJpZ0ludC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFllKT09PUJpZ0ludC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKEF0KTpQKEF0KSYmU3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwo''@;'; put 'put ''WWUpPT09U3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoQXQpfSh2dCxmdCkpcmV0dXJuITF9cmV0dXJuIFBlKHZ0LGZ0LEZ0LG9uLDApfWZ1bmN0aW9uIERlKHZ0LGZ0KXtyZXR1cm4gZnQuZmlsdGVyKGZ1bmN0aW9uKEZ0KXtyZXR1cm4gZmUodnQsRnQpfSl9ZnVuY3Rpb24gUGUodnQs''@;'; put 'put ''ZnQsRnQsb24sX3QsbnQpe2lmKDU9PT1hcmd1bWVudHMubGVuZ3RoKXtudD1PYmplY3Qua2V5cyh2dCk7dmFyIHFlPU9iamVjdC5rZXlzKGZ0KTtpZihudC5sZW5ndGghPT1xZS5sZW5ndGgpcmV0dXJuITF9Zm9yKHZhciBvdD0wO290PG50Lmxlbmd0aDtvdCsrKWlmKCFhZShmdCxudFtvdF0p''@;'; put 'put ''KXJldHVybiExO2lmKEZ0JiY1PT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIFJ0PXEodnQpO2lmKDAhPT1SdC5sZW5ndGgpe3ZhciBDdD0wO2ZvcihvdD0wO290PFJ0Lmxlbmd0aDtvdCsrKXt2YXIgY3Q9UnRbb3RdO2lmKGZlKHZ0LGN0KSl7aWYoIWZlKGZ0LGN0KSlyZXR1cm4hMTtudC5wdXNo''@;'; put 'put ''KGN0KSxDdCsrfWVsc2UgaWYoZmUoZnQsY3QpKXJldHVybiExfXZhciBOdD1xKGZ0KTtpZihSdC5sZW5ndGghPT1OdC5sZW5ndGgmJkRlKGZ0LE50KS5sZW5ndGghPT1DdClyZXR1cm4hMX1lbHNle3ZhciB6ZT1xKGZ0KTtpZigwIT09emUubGVuZ3RoJiYwIT09RGUoZnQsemUpLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4hMX19aWYoMD09PW50Lmxlbmd0aCYmKDA9PT1fdHx8MT09PV90JiYwPT09dnQubGVuZ3RofHwwPT09dnQuc2l6ZSkpcmV0dXJuITA7aWYodm9pZCAwPT09b24pb249e3ZhbDE6bmV3IE1hcCx2YWwyOm5ldyBNYXAscG9zaXRpb246MH07ZWxzZXt2YXIgWWU9b24udmFsMS5nZXQodnQp''@;'; put 'put ''O2lmKHZvaWQgMCE9PVllKXt2YXIgQXQ9b24udmFsMi5nZXQoZnQpO2lmKHZvaWQgMCE9PUF0KXJldHVybiBZZT09PUF0fW9uLnBvc2l0aW9uKyt9b24udmFsMS5zZXQodnQsb24ucG9zaXRpb24pLG9uLnZhbDIuc2V0KGZ0LG9uLnBvc2l0aW9uKTt2YXIganQ9bXQodnQsZnQsRnQsbnQsb24s''@;'; put 'put ''X3QpO3JldHVybiBvbi52YWwxLmRlbGV0ZSh2dCksb24udmFsMi5kZWxldGUoZnQpLGp0fWZ1bmN0aW9uIFFlKHZ0LGZ0LEZ0LG9uKXtmb3IodmFyIF90PVcodnQpLG50PTA7bnQ8X3QubGVuZ3RoO250Kyspe3ZhciBxZT1fdFtudF07aWYoQ2UoZnQscWUsRnQsb24pKXJldHVybiB2dC5kZWxl''@;'; put 'put ''dGUocWUpLCEwfXJldHVybiExfWZ1bmN0aW9uICRlKHZ0KXtzd2l0Y2gobGUodnQpKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIG51bGw7Y2FzZSJvYmplY3QiOnJldHVybjtjYXNlInN5bWJvbCI6cmV0dXJuITE7Y2FzZSJzdHJpbmciOnZ0PSt2dDtjYXNlIm51bWJlciI6aWYoSih2dCkpcmV0''@;'; put 'put ''dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gZ3QodnQsZnQsRnQpe3ZhciBvbj0kZShGdCk7cmV0dXJuIG51bGwhPW9uP29uOmZ0LmhhcyhvbikmJiF2dC5oYXMob24pfWZ1bmN0aW9uIHl0KHZ0LGZ0LEZ0LG9uLF90KXt2YXIgbnQ9JGUoRnQpO2lmKG51bGwhPW50KXJldHVybiBudDt2YXIgcWU9''@;'; put 'put ''ZnQuZ2V0KG50KTtyZXR1cm4hKHZvaWQgMD09PXFlJiYhZnQuaGFzKG50KXx8IUNlKG9uLHFlLCExLF90KSkmJiF2dC5oYXMobnQpJiZDZShvbixxZSwhMSxfdCl9ZnVuY3Rpb24gcHQodnQsZnQsRnQsb24sX3QsbnQpe2Zvcih2YXIgcWU9Vyh2dCksb3Q9MDtvdDxxZS5sZW5ndGg7b3QrKyl7''@;'; put 'put ''dmFyIFJ0PXFlW290XTtpZihDZShGdCxSdCxfdCxudCkmJkNlKG9uLGZ0LmdldChSdCksX3QsbnQpKXJldHVybiB2dC5kZWxldGUoUnQpLCEwfXJldHVybiExfWZ1bmN0aW9uIG10KHZ0LGZ0LEZ0LG9uLF90LG50KXt2YXIgcWU9MDtpZigyPT09bnQpe2lmKCFmdW5jdGlvbihjdCxOdCx6ZSxZ''@;'; put 'put ''ZSl7Zm9yKHZhciBBdD1udWxsLGp0PVcoY3QpLEp0PTA7SnQ8anQubGVuZ3RoO0p0Kyspe3ZhciBtbj1qdFtKdF07aWYoIm9iamVjdCI9PT1sZShtbikmJm51bGwhPT1tbiludWxsPT09QXQmJihBdD1uZXcgU2V0KSxBdC5hZGQobW4pO2Vsc2UgaWYoIU50Lmhhcyhtbikpe2lmKHplfHwhZ3Qo''@;'; put 'put ''Y3QsTnQsbW4pKXJldHVybiExO251bGw9PT1BdCYmKEF0PW5ldyBTZXQpLEF0LmFkZChtbil9fWlmKG51bGwhPT1BdCl7Zm9yKHZhciBwbj1XKE50KSxibj0wO2JuPHBuLmxlbmd0aDtibisrKXt2YXIgbG49cG5bYm5dO2lmKCJvYmplY3QiPT09bGUobG4pJiZudWxsIT09bG4pe2lmKCFRZShB''@;'; put 'put ''dCxsbix6ZSxZZSkpcmV0dXJuITF9ZWxzZSBpZighemUmJiFjdC5oYXMobG4pJiYhUWUoQXQsbG4semUsWWUpKXJldHVybiExfXJldHVybiAwPT09QXQuc2l6ZX1yZXR1cm4hMH0odnQsZnQsRnQsX3QpKXJldHVybiExfWVsc2UgaWYoMz09PW50KXtpZighZnVuY3Rpb24oY3QsTnQsemUsWWUp''@;'; put 'put ''e2Zvcih2YXIgQXQ9bnVsbCxqdD1OKGN0KSxKdD0wO0p0PGp0Lmxlbmd0aDtKdCsrKXt2YXIgbW49aWUoanRbSnRdLDIpLHBuPW1uWzBdLGJuPW1uWzFdO2lmKCJvYmplY3QiPT09bGUocG4pJiZudWxsIT09cG4pbnVsbD09PUF0JiYoQXQ9bmV3IFNldCksQXQuYWRkKHBuKTtlbHNle3ZhciBs''@;'; put 'put ''bj1OdC5nZXQocG4pO2lmKHZvaWQgMD09PWxuJiYhTnQuaGFzKHBuKXx8IUNlKGJuLGxuLHplLFllKSl7aWYoemV8fCF5dChjdCxOdCxwbixibixZZSkpcmV0dXJuITE7bnVsbD09PUF0JiYoQXQ9bmV3IFNldCksQXQuYWRkKHBuKX19fWlmKG51bGwhPT1BdCl7Zm9yKHZhciBObj1OKE50KSxr''@;'; put 'put ''bj0wO2tuPE5uLmxlbmd0aDtrbisrKXt2YXIgZXI9aWUoTm5ba25dLDIpLHVyPShwbj1lclswXSxlclsxXSk7aWYoIm9iamVjdCI9PT1sZShwbikmJm51bGwhPT1wbil7aWYoIXB0KEF0LGN0LHBuLHVyLHplLFllKSlyZXR1cm4hMX1lbHNlIGlmKCEoemV8fGN0LmhhcyhwbikmJkNlKGN0Lmdl''@;'; put 'put ''dChwbiksdXIsITEsWWUpfHxwdChBdCxjdCxwbix1ciwhMSxZZSkpKXJldHVybiExfXJldHVybiAwPT09QXQuc2l6ZX1yZXR1cm4hMH0odnQsZnQsRnQsX3QpKXJldHVybiExfWVsc2UgaWYoMT09PW50KWZvcig7cWU8dnQubGVuZ3RoO3FlKyspe2lmKCFhZSh2dCxxZSkpe2lmKGFlKGZ0LHFl''@;'; put 'put ''KSlyZXR1cm4hMTtmb3IodmFyIG90PU9iamVjdC5rZXlzKHZ0KTtxZTxvdC5sZW5ndGg7cWUrKyl7dmFyIFJ0PW90W3FlXTtpZighYWUoZnQsUnQpfHwhQ2UodnRbUnRdLGZ0W1J0XSxGdCxfdCkpcmV0dXJuITF9cmV0dXJuIG90Lmxlbmd0aD09PU9iamVjdC5rZXlzKGZ0KS5sZW5ndGh9aWYo''@;'; put 'put ''IWFlKGZ0LHFlKXx8IUNlKHZ0W3FlXSxmdFtxZV0sRnQsX3QpKXJldHVybiExfWZvcihxZT0wO3FlPG9uLmxlbmd0aDtxZSsrKXt2YXIgQ3Q9b25bcWVdO2lmKCFDZSh2dFtDdF0sZnRbQ3RdLEZ0LF90KSlyZXR1cm4hMX1yZXR1cm4hMH1VLmV4cG9ydHM9e2lzRGVlcEVxdWFsOmZ1bmN0aW9u''@;'; put 'put ''KHZ0LGZ0KXtyZXR1cm4gQ2UodnQsZnQsITEpfSxpc0RlZXBTdHJpY3RFcXVhbDpmdW5jdGlvbih2dCxmdCl7cmV0dXJuIENlKHZ0LGZ0LCEwKX19fSw4MjI0OlU9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPWZ1bmN0aW9uKFEpe3JldHVybiBRfX0sOTY2OTooVSxRLFopPT57VS5leHBvcnRz''@;'; put 'put ''PVooMTYwOSl9LDU0NDg6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0ODY3KSxsZT1aKDYwMjYpLFk9Wig0MzcyKSxXPVooNTMyNyksTj1aKDQwOTcpLGVlPVooNDEwOSkscT1aKDc5ODUpLEo9Wig1MDYxKSxzZT1aKDU2NTUpLGFlPVooNTI2Myk7VS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KGZlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZGUsdmUpe3ZhciBBZSxrZT1mZS5kYXRhLFNlPWZlLmhlYWRlcnMsSWU9ZmUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIFRlKCl7ZmUuY2FuY2VsVG9rZW4mJmZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKEFlKSxmZS5zaWduYWwmJmZl''@;'; put 'put ''LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsQWUpfWllLmlzRm9ybURhdGEoa2UpJiZkZWxldGUgU2VbIkNvbnRlbnQtVHlwZSJdO3ZhciBFZT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZmUuYXV0aCl7dmFyIGhlPWZlLmF1dGgudXNlcm5hbWV8fCIiLE89ZmUuYXV0aC5wYXNz''@;'; put 'put ''d29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZmUuYXV0aC5wYXNzd29yZCkpOiIiO1NlLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShoZSsiOiIrTyl9dmFyIHo9TihmZS5iYXNlVVJMLGZlLnVybCk7ZnVuY3Rpb24gbmUoKXtpZihFZSl7dmFyIHg9ImdldEFsbFJlc3BvbnNl''@;'; put 'put ''SGVhZGVycyJpbiBFZT9lZShFZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbDtsZShmdW5jdGlvbihWKXtkZShWKSxUZSgpfSxmdW5jdGlvbihWKXt2ZShWKSxUZSgpfSx7ZGF0YTpJZSYmInRleHQiIT09SWUmJiJqc29uIiE9PUllP0VlLnJlc3BvbnNlOkVlLnJlc3BvbnNlVGV4dCxz''@;'; put 'put ''dGF0dXM6RWUuc3RhdHVzLHN0YXR1c1RleHQ6RWUuc3RhdHVzVGV4dCxoZWFkZXJzOngsY29uZmlnOmZlLHJlcXVlc3Q6RWV9KSxFZT1udWxsfX1pZihFZS5vcGVuKGZlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLFcoeixmZS5wYXJhbXMsZmUucGFyYW1zU2VyaWFsaXplciksITApLEVlLnRpbWVv''@;'; put 'put ''dXQ9ZmUudGltZW91dCwib25sb2FkZW5kImluIEVlP0VlLm9ubG9hZGVuZD1uZTpFZS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtFZSYmND09PUVlLnJlYWR5U3RhdGUmJigwIT09RWUuc3RhdHVzfHxFZS5yZXNwb25zZVVSTCYmMD09PUVlLnJlc3BvbnNlVVJMLmluZGV4T2YoImZp''@;'; put 'put ''bGU6IikpJiZzZXRUaW1lb3V0KG5lKX0sRWUub25hYm9ydD1mdW5jdGlvbigpe0VlJiYodmUoSigiUmVxdWVzdCBhYm9ydGVkIixmZSwiRUNPTk5BQk9SVEVEIixFZSkpLEVlPW51bGwpfSxFZS5vbmVycm9yPWZ1bmN0aW9uKCl7dmUoSigiTmV0d29yayBFcnJvciIsZmUsbnVsbCxFZSkpLEVl''@;'; put 'put ''PW51bGx9LEVlLm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB4PWZlLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitmZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiO2ZlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih4PWZlLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHZlKEooeCxm''@;'; put 'put ''ZSwoZmUudHJhbnNpdGlvbmFsfHxzZS50cmFuc2l0aW9uYWwpLmNsYXJpZnlUaW1lb3V0RXJyb3I/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsRWUpKSxFZT1udWxsfSxpZS5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgdGU9KGZlLndpdGhDcmVkZW50aWFsc3x8cSh6KSkmJmZlLnhz''@;'; put 'put ''cmZDb29raWVOYW1lP1kucmVhZChmZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3RlJiYoU2VbZmUueHNyZkhlYWRlck5hbWVdPXRlKX0ic2V0UmVxdWVzdEhlYWRlciJpbiBFZSYmaWUuZm9yRWFjaChTZSxmdW5jdGlvbih4LFApe3ZvaWQgMD09PWtlJiYiY29udGVudC10eXBlIj09PVAudG9M''@;'; put 'put ''b3dlckNhc2UoKT9kZWxldGUgU2VbUF06RWUuc2V0UmVxdWVzdEhlYWRlcihQLHgpfSksaWUuaXNVbmRlZmluZWQoZmUud2l0aENyZWRlbnRpYWxzKXx8KEVlLndpdGhDcmVkZW50aWFscz0hIWZlLndpdGhDcmVkZW50aWFscyksSWUmJiJqc29uIiE9PUllJiYoRWUucmVzcG9uc2VUeXBlPWZl''@;'; put 'put ''LnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIGZlLm9uRG93bmxvYWRQcm9ncmVzcyYmRWUuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGZlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIGZlLm9uVXBsb2FkUHJvZ3Jlc3MmJkVlLnVwbG9hZCYmRWUu''@;'; put 'put ''dXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmZS5vblVwbG9hZFByb2dyZXNzKSwoZmUuY2FuY2VsVG9rZW58fGZlLnNpZ25hbCkmJihBZT1mdW5jdGlvbih4KXtFZSYmKHZlKCF4fHx4JiZ4LnR5cGU/bmV3IGFlKCJjYW5jZWxlZCIpOngpLEVlLmFib3J0KCksRWU9bnVsbCl9''@;'; put 'put ''LGZlLmNhbmNlbFRva2VuJiZmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoQWUpLGZlLnNpZ25hbCYmKGZlLnNpZ25hbC5hYm9ydGVkP0FlKCk6ZmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixBZSkpKSxrZXx8KGtlPW51bGwpLEVlLnNlbmQoa2UpfSl9fSwxNjA5OihVLFEsWik9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIGllPVooNDg2NyksbGU9WigxODQ5KSxZPVooMzIxKSxXPVooNzE4NSksTj1mdW5jdGlvbiBlZShxKXt2YXIgSj1uZXcgWShxKSxzZT1sZShZLnByb3RvdHlwZS5yZXF1ZXN0LEopO3JldHVybiBpZS5leHRlbmQoc2UsWS5wcm90b3R5cGUsSiksaWUuZXh0ZW5k''@;'; put 'put ''KHNlLEopLHNlLmNyZWF0ZT1mdW5jdGlvbihhZSl7cmV0dXJuIGVlKFcocSxhZSkpfSxzZX0oWig1NjU1KSk7Ti5BeGlvcz1ZLE4uQ2FuY2VsPVooNTI2MyksTi5DYW5jZWxUb2tlbj1aKDQ5NzIpLE4uaXNDYW5jZWw9Wig2NTAyKSxOLlZFUlNJT049Wig3Mjg4KS52ZXJzaW9uLE4uYWxsPWZ1''@;'; put 'put ''bmN0aW9uKGVlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZWUpfSxOLnNwcmVhZD1aKDg3MTMpLE4uaXNBeGlvc0Vycm9yPVooNjI2OCksVS5leHBvcnRzPU4sVS5leHBvcnRzLmRlZmF1bHQ9Tn0sNTI2MzpVPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFEoWil7dGhpcy5tZXNzYWdlPVp9US5wcm90''@;'; put 'put ''b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sUS5wcm90b3R5cGUuX19DQU5DRUxfXz0hMCxVLmV4cG9ydHM9UX0sNDk3MjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDUyNjMpO2Z1bmN0''@;'; put 'put ''aW9uIGxlKFkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBZKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgVzt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oZWUpe1c9ZWV9KTt2YXIgTj10aGlzO3RoaXMucHJvbWlzZS50aGVu''@;'; put 'put ''KGZ1bmN0aW9uKGVlKXtpZihOLl9saXN0ZW5lcnMpe3ZhciBxLEo9Ti5fbGlzdGVuZXJzLmxlbmd0aDtmb3IocT0wO3E8SjtxKyspTi5fbGlzdGVuZXJzW3FdKGVlKTtOLl9saXN0ZW5lcnM9bnVsbH19KSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlZSl7dmFyIHEsSj1uZXcgUHJvbWlz''@;'; put 'put ''ZShmdW5jdGlvbihzZSl7Ti5zdWJzY3JpYmUoc2UpLHE9c2V9KS50aGVuKGVlKTtyZXR1cm4gSi5jYW5jZWw9ZnVuY3Rpb24oKXtOLnVuc3Vic2NyaWJlKHEpfSxKfSxZKGZ1bmN0aW9uKGVlKXtOLnJlYXNvbnx8KE4ucmVhc29uPW5ldyBpZShlZSksVyhOLnJlYXNvbikpfSl9bGUucHJvdG90''@;'; put 'put ''eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sbGUucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihZKXt0aGlzLnJlYXNvbj9ZKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2go''@;'; put 'put ''WSk6dGhpcy5fbGlzdGVuZXJzPVtZXX0sbGUucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKFkpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIFc9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoWSk7LTEhPT1XJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKFcsMSl9fSxsZS5zb3VyY2U9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgWTtyZXR1cm57dG9rZW46bmV3IGxlKGZ1bmN0aW9uKFcpe1k9V30pLGNhbmNlbDpZfX0sVS5leHBvcnRzPWxlfSw2NTAyOlU9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPWZ1bmN0aW9uKFEpe3JldHVybiEoIVF8fCFRLl9fQ0FOQ0VMX18pfX0sMzIxOihVLFEsWik9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIGllPVooNDg2NyksbGU9Wig1MzI3KSxZPVooNzgyKSxXPVooMzU3MiksTj1aKDcxODUpLGVlPVooNDg3NSkscT1lZS52YWxpZGF0b3JzO2Z1bmN0aW9uIEooc2Upe3RoaXMuZGVmYXVsdHM9c2UsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IFkscmVzcG9u''@;'; put 'put ''c2U6bmV3IFl9fUoucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oc2UsYWUpeyJzdHJpbmciPT10eXBlb2Ygc2U/KGFlPWFlfHx7fSkudXJsPXNlOmFlPXNlfHx7fSxhZS5tZXRob2Q9KGFlPU4odGhpcy5kZWZhdWx0cyxhZSkpLm1ldGhvZD9hZS5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlz''@;'; put 'put ''LmRlZmF1bHRzLm1ldGhvZD90aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOiJnZXQiO3ZhciBmZT1hZS50cmFuc2l0aW9uYWw7dm9pZCAwIT09ZmUmJmVlLmFzc2VydE9wdGlvbnMoZmUse3NpbGVudEpTT05QYXJzaW5nOnEudHJhbnNpdGlvbmFsKHEuYm9vbGVhbiksZm9yY2Vk''@;'; put 'put ''SlNPTlBhcnNpbmc6cS50cmFuc2l0aW9uYWwocS5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOnEudHJhbnNpdGlvbmFsKHEuYm9vbGVhbil9LCExKTt2YXIgZGU9W10sdmU9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uKGhlKXsiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgaGUucnVuV2hlbiYmITE9PT1oZS5ydW5XaGVuKGFlKXx8KHZlPXZlJiZoZS5zeW5jaHJvbm91cyxkZS51bnNoaWZ0KGhlLmZ1bGZpbGxlZCxoZS5yZWplY3RlZCkpfSk7dmFyIEFlLGtlPVtdO2lmKHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24oaGUp''@;'; put 'put ''e2tlLnB1c2goaGUuZnVsZmlsbGVkLGhlLnJlamVjdGVkKX0pLCF2ZSl7dmFyIFNlPVtXLHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KFNlLGRlKSxTZT1TZS5jb25jYXQoa2UpLEFlPVByb21pc2UucmVzb2x2ZShhZSk7U2UubGVuZ3RoOylBZT1BZS50aGVuKFNl''@;'; put 'put ''LnNoaWZ0KCksU2Uuc2hpZnQoKSk7cmV0dXJuIEFlfWZvcih2YXIgSWU9YWU7ZGUubGVuZ3RoOyl7dmFyIFRlPWRlLnNoaWZ0KCksRWU9ZGUuc2hpZnQoKTt0cnl7SWU9VGUoSWUpfWNhdGNoKGhlKXtFZShoZSk7YnJlYWt9fXRyeXtBZT1XKEllKX1jYXRjaChoZSl7cmV0dXJuIFByb21pc2Uu''@;'; put 'put ''cmVqZWN0KGhlKX1mb3IoO2tlLmxlbmd0aDspQWU9QWUudGhlbihrZS5zaGlmdCgpLGtlLnNoaWZ0KCkpO3JldHVybiBBZX0sSi5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKHNlKXtyZXR1cm4gc2U9Tih0aGlzLmRlZmF1bHRzLHNlKSxsZShzZS51cmwsc2UucGFyYW1zLHNlLnBhcmFtc1Nl''@;'; put 'put ''cmlhbGl6ZXIpLnJlcGxhY2UoL15cPy8sIiIpfSxpZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihzZSl7Si5wcm90b3R5cGVbc2VdPWZ1bmN0aW9uKGFlLGZlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KE4oZmV8fHt9LHttZXRob2Q6c2UsdXJsOmFl''@;'; put 'put ''LGRhdGE6KGZlfHx7fSkuZGF0YX0pKX19KSxpZS5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oc2Upe0oucHJvdG90eXBlW3NlXT1mdW5jdGlvbihhZSxmZSxkZSl7cmV0dXJuIHRoaXMucmVxdWVzdChOKGRlfHx7fSx7bWV0aG9kOnNlLHVybDphZSxkYXRhOmZlfSkp''@;'; put 'put ''fX0pLFUuZXhwb3J0cz1KfSw3ODI6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0ODY3KTtmdW5jdGlvbiBsZSgpe3RoaXMuaGFuZGxlcnM9W119bGUucHJvdG90eXBlLnVzZT1mdW5jdGlvbihZLFcsTil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOlkscmVq''@;'; put 'put ''ZWN0ZWQ6VyxzeW5jaHJvbm91czohIU4mJk4uc3luY2hyb25vdXMscnVuV2hlbjpOP04ucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sbGUucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKFkpe3RoaXMuaGFuZGxlcnNbWV0mJih0aGlzLmhhbmRsZXJzW1ldPW51bGwpfSxs''@;'; put 'put ''ZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihZKXtpZS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oVyl7bnVsbCE9PVcmJlkoVyl9KX0sVS5leHBvcnRzPWxlfSw0MDk3OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooMTc5MyksbGU9Wig3MzAzKTtVLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24oWSxXKXtyZXR1cm4gWSYmIWllKFcpP2xlKFksVyk6V319LDUwNjE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig4OTY1KTtVLmV4cG9ydHM9ZnVuY3Rpb24obGUsWSxXLE4sZWUpe3ZhciBxPW5ldyBFcnJvcihsZSk7cmV0dXJuIGllKHEsWSxXLE4sZWUpfX0sMzU3''@;'; put 'put ''MjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQ4NjcpLGxlPVooODUyNyksWT1aKDY1MDIpLFc9Wig1NjU1KSxOPVooNTI2Myk7ZnVuY3Rpb24gZWUocSl7aWYocS5jYW5jZWxUb2tlbiYmcS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCkscS5zaWduYWwmJnEuc2lnbmFs''@;'; put 'put ''LmFib3J0ZWQpdGhyb3cgbmV3IE4oImNhbmNlbGVkIil9VS5leHBvcnRzPWZ1bmN0aW9uKHEpe3JldHVybiBlZShxKSxxLmhlYWRlcnM9cS5oZWFkZXJzfHx7fSxxLmRhdGE9bGUuY2FsbChxLHEuZGF0YSxxLmhlYWRlcnMscS50cmFuc2Zvcm1SZXF1ZXN0KSxxLmhlYWRlcnM9aWUubWVyZ2Uo''@;'; put 'put ''cS5oZWFkZXJzLmNvbW1vbnx8e30scS5oZWFkZXJzW3EubWV0aG9kXXx8e30scS5oZWFkZXJzKSxpZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLGZ1bmN0aW9uKEope2RlbGV0ZSBxLmhlYWRlcnNbSl19KSwocS5hZGFwdGVy''@;'; put 'put ''fHxXLmFkYXB0ZXIpKHEpLnRoZW4oZnVuY3Rpb24oSil7cmV0dXJuIGVlKHEpLEouZGF0YT1sZS5jYWxsKHEsSi5kYXRhLEouaGVhZGVycyxxLnRyYW5zZm9ybVJlc3BvbnNlKSxKfSxmdW5jdGlvbihKKXtyZXR1cm4gWShKKXx8KGVlKHEpLEomJkoucmVzcG9uc2UmJihKLnJlc3BvbnNlLmRh''@;'; put 'put ''dGE9bGUuY2FsbChxLEoucmVzcG9uc2UuZGF0YSxKLnJlc3BvbnNlLmhlYWRlcnMscS50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdChKKX0pfX0sODk2NTpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1mdW5jdGlvbihRLFosaWUsbGUsWSl7cmV0dXJuIFEuY29uZmlnPVos''@;'; put 'put ''aWUmJihRLmNvZGU9aWUpLFEucmVxdWVzdD1sZSxRLnJlc3BvbnNlPVksUS5pc0F4aW9zRXJyb3I9ITAsUS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5u''@;'; put 'put ''dW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMu''@;'; put 'put ''cmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxRfX0sNzE4NTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQ4NjcpO1UuZXhwb3J0cz1mdW5jdGlvbihsZSxZKXtZPVl8fHt9O3ZhciBXPXt9O2Z1bmN0aW9uIE4oZmUsZGUpe3JldHVybiBpZS5pc1Bs''@;'; put 'put ''YWluT2JqZWN0KGZlKSYmaWUuaXNQbGFpbk9iamVjdChkZSk/aWUubWVyZ2UoZmUsZGUpOmllLmlzUGxhaW5PYmplY3QoZGUpP2llLm1lcmdlKHt9LGRlKTppZS5pc0FycmF5KGRlKT9kZS5zbGljZSgpOmRlfWZ1bmN0aW9uIGVlKGZlKXtyZXR1cm4gaWUuaXNVbmRlZmluZWQoWVtmZV0pP2ll''@;'; put 'put ''LmlzVW5kZWZpbmVkKGxlW2ZlXSk/dm9pZCAwOk4odm9pZCAwLGxlW2ZlXSk6TihsZVtmZV0sWVtmZV0pfWZ1bmN0aW9uIHEoZmUpe2lmKCFpZS5pc1VuZGVmaW5lZChZW2ZlXSkpcmV0dXJuIE4odm9pZCAwLFlbZmVdKX1mdW5jdGlvbiBKKGZlKXtyZXR1cm4gaWUuaXNVbmRlZmluZWQoWVtm''@;'; put 'put ''ZV0pP2llLmlzVW5kZWZpbmVkKGxlW2ZlXSk/dm9pZCAwOk4odm9pZCAwLGxlW2ZlXSk6Tih2b2lkIDAsWVtmZV0pfWZ1bmN0aW9uIHNlKGZlKXtyZXR1cm4gZmUgaW4gWT9OKGxlW2ZlXSxZW2ZlXSk6ZmUgaW4gbGU/Tih2b2lkIDAsbGVbZmVdKTp2b2lkIDB9dmFyIGFlPXt1cmw6cSxtZXRo''@;'; put 'put ''b2Q6cSxkYXRhOnEsYmFzZVVSTDpKLHRyYW5zZm9ybVJlcXVlc3Q6Six0cmFuc2Zvcm1SZXNwb25zZTpKLHBhcmFtc1NlcmlhbGl6ZXI6Six0aW1lb3V0OkosdGltZW91dE1lc3NhZ2U6Six3aXRoQ3JlZGVudGlhbHM6SixhZGFwdGVyOkoscmVzcG9uc2VUeXBlOkoseHNyZkNvb2tpZU5hbWU6''@;'; put 'put ''Six4c3JmSGVhZGVyTmFtZTpKLG9uVXBsb2FkUHJvZ3Jlc3M6SixvbkRvd25sb2FkUHJvZ3Jlc3M6SixkZWNvbXByZXNzOkosbWF4Q29udGVudExlbmd0aDpKLG1heEJvZHlMZW5ndGg6Six0cmFuc3BvcnQ6SixodHRwQWdlbnQ6SixodHRwc0FnZW50OkosY2FuY2VsVG9rZW46Sixzb2NrZXRQ''@;'; put 'put ''YXRoOkoscmVzcG9uc2VFbmNvZGluZzpKLHZhbGlkYXRlU3RhdHVzOnNlfTtyZXR1cm4gaWUuZm9yRWFjaChPYmplY3Qua2V5cyhsZSkuY29uY2F0KE9iamVjdC5rZXlzKFkpKSxmdW5jdGlvbihmZSl7dmFyIGRlPWFlW2ZlXXx8ZWUsdmU9ZGUoZmUpO2llLmlzVW5kZWZpbmVkKHZlKSYmZGUh''@;'; put 'put ''PT1zZXx8KFdbZmVdPXZlKX0pLFd9fSw2MDI2OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNTA2MSk7VS5leHBvcnRzPWZ1bmN0aW9uKGxlLFksVyl7dmFyIE49Vy5jb25maWcudmFsaWRhdGVTdGF0dXM7Vy5zdGF0dXMmJk4mJiFOKFcuc3RhdHVzKT9ZKGllKCJSZXF1ZXN0IGZh''@;'; put 'put ''aWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrVy5zdGF0dXMsVy5jb25maWcsbnVsbCxXLnJlcXVlc3QsVykpOmxlKFcpfX0sODUyNzooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQ4NjcpLGxlPVooNTY1NSk7VS5leHBvcnRzPWZ1bmN0aW9uKFksVyxOKXt2YXIgZWU9dGhpc3x8bGU7''@;'; put 'put ''cmV0dXJuIGllLmZvckVhY2goTixmdW5jdGlvbihxKXtZPXEuY2FsbChlZSxZLFcpfSksWX19LDU2NTU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KSxsZT1aKDQ4NjcpLFk9Wig2MDE2KSxXPVooODk2NSksTj17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3''@;'; put 'put ''LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGVlKHNlLGFlKXshbGUuaXNVbmRlZmluZWQoc2UpJiZsZS5pc1VuZGVmaW5lZChzZVsiQ29udGVudC1UeXBlIl0pJiYoc2VbIkNvbnRlbnQtVHlwZSJdPWFlKX12YXIgcSxKPXt0cmFuc2l0aW9uYWw6e3NpbGVudEpTT05QYXJzaW5nOiEwLGZv''@;'; put 'put ''cmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LGFkYXB0ZXI6KCgidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0fHx2b2lkIDAhPT1pZSYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGllKSkmJihxPVoo''@;'; put 'put ''NTQ0OCkpLHEpLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKHNlLGFlKXtyZXR1cm4gWShhZSwiQWNjZXB0IiksWShhZSwiQ29udGVudC1UeXBlIiksbGUuaXNGb3JtRGF0YShzZSl8fGxlLmlzQXJyYXlCdWZmZXIoc2UpfHxsZS5pc0J1ZmZlcihzZSl8fGxlLmlzU3RyZWFtKHNlKXx8bGUu''@;'; put 'put ''aXNGaWxlKHNlKXx8bGUuaXNCbG9iKHNlKT9zZTpsZS5pc0FycmF5QnVmZmVyVmlldyhzZSk/c2UuYnVmZmVyOmxlLmlzVVJMU2VhcmNoUGFyYW1zKHNlKT8oZWUoYWUsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Iiksc2UudG9TdHJpbmcoKSk6bGUu''@;'; put 'put ''aXNPYmplY3Qoc2UpfHxhZSYmImFwcGxpY2F0aW9uL2pzb24iPT09YWVbIkNvbnRlbnQtVHlwZSJdPyhlZShhZSwiYXBwbGljYXRpb24vanNvbiIpLGZ1bmN0aW9uKGZlLGRlLHZlKXtpZihsZS5pc1N0cmluZyhmZSkpdHJ5e3JldHVybigwLEpTT04ucGFyc2UpKGZlKSxsZS50cmltKGZlKX1j''@;'; put 'put ''YXRjaChBZSl7aWYoIlN5bnRheEVycm9yIiE9PUFlLm5hbWUpdGhyb3cgQWV9cmV0dXJuKDAsSlNPTi5zdHJpbmdpZnkpKGZlKX0oc2UpKTpzZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihzZSl7dmFyIGFlPXRoaXMudHJhbnNpdGlvbmFsfHxKLnRyYW5zaXRpb25hbCx2ZT0hKGFl''@;'; put 'put ''JiZhZS5zaWxlbnRKU09OUGFyc2luZykmJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKHZlfHxhZSYmYWUuZm9yY2VkSlNPTlBhcnNpbmcmJmxlLmlzU3RyaW5nKHNlKSYmc2UubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShzZSl9Y2F0Y2goQWUpe2lmKHZlKXRocm93IlN5bnRh''@;'; put 'put ''eEVycm9yIj09PUFlLm5hbWU/VyhBZSx0aGlzLCJFX0pTT05fUEFSU0UiKTpBZX1yZXR1cm4gc2V9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2''@;'; put 'put ''YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihzZSl7cmV0dXJuIHNlPj0yMDAmJnNlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07bGUuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSxmdW5jdGlvbihzZSl7Si5o''@;'; put 'put ''ZWFkZXJzW3NlXT17fX0pLGxlLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihzZSl7Si5oZWFkZXJzW3NlXT1sZS5tZXJnZShOKX0pLFUuZXhwb3J0cz1KfSw3Mjg4OlU9PntVLmV4cG9ydHM9e3ZlcnNpb246IjAuMjYuMCJ9fSwxODQ5OlU9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''VS5leHBvcnRzPWZ1bmN0aW9uKFEsWil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbGU9MDtsZTxpZS5sZW5ndGg7bGUrKylpZVtsZV09YXJndW1lbnRzW2xlXTtyZXR1cm4gUS5hcHBseShaLGllKX19fSw1MzI3OihVLFEsWik9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIGllPVooNDg2Nyk7ZnVuY3Rpb24gbGUoWSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChZKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVC''@;'; put 'put ''L2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9VS5leHBvcnRzPWZ1bmN0aW9uKFksVyxOKXtpZighVylyZXR1cm4gWTt2YXIgZWU7aWYoTillZT1OKFcpO2Vsc2UgaWYoaWUuaXNVUkxTZWFyY2hQYXJhbXMoVykpZWU9Vy50b1N0cmluZygpO2Vsc2V7dmFyIHE9W107aWUuZm9yRWFjaChX''@;'; put 'put ''LGZ1bmN0aW9uKHNlLGFlKXtudWxsIT1zZSYmKGllLmlzQXJyYXkoc2UpP2FlKz0iW10iOnNlPVtzZV0saWUuZm9yRWFjaChzZSxmdW5jdGlvbihmZSl7aWUuaXNEYXRlKGZlKT9mZT1mZS50b0lTT1N0cmluZygpOmllLmlzT2JqZWN0KGZlKSYmKGZlPUpTT04uc3RyaW5naWZ5KGZlKSkscS5w''@;'; put 'put ''dXNoKGxlKGFlKSsiPSIrbGUoZmUpKX0pKX0pLGVlPXEuam9pbigiJiIpfWlmKGVlKXt2YXIgSj1ZLmluZGV4T2YoIiMiKTstMSE9PUomJihZPVkuc2xpY2UoMCxKKSksWSs9KC0xPT09WS5pbmRleE9mKCI/Iik/Ij8iOiImIikrZWV9cmV0dXJuIFl9fSw3MzAzOlU9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''VS5leHBvcnRzPWZ1bmN0aW9uKFEsWil7cmV0dXJuIFo/US5yZXBsYWNlKC9cLyskLywiIikrIi8iK1oucmVwbGFjZSgvXlwvKy8sIiIpOlF9fSw0MzcyOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNDg2Nyk7VS5leHBvcnRzPWllLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/e3dy''@;'; put 'put ''aXRlOmZ1bmN0aW9uKGxlLFksVyxOLGVlLHEpe3ZhciBKPVtdO0oucHVzaChsZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KFkpKSxpZS5pc051bWJlcihXKSYmSi5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUoVykudG9HTVRTdHJpbmcoKSksaWUuaXNTdHJpbmcoTikmJkoucHVzaCgicGF0aD0i''@;'; put 'put ''K04pLGllLmlzU3RyaW5nKGVlKSYmSi5wdXNoKCJkb21haW49IitlZSksITA9PT1xJiZKLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1KLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24obGUpe3ZhciBZPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKiko''@;'; put 'put ''IitsZSsiKT0oW147XSopIikpO3JldHVybiBZP2RlY29kZVVSSUNvbXBvbmVudChZWzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24obGUpe3RoaXMud3JpdGUobGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0s''@;'; put 'put ''cmVtb3ZlOmZ1bmN0aW9uKCl7fX19LDE3OTM6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9ZnVuY3Rpb24oUSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChRKX19LDYyNjg6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0ODY3KTtVLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24obGUpe3JldHVybiBpZS5pc09iamVjdChsZSkmJiEwPT09bGUuaXNBeGlvc0Vycm9yfX0sNzk4NTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQ4NjcpO1UuZXhwb3J0cz1pZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIGxlLFk9Lyhtc2ll''@;'; put 'put ''fHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxXPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBOKGVlKXt2YXIgcT1lZTtyZXR1cm4gWSYmKFcuc2V0QXR0cmlidXRlKCJocmVmIixxKSxxPVcuaHJlZiksVy5zZXRBdHRyaWJ1dGUoImhyZWYiLHEpLHto''@;'; put 'put ''cmVmOlcuaHJlZixwcm90b2NvbDpXLnByb3RvY29sP1cucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OlcuaG9zdCxzZWFyY2g6Vy5zZWFyY2g/Vy5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpXLmhhc2g/Vy5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5h''@;'; put 'put ''bWU6Vy5ob3N0bmFtZSxwb3J0OlcucG9ydCxwYXRobmFtZToiLyI9PT1XLnBhdGhuYW1lLmNoYXJBdCgwKT9XLnBhdGhuYW1lOiIvIitXLnBhdGhuYW1lfX1yZXR1cm4gbGU9Tih3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24oZWUpe3ZhciBxPWllLmlzU3RyaW5nKGVlKT9OKGVlKTpl''@;'; put 'put ''ZTtyZXR1cm4gcS5wcm90b2NvbD09PWxlLnByb3RvY29sJiZxLmhvc3Q9PT1sZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfX0sNjAxNjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQ4NjcpO1UuZXhwb3J0cz1mdW5jdGlvbihsZSxZKXtpZS5mb3JFYWNoKGxlLGZ1bmN0''@;'; put 'put ''aW9uKFcsTil7TiE9PVkmJk4udG9VcHBlckNhc2UoKT09PVkudG9VcHBlckNhc2UoKSYmKGxlW1ldPVcsZGVsZXRlIGxlW05dKX0pfX0sNDEwOTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQ4NjcpLGxlPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwi''@;'; put 'put ''Y29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0''@;'; put 'put ''cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il07VS5leHBvcnRzPWZ1bmN0aW9uKFkpe3ZhciBXLE4sZWUscT17fTtyZXR1cm4gWSYmaWUuZm9yRWFjaChZLnNwbGl0KCJcbiIpLGZ1bmN0aW9uKEope2lmKGVlPUouaW5kZXhPZigiOiIpLFc9aWUudHJpbShKLnN1YnN0cigwLGVlKSkudG9Mb3dlckNh''@;'; put 'put ''c2UoKSxOPWllLnRyaW0oSi5zdWJzdHIoZWUrMSkpLFcpe2lmKHFbV10mJmxlLmluZGV4T2YoVyk+PTApcmV0dXJuO3FbV109InNldC1jb29raWUiPT09Vz8ocVtXXT9xW1ddOltdKS5jb25jYXQoW05dKTpxW1ddP3FbV10rIiwgIitOOk59fSkscX19LDg3MTM6VT0+eyJ1c2Ugc3RyaWN0IjtV''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oUSl7cmV0dXJuIGZ1bmN0aW9uKFope3JldHVybiBRLmFwcGx5KG51bGwsWil9fX0sNDg3NTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDUxMDgpLGxlPVooNzI4OCkudmVyc2lvbixZPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1''@;'; put 'put ''bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaChmdW5jdGlvbihOLGVlKXtZW05dPWZ1bmN0aW9uKHEpe3JldHVybiB0eXBlb2YgcT09PU58fCJhIisoZWU8MT8ibiAiOiIgIikrTn19KTt2YXIgVz17fTtZLnRyYW5zaXRpb25hbD1mdW5jdGlvbihOLGVlLHEpe2Z1bmN0aW9uIEoo''@;'; put 'put ''c2UsYWUpe3JldHVybiJbQXhpb3MgdiIrbGUrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitzZSsiJyIrYWUrKHE/Ii4gIitxOiIiKX1yZXR1cm4gZnVuY3Rpb24oc2UsYWUsZmUpe2lmKCExPT09Til0aHJvdyBuZXcgRXJyb3IoSihhZSwiIGhhcyBiZWVuIHJlbW92ZWQiKyhlZT8iIGluICIr''@;'; put 'put ''ZWU6IiIpKSk7cmV0dXJuIGVlJiYhV1thZV0mJihXW2FlXT0hMCxpZS53YXJuKEooYWUsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK2VlKyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCFOfHxOKHNlLGFlLGZlKX19LFUuZXhwb3J0cz17YXNzZXJ0''@;'; put 'put ''T3B0aW9uczpmdW5jdGlvbihOLGVlLHEpe2lmKCJvYmplY3QiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBKPU9iamVjdC5rZXlzKE4pLHNlPUoubGVuZ3RoO3NlLS0gPjA7KXt2YXIgYWU9SltzZV0sZmU9ZWVbYWVd''@;'; put 'put ''O2lmKGZlKXt2YXIgZGU9TlthZV0sdmU9dm9pZCAwPT09ZGV8fGZlKGRlLGFlLE4pO2lmKCEwIT09dmUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIrYWUrIiBtdXN0IGJlICIrdmUpfWVsc2UgaWYoITAhPT1xKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2FlKX19LHZhbGlk''@;'; put 'put ''YXRvcnM6WX19LDQ4Njc6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9WigxODQ5KSxsZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIFkoYWUpe3JldHVybiBBcnJheS5pc0FycmF5KGFlKX1mdW5jdGlvbiBXKGFlKXtyZXR1cm4gdm9pZCAwPT09YWV9ZnVuY3Rpb24g''@;'; put 'put ''TihhZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PWxlLmNhbGwoYWUpfWZ1bmN0aW9uIGVlKGFlKXtyZXR1cm4gbnVsbCE9PWFlJiYib2JqZWN0Ij09dHlwZW9mIGFlfWZ1bmN0aW9uIHEoYWUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09bGUuY2FsbChhZSkpcmV0dXJuITE7dmFy''@;'; put 'put ''IGZlPU9iamVjdC5nZXRQcm90b3R5cGVPZihhZSk7cmV0dXJuIG51bGw9PT1mZXx8ZmU9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIEooYWUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1sZS5jYWxsKGFlKX1mdW5jdGlvbiBzZShhZSxmZSl7aWYobnVsbCE9YWUpaWYoIm9iamVj''@;'; put 'put ''dCIhPXR5cGVvZiBhZSYmKGFlPVthZV0pLFkoYWUpKWZvcih2YXIgZGU9MCx2ZT1hZS5sZW5ndGg7ZGU8dmU7ZGUrKylmZS5jYWxsKG51bGwsYWVbZGVdLGRlLGFlKTtlbHNlIGZvcih2YXIgQWUgaW4gYWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFlLEFlKSYmZmUu''@;'; put 'put ''Y2FsbChudWxsLGFlW0FlXSxBZSxhZSl9VS5leHBvcnRzPXtpc0FycmF5OlksaXNBcnJheUJ1ZmZlcjpOLGlzQnVmZmVyOmZ1bmN0aW9uKGFlKXtyZXR1cm4gbnVsbCE9PWFlJiYhVyhhZSkmJm51bGwhPT1hZS5jb25zdHJ1Y3RvciYmIVcoYWUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgYWUuY29uc3RydWN0b3IuaXNCdWZmZXImJmFlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGFlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihhZSl7cmV0dXJuIltvYmplY3QgRm9ybURhdGFdIj09PWxlLmNhbGwoYWUpfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihhZSl7cmV0dXJuInVu''@;'; put 'put ''ZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhhZSk6YWUmJmFlLmJ1ZmZlciYmTihhZS5idWZmZXIpfSxpc1N0cmluZzpmdW5jdGlvbihhZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhZX0saXNOdW1iZXI6ZnVuY3Rp''@;'; put 'put ''b24oYWUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYWV9LGlzT2JqZWN0OmVlLGlzUGxhaW5PYmplY3Q6cSxpc1VuZGVmaW5lZDpXLGlzRGF0ZTpmdW5jdGlvbihhZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09bGUuY2FsbChhZSl9LGlzRmlsZTpmdW5jdGlvbihhZSl7cmV0dXJuIltvYmpl''@;'; put 'put ''Y3QgRmlsZV0iPT09bGUuY2FsbChhZSl9LGlzQmxvYjpmdW5jdGlvbihhZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09bGUuY2FsbChhZSl9LGlzRnVuY3Rpb246Sixpc1N0cmVhbTpmdW5jdGlvbihhZSl7cmV0dXJuIGVlKGFlKSYmSihhZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVu''@;'; put 'put ''Y3Rpb24oYWUpe3JldHVybiJbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10iPT09bGUuY2FsbChhZSl9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJO''@;'; put 'put ''YXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50fSxmb3JFYWNoOnNlLG1lcmdlOmZ1bmN0aW9uIGFlKCl7dmFyIGZlPXt9O2Z1bmN0''@;'; put 'put ''aW9uIGRlKGtlLFNlKXtmZVtTZV09cShmZVtTZV0pJiZxKGtlKT9hZShmZVtTZV0sa2UpOnEoa2UpP2FlKHt9LGtlKTpZKGtlKT9rZS5zbGljZSgpOmtlfWZvcih2YXIgdmU9MCxBZT1hcmd1bWVudHMubGVuZ3RoO3ZlPEFlO3ZlKyspc2UoYXJndW1lbnRzW3ZlXSxkZSk7cmV0dXJuIGZlfSxl''@;'; put 'put ''eHRlbmQ6ZnVuY3Rpb24oYWUsZmUsZGUpe3JldHVybiBzZShmZSxmdW5jdGlvbih2ZSxBZSl7YWVbQWVdPWRlJiYiZnVuY3Rpb24iPT10eXBlb2YgdmU/aWUodmUsZGUpOnZlfSksYWV9LHRyaW06ZnVuY3Rpb24oYWUpe3JldHVybiBhZS50cmltP2FlLnRyaW0oKTphZS5yZXBsYWNlKC9eXHMr''@;'; put 'put ''fFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKGFlKXtyZXR1cm4gNjUyNzk9PT1hZS5jaGFyQ29kZUF0KDApJiYoYWU9YWUuc2xpY2UoMSkpLGFlfX19LDU2MjM6VT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBRKGxlLFksVyl7bGUgaW5zdGFuY2VvZiBSZWdFeHAmJihsZT1aKGxlLFcp''@;'; put 'put ''KSxZIGluc3RhbmNlb2YgUmVnRXhwJiYoWT1aKFksVykpO3ZhciBOPWllKGxlLFksVyk7cmV0dXJuIE4mJntzdGFydDpOWzBdLGVuZDpOWzFdLHByZTpXLnNsaWNlKDAsTlswXSksYm9keTpXLnNsaWNlKE5bMF0rbGUubGVuZ3RoLE5bMV0pLHBvc3Q6Vy5zbGljZShOWzFdK1kubGVuZ3RoKX19''@;'; put 'put ''ZnVuY3Rpb24gWihsZSxZKXt2YXIgVz1ZLm1hdGNoKGxlKTtyZXR1cm4gVz9XWzBdOm51bGx9ZnVuY3Rpb24gaWUobGUsWSxXKXt2YXIgTixlZSxxLEosc2UsYWU9Vy5pbmRleE9mKGxlKSxmZT1XLmluZGV4T2YoWSxhZSsxKSxkZT1hZTtpZihhZT49MCYmZmU+MCl7aWYobGU9PT1ZKXJldHVy''@;'; put 'put ''blthZSxmZV07Zm9yKE49W10scT1XLmxlbmd0aDtkZT49MCYmIXNlOylkZT09YWU/KE4ucHVzaChkZSksYWU9Vy5pbmRleE9mKGxlLGRlKzEpKToxPT1OLmxlbmd0aD9zZT1bTi5wb3AoKSxmZV06KChlZT1OLnBvcCgpKTxxJiYocT1lZSxKPWZlKSxmZT1XLmluZGV4T2YoWSxkZSsxKSksZGU9''@;'; put 'put ''YWU8ZmUmJmFlPj0wP2FlOmZlO04ubGVuZ3RoJiYoc2U9W3EsSl0pfXJldHVybiBzZX1VLmV4cG9ydHM9USxRLnJhbmdlPWllfSw5NzQyOihVLFEpPT57InVzZSBzdHJpY3QiO1EuYnl0ZUxlbmd0aD1mdW5jdGlvbihKKXt2YXIgc2U9ZWUoSiksZmU9c2VbMV07cmV0dXJuIDMqKHNlWzBdK2Zl''@;'; put 'put ''KS80LWZlfSxRLnRvQnl0ZUFycmF5PWZ1bmN0aW9uKEope3ZhciBzZSxhZSxFZSxmZT1lZShKKSxkZT1mZVswXSx2ZT1mZVsxXSxBZT1uZXcgbGUoMyooZGUrKEVlPXZlKSkvNC1FZSksa2U9MCxTZT12ZT4wP2RlLTQ6ZGU7Zm9yKGFlPTA7YWU8U2U7YWUrPTQpc2U9aWVbSi5jaGFyQ29kZUF0''@;'; put 'put ''KGFlKV08PDE4fGllW0ouY2hhckNvZGVBdChhZSsxKV08PDEyfGllW0ouY2hhckNvZGVBdChhZSsyKV08PDZ8aWVbSi5jaGFyQ29kZUF0KGFlKzMpXSxBZVtrZSsrXT1zZT4+MTYmMjU1LEFlW2tlKytdPXNlPj44JjI1NSxBZVtrZSsrXT0yNTUmc2U7cmV0dXJuIDI9PT12ZSYmKHNlPWllW0ou''@;'; put 'put ''Y2hhckNvZGVBdChhZSldPDwyfGllW0ouY2hhckNvZGVBdChhZSsxKV0+PjQsQWVba2UrK109MjU1JnNlKSwxPT09dmUmJihzZT1pZVtKLmNoYXJDb2RlQXQoYWUpXTw8MTB8aWVbSi5jaGFyQ29kZUF0KGFlKzEpXTw8NHxpZVtKLmNoYXJDb2RlQXQoYWUrMildPj4yLEFlW2tlKytdPXNlPj44''@;'; put 'put ''JjI1NSxBZVtrZSsrXT0yNTUmc2UpLEFlfSxRLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24oSil7Zm9yKHZhciBzZSxhZT1KLmxlbmd0aCxmZT1hZSUzLGRlPVtdLEFlPTAsa2U9YWUtZmU7QWU8a2U7QWUrPTE2MzgzKWRlLnB1c2gocShKLEFlLEFlKzE2MzgzPmtlP2tlOkFlKzE2MzgzKSk7cmV0''@;'; put 'put ''dXJuIDE9PT1mZT9kZS5wdXNoKFpbKHNlPUpbYWUtMV0pPj4yXStaW3NlPDw0JjYzXSsiPT0iKToyPT09ZmUmJmRlLnB1c2goWlsoc2U9KEpbYWUtMl08PDgpK0pbYWUtMV0pPj4xMF0rWltzZT4+NCY2M10rWltzZTw8MiY2M10rIj0iKSxkZS5qb2luKCIiKX07Zm9yKHZhciBaPVtdLGllPVtd''@;'; put 'put ''LGxlPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LFk9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLFc9MCxOPVkubGVuZ3RoO1c8TjsrK1cpWltXXT1ZW1ddLGllW1kuY2hhckNv''@;'; put 'put ''ZGVBdChXKV09VztmdW5jdGlvbiBlZShKKXt2YXIgc2U9Si5sZW5ndGg7aWYoc2UlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO3ZhciBhZT1KLmluZGV4T2YoIj0iKTtyZXR1cm4tMT09PWFlJiYoYWU9c2UpLFth''@;'; put 'put ''ZSxhZT09PXNlPzA6NC1hZSU0XX1mdW5jdGlvbiBxKEosc2UsYWUpe2Zvcih2YXIgZGUsdmU9W10sQWU9c2U7QWU8YWU7QWUrPTMpdmUucHVzaChaWyhkZT0oSltBZV08PDE2JjE2NzExNjgwKSsoSltBZSsxXTw8OCY2NTI4MCkrKDI1NSZKW0FlKzJdKSk+PjE4JjYzXStaW2RlPj4xMiY2M10r''@;'; put 'put ''WltkZT4+NiY2M10rWls2MyZkZV0pO3JldHVybiB2ZS5qb2luKCIiKX1pZVsiLSIuY2hhckNvZGVBdCgwKV09NjIsaWVbIl8iLmNoYXJDb2RlQXQoMCldPTYzfSwzNTUwOmZ1bmN0aW9uKFUsUSxaKXshZnVuY3Rpb24oaWUsbGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBZKFQsUyl7aWYoIVQp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKFN8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gVyhULFMpe1Quc3VwZXJfPVM7dmFyIEY9ZnVuY3Rpb24oKXt9O0YucHJvdG90eXBlPVMucHJvdG90eXBlLFQucHJvdG90eXBlPW5ldyBGLFQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVR9ZnVuY3Rpb24gTihU''@;'; put 'put ''LFMsRil7aWYoTi5pc0JOKFQpKXJldHVybiBUO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1UJiYoImxlIiE9PVMmJiJiZSIhPT1TfHwoRj1TLFM9MTApLHRoaXMuX2luaXQoVHx8MCxTfHwxMCxGfHwiYmUiKSl9dmFy''@;'; put 'put ''IGVlOyJvYmplY3QiPT10eXBlb2YgaWU/aWUuZXhwb3J0cz1OOmxlLkJOPU4sTi5CTj1OLE4ud29yZFNpemU9MjY7dHJ5e2VlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6Wig2NjAxKS5CdWZmZXJ9Y2F0Y2goVCl7fWZ1''@;'; put 'put ''bmN0aW9uIHEoVCxTKXt2YXIgRj1ULmNoYXJDb2RlQXQoUyk7cmV0dXJuIEY+PTQ4JiZGPD01Nz9GLTQ4OkY+PTY1JiZGPD03MD9GLTU1OkY+PTk3JiZGPD0xMDI/Ri04Nzp2b2lkIFkoITEsIkludmFsaWQgY2hhcmFjdGVyIGluICIrVCl9ZnVuY3Rpb24gSihULFMsRil7dmFyIHllPXEoVCxG''@;'; put 'put ''KTtyZXR1cm4gRi0xPj1TJiYoeWV8PXEoVCxGLTEpPDw0KSx5ZX1mdW5jdGlvbiBzZShULFMsRix5ZSl7Zm9yKHZhciBDZT0wLERlPTAsUGU9TWF0aC5taW4oVC5sZW5ndGgsRiksUWU9UztRZTxQZTtRZSsrKXt2YXIgJGU9VC5jaGFyQ29kZUF0KFFlKS00ODtDZSo9eWUsRGU9JGU+PTQ5PyRl''@;'; put 'put ''LTQ5KzEwOiRlPj0xNz8kZS0xNysxMDokZSxZKCRlPj0wJiZEZTx5ZSwiSW52YWxpZCBjaGFyYWN0ZXIiKSxDZSs9RGV9cmV0dXJuIENlfWZ1bmN0aW9uIGFlKFQsUyl7VC53b3Jkcz1TLndvcmRzLFQubGVuZ3RoPVMubGVuZ3RoLFQubmVnYXRpdmU9Uy5uZWdhdGl2ZSxULnJlZD1TLnJlZH1p''@;'; put 'put ''ZihOLmlzQk49ZnVuY3Rpb24oVCl7cmV0dXJuIFQgaW5zdGFuY2VvZiBOfHxudWxsIT09VCYmIm9iamVjdCI9PXR5cGVvZiBUJiZULmNvbnN0cnVjdG9yLndvcmRTaXplPT09Ti53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShULndvcmRzKX0sTi5tYXg9ZnVuY3Rpb24oVCxTKXtyZXR1cm4gVC5j''@;'; put 'put ''bXAoUyk+MD9UOlN9LE4ubWluPWZ1bmN0aW9uKFQsUyl7cmV0dXJuIFQuY21wKFMpPDA/VDpTfSxOLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihULFMsRil7aWYoIm51bWJlciI9PXR5cGVvZiBUKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKFQsUyxGKTtpZigib2JqZWN0Ij09dHlwZW9mIFQp''@;'; put 'put ''cmV0dXJuIHRoaXMuX2luaXRBcnJheShULFMsRik7ImhleCI9PT1TJiYoUz0xNiksWShTPT09KDB8UykmJlM+PTImJlM8PTM2KTt2YXIgeWU9MDsiLSI9PT0oVD1ULnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKHllKyssdGhpcy5uZWdhdGl2ZT0xKSx5ZTxULmxlbmd0aCYm''@;'; put 'put ''KDE2PT09Uz90aGlzLl9wYXJzZUhleChULHllLEYpOih0aGlzLl9wYXJzZUJhc2UoVCxTLHllKSwibGUiPT09RiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFMsRikpKX0sTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oVCxTLEYpe1Q8MCYmKHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MSxUPS1UKSxUPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZUXSx0aGlzLmxlbmd0aD0xKTpUPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJlQsVC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KFkoVDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlz''@;'; put 'put ''LndvcmRzPVs2NzEwODg2MyZULFQvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PUYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxTLEYpfSxOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKFQsUyxGKXtpZihZKCJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''VC5sZW5ndGgpLFQubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKFQubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHllPTA7eWU8dGhpcy5sZW5ndGg7eWUrKyl0''@;'; put 'put ''aGlzLndvcmRzW3llXT0wO3ZhciBDZSxEZSxQZT0wO2lmKCJiZSI9PT1GKWZvcih5ZT1ULmxlbmd0aC0xLENlPTA7eWU+PTA7eWUtPTMpdGhpcy53b3Jkc1tDZV18PShEZT1UW3llXXxUW3llLTFdPDw4fFRbeWUtMl08PDE2KTw8UGUmNjcxMDg4NjMsdGhpcy53b3Jkc1tDZSsxXT1EZT4+PjI2''@;'; put 'put ''LVBlJjY3MTA4ODYzLChQZSs9MjQpPj0yNiYmKFBlLT0yNixDZSsrKTtlbHNlIGlmKCJsZSI9PT1GKWZvcih5ZT0wLENlPTA7eWU8VC5sZW5ndGg7eWUrPTMpdGhpcy53b3Jkc1tDZV18PShEZT1UW3llXXxUW3llKzFdPDw4fFRbeWUrMl08PDE2KTw8UGUmNjcxMDg4NjMsdGhpcy53b3Jkc1tD''@;'; put 'put ''ZSsxXT1EZT4+PjI2LVBlJjY3MTA4ODYzLChQZSs9MjQpPj0yNiYmKFBlLT0yNixDZSsrKTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKFQsUyxGKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKFQubGVuZ3RoLVMpLzYpLHRoaXMud29yZHM9bmV3''@;'; put 'put ''IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHllPTA7eWU8dGhpcy5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT0wO3ZhciBDZSxEZT0wLFBlPTA7aWYoImJlIj09PUYpZm9yKHllPVQubGVuZ3RoLTE7eWU+PVM7eWUtPTIpQ2U9SihULFMseWUpPDxEZSx0aGlzLndvcmRzW1BlXXw9Njcx''@;'; put 'put ''MDg4NjMmQ2UsRGU+PTE4PyhEZS09MTgsdGhpcy53b3Jkc1tQZSs9MV18PUNlPj4+MjYpOkRlKz04O2Vsc2UgZm9yKHllPShULmxlbmd0aC1TKSUyPT0wP1MrMTpTO3llPFQubGVuZ3RoO3llKz0yKUNlPUooVCxTLHllKTw8RGUsdGhpcy53b3Jkc1tQZV18PTY3MTA4ODYzJkNlLERlPj0xOD8o''@;'; put 'put ''RGUtPTE4LHRoaXMud29yZHNbUGUrPTFdfD1DZT4+PjI2KTpEZSs9ODt0aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKFQsUyxGKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgeWU9MCxDZT0xO0NlPD02NzEwODg2MztDZSo9Uyl5ZSsr''@;'; put 'put ''O3llLS0sQ2U9Q2UvU3wwO2Zvcih2YXIgRGU9VC5sZW5ndGgtRixQZT1EZSV5ZSxRZT1NYXRoLm1pbihEZSxEZS1QZSkrRiwkZT0wLGd0PUY7Z3Q8UWU7Z3QrPXllKSRlPXNlKFQsZ3QsZ3QreWUsUyksdGhpcy5pbXVsbihDZSksdGhpcy53b3Jkc1swXSskZTw2NzEwODg2ND90aGlzLndvcmRz''@;'; put 'put ''WzBdKz0kZTp0aGlzLl9pYWRkbigkZSk7aWYoMCE9PVBlKXt2YXIgeXQ9MTtmb3IoJGU9c2UoVCxndCxULmxlbmd0aCxTKSxndD0wO2d0PFBlO2d0KyspeXQqPVM7dGhpcy5pbXVsbih5dCksdGhpcy53b3Jkc1swXSskZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz0kZTp0aGlzLl9pYWRkbigk''@;'; put 'put ''ZSl9dGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuY29weT1mdW5jdGlvbihUKXtULndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBTPTA7Uzx0aGlzLmxlbmd0aDtTKyspVC53b3Jkc1tTXT10aGlzLndvcmRzW1NdO1QubGVuZ3RoPXRoaXMubGVuZ3RoLFQubmVnYXRpdmU9''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSxULnJlZD10aGlzLnJlZH0sTi5wcm90b3R5cGUuX21vdmU9ZnVuY3Rpb24oVCl7YWUoVCx0aGlzKX0sTi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgVD1uZXcgTihudWxsKTtyZXR1cm4gdGhpcy5jb3B5KFQpLFR9LE4ucHJvdG90eXBlLl9leHBhbmQ9ZnVu''@;'; put 'put ''Y3Rpb24oVCl7Zm9yKDt0aGlzLmxlbmd0aDxUOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLl9zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07''@;'; put 'put ''cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSwidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbC5mb3IpdHJ5e04ucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZlfWNhdGNoKFQpe04ucHJvdG90eXBlLmluc3BlY3Q9ZmV9ZWxzZSBOLnByb3RvdHlwZS5pbnNwZWN0PWZlO2Z1bmN0aW9uIGZlKCl7cmV0dXJuKHRoaXMu''@;'; put 'put ''cmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9dmFyIGRlPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLHZlPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2''@;'; put 'put ''LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLEFlPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYs''@;'; put 'put ''MTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0''@;'; put 'put ''MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIGtlKFQsUyxGKXtGLm5lZ2F0aXZlPVMubmVnYXRpdmVeVC5uZWdhdGl2ZTt2YXIgeWU9VC5sZW5ndGgrUy5sZW5ndGh8MDtGLmxlbmd0aD15ZSx5ZT15ZS0xfDA7dmFyIENlPTB8VC53b3Jkc1swXSxEZT0wfFMud29yZHNbMF0sUGU9Q2Uq''@;'; put 'put ''RGUsJGU9UGUvNjcxMDg4NjR8MDtGLndvcmRzWzBdPTY3MTA4ODYzJlBlO2Zvcih2YXIgZ3Q9MTtndDx5ZTtndCsrKXtmb3IodmFyIHl0PSRlPj4+MjYscHQ9NjcxMDg4NjMmJGUsbXQ9TWF0aC5taW4oZ3QsUy5sZW5ndGgtMSksdnQ9TWF0aC5tYXgoMCxndC1ULmxlbmd0aCsxKTt2dDw9bXQ7''@;'; put 'put ''dnQrKyl5dCs9KFBlPShDZT0wfFQud29yZHNbZ3QtdnR8MF0pKihEZT0wfFMud29yZHNbdnRdKStwdCkvNjcxMDg4NjR8MCxwdD02NzEwODg2MyZQZTtGLndvcmRzW2d0XT0wfHB0LCRlPTB8eXR9cmV0dXJuIDAhPT0kZT9GLndvcmRzW2d0XT0wfCRlOkYubGVuZ3RoLS0sRi5fc3RyaXAoKX1O''@;'; put 'put ''LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihULFMpe3ZhciBGO2lmKFM9MHxTfHwxLDE2PT09KFQ9VHx8MTApfHwiaGV4Ij09PVQpe0Y9IiI7Zm9yKHZhciB5ZT0wLENlPTAsRGU9MDtEZTx0aGlzLmxlbmd0aDtEZSsrKXt2YXIgUGU9dGhpcy53b3Jkc1tEZV0sUWU9KDE2Nzc3MjE1JihQ''@;'; put 'put ''ZTw8eWV8Q2UpKS50b1N0cmluZygxNik7Q2U9UGU+Pj4yNC15ZSYxNjc3NzIxNSwoeWUrPTIpPj0yNiYmKHllLT0yNixEZS0tKSxGPTAhPT1DZXx8RGUhPT10aGlzLmxlbmd0aC0xP2RlWzYtUWUubGVuZ3RoXStRZStGOlFlK0Z9Zm9yKDAhPT1DZSYmKEY9Q2UudG9TdHJpbmcoMTYpK0YpO0Yu''@;'; put 'put ''bGVuZ3RoJVMhPTA7KUY9IjAiK0Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoRj0iLSIrRiksRn1pZihUPT09KDB8VCkmJlQ+PTImJlQ8PTM2KXt2YXIgJGU9dmVbVF0sZ3Q9QWVbVF07Rj0iIjt2YXIgeXQ9dGhpcy5jbG9uZSgpO2Zvcih5dC5uZWdhdGl2ZT0wOyF5dC5pc1plcm8oKTsp''@;'; put 'put ''e3ZhciBwdD15dC5tb2RybihndCkudG9TdHJpbmcoVCk7Rj0oeXQ9eXQuaWRpdm4oZ3QpKS5pc1plcm8oKT9wdCtGOmRlWyRlLXB0Lmxlbmd0aF0rcHQrRn1mb3IodGhpcy5pc1plcm8oKSYmKEY9IjAiK0YpO0YubGVuZ3RoJVMhPTA7KUY9IjAiK0Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''JiYoRj0iLSIrRiksRn1ZKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LE4ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIFQ9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP1QrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9UKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmWSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LVQ6VH0sTi5wcm90''@;'; put 'put ''b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYsMil9LGVlJiYoTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oVCxTKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShlZSxULFMpfSksTi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihULFMpe3JldHVy''@;'; put 'put ''biB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LFQsUyl9LE4ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKFQsUyxGKXt0aGlzLl9zdHJpcCgpO3ZhciB5ZT10aGlzLmJ5dGVMZW5ndGgoKSxDZT1GfHxNYXRoLm1heCgxLHllKTtZKHllPD1DZSwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBk''@;'; put 'put ''ZXNpcmVkIGxlbmd0aCIpLFkoQ2U+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIik7dmFyIFBlLFFlLERlPShRZT1DZSwoUGU9VCkuYWxsb2NVbnNhZmU/UGUuYWxsb2NVbnNhZmUoUWUpOm5ldyBQZShRZSkpO3JldHVybiB0aGlzWyJfdG9BcnJheUxpa2UiKygibGUiPT09Uz8iTEUi''@;'; put 'put ''OiJCRSIpXShEZSx5ZSksRGV9LE4ucHJvdG90eXBlLl90b0FycmF5TGlrZUxFPWZ1bmN0aW9uKFQsUyl7Zm9yKHZhciBGPTAseWU9MCxDZT0wLERlPTA7Q2U8dGhpcy5sZW5ndGg7Q2UrKyl7dmFyIFBlPXRoaXMud29yZHNbQ2VdPDxEZXx5ZTtUW0YrK109MjU1JlBlLEY8VC5sZW5ndGgmJihU''@;'; put 'put ''W0YrK109UGU+PjgmMjU1KSxGPFQubGVuZ3RoJiYoVFtGKytdPVBlPj4xNiYyNTUpLDY9PT1EZT8oRjxULmxlbmd0aCYmKFRbRisrXT1QZT4+MjQmMjU1KSx5ZT0wLERlPTApOih5ZT1QZT4+PjI0LERlKz0yKX1pZihGPFQubGVuZ3RoKWZvcihUW0YrK109eWU7RjxULmxlbmd0aDspVFtGKytd''@;'; put 'put ''PTB9LE4ucHJvdG90eXBlLl90b0FycmF5TGlrZUJFPWZ1bmN0aW9uKFQsUyl7Zm9yKHZhciBGPVQubGVuZ3RoLTEseWU9MCxDZT0wLERlPTA7Q2U8dGhpcy5sZW5ndGg7Q2UrKyl7dmFyIFBlPXRoaXMud29yZHNbQ2VdPDxEZXx5ZTtUW0YtLV09MjU1JlBlLEY+PTAmJihUW0YtLV09UGU+Pjgm''@;'; put 'put ''MjU1KSxGPj0wJiYoVFtGLS1dPVBlPj4xNiYyNTUpLDY9PT1EZT8oRj49MCYmKFRbRi0tXT1QZT4+MjQmMjU1KSx5ZT0wLERlPTApOih5ZT1QZT4+PjI0LERlKz0yKX1pZihGPj0wKWZvcihUW0YtLV09eWU7Rj49MDspVFtGLS1dPTB9LE4ucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHoz''@;'; put 'put ''Mj9mdW5jdGlvbihUKXtyZXR1cm4gMzItTWF0aC5jbHozMihUKX06ZnVuY3Rpb24oVCl7dmFyIFM9VCxGPTA7cmV0dXJuIFM+PTQwOTYmJihGKz0xMyxTPj4+PTEzKSxTPj02NCYmKEYrPTcsUz4+Pj03KSxTPj04JiYoRis9NCxTPj4+PTQpLFM+PTImJihGKz0yLFM+Pj49MiksRitTfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oVCl7aWYoMD09PVQpcmV0dXJuIDI2O3ZhciBTPVQsRj0wO3JldHVybiAwPT0oODE5MSZTKSYmKEYrPTEzLFM+Pj49MTMpLDA9PSgxMjcmUykmJihGKz03LFM+Pj49NyksMD09KDE1JlMpJiYoRis9NCxTPj4+PTQpLDA9PSgzJlMpJiYoRis9MixT''@;'; put 'put ''Pj4+PTIpLDA9PSgxJlMpJiZGKyssRn0sTi5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIFM9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrU30sTi5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24o''@;'; put 'put ''KXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgVD0wLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIEY9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tTXSk7aWYoVCs9RiwyNiE9PUYpYnJlYWt9cmV0dXJuIFR9LE4ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LE4ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihUKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihUKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LE4ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9u''@;'; put 'put ''KFQpe3JldHVybiB0aGlzLnRlc3RuKFQtMSk/dGhpcy5ub3RuKFQpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LE4ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''bG9uZSgpLmluZWcoKX0sTi5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sTi5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihUKXtmb3IoO3RoaXMubGVuZ3RoPFQubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVu''@;'; put 'put ''Z3RoKytdPTA7Zm9yKHZhciBTPTA7UzxULmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT10aGlzLndvcmRzW1NdfFQud29yZHNbU107cmV0dXJuIHRoaXMuX3N0cmlwKCl9LE4ucHJvdG90eXBlLmlvcj1mdW5jdGlvbihUKXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXxULm5lZ2F0aXZlKSks''@;'; put 'put ''dGhpcy5pdW9yKFQpfSxOLnByb3RvdHlwZS5vcj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5sZW5ndGg+VC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihUKTpULmNsb25lKCkuaW9yKHRoaXMpfSxOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMubGVuZ3RoPlQubGVuZ3Ro''@;'; put 'put ''P3RoaXMuY2xvbmUoKS5pdW9yKFQpOlQuY2xvbmUoKS5pdW9yKHRoaXMpfSxOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihUKXt2YXIgUztTPXRoaXMubGVuZ3RoPlQubGVuZ3RoP1Q6dGhpcztmb3IodmFyIEY9MDtGPFMubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXRoaXMud29yZHNbRl0m''@;'; put 'put ''VC53b3Jkc1tGXTtyZXR1cm4gdGhpcy5sZW5ndGg9Uy5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihUKXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXxULm5lZ2F0aXZlKSksdGhpcy5pdWFuZChUKX0sTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKFQp''@;'; put 'put ''e3JldHVybiB0aGlzLmxlbmd0aD5ULmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChUKTpULmNsb25lKCkuaWFuZCh0aGlzKX0sTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5sZW5ndGg+VC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKFQpOlQuY2xvbmUoKS5pdWFu''@;'; put 'put ''ZCh0aGlzKX0sTi5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oVCl7dmFyIFMsRjt0aGlzLmxlbmd0aD5ULmxlbmd0aD8oUz10aGlzLEY9VCk6KFM9VCxGPXRoaXMpO2Zvcih2YXIgeWU9MDt5ZTxGLmxlbmd0aDt5ZSsrKXRoaXMud29yZHNbeWVdPVMud29yZHNbeWVdXkYud29yZHNbeWVdO2lm''@;'; put 'put ''KHRoaXMhPT1TKWZvcig7eWU8Uy5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT1TLndvcmRzW3llXTtyZXR1cm4gdGhpcy5sZW5ndGg9Uy5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihUKXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXxULm5lZ2F0''@;'; put 'put ''aXZlKSksdGhpcy5pdXhvcihUKX0sTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmxlbmd0aD5ULmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihUKTpULmNsb25lKCkuaXhvcih0aGlzKX0sTi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5sZW5n''@;'; put 'put ''dGg+VC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKFQpOlQuY2xvbmUoKS5pdXhvcih0aGlzKX0sTi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oVCl7WSgibnVtYmVyIj09dHlwZW9mIFQmJlQ+PTApO3ZhciBTPTB8TWF0aC5jZWlsKFQvMjYpLEY9VCUyNjt0aGlzLl9leHBhbmQoUyksRj4w''@;'; put 'put ''JiZTLS07Zm9yKHZhciB5ZT0wO3llPFM7eWUrKyl0aGlzLndvcmRzW3llXT02NzEwODg2MyZ+dGhpcy53b3Jkc1t5ZV07cmV0dXJuIEY+MCYmKHRoaXMud29yZHNbeWVdPX50aGlzLndvcmRzW3llXSY2NzEwODg2Mz4+MjYtRiksdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUubm90bj1mdW5j''@;'; put 'put ''dGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKFQpfSxOLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKFQsUyl7WSgibnVtYmVyIj09dHlwZW9mIFQmJlQ+PTApO3ZhciBGPVQvMjZ8MCx5ZT1UJTI2O3JldHVybiB0aGlzLl9leHBhbmQoRisxKSx0aGlzLndvcmRzW0ZdPVM/dGhpcy53''@;'; put 'put ''b3Jkc1tGXXwxPDx5ZTp0aGlzLndvcmRzW0ZdJn4oMTw8eWUpLHRoaXMuX3N0cmlwKCl9LE4ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oVCl7dmFyIFMsRix5ZTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PVQubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxTPXRoaXMuaXN1YihU''@;'; put 'put ''KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1ULm5lZ2F0aXZlKXJldHVybiBULm5lZ2F0aXZlPTAsUz10aGlzLmlzdWIoVCksVC5uZWdhdGl2ZT0xLFMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+VC5sZW5ndGg/KEY9dGhpcyx5''@;'; put 'put ''ZT1UKTooRj1ULHllPXRoaXMpO2Zvcih2YXIgQ2U9MCxEZT0wO0RlPHllLmxlbmd0aDtEZSsrKXRoaXMud29yZHNbRGVdPTY3MTA4ODYzJihTPSgwfEYud29yZHNbRGVdKSsoMHx5ZS53b3Jkc1tEZV0pK0NlKSxDZT1TPj4+MjY7Zm9yKDswIT09Q2UmJkRlPEYubGVuZ3RoO0RlKyspdGhpcy53''@;'; put 'put ''b3Jkc1tEZV09NjcxMDg4NjMmKFM9KDB8Ri53b3Jkc1tEZV0pK0NlKSxDZT1TPj4+MjY7aWYodGhpcy5sZW5ndGg9Ri5sZW5ndGgsMCE9PUNlKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPUNlLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihGIT09dGhpcylmb3IoO0RlPEYubGVuZ3RoO0RlKyspdGhp''@;'; put 'put ''cy53b3Jkc1tEZV09Ri53b3Jkc1tEZV07cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihUKXt2YXIgUztyZXR1cm4gMCE9PVQubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhULm5lZ2F0aXZlPTAsUz10aGlzLnN1YihUKSxULm5lZ2F0aXZlXj0xLFMpOjA9PT1ULm5l''@;'; put 'put ''Z2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLFM9VC5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLFMpOnRoaXMubGVuZ3RoPlQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKFQpOlQuY2xvbmUoKS5pYWRkKHRoaXMpfSxOLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9u''@;'; put 'put ''KFQpe2lmKDAhPT1ULm5lZ2F0aXZlKXtULm5lZ2F0aXZlPTA7dmFyIFM9dGhpcy5pYWRkKFQpO3JldHVybiBULm5lZ2F0aXZlPTEsUy5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChUKSx0aGlzLm5lZ2F0aXZlPTEsdGhp''@;'; put 'put ''cy5fbm9ybVNpZ24oKTt2YXIgRix5ZSxDZT10aGlzLmNtcChUKTtpZigwPT09Q2UpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO0NlPjA/KEY9dGhpcyx5ZT1UKTooRj1ULHllPXRoaXMpO2Zvcih2YXIgRGU9MCxQZT0wO1BlPHllLmxl''@;'; put 'put ''bmd0aDtQZSsrKURlPShTPSgwfEYud29yZHNbUGVdKS0oMHx5ZS53b3Jkc1tQZV0pK0RlKT4+MjYsdGhpcy53b3Jkc1tQZV09NjcxMDg4NjMmUztmb3IoOzAhPT1EZSYmUGU8Ri5sZW5ndGg7UGUrKylEZT0oUz0oMHxGLndvcmRzW1BlXSkrRGUpPj4yNix0aGlzLndvcmRzW1BlXT02NzEwODg2''@;'; put 'put ''MyZTO2lmKDA9PT1EZSYmUGU8Ri5sZW5ndGgmJkYhPT10aGlzKWZvcig7UGU8Ri5sZW5ndGg7UGUrKyl0aGlzLndvcmRzW1BlXT1GLndvcmRzW1BlXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUGUpLEYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLl9z''@;'; put 'put ''dHJpcCgpfSxOLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKFQpfTt2YXIgU2U9ZnVuY3Rpb24oVCxTLEYpe3ZhciB5ZSxDZSxEZSxQZT1ULndvcmRzLFFlPVMud29yZHMsJGU9Ri53b3JkcyxndD0wLHl0PTB8UGVbMF0scHQ9ODE5MSZ5dCxtdD15''@;'; put 'put ''dD4+PjEzLHZ0PTB8UGVbMV0sZnQ9ODE5MSZ2dCxGdD12dD4+PjEzLG9uPTB8UGVbMl0sX3Q9ODE5MSZvbixudD1vbj4+PjEzLHFlPTB8UGVbM10sb3Q9ODE5MSZxZSxSdD1xZT4+PjEzLEN0PTB8UGVbNF0sY3Q9ODE5MSZDdCxOdD1DdD4+PjEzLHplPTB8UGVbNV0sWWU9ODE5MSZ6ZSxBdD16''@;'; put 'put ''ZT4+PjEzLGp0PTB8UGVbNl0sSnQ9ODE5MSZqdCxtbj1qdD4+PjEzLHBuPTB8UGVbN10sYm49ODE5MSZwbixsbj1wbj4+PjEzLE5uPTB8UGVbOF0sa249ODE5MSZObixlcj1Obj4+PjEzLHVyPTB8UGVbOV0sWG49ODE5MSZ1cixGcj11cj4+PjEzLHhyPTB8UWVbMF0sZW49ODE5MSZ4cixkcj14''@;'; put 'put ''cj4+PjEzLG5yPTB8UWVbMV0sd249ODE5MSZuciwkbj1ucj4+PjEzLFl0PTB8UWVbMl0sZ249ODE5MSZZdCxLbj1ZdD4+PjEzLFZ0PTB8UWVbM10sc249ODE5MSZWdCxVbj1WdD4+PjEzLF9uPTB8UWVbNF0sdG49ODE5MSZfbixHbj1fbj4+PjEzLFRyPTB8UWVbNV0sUG49ODE5MSZUcixTcj1U''@;'; put 'put ''cj4+PjEzLHZuPTB8UWVbNl0sdW49ODE5MSZ2bixjbj12bj4+PjEzLFNuPTB8UWVbN10sR3Q9ODE5MSZTbixFbj1Tbj4+PjEzLGpuPTB8UWVbOF0scXQ9ODE5MSZqbixMbj1qbj4+PjEzLEpuPTB8UWVbOV0sb3I9ODE5MSZKbixncj1Kbj4+PjEzO0YubmVnYXRpdmU9VC5uZWdhdGl2ZV5TLm5l''@;'; put 'put ''Z2F0aXZlLEYubGVuZ3RoPTE5O3ZhciBKcj0oZ3QrKHllPU1hdGguaW11bChwdCxlbikpfDApKygoODE5MSYoQ2U9KENlPU1hdGguaW11bChwdCxkcikpK01hdGguaW11bChtdCxlbil8MCkpPDwxMyl8MDtndD0oKERlPU1hdGguaW11bChtdCxkcikpKyhDZT4+PjEzKXwwKSsoSnI+Pj4yNil8''@;'; put 'put ''MCxKciY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKGZ0LGVuKSxDZT0oQ2U9TWF0aC5pbXVsKGZ0LGRyKSkrTWF0aC5pbXVsKEZ0LGVuKXwwLERlPU1hdGguaW11bChGdCxkcik7dmFyIFZyPShndCsoeWU9eWUrTWF0aC5pbXVsKHB0LHduKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmlt''@;'; put 'put ''dWwocHQsJG4pfDApK01hdGguaW11bChtdCx3bil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChtdCwkbil8MCkrKENlPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoX3QsZW4pLENlPShDZT1NYXRoLmltdWwoX3QsZHIpKStNYXRoLmltdWwo''@;'; put 'put ''bnQsZW4pfDAsRGU9TWF0aC5pbXVsKG50LGRyKSx5ZT15ZStNYXRoLmltdWwoZnQsd24pfDAsQ2U9KENlPUNlK01hdGguaW11bChmdCwkbil8MCkrTWF0aC5pbXVsKEZ0LHduKXwwLERlPURlK01hdGguaW11bChGdCwkbil8MDt2YXIgdGk9KGd0Kyh5ZT15ZStNYXRoLmltdWwocHQsZ24pfDAp''@;'; put 'put ''fDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChwdCxLbil8MCkrTWF0aC5pbXVsKG10LGduKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKG10LEtuKXwwKSsoQ2U+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLHllPU1hdGguaW11bChvdCxlbiksQ2U9KENl''@;'; put 'put ''PU1hdGguaW11bChvdCxkcikpK01hdGguaW11bChSdCxlbil8MCxEZT1NYXRoLmltdWwoUnQsZHIpLHllPXllK01hdGguaW11bChfdCx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKF90LCRuKXwwKStNYXRoLmltdWwobnQsd24pfDAsRGU9RGUrTWF0aC5pbXVsKG50LCRuKXwwLHllPXllK01h''@;'; put 'put ''dGguaW11bChmdCxnbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGZ0LEtuKXwwKStNYXRoLmltdWwoRnQsZ24pfDAsRGU9RGUrTWF0aC5pbXVsKEZ0LEtuKXwwO3ZhciBPcj0oZ3QrKHllPXllK01hdGguaW11bChwdCxzbil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKHB0LFVu''@;'; put 'put ''KXwwKStNYXRoLmltdWwobXQsc24pfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwobXQsVW4pfDApKyhDZT4+PjEzKXwwKSsoT3I+Pj4yNil8MCxPciY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKGN0LGVuKSxDZT0oQ2U9TWF0aC5pbXVsKGN0LGRyKSkrTWF0aC5pbXVsKE50LGVuKXww''@;'; put 'put ''LERlPU1hdGguaW11bChOdCxkcikseWU9eWUrTWF0aC5pbXVsKG90LHduKXwwLENlPShDZT1DZStNYXRoLmltdWwob3QsJG4pfDApK01hdGguaW11bChSdCx3bil8MCxEZT1EZStNYXRoLmltdWwoUnQsJG4pfDAseWU9eWUrTWF0aC5pbXVsKF90LGduKXwwLENlPShDZT1DZStNYXRoLmltdWwo''@;'; put 'put ''X3QsS24pfDApK01hdGguaW11bChudCxnbil8MCxEZT1EZStNYXRoLmltdWwobnQsS24pfDAseWU9eWUrTWF0aC5pbXVsKGZ0LHNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoZnQsVW4pfDApK01hdGguaW11bChGdCxzbil8MCxEZT1EZStNYXRoLmltdWwoRnQsVW4pfDA7dmFyIGxpPShndCso''@;'; put 'put ''eWU9eWUrTWF0aC5pbXVsKHB0LHRuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwocHQsR24pfDApK01hdGguaW11bChtdCx0bil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChtdCxHbil8MCkrKENlPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2Myx5''@;'; put 'put ''ZT1NYXRoLmltdWwoWWUsZW4pLENlPShDZT1NYXRoLmltdWwoWWUsZHIpKStNYXRoLmltdWwoQXQsZW4pfDAsRGU9TWF0aC5pbXVsKEF0LGRyKSx5ZT15ZStNYXRoLmltdWwoY3Qsd24pfDAsQ2U9KENlPUNlK01hdGguaW11bChjdCwkbil8MCkrTWF0aC5pbXVsKE50LHduKXwwLERlPURlK01h''@;'; put 'put ''dGguaW11bChOdCwkbil8MCx5ZT15ZStNYXRoLmltdWwob3QsZ24pfDAsQ2U9KENlPUNlK01hdGguaW11bChvdCxLbil8MCkrTWF0aC5pbXVsKFJ0LGduKXwwLERlPURlK01hdGguaW11bChSdCxLbil8MCx5ZT15ZStNYXRoLmltdWwoX3Qsc24pfDAsQ2U9KENlPUNlK01hdGguaW11bChfdCxV''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKG50LHNuKXwwLERlPURlK01hdGguaW11bChudCxVbil8MCx5ZT15ZStNYXRoLmltdWwoZnQsdG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChmdCxHbil8MCkrTWF0aC5pbXVsKEZ0LHRuKXwwLERlPURlK01hdGguaW11bChGdCxHbil8MDt2YXIgSWk9KGd0Kyh5ZT15''@;'; put 'put ''ZStNYXRoLmltdWwocHQsUG4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChwdCxTcil8MCkrTWF0aC5pbXVsKG10LFBuKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKG10LFNyKXwwKSsoQ2U+Pj4xMyl8MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLHllPU1h''@;'; put 'put ''dGguaW11bChKdCxlbiksQ2U9KENlPU1hdGguaW11bChKdCxkcikpK01hdGguaW11bChtbixlbil8MCxEZT1NYXRoLmltdWwobW4sZHIpLHllPXllK01hdGguaW11bChZZSx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKFllLCRuKXwwKStNYXRoLmltdWwoQXQsd24pfDAsRGU9RGUrTWF0aC5p''@;'; put 'put ''bXVsKEF0LCRuKXwwLHllPXllK01hdGguaW11bChjdCxnbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGN0LEtuKXwwKStNYXRoLmltdWwoTnQsZ24pfDAsRGU9RGUrTWF0aC5pbXVsKE50LEtuKXwwLHllPXllK01hdGguaW11bChvdCxzbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG90LFVuKXww''@;'; put 'put ''KStNYXRoLmltdWwoUnQsc24pfDAsRGU9RGUrTWF0aC5pbXVsKFJ0LFVuKXwwLHllPXllK01hdGguaW11bChfdCx0bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKF90LEduKXwwKStNYXRoLmltdWwobnQsdG4pfDAsRGU9RGUrTWF0aC5pbXVsKG50LEduKXwwLHllPXllK01hdGguaW11bChmdCxQ''@;'; put 'put ''bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGZ0LFNyKXwwKStNYXRoLmltdWwoRnQsUG4pfDAsRGU9RGUrTWF0aC5pbXVsKEZ0LFNyKXwwO3ZhciByMD0oZ3QrKHllPXllK01hdGguaW11bChwdCx1bil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKHB0LGNuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwobXQsdW4pfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwobXQsY24pfDApKyhDZT4+PjEzKXwwKSsocjA+Pj4yNil8MCxyMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKGJuLGVuKSxDZT0oQ2U9TWF0aC5pbXVsKGJuLGRyKSkrTWF0aC5pbXVsKGxuLGVuKXwwLERlPU1hdGguaW11''@;'; put 'put ''bChsbixkcikseWU9eWUrTWF0aC5pbXVsKEp0LHduKXwwLENlPShDZT1DZStNYXRoLmltdWwoSnQsJG4pfDApK01hdGguaW11bChtbix3bil8MCxEZT1EZStNYXRoLmltdWwobW4sJG4pfDAseWU9eWUrTWF0aC5pbXVsKFllLGduKXwwLENlPShDZT1DZStNYXRoLmltdWwoWWUsS24pfDApK01h''@;'; put 'put ''dGguaW11bChBdCxnbil8MCxEZT1EZStNYXRoLmltdWwoQXQsS24pfDAseWU9eWUrTWF0aC5pbXVsKGN0LHNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoY3QsVW4pfDApK01hdGguaW11bChOdCxzbil8MCxEZT1EZStNYXRoLmltdWwoTnQsVW4pfDAseWU9eWUrTWF0aC5pbXVsKG90LHRuKXww''@;'; put 'put ''LENlPShDZT1DZStNYXRoLmltdWwob3QsR24pfDApK01hdGguaW11bChSdCx0bil8MCxEZT1EZStNYXRoLmltdWwoUnQsR24pfDAseWU9eWUrTWF0aC5pbXVsKF90LFBuKXwwLENlPShDZT1DZStNYXRoLmltdWwoX3QsU3IpfDApK01hdGguaW11bChudCxQbil8MCxEZT1EZStNYXRoLmltdWwo''@;'; put 'put ''bnQsU3IpfDAseWU9eWUrTWF0aC5pbXVsKGZ0LHVuKXwwLENlPShDZT1DZStNYXRoLmltdWwoZnQsY24pfDApK01hdGguaW11bChGdCx1bil8MCxEZT1EZStNYXRoLmltdWwoRnQsY24pfDA7dmFyIGUwPShndCsoeWU9eWUrTWF0aC5pbXVsKHB0LEd0KXwwKXwwKSsoKDgxOTEmKENlPShDZT1D''@;'; put 'put ''ZStNYXRoLmltdWwocHQsRW4pfDApK01hdGguaW11bChtdCxHdCl8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChtdCxFbil8MCkrKENlPj4+MTMpfDApKyhlMD4+PjI2KXwwLGUwJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoa24sZW4pLENlPShDZT1NYXRoLmltdWwoa24sZHIpKStN''@;'; put 'put ''YXRoLmltdWwoZXIsZW4pfDAsRGU9TWF0aC5pbXVsKGVyLGRyKSx5ZT15ZStNYXRoLmltdWwoYm4sd24pfDAsQ2U9KENlPUNlK01hdGguaW11bChibiwkbil8MCkrTWF0aC5pbXVsKGxuLHduKXwwLERlPURlK01hdGguaW11bChsbiwkbil8MCx5ZT15ZStNYXRoLmltdWwoSnQsZ24pfDAsQ2U9''@;'; put 'put ''KENlPUNlK01hdGguaW11bChKdCxLbil8MCkrTWF0aC5pbXVsKG1uLGduKXwwLERlPURlK01hdGguaW11bChtbixLbil8MCx5ZT15ZStNYXRoLmltdWwoWWUsc24pfDAsQ2U9KENlPUNlK01hdGguaW11bChZZSxVbil8MCkrTWF0aC5pbXVsKEF0LHNuKXwwLERlPURlK01hdGguaW11bChBdCxV''@;'; put 'put ''bil8MCx5ZT15ZStNYXRoLmltdWwoY3QsdG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChjdCxHbil8MCkrTWF0aC5pbXVsKE50LHRuKXwwLERlPURlK01hdGguaW11bChOdCxHbil8MCx5ZT15ZStNYXRoLmltdWwob3QsUG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChvdCxTcil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKFJ0LFBuKXwwLERlPURlK01hdGguaW11bChSdCxTcil8MCx5ZT15ZStNYXRoLmltdWwoX3QsdW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChfdCxjbil8MCkrTWF0aC5pbXVsKG50LHVuKXwwLERlPURlK01hdGguaW11bChudCxjbil8MCx5ZT15ZStNYXRoLmltdWwoZnQsR3QpfDAsQ2U9''@;'; put 'put ''KENlPUNlK01hdGguaW11bChmdCxFbil8MCkrTWF0aC5pbXVsKEZ0LEd0KXwwLERlPURlK01hdGguaW11bChGdCxFbil8MDt2YXIgZDA9KGd0Kyh5ZT15ZStNYXRoLmltdWwocHQscXQpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChwdCxMbil8MCkrTWF0aC5pbXVsKG10LHF0''@;'; put 'put ''KXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKG10LExuKXwwKSsoQ2U+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLHllPU1hdGguaW11bChYbixlbiksQ2U9KENlPU1hdGguaW11bChYbixkcikpK01hdGguaW11bChGcixlbil8MCxEZT1NYXRoLmltdWwoRnIsZHIp''@;'; put 'put ''LHllPXllK01hdGguaW11bChrbix3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGtuLCRuKXwwKStNYXRoLmltdWwoZXIsd24pfDAsRGU9RGUrTWF0aC5pbXVsKGVyLCRuKXwwLHllPXllK01hdGguaW11bChibixnbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGJuLEtuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''bG4sZ24pfDAsRGU9RGUrTWF0aC5pbXVsKGxuLEtuKXwwLHllPXllK01hdGguaW11bChKdCxzbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEp0LFVuKXwwKStNYXRoLmltdWwobW4sc24pfDAsRGU9RGUrTWF0aC5pbXVsKG1uLFVuKXwwLHllPXllK01hdGguaW11bChZZSx0bil8MCxDZT0oQ2U9''@;'; put 'put ''Q2UrTWF0aC5pbXVsKFllLEduKXwwKStNYXRoLmltdWwoQXQsdG4pfDAsRGU9RGUrTWF0aC5pbXVsKEF0LEduKXwwLHllPXllK01hdGguaW11bChjdCxQbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGN0LFNyKXwwKStNYXRoLmltdWwoTnQsUG4pfDAsRGU9RGUrTWF0aC5pbXVsKE50LFNyKXww''@;'; put 'put ''LHllPXllK01hdGguaW11bChvdCx1bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG90LGNuKXwwKStNYXRoLmltdWwoUnQsdW4pfDAsRGU9RGUrTWF0aC5pbXVsKFJ0LGNuKXwwLHllPXllK01hdGguaW11bChfdCxHdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKF90LEVuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''bnQsR3QpfDAsRGU9RGUrTWF0aC5pbXVsKG50LEVuKXwwLHllPXllK01hdGguaW11bChmdCxxdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGZ0LExuKXwwKStNYXRoLmltdWwoRnQscXQpfDAsRGU9RGUrTWF0aC5pbXVsKEZ0LExuKXwwO3ZhciBfMD0oZ3QrKHllPXllK01hdGguaW11bChwdCxv''@;'; put 'put ''cil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKHB0LGdyKXwwKStNYXRoLmltdWwobXQsb3IpfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwobXQsZ3IpfDApKyhDZT4+PjEzKXwwKSsoXzA+Pj4yNil8MCxfMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKFhuLHduKSxD''@;'; put 'put ''ZT0oQ2U9TWF0aC5pbXVsKFhuLCRuKSkrTWF0aC5pbXVsKEZyLHduKXwwLERlPU1hdGguaW11bChGciwkbikseWU9eWUrTWF0aC5pbXVsKGtuLGduKXwwLENlPShDZT1DZStNYXRoLmltdWwoa24sS24pfDApK01hdGguaW11bChlcixnbil8MCxEZT1EZStNYXRoLmltdWwoZXIsS24pfDAseWU9''@;'; put 'put ''eWUrTWF0aC5pbXVsKGJuLHNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoYm4sVW4pfDApK01hdGguaW11bChsbixzbil8MCxEZT1EZStNYXRoLmltdWwobG4sVW4pfDAseWU9eWUrTWF0aC5pbXVsKEp0LHRuKXwwLENlPShDZT1DZStNYXRoLmltdWwoSnQsR24pfDApK01hdGguaW11bChtbix0''@;'; put 'put ''bil8MCxEZT1EZStNYXRoLmltdWwobW4sR24pfDAseWU9eWUrTWF0aC5pbXVsKFllLFBuKXwwLENlPShDZT1DZStNYXRoLmltdWwoWWUsU3IpfDApK01hdGguaW11bChBdCxQbil8MCxEZT1EZStNYXRoLmltdWwoQXQsU3IpfDAseWU9eWUrTWF0aC5pbXVsKGN0LHVuKXwwLENlPShDZT1DZStN''@;'; put 'put ''YXRoLmltdWwoY3QsY24pfDApK01hdGguaW11bChOdCx1bil8MCxEZT1EZStNYXRoLmltdWwoTnQsY24pfDAseWU9eWUrTWF0aC5pbXVsKG90LEd0KXwwLENlPShDZT1DZStNYXRoLmltdWwob3QsRW4pfDApK01hdGguaW11bChSdCxHdCl8MCxEZT1EZStNYXRoLmltdWwoUnQsRW4pfDAseWU9''@;'; put 'put ''eWUrTWF0aC5pbXVsKF90LHF0KXwwLENlPShDZT1DZStNYXRoLmltdWwoX3QsTG4pfDApK01hdGguaW11bChudCxxdCl8MCxEZT1EZStNYXRoLmltdWwobnQsTG4pfDA7dmFyIFUwPShndCsoeWU9eWUrTWF0aC5pbXVsKGZ0LG9yKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwo''@;'; put 'put ''ZnQsZ3IpfDApK01hdGguaW11bChGdCxvcil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChGdCxncil8MCkrKENlPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoWG4sZ24pLENlPShDZT1NYXRoLmltdWwoWG4sS24pKStNYXRoLmltdWwoRnIs''@;'; put 'put ''Z24pfDAsRGU9TWF0aC5pbXVsKEZyLEtuKSx5ZT15ZStNYXRoLmltdWwoa24sc24pfDAsQ2U9KENlPUNlK01hdGguaW11bChrbixVbil8MCkrTWF0aC5pbXVsKGVyLHNuKXwwLERlPURlK01hdGguaW11bChlcixVbil8MCx5ZT15ZStNYXRoLmltdWwoYm4sdG4pfDAsQ2U9KENlPUNlK01hdGgu''@;'; put 'put ''aW11bChibixHbil8MCkrTWF0aC5pbXVsKGxuLHRuKXwwLERlPURlK01hdGguaW11bChsbixHbil8MCx5ZT15ZStNYXRoLmltdWwoSnQsUG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChKdCxTcil8MCkrTWF0aC5pbXVsKG1uLFBuKXwwLERlPURlK01hdGguaW11bChtbixTcil8MCx5ZT15ZStN''@;'; put 'put ''YXRoLmltdWwoWWUsdW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChZZSxjbil8MCkrTWF0aC5pbXVsKEF0LHVuKXwwLERlPURlK01hdGguaW11bChBdCxjbil8MCx5ZT15ZStNYXRoLmltdWwoY3QsR3QpfDAsQ2U9KENlPUNlK01hdGguaW11bChjdCxFbil8MCkrTWF0aC5pbXVsKE50LEd0KXww''@;'; put 'put ''LERlPURlK01hdGguaW11bChOdCxFbil8MCx5ZT15ZStNYXRoLmltdWwob3QscXQpfDAsQ2U9KENlPUNlK01hdGguaW11bChvdCxMbil8MCkrTWF0aC5pbXVsKFJ0LHF0KXwwLERlPURlK01hdGguaW11bChSdCxMbil8MDt2YXIgQmk9KGd0Kyh5ZT15ZStNYXRoLmltdWwoX3Qsb3IpfDApfDAp''@;'; put 'put ''KygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChfdCxncil8MCkrTWF0aC5pbXVsKG50LG9yKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKG50LGdyKXwwKSsoQ2U+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLHllPU1hdGguaW11bChYbixzbiksQ2U9KENlPU1h''@;'; put 'put ''dGguaW11bChYbixVbikpK01hdGguaW11bChGcixzbil8MCxEZT1NYXRoLmltdWwoRnIsVW4pLHllPXllK01hdGguaW11bChrbix0bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGtuLEduKXwwKStNYXRoLmltdWwoZXIsdG4pfDAsRGU9RGUrTWF0aC5pbXVsKGVyLEduKXwwLHllPXllK01hdGgu''@;'; put 'put ''aW11bChibixQbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGJuLFNyKXwwKStNYXRoLmltdWwobG4sUG4pfDAsRGU9RGUrTWF0aC5pbXVsKGxuLFNyKXwwLHllPXllK01hdGguaW11bChKdCx1bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEp0LGNuKXwwKStNYXRoLmltdWwobW4sdW4pfDAsRGU9''@;'; put 'put ''RGUrTWF0aC5pbXVsKG1uLGNuKXwwLHllPXllK01hdGguaW11bChZZSxHdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKFllLEVuKXwwKStNYXRoLmltdWwoQXQsR3QpfDAsRGU9RGUrTWF0aC5pbXVsKEF0LEVuKXwwLHllPXllK01hdGguaW11bChjdCxxdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVs''@;'; put 'put ''KGN0LExuKXwwKStNYXRoLmltdWwoTnQscXQpfDAsRGU9RGUrTWF0aC5pbXVsKE50LExuKXwwO3ZhciBqMD0oZ3QrKHllPXllK01hdGguaW11bChvdCxvcil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKG90LGdyKXwwKStNYXRoLmltdWwoUnQsb3IpfDApKTw8MTMpfDA7Z3Q9''@;'; put 'put ''KChEZT1EZStNYXRoLmltdWwoUnQsZ3IpfDApKyhDZT4+PjEzKXwwKSsoajA+Pj4yNil8MCxqMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKFhuLHRuKSxDZT0oQ2U9TWF0aC5pbXVsKFhuLEduKSkrTWF0aC5pbXVsKEZyLHRuKXwwLERlPU1hdGguaW11bChGcixHbikseWU9eWUrTWF0aC5pbXVs''@;'; put 'put ''KGtuLFBuKXwwLENlPShDZT1DZStNYXRoLmltdWwoa24sU3IpfDApK01hdGguaW11bChlcixQbil8MCxEZT1EZStNYXRoLmltdWwoZXIsU3IpfDAseWU9eWUrTWF0aC5pbXVsKGJuLHVuKXwwLENlPShDZT1DZStNYXRoLmltdWwoYm4sY24pfDApK01hdGguaW11bChsbix1bil8MCxEZT1EZStN''@;'; put 'put ''YXRoLmltdWwobG4sY24pfDAseWU9eWUrTWF0aC5pbXVsKEp0LEd0KXwwLENlPShDZT1DZStNYXRoLmltdWwoSnQsRW4pfDApK01hdGguaW11bChtbixHdCl8MCxEZT1EZStNYXRoLmltdWwobW4sRW4pfDAseWU9eWUrTWF0aC5pbXVsKFllLHF0KXwwLENlPShDZT1DZStNYXRoLmltdWwoWWUs''@;'; put 'put ''TG4pfDApK01hdGguaW11bChBdCxxdCl8MCxEZT1EZStNYXRoLmltdWwoQXQsTG4pfDA7dmFyIEFvPShndCsoeWU9eWUrTWF0aC5pbXVsKGN0LG9yKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoY3QsZ3IpfDApK01hdGguaW11bChOdCxvcil8MCkpPDwxMyl8MDtndD0oKERl''@;'; put 'put ''PURlK01hdGguaW11bChOdCxncil8MCkrKENlPj4+MTMpfDApKyhBbz4+PjI2KXwwLEFvJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoWG4sUG4pLENlPShDZT1NYXRoLmltdWwoWG4sU3IpKStNYXRoLmltdWwoRnIsUG4pfDAsRGU9TWF0aC5pbXVsKEZyLFNyKSx5ZT15ZStNYXRoLmltdWwoa24s''@;'; put 'put ''dW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChrbixjbil8MCkrTWF0aC5pbXVsKGVyLHVuKXwwLERlPURlK01hdGguaW11bChlcixjbil8MCx5ZT15ZStNYXRoLmltdWwoYm4sR3QpfDAsQ2U9KENlPUNlK01hdGguaW11bChibixFbil8MCkrTWF0aC5pbXVsKGxuLEd0KXwwLERlPURlK01hdGgu''@;'; put 'put ''aW11bChsbixFbil8MCx5ZT15ZStNYXRoLmltdWwoSnQscXQpfDAsQ2U9KENlPUNlK01hdGguaW11bChKdCxMbil8MCkrTWF0aC5pbXVsKG1uLHF0KXwwLERlPURlK01hdGguaW11bChtbixMbil8MDt2YXIgS289KGd0Kyh5ZT15ZStNYXRoLmltdWwoWWUsb3IpfDApfDApKygoODE5MSYoQ2U9''@;'; put 'put ''KENlPUNlK01hdGguaW11bChZZSxncil8MCkrTWF0aC5pbXVsKEF0LG9yKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKEF0LGdyKXwwKSsoQ2U+Pj4xMyl8MCkrKEtvPj4+MjYpfDAsS28mPTY3MTA4ODYzLHllPU1hdGguaW11bChYbix1biksQ2U9KENlPU1hdGguaW11bChYbixj''@;'; put 'put ''bikpK01hdGguaW11bChGcix1bil8MCxEZT1NYXRoLmltdWwoRnIsY24pLHllPXllK01hdGguaW11bChrbixHdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGtuLEVuKXwwKStNYXRoLmltdWwoZXIsR3QpfDAsRGU9RGUrTWF0aC5pbXVsKGVyLEVuKXwwLHllPXllK01hdGguaW11bChibixxdCl8''@;'; put 'put ''MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGJuLExuKXwwKStNYXRoLmltdWwobG4scXQpfDAsRGU9RGUrTWF0aC5pbXVsKGxuLExuKXwwO3ZhciBmYT0oZ3QrKHllPXllK01hdGguaW11bChKdCxvcil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKEp0LGdyKXwwKStNYXRoLmltdWwo''@;'; put 'put ''bW4sb3IpfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwobW4sZ3IpfDApKyhDZT4+PjEzKXwwKSsoZmE+Pj4yNil8MCxmYSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKFhuLEd0KSxDZT0oQ2U9TWF0aC5pbXVsKFhuLEVuKSkrTWF0aC5pbXVsKEZyLEd0KXwwLERlPU1hdGguaW11bChG''@;'; put 'put ''cixFbikseWU9eWUrTWF0aC5pbXVsKGtuLHF0KXwwLENlPShDZT1DZStNYXRoLmltdWwoa24sTG4pfDApK01hdGguaW11bChlcixxdCl8MCxEZT1EZStNYXRoLmltdWwoZXIsTG4pfDA7dmFyIGVsPShndCsoeWU9eWUrTWF0aC5pbXVsKGJuLG9yKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStN''@;'; put 'put ''YXRoLmltdWwoYm4sZ3IpfDApK01hdGguaW11bChsbixvcil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChsbixncil8MCkrKENlPj4+MTMpfDApKyhlbD4+PjI2KXwwLGVsJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoWG4scXQpLENlPShDZT1NYXRoLmltdWwoWG4sTG4pKStNYXRo''@;'; put 'put ''LmltdWwoRnIscXQpfDAsRGU9TWF0aC5pbXVsKEZyLExuKTt2YXIgSmk9KGd0Kyh5ZT15ZStNYXRoLmltdWwoa24sb3IpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChrbixncil8MCkrTWF0aC5pbXVsKGVyLG9yKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKGVy''@;'; put 'put ''LGdyKXwwKSsoQ2U+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzO3ZhciBNYT0oZ3QrKHllPU1hdGguaW11bChYbixvcikpfDApKygoODE5MSYoQ2U9KENlPU1hdGguaW11bChYbixncikpK01hdGguaW11bChGcixvcil8MCkpPDwxMyl8MDtyZXR1cm4gZ3Q9KChEZT1NYXRoLmlt''@;'; put 'put ''dWwoRnIsZ3IpKSsoQ2U+Pj4xMyl8MCkrKE1hPj4+MjYpfDAsTWEmPTY3MTA4ODYzLCRlWzBdPUpyLCRlWzFdPVZyLCRlWzJdPXRpLCRlWzNdPU9yLCRlWzRdPWxpLCRlWzVdPUlpLCRlWzZdPXIwLCRlWzddPWUwLCRlWzhdPWQwLCRlWzldPV8wLCRlWzEwXT1VMCwkZVsxMV09QmksJGVbMTJd''@;'; put 'put ''PWowLCRlWzEzXT1BbywkZVsxNF09S28sJGVbMTVdPWZhLCRlWzE2XT1lbCwkZVsxN109SmksJGVbMThdPU1hLDAhPT1ndCYmKCRlWzE5XT1ndCxGLmxlbmd0aCsrKSxGfTtmdW5jdGlvbiBJZShULFMsRil7Ri5uZWdhdGl2ZT1TLm5lZ2F0aXZlXlQubmVnYXRpdmUsRi5sZW5ndGg9VC5sZW5n''@;'; put 'put ''dGgrUy5sZW5ndGg7Zm9yKHZhciB5ZT0wLENlPTAsRGU9MDtEZTxGLmxlbmd0aC0xO0RlKyspe3ZhciBQZT1DZTtDZT0wO2Zvcih2YXIgUWU9NjcxMDg4NjMmeWUsJGU9TWF0aC5taW4oRGUsUy5sZW5ndGgtMSksZ3Q9TWF0aC5tYXgoMCxEZS1ULmxlbmd0aCsxKTtndDw9JGU7Z3QrKyl7dmFy''@;'; put 'put ''IHB0PSgwfFQud29yZHNbRGUtZ3RdKSooMHxTLndvcmRzW2d0XSksbXQ9NjcxMDg4NjMmcHQ7UWU9NjcxMDg4NjMmKG10PW10K1FlfDApLENlKz0oUGU9KFBlPVBlKyhwdC82NzEwODg2NHwwKXwwKSsobXQ+Pj4yNil8MCk+Pj4yNixQZSY9NjcxMDg4NjN9Ri53b3Jkc1tEZV09UWUseWU9UGUs''@;'; put 'put ''UGU9Q2V9cmV0dXJuIDAhPT15ZT9GLndvcmRzW0RlXT15ZTpGLmxlbmd0aC0tLEYuX3N0cmlwKCl9ZnVuY3Rpb24gVGUoVCxTLEYpe3JldHVybiBJZShULFMsRil9ZnVuY3Rpb24gRWUoVCxTKXt0aGlzLng9VCx0aGlzLnk9U31NYXRoLmltdWx8fChTZT1rZSksTi5wcm90b3R5cGUubXVsVG89''@;'; put 'put ''ZnVuY3Rpb24oVCxTKXt2YXIgRj10aGlzLmxlbmd0aCtULmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1ULmxlbmd0aD9TZSh0aGlzLFQsUyk6Rjw2Mz9rZSh0aGlzLFQsUyk6RjwxMDI0P0llKHRoaXMsVCxTKTpUZSh0aGlzLFQsUyl9LEVlLnByb3RvdHlwZS5tYWtlUkJU''@;'; put 'put ''PWZ1bmN0aW9uKFQpe2Zvcih2YXIgUz1uZXcgQXJyYXkoVCksRj1OLnByb3RvdHlwZS5fY291bnRCaXRzKFQpLTEseWU9MDt5ZTxUO3llKyspU1t5ZV09dGhpcy5yZXZCaW4oeWUsRixUKTtyZXR1cm4gU30sRWUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihULFMsRil7aWYoMD09PVR8fFQ9''@;'; put 'put ''PT1GLTEpcmV0dXJuIFQ7Zm9yKHZhciB5ZT0wLENlPTA7Q2U8UztDZSsrKXllfD0oMSZUKTw8Uy1DZS0xLFQ+Pj0xO3JldHVybiB5ZX0sRWUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oVCxTLEYseWUsQ2UsRGUpe2Zvcih2YXIgUGU9MDtQZTxEZTtQZSsrKXllW1BlXT1TW1RbUGVdXSxD''@;'; put 'put ''ZVtQZV09RltUW1BlXV19LEVlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oVCxTLEYseWUsQ2UsRGUpe3RoaXMucGVybXV0ZShEZSxULFMsRix5ZSxDZSk7Zm9yKHZhciBQZT0xO1BlPENlO1BlPDw9MSlmb3IodmFyIFFlPVBlPDwxLCRlPU1hdGguY29zKDIqTWF0aC5QSS9RZSksZ3Q9''@;'; put 'put ''TWF0aC5zaW4oMipNYXRoLlBJL1FlKSx5dD0wO3l0PENlO3l0Kz1RZSlmb3IodmFyIHB0PSRlLG10PWd0LHZ0PTA7dnQ8UGU7dnQrKyl7dmFyIGZ0PUZbeXQrdnRdLEZ0PXllW3l0K3Z0XSxvbj1GW3l0K3Z0K1BlXSxfdD15ZVt5dCt2dCtQZV0sbnQ9cHQqb24tbXQqX3Q7X3Q9cHQqX3QrbXQq''@;'; put 'put ''b24sRlt5dCt2dF09ZnQrKG9uPW50KSx5ZVt5dCt2dF09RnQrX3QsRlt5dCt2dCtQZV09ZnQtb24seWVbeXQrdnQrUGVdPUZ0LV90LHZ0IT09UWUmJihudD0kZSpwdC1ndCptdCxtdD0kZSptdCtndCpwdCxwdD1udCl9fSxFZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oVCxTKXt2''@;'; put 'put ''YXIgRj0xfE1hdGgubWF4KFMsVCkseWU9MSZGLENlPTA7Zm9yKEY9Ri8yfDA7RjtGPj4+PTEpQ2UrKztyZXR1cm4gMTw8Q2UrMSt5ZX0sRWUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihULFMsRil7aWYoIShGPD0xKSlmb3IodmFyIHllPTA7eWU8Ri8yO3llKyspe3ZhciBDZT1UW3ll''@;'; put 'put ''XTtUW3llXT1UW0YteWUtMV0sVFtGLXllLTFdPUNlLENlPVNbeWVdLFNbeWVdPS1TW0YteWUtMV0sU1tGLXllLTFdPS1DZX19LEVlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oVCxTKXtmb3IodmFyIEY9MCx5ZT0wO3llPFMvMjt5ZSsrKXt2YXIgQ2U9ODE5MipNYXRoLnJvdW5k''@;'; put 'put ''KFRbMip5ZSsxXS9TKStNYXRoLnJvdW5kKFRbMip5ZV0vUykrRjtUW3llXT02NzEwODg2MyZDZSxGPUNlPDY3MTA4ODY0PzA6Q2UvNjcxMDg4NjR8MH1yZXR1cm4gVH0sRWUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oVCxTLEYseWUpe2Zvcih2YXIgQ2U9MCxEZT0wO0RlPFM7RGUr''@;'; put 'put ''KylGWzIqRGVdPTgxOTEmKENlKz0wfFRbRGVdKSxGWzIqRGUrMV09ODE5MSYoQ2U+Pj49MTMpLENlPj4+PTEzO2ZvcihEZT0yKlM7RGU8eWU7KytEZSlGW0RlXT0wO1koMD09PUNlKSxZKDA9PSgtODE5MiZDZSkpfSxFZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihUKXtmb3IodmFyIFM9bmV3''@;'; put 'put ''IEFycmF5KFQpLEY9MDtGPFQ7RisrKVNbRl09MDtyZXR1cm4gU30sRWUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oVCxTLEYpe3ZhciB5ZT0yKnRoaXMuZ3Vlc3NMZW4xM2IoVC5sZW5ndGgsUy5sZW5ndGgpLENlPXRoaXMubWFrZVJCVCh5ZSksRGU9dGhpcy5zdHViKHllKSxQZT1uZXcgQXJy''@;'; put 'put ''YXkoeWUpLFFlPW5ldyBBcnJheSh5ZSksJGU9bmV3IEFycmF5KHllKSxndD1uZXcgQXJyYXkoeWUpLHl0PW5ldyBBcnJheSh5ZSkscHQ9bmV3IEFycmF5KHllKSxtdD1GLndvcmRzO210Lmxlbmd0aD15ZSx0aGlzLmNvbnZlcnQxM2IoVC53b3JkcyxULmxlbmd0aCxQZSx5ZSksdGhpcy5jb252''@;'; put 'put ''ZXJ0MTNiKFMud29yZHMsUy5sZW5ndGgsZ3QseWUpLHRoaXMudHJhbnNmb3JtKFBlLERlLFFlLCRlLHllLENlKSx0aGlzLnRyYW5zZm9ybShndCxEZSx5dCxwdCx5ZSxDZSk7Zm9yKHZhciB2dD0wO3Z0PHllO3Z0Kyspe3ZhciBmdD1RZVt2dF0qeXRbdnRdLSRlW3Z0XSpwdFt2dF07JGVbdnRd''@;'; put 'put ''PVFlW3Z0XSpwdFt2dF0rJGVbdnRdKnl0W3Z0XSxRZVt2dF09ZnR9cmV0dXJuIHRoaXMuY29uanVnYXRlKFFlLCRlLHllKSx0aGlzLnRyYW5zZm9ybShRZSwkZSxtdCxEZSx5ZSxDZSksdGhpcy5jb25qdWdhdGUobXQsRGUseWUpLHRoaXMubm9ybWFsaXplMTNiKG10LHllKSxGLm5lZ2F0aXZl''@;'; put 'put ''PVQubmVnYXRpdmVeUy5uZWdhdGl2ZSxGLmxlbmd0aD1ULmxlbmd0aCtTLmxlbmd0aCxGLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oVCl7dmFyIFM9bmV3IE4obnVsbCk7cmV0dXJuIFMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK1QubGVuZ3RoKSx0aGlzLm11bFRv''@;'; put 'put ''KFQsUyl9LE4ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oVCl7dmFyIFM9bmV3IE4obnVsbCk7cmV0dXJuIFMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK1QubGVuZ3RoKSxUZSh0aGlzLFQsUyl9LE4ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5t''@;'; put 'put ''dWxUbyhULHRoaXMpfSxOLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihUKXt2YXIgUz1UPDA7UyYmKFQ9LVQpLFkoIm51bWJlciI9PXR5cGVvZiBUKSxZKFQ8NjcxMDg4NjQpO2Zvcih2YXIgRj0wLHllPTA7eWU8dGhpcy5sZW5ndGg7eWUrKyl7dmFyIENlPSgwfHRoaXMud29yZHNbeWVdKSpU''@;'; put 'put ''LERlPSg2NzEwODg2MyZDZSkrKDY3MTA4ODYzJkYpO0Y+Pj0yNixGKz1DZS82NzEwODg2NHwwLEYrPURlPj4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmRGV9cmV0dXJuIDAhPT1GJiYodGhpcy53b3Jkc1t5ZV09Rix0aGlzLmxlbmd0aCsrKSxTP3RoaXMuaW5lZygpOnRoaXN9LE4ucHJv''@;'; put 'put ''dG90eXBlLm11bG49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihUKX0sTi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxO''@;'; put 'put ''LnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oVCl7dmFyIFM9ZnVuY3Rpb24oRGUpe2Zvcih2YXIgUGU9bmV3IEFycmF5KERlLmJpdExlbmd0aCgpKSxRZT0wO1FlPFBlLmxlbmd0aDtRZSsrKVBlW1FlXT1EZS53b3Jkc1tRZS8yNnwwXT4+PlFlJTI2JjE7cmV0dXJuIFBlfShUKTtpZigwPT09Uy5s''@;'; put 'put ''ZW5ndGgpcmV0dXJuIG5ldyBOKDEpO2Zvcih2YXIgRj10aGlzLHllPTA7eWU8Uy5sZW5ndGgmJjA9PT1TW3llXTt5ZSsrLEY9Ri5zcXIoKSk7aWYoKyt5ZTxTLmxlbmd0aClmb3IodmFyIENlPUYuc3FyKCk7eWU8Uy5sZW5ndGg7eWUrKyxDZT1DZS5zcXIoKSkwIT09U1t5ZV0mJihGPUYubXVs''@;'; put 'put ''KENlKSk7cmV0dXJuIEZ9LE4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihUKXtZKCJudW1iZXIiPT10eXBlb2YgVCYmVD49MCk7dmFyIFMsRj1UJTI2LHllPShULUYpLzI2LENlPTY3MTA4ODYzPj4+MjYtRjw8MjYtRjtpZigwIT09Ril7dmFyIERlPTA7Zm9yKFM9MDtTPHRoaXMubGVuZ3Ro''@;'; put 'put ''O1MrKyl7dmFyIFBlPXRoaXMud29yZHNbU10mQ2U7dGhpcy53b3Jkc1tTXT0oMHx0aGlzLndvcmRzW1NdKS1QZTw8RnxEZSxEZT1QZT4+PjI2LUZ9RGUmJih0aGlzLndvcmRzW1NdPURlLHRoaXMubGVuZ3RoKyspfWlmKDAhPT15ZSl7Zm9yKFM9dGhpcy5sZW5ndGgtMTtTPj0wO1MtLSl0aGlz''@;'; put 'put ''LndvcmRzW1MreWVdPXRoaXMud29yZHNbU107Zm9yKFM9MDtTPHllO1MrKyl0aGlzLndvcmRzW1NdPTA7dGhpcy5sZW5ndGgrPXllfXJldHVybiB0aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihUKXtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNo''@;'; put 'put ''bG4oVCl9LE4ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihULFMsRil7dmFyIHllO1koIm51bWJlciI9PXR5cGVvZiBUJiZUPj0wKSx5ZT1TPyhTLVMlMjYpLzI2OjA7dmFyIENlPVQlMjYsRGU9TWF0aC5taW4oKFQtQ2UpLzI2LHRoaXMubGVuZ3RoKSxQZT02NzEwODg2M142NzEwODg2Mz4+''@;'; put 'put ''PkNlPDxDZSxRZT1GO2lmKHllLT1EZSx5ZT1NYXRoLm1heCgwLHllKSxRZSl7Zm9yKHZhciAkZT0wOyRlPERlOyRlKyspUWUud29yZHNbJGVdPXRoaXMud29yZHNbJGVdO1FlLmxlbmd0aD1EZX1pZigwIT09RGUpaWYodGhpcy5sZW5ndGg+RGUpZm9yKHRoaXMubGVuZ3RoLT1EZSwkZT0wOyRl''@;'; put 'put ''PHRoaXMubGVuZ3RoOyRlKyspdGhpcy53b3Jkc1skZV09dGhpcy53b3Jkc1skZStEZV07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgZ3Q9MDtmb3IoJGU9dGhpcy5sZW5ndGgtMTskZT49MCYmKDAhPT1ndHx8JGU+PXllKTskZS0tKXt2YXIgeXQ9MHx0aGlzLndvcmRz''@;'; put 'put ''WyRlXTt0aGlzLndvcmRzWyRlXT1ndDw8MjYtQ2V8eXQ+Pj5DZSxndD15dCZQZX1yZXR1cm4gUWUmJjAhPT1ndCYmKFFlLndvcmRzW1FlLmxlbmd0aCsrXT1ndCksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuX3N0cmlwKCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLmlzaHJuPWZ1bmN0aW9uKFQsUyxGKXtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oVCxTLEYpfSxOLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oVCl9LE4ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKFQpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKFQpfSxOLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oVCl9LE4ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKFQpfSxOLnByb3RvdHlwZS50ZXN0''@;'; put 'put ''bj1mdW5jdGlvbihUKXtZKCJudW1iZXIiPT10eXBlb2YgVCYmVD49MCk7dmFyIFM9VCUyNixGPShULVMpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PUZ8fCEodGhpcy53b3Jkc1tGXSYxPDxTKSl9LE4ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihUKXtZKCJudW1iZXIiPT10eXBlb2YgVCYm''@;'; put 'put ''VD49MCk7dmFyIFM9VCUyNixGPShULVMpLzI2O3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Rj90aGlzOigwIT09UyYmRisrLHRoaXMubGVuZ3RoPU1hdGgubWluKEYsdGhpcy5sZW5ndGgp''@;'; put 'put ''LDAhPT1TJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5TPDxTKSx0aGlzLl9zdHJpcCgpKX0sTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oVCl9LE4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9u''@;'; put 'put ''KFQpe3JldHVybiBZKCJudW1iZXIiPT10eXBlb2YgVCksWShUPDY3MTA4ODY0KSxUPDA/dGhpcy5pc3VibigtVCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTw9VD8odGhpcy53b3Jkc1swXT1ULSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oVCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKFQpfSxOLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oVCl7dGhpcy53b3Jkc1swXSs9VDtmb3IodmFyIFM9MDtTPHRoaXMubGVuZ3RoJiZ0aGlzLndv''@;'; put 'put ''cmRzW1NdPj02NzEwODg2NDtTKyspdGhpcy53b3Jkc1tTXS09NjcxMDg4NjQsUz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tTKzFdPTE6dGhpcy53b3Jkc1tTKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFMrMSksdGhpc30sTi5wcm90b3R5cGUuaXN1''@;'; put 'put ''Ym49ZnVuY3Rpb24oVCl7aWYoWSgibnVtYmVyIj09dHlwZW9mIFQpLFkoVDw2NzEwODg2NCksVDwwKXJldHVybiB0aGlzLmlhZGRuKC1UKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oVCksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhp''@;'; put 'put ''cy53b3Jkc1swXS09VCwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgUz0wO1M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbU108MDtTKyspdGhpcy53b3Jkc1tTXSs9NjcxMDg4''@;'; put 'put ''NjQsdGhpcy53b3Jkc1tTKzFdLT0xO3JldHVybiB0aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oVCl9LE4ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihUKX0sTi5w''@;'; put 'put ''cm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sTi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LE4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihULFMsRil7dmFyIHllLENlO3RoaXMu''@;'; put 'put ''X2V4cGFuZChULmxlbmd0aCtGKTt2YXIgUGU9MDtmb3IoeWU9MDt5ZTxULmxlbmd0aDt5ZSsrKXtDZT0oMHx0aGlzLndvcmRzW3llK0ZdKStQZTt2YXIgUWU9KDB8VC53b3Jkc1t5ZV0pKlM7UGU9KChDZS09NjcxMDg4NjMmUWUpPj4yNiktKFFlLzY3MTA4ODY0fDApLHRoaXMud29yZHNbeWUr''@;'; put 'put ''Rl09NjcxMDg4NjMmQ2V9Zm9yKDt5ZTx0aGlzLmxlbmd0aC1GO3llKyspUGU9KENlPSgwfHRoaXMud29yZHNbeWUrRl0pK1BlKT4+MjYsdGhpcy53b3Jkc1t5ZStGXT02NzEwODg2MyZDZTtpZigwPT09UGUpcmV0dXJuIHRoaXMuX3N0cmlwKCk7Zm9yKFkoLTE9PT1QZSksUGU9MCx5ZT0wO3ll''@;'; put 'put ''PHRoaXMubGVuZ3RoO3llKyspUGU9KENlPS0oMHx0aGlzLndvcmRzW3llXSkrUGUpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZDZTtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX3N0cmlwKCl9LE4ucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKFQsUyl7dmFyIEYseWU9dGhp''@;'; put 'put ''cy5jbG9uZSgpLENlPVQsRGU9MHxDZS53b3Jkc1tDZS5sZW5ndGgtMV07MCE9KEY9MjYtdGhpcy5fY291bnRCaXRzKERlKSkmJihDZT1DZS51c2hsbihGKSx5ZS5pdXNobG4oRiksRGU9MHxDZS53b3Jkc1tDZS5sZW5ndGgtMV0pO3ZhciBQZSxRZT15ZS5sZW5ndGgtQ2UubGVuZ3RoO2lmKCJt''@;'; put 'put ''b2QiIT09Uyl7KFBlPW5ldyBOKG51bGwpKS5sZW5ndGg9UWUrMSxQZS53b3Jkcz1uZXcgQXJyYXkoUGUubGVuZ3RoKTtmb3IodmFyICRlPTA7JGU8UGUubGVuZ3RoOyRlKyspUGUud29yZHNbJGVdPTB9dmFyIGd0PXllLmNsb25lKCkuX2lzaGxuc3VibXVsKENlLDEsUWUpOzA9PT1ndC5uZWdh''@;'; put 'put ''dGl2ZSYmKHllPWd0LFBlJiYoUGUud29yZHNbUWVdPTEpKTtmb3IodmFyIHl0PVFlLTE7eXQ+PTA7eXQtLSl7dmFyIHB0PTY3MTA4ODY0KigwfHllLndvcmRzW0NlLmxlbmd0aCt5dF0pKygwfHllLndvcmRzW0NlLmxlbmd0aCt5dC0xXSk7Zm9yKHB0PU1hdGgubWluKHB0L0RlfDAsNjcxMDg4''@;'; put 'put ''NjMpLHllLl9pc2hsbnN1Ym11bChDZSxwdCx5dCk7MCE9PXllLm5lZ2F0aXZlOylwdC0tLHllLm5lZ2F0aXZlPTAseWUuX2lzaGxuc3VibXVsKENlLDEseXQpLHllLmlzWmVybygpfHwoeWUubmVnYXRpdmVePTEpO1BlJiYoUGUud29yZHNbeXRdPXB0KX1yZXR1cm4gUGUmJlBlLl9zdHJpcCgp''@;'; put 'put ''LHllLl9zdHJpcCgpLCJkaXYiIT09UyYmMCE9PUYmJnllLml1c2hybihGKSx7ZGl2OlBlfHxudWxsLG1vZDp5ZX19LE4ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihULFMsRil7cmV0dXJuIFkoIVQuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTigwKSxtb2Q6bmV3IE4oMCl9''@;'; put 'put ''OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09VC5uZWdhdGl2ZT8oRGU9dGhpcy5uZWcoKS5kaXZtb2QoVCxTKSwibW9kIiE9PVMmJih5ZT1EZS5kaXYubmVnKCkpLCJkaXYiIT09UyYmKENlPURlLm1vZC5uZWcoKSxGJiYwIT09Q2UubmVnYXRpdmUmJkNlLmlhZGQoVCkpLHtkaXY6eWUsbW9kOkNl''@;'; put 'put ''fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1ULm5lZ2F0aXZlPyhEZT10aGlzLmRpdm1vZChULm5lZygpLFMpLCJtb2QiIT09UyYmKHllPURlLmRpdi5uZWcoKSkse2Rpdjp5ZSxtb2Q6RGUubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmVC5uZWdhdGl2ZSk/KERlPXRoaXMubmVnKCkuZGl2bW9k''@;'; put 'put ''KFQubmVnKCksUyksImRpdiIhPT1TJiYoQ2U9RGUubW9kLm5lZygpLEYmJjAhPT1DZS5uZWdhdGl2ZSYmQ2UuaXN1YihUKSkse2RpdjpEZS5kaXYsbW9kOkNlfSk6VC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKFQpPDA/e2RpdjpuZXcgTigwKSxtb2Q6dGhpc306MT09PVQubGVuZ3Ro''@;'; put 'put ''PyJkaXYiPT09Uz97ZGl2OnRoaXMuZGl2bihULndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1TP3tkaXY6bnVsbCxtb2Q6bmV3IE4odGhpcy5tb2RybihULndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKFQud29yZHNbMF0pLG1vZDpuZXcgTih0aGlzLm1vZHJuKFQud29yZHNbMF0pKX06''@;'; put 'put ''dGhpcy5fd29yZERpdihULFMpO3ZhciB5ZSxDZSxEZX0sTi5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmRpdm1vZChULCJkaXYiLCExKS5kaXZ9LE4ucHJvdG90eXBlLm1vZD1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5kaXZtb2QoVCwibW9kIiwhMSkubW9kfSxOLnBy''@;'; put 'put ''b3RvdHlwZS51bW9kPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmRpdm1vZChULCJtb2QiLCEwKS5tb2R9LE4ucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKFQpe3ZhciBTPXRoaXMuZGl2bW9kKFQpO2lmKFMubW9kLmlzWmVybygpKXJldHVybiBTLmRpdjt2YXIgRj0wIT09Uy5kaXYubmVn''@;'; put 'put ''YXRpdmU/Uy5tb2QuaXN1YihUKTpTLm1vZCx5ZT1ULnVzaHJuKDEpLENlPVQuYW5kbG4oMSksRGU9Ri5jbXAoeWUpO3JldHVybiBEZTwwfHwxPT09Q2UmJjA9PT1EZT9TLmRpdjowIT09Uy5kaXYubmVnYXRpdmU/Uy5kaXYuaXN1Ym4oMSk6Uy5kaXYuaWFkZG4oMSl9LE4ucHJvdG90eXBlLm1v''@;'; put 'put ''ZHJuPWZ1bmN0aW9uKFQpe3ZhciBTPVQ8MDtTJiYoVD0tVCksWShUPD02NzEwODg2Myk7Zm9yKHZhciBGPTY3MTA4ODY0JVQseWU9MCxDZT10aGlzLmxlbmd0aC0xO0NlPj0wO0NlLS0peWU9KEYqeWUrKDB8dGhpcy53b3Jkc1tDZV0pKSVUO3JldHVybiBTPy15ZTp5ZX0sTi5wcm90b3R5cGUu''@;'; put 'put ''bW9kbj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5tb2RybihUKX0sTi5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oVCl7dmFyIFM9VDwwO1MmJihUPS1UKSxZKFQ8PTY3MTA4ODYzKTtmb3IodmFyIEY9MCx5ZT10aGlzLmxlbmd0aC0xO3llPj0wO3llLS0pe3ZhciBDZT0oMHx0aGlzLndvcmRz''@;'; put 'put ''W3llXSkrNjcxMDg4NjQqRjt0aGlzLndvcmRzW3llXT1DZS9UfDAsRj1DZSVUfXJldHVybiB0aGlzLl9zdHJpcCgpLFM/dGhpcy5pbmVnKCk6dGhpc30sTi5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKFQpfSxOLnByb3RvdHlwZS5lZ2NkPWZ1''@;'; put 'put ''bmN0aW9uKFQpe1koMD09PVQubmVnYXRpdmUpLFkoIVQuaXNaZXJvKCkpO3ZhciBTPXRoaXMsRj1ULmNsb25lKCk7Uz0wIT09Uy5uZWdhdGl2ZT9TLnVtb2QoVCk6Uy5jbG9uZSgpO2Zvcih2YXIgeWU9bmV3IE4oMSksQ2U9bmV3IE4oMCksRGU9bmV3IE4oMCksUGU9bmV3IE4oMSksUWU9MDtT''@;'; put 'put ''LmlzRXZlbigpJiZGLmlzRXZlbigpOylTLml1c2hybigxKSxGLml1c2hybigxKSwrK1FlO2Zvcih2YXIgJGU9Ri5jbG9uZSgpLGd0PVMuY2xvbmUoKTshUy5pc1plcm8oKTspe2Zvcih2YXIgeXQ9MCxwdD0xOzA9PShTLndvcmRzWzBdJnB0KSYmeXQ8MjY7Kyt5dCxwdDw8PTEpO2lmKHl0PjAp''@;'; put 'put ''Zm9yKFMuaXVzaHJuKHl0KTt5dC0tID4wOykoeWUuaXNPZGQoKXx8Q2UuaXNPZGQoKSkmJih5ZS5pYWRkKCRlKSxDZS5pc3ViKGd0KSkseWUuaXVzaHJuKDEpLENlLml1c2hybigxKTtmb3IodmFyIG10PTAsdnQ9MTswPT0oRi53b3Jkc1swXSZ2dCkmJm10PDI2OysrbXQsdnQ8PD0xKTtpZiht''@;'; put 'put ''dD4wKWZvcihGLml1c2hybihtdCk7bXQtLSA+MDspKERlLmlzT2RkKCl8fFBlLmlzT2RkKCkpJiYoRGUuaWFkZCgkZSksUGUuaXN1YihndCkpLERlLml1c2hybigxKSxQZS5pdXNocm4oMSk7Uy5jbXAoRik+PTA/KFMuaXN1YihGKSx5ZS5pc3ViKERlKSxDZS5pc3ViKFBlKSk6KEYuaXN1YihT''@;'; put 'put ''KSxEZS5pc3ViKHllKSxQZS5pc3ViKENlKSl9cmV0dXJue2E6RGUsYjpQZSxnY2Q6Ri5pdXNobG4oUWUpfX0sTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKFQpe1koMD09PVQubmVnYXRpdmUpLFkoIVQuaXNaZXJvKCkpO3ZhciBTPXRoaXMsRj1ULmNsb25lKCk7Uz0wIT09Uy5uZWdhdGl2''@;'; put 'put ''ZT9TLnVtb2QoVCk6Uy5jbG9uZSgpO2Zvcih2YXIgeWUsQ2U9bmV3IE4oMSksRGU9bmV3IE4oMCksUGU9Ri5jbG9uZSgpO1MuY21wbigxKT4wJiZGLmNtcG4oMSk+MDspe2Zvcih2YXIgUWU9MCwkZT0xOzA9PShTLndvcmRzWzBdJiRlKSYmUWU8MjY7KytRZSwkZTw8PTEpO2lmKFFlPjApZm9y''@;'; put 'put ''KFMuaXVzaHJuKFFlKTtRZS0tID4wOylDZS5pc09kZCgpJiZDZS5pYWRkKFBlKSxDZS5pdXNocm4oMSk7Zm9yKHZhciBndD0wLHl0PTE7MD09KEYud29yZHNbMF0meXQpJiZndDwyNjsrK2d0LHl0PDw9MSk7aWYoZ3Q+MClmb3IoRi5pdXNocm4oZ3QpO2d0LS0gPjA7KURlLmlzT2RkKCkmJkRl''@;'; put 'put ''LmlhZGQoUGUpLERlLml1c2hybigxKTtTLmNtcChGKT49MD8oUy5pc3ViKEYpLENlLmlzdWIoRGUpKTooRi5pc3ViKFMpLERlLmlzdWIoQ2UpKX1yZXR1cm4oeWU9MD09PVMuY21wbigxKT9DZTpEZSkuY21wbigwKTwwJiZ5ZS5pYWRkKFQpLHllfSxOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24o''@;'; put 'put ''VCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gVC5hYnMoKTtpZihULmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBTPXRoaXMuY2xvbmUoKSxGPVQuY2xvbmUoKTtTLm5lZ2F0aXZlPTAsRi5uZWdhdGl2ZT0wO2Zvcih2YXIgeWU9MDtTLmlzRXZlbigpJiZGLmlzRXZlbigpO3llKysp''@;'; put 'put ''Uy5pdXNocm4oMSksRi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO1MuaXNFdmVuKCk7KVMuaXVzaHJuKDEpO2Zvcig7Ri5pc0V2ZW4oKTspRi5pdXNocm4oMSk7dmFyIENlPVMuY21wKEYpO2lmKENlPDApe3ZhciBEZT1TO1M9RixGPURlfWVsc2UgaWYoMD09PUNlfHwwPT09Ri5jbXBuKDEpKWJy''@;'; put 'put ''ZWFrO1MuaXN1YihGKX1yZXR1cm4gRi5pdXNobG4oeWUpfSxOLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmVnY2QoVCkuYS51bW9kKFQpfSxOLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LE4ucHJvdG90eXBl''@;'; put 'put ''LmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZUfSxOLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihUKXtZKCJudW1iZXIiPT10eXBlb2YgVCk7dmFyIFM9VCUyNixG''@;'; put 'put ''PShULVMpLzI2LHllPTE8PFM7aWYodGhpcy5sZW5ndGg8PUYpcmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl18PXllLHRoaXM7Zm9yKHZhciBDZT15ZSxEZT1GOzAhPT1DZSYmRGU8dGhpcy5sZW5ndGg7RGUrKyl7dmFyIFBlPTB8dGhpcy53b3Jkc1tEZV07Q2U9KFBlKz1D''@;'; put 'put ''ZSk+Pj4yNix0aGlzLndvcmRzW0RlXT1QZSY9NjcxMDg4NjN9cmV0dXJuIDAhPT1DZSYmKHRoaXMud29yZHNbRGVdPUNlLHRoaXMubGVuZ3RoKyspLHRoaXN9LE4ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxO''@;'; put 'put ''LnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKFQpe3ZhciBTLEY9VDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhRilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmRilyZXR1cm4gMTtpZih0aGlzLl9zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUz0xO2Vsc2V7RiYmKFQ9LVQpLFkoVDw9Njcx''@;'; put 'put ''MDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHllPTB8dGhpcy53b3Jkc1swXTtTPXllPT09VD8wOnllPFQ/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUzpTfSxOLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oVCl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1ULm5lZ2F0''@;'; put 'put ''aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09VC5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgUz10aGlzLnVjbXAoVCk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVM6U30sTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihUKXtpZih0aGlzLmxlbmd0aD5ULmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxULmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIFM9MCxGPXRoaXMubGVuZ3RoLTE7Rj49MDtGLS0pe3ZhciB5ZT0wfHRoaXMud29yZHNbRl0sQ2U9MHxULndvcmRzW0ZdO2lmKHllIT09Q2Upe3llPENlP1M9LTE6eWU+Q2UmJihTPTEpO2JyZWFrfX1yZXR1''@;'; put 'put ''cm4gU30sTi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKFQpe3JldHVybiAxPT09dGhpcy5jbXBuKFQpfSxOLnByb3RvdHlwZS5ndD1mdW5jdGlvbihUKXtyZXR1cm4gMT09PXRoaXMuY21wKFQpfSxOLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNtcG4oVCk+PTB9LE4u''@;'; put 'put ''cHJvdG90eXBlLmd0ZT1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbXAoVCk+PTB9LE4ucHJvdG90eXBlLmx0bj1mdW5jdGlvbihUKXtyZXR1cm4tMT09PXRoaXMuY21wbihUKX0sTi5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oVCl7cmV0dXJuLTE9PT10aGlzLmNtcChUKX0sTi5wcm90b3R5cGUu''@;'; put 'put ''bHRlbj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbXBuKFQpPD0wfSxOLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY21wKFQpPD0wfSxOLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oVCl7cmV0dXJuIDA9PT10aGlzLmNtcG4oVCl9LE4ucHJvdG90eXBlLmVxPWZ1bmN0''@;'; put 'put ''aW9uKFQpe3JldHVybiAwPT09dGhpcy5jbXAoVCl9LE4ucmVkPWZ1bmN0aW9uKFQpe3JldHVybiBuZXcgUChUKX0sTi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oVCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksWSgwPT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxULmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoVCl9LE4ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1''@;'; put 'put ''Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxOLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMucmVkPVQsdGhpc30sTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oVCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEg''@;'; put 'put ''bnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoVCl9LE4ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihUKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLFQpfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5yZWRJQWRkPWZ1bmN0aW9uKFQpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxUKX0sTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKFQpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTdWIgd29y''@;'; put 'put ''a3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsVCl9LE4ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oVCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLFQpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oVCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxUKX0sTi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKFQpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29y''@;'; put 'put ''a3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxUKSx0aGlzLnJlZC5tdWwodGhpcyxUKX0sTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihUKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRo''@;'; put 'put ''aXMucmVkLl92ZXJpZnkyKHRoaXMsVCksdGhpcy5yZWQuaW11bCh0aGlzLFQpfSxOLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVk''@;'; put 'put ''LnNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE4ucHJvdG90eXBlLnJlZFNxcnQ9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJl''@;'; put 'put ''ZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi''@;'; put 'put ''KSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihUKXtyZXR1cm4gWSh0aGlzLnJlZCYmIVQucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlz''@;'; put 'put ''LFQpfTt2YXIgaGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBPKFQsUyl7dGhpcy5uYW1lPVQsdGhpcy5wPW5ldyBOKFMsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIo''@;'; put 'put ''dGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiB6KCl7Ty5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIG5lKCl7Ty5jYWxsKHRoaXMsInAy''@;'; put 'put ''MjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIHRlKCl7Ty5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0''@;'; put 'put ''aW9uIHgoKXtPLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gUChUKXtpZigic3RyaW5nIj09dHlwZW9mIFQpe3ZhciBTPU4uX3ByaW1lKFQpO3RoaXMubT1TLnAs''@;'; put 'put ''dGhpcy5wcmltZT1TfWVsc2UgWShULmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPVQsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIFYoVCl7UC5jYWxsKHRoaXMsVCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYm''@;'; put 'put ''KHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgTigxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1''@;'; put 'put ''Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1PLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIFQ9bmV3IE4obnVsbCk7cmV0dXJuIFQud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0''@;'; put 'put ''aGlzLm4vMTMpKSxUfSxPLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKFQpe3ZhciBTLEY9VDtkb3t0aGlzLnNwbGl0KEYsdGhpcy50bXApLFM9KEY9KEY9dGhpcy5pbXVsSyhGKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFM+dGhpcy5uKTt2YXIgeWU9Uzx0aGlzLm4/''@;'; put 'put ''LTE6Ri51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT15ZT8oRi53b3Jkc1swXT0wLEYubGVuZ3RoPTEpOnllPjA/Ri5pc3ViKHRoaXMucCk6dm9pZCAwIT09Ri5zdHJpcD9GLnN0cmlwKCk6Ri5fc3RyaXAoKSxGfSxPLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihULFMpe1QuaXVzaHJuKHRoaXMu''@;'; put 'put ''biwwLFMpfSxPLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihUKXtyZXR1cm4gVC5pbXVsKHRoaXMuayl9LFcoeixPKSx6LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihULFMpe2Zvcih2YXIgRj00MTk0MzAzLHllPU1hdGgubWluKFQubGVuZ3RoLDkpLENlPTA7Q2U8eWU7Q2UrKylTLndvcmRz''@;'; put 'put ''W0NlXT1ULndvcmRzW0NlXTtpZihTLmxlbmd0aD15ZSxULmxlbmd0aDw9OSlyZXR1cm4gVC53b3Jkc1swXT0wLHZvaWQoVC5sZW5ndGg9MSk7dmFyIERlPVQud29yZHNbOV07Zm9yKFMud29yZHNbUy5sZW5ndGgrK109RGUmRixDZT0xMDtDZTxULmxlbmd0aDtDZSsrKXt2YXIgUGU9MHxULndv''@;'; put 'put ''cmRzW0NlXTtULndvcmRzW0NlLTEwXT0oUGUmRik8PDR8RGU+Pj4yMixEZT1QZX1ULndvcmRzW0NlLTEwXT1EZT4+Pj0yMixULmxlbmd0aC09MD09PURlJiZULmxlbmd0aD4xMD8xMDo5fSx6LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihUKXtULndvcmRzW1QubGVuZ3RoXT0wLFQud29yZHNb''@;'; put 'put ''VC5sZW5ndGgrMV09MCxULmxlbmd0aCs9Mjtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0aDtGKyspe3ZhciB5ZT0wfFQud29yZHNbRl07VC53b3Jkc1tGXT02NzEwODg2MyYoUys9OTc3KnllKSxTPTY0KnllKyhTLzY3MTA4ODY0fDApfXJldHVybiAwPT09VC53b3Jkc1tULmxlbmd0aC0xXSYm''@;'; put 'put ''KFQubGVuZ3RoLS0sMD09PVQud29yZHNbVC5sZW5ndGgtMV0mJlQubGVuZ3RoLS0pLFR9LFcobmUsTyksVyh0ZSxPKSxXKHgsTykseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oVCl7Zm9yKHZhciBTPTAsRj0wO0Y8VC5sZW5ndGg7RisrKXt2YXIgeWU9MTkqKDB8VC53b3Jkc1tGXSkrUyxD''@;'; put 'put ''ZT02NzEwODg2MyZ5ZTt5ZT4+Pj0yNixULndvcmRzW0ZdPUNlLFM9eWV9cmV0dXJuIDAhPT1TJiYoVC53b3Jkc1tULmxlbmd0aCsrXT1TKSxUfSxOLl9wcmltZT1mdW5jdGlvbihUKXtpZihoZVtUXSlyZXR1cm4gaGVbVF07dmFyIFM7aWYoImsyNTYiPT09VClTPW5ldyB6O2Vsc2UgaWYoInAy''@;'; put 'put ''MjQiPT09VClTPW5ldyBuZTtlbHNlIGlmKCJwMTkyIj09PVQpUz1uZXcgdGU7ZWxzZXtpZigicDI1NTE5IiE9PVQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrVCk7Uz1uZXcgeH1yZXR1cm4gaGVbVF09UyxTfSxQLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihUKXtZKDA9''@;'; put 'put ''PT1ULm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFkoVC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sUC5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oVCxTKXtZKDA9PShULm5lZ2F0aXZlfFMubmVnYXRpdmUpLCJyZWQgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHBvc2l0aXZlcyIpLFkoVC5yZWQmJlQucmVkPT09Uy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sUC5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoVCkuX2ZvcmNlUmVkKHRoaXMp''@;'; put 'put ''OihhZShULFQudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKSksVCl9LFAucHJvdG90eXBlLm5lZz1mdW5jdGlvbihUKXtyZXR1cm4gVC5pc1plcm8oKT9ULmNsb25lKCk6dGhpcy5tLnN1YihUKS5fZm9yY2VSZWQodGhpcyl9LFAucHJvdG90eXBlLmFkZD1mdW5jdGlvbihULFMpe3RoaXMu''@;'; put 'put ''X3ZlcmlmeTIoVCxTKTt2YXIgRj1ULmFkZChTKTtyZXR1cm4gRi5jbXAodGhpcy5tKT49MCYmRi5pc3ViKHRoaXMubSksRi5fZm9yY2VSZWQodGhpcyl9LFAucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oVCxTKXt0aGlzLl92ZXJpZnkyKFQsUyk7dmFyIEY9VC5pYWRkKFMpO3JldHVybiBGLmNt''@;'; put 'put ''cCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGfSxQLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oVCxTKXt0aGlzLl92ZXJpZnkyKFQsUyk7dmFyIEY9VC5zdWIoUyk7cmV0dXJuIEYuY21wbigwKTwwJiZGLmlhZGQodGhpcy5tKSxGLl9mb3JjZVJlZCh0aGlzKX0sUC5wcm90b3R5cGUuaXN1''@;'; put 'put ''Yj1mdW5jdGlvbihULFMpe3RoaXMuX3ZlcmlmeTIoVCxTKTt2YXIgRj1ULmlzdWIoUyk7cmV0dXJuIEYuY21wbigwKTwwJiZGLmlhZGQodGhpcy5tKSxGfSxQLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oVCxTKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShUKSx0aGlzLmltb2QoVC51c2hsbihTKSl9''@;'; put 'put ''LFAucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oVCxTKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihULFMpLHRoaXMuaW1vZChULmltdWwoUykpfSxQLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oVCxTKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihULFMpLHRoaXMuaW1vZChULm11bChTKSl9LFAucHJvdG90''@;'; put 'put ''eXBlLmlzcXI9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuaW11bChULFQuY2xvbmUoKSl9LFAucHJvdG90eXBlLnNxcj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5tdWwoVCxUKX0sUC5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihUKXtpZihULmlzWmVybygpKXJldHVybiBULmNsb25lKCk7dmFy''@;'; put 'put ''IFM9dGhpcy5tLmFuZGxuKDMpO2lmKFkoUyUyPT0xKSwzPT09Uyl7dmFyIEY9dGhpcy5tLmFkZChuZXcgTigxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhULEYpfWZvcih2YXIgeWU9dGhpcy5tLnN1Ym4oMSksQ2U9MDsheWUuaXNaZXJvKCkmJjA9PT15ZS5hbmRsbigxKTspQ2UrKyx5''@;'; put 'put ''ZS5pdXNocm4oMSk7WSgheWUuaXNaZXJvKCkpO3ZhciBEZT1uZXcgTigxKS50b1JlZCh0aGlzKSxQZT1EZS5yZWROZWcoKSxRZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksJGU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcigkZT1uZXcgTigyKiRlKiRlKS50b1JlZCh0aGlzKTswIT09dGhpcy5w''@;'; put 'put ''b3coJGUsUWUpLmNtcChQZSk7KSRlLnJlZElBZGQoUGUpO2Zvcih2YXIgZ3Q9dGhpcy5wb3coJGUseWUpLHl0PXRoaXMucG93KFQseWUuYWRkbigxKS5pdXNocm4oMSkpLHB0PXRoaXMucG93KFQseWUpLG10PUNlOzAhPT1wdC5jbXAoRGUpOyl7Zm9yKHZhciB2dD1wdCxmdD0wOzAhPT12dC5j''@;'; put 'put ''bXAoRGUpO2Z0KyspdnQ9dnQucmVkU3FyKCk7WShmdDxtdCk7dmFyIEZ0PXRoaXMucG93KGd0LG5ldyBOKDEpLml1c2hsbihtdC1mdC0xKSk7eXQ9eXQucmVkTXVsKEZ0KSxndD1GdC5yZWRTcXIoKSxwdD1wdC5yZWRNdWwoZ3QpLG10PWZ0fXJldHVybiB5dH0sUC5wcm90b3R5cGUuaW52bT1m''@;'; put 'put ''dW5jdGlvbihUKXt2YXIgUz1ULl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09Uy5uZWdhdGl2ZT8oUy5uZWdhdGl2ZT0wLHRoaXMuaW1vZChTKS5yZWROZWcoKSk6dGhpcy5pbW9kKFMpfSxQLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oVCxTKXtpZihTLmlzWmVybygpKXJldHVybiBuZXcgTigx''@;'; put 'put ''KS50b1JlZCh0aGlzKTtpZigwPT09Uy5jbXBuKDEpKXJldHVybiBULmNsb25lKCk7dmFyIEY9bmV3IEFycmF5KDE2KTtGWzBdPW5ldyBOKDEpLnRvUmVkKHRoaXMpLEZbMV09VDtmb3IodmFyIHllPTI7eWU8Ri5sZW5ndGg7eWUrKylGW3llXT10aGlzLm11bChGW3llLTFdLFQpO3ZhciBDZT1G''@;'; put 'put ''WzBdLERlPTAsUGU9MCxRZT1TLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09UWUmJihRZT0yNikseWU9Uy5sZW5ndGgtMTt5ZT49MDt5ZS0tKXtmb3IodmFyICRlPVMud29yZHNbeWVdLGd0PVFlLTE7Z3Q+PTA7Z3QtLSl7dmFyIHl0PSRlPj5ndCYxO0NlIT09RlswXSYmKENlPXRoaXMuc3FyKENl''@;'; put 'put ''KSksMCE9PXl0fHwwIT09RGU/KERlPDw9MSxEZXw9eXQsKDQ9PSsrUGV8fDA9PT15ZSYmMD09PWd0KSYmKENlPXRoaXMubXVsKENlLEZbRGVdKSxQZT0wLERlPTApKTpQZT0wfVFlPTI2fXJldHVybiBDZX0sUC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKFQpe3ZhciBTPVQudW1vZCh0''@;'; put 'put ''aGlzLm0pO3JldHVybiBTPT09VD9TLmNsb25lKCk6U30sUC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oVCl7dmFyIFM9VC5jbG9uZSgpO3JldHVybiBTLnJlZD1udWxsLFN9LE4ubW9udD1mdW5jdGlvbihUKXtyZXR1cm4gbmV3IFYoVCl9LFcoVixQKSxWLnByb3RvdHlwZS5jb252''@;'; put 'put ''ZXJ0VG89ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuaW1vZChULnVzaGxuKHRoaXMuc2hpZnQpKX0sVi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oVCl7dmFyIFM9dGhpcy5pbW9kKFQubXVsKHRoaXMucmludikpO3JldHVybiBTLnJlZD1udWxsLFN9LFYucHJvdG90eXBlLmltdWw9''@;'; put 'put ''ZnVuY3Rpb24oVCxTKXtpZihULmlzWmVybygpfHxTLmlzWmVybygpKXJldHVybiBULndvcmRzWzBdPTAsVC5sZW5ndGg9MSxUO3ZhciBGPVQuaW11bChTKSx5ZT1GLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxDZT1GLmlz''@;'; put 'put ''dWIoeWUpLml1c2hybih0aGlzLnNoaWZ0KSxEZT1DZTtyZXR1cm4gQ2UuY21wKHRoaXMubSk+PTA/RGU9Q2UuaXN1Yih0aGlzLm0pOkNlLmNtcG4oMCk8MCYmKERlPUNlLmlhZGQodGhpcy5tKSksRGUuX2ZvcmNlUmVkKHRoaXMpfSxWLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oVCxTKXtpZihU''@;'; put 'put ''LmlzWmVybygpfHxTLmlzWmVybygpKXJldHVybiBuZXcgTigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIEY9VC5tdWwoUykseWU9Ri5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksQ2U9Ri5pc3ViKHllKS5pdXNocm4odGhpcy5z''@;'; put 'put ''aGlmdCksRGU9Q2U7cmV0dXJuIENlLmNtcCh0aGlzLm0pPj0wP0RlPUNlLmlzdWIodGhpcy5tKTpDZS5jbXBuKDApPDAmJihEZT1DZS5pYWRkKHRoaXMubSkpLERlLl9mb3JjZVJlZCh0aGlzKX0sVi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5pbW9kKFQuX2ludm1w''@;'; put 'put ''KHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShVPVoubm1kKFUpLHRoaXMpfSwzNjQ0OihVLFEsWik9Pnt2YXIgaWU9WigxMDQ4KSxsZT1aKDU2MjMpO1UuZXhwb3J0cz1mdW5jdGlvbihTZSl7cmV0dXJuIFNlPygie30iPT09U2Uuc3Vic3RyKDAsMikmJihTZT0iXFx7''@;'; put 'put ''XFx9IitTZS5zdWJzdHIoMikpLGtlKChJZT1TZSxJZS5zcGxpdCgiXFxcXCIpLmpvaW4oWSkuc3BsaXQoIlxceyIpLmpvaW4oVykuc3BsaXQoIlxcfSIpLmpvaW4oTikuc3BsaXQoIlxcLCIpLmpvaW4oZWUpLnNwbGl0KCJcXC4iKS5qb2luKHEpKSwhMCkubWFwKHNlKSk6W107dmFyIEllfTt2''@;'; put 'put ''YXIgWT0iXDBTTEFTSCIrTWF0aC5yYW5kb20oKSsiXDAiLFc9IlwwT1BFTiIrTWF0aC5yYW5kb20oKSsiXDAiLE49IlwwQ0xPU0UiK01hdGgucmFuZG9tKCkrIlwwIixlZT0iXDBDT01NQSIrTWF0aC5yYW5kb20oKSsiXDAiLHE9IlwwUEVSSU9EIitNYXRoLnJhbmRvbSgpKyJcMCI7ZnVuY3Rp''@;'; put 'put ''b24gSihTZSl7cmV0dXJuIHBhcnNlSW50KFNlLDEwKT09U2U/cGFyc2VJbnQoU2UsMTApOlNlLmNoYXJDb2RlQXQoMCl9ZnVuY3Rpb24gc2UoU2Upe3JldHVybiBTZS5zcGxpdChZKS5qb2luKCJcXCIpLnNwbGl0KFcpLmpvaW4oInsiKS5zcGxpdChOKS5qb2luKCJ9Iikuc3BsaXQoZWUpLmpv''@;'; put 'put ''aW4oIiwiKS5zcGxpdChxKS5qb2luKCIuIil9ZnVuY3Rpb24gYWUoU2Upe2lmKCFTZSlyZXR1cm5bIiJdO3ZhciBJZT1bXSxUZT1sZSgieyIsIn0iLFNlKTtpZighVGUpcmV0dXJuIFNlLnNwbGl0KCIsIik7dmFyIGhlPVRlLmJvZHksTz1UZS5wb3N0LHo9VGUucHJlLnNwbGl0KCIsIik7elt6''@;'; put 'put ''Lmxlbmd0aC0xXSs9InsiK2hlKyJ9Ijt2YXIgbmU9YWUoTyk7cmV0dXJuIE8ubGVuZ3RoJiYoelt6Lmxlbmd0aC0xXSs9bmUuc2hpZnQoKSx6LnB1c2guYXBwbHkoeixuZSkpLEllLnB1c2guYXBwbHkoSWUseiksSWV9ZnVuY3Rpb24gZmUoU2Upe3JldHVybiJ7IitTZSsifSJ9ZnVuY3Rpb24g''@;'; put 'put ''ZGUoU2Upe3JldHVybi9eLT8wXGQvLnRlc3QoU2UpfWZ1bmN0aW9uIHZlKFNlLEllKXtyZXR1cm4gU2U8PUllfWZ1bmN0aW9uIEFlKFNlLEllKXtyZXR1cm4gU2U+PUllfWZ1bmN0aW9uIGtlKFNlLEllKXt2YXIgVGU9W10sRWU9bGUoInsiLCJ9IixTZSk7aWYoIUVlfHwvXCQkLy50ZXN0KEVl''@;'; put 'put ''LnByZSkpcmV0dXJuW1NlXTt2YXIgaGUsTz0vXi0/XGQrXC5cLi0/XGQrKD86XC5cLi0/XGQrKT8kLy50ZXN0KEVlLmJvZHkpLHo9L15bYS16QS1aXVwuXC5bYS16QS1aXSg/OlwuXC4tP1xkKyk/JC8udGVzdChFZS5ib2R5KSxuZT1PfHx6LHRlPUVlLmJvZHkuaW5kZXhPZigiLCIpPj0wO2lm''@;'; put 'put ''KCFuZSYmIXRlKXJldHVybiBFZS5wb3N0Lm1hdGNoKC8sLipcfS8pP2tlKFNlPUVlLnByZSsieyIrRWUuYm9keStOK0VlLnBvc3QpOltTZV07aWYobmUpaGU9RWUuYm9keS5zcGxpdCgvXC5cLi8pO2Vsc2UgaWYoMT09PShoZT1hZShFZS5ib2R5KSkubGVuZ3RoJiYxPT09KGhlPWtlKGhlWzBd''@;'; put 'put ''LCExKS5tYXAoZmUpKS5sZW5ndGgpcmV0dXJuKFY9RWUucG9zdC5sZW5ndGg/a2UoRWUucG9zdCwhMSk6WyIiXSkubWFwKGZ1bmN0aW9uKHZ0KXtyZXR1cm4gRWUucHJlK2hlWzBdK3Z0fSk7dmFyIHgsUD1FZS5wcmUsVj1FZS5wb3N0Lmxlbmd0aD9rZShFZS5wb3N0LCExKTpbIiJdO2lmKG5l''@;'; put 'put ''KXt2YXIgVD1KKGhlWzBdKSxTPUooaGVbMV0pLEY9TWF0aC5tYXgoaGVbMF0ubGVuZ3RoLGhlWzFdLmxlbmd0aCkseWU9Mz09aGUubGVuZ3RoP01hdGguYWJzKEooaGVbMl0pKToxLENlPXZlO1M8VCYmKHllKj0tMSxDZT1BZSk7dmFyIERlPWhlLnNvbWUoZGUpO3g9W107Zm9yKHZhciBQZT1U''@;'; put 'put ''O0NlKFBlLFMpO1BlKz15ZSl7dmFyIFFlO2lmKHopIlxcIj09PShRZT1TdHJpbmcuZnJvbUNoYXJDb2RlKFBlKSkmJihRZT0iIik7ZWxzZSBpZihRZT1TdHJpbmcoUGUpLERlKXt2YXIgJGU9Ri1RZS5sZW5ndGg7aWYoJGU+MCl7dmFyIGd0PW5ldyBBcnJheSgkZSsxKS5qb2luKCIwIik7UWU9''@;'; put 'put ''UGU8MD8iLSIrZ3QrUWUuc2xpY2UoMSk6Z3QrUWV9fXgucHVzaChRZSl9fWVsc2UgeD1pZShoZSxmdW5jdGlvbih2dCl7cmV0dXJuIGtlKHZ0LCExKX0pO2Zvcih2YXIgeXQ9MDt5dDx4Lmxlbmd0aDt5dCsrKWZvcih2YXIgcHQ9MDtwdDxWLmxlbmd0aDtwdCsrKXt2YXIgbXQ9UCt4W3l0XStW''@;'; put 'put ''W3B0XTsoIUllfHxuZXx8bXQpJiZUZS5wdXNoKG10KX1yZXR1cm4gVGV9fSw5OTMxOihVLFEsWik9Pnt2YXIgaWU7ZnVuY3Rpb24gbGUoVyl7dGhpcy5yYW5kPVd9aWYoVS5leHBvcnRzPWZ1bmN0aW9uKFcpe3JldHVybiBpZXx8KGllPW5ldyBsZShudWxsKSksaWUuZ2VuZXJhdGUoVyl9LFUu''@;'; put 'put ''ZXhwb3J0cy5SYW5kPWxlLGxlLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbihXKXtyZXR1cm4gdGhpcy5fcmFuZChXKX0sbGUucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFcpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKFcpO2Zvcih2YXIgTj1u''@;'; put 'put ''ZXcgVWludDhBcnJheShXKSxlZT0wO2VlPE4ubGVuZ3RoO2VlKyspTltlZV09dGhpcy5yYW5kLmdldEJ5dGUoKTtyZXR1cm4gTn0sIm9iamVjdCI9PXR5cGVvZiBzZWxmKXNlbGYuY3J5cHRvJiZzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXM/bGUucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9u''@;'; put 'put ''KFcpe3ZhciBOPW5ldyBVaW50OEFycmF5KFcpO3JldHVybiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoTiksTn06c2VsZi5tc0NyeXB0byYmc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXM/bGUucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFcpe3ZhciBOPW5ldyBVaW50OEFycmF5''@;'; put 'put ''KFcpO3JldHVybiBzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhOKSxOfToib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKGxlLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIHlldCIpfSk7ZWxzZSB0cnl7dmFyIFk9Wig5MjE0''@;'; put 'put ''KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgWS5yYW5kb21CeXRlcyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQiKTtsZS5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oVyl7cmV0dXJuIFkucmFuZG9tQnl0ZXMoVyl9fWNhdGNoKFcpe319LDQ0OTc6KFUsUSxaKT0+e3ZhciBpZT1aKDk1''@;'; put 'put ''MDkpLkJ1ZmZlcjtmdW5jdGlvbiBsZShKKXtpZS5pc0J1ZmZlcihKKXx8KEo9aWUuZnJvbShKKSk7Zm9yKHZhciBzZT1KLmxlbmd0aC80fDAsYWU9bmV3IEFycmF5KHNlKSxmZT0wO2ZlPHNlO2ZlKyspYWVbZmVdPUoucmVhZFVJbnQzMkJFKDQqZmUpO3JldHVybiBhZX1mdW5jdGlvbiBZKEop''@;'; put 'put ''e2Zvcig7MDxKLmxlbmd0aDtKKyspSlswXT0wfWZ1bmN0aW9uIFcoSixzZSxhZSxmZSxkZSl7Zm9yKHZhciB2ZSxBZSxrZSxTZSxJZT1hZVswXSxUZT1hZVsxXSxFZT1hZVsyXSxoZT1hZVszXSxPPUpbMF1ec2VbMF0sej1KWzFdXnNlWzFdLG5lPUpbMl1ec2VbMl0sdGU9SlszXV5zZVszXSx4''@;'; put 'put ''PTQsUD0xO1A8ZGU7UCsrKXZlPUllW08+Pj4yNF1eVGVbej4+PjE2JjI1NV1eRWVbbmU+Pj44JjI1NV1eaGVbMjU1JnRlXV5zZVt4KytdLEFlPUllW3o+Pj4yNF1eVGVbbmU+Pj4xNiYyNTVdXkVlW3RlPj4+OCYyNTVdXmhlWzI1NSZPXV5zZVt4KytdLGtlPUllW25lPj4+MjRdXlRlW3RlPj4+''@;'; put 'put ''MTYmMjU1XV5FZVtPPj4+OCYyNTVdXmhlWzI1NSZ6XV5zZVt4KytdLFNlPUllW3RlPj4+MjRdXlRlW08+Pj4xNiYyNTVdXkVlW3o+Pj44JjI1NV1eaGVbMjU1Jm5lXV5zZVt4KytdLE89dmUsej1BZSxuZT1rZSx0ZT1TZTtyZXR1cm4gdmU9KGZlW08+Pj4yNF08PDI0fGZlW3o+Pj4xNiYyNTVd''@;'; put 'put ''PDwxNnxmZVtuZT4+PjgmMjU1XTw8OHxmZVsyNTUmdGVdKV5zZVt4KytdLEFlPShmZVt6Pj4+MjRdPDwyNHxmZVtuZT4+PjE2JjI1NV08PDE2fGZlW3RlPj4+OCYyNTVdPDw4fGZlWzI1NSZPXSlec2VbeCsrXSxrZT0oZmVbbmU+Pj4yNF08PDI0fGZlW3RlPj4+MTYmMjU1XTw8MTZ8ZmVbTz4+''@;'; put 'put ''PjgmMjU1XTw8OHxmZVsyNTUmel0pXnNlW3grK10sU2U9KGZlW3RlPj4+MjRdPDwyNHxmZVtPPj4+MTYmMjU1XTw8MTZ8ZmVbej4+PjgmMjU1XTw8OHxmZVsyNTUmbmVdKV5zZVt4KytdLFt2ZT4+Pj0wLEFlPj4+PTAsa2U+Pj49MCxTZT4+Pj0wXX12YXIgTj1bMCwxLDIsNCw4LDE2LDMyLDY0''@;'; put 'put ''LDEyOCwyNyw1NF0sZWU9ZnVuY3Rpb24oKXtmb3IodmFyIEo9bmV3IEFycmF5KDI1Niksc2U9MDtzZTwyNTY7c2UrKylKW3NlXT1zZTwxMjg/c2U8PDE6c2U8PDFeMjgzO2Zvcih2YXIgYWU9W10sZmU9W10sZGU9W1tdLFtdLFtdLFtdXSx2ZT1bW10sW10sW10sW11dLEFlPTAsa2U9MCxTZT0w''@;'; put 'put ''O1NlPDI1NjsrK1NlKXt2YXIgSWU9a2Vea2U8PDFea2U8PDJea2U8PDNea2U8PDQ7YWVbQWVdPUllPUllPj4+OF4yNTUmSWVeOTksZmVbSWVdPUFlO3ZhciBUZT1KW0FlXSxFZT1KW1RlXSxoZT1KW0VlXSxPPTI1NypKW0llXV4xNjg0MzAwOCpJZTtkZVswXVtBZV09Tzw8MjR8Tz4+PjgsZGVb''@;'; put 'put ''MV1bQWVdPU88PDE2fE8+Pj4xNixkZVsyXVtBZV09Tzw8OHxPPj4+MjQsZGVbM11bQWVdPU8sdmVbMF1bSWVdPShPPTE2ODQzMDA5KmhlXjY1NTM3KkVlXjI1NypUZV4xNjg0MzAwOCpBZSk8PDI0fE8+Pj44LHZlWzFdW0llXT1PPDwxNnxPPj4+MTYsdmVbMl1bSWVdPU88PDh8Tz4+PjI0LHZl''@;'; put 'put ''WzNdW0llXT1PLDA9PT1BZT9BZT1rZT0xOihBZT1UZV5KW0pbSltoZV5UZV1dXSxrZV49SltKW2tlXV0pfXJldHVybntTQk9YOmFlLElOVl9TQk9YOmZlLFNVQl9NSVg6ZGUsSU5WX1NVQl9NSVg6dmV9fSgpO2Z1bmN0aW9uIHEoSil7dGhpcy5fa2V5PWxlKEopLHRoaXMuX3Jlc2V0KCl9cS5i''@;'; put 'put ''bG9ja1NpemU9MTYscS5rZXlTaXplPTMyLHEucHJvdG90eXBlLmJsb2NrU2l6ZT1xLmJsb2NrU2l6ZSxxLnByb3RvdHlwZS5rZXlTaXplPXEua2V5U2l6ZSxxLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIEo9dGhpcy5fa2V5LHNlPUoubGVuZ3RoLGFlPXNlKzYsZmU9NCoo''@;'; put 'put ''YWUrMSksZGU9W10sdmU9MDt2ZTxzZTt2ZSsrKWRlW3ZlXT1KW3ZlXTtmb3IodmU9c2U7dmU8ZmU7dmUrKyl7dmFyIEFlPWRlW3ZlLTFdO3ZlJXNlPT0wPyhBZT1lZS5TQk9YWyhBZT1BZTw8OHxBZT4+PjI0KT4+PjI0XTw8MjR8ZWUuU0JPWFtBZT4+PjE2JjI1NV08PDE2fGVlLlNCT1hbQWU+''@;'; put 'put ''Pj44JjI1NV08PDh8ZWUuU0JPWFsyNTUmQWVdLEFlXj1OW3ZlL3NlfDBdPDwyNCk6c2U+NiYmdmUlc2U9PTQmJihBZT1lZS5TQk9YW0FlPj4+MjRdPDwyNHxlZS5TQk9YW0FlPj4+MTYmMjU1XTw8MTZ8ZWUuU0JPWFtBZT4+PjgmMjU1XTw8OHxlZS5TQk9YWzI1NSZBZV0pLGRlW3ZlXT1kZVt2''@;'; put 'put ''ZS1zZV1eQWV9Zm9yKHZhciBrZT1bXSxTZT0wO1NlPGZlO1NlKyspe3ZhciBJZT1mZS1TZSxUZT1kZVtJZS0oU2UlND8wOjQpXTtrZVtTZV09U2U8NHx8SWU8PTQ/VGU6ZWUuSU5WX1NVQl9NSVhbMF1bZWUuU0JPWFtUZT4+PjI0XV1eZWUuSU5WX1NVQl9NSVhbMV1bZWUuU0JPWFtUZT4+PjE2''@;'; put 'put ''JjI1NV1dXmVlLklOVl9TVUJfTUlYWzJdW2VlLlNCT1hbVGU+Pj44JjI1NV1dXmVlLklOVl9TVUJfTUlYWzNdW2VlLlNCT1hbMjU1JlRlXV19dGhpcy5fblJvdW5kcz1hZSx0aGlzLl9rZXlTY2hlZHVsZT1kZSx0aGlzLl9pbnZLZXlTY2hlZHVsZT1rZX0scS5wcm90b3R5cGUuZW5jcnlwdEJs''@;'; put 'put ''b2NrUmF3PWZ1bmN0aW9uKEope3JldHVybiBXKEo9bGUoSiksdGhpcy5fa2V5U2NoZWR1bGUsZWUuU1VCX01JWCxlZS5TQk9YLHRoaXMuX25Sb3VuZHMpfSxxLnByb3RvdHlwZS5lbmNyeXB0QmxvY2s9ZnVuY3Rpb24oSil7dmFyIHNlPXRoaXMuZW5jcnlwdEJsb2NrUmF3KEopLGFlPWllLmFs''@;'; put 'put ''bG9jVW5zYWZlKDE2KTtyZXR1cm4gYWUud3JpdGVVSW50MzJCRShzZVswXSwwKSxhZS53cml0ZVVJbnQzMkJFKHNlWzFdLDQpLGFlLndyaXRlVUludDMyQkUoc2VbMl0sOCksYWUud3JpdGVVSW50MzJCRShzZVszXSwxMiksYWV9LHEucHJvdG90eXBlLmRlY3J5cHRCbG9jaz1mdW5jdGlvbihK''@;'; put 'put ''KXt2YXIgc2U9KEo9bGUoSikpWzFdO0pbMV09SlszXSxKWzNdPXNlO3ZhciBhZT1XKEosdGhpcy5faW52S2V5U2NoZWR1bGUsZWUuSU5WX1NVQl9NSVgsZWUuSU5WX1NCT1gsdGhpcy5fblJvdW5kcyksZmU9aWUuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBmZS53cml0ZVVJbnQzMkJFKGFlWzBd''@;'; put 'put ''LDApLGZlLndyaXRlVUludDMyQkUoYWVbM10sNCksZmUud3JpdGVVSW50MzJCRShhZVsyXSw4KSxmZS53cml0ZVVJbnQzMkJFKGFlWzFdLDEyKSxmZX0scS5wcm90b3R5cGUuc2NydWI9ZnVuY3Rpb24oKXtZKHRoaXMuX2tleVNjaGVkdWxlKSxZKHRoaXMuX2ludktleVNjaGVkdWxlKSxZKHRo''@;'; put 'put ''aXMuX2tleSl9LFUuZXhwb3J0cy5BRVM9cX0sNDg0ODooVSxRLFopPT57dmFyIGllPVooNDQ5NyksbGU9Wig5NTA5KS5CdWZmZXIsWT1aKDEwMjcpLFc9Wig1NzE3KSxOPVooMzI4OCksZWU9Wig3Mjk1KSxxPVooNjg1KTtmdW5jdGlvbiBKKHNlLGFlLGZlLGRlKXtZLmNhbGwodGhpcyk7dmFy''@;'; put 'put ''IHZlPWxlLmFsbG9jKDQsMCk7dGhpcy5fY2lwaGVyPW5ldyBpZS5BRVMoYWUpO3ZhciBBZT10aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHZlKTt0aGlzLl9naGFzaD1uZXcgTihBZSksZmU9ZnVuY3Rpb24oa2UsU2UsSWUpe2lmKDEyPT09U2UubGVuZ3RoKXJldHVybiBrZS5fZmluSUQ9bGUu''@;'; put 'put ''Y29uY2F0KFtTZSxsZS5mcm9tKFswLDAsMCwxXSldKSxsZS5jb25jYXQoW1NlLGxlLmZyb20oWzAsMCwwLDJdKV0pO3ZhciBUZT1uZXcgTihJZSksRWU9U2UubGVuZ3RoLGhlPUVlJTE2O1RlLnVwZGF0ZShTZSksaGUmJlRlLnVwZGF0ZShsZS5hbGxvYyhoZT0xNi1oZSwwKSksVGUudXBkYXRl''@;'; put 'put ''KGxlLmFsbG9jKDgsMCkpO3ZhciBPPTgqRWUsej1sZS5hbGxvYyg4KTt6LndyaXRlVUludEJFKE8sMCw4KSxUZS51cGRhdGUoeiksa2UuX2ZpbklEPVRlLnN0YXRlO3ZhciBuZT1sZS5mcm9tKGtlLl9maW5JRCk7cmV0dXJuIHEobmUpLG5lfSh0aGlzLGZlLEFlKSx0aGlzLl9wcmV2PWxlLmZy''@;'; put 'put ''b20oZmUpLHRoaXMuX2NhY2hlPWxlLmFsbG9jVW5zYWZlKDApLHRoaXMuX3NlY0NhY2hlPWxlLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9ZGUsdGhpcy5fYWxlbj0wLHRoaXMuX2xlbj0wLHRoaXMuX21vZGU9c2UsdGhpcy5fYXV0aFRhZz1udWxsLHRoaXMuX2NhbGxlZD0hMX1XKEos''@;'; put 'put ''WSksSi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihzZSl7aWYoIXRoaXMuX2NhbGxlZCYmdGhpcy5fYWxlbil7dmFyIGFlPTE2LXRoaXMuX2FsZW4lMTY7YWU8MTYmJihhZT1sZS5hbGxvYyhhZSwwKSx0aGlzLl9naGFzaC51cGRhdGUoYWUpKX10aGlzLl9jYWxsZWQ9ITA7dmFyIGZlPXRo''@;'; put 'put ''aXMuX21vZGUuZW5jcnlwdCh0aGlzLHNlKTtyZXR1cm4gdGhpcy5fZ2hhc2gudXBkYXRlKHRoaXMuX2RlY3J5cHQ/c2U6ZmUpLHRoaXMuX2xlbis9c2UubGVuZ3RoLGZlfSxKLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0JiYhdGhpcy5fYXV0aFRhZyl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3ZhciBzZT1lZSh0aGlzLl9naGFzaC5maW5hbCg4KnRoaXMuX2FsZW4sOCp0aGlzLl9sZW4pLHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKTtpZih0aGlz''@;'; put 'put ''Ll9kZWNyeXB0JiZmdW5jdGlvbihhZSxmZSl7dmFyIGRlPTA7YWUubGVuZ3RoIT09ZmUubGVuZ3RoJiZkZSsrO2Zvcih2YXIgdmU9TWF0aC5taW4oYWUubGVuZ3RoLGZlLmxlbmd0aCksQWU9MDtBZTx2ZTsrK0FlKWRlKz1hZVtBZV1eZmVbQWVdO3JldHVybiBkZX0oc2UsdGhpcy5fYXV0aFRh''@;'; put 'put ''ZykpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEiKTt0aGlzLl9hdXRoVGFnPXNlLHRoaXMuX2NpcGhlci5zY3J1YigpfSxKLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdHx8IWxl''@;'; put 'put ''LmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTtyZXR1cm4gdGhpcy5fYXV0aFRhZ30sSi5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbihzZSl7aWYoIXRoaXMuX2RlY3J5''@;'; put 'put ''cHQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3RoaXMuX2F1dGhUYWc9c2V9LEoucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbihzZSl7aWYodGhpcy5fY2FsbGVkKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0''@;'; put 'put ''byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fZ2hhc2gudXBkYXRlKHNlKSx0aGlzLl9hbGVuKz1zZS5sZW5ndGh9LFUuZXhwb3J0cz1KfSw0Njk2OihVLFEsWik9Pnt2YXIgaWU9WigxNDk0KSxsZT1aKDYxOTMpLFk9Wig0OTQ2KTtRLmNyZWF0ZUNpcGhlcj1RLkNpcGhl''@;'; put 'put ''cj1pZS5jcmVhdGVDaXBoZXIsUS5jcmVhdGVDaXBoZXJpdj1RLkNpcGhlcml2PWllLmNyZWF0ZUNpcGhlcml2LFEuY3JlYXRlRGVjaXBoZXI9US5EZWNpcGhlcj1sZS5jcmVhdGVEZWNpcGhlcixRLmNyZWF0ZURlY2lwaGVyaXY9US5EZWNpcGhlcml2PWxlLmNyZWF0ZURlY2lwaGVyaXYsUS5s''@;'; put 'put ''aXN0Q2lwaGVycz1RLmdldENpcGhlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoWSl9fSw2MTkzOihVLFEsWik9Pnt2YXIgaWU9Wig0ODQ4KSxsZT1aKDk1MDkpLkJ1ZmZlcixZPVooNDUpLFc9Wig1OTY5KSxOPVooMTAyNyksZWU9Wig0NDk3KSxxPVooMzA0OCk7ZnVuY3Rpb24g''@;'; put 'put ''SihmZSxkZSx2ZSl7Ti5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBzZSx0aGlzLl9sYXN0PXZvaWQgMCx0aGlzLl9jaXBoZXI9bmV3IGVlLkFFUyhkZSksdGhpcy5fcHJldj1sZS5mcm9tKHZlKSx0aGlzLl9tb2RlPWZlLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWZ1bmN0aW9uIHNlKCl7dGhp''@;'; put 'put ''cy5jYWNoZT1sZS5hbGxvY1Vuc2FmZSgwKX1mdW5jdGlvbiBhZShmZSxkZSx2ZSl7dmFyIEFlPVlbZmUudG9Mb3dlckNhc2UoKV07aWYoIUFlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdmUmJih2ZT1sZS5mcm9tKHZlKSks''@;'; put 'put ''IkdDTSIhPT1BZS5tb2RlJiZ2ZS5sZW5ndGghPT1BZS5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK3ZlLmxlbmd0aCk7aWYoInN0cmluZyI9PXR5cGVvZiBkZSYmKGRlPWxlLmZyb20oZGUpKSxkZS5sZW5ndGghPT1BZS5rZXkvOCl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJpbnZhbGlkIGtleSBsZW5ndGggIitkZS5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09QWUudHlwZT9uZXcgVyhBZS5tb2R1bGUsZGUsdmUsITApOiJhdXRoIj09PUFlLnR5cGU/bmV3IGllKEFlLm1vZHVsZSxkZSx2ZSwhMCk6bmV3IEooQWUubW9kdWxlLGRlLHZlKX1aKDU3MTcpKEos''@;'; put 'put ''TiksSi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihmZSl7dmFyIGRlLHZlO3RoaXMuX2NhY2hlLmFkZChmZSk7Zm9yKHZhciBBZT1bXTtkZT10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpOyl2ZT10aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxkZSksQWUucHVzaCh2ZSk7cmV0''@;'; put 'put ''dXJuIGxlLmNvbmNhdChBZSl9LEoucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBmZT10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBmdW5jdGlvbihkZSl7dmFyIHZlPWRlWzE1XTtpZih2ZTwxfHx2ZT4xNil0aHJvdyBuZXcgRXJyb3IoInVu''@;'; put 'put ''YWJsZSB0byBkZWNyeXB0IGRhdGEiKTtmb3IodmFyIEFlPS0xOysrQWU8dmU7KWlmKGRlW0FlKygxNi12ZSldIT09dmUpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTYhPT12ZSlyZXR1cm4gZGUuc2xpY2UoMCwxNi12ZSl9KHRoaXMuX21vZGUuZGVjcnlw''@;'; put 'put ''dCh0aGlzLGZlKSk7aWYoZmUpdGhyb3cgbmV3IEVycm9yKCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sSi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oZmUpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIWZlLHRoaXN9LHNlLnByb3RvdHlwZS5hZGQ9''@;'; put 'put ''ZnVuY3Rpb24oZmUpe3RoaXMuY2FjaGU9bGUuY29uY2F0KFt0aGlzLmNhY2hlLGZlXSl9LHNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZmUpe3ZhciBkZTtpZihmZSl7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTYpcmV0dXJuIGRlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10''@;'; put 'put ''aGlzLmNhY2hlLnNsaWNlKDE2KSxkZX1lbHNlIGlmKHRoaXMuY2FjaGUubGVuZ3RoPj0xNilyZXR1cm4gZGU9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLGRlO3JldHVybiBudWxsfSxzZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtp''@;'; put 'put ''Zih0aGlzLmNhY2hlLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZX0sUS5jcmVhdGVEZWNpcGhlcj1mdW5jdGlvbihmZSxkZSl7dmFyIHZlPVlbZmUudG9Mb3dlckNhc2UoKV07aWYoIXZlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBBZT1xKGRlLCExLHZl''@;'; put 'put ''LmtleSx2ZS5pdik7cmV0dXJuIGFlKGZlLEFlLmtleSxBZS5pdil9LFEuY3JlYXRlRGVjaXBoZXJpdj1hZX0sMTQ5NDooVSxRLFopPT57dmFyIGllPVooNDUpLGxlPVooNDg0OCksWT1aKDk1MDkpLkJ1ZmZlcixXPVooNTk2OSksTj1aKDEwMjcpLGVlPVooNDQ5NykscT1aKDMwNDgpO2Z1bmN0''@;'; put 'put ''aW9uIEooZGUsdmUsQWUpe04uY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgYWUsdGhpcy5fY2lwaGVyPW5ldyBlZS5BRVModmUpLHRoaXMuX3ByZXY9WS5mcm9tKEFlKSx0aGlzLl9tb2RlPWRlLHRoaXMuX2F1dG9wYWRkaW5nPSEwfVooNTcxNykoSixOKSxKLnByb3RvdHlwZS5fdXBkYXRl''@;'; put 'put ''PWZ1bmN0aW9uKGRlKXt2YXIgdmUsQWU7dGhpcy5fY2FjaGUuYWRkKGRlKTtmb3IodmFyIGtlPVtdO3ZlPXRoaXMuX2NhY2hlLmdldCgpOylBZT10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyx2ZSksa2UucHVzaChBZSk7cmV0dXJuIFkuY29uY2F0KGtlKX07dmFyIHNlPVkuYWxsb2MoMTYsMTYp''@;'; put 'put ''O2Z1bmN0aW9uIGFlKCl7dGhpcy5jYWNoZT1ZLmFsbG9jVW5zYWZlKDApfWZ1bmN0aW9uIGZlKGRlLHZlLEFlKXt2YXIga2U9aWVbZGUudG9Mb3dlckNhc2UoKV07aWYoIWtlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdmUm''@;'; put 'put ''Jih2ZT1ZLmZyb20odmUpKSx2ZS5sZW5ndGghPT1rZS5rZXkvOCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGggIit2ZS5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgQWUmJihBZT1ZLmZyb20oQWUpKSwiR0NNIiE9PWtlLm1vZGUmJkFlLmxlbmd0aCE9PWtlLml2''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrQWUubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PWtlLnR5cGU/bmV3IFcoa2UubW9kdWxlLHZlLEFlKToiYXV0aCI9PT1rZS50eXBlP25ldyBsZShrZS5tb2R1bGUsdmUsQWUpOm5ldyBKKGtlLm1vZHVsZSx2ZSxBZSl9''@;'; put 'put ''Si5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGRlPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIGRlPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLGRlKSx0aGlzLl9jaXBoZXIuc2NydWIoKSxkZTtpZighZGUuZXF1YWxzKHNlKSl0aHJvdyB0''@;'; put 'put ''aGlzLl9jaXBoZXIuc2NydWIoKSxuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxKLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihkZSl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhZGUsdGhpc30sYWUucHJvdG90eXBlLmFkZD1mdW5j''@;'; put 'put ''dGlvbihkZSl7dGhpcy5jYWNoZT1ZLmNvbmNhdChbdGhpcy5jYWNoZSxkZV0pfSxhZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTUpe3ZhciBkZT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2Uo''@;'; put 'put ''MTYpLGRlfXJldHVybiBudWxsfSxhZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIGRlPTE2LXRoaXMuY2FjaGUubGVuZ3RoLHZlPVkuYWxsb2NVbnNhZmUoZGUpLEFlPS0xOysrQWU8ZGU7KXZlLndyaXRlVUludDgoZGUsQWUpO3JldHVybiBZLmNvbmNhdChbdGhpcy5jYWNo''@;'; put 'put ''ZSx2ZV0pfSxRLmNyZWF0ZUNpcGhlcml2PWZlLFEuY3JlYXRlQ2lwaGVyPWZ1bmN0aW9uKGRlLHZlKXt2YXIgQWU9aWVbZGUudG9Mb3dlckNhc2UoKV07aWYoIUFlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBrZT1xKHZlLCExLEFlLmtleSxBZS5pdik7''@;'; put 'put ''cmV0dXJuIGZlKGRlLGtlLmtleSxrZS5pdil9fSwzMjg4OihVLFEsWik9Pnt2YXIgaWU9Wig5NTA5KS5CdWZmZXIsbGU9aWUuYWxsb2MoMTYsMCk7ZnVuY3Rpb24gWShOKXt2YXIgZWU9aWUuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBlZS53cml0ZVVJbnQzMkJFKE5bMF0+Pj4wLDApLGVlLndy''@;'; put 'put ''aXRlVUludDMyQkUoTlsxXT4+PjAsNCksZWUud3JpdGVVSW50MzJCRShOWzJdPj4+MCw4KSxlZS53cml0ZVVJbnQzMkJFKE5bM10+Pj4wLDEyKSxlZX1mdW5jdGlvbiBXKE4pe3RoaXMuaD1OLHRoaXMuc3RhdGU9aWUuYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1pZS5hbGxvY1Vuc2FmZSgwKX1X''@;'; put 'put ''LnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihOKXtmb3IodmFyIGVlPS0xOysrZWU8Ti5sZW5ndGg7KXRoaXMuc3RhdGVbZWVdXj1OW2VlXTt0aGlzLl9tdWx0aXBseSgpfSxXLnByb3RvdHlwZS5fbXVsdGlwbHk9ZnVuY3Rpb24oKXtmb3IodmFyIE4sZWUscSxKPVsoTj10aGlzLmgpLnJlYWRV''@;'; put 'put ''SW50MzJCRSgwKSxOLnJlYWRVSW50MzJCRSg0KSxOLnJlYWRVSW50MzJCRSg4KSxOLnJlYWRVSW50MzJCRSgxMildLHNlPVswLDAsMCwwXSxhZT0tMTsrK2FlPDEyODspe2ZvcigwIT0odGhpcy5zdGF0ZVt+fihhZS84KV0mMTw8Ny1hZSU4KSYmKHNlWzBdXj1KWzBdLHNlWzFdXj1KWzFdLHNl''@;'; put 'put ''WzJdXj1KWzJdLHNlWzNdXj1KWzNdKSxxPTAhPSgxJkpbM10pLGVlPTM7ZWU+MDtlZS0tKUpbZWVdPUpbZWVdPj4+MXwoMSZKW2VlLTFdKTw8MzE7SlswXT1KWzBdPj4+MSxxJiYoSlswXT0tNTIwMDkzNjk2XkpbMF0pfXRoaXMuc3RhdGU9WShzZSl9LFcucHJvdG90eXBlLnVwZGF0ZT1mdW5j''@;'; put 'put ''dGlvbihOKXt2YXIgZWU7Zm9yKHRoaXMuY2FjaGU9aWUuY29uY2F0KFt0aGlzLmNhY2hlLE5dKTt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KWVlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0aGlzLmdoYXNoKGVlKX0sVy5wcm90b3R5cGUu''@;'; put 'put ''ZmluYWw9ZnVuY3Rpb24oTixlZSl7cmV0dXJuIHRoaXMuY2FjaGUubGVuZ3RoJiZ0aGlzLmdoYXNoKGllLmNvbmNhdChbdGhpcy5jYWNoZSxsZV0sMTYpKSx0aGlzLmdoYXNoKFkoWzAsTiwwLGVlXSkpLHRoaXMuc3RhdGV9LFUuZXhwb3J0cz1XfSw2ODU6VT0+e1UuZXhwb3J0cz1mdW5jdGlv''@;'; put 'put ''bihRKXtmb3IodmFyIFosaWU9US5sZW5ndGg7aWUtLTspe2lmKDI1NSE9PShaPVEucmVhZFVJbnQ4KGllKSkpe1orKyxRLndyaXRlVUludDgoWixpZSk7YnJlYWt9US53cml0ZVVJbnQ4KDAsaWUpfX19LDUyOTI6KFUsUSxaKT0+e3ZhciBpZT1aKDcyOTUpO1EuZW5jcnlwdD1mdW5jdGlvbihs''@;'; put 'put ''ZSxZKXt2YXIgVz1pZShZLGxlLl9wcmV2KTtyZXR1cm4gbGUuX3ByZXY9bGUuX2NpcGhlci5lbmNyeXB0QmxvY2soVyksbGUuX3ByZXZ9LFEuZGVjcnlwdD1mdW5jdGlvbihsZSxZKXt2YXIgVz1sZS5fcHJldjtsZS5fcHJldj1ZO3ZhciBOPWxlLl9jaXBoZXIuZGVjcnlwdEJsb2NrKFkpO3Jl''@;'; put 'put ''dHVybiBpZShOLFcpfX0sNjMxMTooVSxRLFopPT57dmFyIGllPVooOTUwOSkuQnVmZmVyLGxlPVooNzI5NSk7ZnVuY3Rpb24gWShXLE4sZWUpe3ZhciBxPU4ubGVuZ3RoLEo9bGUoTixXLl9jYWNoZSk7cmV0dXJuIFcuX2NhY2hlPVcuX2NhY2hlLnNsaWNlKHEpLFcuX3ByZXY9aWUuY29uY2F0''@;'; put 'put ''KFtXLl9wcmV2LGVlP046Sl0pLEp9US5lbmNyeXB0PWZ1bmN0aW9uKFcsTixlZSl7Zm9yKHZhciBxLEo9aWUuYWxsb2NVbnNhZmUoMCk7Ti5sZW5ndGg7KXtpZigwPT09Vy5fY2FjaGUubGVuZ3RoJiYoVy5fY2FjaGU9Vy5fY2lwaGVyLmVuY3J5cHRCbG9jayhXLl9wcmV2KSxXLl9wcmV2PWll''@;'; put 'put ''LmFsbG9jVW5zYWZlKDApKSwhKFcuX2NhY2hlLmxlbmd0aDw9Ti5sZW5ndGgpKXtKPWllLmNvbmNhdChbSixZKFcsTixlZSldKTticmVha31KPWllLmNvbmNhdChbSixZKFcsTi5zbGljZSgwLHE9Vy5fY2FjaGUubGVuZ3RoKSxlZSldKSxOPU4uc2xpY2UocSl9cmV0dXJuIEp9fSwxNTEwOihV''@;'; put 'put ''LFEsWik9Pnt2YXIgaWU9Wig5NTA5KS5CdWZmZXI7ZnVuY3Rpb24gbGUoVyxOLGVlKXtmb3IodmFyIHEsSixzZT0tMSxhZT0wOysrc2U8ODspcT1OJjE8PDctc2U/MTI4OjAsYWUrPSgxMjgmKEo9Vy5fY2lwaGVyLmVuY3J5cHRCbG9jayhXLl9wcmV2KVswXV5xKSk+PnNlJTgsVy5fcHJldj1Z''@;'; put 'put ''KFcuX3ByZXYsZWU/cTpKKTtyZXR1cm4gYWV9ZnVuY3Rpb24gWShXLE4pe3ZhciBlZT1XLmxlbmd0aCxxPS0xLEo9aWUuYWxsb2NVbnNhZmUoVy5sZW5ndGgpO2ZvcihXPWllLmNvbmNhdChbVyxpZS5mcm9tKFtOXSldKTsrK3E8ZWU7KUpbcV09V1txXTw8MXxXW3ErMV0+Pjc7cmV0dXJuIEp9''@;'; put 'put ''US5lbmNyeXB0PWZ1bmN0aW9uKFcsTixlZSl7Zm9yKHZhciBxPU4ubGVuZ3RoLEo9aWUuYWxsb2NVbnNhZmUocSksc2U9LTE7KytzZTxxOylKW3NlXT1sZShXLE5bc2VdLGVlKTtyZXR1cm4gSn19LDE5NjQ6KFUsUSxaKT0+e3ZhciBpZT1aKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBsZShZLFcs''@;'; put 'put ''Til7dmFyIGVlPVkuX2NpcGhlci5lbmNyeXB0QmxvY2soWS5fcHJldilbMF1eVztyZXR1cm4gWS5fcHJldj1pZS5jb25jYXQoW1kuX3ByZXYuc2xpY2UoMSksaWUuZnJvbShbTj9XOmVlXSldKSxlZX1RLmVuY3J5cHQ9ZnVuY3Rpb24oWSxXLE4pe2Zvcih2YXIgZWU9Vy5sZW5ndGgscT1pZS5h''@;'; put 'put ''bGxvY1Vuc2FmZShlZSksSj0tMTsrK0o8ZWU7KXFbSl09bGUoWSxXW0pdLE4pO3JldHVybiBxfX0sNjAwOTooVSxRLFopPT57dmFyIGllPVooNzI5NSksbGU9Wig5NTA5KS5CdWZmZXIsWT1aKDY4NSk7ZnVuY3Rpb24gVyhOKXt2YXIgZWU9Ti5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhOLl9w''@;'; put 'put ''cmV2KTtyZXR1cm4gWShOLl9wcmV2KSxlZX1RLmVuY3J5cHQ9ZnVuY3Rpb24oTixlZSl7dmFyIHE9TWF0aC5jZWlsKGVlLmxlbmd0aC8xNiksSj1OLl9jYWNoZS5sZW5ndGg7Ti5fY2FjaGU9bGUuY29uY2F0KFtOLl9jYWNoZSxsZS5hbGxvY1Vuc2FmZSgxNipxKV0pO2Zvcih2YXIgc2U9MDtz''@;'; put 'put ''ZTxxO3NlKyspe3ZhciBhZT1XKE4pLGZlPUorMTYqc2U7Ti5fY2FjaGUud3JpdGVVSW50MzJCRShhZVswXSxmZSswKSxOLl9jYWNoZS53cml0ZVVJbnQzMkJFKGFlWzFdLGZlKzQpLE4uX2NhY2hlLndyaXRlVUludDMyQkUoYWVbMl0sZmUrOCksTi5fY2FjaGUud3JpdGVVSW50MzJCRShhZVsz''@;'; put 'put ''XSxmZSsxMil9dmFyIGRlPU4uX2NhY2hlLnNsaWNlKDAsZWUubGVuZ3RoKTtyZXR1cm4gTi5fY2FjaGU9Ti5fY2FjaGUuc2xpY2UoZWUubGVuZ3RoKSxpZShlZSxkZSl9fSwxMDg0OihVLFEpPT57US5lbmNyeXB0PWZ1bmN0aW9uKFosaWUpe3JldHVybiBaLl9jaXBoZXIuZW5jcnlwdEJsb2Nr''@;'; put 'put ''KGllKX0sUS5kZWNyeXB0PWZ1bmN0aW9uKFosaWUpe3JldHVybiBaLl9jaXBoZXIuZGVjcnlwdEJsb2NrKGllKX19LDQ1OihVLFEsWik9Pnt2YXIgaWU9e0VDQjpaKDEwODQpLENCQzpaKDUyOTIpLENGQjpaKDYzMTEpLENGQjg6WigxOTY0KSxDRkIxOlooMTUxMCksT0ZCOlooODg2MSksQ1RS''@;'; put 'put ''OlooNjAwOSksR0NNOlooNjAwOSl9LGxlPVooNDk0Nik7Zm9yKHZhciBZIGluIGxlKWxlW1ldLm1vZHVsZT1pZVtsZVtZXS5tb2RlXTtVLmV4cG9ydHM9bGV9LDg4NjE6KFUsUSxaKT0+e3ZhciBpZT1aKDg3NjQpLkJ1ZmZlcixsZT1aKDcyOTUpO2Z1bmN0aW9uIFkoVyl7cmV0dXJuIFcuX3By''@;'; put 'put ''ZXY9Vy5fY2lwaGVyLmVuY3J5cHRCbG9jayhXLl9wcmV2KSxXLl9wcmV2fVEuZW5jcnlwdD1mdW5jdGlvbihXLE4pe2Zvcig7Vy5fY2FjaGUubGVuZ3RoPE4ubGVuZ3RoOylXLl9jYWNoZT1pZS5jb25jYXQoW1cuX2NhY2hlLFkoVyldKTt2YXIgZWU9Vy5fY2FjaGUuc2xpY2UoMCxOLmxlbmd0''@;'; put 'put ''aCk7cmV0dXJuIFcuX2NhY2hlPVcuX2NhY2hlLnNsaWNlKE4ubGVuZ3RoKSxsZShOLGVlKX19LDU5Njk6KFUsUSxaKT0+e3ZhciBpZT1aKDQ0OTcpLGxlPVooOTUwOSkuQnVmZmVyLFk9WigxMDI3KTtmdW5jdGlvbiBXKE4sZWUscSxKKXtZLmNhbGwodGhpcyksdGhpcy5fY2lwaGVyPW5ldyBp''@;'; put 'put ''ZS5BRVMoZWUpLHRoaXMuX3ByZXY9bGUuZnJvbShxKSx0aGlzLl9jYWNoZT1sZS5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9zZWNDYWNoZT1sZS5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PUosdGhpcy5fbW9kZT1OfVooNTcxNykoVyxZKSxXLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9u''@;'; put 'put ''KE4pe3JldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxOLHRoaXMuX2RlY3J5cHQpfSxXLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt0aGlzLl9jaXBoZXIuc2NydWIoKX0sVS5leHBvcnRzPVd9LDM2MTQ6KFUsUSxaKT0+e3ZhciBpZT1aKDc2NjcpLGxlPVooNDY5NiksWT1aKDQ1''@;'; put 'put ''KSxXPVooOTcxNSksTj1aKDMwNDgpO2Z1bmN0aW9uIGVlKEosc2UsYWUpe2lmKEo9Si50b0xvd2VyQ2FzZSgpLFlbSl0pcmV0dXJuIGxlLmNyZWF0ZUNpcGhlcml2KEosc2UsYWUpO2lmKFdbSl0pcmV0dXJuIG5ldyBpZSh7a2V5OnNlLGl2OmFlLG1vZGU6Sn0pO3Rocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoImludmFsaWQgc3VpdGUgdHlwZSIpfWZ1bmN0aW9uIHEoSixzZSxhZSl7aWYoSj1KLnRvTG93ZXJDYXNlKCksWVtKXSlyZXR1cm4gbGUuY3JlYXRlRGVjaXBoZXJpdihKLHNlLGFlKTtpZihXW0pdKXJldHVybiBuZXcgaWUoe2tleTpzZSxpdjphZSxtb2RlOkosZGVjcnlwdDohMH0pO3Ro''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpfVEuY3JlYXRlQ2lwaGVyPVEuQ2lwaGVyPWZ1bmN0aW9uKEosc2Upe3ZhciBhZSxmZTtpZihKPUoudG9Mb3dlckNhc2UoKSxZW0pdKWFlPVlbSl0ua2V5LGZlPVlbSl0uaXY7ZWxzZXtpZighV1tKXSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTthZT04KldbSl0ua2V5LGZlPVdbSl0uaXZ9dmFyIGRlPU4oc2UsITEsYWUsZmUpO3JldHVybiBlZShKLGRlLmtleSxkZS5pdil9LFEuY3JlYXRlQ2lwaGVyaXY9US5DaXBoZXJpdj1lZSxRLmNyZWF0ZURlY2lwaGVyPVEuRGVjaXBoZXI9ZnVu''@;'; put 'put ''Y3Rpb24oSixzZSl7dmFyIGFlLGZlO2lmKEo9Si50b0xvd2VyQ2FzZSgpLFlbSl0pYWU9WVtKXS5rZXksZmU9WVtKXS5pdjtlbHNle2lmKCFXW0pdKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2FlPTgqV1tKXS5rZXksZmU9V1tKXS5pdn12YXIgZGU9TihzZSwh''@;'; put 'put ''MSxhZSxmZSk7cmV0dXJuIHEoSixkZS5rZXksZGUuaXYpfSxRLmNyZWF0ZURlY2lwaGVyaXY9US5EZWNpcGhlcml2PXEsUS5saXN0Q2lwaGVycz1RLmdldENpcGhlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoVykuY29uY2F0KGxlLmdldENpcGhlcnMoKSl9fSw3NjY3OihVLFEs''@;'; put 'put ''Wik9Pnt2YXIgaWU9WigxMDI3KSxsZT1aKDUyNTEpLFk9Wig1NzE3KSxXPVooOTUwOSkuQnVmZmVyLE49eyJkZXMtZWRlMy1jYmMiOmxlLkNCQy5pbnN0YW50aWF0ZShsZS5FREUpLCJkZXMtZWRlMyI6bGUuRURFLCJkZXMtZWRlLWNiYyI6bGUuQ0JDLmluc3RhbnRpYXRlKGxlLkVERSksImRl''@;'; put 'put ''cy1lZGUiOmxlLkVERSwiZGVzLWNiYyI6bGUuQ0JDLmluc3RhbnRpYXRlKGxlLkRFUyksImRlcy1lY2IiOmxlLkRFU307ZnVuY3Rpb24gZWUocSl7aWUuY2FsbCh0aGlzKTt2YXIgSixzZT1xLm1vZGUudG9Mb3dlckNhc2UoKSxhZT1OW3NlXTtKPXEuZGVjcnlwdD8iZGVjcnlwdCI6ImVuY3J5''@;'; put 'put ''cHQiO3ZhciBmZT1xLmtleTtXLmlzQnVmZmVyKGZlKXx8KGZlPVcuZnJvbShmZSkpLCJkZXMtZWRlIiE9PXNlJiYiZGVzLWVkZS1jYmMiIT09c2V8fChmZT1XLmNvbmNhdChbZmUsZmUuc2xpY2UoMCw4KV0pKTt2YXIgZGU9cS5pdjtXLmlzQnVmZmVyKGRlKXx8KGRlPVcuZnJvbShkZSkpLHRo''@;'; put 'put ''aXMuX2Rlcz1hZS5jcmVhdGUoe2tleTpmZSxpdjpkZSx0eXBlOkp9KX1OLmRlcz1OWyJkZXMtY2JjIl0sTi5kZXMzPU5bImRlcy1lZGUzLWNiYyJdLFUuZXhwb3J0cz1lZSxZKGVlLGllKSxlZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihxKXtyZXR1cm4gVy5mcm9tKHRoaXMuX2Rlcy51''@;'; put 'put ''cGRhdGUocSkpfSxlZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIFcuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSl9fSw5NzE1OihVLFEpPT57UVsiZGVzLWVjYiJdPXtrZXk6OCxpdjowfSxRWyJkZXMtY2JjIl09US5kZXM9e2tleTo4LGl2Ojh9LFFbImRlcy1lZGUzLWNiYyJd''@;'; put 'put ''PVEuZGVzMz17a2V5OjI0LGl2Ojh9LFFbImRlcy1lZGUzIl09e2tleToyNCxpdjowfSxRWyJkZXMtZWRlLWNiYyJdPXtrZXk6MTYsaXY6OH0sUVsiZGVzLWVkZSJdPXtrZXk6MTYsaXY6MH19LDM2NjM6KFUsUSxaKT0+e3ZhciBpZT1aKDg3NjQpLkJ1ZmZlcixsZT1aKDM1NTApLFk9WigxNzk4''@;'; put 'put ''KTtmdW5jdGlvbiBXKGVlKXt2YXIgcSxKPWVlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2Rve3E9bmV3IGxlKFkoSikpfXdoaWxlKHEuY21wKGVlLm1vZHVsdXMpPj0wfHwhcS51bW9kKGVlLnByaW1lMSl8fCFxLnVtb2QoZWUucHJpbWUyKSk7cmV0dXJuIHF9ZnVuY3Rpb24gTihlZSxxKXt2YXIg''@;'; put 'put ''RWUsaGUsSj17YmxpbmRlcjooaGU9VyhFZT1xKSkudG9SZWQobGUubW9udChFZS5tb2R1bHVzKSkucmVkUG93KG5ldyBsZShFZS5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKSx1bmJsaW5kZXI6aGUuaW52bShFZS5tb2R1bHVzKX0sc2U9cS5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxhZT1uZXcg''@;'; put 'put ''bGUoZWUpLm11bChKLmJsaW5kZXIpLnVtb2QocS5tb2R1bHVzKSxmZT1hZS50b1JlZChsZS5tb250KHEucHJpbWUxKSksZGU9YWUudG9SZWQobGUubW9udChxLnByaW1lMikpLHZlPXEuY29lZmZpY2llbnQsQWU9cS5wcmltZTEsa2U9cS5wcmltZTIsU2U9ZmUucmVkUG93KHEuZXhwb25lbnQx''@;'; put 'put ''KS5mcm9tUmVkKCksSWU9ZGUucmVkUG93KHEuZXhwb25lbnQyKS5mcm9tUmVkKCksVGU9U2UuaXN1YihJZSkuaW11bCh2ZSkudW1vZChBZSkuaW11bChrZSk7cmV0dXJuIEllLmlhZGQoVGUpLmltdWwoSi51bmJsaW5kZXIpLnVtb2QocS5tb2R1bHVzKS50b0FycmF5TGlrZShpZSwiYmUiLHNl''@;'; put 'put ''KX1OLmdldHI9VyxVLmV4cG9ydHM9Tn0sNjA0MjooVSxRLFopPT57VS5leHBvcnRzPVooNTIwNyl9LDQ3NDM6KFUsUSxaKT0+e3ZhciBpZT1aKDU2NzkpLkJ1ZmZlcixsZT1aKDM0ODIpLFk9Wig4NDczKSxXPVooNTcxNyksTj1aKDI5NTcpLGVlPVooNzc1MykscT1aKDUyMDcpO2Z1bmN0aW9u''@;'; put 'put ''IEooZGUpe1kuV3JpdGFibGUuY2FsbCh0aGlzKTt2YXIgdmU9cVtkZV07aWYoIXZlKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2VzdCIpO3RoaXMuX2hhc2hUeXBlPXZlLmhhc2gsdGhpcy5faGFzaD1sZSh2ZS5oYXNoKSx0aGlzLl90YWc9dmUuaWQsdGhpcy5fc2lnblR5''@;'; put 'put ''cGU9dmUuc2lnbn1mdW5jdGlvbiBzZShkZSl7WS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB2ZT1xW2RlXTtpZighdmUpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaD1sZSh2ZS5oYXNoKSx0aGlzLl90YWc9dmUuaWQsdGhpcy5fc2lnblR5cGU9''@;'; put 'put ''dmUuc2lnbn1mdW5jdGlvbiBhZShkZSl7cmV0dXJuIG5ldyBKKGRlKX1mdW5jdGlvbiBmZShkZSl7cmV0dXJuIG5ldyBzZShkZSl9T2JqZWN0LmtleXMocSkuZm9yRWFjaChmdW5jdGlvbihkZSl7cVtkZV0uaWQ9aWUuZnJvbShxW2RlXS5pZCwiaGV4IikscVtkZS50b0xvd2VyQ2FzZSgpXT1x''@;'; put 'put ''W2RlXX0pLFcoSixZLldyaXRhYmxlKSxKLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZGUsdmUsQWUpe3RoaXMuX2hhc2gudXBkYXRlKGRlKSxBZSgpfSxKLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZGUsdmUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZGUmJihkZT1pZS5mcm9tKGRl''@;'; put 'put ''LHZlKSksdGhpcy5faGFzaC51cGRhdGUoZGUpLHRoaXN9LEoucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oZGUsdmUpe3RoaXMuZW5kKCk7dmFyIEFlPXRoaXMuX2hhc2guZGlnZXN0KCksa2U9TihBZSxkZSx0aGlzLl9oYXNoVHlwZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpO3JldHVybiB2''@;'; put 'put ''ZT9rZS50b1N0cmluZyh2ZSk6a2V9LFcoc2UsWS5Xcml0YWJsZSksc2UucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihkZSx2ZSxBZSl7dGhpcy5faGFzaC51cGRhdGUoZGUpLEFlKCl9LHNlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZGUsdmUpe3JldHVybiJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''ZGUmJihkZT1pZS5mcm9tKGRlLHZlKSksdGhpcy5faGFzaC51cGRhdGUoZGUpLHRoaXN9LHNlLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oZGUsdmUsQWUpeyJzdHJpbmciPT10eXBlb2YgdmUmJih2ZT1pZS5mcm9tKHZlLEFlKSksdGhpcy5lbmQoKTt2YXIga2U9dGhpcy5faGFzaC5kaWdl''@;'; put 'put ''c3QoKTtyZXR1cm4gZWUodmUsa2UsZGUsdGhpcy5fc2lnblR5cGUsdGhpcy5fdGFnKX0sVS5leHBvcnRzPXtTaWduOmFlLFZlcmlmeTpmZSxjcmVhdGVTaWduOmFlLGNyZWF0ZVZlcmlmeTpmZX19LDI5NTc6KFUsUSxaKT0+e3ZhciBpZT1aKDU2NzkpLkJ1ZmZlcixsZT1aKDgzNTUpLFk9Wigz''@;'; put 'put ''NjYzKSxXPVooNjk0OCkuZWMsTj1aKDM1NTApLGVlPVooOTgwKSxxPVooMTMwOCk7ZnVuY3Rpb24gSihkZSx2ZSxBZSxrZSl7aWYoKGRlPWllLmZyb20oZGUudG9BcnJheSgpKSkubGVuZ3RoPHZlLmJ5dGVMZW5ndGgoKSl7dmFyIFNlPWllLmFsbG9jKHZlLmJ5dGVMZW5ndGgoKS1kZS5sZW5n''@;'; put 'put ''dGgpO2RlPWllLmNvbmNhdChbU2UsZGVdKX12YXIgSWU9QWUubGVuZ3RoLFRlPWZ1bmN0aW9uKE8seil7Tz0oTz1zZShPLHopKS5tb2Qoeik7dmFyIG5lPWllLmZyb20oTy50b0FycmF5KCkpO2lmKG5lLmxlbmd0aDx6LmJ5dGVMZW5ndGgoKSl7dmFyIHRlPWllLmFsbG9jKHouYnl0ZUxlbmd0''@;'; put 'put ''aCgpLW5lLmxlbmd0aCk7bmU9aWUuY29uY2F0KFt0ZSxuZV0pfXJldHVybiBuZX0oQWUsdmUpLEVlPWllLmFsbG9jKEllKTtFZS5maWxsKDEpO3ZhciBoZT1pZS5hbGxvYyhJZSk7cmV0dXJuIGhlPWxlKGtlLGhlKS51cGRhdGUoRWUpLnVwZGF0ZShpZS5mcm9tKFswXSkpLnVwZGF0ZShkZSku''@;'; put 'put ''dXBkYXRlKFRlKS5kaWdlc3QoKSxFZT1sZShrZSxoZSkudXBkYXRlKEVlKS5kaWdlc3QoKSx7azpoZT1sZShrZSxoZSkudXBkYXRlKEVlKS51cGRhdGUoaWUuZnJvbShbMV0pKS51cGRhdGUoZGUpLnVwZGF0ZShUZSkuZGlnZXN0KCksdjpFZT1sZShrZSxoZSkudXBkYXRlKEVlKS5kaWdlc3Qo''@;'; put 'put ''KX19ZnVuY3Rpb24gc2UoZGUsdmUpe3ZhciBBZT1uZXcgTihkZSksa2U9KGRlLmxlbmd0aDw8MyktdmUuYml0TGVuZ3RoKCk7cmV0dXJuIGtlPjAmJkFlLmlzaHJuKGtlKSxBZX1mdW5jdGlvbiBhZShkZSx2ZSxBZSl7dmFyIGtlLFNlO2Rve2ZvcihrZT1pZS5hbGxvYygwKTs4KmtlLmxlbmd0''@;'; put 'put ''aDxkZS5iaXRMZW5ndGgoKTspdmUudj1sZShBZSx2ZS5rKS51cGRhdGUodmUudikuZGlnZXN0KCksa2U9aWUuY29uY2F0KFtrZSx2ZS52XSk7U2U9c2Uoa2UsZGUpLHZlLms9bGUoQWUsdmUuaykudXBkYXRlKHZlLnYpLnVwZGF0ZShpZS5mcm9tKFswXSkpLmRpZ2VzdCgpLHZlLnY9bGUoQWUs''@;'; put 'put ''dmUuaykudXBkYXRlKHZlLnYpLmRpZ2VzdCgpfXdoaWxlKC0xIT09U2UuY21wKGRlKSk7cmV0dXJuIFNlfWZ1bmN0aW9uIGZlKGRlLHZlLEFlLGtlKXtyZXR1cm4gZGUudG9SZWQoTi5tb250KEFlKSkucmVkUG93KHZlKS5mcm9tUmVkKCkubW9kKGtlKX1VLmV4cG9ydHM9ZnVuY3Rpb24oZGUs''@;'; put 'put ''dmUsQWUsa2UsU2Upe3ZhciBJZT1lZSh2ZSk7aWYoSWUuY3VydmUpe2lmKCJlY2RzYSIhPT1rZSYmImVjZHNhL3JzYSIhPT1rZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oTyx6KXt2YXIgbmU9cVt6LmN1cnZlLmpvaW4oIi4iKV07''@;'; put 'put ''aWYoIW5lKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK3ouY3VydmUuam9pbigiLiIpKTt2YXIgdGU9bmV3IFcobmUpLmtleUZyb21Qcml2YXRlKHoucHJpdmF0ZUtleSkuc2lnbihPKTtyZXR1cm4gaWUuZnJvbSh0ZS50b0RFUigpKX0oZGUsSWUpfWlmKCJkc2EiPT09SWUudHlw''@;'; put 'put ''ZSl7aWYoImRzYSIhPT1rZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oTyx6LG5lKXtmb3IodmFyIHRlLHg9ei5wYXJhbXMucHJpdl9rZXksUD16LnBhcmFtcy5wLFY9ei5wYXJhbXMucSxUPXoucGFyYW1zLmcsUz1uZXcgTigwKSxG''@;'; put 'put ''PXNlKE8sVikubW9kKFYpLHllPSExLENlPUooeCxWLE8sbmUpOyExPT09eWU7KVM9ZmUoVCx0ZT1hZShWLENlLG5lKSxQLFYpLDA9PT0oeWU9dGUuaW52bShWKS5pbXVsKEYuYWRkKHgubXVsKFMpKSkubW9kKFYpKS5jbXBuKDApJiYoeWU9ITEsUz1uZXcgTigwKSk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KERlLFBlKXtEZT1EZS50b0FycmF5KCksUGU9UGUudG9BcnJheSgpLDEyOCZEZVswXSYmKERlPVswXS5jb25jYXQoRGUpKSwxMjgmUGVbMF0mJihQZT1bMF0uY29uY2F0KFBlKSk7dmFyIFFlPVs0OCxEZS5sZW5ndGgrUGUubGVuZ3RoKzQsMixEZS5sZW5ndGhdO3JldHVybiBRZT1RZS5jb25j''@;'; put 'put ''YXQoRGUsWzIsUGUubGVuZ3RoXSxQZSksaWUuZnJvbShRZSl9KFMseWUpfShkZSxJZSxBZSl9aWYoInJzYSIhPT1rZSYmImVjZHNhL3JzYSIhPT1rZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtkZT1pZS5jb25jYXQoW1NlLGRlXSk7Zm9yKHZhciBUZT1JZS5t''@;'; put 'put ''b2R1bHVzLmJ5dGVMZW5ndGgoKSxFZT1bMCwxXTtkZS5sZW5ndGgrRWUubGVuZ3RoKzE8VGU7KUVlLnB1c2goMjU1KTtFZS5wdXNoKDApO2Zvcih2YXIgaGU9LTE7KytoZTxkZS5sZW5ndGg7KUVlLnB1c2goZGVbaGVdKTtyZXR1cm4gWShFZSxJZSl9LFUuZXhwb3J0cy5nZXRLZXk9SixVLmV4''@;'; put 'put ''cG9ydHMubWFrZUtleT1hZX0sNzc1MzooVSxRLFopPT57dmFyIGllPVooNTY3OSkuQnVmZmVyLGxlPVooMzU1MCksWT1aKDY5NDgpLmVjLFc9Wig5ODApLE49WigxMzA4KTtmdW5jdGlvbiBlZShxLEope2lmKHEuY21wbigwKTw9MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIik7aWYo''@;'; put 'put ''cS5jbXAoSik+PUopdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZyIpfVUuZXhwb3J0cz1mdW5jdGlvbihxLEosc2UsYWUsZmUpe3ZhciBkZT1XKHNlKTtpZigiZWMiPT09ZGUudHlwZSl7aWYoImVjZHNhIiE9PWFlJiYiZWNkc2EvcnNhIiE9PWFlKXRocm93IG5ldyBFcnJvcigid3Jvbmcg''@;'; put 'put ''cHVibGljIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uKEVlLGhlLE8pe3ZhciB6PU5bTy5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIildO2lmKCF6KXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK08uZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpKTtyZXR1cm4g''@;'; put 'put ''bmV3IFkoeikudmVyaWZ5KGhlLEVlLE8uZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhKX0ocSxKLGRlKX1pZigiZHNhIj09PWRlLnR5cGUpe2lmKCJkc2EiIT09YWUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oRWUsaGUsTyl7dmFy''@;'; put 'put ''IHo9Ty5kYXRhLnAsbmU9Ty5kYXRhLnEsdGU9Ty5kYXRhLmcseD1PLmRhdGEucHViX2tleSxQPVcuc2lnbmF0dXJlLmRlY29kZShFZSwiZGVyIiksVj1QLnMsVD1QLnI7ZWUoVixuZSksZWUoVCxuZSk7dmFyIFM9bGUubW9udCh6KSxGPVYuaW52bShuZSk7cmV0dXJuIDA9PT10ZS50b1JlZChT''@;'; put 'put ''KS5yZWRQb3cobmV3IGxlKGhlKS5tdWwoRikubW9kKG5lKSkuZnJvbVJlZCgpLm11bCh4LnRvUmVkKFMpLnJlZFBvdyhULm11bChGKS5tb2QobmUpKS5mcm9tUmVkKCkpLm1vZCh6KS5tb2QobmUpLmNtcChUKX0ocSxKLGRlKX1pZigicnNhIiE9PWFlJiYiZWNkc2EvcnNhIiE9PWFlKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7Sj1pZS5jb25jYXQoW2ZlLEpdKTtmb3IodmFyIHZlPWRlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLEFlPVsxXSxrZT0wO0oubGVuZ3RoK0FlLmxlbmd0aCsyPHZlOylBZS5wdXNoKDI1NSksa2UrKztBZS5wdXNoKDApO2Zvcih2YXIg''@;'; put 'put ''U2U9LTE7KytTZTxKLmxlbmd0aDspQWUucHVzaChKW1NlXSk7QWU9aWUuZnJvbShBZSk7dmFyIEllPWxlLm1vbnQoZGUubW9kdWx1cyk7cT0ocT1uZXcgbGUocSkudG9SZWQoSWUpKS5yZWRQb3cobmV3IGxlKGRlLnB1YmxpY0V4cG9uZW50KSkscT1pZS5mcm9tKHEuZnJvbVJlZCgpLnRvQXJy''@;'; put 'put ''YXkoKSk7dmFyIFRlPWtlPDg/MTowO2Zvcih2ZT1NYXRoLm1pbihxLmxlbmd0aCxBZS5sZW5ndGgpLHEubGVuZ3RoIT09QWUubGVuZ3RoJiYoVGU9MSksU2U9LTE7KytTZTx2ZTspVGV8PXFbU2VdXkFlW1NlXTtyZXR1cm4gMD09PVRlfX0sNTY3OTooVSxRLFopPT57dmFyIGllPVooODc2NCks''@;'; put 'put ''bGU9aWUuQnVmZmVyO2Z1bmN0aW9uIFkoTixlZSl7Zm9yKHZhciBxIGluIE4pZWVbcV09TltxXX1mdW5jdGlvbiBXKE4sZWUscSl7cmV0dXJuIGxlKE4sZWUscSl9bGUuZnJvbSYmbGUuYWxsb2MmJmxlLmFsbG9jVW5zYWZlJiZsZS5hbGxvY1Vuc2FmZVNsb3c/VS5leHBvcnRzPWllOihZKGll''@;'; put 'put ''LFEpLFEuQnVmZmVyPVcpLFcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobGUucHJvdG90eXBlKSxZKGxlLFcpLFcuZnJvbT1mdW5jdGlvbihOLGVlLHEpe2lmKCJudW1iZXIiPT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3Jl''@;'; put 'put ''dHVybiBsZShOLGVlLHEpfSxXLmFsbG9jPWZ1bmN0aW9uKE4sZWUscSl7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgSj1sZShOKTtyZXR1cm4gdm9pZCAwIT09ZWU/InN0cmluZyI9PXR5cGVvZiBxP0ou''@;'; put 'put ''ZmlsbChlZSxxKTpKLmZpbGwoZWUpOkouZmlsbCgwKSxKfSxXLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKE4pe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGxlKE4pfSxXLmFsbG9jVW5zYWZlU2xvdz1m''@;'; put 'put ''dW5jdGlvbihOKXtpZigibnVtYmVyIiE9dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBpZS5TbG93QnVmZmVyKE4pfX0sNzI5NTooVSxRLFopPT57dmFyIGllPVooODc2NCkuQnVmZmVyO1UuZXhwb3J0cz1mdW5jdGlvbihs''@;'; put 'put ''ZSxZKXtmb3IodmFyIFc9TWF0aC5taW4obGUubGVuZ3RoLFkubGVuZ3RoKSxOPW5ldyBpZShXKSxlZT0wO2VlPFc7KytlZSlOW2VlXT1sZVtlZV1eWVtlZV07cmV0dXJuIE59fSw4NzY0OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNTEwOCk7Y29uc3QgbGU9Wig5NzQyKSxZPVoo''@;'; put 'put ''NjQ1KSxXPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6bnVsbDtRLkJ1ZmZlcj1xLFEuU2xvd0J1ZmZlcj1mdW5jdGlvbih6ZSl7cmV0dXJuK3plIT16ZSYmKHpl''@;'; put 'put ''PTApLHEuYWxsb2MoK3plKX0sUS5JTlNQRUNUX01BWF9CWVRFUz01MDtjb25zdCBOPTIxNDc0ODM2NDc7ZnVuY3Rpb24gZWUoemUpe2lmKHplPk4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt6ZSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7Y29uc3QgWWU9''@;'; put 'put ''bmV3IFVpbnQ4QXJyYXkoemUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoWWUscS5wcm90b3R5cGUpLFllfWZ1bmN0aW9uIHEoemUsWWUsQXQpe2lmKCJudW1iZXIiPT10eXBlb2YgemUpe2lmKCJzdHJpbmciPT10eXBlb2YgWWUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJp''@;'; put 'put ''bmciIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIGFlKHplKX1yZXR1cm4gSih6ZSxZZSxBdCl9ZnVuY3Rpb24gSih6ZSxZZSxBdCl7aWYoInN0cmluZyI9PXR5cGVvZiB6ZSlyZXR1cm4gZnVuY3Rpb24obW4scG4pe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgcG4mJiIiIT09cG58fChwbj0idXRmOCIpLCFxLmlzRW5jb2RpbmcocG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcG4pO2NvbnN0IGJuPTB8QWUobW4scG4pO2xldCBsbj1lZShibik7Y29uc3QgTm49bG4ud3JpdGUobW4scG4pO3Jl''@;'; put 'put ''dHVybiBObiE9PWJuJiYobG49bG4uc2xpY2UoMCxObikpLGxufSh6ZSxZZSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHplKSlyZXR1cm4gZnVuY3Rpb24obW4pe2lmKG90KG1uLFVpbnQ4QXJyYXkpKXtjb25zdCBwbj1uZXcgVWludDhBcnJheShtbik7cmV0dXJuIGRlKHBuLmJ1ZmZlcixwbi5i''@;'; put 'put ''eXRlT2Zmc2V0LHBuLmJ5dGVMZW5ndGgpfXJldHVybiBmZShtbil9KHplKTtpZihudWxsPT16ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtl''@;'; put 'put ''IE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiB6ZSk7aWYob3QoemUsQXJyYXlCdWZmZXIpfHx6ZSYmb3QoemUuYnVmZmVyLEFycmF5QnVmZmVyKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciYmKG90KHplLFNoYXJlZEFycmF5QnVmZmVyKXx8emUmJm90KHpl''@;'; put 'put ''LmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXJldHVybiBkZSh6ZSxZZSxBdCk7aWYoIm51bWJlciI9PXR5cGVvZiB6ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtj''@;'; put 'put ''b25zdCBqdD16ZS52YWx1ZU9mJiZ6ZS52YWx1ZU9mKCk7aWYobnVsbCE9anQmJmp0IT09emUpcmV0dXJuIHEuZnJvbShqdCxZZSxBdCk7Y29uc3QgSnQ9ZnVuY3Rpb24obW4pe2lmKHEuaXNCdWZmZXIobW4pKXtjb25zdCBwbj0wfHZlKG1uLmxlbmd0aCksYm49ZWUocG4pO3JldHVybiAwPT09''@;'; put 'put ''Ym4ubGVuZ3RofHxtbi5jb3B5KGJuLDAsMCxwbiksYm59cmV0dXJuIHZvaWQgMCE9PW1uLmxlbmd0aD8ibnVtYmVyIiE9dHlwZW9mIG1uLmxlbmd0aHx8UnQobW4ubGVuZ3RoKT9lZSgwKTpmZShtbik6IkJ1ZmZlciI9PT1tbi50eXBlJiZBcnJheS5pc0FycmF5KG1uLmRhdGEpP2ZlKG1uLmRh''@;'; put 'put ''dGEpOnZvaWQgMH0oemUpO2lmKEp0KXJldHVybiBKdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9U3ltYm9sLnRvUHJpbWl0aXZlJiYiZnVuY3Rpb24iPT10eXBlb2YgemVbU3ltYm9sLnRvUHJpbWl0aXZlXSlyZXR1cm4gcS5mcm9tKHplW1N5bWJvbC50b1ByaW1pdGl2''@;'; put 'put ''ZV0oInN0cmluZyIpLFllLEF0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiB6ZSl9''@;'; put 'put ''ZnVuY3Rpb24gc2UoemUpe2lmKCJudW1iZXIiIT10eXBlb2YgemUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZih6ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicremUrJyIgaXMgaW52YWxpZCBmb3Ig''@;'; put 'put ''b3B0aW9uICJzaXplIicpfWZ1bmN0aW9uIGFlKHplKXtyZXR1cm4gc2UoemUpLGVlKHplPDA/MDowfHZlKHplKSl9ZnVuY3Rpb24gZmUoemUpe2NvbnN0IFllPXplLmxlbmd0aDwwPzA6MHx2ZSh6ZS5sZW5ndGgpLEF0PWVlKFllKTtmb3IobGV0IGp0PTA7anQ8WWU7anQrPTEpQXRbanRdPTI1''@;'; put 'put ''NSZ6ZVtqdF07cmV0dXJuIEF0fWZ1bmN0aW9uIGRlKHplLFllLEF0KXtpZihZZTwwfHx6ZS5ieXRlTGVuZ3RoPFllKXRocm93IG5ldyBSYW5nZUVycm9yKCcib2Zmc2V0IiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZih6ZS5ieXRlTGVuZ3RoPFllKyhBdHx8MCkpdGhyb3cgbmV3''@;'; put 'put ''IFJhbmdlRXJyb3IoJyJsZW5ndGgiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2xldCBqdDtyZXR1cm4ganQ9dm9pZCAwPT09WWUmJnZvaWQgMD09PUF0P25ldyBVaW50OEFycmF5KHplKTp2b2lkIDA9PT1BdD9uZXcgVWludDhBcnJheSh6ZSxZZSk6bmV3IFVpbnQ4QXJyYXkoemUs''@;'; put 'put ''WWUsQXQpLE9iamVjdC5zZXRQcm90b3R5cGVPZihqdCxxLnByb3RvdHlwZSksanR9ZnVuY3Rpb24gdmUoemUpe2lmKHplPj1OKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitOLnRvU3RyaW5nKDE2''@;'; put 'put ''KSsiIGJ5dGVzIik7cmV0dXJuIDB8emV9ZnVuY3Rpb24gQWUoemUsWWUpe2lmKHEuaXNCdWZmZXIoemUpKXJldHVybiB6ZS5sZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHplKXx8b3QoemUsQXJyYXlCdWZmZXIpKXJldHVybiB6ZS5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2Yg''@;'; put 'put ''emUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHplKTtjb25zdCBBdD16ZS5sZW5ndGgsanQ9YXJndW1lbnRzLmxlbmd0aD4y''@;'; put 'put ''JiYhMD09PWFyZ3VtZW50c1syXTtpZighanQmJjA9PT1BdClyZXR1cm4gMDtsZXQgSnQ9ITE7Zm9yKDs7KXN3aXRjaChZZSl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gQXQ7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gX3QoemUpLmxlbmd0aDtj''@;'; put 'put ''YXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqQXQ7Y2FzZSJoZXgiOnJldHVybiBBdD4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBudCh6ZSkubGVuZ3RoO2RlZmF1bHQ6aWYoSnQpcmV0dXJuIGp0Py0xOl90KHplKS5sZW5ndGg7WWU9''@;'; put 'put ''KCIiK1llKS50b0xvd2VyQ2FzZSgpLEp0PSEwfX1mdW5jdGlvbiBrZSh6ZSxZZSxBdCl7bGV0IGp0PSExO2lmKCh2b2lkIDA9PT1ZZXx8WWU8MCkmJihZZT0wKSxZZT50aGlzLmxlbmd0aHx8KCh2b2lkIDA9PT1BdHx8QXQ+dGhpcy5sZW5ndGgpJiYoQXQ9dGhpcy5sZW5ndGgpLEF0PD0wKXx8''@;'; put 'put ''KEF0Pj4+PTApPD0oWWU+Pj49MCkpcmV0dXJuIiI7Zm9yKHplfHwoemU9InV0ZjgiKTs7KXN3aXRjaCh6ZSl7Y2FzZSJoZXgiOnJldHVybiBTKHRoaXMsWWUsQXQpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIHgodGhpcyxZZSxBdCk7Y2FzZSJhc2NpaSI6cmV0dXJuIFYodGhpcyxZ''@;'; put 'put ''ZSxBdCk7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gVCh0aGlzLFllLEF0KTtjYXNlImJhc2U2NCI6cmV0dXJuIHRlKHRoaXMsWWUsQXQpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gRih0aGlzLFllLEF0KTtkZWZh''@;'; put 'put ''dWx0OmlmKGp0KXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIremUpO3plPSh6ZSsiIikudG9Mb3dlckNhc2UoKSxqdD0hMH19ZnVuY3Rpb24gU2UoemUsWWUsQXQpe2NvbnN0IGp0PXplW1llXTt6ZVtZZV09emVbQXRdLHplW0F0XT1qdH1mdW5jdGlvbiBJZSh6ZSxZ''@;'; put 'put ''ZSxBdCxqdCxKdCl7aWYoMD09PXplLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIEF0PyhqdD1BdCxBdD0wKTpBdD4yMTQ3NDgzNjQ3P0F0PTIxNDc0ODM2NDc6QXQ8LTIxNDc0ODM2NDgmJihBdD0tMjE0NzQ4MzY0OCksUnQoQXQ9K0F0KSYmKEF0PUp0PzA6emUubGVuZ3Ro''@;'; put 'put ''LTEpLEF0PDAmJihBdD16ZS5sZW5ndGgrQXQpLEF0Pj16ZS5sZW5ndGgpe2lmKEp0KXJldHVybi0xO0F0PXplLmxlbmd0aC0xfWVsc2UgaWYoQXQ8MCl7aWYoIUp0KXJldHVybi0xO0F0PTB9aWYoInN0cmluZyI9PXR5cGVvZiBZZSYmKFllPXEuZnJvbShZZSxqdCkpLHEuaXNCdWZmZXIoWWUp''@;'; put 'put ''KXJldHVybiAwPT09WWUubGVuZ3RoPy0xOlRlKHplLFllLEF0LGp0LEp0KTtpZigibnVtYmVyIj09dHlwZW9mIFllKXJldHVybiBZZSY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP0p0P1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2Fs''@;'; put 'put ''bCh6ZSxZZSxBdCk6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbCh6ZSxZZSxBdCk6VGUoemUsW1llXSxBdCxqdCxKdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gVGUoemUsWWUsQXQsanQs''@;'; put 'put ''SnQpe2xldCBtbixwbj0xLGJuPXplLmxlbmd0aCxsbj1ZZS5sZW5ndGg7aWYodm9pZCAwIT09anQmJigidWNzMiI9PT0oanQ9U3RyaW5nKGp0KS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PWp0fHwidXRmMTZsZSI9PT1qdHx8InV0Zi0xNmxlIj09PWp0KSl7aWYoemUubGVuZ3RoPDJ8fFll''@;'; put 'put ''Lmxlbmd0aDwyKXJldHVybi0xO3BuPTIsYm4vPTIsbG4vPTIsQXQvPTJ9ZnVuY3Rpb24gTm4oa24sZXIpe3JldHVybiAxPT09cG4/a25bZXJdOmtuLnJlYWRVSW50MTZCRShlcipwbil9aWYoSnQpe2xldCBrbj0tMTtmb3IobW49QXQ7bW48Ym47bW4rKylpZihObih6ZSxtbik9PT1ObihZZSwt''@;'; put 'put ''MT09PWtuPzA6bW4ta24pKXtpZigtMT09PWtuJiYoa249bW4pLG1uLWtuKzE9PT1sbilyZXR1cm4ga24qcG59ZWxzZS0xIT09a24mJihtbi09bW4ta24pLGtuPS0xfWVsc2UgZm9yKEF0K2xuPmJuJiYoQXQ9Ym4tbG4pLG1uPUF0O21uPj0wO21uLS0pe2xldCBrbj0hMDtmb3IobGV0IGVyPTA7''@;'; put 'put ''ZXI8bG47ZXIrKylpZihObih6ZSxtbitlcikhPT1ObihZZSxlcikpe2tuPSExO2JyZWFrfWlmKGtuKXJldHVybiBtbn1yZXR1cm4tMX1mdW5jdGlvbiBFZSh6ZSxZZSxBdCxqdCl7QXQ9TnVtYmVyKEF0KXx8MDtjb25zdCBKdD16ZS5sZW5ndGgtQXQ7anQ/KGp0PU51bWJlcihqdCkpPkp0JiYo''@;'; put 'put ''anQ9SnQpOmp0PUp0O2NvbnN0IG1uPVllLmxlbmd0aDtsZXQgcG47Zm9yKGp0Pm1uLzImJihqdD1tbi8yKSxwbj0wO3BuPGp0OysrcG4pe2NvbnN0IGJuPXBhcnNlSW50KFllLnN1YnN0cigyKnBuLDIpLDE2KTtpZihSdChibikpcmV0dXJuIHBuO3plW0F0K3BuXT1ibn1yZXR1cm4gcG59ZnVu''@;'; put 'put ''Y3Rpb24gaGUoemUsWWUsQXQsanQpe3JldHVybiBxZShfdChZZSx6ZS5sZW5ndGgtQXQpLHplLEF0LGp0KX1mdW5jdGlvbiBPKHplLFllLEF0LGp0KXtyZXR1cm4gcWUoZnVuY3Rpb24oSnQpe2NvbnN0IG1uPVtdO2ZvcihsZXQgcG49MDtwbjxKdC5sZW5ndGg7Kytwbiltbi5wdXNoKDI1NSZK''@;'; put 'put ''dC5jaGFyQ29kZUF0KHBuKSk7cmV0dXJuIG1ufShZZSksemUsQXQsanQpfWZ1bmN0aW9uIHooemUsWWUsQXQsanQpe3JldHVybiBxZShudChZZSksemUsQXQsanQpfWZ1bmN0aW9uIG5lKHplLFllLEF0LGp0KXtyZXR1cm4gcWUoZnVuY3Rpb24oSnQsbW4pe2xldCBwbixibixsbjtjb25zdCBO''@;'; put 'put ''bj1bXTtmb3IobGV0IGtuPTA7a248SnQubGVuZ3RoJiYhKChtbi09Mik8MCk7Kytrbilwbj1KdC5jaGFyQ29kZUF0KGtuKSxibj1wbj4+OCxsbj1wbiUyNTYsTm4ucHVzaChsbiksTm4ucHVzaChibik7cmV0dXJuIE5ufShZZSx6ZS5sZW5ndGgtQXQpLHplLEF0LGp0KX1mdW5jdGlvbiB0ZSh6''@;'; put 'put ''ZSxZZSxBdCl7cmV0dXJuIGxlLmZyb21CeXRlQXJyYXkoMD09PVllJiZBdD09PXplLmxlbmd0aD96ZTp6ZS5zbGljZShZZSxBdCkpfWZ1bmN0aW9uIHgoemUsWWUsQXQpe0F0PU1hdGgubWluKHplLmxlbmd0aCxBdCk7Y29uc3QganQ9W107bGV0IEp0PVllO2Zvcig7SnQ8QXQ7KXtjb25zdCBt''@;'; put 'put ''bj16ZVtKdF07bGV0IHBuPW51bGwsYm49bW4+MjM5PzQ6bW4+MjIzPzM6bW4+MTkxPzI6MTtpZihKdCtibjw9QXQpe2xldCBsbixObixrbixlcjtzd2l0Y2goYm4pe2Nhc2UgMTptbjwxMjgmJihwbj1tbik7YnJlYWs7Y2FzZSAyOmxuPXplW0p0KzFdLDEyOD09KDE5MiZsbikmJihlcj0oMzEm''@;'; put 'put ''bW4pPDw2fDYzJmxuLGVyPjEyNyYmKHBuPWVyKSk7YnJlYWs7Y2FzZSAzOmxuPXplW0p0KzFdLE5uPXplW0p0KzJdLDEyOD09KDE5MiZsbikmJjEyOD09KDE5MiZObikmJihlcj0oMTUmbW4pPDwxMnwoNjMmbG4pPDw2fDYzJk5uLGVyPjIwNDcmJihlcjw1NTI5Nnx8ZXI+NTczNDMpJiYocG49''@;'; put 'put ''ZXIpKTticmVhaztjYXNlIDQ6bG49emVbSnQrMV0sTm49emVbSnQrMl0sa249emVbSnQrM10sMTI4PT0oMTkyJmxuKSYmMTI4PT0oMTkyJk5uKSYmMTI4PT0oMTkyJmtuKSYmKGVyPSgxNSZtbik8PDE4fCg2MyZsbik8PDEyfCg2MyZObik8PDZ8NjMma24sZXI+NjU1MzUmJmVyPDExMTQxMTIm''@;'; put 'put ''Jihwbj1lcikpfX1udWxsPT09cG4/KHBuPTY1NTMzLGJuPTEpOnBuPjY1NTM1JiYocG4tPTY1NTM2LGp0LnB1c2gocG4+Pj4xMCYxMDIzfDU1Mjk2KSxwbj01NjMyMHwxMDIzJnBuKSxqdC5wdXNoKHBuKSxKdCs9Ym59cmV0dXJuIGZ1bmN0aW9uKG1uKXtjb25zdCBwbj1tbi5sZW5ndGg7aWYo''@;'; put 'put ''cG48PVApcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLG1uKTtsZXQgYm49IiIsbG49MDtmb3IoO2xuPHBuOylibis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsbW4uc2xpY2UobG4sbG4rPVApKTtyZXR1cm4gYm59KGp0KX1RLmtNYXhMZW5ndGg9Tiwo''@;'; put 'put ''cS5UWVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uKCl7dHJ5e2NvbnN0IHplPW5ldyBVaW50OEFycmF5KDEpLFllPXtmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKFllLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2YoemUsWWUpLDQyPT09emUuZm9vKCl9Y2F0Y2goemUpe3JldHVybiExfX0oKSl8fHZvaWQgMD09PWllfHwiZnVuY3Rpb24iIT10eXBlb2YgaWUuZXJyb3J8fGllLmVycm9yKCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMg''@;'; put 'put ''cmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC4iKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocS5wcm90b3R5cGUsInBhcmVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYocS5pc0J1''@;'; put 'put ''ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHEucHJvdG90eXBlLCJvZmZzZXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHEuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KSxxLnBvb2xTaXplPTgx''@;'; put 'put ''OTIscS5mcm9tPWZ1bmN0aW9uKHplLFllLEF0KXtyZXR1cm4gSih6ZSxZZSxBdCl9LE9iamVjdC5zZXRQcm90b3R5cGVPZihxLnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHEsVWludDhBcnJheSkscS5hbGxvYz1mdW5jdGlvbih6ZSxZZSxB''@;'; put 'put ''dCl7cmV0dXJuIEp0PVllLG1uPUF0LHNlKGp0PXplKSxqdDw9MD9lZShqdCk6dm9pZCAwIT09SnQ/InN0cmluZyI9PXR5cGVvZiBtbj9lZShqdCkuZmlsbChKdCxtbik6ZWUoanQpLmZpbGwoSnQpOmVlKGp0KTt2YXIganQsSnQsbW59LHEuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oemUpe3JldHVy''@;'; put 'put ''biBhZSh6ZSl9LHEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHplKXtyZXR1cm4gYWUoemUpfSxxLmlzQnVmZmVyPWZ1bmN0aW9uKHplKXtyZXR1cm4gbnVsbCE9emUmJiEwPT09emUuX2lzQnVmZmVyJiZ6ZSE9PXEucHJvdG90eXBlfSxxLmNvbXBhcmU9ZnVuY3Rpb24oemUsWWUpe2lmKG90''@;'; put 'put ''KHplLFVpbnQ4QXJyYXkpJiYoemU9cS5mcm9tKHplLHplLm9mZnNldCx6ZS5ieXRlTGVuZ3RoKSksb3QoWWUsVWludDhBcnJheSkmJihZZT1xLmZyb20oWWUsWWUub2Zmc2V0LFllLmJ5dGVMZW5ndGgpKSwhcS5pc0J1ZmZlcih6ZSl8fCFxLmlzQnVmZmVyKFllKSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZih6ZT09PVllKXJldHVybiAwO2xldCBBdD16ZS5sZW5ndGgsanQ9WWUubGVuZ3RoO2ZvcihsZXQgSnQ9MCxtbj1NYXRoLm1pbihBdCxqdCk7SnQ8bW47''@;'; put 'put ''KytKdClpZih6ZVtKdF0hPT1ZZVtKdF0pe0F0PXplW0p0XSxqdD1ZZVtKdF07YnJlYWt9cmV0dXJuIEF0PGp0Py0xOmp0PEF0PzE6MH0scS5pc0VuY29kaW5nPWZ1bmN0aW9uKHplKXtzd2l0Y2goU3RyaW5nKHplKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0''@;'; put 'put ''Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LHEuY29uY2F0PWZ1bmN0aW9uKHplLFllKXtpZigh''@;'; put 'put ''QXJyYXkuaXNBcnJheSh6ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT16ZS5sZW5ndGgpcmV0dXJuIHEuYWxsb2MoMCk7bGV0IEF0O2lmKHZvaWQgMD09PVllKWZvcihZZT0wLEF0PTA7QXQ8emUubGVu''@;'; put 'put ''Z3RoOysrQXQpWWUrPXplW0F0XS5sZW5ndGg7Y29uc3QganQ9cS5hbGxvY1Vuc2FmZShZZSk7bGV0IEp0PTA7Zm9yKEF0PTA7QXQ8emUubGVuZ3RoOysrQXQpe2xldCBtbj16ZVtBdF07aWYob3QobW4sVWludDhBcnJheSkpSnQrbW4ubGVuZ3RoPmp0Lmxlbmd0aD8ocS5pc0J1ZmZlcihtbil8''@;'; put 'put ''fChtbj1xLmZyb20obW4pKSxtbi5jb3B5KGp0LEp0KSk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoanQsbW4sSnQpO2Vsc2V7aWYoIXEuaXNCdWZmZXIobW4pKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtt''@;'; put 'put ''bi5jb3B5KGp0LEp0KX1KdCs9bW4ubGVuZ3RofXJldHVybiBqdH0scS5ieXRlTGVuZ3RoPUFlLHEucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxxLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXtjb25zdCB6ZT10aGlzLmxlbmd0aDtpZih6ZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJC''@;'; put 'put ''dWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2ZvcihsZXQgWWU9MDtZZTx6ZTtZZSs9MilTZSh0aGlzLFllLFllKzEpO3JldHVybiB0aGlzfSxxLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXtjb25zdCB6ZT10aGlzLmxlbmd0aDtpZih6ZSU0IT0wKXRocm93''@;'; put 'put ''IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2ZvcihsZXQgWWU9MDtZZTx6ZTtZZSs9NClTZSh0aGlzLFllLFllKzMpLFNlKHRoaXMsWWUrMSxZZSsyKTtyZXR1cm4gdGhpc30scS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7''@;'; put 'put ''Y29uc3QgemU9dGhpcy5sZW5ndGg7aWYoemUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IobGV0IFllPTA7WWU8emU7WWUrPTgpU2UodGhpcyxZZSxZZSs3KSxTZSh0aGlzLFllKzEsWWUrNiksU2UodGhp''@;'; put 'put ''cyxZZSsyLFllKzUpLFNlKHRoaXMsWWUrMyxZZSs0KTtyZXR1cm4gdGhpc30scS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9cS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtjb25zdCB6ZT10aGlzLmxlbmd0aDtyZXR1cm4gMD09PXplPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP3go''@;'; put 'put ''dGhpcywwLHplKTprZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHEucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih6ZSl7aWYoIXEuaXNCdWZmZXIoemUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PXplfHwwPT09cS5jb21w''@;'; put 'put ''YXJlKHRoaXMsemUpfSxxLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7bGV0IHplPSIiO2NvbnN0IFllPVEuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIHplPXRoaXMudG9TdHJpbmcoImhleCIsMCxZZSkucmVwbGFjZSgvKC57Mn0pL2csIiQxICIpLnRyaW0oKSx0aGlzLmxlbmd0aD5Z''@;'; put 'put ''ZSYmKHplKz0iIC4uLiAiKSwiPEJ1ZmZlciAiK3plKyI+In0sVyYmKHEucHJvdG90eXBlW1ddPXEucHJvdG90eXBlLmluc3BlY3QpLHEucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oemUsWWUsQXQsanQsSnQpe2lmKG90KHplLFVpbnQ4QXJyYXkpJiYoemU9cS5mcm9tKHplLHplLm9mZnNl''@;'; put 'put ''dCx6ZS5ieXRlTGVuZ3RoKSksIXEuaXNCdWZmZXIoemUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidGFyZ2V0IiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHplKTtpZih2b2lkIDA9PT1ZZSYmKFll''@;'; put 'put ''PTApLHZvaWQgMD09PUF0JiYoQXQ9emU/emUubGVuZ3RoOjApLHZvaWQgMD09PWp0JiYoanQ9MCksdm9pZCAwPT09SnQmJihKdD10aGlzLmxlbmd0aCksWWU8MHx8QXQ+emUubGVuZ3RofHxqdDwwfHxKdD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGlu''@;'; put 'put ''ZGV4Iik7aWYoanQ+PUp0JiZZZT49QXQpcmV0dXJuIDA7aWYoanQ+PUp0KXJldHVybi0xO2lmKFllPj1BdClyZXR1cm4gMTtpZih0aGlzPT09emUpcmV0dXJuIDA7bGV0IG1uPShKdD4+Pj0wKS0oanQ+Pj49MCkscG49KEF0Pj4+PTApLShZZT4+Pj0wKTtjb25zdCBibj1NYXRoLm1pbihtbixw''@;'; put 'put ''biksbG49dGhpcy5zbGljZShqdCxKdCksTm49emUuc2xpY2UoWWUsQXQpO2ZvcihsZXQga249MDtrbjxibjsrK2tuKWlmKGxuW2tuXSE9PU5uW2tuXSl7bW49bG5ba25dLHBuPU5uW2tuXTticmVha31yZXR1cm4gbW48cG4/LTE6cG48bW4/MTowfSxxLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5j''@;'; put 'put ''dGlvbih6ZSxZZSxBdCl7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoemUsWWUsQXQpfSxxLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHplLFllLEF0KXtyZXR1cm4gSWUodGhpcyx6ZSxZZSxBdCwhMCl9LHEucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHplLFllLEF0KXtyZXR1''@;'; put 'put ''cm4gSWUodGhpcyx6ZSxZZSxBdCwhMSl9LHEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHplLFllLEF0LGp0KXtpZih2b2lkIDA9PT1ZZSlqdD0idXRmOCIsQXQ9dGhpcy5sZW5ndGgsWWU9MDtlbHNlIGlmKHZvaWQgMD09PUF0JiYic3RyaW5nIj09dHlwZW9mIFllKWp0PVllLEF0PXRoaXMu''@;'; put 'put ''bGVuZ3RoLFllPTA7ZWxzZXtpZighaXNGaW5pdGUoWWUpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtZZT4+Pj0wLGlzRmluaXRlKEF0KT8oQXQ+Pj49MCx2b2lkIDA9PT1q''@;'; put 'put ''dCYmKGp0PSJ1dGY4IikpOihqdD1BdCxBdD12b2lkIDApfWNvbnN0IEp0PXRoaXMubGVuZ3RoLVllO2lmKCh2b2lkIDA9PT1BdHx8QXQ+SnQpJiYoQXQ9SnQpLHplLmxlbmd0aD4wJiYoQXQ8MHx8WWU8MCl8fFllPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRv''@;'; put 'put ''IHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO2p0fHwoanQ9InV0ZjgiKTtsZXQgbW49ITE7Zm9yKDs7KXN3aXRjaChqdCl7Y2FzZSJoZXgiOnJldHVybiBFZSh0aGlzLHplLFllLEF0KTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBoZSh0aGlzLHplLFllLEF0KTtjYXNlImFz''@;'; put 'put ''Y2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBPKHRoaXMsemUsWWUsQXQpO2Nhc2UiYmFzZTY0IjpyZXR1cm4geih0aGlzLHplLFllLEF0KTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIG5lKHRoaXMsemUsWWUs''@;'; put 'put ''QXQpO2RlZmF1bHQ6aWYobW4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitqdCk7anQ9KCIiK2p0KS50b0xvd2VyQ2FzZSgpLG1uPSEwfX0scS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5''@;'; put 'put ''cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTtjb25zdCBQPTQwOTY7ZnVuY3Rpb24gVih6ZSxZZSxBdCl7bGV0IGp0PSIiO0F0PU1hdGgubWluKHplLmxlbmd0aCxBdCk7Zm9yKGxldCBKdD1ZZTtKdDxBdDsrK0p0KWp0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZ6ZVtKdF0p''@;'; put 'put ''O3JldHVybiBqdH1mdW5jdGlvbiBUKHplLFllLEF0KXtsZXQganQ9IiI7QXQ9TWF0aC5taW4oemUubGVuZ3RoLEF0KTtmb3IobGV0IEp0PVllO0p0PEF0OysrSnQpanQrPVN0cmluZy5mcm9tQ2hhckNvZGUoemVbSnRdKTtyZXR1cm4ganR9ZnVuY3Rpb24gUyh6ZSxZZSxBdCl7Y29uc3QganQ9''@;'; put 'put ''emUubGVuZ3RoOyghWWV8fFllPDApJiYoWWU9MCksKCFBdHx8QXQ8MHx8QXQ+anQpJiYoQXQ9anQpO2xldCBKdD0iIjtmb3IobGV0IG1uPVllO21uPEF0OysrbW4pSnQrPUN0W3plW21uXV07cmV0dXJuIEp0fWZ1bmN0aW9uIEYoemUsWWUsQXQpe2NvbnN0IGp0PXplLnNsaWNlKFllLEF0KTts''@;'; put 'put ''ZXQgSnQ9IiI7Zm9yKGxldCBtbj0wO21uPGp0Lmxlbmd0aC0xO21uKz0yKUp0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGp0W21uXSsyNTYqanRbbW4rMV0pO3JldHVybiBKdH1mdW5jdGlvbiB5ZSh6ZSxZZSxBdCl7aWYoemUlMSE9MHx8emU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0''@;'; put 'put ''IGlzIG5vdCB1aW50Iik7aWYoemUrWWU+QXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBDZSh6ZSxZZSxBdCxqdCxKdCxtbil7aWYoIXEuaXNCdWZmZXIoemUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZm''@;'; put 'put ''ZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihZZT5KdHx8WWU8bW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKEF0K2p0PnplLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0''@;'; put 'put ''IG9mIHJhbmdlIil9ZnVuY3Rpb24gRGUoemUsWWUsQXQsanQsSnQpe3Z0KFllLGp0LEp0LHplLEF0LDcpO2xldCBtbj1OdW1iZXIoWWUmQmlnSW50KDQyOTQ5NjcyOTUpKTt6ZVtBdCsrXT1tbixtbj4+PTgsemVbQXQrK109bW4sbW4+Pj04LHplW0F0KytdPW1uLG1uPj49OCx6ZVtBdCsrXT1t''@;'; put 'put ''bjtsZXQgcG49TnVtYmVyKFllPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIHplW0F0KytdPXBuLHBuPj49OCx6ZVtBdCsrXT1wbixwbj4+PTgsemVbQXQrK109cG4scG4+Pj04LHplW0F0KytdPXBuLEF0fWZ1bmN0aW9uIFBlKHplLFllLEF0LGp0LEp0KXt2dChZZSxq''@;'; put 'put ''dCxKdCx6ZSxBdCw3KTtsZXQgbW49TnVtYmVyKFllJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7emVbQXQrN109bW4sbW4+Pj04LHplW0F0KzZdPW1uLG1uPj49OCx6ZVtBdCs1XT1tbixtbj4+PTgsemVbQXQrNF09bW47bGV0IHBuPU51bWJlcihZZT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5''@;'; put 'put ''NSkpO3JldHVybiB6ZVtBdCszXT1wbixwbj4+PTgsemVbQXQrMl09cG4scG4+Pj04LHplW0F0KzFdPXBuLHBuPj49OCx6ZVtBdF09cG4sQXQrOH1mdW5jdGlvbiBRZSh6ZSxZZSxBdCxqdCxKdCxtbil7aWYoQXQranQ+emUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQg''@;'; put 'put ''b2YgcmFuZ2UiKTtpZihBdDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiAkZSh6ZSxZZSxBdCxqdCxKdCl7cmV0dXJuIFllPStZZSxBdD4+Pj0wLEp0fHxRZSh6ZSwwLEF0LDQpLFkud3JpdGUoemUsWWUsQXQsanQsMjMsNCksQXQrNH1mdW5j''@;'; put 'put ''dGlvbiBndCh6ZSxZZSxBdCxqdCxKdCl7cmV0dXJuIFllPStZZSxBdD4+Pj0wLEp0fHxRZSh6ZSwwLEF0LDgpLFkud3JpdGUoemUsWWUsQXQsanQsNTIsOCksQXQrOH1xLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih6ZSxZZSl7Y29uc3QgQXQ9dGhpcy5sZW5ndGg7KHplPX5+emUpPDA/KHpl''@;'; put 'put ''Kz1BdCk8MCYmKHplPTApOnplPkF0JiYoemU9QXQpLChZZT12b2lkIDA9PT1ZZT9BdDp+flllKTwwPyhZZSs9QXQpPDAmJihZZT0wKTpZZT5BdCYmKFllPUF0KSxZZTx6ZSYmKFllPXplKTtjb25zdCBqdD10aGlzLnN1YmFycmF5KHplLFllKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''KGp0LHEucHJvdG90eXBlKSxqdH0scS5wcm90b3R5cGUucmVhZFVpbnRMRT1xLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKHplLFllLEF0KXt6ZT4+Pj0wLFllPj4+PTAsQXR8fHllKHplLFllLHRoaXMubGVuZ3RoKTtsZXQganQ9dGhpc1t6ZV0sSnQ9MSxtbj0wO2Zvcig7KyttbjxZ''@;'; put 'put ''ZSYmKEp0Kj0yNTYpOylqdCs9dGhpc1t6ZSttbl0qSnQ7cmV0dXJuIGp0fSxxLnByb3RvdHlwZS5yZWFkVWludEJFPXEucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oemUsWWUsQXQpe3plPj4+PTAsWWU+Pj49MCxBdHx8eWUoemUsWWUsdGhpcy5sZW5ndGgpO2xldCBqdD10aGlzW3pl''@;'; put 'put ''Ky0tWWVdLEp0PTE7Zm9yKDtZZT4wJiYoSnQqPTI1Nik7KWp0Kz10aGlzW3plKy0tWWVdKkp0O3JldHVybiBqdH0scS5wcm90b3R5cGUucmVhZFVpbnQ4PXEucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbih6ZSxZZSl7cmV0dXJuIHplPj4+PTAsWWV8fHllKHplLDEsdGhpcy5sZW5ndGgp''@;'; put 'put ''LHRoaXNbemVdfSxxLnByb3RvdHlwZS5yZWFkVWludDE2TEU9cS5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKHplLFllKXtyZXR1cm4gemU+Pj49MCxZZXx8eWUoemUsMix0aGlzLmxlbmd0aCksdGhpc1t6ZV18dGhpc1t6ZSsxXTw8OH0scS5wcm90b3R5cGUucmVhZFVpbnQxNkJF''@;'; put 'put ''PXEucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbih6ZSxZZSl7cmV0dXJuIHplPj4+PTAsWWV8fHllKHplLDIsdGhpcy5sZW5ndGgpLHRoaXNbemVdPDw4fHRoaXNbemUrMV19LHEucHJvdG90eXBlLnJlYWRVaW50MzJMRT1xLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24o''@;'; put 'put ''emUsWWUpe3JldHVybiB6ZT4+Pj0wLFllfHx5ZSh6ZSw0LHRoaXMubGVuZ3RoKSwodGhpc1t6ZV18dGhpc1t6ZSsxXTw8OHx0aGlzW3plKzJdPDwxNikrMTY3NzcyMTYqdGhpc1t6ZSszXX0scS5wcm90b3R5cGUucmVhZFVpbnQzMkJFPXEucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlv''@;'; put 'put ''bih6ZSxZZSl7cmV0dXJuIHplPj4+PTAsWWV8fHllKHplLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbemVdKyh0aGlzW3plKzFdPDwxNnx0aGlzW3plKzJdPDw4fHRoaXNbemUrM10pfSxxLnByb3RvdHlwZS5yZWFkQmlnVUludDY0TEU9Y3QoZnVuY3Rpb24oemUpe2Z0KHplPj4+PTAs''@;'; put 'put ''Im9mZnNldCIpO2NvbnN0IFllPXRoaXNbemVdLEF0PXRoaXNbemUrN107dm9pZCAwIT09WWUmJnZvaWQgMCE9PUF0fHxGdCh6ZSx0aGlzLmxlbmd0aC04KTtjb25zdCBqdD1ZZSsyNTYqdGhpc1srK3plXSs2NTUzNip0aGlzWysremVdK3RoaXNbKyt6ZV0qSE0oMiwyNCksSnQ9dGhpc1srK3pl''@;'; put 'put ''XSsyNTYqdGhpc1srK3plXSs2NTUzNip0aGlzWysremVdK0F0KkhNKDIsMjQpO3JldHVybiBCaWdJbnQoanQpKyhCaWdJbnQoSnQpPDxCaWdJbnQoMzIpKX0pLHEucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRT1jdChmdW5jdGlvbih6ZSl7ZnQoemU+Pj49MCwib2Zmc2V0Iik7Y29uc3QgWWU9''@;'; put 'put ''dGhpc1t6ZV0sQXQ9dGhpc1t6ZSs3XTt2b2lkIDAhPT1ZZSYmdm9pZCAwIT09QXR8fEZ0KHplLHRoaXMubGVuZ3RoLTgpO2NvbnN0IGp0PVllKkhNKDIsMjQpKzY1NTM2KnRoaXNbKyt6ZV0rMjU2KnRoaXNbKyt6ZV0rdGhpc1srK3plXSxKdD10aGlzWysremVdKkhNKDIsMjQpKzY1NTM2KnRo''@;'; put 'put ''aXNbKyt6ZV0rMjU2KnRoaXNbKyt6ZV0rQXQ7cmV0dXJuKEJpZ0ludChqdCk8PEJpZ0ludCgzMikpK0JpZ0ludChKdCl9KSxxLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oemUsWWUsQXQpe3plPj4+PTAsWWU+Pj49MCxBdHx8eWUoemUsWWUsdGhpcy5sZW5ndGgpO2xldCBqdD10aGlz''@;'; put 'put ''W3plXSxKdD0xLG1uPTA7Zm9yKDsrK21uPFllJiYoSnQqPTI1Nik7KWp0Kz10aGlzW3plK21uXSpKdDtyZXR1cm4gSnQqPTEyOCxqdD49SnQmJihqdC09TWF0aC5wb3coMiw4KlllKSksanR9LHEucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbih6ZSxZZSxBdCl7emU+Pj49MCxZZT4+Pj0w''@;'; put 'put ''LEF0fHx5ZSh6ZSxZZSx0aGlzLmxlbmd0aCk7bGV0IGp0PVllLEp0PTEsbW49dGhpc1t6ZSstLWp0XTtmb3IoO2p0PjAmJihKdCo9MjU2KTspbW4rPXRoaXNbemUrLS1qdF0qSnQ7cmV0dXJuIEp0Kj0xMjgsbW4+PUp0JiYobW4tPU1hdGgucG93KDIsOCpZZSkpLG1ufSxxLnByb3RvdHlwZS5y''@;'; put 'put ''ZWFkSW50OD1mdW5jdGlvbih6ZSxZZSl7cmV0dXJuIHplPj4+PTAsWWV8fHllKHplLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW3plXT8tMSooMjU1LXRoaXNbemVdKzEpOnRoaXNbemVdfSxxLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbih6ZSxZZSl7emU+Pj49MCxZZXx8eWUoemUs''@;'; put 'put ''Mix0aGlzLmxlbmd0aCk7Y29uc3QgQXQ9dGhpc1t6ZV18dGhpc1t6ZSsxXTw8ODtyZXR1cm4gMzI3NjgmQXQ/NDI5NDkwMTc2MHxBdDpBdH0scS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oemUsWWUpe3plPj4+PTAsWWV8fHllKHplLDIsdGhpcy5sZW5ndGgpO2NvbnN0IEF0PXRo''@;'; put 'put ''aXNbemUrMV18dGhpc1t6ZV08PDg7cmV0dXJuIDMyNzY4JkF0PzQyOTQ5MDE3NjB8QXQ6QXR9LHEucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKHplLFllKXtyZXR1cm4gemU+Pj49MCxZZXx8eWUoemUsNCx0aGlzLmxlbmd0aCksdGhpc1t6ZV18dGhpc1t6ZSsxXTw8OHx0aGlzW3pl''@;'; put 'put ''KzJdPDwxNnx0aGlzW3plKzNdPDwyNH0scS5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oemUsWWUpe3JldHVybiB6ZT4+Pj0wLFllfHx5ZSh6ZSw0LHRoaXMubGVuZ3RoKSx0aGlzW3plXTw8MjR8dGhpc1t6ZSsxXTw8MTZ8dGhpc1t6ZSsyXTw8OHx0aGlzW3plKzNdfSxxLnByb3Rv''@;'; put 'put ''dHlwZS5yZWFkQmlnSW50NjRMRT1jdChmdW5jdGlvbih6ZSl7ZnQoemU+Pj49MCwib2Zmc2V0Iik7Y29uc3QgWWU9dGhpc1t6ZV0sQXQ9dGhpc1t6ZSs3XTtyZXR1cm4gdm9pZCAwIT09WWUmJnZvaWQgMCE9PUF0fHxGdCh6ZSx0aGlzLmxlbmd0aC04KSwoQmlnSW50KHRoaXNbemUrNF0rMjU2''@;'; put 'put ''KnRoaXNbemUrNV0rNjU1MzYqdGhpc1t6ZSs2XSsoQXQ8PDI0KSk8PEJpZ0ludCgzMikpK0JpZ0ludChZZSsyNTYqdGhpc1srK3plXSs2NTUzNip0aGlzWysremVdKzE2Nzc3MjE2KnRoaXNbKyt6ZV0pfSkscS5wcm90b3R5cGUucmVhZEJpZ0ludDY0QkU9Y3QoZnVuY3Rpb24oemUpe2Z0KHpl''@;'; put 'put ''Pj4+PTAsIm9mZnNldCIpO2NvbnN0IFllPXRoaXNbemVdLEF0PXRoaXNbemUrN107dm9pZCAwIT09WWUmJnZvaWQgMCE9PUF0fHxGdCh6ZSx0aGlzLmxlbmd0aC04KTtjb25zdCBqdD0oWWU8PDI0KSs2NTUzNip0aGlzWysremVdKzI1Nip0aGlzWysremVdK3RoaXNbKyt6ZV07cmV0dXJuKEJp''@;'; put 'put ''Z0ludChqdCk8PEJpZ0ludCgzMikpK0JpZ0ludCgxNjc3NzIxNip0aGlzWysremVdKzY1NTM2KnRoaXNbKyt6ZV0rMjU2KnRoaXNbKyt6ZV0rQXQpfSkscS5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oemUsWWUpe3JldHVybiB6ZT4+Pj0wLFllfHx5ZSh6ZSw0LHRoaXMubGVuZ3Ro''@;'; put 'put ''KSxZLnJlYWQodGhpcyx6ZSwhMCwyMyw0KX0scS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oemUsWWUpe3JldHVybiB6ZT4+Pj0wLFllfHx5ZSh6ZSw0LHRoaXMubGVuZ3RoKSxZLnJlYWQodGhpcyx6ZSwhMSwyMyw0KX0scS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9u''@;'; put 'put ''KHplLFllKXtyZXR1cm4gemU+Pj49MCxZZXx8eWUoemUsOCx0aGlzLmxlbmd0aCksWS5yZWFkKHRoaXMsemUsITAsNTIsOCl9LHEucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbih6ZSxZZSl7cmV0dXJuIHplPj4+PTAsWWV8fHllKHplLDgsdGhpcy5sZW5ndGgpLFkucmVhZCh0aGlz''@;'; put 'put ''LHplLCExLDUyLDgpfSxxLnByb3RvdHlwZS53cml0ZVVpbnRMRT1xLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbih6ZSxZZSxBdCxqdCl7emU9K3plLFllPj4+PTAsQXQ+Pj49MCwhanQmJkNlKHRoaXMsemUsWWUsQXQsTWF0aC5wb3coMiw4KkF0KS0xLDApO2xldCBKdD0xLG1uPTA7''@;'; put 'put ''Zm9yKHRoaXNbWWVdPTI1NSZ6ZTsrK21uPEF0JiYoSnQqPTI1Nik7KXRoaXNbWWUrbW5dPXplL0p0JjI1NTtyZXR1cm4gWWUrQXR9LHEucHJvdG90eXBlLndyaXRlVWludEJFPXEucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHplLFllLEF0LGp0KXt6ZT0remUsWWU+Pj49MCxBdD4+''@;'; put 'put ''Pj0wLCFqdCYmQ2UodGhpcyx6ZSxZZSxBdCxNYXRoLnBvdygyLDgqQXQpLTEsMCk7bGV0IEp0PUF0LTEsbW49MTtmb3IodGhpc1tZZStKdF09MjU1JnplOy0tSnQ+PTAmJihtbio9MjU2KTspdGhpc1tZZStKdF09emUvbW4mMjU1O3JldHVybiBZZStBdH0scS5wcm90b3R5cGUud3JpdGVVaW50''@;'; put 'put ''OD1xLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKHplLFllLEF0KXtyZXR1cm4gemU9K3plLFllPj4+PTAsQXR8fENlKHRoaXMsemUsWWUsMSwyNTUsMCksdGhpc1tZZV09MjU1JnplLFllKzF9LHEucHJvdG90eXBlLndyaXRlVWludDE2TEU9cS5wcm90b3R5cGUud3JpdGVVSW50MTZM''@;'; put 'put ''RT1mdW5jdGlvbih6ZSxZZSxBdCl7cmV0dXJuIHplPSt6ZSxZZT4+Pj0wLEF0fHxDZSh0aGlzLHplLFllLDIsNjU1MzUsMCksdGhpc1tZZV09MjU1JnplLHRoaXNbWWUrMV09emU+Pj44LFllKzJ9LHEucHJvdG90eXBlLndyaXRlVWludDE2QkU9cS5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1m''@;'; put 'put ''dW5jdGlvbih6ZSxZZSxBdCl7cmV0dXJuIHplPSt6ZSxZZT4+Pj0wLEF0fHxDZSh0aGlzLHplLFllLDIsNjU1MzUsMCksdGhpc1tZZV09emU+Pj44LHRoaXNbWWUrMV09MjU1JnplLFllKzJ9LHEucHJvdG90eXBlLndyaXRlVWludDMyTEU9cS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5j''@;'; put 'put ''dGlvbih6ZSxZZSxBdCl7cmV0dXJuIHplPSt6ZSxZZT4+Pj0wLEF0fHxDZSh0aGlzLHplLFllLDQsNDI5NDk2NzI5NSwwKSx0aGlzW1llKzNdPXplPj4+MjQsdGhpc1tZZSsyXT16ZT4+PjE2LHRoaXNbWWUrMV09emU+Pj44LHRoaXNbWWVdPTI1NSZ6ZSxZZSs0fSxxLnByb3RvdHlwZS53cml0''@;'; put 'put ''ZVVpbnQzMkJFPXEucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oemUsWWUsQXQpe3JldHVybiB6ZT0remUsWWU+Pj49MCxBdHx8Q2UodGhpcyx6ZSxZZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tZZV09emU+Pj4yNCx0aGlzW1llKzFdPXplPj4+MTYsdGhpc1tZZSsyXT16ZT4+Pjgs''@;'; put 'put ''dGhpc1tZZSszXT0yNTUmemUsWWUrNH0scS5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRMRT1jdChmdW5jdGlvbih6ZSxZZT0wKXtyZXR1cm4gRGUodGhpcyx6ZSxZZSxCaWdJbnQoMCksQmlnSW50KCIweGZmZmZmZmZmZmZmZmZmZmYiKSl9KSxxLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NEJF''@;'; put 'put ''PWN0KGZ1bmN0aW9uKHplLFllPTApe3JldHVybiBQZSh0aGlzLHplLFllLEJpZ0ludCgwKSxCaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZiIpKX0pLHEucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oemUsWWUsQXQsanQpe2lmKHplPSt6ZSxZZT4+Pj0wLCFqdCl7Y29uc3QgYm49TWF0''@;'; put 'put ''aC5wb3coMiw4KkF0LTEpO0NlKHRoaXMsemUsWWUsQXQsYm4tMSwtYm4pfWxldCBKdD0wLG1uPTEscG49MDtmb3IodGhpc1tZZV09MjU1JnplOysrSnQ8QXQmJihtbio9MjU2KTspemU8MCYmMD09PXBuJiYwIT09dGhpc1tZZStKdC0xXSYmKHBuPTEpLHRoaXNbWWUrSnRdPSh6ZS9tbj4+MCkt''@;'; put 'put ''cG4mMjU1O3JldHVybiBZZStBdH0scS5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbih6ZSxZZSxBdCxqdCl7aWYoemU9K3plLFllPj4+PTAsIWp0KXtjb25zdCBibj1NYXRoLnBvdygyLDgqQXQtMSk7Q2UodGhpcyx6ZSxZZSxBdCxibi0xLC1ibil9bGV0IEp0PUF0LTEsbW49MSxwbj0w''@;'; put 'put ''O2Zvcih0aGlzW1llK0p0XT0yNTUmemU7LS1KdD49MCYmKG1uKj0yNTYpOyl6ZTwwJiYwPT09cG4mJjAhPT10aGlzW1llK0p0KzFdJiYocG49MSksdGhpc1tZZStKdF09KHplL21uPj4wKS1wbiYyNTU7cmV0dXJuIFllK0F0fSxxLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oemUsWWUs''@;'; put 'put ''QXQpe3JldHVybiB6ZT0remUsWWU+Pj49MCxBdHx8Q2UodGhpcyx6ZSxZZSwxLDEyNywtMTI4KSx6ZTwwJiYoemU9MjU1K3plKzEpLHRoaXNbWWVdPTI1NSZ6ZSxZZSsxfSxxLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oemUsWWUsQXQpe3JldHVybiB6ZT0remUsWWU+Pj49MCxB''@;'; put 'put ''dHx8Q2UodGhpcyx6ZSxZZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tZZV09MjU1JnplLHRoaXNbWWUrMV09emU+Pj44LFllKzJ9LHEucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbih6ZSxZZSxBdCl7cmV0dXJuIHplPSt6ZSxZZT4+Pj0wLEF0fHxDZSh0aGlzLHplLFllLDIsMzI3Njcs''@;'; put 'put ''LTMyNzY4KSx0aGlzW1llXT16ZT4+PjgsdGhpc1tZZSsxXT0yNTUmemUsWWUrMn0scS5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHplLFllLEF0KXtyZXR1cm4gemU9K3plLFllPj4+PTAsQXR8fENlKHRoaXMsemUsWWUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW1ll''@;'; put 'put ''XT0yNTUmemUsdGhpc1tZZSsxXT16ZT4+PjgsdGhpc1tZZSsyXT16ZT4+PjE2LHRoaXNbWWUrM109emU+Pj4yNCxZZSs0fSxxLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oemUsWWUsQXQpe3JldHVybiB6ZT0remUsWWU+Pj49MCxBdHx8Q2UodGhpcyx6ZSxZZSw0LDIxNDc0ODM2''@;'; put 'put ''NDcsLTIxNDc0ODM2NDgpLHplPDAmJih6ZT00Mjk0OTY3Mjk1K3plKzEpLHRoaXNbWWVdPXplPj4+MjQsdGhpc1tZZSsxXT16ZT4+PjE2LHRoaXNbWWUrMl09emU+Pj44LHRoaXNbWWUrM109MjU1JnplLFllKzR9LHEucHJvdG90eXBlLndyaXRlQmlnSW50NjRMRT1jdChmdW5jdGlvbih6ZSxZ''@;'; put 'put ''ZT0wKXtyZXR1cm4gRGUodGhpcyx6ZSxZZSwtQmlnSW50KCIweDgwMDAwMDAwMDAwMDAwMDAiKSxCaWdJbnQoIjB4N2ZmZmZmZmZmZmZmZmZmZiIpKX0pLHEucHJvdG90eXBlLndyaXRlQmlnSW50NjRCRT1jdChmdW5jdGlvbih6ZSxZZT0wKXtyZXR1cm4gUGUodGhpcyx6ZSxZZSwtQmlnSW50''@;'; put 'put ''KCIweDgwMDAwMDAwMDAwMDAwMDAiKSxCaWdJbnQoIjB4N2ZmZmZmZmZmZmZmZmZmZiIpKX0pLHEucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbih6ZSxZZSxBdCl7cmV0dXJuICRlKHRoaXMsemUsWWUsITAsQXQpfSxxLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oemUs''@;'; put 'put ''WWUsQXQpe3JldHVybiAkZSh0aGlzLHplLFllLCExLEF0KX0scS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbih6ZSxZZSxBdCl7cmV0dXJuIGd0KHRoaXMsemUsWWUsITAsQXQpfSxxLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKHplLFllLEF0KXtyZXR1cm4gZ3Qo''@;'; put 'put ''dGhpcyx6ZSxZZSwhMSxBdCl9LHEucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oemUsWWUsQXQsanQpe2lmKCFxLmlzQnVmZmVyKHplKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXIiKTtpZihBdHx8KEF0PTApLGp0fHwwPT09anR8fChqdD10aGlzLmxl''@;'; put 'put ''bmd0aCksWWU+PXplLmxlbmd0aCYmKFllPXplLmxlbmd0aCksWWV8fChZZT0wKSxqdD4wJiZqdDxBdCYmKGp0PUF0KSxqdD09PUF0fHwwPT09emUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoWWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9m''@;'; put 'put ''IGJvdW5kcyIpO2lmKEF0PDB8fEF0Pj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoanQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtqdD50aGlzLmxlbmd0aCYmKGp0PXRoaXMubGVuZ3Ro''@;'; put 'put ''KSx6ZS5sZW5ndGgtWWU8anQtQXQmJihqdD16ZS5sZW5ndGgtWWUrQXQpO2NvbnN0IEp0PWp0LUF0O3JldHVybiB0aGlzPT09emUmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbihZZSxBdCxqdCk6VWludDhBcnJheS5w''@;'; put 'put ''cm90b3R5cGUuc2V0LmNhbGwoemUsdGhpcy5zdWJhcnJheShBdCxqdCksWWUpLEp0fSxxLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKHplLFllLEF0LGp0KXtpZigic3RyaW5nIj09dHlwZW9mIHplKXtpZigic3RyaW5nIj09dHlwZW9mIFllPyhqdD1ZZSxZZT0wLEF0PXRoaXMubGVuZ3RoKToi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIEF0JiYoanQ9QXQsQXQ9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PWp0JiYic3RyaW5nIiE9dHlwZW9mIGp0KXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIGp0JiYhcS5pc0VuY29kaW5nKGp0''@;'; put 'put ''KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2p0KTtpZigxPT09emUubGVuZ3RoKXtjb25zdCBtbj16ZS5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1qdCYmbW48MTI4fHwibGF0aW4xIj09PWp0KSYmKHplPW1uKX19ZWxzZSJudW1iZXIiPT10eXBlb2YgemU/emUm''@;'; put 'put ''PTI1NToiYm9vbGVhbiI9PXR5cGVvZiB6ZSYmKHplPU51bWJlcih6ZSkpO2lmKFllPDB8fHRoaXMubGVuZ3RoPFllfHx0aGlzLmxlbmd0aDxBdCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYoQXQ8PVllKXJldHVybiB0aGlzO2xldCBKdDtpZihZZT4+Pj0w''@;'; put 'put ''LEF0PXZvaWQgMD09PUF0P3RoaXMubGVuZ3RoOkF0Pj4+MCx6ZXx8KHplPTApLCJudW1iZXIiPT10eXBlb2YgemUpZm9yKEp0PVllO0p0PEF0OysrSnQpdGhpc1tKdF09emU7ZWxzZXtjb25zdCBtbj1xLmlzQnVmZmVyKHplKT96ZTpxLmZyb20oemUsanQpLHBuPW1uLmxlbmd0aDtpZigwPT09''@;'; put 'put ''cG4pdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlICInK3plKyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3IoSnQ9MDtKdDxBdC1ZZTsrK0p0KXRoaXNbSnQrWWVdPW1uW0p0JXBuXX1yZXR1cm4gdGhpc307Y29uc3QgeXQ9e307ZnVuY3Rpb24gcHQoemUsWWUs''@;'; put 'put ''QXQpe3l0W3plXT1jbGFzcyBleHRlbmRzIEF0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWVzc2FnZSIse3ZhbHVlOlllLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0aGlzLm5hbWU9YCR7dGhp''@;'; put 'put ''cy5uYW1lfSBbJHt6ZX1dYCxkZWxldGUgdGhpcy5uYW1lfWdldCBjb2RlKCl7cmV0dXJuIHplfXNldCBjb2RlKGp0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29kZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmp0LHdyaXRhYmxlOiEwfSl9dG9TdHJpbmco''@;'; put 'put ''KXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske3plfV06ICR7dGhpcy5tZXNzYWdlfWB9fX1mdW5jdGlvbiBtdCh6ZSl7bGV0IFllPSIiLEF0PXplLmxlbmd0aDtjb25zdCBqdD0iLSI9PT16ZVswXT8xOjA7Zm9yKDtBdD49anQrNDtBdC09MylZZT1gXyR7emUuc2xpY2UoQXQtMyxBdCl9JHtZZX1g''@;'; put 'put ''O3JldHVybmAke3plLnNsaWNlKDAsQXQpfSR7WWV9YH1mdW5jdGlvbiB2dCh6ZSxZZSxBdCxqdCxKdCxtbil7aWYoemU+QXR8fHplPFllKXtjb25zdCBwbj0iYmlnaW50Ij09dHlwZW9mIFllPyJuIjoiIjtsZXQgYm47dGhyb3cgYm49bW4+Mz8wPT09WWV8fFllPT09QmlnSW50KDApP2A+PSAw''@;'; put 'put ''JHtwbn0gYW5kIDwgMiR7cG59ICoqICR7OCoobW4rMSl9JHtwbn1gOmA+PSAtKDIke3BufSAqKiAkezgqKG1uKzEpLTF9JHtwbn0pIGFuZCA8IDIgKiogJHs4KihtbisxKS0xfSR7cG59YDpgPj0gJHtZZX0ke3BufSBhbmQgPD0gJHtBdH0ke3BufWAsbmV3IHl0LkVSUl9PVVRfT0ZfUkFOR0Uo''@;'; put 'put ''InZhbHVlIixibix6ZSl9dmFyIHBuLGJuLGxuO3BuPWp0LGxuPW1uLGZ0KGJuPUp0LCJvZmZzZXQiKSx2b2lkIDAhPT1wbltibl0mJnZvaWQgMCE9PXBuW2JuK2xuXXx8RnQoYm4scG4ubGVuZ3RoLShsbisxKSl9ZnVuY3Rpb24gZnQoemUsWWUpe2lmKCJudW1iZXIiIT10eXBlb2YgemUpdGhy''@;'; put 'put ''b3cgbmV3IHl0LkVSUl9JTlZBTElEX0FSR19UWVBFKFllLCJudW1iZXIiLHplKX1mdW5jdGlvbiBGdCh6ZSxZZSxBdCl7dGhyb3cgTWF0aC5mbG9vcih6ZSkhPT16ZT8oZnQoemUsQXQpLG5ldyB5dC5FUlJfT1VUX09GX1JBTkdFKEF0fHwib2Zmc2V0IiwiYW4gaW50ZWdlciIsemUpKTpZZTww''@;'; put 'put ''P25ldyB5dC5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFM6bmV3IHl0LkVSUl9PVVRfT0ZfUkFOR0UoQXR8fCJvZmZzZXQiLGA+PSAke0F0PzE6MH0gYW5kIDw9ICR7WWV9YCx6ZSl9cHQoIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUyIsZnVuY3Rpb24oemUpe3JldHVybiB6ZT9gJHt6ZX0gaXMg''@;'; put 'put ''b3V0c2lkZSBvZiBidWZmZXIgYm91bmRzYDoiQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kcyJ9LFJhbmdlRXJyb3IpLHB0KCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oemUsWWUpe3JldHVybmBUaGUgIiR7emV9IiBhcmd1bWVudCBtdXN0IGJl''@;'; put 'put ''IG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIFllfWB9LFR5cGVFcnJvcikscHQoIkVSUl9PVVRfT0ZfUkFOR0UiLGZ1bmN0aW9uKHplLFllLEF0KXtsZXQganQ9YFRoZSB2YWx1ZSBvZiAiJHt6ZX0iIGlzIG91dCBvZiByYW5nZS5gLEp0PUF0O3JldHVybiBOdW1iZXIu''@;'; put 'put ''aXNJbnRlZ2VyKEF0KSYmTWF0aC5hYnMoQXQpPjQyOTQ5NjcyOTY/SnQ9bXQoU3RyaW5nKEF0KSk6ImJpZ2ludCI9PXR5cGVvZiBBdCYmKEp0PVN0cmluZyhBdCksKEF0PkhNKEJpZ0ludCgyKSxCaWdJbnQoMzIpKXx8QXQ8LUhNKEJpZ0ludCgyKSxCaWdJbnQoMzIpKSkmJihKdD1tdChKdCkp''@;'; put 'put ''LEp0Kz0ibiIpLGp0Kz1gIEl0IG11c3QgYmUgJHtZZX0uIFJlY2VpdmVkICR7SnR9YCxqdH0sUmFuZ2VFcnJvcik7Y29uc3Qgb249L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiBfdCh6ZSxZZSl7bGV0IEF0O1llPVllfHwxLzA7Y29uc3QganQ9emUubGVuZ3RoO2xldCBKdD1udWxsO2Nv''@;'; put 'put ''bnN0IG1uPVtdO2ZvcihsZXQgcG49MDtwbjxqdDsrK3BuKXtpZihBdD16ZS5jaGFyQ29kZUF0KHBuKSxBdD41NTI5NSYmQXQ8NTczNDQpe2lmKCFKdCl7aWYoQXQ+NTYzMTkpeyhZZS09Myk+LTEmJm1uLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKHBuKzE9PT1qdCl7KFllLT0zKT4t''@;'; put 'put ''MSYmbW4ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9SnQ9QXQ7Y29udGludWV9aWYoQXQ8NTYzMjApeyhZZS09Myk+LTEmJm1uLnB1c2goMjM5LDE5MSwxODkpLEp0PUF0O2NvbnRpbnVlfUF0PTY1NTM2KyhKdC01NTI5Njw8MTB8QXQtNTYzMjApfWVsc2UgSnQmJihZZS09Myk+LTEmJm1u''@;'; put 'put ''LnB1c2goMjM5LDE5MSwxODkpO2lmKEp0PW51bGwsQXQ8MTI4KXtpZigoWWUtPTEpPDApYnJlYWs7bW4ucHVzaChBdCl9ZWxzZSBpZihBdDwyMDQ4KXtpZigoWWUtPTIpPDApYnJlYWs7bW4ucHVzaChBdD4+NnwxOTIsNjMmQXR8MTI4KX1lbHNlIGlmKEF0PDY1NTM2KXtpZigoWWUtPTMpPDAp''@;'; put 'put ''YnJlYWs7bW4ucHVzaChBdD4+MTJ8MjI0LEF0Pj42JjYzfDEyOCw2MyZBdHwxMjgpfWVsc2V7aWYoIShBdDwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKChZZS09NCk8MClicmVhazttbi5wdXNoKEF0Pj4xOHwyNDAsQXQ+PjEyJjYzfDEyOCxBdD4+''@;'; put 'put ''NiY2M3wxMjgsNjMmQXR8MTI4KX19cmV0dXJuIG1ufWZ1bmN0aW9uIG50KHplKXtyZXR1cm4gbGUudG9CeXRlQXJyYXkoZnVuY3Rpb24oWWUpe2lmKChZZT0oWWU9WWUuc3BsaXQoIj0iKVswXSkudHJpbSgpLnJlcGxhY2Uob24sIiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO1llLmxlbmd0''@;'; put 'put ''aCU0IT0wOylZZSs9Ij0iO3JldHVybiBZZX0oemUpKX1mdW5jdGlvbiBxZSh6ZSxZZSxBdCxqdCl7bGV0IEp0O2ZvcihKdD0wO0p0PGp0JiYhKEp0K0F0Pj1ZZS5sZW5ndGh8fEp0Pj16ZS5sZW5ndGgpOysrSnQpWWVbSnQrQXRdPXplW0p0XTtyZXR1cm4gSnR9ZnVuY3Rpb24gb3QoemUsWWUp''@;'; put 'put ''e3JldHVybiB6ZSBpbnN0YW5jZW9mIFllfHxudWxsIT16ZSYmbnVsbCE9emUuY29uc3RydWN0b3ImJm51bGwhPXplLmNvbnN0cnVjdG9yLm5hbWUmJnplLmNvbnN0cnVjdG9yLm5hbWU9PT1ZZS5uYW1lfWZ1bmN0aW9uIFJ0KHplKXtyZXR1cm4gemUhPXplfWNvbnN0IEN0PWZ1bmN0aW9uKCl7''@;'; put 'put ''Y29uc3QgemU9IjAxMjM0NTY3ODlhYmNkZWYiLFllPW5ldyBBcnJheSgyNTYpO2ZvcihsZXQgQXQ9MDtBdDwxNjsrK0F0KXtjb25zdCBqdD0xNipBdDtmb3IobGV0IEp0PTA7SnQ8MTY7KytKdClZZVtqdCtKdF09emVbQXRdK3plW0p0XX1yZXR1cm4gWWV9KCk7ZnVuY3Rpb24gY3QoemUpe3Jl''@;'; put 'put ''dHVybiJ1bmRlZmluZWQiPT10eXBlb2YgQmlnSW50P050OnplfWZ1bmN0aW9uIE50KCl7dGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgbm90IHN1cHBvcnRlZCIpfX0sMTkyNDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDIxMCksbGU9Wig1NTU5KSxZPWxlKGllKCJTdHJpbmcucHJv''@;'; put 'put ''dG90eXBlLmluZGV4T2YiKSk7VS5leHBvcnRzPWZ1bmN0aW9uKFcsTil7dmFyIGVlPWllKFcsISFOKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZWUmJlkoVywiLnByb3RvdHlwZS4iKT4tMT9sZShlZSk6ZWV9fSw1NTU5OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooODYxMiks''@;'; put 'put ''bGU9WigyMTApLFk9bGUoIiVGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHklIiksVz1sZSgiJUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsJSIpLE49bGUoIiVSZWZsZWN0LmFwcGx5JSIsITApfHxpZS5jYWxsKFcsWSksZWU9bGUoIiVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJSIsITAp''@;'; put 'put ''LHE9bGUoIiVPYmplY3QuZGVmaW5lUHJvcGVydHklIiwhMCksSj1sZSgiJU1hdGgubWF4JSIpO2lmKHEpdHJ5e3Eoe30sImEiLHt2YWx1ZToxfSl9Y2F0Y2goYWUpe3E9bnVsbH1VLmV4cG9ydHM9ZnVuY3Rpb24oYWUpe3ZhciBmZT1OKGllLFcsYXJndW1lbnRzKTtyZXR1cm4gZWUmJnEmJmVl''@;'; put 'put ''KGZlLCJsZW5ndGgiKS5jb25maWd1cmFibGUmJnEoZmUsImxlbmd0aCIse3ZhbHVlOjErSigwLGFlLmxlbmd0aC0oYXJndW1lbnRzLmxlbmd0aC0xKSl9KSxmZX07dmFyIHNlPWZ1bmN0aW9uKCl7cmV0dXJuIE4oaWUsWSxhcmd1bWVudHMpfTtxP3EoVS5leHBvcnRzLCJhcHBseSIse3ZhbHVl''@;'; put 'put ''OnNlfSk6VS5leHBvcnRzLmFwcGx5PXNlfSwxMDI3OihVLFEsWik9Pnt2YXIgaWU9Wig5NTA5KS5CdWZmZXIsbGU9WigyODMwKS5UcmFuc2Zvcm0sWT1aKDI1NTMpLlN0cmluZ0RlY29kZXI7ZnVuY3Rpb24gVyhOKXtsZS5jYWxsKHRoaXMpLHRoaXMuaGFzaE1vZGU9InN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBOLHRoaXMuaGFzaE1vZGU/dGhpc1tOXT10aGlzLl9maW5hbE9yRGlnZXN0OnRoaXMuZmluYWw9dGhpcy5fZmluYWxPckRpZ2VzdCx0aGlzLl9maW5hbCYmKHRoaXMuX19maW5hbD10aGlzLl9maW5hbCx0aGlzLl9maW5hbD1udWxsKSx0aGlzLl9kZWNvZGVyPW51bGwsdGhpcy5fZW5jb2Rp''@;'; put 'put ''bmc9bnVsbH1aKDU3MTcpKFcsbGUpLFcucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihOLGVlLHEpeyJzdHJpbmciPT10eXBlb2YgTiYmKE49aWUuZnJvbShOLGVlKSk7dmFyIEo9dGhpcy5fdXBkYXRlKE4pO3JldHVybiB0aGlzLmhhc2hNb2RlP3RoaXM6KHEmJihKPXRoaXMuX3RvU3RyaW5n''@;'; put 'put ''KEoscSkpLEopfSxXLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbigpe30sVy5wcm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxXLnByb3RvdHlwZS5zZXRB''@;'; put 'put ''dXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LFcucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3Rh''@;'; put 'put ''dGUiKX0sVy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihOLGVlLHEpe3ZhciBKO3RyeXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZShOKTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKE4pKX1jYXRjaChzZSl7Sj1zZX1maW5hbGx5e3EoSil9fSxXLnByb3RvdHlwZS5fZmx1c2g9ZnVu''@;'; put 'put ''Y3Rpb24oTil7dmFyIGVlO3RyeXt0aGlzLnB1c2godGhpcy5fX2ZpbmFsKCkpfWNhdGNoKHEpe2VlPXF9TihlZSl9LFcucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKE4pe3ZhciBlZT10aGlzLl9fZmluYWwoKXx8aWUuYWxsb2MoMCk7cmV0dXJuIE4mJihlZT10aGlzLl90b1N0''@;'; put 'put ''cmluZyhlZSxOLCEwKSksZWV9LFcucHJvdG90eXBlLl90b1N0cmluZz1mdW5jdGlvbihOLGVlLHEpe2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBZKGVlKSx0aGlzLl9lbmNvZGluZz1lZSksdGhpcy5fZW5jb2RpbmchPT1lZSl0aHJvdyBuZXcgRXJyb3IoImNhbid0IHN3''@;'; put 'put ''aXRjaCBlbmNvZGluZ3MiKTt2YXIgSj10aGlzLl9kZWNvZGVyLndyaXRlKE4pO3JldHVybiBxJiYoSis9dGhpcy5fZGVjb2Rlci5lbmQoKSksSn0sVS5leHBvcnRzPVd9LDEwNDg6VT0+e1UuZXhwb3J0cz1mdW5jdGlvbihaLGllKXtmb3IodmFyIGxlPVtdLFk9MDtZPFoubGVuZ3RoO1krKyl7''@;'; put 'put ''dmFyIFc9aWUoWltZXSxZKTtRKFcpP2xlLnB1c2guYXBwbHkobGUsVyk6bGUucHVzaChXKX1yZXR1cm4gbGV9O3ZhciBRPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKFope3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoWil9fSw1MTA4OihV''@;'; put 'put ''LFEsWik9Pnt2YXIgaWU9Wig5NTM5KSxsZT1aKDkyODIpO2Z1bmN0aW9uIFkoKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX12YXIgVyxOPUFycmF5LnByb3RvdHlwZS5zbGljZSxlZT17fTtXPXZvaWQgMCE9PVouZyYmWi5nLmNvbnNvbGU/Wi5nLmNvbnNvbGU6InVuZGVmaW5lZCIhPXR5''@;'; put 'put ''cGVvZiB3aW5kb3cmJndpbmRvdy5jb25zb2xlP3dpbmRvdy5jb25zb2xlOnt9O2Zvcih2YXIgcT1bW2Z1bmN0aW9uKCl7fSwibG9nIl0sW2Z1bmN0aW9uKCl7Vy5sb2cuYXBwbHkoVyxhcmd1bWVudHMpfSwiaW5mbyJdLFtmdW5jdGlvbigpe1cubG9nLmFwcGx5KFcsYXJndW1lbnRzKX0sIndh''@;'; put 'put ''cm4iXSxbZnVuY3Rpb24oKXtXLndhcm4uYXBwbHkoVyxhcmd1bWVudHMpfSwiZXJyb3IiXSxbZnVuY3Rpb24oZGUpe2VlW2RlXT1ZKCl9LCJ0aW1lIl0sW2Z1bmN0aW9uKGRlKXt2YXIgdmU9ZWVbZGVdO2lmKCF2ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHN1Y2ggbGFiZWw6ICIrZGUpO2RlbGV0''@;'; put 'put ''ZSBlZVtkZV07dmFyIEFlPVkoKS12ZTtXLmxvZyhkZSsiOiAiK0FlKyJtcyIpfSwidGltZUVuZCJdLFtmdW5jdGlvbigpe3ZhciBkZT1uZXcgRXJyb3I7ZGUubmFtZT0iVHJhY2UiLGRlLm1lc3NhZ2U9aWUuZm9ybWF0LmFwcGx5KG51bGwsYXJndW1lbnRzKSxXLmVycm9yKGRlLnN0YWNrKX0s''@;'; put 'put ''InRyYWNlIl0sW2Z1bmN0aW9uKGRlKXtXLmxvZyhpZS5pbnNwZWN0KGRlKSsiXG4iKX0sImRpciJdLFtmdW5jdGlvbihkZSl7aWYoIWRlKXt2YXIgdmU9Ti5jYWxsKGFyZ3VtZW50cywxKTtsZS5vayghMSxpZS5mb3JtYXQuYXBwbHkobnVsbCx2ZSkpfX0sImFzc2VydCJdXSxKPTA7SjxxLmxl''@;'; put 'put ''bmd0aDtKKyspe3ZhciBzZT1xW0pdLGZlPXNlWzFdO1dbZmVdfHwoV1tmZV09c2VbMF0pfVUuZXhwb3J0cz1XfSw2MzkzOihVLFEsWik9Pnt2YXIgaWU9Wig4NzY0KS5CdWZmZXIsbGU9Wig2OTQ4KSxZPVooNjQyNik7VS5leHBvcnRzPWZ1bmN0aW9uKHEpe3JldHVybiBuZXcgTihxKX07dmFy''@;'; put 'put ''IFc9e3NlY3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVk''@;'; put 'put ''MjU1MTk6e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gTihxKXt0aGlzLmN1cnZlVHlwZT1XW3FdLHRoaXMuY3VydmVUeXBlfHwo''@;'; put 'put ''dGhpcy5jdXJ2ZVR5cGU9e25hbWU6cX0pLHRoaXMuY3VydmU9bmV3IGxlLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpLHRoaXMua2V5cz12b2lkIDB9ZnVuY3Rpb24gZWUocSxKLHNlKXtBcnJheS5pc0FycmF5KHEpfHwocT1xLnRvQXJyYXkoKSk7dmFyIGFlPW5ldyBpZShxKTtpZihzZSYmYWUu''@;'; put 'put ''bGVuZ3RoPHNlKXt2YXIgZmU9bmV3IGllKHNlLWFlLmxlbmd0aCk7ZmUuZmlsbCgwKSxhZT1pZS5jb25jYXQoW2ZlLGFlXSl9cmV0dXJuIEo/YWUudG9TdHJpbmcoSik6YWV9Vy5wMjI0PVcuc2VjcDIyNHIxLFcucDI1Nj1XLnNlY3AyNTZyMT1XLnByaW1lMjU2djEsVy5wMTkyPVcuc2VjcDE5''@;'; put 'put ''MnIxPVcucHJpbWUxOTJ2MSxXLnAzODQ9Vy5zZWNwMzg0cjEsVy5wNTIxPVcuc2VjcDUyMXIxLE4ucHJvdG90eXBlLmdlbmVyYXRlS2V5cz1mdW5jdGlvbihxLEope3JldHVybiB0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5nZXRQdWJsaWNLZXkocSxKKX0sTi5wcm90''@;'; put 'put ''b3R5cGUuY29tcHV0ZVNlY3JldD1mdW5jdGlvbihxLEosc2Upe3JldHVybiBKPUp8fCJ1dGY4IixpZS5pc0J1ZmZlcihxKXx8KHE9bmV3IGllKHEsSikpLGVlKHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhxKS5nZXRQdWJsaWMoKS5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgp''@;'; put 'put ''LHNlLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSxOLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24ocSxKKXt2YXIgc2U9dGhpcy5rZXlzLmdldFB1YmxpYygiY29tcHJlc3NlZCI9PT1KLCEwKTtyZXR1cm4iaHlicmlkIj09PUomJihzZVswXT1zZVtzZS5sZW5ndGgtMV0lMj83''@;'; put 'put ''OjYpLGVlKHNlLHEpfSxOLnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKHEpe3JldHVybiBlZSh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpLHEpfSxOLnByb3RvdHlwZS5zZXRQdWJsaWNLZXk9ZnVuY3Rpb24ocSxKKXtyZXR1cm4gSj1KfHwidXRmOCIsaWUuaXNCdWZmZXIocSl8fChx''@;'; put 'put ''PW5ldyBpZShxLEopKSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhxKSx0aGlzfSxOLnByb3RvdHlwZS5zZXRQcml2YXRlS2V5PWZ1bmN0aW9uKHEsSil7Sj1KfHwidXRmOCIsaWUuaXNCdWZmZXIocSl8fChxPW5ldyBpZShxLEopKTt2YXIgc2U9bmV3IFkocSk7cmV0dXJuIHNlPXNlLnRvU3Ry''@;'; put 'put ''aW5nKDE2KSx0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKHNlKSx0aGlzfX0sNjQyNjpmdW5jdGlvbihVLFEsWil7IWZ1bmN0aW9uKGllLGxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gWSh4LFApe2lmKCF4KXRocm93IG5ldyBFcnJv''@;'; put 'put ''cihQfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFcoeCxQKXt4LnN1cGVyXz1QO3ZhciBWPWZ1bmN0aW9uKCl7fTtWLnByb3RvdHlwZT1QLnByb3RvdHlwZSx4LnByb3RvdHlwZT1uZXcgVix4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14fWZ1bmN0aW9uIE4oeCxQLFYpe2lmKE4uaXNC''@;'; put 'put ''Tih4KSlyZXR1cm4geDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09eCYmKCJsZSIhPT1QJiYiYmUiIT09UHx8KFY9UCxQPTEwKSx0aGlzLl9pbml0KHh8fDAsUHx8MTAsVnx8ImJlIikpfXZhciBlZTsib2JqZWN0Ij09''@;'; put 'put ''dHlwZW9mIGllP2llLmV4cG9ydHM9TjpsZS5CTj1OLE4uQk49TixOLndvcmRTaXplPTI2O3RyeXtlZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOlooODYyMykuQnVmZmVyfWNhdGNoKHgpe31mdW5jdGlvbiBxKHgsUCl7''@;'; put 'put ''dmFyIFY9eC5jaGFyQ29kZUF0KFApO3JldHVybiBWPj02NSYmVjw9NzA/Vi01NTpWPj05NyYmVjw9MTAyP1YtODc6Vi00OCYxNX1mdW5jdGlvbiBKKHgsUCxWKXt2YXIgVD1xKHgsVik7cmV0dXJuIFYtMT49UCYmKFR8PXEoeCxWLTEpPDw0KSxUfWZ1bmN0aW9uIHNlKHgsUCxWLFQpe2Zvcih2''@;'; put 'put ''YXIgUz0wLEY9TWF0aC5taW4oeC5sZW5ndGgsVikseWU9UDt5ZTxGO3llKyspe3ZhciBDZT14LmNoYXJDb2RlQXQoeWUpLTQ4O1MqPVQsUys9Q2U+PTQ5P0NlLTQ5KzEwOkNlPj0xNz9DZS0xNysxMDpDZX1yZXR1cm4gU31OLmlzQk49ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBO''@;'; put 'put ''fHxudWxsIT09eCYmIm9iamVjdCI9PXR5cGVvZiB4JiZ4LmNvbnN0cnVjdG9yLndvcmRTaXplPT09Ti53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheSh4LndvcmRzKX0sTi5tYXg9ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk+MD94OlB9LE4ubWluPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHgu''@;'; put 'put ''Y21wKFApPDA/eDpQfSxOLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih4LFAsVil7aWYoIm51bWJlciI9PXR5cGVvZiB4KXJldHVybiB0aGlzLl9pbml0TnVtYmVyKHgsUCxWKTtpZigib2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh4LFAsVik7ImhleCI9PT1QJiYo''@;'; put 'put ''UD0xNiksWShQPT09KDB8UCkmJlA+PTImJlA8PTM2KTt2YXIgVD0wOyItIj09PSh4PXgudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoVCsrLHRoaXMubmVnYXRpdmU9MSksVDx4Lmxlbmd0aCYmKDE2PT09UD90aGlzLl9wYXJzZUhleCh4LFQsVik6KHRoaXMuX3BhcnNlQmFz''@;'; put 'put ''ZSh4LFAsVCksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpKSl9LE4ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHgsUCxWKXt4PDAmJih0aGlzLm5lZ2F0aXZlPTEseD0teCkseDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeF0sdGhp''@;'; put 'put ''cy5sZW5ndGg9MSk6eDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihZKHg8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMu''@;'; put 'put ''bGVuZ3RoPTMpLCJsZSI9PT1WJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKX0sTi5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbih4LFAsVil7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgubGVuZ3RoKSx4Lmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhp''@;'; put 'put ''cy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbCh4Lmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBUPTA7VDx0aGlzLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEYseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxl''@;'; put 'put ''bmd0aC0xLFM9MDtUPj0wO1QtPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QtMV08PDh8eFtULTJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7ZWxzZSBpZigibGUiPT09Vilmb3IoVD0w''@;'; put 'put ''LFM9MDtUPHgubGVuZ3RoO1QrPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QrMV08PDh8eFtUKzJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5w''@;'; put 'put ''cm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKHgsUCxWKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHgubGVuZ3RoLVApLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRj0wLHll''@;'; put 'put ''PTA7aWYoImJlIj09PVYpZm9yKFQ9eC5sZW5ndGgtMTtUPj1QO1QtPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jkc1t5ZSs9MV18PVM+Pj4yNik6Ris9ODtlbHNlIGZvcihUPSh4Lmxlbmd0aC1QKSUyPT0wP1ArMTpQO1Q8''@;'; put 'put ''eC5sZW5ndGg7VCs9MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O3RoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih4LFAsVil7dGhpcy53b3Jkcz1b''@;'; put 'put ''MF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIFQ9MCxTPTE7Uzw9NjcxMDg4NjM7Uyo9UClUKys7VC0tLFM9Uy9QfDA7Zm9yKHZhciBGPXgubGVuZ3RoLVYseWU9RiVULENlPU1hdGgubWluKEYsRi15ZSkrVixEZT0wLFBlPVY7UGU8Q2U7UGUrPVQpRGU9c2UoeCxQZSxQZStULFApLHRoaXMuaW11''@;'; put 'put ''bG4oUyksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSk7aWYoMCE9PXllKXt2YXIgUWU9MTtmb3IoRGU9c2UoeCxQZSx4Lmxlbmd0aCxQKSxQZT0wO1BlPHllO1BlKyspUWUqPVA7dGhpcy5pbXVsbihRZSksdGhpcy53b3Jkc1swXStE''@;'; put 'put ''ZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSl9dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHgpe3gud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl4LndvcmRzW1BdPXRoaXMu''@;'; put 'put ''d29yZHNbUF07eC5sZW5ndGg9dGhpcy5sZW5ndGgseC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHgucmVkPXRoaXMucmVkfSxOLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB4PW5ldyBOKG51bGwpO3JldHVybiB0aGlzLmNvcHkoeCkseH0sTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5j''@;'; put 'put ''dGlvbih4KXtmb3IoO3RoaXMubGVuZ3RoPHg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3Jl''@;'; put 'put ''dHVybiB0aGlzLl9ub3JtU2lnbigpfSxOLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlz''@;'; put 'put ''LnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgYWU9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sZmU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3''@;'; put 'put ''LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sZGU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUz''@;'; put 'put ''NiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQz''@;'; put 'put ''NTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdmUoeCxQLFYpe1YubmVnYXRpdmU9UC5uZWdhdGl2ZV54Lm5lZ2F0aXZlO3ZhciBUPXgubGVuZ3RoK1AubGVuZ3RofDA7Vi5sZW5ndGg9VCxUPVQtMXwwO3ZhciBTPTB8eC53b3Jkc1swXSxGPTB8UC53b3Jkc1swXSx5ZT1TKkYsRGU9''@;'; put 'put ''eWUvNjcxMDg4NjR8MDtWLndvcmRzWzBdPTY3MTA4ODYzJnllO2Zvcih2YXIgUGU9MTtQZTxUO1BlKyspe2Zvcih2YXIgUWU9RGU+Pj4yNiwkZT02NzEwODg2MyZEZSxndD1NYXRoLm1pbihQZSxQLmxlbmd0aC0xKSx5dD1NYXRoLm1heCgwLFBlLXgubGVuZ3RoKzEpO3l0PD1ndDt5dCsrKVFl''@;'; put 'put ''Kz0oeWU9KFM9MHx4LndvcmRzW1BlLXl0fDBdKSooRj0wfFAud29yZHNbeXRdKSskZSkvNjcxMDg4NjR8MCwkZT02NzEwODg2MyZ5ZTtWLndvcmRzW1BlXT0wfCRlLERlPTB8UWV9cmV0dXJuIDAhPT1EZT9WLndvcmRzW1BlXT0wfERlOlYubGVuZ3RoLS0sVi5zdHJpcCgpfU4ucHJvdG90eXBl''@;'; put 'put ''LnRvU3RyaW5nPWZ1bmN0aW9uKHgsUCl7dmFyIFY7aWYoUD0wfFB8fDEsMTY9PT0oeD14fHwxMCl8fCJoZXgiPT09eCl7Vj0iIjtmb3IodmFyIFQ9MCxTPTAsRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9dGhpcy53b3Jkc1tGXSxDZT0oMTY3NzcyMTUmKHllPDxUfFMpKS50b1N0cmlu''@;'; put 'put ''ZygxNik7Vj0wIT0oUz15ZT4+PjI0LVQmMTY3NzcyMTUpfHxGIT09dGhpcy5sZW5ndGgtMT9hZVs2LUNlLmxlbmd0aF0rQ2UrVjpDZStWLChUKz0yKT49MjYmJihULT0yNixGLS0pfWZvcigwIT09UyYmKFY9Uy50b1N0cmluZygxNikrVik7Vi5sZW5ndGglUCE9MDspVj0iMCIrVjtyZXR1cm4g''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmUmJihWPSItIitWKSxWfWlmKHg9PT0oMHx4KSYmeD49MiYmeDw9MzYpe3ZhciBEZT1mZVt4XSxQZT1kZVt4XTtWPSIiO3ZhciBRZT10aGlzLmNsb25lKCk7Zm9yKFFlLm5lZ2F0aXZlPTA7IVFlLmlzWmVybygpOyl7dmFyICRlPVFlLm1vZG4oUGUpLnRvU3RyaW5n''@;'; put 'put ''KHgpO1Y9KFFlPVFlLmlkaXZuKFBlKSkuaXNaZXJvKCk/JGUrVjphZVtEZS0kZS5sZW5ndGhdKyRlK1Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihWPSIwIitWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9WSghMSwiQmFzZSBzaG91''@;'; put 'put ''bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxOLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB4PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD94Kz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/eCs9''@;'; put 'put ''NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJlkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy14Onh9LE4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLnRvU3RyaW5nKDE2KX0sTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gWSh2b2lkIDAhPT1lZSksdGhpcy50b0FycmF5TGlrZShlZSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJy''@;'; put 'put ''YXkseCxQKX0sTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPXRoaXMuYnl0ZUxlbmd0aCgpLFM9Vnx8TWF0aC5tYXgoMSxUKTtZKFQ8PVMsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxZKFM+MCwiUmVxdWVzdGVkIGFycmF5IGxl''@;'; put 'put ''bmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBGLHllLENlPSJsZSI9PT1QLERlPW5ldyB4KFMpLFBlPXRoaXMuY2xvbmUoKTtpZihDZSl7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVt5ZV09Rjtmb3IoO3llPFM7eWUrKylEZVt5''@;'; put 'put ''ZV09MH1lbHNle2Zvcih5ZT0wO3llPFMtVDt5ZSsrKURlW3llXT0wO2Zvcih5ZT0wOyFQZS5pc1plcm8oKTt5ZSsrKUY9UGUuYW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbUy15ZS0xXT1GfXJldHVybiBEZX0sTi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKHgp''@;'; put 'put ''e3JldHVybiAzMi1NYXRoLmNsejMyKHgpfTpmdW5jdGlvbih4KXt2YXIgUD14LFY9MDtyZXR1cm4gUD49NDA5NiYmKFYrPTEzLFA+Pj49MTMpLFA+PTY0JiYoVis9NyxQPj4+PTcpLFA+PTgmJihWKz00LFA+Pj49NCksUD49MiYmKFYrPTIsUD4+Pj0yKSxWK1B9LE4ucHJvdG90eXBlLl96ZXJv''@;'; put 'put ''Qml0cz1mdW5jdGlvbih4KXtpZigwPT09eClyZXR1cm4gMjY7dmFyIFA9eCxWPTA7cmV0dXJuIDA9PSg4MTkxJlApJiYoVis9MTMsUD4+Pj0xMyksMD09KDEyNyZQKSYmKFYrPTcsUD4+Pj03KSwwPT0oMTUmUCkmJihWKz00LFA+Pj49NCksMD09KDMmUCkmJihWKz0yLFA+Pj49MiksMD09KDEm''@;'; put 'put ''UCkmJlYrKyxWfSxOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgUD10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStQfSxOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNa''@;'; put 'put ''ZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW1BdKTtpZih4Kz1WLDI2IT09VilicmVha31yZXR1cm4geH0sTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNl''@;'; put 'put ''aWwodGhpcy5iaXRMZW5ndGgoKS84KX0sTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHgpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIHRo''@;'; put 'put ''aXMudGVzdG4oeC0xKT90aGlzLm5vdG4oeCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygp''@;'; put 'put ''fSxOLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxOLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3Io''@;'; put 'put ''dmFyIFA9MDtQPHgubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPXRoaXMud29yZHNbUF18eC53b3Jkc1tQXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih4KX0s''@;'; put 'put ''Ti5wcm90b3R5cGUub3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoeCk6eC5jbG9uZSgpLmlvcih0aGlzKX0sTi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCku''@;'; put 'put ''aXVvcih4KTp4LmNsb25lKCkuaXVvcih0aGlzKX0sTi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oeCl7dmFyIFA7UD10aGlzLmxlbmd0aD54Lmxlbmd0aD94OnRoaXM7Zm9yKHZhciBWPTA7VjxQLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT10aGlzLndvcmRzW1ZdJngud29yZHNbVl07cmV0''@;'; put 'put ''dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdWFuZCh4KX0sTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh4KTp4LmNsb25lKCkuaWFuZCh0aGlzKX0sTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHgpOnguY2xvbmUoKS5pdWFuZCh0aGlzKX0sTi5wcm90''@;'; put 'put ''b3R5cGUuaXV4b3I9ZnVuY3Rpb24oeCl7dmFyIFAsVjt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oUD10aGlzLFY9eCk6KFA9eCxWPXRoaXMpO2Zvcih2YXIgVD0wO1Q8Vi5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09UC53b3Jkc1tUXV5WLndvcmRzW1RdO2lmKHRoaXMhPT1QKWZvcig7VDxQLmxl''@;'; put 'put ''bmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoeCl9LE4ucHJv''@;'; put 'put ''dG90eXBlLnhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoeCk6eC5jbG9uZSgpLml4b3IodGhpcyl9LE4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5p''@;'; put 'put ''dXhvcih4KTp4LmNsb25lKCkuaXV4b3IodGhpcyl9LE4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD0wfE1hdGguY2VpbCh4LzI2KSxWPXglMjY7dGhpcy5fZXhwYW5kKFApLFY+MCYmUC0tO2Zvcih2YXIgVD0wO1Q8UDtUKysp''@;'; put 'put ''dGhpcy53b3Jkc1tUXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tUXTtyZXR1cm4gVj4wJiYodGhpcy53b3Jkc1tUXT1+dGhpcy53b3Jkc1tUXSY2NzEwODg2Mz4+MjYtViksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4o''@;'; put 'put ''eCl9LE4ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oeCxQKXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFY9eC8yNnwwLFQ9eCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFYrMSksdGhpcy53b3Jkc1tWXT1QP3RoaXMud29yZHNbVl18MTw8VDp0aGlzLndvcmRzW1ZdJn4oMTw8VCks''@;'; put 'put ''dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgpe3ZhciBQLFYsVDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYo''@;'; put 'put ''MD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlKXJldHVybiB4Lm5lZ2F0aXZlPTAsUD10aGlzLmlzdWIoeCkseC5uZWdhdGl2ZT0xLFAuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIFM9MCxGPTA7RjxULmxl''@;'; put 'put ''bmd0aDtGKyspdGhpcy53b3Jkc1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKSsoMHxULndvcmRzW0ZdKStTKSxTPVA+Pj4yNjtmb3IoOzAhPT1TJiZGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pK1MpLFM9UD4+PjI2O2lmKHRoaXMu''@;'; put 'put ''bGVuZ3RoPVYubGVuZ3RoLDAhPT1TKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPVMsdGhpcy5sZW5ndGgrKztlbHNlIGlmKFYhPT10aGlzKWZvcig7RjxWLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT1WLndvcmRzW0ZdO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCl7''@;'; put 'put ''dmFyIFA7cmV0dXJuIDAhPT14Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLFA9dGhpcy5zdWIoeCkseC5uZWdhdGl2ZV49MSxQKTowPT09eC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxQPXguc3ViKHRoaXMpLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MSxQKTp0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh4KTp4LmNsb25lKCkuaWFkZCh0aGlzKX0sTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih4KXtpZigwIT09eC5uZWdhdGl2ZSl7eC5uZWdhdGl2ZT0wO3ZhciBQPXRoaXMuaWFkZCh4KTtyZXR1cm4geC5u''@;'; put 'put ''ZWdhdGl2ZT0xLFAuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIFYsVCxTPXRoaXMuY21wKHgpO2lmKDA9PT1TKXJldHVybiB0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztTPjA/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIEY9MCx5ZT0wO3llPFQubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSktKDB8VC53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEw''@;'; put 'put ''ODg2MyZQO2Zvcig7MCE9PUYmJnllPFYubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7aWYoMD09PUYmJnllPFYubGVuZ3RoJiZWIT09dGhpcylmb3IoO3llPFYubGVuZ3RoO3llKyspdGhpcy53b3Jkc1t5ZV09Vi53b3Jk''@;'; put 'put ''c1t5ZV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHllKSxWIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHgpfTt2YXIgQWU9ZnVuY3Rpb24o''@;'; put 'put ''eCxQLFYpe3ZhciBULFMsRix5ZT14LndvcmRzLENlPVAud29yZHMsRGU9Vi53b3JkcyxQZT0wLFFlPTB8eWVbMF0sJGU9ODE5MSZRZSxndD1RZT4+PjEzLHl0PTB8eWVbMV0scHQ9ODE5MSZ5dCxtdD15dD4+PjEzLHZ0PTB8eWVbMl0sZnQ9ODE5MSZ2dCxGdD12dD4+PjEzLG9uPTB8eWVbM10s''@;'; put 'put ''X3Q9ODE5MSZvbixudD1vbj4+PjEzLHFlPTB8eWVbNF0sb3Q9ODE5MSZxZSxSdD1xZT4+PjEzLEN0PTB8eWVbNV0sY3Q9ODE5MSZDdCxOdD1DdD4+PjEzLHplPTB8eWVbNl0sWWU9ODE5MSZ6ZSxBdD16ZT4+PjEzLGp0PTB8eWVbN10sSnQ9ODE5MSZqdCxtbj1qdD4+PjEzLHBuPTB8eWVbOF0s''@;'; put 'put ''Ym49ODE5MSZwbixsbj1wbj4+PjEzLE5uPTB8eWVbOV0sa249ODE5MSZObixlcj1Obj4+PjEzLHVyPTB8Q2VbMF0sWG49ODE5MSZ1cixGcj11cj4+PjEzLHhyPTB8Q2VbMV0sZW49ODE5MSZ4cixkcj14cj4+PjEzLG5yPTB8Q2VbMl0sd249ODE5MSZuciwkbj1ucj4+PjEzLFl0PTB8Q2VbM10s''@;'; put 'put ''Z249ODE5MSZZdCxLbj1ZdD4+PjEzLFZ0PTB8Q2VbNF0sc249ODE5MSZWdCxVbj1WdD4+PjEzLF9uPTB8Q2VbNV0sdG49ODE5MSZfbixHbj1fbj4+PjEzLFRyPTB8Q2VbNl0sUG49ODE5MSZUcixTcj1Ucj4+PjEzLHZuPTB8Q2VbN10sdW49ODE5MSZ2bixjbj12bj4+PjEzLFNuPTB8Q2VbOF0s''@;'; put 'put ''R3Q9ODE5MSZTbixFbj1Tbj4+PjEzLGpuPTB8Q2VbOV0scXQ9ODE5MSZqbixMbj1qbj4+PjEzO1YubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPTE5O3ZhciBKbj0oUGUrKFQ9TWF0aC5pbXVsKCRlLFhuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bCgkZSxGcikp''@;'; put 'put ''K01hdGguaW11bChndCxYbil8MCkpPDwxMyl8MDtQZT0oKEY9TWF0aC5pbXVsKGd0LEZyKSkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHB0LFhuKSxTPShTPU1hdGguaW11bChwdCxGcikpK01hdGguaW11bChtdCxYbil8MCxGPU1hdGguaW11bCht''@;'; put 'put ''dCxGcik7dmFyIG9yPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGRyKXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGRyKXwwKSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9''@;'; put 'put ''NjcxMDg4NjMsVD1NYXRoLmltdWwoZnQsWG4pLFM9KFM9TWF0aC5pbXVsKGZ0LEZyKSkrTWF0aC5pbXVsKEZ0LFhuKXwwLEY9TWF0aC5pbXVsKEZ0LEZyKSxUPVQrTWF0aC5pbXVsKHB0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsZHIpfDApK01hdGguaW11bChtdCxlbil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKG10LGRyKXwwO3ZhciBncj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsd24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSwkbil8MCkrTWF0aC5pbXVsKGd0LHduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCwkbil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+''@;'; put 'put ''MjYpfDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKF90LFhuKSxTPShTPU1hdGguaW11bChfdCxGcikpK01hdGguaW11bChudCxYbil8MCxGPU1hdGguaW11bChudCxGciksVD1UK01hdGguaW11bChmdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGRyKXwwKStNYXRoLmltdWwoRnQsZW4p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChGdCxkcil8MCxUPVQrTWF0aC5pbXVsKHB0LHduKXwwLFM9KFM9UytNYXRoLmltdWwocHQsJG4pfDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5pbXVsKG10LCRuKXwwO3ZhciBKcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsZ24pfDApfDApKygoODE5MSYo''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bCgkZSxLbil8MCkrTWF0aC5pbXVsKGd0LGduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxLbil8MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG90LFhuKSxTPShTPU1hdGguaW11bChvdCxGcikpK01h''@;'; put 'put ''dGguaW11bChSdCxYbil8MCxGPU1hdGguaW11bChSdCxGciksVD1UK01hdGguaW11bChfdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGRyKXwwKStNYXRoLmltdWwobnQsZW4pfDAsRj1GK01hdGguaW11bChudCxkcil8MCxUPVQrTWF0aC5pbXVsKGZ0LHduKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoZnQsJG4pfDApK01hdGguaW11bChGdCx3bil8MCxGPUYrTWF0aC5pbXVsKEZ0LCRuKXwwLFQ9VCtNYXRoLmltdWwocHQsZ24pfDAsUz0oUz1TK01hdGguaW11bChwdCxLbil8MCkrTWF0aC5pbXVsKG10LGduKXwwLEY9RitNYXRoLmltdWwobXQsS24pfDA7dmFyIFZyPShQZSsoVD1UK01h''@;'; put 'put ''dGguaW11bCgkZSxzbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLFVuKXwwKStNYXRoLmltdWwoZ3Qsc24pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LFVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoY3Qs''@;'; put 'put ''WG4pLFM9KFM9TWF0aC5pbXVsKGN0LEZyKSkrTWF0aC5pbXVsKE50LFhuKXwwLEY9TWF0aC5pbXVsKE50LEZyKSxUPVQrTWF0aC5pbXVsKG90LGVuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsZHIpfDApK01hdGguaW11bChSdCxlbil8MCxGPUYrTWF0aC5pbXVsKFJ0LGRyKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoX3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChfdCwkbil8MCkrTWF0aC5pbXVsKG50LHduKXwwLEY9RitNYXRoLmltdWwobnQsJG4pfDAsVD1UK01hdGguaW11bChmdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEtuKXwwKStNYXRoLmltdWwoRnQsZ24pfDAsRj1GK01hdGguaW11''@;'; put 'put ''bChGdCxLbil8MCxUPVQrTWF0aC5pbXVsKHB0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsVW4pfDApK01hdGguaW11bChtdCxzbil8MCxGPUYrTWF0aC5pbXVsKG10LFVuKXwwO3ZhciB0aT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11''@;'; put 'put ''bCgkZSxHbil8MCkrTWF0aC5pbXVsKGd0LHRuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxHbil8MCkrKFM+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFllLFhuKSxTPShTPU1hdGguaW11bChZZSxGcikpK01hdGguaW11bChBdCxYbil8''@;'; put 'put ''MCxGPU1hdGguaW11bChBdCxGciksVD1UK01hdGguaW11bChjdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGRyKXwwKStNYXRoLmltdWwoTnQsZW4pfDAsRj1GK01hdGguaW11bChOdCxkcil8MCxUPVQrTWF0aC5pbXVsKG90LHduKXwwLFM9KFM9UytNYXRoLmltdWwob3QsJG4pfDApK01h''@;'; put 'put ''dGguaW11bChSdCx3bil8MCxGPUYrTWF0aC5pbXVsKFJ0LCRuKXwwLFQ9VCtNYXRoLmltdWwoX3QsZ24pfDAsUz0oUz1TK01hdGguaW11bChfdCxLbil8MCkrTWF0aC5pbXVsKG50LGduKXwwLEY9RitNYXRoLmltdWwobnQsS24pfDAsVD1UK01hdGguaW11bChmdCxzbil8MCxTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGZ0LFVuKXwwKStNYXRoLmltdWwoRnQsc24pfDAsRj1GK01hdGguaW11bChGdCxVbil8MCxUPVQrTWF0aC5pbXVsKHB0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsR24pfDApK01hdGguaW11bChtdCx0bil8MCxGPUYrTWF0aC5pbXVsKG10LEduKXwwO3ZhciBPcj0oUGUrKFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoJGUsUG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxTcil8MCkrTWF0aC5pbXVsKGd0LFBuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxTcil8MCkrKFM+Pj4xMyl8MCkrKE9yPj4+MjYpfDAsT3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVs''@;'; put 'put ''KEp0LFhuKSxTPShTPU1hdGguaW11bChKdCxGcikpK01hdGguaW11bChtbixYbil8MCxGPU1hdGguaW11bChtbixGciksVD1UK01hdGguaW11bChZZSxlbil8MCxTPShTPVMrTWF0aC5pbXVsKFllLGRyKXwwKStNYXRoLmltdWwoQXQsZW4pfDAsRj1GK01hdGguaW11bChBdCxkcil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKGN0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsJG4pfDApK01hdGguaW11bChOdCx3bil8MCxGPUYrTWF0aC5pbXVsKE50LCRuKXwwLFQ9VCtNYXRoLmltdWwob3QsZ24pfDAsUz0oUz1TK01hdGguaW11bChvdCxLbil8MCkrTWF0aC5pbXVsKFJ0LGduKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoUnQsS24pfDAsVD1UK01hdGguaW11bChfdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LFVuKXwwKStNYXRoLmltdWwobnQsc24pfDAsRj1GK01hdGguaW11bChudCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsR24pfDApK01hdGguaW11''@;'; put 'put ''bChGdCx0bil8MCxGPUYrTWF0aC5pbXVsKEZ0LEduKXwwLFQ9VCtNYXRoLmltdWwocHQsUG4pfDAsUz0oUz1TK01hdGguaW11bChwdCxTcil8MCkrTWF0aC5pbXVsKG10LFBuKXwwLEY9RitNYXRoLmltdWwobXQsU3IpfDA7dmFyIGxpPShQZSsoVD1UK01hdGguaW11bCgkZSx1bil8MCl8MCkr''@;'; put 'put ''KCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGNuKXwwKStNYXRoLmltdWwoZ3QsdW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGNuKXwwKSsoUz4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJu''@;'; put 'put ''LEZyKSkrTWF0aC5pbXVsKGxuLFhuKXwwLEY9TWF0aC5pbXVsKGxuLEZyKSxUPVQrTWF0aC5pbXVsKEp0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsZHIpfDApK01hdGguaW11bChtbixlbil8MCxGPUYrTWF0aC5pbXVsKG1uLGRyKXwwLFQ9VCtNYXRoLmltdWwoWWUsd24pfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChZZSwkbil8MCkrTWF0aC5pbXVsKEF0LHduKXwwLEY9RitNYXRoLmltdWwoQXQsJG4pfDAsVD1UK01hdGguaW11bChjdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEtuKXwwKStNYXRoLmltdWwoTnQsZ24pfDAsRj1GK01hdGguaW11bChOdCxLbil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKG90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsVW4pfDApK01hdGguaW11bChSdCxzbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwoX3QsdG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxHbil8MCkrTWF0aC5pbXVsKG50LHRuKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''bnQsR24pfDAsVD1UK01hdGguaW11bChmdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFNyKXwwKStNYXRoLmltdWwoRnQsUG4pfDAsRj1GK01hdGguaW11bChGdCxTcil8MCxUPVQrTWF0aC5pbXVsKHB0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsY24pfDApK01hdGguaW11bChtdCx1''@;'; put 'put ''bil8MCxGPUYrTWF0aC5pbXVsKG10LGNuKXwwO3ZhciBJaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsR3QpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxFbil8MCkrTWF0aC5pbXVsKGd0LEd0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxFbil8MCkrKFM+Pj4x''@;'; put 'put ''Myl8MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFhuKSxTPShTPU1hdGguaW11bChrbixGcikpK01hdGguaW11bChlcixYbil8MCxGPU1hdGguaW11bChlcixGciksVD1UK01hdGguaW11bChibixlbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGRyKXwwKStNYXRo''@;'; put 'put ''LmltdWwobG4sZW4pfDAsRj1GK01hdGguaW11bChsbixkcil8MCxUPVQrTWF0aC5pbXVsKEp0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsJG4pfDApK01hdGguaW11bChtbix3bil8MCxGPUYrTWF0aC5pbXVsKG1uLCRuKXwwLFQ9VCtNYXRoLmltdWwoWWUsZ24pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChZZSxLbil8MCkrTWF0aC5pbXVsKEF0LGduKXwwLEY9RitNYXRoLmltdWwoQXQsS24pfDAsVD1UK01hdGguaW11bChjdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LFVuKXwwKStNYXRoLmltdWwoTnQsc24pfDAsRj1GK01hdGguaW11bChOdCxVbil8MCxUPVQrTWF0aC5pbXVsKG90''@;'; put 'put ''LHRuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsR24pfDApK01hdGguaW11bChSdCx0bil8MCxGPUYrTWF0aC5pbXVsKFJ0LEduKXwwLFQ9VCtNYXRoLmltdWwoX3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxTcil8MCkrTWF0aC5pbXVsKG50LFBuKXwwLEY9RitNYXRoLmltdWwobnQsU3Ip''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChmdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGNuKXwwKStNYXRoLmltdWwoRnQsdW4pfDAsRj1GK01hdGguaW11bChGdCxjbil8MCxUPVQrTWF0aC5pbXVsKHB0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwocHQsRW4pfDApK01hdGguaW11bChtdCxHdCl8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKG10LEVuKXwwO3ZhciByMD0oUGUrKFQ9VCtNYXRoLmltdWwoJGUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxMbil8MCkrTWF0aC5pbXVsKGd0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxMbil8MCkrKFM+Pj4xMyl8MCkr''@;'; put 'put ''KHIwPj4+MjYpfDAscjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGVuKSxTPShTPU1hdGguaW11bChrbixkcikpK01hdGguaW11bChlcixlbil8MCxGPU1hdGguaW11bChlcixkciksVD1UK01hdGguaW11bChibix3bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLCRuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''bG4sd24pfDAsRj1GK01hdGguaW11bChsbiwkbil8MCxUPVQrTWF0aC5pbXVsKEp0LGduKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsS24pfDApK01hdGguaW11bChtbixnbil8MCxGPUYrTWF0aC5pbXVsKG1uLEtuKXwwLFQ9VCtNYXRoLmltdWwoWWUsc24pfDAsUz0oUz1TK01hdGguaW11bChZ''@;'; put 'put ''ZSxVbil8MCkrTWF0aC5pbXVsKEF0LHNuKXwwLEY9RitNYXRoLmltdWwoQXQsVW4pfDAsVD1UK01hdGguaW11bChjdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEduKXwwKStNYXRoLmltdWwoTnQsdG4pfDAsRj1GK01hdGguaW11bChOdCxHbil8MCxUPVQrTWF0aC5pbXVsKG90LFBuKXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwob3QsU3IpfDApK01hdGguaW11bChSdCxQbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFNyKXwwLFQ9VCtNYXRoLmltdWwoX3QsdW4pfDAsUz0oUz1TK01hdGguaW11bChfdCxjbil8MCkrTWF0aC5pbXVsKG50LHVuKXwwLEY9RitNYXRoLmltdWwobnQsY24pfDAsVD1U''@;'; put 'put ''K01hdGguaW11bChmdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEVuKXwwKStNYXRoLmltdWwoRnQsR3QpfDAsRj1GK01hdGguaW11bChGdCxFbil8MDt2YXIgZTA9KFBlKyhUPVQrTWF0aC5pbXVsKHB0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwocHQsTG4pfDApK01h''@;'; put 'put ''dGguaW11bChtdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobXQsTG4pfDApKyhTPj4+MTMpfDApKyhlMD4+PjI2KXwwLGUwJj02NzEwODg2MyxUPU1hdGguaW11bChrbix3biksUz0oUz1NYXRoLmltdWwoa24sJG4pKStNYXRoLmltdWwoZXIsd24pfDAsRj1NYXRoLmltdWwo''@;'; put 'put ''ZXIsJG4pLFQ9VCtNYXRoLmltdWwoYm4sZ24pfDAsUz0oUz1TK01hdGguaW11bChibixLbil8MCkrTWF0aC5pbXVsKGxuLGduKXwwLEY9RitNYXRoLmltdWwobG4sS24pfDAsVD1UK01hdGguaW11bChKdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LFVuKXwwKStNYXRoLmltdWwobW4sc24p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChtbixVbil8MCxUPVQrTWF0aC5pbXVsKFllLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsR24pfDApK01hdGguaW11bChBdCx0bil8MCxGPUYrTWF0aC5pbXVsKEF0LEduKXwwLFQ9VCtNYXRoLmltdWwoY3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChjdCxTcil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKE50LFBuKXwwLEY9RitNYXRoLmltdWwoTnQsU3IpfDAsVD1UK01hdGguaW11bChvdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKG90LGNuKXwwKStNYXRoLmltdWwoUnQsdW4pfDAsRj1GK01hdGguaW11bChSdCxjbil8MCxUPVQrTWF0aC5pbXVsKF90LEd0KXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoX3QsRW4pfDApK01hdGguaW11bChudCxHdCl8MCxGPUYrTWF0aC5pbXVsKG50LEVuKXwwO3ZhciBkMD0oUGUrKFQ9VCtNYXRoLmltdWwoZnQscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChmdCxMbil8MCkrTWF0aC5pbXVsKEZ0LHF0KXwwKSk8PDEzKXww''@;'; put 'put ''O1BlPSgoRj1GK01hdGguaW11bChGdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGduKSxTPShTPU1hdGguaW11bChrbixLbikpK01hdGguaW11bChlcixnbil8MCxGPU1hdGguaW11bChlcixLbiksVD1UK01hdGguaW11bChibixz''@;'; put 'put ''bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLFVuKXwwKStNYXRoLmltdWwobG4sc24pfDAsRj1GK01hdGguaW11bChsbixVbil8MCxUPVQrTWF0aC5pbXVsKEp0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsR24pfDApK01hdGguaW11bChtbix0bil8MCxGPUYrTWF0aC5pbXVsKG1uLEduKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoWWUsUG4pfDAsUz0oUz1TK01hdGguaW11bChZZSxTcil8MCkrTWF0aC5pbXVsKEF0LFBuKXwwLEY9RitNYXRoLmltdWwoQXQsU3IpfDAsVD1UK01hdGguaW11bChjdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGNuKXwwKStNYXRoLmltdWwoTnQsdW4pfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChOdCxjbil8MCxUPVQrTWF0aC5pbXVsKG90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwob3QsRW4pfDApK01hdGguaW11bChSdCxHdCl8MCxGPUYrTWF0aC5pbXVsKFJ0LEVuKXwwO3ZhciBfMD0oUGUrKFQ9VCtNYXRoLmltdWwoX3QscXQpfDApfDApKygoODE5MSYoUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChfdCxMbil8MCkrTWF0aC5pbXVsKG50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChudCxMbil8MCkrKFM+Pj4xMyl8MCkrKF8wPj4+MjYpfDAsXzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHNuKSxTPShTPU1hdGguaW11bChrbixVbikpK01hdGguaW11''@;'; put 'put ''bChlcixzbil8MCxGPU1hdGguaW11bChlcixVbiksVD1UK01hdGguaW11bChibix0bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEduKXwwKStNYXRoLmltdWwobG4sdG4pfDAsRj1GK01hdGguaW11bChsbixHbil8MCxUPVQrTWF0aC5pbXVsKEp0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQs''@;'; put 'put ''U3IpfDApK01hdGguaW11bChtbixQbil8MCxGPUYrTWF0aC5pbXVsKG1uLFNyKXwwLFQ9VCtNYXRoLmltdWwoWWUsdW4pfDAsUz0oUz1TK01hdGguaW11bChZZSxjbil8MCkrTWF0aC5pbXVsKEF0LHVuKXwwLEY9RitNYXRoLmltdWwoQXQsY24pfDAsVD1UK01hdGguaW11bChjdCxHdCl8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKGN0LEVuKXwwKStNYXRoLmltdWwoTnQsR3QpfDAsRj1GK01hdGguaW11bChOdCxFbil8MDt2YXIgVTA9KFBlKyhUPVQrTWF0aC5pbXVsKG90LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob3QsTG4pfDApK01hdGguaW11bChSdCxxdCl8MCkpPDwx''@;'; put 'put ''Myl8MDtQZT0oKEY9RitNYXRoLmltdWwoUnQsTG4pfDApKyhTPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2MyxUPU1hdGguaW11bChrbix0biksUz0oUz1NYXRoLmltdWwoa24sR24pKStNYXRoLmltdWwoZXIsdG4pfDAsRj1NYXRoLmltdWwoZXIsR24pLFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''Ym4sUG4pfDAsUz0oUz1TK01hdGguaW11bChibixTcil8MCkrTWF0aC5pbXVsKGxuLFBuKXwwLEY9RitNYXRoLmltdWwobG4sU3IpfDAsVD1UK01hdGguaW11bChKdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGNuKXwwKStNYXRoLmltdWwobW4sdW4pfDAsRj1GK01hdGguaW11bChtbixj''@;'; put 'put ''bil8MCxUPVQrTWF0aC5pbXVsKFllLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoWWUsRW4pfDApK01hdGguaW11bChBdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEF0LEVuKXwwO3ZhciBCaT0oUGUrKFQ9VCtNYXRoLmltdWwoY3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChjdCxM''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKE50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChOdCxMbil8MCkrKFM+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFBuKSxTPShTPU1hdGguaW11bChrbixTcikpK01hdGguaW11bChlcixQbil8MCxGPU1h''@;'; put 'put ''dGguaW11bChlcixTciksVD1UK01hdGguaW11bChibix1bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGNuKXwwKStNYXRoLmltdWwobG4sdW4pfDAsRj1GK01hdGguaW11bChsbixjbil8MCxUPVQrTWF0aC5pbXVsKEp0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoSnQsRW4pfDApK01hdGguaW11''@;'; put 'put ''bChtbixHdCl8MCxGPUYrTWF0aC5pbXVsKG1uLEVuKXwwO3ZhciBqMD0oUGUrKFQ9VCtNYXRoLmltdWwoWWUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChZZSxMbil8MCkrTWF0aC5pbXVsKEF0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChBdCxMbil8MCkr''@;'; put 'put ''KFM+Pj4xMyl8MCkrKGowPj4+MjYpfDAsajAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHVuKSxTPShTPU1hdGguaW11bChrbixjbikpK01hdGguaW11bChlcix1bil8MCxGPU1hdGguaW11bChlcixjbiksVD1UK01hdGguaW11bChibixHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEVuKXww''@;'; put 'put ''KStNYXRoLmltdWwobG4sR3QpfDAsRj1GK01hdGguaW11bChsbixFbil8MDt2YXIgQW89KFBlKyhUPVQrTWF0aC5pbXVsKEp0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoSnQsTG4pfDApK01hdGguaW11bChtbixxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwo''@;'; put 'put ''bW4sTG4pfDApKyhTPj4+MTMpfDApKyhBbz4+PjI2KXwwLEFvJj02NzEwODg2MyxUPU1hdGguaW11bChrbixHdCksUz0oUz1NYXRoLmltdWwoa24sRW4pKStNYXRoLmltdWwoZXIsR3QpfDAsRj1NYXRoLmltdWwoZXIsRW4pO3ZhciBLbz0oUGUrKFQ9VCtNYXRoLmltdWwoYm4scXQpfDApfDAp''@;'; put 'put ''KygoODE5MSYoUz0oUz1TK01hdGguaW11bChibixMbil8MCkrTWF0aC5pbXVsKGxuLHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChsbixMbil8MCkrKFM+Pj4xMyl8MCkrKEtvPj4+MjYpfDAsS28mPTY3MTA4ODYzO3ZhciBmYT0oUGUrKFQ9TWF0aC5pbXVsKGtuLHF0KSl8MCkr''@;'; put 'put ''KCg4MTkxJihTPShTPU1hdGguaW11bChrbixMbikpK01hdGguaW11bChlcixxdCl8MCkpPDwxMyl8MDtyZXR1cm4gUGU9KChGPU1hdGguaW11bChlcixMbikpKyhTPj4+MTMpfDApKyhmYT4+PjI2KXwwLGZhJj02NzEwODg2MyxEZVswXT1KbixEZVsxXT1vcixEZVsyXT1ncixEZVszXT1KcixE''@;'; put 'put ''ZVs0XT1WcixEZVs1XT10aSxEZVs2XT1PcixEZVs3XT1saSxEZVs4XT1JaSxEZVs5XT1yMCxEZVsxMF09ZTAsRGVbMTFdPWQwLERlWzEyXT1fMCxEZVsxM109VTAsRGVbMTRdPUJpLERlWzE1XT1qMCxEZVsxNl09QW8sRGVbMTddPUtvLERlWzE4XT1mYSwwIT09UGUmJihEZVsxOV09UGUsVi5s''@;'; put 'put ''ZW5ndGgrKyksVn07ZnVuY3Rpb24ga2UoeCxQLFYpe3JldHVybihuZXcgU2UpLm11bHAoeCxQLFYpfWZ1bmN0aW9uIFNlKHgsUCl7dGhpcy54PXgsdGhpcy55PVB9TWF0aC5pbXVsfHwoQWU9dmUpLE4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHgsUCl7dmFyIFQ9dGhpcy5sZW5ndGgreC5s''@;'; put 'put ''ZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09eC5sZW5ndGg/QWUodGhpcyx4LFApOlQ8NjM/dmUodGhpcyx4LFApOlQ8MTAyND9mdW5jdGlvbihTLEYseWUpe3llLm5lZ2F0aXZlPUYubmVnYXRpdmVeUy5uZWdhdGl2ZSx5ZS5sZW5ndGg9Uy5sZW5ndGgrRi5sZW5ndGg7Zm9y''@;'; put 'put ''KHZhciBDZT0wLERlPTAsUGU9MDtQZTx5ZS5sZW5ndGgtMTtQZSsrKXt2YXIgUWU9RGU7RGU9MDtmb3IodmFyICRlPTY3MTA4ODYzJkNlLGd0PU1hdGgubWluKFBlLEYubGVuZ3RoLTEpLHl0PU1hdGgubWF4KDAsUGUtUy5sZW5ndGgrMSk7eXQ8PWd0O3l0Kyspe3ZhciBtdD0oMHxTLndvcmRz''@;'; put 'put ''W1BlLXl0XSkqKDB8Ri53b3Jkc1t5dF0pLHZ0PTY3MTA4ODYzJm10OyRlPTY3MTA4ODYzJih2dD12dCskZXwwKSxEZSs9KFFlPShRZT1RZSsobXQvNjcxMDg4NjR8MCl8MCkrKHZ0Pj4+MjYpfDApPj4+MjYsUWUmPTY3MTA4ODYzfXllLndvcmRzW1BlXT0kZSxDZT1RZSxRZT1EZX1yZXR1cm4g''@;'; put 'put ''MCE9PUNlP3llLndvcmRzW1BlXT1DZTp5ZS5sZW5ndGgtLSx5ZS5zdHJpcCgpfSh0aGlzLHgsUCk6a2UodGhpcyx4LFApfSxTZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9Ti5wcm90b3R5cGUuX2NvdW50Qml0cyh4KS0xLFQ9MDtUPHg7''@;'; put 'put ''VCsrKVBbVF09dGhpcy5yZXZCaW4oVCxWLHgpO3JldHVybiBQfSxTZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHgsUCxWKXtpZigwPT09eHx8eD09PVYtMSlyZXR1cm4geDtmb3IodmFyIFQ9MCxTPTA7UzxQO1MrKylUfD0oMSZ4KTw8UC1TLTEseD4+PTE7cmV0dXJuIFR9LFNlLnByb3Rv''@;'; put 'put ''dHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXtmb3IodmFyIHllPTA7eWU8Rjt5ZSsrKVRbeWVdPVBbeFt5ZV1dLFNbeWVdPVZbeFt5ZV1dfSxTZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXt0aGlzLnBlcm11dGUoRix4LFAsVixULFMpO2Zvcih2''@;'; put 'put ''YXIgeWU9MTt5ZTxTO3llPDw9MSlmb3IodmFyIENlPXllPDwxLERlPU1hdGguY29zKDIqTWF0aC5QSS9DZSksUGU9TWF0aC5zaW4oMipNYXRoLlBJL0NlKSxRZT0wO1FlPFM7UWUrPUNlKWZvcih2YXIgJGU9RGUsZ3Q9UGUseXQ9MDt5dDx5ZTt5dCsrKXt2YXIgcHQ9VltRZSt5dF0sbXQ9VFtR''@;'; put 'put ''ZSt5dF0sdnQ9VltRZSt5dCt5ZV0sZnQ9VFtRZSt5dCt5ZV0sRnQ9JGUqdnQtZ3QqZnQ7ZnQ9JGUqZnQrZ3QqdnQsVltRZSt5dF09cHQrKHZ0PUZ0KSxUW1FlK3l0XT1tdCtmdCxWW1FlK3l0K3llXT1wdC12dCxUW1FlK3l0K3llXT1tdC1mdCx5dCE9PUNlJiYoRnQ9RGUqJGUtUGUqZ3QsZ3Q9''@;'; put 'put ''RGUqZ3QrUGUqJGUsJGU9RnQpfX0sU2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHgsUCl7dmFyIFY9MXxNYXRoLm1heChQLHgpLFQ9MSZWLFM9MDtmb3IoVj1WLzJ8MDtWO1Y+Pj49MSlTKys7cmV0dXJuIDE8PFMrMStUfSxTZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9u''@;'; put 'put ''KHgsUCxWKXtpZighKFY8PTEpKWZvcih2YXIgVD0wO1Q8Vi8yO1QrKyl7dmFyIFM9eFtUXTt4W1RdPXhbVi1ULTFdLHhbVi1ULTFdPVMsUz1QW1RdLFBbVF09LVBbVi1ULTFdLFBbVi1ULTFdPS1TfX0sU2UucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj0w''@;'; put 'put ''LFQ9MDtUPFAvMjtUKyspe3ZhciBTPTgxOTIqTWF0aC5yb3VuZCh4WzIqVCsxXS9QKStNYXRoLnJvdW5kKHhbMipUXS9QKStWO3hbVF09NjcxMDg4NjMmUyxWPVM8NjcxMDg4NjQ/MDpTLzY3MTA4ODY0fDB9cmV0dXJuIHh9LFNlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHgsUCxW''@;'; put 'put ''LFQpe2Zvcih2YXIgUz0wLEY9MDtGPFA7RisrKVZbMipGXT04MTkxJihTKz0wfHhbRl0pLFZbMipGKzFdPTgxOTEmKFM+Pj49MTMpLFM+Pj49MTM7Zm9yKEY9MipQO0Y8VDsrK0YpVltGXT0wO1koMD09PVMpLFkoMD09KC04MTkyJlMpKX0sU2UucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oeCl7''@;'; put 'put ''Zm9yKHZhciBQPW5ldyBBcnJheSh4KSxWPTA7Vjx4O1YrKylQW1ZdPTA7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVD0yKnRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsUC5sZW5ndGgpLFM9dGhpcy5tYWtlUkJUKFQpLEY9dGhpcy5zdHViKFQpLHll''@;'; put 'put ''PW5ldyBBcnJheShUKSxDZT1uZXcgQXJyYXkoVCksRGU9bmV3IEFycmF5KFQpLFBlPW5ldyBBcnJheShUKSxRZT1uZXcgQXJyYXkoVCksJGU9bmV3IEFycmF5KFQpLGd0PVYud29yZHM7Z3QubGVuZ3RoPVQsdGhpcy5jb252ZXJ0MTNiKHgud29yZHMseC5sZW5ndGgseWUsVCksdGhpcy5jb252''@;'; put 'put ''ZXJ0MTNiKFAud29yZHMsUC5sZW5ndGgsUGUsVCksdGhpcy50cmFuc2Zvcm0oeWUsRixDZSxEZSxULFMpLHRoaXMudHJhbnNmb3JtKFBlLEYsUWUsJGUsVCxTKTtmb3IodmFyIHl0PTA7eXQ8VDt5dCsrKXt2YXIgcHQ9Q2VbeXRdKlFlW3l0XS1EZVt5dF0qJGVbeXRdO0RlW3l0XT1DZVt5dF0q''@;'; put 'put ''JGVbeXRdK0RlW3l0XSpRZVt5dF0sQ2VbeXRdPXB0fXJldHVybiB0aGlzLmNvbmp1Z2F0ZShDZSxEZSxUKSx0aGlzLnRyYW5zZm9ybShDZSxEZSxndCxGLFQsUyksdGhpcy5jb25qdWdhdGUoZ3QsRixUKSx0aGlzLm5vcm1hbGl6ZTEzYihndCxUKSxWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5u''@;'; put 'put ''ZWdhdGl2ZSxWLmxlbmd0aD14Lmxlbmd0aCtQLmxlbmd0aCxWLnN0cmlwKCl9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLHRoaXMubXVsVG8oeCxQKX0sTi5wcm90b3R5''@;'; put 'put ''cGUubXVsZj1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLGtlKHRoaXMseCxQKX0sTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHgsdGhpcyl9LE4u''@;'; put 'put ''cHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpO2Zvcih2YXIgUD0wLFY9MDtWPHRoaXMubGVuZ3RoO1YrKyl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkqeCxTPSg2NzEwODg2MyZUKSsoNjcxMDg4NjMmUCk7UD4+PTI2LFArPVQv''@;'; put 'put ''NjcxMDg4NjR8MCxQKz1TPj4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZTfXJldHVybiAwIT09UCYmKHRoaXMud29yZHNbVl09UCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgpe3ZhciBQPWZ1bmN0aW9uKEYpe2Zvcih2YXIgeWU9bmV3IEFy''@;'; put 'put ''cmF5KEYuYml0TGVuZ3RoKCkpLENlPTA7Q2U8eWUubGVuZ3RoO0NlKyspe3ZhciBQZT1DZSUyNjt5ZVtDZV09KEYud29yZHNbQ2UvMjZ8MF0mMTw8UGUpPj4+UGV9cmV0dXJuIHllfSh4KTtpZigwPT09UC5sZW5ndGgpcmV0dXJuIG5ldyBOKDEpO2Zvcih2YXIgVj10aGlzLFQ9MDtUPFAubGVu''@;'; put 'put ''Z3RoJiYwPT09UFtUXTtUKyssVj1WLnNxcigpKTtpZigrK1Q8UC5sZW5ndGgpZm9yKHZhciBTPVYuc3FyKCk7VDxQLmxlbmd0aDtUKyssUz1TLnNxcigpKTAhPT1QW1RdJiYoVj1WLm11bChTKSk7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgeCYmeD49MCk7dmFyIFAsVj14JTI2LFQ9KHgtVikvMjYsUz02NzEwODg2Mz4+PjI2LVY8PDI2LVY7aWYoMCE9PVYpe3ZhciBGPTA7Zm9yKFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIHllPXRoaXMud29yZHNbUF0mUzt0aGlzLndvcmRzW1BdPSgwfHRoaXMud29yZHNbUF0pLXll''@;'; put 'put ''PDxWfEYsRj15ZT4+PjI2LVZ9RiYmKHRoaXMud29yZHNbUF09Rix0aGlzLmxlbmd0aCsrKX1pZigwIT09VCl7Zm9yKFA9dGhpcy5sZW5ndGgtMTtQPj0wO1AtLSl0aGlzLndvcmRzW1ArVF09dGhpcy53b3Jkc1tQXTtmb3IoUD0wO1A8VDtQKyspdGhpcy53b3Jkc1tQXT0wO3RoaXMubGVuZ3Ro''@;'; put 'put ''Kz1UfXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih4KX0sTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVDtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49''@;'; put 'put ''MCksVD1QPyhQLVAlMjYpLzI2OjA7dmFyIFM9eCUyNixGPU1hdGgubWluKCh4LVMpLzI2LHRoaXMubGVuZ3RoKSx5ZT02NzEwODg2M142NzEwODg2Mz4+PlM8PFMsQ2U9VjtpZihULT1GLFQ9TWF0aC5tYXgoMCxUKSxDZSl7Zm9yKHZhciBEZT0wO0RlPEY7RGUrKylDZS53b3Jkc1tEZV09dGhp''@;'; put 'put ''cy53b3Jkc1tEZV07Q2UubGVuZ3RoPUZ9aWYoMCE9PUYpaWYodGhpcy5sZW5ndGg+Rilmb3IodGhpcy5sZW5ndGgtPUYsRGU9MDtEZTx0aGlzLmxlbmd0aDtEZSsrKXRoaXMud29yZHNbRGVdPXRoaXMud29yZHNbRGUrRl07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIg''@;'; put 'put ''UGU9MDtmb3IoRGU9dGhpcy5sZW5ndGgtMTtEZT49MCYmKDAhPT1QZXx8RGU+PVQpO0RlLS0pe3ZhciBRZT0wfHRoaXMud29yZHNbRGVdO3RoaXMud29yZHNbRGVdPVBlPDwyNi1TfFFlPj4+UyxQZT1RZSZ5ZX1yZXR1cm4gQ2UmJjAhPT1QZSYmKENlLndvcmRzW0NlLmxlbmd0aCsrXT1QZSks''@;'; put 'put ''MD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih4LFAsVil9LE4ucHJvdG90eXBlLnNobG49ZnVu''@;'; put 'put ''Y3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih4KX0sTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oeCl9LE4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih4KX0sTi5wcm90''@;'; put 'put ''b3R5cGUudXNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oeCl9LE4ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Vnx8ISh0aGlz''@;'; put 'put ''LndvcmRzW1ZdJjE8PFApKX0sTi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVy''@;'; put 'put ''cyIpLHRoaXMubGVuZ3RoPD1WP3RoaXM6KDAhPT1QJiZWKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oVix0aGlzLmxlbmd0aCksMCE9PVAmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PlA8PFApLHRoaXMuc3RyaXAoKSl9LE4ucHJvdG90eXBlLm1hc2tu''@;'; put 'put ''PWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHgpfSxOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwP3RoaXMuaXN1Ym4oLXgpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxl''@;'; put 'put ''bmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8eD8odGhpcy53b3Jkc1swXT14LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHgpfSxOLnByb3RvdHlwZS5f''@;'; put 'put ''aWFkZG49ZnVuY3Rpb24oeCl7dGhpcy53b3Jkc1swXSs9eDtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW1BdPj02NzEwODg2NDtQKyspdGhpcy53b3Jkc1tQXS09NjcxMDg4NjQsUD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tQKzFdPTE6dGhpcy53b3Jkc1tQKzFd''@;'; put 'put ''Kys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFArMSksdGhpc30sTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oeCl7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwKXJldHVybiB0aGlzLmlhZGRuKC14KTtpZigwIT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09eCwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNl''@;'; put 'put ''IGZvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF08MDtQKyspdGhpcy53b3Jkc1tQXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tQKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRk''@;'; put 'put ''bih4KX0sTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKHgpfSxOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9u''@;'; put 'put ''ZSgpLmlhYnMoKX0sTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTO3RoaXMuX2V4cGFuZCh4Lmxlbmd0aCtWKTt2YXIgeWU9MDtmb3IoVD0wO1Q8eC5sZW5ndGg7VCsrKXtTPSgwfHRoaXMud29yZHNbVCtWXSkreWU7dmFyIENlPSgwfHgud29yZHNbVF0p''@;'; put 'put ''KlA7eWU9KChTLT02NzEwODg2MyZDZSk+PjI2KS0oQ2UvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlN9Zm9yKDtUPHRoaXMubGVuZ3RoLVY7VCsrKXllPShTPSgwfHRoaXMud29yZHNbVCtWXSkreWUpPj4yNix0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmUztpZigwPT09''@;'; put 'put ''eWUpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoWSgtMT09PXllKSx5ZT0wLFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl5ZT0oUz0tKDB8dGhpcy53b3Jkc1tUXSkreWUpPj4yNix0aGlzLndvcmRzW1RdPTY3MTA4ODYzJlM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE4ucHJv''@;'; put 'put ''dG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKHgsUCl7dmFyIFYsVD10aGlzLmNsb25lKCksUz14LEY9MHxTLndvcmRzW1MubGVuZ3RoLTFdOzAhPShWPTI2LXRoaXMuX2NvdW50Qml0cyhGKSkmJihTPVMudXNobG4oViksVC5pdXNobG4oViksRj0wfFMud29yZHNbUy5sZW5ndGgtMV0pO3ZhciB5''@;'; put 'put ''ZSxDZT1ULmxlbmd0aC1TLmxlbmd0aDtpZigibW9kIiE9PVApeyh5ZT1uZXcgTihudWxsKSkubGVuZ3RoPUNlKzEseWUud29yZHM9bmV3IEFycmF5KHllLmxlbmd0aCk7Zm9yKHZhciBEZT0wO0RlPHllLmxlbmd0aDtEZSsrKXllLndvcmRzW0RlXT0wfXZhciBQZT1ULmNsb25lKCkuX2lzaGxu''@;'; put 'put ''c3VibXVsKFMsMSxDZSk7MD09PVBlLm5lZ2F0aXZlJiYoVD1QZSx5ZSYmKHllLndvcmRzW0NlXT0xKSk7Zm9yKHZhciBRZT1DZS0xO1FlPj0wO1FlLS0pe3ZhciAkZT02NzEwODg2NCooMHxULndvcmRzW1MubGVuZ3RoK1FlXSkrKDB8VC53b3Jkc1tTLmxlbmd0aCtRZS0xXSk7Zm9yKCRlPU1h''@;'; put 'put ''dGgubWluKCRlL0Z8MCw2NzEwODg2MyksVC5faXNobG5zdWJtdWwoUywkZSxRZSk7MCE9PVQubmVnYXRpdmU7KSRlLS0sVC5uZWdhdGl2ZT0wLFQuX2lzaGxuc3VibXVsKFMsMSxRZSksVC5pc1plcm8oKXx8KFQubmVnYXRpdmVePTEpO3llJiYoeWUud29yZHNbUWVdPSRlKX1yZXR1cm4geWUm''@;'; put 'put ''JnllLnN0cmlwKCksVC5zdHJpcCgpLCJkaXYiIT09UCYmMCE9PVYmJlQuaXVzaHJuKFYpLHtkaXY6eWV8fG51bGwsbW9kOlR9fSxOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKCF4LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IE4oMCksbW9kOm5l''@;'; put 'put ''dyBOKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmU/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeCxQKSwibW9kIiE9PVAmJihUPUYuZGl2Lm5lZygpKSwiZGl2IiE9PVAmJihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlhZGQoeCkpLHtkaXY6VCxtb2Q6U30p''@;'; put 'put ''OjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZT8oRj10aGlzLmRpdm1vZCh4Lm5lZygpLFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLHtkaXY6VCxtb2Q6Ri5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZ4Lm5lZ2F0aXZlKT8oRj10aGlzLm5lZygpLmRpdm1vZCh4Lm5lZygp''@;'; put 'put ''LFApLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaXN1Yih4KSkse2RpdjpGLmRpdixtb2Q6U30pOngubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh4KTwwP3tkaXY6bmV3IE4oMCksbW9kOnRoaXN9OjE9PT14Lmxlbmd0aD8iZGl2Ij09PVA/e2Rp''@;'; put 'put ''djp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09UD97ZGl2Om51bGwsbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHgs''@;'; put 'put ''UCk7dmFyIFQsUyxGfSxOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsImRpdiIsITEpLmRpdn0sTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCExKS5tb2R9LE4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rp''@;'; put 'put ''b24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITApLm1vZH0sTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5kaXZtb2QoeCk7aWYoUC5tb2QuaXNaZXJvKCkpcmV0dXJuIFAuZGl2O3ZhciBWPTAhPT1QLmRpdi5uZWdhdGl2ZT9QLm1vZC5pc3ViKHgp''@;'; put 'put ''OlAubW9kLFQ9eC51c2hybigxKSxTPXguYW5kbG4oMSksRj1WLmNtcChUKTtyZXR1cm4gRjwwfHwxPT09UyYmMD09PUY/UC5kaXY6MCE9PVAuZGl2Lm5lZ2F0aXZlP1AuZGl2LmlzdWJuKDEpOlAuZGl2LmlhZGRuKDEpfSxOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4''@;'; put 'put ''NjMpO2Zvcih2YXIgUD02NzEwODg2NCV4LFY9MCxUPXRoaXMubGVuZ3RoLTE7VD49MDtULS0pVj0oUCpWKygwfHRoaXMud29yZHNbVF0pKSV4O3JldHVybiBWfSxOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7''@;'; put 'put ''Vj49MDtWLS0pe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKzY3MTA4ODY0KlA7dGhpcy53b3Jkc1tWXT1UL3h8MCxQPVQleH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oeCl9LE4ucHJvdG90eXBlLmVn''@;'; put 'put ''Y2Q9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSksWSgheC5pc1plcm8oKSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQPTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25lKCk7Zm9yKHZhciBUPW5ldyBOKDEpLFM9bmV3IE4oMCksRj1uZXcgTigwKSx5ZT1uZXcgTigxKSxDZT0w''@;'; put 'put ''O1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7KVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpLCsrQ2U7Zm9yKHZhciBEZT1WLmNsb25lKCksUGU9UC5jbG9uZSgpOyFQLmlzWmVybygpOyl7Zm9yKHZhciBRZT0wLCRlPTE7MD09KFAud29yZHNbMF0mJGUpJiZRZTwyNjsrK1FlLCRlPDw9MSk7aWYoUWU+''@;'; put 'put ''MClmb3IoUC5pdXNocm4oUWUpO1FlLS0gPjA7KShULmlzT2RkKCl8fFMuaXNPZGQoKSkmJihULmlhZGQoRGUpLFMuaXN1YihQZSkpLFQuaXVzaHJuKDEpLFMuaXVzaHJuKDEpO2Zvcih2YXIgZ3Q9MCx5dD0xOzA9PShWLndvcmRzWzBdJnl0KSYmZ3Q8MjY7KytndCx5dDw8PTEpO2lmKGd0PjAp''@;'; put 'put ''Zm9yKFYuaXVzaHJuKGd0KTtndC0tID4wOykoRi5pc09kZCgpfHx5ZS5pc09kZCgpKSYmKEYuaWFkZChEZSkseWUuaXN1YihQZSkpLEYuaXVzaHJuKDEpLHllLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFQuaXN1YihGKSxTLmlzdWIoeWUpKTooVi5pc3ViKFApLEYuaXN1YihU''@;'; put 'put ''KSx5ZS5pc3ViKFMpKX1yZXR1cm57YTpGLGI6eWUsZ2NkOlYuaXVzaGxuKENlKX19LE4ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAu''@;'; put 'put ''Y2xvbmUoKTtmb3IodmFyIFQsUz1uZXcgTigxKSxGPW5ldyBOKDApLHllPVYuY2xvbmUoKTtQLmNtcG4oMSk+MCYmVi5jbXBuKDEpPjA7KXtmb3IodmFyIENlPTAsRGU9MTswPT0oUC53b3Jkc1swXSZEZSkmJkNlPDI2OysrQ2UsRGU8PD0xKTtpZihDZT4wKWZvcihQLml1c2hybihDZSk7Q2Ut''@;'; put 'put ''LSA+MDspUy5pc09kZCgpJiZTLmlhZGQoeWUpLFMuaXVzaHJuKDEpO2Zvcih2YXIgUGU9MCxRZT0xOzA9PShWLndvcmRzWzBdJlFlKSYmUGU8MjY7KytQZSxRZTw8PTEpO2lmKFBlPjApZm9yKFYuaXVzaHJuKFBlKTtQZS0tID4wOylGLmlzT2RkKCkmJkYuaWFkZCh5ZSksRi5pdXNocm4oMSk7''@;'; put 'put ''UC5jbXAoVik+PTA/KFAuaXN1YihWKSxTLmlzdWIoRikpOihWLmlzdWIoUCksRi5pc3ViKFMpKX1yZXR1cm4oVD0wPT09UC5jbXBuKDEpP1M6RikuY21wbigwKTwwJiZULmlhZGQoeCksVH0sTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHguYWJz''@;'; put 'put ''KCk7aWYoeC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgUD10aGlzLmNsb25lKCksVj14LmNsb25lKCk7UC5uZWdhdGl2ZT0wLFYubmVnYXRpdmU9MDtmb3IodmFyIFQ9MDtQLmlzRXZlbigpJiZWLmlzRXZlbigpO1QrKylQLml1c2hybigxKSxWLml1c2hybigxKTtmb3IoOzspe2Zv''@;'; put 'put ''cig7UC5pc0V2ZW4oKTspUC5pdXNocm4oMSk7Zm9yKDtWLmlzRXZlbigpOylWLml1c2hybigxKTt2YXIgUz1QLmNtcChWKTtpZihTPDApe3ZhciBGPVA7UD1WLFY9Rn1lbHNlIGlmKDA9PT1TfHwwPT09Vi5jbXBuKDEpKWJyZWFrO1AuaXN1YihWKX1yZXR1cm4gVi5pdXNobG4oVCl9LE4ucHJv''@;'; put 'put ''dG90eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZWdjZCh4KS5hLnVtb2QoeCl9LE4ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jk''@;'; put 'put ''c1swXSl9LE4ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLndvcmRzWzBdJnh9LE4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KTt2YXIgUD14JTI2LFY9KHgtUCkvMjYsVD0xPDxQO2lmKHRoaXMubGVuZ3RoPD1WKXJldHVy''@;'; put 'put ''biB0aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdfD1ULHRoaXM7Zm9yKHZhciBTPVQsRj1WOzAhPT1TJiZGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIHllPTB8dGhpcy53b3Jkc1tGXTtTPSh5ZSs9Uyk+Pj4yNix0aGlzLndvcmRzW0ZdPXllJj02NzEwODg2M31yZXR1cm4gMCE9PVMmJih0''@;'; put 'put ''aGlzLndvcmRzW0ZdPVMsdGhpcy5sZW5ndGgrKyksdGhpc30sTi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LE4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oeCl7dmFyIFAsVj14PDA7aWYoMCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmUmJiFWKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZWKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKVA9MTtlbHNle1YmJih4PS14KSxZKHg8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBUPTB8dGhpcy53b3Jkc1swXTtQPVQ9PT14''@;'; put 'put ''PzA6VDx4Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHgpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIDE7''@;'; put 'put ''dmFyIFA9dGhpcy51Y21wKHgpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oeCl7aWYodGhpcy5sZW5ndGg+eC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8eC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBQPTAsVj10aGlz''@;'; put 'put ''Lmxlbmd0aC0xO1Y+PTA7Vi0tKXt2YXIgVD0wfHRoaXMud29yZHNbVl0sUz0wfHgud29yZHNbVl07aWYoVCE9PVMpe1Q8Uz9QPS0xOlQ+UyYmKFA9MSk7YnJlYWt9fXJldHVybiBQfSxOLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLmd0PWZ1bmN0aW9uKHgpe3JldHVybiAxPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KT49MH0sTi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KT49MH0sTi5wcm90b3R5cGUubHRuPWZ1''@;'; put 'put ''bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5sdD1mdW5jdGlvbih4KXtyZXR1cm4tMT09PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk8PTB9LE4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih4''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jbXAoeCk8PTB9LE4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PT10aGlzLmNtcCh4KX0sTi5yZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBuZSh4KX0s''@;'; put 'put ''Ti5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksWSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx4LmNvbnZlcnRUbyh0aGlzKS5fZm9y''@;'; put 'put ''Y2VSZWQoeCl9LE4ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxOLnByb3RvdHlwZS5fZm9yY2VSZWQ9''@;'; put 'put ''ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucmVkPXgsdGhpc30sTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLnJlZEFk''@;'; put 'put ''ZD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElT''@;'; put 'put ''dWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5tdWwo''@;'; put 'put ''dGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQuaW11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTcXI9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJ''@;'; put 'put ''U3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE4ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi''@;'; put 'put ''KSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5y''@;'; put 'put ''ZWQuaW52bSh0aGlzKX0sTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE4ucHJvdG90eXBlLnJlZFBvdz1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCYmIXgucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHgpfTt2YXIgSWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBU''@;'; put 'put ''ZSh4LFApe3RoaXMubmFtZT14LHRoaXMucD1uZXcgTihQLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gRWUoKXtUZS5jYWxsKHRoaXMsImsyNTYiLCJm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGhlKCl7VGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAw''@;'; put 'put ''MDAwMDEiKX1mdW5jdGlvbiBPKCl7VGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB6KCl7VGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBuZSh4KXtpZigic3RyaW5nIj09dHlwZW9mIHgpe3ZhciBQPU4uX3ByaW1lKHgpO3RoaXMubT1QLnAsdGhpcy5wcmltZT1QfWVsc2UgWSh4Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAx''@;'; put 'put ''IiksdGhpcy5tPXgsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIHRlKHgpe25lLmNhbGwodGhpcyx4KSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBOKDEpLml1c2hsbih0aGlz''@;'; put 'put ''LnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1p''@;'; put 'put ''bnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSx4fSxUZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih4KXt2YXIgUCxWPXg7''@;'; put 'put ''ZG97dGhpcy5zcGxpdChWLHRoaXMudG1wKSxQPShWPShWPXRoaXMuaW11bEsoVikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShQPnRoaXMubik7dmFyIFQ9UDx0aGlzLm4/LTE6Vi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1UPyhWLndvcmRzWzBdPTAsVi5sZW5ndGg9MSk6''@;'; put 'put ''VD4wP1YuaXN1Yih0aGlzLnApOnZvaWQgMCE9PVYuc3RyaXA/Vi5zdHJpcCgpOlYuX3N0cmlwKCksVn0sVGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7eC5pdXNocm4odGhpcy5uLDAsUCl9LFRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtyZXR1cm4geC5pbXVsKHRoaXMu''@;'; put 'put ''ayl9LFcoRWUsVGUpLEVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj00MTk0MzAzLFQ9TWF0aC5taW4oeC5sZW5ndGgsOSksUz0wO1M8VDtTKyspUC53b3Jkc1tTXT14LndvcmRzW1NdO2lmKFAubGVuZ3RoPVQseC5sZW5ndGg8PTkpcmV0dXJuIHgud29yZHNbMF09''@;'; put 'put ''MCx2b2lkKHgubGVuZ3RoPTEpO3ZhciBGPXgud29yZHNbOV07Zm9yKFAud29yZHNbUC5sZW5ndGgrK109RiZWLFM9MTA7Uzx4Lmxlbmd0aDtTKyspe3ZhciB5ZT0wfHgud29yZHNbU107eC53b3Jkc1tTLTEwXT0oeWUmVik8PDR8Rj4+PjIyLEY9eWV9eC53b3Jkc1tTLTEwXT1GPj4+PTIyLHgu''@;'; put 'put ''bGVuZ3RoLT0wPT09RiYmeC5sZW5ndGg+MTA/MTA6OX0sRWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3gud29yZHNbeC5sZW5ndGhdPTAseC53b3Jkc1t4Lmxlbmd0aCsxXT0wLHgubGVuZ3RoKz0yO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MHx4LndvcmRz''@;'; put 'put ''W1ZdO3gud29yZHNbVl09NjcxMDg4NjMmKFArPTk3NypUKSxQPTY0KlQrKFAvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiYoeC5sZW5ndGgtLSwwPT09eC53b3Jkc1t4Lmxlbmd0aC0xXSYmeC5sZW5ndGgtLSkseH0sVyhoZSxUZSksVyhPLFRlKSxXKHosVGUp''@;'; put 'put ''LHoucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MTkqKDB8eC53b3Jkc1tWXSkrUCxTPTY3MTA4ODYzJlQ7VD4+Pj0yNix4LndvcmRzW1ZdPVMsUD1UfXJldHVybiAwIT09UCYmKHgud29yZHNbeC5sZW5ndGgrK109UCks''@;'; put 'put ''eH0sTi5fcHJpbWU9ZnVuY3Rpb24oeCl7aWYoSWVbeF0pcmV0dXJuIEllW3hdO3ZhciBQO2lmKCJrMjU2Ij09PXgpUD1uZXcgRWU7ZWxzZSBpZigicDIyNCI9PT14KVA9bmV3IGhlO2Vsc2UgaWYoInAxOTIiPT09eClQPW5ldyBPO2Vsc2V7aWYoInAyNTUxOSIhPT14KXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiVW5rbm93biBwcmltZSAiK3gpO1A9bmV3IHp9cmV0dXJuIEllW3hdPVAsUH0sbmUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQg''@;'; put 'put ''bnVtYmVycyIpfSxuZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oeCxQKXtZKDA9PSh4Lm5lZ2F0aXZlfFAubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFkoeC5yZWQmJngucmVkPT09UC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi''@;'; put 'put ''KX0sbmUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHgpLl9mb3JjZVJlZCh0aGlzKTp4LnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaXNaZXJv''@;'; put 'put ''KCk/eC5jbG9uZSgpOnRoaXMubS5zdWIoeCkuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlz''@;'; put 'put ''KX0sbmUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWfSxuZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3Zh''@;'; put 'put ''ciBWPXguc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguaXN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlz''@;'; put 'put ''Lm0pLFZ9LG5lLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh4KSx0aGlzLmltb2QoeC51c2hsbihQKSl9LG5lLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5pbXVsKFApKX0s''@;'; put 'put ''bmUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHgubXVsKFApKX0sbmUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW11bCh4LHguY2xvbmUoKSl9LG5lLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24o''@;'; put 'put ''eCl7cmV0dXJuIHRoaXMubXVsKHgseCl9LG5lLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIHguY2xvbmUoKTt2YXIgUD10aGlzLm0uYW5kbG4oMyk7aWYoWShQJTI9PTEpLDM9PT1QKXt2YXIgVj10aGlzLm0uYWRkKG5ldyBOKDEpKS5pdXNocm4oMik7''@;'; put 'put ''cmV0dXJuIHRoaXMucG93KHgsVil9Zm9yKHZhciBUPXRoaXMubS5zdWJuKDEpLFM9MDshVC5pc1plcm8oKSYmMD09PVQuYW5kbG4oMSk7KVMrKyxULml1c2hybigxKTtZKCFULmlzWmVybygpKTt2YXIgRj1uZXcgTigxKS50b1JlZCh0aGlzKSx5ZT1GLnJlZE5lZygpLENlPXRoaXMubS5zdWJu''@;'; put 'put ''KDEpLml1c2hybigxKSxEZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKERlPW5ldyBOKDIqRGUqRGUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhEZSxDZSkuY21wKHllKTspRGUucmVkSUFkZCh5ZSk7Zm9yKHZhciBQZT10aGlzLnBvdyhEZSxUKSxRZT10aGlzLnBvdyh4LFQuYWRkbigxKS5p''@;'; put 'put ''dXNocm4oMSkpLCRlPXRoaXMucG93KHgsVCksZ3Q9UzswIT09JGUuY21wKEYpOyl7Zm9yKHZhciB5dD0kZSxwdD0wOzAhPT15dC5jbXAoRik7cHQrKyl5dD15dC5yZWRTcXIoKTtZKHB0PGd0KTt2YXIgbXQ9dGhpcy5wb3coUGUsbmV3IE4oMSkuaXVzaGxuKGd0LXB0LTEpKTtRZT1RZS5yZWRN''@;'; put 'put ''dWwobXQpLFBlPW10LnJlZFNxcigpLCRlPSRlLnJlZE11bChQZSksZ3Q9cHR9cmV0dXJuIFFlfSxuZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXt2YXIgUD14Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09UC5uZWdhdGl2ZT8oUC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChQKS5yZWROZWco''@;'; put 'put ''KSk6dGhpcy5pbW9kKFApfSxuZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgsUCl7aWYoUC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMSkudG9SZWQodGhpcyk7aWYoMD09PVAuY21wbigxKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBWPW5ldyBBcnJheSgxNik7VlswXT1uZXcgTigxKS50b1JlZCh0''@;'; put 'put ''aGlzKSxWWzFdPXg7Zm9yKHZhciBUPTI7VDxWLmxlbmd0aDtUKyspVltUXT10aGlzLm11bChWW1QtMV0seCk7dmFyIFM9VlswXSxGPTAseWU9MCxDZT1QLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09Q2UmJihDZT0yNiksVD1QLmxlbmd0aC0xO1Q+PTA7VC0tKXtmb3IodmFyIERlPVAud29yZHNb''@;'; put 'put ''VF0sUGU9Q2UtMTtQZT49MDtQZS0tKXt2YXIgUWU9RGU+PlBlJjE7UyE9PVZbMF0mJihTPXRoaXMuc3FyKFMpKSwwIT09UWV8fDAhPT1GPyhGPDw9MSxGfD1RZSwoND09Kyt5ZXx8MD09PVQmJjA9PT1QZSkmJihTPXRoaXMubXVsKFMsVltGXSkseWU9MCxGPTApKTp5ZT0wfUNlPTI2fXJldHVy''@;'; put 'put ''biBTfSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3ZhciBQPXgudW1vZCh0aGlzLm0pO3JldHVybiBQPT09eD9QLmNsb25lKCk6UH0sbmUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXguY2xvbmUoKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSxOLm1v''@;'; put 'put ''bnQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyB0ZSh4KX0sVyh0ZSxuZSksdGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHgudXNobG4odGhpcy5zaGlmdCkpfSx0ZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5p''@;'; put 'put ''bW9kKHgubXVsKHRoaXMucmludikpO3JldHVybiBQLnJlZD1udWxsLFB9LHRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4geC53b3Jkc1swXT0wLHgubGVuZ3RoPTEseDt2YXIgVj14LmltdWwoUCksVD1WLm1hc2tuKHRoaXMu''@;'; put 'put ''c2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4odGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wP0Y9Uy5pc3ViKHRoaXMubSk6Uy5jbXBuKDApPDAmJihGPVMuaWFkZCh0aGlzLm0pKSxGLl9m''@;'; put 'put ''b3JjZVJlZCh0aGlzKX0sdGUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgVj14Lm11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRo''@;'; put 'put ''aXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSx0ZS5wcm90b3R5cGUuaW52''@;'; put 'put ''bT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHguX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShVPVoubm1kKFUpLHRoaXMpfSwzNDgyOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNTcxNyksbGU9WigyMzE4KSxZPVooOTc4NSksVz1a''@;'; put 'put ''KDkwNzIpLE49WigxMDI3KTtmdW5jdGlvbiBlZShxKXtOLmNhbGwodGhpcywiZGlnZXN0IiksdGhpcy5faGFzaD1xfWllKGVlLE4pLGVlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHEpe3RoaXMuX2hhc2gudXBkYXRlKHEpfSxlZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9LFUuZXhwb3J0cz1mdW5jdGlvbihxKXtyZXR1cm4ibWQ1Ij09PShxPXEudG9Mb3dlckNhc2UoKSk/bmV3IGxlOiJybWQxNjAiPT09cXx8InJpcGVtZDE2MCI9PT1xP25ldyBZOm5ldyBlZShXKHEpKX19LDgwMjg6KFUsUSxaKT0+e3ZhciBpZT1aKDIz''@;'; put 'put ''MTgpO1UuZXhwb3J0cz1mdW5jdGlvbihsZSl7cmV0dXJuKG5ldyBpZSkudXBkYXRlKGxlKS5kaWdlc3QoKX19LDgzNTU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig1NzE3KSxsZT1aKDEwMzEpLFk9WigxMDI3KSxXPVooOTUwOSkuQnVmZmVyLE49Wig4MDI4KSxlZT1aKDk3ODUp''@;'; put 'put ''LHE9Wig5MDcyKSxKPVcuYWxsb2MoMTI4KTtmdW5jdGlvbiBzZShhZSxmZSl7WS5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgZmUmJihmZT1XLmZyb20oZmUpKTt2YXIgZGU9InNoYTUxMiI9PT1hZXx8InNoYTM4NCI9PT1hZT8xMjg6NjQ7dGhpcy5fYWxnPWFlLHRoaXMu''@;'; put 'put ''X2tleT1mZSxmZS5sZW5ndGg+ZGU/ZmU9KCJybWQxNjAiPT09YWU/bmV3IGVlOnEoYWUpKS51cGRhdGUoZmUpLmRpZ2VzdCgpOmZlLmxlbmd0aDxkZSYmKGZlPVcuY29uY2F0KFtmZSxKXSxkZSkpO2Zvcih2YXIgdmU9dGhpcy5faXBhZD1XLmFsbG9jVW5zYWZlKGRlKSxBZT10aGlzLl9vcGFk''@;'; put 'put ''PVcuYWxsb2NVbnNhZmUoZGUpLGtlPTA7a2U8ZGU7a2UrKyl2ZVtrZV09NTReZmVba2VdLEFlW2tlXT05Ml5mZVtrZV07dGhpcy5faGFzaD0icm1kMTYwIj09PWFlP25ldyBlZTpxKGFlKSx0aGlzLl9oYXNoLnVwZGF0ZSh2ZSl9aWUoc2UsWSksc2UucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rp''@;'; put 'put ''b24oYWUpe3RoaXMuX2hhc2gudXBkYXRlKGFlKX0sc2UucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBhZT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybigicm1kMTYwIj09PXRoaXMuX2FsZz9uZXcgZWU6cSh0aGlzLl9hbGcpKS51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKGFl''@;'; put 'put ''KS5kaWdlc3QoKX0sVS5leHBvcnRzPWZ1bmN0aW9uKGFlLGZlKXtyZXR1cm4icm1kMTYwIj09PShhZT1hZS50b0xvd2VyQ2FzZSgpKXx8InJpcGVtZDE2MCI9PT1hZT9uZXcgc2UoInJtZDE2MCIsZmUpOiJtZDUiPT09YWU/bmV3IGxlKE4sZmUpOm5ldyBzZShhZSxmZSl9fSwxMDMxOihVLFEs''@;'; put 'put ''Wik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNTcxNyksbGU9Wig5NTA5KS5CdWZmZXIsWT1aKDEwMjcpLFc9bGUuYWxsb2MoMTI4KSxOPTY0O2Z1bmN0aW9uIGVlKHEsSil7WS5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgSiYmKEo9bGUuZnJvbShKKSksdGhpcy5fYWxn''@;'; put 'put ''PXEsdGhpcy5fa2V5PUosSi5sZW5ndGg+Tj9KPXEoSik6Si5sZW5ndGg8TiYmKEo9bGUuY29uY2F0KFtKLFddLE4pKTtmb3IodmFyIHNlPXRoaXMuX2lwYWQ9bGUuYWxsb2NVbnNhZmUoTiksYWU9dGhpcy5fb3BhZD1sZS5hbGxvY1Vuc2FmZShOKSxmZT0wO2ZlPE47ZmUrKylzZVtmZV09NTRe''@;'; put 'put ''SltmZV0sYWVbZmVdPTkyXkpbZmVdO3RoaXMuX2hhc2g9W3NlXX1pZShlZSxZKSxlZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihxKXt0aGlzLl9oYXNoLnB1c2gocSl9LGVlLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLl9hbGcobGUuY29uY2F0KHRoaXMuX2hh''@;'; put 'put ''c2gpKTtyZXR1cm4gdGhpcy5fYWxnKGxlLmNvbmNhdChbdGhpcy5fb3BhZCxxXSkpfSxVLmV4cG9ydHM9ZWV9LDU4MzU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0IjtRLnJhbmRvbUJ5dGVzPVEucm5nPVEucHNldWRvUmFuZG9tQnl0ZXM9US5wcm5nPVooMTc5OCksUS5jcmVhdGVIYXNoPVEuSGFz''@;'; put 'put ''aD1aKDM0ODIpLFEuY3JlYXRlSG1hYz1RLkhtYWM9Wig4MzU1KTt2YXIgaWU9Wig2MDQyKSxsZT1PYmplY3Qua2V5cyhpZSksWT1bInNoYTEiLCJzaGEyMjQiLCJzaGEyNTYiLCJzaGEzODQiLCJzaGE1MTIiLCJtZDUiLCJybWQxNjAiXS5jb25jYXQobGUpO1EuZ2V0SGFzaGVzPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFl9O3ZhciBXPVooNTYzMik7US5wYmtkZjI9Vy5wYmtkZjIsUS5wYmtkZjJTeW5jPVcucGJrZGYyU3luYzt2YXIgTj1aKDM2MTQpO1EuQ2lwaGVyPU4uQ2lwaGVyLFEuY3JlYXRlQ2lwaGVyPU4uY3JlYXRlQ2lwaGVyLFEuQ2lwaGVyaXY9Ti5DaXBoZXJpdixRLmNyZWF0ZUNp''@;'; put 'put ''cGhlcml2PU4uY3JlYXRlQ2lwaGVyaXYsUS5EZWNpcGhlcj1OLkRlY2lwaGVyLFEuY3JlYXRlRGVjaXBoZXI9Ti5jcmVhdGVEZWNpcGhlcixRLkRlY2lwaGVyaXY9Ti5EZWNpcGhlcml2LFEuY3JlYXRlRGVjaXBoZXJpdj1OLmNyZWF0ZURlY2lwaGVyaXYsUS5nZXRDaXBoZXJzPU4uZ2V0Q2lw''@;'; put 'put ''aGVycyxRLmxpc3RDaXBoZXJzPU4ubGlzdENpcGhlcnM7dmFyIGVlPVooMjYwNyk7US5EaWZmaWVIZWxsbWFuR3JvdXA9ZWUuRGlmZmllSGVsbG1hbkdyb3VwLFEuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwPWVlLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCxRLmdldERpZmZpZUhlbGxtYW49''@;'; put 'put ''ZWUuZ2V0RGlmZmllSGVsbG1hbixRLmNyZWF0ZURpZmZpZUhlbGxtYW49ZWUuY3JlYXRlRGlmZmllSGVsbG1hbixRLkRpZmZpZUhlbGxtYW49ZWUuRGlmZmllSGVsbG1hbjt2YXIgcT1aKDQ3NDMpO1EuY3JlYXRlU2lnbj1xLmNyZWF0ZVNpZ24sUS5TaWduPXEuU2lnbixRLmNyZWF0ZVZlcmlm''@;'; put 'put ''eT1xLmNyZWF0ZVZlcmlmeSxRLlZlcmlmeT1xLlZlcmlmeSxRLmNyZWF0ZUVDREg9Wig2MzkzKTt2YXIgSj1aKDc5MDApO1EucHVibGljRW5jcnlwdD1KLnB1YmxpY0VuY3J5cHQsUS5wcml2YXRlRW5jcnlwdD1KLnByaXZhdGVFbmNyeXB0LFEucHVibGljRGVjcnlwdD1KLnB1YmxpY0RlY3J5''@;'; put 'put ''cHQsUS5wcml2YXRlRGVjcnlwdD1KLnByaXZhdGVEZWNyeXB0O3ZhciBzZT1aKDc5NjMpO1EucmFuZG9tRmlsbD1zZS5yYW5kb21GaWxsLFEucmFuZG9tRmlsbFN5bmM9c2UucmFuZG9tRmlsbFN5bmMsUS5jcmVhdGVDcmVkZW50aWFscz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihbInNv''@;'; put 'put ''cnJ5LCBjcmVhdGVDcmVkZW50aWFscyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0Iiwid2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMiLCJodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnkiXS5qb2luKCJcbiIpKX0sUS5jb25zdGFudHM9e0RIX0NIRUNL''@;'; put 'put ''X1BfTk9UX1NBRkVfUFJJTUU6MixESF9DSEVDS19QX05PVF9QUklNRToxLERIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1I6NCxESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SOjgsTlBOX0VOQUJMRUQ6MSxBTFBOX0VOQUJMRUQ6MSxSU0FfUEtDUzFfUEFERElORzoxLFJTQV9TU0xWMjNfUEFE''@;'; put 'put ''RElORzoyLFJTQV9OT19QQURESU5HOjMsUlNBX1BLQ1MxX09BRVBfUEFERElORzo0LFJTQV9YOTMxX1BBRERJTkc6NSxSU0FfUEtDUzFfUFNTX1BBRERJTkc6NixQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQ6MixQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRDo0LFBPSU5UX0NPTlZF''@;'; put 'put ''UlNJT05fSFlCUklEOjZ9fSw1MDU2OihVLFEsWik9Pnt2YXIgaWU9Wig4NzY0KS5CdWZmZXI7Y29uc3R7VHJhbnNmb3JtOmxlfT1aKDI4MzApLFk9aWUuZnJvbShbMjM5LDE4NywxOTFdKTtjbGFzcyBXIGV4dGVuZHMgbGV7Y29uc3RydWN0b3IoRWU9e30pe3N1cGVyKHBzKHt3cml0YWJsZU9i''@;'; put 'put ''amVjdE1vZGU6ITB9LEVlKSk7Y29uc3QgaGU9e307bGV0IE87Zm9yKGxldCB6IGluIEVlKWhlW0ooeildPUVlW3pdO2lmKE89dGhpcy5ub3JtYWxpemUoaGUpKXRocm93IE87c3dpdGNoKGhlLnJlY29yZF9kZWxpbWl0ZXIpe2Nhc2UiYXV0byI6aGUucmVjb3JkX2RlbGltaXRlcj1udWxsO2Jy''@;'; put 'put ''ZWFrO2Nhc2UidW5peCI6aGUucmVjb3JkX2RlbGltaXRlcj0iXG4iO2JyZWFrO2Nhc2UibWFjIjpoZS5yZWNvcmRfZGVsaW1pdGVyPSJcciI7YnJlYWs7Y2FzZSJ3aW5kb3dzIjpoZS5yZWNvcmRfZGVsaW1pdGVyPSJcclxuIjticmVhaztjYXNlImFzY2lpIjpoZS5yZWNvcmRfZGVsaW1pdGVy''@;'; put 'put ''PSJceDFlIjticmVhaztjYXNlInVuaWNvZGUiOmhlLnJlY29yZF9kZWxpbWl0ZXI9Ilx1MjAyOCJ9dGhpcy5vcHRpb25zPWhlLHRoaXMuc3RhdGU9e3N0b3A6ITF9LHRoaXMuaW5mbz17cmVjb3JkczowfX1ub3JtYWxpemUoRWUpe2lmKG51bGw9PUVlLmJvbXx8ITE9PT1FZS5ib20pRWUuYm9t''@;'; put 'put ''PSExO2Vsc2UgaWYoITAhPT1FZS5ib20pcmV0dXJuIG5ldyBlZSgiQ1NWX09QVElPTl9CT09MRUFOX0lOVkFMSURfVFlQRSIsWyJvcHRpb24gYGJvbWAgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBib29sZWFuIHZhbHVlLCIsYGdvdCAke0pTT04uc3RyaW5naWZ5KEVlLmJvbSl9YF0pO2lm''@;'; put 'put ''KG51bGw9PUVlLmRlbGltaXRlcilFZS5kZWxpbWl0ZXI9IiwiO2Vsc2UgaWYoaWUuaXNCdWZmZXIoRWUuZGVsaW1pdGVyKSlFZS5kZWxpbWl0ZXI9RWUuZGVsaW1pdGVyLnRvU3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIEVlLmRlbGltaXRlcilyZXR1cm4gbmV3IGVlKCJDU1Zf''@;'; put 'put ''T1BUSU9OX0RFTElNSVRFUl9JTlZBTElEX1RZUEUiLFsib3B0aW9uIGBkZWxpbWl0ZXJgIG11c3QgYmUgYSBidWZmZXIgb3IgYSBzdHJpbmcsIixgZ290ICR7SlNPTi5zdHJpbmdpZnkoRWUuZGVsaW1pdGVyKX1gXSk7aWYobnVsbD09RWUucXVvdGUpRWUucXVvdGU9JyInO2Vsc2UgaWYoITA9''@;'; put 'put ''PT1FZS5xdW90ZSlFZS5xdW90ZT0nIic7ZWxzZSBpZighMT09PUVlLnF1b3RlKUVlLnF1b3RlPSIiO2Vsc2UgaWYoaWUuaXNCdWZmZXIoRWUucXVvdGUpKUVlLnF1b3RlPUVlLnF1b3RlLnRvU3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIEVlLnF1b3RlKXJldHVybiBuZXcgZWUo''@;'; put 'put ''IkNTVl9PUFRJT05fUVVPVEVfSU5WQUxJRF9UWVBFIixbIm9wdGlvbiBgcXVvdGVgIG11c3QgYmUgYSBib29sZWFuLCBhIGJ1ZmZlciBvciBhIHN0cmluZywiLGBnb3QgJHtKU09OLnN0cmluZ2lmeShFZS5xdW90ZSl9YF0pO2lmKG51bGwhPUVlLnF1b3RlZHx8KEVlLnF1b3RlZD0hMSksbnVs''@;'; put 'put ''bCE9RWUucXVvdGVkX2VtcHR5fHwoRWUucXVvdGVkX2VtcHR5PXZvaWQgMCksbnVsbD09RWUucXVvdGVkX21hdGNofHwhMT09PUVlLnF1b3RlZF9tYXRjaD9FZS5xdW90ZWRfbWF0Y2g9bnVsbDpBcnJheS5pc0FycmF5KEVlLnF1b3RlZF9tYXRjaCl8fChFZS5xdW90ZWRfbWF0Y2g9W0VlLnF1''@;'; put 'put ''b3RlZF9tYXRjaF0pLEVlLnF1b3RlZF9tYXRjaClmb3IobGV0IGhlIG9mIEVlLnF1b3RlZF9tYXRjaCl7Y29uc3QgTz1oZSBpbnN0YW5jZW9mIFJlZ0V4cDtpZigic3RyaW5nIiE9dHlwZW9mIGhlJiYhTylyZXR1cm4gRXJyb3IoYEludmFsaWQgT3B0aW9uOiBxdW90ZWRfbWF0Y2ggbXVzdCBi''@;'; put 'put ''ZSBhIHN0cmluZyBvciBhIHJlZ2V4LCBnb3QgJHtKU09OLnN0cmluZ2lmeShoZSl9YCl9aWYobnVsbCE9RWUucXVvdGVkX3N0cmluZ3x8KEVlLnF1b3RlZF9zdHJpbmc9ITEpLG51bGwhPUVlLmVvZnx8KEVlLmVvZj0hMCksbnVsbD09RWUuZXNjYXBlKUVlLmVzY2FwZT0nIic7ZWxzZSBpZihp''@;'; put 'put ''ZS5pc0J1ZmZlcihFZS5lc2NhcGUpKUVlLmVzY2FwZT1FZS5lc2NhcGUudG9TdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgRWUuZXNjYXBlKXJldHVybiBFcnJvcihgSW52YWxpZCBPcHRpb246IGVzY2FwZSBtdXN0IGJlIGEgYnVmZmVyIG9yIGEgc3RyaW5nLCBnb3QgJHtKU09O''@;'; put 'put ''LnN0cmluZ2lmeShFZS5lc2NhcGUpfWApO2lmKEVlLmVzY2FwZS5sZW5ndGg+MSlyZXR1cm4gRXJyb3IoYEludmFsaWQgT3B0aW9uOiBlc2NhcGUgbXVzdCBiZSBvbmUgY2hhcmFjdGVyLCBnb3QgJHtFZS5lc2NhcGUubGVuZ3RofSBjaGFyYWN0ZXJzYCk7aWYobnVsbCE9RWUuaGVhZGVyfHwo''@;'; put 'put ''RWUuaGVhZGVyPSExKSxFZS5jb2x1bW5zPXRoaXMubm9ybWFsaXplX2NvbHVtbnMoRWUuY29sdW1ucyksbnVsbCE9RWUucXVvdGVkfHwoRWUucXVvdGVkPSExKSxudWxsIT1FZS5jYXN0fHwoRWUuY2FzdD17fSksbnVsbCE9RWUuY2FzdC5iaWdpbnR8fChFZS5jYXN0LmJpZ2ludD1oZT0+IiIr''@;'; put 'put ''aGUpLG51bGwhPUVlLmNhc3QuYm9vbGVhbnx8KEVlLmNhc3QuYm9vbGVhbj1oZT0+aGU/IjEiOiIiKSxudWxsIT1FZS5jYXN0LmRhdGV8fChFZS5jYXN0LmRhdGU9aGU9PiIiK2hlLmdldFRpbWUoKSksbnVsbCE9RWUuY2FzdC5udW1iZXJ8fChFZS5jYXN0Lm51bWJlcj1oZT0+IiIraGUpLG51''@;'; put 'put ''bGwhPUVlLmNhc3Qub2JqZWN0fHwoRWUuY2FzdC5vYmplY3Q9aGU9PkpTT04uc3RyaW5naWZ5KGhlKSksbnVsbCE9RWUuY2FzdC5zdHJpbmd8fChFZS5jYXN0LnN0cmluZz1mdW5jdGlvbihoZSl7cmV0dXJuIGhlfSksbnVsbD09RWUucmVjb3JkX2RlbGltaXRlcilFZS5yZWNvcmRfZGVsaW1p''@;'; put 'put ''dGVyPSJcbiI7ZWxzZSBpZihpZS5pc0J1ZmZlcihFZS5yZWNvcmRfZGVsaW1pdGVyKSlFZS5yZWNvcmRfZGVsaW1pdGVyPUVlLnJlY29yZF9kZWxpbWl0ZXIudG9TdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgRWUucmVjb3JkX2RlbGltaXRlcilyZXR1cm4gRXJyb3IoYEludmFs''@;'; put 'put ''aWQgT3B0aW9uOiByZWNvcmRfZGVsaW1pdGVyIG11c3QgYmUgYSBidWZmZXIgb3IgYSBzdHJpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KEVlLnJlY29yZF9kZWxpbWl0ZXIpfWApfV90cmFuc2Zvcm0oRWUsaGUsTyl7aWYoITA9PT10aGlzLnN0YXRlLnN0b3ApcmV0dXJuO2lmKCFBcnJheS5p''@;'; put 'put ''c0FycmF5KEVlKSYmIm9iamVjdCIhPXR5cGVvZiBFZSlyZXR1cm4gdGhpcy5zdGF0ZS5zdG9wPSEwLE8oRXJyb3IoYEludmFsaWQgUmVjb3JkOiBleHBlY3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBnb3QgJHtKU09OLnN0cmluZ2lmeShFZSl9YCkpO2lmKDA9PT10aGlzLmluZm8ucmVjb3Jk''@;'; put 'put ''cylpZihBcnJheS5pc0FycmF5KEVlKSl7aWYoITA9PT10aGlzLm9wdGlvbnMuaGVhZGVyJiYhdGhpcy5vcHRpb25zLmNvbHVtbnMpcmV0dXJuIHRoaXMuc3RhdGUuc3RvcD0hMCxPKEVycm9yKCJVbmRpc2NvdmVyYWJsZSBDb2x1bW5zOiBoZWFkZXIgb3B0aW9uIHJlcXVpcmVzIGNvbHVtbiBv''@;'; put 'put ''cHRpb24gb3Igb2JqZWN0IHJlY29yZHMiKSl9ZWxzZSBudWxsIT10aGlzLm9wdGlvbnMuY29sdW1uc3x8KHRoaXMub3B0aW9ucy5jb2x1bW5zPXRoaXMubm9ybWFsaXplX2NvbHVtbnMoT2JqZWN0LmtleXMoRWUpKSk7MD09PXRoaXMuaW5mby5yZWNvcmRzJiYodGhpcy5ib20oKSx0aGlzLmhl''@;'; put 'put ''YWRlcnMoKSk7dHJ5e3RoaXMuZW1pdCgicmVjb3JkIixFZSx0aGlzLmluZm8ucmVjb3Jkcyl9Y2F0Y2gobmUpe3JldHVybiB0aGlzLnN0YXRlLnN0b3A9ITAsdGhpcy5lbWl0KCJlcnJvciIsbmUpfWxldCB6O2lmKHRoaXMub3B0aW9ucy5lb2Ype2lmKHo9dGhpcy5zdHJpbmdpZnkoRWUpLHZv''@;'; put 'put ''aWQgMD09PXopcmV0dXJuO3orPXRoaXMub3B0aW9ucy5yZWNvcmRfZGVsaW1pdGVyfWVsc2V7aWYoej10aGlzLnN0cmluZ2lmeShFZSksdm9pZCAwPT09eilyZXR1cm47KHRoaXMub3B0aW9ucy5oZWFkZXJ8fHRoaXMuaW5mby5yZWNvcmRzKSYmKHo9dGhpcy5vcHRpb25zLnJlY29yZF9kZWxp''@;'; put 'put ''bWl0ZXIreil9dGhpcy5pbmZvLnJlY29yZHMrKyx0aGlzLnB1c2goeiksTygpfV9mbHVzaChFZSl7MD09PXRoaXMuaW5mby5yZWNvcmRzJiYodGhpcy5ib20oKSx0aGlzLmhlYWRlcnMoKSksRWUoKX1zdHJpbmdpZnkoRWUsaGU9ITEpe2lmKCJvYmplY3QiIT10eXBlb2YgRWUpcmV0dXJuIEVl''@;'; put 'put ''O2NvbnN0e2NvbHVtbnM6T309dGhpcy5vcHRpb25zLG5lPVtdO2lmKEFycmF5LmlzQXJyYXkoRWUpKXtPJiZFZS5zcGxpY2UoTy5sZW5ndGgpO2ZvcihsZXQgeD0wO3g8RWUubGVuZ3RoO3grKyl7Y29uc3QgUD1FZVt4XSxbVixUXT10aGlzLl9fY2FzdChQLHtpbmRleDp4LGNvbHVtbjp4LHJl''@;'; put 'put ''Y29yZHM6dGhpcy5pbmZvLnJlY29yZHMsaGVhZGVyOmhlfSk7aWYoVilyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixWKTtuZVt4XT1bVCxQXX19ZWxzZSBpZihPKWZvcihsZXQgeD0wO3g8Ty5sZW5ndGg7eCsrKXtjb25zdCBQPUllKEVlLE9beF0ua2V5KSxbVixUXT10aGlzLl9fY2Fz''@;'; put 'put ''dChQLHtpbmRleDp4LGNvbHVtbjpPW3hdLmtleSxyZWNvcmRzOnRoaXMuaW5mby5yZWNvcmRzLGhlYWRlcjpoZX0pO2lmKFYpcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsVik7bmVbeF09W1QsUF19ZWxzZSBmb3IobGV0IHggb2YgRWUpe2NvbnN0IFA9RWVbeF0sW1YsVF09dGhpcy5f''@;'; put 'put ''X2Nhc3QoUCx7aW5kZXg6aSxjb2x1bW46T1tpXS5rZXkscmVjb3Jkczp0aGlzLmluZm8ucmVjb3JkcyxoZWFkZXI6aGV9KTtpZihWKXJldHVybiB2b2lkIHRoaXMuZW1pdCgiZXJyb3IiLFYpO25lLnB1c2goW1QsUF0pfWxldCB0ZT0iIjtmb3IobGV0IHg9MDt4PG5lLmxlbmd0aDt4Kyspe2xl''@;'; put 'put ''dCBQLFYsW1QsU109bmVbeF07aWYoInN0cmluZyI9PXR5cGVvZiBUKVA9dGhpcy5vcHRpb25zO2Vsc2UgaWYocShUKSl7aWYoUD1ULFQ9UC52YWx1ZSxkZWxldGUgUC52YWx1ZSwic3RyaW5nIiE9dHlwZW9mIFQmJm51bGwhPVQpcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsRXJyb3Io''@;'; put 'put ''YEludmFsaWQgQ2FzdGluZyBWYWx1ZTogcmV0dXJuZWQgdmFsdWUgbXVzdCByZXR1cm4gYSBzdHJpbmcsIG51bGwgb3IgdW5kZWZpbmVkLCBnb3QgJHtKU09OLnN0cmluZ2lmeShUKX1gKSk7aWYoUD1wcyhwcyh7fSx0aGlzLm9wdGlvbnMpLFApLFY9dGhpcy5ub3JtYWxpemUoUCkpcmV0dXJu''@;'; put 'put ''IHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsVil9ZWxzZXtpZihudWxsIT1UKXJldHVybiB2b2lkIHRoaXMuZW1pdCgiZXJyb3IiLEVycm9yKGBJbnZhbGlkIENhc3RpbmcgVmFsdWU6IHJldHVybmVkIHZhbHVlIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBhbiBvYmplY3QsIG51bGwgb3IgdW5kZWZp''@;'; put 'put ''bmVkLCBnb3QgJHtKU09OLnN0cmluZ2lmeShUKX1gKSk7UD10aGlzLm9wdGlvbnN9Y29uc3R7ZGVsaW1pdGVyOkYsZXNjYXBlOnllLHF1b3RlOkNlLHF1b3RlZDpEZSxxdW90ZWRfZW1wdHk6UGUscXVvdGVkX3N0cmluZzpRZSxxdW90ZWRfbWF0Y2g6JGUscmVjb3JkX2RlbGltaXRlcjpndH09''@;'; put 'put ''UDtpZihUKXtpZigic3RyaW5nIiE9dHlwZW9mIFQpcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLEVycm9yKGBGb3JtYXR0ZXIgbXVzdCByZXR1cm4gYSBzdHJpbmcsIG51bGwgb3IgdW5kZWZpbmVkLCBnb3QgJHtKU09OLnN0cmluZ2lmeShUKX1gKSksbnVsbDtjb25zdCB5dD1GLmxlbmd0aCYm''@;'; put 'put ''VC5pbmRleE9mKEYpPj0wLHB0PSIiIT09Q2UmJlQuaW5kZXhPZihDZSk+PTAsbXQ9VC5pbmRleE9mKHllKT49MCYmeWUhPT1DZSx2dD1ULmluZGV4T2YoZ3QpPj0wLGZ0PVFlJiYic3RyaW5nIj09dHlwZW9mIFM7bGV0IEZ0PSRlJiYkZS5maWx0ZXIoX3Q9PiJzdHJpbmciPT10eXBlb2YgX3Q/''@;'; put 'put ''LTEhPT1ULmluZGV4T2YoX3QpOl90LnRlc3QoVCkpO0Z0PUZ0JiZGdC5sZW5ndGg+MDtjb25zdCBvbj0hMD09PXB0fHx5dHx8dnR8fERlfHxmdHx8RnQ7aWYoITA9PT1vbiYmITA9PT1tdCl7Y29uc3QgX3Q9IlxcIj09PXllP25ldyBSZWdFeHAoeWUreWUsImciKTpuZXcgUmVnRXhwKHllLCJn''@;'; put 'put ''Iik7VD1ULnJlcGxhY2UoX3QseWUreWUpfWlmKCEwPT09cHQpe2NvbnN0IF90PW5ldyBSZWdFeHAoQ2UsImciKTtUPVQucmVwbGFjZShfdCx5ZStDZSl9ITA9PT1vbiYmKFQ9Q2UrVCtDZSksdGUrPVR9ZWxzZSghMD09PVBlfHwiIj09PVMmJiEwPT09UWUmJiExIT09UGUpJiYodGUrPUNlK0Nl''@;'; put 'put ''KTt4IT09bmUubGVuZ3RoLTEmJih0ZSs9Ril9cmV0dXJuIHRlfWJvbSgpeyEwPT09dGhpcy5vcHRpb25zLmJvbSYmdGhpcy5wdXNoKFkpfWhlYWRlcnMoKXtpZighMT09PXRoaXMub3B0aW9ucy5oZWFkZXJ8fHZvaWQgMD09PXRoaXMub3B0aW9ucy5jb2x1bW5zKXJldHVybjtsZXQgRWU9dGhp''@;'; put 'put ''cy5vcHRpb25zLmNvbHVtbnMubWFwKGhlPT5oZS5oZWFkZXIpO0VlPXRoaXMub3B0aW9ucy5lb2Y/dGhpcy5zdHJpbmdpZnkoRWUsITApK3RoaXMub3B0aW9ucy5yZWNvcmRfZGVsaW1pdGVyOnRoaXMuc3RyaW5naWZ5KEVlKSx0aGlzLnB1c2goRWUpfV9fY2FzdChFZSxoZSl7Y29uc3QgTz10''@;'; put 'put ''eXBlb2YgRWU7dHJ5e3JldHVybiJzdHJpbmciPT09Tz9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0LnN0cmluZyhFZSxoZSldOiJiaWdpbnQiPT09Tz9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0LmJpZ2ludChFZSxoZSldOiJudW1iZXIiPT09Tz9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0''@;'; put 'put ''Lm51bWJlcihFZSxoZSldOiJib29sZWFuIj09PU8/W3ZvaWQgMCx0aGlzLm9wdGlvbnMuY2FzdC5ib29sZWFuKEVlLGhlKV06RWUgaW5zdGFuY2VvZiBEYXRlP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3QuZGF0ZShFZSxoZSldOiJvYmplY3QiPT09TyYmbnVsbCE9PUVlP1t2b2lkIDAsdGhp''@;'; put 'put ''cy5vcHRpb25zLmNhc3Qub2JqZWN0KEVlLGhlKV06W3ZvaWQgMCxFZSxFZV19Y2F0Y2goeil7cmV0dXJuW3pdfX1ub3JtYWxpemVfY29sdW1ucyhFZSl7aWYobnVsbCE9RWUpe2lmKCJvYmplY3QiIT10eXBlb2YgRWUpdGhyb3cgRXJyb3IoJ0ludmFsaWQgb3B0aW9uICJjb2x1bW5zIjogZXhw''@;'; put 'put ''ZWN0IGFuIGFycmF5IG9yIGFuIG9iamVjdCcpO2lmKEFycmF5LmlzQXJyYXkoRWUpKXtjb25zdCBoZT1bXTtmb3IobGV0IE8gb2YgRWUpaWYoInN0cmluZyI9PXR5cGVvZiBPKWhlLnB1c2goe2tleTpPLGhlYWRlcjpPfSk7ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIE98fHZvaWQgMD09PU98''@;'; put 'put ''fEFycmF5LmlzQXJyYXkoTykpdGhyb3cgRXJyb3IoIkludmFsaWQgY29sdW1uIGRlZmluaXRpb246IGV4cGVjdCBhIHN0cmluZyBvciBhbiBvYmplY3QiKTtpZighTy5rZXkpdGhyb3cgRXJyb3IoJ0ludmFsaWQgY29sdW1uIGRlZmluaXRpb246IHByb3BlcnR5ICJrZXkiIGlzIHJlcXVpcmVk''@;'; put 'put ''Jyk7dm9pZCAwPT09Ty5oZWFkZXImJihPLmhlYWRlcj1PLmtleSksaGUucHVzaChPKX1FZT1oZX1lbHNle2NvbnN0IGhlPVtdO2ZvcihsZXQgTyBpbiBFZSloZS5wdXNoKHtrZXk6TyxoZWFkZXI6RWVbT119KTtFZT1oZX1yZXR1cm4gRWV9fX1jb25zdCBOPWZ1bmN0aW9uKCl7bGV0IFRlLEVl''@;'; put 'put ''LGhlO2ZvcihsZXQgeiBpbiBhcmd1bWVudHMpe2NvbnN0IG5lPWFyZ3VtZW50c1t6XSx0ZT10eXBlb2YgbmU7aWYodm9pZCAwPT09VGUmJkFycmF5LmlzQXJyYXkobmUpKVRlPW5lO2Vsc2UgaWYodm9pZCAwPT09RWUmJnEobmUpKUVlPW5lO2Vsc2V7aWYodm9pZCAwIT09aGV8fCJmdW5jdGlv''@;'; put 'put ''biIhPT10ZSl0aHJvdyBuZXcgZWUoIkNTVl9JTlZBTElEX0FSR1VNRU5UIixbIkludmFsaWQgYXJndW1lbnQ6IixgZ290ICR7SlNPTi5zdHJpbmdpZnkobmUpfSBhdCBpbmRleCAke3p9YF0pO2hlPW5lfX1jb25zdCBPPW5ldyBXKEVlKTtpZihoZSl7Y29uc3Qgej1bXTtPLm9uKCJyZWFkYWJs''@;'; put 'put ''ZSIsZnVuY3Rpb24oKXtsZXQgbmU7Zm9yKDtudWxsIT09KG5lPXRoaXMucmVhZCgpKTspei5wdXNoKG5lKX0pLE8ub24oImVycm9yIixmdW5jdGlvbihuZSl7aGUobmUpfSksTy5vbigiZW5kIixmdW5jdGlvbigpe2hlKHZvaWQgMCx6LmpvaW4oIiIpKX0pfWlmKHZvaWQgMCE9PVRlKWlmKCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBzZXRJbW1lZGlhdGUpc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCl7Zm9yKGxldCB6IG9mIFRlKU8ud3JpdGUoeik7Ty5lbmQoKX0pO2Vsc2V7Zm9yKGxldCB6IG9mIFRlKU8ud3JpdGUoeik7Ty5lbmQoKX1yZXR1cm4gT307Y2xhc3MgZWUgZXh0ZW5kcyBFcnJvcntj''@;'; put 'put ''b25zdHJ1Y3RvcihFZSxoZSwuLi5PKXtBcnJheS5pc0FycmF5KGhlKSYmKGhlPWhlLmpvaW4oIiAiKSksc3VwZXIoaGUpLHZvaWQgMCE9PUVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGVlKSx0aGlzLmNvZGU9RWU7Zm9yKGNvbnN0IHogb2Yg''@;'; put 'put ''Tylmb3IoY29uc3QgbmUgaW4geil7Y29uc3QgdGU9eltuZV07dGhpc1tuZV09aWUuaXNCdWZmZXIodGUpP3RlLnRvU3RyaW5nKCk6bnVsbD09dGU/dGU6SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0ZSkpfX19Ti5TdHJpbmdpZmllcj1XLE4uQ3N2RXJyb3I9ZWUsVS5leHBvcnRzPU47Y29u''@;'; put 'put ''c3QgcT1mdW5jdGlvbihUZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBUZSYmbnVsbCE9PVRlJiYhQXJyYXkuaXNBcnJheShUZSl9LEo9ZnVuY3Rpb24oVGUpe3JldHVybiBUZS5yZXBsYWNlKC8oW0EtWl0pL2csZnVuY3Rpb24oRWUsaGUpe3JldHVybiJfIitoZS50b0xvd2VyQ2FzZSgpfSl9''@;'; put 'put ''LHNlPSIuIi5jaGFyQ29kZUF0KDApLGFlPS9cXChcXCk/L2csZmU9UmVnRXhwKCJbXi5bXFxdXSt8XFxbKD86KFteXCInXVteW10qKXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKSIsImciKSxkZT0v''@;'; put 'put ''XC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyx2ZT0vXlx3KiQvLEFlPWZ1bmN0aW9uKFRlKXtjb25zdCBFZT10eXBlb2YgVGU7cmV0dXJuInN5bWJvbCI9PT1FZXx8Im9iamVjdCI9PT1FZSYmVGUmJiJbb2JqZWN0IFN5bWJvbF0iPT09T2JqZWN0LnBy''@;'; put 'put ''b3RvdHlwZS50b1N0cmluZy5jYWxsKFRlKX0sU2U9ZnVuY3Rpb24oVGUpe2lmKCJzdHJpbmciPT10eXBlb2YgVGV8fEFlKFRlKSlyZXR1cm4gVGU7Y29uc3QgRWU9YCR7VGV9YDtyZXR1cm4iMCI9PUVlJiYxL1RlPT0tSU5GSU5JVFk/Ii0wIjpFZX0sSWU9ZnVuY3Rpb24oVGUsRWUpe2xldCBo''@;'; put 'put ''ZT0wO2NvbnN0IE89KEVlPWZ1bmN0aW9uKFRlLEVlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShUZSk/VGU6ZnVuY3Rpb24oaGUsTyl7aWYoQXJyYXkuaXNBcnJheShoZSkpcmV0dXJuITE7Y29uc3Qgej10eXBlb2YgaGU7cmV0dXJuISgibnVtYmVyIiE9PXomJiJzeW1ib2wiIT09eiYmImJvb2xl''@;'; put 'put ''YW4iIT09eiYmaGUmJiFBZShoZSkpfHx2ZS50ZXN0KGhlKXx8IWRlLnRlc3QoaGUpfHxudWxsIT1PJiZoZSBpbiBPYmplY3QoTyl9KFRlLEVlKT9bVGVdOmZ1bmN0aW9uKGhlKXtjb25zdCBPPVtdO3JldHVybiBoZS5jaGFyQ29kZUF0KDApPT09c2UmJk8ucHVzaCgiIiksaGUucmVwbGFjZShm''@;'; put 'put ''ZSxmdW5jdGlvbih6LG5lLHRlLHgpe2xldCBQPXo7dGU/UD14LnJlcGxhY2UoYWUsIiQxIik6bmUmJihQPW5lLnRyaW0oKSksTy5wdXNoKFApfSksT30oVGUpfShFZSxUZSkpLmxlbmd0aDtmb3IoO251bGwhPVRlJiZoZTxPOylUZT1UZVtTZShFZVtoZSsrXSldO3JldHVybiBoZSYmaGU9PT1P''@;'; put 'put ''P1RlOnZvaWQgMH19LDc1NjU6KFUsUSxaKT0+e3ZhciBpZT1aKDg3NjQpLkJ1ZmZlcjtjb25zdCBsZT1aKDUwNTYpLHtTdHJpbmdEZWNvZGVyOll9PVooMjU1Myk7VS5leHBvcnRzPWZ1bmN0aW9uKFcsTj17fSl7Y29uc3QgZWU9W107ZnVuY3Rpb24gcShzZSl7c2UmJmVlLnB1c2goc2UudG9T''@;'; put 'put ''dHJpbmcoKSl9aWUuaXNCdWZmZXIoVykmJihXPShuZXcgWSkud3JpdGUoVykpO2xldCBKPW5ldyBsZS5TdHJpbmdpZmllcihOKTtKLm9uKCJkYXRhIixxKTtmb3IobGV0IHNlIG9mIFcpSi53cml0ZShzZSk7cmV0dXJuIEouZW5kKCksSi5vZmYoImRhdGEiLHEpLGVlLmpvaW4oIiIpfX0sNDI4''@;'; put 'put ''OTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDIyMTUpLGxlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sKCJmb28iKSxZPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsVz1BcnJheS5wcm90b3R5cGUuY29uY2F0LE49T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5LGVlPVooMTA0NCkoKSxxPU4mJmVlLEo9ZnVuY3Rpb24oYWUsZmUsZGUsdmUpe3ZhciBBZTsoIShmZSBpbiBhZSl8fCJmdW5jdGlvbiI9PXR5cGVvZihBZT12ZSkmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1ZLmNhbGwoQWUpJiZ2ZSgpKSYmKHE/TihhZSxmZSx7Y29uZmln''@;'; put 'put ''dXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6ZGUsd3JpdGFibGU6ITB9KTphZVtmZV09ZGUpfSxzZT1mdW5jdGlvbihhZSxmZSl7dmFyIGRlPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06e30sdmU9aWUoZmUpO2xlJiYodmU9Vy5jYWxsKHZlLE9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eVN5bWJvbHMoZmUpKSk7Zm9yKHZhciBBZT0wO0FlPHZlLmxlbmd0aDtBZSs9MSlKKGFlLHZlW0FlXSxmZVt2ZVtBZV1dLGRlW3ZlW0FlXV0pfTtzZS5zdXBwb3J0c0Rlc2NyaXB0b3JzPSEhcSxVLmV4cG9ydHM9c2V9LDUyNTE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0IjtRLnV0aWxzPVoo''@;'; put 'put ''MTI3OCksUS5DaXBoZXI9Wig1NzU2KSxRLkRFUz1aKDMyNyksUS5DQkM9Wig5MDUxKSxRLkVERT1aKDY1MSl9LDkwNTE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig5NzQ2KSxsZT1aKDU3MTcpLFk9e307ZnVuY3Rpb24gVyhOKXtpZS5lcXVhbChOLmxlbmd0aCw4LCJJbnZhbGlk''@;'; put 'put ''IElWIGxlbmd0aCIpLHRoaXMuaXY9bmV3IEFycmF5KDgpO2Zvcih2YXIgZWU9MDtlZTx0aGlzLml2Lmxlbmd0aDtlZSsrKXRoaXMuaXZbZWVdPU5bZWVdfVEuaW5zdGFudGlhdGU9ZnVuY3Rpb24oTil7ZnVuY3Rpb24gZWUoYWUpe04uY2FsbCh0aGlzLGFlKSx0aGlzLl9jYmNJbml0KCl9bGUo''@;'; put 'put ''ZWUsTik7Zm9yKHZhciBxPU9iamVjdC5rZXlzKFkpLEo9MDtKPHEubGVuZ3RoO0orKyl7dmFyIHNlPXFbSl07ZWUucHJvdG90eXBlW3NlXT1ZW3NlXX1yZXR1cm4gZWUuY3JlYXRlPWZ1bmN0aW9uKGFlKXtyZXR1cm4gbmV3IGVlKGFlKX0sZWV9LFkuX2NiY0luaXQ9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''Tj1uZXcgVyh0aGlzLm9wdGlvbnMuaXYpO3RoaXMuX2NiY1N0YXRlPU59LFkuX3VwZGF0ZT1mdW5jdGlvbihOLGVlLHEsSil7dmFyIGFlPXRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZSxmZT10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2''@;'; put 'put ''YXIgZGU9MDtkZTx0aGlzLmJsb2NrU2l6ZTtkZSsrKWZlW2RlXV49TltlZStkZV07Zm9yKGFlLl91cGRhdGUuY2FsbCh0aGlzLGZlLDAscSxKKSxkZT0wO2RlPHRoaXMuYmxvY2tTaXplO2RlKyspZmVbZGVdPXFbSitkZV19ZWxzZXtmb3IoYWUuX3VwZGF0ZS5jYWxsKHRoaXMsTixlZSxxLEop''@;'; put 'put ''LGRlPTA7ZGU8dGhpcy5ibG9ja1NpemU7ZGUrKylxW0orZGVdXj1mZVtkZV07Zm9yKGRlPTA7ZGU8dGhpcy5ibG9ja1NpemU7ZGUrKylmZVtkZV09TltlZStkZV19fX0sNTc1NjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDk3NDYpO2Z1bmN0aW9uIGxlKFkpe3RoaXMub3B0aW9u''@;'; put 'put ''cz1ZLHRoaXMudHlwZT10aGlzLm9wdGlvbnMudHlwZSx0aGlzLmJsb2NrU2l6ZT04LHRoaXMuX2luaXQoKSx0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpLHRoaXMuYnVmZmVyT2ZmPTB9VS5leHBvcnRzPWxlLGxlLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe30sbGUu''@;'; put 'put ''cHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihZKXtyZXR1cm4gMD09PVkubGVuZ3RoP1tdOiJkZWNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl91cGRhdGVEZWNyeXB0KFkpOnRoaXMuX3VwZGF0ZUVuY3J5cHQoWSl9LGxlLnByb3RvdHlwZS5fYnVmZmVyPWZ1bmN0aW9uKFksVyl7Zm9yKHZhciBO''@;'; put 'put ''PU1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aC10aGlzLmJ1ZmZlck9mZixZLmxlbmd0aC1XKSxlZT0wO2VlPE47ZWUrKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZitlZV09WVtXK2VlXTtyZXR1cm4gdGhpcy5idWZmZXJPZmYrPU4sTn0sbGUucHJvdG90eXBlLl9mbHVzaEJ1ZmZlcj1m''@;'; put 'put ''dW5jdGlvbihZLFcpe3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxZLFcpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5ibG9ja1NpemV9LGxlLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdD1mdW5jdGlvbihZKXt2YXIgVz0wLE49MCxxPW5ldyBBcnJheSgoKHRoaXMuYnVmZmVyT2Zm''@;'; put 'put ''K1kubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZXwwKSp0aGlzLmJsb2NrU2l6ZSk7MCE9PXRoaXMuYnVmZmVyT2ZmJiYoVys9dGhpcy5fYnVmZmVyKFksVyksdGhpcy5idWZmZXJPZmY9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJihOKz10aGlzLl9mbHVzaEJ1ZmZlcihxLE4pKSk7Zm9yKHZhciBKPVku''@;'; put 'put ''bGVuZ3RoLShZLmxlbmd0aC1XKSV0aGlzLmJsb2NrU2l6ZTtXPEo7Vys9dGhpcy5ibG9ja1NpemUpdGhpcy5fdXBkYXRlKFksVyxxLE4pLE4rPXRoaXMuYmxvY2tTaXplO2Zvcig7VzxZLmxlbmd0aDtXKyssdGhpcy5idWZmZXJPZmYrKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl09WVtX''@;'; put 'put ''XTtyZXR1cm4gcX0sbGUucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0PWZ1bmN0aW9uKFkpe2Zvcih2YXIgVz0wLE49MCxlZT1NYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmK1kubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxxPW5ldyBBcnJheShlZSp0aGlzLmJsb2NrU2l6ZSk7ZWU+MDtlZS0t''@;'; put 'put ''KVcrPXRoaXMuX2J1ZmZlcihZLFcpLE4rPXRoaXMuX2ZsdXNoQnVmZmVyKHEsTik7cmV0dXJuIFcrPXRoaXMuX2J1ZmZlcihZLFcpLHF9LGxlLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbihZKXt2YXIgVyxOO3JldHVybiBZJiYoVz10aGlzLnVwZGF0ZShZKSksTj0iZW5jcnlwdCI9PT10aGlz''@;'; put 'put ''LnR5cGU/dGhpcy5fZmluYWxFbmNyeXB0KCk6dGhpcy5fZmluYWxEZWNyeXB0KCksVz9XLmNvbmNhdChOKTpOfSxsZS5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbihZLFcpe2lmKDA9PT1XKXJldHVybiExO2Zvcig7VzxZLmxlbmd0aDspWVtXKytdPTA7cmV0dXJuITB9LGxlLnByb3RvdHlwZS5f''@;'; put 'put ''ZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIFk9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsWSwwKSxZfSxsZS5wcm90b3R5cGUuX3Vu''@;'; put 'put ''cGFkPWZ1bmN0aW9uKFkpe3JldHVybiBZfSxsZS5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdD1mdW5jdGlvbigpe2llLmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLCJOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBZPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKFksMCksdGhpcy5fdW5wYWQoWSl9fSwzMjc6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig5NzQ2KSxsZT1aKDU3MTcpLFk9WigxMjc4KSxXPVooNTc1Nik7ZnVuY3Rpb24gTigpe3RoaXMudG1wPW5ldyBBcnJheSgyKSx0aGlzLmtleXM9''@;'; put 'put ''bnVsbH1mdW5jdGlvbiBlZShKKXtXLmNhbGwodGhpcyxKKTt2YXIgc2U9bmV3IE47dGhpcy5fZGVzU3RhdGU9c2UsdGhpcy5kZXJpdmVLZXlzKHNlLEoua2V5KX1sZShlZSxXKSxVLmV4cG9ydHM9ZWUsZWUuY3JlYXRlPWZ1bmN0aW9uKEope3JldHVybiBuZXcgZWUoSil9O3ZhciBxPVsxLDEs''@;'; put 'put ''MiwyLDIsMiwyLDIsMSwyLDIsMiwyLDIsMiwxXTtlZS5wcm90b3R5cGUuZGVyaXZlS2V5cz1mdW5jdGlvbihKLHNlKXtKLmtleXM9bmV3IEFycmF5KDMyKSxpZS5lcXVhbChzZS5sZW5ndGgsdGhpcy5ibG9ja1NpemUsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBhZT1ZLnJlYWRVSW50MzJC''@;'; put 'put ''RShzZSwwKSxmZT1ZLnJlYWRVSW50MzJCRShzZSw0KTtZLnBjMShhZSxmZSxKLnRtcCwwKSxhZT1KLnRtcFswXSxmZT1KLnRtcFsxXTtmb3IodmFyIGRlPTA7ZGU8Si5rZXlzLmxlbmd0aDtkZSs9Mil7dmFyIHZlPXFbZGU+Pj4xXTthZT1ZLnIyOHNobChhZSx2ZSksZmU9WS5yMjhzaGwoZmUs''@;'; put 'put ''dmUpLFkucGMyKGFlLGZlLEoua2V5cyxkZSl9fSxlZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihKLHNlLGFlLGZlKXt2YXIgZGU9dGhpcy5fZGVzU3RhdGUsdmU9WS5yZWFkVUludDMyQkUoSixzZSksQWU9WS5yZWFkVUludDMyQkUoSixzZSs0KTtZLmlwKHZlLEFlLGRlLnRtcCwwKSx2''@;'; put 'put ''ZT1kZS50bXBbMF0sQWU9ZGUudG1wWzFdLCJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9lbmNyeXB0KGRlLHZlLEFlLGRlLnRtcCwwKTp0aGlzLl9kZWNyeXB0KGRlLHZlLEFlLGRlLnRtcCwwKSxBZT1kZS50bXBbMV0sWS53cml0ZVVJbnQzMkJFKGFlLHZlPWRlLnRtcFswXSxmZSksWS53''@;'; put 'put ''cml0ZVVJbnQzMkJFKGFlLEFlLGZlKzQpfSxlZS5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbihKLHNlKXtmb3IodmFyIGFlPUoubGVuZ3RoLXNlLGZlPXNlO2ZlPEoubGVuZ3RoO2ZlKyspSltmZV09YWU7cmV0dXJuITB9LGVlLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oSil7Zm9yKHZhciBz''@;'; put 'put ''ZT1KW0oubGVuZ3RoLTFdLGFlPUoubGVuZ3RoLXNlO2FlPEoubGVuZ3RoO2FlKyspaWUuZXF1YWwoSlthZV0sc2UpO3JldHVybiBKLnNsaWNlKDAsSi5sZW5ndGgtc2UpfSxlZS5wcm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSl7Zm9yKHZhciB2ZT1zZSxBZT1hZSxr''@;'; put 'put ''ZT0wO2tlPEoua2V5cy5sZW5ndGg7a2UrPTIpe3ZhciBTZT1KLmtleXNba2VdLEllPUoua2V5c1trZSsxXTtZLmV4cGFuZChBZSxKLnRtcCwwKTt2YXIgVGU9WS5zdWJzdGl0dXRlKFNlXj1KLnRtcFswXSxJZV49Si50bXBbMV0pLEVlPUFlO0FlPSh2ZV5ZLnBlcm11dGUoVGUpKT4+PjAsdmU9''@;'; put 'put ''RWV9WS5yaXAoQWUsdmUsZmUsZGUpfSxlZS5wcm90b3R5cGUuX2RlY3J5cHQ9ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSl7Zm9yKHZhciB2ZT1hZSxBZT1zZSxrZT1KLmtleXMubGVuZ3RoLTI7a2U+PTA7a2UtPTIpe3ZhciBTZT1KLmtleXNba2VdLEllPUoua2V5c1trZSsxXTtZLmV4cGFuZCh2''@;'; put 'put ''ZSxKLnRtcCwwKTt2YXIgVGU9WS5zdWJzdGl0dXRlKFNlXj1KLnRtcFswXSxJZV49Si50bXBbMV0pLEVlPXZlO3ZlPShBZV5ZLnBlcm11dGUoVGUpKT4+PjAsQWU9RWV9WS5yaXAodmUsQWUsZmUsZGUpfX0sNjUxOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooOTc0NiksbGU9Wig1''@;'; put 'put ''NzE3KSxZPVooNTc1NiksVz1aKDMyNyk7ZnVuY3Rpb24gTihxLEope2llLmVxdWFsKEoubGVuZ3RoLDI0LCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgc2U9Si5zbGljZSgwLDgpLGFlPUouc2xpY2UoOCwxNiksZmU9Si5zbGljZSgxNiwyNCk7dGhpcy5jaXBoZXJzPSJlbmNyeXB0Ij09PXE/''@;'; put 'put ''W1cuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6c2V9KSxXLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5OmFlfSksVy5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpmZX0pXTpbVy5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpmZX0pLFcuY3JlYXRlKHt0eXBlOiJlbmNyeXB0Iixr''@;'; put 'put ''ZXk6YWV9KSxXLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5OnNlfSldfWZ1bmN0aW9uIGVlKHEpe1kuY2FsbCh0aGlzLHEpO3ZhciBKPW5ldyBOKHRoaXMudHlwZSx0aGlzLm9wdGlvbnMua2V5KTt0aGlzLl9lZGVTdGF0ZT1KfWxlKGVlLFkpLFUuZXhwb3J0cz1lZSxlZS5jcmVhdGU9ZnVu''@;'; put 'put ''Y3Rpb24ocSl7cmV0dXJuIG5ldyBlZShxKX0sZWUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24ocSxKLHNlLGFlKXt2YXIgZmU9dGhpcy5fZWRlU3RhdGU7ZmUuY2lwaGVyc1swXS5fdXBkYXRlKHEsSixzZSxhZSksZmUuY2lwaGVyc1sxXS5fdXBkYXRlKHNlLGFlLHNlLGFlKSxmZS5jaXBo''@;'; put 'put ''ZXJzWzJdLl91cGRhdGUoc2UsYWUsc2UsYWUpfSxlZS5wcm90b3R5cGUuX3BhZD1XLnByb3RvdHlwZS5fcGFkLGVlLnByb3RvdHlwZS5fdW5wYWQ9Vy5wcm90b3R5cGUuX3VucGFkfSwxMjc4OihVLFEpPT57InVzZSBzdHJpY3QiO1EucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKFksVyl7cmV0dXJu''@;'; put 'put ''KFlbMCtXXTw8MjR8WVsxK1ddPDwxNnxZWzIrV108PDh8WVszK1ddKT4+PjB9LFEud3JpdGVVSW50MzJCRT1mdW5jdGlvbihZLFcsTil7WVswK05dPVc+Pj4yNCxZWzErTl09Vz4+PjE2JjI1NSxZWzIrTl09Vz4+PjgmMjU1LFlbMytOXT0yNTUmV30sUS5pcD1mdW5jdGlvbihZLFcsTixlZSl7''@;'; put 'put ''Zm9yKHZhciBxPTAsSj0wLHNlPTY7c2U+PTA7c2UtPTIpe2Zvcih2YXIgYWU9MDthZTw9MjQ7YWUrPTgpcTw8PTEscXw9Vz4+PmFlK3NlJjE7Zm9yKGFlPTA7YWU8PTI0O2FlKz04KXE8PD0xLHF8PVk+Pj5hZStzZSYxfWZvcihzZT02O3NlPj0wO3NlLT0yKXtmb3IoYWU9MTthZTw9MjU7YWUr''@;'; put 'put ''PTgpSjw8PTEsSnw9Vz4+PmFlK3NlJjE7Zm9yKGFlPTE7YWU8PTI1O2FlKz04KUo8PD0xLEp8PVk+Pj5hZStzZSYxfU5bZWUrMF09cT4+PjAsTltlZSsxXT1KPj4+MH0sUS5yaXA9ZnVuY3Rpb24oWSxXLE4sZWUpe2Zvcih2YXIgcT0wLEo9MCxzZT0wO3NlPDQ7c2UrKylmb3IodmFyIGFlPTI0''@;'; put 'put ''O2FlPj0wO2FlLT04KXE8PD0xLHF8PVc+Pj5hZStzZSYxLHE8PD0xLHF8PVk+Pj5hZStzZSYxO2ZvcihzZT00O3NlPDg7c2UrKylmb3IoYWU9MjQ7YWU+PTA7YWUtPTgpSjw8PTEsSnw9Vz4+PmFlK3NlJjEsSjw8PTEsSnw9WT4+PmFlK3NlJjE7TltlZSswXT1xPj4+MCxOW2VlKzFdPUo+Pj4w''@;'; put 'put ''fSxRLnBjMT1mdW5jdGlvbihZLFcsTixlZSl7Zm9yKHZhciBxPTAsSj0wLHNlPTc7c2U+PTU7c2UtLSl7Zm9yKHZhciBhZT0wO2FlPD0yNDthZSs9OClxPDw9MSxxfD1XPj5hZStzZSYxO2ZvcihhZT0wO2FlPD0yNDthZSs9OClxPDw9MSxxfD1ZPj5hZStzZSYxfWZvcihhZT0wO2FlPD0yNDth''@;'; put 'put ''ZSs9OClxPDw9MSxxfD1XPj5hZStzZSYxO2ZvcihzZT0xO3NlPD0zO3NlKyspe2ZvcihhZT0wO2FlPD0yNDthZSs9OClKPDw9MSxKfD1XPj5hZStzZSYxO2ZvcihhZT0wO2FlPD0yNDthZSs9OClKPDw9MSxKfD1ZPj5hZStzZSYxfWZvcihhZT0wO2FlPD0yNDthZSs9OClKPDw9MSxKfD1ZPj5h''@;'; put 'put ''ZStzZSYxO05bZWUrMF09cT4+PjAsTltlZSsxXT1KPj4+MH0sUS5yMjhzaGw9ZnVuY3Rpb24oWSxXKXtyZXR1cm4gWTw8VyYyNjg0MzU0NTV8WT4+PjI4LVd9O3ZhciBaPVsxNCwxMSwxNyw0LDI3LDIzLDI1LDAsMTMsMjIsNywxOCw1LDksMTYsMjQsMiwyMCwxMiwyMSwxLDgsMTUsMjYsMTUs''@;'; put 'put ''NCwyNSwxOSw5LDEsMjYsMTYsNSwxMSwyMyw4LDEyLDcsMTcsMCwyMiwzLDEwLDE0LDYsMjAsMjcsMjRdO1EucGMyPWZ1bmN0aW9uKFksVyxOLGVlKXtmb3IodmFyIHE9MCxKPTAsc2U9Wi5sZW5ndGg+Pj4xLGFlPTA7YWU8c2U7YWUrKylxPDw9MSxxfD1ZPj4+WlthZV0mMTtmb3IoYWU9c2U7''@;'; put 'put ''YWU8Wi5sZW5ndGg7YWUrKylKPDw9MSxKfD1XPj4+WlthZV0mMTtOW2VlKzBdPXE+Pj4wLE5bZWUrMV09Sj4+PjB9LFEuZXhwYW5kPWZ1bmN0aW9uKFksVyxOKXt2YXIgZWU9MCxxPTA7ZWU9KDEmWSk8PDV8WT4+PjI3O2Zvcih2YXIgSj0yMztKPj0xNTtKLT00KWVlPDw9NixlZXw9WT4+Pkom''@;'; put 'put ''NjM7Zm9yKEo9MTE7Sj49MztKLT00KXF8PVk+Pj5KJjYzLHE8PD02O3F8PSgzMSZZKTw8MXxZPj4+MzEsV1tOKzBdPWVlPj4+MCxXW04rMV09cT4+PjB9O3ZhciBpZT1bMTQsMCw0LDE1LDEzLDcsMSw0LDIsMTQsMTUsMiwxMSwxMyw4LDEsMywxMCwxMCw2LDYsMTIsMTIsMTEsNSw5LDksNSww''@;'; put 'put ''LDMsNyw4LDQsMTUsMSwxMiwxNCw4LDgsMiwxMyw0LDYsOSwyLDEsMTEsNywxNSw1LDEyLDExLDksMyw3LDE0LDMsMTAsMTAsMCw1LDYsMCwxMywxNSwzLDEsMTMsOCw0LDE0LDcsNiwxNSwxMSwyLDMsOCw0LDE0LDksMTIsNywwLDIsMSwxMywxMCwxMiw2LDAsOSw1LDExLDEwLDUsMCwxMywx''@;'; put 'put ''NCw4LDcsMTAsMTEsMSwxMCwzLDQsMTUsMTMsNCwxLDIsNSwxMSw4LDYsMTIsNyw2LDEyLDksMCwzLDUsMiwxNCwxNSw5LDEwLDEzLDAsNyw5LDAsMTQsOSw2LDMsMyw0LDE1LDYsNSwxMCwxLDIsMTMsOCwxMiw1LDcsMTQsMTEsMTIsNCwxMSwyLDE1LDgsMSwxMywxLDYsMTAsNCwxMyw5LDAs''@;'; put 'put ''OCw2LDE1LDksMyw4LDAsNywxMSw0LDEsMTUsMiwxNCwxMiwzLDUsMTEsMTAsNSwxNCwyLDcsMTIsNywxMywxMyw4LDE0LDExLDMsNSwwLDYsNiwxNSw5LDAsMTAsMywxLDQsMiw3LDgsMiw1LDEyLDExLDEsMTIsMTAsNCwxNCwxNSw5LDEwLDMsNiwxNSw5LDAsMCw2LDEyLDEwLDExLDEsNywx''@;'; put 'put ''MywxMyw4LDE1LDksMSw0LDMsNSwxNCwxMSw1LDEyLDIsNyw4LDIsNCwxNCwyLDE0LDEyLDExLDQsMiwxLDEyLDcsNCwxMCw3LDExLDEzLDYsMSw4LDUsNSwwLDMsMTUsMTUsMTAsMTMsMywwLDksMTQsOCw5LDYsNCwxMSwyLDgsMSwxMiwxMSw3LDEwLDEsMTMsMTQsNywyLDgsMTMsMTUsNiw5''@;'; put 'put ''LDE1LDEyLDAsNSw5LDYsMTAsMyw0LDAsNSwxNCwzLDEyLDEwLDEsMTUsMTAsNCwxNSwyLDksNywyLDEyLDYsOSw4LDUsMCw2LDEzLDEsMywxMyw0LDE0LDE0LDAsNywxMSw1LDMsMTEsOCw5LDQsMTQsMywxNSwyLDUsMTIsMiw5LDgsNSwxMiwxNSwzLDEwLDcsMTEsMCwxNCw0LDEsMTAsNywx''@;'; put 'put ''LDYsMTMsMCwxMSw4LDYsMTMsNCwxMywxMSwwLDIsMTEsMTQsNywxNSw0LDAsOSw4LDEsMTMsMTAsMywxNCwxMiwzLDksNSw3LDEyLDUsMiwxMCwxNSw2LDgsMSw2LDEsNiw0LDExLDExLDEzLDEzLDgsMTIsMSwzLDQsNywxMCwxNCw3LDEwLDksMTUsNSw2LDAsOCwxNSwwLDE0LDUsMiw5LDMs''@;'; put 'put ''MiwxMiwxMywxLDIsMTUsOCwxMyw0LDgsNiwxMCwxNSwzLDExLDcsMSw0LDEwLDEyLDksNSwzLDYsMTQsMTEsNSwwLDAsMTQsMTIsOSw3LDIsNywyLDExLDEsNCwxNCwxLDcsOSw0LDEyLDEwLDE0LDgsMiwxMywwLDE1LDYsMTIsMTAsOSwxMywwLDE1LDMsMyw1LDUsNiw4LDExXTtRLnN1YnN0''@;'; put 'put ''aXR1dGU9ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE49MCxlZT0wO2VlPDQ7ZWUrKylOPDw9NCxOfD1pZVs2NCplZSsoWT4+PjE4LTYqZWUmNjMpXTtmb3IoZWU9MDtlZTw0O2VlKyspTjw8PTQsTnw9aWVbMjU2KzY0KmVlKyhXPj4+MTgtNiplZSY2MyldO3JldHVybiBOPj4+MH07dmFyIGxlPVsx''@;'; put 'put ''NiwyNSwxMiwxMSwzLDIwLDQsMTUsMzEsMTcsOSw2LDI3LDE0LDEsMjIsMzAsMjQsOCwxOCwwLDUsMjksMjMsMTMsMTksMiwyNiwxMCwyMSwyOCw3XTtRLnBlcm11dGU9ZnVuY3Rpb24oWSl7Zm9yKHZhciBXPTAsTj0wO048bGUubGVuZ3RoO04rKylXPDw9MSxXfD1ZPj4+bGVbTl0mMTtyZXR1''@;'; put 'put ''cm4gVz4+PjB9LFEucGFkU3BsaXQ9ZnVuY3Rpb24oWSxXLE4pe2Zvcih2YXIgZWU9WS50b1N0cmluZygyKTtlZS5sZW5ndGg8VzspZWU9IjAiK2VlO2Zvcih2YXIgcT1bXSxKPTA7SjxXO0orPU4pcS5wdXNoKGVlLnNsaWNlKEosSitOKSk7cmV0dXJuIHEuam9pbigiICIpfX0sMjYwNzooVSxR''@;'; put 'put ''LFopPT57dmFyIGllPVooODc2NCkuQnVmZmVyLGxlPVooMzU5MCksWT1aKDk3OTkpLFc9Wig3NDI2KSxOPXtiaW5hcnk6ITAsaGV4OiEwLGJhc2U2NDohMH07US5EaWZmaWVIZWxsbWFuR3JvdXA9US5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9US5nZXREaWZmaWVIZWxsbWFuPWZ1bmN0aW9u''@;'; put 'put ''KGVlKXt2YXIgcT1uZXcgaWUoWVtlZV0ucHJpbWUsImhleCIpLEo9bmV3IGllKFlbZWVdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyBXKHEsSil9LFEuY3JlYXRlRGlmZmllSGVsbG1hbj1RLkRpZmZpZUhlbGxtYW49ZnVuY3Rpb24gZWUocSxKLHNlLGFlKXtyZXR1cm4gaWUuaXNCdWZmZXIoSil8''@;'; put 'put ''fHZvaWQgMD09PU5bSl0/ZWUocSwiYmluYXJ5IixKLHNlKTooSj1KfHwiYmluYXJ5IixhZT1hZXx8ImJpbmFyeSIsc2U9c2V8fG5ldyBpZShbMl0pLGllLmlzQnVmZmVyKHNlKXx8KHNlPW5ldyBpZShzZSxhZSkpLCJudW1iZXIiPT10eXBlb2YgcT9uZXcgVyhsZShxLHNlKSxzZSwhMCk6KGll''@;'; put 'put ''LmlzQnVmZmVyKHEpfHwocT1uZXcgaWUocSxKKSksbmV3IFcocSxzZSwhMCkpKX19LDc0MjY6KFUsUSxaKT0+e3ZhciBpZT1aKDg3NjQpLkJ1ZmZlcixsZT1aKDM2MjApLFk9bmV3KFooMzA0NykpLFc9bmV3IGxlKDI0KSxOPW5ldyBsZSgxMSksZWU9bmV3IGxlKDEwKSxxPW5ldyBsZSgzKSxK''@;'; put 'put ''PW5ldyBsZSg3KSxzZT1aKDM1OTApLGFlPVooMTc5OCk7ZnVuY3Rpb24gZmUoU2UsSWUpe3JldHVybiBJZT1JZXx8InV0ZjgiLGllLmlzQnVmZmVyKFNlKXx8KFNlPW5ldyBpZShTZSxJZSkpLHRoaXMuX3B1Yj1uZXcgbGUoU2UpLHRoaXN9ZnVuY3Rpb24gZGUoU2UsSWUpe3JldHVybiBJZT1J''@;'; put 'put ''ZXx8InV0ZjgiLGllLmlzQnVmZmVyKFNlKXx8KFNlPW5ldyBpZShTZSxJZSkpLHRoaXMuX3ByaXY9bmV3IGxlKFNlKSx0aGlzfVUuZXhwb3J0cz1BZTt2YXIgdmU9e307ZnVuY3Rpb24gQWUoU2UsSWUsVGUpe3RoaXMuc2V0R2VuZXJhdG9yKEllKSx0aGlzLl9fcHJpbWU9bmV3IGxlKFNlKSx0''@;'; put 'put ''aGlzLl9wcmltZT1sZS5tb250KHRoaXMuX19wcmltZSksdGhpcy5fcHJpbWVMZW49U2UubGVuZ3RoLHRoaXMuX3B1Yj12b2lkIDAsdGhpcy5fcHJpdj12b2lkIDAsdGhpcy5fcHJpbWVDb2RlPXZvaWQgMCxUZT8odGhpcy5zZXRQdWJsaWNLZXk9ZmUsdGhpcy5zZXRQcml2YXRlS2V5PWRlKTp0''@;'; put 'put ''aGlzLl9wcmltZUNvZGU9OH1mdW5jdGlvbiBrZShTZSxJZSl7dmFyIFRlPW5ldyBpZShTZS50b0FycmF5KCkpO3JldHVybiBJZT9UZS50b1N0cmluZyhJZSk6VGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KEFlLnByb3RvdHlwZSwidmVyaWZ5RXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiJudW1iZXIiIT10eXBlb2YgdGhpcy5fcHJpbWVDb2RlJiYodGhpcy5fcHJpbWVDb2RlPWZ1bmN0aW9uKFNlLEllKXt2YXIgVGU9SWUudG9TdHJpbmcoImhleCIpLEVlPVtUZSxTZS50b1N0cmluZygxNildLmpvaW4oIl8iKTtpZihFZSBpbiB2ZSlyZXR1cm4gdmVbRWVd''@;'; put 'put ''O3ZhciBoZSxPPTA7aWYoU2UuaXNFdmVuKCl8fCFzZS5zaW1wbGVTaWV2ZXx8IXNlLmZlcm1hdFRlc3QoU2UpfHwhWS50ZXN0KFNlKSlyZXR1cm4gTys9MSx2ZVtFZV09Tys9IjAyIj09PVRlfHwiMDUiPT09VGU/ODo0LE87c3dpdGNoKFkudGVzdChTZS5zaHJuKDEpKXx8KE8rPTIpLFRlKXtj''@;'; put 'put ''YXNlIjAyIjpTZS5tb2QoVykuY21wKE4pJiYoTys9OCk7YnJlYWs7Y2FzZSIwNSI6KGhlPVNlLm1vZChlZSkpLmNtcChxKSYmaGUuY21wKEopJiYoTys9OCk7YnJlYWs7ZGVmYXVsdDpPKz00fXJldHVybiB2ZVtFZV09TyxPfSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRoaXMuX3ByaW1l''@;'; put 'put ''Q29kZX19KSxBZS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBsZShhZSh0aGlzLl9wcmltZUxlbikpKSx0aGlzLl9wdWI9dGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJv''@;'; put 'put ''bVJlZCgpLHRoaXMuZ2V0UHVibGljS2V5KCl9LEFlLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKFNlKXt2YXIgSWU9KFNlPShTZT1uZXcgbGUoU2UpKS50b1JlZCh0aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksVGU9bmV3IGllKEllLnRvQXJyYXko''@;'; put 'put ''KSksRWU9dGhpcy5nZXRQcmltZSgpO2lmKFRlLmxlbmd0aDxFZS5sZW5ndGgpe3ZhciBoZT1uZXcgaWUoRWUubGVuZ3RoLVRlLmxlbmd0aCk7aGUuZmlsbCgwKSxUZT1pZS5jb25jYXQoW2hlLFRlXSl9cmV0dXJuIFRlfSxBZS5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKFNlKXty''@;'; put 'put ''ZXR1cm4ga2UodGhpcy5fcHViLFNlKX0sQWUucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oU2Upe3JldHVybiBrZSh0aGlzLl9wcml2LFNlKX0sQWUucHJvdG90eXBlLmdldFByaW1lPWZ1bmN0aW9uKFNlKXtyZXR1cm4ga2UodGhpcy5fX3ByaW1lLFNlKX0sQWUucHJvdG90eXBl''@;'; put 'put ''LmdldEdlbmVyYXRvcj1mdW5jdGlvbihTZSl7cmV0dXJuIGtlKHRoaXMuX2dlbixTZSl9LEFlLnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24oU2UsSWUpe3JldHVybiBJZT1JZXx8InV0ZjgiLGllLmlzQnVmZmVyKFNlKXx8KFNlPW5ldyBpZShTZSxJZSkpLHRoaXMuX19nZW49U2Us''@;'; put 'put ''dGhpcy5fZ2VuPW5ldyBsZShTZSksdGhpc319LDM1OTA6KFUsUSxaKT0+e3ZhciBpZT1aKDE3OTgpO1UuZXhwb3J0cz1TZSxTZS5zaW1wbGVTaWV2ZT1BZSxTZS5mZXJtYXRUZXN0PWtlO3ZhciBsZT1aKDM2MjApLFk9bmV3IGxlKDI0KSxXPW5ldyhaKDMwNDcpKSxOPW5ldyBsZSgxKSxlZT1u''@;'; put 'put ''ZXcgbGUoMikscT1uZXcgbGUoNSksSj0obmV3IGxlKDE2KSxuZXcgbGUoOCksbmV3IGxlKDEwKSksc2U9bmV3IGxlKDMpLGFlPShuZXcgbGUoNyksbmV3IGxlKDExKSksZmU9bmV3IGxlKDQpLGRlPShuZXcgbGUoMTIpLG51bGwpO2Z1bmN0aW9uIEFlKEllKXtmb3IodmFyIFRlPWZ1bmN0aW9u''@;'; put 'put ''IHZlKCl7aWYobnVsbCE9PWRlKXJldHVybiBkZTt2YXIgSWU9W107SWVbMF09Mjtmb3IodmFyIFRlPTEsRWU9MztFZTwxMDQ4NTc2O0VlKz0yKXtmb3IodmFyIGhlPU1hdGguY2VpbChNYXRoLnNxcnQoRWUpKSxPPTA7TzxUZSYmSWVbT108PWhlJiZFZSVJZVtPXSE9MDtPKyspO1RlIT09TyYm''@;'; put 'put ''SWVbT108PWhlfHwoSWVbVGUrK109RWUpfXJldHVybiBkZT1JZSxJZX0oKSxFZT0wO0VlPFRlLmxlbmd0aDtFZSsrKWlmKDA9PT1JZS5tb2RuKFRlW0VlXSkpcmV0dXJuIDA9PT1JZS5jbXBuKFRlW0VlXSk7cmV0dXJuITB9ZnVuY3Rpb24ga2UoSWUpe3ZhciBUZT1sZS5tb250KEllKTtyZXR1''@;'; put 'put ''cm4gMD09PWVlLnRvUmVkKFRlKS5yZWRQb3coSWUuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSl9ZnVuY3Rpb24gU2UoSWUsVGUpe2lmKEllPDE2KXJldHVybiBuZXcgbGUoMj09PVRlfHw1PT09VGU/WzE0MCwxMjNdOlsxNDAsMzldKTt2YXIgRWUsaGU7Zm9yKFRlPW5ldyBsZShUZSk7Oyl7''@;'; put 'put ''Zm9yKEVlPW5ldyBsZShpZShNYXRoLmNlaWwoSWUvOCkpKTtFZS5iaXRMZW5ndGgoKT5JZTspRWUuaXNocm4oMSk7aWYoRWUuaXNFdmVuKCkmJkVlLmlhZGQoTiksRWUudGVzdG4oMSl8fEVlLmlhZGQoZWUpLFRlLmNtcChlZSkpe2lmKCFUZS5jbXAocSkpZm9yKDtFZS5tb2QoSikuY21wKHNl''@;'; put 'put ''KTspRWUuaWFkZChmZSl9ZWxzZSBmb3IoO0VlLm1vZChZKS5jbXAoYWUpOylFZS5pYWRkKGZlKTtpZihBZShoZT1FZS5zaHJuKDEpKSYmQWUoRWUpJiZrZShoZSkmJmtlKEVlKSYmVy50ZXN0KGhlKSYmVy50ZXN0KEVlKSlyZXR1cm4gRWV9fX0sMzYyMDpmdW5jdGlvbihVLFEsWil7IWZ1bmN0''@;'; put 'put ''aW9uKGllLGxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gWSh4LFApe2lmKCF4KXRocm93IG5ldyBFcnJvcihQfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFcoeCxQKXt4LnN1cGVyXz1QO3ZhciBWPWZ1bmN0aW9uKCl7fTtWLnByb3RvdHlwZT1QLnByb3RvdHlwZSx4LnByb3RvdHlw''@;'; put 'put ''ZT1uZXcgVix4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14fWZ1bmN0aW9uIE4oeCxQLFYpe2lmKE4uaXNCTih4KSlyZXR1cm4geDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09eCYmKCJsZSIhPT1QJiYiYmUiIT09UHx8''@;'; put 'put ''KFY9UCxQPTEwKSx0aGlzLl9pbml0KHh8fDAsUHx8MTAsVnx8ImJlIikpfXZhciBlZTsib2JqZWN0Ij09dHlwZW9mIGllP2llLmV4cG9ydHM9TjpsZS5CTj1OLE4uQk49TixOLndvcmRTaXplPTI2O3RyeXtlZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1''@;'; put 'put ''ZmZlcj93aW5kb3cuQnVmZmVyOlooNzc0OCkuQnVmZmVyfWNhdGNoKHgpe31mdW5jdGlvbiBxKHgsUCl7dmFyIFY9eC5jaGFyQ29kZUF0KFApO3JldHVybiBWPj02NSYmVjw9NzA/Vi01NTpWPj05NyYmVjw9MTAyP1YtODc6Vi00OCYxNX1mdW5jdGlvbiBKKHgsUCxWKXt2YXIgVD1xKHgsVik7''@;'; put 'put ''cmV0dXJuIFYtMT49UCYmKFR8PXEoeCxWLTEpPDw0KSxUfWZ1bmN0aW9uIHNlKHgsUCxWLFQpe2Zvcih2YXIgUz0wLEY9TWF0aC5taW4oeC5sZW5ndGgsVikseWU9UDt5ZTxGO3llKyspe3ZhciBDZT14LmNoYXJDb2RlQXQoeWUpLTQ4O1MqPVQsUys9Q2U+PTQ5P0NlLTQ5KzEwOkNlPj0xNz9D''@;'; put 'put ''ZS0xNysxMDpDZX1yZXR1cm4gU31OLmlzQk49ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBOfHxudWxsIT09eCYmIm9iamVjdCI9PXR5cGVvZiB4JiZ4LmNvbnN0cnVjdG9yLndvcmRTaXplPT09Ti53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheSh4LndvcmRzKX0sTi5tYXg9ZnVuY3Rp''@;'; put 'put ''b24oeCxQKXtyZXR1cm4geC5jbXAoUCk+MD94OlB9LE4ubWluPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHguY21wKFApPDA/eDpQfSxOLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih4LFAsVil7aWYoIm51bWJlciI9PXR5cGVvZiB4KXJldHVybiB0aGlzLl9pbml0TnVtYmVyKHgsUCxWKTtpZigi''@;'; put 'put ''b2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh4LFAsVik7ImhleCI9PT1QJiYoUD0xNiksWShQPT09KDB8UCkmJlA+PTImJlA8PTM2KTt2YXIgVD0wOyItIj09PSh4PXgudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoVCsrLHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MSksVDx4Lmxlbmd0aCYmKDE2PT09UD90aGlzLl9wYXJzZUhleCh4LFQsVik6KHRoaXMuX3BhcnNlQmFzZSh4LFAsVCksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpKSl9LE4ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHgsUCxWKXt4PDAmJih0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEseD0teCkseDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeF0sdGhpcy5sZW5ndGg9MSk6eDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihZKHg8OTAwNzE5OTI1''@;'; put 'put ''NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1WJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKX0sTi5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbih4LFAsVil7aWYoWSgibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIHgubGVuZ3RoKSx4Lmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbCh4Lmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBUPTA7VDx0aGlzLmxl''@;'; put 'put ''bmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEYseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0xLFM9MDtUPj0wO1QtPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QtMV08PDh8eFtULTJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUm''@;'; put 'put ''NjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7ZWxzZSBpZigibGUiPT09Vilmb3IoVD0wLFM9MDtUPHgubGVuZ3RoO1QrPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QrMV08PDh8eFtUKzJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUm''@;'; put 'put ''NjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKHgsUCxWKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHgubGVuZ3RoLVApLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3Ro''@;'; put 'put ''KTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRj0wLHllPTA7aWYoImJlIj09PVYpZm9yKFQ9eC5sZW5ndGgtMTtUPj1QO1QtPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jk''@;'; put 'put ''c1t5ZSs9MV18PVM+Pj4yNik6Ris9ODtlbHNlIGZvcihUPSh4Lmxlbmd0aC1QKSUyPT0wP1ArMTpQO1Q8eC5sZW5ndGg7VCs9MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O3RoaXMu''@;'; put 'put ''c3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih4LFAsVil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIFQ9MCxTPTE7Uzw9NjcxMDg4NjM7Uyo9UClUKys7VC0tLFM9Uy9QfDA7Zm9yKHZhciBGPXgubGVuZ3RoLVYseWU9RiVULENlPU1hdGgubWlu''@;'; put 'put ''KEYsRi15ZSkrVixEZT0wLFBlPVY7UGU8Q2U7UGUrPVQpRGU9c2UoeCxQZSxQZStULFApLHRoaXMuaW11bG4oUyksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSk7aWYoMCE9PXllKXt2YXIgUWU9MTtmb3IoRGU9c2UoeCxQZSx4Lmxl''@;'; put 'put ''bmd0aCxQKSxQZT0wO1BlPHllO1BlKyspUWUqPVA7dGhpcy5pbXVsbihRZSksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSl9dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHgpe3gud29yZHM9bmV3IEFycmF5''@;'; put 'put ''KHRoaXMubGVuZ3RoKTtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl4LndvcmRzW1BdPXRoaXMud29yZHNbUF07eC5sZW5ndGg9dGhpcy5sZW5ndGgseC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHgucmVkPXRoaXMucmVkfSxOLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB4''@;'; put 'put ''PW5ldyBOKG51bGwpO3JldHVybiB0aGlzLmNvcHkoeCkseH0sTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih4KXtmb3IoO3RoaXMubGVuZ3RoPHg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3Ro''@;'; put 'put ''aXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxOLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMu''@;'; put 'put ''bmVnYXRpdmU9MCksdGhpc30sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgYWU9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sZmU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sZGU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1''@;'; put 'put ''MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0''@;'; put 'put ''ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdmUoeCxQLFYpe1YubmVnYXRpdmU9UC5uZWdhdGl2ZV54Lm5lZ2F0aXZlO3ZhciBUPXgubGVuZ3RoK1AubGVuZ3RofDA7Vi5s''@;'; put 'put ''ZW5ndGg9VCxUPVQtMXwwO3ZhciBTPTB8eC53b3Jkc1swXSxGPTB8UC53b3Jkc1swXSx5ZT1TKkYsRGU9eWUvNjcxMDg4NjR8MDtWLndvcmRzWzBdPTY3MTA4ODYzJnllO2Zvcih2YXIgUGU9MTtQZTxUO1BlKyspe2Zvcih2YXIgUWU9RGU+Pj4yNiwkZT02NzEwODg2MyZEZSxndD1NYXRoLm1p''@;'; put 'put ''bihQZSxQLmxlbmd0aC0xKSx5dD1NYXRoLm1heCgwLFBlLXgubGVuZ3RoKzEpO3l0PD1ndDt5dCsrKVFlKz0oeWU9KFM9MHx4LndvcmRzW1BlLXl0fDBdKSooRj0wfFAud29yZHNbeXRdKSskZSkvNjcxMDg4NjR8MCwkZT02NzEwODg2MyZ5ZTtWLndvcmRzW1BlXT0wfCRlLERlPTB8UWV9cmV0''@;'; put 'put ''dXJuIDAhPT1EZT9WLndvcmRzW1BlXT0wfERlOlYubGVuZ3RoLS0sVi5zdHJpcCgpfU4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHgsUCl7dmFyIFY7aWYoUD0wfFB8fDEsMTY9PT0oeD14fHwxMCl8fCJoZXgiPT09eCl7Vj0iIjtmb3IodmFyIFQ9MCxTPTAsRj0wO0Y8dGhpcy5sZW5n''@;'; put 'put ''dGg7RisrKXt2YXIgeWU9dGhpcy53b3Jkc1tGXSxDZT0oMTY3NzcyMTUmKHllPDxUfFMpKS50b1N0cmluZygxNik7Vj0wIT0oUz15ZT4+PjI0LVQmMTY3NzcyMTUpfHxGIT09dGhpcy5sZW5ndGgtMT9hZVs2LUNlLmxlbmd0aF0rQ2UrVjpDZStWLChUKz0yKT49MjYmJihULT0yNixGLS0pfWZv''@;'; put 'put ''cigwIT09UyYmKFY9Uy50b1N0cmluZygxNikrVik7Vi5sZW5ndGglUCE9MDspVj0iMCIrVjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihWPSItIitWKSxWfWlmKHg9PT0oMHx4KSYmeD49MiYmeDw9MzYpe3ZhciBEZT1mZVt4XSxQZT1kZVt4XTtWPSIiO3ZhciBRZT10aGlzLmNsb25lKCk7''@;'; put 'put ''Zm9yKFFlLm5lZ2F0aXZlPTA7IVFlLmlzWmVybygpOyl7dmFyICRlPVFlLm1vZG4oUGUpLnRvU3RyaW5nKHgpO1Y9KFFlPVFlLmlkaXZuKFBlKSkuaXNaZXJvKCk/JGUrVjphZVtEZS0kZS5sZW5ndGhdKyRlK1Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihWPSIwIitWKTtWLmxlbmd0aCVQIT0wOylW''@;'; put 'put ''PSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9WSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxOLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB4PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD94Kz02''@;'; put 'put ''NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/eCs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJlkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIp''@;'; put 'put ''LDAhPT10aGlzLm5lZ2F0aXZlPy14Onh9LE4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gWSh2b2lkIDAhPT1lZSksdGhpcy50b0FycmF5TGlrZShlZSx4LFApfSxO''@;'; put 'put ''LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXkseCxQKX0sTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPXRoaXMuYnl0ZUxlbmd0aCgpLFM9Vnx8TWF0aC5tYXgoMSxUKTtZKFQ8PVMsImJ5dGUg''@;'; put 'put ''YXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxZKFM+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBGLHllLENlPSJsZSI9PT1QLERlPW5ldyB4KFMpLFBlPXRoaXMuY2xvbmUoKTtpZihDZSl7Zm9yKHllPTA7IVBlLmlzWmVybygpO3ll''@;'; put 'put ''KyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVt5ZV09Rjtmb3IoO3llPFM7eWUrKylEZVt5ZV09MH1lbHNle2Zvcih5ZT0wO3llPFMtVDt5ZSsrKURlW3llXT0wO2Zvcih5ZT0wOyFQZS5pc1plcm8oKTt5ZSsrKUY9UGUuYW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbUy15ZS0x''@;'; put 'put ''XT1GfXJldHVybiBEZX0sTi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKHgpe3JldHVybiAzMi1NYXRoLmNsejMyKHgpfTpmdW5jdGlvbih4KXt2YXIgUD14LFY9MDtyZXR1cm4gUD49NDA5NiYmKFYrPTEzLFA+Pj49MTMpLFA+PTY0JiYoVis9NyxQPj4+PTcpLFA+''@;'; put 'put ''PTgmJihWKz00LFA+Pj49NCksUD49MiYmKFYrPTIsUD4+Pj0yKSxWK1B9LE4ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbih4KXtpZigwPT09eClyZXR1cm4gMjY7dmFyIFA9eCxWPTA7cmV0dXJuIDA9PSg4MTkxJlApJiYoVis9MTMsUD4+Pj0xMyksMD09KDEyNyZQKSYmKFYrPTcsUD4+''@;'; put 'put ''Pj03KSwwPT0oMTUmUCkmJihWKz00LFA+Pj49NCksMD09KDMmUCkmJihWKz0yLFA+Pj49MiksMD09KDEmUCkmJlYrKyxWfSxOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgUD10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0''@;'; put 'put ''aGlzLmxlbmd0aC0xKStQfSxOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW1BdKTtpZih4Kz1WLDI2IT09VilicmVh''@;'; put 'put ''a31yZXR1cm4geH0sTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHgpLmlhZGRu''@;'; put 'put ''KDEpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudGVzdG4oeC0xKT90aGlzLm5vdG4oeCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmV9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxOLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxOLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHgp''@;'; put 'put ''e2Zvcig7dGhpcy5sZW5ndGg8eC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIFA9MDtQPHgubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPXRoaXMud29yZHNbUF18eC53b3Jkc1tQXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pb3I9ZnVuY3Rp''@;'; put 'put ''b24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih4KX0sTi5wcm90b3R5cGUub3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoeCk6eC5jbG9uZSgpLmlvcih0aGlzKX0sTi5wcm90b3R5''@;'; put 'put ''cGUudW9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih4KTp4LmNsb25lKCkuaXVvcih0aGlzKX0sTi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oeCl7dmFyIFA7UD10aGlzLmxlbmd0aD54Lmxlbmd0aD94OnRoaXM7Zm9yKHZhciBW''@;'; put 'put ''PTA7VjxQLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT10aGlzLndvcmRzW1ZdJngud29yZHNbVl07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZl''@;'; put 'put ''KSksdGhpcy5pdWFuZCh4KX0sTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh4KTp4LmNsb25lKCkuaWFuZCh0aGlzKX0sTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+''@;'; put 'put ''eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHgpOnguY2xvbmUoKS5pdWFuZCh0aGlzKX0sTi5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oeCl7dmFyIFAsVjt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oUD10aGlzLFY9eCk6KFA9eCxWPXRoaXMpO2Zvcih2YXIgVD0wO1Q8Vi5sZW5ndGg7VCsr''@;'; put 'put ''KXRoaXMud29yZHNbVF09UC53b3Jkc1tUXV5WLndvcmRzW1RdO2lmKHRoaXMhPT1QKWZvcig7VDxQLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oeCl7''@;'; put 'put ''cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoeCl9LE4ucHJvdG90eXBlLnhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoeCk6eC5jbG9uZSgpLml4b3IodGhpcyl9LE4ucHJvdG90eXBl''@;'; put 'put ''LnV4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcih4KTp4LmNsb25lKCkuaXV4b3IodGhpcyl9LE4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD0wfE1hdGguY2Vp''@;'; put 'put ''bCh4LzI2KSxWPXglMjY7dGhpcy5fZXhwYW5kKFApLFY+MCYmUC0tO2Zvcih2YXIgVD0wO1Q8UDtUKyspdGhpcy53b3Jkc1tUXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tUXTtyZXR1cm4gVj4wJiYodGhpcy53b3Jkc1tUXT1+dGhpcy53b3Jkc1tUXSY2NzEwODg2Mz4+MjYtViksdGhpcy5zdHJp''@;'; put 'put ''cCgpfSxOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oeCl9LE4ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oeCxQKXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFY9eC8yNnwwLFQ9eCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFYr''@;'; put 'put ''MSksdGhpcy53b3Jkc1tWXT1QP3RoaXMud29yZHNbVl18MTw8VDp0aGlzLndvcmRzW1ZdJn4oMTw8VCksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgpe3ZhciBQLFYsVDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlKXJldHVybiB4Lm5lZ2F0aXZlPTAsUD10aGlzLmlzdWIoeCkseC5uZWdhdGl2ZT0xLFAuX25vcm1TaWduKCk7dGhpcy5sZW5n''@;'; put 'put ''dGg+eC5sZW5ndGg/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKSsoMHxULndvcmRzW0ZdKStTKSxTPVA+Pj4yNjtmb3IoOzAhPT1TJiZGPFYubGVuZ3RoO0YrKyl0''@;'; put 'put ''aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pK1MpLFM9UD4+PjI2O2lmKHRoaXMubGVuZ3RoPVYubGVuZ3RoLDAhPT1TKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPVMsdGhpcy5sZW5ndGgrKztlbHNlIGlmKFYhPT10aGlzKWZvcig7RjxWLmxlbmd0aDtGKyspdGhpcy53''@;'; put 'put ''b3Jkc1tGXT1WLndvcmRzW0ZdO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCl7dmFyIFA7cmV0dXJuIDAhPT14Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLFA9dGhpcy5zdWIoeCkseC5uZWdhdGl2ZV49MSxQKTowPT09eC5uZWdhdGl2''@;'; put 'put ''ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxQPXguc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxQKTp0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh4KTp4LmNsb25lKCkuaWFkZCh0aGlzKX0sTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih4KXtp''@;'; put 'put ''ZigwIT09eC5uZWdhdGl2ZSl7eC5uZWdhdGl2ZT0wO3ZhciBQPXRoaXMuaWFkZCh4KTtyZXR1cm4geC5uZWdhdGl2ZT0xLFAuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25v''@;'; put 'put ''cm1TaWduKCk7dmFyIFYsVCxTPXRoaXMuY21wKHgpO2lmKDA9PT1TKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztTPjA/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIEY9MCx5ZT0wO3llPFQubGVuZ3RoO3llKyspRj0o''@;'; put 'put ''UD0oMHxWLndvcmRzW3llXSktKDB8VC53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZQO2Zvcig7MCE9PUYmJnllPFYubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7aWYoMD09PUYmJnllPFYu''@;'; put 'put ''bGVuZ3RoJiZWIT09dGhpcylmb3IoO3llPFYubGVuZ3RoO3llKyspdGhpcy53b3Jkc1t5ZV09Vi53b3Jkc1t5ZV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHllKSxWIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5z''@;'; put 'put ''dWI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHgpfTt2YXIgQWU9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFMsRix5ZT14LndvcmRzLENlPVAud29yZHMsRGU9Vi53b3JkcyxQZT0wLFFlPTB8eWVbMF0sJGU9ODE5MSZRZSxndD1RZT4+PjEzLHl0PTB8eWVbMV0scHQ9ODE5''@;'; put 'put ''MSZ5dCxtdD15dD4+PjEzLHZ0PTB8eWVbMl0sZnQ9ODE5MSZ2dCxGdD12dD4+PjEzLG9uPTB8eWVbM10sX3Q9ODE5MSZvbixudD1vbj4+PjEzLHFlPTB8eWVbNF0sb3Q9ODE5MSZxZSxSdD1xZT4+PjEzLEN0PTB8eWVbNV0sY3Q9ODE5MSZDdCxOdD1DdD4+PjEzLHplPTB8eWVbNl0sWWU9ODE5''@;'; put 'put ''MSZ6ZSxBdD16ZT4+PjEzLGp0PTB8eWVbN10sSnQ9ODE5MSZqdCxtbj1qdD4+PjEzLHBuPTB8eWVbOF0sYm49ODE5MSZwbixsbj1wbj4+PjEzLE5uPTB8eWVbOV0sa249ODE5MSZObixlcj1Obj4+PjEzLHVyPTB8Q2VbMF0sWG49ODE5MSZ1cixGcj11cj4+PjEzLHhyPTB8Q2VbMV0sZW49ODE5''@;'; put 'put ''MSZ4cixkcj14cj4+PjEzLG5yPTB8Q2VbMl0sd249ODE5MSZuciwkbj1ucj4+PjEzLFl0PTB8Q2VbM10sZ249ODE5MSZZdCxLbj1ZdD4+PjEzLFZ0PTB8Q2VbNF0sc249ODE5MSZWdCxVbj1WdD4+PjEzLF9uPTB8Q2VbNV0sdG49ODE5MSZfbixHbj1fbj4+PjEzLFRyPTB8Q2VbNl0sUG49ODE5''@;'; put 'put ''MSZUcixTcj1Ucj4+PjEzLHZuPTB8Q2VbN10sdW49ODE5MSZ2bixjbj12bj4+PjEzLFNuPTB8Q2VbOF0sR3Q9ODE5MSZTbixFbj1Tbj4+PjEzLGpuPTB8Q2VbOV0scXQ9ODE5MSZqbixMbj1qbj4+PjEzO1YubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPTE5O3ZhciBK''@;'; put 'put ''bj0oUGUrKFQ9TWF0aC5pbXVsKCRlLFhuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bCgkZSxGcikpK01hdGguaW11bChndCxYbil8MCkpPDwxMyl8MDtQZT0oKEY9TWF0aC5pbXVsKGd0LEZyKSkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHB0''@;'; put 'put ''LFhuKSxTPShTPU1hdGguaW11bChwdCxGcikpK01hdGguaW11bChtdCxYbil8MCxGPU1hdGguaW11bChtdCxGcik7dmFyIG9yPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGRyKXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMp''@;'; put 'put ''fDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGRyKXwwKSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZnQsWG4pLFM9KFM9TWF0aC5pbXVsKGZ0LEZyKSkrTWF0aC5pbXVsKEZ0LFhuKXwwLEY9TWF0aC5pbXVsKEZ0LEZyKSxUPVQrTWF0aC5pbXVsKHB0''@;'; put 'put ''LGVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsZHIpfDApK01hdGguaW11bChtdCxlbil8MCxGPUYrTWF0aC5pbXVsKG10LGRyKXwwO3ZhciBncj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsd24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSwkbil8MCkrTWF0aC5pbXVsKGd0LHdu''@;'; put 'put ''KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCwkbil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKF90LFhuKSxTPShTPU1hdGguaW11bChfdCxGcikpK01hdGguaW11bChudCxYbil8MCxGPU1hdGguaW11bChudCxGciksVD1UK01h''@;'; put 'put ''dGguaW11bChmdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGRyKXwwKStNYXRoLmltdWwoRnQsZW4pfDAsRj1GK01hdGguaW11bChGdCxkcil8MCxUPVQrTWF0aC5pbXVsKHB0LHduKXwwLFM9KFM9UytNYXRoLmltdWwocHQsJG4pfDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKG10LCRuKXwwO3ZhciBKcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsZ24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxLbil8MCkrTWF0aC5pbXVsKGd0LGduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxLbil8MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYp''@;'; put 'put ''fDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG90LFhuKSxTPShTPU1hdGguaW11bChvdCxGcikpK01hdGguaW11bChSdCxYbil8MCxGPU1hdGguaW11bChSdCxGciksVD1UK01hdGguaW11bChfdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGRyKXwwKStNYXRoLmltdWwobnQsZW4pfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChudCxkcil8MCxUPVQrTWF0aC5pbXVsKGZ0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsJG4pfDApK01hdGguaW11bChGdCx3bil8MCxGPUYrTWF0aC5pbXVsKEZ0LCRuKXwwLFQ9VCtNYXRoLmltdWwocHQsZ24pfDAsUz0oUz1TK01hdGguaW11bChwdCxLbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKG10LGduKXwwLEY9RitNYXRoLmltdWwobXQsS24pfDA7dmFyIFZyPShQZSsoVD1UK01hdGguaW11bCgkZSxzbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLFVuKXwwKStNYXRoLmltdWwoZ3Qsc24pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0''@;'; put 'put ''LFVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoY3QsWG4pLFM9KFM9TWF0aC5pbXVsKGN0LEZyKSkrTWF0aC5pbXVsKE50LFhuKXwwLEY9TWF0aC5pbXVsKE50LEZyKSxUPVQrTWF0aC5pbXVsKG90LGVuKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''b3QsZHIpfDApK01hdGguaW11bChSdCxlbil8MCxGPUYrTWF0aC5pbXVsKFJ0LGRyKXwwLFQ9VCtNYXRoLmltdWwoX3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChfdCwkbil8MCkrTWF0aC5pbXVsKG50LHduKXwwLEY9RitNYXRoLmltdWwobnQsJG4pfDAsVD1UK01hdGguaW11bChmdCxnbil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEtuKXwwKStNYXRoLmltdWwoRnQsZ24pfDAsRj1GK01hdGguaW11bChGdCxLbil8MCxUPVQrTWF0aC5pbXVsKHB0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsVW4pfDApK01hdGguaW11bChtdCxzbil8MCxGPUYrTWF0aC5pbXVsKG10LFVuKXwwO3Zh''@;'; put 'put ''ciB0aT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxHbil8MCkrTWF0aC5pbXVsKGd0LHRuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxHbil8MCkrKFM+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYz''@;'; put 'put ''LFQ9TWF0aC5pbXVsKFllLFhuKSxTPShTPU1hdGguaW11bChZZSxGcikpK01hdGguaW11bChBdCxYbil8MCxGPU1hdGguaW11bChBdCxGciksVD1UK01hdGguaW11bChjdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGRyKXwwKStNYXRoLmltdWwoTnQsZW4pfDAsRj1GK01hdGguaW11bChO''@;'; put 'put ''dCxkcil8MCxUPVQrTWF0aC5pbXVsKG90LHduKXwwLFM9KFM9UytNYXRoLmltdWwob3QsJG4pfDApK01hdGguaW11bChSdCx3bil8MCxGPUYrTWF0aC5pbXVsKFJ0LCRuKXwwLFQ9VCtNYXRoLmltdWwoX3QsZ24pfDAsUz0oUz1TK01hdGguaW11bChfdCxLbil8MCkrTWF0aC5pbXVsKG50LGdu''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwobnQsS24pfDAsVD1UK01hdGguaW11bChmdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFVuKXwwKStNYXRoLmltdWwoRnQsc24pfDAsRj1GK01hdGguaW11bChGdCxVbil8MCxUPVQrTWF0aC5pbXVsKHB0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsR24p''@;'; put 'put ''fDApK01hdGguaW11bChtdCx0bil8MCxGPUYrTWF0aC5pbXVsKG10LEduKXwwO3ZhciBPcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsUG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxTcil8MCkrTWF0aC5pbXVsKGd0LFBuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11''@;'; put 'put ''bChndCxTcil8MCkrKFM+Pj4xMyl8MCkrKE9yPj4+MjYpfDAsT3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEp0LFhuKSxTPShTPU1hdGguaW11bChKdCxGcikpK01hdGguaW11bChtbixYbil8MCxGPU1hdGguaW11bChtbixGciksVD1UK01hdGguaW11bChZZSxlbil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKFllLGRyKXwwKStNYXRoLmltdWwoQXQsZW4pfDAsRj1GK01hdGguaW11bChBdCxkcil8MCxUPVQrTWF0aC5pbXVsKGN0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsJG4pfDApK01hdGguaW11bChOdCx3bil8MCxGPUYrTWF0aC5pbXVsKE50LCRuKXwwLFQ9VCtNYXRoLmltdWwob3Qs''@;'; put 'put ''Z24pfDAsUz0oUz1TK01hdGguaW11bChvdCxLbil8MCkrTWF0aC5pbXVsKFJ0LGduKXwwLEY9RitNYXRoLmltdWwoUnQsS24pfDAsVD1UK01hdGguaW11bChfdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LFVuKXwwKStNYXRoLmltdWwobnQsc24pfDAsRj1GK01hdGguaW11bChudCxVbil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsR24pfDApK01hdGguaW11bChGdCx0bil8MCxGPUYrTWF0aC5pbXVsKEZ0LEduKXwwLFQ9VCtNYXRoLmltdWwocHQsUG4pfDAsUz0oUz1TK01hdGguaW11bChwdCxTcil8MCkrTWF0aC5pbXVsKG10LFBuKXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwobXQsU3IpfDA7dmFyIGxpPShQZSsoVD1UK01hdGguaW11bCgkZSx1bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGNuKXwwKStNYXRoLmltdWwoZ3QsdW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGNuKXwwKSsoUz4+PjEzKXwwKSso''@;'; put 'put ''bGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZyKSkrTWF0aC5pbXVsKGxuLFhuKXwwLEY9TWF0aC5pbXVsKGxuLEZyKSxUPVQrTWF0aC5pbXVsKEp0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsZHIpfDApK01hdGguaW11bCht''@;'; put 'put ''bixlbil8MCxGPUYrTWF0aC5pbXVsKG1uLGRyKXwwLFQ9VCtNYXRoLmltdWwoWWUsd24pfDAsUz0oUz1TK01hdGguaW11bChZZSwkbil8MCkrTWF0aC5pbXVsKEF0LHduKXwwLEY9RitNYXRoLmltdWwoQXQsJG4pfDAsVD1UK01hdGguaW11bChjdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0''@;'; put 'put ''LEtuKXwwKStNYXRoLmltdWwoTnQsZ24pfDAsRj1GK01hdGguaW11bChOdCxLbil8MCxUPVQrTWF0aC5pbXVsKG90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsVW4pfDApK01hdGguaW11bChSdCxzbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwoX3QsdG4pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChfdCxHbil8MCkrTWF0aC5pbXVsKG50LHRuKXwwLEY9RitNYXRoLmltdWwobnQsR24pfDAsVD1UK01hdGguaW11bChmdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFNyKXwwKStNYXRoLmltdWwoRnQsUG4pfDAsRj1GK01hdGguaW11bChGdCxTcil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKHB0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsY24pfDApK01hdGguaW11bChtdCx1bil8MCxGPUYrTWF0aC5pbXVsKG10LGNuKXwwO3ZhciBJaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsR3QpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxFbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKGd0LEd0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxFbil8MCkrKFM+Pj4xMyl8MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFhuKSxTPShTPU1hdGguaW11bChrbixGcikpK01hdGguaW11bChlcixYbil8MCxGPU1hdGguaW11bChl''@;'; put 'put ''cixGciksVD1UK01hdGguaW11bChibixlbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGRyKXwwKStNYXRoLmltdWwobG4sZW4pfDAsRj1GK01hdGguaW11bChsbixkcil8MCxUPVQrTWF0aC5pbXVsKEp0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsJG4pfDApK01hdGguaW11bChtbix3bil8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKG1uLCRuKXwwLFQ9VCtNYXRoLmltdWwoWWUsZ24pfDAsUz0oUz1TK01hdGguaW11bChZZSxLbil8MCkrTWF0aC5pbXVsKEF0LGduKXwwLEY9RitNYXRoLmltdWwoQXQsS24pfDAsVD1UK01hdGguaW11bChjdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LFVuKXww''@;'; put 'put ''KStNYXRoLmltdWwoTnQsc24pfDAsRj1GK01hdGguaW11bChOdCxVbil8MCxUPVQrTWF0aC5pbXVsKG90LHRuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsR24pfDApK01hdGguaW11bChSdCx0bil8MCxGPUYrTWF0aC5pbXVsKFJ0LEduKXwwLFQ9VCtNYXRoLmltdWwoX3QsUG4pfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChfdCxTcil8MCkrTWF0aC5pbXVsKG50LFBuKXwwLEY9RitNYXRoLmltdWwobnQsU3IpfDAsVD1UK01hdGguaW11bChmdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGNuKXwwKStNYXRoLmltdWwoRnQsdW4pfDAsRj1GK01hdGguaW11bChGdCxjbil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKHB0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwocHQsRW4pfDApK01hdGguaW11bChtdCxHdCl8MCxGPUYrTWF0aC5pbXVsKG10LEVuKXwwO3ZhciByMD0oUGUrKFQ9VCtNYXRoLmltdWwoJGUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxMbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KGd0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxMbil8MCkrKFM+Pj4xMyl8MCkrKHIwPj4+MjYpfDAscjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGVuKSxTPShTPU1hdGguaW11bChrbixkcikpK01hdGguaW11bChlcixlbil8MCxGPU1hdGguaW11bChlcixkciks''@;'; put 'put ''VD1UK01hdGguaW11bChibix3bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLCRuKXwwKStNYXRoLmltdWwobG4sd24pfDAsRj1GK01hdGguaW11bChsbiwkbil8MCxUPVQrTWF0aC5pbXVsKEp0LGduKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsS24pfDApK01hdGguaW11bChtbixnbil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKG1uLEtuKXwwLFQ9VCtNYXRoLmltdWwoWWUsc24pfDAsUz0oUz1TK01hdGguaW11bChZZSxVbil8MCkrTWF0aC5pbXVsKEF0LHNuKXwwLEY9RitNYXRoLmltdWwoQXQsVW4pfDAsVD1UK01hdGguaW11bChjdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEduKXwwKStNYXRo''@;'; put 'put ''LmltdWwoTnQsdG4pfDAsRj1GK01hdGguaW11bChOdCxHbil8MCxUPVQrTWF0aC5pbXVsKG90LFBuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsU3IpfDApK01hdGguaW11bChSdCxQbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFNyKXwwLFQ9VCtNYXRoLmltdWwoX3QsdW4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChfdCxjbil8MCkrTWF0aC5pbXVsKG50LHVuKXwwLEY9RitNYXRoLmltdWwobnQsY24pfDAsVD1UK01hdGguaW11bChmdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEVuKXwwKStNYXRoLmltdWwoRnQsR3QpfDAsRj1GK01hdGguaW11bChGdCxFbil8MDt2YXIgZTA9KFBlKyhUPVQr''@;'; put 'put ''TWF0aC5pbXVsKHB0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwocHQsTG4pfDApK01hdGguaW11bChtdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobXQsTG4pfDApKyhTPj4+MTMpfDApKyhlMD4+PjI2KXwwLGUwJj02NzEwODg2MyxUPU1hdGguaW11bChr''@;'; put 'put ''bix3biksUz0oUz1NYXRoLmltdWwoa24sJG4pKStNYXRoLmltdWwoZXIsd24pfDAsRj1NYXRoLmltdWwoZXIsJG4pLFQ9VCtNYXRoLmltdWwoYm4sZ24pfDAsUz0oUz1TK01hdGguaW11bChibixLbil8MCkrTWF0aC5pbXVsKGxuLGduKXwwLEY9RitNYXRoLmltdWwobG4sS24pfDAsVD1UK01h''@;'; put 'put ''dGguaW11bChKdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LFVuKXwwKStNYXRoLmltdWwobW4sc24pfDAsRj1GK01hdGguaW11bChtbixVbil8MCxUPVQrTWF0aC5pbXVsKFllLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsR24pfDApK01hdGguaW11bChBdCx0bil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKEF0LEduKXwwLFQ9VCtNYXRoLmltdWwoY3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChjdCxTcil8MCkrTWF0aC5pbXVsKE50LFBuKXwwLEY9RitNYXRoLmltdWwoTnQsU3IpfDAsVD1UK01hdGguaW11bChvdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKG90LGNuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''UnQsdW4pfDAsRj1GK01hdGguaW11bChSdCxjbil8MCxUPVQrTWF0aC5pbXVsKF90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoX3QsRW4pfDApK01hdGguaW11bChudCxHdCl8MCxGPUYrTWF0aC5pbXVsKG50LEVuKXwwO3ZhciBkMD0oUGUrKFQ9VCtNYXRoLmltdWwoZnQscXQpfDApfDApKygo''@;'; put 'put ''ODE5MSYoUz0oUz1TK01hdGguaW11bChmdCxMbil8MCkrTWF0aC5pbXVsKEZ0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChGdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGduKSxTPShTPU1hdGguaW11bChrbixL''@;'; put 'put ''bikpK01hdGguaW11bChlcixnbil8MCxGPU1hdGguaW11bChlcixLbiksVD1UK01hdGguaW11bChibixzbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLFVuKXwwKStNYXRoLmltdWwobG4sc24pfDAsRj1GK01hdGguaW11bChsbixVbil8MCxUPVQrTWF0aC5pbXVsKEp0LHRuKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoSnQsR24pfDApK01hdGguaW11bChtbix0bil8MCxGPUYrTWF0aC5pbXVsKG1uLEduKXwwLFQ9VCtNYXRoLmltdWwoWWUsUG4pfDAsUz0oUz1TK01hdGguaW11bChZZSxTcil8MCkrTWF0aC5pbXVsKEF0LFBuKXwwLEY9RitNYXRoLmltdWwoQXQsU3IpfDAsVD1UK01hdGguaW11''@;'; put 'put ''bChjdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGNuKXwwKStNYXRoLmltdWwoTnQsdW4pfDAsRj1GK01hdGguaW11bChOdCxjbil8MCxUPVQrTWF0aC5pbXVsKG90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwob3QsRW4pfDApK01hdGguaW11bChSdCxHdCl8MCxGPUYrTWF0aC5pbXVsKFJ0''@;'; put 'put ''LEVuKXwwO3ZhciBfMD0oUGUrKFQ9VCtNYXRoLmltdWwoX3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChfdCxMbil8MCkrTWF0aC5pbXVsKG50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChudCxMbil8MCkrKFM+Pj4xMyl8MCkrKF8wPj4+MjYpfDAsXzAm''@;'; put 'put ''PTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHNuKSxTPShTPU1hdGguaW11bChrbixVbikpK01hdGguaW11bChlcixzbil8MCxGPU1hdGguaW11bChlcixVbiksVD1UK01hdGguaW11bChibix0bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEduKXwwKStNYXRoLmltdWwobG4sdG4pfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChsbixHbil8MCxUPVQrTWF0aC5pbXVsKEp0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsU3IpfDApK01hdGguaW11bChtbixQbil8MCxGPUYrTWF0aC5pbXVsKG1uLFNyKXwwLFQ9VCtNYXRoLmltdWwoWWUsdW4pfDAsUz0oUz1TK01hdGguaW11bChZZSxjbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEF0LHVuKXwwLEY9RitNYXRoLmltdWwoQXQsY24pfDAsVD1UK01hdGguaW11bChjdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEVuKXwwKStNYXRoLmltdWwoTnQsR3QpfDAsRj1GK01hdGguaW11bChOdCxFbil8MDt2YXIgVTA9KFBlKyhUPVQrTWF0aC5pbXVsKG90LHF0KXwwKXww''@;'; put 'put ''KSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob3QsTG4pfDApK01hdGguaW11bChSdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoUnQsTG4pfDApKyhTPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2MyxUPU1hdGguaW11bChrbix0biksUz0oUz1NYXRoLmltdWwo''@;'; put 'put ''a24sR24pKStNYXRoLmltdWwoZXIsdG4pfDAsRj1NYXRoLmltdWwoZXIsR24pLFQ9VCtNYXRoLmltdWwoYm4sUG4pfDAsUz0oUz1TK01hdGguaW11bChibixTcil8MCkrTWF0aC5pbXVsKGxuLFBuKXwwLEY9RitNYXRoLmltdWwobG4sU3IpfDAsVD1UK01hdGguaW11bChKdCx1bil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKEp0LGNuKXwwKStNYXRoLmltdWwobW4sdW4pfDAsRj1GK01hdGguaW11bChtbixjbil8MCxUPVQrTWF0aC5pbXVsKFllLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoWWUsRW4pfDApK01hdGguaW11bChBdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEF0LEVuKXwwO3ZhciBCaT0o''@;'; put 'put ''UGUrKFQ9VCtNYXRoLmltdWwoY3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChjdCxMbil8MCkrTWF0aC5pbXVsKE50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChOdCxMbil8MCkrKFM+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLFQ9TWF0''@;'; put 'put ''aC5pbXVsKGtuLFBuKSxTPShTPU1hdGguaW11bChrbixTcikpK01hdGguaW11bChlcixQbil8MCxGPU1hdGguaW11bChlcixTciksVD1UK01hdGguaW11bChibix1bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGNuKXwwKStNYXRoLmltdWwobG4sdW4pfDAsRj1GK01hdGguaW11bChsbixjbil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKEp0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoSnQsRW4pfDApK01hdGguaW11bChtbixHdCl8MCxGPUYrTWF0aC5pbXVsKG1uLEVuKXwwO3ZhciBqMD0oUGUrKFQ9VCtNYXRoLmltdWwoWWUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChZZSxMbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEF0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChBdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGowPj4+MjYpfDAsajAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHVuKSxTPShTPU1hdGguaW11bChrbixjbikpK01hdGguaW11bChlcix1bil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChlcixjbiksVD1UK01hdGguaW11bChibixHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEVuKXwwKStNYXRoLmltdWwobG4sR3QpfDAsRj1GK01hdGguaW11bChsbixFbil8MDt2YXIgQW89KFBlKyhUPVQrTWF0aC5pbXVsKEp0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoSnQsTG4pfDApK01hdGguaW11bChtbixxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobW4sTG4pfDApKyhTPj4+MTMpfDApKyhBbz4+PjI2KXwwLEFvJj02NzEwODg2MyxUPU1hdGguaW11bChrbixHdCksUz0oUz1NYXRoLmltdWwoa24sRW4pKStNYXRoLmltdWwoZXIsR3Qp''@;'; put 'put ''fDAsRj1NYXRoLmltdWwoZXIsRW4pO3ZhciBLbz0oUGUrKFQ9VCtNYXRoLmltdWwoYm4scXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChibixMbil8MCkrTWF0aC5pbXVsKGxuLHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChsbixMbil8MCkrKFM+Pj4xMyl8MCkr''@;'; put 'put ''KEtvPj4+MjYpfDAsS28mPTY3MTA4ODYzO3ZhciBmYT0oUGUrKFQ9TWF0aC5pbXVsKGtuLHF0KSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChrbixMbikpK01hdGguaW11bChlcixxdCl8MCkpPDwxMyl8MDtyZXR1cm4gUGU9KChGPU1hdGguaW11bChlcixMbikpKyhTPj4+MTMpfDApKyhm''@;'; put 'put ''YT4+PjI2KXwwLGZhJj02NzEwODg2MyxEZVswXT1KbixEZVsxXT1vcixEZVsyXT1ncixEZVszXT1KcixEZVs0XT1WcixEZVs1XT10aSxEZVs2XT1PcixEZVs3XT1saSxEZVs4XT1JaSxEZVs5XT1yMCxEZVsxMF09ZTAsRGVbMTFdPWQwLERlWzEyXT1fMCxEZVsxM109VTAsRGVbMTRdPUJpLERl''@;'; put 'put ''WzE1XT1qMCxEZVsxNl09QW8sRGVbMTddPUtvLERlWzE4XT1mYSwwIT09UGUmJihEZVsxOV09UGUsVi5sZW5ndGgrKyksVn07ZnVuY3Rpb24ga2UoeCxQLFYpe3JldHVybihuZXcgU2UpLm11bHAoeCxQLFYpfWZ1bmN0aW9uIFNlKHgsUCl7dGhpcy54PXgsdGhpcy55PVB9TWF0aC5pbXVsfHwo''@;'; put 'put ''QWU9dmUpLE4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHgsUCl7dmFyIFQ9dGhpcy5sZW5ndGgreC5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09eC5sZW5ndGg/QWUodGhpcyx4LFApOlQ8NjM/dmUodGhpcyx4LFApOlQ8MTAyND9mdW5jdGlvbihTLEYseWUpe3llLm5l''@;'; put 'put ''Z2F0aXZlPUYubmVnYXRpdmVeUy5uZWdhdGl2ZSx5ZS5sZW5ndGg9Uy5sZW5ndGgrRi5sZW5ndGg7Zm9yKHZhciBDZT0wLERlPTAsUGU9MDtQZTx5ZS5sZW5ndGgtMTtQZSsrKXt2YXIgUWU9RGU7RGU9MDtmb3IodmFyICRlPTY3MTA4ODYzJkNlLGd0PU1hdGgubWluKFBlLEYubGVuZ3RoLTEp''@;'; put 'put ''LHl0PU1hdGgubWF4KDAsUGUtUy5sZW5ndGgrMSk7eXQ8PWd0O3l0Kyspe3ZhciBtdD0oMHxTLndvcmRzW1BlLXl0XSkqKDB8Ri53b3Jkc1t5dF0pLHZ0PTY3MTA4ODYzJm10OyRlPTY3MTA4ODYzJih2dD12dCskZXwwKSxEZSs9KFFlPShRZT1RZSsobXQvNjcxMDg4NjR8MCl8MCkrKHZ0Pj4+''@;'; put 'put ''MjYpfDApPj4+MjYsUWUmPTY3MTA4ODYzfXllLndvcmRzW1BlXT0kZSxDZT1RZSxRZT1EZX1yZXR1cm4gMCE9PUNlP3llLndvcmRzW1BlXT1DZTp5ZS5sZW5ndGgtLSx5ZS5zdHJpcCgpfSh0aGlzLHgsUCk6a2UodGhpcyx4LFApfSxTZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih4KXtm''@;'; put 'put ''b3IodmFyIFA9bmV3IEFycmF5KHgpLFY9Ti5wcm90b3R5cGUuX2NvdW50Qml0cyh4KS0xLFQ9MDtUPHg7VCsrKVBbVF09dGhpcy5yZXZCaW4oVCxWLHgpO3JldHVybiBQfSxTZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHgsUCxWKXtpZigwPT09eHx8eD09PVYtMSlyZXR1cm4geDtmb3Io''@;'; put 'put ''dmFyIFQ9MCxTPTA7UzxQO1MrKylUfD0oMSZ4KTw8UC1TLTEseD4+PTE7cmV0dXJuIFR9LFNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXtmb3IodmFyIHllPTA7eWU8Rjt5ZSsrKVRbeWVdPVBbeFt5ZV1dLFNbeWVdPVZbeFt5ZV1dfSxTZS5wcm90b3R5cGUudHJh''@;'; put 'put ''bnNmb3JtPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXt0aGlzLnBlcm11dGUoRix4LFAsVixULFMpO2Zvcih2YXIgeWU9MTt5ZTxTO3llPDw9MSlmb3IodmFyIENlPXllPDwxLERlPU1hdGguY29zKDIqTWF0aC5QSS9DZSksUGU9TWF0aC5zaW4oMipNYXRoLlBJL0NlKSxRZT0wO1FlPFM7UWUrPUNl''@;'; put 'put ''KWZvcih2YXIgJGU9RGUsZ3Q9UGUseXQ9MDt5dDx5ZTt5dCsrKXt2YXIgcHQ9VltRZSt5dF0sbXQ9VFtRZSt5dF0sdnQ9VltRZSt5dCt5ZV0sZnQ9VFtRZSt5dCt5ZV0sRnQ9JGUqdnQtZ3QqZnQ7ZnQ9JGUqZnQrZ3QqdnQsVltRZSt5dF09cHQrKHZ0PUZ0KSxUW1FlK3l0XT1tdCtmdCxWW1Fl''@;'; put 'put ''K3l0K3llXT1wdC12dCxUW1FlK3l0K3llXT1tdC1mdCx5dCE9PUNlJiYoRnQ9RGUqJGUtUGUqZ3QsZ3Q9RGUqZ3QrUGUqJGUsJGU9RnQpfX0sU2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHgsUCl7dmFyIFY9MXxNYXRoLm1heChQLHgpLFQ9MSZWLFM9MDtmb3IoVj1WLzJ8MDtW''@;'; put 'put ''O1Y+Pj49MSlTKys7cmV0dXJuIDE8PFMrMStUfSxTZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKHgsUCxWKXtpZighKFY8PTEpKWZvcih2YXIgVD0wO1Q8Vi8yO1QrKyl7dmFyIFM9eFtUXTt4W1RdPXhbVi1ULTFdLHhbVi1ULTFdPVMsUz1QW1RdLFBbVF09LVBbVi1ULTFdLFBbVi1U''@;'; put 'put ''LTFdPS1TfX0sU2UucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj0wLFQ9MDtUPFAvMjtUKyspe3ZhciBTPTgxOTIqTWF0aC5yb3VuZCh4WzIqVCsxXS9QKStNYXRoLnJvdW5kKHhbMipUXS9QKStWO3hbVF09NjcxMDg4NjMmUyxWPVM8NjcxMDg4NjQ/MDpT''@;'; put 'put ''LzY3MTA4ODY0fDB9cmV0dXJuIHh9LFNlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHgsUCxWLFQpe2Zvcih2YXIgUz0wLEY9MDtGPFA7RisrKVZbMipGXT04MTkxJihTKz0wfHhbRl0pLFZbMipGKzFdPTgxOTEmKFM+Pj49MTMpLFM+Pj49MTM7Zm9yKEY9MipQO0Y8VDsrK0YpVltG''@;'; put 'put ''XT0wO1koMD09PVMpLFkoMD09KC04MTkyJlMpKX0sU2UucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPW5ldyBBcnJheSh4KSxWPTA7Vjx4O1YrKylQW1ZdPTA7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVD0yKnRoaXMuZ3Vlc3NM''@;'; put 'put ''ZW4xM2IoeC5sZW5ndGgsUC5sZW5ndGgpLFM9dGhpcy5tYWtlUkJUKFQpLEY9dGhpcy5zdHViKFQpLHllPW5ldyBBcnJheShUKSxDZT1uZXcgQXJyYXkoVCksRGU9bmV3IEFycmF5KFQpLFBlPW5ldyBBcnJheShUKSxRZT1uZXcgQXJyYXkoVCksJGU9bmV3IEFycmF5KFQpLGd0PVYud29yZHM7''@;'; put 'put ''Z3QubGVuZ3RoPVQsdGhpcy5jb252ZXJ0MTNiKHgud29yZHMseC5sZW5ndGgseWUsVCksdGhpcy5jb252ZXJ0MTNiKFAud29yZHMsUC5sZW5ndGgsUGUsVCksdGhpcy50cmFuc2Zvcm0oeWUsRixDZSxEZSxULFMpLHRoaXMudHJhbnNmb3JtKFBlLEYsUWUsJGUsVCxTKTtmb3IodmFyIHl0PTA7''@;'; put 'put ''eXQ8VDt5dCsrKXt2YXIgcHQ9Q2VbeXRdKlFlW3l0XS1EZVt5dF0qJGVbeXRdO0RlW3l0XT1DZVt5dF0qJGVbeXRdK0RlW3l0XSpRZVt5dF0sQ2VbeXRdPXB0fXJldHVybiB0aGlzLmNvbmp1Z2F0ZShDZSxEZSxUKSx0aGlzLnRyYW5zZm9ybShDZSxEZSxndCxGLFQsUyksdGhpcy5jb25qdWdh''@;'; put 'put ''dGUoZ3QsRixUKSx0aGlzLm5vcm1hbGl6ZTEzYihndCxUKSxWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5uZWdhdGl2ZSxWLmxlbmd0aD14Lmxlbmd0aCtQLmxlbmd0aCxWLnN0cmlwKCl9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jk''@;'; put 'put ''cz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLHRoaXMubXVsVG8oeCxQKX0sTi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLGtlKHRoaXMseCxQKX0sTi5wcm90''@;'; put 'put ''b3R5cGUuaW11bD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHgsdGhpcyl9LE4ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpO2Zvcih2YXIgUD0wLFY9MDtWPHRoaXMubGVuZ3RoO1YrKyl7dmFyIFQ9''@;'; put 'put ''KDB8dGhpcy53b3Jkc1tWXSkqeCxTPSg2NzEwODg2MyZUKSsoNjcxMDg4NjMmUCk7UD4+PTI2LFArPVQvNjcxMDg4NjR8MCxQKz1TPj4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZTfXJldHVybiAwIT09UCYmKHRoaXMud29yZHNbVl09UCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5tdWxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeCl9LE4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTi5w''@;'; put 'put ''cm90b3R5cGUucG93PWZ1bmN0aW9uKHgpe3ZhciBQPWZ1bmN0aW9uKEYpe2Zvcih2YXIgeWU9bmV3IEFycmF5KEYuYml0TGVuZ3RoKCkpLENlPTA7Q2U8eWUubGVuZ3RoO0NlKyspe3ZhciBQZT1DZSUyNjt5ZVtDZV09KEYud29yZHNbQ2UvMjZ8MF0mMTw8UGUpPj4+UGV9cmV0dXJuIHllfSh4''@;'; put 'put ''KTtpZigwPT09UC5sZW5ndGgpcmV0dXJuIG5ldyBOKDEpO2Zvcih2YXIgVj10aGlzLFQ9MDtUPFAubGVuZ3RoJiYwPT09UFtUXTtUKyssVj1WLnNxcigpKTtpZigrK1Q8UC5sZW5ndGgpZm9yKHZhciBTPVYuc3FyKCk7VDxQLmxlbmd0aDtUKyssUz1TLnNxcigpKTAhPT1QW1RdJiYoVj1WLm11''@;'; put 'put ''bChTKSk7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFAsVj14JTI2LFQ9KHgtVikvMjYsUz02NzEwODg2Mz4+PjI2LVY8PDI2LVY7aWYoMCE9PVYpe3ZhciBGPTA7Zm9yKFA9MDtQPHRoaXMubGVuZ3RoO1Ar''@;'; put 'put ''Kyl7dmFyIHllPXRoaXMud29yZHNbUF0mUzt0aGlzLndvcmRzW1BdPSgwfHRoaXMud29yZHNbUF0pLXllPDxWfEYsRj15ZT4+PjI2LVZ9RiYmKHRoaXMud29yZHNbUF09Rix0aGlzLmxlbmd0aCsrKX1pZigwIT09VCl7Zm9yKFA9dGhpcy5sZW5ndGgtMTtQPj0wO1AtLSl0aGlzLndvcmRzW1Ar''@;'; put 'put ''VF09dGhpcy53b3Jkc1tQXTtmb3IoUD0wO1A8VDtQKyspdGhpcy53b3Jkc1tQXT0wO3RoaXMubGVuZ3RoKz1UfXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih4KX0sTi5wcm90''@;'; put 'put ''b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVDtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCksVD1QPyhQLVAlMjYpLzI2OjA7dmFyIFM9eCUyNixGPU1hdGgubWluKCh4LVMpLzI2LHRoaXMubGVuZ3RoKSx5ZT02NzEwODg2M142NzEwODg2Mz4+PlM8PFMsQ2U9VjtpZihULT1G''@;'; put 'put ''LFQ9TWF0aC5tYXgoMCxUKSxDZSl7Zm9yKHZhciBEZT0wO0RlPEY7RGUrKylDZS53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZV07Q2UubGVuZ3RoPUZ9aWYoMCE9PUYpaWYodGhpcy5sZW5ndGg+Rilmb3IodGhpcy5sZW5ndGgtPUYsRGU9MDtEZTx0aGlzLmxlbmd0aDtEZSsrKXRoaXMud29yZHNb''@;'; put 'put ''RGVdPXRoaXMud29yZHNbRGUrRl07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgUGU9MDtmb3IoRGU9dGhpcy5sZW5ndGgtMTtEZT49MCYmKDAhPT1QZXx8RGU+PVQpO0RlLS0pe3ZhciBRZT0wfHRoaXMud29yZHNbRGVdO3RoaXMud29yZHNbRGVdPVBlPDwyNi1TfFFl''@;'; put 'put ''Pj4+UyxQZT1RZSZ5ZX1yZXR1cm4gQ2UmJjAhPT1QZSYmKENlLndvcmRzW0NlLmxlbmd0aCsrXT1QZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZ''@;'; put 'put ''KDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih4LFAsVil9LE4ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih4KX0sTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oeCl9LE4ucHJv''@;'; put 'put ''dG90eXBlLnNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih4KX0sTi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oeCl9LE4ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4''@;'; put 'put ''JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Vnx8ISh0aGlzLndvcmRzW1ZdJjE8PFApKX0sTi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJu''@;'; put 'put ''IFkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1WP3RoaXM6KDAhPT1QJiZWKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oVix0aGlzLmxlbmd0aCksMCE9PVAmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFd''@;'; put 'put ''Jj02NzEwODg2M142NzEwODg2Mz4+PlA8PFApLHRoaXMuc3RyaXAoKSl9LE4ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHgpfSxOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gWSgibnVtYmVyIj09dHlwZW9mIHgpLFko''@;'; put 'put ''eDw2NzEwODg2NCkseDwwP3RoaXMuaXN1Ym4oLXgpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8eD8odGhpcy53b3Jkc1swXT14LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMu''@;'; put 'put ''aXN1Ym4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHgpfSxOLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oeCl7dGhpcy53b3Jkc1swXSs9eDtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW1BdPj02NzEwODg2NDtQKyspdGhpcy53b3Jkc1tQXS09''@;'; put 'put ''NjcxMDg4NjQsUD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tQKzFdPTE6dGhpcy53b3Jkc1tQKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFArMSksdGhpc30sTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oeCl7aWYoWSgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IHgpLFkoeDw2NzEwODg2NCkseDwwKXJldHVybiB0aGlzLmlhZGRuKC14KTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09eCwxPT09dGhpcy5sZW5ndGgmJnRoaXMu''@;'; put 'put ''d29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF08MDtQKyspdGhpcy53b3Jkc1tQXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tQKzFdLT0xO3JldHVybiB0aGlzLnN0''@;'; put 'put ''cmlwKCl9LE4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbih4KX0sTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKHgpfSxOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''bmVnYXRpdmU9MCx0aGlzfSxOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTO3RoaXMuX2V4cGFuZCh4Lmxlbmd0aCtWKTt2YXIgeWU9MDtmb3IoVD0wO1Q8''@;'; put 'put ''eC5sZW5ndGg7VCsrKXtTPSgwfHRoaXMud29yZHNbVCtWXSkreWU7dmFyIENlPSgwfHgud29yZHNbVF0pKlA7eWU9KChTLT02NzEwODg2MyZDZSk+PjI2KS0oQ2UvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlN9Zm9yKDtUPHRoaXMubGVuZ3RoLVY7VCsrKXllPShTPSgw''@;'; put 'put ''fHRoaXMud29yZHNbVCtWXSkreWUpPj4yNix0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmUztpZigwPT09eWUpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoWSgtMT09PXllKSx5ZT0wLFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl5ZT0oUz0tKDB8dGhpcy53b3Jkc1tUXSkreWUpPj4yNix0aGlzLndv''@;'; put 'put ''cmRzW1RdPTY3MTA4ODYzJlM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKHgsUCl7dmFyIFYsVD10aGlzLmNsb25lKCksUz14LEY9MHxTLndvcmRzW1MubGVuZ3RoLTFdOzAhPShWPTI2LXRoaXMuX2NvdW50Qml0cyhG''@;'; put 'put ''KSkmJihTPVMudXNobG4oViksVC5pdXNobG4oViksRj0wfFMud29yZHNbUy5sZW5ndGgtMV0pO3ZhciB5ZSxDZT1ULmxlbmd0aC1TLmxlbmd0aDtpZigibW9kIiE9PVApeyh5ZT1uZXcgTihudWxsKSkubGVuZ3RoPUNlKzEseWUud29yZHM9bmV3IEFycmF5KHllLmxlbmd0aCk7Zm9yKHZhciBE''@;'; put 'put ''ZT0wO0RlPHllLmxlbmd0aDtEZSsrKXllLndvcmRzW0RlXT0wfXZhciBQZT1ULmNsb25lKCkuX2lzaGxuc3VibXVsKFMsMSxDZSk7MD09PVBlLm5lZ2F0aXZlJiYoVD1QZSx5ZSYmKHllLndvcmRzW0NlXT0xKSk7Zm9yKHZhciBRZT1DZS0xO1FlPj0wO1FlLS0pe3ZhciAkZT02NzEwODg2NCoo''@;'; put 'put ''MHxULndvcmRzW1MubGVuZ3RoK1FlXSkrKDB8VC53b3Jkc1tTLmxlbmd0aCtRZS0xXSk7Zm9yKCRlPU1hdGgubWluKCRlL0Z8MCw2NzEwODg2MyksVC5faXNobG5zdWJtdWwoUywkZSxRZSk7MCE9PVQubmVnYXRpdmU7KSRlLS0sVC5uZWdhdGl2ZT0wLFQuX2lzaGxuc3VibXVsKFMsMSxRZSks''@;'; put 'put ''VC5pc1plcm8oKXx8KFQubmVnYXRpdmVePTEpO3llJiYoeWUud29yZHNbUWVdPSRlKX1yZXR1cm4geWUmJnllLnN0cmlwKCksVC5zdHJpcCgpLCJkaXYiIT09UCYmMCE9PVYmJlQuaXVzaHJuKFYpLHtkaXY6eWV8fG51bGwsbW9kOlR9fSxOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''LFYpe3JldHVybiBZKCF4LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IE4oMCksbW9kOm5ldyBOKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmU/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeCxQKSwibW9kIiE9PVAmJihUPUYuZGl2Lm5lZygpKSwiZGl2IiE9PVAm''@;'; put 'put ''JihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlhZGQoeCkpLHtkaXY6VCxtb2Q6U30pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZT8oRj10aGlzLmRpdm1vZCh4Lm5lZygpLFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLHtkaXY6VCxtb2Q6Ri5tb2R9''@;'; put 'put ''KTowIT0odGhpcy5uZWdhdGl2ZSZ4Lm5lZ2F0aXZlKT8oRj10aGlzLm5lZygpLmRpdm1vZCh4Lm5lZygpLFApLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaXN1Yih4KSkse2RpdjpGLmRpdixtb2Q6U30pOngubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlz''@;'; put 'put ''LmNtcCh4KTwwP3tkaXY6bmV3IE4oMCksbW9kOnRoaXN9OjE9PT14Lmxlbmd0aD8iZGl2Ij09PVA/e2Rpdjp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09UD97ZGl2Om51bGwsbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHgu''@;'; put 'put ''d29yZHNbMF0pLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHgsUCk7dmFyIFQsUyxGfSxOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsImRpdiIsITEpLmRpdn0sTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHgp''@;'; put 'put ''e3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCExKS5tb2R9LE4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITApLm1vZH0sTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5kaXZtb2QoeCk7aWYoUC5tb2Qu''@;'; put 'put ''aXNaZXJvKCkpcmV0dXJuIFAuZGl2O3ZhciBWPTAhPT1QLmRpdi5uZWdhdGl2ZT9QLm1vZC5pc3ViKHgpOlAubW9kLFQ9eC51c2hybigxKSxTPXguYW5kbG4oMSksRj1WLmNtcChUKTtyZXR1cm4gRjwwfHwxPT09UyYmMD09PUY/UC5kaXY6MCE9PVAuZGl2Lm5lZ2F0aXZlP1AuZGl2LmlzdWJu''@;'; put 'put ''KDEpOlAuZGl2LmlhZGRuKDEpfSxOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD02NzEwODg2NCV4LFY9MCxUPXRoaXMubGVuZ3RoLTE7VD49MDtULS0pVj0oUCpWKygwfHRoaXMud29yZHNbVF0pKSV4O3JldHVybiBWfSxOLnByb3RvdHlwZS5p''@;'; put 'put ''ZGl2bj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKzY3MTA4ODY0KlA7dGhpcy53b3Jkc1tWXT1UL3h8MCxQPVQleH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5k''@;'; put 'put ''aXZuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oeCl9LE4ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSksWSgheC5pc1plcm8oKSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQPTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25l''@;'; put 'put ''KCk7Zm9yKHZhciBUPW5ldyBOKDEpLFM9bmV3IE4oMCksRj1uZXcgTigwKSx5ZT1uZXcgTigxKSxDZT0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7KVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpLCsrQ2U7Zm9yKHZhciBEZT1WLmNsb25lKCksUGU9UC5jbG9uZSgpOyFQLmlzWmVybygpOyl7Zm9y''@;'; put 'put ''KHZhciBRZT0wLCRlPTE7MD09KFAud29yZHNbMF0mJGUpJiZRZTwyNjsrK1FlLCRlPDw9MSk7aWYoUWU+MClmb3IoUC5pdXNocm4oUWUpO1FlLS0gPjA7KShULmlzT2RkKCl8fFMuaXNPZGQoKSkmJihULmlhZGQoRGUpLFMuaXN1YihQZSkpLFQuaXVzaHJuKDEpLFMuaXVzaHJuKDEpO2Zvcih2''@;'; put 'put ''YXIgZ3Q9MCx5dD0xOzA9PShWLndvcmRzWzBdJnl0KSYmZ3Q8MjY7KytndCx5dDw8PTEpO2lmKGd0PjApZm9yKFYuaXVzaHJuKGd0KTtndC0tID4wOykoRi5pc09kZCgpfHx5ZS5pc09kZCgpKSYmKEYuaWFkZChEZSkseWUuaXN1YihQZSkpLEYuaXVzaHJuKDEpLHllLml1c2hybigxKTtQLmNt''@;'; put 'put ''cChWKT49MD8oUC5pc3ViKFYpLFQuaXN1YihGKSxTLmlzdWIoeWUpKTooVi5pc3ViKFApLEYuaXN1YihUKSx5ZS5pc3ViKFMpKX1yZXR1cm57YTpGLGI6eWUsZ2NkOlYuaXVzaGxuKENlKX19LE4ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4Lmlz''@;'; put 'put ''WmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQsUz1uZXcgTigxKSxGPW5ldyBOKDApLHllPVYuY2xvbmUoKTtQLmNtcG4oMSk+MCYmVi5jbXBuKDEpPjA7KXtmb3IodmFyIENlPTAsRGU9MTswPT0oUC53''@;'; put 'put ''b3Jkc1swXSZEZSkmJkNlPDI2OysrQ2UsRGU8PD0xKTtpZihDZT4wKWZvcihQLml1c2hybihDZSk7Q2UtLSA+MDspUy5pc09kZCgpJiZTLmlhZGQoeWUpLFMuaXVzaHJuKDEpO2Zvcih2YXIgUGU9MCxRZT0xOzA9PShWLndvcmRzWzBdJlFlKSYmUGU8MjY7KytQZSxRZTw8PTEpO2lmKFBlPjAp''@;'; put 'put ''Zm9yKFYuaXVzaHJuKFBlKTtQZS0tID4wOylGLmlzT2RkKCkmJkYuaWFkZCh5ZSksRi5pdXNocm4oMSk7UC5jbXAoVik+PTA/KFAuaXN1YihWKSxTLmlzdWIoRikpOihWLmlzdWIoUCksRi5pc3ViKFMpKX1yZXR1cm4oVD0wPT09UC5jbXBuKDEpP1M6RikuY21wbigwKTwwJiZULmlhZGQoeCks''@;'; put 'put ''VH0sTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHguYWJzKCk7aWYoeC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgUD10aGlzLmNsb25lKCksVj14LmNsb25lKCk7UC5uZWdhdGl2ZT0wLFYubmVnYXRpdmU9MDtmb3IodmFyIFQ9MDtQ''@;'; put 'put ''LmlzRXZlbigpJiZWLmlzRXZlbigpO1QrKylQLml1c2hybigxKSxWLml1c2hybigxKTtmb3IoOzspe2Zvcig7UC5pc0V2ZW4oKTspUC5pdXNocm4oMSk7Zm9yKDtWLmlzRXZlbigpOylWLml1c2hybigxKTt2YXIgUz1QLmNtcChWKTtpZihTPDApe3ZhciBGPVA7UD1WLFY9Rn1lbHNlIGlmKDA9''@;'; put 'put ''PT1TfHwwPT09Vi5jbXBuKDEpKWJyZWFrO1AuaXN1YihWKX1yZXR1cm4gVi5pdXNobG4oVCl9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZWdjZCh4KS5hLnVtb2QoeCl9LE4ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndv''@;'; put 'put ''cmRzWzBdKX0sTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LE4ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLndvcmRzWzBdJnh9LE4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5''@;'; put 'put ''cGVvZiB4KTt2YXIgUD14JTI2LFY9KHgtUCkvMjYsVD0xPDxQO2lmKHRoaXMubGVuZ3RoPD1WKXJldHVybiB0aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdfD1ULHRoaXM7Zm9yKHZhciBTPVQsRj1WOzAhPT1TJiZGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIHllPTB8dGhpcy53b3Jkc1tG''@;'; put 'put ''XTtTPSh5ZSs9Uyk+Pj4yNix0aGlzLndvcmRzW0ZdPXllJj02NzEwODg2M31yZXR1cm4gMCE9PVMmJih0aGlzLndvcmRzW0ZdPVMsdGhpcy5sZW5ndGgrKyksdGhpc30sTi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNb''@;'; put 'put ''MF19LE4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oeCl7dmFyIFAsVj14PDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFWKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZWKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKVA9MTtlbHNle1YmJih4PS14KSxZKHg8''@;'; put 'put ''PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBUPTB8dGhpcy53b3Jkc1swXTtQPVQ9PT14PzA6VDx4Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHgpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdh''@;'; put 'put ''dGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIDE7dmFyIFA9dGhpcy51Y21wKHgpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oeCl7aWYodGhpcy5sZW5ndGg+eC5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8eC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBQPTAsVj10aGlzLmxlbmd0aC0xO1Y+PTA7Vi0tKXt2YXIgVD0wfHRoaXMud29yZHNbVl0sUz0wfHgud29yZHNbVl07aWYoVCE9PVMpe1Q8Uz9QPS0xOlQ+UyYmKFA9MSk7YnJlYWt9fXJldHVybiBQfSxO''@;'; put 'put ''LnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHgpe3JldHVybiAxPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KT49MH0sTi5wcm90b3R5''@;'; put 'put ''cGUuZ3RlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KT49MH0sTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5sdD1mdW5jdGlvbih4KXtyZXR1cm4tMT09PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5sdGVuPWZ1''@;'; put 'put ''bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk8PTB9LE4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXAoeCk8PTB9LE4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oeCl7''@;'; put 'put ''cmV0dXJuIDA9PT10aGlzLmNtcCh4KX0sTi5yZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBuZSh4KX0sTi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksWSgwPT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24g''@;'; put 'put ''Y29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxOLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucmVkPXgsdGhpc30sTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVy''@;'; put 'put ''IGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5y''@;'; put 'put ''ZWRJQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLHgpfSxOLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRTaGw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5tdWwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk''@;'; put 'put ''Ll92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQuaW11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0''@;'; put 'put ''aGlzKX0sTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE4ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEludm0g''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz''@;'; put 'put ''LnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCYmIXgucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHgpfTt2''@;'; put 'put ''YXIgSWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBUZSh4LFApe3RoaXMubmFtZT14LHRoaXMucD1uZXcgTihQLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMu''@;'; put 'put ''cCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gRWUoKXtUZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGhlKCl7VGUuY2FsbCh0aGlzLCJwMjI0''@;'; put 'put ''IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBPKCl7VGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlv''@;'; put 'put ''biB6KCl7VGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBuZSh4KXtpZigic3RyaW5nIj09dHlwZW9mIHgpe3ZhciBQPU4uX3ByaW1lKHgpO3RoaXMubT1QLnAs''@;'; put 'put ''dGhpcy5wcmltZT1QfWVsc2UgWSh4Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPXgsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIHRlKHgpe25lLmNhbGwodGhpcyx4KSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0w''@;'; put 'put ''JiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBOKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5p''@;'; put 'put ''c3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KE1hdGguY2Vp''@;'; put 'put ''bCh0aGlzLm4vMTMpKSx4fSxUZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih4KXt2YXIgUCxWPXg7ZG97dGhpcy5zcGxpdChWLHRoaXMudG1wKSxQPShWPShWPXRoaXMuaW11bEsoVikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShQPnRoaXMubik7dmFyIFQ9UDx0aGlz''@;'; put 'put ''Lm4/LTE6Vi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1UPyhWLndvcmRzWzBdPTAsVi5sZW5ndGg9MSk6VD4wP1YuaXN1Yih0aGlzLnApOnZvaWQgMCE9PVYuc3RyaXA/Vi5zdHJpcCgpOlYuX3N0cmlwKCksVn0sVGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7eC5pdXNocm4odGhp''@;'; put 'put ''cy5uLDAsUCl9LFRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtyZXR1cm4geC5pbXVsKHRoaXMuayl9LFcoRWUsVGUpLEVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj00MTk0MzAzLFQ9TWF0aC5taW4oeC5sZW5ndGgsOSksUz0wO1M8VDtTKyspUC53b3Jk''@;'; put 'put ''c1tTXT14LndvcmRzW1NdO2lmKFAubGVuZ3RoPVQseC5sZW5ndGg8PTkpcmV0dXJuIHgud29yZHNbMF09MCx2b2lkKHgubGVuZ3RoPTEpO3ZhciBGPXgud29yZHNbOV07Zm9yKFAud29yZHNbUC5sZW5ndGgrK109RiZWLFM9MTA7Uzx4Lmxlbmd0aDtTKyspe3ZhciB5ZT0wfHgud29yZHNbU107''@;'; put 'put ''eC53b3Jkc1tTLTEwXT0oeWUmVik8PDR8Rj4+PjIyLEY9eWV9eC53b3Jkc1tTLTEwXT1GPj4+PTIyLHgubGVuZ3RoLT0wPT09RiYmeC5sZW5ndGg+MTA/MTA6OX0sRWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3gud29yZHNbeC5sZW5ndGhdPTAseC53b3Jkc1t4Lmxlbmd0aCsxXT0w''@;'; put 'put ''LHgubGVuZ3RoKz0yO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MHx4LndvcmRzW1ZdO3gud29yZHNbVl09NjcxMDg4NjMmKFArPTk3NypUKSxQPTY0KlQrKFAvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiYoeC5sZW5ndGgtLSwwPT09''@;'; put 'put ''eC53b3Jkc1t4Lmxlbmd0aC0xXSYmeC5sZW5ndGgtLSkseH0sVyhoZSxUZSksVyhPLFRlKSxXKHosVGUpLHoucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MTkqKDB8eC53b3Jkc1tWXSkrUCxTPTY3MTA4ODYzJlQ7VD4+''@;'; put 'put ''Pj0yNix4LndvcmRzW1ZdPVMsUD1UfXJldHVybiAwIT09UCYmKHgud29yZHNbeC5sZW5ndGgrK109UCkseH0sTi5fcHJpbWU9ZnVuY3Rpb24oeCl7aWYoSWVbeF0pcmV0dXJuIEllW3hdO3ZhciBQO2lmKCJrMjU2Ij09PXgpUD1uZXcgRWU7ZWxzZSBpZigicDIyNCI9PT14KVA9bmV3IGhlO2Vs''@;'; put 'put ''c2UgaWYoInAxOTIiPT09eClQPW5ldyBPO2Vsc2V7aWYoInAyNTUxOSIhPT14KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK3gpO1A9bmV3IHp9cmV0dXJuIEllW3hdPVAsUH0sbmUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUsInJlZCB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxuZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oeCxQKXtZKDA9PSh4Lm5lZ2F0aXZlfFAubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZl''@;'; put 'put ''cyIpLFkoeC5yZWQmJngucmVkPT09UC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbmUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHgpLl9mb3JjZVJlZCh0aGlzKTp4LnVtb2QodGhpcy5tKS5f''@;'; put 'put ''Zm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaXNaZXJvKCk/eC5jbG9uZSgpOnRoaXMubS5zdWIoeCkuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguYWRk''@;'; put 'put ''KFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sbmUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhp''@;'; put 'put ''cy5tKSxWfSxuZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5f''@;'; put 'put ''dmVyaWZ5Mih4LFApO3ZhciBWPXguaXN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlzLm0pLFZ9LG5lLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh4KSx0aGlzLmltb2QoeC51c2hsbihQKSl9LG5lLnByb3RvdHlwZS5pbXVsPWZ1''@;'; put 'put ''bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5pbXVsKFApKX0sbmUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHgubXVsKFApKX0sbmUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24o''@;'; put 'put ''eCl7cmV0dXJuIHRoaXMuaW11bCh4LHguY2xvbmUoKSl9LG5lLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubXVsKHgseCl9LG5lLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIHguY2xvbmUoKTt2YXIgUD10aGlzLm0uYW5kbG4o''@;'; put 'put ''Myk7aWYoWShQJTI9PTEpLDM9PT1QKXt2YXIgVj10aGlzLm0uYWRkKG5ldyBOKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KHgsVil9Zm9yKHZhciBUPXRoaXMubS5zdWJuKDEpLFM9MDshVC5pc1plcm8oKSYmMD09PVQuYW5kbG4oMSk7KVMrKyxULml1c2hybigxKTtZKCFULmlzWmVy''@;'; put 'put ''bygpKTt2YXIgRj1uZXcgTigxKS50b1JlZCh0aGlzKSx5ZT1GLnJlZE5lZygpLENlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxEZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKERlPW5ldyBOKDIqRGUqRGUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhEZSxDZSkuY21wKHllKTspRGUucmVk''@;'; put 'put ''SUFkZCh5ZSk7Zm9yKHZhciBQZT10aGlzLnBvdyhEZSxUKSxRZT10aGlzLnBvdyh4LFQuYWRkbigxKS5pdXNocm4oMSkpLCRlPXRoaXMucG93KHgsVCksZ3Q9UzswIT09JGUuY21wKEYpOyl7Zm9yKHZhciB5dD0kZSxwdD0wOzAhPT15dC5jbXAoRik7cHQrKyl5dD15dC5yZWRTcXIoKTtZKHB0''@;'; put 'put ''PGd0KTt2YXIgbXQ9dGhpcy5wb3coUGUsbmV3IE4oMSkuaXVzaGxuKGd0LXB0LTEpKTtRZT1RZS5yZWRNdWwobXQpLFBlPW10LnJlZFNxcigpLCRlPSRlLnJlZE11bChQZSksZ3Q9cHR9cmV0dXJuIFFlfSxuZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXt2YXIgUD14Ll9pbnZtcCh0aGlz''@;'; put 'put ''Lm0pO3JldHVybiAwIT09UC5uZWdhdGl2ZT8oUC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChQKS5yZWROZWcoKSk6dGhpcy5pbW9kKFApfSxuZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgsUCl7aWYoUC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMSkudG9SZWQodGhpcyk7aWYoMD09PVAuY21wbigx''@;'; put 'put ''KSlyZXR1cm4geC5jbG9uZSgpO3ZhciBWPW5ldyBBcnJheSgxNik7VlswXT1uZXcgTigxKS50b1JlZCh0aGlzKSxWWzFdPXg7Zm9yKHZhciBUPTI7VDxWLmxlbmd0aDtUKyspVltUXT10aGlzLm11bChWW1QtMV0seCk7dmFyIFM9VlswXSxGPTAseWU9MCxDZT1QLmJpdExlbmd0aCgpJTI2O2Zv''@;'; put 'put ''cigwPT09Q2UmJihDZT0yNiksVD1QLmxlbmd0aC0xO1Q+PTA7VC0tKXtmb3IodmFyIERlPVAud29yZHNbVF0sUGU9Q2UtMTtQZT49MDtQZS0tKXt2YXIgUWU9RGU+PlBlJjE7UyE9PVZbMF0mJihTPXRoaXMuc3FyKFMpKSwwIT09UWV8fDAhPT1GPyhGPDw9MSxGfD1RZSwoND09Kyt5ZXx8MD09''@;'; put 'put ''PVQmJjA9PT1QZSkmJihTPXRoaXMubXVsKFMsVltGXSkseWU9MCxGPTApKTp5ZT0wfUNlPTI2fXJldHVybiBTfSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3ZhciBQPXgudW1vZCh0aGlzLm0pO3JldHVybiBQPT09eD9QLmNsb25lKCk6UH0sbmUucHJvdG90eXBlLmNvbnZl''@;'; put 'put ''cnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXguY2xvbmUoKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSxOLm1vbnQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyB0ZSh4KX0sVyh0ZSxuZSksdGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHgudXNobG4odGhp''@;'; put 'put ''cy5zaGlmdCkpfSx0ZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5pbW9kKHgubXVsKHRoaXMucmludikpO3JldHVybiBQLnJlZD1udWxsLFB9LHRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1''@;'; put 'put ''cm4geC53b3Jkc1swXT0wLHgubGVuZ3RoPTEseDt2YXIgVj14LmltdWwoUCksVD1WLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4odGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlz''@;'; put 'put ''Lm0pPj0wP0Y9Uy5pc3ViKHRoaXMubSk6Uy5jbXBuKDApPDAmJihGPVMuaWFkZCh0aGlzLm0pKSxGLl9mb3JjZVJlZCh0aGlzKX0sdGUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDApLl9mb3JjZVJlZCh0aGlzKTt2''@;'; put 'put ''YXIgVj14Lm11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4o''@;'; put 'put ''MCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSx0ZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHguX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShVPVoubm1kKFUpLHRoaXMpfSw2OTQ4OihV''@;'; put 'put ''LFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVE7aWUudmVyc2lvbj1aKDg1OTcpLmk4LGllLnV0aWxzPVooOTUzKSxpZS5yYW5kPVooOTkzMSksaWUuY3VydmU9Wig4MjU0KSxpZS5jdXJ2ZXM9Wig1NDI3KSxpZS5lYz1aKDc5NTQpLGllLmVkZHNhPVooNTk4MCl9LDQ5MTg6KFUsUSxaKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9WigzNzg1KSxsZT1aKDk1MyksWT1sZS5nZXROQUYsVz1sZS5nZXRKU0YsTj1sZS5hc3NlcnQ7ZnVuY3Rpb24gZWUoSixzZSl7dGhpcy50eXBlPUosdGhpcy5wPW5ldyBpZShzZS5wLDE2KSx0aGlzLnJlZD1zZS5wcmltZT9pZS5yZWQoc2UucHJpbWUpOmll''@;'; put 'put ''Lm1vbnQodGhpcy5wKSx0aGlzLnplcm89bmV3IGllKDApLnRvUmVkKHRoaXMucmVkKSx0aGlzLm9uZT1uZXcgaWUoMSkudG9SZWQodGhpcy5yZWQpLHRoaXMudHdvPW5ldyBpZSgyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5uPXNlLm4mJm5ldyBpZShzZS5uLDE2KSx0aGlzLmc9c2UuZyYmdGhp''@;'; put 'put ''cy5wb2ludEZyb21KU09OKHNlLmcsc2UuZ1JlZCksdGhpcy5fd25hZlQxPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDI9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMz1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQ0PW5ldyBBcnJheSg0KSx0aGlzLl9iaXRMZW5ndGg9dGhpcy5uP3RoaXMubi5i''@;'; put 'put ''aXRMZW5ndGgoKTowO3ZhciBhZT10aGlzLm4mJnRoaXMucC5kaXYodGhpcy5uKTshYWV8fGFlLmNtcG4oMTAwKT4wP3RoaXMucmVkTj1udWxsOih0aGlzLl9tYXh3ZWxsVHJpY2s9ITAsdGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCkpfWZ1bmN0aW9uIHEoSixzZSl7dGhpcy5jdXJ2''@;'; put 'put ''ZT1KLHRoaXMudHlwZT1zZSx0aGlzLnByZWNvbXB1dGVkPW51bGx9VS5leHBvcnRzPWVlLGVlLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9LGVlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv''@;'; put 'put ''cigiTm90IGltcGxlbWVudGVkIil9LGVlLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24oSixzZSl7TihKLnByZWNvbXB1dGVkKTt2YXIgYWU9Si5fZ2V0RG91YmxlcygpLGZlPVkoc2UsMSx0aGlzLl9iaXRMZW5ndGgpLGRlPSgxPDxhZS5zdGVwKzEpLShhZS5zdGVwJTI9PTA/Mjox''@;'; put 'put ''KTtkZS89Mzt2YXIgdmUsQWUsa2U9W107Zm9yKHZlPTA7dmU8ZmUubGVuZ3RoO3ZlKz1hZS5zdGVwKXtBZT0wO2Zvcih2YXIgU2U9dmUrYWUuc3RlcC0xO1NlPj12ZTtTZS0tKUFlPShBZTw8MSkrZmVbU2VdO2tlLnB1c2goQWUpfWZvcih2YXIgSWU9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51''@;'; put 'put ''bGwpLFRlPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxFZT1kZTtFZT4wO0VlLS0pe2Zvcih2ZT0wO3ZlPGtlLmxlbmd0aDt2ZSsrKShBZT1rZVt2ZV0pPT09RWU/VGU9VGUubWl4ZWRBZGQoYWUucG9pbnRzW3ZlXSk6QWU9PT0tRWUmJihUZT1UZS5taXhlZEFkZChhZS5wb2ludHNbdmVd''@;'; put 'put ''Lm5lZygpKSk7SWU9SWUuYWRkKFRlKX1yZXR1cm4gSWUudG9QKCl9LGVlLnByb3RvdHlwZS5fd25hZk11bD1mdW5jdGlvbihKLHNlKXtmb3IodmFyIGFlPTQsZmU9Si5fZ2V0TkFGUG9pbnRzKGFlKSxkZT1mZS5wb2ludHMsdmU9WShzZSxhZT1mZS53bmQsdGhpcy5fYml0TGVuZ3RoKSxBZT10''@;'; put 'put ''aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksa2U9dmUubGVuZ3RoLTE7a2U+PTA7a2UtLSl7Zm9yKHZhciBTZT0wO2tlPj0wJiYwPT09dmVba2VdO2tlLS0pU2UrKztpZihrZT49MCYmU2UrKyxBZT1BZS5kYmxwKFNlKSxrZTwwKWJyZWFrO3ZhciBJZT12ZVtrZV07TigwIT09SWUpLEFlPSJh''@;'; put 'put ''ZmZpbmUiPT09Si50eXBlP0FlLm1peGVkQWRkKEllPjA/ZGVbSWUtMT4+MV06ZGVbLUllLTE+PjFdLm5lZygpKTpBZS5hZGQoSWU+MD9kZVtJZS0xPj4xXTpkZVstSWUtMT4+MV0ubmVnKCkpfXJldHVybiJhZmZpbmUiPT09Si50eXBlP0FlLnRvUCgpOkFlfSxlZS5wcm90b3R5cGUuX3duYWZN''@;'; put 'put ''dWxBZGQ9ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSl7dmFyIHZlLEFlLGtlLFNlPXRoaXMuX3duYWZUMSxJZT10aGlzLl93bmFmVDIsVGU9dGhpcy5fd25hZlQzLEVlPTA7Zm9yKHZlPTA7dmU8ZmU7dmUrKyl7dmFyIGhlPShrZT1zZVt2ZV0pLl9nZXROQUZQb2ludHMoSik7U2VbdmVdPWhlLndu''@;'; put 'put ''ZCxJZVt2ZV09aGUucG9pbnRzfWZvcih2ZT1mZS0xO3ZlPj0xO3ZlLT0yKXt2YXIgTz12ZS0xLHo9dmU7aWYoMT09PVNlW09dJiYxPT09U2Vbel0pe3ZhciBuZT1bc2VbT10sbnVsbCxudWxsLHNlW3pdXTswPT09c2VbT10ueS5jbXAoc2Vbel0ueSk/KG5lWzFdPXNlW09dLmFkZChzZVt6XSks''@;'; put 'put ''bmVbMl09c2VbT10udG9KKCkubWl4ZWRBZGQoc2Vbel0ubmVnKCkpKTowPT09c2VbT10ueS5jbXAoc2Vbel0ueS5yZWROZWcoKSk/KG5lWzFdPXNlW09dLnRvSigpLm1peGVkQWRkKHNlW3pdKSxuZVsyXT1zZVtPXS5hZGQoc2Vbel0ubmVnKCkpKToobmVbMV09c2VbT10udG9KKCkubWl4ZWRB''@;'; put 'put ''ZGQoc2Vbel0pLG5lWzJdPXNlW09dLnRvSigpLm1peGVkQWRkKHNlW3pdLm5lZygpKSk7dmFyIHRlPVstMywtMSwtNSwtNywwLDcsNSwxLDNdLHg9VyhhZVtPXSxhZVt6XSk7Zm9yKEVlPU1hdGgubWF4KHhbMF0ubGVuZ3RoLEVlKSxUZVtPXT1uZXcgQXJyYXkoRWUpLFRlW3pdPW5ldyBBcnJh''@;'; put 'put ''eShFZSksQWU9MDtBZTxFZTtBZSsrKVRlW09dW0FlXT10ZVszKigxKygwfHhbMF1bQWVdKSkrKDErKDB8eFsxXVtBZV0pKV0sVGVbel1bQWVdPTAsSWVbT109bmV9ZWxzZSBUZVtPXT1ZKGFlW09dLFNlW09dLHRoaXMuX2JpdExlbmd0aCksVGVbel09WShhZVt6XSxTZVt6XSx0aGlzLl9iaXRM''@;'; put 'put ''ZW5ndGgpLEVlPU1hdGgubWF4KFRlW09dLmxlbmd0aCxFZSksRWU9TWF0aC5tYXgoVGVbel0ubGVuZ3RoLEVlKX12YXIgVD10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksUz10aGlzLl93bmFmVDQ7Zm9yKHZlPUVlO3ZlPj0wO3ZlLS0pe2Zvcih2YXIgRj0wO3ZlPj0wOyl7dmFyIHllPSEw''@;'; put 'put ''O2ZvcihBZT0wO0FlPGZlO0FlKyspU1tBZV09MHxUZVtBZV1bdmVdLDAhPT1TW0FlXSYmKHllPSExKTtpZigheWUpYnJlYWs7RisrLHZlLS19aWYodmU+PTAmJkYrKyxUPVQuZGJscChGKSx2ZTwwKWJyZWFrO2ZvcihBZT0wO0FlPGZlO0FlKyspe3ZhciBDZT1TW0FlXTswIT09Q2UmJihDZT4w''@;'; put 'put ''P2tlPUllW0FlXVtDZS0xPj4xXTpDZTwwJiYoa2U9SWVbQWVdWy1DZS0xPj4xXS5uZWcoKSksVD0iYWZmaW5lIj09PWtlLnR5cGU/VC5taXhlZEFkZChrZSk6VC5hZGQoa2UpKX19Zm9yKHZlPTA7dmU8ZmU7dmUrKylJZVt2ZV09bnVsbDtyZXR1cm4gZGU/VDpULnRvUCgpfSxlZS5CYXNlUG9p''@;'; put 'put ''bnQ9cSxxLnByb3RvdHlwZS5lcT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9LHEucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyl9LGVlLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlv''@;'; put 'put ''bihKLHNlKXtKPWxlLnRvQXJyYXkoSixzZSk7dmFyIGFlPXRoaXMucC5ieXRlTGVuZ3RoKCk7aWYoKDQ9PT1KWzBdfHw2PT09SlswXXx8Nz09PUpbMF0pJiZKLmxlbmd0aC0xPT0yKmFlKXJldHVybiA2PT09SlswXT9OKEpbSi5sZW5ndGgtMV0lMj09MCk6Nz09PUpbMF0mJk4oSltKLmxlbmd0''@;'; put 'put ''aC0xXSUyPT0xKSx0aGlzLnBvaW50KEouc2xpY2UoMSwxK2FlKSxKLnNsaWNlKDErYWUsMSsyKmFlKSk7aWYoKDI9PT1KWzBdfHwzPT09SlswXSkmJkoubGVuZ3RoLTE9PT1hZSlyZXR1cm4gdGhpcy5wb2ludEZyb21YKEouc2xpY2UoMSwxK2FlKSwzPT09SlswXSk7dGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJVbmtub3duIHBvaW50IGZvcm1hdCIpfSxxLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLmVuY29kZShKLCEwKX0scS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihKKXt2YXIgc2U9dGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSxhZT10aGlz''@;'; put 'put ''LmdldFgoKS50b0FycmF5KCJiZSIsc2UpO3JldHVybiBKP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNvbmNhdChhZSk6WzRdLmNvbmNhdChhZSx0aGlzLmdldFkoKS50b0FycmF5KCJiZSIsc2UpKX0scS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEosc2Upe3JldHVybiBsZS5lbmNv''@;'; put 'put ''ZGUodGhpcy5fZW5jb2RlKHNlKSxKKX0scS5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbihKKXtpZih0aGlzLnByZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciBzZT17ZG91YmxlczpudWxsLG5hZjpudWxsLGJldGE6bnVsbH07cmV0dXJuIHNlLm5hZj10aGlzLl9nZXROQUZQb2ludHMo''@;'; put 'put ''OCksc2UuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsSiksc2UuYmV0YT10aGlzLl9nZXRCZXRhKCksdGhpcy5wcmVjb21wdXRlZD1zZSx0aGlzfSxxLnByb3RvdHlwZS5faGFzRG91Ymxlcz1mdW5jdGlvbihKKXtpZighdGhpcy5wcmVjb21wdXRlZClyZXR1cm4hMTt2YXIgc2U9dGhpcy5w''@;'; put 'put ''cmVjb21wdXRlZC5kb3VibGVzO3JldHVybiEhc2UmJnNlLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgoSi5iaXRMZW5ndGgoKSsxKS9zZS5zdGVwKX0scS5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24oSixzZSl7aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5k''@;'; put 'put ''b3VibGVzKXJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7Zm9yKHZhciBhZT1bdGhpc10sZmU9dGhpcyxkZT0wO2RlPHNlO2RlKz1KKXtmb3IodmFyIHZlPTA7dmU8Sjt2ZSsrKWZlPWZlLmRibCgpO2FlLnB1c2goZmUpfXJldHVybntzdGVwOkoscG9pbnRzOmFlfX0scS5wcm90b3R5''@;'; put 'put ''cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihKKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7Zm9yKHZhciBzZT1bdGhpc10sYWU9KDE8PEopLTEsZmU9MT09PWFlP251bGw6dGhpcy5kYmwoKSxkZT0xO2RlPGFl''@;'; put 'put ''O2RlKyspc2VbZGVdPXNlW2RlLTFdLmFkZChmZSk7cmV0dXJue3duZDpKLHBvaW50czpzZX19LHEucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHEucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oSil7Zm9yKHZhciBzZT10aGlzLGFlPTA7YWU8SjthZSsrKXNlPXNl''@;'; put 'put ''LmRibCgpO3JldHVybiBzZX19LDExMzg6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig5NTMpLGxlPVooMzc4NSksWT1aKDU3MTcpLFc9Wig0OTE4KSxOPWllLmFzc2VydDtmdW5jdGlvbiBlZShKKXt0aGlzLnR3aXN0ZWQ9MSE9KDB8Si5hKSx0aGlzLm1PbmVBPXRoaXMudHdpc3Rl''@;'; put 'put ''ZCYmLTE9PSgwfEouYSksdGhpcy5leHRlbmRlZD10aGlzLm1PbmVBLFcuY2FsbCh0aGlzLCJlZHdhcmRzIixKKSx0aGlzLmE9bmV3IGxlKEouYSwxNikudW1vZCh0aGlzLnJlZC5tKSx0aGlzLmE9dGhpcy5hLnRvUmVkKHRoaXMucmVkKSx0aGlzLmM9bmV3IGxlKEouYywxNikudG9SZWQodGhp''@;'; put 'put ''cy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgbGUoSi5kLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5kZD10aGlzLmQucmVkQWRkKHRoaXMuZCksTighdGhpcy50d2lzdGVkfHwwPT09dGhpcy5jLmZyb21SZWQoKS5jbXBuKDEpKSx0aGlzLm9uZUM9MT09KDB8Si5j''@;'; put 'put ''KX1mdW5jdGlvbiBxKEosc2UsYWUsZmUsZGUpe1cuQmFzZVBvaW50LmNhbGwodGhpcyxKLCJwcm9qZWN0aXZlIiksbnVsbD09PXNlJiZudWxsPT09YWUmJm51bGw9PT1mZT8odGhpcy54PXRoaXMuY3VydmUuemVybyx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUub25l''@;'; put 'put ''LHRoaXMudD10aGlzLmN1cnZlLnplcm8sdGhpcy56T25lPSEwKToodGhpcy54PW5ldyBsZShzZSwxNiksdGhpcy55PW5ldyBsZShhZSwxNiksdGhpcy56PWZlP25ldyBsZShmZSwxNik6dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PWRlJiZuZXcgbGUoZGUsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9''@;'; put 'put ''dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMudCYmIXRoaXMudC5yZWQmJih0aGlzLnQ9dGhpcy50''@;'; put 'put ''LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUub25lLHRoaXMuY3VydmUuZXh0ZW5kZWQmJiF0aGlzLnQmJih0aGlzLnQ9dGhpcy54LnJlZE11bCh0aGlzLnkpLHRoaXMuek9uZXx8KHRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZt''@;'; put 'put ''KCkpKSkpfVkoZWUsVyksVS5leHBvcnRzPWVlLGVlLnByb3RvdHlwZS5fbXVsQT1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5tT25lQT9KLnJlZE5lZygpOnRoaXMuYS5yZWRNdWwoSil9LGVlLnByb3RvdHlwZS5fbXVsQz1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5vbmVDP0o6dGhpcy5jLnJl''@;'; put 'put ''ZE11bChKKX0sZWUucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbihKLHNlLGFlLGZlKXtyZXR1cm4gdGhpcy5wb2ludChKLHNlLGFlLGZlKX0sZWUucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oSixzZSl7KEo9bmV3IGxlKEosMTYpKS5yZWR8fChKPUoudG9SZWQodGhpcy5yZWQpKTt2''@;'; put 'put ''YXIgYWU9Si5yZWRTcXIoKSxmZT10aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKGFlKSksZGU9dGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKGFlKSksdmU9ZmUucmVkTXVsKGRlLnJlZEludm0oKSksQWU9dmUucmVkU3FydCgpO2lmKDAhPT1BZS5yZWRT''@;'; put 'put ''cXIoKS5yZWRTdWIodmUpLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciBrZT1BZS5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oc2UmJiFrZXx8IXNlJiZrZSkmJihBZT1BZS5yZWROZWcoKSksdGhpcy5wb2ludChKLEFlKX0sZWUucHJvdG90eXBl''@;'; put 'put ''LnBvaW50RnJvbVk9ZnVuY3Rpb24oSixzZSl7KEo9bmV3IGxlKEosMTYpKS5yZWR8fChKPUoudG9SZWQodGhpcy5yZWQpKTt2YXIgYWU9Si5yZWRTcXIoKSxmZT1hZS5yZWRTdWIodGhpcy5jMiksZGU9YWUucmVkTXVsKHRoaXMuZCkucmVkTXVsKHRoaXMuYzIpLnJlZFN1Yih0aGlzLmEpLHZl''@;'; put 'put ''PWZlLnJlZE11bChkZS5yZWRJbnZtKCkpO2lmKDA9PT12ZS5jbXAodGhpcy56ZXJvKSl7aWYoc2UpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLEopfXZhciBBZT12ZS5yZWRTcXJ0KCk7aWYoMCE9PUFlLnJlZFNxcigpLnJlZFN1''@;'; put 'put ''Yih2ZSkuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIEFlLmZyb21SZWQoKS5pc09kZCgpIT09c2UmJihBZT1BZS5yZWROZWcoKSksdGhpcy5wb2ludChBZSxKKX0sZWUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKEope2lmKEouaXNJ''@;'; put 'put ''bmZpbml0eSgpKXJldHVybiEwO0oubm9ybWFsaXplKCk7dmFyIHNlPUoueC5yZWRTcXIoKSxhZT1KLnkucmVkU3FyKCksZmU9c2UucmVkTXVsKHRoaXMuYSkucmVkQWRkKGFlKSxkZT10aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bChzZSkucmVkTXVsKGFlKSkp''@;'; put 'put ''O3JldHVybiAwPT09ZmUuY21wKGRlKX0sWShxLFcuQmFzZVBvaW50KSxlZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihKKXtyZXR1cm4gcS5mcm9tSlNPTih0aGlzLEopfSxlZS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oSixzZSxhZSxmZSl7cmV0dXJuIG5ldyBxKHRoaXMs''@;'; put 'put ''SixzZSxhZSxmZSl9LHEuZnJvbUpTT049ZnVuY3Rpb24oSixzZSl7cmV0dXJuIG5ldyBxKEosc2VbMF0sc2VbMV0sc2VbMl0pfSxxLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50IHg6''@;'; put 'put ''ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LHEucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRo''@;'; put 'put ''aXMueC5jbXBuKDApJiYoMD09PXRoaXMueS5jbXAodGhpcy56KXx8dGhpcy56T25lJiYwPT09dGhpcy55LmNtcCh0aGlzLmN1cnZlLmMpKX0scS5wcm90b3R5cGUuX2V4dERibD1mdW5jdGlvbigpe3ZhciBKPXRoaXMueC5yZWRTcXIoKSxzZT10aGlzLnkucmVkU3FyKCksYWU9dGhpcy56LnJl''@;'; put 'put ''ZFNxcigpO2FlPWFlLnJlZElBZGQoYWUpO3ZhciBmZT10aGlzLmN1cnZlLl9tdWxBKEopLGRlPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKEopLnJlZElTdWIoc2UpLHZlPWZlLnJlZEFkZChzZSksQWU9dmUucmVkU3ViKGFlKSxrZT1mZS5yZWRTdWIoc2UpLFNlPWRl''@;'; put 'put ''LnJlZE11bChBZSksSWU9dmUucmVkTXVsKGtlKSxUZT1kZS5yZWRNdWwoa2UpLEVlPUFlLnJlZE11bCh2ZSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoU2UsSWUsRWUsVGUpfSxxLnByb3RvdHlwZS5fcHJvakRibD1mdW5jdGlvbigpe3ZhciBKLHNlLGFlLGZlLGRlLHZlLEFlPXRoaXMueC5y''@;'; put 'put ''ZWRBZGQodGhpcy55KS5yZWRTcXIoKSxrZT10aGlzLngucmVkU3FyKCksU2U9dGhpcy55LnJlZFNxcigpO2lmKHRoaXMuY3VydmUudHdpc3RlZCl7dmFyIEllPShmZT10aGlzLmN1cnZlLl9tdWxBKGtlKSkucmVkQWRkKFNlKTt0aGlzLnpPbmU/KEo9QWUucmVkU3ViKGtlKS5yZWRTdWIoU2Up''@;'; put 'put ''LnJlZE11bChJZS5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKSxzZT1JZS5yZWRNdWwoZmUucmVkU3ViKFNlKSksYWU9SWUucmVkU3FyKCkucmVkU3ViKEllKS5yZWRTdWIoSWUpKTooZGU9dGhpcy56LnJlZFNxcigpLHZlPUllLnJlZFN1YihkZSkucmVkSVN1YihkZSksSj1BZS5yZWRTdWIoa2Up''@;'; put 'put ''LnJlZElTdWIoU2UpLnJlZE11bCh2ZSksc2U9SWUucmVkTXVsKGZlLnJlZFN1YihTZSkpLGFlPUllLnJlZE11bCh2ZSkpfWVsc2UgZmU9a2UucmVkQWRkKFNlKSxkZT10aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCksdmU9ZmUucmVkU3ViKGRlKS5yZWRTdWIoZGUpLEo9dGhpcy5j''@;'; put 'put ''dXJ2ZS5fbXVsQyhBZS5yZWRJU3ViKGZlKSkucmVkTXVsKHZlKSxzZT10aGlzLmN1cnZlLl9tdWxDKGZlKS5yZWRNdWwoa2UucmVkSVN1YihTZSkpLGFlPWZlLnJlZE11bCh2ZSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoSixzZSxhZSl9LHEucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0RGJsKCk6dGhpcy5fcHJvakRibCgpfSxxLnByb3RvdHlwZS5fZXh0QWRkPWZ1bmN0aW9uKEope3ZhciBzZT10aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKEoueS5yZWRTdWIoSi54KSks''@;'; put 'put ''YWU9dGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChKLnkucmVkQWRkKEoueCkpLGZlPXRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKEoudCksZGU9dGhpcy56LnJlZE11bChKLnoucmVkQWRkKEoueikpLHZlPWFlLnJlZFN1YihzZSksQWU9ZGUucmVkU3ViKGZlKSxrZT1k''@;'; put 'put ''ZS5yZWRBZGQoZmUpLFNlPWFlLnJlZEFkZChzZSksSWU9dmUucmVkTXVsKEFlKSxUZT1rZS5yZWRNdWwoU2UpLEVlPXZlLnJlZE11bChTZSksaGU9QWUucmVkTXVsKGtlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChJZSxUZSxoZSxFZSl9LHEucHJvdG90eXBlLl9wcm9qQWRkPWZ1bmN0aW9u''@;'; put 'put ''KEope3ZhciBzZSxhZSxmZT10aGlzLnoucmVkTXVsKEoueiksZGU9ZmUucmVkU3FyKCksdmU9dGhpcy54LnJlZE11bChKLngpLEFlPXRoaXMueS5yZWRNdWwoSi55KSxrZT10aGlzLmN1cnZlLmQucmVkTXVsKHZlKS5yZWRNdWwoQWUpLFNlPWRlLnJlZFN1YihrZSksSWU9ZGUucmVkQWRkKGtl''@;'; put 'put ''KSxUZT10aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKEoueC5yZWRBZGQoSi55KSkucmVkSVN1Yih2ZSkucmVkSVN1YihBZSksRWU9ZmUucmVkTXVsKFNlKS5yZWRNdWwoVGUpO3JldHVybiB0aGlzLmN1cnZlLnR3aXN0ZWQ/KHNlPWZlLnJlZE11bChJZSkucmVkTXVsKEFlLnJlZFN1Yih0''@;'; put 'put ''aGlzLmN1cnZlLl9tdWxBKHZlKSkpLGFlPVNlLnJlZE11bChJZSkpOihzZT1mZS5yZWRNdWwoSWUpLnJlZE11bChBZS5yZWRTdWIodmUpKSxhZT10aGlzLmN1cnZlLl9tdWxDKFNlKS5yZWRNdWwoSWUpKSx0aGlzLmN1cnZlLnBvaW50KEVlLHNlLGFlKX0scS5wcm90b3R5cGUuYWRkPWZ1bmN0''@;'; put 'put ''aW9uKEope3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT9KOkouaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHRBZGQoSik6dGhpcy5fcHJvakFkZChKKX0scS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLl9oYXNEb3VibGVzKEopP3Ro''@;'; put 'put ''aXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsSik6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLEopfSxxLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oSixzZSxhZSl7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxzZV0sW0osYWVdLDIsITEpfSxxLnByb3RvdHlwZS5q''@;'; put 'put ''bXVsQWRkPWZ1bmN0aW9uKEosc2UsYWUpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsc2VdLFtKLGFlXSwyLCEwKX0scS5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7aWYodGhpcy56T25lKXJldHVybiB0aGlzO3ZhciBKPXRoaXMuei5yZWRJbnZtKCk7cmV0''@;'; put 'put ''dXJuIHRoaXMueD10aGlzLngucmVkTXVsKEopLHRoaXMueT10aGlzLnkucmVkTXVsKEopLHRoaXMudCYmKHRoaXMudD10aGlzLnQucmVkTXVsKEopKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56T25lPSEwLHRoaXN9LHEucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSx0aGlzLnksdGhpcy56LHRoaXMudCYmdGhpcy50LnJlZE5lZygpKX0scS5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9LHEucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnkuZnJvbVJlZCgpfSxxLnByb3RvdHlwZS5lcT1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcz09PUp8fDA9PT10aGlzLmdldFgoKS5jbXAoSi5nZXRYKCkpJiYwPT09dGhpcy5nZXRZKCkuY21wKEouZ2V0WSgpKX0scS5wcm90b3R5cGUuZXFY''@;'; put 'put ''VG9QPWZ1bmN0aW9uKEope3ZhciBzZT1KLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtpZigwPT09dGhpcy54LmNtcChzZSkpcmV0dXJuITA7Zm9yKHZhciBhZT1KLmNsb25lKCksZmU9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopOzspe2lmKGFlLmlhZGQodGhp''@;'; put 'put ''cy5jdXJ2ZS5uKSxhZS5jbXAodGhpcy5jdXJ2ZS5wKT49MClyZXR1cm4hMTtpZihzZS5yZWRJQWRkKGZlKSwwPT09dGhpcy54LmNtcChzZSkpcmV0dXJuITB9fSxxLnByb3RvdHlwZS50b1A9cS5wcm90b3R5cGUubm9ybWFsaXplLHEucHJvdG90eXBlLm1peGVkQWRkPXEucHJvdG90eXBlLmFk''@;'; put 'put ''ZH0sODI1NDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1RO2llLmJhc2U9Wig0OTE4KSxpZS5zaG9ydD1aKDY2NzMpLGllLm1vbnQ9WigyODgxKSxpZS5lZHdhcmRzPVooMTEzOCl9LDI4ODE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9WigzNzg1KSxsZT1aKDU3MTcpLFk9''@;'; put 'put ''Wig0OTE4KSxXPVooOTUzKTtmdW5jdGlvbiBOKHEpe1kuY2FsbCh0aGlzLCJtb250IixxKSx0aGlzLmE9bmV3IGllKHEuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgaWUocS5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5pND1uZXcgaWUoNCkudG9SZWQodGhpcy5yZWQpLnJl''@;'; put 'put ''ZEludm0oKSx0aGlzLnR3bz1uZXcgaWUoMikudG9SZWQodGhpcy5yZWQpLHRoaXMuYTI0PXRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKX1mdW5jdGlvbiBlZShxLEosc2Upe1kuQmFzZVBvaW50LmNhbGwodGhpcyxxLCJwcm9qZWN0aXZlIiksbnVsbD09PUomJm51bGw9''@;'; put 'put ''PT1zZT8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLnplcm8pOih0aGlzLng9bmV3IGllKEosMTYpLHRoaXMuej1uZXcgaWUoc2UsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10''@;'; put 'put ''aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSl9bGUoTixZKSxVLmV4cG9ydHM9TixOLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihxKXt2YXIgSj1xLm5vcm1hbGl6ZSgpLngsc2U9Si5yZWRTcXIoKSxhZT1zZS5yZWRNdWwoSikucmVkQWRkKHNlLnJlZE11bCh0aGlzLmEpKS5yZWRB''@;'; put 'put ''ZGQoSik7cmV0dXJuIDA9PT1hZS5yZWRTcXJ0KCkucmVkU3FyKCkuY21wKGFlKX0sbGUoZWUsWS5CYXNlUG9pbnQpLE4ucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKHEsSil7cmV0dXJuIHRoaXMucG9pbnQoVy50b0FycmF5KHEsSiksMSl9LE4ucHJvdG90eXBlLnBvaW50PWZ1bmN0''@;'; put 'put ''aW9uKHEsSil7cmV0dXJuIG5ldyBlZSh0aGlzLHEsSil9LE4ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24ocSl7cmV0dXJuIGVlLmZyb21KU09OKHRoaXMscSl9LGVlLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKCl7fSxlZS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KCJiZSIsdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSl9LGVlLmZyb21KU09OPWZ1bmN0aW9uKHEsSil7cmV0dXJuIG5ldyBlZShxLEpbMF0sSlsxXXx8cS5vbmUpfSxlZS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxlZS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LGVlLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLngucmVkQWRkKHRoaXMueikucmVkU3FyKCksSj10aGlzLngucmVkU3ViKHRoaXMueikucmVkU3FyKCksc2U9cS5yZWRTdWIoSiksYWU9cS5yZWRNdWwoSiksZmU9c2UucmVk''@;'; put 'put ''TXVsKEoucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChzZSkpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChhZSxmZSl9LGVlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxlZS5wcm90b3R5''@;'; put 'put ''cGUuZGlmZkFkZD1mdW5jdGlvbihxLEope3ZhciBzZT10aGlzLngucmVkQWRkKHRoaXMueiksYWU9dGhpcy54LnJlZFN1Yih0aGlzLnopLGZlPXEueC5yZWRBZGQocS56KSxkZT1xLngucmVkU3ViKHEueikucmVkTXVsKHNlKSx2ZT1mZS5yZWRNdWwoYWUpLEFlPUouei5yZWRNdWwoZGUucmVk''@;'; put 'put ''QWRkKHZlKS5yZWRTcXIoKSksa2U9Si54LnJlZE11bChkZS5yZWRJU3ViKHZlKS5yZWRTcXIoKSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoQWUsa2UpfSxlZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHEpe2Zvcih2YXIgSj1xLmNsb25lKCksc2U9dGhpcyxhZT10aGlzLmN1cnZlLnBvaW50''@;'; put 'put ''KG51bGwsbnVsbCksZmU9W107MCE9PUouY21wbigwKTtKLml1c2hybigxKSlmZS5wdXNoKEouYW5kbG4oMSkpO2Zvcih2YXIgZGU9ZmUubGVuZ3RoLTE7ZGU+PTA7ZGUtLSkwPT09ZmVbZGVdPyhzZT1zZS5kaWZmQWRkKGFlLHRoaXMpLGFlPWFlLmRibCgpKTooYWU9c2UuZGlmZkFkZChhZSx0''@;'; put 'put ''aGlzKSxzZT1zZS5kYmwoKSk7cmV0dXJuIGFlfSxlZS5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sZWUucHJvdG90eXBlLmp1bWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5v''@;'; put 'put ''dCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxlZS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24ocSl7cmV0dXJuIDA9PT10aGlzLmdldFgoKS5jbXAocS5nZXRYKCkpfSxlZS5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKHRo''@;'; put 'put ''aXMuei5yZWRJbnZtKCkpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzfSxlZS5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9fSw2NjczOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooOTUzKSxsZT1aKDM3''@;'; put 'put ''ODUpLFk9Wig1NzE3KSxXPVooNDkxOCksTj1pZS5hc3NlcnQ7ZnVuY3Rpb24gZWUoc2Upe1cuY2FsbCh0aGlzLCJzaG9ydCIsc2UpLHRoaXMuYT1uZXcgbGUoc2UuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgbGUoc2UuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10''@;'; put 'put ''aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20oc2UpLHRoaXMuX2VuZG9XbmFmVDE9''@;'; put 'put ''bmV3IEFycmF5KDQpLHRoaXMuX2VuZG9XbmFmVDI9bmV3IEFycmF5KDQpfWZ1bmN0aW9uIHEoc2UsYWUsZmUsZGUpe1cuQmFzZVBvaW50LmNhbGwodGhpcyxzZSwiYWZmaW5lIiksbnVsbD09PWFlJiZudWxsPT09ZmU/KHRoaXMueD1udWxsLHRoaXMueT1udWxsLHRoaXMuaW5mPSEwKToodGhp''@;'; put 'put ''cy54PW5ldyBsZShhZSwxNiksdGhpcy55PW5ldyBsZShmZSwxNiksZGUmJih0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpLHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55''@;'; put 'put ''LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLmluZj0hMSl9ZnVuY3Rpb24gSihzZSxhZSxmZSxkZSl7Vy5CYXNlUG9pbnQuY2FsbCh0aGlzLHNlLCJqYWNvYmlhbiIpLG51bGw9PT1hZSYmbnVsbD09PWZlJiZudWxsPT09ZGU/KHRoaXMueD10aGlzLmN1''@;'; put 'put ''cnZlLm9uZSx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PW5ldyBsZSgwKSk6KHRoaXMueD1uZXcgbGUoYWUsMTYpLHRoaXMueT1uZXcgbGUoZmUsMTYpLHRoaXMuej1uZXcgbGUoZGUsMTYpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRo''@;'; put 'put ''aXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmV9WShlZSxXKSxVLmV4cG9ydHM9ZWUsZWUucHJvdG90eXBl''@;'; put 'put ''Ll9nZXRFbmRvbW9ycGhpc209ZnVuY3Rpb24oc2Upe2lmKHRoaXMuemVyb0EmJnRoaXMuZyYmdGhpcy5uJiYxPT09dGhpcy5wLm1vZG4oMykpe3ZhciBhZSxmZTtpZihzZS5iZXRhKWFlPW5ldyBsZShzZS5iZXRhLDE2KS50b1JlZCh0aGlzLnJlZCk7ZWxzZXt2YXIgZGU9dGhpcy5fZ2V0RW5k''@;'; put 'put ''b1Jvb3RzKHRoaXMucCk7YWU9KGFlPWRlWzBdLmNtcChkZVsxXSk8MD9kZVswXTpkZVsxXSkudG9SZWQodGhpcy5yZWQpfWlmKHNlLmxhbWJkYSlmZT1uZXcgbGUoc2UubGFtYmRhLDE2KTtlbHNle3ZhciB2ZT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTswPT09dGhpcy5nLm11bCh2ZVsw''@;'; put 'put ''XSkueC5jbXAodGhpcy5nLngucmVkTXVsKGFlKSk/ZmU9dmVbMF06TigwPT09dGhpcy5nLm11bChmZT12ZVsxXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGFlKSkpfXJldHVybntiZXRhOmFlLGxhbWJkYTpmZSxiYXNpczpzZS5iYXNpcz9zZS5iYXNpcy5tYXAoZnVuY3Rpb24oQWUpe3JldHVy''@;'; put 'put ''bnthOm5ldyBsZShBZS5hLDE2KSxiOm5ldyBsZShBZS5iLDE2KX19KTp0aGlzLl9nZXRFbmRvQmFzaXMoZmUpfX19LGVlLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzPWZ1bmN0aW9uKHNlKXt2YXIgYWU9c2U9PT10aGlzLnA/dGhpcy5yZWQ6bGUubW9udChzZSksZmU9bmV3IGxlKDIpLnRvUmVk''@;'; put 'put ''KGFlKS5yZWRJbnZtKCksZGU9ZmUucmVkTmVnKCksdmU9bmV3IGxlKDMpLnRvUmVkKGFlKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKGZlKTtyZXR1cm5bZGUucmVkQWRkKHZlKS5mcm9tUmVkKCksZGUucmVkU3ViKHZlKS5mcm9tUmVkKCldfSxlZS5wcm90b3R5cGUuX2dldEVuZG9CYXNp''@;'; put 'put ''cz1mdW5jdGlvbihzZSl7Zm9yKHZhciBhZSxmZSxkZSx2ZSxBZSxrZSxTZSxJZSxUZSxFZT10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLGhlPXNlLE89dGhpcy5uLmNsb25lKCksej1uZXcgbGUoMSksbmU9bmV3IGxlKDApLHRlPW5ldyBsZSgwKSx4PW5l''@;'; put 'put ''dyBsZSgxKSxQPTA7MCE9PWhlLmNtcG4oMCk7KXt2YXIgVj1PLmRpdihoZSk7SWU9Ty5zdWIoVi5tdWwoaGUpKSxUZT10ZS5zdWIoVi5tdWwoeikpO3ZhciBUPXguc3ViKFYubXVsKG5lKSk7aWYoIWRlJiZJZS5jbXAoRWUpPDApYWU9U2UubmVnKCksZmU9eixkZT1JZS5uZWcoKSx2ZT1UZTtl''@;'; put 'put ''bHNlIGlmKGRlJiYyPT0rK1ApYnJlYWs7U2U9SWUsTz1oZSxoZT1JZSx0ZT16LHo9VGUseD1uZSxuZT1UfUFlPUllLm5lZygpLGtlPVRlO3ZhciBTPWRlLnNxcigpLmFkZCh2ZS5zcXIoKSk7cmV0dXJuIEFlLnNxcigpLmFkZChrZS5zcXIoKSkuY21wKFMpPj0wJiYoQWU9YWUsa2U9ZmUpLGRl''@;'; put 'put ''Lm5lZ2F0aXZlJiYoZGU9ZGUubmVnKCksdmU9dmUubmVnKCkpLEFlLm5lZ2F0aXZlJiYoQWU9QWUubmVnKCksa2U9a2UubmVnKCkpLFt7YTpkZSxiOnZlfSx7YTpBZSxiOmtlfV19LGVlLnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uKHNlKXt2YXIgYWU9dGhpcy5lbmRvLmJhc2lzLGZl''@;'; put 'put ''PWFlWzBdLGRlPWFlWzFdLHZlPWRlLmIubXVsKHNlKS5kaXZSb3VuZCh0aGlzLm4pLEFlPWZlLmIubmVnKCkubXVsKHNlKS5kaXZSb3VuZCh0aGlzLm4pLGtlPXZlLm11bChmZS5hKSxTZT1BZS5tdWwoZGUuYSksSWU9dmUubXVsKGZlLmIpLFRlPUFlLm11bChkZS5iKTtyZXR1cm57azE6c2Uu''@;'; put 'put ''c3ViKGtlKS5zdWIoU2UpLGsyOkllLmFkZChUZSkubmVnKCl9fSxlZS5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihzZSxhZSl7KHNlPW5ldyBsZShzZSwxNikpLnJlZHx8KHNlPXNlLnRvUmVkKHRoaXMucmVkKSk7dmFyIGZlPXNlLnJlZFNxcigpLnJlZE11bChzZSkucmVkSUFkZChz''@;'; put 'put ''ZS5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpLGRlPWZlLnJlZFNxcnQoKTtpZigwIT09ZGUucmVkU3FyKCkucmVkU3ViKGZlKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTt2YXIgdmU9ZGUuZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKGFl''@;'; put 'put ''JiYhdmV8fCFhZSYmdmUpJiYoZGU9ZGUucmVkTmVnKCkpLHRoaXMucG9pbnQoc2UsZGUpfSxlZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oc2Upe2lmKHNlLmluZilyZXR1cm4hMDt2YXIgYWU9c2UueCxmZT1zZS55LGRlPXRoaXMuYS5yZWRNdWwoYWUpLHZlPWFlLnJlZFNxcigpLnJl''@;'; put 'put ''ZE11bChhZSkucmVkSUFkZChkZSkucmVkSUFkZCh0aGlzLmIpO3JldHVybiAwPT09ZmUucmVkU3FyKCkucmVkSVN1Yih2ZSkuY21wbigwKX0sZWUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZD1mdW5jdGlvbihzZSxhZSxmZSl7Zm9yKHZhciBkZT10aGlzLl9lbmRvV25hZlQxLHZlPXRoaXMu''@;'; put 'put ''X2VuZG9XbmFmVDIsQWU9MDtBZTxzZS5sZW5ndGg7QWUrKyl7dmFyIGtlPXRoaXMuX2VuZG9TcGxpdChhZVtBZV0pLFNlPXNlW0FlXSxJZT1TZS5fZ2V0QmV0YSgpO2tlLmsxLm5lZ2F0aXZlJiYoa2UuazEuaW5lZygpLFNlPVNlLm5lZyghMCkpLGtlLmsyLm5lZ2F0aXZlJiYoa2UuazIuaW5l''@;'; put 'put ''ZygpLEllPUllLm5lZyghMCkpLGRlWzIqQWVdPVNlLGRlWzIqQWUrMV09SWUsdmVbMipBZV09a2UuazEsdmVbMipBZSsxXT1rZS5rMn1mb3IodmFyIFRlPXRoaXMuX3duYWZNdWxBZGQoMSxkZSx2ZSwyKkFlLGZlKSxFZT0wO0VlPDIqQWU7RWUrKylkZVtFZV09bnVsbCx2ZVtFZV09bnVsbDty''@;'; put 'put ''ZXR1cm4gVGV9LFkocSxXLkJhc2VQb2ludCksZWUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKHNlLGFlLGZlKXtyZXR1cm4gbmV3IHEodGhpcyxzZSxhZSxmZSl9LGVlLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKHNlLGFlKXtyZXR1cm4gcS5mcm9tSlNPTih0aGlzLHNlLGFl''@;'; put 'put ''KX0scS5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24oKXtpZih0aGlzLmN1cnZlLmVuZG8pe3ZhciBzZT10aGlzLnByZWNvbXB1dGVkO2lmKHNlJiZzZS5iZXRhKXJldHVybiBzZS5iZXRhO3ZhciBhZT10aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJl''@;'; put 'put ''dGEpLHRoaXMueSk7aWYoc2Upe3ZhciBmZT10aGlzLmN1cnZlLGRlPWZ1bmN0aW9uKHZlKXtyZXR1cm4gZmUucG9pbnQodmUueC5yZWRNdWwoZmUuZW5kby5iZXRhKSx2ZS55KX07c2UuYmV0YT1hZSxhZS5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjpzZS5uYWYmJnt3bmQ6c2UubmFmLndu''@;'; put 'put ''ZCxwb2ludHM6c2UubmFmLnBvaW50cy5tYXAoZGUpfSxkb3VibGVzOnNlLmRvdWJsZXMmJntzdGVwOnNlLmRvdWJsZXMuc3RlcCxwb2ludHM6c2UuZG91Ymxlcy5wb2ludHMubWFwKGRlKX19fXJldHVybiBhZX19LHEucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBy''@;'; put 'put ''ZWNvbXB1dGVkP1t0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5h''@;'; put 'put ''Zjp0aGlzLnByZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XTpbdGhpcy54LHRoaXMueV19LHEuZnJvbUpTT049ZnVuY3Rpb24oc2UsYWUsZmUpeyJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''YWUmJihhZT1KU09OLnBhcnNlKGFlKSk7dmFyIGRlPXNlLnBvaW50KGFlWzBdLGFlWzFdLGZlKTtpZighYWVbMl0pcmV0dXJuIGRlO2Z1bmN0aW9uIHZlKGtlKXtyZXR1cm4gc2UucG9pbnQoa2VbMF0sa2VbMV0sZmUpfXZhciBBZT1hZVsyXTtyZXR1cm4gZGUucHJlY29tcHV0ZWQ9e2JldGE6''@;'; put 'put ''bnVsbCxkb3VibGVzOkFlLmRvdWJsZXMmJntzdGVwOkFlLmRvdWJsZXMuc3RlcCxwb2ludHM6W2RlXS5jb25jYXQoQWUuZG91Ymxlcy5wb2ludHMubWFwKHZlKSl9LG5hZjpBZS5uYWYmJnt3bmQ6QWUubmFmLnduZCxwb2ludHM6W2RlXS5jb25jYXQoQWUubmFmLnBvaW50cy5tYXAodmUpKX19''@;'; put 'put ''LGRlfSxxLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygx''@;'; put 'put ''NiwyKSsiPiJ9LHEucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmZ9LHEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihzZSl7aWYodGhpcy5pbmYpcmV0dXJuIHNlO2lmKHNlLmluZilyZXR1cm4gdGhpcztpZih0aGlzLmVxKHNlKSlyZXR1cm4gdGhpcy5kYmwo''@;'; put 'put ''KTtpZih0aGlzLm5lZygpLmVxKHNlKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO2lmKDA9PT10aGlzLnguY21wKHNlLngpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIGFlPXRoaXMueS5yZWRTdWIoc2UueSk7MCE9PWFlLmNtcG4oMCkmJihhZT1h''@;'; put 'put ''ZS5yZWRNdWwodGhpcy54LnJlZFN1YihzZS54KS5yZWRJbnZtKCkpKTt2YXIgZmU9YWUucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIoc2UueCksZGU9YWUucmVkTXVsKHRoaXMueC5yZWRTdWIoZmUpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZmUs''@;'; put 'put ''ZGUpfSxxLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgc2U9dGhpcy55LnJlZEFkZCh0aGlzLnkpO2lmKDA9PT1zZS5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIGFlPXRoaXMuY3VydmUuYSxmZT10aGlz''@;'; put 'put ''LngucmVkU3FyKCksZGU9c2UucmVkSW52bSgpLHZlPWZlLnJlZEFkZChmZSkucmVkSUFkZChmZSkucmVkSUFkZChhZSkucmVkTXVsKGRlKSxBZT12ZS5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueC5yZWRBZGQodGhpcy54KSksa2U9dmUucmVkTXVsKHRoaXMueC5yZWRTdWIoQWUpKS5yZWRJU3Vi''@;'; put 'put ''KHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoQWUsa2UpfSxxLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9LHEucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55LmZyb21SZWQoKX0scS5wcm90b3R5cGUubXVsPWZ1''@;'; put 'put ''bmN0aW9uKHNlKXtyZXR1cm4gc2U9bmV3IGxlKHNlLDE2KSx0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuX2hhc0RvdWJsZXMoc2UpP3RoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsc2UpOnRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW3Nl''@;'; put 'put ''XSk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLHNlKX0scS5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKHNlLGFlLGZlKXt2YXIgZGU9W3RoaXMsYWVdLHZlPVtzZSxmZV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChkZSx2ZSk6dGhpcy5jdXJ2''@;'; put 'put ''ZS5fd25hZk11bEFkZCgxLGRlLHZlLDIpfSxxLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKHNlLGFlLGZlKXt2YXIgZGU9W3RoaXMsYWVdLHZlPVtzZSxmZV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChkZSx2ZSwhMCk6dGhpcy5jdXJ2ZS5f''@;'; put 'put ''d25hZk11bEFkZCgxLGRlLHZlLDIsITApfSxxLnByb3RvdHlwZS5lcT1mdW5jdGlvbihzZSl7cmV0dXJuIHRoaXM9PT1zZXx8dGhpcy5pbmY9PT1zZS5pbmYmJih0aGlzLmluZnx8MD09PXRoaXMueC5jbXAoc2UueCkmJjA9PT10aGlzLnkuY21wKHNlLnkpKX0scS5wcm90b3R5cGUubmVnPWZ1''@;'; put 'put ''bmN0aW9uKHNlKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgYWU9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihzZSYmdGhpcy5wcmVjb21wdXRlZCl7dmFyIGZlPXRoaXMucHJlY29tcHV0ZWQsZGU9ZnVuY3Rpb24odmUpe3JldHVybiB2ZS5uZWcoKX07''@;'; put 'put ''YWUucHJlY29tcHV0ZWQ9e25hZjpmZS5uYWYmJnt3bmQ6ZmUubmFmLnduZCxwb2ludHM6ZmUubmFmLnBvaW50cy5tYXAoZGUpfSxkb3VibGVzOmZlLmRvdWJsZXMmJntzdGVwOmZlLmRvdWJsZXMuc3RlcCxwb2ludHM6ZmUuZG91Ymxlcy5wb2ludHMubWFwKGRlKX19fXJldHVybiBhZX0scS5w''@;'; put 'put ''cm90b3R5cGUudG9KPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25lKX0sWShKLFcuQmFzZVBvaW50KSxlZS5wcm90b3R5cGUuanBvaW50PWZ1bmN0''@;'; put 'put ''aW9uKHNlLGFlLGZlKXtyZXR1cm4gbmV3IEoodGhpcyxzZSxhZSxmZSl9LEoucHJvdG90eXBlLnRvUD1mdW5jdGlvbigpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIHNlPXRoaXMuei5yZWRJbnZtKCksYWU9c2UucmVkU3FyKCks''@;'; put 'put ''ZmU9dGhpcy54LnJlZE11bChhZSksZGU9dGhpcy55LnJlZE11bChhZSkucmVkTXVsKHNlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChmZSxkZSl9LEoucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMu''@;'; put 'put ''eil9LEoucHJvdG90eXBlLmFkZD1mdW5jdGlvbihzZSl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHNlO2lmKHNlLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgYWU9c2Uuei5yZWRTcXIoKSxmZT10aGlzLnoucmVkU3FyKCksZGU9dGhpcy54LnJlZE11bChhZSksdmU9c2UueC5y''@;'; put 'put ''ZWRNdWwoZmUpLEFlPXRoaXMueS5yZWRNdWwoYWUucmVkTXVsKHNlLnopKSxrZT1zZS55LnJlZE11bChmZS5yZWRNdWwodGhpcy56KSksU2U9ZGUucmVkU3ViKHZlKSxJZT1BZS5yZWRTdWIoa2UpO2lmKDA9PT1TZS5jbXBuKDApKXJldHVybiAwIT09SWUuY21wbigwKT90aGlzLmN1cnZlLmpw''@;'; put 'put ''b2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgVGU9U2UucmVkU3FyKCksRWU9VGUucmVkTXVsKFNlKSxoZT1kZS5yZWRNdWwoVGUpLE89SWUucmVkU3FyKCkucmVkSUFkZChFZSkucmVkSVN1YihoZSkucmVkSVN1YihoZSksej1JZS5yZWRNdWwoaGUucmVkSVN1YihPKSkucmVk''@;'; put 'put ''SVN1YihBZS5yZWRNdWwoRWUpKSxuZT10aGlzLnoucmVkTXVsKHNlLnopLnJlZE11bChTZSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KE8seixuZSl9LEoucHJvdG90eXBlLm1peGVkQWRkPWZ1bmN0aW9uKHNlKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gc2UudG9KKCk7aWYoc2Uu''@;'; put 'put ''aXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBhZT10aGlzLnoucmVkU3FyKCksZmU9dGhpcy54LGRlPXNlLngucmVkTXVsKGFlKSx2ZT10aGlzLnksQWU9c2UueS5yZWRNdWwoYWUpLnJlZE11bCh0aGlzLnopLGtlPWZlLnJlZFN1YihkZSksU2U9dmUucmVkU3ViKEFlKTtpZigwPT09a2Uu''@;'; put 'put ''Y21wbigwKSlyZXR1cm4gMCE9PVNlLmNtcG4oMCk/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpOnRoaXMuZGJsKCk7dmFyIEllPWtlLnJlZFNxcigpLFRlPUllLnJlZE11bChrZSksRWU9ZmUucmVkTXVsKEllKSxoZT1TZS5yZWRTcXIoKS5yZWRJQWRkKFRlKS5yZWRJU3ViKEVl''@;'; put 'put ''KS5yZWRJU3ViKEVlKSxPPVNlLnJlZE11bChFZS5yZWRJU3ViKGhlKSkucmVkSVN1Yih2ZS5yZWRNdWwoVGUpKSx6PXRoaXMuei5yZWRNdWwoa2UpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChoZSxPLHopfSxKLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKHNlKXtpZigwPT09c2UpcmV0dXJu''@;'; put 'put ''IHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIXNlKXJldHVybiB0aGlzLmRibCgpO3ZhciBhZTtpZih0aGlzLmN1cnZlLnplcm9BfHx0aGlzLmN1cnZlLnRocmVlQSl7dmFyIGZlPXRoaXM7Zm9yKGFlPTA7YWU8c2U7YWUrKylmZT1mZS5kYmwoKTtyZXR1cm4gZmV9''@;'; put 'put ''dmFyIGRlPXRoaXMuY3VydmUuYSx2ZT10aGlzLmN1cnZlLnRpbnYsQWU9dGhpcy54LGtlPXRoaXMueSxTZT10aGlzLnosSWU9U2UucmVkU3FyKCkucmVkU3FyKCksVGU9a2UucmVkQWRkKGtlKTtmb3IoYWU9MDthZTxzZTthZSsrKXt2YXIgRWU9QWUucmVkU3FyKCksaGU9VGUucmVkU3FyKCks''@;'; put 'put ''Tz1oZS5yZWRTcXIoKSx6PUVlLnJlZEFkZChFZSkucmVkSUFkZChFZSkucmVkSUFkZChkZS5yZWRNdWwoSWUpKSxuZT1BZS5yZWRNdWwoaGUpLHRlPXoucmVkU3FyKCkucmVkSVN1YihuZS5yZWRBZGQobmUpKSx4PW5lLnJlZElTdWIodGUpLFA9ei5yZWRNdWwoeCk7UD1QLnJlZElBZGQoUCku''@;'; put 'put ''cmVkSVN1YihPKTt2YXIgVj1UZS5yZWRNdWwoU2UpO2FlKzE8c2UmJihJZT1JZS5yZWRNdWwoTykpLEFlPXRlLFNlPVYsVGU9UH1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoQWUsVGUucmVkTXVsKHZlKSxTZSl9LEoucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5m''@;'; put 'put ''aW5pdHkoKT90aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRoaXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LEoucHJvdG90eXBlLl96ZXJvRGJsPWZ1bmN0aW9uKCl7dmFyIHNlLGFlLGZlO2lmKHRoaXMuek9uZSl7dmFyIGRlPXRoaXMu''@;'; put 'put ''eC5yZWRTcXIoKSx2ZT10aGlzLnkucmVkU3FyKCksQWU9dmUucmVkU3FyKCksa2U9dGhpcy54LnJlZEFkZCh2ZSkucmVkU3FyKCkucmVkSVN1YihkZSkucmVkSVN1YihBZSk7a2U9a2UucmVkSUFkZChrZSk7dmFyIFNlPWRlLnJlZEFkZChkZSkucmVkSUFkZChkZSksSWU9U2UucmVkU3FyKCku''@;'; put 'put ''cmVkSVN1YihrZSkucmVkSVN1YihrZSksVGU9QWUucmVkSUFkZChBZSk7VGU9KFRlPVRlLnJlZElBZGQoVGUpKS5yZWRJQWRkKFRlKSxzZT1JZSxhZT1TZS5yZWRNdWwoa2UucmVkSVN1YihJZSkpLnJlZElTdWIoVGUpLGZlPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBFZT10aGlz''@;'; put 'put ''LngucmVkU3FyKCksaGU9dGhpcy55LnJlZFNxcigpLE89aGUucmVkU3FyKCksej10aGlzLngucmVkQWRkKGhlKS5yZWRTcXIoKS5yZWRJU3ViKEVlKS5yZWRJU3ViKE8pO3o9ei5yZWRJQWRkKHopO3ZhciBuZT1FZS5yZWRBZGQoRWUpLnJlZElBZGQoRWUpLHRlPW5lLnJlZFNxcigpLHg9Ty5y''@;'; put 'put ''ZWRJQWRkKE8pO3g9KHg9eC5yZWRJQWRkKHgpKS5yZWRJQWRkKHgpLHNlPXRlLnJlZElTdWIoeikucmVkSVN1Yih6KSxhZT1uZS5yZWRNdWwoei5yZWRJU3ViKHNlKSkucmVkSVN1Yih4KSxmZT0oZmU9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKGZlKX1yZXR1cm4gdGhpcy5jdXJ2''@;'; put 'put ''ZS5qcG9pbnQoc2UsYWUsZmUpfSxKLnByb3RvdHlwZS5fdGhyZWVEYmw9ZnVuY3Rpb24oKXt2YXIgc2UsYWUsZmU7aWYodGhpcy56T25lKXt2YXIgZGU9dGhpcy54LnJlZFNxcigpLHZlPXRoaXMueS5yZWRTcXIoKSxBZT12ZS5yZWRTcXIoKSxrZT10aGlzLngucmVkQWRkKHZlKS5yZWRTcXIo''@;'; put 'put ''KS5yZWRJU3ViKGRlKS5yZWRJU3ViKEFlKTtrZT1rZS5yZWRJQWRkKGtlKTt2YXIgU2U9ZGUucmVkQWRkKGRlKS5yZWRJQWRkKGRlKS5yZWRJQWRkKHRoaXMuY3VydmUuYSksSWU9U2UucmVkU3FyKCkucmVkSVN1YihrZSkucmVkSVN1YihrZSk7c2U9SWU7dmFyIFRlPUFlLnJlZElBZGQoQWUp''@;'; put 'put ''O1RlPShUZT1UZS5yZWRJQWRkKFRlKSkucmVkSUFkZChUZSksYWU9U2UucmVkTXVsKGtlLnJlZElTdWIoSWUpKS5yZWRJU3ViKFRlKSxmZT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgRWU9dGhpcy56LnJlZFNxcigpLGhlPXRoaXMueS5yZWRTcXIoKSxPPXRoaXMueC5yZWRNdWwo''@;'; put 'put ''aGUpLHo9dGhpcy54LnJlZFN1YihFZSkucmVkTXVsKHRoaXMueC5yZWRBZGQoRWUpKTt6PXoucmVkQWRkKHopLnJlZElBZGQoeik7dmFyIG5lPU8ucmVkSUFkZChPKSx0ZT0obmU9bmUucmVkSUFkZChuZSkpLnJlZEFkZChuZSk7c2U9ei5yZWRTcXIoKS5yZWRJU3ViKHRlKSxmZT10aGlzLnku''@;'; put 'put ''cmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihoZSkucmVkSVN1YihFZSk7dmFyIHg9aGUucmVkU3FyKCk7eD0oeD0oeD14LnJlZElBZGQoeCkpLnJlZElBZGQoeCkpLnJlZElBZGQoeCksYWU9ei5yZWRNdWwobmUucmVkSVN1YihzZSkpLnJlZElTdWIoeCl9cmV0dXJuIHRoaXMuY3Vy''@;'; put 'put ''dmUuanBvaW50KHNlLGFlLGZlKX0sSi5wcm90b3R5cGUuX2RibD1mdW5jdGlvbigpe3ZhciBzZT10aGlzLmN1cnZlLmEsYWU9dGhpcy54LGZlPXRoaXMueSxkZT10aGlzLnosdmU9ZGUucmVkU3FyKCkucmVkU3FyKCksQWU9YWUucmVkU3FyKCksa2U9ZmUucmVkU3FyKCksU2U9QWUucmVkQWRk''@;'; put 'put ''KEFlKS5yZWRJQWRkKEFlKS5yZWRJQWRkKHNlLnJlZE11bCh2ZSkpLEllPWFlLnJlZEFkZChhZSksVGU9KEllPUllLnJlZElBZGQoSWUpKS5yZWRNdWwoa2UpLEVlPVNlLnJlZFNxcigpLnJlZElTdWIoVGUucmVkQWRkKFRlKSksaGU9VGUucmVkSVN1YihFZSksTz1rZS5yZWRTcXIoKTtPPShP''@;'; put 'put ''PShPPU8ucmVkSUFkZChPKSkucmVkSUFkZChPKSkucmVkSUFkZChPKTt2YXIgej1TZS5yZWRNdWwoaGUpLnJlZElTdWIoTyksbmU9ZmUucmVkQWRkKGZlKS5yZWRNdWwoZGUpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChFZSx6LG5lKX0sSi5wcm90b3R5cGUudHJwbD1mdW5jdGlvbigpe2lm''@;'; put 'put ''KCF0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgc2U9dGhpcy54LnJlZFNxcigpLGFlPXRoaXMueS5yZWRTcXIoKSxmZT10aGlzLnoucmVkU3FyKCksZGU9YWUucmVkU3FyKCksdmU9c2UucmVkQWRkKHNlKS5yZWRJQWRkKHNlKSxBZT12ZS5yZWRTcXIo''@;'; put 'put ''KSxrZT10aGlzLngucmVkQWRkKGFlKS5yZWRTcXIoKS5yZWRJU3ViKHNlKS5yZWRJU3ViKGRlKSxTZT0oa2U9KGtlPShrZT1rZS5yZWRJQWRkKGtlKSkucmVkQWRkKGtlKS5yZWRJQWRkKGtlKSkucmVkSVN1YihBZSkpLnJlZFNxcigpLEllPWRlLnJlZElBZGQoZGUpO0llPShJZT0oSWU9SWUu''@;'; put 'put ''cmVkSUFkZChJZSkpLnJlZElBZGQoSWUpKS5yZWRJQWRkKEllKTt2YXIgVGU9dmUucmVkSUFkZChrZSkucmVkU3FyKCkucmVkSVN1YihBZSkucmVkSVN1YihTZSkucmVkSVN1YihJZSksRWU9YWUucmVkTXVsKFRlKTtFZT0oRWU9RWUucmVkSUFkZChFZSkpLnJlZElBZGQoRWUpO3ZhciBoZT10''@;'; put 'put ''aGlzLngucmVkTXVsKFNlKS5yZWRJU3ViKEVlKTtoZT0oaGU9aGUucmVkSUFkZChoZSkpLnJlZElBZGQoaGUpO3ZhciBPPXRoaXMueS5yZWRNdWwoVGUucmVkTXVsKEllLnJlZElTdWIoVGUpKS5yZWRJU3ViKGtlLnJlZE11bChTZSkpKTtPPShPPShPPU8ucmVkSUFkZChPKSkucmVkSUFkZChP''@;'; put 'put ''KSkucmVkSUFkZChPKTt2YXIgej10aGlzLnoucmVkQWRkKGtlKS5yZWRTcXIoKS5yZWRJU3ViKGZlKS5yZWRJU3ViKFNlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoaGUsTyx6KX0sSi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHNlLGFlKXtyZXR1cm4gc2U9bmV3IGxlKHNlLGFlKSx0aGlz''@;'; put 'put ''LmN1cnZlLl93bmFmTXVsKHRoaXMsc2UpfSxKLnByb3RvdHlwZS5lcT1mdW5jdGlvbihzZSl7aWYoImFmZmluZSI9PT1zZS50eXBlKXJldHVybiB0aGlzLmVxKHNlLnRvSigpKTtpZih0aGlzPT09c2UpcmV0dXJuITA7dmFyIGFlPXRoaXMuei5yZWRTcXIoKSxmZT1zZS56LnJlZFNxcigpO2lm''@;'; put 'put ''KDAhPT10aGlzLngucmVkTXVsKGZlKS5yZWRJU3ViKHNlLngucmVkTXVsKGFlKSkuY21wbigwKSlyZXR1cm4hMTt2YXIgZGU9YWUucmVkTXVsKHRoaXMueiksdmU9ZmUucmVkTXVsKHNlLnopO3JldHVybiAwPT09dGhpcy55LnJlZE11bCh2ZSkucmVkSVN1YihzZS55LnJlZE11bChkZSkpLmNt''@;'; put 'put ''cG4oMCl9LEoucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihzZSl7dmFyIGFlPXRoaXMuei5yZWRTcXIoKSxmZT1zZS50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKGFlKTtpZigwPT09dGhpcy54LmNtcChmZSkpcmV0dXJuITA7Zm9yKHZhciBkZT1zZS5jbG9uZSgpLHZlPXRoaXMuY3Vy''@;'; put 'put ''dmUucmVkTi5yZWRNdWwoYWUpOzspe2lmKGRlLmlhZGQodGhpcy5jdXJ2ZS5uKSxkZS5jbXAodGhpcy5jdXJ2ZS5wKT49MClyZXR1cm4hMTtpZihmZS5yZWRJQWRkKHZlKSwwPT09dGhpcy54LmNtcChmZSkpcmV0dXJuITB9fSxKLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgSlBvaW50IEluZmluaXR5PiI6IjxFQyBKUG9pbnQgeDogIit0aGlzLngudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LnRvU3RyaW5nKDE2LDIpKyI+In0sSi5wcm90b3R5cGUuaXNJbmZpbml0''@;'; put 'put ''eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9fSw1NDI3OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllLGxlPVEsWT1aKDM3MTUpLFc9Wig4MjU0KSxOPVooOTUzKS5hc3NlcnQ7ZnVuY3Rpb24gZWUoSil7dGhpcy5jdXJ2ZT0ic2hvcnQiPT09Si50eXBlP25ldyBX''@;'; put 'put ''LnNob3J0KEopOiJlZHdhcmRzIj09PUoudHlwZT9uZXcgVy5lZHdhcmRzKEopOm5ldyBXLm1vbnQoSiksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMuaGFzaD1KLmhhc2gsTih0aGlzLmcudmFsaWRhdGUoKSwiSW52YWxpZCBjdXJ2ZSIpLE4odGhpcy5nLm11''@;'; put 'put ''bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwiSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8iKX1mdW5jdGlvbiBxKEosc2Upe09iamVjdC5kZWZpbmVQcm9wZXJ0eShsZSxKLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgYWU9bmV3IGVlKHNlKTtyZXR1cm4g''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGxlLEose2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmFlfSksYWV9fSl9bGUuUHJlc2V0Q3VydmU9ZWUscSgicDE5MiIse3R5cGU6InNob3J0IixwcmltZToicDE5MiIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmUgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMSIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEiLGhhc2g6WS5zaGEyNTYsZ1JlZDohMSxnOlsiMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTIiLCIwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgx''@;'; put 'put ''MSJdfSkscSgicDIyNCIse3R5cGU6InNob3J0IixwcmltZToicDIyNCIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZlIixiOiJiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZjE2YTIgZTBiOGYwM2UgMTNkZDI5NDUgNWM1YzJhM2QiLGhhc2g6WS5zaGEyNTYsZ1JlZDoh''@;'; put 'put ''MSxnOlsiYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjEiLCJiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNCJdfSkscSgicDI1NiIse3R5cGU6InNob3J0Iixwcmlt''@;'; put 'put ''ZTpudWxsLHA6ImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNWFj''@;'; put 'put ''NjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGIiLG46ImZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxIixoYXNoOlkuc2hhMjU2LGdSZWQ6''@;'; put 'put ''ITEsZzpbIjZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2IiwiNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUiXX0pLHEoInAzODQi''@;'; put 'put ''LHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMiLGI6ImIzMzEyZmE3IGUyM2VlN2U0IDk4OGUwNTZiIGUzZjgyZDE5IDE4MWQ5YzZlIGZlODE0MTEyIDAzMTQwODhmIDUwMTM4NzVhIGM2NTYz''@;'; put 'put ''OThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSBmNDM3MmRkZiA1ODFhMGRiMiA0OGIwYTc3YSBlY2VjMTk2YSBjY2M1Mjk3MyIsaGFzaDpZLnNoYTM4NCxnUmVkOiEx''@;'; put 'put ''LGc6WyJhYTg3Y2EyMiBiZThiMDUzNyA4ZWIxYzcxZSBmMzIwYWQ3NCA2ZTFkM2I2MiA4YmE3OWI5OCA1OWY3NDFlMCA4MjU0MmEzOCA1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNyIsIjM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWEx''@;'; put 'put ''NDdjIGU5ZGEzMTEzIGI1ZjBiOGMwIDBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmIl19KSxxKCJwNTIxIix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiIwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiA5OWIzMTVmMyBiOGI0ODk5MSA4ZWYxMDllMSA1''@;'; put 'put ''NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCAzYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMCIsbjoiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmEgNTE4Njg3ODMg''@;'; put 'put ''YmYyZjk2NmIgN2ZjYzAxNDggZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDkiLGhhc2g6WS5zaGE1MTIsZ1JlZDohMSxnOlsiMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgMDUzZmI1MjEgZjgyOGFmNjAgNmI0''@;'; put 'put ''ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYiLCIwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSA1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2Vl''@;'; put 'put ''NzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAzZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MCJdfSkscSgiY3VydmUyNTUxOSIse3R5cGU6Im1vbnQiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmZmZmZmZmZWQiLGE6Ijc2ZDA2IixiOiIxIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOlkuc2hhMjU2LGdSZWQ6ITEsZzpbIjkiXX0pLHEoImVkMjU1MTkiLHt0eXBlOiJlZHdh''@;'; put 'put ''cmRzIixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiItMSIsYzoiMSIsZDoiNTIwMzZjZWUyYjZmZmU3MyA4Y2M3NDA3OTc3NzllODk4IDAwNzAwYTRkNDE0MWQ4YWIgNzVlYjRk''@;'; put 'put ''Y2ExMzU5NzhhMyIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpZLnNoYTI1NixnUmVkOiExLGc6WyIyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2''@;'; put 'put ''MDhmMjVkNTFhIiwiNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCJdfSk7dHJ5e2llPVooMTAzNyl9Y2F0Y2goSil7aWU9dm9pZCAwfXEoInNlY3AyNTZrMSIse3R5cGU6InNob3J0IixwcmltZToiazI1NiIscDoiZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiLGE6IjAiLGI6IjciLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxIixoOiIxIixoYXNo''@;'; put 'put ''Olkuc2hhMjU2LGJldGE6IjdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiLGxhbWJkYToiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MiIsYmFzaXM6W3th''@;'; put 'put ''OiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSIsYjoiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIn0se2E6IjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIsYjoiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUifV0sZ1JlZDohMSxnOlsi''@;'; put 'put ''NzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgiLGllXX0pfSw3OTU0OihVLFEsWik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIGllPVooMzc4NSksbGU9WigyMTU2KSxZPVooOTUzKSxXPVooNTQyNyksTj1aKDk5MzEpLGVlPVkuYXNzZXJ0LHE9WigxMjUxKSxKPVooNjExKTtmdW5jdGlvbiBzZShhZSl7aWYoISh0aGlzIGluc3RhbmNlb2Ygc2UpKXJldHVybiBuZXcgc2UoYWUpOyJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''YWUmJihlZShPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxhZSksIlVua25vd24gY3VydmUgIithZSksYWU9V1thZV0pLGFlIGluc3RhbmNlb2YgVy5QcmVzZXRDdXJ2ZSYmKGFlPXtjdXJ2ZTphZX0pLHRoaXMuY3VydmU9YWUuY3VydmUuY3VydmUsdGhpcy5uPXRoaXMu''@;'; put 'put ''Y3VydmUubix0aGlzLm5oPXRoaXMubi51c2hybigxKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMuZz1hZS5jdXJ2ZS5nLHRoaXMuZy5wcmVjb21wdXRlKGFlLmN1cnZlLm4uYml0TGVuZ3RoKCkrMSksdGhpcy5oYXNoPWFlLmhhc2h8fGFlLmN1cnZlLmhhc2h9VS5leHBvcnRzPXNlLHNlLnBy''@;'; put 'put ''b3RvdHlwZS5rZXlQYWlyPWZ1bmN0aW9uKGFlKXtyZXR1cm4gbmV3IHEodGhpcyxhZSl9LHNlLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZT1mdW5jdGlvbihhZSxmZSl7cmV0dXJuIHEuZnJvbVByaXZhdGUodGhpcyxhZSxmZSl9LHNlLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9u''@;'; put 'put ''KGFlLGZlKXtyZXR1cm4gcS5mcm9tUHVibGljKHRoaXMsYWUsZmUpfSxzZS5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbihhZSl7YWV8fChhZT17fSk7Zm9yKHZhciBmZT1uZXcgbGUoe2hhc2g6dGhpcy5oYXNoLHBlcnM6YWUucGVycyxwZXJzRW5jOmFlLnBlcnNFbmN8fCJ1dGY4Iixl''@;'; put 'put ''bnRyb3B5OmFlLmVudHJvcHl8fE4odGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksZW50cm9weUVuYzphZS5lbnRyb3B5JiZhZS5lbnRyb3B5RW5jfHwidXRmOCIsbm9uY2U6dGhpcy5uLnRvQXJyYXkoKX0pLGRlPXRoaXMubi5ieXRlTGVuZ3RoKCksdmU9dGhpcy5uLnN1YihuZXcgaWUoMikpOzsp''@;'; put 'put ''e3ZhciBBZT1uZXcgaWUoZmUuZ2VuZXJhdGUoZGUpKTtpZighKEFlLmNtcCh2ZSk+MCkpcmV0dXJuIEFlLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUoQWUpfX0sc2UucHJvdG90eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbihhZSxmZSl7dmFyIGRlPTgqYWUuYnl0ZUxlbmd0aCgpLXRo''@;'; put 'put ''aXMubi5iaXRMZW5ndGgoKTtyZXR1cm4gZGU+MCYmKGFlPWFlLnVzaHJuKGRlKSksIWZlJiZhZS5jbXAodGhpcy5uKT49MD9hZS5zdWIodGhpcy5uKTphZX0sc2UucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oYWUsZmUsZGUsdmUpeyJvYmplY3QiPT10eXBlb2YgZGUmJih2ZT1kZSxkZT1udWxs''@;'; put 'put ''KSx2ZXx8KHZlPXt9KSxmZT10aGlzLmtleUZyb21Qcml2YXRlKGZlLGRlKSxhZT10aGlzLl90cnVuY2F0ZVRvTihuZXcgaWUoYWUsMTYpKTtmb3IodmFyIEFlPXRoaXMubi5ieXRlTGVuZ3RoKCksa2U9ZmUuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoImJlIixBZSksU2U9YWUudG9BcnJheSgiYmUi''@;'; put 'put ''LEFlKSxJZT1uZXcgbGUoe2hhc2g6dGhpcy5oYXNoLGVudHJvcHk6a2Usbm9uY2U6U2UscGVyczp2ZS5wZXJzLHBlcnNFbmM6dmUucGVyc0VuY3x8InV0ZjgifSksVGU9dGhpcy5uLnN1YihuZXcgaWUoMSkpLEVlPTA7O0VlKyspe3ZhciBoZT12ZS5rP3ZlLmsoRWUpOm5ldyBpZShJZS5nZW5l''@;'; put 'put ''cmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7aWYoISgoaGU9dGhpcy5fdHJ1bmNhdGVUb04oaGUsITApKS5jbXBuKDEpPD0wfHxoZS5jbXAoVGUpPj0wKSl7dmFyIE89dGhpcy5nLm11bChoZSk7aWYoIU8uaXNJbmZpbml0eSgpKXt2YXIgej1PLmdldFgoKSxuZT16LnVtb2QodGhpcy5uKTtp''@;'; put 'put ''ZigwIT09bmUuY21wbigwKSl7dmFyIHRlPWhlLmludm0odGhpcy5uKS5tdWwobmUubXVsKGZlLmdldFByaXZhdGUoKSkuaWFkZChhZSkpO2lmKDAhPT0odGU9dGUudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgeD0oTy5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09ei5jbXAobmUpPzI6MCk7''@;'; put 'put ''cmV0dXJuIHZlLmNhbm9uaWNhbCYmdGUuY21wKHRoaXMubmgpPjAmJih0ZT10aGlzLm4uc3ViKHRlKSx4Xj0xKSxuZXcgSih7cjpuZSxzOnRlLHJlY292ZXJ5UGFyYW06eH0pfX19fX19LHNlLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oYWUsZmUsZGUsdmUpe2FlPXRoaXMuX3RydW5jYXRl''@;'; put 'put ''VG9OKG5ldyBpZShhZSwxNikpLGRlPXRoaXMua2V5RnJvbVB1YmxpYyhkZSx2ZSk7dmFyIEFlPShmZT1uZXcgSihmZSwiaGV4IikpLnIsa2U9ZmUucztpZihBZS5jbXBuKDEpPDB8fEFlLmNtcCh0aGlzLm4pPj0wfHxrZS5jbXBuKDEpPDB8fGtlLmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3Zh''@;'; put 'put ''ciBTZSxJZT1rZS5pbnZtKHRoaXMubiksVGU9SWUubXVsKGFlKS51bW9kKHRoaXMubiksRWU9SWUubXVsKEFlKS51bW9kKHRoaXMubik7cmV0dXJuIHRoaXMuY3VydmUuX21heHdlbGxUcmljaz8hKFNlPXRoaXMuZy5qbXVsQWRkKFRlLGRlLmdldFB1YmxpYygpLEVlKSkuaXNJbmZpbml0eSgp''@;'; put 'put ''JiZTZS5lcVhUb1AoQWUpOiEoU2U9dGhpcy5nLm11bEFkZChUZSxkZS5nZXRQdWJsaWMoKSxFZSkpLmlzSW5maW5pdHkoKSYmMD09PVNlLmdldFgoKS51bW9kKHRoaXMubikuY21wKEFlKX0sc2UucHJvdG90eXBlLnJlY292ZXJQdWJLZXk9ZnVuY3Rpb24oYWUsZmUsZGUsdmUpe2VlKCgzJmRl''@;'; put 'put ''KT09PWRlLCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIiksZmU9bmV3IEooZmUsdmUpO3ZhciBBZT10aGlzLm4sa2U9bmV3IGllKGFlKSxTZT1mZS5yLEllPWZlLnMsVGU9MSZkZSxFZT1kZT4+MTtpZihTZS5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2''@;'; put 'put ''ZS5uKSk+PTAmJkVlKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlIik7U2U9dGhpcy5jdXJ2ZS5wb2ludEZyb21YKEVlP1NlLmFkZCh0aGlzLmN1cnZlLm4pOlNlLFRlKTt2YXIgaGU9ZmUuci5pbnZtKEFlKSxPPUFlLnN1YihrZSkubXVsKGhl''@;'; put 'put ''KS51bW9kKEFlKSx6PUllLm11bChoZSkudW1vZChBZSk7cmV0dXJuIHRoaXMuZy5tdWxBZGQoTyxTZSx6KX0sc2UucHJvdG90eXBlLmdldEtleVJlY292ZXJ5UGFyYW09ZnVuY3Rpb24oYWUsZmUsZGUsdmUpe2lmKG51bGwhPT0oZmU9bmV3IEooZmUsdmUpKS5yZWNvdmVyeVBhcmFtKXJldHVy''@;'; put 'put ''biBmZS5yZWNvdmVyeVBhcmFtO2Zvcih2YXIgQWU9MDtBZTw0O0FlKyspe3ZhciBrZTt0cnl7a2U9dGhpcy5yZWNvdmVyUHViS2V5KGFlLGZlLEFlKX1jYXRjaChTZSl7Y29udGludWV9aWYoa2UuZXEoZGUpKXJldHVybiBBZX10aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHZhbGlk''@;'; put 'put ''IHJlY292ZXJ5IGZhY3RvciIpfX0sMTI1MTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDM3ODUpLGxlPVooOTUzKS5hc3NlcnQ7ZnVuY3Rpb24gWShXLE4pe3RoaXMuZWM9Vyx0aGlzLnByaXY9bnVsbCx0aGlzLnB1Yj1udWxsLE4ucHJpdiYmdGhpcy5faW1wb3J0UHJpdmF0ZShO''@;'; put 'put ''LnByaXYsTi5wcml2RW5jKSxOLnB1YiYmdGhpcy5faW1wb3J0UHVibGljKE4ucHViLE4ucHViRW5jKX1VLmV4cG9ydHM9WSxZLmZyb21QdWJsaWM9ZnVuY3Rpb24oVyxOLGVlKXtyZXR1cm4gTiBpbnN0YW5jZW9mIFk/TjpuZXcgWShXLHtwdWI6TixwdWJFbmM6ZWV9KX0sWS5mcm9tUHJpdmF0''@;'; put 'put ''ZT1mdW5jdGlvbihXLE4sZWUpe3JldHVybiBOIGluc3RhbmNlb2YgWT9OOm5ldyBZKFcse3ByaXY6Tixwcml2RW5jOmVlfSl9LFkucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dmFyIFc9dGhpcy5nZXRQdWJsaWMoKTtyZXR1cm4gVy5pc0luZmluaXR5KCk/e3Jlc3VsdDohMSxyZWFz''@;'; put 'put ''b246IkludmFsaWQgcHVibGljIGtleSJ9OlcudmFsaWRhdGUoKT9XLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKT97cmVzdWx0OiEwLHJlYXNvbjpudWxsfTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSAqIE4gIT0gTyJ9OntyZXN1bHQ6ITEscmVhc29uOiJQdWJsaWMg''@;'; put 'put ''a2V5IGlzIG5vdCBhIHBvaW50In19LFkucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbihXLE4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgVyYmKE49VyxXPW51bGwpLHRoaXMucHVifHwodGhpcy5wdWI9dGhpcy5lYy5nLm11bCh0aGlzLnByaXYpKSxOP3RoaXMucHViLmVuY29kZShOLFcp''@;'; put 'put ''OnRoaXMucHVifSxZLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKFcpe3JldHVybiJoZXgiPT09Vz90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxZLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZT1mdW5jdGlvbihXLE4pe3RoaXMucHJpdj1uZXcgaWUoVyxOfHwxNiks''@;'; put 'put ''dGhpcy5wcml2PXRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubil9LFkucHJvdG90eXBlLl9pbXBvcnRQdWJsaWM9ZnVuY3Rpb24oVyxOKXtpZihXLnh8fFcueSlyZXR1cm4ibW9udCI9PT10aGlzLmVjLmN1cnZlLnR5cGU/bGUoVy54LCJOZWVkIHggY29vcmRpbmF0ZSIpOiJzaG9ydCIh''@;'; put 'put ''PT10aGlzLmVjLmN1cnZlLnR5cGUmJiJlZHdhcmRzIiE9PXRoaXMuZWMuY3VydmUudHlwZXx8bGUoVy54JiZXLnksIk5lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUiKSx2b2lkKHRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQoVy54LFcueSkpO3RoaXMucHViPXRoaXMuZWMuY3VydmUu''@;'; put 'put ''ZGVjb2RlUG9pbnQoVyxOKX0sWS5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKFcpe3JldHVybiBXLnZhbGlkYXRlKCl8fGxlKFcudmFsaWRhdGUoKSwicHVibGljIHBvaW50IG5vdCB2YWxpZGF0ZWQiKSxXLm11bCh0aGlzLnByaXYpLmdldFgoKX0sWS5wcm90b3R5cGUuc2lnbj1mdW5jdGlv''@;'; put 'put ''bihXLE4sZWUpe3JldHVybiB0aGlzLmVjLnNpZ24oVyx0aGlzLE4sZWUpfSxZLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gdGhpcy5lYy52ZXJpZnkoVyxOLHRoaXMpfSxZLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIjxLZXkgcHJpdjogIisodGhp''@;'; put 'put ''cy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpKyIgcHViOiAiKyh0aGlzLnB1YiYmdGhpcy5wdWIuaW5zcGVjdCgpKSsiID4ifX0sNjExOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooMzc4NSksbGU9Wig5NTMpLFk9bGUuYXNzZXJ0O2Z1bmN0aW9uIFcoc2UsYWUpe2lm''@;'; put 'put ''KHNlIGluc3RhbmNlb2YgVylyZXR1cm4gc2U7dGhpcy5faW1wb3J0REVSKHNlLGFlKXx8KFkoc2UuciYmc2UucywiU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzIiksdGhpcy5yPW5ldyBpZShzZS5yLDE2KSx0aGlzLnM9bmV3IGllKHNlLnMsMTYpLHRoaXMucmVjb3ZlcnlQYXJhbT12b2lkIDA9''@;'; put 'put ''PT1zZS5yZWNvdmVyeVBhcmFtP251bGw6c2UucmVjb3ZlcnlQYXJhbSl9ZnVuY3Rpb24gTigpe3RoaXMucGxhY2U9MH1mdW5jdGlvbiBlZShzZSxhZSl7dmFyIGZlPXNlW2FlLnBsYWNlKytdO2lmKCEoMTI4JmZlKSlyZXR1cm4gZmU7dmFyIGRlPTE1JmZlO2lmKDA9PT1kZXx8ZGU+NClyZXR1''@;'; put 'put ''cm4hMTtmb3IodmFyIHZlPTAsQWU9MCxrZT1hZS5wbGFjZTtBZTxkZTtBZSsrLGtlKyspdmU8PD04LHZlfD1zZVtrZV0sdmU+Pj49MDtyZXR1cm4hKHZlPD0xMjcpJiYoYWUucGxhY2U9a2UsdmUpfWZ1bmN0aW9uIHEoc2Upe2Zvcih2YXIgYWU9MCxmZT1zZS5sZW5ndGgtMTshc2VbYWVdJiYh''@;'; put 'put ''KDEyOCZzZVthZSsxXSkmJmFlPGZlOylhZSsrO3JldHVybiAwPT09YWU/c2U6c2Uuc2xpY2UoYWUpfWZ1bmN0aW9uIEooc2UsYWUpe2lmKGFlPDEyOClzZS5wdXNoKGFlKTtlbHNle3ZhciBmZT0xKyhNYXRoLmxvZyhhZSkvTWF0aC5MTjI+Pj4zKTtmb3Ioc2UucHVzaCgxMjh8ZmUpOy0tZmU7''@;'; put 'put ''KXNlLnB1c2goYWU+Pj4oZmU8PDMpJjI1NSk7c2UucHVzaChhZSl9fVUuZXhwb3J0cz1XLFcucHJvdG90eXBlLl9pbXBvcnRERVI9ZnVuY3Rpb24oc2UsYWUpe3NlPWxlLnRvQXJyYXkoc2UsYWUpO3ZhciBmZT1uZXcgTjtpZig0OCE9PXNlW2ZlLnBsYWNlKytdKXJldHVybiExO3ZhciBkZT1l''@;'; put 'put ''ZShzZSxmZSk7aWYoITE9PT1kZXx8ZGUrZmUucGxhY2UhPT1zZS5sZW5ndGh8fDIhPT1zZVtmZS5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgdmU9ZWUoc2UsZmUpO2lmKCExPT09dmUpcmV0dXJuITE7dmFyIEFlPXNlLnNsaWNlKGZlLnBsYWNlLHZlK2ZlLnBsYWNlKTtpZihmZS5wbGFjZSs9dmUs''@;'; put 'put ''MiE9PXNlW2ZlLnBsYWNlKytdKXJldHVybiExO3ZhciBrZT1lZShzZSxmZSk7aWYoITE9PT1rZXx8c2UubGVuZ3RoIT09a2UrZmUucGxhY2UpcmV0dXJuITE7dmFyIFNlPXNlLnNsaWNlKGZlLnBsYWNlLGtlK2ZlLnBsYWNlKTtpZigwPT09QWVbMF0pe2lmKCEoMTI4JkFlWzFdKSlyZXR1cm4h''@;'; put 'put ''MTtBZT1BZS5zbGljZSgxKX1pZigwPT09U2VbMF0pe2lmKCEoMTI4JlNlWzFdKSlyZXR1cm4hMTtTZT1TZS5zbGljZSgxKX1yZXR1cm4gdGhpcy5yPW5ldyBpZShBZSksdGhpcy5zPW5ldyBpZShTZSksdGhpcy5yZWNvdmVyeVBhcmFtPW51bGwsITB9LFcucHJvdG90eXBlLnRvREVSPWZ1bmN0''@;'; put 'put ''aW9uKHNlKXt2YXIgYWU9dGhpcy5yLnRvQXJyYXkoKSxmZT10aGlzLnMudG9BcnJheSgpO2ZvcigxMjgmYWVbMF0mJihhZT1bMF0uY29uY2F0KGFlKSksMTI4JmZlWzBdJiYoZmU9WzBdLmNvbmNhdChmZSkpLGFlPXEoYWUpLGZlPXEoZmUpOyEoZmVbMF18fDEyOCZmZVsxXSk7KWZlPWZlLnNs''@;'; put 'put ''aWNlKDEpO3ZhciBkZT1bMl07SihkZSxhZS5sZW5ndGgpLChkZT1kZS5jb25jYXQoYWUpKS5wdXNoKDIpLEooZGUsZmUubGVuZ3RoKTt2YXIgdmU9ZGUuY29uY2F0KGZlKSxBZT1bNDhdO3JldHVybiBKKEFlLHZlLmxlbmd0aCksQWU9QWUuY29uY2F0KHZlKSxsZS5lbmNvZGUoQWUsc2UpfX0s''@;'; put 'put ''NTk4MDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDM3MTUpLGxlPVooNTQyNyksWT1aKDk1MyksVz1ZLmFzc2VydCxOPVkucGFyc2VCeXRlcyxlZT1aKDkwODcpLHE9WigzNjIyKTtmdW5jdGlvbiBKKHNlKXtpZihXKCJlZDI1NTE5Ij09PXNlLCJvbmx5IHRlc3RlZCB3aXRoIGVk''@;'; put 'put ''MjU1MTkgc28gZmFyIiksISh0aGlzIGluc3RhbmNlb2YgSikpcmV0dXJuIG5ldyBKKHNlKTt0aGlzLmN1cnZlPXNlPWxlW3NlXS5jdXJ2ZSx0aGlzLmc9c2UuZyx0aGlzLmcucHJlY29tcHV0ZShzZS5uLmJpdExlbmd0aCgpKzEpLHRoaXMucG9pbnRDbGFzcz1zZS5wb2ludCgpLmNvbnN0cnVj''@;'; put 'put ''dG9yLHRoaXMuZW5jb2RpbmdMZW5ndGg9TWF0aC5jZWlsKHNlLm4uYml0TGVuZ3RoKCkvOCksdGhpcy5oYXNoPWllLnNoYTUxMn1VLmV4cG9ydHM9SixKLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKHNlLGFlKXtzZT1OKHNlKTt2YXIgZmU9dGhpcy5rZXlGcm9tU2VjcmV0KGFlKSxkZT10aGlz''@;'; put 'put ''Lmhhc2hJbnQoZmUubWVzc2FnZVByZWZpeCgpLHNlKSx2ZT10aGlzLmcubXVsKGRlKSxBZT10aGlzLmVuY29kZVBvaW50KHZlKSxrZT10aGlzLmhhc2hJbnQoQWUsZmUucHViQnl0ZXMoKSxzZSkubXVsKGZlLnByaXYoKSksU2U9ZGUuYWRkKGtlKS51bW9kKHRoaXMuY3VydmUubik7cmV0dXJu''@;'; put 'put ''IHRoaXMubWFrZVNpZ25hdHVyZSh7Ujp2ZSxTOlNlLFJlbmNvZGVkOkFlfSl9LEoucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihzZSxhZSxmZSl7c2U9TihzZSksYWU9dGhpcy5tYWtlU2lnbmF0dXJlKGFlKTt2YXIgZGU9dGhpcy5rZXlGcm9tUHVibGljKGZlKSx2ZT10aGlzLmhhc2hJbnQo''@;'; put 'put ''YWUuUmVuY29kZWQoKSxkZS5wdWJCeXRlcygpLHNlKSxBZT10aGlzLmcubXVsKGFlLlMoKSk7cmV0dXJuIGFlLlIoKS5hZGQoZGUucHViKCkubXVsKHZlKSkuZXEoQWUpfSxKLnByb3RvdHlwZS5oYXNoSW50PWZ1bmN0aW9uKCl7Zm9yKHZhciBzZT10aGlzLmhhc2goKSxhZT0wO2FlPGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg7YWUrKylzZS51cGRhdGUoYXJndW1lbnRzW2FlXSk7cmV0dXJuIFkuaW50RnJvbUxFKHNlLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LEoucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oc2Upe3JldHVybiBlZS5mcm9tUHVibGljKHRoaXMsc2UpfSxK''@;'; put 'put ''LnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKHNlKXtyZXR1cm4gZWUuZnJvbVNlY3JldCh0aGlzLHNlKX0sSi5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbihzZSl7cmV0dXJuIHNlIGluc3RhbmNlb2YgcT9zZTpuZXcgcSh0aGlzLHNlKX0sSi5wcm90b3R5cGUuZW5j''@;'; put 'put ''b2RlUG9pbnQ9ZnVuY3Rpb24oc2Upe3ZhciBhZT1zZS5nZXRZKCkudG9BcnJheSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpO3JldHVybiBhZVt0aGlzLmVuY29kaW5nTGVuZ3RoLTFdfD1zZS5nZXRYKCkuaXNPZGQoKT8xMjg6MCxhZX0sSi5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rp''@;'; put 'put ''b24oc2Upe3ZhciBhZT0oc2U9WS5wYXJzZUJ5dGVzKHNlKSkubGVuZ3RoLTEsZmU9c2Uuc2xpY2UoMCxhZSkuY29uY2F0KC0xMjkmc2VbYWVdKSxkZT0wIT0oMTI4JnNlW2FlXSksdmU9WS5pbnRGcm9tTEUoZmUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkodmUsZGUpfSxKLnByb3Rv''@;'; put 'put ''dHlwZS5lbmNvZGVJbnQ9ZnVuY3Rpb24oc2Upe3JldHVybiBzZS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCl9LEoucHJvdG90eXBlLmRlY29kZUludD1mdW5jdGlvbihzZSl7cmV0dXJuIFkuaW50RnJvbUxFKHNlKX0sSi5wcm90b3R5cGUuaXNQb2ludD1mdW5jdGlvbihzZSl7''@;'; put 'put ''cmV0dXJuIHNlIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzfX0sOTA4NzooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDk1MyksbGU9aWUuYXNzZXJ0LFk9aWUucGFyc2VCeXRlcyxXPWllLmNhY2hlZFByb3BlcnR5O2Z1bmN0aW9uIE4oZWUscSl7dGhpcy5lZGRzYT1lZSx0aGlz''@;'; put 'put ''Ll9zZWNyZXQ9WShxLnNlY3JldCksZWUuaXNQb2ludChxLnB1Yik/dGhpcy5fcHViPXEucHViOnRoaXMuX3B1YkJ5dGVzPVkocS5wdWIpfU4uZnJvbVB1YmxpYz1mdW5jdGlvbihlZSxxKXtyZXR1cm4gcSBpbnN0YW5jZW9mIE4/cTpuZXcgTihlZSx7cHViOnF9KX0sTi5mcm9tU2VjcmV0PWZ1''@;'; put 'put ''bmN0aW9uKGVlLHEpe3JldHVybiBxIGluc3RhbmNlb2YgTj9xOm5ldyBOKGVlLHtzZWNyZXQ6cX0pfSxOLnByb3RvdHlwZS5zZWNyZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VjcmV0fSxXKE4sInB1YkJ5dGVzIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50''@;'; put 'put ''KHRoaXMucHViKCkpfSksVyhOLCJwdWIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3B1YkJ5dGVzP3RoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpOnRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpfSksVyhOLCJwcml2Qnl0ZXMiLGZ1bmN0aW9uKCl7dmFyIGVlPXRo''@;'; put 'put ''aXMuZWRkc2EscT10aGlzLmhhc2goKSxKPWVlLmVuY29kaW5nTGVuZ3RoLTEsc2U9cS5zbGljZSgwLGVlLmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gc2VbMF0mPTI0OCxzZVtKXSY9MTI3LHNlW0pdfD02NCxzZX0pLFcoTiwicHJpdiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNv''@;'; put 'put ''ZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSl9KSxXKE4sImhhc2giLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKX0pLFcoTiwibWVzc2FnZVByZWZpeCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhp''@;'; put 'put ''cy5lZGRzYS5lbmNvZGluZ0xlbmd0aCl9KSxOLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKGVlKXtyZXR1cm4gbGUodGhpcy5fc2VjcmV0LCJLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeSIpLHRoaXMuZWRkc2Euc2lnbihlZSx0aGlzKX0sTi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGVlLHEp''@;'; put 'put ''e3JldHVybiB0aGlzLmVkZHNhLnZlcmlmeShlZSxxLHRoaXMpfSxOLnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24oZWUpe3JldHVybiBsZSh0aGlzLl9zZWNyZXQsIktleVBhaXIgaXMgcHVibGljIG9ubHkiKSxpZS5lbmNvZGUodGhpcy5zZWNyZXQoKSxlZSl9LE4ucHJvdG90eXBlLmdl''@;'; put 'put ''dFB1YmxpYz1mdW5jdGlvbihlZSl7cmV0dXJuIGllLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksZWUpfSxVLmV4cG9ydHM9Tn0sMzYyMjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDM3ODUpLGxlPVooOTUzKSxZPWxlLmFzc2VydCxXPWxlLmNhY2hlZFByb3BlcnR5LE49bGUucGFy''@;'; put 'put ''c2VCeXRlcztmdW5jdGlvbiBlZShxLEope3RoaXMuZWRkc2E9cSwib2JqZWN0IiE9dHlwZW9mIEomJihKPU4oSikpLEFycmF5LmlzQXJyYXkoSikmJihKPXtSOkouc2xpY2UoMCxxLmVuY29kaW5nTGVuZ3RoKSxTOkouc2xpY2UocS5lbmNvZGluZ0xlbmd0aCl9KSxZKEouUiYmSi5TLCJTaWdu''@;'; put 'put ''YXR1cmUgd2l0aG91dCBSIG9yIFMiKSxxLmlzUG9pbnQoSi5SKSYmKHRoaXMuX1I9Si5SKSxKLlMgaW5zdGFuY2VvZiBpZSYmKHRoaXMuX1M9Si5TKSx0aGlzLl9SZW5jb2RlZD1BcnJheS5pc0FycmF5KEouUik/Si5SOkouUmVuY29kZWQsdGhpcy5fU2VuY29kZWQ9QXJyYXkuaXNBcnJheShK''@;'; put 'put ''LlMpP0ouUzpKLlNlbmNvZGVkfVcoZWUsIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSl9KSxXKGVlLCJSIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSl9KSxXKGVlLCJSZW5j''@;'; put 'put ''b2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLlIoKSl9KSxXKGVlLCJTZW5jb2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpfSksZWUucHJvdG90eXBlLnRvQnl0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5SZW5jb2RlZCgpLmNvbmNhdCh0aGlzLlNlbmNvZGVkKCkpfSxlZS5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1cm4gbGUuZW5jb2RlKHRoaXMudG9CeXRlcygpLCJoZXgiKS50b1VwcGVyQ2FzZSgpfSxVLmV4cG9ydHM9ZWV9LDEwMzc6VT0+e1UuZXhwb3J0cz17ZG91Ymxl''@;'; put 'put ''czp7c3RlcDo0LHBvaW50czpbWyJlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhIiwiZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMSJdLFsiODI4MjI2MzIx''@;'; put 'put ''MmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCIsIjExZjhhODA5ODU1N2RmZTQ1ZTgyNTZlODMwYjYwYWNlNjJkNjEzYWMyZjdiMTdiZWQzMWI2ZWFmZjZlMjZjYWYiXSxbIjE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4''@;'; put 'put ''MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzkiLCJkMzUwNmUwZDllM2M3OWViYTRlZjk3YTUxZmY3MWY1ZWFjYjU5NTVhZGQyNDM0NWM2ZWZhNmZmZWU5ZmVkNjk1Il0sWyIzNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwIiwi''@;'; put 'put ''NGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5Il0sWyI4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjIiwiNGFhZDBhNmY2OGQzMDhiNGIzZmJkNzgxM2FiMGRh''@;'; put 'put ''MDRmOWUzMzY1NDYxNjJlZTU2YjNlZmYwYzY1ZmQ0ZmQzNiJdLFsiNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYSIsIjk2ZTg2N2I1NTk1Y2M0OThhOTIxMTM3NDg4ODI0ZDZlMjY2MGEwNjUzNzc5NDk0ODAxZGMwNjlkOWVi''@;'; put 'put ''MzlmNWYiXSxbImVlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEiLCI1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5Il0sWyIxMDBmNDRkYTY5NmU3MTY3Mjc5''@;'; put 'put ''MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwIiwiY2RkOWUxMzE5MmEwMGI3NzJlYzhmMzMwMGMwOTA2NjZiN2ZmNGExOGZmNTE5NWFjMGZiZDVjZDYyYmM2NWEwOSJdLFsiZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1''@;'; put 'put ''MmM4YWNkZTZlNTM0ZmQyZCIsIjlkNzA2MTkyODk0MDQwNWU2YmI2YTQxNzY1OTc1MzVhZjI5MmRkNDE5ZTFjZWQ3OWE0NGYxOGYyOTQ1NmEwMGQiXSxbImZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQiLCJlNTdjNmI2Yzk3''@;'; put 'put ''ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4Il0sWyJkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxIiwiOWJhY2FhMzU0ODE2NDJiYzQxZjQ2M2Y3ZWM5NzgwZTVkZWM3YWRj''@;'; put 'put ''NTA4Zjc0MGExN2U5ZWE4ZTI3YTY4YmUxZCJdLFsiNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCIsIjViYzA4N2QwYmM4MDEwNmQ4OGM5ZWNjYWMyMGQzYzFjMTM5OTk5ODFlMTQ0MzQ2OTlkY2IwOTZiMDIyNzcxYzgiXSxb''@;'; put 'put ''IjhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDciLCIxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhIl0sWyIzODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4''@;'; put 'put ''MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyIiwiMjgzYmViYzNlOGVhMjNmNTY3MDFkZTE5ZTllYmY0NTc2YjMwNGVlYzIwODZkYzhjYzA0NThmZTU1NDJlNTQ1MyJdLFsiNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMz''@;'; put 'put ''ZmFjM2E3IiwiN2M4MGM2OGU2MDMwNTliYTY5YjhlMmEzMGU0NWM0ZDQ3ZWE0ZGQyZjVjMjgxMDAyZDg2ODkwNjAzYTg0MjE2MCJdLFsiMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCIsIjU2ZTcwNzk3ZTk2NjRlZjViZmIw''@;'; put 'put ''MTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTAiXSxbIjg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMiLCI3YzQ4MWI5YjViNDNiMmViNjM3NDA0OWJmYTYyYzJlNWU3N2YxN2ZjYzUyOThmNDRj''@;'; put 'put ''OGUzMDk0Zjc5MDMxM2E2Il0sWyI5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGEiLCI1M2E1NjI4NTZkY2I2NjQ2ZGM2Yjc0YzVkMWMzNDE4YzZkNGRmZjA4Yzk3Y2QyYmVkNGNiN2Y4OGQ4YzhlNTg5Il0sWyI2MjYwY2U3ZjQ2''@;'; put 'put ''MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4IiwiYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxNyJdLFsiZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhm''@;'; put 'put ''NTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCIsIjQ1NzE1MzRiYWE5NGQzYjVmOWY5OGQwOWZiOTkwYmRkYmQ1ZjViMDNlYzQ4MWYxMGUwZTVkYzg0MWQ3NTViZGEiXSxbImUwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUiLCI3''@;'; put 'put ''YTkwODk3NGJjZTE4Y2ZlMTJhMjdiYjJhZDVhNDg4Y2Q3NDg0YTc3ODcxMDQ4NzBiMjcwMzRmOTRlZWUzMWRkIl0sWyIyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0IiwiNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmEx''@;'; put 'put ''OTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMiJdLFsiNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYyIsIjE3NzQ5Yzc2NmM5ZDBiMThlMTZmZDA5ZjZkZWY2ODFiNTMwYjk2MTRiZmY3ZGQzM2UwYjM5NDE4MTdk''@;'; put 'put ''Y2FhZTYiXSxbImZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjYiLCI2ZTA1NjhkYjliMGIxMzI5N2NmNjc0ZGVjY2I2YWY5MzEyNmI1OTZiOTczZjdiNzc3MDFkM2RiN2YyM2NiOTZmIl0sWyI3NmU2NDExM2Y2NzdjZjBlMTBh''@;'; put 'put ''MjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5IiwiYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMSJdLFsiYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVl''@;'; put 'put ''M2FiMTUwMjQyYmNiYjg5MSIsIjg5M2ZiNTc4OTUxYWQyNTM3ZjcxOGYyZWFjYmZiYmJiODIzMTRlZWY3ODgwY2ZlOTE3ZTczNWQ5Njk5YTg0YzMiXSxbImQ4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGIiLCJmZWJmYWEzOGYy''@;'; put 'put ''YmM3ZWFlNzI4ZWM2MDgxOGMzNDBlYjAzNDI4ZDYzMmJiMDY3ZTE3OTM2M2VkNzVkN2Q5OTFmIl0sWyJiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzIiwiMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0''@;'; put 'put ''ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlNyJdLFsiZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCIsImVlZDFkZTdmNjM4ZTAwNzcxZTg5NzY4Y2EzY2E5NDQ3MmQxNTVlODBhZjMyMmVhOWZjYjQyOTFiNmFjOWVjNzgiXSxb''@;'; put 'put ''ImEzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAiLCI3MzcwZjkxY2ZiNjdlNGY1MDgxODA5ZmEyNWQ0MGY5YjE3MzVkYmY3YzBhMTFhMTMwYzBkMWEwNDFlMTc3ZWExIl0sWyI5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3''@;'; put 'put ''OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0IiwiZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwIl0sWyI4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0Yzll''@;'; put 'put ''YzRjMGRhIiwiNjYyYTlmMmRiYTA2Mzk4NmRlMWQ5MGMyYjZiZTIxNWRiYmVhMmNmZTk1NTEwYmZkZjIzY2JmNzk1MDFmZmY4MiJdLFsiZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMSIsIjFlNjM2MzNhZDBlZjRmMWMxNjYx''@;'; put 'put ''YTZkMGVhMDJiNzI4NmNjN2U3NGVjOTUxZDFjOTgyMmMzODU3NmZlYjczYmMiXSxbIjhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUiLCJlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRl''@;'; put 'put ''N2QyYTRjNjY3MDI0MTRiIl0sWyJlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxIiwiMmE3NThlMzAwZmE3OTg0YjQ3MWIwMDZhMWFhZmJiMThkMGE2YjJjMDQyMGU4M2UyMGU4YTk0MjFjZjJjZmQ1MSJdLFsiYjY0NTllMGVl''@;'; put 'put ''MzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZiIsIjY3Yzg3NmQwNmYzZTA2ZGUxZGFkZjE2ZTU2NjFkYjNjNGIzYWU2ZDQ4ZTM1YjJmZjMwYmYwYjYxYTcxYmE0NSJdLFsiZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZj''@;'; put 'put ''NjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCIsImRiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjAiXSxbIjMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQiLCI2''@;'; put 'put ''NDhhMzY1Nzc0YjYxZjJmZjEzMGMwYzM1YWVjMWY0ZjE5MjEzYjBjN2UzMzI4NDM5NjcyMjRhZjk2YWI3Yzg0Il0sWyI0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2IiwiMzVlYzUxMDkyZDg3MjgwNTA5NzRjMjNhMWQ4NWQ0''@;'; put 'put ''YjVkNTA2Y2RjMjg4NDkwMTkyZWJhYzA2Y2FkMTBkNWQiXSxbIjljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QiLCJkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1''@;'; put 'put ''OTlkIl0sWyI2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1IiwiOWExYWYwYjI2YTZhNDgwN2FkZDlhMmRhZjcxZGYyNjI0NjUxNTJiYzNlZTI0YzY1ZTg5OWJlOTMyMzg1YTJhOCJdLFsiYTU3NmRmOGUyM2EwODQxMTQyMTQz''@;'; put 'put ''OWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NiIsIjQwYTZiZjIwZTc2NjQwYjJjOTJiOTdhZmU1OGNkODJjNDMyZTEwYTdmNTE0ZDlmM2VlOGJlMTFhZTFiMjhlYzgiXSxbIjc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhm''@;'; put 'put ''NzYzODg5YmU1OGFkNzEiLCIzNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjIl0sWyI5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMiLCJjMjU2MjEwMDNkM2Y0''@;'; put 'put ''MmE4MjdiNzhhMTMwOTNhOTVlZWFjM2QyNmVmYThhOGQ4M2ZjNTE4MGU5MzViY2QwOTFmIl0sWyI4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxIiwiMWYwMzY0ODQxM2EzOGMwYmUyOWQ0OTZlNTgyY2Y1NjYzZTg3NTFlOTY4''@;'; put 'put ''NzczMzE1ODJjMjM3YTI0ZWIxZjk2MiJdLFsiZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZSIsIjQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDciXSxbIjgy''@;'; put 'put ''N2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEiLCJjNjBmOWM5MjNjNzI3YjBiNzFiZWYyYzY3ZDFkMTI2ODdmZjdhNjMxODY5MDMxNjZkNjA1YjY4YmFlYzI5M2VjIl0sWyJlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUy''@;'; put 'put ''MTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzIiwiYmUzMjc5ZWQ1YmJiYjAzYWM2OWE4MGY4OTg3OWFhNWEwMWE2Yjk2NWYxM2Y3ZTU5ZDQ3YTUzMDViYTVhZDkzZCJdLFsiZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0''@;'; put 'put ''ZDI0ZiIsIjRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTQiXSxbIjFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTkiLCJhZWVmZTkzNzU2YjUzNDBkMmYzYTQ5''@;'; put 'put ''NThhN2FiYmY1ZTAxNDZlNzdmNjI5NWEwN2I2NzFjZGMxY2MxMDdjZWZkIl0sWyIxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlIiwiYjMxOGUwZWMzMzU0MDI4YWRkNjY5ODI3ZjlkNGIyODcwYWFhOTcxZDJmN2U1ZWQxZDBi''@;'; put 'put ''Mjk3NDgzZDgzZWZkMCJdLFsiZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOSIsIjZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTEiXSxbImRhMWQ2MWQwY2E3''@;'; put 'put ''MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzIiLCI4MTU3ZjU1YTdjOTkzMDZjNzljMDc2NjE2MWM5MWUyOTY2YTczODk5ZDI3OWI0OGE2NTVmYmEwZjFhZDgzNmYxIl0sWyJhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUw''@;'; put 'put ''NDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzIiwiN2Y5NzM1NWI4ZGI4MWMwOWFiZmI3ZjNjNWIyNTE1ODg4YjY3OWEzZTUwZGQ2YmQ2Y2VmN2M3MzExMWY0Y2MwYyJdLFsiMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YyIsImNj''@;'; put 'put ''YzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzMiXSxbIjk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEiLCIyZTdlNTUyODg4YzMzMWRkOGJhMDM4NmE0YjljZDY4''@;'; put 'put ''NDljNjUzZjY0Yzg3MDkzODVlOWI4YWJmODc1MjRmMmZkIl0sWyJkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxIiwiZTgyZDg2ZmI2NDQzZmNiNzU2NWFlZTU4YjI5NDgyMjBhNzBmNzUwYWY0ODRjYTUyZDQxNDIxNzRkY2Y4''@;'; put 'put ''OTQwNSJdLFsiNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MyIsImQ5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODkiXSxbIjg0ODFiZGUwZTRlNGQ4ODViM2E1''@;'; put 'put ''NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgiLCIzOGVlN2I4Y2JhNTQwNGRkODRhMjViZjM5Y2VjYjJjYTkwMGE3OWM0MmIyNjJlNTU2ZDY0YjFiNTk3NzkwNTdlIl0sWyIxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBi''@;'; put 'put ''Y2Q2MzAzZjZjYWY2NjZiIiwiNjliZTE1OTAwNDYxNDU4MGVmN2U0MzM0NTNjY2IwY2E0OGYzMDBhODFkMDk0MmUxM2Y0OTVhOTA3ZjZlY2MyNyJdLFsiYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NiIsImQzYTgxY2E2ZTc4''@;'; put 'put ''NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMSJdLFsiOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYSIsIjQwYTMwNDYzYTMzMDUxOTMzNzhmZWRmMzFmN2NjMGViN2FlNzg0ZjA0''@;'; put 'put ''NTFjYjk0NTllNzFkYzczY2JlZjk0ODIiXSxbIjhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCIsIjYyMGVmYWJiYzhlZTI3ODJlMjRlN2MwY2ZiOTVjNWQ3MzViNzgzYmU5Y2YwZjhlOTU1YWYzNGEzMGU2MmI5NDUiXSxbImRk''@;'; put 'put ''MzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODciLCI3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczIl0sWyJmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3''@;'; put 'put ''ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlIiwiZWE5OGU2NzIzMmQzYjMyOTVkM2I1MzU1MzIxMTVjY2FjODYxMmM3MjE4NTE2MTc1MjZhZTQ3YTljNzdiZmM4MiJdXX0sbmFmOnt3bmQ6Nyxwb2ludHM6W1siZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0''@;'; put 'put ''NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOSIsIjM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzIiXSxbIjJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQiLCJk''@;'; put 'put ''OGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2Il0sWyI1Y2JkZjA2NDZlNWRiNGVhYTM5OGYzNjVmMmVhN2EwZTNkNDE5YjdlMDMzMGUzOWNlOTJiZGRlZGNhYzRmOWJjIiwiNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0''@;'; put 'put ''ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSJdLFsiYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZSIsImNjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0''@;'; put 'put ''ZjljMzciXSxbIjc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2IiLCJkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiIl0sWyJmMjg3NzNjMmQ5NzUyODhiYzdk''@;'; put 'put ''MWQyMDVjMzc0ODY1MWIwNzVmYmM2NjEwZTU4Y2RkZWVkZGY4ZjE5NDA1YWE4IiwiYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxIl0sWyJkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0''@;'; put 'put ''NGFkYmNmOGUyN2UwODBlIiwiNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCJdLFsiZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCIsIjQyMTFhYjA2OTQ2''@;'; put 'put ''MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzciXSxbIjJiNGVhMGE3OTdhNDQzZDI5M2VmNWNmZjQ0NGY0OTc5ZjA2YWNmZWJkN2U4NmQyNzc0NzU2NTYxMzgzODViNmMiLCI4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBj''@;'; put 'put ''NTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhIl0sWyIzNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1IiwiMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YyJdLFsi''@;'; put 'put ''MmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZiIsIjJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NyJdLFsiOTI0ODI3OWIwOWI0ZDY4ZGFiMjFhOWIwNjZlZGRh''@;'; put 'put ''ODMyNjNjM2Q4NGUwOTU3MmUyNjljYTBjZDdmNTQ1MzcxNCIsIjczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDIiXSxbImRhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2Rl''@;'; put 'put ''ZTg3MjkiLCJhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1Il0sWyJjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiIiwiMjExOWE0NjBjZTMyNmNkYzc2YzQ1''@;'; put 'put ''OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MiJdLFsiNmEyNDViZjZkYzY5ODUwNGM4OWEyMGNmZGVkNjA4NTMxNTJiNjk1MzM2YzI4MDYzYjYxYzY1Y2JkMjY5ZTZiNCIsImUwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZk''@;'; put 'put ''NWU2MzQ4MTAwZDhhODIiXSxbIjE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTUiLCJiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2Il0sWyI2MDViZGIwMTk5''@;'; put 'put ''ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5IiwiMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5Il0sWyI2MmQxNGRhYjQxNTBiZjQ5NzQwMmZkYzQ1YTIxNWUxMGRjYjAxYzM1''@;'; put 'put ''NDk1OWIxMGNmZTMxYzdlOWQ4N2ZmMzNkIiwiODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZiJdLFsiODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZiIsIjFj''@;'; put 'put ''MzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EiXSxbIjdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmIiLCJkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2''@;'; put 'put ''YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjciXSxbImQ1MjhlY2Q5YjY5NmI1NGM5MDdhOWVkMDQ1NDQ3YTc5YmI0MDhlYzM5YjY4ZGY1MDRiYjUxZjQ1OWJjM2ZmYzkiLCJlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5''@;'; put 'put ''OTMzIl0sWyI0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjMiLCI3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhIl0sWyI3N2YyMzA5MzZlZTg4Y2JiZDczZGY5''@;'; put 'put ''MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0IiwiOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNiJdLFsiZjJkYWM5OTFjYzRjZTRiOWVhNDQ4ODdlNWM3YzBiY2U1OGM4MDA3NGFiOWQ0ZGJhZWIy''@;'; put 'put ''ODUzMWI3NzM5ZjUzMCIsImUwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzciXSxbIjQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWIiLCI1ZWQ0MzBkNzhjMjk2''@;'; put 'put ''YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlIl0sWyJmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3IiwiY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZl''@;'; put 'put ''NWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNiJdLFsiY2FmNzU0MjcyZGM4NDU2M2IwMzUyYjdhMTQzMTFhZjU1ZDI0NTMxNWFjZTI3YzY1MzY5ZTE1ZjcxNTFkNDFkMSIsImNiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYiXSxbIjI2''@;'; put 'put ''MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjAiLCI0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwIl0sWyI3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBi''@;'; put 'put ''YzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1IiwiOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxIl0sWyI3NTRlMzIzOWYzMjU1NzBjZGJiZjRhODdkZWVlOGE2NmI3ZjJiMzM0NzlkNDY4ZmJjMWE1MDc0M2JmNTZj''@;'; put 'put ''YzE4IiwiNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzIl0sWyJlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4IiwiNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4''@;'; put 'put ''Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSJdLFsiMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYiIsIjNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5''@;'; put 'put ''N2Y4NmU4MDg4OGIiXSxbImRmOWQ3MGE2Yjk4NzZjZTU0NGM5ODU2MWY0YmU0ZjcyNTQ0MmU2ZDJiNzM3ZDljOTFhODMyMTcyNGNlMDk2M2YiLCI1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3Il0sWyI1ZWRkNWNjMjNjNTFl''@;'; put 'put ''ODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzIiwiZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCJdLFsiMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMz''@;'; put 'put ''NTViMTdhNzIyZDM2MmY4NDYxNGZiYSIsImUzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EiXSxbImFmM2M0MjNhOTVkOWY1YjMwNTQ3NTRlZmExNTBhYzM5Y2QyOTU1MmZlMzYwMjU3MzYyZGZkZWNlZjQwNTNiNDUiLCJmOThh''@;'; put 'put ''M2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2Il0sWyI3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhIiwiNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5''@;'; put 'put ''NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NiJdLFsiNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZSIsImM1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdm''@;'; put 'put ''NmUiXSxbImYxM2FkYTk1MTAzYzQ1MzczMDVlNjkxZTc0ZTlhNGE4ZGQ2NDdlNzExYTk1ZTczY2I2MmRjNjAxOGNmZDg3YjgiLCJlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkIl0sWyI3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3''@;'; put 'put ''YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjIiwiMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMiJdLFsiOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4''@;'; put 'put ''MjhjOTllMjI2MjUxOSIsImU0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2UiXSxbIjc5NjI0MTQ0NTBjNzZjMTY4OWM3YjQ4ZjgyMDJlYzM3ZmIyMjRjZjVhYzBiZmExNTcwMzI4YThhM2Q3Yzc3YWIiLCIxMDBiNjEwZWM0ZmZi''@;'; put 'put ''NDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3Il0sWyIzNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhIiwiZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1''@;'; put 'put ''YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSJdLFsiZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZiIsIjhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQiXSxbIjE2''@;'; put 'put ''MjRkODQ3ODA3MzI4NjBjZTFjNzhmY2JmZWZlMDhiMmIyOTgyM2RiOTEzZjY0OTM5NzViYTBmZjQ4NDc2MTAiLCI2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1Il0sWyI3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5''@;'; put 'put ''ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0IiwiZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCJdLFsiMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFj''@;'; put 'put ''MDQ1YyIsImQ1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGQiXSxbImExZDBmY2YyZWM5ZGU2NzViNjEyMTM2ZTVjZTcwZDI3MWMyMTQxN2M5ZDJiOGFhYWFjMTM4NTk5ZDA3MTc5NDAiLCJlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3''@;'; put 'put ''MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5Il0sWyJlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwIiwiYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNk''@;'; put 'put ''MDZkNzdkMzFkYTA2Il0sWyIzMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzIiwiNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCJdLFsiMzRjMWZkMDRkMzAx''@;'; put 'put ''YmU4OWIzMWMwNDQyZDNlNmFjMjQ4ODM5MjhiNDVhOTM0MDc4MTg2N2Q0MjMyZWMyZGJkZiIsIjk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSJdLFsiZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJj''@;'; put 'put ''ZDA4YWZmY2MyYTVlNmIwNDliOGQ2MyIsIjRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEiXSxbImQ3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgiLCJmYTc3''@;'; put 'put ''OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiIl0sWyIzMmQzMWMyMjJmOGY2ZjBlZjg2ZjdjOThkM2EzMzM1ZWFkNWJjZDMyYWJkZDk0Mjg5ZmU0ZDMwOTFhYTgyNGJmIiwiNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEy''@;'; put 'put ''ZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSJdLFsiNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNSIsIjhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJm''@;'; put 'put ''ZjYiXSxbImVlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDYiLCI4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlIl0sWyIxNmVjOTNlNDQ3ZWM4M2YwNDY3YjE4''@;'; put 'put ''MzAyZWU2MjBmN2U2NWRlMzMxODc0YzlkYzcyYmZkODYxNmJhOWRhNmI1IiwiNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCJdLFsiZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODVi''@;'; put 'put ''OTYwNjVkNTM3YmQ5OSIsImY2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMiXSxbIjc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MSIsImYzZTAzMTkxNjllYjli''@;'; put 'put ''ODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQiXSxbIjQ5NGY0YmUyMTlhMWE3NzAxNmRjZDgzODQzMWFlYTAwMDFjZGM4YWU3YTZmYzY4ODcyNjU3OGQ5NzAyODU3YTUiLCI0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2''@;'; put 'put ''N2VkNmU1NWY0YjAzMTg4MGQ1NjJjIl0sWyJhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1IiwiMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YiJdLFsiYzQx''@;'; put 'put ''OTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NyIsIjRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMyJdLFsiODQxZDYwNjNhNTg2ZmE0NzVhNzI0NjA0ZGEwM2JjNWI5''@;'; put 'put ''MmEyZTBkMmUwYTM2YWNmZTRjNzNhNTUxNDc0Mjg4MSIsIjczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCJdLFsiNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBk''@;'; put 'put ''NSIsIjM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUiXSxbIjM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYiLCJkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4''@;'; put 'put ''NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjIl0sWyIzMzY1ODFlYTdiZmJiYjI5MGMxOTFhMmY1MDdhNDFjZjU2NDM4NDIxNzBlOTE0ZmFlYWIyN2MyYzU3OWY3MjYiLCJlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNh''@;'; put 'put ''YmQyZmRhMjI0Il0sWyI4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlIiwiNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSJdLFsiMWUzM2YxYTc0NmM5YzU3''@;'; put 'put ''NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCIsIjYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNiJdLFsiODViN2MxZGNiM2NlYzFiN2VlN2YzMGRlZDc5ZGQyMGEwZWQxZjRjYzE4Y2Jj''@;'; put 'put ''ZmNmYTQxMDM2MWZkOGYwOGYzMSIsIjNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEiXSxbIjI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTEiLCJiNGM0ZmU5''@;'; put 'put ''OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGIiXSxbImEwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTIiLCJhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJk''@;'; put 'put ''YTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyIl0sWyI0ZThjZWFmYjliM2U5YTEzNmRjN2ZmNjdlODQwMjk1YjQ5OWRmYjNiMjEzM2U0YmExMTNmMmU0YzBlMTIxZTUiLCJjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjIl0s''@;'; put 'put ''WyJkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiIiwiNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMyJdLFsiZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNi''@;'; put 'put ''OTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCIsIjMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQiXSxbImFmOGFkZGJmMmI2NjFjOGE2YzYzMjg2NTVlYjk2NjUxMjUyMDA3ZDhjNWVhMzFiZTRhZDE5NmRl''@;'; put 'put ''OGNlMjEzMWYiLCI2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwIl0sWyJlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OSIsIjJhZWFiZTdlNDUzMTUxMDExNjIx''@;'; put 'put ''N2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQiXSxbIjU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYiLCJiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRl''@;'; put 'put ''ZWU5OGYxYTRiZTVkMTk2Il0sWyIxMTM5NmQ1NWZkYTU0YzQ5ZjE5YWE5NzMxOGQ4ZGE2MWZhODU4NGU0N2IwODQ5NDUwNzdjZjAzMjU1YjUyOTg0IiwiOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCJdLFsiM2M1ZDJhMWJh''@;'; put 'put ''MzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YSIsImIyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTciXSxbImNjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1''@;'; put 'put ''YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAiLCJiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzIl0sWyJjNTMzZTRmN2VhODU1NWFhY2Q5Nzc3YWM1Y2FkMjliOTdkZDRkZWZjY2M1M2VlN2VhMjA0MTE5YjI4ODliMTk3Iiwi''@;'; put 'put ''NmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NiJdLFsiYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzIiwiYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMy''@;'; put 'put ''ODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCJdLFsiYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZiIsIjIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2Zh''@;'; put 'put ''OWI5ZiJdLFsiMzQ3ZDZkOWEwMmM0ODkyN2ViZmI4NmMxMzU5YjFjYWYxMzBhM2MwMjY3ZDExY2U2MzQ0YjM5Zjk5ZDQzY2MzOCIsIjYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgiXSxbImRhNjU0NWQyMTgxZGI4ZDk4M2Y3''@;'; put 'put ''ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmEiLCI0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhIl0sWyJjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZi''@;'; put 'put ''OWQ1OTk0YjhmZWIxMTExIiwiNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNCJdLFsiNGU0MmM4ZWM4MmM5OTc5OGNjZjNhNjEwYmU4NzBlNzgzMzhjN2Y3MTMzNDhiZDM0YzgyMDNlZjQwMzdmMzUwMiIsIjc1NzFkNzRlZTVl''@;'; put 'put ''MGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzciXSxbIjM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWEiLCJiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdi''@;'; put 'put ''ZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3Il0sWyJjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2IiwiOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCJdLFsi''@;'; put 'put ''YjRmOWVhZWEwOWI2OTE3NjE5ZjZlYTZhNGViNTQ2NGVmZGRiNThmZDQ1YjFlYmVmY2RjMWEwMWQwOGI0Nzk4NiIsIjM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEiXSxbImQ0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQz''@;'; put 'put ''MGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGUiLCI2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0Il0sWyI0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5''@;'; put 'put ''NzYxMmM0IiwiMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3NyJdLFsiZGZlZWVmMTg4MTEwMWYyY2IxMTY0NGYzYTJhZmRmYzIwNDVlMTk5MTkxNTI5MjNmMzY3YTE3NjdjMTFjY2VkYSIsImVjZmI3MDU2Y2YxZGUwNDJmOTQy''@;'; put 'put ''MGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTciXSxbIjZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTkiLCJjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJm''@;'; put 'put ''NzRiMTkwZGNhNzEyZDEwIl0sWyJlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmIiwiZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSJdLFsiZWI5ODY2MGY0''@;'; put 'put ''YzRkZmFhMDZhMmJlNDUzZDUwMjBiYzk5YTBjMmU2MGFiZTM4ODQ1N2RkNDNmZWZiMWVkNjIwYyIsIjZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UiXSxbIjEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5''@;'; put 'put ''Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDIiLCJmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxIl0sWyJlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhIiwi''@;'; put 'put ''MWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMiJdLFsiYjI2OGY1ZWY5YWQ1MWU0ZDc4ZGUzYTc1MGMyZGM4OWIxZTYyNmQ0MzUwNTg2Nzk5OTkzMmU1ZGIzM2FmM2Q4MCIsIjVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRl''@;'; put 'put ''ZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMiXSxbImZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGQiLCI0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNl''@;'; put 'put ''ZDFmMGQ4Il0sWyI4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExIiwiY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCJdLFsiNTJkYjBiNTM4NGRmYmYwNWJm''@;'; put 'put ''YTlkNDcyZDdhZTI2ZGZlNGI4NTFjZWNhOTFiMWViYTU0MjYzMTgwZGEzMmI2MyIsImMzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSJdLFsiZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2''@;'; put 'put ''ZmZmNTQzYmVjYmQ0MzM1MiIsIjZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QiXSxbIjdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMiLCJjYTVlZjdkNGIy''@;'; put 'put ''MzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjIl0sWyI1MDk4ZmYxZTFkOWYxNGZiNDZhMjEwZmFkYTZjOTAzZmVmMGZiN2I0YTFkZDFkOWFjNjBhMDM2MTgwMGI3YTAwIiwiOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQw''@;'; put 'put ''ZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwIl0sWyIzMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4IiwiZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYyJdLFsi''@;'; put 'put ''ZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNyIsImQzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQiXSxbIjg0Mzg0NDc1NjZkNGQ3YmVkYWRjMjk5NDk2YWIz''@;'; put 'put ''NTc0MjYwMDlhMzVmMjM1Y2IxNDFiZTBkOTljZDEwYWUzYTgiLCJjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmIl0sWyI0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3''@;'; put 'put ''MTFkNjdlIiwiNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OSJdLFsiM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCIsImNkMWJjN2NiNmNjNDA3YmIyZjBj''@;'; put 'put ''YTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNiJdLFsiNjc0ZjI2MDBhMzAwN2EwMDU2OGMxYTdjZTA1ZDA4MTZjMWZiODRiZjEzNzA3OThmMWM2OTUzMmZhZWIxYTg2YiIsIjI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUw''@;'; put 'put ''OWVlY2M2OWUwZDM4YTUiXSxbImQzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGYiLCJmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3Il0sWyIzMGU0ZTY3MDQz''@;'; put 'put ''NTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2IiwiNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YiJdLFsiYmUyMDYyMDAzYzUxY2MzMDA0NjgyOTA0MzMwZTRkZWU3ZjNkY2Qx''@;'; put 'put ''MGIwMWU1ODBiZjE5NzFiMDRkNGNhZDI5NyIsIjYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMiXSxbIjkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGEiLCI3''@;'; put 'put ''YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjIl0sWyJiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjIiwiYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1''@;'; put 'put ''ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZiJdLFsiZDVlOWUxZGE2NDlkOTdkODllNDg2ODExN2E0NjVhM2E0ZjhhMThkZTU3YTE0MGQzNmIzZjJhZjM0MWEyMWI1MiIsIjRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYy''@;'; put 'put ''NzQ0N2EiXSxbImQzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmIiLCJiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2Il0sWyI0NjNlMjc2M2Q4ODVmOTU4ZmM2''@;'; put 'put ''NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1IiwiYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZiJdLFsiNzk4NWZkZmQxMjdjMDU2N2M2ZjUzZWMxYmI2M2VjMzE1OGU1OTdjNDBiZmU3NDdj''@;'; put 'put ''ODNjZGRmYzkxMDY0MTkxNyIsIjYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMiXSxbIjc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTkiLCJjYzYxNTdlZjE4''@;'; put 'put ''YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4Il0sWyIzMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzIiwiNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBl''@;'; put 'put ''MGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCJdLFsiOWUyMTU4ZjBkN2MwZDVmMjZjMzc5MWVmZWZhNzk1OTc2NTRlN2EyYjI0NjRmNTJiMWVlNmMxMzQ3NzY5ZWY1NyIsIjcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MyJdLFsi''@;'; put 'put ''MTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NiIsImVkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMiXSxbIjc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3''@;'; put 'put ''NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgiLCI5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4Il0sWyI4MDlhMjBjNjdkNjQ5MDBmZmI2OThjNGM4MjVmNmQ1ZjIzMTBmYjA0NTFjODY5MzQ1YjczMTlmNjQ1''@;'; put 'put ''NjA1NzIxIiwiOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMSJdLFsiMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MCIsIjQwMzZlZGM5MzFhNjBhZTg4OTM1''@;'; put 'put ''M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjkiXV19fX0sOTUzOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVEsbGU9WigzNzg1KSxZPVooOTc0NiksVz1aKDQ1MDQpO2llLmFzc2VydD1ZLGllLnRvQXJyYXk9Vy50b0FycmF5LGllLnplcm8yPVcuemVy''@;'; put 'put ''bzIsaWUudG9IZXg9Vy50b0hleCxpZS5lbmNvZGU9Vy5lbmNvZGUsaWUuZ2V0TkFGPWZ1bmN0aW9uKE4sZWUscSl7dmFyIEo9bmV3IEFycmF5KE1hdGgubWF4KE4uYml0TGVuZ3RoKCkscSkrMSk7Si5maWxsKDApO2Zvcih2YXIgc2U9MTw8ZWUrMSxhZT1OLmNsb25lKCksZmU9MDtmZTxKLmxl''@;'; put 'put ''bmd0aDtmZSsrKXt2YXIgZGUsdmU9YWUuYW5kbG4oc2UtMSk7YWUuaXNPZGQoKT9hZS5pc3VibihkZT12ZT4oc2U+PjEpLTE/KHNlPj4xKS12ZTp2ZSk6ZGU9MCxKW2ZlXT1kZSxhZS5pdXNocm4oMSl9cmV0dXJuIEp9LGllLmdldEpTRj1mdW5jdGlvbihOLGVlKXt2YXIgcT1bW10sW11dO049''@;'; put 'put ''Ti5jbG9uZSgpLGVlPWVlLmNsb25lKCk7Zm9yKHZhciBKLHNlPTAsYWU9MDtOLmNtcG4oLXNlKT4wfHxlZS5jbXBuKC1hZSk+MDspe3ZhciBmZSxkZSx2ZT1OLmFuZGxuKDMpK3NlJjMsQWU9ZWUuYW5kbG4oMykrYWUmMzszPT09dmUmJih2ZT0tMSksMz09PUFlJiYoQWU9LTEpLGZlPTA9PSgx''@;'; put 'put ''JnZlKT8wOjMhPShKPU4uYW5kbG4oNykrc2UmNykmJjUhPT1KfHwyIT09QWU/dmU6LXZlLHFbMF0ucHVzaChmZSksZGU9MD09KDEmQWUpPzA6MyE9KEo9ZWUuYW5kbG4oNykrYWUmNykmJjUhPT1KfHwyIT09dmU/QWU6LUFlLHFbMV0ucHVzaChkZSksMipzZT09PWZlKzEmJihzZT0xLXNlKSwy''@;'; put 'put ''KmFlPT09ZGUrMSYmKGFlPTEtYWUpLE4uaXVzaHJuKDEpLGVlLml1c2hybigxKX1yZXR1cm4gcX0saWUuY2FjaGVkUHJvcGVydHk9ZnVuY3Rpb24oTixlZSxxKXt2YXIgSj0iXyIrZWU7Ti5wcm90b3R5cGVbZWVdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXNbSl0/dGhpc1tKXTp0''@;'; put 'put ''aGlzW0pdPXEuY2FsbCh0aGlzKX19LGllLnBhcnNlQnl0ZXM9ZnVuY3Rpb24oTil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBOP2llLnRvQXJyYXkoTiwiaGV4Iik6Tn0saWUuaW50RnJvbUxFPWZ1bmN0aW9uKE4pe3JldHVybiBuZXcgbGUoTiwiaGV4IiwibGUiKX19LDM3ODU6ZnVuY3Rpb24o''@;'; put 'put ''VSxRLFopeyFmdW5jdGlvbihpZSxsZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFkoeCxQKXtpZigheCl0aHJvdyBuZXcgRXJyb3IoUHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBXKHgsUCl7eC5zdXBlcl89UDt2YXIgVj1mdW5jdGlvbigpe307Vi5wcm90b3R5cGU9UC5wcm90b3R5''@;'; put 'put ''cGUseC5wcm90b3R5cGU9bmV3IFYseC5wcm90b3R5cGUuY29uc3RydWN0b3I9eH1mdW5jdGlvbiBOKHgsUCxWKXtpZihOLmlzQk4oeCkpcmV0dXJuIHg7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PXgmJigibGUiIT09''@;'; put 'put ''UCYmImJlIiE9PVB8fChWPVAsUD0xMCksdGhpcy5faW5pdCh4fHwwLFB8fDEwLFZ8fCJiZSIpKX12YXIgZWU7Im9iamVjdCI9PXR5cGVvZiBpZT9pZS5leHBvcnRzPU46bGUuQk49TixOLkJOPU4sTi53b3JkU2l6ZT0yNjt0cnl7ZWU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQg''@;'; put 'put ''MCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpaKDU1NjgpLkJ1ZmZlcn1jYXRjaCh4KXt9ZnVuY3Rpb24gcSh4LFApe3ZhciBWPXguY2hhckNvZGVBdChQKTtyZXR1cm4gVj49NjUmJlY8PTcwP1YtNTU6Vj49OTcmJlY8PTEwMj9WLTg3OlYtNDgmMTV9ZnVuY3Rpb24gSih4LFAsVil7''@;'; put 'put ''dmFyIFQ9cSh4LFYpO3JldHVybiBWLTE+PVAmJihUfD1xKHgsVi0xKTw8NCksVH1mdW5jdGlvbiBzZSh4LFAsVixUKXtmb3IodmFyIFM9MCxGPU1hdGgubWluKHgubGVuZ3RoLFYpLHllPVA7eWU8Rjt5ZSsrKXt2YXIgQ2U9eC5jaGFyQ29kZUF0KHllKS00ODtTKj1ULFMrPUNlPj00OT9DZS00''@;'; put 'put ''OSsxMDpDZT49MTc/Q2UtMTcrMTA6Q2V9cmV0dXJuIFN9Ti5pc0JOPWZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgTnx8bnVsbCE9PXgmJiJvYmplY3QiPT10eXBlb2YgeCYmeC5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PU4ud29yZFNpemUmJkFycmF5LmlzQXJyYXkoeC53b3Jkcyl9''@;'; put 'put ''LE4ubWF4PWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHguY21wKFApPjA/eDpQfSxOLm1pbj1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKTwwP3g6UH0sTi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oeCxQLFYpe2lmKCJudW1iZXIiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdE51bWJl''@;'; put 'put ''cih4LFAsVik7aWYoIm9iamVjdCI9PXR5cGVvZiB4KXJldHVybiB0aGlzLl9pbml0QXJyYXkoeCxQLFYpOyJoZXgiPT09UCYmKFA9MTYpLFkoUD09PSgwfFApJiZQPj0yJiZQPD0zNik7dmFyIFQ9MDsiLSI9PT0oeD14LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKFQrKyx0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEpLFQ8eC5sZW5ndGgmJigxNj09PVA/dGhpcy5fcGFyc2VIZXgoeCxULFYpOih0aGlzLl9wYXJzZUJhc2UoeCxQLFQpLCJsZSI9PT1WJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKSkpfSxOLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbih4''@;'; put 'put ''LFAsVil7eDwwJiYodGhpcy5uZWdhdGl2ZT0xLHg9LXgpLHg8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJnhdLHRoaXMubGVuZ3RoPTEpOng8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToo''@;'; put 'put ''WSh4PDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ViYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFAsVil9LE4ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''LFYpe2lmKFkoIm51bWJlciI9PXR5cGVvZiB4Lmxlbmd0aCkseC5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoeC5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''VD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGLHllPTA7aWYoImJlIj09PVYpZm9yKFQ9eC5sZW5ndGgtMSxTPTA7VD49MDtULT0zKXRoaXMud29yZHNbU118PShGPXhbVF18eFtULTFdPDw4fHhbVC0yXTw8MTYpPDx5ZSY2NzEwODg2Myx0aGlzLndvcmRzW1Mr''@;'; put 'put ''MV09Rj4+PjI2LXllJjY3MTA4ODYzLCh5ZSs9MjQpPj0yNiYmKHllLT0yNixTKyspO2Vsc2UgaWYoImxlIj09PVYpZm9yKFQ9MCxTPTA7VDx4Lmxlbmd0aDtUKz0zKXRoaXMud29yZHNbU118PShGPXhbVF18eFtUKzFdPDw4fHhbVCsyXTw8MTYpPDx5ZSY2NzEwODg2Myx0aGlzLndvcmRzW1Mr''@;'; put 'put ''MV09Rj4+PjI2LXllJjY3MTA4ODYzLCh5ZSs9MjQpPj0yNiYmKHllLT0yNixTKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbih4LFAsVil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKCh4Lmxlbmd0aC1QKS82KSx0aGlzLndvcmRzPW5ldyBBcnJh''@;'; put 'put ''eSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBUPTA7VDx0aGlzLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEY9MCx5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgubGVuZ3RoLTE7VD49UDtULT0yKVM9Sih4LFAsVCk8PEYsdGhpcy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYt''@;'; put 'put ''PTE4LHRoaXMud29yZHNbeWUrPTFdfD1TPj4+MjYpOkYrPTg7ZWxzZSBmb3IoVD0oeC5sZW5ndGgtUCklMj09MD9QKzE6UDtUPHgubGVuZ3RoO1QrPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jkc1t5ZSs9MV18PVM+Pj4y''@;'; put 'put ''Nik6Ris9ODt0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oeCxQLFYpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBUPTAsUz0xO1M8PTY3MTA4ODYzO1MqPVApVCsrO1QtLSxTPVMvUHwwO2Zvcih2YXIgRj14Lmxlbmd0aC1WLHllPUYl''@;'; put 'put ''VCxDZT1NYXRoLm1pbihGLEYteWUpK1YsRGU9MCxQZT1WO1BlPENlO1BlKz1UKURlPXNlKHgsUGUsUGUrVCxQKSx0aGlzLmltdWxuKFMpLHRoaXMud29yZHNbMF0rRGU8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9RGU6dGhpcy5faWFkZG4oRGUpO2lmKDAhPT15ZSl7dmFyIFFlPTE7Zm9yKERl''@;'; put 'put ''PXNlKHgsUGUseC5sZW5ndGgsUCksUGU9MDtQZTx5ZTtQZSsrKVFlKj1QO3RoaXMuaW11bG4oUWUpLHRoaXMud29yZHNbMF0rRGU8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9RGU6dGhpcy5faWFkZG4oRGUpfXRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuY29weT1mdW5jdGlvbih4KXt4Lndv''@;'; put 'put ''cmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aDtQKyspeC53b3Jkc1tQXT10aGlzLndvcmRzW1BdO3gubGVuZ3RoPXRoaXMubGVuZ3RoLHgubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSx4LnJlZD10aGlzLnJlZH0sTi5wcm90b3R5cGUuY2xvbmU9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgeD1uZXcgTihudWxsKTtyZXR1cm4gdGhpcy5jb3B5KHgpLHh9LE4ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Oyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLnN0cmlwPWZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTi5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29y''@;'; put 'put ''ZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LE4ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIGFlPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLGZlPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLGRlPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUs''@;'; put 'put ''NjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUs''@;'; put 'put ''MTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIHZlKHgsUCxWKXtWLm5lZ2F0aXZlPVAubmVnYXRpdmVeeC5uZWdhdGl2ZTt2YXIgVD14Lmxlbmd0aCtQ''@;'; put 'put ''Lmxlbmd0aHwwO1YubGVuZ3RoPVQsVD1ULTF8MDt2YXIgUz0wfHgud29yZHNbMF0sRj0wfFAud29yZHNbMF0seWU9UypGLERlPXllLzY3MTA4ODY0fDA7Vi53b3Jkc1swXT02NzEwODg2MyZ5ZTtmb3IodmFyIFBlPTE7UGU8VDtQZSsrKXtmb3IodmFyIFFlPURlPj4+MjYsJGU9NjcxMDg4NjMm''@;'; put 'put ''RGUsZ3Q9TWF0aC5taW4oUGUsUC5sZW5ndGgtMSkseXQ9TWF0aC5tYXgoMCxQZS14Lmxlbmd0aCsxKTt5dDw9Z3Q7eXQrKylRZSs9KHllPShTPTB8eC53b3Jkc1tQZS15dHwwXSkqKEY9MHxQLndvcmRzW3l0XSkrJGUpLzY3MTA4ODY0fDAsJGU9NjcxMDg4NjMmeWU7Vi53b3Jkc1tQZV09MHwk''@;'; put 'put ''ZSxEZT0wfFFlfXJldHVybiAwIT09RGU/Vi53b3Jkc1tQZV09MHxEZTpWLmxlbmd0aC0tLFYuc3RyaXAoKX1OLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbih4LFApe3ZhciBWO2lmKFA9MHxQfHwxLDE2PT09KHg9eHx8MTApfHwiaGV4Ij09PXgpe1Y9IiI7Zm9yKHZhciBUPTAsUz0wLEY9''@;'; put 'put ''MDtGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIHllPXRoaXMud29yZHNbRl0sQ2U9KDE2Nzc3MjE1Jih5ZTw8VHxTKSkudG9TdHJpbmcoMTYpO1Y9MCE9KFM9eWU+Pj4yNC1UJjE2Nzc3MjE1KXx8RiE9PXRoaXMubGVuZ3RoLTE/YWVbNi1DZS5sZW5ndGhdK0NlK1Y6Q2UrViwoVCs9Mik+PTI2JiYo''@;'; put 'put ''VC09MjYsRi0tKX1mb3IoMCE9PVMmJihWPVMudG9TdHJpbmcoMTYpK1YpO1YubGVuZ3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1pZih4PT09KDB8eCkmJng+PTImJng8PTM2KXt2YXIgRGU9ZmVbeF0sUGU9ZGVbeF07Vj0iIjt2YXIgUWU9''@;'; put 'put ''dGhpcy5jbG9uZSgpO2ZvcihRZS5uZWdhdGl2ZT0wOyFRZS5pc1plcm8oKTspe3ZhciAkZT1RZS5tb2RuKFBlKS50b1N0cmluZyh4KTtWPShRZT1RZS5pZGl2bihQZSkpLmlzWmVybygpPyRlK1Y6YWVbRGUtJGUubGVuZ3RoXSskZStWfWZvcih0aGlzLmlzWmVybygpJiYoVj0iMCIrVik7Vi5s''@;'; put 'put ''ZW5ndGglUCE9MDspVj0iMCIrVjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihWPSItIitWKSxWfVkoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sTi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhp''@;'; put 'put ''cy5sZW5ndGg/eCs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP3grPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZZKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVw''@;'; put 'put ''IHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8teDp4fSxOLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LE4ucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIFkodm9pZCAwIT09ZWUpLHRoaXMudG9BcnJheUxp''@;'; put 'put ''a2UoZWUseCxQKX0sTi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVD10aGlzLmJ5dGVMZW5ndGgoKSxTPVZ8fE1hdGgubWF4KDEsVCk7''@;'; put 'put ''WShUPD1TLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksWShTPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgRix5ZSxDZT0ibGUiPT09UCxEZT1uZXcgeChTKSxQZT10aGlzLmNsb25lKCk7aWYoQ2Upe2Zvcih5ZT0wOyFQ''@;'; put 'put ''ZS5pc1plcm8oKTt5ZSsrKUY9UGUuYW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbeWVdPUY7Zm9yKDt5ZTxTO3llKyspRGVbeWVdPTB9ZWxzZXtmb3IoeWU9MDt5ZTxTLVQ7eWUrKylEZVt5ZV09MDtmb3IoeWU9MDshUGUuaXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJu''@;'; put 'put ''KDgpLERlW1MteWUtMV09Rn1yZXR1cm4gRGV9LE4ucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbih4KXtyZXR1cm4gMzItTWF0aC5jbHozMih4KX06ZnVuY3Rpb24oeCl7dmFyIFA9eCxWPTA7cmV0dXJuIFA+PTQwOTYmJihWKz0xMyxQPj4+PTEzKSxQPj02NCYmKFYr''@;'; put 'put ''PTcsUD4+Pj03KSxQPj04JiYoVis9NCxQPj4+PTQpLFA+PTImJihWKz0yLFA+Pj49MiksVitQfSxOLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oeCl7aWYoMD09PXgpcmV0dXJuIDI2O3ZhciBQPXgsVj0wO3JldHVybiAwPT0oODE5MSZQKSYmKFYrPTEzLFA+Pj49MTMpLDA9PSgxMjcm''@;'; put 'put ''UCkmJihWKz03LFA+Pj49NyksMD09KDE1JlApJiYoVis9NCxQPj4+PTQpLDA9PSgzJlApJiYoVis9MixQPj4+PTIpLDA9PSgxJlApJiZWKyssVn0sTi5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIFA9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0p''@;'; put 'put ''O3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrUH0sTi5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgeD0wLFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tQXSk7aWYoeCs9''@;'; put 'put ''ViwyNiE9PVYpYnJlYWt9cmV0dXJuIHh9LE4ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LE4ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5p''@;'; put 'put ''bm90bih4KS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LE4ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnRlc3RuKHgtMSk/dGhpcy5ub3RuKHgpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LE4ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IDAhPT10aGlzLm5lZ2F0aXZlfSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sTi5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sTi5wcm90b3R5cGUuaXVv''@;'; put 'put ''cj1mdW5jdGlvbih4KXtmb3IoO3RoaXMubGVuZ3RoPHgubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBQPTA7UDx4Lmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT10aGlzLndvcmRzW1BdfHgud29yZHNbUF07cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5''@;'; put 'put ''cGUuaW9yPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1b3IoeCl9LE4ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKHgpOnguY2xvbmUoKS5pb3IodGhp''@;'; put 'put ''cyl9LE4ucHJvdG90eXBlLnVvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoeCk6eC5jbG9uZSgpLml1b3IodGhpcyl9LE4ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKHgpe3ZhciBQO1A9dGhpcy5sZW5ndGg+eC5sZW5ndGg/eDp0''@;'; put 'put ''aGlzO2Zvcih2YXIgVj0wO1Y8UC5sZW5ndGg7VisrKXRoaXMud29yZHNbVl09dGhpcy53b3Jkc1tWXSZ4LndvcmRzW1ZdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRp''@;'; put 'put ''dmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoeCl9LE4ucHJvdG90eXBlLmFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoeCk6eC5jbG9uZSgpLmlhbmQodGhpcyl9LE4ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oeCl7cmV0dXJu''@;'; put 'put ''IHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh4KTp4LmNsb25lKCkuaXVhbmQodGhpcyl9LE4ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKHgpe3ZhciBQLFY7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KFA9dGhpcyxWPXgpOihQPXgsVj10aGlzKTtmb3IodmFyIFQ9MDtU''@;'; put 'put ''PFYubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPVAud29yZHNbVF1eVi53b3Jkc1tUXTtpZih0aGlzIT09UClmb3IoO1Q8UC5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09UC53b3Jkc1tUXTtyZXR1cm4gdGhpcy5sZW5ndGg9UC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5peG9y''@;'; put 'put ''PWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1eG9yKHgpfSxOLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKHgpOnguY2xvbmUoKS5peG9yKHRoaXMp''@;'; put 'put ''fSxOLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoeCk6eC5jbG9uZSgpLml1eG9yKHRoaXMpfSxOLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFy''@;'; put 'put ''IFA9MHxNYXRoLmNlaWwoeC8yNiksVj14JTI2O3RoaXMuX2V4cGFuZChQKSxWPjAmJlAtLTtmb3IodmFyIFQ9MDtUPFA7VCsrKXRoaXMud29yZHNbVF09NjcxMDg4NjMmfnRoaXMud29yZHNbVF07cmV0dXJuIFY+MCYmKHRoaXMud29yZHNbVF09fnRoaXMud29yZHNbVF0mNjcxMDg4NjM+PjI2''@;'; put 'put ''LVYpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUubm90bj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHgpfSxOLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHgsUCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBWPXgvMjZ8MCxUPXglMjY7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2V4cGFuZChWKzEpLHRoaXMud29yZHNbVl09UD90aGlzLndvcmRzW1ZdfDE8PFQ6dGhpcy53b3Jkc1tWXSZ+KDE8PFQpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4KXt2YXIgUCxWLFQ7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJl''@;'; put 'put ''dHVybiB0aGlzLm5lZ2F0aXZlPTAsUD10aGlzLmlzdWIoeCksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4geC5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHgubmVnYXRpdmU9MSxQLl9ub3JtU2ln''@;'; put 'put ''bigpO3RoaXMubGVuZ3RoPngubGVuZ3RoPyhWPXRoaXMsVD14KTooVj14LFQ9dGhpcyk7Zm9yKHZhciBTPTAsRj0wO0Y8VC5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrKDB8VC53b3Jkc1tGXSkrUyksUz1QPj4+MjY7Zm9yKDswIT09UyYmRjxW''@;'; put 'put ''Lmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKStTKSxTPVA+Pj4yNjtpZih0aGlzLmxlbmd0aD1WLmxlbmd0aCwwIT09Uyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1TLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihWIT09dGhpcylmb3IoO0Y8Vi5sZW5n''@;'; put 'put ''dGg7RisrKXRoaXMud29yZHNbRl09Vi53b3Jkc1tGXTtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgpe3ZhciBQO3JldHVybiAwIT09eC5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KHgubmVnYXRpdmU9MCxQPXRoaXMuc3ViKHgpLHgubmVnYXRpdmVePTEsUCk6''@;'; put 'put ''MD09PXgubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsUD14LnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsUCk6dGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoeCk6eC5jbG9uZSgpLmlhZGQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9''@;'; put 'put ''ZnVuY3Rpb24oeCl7aWYoMCE9PXgubmVnYXRpdmUpe3gubmVnYXRpdmU9MDt2YXIgUD10aGlzLmlhZGQoeCk7cmV0dXJuIHgubmVnYXRpdmU9MSxQLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKHgpLHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBWLFQsUz10aGlzLmNtcCh4KTtpZigwPT09UylyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7Uz4wPyhWPXRoaXMsVD14KTooVj14LFQ9dGhpcyk7Zm9yKHZhciBGPTAseWU9MDt5ZTxULmxl''@;'; put 'put ''bmd0aDt5ZSsrKUY9KFA9KDB8Vi53b3Jkc1t5ZV0pLSgwfFQud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtmb3IoOzAhPT1GJiZ5ZTxWLmxlbmd0aDt5ZSsrKUY9KFA9KDB8Vi53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZQO2lm''@;'; put 'put ''KDA9PT1GJiZ5ZTxWLmxlbmd0aCYmViE9PXRoaXMpZm9yKDt5ZTxWLmxlbmd0aDt5ZSsrKXRoaXMud29yZHNbeWVdPVYud29yZHNbeWVdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx5ZSksViE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Yih4KX07dmFyIEFlPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTLEYseWU9eC53b3JkcyxDZT1QLndvcmRzLERlPVYud29yZHMsUGU9MCxRZT0wfHllWzBdLCRlPTgxOTEmUWUsZ3Q9UWU+Pj4xMyx5dD0w''@;'; put 'put ''fHllWzFdLHB0PTgxOTEmeXQsbXQ9eXQ+Pj4xMyx2dD0wfHllWzJdLGZ0PTgxOTEmdnQsRnQ9dnQ+Pj4xMyxvbj0wfHllWzNdLF90PTgxOTEmb24sbnQ9b24+Pj4xMyxxZT0wfHllWzRdLG90PTgxOTEmcWUsUnQ9cWU+Pj4xMyxDdD0wfHllWzVdLGN0PTgxOTEmQ3QsTnQ9Q3Q+Pj4xMyx6ZT0w''@;'; put 'put ''fHllWzZdLFllPTgxOTEmemUsQXQ9emU+Pj4xMyxqdD0wfHllWzddLEp0PTgxOTEmanQsbW49anQ+Pj4xMyxwbj0wfHllWzhdLGJuPTgxOTEmcG4sbG49cG4+Pj4xMyxObj0wfHllWzldLGtuPTgxOTEmTm4sZXI9Tm4+Pj4xMyx1cj0wfENlWzBdLFhuPTgxOTEmdXIsRnI9dXI+Pj4xMyx4cj0w''@;'; put 'put ''fENlWzFdLGVuPTgxOTEmeHIsZHI9eHI+Pj4xMyxucj0wfENlWzJdLHduPTgxOTEmbnIsJG49bnI+Pj4xMyxZdD0wfENlWzNdLGduPTgxOTEmWXQsS249WXQ+Pj4xMyxWdD0wfENlWzRdLHNuPTgxOTEmVnQsVW49VnQ+Pj4xMyxfbj0wfENlWzVdLHRuPTgxOTEmX24sR249X24+Pj4xMyxUcj0w''@;'; put 'put ''fENlWzZdLFBuPTgxOTEmVHIsU3I9VHI+Pj4xMyx2bj0wfENlWzddLHVuPTgxOTEmdm4sY249dm4+Pj4xMyxTbj0wfENlWzhdLEd0PTgxOTEmU24sRW49U24+Pj4xMyxqbj0wfENlWzldLHF0PTgxOTEmam4sTG49am4+Pj4xMztWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5uZWdhdGl2ZSxWLmxl''@;'; put 'put ''bmd0aD0xOTt2YXIgSm49KFBlKyhUPU1hdGguaW11bCgkZSxYbikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoJGUsRnIpKStNYXRoLmltdWwoZ3QsWG4pfDApKTw8MTMpfDA7UGU9KChGPU1hdGguaW11bChndCxGcikpKyhTPj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxU''@;'; put 'put ''PU1hdGguaW11bChwdCxYbiksUz0oUz1NYXRoLmltdWwocHQsRnIpKStNYXRoLmltdWwobXQsWG4pfDAsRj1NYXRoLmltdWwobXQsRnIpO3ZhciBvcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxkcil8MCkrTWF0aC5pbXVsKGd0''@;'; put 'put ''LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxkcil8MCkrKFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGZ0LFhuKSxTPShTPU1hdGguaW11bChmdCxGcikpK01hdGguaW11bChGdCxYbil8MCxGPU1hdGguaW11bChGdCxGciksVD1U''@;'; put 'put ''K01hdGguaW11bChwdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKHB0LGRyKXwwKStNYXRoLmltdWwobXQsZW4pfDAsRj1GK01hdGguaW11bChtdCxkcil8MDt2YXIgZ3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHduKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsJG4pfDApK01h''@;'; put 'put ''dGguaW11bChndCx3bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsJG4pfDApKyhTPj4+MTMpfDApKyhncj4+PjI2KXwwLGdyJj02NzEwODg2MyxUPU1hdGguaW11bChfdCxYbiksUz0oUz1NYXRoLmltdWwoX3QsRnIpKStNYXRoLmltdWwobnQsWG4pfDAsRj1NYXRoLmltdWwo''@;'; put 'put ''bnQsRnIpLFQ9VCtNYXRoLmltdWwoZnQsZW4pfDAsUz0oUz1TK01hdGguaW11bChmdCxkcil8MCkrTWF0aC5pbXVsKEZ0LGVuKXwwLEY9RitNYXRoLmltdWwoRnQsZHIpfDAsVD1UK01hdGguaW11bChwdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKHB0LCRuKXwwKStNYXRoLmltdWwobXQsd24p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChtdCwkbil8MDt2YXIgSnI9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLGduKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsS24pfDApK01hdGguaW11bChndCxnbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsS24pfDApKyhTPj4+MTMp''@;'; put 'put ''fDApKyhKcj4+PjI2KXwwLEpyJj02NzEwODg2MyxUPU1hdGguaW11bChvdCxYbiksUz0oUz1NYXRoLmltdWwob3QsRnIpKStNYXRoLmltdWwoUnQsWG4pfDAsRj1NYXRoLmltdWwoUnQsRnIpLFQ9VCtNYXRoLmltdWwoX3QsZW4pfDAsUz0oUz1TK01hdGguaW11bChfdCxkcil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKG50LGVuKXwwLEY9RitNYXRoLmltdWwobnQsZHIpfDAsVD1UK01hdGguaW11bChmdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LCRuKXwwKStNYXRoLmltdWwoRnQsd24pfDAsRj1GK01hdGguaW11bChGdCwkbil8MCxUPVQrTWF0aC5pbXVsKHB0LGduKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwocHQsS24pfDApK01hdGguaW11bChtdCxnbil8MCxGPUYrTWF0aC5pbXVsKG10LEtuKXwwO3ZhciBWcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsc24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxVbil8MCkrTWF0aC5pbXVsKGd0LHNuKXwwKSk8PDEzKXwwO1BlPSgoRj1G''@;'; put 'put ''K01hdGguaW11bChndCxVbil8MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGN0LFhuKSxTPShTPU1hdGguaW11bChjdCxGcikpK01hdGguaW11bChOdCxYbil8MCxGPU1hdGguaW11bChOdCxGciksVD1UK01hdGguaW11bChvdCxlbil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKG90LGRyKXwwKStNYXRoLmltdWwoUnQsZW4pfDAsRj1GK01hdGguaW11bChSdCxkcil8MCxUPVQrTWF0aC5pbXVsKF90LHduKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsJG4pfDApK01hdGguaW11bChudCx3bil8MCxGPUYrTWF0aC5pbXVsKG50LCRuKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoZnQsZ24pfDAsUz0oUz1TK01hdGguaW11bChmdCxLbil8MCkrTWF0aC5pbXVsKEZ0LGduKXwwLEY9RitNYXRoLmltdWwoRnQsS24pfDAsVD1UK01hdGguaW11bChwdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKHB0LFVuKXwwKStNYXRoLmltdWwobXQsc24pfDAsRj1GK01hdGguaW11''@;'; put 'put ''bChtdCxVbil8MDt2YXIgdGk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHRuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsR24pfDApK01hdGguaW11bChndCx0bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsR24pfDApKyhTPj4+MTMpfDApKyh0aT4+PjI2KXww''@;'; put 'put ''LHRpJj02NzEwODg2MyxUPU1hdGguaW11bChZZSxYbiksUz0oUz1NYXRoLmltdWwoWWUsRnIpKStNYXRoLmltdWwoQXQsWG4pfDAsRj1NYXRoLmltdWwoQXQsRnIpLFQ9VCtNYXRoLmltdWwoY3QsZW4pfDAsUz0oUz1TK01hdGguaW11bChjdCxkcil8MCkrTWF0aC5pbXVsKE50LGVuKXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoTnQsZHIpfDAsVD1UK01hdGguaW11bChvdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKG90LCRuKXwwKStNYXRoLmltdWwoUnQsd24pfDAsRj1GK01hdGguaW11bChSdCwkbil8MCxUPVQrTWF0aC5pbXVsKF90LGduKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsS24pfDApK01h''@;'; put 'put ''dGguaW11bChudCxnbil8MCxGPUYrTWF0aC5pbXVsKG50LEtuKXwwLFQ9VCtNYXRoLmltdWwoZnQsc24pfDAsUz0oUz1TK01hdGguaW11bChmdCxVbil8MCkrTWF0aC5pbXVsKEZ0LHNuKXwwLEY9RitNYXRoLmltdWwoRnQsVW4pfDAsVD1UK01hdGguaW11bChwdCx0bil8MCxTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKHB0LEduKXwwKStNYXRoLmltdWwobXQsdG4pfDAsRj1GK01hdGguaW11bChtdCxHbil8MDt2YXIgT3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLFBuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsU3IpfDApK01hdGguaW11bChndCxQbil8MCkpPDwxMyl8MDtQZT0o''@;'; put 'put ''KEY9RitNYXRoLmltdWwoZ3QsU3IpfDApKyhTPj4+MTMpfDApKyhPcj4+PjI2KXwwLE9yJj02NzEwODg2MyxUPU1hdGguaW11bChKdCxYbiksUz0oUz1NYXRoLmltdWwoSnQsRnIpKStNYXRoLmltdWwobW4sWG4pfDAsRj1NYXRoLmltdWwobW4sRnIpLFQ9VCtNYXRoLmltdWwoWWUsZW4pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChZZSxkcil8MCkrTWF0aC5pbXVsKEF0LGVuKXwwLEY9RitNYXRoLmltdWwoQXQsZHIpfDAsVD1UK01hdGguaW11bChjdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LCRuKXwwKStNYXRoLmltdWwoTnQsd24pfDAsRj1GK01hdGguaW11bChOdCwkbil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKG90LGduKXwwLFM9KFM9UytNYXRoLmltdWwob3QsS24pfDApK01hdGguaW11bChSdCxnbil8MCxGPUYrTWF0aC5pbXVsKFJ0LEtuKXwwLFQ9VCtNYXRoLmltdWwoX3Qsc24pfDAsUz0oUz1TK01hdGguaW11bChfdCxVbil8MCkrTWF0aC5pbXVsKG50LHNuKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwobnQsVW4pfDAsVD1UK01hdGguaW11bChmdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEduKXwwKStNYXRoLmltdWwoRnQsdG4pfDAsRj1GK01hdGguaW11bChGdCxHbil8MCxUPVQrTWF0aC5pbXVsKHB0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsU3IpfDApK01hdGguaW11''@;'; put 'put ''bChtdCxQbil8MCxGPUYrTWF0aC5pbXVsKG10LFNyKXwwO3ZhciBsaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxjbil8MCkrTWF0aC5pbXVsKGd0LHVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxjbil8MCkr''@;'; put 'put ''KFM+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLFhuKSxTPShTPU1hdGguaW11bChibixGcikpK01hdGguaW11bChsbixYbil8MCxGPU1hdGguaW11bChsbixGciksVD1UK01hdGguaW11bChKdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGRyKXww''@;'; put 'put ''KStNYXRoLmltdWwobW4sZW4pfDAsRj1GK01hdGguaW11bChtbixkcil8MCxUPVQrTWF0aC5pbXVsKFllLHduKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsJG4pfDApK01hdGguaW11bChBdCx3bil8MCxGPUYrTWF0aC5pbXVsKEF0LCRuKXwwLFQ9VCtNYXRoLmltdWwoY3QsZ24pfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChjdCxLbil8MCkrTWF0aC5pbXVsKE50LGduKXwwLEY9RitNYXRoLmltdWwoTnQsS24pfDAsVD1UK01hdGguaW11bChvdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKG90LFVuKXwwKStNYXRoLmltdWwoUnQsc24pfDAsRj1GK01hdGguaW11bChSdCxVbil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKF90LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsR24pfDApK01hdGguaW11bChudCx0bil8MCxGPUYrTWF0aC5pbXVsKG50LEduKXwwLFQ9VCtNYXRoLmltdWwoZnQsUG4pfDAsUz0oUz1TK01hdGguaW11bChmdCxTcil8MCkrTWF0aC5pbXVsKEZ0LFBuKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''RnQsU3IpfDAsVD1UK01hdGguaW11bChwdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKHB0LGNuKXwwKStNYXRoLmltdWwobXQsdW4pfDAsRj1GK01hdGguaW11bChtdCxjbil8MDt2YXIgSWk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLEd0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''JGUsRW4pfDApK01hdGguaW11bChndCxHdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsRW4pfDApKyhTPj4+MTMpfDApKyhJaT4+PjI2KXwwLElpJj02NzEwODg2MyxUPU1hdGguaW11bChrbixYbiksUz0oUz1NYXRoLmltdWwoa24sRnIpKStNYXRoLmltdWwoZXIsWG4pfDAs''@;'; put 'put ''Rj1NYXRoLmltdWwoZXIsRnIpLFQ9VCtNYXRoLmltdWwoYm4sZW4pfDAsUz0oUz1TK01hdGguaW11bChibixkcil8MCkrTWF0aC5pbXVsKGxuLGVuKXwwLEY9RitNYXRoLmltdWwobG4sZHIpfDAsVD1UK01hdGguaW11bChKdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LCRuKXwwKStNYXRo''@;'; put 'put ''LmltdWwobW4sd24pfDAsRj1GK01hdGguaW11bChtbiwkbil8MCxUPVQrTWF0aC5pbXVsKFllLGduKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsS24pfDApK01hdGguaW11bChBdCxnbil8MCxGPUYrTWF0aC5pbXVsKEF0LEtuKXwwLFQ9VCtNYXRoLmltdWwoY3Qsc24pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChjdCxVbil8MCkrTWF0aC5pbXVsKE50LHNuKXwwLEY9RitNYXRoLmltdWwoTnQsVW4pfDAsVD1UK01hdGguaW11bChvdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKG90LEduKXwwKStNYXRoLmltdWwoUnQsdG4pfDAsRj1GK01hdGguaW11bChSdCxHbil8MCxUPVQrTWF0aC5pbXVsKF90''@;'; put 'put ''LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsU3IpfDApK01hdGguaW11bChudCxQbil8MCxGPUYrTWF0aC5pbXVsKG50LFNyKXwwLFQ9VCtNYXRoLmltdWwoZnQsdW4pfDAsUz0oUz1TK01hdGguaW11bChmdCxjbil8MCkrTWF0aC5pbXVsKEZ0LHVuKXwwLEY9RitNYXRoLmltdWwoRnQsY24p''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChwdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKHB0LEVuKXwwKStNYXRoLmltdWwobXQsR3QpfDAsRj1GK01hdGguaW11bChtdCxFbil8MDt2YXIgcjA9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsTG4p''@;'; put 'put ''fDApK01hdGguaW11bChndCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsTG4pfDApKyhTPj4+MTMpfDApKyhyMD4+PjI2KXwwLHIwJj02NzEwODg2MyxUPU1hdGguaW11bChrbixlbiksUz0oUz1NYXRoLmltdWwoa24sZHIpKStNYXRoLmltdWwoZXIsZW4pfDAsRj1NYXRo''@;'; put 'put ''LmltdWwoZXIsZHIpLFQ9VCtNYXRoLmltdWwoYm4sd24pfDAsUz0oUz1TK01hdGguaW11bChibiwkbil8MCkrTWF0aC5pbXVsKGxuLHduKXwwLEY9RitNYXRoLmltdWwobG4sJG4pfDAsVD1UK01hdGguaW11bChKdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LEtuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''bW4sZ24pfDAsRj1GK01hdGguaW11bChtbixLbil8MCxUPVQrTWF0aC5pbXVsKFllLHNuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsVW4pfDApK01hdGguaW11bChBdCxzbil8MCxGPUYrTWF0aC5pbXVsKEF0LFVuKXwwLFQ9VCtNYXRoLmltdWwoY3QsdG4pfDAsUz0oUz1TK01hdGguaW11bChj''@;'; put 'put ''dCxHbil8MCkrTWF0aC5pbXVsKE50LHRuKXwwLEY9RitNYXRoLmltdWwoTnQsR24pfDAsVD1UK01hdGguaW11bChvdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKG90LFNyKXwwKStNYXRoLmltdWwoUnQsUG4pfDAsRj1GK01hdGguaW11bChSdCxTcil8MCxUPVQrTWF0aC5pbXVsKF90LHVuKXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwoX3QsY24pfDApK01hdGguaW11bChudCx1bil8MCxGPUYrTWF0aC5pbXVsKG50LGNuKXwwLFQ9VCtNYXRoLmltdWwoZnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChmdCxFbil8MCkrTWF0aC5pbXVsKEZ0LEd0KXwwLEY9RitNYXRoLmltdWwoRnQsRW4pfDA7dmFy''@;'; put 'put ''IGUwPShQZSsoVD1UK01hdGguaW11bChwdCxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHB0LExuKXwwKStNYXRoLmltdWwobXQscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKG10LExuKXwwKSsoUz4+PjEzKXwwKSsoZTA+Pj4yNil8MCxlMCY9NjcxMDg4NjMs''@;'; put 'put ''VD1NYXRoLmltdWwoa24sd24pLFM9KFM9TWF0aC5pbXVsKGtuLCRuKSkrTWF0aC5pbXVsKGVyLHduKXwwLEY9TWF0aC5pbXVsKGVyLCRuKSxUPVQrTWF0aC5pbXVsKGJuLGduKXwwLFM9KFM9UytNYXRoLmltdWwoYm4sS24pfDApK01hdGguaW11bChsbixnbil8MCxGPUYrTWF0aC5pbXVsKGxu''@;'; put 'put ''LEtuKXwwLFQ9VCtNYXRoLmltdWwoSnQsc24pfDAsUz0oUz1TK01hdGguaW11bChKdCxVbil8MCkrTWF0aC5pbXVsKG1uLHNuKXwwLEY9RitNYXRoLmltdWwobW4sVW4pfDAsVD1UK01hdGguaW11bChZZSx0bil8MCxTPShTPVMrTWF0aC5pbXVsKFllLEduKXwwKStNYXRoLmltdWwoQXQsdG4p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChBdCxHbil8MCxUPVQrTWF0aC5pbXVsKGN0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsU3IpfDApK01hdGguaW11bChOdCxQbil8MCxGPUYrTWF0aC5pbXVsKE50LFNyKXwwLFQ9VCtNYXRoLmltdWwob3QsdW4pfDAsUz0oUz1TK01hdGguaW11bChvdCxjbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKFJ0LHVuKXwwLEY9RitNYXRoLmltdWwoUnQsY24pfDAsVD1UK01hdGguaW11bChfdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKF90LEVuKXwwKStNYXRoLmltdWwobnQsR3QpfDAsRj1GK01hdGguaW11bChudCxFbil8MDt2YXIgZDA9KFBlKyhUPVQrTWF0aC5pbXVsKGZ0''@;'; put 'put ''LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoZnQsTG4pfDApK01hdGguaW11bChGdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoRnQsTG4pfDApKyhTPj4+MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGguaW11bChrbixnbiksUz0oUz1N''@;'; put 'put ''YXRoLmltdWwoa24sS24pKStNYXRoLmltdWwoZXIsZ24pfDAsRj1NYXRoLmltdWwoZXIsS24pLFQ9VCtNYXRoLmltdWwoYm4sc24pfDAsUz0oUz1TK01hdGguaW11bChibixVbil8MCkrTWF0aC5pbXVsKGxuLHNuKXwwLEY9RitNYXRoLmltdWwobG4sVW4pfDAsVD1UK01hdGguaW11bChKdCx0''@;'; put 'put ''bil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LEduKXwwKStNYXRoLmltdWwobW4sdG4pfDAsRj1GK01hdGguaW11bChtbixHbil8MCxUPVQrTWF0aC5pbXVsKFllLFBuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsU3IpfDApK01hdGguaW11bChBdCxQbil8MCxGPUYrTWF0aC5pbXVsKEF0LFNyKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoY3QsdW4pfDAsUz0oUz1TK01hdGguaW11bChjdCxjbil8MCkrTWF0aC5pbXVsKE50LHVuKXwwLEY9RitNYXRoLmltdWwoTnQsY24pfDAsVD1UK01hdGguaW11bChvdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKG90LEVuKXwwKStNYXRoLmltdWwoUnQsR3QpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChSdCxFbil8MDt2YXIgXzA9KFBlKyhUPVQrTWF0aC5pbXVsKF90LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoX3QsTG4pfDApK01hdGguaW11bChudCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobnQsTG4pfDApKyhTPj4+MTMpfDApKyhf''@;'; put 'put ''MD4+PjI2KXwwLF8wJj02NzEwODg2MyxUPU1hdGguaW11bChrbixzbiksUz0oUz1NYXRoLmltdWwoa24sVW4pKStNYXRoLmltdWwoZXIsc24pfDAsRj1NYXRoLmltdWwoZXIsVW4pLFQ9VCtNYXRoLmltdWwoYm4sdG4pfDAsUz0oUz1TK01hdGguaW11bChibixHbil8MCkrTWF0aC5pbXVsKGxu''@;'; put 'put ''LHRuKXwwLEY9RitNYXRoLmltdWwobG4sR24pfDAsVD1UK01hdGguaW11bChKdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LFNyKXwwKStNYXRoLmltdWwobW4sUG4pfDAsRj1GK01hdGguaW11bChtbixTcil8MCxUPVQrTWF0aC5pbXVsKFllLHVuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUs''@;'; put 'put ''Y24pfDApK01hdGguaW11bChBdCx1bil8MCxGPUYrTWF0aC5pbXVsKEF0LGNuKXwwLFQ9VCtNYXRoLmltdWwoY3QsR3QpfDAsUz0oUz1TK01hdGguaW11bChjdCxFbil8MCkrTWF0aC5pbXVsKE50LEd0KXwwLEY9RitNYXRoLmltdWwoTnQsRW4pfDA7dmFyIFUwPShQZSsoVD1UK01hdGguaW11''@;'; put 'put ''bChvdCxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKG90LExuKXwwKStNYXRoLmltdWwoUnQscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKFJ0LExuKXwwKSsoUz4+PjEzKXwwKSsoVTA+Pj4yNil8MCxVMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sdG4pLFM9''@;'; put 'put ''KFM9TWF0aC5pbXVsKGtuLEduKSkrTWF0aC5pbXVsKGVyLHRuKXwwLEY9TWF0aC5pbXVsKGVyLEduKSxUPVQrTWF0aC5pbXVsKGJuLFBuKXwwLFM9KFM9UytNYXRoLmltdWwoYm4sU3IpfDApK01hdGguaW11bChsbixQbil8MCxGPUYrTWF0aC5pbXVsKGxuLFNyKXwwLFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''SnQsdW4pfDAsUz0oUz1TK01hdGguaW11bChKdCxjbil8MCkrTWF0aC5pbXVsKG1uLHVuKXwwLEY9RitNYXRoLmltdWwobW4sY24pfDAsVD1UK01hdGguaW11bChZZSxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKFllLEVuKXwwKStNYXRoLmltdWwoQXQsR3QpfDAsRj1GK01hdGguaW11bChBdCxF''@;'; put 'put ''bil8MDt2YXIgQmk9KFBlKyhUPVQrTWF0aC5pbXVsKGN0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoY3QsTG4pfDApK01hdGguaW11bChOdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoTnQsTG4pfDApKyhTPj4+MTMpfDApKyhCaT4+PjI2KXwwLEJpJj02''@;'; put 'put ''NzEwODg2MyxUPU1hdGguaW11bChrbixQbiksUz0oUz1NYXRoLmltdWwoa24sU3IpKStNYXRoLmltdWwoZXIsUG4pfDAsRj1NYXRoLmltdWwoZXIsU3IpLFQ9VCtNYXRoLmltdWwoYm4sdW4pfDAsUz0oUz1TK01hdGguaW11bChibixjbil8MCkrTWF0aC5pbXVsKGxuLHVuKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwobG4sY24pfDAsVD1UK01hdGguaW11bChKdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKEp0LEVuKXwwKStNYXRoLmltdWwobW4sR3QpfDAsRj1GK01hdGguaW11bChtbixFbil8MDt2YXIgajA9KFBlKyhUPVQrTWF0aC5pbXVsKFllLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoWWUsTG4pfDApK01hdGguaW11bChBdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoQXQsTG4pfDApKyhTPj4+MTMpfDApKyhqMD4+PjI2KXwwLGowJj02NzEwODg2MyxUPU1hdGguaW11bChrbix1biksUz0oUz1NYXRoLmltdWwoa24sY24pKStNYXRoLmltdWwoZXIs''@;'; put 'put ''dW4pfDAsRj1NYXRoLmltdWwoZXIsY24pLFQ9VCtNYXRoLmltdWwoYm4sR3QpfDAsUz0oUz1TK01hdGguaW11bChibixFbil8MCkrTWF0aC5pbXVsKGxuLEd0KXwwLEY9RitNYXRoLmltdWwobG4sRW4pfDA7dmFyIEFvPShQZSsoVD1UK01hdGguaW11bChKdCxxdCl8MCl8MCkrKCg4MTkxJihT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKEp0LExuKXwwKStNYXRoLmltdWwobW4scXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKG1uLExuKXwwKSsoUz4+PjEzKXwwKSsoQW8+Pj4yNil8MCxBbyY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sR3QpLFM9KFM9TWF0aC5pbXVsKGtuLEVuKSkrTWF0''@;'; put 'put ''aC5pbXVsKGVyLEd0KXwwLEY9TWF0aC5pbXVsKGVyLEVuKTt2YXIgS289KFBlKyhUPVQrTWF0aC5pbXVsKGJuLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoYm4sTG4pfDApK01hdGguaW11bChsbixxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobG4sTG4pfDAp''@;'; put 'put ''KyhTPj4+MTMpfDApKyhLbz4+PjI2KXwwLEtvJj02NzEwODg2Mzt2YXIgZmE9KFBlKyhUPU1hdGguaW11bChrbixxdCkpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoa24sTG4pKStNYXRoLmltdWwoZXIscXQpfDApKTw8MTMpfDA7cmV0dXJuIFBlPSgoRj1NYXRoLmltdWwoZXIsTG4pKSso''@;'; put 'put ''Uz4+PjEzKXwwKSsoZmE+Pj4yNil8MCxmYSY9NjcxMDg4NjMsRGVbMF09Sm4sRGVbMV09b3IsRGVbMl09Z3IsRGVbM109SnIsRGVbNF09VnIsRGVbNV09dGksRGVbNl09T3IsRGVbN109bGksRGVbOF09SWksRGVbOV09cjAsRGVbMTBdPWUwLERlWzExXT1kMCxEZVsxMl09XzAsRGVbMTNdPVUw''@;'; put 'put ''LERlWzE0XT1CaSxEZVsxNV09ajAsRGVbMTZdPUFvLERlWzE3XT1LbyxEZVsxOF09ZmEsMCE9PVBlJiYoRGVbMTldPVBlLFYubGVuZ3RoKyspLFZ9O2Z1bmN0aW9uIGtlKHgsUCxWKXtyZXR1cm4obmV3IFNlKS5tdWxwKHgsUCxWKX1mdW5jdGlvbiBTZSh4LFApe3RoaXMueD14LHRoaXMueT1Q''@;'; put 'put ''fU1hdGguaW11bHx8KEFlPXZlKSxOLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbih4LFApe3ZhciBUPXRoaXMubGVuZ3RoK3gubGVuZ3RoO3JldHVybiAxMD09PXRoaXMubGVuZ3RoJiYxMD09PXgubGVuZ3RoP0FlKHRoaXMseCxQKTpUPDYzP3ZlKHRoaXMseCxQKTpUPDEwMjQ/ZnVuY3Rpb24o''@;'; put 'put ''UyxGLHllKXt5ZS5uZWdhdGl2ZT1GLm5lZ2F0aXZlXlMubmVnYXRpdmUseWUubGVuZ3RoPVMubGVuZ3RoK0YubGVuZ3RoO2Zvcih2YXIgQ2U9MCxEZT0wLFBlPTA7UGU8eWUubGVuZ3RoLTE7UGUrKyl7dmFyIFFlPURlO0RlPTA7Zm9yKHZhciAkZT02NzEwODg2MyZDZSxndD1NYXRoLm1pbihQ''@;'; put 'put ''ZSxGLmxlbmd0aC0xKSx5dD1NYXRoLm1heCgwLFBlLVMubGVuZ3RoKzEpO3l0PD1ndDt5dCsrKXt2YXIgbXQ9KDB8Uy53b3Jkc1tQZS15dF0pKigwfEYud29yZHNbeXRdKSx2dD02NzEwODg2MyZtdDskZT02NzEwODg2MyYodnQ9dnQrJGV8MCksRGUrPShRZT0oUWU9UWUrKG10LzY3MTA4ODY0''@;'; put 'put ''fDApfDApKyh2dD4+PjI2KXwwKT4+PjI2LFFlJj02NzEwODg2M315ZS53b3Jkc1tQZV09JGUsQ2U9UWUsUWU9RGV9cmV0dXJuIDAhPT1DZT95ZS53b3Jkc1tQZV09Q2U6eWUubGVuZ3RoLS0seWUuc3RyaXAoKX0odGhpcyx4LFApOmtlKHRoaXMseCxQKX0sU2UucHJvdG90eXBlLm1ha2VSQlQ9''@;'; put 'put ''ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPW5ldyBBcnJheSh4KSxWPU4ucHJvdG90eXBlLl9jb3VudEJpdHMoeCktMSxUPTA7VDx4O1QrKylQW1RdPXRoaXMucmV2QmluKFQsVix4KTtyZXR1cm4gUH0sU2UucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbih4LFAsVil7aWYoMD09PXh8fHg9PT1WLTEp''@;'; put 'put ''cmV0dXJuIHg7Zm9yKHZhciBUPTAsUz0wO1M8UDtTKyspVHw9KDEmeCk8PFAtUy0xLHg+Pj0xO3JldHVybiBUfSxTZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbih4LFAsVixULFMsRil7Zm9yKHZhciB5ZT0wO3llPEY7eWUrKylUW3llXT1QW3hbeWVdXSxTW3llXT1WW3hbeWVdXX0sU2Uu''@;'; put 'put ''cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih4LFAsVixULFMsRil7dGhpcy5wZXJtdXRlKEYseCxQLFYsVCxTKTtmb3IodmFyIHllPTE7eWU8Uzt5ZTw8PTEpZm9yKHZhciBDZT15ZTw8MSxEZT1NYXRoLmNvcygyKk1hdGguUEkvQ2UpLFBlPU1hdGguc2luKDIqTWF0aC5QSS9DZSksUWU9''@;'; put 'put ''MDtRZTxTO1FlKz1DZSlmb3IodmFyICRlPURlLGd0PVBlLHl0PTA7eXQ8eWU7eXQrKyl7dmFyIHB0PVZbUWUreXRdLG10PVRbUWUreXRdLHZ0PVZbUWUreXQreWVdLGZ0PVRbUWUreXQreWVdLEZ0PSRlKnZ0LWd0KmZ0O2Z0PSRlKmZ0K2d0KnZ0LFZbUWUreXRdPXB0Kyh2dD1GdCksVFtRZSt5''@;'; put 'put ''dF09bXQrZnQsVltRZSt5dCt5ZV09cHQtdnQsVFtRZSt5dCt5ZV09bXQtZnQseXQhPT1DZSYmKEZ0PURlKiRlLVBlKmd0LGd0PURlKmd0K1BlKiRlLCRlPUZ0KX19LFNlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbih4LFApe3ZhciBWPTF8TWF0aC5tYXgoUCx4KSxUPTEmVixTPTA7''@;'; put 'put ''Zm9yKFY9Vi8yfDA7VjtWPj4+PTEpUysrO3JldHVybiAxPDxTKzErVH0sU2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbih4LFAsVil7aWYoIShWPD0xKSlmb3IodmFyIFQ9MDtUPFYvMjtUKyspe3ZhciBTPXhbVF07eFtUXT14W1YtVC0xXSx4W1YtVC0xXT1TLFM9UFtUXSxQW1RdPS1Q''@;'; put 'put ''W1YtVC0xXSxQW1YtVC0xXT0tU319LFNlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oeCxQKXtmb3IodmFyIFY9MCxUPTA7VDxQLzI7VCsrKXt2YXIgUz04MTkyKk1hdGgucm91bmQoeFsyKlQrMV0vUCkrTWF0aC5yb3VuZCh4WzIqVF0vUCkrVjt4W1RdPTY3MTA4ODYzJlMsVj1T''@;'; put 'put ''PDY3MTA4ODY0PzA6Uy82NzEwODg2NHwwfXJldHVybiB4fSxTZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbih4LFAsVixUKXtmb3IodmFyIFM9MCxGPTA7RjxQO0YrKylWWzIqRl09ODE5MSYoUys9MHx4W0ZdKSxWWzIqRisxXT04MTkxJihTPj4+PTEzKSxTPj4+PTEzO2ZvcihGPTIq''@;'; put 'put ''UDtGPFQ7KytGKVZbRl09MDtZKDA9PT1TKSxZKDA9PSgtODE5MiZTKSl9LFNlLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj0wO1Y8eDtWKyspUFtWXT0wO3JldHVybiBQfSxTZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbih4LFAsVil7dmFyIFQ9''@;'; put 'put ''Mip0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLFAubGVuZ3RoKSxTPXRoaXMubWFrZVJCVChUKSxGPXRoaXMuc3R1YihUKSx5ZT1uZXcgQXJyYXkoVCksQ2U9bmV3IEFycmF5KFQpLERlPW5ldyBBcnJheShUKSxQZT1uZXcgQXJyYXkoVCksUWU9bmV3IEFycmF5KFQpLCRlPW5ldyBBcnJheShU''@;'; put 'put ''KSxndD1WLndvcmRzO2d0Lmxlbmd0aD1ULHRoaXMuY29udmVydDEzYih4LndvcmRzLHgubGVuZ3RoLHllLFQpLHRoaXMuY29udmVydDEzYihQLndvcmRzLFAubGVuZ3RoLFBlLFQpLHRoaXMudHJhbnNmb3JtKHllLEYsQ2UsRGUsVCxTKSx0aGlzLnRyYW5zZm9ybShQZSxGLFFlLCRlLFQsUyk7''@;'; put 'put ''Zm9yKHZhciB5dD0wO3l0PFQ7eXQrKyl7dmFyIHB0PUNlW3l0XSpRZVt5dF0tRGVbeXRdKiRlW3l0XTtEZVt5dF09Q2VbeXRdKiRlW3l0XStEZVt5dF0qUWVbeXRdLENlW3l0XT1wdH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoQ2UsRGUsVCksdGhpcy50cmFuc2Zvcm0oQ2UsRGUsZ3QsRixULFMp''@;'; put 'put ''LHRoaXMuY29uanVnYXRlKGd0LEYsVCksdGhpcy5ub3JtYWxpemUxM2IoZ3QsVCksVi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5sZW5ndGg9eC5sZW5ndGgrUC5sZW5ndGgsVi5zdHJpcCgpfSxOLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oeCl7dmFyIFA9bmV3IE4obnVsbCk7''@;'; put 'put ''cmV0dXJuIFAud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3gubGVuZ3RoKSx0aGlzLm11bFRvKHgsUCl9LE4ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oeCl7dmFyIFA9bmV3IE4obnVsbCk7cmV0dXJuIFAud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3gubGVuZ3RoKSxrZSh0aGlz''@;'; put 'put ''LHgsUCl9LE4ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyh4LHRoaXMpfSxOLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KTtmb3IodmFyIFA9MCxWPTA7Vjx0aGlzLmxlbmd0''@;'; put 'put ''aDtWKyspe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKngsUz0oNjcxMDg4NjMmVCkrKDY3MTA4ODYzJlApO1A+Pj0yNixQKz1ULzY3MTA4ODY0fDAsUCs9Uz4+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmU31yZXR1cm4gMCE9PVAmJih0aGlzLndvcmRzW1ZdPVAsdGhpcy5sZW5ndGgrKyks''@;'; put 'put ''dGhpc30sTi5wcm90b3R5cGUubXVsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKHgpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LE4ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMu''@;'; put 'put ''Y2xvbmUoKSl9LE4ucHJvdG90eXBlLnBvdz1mdW5jdGlvbih4KXt2YXIgUD1mdW5jdGlvbihGKXtmb3IodmFyIHllPW5ldyBBcnJheShGLmJpdExlbmd0aCgpKSxDZT0wO0NlPHllLmxlbmd0aDtDZSsrKXt2YXIgUGU9Q2UlMjY7eWVbQ2VdPShGLndvcmRzW0NlLzI2fDBdJjE8PFBlKT4+PlBl''@;'; put 'put ''fXJldHVybiB5ZX0oeCk7aWYoMD09PVAubGVuZ3RoKXJldHVybiBuZXcgTigxKTtmb3IodmFyIFY9dGhpcyxUPTA7VDxQLmxlbmd0aCYmMD09PVBbVF07VCsrLFY9Vi5zcXIoKSk7aWYoKytUPFAubGVuZ3RoKWZvcih2YXIgUz1WLnNxcigpO1Q8UC5sZW5ndGg7VCsrLFM9Uy5zcXIoKSkwIT09''@;'; put 'put ''UFtUXSYmKFY9Vi5tdWwoUykpO3JldHVybiBWfSxOLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQLFY9eCUyNixUPSh4LVYpLzI2LFM9NjcxMDg4NjM+Pj4yNi1WPDwyNi1WO2lmKDAhPT1WKXt2YXIgRj0wO2ZvcihQPTA7UDx0''@;'; put 'put ''aGlzLmxlbmd0aDtQKyspe3ZhciB5ZT10aGlzLndvcmRzW1BdJlM7dGhpcy53b3Jkc1tQXT0oMHx0aGlzLndvcmRzW1BdKS15ZTw8VnxGLEY9eWU+Pj4yNi1WfUYmJih0aGlzLndvcmRzW1BdPUYsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PVQpe2ZvcihQPXRoaXMubGVuZ3RoLTE7UD49MDtQLS0p''@;'; put 'put ''dGhpcy53b3Jkc1tQK1RdPXRoaXMud29yZHNbUF07Zm9yKFA9MDtQPFQ7UCsrKXRoaXMud29yZHNbUF09MDt0aGlzLmxlbmd0aCs9VH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNo''@;'; put 'put ''bG4oeCl9LE4ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbih4LFAsVil7dmFyIFQ7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApLFQ9UD8oUC1QJTI2KS8yNjowO3ZhciBTPXglMjYsRj1NYXRoLm1pbigoeC1TKS8yNix0aGlzLmxlbmd0aCkseWU9NjcxMDg4NjNeNjcxMDg4NjM+Pj5TPDxT''@;'; put 'put ''LENlPVY7aWYoVC09RixUPU1hdGgubWF4KDAsVCksQ2Upe2Zvcih2YXIgRGU9MDtEZTxGO0RlKyspQ2Uud29yZHNbRGVdPXRoaXMud29yZHNbRGVdO0NlLmxlbmd0aD1GfWlmKDAhPT1GKWlmKHRoaXMubGVuZ3RoPkYpZm9yKHRoaXMubGVuZ3RoLT1GLERlPTA7RGU8dGhpcy5sZW5ndGg7RGUr''@;'; put 'put ''Kyl0aGlzLndvcmRzW0RlXT10aGlzLndvcmRzW0RlK0ZdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIFBlPTA7Zm9yKERlPXRoaXMubGVuZ3RoLTE7RGU+PTAmJigwIT09UGV8fERlPj1UKTtEZS0tKXt2YXIgUWU9MHx0aGlzLndvcmRzW0RlXTt0aGlzLndvcmRzW0Rl''@;'; put 'put ''XT1QZTw8MjYtU3xRZT4+PlMsUGU9UWUmeWV9cmV0dXJuIENlJiYwIT09UGUmJihDZS53b3Jkc1tDZS5sZW5ndGgrK109UGUpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKHgs''@;'; put 'put ''UCxWKXtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oeCxQLFYpfSxOLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oeCl9LE4ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXVz''@;'; put 'put ''aGxuKHgpfSxOLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oeCl9LE4ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHgpfSxOLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih4KXtZKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFA9eCUyNixWPSh4LVApLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PVZ8fCEodGhpcy53b3Jkc1tWXSYxPDxQKSl9LE4ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFA9eCUyNixWPSh4''@;'; put 'put ''LVApLzI2O3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Vj90aGlzOigwIT09UCYmVisrLHRoaXMubGVuZ3RoPU1hdGgubWluKFYsdGhpcy5sZW5ndGgpLDAhPT1QJiYodGhpcy53b3Jkc1t0''@;'; put 'put ''aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5QPDxQKSx0aGlzLnN0cmlwKCkpfSxOLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih4KX0sTi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpLHg8MD90aGlzLmlzdWJuKC14KTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPHg/KHRoaXMud29yZHNbMF09eC0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzLmlzdWJuKHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbih4KX0sTi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKHgpe3RoaXMud29yZHNbMF0rPXg7Zm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tQXT49NjcxMDg4NjQ7UCsrKXRo''@;'; put 'put ''aXMud29yZHNbUF0tPTY3MTA4ODY0LFA9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbUCsxXT0xOnRoaXMud29yZHNbUCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxQKzEpLHRoaXN9LE4ucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKHgpe2lmKFkoIm51''@;'; put 'put ''bWJlciI9PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpLHg8MClyZXR1cm4gdGhpcy5pYWRkbigteCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXgsMT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW1BdPDA7UCsrKXRoaXMud29yZHNbUF0rPTY3MTA4ODY0LHRoaXMud29yZHNbUCsxXS09MTty''@;'; put 'put ''ZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oeCl9LE4ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih4KX0sTi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sTi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LE4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih4LFAsVil7dmFyIFQsUzt0aGlzLl9leHBhbmQoeC5sZW5ndGgrVik7dmFyIHll''@;'; put 'put ''PTA7Zm9yKFQ9MDtUPHgubGVuZ3RoO1QrKyl7Uz0oMHx0aGlzLndvcmRzW1QrVl0pK3llO3ZhciBDZT0oMHx4LndvcmRzW1RdKSpQO3llPSgoUy09NjcxMDg4NjMmQ2UpPj4yNiktKENlLzY3MTA4ODY0fDApLHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTfWZvcig7VDx0aGlzLmxlbmd0aC1W''@;'; put 'put ''O1QrKyl5ZT0oUz0oMHx0aGlzLndvcmRzW1QrVl0pK3llKT4+MjYsdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlM7aWYoMD09PXllKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKFkoLTE9PT15ZSkseWU9MCxUPTA7VDx0aGlzLmxlbmd0aDtUKyspeWU9KFM9LSgwfHRoaXMud29yZHNbVF0pK3ll''@;'; put 'put ''KT4+MjYsdGhpcy53b3Jkc1tUXT02NzEwODg2MyZTO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih4LFApe3ZhciBWLFQ9dGhpcy5jbG9uZSgpLFM9eCxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXTswIT0oVj0yNi10aGlz''@;'; put 'put ''Ll9jb3VudEJpdHMoRikpJiYoUz1TLnVzaGxuKFYpLFQuaXVzaGxuKFYpLEY9MHxTLndvcmRzW1MubGVuZ3RoLTFdKTt2YXIgeWUsQ2U9VC5sZW5ndGgtUy5sZW5ndGg7aWYoIm1vZCIhPT1QKXsoeWU9bmV3IE4obnVsbCkpLmxlbmd0aD1DZSsxLHllLndvcmRzPW5ldyBBcnJheSh5ZS5sZW5n''@;'; put 'put ''dGgpO2Zvcih2YXIgRGU9MDtEZTx5ZS5sZW5ndGg7RGUrKyl5ZS53b3Jkc1tEZV09MH12YXIgUGU9VC5jbG9uZSgpLl9pc2hsbnN1Ym11bChTLDEsQ2UpOzA9PT1QZS5uZWdhdGl2ZSYmKFQ9UGUseWUmJih5ZS53b3Jkc1tDZV09MSkpO2Zvcih2YXIgUWU9Q2UtMTtRZT49MDtRZS0tKXt2YXIg''@;'; put 'put ''JGU9NjcxMDg4NjQqKDB8VC53b3Jkc1tTLmxlbmd0aCtRZV0pKygwfFQud29yZHNbUy5sZW5ndGgrUWUtMV0pO2ZvcigkZT1NYXRoLm1pbigkZS9GfDAsNjcxMDg4NjMpLFQuX2lzaGxuc3VibXVsKFMsJGUsUWUpOzAhPT1ULm5lZ2F0aXZlOykkZS0tLFQubmVnYXRpdmU9MCxULl9pc2hsbnN1''@;'; put 'put ''Ym11bChTLDEsUWUpLFQuaXNaZXJvKCl8fChULm5lZ2F0aXZlXj0xKTt5ZSYmKHllLndvcmRzW1FlXT0kZSl9cmV0dXJuIHllJiZ5ZS5zdHJpcCgpLFQuc3RyaXAoKSwiZGl2IiE9PVAmJjAhPT1WJiZULml1c2hybihWKSx7ZGl2OnllfHxudWxsLG1vZDpUfX0sTi5wcm90b3R5cGUuZGl2bW9k''@;'; put 'put ''PWZ1bmN0aW9uKHgsUCxWKXtyZXR1cm4gWSgheC5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBOKDApLG1vZDpuZXcgTigwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgsUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWco''@;'; put 'put ''KSksImRpdiIhPT1QJiYoUz1GLm1vZC5uZWcoKSxWJiYwIT09Uy5uZWdhdGl2ZSYmUy5pYWRkKHgpKSx7ZGl2OlQsbW9kOlN9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmU/KEY9dGhpcy5kaXZtb2QoeC5uZWcoKSxQKSwibW9kIiE9PVAmJihUPUYuZGl2Lm5lZygpKSx7ZGl2''@;'; put 'put ''OlQsbW9kOkYubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmeC5uZWdhdGl2ZSk/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeC5uZWcoKSxQKSwiZGl2IiE9PVAmJihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlzdWIoeCkpLHtkaXY6Ri5kaXYsbW9kOlN9KTp4Lmxlbmd0aD50aGlz''@;'; put 'put ''Lmxlbmd0aHx8dGhpcy5jbXAoeCk8MD97ZGl2Om5ldyBOKDApLG1vZDp0aGlzfToxPT09eC5sZW5ndGg/ImRpdiI9PT1QP3tkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PVA/e2RpdjpudWxsLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp7ZGl2''@;'; put 'put ''OnRoaXMuZGl2bih4LndvcmRzWzBdKSxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06dGhpcy5fd29yZERpdih4LFApO3ZhciBULFMsRn0sTi5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJkaXYiLCExKS5kaXZ9LE4ucHJvdG90eXBlLm1v''@;'; put 'put ''ZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwibW9kIiwhMSkubW9kfSxOLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCEwKS5tb2R9LE4ucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKHgpe3ZhciBQPXRoaXMuZGl2bW9k''@;'; put 'put ''KHgpO2lmKFAubW9kLmlzWmVybygpKXJldHVybiBQLmRpdjt2YXIgVj0wIT09UC5kaXYubmVnYXRpdmU/UC5tb2QuaXN1Yih4KTpQLm1vZCxUPXgudXNocm4oMSksUz14LmFuZGxuKDEpLEY9Vi5jbXAoVCk7cmV0dXJuIEY8MHx8MT09PVMmJjA9PT1GP1AuZGl2OjAhPT1QLmRpdi5uZWdhdGl2''@;'; put 'put ''ZT9QLmRpdi5pc3VibigxKTpQLmRpdi5pYWRkbigxKX0sTi5wcm90b3R5cGUubW9kbj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9NjcxMDg4NjQleCxWPTAsVD10aGlzLmxlbmd0aC0xO1Q+PTA7VC0tKVY9KFAqVisoMHx0aGlzLndvcmRzW1RdKSkleDtyZXR1cm4gVn0s''@;'; put 'put ''Ti5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oeCl7WSh4PD02NzEwODg2Myk7Zm9yKHZhciBQPTAsVj10aGlzLmxlbmd0aC0xO1Y+PTA7Vi0tKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSs2NzEwODg2NCpQO3RoaXMud29yZHNbVl09VC94fDAsUD1UJXh9cmV0dXJuIHRoaXMuc3RyaXAoKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHgpfSxOLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVt''@;'; put 'put ''b2QoeCk6UC5jbG9uZSgpO2Zvcih2YXIgVD1uZXcgTigxKSxTPW5ldyBOKDApLEY9bmV3IE4oMCkseWU9bmV3IE4oMSksQ2U9MDtQLmlzRXZlbigpJiZWLmlzRXZlbigpOylQLml1c2hybigxKSxWLml1c2hybigxKSwrK0NlO2Zvcih2YXIgRGU9Vi5jbG9uZSgpLFBlPVAuY2xvbmUoKTshUC5p''@;'; put 'put ''c1plcm8oKTspe2Zvcih2YXIgUWU9MCwkZT0xOzA9PShQLndvcmRzWzBdJiRlKSYmUWU8MjY7KytRZSwkZTw8PTEpO2lmKFFlPjApZm9yKFAuaXVzaHJuKFFlKTtRZS0tID4wOykoVC5pc09kZCgpfHxTLmlzT2RkKCkpJiYoVC5pYWRkKERlKSxTLmlzdWIoUGUpKSxULml1c2hybigxKSxTLml1''@;'; put 'put ''c2hybigxKTtmb3IodmFyIGd0PTAseXQ9MTswPT0oVi53b3Jkc1swXSZ5dCkmJmd0PDI2OysrZ3QseXQ8PD0xKTtpZihndD4wKWZvcihWLml1c2hybihndCk7Z3QtLSA+MDspKEYuaXNPZGQoKXx8eWUuaXNPZGQoKSkmJihGLmlhZGQoRGUpLHllLmlzdWIoUGUpKSxGLml1c2hybigxKSx5ZS5p''@;'; put 'put ''dXNocm4oMSk7UC5jbXAoVik+PTA/KFAuaXN1YihWKSxULmlzdWIoRiksUy5pc3ViKHllKSk6KFYuaXN1YihQKSxGLmlzdWIoVCkseWUuaXN1YihTKSl9cmV0dXJue2E6RixiOnllLGdjZDpWLml1c2hsbihDZSl9fSxOLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdh''@;'; put 'put ''dGl2ZSksWSgheC5pc1plcm8oKSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQPTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25lKCk7Zm9yKHZhciBULFM9bmV3IE4oMSksRj1uZXcgTigwKSx5ZT1WLmNsb25lKCk7UC5jbXBuKDEpPjAmJlYuY21wbigxKT4wOyl7Zm9yKHZhciBDZT0w''@;'; put 'put ''LERlPTE7MD09KFAud29yZHNbMF0mRGUpJiZDZTwyNjsrK0NlLERlPDw9MSk7aWYoQ2U+MClmb3IoUC5pdXNocm4oQ2UpO0NlLS0gPjA7KVMuaXNPZGQoKSYmUy5pYWRkKHllKSxTLml1c2hybigxKTtmb3IodmFyIFBlPTAsUWU9MTswPT0oVi53b3Jkc1swXSZRZSkmJlBlPDI2OysrUGUsUWU8''@;'; put 'put ''PD0xKTtpZihQZT4wKWZvcihWLml1c2hybihQZSk7UGUtLSA+MDspRi5pc09kZCgpJiZGLmlhZGQoeWUpLEYuaXVzaHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksUy5pc3ViKEYpKTooVi5pc3ViKFApLEYuaXN1YihTKSl9cmV0dXJuKFQ9MD09PVAuY21wbigxKT9TOkYpLmNtcG4oMCk8''@;'; put 'put ''MCYmVC5pYWRkKHgpLFR9LE4ucHJvdG90eXBlLmdjZD1mdW5jdGlvbih4KXtpZih0aGlzLmlzWmVybygpKXJldHVybiB4LmFicygpO2lmKHguaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIFA9dGhpcy5jbG9uZSgpLFY9eC5jbG9uZSgpO1AubmVnYXRpdmU9MCxWLm5lZ2F0aXZlPTA7''@;'; put 'put ''Zm9yKHZhciBUPTA7UC5pc0V2ZW4oKSYmVi5pc0V2ZW4oKTtUKyspUC5pdXNocm4oMSksVi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO1AuaXNFdmVuKCk7KVAuaXVzaHJuKDEpO2Zvcig7Vi5pc0V2ZW4oKTspVi5pdXNocm4oMSk7dmFyIFM9UC5jbXAoVik7aWYoUzwwKXt2YXIgRj1QO1A9VixW''@;'; put 'put ''PUZ9ZWxzZSBpZigwPT09U3x8MD09PVYuY21wbigxKSlicmVhaztQLmlzdWIoVil9cmV0dXJuIFYuaXVzaGxuKFQpfSxOLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmVnY2QoeCkuYS51bW9kKHgpfSxOLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''MD09KDEmdGhpcy53b3Jkc1swXSl9LE4ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy53b3Jkc1swXSZ4fSxOLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbih4KXtZ''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgeCk7dmFyIFA9eCUyNixWPSh4LVApLzI2LFQ9MTw8UDtpZih0aGlzLmxlbmd0aDw9VilyZXR1cm4gdGhpcy5fZXhwYW5kKFYrMSksdGhpcy53b3Jkc1tWXXw9VCx0aGlzO2Zvcih2YXIgUz1ULEY9VjswIT09UyYmRjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT0w''@;'; put 'put ''fHRoaXMud29yZHNbRl07Uz0oeWUrPVMpPj4+MjYsdGhpcy53b3Jkc1tGXT15ZSY9NjcxMDg4NjN9cmV0dXJuIDAhPT1TJiYodGhpcy53b3Jkc1tGXT1TLHRoaXMubGVuZ3RoKyspLHRoaXN9LE4ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9''@;'; put 'put ''PT10aGlzLndvcmRzWzBdfSxOLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKHgpe3ZhciBQLFY9eDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhVilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmVilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlQPTE7ZWxzZXtW''@;'; put 'put ''JiYoeD0teCksWSh4PD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgVD0wfHRoaXMud29yZHNbMF07UD1UPT09eD8wOlQ8eD8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbih4KXtpZigwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSYmMD09PXgubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlKXJldHVybiAxO3ZhciBQPXRoaXMudWNtcCh4KTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKHgpe2lmKHRoaXMubGVu''@;'; put 'put ''Z3RoPngubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPHgubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9MHx0aGlzLndvcmRzW1ZdLFM9MHx4LndvcmRzW1ZdO2lmKFQhPT1TKXtUPFM/UD0tMTpUPlMmJihQPTEpO2JyZWFr''@;'; put 'put ''fX1yZXR1cm4gUH0sTi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKHgpe3JldHVybiAxPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5ndD1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk+''@;'; put 'put ''PTB9LE4ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXAoeCk+PTB9LE4ucHJvdG90eXBlLmx0bj1mdW5jdGlvbih4KXtyZXR1cm4tMT09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcCh4KX0sTi5wcm90''@;'; put 'put ''b3R5cGUubHRlbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPD0wfSxOLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPD0wfSxOLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmVx''@;'; put 'put ''PWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhpcy5jbXAoeCl9LE4ucmVkPWZ1bmN0aW9uKHgpe3JldHVybiBuZXcgbmUoeCl9LE4ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHgpe3JldHVybiBZKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLFko''@;'; put 'put ''MD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIikseC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKHgpfSxOLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMg''@;'; put 'put ''aW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sTi5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnJlZD14LHRoaXN9LE4ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKHgpe3JldHVybiBZKCF0aGlzLnJlZCwiQWxy''@;'; put 'put ''ZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKHgpfSxOLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyx4KX0s''@;'; put 'put ''Ti5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVk''@;'; put 'put ''U3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyx4''@;'; put 'put ''KX0sTi5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVk''@;'; put 'put ''TXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQubXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLmltdWwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0''@;'; put 'put ''aGlzLnJlZC5zcXIodGhpcyl9LE4ucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5y''@;'; put 'put ''ZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sTi5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMu''@;'; put 'put ''cmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LE4ucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBu''@;'; put 'put ''dW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQmJiF4LnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5w''@;'; put 'put ''b3codGhpcyx4KX07dmFyIEllPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gVGUoeCxQKXt0aGlzLm5hbWU9eCx0aGlzLnA9bmV3IE4oUCwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IE4oMSkuaXVzaGxuKHRoaXMu''@;'; put 'put ''bikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIEVlKCl7VGUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBoZSgpe1RlLmNh''@;'; put 'put ''bGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gTygpe1RlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIil9ZnVuY3Rpb24geigpe1RlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gbmUoeCl7aWYoInN0cmluZyI9PXR5cGVvZiB4KXt2YXIgUD1OLl9wcmltZSh4''@;'; put 'put ''KTt0aGlzLm09UC5wLHRoaXMucHJpbWU9UH1lbHNlIFkoeC5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT14LHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiB0ZSh4KXtuZS5jYWxsKHRoaXMseCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhp''@;'; put 'put ''cy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgTigxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYu''@;'; put 'put ''bXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1UZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB4PW5ldyBOKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBB''@;'; put 'put ''cnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSkseH0sVGUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oeCl7dmFyIFAsVj14O2Rve3RoaXMuc3BsaXQoVix0aGlzLnRtcCksUD0oVj0oVj10aGlzLmltdWxLKFYpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoUD50aGlzLm4p''@;'; put 'put ''O3ZhciBUPVA8dGhpcy5uPy0xOlYudWNtcCh0aGlzLnApO3JldHVybiAwPT09VD8oVi53b3Jkc1swXT0wLFYubGVuZ3RoPTEpOlQ+MD9WLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1WLnN0cmlwP1Yuc3RyaXAoKTpWLl9zdHJpcCgpLFZ9LFRlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFAp''@;'; put 'put ''e3guaXVzaHJuKHRoaXMubiwwLFApfSxUZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaW11bCh0aGlzLmspfSxXKEVlLFRlKSxFZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQKXtmb3IodmFyIFY9NDE5NDMwMyxUPU1hdGgubWluKHgubGVuZ3RoLDkpLFM9MDtT''@;'; put 'put ''PFQ7UysrKVAud29yZHNbU109eC53b3Jkc1tTXTtpZihQLmxlbmd0aD1ULHgubGVuZ3RoPD05KXJldHVybiB4LndvcmRzWzBdPTAsdm9pZCh4Lmxlbmd0aD0xKTt2YXIgRj14LndvcmRzWzldO2ZvcihQLndvcmRzW1AubGVuZ3RoKytdPUYmVixTPTEwO1M8eC5sZW5ndGg7UysrKXt2YXIgeWU9''@;'; put 'put ''MHx4LndvcmRzW1NdO3gud29yZHNbUy0xMF09KHllJlYpPDw0fEY+Pj4yMixGPXllfXgud29yZHNbUy0xMF09Rj4+Pj0yMix4Lmxlbmd0aC09MD09PUYmJngubGVuZ3RoPjEwPzEwOjl9LEVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXt4LndvcmRzW3gubGVuZ3RoXT0wLHgud29yZHNb''@;'; put 'put ''eC5sZW5ndGgrMV09MCx4Lmxlbmd0aCs9Mjtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspe3ZhciBUPTB8eC53b3Jkc1tWXTt4LndvcmRzW1ZdPTY3MTA4ODYzJihQKz05NzcqVCksUD02NCpUKyhQLzY3MTA4ODY0fDApfXJldHVybiAwPT09eC53b3Jkc1t4Lmxlbmd0aC0xXSYmKHgu''@;'; put 'put ''bGVuZ3RoLS0sMD09PXgud29yZHNbeC5sZW5ndGgtMV0mJngubGVuZ3RoLS0pLHh9LFcoaGUsVGUpLFcoTyxUZSksVyh6LFRlKSx6LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspe3ZhciBUPTE5KigwfHgud29yZHNbVl0pK1AsUz02''@;'; put 'put ''NzEwODg2MyZUO1Q+Pj49MjYseC53b3Jkc1tWXT1TLFA9VH1yZXR1cm4gMCE9PVAmJih4LndvcmRzW3gubGVuZ3RoKytdPVApLHh9LE4uX3ByaW1lPWZ1bmN0aW9uKHgpe2lmKEllW3hdKXJldHVybiBJZVt4XTt2YXIgUDtpZigiazI1NiI9PT14KVA9bmV3IEVlO2Vsc2UgaWYoInAyMjQiPT09''@;'; put 'put ''eClQPW5ldyBoZTtlbHNlIGlmKCJwMTkyIj09PXgpUD1uZXcgTztlbHNle2lmKCJwMjU1MTkiIT09eCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIit4KTtQPW5ldyB6fXJldHVybiBJZVt4XT1QLFB9LG5lLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih4KXtZKDA9PT14Lm5l''@;'; put 'put ''Z2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFkoeC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbmUucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHgsUCl7WSgwPT0oeC5uZWdhdGl2ZXxQLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCBwb3NpdGl2ZXMiKSxZKHgucmVkJiZ4LnJlZD09PVAucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LG5lLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZSh4KS5fZm9yY2VSZWQodGhpcyk6eC51''@;'; put 'put ''bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHgpe3JldHVybiB4LmlzWmVybygpP3guY2xvbmUoKTp0aGlzLm0uc3ViKHgpLl9mb3JjZVJlZCh0aGlzKX0sbmUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQ''@;'; put 'put ''KTt2YXIgVj14LmFkZChQKTtyZXR1cm4gVi5jbXAodGhpcy5tKT49MCYmVi5pc3ViKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguaWFkZChQKTtyZXR1cm4gVi5jbXAodGhpcy5tKT49''@;'; put 'put ''MCYmVi5pc3ViKHRoaXMubSksVn0sbmUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LnN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlzLm0pLFYuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlv''@;'; put 'put ''bih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmlzdWIoUCk7cmV0dXJuIFYuY21wbigwKTwwJiZWLmlhZGQodGhpcy5tKSxWfSxuZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoeCksdGhpcy5pbW9kKHgudXNobG4oUCkpfSxuZS5wcm90''@;'; put 'put ''b3R5cGUuaW11bD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHguaW11bChQKSl9LG5lLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4Lm11bChQKSl9LG5lLnByb3RvdHlwZS5p''@;'; put 'put ''c3FyPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltdWwoeCx4LmNsb25lKCkpfSxuZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm11bCh4LHgpfSxuZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbih4KXtpZih4LmlzWmVybygpKXJldHVybiB4LmNsb25lKCk7dmFyIFA9''@;'; put 'put ''dGhpcy5tLmFuZGxuKDMpO2lmKFkoUCUyPT0xKSwzPT09UCl7dmFyIFY9dGhpcy5tLmFkZChuZXcgTigxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyh4LFYpfWZvcih2YXIgVD10aGlzLm0uc3VibigxKSxTPTA7IVQuaXNaZXJvKCkmJjA9PT1ULmFuZGxuKDEpOylTKyssVC5pdXNocm4o''@;'; put 'put ''MSk7WSghVC5pc1plcm8oKSk7dmFyIEY9bmV3IE4oMSkudG9SZWQodGhpcykseWU9Ri5yZWROZWcoKSxDZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksRGU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihEZT1uZXcgTigyKkRlKkRlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coRGUsQ2UpLmNt''@;'; put 'put ''cCh5ZSk7KURlLnJlZElBZGQoeWUpO2Zvcih2YXIgUGU9dGhpcy5wb3coRGUsVCksUWU9dGhpcy5wb3coeCxULmFkZG4oMSkuaXVzaHJuKDEpKSwkZT10aGlzLnBvdyh4LFQpLGd0PVM7MCE9PSRlLmNtcChGKTspe2Zvcih2YXIgeXQ9JGUscHQ9MDswIT09eXQuY21wKEYpO3B0KyspeXQ9eXQu''@;'; put 'put ''cmVkU3FyKCk7WShwdDxndCk7dmFyIG10PXRoaXMucG93KFBlLG5ldyBOKDEpLml1c2hsbihndC1wdC0xKSk7UWU9UWUucmVkTXVsKG10KSxQZT1tdC5yZWRTcXIoKSwkZT0kZS5yZWRNdWwoUGUpLGd0PXB0fXJldHVybiBRZX0sbmUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7dmFyIFA9''@;'; put 'put ''eC5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PVAubmVnYXRpdmU/KFAubmVnYXRpdmU9MCx0aGlzLmltb2QoUCkucmVkTmVnKCkpOnRoaXMuaW1vZChQKX0sbmUucHJvdG90eXBlLnBvdz1mdW5jdGlvbih4LFApe2lmKFAuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDEpLnRvUmVkKHRoaXMpO2lm''@;'; put 'put ''KDA9PT1QLmNtcG4oMSkpcmV0dXJuIHguY2xvbmUoKTt2YXIgVj1uZXcgQXJyYXkoMTYpO1ZbMF09bmV3IE4oMSkudG9SZWQodGhpcyksVlsxXT14O2Zvcih2YXIgVD0yO1Q8Vi5sZW5ndGg7VCsrKVZbVF09dGhpcy5tdWwoVltULTFdLHgpO3ZhciBTPVZbMF0sRj0wLHllPTAsQ2U9UC5iaXRM''@;'; put 'put ''ZW5ndGgoKSUyNjtmb3IoMD09PUNlJiYoQ2U9MjYpLFQ9UC5sZW5ndGgtMTtUPj0wO1QtLSl7Zm9yKHZhciBEZT1QLndvcmRzW1RdLFBlPUNlLTE7UGU+PTA7UGUtLSl7dmFyIFFlPURlPj5QZSYxO1MhPT1WWzBdJiYoUz10aGlzLnNxcihTKSksMCE9PVFlfHwwIT09Rj8oRjw8PTEsRnw9UWUs''@;'; put 'put ''KDQ9PSsreWV8fDA9PT1UJiYwPT09UGUpJiYoUz10aGlzLm11bChTLFZbRl0pLHllPTAsRj0wKSk6eWU9MH1DZT0yNn1yZXR1cm4gU30sbmUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXt2YXIgUD14LnVtb2QodGhpcy5tKTtyZXR1cm4gUD09PXg/UC5jbG9uZSgpOlB9LG5lLnBy''@;'; put 'put ''b3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih4KXt2YXIgUD14LmNsb25lKCk7cmV0dXJuIFAucmVkPW51bGwsUH0sTi5tb250PWZ1bmN0aW9uKHgpe3JldHVybiBuZXcgdGUoeCl9LFcodGUsbmUpLHRlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW1v''@;'; put 'put ''ZCh4LnVzaGxuKHRoaXMuc2hpZnQpKX0sdGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXRoaXMuaW1vZCh4Lm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSx0ZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAu''@;'; put 'put ''aXNaZXJvKCkpcmV0dXJuIHgud29yZHNbMF09MCx4Lmxlbmd0aD0xLHg7dmFyIFY9eC5pbXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksUz1WLmlzdWIoVCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1''@;'; put 'put ''cm4gUy5jbXAodGhpcy5tKT49MD9GPVMuaXN1Yih0aGlzLm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LHRlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQLmlzWmVybygpKXJldHVybiBuZXcgTigwKS5fZm9y''@;'; put 'put ''Y2VSZWQodGhpcyk7dmFyIFY9eC5tdWwoUCksVD1WLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4odGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wP0Y9Uy5pc3ViKHRo''@;'; put 'put ''aXMubSk6Uy5jbXBuKDApPDAmJihGPVMuaWFkZCh0aGlzLm0pKSxGLl9mb3JjZVJlZCh0aGlzKX0sdGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW1vZCh4Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oVT1aLm5tZChVKSx0''@;'; put 'put ''aGlzKX0sODA5MTpVPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFEoWixpZSl7aWYobnVsbD09Wil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBmaXJzdCBhcmd1bWVudCB0byBvYmplY3QiKTtmb3IodmFyIGxlPU9iamVjdChaKSxZPTE7WTxhcmd1bWVudHMubGVuZ3RoO1kr''@;'; put 'put ''Kyl7dmFyIFc9YXJndW1lbnRzW1ldO2lmKG51bGwhPVcpZm9yKHZhciBOPU9iamVjdC5rZXlzKE9iamVjdChXKSksZWU9MCxxPU4ubGVuZ3RoO2VlPHE7ZWUrKyl7dmFyIEo9TltlZV0sc2U9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihXLEopO3ZvaWQgMCE9PXNlJiZzZS5lbnVt''@;'; put 'put ''ZXJhYmxlJiYobGVbSl09V1tKXSl9fXJldHVybiBsZX1VLmV4cG9ydHM9e2Fzc2lnbjpRLHBvbHlmaWxsOmZ1bmN0aW9uKCl7T2JqZWN0LmFzc2lnbnx8T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdCwiYXNzaWduIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6''@;'; put 'put ''ITAsdmFsdWU6UX0pfX19LDcxODc6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9Wig1MTA4KSxZPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsVz1ZJiYiZnVuY3Rpb24iPT10eXBlb2YgWS5hcHBseT9ZLmFwcGx5OmZ1bmN0aW9uKEllLFRlLEVlKXtyZXR1''@;'; put 'put ''cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoSWUsVGUsRWUpfTtpZT1ZJiYiZnVuY3Rpb24iPT10eXBlb2YgWS5vd25LZXlzP1kub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKEllKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo''@;'; put 'put ''SWUpLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKEllKSl9OmZ1bmN0aW9uKEllKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoSWUpfTt2YXIgTj1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKEllKXtyZXR1cm4gSWUhPUllfTtmdW5jdGlvbiBlZSgpe2VlLmlu''@;'; put 'put ''aXQuY2FsbCh0aGlzKX1VLmV4cG9ydHM9ZWUsVS5leHBvcnRzLm9uY2U9ZnVuY3Rpb24oSWUsVGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihFZSxoZSl7ZnVuY3Rpb24gTyhuZSl7SWUucmVtb3ZlTGlzdGVuZXIoVGUseiksaGUobmUpfWZ1bmN0aW9uIHooKXsiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgSWUucmVtb3ZlTGlzdGVuZXImJkllLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsTyksRWUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX12YXIgbmU7U2UoSWUsVGUseix7b25jZTohMH0pLCJlcnJvciIhPT1UZSYmKCJmdW5jdGlvbiI9PXR5cGVvZihuZT1JZSkub24mJlNlKG5lLCJl''@;'; put 'put ''cnJvciIsTyx7b25jZTohMH0pKX0pfSxlZS5FdmVudEVtaXR0ZXI9ZWUsZWUucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLGVlLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxlZS5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIHE9MTA7ZnVuY3Rpb24gSihJZSl7aWYoImZ1bmN0''@;'; put 'put ''aW9uIiE9dHlwZW9mIEllKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBJZSl9ZnVuY3Rpb24gc2UoSWUpe3JldHVybiB2b2lkIDA9PT1JZS5fbWF4TGlzdGVuZXJzP2Vl''@;'; put 'put ''LmRlZmF1bHRNYXhMaXN0ZW5lcnM6SWUuX21heExpc3RlbmVyc31mdW5jdGlvbiBhZShJZSxUZSxFZSxoZSl7dmFyIE8seixuZTtpZihKKEVlKSx2b2lkIDA9PT0oej1JZS5fZXZlbnRzKT8oej1JZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksSWUuX2V2ZW50c0NvdW50PTApOih2b2lk''@;'; put 'put ''IDAhPT16Lm5ld0xpc3RlbmVyJiYoSWUuZW1pdCgibmV3TGlzdGVuZXIiLFRlLEVlLmxpc3RlbmVyP0VlLmxpc3RlbmVyOkVlKSx6PUllLl9ldmVudHMpLG5lPXpbVGVdKSx2b2lkIDA9PT1uZSluZT16W1RlXT1FZSwrK0llLl9ldmVudHNDb3VudDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBuZT9uZT16W1RlXT1oZT9bRWUsbmVdOltuZSxFZV06aGU/bmUudW5zaGlmdChFZSk6bmUucHVzaChFZSksKE89c2UoSWUpKT4wJiZuZS5sZW5ndGg+TyYmIW5lLndhcm5lZCl7bmUud2FybmVkPSEwO3ZhciB4PW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFr''@;'; put 'put ''IGRldGVjdGVkLiAiK25lLmxlbmd0aCsiICIrU3RyaW5nKFRlKSsiIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQiKTt4Lm5hbWU9Ik1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyIseC5lbWl0dGVyPUllLHgudHlwZT1U''@;'; put 'put ''ZSx4LmNvdW50PW5lLmxlbmd0aCxsZSYmbGUud2FybiYmbGUud2Fybih4KX1yZXR1cm4gSWV9ZnVuY3Rpb24gZmUoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIGRlKEllLFRlLEVlKXt2YXIgaGU9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OkllLHR5cGU6VGUsbGlzdGVuZXI6''@;'; put 'put ''RWV9LE89ZmUuYmluZChoZSk7cmV0dXJuIE8ubGlzdGVuZXI9RWUsaGUud3JhcEZuPU8sT31mdW5jdGlvbiB2ZShJZSxUZSxFZSl7dmFyIGhlPUllLl9ldmVudHM7aWYodm9pZCAwPT09aGUpcmV0dXJuW107dmFyIE89aGVbVGVdO3JldHVybiB2b2lkIDA9PT1PP1tdOiJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBPP0VlP1tPLmxpc3RlbmVyfHxPXTpbT106RWU/ZnVuY3Rpb24oeil7Zm9yKHZhciBuZT1uZXcgQXJyYXkoei5sZW5ndGgpLHRlPTA7dGU8bmUubGVuZ3RoOysrdGUpbmVbdGVdPXpbdGVdLmxpc3RlbmVyfHx6W3RlXTtyZXR1cm4gbmV9KE8pOmtlKE8sTy5sZW5ndGgpfWZ1bmN0aW9u''@;'; put 'put ''IEFlKEllKXt2YXIgVGU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PVRlKXt2YXIgRWU9VGVbSWVdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBFZSlyZXR1cm4gMTtpZih2b2lkIDAhPT1FZSlyZXR1cm4gRWUubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGtlKEllLFRlKXtmb3IodmFyIEVlPW5l''@;'; put 'put ''dyBBcnJheShUZSksaGU9MDtoZTxUZTsrK2hlKUVlW2hlXT1JZVtoZV07cmV0dXJuIEVlfWZ1bmN0aW9uIFNlKEllLFRlLEVlLGhlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgSWUub24paGUub25jZT9JZS5vbmNlKFRlLEVlKTpJZS5vbihUZSxFZSk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBl''@;'; put 'put ''b2YgSWUuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImVtaXR0ZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgSWUpO0llLmFkZEV2ZW50TGlzdGVuZXIoVGUsZnVuY3Rpb24gTyh6KXtoZS5v''@;'; put 'put ''bmNlJiZJZS5yZW1vdmVFdmVudExpc3RlbmVyKFRlLE8pLEVlKHopfSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSwiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHF9LHNldDpmdW5jdGlvbihJZSl7aWYoIm51bWJlciIhPXR5cGVv''@;'; put 'put ''ZiBJZXx8SWU8MHx8TihJZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAiZGVmYXVsdE1heExpc3RlbmVycyIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytJZSsiLiIpO3E9SWV9fSksZWUuaW5pdD1mdW5j''@;'; put 'put ''dGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4''@;'; put 'put ''TGlzdGVuZXJzfHx2b2lkIDB9LGVlLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oSWUpe2lmKCJudW1iZXIiIT10eXBlb2YgSWV8fEllPDB8fE4oSWUpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgIm4iIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBh''@;'; put 'put ''IG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrSWUrIi4iKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPUllLHRoaXN9LGVlLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gc2UodGhpcyl9LGVlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKEllKXtm''@;'; put 'put ''b3IodmFyIFRlPVtdLEVlPTE7RWU8YXJndW1lbnRzLmxlbmd0aDtFZSsrKVRlLnB1c2goYXJndW1lbnRzW0VlXSk7dmFyIGhlPSJlcnJvciI9PT1JZSxPPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1PKWhlPWhlJiZ2b2lkIDA9PT1PLmVycm9yO2Vsc2UgaWYoIWhlKXJldHVybiExO2lmKGhl''@;'; put 'put ''KXt2YXIgejtpZihUZS5sZW5ndGg+MCYmKHo9VGVbMF0pLHogaW5zdGFuY2VvZiBFcnJvcil0aHJvdyB6O3ZhciBuZT1uZXcgRXJyb3IoIlVuaGFuZGxlZCBlcnJvci4iKyh6PyIgKCIrei5tZXNzYWdlKyIpIjoiIikpO3Rocm93IG5lLmNvbnRleHQ9eixuZX12YXIgdGU9T1tJZV07aWYodm9p''@;'; put 'put ''ZCAwPT09dGUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRlKVcodGUsdGhpcyxUZSk7ZWxzZXt2YXIgeD10ZS5sZW5ndGgsUD1rZSh0ZSx4KTtmb3IoRWU9MDtFZTx4OysrRWUpVyhQW0VlXSx0aGlzLFRlKX1yZXR1cm4hMH0sZWUucHJvdG90eXBlLm9uPWVlLnByb3RvdHlwZS5h''@;'; put 'put ''ZGRMaXN0ZW5lcj1mdW5jdGlvbihJZSxUZSl7cmV0dXJuIGFlKHRoaXMsSWUsVGUsITEpfSxlZS5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKEllLFRlKXtyZXR1cm4gYWUodGhpcyxJZSxUZSwhMCl9LGVlLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKEllLFRlKXtyZXR1cm4g''@;'; put 'put ''SihUZSksdGhpcy5vbihJZSxkZSh0aGlzLEllLFRlKSksdGhpc30sZWUucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oSWUsVGUpe3JldHVybiBKKFRlKSx0aGlzLnByZXBlbmRMaXN0ZW5lcihJZSxkZSh0aGlzLEllLFRlKSksdGhpc30sZWUucHJvdG90eXBlLm9mZj1l''@;'; put 'put ''ZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oSWUsVGUpe3ZhciBFZSxoZSxPLHosbmU7aWYoSihUZSksdm9pZCAwPT09KGhlPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KEVlPWhlW0llXSkpcmV0dXJuIHRoaXM7aWYoRWU9PT1UZXx8RWUubGlzdGVu''@;'; put 'put ''ZXI9PT1UZSkwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOihkZWxldGUgaGVbSWVdLGhlLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixJZSxFZS5saXN0ZW5lcnx8VGUpKTtlbHNlIGlmKCJmdW5jdGlvbiIh''@;'; put 'put ''PXR5cGVvZiBFZSl7Zm9yKE89LTEsej1FZS5sZW5ndGgtMTt6Pj0wO3otLSlpZihFZVt6XT09PVRlfHxFZVt6XS5saXN0ZW5lcj09PVRlKXtuZT1FZVt6XS5saXN0ZW5lcixPPXo7YnJlYWt9aWYoTzwwKXJldHVybiB0aGlzOzA9PT1PP0VlLnNoaWZ0KCk6ZnVuY3Rpb24odGUseCl7Zm9yKDt4''@;'; put 'put ''KzE8dGUubGVuZ3RoO3grKyl0ZVt4XT10ZVt4KzFdO3RlLnBvcCgpfShFZSxPKSwxPT09RWUubGVuZ3RoJiYoaGVbSWVdPUVlWzBdKSx2b2lkIDAhPT1oZS5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsSWUsbmV8fFRlKX1yZXR1cm4gdGhpc30sZWUucHJvdG90''@;'; put 'put ''eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihJZSl7dmFyIFRlLEVlLGhlO2lmKHZvaWQgMD09PShFZT10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PUVlLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5fZXZlbnRzPU9i''@;'; put 'put ''amVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCk6dm9pZCAwIT09RWVbSWVdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgRWVbSWVdKSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgTyx6''@;'; put 'put ''PU9iamVjdC5rZXlzKEVlKTtmb3IoaGU9MDtoZTx6Lmxlbmd0aDsrK2hlKSJyZW1vdmVMaXN0ZW5lciIhPT0oTz16W2hlXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKE8pO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIiKSx0aGlzLl9ldmVudHM9T2Jq''@;'; put 'put ''ZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoImZ1bmN0aW9uIj09dHlwZW9mKFRlPUVlW0llXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihJZSxUZSk7ZWxzZSBpZih2b2lkIDAhPT1UZSlmb3IoaGU9VGUubGVuZ3RoLTE7aGU+PTA7aGUtLSl0aGlzLnJlbW92ZUxp''@;'; put 'put ''c3RlbmVyKEllLFRlW2hlXSk7cmV0dXJuIHRoaXN9LGVlLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oSWUpe3JldHVybiB2ZSh0aGlzLEllLCEwKX0sZWUucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihJZSl7cmV0dXJuIHZlKHRoaXMsSWUsITEpfSxlZS5saXN0ZW5lckNv''@;'; put 'put ''dW50PWZ1bmN0aW9uKEllLFRlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgSWUubGlzdGVuZXJDb3VudD9JZS5saXN0ZW5lckNvdW50KFRlKTpBZS5jYWxsKEllLFRlKX0sZWUucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9QWUsZWUucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9pZSh0aGlzLl9ldmVudHMpOltdfX0sMzA0ODooVSxRLFopPT57dmFyIGllPVooOTUwOSkuQnVmZmVyLGxlPVooMjMxOCk7VS5leHBvcnRzPWZ1bmN0aW9uKFksVyxOLGVlKXtpZihpZS5pc0J1ZmZlcihZKXx8KFk9aWUuZnJvbShZLCJiaW5hcnki''@;'; put 'put ''KSksVyYmKGllLmlzQnVmZmVyKFcpfHwoVz1pZS5mcm9tKFcsImJpbmFyeSIpKSw4IT09Vy5sZW5ndGgpKXRocm93IG5ldyBSYW5nZUVycm9yKCJzYWx0IHNob3VsZCBiZSBCdWZmZXIgd2l0aCA4IGJ5dGUgbGVuZ3RoIik7Zm9yKHZhciBxPU4vOCxKPWllLmFsbG9jKHEpLHNlPWllLmFsbG9j''@;'; put 'put ''KGVlfHwwKSxhZT1pZS5hbGxvYygwKTtxPjB8fGVlPjA7KXt2YXIgZmU9bmV3IGxlO2ZlLnVwZGF0ZShhZSksZmUudXBkYXRlKFkpLFcmJmZlLnVwZGF0ZShXKSxhZT1mZS5kaWdlc3QoKTt2YXIgZGU9MDtpZihxPjApe3ZhciB2ZT1KLmxlbmd0aC1xO2RlPU1hdGgubWluKHEsYWUubGVuZ3Ro''@;'; put 'put ''KSxhZS5jb3B5KEosdmUsMCxkZSkscS09ZGV9aWYoZGU8YWUubGVuZ3RoJiZlZT4wKXt2YXIgQWU9c2UubGVuZ3RoLWVlLGtlPU1hdGgubWluKGVlLGFlLmxlbmd0aC1kZSk7YWUuY29weShzZSxBZSxkZSxkZStrZSksZWUtPWtlfX1yZXR1cm4gYWUuZmlsbCgwKSx7a2V5OkosaXY6c2V9fX0s''@;'; put 'put ''NDAyOTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDUzMjApLGxlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsWT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFc9ZnVuY3Rpb24ocSxKLHNlKXtmb3IodmFyIGFlPTAsZmU9cS5sZW5ndGg7YWU8ZmU7YWUrKylZLmNh''@;'; put 'put ''bGwocSxhZSkmJihudWxsPT1zZT9KKHFbYWVdLGFlLHEpOkouY2FsbChzZSxxW2FlXSxhZSxxKSl9LE49ZnVuY3Rpb24ocSxKLHNlKXtmb3IodmFyIGFlPTAsZmU9cS5sZW5ndGg7YWU8ZmU7YWUrKyludWxsPT1zZT9KKHEuY2hhckF0KGFlKSxhZSxxKTpKLmNhbGwoc2UscS5jaGFyQXQoYWUp''@;'; put 'put ''LGFlLHEpfSxlZT1mdW5jdGlvbihxLEosc2Upe2Zvcih2YXIgYWUgaW4gcSlZLmNhbGwocSxhZSkmJihudWxsPT1zZT9KKHFbYWVdLGFlLHEpOkouY2FsbChzZSxxW2FlXSxhZSxxKSl9O1UuZXhwb3J0cz1mdW5jdGlvbihxLEosc2Upe2lmKCFpZShKKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJp''@;'; put 'put ''dGVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgYWU7YXJndW1lbnRzLmxlbmd0aD49MyYmKGFlPXNlKSwiW29iamVjdCBBcnJheV0iPT09bGUuY2FsbChxKT9XKHEsSixhZSk6InN0cmluZyI9PXR5cGVvZiBxP04ocSxKLGFlKTplZShxLEosYWUpfX0sNjIzMDpVPT57VS5leHBvcnRz''@;'; put 'put ''PSJvYmplY3QiPT10eXBlb2Ygc2VsZj9zZWxmLkZvcm1EYXRhOndpbmRvdy5Gb3JtRGF0YX0sNTMwMjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQxNTUpLGxlPVooNTEwOCk7Y29uc3QgWT1aKDc3KSxXPVooMjUyMCksTj1aKDEzODEpLm1rZGlyc1N5bmMsZWU9WigzMTgpLnV0''@;'; put 'put ''aW1lc01pbGxpc1N5bmMscT1aKDI3MzMpO2Z1bmN0aW9uIEooZGUsdmUsQWUsa2Upe2NvbnN0IFNlPShrZS5kZXJlZmVyZW5jZT9ZLnN0YXRTeW5jOlkubHN0YXRTeW5jKSh2ZSk7aWYoU2UuaXNEaXJlY3RvcnkoKSlyZXR1cm4gSWU9U2UsRWU9dmUsaGU9QWUsTz1rZSxkZT9mZShFZSxoZSxP''@;'; put 'put ''KTooej1JZS5tb2RlLG5lPUVlLHg9TyxZLm1rZGlyU3luYyh0ZT1oZSksZmUobmUsdGUseCksYWUodGUseikpO3ZhciBJZSxFZSxoZSxPLHosbmUsdGUseDtpZihTZS5pc0ZpbGUoKXx8U2UuaXNDaGFyYWN0ZXJEZXZpY2UoKXx8U2UuaXNCbG9ja0RldmljZSgpKXJldHVybiBmdW5jdGlvbihJ''@;'; put 'put ''ZSxUZSxFZSxoZSxPKXtyZXR1cm4gVGU/ZnVuY3Rpb24oeixuZSx0ZSx4KXtpZih4Lm92ZXJ3cml0ZSlyZXR1cm4gWS51bmxpbmtTeW5jKHRlKSxzZSh6LG5lLHRlLHgpO2lmKHguZXJyb3JPbkV4aXN0KXRocm93IG5ldyBFcnJvcihgJyR7dGV9JyBhbHJlYWR5IGV4aXN0c2ApfShJZSxFZSxo''@;'; put 'put ''ZSxPKTpzZShJZSxFZSxoZSxPKX0oU2UsZGUsdmUsQWUsa2UpO2lmKFNlLmlzU3ltYm9saWNMaW5rKCkpcmV0dXJuIGZ1bmN0aW9uKEllLFRlLEVlLGhlKXtsZXQgTz1ZLnJlYWRsaW5rU3luYyhUZSk7aWYoaGUuZGVyZWZlcmVuY2UmJihPPVcucmVzb2x2ZShpZS5jd2QoKSxPKSksSWUpe2xl''@;'; put 'put ''dCB6O3RyeXt6PVkucmVhZGxpbmtTeW5jKEVlKX1jYXRjaChuZSl7aWYoIkVJTlZBTCI9PT1uZS5jb2RlfHwiVU5LTk9XTiI9PT1uZS5jb2RlKXJldHVybiBZLnN5bWxpbmtTeW5jKE8sRWUpO3Rocm93IG5lfWlmKGhlLmRlcmVmZXJlbmNlJiYoej1XLnJlc29sdmUoaWUuY3dkKCkseikpLHEu''@;'; put 'put ''aXNTcmNTdWJkaXIoTyx6KSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb3B5ICcke099JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke3p9Jy5gKTtpZihZLnN0YXRTeW5jKEVlKS5pc0RpcmVjdG9yeSgpJiZxLmlzU3JjU3ViZGlyKHosTykpdGhyb3cgbmV3IEVycm9yKGBDYW5u''@;'; put 'put ''b3Qgb3ZlcndyaXRlICcke3p9JyB3aXRoICcke099Jy5gKTtyZXR1cm4gZnVuY3Rpb24obmUsdGUpe3JldHVybiBZLnVubGlua1N5bmModGUpLFkuc3ltbGlua1N5bmMobmUsdGUpfShPLEVlKX1yZXR1cm4gWS5zeW1saW5rU3luYyhPLEVlKX0oZGUsdmUsQWUsa2UpO3Rocm93IFNlLmlzU29j''@;'; put 'put ''a2V0KCk/bmV3IEVycm9yKGBDYW5ub3QgY29weSBhIHNvY2tldCBmaWxlOiAke3ZlfWApOlNlLmlzRklGTygpP25ldyBFcnJvcihgQ2Fubm90IGNvcHkgYSBGSUZPIHBpcGU6ICR7dmV9YCk6bmV3IEVycm9yKGBVbmtub3duIGZpbGU6ICR7dmV9YCl9ZnVuY3Rpb24gc2UoZGUsdmUsQWUsa2Up''@;'; put 'put ''e3JldHVybiBZLmNvcHlGaWxlU3luYyh2ZSxBZSksa2UucHJlc2VydmVUaW1lc3RhbXBzJiYoSWU9dmUsVGU9QWUsMD09KDEyOCYoU2U9ZGUubW9kZSkpJiZhZShUZSwxMjh8U2UpLGZ1bmN0aW9uKEVlLGhlKXtjb25zdCBPPVkuc3RhdFN5bmMoRWUpO2VlKGhlLE8uYXRpbWUsTy5tdGltZSl9''@;'; put 'put ''KEllLFRlKSksYWUoQWUsZGUubW9kZSk7dmFyIFNlLEllLFRlfWZ1bmN0aW9uIGFlKGRlLHZlKXtyZXR1cm4gWS5jaG1vZFN5bmMoZGUsdmUpfWZ1bmN0aW9uIGZlKGRlLHZlLEFlKXtZLnJlYWRkaXJTeW5jKGRlKS5mb3JFYWNoKGtlPT5mdW5jdGlvbihTZSxJZSxUZSxFZSl7Y29uc3QgaGU9''@;'; put 'put ''Vy5qb2luKEllLFNlKSxPPVcuam9pbihUZSxTZSkse2Rlc3RTdGF0Onp9PXEuY2hlY2tQYXRoc1N5bmMoaGUsTywiY29weSIsRWUpO3JldHVybiBmdW5jdGlvbihuZSx0ZSx4LFApe2lmKCFQLmZpbHRlcnx8UC5maWx0ZXIodGUseCkpcmV0dXJuIEoobmUsdGUseCxQKX0oeixoZSxPLEVlKX0o''@;'; put 'put ''a2UsZGUsdmUsQWUpKX1VLmV4cG9ydHM9ZnVuY3Rpb24oZGUsdmUsQWUpeyJmdW5jdGlvbiI9PXR5cGVvZiBBZSYmKEFlPXtmaWx0ZXI6QWV9KSwoQWU9QWV8fHt9KS5jbG9iYmVyPSEoImNsb2JiZXIiaW4gQWUpfHwhIUFlLmNsb2JiZXIsQWUub3ZlcndyaXRlPSJvdmVyd3JpdGUiaW4gQWU/''@;'; put 'put ''ISFBZS5vdmVyd3JpdGU6QWUuY2xvYmJlcixBZS5wcmVzZXJ2ZVRpbWVzdGFtcHMmJiJpYTMyIj09PWllLmFyY2gmJmxlLndhcm4oImZzLWV4dHJhOiBVc2luZyB0aGUgcHJlc2VydmVUaW1lc3RhbXBzIG9wdGlvbiBpbiAzMi1iaXQgbm9kZSBpcyBub3QgcmVjb21tZW5kZWQ7XG5cbiAgICBz''@;'; put 'put ''ZWUgaHR0cHM6Ly9naXRodWIuY29tL2pwcmljaGFyZHNvbi9ub2RlLWZzLWV4dHJhL2lzc3Vlcy8yNjkiKTtjb25zdHtzcmNTdGF0OmtlLGRlc3RTdGF0OlNlfT1xLmNoZWNrUGF0aHNTeW5jKGRlLHZlLCJjb3B5IixBZSk7cmV0dXJuIHEuY2hlY2tQYXJlbnRQYXRoc1N5bmMoZGUsa2UsdmUs''@;'; put 'put ''ImNvcHkiKSxmdW5jdGlvbihJZSxUZSxFZSxoZSl7aWYoaGUuZmlsdGVyJiYhaGUuZmlsdGVyKFRlLEVlKSlyZXR1cm47Y29uc3QgTz1XLmRpcm5hbWUoRWUpO3JldHVybiBZLmV4aXN0c1N5bmMoTyl8fE4oTyksSihJZSxUZSxFZSxoZSl9KFNlLGRlLHZlLEFlKX19LDg2OTA6KFUsUSxaKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9e2NvcHlTeW5jOlooNTMwMil9fSw3MTg5OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KTtjb25zdCBZPVooNzcpLFc9WigyNTIwKSxOPVooMTM4MSkubWtkaXJzLGVlPVooOTI1NykucGF0aEV4aXN0cyxxPVoo''@;'; put 'put ''MzE4KS51dGltZXNNaWxsaXMsSj1aKDI3MzMpO2Z1bmN0aW9uIHNlKFRlLEVlLGhlLE8seil7Y29uc3QgbmU9Vy5kaXJuYW1lKGhlKTtlZShuZSwodGUseCk9PnRlP3oodGUpOng/ZmUoVGUsRWUsaGUsTyx6KTp2b2lkIE4obmUsUD0+UD96KFApOmZlKFRlLEVlLGhlLE8seikpKX1mdW5jdGlv''@;'; put 'put ''biBhZShUZSxFZSxoZSxPLHosbmUpe1Byb21pc2UucmVzb2x2ZSh6LmZpbHRlcihoZSxPKSkudGhlbih0ZT0+dGU/VGUoRWUsaGUsTyx6LG5lKTpuZSgpLHRlPT5uZSh0ZSkpfWZ1bmN0aW9uIGZlKFRlLEVlLGhlLE8seil7KE8uZGVyZWZlcmVuY2U/WS5zdGF0OlkubHN0YXQpKEVlLChuZSx0''@;'; put 'put ''ZSk9PntyZXR1cm4gbmU/eihuZSk6dGUuaXNEaXJlY3RvcnkoKT8oeD10ZSxWPUVlLFQ9aGUsUz1PLEY9eixUZT9rZShWLFQsUyxGKTooeWU9eC5tb2RlLENlPVYsUGU9UyxRZT1GLHZvaWQgWS5ta2RpcihEZT1ULCRlPT57aWYoJGUpcmV0dXJuIFFlKCRlKTtrZShDZSxEZSxQZSxndD0+Z3Q/''@;'; put 'put ''UWUoZ3QpOkFlKERlLHllLFFlKSl9KSkpOnRlLmlzRmlsZSgpfHx0ZS5pc0NoYXJhY3RlckRldmljZSgpfHx0ZS5pc0Jsb2NrRGV2aWNlKCk/ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe3JldHVybiBQP2Z1bmN0aW9uKHllLENlLERlLFBlLFFlKXtpZighUGUub3ZlcndyaXRlKXJldHVybiBQZS5l''@;'; put 'put ''cnJvck9uRXhpc3Q/UWUobmV3IEVycm9yKGAnJHtEZX0nIGFscmVhZHkgZXhpc3RzYCkpOlFlKCk7WS51bmxpbmsoRGUsJGU9PiRlP1FlKCRlKTpkZSh5ZSxDZSxEZSxQZSxRZSkpfSh4LFYsVCxTLEYpOmRlKHgsVixULFMsRil9KHRlLFRlLEVlLGhlLE8seik6dGUuaXNTeW1ib2xpY0xpbmso''@;'; put 'put ''KT9mdW5jdGlvbiBJZShUZSxFZSxoZSxPLHope1kucmVhZGxpbmsoRWUsKG5lLHRlKT0+bmU/eihuZSk6KE8uZGVyZWZlcmVuY2UmJih0ZT1XLnJlc29sdmUoaWUuY3dkKCksdGUpKSxUZT92b2lkIFkucmVhZGxpbmsoaGUsKHgsUCk9PntyZXR1cm4geD8iRUlOVkFMIj09PXguY29kZXx8IlVO''@;'; put 'put ''S05PV04iPT09eC5jb2RlP1kuc3ltbGluayh0ZSxoZSx6KTp6KHgpOihPLmRlcmVmZXJlbmNlJiYoUD1XLnJlc29sdmUoaWUuY3dkKCksUCkpLEouaXNTcmNTdWJkaXIodGUsUCk/eihuZXcgRXJyb3IoYENhbm5vdCBjb3B5ICcke3RlfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAn''@;'; put 'put ''JHtQfScuYCkpOlRlLmlzRGlyZWN0b3J5KCkmJkouaXNTcmNTdWJkaXIoUCx0ZSk/eihuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgJyR7UH0nIHdpdGggJyR7dGV9Jy5gKSk6KFY9dGUsUz16LHZvaWQgWS51bmxpbmsoVD1oZSxGPT5GP1MoRik6WS5zeW1saW5rKFYsVCxTKSkpKTt2YXIg''@;'; put 'put ''VixULFN9KTpZLnN5bWxpbmsodGUsaGUseikpKX0oVGUsRWUsaGUsTyx6KTp0ZS5pc1NvY2tldCgpP3oobmV3IEVycm9yKGBDYW5ub3QgY29weSBhIHNvY2tldCBmaWxlOiAke0VlfWApKTp0ZS5pc0ZJRk8oKT96KG5ldyBFcnJvcihgQ2Fubm90IGNvcHkgYSBGSUZPIHBpcGU6ICR7RWV9YCkp''@;'; put 'put ''OnoobmV3IEVycm9yKGBVbmtub3duIGZpbGU6ICR7RWV9YCkpO3ZhciB4LFYsVCxTLEYseWUsQ2UsRGUsUGUsUWV9KX1mdW5jdGlvbiBkZShUZSxFZSxoZSxPLHope1kuY29weUZpbGUoRWUsaGUsbmU9PntyZXR1cm4gbmU/eihuZSk6Ty5wcmVzZXJ2ZVRpbWVzdGFtcHM/KHg9RWUsUD1oZSxW''@;'; put 'put ''PXosMD09KDEyOCYodGU9VGUubW9kZSkpP0FlKFAsMTI4fHRlLFQ9PlQ/VihUKTp2ZSh0ZSx4LFAsVikpOnZlKHRlLHgsUCxWKSk6QWUoaGUsVGUubW9kZSx6KTt2YXIgdGUseCxQLFZ9KX1mdW5jdGlvbiB2ZShUZSxFZSxoZSxPKXt2YXIgbmUsdGU7bmU9aGUsdGU9ej0+ej9PKHopOkFlKGhl''@;'; put 'put ''LFRlLE8pLFkuc3RhdChFZSwoeCxQKT0+eD90ZSh4KTpxKG5lLFAuYXRpbWUsUC5tdGltZSx0ZSkpfWZ1bmN0aW9uIEFlKFRlLEVlLGhlKXtyZXR1cm4gWS5jaG1vZChUZSxFZSxoZSl9ZnVuY3Rpb24ga2UoVGUsRWUsaGUsTyl7WS5yZWFkZGlyKFRlLCh6LG5lKT0+ej9PKHopOlNlKG5lLFRl''@;'; put 'put ''LEVlLGhlLE8pKX1mdW5jdGlvbiBTZShUZSxFZSxoZSxPLHope2NvbnN0IG5lPVRlLnBvcCgpO3JldHVybiBuZT9mdW5jdGlvbih0ZSx4LFAsVixULFMpe2NvbnN0IEY9Vy5qb2luKFAseCkseWU9Vy5qb2luKFYseCk7Si5jaGVja1BhdGhzKEYseWUsImNvcHkiLFQsKENlLERlKT0+e2lmKENl''@;'; put 'put ''KXJldHVybiBTKENlKTtjb25zdHtkZXN0U3RhdDpQZX09RGU7dmFyIFFlLCRlLGd0LHl0LHB0O1FlPVBlLCRlPUYsZ3Q9eWUscHQ9UWU9PlFlP1MoUWUpOlNlKHRlLFAsVixULFMpLCh5dD1UKS5maWx0ZXI/YWUoZmUsUWUsJGUsZ3QseXQscHQpOmZlKFFlLCRlLGd0LHl0LHB0KX0pfShUZSxu''@;'; put 'put ''ZSxFZSxoZSxPLHopOnooKX1VLmV4cG9ydHM9ZnVuY3Rpb24oVGUsRWUsaGUsTyl7ImZ1bmN0aW9uIiE9dHlwZW9mIGhlfHxPPyJmdW5jdGlvbiI9PXR5cGVvZiBoZSYmKGhlPXtmaWx0ZXI6aGV9KTooTz1oZSxoZT17fSksTz1PfHxmdW5jdGlvbigpe30sKGhlPWhlfHx7fSkuY2xvYmJlcj0h''@;'; put 'put ''KCJjbG9iYmVyImluIGhlKXx8ISFoZS5jbG9iYmVyLGhlLm92ZXJ3cml0ZT0ib3ZlcndyaXRlImluIGhlPyEhaGUub3ZlcndyaXRlOmhlLmNsb2JiZXIsaGUucHJlc2VydmVUaW1lc3RhbXBzJiYiaWEzMiI9PT1pZS5hcmNoJiZsZS53YXJuKCJmcy1leHRyYTogVXNpbmcgdGhlIHByZXNlcnZl''@;'; put 'put ''VGltZXN0YW1wcyBvcHRpb24gaW4gMzItYml0IG5vZGUgaXMgbm90IHJlY29tbWVuZGVkO1xuXG4gICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHJpY2hhcmRzb24vbm9kZS1mcy1leHRyYS9pc3N1ZXMvMjY5IiksSi5jaGVja1BhdGhzKFRlLEVlLCJjb3B5IixoZSwoeixuZSk9PntpZih6''@;'; put 'put ''KXJldHVybiBPKHopO2NvbnN0e3NyY1N0YXQ6dGUsZGVzdFN0YXQ6eH09bmU7Si5jaGVja1BhcmVudFBhdGhzKFRlLHRlLEVlLCJjb3B5IixQPT5QP08oUCk6aGUuZmlsdGVyP2FlKHNlLHgsVGUsRWUsaGUsTyk6c2UoeCxUZSxFZSxoZSxPKSl9KX19LDY0NjQ6KFUsUSxaKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijtjb25zdCBpZT1aKDg5ODEpLmZyb21DYWxsYmFjaztVLmV4cG9ydHM9e2NvcHk6aWUoWig3MTg5KSl9fSw1NTkwOihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9Wig4OTgxKS5mcm9tUHJvbWlzZSxsZT1aKDc3NDkpLFk9WigyNTIwKSxXPVooMTM4MSksTj1aKDQ1NDIpLGVl''@;'; put 'put ''PWllKGZ1bmN0aW9uKCl7dmFyIEo9Z2UoZnVuY3Rpb24qKHNlKXtsZXQgYWU7dHJ5e2FlPXlpZWxkIGxlLnJlYWRkaXIoc2UpfWNhdGNoKGZlKXtyZXR1cm4gVy5ta2RpcnMoc2UpfXJldHVybiBQcm9taXNlLmFsbChhZS5tYXAoZmU9Pk4ucmVtb3ZlKFkuam9pbihzZSxmZSkpKSl9KTtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oc2Upe3JldHVybiBKLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpO2Z1bmN0aW9uIHEoSil7bGV0IHNlO3RyeXtzZT1sZS5yZWFkZGlyU3luYyhKKX1jYXRjaChhZSl7cmV0dXJuIFcubWtkaXJzU3luYyhKKX1zZS5mb3JFYWNoKGFlPT57YWU9WS5qb2luKEosYWUpLE4u''@;'; put 'put ''cmVtb3ZlU3luYyhhZSl9KX1VLmV4cG9ydHM9e2VtcHR5RGlyU3luYzpxLGVtcHR5ZGlyU3luYzpxLGVtcHR5RGlyOmVlLGVtcHR5ZGlyOmVlfX0sNjUzMDooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooODk4MSkuZnJvbUNhbGxiYWNrLGxlPVooMjUyMCksWT1aKDc3KSxXPVoo''@;'; put 'put ''MTM4MSk7VS5leHBvcnRzPXtjcmVhdGVGaWxlOmllKGZ1bmN0aW9uKE4sZWUpe2Z1bmN0aW9uIHEoKXtZLndyaXRlRmlsZShOLCIiLEo9PntpZihKKXJldHVybiBlZShKKTtlZSgpfSl9WS5zdGF0KE4sKEosc2UpPT57aWYoIUomJnNlLmlzRmlsZSgpKXJldHVybiBlZSgpO2NvbnN0IGFlPWxl''@;'; put 'put ''LmRpcm5hbWUoTik7WS5zdGF0KGFlLChmZSxkZSk9PntpZihmZSlyZXR1cm4iRU5PRU5UIj09PWZlLmNvZGU/Vy5ta2RpcnMoYWUsdmU9PntpZih2ZSlyZXR1cm4gZWUodmUpO3EoKX0pOmVlKGZlKTtkZS5pc0RpcmVjdG9yeSgpP3EoKTpZLnJlYWRkaXIoYWUsdmU9PntpZih2ZSlyZXR1cm4g''@;'; put 'put ''ZWUodmUpfSl9KX0pfSksY3JlYXRlRmlsZVN5bmM6ZnVuY3Rpb24oTil7bGV0IGVlO3RyeXtlZT1ZLnN0YXRTeW5jKE4pfWNhdGNoKEope31pZihlZSYmZWUuaXNGaWxlKCkpcmV0dXJuO2NvbnN0IHE9bGUuZGlybmFtZShOKTt0cnl7WS5zdGF0U3luYyhxKS5pc0RpcmVjdG9yeSgpfHxZLnJl''@;'; put 'put ''YWRkaXJTeW5jKHEpfWNhdGNoKEope2lmKCFKfHwiRU5PRU5UIiE9PUouY29kZSl0aHJvdyBKO1cubWtkaXJzU3luYyhxKX1ZLndyaXRlRmlsZVN5bmMoTiwiIil9fX0sMTcyMDooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNjUzMCksbGU9Wig0MTQ3KSxZPVooMzYzNSk7VS5l''@;'; put 'put ''eHBvcnRzPXtjcmVhdGVGaWxlOmllLmNyZWF0ZUZpbGUsY3JlYXRlRmlsZVN5bmM6aWUuY3JlYXRlRmlsZVN5bmMsZW5zdXJlRmlsZTppZS5jcmVhdGVGaWxlLGVuc3VyZUZpbGVTeW5jOmllLmNyZWF0ZUZpbGVTeW5jLGNyZWF0ZUxpbms6bGUuY3JlYXRlTGluayxjcmVhdGVMaW5rU3luYzps''@;'; put 'put ''ZS5jcmVhdGVMaW5rU3luYyxlbnN1cmVMaW5rOmxlLmNyZWF0ZUxpbmssZW5zdXJlTGlua1N5bmM6bGUuY3JlYXRlTGlua1N5bmMsY3JlYXRlU3ltbGluazpZLmNyZWF0ZVN5bWxpbmssY3JlYXRlU3ltbGlua1N5bmM6WS5jcmVhdGVTeW1saW5rU3luYyxlbnN1cmVTeW1saW5rOlkuY3JlYXRl''@;'; put 'put ''U3ltbGluayxlbnN1cmVTeW1saW5rU3luYzpZLmNyZWF0ZVN5bWxpbmtTeW5jfX0sNDE0NzooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooODk4MSkuZnJvbUNhbGxiYWNrLGxlPVooMjUyMCksWT1aKDc3KSxXPVooMTM4MSksTj1aKDkyNTcpLnBhdGhFeGlzdHMse2FyZUlkZW50''@;'; put 'put ''aWNhbDplZX09WigyNzMzKTtVLmV4cG9ydHM9e2NyZWF0ZUxpbms6aWUoZnVuY3Rpb24ocSxKLHNlKXtmdW5jdGlvbiBhZShmZSxkZSl7WS5saW5rKGZlLGRlLHZlPT57aWYodmUpcmV0dXJuIHNlKHZlKTtzZShudWxsKX0pfVkubHN0YXQoSiwoZmUsZGUpPT57WS5sc3RhdChxLCh2ZSxBZSk9''@;'; put 'put ''PntpZih2ZSlyZXR1cm4gdmUubWVzc2FnZT12ZS5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlTGluayIpLHNlKHZlKTtpZihkZSYmZWUoQWUsZGUpKXJldHVybiBzZShudWxsKTtjb25zdCBrZT1sZS5kaXJuYW1lKEopO04oa2UsKFNlLEllKT0+U2U/c2UoU2UpOkllP2FlKHEsSik6''@;'; put 'put ''dm9pZCBXLm1rZGlycyhrZSxUZT0+e2lmKFRlKXJldHVybiBzZShUZSk7YWUocSxKKX0pKX0pfSl9KSxjcmVhdGVMaW5rU3luYzpmdW5jdGlvbihxLEope2xldCBzZTt0cnl7c2U9WS5sc3RhdFN5bmMoSil9Y2F0Y2goZmUpe310cnl7Y29uc3QgZmU9WS5sc3RhdFN5bmMocSk7aWYoc2UmJmVl''@;'; put 'put ''KGZlLHNlKSlyZXR1cm59Y2F0Y2goZmUpe3Rocm93IGZlLm1lc3NhZ2U9ZmUubWVzc2FnZS5yZXBsYWNlKCJsc3RhdCIsImVuc3VyZUxpbmsiKSxmZX1jb25zdCBhZT1sZS5kaXJuYW1lKEopO3JldHVybiBZLmV4aXN0c1N5bmMoYWUpfHxXLm1rZGlyc1N5bmMoYWUpLFkubGlua1N5bmMocSxK''@;'; put 'put ''KX19fSw2MDcyOihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9WigyNTIwKSxsZT1aKDc3KSxZPVooOTI1NykucGF0aEV4aXN0cztVLmV4cG9ydHM9e3N5bWxpbmtQYXRoczpmdW5jdGlvbihXLE4sZWUpe2lmKGllLmlzQWJzb2x1dGUoVykpcmV0dXJuIGxlLmxzdGF0KFcscT0+cT8o''@;'; put 'put ''cS5tZXNzYWdlPXEubWVzc2FnZS5yZXBsYWNlKCJsc3RhdCIsImVuc3VyZVN5bWxpbmsiKSxlZShxKSk6ZWUobnVsbCx7dG9Dd2Q6Vyx0b0RzdDpXfSkpO3tjb25zdCBxPWllLmRpcm5hbWUoTiksSj1pZS5qb2luKHEsVyk7cmV0dXJuIFkoSiwoc2UsYWUpPT5zZT9lZShzZSk6YWU/ZWUobnVs''@;'; put 'put ''bCx7dG9Dd2Q6Six0b0RzdDpXfSk6bGUubHN0YXQoVyxmZT0+ZmU/KGZlLm1lc3NhZ2U9ZmUubWVzc2FnZS5yZXBsYWNlKCJsc3RhdCIsImVuc3VyZVN5bWxpbmsiKSxlZShmZSkpOmVlKG51bGwse3RvQ3dkOlcsdG9Ec3Q6aWUucmVsYXRpdmUocSxXKX0pKSl9fSxzeW1saW5rUGF0aHNTeW5j''@;'; put 'put ''OmZ1bmN0aW9uKFcsTil7bGV0IGVlO2lmKGllLmlzQWJzb2x1dGUoVykpe2lmKGVlPWxlLmV4aXN0c1N5bmMoVyksIWVlKXRocm93IG5ldyBFcnJvcigiYWJzb2x1dGUgc3JjcGF0aCBkb2VzIG5vdCBleGlzdCIpO3JldHVybnt0b0N3ZDpXLHRvRHN0Old9fXtjb25zdCBxPWllLmRpcm5hbWUo''@;'; put 'put ''TiksSj1pZS5qb2luKHEsVyk7aWYoZWU9bGUuZXhpc3RzU3luYyhKKSxlZSlyZXR1cm57dG9Dd2Q6Six0b0RzdDpXfTtpZihlZT1sZS5leGlzdHNTeW5jKFcpLCFlZSl0aHJvdyBuZXcgRXJyb3IoInJlbGF0aXZlIHNyY3BhdGggZG9lcyBub3QgZXhpc3QiKTtyZXR1cm57dG9Dd2Q6Vyx0b0Rz''@;'; put 'put ''dDppZS5yZWxhdGl2ZShxLFcpfX19fX0sOTI1OTooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNzcpO1UuZXhwb3J0cz17c3ltbGlua1R5cGU6ZnVuY3Rpb24obGUsWSxXKXtpZihXPSJmdW5jdGlvbiI9PXR5cGVvZiBZP1k6VyxZPSJmdW5jdGlvbiIhPXR5cGVvZiBZJiZZKXJl''@;'; put 'put ''dHVybiBXKG51bGwsWSk7aWUubHN0YXQobGUsKE4sZWUpPT57aWYoTilyZXR1cm4gVyhudWxsLCJmaWxlIik7WT1lZSYmZWUuaXNEaXJlY3RvcnkoKT8iZGlyIjoiZmlsZSIsVyhudWxsLFkpfSl9LHN5bWxpbmtUeXBlU3luYzpmdW5jdGlvbihsZSxZKXtsZXQgVztpZihZKXJldHVybiBZO3Ry''@;'; put 'put ''eXtXPWllLmxzdGF0U3luYyhsZSl9Y2F0Y2goTil7cmV0dXJuImZpbGUifXJldHVybiBXJiZXLmlzRGlyZWN0b3J5KCk/ImRpciI6ImZpbGUifX19LDM2MzU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDg5ODEpLmZyb21DYWxsYmFjayxsZT1aKDI1MjApLFk9Wig3NzQ5KSxX''@;'; put 'put ''PVooMTM4MSksTj1XLm1rZGlycyxlZT1XLm1rZGlyc1N5bmMscT1aKDYwNzIpLEo9cS5zeW1saW5rUGF0aHMsc2U9cS5zeW1saW5rUGF0aHNTeW5jLGFlPVooOTI1OSksZmU9YWUuc3ltbGlua1R5cGUsZGU9YWUuc3ltbGlua1R5cGVTeW5jLHZlPVooOTI1NykucGF0aEV4aXN0cyx7YXJlSWRl''@;'; put 'put ''bnRpY2FsOkFlfT1aKDI3MzMpO2Z1bmN0aW9uIGtlKFNlLEllLFRlLEVlKXtKKFNlLEllLChoZSxPKT0+e2lmKGhlKXJldHVybiBFZShoZSk7U2U9Ty50b0RzdCxmZShPLnRvQ3dkLFRlLCh6LG5lKT0+e2lmKHopcmV0dXJuIEVlKHopO2NvbnN0IHRlPWxlLmRpcm5hbWUoSWUpO3ZlKHRlLCh4''@;'; put 'put ''LFApPT54P0VlKHgpOlA/WS5zeW1saW5rKFNlLEllLG5lLEVlKTp2b2lkIE4odGUsVj0+e2lmKFYpcmV0dXJuIEVlKFYpO1kuc3ltbGluayhTZSxJZSxuZSxFZSl9KSl9KX0pfVUuZXhwb3J0cz17Y3JlYXRlU3ltbGluazppZShmdW5jdGlvbihTZSxJZSxUZSxFZSl7RWU9ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFRlP1RlOkVlLFRlPSJmdW5jdGlvbiIhPXR5cGVvZiBUZSYmVGUsWS5sc3RhdChJZSwoaGUsTyk9PnshaGUmJk8uaXNTeW1ib2xpY0xpbmsoKT9Qcm9taXNlLmFsbChbWS5zdGF0KFNlKSxZLnN0YXQoSWUpXSkudGhlbigoW3osbmVdKT0+e2lmKEFlKHosbmUpKXJldHVybiBFZShu''@;'; put 'put ''dWxsKTtrZShTZSxJZSxUZSxFZSl9KTprZShTZSxJZSxUZSxFZSl9KX0pLGNyZWF0ZVN5bWxpbmtTeW5jOmZ1bmN0aW9uKFNlLEllLFRlKXtsZXQgRWU7dHJ5e0VlPVkubHN0YXRTeW5jKEllKX1jYXRjaCh6KXt9aWYoRWUmJkVlLmlzU3ltYm9saWNMaW5rKCkpe2NvbnN0IHo9WS5zdGF0U3lu''@;'; put 'put ''YyhTZSksbmU9WS5zdGF0U3luYyhJZSk7aWYoQWUoeixuZSkpcmV0dXJufWNvbnN0IGhlPXNlKFNlLEllKTtTZT1oZS50b0RzdCxUZT1kZShoZS50b0N3ZCxUZSk7Y29uc3QgTz1sZS5kaXJuYW1lKEllKTtyZXR1cm4gWS5leGlzdHNTeW5jKE8pfHxlZShPKSxZLnN5bWxpbmtTeW5jKFNlLEll''@;'; put 'put ''LFRlKX19fSw3NzQ5OihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9Wig4OTgxKS5mcm9tQ2FsbGJhY2ssbGU9Wig3NyksWT1bImFjY2VzcyIsImFwcGVuZEZpbGUiLCJjaG1vZCIsImNob3duIiwiY2xvc2UiLCJjb3B5RmlsZSIsImZjaG1vZCIsImZjaG93biIsImZkYXRhc3luYyIs''@;'; put 'put ''ImZzdGF0IiwiZnN5bmMiLCJmdHJ1bmNhdGUiLCJmdXRpbWVzIiwibGNobW9kIiwibGNob3duIiwibGluayIsImxzdGF0IiwibWtkaXIiLCJta2R0ZW1wIiwib3BlbiIsIm9wZW5kaXIiLCJyZWFkZGlyIiwicmVhZEZpbGUiLCJyZWFkbGluayIsInJlYWxwYXRoIiwicmVuYW1lIiwicm0iLCJy''@;'; put 'put ''bWRpciIsInN0YXQiLCJzeW1saW5rIiwidHJ1bmNhdGUiLCJ1bmxpbmsiLCJ1dGltZXMiLCJ3cml0ZUZpbGUiXS5maWx0ZXIoVz0+ImZ1bmN0aW9uIj09dHlwZW9mIGxlW1ddKTtPYmplY3QuYXNzaWduKFEsbGUpLFkuZm9yRWFjaChXPT57UVtXXT1pZShsZVtXXSl9KSxRLnJlYWxwYXRoLm5h''@;'; put 'put ''dGl2ZT1pZShsZS5yZWFscGF0aC5uYXRpdmUpLFEuZXhpc3RzPWZ1bmN0aW9uKFcsTil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIE4/bGUuZXhpc3RzKFcsTik6bmV3IFByb21pc2UoZWU9PmxlLmV4aXN0cyhXLGVlKSl9LFEucmVhZD1mdW5jdGlvbihXLE4sZWUscSxKLHNlKXtyZXR1cm4i''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2Ygc2U/bGUucmVhZChXLE4sZWUscSxKLHNlKTpuZXcgUHJvbWlzZSgoYWUsZmUpPT57bGUucmVhZChXLE4sZWUscSxKLChkZSx2ZSxBZSk9PntpZihkZSlyZXR1cm4gZmUoZGUpO2FlKHtieXRlc1JlYWQ6dmUsYnVmZmVyOkFlfSl9KX0pfSxRLndyaXRlPWZ1bmN0''@;'; put 'put ''aW9uKFcsTiwuLi5lZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGVlW2VlLmxlbmd0aC0xXT9sZS53cml0ZShXLE4sLi4uZWUpOm5ldyBQcm9taXNlKChxLEopPT57bGUud3JpdGUoVyxOLC4uLmVlLChzZSxhZSxmZSk9PntpZihzZSlyZXR1cm4gSihzZSk7cSh7Ynl0ZXNXcml0dGVuOmFl''@;'; put 'put ''LGJ1ZmZlcjpmZX0pfSl9KX0sImZ1bmN0aW9uIj09dHlwZW9mIGxlLndyaXRldiYmKFEud3JpdGV2PWZ1bmN0aW9uKFcsTiwuLi5lZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGVlW2VlLmxlbmd0aC0xXT9sZS53cml0ZXYoVyxOLC4uLmVlKTpuZXcgUHJvbWlzZSgocSxKKT0+e2xlLndy''@;'; put 'put ''aXRldihXLE4sLi4uZWUsKHNlLGFlLGZlKT0+e2lmKHNlKXJldHVybiBKKHNlKTtxKHtieXRlc1dyaXR0ZW46YWUsYnVmZmVyczpmZX0pfSl9KX0pfSw1Njc0OihVLFEsWik9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPXBzKHBzKHBzKHBzKHBzKHBzKHBzKHBzKHBzKHBzKHBzKHBzKHt9LFoo''@;'; put 'put ''Nzc0OSkpLFooODY5MCkpLFooNjQ2NCkpLFooNTU5MCkpLFooMTcyMCkpLFooNjU3MykpLFooMTM4MSkpLFooNDAyNikpLFooNTMwKSksWigxMzE1KSksWig5MjU3KSksWig0NTQyKSl9LDY1NzM6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDg5ODEpLmZyb21Qcm9taXNlLGxl''@;'; put 'put ''PVooNzE4Myk7bGUub3V0cHV0SnNvbj1pZShaKDM1MDgpKSxsZS5vdXRwdXRKc29uU3luYz1aKDk1NzgpLGxlLm91dHB1dEpTT049bGUub3V0cHV0SnNvbixsZS5vdXRwdXRKU09OU3luYz1sZS5vdXRwdXRKc29uU3luYyxsZS53cml0ZUpTT049bGUud3JpdGVKc29uLGxlLndyaXRlSlNPTlN5''@;'; put 'put ''bmM9bGUud3JpdGVKc29uU3luYyxsZS5yZWFkSlNPTj1sZS5yZWFkSnNvbixsZS5yZWFkSlNPTlN5bmM9bGUucmVhZEpzb25TeW5jLFUuZXhwb3J0cz1sZX0sNzE4MzooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNjgxMyk7VS5leHBvcnRzPXtyZWFkSnNvbjppZS5yZWFkRmls''@;'; put 'put ''ZSxyZWFkSnNvblN5bmM6aWUucmVhZEZpbGVTeW5jLHdyaXRlSnNvbjppZS53cml0ZUZpbGUsd3JpdGVKc29uU3luYzppZS53cml0ZUZpbGVTeW5jfX0sOTU3ODooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0e3N0cmluZ2lmeTppZX09Wig2NzgwKSx7b3V0cHV0RmlsZVN5bmM6bGV9PVoo''@;'; put 'put ''MTMxNSk7VS5leHBvcnRzPWZ1bmN0aW9uKFksVyxOKXtjb25zdCBlZT1pZShXLE4pO2xlKFksZWUsTil9fSwzNTA4OihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3R7c3RyaW5naWZ5OmllfT1aKDY3ODApLHtvdXRwdXRGaWxlOmxlfT1aKDEzMTUpO1UuZXhwb3J0cz1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBZPWdlKGZ1bmN0aW9uKihXLE4sZWU9e30pe2NvbnN0IHE9aWUoTixlZSk7eWllbGQgbGUoVyxxLGVlKX0pO3JldHVybiBmdW5jdGlvbihXLE4pe3JldHVybiBZLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCl9LDEzODE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDg5ODEp''@;'; put 'put ''LmZyb21Qcm9taXNlLHttYWtlRGlyOmxlLG1ha2VEaXJTeW5jOll9PVooODIzMyksVz1pZShsZSk7VS5leHBvcnRzPXtta2RpcnM6Vyxta2RpcnNTeW5jOlksbWtkaXJwOlcsbWtkaXJwU3luYzpZLGVuc3VyZURpcjpXLGVuc3VyZURpclN5bmM6WX19LDgyMzM6KFUsUSxaKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijtjb25zdCBpZT1aKDc3NDkpLHtjaGVja1BhdGg6bGV9PVooMzQ2OCksWT1XPT4ibnVtYmVyIj09dHlwZW9mIFc/Vzpwcyh7bW9kZTo1MTF9LFcpLm1vZGU7VS5leHBvcnRzLm1ha2VEaXI9ZnVuY3Rpb24oKXt2YXIgVz1nZShmdW5jdGlvbiooTixlZSl7cmV0dXJuIGxlKE4pLGllLm1r''@;'; put 'put ''ZGlyKE4se21vZGU6WShlZSkscmVjdXJzaXZlOiEwfSl9KTtyZXR1cm4gZnVuY3Rpb24oTixlZSl7cmV0dXJuIFcuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxVLmV4cG9ydHMubWFrZURpclN5bmM9KFcsTik9PihsZShXKSxpZS5ta2RpclN5bmMoVyx7bW9kZTpZKE4pLHJlY3Vyc2l2ZToh''@;'; put 'put ''MH0pKX0sMzQ2ODooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQxNTUpO2NvbnN0IGxlPVooMjUyMCk7VS5leHBvcnRzLmNoZWNrUGF0aD1mdW5jdGlvbihZKXtpZigid2luMzIiPT09aWUucGxhdGZvcm0mJi9bPD46Inw/Kl0vLnRlc3QoWS5yZXBsYWNlKGxlLnBhcnNlKFkpLnJv''@;'; put 'put ''b3QsIiIpKSl7Y29uc3QgVz1uZXcgRXJyb3IoYFBhdGggY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiAke1l9YCk7dGhyb3cgVy5jb2RlPSJFSU5WQUwiLFd9fX0sNDAyNjooVSxRLFopPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz17bW92ZVN5bmM6Wig2MDA2KX19LDYwMDY6KFUsUSxa''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDc3KSxsZT1aKDI1MjApLFk9Wig4NjkwKS5jb3B5U3luYyxXPVooNDU0MikucmVtb3ZlU3luYyxOPVooMTM4MSkubWtkaXJwU3luYyxlZT1aKDI3MzMpO2Z1bmN0aW9uIHEoSixzZSxhZSl7dHJ5e2llLnJlbmFtZVN5bmMoSixzZSl9Y2F0Y2go''@;'; put 'put ''ZmUpe2lmKCJFWERFViIhPT1mZS5jb2RlKXRocm93IGZlO3JldHVybiBZKGRlPUosc2Use292ZXJ3cml0ZTphZSxlcnJvck9uRXhpc3Q6ITB9KSxXKGRlKX12YXIgZGV9VS5leHBvcnRzPWZ1bmN0aW9uKEosc2UsYWUpe2NvbnN0IGZlPShhZT1hZXx8e30pLm92ZXJ3cml0ZXx8YWUuY2xvYmJl''@;'; put 'put ''cnx8ITEse3NyY1N0YXQ6ZGUsaXNDaGFuZ2luZ0Nhc2U6dmU9ITF9PWVlLmNoZWNrUGF0aHNTeW5jKEosc2UsIm1vdmUiLGFlKTtyZXR1cm4gZWUuY2hlY2tQYXJlbnRQYXRoc1N5bmMoSixkZSxzZSwibW92ZSIpLGZ1bmN0aW9uKEFlKXtjb25zdCBrZT1sZS5kaXJuYW1lKEFlKTtyZXR1cm4g''@;'; put 'put ''bGUucGFyc2Uoa2UpLnJvb3Q9PT1rZX0oc2UpfHxOKGxlLmRpcm5hbWUoc2UpKSxmdW5jdGlvbihBZSxrZSxTZSxJZSl7aWYoSWUpcmV0dXJuIHEoQWUsa2UsU2UpO2lmKFNlKXJldHVybiBXKGtlKSxxKEFlLGtlLFNlKTtpZihpZS5leGlzdHNTeW5jKGtlKSl0aHJvdyBuZXcgRXJyb3IoImRl''@;'; put 'put ''c3QgYWxyZWFkeSBleGlzdHMuIik7cmV0dXJuIHEoQWUsa2UsU2UpfShKLHNlLGZlLHZlKX19LDUzMDooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooODk4MSkuZnJvbUNhbGxiYWNrO1UuZXhwb3J0cz17bW92ZTppZShaKDQzNikpfX0sNDM2OihVLFEsWik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7Y29uc3QgaWU9Wig3NyksbGU9WigyNTIwKSxZPVooNjQ2NCkuY29weSxXPVooNDU0MikucmVtb3ZlLE49WigxMzgxKS5ta2RpcnAsZWU9Wig5MjU3KS5wYXRoRXhpc3RzLHE9WigyNzMzKTtmdW5jdGlvbiBKKGFlLGZlLGRlLHZlLEFlKXtyZXR1cm4gdmU/c2UoYWUsZmUsZGUsQWUpOmRl''@;'; put 'put ''P1coZmUsa2U9PmtlP0FlKGtlKTpzZShhZSxmZSxkZSxBZSkpOnZvaWQgZWUoZmUsKGtlLFNlKT0+a2U/QWUoa2UpOlNlP0FlKG5ldyBFcnJvcigiZGVzdCBhbHJlYWR5IGV4aXN0cy4iKSk6c2UoYWUsZmUsZGUsQWUpKX1mdW5jdGlvbiBzZShhZSxmZSxkZSx2ZSl7aWUucmVuYW1lKGFlLGZl''@;'; put 'put ''LEFlPT57cmV0dXJuIEFlPyJFWERFViIhPT1BZS5jb2RlP3ZlKEFlKTooVGU9dmUsdm9pZCBZKGtlPWFlLGZlLHtvdmVyd3JpdGU6ZGUsZXJyb3JPbkV4aXN0OiEwfSxFZT0+RWU/VGUoRWUpOlcoa2UsVGUpKSk6dmUoKTt2YXIga2UsVGV9KX1VLmV4cG9ydHM9ZnVuY3Rpb24oYWUsZmUsZGUs''@;'; put 'put ''dmUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZSYmKHZlPWRlLGRlPXt9KTtjb25zdCBBZT1kZS5vdmVyd3JpdGV8fGRlLmNsb2JiZXJ8fCExO3EuY2hlY2tQYXRocyhhZSxmZSwibW92ZSIsZGUsKGtlLFNlKT0+e2lmKGtlKXJldHVybiB2ZShrZSk7Y29uc3R7c3JjU3RhdDpJZSxpc0NoYW5naW5n''@;'; put 'put ''Q2FzZTpUZT0hMX09U2U7cS5jaGVja1BhcmVudFBhdGhzKGFlLEllLGZlLCJtb3ZlIixFZT0+RWU/dmUoRWUpOmZ1bmN0aW9uKGhlKXtjb25zdCBPPWxlLmRpcm5hbWUoaGUpO3JldHVybiBsZS5wYXJzZShPKS5yb290PT09T30oZmUpP0ooYWUsZmUsQWUsVGUsdmUpOnZvaWQgTihsZS5kaXJu''@;'; put 'put ''YW1lKGZlKSxoZT0+aGU/dmUoaGUpOkooYWUsZmUsQWUsVGUsdmUpKSl9KX19LDEzMTU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDg5ODEpLmZyb21DYWxsYmFjayxsZT1aKDc3KSxZPVooMjUyMCksVz1aKDEzODEpLE49Wig5MjU3KS5wYXRoRXhpc3RzO1UuZXhwb3J0cz17''@;'; put 'put ''b3V0cHV0RmlsZTppZShmdW5jdGlvbihlZSxxLEosc2UpeyJmdW5jdGlvbiI9PXR5cGVvZiBKJiYoc2U9SixKPSJ1dGY4Iik7Y29uc3QgYWU9WS5kaXJuYW1lKGVlKTtOKGFlLChmZSxkZSk9PmZlP3NlKGZlKTpkZT9sZS53cml0ZUZpbGUoZWUscSxKLHNlKTp2b2lkIFcubWtkaXJzKGFlLHZl''@;'; put 'put ''PT57aWYodmUpcmV0dXJuIHNlKHZlKTtsZS53cml0ZUZpbGUoZWUscSxKLHNlKX0pKX0pLG91dHB1dEZpbGVTeW5jOmZ1bmN0aW9uKGVlLC4uLnEpe2NvbnN0IEo9WS5kaXJuYW1lKGVlKTtpZihsZS5leGlzdHNTeW5jKEopKXJldHVybiBsZS53cml0ZUZpbGVTeW5jKGVlLC4uLnEpO1cubWtk''@;'; put 'put ''aXJzU3luYyhKKSxsZS53cml0ZUZpbGVTeW5jKGVlLC4uLnEpfX19LDkyNTc6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDg5ODEpLmZyb21Qcm9taXNlLGxlPVooNzc0OSk7VS5leHBvcnRzPXtwYXRoRXhpc3RzOmllKGZ1bmN0aW9uKFkpe3JldHVybiBsZS5hY2Nlc3MoWSku''@;'; put 'put ''dGhlbigoKT0+ITApLmNhdGNoKCgpPT4hMSl9KSxwYXRoRXhpc3RzU3luYzpsZS5leGlzdHNTeW5jfX0sNDU0MjooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNzcpLGxlPVooODk4MSkuZnJvbUNhbGxiYWNrLFk9WigzNDU2KTtVLmV4cG9ydHM9e3JlbW92ZTpsZShmdW5jdGlv''@;'; put 'put ''bihXLE4pe2lmKGllLnJtKXJldHVybiBpZS5ybShXLHtyZWN1cnNpdmU6ITAsZm9yY2U6ITB9LE4pO1koVyxOKX0pLHJlbW92ZVN5bmM6ZnVuY3Rpb24oVyl7aWYoaWUucm1TeW5jKXJldHVybiBpZS5ybVN5bmMoVyx7cmVjdXJzaXZlOiEwLGZvcmNlOiEwfSk7WS5zeW5jKFcpfX19LDM0NTY6''@;'; put 'put ''KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KTtjb25zdCBsZT1aKDc3KSxZPVooMjUyMCksVz1aKDkyODIpLE49IndpbjMyIj09PWllLnBsYXRmb3JtO2Z1bmN0aW9uIGVlKEFlKXtbInVubGluayIsImNobW9kIiwic3RhdCIsImxzdGF0Iiwicm1kaXIiLCJyZWFkZGlyIl0u''@;'; put 'put ''Zm9yRWFjaChrZT0+e0FlW2tlXT1BZVtrZV18fGxlW2tlXSxBZVtrZSs9IlN5bmMiXT1BZVtrZV18fGxlW2tlXX0pLEFlLm1heEJ1c3lUcmllcz1BZS5tYXhCdXN5VHJpZXN8fDN9ZnVuY3Rpb24gcShBZSxrZSxTZSl7bGV0IEllPTA7ImZ1bmN0aW9uIj09dHlwZW9mIGtlJiYoU2U9a2Usa2U9''@;'; put 'put ''e30pLFcoQWUsInJpbXJhZjogbWlzc2luZyBwYXRoIiksVy5zdHJpY3RFcXVhbCh0eXBlb2YgQWUsInN0cmluZyIsInJpbXJhZjogcGF0aCBzaG91bGQgYmUgYSBzdHJpbmciKSxXLnN0cmljdEVxdWFsKHR5cGVvZiBTZSwiZnVuY3Rpb24iLCJyaW1yYWY6IGNhbGxiYWNrIGZ1bmN0aW9uIHJl''@;'; put 'put ''cXVpcmVkIiksVyhrZSwicmltcmFmOiBpbnZhbGlkIG9wdGlvbnMgYXJndW1lbnQgcHJvdmlkZWQiKSxXLnN0cmljdEVxdWFsKHR5cGVvZiBrZSwib2JqZWN0IiwicmltcmFmOiBvcHRpb25zIHNob3VsZCBiZSBvYmplY3QiKSxlZShrZSksSihBZSxrZSxmdW5jdGlvbiBUZShFZSl7aWYoRWUp''@;'; put 'put ''e2lmKCgiRUJVU1kiPT09RWUuY29kZXx8IkVOT1RFTVBUWSI9PT1FZS5jb2RlfHwiRVBFUk0iPT09RWUuY29kZSkmJkllPGtlLm1heEJ1c3lUcmllcylyZXR1cm4gSWUrKyxzZXRUaW1lb3V0KCgpPT5KKEFlLGtlLFRlKSwxMDAqSWUpOyJFTk9FTlQiPT09RWUuY29kZSYmKEVlPW51bGwpfVNl''@;'; put 'put ''KEVlKX0pfWZ1bmN0aW9uIEooQWUsa2UsU2Upe1coQWUpLFcoa2UpLFcoImZ1bmN0aW9uIj09dHlwZW9mIFNlKSxrZS5sc3RhdChBZSwoSWUsVGUpPT5JZSYmIkVOT0VOVCI9PT1JZS5jb2RlP1NlKG51bGwpOkllJiYiRVBFUk0iPT09SWUuY29kZSYmTj9zZShBZSxrZSxJZSxTZSk6VGUmJlRl''@;'; put 'put ''LmlzRGlyZWN0b3J5KCk/ZmUoQWUsa2UsSWUsU2UpOnZvaWQga2UudW5saW5rKEFlLEVlPT57aWYoRWUpe2lmKCJFTk9FTlQiPT09RWUuY29kZSlyZXR1cm4gU2UobnVsbCk7aWYoIkVQRVJNIj09PUVlLmNvZGUpcmV0dXJuIE4/c2UoQWUsa2UsRWUsU2UpOmZlKEFlLGtlLEVlLFNlKTtpZigi''@;'; put 'put ''RUlTRElSIj09PUVlLmNvZGUpcmV0dXJuIGZlKEFlLGtlLEVlLFNlKX1yZXR1cm4gU2UoRWUpfSkpfWZ1bmN0aW9uIHNlKEFlLGtlLFNlLEllKXtXKEFlKSxXKGtlKSxXKCJmdW5jdGlvbiI9PXR5cGVvZiBJZSksa2UuY2htb2QoQWUsNDM4LFRlPT57VGU/SWUoIkVOT0VOVCI9PT1UZS5jb2Rl''@;'; put 'put ''P251bGw6U2UpOmtlLnN0YXQoQWUsKEVlLGhlKT0+e0VlP0llKCJFTk9FTlQiPT09RWUuY29kZT9udWxsOlNlKTpoZS5pc0RpcmVjdG9yeSgpP2ZlKEFlLGtlLFNlLEllKTprZS51bmxpbmsoQWUsSWUpfSl9KX1mdW5jdGlvbiBhZShBZSxrZSxTZSl7bGV0IEllO1coQWUpLFcoa2UpO3RyeXtr''@;'; put 'put ''ZS5jaG1vZFN5bmMoQWUsNDM4KX1jYXRjaChUZSl7aWYoIkVOT0VOVCI9PT1UZS5jb2RlKXJldHVybjt0aHJvdyBTZX10cnl7SWU9a2Uuc3RhdFN5bmMoQWUpfWNhdGNoKFRlKXtpZigiRU5PRU5UIj09PVRlLmNvZGUpcmV0dXJuO3Rocm93IFNlfUllLmlzRGlyZWN0b3J5KCk/dmUoQWUsa2Us''@;'; put 'put ''U2UpOmtlLnVubGlua1N5bmMoQWUpfWZ1bmN0aW9uIGZlKEFlLGtlLFNlLEllKXtXKEFlKSxXKGtlKSxXKCJmdW5jdGlvbiI9PXR5cGVvZiBJZSksa2Uucm1kaXIoQWUsVGU9Pnt2YXIgRWUsaGUsTzshVGV8fCJFTk9URU1QVFkiIT09VGUuY29kZSYmIkVFWElTVCIhPT1UZS5jb2RlJiYiRVBF''@;'; put 'put ''Uk0iIT09VGUuY29kZT9JZShUZSYmIkVOT1RESVIiPT09VGUuY29kZT9TZTpUZSk6KGhlPWtlLE89SWUsVyhFZT1BZSksVyhoZSksVygiZnVuY3Rpb24iPT10eXBlb2YgTyksaGUucmVhZGRpcihFZSwoeixuZSk9PntpZih6KXJldHVybiBPKHopO2xldCB0ZSx4PW5lLmxlbmd0aDtpZigwPT09''@;'; put 'put ''eClyZXR1cm4gaGUucm1kaXIoRWUsTyk7bmUuZm9yRWFjaChQPT57cShZLmpvaW4oRWUsUCksaGUsVj0+e2lmKCF0ZSlyZXR1cm4gVj9PKHRlPVYpOnZvaWQoMD09LS14JiZoZS5ybWRpcihFZSxPKSl9KX0pfSkpfSl9ZnVuY3Rpb24gZGUoQWUsa2Upe2xldCBTZTtlZShrZT1rZXx8e30pLFco''@;'; put 'put ''QWUsInJpbXJhZjogbWlzc2luZyBwYXRoIiksVy5zdHJpY3RFcXVhbCh0eXBlb2YgQWUsInN0cmluZyIsInJpbXJhZjogcGF0aCBzaG91bGQgYmUgYSBzdHJpbmciKSxXKGtlLCJyaW1yYWY6IG1pc3Npbmcgb3B0aW9ucyIpLFcuc3RyaWN0RXF1YWwodHlwZW9mIGtlLCJvYmplY3QiLCJyaW1y''@;'; put 'put ''YWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCIpO3RyeXtTZT1rZS5sc3RhdFN5bmMoQWUpfWNhdGNoKEllKXtpZigiRU5PRU5UIj09PUllLmNvZGUpcmV0dXJuOyJFUEVSTSI9PT1JZS5jb2RlJiZOJiZhZShBZSxrZSxJZSl9dHJ5e1NlJiZTZS5pc0RpcmVjdG9yeSgpP3ZlKEFlLGtlLG51''@;'; put 'put ''bGwpOmtlLnVubGlua1N5bmMoQWUpfWNhdGNoKEllKXtpZigiRU5PRU5UIj09PUllLmNvZGUpcmV0dXJuO2lmKCJFUEVSTSI9PT1JZS5jb2RlKXJldHVybiBOP2FlKEFlLGtlLEllKTp2ZShBZSxrZSxJZSk7aWYoIkVJU0RJUiIhPT1JZS5jb2RlKXRocm93IEllO3ZlKEFlLGtlLEllKX19ZnVu''@;'; put 'put ''Y3Rpb24gdmUoQWUsa2UsU2Upe1coQWUpLFcoa2UpO3RyeXtrZS5ybWRpclN5bmMoQWUpfWNhdGNoKEllKXtpZigiRU5PVERJUiI9PT1JZS5jb2RlKXRocm93IFNlO2lmKCJFTk9URU1QVFkiPT09SWUuY29kZXx8IkVFWElTVCI9PT1JZS5jb2RlfHwiRVBFUk0iPT09SWUuY29kZSkhZnVuY3Rp''@;'; put 'put ''b24oVGUsRWUpe2lmKFcoVGUpLFcoRWUpLEVlLnJlYWRkaXJTeW5jKFRlKS5mb3JFYWNoKGhlPT5kZShZLmpvaW4oVGUsaGUpLEVlKSksIU4pcmV0dXJuIEVlLnJtZGlyU3luYyhUZSxFZSk7e2NvbnN0IGhlPURhdGUubm93KCk7ZG97dHJ5e3JldHVybiBFZS5ybWRpclN5bmMoVGUsRWUpfWNh''@;'; put 'put ''dGNoKE8pe319d2hpbGUoRGF0ZS5ub3coKS1oZTw1MDApfX0oQWUsa2UpO2Vsc2UgaWYoIkVOT0VOVCIhPT1JZS5jb2RlKXRocm93IEllfX1VLmV4cG9ydHM9cSxxLnN5bmM9ZGV9LDI3MzM6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBpZT1aKDc3NDkpLGxlPVooMjUyMCksWT1aKDk1''@;'; put 'put ''MzkpO2Z1bmN0aW9uIFcoSixzZSxhZSl7Y29uc3QgZmU9YWUuZGVyZWZlcmVuY2U/ZGU9PmllLnN0YXQoZGUse2JpZ2ludDohMH0pOmRlPT5pZS5sc3RhdChkZSx7YmlnaW50OiEwfSk7cmV0dXJuIFByb21pc2UuYWxsKFtmZShKKSxmZShzZSkuY2F0Y2goZGU9PntpZigiRU5PRU5UIj09PWRl''@;'; put 'put ''LmNvZGUpcmV0dXJuIG51bGw7dGhyb3cgZGV9KV0pLnRoZW4oKFtkZSx2ZV0pPT4oe3NyY1N0YXQ6ZGUsZGVzdFN0YXQ6dmV9KSl9ZnVuY3Rpb24gTihKLHNlKXtyZXR1cm4gc2UuaW5vJiZzZS5kZXYmJnNlLmlubz09PUouaW5vJiZzZS5kZXY9PT1KLmRldn1mdW5jdGlvbiBlZShKLHNlKXtj''@;'; put 'put ''b25zdCBhZT1sZS5yZXNvbHZlKEopLnNwbGl0KGxlLnNlcCkuZmlsdGVyKGRlPT5kZSksZmU9bGUucmVzb2x2ZShzZSkuc3BsaXQobGUuc2VwKS5maWx0ZXIoZGU9PmRlKTtyZXR1cm4gYWUucmVkdWNlKChkZSx2ZSxBZSk9PmRlJiZmZVtBZV09PT12ZSwhMCl9ZnVuY3Rpb24gcShKLHNlLGFl''@;'; put 'put ''KXtyZXR1cm5gQ2Fubm90ICR7YWV9ICcke0p9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke3NlfScuYH1VLmV4cG9ydHM9e2NoZWNrUGF0aHM6ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSl7WS5jYWxsYmFja2lmeShXKShKLHNlLGZlLCh2ZSxBZSk9PntpZih2ZSlyZXR1cm4gZGUo''@;'; put 'put ''dmUpO2NvbnN0e3NyY1N0YXQ6a2UsZGVzdFN0YXQ6U2V9PUFlO2lmKFNlKXtpZihOKGtlLFNlKSl7Y29uc3QgSWU9bGUuYmFzZW5hbWUoSiksVGU9bGUuYmFzZW5hbWUoc2UpO3JldHVybiJtb3ZlIj09PWFlJiZJZSE9PVRlJiZJZS50b0xvd2VyQ2FzZSgpPT09VGUudG9Mb3dlckNhc2UoKT9k''@;'; put 'put ''ZShudWxsLHtzcmNTdGF0OmtlLGRlc3RTdGF0OlNlLGlzQ2hhbmdpbmdDYXNlOiEwfSk6ZGUobmV3IEVycm9yKCJTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG11c3Qgbm90IGJlIHRoZSBzYW1lLiIpKX1pZihrZS5pc0RpcmVjdG9yeSgpJiYhU2UuaXNEaXJlY3RvcnkoKSlyZXR1cm4gZGUobmV3''@;'; put 'put ''IEVycm9yKGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7c2V9JyB3aXRoIGRpcmVjdG9yeSAnJHtKfScuYCkpO2lmKCFrZS5pc0RpcmVjdG9yeSgpJiZTZS5pc0RpcmVjdG9yeSgpKXJldHVybiBkZShuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgZGlyZWN0b3J5ICcke3Nl''@;'; put 'put ''fScgd2l0aCBub24tZGlyZWN0b3J5ICcke0p9Jy5gKSl9cmV0dXJuIGtlLmlzRGlyZWN0b3J5KCkmJmVlKEosc2UpP2RlKG5ldyBFcnJvcihxKEosc2UsYWUpKSk6ZGUobnVsbCx7c3JjU3RhdDprZSxkZXN0U3RhdDpTZX0pfSl9LGNoZWNrUGF0aHNTeW5jOmZ1bmN0aW9uKEosc2UsYWUsZmUp''@;'; put 'put ''e2NvbnN0e3NyY1N0YXQ6ZGUsZGVzdFN0YXQ6dmV9PWZ1bmN0aW9uKEFlLGtlLFNlKXtsZXQgSWU7Y29uc3QgVGU9U2UuZGVyZWZlcmVuY2U/aGU9PmllLnN0YXRTeW5jKGhlLHtiaWdpbnQ6ITB9KTpoZT0+aWUubHN0YXRTeW5jKGhlLHtiaWdpbnQ6ITB9KSxFZT1UZShBZSk7dHJ5e0llPVRl''@;'; put 'put ''KGtlKX1jYXRjaChoZSl7aWYoIkVOT0VOVCI9PT1oZS5jb2RlKXJldHVybntzcmNTdGF0OkVlLGRlc3RTdGF0Om51bGx9O3Rocm93IGhlfXJldHVybntzcmNTdGF0OkVlLGRlc3RTdGF0OkllfX0oSixzZSxmZSk7aWYodmUpe2lmKE4oZGUsdmUpKXtjb25zdCBBZT1sZS5iYXNlbmFtZShKKSxr''@;'; put 'put ''ZT1sZS5iYXNlbmFtZShzZSk7aWYoIm1vdmUiPT09YWUmJkFlIT09a2UmJkFlLnRvTG93ZXJDYXNlKCk9PT1rZS50b0xvd2VyQ2FzZSgpKXJldHVybntzcmNTdGF0OmRlLGRlc3RTdGF0OnZlLGlzQ2hhbmdpbmdDYXNlOiEwfTt0aHJvdyBuZXcgRXJyb3IoIlNvdXJjZSBhbmQgZGVzdGluYXRp''@;'; put 'put ''b24gbXVzdCBub3QgYmUgdGhlIHNhbWUuIil9aWYoZGUuaXNEaXJlY3RvcnkoKSYmIXZlLmlzRGlyZWN0b3J5KCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7c2V9JyB3aXRoIGRpcmVjdG9yeSAnJHtKfScuYCk7aWYoIWRlLmlzRGlyZWN0b3J5''@;'; put 'put ''KCkmJnZlLmlzRGlyZWN0b3J5KCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3ZlcndyaXRlIGRpcmVjdG9yeSAnJHtzZX0nIHdpdGggbm9uLWRpcmVjdG9yeSAnJHtKfScuYCl9aWYoZGUuaXNEaXJlY3RvcnkoKSYmZWUoSixzZSkpdGhyb3cgbmV3IEVycm9yKHEoSixzZSxhZSkpO3JldHVy''@;'; put 'put ''bntzcmNTdGF0OmRlLGRlc3RTdGF0OnZlfX0sY2hlY2tQYXJlbnRQYXRoczpmdW5jdGlvbiBKKHNlLGFlLGZlLGRlLHZlKXtjb25zdCBBZT1sZS5yZXNvbHZlKGxlLmRpcm5hbWUoc2UpKSxrZT1sZS5yZXNvbHZlKGxlLmRpcm5hbWUoZmUpKTtpZihrZT09PUFlfHxrZT09PWxlLnBhcnNlKGtl''@;'; put 'put ''KS5yb290KXJldHVybiB2ZSgpO2llLnN0YXQoa2Use2JpZ2ludDohMH0sKFNlLEllKT0+U2U/IkVOT0VOVCI9PT1TZS5jb2RlP3ZlKCk6dmUoU2UpOk4oYWUsSWUpP3ZlKG5ldyBFcnJvcihxKHNlLGZlLGRlKSkpOkooc2UsYWUsa2UsZGUsdmUpKX0sY2hlY2tQYXJlbnRQYXRoc1N5bmM6ZnVu''@;'; put 'put ''Y3Rpb24gSihzZSxhZSxmZSxkZSl7Y29uc3QgdmU9bGUucmVzb2x2ZShsZS5kaXJuYW1lKHNlKSksQWU9bGUucmVzb2x2ZShsZS5kaXJuYW1lKGZlKSk7aWYoQWU9PT12ZXx8QWU9PT1sZS5wYXJzZShBZSkucm9vdClyZXR1cm47bGV0IGtlO3RyeXtrZT1pZS5zdGF0U3luYyhBZSx7YmlnaW50''@;'; put 'put ''OiEwfSl9Y2F0Y2goU2Upe2lmKCJFTk9FTlQiPT09U2UuY29kZSlyZXR1cm47dGhyb3cgU2V9aWYoTihhZSxrZSkpdGhyb3cgbmV3IEVycm9yKHEoc2UsZmUsZGUpKTtyZXR1cm4gSihzZSxhZSxBZSxkZSl9LGlzU3JjU3ViZGlyOmVlLGFyZUlkZW50aWNhbDpOfX0sMzE4OihVLFEsWik9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7Y29uc3QgaWU9Wig3Nyk7VS5leHBvcnRzPXt1dGltZXNNaWxsaXM6ZnVuY3Rpb24obGUsWSxXLE4pe2llLm9wZW4obGUsInIrIiwoZWUscSk9PntpZihlZSlyZXR1cm4gTihlZSk7aWUuZnV0aW1lcyhxLFksVyxKPT57aWUuY2xvc2UocSxzZT0+e04mJk4oSnx8c2UpfSl9''@;'; put 'put ''KX0pfSx1dGltZXNNaWxsaXNTeW5jOmZ1bmN0aW9uKGxlLFksVyl7Y29uc3QgTj1pZS5vcGVuU3luYyhsZSwicisiKTtyZXR1cm4gaWUuZnV0aW1lc1N5bmMoTixZLFcpLGllLmNsb3NlU3luYyhOKX19fSw3MzM0OihVLFEsWik9Pnt2YXIgaWU9Wig0MTU1KTtVLmV4cG9ydHM9c2Usc2UucmVh''@;'; put 'put ''bHBhdGg9c2Usc2Uuc3luYz1hZSxzZS5yZWFscGF0aFN5bmM9YWUsc2UubW9ua2V5cGF0Y2g9ZnVuY3Rpb24oKXtsZS5yZWFscGF0aD1zZSxsZS5yZWFscGF0aFN5bmM9YWV9LHNlLnVubW9ua2V5cGF0Y2g9ZnVuY3Rpb24oKXtsZS5yZWFscGF0aD1ZLGxlLnJlYWxwYXRoU3luYz1XfTt2YXIg''@;'; put 'put ''bGU9WigyNTM1KSxZPWxlLnJlYWxwYXRoLFc9bGUucmVhbHBhdGhTeW5jLGVlPS9edlswLTVdXC4vLnRlc3QoaWUudmVyc2lvbikscT1aKDcwNTkpO2Z1bmN0aW9uIEooZmUpe3JldHVybiBmZSYmInJlYWxwYXRoIj09PWZlLnN5c2NhbGwmJigiRUxPT1AiPT09ZmUuY29kZXx8IkVOT01FTSI9''@;'; put 'put ''PT1mZS5jb2RlfHwiRU5BTUVUT09MT05HIj09PWZlLmNvZGUpfWZ1bmN0aW9uIHNlKGZlLGRlLHZlKXtpZihlZSlyZXR1cm4gWShmZSxkZSx2ZSk7ImZ1bmN0aW9uIj09dHlwZW9mIGRlJiYodmU9ZGUsZGU9bnVsbCksWShmZSxkZSxmdW5jdGlvbihBZSxrZSl7SihBZSk/cS5yZWFscGF0aChm''@;'; put 'put ''ZSxkZSx2ZSk6dmUoQWUsa2UpfSl9ZnVuY3Rpb24gYWUoZmUsZGUpe2lmKGVlKXJldHVybiBXKGZlLGRlKTt0cnl7cmV0dXJuIFcoZmUsZGUpfWNhdGNoKHZlKXtpZihKKHZlKSlyZXR1cm4gcS5yZWFscGF0aFN5bmMoZmUsZGUpO3Rocm93IHZlfX19LDcwNTk6KFUsUSxaKT0+e3ZhciBpZT1a''@;'; put 'put ''KDQxNTUpLGxlPVooNTEwOCksWT1aKDI1MjApLFc9IndpbjMyIj09PWllLnBsYXRmb3JtLE49WigyNTM1KSxlZT1pZS5lbnYuTk9ERV9ERUJVRyYmL2ZzLy50ZXN0KGllLmVudi5OT0RFX0RFQlVHKTtpZihXKXZhciBKPS8oLio/KSg/OltcL1xcXSt8JCkvZztlbHNlIEo9LyguKj8pKD86W1wv''@;'; put 'put ''XSt8JCkvZztpZihXKXZhciBzZT0vXig/OlthLXpBLVpdOnxbXFxcL117Mn1bXlxcXC9dK1tcXFwvXVteXFxcL10rKT9bXFxcL10qLztlbHNlIHNlPS9eW1wvXSovO1EucmVhbHBhdGhTeW5jPWZ1bmN0aW9uKGFlLGZlKXtpZihhZT1ZLnJlc29sdmUoYWUpLGZlJiZPYmplY3QucHJvdG90eXBl''@;'; put 'put ''Lmhhc093blByb3BlcnR5LmNhbGwoZmUsYWUpKXJldHVybiBmZVthZV07dmFyIGRlLHZlLEFlLGtlLFNlPWFlLEllPXt9LFRlPXt9O2Z1bmN0aW9uIEVlKCl7dmFyIHg9c2UuZXhlYyhhZSk7ZGU9eFswXS5sZW5ndGgsdmU9eFswXSxBZT14WzBdLGtlPSIiLFcmJiFUZVtBZV0mJihOLmxzdGF0''@;'; put 'put ''U3luYyhBZSksVGVbQWVdPSEwKX1mb3IoRWUoKTtkZTxhZS5sZW5ndGg7KXtKLmxhc3RJbmRleD1kZTt2YXIgaGU9Si5leGVjKGFlKTtpZihrZT12ZSx2ZSs9aGVbMF0sZGU9Si5sYXN0SW5kZXgsIShUZVtBZT1rZStoZVsxXV18fGZlJiZmZVtBZV09PT1BZSkpe3ZhciBPO2lmKGZlJiZPYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmUsQWUpKU89ZmVbQWVdO2Vsc2V7dmFyIHo9Ti5sc3RhdFN5bmMoQWUpO2lmKCF6LmlzU3ltYm9saWNMaW5rKCkpe1RlW0FlXT0hMCxmZSYmKGZlW0FlXT1BZSk7Y29udGludWV9dmFyIG5lPW51bGw7aWYoIVcpe3ZhciB0ZT16LmRl''@;'; put 'put ''di50b1N0cmluZygzMikrIjoiK3ouaW5vLnRvU3RyaW5nKDMyKTtJZS5oYXNPd25Qcm9wZXJ0eSh0ZSkmJihuZT1JZVt0ZV0pfW51bGw9PT1uZSYmKE4uc3RhdFN5bmMoQWUpLG5lPU4ucmVhZGxpbmtTeW5jKEFlKSksTz1ZLnJlc29sdmUoa2UsbmUpLGZlJiYoZmVbQWVdPU8pLFd8fChJZVt0''@;'; put 'put ''ZV09bmUpfWFlPVkucmVzb2x2ZShPLGFlLnNsaWNlKGRlKSksRWUoKX19cmV0dXJuIGZlJiYoZmVbU2VdPWFlKSxhZX0sUS5yZWFscGF0aD1mdW5jdGlvbihhZSxmZSxkZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGRlJiYoZGU9ZnVuY3Rpb24gcShhZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIGFlP2FlOmZ1bmN0aW9uKCl7dmFyIGZlO2lmKGVlKXt2YXIgZGU9bmV3IEVycm9yO2ZlPWZ1bmN0aW9uKEFlKXtBZSYmKGRlLm1lc3NhZ2U9QWUubWVzc2FnZSx2ZShBZT1kZSkpfX1lbHNlIGZlPXZlO3JldHVybiBmZTtmdW5jdGlvbiB2ZShBZSl7aWYoQWUpe2lmKGllLnRocm93RGVw''@;'; put 'put ''cmVjYXRpb24pdGhyb3cgQWU7aWYoIWllLm5vRGVwcmVjYXRpb24pe3ZhciBrZT0iZnM6IG1pc3NpbmcgY2FsbGJhY2sgIisoQWUuc3RhY2t8fEFlLm1lc3NhZ2UpO2llLnRyYWNlRGVwcmVjYXRpb24/bGUudHJhY2Uoa2UpOmxlLmVycm9yKGtlKX19fX0oKX0oZmUpLGZlPW51bGwpLGFlPVku''@;'; put 'put ''cmVzb2x2ZShhZSksZmUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmZSxhZSkpcmV0dXJuIGllLm5leHRUaWNrKGRlLmJpbmQobnVsbCxudWxsLGZlW2FlXSkpO3ZhciB2ZSxBZSxrZSxTZSxJZT1hZSxUZT17fSxFZT17fTtmdW5jdGlvbiBoZSgpe3ZhciB4PXNlLmV4''@;'; put 'put ''ZWMoYWUpO3ZlPXhbMF0ubGVuZ3RoLEFlPXhbMF0sa2U9eFswXSxTZT0iIixXJiYhRWVba2VdP04ubHN0YXQoa2UsZnVuY3Rpb24oUCl7aWYoUClyZXR1cm4gZGUoUCk7RWVba2VdPSEwLE8oKX0pOmllLm5leHRUaWNrKE8pfWZ1bmN0aW9uIE8oKXtpZih2ZT49YWUubGVuZ3RoKXJldHVybiBm''@;'; put 'put ''ZSYmKGZlW0llXT1hZSksZGUobnVsbCxhZSk7Si5sYXN0SW5kZXg9dmU7dmFyIHg9Si5leGVjKGFlKTtyZXR1cm4gU2U9QWUsQWUrPXhbMF0sdmU9Si5sYXN0SW5kZXgsRWVba2U9U2UreFsxXV18fGZlJiZmZVtrZV09PT1rZT9pZS5uZXh0VGljayhPKTpmZSYmT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKGZlLGtlKT90ZShmZVtrZV0pOk4ubHN0YXQoa2Useil9ZnVuY3Rpb24geih4LFApe2lmKHgpcmV0dXJuIGRlKHgpO2lmKCFQLmlzU3ltYm9saWNMaW5rKCkpcmV0dXJuIEVlW2tlXT0hMCxmZSYmKGZlW2tlXT1rZSksaWUubmV4dFRpY2soTyk7aWYoIVcpe3Zh''@;'; put 'put ''ciBWPVAuZGV2LnRvU3RyaW5nKDMyKSsiOiIrUC5pbm8udG9TdHJpbmcoMzIpO2lmKFRlLmhhc093blByb3BlcnR5KFYpKXJldHVybiBuZShudWxsLFRlW1ZdLGtlKX1OLnN0YXQoa2UsZnVuY3Rpb24oVCl7aWYoVClyZXR1cm4gZGUoVCk7Ti5yZWFkbGluayhrZSxmdW5jdGlvbihTLEYpe1d8''@;'; put 'put ''fChUZVtWXT1GKSxuZShTLEYpfSl9KX1mdW5jdGlvbiBuZSh4LFAsVil7aWYoeClyZXR1cm4gZGUoeCk7dmFyIFQ9WS5yZXNvbHZlKFNlLFApO2ZlJiYoZmVbVl09VCksdGUoVCl9ZnVuY3Rpb24gdGUoeCl7YWU9WS5yZXNvbHZlKHgsYWUuc2xpY2UodmUpKSxoZSgpfWhlKCl9fSw3NjQ4OlU9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIFE9IkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIixaPUFycmF5LnByb3RvdHlwZS5zbGljZSxpZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGxlPSJbb2JqZWN0IEZ1bmN0aW9uXSI7VS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KFkpe3ZhciBXPXRoaXM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFd8fGllLmNhbGwoVykhPT1sZSl0aHJvdyBuZXcgVHlwZUVycm9yKFErVyk7Zm9yKHZhciBOLGVlPVouY2FsbChhcmd1bWVudHMsMSkscT1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBOKXt2YXIgZGU9Vy5hcHBseSh0''@;'; put 'put ''aGlzLGVlLmNvbmNhdChaLmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiBPYmplY3QoZGUpPT09ZGU/ZGU6dGhpc31yZXR1cm4gVy5hcHBseShZLGVlLmNvbmNhdChaLmNhbGwoYXJndW1lbnRzKSkpfSxKPU1hdGgubWF4KDAsVy5sZW5ndGgtZWUubGVuZ3RoKSxzZT1bXSxhZT0wO2FlPEo7YWUr''@;'; put 'put ''KylzZS5wdXNoKCIkIithZSk7aWYoTj1GdW5jdGlvbigiYmluZGVyIiwicmV0dXJuIGZ1bmN0aW9uICgiK3NlLmpvaW4oIiwiKSsiKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH0iKShxKSxXLnByb3RvdHlwZSl7dmFyIGZlPWZ1bmN0aW9uKCl7fTtmZS5wcm90b3R5''@;'; put 'put ''cGU9Vy5wcm90b3R5cGUsTi5wcm90b3R5cGU9bmV3IGZlLGZlLnByb3RvdHlwZT1udWxsfXJldHVybiBOfX0sODYxMjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDc2NDgpO1UuZXhwb3J0cz1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8aWV9LDIxMDooVSxRLFopPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBpZSxsZT1TeW50YXhFcnJvcixZPUZ1bmN0aW9uLFc9VHlwZUVycm9yLE49ZnVuY3Rpb24oVil7dHJ5e3JldHVybiBZKCcidXNlIHN0cmljdCI7IHJldHVybiAoJytWKyIpLmNvbnN0cnVjdG9yOyIpKCl9Y2F0Y2goVCl7fX0sZWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVz''@;'; put 'put ''Y3JpcHRvcjtpZihlZSl0cnl7ZWUoe30sIiIpfWNhdGNoKFYpe2VlPW51bGx9dmFyIHE9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgV30sSj1lZT9mdW5jdGlvbigpe3RyeXtyZXR1cm4gcX1jYXRjaChWKXt0cnl7cmV0dXJuIGVlKGFyZ3VtZW50cywiY2FsbGVlIikuZ2V0fWNhdGNoKFQpe3JldHVy''@;'; put 'put ''biBxfX19KCk6cSxzZT1aKDE0MDUpKCksYWU9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbihWKXtyZXR1cm4gVi5fX3Byb3RvX199LGZlPXt9LGRlPSJ1bmRlZmluZWQiPT10eXBlb2YgVWludDhBcnJheT9pZTphZShVaW50OEFycmF5KSx2ZT17IiVBZ2dyZWdhdGVFcnJvciUiOiJ1''@;'; put 'put ''bmRlZmluZWQiPT10eXBlb2YgQWdncmVnYXRlRXJyb3I/aWU6QWdncmVnYXRlRXJyb3IsIiVBcnJheSUiOkFycmF5LCIlQXJyYXlCdWZmZXIlIjoidW5kZWZpbmVkIj09dHlwZW9mIEFycmF5QnVmZmVyP2llOkFycmF5QnVmZmVyLCIlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUiOnNlP2FlKFtd''@;'; put 'put ''W1N5bWJvbC5pdGVyYXRvcl0oKSk6aWUsIiVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlIjppZSwiJUFzeW5jRnVuY3Rpb24lIjpmZSwiJUFzeW5jR2VuZXJhdG9yJSI6ZmUsIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSI6ZmUsIiVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSI6ZmUs''@;'; put 'put ''IiVBdG9taWNzJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBBdG9taWNzP2llOkF0b21pY3MsIiVCaWdJbnQlIjoidW5kZWZpbmVkIj09dHlwZW9mIEJpZ0ludD9pZTpCaWdJbnQsIiVCb29sZWFuJSI6Qm9vbGVhbiwiJURhdGFWaWV3JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBEYXRhVmlldz9pZTpE''@;'; put 'put ''YXRhVmlldywiJURhdGUlIjpEYXRlLCIlZGVjb2RlVVJJJSI6ZGVjb2RlVVJJLCIlZGVjb2RlVVJJQ29tcG9uZW50JSI6ZGVjb2RlVVJJQ29tcG9uZW50LCIlZW5jb2RlVVJJJSI6ZW5jb2RlVVJJLCIlZW5jb2RlVVJJQ29tcG9uZW50JSI6ZW5jb2RlVVJJQ29tcG9uZW50LCIlRXJyb3IlIjpF''@;'; put 'put ''cnJvciwiJWV2YWwlIjpldmFsLCIlRXZhbEVycm9yJSI6RXZhbEVycm9yLCIlRmxvYXQzMkFycmF5JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBGbG9hdDMyQXJyYXk/aWU6RmxvYXQzMkFycmF5LCIlRmxvYXQ2NEFycmF5JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBGbG9hdDY0QXJyYXk/aWU6Rmxv''@;'; put 'put ''YXQ2NEFycmF5LCIlRmluYWxpemF0aW9uUmVnaXN0cnklIjoidW5kZWZpbmVkIj09dHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5P2llOkZpbmFsaXphdGlvblJlZ2lzdHJ5LCIlRnVuY3Rpb24lIjpZLCIlR2VuZXJhdG9yRnVuY3Rpb24lIjpmZSwiJUludDhBcnJheSUiOiJ1bmRlZmluZWQi''@;'; put 'put ''PT10eXBlb2YgSW50OEFycmF5P2llOkludDhBcnJheSwiJUludDE2QXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEludDE2QXJyYXk/aWU6SW50MTZBcnJheSwiJUludDMyQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEludDMyQXJyYXk/aWU6SW50MzJBcnJheSwiJWlzRmluaXRlJSI6''@;'; put 'put ''aXNGaW5pdGUsIiVpc05hTiUiOmlzTmFOLCIlSXRlcmF0b3JQcm90b3R5cGUlIjpzZT9hZShhZShbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKTppZSwiJUpTT04lIjoib2JqZWN0Ij09dHlwZW9mIEpTT04/SlNPTjppZSwiJU1hcCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgTWFwP2llOk1hcCwiJU1h''@;'; put 'put ''cEl0ZXJhdG9yUHJvdG90eXBlJSI6InVuZGVmaW5lZCIhPXR5cGVvZiBNYXAmJnNlP2FlKChuZXcgTWFwKVtTeW1ib2wuaXRlcmF0b3JdKCkpOmllLCIlTWF0aCUiOk1hdGgsIiVOdW1iZXIlIjpOdW1iZXIsIiVPYmplY3QlIjpPYmplY3QsIiVwYXJzZUZsb2F0JSI6cGFyc2VGbG9hdCwiJXBh''@;'; put 'put ''cnNlSW50JSI6cGFyc2VJbnQsIiVQcm9taXNlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlP2llOlByb21pc2UsIiVQcm94eSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgUHJveHk/aWU6UHJveHksIiVSYW5nZUVycm9yJSI6UmFuZ2VFcnJvciwiJVJlZmVyZW5jZUVycm9yJSI6UmVmZXJl''@;'; put 'put ''bmNlRXJyb3IsIiVSZWZsZWN0JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0P2llOlJlZmxlY3QsIiVSZWdFeHAlIjpSZWdFeHAsIiVTZXQlIjoidW5kZWZpbmVkIj09dHlwZW9mIFNldD9pZTpTZXQsIiVTZXRJdGVyYXRvclByb3RvdHlwZSUiOiJ1bmRlZmluZWQiIT10eXBlb2YgU2V0''@;'; put 'put ''JiZzZT9hZSgobmV3IFNldClbU3ltYm9sLml0ZXJhdG9yXSgpKTppZSwiJVNoYXJlZEFycmF5QnVmZmVyJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcj9pZTpTaGFyZWRBcnJheUJ1ZmZlciwiJVN0cmluZyUiOlN0cmluZywiJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl''@;'; put 'put ''JSI6c2U/YWUoIiJbU3ltYm9sLml0ZXJhdG9yXSgpKTppZSwiJVN5bWJvbCUiOnNlP1N5bWJvbDppZSwiJVN5bnRheEVycm9yJSI6bGUsIiVUaHJvd1R5cGVFcnJvciUiOkosIiVUeXBlZEFycmF5JSI6ZGUsIiVUeXBlRXJyb3IlIjpXLCIlVWludDhBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBl''@;'; put 'put ''b2YgVWludDhBcnJheT9pZTpVaW50OEFycmF5LCIlVWludDhDbGFtcGVkQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P2llOlVpbnQ4Q2xhbXBlZEFycmF5LCIlVWludDE2QXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQxNkFycmF5P2llOlVpbnQx''@;'; put 'put ''NkFycmF5LCIlVWludDMyQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQzMkFycmF5P2llOlVpbnQzMkFycmF5LCIlVVJJRXJyb3IlIjpVUklFcnJvciwiJVdlYWtNYXAlIjoidW5kZWZpbmVkIj09dHlwZW9mIFdlYWtNYXA/aWU6V2Vha01hcCwiJVdlYWtSZWYlIjoidW5kZWZpbmVk''@;'; put 'put ''Ij09dHlwZW9mIFdlYWtSZWY/aWU6V2Vha1JlZiwiJVdlYWtTZXQlIjoidW5kZWZpbmVkIj09dHlwZW9mIFdlYWtTZXQ/aWU6V2Vha1NldH0sQWU9ZnVuY3Rpb24gVihUKXt2YXIgUztpZigiJUFzeW5jRnVuY3Rpb24lIj09PVQpUz1OKCJhc3luYyBmdW5jdGlvbiAoKSB7fSIpO2Vsc2UgaWYo''@;'; put 'put ''IiVHZW5lcmF0b3JGdW5jdGlvbiUiPT09VClTPU4oImZ1bmN0aW9uKiAoKSB7fSIpO2Vsc2UgaWYoIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSI9PT1UKVM9TigiYXN5bmMgZnVuY3Rpb24qICgpIHt9Iik7ZWxzZSBpZigiJUFzeW5jR2VuZXJhdG9yJSI9PT1UKXt2YXIgRj1WKCIlQXN5bmNH''@;'; put 'put ''ZW5lcmF0b3JGdW5jdGlvbiUiKTtGJiYoUz1GLnByb3RvdHlwZSl9ZWxzZSBpZigiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlIj09PVQpe3ZhciB5ZT1WKCIlQXN5bmNHZW5lcmF0b3IlIik7eWUmJihTPWFlKHllLnByb3RvdHlwZSkpfXJldHVybiB2ZVtUXT1TLFN9LGtlPXsiJUFycmF5QnVm''@;'; put 'put ''ZmVyUHJvdG90eXBlJSI6WyJBcnJheUJ1ZmZlciIsInByb3RvdHlwZSJdLCIlQXJyYXlQcm90b3R5cGUlIjpbIkFycmF5IiwicHJvdG90eXBlIl0sIiVBcnJheVByb3RvX2VudHJpZXMlIjpbIkFycmF5IiwicHJvdG90eXBlIiwiZW50cmllcyJdLCIlQXJyYXlQcm90b19mb3JFYWNoJSI6WyJB''@;'; put 'put ''cnJheSIsInByb3RvdHlwZSIsImZvckVhY2giXSwiJUFycmF5UHJvdG9fa2V5cyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJrZXlzIl0sIiVBcnJheVByb3RvX3ZhbHVlcyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJ2YWx1ZXMiXSwiJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlIjpbIkFzeW5j''@;'; put 'put ''RnVuY3Rpb24iLCJwcm90b3R5cGUiXSwiJUFzeW5jR2VuZXJhdG9yJSI6WyJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIl0sIiVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUiOlsiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSIsInByb3RvdHlwZSJdLCIlQm9v''@;'; put 'put ''bGVhblByb3RvdHlwZSUiOlsiQm9vbGVhbiIsInByb3RvdHlwZSJdLCIlRGF0YVZpZXdQcm90b3R5cGUlIjpbIkRhdGFWaWV3IiwicHJvdG90eXBlIl0sIiVEYXRlUHJvdG90eXBlJSI6WyJEYXRlIiwicHJvdG90eXBlIl0sIiVFcnJvclByb3RvdHlwZSUiOlsiRXJyb3IiLCJwcm90b3R5cGUi''@;'; put 'put ''XSwiJUV2YWxFcnJvclByb3RvdHlwZSUiOlsiRXZhbEVycm9yIiwicHJvdG90eXBlIl0sIiVGbG9hdDMyQXJyYXlQcm90b3R5cGUlIjpbIkZsb2F0MzJBcnJheSIsInByb3RvdHlwZSJdLCIlRmxvYXQ2NEFycmF5UHJvdG90eXBlJSI6WyJGbG9hdDY0QXJyYXkiLCJwcm90b3R5cGUiXSwiJUZ1''@;'; put 'put ''bmN0aW9uUHJvdG90eXBlJSI6WyJGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlR2VuZXJhdG9yJSI6WyJHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlR2VuZXJhdG9yUHJvdG90eXBlJSI6WyJHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSIsInByb3RvdHlwZSJdLCIlSW50''@;'; put 'put ''OEFycmF5UHJvdG90eXBlJSI6WyJJbnQ4QXJyYXkiLCJwcm90b3R5cGUiXSwiJUludDE2QXJyYXlQcm90b3R5cGUlIjpbIkludDE2QXJyYXkiLCJwcm90b3R5cGUiXSwiJUludDMyQXJyYXlQcm90b3R5cGUlIjpbIkludDMyQXJyYXkiLCJwcm90b3R5cGUiXSwiJUpTT05QYXJzZSUiOlsiSlNP''@;'; put 'put ''TiIsInBhcnNlIl0sIiVKU09OU3RyaW5naWZ5JSI6WyJKU09OIiwic3RyaW5naWZ5Il0sIiVNYXBQcm90b3R5cGUlIjpbIk1hcCIsInByb3RvdHlwZSJdLCIlTnVtYmVyUHJvdG90eXBlJSI6WyJOdW1iZXIiLCJwcm90b3R5cGUiXSwiJU9iamVjdFByb3RvdHlwZSUiOlsiT2JqZWN0IiwicHJv''@;'; put 'put ''dG90eXBlIl0sIiVPYmpQcm90b190b1N0cmluZyUiOlsiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciXSwiJU9ialByb3RvX3ZhbHVlT2YlIjpbIk9iamVjdCIsInByb3RvdHlwZSIsInZhbHVlT2YiXSwiJVByb21pc2VQcm90b3R5cGUlIjpbIlByb21pc2UiLCJwcm90b3R5cGUiXSwi''@;'; put 'put ''JVByb21pc2VQcm90b190aGVuJSI6WyJQcm9taXNlIiwicHJvdG90eXBlIiwidGhlbiJdLCIlUHJvbWlzZV9hbGwlIjpbIlByb21pc2UiLCJhbGwiXSwiJVByb21pc2VfcmVqZWN0JSI6WyJQcm9taXNlIiwicmVqZWN0Il0sIiVQcm9taXNlX3Jlc29sdmUlIjpbIlByb21pc2UiLCJyZXNvbHZl''@;'; put 'put ''Il0sIiVSYW5nZUVycm9yUHJvdG90eXBlJSI6WyJSYW5nZUVycm9yIiwicHJvdG90eXBlIl0sIiVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUiOlsiUmVmZXJlbmNlRXJyb3IiLCJwcm90b3R5cGUiXSwiJVJlZ0V4cFByb3RvdHlwZSUiOlsiUmVnRXhwIiwicHJvdG90eXBlIl0sIiVTZXRQcm90''@;'; put 'put ''b3R5cGUlIjpbIlNldCIsInByb3RvdHlwZSJdLCIlU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlIjpbIlNoYXJlZEFycmF5QnVmZmVyIiwicHJvdG90eXBlIl0sIiVTdHJpbmdQcm90b3R5cGUlIjpbIlN0cmluZyIsInByb3RvdHlwZSJdLCIlU3ltYm9sUHJvdG90eXBlJSI6WyJTeW1ib2wi''@;'; put 'put ''LCJwcm90b3R5cGUiXSwiJVN5bnRheEVycm9yUHJvdG90eXBlJSI6WyJTeW50YXhFcnJvciIsInByb3RvdHlwZSJdLCIlVHlwZWRBcnJheVByb3RvdHlwZSUiOlsiVHlwZWRBcnJheSIsInByb3RvdHlwZSJdLCIlVHlwZUVycm9yUHJvdG90eXBlJSI6WyJUeXBlRXJyb3IiLCJwcm90b3R5cGUi''@;'; put 'put ''XSwiJVVpbnQ4QXJyYXlQcm90b3R5cGUlIjpbIlVpbnQ4QXJyYXkiLCJwcm90b3R5cGUiXSwiJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSI6WyJVaW50OENsYW1wZWRBcnJheSIsInByb3RvdHlwZSJdLCIlVWludDE2QXJyYXlQcm90b3R5cGUlIjpbIlVpbnQxNkFycmF5IiwicHJvdG90''@;'; put 'put ''eXBlIl0sIiVVaW50MzJBcnJheVByb3RvdHlwZSUiOlsiVWludDMyQXJyYXkiLCJwcm90b3R5cGUiXSwiJVVSSUVycm9yUHJvdG90eXBlJSI6WyJVUklFcnJvciIsInByb3RvdHlwZSJdLCIlV2Vha01hcFByb3RvdHlwZSUiOlsiV2Vha01hcCIsInByb3RvdHlwZSJdLCIlV2Vha1NldFByb3Rv''@;'; put 'put ''dHlwZSUiOlsiV2Vha1NldCIsInByb3RvdHlwZSJdfSxTZT1aKDg2MTIpLEllPVooNzY0MiksVGU9U2UuY2FsbChGdW5jdGlvbi5jYWxsLEFycmF5LnByb3RvdHlwZS5jb25jYXQpLEVlPVNlLmNhbGwoRnVuY3Rpb24uYXBwbHksQXJyYXkucHJvdG90eXBlLnNwbGljZSksaGU9U2UuY2FsbChG''@;'; put 'put ''dW5jdGlvbi5jYWxsLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksTz1TZS5jYWxsKEZ1bmN0aW9uLmNhbGwsU3RyaW5nLnByb3RvdHlwZS5zbGljZSksej1TZS5jYWxsKEZ1bmN0aW9uLmNhbGwsUmVnRXhwLnByb3RvdHlwZS5leGVjKSxuZT0vW14lLltcXV0rfFxbKD86KC0/XGQrKD86XC5c''@;'; put 'put ''ZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JSQpKS9nLHRlPS9cXChcXCk/L2cseD1mdW5jdGlvbihWKXt2YXIgVD1PKFYsMCwxKSxTPU8oViwtMSk7aWYoIiUiPT09VCYmIiUiIT09Uyl0aHJvdyBuZXcgbGUoImludmFs''@;'; put 'put ''aWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWAiKTtpZigiJSI9PT1TJiYiJSIhPT1UKXRocm93IG5ldyBsZSgiaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBvcGVuaW5nIGAlYCIpO3ZhciBGPVtdO3JldHVybiBoZShWLG5lLGZ1bmN0aW9uKHllLENl''@;'; put 'put ''LERlLFBlKXtGW0YubGVuZ3RoXT1EZT9oZShQZSx0ZSwiJDEiKTpDZXx8eWV9KSxGfSxQPWZ1bmN0aW9uKFYsVCl7dmFyIFMsRj1WO2lmKEllKGtlLEYpJiYoRj0iJSIrKFM9a2VbRl0pWzBdKyIlIiksSWUodmUsRikpe3ZhciB5ZT12ZVtGXTtpZih5ZT09PWZlJiYoeWU9QWUoRikpLHZvaWQg''@;'; put 'put ''MD09PXllJiYhVCl0aHJvdyBuZXcgVygiaW50cmluc2ljICIrVisiIGV4aXN0cywgYnV0IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBmaWxlIGFuIGlzc3VlISIpO3JldHVybnthbGlhczpTLG5hbWU6Rix2YWx1ZTp5ZX19dGhyb3cgbmV3IGxlKCJpbnRyaW5zaWMgIitWKyIgZG9lcyBub3Qg''@;'; put 'put ''ZXhpc3QhIil9O1UuZXhwb3J0cz1mdW5jdGlvbihWLFQpe2lmKCJzdHJpbmciIT10eXBlb2YgVnx8MD09PVYubGVuZ3RoKXRocm93IG5ldyBXKCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmImJvb2xlYW4iIT10eXBl''@;'; put 'put ''b2YgVCl0aHJvdyBuZXcgVygnImFsbG93TWlzc2luZyIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTtpZihudWxsPT09eigvXiU/W14lXSolPyQvZyxWKSl0aHJvdyBuZXcgbGUoImAlYCBtYXkgbm90IGJlIHByZXNlbnQgYW55d2hlcmUgYnV0IGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVu''@;'; put 'put ''ZCBvZiB0aGUgaW50cmluc2ljIG5hbWUiKTt2YXIgUz14KFYpLEY9Uy5sZW5ndGg+MD9TWzBdOiIiLHllPVAoIiUiK0YrIiUiLFQpLENlPXllLm5hbWUsRGU9eWUudmFsdWUsUGU9ITEsUWU9eWUuYWxpYXM7UWUmJihGPVFlWzBdLEVlKFMsVGUoWzAsMV0sUWUpKSk7Zm9yKHZhciAkZT0xLGd0''@;'; put 'put ''PSEwOyRlPFMubGVuZ3RoOyRlKz0xKXt2YXIgeXQ9U1skZV0scHQ9Tyh5dCwwLDEpLG10PU8oeXQsLTEpO2lmKCgnIic9PT1wdHx8IiciPT09cHR8fCJgIj09PXB0fHwnIic9PT1tdHx8IiciPT09bXR8fCJgIj09PW10KSYmcHQhPT1tdCl0aHJvdyBuZXcgbGUoInByb3BlcnR5IG5hbWVzIHdp''@;'; put 'put ''dGggcXVvdGVzIG11c3QgaGF2ZSBtYXRjaGluZyBxdW90ZXMiKTtpZigiY29uc3RydWN0b3IiIT09eXQmJmd0fHwoUGU9ITApLEllKHZlLENlPSIlIisoRis9Ii4iK3l0KSsiJSIpKURlPXZlW0NlXTtlbHNlIGlmKG51bGwhPURlKXtpZighKHl0IGluIERlKSl7aWYoIVQpdGhyb3cgbmV3IFco''@;'; put 'put ''ImJhc2UgaW50cmluc2ljIGZvciAiK1YrIiBleGlzdHMsIGJ1dCB0aGUgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZS4iKTtyZXR1cm59aWYoZWUmJiRlKzE+PVMubGVuZ3RoKXt2YXIgdnQ9ZWUoRGUseXQpO0RlPShndD0hIXZ0KSYmImdldCJpbiB2dCYmISgib3JpZ2luYWxWYWx1ZSJpbiB2''@;'; put 'put ''dC5nZXQpP3Z0LmdldDpEZVt5dF19ZWxzZSBndD1JZShEZSx5dCksRGU9RGVbeXRdO2d0JiYhUGUmJih2ZVtDZV09RGUpfX1yZXR1cm4gRGV9fSw2NzcyOihVLFEsWik9Pnt2YXIgaWU9Wig0MTU1KTtmdW5jdGlvbiBsZShkZSx2ZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv''@;'; put 'put ''cGVydHkuY2FsbChkZSx2ZSl9US5zZXRvcHRzPWZ1bmN0aW9uKGRlLHZlLEFlKXtpZihBZXx8KEFlPXt9KSxBZS5tYXRjaEJhc2UmJi0xPT09dmUuaW5kZXhPZigiLyIpKXtpZihBZS5ub2dsb2JzdGFyKXRocm93IG5ldyBFcnJvcigiYmFzZSBtYXRjaGluZyByZXF1aXJlcyBnbG9ic3RhciIp''@;'; put 'put ''O3ZlPSIqKi8iK3ZlfXZhciBTZTtkZS5zaWxlbnQ9ISFBZS5zaWxlbnQsZGUucGF0dGVybj12ZSxkZS5zdHJpY3Q9ITEhPT1BZS5zdHJpY3QsZGUucmVhbHBhdGg9ISFBZS5yZWFscGF0aCxkZS5yZWFscGF0aENhY2hlPUFlLnJlYWxwYXRoQ2FjaGV8fE9iamVjdC5jcmVhdGUobnVsbCksZGUu''@;'; put 'put ''Zm9sbG93PSEhQWUuZm9sbG93LGRlLmRvdD0hIUFlLmRvdCxkZS5tYXJrPSEhQWUubWFyayxkZS5ub2Rpcj0hIUFlLm5vZGlyLGRlLm5vZGlyJiYoZGUubWFyaz0hMCksZGUuc3luYz0hIUFlLnN5bmMsZGUubm91bmlxdWU9ISFBZS5ub3VuaXF1ZSxkZS5ub251bGw9ISFBZS5ub251bGwsZGUu''@;'; put 'put ''bm9zb3J0PSEhQWUubm9zb3J0LGRlLm5vY2FzZT0hIUFlLm5vY2FzZSxkZS5zdGF0PSEhQWUuc3RhdCxkZS5ub3Byb2Nlc3M9ISFBZS5ub3Byb2Nlc3MsZGUuYWJzb2x1dGU9ISFBZS5hYnNvbHV0ZSxkZS5mcz1BZS5mc3x8WSxkZS5tYXhMZW5ndGg9QWUubWF4TGVuZ3RofHwxLzAsZGUuY2Fj''@;'; put 'put ''aGU9QWUuY2FjaGV8fE9iamVjdC5jcmVhdGUobnVsbCksZGUuc3RhdENhY2hlPUFlLnN0YXRDYWNoZXx8T2JqZWN0LmNyZWF0ZShudWxsKSxkZS5zeW1saW5rcz1BZS5zeW1saW5rc3x8T2JqZWN0LmNyZWF0ZShudWxsKSwoU2U9ZGUpLmlnbm9yZT1BZS5pZ25vcmV8fFtdLEFycmF5LmlzQXJy''@;'; put 'put ''YXkoU2UuaWdub3JlKXx8KFNlLmlnbm9yZT1bU2UuaWdub3JlXSksU2UuaWdub3JlLmxlbmd0aCYmKFNlLmlnbm9yZT1TZS5pZ25vcmUubWFwKHNlKSksZGUuY2hhbmdlZEN3ZD0hMTt2YXIga2U9aWUuY3dkKCk7bGUoQWUsImN3ZCIpPyhkZS5jd2Q9Vy5yZXNvbHZlKEFlLmN3ZCksZGUuY2hh''@;'; put 'put ''bmdlZEN3ZD1kZS5jd2QhPT1rZSk6ZGUuY3dkPWtlLGRlLnJvb3Q9QWUucm9vdHx8Vy5yZXNvbHZlKGRlLmN3ZCwiLyIpLGRlLnJvb3Q9Vy5yZXNvbHZlKGRlLnJvb3QpLCJ3aW4zMiI9PT1pZS5wbGF0Zm9ybSYmKGRlLnJvb3Q9ZGUucm9vdC5yZXBsYWNlKC9cXC9nLCIvIikpLGRlLmN3ZEFi''@;'; put 'put ''cz1lZShkZS5jd2QpP2RlLmN3ZDphZShkZSxkZS5jd2QpLCJ3aW4zMiI9PT1pZS5wbGF0Zm9ybSYmKGRlLmN3ZEFicz1kZS5jd2RBYnMucmVwbGFjZSgvXFwvZywiLyIpKSxkZS5ub21vdW50PSEhQWUubm9tb3VudCxBZS5ub25lZ2F0ZT0hMCxBZS5ub2NvbW1lbnQ9ITAsQWUuYWxsb3dXaW5k''@;'; put 'put ''b3dzRXNjYXBlPSExLGRlLm1pbmltYXRjaD1uZXcgcSh2ZSxBZSksZGUub3B0aW9ucz1kZS5taW5pbWF0Y2gub3B0aW9uc30sUS5vd25Qcm9wPWxlLFEubWFrZUFicz1hZSxRLmZpbmlzaD1mdW5jdGlvbihkZSl7Zm9yKHZhciB2ZT1kZS5ub3VuaXF1ZSxBZT12ZT9bXTpPYmplY3QuY3JlYXRl''@;'; put 'put ''KG51bGwpLGtlPTAsU2U9ZGUubWF0Y2hlcy5sZW5ndGg7a2U8U2U7a2UrKyl7dmFyIEllPWRlLm1hdGNoZXNba2VdO2lmKEllJiYwIT09T2JqZWN0LmtleXMoSWUpLmxlbmd0aCl7dmFyIFRlPU9iamVjdC5rZXlzKEllKTt2ZT9BZS5wdXNoLmFwcGx5KEFlLFRlKTpUZS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKGhlKXtBZVtoZV09ITB9KX1lbHNlIGlmKGRlLm5vbnVsbCl7dmFyIEVlPWRlLm1pbmltYXRjaC5nbG9iU2V0W2tlXTt2ZT9BZS5wdXNoKEVlKTpBZVtFZV09ITB9fWlmKHZlfHwoQWU9T2JqZWN0LmtleXMoQWUpKSxkZS5ub3NvcnR8fChBZT1BZS5zb3J0KEopKSxkZS5tYXJrKXtmb3Io''@;'; put 'put ''a2U9MDtrZTxBZS5sZW5ndGg7a2UrKylBZVtrZV09ZGUuX21hcmsoQWVba2VdKTtkZS5ub2RpciYmKEFlPUFlLmZpbHRlcihmdW5jdGlvbihoZSl7dmFyIE89IS9cLyQvLnRlc3QoaGUpLHo9ZGUuY2FjaGVbaGVdfHxkZS5jYWNoZVthZShkZSxoZSldO3JldHVybiBPJiZ6JiYoTz0iRElSIiE9''@;'; put 'put ''PXomJiFBcnJheS5pc0FycmF5KHopKSxPfSkpfWRlLmlnbm9yZS5sZW5ndGgmJihBZT1BZS5maWx0ZXIoZnVuY3Rpb24oaGUpe3JldHVybiFmZShkZSxoZSl9KSksZGUuZm91bmQ9QWV9LFEubWFyaz1mdW5jdGlvbihkZSx2ZSl7dmFyIEFlPWFlKGRlLHZlKSxrZT1kZS5jYWNoZVtBZV0sU2U9''@;'; put 'put ''dmU7aWYoa2Upe3ZhciBJZT0iRElSIj09PWtlfHxBcnJheS5pc0FycmF5KGtlKSxUZT0iLyI9PT12ZS5zbGljZSgtMSk7aWYoSWUmJiFUZT9TZSs9Ii8iOiFJZSYmVGUmJihTZT1TZS5zbGljZSgwLC0xKSksU2UhPT12ZSl7dmFyIEVlPWFlKGRlLFNlKTtkZS5zdGF0Q2FjaGVbRWVdPWRlLnN0''@;'; put 'put ''YXRDYWNoZVtBZV0sZGUuY2FjaGVbRWVdPWRlLmNhY2hlW0FlXX19cmV0dXJuIFNlfSxRLmlzSWdub3JlZD1mZSxRLmNoaWxkcmVuSWdub3JlZD1mdW5jdGlvbihkZSx2ZSl7cmV0dXJuISFkZS5pZ25vcmUubGVuZ3RoJiZkZS5pZ25vcmUuc29tZShmdW5jdGlvbihBZSl7cmV0dXJuISghQWUu''@;'; put 'put ''Z21hdGNoZXJ8fCFBZS5nbWF0Y2hlci5tYXRjaCh2ZSkpfSl9O3ZhciBZPVooMzcxMCksVz1aKDI1MjApLE49WigxMTcxKSxlZT1aKDQwOTUpLHE9Ti5NaW5pbWF0Y2g7ZnVuY3Rpb24gSihkZSx2ZSl7cmV0dXJuIGRlLmxvY2FsZUNvbXBhcmUodmUsImVuIil9ZnVuY3Rpb24gc2UoZGUpe3Zh''@;'; put 'put ''ciB2ZT1udWxsO2lmKCIvKioiPT09ZGUuc2xpY2UoLTMpKXt2YXIgQWU9ZGUucmVwbGFjZSgvKFwvXCpcKikrJC8sIiIpO3ZlPW5ldyBxKEFlLHtkb3Q6ITB9KX1yZXR1cm57bWF0Y2hlcjpuZXcgcShkZSx7ZG90OiEwfSksZ21hdGNoZXI6dmV9fWZ1bmN0aW9uIGFlKGRlLHZlKXt2YXIgQWU9''@;'; put 'put ''dmU7cmV0dXJuIEFlPSIvIj09PXZlLmNoYXJBdCgwKT9XLmpvaW4oZGUucm9vdCx2ZSk6ZWUodmUpfHwiIj09PXZlP3ZlOmRlLmNoYW5nZWRDd2Q/Vy5yZXNvbHZlKGRlLmN3ZCx2ZSk6Vy5yZXNvbHZlKHZlKSwid2luMzIiPT09aWUucGxhdGZvcm0mJihBZT1BZS5yZXBsYWNlKC9cXC9nLCIv''@;'; put 'put ''IikpLEFlfWZ1bmN0aW9uIGZlKGRlLHZlKXtyZXR1cm4hIWRlLmlnbm9yZS5sZW5ndGgmJmRlLmlnbm9yZS5zb21lKGZ1bmN0aW9uKEFlKXtyZXR1cm4gQWUubWF0Y2hlci5tYXRjaCh2ZSl8fCEoIUFlLmdtYXRjaGVyfHwhQWUuZ21hdGNoZXIubWF0Y2godmUpKX0pfX0sMjg4NDooVSxRLFop''@;'; put 'put ''PT57dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KTtVLmV4cG9ydHM9VGU7dmFyIFk9Wig3MzM0KSxXPVooMTE3MSksTj1aKDU3MTcpLGVlPVooNzE4NykuRXZlbnRFbWl0dGVyLHE9WigyNTIwKSxKPVooOTI4Miksc2U9Wig0MDk1KSxhZT1aKDQ3NTEpLGZlPVooNjc3MiksZGU9ZmUuc2V0b3B0''@;'; put 'put ''cyx2ZT1mZS5vd25Qcm9wLEFlPVooNzg0NCksa2U9KFooOTUzOSksZmUuY2hpbGRyZW5JZ25vcmVkKSxTZT1mZS5pc0lnbm9yZWQsSWU9Wig3NzgpO2Z1bmN0aW9uIFRlKE8seixuZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHomJihuZT16LHo9e30pLHp8fCh6PXt9KSx6LnN5bmMpe2lmKG5l''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIHByb3ZpZGVkIHRvIHN5bmMgZ2xvYiIpO3JldHVybiBhZShPLHopfXJldHVybiBuZXcgaGUoTyx6LG5lKX1UZS5zeW5jPWFlO3ZhciBFZT1UZS5HbG9iU3luYz1hZS5HbG9iU3luYztmdW5jdGlvbiBoZShPLHosbmUpe2lmKCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiB6JiYobmU9eix6PW51bGwpLHomJnouc3luYyl7aWYobmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iIik7cmV0dXJuIG5ldyBFZShPLHopfWlmKCEodGhpcyBpbnN0YW5jZW9mIGhlKSlyZXR1cm4gbmV3IGhlKE8seixuZSk7''@;'; put 'put ''ZGUodGhpcyxPLHopLHRoaXMuX2RpZFJlYWxQYXRoPSExO3ZhciB0ZT10aGlzLm1pbmltYXRjaC5zZXQubGVuZ3RoO3RoaXMubWF0Y2hlcz1uZXcgQXJyYXkodGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBuZSYmKG5lPUllKG5lKSx0aGlzLm9uKCJlcnJvciIsbmUpLHRoaXMub24oImVuZCIsZnVu''@;'; put 'put ''Y3Rpb24oVCl7bmUobnVsbCxUKX0pKTt2YXIgeD10aGlzO2lmKHRoaXMuX3Byb2Nlc3Npbmc9MCx0aGlzLl9lbWl0UXVldWU9W10sdGhpcy5fcHJvY2Vzc1F1ZXVlPVtdLHRoaXMucGF1c2VkPSExLHRoaXMubm9wcm9jZXNzKXJldHVybiB0aGlzO2lmKDA9PT10ZSlyZXR1cm4gVigpO2Zvcih2''@;'; put 'put ''YXIgUD0wO1A8dGU7UCsrKXRoaXMuX3Byb2Nlc3ModGhpcy5taW5pbWF0Y2guc2V0W1BdLFAsITEsVik7ZnVuY3Rpb24gVigpey0teC5fcHJvY2Vzc2luZyx4Ll9wcm9jZXNzaW5nPD0wJiZ4Ll9maW5pc2goKX19VGUuZ2xvYj1UZSxUZS5oYXNNYWdpYz1mdW5jdGlvbihPLHope3ZhciBuZT1m''@;'; put 'put ''dW5jdGlvbihQLFYpe2lmKG51bGw9PT1WfHwib2JqZWN0IiE9dHlwZW9mIFYpcmV0dXJuIFA7Zm9yKHZhciBUPU9iamVjdC5rZXlzKFYpLFM9VC5sZW5ndGg7Uy0tOylQW1RbU11dPVZbVFtTXV07cmV0dXJuIFB9KHt9LHopO25lLm5vcHJvY2Vzcz0hMDt2YXIgdGU9bmV3IGhlKE8sbmUpLm1p''@;'; put 'put ''bmltYXRjaC5zZXQ7aWYoIU8pcmV0dXJuITE7aWYodGUubGVuZ3RoPjEpcmV0dXJuITA7Zm9yKHZhciB4PTA7eDx0ZVswXS5sZW5ndGg7eCsrKWlmKCJzdHJpbmciIT10eXBlb2YgdGVbMF1beF0pcmV0dXJuITA7cmV0dXJuITF9LFRlLkdsb2I9aGUsTihoZSxlZSksaGUucHJvdG90eXBlLl9m''@;'; put 'put ''aW5pc2g9ZnVuY3Rpb24oKXtpZihKKHRoaXMgaW5zdGFuY2VvZiBoZSksIXRoaXMuYWJvcnRlZCl7aWYodGhpcy5yZWFscGF0aCYmIXRoaXMuX2RpZFJlYWxwYXRoKXJldHVybiB0aGlzLl9yZWFscGF0aCgpO2ZlLmZpbmlzaCh0aGlzKSx0aGlzLmVtaXQoImVuZCIsdGhpcy5mb3VuZCl9fSxo''@;'; put 'put ''ZS5wcm90b3R5cGUuX3JlYWxwYXRoPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2RpZFJlYWxwYXRoKXt0aGlzLl9kaWRSZWFscGF0aD0hMDt2YXIgTz10aGlzLm1hdGNoZXMubGVuZ3RoO2lmKDA9PT1PKXJldHVybiB0aGlzLl9maW5pc2goKTtmb3IodmFyIHo9dGhpcyxuZT0wO25lPHRoaXMubWF0''@;'; put 'put ''Y2hlcy5sZW5ndGg7bmUrKyl0aGlzLl9yZWFscGF0aFNldChuZSx0ZSl9ZnVuY3Rpb24gdGUoKXswPT0tLU8mJnouX2ZpbmlzaCgpfX0saGUucHJvdG90eXBlLl9yZWFscGF0aFNldD1mdW5jdGlvbihPLHope3ZhciBuZT10aGlzLm1hdGNoZXNbT107aWYoIW5lKXJldHVybiB6KCk7dmFyIHRl''@;'; put 'put ''PU9iamVjdC5rZXlzKG5lKSx4PXRoaXMsUD10ZS5sZW5ndGg7aWYoMD09PVApcmV0dXJuIHooKTt2YXIgVj10aGlzLm1hdGNoZXNbT109T2JqZWN0LmNyZWF0ZShudWxsKTt0ZS5mb3JFYWNoKGZ1bmN0aW9uKFQsUyl7VD14Ll9tYWtlQWJzKFQpLFkucmVhbHBhdGgoVCx4LnJlYWxwYXRoQ2Fj''@;'; put 'put ''aGUsZnVuY3Rpb24oRix5ZSl7Rj8ic3RhdCI9PT1GLnN5c2NhbGw/VltUXT0hMDp4LmVtaXQoImVycm9yIixGKTpWW3llXT0hMCwwPT0tLVAmJih4Lm1hdGNoZXNbT109Vix6KCkpfSl9KX0saGUucHJvdG90eXBlLl9tYXJrPWZ1bmN0aW9uKE8pe3JldHVybiBmZS5tYXJrKHRoaXMsTyl9LGhl''@;'; put 'put ''LnByb3RvdHlwZS5fbWFrZUFicz1mdW5jdGlvbihPKXtyZXR1cm4gZmUubWFrZUFicyh0aGlzLE8pfSxoZS5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmFib3J0ZWQ9ITAsdGhpcy5lbWl0KCJhYm9ydCIpfSxoZS5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLnBhdXNl''@;'; put 'put ''ZHx8KHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdCgicGF1c2UiKSl9LGhlLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXtpZih0aGlzLnBhdXNlZCl7aWYodGhpcy5lbWl0KCJyZXN1bWUiKSx0aGlzLnBhdXNlZD0hMSx0aGlzLl9lbWl0UXVldWUubGVuZ3RoKXt2YXIgTz10aGlzLl9lbWl0''@;'; put 'put ''UXVldWUuc2xpY2UoMCk7dGhpcy5fZW1pdFF1ZXVlLmxlbmd0aD0wO2Zvcih2YXIgej0wO3o8Ty5sZW5ndGg7eisrKXt2YXIgbmU9T1t6XTt0aGlzLl9lbWl0TWF0Y2gobmVbMF0sbmVbMV0pfX1pZih0aGlzLl9wcm9jZXNzUXVldWUubGVuZ3RoKXt2YXIgdGU9dGhpcy5fcHJvY2Vzc1F1ZXVl''@;'; put 'put ''LnNsaWNlKDApO2Zvcih0aGlzLl9wcm9jZXNzUXVldWUubGVuZ3RoPTAsej0wO3o8dGUubGVuZ3RoO3orKyl7dmFyIHg9dGVbel07dGhpcy5fcHJvY2Vzc2luZy0tLHRoaXMuX3Byb2Nlc3MoeFswXSx4WzFdLHhbMl0seFszXSl9fX19LGhlLnByb3RvdHlwZS5fcHJvY2Vzcz1mdW5jdGlvbihP''@;'; put 'put ''LHosbmUsdGUpe2lmKEoodGhpcyBpbnN0YW5jZW9mIGhlKSxKKCJmdW5jdGlvbiI9PXR5cGVvZiB0ZSksIXRoaXMuYWJvcnRlZClpZih0aGlzLl9wcm9jZXNzaW5nKyssdGhpcy5wYXVzZWQpdGhpcy5fcHJvY2Vzc1F1ZXVlLnB1c2goW08seixuZSx0ZV0pO2Vsc2V7Zm9yKHZhciB4LFA9MDsi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIE9bUF07KVArKztzd2l0Y2goUCl7Y2FzZSBPLmxlbmd0aDpyZXR1cm4gdm9pZCB0aGlzLl9wcm9jZXNzU2ltcGxlKE8uam9pbigiLyIpLHosdGUpO2Nhc2UgMDp4PW51bGw7YnJlYWs7ZGVmYXVsdDp4PU8uc2xpY2UoMCxQKS5qb2luKCIvIil9dmFyIFYsVD1PLnNs''@;'; put 'put ''aWNlKFApO251bGw9PT14P1Y9Ii4iOigoc2UoeCl8fHNlKE8ubWFwKGZ1bmN0aW9uKEYpe3JldHVybiJzdHJpbmciPT10eXBlb2YgRj9GOiJbKl0ifSkuam9pbigiLyIpKSkmJih4JiZzZSh4KXx8KHg9Ii8iK3gpKSxWPXgpO3ZhciBTPXRoaXMuX21ha2VBYnMoVik7aWYoa2UodGhpcyxWKSly''@;'; put 'put ''ZXR1cm4gdGUoKTtUWzBdPT09Vy5HTE9CU1RBUj90aGlzLl9wcm9jZXNzR2xvYlN0YXIoeCxWLFMsVCx6LG5lLHRlKTp0aGlzLl9wcm9jZXNzUmVhZGRpcih4LFYsUyxULHosbmUsdGUpfX0saGUucHJvdG90eXBlLl9wcm9jZXNzUmVhZGRpcj1mdW5jdGlvbihPLHosbmUsdGUseCxQLFYpe3Zh''@;'; put 'put ''ciBUPXRoaXM7dGhpcy5fcmVhZGRpcihuZSxQLGZ1bmN0aW9uKFMsRil7cmV0dXJuIFQuX3Byb2Nlc3NSZWFkZGlyMihPLHosbmUsdGUseCxQLEYsVil9KX0saGUucHJvdG90eXBlLl9wcm9jZXNzUmVhZGRpcjI9ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCxWLFQpe2lmKCFWKXJldHVybiBUKCk7''@;'; put 'put ''Zm9yKHZhciBTPXRlWzBdLEY9ISF0aGlzLm1pbmltYXRjaC5uZWdhdGUsQ2U9dGhpcy5kb3R8fCIuIj09PVMuX2dsb2IuY2hhckF0KDApLERlPVtdLFBlPTA7UGU8Vi5sZW5ndGg7UGUrKykoIi4iIT09KCRlPVZbUGVdKS5jaGFyQXQoMCl8fENlKSYmKEYmJiFPPyEkZS5tYXRjaChTKTokZS5t''@;'; put 'put ''YXRjaChTKSkmJkRlLnB1c2goJGUpO3ZhciBRZT1EZS5sZW5ndGg7aWYoMD09PVFlKXJldHVybiBUKCk7aWYoMT09PXRlLmxlbmd0aCYmIXRoaXMubWFyayYmIXRoaXMuc3RhdCl7Zm9yKHRoaXMubWF0Y2hlc1t4XXx8KHRoaXMubWF0Y2hlc1t4XT1PYmplY3QuY3JlYXRlKG51bGwpKSxQZT0w''@;'; put 'put ''O1BlPFFlO1BlKyspe3ZhciAkZT1EZVtQZV07TyYmKCRlPSIvIiE9PU8/TysiLyIrJGU6TyskZSksIi8iIT09JGUuY2hhckF0KDApfHx0aGlzLm5vbW91bnR8fCgkZT1xLmpvaW4odGhpcy5yb290LCRlKSksdGhpcy5fZW1pdE1hdGNoKHgsJGUpfXJldHVybiBUKCl9Zm9yKHRlLnNoaWZ0KCks''@;'; put 'put ''UGU9MDtQZTxRZTtQZSsrKSRlPURlW1BlXSxPJiYoJGU9Ii8iIT09Tz9PKyIvIiskZTpPKyRlKSx0aGlzLl9wcm9jZXNzKFskZV0uY29uY2F0KHRlKSx4LFAsVCk7VCgpfSxoZS5wcm90b3R5cGUuX2VtaXRNYXRjaD1mdW5jdGlvbihPLHope2lmKCF0aGlzLmFib3J0ZWQmJiFTZSh0aGlzLHop''@;'; put 'put ''KWlmKHRoaXMucGF1c2VkKXRoaXMuX2VtaXRRdWV1ZS5wdXNoKFtPLHpdKTtlbHNle3ZhciBuZT1zZSh6KT96OnRoaXMuX21ha2VBYnMoeik7aWYodGhpcy5tYXJrJiYoej10aGlzLl9tYXJrKHopKSx0aGlzLmFic29sdXRlJiYoej1uZSksIXRoaXMubWF0Y2hlc1tPXVt6XSl7aWYodGhpcy5u''@;'; put 'put ''b2Rpcil7dmFyIHRlPXRoaXMuY2FjaGVbbmVdO2lmKCJESVIiPT09dGV8fEFycmF5LmlzQXJyYXkodGUpKXJldHVybn10aGlzLm1hdGNoZXNbT11bel09ITA7dmFyIHg9dGhpcy5zdGF0Q2FjaGVbbmVdO3gmJnRoaXMuZW1pdCgic3RhdCIseix4KSx0aGlzLmVtaXQoIm1hdGNoIix6KX19fSxo''@;'; put 'put ''ZS5wcm90b3R5cGUuX3JlYWRkaXJJbkdsb2JTdGFyPWZ1bmN0aW9uKE8seil7aWYoIXRoaXMuYWJvcnRlZCl7aWYodGhpcy5mb2xsb3cpcmV0dXJuIHRoaXMuX3JlYWRkaXIoTywhMSx6KTt2YXIgbmU9dGhpcyx0ZT1BZSgibHN0YXRcMCIrTyxmdW5jdGlvbih4LFApe2lmKHgmJiJFTk9FTlQi''@;'; put 'put ''PT09eC5jb2RlKXJldHVybiB6KCk7dmFyIFY9UCYmUC5pc1N5bWJvbGljTGluaygpO25lLnN5bWxpbmtzW09dPVYsVnx8IVB8fFAuaXNEaXJlY3RvcnkoKT9uZS5fcmVhZGRpcihPLCExLHopOihuZS5jYWNoZVtPXT0iRklMRSIseigpKX0pO3RlJiZuZS5mcy5sc3RhdChPLHRlKX19LGhlLnBy''@;'; put 'put ''b3RvdHlwZS5fcmVhZGRpcj1mdW5jdGlvbihPLHosbmUpe2lmKCF0aGlzLmFib3J0ZWQmJihuZT1BZSgicmVhZGRpclwwIitPKyJcMCIreixuZSkpKXtpZih6JiYhdmUodGhpcy5zeW1saW5rcyxPKSlyZXR1cm4gdGhpcy5fcmVhZGRpckluR2xvYlN0YXIoTyxuZSk7aWYodmUodGhpcy5jYWNo''@;'; put 'put ''ZSxPKSl7dmFyIHRlPXRoaXMuY2FjaGVbT107aWYoIXRlfHwiRklMRSI9PT10ZSlyZXR1cm4gbmUoKTtpZihBcnJheS5pc0FycmF5KHRlKSlyZXR1cm4gbmUobnVsbCx0ZSl9dGhpcy5mcy5yZWFkZGlyKE8sKHg9dGhpcyxQPU8sVj1uZSxmdW5jdGlvbihULFMpe1Q/eC5fcmVhZGRpckVycm9y''@;'; put 'put ''KFAsVCxWKTp4Ll9yZWFkZGlyRW50cmllcyhQLFMsVil9KSl9dmFyIHgsUCxWfSxoZS5wcm90b3R5cGUuX3JlYWRkaXJFbnRyaWVzPWZ1bmN0aW9uKE8seixuZSl7aWYoIXRoaXMuYWJvcnRlZCl7aWYoIXRoaXMubWFyayYmIXRoaXMuc3RhdClmb3IodmFyIHRlPTA7dGU8ei5sZW5ndGg7dGUr''@;'; put 'put ''Kyl7dmFyIHg9elt0ZV07dGhpcy5jYWNoZVt4PSIvIj09PU8/Tyt4Ok8rIi8iK3hdPSEwfXJldHVybiB0aGlzLmNhY2hlW09dPXosbmUobnVsbCx6KX19LGhlLnByb3RvdHlwZS5fcmVhZGRpckVycm9yPWZ1bmN0aW9uKE8seixuZSl7aWYoIXRoaXMuYWJvcnRlZCl7c3dpdGNoKHouY29kZSl7''@;'; put 'put ''Y2FzZSJFTk9UU1VQIjpjYXNlIkVOT1RESVIiOnZhciB0ZT10aGlzLl9tYWtlQWJzKE8pO2lmKHRoaXMuY2FjaGVbdGVdPSJGSUxFIix0ZT09PXRoaXMuY3dkQWJzKXt2YXIgeD1uZXcgRXJyb3Ioei5jb2RlKyIgaW52YWxpZCBjd2QgIit0aGlzLmN3ZCk7eC5wYXRoPXRoaXMuY3dkLHguY29k''@;'; put 'put ''ZT16LmNvZGUsdGhpcy5lbWl0KCJlcnJvciIseCksdGhpcy5hYm9ydCgpfWJyZWFrO2Nhc2UiRU5PRU5UIjpjYXNlIkVMT09QIjpjYXNlIkVOQU1FVE9PTE9ORyI6Y2FzZSJVTktOT1dOIjp0aGlzLmNhY2hlW3RoaXMuX21ha2VBYnMoTyldPSExO2JyZWFrO2RlZmF1bHQ6dGhpcy5jYWNoZVt0''@;'; put 'put ''aGlzLl9tYWtlQWJzKE8pXT0hMSx0aGlzLnN0cmljdCYmKHRoaXMuZW1pdCgiZXJyb3IiLHopLHRoaXMuYWJvcnQoKSksdGhpcy5zaWxlbnR8fGxlLmVycm9yKCJnbG9iIGVycm9yIix6KX1yZXR1cm4gbmUoKX19LGhlLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyPWZ1bmN0aW9uKE8seixu''@;'; put 'put ''ZSx0ZSx4LFAsVil7dmFyIFQ9dGhpczt0aGlzLl9yZWFkZGlyKG5lLFAsZnVuY3Rpb24oUyxGKXtULl9wcm9jZXNzR2xvYlN0YXIyKE8seixuZSx0ZSx4LFAsRixWKX0pfSxoZS5wcm90b3R5cGUuX3Byb2Nlc3NHbG9iU3RhcjI9ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCxWLFQpe2lmKCFWKXJl''@;'; put 'put ''dHVybiBUKCk7dmFyIFM9dGUuc2xpY2UoMSksRj1PP1tPXTpbXSx5ZT1GLmNvbmNhdChTKTt0aGlzLl9wcm9jZXNzKHllLHgsITEsVCk7dmFyIERlPVYubGVuZ3RoO2lmKHRoaXMuc3ltbGlua3NbbmVdJiZQKXJldHVybiBUKCk7Zm9yKHZhciBQZT0wO1BlPERlO1BlKyspaWYoIi4iIT09VltQ''@;'; put 'put ''ZV0uY2hhckF0KDApfHx0aGlzLmRvdCl7dmFyIFFlPUYuY29uY2F0KFZbUGVdLFMpO3RoaXMuX3Byb2Nlc3MoUWUseCwhMCxUKTt2YXIgJGU9Ri5jb25jYXQoVltQZV0sdGUpO3RoaXMuX3Byb2Nlc3MoJGUseCwhMCxUKX1UKCl9LGhlLnByb3RvdHlwZS5fcHJvY2Vzc1NpbXBsZT1mdW5jdGlv''@;'; put 'put ''bihPLHosbmUpe3ZhciB0ZT10aGlzO3RoaXMuX3N0YXQoTyxmdW5jdGlvbih4LFApe3RlLl9wcm9jZXNzU2ltcGxlMihPLHoseCxQLG5lKX0pfSxoZS5wcm90b3R5cGUuX3Byb2Nlc3NTaW1wbGUyPWZ1bmN0aW9uKE8seixuZSx0ZSx4KXtpZih0aGlzLm1hdGNoZXNbel18fCh0aGlzLm1hdGNo''@;'; put 'put ''ZXNbel09T2JqZWN0LmNyZWF0ZShudWxsKSksIXRlKXJldHVybiB4KCk7aWYoTyYmc2UoTykmJiF0aGlzLm5vbW91bnQpe3ZhciBQPS9bXC9cXF0kLy50ZXN0KE8pOyIvIj09PU8uY2hhckF0KDApP089cS5qb2luKHRoaXMucm9vdCxPKTooTz1xLnJlc29sdmUodGhpcy5yb290LE8pLFAmJihP''@;'; put 'put ''Kz0iLyIpKX0id2luMzIiPT09aWUucGxhdGZvcm0mJihPPU8ucmVwbGFjZSgvXFwvZywiLyIpKSx0aGlzLl9lbWl0TWF0Y2goeixPKSx4KCl9LGhlLnByb3RvdHlwZS5fc3RhdD1mdW5jdGlvbihPLHope3ZhciBuZT10aGlzLl9tYWtlQWJzKE8pLHRlPSIvIj09PU8uc2xpY2UoLTEpO2lmKE8u''@;'; put 'put ''bGVuZ3RoPnRoaXMubWF4TGVuZ3RoKXJldHVybiB6KCk7aWYoIXRoaXMuc3RhdCYmdmUodGhpcy5jYWNoZSxuZSkpe3ZhciB4PXRoaXMuY2FjaGVbbmVdO2lmKEFycmF5LmlzQXJyYXkoeCkmJih4PSJESVIiKSwhdGV8fCJESVIiPT09eClyZXR1cm4geihudWxsLHgpO2lmKHRlJiYiRklMRSI9''@;'; put 'put ''PT14KXJldHVybiB6KCl9dmFyIFA9dGhpcy5zdGF0Q2FjaGVbbmVdO2lmKHZvaWQgMCE9PVApe2lmKCExPT09UClyZXR1cm4geihudWxsLFApO3ZhciBWPVAuaXNEaXJlY3RvcnkoKT8iRElSIjoiRklMRSI7cmV0dXJuIHRlJiYiRklMRSI9PT1WP3ooKTp6KG51bGwsVixQKX12YXIgVD10aGlz''@;'; put 'put ''LFM9QWUoInN0YXRcMCIrbmUsZnVuY3Rpb24oRix5ZSl7aWYoeWUmJnllLmlzU3ltYm9saWNMaW5rKCkpcmV0dXJuIFQuZnMuc3RhdChuZSxmdW5jdGlvbihDZSxEZSl7Q2U/VC5fc3RhdDIoTyxuZSxudWxsLHllLHopOlQuX3N0YXQyKE8sbmUsQ2UsRGUseil9KTtULl9zdGF0MihPLG5lLEYs''@;'; put 'put ''eWUseil9KTtTJiZULmZzLmxzdGF0KG5lLFMpfSxoZS5wcm90b3R5cGUuX3N0YXQyPWZ1bmN0aW9uKE8seixuZSx0ZSx4KXtpZihuZSYmKCJFTk9FTlQiPT09bmUuY29kZXx8IkVOT1RESVIiPT09bmUuY29kZSkpcmV0dXJuIHRoaXMuc3RhdENhY2hlW3pdPSExLHgoKTt2YXIgUD0iLyI9PT1P''@;'; put 'put ''LnNsaWNlKC0xKTtpZih0aGlzLnN0YXRDYWNoZVt6XT10ZSwiLyI9PT16LnNsaWNlKC0xKSYmdGUmJiF0ZS5pc0RpcmVjdG9yeSgpKXJldHVybiB4KG51bGwsITEsdGUpO3ZhciBWPSEwO3JldHVybiB0ZSYmKFY9dGUuaXNEaXJlY3RvcnkoKT8iRElSIjoiRklMRSIpLHRoaXMuY2FjaGVbel09''@;'; put 'put ''dGhpcy5jYWNoZVt6XXx8VixQJiYiRklMRSI9PT1WP3goKTp4KG51bGwsVix0ZSl9fSw0NzUxOihVLFEsWik9Pnt2YXIgaWU9Wig1MTA4KSxsZT1aKDQxNTUpO1UuZXhwb3J0cz12ZSx2ZS5HbG9iU3luYz1BZTt2YXIgWT1aKDczMzQpLFc9WigxMTcxKSxOPShaKDI4ODQpLFooOTUzOSksWigy''@;'; put 'put ''NTIwKSksZWU9Wig5MjgyKSxxPVooNDA5NSksSj1aKDY3NzIpLHNlPUouc2V0b3B0cyxhZT1KLm93blByb3AsZmU9Si5jaGlsZHJlbklnbm9yZWQsZGU9Si5pc0lnbm9yZWQ7ZnVuY3Rpb24gdmUoa2UsU2Upe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBTZXx8Mz09PWFyZ3VtZW50cy5sZW5ndGgp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iXG5TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3Mvbm9kZS1nbG9iL2lzc3Vlcy8xNjciKTtyZXR1cm4gbmV3IEFlKGtlLFNlKS5mb3VuZH1mdW5jdGlvbiBBZShrZSxTZSl7aWYoIWtlKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigibXVzdCBwcm92aWRlIHBhdHRlcm4iKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgU2V8fDM9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIHByb3ZpZGVkIHRvIHN5bmMgZ2xvYlxuU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNz''@;'; put 'put ''L25vZGUtZ2xvYi9pc3N1ZXMvMTY3Iik7aWYoISh0aGlzIGluc3RhbmNlb2YgQWUpKXJldHVybiBuZXcgQWUoa2UsU2UpO2lmKHNlKHRoaXMsa2UsU2UpLHRoaXMubm9wcm9jZXNzKXJldHVybiB0aGlzO3ZhciBJZT10aGlzLm1pbmltYXRjaC5zZXQubGVuZ3RoO3RoaXMubWF0Y2hlcz1uZXcg''@;'; put 'put ''QXJyYXkoSWUpO2Zvcih2YXIgVGU9MDtUZTxJZTtUZSsrKXRoaXMuX3Byb2Nlc3ModGhpcy5taW5pbWF0Y2guc2V0W1RlXSxUZSwhMSk7dGhpcy5fZmluaXNoKCl9QWUucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXtpZihlZS5vayh0aGlzIGluc3RhbmNlb2YgQWUpLHRoaXMucmVhbHBh''@;'; put 'put ''dGgpe3ZhciBrZT10aGlzO3RoaXMubWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKFNlLEllKXt2YXIgVGU9a2UubWF0Y2hlc1tJZV09T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIEVlIGluIFNlKXRyeXtFZT1rZS5fbWFrZUFicyhFZSksVGVbWS5yZWFscGF0aFN5bmMoRWUsa2UucmVhbHBh''@;'; put 'put ''dGhDYWNoZSldPSEwfWNhdGNoKGhlKXtpZigic3RhdCIhPT1oZS5zeXNjYWxsKXRocm93IGhlO1RlW2tlLl9tYWtlQWJzKEVlKV09ITB9fSl9Si5maW5pc2godGhpcyl9LEFlLnByb3RvdHlwZS5fcHJvY2Vzcz1mdW5jdGlvbihrZSxTZSxJZSl7ZWUub2sodGhpcyBpbnN0YW5jZW9mIEFlKTtm''@;'; put 'put ''b3IodmFyIFRlLEVlPTA7InN0cmluZyI9PXR5cGVvZiBrZVtFZV07KUVlKys7c3dpdGNoKEVlKXtjYXNlIGtlLmxlbmd0aDpyZXR1cm4gdm9pZCB0aGlzLl9wcm9jZXNzU2ltcGxlKGtlLmpvaW4oIi8iKSxTZSk7Y2FzZSAwOlRlPW51bGw7YnJlYWs7ZGVmYXVsdDpUZT1rZS5zbGljZSgwLEVl''@;'; put 'put ''KS5qb2luKCIvIil9dmFyIGhlLE89a2Uuc2xpY2UoRWUpO251bGw9PT1UZT9oZT0iLiI6KChxKFRlKXx8cShrZS5tYXAoZnVuY3Rpb24obmUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgbmU/bmU6IlsqXSJ9KS5qb2luKCIvIikpKSYmKFRlJiZxKFRlKXx8KFRlPSIvIitUZSkpLGhlPVRlKTt2''@;'; put 'put ''YXIgej10aGlzLl9tYWtlQWJzKGhlKTtmZSh0aGlzLGhlKXx8KE9bMF09PT1XLkdMT0JTVEFSP3RoaXMuX3Byb2Nlc3NHbG9iU3RhcihUZSxoZSx6LE8sU2UsSWUpOnRoaXMuX3Byb2Nlc3NSZWFkZGlyKFRlLGhlLHosTyxTZSxJZSkpfSxBZS5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkZGlyPWZ1''@;'; put 'put ''bmN0aW9uKGtlLFNlLEllLFRlLEVlLGhlKXt2YXIgTz10aGlzLl9yZWFkZGlyKEllLGhlKTtpZihPKXtmb3IodmFyIHo9VGVbMF0sbmU9ISF0aGlzLm1pbmltYXRjaC5uZWdhdGUseD10aGlzLmRvdHx8Ii4iPT09ei5fZ2xvYi5jaGFyQXQoMCksUD1bXSxWPTA7VjxPLmxlbmd0aDtWKyspKCIu''@;'; put 'put ''IiE9PShGPU9bVl0pLmNoYXJBdCgwKXx8eCkmJihuZSYmIWtlPyFGLm1hdGNoKHopOkYubWF0Y2goeikpJiZQLnB1c2goRik7dmFyIFQ9UC5sZW5ndGg7aWYoMCE9PVQpaWYoMSE9PVRlLmxlbmd0aHx8dGhpcy5tYXJrfHx0aGlzLnN0YXQpZm9yKFRlLnNoaWZ0KCksVj0wO1Y8VDtWKyspRj1Q''@;'; put 'put ''W1ZdLHRoaXMuX3Byb2Nlc3MoKGtlP1trZSxGXTpbRl0pLmNvbmNhdChUZSksRWUsaGUpO2Vsc2UgZm9yKHRoaXMubWF0Y2hlc1tFZV18fCh0aGlzLm1hdGNoZXNbRWVdPU9iamVjdC5jcmVhdGUobnVsbCkpLFY9MDtWPFQ7VisrKXt2YXIgRj1QW1ZdO2tlJiYoRj0iLyIhPT1rZS5zbGljZSgt''@;'; put 'put ''MSk/a2UrIi8iK0Y6a2UrRiksIi8iIT09Ri5jaGFyQXQoMCl8fHRoaXMubm9tb3VudHx8KEY9Ti5qb2luKHRoaXMucm9vdCxGKSksdGhpcy5fZW1pdE1hdGNoKEVlLEYpfX19LEFlLnByb3RvdHlwZS5fZW1pdE1hdGNoPWZ1bmN0aW9uKGtlLFNlKXtpZighZGUodGhpcyxTZSkpe3ZhciBJZT10''@;'; put 'put ''aGlzLl9tYWtlQWJzKFNlKTtpZih0aGlzLm1hcmsmJihTZT10aGlzLl9tYXJrKFNlKSksdGhpcy5hYnNvbHV0ZSYmKFNlPUllKSwhdGhpcy5tYXRjaGVzW2tlXVtTZV0pe2lmKHRoaXMubm9kaXIpe3ZhciBUZT10aGlzLmNhY2hlW0llXTtpZigiRElSIj09PVRlfHxBcnJheS5pc0FycmF5KFRl''@;'; put 'put ''KSlyZXR1cm59dGhpcy5tYXRjaGVzW2tlXVtTZV09ITAsdGhpcy5zdGF0JiZ0aGlzLl9zdGF0KFNlKX19fSxBZS5wcm90b3R5cGUuX3JlYWRkaXJJbkdsb2JTdGFyPWZ1bmN0aW9uKGtlKXtpZih0aGlzLmZvbGxvdylyZXR1cm4gdGhpcy5fcmVhZGRpcihrZSwhMSk7dmFyIFNlLEllO3RyeXtJ''@;'; put 'put ''ZT10aGlzLmZzLmxzdGF0U3luYyhrZSl9Y2F0Y2goRWUpe2lmKCJFTk9FTlQiPT09RWUuY29kZSlyZXR1cm4gbnVsbH12YXIgVGU9SWUmJkllLmlzU3ltYm9saWNMaW5rKCk7cmV0dXJuIHRoaXMuc3ltbGlua3Nba2VdPVRlLFRlfHwhSWV8fEllLmlzRGlyZWN0b3J5KCk/U2U9dGhpcy5fcmVh''@;'; put 'put ''ZGRpcihrZSwhMSk6dGhpcy5jYWNoZVtrZV09IkZJTEUiLFNlfSxBZS5wcm90b3R5cGUuX3JlYWRkaXI9ZnVuY3Rpb24oa2UsU2Upe2lmKFNlJiYhYWUodGhpcy5zeW1saW5rcyxrZSkpcmV0dXJuIHRoaXMuX3JlYWRkaXJJbkdsb2JTdGFyKGtlKTtpZihhZSh0aGlzLmNhY2hlLGtlKSl7dmFy''@;'; put 'put ''IEllPXRoaXMuY2FjaGVba2VdO2lmKCFJZXx8IkZJTEUiPT09SWUpcmV0dXJuIG51bGw7aWYoQXJyYXkuaXNBcnJheShJZSkpcmV0dXJuIEllfXRyeXtyZXR1cm4gdGhpcy5fcmVhZGRpckVudHJpZXMoa2UsdGhpcy5mcy5yZWFkZGlyU3luYyhrZSkpfWNhdGNoKFRlKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''cmVhZGRpckVycm9yKGtlLFRlKSxudWxsfX0sQWUucHJvdG90eXBlLl9yZWFkZGlyRW50cmllcz1mdW5jdGlvbihrZSxTZSl7aWYoIXRoaXMubWFyayYmIXRoaXMuc3RhdClmb3IodmFyIEllPTA7SWU8U2UubGVuZ3RoO0llKyspe3ZhciBUZT1TZVtJZV07dGhpcy5jYWNoZVtUZT0iLyI9PT1r''@;'; put 'put ''ZT9rZStUZTprZSsiLyIrVGVdPSEwfXJldHVybiB0aGlzLmNhY2hlW2tlXT1TZSxTZX0sQWUucHJvdG90eXBlLl9yZWFkZGlyRXJyb3I9ZnVuY3Rpb24oa2UsU2Upe3N3aXRjaChTZS5jb2RlKXtjYXNlIkVOT1RTVVAiOmNhc2UiRU5PVERJUiI6dmFyIEllPXRoaXMuX21ha2VBYnMoa2UpO2lm''@;'; put 'put ''KHRoaXMuY2FjaGVbSWVdPSJGSUxFIixJZT09PXRoaXMuY3dkQWJzKXt2YXIgVGU9bmV3IEVycm9yKFNlLmNvZGUrIiBpbnZhbGlkIGN3ZCAiK3RoaXMuY3dkKTt0aHJvdyBUZS5wYXRoPXRoaXMuY3dkLFRlLmNvZGU9U2UuY29kZSxUZX1icmVhaztjYXNlIkVOT0VOVCI6Y2FzZSJFTE9PUCI6''@;'; put 'put ''Y2FzZSJFTkFNRVRPT0xPTkciOmNhc2UiVU5LTk9XTiI6dGhpcy5jYWNoZVt0aGlzLl9tYWtlQWJzKGtlKV09ITE7YnJlYWs7ZGVmYXVsdDppZih0aGlzLmNhY2hlW3RoaXMuX21ha2VBYnMoa2UpXT0hMSx0aGlzLnN0cmljdCl0aHJvdyBTZTt0aGlzLnNpbGVudHx8aWUuZXJyb3IoImdsb2Ig''@;'; put 'put ''ZXJyb3IiLFNlKX19LEFlLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyPWZ1bmN0aW9uKGtlLFNlLEllLFRlLEVlLGhlKXt2YXIgTz10aGlzLl9yZWFkZGlyKEllLGhlKTtpZihPKXt2YXIgej1UZS5zbGljZSgxKSxuZT1rZT9ba2VdOltdLHRlPW5lLmNvbmNhdCh6KTt0aGlzLl9wcm9jZXNz''@;'; put 'put ''KHRlLEVlLCExKTt2YXIgeD1PLmxlbmd0aDtpZighdGhpcy5zeW1saW5rc1tJZV18fCFoZSlmb3IodmFyIFA9MDtQPHg7UCsrKWlmKCIuIiE9PU9bUF0uY2hhckF0KDApfHx0aGlzLmRvdCl7dmFyIFY9bmUuY29uY2F0KE9bUF0seik7dGhpcy5fcHJvY2VzcyhWLEVlLCEwKTt2YXIgVD1uZS5j''@;'; put 'put ''b25jYXQoT1tQXSxUZSk7dGhpcy5fcHJvY2VzcyhULEVlLCEwKX19fSxBZS5wcm90b3R5cGUuX3Byb2Nlc3NTaW1wbGU9ZnVuY3Rpb24oa2UsU2Upe3ZhciBJZT10aGlzLl9zdGF0KGtlKTtpZih0aGlzLm1hdGNoZXNbU2VdfHwodGhpcy5tYXRjaGVzW1NlXT1PYmplY3QuY3JlYXRlKG51bGwp''@;'; put 'put ''KSxJZSl7aWYoa2UmJnEoa2UpJiYhdGhpcy5ub21vdW50KXt2YXIgVGU9L1tcL1xcXSQvLnRlc3Qoa2UpOyIvIj09PWtlLmNoYXJBdCgwKT9rZT1OLmpvaW4odGhpcy5yb290LGtlKTooa2U9Ti5yZXNvbHZlKHRoaXMucm9vdCxrZSksVGUmJihrZSs9Ii8iKSl9IndpbjMyIj09PWxlLnBsYXRm''@;'; put 'put ''b3JtJiYoa2U9a2UucmVwbGFjZSgvXFwvZywiLyIpKSx0aGlzLl9lbWl0TWF0Y2goU2Usa2UpfX0sQWUucHJvdG90eXBlLl9zdGF0PWZ1bmN0aW9uKGtlKXt2YXIgU2U9dGhpcy5fbWFrZUFicyhrZSksSWU9Ii8iPT09a2Uuc2xpY2UoLTEpO2lmKGtlLmxlbmd0aD50aGlzLm1heExlbmd0aCly''@;'; put 'put ''ZXR1cm4hMTtpZighdGhpcy5zdGF0JiZhZSh0aGlzLmNhY2hlLFNlKSl7dmFyIFRlPXRoaXMuY2FjaGVbU2VdO2lmKEFycmF5LmlzQXJyYXkoVGUpJiYoVGU9IkRJUiIpLCFJZXx8IkRJUiI9PT1UZSlyZXR1cm4gVGU7aWYoSWUmJiJGSUxFIj09PVRlKXJldHVybiExfXZhciBFZT10aGlzLnN0''@;'; put 'put ''YXRDYWNoZVtTZV07aWYoIUVlKXt2YXIgaGU7dHJ5e2hlPXRoaXMuZnMubHN0YXRTeW5jKFNlKX1jYXRjaChPKXtpZihPJiYoIkVOT0VOVCI9PT1PLmNvZGV8fCJFTk9URElSIj09PU8uY29kZSkpcmV0dXJuIHRoaXMuc3RhdENhY2hlW1NlXT0hMSwhMX1pZihoZSYmaGUuaXNTeW1ib2xpY0xp''@;'; put 'put ''bmsoKSl0cnl7RWU9dGhpcy5mcy5zdGF0U3luYyhTZSl9Y2F0Y2goTyl7RWU9aGV9ZWxzZSBFZT1oZX1yZXR1cm4gdGhpcy5zdGF0Q2FjaGVbU2VdPUVlLFRlPSEwLEVlJiYoVGU9RWUuaXNEaXJlY3RvcnkoKT8iRElSIjoiRklMRSIpLHRoaXMuY2FjaGVbU2VdPXRoaXMuY2FjaGVbU2VdfHxU''@;'; put 'put ''ZSwoIUllfHwiRklMRSIhPT1UZSkmJlRlfSxBZS5wcm90b3R5cGUuX21hcms9ZnVuY3Rpb24oa2Upe3JldHVybiBKLm1hcmsodGhpcyxrZSl9LEFlLnByb3RvdHlwZS5fbWFrZUFicz1mdW5jdGlvbihrZSl7cmV0dXJuIEoubWFrZUFicyh0aGlzLGtlKX19LDY0NTg6VT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtVLmV4cG9ydHM9ZnVuY3Rpb24oWil7aWYobnVsbD09PVp8fCJvYmplY3QiIT10eXBlb2YgWilyZXR1cm4gWjtpZihaIGluc3RhbmNlb2YgT2JqZWN0KXZhciBpZT17X19wcm90b19fOlEoWil9O2Vsc2UgaWU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gT2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5TmFtZXMoWikuZm9yRWFjaChmdW5jdGlvbihsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGllLGxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoWixsZSkpfSksaWV9O3ZhciBRPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oWil7cmV0dXJuIFouX19wcm90b19f''@;'; put 'put ''fX0sNzc6KFUsUSxaKT0+e3ZhciBpZSxsZSxZPVooNDE1NSksVz1aKDUxMDgpLE49Wig1NDQzKSxlZT1aKDIxNjEpLHE9Wig4NTIwKSxKPVooNjQ1OCksc2U9Wig5NTM5KTtmdW5jdGlvbiBhZShUZSxFZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFRlLGllLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gRWV9fSl9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbC5mb3I/KGllPVN5bWJvbC5mb3IoImdyYWNlZnVsLWZzLnF1ZXVlIiksbGU9U3ltYm9sLmZvcigiZ3JhY2VmdWwtZnMucHJldmlvdXMiKSk6KGllPSJfX19ncmFjZWZ1bC1mcy5xdWV1''@;'; put 'put ''ZSIsbGU9Il9fX2dyYWNlZnVsLWZzLnByZXZpb3VzIik7dmFyIGZlLGRlPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBBZShUZSl7ZWUoVGUpLFRlLmdyYWNlZnVsaWZ5PUFlLFRlLmNyZWF0ZVJlYWRTdHJlYW09ZnVuY3Rpb24oUGUsUWUpe3JldHVybiBuZXcgVGUuUmVhZFN0cmVhbShQZSxRZSl9''@;'; put 'put ''LFRlLmNyZWF0ZVdyaXRlU3RyZWFtPWZ1bmN0aW9uKFBlLFFlKXtyZXR1cm4gbmV3IFRlLldyaXRlU3RyZWFtKFBlLFFlKX07dmFyIEVlPVRlLnJlYWRGaWxlO1RlLnJlYWRGaWxlPWZ1bmN0aW9uKFBlLFFlLCRlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUWUmJigkZT1RZSxRZT1udWxs''@;'; put 'put ''KSxmdW5jdGlvbiBndCh5dCxwdCxtdCx2dCl7cmV0dXJuIEVlKHl0LHB0LGZ1bmN0aW9uKGZ0KXshZnR8fCJFTUZJTEUiIT09ZnQuY29kZSYmIkVORklMRSIhPT1mdC5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBtdCYmbXQuYXBwbHkodGhpcyxhcmd1bWVudHMpOmtlKFtndCxbeXQscHQsbXRd''@;'; put 'put ''LGZ0LHZ0fHxEYXRlLm5vdygpLERhdGUubm93KCldKX0pfShQZSxRZSwkZSl9O3ZhciBoZT1UZS53cml0ZUZpbGU7VGUud3JpdGVGaWxlPWZ1bmN0aW9uKFBlLFFlLCRlLGd0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgJGUmJihndD0kZSwkZT1udWxsKSxmdW5jdGlvbiB5dChwdCxtdCx2''@;'; put 'put ''dCxmdCxGdCl7cmV0dXJuIGhlKHB0LG10LHZ0LGZ1bmN0aW9uKG9uKXshb258fCJFTUZJTEUiIT09b24uY29kZSYmIkVORklMRSIhPT1vbi5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBmdCYmZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpOmtlKFt5dCxbcHQsbXQsdnQsZnRdLG9uLEZ0fHxEYXRl''@;'; put 'put ''Lm5vdygpLERhdGUubm93KCldKX0pfShQZSxRZSwkZSxndCl9O3ZhciBPPVRlLmFwcGVuZEZpbGU7TyYmKFRlLmFwcGVuZEZpbGU9ZnVuY3Rpb24oUGUsUWUsJGUsZ3Qpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiAkZSYmKGd0PSRlLCRlPW51bGwpLGZ1bmN0aW9uIHl0KHB0LG10LHZ0LGZ0''@;'; put 'put ''LEZ0KXtyZXR1cm4gTyhwdCxtdCx2dCxmdW5jdGlvbihvbil7IW9ufHwiRU1GSUxFIiE9PW9uLmNvZGUmJiJFTkZJTEUiIT09b24uY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgZnQmJmZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTprZShbeXQsW3B0LG10LHZ0LGZ0XSxvbixGdHx8RGF0ZS5ub3co''@;'; put 'put ''KSxEYXRlLm5vdygpXSl9KX0oUGUsUWUsJGUsZ3QpfSk7dmFyIHo9VGUuY29weUZpbGU7eiYmKFRlLmNvcHlGaWxlPWZ1bmN0aW9uKFBlLFFlLCRlLGd0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgJGUmJihndD0kZSwkZT0wKSxmdW5jdGlvbiB5dChwdCxtdCx2dCxmdCxGdCl7cmV0dXJu''@;'; put 'put ''IHoocHQsbXQsdnQsZnVuY3Rpb24ob24peyFvbnx8IkVNRklMRSIhPT1vbi5jb2RlJiYiRU5GSUxFIiE9PW9uLmNvZGU/ImZ1bmN0aW9uIj09dHlwZW9mIGZ0JiZmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6a2UoW3l0LFtwdCxtdCx2dCxmdF0sb24sRnR8fERhdGUubm93KCksRGF0ZS5ub3co''@;'; put 'put ''KV0pfSl9KFBlLFFlLCRlLGd0KX0pO3ZhciBuZT1UZS5yZWFkZGlyO1RlLnJlYWRkaXI9ZnVuY3Rpb24oUGUsUWUsJGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBRZSYmKCRlPVFlLFFlPW51bGwpO3ZhciBndD10ZS50ZXN0KFkudmVyc2lvbik/ZnVuY3Rpb24ocHQsbXQsdnQsZnQpe3JldHVybiBu''@;'; put 'put ''ZShwdCx5dChwdCxtdCx2dCxmdCkpfTpmdW5jdGlvbihwdCxtdCx2dCxmdCl7cmV0dXJuIG5lKHB0LG10LHl0KHB0LG10LHZ0LGZ0KSl9O3JldHVybiBndChQZSxRZSwkZSk7ZnVuY3Rpb24geXQocHQsbXQsdnQsZnQpe3JldHVybiBmdW5jdGlvbihGdCxvbil7IUZ0fHwiRU1GSUxFIiE9PUZ0''@;'; put 'put ''LmNvZGUmJiJFTkZJTEUiIT09RnQuY29kZT8ob24mJm9uLnNvcnQmJm9uLnNvcnQoKSwiZnVuY3Rpb24iPT10eXBlb2YgdnQmJnZ0LmNhbGwodGhpcyxGdCxvbikpOmtlKFtndCxbcHQsbXQsdnRdLEZ0LGZ0fHxEYXRlLm5vdygpLERhdGUubm93KCldKX19fTt2YXIgdGU9L152WzAtNV1cLi87''@;'; put 'put ''aWYoInYwLjgiPT09WS52ZXJzaW9uLnN1YnN0cigwLDQpKXt2YXIgeD1xKFRlKTtGPXguUmVhZFN0cmVhbSx5ZT14LldyaXRlU3RyZWFtfXZhciBQPVRlLlJlYWRTdHJlYW07UCYmKEYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUC5wcm90b3R5cGUpLEYucHJvdG90eXBlLm9wZW49ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgUGU9dGhpcztEZShQZS5wYXRoLFBlLmZsYWdzLFBlLm1vZGUsZnVuY3Rpb24oUWUsJGUpe1FlPyhQZS5hdXRvQ2xvc2UmJlBlLmRlc3Ryb3koKSxQZS5lbWl0KCJlcnJvciIsUWUpKTooUGUuZmQ9JGUsUGUuZW1pdCgib3BlbiIsJGUpLFBlLnJlYWQoKSl9KX0pO3ZhciBWPVRl''@;'; put 'put ''LldyaXRlU3RyZWFtO1YmJih5ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShWLnByb3RvdHlwZSkseWUucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt2YXIgUGU9dGhpcztEZShQZS5wYXRoLFBlLmZsYWdzLFBlLm1vZGUsZnVuY3Rpb24oUWUsJGUpe1FlPyhQZS5kZXN0cm95KCksUGUuZW1p''@;'; put 'put ''dCgiZXJyb3IiLFFlKSk6KFBlLmZkPSRlLFBlLmVtaXQoIm9wZW4iLCRlKSl9KX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZSwiUmVhZFN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBGfSxzZXQ6ZnVuY3Rpb24oUGUpe0Y9UGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw''@;'; put 'put ''fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFRlLCJXcml0ZVN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiB5ZX0sc2V0OmZ1bmN0aW9uKFBlKXt5ZT1QZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgVD1GO09iamVjdC5kZWZpbmVQcm9wZXJ0eShUZSwiRmlsZVJl''@;'; put 'put ''YWRTdHJlYW0iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVH0sc2V0OmZ1bmN0aW9uKFBlKXtUPVBlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBTPXllO2Z1bmN0aW9uIEYoUGUsUWUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgRj8oUC5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyksdGhpcyk6Ri5hcHBseShPYmplY3QuY3JlYXRlKEYucHJvdG90eXBlKSxhcmd1bWVudHMpfWZ1bmN0aW9uIHllKFBlLFFlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHllPyhWLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzKTp5ZS5hcHBseShPYmplY3QuY3JlYXRlKHllLnByb3RvdHlw''@;'; put 'put ''ZSksYXJndW1lbnRzKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoVGUsIkZpbGVXcml0ZVN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBTfSxzZXQ6ZnVuY3Rpb24oUGUpe1M9UGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7dmFyIENlPVRlLm9wZW47ZnVuY3Rpb24gRGUo''@;'; put 'put ''UGUsUWUsJGUsZ3Qpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiAkZSYmKGd0PSRlLCRlPW51bGwpLGZ1bmN0aW9uIHl0KHB0LG10LHZ0LGZ0LEZ0KXtyZXR1cm4gQ2UocHQsbXQsdnQsZnVuY3Rpb24ob24sX3QpeyFvbnx8IkVNRklMRSIhPT1vbi5jb2RlJiYiRU5GSUxFIiE9PW9uLmNvZGU/''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGZ0JiZmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6a2UoW3l0LFtwdCxtdCx2dCxmdF0sb24sRnR8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KFBlLFFlLCRlLGd0KX1yZXR1cm4gVGUub3Blbj1EZSxUZX1mdW5jdGlvbiBrZShUZSl7ZGUoIkVOUVVFVUUi''@;'; put 'put ''LFRlWzBdLm5hbWUsVGVbMV0pLE5baWVdLnB1c2goVGUpLEllKCl9ZnVuY3Rpb24gU2UoKXtmb3IodmFyIFRlPURhdGUubm93KCksRWU9MDtFZTxOW2llXS5sZW5ndGg7KytFZSlOW2llXVtFZV0ubGVuZ3RoPjImJihOW2llXVtFZV1bM109VGUsTltpZV1bRWVdWzRdPVRlKTtJZSgpfWZ1bmN0''@;'; put 'put ''aW9uIEllKCl7aWYoY2xlYXJUaW1lb3V0KGZlKSxmZT12b2lkIDAsMCE9PU5baWVdLmxlbmd0aCl7dmFyIFRlPU5baWVdLnNoaWZ0KCksRWU9VGVbMF0saGU9VGVbMV0sTz1UZVsyXSx6PVRlWzNdLG5lPVRlWzRdO2lmKHZvaWQgMD09PXopZGUoIlJFVFJZIixFZS5uYW1lLGhlKSxFZS5hcHBs''@;'; put 'put ''eShudWxsLGhlKTtlbHNlIGlmKERhdGUubm93KCktej49NmU0KXtkZSgiVElNRU9VVCIsRWUubmFtZSxoZSk7dmFyIHRlPWhlLnBvcCgpOyJmdW5jdGlvbiI9PXR5cGVvZiB0ZSYmdGUuY2FsbChudWxsLE8pfWVsc2V7dmFyIHg9RGF0ZS5ub3coKS1uZSxQPU1hdGgubWF4KG5lLXosMSk7eD49''@;'; put 'put ''TWF0aC5taW4oMS4yKlAsMTAwKT8oZGUoIlJFVFJZIixFZS5uYW1lLGhlKSxFZS5hcHBseShudWxsLGhlLmNvbmNhdChbel0pKSk6TltpZV0ucHVzaChUZSl9dm9pZCAwPT09ZmUmJihmZT1zZXRUaW1lb3V0KEllLDApKX19c2UuZGVidWdsb2c/ZGU9c2UuZGVidWdsb2coImdmczQiKTovXGJn''@;'; put 'put ''ZnM0XGIvaS50ZXN0KFkuZW52Lk5PREVfREVCVUd8fCIiKSYmKGRlPWZ1bmN0aW9uKCl7dmFyIFRlPXNlLmZvcm1hdC5hcHBseShzZSxhcmd1bWVudHMpO1RlPSJHRlM0OiAiK1RlLnNwbGl0KC9cbi8pLmpvaW4oIlxuR0ZTNDogIiksVy5lcnJvcihUZSl9KSxOW2llXXx8KGFlKE4sWi5nW2ll''@;'; put 'put ''XXx8W10pLE4uY2xvc2U9ZnVuY3Rpb24oVGUpe2Z1bmN0aW9uIEVlKGhlLE8pe3JldHVybiBUZS5jYWxsKE4saGUsZnVuY3Rpb24oeil7enx8U2UoKSwiZnVuY3Rpb24iPT10eXBlb2YgTyYmTy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KEVl''@;'; put 'put ''LGxlLHt2YWx1ZTpUZX0pLEVlfShOLmNsb3NlKSxOLmNsb3NlU3luYz1mdW5jdGlvbihUZSl7ZnVuY3Rpb24gRWUoaGUpe1RlLmFwcGx5KE4sYXJndW1lbnRzKSxTZSgpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWUsbGUse3ZhbHVlOlRlfSksRWV9KE4uY2xvc2VTeW5jKSwvXGJn''@;'; put 'put ''ZnM0XGIvaS50ZXN0KFkuZW52Lk5PREVfREVCVUd8fCIiKSYmWS5vbigiZXhpdCIsZnVuY3Rpb24oKXtkZShOW2llXSksWig5MjgyKS5lcXVhbChOW2llXS5sZW5ndGgsMCl9KSksWi5nW2llXXx8YWUoWi5nLE5baWVdKSxVLmV4cG9ydHM9QWUoSihOKSksWS5lbnYuVEVTVF9HUkFDRUZVTF9G''@;'; put 'put ''U19HTE9CQUxfUEFUQ0gmJiFOLl9fcGF0Y2hlZCYmKFUuZXhwb3J0cz1BZShOKSxOLl9fcGF0Y2hlZD0hMCl9LDg1MjA6KFUsUSxaKT0+e3ZhciBpZT1aKDQxNTUpLGxlPVooMjgzMCkuU3RyZWFtO1UuZXhwb3J0cz1mdW5jdGlvbihZKXtyZXR1cm57UmVhZFN0cmVhbTpmdW5jdGlvbiBXKE4s''@;'; put 'put ''ZWUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFcpKXJldHVybiBuZXcgVyhOLGVlKTtsZS5jYWxsKHRoaXMpO3ZhciBxPXRoaXM7dGhpcy5wYXRoPU4sdGhpcy5mZD1udWxsLHRoaXMucmVhZGFibGU9ITAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5mbGFncz0iciIsdGhpcy5tb2RlPTQzOCx0aGlzLmJ1''@;'; put 'put ''ZmZlclNpemU9NjU1MzYsZWU9ZWV8fHt9O2Zvcih2YXIgSj1PYmplY3Qua2V5cyhlZSksc2U9MCxhZT1KLmxlbmd0aDtzZTxhZTtzZSsrKXt2YXIgZmU9SltzZV07dGhpc1tmZV09ZWVbZmVdfWlmKHRoaXMuZW5jb2RpbmcmJnRoaXMuc2V0RW5jb2RpbmcodGhpcy5lbmNvZGluZyksdm9pZCAw''@;'; put 'put ''IT09dGhpcy5zdGFydCl7aWYoIm51bWJlciIhPXR5cGVvZiB0aGlzLnN0YXJ0KXRocm93IFR5cGVFcnJvcigic3RhcnQgbXVzdCBiZSBhIE51bWJlciIpO2lmKHZvaWQgMD09PXRoaXMuZW5kKXRoaXMuZW5kPTEvMDtlbHNlIGlmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5lbmQpdGhyb3cgVHlw''@;'; put 'put ''ZUVycm9yKCJlbmQgbXVzdCBiZSBhIE51bWJlciIpO2lmKHRoaXMuc3RhcnQ+dGhpcy5lbmQpdGhyb3cgbmV3IEVycm9yKCJzdGFydCBtdXN0IGJlIDw9IGVuZCIpO3RoaXMucG9zPXRoaXMuc3RhcnR9bnVsbD09PXRoaXMuZmQ/WS5vcGVuKHRoaXMucGF0aCx0aGlzLmZsYWdzLHRoaXMubW9k''@;'; put 'put ''ZSxmdW5jdGlvbihkZSx2ZSl7aWYoZGUpcmV0dXJuIHEuZW1pdCgiZXJyb3IiLGRlKSx2b2lkKHEucmVhZGFibGU9ITEpO3EuZmQ9dmUscS5lbWl0KCJvcGVuIix2ZSkscS5fcmVhZCgpfSk6aWUubmV4dFRpY2soZnVuY3Rpb24oKXtxLl9yZWFkKCl9KX0sV3JpdGVTdHJlYW06ZnVuY3Rpb24g''@;'; put 'put ''VyhOLGVlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBXKSlyZXR1cm4gbmV3IFcoTixlZSk7bGUuY2FsbCh0aGlzKSx0aGlzLnBhdGg9Tix0aGlzLmZkPW51bGwsdGhpcy53cml0YWJsZT0hMCx0aGlzLmZsYWdzPSJ3Iix0aGlzLmVuY29kaW5nPSJiaW5hcnkiLHRoaXMubW9kZT00MzgsdGhpcy5i''@;'; put 'put ''eXRlc1dyaXR0ZW49MCxlZT1lZXx8e307Zm9yKHZhciBxPU9iamVjdC5rZXlzKGVlKSxKPTAsc2U9cS5sZW5ndGg7SjxzZTtKKyspe3ZhciBhZT1xW0pdO3RoaXNbYWVdPWVlW2FlXX1pZih2b2lkIDAhPT10aGlzLnN0YXJ0KXtpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMuc3RhcnQpdGhyb3cg''@;'; put 'put ''VHlwZUVycm9yKCJzdGFydCBtdXN0IGJlIGEgTnVtYmVyIik7aWYodGhpcy5zdGFydDwwKXRocm93IG5ldyBFcnJvcigic3RhcnQgbXVzdCBiZSA+PSB6ZXJvIik7dGhpcy5wb3M9dGhpcy5zdGFydH10aGlzLmJ1c3k9ITEsdGhpcy5fcXVldWU9W10sbnVsbD09PXRoaXMuZmQmJih0aGlzLl9v''@;'; put 'put ''cGVuPVkub3Blbix0aGlzLl9xdWV1ZS5wdXNoKFt0aGlzLl9vcGVuLHRoaXMucGF0aCx0aGlzLmZsYWdzLHRoaXMubW9kZSx2b2lkIDBdKSx0aGlzLmZsdXNoKCkpfX19fSwyMTYxOihVLFEsWik9Pnt2YXIgaWU9Wig0MTU1KSxsZT1aKDMyMDgpLFk9aWUuY3dkLFc9bnVsbCxOPWllLmVudi5H''@;'; put 'put ''UkFDRUZVTF9GU19QTEFURk9STXx8aWUucGxhdGZvcm07aWUuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIFd8fChXPVkuY2FsbChpZSkpLFd9O3RyeXtpZS5jd2QoKX1jYXRjaChxKXt9aWYoImZ1bmN0aW9uIj09dHlwZW9mIGllLmNoZGlyKXt2YXIgZWU9aWUuY2hkaXI7aWUuY2hkaXI9ZnVuY3Rp''@;'; put 'put ''b24ocSl7Vz1udWxsLGVlLmNhbGwoaWUscSl9LE9iamVjdC5zZXRQcm90b3R5cGVPZiYmT2JqZWN0LnNldFByb3RvdHlwZU9mKGllLmNoZGlyLGVlKX1VLmV4cG9ydHM9ZnVuY3Rpb24ocSl7dmFyIFNlLGtlO2Z1bmN0aW9uIEooU2Upe3JldHVybiBTZSYmZnVuY3Rpb24oSWUsVGUsRWUpe3Jl''@;'; put 'put ''dHVybiBTZS5jYWxsKHEsSWUsVGUsZnVuY3Rpb24oaGUpe0FlKGhlKSYmKGhlPW51bGwpLEVlJiZFZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX19ZnVuY3Rpb24gc2UoU2Upe3JldHVybiBTZSYmZnVuY3Rpb24oSWUsVGUpe3RyeXtyZXR1cm4gU2UuY2FsbChxLEllLFRlKX1jYXRjaChFZSl7''@;'; put 'put ''aWYoIUFlKEVlKSl0aHJvdyBFZX19fWZ1bmN0aW9uIGFlKFNlKXtyZXR1cm4gU2UmJmZ1bmN0aW9uKEllLFRlLEVlLGhlKXtyZXR1cm4gU2UuY2FsbChxLEllLFRlLEVlLGZ1bmN0aW9uKE8pe0FlKE8pJiYoTz1udWxsKSxoZSYmaGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9fWZ1bmN0aW9u''@;'; put 'put ''IGZlKFNlKXtyZXR1cm4gU2UmJmZ1bmN0aW9uKEllLFRlLEVlKXt0cnl7cmV0dXJuIFNlLmNhbGwocSxJZSxUZSxFZSl9Y2F0Y2goaGUpe2lmKCFBZShoZSkpdGhyb3cgaGV9fX1mdW5jdGlvbiBkZShTZSl7cmV0dXJuIFNlJiZmdW5jdGlvbihJZSxUZSxFZSl7ZnVuY3Rpb24gaGUoTyx6KXt6''@;'; put 'put ''JiYoei51aWQ8MCYmKHoudWlkKz00Mjk0OTY3Mjk2KSx6LmdpZDwwJiYoei5naWQrPTQyOTQ5NjcyOTYpKSxFZSYmRWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBUZSYmKEVlPVRlLFRlPW51bGwpLFRlP1NlLmNhbGwocSxJZSxUZSxoZSk6U2UuY2Fs''@;'; put 'put ''bChxLEllLGhlKX19ZnVuY3Rpb24gdmUoU2Upe3JldHVybiBTZSYmZnVuY3Rpb24oSWUsVGUpe3ZhciBFZT1UZT9TZS5jYWxsKHEsSWUsVGUpOlNlLmNhbGwocSxJZSk7cmV0dXJuIEVlJiYoRWUudWlkPDAmJihFZS51aWQrPTQyOTQ5NjcyOTYpLEVlLmdpZDwwJiYoRWUuZ2lkKz00Mjk0OTY3''@;'; put 'put ''Mjk2KSksRWV9fWZ1bmN0aW9uIEFlKFNlKXtyZXR1cm4hU2V8fCJFTk9TWVMiPT09U2UuY29kZXx8IShpZS5nZXR1aWQmJjA9PT1pZS5nZXR1aWQoKXx8IkVJTlZBTCIhPT1TZS5jb2RlJiYiRVBFUk0iIT09U2UuY29kZSl9bGUuaGFzT3duUHJvcGVydHkoIk9fU1lNTElOSyIpJiZpZS52ZXJz''@;'; put 'put ''aW9uLm1hdGNoKC9edjBcLjZcLlswLTJdfF52MFwuNVwuLykmJigoU2U9cSkubGNobW9kPWZ1bmN0aW9uKEllLFRlLEVlKXtTZS5vcGVuKEllLGxlLk9fV1JPTkxZfGxlLk9fU1lNTElOSyxUZSxmdW5jdGlvbihoZSxPKXtoZT9FZSYmRWUoaGUpOlNlLmZjaG1vZChPLFRlLGZ1bmN0aW9uKHop''@;'; put 'put ''e1NlLmNsb3NlKE8sZnVuY3Rpb24obmUpe0VlJiZFZSh6fHxuZSl9KX0pfSl9LFNlLmxjaG1vZFN5bmM9ZnVuY3Rpb24oSWUsVGUpe3ZhciBFZSxoZT1TZS5vcGVuU3luYyhJZSxsZS5PX1dST05MWXxsZS5PX1NZTUxJTkssVGUpLE89ITA7dHJ5e0VlPVNlLmZjaG1vZFN5bmMoaGUsVGUpLE89''@;'; put 'put ''ITF9ZmluYWxseXtpZihPKXRyeXtTZS5jbG9zZVN5bmMoaGUpfWNhdGNoKHope31lbHNlIFNlLmNsb3NlU3luYyhoZSl9cmV0dXJuIEVlfSkscS5sdXRpbWVzfHxmdW5jdGlvbihTZSl7bGUuaGFzT3duUHJvcGVydHkoIk9fU1lNTElOSyIpJiZTZS5mdXRpbWVzPyhTZS5sdXRpbWVzPWZ1bmN0''@;'; put 'put ''aW9uKEllLFRlLEVlLGhlKXtTZS5vcGVuKEllLGxlLk9fU1lNTElOSyxmdW5jdGlvbihPLHope08/aGUmJmhlKE8pOlNlLmZ1dGltZXMoeixUZSxFZSxmdW5jdGlvbihuZSl7U2UuY2xvc2UoeixmdW5jdGlvbih0ZSl7aGUmJmhlKG5lfHx0ZSl9KX0pfSl9LFNlLmx1dGltZXNTeW5jPWZ1bmN0''@;'; put 'put ''aW9uKEllLFRlLEVlKXt2YXIgaGUsTz1TZS5vcGVuU3luYyhJZSxsZS5PX1NZTUxJTkspLHo9ITA7dHJ5e2hlPVNlLmZ1dGltZXNTeW5jKE8sVGUsRWUpLHo9ITF9ZmluYWxseXtpZih6KXRyeXtTZS5jbG9zZVN5bmMoTyl9Y2F0Y2gobmUpe31lbHNlIFNlLmNsb3NlU3luYyhPKX1yZXR1cm4g''@;'; put 'put ''aGV9KTpTZS5mdXRpbWVzJiYoU2UubHV0aW1lcz1mdW5jdGlvbihJZSxUZSxFZSxoZSl7aGUmJmllLm5leHRUaWNrKGhlKX0sU2UubHV0aW1lc1N5bmM9ZnVuY3Rpb24oKXt9KX0ocSkscS5jaG93bj1hZShxLmNob3duKSxxLmZjaG93bj1hZShxLmZjaG93bikscS5sY2hvd249YWUocS5sY2hv''@;'; put 'put ''d24pLHEuY2htb2Q9SihxLmNobW9kKSxxLmZjaG1vZD1KKHEuZmNobW9kKSxxLmxjaG1vZD1KKHEubGNobW9kKSxxLmNob3duU3luYz1mZShxLmNob3duU3luYykscS5mY2hvd25TeW5jPWZlKHEuZmNob3duU3luYykscS5sY2hvd25TeW5jPWZlKHEubGNob3duU3luYykscS5jaG1vZFN5bmM9''@;'; put 'put ''c2UocS5jaG1vZFN5bmMpLHEuZmNobW9kU3luYz1zZShxLmZjaG1vZFN5bmMpLHEubGNobW9kU3luYz1zZShxLmxjaG1vZFN5bmMpLHEuc3RhdD1kZShxLnN0YXQpLHEuZnN0YXQ9ZGUocS5mc3RhdCkscS5sc3RhdD1kZShxLmxzdGF0KSxxLnN0YXRTeW5jPXZlKHEuc3RhdFN5bmMpLHEuZnN0''@;'; put 'put ''YXRTeW5jPXZlKHEuZnN0YXRTeW5jKSxxLmxzdGF0U3luYz12ZShxLmxzdGF0U3luYykscS5jaG1vZCYmIXEubGNobW9kJiYocS5sY2htb2Q9ZnVuY3Rpb24oU2UsSWUsVGUpe1RlJiZpZS5uZXh0VGljayhUZSl9LHEubGNobW9kU3luYz1mdW5jdGlvbigpe30pLHEuY2hvd24mJiFxLmxjaG93''@;'; put 'put ''biYmKHEubGNob3duPWZ1bmN0aW9uKFNlLEllLFRlLEVlKXtFZSYmaWUubmV4dFRpY2soRWUpfSxxLmxjaG93blN5bmM9ZnVuY3Rpb24oKXt9KSwid2luMzIiPT09TiYmKHEucmVuYW1lPSJmdW5jdGlvbiIhPXR5cGVvZiBxLnJlbmFtZT9xLnJlbmFtZTpmdW5jdGlvbihTZSl7ZnVuY3Rpb24g''@;'; put 'put ''SWUoVGUsRWUsaGUpe3ZhciBPPURhdGUubm93KCksej0wO1NlKFRlLEVlLGZ1bmN0aW9uIG5lKHRlKXtpZih0ZSYmKCJFQUNDRVMiPT09dGUuY29kZXx8IkVQRVJNIj09PXRlLmNvZGUpJiZEYXRlLm5vdygpLU88NmU0KXJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cS5zdGF0KEVlLGZ1''@;'; put 'put ''bmN0aW9uKHgsUCl7eCYmIkVOT0VOVCI9PT14LmNvZGU/U2UoVGUsRWUsbmUpOmhlKHRlKX0pfSx6KSx2b2lkKHo8MTAwJiYoeis9MTApKTtoZSYmaGUodGUpfSl9cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiYmT2JqZWN0LnNldFByb3RvdHlwZU9mKEllLFNlKSxJZX0ocS5yZW5hbWUp''@;'; put 'put ''KSxxLnJlYWQ9ImZ1bmN0aW9uIiE9dHlwZW9mIHEucmVhZD9xLnJlYWQ6ZnVuY3Rpb24oU2Upe2Z1bmN0aW9uIEllKFRlLEVlLGhlLE8seixuZSl7dmFyIHRlO2lmKG5lJiYiZnVuY3Rpb24iPT10eXBlb2YgbmUpe3ZhciB4PTA7dGU9ZnVuY3Rpb24oUCxWLFQpe2lmKFAmJiJFQUdBSU4iPT09''@;'; put 'put ''UC5jb2RlJiZ4PDEwKXJldHVybiB4KyssU2UuY2FsbChxLFRlLEVlLGhlLE8seix0ZSk7bmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1yZXR1cm4gU2UuY2FsbChxLFRlLEVlLGhlLE8seix0ZSl9cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiYmT2JqZWN0LnNldFByb3RvdHlwZU9mKEll''@;'; put 'put ''LFNlKSxJZX0ocS5yZWFkKSxxLnJlYWRTeW5jPSJmdW5jdGlvbiIhPXR5cGVvZiBxLnJlYWRTeW5jP3EucmVhZFN5bmM6KGtlPXEucmVhZFN5bmMsZnVuY3Rpb24oU2UsSWUsVGUsRWUsaGUpe2Zvcih2YXIgTz0wOzspdHJ5e3JldHVybiBrZS5jYWxsKHEsU2UsSWUsVGUsRWUsaGUpfWNhdGNo''@;'; put 'put ''KHope2lmKCJFQUdBSU4iPT09ei5jb2RlJiZPPDEwKXtPKys7Y29udGludWV9dGhyb3cgen19KX19LDEwNDQ6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9WigyMTApKCIlT2JqZWN0LmRlZmluZVByb3BlcnR5JSIsITApLGxlPWZ1bmN0aW9uKCl7aWYoaWUpdHJ5e3JldHVybiBpZSh7''@;'; put 'put ''fSwiYSIse3ZhbHVlOjF9KSwhMH1jYXRjaChZKXtyZXR1cm4hMX1yZXR1cm4hMX07bGUuaGFzQXJyYXlMZW5ndGhEZWZpbmVCdWc9ZnVuY3Rpb24oKXtpZighbGUoKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIDEhPT1pZShbXSwibGVuZ3RoIix7dmFsdWU6MX0pLmxlbmd0aH1jYXRjaChZKXty''@;'; put 'put ''ZXR1cm4hMH19LFUuZXhwb3J0cz1sZX0sMTQwNTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLGxlPVooNTQxOSk7VS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGllJiYiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIGllKCJmb28iKSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2woImJhciIpJiZsZSgpfX0sNTQxOTpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTeW1ib2x8fCJmdW5jdGlv''@;'; put 'put ''biIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKCJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yKXJldHVybiEwO3ZhciBRPXt9LFo9U3ltYm9sKCJ0ZXN0IiksaWU9T2JqZWN0KFopO2lmKCJzdHJpbmciPT10eXBlb2YgWnx8IltvYmplY3Qg''@;'; put 'put ''U3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoWil8fCJbb2JqZWN0IFN5bWJvbF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGllKSlyZXR1cm4hMTtmb3IoWiBpbiBRW1pdPTQyLFEpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVj''@;'; put 'put ''dC5rZXlzJiYwIT09T2JqZWN0LmtleXMoUSkubGVuZ3RofHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMmJjAhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhRKS5sZW5ndGgpcmV0dXJuITE7dmFyIGxlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv''@;'; put 'put ''bHMoUSk7aWYoMSE9PWxlLmxlbmd0aHx8bGVbMF0hPT1afHwhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKFEsWikpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ipe3ZhciBZPU9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eURlc2NyaXB0b3IoUSxaKTtpZig0MiE9PVkudmFsdWV8fCEwIT09WS5lbnVtZXJhYmxlKXJldHVybiExfXJldHVybiEwfX0sNjQxMDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDU0MTkpO1UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBpZSgpJiYhIVN5bWJv''@;'; put 'put ''bC50b1N0cmluZ1RhZ319LDc2NDI6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig4NjEyKTtVLmV4cG9ydHM9aWUuY2FsbChGdW5jdGlvbi5jYWxsLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpfSwzMzQ5OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooMjEz''@;'; put 'put ''KS5CdWZmZXIsbGU9Wig4NDczKS5UcmFuc2Zvcm07ZnVuY3Rpb24gWShXKXtsZS5jYWxsKHRoaXMpLHRoaXMuX2Jsb2NrPWllLmFsbG9jVW5zYWZlKFcpLHRoaXMuX2Jsb2NrU2l6ZT1XLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9''@;'; put 'put ''ITF9Wig1NzE3KShZLGxlKSxZLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKFcsTixlZSl7dmFyIHE9bnVsbDt0cnl7dGhpcy51cGRhdGUoVyxOKX1jYXRjaChKKXtxPUp9ZWUocSl9LFkucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihXKXt2YXIgTj1udWxsO3RyeXt0aGlzLnB1c2go''@;'; put 'put ''dGhpcy5kaWdlc3QoKSl9Y2F0Y2goZWUpe049ZWV9VyhOKX0sWS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFcsTil7aWYoZnVuY3Rpb24oZmUsZGUpe2lmKCFpZS5pc0J1ZmZlcihmZSkmJiJzdHJpbmciIT10eXBlb2YgZmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGEg''@;'; put 'put ''c3RyaW5nIG9yIGEgYnVmZmVyIil9KFcpLHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO2llLmlzQnVmZmVyKFcpfHwoVz1pZS5mcm9tKFcsTikpO2Zvcih2YXIgZWU9dGhpcy5fYmxvY2sscT0wO3RoaXMuX2Jsb2NrT2Zmc2V0K1cubGVu''@;'; put 'put ''Z3RoLXE+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgSj10aGlzLl9ibG9ja09mZnNldDtKPHRoaXMuX2Jsb2NrU2l6ZTspZWVbSisrXT1XW3ErK107dGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MH1mb3IoO3E8Vy5sZW5ndGg7KWVlW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPVdb''@;'; put 'put ''cSsrXTtmb3IodmFyIHNlPTAsYWU9OCpXLmxlbmd0aDthZT4wOysrc2UpdGhpcy5fbGVuZ3RoW3NlXSs9YWUsKGFlPXRoaXMuX2xlbmd0aFtzZV0vNDI5NDk2NzI5NnwwKT4wJiYodGhpcy5fbGVuZ3RoW3NlXS09NDI5NDk2NzI5NiphZSk7cmV0dXJuIHRoaXN9LFkucHJvdG90eXBlLl91cGRh''@;'; put 'put ''dGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl91cGRhdGUgaXMgbm90IGltcGxlbWVudGVkIil9LFkucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihXKXtpZih0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTt0aGlzLl9maW5hbGl6''@;'; put 'put ''ZWQ9ITA7dmFyIE49dGhpcy5fZGlnZXN0KCk7dm9pZCAwIT09VyYmKE49Ti50b1N0cmluZyhXKSksdGhpcy5fYmxvY2suZmlsbCgwKSx0aGlzLl9ibG9ja09mZnNldD0wO2Zvcih2YXIgZWU9MDtlZTw0OysrZWUpdGhpcy5fbGVuZ3RoW2VlXT0wO3JldHVybiBOfSxZLnByb3RvdHlwZS5fZGln''@;'; put 'put ''ZXN0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfZGlnZXN0IGlzIG5vdCBpbXBsZW1lbnRlZCIpfSxVLmV4cG9ydHM9WX0sMjEzOihVLFEsWik9Pnt2YXIgaWU9Wig4NzY0KSxsZT1pZS5CdWZmZXI7ZnVuY3Rpb24gWShOLGVlKXtmb3IodmFyIHEgaW4gTillZVtxXT1OW3FdfWZ1bmN0''@;'; put 'put ''aW9uIFcoTixlZSxxKXtyZXR1cm4gbGUoTixlZSxxKX1sZS5mcm9tJiZsZS5hbGxvYyYmbGUuYWxsb2NVbnNhZmUmJmxlLmFsbG9jVW5zYWZlU2xvdz9VLmV4cG9ydHM9aWU6KFkoaWUsUSksUS5CdWZmZXI9VyksVy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsZS5wcm90b3R5cGUpLFkobGUs''@;'; put 'put ''VyksVy5mcm9tPWZ1bmN0aW9uKE4sZWUscSl7aWYoIm51bWJlciI9PXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIGxlKE4sZWUscSl9LFcuYWxsb2M9ZnVuY3Rpb24oTixlZSxxKXtpZigibnVtYmVyIiE9dHlwZW9m''@;'; put 'put ''IE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBKPWxlKE4pO3JldHVybiB2b2lkIDAhPT1lZT8ic3RyaW5nIj09dHlwZW9mIHE/Si5maWxsKGVlLHEpOkouZmlsbChlZSk6Si5maWxsKDApLEp9LFcuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oTil7''@;'; put 'put ''aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbGUoTil9LFcuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKE4pe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVu''@;'; put 'put ''dCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGllLlNsb3dCdWZmZXIoTil9fSwzNzE1OihVLFEsWik9Pnt2YXIgaWU9UTtpZS51dGlscz1aKDY0MzYpLGllLmNvbW1vbj1aKDU3NzIpLGllLnNoYT1aKDkwNDEpLGllLnJpcGVtZD1aKDI5NDkpLGllLmhtYWM9WigyMzQ0KSxpZS5zaGExPWll''@;'; put 'put ''LnNoYS5zaGExLGllLnNoYTI1Nj1pZS5zaGEuc2hhMjU2LGllLnNoYTIyND1pZS5zaGEuc2hhMjI0LGllLnNoYTM4ND1pZS5zaGEuc2hhMzg0LGllLnNoYTUxMj1pZS5zaGEuc2hhNTEyLGllLnJpcGVtZDE2MD1pZS5yaXBlbWQucmlwZW1kMTYwfSw1NzcyOihVLFEsWik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIGllPVooNjQzNiksbGU9Wig5NzQ2KTtmdW5jdGlvbiBZKCl7dGhpcy5wZW5kaW5nPW51bGwsdGhpcy5wZW5kaW5nVG90YWw9MCx0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZSx0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplLHRoaXMu''@;'; put 'put ''aG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoLHRoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoLzgsdGhpcy5lbmRpYW49ImJpZyIsdGhpcy5fZGVsdGE4PXRoaXMuYmxvY2tTaXplLzgsdGhpcy5fZGVsdGEzMj10aGlzLmJsb2NrU2l6ZS8z''@;'; put 'put ''Mn1RLkJsb2NrSGFzaD1ZLFkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihXLE4pe2lmKFc9aWUudG9BcnJheShXLE4pLHRoaXMucGVuZGluZz10aGlzLnBlbmRpbmc/dGhpcy5wZW5kaW5nLmNvbmNhdChXKTpXLHRoaXMucGVuZGluZ1RvdGFsKz1XLmxlbmd0aCx0aGlzLnBlbmRpbmcubGVu''@;'; put 'put ''Z3RoPj10aGlzLl9kZWx0YTgpe3ZhciBlZT0oVz10aGlzLnBlbmRpbmcpLmxlbmd0aCV0aGlzLl9kZWx0YTg7dGhpcy5wZW5kaW5nPVcuc2xpY2UoVy5sZW5ndGgtZWUsVy5sZW5ndGgpLDA9PT10aGlzLnBlbmRpbmcubGVuZ3RoJiYodGhpcy5wZW5kaW5nPW51bGwpLFc9aWUuam9pbjMyKFcs''@;'; put 'put ''MCxXLmxlbmd0aC1lZSx0aGlzLmVuZGlhbik7Zm9yKHZhciBxPTA7cTxXLmxlbmd0aDtxKz10aGlzLl9kZWx0YTMyKXRoaXMuX3VwZGF0ZShXLHEscSt0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc30sWS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFcpe3JldHVybiB0aGlzLnVwZGF0ZSh0''@;'; put 'put ''aGlzLl9wYWQoKSksbGUobnVsbD09PXRoaXMucGVuZGluZyksdGhpcy5fZGlnZXN0KFcpfSxZLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKCl7dmFyIFc9dGhpcy5wZW5kaW5nVG90YWwsTj10aGlzLl9kZWx0YTgsZWU9Ti0oVyt0aGlzLnBhZExlbmd0aCklTixxPW5ldyBBcnJheShlZSt0aGlz''@;'; put 'put ''LnBhZExlbmd0aCk7cVswXT0xMjg7Zm9yKHZhciBKPTE7SjxlZTtKKyspcVtKXT0wO2lmKFc8PD0zLCJiaWciPT09dGhpcy5lbmRpYW4pe2Zvcih2YXIgc2U9ODtzZTx0aGlzLnBhZExlbmd0aDtzZSsrKXFbSisrXT0wO3FbSisrXT0wLHFbSisrXT0wLHFbSisrXT0wLHFbSisrXT0wLHFbSisr''@;'; put 'put ''XT1XPj4+MjQmMjU1LHFbSisrXT1XPj4+MTYmMjU1LHFbSisrXT1XPj4+OCYyNTUscVtKKytdPTI1NSZXfWVsc2UgZm9yKHFbSisrXT0yNTUmVyxxW0orK109Vz4+PjgmMjU1LHFbSisrXT1XPj4+MTYmMjU1LHFbSisrXT1XPj4+MjQmMjU1LHFbSisrXT0wLHFbSisrXT0wLHFbSisrXT0wLHFb''@;'; put 'put ''SisrXT0wLHNlPTg7c2U8dGhpcy5wYWRMZW5ndGg7c2UrKylxW0orK109MDtyZXR1cm4gcX19LDIzNDQ6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig2NDM2KSxsZT1aKDk3NDYpO2Z1bmN0aW9uIFkoVyxOLGVlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFko''@;'; put 'put ''VyxOLGVlKTt0aGlzLkhhc2g9Vyx0aGlzLmJsb2NrU2l6ZT1XLmJsb2NrU2l6ZS84LHRoaXMub3V0U2l6ZT1XLm91dFNpemUvOCx0aGlzLmlubmVyPW51bGwsdGhpcy5vdXRlcj1udWxsLHRoaXMuX2luaXQoaWUudG9BcnJheShOLGVlKSl9VS5leHBvcnRzPVksWS5wcm90b3R5cGUuX2luaXQ9''@;'; put 'put ''ZnVuY3Rpb24oVyl7Vy5sZW5ndGg+dGhpcy5ibG9ja1NpemUmJihXPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoVykuZGlnZXN0KCkpLGxlKFcubGVuZ3RoPD10aGlzLmJsb2NrU2l6ZSk7Zm9yKHZhciBOPVcubGVuZ3RoO048dGhpcy5ibG9ja1NpemU7TisrKVcucHVzaCgwKTtmb3IoTj0wO048''@;'; put 'put ''Vy5sZW5ndGg7TisrKVdbTl1ePTU0O2Zvcih0aGlzLmlubmVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoVyksTj0wO048Vy5sZW5ndGg7TisrKVdbTl1ePTEwNjt0aGlzLm91dGVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoVyl9LFkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihXLE4pe3Jl''@;'; put 'put ''dHVybiB0aGlzLmlubmVyLnVwZGF0ZShXLE4pLHRoaXN9LFkucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihXKXtyZXR1cm4gdGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSksdGhpcy5vdXRlci5kaWdlc3QoVyl9fSwyOTQ5OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IGllPVooNjQzNiksbGU9Wig1NzcyKSxZPWllLnJvdGwzMixXPWllLnN1bTMyLE49aWUuc3VtMzJfMyxlZT1pZS5zdW0zMl80LHE9bGUuQmxvY2tIYXNoO2Z1bmN0aW9uIEooKXtpZighKHRoaXMgaW5zdGFuY2VvZiBKKSlyZXR1cm4gbmV3IEo7cS5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4''@;'; put 'put ''NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuZW5kaWFuPSJsaXR0bGUifWZ1bmN0aW9uIHNlKFNlLEllLFRlLEVlKXtyZXR1cm4gU2U8PTE1P0llXlRlXkVlOlNlPD0zMT9JZSZUZXx+SWUmRWU6U2U8PTQ3PyhJZXx+VGUpXkVlOlNlPD02Mz9J''@;'; put 'put ''ZSZFZXxUZSZ+RWU6SWVeKFRlfH5FZSl9ZnVuY3Rpb24gYWUoU2Upe3JldHVybiBTZTw9MTU/MDpTZTw9MzE/MTUxODUwMDI0OTpTZTw9NDc/MTg1OTc3NTM5MzpTZTw9NjM/MjQwMDk1OTcwODoyODQwODUzODM4fWZ1bmN0aW9uIGZlKFNlKXtyZXR1cm4gU2U8PTE1PzEzNTI4Mjk5MjY6U2U8''@;'; put 'put ''PTMxPzE1NDg2MDM2ODQ6U2U8PTQ3PzE4MzYwNzI2OTE6U2U8PTYzPzIwNTM5OTQyMTc6MH1pZS5pbmhlcml0cyhKLHEpLFEucmlwZW1kMTYwPUosSi5ibG9ja1NpemU9NTEyLEoub3V0U2l6ZT0xNjAsSi5obWFjU3RyZW5ndGg9MTkyLEoucGFkTGVuZ3RoPTY0LEoucHJvdG90eXBlLl91cGRh''@;'; put 'put ''dGU9ZnVuY3Rpb24oU2UsSWUpe2Zvcih2YXIgVGU9dGhpcy5oWzBdLEVlPXRoaXMuaFsxXSxoZT10aGlzLmhbMl0sTz10aGlzLmhbM10sej10aGlzLmhbNF0sbmU9VGUsdGU9RWUseD1oZSxQPU8sVj16LFQ9MDtUPDgwO1QrKyl7dmFyIFM9VyhZKGVlKFRlLHNlKFQsRWUsaGUsTyksU2VbZGVb''@;'; put 'put ''VF0rSWVdLGFlKFQpKSxBZVtUXSkseik7VGU9eix6PU8sTz1ZKGhlLDEwKSxoZT1FZSxFZT1TLFM9VyhZKGVlKG5lLHNlKDc5LVQsdGUseCxQKSxTZVt2ZVtUXStJZV0sZmUoVCkpLGtlW1RdKSxWKSxuZT1WLFY9UCxQPVkoeCwxMCkseD10ZSx0ZT1TfVM9Tih0aGlzLmhbMV0saGUsUCksdGhp''@;'; put 'put ''cy5oWzFdPU4odGhpcy5oWzJdLE8sViksdGhpcy5oWzJdPU4odGhpcy5oWzNdLHosbmUpLHRoaXMuaFszXT1OKHRoaXMuaFs0XSxUZSx0ZSksdGhpcy5oWzRdPU4odGhpcy5oWzBdLEVlLHgpLHRoaXMuaFswXT1TfSxKLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKFNlKXtyZXR1cm4iaGV4''@;'; put 'put ''Ij09PVNlP2llLnRvSGV4MzIodGhpcy5oLCJsaXR0bGUiKTppZS5zcGxpdDMyKHRoaXMuaCwibGl0dGxlIil9O3ZhciBkZT1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgs''@;'; put 'put ''MSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSx2ZT1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUs''@;'; put 'put ''OCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxBZT1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2''@;'; put 'put ''LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUs''@;'; put 'put ''Nl0sa2U9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUs''@;'; put 'put ''OCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdfSw5MDQxOihVLFEsWik9PnsidXNlIHN0cmljdCI7US5zaGExPVooNDc2MSksUS5zaGEyMjQ9Wig3OTkpLFEuc2hhMjU2PVooOTM0NCksUS5zaGEzODQ9Wig3NzIpLFEuc2hhNTEyPVooNTkwMCl9LDQ3NjE6KFUsUSxa''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig2NDM2KSxsZT1aKDU3NzIpLFk9Wig3MDM4KSxXPWllLnJvdGwzMixOPWllLnN1bTMyLGVlPWllLnN1bTMyXzUscT1ZLmZ0XzEsSj1sZS5CbG9ja0hhc2gsc2U9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJdO2Z1''@;'; put 'put ''bmN0aW9uIGFlKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYWUpKXJldHVybiBuZXcgYWU7Si5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuVz1uZXcgQXJyYXkoODApfWllLmluaGVyaXRzKGFlLEop''@;'; put 'put ''LFUuZXhwb3J0cz1hZSxhZS5ibG9ja1NpemU9NTEyLGFlLm91dFNpemU9MTYwLGFlLmhtYWNTdHJlbmd0aD04MCxhZS5wYWRMZW5ndGg9NjQsYWUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZmUsZGUpe2Zvcih2YXIgdmU9dGhpcy5XLEFlPTA7QWU8MTY7QWUrKyl2ZVtBZV09ZmVbZGUr''@;'; put 'put ''QWVdO2Zvcig7QWU8dmUubGVuZ3RoO0FlKyspdmVbQWVdPVcodmVbQWUtM11edmVbQWUtOF1edmVbQWUtMTRdXnZlW0FlLTE2XSwxKTt2YXIga2U9dGhpcy5oWzBdLFNlPXRoaXMuaFsxXSxJZT10aGlzLmhbMl0sVGU9dGhpcy5oWzNdLEVlPXRoaXMuaFs0XTtmb3IoQWU9MDtBZTx2ZS5sZW5n''@;'; put 'put ''dGg7QWUrKyl7dmFyIGhlPX5+KEFlLzIwKSxPPWVlKFcoa2UsNSkscShoZSxTZSxJZSxUZSksRWUsdmVbQWVdLHNlW2hlXSk7RWU9VGUsVGU9SWUsSWU9VyhTZSwzMCksU2U9a2Usa2U9T310aGlzLmhbMF09Tih0aGlzLmhbMF0sa2UpLHRoaXMuaFsxXT1OKHRoaXMuaFsxXSxTZSksdGhpcy5o''@;'; put 'put ''WzJdPU4odGhpcy5oWzJdLEllKSx0aGlzLmhbM109Tih0aGlzLmhbM10sVGUpLHRoaXMuaFs0XT1OKHRoaXMuaFs0XSxFZSl9LGFlLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGZlKXtyZXR1cm4iaGV4Ij09PWZlP2llLnRvSGV4MzIodGhpcy5oLCJiaWciKTppZS5zcGxpdDMyKHRoaXMu''@;'; put 'put ''aCwiYmlnIil9fSw3OTk6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig2NDM2KSxsZT1aKDkzNDQpO2Z1bmN0aW9uIFkoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFk7bGUuY2FsbCh0aGlzKSx0aGlzLmg9WzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5''@;'; put 'put ''OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAyNSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdfWllLmluaGVyaXRzKFksbGUpLFUuZXhwb3J0cz1ZLFkuYmxvY2tTaXplPTUxMixZLm91dFNpemU9MjI0LFkuaG1hY1N0cmVuZ3RoPTE5MixZLnBhZExlbmd0aD02NCxZLnByb3RvdHlwZS5f''@;'; put 'put ''ZGlnZXN0PWZ1bmN0aW9uKFcpe3JldHVybiJoZXgiPT09Vz9pZS50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKTppZS5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKX19LDkzNDQ6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig2NDM2KSxsZT1aKDU3NzIpLFk9''@;'; put 'put ''Wig3MDM4KSxXPVooOTc0NiksTj1pZS5zdW0zMixlZT1pZS5zdW0zMl80LHE9aWUuc3VtMzJfNSxKPVkuY2gzMixzZT1ZLm1hajMyLGFlPVkuczBfMjU2LGZlPVkuczFfMjU2LGRlPVkuZzBfMjU2LHZlPVkuZzFfMjU2LEFlPWxlLkJsb2NrSGFzaCxrZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQx''@;'; put 'put ''LDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQw''@;'; put 'put ''MjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcy''@;'; put 'put ''MDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0''@;'; put 'put ''LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5''@;'; put 'put ''MzI1Mjk4XTtmdW5jdGlvbiBTZSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFNlKSlyZXR1cm4gbmV3IFNlO0FlLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1''@;'; put 'put ''OTIyNV0sdGhpcy5rPWtlLHRoaXMuVz1uZXcgQXJyYXkoNjQpfWllLmluaGVyaXRzKFNlLEFlKSxVLmV4cG9ydHM9U2UsU2UuYmxvY2tTaXplPTUxMixTZS5vdXRTaXplPTI1NixTZS5obWFjU3RyZW5ndGg9MTkyLFNlLnBhZExlbmd0aD02NCxTZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlv''@;'; put 'put ''bihJZSxUZSl7Zm9yKHZhciBFZT10aGlzLlcsaGU9MDtoZTwxNjtoZSsrKUVlW2hlXT1JZVtUZStoZV07Zm9yKDtoZTxFZS5sZW5ndGg7aGUrKylFZVtoZV09ZWUodmUoRWVbaGUtMl0pLEVlW2hlLTddLGRlKEVlW2hlLTE1XSksRWVbaGUtMTZdKTt2YXIgTz10aGlzLmhbMF0sej10aGlzLmhb''@;'; put 'put ''MV0sbmU9dGhpcy5oWzJdLHRlPXRoaXMuaFszXSx4PXRoaXMuaFs0XSxQPXRoaXMuaFs1XSxWPXRoaXMuaFs2XSxUPXRoaXMuaFs3XTtmb3IoVyh0aGlzLmsubGVuZ3RoPT09RWUubGVuZ3RoKSxoZT0wO2hlPEVlLmxlbmd0aDtoZSsrKXt2YXIgUz1xKFQsZmUoeCksSih4LFAsViksdGhpcy5r''@;'; put 'put ''W2hlXSxFZVtoZV0pLEY9TihhZShPKSxzZShPLHosbmUpKTtUPVYsVj1QLFA9eCx4PU4odGUsUyksdGU9bmUsbmU9eix6PU8sTz1OKFMsRil9dGhpcy5oWzBdPU4odGhpcy5oWzBdLE8pLHRoaXMuaFsxXT1OKHRoaXMuaFsxXSx6KSx0aGlzLmhbMl09Tih0aGlzLmhbMl0sbmUpLHRoaXMuaFsz''@;'; put 'put ''XT1OKHRoaXMuaFszXSx0ZSksdGhpcy5oWzRdPU4odGhpcy5oWzRdLHgpLHRoaXMuaFs1XT1OKHRoaXMuaFs1XSxQKSx0aGlzLmhbNl09Tih0aGlzLmhbNl0sViksdGhpcy5oWzddPU4odGhpcy5oWzddLFQpfSxTZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihJZSl7cmV0dXJuImhleCI9''@;'; put 'put ''PT1JZT9pZS50b0hleDMyKHRoaXMuaCwiYmlnIik6aWUuc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sNzcyOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNjQzNiksbGU9Wig1OTAwKTtmdW5jdGlvbiBZKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgWSkpcmV0dXJuIG5ldyBZO2xlLmNh''@;'; put 'put ''bGwodGhpcyksdGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4''@;'; put 'put ''MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XX1pZS5pbmhlcml0cyhZLGxlKSxVLmV4cG9ydHM9WSxZLmJsb2NrU2l6ZT0xMDI0LFkub3V0U2l6ZT0zODQsWS5obWFjU3RyZW5ndGg9MTkyLFkucGFkTGVuZ3RoPTEyOCxZLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKFcpe3JldHVybiJoZXgi''@;'; put 'put ''PT09Vz9pZS50b0hleDMyKHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIik6aWUuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpfX0sNTkwMDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDY0MzYpLGxlPVooNTc3MiksWT1aKDk3NDYpLFc9aWUucm90cjY0X2hpLE49aWUu''@;'; put 'put ''cm90cjY0X2xvLGVlPWllLnNocjY0X2hpLHE9aWUuc2hyNjRfbG8sSj1pZS5zdW02NCxzZT1pZS5zdW02NF9oaSxhZT1pZS5zdW02NF9sbyxmZT1pZS5zdW02NF80X2hpLGRlPWllLnN1bTY0XzRfbG8sdmU9aWUuc3VtNjRfNV9oaSxBZT1pZS5zdW02NF81X2xvLGtlPWxlLkJsb2NrSGFzaCxT''@;'; put 'put ''ZT1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIx''@;'; put 'put ''LDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0''@;'; put 'put ''ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4''@;'; put 'put ''MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5''@;'; put 'put ''MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIx''@;'; put 'put ''NzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMy''@;'; put 'put ''NzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgs''@;'; put 'put ''MzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3''@;'; put 'put ''NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0''@;'; put 'put ''MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwz''@;'; put 'put ''NDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdO2Z1bmN0aW9uIEllKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgSWUpKXJldHVybiBuZXcgSWU7a2UuY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3MDMsNDA4''@;'; put 'put ''OTIzNTcyMCwzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUsMTAxMzkwNDI0Miw0MjcxMTc1NzIzLDI3NzM0ODA3NjIsMTU5NTc1MDEyOSwxMzU5ODkzMTE5LDI5MTc1NjUxMzcsMjYwMDgyMjkyNCw3MjU1MTExOTksNTI4NzM0NjM1LDQyMTUzODk1NDcsMTU0MTQ1OTIyNSwzMjcwMzMyMDldLHRoaXMu''@;'; put 'put ''az1TZSx0aGlzLlc9bmV3IEFycmF5KDE2MCl9ZnVuY3Rpb24gVGUoRix5ZSxDZSxEZSxQZSl7dmFyIFFlPUYmQ2VefkYmUGU7cmV0dXJuIFFlPDAmJihRZSs9NDI5NDk2NzI5NiksUWV9ZnVuY3Rpb24gRWUoRix5ZSxDZSxEZSxQZSxRZSl7dmFyICRlPXllJkRlXn55ZSZRZTtyZXR1cm4gJGU8''@;'; put 'put ''MCYmKCRlKz00Mjk0OTY3Mjk2KSwkZX1mdW5jdGlvbiBoZShGLHllLENlLERlLFBlKXt2YXIgUWU9RiZDZV5GJlBlXkNlJlBlO3JldHVybiBRZTwwJiYoUWUrPTQyOTQ5NjcyOTYpLFFlfWZ1bmN0aW9uIE8oRix5ZSxDZSxEZSxQZSxRZSl7dmFyICRlPXllJkRlXnllJlFlXkRlJlFlO3JldHVy''@;'; put 'put ''biAkZTwwJiYoJGUrPTQyOTQ5NjcyOTYpLCRlfWZ1bmN0aW9uIHooRix5ZSl7dmFyIENlPVcoRix5ZSwyOCleVyh5ZSxGLDIpXlcoeWUsRiw3KTtyZXR1cm4gQ2U8MCYmKENlKz00Mjk0OTY3Mjk2KSxDZX1mdW5jdGlvbiBuZShGLHllKXt2YXIgQ2U9TihGLHllLDI4KV5OKHllLEYsMileTih5''@;'; put 'put ''ZSxGLDcpO3JldHVybiBDZTwwJiYoQ2UrPTQyOTQ5NjcyOTYpLENlfWZ1bmN0aW9uIHRlKEYseWUpe3ZhciBDZT1XKEYseWUsMTQpXlcoRix5ZSwxOCleVyh5ZSxGLDkpO3JldHVybiBDZTwwJiYoQ2UrPTQyOTQ5NjcyOTYpLENlfWZ1bmN0aW9uIHgoRix5ZSl7dmFyIENlPU4oRix5ZSwxNCle''@;'; put 'put ''TihGLHllLDE4KV5OKHllLEYsOSk7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9ZnVuY3Rpb24gUChGLHllKXt2YXIgQ2U9VyhGLHllLDEpXlcoRix5ZSw4KV5lZShGLHllLDcpO3JldHVybiBDZTwwJiYoQ2UrPTQyOTQ5NjcyOTYpLENlfWZ1bmN0aW9uIFYoRix5ZSl7dmFyIENl''@;'; put 'put ''PU4oRix5ZSwxKV5OKEYseWUsOClecShGLHllLDcpO3JldHVybiBDZTwwJiYoQ2UrPTQyOTQ5NjcyOTYpLENlfWZ1bmN0aW9uIFQoRix5ZSl7dmFyIENlPVcoRix5ZSwxOSleVyh5ZSxGLDI5KV5lZShGLHllLDYpO3JldHVybiBDZTwwJiYoQ2UrPTQyOTQ5NjcyOTYpLENlfWZ1bmN0aW9uIFMo''@;'; put 'put ''Rix5ZSl7dmFyIENlPU4oRix5ZSwxOSleTih5ZSxGLDI5KV5xKEYseWUsNik7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9aWUuaW5oZXJpdHMoSWUsa2UpLFUuZXhwb3J0cz1JZSxJZS5ibG9ja1NpemU9MTAyNCxJZS5vdXRTaXplPTUxMixJZS5obWFjU3RyZW5ndGg9MTkyLEll''@;'; put 'put ''LnBhZExlbmd0aD0xMjgsSWUucHJvdG90eXBlLl9wcmVwYXJlQmxvY2s9ZnVuY3Rpb24oRix5ZSl7Zm9yKHZhciBDZT10aGlzLlcsRGU9MDtEZTwzMjtEZSsrKUNlW0RlXT1GW3llK0RlXTtmb3IoO0RlPENlLmxlbmd0aDtEZSs9Mil7dmFyIFBlPVQoQ2VbRGUtNF0sQ2VbRGUtM10pLFFlPVMo''@;'; put 'put ''Q2VbRGUtNF0sQ2VbRGUtM10pLCRlPUNlW0RlLTE0XSxndD1DZVtEZS0xM10seXQ9UChDZVtEZS0zMF0sQ2VbRGUtMjldKSxwdD1WKENlW0RlLTMwXSxDZVtEZS0yOV0pLG10PUNlW0RlLTMyXSx2dD1DZVtEZS0zMV07Q2VbRGVdPWZlKFBlLFFlLCRlLGd0LHl0LHB0LG10LHZ0KSxDZVtEZSsx''@;'; put 'put ''XT1kZShQZSxRZSwkZSxndCx5dCxwdCxtdCx2dCl9fSxJZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihGLHllKXt0aGlzLl9wcmVwYXJlQmxvY2soRix5ZSk7dmFyIENlPXRoaXMuVyxEZT10aGlzLmhbMF0sUGU9dGhpcy5oWzFdLFFlPXRoaXMuaFsyXSwkZT10aGlzLmhbM10sZ3Q9dGhp''@;'; put 'put ''cy5oWzRdLHl0PXRoaXMuaFs1XSxwdD10aGlzLmhbNl0sbXQ9dGhpcy5oWzddLHZ0PXRoaXMuaFs4XSxmdD10aGlzLmhbOV0sRnQ9dGhpcy5oWzEwXSxvbj10aGlzLmhbMTFdLF90PXRoaXMuaFsxMl0sbnQ9dGhpcy5oWzEzXSxxZT10aGlzLmhbMTRdLG90PXRoaXMuaFsxNV07WSh0aGlzLmsu''@;'; put 'put ''bGVuZ3RoPT09Q2UubGVuZ3RoKTtmb3IodmFyIFJ0PTA7UnQ8Q2UubGVuZ3RoO1J0Kz0yKXt2YXIgQ3Q9cWUsY3Q9b3QsTnQ9dGUodnQsZnQpLHplPXgodnQsZnQpLFllPVRlKHZ0LDAsRnQsMCxfdCksQXQ9RWUoMCxmdCwwLG9uLDAsbnQpLGp0PXRoaXMua1tSdF0sSnQ9dGhpcy5rW1J0KzFd''@;'; put 'put ''LG1uPUNlW1J0XSxwbj1DZVtSdCsxXSxibj12ZShDdCxjdCxOdCx6ZSxZZSxBdCxqdCxKdCxtbixwbiksbG49QWUoQ3QsY3QsTnQsemUsWWUsQXQsanQsSnQsbW4scG4pO0N0PXooRGUsUGUpLGN0PW5lKERlLFBlKSxOdD1oZShEZSwwLFFlLDAsZ3QpLHplPU8oMCxQZSwwLCRlLDAseXQpO3Zh''@;'; put 'put ''ciBObj1zZShDdCxjdCxOdCx6ZSksa249YWUoQ3QsY3QsTnQsemUpO3FlPV90LG90PW50LF90PUZ0LG50PW9uLEZ0PXZ0LG9uPWZ0LHZ0PXNlKHB0LG10LGJuLGxuKSxmdD1hZShtdCxtdCxibixsbikscHQ9Z3QsbXQ9eXQsZ3Q9UWUseXQ9JGUsUWU9RGUsJGU9UGUsRGU9c2UoYm4sbG4sTm4s''@;'; put 'put ''a24pLFBlPWFlKGJuLGxuLE5uLGtuKX1KKHRoaXMuaCwwLERlLFBlKSxKKHRoaXMuaCwyLFFlLCRlKSxKKHRoaXMuaCw0LGd0LHl0KSxKKHRoaXMuaCw2LHB0LG10KSxKKHRoaXMuaCw4LHZ0LGZ0KSxKKHRoaXMuaCwxMCxGdCxvbiksSih0aGlzLmgsMTIsX3QsbnQpLEoodGhpcy5oLDE0LHFl''@;'; put 'put ''LG90KX0sSWUucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oRil7cmV0dXJuImhleCI9PT1GP2llLnRvSGV4MzIodGhpcy5oLCJiaWciKTppZS5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw3MDM4OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNjQzNikucm90cjMyO2Z1bmN0aW9u''@;'; put 'put ''IGxlKE4sZWUscSl7cmV0dXJuIE4mZWVefk4mcX1mdW5jdGlvbiBZKE4sZWUscSl7cmV0dXJuIE4mZWVeTiZxXmVlJnF9ZnVuY3Rpb24gVyhOLGVlLHEpe3JldHVybiBOXmVlXnF9US5mdF8xPWZ1bmN0aW9uKE4sZWUscSxKKXtyZXR1cm4gMD09PU4/bGUoZWUscSxKKToxPT09Tnx8Mz09PU4/''@;'; put 'put ''VyhlZSxxLEopOjI9PT1OP1koZWUscSxKKTp2b2lkIDB9LFEuY2gzMj1sZSxRLm1hajMyPVksUS5wMzI9VyxRLnMwXzI1Nj1mdW5jdGlvbihOKXtyZXR1cm4gaWUoTiwyKV5pZShOLDEzKV5pZShOLDIyKX0sUS5zMV8yNTY9ZnVuY3Rpb24oTil7cmV0dXJuIGllKE4sNileaWUoTiwxMSleaWUo''@;'; put 'put ''TiwyNSl9LFEuZzBfMjU2PWZ1bmN0aW9uKE4pe3JldHVybiBpZShOLDcpXmllKE4sMTgpXk4+Pj4zfSxRLmcxXzI1Nj1mdW5jdGlvbihOKXtyZXR1cm4gaWUoTiwxNyleaWUoTiwxOSleTj4+PjEwfX0sNjQzNjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDk3NDYpLGxlPVooNTcx''@;'; put 'put ''Nyk7ZnVuY3Rpb24gWShxLEope3JldHVybiA1NTI5Nj09KDY0NTEyJnEuY2hhckNvZGVBdChKKSkmJiEoSjwwfHxKKzE+PXEubGVuZ3RoKSYmNTYzMjA9PSg2NDUxMiZxLmNoYXJDb2RlQXQoSisxKSl9ZnVuY3Rpb24gVyhxKXtyZXR1cm4ocT4+PjI0fHE+Pj44JjY1MjgwfHE8PDgmMTY3MTE2''@;'; put 'put ''ODB8KDI1NSZxKTw8MjQpPj4+MH1mdW5jdGlvbiBOKHEpe3JldHVybiAxPT09cS5sZW5ndGg/IjAiK3E6cX1mdW5jdGlvbiBlZShxKXtyZXR1cm4gNz09PXEubGVuZ3RoPyIwIitxOjY9PT1xLmxlbmd0aD8iMDAiK3E6NT09PXEubGVuZ3RoPyIwMDAiK3E6ND09PXEubGVuZ3RoPyIwMDAwIitx''@;'; put 'put ''OjM9PT1xLmxlbmd0aD8iMDAwMDAiK3E6Mj09PXEubGVuZ3RoPyIwMDAwMDAiK3E6MT09PXEubGVuZ3RoPyIwMDAwMDAwIitxOnF9US5pbmhlcml0cz1sZSxRLnRvQXJyYXk9ZnVuY3Rpb24ocSxKKXtpZihBcnJheS5pc0FycmF5KHEpKXJldHVybiBxLnNsaWNlKCk7aWYoIXEpcmV0dXJuW107''@;'; put 'put ''dmFyIHNlPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgcSlpZihKKXtpZigiaGV4Ij09PUopZm9yKChxPXEucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYocT0iMCIrcSksZmU9MDtmZTxxLmxlbmd0aDtmZSs9MilzZS5wdXNoKHBhcnNlSW50KHFbZmVdK3FbZmUrMV0s''@;'; put 'put ''MTYpKX1lbHNlIGZvcih2YXIgYWU9MCxmZT0wO2ZlPHEubGVuZ3RoO2ZlKyspe3ZhciBkZT1xLmNoYXJDb2RlQXQoZmUpO2RlPDEyOD9zZVthZSsrXT1kZTpkZTwyMDQ4PyhzZVthZSsrXT1kZT4+NnwxOTIsc2VbYWUrK109NjMmZGV8MTI4KTpZKHEsZmUpPyhkZT02NTUzNisoKDEwMjMmZGUp''@;'; put 'put ''PDwxMCkrKDEwMjMmcS5jaGFyQ29kZUF0KCsrZmUpKSxzZVthZSsrXT1kZT4+MTh8MjQwLHNlW2FlKytdPWRlPj4xMiY2M3wxMjgsc2VbYWUrK109ZGU+PjYmNjN8MTI4LHNlW2FlKytdPTYzJmRlfDEyOCk6KHNlW2FlKytdPWRlPj4xMnwyMjQsc2VbYWUrK109ZGU+PjYmNjN8MTI4LHNlW2Fl''@;'; put 'put ''KytdPTYzJmRlfDEyOCl9ZWxzZSBmb3IoZmU9MDtmZTxxLmxlbmd0aDtmZSsrKXNlW2ZlXT0wfHFbZmVdO3JldHVybiBzZX0sUS50b0hleD1mdW5jdGlvbihxKXtmb3IodmFyIEo9IiIsc2U9MDtzZTxxLmxlbmd0aDtzZSsrKUorPU4ocVtzZV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gSn0sUS5o''@;'; put 'put ''dG9ubD1XLFEudG9IZXgzMj1mdW5jdGlvbihxLEope2Zvcih2YXIgc2U9IiIsYWU9MDthZTxxLmxlbmd0aDthZSsrKXt2YXIgZmU9cVthZV07ImxpdHRsZSI9PT1KJiYoZmU9VyhmZSkpLHNlKz1lZShmZS50b1N0cmluZygxNikpfXJldHVybiBzZX0sUS56ZXJvMj1OLFEuemVybzg9ZWUsUS5q''@;'; put 'put ''b2luMzI9ZnVuY3Rpb24ocSxKLHNlLGFlKXt2YXIgZmU9c2UtSjtpZShmZSU0PT0wKTtmb3IodmFyIGRlPW5ldyBBcnJheShmZS80KSx2ZT0wLEFlPUo7dmU8ZGUubGVuZ3RoO3ZlKyssQWUrPTQpZGVbdmVdPSgiYmlnIj09PWFlP3FbQWVdPDwyNHxxW0FlKzFdPDwxNnxxW0FlKzJdPDw4fHFb''@;'; put 'put ''QWUrM106cVtBZSszXTw8MjR8cVtBZSsyXTw8MTZ8cVtBZSsxXTw8OHxxW0FlXSk+Pj4wO3JldHVybiBkZX0sUS5zcGxpdDMyPWZ1bmN0aW9uKHEsSil7Zm9yKHZhciBzZT1uZXcgQXJyYXkoNCpxLmxlbmd0aCksYWU9MCxmZT0wO2FlPHEubGVuZ3RoO2FlKyssZmUrPTQpe3ZhciBkZT1xW2Fl''@;'; put 'put ''XTsiYmlnIj09PUo/KHNlW2ZlXT1kZT4+PjI0LHNlW2ZlKzFdPWRlPj4+MTYmMjU1LHNlW2ZlKzJdPWRlPj4+OCYyNTUsc2VbZmUrM109MjU1JmRlKTooc2VbZmUrM109ZGU+Pj4yNCxzZVtmZSsyXT1kZT4+PjE2JjI1NSxzZVtmZSsxXT1kZT4+PjgmMjU1LHNlW2ZlXT0yNTUmZGUpfXJldHVy''@;'; put 'put ''biBzZX0sUS5yb3RyMzI9ZnVuY3Rpb24ocSxKKXtyZXR1cm4gcT4+Pkp8cTw8MzItSn0sUS5yb3RsMzI9ZnVuY3Rpb24ocSxKKXtyZXR1cm4gcTw8SnxxPj4+MzItSn0sUS5zdW0zMj1mdW5jdGlvbihxLEope3JldHVybiBxK0o+Pj4wfSxRLnN1bTMyXzM9ZnVuY3Rpb24ocSxKLHNlKXtyZXR1''@;'; put 'put ''cm4gcStKK3NlPj4+MH0sUS5zdW0zMl80PWZ1bmN0aW9uKHEsSixzZSxhZSl7cmV0dXJuIHErSitzZSthZT4+PjB9LFEuc3VtMzJfNT1mdW5jdGlvbihxLEosc2UsYWUsZmUpe3JldHVybiBxK0orc2UrYWUrZmU+Pj4wfSxRLnN1bTY0PWZ1bmN0aW9uKHEsSixzZSxhZSl7dmFyIGRlPWFlK3Fb''@;'; put 'put ''SisxXT4+PjA7cVtKXT0oZGU8YWU/MTowKStzZStxW0pdPj4+MCxxW0orMV09ZGV9LFEuc3VtNjRfaGk9ZnVuY3Rpb24ocSxKLHNlLGFlKXtyZXR1cm4oSithZT4+PjA8Sj8xOjApK3Erc2U+Pj4wfSxRLnN1bTY0X2xvPWZ1bmN0aW9uKHEsSixzZSxhZSl7cmV0dXJuIEorYWU+Pj4wfSxRLnN1''@;'; put 'put ''bTY0XzRfaGk9ZnVuY3Rpb24ocSxKLHNlLGFlLGZlLGRlLHZlLEFlKXt2YXIga2U9MCxTZT1KO3JldHVybiBrZSs9KFNlPVNlK2FlPj4+MCk8Sj8xOjAsa2UrPShTZT1TZStkZT4+PjApPGRlPzE6MCxxK3NlK2ZlK3ZlKyhrZSs9KFNlPVNlK0FlPj4+MCk8QWU/MTowKT4+PjB9LFEuc3VtNjRf''@;'; put 'put ''NF9sbz1mdW5jdGlvbihxLEosc2UsYWUsZmUsZGUsdmUsQWUpe3JldHVybiBKK2FlK2RlK0FlPj4+MH0sUS5zdW02NF81X2hpPWZ1bmN0aW9uKHEsSixzZSxhZSxmZSxkZSx2ZSxBZSxrZSxTZSl7dmFyIEllPTAsVGU9SjtyZXR1cm4gSWUrPShUZT1UZSthZT4+PjApPEo/MTowLEllKz0oVGU9''@;'; put 'put ''VGUrZGU+Pj4wKTxkZT8xOjAsSWUrPShUZT1UZStBZT4+PjApPEFlPzE6MCxxK3NlK2ZlK3ZlK2tlKyhJZSs9KFRlPVRlK1NlPj4+MCk8U2U/MTowKT4+PjB9LFEuc3VtNjRfNV9sbz1mdW5jdGlvbihxLEosc2UsYWUsZmUsZGUsdmUsQWUsa2UsU2Upe3JldHVybiBKK2FlK2RlK0FlK1NlPj4+''@;'; put 'put ''MH0sUS5yb3RyNjRfaGk9ZnVuY3Rpb24ocSxKLHNlKXtyZXR1cm4oSjw8MzItc2V8cT4+PnNlKT4+PjB9LFEucm90cjY0X2xvPWZ1bmN0aW9uKHEsSixzZSl7cmV0dXJuKHE8PDMyLXNlfEo+Pj5zZSk+Pj4wfSxRLnNocjY0X2hpPWZ1bmN0aW9uKHEsSixzZSl7cmV0dXJuIHE+Pj5zZX0sUS5z''@;'; put 'put ''aHI2NF9sbz1mdW5jdGlvbihxLEosc2Upe3JldHVybihxPDwzMi1zZXxKPj4+c2UpPj4+MH19LDIxNTY6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9WigzNzE1KSxsZT1aKDQ1MDQpLFk9Wig5NzQ2KTtmdW5jdGlvbiBXKE4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIFcpKXJldHVybiBu''@;'; put 'put ''ZXcgVyhOKTt0aGlzLmhhc2g9Ti5oYXNoLHRoaXMucHJlZFJlc2lzdD0hIU4ucHJlZFJlc2lzdCx0aGlzLm91dExlbj10aGlzLmhhc2gub3V0U2l6ZSx0aGlzLm1pbkVudHJvcHk9Ti5taW5FbnRyb3B5fHx0aGlzLmhhc2guaG1hY1N0cmVuZ3RoLHRoaXMuX3Jlc2VlZD1udWxsLHRoaXMucmVz''@;'; put 'put ''ZWVkSW50ZXJ2YWw9bnVsbCx0aGlzLks9bnVsbCx0aGlzLlY9bnVsbDt2YXIgZWU9bGUudG9BcnJheShOLmVudHJvcHksTi5lbnRyb3B5RW5jfHwiaGV4IikscT1sZS50b0FycmF5KE4ubm9uY2UsTi5ub25jZUVuY3x8ImhleCIpLEo9bGUudG9BcnJheShOLnBlcnMsTi5wZXJzRW5jfHwiaGV4''@;'; put 'put ''Iik7WShlZS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpLHRoaXMuX2luaXQoZWUscSxKKX1VLmV4cG9ydHM9VyxXLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihOLGVlLHEpe3ZhciBK''@;'; put 'put ''PU4uY29uY2F0KGVlKS5jb25jYXQocSk7dGhpcy5LPW5ldyBBcnJheSh0aGlzLm91dExlbi84KSx0aGlzLlY9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpO2Zvcih2YXIgc2U9MDtzZTx0aGlzLlYubGVuZ3RoO3NlKyspdGhpcy5LW3NlXT0wLHRoaXMuVltzZV09MTt0aGlzLl91cGRhdGUoSiks''@;'; put 'put ''dGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LFcucHJvdG90eXBlLl9obWFjPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpZS5obWFjKHRoaXMuaGFzaCx0aGlzLkspfSxXLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKE4pe3ZhciBlZT10aGlzLl9o''@;'; put 'put ''bWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFswXSk7TiYmKGVlPWVlLnVwZGF0ZShOKSksdGhpcy5LPWVlLmRpZ2VzdCgpLHRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCksTiYmKHRoaXMuSz10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFsx''@;'; put 'put ''XSkudXBkYXRlKE4pLmRpZ2VzdCgpLHRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCkpfSxXLnByb3RvdHlwZS5yZXNlZWQ9ZnVuY3Rpb24oTixlZSxxLEopeyJzdHJpbmciIT10eXBlb2YgZWUmJihKPXEscT1lZSxlZT1udWxsKSxOPWxlLnRvQXJyYXkoTixlZSks''@;'; put 'put ''cT1sZS50b0FycmF5KHEsSiksWShOLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5fdXBkYXRlKE4uY29uY2F0KHF8fFtdKSksdGhpcy5fcmVzZWVkPTF9LFcucHJvdG90eXBl''@;'; put 'put ''LmdlbmVyYXRlPWZ1bmN0aW9uKE4sZWUscSxKKXtpZih0aGlzLl9yZXNlZWQ+dGhpcy5yZXNlZWRJbnRlcnZhbCl0aHJvdyBuZXcgRXJyb3IoIlJlc2VlZCBpcyByZXF1aXJlZCIpOyJzdHJpbmciIT10eXBlb2YgZWUmJihKPXEscT1lZSxlZT1udWxsKSxxJiYocT1sZS50b0FycmF5KHEsSnx8''@;'; put 'put ''ImhleCIpLHRoaXMuX3VwZGF0ZShxKSk7Zm9yKHZhciBzZT1bXTtzZS5sZW5ndGg8TjspdGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKSxzZT1zZS5jb25jYXQodGhpcy5WKTt2YXIgYWU9c2Uuc2xpY2UoMCxOKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHEpLHRoaXMu''@;'; put 'put ''X3Jlc2VlZCsrLGxlLmVuY29kZShhZSxlZSl9fSw2NDU6KFUsUSk9PntRLnJlYWQ9ZnVuY3Rpb24oWixpZSxsZSxZLFcpe3ZhciBOLGVlLHE9OCpXLVktMSxKPSgxPDxxKS0xLHNlPUo+PjEsYWU9LTcsZmU9bGU/Vy0xOjAsZGU9bGU/LTE6MSx2ZT1aW2llK2ZlXTtmb3IoZmUrPWRlLE49dmUm''@;'; put 'put ''KDE8PC1hZSktMSx2ZT4+PS1hZSxhZSs9cTthZT4wO049MjU2Kk4rWltpZStmZV0sZmUrPWRlLGFlLT04KTtmb3IoZWU9TiYoMTw8LWFlKS0xLE4+Pj0tYWUsYWUrPVk7YWU+MDtlZT0yNTYqZWUrWltpZStmZV0sZmUrPWRlLGFlLT04KTtpZigwPT09TilOPTEtc2U7ZWxzZXtpZihOPT09Sily''@;'; put 'put ''ZXR1cm4gZWU/TmFOOjEvMCoodmU/LTE6MSk7ZWUrPU1hdGgucG93KDIsWSksTi09c2V9cmV0dXJuKHZlPy0xOjEpKmVlKk1hdGgucG93KDIsTi1ZKX0sUS53cml0ZT1mdW5jdGlvbihaLGllLGxlLFksVyxOKXt2YXIgZWUscSxKLHNlPTgqTi1XLTEsYWU9KDE8PHNlKS0xLGZlPWFlPj4xLGRl''@;'; put 'put ''PTIzPT09Vz9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAsdmU9WT8wOk4tMSxBZT1ZPzE6LTEsa2U9aWU8MHx8MD09PWllJiYxL2llPDA/MTowO2ZvcihpZT1NYXRoLmFicyhpZSksaXNOYU4oaWUpfHxpZT09PTEvMD8ocT1pc05hTihpZSk/MTowLGVlPWFlKTooZWU9TWF0aC5m''@;'; put 'put ''bG9vcihNYXRoLmxvZyhpZSkvTWF0aC5MTjIpLGllKihKPU1hdGgucG93KDIsLWVlKSk8MSYmKGVlLS0sSio9MiksKGllKz1lZStmZT49MT9kZS9KOmRlKk1hdGgucG93KDIsMS1mZSkpKko+PTImJihlZSsrLEovPTIpLGVlK2ZlPj1hZT8ocT0wLGVlPWFlKTplZStmZT49MT8ocT0oaWUqSi0x''@;'; put 'put ''KSpNYXRoLnBvdygyLFcpLGVlKz1mZSk6KHE9aWUqTWF0aC5wb3coMixmZS0xKSpNYXRoLnBvdygyLFcpLGVlPTApKTtXPj04O1pbbGUrdmVdPTI1NSZxLHZlKz1BZSxxLz0yNTYsVy09OCk7Zm9yKGVlPWVlPDxXfHEsc2UrPVc7c2U+MDtaW2xlK3ZlXT0yNTUmZWUsdmUrPUFlLGVlLz0yNTYs''@;'; put 'put ''c2UtPTgpO1pbbGUrdmUtQWVdfD0xMjgqa2V9fSw3ODQ0OihVLFEsWik9Pnt2YXIgaWU9Wig0MTU1KSxsZT1aKDI0NzkpLFk9T2JqZWN0LmNyZWF0ZShudWxsKSxXPVooNzc4KTtmdW5jdGlvbiBOKGVlKXtmb3IodmFyIHE9ZWUubGVuZ3RoLEo9W10sc2U9MDtzZTxxO3NlKyspSltzZV09ZWVb''@;'; put 'put ''c2VdO3JldHVybiBKfVUuZXhwb3J0cz1sZShmdW5jdGlvbihlZSxxKXtyZXR1cm4gWVtlZV0/KFlbZWVdLnB1c2gocSksbnVsbCk6KFlbZWVdPVtxXSxKPWVlLFcoZnVuY3Rpb24gc2UoKXt2YXIgYWU9WVtKXSxmZT1hZS5sZW5ndGgsZGU9Tihhcmd1bWVudHMpO3RyeXtmb3IodmFyIHZlPTA7''@;'; put 'put ''dmU8ZmU7dmUrKylhZVt2ZV0uYXBwbHkobnVsbCxkZSl9ZmluYWxseXthZS5sZW5ndGg+ZmU/KGFlLnNwbGljZSgwLGZlKSxpZS5uZXh0VGljayhmdW5jdGlvbigpe3NlLmFwcGx5KG51bGwsZGUpfSkpOmRlbGV0ZSBZW0pdfX0pKTt2YXIgSn0pfSw1NzE3OlU9PntVLmV4cG9ydHM9ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oUSxaKXtaJiYoUS5zdXBlcl89WixRLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFoucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6USxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSl9OmZ1''@;'; put 'put ''bmN0aW9uKFEsWil7aWYoWil7US5zdXBlcl89Wjt2YXIgaWU9ZnVuY3Rpb24oKXt9O2llLnByb3RvdHlwZT1aLnByb3RvdHlwZSxRLnByb3RvdHlwZT1uZXcgaWUsUS5wcm90b3R5cGUuY29uc3RydWN0b3I9UX19fSwyNTg0OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNjQxMCko''@;'; put 'put ''KSxsZT1aKDE5MjQpKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIiksWT1mdW5jdGlvbihlZSl7cmV0dXJuIShpZSYmZWUmJiJvYmplY3QiPT10eXBlb2YgZWUmJlN5bWJvbC50b1N0cmluZ1RhZyBpbiBlZSkmJiJbb2JqZWN0IEFyZ3VtZW50c10iPT09bGUoZWUpfSxXPWZ1bmN0aW9uKGVl''@;'; put 'put ''KXtyZXR1cm4hIVkoZWUpfHxudWxsIT09ZWUmJiJvYmplY3QiPT10eXBlb2YgZWUmJiJudW1iZXIiPT10eXBlb2YgZWUubGVuZ3RoJiZlZS5sZW5ndGg+PTAmJiJbb2JqZWN0IEFycmF5XSIhPT1sZShlZSkmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1sZShlZS5jYWxsZWUpfSxOPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFkoYXJndW1lbnRzKX0oKTtZLmlzTGVnYWN5QXJndW1lbnRzPVcsVS5leHBvcnRzPU4/WTpXfSw1MzIwOlU9PnsidXNlIHN0cmljdCI7dmFyIFEsWixpZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbGU9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZudWxsIT09UmVm''@;'; put 'put ''bGVjdCYmUmVmbGVjdC5hcHBseTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5e1E9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXt0aHJvdyBafX0pLFo9e30sbGUoZnVu''@;'; put 'put ''Y3Rpb24oKXt0aHJvdyA0Mn0sbnVsbCxRKX1jYXRjaChKKXtKIT09WiYmKGxlPW51bGwpfWVsc2UgbGU9bnVsbDt2YXIgWT0vXlxzKmNsYXNzXGIvLFc9ZnVuY3Rpb24oSil7dHJ5e3ZhciBzZT1pZS5jYWxsKEopO3JldHVybiBZLnRlc3Qoc2UpfWNhdGNoKGFlKXtyZXR1cm4hMX19LE49T2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZyxlZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYhIVN5bWJvbC50b1N0cmluZ1RhZyxxPSJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJnZvaWQgMD09PWRvY3VtZW50LmFsbCYmdm9pZCAwIT09ZG9jdW1lbnQuYWxsP2RvY3VtZW50LmFsbDp7fTtV''@;'; put 'put ''LmV4cG9ydHM9bGU/ZnVuY3Rpb24oSil7aWYoSj09PXEpcmV0dXJuITA7aWYoIUp8fCJmdW5jdGlvbiIhPXR5cGVvZiBKJiYib2JqZWN0IiE9dHlwZW9mIEopcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEomJiFKLnByb3RvdHlwZSlyZXR1cm4hMDt0cnl7bGUoSixudWxsLFEpfWNh''@;'; put 'put ''dGNoKHNlKXtpZihzZSE9PVopcmV0dXJuITF9cmV0dXJuIVcoSil9OmZ1bmN0aW9uKEope2lmKEo9PT1xKXJldHVybiEwO2lmKCFKfHwiZnVuY3Rpb24iIT10eXBlb2YgSiYmIm9iamVjdCIhPXR5cGVvZiBKKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBKJiYhSi5wcm90b3R5cGUp''@;'; put 'put ''cmV0dXJuITA7aWYoZWUpcmV0dXJuIGZ1bmN0aW9uKGFlKXt0cnl7cmV0dXJuIVcoYWUpJiYoaWUuY2FsbChhZSksITApfWNhdGNoKGZlKXtyZXR1cm4hMX19KEopO2lmKFcoSikpcmV0dXJuITE7dmFyIHNlPU4uY2FsbChKKTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09c2V8fCJbb2Jq''@;'; put 'put ''ZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PT1zZX19LDg2NjI6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxZPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxXPS9eXHMqKD86ZnVuY3Rpb24pP1wqLyxOPVooNjQxMCkoKSxlZT1P''@;'; put 'put ''YmplY3QuZ2V0UHJvdG90eXBlT2Y7VS5leHBvcnRzPWZ1bmN0aW9uKHEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBxKXJldHVybiExO2lmKFcudGVzdChZLmNhbGwocSkpKXJldHVybiEwO2lmKCFOKXJldHVybiJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PT1sZS5jYWxsKHEpO2lmKCFl''@;'; put 'put ''ZSlyZXR1cm4hMTtpZih2b2lkIDA9PT1pZSl7dmFyIEo9ZnVuY3Rpb24oKXtpZighTilyZXR1cm4hMTt0cnl7cmV0dXJuIEZ1bmN0aW9uKCJyZXR1cm4gZnVuY3Rpb24qKCkge30iKSgpfWNhdGNoKHNlKXt9fSgpO2llPSEhSiYmZWUoSil9cmV0dXJuIGVlKHEpPT09aWV9fSw4NjExOlU9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7VS5leHBvcnRzPWZ1bmN0aW9uKFEpe3JldHVybiBRIT1RfX0sMzYwOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNTU1OSksbGU9Wig0Mjg5KSxZPVooODYxMSksVz1aKDk0MTUpLE49WigzMTk0KSxlZT1pZShXKCksTnVtYmVyKTtsZShlZSx7Z2V0UG9seWZp''@;'; put 'put ''bGw6VyxpbXBsZW1lbnRhdGlvbjpZLHNoaW06Tn0pLFUuZXhwb3J0cz1lZX0sOTQxNTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDg2MTEpO1UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBOdW1iZXIuaXNOYU4mJk51bWJlci5pc05hTihOYU4pJiYhTnVtYmVyLmlzTmFOKCJh''@;'; put 'put ''Iik/TnVtYmVyLmlzTmFOOmllfX0sMzE5NDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQyODkpLGxlPVooOTQxNSk7VS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIFk9bGUoKTtyZXR1cm4gaWUoTnVtYmVyLHtpc05hTjpZfSx7aXNOYU46ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVy''@;'; put 'put ''LmlzTmFOIT09WX19KSxZfX0sNTY5MjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQwMjkpLGxlPVooMzA4MyksWT1aKDE5MjQpLFc9WSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyIpLE49Wig2NDEwKSgpLGVlPSJ1bmRlZmluZWQiPT10eXBlb2YgZ2xvYmFsVGhpcz9aLmc6''@;'; put 'put ''Z2xvYmFsVGhpcyxxPWxlKCksSj1ZKCJBcnJheS5wcm90b3R5cGUuaW5kZXhPZiIsITApfHxmdW5jdGlvbih2ZSxBZSl7Zm9yKHZhciBrZT0wO2tlPHZlLmxlbmd0aDtrZSs9MSlpZih2ZVtrZV09PT1BZSlyZXR1cm4ga2U7cmV0dXJuLTF9LHNlPVkoIlN0cmluZy5wcm90b3R5cGUuc2xpY2Ui''@;'; put 'put ''KSxhZT17fSxmZT1aKDg4MiksZGU9T2JqZWN0LmdldFByb3RvdHlwZU9mO04mJmZlJiZkZSYmaWUocSxmdW5jdGlvbih2ZSl7dmFyIEFlPW5ldyBlZVt2ZV07aWYoU3ltYm9sLnRvU3RyaW5nVGFnIGluIEFlKXt2YXIga2U9ZGUoQWUpLFNlPWZlKGtlLFN5bWJvbC50b1N0cmluZ1RhZyk7aWYo''@;'; put 'put ''IVNlKXt2YXIgSWU9ZGUoa2UpO1NlPWZlKEllLFN5bWJvbC50b1N0cmluZ1RhZyl9YWVbdmVdPVNlLmdldH19KSxVLmV4cG9ydHM9ZnVuY3Rpb24odmUpe2lmKCF2ZXx8Im9iamVjdCIhPXR5cGVvZiB2ZSlyZXR1cm4hMTtpZighTnx8IShTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmUpKXt2YXIg''@;'; put 'put ''QWU9c2UoVyh2ZSksOCwtMSk7cmV0dXJuIEoocSxBZSk+LTF9cmV0dXJuISFmZSYmKGtlPXZlLFNlPSExLGllKGFlLGZ1bmN0aW9uKEllLFRlKXtpZighU2UpdHJ5e1NlPUllLmNhbGwoa2UpPT09VGV9Y2F0Y2goRWUpe319KSxTZSk7dmFyIGtlLFNlfX0sNjgxMzooVSxRLFopPT57bGV0IGll''@;'; put 'put ''O3RyeXtpZT1aKDc3KX1jYXRjaChlZSl7aWU9Wig0MTI5KX1jb25zdCBsZT1aKDg5ODEpLHtzdHJpbmdpZnk6WSxzdHJpcEJvbTpXfT1aKDY3ODApLE49e3JlYWRGaWxlOmxlLmZyb21Qcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGVlPWdlKGZ1bmN0aW9uKihxLEo9e30peyJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgSiYmKEo9e2VuY29kaW5nOkp9KTtjb25zdCBzZT1KLmZzfHxpZSxhZT0hKCJ0aHJvd3MiaW4gSil8fEoudGhyb3dzO2xldCBmZSxkZT15aWVsZCBsZS5mcm9tQ2FsbGJhY2soc2UucmVhZEZpbGUpKHEsSik7ZGU9VyhkZSk7dHJ5e2ZlPUpTT04ucGFyc2UoZGUsSj9KLnJldml2ZXI6bnVs''@;'; put 'put ''bCl9Y2F0Y2godmUpe2lmKGFlKXRocm93IHZlLm1lc3NhZ2U9YCR7cX06ICR7dmUubWVzc2FnZX1gLHZlO3JldHVybiBudWxsfXJldHVybiBmZX0pO3JldHVybiBmdW5jdGlvbihxKXtyZXR1cm4gZWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkscmVhZEZpbGVTeW5jOmZ1bmN0aW9uKGVl''@;'; put 'put ''LHE9e30peyJzdHJpbmciPT10eXBlb2YgcSYmKHE9e2VuY29kaW5nOnF9KTtjb25zdCBKPXEuZnN8fGllLHNlPSEoInRocm93cyJpbiBxKXx8cS50aHJvd3M7dHJ5e2xldCBhZT1KLnJlYWRGaWxlU3luYyhlZSxxKTtyZXR1cm4gYWU9VyhhZSksSlNPTi5wYXJzZShhZSxxLnJldml2ZXIpfWNh''@;'; put 'put ''dGNoKGFlKXtpZihzZSl0aHJvdyBhZS5tZXNzYWdlPWAke2VlfTogJHthZS5tZXNzYWdlfWAsYWU7cmV0dXJuIG51bGx9fSx3cml0ZUZpbGU6bGUuZnJvbVByb21pc2UoZnVuY3Rpb24oKXt2YXIgZWU9Z2UoZnVuY3Rpb24qKHEsSixzZT17fSl7Y29uc3QgYWU9c2UuZnN8fGllLGZlPVkoSixz''@;'; put 'put ''ZSk7eWllbGQgbGUuZnJvbUNhbGxiYWNrKGFlLndyaXRlRmlsZSkocSxmZSxzZSl9KTtyZXR1cm4gZnVuY3Rpb24ocSxKKXtyZXR1cm4gZWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSksd3JpdGVGaWxlU3luYzpmdW5jdGlvbihlZSxxLEo9e30pe2NvbnN0IHNlPUouZnN8fGllLGFlPVko''@;'; put 'put ''cSxKKTtyZXR1cm4gc2Uud3JpdGVGaWxlU3luYyhlZSxhZSxKKX19O1UuZXhwb3J0cz1OfSw2NzgwOihVLFEsWik9Pnt2YXIgaWU9Wig4NzY0KS5CdWZmZXI7VS5leHBvcnRzPXtzdHJpbmdpZnk6ZnVuY3Rpb24obGUse0VPTDpZPSJcbiIsZmluYWxFT0w6Vz0hMCxyZXBsYWNlcjpOPW51bGws''@;'; put 'put ''c3BhY2VzOmVlfT17fSl7Y29uc3QgcT1XP1k6IiI7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGxlLE4sZWUpLnJlcGxhY2UoL1xuL2csWSkrcX0sc3RyaXBCb206ZnVuY3Rpb24obGUpe3JldHVybiBpZS5pc0J1ZmZlcihsZSkmJihsZT1sZS50b1N0cmluZygidXRmOCIpKSxsZS5yZXBsYWNlKC9e''@;'; put 'put ''XHVGRUZGLywiIil9fX0sNjI0NTooVSxRLFopPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGllKGVlKXt0aGlzLm1lc3NhZ2U9ZWV9Wi5yKFEpLFouZChRLHtkZWZhdWx0OigpPT5OLEludmFsaWRUb2tlbkVycm9yOigpPT5XfSksKGllLnByb3RvdHlwZT1uZXcgRXJyb3IpLm5hbWU9IkludmFs''@;'; put 'put ''aWRDaGFyYWN0ZXJFcnJvciI7dmFyIGxlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuYXRvYiYmd2luZG93LmF0b2IuYmluZCh3aW5kb3cpfHxmdW5jdGlvbihlZSl7dmFyIHE9U3RyaW5nKGVlKS5yZXBsYWNlKC89KyQvLCIiKTtpZihxLmxlbmd0aCU0PT0xKXRocm93IG5l''@;'; put 'put ''dyBpZSgiJ2F0b2InIGZhaWxlZDogVGhlIHN0cmluZyB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKTtmb3IodmFyIEosc2UsYWU9MCxmZT0wLGRlPSIiO3NlPXEuY2hhckF0KGZlKyspO35zZSYmKEo9YWUlND82NCpKK3NlOnNlLGFlKyslNCk/ZGUrPVN0cmluZy5m''@;'; put 'put ''cm9tQ2hhckNvZGUoMjU1Jko+PigtMiphZSY2KSk6MClzZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLmluZGV4T2Yoc2UpO3JldHVybiBkZX07ZnVuY3Rpb24gVyhlZSl7dGhpcy5tZXNzYWdlPWVlfShXLnByb3Rv''@;'; put 'put ''dHlwZT1uZXcgRXJyb3IpLm5hbWU9IkludmFsaWRUb2tlbkVycm9yIjtjb25zdCBOPWZ1bmN0aW9uKGVlLHEpe2lmKCJzdHJpbmciIT10eXBlb2YgZWUpdGhyb3cgbmV3IFcoIkludmFsaWQgdG9rZW4gc3BlY2lmaWVkIik7dmFyIEo9ITA9PT0ocT1xfHx7fSkuaGVhZGVyPzA6MTt0cnl7cmV0''@;'; put 'put ''dXJuIEpTT04ucGFyc2UoZnVuY3Rpb24gWShlZSl7dmFyIHE9ZWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIik7c3dpdGNoKHEubGVuZ3RoJTQpe2Nhc2UgMDpicmVhaztjYXNlIDI6cSs9Ij09IjticmVhaztjYXNlIDM6cSs9Ij0iO2JyZWFrO2RlZmF1bHQ6dGhyb3ciSWxs''@;'; put 'put ''ZWdhbCBiYXNlNjR1cmwgc3RyaW5nISJ9dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQobGUocSkucmVwbGFjZSgvKC4pL2csZnVuY3Rpb24oc2UsYWUpe3ZhciBmZT1hZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBmZS5sZW5ndGg8MiYmKGZl''@;'; put 'put ''PSIwIitmZSksIiUiK2ZlfSkpfWNhdGNoKEope3JldHVybiBsZShxKX19KGVlLnNwbGl0KCIuIilbSl0pKX1jYXRjaChzZSl7dGhyb3cgbmV3IFcoIkludmFsaWQgdG9rZW4gc3BlY2lmaWVkOiAiK3NlLm1lc3NhZ2UpfX19LDIzMTg6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig1''@;'; put 'put ''NzE3KSxsZT1aKDMzNDkpLFk9Wig5NTA5KS5CdWZmZXIsVz1uZXcgQXJyYXkoMTYpO2Z1bmN0aW9uIE4oKXtsZS5jYWxsKHRoaXMsNjQpLHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4fWZ1bmN0aW9uIGVl''@;'; put 'put ''KGZlLGRlKXtyZXR1cm4gZmU8PGRlfGZlPj4+MzItZGV9ZnVuY3Rpb24gcShmZSxkZSx2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIGVlKGZlKyhkZSZ2ZXx+ZGUmQWUpK2tlK1NlfDAsSWUpK2RlfDB9ZnVuY3Rpb24gSihmZSxkZSx2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIGVlKGZlKyhkZSZBZXx2''@;'; put 'put ''ZSZ+QWUpK2tlK1NlfDAsSWUpK2RlfDB9ZnVuY3Rpb24gc2UoZmUsZGUsdmUsQWUsa2UsU2UsSWUpe3JldHVybiBlZShmZSsoZGVedmVeQWUpK2tlK1NlfDAsSWUpK2RlfDB9ZnVuY3Rpb24gYWUoZmUsZGUsdmUsQWUsa2UsU2UsSWUpe3JldHVybiBlZShmZSsodmVeKGRlfH5BZSkpK2tlK1Nl''@;'; put 'put ''fDAsSWUpK2RlfDB9aWUoTixsZSksTi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZmU9VyxkZT0wO2RlPDE2OysrZGUpZmVbZGVdPXRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKDQqZGUpO3ZhciB2ZT10aGlzLl9hLEFlPXRoaXMuX2Isa2U9dGhpcy5fYyxTZT10aGlzLl9k''@;'; put 'put ''O3ZlPXEodmUsQWUsa2UsU2UsZmVbMF0sMzYxNDA5MDM2MCw3KSxTZT1xKFNlLHZlLEFlLGtlLGZlWzFdLDM5MDU0MDI3MTAsMTIpLGtlPXEoa2UsU2UsdmUsQWUsZmVbMl0sNjA2MTA1ODE5LDE3KSxBZT1xKEFlLGtlLFNlLHZlLGZlWzNdLDMyNTA0NDE5NjYsMjIpLHZlPXEodmUsQWUsa2Us''@;'; put 'put ''U2UsZmVbNF0sNDExODU0ODM5OSw3KSxTZT1xKFNlLHZlLEFlLGtlLGZlWzVdLDEyMDAwODA0MjYsMTIpLGtlPXEoa2UsU2UsdmUsQWUsZmVbNl0sMjgyMTczNTk1NSwxNyksQWU9cShBZSxrZSxTZSx2ZSxmZVs3XSw0MjQ5MjYxMzEzLDIyKSx2ZT1xKHZlLEFlLGtlLFNlLGZlWzhdLDE3NzAw''@;'; put 'put ''MzU0MTYsNyksU2U9cShTZSx2ZSxBZSxrZSxmZVs5XSwyMzM2NTUyODc5LDEyKSxrZT1xKGtlLFNlLHZlLEFlLGZlWzEwXSw0Mjk0OTI1MjMzLDE3KSxBZT1xKEFlLGtlLFNlLHZlLGZlWzExXSwyMzA0NTYzMTM0LDIyKSx2ZT1xKHZlLEFlLGtlLFNlLGZlWzEyXSwxODA0NjAzNjgyLDcpLFNl''@;'; put 'put ''PXEoU2UsdmUsQWUsa2UsZmVbMTNdLDQyNTQ2MjYxOTUsMTIpLGtlPXEoa2UsU2UsdmUsQWUsZmVbMTRdLDI3OTI5NjUwMDYsMTcpLHZlPUoodmUsQWU9cShBZSxrZSxTZSx2ZSxmZVsxNV0sMTIzNjUzNTMyOSwyMiksa2UsU2UsZmVbMV0sNDEyOTE3MDc4Niw1KSxTZT1KKFNlLHZlLEFlLGtl''@;'; put 'put ''LGZlWzZdLDMyMjU0NjU2NjQsOSksa2U9SihrZSxTZSx2ZSxBZSxmZVsxMV0sNjQzNzE3NzEzLDE0KSxBZT1KKEFlLGtlLFNlLHZlLGZlWzBdLDM5MjEwNjk5OTQsMjApLHZlPUoodmUsQWUsa2UsU2UsZmVbNV0sMzU5MzQwODYwNSw1KSxTZT1KKFNlLHZlLEFlLGtlLGZlWzEwXSwzODAxNjA4''@;'; put 'put ''Myw5KSxrZT1KKGtlLFNlLHZlLEFlLGZlWzE1XSwzNjM0NDg4OTYxLDE0KSxBZT1KKEFlLGtlLFNlLHZlLGZlWzRdLDM4ODk0Mjk0NDgsMjApLHZlPUoodmUsQWUsa2UsU2UsZmVbOV0sNTY4NDQ2NDM4LDUpLFNlPUooU2UsdmUsQWUsa2UsZmVbMTRdLDMyNzUxNjM2MDYsOSksa2U9SihrZSxT''@;'; put 'put ''ZSx2ZSxBZSxmZVszXSw0MTA3NjAzMzM1LDE0KSxBZT1KKEFlLGtlLFNlLHZlLGZlWzhdLDExNjM1MzE1MDEsMjApLHZlPUoodmUsQWUsa2UsU2UsZmVbMTNdLDI4NTAyODU4MjksNSksU2U9SihTZSx2ZSxBZSxrZSxmZVsyXSw0MjQzNTYzNTEyLDkpLGtlPUooa2UsU2UsdmUsQWUsZmVbN10s''@;'; put 'put ''MTczNTMyODQ3MywxNCksdmU9c2UodmUsQWU9SihBZSxrZSxTZSx2ZSxmZVsxMl0sMjM2ODM1OTU2MiwyMCksa2UsU2UsZmVbNV0sNDI5NDU4ODczOCw0KSxTZT1zZShTZSx2ZSxBZSxrZSxmZVs4XSwyMjcyMzkyODMzLDExKSxrZT1zZShrZSxTZSx2ZSxBZSxmZVsxMV0sMTgzOTAzMDU2Miwx''@;'; put 'put ''NiksQWU9c2UoQWUsa2UsU2UsdmUsZmVbMTRdLDQyNTk2NTc3NDAsMjMpLHZlPXNlKHZlLEFlLGtlLFNlLGZlWzFdLDI3NjM5NzUyMzYsNCksU2U9c2UoU2UsdmUsQWUsa2UsZmVbNF0sMTI3Mjg5MzM1MywxMSksa2U9c2Uoa2UsU2UsdmUsQWUsZmVbN10sNDEzOTQ2OTY2NCwxNiksQWU9c2Uo''@;'; put 'put ''QWUsa2UsU2UsdmUsZmVbMTBdLDMyMDAyMzY2NTYsMjMpLHZlPXNlKHZlLEFlLGtlLFNlLGZlWzEzXSw2ODEyNzkxNzQsNCksU2U9c2UoU2UsdmUsQWUsa2UsZmVbMF0sMzkzNjQzMDA3NCwxMSksa2U9c2Uoa2UsU2UsdmUsQWUsZmVbM10sMzU3MjQ0NTMxNywxNiksQWU9c2UoQWUsa2UsU2Us''@;'; put 'put ''dmUsZmVbNl0sNzYwMjkxODksMjMpLHZlPXNlKHZlLEFlLGtlLFNlLGZlWzldLDM2NTQ2MDI4MDksNCksU2U9c2UoU2UsdmUsQWUsa2UsZmVbMTJdLDM4NzMxNTE0NjEsMTEpLGtlPXNlKGtlLFNlLHZlLEFlLGZlWzE1XSw1MzA3NDI1MjAsMTYpLHZlPWFlKHZlLEFlPXNlKEFlLGtlLFNlLHZl''@;'; put 'put ''LGZlWzJdLDMyOTk2Mjg2NDUsMjMpLGtlLFNlLGZlWzBdLDQwOTYzMzY0NTIsNiksU2U9YWUoU2UsdmUsQWUsa2UsZmVbN10sMTEyNjg5MTQxNSwxMCksa2U9YWUoa2UsU2UsdmUsQWUsZmVbMTRdLDI4Nzg2MTIzOTEsMTUpLEFlPWFlKEFlLGtlLFNlLHZlLGZlWzVdLDQyMzc1MzMyNDEsMjEp''@;'; put 'put ''LHZlPWFlKHZlLEFlLGtlLFNlLGZlWzEyXSwxNzAwNDg1NTcxLDYpLFNlPWFlKFNlLHZlLEFlLGtlLGZlWzNdLDIzOTk5ODA2OTAsMTApLGtlPWFlKGtlLFNlLHZlLEFlLGZlWzEwXSw0MjkzOTE1NzczLDE1KSxBZT1hZShBZSxrZSxTZSx2ZSxmZVsxXSwyMjQwMDQ0NDk3LDIxKSx2ZT1hZSh2''@;'; put 'put ''ZSxBZSxrZSxTZSxmZVs4XSwxODczMzEzMzU5LDYpLFNlPWFlKFNlLHZlLEFlLGtlLGZlWzE1XSw0MjY0MzU1NTUyLDEwKSxrZT1hZShrZSxTZSx2ZSxBZSxmZVs2XSwyNzM0NzY4OTE2LDE1KSxBZT1hZShBZSxrZSxTZSx2ZSxmZVsxM10sMTMwOTE1MTY0OSwyMSksdmU9YWUodmUsQWUsa2Us''@;'; put 'put ''U2UsZmVbNF0sNDE0OTQ0NDIyNiw2KSxTZT1hZShTZSx2ZSxBZSxrZSxmZVsxMV0sMzE3NDc1NjkxNywxMCksa2U9YWUoa2UsU2UsdmUsQWUsZmVbMl0sNzE4Nzg3MjU5LDE1KSxBZT1hZShBZSxrZSxTZSx2ZSxmZVs5XSwzOTUxNDgxNzQ1LDIxKSx0aGlzLl9hPXRoaXMuX2ErdmV8MCx0aGlz''@;'; put 'put ''Ll9iPXRoaXMuX2IrQWV8MCx0aGlzLl9jPXRoaXMuX2Mra2V8MCx0aGlzLl9kPXRoaXMuX2QrU2V8MH0sTi5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9ja09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZp''@;'; put 'put ''bGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3Jp''@;'; put 'put ''dGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBmZT1ZLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gZmUud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksZmUud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCksZmUud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksZmUud3Jp''@;'; put 'put ''dGVJbnQzMkxFKHRoaXMuX2QsMTIpLGZlfSxVLmV4cG9ydHM9Tn0sMzA0NzooVSxRLFopPT57dmFyIGllPVooNjI0MCksbGU9Wig5OTMxKTtmdW5jdGlvbiBZKFcpe3RoaXMucmFuZD1XfHxuZXcgbGUuUmFuZH1VLmV4cG9ydHM9WSxZLmNyZWF0ZT1mdW5jdGlvbihXKXtyZXR1cm4gbmV3IFko''@;'; put 'put ''Vyl9LFkucHJvdG90eXBlLl9yYW5kYmVsb3c9ZnVuY3Rpb24oVyl7dmFyIE49Vy5iaXRMZW5ndGgoKSxlZT1NYXRoLmNlaWwoTi84KTtkb3t2YXIgcT1uZXcgaWUodGhpcy5yYW5kLmdlbmVyYXRlKGVlKSl9d2hpbGUocS5jbXAoVyk+PTApO3JldHVybiBxfSxZLnByb3RvdHlwZS5fcmFuZHJh''@;'; put 'put ''bmdlPWZ1bmN0aW9uKFcsTil7dmFyIGVlPU4uc3ViKFcpO3JldHVybiBXLmFkZCh0aGlzLl9yYW5kYmVsb3coZWUpKX0sWS5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihXLE4sZWUpe3ZhciBxPVcuYml0TGVuZ3RoKCksSj1pZS5tb250KFcpLHNlPW5ldyBpZSgxKS50b1JlZChKKTtOfHwoTj1N''@;'; put 'put ''YXRoLm1heCgxLHEvNDh8MCkpO2Zvcih2YXIgYWU9Vy5zdWJuKDEpLGZlPTA7IWFlLnRlc3RuKGZlKTtmZSsrKTtmb3IodmFyIGRlPVcuc2hybihmZSksdmU9YWUudG9SZWQoSik7Tj4wO04tLSl7dmFyIEFlPXRoaXMuX3JhbmRyYW5nZShuZXcgaWUoMiksYWUpO2VlJiZlZShBZSk7dmFyIGtl''@;'; put 'put ''PUFlLnRvUmVkKEopLnJlZFBvdyhkZSk7aWYoMCE9PWtlLmNtcChzZSkmJjAhPT1rZS5jbXAodmUpKXtmb3IodmFyIFNlPTE7U2U8ZmU7U2UrKyl7aWYoMD09PShrZT1rZS5yZWRTcXIoKSkuY21wKHNlKSlyZXR1cm4hMTtpZigwPT09a2UuY21wKHZlKSlicmVha31pZihTZT09PWZlKXJldHVy''@;'; put 'put ''biExfX1yZXR1cm4hMH0sWS5wcm90b3R5cGUuZ2V0RGl2aXNvcj1mdW5jdGlvbihXLE4pe3ZhciBlZT1XLmJpdExlbmd0aCgpLHE9aWUubW9udChXKSxKPW5ldyBpZSgxKS50b1JlZChxKTtOfHwoTj1NYXRoLm1heCgxLGVlLzQ4fDApKTtmb3IodmFyIHNlPVcuc3VibigxKSxhZT0wOyFzZS50''@;'; put 'put ''ZXN0bihhZSk7YWUrKyk7Zm9yKHZhciBmZT1XLnNocm4oYWUpLGRlPXNlLnRvUmVkKHEpO04+MDtOLS0pe3ZhciB2ZT10aGlzLl9yYW5kcmFuZ2UobmV3IGllKDIpLHNlKSxBZT1XLmdjZCh2ZSk7aWYoMCE9PUFlLmNtcG4oMSkpcmV0dXJuIEFlO3ZhciBrZT12ZS50b1JlZChxKS5yZWRQb3co''@;'; put 'put ''ZmUpO2lmKDAhPT1rZS5jbXAoSikmJjAhPT1rZS5jbXAoZGUpKXtmb3IodmFyIFNlPTE7U2U8YWU7U2UrKyl7aWYoMD09PShrZT1rZS5yZWRTcXIoKSkuY21wKEopKXJldHVybiBrZS5mcm9tUmVkKCkuc3VibigxKS5nY2QoVyk7aWYoMD09PWtlLmNtcChkZSkpYnJlYWt9aWYoU2U9PT1hZSly''@;'; put 'put ''ZXR1cm4oa2U9a2UucmVkU3FyKCkpLmZyb21SZWQoKS5zdWJuKDEpLmdjZChXKX19cmV0dXJuITF9fSw2MjQwOmZ1bmN0aW9uKFUsUSxaKXshZnVuY3Rpb24oaWUsbGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBZKHgsUCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKFB8fCJBc3NlcnRpb24gZmFp''@;'; put 'put ''bGVkIil9ZnVuY3Rpb24gVyh4LFApe3guc3VwZXJfPVA7dmFyIFY9ZnVuY3Rpb24oKXt9O1YucHJvdG90eXBlPVAucHJvdG90eXBlLHgucHJvdG90eXBlPW5ldyBWLHgucHJvdG90eXBlLmNvbnN0cnVjdG9yPXh9ZnVuY3Rpb24gTih4LFAsVil7aWYoTi5pc0JOKHgpKXJldHVybiB4O3RoaXMu''@;'; put 'put ''bmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT14JiYoImxlIiE9PVAmJiJiZSIhPT1QfHwoVj1QLFA9MTApLHRoaXMuX2luaXQoeHx8MCxQfHwxMCxWfHwiYmUiKSl9dmFyIGVlOyJvYmplY3QiPT10eXBlb2YgaWU/aWUuZXhwb3J0''@;'; put 'put ''cz1OOmxlLkJOPU4sTi5CTj1OLE4ud29yZFNpemU9MjY7dHJ5e2VlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6Wig2NjE5KS5CdWZmZXJ9Y2F0Y2goeCl7fWZ1bmN0aW9uIHEoeCxQKXt2YXIgVj14LmNoYXJDb2RlQXQo''@;'; put 'put ''UCk7cmV0dXJuIFY+PTY1JiZWPD03MD9WLTU1OlY+PTk3JiZWPD0xMDI/Vi04NzpWLTQ4JjE1fWZ1bmN0aW9uIEooeCxQLFYpe3ZhciBUPXEoeCxWKTtyZXR1cm4gVi0xPj1QJiYoVHw9cSh4LFYtMSk8PDQpLFR9ZnVuY3Rpb24gc2UoeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj1NYXRoLm1pbih4''@;'; put 'put ''Lmxlbmd0aCxWKSx5ZT1QO3llPEY7eWUrKyl7dmFyIENlPXguY2hhckNvZGVBdCh5ZSktNDg7Uyo9VCxTKz1DZT49NDk/Q2UtNDkrMTA6Q2U+PTE3P0NlLTE3KzEwOkNlfXJldHVybiBTfU4uaXNCTj1mdW5jdGlvbih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIE58fG51bGwhPT14JiYib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIHgmJnguY29uc3RydWN0b3Iud29yZFNpemU9PT1OLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHgud29yZHMpfSxOLm1heD1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKT4wP3g6UH0sTi5taW49ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk8MD94OlB9LE4ucHJv''@;'; put 'put ''dG90eXBlLl9pbml0PWZ1bmN0aW9uKHgsUCxWKXtpZigibnVtYmVyIj09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoeCxQLFYpO2lmKCJvYmplY3QiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHgsUCxWKTsiaGV4Ij09PVAmJihQPTE2KSxZKFA9PT0oMHxQKSYm''@;'; put 'put ''UD49MiYmUDw9MzYpO3ZhciBUPTA7Ii0iPT09KHg9eC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihUKyssdGhpcy5uZWdhdGl2ZT0xKSxUPHgubGVuZ3RoJiYoMTY9PT1QP3RoaXMuX3BhcnNlSGV4KHgsVCxWKToodGhpcy5fcGFyc2VCYXNlKHgsUCxUKSwibGUiPT09ViYm''@;'; put 'put ''dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFAsVikpKX0sTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oeCxQLFYpe3g8MCYmKHRoaXMubmVnYXRpdmU9MSx4PS14KSx4PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4XSx0aGlzLmxlbmd0aD0xKTp4PDQ1MDM1''@;'; put 'put ''OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KFkoeDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PVYm''@;'; put 'put ''JnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpfSxOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHgsUCxWKXtpZihZKCJudW1iZXIiPT10eXBlb2YgeC5sZW5ndGgpLHgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhp''@;'; put 'put ''cy5sZW5ndGg9TWF0aC5jZWlsKHgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRix5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgubGVuZ3RoLTEsUz0wO1Q+PTA7VC09''@;'; put 'put ''Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVC0xXTw8OHx4W1QtMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtlbHNlIGlmKCJsZSI9PT1WKWZvcihUPTAsUz0wO1Q8eC5sZW5ndGg7VCs9''@;'; put 'put ''Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVCsxXTw8OHx4W1QrMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VIZXg9''@;'; put 'put ''ZnVuY3Rpb24oeCxQLFYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoeC5sZW5ndGgtUCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGPTAseWU9MDtpZigiYmUiPT09Vilmb3Io''@;'; put 'put ''VD14Lmxlbmd0aC0xO1Q+PVA7VC09MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O2Vsc2UgZm9yKFQ9KHgubGVuZ3RoLVApJTI9PTA/UCsxOlA7VDx4Lmxlbmd0aDtUKz0yKVM9Sih4''@;'; put 'put ''LFAsVCk8PEYsdGhpcy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYtPTE4LHRoaXMud29yZHNbeWUrPTFdfD1TPj4+MjYpOkYrPTg7dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHgsUCxWKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zv''@;'; put 'put ''cih2YXIgVD0wLFM9MTtTPD02NzEwODg2MztTKj1QKVQrKztULS0sUz1TL1B8MDtmb3IodmFyIEY9eC5sZW5ndGgtVix5ZT1GJVQsQ2U9TWF0aC5taW4oRixGLXllKStWLERlPTAsUGU9VjtQZTxDZTtQZSs9VClEZT1zZSh4LFBlLFBlK1QsUCksdGhpcy5pbXVsbihTKSx0aGlzLndvcmRzWzBd''@;'; put 'put ''K0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKTtpZigwIT09eWUpe3ZhciBRZT0xO2ZvcihEZT1zZSh4LFBlLHgubGVuZ3RoLFApLFBlPTA7UGU8eWU7UGUrKylRZSo9UDt0aGlzLmltdWxuKFFlKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29y''@;'; put 'put ''ZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKX10aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oeCl7eC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXgud29yZHNbUF09dGhpcy53b3Jkc1tQXTt4Lmxlbmd0aD10''@;'; put 'put ''aGlzLmxlbmd0aCx4Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUseC5yZWQ9dGhpcy5yZWR9LE4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHRoaXMuY29weSh4KSx4fSxOLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5s''@;'; put 'put ''ZW5ndGg8eDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWdu''@;'; put 'put ''KCl9LE4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxOLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJO''@;'; put 'put ''OiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBhZT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxmZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUs''@;'; put 'put ''NSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxkZT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2''@;'; put 'put ''LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2''@;'; put 'put ''MTc2XTtmdW5jdGlvbiB2ZSh4LFAsVil7Vi5uZWdhdGl2ZT1QLm5lZ2F0aXZlXngubmVnYXRpdmU7dmFyIFQ9eC5sZW5ndGgrUC5sZW5ndGh8MDtWLmxlbmd0aD1ULFQ9VC0xfDA7dmFyIFM9MHx4LndvcmRzWzBdLEY9MHxQLndvcmRzWzBdLHllPVMqRixEZT15ZS82NzEwODg2NHwwO1Yud29y''@;'; put 'put ''ZHNbMF09NjcxMDg4NjMmeWU7Zm9yKHZhciBQZT0xO1BlPFQ7UGUrKyl7Zm9yKHZhciBRZT1EZT4+PjI2LCRlPTY3MTA4ODYzJkRlLGd0PU1hdGgubWluKFBlLFAubGVuZ3RoLTEpLHl0PU1hdGgubWF4KDAsUGUteC5sZW5ndGgrMSk7eXQ8PWd0O3l0KyspUWUrPSh5ZT0oUz0wfHgud29yZHNb''@;'; put 'put ''UGUteXR8MF0pKihGPTB8UC53b3Jkc1t5dF0pKyRlKS82NzEwODg2NHwwLCRlPTY3MTA4ODYzJnllO1Yud29yZHNbUGVdPTB8JGUsRGU9MHxRZX1yZXR1cm4gMCE9PURlP1Yud29yZHNbUGVdPTB8RGU6Vi5sZW5ndGgtLSxWLnN0cmlwKCl9Ti5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o''@;'; put 'put ''eCxQKXt2YXIgVjtpZihQPTB8UHx8MSwxNj09PSh4PXh8fDEwKXx8ImhleCI9PT14KXtWPSIiO2Zvcih2YXIgVD0wLFM9MCxGPTA7Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT10aGlzLndvcmRzW0ZdLENlPSgxNjc3NzIxNSYoeWU8PFR8UykpLnRvU3RyaW5nKDE2KTtWPTAhPShTPXllPj4+''@;'; put 'put ''MjQtVCYxNjc3NzIxNSl8fEYhPT10aGlzLmxlbmd0aC0xP2FlWzYtQ2UubGVuZ3RoXStDZStWOkNlK1YsKFQrPTIpPj0yNiYmKFQtPTI2LEYtLSl9Zm9yKDAhPT1TJiYoVj1TLnRvU3RyaW5nKDE2KStWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYm''@;'; put 'put ''KFY9Ii0iK1YpLFZ9aWYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNil7dmFyIERlPWZlW3hdLFBlPWRlW3hdO1Y9IiI7dmFyIFFlPXRoaXMuY2xvbmUoKTtmb3IoUWUubmVnYXRpdmU9MDshUWUuaXNaZXJvKCk7KXt2YXIgJGU9UWUubW9kbihQZSkudG9TdHJpbmcoeCk7Vj0oUWU9UWUuaWRpdm4o''@;'; put 'put ''UGUpKS5pc1plcm8oKT8kZStWOmFlW0RlLSRlLmxlbmd0aF0rJGUrVn1mb3IodGhpcy5pc1plcm8oKSYmKFY9IjAiK1YpO1YubGVuZ3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1ZKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5k''@;'; put 'put ''IDM2Iil9LE4ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP3grPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT94Kz00NTAzNTk5NjI3MzcwNDk2KzY3''@;'; put 'put ''MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmWSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LXg6eH0sTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYp''@;'; put 'put ''fSxOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbih4LFApe3JldHVybiBZKHZvaWQgMCE9PWVlKSx0aGlzLnRvQXJyYXlMaWtlKGVlLHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx4LFApfSxOLnByb3RvdHlw''@;'; put 'put ''ZS50b0FycmF5TGlrZT1mdW5jdGlvbih4LFAsVil7dmFyIFQ9dGhpcy5ieXRlTGVuZ3RoKCksUz1WfHxNYXRoLm1heCgxLFQpO1koVDw9UywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLFkoUz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0''@;'; put 'put ''cmlwKCk7dmFyIEYseWUsQ2U9ImxlIj09PVAsRGU9bmV3IHgoUyksUGU9dGhpcy5jbG9uZSgpO2lmKENlKXtmb3IoeWU9MDshUGUuaXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJuKDgpLERlW3llXT1GO2Zvcig7eWU8Uzt5ZSsrKURlW3llXT0wfWVsc2V7Zm9yKHllPTA7''@;'; put 'put ''eWU8Uy1UO3llKyspRGVbeWVdPTA7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVtTLXllLTFdPUZ9cmV0dXJuIERlfSxOLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oeCl7cmV0dXJuIDMyLU1hdGguY2x6''@;'; put 'put ''MzIoeCl9OmZ1bmN0aW9uKHgpe3ZhciBQPXgsVj0wO3JldHVybiBQPj00MDk2JiYoVis9MTMsUD4+Pj0xMyksUD49NjQmJihWKz03LFA+Pj49NyksUD49OCYmKFYrPTQsUD4+Pj00KSxQPj0yJiYoVis9MixQPj4+PTIpLFYrUH0sTi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHgpe2lm''@;'; put 'put ''KDA9PT14KXJldHVybiAyNjt2YXIgUD14LFY9MDtyZXR1cm4gMD09KDgxOTEmUCkmJihWKz0xMyxQPj4+PTEzKSwwPT0oMTI3JlApJiYoVis9NyxQPj4+PTcpLDA9PSgxNSZQKSYmKFYrPTQsUD4+Pj00KSwwPT0oMyZQKSYmKFYrPTIsUD4+Pj0yKSwwPT0oMSZQKSYmVisrLFZ9LE4ucHJvdG90''@;'; put 'put ''eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBQPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK1B9LE4ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3Io''@;'; put 'put ''dmFyIHg9MCxQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbUF0pO2lmKHgrPVYsMjYhPT1WKWJyZWFrfXJldHVybiB4fSxOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgp''@;'; put 'put ''LzgpfSxOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oeCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy50ZXN0bih4LTEpP3RoaXMu''@;'; put 'put ''bm90bih4KS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sTi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LE4ucHJvdG90eXBlLmluZWc9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LE4ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgUD0wO1A8eC5sZW5ndGg7''@;'; put 'put ''UCsrKXRoaXMud29yZHNbUF09dGhpcy53b3Jkc1tQXXx4LndvcmRzW1BdO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdW9yKHgpfSxOLnByb3RvdHlwZS5vcj1mdW5j''@;'; put 'put ''dGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcih4KTp4LmNsb25lKCkuaW9yKHRoaXMpfSxOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKHgpOnguY2xvbmUoKS5p''@;'; put 'put ''dW9yKHRoaXMpfSxOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbih4KXt2YXIgUDtQPXRoaXMubGVuZ3RoPngubGVuZ3RoP3g6dGhpcztmb3IodmFyIFY9MDtWPFAubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXRoaXMud29yZHNbVl0meC53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9UC5s''@;'; put 'put ''ZW5ndGgsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1YW5kKHgpfSxOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMu''@;'; put 'put ''Y2xvbmUoKS5pYW5kKHgpOnguY2xvbmUoKS5pYW5kKHRoaXMpfSxOLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoeCk6eC5jbG9uZSgpLml1YW5kKHRoaXMpfSxOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlv''@;'; put 'put ''bih4KXt2YXIgUCxWO3RoaXMubGVuZ3RoPngubGVuZ3RoPyhQPXRoaXMsVj14KTooUD14LFY9dGhpcyk7Zm9yKHZhciBUPTA7VDxWLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdXlYud29yZHNbVF07aWYodGhpcyE9PVApZm9yKDtUPFAubGVuZ3RoO1QrKyl0aGlzLndvcmRz''@;'; put 'put ''W1RdPVAud29yZHNbVF07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih4KX0sTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9u''@;'; put 'put ''KHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih4KTp4LmNsb25lKCkuaXhvcih0aGlzKX0sTi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHgpOnguY2xvbmUoKS5p''@;'; put 'put ''dXhvcih0aGlzKX0sTi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPTB8TWF0aC5jZWlsKHgvMjYpLFY9eCUyNjt0aGlzLl9leHBhbmQoUCksVj4wJiZQLS07Zm9yKHZhciBUPTA7VDxQO1QrKyl0aGlzLndvcmRzW1RdPTY3MTA4''@;'; put 'put ''ODYzJn50aGlzLndvcmRzW1RdO3JldHVybiBWPjAmJih0aGlzLndvcmRzW1RdPX50aGlzLndvcmRzW1RdJjY3MTA4ODYzPj4yNi1WKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih4KX0sTi5wcm90b3R5cGUuc2V0''@;'; put 'put ''bj1mdW5jdGlvbih4LFApe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgVj14LzI2fDAsVD14JTI2O3JldHVybiB0aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdPVA/dGhpcy53b3Jkc1tWXXwxPDxUOnRoaXMud29yZHNbVl0mfigxPDxUKSx0aGlzLnN0cmlwKCl9LE4ucHJv''@;'; put 'put ''dG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCl7dmFyIFAsVixUO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYm''@;'; put 'put ''MCE9PXgubmVnYXRpdmUpcmV0dXJuIHgubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgUz0wLEY9MDtGPFQubGVuZ3RoO0YrKyl0aGlzLndvcmRz''@;'; put 'put ''W0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pKygwfFQud29yZHNbRl0pK1MpLFM9UD4+PjI2O2Zvcig7MCE9PVMmJkY8Vi5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrUyksUz1QPj4+MjY7aWYodGhpcy5sZW5ndGg9Vi5sZW5ndGgsMCE9''@;'; put 'put ''PVMpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Uyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoViE9PXRoaXMpZm9yKDtGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPVYud29yZHNbRl07cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4KXt2YXIgUDtyZXR1cm4gMCE9PXgu''@;'; put 'put ''bmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyh4Lm5lZ2F0aXZlPTAsUD10aGlzLnN1Yih4KSx4Lm5lZ2F0aXZlXj0xLFApOjA9PT14Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLFA9eC5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLFApOnRoaXMubGVu''@;'; put 'put ''Z3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHgpOnguY2xvbmUoKS5pYWRkKHRoaXMpfSxOLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgpe2lmKDAhPT14Lm5lZ2F0aXZlKXt4Lm5lZ2F0aXZlPTA7dmFyIFA9dGhpcy5pYWRkKHgpO3JldHVybiB4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNp''@;'; put 'put ''Z24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgVixULFM9dGhpcy5jbXAoeCk7aWYoMD09PVMpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRo''@;'; put 'put ''aXMud29yZHNbMF09MCx0aGlzO1M+MD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgRj0wLHllPTA7eWU8VC5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKS0oMHxULndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7Zm9yKDswIT09RiYm''@;'; put 'put ''eWU8Vi5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtpZigwPT09RiYmeWU8Vi5sZW5ndGgmJlYhPT10aGlzKWZvcig7eWU8Vi5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT1WLndvcmRzW3llXTtyZXR1cm4gdGhpcy5s''@;'; put 'put ''ZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseWUpLFYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoeCl9O3ZhciBBZT1mdW5jdGlvbih4LFAsVil7dmFyIFQsUyxGLHll''@;'; put 'put ''PXgud29yZHMsQ2U9UC53b3JkcyxEZT1WLndvcmRzLFBlPTAsUWU9MHx5ZVswXSwkZT04MTkxJlFlLGd0PVFlPj4+MTMseXQ9MHx5ZVsxXSxwdD04MTkxJnl0LG10PXl0Pj4+MTMsdnQ9MHx5ZVsyXSxmdD04MTkxJnZ0LEZ0PXZ0Pj4+MTMsb249MHx5ZVszXSxfdD04MTkxJm9uLG50PW9uPj4+''@;'; put 'put ''MTMscWU9MHx5ZVs0XSxvdD04MTkxJnFlLFJ0PXFlPj4+MTMsQ3Q9MHx5ZVs1XSxjdD04MTkxJkN0LE50PUN0Pj4+MTMsemU9MHx5ZVs2XSxZZT04MTkxJnplLEF0PXplPj4+MTMsanQ9MHx5ZVs3XSxKdD04MTkxJmp0LG1uPWp0Pj4+MTMscG49MHx5ZVs4XSxibj04MTkxJnBuLGxuPXBuPj4+''@;'; put 'put ''MTMsTm49MHx5ZVs5XSxrbj04MTkxJk5uLGVyPU5uPj4+MTMsdXI9MHxDZVswXSxYbj04MTkxJnVyLEZyPXVyPj4+MTMseHI9MHxDZVsxXSxlbj04MTkxJnhyLGRyPXhyPj4+MTMsbnI9MHxDZVsyXSx3bj04MTkxJm5yLCRuPW5yPj4+MTMsWXQ9MHxDZVszXSxnbj04MTkxJll0LEtuPVl0Pj4+''@;'; put 'put ''MTMsVnQ9MHxDZVs0XSxzbj04MTkxJlZ0LFVuPVZ0Pj4+MTMsX249MHxDZVs1XSx0bj04MTkxJl9uLEduPV9uPj4+MTMsVHI9MHxDZVs2XSxQbj04MTkxJlRyLFNyPVRyPj4+MTMsdm49MHxDZVs3XSx1bj04MTkxJnZuLGNuPXZuPj4+MTMsU249MHxDZVs4XSxHdD04MTkxJlNuLEVuPVNuPj4+''@;'; put 'put ''MTMsam49MHxDZVs5XSxxdD04MTkxJmpuLExuPWpuPj4+MTM7Vi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5sZW5ndGg9MTk7dmFyIEpuPShQZSsoVD1NYXRoLmltdWwoJGUsWG4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKCRlLEZyKSkrTWF0aC5pbXVsKGd0LFhuKXww''@;'; put 'put ''KSk8PDEzKXwwO1BlPSgoRj1NYXRoLmltdWwoZ3QsRnIpKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwocHQsWG4pLFM9KFM9TWF0aC5pbXVsKHB0LEZyKSkrTWF0aC5pbXVsKG10LFhuKXwwLEY9TWF0aC5pbXVsKG10LEZyKTt2YXIgb3I9KFBlKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKCRlLGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsZHIpfDApK01hdGguaW11bChndCxlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsZHIpfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11''@;'; put 'put ''bChmdCxYbiksUz0oUz1NYXRoLmltdWwoZnQsRnIpKStNYXRoLmltdWwoRnQsWG4pfDAsRj1NYXRoLmltdWwoRnQsRnIpLFQ9VCtNYXRoLmltdWwocHQsZW4pfDAsUz0oUz1TK01hdGguaW11bChwdCxkcil8MCkrTWF0aC5pbXVsKG10LGVuKXwwLEY9RitNYXRoLmltdWwobXQsZHIpfDA7dmFy''@;'; put 'put ''IGdyPShQZSsoVD1UK01hdGguaW11bCgkZSx3bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLCRuKXwwKStNYXRoLmltdWwoZ3Qsd24pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LCRuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMs''@;'; put 'put ''VD1NYXRoLmltdWwoX3QsWG4pLFM9KFM9TWF0aC5pbXVsKF90LEZyKSkrTWF0aC5pbXVsKG50LFhuKXwwLEY9TWF0aC5pbXVsKG50LEZyKSxUPVQrTWF0aC5pbXVsKGZ0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsZHIpfDApK01hdGguaW11bChGdCxlbil8MCxGPUYrTWF0aC5pbXVsKEZ0''@;'; put 'put ''LGRyKXwwLFQ9VCtNYXRoLmltdWwocHQsd24pfDAsUz0oUz1TK01hdGguaW11bChwdCwkbil8MCkrTWF0aC5pbXVsKG10LHduKXwwLEY9RitNYXRoLmltdWwobXQsJG4pfDA7dmFyIEpyPShQZSsoVD1UK01hdGguaW11bCgkZSxnbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRl''@;'; put 'put ''LEtuKXwwKStNYXRoLmltdWwoZ3QsZ24pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEtuKXwwKSsoUz4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMsVD1NYXRoLmltdWwob3QsWG4pLFM9KFM9TWF0aC5pbXVsKG90LEZyKSkrTWF0aC5pbXVsKFJ0LFhuKXwwLEY9''@;'; put 'put ''TWF0aC5pbXVsKFJ0LEZyKSxUPVQrTWF0aC5pbXVsKF90LGVuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsZHIpfDApK01hdGguaW11bChudCxlbil8MCxGPUYrTWF0aC5pbXVsKG50LGRyKXwwLFQ9VCtNYXRoLmltdWwoZnQsd24pfDAsUz0oUz1TK01hdGguaW11bChmdCwkbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEZ0LHduKXwwLEY9RitNYXRoLmltdWwoRnQsJG4pfDAsVD1UK01hdGguaW11bChwdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKHB0LEtuKXwwKStNYXRoLmltdWwobXQsZ24pfDAsRj1GK01hdGguaW11bChtdCxLbil8MDt2YXIgVnI9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHNuKXwwKXww''@;'; put 'put ''KSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsVW4pfDApK01hdGguaW11bChndCxzbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsVW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChjdCxYbiksUz0oUz1NYXRoLmltdWwo''@;'; put 'put ''Y3QsRnIpKStNYXRoLmltdWwoTnQsWG4pfDAsRj1NYXRoLmltdWwoTnQsRnIpLFQ9VCtNYXRoLmltdWwob3QsZW4pfDAsUz0oUz1TK01hdGguaW11bChvdCxkcil8MCkrTWF0aC5pbXVsKFJ0LGVuKXwwLEY9RitNYXRoLmltdWwoUnQsZHIpfDAsVD1UK01hdGguaW11bChfdCx3bil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKF90LCRuKXwwKStNYXRoLmltdWwobnQsd24pfDAsRj1GK01hdGguaW11bChudCwkbil8MCxUPVQrTWF0aC5pbXVsKGZ0LGduKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsS24pfDApK01hdGguaW11bChGdCxnbil8MCxGPUYrTWF0aC5pbXVsKEZ0LEtuKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwocHQsc24pfDAsUz0oUz1TK01hdGguaW11bChwdCxVbil8MCkrTWF0aC5pbXVsKG10LHNuKXwwLEY9RitNYXRoLmltdWwobXQsVW4pfDA7dmFyIHRpPShQZSsoVD1UK01hdGguaW11bCgkZSx0bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEduKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoZ3QsdG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEduKXwwKSsoUz4+PjEzKXwwKSsodGk+Pj4yNil8MCx0aSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoWWUsWG4pLFM9KFM9TWF0aC5pbXVsKFllLEZyKSkrTWF0aC5pbXVsKEF0LFhuKXwwLEY9TWF0aC5pbXVsKEF0LEZy''@;'; put 'put ''KSxUPVQrTWF0aC5pbXVsKGN0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsZHIpfDApK01hdGguaW11bChOdCxlbil8MCxGPUYrTWF0aC5pbXVsKE50LGRyKXwwLFQ9VCtNYXRoLmltdWwob3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChvdCwkbil8MCkrTWF0aC5pbXVsKFJ0LHduKXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoUnQsJG4pfDAsVD1UK01hdGguaW11bChfdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LEtuKXwwKStNYXRoLmltdWwobnQsZ24pfDAsRj1GK01hdGguaW11bChudCxLbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsVW4pfDApK01h''@;'; put 'put ''dGguaW11bChGdCxzbil8MCxGPUYrTWF0aC5pbXVsKEZ0LFVuKXwwLFQ9VCtNYXRoLmltdWwocHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChwdCxHbil8MCkrTWF0aC5pbXVsKG10LHRuKXwwLEY9RitNYXRoLmltdWwobXQsR24pfDA7dmFyIE9yPShQZSsoVD1UK01hdGguaW11bCgkZSxQbil8''@;'; put 'put ''MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLFNyKXwwKStNYXRoLmltdWwoZ3QsUG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LFNyKXwwKSsoUz4+PjEzKXwwKSsoT3I+Pj4yNil8MCxPciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoSnQsWG4pLFM9KFM9TWF0aC5p''@;'; put 'put ''bXVsKEp0LEZyKSkrTWF0aC5pbXVsKG1uLFhuKXwwLEY9TWF0aC5pbXVsKG1uLEZyKSxUPVQrTWF0aC5pbXVsKFllLGVuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsZHIpfDApK01hdGguaW11bChBdCxlbil8MCxGPUYrTWF0aC5pbXVsKEF0LGRyKXwwLFQ9VCtNYXRoLmltdWwoY3Qsd24pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChjdCwkbil8MCkrTWF0aC5pbXVsKE50LHduKXwwLEY9RitNYXRoLmltdWwoTnQsJG4pfDAsVD1UK01hdGguaW11bChvdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKG90LEtuKXwwKStNYXRoLmltdWwoUnQsZ24pfDAsRj1GK01hdGguaW11bChSdCxLbil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKF90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsVW4pfDApK01hdGguaW11bChudCxzbil8MCxGPUYrTWF0aC5pbXVsKG50LFVuKXwwLFQ9VCtNYXRoLmltdWwoZnQsdG4pfDAsUz0oUz1TK01hdGguaW11bChmdCxHbil8MCkrTWF0aC5pbXVsKEZ0LHRuKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoRnQsR24pfDAsVD1UK01hdGguaW11bChwdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKHB0LFNyKXwwKStNYXRoLmltdWwobXQsUG4pfDAsRj1GK01hdGguaW11bChtdCxTcil8MDt2YXIgbGk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoJGUsY24pfDApK01hdGguaW11bChndCx1bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsY24pfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bChibixYbiksUz0oUz1NYXRoLmltdWwoYm4sRnIpKStNYXRoLmltdWwobG4s''@;'; put 'put ''WG4pfDAsRj1NYXRoLmltdWwobG4sRnIpLFQ9VCtNYXRoLmltdWwoSnQsZW4pfDAsUz0oUz1TK01hdGguaW11bChKdCxkcil8MCkrTWF0aC5pbXVsKG1uLGVuKXwwLEY9RitNYXRoLmltdWwobW4sZHIpfDAsVD1UK01hdGguaW11bChZZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKFllLCRuKXww''@;'; put 'put ''KStNYXRoLmltdWwoQXQsd24pfDAsRj1GK01hdGguaW11bChBdCwkbil8MCxUPVQrTWF0aC5pbXVsKGN0LGduKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsS24pfDApK01hdGguaW11bChOdCxnbil8MCxGPUYrTWF0aC5pbXVsKE50LEtuKXwwLFQ9VCtNYXRoLmltdWwob3Qsc24pfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChvdCxVbil8MCkrTWF0aC5pbXVsKFJ0LHNuKXwwLEY9RitNYXRoLmltdWwoUnQsVW4pfDAsVD1UK01hdGguaW11bChfdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LEduKXwwKStNYXRoLmltdWwobnQsdG4pfDAsRj1GK01hdGguaW11bChudCxHbil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKGZ0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsU3IpfDApK01hdGguaW11bChGdCxQbil8MCxGPUYrTWF0aC5pbXVsKEZ0LFNyKXwwLFQ9VCtNYXRoLmltdWwocHQsdW4pfDAsUz0oUz1TK01hdGguaW11bChwdCxjbil8MCkrTWF0aC5pbXVsKG10LHVuKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''bXQsY24pfDA7dmFyIElpPShQZSsoVD1UK01hdGguaW11bCgkZSxHdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEVuKXwwKStNYXRoLmltdWwoZ3QsR3QpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEVuKXwwKSsoUz4+PjEzKXwwKSsoSWk+Pj4yNil8MCxJ''@;'; put 'put ''aSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sWG4pLFM9KFM9TWF0aC5pbXVsKGtuLEZyKSkrTWF0aC5pbXVsKGVyLFhuKXwwLEY9TWF0aC5pbXVsKGVyLEZyKSxUPVQrTWF0aC5pbXVsKGJuLGVuKXwwLFM9KFM9UytNYXRoLmltdWwoYm4sZHIpfDApK01hdGguaW11bChsbixlbil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKGxuLGRyKXwwLFQ9VCtNYXRoLmltdWwoSnQsd24pfDAsUz0oUz1TK01hdGguaW11bChKdCwkbil8MCkrTWF0aC5pbXVsKG1uLHduKXwwLEY9RitNYXRoLmltdWwobW4sJG4pfDAsVD1UK01hdGguaW11bChZZSxnbil8MCxTPShTPVMrTWF0aC5pbXVsKFllLEtuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoQXQsZ24pfDAsRj1GK01hdGguaW11bChBdCxLbil8MCxUPVQrTWF0aC5pbXVsKGN0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsVW4pfDApK01hdGguaW11bChOdCxzbil8MCxGPUYrTWF0aC5pbXVsKE50LFVuKXwwLFQ9VCtNYXRoLmltdWwob3QsdG4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChvdCxHbil8MCkrTWF0aC5pbXVsKFJ0LHRuKXwwLEY9RitNYXRoLmltdWwoUnQsR24pfDAsVD1UK01hdGguaW11bChfdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LFNyKXwwKStNYXRoLmltdWwobnQsUG4pfDAsRj1GK01hdGguaW11bChudCxTcil8MCxUPVQrTWF0aC5pbXVsKGZ0''@;'; put 'put ''LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsY24pfDApK01hdGguaW11bChGdCx1bil8MCxGPUYrTWF0aC5pbXVsKEZ0LGNuKXwwLFQ9VCtNYXRoLmltdWwocHQsR3QpfDAsUz0oUz1TK01hdGguaW11bChwdCxFbil8MCkrTWF0aC5pbXVsKG10LEd0KXwwLEY9RitNYXRoLmltdWwobXQsRW4p''@;'; put 'put ''fDA7dmFyIHIwPShQZSsoVD1UK01hdGguaW11bCgkZSxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLExuKXwwKStNYXRoLmltdWwoZ3QscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LExuKXwwKSsoUz4+PjEzKXwwKSsocjA+Pj4yNil8MCxyMCY9Njcx''@;'; put 'put ''MDg4NjMsVD1NYXRoLmltdWwoa24sZW4pLFM9KFM9TWF0aC5pbXVsKGtuLGRyKSkrTWF0aC5pbXVsKGVyLGVuKXwwLEY9TWF0aC5pbXVsKGVyLGRyKSxUPVQrTWF0aC5pbXVsKGJuLHduKXwwLFM9KFM9UytNYXRoLmltdWwoYm4sJG4pfDApK01hdGguaW11bChsbix3bil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKGxuLCRuKXwwLFQ9VCtNYXRoLmltdWwoSnQsZ24pfDAsUz0oUz1TK01hdGguaW11bChKdCxLbil8MCkrTWF0aC5pbXVsKG1uLGduKXwwLEY9RitNYXRoLmltdWwobW4sS24pfDAsVD1UK01hdGguaW11bChZZSxzbil8MCxTPShTPVMrTWF0aC5pbXVsKFllLFVuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''QXQsc24pfDAsRj1GK01hdGguaW11bChBdCxVbil8MCxUPVQrTWF0aC5pbXVsKGN0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsR24pfDApK01hdGguaW11bChOdCx0bil8MCxGPUYrTWF0aC5pbXVsKE50LEduKXwwLFQ9VCtNYXRoLmltdWwob3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChv''@;'; put 'put ''dCxTcil8MCkrTWF0aC5pbXVsKFJ0LFBuKXwwLEY9RitNYXRoLmltdWwoUnQsU3IpfDAsVD1UK01hdGguaW11bChfdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGNuKXwwKStNYXRoLmltdWwobnQsdW4pfDAsRj1GK01hdGguaW11bChudCxjbil8MCxUPVQrTWF0aC5pbXVsKGZ0LEd0KXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwoZnQsRW4pfDApK01hdGguaW11bChGdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEZ0LEVuKXwwO3ZhciBlMD0oUGUrKFQ9VCtNYXRoLmltdWwocHQscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChwdCxMbil8MCkrTWF0aC5pbXVsKG10LHF0KXwwKSk8''@;'; put 'put ''PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChtdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGUwPj4+MjYpfDAsZTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHduKSxTPShTPU1hdGguaW11bChrbiwkbikpK01hdGguaW11bChlcix3bil8MCxGPU1hdGguaW11bChlciwkbiksVD1UK01hdGguaW11''@;'; put 'put ''bChibixnbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEtuKXwwKStNYXRoLmltdWwobG4sZ24pfDAsRj1GK01hdGguaW11bChsbixLbil8MCxUPVQrTWF0aC5pbXVsKEp0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsVW4pfDApK01hdGguaW11bChtbixzbil8MCxGPUYrTWF0aC5pbXVsKG1u''@;'; put 'put ''LFVuKXwwLFQ9VCtNYXRoLmltdWwoWWUsdG4pfDAsUz0oUz1TK01hdGguaW11bChZZSxHbil8MCkrTWF0aC5pbXVsKEF0LHRuKXwwLEY9RitNYXRoLmltdWwoQXQsR24pfDAsVD1UK01hdGguaW11bChjdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LFNyKXwwKStNYXRoLmltdWwoTnQsUG4p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChOdCxTcil8MCxUPVQrTWF0aC5pbXVsKG90LHVuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsY24pfDApK01hdGguaW11bChSdCx1bil8MCxGPUYrTWF0aC5pbXVsKFJ0LGNuKXwwLFQ9VCtNYXRoLmltdWwoX3QsR3QpfDAsUz0oUz1TK01hdGguaW11bChfdCxFbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKG50LEd0KXwwLEY9RitNYXRoLmltdWwobnQsRW4pfDA7dmFyIGQwPShQZSsoVD1UK01hdGguaW11bChmdCxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGZ0LExuKXwwKStNYXRoLmltdWwoRnQscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVs''@;'; put 'put ''KEZ0LExuKXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sZ24pLFM9KFM9TWF0aC5pbXVsKGtuLEtuKSkrTWF0aC5pbXVsKGVyLGduKXwwLEY9TWF0aC5pbXVsKGVyLEtuKSxUPVQrTWF0aC5pbXVsKGJuLHNuKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoYm4sVW4pfDApK01hdGguaW11bChsbixzbil8MCxGPUYrTWF0aC5pbXVsKGxuLFVuKXwwLFQ9VCtNYXRoLmltdWwoSnQsdG4pfDAsUz0oUz1TK01hdGguaW11bChKdCxHbil8MCkrTWF0aC5pbXVsKG1uLHRuKXwwLEY9RitNYXRoLmltdWwobW4sR24pfDAsVD1UK01hdGguaW11bChZZSxQ''@;'; put 'put ''bil8MCxTPShTPVMrTWF0aC5pbXVsKFllLFNyKXwwKStNYXRoLmltdWwoQXQsUG4pfDAsRj1GK01hdGguaW11bChBdCxTcil8MCxUPVQrTWF0aC5pbXVsKGN0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsY24pfDApK01hdGguaW11bChOdCx1bil8MCxGPUYrTWF0aC5pbXVsKE50LGNuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwob3QsR3QpfDAsUz0oUz1TK01hdGguaW11bChvdCxFbil8MCkrTWF0aC5pbXVsKFJ0LEd0KXwwLEY9RitNYXRoLmltdWwoUnQsRW4pfDA7dmFyIF8wPShQZSsoVD1UK01hdGguaW11bChfdCxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKF90LExuKXww''@;'; put 'put ''KStNYXRoLmltdWwobnQscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKG50LExuKXwwKSsoUz4+PjEzKXwwKSsoXzA+Pj4yNil8MCxfMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sc24pLFM9KFM9TWF0aC5pbXVsKGtuLFVuKSkrTWF0aC5pbXVsKGVyLHNuKXwwLEY9TWF0aC5p''@;'; put 'put ''bXVsKGVyLFVuKSxUPVQrTWF0aC5pbXVsKGJuLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoYm4sR24pfDApK01hdGguaW11bChsbix0bil8MCxGPUYrTWF0aC5pbXVsKGxuLEduKXwwLFQ9VCtNYXRoLmltdWwoSnQsUG4pfDAsUz0oUz1TK01hdGguaW11bChKdCxTcil8MCkrTWF0aC5pbXVsKG1u''@;'; put 'put ''LFBuKXwwLEY9RitNYXRoLmltdWwobW4sU3IpfDAsVD1UK01hdGguaW11bChZZSx1bil8MCxTPShTPVMrTWF0aC5pbXVsKFllLGNuKXwwKStNYXRoLmltdWwoQXQsdW4pfDAsRj1GK01hdGguaW11bChBdCxjbil8MCxUPVQrTWF0aC5pbXVsKGN0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoY3Qs''@;'; put 'put ''RW4pfDApK01hdGguaW11bChOdCxHdCl8MCxGPUYrTWF0aC5pbXVsKE50LEVuKXwwO3ZhciBVMD0oUGUrKFQ9VCtNYXRoLmltdWwob3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChvdCxMbil8MCkrTWF0aC5pbXVsKFJ0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGgu''@;'; put 'put ''aW11bChSdCxMbil8MCkrKFM+Pj4xMyl8MCkrKFUwPj4+MjYpfDAsVTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHRuKSxTPShTPU1hdGguaW11bChrbixHbikpK01hdGguaW11bChlcix0bil8MCxGPU1hdGguaW11bChlcixHbiksVD1UK01hdGguaW11bChibixQbil8MCxTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGJuLFNyKXwwKStNYXRoLmltdWwobG4sUG4pfDAsRj1GK01hdGguaW11bChsbixTcil8MCxUPVQrTWF0aC5pbXVsKEp0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsY24pfDApK01hdGguaW11bChtbix1bil8MCxGPUYrTWF0aC5pbXVsKG1uLGNuKXwwLFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''WWUsR3QpfDAsUz0oUz1TK01hdGguaW11bChZZSxFbil8MCkrTWF0aC5pbXVsKEF0LEd0KXwwLEY9RitNYXRoLmltdWwoQXQsRW4pfDA7dmFyIEJpPShQZSsoVD1UK01hdGguaW11bChjdCxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGN0LExuKXwwKStNYXRoLmltdWwoTnQs''@;'; put 'put ''cXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKE50LExuKXwwKSsoUz4+PjEzKXwwKSsoQmk+Pj4yNil8MCxCaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sUG4pLFM9KFM9TWF0aC5pbXVsKGtuLFNyKSkrTWF0aC5pbXVsKGVyLFBuKXwwLEY9TWF0aC5pbXVsKGVyLFNyKSxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKGJuLHVuKXwwLFM9KFM9UytNYXRoLmltdWwoYm4sY24pfDApK01hdGguaW11bChsbix1bil8MCxGPUYrTWF0aC5pbXVsKGxuLGNuKXwwLFQ9VCtNYXRoLmltdWwoSnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChKdCxFbil8MCkrTWF0aC5pbXVsKG1uLEd0KXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwobW4sRW4pfDA7dmFyIGowPShQZSsoVD1UK01hdGguaW11bChZZSxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFllLExuKXwwKStNYXRoLmltdWwoQXQscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEF0LExuKXwwKSsoUz4+PjEzKXwwKSsoajA+Pj4y''@;'; put 'put ''Nil8MCxqMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoa24sdW4pLFM9KFM9TWF0aC5pbXVsKGtuLGNuKSkrTWF0aC5pbXVsKGVyLHVuKXwwLEY9TWF0aC5pbXVsKGVyLGNuKSxUPVQrTWF0aC5pbXVsKGJuLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoYm4sRW4pfDApK01hdGguaW11bChsbixHdCl8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKGxuLEVuKXwwO3ZhciBBbz0oUGUrKFQ9VCtNYXRoLmltdWwoSnQscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChKdCxMbil8MCkrTWF0aC5pbXVsKG1uLHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChtbixMbil8MCkrKFM+Pj4xMyl8''@;'; put 'put ''MCkrKEFvPj4+MjYpfDAsQW8mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLEd0KSxTPShTPU1hdGguaW11bChrbixFbikpK01hdGguaW11bChlcixHdCl8MCxGPU1hdGguaW11bChlcixFbik7dmFyIEtvPShQZSsoVD1UK01hdGguaW11bChibixxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGJuLExuKXwwKStNYXRoLmltdWwobG4scXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGxuLExuKXwwKSsoUz4+PjEzKXwwKSsoS28+Pj4yNil8MCxLbyY9NjcxMDg4NjM7dmFyIGZhPShQZSsoVD1NYXRoLmltdWwoa24scXQpKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5p''@;'; put 'put ''bXVsKGtuLExuKSkrTWF0aC5pbXVsKGVyLHF0KXwwKSk8PDEzKXwwO3JldHVybiBQZT0oKEY9TWF0aC5pbXVsKGVyLExuKSkrKFM+Pj4xMyl8MCkrKGZhPj4+MjYpfDAsZmEmPTY3MTA4ODYzLERlWzBdPUpuLERlWzFdPW9yLERlWzJdPWdyLERlWzNdPUpyLERlWzRdPVZyLERlWzVdPXRpLERl''@;'; put 'put ''WzZdPU9yLERlWzddPWxpLERlWzhdPUlpLERlWzldPXIwLERlWzEwXT1lMCxEZVsxMV09ZDAsRGVbMTJdPV8wLERlWzEzXT1VMCxEZVsxNF09QmksRGVbMTVdPWowLERlWzE2XT1BbyxEZVsxN109S28sRGVbMThdPWZhLDAhPT1QZSYmKERlWzE5XT1QZSxWLmxlbmd0aCsrKSxWfTtmdW5jdGlv''@;'; put 'put ''biBrZSh4LFAsVil7cmV0dXJuKG5ldyBTZSkubXVscCh4LFAsVil9ZnVuY3Rpb24gU2UoeCxQKXt0aGlzLng9eCx0aGlzLnk9UH1NYXRoLmltdWx8fChBZT12ZSksTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeCxQKXt2YXIgVD10aGlzLmxlbmd0aCt4Lmxlbmd0aDtyZXR1cm4gMTA9PT10''@;'; put 'put ''aGlzLmxlbmd0aCYmMTA9PT14Lmxlbmd0aD9BZSh0aGlzLHgsUCk6VDw2Mz92ZSh0aGlzLHgsUCk6VDwxMDI0P2Z1bmN0aW9uKFMsRix5ZSl7eWUubmVnYXRpdmU9Ri5uZWdhdGl2ZV5TLm5lZ2F0aXZlLHllLmxlbmd0aD1TLmxlbmd0aCtGLmxlbmd0aDtmb3IodmFyIENlPTAsRGU9MCxQZT0w''@;'; put 'put ''O1BlPHllLmxlbmd0aC0xO1BlKyspe3ZhciBRZT1EZTtEZT0wO2Zvcih2YXIgJGU9NjcxMDg4NjMmQ2UsZ3Q9TWF0aC5taW4oUGUsRi5sZW5ndGgtMSkseXQ9TWF0aC5tYXgoMCxQZS1TLmxlbmd0aCsxKTt5dDw9Z3Q7eXQrKyl7dmFyIG10PSgwfFMud29yZHNbUGUteXRdKSooMHxGLndvcmRz''@;'; put 'put ''W3l0XSksdnQ9NjcxMDg4NjMmbXQ7JGU9NjcxMDg4NjMmKHZ0PXZ0KyRlfDApLERlKz0oUWU9KFFlPVFlKyhtdC82NzEwODg2NHwwKXwwKSsodnQ+Pj4yNil8MCk+Pj4yNixRZSY9NjcxMDg4NjN9eWUud29yZHNbUGVdPSRlLENlPVFlLFFlPURlfXJldHVybiAwIT09Q2U/eWUud29yZHNbUGVd''@;'; put 'put ''PUNlOnllLmxlbmd0aC0tLHllLnN0cmlwKCl9KHRoaXMseCxQKTprZSh0aGlzLHgsUCl9LFNlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj1OLnByb3RvdHlwZS5fY291bnRCaXRzKHgpLTEsVD0wO1Q8eDtUKyspUFtUXT10aGlzLnJldkJp''@;'; put 'put ''bihULFYseCk7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oeCxQLFYpe2lmKDA9PT14fHx4PT09Vi0xKXJldHVybiB4O2Zvcih2YXIgVD0wLFM9MDtTPFA7UysrKVR8PSgxJngpPDxQLVMtMSx4Pj49MTtyZXR1cm4gVH0sU2UucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rp''@;'; put 'put ''b24oeCxQLFYsVCxTLEYpe2Zvcih2YXIgeWU9MDt5ZTxGO3llKyspVFt5ZV09UFt4W3llXV0sU1t5ZV09Vlt4W3llXV19LFNlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe3RoaXMucGVybXV0ZShGLHgsUCxWLFQsUyk7Zm9yKHZhciB5ZT0xO3llPFM7eWU8PD0x''@;'; put 'put ''KWZvcih2YXIgQ2U9eWU8PDEsRGU9TWF0aC5jb3MoMipNYXRoLlBJL0NlKSxQZT1NYXRoLnNpbigyKk1hdGguUEkvQ2UpLFFlPTA7UWU8UztRZSs9Q2UpZm9yKHZhciAkZT1EZSxndD1QZSx5dD0wO3l0PHllO3l0Kyspe3ZhciBwdD1WW1FlK3l0XSxtdD1UW1FlK3l0XSx2dD1WW1FlK3l0K3ll''@;'; put 'put ''XSxmdD1UW1FlK3l0K3llXSxGdD0kZSp2dC1ndCpmdDtmdD0kZSpmdCtndCp2dCxWW1FlK3l0XT1wdCsodnQ9RnQpLFRbUWUreXRdPW10K2Z0LFZbUWUreXQreWVdPXB0LXZ0LFRbUWUreXQreWVdPW10LWZ0LHl0IT09Q2UmJihGdD1EZSokZS1QZSpndCxndD1EZSpndCtQZSokZSwkZT1GdCl9''@;'; put 'put ''fSxTZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oeCxQKXt2YXIgVj0xfE1hdGgubWF4KFAseCksVD0xJlYsUz0wO2ZvcihWPVYvMnwwO1Y7Vj4+Pj0xKVMrKztyZXR1cm4gMTw8UysxK1R9LFNlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oeCxQLFYpe2lmKCEoVjw9MSkp''@;'; put 'put ''Zm9yKHZhciBUPTA7VDxWLzI7VCsrKXt2YXIgUz14W1RdO3hbVF09eFtWLVQtMV0seFtWLVQtMV09UyxTPVBbVF0sUFtUXT0tUFtWLVQtMV0sUFtWLVQtMV09LVN9fSxTZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTAsVD0wO1Q8UC8yO1QrKyl7dmFy''@;'; put 'put ''IFM9ODE5MipNYXRoLnJvdW5kKHhbMipUKzFdL1ApK01hdGgucm91bmQoeFsyKlRdL1ApK1Y7eFtUXT02NzEwODg2MyZTLFY9Uzw2NzEwODg2ND8wOlMvNjcxMDg4NjR8MH1yZXR1cm4geH0sU2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj0w''@;'; put 'put ''O0Y8UDtGKyspVlsyKkZdPTgxOTEmKFMrPTB8eFtGXSksVlsyKkYrMV09ODE5MSYoUz4+Pj0xMyksUz4+Pj0xMztmb3IoRj0yKlA7RjxUOysrRilWW0ZdPTA7WSgwPT09UyksWSgwPT0oLTgxOTImUykpfSxTZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5''@;'; put 'put ''KHgpLFY9MDtWPHg7VisrKVBbVl09MDtyZXR1cm4gUH0sU2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPTIqdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCxQLmxlbmd0aCksUz10aGlzLm1ha2VSQlQoVCksRj10aGlzLnN0dWIoVCkseWU9bmV3IEFycmF5KFQpLENlPW5l''@;'; put 'put ''dyBBcnJheShUKSxEZT1uZXcgQXJyYXkoVCksUGU9bmV3IEFycmF5KFQpLFFlPW5ldyBBcnJheShUKSwkZT1uZXcgQXJyYXkoVCksZ3Q9Vi53b3JkcztndC5sZW5ndGg9VCx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCx5ZSxUKSx0aGlzLmNvbnZlcnQxM2IoUC53b3JkcyxQLmxl''@;'; put 'put ''bmd0aCxQZSxUKSx0aGlzLnRyYW5zZm9ybSh5ZSxGLENlLERlLFQsUyksdGhpcy50cmFuc2Zvcm0oUGUsRixRZSwkZSxULFMpO2Zvcih2YXIgeXQ9MDt5dDxUO3l0Kyspe3ZhciBwdD1DZVt5dF0qUWVbeXRdLURlW3l0XSokZVt5dF07RGVbeXRdPUNlW3l0XSokZVt5dF0rRGVbeXRdKlFlW3l0''@;'; put 'put ''XSxDZVt5dF09cHR9cmV0dXJuIHRoaXMuY29uanVnYXRlKENlLERlLFQpLHRoaXMudHJhbnNmb3JtKENlLERlLGd0LEYsVCxTKSx0aGlzLmNvbmp1Z2F0ZShndCxGLFQpLHRoaXMubm9ybWFsaXplMTNiKGd0LFQpLFYubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPXgu''@;'; put 'put ''bGVuZ3RoK1AubGVuZ3RoLFYuc3RyaXAoKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksdGhpcy5tdWxUbyh4LFApfSxOLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHgp''@;'; put 'put ''e3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksa2UodGhpcyx4LFApfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oeCx0aGlzKX0sTi5wcm90b3R5cGUuaW11bG49ZnVu''@;'; put 'put ''Y3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCk7Zm9yKHZhciBQPTAsVj0wO1Y8dGhpcy5sZW5ndGg7VisrKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSp4LFM9KDY3MTA4ODYzJlQpKyg2NzEwODg2MyZQKTtQPj49MjYsUCs9VC82NzEwODg2NHwwLFArPVM+Pj4y''@;'; put 'put ''Nix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJlN9cmV0dXJuIDAhPT1QJiYodGhpcy53b3Jkc1tWXT1QLHRoaXMubGVuZ3RoKyspLHRoaXN9LE4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih4KX0sTi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCl7dmFyIFA9ZnVuY3Rpb24oRil7Zm9yKHZhciB5ZT1uZXcgQXJyYXkoRi5iaXRMZW5ndGgoKSks''@;'; put 'put ''Q2U9MDtDZTx5ZS5sZW5ndGg7Q2UrKyl7dmFyIFBlPUNlJTI2O3llW0NlXT0oRi53b3Jkc1tDZS8yNnwwXSYxPDxQZSk+Pj5QZX1yZXR1cm4geWV9KHgpO2lmKDA9PT1QLmxlbmd0aClyZXR1cm4gbmV3IE4oMSk7Zm9yKHZhciBWPXRoaXMsVD0wO1Q8UC5sZW5ndGgmJjA9PT1QW1RdO1QrKyxW''@;'; put 'put ''PVYuc3FyKCkpO2lmKCsrVDxQLmxlbmd0aClmb3IodmFyIFM9Vi5zcXIoKTtUPFAubGVuZ3RoO1QrKyxTPVMuc3FyKCkpMCE9PVBbVF0mJihWPVYubXVsKFMpKTtyZXR1cm4gVn0sTi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIg''@;'; put 'put ''UCxWPXglMjYsVD0oeC1WKS8yNixTPTY3MTA4ODYzPj4+MjYtVjw8MjYtVjtpZigwIT09Vil7dmFyIEY9MDtmb3IoUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgeWU9dGhpcy53b3Jkc1tQXSZTO3RoaXMud29yZHNbUF09KDB8dGhpcy53b3Jkc1tQXSkteWU8PFZ8RixGPXllPj4+MjYtVn1G''@;'; put 'put ''JiYodGhpcy53b3Jkc1tQXT1GLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1UKXtmb3IoUD10aGlzLmxlbmd0aC0xO1A+PTA7UC0tKXRoaXMud29yZHNbUCtUXT10aGlzLndvcmRzW1BdO2ZvcihQPTA7UDxUO1ArKyl0aGlzLndvcmRzW1BdPTA7dGhpcy5sZW5ndGgrPVR9cmV0dXJuIHRoaXMuc3Ry''@;'; put 'put ''aXAoKX0sTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKHgpfSxOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oeCxQLFYpe3ZhciBUO1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKSxUPVA/KFAtUCUyNikvMjY6''@;'; put 'put ''MDt2YXIgUz14JTI2LEY9TWF0aC5taW4oKHgtUykvMjYsdGhpcy5sZW5ndGgpLHllPTY3MTA4ODYzXjY3MTA4ODYzPj4+Uzw8UyxDZT1WO2lmKFQtPUYsVD1NYXRoLm1heCgwLFQpLENlKXtmb3IodmFyIERlPTA7RGU8RjtEZSsrKUNlLndvcmRzW0RlXT10aGlzLndvcmRzW0RlXTtDZS5sZW5n''@;'; put 'put ''dGg9Rn1pZigwIT09RilpZih0aGlzLmxlbmd0aD5GKWZvcih0aGlzLmxlbmd0aC09RixEZT0wO0RlPHRoaXMubGVuZ3RoO0RlKyspdGhpcy53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZStGXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBQZT0wO2ZvcihEZT10aGlzLmxl''@;'; put 'put ''bmd0aC0xO0RlPj0wJiYoMCE9PVBlfHxEZT49VCk7RGUtLSl7dmFyIFFlPTB8dGhpcy53b3Jkc1tEZV07dGhpcy53b3Jkc1tEZV09UGU8PDI2LVN8UWU+Pj5TLFBlPVFlJnllfXJldHVybiBDZSYmMCE9PVBlJiYoQ2Uud29yZHNbQ2UubGVuZ3RoKytdPVBlKSwwPT09dGhpcy5sZW5ndGgmJih0''@;'; put 'put ''aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKHgsUCxWKX0sTi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmlzaGxuKHgpfSxOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbih4KX0sTi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKHgpfSxOLnByb3RvdHlwZS51c2hybj1mdW5jdGlv''@;'; put 'put ''bih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybih4KX0sTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1WfHwhKHRoaXMud29yZHNbVl0mMTw8UCkpfSxO''@;'; put 'put ''LnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PVY/''@;'; put 'put ''dGhpczooMCE9PVAmJlYrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihWLHRoaXMubGVuZ3RoKSwwIT09UCYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+UDw8UCksdGhpcy5zdHJpcCgpKX0sTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oeCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2xvbmUoKS5pbWFza24oeCl9LE4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHgpe3JldHVybiBZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDA/dGhpcy5pc3VibigteCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRz''@;'; put 'put ''WzBdKTx4Pyh0aGlzLndvcmRzWzBdPXgtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3Vibih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oeCl9LE4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih4KXt0''@;'; put 'put ''aGlzLndvcmRzWzBdKz14O2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF0+PTY3MTA4ODY0O1ArKyl0aGlzLndvcmRzW1BdLT02NzEwODg2NCxQPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW1ArMV09MTp0aGlzLndvcmRzW1ArMV0rKztyZXR1cm4gdGhpcy5sZW5n''@;'; put 'put ''dGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUCsxKSx0aGlzfSxOLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih4KXtpZihZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDApcmV0dXJuIHRoaXMuaWFkZG4oLXgpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTAsdGhpcy5pYWRkbih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT14LDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBQPTA7UDx0aGlz''@;'; put 'put ''Lmxlbmd0aCYmdGhpcy53b3Jkc1tQXTwwO1ArKyl0aGlzLndvcmRzW1BdKz02NzEwODg2NCx0aGlzLndvcmRzW1ArMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKHgpfSxOLnByb3RvdHlwZS5z''@;'; put 'put ''dWJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oeCl9LE4ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LE4ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFM7dGhpcy5fZXhwYW5kKHgubGVuZ3RoK1YpO3ZhciB5ZT0wO2ZvcihUPTA7VDx4Lmxlbmd0aDtUKyspe1M9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZTt2YXIgQ2U9KDB8eC53b3Jkc1tUXSkqUDt5ZT0oKFMtPTY3MTA4ODYz''@;'; put 'put ''JkNlKT4+MjYpLShDZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmU31mb3IoO1Q8dGhpcy5sZW5ndGgtVjtUKyspeWU9KFM9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZSk+PjI2LHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTO2lmKDA9PT15ZSlyZXR1cm4gdGhpcy5zdHJp''@;'; put 'put ''cCgpO2ZvcihZKC0xPT09eWUpLHllPTAsVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXllPShTPS0oMHx0aGlzLndvcmRzW1RdKSt5ZSk+PjI2LHRoaXMud29yZHNbVF09NjcxMDg4NjMmUztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3dvcmREaXY9ZnVu''@;'; put 'put ''Y3Rpb24oeCxQKXt2YXIgVixUPXRoaXMuY2xvbmUoKSxTPXgsRj0wfFMud29yZHNbUy5sZW5ndGgtMV07MCE9KFY9MjYtdGhpcy5fY291bnRCaXRzKEYpKSYmKFM9Uy51c2hsbihWKSxULml1c2hsbihWKSxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXSk7dmFyIHllLENlPVQubGVuZ3RoLVMubGVu''@;'; put 'put ''Z3RoO2lmKCJtb2QiIT09UCl7KHllPW5ldyBOKG51bGwpKS5sZW5ndGg9Q2UrMSx5ZS53b3Jkcz1uZXcgQXJyYXkoeWUubGVuZ3RoKTtmb3IodmFyIERlPTA7RGU8eWUubGVuZ3RoO0RlKyspeWUud29yZHNbRGVdPTB9dmFyIFBlPVQuY2xvbmUoKS5faXNobG5zdWJtdWwoUywxLENlKTswPT09''@;'; put 'put ''UGUubmVnYXRpdmUmJihUPVBlLHllJiYoeWUud29yZHNbQ2VdPTEpKTtmb3IodmFyIFFlPUNlLTE7UWU+PTA7UWUtLSl7dmFyICRlPTY3MTA4ODY0KigwfFQud29yZHNbUy5sZW5ndGgrUWVdKSsoMHxULndvcmRzW1MubGVuZ3RoK1FlLTFdKTtmb3IoJGU9TWF0aC5taW4oJGUvRnwwLDY3MTA4''@;'; put 'put ''ODYzKSxULl9pc2hsbnN1Ym11bChTLCRlLFFlKTswIT09VC5uZWdhdGl2ZTspJGUtLSxULm5lZ2F0aXZlPTAsVC5faXNobG5zdWJtdWwoUywxLFFlKSxULmlzWmVybygpfHwoVC5uZWdhdGl2ZV49MSk7eWUmJih5ZS53b3Jkc1tRZV09JGUpfXJldHVybiB5ZSYmeWUuc3RyaXAoKSxULnN0cmlw''@;'; put 'put ''KCksImRpdiIhPT1QJiYwIT09ViYmVC5pdXNocm4oVikse2Rpdjp5ZXx8bnVsbCxtb2Q6VH19LE4ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoIXguaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTigwKSxtb2Q6bmV3IE4oMCl9OjAhPT10aGlzLm5l''@;'; put 'put ''Z2F0aXZlJiYwPT09eC5uZWdhdGl2ZT8oRj10aGlzLm5lZygpLmRpdm1vZCh4LFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaWFkZCh4KSkse2RpdjpULG1vZDpTfSk6MD09PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JjAhPT14Lm5lZ2F0aXZlPyhGPXRoaXMuZGl2bW9kKHgubmVnKCksUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWcoKSkse2RpdjpULG1vZDpGLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJngubmVnYXRpdmUpPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgubmVnKCksUCksImRpdiIhPT1QJiYoUz1G''@;'; put 'put ''Lm1vZC5uZWcoKSxWJiYwIT09Uy5uZWdhdGl2ZSYmUy5pc3ViKHgpKSx7ZGl2OkYuZGl2LG1vZDpTfSk6eC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKHgpPDA/e2RpdjpuZXcgTigwKSxtb2Q6dGhpc306MT09PXgubGVuZ3RoPyJkaXYiPT09UD97ZGl2OnRoaXMuZGl2bih4LndvcmRz''@;'; put 'put ''WzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1QP3tkaXY6bnVsbCxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoeCxQKTt2YXIgVCxTLEZ9LE4ucHJv''@;'; put 'put ''dG90eXBlLmRpdj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwiZGl2IiwhMSkuZGl2fSxOLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITEpLm1vZH0sTi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5k''@;'; put 'put ''aXZtb2QoeCwibW9kIiwhMCkubW9kfSxOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmRpdm1vZCh4KTtpZihQLm1vZC5pc1plcm8oKSlyZXR1cm4gUC5kaXY7dmFyIFY9MCE9PVAuZGl2Lm5lZ2F0aXZlP1AubW9kLmlzdWIoeCk6UC5tb2QsVD14LnVzaHJuKDEp''@;'; put 'put ''LFM9eC5hbmRsbigxKSxGPVYuY21wKFQpO3JldHVybiBGPDB8fDE9PT1TJiYwPT09Rj9QLmRpdjowIT09UC5kaXYubmVnYXRpdmU/UC5kaXYuaXN1Ym4oMSk6UC5kaXYuaWFkZG4oMSl9LE4ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oeCl7WSh4PD02NzEwODg2Myk7Zm9yKHZhciBQPTY3MTA4''@;'; put 'put ''ODY0JXgsVj0wLFQ9dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSlWPShQKlYrKDB8dGhpcy53b3Jkc1tUXSkpJXg7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9KDB8''@;'; put 'put ''dGhpcy53b3Jkc1tWXSkrNjcxMDg4NjQqUDt0aGlzLndvcmRzW1ZdPVQveHwwLFA9VCV4fXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih4KX0sTi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbih4KXtZKDA9''@;'; put 'put ''PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQ9bmV3IE4oMSksUz1uZXcgTigwKSxGPW5ldyBOKDApLHllPW5ldyBOKDEpLENlPTA7UC5pc0V2ZW4oKSYmVi5pc0V2''@;'; put 'put ''ZW4oKTspUC5pdXNocm4oMSksVi5pdXNocm4oMSksKytDZTtmb3IodmFyIERlPVYuY2xvbmUoKSxQZT1QLmNsb25lKCk7IVAuaXNaZXJvKCk7KXtmb3IodmFyIFFlPTAsJGU9MTswPT0oUC53b3Jkc1swXSYkZSkmJlFlPDI2OysrUWUsJGU8PD0xKTtpZihRZT4wKWZvcihQLml1c2hybihRZSk7''@;'; put 'put ''UWUtLSA+MDspKFQuaXNPZGQoKXx8Uy5pc09kZCgpKSYmKFQuaWFkZChEZSksUy5pc3ViKFBlKSksVC5pdXNocm4oMSksUy5pdXNocm4oMSk7Zm9yKHZhciBndD0wLHl0PTE7MD09KFYud29yZHNbMF0meXQpJiZndDwyNjsrK2d0LHl0PDw9MSk7aWYoZ3Q+MClmb3IoVi5pdXNocm4oZ3QpO2d0''@;'; put 'put ''LS0gPjA7KShGLmlzT2RkKCl8fHllLmlzT2RkKCkpJiYoRi5pYWRkKERlKSx5ZS5pc3ViKFBlKSksRi5pdXNocm4oMSkseWUuaXVzaHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksVC5pc3ViKEYpLFMuaXN1Yih5ZSkpOihWLmlzdWIoUCksRi5pc3ViKFQpLHllLmlzdWIoUykpfXJldHVy''@;'; put 'put ''bnthOkYsYjp5ZSxnY2Q6Vi5pdXNobG4oQ2UpfX0sTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVtb2QoeCk6UC5jbG9uZSgpO2Zvcih2YXIgVCxT''@;'; put 'put ''PW5ldyBOKDEpLEY9bmV3IE4oMCkseWU9Vi5jbG9uZSgpO1AuY21wbigxKT4wJiZWLmNtcG4oMSk+MDspe2Zvcih2YXIgQ2U9MCxEZT0xOzA9PShQLndvcmRzWzBdJkRlKSYmQ2U8MjY7KytDZSxEZTw8PTEpO2lmKENlPjApZm9yKFAuaXVzaHJuKENlKTtDZS0tID4wOylTLmlzT2RkKCkmJlMu''@;'; put 'put ''aWFkZCh5ZSksUy5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLFFlPTE7MD09KFYud29yZHNbMF0mUWUpJiZQZTwyNjsrK1BlLFFlPDw9MSk7aWYoUGU+MClmb3IoVi5pdXNocm4oUGUpO1BlLS0gPjA7KUYuaXNPZGQoKSYmRi5pYWRkKHllKSxGLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3Vi''@;'; put 'put ''KFYpLFMuaXN1YihGKSk6KFYuaXN1YihQKSxGLmlzdWIoUykpfXJldHVybihUPTA9PT1QLmNtcG4oMSk/UzpGKS5jbXBuKDApPDAmJlQuaWFkZCh4KSxUfSxOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oeCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4geC5hYnMoKTtpZih4LmlzWmVybygpKXJl''@;'; put 'put ''dHVybiB0aGlzLmFicygpO3ZhciBQPXRoaXMuY2xvbmUoKSxWPXguY2xvbmUoKTtQLm5lZ2F0aXZlPTAsVi5uZWdhdGl2ZT0wO2Zvcih2YXIgVD0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7VCsrKVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtQLmlzRXZlbigpOylQLml1''@;'; put 'put ''c2hybigxKTtmb3IoO1YuaXNFdmVuKCk7KVYuaXVzaHJuKDEpO3ZhciBTPVAuY21wKFYpO2lmKFM8MCl7dmFyIEY9UDtQPVYsVj1GfWVsc2UgaWYoMD09PVN8fDA9PT1WLmNtcG4oMSkpYnJlYWs7UC5pc3ViKFYpfXJldHVybiBWLml1c2hsbihUKX0sTi5wcm90b3R5cGUuaW52bT1mdW5jdGlv''@;'; put 'put ''bih4KXtyZXR1cm4gdGhpcy5lZ2NkKHgpLmEudW1vZCh4KX0sTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUu''@;'; put 'put ''YW5kbG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud29yZHNbMF0meH0sTi5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpO3ZhciBQPXglMjYsVj0oeC1QKS8yNixUPTE8PFA7aWYodGhpcy5sZW5ndGg8PVYpcmV0dXJuIHRoaXMuX2V4cGFuZChWKzEp''@;'; put 'put ''LHRoaXMud29yZHNbVl18PVQsdGhpcztmb3IodmFyIFM9VCxGPVY7MCE9PVMmJkY8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9MHx0aGlzLndvcmRzW0ZdO1M9KHllKz1TKT4+PjI2LHRoaXMud29yZHNbRl09eWUmPTY3MTA4ODYzfXJldHVybiAwIT09UyYmKHRoaXMud29yZHNbRl09Uyx0aGlz''@;'; put 'put ''Lmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sTi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih4KXt2YXIgUCxWPXg8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIVYpcmV0dXJuLTE7''@;'; put 'put ''aWYoMD09PXRoaXMubmVnYXRpdmUmJlYpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUD0xO2Vsc2V7ViYmKHg9LXgpLFkoeDw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFQ9MHx0aGlzLndvcmRzWzBdO1A9VD09PXg/MDpUPHg/LTE6MX1yZXR1cm4g''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oeCl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgUD10aGlzLnVjbXAoeCk7''@;'; put 'put ''cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih4KXtpZih0aGlzLmxlbmd0aD54Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx4Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0p''@;'; put 'put ''e3ZhciBUPTB8dGhpcy53b3Jkc1tWXSxTPTB8eC53b3Jkc1tWXTtpZihUIT09Uyl7VDxTP1A9LTE6VD5TJiYoUD0xKTticmVha319cmV0dXJuIFB9LE4ucHJvdG90eXBlLmd0bj1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oeCl7''@;'; put 'put ''cmV0dXJuIDE9PT10aGlzLmNtcCh4KX0sTi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPj0wfSxOLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPj0wfSxOLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oeCl7cmV0dXJuLTE9''@;'; put 'put ''PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KTw9MH0sTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4''@;'; put 'put ''KTw9MH0sTi5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5lcT1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wKHgpfSxOLnJlZD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IG5lKHgpfSxOLnByb3RvdHlwZS50b1JlZD1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxZKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5''@;'; put 'put ''cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4g''@;'; put 'put ''dGhpcy5yZWQ9eCx0aGlzfSxOLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKHgpe3JldHVy''@;'; put 'put ''biBZKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhp''@;'; put 'put ''cy5yZWQuaWFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gWSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRo''@;'; put 'put ''aXMucmVkLnNobCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLm11bCh0aGlzLHgpfSxOLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRJTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5pbXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBZ''@;'; put 'put ''KHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkx''@;'; put 'put ''KHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTi5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHgpe3JldHVybiBZ''@;'; put 'put ''KHRoaXMucmVkJiYheC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMseCl9O3ZhciBJZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIFRlKHgsUCl7dGhpcy5uYW1lPXgs''@;'; put 'put ''dGhpcy5wPW5ldyBOKFAsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBFZSgpe1RlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gaGUoKXtUZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIE8o''@;'; put 'put ''KXtUZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIHooKXtUZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIG5lKHgpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7dmFyIFA9Ti5fcHJpbWUoeCk7dGhpcy5tPVAucCx0aGlzLnByaW1lPVB9ZWxzZSBZKHguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09eCx0aGlzLnBy''@;'; put 'put ''aW1lPW51bGx9ZnVuY3Rpb24gdGUoeCl7bmUuY2FsbCh0aGlzLHgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhp''@;'; put 'put ''cy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMu''@;'; put 'put ''bWludil9VGUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgeD1uZXcgTihudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHh9LFRlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKHgpe3ZhciBQLFY9eDtkb3t0aGlzLnNwbGl0KFYsdGhp''@;'; put 'put ''cy50bXApLFA9KFY9KFY9dGhpcy5pbXVsSyhWKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFA+dGhpcy5uKTt2YXIgVD1QPHRoaXMubj8tMTpWLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PVQ/KFYud29yZHNbMF09MCxWLmxlbmd0aD0xKTpUPjA/Vi5pc3ViKHRoaXMucCk6''@;'; put 'put ''dm9pZCAwIT09Vi5zdHJpcD9WLnN0cmlwKCk6Vi5fc3RyaXAoKSxWfSxUZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQKXt4Lml1c2hybih0aGlzLm4sMCxQKX0sVGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3JldHVybiB4LmltdWwodGhpcy5rKX0sVyhFZSxUZSksRWUucHJv''@;'; put 'put ''dG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTQxOTQzMDMsVD1NYXRoLm1pbih4Lmxlbmd0aCw5KSxTPTA7UzxUO1MrKylQLndvcmRzW1NdPXgud29yZHNbU107aWYoUC5sZW5ndGg9VCx4Lmxlbmd0aDw9OSlyZXR1cm4geC53b3Jkc1swXT0wLHZvaWQoeC5sZW5ndGg9MSk7''@;'; put 'put ''dmFyIEY9eC53b3Jkc1s5XTtmb3IoUC53b3Jkc1tQLmxlbmd0aCsrXT1GJlYsUz0xMDtTPHgubGVuZ3RoO1MrKyl7dmFyIHllPTB8eC53b3Jkc1tTXTt4LndvcmRzW1MtMTBdPSh5ZSZWKTw8NHxGPj4+MjIsRj15ZX14LndvcmRzW1MtMTBdPUY+Pj49MjIseC5sZW5ndGgtPTA9PT1GJiZ4Lmxl''@;'; put 'put ''bmd0aD4xMD8xMDo5fSxFZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7eC53b3Jkc1t4Lmxlbmd0aF09MCx4LndvcmRzW3gubGVuZ3RoKzFdPTAseC5sZW5ndGgrPTI7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0wfHgud29yZHNbVl07eC53b3Jkc1tWXT02NzEw''@;'; put 'put ''ODg2MyYoUCs9OTc3KlQpLFA9NjQqVCsoUC82NzEwODg2NHwwKX1yZXR1cm4gMD09PXgud29yZHNbeC5sZW5ndGgtMV0mJih4Lmxlbmd0aC0tLDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiZ4Lmxlbmd0aC0tKSx4fSxXKGhlLFRlKSxXKE8sVGUpLFcoeixUZSksei5wcm90b3R5cGUuaW11bEs9''@;'; put 'put ''ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0xOSooMHx4LndvcmRzW1ZdKStQLFM9NjcxMDg4NjMmVDtUPj4+PTI2LHgud29yZHNbVl09UyxQPVR9cmV0dXJuIDAhPT1QJiYoeC53b3Jkc1t4Lmxlbmd0aCsrXT1QKSx4fSxOLl9wcmltZT1mdW5jdGlv''@;'; put 'put ''bih4KXtpZihJZVt4XSlyZXR1cm4gSWVbeF07dmFyIFA7aWYoImsyNTYiPT09eClQPW5ldyBFZTtlbHNlIGlmKCJwMjI0Ij09PXgpUD1uZXcgaGU7ZWxzZSBpZigicDE5MiI9PT14KVA9bmV3IE87ZWxzZXtpZigicDI1NTE5IiE9PXgpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIr''@;'; put 'put ''eCk7UD1uZXcgen1yZXR1cm4gSWVbeF09UCxQfSxuZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxZKHgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LG5lLnByb3Rv''@;'; put 'put ''dHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih4LFApe1koMD09KHgubmVnYXRpdmV8UC5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCYmeC5yZWQ9PT1QLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxuZS5wcm90b3R5cGUuaW1v''@;'; put 'put ''ZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeCkuX2ZvcmNlUmVkKHRoaXMpOngudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sbmUucHJvdG90eXBlLm5lZz1mdW5jdGlvbih4KXtyZXR1cm4geC5pc1plcm8oKT94LmNsb25lKCk6dGhpcy5t''@;'; put 'put ''LnN1Yih4KS5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5hZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFYuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuaWFk''@;'; put 'put ''ZD1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmlhZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFZ9LG5lLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5zdWIoUCk7cmV0dXJu''@;'; put 'put ''IFYuY21wbigwKTwwJiZWLmlhZGQodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sbmUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVn0sbmUucHJvdG90eXBl''@;'; put 'put ''LnNobD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkxKHgpLHRoaXMuaW1vZCh4LnVzaGxuKFApKX0sbmUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4LmltdWwoUCkpfSxuZS5wcm90b3R5cGUubXVsPWZ1''@;'; put 'put ''bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5tdWwoUCkpfSxuZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbXVsKHgseC5jbG9uZSgpKX0sbmUucHJvdG90eXBlLnNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5tdWwo''@;'; put 'put ''eCx4KX0sbmUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oeCl7aWYoeC5pc1plcm8oKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBQPXRoaXMubS5hbmRsbigzKTtpZihZKFAlMj09MSksMz09PVApe3ZhciBWPXRoaXMubS5hZGQobmV3IE4oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coeCxW''@;'; put 'put ''KX1mb3IodmFyIFQ9dGhpcy5tLnN1Ym4oMSksUz0wOyFULmlzWmVybygpJiYwPT09VC5hbmRsbigxKTspUysrLFQuaXVzaHJuKDEpO1koIVQuaXNaZXJvKCkpO3ZhciBGPW5ldyBOKDEpLnRvUmVkKHRoaXMpLHllPUYucmVkTmVnKCksQ2U9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLERlPXRo''@;'; put 'put ''aXMubS5iaXRMZW5ndGgoKTtmb3IoRGU9bmV3IE4oMipEZSpEZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KERlLENlKS5jbXAoeWUpOylEZS5yZWRJQWRkKHllKTtmb3IodmFyIFBlPXRoaXMucG93KERlLFQpLFFlPXRoaXMucG93KHgsVC5hZGRuKDEpLml1c2hybigxKSksJGU9dGhpcy5w''@;'; put 'put ''b3coeCxUKSxndD1TOzAhPT0kZS5jbXAoRik7KXtmb3IodmFyIHl0PSRlLHB0PTA7MCE9PXl0LmNtcChGKTtwdCsrKXl0PXl0LnJlZFNxcigpO1kocHQ8Z3QpO3ZhciBtdD10aGlzLnBvdyhQZSxuZXcgTigxKS5pdXNobG4oZ3QtcHQtMSkpO1FlPVFlLnJlZE11bChtdCksUGU9bXQucmVkU3Fy''@;'; put 'put ''KCksJGU9JGUucmVkTXVsKFBlKSxndD1wdH1yZXR1cm4gUWV9LG5lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3ZhciBQPXguX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1QLm5lZ2F0aXZlPyhQLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKFApLnJlZE5lZygpKTp0aGlzLmltb2QoUCl9LG5l''@;'; put 'put ''LnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCxQKXtpZihQLmlzWmVybygpKXJldHVybiBuZXcgTigxKS50b1JlZCh0aGlzKTtpZigwPT09UC5jbXBuKDEpKXJldHVybiB4LmNsb25lKCk7dmFyIFY9bmV3IEFycmF5KDE2KTtWWzBdPW5ldyBOKDEpLnRvUmVkKHRoaXMpLFZbMV09eDtmb3IodmFy''@;'; put 'put ''IFQ9MjtUPFYubGVuZ3RoO1QrKylWW1RdPXRoaXMubXVsKFZbVC0xXSx4KTt2YXIgUz1WWzBdLEY9MCx5ZT0wLENlPVAuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1DZSYmKENlPTI2KSxUPVAubGVuZ3RoLTE7VD49MDtULS0pe2Zvcih2YXIgRGU9UC53b3Jkc1tUXSxQZT1DZS0xO1BlPj0wO1Bl''@;'; put 'put ''LS0pe3ZhciBRZT1EZT4+UGUmMTtTIT09VlswXSYmKFM9dGhpcy5zcXIoUykpLDAhPT1RZXx8MCE9PUY/KEY8PD0xLEZ8PVFlLCg0PT0rK3llfHwwPT09VCYmMD09PVBlKSYmKFM9dGhpcy5tdWwoUyxWW0ZdKSx5ZT0wLEY9MCkpOnllPTB9Q2U9MjZ9cmV0dXJuIFN9LG5lLnByb3RvdHlwZS5j''@;'; put 'put ''b252ZXJ0VG89ZnVuY3Rpb24oeCl7dmFyIFA9eC51bW9kKHRoaXMubSk7cmV0dXJuIFA9PT14P1AuY2xvbmUoKTpQfSxuZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9eC5jbG9uZSgpO3JldHVybiBQLnJlZD1udWxsLFB9LE4ubW9udD1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gbmV3IHRlKHgpfSxXKHRlLG5lKSx0ZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC51c2hsbih0aGlzLnNoaWZ0KSl9LHRlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmltb2QoeC5tdWwodGhpcy5yaW52''@;'; put 'put ''KSk7cmV0dXJuIFAucmVkPW51bGwsUH0sdGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQLmlzWmVybygpKXJldHVybiB4LndvcmRzWzBdPTAseC5sZW5ndGg9MSx4O3ZhciBWPXguaW11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWlu''@;'; put 'put ''dikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSx0ZS5w''@;'; put 'put ''cm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBWPXgubXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMu''@;'; put 'put ''bSksUz1WLmlzdWIoVCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1cm4gUy5jbXAodGhpcy5tKT49MD9GPVMuaXN1Yih0aGlzLm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LHRlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVy''@;'; put 'put ''biB0aGlzLmltb2QoeC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFU9Wi5ubWQoVSksdGhpcyl9LDk3NDY6VT0+e2Z1bmN0aW9uIFEoWixpZSl7aWYoIVopdGhyb3cgbmV3IEVycm9yKGllfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfVUuZXhwb3J0cz1RLFEu''@;'; put 'put ''ZXF1YWw9ZnVuY3Rpb24oWixpZSxsZSl7aWYoWiE9aWUpdGhyb3cgbmV3IEVycm9yKGxlfHwiQXNzZXJ0aW9uIGZhaWxlZDogIitaKyIgIT0gIitpZSl9fSw0NTA0OihVLFEpPT57InVzZSBzdHJpY3QiO3ZhciBaPVE7ZnVuY3Rpb24gaWUoWSl7cmV0dXJuIDE9PT1ZLmxlbmd0aD8iMCIrWTpZ''@;'; put 'put ''fWZ1bmN0aW9uIGxlKFkpe2Zvcih2YXIgVz0iIixOPTA7TjxZLmxlbmd0aDtOKyspVys9aWUoWVtOXS50b1N0cmluZygxNikpO3JldHVybiBXfVoudG9BcnJheT1mdW5jdGlvbihZLFcpe2lmKEFycmF5LmlzQXJyYXkoWSkpcmV0dXJuIFkuc2xpY2UoKTtpZighWSlyZXR1cm5bXTt2YXIgTj1b''@;'; put 'put ''XTtpZigic3RyaW5nIiE9dHlwZW9mIFkpe2Zvcih2YXIgZWU9MDtlZTxZLmxlbmd0aDtlZSsrKU5bZWVdPTB8WVtlZV07cmV0dXJuIE59aWYoImhleCI9PT1XKWZvcigoWT1ZLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpKS5sZW5ndGglMiE9MCYmKFk9IjAiK1kpLGVlPTA7ZWU8WS5sZW5n''@;'; put 'put ''dGg7ZWUrPTIpTi5wdXNoKHBhcnNlSW50KFlbZWVdK1lbZWUrMV0sMTYpKTtlbHNlIGZvcihlZT0wO2VlPFkubGVuZ3RoO2VlKyspe3ZhciBxPVkuY2hhckNvZGVBdChlZSksSj1xPj44LHNlPTI1NSZxO0o/Ti5wdXNoKEosc2UpOk4ucHVzaChzZSl9cmV0dXJuIE59LFouemVybzI9aWUsWi50''@;'; put 'put ''b0hleD1sZSxaLmVuY29kZT1mdW5jdGlvbihZLFcpe3JldHVybiJoZXgiPT09Vz9sZShZKTpZfX0sMTE3MTooVSxRLFopPT57dmFyIGllPVooNTEwOCk7VS5leHBvcnRzPWZlLGZlLk1pbmltYXRjaD1kZTt2YXIgbGU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIFooMjUyMCl9Y2F0Y2goU2Upe319''@;'; put 'put ''KCl8fHtzZXA6Ii8ifTtmZS5zZXA9bGUuc2VwO3ZhciBZPWZlLkdMT0JTVEFSPWRlLkdMT0JTVEFSPXt9LFc9WigzNjQ0KSxOPXsiISI6e29wZW46Iig/Oig/ISg/OiIsY2xvc2U6IikpW14vXSo/KSJ9LCI/Ijp7b3BlbjoiKD86IixjbG9zZToiKT8ifSwiKyI6e29wZW46Iig/OiIsY2xvc2U6''@;'; put 'put ''IikrIn0sIioiOntvcGVuOiIoPzoiLGNsb3NlOiIpKiJ9LCJAIjp7b3BlbjoiKD86IixjbG9zZToiKSJ9fSxxPSJbXi9dKj8iLEo9IigpLip7fSs/W11eJFxcISIuc3BsaXQoIiIpLnJlZHVjZShmdW5jdGlvbihTZSxJZSl7cmV0dXJuIFNlW0llXT0hMCxTZX0se30pLHNlPS9cLysvO2Z1bmN0''@;'; put 'put ''aW9uIGFlKFNlLEllKXtJZT1JZXx8e307dmFyIFRlPXt9O3JldHVybiBPYmplY3Qua2V5cyhTZSkuZm9yRWFjaChmdW5jdGlvbihFZSl7VGVbRWVdPVNlW0VlXX0pLE9iamVjdC5rZXlzKEllKS5mb3JFYWNoKGZ1bmN0aW9uKEVlKXtUZVtFZV09SWVbRWVdfSksVGV9ZnVuY3Rpb24gZmUoU2Us''@;'; put 'put ''SWUsVGUpe3JldHVybiBBZShJZSksVGV8fChUZT17fSksISghVGUubm9jb21tZW50JiYiIyI9PT1JZS5jaGFyQXQoMCkpJiZuZXcgZGUoSWUsVGUpLm1hdGNoKFNlKX1mdW5jdGlvbiBkZShTZSxJZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgZGUpKXJldHVybiBuZXcgZGUoU2UsSWUpO0FlKFNl''@;'; put 'put ''KSxJZXx8KEllPXt9KSxTZT1TZS50cmltKCksSWUuYWxsb3dXaW5kb3dzRXNjYXBlfHwiLyI9PT1sZS5zZXB8fChTZT1TZS5zcGxpdChsZS5zZXApLmpvaW4oIi8iKSksdGhpcy5vcHRpb25zPUllLHRoaXMuc2V0PVtdLHRoaXMucGF0dGVybj1TZSx0aGlzLnJlZ2V4cD1udWxsLHRoaXMubmVn''@;'; put 'put ''YXRlPSExLHRoaXMuY29tbWVudD0hMSx0aGlzLmVtcHR5PSExLHRoaXMucGFydGlhbD0hIUllLnBhcnRpYWwsdGhpcy5tYWtlKCl9ZnVuY3Rpb24gdmUoU2UsSWUpe3JldHVybiBJZXx8KEllPXRoaXMgaW5zdGFuY2VvZiBkZT90aGlzLm9wdGlvbnM6e30pLEFlKFNlPXZvaWQgMD09PVNlP3Ro''@;'; put 'put ''aXMucGF0dGVybjpTZSksSWUubm9icmFjZXx8IS9ceyg/Oig/IVx7KS4pKlx9Ly50ZXN0KFNlKT9bU2VdOlcoU2UpfWZlLmZpbHRlcj1mdW5jdGlvbihTZSxJZSl7cmV0dXJuIEllPUllfHx7fSxmdW5jdGlvbihUZSxFZSxoZSl7cmV0dXJuIGZlKFRlLFNlLEllKX19LGZlLmRlZmF1bHRzPWZ1''@;'; put 'put ''bmN0aW9uKFNlKXtpZighU2V8fCJvYmplY3QiIT10eXBlb2YgU2V8fCFPYmplY3Qua2V5cyhTZSkubGVuZ3RoKXJldHVybiBmZTt2YXIgSWU9ZmUsVGU9ZnVuY3Rpb24oRWUsaGUsTyl7cmV0dXJuIEllKEVlLGhlLGFlKFNlLE8pKX07cmV0dXJuKFRlLk1pbmltYXRjaD1mdW5jdGlvbihFZSxo''@;'; put 'put ''ZSl7cmV0dXJuIG5ldyBJZS5NaW5pbWF0Y2goRWUsYWUoU2UsaGUpKX0pLmRlZmF1bHRzPWZ1bmN0aW9uKEVlKXtyZXR1cm4gSWUuZGVmYXVsdHMoYWUoU2UsRWUpKS5NaW5pbWF0Y2h9LFRlLmZpbHRlcj1mdW5jdGlvbihFZSxoZSl7cmV0dXJuIEllLmZpbHRlcihFZSxhZShTZSxoZSkpfSxU''@;'; put 'put ''ZS5kZWZhdWx0cz1mdW5jdGlvbihFZSl7cmV0dXJuIEllLmRlZmF1bHRzKGFlKFNlLEVlKSl9LFRlLm1ha2VSZT1mdW5jdGlvbihFZSxoZSl7cmV0dXJuIEllLm1ha2VSZShFZSxhZShTZSxoZSkpfSxUZS5icmFjZUV4cGFuZD1mdW5jdGlvbihFZSxoZSl7cmV0dXJuIEllLmJyYWNlRXhwYW5k''@;'; put 'put ''KEVlLGFlKFNlLGhlKSl9LFRlLm1hdGNoPWZ1bmN0aW9uKEVlLGhlLE8pe3JldHVybiBJZS5tYXRjaChFZSxoZSxhZShTZSxPKSl9LFRlfSxkZS5kZWZhdWx0cz1mdW5jdGlvbihTZSl7cmV0dXJuIGZlLmRlZmF1bHRzKFNlKS5NaW5pbWF0Y2h9LGRlLnByb3RvdHlwZS5kZWJ1Zz1mdW5jdGlv''@;'; put 'put ''bigpe30sZGUucHJvdG90eXBlLm1ha2U9ZnVuY3Rpb24oKXt2YXIgU2U9dGhpcy5wYXR0ZXJuLEllPXRoaXMub3B0aW9ucztpZihJZS5ub2NvbW1lbnR8fCIjIiE9PVNlLmNoYXJBdCgwKSlpZihTZSl7dGhpcy5wYXJzZU5lZ2F0ZSgpO3ZhciBUZT10aGlzLmdsb2JTZXQ9dGhpcy5icmFjZUV4''@;'; put 'put ''cGFuZCgpO0llLmRlYnVnJiYodGhpcy5kZWJ1Zz1mdW5jdGlvbigpe2llLmVycm9yLmFwcGx5KGllLGFyZ3VtZW50cyl9KSx0aGlzLmRlYnVnKHRoaXMucGF0dGVybixUZSksVGU9dGhpcy5nbG9iUGFydHM9VGUubWFwKGZ1bmN0aW9uKEVlKXtyZXR1cm4gRWUuc3BsaXQoc2UpfSksdGhpcy5k''@;'; put 'put ''ZWJ1Zyh0aGlzLnBhdHRlcm4sVGUpLFRlPVRlLm1hcChmdW5jdGlvbihFZSxoZSxPKXtyZXR1cm4gRWUubWFwKHRoaXMucGFyc2UsdGhpcyl9LHRoaXMpLHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLFRlKSxUZT1UZS5maWx0ZXIoZnVuY3Rpb24oRWUpe3JldHVybi0xPT09RWUuaW5kZXhPZigh''@;'; put 'put ''MSl9KSx0aGlzLmRlYnVnKHRoaXMucGF0dGVybixUZSksdGhpcy5zZXQ9VGV9ZWxzZSB0aGlzLmVtcHR5PSEwO2Vsc2UgdGhpcy5jb21tZW50PSEwfSxkZS5wcm90b3R5cGUucGFyc2VOZWdhdGU9ZnVuY3Rpb24oKXt2YXIgU2U9dGhpcy5wYXR0ZXJuLEllPSExLEVlPTA7aWYoIXRoaXMub3B0''@;'; put 'put ''aW9ucy5ub25lZ2F0ZSl7Zm9yKHZhciBoZT0wLE89U2UubGVuZ3RoO2hlPE8mJiIhIj09PVNlLmNoYXJBdChoZSk7aGUrKylJZT0hSWUsRWUrKztFZSYmKHRoaXMucGF0dGVybj1TZS5zdWJzdHIoRWUpKSx0aGlzLm5lZ2F0ZT1JZX19LGZlLmJyYWNlRXhwYW5kPWZ1bmN0aW9uKFNlLEllKXty''@;'; put 'put ''ZXR1cm4gdmUoU2UsSWUpfSxkZS5wcm90b3R5cGUuYnJhY2VFeHBhbmQ9dmU7dmFyIEFlPWZ1bmN0aW9uKFNlKXtpZigic3RyaW5nIiE9dHlwZW9mIFNlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgcGF0dGVybiIpO2lmKFNlLmxlbmd0aD42NTUzNil0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJwYXR0ZXJuIGlzIHRvbyBsb25nIil9O2RlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihTZSxJZSl7QWUoU2UpO3ZhciBUZT10aGlzLm9wdGlvbnM7aWYoIioqIj09PVNlKXtpZighVGUubm9nbG9ic3RhcilyZXR1cm4gWTtTZT0iKiJ9aWYoIiI9PT1TZSlyZXR1cm4iIjt2YXIgRWUsaGU9''@;'; put 'put ''IiIsTz0hIVRlLm5vY2FzZSx6PSExLG5lPVtdLHRlPVtdLHg9ITEsUD0tMSxWPS0xLFQ9Ii4iPT09U2UuY2hhckF0KDApPyIiOlRlLmRvdD8iKD8hKD86XnxcXC8pXFwuezEsMn0oPzokfFxcLykpIjoiKD8hXFwuKSIsUz10aGlzO2Z1bmN0aW9uIEYoKXtpZihFZSl7c3dpdGNoKEVlKXtjYXNl''@;'; put 'put ''IioiOmhlKz1xLE89ITA7YnJlYWs7Y2FzZSI/IjpoZSs9IlteL10iLE89ITA7YnJlYWs7ZGVmYXVsdDpoZSs9IlxcIitFZX1TLmRlYnVnKCJjbGVhclN0YXRlQ2hhciAlaiAlaiIsRWUsaGUpLEVlPSExfX1mb3IodmFyIHllLENlPTAsRGU9U2UubGVuZ3RoO0NlPERlJiYoeWU9U2UuY2hhckF0''@;'; put 'put ''KENlKSk7Q2UrKylpZih0aGlzLmRlYnVnKCIlc1x0JXMgJXMgJWoiLFNlLENlLGhlLHllKSx6JiZKW3llXSloZSs9IlxcIit5ZSx6PSExO2Vsc2Ugc3dpdGNoKHllKXtjYXNlIi8iOnJldHVybiExO2Nhc2UiXFwiOkYoKSx6PSEwO2NvbnRpbnVlO2Nhc2UiPyI6Y2FzZSIqIjpjYXNlIisiOmNh''@;'; put 'put ''c2UiQCI6Y2FzZSIhIjppZih0aGlzLmRlYnVnKCIlc1x0JXMgJXMgJWogPC0tIHN0YXRlQ2hhciIsU2UsQ2UsaGUseWUpLHgpe3RoaXMuZGVidWcoIiAgaW4gY2xhc3MiKSwiISI9PT15ZSYmQ2U9PT1WKzEmJih5ZT0iXiIpLGhlKz15ZTtjb250aW51ZX1TLmRlYnVnKCJjYWxsIGNsZWFyU3Rh''@;'; put 'put ''dGVDaGFyICVqIixFZSksRigpLEVlPXllLFRlLm5vZXh0JiZGKCk7Y29udGludWU7Y2FzZSIoIjppZih4KXtoZSs9IigiO2NvbnRpbnVlfWlmKCFFZSl7aGUrPSJcXCgiO2NvbnRpbnVlfW5lLnB1c2goe3R5cGU6RWUsc3RhcnQ6Q2UtMSxyZVN0YXJ0OmhlLmxlbmd0aCxvcGVuOk5bRWVdLm9w''@;'; put 'put ''ZW4sY2xvc2U6TltFZV0uY2xvc2V9KSx0aGlzLmRlYnVnKCJwbFR5cGUgJWogJWoiLEVlLGhlKz0iISI9PT1FZT8iKD86KD8hKD86IjoiKD86IiksRWU9ITE7Y29udGludWU7Y2FzZSIpIjppZih4fHwhbmUubGVuZ3RoKXtoZSs9IlxcKSI7Y29udGludWV9RigpLE89ITA7dmFyIFBlPW5lLnBv''@;'; put 'put ''cCgpO2hlKz1QZS5jbG9zZSwiISI9PT1QZS50eXBlJiZ0ZS5wdXNoKFBlKSxQZS5yZUVuZD1oZS5sZW5ndGg7Y29udGludWU7Y2FzZSJ8IjppZih4fHwhbmUubGVuZ3RofHx6KXtoZSs9IlxcfCIsej0hMTtjb250aW51ZX1GKCksaGUrPSJ8Ijtjb250aW51ZTtjYXNlIlsiOmlmKEYoKSx4KXto''@;'; put 'put ''ZSs9IlxcIit5ZTtjb250aW51ZX14PSEwLFY9Q2UsUD1oZS5sZW5ndGgsaGUrPXllO2NvbnRpbnVlO2Nhc2UiXSI6aWYoQ2U9PT1WKzF8fCF4KXtoZSs9IlxcIit5ZSx6PSExO2NvbnRpbnVlfXZhciBRZT1TZS5zdWJzdHJpbmcoVisxLENlKTt0cnl7UmVnRXhwKCJbIitRZSsiXSIpfWNhdGNo''@;'; put 'put ''KGN0KXt2YXIgJGU9dGhpcy5wYXJzZShRZSxrZSk7aGU9aGUuc3Vic3RyKDAsUCkrIlxcWyIrJGVbMF0rIlxcXSIsTz1PfHwkZVsxXSx4PSExO2NvbnRpbnVlfU89ITAseD0hMSxoZSs9eWU7Y29udGludWU7ZGVmYXVsdDpGKCksej96PSExOiFKW3llXXx8Il4iPT09eWUmJnh8fChoZSs9Ilxc''@;'; put 'put ''IiksaGUrPXllfWZvcih4JiYoUWU9U2Uuc3Vic3RyKFYrMSksJGU9dGhpcy5wYXJzZShRZSxrZSksaGU9aGUuc3Vic3RyKDAsUCkrIlxcWyIrJGVbMF0sTz1PfHwkZVsxXSksUGU9bmUucG9wKCk7UGU7UGU9bmUucG9wKCkpe3ZhciBndD1oZS5zbGljZShQZS5yZVN0YXJ0K1BlLm9wZW4ubGVu''@;'; put 'put ''Z3RoKTt0aGlzLmRlYnVnKCJzZXR0aW5nIHRhaWwiLGhlLFBlKSxndD1ndC5yZXBsYWNlKC8oKD86XFx7Mn0pezAsNjR9KShcXD8pXHwvZyxmdW5jdGlvbihjdCxOdCx6ZSl7cmV0dXJuIHplfHwoemU9IlxcIiksTnQrTnQremUrInwifSksdGhpcy5kZWJ1ZygidGFpbD0lalxuICAgJXMiLGd0''@;'; put 'put ''LGd0LFBlLGhlKTt2YXIgeXQ9IioiPT09UGUudHlwZT9xOiI/Ij09PVBlLnR5cGU/IlteL10iOiJcXCIrUGUudHlwZTtPPSEwLGhlPWhlLnNsaWNlKDAsUGUucmVTdGFydCkreXQrIlxcKCIrZ3R9RigpLHomJihoZSs9IlxcXFwiKTt2YXIgcHQ9ITE7c3dpdGNoKGhlLmNoYXJBdCgwKSl7Y2Fz''@;'; put 'put ''ZSJbIjpjYXNlIi4iOmNhc2UiKCI6cHQ9ITB9Zm9yKHZhciBtdD10ZS5sZW5ndGgtMTttdD4tMTttdC0tKXt2YXIgdnQ9dGVbbXRdLGZ0PWhlLnNsaWNlKDAsdnQucmVTdGFydCksRnQ9aGUuc2xpY2UodnQucmVTdGFydCx2dC5yZUVuZC04KSxvbj1oZS5zbGljZSh2dC5yZUVuZC04LHZ0LnJl''@;'; put 'put ''RW5kKSxfdD1oZS5zbGljZSh2dC5yZUVuZCk7b24rPV90O3ZhciBudD1mdC5zcGxpdCgiKCIpLmxlbmd0aC0xLHFlPV90O2ZvcihDZT0wO0NlPG50O0NlKyspcWU9cWUucmVwbGFjZSgvXClbKyo/XT8vLCIiKTt2YXIgb3Q9IiI7IiI9PT0oX3Q9cWUpJiZJZSE9PWtlJiYob3Q9IiQiKSxoZT1m''@;'; put 'put ''dCtGdCtfdCtvdCtvbn1pZigiIiE9PWhlJiZPJiYoaGU9Iig/PS4pIitoZSkscHQmJihoZT1UK2hlKSxJZT09PWtlKXJldHVybltoZSxPXTtpZighTylyZXR1cm4gU2UucmVwbGFjZSgvXFwoLikvZywiJDEiKTt2YXIgUnQ9VGUubm9jYXNlPyJpIjoiIjt0cnl7dmFyIEN0PW5ldyBSZWdFeHAo''@;'; put 'put ''Il4iK2hlKyIkIixSdCl9Y2F0Y2goY3Qpe3JldHVybiBuZXcgUmVnRXhwKCIkLiIpfXJldHVybiBDdC5fZ2xvYj1TZSxDdC5fc3JjPWhlLEN0fTt2YXIga2U9e307ZmUubWFrZVJlPWZ1bmN0aW9uKFNlLEllKXtyZXR1cm4gbmV3IGRlKFNlLEllfHx7fSkubWFrZVJlKCl9LGRlLnByb3RvdHlw''@;'; put 'put ''ZS5tYWtlUmU9ZnVuY3Rpb24oKXtpZih0aGlzLnJlZ2V4cHx8ITE9PT10aGlzLnJlZ2V4cClyZXR1cm4gdGhpcy5yZWdleHA7dmFyIFNlPXRoaXMuc2V0O2lmKCFTZS5sZW5ndGgpcmV0dXJuIHRoaXMucmVnZXhwPSExLHRoaXMucmVnZXhwO3ZhciBJZT10aGlzLm9wdGlvbnMsVGU9SWUubm9n''@;'; put 'put ''bG9ic3Rhcj9xOkllLmRvdD8iKD86KD8hKD86XFwvfF4pKD86XFwuezEsMn0pKCR8XFwvKSkuKSo/IjoiKD86KD8hKD86XFwvfF4pXFwuKS4pKj8iLEVlPUllLm5vY2FzZT8iaSI6IiIsaGU9U2UubWFwKGZ1bmN0aW9uKE8pe3JldHVybiBPLm1hcChmdW5jdGlvbih6KXtyZXR1cm4gej09PVk/''@;'; put 'put ''VGU6InN0cmluZyI9PXR5cGVvZiB6P3oucmVwbGFjZSgvWy1bXF17fSgpKis/LixcXF4kfCNcc10vZywiXFwkJiIpOnouX3NyY30pLmpvaW4oIlxcLyIpfSkuam9pbigifCIpO2hlPSJeKD86IitoZSsiKSQiLHRoaXMubmVnYXRlJiYoaGU9Il4oPyEiK2hlKyIpLiokIik7dHJ5e3RoaXMucmVn''@;'; put 'put ''ZXhwPW5ldyBSZWdFeHAoaGUsRWUpfWNhdGNoKE8pe3RoaXMucmVnZXhwPSExfXJldHVybiB0aGlzLnJlZ2V4cH0sZmUubWF0Y2g9ZnVuY3Rpb24oU2UsSWUsVGUpe3ZhciBFZT1uZXcgZGUoSWUsVGU9VGV8fHt9KTtyZXR1cm4gU2U9U2UuZmlsdGVyKGZ1bmN0aW9uKGhlKXtyZXR1cm4gRWUu''@;'; put 'put ''bWF0Y2goaGUpfSksRWUub3B0aW9ucy5ub251bGwmJiFTZS5sZW5ndGgmJlNlLnB1c2goSWUpLFNlfSxkZS5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oU2UsSWUpe2lmKHZvaWQgMD09PUllJiYoSWU9dGhpcy5wYXJ0aWFsKSx0aGlzLmRlYnVnKCJtYXRjaCIsU2UsdGhpcy5wYXR0ZXJuKSx0''@;'; put 'put ''aGlzLmNvbW1lbnQpcmV0dXJuITE7aWYodGhpcy5lbXB0eSlyZXR1cm4iIj09PVNlO2lmKCIvIj09PVNlJiZJZSlyZXR1cm4hMDt2YXIgVGU9dGhpcy5vcHRpb25zOyIvIiE9PWxlLnNlcCYmKFNlPVNlLnNwbGl0KGxlLnNlcCkuam9pbigiLyIpKSxTZT1TZS5zcGxpdChzZSksdGhpcy5kZWJ1''@;'; put 'put ''Zyh0aGlzLnBhdHRlcm4sInNwbGl0IixTZSk7dmFyIEVlLGhlLE89dGhpcy5zZXQ7Zm9yKHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLCJzZXQiLE8pLGhlPVNlLmxlbmd0aC0xO2hlPj0wJiYhKEVlPVNlW2hlXSk7aGUtLSk7Zm9yKGhlPTA7aGU8Ty5sZW5ndGg7aGUrKyl7dmFyIHo9T1toZV0s''@;'; put 'put ''bmU9U2U7aWYoVGUubWF0Y2hCYXNlJiYxPT09ei5sZW5ndGgmJihuZT1bRWVdKSx0aGlzLm1hdGNoT25lKG5lLHosSWUpKXJldHVybiEhVGUuZmxpcE5lZ2F0ZXx8IXRoaXMubmVnYXRlfXJldHVybiFUZS5mbGlwTmVnYXRlJiZ0aGlzLm5lZ2F0ZX0sZGUucHJvdG90eXBlLm1hdGNoT25lPWZ1''@;'; put 'put ''bmN0aW9uKFNlLEllLFRlKXt2YXIgRWU9dGhpcy5vcHRpb25zO3RoaXMuZGVidWcoIm1hdGNoT25lIix7dGhpczp0aGlzLGZpbGU6U2UscGF0dGVybjpJZX0pLHRoaXMuZGVidWcoIm1hdGNoT25lIixTZS5sZW5ndGgsSWUubGVuZ3RoKTtmb3IodmFyIGhlPTAsTz0wLHo9U2UubGVuZ3RoLG5l''@;'; put 'put ''PUllLmxlbmd0aDtoZTx6JiZPPG5lO2hlKyssTysrKXt0aGlzLmRlYnVnKCJtYXRjaE9uZSBsb29wIik7dmFyIHRlLHg9SWVbT10sUD1TZVtoZV07aWYodGhpcy5kZWJ1ZyhJZSx4LFApLCExPT09eClyZXR1cm4hMTtpZih4PT09WSl7dGhpcy5kZWJ1ZygiR0xPQlNUQVIiLFtJZSx4LFBdKTt2''@;'; put 'put ''YXIgVj1oZSxUPU8rMTtpZihUPT09bmUpe2Zvcih0aGlzLmRlYnVnKCIqKiBhdCB0aGUgZW5kIik7aGU8ejtoZSsrKWlmKCIuIj09PVNlW2hlXXx8Ii4uIj09PVNlW2hlXXx8IUVlLmRvdCYmIi4iPT09U2VbaGVdLmNoYXJBdCgwKSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IoO1Y8ejspe3ZhciBT''@;'; put 'put ''PVNlW1ZdO2lmKHRoaXMuZGVidWcoIlxuZ2xvYnN0YXIgd2hpbGUiLFNlLFYsSWUsVCxTKSx0aGlzLm1hdGNoT25lKFNlLnNsaWNlKFYpLEllLnNsaWNlKFQpLFRlKSlyZXR1cm4gdGhpcy5kZWJ1ZygiZ2xvYnN0YXIgZm91bmQgbWF0Y2ghIixWLHosUyksITA7aWYoIi4iPT09U3x8Ii4uIj09''@;'; put 'put ''PVN8fCFFZS5kb3QmJiIuIj09PVMuY2hhckF0KDApKXt0aGlzLmRlYnVnKCJkb3QgZGV0ZWN0ZWQhIixTZSxWLEllLFQpO2JyZWFrfXRoaXMuZGVidWcoImdsb2JzdGFyIHN3YWxsb3cgYSBzZWdtZW50LCBhbmQgY29udGludWUiKSxWKyt9cmV0dXJuISghVGV8fCh0aGlzLmRlYnVnKCJcbj4+''@;'; put 'put ''PiBubyBtYXRjaCwgcGFydGlhbD8iLFNlLFYsSWUsVCksViE9PXopKX1pZigic3RyaW5nIj09dHlwZW9mIHg/dGhpcy5kZWJ1Zygic3RyaW5nIG1hdGNoIix4LFAsdGU9UD09PXgpOih0ZT1QLm1hdGNoKHgpLHRoaXMuZGVidWcoInBhdHRlcm4gbWF0Y2giLHgsUCx0ZSkpLCF0ZSlyZXR1cm4h''@;'; put 'put ''MX1pZihoZT09PXomJk89PT1uZSlyZXR1cm4hMDtpZihoZT09PXopcmV0dXJuIFRlO2lmKE89PT1uZSlyZXR1cm4gaGU9PT16LTEmJiIiPT09U2VbaGVdO3Rocm93IG5ldyBFcnJvcigid3RmPyIpfX0sNDI0NDpVPT57InVzZSBzdHJpY3QiO3ZhciBRPWZ1bmN0aW9uKFope3JldHVybiBaIT1a''@;'; put 'put ''fTtVLmV4cG9ydHM9ZnVuY3Rpb24oWixpZSl7cmV0dXJuIDA9PT1aJiYwPT09aWU/MS9aPT0xL2llOlo9PT1pZXx8ISghUShaKXx8IVEoaWUpKX19LDYwOTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQyODkpLGxlPVooNTU1OSksWT1aKDQyNDQpLFc9Wig1NjI0KSxOPVooMjI4''@;'; put 'put ''MSksZWU9bGUoVygpLE9iamVjdCk7aWUoZWUse2dldFBvbHlmaWxsOlcsaW1wbGVtZW50YXRpb246WSxzaGltOk59KSxVLmV4cG9ydHM9ZWV9LDU2MjQ6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MjQ0KTtVLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczppZX19LDIyODE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig1NjI0KSxsZT1aKDQyODkpO1UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBZPWllKCk7cmV0dXJuIGxlKE9iamVjdCx7aXM6WX0se2lzOmZ1bmN0aW9uKCl7cmV0dXJuIE9i''@;'; put 'put ''amVjdC5pcyE9PVl9fSksWX19LDg5ODc6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU7aWYoIU9iamVjdC5rZXlzKXt2YXIgbGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxZPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsVz1aKDE0MTQpLE49T2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxlZT0hTi5jYWxsKHt0b1N0cmluZzpudWxsfSwidG9TdHJpbmciKSxxPU4uY2FsbChmdW5jdGlvbigpe30sInByb3RvdHlwZSIpLEo9WyJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5''@;'; put 'put ''cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiXSxzZT1mdW5jdGlvbihkZSl7dmFyIHZlPWRlLmNvbnN0cnVjdG9yO3JldHVybiB2ZSYmdmUucHJvdG90eXBlPT09ZGV9LGFlPXskYXBwbGljYXRpb25DYWNoZTohMCwkY29uc29sZTohMCwkZXh0ZXJuYWw6ITAsJGZy''@;'; put 'put ''YW1lOiEwLCRmcmFtZUVsZW1lbnQ6ITAsJGZyYW1lczohMCwkaW5uZXJIZWlnaHQ6ITAsJGlubmVyV2lkdGg6ITAsJG9ubW96ZnVsbHNjcmVlbmNoYW5nZTohMCwkb25tb3pmdWxsc2NyZWVuZXJyb3I6ITAsJG91dGVySGVpZ2h0OiEwLCRvdXRlcldpZHRoOiEwLCRwYWdlWE9mZnNldDohMCwk''@;'; put 'put ''cGFnZVlPZmZzZXQ6ITAsJHBhcmVudDohMCwkc2Nyb2xsTGVmdDohMCwkc2Nyb2xsVG9wOiEwLCRzY3JvbGxYOiEwLCRzY3JvbGxZOiEwLCRzZWxmOiEwLCR3ZWJraXRJbmRleGVkREI6ITAsJHdlYmtpdFN0b3JhZ2VJbmZvOiEwLCR3aW5kb3c6ITB9LGZlPWZ1bmN0aW9uKCl7aWYoInVuZGVm''@;'; put 'put ''aW5lZCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuITE7Zm9yKHZhciBkZSBpbiB3aW5kb3cpdHJ5e2lmKCFhZVsiJCIrZGVdJiZsZS5jYWxsKHdpbmRvdyxkZSkmJm51bGwhPT13aW5kb3dbZGVdJiYib2JqZWN0Ij09dHlwZW9mIHdpbmRvd1tkZV0pdHJ5e3NlKHdpbmRvd1tkZV0pfWNhdGNoKHZl''@;'; put 'put ''KXtyZXR1cm4hMH19Y2F0Y2godmUpe3JldHVybiEwfXJldHVybiExfSgpO2llPWZ1bmN0aW9uKGRlKXt2YXIgdmU9bnVsbCE9PWRlJiYib2JqZWN0Ij09dHlwZW9mIGRlLEFlPSJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1ZLmNhbGwoZGUpLGtlPVcoZGUpLFNlPXZlJiYiW29iamVjdCBTdHJpbmdd''@;'; put 'put ''Ij09PVkuY2FsbChkZSksSWU9W107aWYoIXZlJiYhQWUmJiFrZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIFRlPXEmJkFlO2lmKFNlJiZkZS5sZW5ndGg+MCYmIWxlLmNhbGwoZGUsMCkpZm9yKHZhciBFZT0wO0VlPGRlLmxl''@;'; put 'put ''bmd0aDsrK0VlKUllLnB1c2goU3RyaW5nKEVlKSk7aWYoa2UmJmRlLmxlbmd0aD4wKWZvcih2YXIgaGU9MDtoZTxkZS5sZW5ndGg7KytoZSlJZS5wdXNoKFN0cmluZyhoZSkpO2Vsc2UgZm9yKHZhciBPIGluIGRlKVRlJiYicHJvdG90eXBlIj09PU98fCFsZS5jYWxsKGRlLE8pfHxJZS5wdXNo''@;'; put 'put ''KFN0cmluZyhPKSk7aWYoZWUpZm9yKHZhciB6PWZ1bmN0aW9uKHRlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IWZlKXJldHVybiBzZSh0ZSk7dHJ5e3JldHVybiBzZSh0ZSl9Y2F0Y2goeCl7cmV0dXJuITF9fShkZSksbmU9MDtuZTxKLmxlbmd0aDsrK25lKXomJiJjb25zdHJ1''@;'; put 'put ''Y3RvciI9PT1KW25lXXx8IWxlLmNhbGwoZGUsSltuZV0pfHxJZS5wdXNoKEpbbmVdKTtyZXR1cm4gSWV9fVUuZXhwb3J0cz1pZX0sMjIxNTooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1BcnJheS5wcm90b3R5cGUuc2xpY2UsbGU9WigxNDE0KSxZPU9iamVjdC5rZXlzLFc9WT9mdW5j''@;'; put 'put ''dGlvbihlZSl7cmV0dXJuIFkoZWUpfTpaKDg5ODcpLE49T2JqZWN0LmtleXM7Vy5zaGltPWZ1bmN0aW9uKCl7aWYoT2JqZWN0LmtleXMpe3ZhciBlZT1mdW5jdGlvbigpe3ZhciBxPU9iamVjdC5rZXlzKGFyZ3VtZW50cyk7cmV0dXJuIHEmJnEubGVuZ3RoPT09YXJndW1lbnRzLmxlbmd0aH0o''@;'; put 'put ''MSwyKTtlZXx8KE9iamVjdC5rZXlzPWZ1bmN0aW9uKHEpe3JldHVybiBsZShxKT9OKGllLmNhbGwocSkpOk4ocSl9KX1lbHNlIE9iamVjdC5rZXlzPVc7cmV0dXJuIE9iamVjdC5rZXlzfHxXfSxVLmV4cG9ydHM9V30sMTQxNDpVPT57InVzZSBzdHJpY3QiO3ZhciBRPU9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUudG9TdHJpbmc7VS5leHBvcnRzPWZ1bmN0aW9uKFope3ZhciBpZT1RLmNhbGwoWiksbGU9IltvYmplY3QgQXJndW1lbnRzXSI9PT1pZTtyZXR1cm4gbGV8fChsZT0iW29iamVjdCBBcnJheV0iIT09aWUmJm51bGwhPT1aJiYib2JqZWN0Ij09dHlwZW9mIFomJiJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''Wi5sZW5ndGgmJloubGVuZ3RoPj0wJiYiW29iamVjdCBGdW5jdGlvbl0iPT09US5jYWxsKFouY2FsbGVlKSksbGV9fSw3Nzg6KFUsUSxaKT0+e3ZhciBpZT1aKDI0NzkpO2Z1bmN0aW9uIGxlKFcpe3ZhciBOPWZ1bmN0aW9uKCl7cmV0dXJuIE4uY2FsbGVkP04udmFsdWU6KE4uY2FsbGVkPSEw''@;'; put 'put ''LE4udmFsdWU9Vy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfTtyZXR1cm4gTi5jYWxsZWQ9ITEsTn1mdW5jdGlvbiBZKFcpe3ZhciBOPWZ1bmN0aW9uKCl7aWYoTi5jYWxsZWQpdGhyb3cgbmV3IEVycm9yKE4ub25jZUVycm9yKTtyZXR1cm4gTi5jYWxsZWQ9ITAsTi52YWx1ZT1XLmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKX07cmV0dXJuIE4ub25jZUVycm9yPShXLm5hbWV8fCJGdW5jdGlvbiB3cmFwcGVkIHdpdGggYG9uY2VgIikrIiBzaG91bGRuJ3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIixOLmNhbGxlZD0hMSxOfVUuZXhwb3J0cz1pZShsZSksVS5leHBvcnRzLnN0cmljdD1pZShZ''@;'; put 'put ''KSxsZS5wcm90bz1sZShmdW5jdGlvbigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsIm9uY2UiLHt2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlw''@;'; put 'put ''ZSwib25jZVN0cmljdCIse3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9LDc0MzU6KFUsUSk9PntRLmVuZGlhbm5lc3M9ZnVuY3Rpb24oKXtyZXR1cm4iTEUifSxRLmhvc3RuYW1lPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiBsb2NhdGlvbj9sb2NhdGlvbi5ob3N0bmFtZToiIn0sUS5sb2FkYXZnPWZ1bmN0aW9uKCl7cmV0dXJuW119LFEudXB0aW1lPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LFEuZnJlZW1lbT1mdW5jdGlvbigpe3JldHVybiBOdW1iZXIuTUFYX1ZBTFVFfSxRLnRvdGFsbWVtPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIE51bWJlci5NQVhfVkFMVUV9LFEuY3B1cz1mdW5jdGlvbigpe3JldHVybltdfSxRLnR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4iQnJvd3NlciJ9LFEucmVsZWFzZT1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5hcHBWZXJzaW9uOiIi''@;'; put 'put ''fSxRLm5ldHdvcmtJbnRlcmZhY2VzPVEuZ2V0TmV0d29ya0ludGVyZmFjZXM9ZnVuY3Rpb24oKXtyZXR1cm57fX0sUS5hcmNoPWZ1bmN0aW9uKCl7cmV0dXJuImphdmFzY3JpcHQifSxRLnBsYXRmb3JtPWZ1bmN0aW9uKCl7cmV0dXJuImJyb3dzZXIifSxRLnRtcGRpcj1RLnRtcERpcj1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiIvdG1wIn0sUS5FT0w9IlxuIixRLmhvbWVkaXI9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9fSwyODE4OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooOTgwOSk7US5jZXJ0aWZpY2F0ZT1aKDE5MzQpO3ZhciBsZT1pZS5kZWZpbmUoIlJTQVByaXZhdGVLZXkiLGZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgibW9kdWx1cyIpLmludCgpLHRoaXMua2V5KCJwdWJsaWNFeHBvbmVudCIpLmludCgpLHRoaXMua2V5KCJwcml2YXRlRXhwb25lbnQiKS5pbnQoKSx0aGlzLmtleSgicHJpbWUxIikuaW50''@;'; put 'put ''KCksdGhpcy5rZXkoInByaW1lMiIpLmludCgpLHRoaXMua2V5KCJleHBvbmVudDEiKS5pbnQoKSx0aGlzLmtleSgiZXhwb25lbnQyIikuaW50KCksdGhpcy5rZXkoImNvZWZmaWNpZW50IikuaW50KCkpfSk7US5SU0FQcml2YXRlS2V5PWxlO3ZhciBZPWllLmRlZmluZSgiUlNBUHVibGljS2V5''@;'; put 'put ''IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCkpfSk7US5SU0FQdWJsaWNLZXk9WTt2YXIgVz1pZS5kZWZpbmUoIlN1YmplY3RQdWJsaWNLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2Vx''@;'; put 'put ''KCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2UoTiksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXkiKS5iaXRzdHIoKSl9KTtRLlB1YmxpY0tleT1XO3ZhciBOPWllLmRlZmluZSgiQWxnb3JpdGhtSWRlbnRpZmllciIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgi''@;'; put 'put ''YWxnb3JpdGhtIikub2JqaWQoKSx0aGlzLmtleSgibm9uZSIpLm51bGxfKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoInBhcmFtcyIpLnNlcSgpLm9iaih0aGlzLmtleSgicCIpLmludCgpLHRoaXMua2V5KCJxIikuaW50KCksdGhp''@;'; put 'put ''cy5rZXkoImciKS5pbnQoKSkub3B0aW9uYWwoKSl9KSxlZT1pZS5kZWZpbmUoIlByaXZhdGVLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShOKSx0aGlzLmtleSgic3ViamVjdFByaXZh''@;'; put 'put ''dGVLZXkiKS5vY3RzdHIoKSl9KTtRLlByaXZhdGVLZXk9ZWU7dmFyIHE9aWUuZGVmaW5lKCJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikuc2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5r''@;'; put 'put ''ZXkoImRlY3J5cHQiKS5zZXEoKS5vYmoodGhpcy5rZXkoImtkZSIpLnNlcSgpLm9iaih0aGlzLmtleSgiaWQiKS5vYmppZCgpLHRoaXMua2V5KCJrZGVwYXJhbXMiKS5zZXEoKS5vYmoodGhpcy5rZXkoInNhbHQiKS5vY3RzdHIoKSx0aGlzLmtleSgiaXRlcnMiKS5pbnQoKSkpLHRoaXMua2V5''@;'; put 'put ''KCJjaXBoZXIiKS5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ28iKS5vYmppZCgpLHRoaXMua2V5KCJpdiIpLm9jdHN0cigpKSkpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO1EuRW5jcnlwdGVkUHJpdmF0ZUtleT1xO3ZhciBKPWllLmRlZmluZSgiRFNBUHJpdmF0''@;'; put 'put ''ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwIikuaW50KCksdGhpcy5rZXkoInEiKS5pbnQoKSx0aGlzLmtleSgiZyIpLmludCgpLHRoaXMua2V5KCJwdWJfa2V5IikuaW50KCksdGhpcy5rZXkoInByaXZfa2V5Iiku''@;'; put 'put ''aW50KCkpfSk7US5EU0FQcml2YXRlS2V5PUosUS5EU0FwYXJhbT1pZS5kZWZpbmUoIkRTQXBhcmFtIixmdW5jdGlvbigpe3RoaXMuaW50KCl9KTt2YXIgc2U9aWUuZGVmaW5lKCJFQ1ByaXZhdGVLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQo''@;'; put 'put ''KSx0aGlzLmtleSgicHJpdmF0ZUtleSIpLm9jdHN0cigpLHRoaXMua2V5KCJwYXJhbWV0ZXJzIikub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UoYWUpLHRoaXMua2V5KCJwdWJsaWNLZXkiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpKX0pO1EuRUNQcml2YXRlS2V5PXNlO3Zh''@;'; put 'put ''ciBhZT1pZS5kZWZpbmUoIkVDUGFyYW1ldGVycyIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7bmFtZWRDdXJ2ZTp0aGlzLm9iamlkKCl9KX0pO1Euc2lnbmF0dXJlPWllLmRlZmluZSgic2lnbmF0dXJlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJyIikuaW50KCksdGhp''@;'; put 'put ''cy5rZXkoInMiKS5pbnQoKSl9KX0sMTkzNDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDk4MDkpLGxlPWllLmRlZmluZSgiVGltZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7dXRjVGltZTp0aGlzLnV0Y3RpbWUoKSxnZW5lcmFsVGltZTp0aGlzLmdlbnRpbWUoKX0pfSksWT1p''@;'; put 'put ''ZS5kZWZpbmUoIkF0dHJpYnV0ZVR5cGVWYWx1ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidHlwZSIpLm9iamlkKCksdGhpcy5rZXkoInZhbHVlIikuYW55KCkpfSksVz1pZS5kZWZpbmUoIkFsZ29yaXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5v''@;'; put 'put ''YmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwoKSl9KSxOPWllLmRlZmluZSgiU3ViamVjdFB1YmxpY0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5v''@;'; put 'put ''YmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShXKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pLGVlPWllLmRlZmluZSgiUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSIsZnVuY3Rpb24oKXt0aGlzLnNldG9mKFkpfSkscT1pZS5kZWZpbmUoIlJETlNlcXVlbmNl''@;'; put 'put ''IixmdW5jdGlvbigpe3RoaXMuc2Vxb2YoZWUpfSksSj1pZS5kZWZpbmUoIk5hbWUiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe3JkblNlcXVlbmNlOnRoaXMudXNlKHEpfSl9KSxzZT1pZS5kZWZpbmUoIlZhbGlkaXR5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJub3RC''@;'; put 'put ''ZWZvcmUiKS51c2UobGUpLHRoaXMua2V5KCJub3RBZnRlciIpLnVzZShsZSkpfSksYWU9aWUuZGVmaW5lKCJFeHRlbnNpb24iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImV4dG5JRCIpLm9iamlkKCksdGhpcy5rZXkoImNyaXRpY2FsIikuYm9vbCgpLmRlZighMSksdGhp''@;'; put 'put ''cy5rZXkoImV4dG5WYWx1ZSIpLm9jdHN0cigpKX0pLGZlPWllLmRlZmluZSgiVEJTQ2VydGlmaWNhdGUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJzZXJpYWxOdW1iZXIiKS5pbnQo''@;'; put 'put ''KSx0aGlzLmtleSgic2lnbmF0dXJlIikudXNlKFcpLHRoaXMua2V5KCJpc3N1ZXIiKS51c2UoSiksdGhpcy5rZXkoInZhbGlkaXR5IikudXNlKHNlKSx0aGlzLmtleSgic3ViamVjdCIpLnVzZShKKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleUluZm8iKS51c2UoTiksdGhpcy5rZXkoImlz''@;'; put 'put ''c3VlclVuaXF1ZUlEIikuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgic3ViamVjdFVuaXF1ZUlEIikuaW1wbGljaXQoMikuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiZXh0ZW5zaW9ucyIpLmV4cGxpY2l0KDMpLnNlcW9mKGFlKS5vcHRpb25hbCgpKX0p''@;'; put 'put ''LGRlPWllLmRlZmluZSgiWDUwOUNlcnRpZmljYXRlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0YnNDZXJ0aWZpY2F0ZSIpLnVzZShmZSksdGhpcy5rZXkoInNpZ25hdHVyZUFsZ29yaXRobSIpLnVzZShXKSx0aGlzLmtleSgic2lnbmF0dXJlVmFsdWUiKS5iaXRzdHIo''@;'; put 'put ''KSl9KTtVLmV4cG9ydHM9ZGV9LDc2MzE6KFUsUSxaKT0+e3ZhciBpZT0vUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFtcblxyXStERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspW1xuXHJdKyhbMC05QS16XG5ccisvPV0rKVtcblxyXSsvbSxsZT0v''@;'; put 'put ''Xi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL20sWT0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcblxyKy89XSspLS0tLS1FTkQgXDEtLS0tLSQvbSxXPVooMzA0OCksTj1aKDQ2OTYpLGVlPVooOTUwOSkuQnVmZmVy''@;'; put 'put ''O1UuZXhwb3J0cz1mdW5jdGlvbihxLEope3ZhciBzZSxhZT1xLnRvU3RyaW5nKCksZmU9YWUubWF0Y2goaWUpO2lmKGZlKXt2YXIgZGU9ImFlcyIrZmVbMV0sdmU9ZWUuZnJvbShmZVsyXSwiaGV4IiksQWU9ZWUuZnJvbShmZVszXS5yZXBsYWNlKC9bXHJcbl0vZywiIiksImJhc2U2NCIpLGtl''@;'; put 'put ''PVcoSix2ZS5zbGljZSgwLDgpLHBhcnNlSW50KGZlWzFdLDEwKSkua2V5LFNlPVtdLEllPU4uY3JlYXRlRGVjaXBoZXJpdihkZSxrZSx2ZSk7U2UucHVzaChJZS51cGRhdGUoQWUpKSxTZS5wdXNoKEllLmZpbmFsKCkpLHNlPWVlLmNvbmNhdChTZSl9ZWxzZXt2YXIgVGU9YWUubWF0Y2goWSk7''@;'; put 'put ''c2U9ZWUuZnJvbShUZVsyXS5yZXBsYWNlKC9bXHJcbl0vZywiIiksImJhc2U2NCIpfXJldHVybnt0YWc6YWUubWF0Y2gobGUpWzFdLGRhdGE6c2V9fX0sOTgwOihVLFEsWik9Pnt2YXIgaWU9WigyODE4KSxsZT1aKDI1NjIpLFk9Wig3NjMxKSxXPVooNDY5NiksTj1aKDU2MzIpLGVlPVooOTUw''@;'; put 'put ''OSkuQnVmZmVyO2Z1bmN0aW9uIHEoSil7dmFyIHNlOyJvYmplY3QiIT10eXBlb2YgSnx8ZWUuaXNCdWZmZXIoSil8fChzZT1KLnBhc3NwaHJhc2UsSj1KLmtleSksInN0cmluZyI9PXR5cGVvZiBKJiYoSj1lZS5mcm9tKEopKTt2YXIgYWUsZmUsa2UsU2UsSWUsVGUsRWUsaGUsTyx6LG5lLHRl''@;'; put 'put ''LHgsZGU9WShKLHNlKSx2ZT1kZS50YWcsQWU9ZGUuZGF0YTtzd2l0Y2godmUpe2Nhc2UiQ0VSVElGSUNBVEUiOmZlPWllLmNlcnRpZmljYXRlLmRlY29kZShBZSwiZGVyIikudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm87Y2FzZSJQVUJMSUMgS0VZIjpzd2l0Y2goZmV8fChm''@;'; put 'put ''ZT1pZS5QdWJsaWNLZXkuZGVjb2RlKEFlLCJkZXIiKSksYWU9ZmUuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCIuIikpe2Nhc2UiMS4yLjg0MC4xMTM1NDkuMS4xLjEiOnJldHVybiBpZS5SU0FQdWJsaWNLZXkuZGVjb2RlKGZlLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIik7Y2FzZSIx''@;'; put 'put ''LjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJuIGZlLnN1YmplY3RQcml2YXRlS2V5PWZlLnN1YmplY3RQdWJsaWNLZXkse3R5cGU6ImVjIixkYXRhOmZlfTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gZmUuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PWllLkRTQXBhcmFtLmRlY29kZShm''@;'; put 'put ''ZS5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpLHt0eXBlOiJkc2EiLGRhdGE6ZmUuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24ga2V5IGlkICIrYWUpfWNhc2UiRU5DUllQVEVEIFBSSVZBVEUgS0VZIjpTZT1zZSxJZT0oa2U9QWU9aWUuRW5j''@;'; put 'put ''cnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoQWUsImRlciIpKS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHQsVGU9cGFyc2VJbnQoa2UuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLDEwKSxFZT1sZVtrZS5hbGdvcml0aG0uZGVjcnlw''@;'; put 'put ''dC5jaXBoZXIuYWxnby5qb2luKCIuIildLGhlPWtlLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdixPPWtlLnN1YmplY3RQcml2YXRlS2V5LHo9cGFyc2VJbnQoRWUuc3BsaXQoIi0iKVsxXSwxMCkvOCxuZT1OLnBia2RmMlN5bmMoU2UsSWUsVGUseiwic2hhMSIpLHRlPVcuY3JlYXRlRGVj''@;'; put 'put ''aXBoZXJpdihFZSxuZSxoZSksKHg9W10pLnB1c2godGUudXBkYXRlKE8pKSx4LnB1c2godGUuZmluYWwoKSksQWU9ZWUuY29uY2F0KHgpO2Nhc2UiUFJJVkFURSBLRVkiOnN3aXRjaChhZT0oZmU9aWUuUHJpdmF0ZUtleS5kZWNvZGUoQWUsImRlciIpKS5hbGdvcml0aG0uYWxnb3JpdGhtLmpv''@;'; put 'put ''aW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4xLjEuMSI6cmV0dXJuIGllLlJTQVByaXZhdGVLZXkuZGVjb2RlKGZlLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKTtjYXNlIjEuMi44NDAuMTAwNDUuMi4xIjpyZXR1cm57Y3VydmU6ZmUuYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6aWUu''@;'; put 'put ''RUNQcml2YXRlS2V5LmRlY29kZShmZS5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIikucHJpdmF0ZUtleX07Y2FzZSIxLjIuODQwLjEwMDQwLjQuMSI6cmV0dXJuIGZlLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXk9aWUuRFNBcGFyYW0uZGVjb2RlKGZlLnN1YmplY3RQcml2YXRlS2V5LCJkZXIi''@;'; put 'put ''KSx7dHlwZToiZHNhIixwYXJhbXM6ZmUuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24ga2V5IGlkICIrYWUpfWNhc2UiUlNBIFBVQkxJQyBLRVkiOnJldHVybiBpZS5SU0FQdWJsaWNLZXkuZGVjb2RlKEFlLCJkZXIiKTtjYXNlIlJTQSBQUklWQVRF''@;'; put 'put ''IEtFWSI6cmV0dXJuIGllLlJTQVByaXZhdGVLZXkuZGVjb2RlKEFlLCJkZXIiKTtjYXNlIkRTQSBQUklWQVRFIEtFWSI6cmV0dXJue3R5cGU6ImRzYSIscGFyYW1zOmllLkRTQVByaXZhdGVLZXkuZGVjb2RlKEFlLCJkZXIiKX07Y2FzZSJFQyBQUklWQVRFIEtFWSI6cmV0dXJue2N1cnZlOihB''@;'; put 'put ''ZT1pZS5FQ1ByaXZhdGVLZXkuZGVjb2RlKEFlLCJkZXIiKSkucGFyYW1ldGVycy52YWx1ZSxwcml2YXRlS2V5OkFlLnByaXZhdGVLZXl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGtleSB0eXBlICIrdmUpfX1VLmV4cG9ydHM9cSxxLnNpZ25hdHVyZT1pZS5zaWduYXR1cmV9''@;'; put 'put ''LDQwOTU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KTtmdW5jdGlvbiBsZShXKXtyZXR1cm4iLyI9PT1XLmNoYXJBdCgwKX1mdW5jdGlvbiBZKFcpe3ZhciBOPS9eKFthLXpBLVpdOnxbXFxcL117Mn1bXlxcXC9dK1tcXFwvXStbXlxcXC9dKyk/KFtcXFwvXSk/KFtcc1xT''@;'; put 'put ''XSo/KSQvLmV4ZWMoVyksZWU9TlsxXXx8IiIscT1Cb29sZWFuKGVlJiYiOiIhPT1lZS5jaGFyQXQoMSkpO3JldHVybiBCb29sZWFuKE5bMl18fHEpfVUuZXhwb3J0cz0id2luMzIiPT09aWUucGxhdGZvcm0/WTpsZSxVLmV4cG9ydHMucG9zaXg9bGUsVS5leHBvcnRzLndpbjMyPVl9LDE3MjU6''@;'; put 'put ''VT0+e1UuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihRLFope1Euc3VwZXJfPVosUS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShaLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlEsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITB9fSl9OmZ1bmN0aW9uKFEsWil7US5zdXBlcl89Wjt2YXIgaWU9ZnVuY3Rpb24oKXt9O2llLnByb3RvdHlwZT1aLnByb3RvdHlwZSxRLnByb3RvdHlwZT1uZXcgaWUsUS5wcm90b3R5cGUuY29uc3RydWN0b3I9UX19LDI5NzQ6VT0+e1UuZXhwb3J0cz1mdW5jdGlvbihRKXtyZXR1''@;'; put 'put ''cm4gUSYmIm9iamVjdCI9PXR5cGVvZiBRJiYiZnVuY3Rpb24iPT10eXBlb2YgUS5jb3B5JiYiZnVuY3Rpb24iPT10eXBlb2YgUS5maWxsJiYiZnVuY3Rpb24iPT10eXBlb2YgUS5yZWFkVUludDh9fSw4MDU5OihVLFEsWik9Pnt2YXIgaWU9Wig0MTU1KSxsZT1aKDUxMDgpLFk9LyVbc2RqJV0v''@;'; put 'put ''ZztRLmZvcm1hdD1mdW5jdGlvbihUKXtpZighU2UoVCkpe2Zvcih2YXIgUz1bXSxGPTA7Rjxhcmd1bWVudHMubGVuZ3RoO0YrKylTLnB1c2goZWUoYXJndW1lbnRzW0ZdKSk7cmV0dXJuIFMuam9pbigiICIpfUY9MTtmb3IodmFyIHllPWFyZ3VtZW50cyxDZT15ZS5sZW5ndGgsRGU9U3RyaW5n''@;'; put 'put ''KFQpLnJlcGxhY2UoWSxmdW5jdGlvbihRZSl7aWYoIiUlIj09PVFlKXJldHVybiIlIjtpZihGPj1DZSlyZXR1cm4gUWU7c3dpdGNoKFFlKXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKHllW0YrK10pO2Nhc2UiJWQiOnJldHVybiBOdW1iZXIoeWVbRisrXSk7Y2FzZSIlaiI6dHJ5e3JldHVybiBK''@;'; put 'put ''U09OLnN0cmluZ2lmeSh5ZVtGKytdKX1jYXRjaCgkZSl7cmV0dXJuIltDaXJjdWxhcl0ifWRlZmF1bHQ6cmV0dXJuIFFlfX0pLFBlPXllW0ZdO0Y8Q2U7UGU9eWVbKytGXSlBZShQZSl8fCFFZShQZSk/RGUrPSIgIitQZTpEZSs9IiAiK2VlKFBlKTtyZXR1cm4gRGV9LFEuZGVwcmVjYXRlPWZ1''@;'; put 'put ''bmN0aW9uKFQsUyl7aWYoSWUoWi5nLnByb2Nlc3MpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBRLmRlcHJlY2F0ZShULFMpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07aWYoITA9PT1pZS5ub0RlcHJlY2F0aW9uKXJldHVybiBUO3ZhciBGPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFGKXtp''@;'; put 'put ''ZihpZS50aHJvd0RlcHJlY2F0aW9uKXRocm93IG5ldyBFcnJvcihTKTtpZS50cmFjZURlcHJlY2F0aW9uP2xlLnRyYWNlKFMpOmxlLmVycm9yKFMpLEY9ITB9cmV0dXJuIFQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07dmFyIFcsTj17fTtmdW5jdGlvbiBlZShULFMpe3ZhciBGPXtzZWVuOltd''@;'; put 'put ''LHN0eWxpemU6Sn07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTMmJihGLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD49NCYmKEYuY29sb3JzPWFyZ3VtZW50c1szXSksdmUoUyk/Ri5zaG93SGlkZGVuPVM6UyYmUS5fZXh0ZW5kKEYsUyksSWUoRi5zaG93SGlkZGVuKSYm''@;'; put 'put ''KEYuc2hvd0hpZGRlbj0hMSksSWUoRi5kZXB0aCkmJihGLmRlcHRoPTIpLEllKEYuY29sb3JzKSYmKEYuY29sb3JzPSExKSxJZShGLmN1c3RvbUluc3BlY3QpJiYoRi5jdXN0b21JbnNwZWN0PSEwKSxGLmNvbG9ycyYmKEYuc3R5bGl6ZT1xKSxzZShGLFQsRi5kZXB0aCl9ZnVuY3Rpb24gcShU''@;'; put 'put ''LFMpe3ZhciBGPWVlLnN0eWxlc1tTXTtyZXR1cm4gRj8iXHgxYlsiK2VlLmNvbG9yc1tGXVswXSsibSIrVCsiXHgxYlsiK2VlLmNvbG9yc1tGXVsxXSsibSI6VH1mdW5jdGlvbiBKKFQsUyl7cmV0dXJuIFR9ZnVuY3Rpb24gc2UoVCxTLEYpe2lmKFQuY3VzdG9tSW5zcGVjdCYmUyYmeihTLmlu''@;'; put 'put ''c3BlY3QpJiZTLmluc3BlY3QhPT1RLmluc3BlY3QmJighUy5jb25zdHJ1Y3Rvcnx8Uy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1TKSl7dmFyIHllPVMuaW5zcGVjdChGLFQpO3JldHVybiBTZSh5ZSl8fCh5ZT1zZShULHllLEYpKSx5ZX12YXIgQ2U9ZnVuY3Rpb24obXQsdnQpe2lmKEllKHZ0''@;'; put 'put ''KSlyZXR1cm4gbXQuc3R5bGl6ZSgidW5kZWZpbmVkIiwidW5kZWZpbmVkIik7aWYoU2UodnQpKXt2YXIgZnQ9IiciK0pTT04uc3RyaW5naWZ5KHZ0KS5yZXBsYWNlKC9eInwiJC9nLCIiKS5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykrIiciO3JldHVybiBtdC5zdHls''@;'; put 'put ''aXplKGZ0LCJzdHJpbmciKX1yZXR1cm4ga2UodnQpP210LnN0eWxpemUoIiIrdnQsIm51bWJlciIpOnZlKHZ0KT9tdC5zdHlsaXplKCIiK3Z0LCJib29sZWFuIik6QWUodnQpP210LnN0eWxpemUoIm51bGwiLCJudWxsIik6dm9pZCAwfShULFMpO2lmKENlKXJldHVybiBDZTt2YXIgdnQsRGU9''@;'; put 'put ''T2JqZWN0LmtleXMoUyksUGU9KHZ0PXt9LERlLmZvckVhY2goZnVuY3Rpb24oZnQsRnQpe3Z0W2Z0XT0hMH0pLHZ0KTtpZihULnNob3dIaWRkZW4mJihEZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTKSksTyhTKSYmKERlLmluZGV4T2YoIm1lc3NhZ2UiKT49MHx8RGUuaW5kZXhPZigi''@;'; put 'put ''ZGVzY3JpcHRpb24iKT49MCkpcmV0dXJuIGFlKFMpO2lmKDA9PT1EZS5sZW5ndGgpe2lmKHooUykpcmV0dXJuIFQuc3R5bGl6ZSgiW0Z1bmN0aW9uIisoUy5uYW1lPyI6ICIrUy5uYW1lOiIiKSsiXSIsInNwZWNpYWwiKTtpZihUZShTKSlyZXR1cm4gVC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5''@;'; put 'put ''cGUudG9TdHJpbmcuY2FsbChTKSwicmVnZXhwIik7aWYoaGUoUykpcmV0dXJuIFQuc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFMpLCJkYXRlIik7aWYoTyhTKSlyZXR1cm4gYWUoUyl9dmFyICRlLGd0PSIiLHl0PSExLHB0PVsieyIsIn0iXTtyZXR1cm4gZGUoUykmJih5''@;'; put 'put ''dD0hMCxwdD1bIlsiLCJdIl0pLHooUykmJihndD0iIFtGdW5jdGlvbiIrKFMubmFtZT8iOiAiK1MubmFtZToiIikrIl0iKSxUZShTKSYmKGd0PSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUykpLGhlKFMpJiYoZ3Q9IiAiK0RhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNh''@;'; put 'put ''bGwoUykpLE8oUykmJihndD0iICIrYWUoUykpLDAhPT1EZS5sZW5ndGh8fHl0JiYwIT1TLmxlbmd0aD9GPDA/VGUoUyk/VC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChTKSwicmVnZXhwIik6VC5zdHlsaXplKCJbT2JqZWN0XSIsInNwZWNpYWwiKTooVC5zZWVuLnB1''@;'; put 'put ''c2goUyksJGU9eXQ/ZnVuY3Rpb24obXQsdnQsZnQsRnQsb24pe2Zvcih2YXIgX3Q9W10sbnQ9MCxxZT12dC5sZW5ndGg7bnQ8cWU7KytudClWKHZ0LFN0cmluZyhudCkpP190LnB1c2goZmUobXQsdnQsZnQsRnQsU3RyaW5nKG50KSwhMCkpOl90LnB1c2goIiIpO3JldHVybiBvbi5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKG90KXtvdC5tYXRjaCgvXlxkKyQvKXx8X3QucHVzaChmZShtdCx2dCxmdCxGdCxvdCwhMCkpfSksX3R9KFQsUyxGLFBlLERlKTpEZS5tYXAoZnVuY3Rpb24obXQpe3JldHVybiBmZShULFMsRixQZSxtdCx5dCl9KSxULnNlZW4ucG9wKCksZnVuY3Rpb24obXQsdnQsZnQpe3Jl''@;'; put 'put ''dHVybiBtdC5yZWR1Y2UoZnVuY3Rpb24oRnQsb24pe3JldHVybiBvbi5pbmRleE9mKCJcbiIpLEZ0K29uLnJlcGxhY2UoL1x1MDAxYlxbXGRcZD9tL2csIiIpLmxlbmd0aCsxfSwwKT42MD9mdFswXSsoIiI9PT12dD8iIjp2dCsiXG4gIikrIiAiK210LmpvaW4oIixcbiAgIikrIiAiK2Z0WzFd''@;'; put 'put ''OmZ0WzBdK3Z0KyIgIittdC5qb2luKCIsICIpKyIgIitmdFsxXX0oJGUsZ3QscHQpKTpwdFswXStndCtwdFsxXX1mdW5jdGlvbiBhZShUKXtyZXR1cm4iWyIrRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoVCkrIl0ifWZ1bmN0aW9uIGZlKFQsUyxGLHllLENlLERlKXt2YXIgUGUsUWUs''@;'; put 'put ''JGU7aWYoKCRlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUyxDZSl8fHt2YWx1ZTpTW0NlXX0pLmdldD9RZT1ULnN0eWxpemUoJGUuc2V0PyJbR2V0dGVyL1NldHRlcl0iOiJbR2V0dGVyXSIsInNwZWNpYWwiKTokZS5zZXQmJihRZT1ULnN0eWxpemUoIltTZXR0ZXJdIiwic3Bl''@;'; put 'put ''Y2lhbCIpKSxWKHllLENlKXx8KFBlPSJbIitDZSsiXSIpLFFlfHwoVC5zZWVuLmluZGV4T2YoJGUudmFsdWUpPDA/KFFlPUFlKEYpP3NlKFQsJGUudmFsdWUsbnVsbCk6c2UoVCwkZS52YWx1ZSxGLTEpKS5pbmRleE9mKCJcbiIpPi0xJiYoUWU9RGU/UWUuc3BsaXQoIlxuIikubWFwKGZ1bmN0''@;'; put 'put ''aW9uKGd0KXtyZXR1cm4iICAiK2d0fSkuam9pbigiXG4iKS5zdWJzdHIoMik6IlxuIitRZS5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24oZ3Qpe3JldHVybiIgICAiK2d0fSkuam9pbigiXG4iKSk6UWU9VC5zdHlsaXplKCJbQ2lyY3VsYXJdIiwic3BlY2lhbCIpKSxJZShQZSkpe2lmKERlJiZD''@;'; put 'put ''ZS5tYXRjaCgvXlxkKyQvKSlyZXR1cm4gUWU7KFBlPUpTT04uc3RyaW5naWZ5KCIiK0NlKSkubWF0Y2goL14iKFthLXpBLVpfXVthLXpBLVpfMC05XSopIiQvKT8oUGU9UGUuc3Vic3RyKDEsUGUubGVuZ3RoLTIpLFBlPVQuc3R5bGl6ZShQZSwibmFtZSIpKTooUGU9UGUucmVwbGFjZSgvJy9n''@;'; put 'put ''LCJcXCciKS5yZXBsYWNlKC9cXCIvZywnIicpLnJlcGxhY2UoLyheInwiJCkvZywiJyIpLFBlPVQuc3R5bGl6ZShQZSwic3RyaW5nIikpfXJldHVybiBQZSsiOiAiK1FlfWZ1bmN0aW9uIGRlKFQpe3JldHVybiBBcnJheS5pc0FycmF5KFQpfWZ1bmN0aW9uIHZlKFQpe3JldHVybiJib29sZWFu''@;'; put 'put ''Ij09dHlwZW9mIFR9ZnVuY3Rpb24gQWUoVCl7cmV0dXJuIG51bGw9PT1UfWZ1bmN0aW9uIGtlKFQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgVH1mdW5jdGlvbiBTZShUKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFR9ZnVuY3Rpb24gSWUoVCl7cmV0dXJuIHZvaWQgMD09PVR9ZnVuY3Rpb24g''@;'; put 'put ''VGUoVCl7cmV0dXJuIEVlKFQpJiYiW29iamVjdCBSZWdFeHBdIj09PW5lKFQpfWZ1bmN0aW9uIEVlKFQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgVCYmbnVsbCE9PVR9ZnVuY3Rpb24gaGUoVCl7cmV0dXJuIEVlKFQpJiYiW29iamVjdCBEYXRlXSI9PT1uZShUKX1mdW5jdGlvbiBPKFQpe3Jl''@;'; put 'put ''dHVybiBFZShUKSYmKCJbb2JqZWN0IEVycm9yXSI9PT1uZShUKXx8VCBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiB6KFQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBUfWZ1bmN0aW9uIG5lKFQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoVCl9ZnVuY3Rpb24g''@;'; put 'put ''dGUoVCl7cmV0dXJuIFQ8MTA/IjAiK1QudG9TdHJpbmcoMTApOlQudG9TdHJpbmcoMTApfVEuZGVidWdsb2c9ZnVuY3Rpb24oVCl7aWYoSWUoVykmJihXPWllLmVudi5OT0RFX0RFQlVHfHwiIiksVD1ULnRvVXBwZXJDYXNlKCksIU5bVF0paWYobmV3IFJlZ0V4cCgiXFxiIitUKyJcXGIiLCJp''@;'; put 'put ''IikudGVzdChXKSl7dmFyIFM9aWUucGlkO05bVF09ZnVuY3Rpb24oKXt2YXIgRj1RLmZvcm1hdC5hcHBseShRLGFyZ3VtZW50cyk7bGUuZXJyb3IoIiVzICVkOiAlcyIsVCxTLEYpfX1lbHNlIE5bVF09ZnVuY3Rpb24oKXt9O3JldHVybiBOW1RdfSxRLmluc3BlY3Q9ZWUsZWUuY29sb3JzPXti''@;'; put 'put ''b2xkOlsxLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0saW52ZXJzZTpbNywyN10sd2hpdGU6WzM3LDM5XSxncmV5Ols5MCwzOV0sYmxhY2s6WzMwLDM5XSxibHVlOlszNCwzOV0sY3lhbjpbMzYsMzldLGdyZWVuOlszMiwzOV0sbWFnZW50YTpbMzUsMzldLHJlZDpbMzEsMzld''@;'; put 'put ''LHllbGxvdzpbMzMsMzldfSxlZS5zdHlsZXM9e3NwZWNpYWw6ImN5YW4iLG51bWJlcjoieWVsbG93Iixib29sZWFuOiJ5ZWxsb3ciLHVuZGVmaW5lZDoiZ3JleSIsbnVsbDoiYm9sZCIsc3RyaW5nOiJncmVlbiIsZGF0ZToibWFnZW50YSIscmVnZXhwOiJyZWQifSxRLmlzQXJyYXk9ZGUsUS5p''@;'; put 'put ''c0Jvb2xlYW49dmUsUS5pc051bGw9QWUsUS5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbihUKXtyZXR1cm4gbnVsbD09VH0sUS5pc051bWJlcj1rZSxRLmlzU3RyaW5nPVNlLFEuaXNTeW1ib2w9ZnVuY3Rpb24oVCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBUfSxRLmlzVW5kZWZpbmVkPUll''@;'; put 'put ''LFEuaXNSZWdFeHA9VGUsUS5pc09iamVjdD1FZSxRLmlzRGF0ZT1oZSxRLmlzRXJyb3I9TyxRLmlzRnVuY3Rpb249eixRLmlzUHJpbWl0aXZlPWZ1bmN0aW9uKFQpe3JldHVybiBudWxsPT09VHx8ImJvb2xlYW4iPT10eXBlb2YgVHx8Im51bWJlciI9PXR5cGVvZiBUfHwic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIFR8fCJzeW1ib2wiPT10eXBlb2YgVHx8dm9pZCAwPT09VH0sUS5pc0J1ZmZlcj1aKDI5NzQpO3ZhciB4PVsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl07ZnVuY3Rpb24gUCgpe3ZhciBUPW5ldyBEYXRl''@;'; put 'put ''LFM9W3RlKFQuZ2V0SG91cnMoKSksdGUoVC5nZXRNaW51dGVzKCkpLHRlKFQuZ2V0U2Vjb25kcygpKV0uam9pbigiOiIpO3JldHVybltULmdldERhdGUoKSx4W1QuZ2V0TW9udGgoKV0sU10uam9pbigiICIpfWZ1bmN0aW9uIFYoVCxTKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eS5jYWxsKFQsUyl9US5sb2c9ZnVuY3Rpb24oKXtsZS5sb2coIiVzIC0gJXMiLFAoKSxRLmZvcm1hdC5hcHBseShRLGFyZ3VtZW50cykpfSxRLmluaGVyaXRzPVooMTcyNSksUS5fZXh0ZW5kPWZ1bmN0aW9uKFQsUyl7aWYoIVN8fCFFZShTKSlyZXR1cm4gVDtmb3IodmFyIEY9T2Jq''@;'; put 'put ''ZWN0LmtleXMoUykseWU9Ri5sZW5ndGg7eWUtLTspVFtGW3llXV09U1tGW3llXV07cmV0dXJuIFR9fSwyNTIwOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9IndpbjMyIj09PWllLnBsYXRmb3JtLFk9Wig4MDU5KTtmdW5jdGlvbiBXKGtlLFNlKXtmb3IodmFyIEll''@;'; put 'put ''PVtdLFRlPTA7VGU8a2UubGVuZ3RoO1RlKyspe3ZhciBFZT1rZVtUZV07RWUmJiIuIiE9PUVlJiYoIi4uIj09PUVlP0llLmxlbmd0aCYmIi4uIiE9PUllW0llLmxlbmd0aC0xXT9JZS5wb3AoKTpTZSYmSWUucHVzaCgiLi4iKTpJZS5wdXNoKEVlKSl9cmV0dXJuIEllfWZ1bmN0aW9uIE4oa2Up''@;'; put 'put ''e2Zvcih2YXIgU2U9a2UubGVuZ3RoLTEsSWU9MDtJZTw9U2UmJiFrZVtJZV07SWUrKyk7Zm9yKHZhciBUZT1TZTtUZT49MCYmIWtlW1RlXTtUZS0tKTtyZXR1cm4gMD09PUllJiZUZT09PVNlP2tlOkllPlRlP1tdOmtlLnNsaWNlKEllLFRlKzEpfXZhciBlZT0vXihbYS16QS1aXTp8W1xcXC9d''@;'; put 'put ''ezJ9W15cXFwvXStbXFxcL10rW15cXFwvXSspPyhbXFxcL10pPyhbXHNcU10qPykkLyxxPS9eKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXFxcL10rP3wpKFwuW14uXC9cXF0qfCkpKD86W1xcXC9dKikkLyxKPXt9O2Z1bmN0aW9uIHNlKGtlKXt2YXIgU2U9ZWUuZXhlYyhrZSksSWU9KFNlWzFd''@;'; put 'put ''fHwiIikrKFNlWzJdfHwiIiksRWU9cS5leGVjKFNlWzNdfHwiIik7cmV0dXJuW0llLEVlWzFdLEVlWzJdLEVlWzNdXX1mdW5jdGlvbiBhZShrZSl7dmFyIFNlPWVlLmV4ZWMoa2UpLEllPVNlWzFdfHwiIixUZT0hIUllJiYiOiIhPT1JZVsxXTtyZXR1cm57ZGV2aWNlOkllLGlzVW5jOlRlLGlz''@;'; put 'put ''QWJzb2x1dGU6VGV8fCEhU2VbMl0sdGFpbDpTZVszXX19ZnVuY3Rpb24gZmUoa2Upe3JldHVybiJcXFxcIitrZS5yZXBsYWNlKC9eW1xcXC9dKy8sIiIpLnJlcGxhY2UoL1tcXFwvXSsvZywiXFwiKX1KLnJlc29sdmU9ZnVuY3Rpb24oKXtmb3IodmFyIGtlPSIiLFNlPSIiLEllPSExLFRlPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgtMTtUZT49LTE7VGUtLSl7dmFyIEVlO2lmKFRlPj0wP0VlPWFyZ3VtZW50c1tUZV06a2U/KEVlPWllLmVudlsiPSIra2VdKSYmRWUuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKT09PWtlLnRvTG93ZXJDYXNlKCkrIlxcInx8KEVlPWtlKyJcXCIpOkVlPWllLmN3ZCgp''@;'; put 'put ''LCFZLmlzU3RyaW5nKEVlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpO2lmKEVlKXt2YXIgaGU9YWUoRWUpLE89aGUuZGV2aWNlLHo9aGUuaXNVbmMsbmU9aGUuaXNBYnNvbHV0ZSx0ZT1oZS50YWlsO2lmKCghT3x8IWtl''@;'; put 'put ''fHxPLnRvTG93ZXJDYXNlKCk9PT1rZS50b0xvd2VyQ2FzZSgpKSYmKGtlfHwoa2U9TyksSWV8fChTZT10ZSsiXFwiK1NlLEllPW5lKSxrZSYmSWUpKWJyZWFrfX1yZXR1cm4geiYmKGtlPWZlKGtlKSksa2UrKEllPyJcXCI6IiIpKyhTZT1XKFNlLnNwbGl0KC9bXFxcL10rLyksIUllKS5qb2lu''@;'; put 'put ''KCJcXCIpKXx8Ii4ifSxKLm5vcm1hbGl6ZT1mdW5jdGlvbihrZSl7dmFyIFNlPWFlKGtlKSxJZT1TZS5kZXZpY2UsVGU9U2UuaXNVbmMsRWU9U2UuaXNBYnNvbHV0ZSxoZT1TZS50YWlsLE89L1tcXFwvXSQvLnRlc3QoaGUpO3JldHVybihoZT1XKGhlLnNwbGl0KC9bXFxcL10rLyksIUVlKS5q''@;'; put 'put ''b2luKCJcXCIpKXx8RWV8fChoZT0iLiIpLGhlJiZPJiYoaGUrPSJcXCIpLFRlJiYoSWU9ZmUoSWUpKSxJZSsoRWU/IlxcIjoiIikraGV9LEouaXNBYnNvbHV0ZT1mdW5jdGlvbihrZSl7cmV0dXJuIGFlKGtlKS5pc0Fic29sdXRlfSxKLmpvaW49ZnVuY3Rpb24oKXtmb3IodmFyIGtlPVtdLFNl''@;'; put 'put ''PTA7U2U8YXJndW1lbnRzLmxlbmd0aDtTZSsrKXt2YXIgSWU9YXJndW1lbnRzW1NlXTtpZighWS5pc1N0cmluZyhJZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MiKTtJZSYma2UucHVzaChJZSl9dmFyIFRlPWtlLmpvaW4oIlxc''@;'; put 'put ''Iik7cmV0dXJuL15bXFxcL117Mn1bXlxcXC9dLy50ZXN0KGtlWzBdKXx8KFRlPVRlLnJlcGxhY2UoL15bXFxcL117Mix9LywiXFwiKSksSi5ub3JtYWxpemUoVGUpfSxKLnJlbGF0aXZlPWZ1bmN0aW9uKGtlLFNlKXtrZT1KLnJlc29sdmUoa2UpLFNlPUoucmVzb2x2ZShTZSk7Zm9yKHZhciBJ''@;'; put 'put ''ZT1rZS50b0xvd2VyQ2FzZSgpLFRlPVNlLnRvTG93ZXJDYXNlKCksRWU9TihTZS5zcGxpdCgiXFwiKSksaGU9TihJZS5zcGxpdCgiXFwiKSksTz1OKFRlLnNwbGl0KCJcXCIpKSx6PU1hdGgubWluKGhlLmxlbmd0aCxPLmxlbmd0aCksbmU9eix0ZT0wO3RlPHo7dGUrKylpZihoZVt0ZV0hPT1P''@;'; put 'put ''W3RlXSl7bmU9dGU7YnJlYWt9aWYoMD09bmUpcmV0dXJuIFNlO3ZhciB4PVtdO2Zvcih0ZT1uZTt0ZTxoZS5sZW5ndGg7dGUrKyl4LnB1c2goIi4uIik7cmV0dXJuKHg9eC5jb25jYXQoRWUuc2xpY2UobmUpKSkuam9pbigiXFwiKX0sSi5fbWFrZUxvbmc9ZnVuY3Rpb24oa2Upe2lmKCFZLmlz''@;'; put 'put ''U3RyaW5nKGtlKSlyZXR1cm4ga2U7aWYoIWtlKXJldHVybiIiO3ZhciBTZT1KLnJlc29sdmUoa2UpO3JldHVybi9eW2EtekEtWl1cOlxcLy50ZXN0KFNlKT8iXFxcXD9cXCIrU2U6L15cXFxcW14/Ll0vLnRlc3QoU2UpPyJcXFxcP1xcVU5DXFwiK1NlLnN1YnN0cmluZygyKTprZX0sSi5kaXJu''@;'; put 'put ''YW1lPWZ1bmN0aW9uKGtlKXt2YXIgU2U9c2Uoa2UpLEllPVNlWzBdLFRlPVNlWzFdO3JldHVybiBJZXx8VGU/KFRlJiYoVGU9VGUuc3Vic3RyKDAsVGUubGVuZ3RoLTEpKSxJZStUZSk6Ii4ifSxKLmJhc2VuYW1lPWZ1bmN0aW9uKGtlLFNlKXt2YXIgSWU9c2Uoa2UpWzJdO3JldHVybiBTZSYm''@;'; put 'put ''SWUuc3Vic3RyKC0xKlNlLmxlbmd0aCk9PT1TZSYmKEllPUllLnN1YnN0cigwLEllLmxlbmd0aC1TZS5sZW5ndGgpKSxJZX0sSi5leHRuYW1lPWZ1bmN0aW9uKGtlKXtyZXR1cm4gc2Uoa2UpWzNdfSxKLmZvcm1hdD1mdW5jdGlvbihrZSl7aWYoIVkuaXNPYmplY3Qoa2UpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aE9iamVjdCcgbXVzdCBiZSBhbiBvYmplY3QsIG5vdCAiK3R5cGVvZiBrZSk7aWYoIVkuaXNTdHJpbmcoa2Uucm9vdHx8IiIpKXRocm93IG5ldyBUeXBlRXJyb3IoIidwYXRoT2JqZWN0LnJvb3QnIG11c3QgYmUgYSBzdHJpbmcgb3IgdW5kZWZpbmVk''@;'; put 'put ''LCBub3QgIit0eXBlb2Yga2Uucm9vdCk7dmFyIEllPWtlLmRpcixUZT1rZS5iYXNlfHwiIjtyZXR1cm4gSWU/SWVbSWUubGVuZ3RoLTFdPT09Si5zZXA/SWUrVGU6SWUrSi5zZXArVGU6VGV9LEoucGFyc2U9ZnVuY3Rpb24oa2Upe2lmKCFZLmlzU3RyaW5nKGtlKSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJQYXJhbWV0ZXIgJ3BhdGhTdHJpbmcnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAiK3R5cGVvZiBrZSk7dmFyIFNlPXNlKGtlKTtpZighU2V8fDQhPT1TZS5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBwYXRoICciK2tlKyInIik7cmV0dXJue3Jvb3Q6U2VbMF0sZGly''@;'; put 'put ''OlNlWzBdK1NlWzFdLnNsaWNlKDAsLTEpLGJhc2U6U2VbMl0sZXh0OlNlWzNdLG5hbWU6U2VbMl0uc2xpY2UoMCxTZVsyXS5sZW5ndGgtU2VbM10ubGVuZ3RoKX19LEouc2VwPSJcXCIsSi5kZWxpbWl0ZXI9IjsiO3ZhciBkZT0vXihcLz98KShbXHNcU10qPykoKD86XC57MSwyfXxbXlwvXSs/''@;'; put 'put ''fCkoXC5bXi5cL10qfCkpKD86W1wvXSopJC8sdmU9e307ZnVuY3Rpb24gQWUoa2Upe3JldHVybiBkZS5leGVjKGtlKS5zbGljZSgxKX12ZS5yZXNvbHZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBrZT0iIixTZT0hMSxJZT1hcmd1bWVudHMubGVuZ3RoLTE7SWU+PS0xJiYhU2U7SWUtLSl7dmFyIFRl''@;'; put 'put ''PUllPj0wP2FyZ3VtZW50c1tJZV06aWUuY3dkKCk7aWYoIVkuaXNTdHJpbmcoVGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7VGUmJihrZT1UZSsiLyIra2UsU2U9Ii8iPT09VGVbMF0pfXJldHVybihTZT8iLyI6IiIp''@;'; put 'put ''KyhrZT1XKGtlLnNwbGl0KCIvIiksIVNlKS5qb2luKCIvIikpfHwiLiJ9LHZlLm5vcm1hbGl6ZT1mdW5jdGlvbihrZSl7dmFyIFNlPXZlLmlzQWJzb2x1dGUoa2UpLEllPWtlJiYiLyI9PT1rZVtrZS5sZW5ndGgtMV07cmV0dXJuKGtlPVcoa2Uuc3BsaXQoIi8iKSwhU2UpLmpvaW4oIi8iKSl8''@;'; put 'put ''fFNlfHwoa2U9Ii4iKSxrZSYmSWUmJihrZSs9Ii8iKSwoU2U/Ii8iOiIiKStrZX0sdmUuaXNBYnNvbHV0ZT1mdW5jdGlvbihrZSl7cmV0dXJuIi8iPT09a2UuY2hhckF0KDApfSx2ZS5qb2luPWZ1bmN0aW9uKCl7Zm9yKHZhciBrZT0iIixTZT0wO1NlPGFyZ3VtZW50cy5sZW5ndGg7U2UrKyl7''@;'; put 'put ''dmFyIEllPWFyZ3VtZW50c1tTZV07aWYoIVkuaXNTdHJpbmcoSWUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzIik7SWUmJihrZSs9a2U/Ii8iK0llOkllKX1yZXR1cm4gdmUubm9ybWFsaXplKGtlKX0sdmUucmVsYXRpdmU9ZnVu''@;'; put 'put ''Y3Rpb24oa2UsU2Upe2tlPXZlLnJlc29sdmUoa2UpLnN1YnN0cigxKSxTZT12ZS5yZXNvbHZlKFNlKS5zdWJzdHIoMSk7Zm9yKHZhciBJZT1OKGtlLnNwbGl0KCIvIikpLFRlPU4oU2Uuc3BsaXQoIi8iKSksRWU9TWF0aC5taW4oSWUubGVuZ3RoLFRlLmxlbmd0aCksaGU9RWUsTz0wO088RWU7''@;'; put 'put ''TysrKWlmKEllW09dIT09VGVbT10pe2hlPU87YnJlYWt9dmFyIHo9W107Zm9yKE89aGU7TzxJZS5sZW5ndGg7TysrKXoucHVzaCgiLi4iKTtyZXR1cm4oej16LmNvbmNhdChUZS5zbGljZShoZSkpKS5qb2luKCIvIil9LHZlLl9tYWtlTG9uZz1mdW5jdGlvbihrZSl7cmV0dXJuIGtlfSx2ZS5k''@;'; put 'put ''aXJuYW1lPWZ1bmN0aW9uKGtlKXt2YXIgU2U9QWUoa2UpLEllPVNlWzBdLFRlPVNlWzFdO3JldHVybiBJZXx8VGU/KFRlJiYoVGU9VGUuc3Vic3RyKDAsVGUubGVuZ3RoLTEpKSxJZStUZSk6Ii4ifSx2ZS5iYXNlbmFtZT1mdW5jdGlvbihrZSxTZSl7dmFyIEllPUFlKGtlKVsyXTtyZXR1cm4g''@;'; put 'put ''U2UmJkllLnN1YnN0cigtMSpTZS5sZW5ndGgpPT09U2UmJihJZT1JZS5zdWJzdHIoMCxJZS5sZW5ndGgtU2UubGVuZ3RoKSksSWV9LHZlLmV4dG5hbWU9ZnVuY3Rpb24oa2Upe3JldHVybiBBZShrZSlbM119LHZlLmZvcm1hdD1mdW5jdGlvbihrZSl7aWYoIVkuaXNPYmplY3Qoa2UpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aE9iamVjdCcgbXVzdCBiZSBhbiBvYmplY3QsIG5vdCAiK3R5cGVvZiBrZSk7aWYoIVkuaXNTdHJpbmcoa2Uucm9vdHx8IiIpKXRocm93IG5ldyBUeXBlRXJyb3IoIidwYXRoT2JqZWN0LnJvb3QnIG11c3QgYmUgYSBzdHJpbmcgb3IgdW5k''@;'; put 'put ''ZWZpbmVkLCBub3QgIit0eXBlb2Yga2Uucm9vdCk7cmV0dXJuKGtlLmRpcj9rZS5kaXIrdmUuc2VwOiIiKSsoa2UuYmFzZXx8IiIpfSx2ZS5wYXJzZT1mdW5jdGlvbihrZSl7aWYoIVkuaXNTdHJpbmcoa2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aFN0cmluZycgbXVz''@;'; put 'put ''dCBiZSBhIHN0cmluZywgbm90ICIrdHlwZW9mIGtlKTt2YXIgU2U9QWUoa2UpO2lmKCFTZXx8NCE9PVNlLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHBhdGggJyIra2UrIiciKTtyZXR1cm4gU2VbMV09U2VbMV18fCIiLFNlWzJdPVNlWzJdfHwiIixTZVszXT1TZVszXXx8''@;'; put 'put ''IiIse3Jvb3Q6U2VbMF0sZGlyOlNlWzBdK1NlWzFdLnNsaWNlKDAsLTEpLGJhc2U6U2VbMl0sZXh0OlNlWzNdLG5hbWU6U2VbMl0uc2xpY2UoMCxTZVsyXS5sZW5ndGgtU2VbM10ubGVuZ3RoKX19LHZlLnNlcD0iLyIsdmUuZGVsaW1pdGVyPSI6IixVLmV4cG9ydHM9bGU/Sjp2ZSxVLmV4cG9y''@;'; put 'put ''dHMucG9zaXg9dmUsVS5leHBvcnRzLndpbjMyPUp9LDU2MzI6KFUsUSxaKT0+e1EucGJrZGYyPVooODYzOCksUS5wYmtkZjJTeW5jPVooMTI1Nyl9LDg2Mzg6KFUsUSxaKT0+e3ZhciBpZSxsZSxZPVooOTUwOSkuQnVmZmVyLFc9Wig3MzU3KSxOPVooMjM2OCksZWU9WigxMjU3KSxxPVooNzc3''@;'; put 'put ''NyksSj1aLmcuY3J5cHRvJiZaLmcuY3J5cHRvLnN1YnRsZSxzZT17c2hhOiJTSEEtMSIsInNoYS0xIjoiU0hBLTEiLHNoYTE6IlNIQS0xIixzaGEyNTY6IlNIQS0yNTYiLCJzaGEtMjU2IjoiU0hBLTI1NiIsc2hhMzg0OiJTSEEtMzg0Iiwic2hhLTM4NCI6IlNIQS0zODQiLCJzaGEtNTEyIjoi''@;'; put 'put ''U0hBLTUxMiIsc2hhNTEyOiJTSEEtNTEyIn0sYWU9W107ZnVuY3Rpb24gZmUoKXtyZXR1cm4gbGV8fChsZT1aLmcucHJvY2VzcyYmWi5nLnByb2Nlc3MubmV4dFRpY2s/Wi5nLnByb2Nlc3MubmV4dFRpY2s6Wi5nLnF1ZXVlTWljcm90YXNrP1ouZy5xdWV1ZU1pY3JvdGFzazpaLmcuc2V0SW1t''@;'; put 'put ''ZWRpYXRlP1ouZy5zZXRJbW1lZGlhdGU6Wi5nLnNldFRpbWVvdXQpfWZ1bmN0aW9uIGRlKHZlLEFlLGtlLFNlLEllKXtyZXR1cm4gSi5pbXBvcnRLZXkoInJhdyIsdmUse25hbWU6IlBCS0RGMiJ9LCExLFsiZGVyaXZlQml0cyJdKS50aGVuKGZ1bmN0aW9uKFRlKXtyZXR1cm4gSi5kZXJpdmVC''@;'; put 'put ''aXRzKHtuYW1lOiJQQktERjIiLHNhbHQ6QWUsaXRlcmF0aW9uczprZSxoYXNoOntuYW1lOkllfX0sVGUsU2U8PDMpfSkudGhlbihmdW5jdGlvbihUZSl7cmV0dXJuIFkuZnJvbShUZSl9KX1VLmV4cG9ydHM9ZnVuY3Rpb24odmUsQWUsa2UsU2UsSWUsVGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBJ''@;'; put 'put ''ZSYmKFRlPUllLEllPXZvaWQgMCk7dmFyIGhlLE8sRWU9c2VbKEllPUllfHwic2hhMSIpLnRvTG93ZXJDYXNlKCldO2lmKEVlJiYiZnVuY3Rpb24iPT10eXBlb2YgWi5nLlByb21pc2Upe2lmKFcoa2UsU2UpLHZlPXEodmUsTiwiUGFzc3dvcmQiKSxBZT1xKEFlLE4sIlNhbHQiKSwiZnVuY3Rp''@;'; put 'put ''b24iIT10eXBlb2YgVGUpdGhyb3cgbmV3IEVycm9yKCJObyBjYWxsYmFjayBwcm92aWRlZCB0byBwYmtkZjIiKTtoZT1mdW5jdGlvbihoZSl7aWYoWi5nLnByb2Nlc3MmJiFaLmcucHJvY2Vzcy5icm93c2VyfHwhSnx8IUouaW1wb3J0S2V5fHwhSi5kZXJpdmVCaXRzKXJldHVybiBQcm9taXNl''@;'; put 'put ''LnJlc29sdmUoITEpO2lmKHZvaWQgMCE9PWFlW2hlXSlyZXR1cm4gYWVbaGVdO3ZhciBPPWRlKGllPWllfHxZLmFsbG9jKDgpLGllLDEwLDEyOCxoZSkudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pO3JldHVybiBhZVtoZV09TyxPfShFZSku''@;'; put 'put ''dGhlbihmdW5jdGlvbihoZSl7cmV0dXJuIGhlP2RlKHZlLEFlLGtlLFNlLEVlKTplZSh2ZSxBZSxrZSxTZSxJZSl9KSxPPVRlLGhlLnRoZW4oZnVuY3Rpb24oeil7ZmUoKShmdW5jdGlvbigpe08obnVsbCx6KX0pfSxmdW5jdGlvbih6KXtmZSgpKGZ1bmN0aW9uKCl7Tyh6KX0pfSl9ZWxzZSBm''@;'; put 'put ''ZSgpKGZ1bmN0aW9uKCl7dmFyIGhlO3RyeXtoZT1lZSh2ZSxBZSxrZSxTZSxJZSl9Y2F0Y2goTyl7cmV0dXJuIFRlKE8pfVRlKG51bGwsaGUpfSl9fSwyMzY4OihVLFEsWik9Pnt2YXIgaWUsbGU9Wig0MTU1KTtpZT1aLmcucHJvY2VzcyYmWi5nLnByb2Nlc3MuYnJvd3Nlcj8idXRmLTgiOlou''@;'; put 'put ''Zy5wcm9jZXNzJiZaLmcucHJvY2Vzcy52ZXJzaW9uP3BhcnNlSW50KGxlLnZlcnNpb24uc3BsaXQoIi4iKVswXS5zbGljZSgxKSwxMCk+PTY/InV0Zi04IjoiYmluYXJ5IjoidXRmLTgiLFUuZXhwb3J0cz1pZX0sNzM1NzpVPT57dmFyIFE9TWF0aC5wb3coMiwzMCktMTtVLmV4cG9ydHM9ZnVu''@;'; put 'put ''Y3Rpb24oWixpZSl7aWYoIm51bWJlciIhPXR5cGVvZiBaKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdGlvbnMgbm90IGEgbnVtYmVyIik7aWYoWjwwKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBpdGVyYXRpb25zIik7aWYoIm51bWJlciIhPXR5cGVvZiBpZSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJLZXkgbGVuZ3RoIG5vdCBhIG51bWJlciIpO2lmKGllPDB8fGllPlF8fGllIT1pZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJCYWQga2V5IGxlbmd0aCIpfX0sMTI1NzooVSxRLFopPT57dmFyIGllPVooODAyOCksbGU9Wig5Nzg1KSxZPVooOTA3MiksVz1aKDk1MDkpLkJ1ZmZlcixOPVoo''@;'; put 'put ''NzM1NyksZWU9WigyMzY4KSxxPVooNzc3NyksSj1XLmFsbG9jKDEyOCksc2U9e21kNToxNixzaGExOjIwLHNoYTIyNDoyOCxzaGEyNTY6MzIsc2hhMzg0OjQ4LHNoYTUxMjo2NCxybWQxNjA6MjAscmlwZW1kMTYwOjIwfTtmdW5jdGlvbiBhZShmZSxkZSx2ZSl7dmFyIGhlLEFlPSJybWQxNjAi''@;'; put 'put ''PT09KGhlPWZlKXx8InJpcGVtZDE2MCI9PT1oZT9mdW5jdGlvbiB6KG5lKXtyZXR1cm4obmV3IGxlKS51cGRhdGUobmUpLmRpZ2VzdCgpfToibWQ1Ij09PWhlP2llOmZ1bmN0aW9uIE8obmUpe3JldHVybiBZKGhlKS51cGRhdGUobmUpLmRpZ2VzdCgpfSxrZT0ic2hhNTEyIj09PWZlfHwic2hh''@;'; put 'put ''Mzg0Ij09PWZlPzEyODo2NDtkZS5sZW5ndGg+a2U/ZGU9QWUoZGUpOmRlLmxlbmd0aDxrZSYmKGRlPVcuY29uY2F0KFtkZSxKXSxrZSkpO2Zvcih2YXIgU2U9Vy5hbGxvY1Vuc2FmZShrZStzZVtmZV0pLEllPVcuYWxsb2NVbnNhZmUoa2Urc2VbZmVdKSxUZT0wO1RlPGtlO1RlKyspU2VbVGVd''@;'; put 'put ''PTU0XmRlW1RlXSxJZVtUZV09OTJeZGVbVGVdO3ZhciBFZT1XLmFsbG9jVW5zYWZlKGtlK3ZlKzQpO1NlLmNvcHkoRWUsMCwwLGtlKSx0aGlzLmlwYWQxPUVlLHRoaXMuaXBhZDI9U2UsdGhpcy5vcGFkPUllLHRoaXMuYWxnPWZlLHRoaXMuYmxvY2tzaXplPWtlLHRoaXMuaGFzaD1BZSx0aGlz''@;'; put 'put ''LnNpemU9c2VbZmVdfWFlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oZmUsZGUpe3JldHVybiBmZS5jb3B5KGRlLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2goZGUpLmNvcHkodGhpcy5vcGFkLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2godGhpcy5vcGFkKX0sVS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KGZlLGRlLHZlLEFlLGtlKXtOKHZlLEFlKTt2YXIgU2U9bmV3IGFlKGtlPWtlfHwic2hhMSIsZmU9cShmZSxlZSwiUGFzc3dvcmQiKSwoZGU9cShkZSxlZSwiU2FsdCIpKS5sZW5ndGgpLEllPVcuYWxsb2NVbnNhZmUoQWUpLFRlPVcuYWxsb2NVbnNhZmUoZGUubGVuZ3RoKzQpO2RlLmNvcHko''@;'; put 'put ''VGUsMCwwLGRlLmxlbmd0aCk7Zm9yKHZhciBFZT0wLGhlPXNlW2tlXSxPPU1hdGguY2VpbChBZS9oZSksej0xO3o8PU87eisrKXtUZS53cml0ZVVJbnQzMkJFKHosZGUubGVuZ3RoKTtmb3IodmFyIG5lPVNlLnJ1bihUZSxTZS5pcGFkMSksdGU9bmUseD0xO3g8dmU7eCsrKXt0ZT1TZS5ydW4o''@;'; put 'put ''dGUsU2UuaXBhZDIpO2Zvcih2YXIgUD0wO1A8aGU7UCsrKW5lW1BdXj10ZVtQXX1uZS5jb3B5KEllLEVlKSxFZSs9aGV9cmV0dXJuIEllfX0sNzc3NzooVSxRLFopPT57dmFyIGllPVooOTUwOSkuQnVmZmVyO1UuZXhwb3J0cz1mdW5jdGlvbihsZSxZLFcpe2lmKGllLmlzQnVmZmVyKGxlKSly''@;'; put 'put ''ZXR1cm4gbGU7aWYoInN0cmluZyI9PXR5cGVvZiBsZSlyZXR1cm4gaWUuZnJvbShsZSxZKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcobGUpKXJldHVybiBpZS5mcm9tKGxlLmJ1ZmZlcik7dGhyb3cgbmV3IFR5cGVFcnJvcihXKyIgbXVzdCBiZSBhIHN0cmluZywgYSBCdWZmZXIsIGEgdHlwZWQg''@;'; put 'put ''YXJyYXkgb3IgYSBEYXRhVmlldyIpfX0sNDE1NTpVPT57dmFyIFEsWixpZT1VLmV4cG9ydHM9e307ZnVuY3Rpb24gbGUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBZKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQg''@;'; put 'put ''aGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBXKHZlKXtpZihRPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dCh2ZSwwKTtpZigoUT09PWxlfHwhUSkmJnNldFRpbWVvdXQpcmV0dXJuIFE9c2V0VGltZW91dCxzZXRUaW1lb3V0KHZlLDApO3RyeXtyZXR1cm4gUSh2ZSwwKX1j''@;'; put 'put ''YXRjaChBZSl7dHJ5e3JldHVybiBRLmNhbGwobnVsbCx2ZSwwKX1jYXRjaChrZSl7cmV0dXJuIFEuY2FsbCh0aGlzLHZlLDApfX19IWZ1bmN0aW9uKCl7dHJ5e1E9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpsZX1jYXRjaCh2ZSl7UT1sZX10cnl7Wj0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpZfWNhdGNoKHZlKXtaPVl9fSgpO3ZhciBOLGVlPVtdLHE9ITEsSj0tMTtmdW5jdGlvbiBzZSgpe3EmJk4mJihxPSExLE4ubGVuZ3RoP2VlPU4uY29uY2F0KGVlKTpKPS0xLGVlLmxlbmd0aCYmYWUoKSl9ZnVuY3Rpb24gYWUo''@;'; put 'put ''KXtpZighcSl7dmFyIHZlPVcoc2UpO3E9ITA7Zm9yKHZhciBBZT1lZS5sZW5ndGg7QWU7KXtmb3IoTj1lZSxlZT1bXTsrK0o8QWU7KU4mJk5bSl0ucnVuKCk7Sj0tMSxBZT1lZS5sZW5ndGh9Tj1udWxsLHE9ITEsZnVuY3Rpb24oa2Upe2lmKFo9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFy''@;'; put 'put ''VGltZW91dChrZSk7aWYoKFo9PT1ZfHwhWikmJmNsZWFyVGltZW91dClyZXR1cm4gWj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGtlKTt0cnl7WihrZSl9Y2F0Y2goU2Upe3RyeXtyZXR1cm4gWi5jYWxsKG51bGwsa2UpfWNhdGNoKEllKXtyZXR1cm4gWi5jYWxsKHRoaXMsa2UpfX19KHZl''@;'; put 'put ''KX19ZnVuY3Rpb24gZmUodmUsQWUpe3RoaXMuZnVuPXZlLHRoaXMuYXJyYXk9QWV9ZnVuY3Rpb24gZGUoKXt9aWUubmV4dFRpY2s9ZnVuY3Rpb24odmUpe3ZhciBBZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBrZT0xO2tlPGFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg7a2UrKylBZVtrZS0xXT1hcmd1bWVudHNba2VdO2VlLnB1c2gobmV3IGZlKHZlLEFlKSksMSE9PWVlLmxlbmd0aHx8cXx8VyhhZSl9LGZlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpZS50aXRsZT0iYnJv''@;'; put 'put ''d3NlciIsaWUuYnJvd3Nlcj0hMCxpZS5lbnY9e30saWUuYXJndj1bXSxpZS52ZXJzaW9uPSIiLGllLnZlcnNpb25zPXt9LGllLm9uPWRlLGllLmFkZExpc3RlbmVyPWRlLGllLm9uY2U9ZGUsaWUub2ZmPWRlLGllLnJlbW92ZUxpc3RlbmVyPWRlLGllLnJlbW92ZUFsbExpc3RlbmVycz1kZSxp''@;'; put 'put ''ZS5lbWl0PWRlLGllLnByZXBlbmRMaXN0ZW5lcj1kZSxpZS5wcmVwZW5kT25jZUxpc3RlbmVyPWRlLGllLmxpc3RlbmVycz1mdW5jdGlvbih2ZSl7cmV0dXJuW119LGllLmJpbmRpbmc9ZnVuY3Rpb24odmUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0''@;'; put 'put ''ZWQiKX0saWUuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxpZS5jaGRpcj1mdW5jdGlvbih2ZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0saWUudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LDYyNDQ6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgaWU9WigzNjg5KSxsZT17fTtsZS5ydWxlcz1aKDM3MDQpLm1hcChmdW5jdGlvbihZKXtyZXR1cm57cnVsZTpZLHN1ZmZpeDpZLnJlcGxhY2UoL14oXCpcLnxcISkvLCIiKSxwdW55U3VmZml4Oi0xLHdpbGRjYXJkOiIqIj09PVkuY2hhckF0KDApLGV4Y2VwdGlvbjoiISI9PT1ZLmNo''@;'; put 'put ''YXJBdCgwKX19KSxsZS5lbmRzV2l0aD1mdW5jdGlvbihZLFcpe3JldHVybi0xIT09WS5pbmRleE9mKFcsWS5sZW5ndGgtVy5sZW5ndGgpfSxsZS5maW5kUnVsZT1mdW5jdGlvbihZKXt2YXIgVz1pZS50b0FTQ0lJKFkpO3JldHVybiBsZS5ydWxlcy5yZWR1Y2UoZnVuY3Rpb24oTixlZSl7cmV0''@;'; put 'put ''dXJuLTE9PT1lZS5wdW55U3VmZml4JiYoZWUucHVueVN1ZmZpeD1pZS50b0FTQ0lJKGVlLnN1ZmZpeCkpLGxlLmVuZHNXaXRoKFcsIi4iK2VlLnB1bnlTdWZmaXgpfHxXPT09ZWUucHVueVN1ZmZpeD9lZTpOfSxudWxsKX0sUS5lcnJvckNvZGVzPXtET01BSU5fVE9PX1NIT1JUOiJEb21haW4g''@;'; put 'put ''bmFtZSB0b28gc2hvcnQuIixET01BSU5fVE9PX0xPTkc6IkRvbWFpbiBuYW1lIHRvbyBsb25nLiBJdCBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFycy4iLExBQkVMX1NUQVJUU19XSVRIX0RBU0g6IkRvbWFpbiBuYW1lIGxhYmVsIGNhbiBub3Qgc3RhcnQgd2l0aCBhIGRhc2guIixM''@;'; put 'put ''QUJFTF9FTkRTX1dJVEhfREFTSDoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG5vdCBlbmQgd2l0aCBhIGRhc2guIixMQUJFTF9UT09fTE9ORzoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IG1vc3QgNjMgY2hhcnMgbG9uZy4iLExBQkVMX1RPT19TSE9SVDoiRG9tYWluIG5hbWUgbGFi''@;'; put 'put ''ZWwgc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcmFjdGVyIGxvbmcuIixMQUJFTF9JTlZBTElEX0NIQVJTOiJEb21haW4gbmFtZSBsYWJlbCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIGRhc2hlcy4ifSxsZS52YWxpZGF0ZT1mdW5jdGlvbihZKXt2YXIgVz1p''@;'; put 'put ''ZS50b0FTQ0lJKFkpO2lmKFcubGVuZ3RoPDEpcmV0dXJuIkRPTUFJTl9UT09fU0hPUlQiO2lmKFcubGVuZ3RoPjI1NSlyZXR1cm4iRE9NQUlOX1RPT19MT05HIjtmb3IodmFyIE4sZWU9Vy5zcGxpdCgiLiIpLHE9MDtxPGVlLmxlbmd0aDsrK3Epe2lmKCEoTj1lZVtxXSkubGVuZ3RoKXJldHVy''@;'; put 'put ''biJMQUJFTF9UT09fU0hPUlQiO2lmKE4ubGVuZ3RoPjYzKXJldHVybiJMQUJFTF9UT09fTE9ORyI7aWYoIi0iPT09Ti5jaGFyQXQoMCkpcmV0dXJuIkxBQkVMX1NUQVJUU19XSVRIX0RBU0giO2lmKCItIj09PU4uY2hhckF0KE4ubGVuZ3RoLTEpKXJldHVybiJMQUJFTF9FTkRTX1dJVEhfREFT''@;'; put 'put ''SCI7aWYoIS9eW2EtejAtOVwtXSskLy50ZXN0KE4pKXJldHVybiJMQUJFTF9JTlZBTElEX0NIQVJTIn19LFEucGFyc2U9ZnVuY3Rpb24oWSl7aWYoInN0cmluZyIhPXR5cGVvZiBZKXRocm93IG5ldyBUeXBlRXJyb3IoIkRvbWFpbiBuYW1lIG11c3QgYmUgYSBzdHJpbmcuIik7dmFyIFc9WS5z''@;'; put 'put ''bGljZSgwKS50b0xvd2VyQ2FzZSgpOyIuIj09PVcuY2hhckF0KFcubGVuZ3RoLTEpJiYoVz1XLnNsaWNlKDAsVy5sZW5ndGgtMSkpO3ZhciBOPWxlLnZhbGlkYXRlKFcpO2lmKE4pcmV0dXJue2lucHV0OlksZXJyb3I6e21lc3NhZ2U6US5lcnJvckNvZGVzW05dLGNvZGU6Tn19O3ZhciBlZT17''@;'; put 'put ''aW5wdXQ6WSx0bGQ6bnVsbCxzbGQ6bnVsbCxkb21haW46bnVsbCxzdWJkb21haW46bnVsbCxsaXN0ZWQ6ITF9LHE9Vy5zcGxpdCgiLiIpO2lmKCJsb2NhbCI9PT1xW3EubGVuZ3RoLTFdKXJldHVybiBlZTt2YXIgSj1mdW5jdGlvbigpe3JldHVybi94bi0tLy50ZXN0KFcpJiYoZWUuZG9tYWlu''@;'; put 'put ''JiYoZWUuZG9tYWluPWllLnRvQVNDSUkoZWUuZG9tYWluKSksZWUuc3ViZG9tYWluJiYoZWUuc3ViZG9tYWluPWllLnRvQVNDSUkoZWUuc3ViZG9tYWluKSkpLGVlfSxzZT1sZS5maW5kUnVsZShXKTtpZighc2UpcmV0dXJuIHEubGVuZ3RoPDI/ZWU6KGVlLnRsZD1xLnBvcCgpLGVlLnNsZD1x''@;'; put 'put ''LnBvcCgpLGVlLmRvbWFpbj1bZWUuc2xkLGVlLnRsZF0uam9pbigiLiIpLHEubGVuZ3RoJiYoZWUuc3ViZG9tYWluPXEucG9wKCkpLEooKSk7ZWUubGlzdGVkPSEwO3ZhciBhZT1zZS5zdWZmaXguc3BsaXQoIi4iKSxmZT1xLnNsaWNlKDAscS5sZW5ndGgtYWUubGVuZ3RoKTtyZXR1cm4gc2Uu''@;'; put 'put ''ZXhjZXB0aW9uJiZmZS5wdXNoKGFlLnNoaWZ0KCkpLGVlLnRsZD1hZS5qb2luKCIuIiksZmUubGVuZ3RoPyhzZS53aWxkY2FyZCYmKGFlLnVuc2hpZnQoZmUucG9wKCkpLGVlLnRsZD1hZS5qb2luKCIuIikpLGZlLmxlbmd0aCYmKGVlLnNsZD1mZS5wb3AoKSxlZS5kb21haW49W2VlLnNsZCxl''@;'; put 'put ''ZS50bGRdLmpvaW4oIi4iKSxmZS5sZW5ndGgmJihlZS5zdWJkb21haW49ZmUuam9pbigiLiIpKSksSigpKTpKKCl9LFEuZ2V0PWZ1bmN0aW9uKFkpe3JldHVybiBZJiZRLnBhcnNlKFkpLmRvbWFpbnx8bnVsbH0sUS5pc1ZhbGlkPWZ1bmN0aW9uKFkpe3ZhciBXPVEucGFyc2UoWSk7cmV0dXJu''@;'; put 'put ''IEJvb2xlYW4oVy5kb21haW4mJlcubGlzdGVkKX19LDc5MDA6KFUsUSxaKT0+e1EucHVibGljRW5jcnlwdD1aKDY1NTkpLFEucHJpdmF0ZURlY3J5cHQ9Wig2MTM4KSxRLnByaXZhdGVFbmNyeXB0PWZ1bmN0aW9uKGllLGxlKXtyZXR1cm4gUS5wdWJsaWNFbmNyeXB0KGllLGxlLCEwKX0sUS5w''@;'; put 'put ''dWJsaWNEZWNyeXB0PWZ1bmN0aW9uKGllLGxlKXtyZXR1cm4gUS5wcml2YXRlRGVjcnlwdChpZSxsZSwhMCl9fSw5MTk5OihVLFEsWik9Pnt2YXIgaWU9WigzNDgyKSxsZT1aKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBZKFcpe3ZhciBOPWxlLmFsbG9jVW5zYWZlKDQpO3JldHVybiBOLndyaXRl''@;'; put 'put ''VUludDMyQkUoVywwKSxOfVUuZXhwb3J0cz1mdW5jdGlvbihXLE4pe2Zvcih2YXIgZWUscT1sZS5hbGxvYygwKSxKPTA7cS5sZW5ndGg8TjspZWU9WShKKyspLHE9bGUuY29uY2F0KFtxLGllKCJzaGExIikudXBkYXRlKFcpLnVwZGF0ZShlZSkuZGlnZXN0KCldKTtyZXR1cm4gcS5zbGljZSgw''@;'; put 'put ''LE4pfX0sMjE0NDpmdW5jdGlvbihVLFEsWil7IWZ1bmN0aW9uKGllLGxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gWSh4LFApe2lmKCF4KXRocm93IG5ldyBFcnJvcihQfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFcoeCxQKXt4LnN1cGVyXz1QO3ZhciBWPWZ1bmN0aW9uKCl7fTtW''@;'; put 'put ''LnByb3RvdHlwZT1QLnByb3RvdHlwZSx4LnByb3RvdHlwZT1uZXcgVix4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14fWZ1bmN0aW9uIE4oeCxQLFYpe2lmKE4uaXNCTih4KSlyZXR1cm4geDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVs''@;'; put 'put ''bCxudWxsIT09eCYmKCJsZSIhPT1QJiYiYmUiIT09UHx8KFY9UCxQPTEwKSx0aGlzLl9pbml0KHh8fDAsUHx8MTAsVnx8ImJlIikpfXZhciBlZTsib2JqZWN0Ij09dHlwZW9mIGllP2llLmV4cG9ydHM9TjpsZS5CTj1OLE4uQk49TixOLndvcmRTaXplPTI2O3RyeXtlZT0idW5kZWZpbmVkIiE9''@;'; put 'put ''dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOlooNzEwOCkuQnVmZmVyfWNhdGNoKHgpe31mdW5jdGlvbiBxKHgsUCl7dmFyIFY9eC5jaGFyQ29kZUF0KFApO3JldHVybiBWPj02NSYmVjw9NzA/Vi01NTpWPj05NyYmVjw9MTAyP1YtODc6Vi00OCYx''@;'; put 'put ''NX1mdW5jdGlvbiBKKHgsUCxWKXt2YXIgVD1xKHgsVik7cmV0dXJuIFYtMT49UCYmKFR8PXEoeCxWLTEpPDw0KSxUfWZ1bmN0aW9uIHNlKHgsUCxWLFQpe2Zvcih2YXIgUz0wLEY9TWF0aC5taW4oeC5sZW5ndGgsVikseWU9UDt5ZTxGO3llKyspe3ZhciBDZT14LmNoYXJDb2RlQXQoeWUpLTQ4''@;'; put 'put ''O1MqPVQsUys9Q2U+PTQ5P0NlLTQ5KzEwOkNlPj0xNz9DZS0xNysxMDpDZX1yZXR1cm4gU31OLmlzQk49ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBOfHxudWxsIT09eCYmIm9iamVjdCI9PXR5cGVvZiB4JiZ4LmNvbnN0cnVjdG9yLndvcmRTaXplPT09Ti53b3JkU2l6ZSYmQXJy''@;'; put 'put ''YXkuaXNBcnJheSh4LndvcmRzKX0sTi5tYXg9ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk+MD94OlB9LE4ubWluPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHguY21wKFApPDA/eDpQfSxOLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih4LFAsVil7aWYoIm51bWJlciI9PXR5cGVvZiB4KXJl''@;'; put 'put ''dHVybiB0aGlzLl9pbml0TnVtYmVyKHgsUCxWKTtpZigib2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh4LFAsVik7ImhleCI9PT1QJiYoUD0xNiksWShQPT09KDB8UCkmJlA+PTImJlA8PTM2KTt2YXIgVD0wOyItIj09PSh4PXgudG9TdHJpbmcoKS5yZXBsYWNlKC9c''@;'; put 'put ''cysvZywiIikpWzBdJiYoVCsrLHRoaXMubmVnYXRpdmU9MSksVDx4Lmxlbmd0aCYmKDE2PT09UD90aGlzLl9wYXJzZUhleCh4LFQsVik6KHRoaXMuX3BhcnNlQmFzZSh4LFAsVCksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpKSl9LE4ucHJvdG90eXBlLl9p''@;'; put 'put ''bml0TnVtYmVyPWZ1bmN0aW9uKHgsUCxWKXt4PDAmJih0aGlzLm5lZ2F0aXZlPTEseD0teCkseDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeF0sdGhpcy5sZW5ndGg9MSk6eDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4''@;'; put 'put ''NjNdLHRoaXMubGVuZ3RoPTIpOihZKHg8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1WJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKX0sTi5wcm90b3R5cGUuX2lu''@;'; put 'put ''aXRBcnJheT1mdW5jdGlvbih4LFAsVil7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgubGVuZ3RoKSx4Lmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbCh4Lmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0''@;'; put 'put ''aGlzLmxlbmd0aCk7Zm9yKHZhciBUPTA7VDx0aGlzLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEYseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0xLFM9MDtUPj0wO1QtPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QtMV08PDh8eFtULTJdPDwxNik8PHllJjY3''@;'; put 'put ''MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7ZWxzZSBpZigibGUiPT09Vilmb3IoVD0wLFM9MDtUPHgubGVuZ3RoO1QrPTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QrMV08PDh8eFtUKzJdPDwxNik8PHllJjY3''@;'; put 'put ''MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKHgsUCxWKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHgubGVuZ3RoLVApLzYp''@;'; put 'put ''LHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRj0wLHllPTA7aWYoImJlIj09PVYpZm9yKFQ9eC5sZW5ndGgtMTtUPj1QO1QtPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9''@;'; put 'put ''NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jkc1t5ZSs9MV18PVM+Pj4yNik6Ris9ODtlbHNlIGZvcihUPSh4Lmxlbmd0aC1QKSUyPT0wP1ArMTpQO1Q8eC5sZW5ndGg7VCs9MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlz''@;'; put 'put ''LndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O3RoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih4LFAsVil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIFQ9MCxTPTE7Uzw9NjcxMDg4NjM7Uyo9UClUKys7VC0tLFM9Uy9QfDA7Zm9yKHZh''@;'; put 'put ''ciBGPXgubGVuZ3RoLVYseWU9RiVULENlPU1hdGgubWluKEYsRi15ZSkrVixEZT0wLFBlPVY7UGU8Q2U7UGUrPVQpRGU9c2UoeCxQZSxQZStULFApLHRoaXMuaW11bG4oUyksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSk7aWYoMCE9''@;'; put 'put ''PXllKXt2YXIgUWU9MTtmb3IoRGU9c2UoeCxQZSx4Lmxlbmd0aCxQKSxQZT0wO1BlPHllO1BlKyspUWUqPVA7dGhpcy5pbXVsbihRZSksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSl9dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5j''@;'; put 'put ''b3B5PWZ1bmN0aW9uKHgpe3gud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl4LndvcmRzW1BdPXRoaXMud29yZHNbUF07eC5sZW5ndGg9dGhpcy5sZW5ndGgseC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHgucmVkPXRoaXMucmVkfSxO''@;'; put 'put ''LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB4PW5ldyBOKG51bGwpO3JldHVybiB0aGlzLmNvcHkoeCkseH0sTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih4KXtmb3IoO3RoaXMubGVuZ3RoPHg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTi5w''@;'; put 'put ''cm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxOLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgYWU9WyIiLCIwIiwiMDAiLCIwMDAi''@;'; put 'put ''LCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAi''@;'; put 'put ''LCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sZmU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sZGU9WzAsMCwzMzU1NDQzMiw0MzA0Njcy''@;'; put 'put ''MSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2''@;'; put 'put ''MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdmUoeCxQLFYpe1YubmVnYXRpdmU9UC5uZWdhdGl2ZV54Lm5lZ2F0''@;'; put 'put ''aXZlO3ZhciBUPXgubGVuZ3RoK1AubGVuZ3RofDA7Vi5sZW5ndGg9VCxUPVQtMXwwO3ZhciBTPTB8eC53b3Jkc1swXSxGPTB8UC53b3Jkc1swXSx5ZT1TKkYsRGU9eWUvNjcxMDg4NjR8MDtWLndvcmRzWzBdPTY3MTA4ODYzJnllO2Zvcih2YXIgUGU9MTtQZTxUO1BlKyspe2Zvcih2YXIgUWU9''@;'; put 'put ''RGU+Pj4yNiwkZT02NzEwODg2MyZEZSxndD1NYXRoLm1pbihQZSxQLmxlbmd0aC0xKSx5dD1NYXRoLm1heCgwLFBlLXgubGVuZ3RoKzEpO3l0PD1ndDt5dCsrKVFlKz0oeWU9KFM9MHx4LndvcmRzW1BlLXl0fDBdKSooRj0wfFAud29yZHNbeXRdKSskZSkvNjcxMDg4NjR8MCwkZT02NzEwODg2''@;'; put 'put ''MyZ5ZTtWLndvcmRzW1BlXT0wfCRlLERlPTB8UWV9cmV0dXJuIDAhPT1EZT9WLndvcmRzW1BlXT0wfERlOlYubGVuZ3RoLS0sVi5zdHJpcCgpfU4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHgsUCl7dmFyIFY7aWYoUD0wfFB8fDEsMTY9PT0oeD14fHwxMCl8fCJoZXgiPT09eCl7Vj0i''@;'; put 'put ''Ijtmb3IodmFyIFQ9MCxTPTAsRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9dGhpcy53b3Jkc1tGXSxDZT0oMTY3NzcyMTUmKHllPDxUfFMpKS50b1N0cmluZygxNik7Vj0wIT0oUz15ZT4+PjI0LVQmMTY3NzcyMTUpfHxGIT09dGhpcy5sZW5ndGgtMT9hZVs2LUNlLmxlbmd0aF0rQ2Ur''@;'; put 'put ''VjpDZStWLChUKz0yKT49MjYmJihULT0yNixGLS0pfWZvcigwIT09UyYmKFY9Uy50b1N0cmluZygxNikrVik7Vi5sZW5ndGglUCE9MDspVj0iMCIrVjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihWPSItIitWKSxWfWlmKHg9PT0oMHx4KSYmeD49MiYmeDw9MzYpe3ZhciBEZT1mZVt4XSxQ''@;'; put 'put ''ZT1kZVt4XTtWPSIiO3ZhciBRZT10aGlzLmNsb25lKCk7Zm9yKFFlLm5lZ2F0aXZlPTA7IVFlLmlzWmVybygpOyl7dmFyICRlPVFlLm1vZG4oUGUpLnRvU3RyaW5nKHgpO1Y9KFFlPVFlLmlkaXZuKFBlKSkuaXNaZXJvKCk/JGUrVjphZVtEZS0kZS5sZW5ndGhdKyRlK1Z9Zm9yKHRoaXMuaXNa''@;'; put 'put ''ZXJvKCkmJihWPSIwIitWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9WSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxOLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB4PXRoaXMud29y''@;'; put 'put ''ZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD94Kz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/eCs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJlkoITEsIk51bWJlciBjYW4g''@;'; put 'put ''b25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy14Onh9LE4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gWSh2b2lkIDAh''@;'; put 'put ''PT1lZSksdGhpcy50b0FycmF5TGlrZShlZSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXkseCxQKX0sTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPXRoaXMuYnl0ZUxlbmd0aCgp''@;'; put 'put ''LFM9Vnx8TWF0aC5tYXgoMSxUKTtZKFQ8PVMsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxZKFM+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBGLHllLENlPSJsZSI9PT1QLERlPW5ldyB4KFMpLFBlPXRoaXMuY2xvbmUo''@;'; put 'put ''KTtpZihDZSl7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVt5ZV09Rjtmb3IoO3llPFM7eWUrKylEZVt5ZV09MH1lbHNle2Zvcih5ZT0wO3llPFMtVDt5ZSsrKURlW3llXT0wO2Zvcih5ZT0wOyFQZS5pc1plcm8oKTt5ZSsrKUY9UGUu''@;'; put 'put ''YW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbUy15ZS0xXT1GfXJldHVybiBEZX0sTi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKHgpe3JldHVybiAzMi1NYXRoLmNsejMyKHgpfTpmdW5jdGlvbih4KXt2YXIgUD14LFY9MDtyZXR1cm4gUD49NDA5NiYmKFYrPTEz''@;'; put 'put ''LFA+Pj49MTMpLFA+PTY0JiYoVis9NyxQPj4+PTcpLFA+PTgmJihWKz00LFA+Pj49NCksUD49MiYmKFYrPTIsUD4+Pj0yKSxWK1B9LE4ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbih4KXtpZigwPT09eClyZXR1cm4gMjY7dmFyIFA9eCxWPTA7cmV0dXJuIDA9PSg4MTkxJlApJiYoVis9''@;'; put 'put ''MTMsUD4+Pj0xMyksMD09KDEyNyZQKSYmKFYrPTcsUD4+Pj03KSwwPT0oMTUmUCkmJihWKz00LFA+Pj49NCksMD09KDMmUCkmJihWKz0yLFA+Pj49MiksMD09KDEmUCkmJlYrKyxWfSxOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgUD10aGlzLl9jb3VudEJpdHModGhpcy53''@;'; put 'put ''b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStQfSxOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLl96ZXJvQml0cyh0''@;'; put 'put ''aGlzLndvcmRzW1BdKTtpZih4Kz1WLDI2IT09VilicmVha31yZXR1cm4geH0sTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiAwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHgpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudGVzdG4oeC0xKT90aGlzLm5vdG4oeCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuaXNO''@;'; put 'put ''ZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxOLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0''@;'; put 'put ''aGlzfSxOLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIFA9MDtQPHgubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPXRoaXMud29yZHNbUF18eC53b3Jkc1tQXTtyZXR1cm4gdGhp''@;'; put 'put ''cy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih4KX0sTi5wcm90b3R5cGUub3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3Io''@;'; put 'put ''eCk6eC5jbG9uZSgpLmlvcih0aGlzKX0sTi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih4KTp4LmNsb25lKCkuaXVvcih0aGlzKX0sTi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oeCl7dmFyIFA7UD10aGlz''@;'; put 'put ''Lmxlbmd0aD54Lmxlbmd0aD94OnRoaXM7Zm9yKHZhciBWPTA7VjxQLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT10aGlzLndvcmRzW1ZdJngud29yZHNbVl07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdWFuZCh4KX0sTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh4KTp4LmNsb25lKCkuaWFuZCh0aGlzKX0sTi5wcm90b3R5cGUudWFu''@;'; put 'put ''ZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHgpOnguY2xvbmUoKS5pdWFuZCh0aGlzKX0sTi5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oeCl7dmFyIFAsVjt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oUD10aGlzLFY9eCk6KFA9eCxW''@;'; put 'put ''PXRoaXMpO2Zvcih2YXIgVD0wO1Q8Vi5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09UC53b3Jkc1tUXV5WLndvcmRzW1RdO2lmKHRoaXMhPT1QKWZvcig7VDxQLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlw''@;'; put 'put ''KCl9LE4ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoeCl9LE4ucHJvdG90eXBlLnhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoeCk6''@;'; put 'put ''eC5jbG9uZSgpLml4b3IodGhpcyl9LE4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcih4KTp4LmNsb25lKCkuaXV4b3IodGhpcyl9LE4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD0wfE1hdGguY2VpbCh4LzI2KSxWPXglMjY7dGhpcy5fZXhwYW5kKFApLFY+MCYmUC0tO2Zvcih2YXIgVD0wO1Q8UDtUKyspdGhpcy53b3Jkc1tUXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tUXTtyZXR1cm4gVj4wJiYodGhpcy53b3Jkc1tUXT1+dGhpcy53''@;'; put 'put ''b3Jkc1tUXSY2NzEwODg2Mz4+MjYtViksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oeCl9LE4ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oeCxQKXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFY9eC8y''@;'; put 'put ''NnwwLFQ9eCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFYrMSksdGhpcy53b3Jkc1tWXT1QP3RoaXMud29yZHNbVl18MTw8VDp0aGlzLndvcmRzW1ZdJn4oMTw8VCksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgpe3ZhciBQLFYsVDtpZigwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSYmMD09PXgubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlKXJldHVybiB4Lm5lZ2F0aXZlPTAsUD10aGlzLmlzdWIoeCkseC5u''@;'; put 'put ''ZWdhdGl2ZT0xLFAuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKSsoMHxULndvcmRzW0ZdKStTKSxTPVA+''@;'; put 'put ''Pj4yNjtmb3IoOzAhPT1TJiZGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pK1MpLFM9UD4+PjI2O2lmKHRoaXMubGVuZ3RoPVYubGVuZ3RoLDAhPT1TKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPVMsdGhpcy5sZW5ndGgrKztlbHNlIGlmKFYh''@;'; put 'put ''PT10aGlzKWZvcig7RjxWLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT1WLndvcmRzW0ZdO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCl7dmFyIFA7cmV0dXJuIDAhPT14Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLFA9dGhpcy5zdWIo''@;'; put 'put ''eCkseC5uZWdhdGl2ZV49MSxQKTowPT09eC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxQPXguc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxQKTp0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh4KTp4LmNsb25lKCkuaWFkZCh0aGlz''@;'; put 'put ''KX0sTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih4KXtpZigwIT09eC5uZWdhdGl2ZSl7eC5uZWdhdGl2ZT0wO3ZhciBQPXRoaXMuaWFkZCh4KTtyZXR1cm4geC5uZWdhdGl2ZT0xLFAuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlz''@;'; put 'put ''LmlhZGQoeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIFYsVCxTPXRoaXMuY21wKHgpO2lmKDA9PT1TKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztTPjA/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3Io''@;'; put 'put ''dmFyIEY9MCx5ZT0wO3llPFQubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSktKDB8VC53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZQO2Zvcig7MCE9PUYmJnllPFYubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSkrRik+PjI2LHRoaXMud29y''@;'; put 'put ''ZHNbeWVdPTY3MTA4ODYzJlA7aWYoMD09PUYmJnllPFYubGVuZ3RoJiZWIT09dGhpcylmb3IoO3llPFYubGVuZ3RoO3llKyspdGhpcy53b3Jkc1t5ZV09Vi53b3Jkc1t5ZV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHllKSxWIT09dGhpcyYmKHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHgpfTt2YXIgQWU9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFMsRix5ZT14LndvcmRzLENlPVAud29yZHMsRGU9Vi53b3JkcyxQZT0wLFFlPTB8eWVbMF0sJGU9ODE5''@;'; put 'put ''MSZRZSxndD1RZT4+PjEzLHl0PTB8eWVbMV0scHQ9ODE5MSZ5dCxtdD15dD4+PjEzLHZ0PTB8eWVbMl0sZnQ9ODE5MSZ2dCxGdD12dD4+PjEzLG9uPTB8eWVbM10sX3Q9ODE5MSZvbixudD1vbj4+PjEzLHFlPTB8eWVbNF0sb3Q9ODE5MSZxZSxSdD1xZT4+PjEzLEN0PTB8eWVbNV0sY3Q9ODE5''@;'; put 'put ''MSZDdCxOdD1DdD4+PjEzLHplPTB8eWVbNl0sWWU9ODE5MSZ6ZSxBdD16ZT4+PjEzLGp0PTB8eWVbN10sSnQ9ODE5MSZqdCxtbj1qdD4+PjEzLHBuPTB8eWVbOF0sYm49ODE5MSZwbixsbj1wbj4+PjEzLE5uPTB8eWVbOV0sa249ODE5MSZObixlcj1Obj4+PjEzLHVyPTB8Q2VbMF0sWG49ODE5''@;'; put 'put ''MSZ1cixGcj11cj4+PjEzLHhyPTB8Q2VbMV0sZW49ODE5MSZ4cixkcj14cj4+PjEzLG5yPTB8Q2VbMl0sd249ODE5MSZuciwkbj1ucj4+PjEzLFl0PTB8Q2VbM10sZ249ODE5MSZZdCxLbj1ZdD4+PjEzLFZ0PTB8Q2VbNF0sc249ODE5MSZWdCxVbj1WdD4+PjEzLF9uPTB8Q2VbNV0sdG49ODE5''@;'; put 'put ''MSZfbixHbj1fbj4+PjEzLFRyPTB8Q2VbNl0sUG49ODE5MSZUcixTcj1Ucj4+PjEzLHZuPTB8Q2VbN10sdW49ODE5MSZ2bixjbj12bj4+PjEzLFNuPTB8Q2VbOF0sR3Q9ODE5MSZTbixFbj1Tbj4+PjEzLGpuPTB8Q2VbOV0scXQ9ODE5MSZqbixMbj1qbj4+PjEzO1YubmVnYXRpdmU9eC5uZWdh''@;'; put 'put ''dGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPTE5O3ZhciBKbj0oUGUrKFQ9TWF0aC5pbXVsKCRlLFhuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bCgkZSxGcikpK01hdGguaW11bChndCxYbil8MCkpPDwxMyl8MDtQZT0oKEY9TWF0aC5pbXVsKGd0LEZyKSkrKFM+Pj4xMyl8MCkrKEpuPj4+''@;'; put 'put ''MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHB0LFhuKSxTPShTPU1hdGguaW11bChwdCxGcikpK01hdGguaW11bChtdCxYbil8MCxGPU1hdGguaW11bChtdCxGcik7dmFyIG9yPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRl''@;'; put 'put ''LGRyKXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGRyKXwwKSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZnQsWG4pLFM9KFM9TWF0aC5pbXVsKGZ0LEZyKSkrTWF0aC5pbXVsKEZ0LFhuKXwwLEY9''@;'; put 'put ''TWF0aC5pbXVsKEZ0LEZyKSxUPVQrTWF0aC5pbXVsKHB0LGVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsZHIpfDApK01hdGguaW11bChtdCxlbil8MCxGPUYrTWF0aC5pbXVsKG10LGRyKXwwO3ZhciBncj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsd24pfDApfDApKygoODE5MSYoUz0oUz1TK01h''@;'; put 'put ''dGguaW11bCgkZSwkbil8MCkrTWF0aC5pbXVsKGd0LHduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCwkbil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKF90LFhuKSxTPShTPU1hdGguaW11bChfdCxGcikpK01hdGguaW11bChu''@;'; put 'put ''dCxYbil8MCxGPU1hdGguaW11bChudCxGciksVD1UK01hdGguaW11bChmdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGRyKXwwKStNYXRoLmltdWwoRnQsZW4pfDAsRj1GK01hdGguaW11bChGdCxkcil8MCxUPVQrTWF0aC5pbXVsKHB0LHduKXwwLFM9KFM9UytNYXRoLmltdWwocHQsJG4p''@;'; put 'put ''fDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5pbXVsKG10LCRuKXwwO3ZhciBKcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsZ24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxLbil8MCkrTWF0aC5pbXVsKGd0LGduKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11''@;'; put 'put ''bChndCxLbil8MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG90LFhuKSxTPShTPU1hdGguaW11bChvdCxGcikpK01hdGguaW11bChSdCxYbil8MCxGPU1hdGguaW11bChSdCxGciksVD1UK01hdGguaW11bChfdCxlbil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKF90LGRyKXwwKStNYXRoLmltdWwobnQsZW4pfDAsRj1GK01hdGguaW11bChudCxkcil8MCxUPVQrTWF0aC5pbXVsKGZ0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsJG4pfDApK01hdGguaW11bChGdCx3bil8MCxGPUYrTWF0aC5pbXVsKEZ0LCRuKXwwLFQ9VCtNYXRoLmltdWwocHQs''@;'; put 'put ''Z24pfDAsUz0oUz1TK01hdGguaW11bChwdCxLbil8MCkrTWF0aC5pbXVsKG10LGduKXwwLEY9RitNYXRoLmltdWwobXQsS24pfDA7dmFyIFZyPShQZSsoVD1UK01hdGguaW11bCgkZSxzbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLFVuKXwwKStNYXRoLmltdWwoZ3Qsc24p''@;'; put 'put ''fDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LFVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoY3QsWG4pLFM9KFM9TWF0aC5pbXVsKGN0LEZyKSkrTWF0aC5pbXVsKE50LFhuKXwwLEY9TWF0aC5pbXVsKE50LEZyKSxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKG90LGVuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsZHIpfDApK01hdGguaW11bChSdCxlbil8MCxGPUYrTWF0aC5pbXVsKFJ0LGRyKXwwLFQ9VCtNYXRoLmltdWwoX3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChfdCwkbil8MCkrTWF0aC5pbXVsKG50LHduKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwobnQsJG4pfDAsVD1UK01hdGguaW11bChmdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEtuKXwwKStNYXRoLmltdWwoRnQsZ24pfDAsRj1GK01hdGguaW11bChGdCxLbil8MCxUPVQrTWF0aC5pbXVsKHB0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsVW4pfDApK01hdGguaW11bCht''@;'; put 'put ''dCxzbil8MCxGPUYrTWF0aC5pbXVsKG10LFVuKXwwO3ZhciB0aT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxHbil8MCkrTWF0aC5pbXVsKGd0LHRuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxHbil8MCkrKFM+''@;'; put 'put ''Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFllLFhuKSxTPShTPU1hdGguaW11bChZZSxGcikpK01hdGguaW11bChBdCxYbil8MCxGPU1hdGguaW11bChBdCxGciksVD1UK01hdGguaW11bChjdCxlbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGRyKXwwKStN''@;'; put 'put ''YXRoLmltdWwoTnQsZW4pfDAsRj1GK01hdGguaW11bChOdCxkcil8MCxUPVQrTWF0aC5pbXVsKG90LHduKXwwLFM9KFM9UytNYXRoLmltdWwob3QsJG4pfDApK01hdGguaW11bChSdCx3bil8MCxGPUYrTWF0aC5pbXVsKFJ0LCRuKXwwLFQ9VCtNYXRoLmltdWwoX3QsZ24pfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChfdCxLbil8MCkrTWF0aC5pbXVsKG50LGduKXwwLEY9RitNYXRoLmltdWwobnQsS24pfDAsVD1UK01hdGguaW11bChmdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFVuKXwwKStNYXRoLmltdWwoRnQsc24pfDAsRj1GK01hdGguaW11bChGdCxVbil8MCxUPVQrTWF0aC5pbXVs''@;'; put 'put ''KHB0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsR24pfDApK01hdGguaW11bChtdCx0bil8MCxGPUYrTWF0aC5pbXVsKG10LEduKXwwO3ZhciBPcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsUG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxTcil8MCkrTWF0aC5pbXVsKGd0''@;'; put 'put ''LFBuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxTcil8MCkrKFM+Pj4xMyl8MCkrKE9yPj4+MjYpfDAsT3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEp0LFhuKSxTPShTPU1hdGguaW11bChKdCxGcikpK01hdGguaW11bChtbixYbil8MCxGPU1hdGguaW11bChtbixGciksVD1U''@;'; put 'put ''K01hdGguaW11bChZZSxlbil8MCxTPShTPVMrTWF0aC5pbXVsKFllLGRyKXwwKStNYXRoLmltdWwoQXQsZW4pfDAsRj1GK01hdGguaW11bChBdCxkcil8MCxUPVQrTWF0aC5pbXVsKGN0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoY3QsJG4pfDApK01hdGguaW11bChOdCx3bil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKE50LCRuKXwwLFQ9VCtNYXRoLmltdWwob3QsZ24pfDAsUz0oUz1TK01hdGguaW11bChvdCxLbil8MCkrTWF0aC5pbXVsKFJ0LGduKXwwLEY9RitNYXRoLmltdWwoUnQsS24pfDAsVD1UK01hdGguaW11bChfdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LFVuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwobnQsc24pfDAsRj1GK01hdGguaW11bChudCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsR24pfDApK01hdGguaW11bChGdCx0bil8MCxGPUYrTWF0aC5pbXVsKEZ0LEduKXwwLFQ9VCtNYXRoLmltdWwocHQsUG4pfDAsUz0oUz1TK01hdGguaW11''@;'; put 'put ''bChwdCxTcil8MCkrTWF0aC5pbXVsKG10LFBuKXwwLEY9RitNYXRoLmltdWwobXQsU3IpfDA7dmFyIGxpPShQZSsoVD1UK01hdGguaW11bCgkZSx1bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGNuKXwwKStNYXRoLmltdWwoZ3QsdW4pfDApKTw8MTMpfDA7UGU9KChGPUYr''@;'; put 'put ''TWF0aC5pbXVsKGd0LGNuKXwwKSsoUz4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZyKSkrTWF0aC5pbXVsKGxuLFhuKXwwLEY9TWF0aC5pbXVsKGxuLEZyKSxUPVQrTWF0aC5pbXVsKEp0LGVuKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoSnQsZHIpfDApK01hdGguaW11bChtbixlbil8MCxGPUYrTWF0aC5pbXVsKG1uLGRyKXwwLFQ9VCtNYXRoLmltdWwoWWUsd24pfDAsUz0oUz1TK01hdGguaW11bChZZSwkbil8MCkrTWF0aC5pbXVsKEF0LHduKXwwLEY9RitNYXRoLmltdWwoQXQsJG4pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChjdCxnbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEtuKXwwKStNYXRoLmltdWwoTnQsZ24pfDAsRj1GK01hdGguaW11bChOdCxLbil8MCxUPVQrTWF0aC5pbXVsKG90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsVW4pfDApK01hdGguaW11bChSdCxzbil8MCxGPUYrTWF0aC5pbXVs''@;'; put 'put ''KFJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwoX3QsdG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxHbil8MCkrTWF0aC5pbXVsKG50LHRuKXwwLEY9RitNYXRoLmltdWwobnQsR24pfDAsVD1UK01hdGguaW11bChmdCxQbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFNyKXwwKStNYXRoLmltdWwoRnQs''@;'; put 'put ''UG4pfDAsRj1GK01hdGguaW11bChGdCxTcil8MCxUPVQrTWF0aC5pbXVsKHB0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwocHQsY24pfDApK01hdGguaW11bChtdCx1bil8MCxGPUYrTWF0aC5pbXVsKG10LGNuKXwwO3ZhciBJaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsR3QpfDApfDApKygoODE5''@;'; put 'put ''MSYoUz0oUz1TK01hdGguaW11bCgkZSxFbil8MCkrTWF0aC5pbXVsKGd0LEd0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxFbil8MCkrKFM+Pj4xMyl8MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFhuKSxTPShTPU1hdGguaW11bChrbixGcikp''@;'; put 'put ''K01hdGguaW11bChlcixYbil8MCxGPU1hdGguaW11bChlcixGciksVD1UK01hdGguaW11bChibixlbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGRyKXwwKStNYXRoLmltdWwobG4sZW4pfDAsRj1GK01hdGguaW11bChsbixkcil8MCxUPVQrTWF0aC5pbXVsKEp0LHduKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoSnQsJG4pfDApK01hdGguaW11bChtbix3bil8MCxGPUYrTWF0aC5pbXVsKG1uLCRuKXwwLFQ9VCtNYXRoLmltdWwoWWUsZ24pfDAsUz0oUz1TK01hdGguaW11bChZZSxLbil8MCkrTWF0aC5pbXVsKEF0LGduKXwwLEY9RitNYXRoLmltdWwoQXQsS24pfDAsVD1UK01hdGguaW11bChj''@;'; put 'put ''dCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LFVuKXwwKStNYXRoLmltdWwoTnQsc24pfDAsRj1GK01hdGguaW11bChOdCxVbil8MCxUPVQrTWF0aC5pbXVsKG90LHRuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsR24pfDApK01hdGguaW11bChSdCx0bil8MCxGPUYrTWF0aC5pbXVsKFJ0LEdu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoX3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxTcil8MCkrTWF0aC5pbXVsKG50LFBuKXwwLEY9RitNYXRoLmltdWwobnQsU3IpfDAsVD1UK01hdGguaW11bChmdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGNuKXwwKStNYXRoLmltdWwoRnQsdW4pfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChGdCxjbil8MCxUPVQrTWF0aC5pbXVsKHB0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwocHQsRW4pfDApK01hdGguaW11bChtdCxHdCl8MCxGPUYrTWF0aC5pbXVsKG10LEVuKXwwO3ZhciByMD0oUGUrKFQ9VCtNYXRoLmltdWwoJGUscXQpfDApfDApKygoODE5MSYoUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bCgkZSxMbil8MCkrTWF0aC5pbXVsKGd0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxMbil8MCkrKFM+Pj4xMyl8MCkrKHIwPj4+MjYpfDAscjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLGVuKSxTPShTPU1hdGguaW11bChrbixkcikpK01hdGgu''@;'; put 'put ''aW11bChlcixlbil8MCxGPU1hdGguaW11bChlcixkciksVD1UK01hdGguaW11bChibix3bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLCRuKXwwKStNYXRoLmltdWwobG4sd24pfDAsRj1GK01hdGguaW11bChsbiwkbil8MCxUPVQrTWF0aC5pbXVsKEp0LGduKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''SnQsS24pfDApK01hdGguaW11bChtbixnbil8MCxGPUYrTWF0aC5pbXVsKG1uLEtuKXwwLFQ9VCtNYXRoLmltdWwoWWUsc24pfDAsUz0oUz1TK01hdGguaW11bChZZSxVbil8MCkrTWF0aC5pbXVsKEF0LHNuKXwwLEY9RitNYXRoLmltdWwoQXQsVW4pfDAsVD1UK01hdGguaW11bChjdCx0bil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKGN0LEduKXwwKStNYXRoLmltdWwoTnQsdG4pfDAsRj1GK01hdGguaW11bChOdCxHbil8MCxUPVQrTWF0aC5pbXVsKG90LFBuKXwwLFM9KFM9UytNYXRoLmltdWwob3QsU3IpfDApK01hdGguaW11bChSdCxQbil8MCxGPUYrTWF0aC5pbXVsKFJ0LFNyKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoX3QsdW4pfDAsUz0oUz1TK01hdGguaW11bChfdCxjbil8MCkrTWF0aC5pbXVsKG50LHVuKXwwLEY9RitNYXRoLmltdWwobnQsY24pfDAsVD1UK01hdGguaW11bChmdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEVuKXwwKStNYXRoLmltdWwoRnQsR3QpfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChGdCxFbil8MDt2YXIgZTA9KFBlKyhUPVQrTWF0aC5pbXVsKHB0LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwocHQsTG4pfDApK01hdGguaW11bChtdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobXQsTG4pfDApKyhTPj4+MTMpfDApKyhlMD4+''@;'; put 'put ''PjI2KXwwLGUwJj02NzEwODg2MyxUPU1hdGguaW11bChrbix3biksUz0oUz1NYXRoLmltdWwoa24sJG4pKStNYXRoLmltdWwoZXIsd24pfDAsRj1NYXRoLmltdWwoZXIsJG4pLFQ9VCtNYXRoLmltdWwoYm4sZ24pfDAsUz0oUz1TK01hdGguaW11bChibixLbil8MCkrTWF0aC5pbXVsKGxuLGdu''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwobG4sS24pfDAsVD1UK01hdGguaW11bChKdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LFVuKXwwKStNYXRoLmltdWwobW4sc24pfDAsRj1GK01hdGguaW11bChtbixVbil8MCxUPVQrTWF0aC5pbXVsKFllLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoWWUsR24p''@;'; put 'put ''fDApK01hdGguaW11bChBdCx0bil8MCxGPUYrTWF0aC5pbXVsKEF0LEduKXwwLFQ9VCtNYXRoLmltdWwoY3QsUG4pfDAsUz0oUz1TK01hdGguaW11bChjdCxTcil8MCkrTWF0aC5pbXVsKE50LFBuKXwwLEY9RitNYXRoLmltdWwoTnQsU3IpfDAsVD1UK01hdGguaW11bChvdCx1bil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKG90LGNuKXwwKStNYXRoLmltdWwoUnQsdW4pfDAsRj1GK01hdGguaW11bChSdCxjbil8MCxUPVQrTWF0aC5pbXVsKF90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoX3QsRW4pfDApK01hdGguaW11bChudCxHdCl8MCxGPUYrTWF0aC5pbXVsKG50LEVuKXwwO3ZhciBkMD0o''@;'; put 'put ''UGUrKFQ9VCtNYXRoLmltdWwoZnQscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChmdCxMbil8MCkrTWF0aC5pbXVsKEZ0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChGdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0''@;'; put 'put ''aC5pbXVsKGtuLGduKSxTPShTPU1hdGguaW11bChrbixLbikpK01hdGguaW11bChlcixnbil8MCxGPU1hdGguaW11bChlcixLbiksVD1UK01hdGguaW11bChibixzbil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLFVuKXwwKStNYXRoLmltdWwobG4sc24pfDAsRj1GK01hdGguaW11bChsbixVbil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKEp0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsR24pfDApK01hdGguaW11bChtbix0bil8MCxGPUYrTWF0aC5pbXVsKG1uLEduKXwwLFQ9VCtNYXRoLmltdWwoWWUsUG4pfDAsUz0oUz1TK01hdGguaW11bChZZSxTcil8MCkrTWF0aC5pbXVsKEF0LFBuKXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoQXQsU3IpfDAsVD1UK01hdGguaW11bChjdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGN0LGNuKXwwKStNYXRoLmltdWwoTnQsdW4pfDAsRj1GK01hdGguaW11bChOdCxjbil8MCxUPVQrTWF0aC5pbXVsKG90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwob3QsRW4pfDApK01h''@;'; put 'put ''dGguaW11bChSdCxHdCl8MCxGPUYrTWF0aC5pbXVsKFJ0LEVuKXwwO3ZhciBfMD0oUGUrKFQ9VCtNYXRoLmltdWwoX3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChfdCxMbil8MCkrTWF0aC5pbXVsKG50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChudCxM''@;'; put 'put ''bil8MCkrKFM+Pj4xMyl8MCkrKF8wPj4+MjYpfDAsXzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHNuKSxTPShTPU1hdGguaW11bChrbixVbikpK01hdGguaW11bChlcixzbil8MCxGPU1hdGguaW11bChlcixVbiksVD1UK01hdGguaW11bChibix0bil8MCxTPShTPVMrTWF0aC5pbXVsKGJu''@;'; put 'put ''LEduKXwwKStNYXRoLmltdWwobG4sdG4pfDAsRj1GK01hdGguaW11bChsbixHbil8MCxUPVQrTWF0aC5pbXVsKEp0LFBuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsU3IpfDApK01hdGguaW11bChtbixQbil8MCxGPUYrTWF0aC5pbXVsKG1uLFNyKXwwLFQ9VCtNYXRoLmltdWwoWWUsdW4pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChZZSxjbil8MCkrTWF0aC5pbXVsKEF0LHVuKXwwLEY9RitNYXRoLmltdWwoQXQsY24pfDAsVD1UK01hdGguaW11bChjdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGN0LEVuKXwwKStNYXRoLmltdWwoTnQsR3QpfDAsRj1GK01hdGguaW11bChOdCxFbil8MDt2YXIg''@;'; put 'put ''VTA9KFBlKyhUPVQrTWF0aC5pbXVsKG90LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob3QsTG4pfDApK01hdGguaW11bChSdCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoUnQsTG4pfDApKyhTPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2MyxU''@;'; put 'put ''PU1hdGguaW11bChrbix0biksUz0oUz1NYXRoLmltdWwoa24sR24pKStNYXRoLmltdWwoZXIsdG4pfDAsRj1NYXRoLmltdWwoZXIsR24pLFQ9VCtNYXRoLmltdWwoYm4sUG4pfDAsUz0oUz1TK01hdGguaW11bChibixTcil8MCkrTWF0aC5pbXVsKGxuLFBuKXwwLEY9RitNYXRoLmltdWwobG4s''@;'; put 'put ''U3IpfDAsVD1UK01hdGguaW11bChKdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGNuKXwwKStNYXRoLmltdWwobW4sdW4pfDAsRj1GK01hdGguaW11bChtbixjbil8MCxUPVQrTWF0aC5pbXVsKFllLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoWWUsRW4pfDApK01hdGguaW11bChBdCxHdCl8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKEF0LEVuKXwwO3ZhciBCaT0oUGUrKFQ9VCtNYXRoLmltdWwoY3QscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChjdCxMbil8MCkrTWF0aC5pbXVsKE50LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChOdCxMbil8MCkrKFM+Pj4xMyl8''@;'; put 'put ''MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLFBuKSxTPShTPU1hdGguaW11bChrbixTcikpK01hdGguaW11bChlcixQbil8MCxGPU1hdGguaW11bChlcixTciksVD1UK01hdGguaW11bChibix1bil8MCxTPShTPVMrTWF0aC5pbXVsKGJuLGNuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwobG4sdW4pfDAsRj1GK01hdGguaW11bChsbixjbil8MCxUPVQrTWF0aC5pbXVsKEp0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoSnQsRW4pfDApK01hdGguaW11bChtbixHdCl8MCxGPUYrTWF0aC5pbXVsKG1uLEVuKXwwO3ZhciBqMD0oUGUrKFQ9VCtNYXRoLmltdWwoWWUscXQpfDApfDAp''@;'; put 'put ''KygoODE5MSYoUz0oUz1TK01hdGguaW11bChZZSxMbil8MCkrTWF0aC5pbXVsKEF0LHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChBdCxMbil8MCkrKFM+Pj4xMyl8MCkrKGowPj4+MjYpfDAsajAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGtuLHVuKSxTPShTPU1hdGguaW11bChr''@;'; put 'put ''bixjbikpK01hdGguaW11bChlcix1bil8MCxGPU1hdGguaW11bChlcixjbiksVD1UK01hdGguaW11bChibixHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGJuLEVuKXwwKStNYXRoLmltdWwobG4sR3QpfDAsRj1GK01hdGguaW11bChsbixFbil8MDt2YXIgQW89KFBlKyhUPVQrTWF0aC5pbXVsKEp0''@;'; put 'put ''LHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoSnQsTG4pfDApK01hdGguaW11bChtbixxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobW4sTG4pfDApKyhTPj4+MTMpfDApKyhBbz4+PjI2KXwwLEFvJj02NzEwODg2MyxUPU1hdGguaW11bChrbixHdCksUz0oUz1N''@;'; put 'put ''YXRoLmltdWwoa24sRW4pKStNYXRoLmltdWwoZXIsR3QpfDAsRj1NYXRoLmltdWwoZXIsRW4pO3ZhciBLbz0oUGUrKFQ9VCtNYXRoLmltdWwoYm4scXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChibixMbil8MCkrTWF0aC5pbXVsKGxuLHF0KXwwKSk8PDEzKXwwO1BlPSgoRj1G''@;'; put 'put ''K01hdGguaW11bChsbixMbil8MCkrKFM+Pj4xMyl8MCkrKEtvPj4+MjYpfDAsS28mPTY3MTA4ODYzO3ZhciBmYT0oUGUrKFQ9TWF0aC5pbXVsKGtuLHF0KSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChrbixMbikpK01hdGguaW11bChlcixxdCl8MCkpPDwxMyl8MDtyZXR1cm4gUGU9KChG''@;'; put 'put ''PU1hdGguaW11bChlcixMbikpKyhTPj4+MTMpfDApKyhmYT4+PjI2KXwwLGZhJj02NzEwODg2MyxEZVswXT1KbixEZVsxXT1vcixEZVsyXT1ncixEZVszXT1KcixEZVs0XT1WcixEZVs1XT10aSxEZVs2XT1PcixEZVs3XT1saSxEZVs4XT1JaSxEZVs5XT1yMCxEZVsxMF09ZTAsRGVbMTFdPWQw''@;'; put 'put ''LERlWzEyXT1fMCxEZVsxM109VTAsRGVbMTRdPUJpLERlWzE1XT1qMCxEZVsxNl09QW8sRGVbMTddPUtvLERlWzE4XT1mYSwwIT09UGUmJihEZVsxOV09UGUsVi5sZW5ndGgrKyksVn07ZnVuY3Rpb24ga2UoeCxQLFYpe3JldHVybihuZXcgU2UpLm11bHAoeCxQLFYpfWZ1bmN0aW9uIFNlKHgs''@;'; put 'put ''UCl7dGhpcy54PXgsdGhpcy55PVB9TWF0aC5pbXVsfHwoQWU9dmUpLE4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHgsUCl7dmFyIFQ9dGhpcy5sZW5ndGgreC5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09eC5sZW5ndGg/QWUodGhpcyx4LFApOlQ8NjM/dmUodGhpcyx4''@;'; put 'put ''LFApOlQ8MTAyND9mdW5jdGlvbihTLEYseWUpe3llLm5lZ2F0aXZlPUYubmVnYXRpdmVeUy5uZWdhdGl2ZSx5ZS5sZW5ndGg9Uy5sZW5ndGgrRi5sZW5ndGg7Zm9yKHZhciBDZT0wLERlPTAsUGU9MDtQZTx5ZS5sZW5ndGgtMTtQZSsrKXt2YXIgUWU9RGU7RGU9MDtmb3IodmFyICRlPTY3MTA4''@;'; put 'put ''ODYzJkNlLGd0PU1hdGgubWluKFBlLEYubGVuZ3RoLTEpLHl0PU1hdGgubWF4KDAsUGUtUy5sZW5ndGgrMSk7eXQ8PWd0O3l0Kyspe3ZhciBtdD0oMHxTLndvcmRzW1BlLXl0XSkqKDB8Ri53b3Jkc1t5dF0pLHZ0PTY3MTA4ODYzJm10OyRlPTY3MTA4ODYzJih2dD12dCskZXwwKSxEZSs9KFFl''@;'; put 'put ''PShRZT1RZSsobXQvNjcxMDg4NjR8MCl8MCkrKHZ0Pj4+MjYpfDApPj4+MjYsUWUmPTY3MTA4ODYzfXllLndvcmRzW1BlXT0kZSxDZT1RZSxRZT1EZX1yZXR1cm4gMCE9PUNlP3llLndvcmRzW1BlXT1DZTp5ZS5sZW5ndGgtLSx5ZS5zdHJpcCgpfSh0aGlzLHgsUCk6a2UodGhpcyx4LFApfSxT''@;'; put 'put ''ZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9Ti5wcm90b3R5cGUuX2NvdW50Qml0cyh4KS0xLFQ9MDtUPHg7VCsrKVBbVF09dGhpcy5yZXZCaW4oVCxWLHgpO3JldHVybiBQfSxTZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHgsUCxW''@;'; put 'put ''KXtpZigwPT09eHx8eD09PVYtMSlyZXR1cm4geDtmb3IodmFyIFQ9MCxTPTA7UzxQO1MrKylUfD0oMSZ4KTw8UC1TLTEseD4+PTE7cmV0dXJuIFR9LFNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXtmb3IodmFyIHllPTA7eWU8Rjt5ZSsrKVRbeWVdPVBbeFt5ZV1d''@;'; put 'put ''LFNbeWVdPVZbeFt5ZV1dfSxTZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXt0aGlzLnBlcm11dGUoRix4LFAsVixULFMpO2Zvcih2YXIgeWU9MTt5ZTxTO3llPDw9MSlmb3IodmFyIENlPXllPDwxLERlPU1hdGguY29zKDIqTWF0aC5QSS9DZSksUGU9TWF0aC5z''@;'; put 'put ''aW4oMipNYXRoLlBJL0NlKSxRZT0wO1FlPFM7UWUrPUNlKWZvcih2YXIgJGU9RGUsZ3Q9UGUseXQ9MDt5dDx5ZTt5dCsrKXt2YXIgcHQ9VltRZSt5dF0sbXQ9VFtRZSt5dF0sdnQ9VltRZSt5dCt5ZV0sZnQ9VFtRZSt5dCt5ZV0sRnQ9JGUqdnQtZ3QqZnQ7ZnQ9JGUqZnQrZ3QqdnQsVltRZSt5''@;'; put 'put ''dF09cHQrKHZ0PUZ0KSxUW1FlK3l0XT1tdCtmdCxWW1FlK3l0K3llXT1wdC12dCxUW1FlK3l0K3llXT1tdC1mdCx5dCE9PUNlJiYoRnQ9RGUqJGUtUGUqZ3QsZ3Q9RGUqZ3QrUGUqJGUsJGU9RnQpfX0sU2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHgsUCl7dmFyIFY9MXxNYXRo''@;'; put 'put ''Lm1heChQLHgpLFQ9MSZWLFM9MDtmb3IoVj1WLzJ8MDtWO1Y+Pj49MSlTKys7cmV0dXJuIDE8PFMrMStUfSxTZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKHgsUCxWKXtpZighKFY8PTEpKWZvcih2YXIgVD0wO1Q8Vi8yO1QrKyl7dmFyIFM9eFtUXTt4W1RdPXhbVi1ULTFdLHhbVi1U''@;'; put 'put ''LTFdPVMsUz1QW1RdLFBbVF09LVBbVi1ULTFdLFBbVi1ULTFdPS1TfX0sU2UucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj0wLFQ9MDtUPFAvMjtUKyspe3ZhciBTPTgxOTIqTWF0aC5yb3VuZCh4WzIqVCsxXS9QKStNYXRoLnJvdW5kKHhbMipUXS9QKStW''@;'; put 'put ''O3hbVF09NjcxMDg4NjMmUyxWPVM8NjcxMDg4NjQ/MDpTLzY3MTA4ODY0fDB9cmV0dXJuIHh9LFNlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHgsUCxWLFQpe2Zvcih2YXIgUz0wLEY9MDtGPFA7RisrKVZbMipGXT04MTkxJihTKz0wfHhbRl0pLFZbMipGKzFdPTgxOTEmKFM+Pj49''@;'; put 'put ''MTMpLFM+Pj49MTM7Zm9yKEY9MipQO0Y8VDsrK0YpVltGXT0wO1koMD09PVMpLFkoMD09KC04MTkyJlMpKX0sU2UucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPW5ldyBBcnJheSh4KSxWPTA7Vjx4O1YrKylQW1ZdPTA7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5tdWxwPWZ1''@;'; put 'put ''bmN0aW9uKHgsUCxWKXt2YXIgVD0yKnRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsUC5sZW5ndGgpLFM9dGhpcy5tYWtlUkJUKFQpLEY9dGhpcy5zdHViKFQpLHllPW5ldyBBcnJheShUKSxDZT1uZXcgQXJyYXkoVCksRGU9bmV3IEFycmF5KFQpLFBlPW5ldyBBcnJheShUKSxRZT1uZXcgQXJy''@;'; put 'put ''YXkoVCksJGU9bmV3IEFycmF5KFQpLGd0PVYud29yZHM7Z3QubGVuZ3RoPVQsdGhpcy5jb252ZXJ0MTNiKHgud29yZHMseC5sZW5ndGgseWUsVCksdGhpcy5jb252ZXJ0MTNiKFAud29yZHMsUC5sZW5ndGgsUGUsVCksdGhpcy50cmFuc2Zvcm0oeWUsRixDZSxEZSxULFMpLHRoaXMudHJhbnNm''@;'; put 'put ''b3JtKFBlLEYsUWUsJGUsVCxTKTtmb3IodmFyIHl0PTA7eXQ8VDt5dCsrKXt2YXIgcHQ9Q2VbeXRdKlFlW3l0XS1EZVt5dF0qJGVbeXRdO0RlW3l0XT1DZVt5dF0qJGVbeXRdK0RlW3l0XSpRZVt5dF0sQ2VbeXRdPXB0fXJldHVybiB0aGlzLmNvbmp1Z2F0ZShDZSxEZSxUKSx0aGlzLnRyYW5z''@;'; put 'put ''Zm9ybShDZSxEZSxndCxGLFQsUyksdGhpcy5jb25qdWdhdGUoZ3QsRixUKSx0aGlzLm5vcm1hbGl6ZTEzYihndCxUKSxWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5uZWdhdGl2ZSxWLmxlbmd0aD14Lmxlbmd0aCtQLmxlbmd0aCxWLnN0cmlwKCl9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbih4''@;'; put 'put ''KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLHRoaXMubXVsVG8oeCxQKX0sTi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5n''@;'; put 'put ''dGgreC5sZW5ndGgpLGtlKHRoaXMseCxQKX0sTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHgsdGhpcyl9LE4ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpO2Zvcih2YXIg''@;'; put 'put ''UD0wLFY9MDtWPHRoaXMubGVuZ3RoO1YrKyl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkqeCxTPSg2NzEwODg2MyZUKSsoNjcxMDg4NjMmUCk7UD4+PTI2LFArPVQvNjcxMDg4NjR8MCxQKz1TPj4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZTfXJldHVybiAwIT09UCYmKHRoaXMud29yZHNb''@;'; put 'put ''Vl09UCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeCl9LE4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgpe3ZhciBQPWZ1bmN0aW9uKEYpe2Zvcih2YXIgeWU9bmV3IEFycmF5KEYuYml0TGVuZ3RoKCkpLENlPTA7Q2U8eWUubGVuZ3RoO0NlKyspe3ZhciBQZT1DZSUyNjt5ZVtDZV09KEYud29yZHNb''@;'; put 'put ''Q2UvMjZ8MF0mMTw8UGUpPj4+UGV9cmV0dXJuIHllfSh4KTtpZigwPT09UC5sZW5ndGgpcmV0dXJuIG5ldyBOKDEpO2Zvcih2YXIgVj10aGlzLFQ9MDtUPFAubGVuZ3RoJiYwPT09UFtUXTtUKyssVj1WLnNxcigpKTtpZigrK1Q8UC5sZW5ndGgpZm9yKHZhciBTPVYuc3FyKCk7VDxQLmxlbmd0''@;'; put 'put ''aDtUKyssUz1TLnNxcigpKTAhPT1QW1RdJiYoVj1WLm11bChTKSk7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFAsVj14JTI2LFQ9KHgtVikvMjYsUz02NzEwODg2Mz4+PjI2LVY8PDI2LVY7aWYoMCE9PVYp''@;'; put 'put ''e3ZhciBGPTA7Zm9yKFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIHllPXRoaXMud29yZHNbUF0mUzt0aGlzLndvcmRzW1BdPSgwfHRoaXMud29yZHNbUF0pLXllPDxWfEYsRj15ZT4+PjI2LVZ9RiYmKHRoaXMud29yZHNbUF09Rix0aGlzLmxlbmd0aCsrKX1pZigwIT09VCl7Zm9yKFA9dGhp''@;'; put 'put ''cy5sZW5ndGgtMTtQPj0wO1AtLSl0aGlzLndvcmRzW1ArVF09dGhpcy53b3Jkc1tQXTtmb3IoUD0wO1A8VDtQKyspdGhpcy53b3Jkc1tQXT0wO3RoaXMubGVuZ3RoKz1UfXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PT10aGlz''@;'; put 'put ''Lm5lZ2F0aXZlKSx0aGlzLml1c2hsbih4KX0sTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVDtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCksVD1QPyhQLVAlMjYpLzI2OjA7dmFyIFM9eCUyNixGPU1hdGgubWluKCh4LVMpLzI2LHRoaXMubGVuZ3RoKSx5ZT02NzEw''@;'; put 'put ''ODg2M142NzEwODg2Mz4+PlM8PFMsQ2U9VjtpZihULT1GLFQ9TWF0aC5tYXgoMCxUKSxDZSl7Zm9yKHZhciBEZT0wO0RlPEY7RGUrKylDZS53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZV07Q2UubGVuZ3RoPUZ9aWYoMCE9PUYpaWYodGhpcy5sZW5ndGg+Rilmb3IodGhpcy5sZW5ndGgtPUYsRGU9''@;'; put 'put ''MDtEZTx0aGlzLmxlbmd0aDtEZSsrKXRoaXMud29yZHNbRGVdPXRoaXMud29yZHNbRGUrRl07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgUGU9MDtmb3IoRGU9dGhpcy5sZW5ndGgtMTtEZT49MCYmKDAhPT1QZXx8RGU+PVQpO0RlLS0pe3ZhciBRZT0wfHRoaXMud29y''@;'; put 'put ''ZHNbRGVdO3RoaXMud29yZHNbRGVdPVBlPDwyNi1TfFFlPj4+UyxQZT1RZSZ5ZX1yZXR1cm4gQ2UmJjAhPT1QZSYmKENlLndvcmRzW0NlLmxlbmd0aCsrXT1QZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5''@;'; put 'put ''cGUuaXNocm49ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih4LFAsVil9LE4ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih4KX0sTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oeCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oeCl9LE4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih4KX0sTi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oeCl9LE4ucHJvdG90eXBlLnRlc3Ru''@;'; put 'put ''PWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Vnx8ISh0aGlzLndvcmRzW1ZdJjE8PFApKX0sTi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4''@;'; put 'put ''Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1WP3RoaXM6KDAhPT1QJiZWKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oVix0aGlzLmxlbmd0aCks''@;'; put 'put ''MCE9PVAmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PlA8PFApLHRoaXMuc3RyaXAoKSl9LE4ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHgpfSxOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih4''@;'; put 'put ''KXtyZXR1cm4gWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwP3RoaXMuaXN1Ym4oLXgpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8eD8odGhpcy53b3Jkc1swXT14LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHgpfSxOLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oeCl7dGhpcy53b3Jkc1swXSs9eDtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRz''@;'; put 'put ''W1BdPj02NzEwODg2NDtQKyspdGhpcy53b3Jkc1tQXS09NjcxMDg4NjQsUD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tQKzFdPTE6dGhpcy53b3Jkc1tQKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFArMSksdGhpc30sTi5wcm90b3R5cGUuaXN1Ym49''@;'; put 'put ''ZnVuY3Rpb24oeCl7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwKXJldHVybiB0aGlzLmlhZGRuKC14KTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53''@;'; put 'put ''b3Jkc1swXS09eCwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF08MDtQKyspdGhpcy53b3Jkc1tQXSs9NjcxMDg4NjQs''@;'; put 'put ''dGhpcy53b3Jkc1tQKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbih4KX0sTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKHgpfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTO3RoaXMuX2V4cGFu''@;'; put 'put ''ZCh4Lmxlbmd0aCtWKTt2YXIgeWU9MDtmb3IoVD0wO1Q8eC5sZW5ndGg7VCsrKXtTPSgwfHRoaXMud29yZHNbVCtWXSkreWU7dmFyIENlPSgwfHgud29yZHNbVF0pKlA7eWU9KChTLT02NzEwODg2MyZDZSk+PjI2KS0oQ2UvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlN9''@;'; put 'put ''Zm9yKDtUPHRoaXMubGVuZ3RoLVY7VCsrKXllPShTPSgwfHRoaXMud29yZHNbVCtWXSkreWUpPj4yNix0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmUztpZigwPT09eWUpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoWSgtMT09PXllKSx5ZT0wLFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl5ZT0oUz0t''@;'; put 'put ''KDB8dGhpcy53b3Jkc1tUXSkreWUpPj4yNix0aGlzLndvcmRzW1RdPTY3MTA4ODYzJlM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKHgsUCl7dmFyIFYsVD10aGlzLmNsb25lKCksUz14LEY9MHxTLndvcmRzW1MubGVu''@;'; put 'put ''Z3RoLTFdOzAhPShWPTI2LXRoaXMuX2NvdW50Qml0cyhGKSkmJihTPVMudXNobG4oViksVC5pdXNobG4oViksRj0wfFMud29yZHNbUy5sZW5ndGgtMV0pO3ZhciB5ZSxDZT1ULmxlbmd0aC1TLmxlbmd0aDtpZigibW9kIiE9PVApeyh5ZT1uZXcgTihudWxsKSkubGVuZ3RoPUNlKzEseWUud29y''@;'; put 'put ''ZHM9bmV3IEFycmF5KHllLmxlbmd0aCk7Zm9yKHZhciBEZT0wO0RlPHllLmxlbmd0aDtEZSsrKXllLndvcmRzW0RlXT0wfXZhciBQZT1ULmNsb25lKCkuX2lzaGxuc3VibXVsKFMsMSxDZSk7MD09PVBlLm5lZ2F0aXZlJiYoVD1QZSx5ZSYmKHllLndvcmRzW0NlXT0xKSk7Zm9yKHZhciBRZT1D''@;'; put 'put ''ZS0xO1FlPj0wO1FlLS0pe3ZhciAkZT02NzEwODg2NCooMHxULndvcmRzW1MubGVuZ3RoK1FlXSkrKDB8VC53b3Jkc1tTLmxlbmd0aCtRZS0xXSk7Zm9yKCRlPU1hdGgubWluKCRlL0Z8MCw2NzEwODg2MyksVC5faXNobG5zdWJtdWwoUywkZSxRZSk7MCE9PVQubmVnYXRpdmU7KSRlLS0sVC5u''@;'; put 'put ''ZWdhdGl2ZT0wLFQuX2lzaGxuc3VibXVsKFMsMSxRZSksVC5pc1plcm8oKXx8KFQubmVnYXRpdmVePTEpO3llJiYoeWUud29yZHNbUWVdPSRlKX1yZXR1cm4geWUmJnllLnN0cmlwKCksVC5zdHJpcCgpLCJkaXYiIT09UCYmMCE9PVYmJlQuaXVzaHJuKFYpLHtkaXY6eWV8fG51bGwsbW9kOlR9''@;'; put 'put ''fSxOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKCF4LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IE4oMCksbW9kOm5ldyBOKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmU/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeCxQKSwibW9k''@;'; put 'put ''IiE9PVAmJihUPUYuZGl2Lm5lZygpKSwiZGl2IiE9PVAmJihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlhZGQoeCkpLHtkaXY6VCxtb2Q6U30pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZT8oRj10aGlzLmRpdm1vZCh4Lm5lZygpLFApLCJtb2QiIT09UCYm''@;'; put 'put ''KFQ9Ri5kaXYubmVnKCkpLHtkaXY6VCxtb2Q6Ri5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZ4Lm5lZ2F0aXZlKT8oRj10aGlzLm5lZygpLmRpdm1vZCh4Lm5lZygpLFApLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaXN1Yih4KSkse2RpdjpGLmRpdixt''@;'; put 'put ''b2Q6U30pOngubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh4KTwwP3tkaXY6bmV3IE4oMCksbW9kOnRoaXN9OjE9PT14Lmxlbmd0aD8iZGl2Ij09PVA/e2Rpdjp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09UD97ZGl2Om51bGwsbW9kOm5ldyBOKHRoaXMubW9k''@;'; put 'put ''bih4LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHgsUCk7dmFyIFQsUyxGfSxOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsImRpdiIsITEp''@;'; put 'put ''LmRpdn0sTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCExKS5tb2R9LE4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITApLm1vZH0sTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24o''@;'; put 'put ''eCl7dmFyIFA9dGhpcy5kaXZtb2QoeCk7aWYoUC5tb2QuaXNaZXJvKCkpcmV0dXJuIFAuZGl2O3ZhciBWPTAhPT1QLmRpdi5uZWdhdGl2ZT9QLm1vZC5pc3ViKHgpOlAubW9kLFQ9eC51c2hybigxKSxTPXguYW5kbG4oMSksRj1WLmNtcChUKTtyZXR1cm4gRjwwfHwxPT09UyYmMD09PUY/UC5k''@;'; put 'put ''aXY6MCE9PVAuZGl2Lm5lZ2F0aXZlP1AuZGl2LmlzdWJuKDEpOlAuZGl2LmlhZGRuKDEpfSxOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD02NzEwODg2NCV4LFY9MCxUPXRoaXMubGVuZ3RoLTE7VD49MDtULS0pVj0oUCpWKygwfHRoaXMud29y''@;'; put 'put ''ZHNbVF0pKSV4O3JldHVybiBWfSxOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKzY3MTA4ODY0KlA7dGhpcy53b3Jkc1tWXT1UL3h8MCxQPVQleH1y''@;'; put 'put ''ZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oeCl9LE4ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSksWSgheC5pc1plcm8oKSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQ''@;'; put 'put ''PTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25lKCk7Zm9yKHZhciBUPW5ldyBOKDEpLFM9bmV3IE4oMCksRj1uZXcgTigwKSx5ZT1uZXcgTigxKSxDZT0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7KVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpLCsrQ2U7Zm9yKHZhciBEZT1WLmNsb25l''@;'; put 'put ''KCksUGU9UC5jbG9uZSgpOyFQLmlzWmVybygpOyl7Zm9yKHZhciBRZT0wLCRlPTE7MD09KFAud29yZHNbMF0mJGUpJiZRZTwyNjsrK1FlLCRlPDw9MSk7aWYoUWU+MClmb3IoUC5pdXNocm4oUWUpO1FlLS0gPjA7KShULmlzT2RkKCl8fFMuaXNPZGQoKSkmJihULmlhZGQoRGUpLFMuaXN1YihQ''@;'; put 'put ''ZSkpLFQuaXVzaHJuKDEpLFMuaXVzaHJuKDEpO2Zvcih2YXIgZ3Q9MCx5dD0xOzA9PShWLndvcmRzWzBdJnl0KSYmZ3Q8MjY7KytndCx5dDw8PTEpO2lmKGd0PjApZm9yKFYuaXVzaHJuKGd0KTtndC0tID4wOykoRi5pc09kZCgpfHx5ZS5pc09kZCgpKSYmKEYuaWFkZChEZSkseWUuaXN1YihQ''@;'; put 'put ''ZSkpLEYuaXVzaHJuKDEpLHllLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFQuaXN1YihGKSxTLmlzdWIoeWUpKTooVi5pc3ViKFApLEYuaXN1YihUKSx5ZS5pc3ViKFMpKX1yZXR1cm57YTpGLGI6eWUsZ2NkOlYuaXVzaGxuKENlKX19LE4ucHJvdG90eXBlLl9pbnZtcD1mdW5j''@;'; put 'put ''dGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQsUz1uZXcgTigxKSxGPW5ldyBOKDApLHllPVYuY2xvbmUoKTtQLmNtcG4oMSk+MCYmVi5jbXBu''@;'; put 'put ''KDEpPjA7KXtmb3IodmFyIENlPTAsRGU9MTswPT0oUC53b3Jkc1swXSZEZSkmJkNlPDI2OysrQ2UsRGU8PD0xKTtpZihDZT4wKWZvcihQLml1c2hybihDZSk7Q2UtLSA+MDspUy5pc09kZCgpJiZTLmlhZGQoeWUpLFMuaXVzaHJuKDEpO2Zvcih2YXIgUGU9MCxRZT0xOzA9PShWLndvcmRzWzBd''@;'; put 'put ''JlFlKSYmUGU8MjY7KytQZSxRZTw8PTEpO2lmKFBlPjApZm9yKFYuaXVzaHJuKFBlKTtQZS0tID4wOylGLmlzT2RkKCkmJkYuaWFkZCh5ZSksRi5pdXNocm4oMSk7UC5jbXAoVik+PTA/KFAuaXN1YihWKSxTLmlzdWIoRikpOihWLmlzdWIoUCksRi5pc3ViKFMpKX1yZXR1cm4oVD0wPT09UC5j''@;'; put 'put ''bXBuKDEpP1M6RikuY21wbigwKTwwJiZULmlhZGQoeCksVH0sTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHguYWJzKCk7aWYoeC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgUD10aGlzLmNsb25lKCksVj14LmNsb25lKCk7UC5uZWdh''@;'; put 'put ''dGl2ZT0wLFYubmVnYXRpdmU9MDtmb3IodmFyIFQ9MDtQLmlzRXZlbigpJiZWLmlzRXZlbigpO1QrKylQLml1c2hybigxKSxWLml1c2hybigxKTtmb3IoOzspe2Zvcig7UC5pc0V2ZW4oKTspUC5pdXNocm4oMSk7Zm9yKDtWLmlzRXZlbigpOylWLml1c2hybigxKTt2YXIgUz1QLmNtcChWKTtp''@;'; put 'put ''ZihTPDApe3ZhciBGPVA7UD1WLFY9Rn1lbHNlIGlmKDA9PT1TfHwwPT09Vi5jbXBuKDEpKWJyZWFrO1AuaXN1YihWKX1yZXR1cm4gVi5pdXNobG4oVCl9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZWdjZCh4KS5hLnVtb2QoeCl9LE4ucHJvdG90eXBlLmlzRXZl''@;'; put 'put ''bj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LE4ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLndvcmRzWzBdJnh9LE4ucHJvdG90eXBl''@;'; put 'put ''LmJpbmNuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KTt2YXIgUD14JTI2LFY9KHgtUCkvMjYsVD0xPDxQO2lmKHRoaXMubGVuZ3RoPD1WKXJldHVybiB0aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdfD1ULHRoaXM7Zm9yKHZhciBTPVQsRj1WOzAhPT1TJiZGPHRoaXMu''@;'; put 'put ''bGVuZ3RoO0YrKyl7dmFyIHllPTB8dGhpcy53b3Jkc1tGXTtTPSh5ZSs9Uyk+Pj4yNix0aGlzLndvcmRzW0ZdPXllJj02NzEwODg2M31yZXR1cm4gMCE9PVMmJih0aGlzLndvcmRzW0ZdPVMsdGhpcy5sZW5ndGgrKyksdGhpc30sTi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LE4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oeCl7dmFyIFAsVj14PDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFWKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZWKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlz''@;'; put 'put ''Lmxlbmd0aD4xKVA9MTtlbHNle1YmJih4PS14KSxZKHg8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBUPTB8dGhpcy53b3Jkc1swXTtQPVQ9PT14PzA6VDx4Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHgp''@;'; put 'put ''e2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIDE7dmFyIFA9dGhpcy51Y21wKHgpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLnVjbXA9ZnVu''@;'; put 'put ''Y3Rpb24oeCl7aWYodGhpcy5sZW5ndGg+eC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8eC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBQPTAsVj10aGlzLmxlbmd0aC0xO1Y+PTA7Vi0tKXt2YXIgVD0wfHRoaXMud29yZHNbVl0sUz0wfHgud29yZHNbVl07aWYoVCE9PVMpe1Q8Uz9Q''@;'; put 'put ''PS0xOlQ+UyYmKFA9MSk7YnJlYWt9fXJldHVybiBQfSxOLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHgpe3JldHVybiAxPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oeCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuY21wbih4KT49MH0sTi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KT49MH0sTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5sdD1mdW5jdGlvbih4KXtyZXR1cm4tMT09''@;'; put 'put ''PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk8PTB9LE4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXAoeCk8PTB9LE4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21w''@;'; put 'put ''bih4KX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PT10aGlzLmNtcCh4KX0sTi5yZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBuZSh4KX0sTi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJl''@;'; put 'put ''ZHVjdGlvbiBjb250ZXh0IiksWSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwiZnJvbVJlZCB3b3Jr''@;'; put 'put ''cyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxOLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucmVkPXgsdGhpc30sTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0''@;'; put 'put ''dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRo''@;'; put 'put ''aXMucmVkLmFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKHgpe3Jl''@;'; put 'put ''dHVybiBZKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiks''@;'; put 'put ''dGhpcy5yZWQuaXN1Yih0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKHgpe3Jl''@;'; put 'put ''dHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5tdWwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQuaW11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMu''@;'; put 'put ''cmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIo''@;'; put 'put ''dGhpcyl9LE4ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE5lZyB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCYmIXgucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJp''@;'; put 'put ''ZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHgpfTt2YXIgSWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBUZSh4LFApe3RoaXMubmFtZT14LHRoaXMucD1uZXcgTihQLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1u''@;'; put 'put ''ZXcgTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gRWUoKXtUZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIp''@;'; put 'put ''fWZ1bmN0aW9uIGhlKCl7VGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBPKCl7VGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB6KCl7VGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBuZSh4KXtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IHgpe3ZhciBQPU4uX3ByaW1lKHgpO3RoaXMubT1QLnAsdGhpcy5wcmltZT1QfWVsc2UgWSh4Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPXgsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIHRlKHgpe25lLmNhbGwodGhpcyx4KSx0aGlzLnNoaWZ0PXRo''@;'; put 'put ''aXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBOKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSks''@;'; put 'put ''dGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7''@;'; put 'put ''cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSx4fSxUZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih4KXt2YXIgUCxWPXg7ZG97dGhpcy5zcGxpdChWLHRoaXMudG1wKSxQPShWPShWPXRoaXMuaW11bEsoVikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5n''@;'; put 'put ''dGgoKX13aGlsZShQPnRoaXMubik7dmFyIFQ9UDx0aGlzLm4/LTE6Vi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1UPyhWLndvcmRzWzBdPTAsVi5sZW5ndGg9MSk6VD4wP1YuaXN1Yih0aGlzLnApOnZvaWQgMCE9PVYuc3RyaXA/Vi5zdHJpcCgpOlYuX3N0cmlwKCksVn0sVGUucHJvdG90eXBl''@;'; put 'put ''LnNwbGl0PWZ1bmN0aW9uKHgsUCl7eC5pdXNocm4odGhpcy5uLDAsUCl9LFRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtyZXR1cm4geC5pbXVsKHRoaXMuayl9LFcoRWUsVGUpLEVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj00MTk0MzAzLFQ9TWF0aC5t''@;'; put 'put ''aW4oeC5sZW5ndGgsOSksUz0wO1M8VDtTKyspUC53b3Jkc1tTXT14LndvcmRzW1NdO2lmKFAubGVuZ3RoPVQseC5sZW5ndGg8PTkpcmV0dXJuIHgud29yZHNbMF09MCx2b2lkKHgubGVuZ3RoPTEpO3ZhciBGPXgud29yZHNbOV07Zm9yKFAud29yZHNbUC5sZW5ndGgrK109RiZWLFM9MTA7Uzx4''@;'; put 'put ''Lmxlbmd0aDtTKyspe3ZhciB5ZT0wfHgud29yZHNbU107eC53b3Jkc1tTLTEwXT0oeWUmVik8PDR8Rj4+PjIyLEY9eWV9eC53b3Jkc1tTLTEwXT1GPj4+PTIyLHgubGVuZ3RoLT0wPT09RiYmeC5sZW5ndGg+MTA/MTA6OX0sRWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3gud29yZHNb''@;'; put 'put ''eC5sZW5ndGhdPTAseC53b3Jkc1t4Lmxlbmd0aCsxXT0wLHgubGVuZ3RoKz0yO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MHx4LndvcmRzW1ZdO3gud29yZHNbVl09NjcxMDg4NjMmKFArPTk3NypUKSxQPTY0KlQrKFAvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT14Lndv''@;'; put 'put ''cmRzW3gubGVuZ3RoLTFdJiYoeC5sZW5ndGgtLSwwPT09eC53b3Jkc1t4Lmxlbmd0aC0xXSYmeC5sZW5ndGgtLSkseH0sVyhoZSxUZSksVyhPLFRlKSxXKHosVGUpLHoucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MTkq''@;'; put 'put ''KDB8eC53b3Jkc1tWXSkrUCxTPTY3MTA4ODYzJlQ7VD4+Pj0yNix4LndvcmRzW1ZdPVMsUD1UfXJldHVybiAwIT09UCYmKHgud29yZHNbeC5sZW5ndGgrK109UCkseH0sTi5fcHJpbWU9ZnVuY3Rpb24oeCl7aWYoSWVbeF0pcmV0dXJuIEllW3hdO3ZhciBQO2lmKCJrMjU2Ij09PXgpUD1uZXcg''@;'; put 'put ''RWU7ZWxzZSBpZigicDIyNCI9PT14KVA9bmV3IGhlO2Vsc2UgaWYoInAxOTIiPT09eClQPW5ldyBPO2Vsc2V7aWYoInAyNTUxOSIhPT14KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK3gpO1A9bmV3IHp9cmV0dXJuIEllW3hdPVAsUH0sbmUucHJvdG90eXBlLl92ZXJpZnkxPWZ1''@;'; put 'put ''bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxuZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oeCxQKXtZKDA9PSh4Lm5lZ2F0aXZlfFAubmVnYXRp''@;'; put 'put ''dmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFkoeC5yZWQmJngucmVkPT09UC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbmUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHgp''@;'; put 'put ''Ll9mb3JjZVJlZCh0aGlzKTp4LnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaXNaZXJvKCk/eC5jbG9uZSgpOnRoaXMubS5zdWIoeCkuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgs''@;'; put 'put ''UCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sbmUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pYWRkKFApO3Jl''@;'; put 'put ''dHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWfSxuZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LG5lLnBy''@;'; put 'put ''b3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguaXN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlzLm0pLFZ9LG5lLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh4KSx0aGlzLmltb2Qo''@;'; put 'put ''eC51c2hsbihQKSl9LG5lLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5pbXVsKFApKX0sbmUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHgubXVs''@;'; put 'put ''KFApKX0sbmUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW11bCh4LHguY2xvbmUoKSl9LG5lLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubXVsKHgseCl9LG5lLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHgpe2lmKHguaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIHguY2xvbmUoKTt2YXIgUD10aGlzLm0uYW5kbG4oMyk7aWYoWShQJTI9PTEpLDM9PT1QKXt2YXIgVj10aGlzLm0uYWRkKG5ldyBOKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KHgsVil9Zm9yKHZhciBUPXRoaXMubS5zdWJuKDEpLFM9MDshVC5pc1plcm8oKSYmMD09PVQuYW5k''@;'; put 'put ''bG4oMSk7KVMrKyxULml1c2hybigxKTtZKCFULmlzWmVybygpKTt2YXIgRj1uZXcgTigxKS50b1JlZCh0aGlzKSx5ZT1GLnJlZE5lZygpLENlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxEZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKERlPW5ldyBOKDIqRGUqRGUpLnRvUmVkKHRoaXMpOzAh''@;'; put 'put ''PT10aGlzLnBvdyhEZSxDZSkuY21wKHllKTspRGUucmVkSUFkZCh5ZSk7Zm9yKHZhciBQZT10aGlzLnBvdyhEZSxUKSxRZT10aGlzLnBvdyh4LFQuYWRkbigxKS5pdXNocm4oMSkpLCRlPXRoaXMucG93KHgsVCksZ3Q9UzswIT09JGUuY21wKEYpOyl7Zm9yKHZhciB5dD0kZSxwdD0wOzAhPT15''@;'; put 'put ''dC5jbXAoRik7cHQrKyl5dD15dC5yZWRTcXIoKTtZKHB0PGd0KTt2YXIgbXQ9dGhpcy5wb3coUGUsbmV3IE4oMSkuaXVzaGxuKGd0LXB0LTEpKTtRZT1RZS5yZWRNdWwobXQpLFBlPW10LnJlZFNxcigpLCRlPSRlLnJlZE11bChQZSksZ3Q9cHR9cmV0dXJuIFFlfSxuZS5wcm90b3R5cGUuaW52''@;'; put 'put ''bT1mdW5jdGlvbih4KXt2YXIgUD14Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09UC5uZWdhdGl2ZT8oUC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChQKS5yZWROZWcoKSk6dGhpcy5pbW9kKFApfSxuZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgsUCl7aWYoUC5pc1plcm8oKSlyZXR1cm4gbmV3''@;'; put 'put ''IE4oMSkudG9SZWQodGhpcyk7aWYoMD09PVAuY21wbigxKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBWPW5ldyBBcnJheSgxNik7VlswXT1uZXcgTigxKS50b1JlZCh0aGlzKSxWWzFdPXg7Zm9yKHZhciBUPTI7VDxWLmxlbmd0aDtUKyspVltUXT10aGlzLm11bChWW1QtMV0seCk7dmFyIFM9Vlsw''@;'; put 'put ''XSxGPTAseWU9MCxDZT1QLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09Q2UmJihDZT0yNiksVD1QLmxlbmd0aC0xO1Q+PTA7VC0tKXtmb3IodmFyIERlPVAud29yZHNbVF0sUGU9Q2UtMTtQZT49MDtQZS0tKXt2YXIgUWU9RGU+PlBlJjE7UyE9PVZbMF0mJihTPXRoaXMuc3FyKFMpKSwwIT09UWV8''@;'; put 'put ''fDAhPT1GPyhGPDw9MSxGfD1RZSwoND09Kyt5ZXx8MD09PVQmJjA9PT1QZSkmJihTPXRoaXMubXVsKFMsVltGXSkseWU9MCxGPTApKTp5ZT0wfUNlPTI2fXJldHVybiBTfSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3ZhciBQPXgudW1vZCh0aGlzLm0pO3JldHVybiBQPT09''@;'; put 'put ''eD9QLmNsb25lKCk6UH0sbmUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXguY2xvbmUoKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSxOLm1vbnQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyB0ZSh4KX0sVyh0ZSxuZSksdGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlv''@;'; put 'put ''bih4KXtyZXR1cm4gdGhpcy5pbW9kKHgudXNobG4odGhpcy5zaGlmdCkpfSx0ZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5pbW9kKHgubXVsKHRoaXMucmludikpO3JldHVybiBQLnJlZD1udWxsLFB9LHRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgs''@;'; put 'put ''UCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4geC53b3Jkc1swXT0wLHgubGVuZ3RoPTEseDt2YXIgVj14LmltdWwoUCksVD1WLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4o''@;'; put 'put ''dGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wP0Y9Uy5pc3ViKHRoaXMubSk6Uy5jbXBuKDApPDAmJihGPVMuaWFkZCh0aGlzLm0pKSxGLl9mb3JjZVJlZCh0aGlzKX0sdGUucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAuaXNaZXJvKCkp''@;'; put 'put ''cmV0dXJuIG5ldyBOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgVj14Lm11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRo''@;'; put 'put ''aXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSx0ZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHguX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQo''@;'; put 'put ''dGhpcyl9fShVPVoubm1kKFUpLHRoaXMpfSw2MTM4OihVLFEsWik9Pnt2YXIgaWU9Wig5ODApLGxlPVooOTE5OSksWT1aKDc4NTkpLFc9WigyMTQ0KSxOPVooMzY2MyksZWU9WigzNDgyKSxxPVooNDgxOCksSj1aKDk1MDkpLkJ1ZmZlcjtVLmV4cG9ydHM9ZnVuY3Rpb24oc2UsYWUsZmUpe3Zh''@;'; put 'put ''ciBkZTtkZT1zZS5wYWRkaW5nP3NlLnBhZGRpbmc6ZmU/MTo0O3ZhciB2ZSxBZT1pZShzZSksa2U9QWUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7aWYoYWUubGVuZ3RoPmtlfHxuZXcgVyhhZSkuY21wKEFlLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3Zl''@;'; put 'put ''PWZlP3EobmV3IFcoYWUpLEFlKTpOKGFlLEFlKTt2YXIgU2U9Si5hbGxvYyhrZS12ZS5sZW5ndGgpO2lmKHZlPUouY29uY2F0KFtTZSx2ZV0sa2UpLDQ9PT1kZSlyZXR1cm4gZnVuY3Rpb24oSWUsVGUpe3ZhciBFZT1JZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxoZT1lZSgic2hhMSIpLnVwZGF0''@;'; put 'put ''ZShKLmFsbG9jKDApKS5kaWdlc3QoKSxPPWhlLmxlbmd0aDtpZigwIT09VGVbMF0pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmFyIHo9VGUuc2xpY2UoMSxPKzEpLG5lPVRlLnNsaWNlKE8rMSksdGU9WSh6LGxlKG5lLE8pKSx4PVkobmUsbGUodGUsRWUtTy0xKSk7aWYo''@;'; put 'put ''ZnVuY3Rpb24oVixUKXtWPUouZnJvbShWKSxUPUouZnJvbShUKTt2YXIgUz0wLEY9Vi5sZW5ndGg7Vi5sZW5ndGghPT1ULmxlbmd0aCYmKFMrKyxGPU1hdGgubWluKFYubGVuZ3RoLFQubGVuZ3RoKSk7Zm9yKHZhciB5ZT0tMTsrK3llPEY7KVMrPVZbeWVdXlRbeWVdO3JldHVybiBTfShoZSx4''@;'; put 'put ''LnNsaWNlKDAsTykpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgUD1POzA9PT14W1BdOylQKys7aWYoMSE9PXhbUCsrXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4geC5zbGljZShQKX0oQWUsdmUpO2lmKDE9PT1kZSlyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oSWUsVGUsRWUpe2Zvcih2YXIgaGU9VGUuc2xpY2UoMCwyKSxPPTIsej0wOzAhPT1UZVtPKytdOylpZihPPj1UZS5sZW5ndGgpe3orKzticmVha312YXIgbmU9VGUuc2xpY2UoMixPLTEpO2lmKCgiMDAwMiIhPT1oZS50b1N0cmluZygiaGV4IikmJiFFZXx8IjAwMDEiIT09''@;'; put 'put ''aGUudG9TdHJpbmcoImhleCIpJiZFZSkmJnorKyxuZS5sZW5ndGg8OCYmeisrLHopdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7cmV0dXJuIFRlLnNsaWNlKE8pfSgwLHZlLGZlKTtpZigzPT09ZGUpcmV0dXJuIHZlO3Rocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5n''@;'; put 'put ''Iil9fSw2NTU5OihVLFEsWik9Pnt2YXIgaWU9Wig5ODApLGxlPVooMTc5OCksWT1aKDM0ODIpLFc9Wig5MTk5KSxOPVooNzg1OSksZWU9WigyMTQ0KSxxPVooNDgxOCksSj1aKDM2NjMpLHNlPVooOTUwOSkuQnVmZmVyO1UuZXhwb3J0cz1mdW5jdGlvbihhZSxmZSxkZSl7dmFyIHZlO3ZlPWFl''@;'; put 'put ''LnBhZGRpbmc/YWUucGFkZGluZzpkZT8xOjQ7dmFyIEFlLGtlPWllKGFlKTtpZig0PT09dmUpQWU9ZnVuY3Rpb24oU2UsSWUpe3ZhciBUZT1TZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxFZT1JZS5sZW5ndGgsaGU9WSgic2hhMSIpLnVwZGF0ZShzZS5hbGxvYygwKSkuZGlnZXN0KCksTz1oZS5s''@;'; put 'put ''ZW5ndGgsej0yKk87aWYoRWU+VGUtei0yKXRocm93IG5ldyBFcnJvcigibWVzc2FnZSB0b28gbG9uZyIpO3ZhciBuZT1zZS5hbGxvYyhUZS1FZS16LTIpLHRlPVRlLU8tMSx4PWxlKE8pLFA9TihzZS5jb25jYXQoW2hlLG5lLHNlLmFsbG9jKDEsMSksSWVdLHRlKSxXKHgsdGUpKSxWPU4oeCxX''@;'; put 'put ''KFAsTykpO3JldHVybiBuZXcgZWUoc2UuY29uY2F0KFtzZS5hbGxvYygxKSxWLFBdLFRlKSl9KGtlLGZlKTtlbHNlIGlmKDE9PT12ZSlBZT1mdW5jdGlvbihTZSxJZSxUZSl7dmFyIEVlLGhlPUllLmxlbmd0aCxPPVNlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKGhlPk8tMTEpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7cmV0dXJuIEVlPVRlP3NlLmFsbG9jKE8taGUtMywyNTUpOmZ1bmN0aW9uKHope2Zvcih2YXIgbmUsdGU9c2UuYWxsb2NVbnNhZmUoeikseD0wLFA9bGUoMip6KSxWPTA7eDx6OylWPT09UC5sZW5ndGgmJihQPWxlKDIqeiksVj0wKSwobmU9UFtW''@;'; put 'put ''KytdKSYmKHRlW3grK109bmUpO3JldHVybiB0ZX0oTy1oZS0zKSxuZXcgZWUoc2UuY29uY2F0KFtzZS5mcm9tKFswLFRlPzE6Ml0pLEVlLHNlLmFsbG9jKDEpLEllXSxPKSl9KGtlLGZlLGRlKTtlbHNle2lmKDMhPT12ZSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpO2lmKChB''@;'; put 'put ''ZT1uZXcgZWUoZmUpKS5jbXAoa2UubW9kdWx1cyk+PTApdGhyb3cgbmV3IEVycm9yKCJkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzIil9cmV0dXJuIGRlP0ooQWUsa2UpOnEoQWUsa2UpfX0sNDgxODooVSxRLFopPT57dmFyIGllPVooMjE0NCksbGU9Wig5NTA5KS5CdWZmZXI7VS5leHBvcnRz''@;'; put 'put ''PWZ1bmN0aW9uKFksVyl7cmV0dXJuIGxlLmZyb20oWS50b1JlZChpZS5tb250KFcubW9kdWx1cykpLnJlZFBvdyhuZXcgaWUoVy5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKS50b0FycmF5KCkpfX0sNzg1OTpVPT57VS5leHBvcnRzPWZ1bmN0aW9uKFEsWil7Zm9yKHZhciBpZT1RLmxlbmd0''@;'; put 'put ''aCxsZT0tMTsrK2xlPGllOylRW2xlXV49WltsZV07cmV0dXJuIFF9fSwzNjg5OihVLFEsWik9PnsidXNlIHN0cmljdCI7Wi5yKFEpLFouZChRLHt1Y3MyZGVjb2RlOigpPT5mZSx1Y3MyZW5jb2RlOigpPT5kZSxkZWNvZGU6KCk9PmtlLGVuY29kZTooKT0+U2UsdG9BU0NJSTooKT0+VGUsdG9V''@;'; put 'put ''bmljb2RlOigpPT5JZSxkZWZhdWx0OigpPT5FZX0pO2NvbnN0IGllPTIxNDc0ODM2NDcsWT0vXnhuLS0vLFc9L1teXDAtXHg3RV0vLE49L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9nLGVlPXtvdmVyZmxvdzoiT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nl''@;'; put 'put ''c3MiLCJub3QtYmFzaWMiOiJJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpIiwiaW52YWxpZC1pbnB1dCI6IkludmFsaWQgaW5wdXQifSxxPU1hdGguZmxvb3IsSj1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIHNlKGhlKXt0aHJvdyBuZXcgUmFuZ2VF''@;'; put 'put ''cnJvcihlZVtoZV0pfWZ1bmN0aW9uIGFlKGhlLE8pe2NvbnN0IHo9aGUuc3BsaXQoIkAiKTtsZXQgbmU9IiI7cmV0dXJuIHoubGVuZ3RoPjEmJihuZT16WzBdKyJAIixoZT16WzFdKSxuZStmdW5jdGlvbih4LFApe2NvbnN0IFY9W107bGV0IFQ9eC5sZW5ndGg7Zm9yKDtULS07KVZbVF09UCh4''@;'; put 'put ''W1RdKTtyZXR1cm4gVn0oKGhlPWhlLnJlcGxhY2UoTiwiLiIpKS5zcGxpdCgiLiIpLE8pLmpvaW4oIi4iKX1mdW5jdGlvbiBmZShoZSl7Y29uc3QgTz1bXTtsZXQgej0wO2NvbnN0IG5lPWhlLmxlbmd0aDtmb3IoO3o8bmU7KXtjb25zdCB0ZT1oZS5jaGFyQ29kZUF0KHorKyk7aWYodGU+PTU1''@;'; put 'put ''Mjk2JiZ0ZTw9NTYzMTkmJno8bmUpe2NvbnN0IHg9aGUuY2hhckNvZGVBdCh6KyspOzU2MzIwPT0oNjQ1MTImeCk/Ty5wdXNoKCgoMTAyMyZ0ZSk8PDEwKSsoMTAyMyZ4KSs2NTUzNik6KE8ucHVzaCh0ZSksei0tKX1lbHNlIE8ucHVzaCh0ZSl9cmV0dXJuIE99Y29uc3QgZGU9aGU9PlN0cmlu''@;'; put 'put ''Zy5mcm9tQ29kZVBvaW50KC4uLmhlKSx2ZT1mdW5jdGlvbihoZSxPKXtyZXR1cm4gaGUrMjIrNzUqKGhlPDI2KS0oKDAhPU8pPDw1KX0sQWU9ZnVuY3Rpb24oaGUsTyx6KXtsZXQgbmU9MDtmb3IoaGU9ej9xKGhlLzcwMCk6aGU+PjEsaGUrPXEoaGUvTyk7aGU+NDU1O25lKz0zNiloZT1xKGhl''@;'; put 'put ''LzM1KTtyZXR1cm4gcShuZSszNipoZS8oaGUrMzgpKX0sa2U9ZnVuY3Rpb24oaGUpe2NvbnN0IE89W10sej1oZS5sZW5ndGg7bGV0IG5lPTAsdGU9MTI4LHg9NzIsUD1oZS5sYXN0SW5kZXhPZigiLSIpO1A8MCYmKFA9MCk7Zm9yKGxldCBUPTA7VDxQOysrVCloZS5jaGFyQ29kZUF0KFQpPj0x''@;'; put 'put ''MjgmJnNlKCJub3QtYmFzaWMiKSxPLnB1c2goaGUuY2hhckNvZGVBdChUKSk7Zm9yKGxldCBUPVA+MD9QKzE6MDtUPHo7KXtsZXQgUz1uZTtmb3IobGV0IHllPTEsQ2U9MzY7O0NlKz0zNil7VD49eiYmc2UoImludmFsaWQtaW5wdXQiKTtjb25zdCBEZT0oVj1oZS5jaGFyQ29kZUF0KFQrKykp''@;'; put 'put ''LTQ4PDEwP1YtMjI6Vi02NTwyNj9WLTY1OlYtOTc8MjY/Vi05NzozNjsoRGU+PTM2fHxEZT5xKChpZS1uZSkveWUpKSYmc2UoIm92ZXJmbG93IiksbmUrPURlKnllO2NvbnN0IFBlPUNlPD14PzE6Q2U+PXgrMjY/MjY6Q2UteDtpZihEZTxQZSlicmVhaztjb25zdCBRZT0zNi1QZTt5ZT5xKGll''@;'; put 'put ''L1FlKSYmc2UoIm92ZXJmbG93IikseWUqPVFlfWNvbnN0IEY9Ty5sZW5ndGgrMTt4PUFlKG5lLVMsRiwwPT1TKSxxKG5lL0YpPmllLXRlJiZzZSgib3ZlcmZsb3ciKSx0ZSs9cShuZS9GKSxuZSU9RixPLnNwbGljZShuZSsrLDAsdGUpfXZhciBWO3JldHVybiBTdHJpbmcuZnJvbUNvZGVQb2lu''@;'; put 'put ''dCguLi5PKX0sU2U9ZnVuY3Rpb24oaGUpe2NvbnN0IE89W107bGV0IHo9KGhlPWZlKGhlKSkubGVuZ3RoLG5lPTEyOCx0ZT0wLHg9NzI7Zm9yKGNvbnN0IFQgb2YgaGUpVDwxMjgmJk8ucHVzaChKKFQpKTtsZXQgUD1PLmxlbmd0aCxWPVA7Zm9yKFAmJk8ucHVzaCgiLSIpO1Y8ejspe2xldCBU''@;'; put 'put ''PWllO2Zvcihjb25zdCBGIG9mIGhlKUY+PW5lJiZGPFQmJihUPUYpO2NvbnN0IFM9VisxO1QtbmU+cSgoaWUtdGUpL1MpJiZzZSgib3ZlcmZsb3ciKSx0ZSs9KFQtbmUpKlMsbmU9VDtmb3IoY29uc3QgRiBvZiBoZSlpZihGPG5lJiYrK3RlPmllJiZzZSgib3ZlcmZsb3ciKSxGPT1uZSl7bGV0''@;'; put 'put ''IHllPXRlO2ZvcihsZXQgQ2U9MzY7O0NlKz0zNil7Y29uc3QgRGU9Q2U8PXg/MTpDZT49eCsyNj8yNjpDZS14O2lmKHllPERlKWJyZWFrO2NvbnN0IFBlPXllLURlLFFlPTM2LURlO08ucHVzaChKKHZlKERlK1BlJVFlLDApKSkseWU9cShQZS9RZSl9Ty5wdXNoKEoodmUoeWUsMCkpKSx4PUFl''@;'; put 'put ''KHRlLFMsVj09UCksdGU9MCwrK1Z9Kyt0ZSwrK25lfXJldHVybiBPLmpvaW4oIiIpfSxJZT1mdW5jdGlvbihoZSl7cmV0dXJuIGFlKGhlLGZ1bmN0aW9uKE8pe3JldHVybiBZLnRlc3QoTyk/a2UoTy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKTpPfSl9LFRlPWZ1bmN0aW9uKGhlKXtyZXR1cm4g''@;'; put 'put ''YWUoaGUsZnVuY3Rpb24oTyl7cmV0dXJuIFcudGVzdChPKT8ieG4tLSIrU2UoTyk6T30pfSxFZT17dmVyc2lvbjoiMi4xLjAiLHVjczI6e2RlY29kZTpmZSxlbmNvZGU6ZGV9LGRlY29kZTprZSxlbmNvZGU6U2UsdG9BU0NJSTpUZSx0b1VuaWNvZGU6SWV9fSwyNTg3OlU9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7ZnVuY3Rpb24gUShaLGllKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFosaWUpfVUuZXhwb3J0cz1mdW5jdGlvbihaLGllLGxlLFkpe2xlPWxlfHwiPSI7dmFyIFc9e307aWYoInN0cmluZyIhPXR5cGVvZiBafHwwPT09Wi5sZW5ndGgpcmV0dXJuIFc7''@;'; put 'put ''dmFyIE49L1wrL2c7Wj1aLnNwbGl0KGllPWllfHwiJiIpO3ZhciBlZT0xZTM7WSYmIm51bWJlciI9PXR5cGVvZiBZLm1heEtleXMmJihlZT1ZLm1heEtleXMpO3ZhciBxPVoubGVuZ3RoO2VlPjAmJnE+ZWUmJihxPWVlKTtmb3IodmFyIEo9MDtKPHE7KytKKXt2YXIgc2UsYWUsZmUsZGUsdmU9''@;'; put 'put ''WltKXS5yZXBsYWNlKE4sIiUyMCIpLEFlPXZlLmluZGV4T2YobGUpO0FlPj0wPyhzZT12ZS5zdWJzdHIoMCxBZSksYWU9dmUuc3Vic3RyKEFlKzEpKTooc2U9dmUsYWU9IiIpLGZlPWRlY29kZVVSSUNvbXBvbmVudChzZSksZGU9ZGVjb2RlVVJJQ29tcG9uZW50KGFlKSxRKFcsZmUpP0FycmF5''@;'; put 'put ''LmlzQXJyYXkoV1tmZV0pP1dbZmVdLnB1c2goZGUpOldbZmVdPVtXW2ZlXSxkZV06V1tmZV09ZGV9cmV0dXJuIFd9fSwyMTgyOlU9PnsidXNlIHN0cmljdCI7dmFyIFE9ZnVuY3Rpb24oWil7c3dpdGNoKHR5cGVvZiBaKXtjYXNlInN0cmluZyI6cmV0dXJuIFo7Y2FzZSJib29sZWFuIjpyZXR1''@;'; put 'put ''cm4gWj8idHJ1ZSI6ImZhbHNlIjtjYXNlIm51bWJlciI6cmV0dXJuIGlzRmluaXRlKFopP1o6IiI7ZGVmYXVsdDpyZXR1cm4iIn19O1UuZXhwb3J0cz1mdW5jdGlvbihaLGllLGxlLFkpe3JldHVybiBpZT1pZXx8IiYiLGxlPWxlfHwiPSIsbnVsbD09PVomJihaPXZvaWQgMCksIm9iamVjdCI9''@;'; put 'put ''PXR5cGVvZiBaP09iamVjdC5rZXlzKFopLm1hcChmdW5jdGlvbihXKXt2YXIgTj1lbmNvZGVVUklDb21wb25lbnQoUShXKSkrbGU7cmV0dXJuIEFycmF5LmlzQXJyYXkoWltXXSk/WltXXS5tYXAoZnVuY3Rpb24oZWUpe3JldHVybiBOK2VuY29kZVVSSUNvbXBvbmVudChRKGVlKSl9KS5qb2lu''@;'; put 'put ''KGllKTpOK2VuY29kZVVSSUNvbXBvbmVudChRKFpbV10pKX0pLmpvaW4oaWUpOlk/ZW5jb2RlVVJJQ29tcG9uZW50KFEoWSkpK2xlK2VuY29kZVVSSUNvbXBvbmVudChRKFopKToiIn19LDc2NzM6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0IjtRLmRlY29kZT1RLnBhcnNlPVooMjU4NyksUS5lbmNv''@;'; put 'put ''ZGU9US5zdHJpbmdpZnk9WigyMTgyKX0sMTc5ODooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQxNTUpLFc9Wig5NTA5KS5CdWZmZXIsTj1aLmcuY3J5cHRvfHxaLmcubXNDcnlwdG87VS5leHBvcnRzPU4mJk4uZ2V0UmFuZG9tVmFsdWVzP2Z1bmN0aW9uKGVlLHEpe2lmKGVlPjQy''@;'; put 'put ''OTQ5NjcyOTUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgSj1XLmFsbG9jVW5zYWZlKGVlKTtpZihlZT4wKWlmKGVlPjY1NTM2KWZvcih2YXIgc2U9MDtzZTxlZTtzZSs9NjU1MzYpTi5nZXRSYW5kb21WYWx1ZXMoSi5zbGljZShz''@;'; put 'put ''ZSxzZSs2NTUzNikpO2Vsc2UgTi5nZXRSYW5kb21WYWx1ZXMoSik7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHE/aWUubmV4dFRpY2soZnVuY3Rpb24oKXtxKG51bGwsSil9KTpKfTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBp''@;'; put 'put ''cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19LDc5NjM6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KTtmdW5jdGlvbiBsZSgpe3Rocm93IG5ldyBFcnJvcigic2VjdXJlIHJh''@;'; put 'put ''bmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBZPVooOTUwOSksVz1aKDE3OTgpLE49WS5CdWZmZXIsZWU9WS5rTWF4TGVuZ3RoLHE9Wi5nLmNyeXB0b3x8''@;'; put 'put ''Wi5nLm1zQ3J5cHRvLEo9TWF0aC5wb3coMiwzMiktMTtmdW5jdGlvbiBzZShkZSx2ZSl7aWYoIm51bWJlciIhPXR5cGVvZiBkZXx8ZGUhPWRlKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgbnVtYmVyIik7aWYoZGU+Snx8ZGU8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJv''@;'; put 'put ''ZmZzZXQgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKGRlPmVlfHxkZT52ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIGFlKGRlLHZlLEFlKXtpZigibnVtYmVyIiE9dHlwZW9mIGRlfHxkZSE9ZGUpdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBt''@;'; put 'put ''dXN0IGJlIGEgbnVtYmVyIik7aWYoZGU+Snx8ZGU8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSB1aW50MzIiKTtpZihkZSt2ZT5BZXx8ZGU+ZWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImJ1ZmZlciB0b28gc21hbGwiKX1mdW5jdGlvbiBmZShkZSx2ZSxBZSxrZSl7aWYo''@;'; put 'put ''aWUuYnJvd3Nlcil7dmFyIEllPW5ldyBVaW50OEFycmF5KGRlLmJ1ZmZlcix2ZSxBZSk7cmV0dXJuIHEuZ2V0UmFuZG9tVmFsdWVzKEllKSxrZT92b2lkIGllLm5leHRUaWNrKGZ1bmN0aW9uKCl7a2UobnVsbCxkZSl9KTpkZX1pZigha2UpcmV0dXJuIFcoQWUpLmNvcHkoZGUsdmUpLGRlO1co''@;'; put 'put ''QWUsZnVuY3Rpb24oVGUsRWUpe2lmKFRlKXJldHVybiBrZShUZSk7RWUuY29weShkZSx2ZSksa2UobnVsbCxkZSl9KX1xJiZxLmdldFJhbmRvbVZhbHVlc3x8IWllLmJyb3dzZXI/KFEucmFuZG9tRmlsbD1mdW5jdGlvbihkZSx2ZSxBZSxrZSl7aWYoIShOLmlzQnVmZmVyKGRlKXx8ZGUgaW5z''@;'; put 'put ''dGFuY2VvZiBaLmcuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHZlKWtlPXZlLHZlPTAsQWU9ZGUubGVuZ3RoO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIEFlKWtlPUFlLEFlPWRlLmxlbmd0aC12ZTtlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiBrZSl0aHJvdyBuZXcgVHlwZUVycm9yKCciY2IiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3JldHVybiBzZSh2ZSxkZS5sZW5ndGgpLGFlKEFlLHZlLGRlLmxlbmd0aCksZmUoZGUs''@;'; put 'put ''dmUsQWUsa2UpfSxRLnJhbmRvbUZpbGxTeW5jPWZ1bmN0aW9uKGRlLHZlLEFlKXtpZih2b2lkIDA9PT12ZSYmKHZlPTApLCEoTi5pc0J1ZmZlcihkZSl8fGRlIGluc3RhbmNlb2YgWi5nLlVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBC''@;'; put 'put ''dWZmZXIgb3IgVWludDhBcnJheScpO3JldHVybiBzZSh2ZSxkZS5sZW5ndGgpLHZvaWQgMD09PUFlJiYoQWU9ZGUubGVuZ3RoLXZlKSxhZShBZSx2ZSxkZS5sZW5ndGgpLGZlKGRlLHZlLEFlKX0pOihRLnJhbmRvbUZpbGw9bGUsUS5yYW5kb21GaWxsU3luYz1sZSl9LDQyODE6VT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgUT17fTtmdW5jdGlvbiBaKGxlLFksVyl7V3x8KFc9RXJyb3IpO3ZhciBOPWZ1bmN0aW9uKGVlKXt2YXIgcSxKO2Z1bmN0aW9uIHNlKGFlLGZlLGRlKXtyZXR1cm4gZWUuY2FsbCh0aGlzLCJzdHJpbmciPT10eXBlb2YgWT9ZOlkoYWUsZmUsZGUpKXx8dGhpc31yZXR1cm4g''@;'; put 'put ''Sj1lZSwocT1zZSkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSi5wcm90b3R5cGUpLHEucHJvdG90eXBlLmNvbnN0cnVjdG9yPXEscS5fX3Byb3RvX189SixzZX0oVyk7Ti5wcm90b3R5cGUubmFtZT1XLm5hbWUsTi5wcm90b3R5cGUuY29kZT1sZSxRW2xlXT1OfWZ1bmN0aW9uIGllKGxlLFkp''@;'; put 'put ''e2lmKEFycmF5LmlzQXJyYXkobGUpKXt2YXIgVz1sZS5sZW5ndGg7cmV0dXJuIGxlPWxlLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gU3RyaW5nKE4pfSksVz4yPyJvbmUgb2YgIi5jb25jYXQoWSwiICIpLmNvbmNhdChsZS5zbGljZSgwLFctMSkuam9pbigiLCAiKSwiLCBvciAiKStsZVtXLTFd''@;'; put 'put ''OjI9PT1XPyJvbmUgb2YgIi5jb25jYXQoWSwiICIpLmNvbmNhdChsZVswXSwiIG9yICIpLmNvbmNhdChsZVsxXSk6Im9mICIuY29uY2F0KFksIiAiKS5jb25jYXQobGVbMF0pfXJldHVybiJvZiAiLmNvbmNhdChZLCIgIikuY29uY2F0KFN0cmluZyhsZSkpfVooIkVSUl9JTlZBTElEX09QVF9W''@;'; put 'put ''QUxVRSIsZnVuY3Rpb24obGUsWSl7cmV0dXJuJ1RoZSB2YWx1ZSAiJytZKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAiJytsZSsnIid9LFR5cGVFcnJvciksWigiRVJSX0lOVkFMSURfQVJHX1RZUEUiLGZ1bmN0aW9uKGxlLFksVyl7dmFyIE4sSixhZSxkZTtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IFkmJiJub3QgIj09PVkuc3Vic3RyKDAsIm5vdCAiLmxlbmd0aCk/KE49Im11c3Qgbm90IGJlIixZPVkucmVwbGFjZSgvXm5vdCAvLCIiKSk6Tj0ibXVzdCBiZSIsYWU9bGUsKHZvaWQgMD09PWRlfHxkZT5hZS5sZW5ndGgpJiYoZGU9YWUubGVuZ3RoKSwiIGFyZ3VtZW50Ij09PWFlLnN1YnN0''@;'; put 'put ''cmluZyhkZS0iIGFyZ3VtZW50Ii5sZW5ndGgsZGUpKUo9IlRoZSAiLmNvbmNhdChsZSwiICIpLmNvbmNhdChOLCIgIikuY29uY2F0KGllKFksInR5cGUiKSk7ZWxzZXt2YXIgc2U9ZnVuY3Rpb24oYWUsZmUsZGUpe3JldHVybiJudW1iZXIiIT10eXBlb2YgZGUmJihkZT0wKSwhKGRlKyIuIi5s''@;'; put 'put ''ZW5ndGg+YWUubGVuZ3RoKSYmLTEhPT1hZS5pbmRleE9mKCIuIixkZSl9KGxlKT8icHJvcGVydHkiOiJhcmd1bWVudCI7Sj0nVGhlICInLmNvbmNhdChsZSwnIiAnKS5jb25jYXQoc2UsIiAiKS5jb25jYXQoTiwiICIpLmNvbmNhdChpZShZLCJ0eXBlIikpfXJldHVybiBKKyIuIFJlY2VpdmVk''@;'; put 'put ''IHR5cGUgIi5jb25jYXQodHlwZW9mIFcpfSxUeXBlRXJyb3IpLFooIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YiLCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRiIpLFooIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIixmdW5jdGlvbihsZSl7cmV0dXJuIlRoZSAiK2xlKyIgbWV0aG9kIGlz''@;'; put 'put ''IG5vdCBpbXBsZW1lbnRlZCJ9KSxaKCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIsIlByZW1hdHVyZSBjbG9zZSIpLFooIkVSUl9TVFJFQU1fREVTVFJPWUVEIixmdW5jdGlvbihsZSl7cmV0dXJuIkNhbm5vdCBjYWxsICIrbGUrIiBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkIn0p''@;'; put 'put ''LFooIkVSUl9NVUxUSVBMRV9DQUxMQkFDSyIsIkNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyIpLFooIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIiksWigiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQiLCJ3cml0ZSBhZnRlciBlbmQi''@;'; put 'put ''KSxaKCJFUlJfU1RSRUFNX05VTExfVkFMVUVTIiwiTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iLFR5cGVFcnJvciksWigiRVJSX1VOS05PV05fRU5DT0RJTkciLGZ1bmN0aW9uKGxlKXtyZXR1cm4iVW5rbm93biBlbmNvZGluZzogIitsZX0sVHlwZUVycm9yKSxaKCJFUlJf''@;'; put 'put ''U1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UIiwic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQiKSxVLmV4cG9ydHMucT1RfSw2NzUzOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGZlKXt2YXIgZGU9W107''@;'; put 'put ''Zm9yKHZhciB2ZSBpbiBmZSlkZS5wdXNoKHZlKTtyZXR1cm4gZGV9O1UuZXhwb3J0cz1KO3ZhciBZPVooOTQ4MSksVz1aKDQyMjkpO1ooNTcxNykoSixZKTtmb3IodmFyIE49bGUoVy5wcm90b3R5cGUpLGVlPTA7ZWU8Ti5sZW5ndGg7ZWUrKyl7dmFyIHE9TltlZV07Si5wcm90b3R5cGVbcV18''@;'; put 'put ''fChKLnByb3RvdHlwZVtxXT1XLnByb3RvdHlwZVtxXSl9ZnVuY3Rpb24gSihmZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgSikpcmV0dXJuIG5ldyBKKGZlKTtZLmNhbGwodGhpcyxmZSksVy5jYWxsKHRoaXMsZmUpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCxmZSYmKCExPT09ZmUucmVhZGFibGUm''@;'; put 'put ''Jih0aGlzLnJlYWRhYmxlPSExKSwhMT09PWZlLndyaXRhYmxlJiYodGhpcy53cml0YWJsZT0hMSksITE9PT1mZS5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExLHRoaXMub25jZSgiZW5kIixzZSkpKX1mdW5jdGlvbiBzZSgpe3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8''@;'; put 'put ''fGllLm5leHRUaWNrKGFlLHRoaXMpfWZ1bmN0aW9uIGFlKGZlKXtmZS5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGln''@;'; put 'put ''aFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEoucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJh''@;'; put 'put ''YmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihm''@;'; put 'put ''ZSl7dm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPWZlLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWZlKX19KX0sMjcyNTooVSxRLFopPT57InVzZSBzdHJpY3QiO1Uu''@;'; put 'put ''ZXhwb3J0cz1sZTt2YXIgaWU9Wig0NjA1KTtmdW5jdGlvbiBsZShZKXtpZighKHRoaXMgaW5zdGFuY2VvZiBsZSkpcmV0dXJuIG5ldyBsZShZKTtpZS5jYWxsKHRoaXMsWSl9Wig1NzE3KShsZSxpZSksbGUucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oWSxXLE4pe04obnVsbCxZKX19''@;'; put 'put ''LDk0ODE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9Wig0MTU1KTtVLmV4cG9ydHM9bmUsbmUuUmVhZGFibGVTdGF0ZT16LFooNzE4Nyk7dmFyIHEsWT1mdW5jdGlvbihtdCx2dCl7cmV0dXJuIG10Lmxpc3RlbmVycyh2dCkubGVuZ3RofSxXPVooMjUwMyksTj1aKDg3NjQpLkJ1''@;'; put 'put ''ZmZlcixlZT1aLmcuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LEo9Wig0NjE2KTtxPUomJkouZGVidWdsb2c/Si5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBzZSxhZSxmZSxkZT1aKDczMjcpLHZlPVooMTE5NSksQWU9WigyNDU3KS5nZXRIaWdoV2F0ZXJNYXJrLGtlPVoo''@;'; put 'put ''NDI4MSkucSxTZT1rZS5FUlJfSU5WQUxJRF9BUkdfVFlQRSxJZT1rZS5FUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GLFRlPWtlLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEVlPWtlLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7Wig1NzE3KShuZSxXKTt2YXIgaGU9dmUu''@;'; put 'put ''ZXJyb3JPckRlc3Ryb3ksTz1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiB6KG10LHZ0LGZ0KXtpZT1pZXx8Wig2NzUzKSwiYm9vbGVhbiIhPXR5cGVvZiBmdCYmKGZ0PXZ0IGluc3RhbmNlb2YgaWUpLHRoaXMub2JqZWN0TW9kZT0hIShtdD1t''@;'; put 'put ''dHx8e30pLm9iamVjdE1vZGUsZnQmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIW10LnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPUFlKHRoaXMsbXQsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIsZnQpLHRoaXMuYnVmZmVyPW5ldyBkZSx0aGlzLmxl''@;'; put 'put ''bmd0aD0wLHRoaXMucGlwZXM9bnVsbCx0aGlzLnBpcGVzQ291bnQ9MCx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5zeW5jPSEwLHRoaXMubmVlZFJlYWRhYmxlPSExLHRoaXMuZW1pdHRlZFJlYWRhYmxlPSEx''@;'; put 'put ''LHRoaXMucmVhZGFibGVMaXN0ZW5pbmc9ITEsdGhpcy5yZXN1bWVTY2hlZHVsZWQ9ITEsdGhpcy5wYXVzZWQ9ITAsdGhpcy5lbWl0Q2xvc2U9ITEhPT1tdC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIW10LmF1dG9EZXN0cm95LHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVmYXVsdEVu''@;'; put 'put ''Y29kaW5nPW10LmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLG10LmVuY29kaW5nJiYoc2V8fChzZT1aKDI1NTMpLlN0cmluZ0RlY29kZXIpLHRoaXMuZGVjb2Rl''@;'; put 'put ''cj1uZXcgc2UobXQuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9bXQuZW5jb2RpbmcpfWZ1bmN0aW9uIG5lKG10KXtpZihpZT1pZXx8Wig2NzUzKSwhKHRoaXMgaW5zdGFuY2VvZiBuZSkpcmV0dXJuIG5ldyBuZShtdCk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgeihtdCx0aGlzLHRoaXMgaW5z''@;'; put 'put ''dGFuY2VvZiBpZSksdGhpcy5yZWFkYWJsZT0hMCxtdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBtdC5yZWFkJiYodGhpcy5fcmVhZD1tdC5yZWFkKSwiZnVuY3Rpb24iPT10eXBlb2YgbXQuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9bXQuZGVzdHJveSkpLFcuY2FsbCh0aGlzKX1mdW5jdGlvbiB0''@;'; put 'put ''ZShtdCx2dCxmdCxGdCxvbil7cSgicmVhZGFibGVBZGRDaHVuayIsdnQpO3ZhciBfdCxxZSxvdCxSdCxDdCxudD1tdC5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09dnQpbnQucmVhZGluZz0hMSxmdW5jdGlvbihxZSxvdCl7aWYocSgib25Fb2ZDaHVuayIpLCFvdC5lbmRlZCl7aWYob3QuZGVj''@;'; put 'put ''b2Rlcil7dmFyIFJ0PW90LmRlY29kZXIuZW5kKCk7UnQmJlJ0Lmxlbmd0aCYmKG90LmJ1ZmZlci5wdXNoKFJ0KSxvdC5sZW5ndGgrPW90Lm9iamVjdE1vZGU/MTpSdC5sZW5ndGgpfW90LmVuZGVkPSEwLG90LnN5bmM/VChxZSk6KG90Lm5lZWRSZWFkYWJsZT0hMSxvdC5lbWl0dGVkUmVhZGFi''@;'; put 'put ''bGV8fChvdC5lbWl0dGVkUmVhZGFibGU9ITAsUyhxZSkpKX19KG10LG50KTtlbHNlIGlmKG9ufHwocWU9bnQsTi5pc0J1ZmZlcihDdD1vdD12dCl8fEN0IGluc3RhbmNlb2YgZWV8fCJzdHJpbmciPT10eXBlb2Ygb3R8fHZvaWQgMD09PW90fHxxZS5vYmplY3RNb2RlfHwoUnQ9bmV3IFNlKCJj''@;'; put 'put ''aHVuayIsWyJzdHJpbmciLCJCdWZmZXIiLCJVaW50OEFycmF5Il0sb3QpKSxfdD1SdCksX3QpaGUobXQsX3QpO2Vsc2UgaWYobnQub2JqZWN0TW9kZXx8dnQmJnZ0Lmxlbmd0aD4wKWlmKCJzdHJpbmciPT10eXBlb2YgdnR8fG50Lm9iamVjdE1vZGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZih2''@;'; put 'put ''dCk9PT1OLnByb3RvdHlwZXx8KHZ0PWZ1bmN0aW9uKHFlKXtyZXR1cm4gTi5mcm9tKHFlKX0odnQpKSxGdCludC5lbmRFbWl0dGVkP2hlKG10LG5ldyBFZSk6eChtdCxudCx2dCwhMCk7ZWxzZSBpZihudC5lbmRlZCloZShtdCxuZXcgSWUpO2Vsc2V7aWYobnQuZGVzdHJveWVkKXJldHVybiEx''@;'; put 'put ''O250LnJlYWRpbmc9ITEsbnQuZGVjb2RlciYmIWZ0Pyh2dD1udC5kZWNvZGVyLndyaXRlKHZ0KSxudC5vYmplY3RNb2RlfHwwIT09dnQubGVuZ3RoP3gobXQsbnQsdnQsITEpOkYobXQsbnQpKTp4KG10LG50LHZ0LCExKX1lbHNlIEZ0fHwobnQucmVhZGluZz0hMSxGKG10LG50KSk7cmV0dXJu''@;'; put 'put ''IW50LmVuZGVkJiYobnQubGVuZ3RoPG50LmhpZ2hXYXRlck1hcmt8fDA9PT1udC5sZW5ndGgpfWZ1bmN0aW9uIHgobXQsdnQsZnQsRnQpe3Z0LmZsb3dpbmcmJjA9PT12dC5sZW5ndGgmJiF2dC5zeW5jPyh2dC5hd2FpdERyYWluPTAsbXQuZW1pdCgiZGF0YSIsZnQpKToodnQubGVuZ3RoKz12''@;'; put 'put ''dC5vYmplY3RNb2RlPzE6ZnQubGVuZ3RoLEZ0P3Z0LmJ1ZmZlci51bnNoaWZ0KGZ0KTp2dC5idWZmZXIucHVzaChmdCksdnQubmVlZFJlYWRhYmxlJiZUKG10KSksRihtdCx2dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG5lLnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51bWVyYWJsZTohMSxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihtdCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPW10KX19KSxuZS5wcm90''@;'; put 'put ''b3R5cGUuZGVzdHJveT12ZS5kZXN0cm95LG5lLnByb3RvdHlwZS5fdW5kZXN0cm95PXZlLnVuZGVzdHJveSxuZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24obXQsdnQpe3Z0KG10KX0sbmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24obXQsdnQpe3ZhciBmdCxGdD10aGlzLl9yZWFkYWJs''@;'; put 'put ''ZVN0YXRlO3JldHVybiBGdC5vYmplY3RNb2RlP2Z0PSEwOiJzdHJpbmciPT10eXBlb2YgbXQmJigodnQ9dnR8fEZ0LmRlZmF1bHRFbmNvZGluZykhPT1GdC5lbmNvZGluZyYmKG10PU4uZnJvbShtdCx2dCksdnQ9IiIpLGZ0PSEwKSx0ZSh0aGlzLG10LHZ0LCExLGZ0KX0sbmUucHJvdG90eXBl''@;'; put 'put ''LnVuc2hpZnQ9ZnVuY3Rpb24obXQpe3JldHVybiB0ZSh0aGlzLG10LG51bGwsITAsITEpfSxuZS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sbmUucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKG10KXtz''@;'; put 'put ''ZXx8KHNlPVooMjU1MykuU3RyaW5nRGVjb2Rlcik7dmFyIHZ0PW5ldyBzZShtdCk7dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPXZ0LHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyLmVuY29kaW5nO2Zvcih2YXIgZnQ9dGhpcy5fcmVh''@;'; put 'put ''ZGFibGVTdGF0ZS5idWZmZXIuaGVhZCxGdD0iIjtudWxsIT09ZnQ7KUZ0Kz12dC53cml0ZShmdC5kYXRhKSxmdD1mdC5uZXh0O3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5jbGVhcigpLCIiIT09RnQmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLnB1c2goRnQpLHRoaXMu''@;'; put 'put ''X3JlYWRhYmxlU3RhdGUubGVuZ3RoPUZ0Lmxlbmd0aCx0aGlzfTt2YXIgUD0xMDczNzQxODI0O2Z1bmN0aW9uIFYobXQsdnQpe3JldHVybiBtdDw9MHx8MD09PXZ0Lmxlbmd0aCYmdnQuZW5kZWQ/MDp2dC5vYmplY3RNb2RlPzE6bXQhPW10P3Z0LmZsb3dpbmcmJnZ0Lmxlbmd0aD92dC5idWZm''@;'; put 'put ''ZXIuaGVhZC5kYXRhLmxlbmd0aDp2dC5sZW5ndGg6KG10PnZ0LmhpZ2hXYXRlck1hcmsmJih2dC5oaWdoV2F0ZXJNYXJrPSgoZnQ9bXQpPj1QP2Z0PVA6KGZ0LS0sZnR8PWZ0Pj4+MSxmdHw9ZnQ+Pj4yLGZ0fD1mdD4+PjQsZnR8PWZ0Pj4+OCxmdHw9ZnQ+Pj4xNixmdCsrKSxmdCkpLG10PD12''@;'; put 'put ''dC5sZW5ndGg/bXQ6dnQuZW5kZWQ/dnQubGVuZ3RoOih2dC5uZWVkUmVhZGFibGU9ITAsMCkpO3ZhciBmdH1mdW5jdGlvbiBUKG10KXt2YXIgdnQ9bXQuX3JlYWRhYmxlU3RhdGU7cSgiZW1pdFJlYWRhYmxlIix2dC5uZWVkUmVhZGFibGUsdnQuZW1pdHRlZFJlYWRhYmxlKSx2dC5uZWVkUmVh''@;'; put 'put ''ZGFibGU9ITEsdnQuZW1pdHRlZFJlYWRhYmxlfHwocSgiZW1pdFJlYWRhYmxlIix2dC5mbG93aW5nKSx2dC5lbWl0dGVkUmVhZGFibGU9ITAsbGUubmV4dFRpY2soUyxtdCkpfWZ1bmN0aW9uIFMobXQpe3ZhciB2dD1tdC5fcmVhZGFibGVTdGF0ZTtxKCJlbWl0UmVhZGFibGVfIix2dC5kZXN0''@;'; put 'put ''cm95ZWQsdnQubGVuZ3RoLHZ0LmVuZGVkKSx2dC5kZXN0cm95ZWR8fCF2dC5sZW5ndGgmJiF2dC5lbmRlZHx8KG10LmVtaXQoInJlYWRhYmxlIiksdnQuZW1pdHRlZFJlYWRhYmxlPSExKSx2dC5uZWVkUmVhZGFibGU9IXZ0LmZsb3dpbmcmJiF2dC5lbmRlZCYmdnQubGVuZ3RoPD12dC5oaWdo''@;'; put 'put ''V2F0ZXJNYXJrLFFlKG10KX1mdW5jdGlvbiBGKG10LHZ0KXt2dC5yZWFkaW5nTW9yZXx8KHZ0LnJlYWRpbmdNb3JlPSEwLGxlLm5leHRUaWNrKHllLG10LHZ0KSl9ZnVuY3Rpb24geWUobXQsdnQpe2Zvcig7IXZ0LnJlYWRpbmcmJiF2dC5lbmRlZCYmKHZ0Lmxlbmd0aDx2dC5oaWdoV2F0ZXJN''@;'; put 'put ''YXJrfHx2dC5mbG93aW5nJiYwPT09dnQubGVuZ3RoKTspe3ZhciBmdD12dC5sZW5ndGg7aWYocSgibWF5YmVSZWFkTW9yZSByZWFkIDAiKSxtdC5yZWFkKDApLGZ0PT09dnQubGVuZ3RoKWJyZWFrfXZ0LnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIENlKG10KXt2YXIgdnQ9bXQuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGU7dnQucmVhZGFibGVMaXN0ZW5pbmc9bXQubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLHZ0LnJlc3VtZVNjaGVkdWxlZCYmIXZ0LnBhdXNlZD92dC5mbG93aW5nPSEwOm10Lmxpc3RlbmVyQ291bnQoImRhdGEiKT4wJiZtdC5yZXN1bWUoKX1mdW5jdGlvbiBEZShtdCl7cSgicmVh''@;'; put 'put ''ZGFibGUgbmV4dHRpY2sgcmVhZCAwIiksbXQucmVhZCgwKX1mdW5jdGlvbiBQZShtdCx2dCl7cSgicmVzdW1lIix2dC5yZWFkaW5nKSx2dC5yZWFkaW5nfHxtdC5yZWFkKDApLHZ0LnJlc3VtZVNjaGVkdWxlZD0hMSxtdC5lbWl0KCJyZXN1bWUiKSxRZShtdCksdnQuZmxvd2luZyYmIXZ0LnJl''@;'; put 'put ''YWRpbmcmJm10LnJlYWQoMCl9ZnVuY3Rpb24gUWUobXQpe3ZhciB2dD1tdC5fcmVhZGFibGVTdGF0ZTtmb3IocSgiZmxvdyIsdnQuZmxvd2luZyk7dnQuZmxvd2luZyYmbnVsbCE9PW10LnJlYWQoKTspO31mdW5jdGlvbiAkZShtdCx2dCl7cmV0dXJuIDA9PT12dC5sZW5ndGg/bnVsbDoodnQu''@;'; put 'put ''b2JqZWN0TW9kZT9mdD12dC5idWZmZXIuc2hpZnQoKTohbXR8fG10Pj12dC5sZW5ndGg/KGZ0PXZ0LmRlY29kZXI/dnQuYnVmZmVyLmpvaW4oIiIpOjE9PT12dC5idWZmZXIubGVuZ3RoP3Z0LmJ1ZmZlci5maXJzdCgpOnZ0LmJ1ZmZlci5jb25jYXQodnQubGVuZ3RoKSx2dC5idWZmZXIuY2xl''@;'; put 'put ''YXIoKSk6ZnQ9dnQuYnVmZmVyLmNvbnN1bWUobXQsdnQuZGVjb2RlciksZnQpO3ZhciBmdH1mdW5jdGlvbiBndChtdCl7dmFyIHZ0PW10Ll9yZWFkYWJsZVN0YXRlO3EoImVuZFJlYWRhYmxlIix2dC5lbmRFbWl0dGVkKSx2dC5lbmRFbWl0dGVkfHwodnQuZW5kZWQ9ITAsbGUubmV4dFRpY2so''@;'; put 'put ''eXQsdnQsbXQpKX1mdW5jdGlvbiB5dChtdCx2dCl7aWYocSgiZW5kUmVhZGFibGVOVCIsbXQuZW5kRW1pdHRlZCxtdC5sZW5ndGgpLCFtdC5lbmRFbWl0dGVkJiYwPT09bXQubGVuZ3RoJiYobXQuZW5kRW1pdHRlZD0hMCx2dC5yZWFkYWJsZT0hMSx2dC5lbWl0KCJlbmQiKSxtdC5hdXRvRGVz''@;'; put 'put ''dHJveSkpe3ZhciBmdD12dC5fd3JpdGFibGVTdGF0ZTsoIWZ0fHxmdC5hdXRvRGVzdHJveSYmZnQuZmluaXNoZWQpJiZ2dC5kZXN0cm95KCl9fWZ1bmN0aW9uIHB0KG10LHZ0KXtmb3IodmFyIGZ0PTAsRnQ9bXQubGVuZ3RoO2Z0PEZ0O2Z0KyspaWYobXRbZnRdPT09dnQpcmV0dXJuIGZ0O3Jl''@;'; put 'put ''dHVybi0xfW5lLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKG10KXtxKCJyZWFkIixtdCksbXQ9cGFyc2VJbnQobXQsMTApO3ZhciB2dD10aGlzLl9yZWFkYWJsZVN0YXRlLGZ0PW10O2lmKDAhPT1tdCYmKHZ0LmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PW10JiZ2dC5uZWVkUmVhZGFibGUmJigo''@;'; put 'put ''MCE9PXZ0LmhpZ2hXYXRlck1hcms/dnQubGVuZ3RoPj12dC5oaWdoV2F0ZXJNYXJrOnZ0Lmxlbmd0aD4wKXx8dnQuZW5kZWQpKXJldHVybiBxKCJyZWFkOiBlbWl0UmVhZGFibGUiLHZ0Lmxlbmd0aCx2dC5lbmRlZCksMD09PXZ0Lmxlbmd0aCYmdnQuZW5kZWQ/Z3QodGhpcyk6VCh0aGlzKSxu''@;'; put 'put ''dWxsO2lmKDA9PT0obXQ9VihtdCx2dCkpJiZ2dC5lbmRlZClyZXR1cm4gMD09PXZ0Lmxlbmd0aCYmZ3QodGhpcyksbnVsbDt2YXIgRnQsb249dnQubmVlZFJlYWRhYmxlO3JldHVybiBxKCJuZWVkIHJlYWRhYmxlIixvbiksKDA9PT12dC5sZW5ndGh8fHZ0Lmxlbmd0aC1tdDx2dC5oaWdoV2F0''@;'; put 'put ''ZXJNYXJrKSYmcSgibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLG9uPSEwKSx2dC5lbmRlZHx8dnQucmVhZGluZz9xKCJyZWFkaW5nIG9yIGVuZGVkIixvbj0hMSk6b24mJihxKCJkbyByZWFkIiksdnQucmVhZGluZz0hMCx2dC5zeW5jPSEwLDA9PT12dC5sZW5ndGgmJih2dC5uZWVkUmVh''@;'; put 'put ''ZGFibGU9ITApLHRoaXMuX3JlYWQodnQuaGlnaFdhdGVyTWFyayksdnQuc3luYz0hMSx2dC5yZWFkaW5nfHwobXQ9VihmdCx2dCkpKSxudWxsPT09KEZ0PW10PjA/JGUobXQsdnQpOm51bGwpPyh2dC5uZWVkUmVhZGFibGU9dnQubGVuZ3RoPD12dC5oaWdoV2F0ZXJNYXJrLG10PTApOih2dC5s''@;'; put 'put ''ZW5ndGgtPW10LHZ0LmF3YWl0RHJhaW49MCksMD09PXZ0Lmxlbmd0aCYmKHZ0LmVuZGVkfHwodnQubmVlZFJlYWRhYmxlPSEwKSxmdCE9PW10JiZ2dC5lbmRlZCYmZ3QodGhpcykpLG51bGwhPT1GdCYmdGhpcy5lbWl0KCJkYXRhIixGdCksRnR9LG5lLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlv''@;'; put 'put ''bihtdCl7aGUodGhpcyxuZXcgVGUoIl9yZWFkKCkiKSl9LG5lLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKG10LHZ0KXt2YXIgZnQ9dGhpcyxGdD10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChGdC5waXBlc0NvdW50KXtjYXNlIDA6RnQucGlwZXM9bXQ7YnJlYWs7Y2FzZSAxOkZ0LnBpcGVz''@;'; put 'put ''PVtGdC5waXBlcyxtdF07YnJlYWs7ZGVmYXVsdDpGdC5waXBlcy5wdXNoKG10KX1GdC5waXBlc0NvdW50Kz0xLHEoInBpcGUgY291bnQ9JWQgb3B0cz0laiIsRnQucGlwZXNDb3VudCx2dCk7dmFyIG9uPXZ0JiYhMT09PXZ0LmVuZHx8bXQ9PT1sZS5zdGRvdXR8fG10PT09bGUuc3RkZXJyP3pl''@;'; put 'put ''Om50O2Z1bmN0aW9uIG50KCl7cSgib25lbmQiKSxtdC5lbmQoKX1GdC5lbmRFbWl0dGVkP2xlLm5leHRUaWNrKG9uKTpmdC5vbmNlKCJlbmQiLG9uKSxtdC5vbigidW5waXBlIixmdW5jdGlvbiBfdChZZSxBdCl7cSgib251bnBpcGUiKSxZZT09PWZ0JiZBdCYmITE9PT1BdC5oYXNVbnBpcGVk''@;'; put 'put ''JiYoQXQuaGFzVW5waXBlZD0hMCxxKCJjbGVhbnVwIiksbXQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixjdCksbXQucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsTnQpLG10LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIscWUpLG10LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsQ3QpLG10LnJlbW92ZUxp''@;'; put 'put ''c3RlbmVyKCJ1bnBpcGUiLF90KSxmdC5yZW1vdmVMaXN0ZW5lcigiZW5kIixudCksZnQucmVtb3ZlTGlzdGVuZXIoImVuZCIsemUpLGZ0LnJlbW92ZUxpc3RlbmVyKCJkYXRhIixSdCksb3Q9ITAsIUZ0LmF3YWl0RHJhaW58fG10Ll93cml0YWJsZVN0YXRlJiYhbXQuX3dyaXRhYmxlU3RhdGUu''@;'; put 'put ''bmVlZERyYWlufHxxZSgpKX0pO3ZhciBZZSxxZT0oWWU9ZnQsZnVuY3Rpb24oKXt2YXIgQXQ9WWUuX3JlYWRhYmxlU3RhdGU7cSgicGlwZU9uRHJhaW4iLEF0LmF3YWl0RHJhaW4pLEF0LmF3YWl0RHJhaW4mJkF0LmF3YWl0RHJhaW4tLSwwPT09QXQuYXdhaXREcmFpbiYmWShZZSwiZGF0YSIp''@;'; put 'put ''JiYoQXQuZmxvd2luZz0hMCxRZShZZSkpfSk7bXQub24oImRyYWluIixxZSk7dmFyIG90PSExO2Z1bmN0aW9uIFJ0KFllKXtxKCJvbmRhdGEiKTt2YXIgQXQ9bXQud3JpdGUoWWUpO3EoImRlc3Qud3JpdGUiLEF0KSwhMT09PUF0JiYoKDE9PT1GdC5waXBlc0NvdW50JiZGdC5waXBlcz09PW10''@;'; put 'put ''fHxGdC5waXBlc0NvdW50PjEmJi0xIT09cHQoRnQucGlwZXMsbXQpKSYmIW90JiYocSgiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixGdC5hd2FpdERyYWluKSxGdC5hd2FpdERyYWluKyspLGZ0LnBhdXNlKCkpfWZ1bmN0aW9uIEN0KFllKXtxKCJvbmVycm9yIixZZSksemUoKSxtdC5y''@;'; put 'put ''ZW1vdmVMaXN0ZW5lcigiZXJyb3IiLEN0KSwwPT09WShtdCwiZXJyb3IiKSYmaGUobXQsWWUpfWZ1bmN0aW9uIGN0KCl7bXQucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsTnQpLHplKCl9ZnVuY3Rpb24gTnQoKXtxKCJvbmZpbmlzaCIpLG10LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsY3QpLHpl''@;'; put 'put ''KCl9ZnVuY3Rpb24gemUoKXtxKCJ1bnBpcGUiKSxmdC51bnBpcGUobXQpfXJldHVybiBmdC5vbigiZGF0YSIsUnQpLGZ1bmN0aW9uKFllLEF0LGp0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgWWUucHJlcGVuZExpc3RlbmVyKXJldHVybiBZZS5wcmVwZW5kTGlzdGVuZXIoQXQsanQpO1llLl9l''@;'; put 'put ''dmVudHMmJlllLl9ldmVudHNbQXRdP0FycmF5LmlzQXJyYXkoWWUuX2V2ZW50c1tBdF0pP1llLl9ldmVudHNbQXRdLnVuc2hpZnQoanQpOlllLl9ldmVudHNbQXRdPVtqdCxZZS5fZXZlbnRzW0F0XV06WWUub24oQXQsanQpfShtdCwiZXJyb3IiLEN0KSxtdC5vbmNlKCJjbG9zZSIsY3QpLG10''@;'; put 'put ''Lm9uY2UoImZpbmlzaCIsTnQpLG10LmVtaXQoInBpcGUiLGZ0KSxGdC5mbG93aW5nfHwocSgicGlwZSByZXN1bWUiKSxmdC5yZXN1bWUoKSksbXR9LG5lLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24obXQpe3ZhciB2dD10aGlzLl9yZWFkYWJsZVN0YXRlLGZ0PXtoYXNVbnBpcGVkOiExfTtp''@;'; put 'put ''ZigwPT09dnQucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09dnQucGlwZXNDb3VudClyZXR1cm4gbXQmJm10IT09dnQucGlwZXN8fChtdHx8KG10PXZ0LnBpcGVzKSx2dC5waXBlcz1udWxsLHZ0LnBpcGVzQ291bnQ9MCx2dC5mbG93aW5nPSExLG10JiZtdC5lbWl0KCJ1bnBpcGUiLHRo''@;'; put 'put ''aXMsZnQpKSx0aGlzO2lmKCFtdCl7dmFyIEZ0PXZ0LnBpcGVzLG9uPXZ0LnBpcGVzQ291bnQ7dnQucGlwZXM9bnVsbCx2dC5waXBlc0NvdW50PTAsdnQuZmxvd2luZz0hMTtmb3IodmFyIF90PTA7X3Q8b247X3QrKylGdFtfdF0uZW1pdCgidW5waXBlIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7''@;'; put 'put ''cmV0dXJuIHRoaXN9dmFyIG50PXB0KHZ0LnBpcGVzLG10KTtyZXR1cm4tMT09PW50fHwodnQucGlwZXMuc3BsaWNlKG50LDEpLHZ0LnBpcGVzQ291bnQtPTEsMT09PXZ0LnBpcGVzQ291bnQmJih2dC5waXBlcz12dC5waXBlc1swXSksbXQuZW1pdCgidW5waXBlIix0aGlzLGZ0KSksdGhpc30s''@;'; put 'put ''bmUucHJvdG90eXBlLmFkZExpc3RlbmVyPW5lLnByb3RvdHlwZS5vbj1mdW5jdGlvbihtdCx2dCl7dmFyIGZ0PVcucHJvdG90eXBlLm9uLmNhbGwodGhpcyxtdCx2dCksRnQ9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4iZGF0YSI9PT1tdD8oRnQucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5s''@;'; put 'put ''aXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsITEhPT1GdC5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKToicmVhZGFibGUiPT09bXQmJihGdC5lbmRFbWl0dGVkfHxGdC5yZWFkYWJsZUxpc3RlbmluZ3x8KEZ0LnJlYWRhYmxlTGlzdGVuaW5nPUZ0Lm5lZWRSZWFkYWJsZT0hMCxGdC5mbG93aW5n''@;'; put 'put ''PSExLEZ0LmVtaXR0ZWRSZWFkYWJsZT0hMSxxKCJvbiByZWFkYWJsZSIsRnQubGVuZ3RoLEZ0LnJlYWRpbmcpLEZ0Lmxlbmd0aD9UKHRoaXMpOkZ0LnJlYWRpbmd8fGxlLm5leHRUaWNrKERlLHRoaXMpKSksZnR9LG5lLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihtdCx2dCl7''@;'; put 'put ''dmFyIGZ0PVcucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxtdCx2dCk7cmV0dXJuInJlYWRhYmxlIj09PW10JiZsZS5uZXh0VGljayhDZSx0aGlzKSxmdH0sbmUucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihtdCl7dmFyIHZ0PVcucHJvdG90eXBlLnJl''@;'; put 'put ''bW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuInJlYWRhYmxlIiE9PW10JiZ2b2lkIDAhPT1tdHx8bGUubmV4dFRpY2soQ2UsdGhpcyksdnR9LG5lLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgZnQsbXQ9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1''@;'; put 'put ''cm4gbXQuZmxvd2luZ3x8KHEoInJlc3VtZSIpLG10LmZsb3dpbmc9IW10LnJlYWRhYmxlTGlzdGVuaW5nLHRoaXMsKGZ0PW10KS5yZXN1bWVTY2hlZHVsZWR8fChmdC5yZXN1bWVTY2hlZHVsZWQ9ITAsbGUubmV4dFRpY2soUGUsdGhpcyxmdCkpKSxtdC5wYXVzZWQ9ITEsdGhpc30sbmUucHJv''@;'; put 'put ''dG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIHEoImNhbGwgcGF1c2UgZmxvd2luZz0laiIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKHEoInBhdXNlIiksdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPSExLHRo''@;'; put 'put ''aXMuZW1pdCgicGF1c2UiKSksdGhpcy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9ITAsdGhpc30sbmUucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24obXQpe3ZhciB2dD10aGlzLGZ0PXRoaXMuX3JlYWRhYmxlU3RhdGUsRnQ9ITE7Zm9yKHZhciBvbiBpbiBtdC5vbigiZW5kIixmdW5jdGlvbigpe2lm''@;'; put 'put ''KHEoIndyYXBwZWQgZW5kIiksZnQuZGVjb2RlciYmIWZ0LmVuZGVkKXt2YXIgbnQ9ZnQuZGVjb2Rlci5lbmQoKTtudCYmbnQubGVuZ3RoJiZ2dC5wdXNoKG50KX12dC5wdXNoKG51bGwpfSksbXQub24oImRhdGEiLGZ1bmN0aW9uKG50KXtxKCJ3cmFwcGVkIGRhdGEiKSxmdC5kZWNvZGVyJiYo''@;'; put 'put ''bnQ9ZnQuZGVjb2Rlci53cml0ZShudCkpLGZ0Lm9iamVjdE1vZGUmJm51bGw9PW50fHwoZnQub2JqZWN0TW9kZXx8bnQmJm50Lmxlbmd0aCkmJih2dC5wdXNoKG50KXx8KEZ0PSEwLG10LnBhdXNlKCkpKX0pLG10KXZvaWQgMD09PXRoaXNbb25dJiYiZnVuY3Rpb24iPT10eXBlb2YgbXRbb25d''@;'; put 'put ''JiYodGhpc1tvbl09ZnVuY3Rpb24obnQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtdFtudF0uYXBwbHkobXQsYXJndW1lbnRzKX19KG9uKSk7Zm9yKHZhciBfdD0wO190PE8ubGVuZ3RoO190KyspbXQub24oT1tfdF0sdGhpcy5lbWl0LmJpbmQodGhpcyxPW190XSkpO3JldHVybiB0aGlz''@;'; put 'put ''Ll9yZWFkPWZ1bmN0aW9uKG50KXtxKCJ3cmFwcGVkIF9yZWFkIixudCksRnQmJihGdD0hMSxtdC5yZXN1bWUoKSl9LHRoaXN9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihuZS5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWFl''@;'; put 'put ''JiYoYWU9Wig1ODUwKSksYWUodGhpcyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobmUucHJvdG90eXBlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KG5lLnByb3RvdHlwZSwicmVhZGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobmUucHJvdG90''@;'; put 'put ''eXBlLCJyZWFkYWJsZUZsb3dpbmciLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbihtdCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1tdCl9fSksbmUu''@;'; put 'put ''X2Zyb21MaXN0PSRlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZS5wcm90b3R5cGUsInJlYWRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKG5lLmZy''@;'; put 'put ''b209ZnVuY3Rpb24obXQsdnQpe3JldHVybiB2b2lkIDA9PT1mZSYmKGZlPVooNTE2NykpLGZlKG5lLG10LHZ0KX0pfSw0NjA1OihVLFEsWik9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPUo7dmFyIGllPVooNDI4MSkucSxsZT1pZS5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxZPWllLkVS''@;'; put 'put ''Ul9NVUxUSVBMRV9DQUxMQkFDSyxXPWllLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsTj1pZS5FUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAsZWU9Wig2NzUzKTtmdW5jdGlvbiBxKGZlLGRlKXt2YXIgdmU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7dmUudHJhbnNmb3JtaW5n''@;'; put 'put ''PSExO3ZhciBBZT12ZS53cml0ZWNiO2lmKG51bGw9PT1BZSlyZXR1cm4gdGhpcy5lbWl0KCJlcnJvciIsbmV3IFkpO3ZlLndyaXRlY2h1bms9bnVsbCx2ZS53cml0ZWNiPW51bGwsbnVsbCE9ZGUmJnRoaXMucHVzaChkZSksQWUoZmUpO3ZhciBrZT10aGlzLl9yZWFkYWJsZVN0YXRlO2tlLnJl''@;'; put 'put ''YWRpbmc9ITEsKGtlLm5lZWRSZWFkYWJsZXx8a2UubGVuZ3RoPGtlLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGtlLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIEooZmUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEopKXJldHVybiBuZXcgSihmZSk7ZWUuY2FsbCh0aGlzLGZlKSx0aGlzLl90''@;'; put 'put ''cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06cS5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlz''@;'; put 'put ''Ll9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsZmUmJigiZnVuY3Rpb24iPT10eXBlb2YgZmUudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPWZlLnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIGZlLmZsdXNoJiYodGhpcy5fZmx1c2g9ZmUuZmx1c2gpKSx0aGlzLm9uKCJwcmVmaW5pc2gi''@;'; put 'put ''LHNlKX1mdW5jdGlvbiBzZSgpe3ZhciBmZT10aGlzOyJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mbHVzaHx8dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ/YWUodGhpcyxudWxsLG51bGwpOnRoaXMuX2ZsdXNoKGZ1bmN0aW9uKGRlLHZlKXthZShmZSxkZSx2ZSl9KX1mdW5jdGlvbiBh''@;'; put 'put ''ZShmZSxkZSx2ZSl7aWYoZGUpcmV0dXJuIGZlLmVtaXQoImVycm9yIixkZSk7aWYobnVsbCE9dmUmJmZlLnB1c2godmUpLGZlLl93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgTjtpZihmZS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBXO3JldHVybiBmZS5w''@;'; put 'put ''dXNoKG51bGwpfVooNTcxNykoSixlZSksSi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihmZSxkZSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsZWUucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLGZlLGRlKX0sSi5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5j''@;'; put 'put ''dGlvbihmZSxkZSx2ZSl7dmUobmV3IGxlKCJfdHJhbnNmb3JtKCkiKSl9LEoucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihmZSxkZSx2ZSl7dmFyIEFlPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKEFlLndyaXRlY2I9dmUsQWUud3JpdGVjaHVuaz1mZSxBZS53cml0ZWVuY29kaW5nPWRlLCFB''@;'; put 'put ''ZS50cmFuc2Zvcm1pbmcpe3ZhciBrZT10aGlzLl9yZWFkYWJsZVN0YXRlOyhBZS5uZWVkVHJhbnNmb3JtfHxrZS5uZWVkUmVhZGFibGV8fGtlLmxlbmd0aDxrZS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChrZS5oaWdoV2F0ZXJNYXJrKX19LEoucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9u''@;'; put 'put ''KGZlKXt2YXIgZGU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PWRlLndyaXRlY2h1bmt8fGRlLnRyYW5zZm9ybWluZz9kZS5uZWVkVHJhbnNmb3JtPSEwOihkZS50cmFuc2Zvcm1pbmc9ITAsdGhpcy5fdHJhbnNmb3JtKGRlLndyaXRlY2h1bmssZGUud3JpdGVlbmNvZGluZyxkZS5hZnRl''@;'; put 'put ''clRyYW5zZm9ybSkpfSxKLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihmZSxkZSl7ZWUucHJvdG90eXBlLl9kZXN0cm95LmNhbGwodGhpcyxmZSxmdW5jdGlvbih2ZSl7ZGUodmUpfSl9fSw0MjI5OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllLGxlPVooNDE1NSk7ZnVuY3Rpb24g''@;'; put 'put ''WShGKXt2YXIgeWU9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24oQ2UsRGUsUGUpe3ZhciBRZT1DZS5lbnRyeTtmb3IoQ2UuZW50cnk9bnVsbDtRZTspe3ZhciAkZT1RZS5jYWxsYmFjaztEZS5wZW5kaW5nY2ItLSwk''@;'; put 'put ''ZSh1bmRlZmluZWQpLFFlPVFlLm5leHR9RGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9Q2V9KHllLEYpfX1VLmV4cG9ydHM9bmUsbmUuV3JpdGFibGVTdGF0ZT16O3ZhciBKLFc9e2RlcHJlY2F0ZTpaKDQ5MjcpfSxOPVooMjUwMyksZWU9Wig4NzY0KS5CdWZmZXIscT1aLmcuVWludDhBcnJh''@;'; put 'put ''eXx8ZnVuY3Rpb24oKXt9LHNlPVooMTE5NSksYWU9WigyNDU3KS5nZXRIaWdoV2F0ZXJNYXJrLGZlPVooNDI4MSkucSxkZT1mZS5FUlJfSU5WQUxJRF9BUkdfVFlQRSx2ZT1mZS5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxBZT1mZS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssa2U9ZmUuRVJS''@;'; put 'put ''X1NUUkVBTV9DQU5OT1RfUElQRSxTZT1mZS5FUlJfU1RSRUFNX0RFU1RST1lFRCxJZT1mZS5FUlJfU1RSRUFNX05VTExfVkFMVUVTLFRlPWZlLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELEVlPWZlLkVSUl9VTktOT1dOX0VOQ09ESU5HLGhlPXNlLmVycm9yT3JEZXN0cm95O2Z1bmN0aW9u''@;'; put 'put ''IE8oKXt9ZnVuY3Rpb24geihGLHllLENlKXtpZT1pZXx8Wig2NzUzKSwiYm9vbGVhbiIhPXR5cGVvZiBDZSYmKENlPXllIGluc3RhbmNlb2YgaWUpLHRoaXMub2JqZWN0TW9kZT0hIShGPUZ8fHt9KS5vYmplY3RNb2RlLENlJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFG''@;'; put 'put ''LndyaXRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPWFlKHRoaXMsRiwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIixDZSksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhp''@;'; put 'put ''cy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWNvZGVTdHJpbmdzPSEoITE9PT1GLmRlY29kZVN0cmluZ3MpLHRoaXMuZGVmYXVsdEVuY29kaW5nPUYuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhp''@;'; put 'put ''cy5idWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253cml0ZT1mdW5jdGlvbihQZSl7IWZ1bmN0aW9uKFFlLCRlKXt2YXIgdnQsZ3Q9UWUuX3dyaXRhYmxlU3RhdGUseXQ9Z3Quc3luYyxwdD1ndC53cml0ZWNiO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBwdCl0aHJvdyBuZXcgQWU7aWYoKHZ0PWd0''@;'; put 'put ''KS53cml0aW5nPSExLHZ0LndyaXRlY2I9bnVsbCx2dC5sZW5ndGgtPXZ0LndyaXRlbGVuLHZ0LndyaXRlbGVuPTAsJGUpIWZ1bmN0aW9uKHZ0LGZ0LEZ0LG9uLF90KXstLWZ0LnBlbmRpbmdjYixGdD8obGUubmV4dFRpY2soX3Qsb24pLGxlLm5leHRUaWNrKFMsdnQsZnQpLHZ0Ll93cml0YWJs''@;'; put 'put ''ZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxoZSh2dCxvbikpOihfdChvbiksdnQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLGhlKHZ0LG9uKSxTKHZ0LGZ0KSl9KFFlLGd0LHl0LCRlLHB0KTtlbHNle3ZhciBtdD1WKGd0KXx8UWUuZGVzdHJveWVkO210fHxndC5jb3JrZWR8fGd0LmJ1''@;'; put 'put ''ZmZlclByb2Nlc3Npbmd8fCFndC5idWZmZXJlZFJlcXVlc3R8fFAoUWUsZ3QpLHl0P2xlLm5leHRUaWNrKHgsUWUsZ3QsbXQscHQpOngoUWUsZ3QsbXQscHQpfX0oeWUsUGUpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlz''@;'; put 'put ''Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9ITEhPT1GLmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhRi5hdXRvRGVzdHJveSx0aGlzLmJ1ZmZlcmVkUmVx''@;'; put 'put ''dWVzdENvdW50PTAsdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IFkodGhpcyl9ZnVuY3Rpb24gbmUoRil7dmFyIHllPXRoaXMgaW5zdGFuY2VvZihpZT1pZXx8Wig2NzUzKSk7aWYoIXllJiYhSi5jYWxsKG5lLHRoaXMpKXJldHVybiBuZXcgbmUoRik7dGhpcy5fd3JpdGFibGVTdGF0ZT1u''@;'; put 'put ''ZXcgeihGLHRoaXMseWUpLHRoaXMud3JpdGFibGU9ITAsRiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBGLndyaXRlJiYodGhpcy5fd3JpdGU9Ri53cml0ZSksImZ1bmN0aW9uIj09dHlwZW9mIEYud3JpdGV2JiYodGhpcy5fd3JpdGV2PUYud3JpdGV2KSwiZnVuY3Rpb24iPT10eXBlb2YgRi5kZXN0''@;'; put 'put ''cm95JiYodGhpcy5fZGVzdHJveT1GLmRlc3Ryb3kpLCJmdW5jdGlvbiI9PXR5cGVvZiBGLmZpbmFsJiYodGhpcy5fZmluYWw9Ri5maW5hbCkpLE4uY2FsbCh0aGlzKX1mdW5jdGlvbiB0ZShGLHllLENlLERlLFBlLFFlLCRlKXt5ZS53cml0ZWxlbj1EZSx5ZS53cml0ZWNiPSRlLHllLndyaXRp''@;'; put 'put ''bmc9ITAseWUuc3luYz0hMCx5ZS5kZXN0cm95ZWQ/eWUub253cml0ZShuZXcgU2UoIndyaXRlIikpOkNlP0YuX3dyaXRldihQZSx5ZS5vbndyaXRlKTpGLl93cml0ZShQZSxRZSx5ZS5vbndyaXRlKSx5ZS5zeW5jPSExfWZ1bmN0aW9uIHgoRix5ZSxDZSxEZSl7dmFyIFBlLFFlO0NlfHwoUGU9''@;'; put 'put ''RiwwPT09KFFlPXllKS5sZW5ndGgmJlFlLm5lZWREcmFpbiYmKFFlLm5lZWREcmFpbj0hMSxQZS5lbWl0KCJkcmFpbiIpKSkseWUucGVuZGluZ2NiLS0sRGUoKSxTKEYseWUpfWZ1bmN0aW9uIFAoRix5ZSl7eWUuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgQ2U9eWUuYnVmZmVyZWRSZXF1ZXN0''@;'; put 'put ''O2lmKEYuX3dyaXRldiYmQ2UmJkNlLm5leHQpe3ZhciBQZT1uZXcgQXJyYXkoeWUuYnVmZmVyZWRSZXF1ZXN0Q291bnQpLFFlPXllLmNvcmtlZFJlcXVlc3RzRnJlZTtRZS5lbnRyeT1DZTtmb3IodmFyICRlPTAsZ3Q9ITA7Q2U7KVBlWyRlXT1DZSxDZS5pc0J1Znx8KGd0PSExKSxDZT1DZS5u''@;'; put 'put ''ZXh0LCRlKz0xO1BlLmFsbEJ1ZmZlcnM9Z3QsdGUoRix5ZSwhMCx5ZS5sZW5ndGgsUGUsIiIsUWUuZmluaXNoKSx5ZS5wZW5kaW5nY2IrKyx5ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsUWUubmV4dD8oeWUuY29ya2VkUmVxdWVzdHNGcmVlPVFlLm5leHQsUWUubmV4dD1udWxsKTp5ZS5j''@;'; put 'put ''b3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IFkoeWUpLHllLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTB9ZWxzZXtmb3IoO0NlOyl7dmFyIHl0PUNlLmNodW5rO2lmKHRlKEYseWUsITEseWUub2JqZWN0TW9kZT8xOnl0Lmxlbmd0aCx5dCxDZS5lbmNvZGluZyxDZS5jYWxsYmFjayksQ2U9Q2UubmV4dCx5''@;'; put 'put ''ZS5idWZmZXJlZFJlcXVlc3RDb3VudC0tLHllLndyaXRpbmcpYnJlYWt9bnVsbD09PUNlJiYoeWUubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX15ZS5idWZmZXJlZFJlcXVlc3Q9Q2UseWUuYnVmZmVyUHJvY2Vzc2luZz0hMX1mdW5jdGlvbiBWKEYpe3JldHVybiBGLmVuZGluZyYmMD09PUYu''@;'; put 'put ''bGVuZ3RoJiZudWxsPT09Ri5idWZmZXJlZFJlcXVlc3QmJiFGLmZpbmlzaGVkJiYhRi53cml0aW5nfWZ1bmN0aW9uIFQoRix5ZSl7Ri5fZmluYWwoZnVuY3Rpb24oQ2Upe3llLnBlbmRpbmdjYi0tLENlJiZoZShGLENlKSx5ZS5wcmVmaW5pc2hlZD0hMCxGLmVtaXQoInByZWZpbmlzaCIpLFMo''@;'; put 'put ''Rix5ZSl9KX1mdW5jdGlvbiBTKEYseWUpe3ZhciBQZSxRZSxDZT1WKHllKTtpZihDZSYmKFBlPUYsKFFlPXllKS5wcmVmaW5pc2hlZHx8UWUuZmluYWxDYWxsZWR8fCgiZnVuY3Rpb24iIT10eXBlb2YgUGUuX2ZpbmFsfHxRZS5kZXN0cm95ZWQ/KFFlLnByZWZpbmlzaGVkPSEwLFBlLmVtaXQo''@;'; put 'put ''InByZWZpbmlzaCIpKTooUWUucGVuZGluZ2NiKyssUWUuZmluYWxDYWxsZWQ9ITAsbGUubmV4dFRpY2soVCxQZSxRZSkpKSwwPT09eWUucGVuZGluZ2NiJiYoeWUuZmluaXNoZWQ9ITAsRi5lbWl0KCJmaW5pc2giKSx5ZS5hdXRvRGVzdHJveSkpKXt2YXIgRGU9Ri5fcmVhZGFibGVTdGF0ZTso''@;'; put 'put ''IURlfHxEZS5hdXRvRGVzdHJveSYmRGUuZW5kRW1pdHRlZCkmJkYuZGVzdHJveSgpfXJldHVybiBDZX1aKDU3MTcpKG5lLE4pLHoucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgRj10aGlzLmJ1ZmZlcmVkUmVxdWVzdCx5ZT1bXTtGOyl5ZS5wdXNoKEYpLEY9Ri5uZXh0''@;'; put 'put ''O3JldHVybiB5ZX0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6Vy5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2Ug''@;'; put 'put ''X3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2goRil7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNl''@;'; put 'put ''XT8oSj1GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSxPYmplY3QuZGVmaW5lUHJvcGVydHkobmUsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbihGKXtyZXR1cm4hIUouY2FsbCh0aGlzLEYpfHx0aGlzPT09bmUmJkYmJkYuX3dyaXRhYmxlU3RhdGUgaW5z''@;'; put 'put ''dGFuY2VvZiB6fX0pKTpKPWZ1bmN0aW9uKEYpe3JldHVybiBGIGluc3RhbmNlb2YgdGhpc30sbmUucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtoZSh0aGlzLG5ldyBrZSl9LG5lLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihGLHllLENlKXt2YXIgRGUsZ3QseXQscHQsUGU9dGhpcy5fd3Jp''@;'; put 'put ''dGFibGVTdGF0ZSxRZT0hMSwkZT0hUGUub2JqZWN0TW9kZSYmKGVlLmlzQnVmZmVyKERlPUYpfHxEZSBpbnN0YW5jZW9mIHEpO3JldHVybiAkZSYmIWVlLmlzQnVmZmVyKEYpJiYoRj1lZS5mcm9tKEYpKSwiZnVuY3Rpb24iPT10eXBlb2YgeWUmJihDZT15ZSx5ZT1udWxsKSwkZT95ZT0iYnVm''@;'; put 'put ''ZmVyIjp5ZXx8KHllPVBlLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIENlJiYoQ2U9TyksUGUuZW5kaW5nPyhndD10aGlzLHl0PUNlLHB0PW5ldyBUZSxoZShndCxwdCksbGUubmV4dFRpY2soeXQscHQpKTooJGV8fGZ1bmN0aW9uKGd0LHl0LHB0LG10KXt2YXIgdnQ7cmV0''@;'; put 'put ''dXJuIG51bGw9PT1wdD92dD1uZXcgSWU6InN0cmluZyI9PXR5cGVvZiBwdHx8eXQub2JqZWN0TW9kZXx8KHZ0PW5ldyBkZSgiY2h1bmsiLFsic3RyaW5nIiwiQnVmZmVyIl0scHQpKSwhdnR8fChoZShndCx2dCksbGUubmV4dFRpY2sobXQsdnQpLCExKX0odGhpcyxQZSxGLENlKSkmJihQZS5w''@;'; put 'put ''ZW5kaW5nY2IrKyxRZT1mdW5jdGlvbihndCx5dCxwdCxtdCx2dCxmdCl7aWYoIXB0KXt2YXIgRnQ9KG90PW10LChxZT15dCkub2JqZWN0TW9kZXx8ITE9PT1xZS5kZWNvZGVTdHJpbmdzfHwic3RyaW5nIiE9dHlwZW9mIG90fHwob3Q9ZWUuZnJvbShvdCx2dCkpLG90KTttdCE9PUZ0JiYocHQ9''@;'; put 'put ''ITAsdnQ9ImJ1ZmZlciIsbXQ9RnQpfXZhciBxZSxvdCxvbj15dC5vYmplY3RNb2RlPzE6bXQubGVuZ3RoO3l0Lmxlbmd0aCs9b247dmFyIF90PXl0Lmxlbmd0aDx5dC5oaWdoV2F0ZXJNYXJrO2lmKF90fHwoeXQubmVlZERyYWluPSEwKSx5dC53cml0aW5nfHx5dC5jb3JrZWQpe3ZhciBudD15''@;'; put 'put ''dC5sYXN0QnVmZmVyZWRSZXF1ZXN0O3l0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOm10LGVuY29kaW5nOnZ0LGlzQnVmOnB0LGNhbGxiYWNrOmZ0LG5leHQ6bnVsbH0sbnQ/bnQubmV4dD15dC5sYXN0QnVmZmVyZWRSZXF1ZXN0Onl0LmJ1ZmZlcmVkUmVxdWVzdD15dC5sYXN0QnVmZmVy''@;'; put 'put ''ZWRSZXF1ZXN0LHl0LmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgdGUoZ3QseXQsITEsb24sbXQsdnQsZnQpO3JldHVybiBfdH0odGhpcyxQZSwkZSxGLHllLENlKSksUWV9LG5lLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sbmUu''@;'; put 'put ''cHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigpe3ZhciBGPXRoaXMuX3dyaXRhYmxlU3RhdGU7Ri5jb3JrZWQmJihGLmNvcmtlZC0tLEYud3JpdGluZ3x8Ri5jb3JrZWR8fEYuYnVmZmVyUHJvY2Vzc2luZ3x8IUYuYnVmZmVyZWRSZXF1ZXN0fHxQKHRoaXMsRikpfSxuZS5wcm90b3R5cGUuc2V0''@;'; put 'put ''RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKEYpe2lmKCJzdHJpbmciPT10eXBlb2YgRiYmKEY9Ri50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5p''@;'; put 'put ''bmRleE9mKChGKyIiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IEVlKEYpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1GLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZS5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZToh''@;'; put 'put ''MSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobmUucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksbmUucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihGLHllLENlKXtDZShuZXcgdmUoIl93cml0ZSgpIikpfSxuZS5wcm90b3R5cGUuX3dyaXRldj1udWxsLG5lLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oRix5''@;'; put 'put ''ZSxDZSl7dmFyIFFlLCRlLERlPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEY/KENlPUYsRj1udWxsLHllPW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiB5ZSYmKENlPXllLHllPW51bGwpLG51bGwhPUYmJnRoaXMud3JpdGUoRix5ZSksRGUuY29ya2VkJiYo''@;'; put 'put ''RGUuY29ya2VkPTEsdGhpcy51bmNvcmsoKSksRGUuZW5kaW5nfHwodGhpcywkZT1DZSwoUWU9RGUpLmVuZGluZz0hMCxTKHRoaXMsUWUpLCRlJiYoUWUuZmluaXNoZWQ/bGUubmV4dFRpY2soJGUpOnRoaXMub25jZSgiZmluaXNoIiwkZSkpLFFlLmVuZGVkPSEwLHRoaXMud3JpdGFibGU9ITEp''@;'; put 'put ''LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZS5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG5lLnByb3RvdHlwZSwiZGVz''@;'; put 'put ''dHJveWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihGKXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5k''@;'; put 'put ''ZXN0cm95ZWQ9Ril9fSksbmUucHJvdG90eXBlLmRlc3Ryb3k9c2UuZGVzdHJveSxuZS5wcm90b3R5cGUuX3VuZGVzdHJveT1zZS51bmRlc3Ryb3ksbmUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKEYseWUpe3llKEYpfX0sNTg1MDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZSxs''@;'; put 'put ''ZT1aKDQxNTUpO2Z1bmN0aW9uIFkoSWUsVGUsRWUpe3JldHVybiBUZSBpbiBJZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoSWUsVGUse3ZhbHVlOkVlLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6SWVbVGVdPUVlLEllfXZhciBXPVooODYxMCksTj1TeW1ib2wo''@;'; put 'put ''Imxhc3RSZXNvbHZlIiksZWU9U3ltYm9sKCJsYXN0UmVqZWN0IikscT1TeW1ib2woImVycm9yIiksSj1TeW1ib2woImVuZGVkIiksc2U9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLGFlPVN5bWJvbCgiaGFuZGxlUHJvbWlzZSIpLGZlPVN5bWJvbCgic3RyZWFtIik7ZnVuY3Rpb24gZGUoSWUsVGUp''@;'; put 'put ''e3JldHVybnt2YWx1ZTpJZSxkb25lOlRlfX1mdW5jdGlvbiB2ZShJZSl7dmFyIFRlPUllW05dO2lmKG51bGwhPT1UZSl7dmFyIEVlPUllW2ZlXS5yZWFkKCk7bnVsbCE9PUVlJiYoSWVbc2VdPW51bGwsSWVbTl09bnVsbCxJZVtlZV09bnVsbCxUZShkZShFZSwhMSkpKX19ZnVuY3Rpb24gQWUo''@;'; put 'put ''SWUpe2xlLm5leHRUaWNrKHZlLEllKX12YXIga2U9T2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmN0aW9uKCl7fSksU2U9T2JqZWN0LnNldFByb3RvdHlwZU9mKChZKGllPXtnZXQgc3RyZWFtKCl7cmV0dXJuIHRoaXNbZmVdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIEllPXRoaXMsVGU9dGhpc1tx''@;'; put 'put ''XTtpZihudWxsIT09VGUpcmV0dXJuIFByb21pc2UucmVqZWN0KFRlKTtpZih0aGlzW0pdKXJldHVybiBQcm9taXNlLnJlc29sdmUoZGUodm9pZCAwLCEwKSk7aWYodGhpc1tmZV0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih6LG5lKXtsZS5uZXh0VGljayhmdW5jdGlv''@;'; put 'put ''bigpe0llW3FdP25lKEllW3FdKTp6KGRlKHZvaWQgMCwhMCkpfSl9KTt2YXIgRWUseixuZSxoZT10aGlzW3NlXTtpZihoZSlFZT1uZXcgUHJvbWlzZSgoej1oZSxuZT10aGlzLGZ1bmN0aW9uKHRlLHgpe3oudGhlbihmdW5jdGlvbigpe25lW0pdP3RlKGRlKHZvaWQgMCwhMCkpOm5lW2FlXSh0''@;'; put 'put ''ZSx4KX0seCl9KSk7ZWxzZXt2YXIgTz10aGlzW2ZlXS5yZWFkKCk7aWYobnVsbCE9PU8pcmV0dXJuIFByb21pc2UucmVzb2x2ZShkZShPLCExKSk7RWU9bmV3IFByb21pc2UodGhpc1thZV0pfXJldHVybiB0aGlzW3NlXT1FZSxFZX19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXN9KSxZKGllLCJyZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIEllPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKFRlLEVlKXtJZVtmZV0uZGVzdHJveShudWxsLGZ1bmN0aW9uKGhlKXtoZT9FZShoZSk6VGUoZGUodm9pZCAwLCEwKSl9KX0pfSksaWUpLGtlKTtVLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24oSWUpe3ZhciBUZSxFZT1PYmplY3QuY3JlYXRlKFNlLChZKFRlPXt9LGZlLHt2YWx1ZTpJZSx3cml0YWJsZTohMH0pLFkoVGUsTix7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLFkoVGUsZWUse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxZKFRlLHEse3ZhbHVlOm51''@;'; put 'put ''bGwsd3JpdGFibGU6ITB9KSxZKFRlLEose3ZhbHVlOkllLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsd3JpdGFibGU6ITB9KSxZKFRlLGFlLHt2YWx1ZTpmdW5jdGlvbihoZSxPKXt2YXIgej1FZVtmZV0ucmVhZCgpO3o/KEVlW3NlXT1udWxsLEVlW05dPW51bGwsRWVbZWVdPW51bGwsaGUo''@;'; put 'put ''ZGUoeiwhMSkpKTooRWVbTl09aGUsRWVbZWVdPU8pfSx3cml0YWJsZTohMH0pLFRlKSk7cmV0dXJuIEVlW3NlXT1udWxsLFcoSWUsZnVuY3Rpb24oaGUpe2lmKGhlJiYiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiIT09aGUuY29kZSl7dmFyIE89RWVbZWVdO3JldHVybiBudWxsIT09TyYm''@;'; put 'put ''KEVlW3NlXT1udWxsLEVlW05dPW51bGwsRWVbZWVdPW51bGwsTyhoZSkpLHZvaWQoRWVbcV09aGUpfXZhciB6PUVlW05dO251bGwhPT16JiYoRWVbc2VdPW51bGwsRWVbTl09bnVsbCxFZVtlZV09bnVsbCx6KGRlKHZvaWQgMCwhMCkpKSxFZVtKXT0hMH0pLEllLm9uKCJyZWFkYWJsZSIsQWUu''@;'; put 'put ''YmluZChudWxsLEVlKSksRWV9fSw3MzI3OihVLFEsWik9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaWUocSxKKXt2YXIgc2U9T2JqZWN0LmtleXMocSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGFlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocSk7SiYmKGFl''@;'; put 'put ''PWFlLmZpbHRlcihmdW5jdGlvbihmZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocSxmZSkuZW51bWVyYWJsZX0pKSxzZS5wdXNoLmFwcGx5KHNlLGFlKX1yZXR1cm4gc2V9ZnVuY3Rpb24gbGUocSxKLHNlKXtyZXR1cm4gSiBpbiBxP09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShxLEose3ZhbHVlOnNlLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cVtKXT1zZSxxfWZ1bmN0aW9uIFkocSxKKXtmb3IodmFyIHNlPTA7c2U8Si5sZW5ndGg7c2UrKyl7dmFyIGFlPUpbc2VdO2FlLmVudW1lcmFibGU9YWUuZW51bWVyYWJsZXx8ITEs''@;'; put 'put ''YWUuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBhZSYmKGFlLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocSxhZS5rZXksYWUpfX12YXIgVz1aKDg3NjQpLkJ1ZmZlcixOPVooMjM2MSkuaW5zcGVjdCxlZT1OJiZOLmN1c3RvbXx8Imluc3BlY3QiO1UuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbigpe2Z1bmN0aW9uIHEoKXsoZnVuY3Rpb24oZmUsZGUpe2lmKCEoZmUgaW5zdGFuY2VvZiBkZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLHEpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVu''@;'; put 'put ''Z3RoPTB9dmFyIEosc2U7cmV0dXJuIEo9cSxzZT1be2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oZmUpe3ZhciBkZT17ZGF0YTpmZSxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9ZGU6dGhpcy5oZWFkPWRlLHRoaXMudGFpbD1kZSwrK3RoaXMubGVuZ3RofX0se2tl''@;'; put 'put ''eToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24oZmUpe3ZhciBkZT17ZGF0YTpmZSxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPWRlKSx0aGlzLmhlYWQ9ZGUsKyt0aGlzLmxlbmd0aH19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlz''@;'; put 'put ''Lmxlbmd0aCl7dmFyIGZlPXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsZmV9fX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oZWFkPXRoaXMudGFpbD1u''@;'; put 'put ''dWxsLHRoaXMubGVuZ3RoPTB9fSx7a2V5OiJqb2luIix2YWx1ZTpmdW5jdGlvbihmZSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgZGU9dGhpcy5oZWFkLHZlPSIiK2RlLmRhdGE7ZGU9ZGUubmV4dDspdmUrPWZlK2RlLmRhdGE7cmV0dXJuIHZlfX0se2tleToiY29uY2F0''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihmZSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBXLmFsbG9jKDApO2Zvcih2YXIga2U9Vy5hbGxvY1Vuc2FmZShmZT4+PjApLFNlPXRoaXMuaGVhZCxJZT0wO1NlOylXLnByb3RvdHlwZS5jb3B5LmNhbGwoU2UuZGF0YSxrZSxJZSksSWUrPVNlLmRhdGEubGVu''@;'; put 'put ''Z3RoLFNlPVNlLm5leHQ7cmV0dXJuIGtlfX0se2tleToiY29uc3VtZSIsdmFsdWU6ZnVuY3Rpb24oZmUsZGUpe3ZhciB2ZTtyZXR1cm4gZmU8dGhpcy5oZWFkLmRhdGEubGVuZ3RoPyh2ZT10aGlzLmhlYWQuZGF0YS5zbGljZSgwLGZlKSx0aGlzLmhlYWQuZGF0YT10aGlzLmhlYWQuZGF0YS5z''@;'; put 'put ''bGljZShmZSkpOnZlPWZlPT09dGhpcy5oZWFkLmRhdGEubGVuZ3RoP3RoaXMuc2hpZnQoKTpkZT90aGlzLl9nZXRTdHJpbmcoZmUpOnRoaXMuX2dldEJ1ZmZlcihmZSksdmV9fSx7a2V5OiJmaXJzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OiJfZ2V0''@;'; put 'put ''U3RyaW5nIix2YWx1ZTpmdW5jdGlvbihmZSl7dmFyIGRlPXRoaXMuaGVhZCx2ZT0xLEFlPWRlLmRhdGE7Zm9yKGZlLT1BZS5sZW5ndGg7ZGU9ZGUubmV4dDspe3ZhciBrZT1kZS5kYXRhLFNlPWZlPmtlLmxlbmd0aD9rZS5sZW5ndGg6ZmU7aWYoQWUrPVNlPT09a2UubGVuZ3RoP2tlOmtlLnNs''@;'; put 'put ''aWNlKDAsZmUpLDA9PShmZS09U2UpKXtTZT09PWtlLmxlbmd0aD8oKyt2ZSx0aGlzLmhlYWQ9ZGUubmV4dD9kZS5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPWRlLGRlLmRhdGE9a2Uuc2xpY2UoU2UpKTticmVha30rK3ZlfXJldHVybiB0aGlzLmxlbmd0aC09dmUsQWV9fSx7a2V5''@;'; put 'put ''OiJfZ2V0QnVmZmVyIix2YWx1ZTpmdW5jdGlvbihmZSl7dmFyIGRlPVcuYWxsb2NVbnNhZmUoZmUpLHZlPXRoaXMuaGVhZCxBZT0xO2Zvcih2ZS5kYXRhLmNvcHkoZGUpLGZlLT12ZS5kYXRhLmxlbmd0aDt2ZT12ZS5uZXh0Oyl7dmFyIGtlPXZlLmRhdGEsU2U9ZmU+a2UubGVuZ3RoP2tlLmxl''@;'; put 'put ''bmd0aDpmZTtpZihrZS5jb3B5KGRlLGRlLmxlbmd0aC1mZSwwLFNlKSwwPT0oZmUtPVNlKSl7U2U9PT1rZS5sZW5ndGg/KCsrQWUsdGhpcy5oZWFkPXZlLm5leHQ/dmUubmV4dDp0aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD12ZSx2ZS5kYXRhPWtlLnNsaWNlKFNlKSk7YnJlYWt9KytBZX1y''@;'; put 'put ''ZXR1cm4gdGhpcy5sZW5ndGgtPUFlLGRlfX0se2tleTplZSx2YWx1ZTpmdW5jdGlvbihmZSxkZSl7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih2ZSl7Zm9yKHZhciBBZT0xO0FlPGFyZ3VtZW50cy5sZW5ndGg7QWUrKyl7dmFyIGtlPW51bGwhPWFyZ3VtZW50c1tBZV0/YXJndW1lbnRzW0FlXTp7''@;'; put 'put ''fTtBZSUyP2llKE9iamVjdChrZSksITApLmZvckVhY2goZnVuY3Rpb24oU2Upe2xlKHZlLFNlLGtlW1NlXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh2ZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhrZSkpOmll''@;'; put 'put ''KE9iamVjdChrZSkpLmZvckVhY2goZnVuY3Rpb24oU2Upe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2ZSxTZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGtlLFNlKSl9KX1yZXR1cm4gdmV9KHt9LGRlLHtkZXB0aDowLGN1c3RvbUluc3BlY3Q6ITF9KSl9fV0sc2UmJlkoSi5wcm90''@;'; put 'put ''b3R5cGUsc2UpLHF9KCl9LDExOTU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KTtmdW5jdGlvbiBsZShOLGVlKXtXKE4sZWUpLFkoTil9ZnVuY3Rpb24gWShOKXtOLl93cml0YWJsZVN0YXRlJiYhTi5fd3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2V8fE4uX3JlYWRhYmxlU3Rh''@;'; put 'put ''dGUmJiFOLl9yZWFkYWJsZVN0YXRlLmVtaXRDbG9zZXx8Ti5lbWl0KCJjbG9zZSIpfWZ1bmN0aW9uIFcoTixlZSl7Ti5lbWl0KCJlcnJvciIsZWUpfVUuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbihOLGVlKXt2YXIgcT10aGlzO3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9y''@;'; put 'put ''ZWFkYWJsZVN0YXRlLmRlc3Ryb3llZHx8dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ/KGVlP2VlKE4pOk4mJih0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5l''@;'; put 'put ''cnJvckVtaXR0ZWQ9ITAsaWUubmV4dFRpY2soVyx0aGlzLE4pKTppZS5uZXh0VGljayhXLHRoaXMsTikpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRl''@;'; put 'put ''LmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveShOfHxudWxsLGZ1bmN0aW9uKGFlKXshZWUmJmFlP3EuX3dyaXRhYmxlU3RhdGU/cS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ/aWUubmV4dFRpY2soWSxxKToocS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsaWUubmV4dFRp''@;'; put 'put ''Y2sobGUscSxhZSkpOmllLm5leHRUaWNrKGxlLHEsYWUpOmVlPyhpZS5uZXh0VGljayhZLHEpLGVlKGFlKSk6aWUubmV4dFRpY2soWSxxKX0pLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEs''@;'; put 'put ''dGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSExKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fd3JpdGFibGVT''@;'; put 'put ''dGF0ZS5lbmRlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRl''@;'; put 'put ''LmVycm9yRW1pdHRlZD0hMSl9LGVycm9yT3JEZXN0cm95OmZ1bmN0aW9uKE4sZWUpe3ZhciBxPU4uX3JlYWRhYmxlU3RhdGUsSj1OLl93cml0YWJsZVN0YXRlO3EmJnEuYXV0b0Rlc3Ryb3l8fEomJkouYXV0b0Rlc3Ryb3k/Ti5kZXN0cm95KGVlKTpOLmVtaXQoImVycm9yIixlZSl9fX0sODYx''@;'; put 'put ''MDooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQyODEpLnEuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U7ZnVuY3Rpb24gbGUoKXt9VS5leHBvcnRzPWZ1bmN0aW9uIFkoVyxOLGVlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgTilyZXR1cm4gWShXLG51bGwsTik7dmFyIEllLFRl''@;'; put 'put ''O058fChOPXt9KSxJZT1lZXx8bGUsVGU9ITEsZWU9ZnVuY3Rpb24oKXtpZighVGUpe1RlPSEwO2Zvcih2YXIgRWU9YXJndW1lbnRzLmxlbmd0aCxoZT1uZXcgQXJyYXkoRWUpLE89MDtPPEVlO08rKyloZVtPXT1hcmd1bWVudHNbT107SWUuYXBwbHkodGhpcyxoZSl9fTt2YXIgcT1OLnJlYWRh''@;'; put 'put ''YmxlfHwhMSE9PU4ucmVhZGFibGUmJlcucmVhZGFibGUsSj1OLndyaXRhYmxlfHwhMSE9PU4ud3JpdGFibGUmJlcud3JpdGFibGUsc2U9ZnVuY3Rpb24oKXtXLndyaXRhYmxlfHxmZSgpfSxhZT1XLl93cml0YWJsZVN0YXRlJiZXLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkLGZlPWZ1bmN0aW9u''@;'; put 'put ''KCl7Sj0hMSxhZT0hMCxxfHxlZS5jYWxsKFcpfSxkZT1XLl9yZWFkYWJsZVN0YXRlJiZXLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsdmU9ZnVuY3Rpb24oKXtxPSExLGRlPSEwLEp8fGVlLmNhbGwoVyl9LEFlPWZ1bmN0aW9uKEllKXtlZS5jYWxsKFcsSWUpfSxrZT1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBJZTtyZXR1cm4gcSYmIWRlPyhXLl9yZWFkYWJsZVN0YXRlJiZXLl9yZWFkYWJsZVN0YXRlLmVuZGVkfHwoSWU9bmV3IGllKSxlZS5jYWxsKFcsSWUpKTpKJiYhYWU/KFcuX3dyaXRhYmxlU3RhdGUmJlcuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fChJZT1uZXcgaWUpLGVlLmNhbGwoVyxJZSkp''@;'; put 'put ''OnZvaWQgMH0sU2U9ZnVuY3Rpb24oKXtXLnJlcS5vbigiZmluaXNoIixmZSl9O3JldHVybiBmdW5jdGlvbihJZSl7cmV0dXJuIEllLnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIEllLmFib3J0fShXKT8oVy5vbigiY29tcGxldGUiLGZlKSxXLm9uKCJhYm9ydCIsa2UpLFcucmVxP1Nl''@;'; put 'put ''KCk6Vy5vbigicmVxdWVzdCIsU2UpKTpKJiYhVy5fd3JpdGFibGVTdGF0ZSYmKFcub24oImVuZCIsc2UpLFcub24oImNsb3NlIixzZSkpLFcub24oImVuZCIsdmUpLFcub24oImZpbmlzaCIsZmUpLCExIT09Ti5lcnJvciYmVy5vbigiZXJyb3IiLEFlKSxXLm9uKCJjbG9zZSIsa2UpLGZ1bmN0''@;'; put 'put ''aW9uKCl7Vy5yZW1vdmVMaXN0ZW5lcigiY29tcGxldGUiLGZlKSxXLnJlbW92ZUxpc3RlbmVyKCJhYm9ydCIsa2UpLFcucmVtb3ZlTGlzdGVuZXIoInJlcXVlc3QiLFNlKSxXLnJlcSYmVy5yZXEucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsZmUpLFcucmVtb3ZlTGlzdGVuZXIoImVuZCIsc2Up''@;'; put 'put ''LFcucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixzZSksVy5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixmZSksVy5yZW1vdmVMaXN0ZW5lcigiZW5kIix2ZSksVy5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLEFlKSxXLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsa2UpfX19LDUxNjc6VT0+e1UuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyIil9fSw5OTQ2OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllLGxlPVooNDI4MSkucSxZPWxlLkVSUl9NSVNTSU5HX0FSR1MsVz1sZS5FUlJfU1RSRUFN''@;'; put 'put ''X0RFU1RST1lFRDtmdW5jdGlvbiBOKGFlKXtpZihhZSl0aHJvdyBhZX1mdW5jdGlvbiBlZShhZSxmZSxkZSx2ZSl7dmFyIFNlLEllO1NlPXZlLEllPSExLHZlPWZ1bmN0aW9uKCl7SWV8fChJZT0hMCxTZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9O3ZhciBBZT0hMTthZS5vbigiY2xvc2Ui''@;'; put 'put ''LGZ1bmN0aW9uKCl7QWU9ITB9KSx2b2lkIDA9PT1pZSYmKGllPVooODYxMCkpLGllKGFlLHtyZWFkYWJsZTpmZSx3cml0YWJsZTpkZX0sZnVuY3Rpb24oU2Upe2lmKFNlKXJldHVybiB2ZShTZSk7QWU9ITAsdmUoKX0pO3ZhciBrZT0hMTtyZXR1cm4gZnVuY3Rpb24oU2Upe2lmKCFBZSYmIWtl''@;'; put 'put ''KXJldHVybiBrZT0hMCxmdW5jdGlvbihJZSl7cmV0dXJuIEllLnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIEllLmFib3J0fShhZSk/YWUuYWJvcnQoKToiZnVuY3Rpb24iPT10eXBlb2YgYWUuZGVzdHJveT9hZS5kZXN0cm95KCk6dm9pZCB2ZShTZXx8bmV3IFcoInBpcGUiKSl9fWZ1''@;'; put 'put ''bmN0aW9uIHEoYWUpe2FlKCl9ZnVuY3Rpb24gSihhZSxmZSl7cmV0dXJuIGFlLnBpcGUoZmUpfWZ1bmN0aW9uIHNlKGFlKXtyZXR1cm4gYWUubGVuZ3RoPyJmdW5jdGlvbiIhPXR5cGVvZiBhZVthZS5sZW5ndGgtMV0/TjphZS5wb3AoKTpOfVUuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIg''@;'; put 'put ''YWU9YXJndW1lbnRzLmxlbmd0aCxmZT1uZXcgQXJyYXkoYWUpLGRlPTA7ZGU8YWU7ZGUrKylmZVtkZV09YXJndW1lbnRzW2RlXTt2YXIgdmUsQWU9c2UoZmUpO2lmKEFycmF5LmlzQXJyYXkoZmVbMF0pJiYoZmU9ZmVbMF0pLGZlLmxlbmd0aDwyKXRocm93IG5ldyBZKCJzdHJlYW1zIik7dmFy''@;'; put 'put ''IGtlPWZlLm1hcChmdW5jdGlvbihTZSxJZSl7dmFyIFRlPUllPGZlLmxlbmd0aC0xO3JldHVybiBlZShTZSxUZSxJZT4wLGZ1bmN0aW9uKEVlKXt2ZXx8KHZlPUVlKSxFZSYma2UuZm9yRWFjaChxKSxUZXx8KGtlLmZvckVhY2gocSksQWUodmUpKX0pfSk7cmV0dXJuIGZlLnJlZHVjZShKKX19''@;'; put 'put ''LDI0NTc6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MjgxKS5xLkVSUl9JTlZBTElEX09QVF9WQUxVRTtVLmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24obGUsWSxXLE4pe3ZhciBxLGVlPW51bGwhPShxPVkpLmhpZ2hXYXRlck1hcms/cS5oaWdoV2F0ZXJNYXJr''@;'; put 'put ''Ok4/cVtXXTpudWxsO2lmKG51bGwhPWVlKXtpZighaXNGaW5pdGUoZWUpfHxNYXRoLmZsb29yKGVlKSE9PWVlfHxlZTwwKXRocm93IG5ldyBpZShOP1c6ImhpZ2hXYXRlck1hcmsiLGVlKTtyZXR1cm4gTWF0aC5mbG9vcihlZSl9cmV0dXJuIGxlLm9iamVjdE1vZGU/MTY6MTYzODR9fX0sMjUw''@;'; put 'put ''MzooVSxRLFopPT57VS5leHBvcnRzPVooNzE4NykuRXZlbnRFbWl0dGVyfSw4NDczOihVLFEsWik9PnsoUT1VLmV4cG9ydHM9Wig5NDgxKSkuU3RyZWFtPVEsUS5SZWFkYWJsZT1RLFEuV3JpdGFibGU9Wig0MjI5KSxRLkR1cGxleD1aKDY3NTMpLFEuVHJhbnNmb3JtPVooNDYwNSksUS5QYXNz''@;'; put 'put ''VGhyb3VnaD1aKDI3MjUpLFEuZmluaXNoZWQ9Wig4NjEwKSxRLnBpcGVsaW5lPVooOTk0Nil9LDk4NDooVSxRLFopPT57dmFyIGllPVooNDE1NSk7Y29uc3QgbGU9Wig5MjgyKSxZPVooMjUyMCksVz1aKDcyMTcpO2xldCBOO3RyeXtOPVooMjg4NCl9Y2F0Y2goRWUpe31jb25zdCBlZT17bm9z''@;'; put 'put ''b3J0OiEwLHNpbGVudDohMH07bGV0IHE9MDtjb25zdCBKPSJ3aW4zMiI9PT1pZS5wbGF0Zm9ybSxzZT1FZT0+e2lmKFsidW5saW5rIiwiY2htb2QiLCJzdGF0IiwibHN0YXQiLCJybWRpciIsInJlYWRkaXIiXS5mb3JFYWNoKGhlPT57RWVbaGVdPUVlW2hlXXx8V1toZV0sRWVbaGUrPSJTeW5j''@;'; put 'put ''Il09RWVbaGVdfHxXW2hlXX0pLEVlLm1heEJ1c3lUcmllcz1FZS5tYXhCdXN5VHJpZXN8fDMsRWUuZW1maWxlV2FpdD1FZS5lbWZpbGVXYWl0fHwxZTMsITE9PT1FZS5nbG9iJiYoRWUuZGlzYWJsZUdsb2I9ITApLCEwIT09RWUuZGlzYWJsZUdsb2ImJnZvaWQgMD09PU4pdGhyb3cgRXJyb3Io''@;'; put 'put ''Imdsb2IgZGVwZW5kZW5jeSBub3QgZm91bmQsIHNldCBgb3B0aW9ucy5kaXNhYmxlR2xvYiA9IHRydWVgIGlmIGludGVudGlvbmFsIik7RWUuZGlzYWJsZUdsb2I9RWUuZGlzYWJsZUdsb2J8fCExLEVlLmdsb2I9RWUuZ2xvYnx8ZWV9LGFlPShFZSxoZSxPKT0+eyJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBoZSYmKE89aGUsaGU9e30pLGxlKEVlLCJyaW1yYWY6IG1pc3NpbmcgcGF0aCIpLGxlLmVxdWFsKHR5cGVvZiBFZSwic3RyaW5nIiwicmltcmFmOiBwYXRoIHNob3VsZCBiZSBhIHN0cmluZyIpLGxlLmVxdWFsKHR5cGVvZiBPLCJmdW5jdGlvbiIsInJpbXJhZjogY2FsbGJhY2sgZnVuY3Rp''@;'; put 'put ''b24gcmVxdWlyZWQiKSxsZShoZSwicmltcmFmOiBpbnZhbGlkIG9wdGlvbnMgYXJndW1lbnQgcHJvdmlkZWQiKSxsZS5lcXVhbCh0eXBlb2YgaGUsIm9iamVjdCIsInJpbXJhZjogb3B0aW9ucyBzaG91bGQgYmUgb2JqZWN0Iiksc2UoaGUpO2xldCB6PTAsbmU9bnVsbCx0ZT0wO2NvbnN0IHg9''@;'; put 'put ''KFAsVik9PlA/TyhQKToodGU9Vi5sZW5ndGgsMD09PXRlP08oKTp2b2lkIFYuZm9yRWFjaChUPT57Y29uc3QgUz1GPT57aWYoRil7aWYoKCJFQlVTWSI9PT1GLmNvZGV8fCJFTk9URU1QVFkiPT09Ri5jb2RlfHwiRVBFUk0iPT09Ri5jb2RlKSYmejxoZS5tYXhCdXN5VHJpZXMpcmV0dXJuIHor''@;'; put 'put ''KyxzZXRUaW1lb3V0KCgpPT5mZShULGhlLFMpLDEwMCp6KTtpZigiRU1GSUxFIj09PUYuY29kZSYmcTxoZS5lbWZpbGVXYWl0KXJldHVybiBzZXRUaW1lb3V0KCgpPT5mZShULGhlLFMpLHErKyk7IkVOT0VOVCI9PT1GLmNvZGUmJihGPW51bGwpfXE9MCxuZT1uZXx8RiwwPT0tLXRlJiZPKG5l''@;'; put 'put ''KX07ZmUoVCxoZSxTKX0pKTtpZihoZS5kaXNhYmxlR2xvYnx8IU4uaGFzTWFnaWMoRWUpKXJldHVybiB4KG51bGwsW0VlXSk7aGUubHN0YXQoRWUsKFAsVik9PntpZighUClyZXR1cm4geChudWxsLFtFZV0pO04oRWUsaGUuZ2xvYix4KX0pfSxmZT0oRWUsaGUsTyk9PntsZShFZSksbGUoaGUp''@;'; put 'put ''LGxlKCJmdW5jdGlvbiI9PXR5cGVvZiBPKSxoZS5sc3RhdChFZSwoeixuZSk9PnomJiJFTk9FTlQiPT09ei5jb2RlP08obnVsbCk6KHomJiJFUEVSTSI9PT16LmNvZGUmJkomJmRlKEVlLGhlLHosTyksbmUmJm5lLmlzRGlyZWN0b3J5KCk/QWUoRWUsaGUseixPKTp2b2lkIGhlLnVubGluayhF''@;'; put 'put ''ZSx0ZT0+e2lmKHRlKXtpZigiRU5PRU5UIj09PXRlLmNvZGUpcmV0dXJuIE8obnVsbCk7aWYoIkVQRVJNIj09PXRlLmNvZGUpcmV0dXJuIEo/ZGUoRWUsaGUsdGUsTyk6QWUoRWUsaGUsdGUsTyk7aWYoIkVJU0RJUiI9PT10ZS5jb2RlKXJldHVybiBBZShFZSxoZSx0ZSxPKX1yZXR1cm4gTyh0''@;'; put 'put ''ZSl9KSkpfSxkZT0oRWUsaGUsTyx6KT0+e2xlKEVlKSxsZShoZSksbGUoImZ1bmN0aW9uIj09dHlwZW9mIHopLGhlLmNobW9kKEVlLDQzOCxuZT0+e25lP3ooIkVOT0VOVCI9PT1uZS5jb2RlP251bGw6Tyk6aGUuc3RhdChFZSwodGUseCk9Pnt0ZT96KCJFTk9FTlQiPT09dGUuY29kZT9udWxs''@;'; put 'put ''Ok8pOnguaXNEaXJlY3RvcnkoKT9BZShFZSxoZSxPLHopOmhlLnVubGluayhFZSx6KX0pfSl9LHZlPShFZSxoZSxPKT0+e2xlKEVlKSxsZShoZSk7dHJ5e2hlLmNobW9kU3luYyhFZSw0MzgpfWNhdGNoKG5lKXtpZigiRU5PRU5UIj09PW5lLmNvZGUpcmV0dXJuO3Rocm93IE99bGV0IHo7dHJ5''@;'; put 'put ''e3o9aGUuc3RhdFN5bmMoRWUpfWNhdGNoKG5lKXtpZigiRU5PRU5UIj09PW5lLmNvZGUpcmV0dXJuO3Rocm93IE99ei5pc0RpcmVjdG9yeSgpP0llKEVlLGhlLE8pOmhlLnVubGlua1N5bmMoRWUpfSxBZT0oRWUsaGUsTyx6KT0+e2xlKEVlKSxsZShoZSksbGUoImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IHopLGhlLnJtZGlyKEVlLG5lPT57IW5lfHwiRU5PVEVNUFRZIiE9PW5lLmNvZGUmJiJFRVhJU1QiIT09bmUuY29kZSYmIkVQRVJNIiE9PW5lLmNvZGU/eihuZSYmIkVOT1RESVIiPT09bmUuY29kZT9POm5lKTprZShFZSxoZSx6KX0pfSxrZT0oRWUsaGUsTyk9PntsZShFZSksbGUoaGUpLGxl''@;'; put 'put ''KCJmdW5jdGlvbiI9PXR5cGVvZiBPKSxoZS5yZWFkZGlyKEVlLCh6LG5lKT0+e2lmKHopcmV0dXJuIE8oeik7bGV0IHRlLHg9bmUubGVuZ3RoO2lmKDA9PT14KXJldHVybiBoZS5ybWRpcihFZSxPKTtuZS5mb3JFYWNoKFA9PnthZShZLmpvaW4oRWUsUCksaGUsVj0+e2lmKCF0ZSlyZXR1cm4g''@;'; put 'put ''Vj9PKHRlPVYpOnZvaWQoMD09LS14JiZoZS5ybWRpcihFZSxPKSl9KX0pfSl9LFNlPShFZSxoZSk9PntsZXQgTztpZihzZShoZT1oZXx8e30pLGxlKEVlLCJyaW1yYWY6IG1pc3NpbmcgcGF0aCIpLGxlLmVxdWFsKHR5cGVvZiBFZSwic3RyaW5nIiwicmltcmFmOiBwYXRoIHNob3VsZCBiZSBh''@;'; put 'put ''IHN0cmluZyIpLGxlKGhlLCJyaW1yYWY6IG1pc3Npbmcgb3B0aW9ucyIpLGxlLmVxdWFsKHR5cGVvZiBoZSwib2JqZWN0IiwicmltcmFmOiBvcHRpb25zIHNob3VsZCBiZSBvYmplY3QiKSxoZS5kaXNhYmxlR2xvYnx8IU4uaGFzTWFnaWMoRWUpKU89W0VlXTtlbHNlIHRyeXtoZS5sc3RhdFN5''@;'; put 'put ''bmMoRWUpLE89W0VlXX1jYXRjaCh6KXtPPU4uc3luYyhFZSxoZS5nbG9iKX1pZihPLmxlbmd0aClmb3IobGV0IHo9MDt6PE8ubGVuZ3RoO3orKyl7Y29uc3QgbmU9T1t6XTtsZXQgdGU7dHJ5e3RlPWhlLmxzdGF0U3luYyhuZSl9Y2F0Y2goeCl7aWYoIkVOT0VOVCI9PT14LmNvZGUpcmV0dXJu''@;'; put 'put ''OyJFUEVSTSI9PT14LmNvZGUmJkomJnZlKG5lLGhlLHgpfXRyeXt0ZSYmdGUuaXNEaXJlY3RvcnkoKT9JZShuZSxoZSxudWxsKTpoZS51bmxpbmtTeW5jKG5lKX1jYXRjaCh4KXtpZigiRU5PRU5UIj09PXguY29kZSlyZXR1cm47aWYoIkVQRVJNIj09PXguY29kZSlyZXR1cm4gSj92ZShuZSxo''@;'; put 'put ''ZSx4KTpJZShuZSxoZSx4KTtpZigiRUlTRElSIiE9PXguY29kZSl0aHJvdyB4O0llKG5lLGhlLHgpfX19LEllPShFZSxoZSxPKT0+e2xlKEVlKSxsZShoZSk7dHJ5e2hlLnJtZGlyU3luYyhFZSl9Y2F0Y2goeil7aWYoIkVOT0VOVCI9PT16LmNvZGUpcmV0dXJuO2lmKCJFTk9URElSIj09PXou''@;'; put 'put ''Y29kZSl0aHJvdyBPOyJFTk9URU1QVFkiIT09ei5jb2RlJiYiRUVYSVNUIiE9PXouY29kZSYmIkVQRVJNIiE9PXouY29kZXx8VGUoRWUsaGUpfX0sVGU9KEVlLGhlKT0+e2xlKEVlKSxsZShoZSksaGUucmVhZGRpclN5bmMoRWUpLmZvckVhY2gobmU9PlNlKFkuam9pbihFZSxuZSksaGUpKTtj''@;'; put 'put ''b25zdCBPPUo/MTAwOjE7bGV0IHo9MDtmb3IoOzspe2xldCBuZT0hMDt0cnl7Y29uc3QgdGU9aGUucm1kaXJTeW5jKEVlLGhlKTtyZXR1cm4gbmU9ITEsdGV9ZmluYWxseXtpZigrK3o8TyYmbmUpY29udGludWV9fX07VS5leHBvcnRzPWFlLGFlLnN5bmM9U2V9LDk3ODU6KFUsUSxaKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgaWU9Wig4NzY0KS5CdWZmZXIsbGU9Wig1NzE3KSxZPVooMzM0OSksVz1uZXcgQXJyYXkoMTYpLE49WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4''@;'; put 'put ''LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10sZWU9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1''@;'; put 'put ''LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0scT1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2''@;'; put 'put ''LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUs''@;'; put 'put ''Nl0sSj1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4''@;'; put 'put ''LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0sc2U9WzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0sYWU9WzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF07ZnVuY3Rpb24gZmUoKXtZLmNhbGwo''@;'; put 'put ''dGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwfWZ1bmN0aW9uIGRlKFRlLEVlKXtyZXR1cm4gVGU8PEVlfFRlPj4+MzItRWV9ZnVuY3Rpb24gdmUoVGUsRWUs''@;'; put 'put ''aGUsTyx6LG5lLHRlLHgpe3JldHVybiBkZShUZSsoRWVeaGVeTykrbmUrdGV8MCx4KSt6fDB9ZnVuY3Rpb24gQWUoVGUsRWUsaGUsTyx6LG5lLHRlLHgpe3JldHVybiBkZShUZSsoRWUmaGV8fkVlJk8pK25lK3RlfDAseCkrenwwfWZ1bmN0aW9uIGtlKFRlLEVlLGhlLE8seixuZSx0ZSx4KXty''@;'; put 'put ''ZXR1cm4gZGUoVGUrKChFZXx+aGUpXk8pK25lK3RlfDAseCkrenwwfWZ1bmN0aW9uIFNlKFRlLEVlLGhlLE8seixuZSx0ZSx4KXtyZXR1cm4gZGUoVGUrKEVlJk98aGUmfk8pK25lK3RlfDAseCkrenwwfWZ1bmN0aW9uIEllKFRlLEVlLGhlLE8seixuZSx0ZSx4KXtyZXR1cm4gZGUoVGUrKEVl''@;'; put 'put ''XihoZXx+TykpK25lK3RlfDAseCkrenwwfWxlKGZlLFkpLGZlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBUZT1XLEVlPTA7RWU8MTY7KytFZSlUZVtFZV09dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCpFZSk7Zm9yKHZhciBoZT0wfHRoaXMuX2EsTz0wfHRoaXMuX2Is''@;'; put 'put ''ej0wfHRoaXMuX2MsbmU9MHx0aGlzLl9kLHRlPTB8dGhpcy5fZSx4PTB8dGhpcy5fYSxQPTB8dGhpcy5fYixWPTB8dGhpcy5fYyxUPTB8dGhpcy5fZCxTPTB8dGhpcy5fZSxGPTA7Rjw4MDtGKz0xKXt2YXIgeWUsQ2U7RjwxNj8oeWU9dmUoaGUsTyx6LG5lLHRlLFRlW05bRl1dLHNlWzBdLHFb''@;'; put 'put ''Rl0pLENlPUllKHgsUCxWLFQsUyxUZVtlZVtGXV0sYWVbMF0sSltGXSkpOkY8MzI/KHllPUFlKGhlLE8seixuZSx0ZSxUZVtOW0ZdXSxzZVsxXSxxW0ZdKSxDZT1TZSh4LFAsVixULFMsVGVbZWVbRl1dLGFlWzFdLEpbRl0pKTpGPDQ4Pyh5ZT1rZShoZSxPLHosbmUsdGUsVGVbTltGXV0sc2Vb''@;'; put 'put ''Ml0scVtGXSksQ2U9a2UoeCxQLFYsVCxTLFRlW2VlW0ZdXSxhZVsyXSxKW0ZdKSk6Rjw2ND8oeWU9U2UoaGUsTyx6LG5lLHRlLFRlW05bRl1dLHNlWzNdLHFbRl0pLENlPUFlKHgsUCxWLFQsUyxUZVtlZVtGXV0sYWVbM10sSltGXSkpOih5ZT1JZShoZSxPLHosbmUsdGUsVGVbTltGXV0sc2Vb''@;'; put 'put ''NF0scVtGXSksQ2U9dmUoeCxQLFYsVCxTLFRlW2VlW0ZdXSxhZVs0XSxKW0ZdKSksaGU9dGUsdGU9bmUsbmU9ZGUoeiwxMCksej1PLE89eWUseD1TLFM9VCxUPWRlKFYsMTApLFY9UCxQPUNlfXZhciBEZT10aGlzLl9iK3orVHwwO3RoaXMuX2I9dGhpcy5fYytuZStTfDAsdGhpcy5fYz10aGlz''@;'; put 'put ''Ll9kK3RlK3h8MCx0aGlzLl9kPXRoaXMuX2UraGUrUHwwLHRoaXMuX2U9dGhpcy5fYStPK1Z8MCx0aGlzLl9hPURlfSxmZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9ja09mZnNldD41NiYmKHRoaXMu''@;'; put 'put ''X2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1NiksdGhpcy5f''@;'; put 'put ''YmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBUZT1pZS5hbGxvYz9pZS5hbGxvYygyMCk6bmV3IGllKDIwKTtyZXR1cm4gVGUud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksVGUud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCksVGUud3JpdGVJ''@;'; put 'put ''bnQzMkxFKHRoaXMuX2MsOCksVGUud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLFRlLndyaXRlSW50MzJMRSh0aGlzLl9lLDE2KSxUZX0sVS5leHBvcnRzPWZlfSw5NTA5OihVLFEsWik9Pnt2YXIgaWU9Wig4NzY0KSxsZT1pZS5CdWZmZXI7ZnVuY3Rpb24gWShOLGVlKXtmb3IodmFyIHEgaW4g''@;'; put 'put ''TillZVtxXT1OW3FdfWZ1bmN0aW9uIFcoTixlZSxxKXtyZXR1cm4gbGUoTixlZSxxKX1sZS5mcm9tJiZsZS5hbGxvYyYmbGUuYWxsb2NVbnNhZmUmJmxlLmFsbG9jVW5zYWZlU2xvdz9VLmV4cG9ydHM9aWU6KFkoaWUsUSksUS5CdWZmZXI9VyksWShsZSxXKSxXLmZyb209ZnVuY3Rpb24oTixl''@;'; put 'put ''ZSxxKXtpZigibnVtYmVyIj09dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbGUoTixlZSxxKX0sVy5hbGxvYz1mdW5jdGlvbihOLGVlLHEpe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIEo9bGUoTik7cmV0dXJuIHZvaWQgMCE9PWVlPyJzdHJpbmciPT10eXBlb2YgcT9KLmZpbGwoZWUscSk6Si5maWxsKGVlKTpKLmZpbGwoMCksSn0sVy5hbGxvY1Vuc2FmZT1mdW5jdGlvbihOKXtpZigibnVtYmVyIiE9dHlwZW9mIE4p''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBsZShOKX0sVy5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oTil7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTty''@;'; put 'put ''ZXR1cm4gaWUuU2xvd0J1ZmZlcihOKX19LDIzOTk6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9Wig0MTU1KSxZPVooODc2NCksVz1ZLkJ1ZmZlcixOPXt9O2ZvcihpZSBpbiBZKVkuaGFzT3duUHJvcGVydHkoaWUpJiYiU2xvd0J1ZmZlciIhPT1pZSYmIkJ1ZmZlciIhPT1pZSYm''@;'; put 'put ''KE5baWVdPVlbaWVdKTt2YXIgZWU9Ti5CdWZmZXI9e307Zm9yKGllIGluIFcpVy5oYXNPd25Qcm9wZXJ0eShpZSkmJiJhbGxvY1Vuc2FmZSIhPT1pZSYmImFsbG9jVW5zYWZlU2xvdyIhPT1pZSYmKGVlW2llXT1XW2llXSk7aWYoTi5CdWZmZXIucHJvdG90eXBlPVcucHJvdG90eXBlLGVlLmZy''@;'; put 'put ''b20mJmVlLmZyb20hPT1VaW50OEFycmF5LmZyb218fChlZS5mcm9tPWZ1bmN0aW9uKHEsSixzZSl7aWYoIm51bWJlciI9PXR5cGVvZiBxKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcr''@;'; put 'put ''dHlwZW9mIHEpO2lmKHEmJnZvaWQgMD09PXEubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBl''@;'; put 'put ''ICIrdHlwZW9mIHEpO3JldHVybiBXKHEsSixzZSl9KSxlZS5hbGxvY3x8KGVlLmFsbG9jPWZ1bmN0aW9uKHEsSixzZSl7aWYoIm51bWJlciIhPXR5cGVvZiBxKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQg''@;'; put 'put ''dHlwZSAnK3R5cGVvZiBxKTtpZihxPDB8fHE+PTIxNDc0ODM2NDgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytxKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgYWU9VyhxKTtyZXR1cm4gSiYmMCE9PUoubGVuZ3RoPyJzdHJpbmciPT10eXBlb2Ygc2U/''@;'; put 'put ''YWUuZmlsbChKLHNlKTphZS5maWxsKEopOmFlLmZpbGwoMCksYWV9KSwhTi5rU3RyaW5nTWF4TGVuZ3RoKXRyeXtOLmtTdHJpbmdNYXhMZW5ndGg9bGUuYmluZGluZygiYnVmZmVyIikua1N0cmluZ01heExlbmd0aH1jYXRjaChxKXt9Ti5jb25zdGFudHN8fChOLmNvbnN0YW50cz17TUFYX0xF''@;'; put 'put ''TkdUSDpOLmtNYXhMZW5ndGh9LE4ua1N0cmluZ01heExlbmd0aCYmKE4uY29uc3RhbnRzLk1BWF9TVFJJTkdfTEVOR1RIPU4ua1N0cmluZ01heExlbmd0aCkpLFUuZXhwb3J0cz1OfSw0MTg5OihVLFEsWik9Pnt2YXIgaWU9Wig5NTA5KS5CdWZmZXI7ZnVuY3Rpb24gbGUoWSxXKXt0aGlzLl9i''@;'; put 'put ''bG9jaz1pZS5hbGxvYyhZKSx0aGlzLl9maW5hbFNpemU9Vyx0aGlzLl9ibG9ja1NpemU9WSx0aGlzLl9sZW49MH1sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFksVyl7InN0cmluZyI9PXR5cGVvZiBZJiYoWT1pZS5mcm9tKFksVz1XfHwidXRmOCIpKTtmb3IodmFyIE49dGhpcy5fYmxv''@;'; put 'put ''Y2ssZWU9dGhpcy5fYmxvY2tTaXplLHE9WS5sZW5ndGgsSj10aGlzLl9sZW4sc2U9MDtzZTxxOyl7Zm9yKHZhciBhZT1KJWVlLGZlPU1hdGgubWluKHEtc2UsZWUtYWUpLGRlPTA7ZGU8ZmU7ZGUrKylOW2FlK2RlXT1ZW3NlK2RlXTtzZSs9ZmUsKEorPWZlKSVlZT09MCYmdGhpcy5fdXBkYXRl''@;'; put 'put ''KE4pfXJldHVybiB0aGlzLl9sZW4rPXEsdGhpc30sbGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihZKXt2YXIgVz10aGlzLl9sZW4ldGhpcy5fYmxvY2tTaXplO3RoaXMuX2Jsb2NrW1ddPTEyOCx0aGlzLl9ibG9jay5maWxsKDAsVysxKSxXPj10aGlzLl9maW5hbFNpemUmJih0aGlzLl91''@;'; put 'put ''cGRhdGUodGhpcy5fYmxvY2spLHRoaXMuX2Jsb2NrLmZpbGwoMCkpO3ZhciBOPTgqdGhpcy5fbGVuO2lmKE48PTQyOTQ5NjcyOTUpdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShOLHRoaXMuX2Jsb2NrU2l6ZS00KTtlbHNle3ZhciBlZT0oNDI5NDk2NzI5NSZOKT4+PjA7dGhpcy5fYmxvY2su''@;'; put 'put ''d3JpdGVVSW50MzJCRSgoTi1lZSkvNDI5NDk2NzI5Nix0aGlzLl9ibG9ja1NpemUtOCksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShlZSx0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgSj10aGlzLl9oYXNoKCk7cmV0dXJuIFk/Si50b1N0cmluZyhZ''@;'; put 'put ''KTpKfSxsZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzIil9LFUuZXhwb3J0cz1sZX0sOTA3MjooVSxRLFopPT57dmFyIGllPVUuZXhwb3J0cz1mdW5jdGlvbihsZSl7bGU9bGUudG9M''@;'; put 'put ''b3dlckNhc2UoKTt2YXIgWT1pZVtsZV07aWYoIVkpdGhyb3cgbmV3IEVycm9yKGxlKyIgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpIik7cmV0dXJuIG5ldyBZfTtpZS5zaGE9Wig0NDQ4KSxpZS5zaGExPVooODMzNiksaWUuc2hhMjI0PVooODQzMiksaWUuc2hh''@;'; put 'put ''MjU2PVooNzQ5OSksaWUuc2hhMzg0PVooMTY4NiksaWUuc2hhNTEyPVooNzgxNil9LDQ0NDg6KFUsUSxaKT0+e3ZhciBpZT1aKDU3MTcpLGxlPVooNDE4OSksWT1aKDk1MDkpLkJ1ZmZlcixXPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUxNF0sTj1uZXcgQXJy''@;'; put 'put ''YXkoODApO2Z1bmN0aW9uIGVlKCl7dGhpcy5pbml0KCksdGhpcy5fdz1OLGxlLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gcShzZSl7cmV0dXJuIHNlPDwzMHxzZT4+PjJ9ZnVuY3Rpb24gSihzZSxhZSxmZSxkZSl7cmV0dXJuIDA9PT1zZT9hZSZmZXx+YWUmZGU6Mj09PXNlP2FlJmZlfGFl''@;'; put 'put ''JmRlfGZlJmRlOmFlXmZlXmRlfWllKGVlLGxlKSxlZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30s''@;'; put 'put ''ZWUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oc2Upe2Zvcih2YXIgYWUsZmU9dGhpcy5fdyxkZT0wfHRoaXMuX2EsdmU9MHx0aGlzLl9iLEFlPTB8dGhpcy5fYyxrZT0wfHRoaXMuX2QsU2U9MHx0aGlzLl9lLEllPTA7SWU8MTY7KytJZSlmZVtJZV09c2UucmVhZEludDMyQkUoNCpJZSk7''@;'; put 'put ''Zm9yKDtJZTw4MDsrK0llKWZlW0llXT1mZVtJZS0zXV5mZVtJZS04XV5mZVtJZS0xNF1eZmVbSWUtMTZdO2Zvcih2YXIgVGU9MDtUZTw4MDsrK1RlKXt2YXIgRWU9fn4oVGUvMjApLGhlPTB8KChhZT1kZSk8PDV8YWU+Pj4yNykrSihFZSx2ZSxBZSxrZSkrU2UrZmVbVGVdK1dbRWVdO1NlPWtl''@;'; put 'put ''LGtlPUFlLEFlPXEodmUpLHZlPWRlLGRlPWhlfXRoaXMuX2E9ZGUrdGhpcy5fYXwwLHRoaXMuX2I9dmUrdGhpcy5fYnwwLHRoaXMuX2M9QWUrdGhpcy5fY3wwLHRoaXMuX2Q9a2UrdGhpcy5fZHwwLHRoaXMuX2U9U2UrdGhpcy5fZXwwfSxlZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgc2U9WS5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIHNlLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksc2Uud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxzZS53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLHNlLndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLHNlLndyaXRlSW50MzJCRSgw''@;'; put 'put ''fHRoaXMuX2UsMTYpLHNlfSxVLmV4cG9ydHM9ZWV9LDgzMzY6KFUsUSxaKT0+e3ZhciBpZT1aKDU3MTcpLGxlPVooNDE4OSksWT1aKDk1MDkpLkJ1ZmZlcixXPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUxNF0sTj1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIGVl''@;'; put 'put ''KCl7dGhpcy5pbml0KCksdGhpcy5fdz1OLGxlLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gcShhZSl7cmV0dXJuIGFlPDw1fGFlPj4+Mjd9ZnVuY3Rpb24gSihhZSl7cmV0dXJuIGFlPDwzMHxhZT4+PjJ9ZnVuY3Rpb24gc2UoYWUsZmUsZGUsdmUpe3JldHVybiAwPT09YWU/ZmUmZGV8fmZl''@;'; put 'put ''JnZlOjI9PT1hZT9mZSZkZXxmZSZ2ZXxkZSZ2ZTpmZV5kZV52ZX1pZShlZSxsZSksZWUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5f''@;'; put 'put ''ZT0zMjg1Mzc3NTIwLHRoaXN9LGVlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGFlKXtmb3IodmFyIGZlLGRlPXRoaXMuX3csdmU9MHx0aGlzLl9hLEFlPTB8dGhpcy5fYixrZT0wfHRoaXMuX2MsU2U9MHx0aGlzLl9kLEllPTB8dGhpcy5fZSxUZT0wO1RlPDE2OysrVGUpZGVbVGVdPWFl''@;'; put 'put ''LnJlYWRJbnQzMkJFKDQqVGUpO2Zvcig7VGU8ODA7KytUZSlkZVtUZV09KGZlPWRlW1RlLTNdXmRlW1RlLThdXmRlW1RlLTE0XV5kZVtUZS0xNl0pPDwxfGZlPj4+MzE7Zm9yKHZhciBFZT0wO0VlPDgwOysrRWUpe3ZhciBoZT1+fihFZS8yMCksTz1xKHZlKStzZShoZSxBZSxrZSxTZSkrSWUr''@;'; put 'put ''ZGVbRWVdK1dbaGVdfDA7SWU9U2UsU2U9a2Usa2U9SihBZSksQWU9dmUsdmU9T310aGlzLl9hPXZlK3RoaXMuX2F8MCx0aGlzLl9iPUFlK3RoaXMuX2J8MCx0aGlzLl9jPWtlK3RoaXMuX2N8MCx0aGlzLl9kPVNlK3RoaXMuX2R8MCx0aGlzLl9lPUllK3RoaXMuX2V8MH0sZWUucHJvdG90eXBl''@;'; put 'put ''Ll9oYXNoPWZ1bmN0aW9uKCl7dmFyIGFlPVkuYWxsb2NVbnNhZmUoMjApO3JldHVybiBhZS53cml0ZUludDMyQkUoMHx0aGlzLl9hLDApLGFlLndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksYWUud3JpdGVJbnQzMkJFKDB8dGhpcy5fYyw4KSxhZS53cml0ZUludDMyQkUoMHx0aGlzLl9kLDEy''@;'; put 'put ''KSxhZS53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxhZX0sVS5leHBvcnRzPWVlfSw4NDMyOihVLFEsWik9Pnt2YXIgaWU9Wig1NzE3KSxsZT1aKDc0OTkpLFk9Wig0MTg5KSxXPVooOTUwOSkuQnVmZmVyLE49bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBlZSgpe3RoaXMuaW5pdCgpLHRoaXMu''@;'; put 'put ''X3c9TixZLmNhbGwodGhpcyw2NCw1Nil9aWUoZWUsbGUpLGVlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MzIzODM3MTAzMix0aGlzLl9iPTkxNDE1MDY2Myx0aGlzLl9jPTgxMjcwMjk5OSx0aGlzLl9kPTQxNDQ5MTI2OTcsdGhpcy5fZT00MjkwNzc1ODU3LHRo''@;'; put 'put ''aXMuX2Y9MTc1MDYwMzAyNSx0aGlzLl9nPTE2OTQwNzY4MzksdGhpcy5faD0zMjA0MDc1NDI4LHRoaXN9LGVlLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBxPVcuYWxsb2NVbnNhZmUoMjgpO3JldHVybiBxLndyaXRlSW50MzJCRSh0aGlzLl9hLDApLHEud3JpdGVJbnQzMkJFKHRo''@;'; put 'put ''aXMuX2IsNCkscS53cml0ZUludDMyQkUodGhpcy5fYyw4KSxxLndyaXRlSW50MzJCRSh0aGlzLl9kLDEyKSxxLndyaXRlSW50MzJCRSh0aGlzLl9lLDE2KSxxLndyaXRlSW50MzJCRSh0aGlzLl9mLDIwKSxxLndyaXRlSW50MzJCRSh0aGlzLl9nLDI0KSxxfSxVLmV4cG9ydHM9ZWV9LDc0OTk6''@;'; put 'put ''KFUsUSxaKT0+e3ZhciBpZT1aKDU3MTcpLGxlPVooNDE4OSksWT1aKDk1MDkpLkJ1ZmZlcixXPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2''@;'; put 'put ''MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4''@;'; put 'put ''MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTky''@;'; put 'put ''MSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1''@;'; put 'put ''NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdLE49bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBlZSgpe3RoaXMuaW5pdCgpLHRoaXMuX3c9TixsZS5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9u''@;'; put 'put ''IHEoZGUsdmUsQWUpe3JldHVybiBBZV5kZSYodmVeQWUpfWZ1bmN0aW9uIEooZGUsdmUsQWUpe3JldHVybiBkZSZ2ZXxBZSYoZGV8dmUpfWZ1bmN0aW9uIHNlKGRlKXtyZXR1cm4oZGU+Pj4yfGRlPDwzMCleKGRlPj4+MTN8ZGU8PDE5KV4oZGU+Pj4yMnxkZTw8MTApfWZ1bmN0aW9uIGFlKGRl''@;'; put 'put ''KXtyZXR1cm4oZGU+Pj42fGRlPDwyNileKGRlPj4+MTF8ZGU8PDIxKV4oZGU+Pj4yNXxkZTw8Nyl9ZnVuY3Rpb24gZmUoZGUpe3JldHVybihkZT4+Pjd8ZGU8PDI1KV4oZGU+Pj4xOHxkZTw8MTQpXmRlPj4+M31pZShlZSxsZSksZWUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fYT0xNzc5MDMzNzAzLHRoaXMuX2I9MzE0NDEzNDI3Nyx0aGlzLl9jPTEwMTM5MDQyNDIsdGhpcy5fZD0yNzczNDgwNzYyLHRoaXMuX2U9MTM1OTg5MzExOSx0aGlzLl9mPTI2MDA4MjI5MjQsdGhpcy5fZz01Mjg3MzQ2MzUsdGhpcy5faD0xNTQxNDU5MjI1LHRoaXN9LGVlLnByb3Rv''@;'; put 'put ''dHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGRlKXtmb3IodmFyIHZlLEFlPXRoaXMuX3csa2U9MHx0aGlzLl9hLFNlPTB8dGhpcy5fYixJZT0wfHRoaXMuX2MsVGU9MHx0aGlzLl9kLEVlPTB8dGhpcy5fZSxoZT0wfHRoaXMuX2YsTz0wfHRoaXMuX2csej0wfHRoaXMuX2gsbmU9MDtuZTwxNjsrK25l''@;'; put 'put ''KUFlW25lXT1kZS5yZWFkSW50MzJCRSg0Km5lKTtmb3IoO25lPDY0OysrbmUpQWVbbmVdPTB8KCgodmU9QWVbbmUtMl0pPj4+MTd8dmU8PDE1KV4odmU+Pj4xOXx2ZTw8MTMpXnZlPj4+MTApK0FlW25lLTddK2ZlKEFlW25lLTE1XSkrQWVbbmUtMTZdO2Zvcih2YXIgdGU9MDt0ZTw2NDsrK3Rl''@;'; put 'put ''KXt2YXIgeD16K2FlKEVlKStxKEVlLGhlLE8pK1dbdGVdK0FlW3RlXXwwLFA9c2Uoa2UpK0ooa2UsU2UsSWUpfDA7ej1PLE89aGUsaGU9RWUsRWU9VGUreHwwLFRlPUllLEllPVNlLFNlPWtlLGtlPXgrUHwwfXRoaXMuX2E9a2UrdGhpcy5fYXwwLHRoaXMuX2I9U2UrdGhpcy5fYnwwLHRoaXMu''@;'; put 'put ''X2M9SWUrdGhpcy5fY3wwLHRoaXMuX2Q9VGUrdGhpcy5fZHwwLHRoaXMuX2U9RWUrdGhpcy5fZXwwLHRoaXMuX2Y9aGUrdGhpcy5fZnwwLHRoaXMuX2c9Tyt0aGlzLl9nfDAsdGhpcy5faD16K3RoaXMuX2h8MH0sZWUucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGRlPVkuYWxsb2NV''@;'; put 'put ''bnNhZmUoMzIpO3JldHVybiBkZS53cml0ZUludDMyQkUodGhpcy5fYSwwKSxkZS53cml0ZUludDMyQkUodGhpcy5fYiw0KSxkZS53cml0ZUludDMyQkUodGhpcy5fYyw4KSxkZS53cml0ZUludDMyQkUodGhpcy5fZCwxMiksZGUud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLGRlLndyaXRlSW50''@;'; put 'put ''MzJCRSh0aGlzLl9mLDIwKSxkZS53cml0ZUludDMyQkUodGhpcy5fZywyNCksZGUud3JpdGVJbnQzMkJFKHRoaXMuX2gsMjgpLGRlfSxVLmV4cG9ydHM9ZWV9LDE2ODY6KFUsUSxaKT0+e3ZhciBpZT1aKDU3MTcpLGxlPVooNzgxNiksWT1aKDQxODkpLFc9Wig5NTA5KS5CdWZmZXIsTj1uZXcg''@;'; put 'put ''QXJyYXkoMTYwKTtmdW5jdGlvbiBlZSgpe3RoaXMuaW5pdCgpLHRoaXMuX3c9TixZLmNhbGwodGhpcywxMjgsMTEyKX1pZShlZSxsZSksZWUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlzLl9iaD0xNjU0MjcwMjUwLHRoaXMuX2NoPTI0''@;'; put 'put ''Mzg1MjkzNzAsdGhpcy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05MTQxNTA2NjMsdGhpcy5fY2w9ODEyNzAyOTk5''@;'; put 'put ''LHRoaXMuX2RsPTQxNDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSxlZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgcT1XLmFsbG9jVW5zYWZlKDQ4KTtmdW5j''@;'; put 'put ''dGlvbiBKKHNlLGFlLGZlKXtxLndyaXRlSW50MzJCRShzZSxmZSkscS53cml0ZUludDMyQkUoYWUsZmUrNCl9cmV0dXJuIEoodGhpcy5fYWgsdGhpcy5fYWwsMCksSih0aGlzLl9iaCx0aGlzLl9ibCw4KSxKKHRoaXMuX2NoLHRoaXMuX2NsLDE2KSxKKHRoaXMuX2RoLHRoaXMuX2RsLDI0KSxK''@;'; put 'put ''KHRoaXMuX2VoLHRoaXMuX2VsLDMyKSxKKHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKSxxfSxVLmV4cG9ydHM9ZWV9LDc4MTY6KFUsUSxaKT0+e3ZhciBpZT1aKDU3MTcpLGxlPVooNDE4OSksWT1aKDk1MDkpLkJ1ZmZlcixXPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3''@;'; put 'put ''MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAx''@;'; put 'put ''LDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQw''@;'; put 'put ''MjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcx''@;'; put 'put ''OTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUs''@;'; put 'put ''MTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3''@;'; put 'put ''MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTEx''@;'; put 'put ''Njk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5''@;'; put 'put ''LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3Mywz''@;'; put 'put ''MzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5''@;'; put 'put ''OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUs''@;'; put 'put ''OTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV0sTj1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiBlZSgpe3RoaXMuaW5pdCgpLHRoaXMuX3c9TixsZS5jYWxsKHRoaXMsMTI4LDExMil9ZnVuY3Rpb24gcShTZSxJZSxUZSl7cmV0dXJuIFRlXlNlJihJZV5UZSl9ZnVuY3Rpb24gSihTZSxJ''@;'; put 'put ''ZSxUZSl7cmV0dXJuIFNlJkllfFRlJihTZXxJZSl9ZnVuY3Rpb24gc2UoU2UsSWUpe3JldHVybihTZT4+PjI4fEllPDw0KV4oSWU+Pj4yfFNlPDwzMCleKEllPj4+N3xTZTw8MjUpfWZ1bmN0aW9uIGFlKFNlLEllKXtyZXR1cm4oU2U+Pj4xNHxJZTw8MTgpXihTZT4+PjE4fEllPDwxNCleKEll''@;'; put 'put ''Pj4+OXxTZTw8MjMpfWZ1bmN0aW9uIGZlKFNlLEllKXtyZXR1cm4oU2U+Pj4xfEllPDwzMSleKFNlPj4+OHxJZTw8MjQpXlNlPj4+N31mdW5jdGlvbiBkZShTZSxJZSl7cmV0dXJuKFNlPj4+MXxJZTw8MzEpXihTZT4+Pjh8SWU8PDI0KV4oU2U+Pj43fEllPDwyNSl9ZnVuY3Rpb24gdmUoU2Us''@;'; put 'put ''SWUpe3JldHVybihTZT4+PjE5fEllPDwxMyleKEllPj4+Mjl8U2U8PDMpXlNlPj4+Nn1mdW5jdGlvbiBBZShTZSxJZSl7cmV0dXJuKFNlPj4+MTl8SWU8PDEzKV4oSWU+Pj4yOXxTZTw8MyleKFNlPj4+NnxJZTw8MjYpfWZ1bmN0aW9uIGtlKFNlLEllKXtyZXR1cm4gU2U+Pj4wPEllPj4+MD8x''@;'; put 'put ''OjB9aWUoZWUsbGUpLGVlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9maD0yNjAwODIy''@;'; put 'put ''OTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0xNTQxNDU5MjI1LHRoaXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1MTExOTksdGhp''@;'; put 'put ''cy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMyMDksdGhpc30sZWUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oU2Upe2Zvcih2YXIgSWU9dGhpcy5fdyxUZT0wfHRoaXMuX2FoLEVlPTB8dGhpcy5fYmgsaGU9MHx0aGlzLl9jaCxPPTB8dGhpcy5fZGgsej0wfHRoaXMuX2VoLG5l''@;'; put 'put ''PTB8dGhpcy5fZmgsdGU9MHx0aGlzLl9naCx4PTB8dGhpcy5faGgsUD0wfHRoaXMuX2FsLFY9MHx0aGlzLl9ibCxUPTB8dGhpcy5fY2wsUz0wfHRoaXMuX2RsLEY9MHx0aGlzLl9lbCx5ZT0wfHRoaXMuX2ZsLENlPTB8dGhpcy5fZ2wsRGU9MHx0aGlzLl9obCxQZT0wO1BlPDMyO1BlKz0yKUll''@;'; put 'put ''W1BlXT1TZS5yZWFkSW50MzJCRSg0KlBlKSxJZVtQZSsxXT1TZS5yZWFkSW50MzJCRSg0KlBlKzQpO2Zvcig7UGU8MTYwO1BlKz0yKXt2YXIgUWU9SWVbUGUtMzBdLCRlPUllW1BlLTMwKzFdLGd0PWZlKFFlLCRlKSx5dD1kZSgkZSxRZSkscHQ9dmUoUWU9SWVbUGUtNF0sJGU9SWVbUGUtNCsx''@;'; put 'put ''XSksbXQ9QWUoJGUsUWUpLEZ0PUllW1BlLTMyXSxvbj1JZVtQZS0zMisxXSxfdD15dCtJZVtQZS0xNCsxXXwwLG50PWd0K0llW1BlLTE0XStrZShfdCx5dCl8MDtudD0obnQ9bnQrcHQra2UoX3Q9X3QrbXR8MCxtdCl8MCkrRnQra2UoX3Q9X3Qrb258MCxvbil8MCxJZVtQZV09bnQsSWVbUGUr''@;'; put 'put ''MV09X3R9Zm9yKHZhciBxZT0wO3FlPDE2MDtxZSs9Mil7bnQ9SWVbcWVdLF90PUllW3FlKzFdO3ZhciBvdD1KKFRlLEVlLGhlKSxSdD1KKFAsVixUKSxDdD1zZShUZSxQKSxjdD1zZShQLFRlKSxOdD1hZSh6LEYpLHplPWFlKEYseiksWWU9V1txZV0sQXQ9V1txZSsxXSxqdD1xKHosbmUsdGUp''@;'; put 'put ''LEp0PXEoRix5ZSxDZSksbW49RGUremV8MCxwbj14K050K2tlKG1uLERlKXwwO3BuPShwbj0ocG49cG4ranQra2UobW49bW4rSnR8MCxKdCl8MCkrWWUra2UobW49bW4rQXR8MCxBdCl8MCkrbnQra2UobW49bW4rX3R8MCxfdCl8MDt2YXIgYm49Y3QrUnR8MCxsbj1DdCtvdCtrZShibixjdCl8''@;'; put 'put ''MDt4PXRlLERlPUNlLHRlPW5lLENlPXllLG5lPXoseWU9Rix6PU8rcG4ra2UoRj1TK21ufDAsUyl8MCxPPWhlLFM9VCxoZT1FZSxUPVYsRWU9VGUsVj1QLFRlPXBuK2xuK2tlKFA9bW4rYm58MCxtbil8MH10aGlzLl9hbD10aGlzLl9hbCtQfDAsdGhpcy5fYmw9dGhpcy5fYmwrVnwwLHRoaXMu''@;'; put 'put ''X2NsPXRoaXMuX2NsK1R8MCx0aGlzLl9kbD10aGlzLl9kbCtTfDAsdGhpcy5fZWw9dGhpcy5fZWwrRnwwLHRoaXMuX2ZsPXRoaXMuX2ZsK3llfDAsdGhpcy5fZ2w9dGhpcy5fZ2wrQ2V8MCx0aGlzLl9obD10aGlzLl9obCtEZXwwLHRoaXMuX2FoPXRoaXMuX2FoK1RlK2tlKHRoaXMuX2FsLFAp''@;'; put 'put ''fDAsdGhpcy5fYmg9dGhpcy5fYmgrRWUra2UodGhpcy5fYmwsVil8MCx0aGlzLl9jaD10aGlzLl9jaCtoZStrZSh0aGlzLl9jbCxUKXwwLHRoaXMuX2RoPXRoaXMuX2RoK08ra2UodGhpcy5fZGwsUyl8MCx0aGlzLl9laD10aGlzLl9laCt6K2tlKHRoaXMuX2VsLEYpfDAsdGhpcy5fZmg9dGhp''@;'; put 'put ''cy5fZmgrbmUra2UodGhpcy5fZmwseWUpfDAsdGhpcy5fZ2g9dGhpcy5fZ2grdGUra2UodGhpcy5fZ2wsQ2UpfDAsdGhpcy5faGg9dGhpcy5faGgreCtrZSh0aGlzLl9obCxEZSl8MH0sZWUucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIFNlPVkuYWxsb2NVbnNhZmUoNjQpO2Z1bmN0''@;'; put 'put ''aW9uIEllKFRlLEVlLGhlKXtTZS53cml0ZUludDMyQkUoVGUsaGUpLFNlLndyaXRlSW50MzJCRShFZSxoZSs0KX1yZXR1cm4gSWUodGhpcy5fYWgsdGhpcy5fYWwsMCksSWUodGhpcy5fYmgsdGhpcy5fYmwsOCksSWUodGhpcy5fY2gsdGhpcy5fY2wsMTYpLEllKHRoaXMuX2RoLHRoaXMuX2Rs''@;'; put 'put ''LDI0KSxJZSh0aGlzLl9laCx0aGlzLl9lbCwzMiksSWUodGhpcy5fZmgsdGhpcy5fZmwsNDApLEllKHRoaXMuX2doLHRoaXMuX2dsLDQ4KSxJZSh0aGlzLl9oaCx0aGlzLl9obCw1NiksU2V9LFUuZXhwb3J0cz1lZX0sMjgzMDooVSxRLFopPT57VS5leHBvcnRzPWxlO3ZhciBpZT1aKDcxODcp''@;'; put 'put ''LkV2ZW50RW1pdHRlcjtmdW5jdGlvbiBsZSgpe2llLmNhbGwodGhpcyl9Wig1NzE3KShsZSxpZSksbGUuUmVhZGFibGU9Wig5NDgxKSxsZS5Xcml0YWJsZT1aKDQyMjkpLGxlLkR1cGxleD1aKDY3NTMpLGxlLlRyYW5zZm9ybT1aKDQ2MDUpLGxlLlBhc3NUaHJvdWdoPVooMjcyNSksbGUuZmlu''@;'; put 'put ''aXNoZWQ9Wig4NjEwKSxsZS5waXBlbGluZT1aKDk5NDYpLGxlLlN0cmVhbT1sZSxsZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihZLFcpe3ZhciBOPXRoaXM7ZnVuY3Rpb24gZWUodmUpe1kud3JpdGFibGUmJiExPT09WS53cml0ZSh2ZSkmJk4ucGF1c2UmJk4ucGF1c2UoKX1mdW5jdGlvbiBx''@;'; put 'put ''KCl7Ti5yZWFkYWJsZSYmTi5yZXN1bWUmJk4ucmVzdW1lKCl9Ti5vbigiZGF0YSIsZWUpLFkub24oImRyYWluIixxKSxZLl9pc1N0ZGlvfHxXJiYhMT09PVcuZW5kfHwoTi5vbigiZW5kIixzZSksTi5vbigiY2xvc2UiLGFlKSk7dmFyIEo9ITE7ZnVuY3Rpb24gc2UoKXtKfHwoSj0hMCxZLmVu''@;'; put 'put ''ZCgpKX1mdW5jdGlvbiBhZSgpe0p8fChKPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiBZLmRlc3Ryb3kmJlkuZGVzdHJveSgpKX1mdW5jdGlvbiBmZSh2ZSl7aWYoZGUoKSwwPT09aWUubGlzdGVuZXJDb3VudCh0aGlzLCJlcnJvciIpKXRocm93IHZlfWZ1bmN0aW9uIGRlKCl7Ti5yZW1vdmVMaXN0''@;'; put 'put ''ZW5lcigiZGF0YSIsZWUpLFkucmVtb3ZlTGlzdGVuZXIoImRyYWluIixxKSxOLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHNlKSxOLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsYWUpLE4ucmVtb3ZlTGlzdGVuZXIoImVycm9yIixmZSksWS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGZlKSxOLnJlbW92''@;'; put 'put ''ZUxpc3RlbmVyKCJlbmQiLGRlKSxOLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsZGUpLFkucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixkZSl9cmV0dXJuIE4ub24oImVycm9yIixmZSksWS5vbigiZXJyb3IiLGZlKSxOLm9uKCJlbmQiLGRlKSxOLm9uKCJjbG9zZSIsZGUpLFkub24oImNsb3NlIixk''@;'; put 'put ''ZSksWS5lbWl0KCJwaXBlIixOKSxZfX0sMjU1MzooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDM5NikuQnVmZmVyLGxlPWllLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKGRlKXtzd2l0Y2goKGRlPSIiK2RlKSYmZGUudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2Fz''@;'; put 'put ''ZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiBZKGRlKXt2YXIgdmU7c3dpdGNo''@;'; put 'put ''KHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24oQWUpe3ZhciBrZT1mdW5jdGlvbihTZSl7aWYoIVNlKXJldHVybiJ1dGY4Ijtmb3IodmFyIEllOzspc3dpdGNoKFNlKXtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiJ1dGY4IjtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6''@;'; put 'put ''Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuInV0ZjE2bGUiO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuImxhdGluMSI7Y2FzZSJiYXNlNjQiOmNhc2UiYXNjaWkiOmNhc2UiaGV4IjpyZXR1cm4gU2U7ZGVmYXVsdDppZihJZSlyZXR1cm47U2U9KCIiK1NlKS50b0xvd2VyQ2FzZSgpLEll''@;'; put 'put ''PSEwfX0oQWUpO2lmKCJzdHJpbmciIT10eXBlb2Yga2UmJihpZS5pc0VuY29kaW5nPT09bGV8fCFsZShBZSkpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitBZSk7cmV0dXJuIGtlfHxBZX0oZGUpLHRoaXMuZW5jb2Rpbmcpe2Nhc2UidXRmMTZsZSI6dGhpcy50ZXh0PWVl''@;'; put 'put ''LHRoaXMuZW5kPXEsdmU9NDticmVhaztjYXNlInV0ZjgiOnRoaXMuZmlsbExhc3Q9Tix2ZT00O2JyZWFrO2Nhc2UiYmFzZTY0Ijp0aGlzLnRleHQ9Six0aGlzLmVuZD1zZSx2ZT0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9YWUsdm9pZCh0aGlzLmVuZD1mZSl9dGhpcy5sYXN0''@;'; put 'put ''TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj1pZS5hbGxvY1Vuc2FmZSh2ZSl9ZnVuY3Rpb24gVyhkZSl7cmV0dXJuIGRlPD0xMjc/MDpkZT4+NT09Nj8yOmRlPj40PT0xND8zOmRlPj4zPT0zMD80OmRlPj42PT0yPy0xOi0yfWZ1bmN0aW9uIE4oZGUpe3ZhciB2ZT10aGlz''@;'; put 'put ''Lmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLEFlPWZ1bmN0aW9uKGtlLFNlLEllKXtpZigxMjghPSgxOTImU2VbMF0pKXJldHVybiBrZS5sYXN0TmVlZD0wLCJcdWZmZmQiO2lmKGtlLmxhc3ROZWVkPjEmJlNlLmxlbmd0aD4xKXtpZigxMjghPSgxOTImU2VbMV0pKXJldHVybiBrZS5sYXN0TmVl''@;'; put 'put ''ZD0xLCJcdWZmZmQiO2lmKGtlLmxhc3ROZWVkPjImJlNlLmxlbmd0aD4yJiYxMjghPSgxOTImU2VbMl0pKXJldHVybiBrZS5sYXN0TmVlZD0yLCJcdWZmZmQifX0odGhpcyxkZSk7cmV0dXJuIHZvaWQgMCE9PUFlP0FlOnRoaXMubGFzdE5lZWQ8PWRlLmxlbmd0aD8oZGUuY29weSh0aGlzLmxh''@;'; put 'put ''c3RDaGFyLHZlLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpKTooZGUuY29weSh0aGlzLmxhc3RDaGFyLHZlLDAsZGUubGVuZ3RoKSx2b2lkKHRoaXMubGFzdE5lZWQtPWRlLmxlbmd0aCkpfWZ1bmN0aW9uIGVl''@;'; put 'put ''KGRlLHZlKXtpZigoZGUubGVuZ3RoLXZlKSUyPT0wKXt2YXIgQWU9ZGUudG9TdHJpbmcoInV0ZjE2bGUiLHZlKTtpZihBZSl7dmFyIGtlPUFlLmNoYXJDb2RlQXQoQWUubGVuZ3RoLTEpO2lmKGtlPj01NTI5NiYma2U8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90''@;'; put 'put ''YWw9NCx0aGlzLmxhc3RDaGFyWzBdPWRlW2RlLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPWRlW2RlLmxlbmd0aC0xXSxBZS5zbGljZSgwLC0xKX1yZXR1cm4gQWV9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09ZGVbZGUubGVuZ3Ro''@;'; put 'put ''LTFdLGRlLnRvU3RyaW5nKCJ1dGYxNmxlIix2ZSxkZS5sZW5ndGgtMSl9ZnVuY3Rpb24gcShkZSl7dmFyIHZlPWRlJiZkZS5sZW5ndGg/dGhpcy53cml0ZShkZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dmUrdGhpcy5sYXN0Q2hhci50b1N0cmluZygidXRmMTZsZSIsMCx0aGlzLmxhc3RU''@;'; put 'put ''b3RhbC10aGlzLmxhc3ROZWVkKTp2ZX1mdW5jdGlvbiBKKGRlLHZlKXt2YXIgQWU9KGRlLmxlbmd0aC12ZSklMztyZXR1cm4gMD09PUFlP2RlLnRvU3RyaW5nKCJiYXNlNjQiLHZlKToodGhpcy5sYXN0TmVlZD0zLUFlLHRoaXMubGFzdFRvdGFsPTMsMT09PUFlP3RoaXMubGFzdENoYXJbMF09''@;'; put 'put ''ZGVbZGUubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPWRlW2RlLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPWRlW2RlLmxlbmd0aC0xXSksZGUudG9TdHJpbmcoImJhc2U2NCIsdmUsZGUubGVuZ3RoLUFlKSl9ZnVuY3Rpb24gc2UoZGUpe3ZhciB2ZT1kZSYmZGUubGVuZ3RoP3RoaXMu''@;'; put 'put ''d3JpdGUoZGUpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP3ZlK3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQpOnZlfWZ1bmN0aW9uIGFlKGRlKXtyZXR1cm4gZGUudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gZmUoZGUpe3JldHVybiBk''@;'; put 'put ''ZSYmZGUubGVuZ3RoP3RoaXMud3JpdGUoZGUpOiIifVEuU3RyaW5nRGVjb2Rlcj1ZLFkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGRlKXtpZigwPT09ZGUubGVuZ3RoKXJldHVybiIiO3ZhciB2ZSxBZTtpZih0aGlzLmxhc3ROZWVkKXtpZih2b2lkIDA9PT0odmU9dGhpcy5maWxsTGFzdChk''@;'; put 'put ''ZSkpKXJldHVybiIiO0FlPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2UgQWU9MDtyZXR1cm4gQWU8ZGUubGVuZ3RoP3ZlP3ZlK3RoaXMudGV4dChkZSxBZSk6dGhpcy50ZXh0KGRlLEFlKTp2ZXx8IiJ9LFkucHJvdG90eXBlLmVuZD1mdW5jdGlvbihkZSl7dmFyIHZlPWRlJiZk''@;'; put 'put ''ZS5sZW5ndGg/dGhpcy53cml0ZShkZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dmUrIlx1ZmZmZCI6dmV9LFkucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24oZGUsdmUpe3ZhciBBZT1mdW5jdGlvbihTZSxJZSxUZSl7dmFyIEVlPUllLmxlbmd0aC0xO2lmKEVlPFRlKXJldHVybiAwO3ZhciBo''@;'; put 'put ''ZT1XKEllW0VlXSk7cmV0dXJuIGhlPj0wPyhoZT4wJiYoU2UubGFzdE5lZWQ9aGUtMSksaGUpOi0tRWU8VGV8fC0yPT09aGU/MDooaGU9VyhJZVtFZV0pKT49MD8oaGU+MCYmKFNlLmxhc3ROZWVkPWhlLTIpLGhlKTotLUVlPFRlfHwtMj09PWhlPzA6KGhlPVcoSWVbRWVdKSk+PTA/KGhlPjAm''@;'; put 'put ''JigyPT09aGU/aGU9MDpTZS5sYXN0TmVlZD1oZS0zKSxoZSk6MH0odGhpcyxkZSx2ZSk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIGRlLnRvU3RyaW5nKCJ1dGY4Iix2ZSk7dGhpcy5sYXN0VG90YWw9QWU7dmFyIGtlPWRlLmxlbmd0aC0oQWUtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIGRlLmNv''@;'; put 'put ''cHkodGhpcy5sYXN0Q2hhciwwLGtlKSxkZS50b1N0cmluZygidXRmOCIsdmUsa2UpfSxZLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihkZSl7aWYodGhpcy5sYXN0TmVlZDw9ZGUubGVuZ3RoKXJldHVybiBkZS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0''@;'; put 'put ''TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtkZS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLGRlLmxlbmd0aCksdGhpcy5sYXN0TmVlZC09ZGUubGVuZ3Ro''@;'; put 'put ''fX0sMzk2OihVLFEsWik9Pnt2YXIgaWU9Wig4NzY0KSxsZT1pZS5CdWZmZXI7ZnVuY3Rpb24gWShOLGVlKXtmb3IodmFyIHEgaW4gTillZVtxXT1OW3FdfWZ1bmN0aW9uIFcoTixlZSxxKXtyZXR1cm4gbGUoTixlZSxxKX1sZS5mcm9tJiZsZS5hbGxvYyYmbGUuYWxsb2NVbnNhZmUmJmxlLmFs''@;'; put 'put ''bG9jVW5zYWZlU2xvdz9VLmV4cG9ydHM9aWU6KFkoaWUsUSksUS5CdWZmZXI9VyksVy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsZS5wcm90b3R5cGUpLFkobGUsVyksVy5mcm9tPWZ1bmN0aW9uKE4sZWUscSl7aWYoIm51bWJlciI9PXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFy''@;'; put 'put ''Z3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIGxlKE4sZWUscSl9LFcuYWxsb2M9ZnVuY3Rpb24oTixlZSxxKXtpZigibnVtYmVyIiE9dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBKPWxlKE4pO3JldHVybiB2''@;'; put 'put ''b2lkIDAhPT1lZT8ic3RyaW5nIj09dHlwZW9mIHE/Si5maWxsKGVlLHEpOkouZmlsbChlZSk6Si5maWxsKDApLEp9LFcuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oTil7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTty''@;'; put 'put ''ZXR1cm4gbGUoTil9LFcuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKE4pe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGllLlNsb3dCdWZmZXIoTil9fSw3ODU3OihVLFEsWik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7Y29uc3QgaWU9WigzNjg5KSxsZT1aKDg1NzUpLlFjLFk9Wig5NTM5KSxXPVooNzUyKSxOPVooMjIyNCkueSxlZT1aKDU3NjEpLm0scT1aKDg5NzEpLlUsSj1aKDQ1Nikse2Zyb21DYWxsYmFjazpzZX09Wig3MDQxKSxhZT0vXltceDIxXHgyMy1ceDJCXHgyRC1ceDNBXHgzQy1ceDVCXHg1''@;'; put 'put ''RC1ceDdFXSskLyxmZT0vW1x4MDAtXHgxRl0vLGRlPVsiXG4iLCJcciIsIlwwIl0sdmU9L1tceDIwLVx4M0FceDNDLVx4N0VdKy8sQWU9L1tceDA5XHgyMC1ceDJGXHgzQi1ceDQwXHg1Qi1ceDYwXHg3Qi1ceDdFXS8sa2U9e2phbjowLGZlYjoxLG1hcjoyLGFwcjozLG1heTo0LGp1bjo1LGp1''@;'; put 'put ''bDo2LGF1Zzo3LHNlcDo4LG9jdDo5LG5vdjoxMCxkZWM6MTF9LFNlPTIxNDc0ODM2NDdlMyxJZT0nSW52YWxpZCBzYW1lU2l0ZUNvbnRleHQgb3B0aW9uIGZvciBnZXRDb29raWVzKCk7IGV4cGVjdGVkIG9uZSBvZiAic3RyaWN0IiwgImxheCIsIG9yICJub25lIic7ZnVuY3Rpb24gVGUocHQp''@;'; put 'put ''e2NvbnN0IG10PVN0cmluZyhwdCkudG9Mb3dlckNhc2UoKTtyZXR1cm4ibm9uZSI9PT1tdHx8ImxheCI9PT1tdHx8InN0cmljdCI9PT1tdD9tdDpudWxsfWNvbnN0IEVlPU9iamVjdC5mcmVlemUoe1NJTEVOVDoic2lsZW50IixTVFJJQ1Q6InN0cmljdCIsRElTQUJMRUQ6InVuc2FmZS1kaXNh''@;'; put 'put ''YmxlZCJ9KTt2YXIgaGU9Lyg/Ol4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfSQpfCg/Ol4oPzooPzpbYS1mXGRdezEsNH06KXs3fSg/OlthLWZcZF17MSw0fXw6KXwoPzpbYS1mXGRdezEs''@;'; put 'put ''NH06KXs2fSg/Oig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkpezN9fDpbYS1mXGRdezEsNH18Oil8KD86W2EtZlxkXXsxLDR9Oil7NX0oPzo6KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05''@;'; put 'put ''XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSwyfXw6KXwoPzpbYS1mXGRdezEsNH06KXs0fSg/Oig/OjpbYS1mXGRdezEsNH0pezAsMX06KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/''@;'; put 'put ''OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSwzfXw6KXwoPzpbYS1mXGRdezEsNH06KXszfSg/Oig/OjpbYS1mXGRdezEsNH0pezAsMn06KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVb''@;'; put 'put ''MC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSw0fXw6KXwoPzpbYS1mXGRdezEsNH06KXsyfSg/Oig/OjpbYS1mXGRdezEsNH0pezAsM306KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAt''@;'; put 'put ''NF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSw1fXw6KXwoPzpbYS1mXGRdezEsNH06KXsxfSg/Oig/OjpbYS1mXGRdezEsNH0pezAsNH06KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRc''@;'; put 'put ''ZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSw2fXw6KXwoPzo6KD86KD86OlthLWZcZF17MSw0fSl7MCw1fTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2Et''@;'; put 'put ''ZlxkXXsxLDR9KXsxLDd9fDopKSkkKS87ZnVuY3Rpb24gTyhwdCxtdCx2dCxmdCl7bGV0IEZ0PTA7Zm9yKDtGdDxwdC5sZW5ndGg7KXtjb25zdCBvbj1wdC5jaGFyQ29kZUF0KEZ0KTtpZihvbjw9NDd8fG9uPj01OClicmVhaztGdCsrfXJldHVybiBGdDxtdHx8RnQ+dnQ/bnVsbDpmdHx8RnQ9''@;'; put 'put ''PXB0Lmxlbmd0aD9wYXJzZUludChwdC5zdWJzdHIoMCxGdCksMTApOm51bGx9ZnVuY3Rpb24geihwdCl7Y29uc3QgbXQ9cHQuc3BsaXQoIjoiKSx2dD1bMCwwLDBdO2lmKDMhPT1tdC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBmdD0wO2Z0PDM7ZnQrKyl7Y29uc3Qgb249TyhtdFtmdF0s''@;'; put 'put ''MSwyLDI9PWZ0KTtpZihudWxsPT09b24pcmV0dXJuIG51bGw7dnRbZnRdPW9ufXJldHVybiB2dH1mdW5jdGlvbiBuZShwdCl7cHQ9U3RyaW5nKHB0KS5zdWJzdHIoMCwzKS50b0xvd2VyQ2FzZSgpO2NvbnN0IG10PWtlW3B0XTtyZXR1cm4gbXQ+PTA/bXQ6bnVsbH1mdW5jdGlvbiB0ZShwdCl7''@;'; put 'put ''aWYoIXB0KXJldHVybjtjb25zdCBtdD1wdC5zcGxpdChBZSk7aWYoIW10KXJldHVybjtsZXQgdnQ9bnVsbCxmdD1udWxsLEZ0PW51bGwsb249bnVsbCxfdD1udWxsLG50PW51bGw7Zm9yKGxldCBxZT0wO3FlPG10Lmxlbmd0aDtxZSsrKXtjb25zdCBvdD1tdFtxZV0udHJpbSgpO2lmKCFvdC5s''@;'; put 'put ''ZW5ndGgpY29udGludWU7bGV0IFJ0O251bGw9PT1GdCYmKFJ0PXoob3QpLFJ0KT8odnQ9UnRbMF0sZnQ9UnRbMV0sRnQ9UnRbMl0pOm51bGwhPT1vbnx8KFJ0PU8ob3QsMSwyLCEwKSxudWxsPT09UnQpP251bGwhPT1fdHx8KFJ0PW5lKG90KSxudWxsPT09UnQpP251bGw9PT1udCYmKFJ0PU8o''@;'; put 'put ''b3QsMiw0LCEwKSxudWxsIT09UnQmJihudD1SdCxudD49NzAmJm50PD05OT9udCs9MTkwMDpudD49MCYmbnQ8PTY5JiYobnQrPTJlMykpKTpfdD1SdDpvbj1SdH1yZXR1cm4gbnVsbD09PW9ufHxudWxsPT09X3R8fG51bGw9PT1udHx8bnVsbD09PUZ0fHxvbjwxfHxvbj4zMXx8bnQ8MTYwMXx8''@;'; put 'put ''dnQ+MjN8fGZ0PjU5fHxGdD41OT92b2lkIDA6bmV3IERhdGUoRGF0ZS5VVEMobnQsX3Qsb24sdnQsZnQsRnQpKX1mdW5jdGlvbiB4KHB0KXtyZXR1cm4gcHQudG9VVENTdHJpbmcoKX1mdW5jdGlvbiBQKHB0KXtyZXR1cm4gbnVsbD09cHQ/bnVsbDoocHQ9cHQudHJpbSgpLnJlcGxhY2UoL15c''@;'; put 'put ''Li8sIiIpLGllJiYvW15cdTAwMDEtXHUwMDdmXS8udGVzdChwdCkmJihwdD1pZS50b0FTQ0lJKHB0KSkscHQudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gVihwdCxtdCx2dCl7aWYobnVsbD09cHR8fG51bGw9PW10KXJldHVybiBudWxsO2lmKCExIT09dnQmJihwdD1QKHB0KSxtdD1QKG10KSks''@;'; put 'put ''cHQ9PW10KXJldHVybiEwO2NvbnN0IGZ0PXB0LmluZGV4T2YobXQpO3JldHVybiEoZnQ8PTB8fHB0Lmxlbmd0aCE9PW10Lmxlbmd0aCtmdHx8Ii4iIT09cHQuc3Vic3RyKGZ0LTEsMSl8fGhlLnRlc3QocHQpKX1mdW5jdGlvbiBUKHB0KXtpZighcHR8fCIvIiE9PXB0LnN1YnN0cigwLDEpKXJl''@;'; put 'put ''dHVybiIvIjtpZigiLyI9PT1wdClyZXR1cm4gcHQ7Y29uc3QgbXQ9cHQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gMD09PW10PyIvIjpwdC5zbGljZSgwLG10KX1mdW5jdGlvbiBGKHB0LG10KXttdCYmIm9iamVjdCI9PXR5cGVvZiBtdHx8KG10PXt9KTtjb25zdCB2dD0ocHQ9cHQudHJpbSgp''@;'; put 'put ''KS5pbmRleE9mKCI7IiksZnQ9ZnVuY3Rpb24gUyhwdCxtdCl7bGV0IHZ0LGZ0LEZ0PShwdD1mdW5jdGlvbihfdCl7Zm9yKGxldCBudD0wO250PGRlLmxlbmd0aDtudCsrKXtjb25zdCBxZT1fdC5pbmRleE9mKGRlW250XSk7LTEhPT1xZSYmKF90PV90LnN1YnN0cigwLHFlKSl9cmV0dXJuIF90''@;'; put 'put ''fShwdCkpLmluZGV4T2YoIj0iKTtpZihtdCkwPT09RnQmJihGdD0ocHQ9cHQuc3Vic3RyKDEpKS5pbmRleE9mKCI9IikpO2Vsc2UgaWYoRnQ8PTApcmV0dXJuO2lmKEZ0PD0wPyh2dD0iIixmdD1wdC50cmltKCkpOih2dD1wdC5zdWJzdHIoMCxGdCkudHJpbSgpLGZ0PXB0LnN1YnN0cihGdCsx''@;'; put 'put ''KS50cmltKCkpLGZlLnRlc3QodnQpfHxmZS50ZXN0KGZ0KSlyZXR1cm47Y29uc3Qgb249bmV3ICRlO3JldHVybiBvbi5rZXk9dnQsb24udmFsdWU9ZnQsb259KC0xPT09dnQ/cHQ6cHQuc3Vic3RyKDAsdnQpLCEhbXQubG9vc2UpO2lmKCFmdClyZXR1cm47aWYoLTE9PT12dClyZXR1cm4gZnQ7''@;'; put 'put ''Y29uc3QgRnQ9cHQuc2xpY2UodnQrMSkudHJpbSgpO2lmKDA9PT1GdC5sZW5ndGgpcmV0dXJuIGZ0O2NvbnN0IG9uPUZ0LnNwbGl0KCI7Iik7Zm9yKDtvbi5sZW5ndGg7KXtjb25zdCBfdD1vbi5zaGlmdCgpLnRyaW0oKTtpZigwPT09X3QubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IG50PV90Lmlu''@;'; put 'put ''ZGV4T2YoIj0iKTtsZXQgcWUsb3Q7c3dpdGNoKC0xPT09bnQ/KHFlPV90LG90PW51bGwpOihxZT1fdC5zdWJzdHIoMCxudCksb3Q9X3Quc3Vic3RyKG50KzEpKSxxZT1xZS50cmltKCkudG9Mb3dlckNhc2UoKSxvdCYmKG90PW90LnRyaW0oKSkscWUpe2Nhc2UiZXhwaXJlcyI6aWYob3Qpe2Nv''@;'; put 'put ''bnN0IFJ0PXRlKG90KTtSdCYmKGZ0LmV4cGlyZXM9UnQpfWJyZWFrO2Nhc2UibWF4LWFnZSI6aWYob3QmJi9eLT9bMC05XSskLy50ZXN0KG90KSl7Y29uc3QgUnQ9cGFyc2VJbnQob3QsMTApO2Z0LnNldE1heEFnZShSdCl9YnJlYWs7Y2FzZSJkb21haW4iOmlmKG90KXtjb25zdCBSdD1vdC50''@;'; put 'put ''cmltKCkucmVwbGFjZSgvXlwuLywiIik7UnQmJihmdC5kb21haW49UnQudG9Mb3dlckNhc2UoKSl9YnJlYWs7Y2FzZSJwYXRoIjpmdC5wYXRoPW90JiYiLyI9PT1vdFswXT9vdDpudWxsO2JyZWFrO2Nhc2Uic2VjdXJlIjpmdC5zZWN1cmU9ITA7YnJlYWs7Y2FzZSJodHRwb25seSI6ZnQuaHR0''@;'; put 'put ''cE9ubHk9ITA7YnJlYWs7Y2FzZSJzYW1lc2l0ZSI6c3dpdGNoKG90P290LnRvTG93ZXJDYXNlKCk6IiIpe2Nhc2Uic3RyaWN0IjpmdC5zYW1lU2l0ZT0ic3RyaWN0IjticmVhaztjYXNlImxheCI6ZnQuc2FtZVNpdGU9ImxheCJ9YnJlYWs7ZGVmYXVsdDpmdC5leHRlbnNpb25zPWZ0LmV4dGVu''@;'; put 'put ''c2lvbnN8fFtdLGZ0LmV4dGVuc2lvbnMucHVzaChfdCl9fXJldHVybiBmdH1mdW5jdGlvbiB5ZShwdCl7bGV0IG10O3RyeXttdD1KU09OLnBhcnNlKHB0KX1jYXRjaCh2dCl7cmV0dXJuIHZ0fXJldHVybiBtdH1mdW5jdGlvbiBDZShwdCl7aWYoIXB0KXJldHVybiBudWxsO2xldCBtdDtpZigi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIHB0KXtpZihtdD15ZShwdCksbXQgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbnVsbH1lbHNlIG10PXB0O2NvbnN0IHZ0PW5ldyAkZTtmb3IobGV0IGZ0PTA7ZnQ8JGUuc2VyaWFsaXphYmxlUHJvcGVydGllcy5sZW5ndGg7ZnQrKyl7Y29uc3QgRnQ9JGUuc2VyaWFs''@;'; put 'put ''aXphYmxlUHJvcGVydGllc1tmdF07dm9pZCAwIT09bXRbRnRdJiZtdFtGdF0hPT1RZVtGdF0mJih2dFtGdF09ImV4cGlyZXMiPT09RnR8fCJjcmVhdGlvbiI9PT1GdHx8Imxhc3RBY2Nlc3NlZCI9PT1GdD9udWxsPT09bXRbRnRdP251bGw6IkluZmluaXR5Ij09bXRbRnRdPyJJbmZpbml0eSI6''@;'; put 'put ''bmV3IERhdGUobXRbRnRdKTptdFtGdF0pfXJldHVybiB2dH1mdW5jdGlvbiBEZShwdCxtdCl7bGV0IHZ0PTA7cmV0dXJuIHZ0PShtdC5wYXRoP210LnBhdGgubGVuZ3RoOjApLShwdC5wYXRoP3B0LnBhdGgubGVuZ3RoOjApLDAhPT12dHx8KHZ0PShwdC5jcmVhdGlvbj9wdC5jcmVhdGlvbi5n''@;'; put 'put ''ZXRUaW1lKCk6U2UpLShtdC5jcmVhdGlvbj9tdC5jcmVhdGlvbi5nZXRUaW1lKCk6U2UpLDAhPT12dHx8KHZ0PXB0LmNyZWF0aW9uSW5kZXgtbXQuY3JlYXRpb25JbmRleCkpLHZ0fWZ1bmN0aW9uIFBlKHB0KXtpZihwdCBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gcHQ7dHJ5e3B0PWRlY29k''@;'; put 'put ''ZVVSSShwdCl9Y2F0Y2gobXQpe31yZXR1cm4gbGUocHQpfWNvbnN0IFFlPXtrZXk6IiIsdmFsdWU6IiIsZXhwaXJlczoiSW5maW5pdHkiLG1heEFnZTpudWxsLGRvbWFpbjpudWxsLHBhdGg6bnVsbCxzZWN1cmU6ITEsaHR0cE9ubHk6ITEsZXh0ZW5zaW9uczpudWxsLGhvc3RPbmx5Om51bGws''@;'; put 'put ''cGF0aElzRGVmYXVsdDpudWxsLGNyZWF0aW9uOm51bGwsbGFzdEFjY2Vzc2VkOm51bGwsc2FtZVNpdGU6Im5vbmUifTtjbGFzcyAkZXtjb25zdHJ1Y3RvcihtdD17fSl7WS5pbnNwZWN0LmN1c3RvbSYmKHRoaXNbWS5pbnNwZWN0LmN1c3RvbV09dGhpcy5pbnNwZWN0KSxPYmplY3QuYXNzaWdu''@;'; put 'put ''KHRoaXMsUWUsbXQpLHRoaXMuY3JlYXRpb249dGhpcy5jcmVhdGlvbnx8bmV3IERhdGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImNyZWF0aW9uSW5kZXgiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTorKyRlLmNvb2tpZXNDcmVhdGVkfSl9''@;'; put 'put ''aW5zcGVjdCgpe2NvbnN0IG10PURhdGUubm93KCksdnQ9bnVsbCE9dGhpcy5ob3N0T25seT90aGlzLmhvc3RPbmx5OiI/IixmdD10aGlzLmNyZWF0aW9uP210LXRoaXMuY3JlYXRpb24uZ2V0VGltZSgpKyJtcyI6Ij8iLEZ0PXRoaXMubGFzdEFjY2Vzc2VkP210LXRoaXMubGFzdEFjY2Vzc2Vk''@;'; put 'put ''LmdldFRpbWUoKSsibXMiOiI/IjtyZXR1cm5gQ29va2llPSIke3RoaXMudG9TdHJpbmcoKX07IGhvc3RPbmx5PSR7dnR9OyBhQWdlPSR7RnR9OyBjQWdlPSR7ZnR9ImB9dG9KU09OKCl7Y29uc3QgbXQ9e307Zm9yKGNvbnN0IHZ0IG9mICRlLnNlcmlhbGl6YWJsZVByb3BlcnRpZXMpdGhpc1t2''@;'; put 'put ''dF0hPT1RZVt2dF0mJigiZXhwaXJlcyI9PT12dHx8ImNyZWF0aW9uIj09PXZ0fHwibGFzdEFjY2Vzc2VkIj09PXZ0P210W3Z0XT1udWxsPT09dGhpc1t2dF0/bnVsbDoiSW5maW5pdHkiPT10aGlzW3Z0XT8iSW5maW5pdHkiOnRoaXNbdnRdLnRvSVNPU3RyaW5nKCk6Im1heEFnZSI9PT12dD9u''@;'; put 'put ''dWxsIT09dGhpc1t2dF0mJihtdFt2dF09dGhpc1t2dF09PTEvMHx8dGhpc1t2dF09PS0xLzA/dGhpc1t2dF0udG9TdHJpbmcoKTp0aGlzW3Z0XSk6dGhpc1t2dF0hPT1RZVt2dF0mJihtdFt2dF09dGhpc1t2dF0pKTtyZXR1cm4gbXR9Y2xvbmUoKXtyZXR1cm4gQ2UodGhpcy50b0pTT04oKSl9''@;'; put 'put ''dmFsaWRhdGUoKXtpZighYWUudGVzdCh0aGlzLnZhbHVlKXx8ISh0aGlzLmV4cGlyZXM9PTEvMHx8dGhpcy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZXx8dGUodGhpcy5leHBpcmVzKSl8fG51bGwhPXRoaXMubWF4QWdlJiZ0aGlzLm1heEFnZTw9MHx8bnVsbCE9dGhpcy5wYXRoJiYhdmUudGVz''@;'; put 'put ''dCh0aGlzLnBhdGgpKXJldHVybiExO2NvbnN0IG10PXRoaXMuY2RvbWFpbigpO3JldHVybiEobXQmJihtdC5tYXRjaCgvXC4kLyl8fG51bGw9PVcuZ2V0UHVibGljU3VmZml4KG10KSkpfXNldEV4cGlyZXMobXQpe3RoaXMuZXhwaXJlcz1tdCBpbnN0YW5jZW9mIERhdGU/bXQ6dGUobXQpfHwi''@;'; put 'put ''SW5maW5pdHkifXNldE1heEFnZShtdCl7dGhpcy5tYXhBZ2U9bXQ9PT0xLzB8fG10PT09LTEvMD9tdC50b1N0cmluZygpOm10fWNvb2tpZVN0cmluZygpe2xldCBtdD10aGlzLnZhbHVlO3JldHVybiBudWxsPT1tdCYmKG10PSIiKSwiIj09PXRoaXMua2V5P210OmAke3RoaXMua2V5fT0ke210''@;'; put 'put ''fWB9dG9TdHJpbmcoKXtsZXQgbXQ9dGhpcy5jb29raWVTdHJpbmcoKTtyZXR1cm4gdGhpcy5leHBpcmVzIT0xLzAmJih0aGlzLmV4cGlyZXMgaW5zdGFuY2VvZiBEYXRlP210Kz1gOyBFeHBpcmVzPSR7eCh0aGlzLmV4cGlyZXMpfWA6bXQrPWA7IEV4cGlyZXM9JHt0aGlzLmV4cGlyZXN9YCks''@;'; put 'put ''bnVsbCE9dGhpcy5tYXhBZ2UmJnRoaXMubWF4QWdlIT0xLzAmJihtdCs9YDsgTWF4LUFnZT0ke3RoaXMubWF4QWdlfWApLHRoaXMuZG9tYWluJiYhdGhpcy5ob3N0T25seSYmKG10Kz1gOyBEb21haW49JHt0aGlzLmRvbWFpbn1gKSx0aGlzLnBhdGgmJihtdCs9YDsgUGF0aD0ke3RoaXMucGF0''@;'; put 'put ''aH1gKSx0aGlzLnNlY3VyZSYmKG10Kz0iOyBTZWN1cmUiKSx0aGlzLmh0dHBPbmx5JiYobXQrPSI7IEh0dHBPbmx5IiksdGhpcy5zYW1lU2l0ZSYmIm5vbmUiIT09dGhpcy5zYW1lU2l0ZSYmKG10Kz1gOyBTYW1lU2l0ZT0keyRlLnNhbWVTaXRlQ2Fub25pY2FsW3RoaXMuc2FtZVNpdGUudG9M''@;'; put 'put ''b3dlckNhc2UoKV18fHRoaXMuc2FtZVNpdGV9YCksdGhpcy5leHRlbnNpb25zJiZ0aGlzLmV4dGVuc2lvbnMuZm9yRWFjaCh2dD0+e210Kz1gOyAke3Z0fWB9KSxtdH1UVEwobXQpe2lmKG51bGwhPXRoaXMubWF4QWdlKXJldHVybiB0aGlzLm1heEFnZTw9MD8wOjFlMyp0aGlzLm1heEFnZTts''@;'; put 'put ''ZXQgdnQ9dGhpcy5leHBpcmVzO3JldHVybiB2dCE9MS8wPyh2dCBpbnN0YW5jZW9mIERhdGV8fCh2dD10ZSh2dCl8fDEvMCksdnQ9PTEvMD8xLzA6dnQuZ2V0VGltZSgpLShtdHx8RGF0ZS5ub3coKSkpOjEvMH1leHBpcnlUaW1lKG10KXtpZihudWxsIT10aGlzLm1heEFnZSl7Y29uc3QgdnQ9''@;'; put 'put ''bXR8fHRoaXMuY3JlYXRpb258fG5ldyBEYXRlLGZ0PXRoaXMubWF4QWdlPD0wPy0xLzA6MWUzKnRoaXMubWF4QWdlO3JldHVybiB2dC5nZXRUaW1lKCkrZnR9cmV0dXJuIHRoaXMuZXhwaXJlcz09MS8wPzEvMDp0aGlzLmV4cGlyZXMuZ2V0VGltZSgpfWV4cGlyeURhdGUobXQpe2NvbnN0IHZ0''@;'; put 'put ''PXRoaXMuZXhwaXJ5VGltZShtdCk7cmV0dXJuIHZ0PT0xLzA/bmV3IERhdGUoU2UpOnZ0PT0tMS8wP25ldyBEYXRlKDApOm5ldyBEYXRlKHZ0KX1pc1BlcnNpc3RlbnQoKXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhBZ2V8fHRoaXMuZXhwaXJlcyE9MS8wfWNhbm9uaWNhbGl6ZWREb21haW4oKXty''@;'; put 'put ''ZXR1cm4gbnVsbD09dGhpcy5kb21haW4/bnVsbDpQKHRoaXMuZG9tYWluKX1jZG9tYWluKCl7cmV0dXJuIHRoaXMuY2Fub25pY2FsaXplZERvbWFpbigpfX0kZS5jb29raWVzQ3JlYXRlZD0wLCRlLnBhcnNlPUYsJGUuZnJvbUpTT049Q2UsJGUuc2VyaWFsaXphYmxlUHJvcGVydGllcz1PYmpl''@;'; put 'put ''Y3Qua2V5cyhRZSksJGUuc2FtZVNpdGVMZXZlbD17c3RyaWN0OjMsbGF4OjIsbm9uZToxfSwkZS5zYW1lU2l0ZUNhbm9uaWNhbD17c3RyaWN0OiJTdHJpY3QiLGxheDoiTGF4In07Y2xhc3MgZ3R7Y29uc3RydWN0b3IobXQsdnQ9e3JlamVjdFB1YmxpY1N1ZmZpeGVzOiEwfSl7ImJvb2xlYW4i''@;'; put 'put ''PT10eXBlb2YgdnQmJih2dD17cmVqZWN0UHVibGljU3VmZml4ZXM6dnR9KSx0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzPXZ0LnJlamVjdFB1YmxpY1N1ZmZpeGVzLHRoaXMuZW5hYmxlTG9vc2VNb2RlPSEhdnQubG9vc2VNb2RlLHRoaXMuYWxsb3dTcGVjaWFsVXNlRG9tYWluPSEhdnQuYWxs''@;'; put 'put ''b3dTcGVjaWFsVXNlRG9tYWluLHRoaXMuc3RvcmU9bXR8fG5ldyBlZSx0aGlzLnByZWZpeFNlY3VyaXR5PWZ1bmN0aW9uKGZ0KXtpZihudWxsIT1mdCl7Y29uc3QgRnQ9ZnQudG9Mb3dlckNhc2UoKTtzd2l0Y2goRnQpe2Nhc2UgRWUuU1RSSUNUOmNhc2UgRWUuU0lMRU5UOmNhc2UgRWUuRElT''@;'; put 'put ''QUJMRUQ6cmV0dXJuIEZ0fX1yZXR1cm4gRWUuU0lMRU5UfSh2dC5wcmVmaXhTZWN1cml0eSksdGhpcy5fY2xvbmVTeW5jPXl0KCJjbG9uZSIpLHRoaXMuX2ltcG9ydENvb2tpZXNTeW5jPXl0KCJfaW1wb3J0Q29va2llcyIpLHRoaXMuZ2V0Q29va2llc1N5bmM9eXQoImdldENvb2tpZXMiKSx0''@;'; put 'put ''aGlzLmdldENvb2tpZVN0cmluZ1N5bmM9eXQoImdldENvb2tpZVN0cmluZyIpLHRoaXMuZ2V0U2V0Q29va2llU3RyaW5nc1N5bmM9eXQoImdldFNldENvb2tpZVN0cmluZ3MiKSx0aGlzLnJlbW92ZUFsbENvb2tpZXNTeW5jPXl0KCJyZW1vdmVBbGxDb29raWVzIiksdGhpcy5zZXRDb29raWVT''@;'; put 'put ''eW5jPXl0KCJzZXRDb29raWUiKSx0aGlzLnNlcmlhbGl6ZVN5bmM9eXQoInNlcmlhbGl6ZSIpfXNldENvb2tpZShtdCx2dCxmdCxGdCl7bGV0IG9uO2NvbnN0IF90PVBlKHZ0KTsiZnVuY3Rpb24iPT10eXBlb2YgZnQmJihGdD1mdCxmdD17fSk7Y29uc3QgbnQ9UChfdC5ob3N0bmFtZSkscWU9''@;'; put 'put ''ZnQubG9vc2V8fHRoaXMuZW5hYmxlTG9vc2VNb2RlO2xldCBvdD1udWxsO2lmKGZ0LnNhbWVTaXRlQ29udGV4dCYmKG90PVRlKGZ0LnNhbWVTaXRlQ29udGV4dCksIW90KSlyZXR1cm4gRnQobmV3IEVycm9yKEllKSk7aWYoInN0cmluZyI9PXR5cGVvZiBtdHx8bXQgaW5zdGFuY2VvZiBTdHJp''@;'; put 'put ''bmcpe2lmKCEobXQ9JGUucGFyc2UobXQse2xvb3NlOnFlfSkpKXJldHVybiBvbj1uZXcgRXJyb3IoIkNvb2tpZSBmYWlsZWQgdG8gcGFyc2UiKSxGdChmdC5pZ25vcmVFcnJvcj9udWxsOm9uKX1lbHNlIGlmKCEobXQgaW5zdGFuY2VvZiAkZSkpcmV0dXJuIG9uPW5ldyBFcnJvcigiRmlyc3Qg''@;'; put 'put ''YXJndW1lbnQgdG8gc2V0Q29va2llIG11c3QgYmUgYSBDb29raWUgb2JqZWN0IG9yIHN0cmluZyIpLEZ0KGZ0Lmlnbm9yZUVycm9yP251bGw6b24pO2NvbnN0IFJ0PWZ0Lm5vd3x8bmV3IERhdGU7aWYodGhpcy5yZWplY3RQdWJsaWNTdWZmaXhlcyYmbXQuZG9tYWluJiZudWxsPT1XLmdldFB1''@;'; put 'put ''YmxpY1N1ZmZpeChtdC5jZG9tYWluKCkpKXJldHVybiBvbj1uZXcgRXJyb3IoIkNvb2tpZSBoYXMgZG9tYWluIHNldCB0byBhIHB1YmxpYyBzdWZmaXgiKSxGdChmdC5pZ25vcmVFcnJvcj9udWxsOm9uKTtpZihtdC5kb21haW4pe2lmKCFWKG50LG10LmNkb21haW4oKSwhMSkpcmV0dXJuIG9u''@;'; put 'put ''PW5ldyBFcnJvcihgQ29va2llIG5vdCBpbiB0aGlzIGhvc3QncyBkb21haW4uIENvb2tpZToke210LmNkb21haW4oKX0gUmVxdWVzdDoke250fWApLEZ0KGZ0Lmlnbm9yZUVycm9yP251bGw6b24pO251bGw9PW10Lmhvc3RPbmx5JiYobXQuaG9zdE9ubHk9ITEpfWVsc2UgbXQuaG9zdE9ubHk9''@;'; put 'put ''ITAsbXQuZG9tYWluPW50O2lmKG10LnBhdGgmJiIvIj09PW10LnBhdGhbMF18fChtdC5wYXRoPVQoX3QucGF0aG5hbWUpLG10LnBhdGhJc0RlZmF1bHQ9ITApLCExPT09ZnQuaHR0cCYmbXQuaHR0cE9ubHkpcmV0dXJuIG9uPW5ldyBFcnJvcigiQ29va2llIGlzIEh0dHBPbmx5IGFuZCB0aGlz''@;'; put 'put ''IGlzbid0IGFuIEhUVFAgQVBJIiksRnQoZnQuaWdub3JlRXJyb3I/bnVsbDpvbik7aWYoIm5vbmUiIT09bXQuc2FtZVNpdGUmJm90JiYibm9uZSI9PT1vdClyZXR1cm4gb249bmV3IEVycm9yKCJDb29raWUgaXMgU2FtZVNpdGUgYnV0IHRoaXMgaXMgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCIp''@;'; put 'put ''LEZ0KGZ0Lmlnbm9yZUVycm9yP251bGw6b24pO2NvbnN0IEN0PXRoaXMucHJlZml4U2VjdXJpdHk9PT1FZS5TSUxFTlQ7aWYodGhpcy5wcmVmaXhTZWN1cml0eSE9PUVlLkRJU0FCTEVEKXtsZXQgTnQsemU9ITE7aWYoIShZZT1tdCkua2V5LnN0YXJ0c1dpdGgoIl9fU2VjdXJlLSIpfHxZZS5z''@;'; put 'put ''ZWN1cmU/ZnVuY3Rpb24oWWUpe3JldHVybiFZZS5rZXkuc3RhcnRzV2l0aCgiX19Ib3N0LSIpfHxZZS5zZWN1cmUmJlllLmhvc3RPbmx5JiZudWxsIT1ZZS5wYXRoJiYiLyI9PT1ZZS5wYXRofShtdCl8fCh6ZT0hMCxOdD0iQ29va2llIGhhcyBfX0hvc3QgcHJlZml4IGJ1dCBlaXRoZXIgU2Vj''@;'; put 'put ''dXJlIG9yIEhvc3RPbmx5IGF0dHJpYnV0ZSBpcyBub3Qgc2V0IG9yIFBhdGggaXMgbm90ICcvJyIpOih6ZT0hMCxOdD0iQ29va2llIGhhcyBfX1NlY3VyZSBwcmVmaXggYnV0IFNlY3VyZSBhdHRyaWJ1dGUgaXMgbm90IHNldCIpLHplKXJldHVybiBGdChmdC5pZ25vcmVFcnJvcnx8Q3Q/bnVs''@;'; put 'put ''bDpuZXcgRXJyb3IoTnQpKX12YXIgWWU7Y29uc3QgY3Q9dGhpcy5zdG9yZTtjdC51cGRhdGVDb29raWV8fChjdC51cGRhdGVDb29raWU9ZnVuY3Rpb24oTnQsemUsWWUpe3RoaXMucHV0Q29va2llKHplLFllKX0pLGN0LmZpbmRDb29raWUobXQuZG9tYWluLG10LnBhdGgsbXQua2V5LGZ1bmN0''@;'; put 'put ''aW9uKE50LHplKXtpZihOdClyZXR1cm4gRnQoTnQpO2NvbnN0IFllPWZ1bmN0aW9uKEF0KXtpZihBdClyZXR1cm4gRnQoQXQpO0Z0KG51bGwsbXQpfTtpZih6ZSl7aWYoITE9PT1mdC5odHRwJiZ6ZS5odHRwT25seSlyZXR1cm4gTnQ9bmV3IEVycm9yKCJvbGQgQ29va2llIGlzIEh0dHBPbmx5''@;'; put 'put ''IGFuZCB0aGlzIGlzbid0IGFuIEhUVFAgQVBJIiksRnQoZnQuaWdub3JlRXJyb3I/bnVsbDpOdCk7bXQuY3JlYXRpb249emUuY3JlYXRpb24sbXQuY3JlYXRpb25JbmRleD16ZS5jcmVhdGlvbkluZGV4LG10Lmxhc3RBY2Nlc3NlZD1SdCxjdC51cGRhdGVDb29raWUoemUsbXQsWWUpfWVsc2Ug''@;'; put 'put ''bXQuY3JlYXRpb249bXQubGFzdEFjY2Vzc2VkPVJ0LGN0LnB1dENvb2tpZShtdCxZZSl9KX1nZXRDb29raWVzKG10LHZ0LGZ0KXtjb25zdCBGdD1QZShtdCk7ImZ1bmN0aW9uIj09dHlwZW9mIHZ0JiYoZnQ9dnQsdnQ9e30pO2NvbnN0IG9uPVAoRnQuaG9zdG5hbWUpLF90PUZ0LnBhdGhuYW1l''@;'; put 'put ''fHwiLyI7bGV0IG50PXZ0LnNlY3VyZTtudWxsIT1udHx8IUZ0LnByb3RvY29sfHwiaHR0cHM6IiE9RnQucHJvdG9jb2wmJiJ3c3M6IiE9RnQucHJvdG9jb2x8fChudD0hMCk7bGV0IHFlPTA7aWYodnQuc2FtZVNpdGVDb250ZXh0KXtjb25zdCBZZT1UZSh2dC5zYW1lU2l0ZUNvbnRleHQpO2lm''@;'; put 'put ''KHFlPSRlLnNhbWVTaXRlTGV2ZWxbWWVdLCFxZSlyZXR1cm4gZnQobmV3IEVycm9yKEllKSl9bGV0IG90PXZ0Lmh0dHA7bnVsbD09b3QmJihvdD0hMCk7Y29uc3QgUnQ9dnQubm93fHxEYXRlLm5vdygpLEN0PSExIT09dnQuZXhwaXJlLGN0PSEhdnQuYWxsUGF0aHMsTnQ9dGhpcy5zdG9yZTtm''@;'; put 'put ''dW5jdGlvbiB6ZShZZSl7aWYoWWUuaG9zdE9ubHkpe2lmKFllLmRvbWFpbiE9b24pcmV0dXJuITF9ZWxzZSBpZighVihvbixZZS5kb21haW4sITEpKXJldHVybiExO3JldHVybiEoIWN0JiYhcShfdCxZZS5wYXRoKXx8WWUuc2VjdXJlJiYhbnR8fFllLmh0dHBPbmx5JiYhb3R8fHFlJiYkZS5z''@;'; put 'put ''YW1lU2l0ZUxldmVsW1llLnNhbWVTaXRlfHwibm9uZSJdPnFlfHxDdCYmWWUuZXhwaXJ5VGltZSgpPD1SdCYmKE50LnJlbW92ZUNvb2tpZShZZS5kb21haW4sWWUucGF0aCxZZS5rZXksKCk9Pnt9KSwxKSl9TnQuZmluZENvb2tpZXMob24sY3Q/bnVsbDpfdCx0aGlzLmFsbG93U3BlY2lhbFVz''@;'; put 'put ''ZURvbWFpbiwoWWUsQXQpPT57aWYoWWUpcmV0dXJuIGZ0KFllKTtBdD1BdC5maWx0ZXIoemUpLCExIT09dnQuc29ydCYmKEF0PUF0LnNvcnQoRGUpKTtjb25zdCBqdD1uZXcgRGF0ZTtmb3IoY29uc3QgSnQgb2YgQXQpSnQubGFzdEFjY2Vzc2VkPWp0O2Z0KG51bGwsQXQpfSl9Z2V0Q29va2ll''@;'; put 'put ''U3RyaW5nKC4uLm10KXtjb25zdCB2dD1tdC5wb3AoKTttdC5wdXNoKGZ1bmN0aW9uKGZ0LEZ0KXtmdD92dChmdCk6dnQobnVsbCxGdC5zb3J0KERlKS5tYXAob249Pm9uLmNvb2tpZVN0cmluZygpKS5qb2luKCI7ICIpKX0pLHRoaXMuZ2V0Q29va2llcy5hcHBseSh0aGlzLG10KX1nZXRTZXRD''@;'; put 'put ''b29raWVTdHJpbmdzKC4uLm10KXtjb25zdCB2dD1tdC5wb3AoKTttdC5wdXNoKGZ1bmN0aW9uKGZ0LEZ0KXtmdD92dChmdCk6dnQobnVsbCxGdC5tYXAob249Pm9uLnRvU3RyaW5nKCkpKX0pLHRoaXMuZ2V0Q29va2llcy5hcHBseSh0aGlzLG10KX1zZXJpYWxpemUobXQpe2xldCB2dD10aGlz''@;'; put 'put ''LnN0b3JlLmNvbnN0cnVjdG9yLm5hbWU7Ik9iamVjdCI9PT12dCYmKHZ0PW51bGwpO2NvbnN0IGZ0PXt2ZXJzaW9uOmB0b3VnaC1jb29raWVAJHtKfWAsc3RvcmVUeXBlOnZ0LHJlamVjdFB1YmxpY1N1ZmZpeGVzOiEhdGhpcy5yZWplY3RQdWJsaWNTdWZmaXhlcyxjb29raWVzOltdfTtpZigh''@;'; put 'put ''dGhpcy5zdG9yZS5nZXRBbGxDb29raWVzfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5zdG9yZS5nZXRBbGxDb29raWVzKXJldHVybiBtdChuZXcgRXJyb3IoInN0b3JlIGRvZXMgbm90IHN1cHBvcnQgZ2V0QWxsQ29va2llcyBhbmQgY2Fubm90IGJlIHNlcmlhbGl6ZWQiKSk7dGhpcy5zdG9y''@;'; put 'put ''ZS5nZXRBbGxDb29raWVzKChGdCxvbik9PkZ0P210KEZ0KTooZnQuY29va2llcz1vbi5tYXAoX3Q9PihkZWxldGUoX3Q9X3QgaW5zdGFuY2VvZiAkZT9fdC50b0pTT04oKTpfdCkuY3JlYXRpb25JbmRleCxfdCkpLG10KG51bGwsZnQpKSl9dG9KU09OKCl7cmV0dXJuIHRoaXMuc2VyaWFsaXpl''@;'; put 'put ''U3luYygpfV9pbXBvcnRDb29raWVzKG10LHZ0KXtsZXQgZnQ9bXQuY29va2llcztpZighZnR8fCFBcnJheS5pc0FycmF5KGZ0KSlyZXR1cm4gdnQobmV3IEVycm9yKCJzZXJpYWxpemVkIGphciBoYXMgbm8gY29va2llcyBhcnJheSIpKTtmdD1mdC5zbGljZSgpO2NvbnN0IEZ0PW9uPT57aWYo''@;'; put 'put ''b24pcmV0dXJuIHZ0KG9uKTtpZighZnQubGVuZ3RoKXJldHVybiB2dChvbix0aGlzKTtsZXQgX3Q7dHJ5e190PUNlKGZ0LnNoaWZ0KCkpfWNhdGNoKG50KXtyZXR1cm4gdnQobnQpfWlmKG51bGw9PT1fdClyZXR1cm4gRnQobnVsbCk7dGhpcy5zdG9yZS5wdXRDb29raWUoX3QsRnQpfTtGdCgp''@;'; put 'put ''fWNsb25lKG10LHZ0KXsxPT09YXJndW1lbnRzLmxlbmd0aCYmKHZ0PW10LG10PW51bGwpLHRoaXMuc2VyaWFsaXplKChmdCxGdCk9PntpZihmdClyZXR1cm4gdnQoZnQpO2d0LmRlc2VyaWFsaXplKEZ0LG10LHZ0KX0pfWNsb25lU3luYyhtdCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIHRoaXMuX2Nsb25lU3luYygpO2lmKCFtdC5zeW5jaHJvbm91cyl0aHJvdyBuZXcgRXJyb3IoIkNvb2tpZUphciBjbG9uZSBkZXN0aW5hdGlvbiBzdG9yZSBpcyBub3Qgc3luY2hyb25vdXM7IHVzZSBhc3luYyBBUEkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy5fY2xvbmVTeW5jKG10KX1y''@;'; put 'put ''ZW1vdmVBbGxDb29raWVzKG10KXtjb25zdCB2dD10aGlzLnN0b3JlO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB2dC5yZW1vdmVBbGxDb29raWVzJiZ2dC5yZW1vdmVBbGxDb29raWVzIT09Ti5wcm90b3R5cGUucmVtb3ZlQWxsQ29va2llcylyZXR1cm4gdnQucmVtb3ZlQWxsQ29va2llcyhtdCk7''@;'; put 'put ''dnQuZ2V0QWxsQ29va2llcygoZnQsRnQpPT57aWYoZnQpcmV0dXJuIG10KGZ0KTtpZigwPT09RnQubGVuZ3RoKXJldHVybiBtdChudWxsKTtsZXQgb249MDtjb25zdCBfdD1bXTtmdW5jdGlvbiBudChxZSl7aWYocWUmJl90LnB1c2gocWUpLG9uKyssb249PT1GdC5sZW5ndGgpcmV0dXJuIG10''@;'; put 'put ''KF90Lmxlbmd0aD9fdFswXTpudWxsKX1GdC5mb3JFYWNoKHFlPT57dnQucmVtb3ZlQ29va2llKHFlLmRvbWFpbixxZS5wYXRoLHFlLmtleSxudCl9KX0pfXN0YXRpYyBkZXNlcmlhbGl6ZShtdCx2dCxmdCl7bGV0IEZ0O2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoJiYoZnQ9dnQsdnQ9bnVsbCks''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBtdCl7aWYoRnQ9eWUobXQpLEZ0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGZ0KEZ0KX1lbHNlIEZ0PW10O2NvbnN0IG9uPW5ldyBndCh2dCxGdC5yZWplY3RQdWJsaWNTdWZmaXhlcyk7b24uX2ltcG9ydENvb2tpZXMoRnQsX3Q9PntpZihfdClyZXR1cm4gZnQo''@;'; put 'put ''X3QpO2Z0KG51bGwsb24pfSl9c3RhdGljIGRlc2VyaWFsaXplU3luYyhtdCx2dCl7Y29uc3QgZnQ9InN0cmluZyI9PXR5cGVvZiBtdD9KU09OLnBhcnNlKG10KTptdCxGdD1uZXcgZ3QodnQsZnQucmVqZWN0UHVibGljU3VmZml4ZXMpO2lmKCFGdC5zdG9yZS5zeW5jaHJvbm91cyl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkNvb2tpZUphciBzdG9yZSBpcyBub3Qgc3luY2hyb25vdXM7IHVzZSBhc3luYyBBUEkgaW5zdGVhZC4iKTtyZXR1cm4gRnQuX2ltcG9ydENvb2tpZXNTeW5jKGZ0KSxGdH19ZnVuY3Rpb24geXQocHQpe3JldHVybiBmdW5jdGlvbiguLi5tdCl7aWYoIXRoaXMuc3RvcmUuc3lu''@;'; put 'put ''Y2hyb25vdXMpdGhyb3cgbmV3IEVycm9yKCJDb29raWVKYXIgc3RvcmUgaXMgbm90IHN5bmNocm9ub3VzOyB1c2UgYXN5bmMgQVBJIGluc3RlYWQuIik7bGV0IHZ0LGZ0O2lmKHRoaXNbcHRdKC4uLm10LChGdCxvbik9Pnt2dD1GdCxmdD1vbn0pLHZ0KXRocm93IHZ0O3JldHVybiBmdH19Z3Qu''@;'; put 'put ''ZnJvbUpTT049Z3QuZGVzZXJpYWxpemVTeW5jLFsiX2ltcG9ydENvb2tpZXMiLCJjbG9uZSIsImdldENvb2tpZXMiLCJnZXRDb29raWVTdHJpbmciLCJnZXRTZXRDb29raWVTdHJpbmdzIiwicmVtb3ZlQWxsQ29va2llcyIsInNlcmlhbGl6ZSIsInNldENvb2tpZSJdLmZvckVhY2gocHQ9Pntn''@;'; put 'put ''dC5wcm90b3R5cGVbcHRdPXNlKGd0LnByb3RvdHlwZVtwdF0pfSksZ3QuZGVzZXJpYWxpemU9c2UoZ3QuZGVzZXJpYWxpemUpLFEudmVyc2lvbj1KLFEuQ29va2llSmFyPWd0LFEuQ29va2llPSRlLFEuU3RvcmU9TixRLk1lbW9yeUNvb2tpZVN0b3JlPWVlLFEucGFyc2VEYXRlPXRlLFEuZm9y''@;'; put 'put ''bWF0RGF0ZT14LFEucGFyc2U9RixRLmZyb21KU09OPUNlLFEuZG9tYWluTWF0Y2g9VixRLmRlZmF1bHRQYXRoPVQsUS5wYXRoTWF0Y2g9cSxRLmdldFB1YmxpY1N1ZmZpeD1XLmdldFB1YmxpY1N1ZmZpeCxRLmNvb2tpZUNvbXBhcmU9RGUsUS5wZXJtdXRlRG9tYWluPVooNzMyNCkucGVybXV0''@;'; put 'put ''ZURvbWFpbixRLnBlcm11dGVQYXRoPWZ1bmN0aW9uKHB0KXtpZigiLyI9PT1wdClyZXR1cm5bIi8iXTtjb25zdCBtdD1bcHRdO2Zvcig7cHQubGVuZ3RoPjE7KXtjb25zdCB2dD1wdC5sYXN0SW5kZXhPZigiLyIpO2lmKDA9PT12dClicmVhaztwdD1wdC5zdWJzdHIoMCx2dCksbXQucHVzaChw''@;'; put 'put ''dCl9cmV0dXJuIG10LnB1c2goIi8iKSxtdH0sUS5jYW5vbmljYWxEb21haW49UCxRLlByZWZpeFNlY3VyaXR5RW51bT1FZX0sNTc2MTooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0e2Zyb21DYWxsYmFjazppZX09Wig3MDQxKSxsZT1aKDIyMjQpLnksWT1aKDczMjQpLnBlcm11dGVEb21h''@;'; put 'put ''aW4sVz1aKDg5NzEpLlUsTj1aKDk1MzkpO2NsYXNzIGVlIGV4dGVuZHMgbGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuc3luY2hyb25vdXM9ITAsdGhpcy5pZHg9e30sTi5pbnNwZWN0LmN1c3RvbSYmKHRoaXNbTi5pbnNwZWN0LmN1c3RvbV09dGhpcy5pbnNwZWN0KX1pbnNwZWN0KCl7''@;'; put 'put ''cmV0dXJuYHsgaWR4OiAke04uaW5zcGVjdCh0aGlzLmlkeCwhMSwyKX0gfWB9ZmluZENvb2tpZShKLHNlLGFlLGZlKXtyZXR1cm4gZmUobnVsbCx0aGlzLmlkeFtKXSYmdGhpcy5pZHhbSl1bc2VdP3RoaXMuaWR4W0pdW3NlXVthZV18fG51bGw6dm9pZCAwKX1maW5kQ29va2llcyhKLHNlLGFl''@;'; put 'put ''LGZlKXtjb25zdCBkZT1bXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYWUmJihmZT1hZSxhZT0hMSksIUopcmV0dXJuIGZlKG51bGwsW10pO2xldCB2ZTt2ZT1zZT9mdW5jdGlvbihTZSl7T2JqZWN0LmtleXMoU2UpLmZvckVhY2goSWU9PntpZihXKHNlLEllKSl7Y29uc3QgVGU9U2VbSWVdO2Zv''@;'; put 'put ''cihjb25zdCBFZSBpbiBUZSlkZS5wdXNoKFRlW0VlXSl9fSl9OmZ1bmN0aW9uKFNlKXtmb3IoY29uc3QgSWUgaW4gU2Upe2NvbnN0IFRlPVNlW0llXTtmb3IoY29uc3QgRWUgaW4gVGUpZGUucHVzaChUZVtFZV0pfX07Y29uc3QgQWU9WShKLGFlKXx8W0pdLGtlPXRoaXMuaWR4O0FlLmZvckVh''@;'; put 'put ''Y2goU2U9Pntjb25zdCBJZT1rZVtTZV07SWUmJnZlKEllKX0pLGZlKG51bGwsZGUpfXB1dENvb2tpZShKLHNlKXt0aGlzLmlkeFtKLmRvbWFpbl18fCh0aGlzLmlkeFtKLmRvbWFpbl09e30pLHRoaXMuaWR4W0ouZG9tYWluXVtKLnBhdGhdfHwodGhpcy5pZHhbSi5kb21haW5dW0oucGF0aF09''@;'; put 'put ''e30pLHRoaXMuaWR4W0ouZG9tYWluXVtKLnBhdGhdW0oua2V5XT1KLHNlKG51bGwpfXVwZGF0ZUNvb2tpZShKLHNlLGFlKXt0aGlzLnB1dENvb2tpZShzZSxhZSl9cmVtb3ZlQ29va2llKEosc2UsYWUsZmUpe3RoaXMuaWR4W0pdJiZ0aGlzLmlkeFtKXVtzZV0mJnRoaXMuaWR4W0pdW3NlXVth''@;'; put 'put ''ZV0mJmRlbGV0ZSB0aGlzLmlkeFtKXVtzZV1bYWVdLGZlKG51bGwpfXJlbW92ZUNvb2tpZXMoSixzZSxhZSl7cmV0dXJuIHRoaXMuaWR4W0pdJiYoc2U/ZGVsZXRlIHRoaXMuaWR4W0pdW3NlXTpkZWxldGUgdGhpcy5pZHhbSl0pLGFlKG51bGwpfXJlbW92ZUFsbENvb2tpZXMoSil7cmV0dXJu''@;'; put 'put ''IHRoaXMuaWR4PXt9LEoobnVsbCl9Z2V0QWxsQ29va2llcyhKKXtjb25zdCBzZT1bXSxhZT10aGlzLmlkeDtPYmplY3Qua2V5cyhhZSkuZm9yRWFjaChmZT0+e09iamVjdC5rZXlzKGFlW2ZlXSkuZm9yRWFjaChkZT0+e09iamVjdC5rZXlzKGFlW2ZlXVtkZV0pLmZvckVhY2godmU9PntudWxs''@;'; put 'put ''IT09dmUmJnNlLnB1c2goYWVbZmVdW2RlXVt2ZV0pfSl9KX0pLHNlLnNvcnQoKGZlLGRlKT0+KGZlLmNyZWF0aW9uSW5kZXh8fDApLShkZS5jcmVhdGlvbkluZGV4fHwwKSksSihudWxsLHNlKX19WyJmaW5kQ29va2llIiwiZmluZENvb2tpZXMiLCJwdXRDb29raWUiLCJ1cGRhdGVDb29raWUi''@;'; put 'put ''LCJyZW1vdmVDb29raWUiLCJyZW1vdmVDb29raWVzIiwicmVtb3ZlQWxsQ29va2llcyIsImdldEFsbENvb2tpZXMiXS5mb3JFYWNoKHE9PntlZVtxXT1pZShlZS5wcm90b3R5cGVbcV0pfSksUS5tPWVlfSw4OTcxOihVLFEpPT57InVzZSBzdHJpY3QiO1EuVT1mdW5jdGlvbihaLGllKXtyZXR1''@;'; put 'put ''cm4gaWU9PT1afHwwPT09Wi5pbmRleE9mKGllKSYmKCIvIj09PWllLnN1YnN0cigtMSl8fCIvIj09PVouc3Vic3RyKGllLmxlbmd0aCwxKSl9fSw3MzI0OihVLFEsWik9PnsidXNlIHN0cmljdCI7Y29uc3QgaWU9Wig3NTIpLGxlPVsibG9jYWwiXTtRLnBlcm11dGVEb21haW49ZnVuY3Rpb24o''@;'; put 'put ''WSxXKXtsZXQgTj1udWxsO2lmKFcpe2NvbnN0IHNlPVkuc3BsaXQoIi4iKTtOPWxlLmluY2x1ZGVzKHNlW3NlLmxlbmd0aC0xXSk/YCR7c2Vbc2UubGVuZ3RoLTJdfS4ke3NlW3NlLmxlbmd0aC0xXX1gOmllLmdldFB1YmxpY1N1ZmZpeChZKX1lbHNlIE49aWUuZ2V0UHVibGljU3VmZml4KFkp''@;'; put 'put ''O2lmKCFOKXJldHVybiBudWxsO2lmKE49PVkpcmV0dXJuW1ldO2NvbnN0IGVlPVkuc2xpY2UoMCwtKE4ubGVuZ3RoKzEpKS5zcGxpdCgiLiIpLnJldmVyc2UoKTtsZXQgcT1OO2NvbnN0IEo9W3FdO2Zvcig7ZWUubGVuZ3RoOylxPWAke2VlLnNoaWZ0KCl9LiR7cX1gLEoucHVzaChxKTtyZXR1''@;'; put 'put ''cm4gSn19LDc1MjooVSxRLFopPT57InVzZSBzdHJpY3QiO2NvbnN0IGllPVooNjI0NCk7US5nZXRQdWJsaWNTdWZmaXg9ZnVuY3Rpb24obGUpe3JldHVybiBpZS5nZXQobGUpfX0sMjIyNDooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtRLnk9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnN5bmNocm9u''@;'; put 'put ''b3VzPSExfWZpbmRDb29raWUoWixpZSxsZSxZKXt0aHJvdyBuZXcgRXJyb3IoImZpbmRDb29raWUgaXMgbm90IGltcGxlbWVudGVkIil9ZmluZENvb2tpZXMoWixpZSxsZSxZKXt0aHJvdyBuZXcgRXJyb3IoImZpbmRDb29raWVzIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXB1dENvb2tpZShaLGll''@;'; put 'put ''KXt0aHJvdyBuZXcgRXJyb3IoInB1dENvb2tpZSBpcyBub3QgaW1wbGVtZW50ZWQiKX11cGRhdGVDb29raWUoWixpZSxsZSl7dGhyb3cgbmV3IEVycm9yKCJ1cGRhdGVDb29raWUgaXMgbm90IGltcGxlbWVudGVkIil9cmVtb3ZlQ29va2llKFosaWUsbGUsWSl7dGhyb3cgbmV3IEVycm9yKCJy''@;'; put 'put ''ZW1vdmVDb29raWUgaXMgbm90IGltcGxlbWVudGVkIil9cmVtb3ZlQ29va2llcyhaLGllLGxlKXt0aHJvdyBuZXcgRXJyb3IoInJlbW92ZUNvb2tpZXMgaXMgbm90IGltcGxlbWVudGVkIil9cmVtb3ZlQWxsQ29va2llcyhaKXt0aHJvdyBuZXcgRXJyb3IoInJlbW92ZUFsbENvb2tpZXMgaXMg''@;'; put 'put ''bm90IGltcGxlbWVudGVkIil9Z2V0QWxsQ29va2llcyhaKXt0aHJvdyBuZXcgRXJyb3IoImdldEFsbENvb2tpZXMgaXMgbm90IGltcGxlbWVudGVkICh0aGVyZWZvcmUgamFyIGNhbm5vdCBiZSBzZXJpYWxpemVkKSIpfX19LDQ1NjpVPT57VS5leHBvcnRzPSI0LjAuMCJ9LDcwNDE6KFUsUSk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7US5mcm9tQ2FsbGJhY2s9ZnVuY3Rpb24oWil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSlyZXR1cm4gbmV3IFByb21pc2UoKGllLGxlKT0+e2Fy''@;'; put 'put ''Z3VtZW50c1thcmd1bWVudHMubGVuZ3RoXT0oWSxXKT0+e2lmKFkpcmV0dXJuIGxlKFkpO2llKFcpfSxhcmd1bWVudHMubGVuZ3RoKyssWi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtaLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sIm5hbWUiLHt2YWx1ZTpaLm5hbWV9KX0sUS5mcm9tUHJvbWlz''@;'; put 'put ''ZT1mdW5jdGlvbihaKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7Y29uc3QgaWU9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGllKXJldHVybiBaLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtaLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKS50aGVuKGxlPT5pZShudWxsLGxlKSxpZSl9LCJuYW1lIix7dmFsdWU6Wi5uYW1lfSl9fSw2NzI6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gaWU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24o''@;'; put 'put ''cSl7Zm9yKHZhciBKLHNlPTEsYWU9YXJndW1lbnRzLmxlbmd0aDtzZTxhZTtzZSsrKWZvcih2YXIgZmUgaW4gSj1hcmd1bWVudHNbc2VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChKLGZlKSYmKHFbZmVdPUpbZmVdKTtyZXR1cm4gcX0saWUuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfSxsZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24ocSxKLHNlLGFlKXtyZXR1cm4gbmV3KHNlfHwoc2U9UHJvbWlzZSkpKGZ1bmN0aW9uKGZlLGRlKXtmdW5jdGlvbiB2ZShTZSl7dHJ5e2tlKGFlLm5leHQoU2UpKX1jYXRjaChJZSl7ZGUoSWUpfX1mdW5jdGlvbiBBZShT''@;'; put 'put ''ZSl7dHJ5e2tlKGFlLnRocm93KFNlKSl9Y2F0Y2goSWUpe2RlKEllKX19ZnVuY3Rpb24ga2UoU2Upe3ZhciBJZTtTZS5kb25lP2ZlKFNlLnZhbHVlKTooSWU9U2UudmFsdWUsSWUgaW5zdGFuY2VvZiBzZT9JZTpuZXcgc2UoZnVuY3Rpb24oVGUpe1RlKEllKX0pKS50aGVuKHZlLEFlKX1rZSgo''@;'; put 'put ''YWU9YWUuYXBwbHkocSxKfHxbXSkpLm5leHQoKSl9KX0sWT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihxLEope3ZhciBzZSxhZSxmZSxkZSx2ZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZmZVswXSl0aHJvdyBmZVsxXTtyZXR1cm4gZmVbMV19LHRyeXM6W10sb3Bz''@;'; put 'put ''OltdfTtyZXR1cm4gZGU9e25leHQ6QWUoMCksdGhyb3c6QWUoMSkscmV0dXJuOkFlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZGU7ZnVuY3Rpb24gQWUoa2Upe3JldHVybiBmdW5jdGlvbihTZSl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKEllKXtpZihzZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt2ZTspdHJ5e2lmKHNlPTEsYWUmJihmZT0yJkllWzBdP2FlLnJldHVybjpJZVswXT9hZS50aHJvd3x8KChmZT1hZS5yZXR1cm4pJiZmZS5j''@;'; put 'put ''YWxsKGFlKSwwKTphZS5uZXh0KSYmIShmZT1mZS5jYWxsKGFlLEllWzFdKSkuZG9uZSlyZXR1cm4gZmU7c3dpdGNoKGFlPTAsZmUmJihJZT1bMiZJZVswXSxmZS52YWx1ZV0pLEllWzBdKXtjYXNlIDA6Y2FzZSAxOmZlPUllO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdmUubGFiZWwrKyx7dmFsdWU6''@;'; put 'put ''SWVbMV0sZG9uZTohMX07Y2FzZSA1OnZlLmxhYmVsKyssYWU9SWVbMV0sSWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpJZT12ZS5vcHMucG9wKCksdmUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGZlPShmZT12ZS50cnlzKS5sZW5ndGg+MCYmZmVbZmUubGVuZ3RoLTFdKXx8NiE9''@;'; put 'put ''PUllWzBdJiYyIT09SWVbMF0pKXt2ZT0wO2NvbnRpbnVlfWlmKDM9PT1JZVswXSYmKCFmZXx8SWVbMV0+ZmVbMF0mJkllWzFdPGZlWzNdKSl7dmUubGFiZWw9SWVbMV07YnJlYWt9aWYoNj09PUllWzBdJiZ2ZS5sYWJlbDxmZVsxXSl7dmUubGFiZWw9ZmVbMV0sZmU9SWU7YnJlYWt9aWYoZmUm''@;'; put 'put ''JnZlLmxhYmVsPGZlWzJdKXt2ZS5sYWJlbD1mZVsyXSx2ZS5vcHMucHVzaChJZSk7YnJlYWt9ZmVbMl0mJnZlLm9wcy5wb3AoKSx2ZS50cnlzLnBvcCgpO2NvbnRpbnVlfUllPUouY2FsbChxLHZlKX1jYXRjaChUZSl7SWU9WzYsVGVdLGFlPTB9ZmluYWxseXtzZT1mZT0wfWlmKDUmSWVbMF0p''@;'; put 'put ''dGhyb3cgSWVbMV07cmV0dXJue3ZhbHVlOkllWzBdP0llWzFdOnZvaWQgMCxkb25lOiEwfX0oW2tlLFNlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuQ29udGV4dE1hbmFnZXI9dm9pZCAwO3ZhciBXPVooNTkyOCksTj1aKDk3NzgpLGVl''@;'; put 'put ''PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcShKLHNlKXt0aGlzLnNlcnZlclVybD1KLHRoaXMucmVxdWVzdENsaWVudD1zZSx0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGNvbXB1dGUgY29udGV4dCIsIkRhdGEgTWluaW5nIGNvbXB1dGUgY29udGV4dCIs''@;'; put 'put ''IkltcG9ydCA5IHNlcnZpY2UgY29tcHV0ZSBjb250ZXh0IiwiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0IiwiU0FTIE1vZGVsIE1hbmFnZXIgY29tcHV0ZSBjb250ZXh0IiwiU0FTIFN0dWRpbyBjb21wdXRlIGNvbnRleHQiLCJTQVMgVmlzdWFsIEZvcmVjYXN0aW5nIGNvbXB1''@;'; put 'put ''dGUgY29udGV4dCJdLHRoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGxhdW5jaGVyIGNvbnRleHQiLCJEYXRhIE1pbmluZyBsYXVuY2hlciBjb250ZXh0IiwiSW1wb3J0IDkgc2VydmljZSBsYXVuY2hlciBjb250ZXh0IiwiSm9iIEZsb3cgRXhlY3V0''@;'; put 'put ''aW9uIGxhdW5jaGVyIGNvbnRleHQiLCJTQVMgSm9iIEV4ZWN1dGlvbiBsYXVuY2hlciBjb250ZXh0IiwiU0FTIE1vZGVsIE1hbmFnZXIgbGF1bmNoZXIgY29udGV4dCIsIlNBUyBTdHVkaW8gbGF1bmNoZXIgY29udGV4dCIsIlNBUyBWaXN1YWwgRm9yZWNhc3RpbmcgbGF1bmNoZXIgY29udGV4''@;'; put 'put ''dCJdLEomJigwLFcuaXNVcmwpKEopfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocS5wcm90b3R5cGUsImdldERlZmF1bHRDb21wdXRlQ29udGV4dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxLnByb3RvdHlwZSwiZ2V0RGVmYXVsdExhdW5jaGVyQ29udGV4dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0TGF1bmNoZXJDb250ZXh0c30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxxLnByb3Rv''@;'; put 'put ''dHlwZS5nZXRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oSil7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBzZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0''@;'; put 'put ''KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDAiKSxKKS5jYXRjaChmdW5jdGlvbihmZSl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGZlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dHMuICIpfSldO2Nhc2UgMTpyZXR1''@;'; put 'put ''cm5bMiwoKHNlPWFlLnNlbnQoKS5yZXN1bHQpJiZzZS5pdGVtcz9zZS5pdGVtczpbXSkubWFwKGZ1bmN0aW9uKGZlKXtyZXR1cm57Y3JlYXRlZEJ5OmZlLmNyZWF0ZWRCeSxpZDpmZS5pZCxuYW1lOmZlLm5hbWUsdmVyc2lvbjpmZS52ZXJzaW9uLGF0dHJpYnV0ZXM6e319fSldfX0pfSl9LHEu''@;'; put 'put ''cHJvdG90eXBlLmdldExhdW5jaGVyQ29udGV4dHM9ZnVuY3Rpb24oSil7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBzZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGll''@;'; put 'put ''bnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2xhdW5jaGVyL2NvbnRleHRzP2xpbWl0PTEwMDAwIiksSikuY2F0Y2goZnVuY3Rpb24oZmUpe3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShmZSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBsYXVuY2hlciBjb250ZXh0cy4gIil9KV07Y2Fz''@;'; put 'put ''ZSAxOnJldHVyblsyLCgoc2U9YWUuc2VudCgpLnJlc3VsdCkmJnNlLml0ZW1zP3NlLml0ZW1zOltdKS5tYXAoZnVuY3Rpb24oZmUpe3JldHVybntjcmVhdGVkQnk6ZmUuY3JlYXRlZEJ5LGlkOmZlLmlkLG5hbWU6ZmUubmFtZSx2ZXJzaW9uOmZlLnZlcnNpb24sYXR0cmlidXRlczp7fX19KV19''@;'; put 'put ''fSl9KX0scS5wcm90b3R5cGUuY3JlYXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSx2ZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBBZSxrZSxTZSxJZSxUZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKEVlKXtzd2l0Y2goRWUubGFi''@;'; put 'put ''ZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy52YWxpZGF0ZUNvbnRleHROYW1lKEopLHRoaXMuaXNEZWZhdWx0Q29udGV4dChKLHRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cywiQ29tcHV0ZSBjb250ZXh0ICciLmNvbmNhdChKLCInIGFscmVhZHkgZXhpc3RzLiIpKSxbNCx0aGlzLmdldENvbXB1''@;'; put 'put ''dGVDb250ZXh0cyhkZSldO2Nhc2UgMTppZihFZS5zZW50KCkuZmluZChmdW5jdGlvbihoZSl7cmV0dXJuIGhlLm5hbWU9PT1KfSkpdGhyb3cgbmV3IEVycm9yKCJDb21wdXRlIGNvbnRleHQgJyIuY29uY2F0KEosIicgYWxyZWFkeSBleGlzdHMuIikpO3JldHVybiBzZT90aGlzLmRlZmF1bHRM''@;'; put 'put ''YXVuY2hlckNvbnRleHRzLmluY2x1ZGVzKHNlKT9bMyw0XTpbNCx0aGlzLmdldExhdW5jaGVyQ29udGV4dHMoZGUpXTpbMyw0XTtjYXNlIDI6cmV0dXJuIEVlLnNlbnQoKS5maW5kKGZ1bmN0aW9uKGhlKXtyZXR1cm4gaGUubmFtZT09PXNlfSk/WzMsNF06KEFlPSJUaGUgbGF1bmNoZXIgY29u''@;'; put 'put ''dGV4dCBmb3IgIi5jb25jYXQoc2UpLFs0LHRoaXMuY3JlYXRlTGF1bmNoZXJDb250ZXh0KHNlLEFlLCJkaXJlY3QiLGRlKS5jYXRjaChmdW5jdGlvbihoZSl7dGhyb3cgbmV3IEVycm9yKCJFcnJvciB3aGlsZSBjcmVhdGluZyBsYXVuY2hlciBjb250ZXh0LiAiLmNvbmNhdChoZSkpfSldKTtj''@;'; put 'put ''YXNlIDM6aWYoIShrZT1FZS5zZW50KCkpfHwha2UubmFtZSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHdoaWxlIGNyZWF0aW5nIGxhdW5jaGVyIGNvbnRleHQuIik7c2U9a2UubmFtZSxFZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4gU2U9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29u''@;'; put 'put ''In0sZGUmJihTZS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoZGUpKSxJZT17cmV1c2VTZXJ2ZXJQcm9jZXNzZXM6ITB9LGFlJiYoSWU9aWUoaWUoe30sSWUpLHtydW5TZXJ2ZXJBczphZX0pKSxUZT17bmFtZTpKLGxhdW5jaENvbnRleHQ6e2NvbnRleHROYW1lOnNlfHwiIn0sYXR0''@;'; put 'put ''cmlidXRlczpJZX0sdmUmJnZlLmxlbmd0aD9UZS5hdXRob3JpemVkVXNlcnM9dmU6VGUuYXV0aG9yaXplQWxsQXV0aGVudGljYXRlZFVzZXJzPSEwLGZlJiYoVGUuZW52aXJvbm1lbnQ9e2F1dG9FeGVjTGluZXM6ZmV9KSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiIi5jb25jYXQodGhp''@;'; put 'put ''cy5zZXJ2ZXJVcmwsIi9jb21wdXRlL2NvbnRleHRzIiksVGUsZGUpLmNhdGNoKGZ1bmN0aW9uKGhlKXt0aHJvdygwLE4ucHJlZml4TWVzc2FnZSkoaGUsIkVycm9yIHdoaWxlIGNyZWF0aW5nIGNvbXB1dGUgY29udGV4dC4gIil9KV07Y2FzZSA1OnJldHVyblsyLEVlLnNlbnQoKS5yZXN1bHRd''@;'; put 'put ''fX0pfSl9LHEucHJvdG90eXBlLmNyZWF0ZUxhdW5jaGVyQ29udGV4dD1mdW5jdGlvbihKLHNlLGFlLGZlKXtyZXR1cm4gdm9pZCAwPT09YWUmJihhZT0iZGlyZWN0IiksbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGRlLHZlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oQWUp''@;'; put 'put ''e3N3aXRjaChBZS5sYWJlbCl7Y2FzZSAwOmlmKCFKKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0aGlzLmlzRGVmYXVsdENvbnRleHQoSix0aGlzLmRlZmF1bHRMYXVuY2hlckNvbnRleHRzLCJMYXVuY2hlciBjb250ZXh0ICciLmNvbmNhdChK''@;'; put 'put ''LCInIGFscmVhZHkgZXhpc3RzLiIpKSxbNCx0aGlzLmdldExhdW5jaGVyQ29udGV4dHMoZmUpXTtjYXNlIDE6aWYoQWUuc2VudCgpLmZpbmQoZnVuY3Rpb24oa2Upe3JldHVybiBrZS5uYW1lPT09Sn0pKXRocm93IG5ldyBFcnJvcigiTGF1bmNoZXIgY29udGV4dCAnIi5jb25jYXQoSiwiJyBh''@;'; put 'put ''bHJlYWR5IGV4aXN0cy4iKSk7cmV0dXJuIGRlPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGZlJiYoZGUuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KGZlKSksdmU9e25hbWU6SixkZXNjcmlwdGlvbjpzZSxsYXVuY2hUeXBlOmFlfSxbNCx0aGlzLnJlcXVlc3RD''@;'; put 'put ''bGllbnQucG9zdCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9sYXVuY2hlci9jb250ZXh0cyIpLHZlLGZlKS5jYXRjaChmdW5jdGlvbihrZSl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGtlLCJFcnJvciB3aGlsZSBjcmVhdGluZyBsYXVuY2hlciBjb250ZXh0LiAiKX0pXTtjYXNlIDI6''@;'; put 'put ''cmV0dXJuWzIsQWUuc2VudCgpLnJlc3VsdF19fSl9KX0scS5wcm90b3R5cGUuZWRpdENvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKEosc2UsYWUpe3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZmUsZGUsdmUsQWU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihrZSl7''@;'; put 'put ''c3dpdGNoKGtlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMudmFsaWRhdGVDb250ZXh0TmFtZShKKSx0aGlzLmlzRGVmYXVsdENvbnRleHQoSix0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHMsIkVkaXRpbmcgZGVmYXVsdCBTQVMgY29tcHV0ZSBjb250ZXh0cyBpcyBub3QgYWxsb3dlZC4i''@;'; put 'put ''LCEwKSxbNCx0aGlzLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKEosYWUpXTtjYXNlIDE6cmV0dXJuKGZlPWtlLnNlbnQoKSk/WzMsM106WzQsdGhpcy5nZXRDb21wdXRlQ29udGV4dEJ5SWQoc2UuaWQsYWUpXTtjYXNlIDI6ZmU9a2Uuc2VudCgpLGtlLmxhYmVsPTM7Y2FzZSAzOnJldHVybls0''@;'; put 'put ''LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cy8iKS5jb25jYXQoZmUuaWQpLGFlKS5jYXRjaChmdW5jdGlvbihTZSl7dGhyb3cgU2UmJjQwND09PVNlLnN0YXR1cz9uZXcgRXJyb3IoIlRoZSBjb250ZXh0ICciLmNvbmNh''@;'; put 'put ''dChKLCInIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuIikpOlNlfSldO2Nhc2UgNDpyZXR1cm4gZGU9a2Uuc2VudCgpLEFlPWRlLmV0YWcsWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnB1dCgiL2NvbXB1dGUvY29udGV4dHMvIi5jb25jYXQoKHZlPWRlLnJlc3VsdCkuaWQpLGllKGllKGll''@;'; put 'put ''KHt9LHZlKSxzZSkse2F0dHJpYnV0ZXM6aWUoaWUoe30sdmUuYXR0cmlidXRlcyksc2UuYXR0cmlidXRlcyl9KSxhZSx7IklmLU1hdGNoIjpBZX0pXTtjYXNlIDU6cmV0dXJuWzIsa2Uuc2VudCgpXX19KX0pfSxxLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZT1mdW5jdGlvbihK''@;'; put 'put ''LHNlKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGFlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oZmUpe3N3aXRjaChmZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCcvY29t''@;'; put 'put ''cHV0ZS9jb250ZXh0cz9maWx0ZXI9ZXEobmFtZSwgIicpLmNvbmNhdChKLCciKScpLHNlKS5jYXRjaChmdW5jdGlvbihkZSl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGRlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dCBieSBuYW1lLiAiKX0pXTtjYXNlIDE6aWYoIShh''@;'; put 'put ''ZT1mZS5zZW50KCkucmVzdWx0KXx8IWFlLml0ZW1zfHwhYWUuaXRlbXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGNvbnRleHQgJyIuY29uY2F0KEosIicgd2FzIG5vdCBmb3VuZCBhdCAnIikuY29uY2F0KHRoaXMuc2VydmVyVXJsLCInLiIpKTtyZXR1cm5bMixhZS5pdGVtc1swXV19''@;'; put 'put ''fSl9KX0scS5wcm90b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRCeUlkPWZ1bmN0aW9uKEosc2Upe3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVl''@;'; put 'put ''c3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KEopLHNlKS5jYXRjaChmdW5jdGlvbihmZSl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGZlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dCBieSBpZC4g''@;'; put 'put ''Iil9KV07Y2FzZSAxOnJldHVyblsyLGFlLnNlbnQoKS5yZXN1bHRdfX0pfSl9LHEucHJvdG90eXBlLmdldEV4ZWN1dGFibGVDb250ZXh0cz1mdW5jdGlvbihKLHNlKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGFlLGZlLGRlLHZlLEFlLGtlLFNlLFRlLEVl''@;'; put 'put ''O3JldHVybiBZKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cz9saW1pdD0xMDAwMCIpLG51bGw9PXNlP3ZvaWQgMDpzZS5hY2Nl''@;'; put 'put ''c3NfdG9rZW4pLmNhdGNoKGZ1bmN0aW9uKE8pe3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShPLCJFcnJvciB3aGlsZSBmZXRjaGluZyBjb21wdXRlIGNvbnRleHRzLiIpfSldO2Nhc2UgMTphZT1oZS5zZW50KCkucmVzdWx0LGRlPVtdLHZlPShmZT1hZS5pdGVtc3x8W10pLm1hcChmdW5jdGlv''@;'; put 'put ''bihPKXt2YXIgej1bIiVwdXQgJj1zeXN1c2VyaWQ7Il07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEooInRlc3QtIi5jb25jYXQoTy5uYW1lKSx6LE8ubmFtZSxzZSxudWxsLCExLCEwLCEwKS5jYXRjaChmdW5jdGlvbihuZSl7cmV0dXJuIG5lfSl9fSksQWU9W10sa2U9MCxTZT12ZSxoZS5s''@;'; put 'put ''YWJlbD0yO2Nhc2UgMjpyZXR1cm4ga2U8U2UubGVuZ3RoPyhFZT0oVGU9QWUpLnB1c2gsWzQsKDAsU2Vba2VdKSgpXSk6WzMsNV07Y2FzZSAzOkVlLmFwcGx5KFRlLFtoZS5zZW50KCldKSxoZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4ga2UrKyxbMywyXTtjYXNlIDU6cmV0dXJuIEFlLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oTyx6KXtpZihPJiZPLmxvZyl0cnl7dmFyIHRlPSIiLHg9Ty5sb2cuc3BsaXQoIlxuIikuZmluZChmdW5jdGlvbihQKXtyZXR1cm4gUC5zdGFydHNXaXRoKCJTWVNVU0VSSUQ9Iil9KTt4JiYodGU9eC5yZXBsYWNlKCJTWVNVU0VSSUQ9IiwiIiksZGUucHVzaCh7Y3JlYXRl''@;'; put 'put ''ZEJ5OmZlW3pdLmNyZWF0ZWRCeSxpZDpmZVt6XS5pZCxuYW1lOmZlW3pdLm5hbWUsdmVyc2lvbjpmZVt6XS52ZXJzaW9uLGF0dHJpYnV0ZXM6e3N5c1VzZXJJZDp0ZX19KSl9Y2F0Y2goUCl7dGhyb3cgUH19KSxbMixkZV19fSl9KX0scS5wcm90b3R5cGUuZGVsZXRlQ29tcHV0ZUNvbnRleHQ9''@;'; put 'put ''ZnVuY3Rpb24oSixzZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBhZSxmZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGRlKXtzd2l0Y2goZGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy52YWxpZGF0ZUNvbnRleHROYW1lKEopLHRoaXMuaXNEZWZhdWx0''@;'; put 'put ''Q29udGV4dChKLHRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cywiRGVsZXRpbmcgZGVmYXVsdCBTQVMgY29tcHV0ZSBjb250ZXh0cyBpcyBub3QgYWxsb3dlZC4iLCEwKSxhZT17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxzZSYmKGFlLkF1dGhvcml6YXRpb249IkJlYXJl''@;'; put 'put ''ciAiLmNvbmNhdChzZSkpLFs0LHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUoSixzZSldO2Nhc2UgMTpyZXR1cm4gZmU9ZGUuc2VudCgpLFs0LHRoaXMucmVxdWVzdENsaWVudC5kZWxldGUoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cy8iKS5jb25jYXQo''@;'; put 'put ''ZmUuaWQpLHNlKV07Y2FzZSAyOnJldHVyblsyLGRlLnNlbnQoKV19fSl9KX0scS5wcm90b3R5cGUudmFsaWRhdGVDb250ZXh0TmFtZT1mdW5jdGlvbihKKXtpZighSil0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyByZXF1aXJlZC4iKX0scS5wcm90b3R5cGUuaXNEZWZhdWx0Q29u''@;'; put 'put ''dGV4dD1mdW5jdGlvbihKLHNlLGFlLGZlKXtpZih2b2lkIDA9PT1zZSYmKHNlPXRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cyksdm9pZCAwPT09YWUmJihhZT0iIiksdm9pZCAwPT09ZmUmJihmZT0hMSksc2UuaW5jbHVkZXMoSikpdGhyb3cgbmV3IEVycm9yKCIiLmNvbmNhdChhZSkuY29u''@;'; put 'put ''Y2F0KGZlPyJcbkRlZmF1bHQgY29udGV4dHM6IitzZS5tYXAoZnVuY3Rpb24oZGUsdmUpe3JldHVybiJcbiIuY29uY2F0KHZlKzEsIi4gIikuY29uY2F0KGRlKX0pOiIiKSl9LHF9KCk7US5Db250ZXh0TWFuYWdlcj1lZX0sODMwNjpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBp''@;'; put 'put ''ZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oYWUsZmUsZGUsdmUpe3JldHVybiBuZXcoZGV8fChkZT1Qcm9taXNlKSkoZnVuY3Rpb24oQWUsa2Upe2Z1bmN0aW9uIFNlKEVlKXt0cnl7VGUodmUubmV4dChFZSkpfWNhdGNoKGhlKXtrZShoZSl9fWZ1bmN0aW9uIEllKEVlKXt0cnl7''@;'; put 'put ''VGUodmUudGhyb3coRWUpKX1jYXRjaChoZSl7a2UoaGUpfX1mdW5jdGlvbiBUZShFZSl7dmFyIGhlO0VlLmRvbmU/QWUoRWUudmFsdWUpOihoZT1FZS52YWx1ZSxoZSBpbnN0YW5jZW9mIGRlP2hlOm5ldyBkZShmdW5jdGlvbihPKXtPKGhlKX0pKS50aGVuKFNlLEllKX1UZSgodmU9dmUuYXBw''@;'; put 'put ''bHkoYWUsZmV8fFtdKSkubmV4dCgpKX0pfSxsZT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihhZSxmZSl7dmFyIGRlLHZlLEFlLGtlLFNlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkFlWzBdKXRocm93IEFlWzFdO3JldHVybiBBZVsxXX0sdHJ5czpbXSxvcHM6W119''@;'; put 'put ''O3JldHVybiBrZT17bmV4dDpJZSgwKSx0aHJvdzpJZSgxKSxyZXR1cm46SWUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihrZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxrZTtmdW5jdGlvbiBJZShUZSl7cmV0dXJuIGZ1bmN0aW9uKEVlKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oaGUpe2lmKGRlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1NlOyl0cnl7aWYoZGU9MSx2ZSYmKEFlPTImaGVbMF0/dmUucmV0dXJuOmhlWzBdP3ZlLnRocm93fHwoKEFlPXZlLnJldHVybikmJkFlLmNhbGwo''@;'; put 'put ''dmUpLDApOnZlLm5leHQpJiYhKEFlPUFlLmNhbGwodmUsaGVbMV0pKS5kb25lKXJldHVybiBBZTtzd2l0Y2godmU9MCxBZSYmKGhlPVsyJmhlWzBdLEFlLnZhbHVlXSksaGVbMF0pe2Nhc2UgMDpjYXNlIDE6QWU9aGU7YnJlYWs7Y2FzZSA0OnJldHVybiBTZS5sYWJlbCsrLHt2YWx1ZTpoZVsx''@;'; put 'put ''XSxkb25lOiExfTtjYXNlIDU6U2UubGFiZWwrKyx2ZT1oZVsxXSxoZT1bMF07Y29udGludWU7Y2FzZSA3OmhlPVNlLm9wcy5wb3AoKSxTZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoQWU9KEFlPVNlLnRyeXMpLmxlbmd0aD4wJiZBZVtBZS5sZW5ndGgtMV0pfHw2IT09aGVb''@;'; put 'put ''MF0mJjIhPT1oZVswXSkpe1NlPTA7Y29udGludWV9aWYoMz09PWhlWzBdJiYoIUFlfHxoZVsxXT5BZVswXSYmaGVbMV08QWVbM10pKXtTZS5sYWJlbD1oZVsxXTticmVha31pZig2PT09aGVbMF0mJlNlLmxhYmVsPEFlWzFdKXtTZS5sYWJlbD1BZVsxXSxBZT1oZTticmVha31pZihBZSYmU2Uu''@;'; put 'put ''bGFiZWw8QWVbMl0pe1NlLmxhYmVsPUFlWzJdLFNlLm9wcy5wdXNoKGhlKTticmVha31BZVsyXSYmU2Uub3BzLnBvcCgpLFNlLnRyeXMucG9wKCk7Y29udGludWV9aGU9ZmUuY2FsbChhZSxTZSl9Y2F0Y2goTyl7aGU9WzYsT10sdmU9MH1maW5hbGx5e2RlPUFlPTB9aWYoNSZoZVswXSl0aHJv''@;'; put 'put ''dyBoZVsxXTtyZXR1cm57dmFsdWU6aGVbMF0/aGVbMV06dm9pZCAwLGRvbmU6ITB9fShbVGUsRWVdKX19fSxZPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oYWUsZmUsZGUpe2lmKGRlfHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHZlLEFlPTAsa2U9ZmUubGVuZ3Ro''@;'; put 'put ''O0FlPGtlO0FlKyspIXZlJiZBZSBpbiBmZXx8KHZlfHwodmU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZmUsMCxBZSkpLHZlW0FlXT1mZVtBZV0pO3JldHVybiBhZS5jb25jYXQodmV8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZlKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShR''@;'; put 'put ''LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLlNBUzlBcGlDbGllbnQ9dm9pZCAwO3ZhciBXPVooNzc1NyksTj1aKDYyMzApLGVlPVooNzk1KSxxPVooNTkyOCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGFlKGZlLGRlLHZlKXt0aGlzLnNlcnZlclVybD1mZSx0aGlzLmpvYnNQYXRoPWRlLGZl''@;'; put 'put ''JiYoMCxxLmlzVXJsKShmZSksdGhpcy5yZXF1ZXN0Q2xpZW50PW5ldyBlZS5TYXM5UmVxdWVzdENsaWVudChmZSx2ZSl9cmV0dXJuIGFlLnByb3RvdHlwZS5nZXRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm57c2VydmVyVXJsOnRoaXMuc2VydmVyVXJsfX0sYWUucHJvdG90eXBlLnNldENvbmZp''@;'; put 'put ''Zz1mdW5jdGlvbihmZSl7ZmUmJih0aGlzLnNlcnZlclVybD1mZSl9LGFlLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKGZlLGRlLHZlKXtyZXR1cm4gaWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEFlLGtlLFNlLEllLFRlLEVlLGhlO3JldHVybiBsZSh0aGlz''@;'; put 'put ''LGZ1bmN0aW9uKE8pe3N3aXRjaChPLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmxvZ2luKGRlLHZlLHRoaXMuam9ic1BhdGgpXTtjYXNlIDE6cmV0dXJuIE8uc2VudCgpLEFlPVsiZGF0YSBfbnVsbF87IiwiZmlsZSBfd2Vib3V0OyIsInB1dCAnRXhlY3V0ZWQg''@;'; put 'put ''c2FzanMgcnVuJzsiLCJydW47Il0sa2U9c2UoWShZKFtdLGZlLCEwKSxBZSwhMCkuam9pbigiXG4iKSksU2U9Ii9Vc2VyIEZvbGRlcnMvIi5jb25jYXQoZGUsIi9NeSBGb2xkZXIvc2FzanMvcnVubmVyIiksSWU9Im11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIra2UuZ2V0Qm91bmRh''@;'; put 'put ''cnkoKSxUZT1rZS5nZXRMZW5ndGhTeW5jKCksRWU9eyJjYWNoZS1jb250cm9sIjoibm8tY2FjaGUiLEFjY2VwdDoiKi8qIiwiQ29udGVudC1UeXBlIjpJZSwiQ29udGVudC1MZW5ndGgiOlRlLENvbm5lY3Rpb246ImtlZXAtYWxpdmUifSxoZT0iIi5jb25jYXQodGhpcy5qb2JzUGF0aCwiLz8i''@;'; put 'put ''KS5jb25jYXQoIl9wcm9ncmFtPSIrU2UrIiZfZGVidWc9bG9nIiksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoaGUsa2Usdm9pZCAwLEllLEVlKV07Y2FzZSAyOnJldHVyblsyLE8uc2VudCgpLnJlc3VsdF19fSl9KX0sYWV9KCk7US5TQVM5QXBpQ2xpZW50PUo7dmFyIHNlPWZ1bmN0aW9u''@;'; put 'put ''KGFlKXt2YXIgZmU9bmV3IE4sZGU9InNhc2pzLWV4ZWN1dGUtc2FzOS0iLmNvbmNhdCgoMCxXLmdlbmVyYXRlVGltZXN0YW1wKSgiIiksIi5zYXMiKTtyZXR1cm4gZmUuYXBwZW5kKGRlLGFlLHtmaWxlbmFtZTpkZSxjb250ZW50VHlwZToidGV4dC9wbGFpbiJ9KSxmZX19LDk4MjE6ZnVuY3Rp''@;'; put 'put ''b24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KSxsZT1aKDUxMDgpLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEVlLGhlLE8seil7cmV0dXJuIG5ldyhPfHwoTz1Qcm9taXNlKSkoZnVuY3Rpb24obmUsdGUpe2Z1bmN0aW9uIHgoVCl7dHJ5e1Yoei5uZXh0KFQp''@;'; put 'put ''KX1jYXRjaChTKXt0ZShTKX19ZnVuY3Rpb24gUChUKXt0cnl7Vih6LnRocm93KFQpKX1jYXRjaChTKXt0ZShTKX19ZnVuY3Rpb24gVihUKXt2YXIgUztULmRvbmU/bmUoVC52YWx1ZSk6KFM9VC52YWx1ZSxTIGluc3RhbmNlb2YgTz9TOm5ldyBPKGZ1bmN0aW9uKEYpe0YoUyl9KSkudGhlbih4''@;'; put 'put ''LFApfVYoKHo9ei5hcHBseShFZSxoZXx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oRWUsaGUpe3ZhciBPLHosbmUsdGUseD17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZuZVswXSl0aHJvdyBuZVsxXTtyZXR1cm4gbmVbMV19LHRyeXM6''@;'; put 'put ''W10sb3BzOltdfTtyZXR1cm4gdGU9e25leHQ6UCgwKSx0aHJvdzpQKDEpLHJldHVybjpQKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYodGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksdGU7ZnVuY3Rpb24gUChWKXtyZXR1cm4gZnVuY3Rpb24oVCl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKFMpe2lmKE8pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7eDspdHJ5e2lmKE89MSx6JiYobmU9MiZTWzBdP3oucmV0dXJuOlNbMF0/ei50aHJvd3x8KChuZT16LnJldHVybikmJm5lLmNhbGwoeiksMCk6''@;'; put 'put ''ei5uZXh0KSYmIShuZT1uZS5jYWxsKHosU1sxXSkpLmRvbmUpcmV0dXJuIG5lO3N3aXRjaCh6PTAsbmUmJihTPVsyJlNbMF0sbmUudmFsdWVdKSxTWzBdKXtjYXNlIDA6Y2FzZSAxOm5lPVM7YnJlYWs7Y2FzZSA0OnJldHVybiB4LmxhYmVsKysse3ZhbHVlOlNbMV0sZG9uZTohMX07Y2FzZSA1''@;'; put 'put ''OngubGFiZWwrKyx6PVNbMV0sUz1bMF07Y29udGludWU7Y2FzZSA3OlM9eC5vcHMucG9wKCkseC50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgobmU9KG5lPXgudHJ5cykubGVuZ3RoPjAmJm5lW25lLmxlbmd0aC0xXSl8fDYhPT1TWzBdJiYyIT09U1swXSkpe3g9MDtjb250aW51''@;'; put 'put ''ZX1pZigzPT09U1swXSYmKCFuZXx8U1sxXT5uZVswXSYmU1sxXTxuZVszXSkpe3gubGFiZWw9U1sxXTticmVha31pZig2PT09U1swXSYmeC5sYWJlbDxuZVsxXSl7eC5sYWJlbD1uZVsxXSxuZT1TO2JyZWFrfWlmKG5lJiZ4LmxhYmVsPG5lWzJdKXt4LmxhYmVsPW5lWzJdLHgub3BzLnB1c2go''@;'; put 'put ''Uyk7YnJlYWt9bmVbMl0mJngub3BzLnBvcCgpLHgudHJ5cy5wb3AoKTtjb250aW51ZX1TPWhlLmNhbGwoRWUseCl9Y2F0Y2goRil7Uz1bNixGXSx6PTB9ZmluYWxseXtPPW5lPTB9aWYoNSZTWzBdKXRocm93IFNbMV07cmV0dXJue3ZhbHVlOlNbMF0/U1sxXTp2b2lkIDAsZG9uZTohMH19KFtW''@;'; put 'put ''LFRdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TQVNWaXlhQXBpQ2xpZW50PXZvaWQgMDt2YXIgTj1aKDU5MjgpLGVlPVooNjIzMCkscT1aKDEzOTUpLEo9Wig2OTAzKSxzZT1aKDY3MiksYWU9Wig5MDk3KSxmZT1aKDk3NzgpLGRlPVoo''@;'; put 'put ''MTM0MyksdmU9Wig3MDQpLEFlPVooNjQ5Niksa2U9Wig1NDAxKSxTZT1aKDM1NjkpLEllPVooMzY2KSxUZT1mdW5jdGlvbigpe2Z1bmN0aW9uIEVlKGhlLE8seixuZSl7dGhpcy5zZXJ2ZXJVcmw9aGUsdGhpcy5yb290Rm9sZGVyTmFtZT1PLHRoaXMuY29udGV4dE5hbWU9eix0aGlzLnJlcXVl''@;'; put 'put ''c3RDbGllbnQ9bmUsdGhpcy5fZGVidWc9ITEsdGhpcy5zZXNzaW9uTWFuYWdlcj1uZXcgSi5TZXNzaW9uTWFuYWdlcih0aGlzLnNlcnZlclVybCx0aGlzLmNvbnRleHROYW1lLHRoaXMucmVxdWVzdENsaWVudCksdGhpcy5jb250ZXh0TWFuYWdlcj1uZXcgc2UuQ29udGV4dE1hbmFnZXIodGhp''@;'; put 'put ''cy5zZXJ2ZXJVcmwsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLmZvbGRlck1hcD1uZXcgTWFwLGhlJiYoMCxOLmlzVXJsKShoZSl9cmV0dXJuIEVlLnByb3RvdHlwZS5hcHBlbmRSZXF1ZXN0PWZ1bmN0aW9uKGhlLE8seil7dGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoaGUsTyx6''@;'; put 'put ''KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEVlLnByb3RvdHlwZSwiZGVidWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWd9LHNldDpmdW5jdGlvbihoZSl7dGhpcy5fZGVidWc9aGUsdGhpcy5zZXNzaW9uTWFuYWdlciYmKHRoaXMuc2Vzc2lvbk1hbmFnZXIuZGVidWc9aGUp''@;'; put 'put ''fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLEVlLnByb3RvdHlwZS5nZXRKb2JzSW5Gb2xkZXI9ZnVuY3Rpb24oaGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nh''@;'; put 'put ''c2UgMDpyZXR1cm4gTz0oMCxOLmlzUmVsYXRpdmVQYXRoKShoZSk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5hbWUsIi8iKS5jb25jYXQoaGUpOmhlLHRoaXMuZm9sZGVyTWFwLmdldChPKT9bMix0aGlzLmZvbGRlck1hcC5nZXQoTyldOls0LHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoTyld''@;'; put 'put ''O2Nhc2UgMTpyZXR1cm4gei5zZW50KCksWzIsdGhpcy5mb2xkZXJNYXAuZ2V0KE8pXX19KX0pfSxFZS5wcm90b3R5cGUuZ2V0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue3NlcnZlclVybDp0aGlzLnNlcnZlclVybCxyb290Rm9sZGVyTmFtZTp0aGlzLnJvb3RGb2xkZXJOYW1lfX0sRWUucHJv''@;'; put 'put ''dG90eXBlLnNldENvbmZpZz1mdW5jdGlvbihoZSxPKXtoZSYmKHRoaXMuc2VydmVyVXJsPWhlKSxPJiYodGhpcy5yb290Rm9sZGVyTmFtZT1PKX0sRWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0cz1mdW5jdGlvbihoZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0Q29tcHV0ZUNvbnRleHRzKGhlKV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxFZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENvbXB1''@;'; put 'put ''dGVDb250ZXh0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHRNYW5hZ2VyLmdldERlZmF1bHRDb21wdXRlQ29udGV4dHN9LEVlLnByb3RvdHlwZS5nZXRMYXVuY2hlckNvbnRleHRzPWZ1bmN0aW9uKGhlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gVyh0aGlzLGZ1bmN0aW9uKE8pe3N3aXRjaChPLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5nZXRMYXVuY2hlckNvbnRleHRzKGhlKV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxFZS5wcm90b3R5cGUuZ2V0RXhlY3V0YWJsZUNvbnRleHRz''@;'; put 'put ''PWZ1bmN0aW9uKGhlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuIE89dGhpcy5leGVjdXRlU2NyaXB0LmJpbmQodGhpcyksWzQsdGhpcy5jb250ZXh0TWFu''@;'; put 'put ''YWdlci5nZXRFeGVjdXRhYmxlQ29udGV4dHMoTyxoZSldO2Nhc2UgMTpyZXR1cm5bMix6LnNlbnQoKV19fSl9KX0sRWUucHJvdG90eXBlLmNyZWF0ZVNlc3Npb249ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHosbmUsdGU7cmV0dXJu''@;'; put 'put ''IFcodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiB6PXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LE8mJih6LkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChPKSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiL2NvbXB1dGUv''@;'; put 'put ''Y29udGV4dHM/bGltaXQ9MTAwMDAiLE8pXTtjYXNlIDE6aWYobmU9eC5zZW50KCkucmVzdWx0LCEodGU9bmUuaXRlbXMmJm5lLml0ZW1zLmxlbmd0aD9uZS5pdGVtcy5maW5kKGZ1bmN0aW9uKFApe3JldHVybiBQLm5hbWU9PT1oZX0pOm51bGwpKXRocm93IG5ldyBFcnJvcigiRXhlY3V0aW9u''@;'; put 'put ''IGNvbnRleHQgIi5jb25jYXQoaGUsIiBub3QgZm91bmQuIikpO3JldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIvY29tcHV0ZS9jb250ZXh0cy8iLmNvbmNhdCh0ZS5pZCwiL3Nlc3Npb25zIikse30sTyldO2Nhc2UgMjpyZXR1cm5bMix4LnNlbnQoKS5yZXN1bHRdfX0pfSl9LEVl''@;'; put 'put ''LnByb3RvdHlwZS5jcmVhdGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihoZSxPLHosbmUsdGUseCl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihQKXtzd2l0Y2goUC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29udGV4''@;'; put 'put ''dE1hbmFnZXIuY3JlYXRlQ29tcHV0ZUNvbnRleHQoaGUsTyx6LG5lLHRlLHgpXTtjYXNlIDE6cmV0dXJuWzIsUC5zZW50KCldfX0pfSl9LEVlLnByb3RvdHlwZS5jcmVhdGVMYXVuY2hlckNvbnRleHQ9ZnVuY3Rpb24oaGUsTyx6LG5lKXtyZXR1cm4gdm9pZCAwPT09eiYmKHo9ImRpcmVjdCIp''@;'; put 'put ''LFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5jcmVhdGVMYXVuY2hlckNvbnRleHQoaGUsTyx6LG5lKV07Y2FzZSAxOnJldHVyblsyLHRl''@;'; put 'put ''LnNlbnQoKV19fSl9KX0sRWUucHJvdG90eXBlLmVkaXRDb21wdXRlQ29udGV4dD1mdW5jdGlvbihoZSxPLHope3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRo''@;'; put 'put ''aXMuY29udGV4dE1hbmFnZXIuZWRpdENvbXB1dGVDb250ZXh0KGhlLE8seildO2Nhc2UgMTpyZXR1cm5bMixuZS5zZW50KCldfX0pfSl9LEVlLnByb3RvdHlwZS5kZWxldGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihoZSxPKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5kZWxldGVDb21wdXRlQ29udGV4dChoZSxPKV07Y2FzZSAxOnJldHVyblsyLHouc2VudCgpXX19KX0pfSxFZS5wcm90b3R5cGUuZXhlY3V0ZVNjcmlw''@;'; put 'put ''dD1mdW5jdGlvbihoZSxPLHosbmUsdGUseCxQLFYsVCxTLEYpe3JldHVybiB2b2lkIDA9PT10ZSYmKHRlPW51bGwpLHZvaWQgMD09PXgmJih4PSExKSx2b2lkIDA9PT1QJiYoUD0hMSksdm9pZCAwPT09ViYmKFY9ITApLHZvaWQgMD09PVMmJihTPSExKSxZKHRoaXMsdm9pZCAwLHZvaWQgMCxm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeWUpe3JldHVyblsyLCgwLGtlLmV4ZWN1dGVTY3JpcHQpKHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNlc3Npb25NYW5hZ2VyLHRoaXMucm9vdEZvbGRlck5hbWUsaGUsTyx6LG5lLHRlLHgsUCxWLFQsUyxGKV19KX0pfSxFZS5wcm90''@;'; put 'put ''b3R5cGUuZ2V0Rm9sZGVyPWZ1bmN0aW9uKGhlLE8pe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvZm9sZGVycy9mb2xk''@;'; put 'put ''ZXJzL0BpdGVtP3BhdGg9Ii5jb25jYXQoaGUpLE8pLnRoZW4oZnVuY3Rpb24obmUpe3JldHVybiBuZS5yZXN1bHR9KV07Y2FzZSAxOnJldHVyblsyLHouc2VudCgpXX19KX0pfSxFZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihoZSxPLHosbmUsdGUpe3JldHVybiBZKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4LFA7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihWKXtzd2l0Y2goVi5sYWJlbCl7Y2FzZSAwOmlmKCF6JiYhbmUpdGhyb3cgbmV3IEVycm9yKCJQYXRoIG9yIFVSSSBvZiB0aGUgcGFyZW50IGZvbGRlciBpcyByZXF1aXJlZC4iKTtyZXR1cm4gbmV8''@;'; put 'put ''fCF6P1szLDJdOls0LHRoaXMuZ2V0Rm9sZGVyVXJpKHosdGUpXTtjYXNlIDE6bmU9Vi5zZW50KCksVi5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4geD17QWNjZXB0OiJhcHBsaWNhdGlvbi92bmQuc2FzLmZpbGUranNvbiIsIkNvbnRlbnQtRGlzcG9zaXRpb24iOidmaWxlbmFtZT0iJy5jb25jYXQo''@;'; put 'put ''aGUsJyI7Jyl9LChQPW5ldyBlZSkuYXBwZW5kKCJmaWxlIixPLGhlKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiL2ZpbGVzL2ZpbGVzP3BhcmVudEZvbGRlclVyaT0iLmNvbmNhdChuZSwiJnR5cGVEZWZOYW1lPWZpbGUjcmF3VXBsb2FkIiksUCx0ZSwibXVsdGlwYXJ0L2Zvcm0tZGF0''@;'; put 'put ''YTsgYm91bmRhcnk9IitQLl9ib3VuZGFyeSx4KV07Y2FzZSAzOnJldHVyblsyLFYuc2VudCgpLnJlc3VsdF19fSl9KX0sRWUucHJvdG90eXBlLmNyZWF0ZUZvbGRlcj1mdW5jdGlvbihoZSxPLHosbmUsdGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4LFAs''@;'; put 'put ''VixULEY7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih5ZSl7c3dpdGNoKHllLmxhYmVsKXtjYXNlIDA6aWYoeD1pZS5sb2dnZXJ8fGxlLCFPJiYheil0aHJvdyBuZXcgRXJyb3IoIlBhdGggb3IgVVJJIG9mIHRoZSBwYXJlbnQgZm9sZGVyIGlzIHJlcXVpcmVkLiIpO3JldHVybiB6fHwhTz9bMyw2''@;'; put 'put ''XTpbNCx0aGlzLmdldEZvbGRlclVyaShPLG5lKV07Y2FzZSAxOmlmKHo9eWUuc2VudCgpKXJldHVyblszLDNdO2lmKHguaW5mbygiUGFyZW50IGZvbGRlciBhdCBwYXRoICciLmNvbmNhdChPLCInIGlzIG5vdCBwcmVzZW50LiIpKSxQPU8uc3Vic3RyaW5nKDAsTy5sYXN0SW5kZXhPZigiLyIp''@;'; put 'put ''KSxWPSIiLmNvbmNhdChPLnNwbGl0KCIvIikucG9wKCkpLCIiPT09UCl0aHJvdyBuZXcgcS5Sb290Rm9sZGVyTm90Rm91bmRFcnJvcihPLHRoaXMuc2VydmVyVXJsLG5lKTtyZXR1cm4geC5pbmZvKCJDcmVhdGluZyBwYXJlbnQgZm9sZGVyOlxuJyIuY29uY2F0KFYsIicgaW4gJyIpLmNvbmNh''@;'; put 'put ''dChQLCInIikpLFs0LHRoaXMuY3JlYXRlRm9sZGVyKFYsUCx2b2lkIDAsbmUpXTtjYXNlIDI6cmV0dXJuIFQ9eWUuc2VudCgpLHguaW5mbygiUGFyZW50IGZvbGRlciAnIi5jb25jYXQoViwiJyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY3JlYXRlZC4iKSksej0iL2ZvbGRlcnMvZm9sZGVycy8i''@;'; put 'put ''LmNvbmNhdChULmlkKSxbMyw2XTtjYXNlIDM6cmV0dXJuIHRlJiZuZT9bNCx0aGlzLmdldEZvbGRlclVyaShPKyIvIitoZSxuZSldOlszLDZdO2Nhc2UgNDpyZXR1cm4geWUuc2VudCgpP1s0LHRoaXMuZGVsZXRlRm9sZGVyKE8rIi8iK2hlLG5lKV06WzMsNl07Y2FzZSA1OnllLnNlbnQoKSx5''@;'; put 'put ''ZS5sYWJlbD02O2Nhc2UgNjpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiL2ZvbGRlcnMvZm9sZGVycz9wYXJlbnRGb2xkZXJVcmk9Ii5jb25jYXQoeikse25hbWU6aGUsdHlwZToiZm9sZGVyIn0sbmUpXTtjYXNlIDc6cmV0dXJuIEY9eWUuc2VudCgpLnJlc3VsdCxbNCx0aGlz''@;'; put 'put ''LnBvcHVsYXRlRm9sZGVyTWFwKCIiLmNvbmNhdChPLCIvIikuY29uY2F0KGhlKSxuZSldO2Nhc2UgODpyZXR1cm4geWUuc2VudCgpLFsyLEZdfX0pfSl9LEVlLnByb3RvdHlwZS5jcmVhdGVKb2JEZWZpbml0aW9uPWZ1bmN0aW9uKGhlLE8seixuZSx0ZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOmlmKCF6JiYhbmUpdGhyb3cgbmV3IEVycm9yKCJQYXRoIHRvIG9yIFVSSSBvZiB0aGUgcGFyZW50IGZvbGRlciBpcyByZXF1aXJlZC4iKTtyZXR1cm4gbmV8fCF6P1szLDJd''@;'; put 'put ''Ols0LHRoaXMuZ2V0Rm9sZGVyVXJpKHosdGUpXTtjYXNlIDE6bmU9eC5zZW50KCkseC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9qb2JEZWZpbml0aW9ucy9kZWZpbml0aW9ucz9wYXJlbnRGb2xkZXJV''@;'; put 'put ''cmk9IikuY29uY2F0KG5lKSx7bmFtZTpoZSxwYXJhbWV0ZXJzOlt7bmFtZToiX2FkZGplc2JlZ2luZW5kbWFjcm9zIix0eXBlOiJDSEFSQUNURVIiLGRlZmF1bHRWYWx1ZToiZmFsc2UifV0sdHlwZToiQ29tcHV0ZSIsY29kZTpPfSx0ZSldO2Nhc2UgMzpyZXR1cm5bMix4LnNlbnQoKV19fSl9''@;'; put 'put ''KX0sRWUucHJvdG90eXBlLmdldEF1dGhDb2RlPWZ1bmN0aW9uKGhlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTyx6PXRoaXM7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIE89IiIuY29uY2F0KHRo''@;'; put 'put ''aXMuc2VydmVyVXJsLCIvU0FTTG9nb24vb2F1dGgvYXV0aG9yaXplP2NsaWVudF9pZD0iKS5jb25jYXQoaGUsIiZyZXNwb25zZV90eXBlPWNvZGUiKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KE8sdm9pZCAwLCJ0ZXh0L3BsYWluIikudGhlbihmdW5jdGlvbih0ZSl7cmV0dXJuIHRlLnJl''@;'; put 'put ''c3VsdH0pLnRoZW4oZnVuY3Rpb24odGUpe3JldHVybiBZKHosdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4LFAsVixUO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oUyl7c3dpdGNoKFMubGFiZWwpe2Nhc2UgMDpyZXR1cm4geD0iIiwoMCxhZS5pc0F1dGhvcml6ZUZvcm1SZXF1aXJlZCko''@;'; put 'put ''dGUpP1s0LHRoaXMucmVxdWVzdENsaWVudC5hdXRob3JpemUodGUpXTpbMywyXTtjYXNlIDE6cmV0dXJuIFA9Uy5zZW50KCksVj1QLnNwbGl0KCI8Ym9keT4iKVsxXS5zcGxpdCgiPC9ib2R5PiIpWzBdLChUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9VixbMix4''@;'; put 'put ''PVQucXVlcnlTZWxlY3RvcigiLmluZm9ib3ggaDQiKS5pbm5lclRleHRdO2Nhc2UgMjpyZXR1cm4gVj10ZS5zcGxpdCgiPGJvZHk+IilbMV0uc3BsaXQoIjwvYm9keT4iKVswXSwoVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPVYsVCYmKHg9VC5xdWVyeVNlbGVj''@;'; put 'put ''dG9yKCIuaW5mb2JveCBoNCIpLmlubmVyVGV4dCksWzIseF19fSl9KX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQoKV19fSl9KX0sRWUucHJvdG90eXBlLmdldEFjY2Vzc1Rva2VuPWZ1bmN0aW9uKGhlLE8seil7cmV0dXJuIFkodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihuZSl7cmV0dXJuWzIsKDAsU2UuZ2V0QWNjZXNzVG9rZW5Gb3JWaXlhKSh0aGlzLnJlcXVlc3RDbGllbnQsaGUsTyx6KV19KX0pfSxFZS5wcm90b3R5cGUucmVmcmVzaFRva2Vucz1mdW5jdGlvbihoZSxP''@;'; put 'put ''LHope3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24obmUpe3JldHVyblsyLCgwLEllLnJlZnJlc2hUb2tlbnNGb3JWaXlhKSh0aGlzLnJlcXVlc3RDbGllbnQsaGUsTyx6KV19KX0pfSxFZS5wcm90b3R5cGUuZGVsZXRlQ2xpZW50''@;'; put 'put ''PWZ1bmN0aW9uKGhlLE8pe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6LG5lO3JldHVybiBXKHRoaXMsZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB6PXRoaXMuc2VydmVyVXJsKyIvb2F1dGgvY2xpZW50cy8iLmNvbmNhdCho''@;'; put 'put ''ZSksbmU9e30sTyYmKG5lLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChPKSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmRlbGV0ZSh6LE8pXTtjYXNlIDE6cmV0dXJuWzIsdGUuc2VudCgpLnJlc3VsdF19fSl9KX0sRWUucHJvdG90eXBlLmV4ZWN1dGVDb21wdXRlSm9iPWZ1bmN0aW9u''@;'; put 'put ''KGhlLE8seixuZSx0ZSx4LFAsVixULFMpe3JldHVybiB2b2lkIDA9PT14JiYoeD0hMCksdm9pZCAwPT09UCYmKFA9ITEpLHZvaWQgMD09PVQmJihUPSExKSxZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBGLHllLENlLERlLFBlLFFlLCRlLGd0LHl0LHB0LG10O3JldHVybiBX''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24odnQpe3N3aXRjaCh2dC5sYWJlbCl7Y2FzZSAwOnJldHVybiBGPSh0ZXx8e30pLmFjY2Vzc190b2tlbix0ZT9bNCwoMCx2ZS5nZXRUb2tlbnMpKHRoaXMucmVxdWVzdENsaWVudCx0ZSldOlszLDJdO2Nhc2UgMTpGPXZ0LnNlbnQoKS5hY2Nlc3NfdG9rZW4sdnQubGFi''@;'; put 'put ''ZWw9MjtjYXNlIDI6aWYoKDAsTi5pc1JlbGF0aXZlUGF0aCkoaGUpJiYhdGhpcy5yb290Rm9sZGVyTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlJlbGF0aXZlIHBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJvb3QgZm9sZGVyIG5hbWUiKTtyZXR1cm4geWU9aGUuc3Bs''@;'; put 'put ''aXQoIi8iKSxDZT15ZS5wb3AoKSxEZT15ZS5qb2luKCIvIiksUGU9KDAsTi5pc1JlbGF0aXZlUGF0aCkoaGUpPyIiLmNvbmNhdCh0aGlzLnJvb3RGb2xkZXJOYW1lLCIvIikuY29uY2F0KERlKTpEZSxbNCx0aGlzLnBvcHVsYXRlRm9sZGVyTWFwKFBlLEYpLmNhdGNoKGZ1bmN0aW9uKGZ0KXt0''@;'; put 'put ''aHJvdygwLGZlLnByZWZpeE1lc3NhZ2UpKGZ0LCJFcnJvciB3aGlsZSBwb3B1bGF0aW5nIGZvbGRlciBtYXAuICIpfSldO2Nhc2UgMzppZih2dC5zZW50KCksIShRZT10aGlzLmZvbGRlck1hcC5nZXQoUGUpKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBmb2xkZXIgJyIuY29uY2F0KFBlLCInIHdh''@;'; put 'put ''cyBub3QgZm91bmQgb24gJyIpLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiJyIpKTtpZighKCRlPW51bGw9PVFlP3ZvaWQgMDpRZS5maW5kKGZ1bmN0aW9uKGZ0KXtyZXR1cm4gZnQubmFtZT09PUNlfSkpKXRocm93IG5ldyBFcnJvcigiSm9iIHdhcyBub3QgZm91bmQuIik7aWYoZ3Q9bnVsbD09''@;'; put 'put ''JGU/dm9pZCAwOiRlLmNvZGUpcmV0dXJuWzMsNV07aWYoISh5dD1udWxsPT0kZT92b2lkIDA6JGUubGlua3MuZmluZChmdW5jdGlvbihmdCl7cmV0dXJuImdldFJlc291cmNlIj09PWZ0LnJlbH0pKSl0aHJvdyBuZXcgRXJyb3IoIlVSSSBvZiBqb2IgZGVmaW5pdGlvbiB3YXMgbm90IGZvdW5k''@;'; put 'put ''LiIpO3JldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoeXQuaHJlZiksRikuY2F0Y2goZnVuY3Rpb24oZnQpe3Rocm93KDAsZmUucHJlZml4TWVzc2FnZSkoZnQsIkVycm9yIHdoaWxlIGdldHRpbmcgam9iIGRlZmluaXRpb24u''@;'; put 'put ''ICIpfSldO2Nhc2UgNDpwdD12dC5zZW50KCkucmVzdWx0LCRlLmNvZGU9Z3Q9cHQuY29kZSx2dC5sYWJlbD01O2Nhc2UgNTpyZXR1cm4gZ3R8fChndD0iIiksbXQ9Z3QucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnNwbGl0KCJcbiIpLFs0LHRoaXMuZXhlY3V0ZVNjcmlwdChoZSxtdCxPLHRlLG5l''@;'; put 'put ''LHosUCx4LFYsVCxTKV07Y2FzZSA2OnJldHVyblsyLHZ0LnNlbnQoKV19fSl9KX0sRWUucHJvdG90eXBlLmV4ZWN1dGVKb2I9ZnVuY3Rpb24oaGUsTyx6LG5lLHRlKXt2YXIgeCxQLFY7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFQsUyxGLHllLENlLERlLFBl''@;'; put 'put ''LFFlLCRlLGd0LHl0LHB0LG10LHZ0LGZ0LEZ0LG9uLF90LG50O3JldHVybiBXKHRoaXMsZnVuY3Rpb24ocWUpe3N3aXRjaChxZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBUPSh0ZXx8e30pLmFjY2Vzc190b2tlbix0ZT9bNCwoMCx2ZS5nZXRUb2tlbnMpKHRoaXMucmVxdWVzdENsaWVudCx0ZSld''@;'; put 'put ''OlszLDJdO2Nhc2UgMTpUPXFlLnNlbnQoKS5hY2Nlc3NfdG9rZW4scWUubGFiZWw9MjtjYXNlIDI6aWYoKDAsTi5pc1JlbGF0aXZlUGF0aCkoaGUpJiYhdGhpcy5yb290Rm9sZGVyTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlJlbGF0aXZlIHBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgc3Bl''@;'; put 'put ''Y2lmeWluZyBhIHJvb3QgZm9sZGVyIG5hbWUuIik7cmV0dXJuIFM9aGUuc3BsaXQoIi8iKSxGPVMucG9wKCkseWU9Uy5qb2luKCIvIiksQ2U9KDAsTi5pc1JlbGF0aXZlUGF0aCkoaGUpPyIiLmNvbmNhdCh0aGlzLnJvb3RGb2xkZXJOYW1lLCIvIikuY29uY2F0KHllKTp5ZSxbNCx0aGlzLnBv''@;'; put 'put ''cHVsYXRlRm9sZGVyTWFwKENlLFQpXTtjYXNlIDM6aWYocWUuc2VudCgpLCEoRGU9dGhpcy5mb2xkZXJNYXAuZ2V0KENlKSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgZm9sZGVyICciLmNvbmNhdChDZSwiJyB3YXMgbm90IGZvdW5kIG9uICciKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIicuIikp''@;'; put 'put ''O3JldHVybiBQZT1udWxsPT1EZT92b2lkIDA6RGUuZmluZChmdW5jdGlvbihvdCl7cmV0dXJuIG90Lm5hbWU9PT1GfSksUWU9W10sbmUmJk9iamVjdC5rZXlzKG5lKS5sZW5ndGg/WzQsdGhpcy51cGxvYWRUYWJsZXMobmUsVCldOlszLDVdO2Nhc2UgNDpRZT1xZS5zZW50KCkscWUubGFiZWw9''@;'; put 'put ''NTtjYXNlIDU6aWYoIVBlKXRocm93IG5ldyBFcnJvcigiSm9iIHdhcyBub3QgZm91bmQuIik7cmV0dXJuICRlPW51bGw9PT0oeD1udWxsPT1QZT92b2lkIDA6UGUubGlua3MuZmluZChmdW5jdGlvbihvdCl7cmV0dXJuImdldFJlc291cmNlIj09PW90LnJlbH0pKXx8dm9pZCAwPT09eD92b2lk''@;'; put 'put ''IDA6eC5ocmVmLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoJGUpLFQpXTtjYXNlIDY6cmV0dXJuIGd0PXFlLnNlbnQoKS5yZXN1bHQseXQ9e19jb250ZXh0TmFtZTpPLF9wcm9ncmFtOiIiLmNvbmNhdChDZSwiLyIpLmNvbmNhdChG''@;'; put 'put ''KSxfd2ViaW5fZmlsZV9jb3VudDpRZS5sZW5ndGgsX09NSVRKU09OTElTVElORzohMCxfT01JVEpTT05MT0c6ITAsX09NSVRTRVNTSU9OUkVTVUxUUzohMCxfT01JVFRFWFRMSVNUSU5HOiEwLF9PTUlUVEVYVExPRzohMH0seiYmKHl0Ll9PTUlUVEVYVExPRz0iZmFsc2UiLHl0Ll9PTUlUU0VT''@;'; put 'put ''U0lPTlJFU1VMVFM9ImZhbHNlIix5dC5fREVCVUc9MTMxKSxRZS5mb3JFYWNoKGZ1bmN0aW9uKG90LFJ0KXt5dFsiX3dlYmluX2ZpbGV1cmkiLmNvbmNhdChSdCsxKV09Ii9maWxlcy9maWxlcy8iLmNvbmNhdChvdC5maWxlLmlkKSx5dFsiX3dlYmluX25hbWUiLmNvbmNhdChSdCsxKV09b3Qu''@;'; put 'put ''dGFibGVOYW1lfSkscHQ9e25hbWU6ImV4ZWMtIi5jb25jYXQoRiksZGVzY3JpcHRpb246IlBvd2VyZWQgYnkgU0FTanMiLGpvYkRlZmluaXRpb246Z3QsYXJndW1lbnRzOnl0fSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9qb2JFeGVjdXRp''@;'; put 'put ''b24vam9icz9fYWN0aW9uPXdhaXQiKSxwdCxUKV07Y2FzZSA3OnJldHVybiBtdD1xZS5zZW50KCkucmVzdWx0LFs0LHRoaXMucG9sbEpvYlN0YXRlKG10LHRlKS5jYXRjaChmdW5jdGlvbihvdCl7dGhyb3coMCxmZS5wcmVmaXhNZXNzYWdlKShvdCwiRXJyb3Igd2hpbGUgcG9sbGluZyBqb2Ig''@;'; put 'put ''c3RhdHVzLiAiKX0pXTtjYXNlIDg6cmV0dXJuIHZ0PXFlLnNlbnQoKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2pvYkV4ZWN1dGlvbi9qb2JzLyIpLmNvbmNhdChtdC5pZCksVCldO2Nhc2UgOTpyZXR1cm4gZnQ9cWUuc2VudCgpLnJlc3Vs''@;'; put 'put ''dCxfdD1mdC5yZXN1bHRzWyJfd2Vib3V0Lmpzb24iXSxudD1mdC5saW5rcy5maW5kKGZ1bmN0aW9uKG90KXtyZXR1cm4ibG9nIj09PW90LnJlbH0pLF90P1s0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoX3QsIi9jb250ZW50IiksVCwi''@;'; put 'put ''dGV4dC9wbGFpbiIpXTpbMywxMV07Y2FzZSAxMDpGdD1xZS5zZW50KCkscWUubGFiZWw9MTE7Y2FzZSAxMTpyZXR1cm4geiYmbnQ/WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChudC5ocmVmLCIvY29udGVudCIpLFQpLnRoZW4oZnVu''@;'; put 'put ''Y3Rpb24ob3Qpe3JldHVybiBvdC5yZXN1bHQuaXRlbXMubWFwKGZ1bmN0aW9uKFJ0KXtyZXR1cm4gUnQubGluZX0pLmpvaW4oIlxuIil9KV06WzMsMTNdO2Nhc2UgMTI6b249cWUuc2VudCgpLHFlLmxhYmVsPTEzO2Nhc2UgMTM6aWYoImZhaWxlZCI9PT12dCl0aHJvdyBuZXcgcS5Kb2JFeGVj''@;'; put 'put ''dXRpb25FcnJvcihudWxsPT09KFA9ZnQuZXJyb3IpfHx2b2lkIDA9PT1QP3ZvaWQgMDpQLmVycm9yQ29kZSxudWxsPT09KFY9ZnQuZXJyb3IpfHx2b2lkIDA9PT1WP3ZvaWQgMDpWLm1lc3NhZ2Usb24pO3JldHVyblsyLHtyZXN1bHQ6bnVsbD09RnQ/dm9pZCAwOkZ0LnJlc3VsdCxsb2c6b259''@;'; put 'put ''XX19KX0pfSxFZS5wcm90b3R5cGUucG9wdWxhdGVGb2xkZXJNYXA9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHosdGUseDtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHo9KDAs''@;'; put 'put ''Ti5pc1JlbGF0aXZlUGF0aCkoaGUpPyIiLmNvbmNhdCh0aGlzLnJvb3RGb2xkZXJOYW1lLCIvIikuY29uY2F0KGhlKTpoZSx0aGlzLmZvbGRlck1hcC5nZXQoeik/WzJdOls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KCIvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9Iit6''@;'; put 'put ''KSxPKS5jYXRjaChmdW5jdGlvbihUKXt0aHJvdygwLGZlLnByZWZpeE1lc3NhZ2UpKFQsIkVycm9yIHdoaWxlIGdldHRpbmcgZm9sZGVyLiAiKX0pXTtjYXNlIDE6aWYoISh0ZT1WLnNlbnQoKS5yZXN1bHQpKXRocm93IG5ldyBFcnJvcigiVGhlIHBhdGggIi5jb25jYXQoeiwiIGRvZXMgbm90''@;'; put 'put ''IGV4aXN0IG9uICIpLmNvbmNhdCh0aGlzLnNlcnZlclVybCkpO3JldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIi9mb2xkZXJzL2ZvbGRlcnMvIi5jb25jYXQodGUuaWQsIi9tZW1iZXJzP2xpbWl0PSIpLmNvbmNhdCh0ZS5tZW1iZXJDb3VudDw1MDA/NTAwOnRlLm1lbWJlckNvdW50''@;'; put 'put ''KSxPKS5jYXRjaChmdW5jdGlvbihUKXt0aHJvdygwLGZlLnByZWZpeE1lc3NhZ2UpKFQsIkVycm9yIHdoaWxlIGdldHRpbmcgbWVtYmVycy4gIil9KV07Y2FzZSAyOnJldHVybiB4PVYuc2VudCgpLnJlc3VsdCx0aGlzLmZvbGRlck1hcC5zZXQoeix4Lml0ZW1zKSxbMl19fSl9KX0sRWUucHJv''@;'; put 'put ''dG90eXBlLnBvbGxKb2JTdGF0ZT1mdW5jdGlvbihoZSxPLHope3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24obmUpe3JldHVyblsyLCgwLGRlLnBvbGxKb2JTdGF0ZSkodGhpcy5yZXF1ZXN0Q2xpZW50LGhlLHRoaXMuZGVidWcs''@;'; put 'put ''Tyx6KV19KX0pfSxFZS5wcm90b3R5cGUudXBsb2FkVGFibGVzPWZ1bmN0aW9uKGhlLE8pe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7cmV0dXJuWzIsKDAsQWUudXBsb2FkVGFibGVzKSh0aGlzLnJlcXVlc3RDbGllbnQs''@;'; put 'put ''aGUsTyldfSl9KX0sRWUucHJvdG90eXBlLmdldEZvbGRlckRldGFpbHM9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHosbmU7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHo9''@;'; put 'put ''KDAsTi5pc1VyaSkoaGUpP2hlOiIvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9Ii5jb25jYXQoaGUpLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoeiksTykuY2F0Y2goZnVuY3Rpb24oeCl7aWYoeCBpbnN0YW5jZW9mIHEuQ2Vy''@;'; put 'put ''dGlmaWNhdGVFcnJvcil0aHJvdyB4O3JldHVybntyZXN1bHQ6bnVsbH19KV07Y2FzZSAxOnJldHVybihuZT10ZS5zZW50KCkucmVzdWx0KT9bMixuZV06WzIsdm9pZCAwXX19KX0pfSxFZS5wcm90b3R5cGUuZ2V0Rm9sZGVyVXJpPWZ1bmN0aW9uKGhlLE8pe3JldHVybiBZKHRoaXMsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6O3JldHVybiBXKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0Rm9sZGVyRGV0YWlscyhoZSxPKV07Y2FzZSAxOnJldHVybih6PW5lLnNlbnQoKSk/WzIsIi9mb2xkZXJzL2ZvbGRlcnMvIi5j''@;'; put 'put ''b25jYXQoei5pZCldOlsyLHZvaWQgMF19fSl9KX0sRWUucHJvdG90eXBlLmdldFJlY3ljbGVCaW5Vcmk9ZnVuY3Rpb24oaGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KCIvZm9sZGVycy9mb2xkZXJzL0BteVJlY3ljbGVCaW4iKSxoZSkuY2F0Y2goZnVuY3Rpb24obmUpe2lmKG5lIGluc3RhbmNlb2YgcS5DZXJ0aWZpY2F0ZUVycm9yKXRocm93''@;'; put 'put ''IG5lO3JldHVybntyZXN1bHQ6bnVsbH19KV07Y2FzZSAxOnJldHVybihPPXouc2VudCgpLnJlc3VsdCk/WzIsIi9mb2xkZXJzL2ZvbGRlcnMvIi5jb25jYXQoTy5pZCldOlsyLHZvaWQgMF19fSl9KX0sRWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlOYW1lPWZ1bmN0aW9uKGhlLE8p''@;'; put 'put ''e3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIs''@;'; put 'put ''ei5zZW50KCldfX0pfSl9LEVlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5SWQ9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRo''@;'; put 'put ''aXMuY29udGV4dE1hbmFnZXIuZ2V0Q29tcHV0ZUNvbnRleHRCeUlkKGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsei5zZW50KCldfX0pfSl9LEVlLnByb3RvdHlwZS5saXN0Rm9sZGVyPWZ1bmN0aW9uKGhlLE8seil7cmV0dXJuIHZvaWQgMD09PXomJih6PTIwKSxZKHRoaXMsdm9pZCAwLHZvaWQg''@;'; put 'put ''MCxmdW5jdGlvbigpe3ZhciBuZSx0ZSx4O3JldHVybiBXKHRoaXMsZnVuY3Rpb24oUCl7c3dpdGNoKFAubGFiZWwpe2Nhc2UgMDpyZXR1cm4oMCxOLmlzVXJpKShoZSk/KHRlPWhlLFszLDNdKTpbMywxXTtjYXNlIDE6cmV0dXJuWzQsdGhpcy5nZXRGb2xkZXJVcmkoaGUsTyldO2Nhc2UgMjp0''@;'; put 'put ''ZT1QLnNlbnQoKSxQLmxhYmVsPTM7Y2FzZSAzOnJldHVybiBuZT10ZSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KG5lLCIvbWVtYmVycz9saW1pdD0iKS5jb25jYXQoeiksTyldO2Nhc2UgNDpyZXR1cm4oeD1QLnNlbnQoKS5yZXN1''@;'; put 'put ''bHQpJiZ4Lml0ZW1zP1syLHguaXRlbXMubWFwKGZ1bmN0aW9uKFYpe3JldHVybiBWLm5hbWV9KV06WzIsW11dfX0pfSl9LEVlLnByb3RvdHlwZS5tb3ZlRm9sZGVyPWZ1bmN0aW9uKGhlLE8seixuZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHRlLHgsUCxW''@;'; put 'put ''LFQsUztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKEYpe3N3aXRjaChGLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRlPWhlLnNwbGl0KCIvIikucG9wKCksWzQsdGhpcy5nZXRGb2xkZXJEZXRhaWxzKE8sbmUpXTtjYXNlIDE6cmV0dXJuIEYuc2VudCgpP3o9dGU6KCh4PU8uc3BsaXQoIi8iKSkuc3Bs''@;'; put 'put ''aWNlKHgubGVuZ3RoLTEsMSksTz14LmpvaW4oIi8iKSksWzQsdGhpcy5nZXRGb2xkZXJVcmkoaGUsbmUpXTtjYXNlIDI6cmV0dXJuIFA9Ri5zZW50KCksWzQsdGhpcy5nZXRGb2xkZXJVcmkoTyxuZSldO2Nhc2UgMzpyZXR1cm4gVj1GLnNlbnQoKSxQPyhUPW51bGw9PVA/dm9pZCAwOlAuc3Bs''@;'; put 'put ''aXQoIi8iKS5wb3AoKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucGF0Y2goIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoUCkse2lkOlQsbmFtZTp6LHBhcmVudEZvbGRlclVyaTpWfSxuZSkuY2F0Y2goZnVuY3Rpb24oeWUpe3Rocm93IHllLmNvZGUmJiJFTk9URk9VTkQiPT09eWUu''@;'; put 'put ''Y29kZT97Ym9keTp7bWVzc2FnZToiRm9sZGVyICciLmNvbmNhdChoZS5zcGxpdCgiLyIpLnBvcCgpLCInIHdhcyBub3QgZm91bmQuIil9fTp5ZX0pXSk6WzIsdm9pZCAwXTtjYXNlIDQ6cmV0dXJuKFM9Ri5zZW50KCkucmVzdWx0KT9bMixTXTpbMix2b2lkIDBdfX0pfSl9LEVlLnByb3RvdHlw''@;'; put 'put ''ZS5kZWxldGVGb2xkZXI9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHosbmUsdGUseDtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRSZWN5Y2xlQmluVXJpKE8p''@;'; put 'put ''XTtjYXNlIDE6cmV0dXJuIHo9Vi5zZW50KCksbmU9aGUuc3BsaXQoIi8iKS5wb3AoKXx8IiIsdGU9bmV3IERhdGUseD10ZS50b0xvY2FsZURhdGVTdHJpbmcoKSsiICIrdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCksWzQsdGhpcy5tb3ZlRm9sZGVyKGhlLHosbmUrIiAiK3gsTyldO2Nhc2UgMjpy''@;'; put 'put ''ZXR1cm5bMixWLnNlbnQoKV19fSl9KX0sRWV9KCk7US5TQVNWaXlhQXBpQ2xpZW50PVRlfSw1OTU2OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIGllPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKFRlKXtm''@;'; put 'put ''b3IodmFyIEVlLGhlPTEsTz1hcmd1bWVudHMubGVuZ3RoO2hlPE87aGUrKylmb3IodmFyIHogaW4gRWU9YXJndW1lbnRzW2hlXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRWUseikmJihUZVt6XT1FZVt6XSk7cmV0dXJuIFRlfSxpZS5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyl9LGxlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihUZSxFZSxoZSxPKXtyZXR1cm4gbmV3KGhlfHwoaGU9UHJvbWlzZSkpKGZ1bmN0aW9uKHosbmUpe2Z1bmN0aW9uIHRlKFYpe3RyeXtQKE8ubmV4dChWKSl9Y2F0Y2goVCl7bmUoVCl9fWZ1bmN0aW9uIHgoVil7dHJ5e1AoTy50''@;'; put 'put ''aHJvdyhWKSl9Y2F0Y2goVCl7bmUoVCl9fWZ1bmN0aW9uIFAoVil7dmFyIFQ7Vi5kb25lP3ooVi52YWx1ZSk6KFQ9Vi52YWx1ZSxUIGluc3RhbmNlb2YgaGU/VDpuZXcgaGUoZnVuY3Rpb24oUyl7UyhUKX0pKS50aGVuKHRlLHgpfVAoKE89Ty5hcHBseShUZSxFZXx8W10pKS5uZXh0KCkpfSl9''@;'; put 'put ''LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVGUsRWUpe3ZhciBoZSxPLHosbmUsdGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmelswXSl0aHJvdyB6WzFdO3JldHVybiB6WzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIG5lPXtuZXh0OngoMCksdGhyb3c6eCgx''@;'; put 'put ''KSxyZXR1cm46eCgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKG5lW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG5lO2Z1bmN0aW9uIHgoUCl7cmV0dXJuIGZ1bmN0aW9uKFYpe3JldHVybiBmdW5jdGlvbihUKXtpZihoZSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt0ZTspdHJ5e2lmKGhlPTEsTyYmKHo9MiZUWzBdP08ucmV0dXJuOlRbMF0/Ty50aHJvd3x8KCh6PU8ucmV0dXJuKSYmei5jYWxsKE8pLDApOk8ubmV4dCkmJiEoej16LmNhbGwoTyxUWzFdKSkuZG9uZSlyZXR1cm4g''@;'; put 'put ''ejtzd2l0Y2goTz0wLHomJihUPVsyJlRbMF0sei52YWx1ZV0pLFRbMF0pe2Nhc2UgMDpjYXNlIDE6ej1UO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdGUubGFiZWwrKyx7dmFsdWU6VFsxXSxkb25lOiExfTtjYXNlIDU6dGUubGFiZWwrKyxPPVRbMV0sVD1bMF07Y29udGludWU7Y2FzZSA3OlQ9dGUu''@;'; put 'put ''b3BzLnBvcCgpLHRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh6PSh6PXRlLnRyeXMpLmxlbmd0aD4wJiZ6W3oubGVuZ3RoLTFdKXx8NiE9PVRbMF0mJjIhPT1UWzBdKSl7dGU9MDtjb250aW51ZX1pZigzPT09VFswXSYmKCF6fHxUWzFdPnpbMF0mJlRbMV08elszXSkpe3Rl''@;'; put 'put ''LmxhYmVsPVRbMV07YnJlYWt9aWYoNj09PVRbMF0mJnRlLmxhYmVsPHpbMV0pe3RlLmxhYmVsPXpbMV0sej1UO2JyZWFrfWlmKHomJnRlLmxhYmVsPHpbMl0pe3RlLmxhYmVsPXpbMl0sdGUub3BzLnB1c2goVCk7YnJlYWt9elsyXSYmdGUub3BzLnBvcCgpLHRlLnRyeXMucG9wKCk7Y29udGlu''@;'; put 'put ''dWV9VD1FZS5jYWxsKFRlLHRlKX1jYXRjaChTKXtUPVs2LFNdLE89MH1maW5hbGx5e2hlPXo9MH1pZig1JlRbMF0pdGhyb3cgVFsxXTtyZXR1cm57dmFsdWU6VFswXT9UWzFdOnZvaWQgMCxkb25lOiEwfX0oW1AsVl0pfX19LFc9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihU''@;'; put 'put ''ZSxFZSxoZSl7aWYoaGV8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgTyx6PTAsbmU9RWUubGVuZ3RoO3o8bmU7eisrKSFPJiZ6IGluIEVlfHwoT3x8KE89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoRWUsMCx6KSksT1t6XT1FZVt6XSk7cmV0dXJuIFRlLmNvbmNhdChPfHxBcnJh''@;'; put 'put ''eS5wcm90b3R5cGUuc2xpY2UuY2FsbChFZSkpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIE49Wig1OTI4KSxlZT1aKDEyMzApLHE9Wig5ODIxKSxKPVooODMwNiksc2U9WigzNDY3KSxhZT1aKDE1MjcpLGZlPVooMzkwMCksZGU9Wig0NTg4''@;'; put 'put ''KSx2ZT1aKDM2MDIpLEFlPVooODIxNyksa2U9WigxMzk1KSxTZT17c2VydmVyVXJsOiIiLHBhdGhTQVNKUzoiL1NBU2pzQXBpL3N0cC9leGVjdXRlIixwYXRoU0FTOToiL1NBU1N0b3JlZFByb2Nlc3MvZG8iLHBhdGhTQVNWaXlhOiIvU0FTSm9iRXhlY3V0aW9uIixhcHBMb2M6Ii9QdWJsaWMv''@;'; put 'put ''c2VlZGFwcCIsc2VydmVyVHlwZTpmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWEsZGVidWc6ITEsY29udGV4dE5hbWU6IlNBUyBKb2IgRXhlY3V0aW9uIGNvbXB1dGUgY29udGV4dCIsdXNlQ29tcHV0ZUFwaTpudWxsLGxvZ2luTWVjaGFuaXNtOmVlLkxvZ2luTWVjaGFuaXNtLkRlZmF1bHR9LEllPWZ1''@;'; put 'put ''bmN0aW9uKCl7ZnVuY3Rpb24gVGUoRWUpe3ZhciBoZT10aGlzO3RoaXMuc2FzanNDb25maWc9bmV3IGVlLlNBU2pzQ29uZmlnLHRoaXMuam9ic1BhdGg9IiIsdGhpcy5zYXNWaXlhQXBpQ2xpZW50PW51bGwsdGhpcy5zYXM5QXBpQ2xpZW50PW51bGwsdGhpcy5zYXNKU0FwaUNsaWVudD1udWxs''@;'; put 'put ''LHRoaXMuZmlsZVVwbG9hZGVyPW51bGwsdGhpcy5hdXRoTWFuYWdlcj1udWxsLHRoaXMucmVxdWVzdENsaWVudD1udWxsLHRoaXMud2ViSm9iRXhlY3V0b3I9bnVsbCx0aGlzLnNhc2pzSm9iRXhlY3V0b3I9bnVsbCx0aGlzLmNvbXB1dGVKb2JFeGVjdXRvcj1udWxsLHRoaXMuamVzSm9iRXhl''@;'; put 'put ''Y3V0b3I9bnVsbCx0aGlzLnNhczlKb2JFeGVjdXRvcj1udWxsLHRoaXMucmVzZW5kV2FpdGluZ1JlcXVlc3RzPWZ1bmN0aW9uKCl7cmV0dXJuIGxlKGhlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTyx6LG5lLHRlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFi''@;'; put 'put ''ZWwpe2Nhc2UgMDpyZXR1cm5bNCxudWxsPT09KE89dGhpcy53ZWJKb2JFeGVjdXRvcil8fHZvaWQgMD09PU8/dm9pZCAwOk8ucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCldO2Nhc2UgMTpyZXR1cm4geC5zZW50KCksWzQsbnVsbD09PSh6PXRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yKXx8dm9pZCAw''@;'; put 'put ''PT09ej92b2lkIDA6ei5yZXNlbmRXYWl0aW5nUmVxdWVzdHMoKV07Y2FzZSAyOnJldHVybiB4LnNlbnQoKSxbNCxudWxsPT09KG5lPXRoaXMuamVzSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT1uZT92b2lkIDA6bmUucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCldO2Nhc2UgMzpyZXR1cm4geC5zZW50''@;'; put 'put ''KCksWzQsbnVsbD09PSh0ZT10aGlzLmZpbGVVcGxvYWRlcil8fHZvaWQgMD09PXRlP3ZvaWQgMDp0ZS5yZXNlbmRXYWl0aW5nUmVxdWVzdHMoKV07Y2FzZSA0OnJldHVybiB4LnNlbnQoKSxbMl19fSl9KX0sdGhpcy5zYXNqc0NvbmZpZz1pZShpZSh7fSxTZSksRWUpLHRoaXMuc2V0dXBDb25m''@;'; put 'put ''aWd1cmF0aW9uKCl9cmV0dXJuIFRlLnByb3RvdHlwZS5nZXRDc3JmVG9rZW49ZnVuY3Rpb24oRWUpe3ZhciBoZTtyZXR1cm4gdm9pZCAwPT09RWUmJihFZT0iZ2VuZXJhbCIpLG51bGw9PT0oaGU9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09aGU/dm9pZCAwOmhlLmdldENzcmZUb2tl''@;'; put 'put ''bihFZSl9LFRlLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0U0FTOT1mdW5jdGlvbihFZSxoZSxPKXt2YXIgejtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMu''@;'; put 'put ''aXNNZXRob2RTdXBwb3J0ZWQoImV4ZWN1dGVTY3JpcHRTQVM5IixbZmUuU2VydmVyVHlwZS5TYXM5XSksWzQsbnVsbD09PSh6PXRoaXMuc2FzOUFwaUNsaWVudCl8fHZvaWQgMD09PXo/dm9pZCAwOnouZXhlY3V0ZVNjcmlwdChFZSxoZSxPKV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQoKV19''@;'; put 'put ''fSl9KX0sVGUucHJvdG90eXBlLmV4ZWN1dGVTY3JpcHRTQVNqcz1mdW5jdGlvbihFZSxoZSxPKXt2YXIgejtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMu''@;'; put 'put ''aXNNZXRob2RTdXBwb3J0ZWQoImV4ZWN1dGVTY3JpcHRTQVNKUyIsW2ZlLlNlcnZlclR5cGUuU2FzanNdKSxbNCxudWxsPT09KHo9dGhpcy5zYXNKU0FwaUNsaWVudCl8fHZvaWQgMD09PXo/dm9pZCAwOnouZXhlY3V0ZVNjcmlwdChFZSxoZSxPKV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQo''@;'; put 'put ''KV19fSl9KX0sVGUucHJvdG90eXBlLmV4ZWN1dGVTY3JpcHRTQVNWaXlhPWZ1bmN0aW9uKEVlLGhlLE8seixuZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOmlmKHRoaXMu''@;'; put 'put ''aXNNZXRob2RTdXBwb3J0ZWQoImV4ZWN1dGVTY3JpcHRTQVNWaXlhIixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksIShPPU98fHRoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUpKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHVuZGVmaW5lZC4gUGxlYXNlIHNldCBhIGBjb250''@;'; put 'put ''ZXh0TmFtZWAgaW4geW91ciBTQVNqcyBvciBvdmVycmlkZSBjb25maWcuIik7cmV0dXJuWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmV4ZWN1dGVTY3JpcHQoRWUsaGUsTyx6LG51bGwsbmV8fHRoaXMuc2FzanNDb25maWcuZGVidWcpXTtjYXNlIDE6cmV0dXJuWzIsdGUuc2VudCgpXX19KX0p''@;'; put 'put ''fSxUZS5wcm90b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRzPWZ1bmN0aW9uKEVlKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihoZSl7c3dpdGNoKGhlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0''@;'; put 'put ''ZWQoImdldENvbXB1dGVDb250ZXh0cyIsW2ZlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRDb21wdXRlQ29udGV4dHMoRWUpXTtjYXNlIDE6cmV0dXJuWzIsaGUuc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZ2V0TGF1bmNoZXJDb250ZXh0cz1m''@;'; put 'put ''dW5jdGlvbihFZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRMYXVuY2hlckNvbnRleHRzIixbZmUuU2VydmVy''@;'; put 'put ''VHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldExhdW5jaGVyQ29udGV4dHMoRWUpXTtjYXNlIDE6cmV0dXJuWzIsaGUuc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzTWV0''@;'; put 'put ''aG9kU3VwcG9ydGVkKCJnZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzIixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldERlZmF1bHRDb21wdXRlQ29udGV4dHMoKX0sVGUucHJvdG90eXBlLmdldEV4ZWN1dGFibGVDb250ZXh0cz1mdW5jdGlvbihFZSl7''@;'; put 'put ''cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRFeGVjdXRhYmxlQ29udGV4dHMiLFtmZS5TZXJ2ZXJUeXBlLlNhc1Zp''@;'; put 'put ''eWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0RXhlY3V0YWJsZUNvbnRleHRzKEVlKV07Y2FzZSAxOnJldHVyblsyLGhlLnNlbnQoKV19fSl9KX0sVGUucHJvdG90eXBlLmNyZWF0ZUNvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKEVlLGhlLE8seixuZSx0ZSl7cmV0dXJuIGxlKHRoaXMs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlQ29tcHV0ZUNvbnRleHQiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1Zp''@;'; put 'put ''eWFBcGlDbGllbnQuY3JlYXRlQ29tcHV0ZUNvbnRleHQoRWUsaGUsTyx6LG5lLHRlKV07Y2FzZSAxOnJldHVyblsyLHguc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuY3JlYXRlTGF1bmNoZXJDb250ZXh0PWZ1bmN0aW9uKEVlLGhlLE8seil7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQg''@;'; put 'put ''MCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJjcmVhdGVMYXVuY2hlckNvbnRleHQiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGll''@;'; put 'put ''bnQuY3JlYXRlTGF1bmNoZXJDb250ZXh0KEVlLGhlLE8seildO2Nhc2UgMTpyZXR1cm5bMixuZS5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5lZGl0Q29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oRWUsaGUsTyl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBZKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZWRpdENvbXB1dGVDb250ZXh0IixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmVkaXRDb21wdXRlQ29udGV4dChF''@;'; put 'put ''ZSxoZSxPKV07Y2FzZSAxOnJldHVyblsyLHouc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZGVsZXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oRWUsaGUpe3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKE8pe3N3aXRjaChP''@;'; put 'put ''LmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImRlbGV0ZUNvbXB1dGVDb250ZXh0IixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlbGV0ZUNvbXB1dGVDb250ZXh0KEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLE8u''@;'; put 'put ''c2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWU9ZnVuY3Rpb24oRWUsaGUpe3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKE8pe3N3aXRjaChPLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRo''@;'; put 'put ''aXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0QnlOYW1lIixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0QnlOYW1lKEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxUZS5w''@;'; put 'put ''cm90b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRCeUlkPWZ1bmN0aW9uKEVlLGhlKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVk''@;'; put 'put ''KCJnZXRDb21wdXRlQ29udGV4dEJ5SWQiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Q29tcHV0ZUNvbnRleHRCeUlkKEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuY3JlYXRlU2Vzc2lvbj1m''@;'; put 'put ''dW5jdGlvbihFZSxoZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlU2Vzc2lvbiIsW2ZlLlNlcnZlclR5cGUu''@;'; put 'put ''U2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVTZXNzaW9uKEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuY3JlYXRlRm9sZGVyPWZ1bmN0aW9uKEVlLGhlLE8seixuZSx0ZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZv''@;'; put 'put ''aWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbmU/WzQsbmUuY3JlYXRlRm9sZGVyKEVlLGhlLE8seildOlszLDJdO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIseC5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlz''@;'; put 'put ''LnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlRm9sZGVyKEVlLGhlLE8seix0ZSldfX0pfSl9LFRlLnByb3RvdHlwZS5jcmVhdGVGaWxlPWZ1bmN0aW9uKEVlLGhlLE8seixuZSx0ZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''eCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGU/WzQsdGUuY3JlYXRlRmlsZShFZSxoZSxPLHosbmUpXTpbMywyXTtjYXNlIDE6Y2FzZSAzOnJldHVyblsyLHguc2VudCgpXTtjYXNlIDI6cmV0dXJuWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmNyZWF0ZUZpbGUoRWUsaGUsTyx6''@;'; put 'put ''LG5lKV19fSl9KX0sVGUucHJvdG90eXBlLmdldEZvbGRlcj1mdW5jdGlvbihFZSxoZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBv''@;'; put 'put ''cnRlZCgiZ2V0Rm9sZGVyIixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldEZvbGRlcihFZSxoZSldO2Nhc2UgMTpyZXR1cm5bMixPLnNlbnQoKV19fSl9KX0sVGUucHJvdG90eXBlLmRlbGV0ZUZvbGRlcj1mdW5jdGlvbihFZSxoZSl7dmFyIE87''@;'; put 'put ''cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVsZXRlRm9sZGVyIixbZmUuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsbnVs''@;'; put 'put ''bD09PShPPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PU8/dm9pZCAwOk8uZGVsZXRlRm9sZGVyKEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLHouc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUubGlzdEZvbGRlcj1mdW5jdGlvbihFZSxoZSxPKXt2YXIgejtyZXR1cm4gbGUodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImxpc3RGb2xkZXIiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCxudWxsPT09KHo9dGhpcy5z''@;'; put 'put ''YXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09ej92b2lkIDA6ei5saXN0Rm9sZGVyKEVlLGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsbmUuc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUubW92ZUZvbGRlcj1mdW5jdGlvbihFZSxoZSxPLHope3ZhciBuZTtyZXR1cm4gbGUodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoIm1vdmVGb2xkZXIiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCxudWxsPT09KG5lPXRoaXMuc2FzVml5YUFw''@;'; put 'put ''aUNsaWVudCl8fHZvaWQgMD09PW5lP3ZvaWQgMDpuZS5tb3ZlRm9sZGVyKEVlLGhlLE8seildO2Nhc2UgMTpyZXR1cm5bMix0ZS5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5jcmVhdGVKb2JEZWZpbml0aW9uPWZ1bmN0aW9uKEVlLGhlLE8seixuZSx0ZSl7cmV0dXJuIGxlKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlSm9iRGVmaW5pdGlvbiIsW2ZlLlNlcnZlclR5cGUuU2FzVml5YV0pLHRlP1s0LHRlLmNyZWF0ZUpv''@;'; put 'put ''YkRlZmluaXRpb24oRWUsaGUsTyx6LG5lKV06WzMsMl07Y2FzZSAxOmNhc2UgMzpyZXR1cm5bMix4LnNlbnQoKV07Y2FzZSAyOnJldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVKb2JEZWZpbml0aW9uKEVlLGhlLE8seixuZSldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRBdXRo''@;'; put 'put ''Q29kZT1mdW5jdGlvbihFZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRBdXRoQ29kZSIsW2ZlLlNlcnZlclR5''@;'; put 'put ''cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRBdXRoQ29kZShFZSldO2Nhc2UgMTpyZXR1cm5bMixoZS5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRBY2Nlc3NUb2tlbj1mdW5jdGlvbihFZSxoZSxPKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRBY2Nlc3NUb2tlbiIsW2ZlLlNlcnZlclR5cGUuU2FzVml5YSxmZS5TZXJ2ZXJUeXBlLlNhc2pzXSksdGhpcy5zYXNqc0NvbmZp''@;'; put 'put ''Zy5zZXJ2ZXJUeXBlIT09ZmUuU2VydmVyVHlwZS5TYXNqcz9bMywyXTpbNCx0aGlzLnNhc0pTQXBpQ2xpZW50LmdldEFjY2Vzc1Rva2VuKEVlLE8pXTtjYXNlIDE6Y2FzZSAzOnJldHVyblsyLHouc2VudCgpXTtjYXNlIDI6cmV0dXJuWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldEFjY2Vz''@;'; put 'put ''c1Rva2VuKEVlLGhlLE8pXX19KX0pfSxUZS5wcm90b3R5cGUucmVmcmVzaFRva2Vucz1mdW5jdGlvbihFZSxoZSxPKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybiB0''@;'; put 'put ''aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJyZWZyZXNoVG9rZW5zIixbZmUuU2VydmVyVHlwZS5TYXNWaXlhLGZlLlNlcnZlclR5cGUuU2FzanNdKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUhPT1mZS5TZXJ2ZXJUeXBlLlNhc2pzP1szLDJdOls0LHRoaXMuc2FzSlNBcGlDbGllbnQucmVm''@;'; put 'put ''cmVzaFRva2VucyhPKV07Y2FzZSAxOmNhc2UgMzpyZXR1cm5bMix6LnNlbnQoKV07Y2FzZSAyOnJldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5yZWZyZXNoVG9rZW5zKEVlLGhlLE8pXX19KX0pfSxUZS5wcm90b3R5cGUuZGVsZXRlQ2xpZW50PWZ1bmN0aW9uKEVlLGhlKXtyZXR1cm4g''@;'; put 'put ''bGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJkZWxldGVDbGllbnQiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1Zp''@;'; put 'put ''eWFBcGlDbGllbnQuZGVsZXRlQ2xpZW50KEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZ2V0U2FzanNDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYXNqc0NvbmZpZ30sVGUucHJvdG90eXBlLmdldFVzZXJOYW1lPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuYXV0aE1hbmFnZXIudXNlck5hbWV9LFRlLnByb3RvdHlwZS5zZXRTQVNqc0NvbmZpZz1mdW5jdGlvbihFZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVybiB0aGlzLnNhc2pzQ29uZmln''@;'; put 'put ''PWllKGllKHt9LHRoaXMuc2FzanNDb25maWcpLEVlKSx0aGlzLnNldHVwQ29uZmlndXJhdGlvbigpLFsyXX0pfSl9LFRlLnByb3RvdHlwZS5zZXREZWJ1Z1N0YXRlPWZ1bmN0aW9uKEVlKXt0aGlzLnNhc2pzQ29uZmlnLmRlYnVnPUVlLHRoaXMuc2FzVml5YUFwaUNsaWVudCYmKHRoaXMuc2Fz''@;'; put 'put ''Vml5YUFwaUNsaWVudC5kZWJ1Zz1FZSl9LFRlLnByb3RvdHlwZS5jaGVja1Nlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihFZSl7cmV0dXJuWzIsdGhpcy5hdXRoTWFuYWdlci5jaGVja1Nlc3Np''@;'; put 'put ''b24oKV19KX0pfSxUZS5wcm90b3R5cGUubG9nSW49ZnVuY3Rpb24oRWUsaGUsTyx6KXtyZXR1cm4gdm9pZCAwPT09eiYmKHo9e30pLGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24obmUpe2lmKHRoaXMuc2FzanNDb25maWcubG9naW5NZWNo''@;'; put 'put ''YW5pc209PT1lZS5Mb2dpbk1lY2hhbmlzbS5EZWZhdWx0KXtpZighRWV8fCFoZSl0aHJvdyBuZXcgRXJyb3IoIkEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSByZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IGxvZ2luIG1lY2hhbmlzbS4iKTtyZXR1cm5bMix0aGlzLmF1dGhNYW5h''@;'; put 'put ''Z2VyLmxvZ0luKEVlLGhlKV19aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cpdGhyb3cgbmV3IEVycm9yKCJUaGUgcmVkaXJlY3RlZCBsb2dpbiBtZWNoYW5pc20gaXMgb25seSBhdmFpbGFibGUgZm9yIHVzZSBpbiB0aGUgYnJvd3Nlci4iKTtyZXR1cm5bMix0aGlzLmF1dGhNYW5hZ2Vy''@;'; put 'put ''LnJlZGlyZWN0ZWRMb2dJbih6KV19KX0pfSxUZS5wcm90b3R5cGUubG9nT3V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXV0aE1hbmFnZXIubG9nT3V0KCl9LFRlLnByb3RvdHlwZS51cGxvYWRGaWxlPWZ1bmN0aW9uKEVlLGhlLE8seixuZSl7cmV0dXJuIHZvaWQgMD09PXomJih6PXt9KSxs''@;'; put 'put ''ZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVsKXtjYXNlIDA6cmV0dXJuIHo9aWUoaWUoe30sdGhpcy5zYXNqc0NvbmZpZykseiksWzQsdGhpcy5maWxlVXBsb2FkZXIuZXhlY3V0ZShFZSx7ZmlsZXM6aGUscGFy''@;'; put 'put ''YW1zOk99LHosbmUpXTtjYXNlIDE6cmV0dXJuWzIseC5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKEVlLGhlLE8seixuZSx0ZSl7cmV0dXJuIHZvaWQgMD09PU8mJihPPXt9KSx2b2lkIDA9PT10ZSYmKHRlPVtdKSxsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgeDtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKFApe3N3aXRjaChQLmxhYmVsKXtjYXNlIDA6cmV0dXJuIE89aWUoaWUoe30sdGhpcy5zYXNqc0NvbmZpZyksTyksKHg9KDAsTi52YWxpZGF0ZUlucHV0KShoZSkpLnN0YXR1cz9PLnNlcnZlclR5cGUhPT1mZS5TZXJ2ZXJUeXBl''@;'; put 'put ''LlNhc2pzP1szLDJdOls0LHRoaXMuc2FzanNKb2JFeGVjdXRvci5leGVjdXRlKEVlLGhlLE8seixuZSx0ZSldOlszLDEyXTtjYXNlIDE6Y2FzZSAzOmNhc2UgNTpjYXNlIDg6Y2FzZSAxMDpyZXR1cm5bMixQLnNlbnQoKV07Y2FzZSAyOnJldHVybiBPLnNlcnZlclR5cGUhPT1mZS5TZXJ2ZXJU''@;'; put 'put ''eXBlLlNhc1ZpeWF8fG51bGw9PU8udXNlQ29tcHV0ZUFwaT9bMyw3XTpPLnVzZUNvbXB1dGVBcGk/WzQsdGhpcy5jb21wdXRlSm9iRXhlY3V0b3IuZXhlY3V0ZShFZSxoZSxPLHosbmUpXTpbMyw0XTtjYXNlIDQ6cmV0dXJuIE8uY29udGV4dE5hbWV8fChPPWllKGllKHt9LE8pLHtjb250ZXh0''@;'; put 'put ''TmFtZToiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0In0pKSxbNCx0aGlzLmplc0pvYkV4ZWN1dG9yLmV4ZWN1dGUoRWUsaGUsTyx6LG5lLHRlKV07Y2FzZSA2OnJldHVyblszLDExXTtjYXNlIDc6cmV0dXJuIE8uc2VydmVyVHlwZT09PWZlLlNlcnZlclR5cGUuU2FzOSYmTy51''@;'; put 'put ''c2VybmFtZSYmTy5wYXNzd29yZD9bNCx0aGlzLnNhczlKb2JFeGVjdXRvci5leGVjdXRlKEVlLGhlLE8pXTpbMyw5XTtjYXNlIDk6cmV0dXJuWzQsdGhpcy53ZWJKb2JFeGVjdXRvci5leGVjdXRlKEVlLGhlLE8seixuZSx0ZSldO2Nhc2UgMTE6cmV0dXJuWzMsMTNdO2Nhc2UgMTI6cmV0dXJu''@;'; put 'put ''WzIsUHJvbWlzZS5yZWplY3QobmV3IGtlLkVycm9yUmVzcG9uc2UoeC5tc2cpKV07Y2FzZSAxMzpyZXR1cm5bMl19fSl9KX0sVGUucHJvdG90eXBlLmRlcGxveVNlcnZpY2VQYWNrPWZ1bmN0aW9uKEVlLGhlLE8seixuZSl7cmV0dXJuIHZvaWQgMD09PW5lJiYobmU9ITEpLGxlKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0ZSx4O3JldHVybiBZKHRoaXMsZnVuY3Rpb24oVil7c3dpdGNoKFYubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVwbG95U2VydmljZVBhY2siLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx0ZT1udWxsLE98''@;'; put 'put ''fGhlPyhPfHwoTz10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCksaGV8fChoZT10aGlzLnNhc2pzQ29uZmlnLmFwcExvYyksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09ZmUuU2VydmVyVHlwZS5TYXNWaXlhPyh0ZT1uZXcgcS5TQVNWaXlhQXBpQ2xpZW50KE8saGUsdGhpcy5zYXNq''@;'; put 'put ''c0NvbmZpZy5jb250ZXh0TmFtZSx0aGlzLnJlcXVlc3RDbGllbnQpKS5kZWJ1Zz10aGlzLnNhc2pzQ29uZmlnLmRlYnVnOnRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PWZlLlNlcnZlclR5cGUuU2FzOSYmKHRlPW5ldyBKLlNBUzlBcGlDbGllbnQoTyx0aGlzLmpvYnNQYXRoLHRoaXMu''@;'; put 'put ''c2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMpKSk6KHg9bnVsbCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1mZS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/eD10aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Q29uZmlnKCk6dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09ZmUuU2Vy''@;'; put 'put ''dmVyVHlwZS5TYXM5JiYoeD10aGlzLnNhczlBcGlDbGllbnQuZ2V0Q29uZmlnKCkpLE89eC5zZXJ2ZXJVcmwsaGU9eC5yb290Rm9sZGVyTmFtZSksRWUubWVtYmVyc1swXS5tZW1iZXJzJiZFZS5tZW1iZXJzWzBdLm1lbWJlcnMuc29ydChmdW5jdGlvbihUKXtyZXR1cm4iZm9sZGVyIj09PVQu''@;'; put 'put ''dHlwZT8tMToxfSksWzQsdGhpcy5jcmVhdGVGb2xkZXJzQW5kU2VydmljZXMoaGUsRWUubWVtYmVycyx6LHRlLG5lKV07Y2FzZSAxOnJldHVybiBWLnNlbnQoKSxbMl19fSl9KX0sVGUucHJvdG90eXBlLmRlcGxveVRvU0FTanM9ZnVuY3Rpb24oRWUsaGUsTyl7dmFyIHo7cmV0dXJuIGxlKHRo''@;'; put 'put ''aXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBoZXx8KGhlPXRoaXMuc2FzanNDb25maWcuYXBwTG9jKSxbNCxudWxsPT09KHo9dGhpcy5zYXNKU0FwaUNsaWVudCl8fHZvaWQgMD09PXo/''@;'; put 'put ''dm9pZCAwOnouZGVwbG95KEVlLGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsbmUuc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZXhlY3V0ZUpvYlNBU2pzPWZ1bmN0aW9uKEVlLGhlKXt2YXIgTztyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxm''@;'; put 'put ''dW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybls0LG51bGw9PT0oTz10aGlzLnNhc0pTQXBpQ2xpZW50KXx8dm9pZCAwPT09Tz92b2lkIDA6Ty5leGVjdXRlSm9iKEVlLGhlKV07Y2FzZSAxOnJldHVyblsyLHouc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuc3RhcnRD''@;'; put 'put ''b21wdXRlSm9iPWZ1bmN0aW9uKEVlLGhlLE8seixuZSx0ZSx4LFApe3ZhciBWO3JldHVybiB2b2lkIDA9PT1PJiYoTz17fSksdm9pZCAwPT09eCYmKHg9ITEpLGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oVCl7aWYoTz1pZShpZSh7fSx0''@;'; put 'put ''aGlzLnNhc2pzQ29uZmlnKSxPKSx0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJzdGFydENvbXB1dGVKb2IiLFtmZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSwhTy5jb250ZXh0TmFtZSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyB1bmRlZmluZWQuIFBsZWFzZSBzZXQgYSBgY29udGV4''@;'; put 'put ''dE5hbWVgIGluIHlvdXIgU0FTanMgb3Igb3ZlcnJpZGUgY29uZmlnLiIpO3JldHVyblsyLG51bGw9PT0oVj10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1WP3ZvaWQgMDpWLmV4ZWN1dGVDb21wdXRlSm9iKEVlLE8uY29udGV4dE5hbWUsTy5kZWJ1ZyxoZSx6LCEhbmUsITEsdGUs''@;'; put 'put ''eCxQKV19KX0pfSxUZS5wcm90b3R5cGUuZmV0Y2hMb2dGaWxlQ29udGVudD1mdW5jdGlvbihFZSxoZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJl''@;'; put 'put ''cXVlc3RDbGllbnQuZ2V0KEVlLGhlKS50aGVuKGZ1bmN0aW9uKHope2lmKCF6KXJldHVybiBQcm9taXNlLnJlamVjdChuZXcga2UuRXJyb3JSZXNwb25zZSgiRXJyb3Igd2hpbGUgZmV0Y2hpbmcgbG9nLiBSZXNwb25zZSB3YXMgbm90IHByb3ZpZGVkLiIpKTt0cnl7cmV0dXJuIEpTT04uc3Ry''@;'; put 'put ''aW5naWZ5KHoucmVzdWx0KX1jYXRjaChuZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBrZS5FcnJvclJlc3BvbnNlKCJFcnJvciB3aGlsZSBmZXRjaGluZyBsb2cuIFRoZSByZXN1bHQgaXMgbm90IHZhbGlkLiIsbmUpKX19KV07Y2FzZSAxOnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxU''@;'; put 'put ''ZS5wcm90b3R5cGUuZ2V0U2FzUmVxdWVzdHM9ZnVuY3Rpb24oKXtyZXR1cm4gVyhbXSx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0UmVxdWVzdHMoKSwhMCkuc29ydChOLmNvbXBhcmVUaW1lc3RhbXBzKX0sVGUucHJvdG90eXBlLmNsZWFyU2FzUmVxdWVzdHM9ZnVuY3Rpb24oKXt0aGlzLnJlcXVl''@;'; put 'put ''c3RDbGllbnQuY2xlYXJSZXF1ZXN0cygpfSxUZS5wcm90b3R5cGUuc2V0dXBDb25maWd1cmF0aW9uPWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmx8fCIiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwpaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBs''@;'; put 'put ''b2NhdGlvbil7dmFyIEVlPSIiLmNvbmNhdChsb2NhdGlvbi5wcm90b2NvbCwiLy8iKS5jb25jYXQobG9jYXRpb24uaG9zdG5hbWUpO2xvY2F0aW9uLnBvcnQmJihFZT0iIi5jb25jYXQoRWUsIjoiKS5jb25jYXQobG9jYXRpb24ucG9ydCkpLHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsPUVl''@;'; put 'put ''fWVsc2UgdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmw9IiI7Ii8iPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwuc2xpY2UoLTEpJiYodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmw9dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwuc2xpY2UoMCwtMSkpLHRoaXMucmVxdWVzdENsaWVu''@;'; put 'put ''dD90aGlzLnJlcXVlc3RDbGllbnQuc2V0Q29uZmlnKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMpOnRoaXMucmVxdWVzdENsaWVudD1uZXcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09ZmUuU2VydmVyVHlwZS5TYXNq''@;'; put 'put ''cz92ZS5TYXNqc1JlcXVlc3RDbGllbnQ6ZGUuUmVxdWVzdENsaWVudCkodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucyx0aGlzLnNhc2pzQ29uZmlnLnJlcXVlc3RIaXN0b3J5TGltaXQpLHRoaXMuam9ic1BhdGg9dGhpcy5zYXNq''@;'; put 'put ''c0NvbmZpZy5zZXJ2ZXJUeXBlPT09ZmUuU2VydmVyVHlwZS5TYXNWaXlhP3RoaXMuc2FzanNDb25maWcucGF0aFNBU1ZpeWE6dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09ZmUuU2VydmVyVHlwZS5TYXM5P3RoaXMuc2FzanNDb25maWcucGF0aFNBUzk6dGhpcy5zYXNqc0NvbmZpZy5w''@;'; put 'put ''YXRoU0FTSlMsdGhpcy5hdXRoTWFuYWdlcj1uZXcgYWUuQXV0aE1hbmFnZXIodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cyksdGhpcy5zYXNqc0NvbmZpZy5z''@;'; put 'put ''ZXJ2ZXJUeXBlPT09ZmUuU2VydmVyVHlwZS5TYXNWaXlhJiYodGhpcy5zYXNWaXlhQXBpQ2xpZW50P3RoaXMuc2FzVml5YUFwaUNsaWVudC5zZXRDb25maWcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MpOnRoaXMuc2FzVml5YUFwaUNsaWVudD1u''@;'; put 'put ''ZXcgcS5TQVNWaXlhQXBpQ2xpZW50KHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuYXBwTG9jLHRoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVidWc9dGhpcy5zYXNqc0NvbmZp''@;'; put 'put ''Zy5kZWJ1ZyksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09ZmUuU2VydmVyVHlwZS5TYXM5JiYodGhpcy5zYXM5QXBpQ2xpZW50P3RoaXMuc2FzOUFwaUNsaWVudC5zZXRDb25maWcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwpOnRoaXMuc2FzOUFwaUNsaWVudD1uZXcgSi5TQVM5''@;'; put 'put ''QXBpQ2xpZW50KHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuam9ic1BhdGgsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucykpLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PWZlLlNlcnZlclR5cGUuU2FzanMmJih0aGlzLnNhc0pTQXBpQ2xpZW50fHwodGhp''@;'; put 'put ''cy5zYXNKU0FwaUNsaWVudD1uZXcgc2UuU0FTanNBcGlDbGllbnQodGhpcy5yZXF1ZXN0Q2xpZW50KSkpLHRoaXMuZmlsZVVwbG9hZGVyPW5ldyBBZS5GaWxlVXBsb2FkZXIodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMuam9ic1Bh''@;'; put 'put ''dGgsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLndlYkpvYkV4ZWN1dG9yPW5ldyBBZS5XZWJKb2JFeGVjdXRvcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5qb2JzUGF0aCx0aGlzLnJlcXVlc3RDbGllbnQsdGhpcy5zYXNWaXlh''@;'; put 'put ''QXBpQ2xpZW50KSx0aGlzLnNhc2pzSm9iRXhlY3V0b3I9bmV3IEFlLlNhc2pzSm9iRXhlY3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5qb2JzUGF0aCx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuc2FzOUpvYkV4ZWN1dG9yPW5ldyBBZS5TYXM5Sm9iRXhlY3V0b3IodGhp''@;'; put 'put ''cy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMuam9ic1BhdGgsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMpLHRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yPW5ldyBBZS5Db21wdXRlSm9iRXhl''@;'; put 'put ''Y3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNWaXlhQXBpQ2xpZW50KSx0aGlzLmplc0pvYkV4ZWN1dG9yPW5ldyBBZS5KZXNKb2JFeGVjdXRvcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQpfSxUZS5wcm90b3R5cGUuY3Jl''@;'; put 'put ''YXRlRm9sZGVyc0FuZFNlcnZpY2VzPWZ1bmN0aW9uKEVlLGhlLE8seixuZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0ZT10aGlzO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCxOLmFzeW5j''@;'; put 'put ''Rm9yRWFjaCkoaGUsZnVuY3Rpb24oUCl7cmV0dXJuIGxlKHRlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6c3dpdGNoKFAudHlwZSl7Y2FzZSJmb2xkZXIiOnJldHVyblszLDFdO2Nhc2UiZmlsZSI6cmV0''@;'; put 'put ''dXJuWzMsM107Y2FzZSJzZXJ2aWNlIjpyZXR1cm5bMyw1XX1yZXR1cm5bMyw3XTtjYXNlIDE6cmV0dXJuWzQsdGhpcy5jcmVhdGVGb2xkZXIoUC5uYW1lLEVlLHZvaWQgMCxPLHosbmUpXTtjYXNlIDI6cmV0dXJuIFYuc2VudCgpLFszLDhdO2Nhc2UgMzpyZXR1cm5bNCx0aGlzLmNyZWF0ZUZp''@;'; put 'put ''bGUoUC5uYW1lLFAuY29kZSxFZSx2b2lkIDAsTyx6KV07Y2FzZSA0OnJldHVybiBWLnNlbnQoKSxbMyw4XTtjYXNlIDU6cmV0dXJuWzQsdGhpcy5jcmVhdGVKb2JEZWZpbml0aW9uKFAubmFtZSxQLmNvZGUsRWUsdm9pZCAwLE8seildO2Nhc2UgNjpyZXR1cm4gVi5zZW50KCksWzMsOF07Y2Fz''@;'; put 'put ''ZSA3OnRocm93IG5ldyBFcnJvcigiVW5pZGVudGlmaWVkIG1lbWJlciAnIi5jb25jYXQoUC5uYW1lLCInIHByb3ZpZGVkLiIpKTtjYXNlIDg6cmV0dXJuImZvbGRlciI9PT1QLnR5cGUmJlAubWVtYmVycyYmUC5tZW1iZXJzLmxlbmd0aD9bNCx0aGlzLmNyZWF0ZUZvbGRlcnNBbmRTZXJ2aWNl''@;'; put 'put ''cygiIi5jb25jYXQoRWUsIi8iKS5jb25jYXQoUC5uYW1lKSxQLm1lbWJlcnMsTyx6LG5lKV06WzMsMTBdO2Nhc2UgOTpWLnNlbnQoKSxWLmxhYmVsPTEwO2Nhc2UgMTA6cmV0dXJuWzJdfX0pfSl9KV07Y2FzZSAxOnJldHVybiB4LnNlbnQoKSxbMl19fSl9KX0sVGUucHJvdG90eXBlLmlzTWV0''@;'; put 'put ''aG9kU3VwcG9ydGVkPWZ1bmN0aW9uKEVlLGhlKXtpZighdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlfHwhaGUuaW5jbHVkZXModGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlKSl0aHJvdyBuZXcgRXJyb3IoIk1ldGhvZCAnIi5jb25jYXQoRWUsIicgaXMgb25seSBzdXBwb3J0ZWQgb24g''@;'; put 'put ''IikuY29uY2F0KGhlLmpvaW4oIiwgIiksIiBzZXJ2ZXJzLiIpKX0sVGV9KCk7US5kZWZhdWx0PUllfSwzNDY3OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihzZSxhZSxmZSxkZSl7cmV0dXJuIG5ldyhmZXx8KGZlPVBy''@;'; put 'put ''b21pc2UpKShmdW5jdGlvbih2ZSxBZSl7ZnVuY3Rpb24ga2UoVGUpe3RyeXtJZShkZS5uZXh0KFRlKSl9Y2F0Y2goRWUpe0FlKEVlKX19ZnVuY3Rpb24gU2UoVGUpe3RyeXtJZShkZS50aHJvdyhUZSkpfWNhdGNoKEVlKXtBZShFZSl9fWZ1bmN0aW9uIEllKFRlKXt2YXIgRWU7VGUuZG9uZT92''@;'; put 'put ''ZShUZS52YWx1ZSk6KEVlPVRlLnZhbHVlLEVlIGluc3RhbmNlb2YgZmU/RWU6bmV3IGZlKGZ1bmN0aW9uKGhlKXtoZShFZSl9KSkudGhlbihrZSxTZSl9SWUoKGRlPWRlLmFwcGx5KHNlLGFlfHxbXSkpLm5leHQoKSl9KX0sbGU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oc2Us''@;'; put 'put ''YWUpe3ZhciBmZSxkZSx2ZSxBZSxrZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ2ZVswXSl0aHJvdyB2ZVsxXTtyZXR1cm4gdmVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gQWU9e25leHQ6U2UoMCksdGhyb3c6U2UoMSkscmV0dXJuOlNlKDIpfSwiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiYoQWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksQWU7ZnVuY3Rpb24gU2UoSWUpe3JldHVybiBmdW5jdGlvbihUZSl7cmV0dXJuIGZ1bmN0aW9uKEVlKXtpZihmZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBl''@;'; put 'put ''eGVjdXRpbmcuIik7Zm9yKDtrZTspdHJ5e2lmKGZlPTEsZGUmJih2ZT0yJkVlWzBdP2RlLnJldHVybjpFZVswXT9kZS50aHJvd3x8KCh2ZT1kZS5yZXR1cm4pJiZ2ZS5jYWxsKGRlKSwwKTpkZS5uZXh0KSYmISh2ZT12ZS5jYWxsKGRlLEVlWzFdKSkuZG9uZSlyZXR1cm4gdmU7c3dpdGNoKGRl''@;'; put 'put ''PTAsdmUmJihFZT1bMiZFZVswXSx2ZS52YWx1ZV0pLEVlWzBdKXtjYXNlIDA6Y2FzZSAxOnZlPUVlO2JyZWFrO2Nhc2UgNDpyZXR1cm4ga2UubGFiZWwrKyx7dmFsdWU6RWVbMV0sZG9uZTohMX07Y2FzZSA1OmtlLmxhYmVsKyssZGU9RWVbMV0sRWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpFZT1r''@;'; put 'put ''ZS5vcHMucG9wKCksa2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHZlPSh2ZT1rZS50cnlzKS5sZW5ndGg+MCYmdmVbdmUubGVuZ3RoLTFdKXx8NiE9PUVlWzBdJiYyIT09RWVbMF0pKXtrZT0wO2NvbnRpbnVlfWlmKDM9PT1FZVswXSYmKCF2ZXx8RWVbMV0+dmVbMF0mJkVl''@;'; put 'put ''WzFdPHZlWzNdKSl7a2UubGFiZWw9RWVbMV07YnJlYWt9aWYoNj09PUVlWzBdJiZrZS5sYWJlbDx2ZVsxXSl7a2UubGFiZWw9dmVbMV0sdmU9RWU7YnJlYWt9aWYodmUmJmtlLmxhYmVsPHZlWzJdKXtrZS5sYWJlbD12ZVsyXSxrZS5vcHMucHVzaChFZSk7YnJlYWt9dmVbMl0mJmtlLm9wcy5w''@;'; put 'put ''b3AoKSxrZS50cnlzLnBvcCgpO2NvbnRpbnVlfUVlPWFlLmNhbGwoc2Usa2UpfWNhdGNoKGhlKXtFZT1bNixoZV0sZGU9MH1maW5hbGx5e2ZlPXZlPTB9aWYoNSZFZVswXSl0aHJvdyBFZVsxXTtyZXR1cm57dmFsdWU6RWVbMF0/RWVbMV06dm9pZCAwLGRvbmU6ITB9fShbSWUsVGVdKX19fTtP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TQVNqc0FwaUNsaWVudD12b2lkIDA7dmFyIFk9WigzOTAwKSxXPVooNTcpLE49WigyNDkpLGVlPVooNTkyOCkscT1aKDcwNCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHNlKGFlKXt0aGlzLnJlcXVlc3RD''@;'; put 'put ''bGllbnQ9YWV9cmV0dXJuIHNlLnByb3RvdHlwZS5kZXBsb3k9ZnVuY3Rpb24oYWUsZmUsZGUpe3JldHVybiBpZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmUsQWU7cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oa2Upe3N3aXRjaChrZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB2''@;'; put 'put ''ZT0oZGV8fHt9KS5hY2Nlc3NfdG9rZW4sZGU/WzQsKDAscS5nZXRUb2tlbnMpKHRoaXMucmVxdWVzdENsaWVudCxkZSxZLlNlcnZlclR5cGUuU2FzanMpXTpbMywyXTtjYXNlIDE6dmU9a2Uuc2VudCgpLmFjY2Vzc190b2tlbixrZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gYWUuYXBwTG9jPWFl''@;'; put 'put ''LmFwcExvY3x8ZmUsWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIlNBU2pzQXBpL2RyaXZlL2RlcGxveSIsYWUsdmUsdm9pZCAwLHt9LHttYXhDb250ZW50TGVuZ3RoOjEvMCxtYXhCb2R5TGVuZ3RoOjEvMH0pXTtjYXNlIDM6cmV0dXJuIEFlPWtlLnNlbnQoKS5yZXN1bHQsWzIsUHJvbWlz''@;'; put 'put ''ZS5yZXNvbHZlKEFlKV19fSl9KX0sc2UucHJvdG90eXBlLmV4ZWN1dGVKb2I9ZnVuY3Rpb24oYWUsZmUpe3JldHVybiBpZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmU7cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oQWUpe3N3aXRjaChBZS5sYWJlbCl7Y2FzZSAwOnJldHVy''@;'; put 'put ''bls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCJTQVNqc0FwaS9zdHAvZXhlY3V0ZSIsYWUsZmU/ZmUuYWNjZXNzX3Rva2VuOnZvaWQgMCldO2Nhc2UgMTpyZXR1cm4gdmU9QWUuc2VudCgpLnJlc3VsdCxPYmplY3Qua2V5cyh2ZSkuaW5jbHVkZXMoIl93ZWJvdXQiKSYmKHZlLl93ZWJvdXQ9''@;'; put 'put ''KDAsZWUucGFyc2VXZWJvdXRSZXNwb25zZSkodmUuX3dlYm91dCkpLFsyLFByb21pc2UucmVzb2x2ZSh2ZSldfX0pfSl9LHNlLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKGFlLGZlLGRlKXtyZXR1cm4gdm9pZCAwPT09ZmUmJihmZT0ic2FzIiksaWUodGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKCl7dmFyIHZlLEFlO3JldHVybiBsZSh0aGlzLGZ1bmN0aW9uKGtlKXtzd2l0Y2goa2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdmU9KGRlfHx7fSkuYWNjZXNzX3Rva2VuLGRlP1s0LCgwLHEuZ2V0VG9rZW5zKSh0aGlzLnJlcXVlc3RDbGllbnQsZGUsWS5TZXJ2ZXJUeXBl''@;'; put 'put ''LlNhc2pzKV06WzMsMl07Y2FzZSAxOnZlPWtlLnNlbnQoKS5hY2Nlc3NfdG9rZW4sa2UubGFiZWw9MjtjYXNlIDI6cmV0dXJuIEFlPSIiLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCJTQVNqc0FwaS9jb2RlL2V4ZWN1dGUiLHtjb2RlOmFlLHJ1blRpbWU6ZmV9LHZlKS50aGVuKGZ1bmN0''@;'; put 'put ''aW9uKFNlKXtTZS5sb2cmJihBZT1TZS5sb2cpfSldO2Nhc2UgMzpyZXR1cm4ga2Uuc2VudCgpLFsyLEFlXX19KX0pfSxzZS5wcm90b3R5cGUuZ2V0QWNjZXNzVG9rZW49ZnVuY3Rpb24oYWUsZmUpe3JldHVybiBpZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gbGUodGhp''@;'; put 'put ''cyxmdW5jdGlvbihkZSl7cmV0dXJuWzIsKDAsVy5nZXRBY2Nlc3NUb2tlbkZvclNhc2pzKSh0aGlzLnJlcXVlc3RDbGllbnQsYWUsZmUpXX0pfSl9LHNlLnByb3RvdHlwZS5yZWZyZXNoVG9rZW5zPWZ1bmN0aW9uKGFlKXtyZXR1cm4gaWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oZmUpe3JldHVyblsyLCgwLE4ucmVmcmVzaFRva2Vuc0ZvclNhc2pzKSh0aGlzLnJlcXVlc3RDbGllbnQsYWUpXX0pfSl9LHNlfSgpO1EuU0FTanNBcGlDbGllbnQ9Sn0sNjkwMzpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT1aKDQx''@;'; put 'put ''NTUpLGxlPVooNTEwOCksWT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oc2UsYWUsZmUsZGUpe3JldHVybiBuZXcoZmV8fChmZT1Qcm9taXNlKSkoZnVuY3Rpb24odmUsQWUpe2Z1bmN0aW9uIGtlKFRlKXt0cnl7SWUoZGUubmV4dChUZSkpfWNhdGNoKEVlKXtBZShFZSl9fWZ1bmN0''@;'; put 'put ''aW9uIFNlKFRlKXt0cnl7SWUoZGUudGhyb3coVGUpKX1jYXRjaChFZSl7QWUoRWUpfX1mdW5jdGlvbiBJZShUZSl7dmFyIEVlO1RlLmRvbmU/dmUoVGUudmFsdWUpOihFZT1UZS52YWx1ZSxFZSBpbnN0YW5jZW9mIGZlP0VlOm5ldyBmZShmdW5jdGlvbihoZSl7aGUoRWUpfSkpLnRoZW4oa2Us''@;'; put 'put ''U2UpfUllKChkZT1kZS5hcHBseShzZSxhZXx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oc2UsYWUpe3ZhciBmZSxkZSx2ZSxBZSxrZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ2ZVswXSl0aHJvdyB2ZVsxXTtyZXR1cm4gdmVbMV19''@;'; put 'put ''LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gQWU9e25leHQ6U2UoMCksdGhyb3c6U2UoMSkscmV0dXJuOlNlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoQWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksQWU7ZnVuY3Rpb24gU2UoSWUpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbihUZSl7cmV0dXJuIGZ1bmN0aW9uKEVlKXtpZihmZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtrZTspdHJ5e2lmKGZlPTEsZGUmJih2ZT0yJkVlWzBdP2RlLnJldHVybjpFZVswXT9kZS50aHJvd3x8KCh2ZT1kZS5y''@;'; put 'put ''ZXR1cm4pJiZ2ZS5jYWxsKGRlKSwwKTpkZS5uZXh0KSYmISh2ZT12ZS5jYWxsKGRlLEVlWzFdKSkuZG9uZSlyZXR1cm4gdmU7c3dpdGNoKGRlPTAsdmUmJihFZT1bMiZFZVswXSx2ZS52YWx1ZV0pLEVlWzBdKXtjYXNlIDA6Y2FzZSAxOnZlPUVlO2JyZWFrO2Nhc2UgNDpyZXR1cm4ga2UubGFi''@;'; put 'put ''ZWwrKyx7dmFsdWU6RWVbMV0sZG9uZTohMX07Y2FzZSA1OmtlLmxhYmVsKyssZGU9RWVbMV0sRWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpFZT1rZS5vcHMucG9wKCksa2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHZlPSh2ZT1rZS50cnlzKS5sZW5ndGg+MCYmdmVbdmUubGVu''@;'; put 'put ''Z3RoLTFdKXx8NiE9PUVlWzBdJiYyIT09RWVbMF0pKXtrZT0wO2NvbnRpbnVlfWlmKDM9PT1FZVswXSYmKCF2ZXx8RWVbMV0+dmVbMF0mJkVlWzFdPHZlWzNdKSl7a2UubGFiZWw9RWVbMV07YnJlYWt9aWYoNj09PUVlWzBdJiZrZS5sYWJlbDx2ZVsxXSl7a2UubGFiZWw9dmVbMV0sdmU9RWU7''@;'; put 'put ''YnJlYWt9aWYodmUmJmtlLmxhYmVsPHZlWzJdKXtrZS5sYWJlbD12ZVsyXSxrZS5vcHMucHVzaChFZSk7YnJlYWt9dmVbMl0mJmtlLm9wcy5wb3AoKSxrZS50cnlzLnBvcCgpO2NvbnRpbnVlfUVlPWFlLmNhbGwoc2Usa2UpfWNhdGNoKGhlKXtFZT1bNixoZV0sZGU9MH1maW5hbGx5e2ZlPXZl''@;'; put 'put ''PTB9aWYoNSZFZVswXSl0aHJvdyBFZVsxXTtyZXR1cm57dmFsdWU6RWVbMF0/RWVbMV06dm9pZCAwLGRvbmU6ITB9fShbSWUsVGVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TZXNzaW9uTWFuYWdlcj12b2lkIDA7dmFyIE49WigxMzk1''@;'; put 'put ''KSxlZT1aKDU5MjgpLHE9Wig5Nzc4KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gc2UoYWUsZmUsZGUpe3RoaXMuc2VydmVyVXJsPWFlLHRoaXMuY29udGV4dE5hbWU9ZmUsdGhpcy5yZXF1ZXN0Q2xpZW50PWRlLHRoaXMubG9nZ2VkRXJyb3JzPVtdLHRoaXMuc2Vzc2lvbnM9W10sdGhpcy5jdXJy''@;'; put 'put ''ZW50Q29udGV4dD1udWxsLHRoaXMuX2RlYnVnPSExLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZT17cHJpbnRlZDohMSxzdGF0ZToiIn0sYWUmJigwLGVlLmlzVXJsKShhZSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZS5wcm90b3R5cGUsImRlYnVnIix7Z2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2RlYnVnfSxzZXQ6ZnVuY3Rpb24oYWUpe3RoaXMuX2RlYnVnPWFlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHNlLnByb3RvdHlwZS5nZXRTZXNzaW9uPWZ1bmN0aW9uKGFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''ZmUsZGU7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih2ZSl7c3dpdGNoKHZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jcmVhdGVTZXNzaW9ucyhhZSldO2Nhc2UgMTpyZXR1cm4gdmUuc2VudCgpLFs0LHRoaXMuY3JlYXRlQW5kV2FpdEZvclNlc3Npb24oYWUpXTtjYXNlIDI6cmV0dXJu''@;'; put 'put ''IHZlLnNlbnQoKSxmZT10aGlzLnNlc3Npb25zLnBvcCgpLGRlPSgobmV3IERhdGUpLmdldFRpbWUoKS1uZXcgRGF0ZShmZS5jcmVhdGlvblRpbWVTdGFtcCkuZ2V0VGltZSgpKS8xZTMsIWZlLmF0dHJpYnV0ZXN8fGRlPj1mZS5hdHRyaWJ1dGVzLnNlc3Npb25JbmFjdGl2ZVRpbWVvdXQ/WzQs''@;'; put 'put ''dGhpcy5jcmVhdGVTZXNzaW9ucyhhZSldOlszLDRdO2Nhc2UgMzpyZXR1cm4gdmUuc2VudCgpLFsyLHRoaXMuc2Vzc2lvbnMucG9wKCldO2Nhc2UgNDpyZXR1cm5bMixmZV19fSl9KX0sc2UucHJvdG90eXBlLmNsZWFyU2Vzc2lvbj1mdW5jdGlvbihhZSxmZSl7cmV0dXJuIFkodGhpcyx2b2lk''@;'; put 'put ''IDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGRlPXRoaXM7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih2ZSl7c3dpdGNoKHZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmRlbGV0ZSgiL2NvbXB1dGUvc2Vzc2lvbnMvIi5jb25jYXQoYWUpLGZlKS50aGVuKGZ1bmN0''@;'; put 'put ''aW9uKCl7ZGUuc2Vzc2lvbnM9ZGUuc2Vzc2lvbnMuZmlsdGVyKGZ1bmN0aW9uKEFlKXtyZXR1cm4gQWUuaWQhPT1hZX0pfSkuY2F0Y2goZnVuY3Rpb24oQWUpe3Rocm93KDAscS5wcmVmaXhNZXNzYWdlKShBZSwiRXJyb3Igd2hpbGUgZGVsZXRpbmcgc2Vzc2lvbi4gIil9KV07Y2FzZSAxOnJl''@;'; put 'put ''dHVyblsyLHZlLnNlbnQoKV19fSl9KX0sc2UucHJvdG90eXBlLmNyZWF0ZVNlc3Npb25zPWZ1bmN0aW9uKGFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZmU9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGRlKXtzd2l0Y2goZGUubGFiZWwpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4gdGhpcy5zZXNzaW9ucy5sZW5ndGg/WzMsNF06dGhpcy5jdXJyZW50Q29udGV4dD9bMywyXTpbNCx0aGlzLnNldEN1cnJlbnRDb250ZXh0KGFlKS5jYXRjaChmdW5jdGlvbih2ZSl7dGhyb3cgdmV9KV07Y2FzZSAxOmRlLnNlbnQoKSxkZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5b''@;'; put 'put ''NCwoMCxlZS5hc3luY0ZvckVhY2gpKG5ldyBBcnJheSgxKSxmdW5jdGlvbigpe3JldHVybiBZKGZlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmU7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihBZSl7c3dpdGNoKEFlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jcmVhdGVBbmRX''@;'; put 'put ''YWl0Rm9yU2Vzc2lvbihhZSkuY2F0Y2goZnVuY3Rpb24oa2Upe3Rocm93IGtlfSldO2Nhc2UgMTpyZXR1cm4gdmU9QWUuc2VudCgpLHRoaXMuc2Vzc2lvbnMucHVzaCh2ZSksWzJdfX0pfSl9KS5jYXRjaChmdW5jdGlvbih2ZSl7dGhyb3cgdmV9KV07Y2FzZSAzOmRlLnNlbnQoKSxkZS5sYWJl''@;'; put 'put ''bD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0sc2UucHJvdG90eXBlLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uPWZ1bmN0aW9uKGFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZmUsZGU7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihBZSl7c3dpdGNoKEFlLmxh''@;'; put 'put ''YmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cy8iKS5jb25jYXQodGhpcy5jdXJyZW50Q29udGV4dC5pZCwiL3Nlc3Npb25zIikse30sYWUpLmNhdGNoKGZ1bmN0aW9uKGtlKXt0aHJv''@;'; put 'put ''dyBrZX0pXTtjYXNlIDE6cmV0dXJuIGZlPUFlLnNlbnQoKSxbNCx0aGlzLndhaXRGb3JTZXNzaW9uKGRlPWZlLnJlc3VsdCxmZS5ldGFnLGFlKV07Y2FzZSAyOnJldHVybiBBZS5zZW50KCksdGhpcy5zZXNzaW9ucy5wdXNoKGRlKSxbMixkZV19fSl9KX0sc2UucHJvdG90eXBlLnNldEN1cnJl''@;'; put 'put ''bnRDb250ZXh0PWZ1bmN0aW9uKGFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZmUsdmUsQWU9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGtlKXtzd2l0Y2goa2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jdXJyZW50Q29udGV4dD9bMywyXTpb''@;'; put 'put ''NCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDAiKSxhZSkuY2F0Y2goZnVuY3Rpb24oU2Upe3Rocm93IFNlfSldO2Nhc2UgMTppZihmZT1rZS5zZW50KCkucmVzdWx0LCEodmU9KGZlJiZmZS5pdGVt''@;'; put 'put ''cyYmZmUuaXRlbXMubGVuZ3RoP2ZlLml0ZW1zOltdKS5maW5kKGZ1bmN0aW9uKFNlKXtyZXR1cm4gU2UubmFtZT09PUFlLmNvbnRleHROYW1lfSkpKXRocm93IG5ldyBFcnJvcigiVGhlIGNvbnRleHQgJyIuY29uY2F0KHRoaXMuY29udGV4dE5hbWUsIicgd2FzIG5vdCBmb3VuZCBvbiB0aGUg''@;'; put 'put ''c2VydmVyICIpLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiLiIpKTt0aGlzLmN1cnJlbnRDb250ZXh0PXZlLFByb21pc2UucmVzb2x2ZSgpLGtlLmxhYmVsPTI7Y2FzZSAyOnJldHVyblsyXX19KX0pfSxzZS5wcm90b3R5cGUuZ2V0SGVhZGVycz1mdW5jdGlvbihhZSl7dmFyIGZlPXsiQ29udGVu''@;'; put 'put ''dC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9O3JldHVybiBhZSYmKGZlLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChhZSkpLGZlfSxzZS5wcm90b3R5cGUud2FpdEZvclNlc3Npb249ZnVuY3Rpb24oYWUsZmUsZGUpe3ZhciB2ZTtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgQWUsa2UsU2UsSWUsRWUsaGU7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5sYWJlbCl7Y2FzZSAwOnJldHVybiBBZT1pZS5sb2dnZXJ8fGxlLGtlPWFlLnN0YXRlLFNlPWFlLmxpbmtzLmZpbmQoZnVuY3Rpb24oeil7cmV0dXJuInN0YXRlIj09PXou''@;'; put 'put ''cmVsfSksInBlbmRpbmciIT09a2UmJiJydW5uaW5nIiE9PWtlJiYiIiE9PWtlP1szLDZdOlNlPyh0aGlzLmRlYnVnJiYhdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnByaW50ZWQmJihBZS5pbmZvKCJQb2xsaW5nOiAiLmNvbmNhdCh0aGlzLnNlcnZlclVybCtTZS5ocmVmKSksdGhpcy5wcmlu''@;'; put 'put ''dGVkU2Vzc2lvblN0YXRlLnByaW50ZWQ9ITApLFs0LHRoaXMuZ2V0U2Vzc2lvblN0YXRlKCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KFNlLmhyZWYsIj93YWl0PTMwIiksZmUsZGUpLmNhdGNoKGZ1bmN0aW9uKHope3Rocm93KDAscS5wcmVmaXhNZXNzYWdlKSh6LCJFcnJvciB3''@;'; put 'put ''aGlsZSBnZXR0aW5nIHNlc3Npb24gc3RhdGUuIil9KV0pOlszLDRdO2Nhc2UgMTpyZXR1cm4gSWU9Ty5zZW50KCksRWU9SWUucmVzcG9uc2VTdGF0dXMsa2U9SWUucmVzdWx0LnRyaW0oKSx0aGlzLmRlYnVnJiZ0aGlzLnByaW50ZWRTZXNzaW9uU3RhdGUuc3RhdGUhPT1rZSYmKEFlLmluZm8o''@;'; put 'put ''IkN1cnJlbnQgc2Vzc2lvbiBzdGF0ZSBpcyAnIi5jb25jYXQoa2UsIiciKSksdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnN0YXRlPWtlLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkPSExKSxrZT9bMywzXTooaGU9bmV3IE4uTm9TZXNzaW9uU3RhdGVFcnJvcihFZSx0aGlzLnNl''@;'; put 'put ''cnZlclVybCtTZS5ocmVmLG51bGw9PT0odmU9YWUubGlua3MuZmluZChmdW5jdGlvbih6KXtyZXR1cm4ibG9nIj09PXoucmVsfSkpfHx2b2lkIDA9PT12ZT92b2lkIDA6dmUuaHJlZiksdGhpcy5sb2dnZWRFcnJvcnMuZmluZChmdW5jdGlvbih6KXtyZXR1cm4gei5zZXJ2ZXJSZXNwb25zZVN0''@;'; put 'put ''YXR1cz09PWhlLnNlcnZlclJlc3BvbnNlU3RhdHVzfSl8fCh0aGlzLmxvZ2dlZEVycm9ycy5wdXNoKGhlKSxBZS5pbmZvKGhlLm1lc3NhZ2UpKSxbNCx0aGlzLndhaXRGb3JTZXNzaW9uKGFlLGZlLGRlKV0pO2Nhc2UgMjpyZXR1cm5bMixPLnNlbnQoKV07Y2FzZSAzOmNhc2UgNjpyZXR1cm4g''@;'; put 'put ''dGhpcy5sb2dnZWRFcnJvcnM9W10sWzIsa2VdO2Nhc2UgNDp0aHJvdyJFcnJvciB3aGlsZSBnZXR0aW5nIHNlc3Npb24gc3RhdGUgbGluay4iO2Nhc2UgNTpyZXR1cm5bMyw3XTtjYXNlIDc6cmV0dXJuWzJdfX0pfSl9LHNlLnByb3RvdHlwZS5nZXRTZXNzaW9uU3RhdGU9ZnVuY3Rpb24oYWUs''@;'; put 'put ''ZmUsZGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24odmUpe3N3aXRjaCh2ZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoYWUsZGUsInRleHQvcGxhaW4iLHsiSWYtTm9uZS1NYXRjaCI6''@;'; put 'put ''ZmV9KS50aGVuKGZ1bmN0aW9uKEFlKXtyZXR1cm57cmVzdWx0OkFlLnJlc3VsdCxyZXNwb25zZVN0YXR1czpBZS5zdGF0dXN9fSkuY2F0Y2goZnVuY3Rpb24oQWUpe3Rocm93IEFlfSldO2Nhc2UgMTpyZXR1cm5bMix2ZS5zZW50KCldfX0pfSl9LHNlLnByb3RvdHlwZS5nZXRWYXJpYWJsZT1m''@;'; put 'put ''dW5jdGlvbihhZSxmZSxkZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih2ZSl7c3dpdGNoKHZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmws''@;'; put 'put ''Ii9jb21wdXRlL3Nlc3Npb25zLyIpLmNvbmNhdChhZSwiL3ZhcmlhYmxlcy8iKS5jb25jYXQoZmUpLGRlKS5jYXRjaChmdW5jdGlvbihBZSl7dGhyb3coMCxxLnByZWZpeE1lc3NhZ2UpKEFlLCJFcnJvciB3aGlsZSBmZXRjaGluZyBzZXNzaW9uIHZhcmlhYmxlICciLmNvbmNhdChmZSwiJy4i''@;'; put 'put ''KSl9KV07Y2FzZSAxOnJldHVyblsyLHZlLnNlbnQoKV19fSl9KX0sc2V9KCk7US5TZXNzaW9uTWFuYWdlcj1KfSw1NDAxOmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IFk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oQWUpe2Zvcih2YXIga2UsU2U9MSxJZT1hcmd1bWVudHMubGVuZ3RoO1NlPEllO1NlKyspZm9yKHZhciBUZSBpbiBrZT1hcmd1bWVudHNbU2VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrZSxUZSkmJihBZVtUZV09a2Vb''@;'; put 'put ''VGVdKTtyZXR1cm4gQWV9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihBZSxrZSxTZSxJZSl7cmV0dXJuIG5ldyhTZXx8KFNlPVByb21pc2UpKShmdW5jdGlvbihUZSxFZSl7ZnVuY3Rpb24gaGUobmUpe3RyeXt6KEllLm5leHQobmUp''@;'; put 'put ''KX1jYXRjaCh0ZSl7RWUodGUpfX1mdW5jdGlvbiBPKG5lKXt0cnl7eihJZS50aHJvdyhuZSkpfWNhdGNoKHRlKXtFZSh0ZSl9fWZ1bmN0aW9uIHoobmUpe3ZhciB0ZTtuZS5kb25lP1RlKG5lLnZhbHVlKToodGU9bmUudmFsdWUsdGUgaW5zdGFuY2VvZiBTZT90ZTpuZXcgU2UoZnVuY3Rpb24o''@;'; put 'put ''eCl7eCh0ZSl9KSkudGhlbihoZSxPKX16KChJZT1JZS5hcHBseShBZSxrZXx8W10pKS5uZXh0KCkpfSl9LE49dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oQWUsa2Upe3ZhciBTZSxJZSxUZSxFZSxoZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZUZVswXSl0aHJvdyBU''@;'; put 'put ''ZVsxXTtyZXR1cm4gVGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gRWU9e25leHQ6TygwKSx0aHJvdzpPKDEpLHJldHVybjpPKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoRWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksRWU7ZnVuY3Rpb24g''@;'; put 'put ''Tyh6KXtyZXR1cm4gZnVuY3Rpb24obmUpe3JldHVybiBmdW5jdGlvbih0ZSl7aWYoU2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7aGU7KXRyeXtpZihTZT0xLEllJiYoVGU9MiZ0ZVswXT9JZS5yZXR1cm46dGVbMF0/SWUudGhy''@;'; put 'put ''b3d8fCgoVGU9SWUucmV0dXJuKSYmVGUuY2FsbChJZSksMCk6SWUubmV4dCkmJiEoVGU9VGUuY2FsbChJZSx0ZVsxXSkpLmRvbmUpcmV0dXJuIFRlO3N3aXRjaChJZT0wLFRlJiYodGU9WzImdGVbMF0sVGUudmFsdWVdKSx0ZVswXSl7Y2FzZSAwOmNhc2UgMTpUZT10ZTticmVhaztjYXNlIDQ6''@;'; put 'put ''cmV0dXJuIGhlLmxhYmVsKysse3ZhbHVlOnRlWzFdLGRvbmU6ITF9O2Nhc2UgNTpoZS5sYWJlbCsrLEllPXRlWzFdLHRlPVswXTtjb250aW51ZTtjYXNlIDc6dGU9aGUub3BzLnBvcCgpLGhlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChUZT0oVGU9aGUudHJ5cykubGVuZ3Ro''@;'; put 'put ''PjAmJlRlW1RlLmxlbmd0aC0xXSl8fDYhPT10ZVswXSYmMiE9PXRlWzBdKSl7aGU9MDtjb250aW51ZX1pZigzPT09dGVbMF0mJighVGV8fHRlWzFdPlRlWzBdJiZ0ZVsxXTxUZVszXSkpe2hlLmxhYmVsPXRlWzFdO2JyZWFrfWlmKDY9PT10ZVswXSYmaGUubGFiZWw8VGVbMV0pe2hlLmxhYmVs''@;'; put 'put ''PVRlWzFdLFRlPXRlO2JyZWFrfWlmKFRlJiZoZS5sYWJlbDxUZVsyXSl7aGUubGFiZWw9VGVbMl0saGUub3BzLnB1c2godGUpO2JyZWFrfVRlWzJdJiZoZS5vcHMucG9wKCksaGUudHJ5cy5wb3AoKTtjb250aW51ZX10ZT1rZS5jYWxsKEFlLGhlKX1jYXRjaCh4KXt0ZT1bNix4XSxJZT0wfWZp''@;'; put 'put ''bmFsbHl7U2U9VGU9MH1pZig1JnRlWzBdKXRocm93IHRlWzFdO3JldHVybnt2YWx1ZTp0ZVswXT90ZVsxXTp2b2lkIDAsZG9uZTohMH19KFt6LG5lXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZXhlY3V0ZVNjcmlwdD12b2lkIDA7dmFy''@;'; put 'put ''IGVlPVooNzc1NykscT1aKDk3NzgpLEo9WigzNjA3KSxzZT1aKDcwNCksYWU9Wig1OTI4KSxmZT1aKDcxNCksZGU9WigxMzQzKSx2ZT1aKDY0OTYpO1EuZXhlY3V0ZVNjcmlwdD1mdW5jdGlvbiBBZShrZSxTZSxJZSxUZSxFZSxoZSxPLHosbmUsdGUseCxQLFYsVCl7dmFyIFMsRjtyZXR1cm4g''@;'; put 'put ''dm9pZCAwPT09eiYmKHo9bnVsbCksdm9pZCAwPT09bmUmJihuZT0hMSksdm9pZCAwPT09dGUmJih0ZT0hMSksdm9pZCAwPT09eCYmKHg9ITApLHZvaWQgMD09PVYmJihWPSExKSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB5ZSxDZSxEZSxQZSxRZSwkZSxndCx5dCxwdCxt''@;'; put 'put ''dCx2dCxmdCxGdCxvbixfdCxudCxxZSxvdCxSdCxDdCxjdCxOdCx6ZSxZZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oQXQpe3N3aXRjaChBdC5sYWJlbCl7Y2FzZSAwOnJldHVybiB5ZT0oT3x8e30pLmFjY2Vzc190b2tlbixPP1s0LCgwLHNlLmdldFRva2Vucykoa2UsTyldOlszLDJd''@;'; put 'put ''O2Nhc2UgMTp5ZT1BdC5zZW50KCkuYWNjZXNzX3Rva2VuLEF0LmxhYmVsPTI7Y2FzZSAyOkNlPWllLmxvZ2dlcnx8bGUsQXQubGFiZWw9MztjYXNlIDM6cmV0dXJuIEF0LnRyeXMucHVzaChbMywxOSwsMjBdKSxEZT12b2lkIDAsWzQsU2UuZ2V0U2Vzc2lvbih5ZSkuY2F0Y2goZnVuY3Rpb24o''@;'; put 'put ''anQpe3Rocm93KDAscS5wcmVmaXhNZXNzYWdlKShqdCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBzZXNzaW9uLiAiKX0pXTtjYXNlIDQ6cmV0dXJuIFBlPUF0LnNlbnQoKSxEZT1QZS5pZCxWP1s0LFNlLmdldFZhcmlhYmxlKERlLCJTWVNKT0JJRCIseWUpLmNhdGNoKGZ1bmN0aW9uKGp0KXt0aHJv''@;'; put 'put ''dygwLHEucHJlZml4TWVzc2FnZSkoanQsIkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbiB2YXJpYWJsZS4gIil9KV06WzMsNl07Y2FzZSA1OihRZT1BdC5zZW50KCkucmVzdWx0KSYmUWUudmFsdWUmJigkZT1JZT9UZS5zcGxpdChJZSkuam9pbigiIikucmVwbGFjZSgvXlwvLywiIik6VGUs''@;'; put 'put ''KGllLmxvZ2dlcnx8bGUpLmluZm8oIlRyaWdnZXJlZCAnIi5jb25jYXQoJGUsIicgd2l0aCBQSUQgIikuY29uY2F0KFFlLnZhbHVlLCIgYXQgIikuY29uY2F0KCgwLGVlLnRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1MpKCkpKSksQXQubGFiZWw9NjtjYXNlIDY6cmV0dXJuIGd0PXtfY29udGV4''@;'; put 'put ''dE5hbWU6aGUsX09NSVRKU09OTElTVElORzohMCxfT01JVEpTT05MT0c6ITAsX09NSVRTRVNTSU9OUkVTVUxUUzohMCxfT01JVFRFWFRMSVNUSU5HOiEwLF9PTUlUVEVYVExPRzohMH0sbmUmJihndC5fT01JVFRFWFRMT0c9ITEsZ3QuX09NSVRTRVNTSU9OUkVTVUxUUz0hMSkseXQ9dm9pZCAw''@;'; put 'put ''LCgwLGFlLmlzUmVsYXRpdmVQYXRoKShUZSk/eXQ9ImV4ZWMtIi5jb25jYXQoVGUuaW5jbHVkZXMoIi8iKT9UZS5zcGxpdCgiLyIpWzFdOlRlKToocHQ9VGUuc3BsaXQoIi8iKSx5dD1wdC5wb3AoKSksbXQ9e1NZU19KRVNfSk9CX1VSSToiIixfcHJvZ3JhbTooMCxhZS5pc1JlbGF0aXZlUGF0''@;'; put 'put ''aCkoVGUpP0llKyIvIitUZTpUZX0sVCYmKG10PVkoWSh7fSxtdCksVCkpLG5lJiYobXQ9WShZKHt9LG10KSx7X0RFQlVHOjEzMX0pKSx2dD1bXSx6P0pTT04uc3RyaW5naWZ5KHopLmluY2x1ZGVzKCI7Iik/WzQsKDAsdmUudXBsb2FkVGFibGVzKShrZSx6LHllKS5jYXRjaChmdW5jdGlvbihq''@;'; put 'put ''dCl7dGhyb3coMCxxLnByZWZpeE1lc3NhZ2UpKGp0LCJFcnJvciB3aGlsZSB1cGxvYWRpbmcgdGFibGVzLiAiKX0pXTpbMyw4XTpbMyw5XTtjYXNlIDc6cmV0dXJuIHZ0PUF0LnNlbnQoKSxtdC5fd2ViaW5fZmlsZV9jb3VudD12dC5sZW5ndGgsdnQuZm9yRWFjaChmdW5jdGlvbihqdCxKdCl7''@;'; put 'put ''bXRbIl93ZWJpbl9maWxldXJpIi5jb25jYXQoSnQrMSldPSIvZmlsZXMvZmlsZXMvIi5jb25jYXQoanQuZmlsZS5pZCksbXRbIl93ZWJpbl9uYW1lIi5jb25jYXQoSnQrMSldPWp0LnRhYmxlTmFtZX0pLFszLDldO2Nhc2UgODptdD1ZKFkoe30sbXQpLCgwLGZlLmZvcm1hdERhdGFGb3JSZXF1''@;'; put 'put ''ZXN0KSh6KSksQXQubGFiZWw9OTtjYXNlIDk6cmV0dXJuIGZ0PXtuYW1lOnl0LGRlc2NyaXB0aW9uOiJQb3dlcmVkIGJ5IFNBU2pzIixjb2RlOkVlLHZhcmlhYmxlczptdCxhcmd1bWVudHM6Z3R9LFs0LGtlLnBvc3QoIi9jb21wdXRlL3Nlc3Npb25zLyIuY29uY2F0KERlLCIvam9icyIpLGZ0''@;'; put 'put ''LHllKS5jYXRjaChmdW5jdGlvbihqdCl7dGhyb3coMCxxLnByZWZpeE1lc3NhZ2UpKGp0LCJFcnJvciB3aGlsZSBwb3N0aW5nIGpvYi4gIil9KV07Y2FzZSAxMDpyZXR1cm4gRnQ9QXQuc2VudCgpLG9uPUZ0LnJlc3VsdCx4PyhuZSYmKENlLmluZm8oIkpvYiBoYXMgYmVlbiBzdWJtaXR0ZWQg''@;'; put 'put ''Zm9yICciLmNvbmNhdCh5dCwiJy4iKSksQ2UuaW5mbygiWW91IGNhbiBtb25pdG9yIHRoZSBqb2IgcHJvZ3Jlc3MgYXQgJyIuY29uY2F0KGtlLmdldEJhc2VVcmwoKSkuY29uY2F0KG9uLmxpbmtzLmZpbmQoZnVuY3Rpb24oanQpe3JldHVybiJzdGF0ZSI9PT1qdC5yZWx9KS5ocmVmLCInLiIp''@;'; put 'put ''KSksWzQsKDAsZGUucG9sbEpvYlN0YXRlKShrZSxvbixuZSxPLFApLmNhdGNoKGZ1bmN0aW9uKGp0KXtyZXR1cm4gVyhZZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEp0LG1uLHBuLGJuLGxuLE5uO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oa24pe3N3aXRjaChrbi5sYWJlbCl7Y2Fz''@;'; put 'put ''ZSAwOnJldHVybiBKdD1udWxsPT09KGxuPW51bGw9PWp0P3ZvaWQgMDpqdC5yZXNwb25zZSl8fHZvaWQgMD09PWxuP3ZvaWQgMDpsbi5kYXRhLG1uPS9lcnI9WzAtOV0qLC8uZXhlYyhKdCksIjUxMTMiIT09KG51bGw9PT0oTm49bnVsbD09bW4/dm9pZCAwOm1uWzBdKXx8dm9pZCAwPT09Tm4/''@;'; put 'put ''dm9pZCAwOk5uLnNsaWNlKDQsLTEpKT9bMywyXToocG49b24ubGlua3MuZmluZChmdW5jdGlvbihlcil7cmV0dXJuInVwIj09PWVyLnJlbH0pLmhyZWYrIi9sb2ciLGJuPWp0LFs0LCgwLGFlLmZldGNoTG9nQnlDaHVua3MpKGtlLHllLHBuLDFlNildKTtjYXNlIDE6Ym4ubG9nPWtuLnNlbnQo''@;'; put 'put ''KSxrbi5sYWJlbD0yO2Nhc2UgMjp0aHJvdygwLHEucHJlZml4TWVzc2FnZSkoanQsIkVycm9yIHdoaWxlIHBvbGxpbmcgam9iIHN0YXR1cy4gIil9fSl9KX0pXSk6WzIsUGVdO2Nhc2UgMTE6cmV0dXJuIF90PUF0LnNlbnQoKSxPP1s0LCgwLHNlLmdldFRva2Vucykoa2UsTyldOlszLDEzXTtj''@;'; put 'put ''YXNlIDEyOnllPUF0LnNlbnQoKS5hY2Nlc3NfdG9rZW4sQXQubGFiZWw9MTM7Y2FzZSAxMzpyZXR1cm5bNCxrZS5nZXQoIi9jb21wdXRlL3Nlc3Npb25zLyIuY29uY2F0KERlLCIvam9icy8iKS5jb25jYXQob24uaWQpLHllKS5jYXRjaChmdW5jdGlvbihqdCl7dGhyb3coMCxxLnByZWZpeE1l''@;'; put 'put ''c3NhZ2UpKGp0LCJFcnJvciB3aGlsZSBnZXR0aW5nIGpvYi4gIil9KV07Y2FzZSAxNDpyZXR1cm4gbnQ9QXQuc2VudCgpLnJlc3VsdCxxZT12b2lkIDAsb3Q9IiIsUnQ9bnQubGlua3MuZmluZChmdW5jdGlvbihqdCl7cmV0dXJuImxvZyI9PT1qdC5yZWx9KSxuZSYmUnQ/KEN0PSIiLmNvbmNh''@;'; put 'put ''dChSdC5ocmVmLCIvY29udGVudCIpLGN0PW51bGwhPT0oRj1udWxsPT09KFM9bnQubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PVM/dm9pZCAwOlMubGluZUNvdW50KSYmdm9pZCAwIT09Rj9GOjFlNixbNCwoMCxhZS5mZXRjaExvZ0J5Q2h1bmtzKShrZSx5ZSxDdCxjdCldKTpbMywxNl07Y2Fz''@;'; put 'put ''ZSAxNTpvdD1BdC5zZW50KCksQXQubGFiZWw9MTY7Y2FzZSAxNjppZigiZmFpbGVkIj09PV90fHwiZXJyb3IiPT09X3QpdGhyb3cgbmV3IEouQ29tcHV0ZUpvYkV4ZWN1dGlvbkVycm9yKG50LG90KTtyZXR1cm4gdGU/KE50PSIvY29tcHV0ZS9zZXNzaW9ucy8iLmNvbmNhdChEZSwiL2ZpbGVy''@;'; put 'put ''ZWZzL193ZWJvdXQvY29udGVudCIpLFs0LGtlLmdldChOdCx5ZSwidGV4dC9wbGFpbiIpLmNhdGNoKGZ1bmN0aW9uKGp0KXtyZXR1cm4gVyhZZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEp0LG1uLHBuLGJuO3JldHVybiBOKHRoaXMsZnVuY3Rpb24obG4pe3N3aXRjaChsbi5sYWJl''@;'; put 'put ''bCl7Y2FzZSAwOnJldHVybiBqdCBpbnN0YW5jZW9mIEouTm90Rm91bmRFcnJvciYmUnQ/KEp0PSIiLmNvbmNhdChSdC5ocmVmLCIvY29udGVudCIpLG1uPW51bGwhPT0oYm49bnVsbD09PShwbj1udC5sb2dTdGF0aXN0aWNzKXx8dm9pZCAwPT09cG4/dm9pZCAwOnBuLmxpbmVDb3VudCkmJnZv''@;'; put 'put ''aWQgMCE9PWJuP2JuOjFlNixbNCwoMCxhZS5mZXRjaExvZ0J5Q2h1bmtzKShrZSx5ZSxKdCxtbildKTpbMywyXTtjYXNlIDE6cmV0dXJuIG90PWxuLnNlbnQoKSxbMixQcm9taXNlLnJlamVjdCh7c3RhdHVzOjUwMCxsb2c6b3R9KV07Y2FzZSAyOnJldHVyblsyLHtyZXN1bHQ6SlNPTi5zdHJp''@;'; put 'put ''bmdpZnkoanQpfV19fSl9KX0pXSk6WzIse2pvYjpudCxsb2c6b3R9XTtjYXNlIDE3OnJldHVybiBxZT1BdC5zZW50KCksWzQsU2UuY2xlYXJTZXNzaW9uKERlLHllKS5jYXRjaChmdW5jdGlvbihqdCl7dGhyb3coMCxxLnByZWZpeE1lc3NhZ2UpKGp0LCJFcnJvciB3aGlsZSBjbGVhcmluZyBz''@;'; put 'put ''ZXNzaW9uLiAiKX0pXTtjYXNlIDE4OnJldHVybiBBdC5zZW50KCksWzIse3Jlc3VsdDpudWxsPT1xZT92b2lkIDA6cWUucmVzdWx0LGxvZzpvdH1dO2Nhc2UgMTk6aWYoNDA0PT09KHplPUF0LnNlbnQoKSkuc3RhdHVzKXJldHVyblsyLEFlKGtlLFNlLEllLFRlLEVlLGhlLE8seixuZSwhMSwh''@;'; put 'put ''MCldO3Rocm93KDAscS5wcmVmaXhNZXNzYWdlKSh6ZSwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIHNjcmlwdC4gIik7Y2FzZSAyMDpyZXR1cm5bMl19fSl9KX19LDc0NTg6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KSxsZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8''@;'; put 'put ''ZnVuY3Rpb24oZWUscSxKLHNlKXtyZXR1cm4gbmV3KEp8fChKPVByb21pc2UpKShmdW5jdGlvbihhZSxmZSl7ZnVuY3Rpb24gZGUoa2Upe3RyeXtBZShzZS5uZXh0KGtlKSl9Y2F0Y2goU2Upe2ZlKFNlKX19ZnVuY3Rpb24gdmUoa2Upe3RyeXtBZShzZS50aHJvdyhrZSkpfWNhdGNoKFNlKXtm''@;'; put 'put ''ZShTZSl9fWZ1bmN0aW9uIEFlKGtlKXt2YXIgU2U7a2UuZG9uZT9hZShrZS52YWx1ZSk6KFNlPWtlLnZhbHVlLFNlIGluc3RhbmNlb2YgSj9TZTpuZXcgSihmdW5jdGlvbihJZSl7SWUoU2UpfSkpLnRoZW4oZGUsdmUpfUFlKChzZT1zZS5hcHBseShlZSxxfHxbXSkpLm5leHQoKSl9KX0sWT10''@;'; put 'put ''aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlZSxxKXt2YXIgSixzZSxhZSxmZSxkZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZhZVswXSl0aHJvdyBhZVsxXTtyZXR1cm4gYWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZmU9e25leHQ6dmUoMCksdGhyb3c6dmUo''@;'; put 'put ''MSkscmV0dXJuOnZlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZmU7ZnVuY3Rpb24gdmUoQWUpe3JldHVybiBmdW5jdGlvbihrZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXtpZihKKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2RlOyl0cnl7aWYoSj0xLHNlJiYoYWU9MiZTZVswXT9zZS5yZXR1cm46U2VbMF0/c2UudGhyb3d8fCgoYWU9c2UucmV0dXJuKSYmYWUuY2FsbChzZSksMCk6c2UubmV4dCkmJiEoYWU9YWUuY2FsbChzZSxT''@;'; put 'put ''ZVsxXSkpLmRvbmUpcmV0dXJuIGFlO3N3aXRjaChzZT0wLGFlJiYoU2U9WzImU2VbMF0sYWUudmFsdWVdKSxTZVswXSl7Y2FzZSAwOmNhc2UgMTphZT1TZTticmVhaztjYXNlIDQ6cmV0dXJuIGRlLmxhYmVsKysse3ZhbHVlOlNlWzFdLGRvbmU6ITF9O2Nhc2UgNTpkZS5sYWJlbCsrLHNlPVNl''@;'; put 'put ''WzFdLFNlPVswXTtjb250aW51ZTtjYXNlIDc6U2U9ZGUub3BzLnBvcCgpLGRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChhZT0oYWU9ZGUudHJ5cykubGVuZ3RoPjAmJmFlW2FlLmxlbmd0aC0xXSl8fDYhPT1TZVswXSYmMiE9PVNlWzBdKSl7ZGU9MDtjb250aW51ZX1pZigz''@;'; put 'put ''PT09U2VbMF0mJighYWV8fFNlWzFdPmFlWzBdJiZTZVsxXTxhZVszXSkpe2RlLmxhYmVsPVNlWzFdO2JyZWFrfWlmKDY9PT1TZVswXSYmZGUubGFiZWw8YWVbMV0pe2RlLmxhYmVsPWFlWzFdLGFlPVNlO2JyZWFrfWlmKGFlJiZkZS5sYWJlbDxhZVsyXSl7ZGUubGFiZWw9YWVbMl0sZGUub3Bz''@;'; put 'put ''LnB1c2goU2UpO2JyZWFrfWFlWzJdJiZkZS5vcHMucG9wKCksZGUudHJ5cy5wb3AoKTtjb250aW51ZX1TZT1xLmNhbGwoZWUsZGUpfWNhdGNoKEllKXtTZT1bNixJZV0sc2U9MH1maW5hbGx5e0o9YWU9MH1pZig1JlNlWzBdKXRocm93IFNlWzFdO3JldHVybnt2YWx1ZTpTZVswXT9TZVsxXTp2''@;'; put 'put ''b2lkIDAsZG9uZTohMH19KFtBZSxrZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdldEZpbGVTdHJlYW09dm9pZCAwO3ZhciBXPVooMjk3NSksTj1aKDc3NTcpO1EuZ2V0RmlsZVN0cmVhbT1mdW5jdGlvbihlZSxxKXtyZXR1cm4gbGUo''@;'; put 'put ''dm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSixzZSxhZSxmZSxkZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHZlKXtzd2l0Y2godmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gSj1aKDI5NzUpLmNyZWF0ZVdyaXRlU3RyZWFtLHNlPXF8fGllLmN3ZCgpLFs0LCgwLFcuaXNGb2xk''@;'; put 'put ''ZXIpKHNlKV07Y2FzZSAxOnJldHVybiB2ZS5zZW50KCk/KGFlPSIiLmNvbmNhdChlZS5uYW1lfHwiam9iIiwiLSIpLmNvbmNhdCgoMCxOLmdlbmVyYXRlVGltZXN0YW1wKSgpLCIubG9nIiksZmU9WigyNTIwKSxkZT1mZS5qb2luKHF8fGllLmN3ZCgpLGFlKSxbNCxKKGRlKV0pOlszLDNdO2Nh''@;'; put 'put ''c2UgMjpjYXNlIDQ6cmV0dXJuWzIsdmUuc2VudCgpXTtjYXNlIDM6cmV0dXJuWzQsSihzZSldfX0pfSl9fSwxMzQzOmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9''@;'; put 'put ''T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZGUpe2Zvcih2YXIgdmUsQWU9MSxrZT1hcmd1bWVudHMubGVuZ3RoO0FlPGtlO0FlKyspZm9yKHZhciBTZSBpbiB2ZT1hcmd1bWVudHNbQWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2ZSxTZSkmJihkZVtTZV09dmVbU2Vd''@;'; put 'put ''KTtyZXR1cm4gZGV9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihkZSx2ZSxBZSxrZSl7cmV0dXJuIG5ldyhBZXx8KEFlPVByb21pc2UpKShmdW5jdGlvbihTZSxJZSl7ZnVuY3Rpb24gVGUoTyl7dHJ5e2hlKGtlLm5leHQoTykpfWNh''@;'; put 'put ''dGNoKHope0llKHopfX1mdW5jdGlvbiBFZShPKXt0cnl7aGUoa2UudGhyb3coTykpfWNhdGNoKHope0llKHopfX1mdW5jdGlvbiBoZShPKXt2YXIgejtPLmRvbmU/U2UoTy52YWx1ZSk6KHo9Ty52YWx1ZSx6IGluc3RhbmNlb2YgQWU/ejpuZXcgQWUoZnVuY3Rpb24obmUpe25lKHopfSkpLnRo''@;'; put 'put ''ZW4oVGUsRWUpfWhlKChrZT1rZS5hcHBseShkZSx2ZXx8W10pKS5uZXh0KCkpfSl9LE49dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZGUsdmUpe3ZhciBBZSxrZSxTZSxJZSxUZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm4g''@;'; put 'put ''U2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gSWU9e25leHQ6RWUoMCksdGhyb3c6RWUoMSkscmV0dXJuOkVlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoSWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSWU7ZnVuY3Rpb24gRWUoaGUpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihPKXtyZXR1cm4gZnVuY3Rpb24oeil7aWYoQWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7VGU7KXRyeXtpZihBZT0xLGtlJiYoU2U9MiZ6WzBdP2tlLnJldHVybjp6WzBdP2tlLnRocm93fHwoKFNlPWtl''@;'; put 'put ''LnJldHVybikmJlNlLmNhbGwoa2UpLDApOmtlLm5leHQpJiYhKFNlPVNlLmNhbGwoa2UselsxXSkpLmRvbmUpcmV0dXJuIFNlO3N3aXRjaChrZT0wLFNlJiYoej1bMiZ6WzBdLFNlLnZhbHVlXSkselswXSl7Y2FzZSAwOmNhc2UgMTpTZT16O2JyZWFrO2Nhc2UgNDpyZXR1cm4gVGUubGFiZWwr''@;'; put 'put ''Kyx7dmFsdWU6elsxXSxkb25lOiExfTtjYXNlIDU6VGUubGFiZWwrKyxrZT16WzFdLHo9WzBdO2NvbnRpbnVlO2Nhc2UgNzp6PVRlLm9wcy5wb3AoKSxUZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoU2U9KFNlPVRlLnRyeXMpLmxlbmd0aD4wJiZTZVtTZS5sZW5ndGgtMV0p''@;'; put 'put ''fHw2IT09elswXSYmMiE9PXpbMF0pKXtUZT0wO2NvbnRpbnVlfWlmKDM9PT16WzBdJiYoIVNlfHx6WzFdPlNlWzBdJiZ6WzFdPFNlWzNdKSl7VGUubGFiZWw9elsxXTticmVha31pZig2PT09elswXSYmVGUubGFiZWw8U2VbMV0pe1RlLmxhYmVsPVNlWzFdLFNlPXo7YnJlYWt9aWYoU2UmJlRl''@;'; put 'put ''LmxhYmVsPFNlWzJdKXtUZS5sYWJlbD1TZVsyXSxUZS5vcHMucHVzaCh6KTticmVha31TZVsyXSYmVGUub3BzLnBvcCgpLFRlLnRyeXMucG9wKCk7Y29udGludWV9ej12ZS5jYWxsKGRlLFRlKX1jYXRjaChuZSl7ej1bNixuZV0sa2U9MH1maW5hbGx5e0FlPVNlPTB9aWYoNSZ6WzBdKXRocm93''@;'; put 'put ''IHpbMV07cmV0dXJue3ZhbHVlOnpbMF0/elsxXTp2b2lkIDAsZG9uZTohMH19KFtoZSxPXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEucG9sbEpvYlN0YXRlPXZvaWQgMDt2YXIgZWU9Wig3MDQpLHE9WigxMzk1KSxKPVooNTkyOCk7US5w''@;'; put 'put ''b2xsSm9iU3RhdGU9ZnVuY3Rpb24oZGUsdmUsQWUsa2UsU2Upe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBJZSxUZSxFZSxoZSxPLHosbmU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6aWYoSWU9aWUubG9nZ2Vy''@;'; put 'put ''fHxsZSxTZT1ZKFkoe30se21heFBvbGxDb3VudDoxZTMscG9sbEludGVydmFsOjMwMCxzdHJlYW1Mb2c6ITF9KSxTZXx8e30pLCEoVGU9dmUubGlua3MuZmluZChmdW5jdGlvbih4KXtyZXR1cm4ic3RhdGUiPT09eC5yZWx9KSkpdGhyb3cgbmV3IEVycm9yKCJKb2Igc3RhdGUgbGluayB3YXMg''@;'; put 'put ''bm90IGZvdW5kLiIpO3JldHVybls0LHNlKGRlLHZlLCIiLEFlLGtlKS5jYXRjaChmdW5jdGlvbih4KXtyZXR1cm4gSWUuZXJyb3IoIkVycm9yIGZldGNoaW5nIGpvYiBzdGF0ZSBmcm9tICIuY29uY2F0KFRlLmhyZWYsIi4gU3RhcnRpbmcgcG9sbCwgYXNzdW1pbmcgam9iIHRvIGJlIHJ1bm5p''@;'; put 'put ''bmcuIikseCksInVuYXZhaWxhYmxlIn0pXTtjYXNlIDE6cmV0dXJuIEVlPXRlLnNlbnQoKSxoZT0wLCJjb21wbGV0ZWQiPT09RWU/WzIsUHJvbWlzZS5yZXNvbHZlKEVlKV06U2Uuc3RyZWFtTG9nJiYoMCxKLmlzTm9kZSkoKT9bNCwoMCxaKDc0NTgpLmdldEZpbGVTdHJlYW0pKHZlLFNlLmxv''@;'; put 'put ''Z0ZvbGRlclBhdGgpXTpbMywzXTtjYXNlIDI6Tz10ZS5zZW50KCksdGUubGFiZWw9MztjYXNlIDM6cmV0dXJuWzQsZmUoZGUsdmUsRWUsQWUsaGUsa2UsWShZKHt9LFNlKSx7bWF4UG9sbENvdW50OlNlLm1heFBvbGxDb3VudDw9MTAwP1NlLm1heFBvbGxDb3VudDoxMDB9KSxPKV07Y2FzZSA0''@;'; put 'put ''OnJldHVybiB6PXRlLnNlbnQoKSxoZT16LnBvbGxDb3VudCwhYWUoRWU9ei5zdGF0ZSl8fGhlPj1TZS5tYXhQb2xsQ291bnQ/WzIsRWVdOihuZT17bWF4UG9sbENvdW50OjE0NDAscG9sbEludGVydmFsOjZlNCxzdHJlYW1Mb2c6ITF9LFNlJiYobmUuc3RyZWFtTG9nPVNlLnN0cmVhbUxvZyxu''@;'; put 'put ''ZS5sb2dGb2xkZXJQYXRoPVNlLmxvZ0ZvbGRlclBhdGgpLFs0LGZlKGRlLHZlLEVlLEFlLGhlLGtlLG5lLE8pXSk7Y2FzZSA1OnJldHVybiB6PXRlLnNlbnQoKSxFZT16LnN0YXRlLGhlPXoucG9sbENvdW50LE8mJk8uZW5kKCksWzIsRWVdfX0pfSl9O3ZhciBzZT1mdW5jdGlvbihkZSx2ZSxB''@;'; put 'put ''ZSxrZSxTZSl7cmV0dXJuIFcodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSWUsVGU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihFZSl7c3dpdGNoKEVlLmxhYmVsKXtjYXNlIDA6aWYoIShJZT12ZS5saW5rcy5maW5kKGZ1bmN0aW9uKGhlKXtyZXR1cm4ic3RhdGUiPT09aGUu''@;'; put 'put ''cmVsfSkpKXRocm93IG5ldyBFcnJvcigiSm9iIHN0YXRlIGxpbmsgd2FzIG5vdCBmb3VuZC4iKTtyZXR1cm4gYWUoQWUpPyhUZT12b2lkIDAsU2U/WzQsKDAsZWUuZ2V0VG9rZW5zKShkZSxTZSldOlszLDJdKTpbMyw0XTtjYXNlIDE6VGU9RWUuc2VudCgpLEVlLmxhYmVsPTI7Y2FzZSAyOnJl''@;'; put 'put ''dHVybls0LGRlLmdldCgiIi5jb25jYXQoSWUuaHJlZiwiP19hY3Rpb249d2FpdCZ3YWl0PTMwMCIpLG51bGw9PVRlP3ZvaWQgMDpUZS5hY2Nlc3NfdG9rZW4sInRleHQvcGxhaW4iLHt9LGtlKS5jYXRjaChmdW5jdGlvbihoZSl7dGhyb3cgbmV3IHEuSm9iU3RhdGVQb2xsRXJyb3IodmUuaWQs''@;'; put 'put ''aGUpfSldO2Nhc2UgMzpyZXR1cm5bMixFZS5zZW50KCkucmVzdWx0LnRyaW0oKV07Y2FzZSA0OnJldHVyblsyLEFlXX19KX0pfSxhZT1mdW5jdGlvbihkZSl7cmV0dXJuInJ1bm5pbmciPT09ZGV8fCIiPT09ZGV8fCJwZW5kaW5nIj09PWRlfHwidW5hdmFpbGFibGUiPT09ZGV9LGZlPWZ1bmN0''@;'; put 'put ''aW9uKGRlLHZlLEFlLGtlLFNlLEllLFRlLEVlKXtyZXR1cm4gVyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBoZSxPLHosbmUsdGUseCxQLFYsVCxTLEYseWUsQ2UsRGUsUGU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihRZSl7c3dpdGNoKFFlLmxhYmVsKXtjYXNlIDA6aWYo''@;'; put 'put ''aGU9MzAwLE89MWUzLHo9NSxuZT0wLHRlPUFlLHg9IiIsUD0wLFY9aWUubG9nZ2VyfHxsZSxUZSYmKGhlPVRlLnBvbGxJbnRlcnZhbHx8aGUsTz1UZS5tYXhQb2xsQ291bnR8fE8pLCEoVD12ZS5saW5rcy5maW5kKGZ1bmN0aW9uKCRlKXtyZXR1cm4ic3RhdGUiPT09JGUucmVsfSkpKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiSm9iIHN0YXRlIGxpbmsgd2FzIG5vdCBmb3VuZC4iKTtRZS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gYWUodGUpJiZTZTw9Tz9bNCxzZShkZSx2ZSx0ZSxrZSxJZSkuY2F0Y2goZnVuY3Rpb24oJGUpe2lmKG5lKyssU2U+PU98fG5lPj16KXRocm93ICRlO3JldHVybiBWLmVy''@;'; put 'put ''cm9yKCJFcnJvciBmZXRjaGluZyBqb2Igc3RhdGUgZnJvbSAiLmNvbmNhdChULmhyZWYsIi4gUmVzdW1pbmcgcG9sbCwgYXNzdW1pbmcgam9iIHRvIGJlIHJ1bm5pbmcuIiksJGUpLCJ1bmF2YWlsYWJsZSJ9KV06WzMsOF07Y2FzZSAyOnJldHVybiB0ZT1RZS5zZW50KCksU2UrKyxTPXZlLmxp''@;'; put 'put ''bmtzLmZpbmQoZnVuY3Rpb24oJGUpe3JldHVybiJzZWxmIj09PSRlLnJlbH0pLmhyZWYsbnVsbCE9VGUmJlRlLnN0cmVhbUxvZz9bNCxkZS5nZXQoUyxudWxsPT1JZT92b2lkIDA6SWUuYWNjZXNzX3Rva2VuKV06WzMsNl07Y2FzZSAzOnJldHVybiBGPVFlLnNlbnQoKS5yZXN1bHQseWU9bnVs''@;'; put 'put ''bCE9PShQZT1udWxsPT09KERlPUYubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PURlP3ZvaWQgMDpEZS5saW5lQ291bnQpJiZ2b2lkIDAhPT1QZT9QZToxZTYsKENlPSgoMCxKLmlzTm9kZSkoKT9aKDIwODApOntzYXZlTG9nOm51bGx9KS5zYXZlTG9nKT9bNCxDZSh2ZSxkZSxQLHllLEVlLG51''@;'; put 'put ''bGw9PUllP3ZvaWQgMDpJZS5hY2Nlc3NfdG9rZW4pXTpbMyw1XTtjYXNlIDQ6UWUuc2VudCgpLFFlLmxhYmVsPTU7Y2FzZSA1OlArPXllLFFlLmxhYmVsPTY7Y2FzZSA2OnJldHVybiBrZSYmeCE9PXRlJiYoVi5pbmZvKCJQb2xsaW5nOiAiLmNvbmNhdChkZS5nZXRCYXNlVXJsKCkrUywiL3N0''@;'; put 'put ''YXRlIikpLFYuaW5mbygiQ3VycmVudCBqb2Igc3RhdGU6ICIuY29uY2F0KHRlKSkseD10ZSksInVuYXZhaWxhYmxlIiE9dGUmJm5lPjAmJihuZT0wKSxbNCwoMCxKLmRlbGF5KShoZSldO2Nhc2UgNzpyZXR1cm4gUWUuc2VudCgpLFszLDFdO2Nhc2UgODpyZXR1cm5bMix7c3RhdGU6dGUscG9s''@;'; put 'put ''bENvdW50OlNlfV19fSl9KX19LDIwODA6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KSxsZT1aKDUxMDgpLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHEsSixzZSxhZSl7cmV0dXJuIG5ldyhzZXx8KHNlPVByb21pc2UpKShmdW5jdGlvbihmZSxk''@;'; put 'put ''ZSl7ZnVuY3Rpb24gdmUoU2Upe3RyeXtrZShhZS5uZXh0KFNlKSl9Y2F0Y2goSWUpe2RlKEllKX19ZnVuY3Rpb24gQWUoU2Upe3RyeXtrZShhZS50aHJvdyhTZSkpfWNhdGNoKEllKXtkZShJZSl9fWZ1bmN0aW9uIGtlKFNlKXt2YXIgSWU7U2UuZG9uZT9mZShTZS52YWx1ZSk6KEllPVNlLnZh''@;'; put 'put ''bHVlLEllIGluc3RhbmNlb2Ygc2U/SWU6bmV3IHNlKGZ1bmN0aW9uKFRlKXtUZShJZSl9KSkudGhlbih2ZSxBZSl9a2UoKGFlPWFlLmFwcGx5KHEsSnx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24ocSxKKXt2YXIgc2UsYWUsZmUsZGUsdmU9e2xh''@;'; put 'put ''YmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmZmVbMF0pdGhyb3cgZmVbMV07cmV0dXJuIGZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGRlPXtuZXh0OkFlKDApLHRocm93OkFlKDEpLHJldHVybjpBZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGRlW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGRlO2Z1bmN0aW9uIEFlKGtlKXtyZXR1cm4gZnVuY3Rpb24oU2Upe3JldHVybiBmdW5jdGlvbihJZSl7aWYoc2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7dmU7KXRyeXtp''@;'; put 'put ''ZihzZT0xLGFlJiYoZmU9MiZJZVswXT9hZS5yZXR1cm46SWVbMF0/YWUudGhyb3d8fCgoZmU9YWUucmV0dXJuKSYmZmUuY2FsbChhZSksMCk6YWUubmV4dCkmJiEoZmU9ZmUuY2FsbChhZSxJZVsxXSkpLmRvbmUpcmV0dXJuIGZlO3N3aXRjaChhZT0wLGZlJiYoSWU9WzImSWVbMF0sZmUudmFs''@;'; put 'put ''dWVdKSxJZVswXSl7Y2FzZSAwOmNhc2UgMTpmZT1JZTticmVhaztjYXNlIDQ6cmV0dXJuIHZlLmxhYmVsKysse3ZhbHVlOkllWzFdLGRvbmU6ITF9O2Nhc2UgNTp2ZS5sYWJlbCsrLGFlPUllWzFdLEllPVswXTtjb250aW51ZTtjYXNlIDc6SWU9dmUub3BzLnBvcCgpLHZlLnRyeXMucG9wKCk7''@;'; put 'put ''Y29udGludWU7ZGVmYXVsdDppZighKChmZT0oZmU9dmUudHJ5cykubGVuZ3RoPjAmJmZlW2ZlLmxlbmd0aC0xXSl8fDYhPT1JZVswXSYmMiE9PUllWzBdKSl7dmU9MDtjb250aW51ZX1pZigzPT09SWVbMF0mJighZmV8fEllWzFdPmZlWzBdJiZJZVsxXTxmZVszXSkpe3ZlLmxhYmVsPUllWzFd''@;'; put 'put ''O2JyZWFrfWlmKDY9PT1JZVswXSYmdmUubGFiZWw8ZmVbMV0pe3ZlLmxhYmVsPWZlWzFdLGZlPUllO2JyZWFrfWlmKGZlJiZ2ZS5sYWJlbDxmZVsyXSl7dmUubGFiZWw9ZmVbMl0sdmUub3BzLnB1c2goSWUpO2JyZWFrfWZlWzJdJiZ2ZS5vcHMucG9wKCksdmUudHJ5cy5wb3AoKTtjb250aW51''@;'; put 'put ''ZX1JZT1KLmNhbGwocSx2ZSl9Y2F0Y2goVGUpe0llPVs2LFRlXSxhZT0wfWZpbmFsbHl7c2U9ZmU9MH1pZig1JkllWzBdKXRocm93IEllWzFdO3JldHVybnt2YWx1ZTpJZVswXT9JZVsxXTp2b2lkIDAsZG9uZTohMH19KFtrZSxTZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxRLnNhdmVMb2c9dm9pZCAwO3ZhciBOPVooNTkyOCksZWU9Wig2MTMxKTtRLnNhdmVMb2c9ZnVuY3Rpb24ocSxKLHNlLGFlLGZlLGRlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmUsQWUsa2U7cmV0dXJuIFcodGhpcyxm''@;'; put 'put ''dW5jdGlvbihTZSl7c3dpdGNoKFNlLmxhYmVsKXtjYXNlIDA6aWYoIWRlKXRocm93IG5ldyBFcnJvcigiTG9ncyBmb3Igam9iICIuY29uY2F0KHEuaWQsIiBjYW5ub3QgYmUgZmV0Y2hlZCB3aXRob3V0IGEgdmFsaWQgYWNjZXNzIHRva2VuLiIpKTtpZighZmUpdGhyb3cgbmV3IEVycm9yKCJM''@;'; put 'put ''b2dzIGZvciBqb2IgIi5jb25jYXQocS5pZCwiIGNhbm5vdCBiZSB3cml0dGVuIHdpdGhvdXQgYSB2YWxpZCB3cml0ZSBzdHJlYW0uIikpO2lmKHZlPWllLmxvZ2dlcnx8bGUsIShBZT1xLmxpbmtzLmZpbmQoZnVuY3Rpb24oSWUpe3JldHVybiJsb2ciPT09SWUucmVsfSkpKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiTG9nIFVSTCBmb3Igam9iICIuY29uY2F0KHEuaWQsIiB3YXMgbm90IGZvdW5kLiIpKTtyZXR1cm5bNCwoMCxOLmZldGNoTG9nKShKLGRlLCIiLmNvbmNhdChBZS5ocmVmLCIvY29udGVudCIpLHNlLGFlKV07Y2FzZSAxOnJldHVybiBrZT1TZS5zZW50KCksdmUuaW5mbygiV3JpdGlu''@;'; put 'put ''ZyBsb2dzIHRvICIuY29uY2F0KGZlLnBhdGgpKSxbNCwoMCxlZS53cml0ZVN0cmVhbSkoZmUsa2V8fCIiKV07Y2FzZSAyOnJldHVybiBTZS5zZW50KCksWzJdfX0pfSl9fSw2NDk2OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5j''@;'; put 'put ''dGlvbihOLGVlLHEsSil7cmV0dXJuIG5ldyhxfHwocT1Qcm9taXNlKSkoZnVuY3Rpb24oc2UsYWUpe2Z1bmN0aW9uIGZlKEFlKXt0cnl7dmUoSi5uZXh0KEFlKSl9Y2F0Y2goa2Upe2FlKGtlKX19ZnVuY3Rpb24gZGUoQWUpe3RyeXt2ZShKLnRocm93KEFlKSl9Y2F0Y2goa2Upe2FlKGtlKX19''@;'; put 'put ''ZnVuY3Rpb24gdmUoQWUpe3ZhciBrZTtBZS5kb25lP3NlKEFlLnZhbHVlKTooa2U9QWUudmFsdWUsa2UgaW5zdGFuY2VvZiBxP2tlOm5ldyBxKGZ1bmN0aW9uKFNlKXtTZShrZSl9KSkudGhlbihmZSxkZSl9dmUoKEo9Si5hcHBseShOLGVlfHxbXSkpLm5leHQoKSl9KX0sbGU9dGhpcyYmdGhp''@;'; put 'put ''cy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oTixlZSl7dmFyIHEsSixzZSxhZSxmZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZzZVswXSl0aHJvdyBzZVsxXTtyZXR1cm4gc2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYWU9e25leHQ6ZGUoMCksdGhyb3c6ZGUoMSkscmV0dXJu''@;'; put 'put ''OmRlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYWU7ZnVuY3Rpb24gZGUodmUpe3JldHVybiBmdW5jdGlvbihBZSl7cmV0dXJuIGZ1bmN0aW9uKGtlKXtpZihxKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2ZlOyl0cnl7aWYocT0xLEomJihzZT0yJmtlWzBdP0oucmV0dXJuOmtlWzBdP0oudGhyb3d8fCgoc2U9Si5yZXR1cm4pJiZzZS5jYWxsKEopLDApOkoubmV4dCkmJiEoc2U9c2UuY2FsbChKLGtlWzFdKSkuZG9uZSlyZXR1''@;'; put 'put ''cm4gc2U7c3dpdGNoKEo9MCxzZSYmKGtlPVsyJmtlWzBdLHNlLnZhbHVlXSksa2VbMF0pe2Nhc2UgMDpjYXNlIDE6c2U9a2U7YnJlYWs7Y2FzZSA0OnJldHVybiBmZS5sYWJlbCsrLHt2YWx1ZTprZVsxXSxkb25lOiExfTtjYXNlIDU6ZmUubGFiZWwrKyxKPWtlWzFdLGtlPVswXTtjb250aW51''@;'; put 'put ''ZTtjYXNlIDc6a2U9ZmUub3BzLnBvcCgpLGZlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChzZT0oc2U9ZmUudHJ5cykubGVuZ3RoPjAmJnNlW3NlLmxlbmd0aC0xXSl8fDYhPT1rZVswXSYmMiE9PWtlWzBdKSl7ZmU9MDtjb250aW51ZX1pZigzPT09a2VbMF0mJighc2V8fGtl''@;'; put 'put ''WzFdPnNlWzBdJiZrZVsxXTxzZVszXSkpe2ZlLmxhYmVsPWtlWzFdO2JyZWFrfWlmKDY9PT1rZVswXSYmZmUubGFiZWw8c2VbMV0pe2ZlLmxhYmVsPXNlWzFdLHNlPWtlO2JyZWFrfWlmKHNlJiZmZS5sYWJlbDxzZVsyXSl7ZmUubGFiZWw9c2VbMl0sZmUub3BzLnB1c2goa2UpO2JyZWFrfXNl''@;'; put 'put ''WzJdJiZmZS5vcHMucG9wKCksZmUudHJ5cy5wb3AoKTtjb250aW51ZX1rZT1lZS5jYWxsKE4sZmUpfWNhdGNoKFNlKXtrZT1bNixTZV0sSj0wfWZpbmFsbHl7cT1zZT0wfWlmKDUma2VbMF0pdGhyb3cga2VbMV07cmV0dXJue3ZhbHVlOmtlWzBdP2tlWzFdOnZvaWQgMCxkb25lOiEwfX0oW3Zl''@;'; put 'put ''LEFlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEudXBsb2FkVGFibGVzPXZvaWQgMDt2YXIgWT1aKDk3NzgpLFc9WigyNDAyKTtRLnVwbG9hZFRhYmxlcz1mdW5jdGlvbihOLGVlLHEpe3JldHVybiBpZSh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgSixzZSxhZSxmZSxkZSx2ZSxBZTtyZXR1cm4gbGUodGhpcyxmdW5jdGlvbihrZSl7c3dpdGNoKGtlLmxhYmVsKXtjYXNlIDA6Zm9yKGFlIGluIEo9W10sc2U9W10sZWUpc2UucHVzaChhZSk7ZmU9MCxrZS5sYWJlbD0xO2Nhc2UgMTppZighKGZlPHNlLmxlbmd0aCkp''@;'; put 'put ''cmV0dXJuWzMsNF07aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PSh2ZT0oMCxXLmNvbnZlcnRUb0NTVikoZWUsZGU9c2VbZmVdKSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIp''@;'; put 'put ''O3JldHVybls0LE4udXBsb2FkRmlsZSgiL2ZpbGVzL2ZpbGVzI3Jhd1VwbG9hZCIsdmUscSkuY2F0Y2goZnVuY3Rpb24oU2Upe3Rocm93KDAsWS5wcmVmaXhNZXNzYWdlKShTZSwiRXJyb3Igd2hpbGUgdXBsb2FkaW5nIGZpbGUuICIpfSldO2Nhc2UgMjpBZT1rZS5zZW50KCksSi5wdXNoKHt0''@;'; put 'put ''YWJsZU5hbWU6ZGUsZmlsZTpBZS5yZXN1bHR9KSxrZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gZmUrKyxbMywxXTtjYXNlIDQ6cmV0dXJuWzIsSl19fSl9KX19LDYxMzE6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFo9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGxlLFks''@;'; put 'put ''VyxOKXtyZXR1cm4gbmV3KFd8fChXPVByb21pc2UpKShmdW5jdGlvbihlZSxxKXtmdW5jdGlvbiBKKGZlKXt0cnl7YWUoTi5uZXh0KGZlKSl9Y2F0Y2goZGUpe3EoZGUpfX1mdW5jdGlvbiBzZShmZSl7dHJ5e2FlKE4udGhyb3coZmUpKX1jYXRjaChkZSl7cShkZSl9fWZ1bmN0aW9uIGFlKGZl''@;'; put 'put ''KXt2YXIgZGU7ZmUuZG9uZT9lZShmZS52YWx1ZSk6KGRlPWZlLnZhbHVlLGRlIGluc3RhbmNlb2YgVz9kZTpuZXcgVyhmdW5jdGlvbih2ZSl7dmUoZGUpfSkpLnRoZW4oSixzZSl9YWUoKE49Ti5hcHBseShsZSxZfHxbXSkpLm5leHQoKSl9KX0saWU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8''@;'; put 'put ''ZnVuY3Rpb24obGUsWSl7dmFyIFcsTixlZSxxLEo9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmZWVbMF0pdGhyb3cgZWVbMV07cmV0dXJuIGVlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHE9e25leHQ6c2UoMCksdGhyb3c6c2UoMSkscmV0dXJuOnNlKDIpfSwiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiYocVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxxO2Z1bmN0aW9uIHNlKGFlKXtyZXR1cm4gZnVuY3Rpb24oZmUpe3JldHVybiBmdW5jdGlvbihkZSl7aWYoVyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFk''@;'; put 'put ''eSBleGVjdXRpbmcuIik7Zm9yKDtKOyl0cnl7aWYoVz0xLE4mJihlZT0yJmRlWzBdP04ucmV0dXJuOmRlWzBdP04udGhyb3d8fCgoZWU9Ti5yZXR1cm4pJiZlZS5jYWxsKE4pLDApOk4ubmV4dCkmJiEoZWU9ZWUuY2FsbChOLGRlWzFdKSkuZG9uZSlyZXR1cm4gZWU7c3dpdGNoKE49MCxlZSYm''@;'; put 'put ''KGRlPVsyJmRlWzBdLGVlLnZhbHVlXSksZGVbMF0pe2Nhc2UgMDpjYXNlIDE6ZWU9ZGU7YnJlYWs7Y2FzZSA0OnJldHVybiBKLmxhYmVsKysse3ZhbHVlOmRlWzFdLGRvbmU6ITF9O2Nhc2UgNTpKLmxhYmVsKyssTj1kZVsxXSxkZT1bMF07Y29udGludWU7Y2FzZSA3OmRlPUoub3BzLnBvcCgp''@;'; put 'put ''LEoudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGVlPShlZT1KLnRyeXMpLmxlbmd0aD4wJiZlZVtlZS5sZW5ndGgtMV0pfHw2IT09ZGVbMF0mJjIhPT1kZVswXSkpe0o9MDtjb250aW51ZX1pZigzPT09ZGVbMF0mJighZWV8fGRlWzFdPmVlWzBdJiZkZVsxXTxlZVszXSkpe0ou''@;'; put 'put ''bGFiZWw9ZGVbMV07YnJlYWt9aWYoNj09PWRlWzBdJiZKLmxhYmVsPGVlWzFdKXtKLmxhYmVsPWVlWzFdLGVlPWRlO2JyZWFrfWlmKGVlJiZKLmxhYmVsPGVlWzJdKXtKLmxhYmVsPWVlWzJdLEoub3BzLnB1c2goZGUpO2JyZWFrfWVlWzJdJiZKLm9wcy5wb3AoKSxKLnRyeXMucG9wKCk7Y29u''@;'; put 'put ''dGludWV9ZGU9WS5jYWxsKGxlLEopfWNhdGNoKHZlKXtkZT1bNix2ZV0sTj0wfWZpbmFsbHl7Vz1lZT0wfWlmKDUmZGVbMF0pdGhyb3cgZGVbMV07cmV0dXJue3ZhbHVlOmRlWzBdP2RlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2FlLGZlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEud3JpdGVTdHJlYW09dm9pZCAwLFEud3JpdGVTdHJlYW09ZnVuY3Rpb24obGUsWSl7cmV0dXJuIFoodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gaWUodGhpcyxmdW5jdGlvbihXKXtyZXR1cm5bMixsZS53cml0ZShZKyJcbiIs''@;'; put 'put ''ZnVuY3Rpb24oTil7cmV0dXJuIE4/UHJvbWlzZS5yZWplY3QoTik6UHJvbWlzZS5yZXNvbHZlKCl9KV19KX0pfX0sMjg1MTpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT1aKDUxMDgpLGxlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihkZSx2ZSxBZSxrZSl7cmV0''@;'; put 'put ''dXJuIG5ldyhBZXx8KEFlPVByb21pc2UpKShmdW5jdGlvbihTZSxJZSl7ZnVuY3Rpb24gVGUoTyl7dHJ5e2hlKGtlLm5leHQoTykpfWNhdGNoKHope0llKHopfX1mdW5jdGlvbiBFZShPKXt0cnl7aGUoa2UudGhyb3coTykpfWNhdGNoKHope0llKHopfX1mdW5jdGlvbiBoZShPKXt2YXIgejtP''@;'; put 'put ''LmRvbmU/U2UoTy52YWx1ZSk6KHo9Ty52YWx1ZSx6IGluc3RhbmNlb2YgQWU/ejpuZXcgQWUoZnVuY3Rpb24obmUpe25lKHopfSkpLnRoZW4oVGUsRWUpfWhlKChrZT1rZS5hcHBseShkZSx2ZXx8W10pKS5uZXh0KCkpfSl9LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZGUs''@;'; put 'put ''dmUpe3ZhciBBZSxrZSxTZSxJZSxUZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm4gU2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gSWU9e25leHQ6RWUoMCksdGhyb3c6RWUoMSkscmV0dXJuOkVlKDIpfSwiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiYoSWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSWU7ZnVuY3Rpb24gRWUoaGUpe3JldHVybiBmdW5jdGlvbihPKXtyZXR1cm4gZnVuY3Rpb24oeil7aWYoQWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhl''@;'; put 'put ''Y3V0aW5nLiIpO2Zvcig7VGU7KXRyeXtpZihBZT0xLGtlJiYoU2U9MiZ6WzBdP2tlLnJldHVybjp6WzBdP2tlLnRocm93fHwoKFNlPWtlLnJldHVybikmJlNlLmNhbGwoa2UpLDApOmtlLm5leHQpJiYhKFNlPVNlLmNhbGwoa2UselsxXSkpLmRvbmUpcmV0dXJuIFNlO3N3aXRjaChrZT0wLFNl''@;'; put 'put ''JiYoej1bMiZ6WzBdLFNlLnZhbHVlXSkselswXSl7Y2FzZSAwOmNhc2UgMTpTZT16O2JyZWFrO2Nhc2UgNDpyZXR1cm4gVGUubGFiZWwrKyx7dmFsdWU6elsxXSxkb25lOiExfTtjYXNlIDU6VGUubGFiZWwrKyxrZT16WzFdLHo9WzBdO2NvbnRpbnVlO2Nhc2UgNzp6PVRlLm9wcy5wb3AoKSxU''@;'; put 'put ''ZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoU2U9KFNlPVRlLnRyeXMpLmxlbmd0aD4wJiZTZVtTZS5sZW5ndGgtMV0pfHw2IT09elswXSYmMiE9PXpbMF0pKXtUZT0wO2NvbnRpbnVlfWlmKDM9PT16WzBdJiYoIVNlfHx6WzFdPlNlWzBdJiZ6WzFdPFNlWzNdKSl7VGUubGFi''@;'; put 'put ''ZWw9elsxXTticmVha31pZig2PT09elswXSYmVGUubGFiZWw8U2VbMV0pe1RlLmxhYmVsPVNlWzFdLFNlPXo7YnJlYWt9aWYoU2UmJlRlLmxhYmVsPFNlWzJdKXtUZS5sYWJlbD1TZVsyXSxUZS5vcHMucHVzaCh6KTticmVha31TZVsyXSYmVGUub3BzLnBvcCgpLFRlLnRyeXMucG9wKCk7Y29u''@;'; put 'put ''dGludWV9ej12ZS5jYWxsKGRlLFRlKX1jYXRjaChuZSl7ej1bNixuZV0sa2U9MH1maW5hbGx5e0FlPVNlPTB9aWYoNSZ6WzBdKXRocm93IHpbMV07cmV0dXJue3ZhbHVlOnpbMF0/elsxXTp2b2lkIDAsZG9uZTohMH19KFtoZSxPXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNN''@;'; put 'put ''b2R1bGUiLHt2YWx1ZTohMH0pLFEuQXV0aE1hbmFnZXI9dm9pZCAwO3ZhciBXPVooMzkwMCksTj1aKDU5MjgpLGVlPVooNTQxOCkscT1aKDQ1ODIpLEo9Wig2NTQ3KSxzZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlKHZlLEFlLGtlLFNlKXt2YXIgSWU9dGhpczt0aGlzLnNlcnZlclVybD12ZSx0''@;'; put 'put ''aGlzLnNlcnZlclR5cGU9QWUsdGhpcy5yZXF1ZXN0Q2xpZW50PWtlLHRoaXMubG9naW5DYWxsYmFjaz1TZSx0aGlzLnVzZXJOYW1lPSIiLHRoaXMucmVkaXJlY3RlZExvZ2luVXJsPSIvU0FTTG9nb24vaG9tZSIsdGhpcy5leHRyYWN0VXNlck5hbWU9ZnVuY3Rpb24oVGUpe3N3aXRjaChJZS5z''@;'; put 'put ''ZXJ2ZXJUeXBlKXtjYXNlIFcuU2VydmVyVHlwZS5TYXNWaXlhOnJldHVybiBudWxsPT1UZT92b2lkIDA6VGUuaWQ7Y2FzZSBXLlNlcnZlclR5cGUuU2FzOTp2YXIgRWU9bnVsbD09VGU/dm9pZCAwOlRlLm1hdGNoKC8idGl0bGUiOiJMb2cgT2ZmIFswLTFhLXpBLVogXSoiLyksaGU9bnVsbD09''@;'; put 'put ''RWU/dm9pZCAwOkVlWzBdLnNsaWNlKDE3LC0xKTtyZXR1cm4gaGUuaW5jbHVkZXMoIiAiKT9oZS5zcGxpdCgiICIpLm1hcChmdW5jdGlvbihPKXtyZXR1cm4gTy5zbGljZSgwLDMpLnRvTG93ZXJDYXNlKCl9KS5qb2luKCIiKTpoZTtjYXNlIFcuU2VydmVyVHlwZS5TYXNqczpyZXR1cm4gbnVs''@;'; put 'put ''bD09VGU/dm9pZCAwOlRlLnVzZXJuYW1lO2RlZmF1bHQ6cmV0dXJuIGllLmVycm9yKCJTZXJ2ZXIgVHlwZSBub3QgZm91bmQgaW4gZXh0cmFjdFVzZXJOYW1lIGZ1bmN0aW9uIiksIiJ9fSx0aGlzLnNldExvZ2luVXJsPWZ1bmN0aW9uKFRlKXt2YXIgRWU9VGVbMV0ucmVwbGFjZSgvXD8uKi8s''@;'; put 'put ''IiIpO2lmKCIvIj09PUVlWzBdKXtFZT1FZS5zdWJzdHIoMSk7dmFyIGhlPUllLnNlcnZlclVybD8iIi5jb25jYXQoSWUuc2VydmVyVXJsLCIvIikuY29uY2F0KEVlKToiIi5jb25jYXQoRWUpO0llLmxvZ2luVXJsPUllLnNlcnZlclR5cGU9PT1XLlNlcnZlclR5cGUuU2FzVml5YT9oZTpoZS5y''@;'; put 'put ''ZXBsYWNlKCIuZG8iLCIiKX19LHRoaXMubG9naW5Vcmw9Ii9TQVNMb2dvbi9sb2dpbiIsdGhpcy5sb2dvdXRVcmw9dGhpcy5zZXJ2ZXJUeXBlPT09Vy5TZXJ2ZXJUeXBlLlNhczk/Ii9TQVNMb2dvbi9sb2dvdXQ/Ijp0aGlzLnNlcnZlclR5cGU9PT1XLlNlcnZlclR5cGUuU2FzVml5YT8iL1NB''@;'; put 'put ''U0xvZ29uL2xvZ291dC5kbz8iOiIvU0FTTG9nb24vbG9nb3V0In1yZXR1cm4gZGUucHJvdG90eXBlLnJlZGlyZWN0ZWRMb2dJbj1mdW5jdGlvbih2ZSl7dmFyIEFlPXZlLm9uTG9nZ2VkT3V0O3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIga2UsSWUsVGUsRWUs''@;'; put 'put ''aGUsTztyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5mZXRjaFVzZXJOYW1lKCldO2Nhc2UgMTpyZXR1cm4ga2U9ei5zZW50KCksSWU9a2UudXNlck5hbWUsa2UuaXNMb2dnZWRJbj9bNCx0aGlzLmxvZ2luQ2FsbGJhY2soKV06''@;'; put 'put ''WzMsM107Y2FzZSAyOnJldHVybiB6LnNlbnQoKSxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTpJZX1dO2Nhc2UgMzpyZXR1cm5bNCwoMCxlZS5vcGVuV2ViUGFnZSkodGhpcy5yZWRpcmVjdGVkTG9naW5VcmwsIlNBU0xvZ29uIix7d2lkdGg6NTAwLGhlaWdodDo2MDB9LEFlKV07Y2FzZSA0''@;'; put 'put ''OnJldHVybihUZT16LnNlbnQoKSk/dGhpcy5zZXJ2ZXJUeXBlIT09Vy5TZXJ2ZXJUeXBlLlNhc1ZpeWE/WzMsNl06WzQsKDAsSi52ZXJpZnlTYXNWaXlhTG9naW4pKFRlKV06WzIse2lzTG9nZ2VkSW46ITEsdXNlck5hbWU6IiJ9XTtjYXNlIDU6cmV0dXJuIGhlPXouc2VudCgpLFszLDhdO2Nh''@;'; put 'put ''c2UgNjpyZXR1cm5bNCwoMCxxLnZlcmlmeVNhczlMb2dpbikoVGUpXTtjYXNlIDc6aGU9ei5zZW50KCksei5sYWJlbD04O2Nhc2UgODpyZXR1cm4gRWU9aGUuaXNMb2dnZWRJbixUZS5jbG9zZSgpLEVlP3RoaXMuc2VydmVyVHlwZSE9PVcuU2VydmVyVHlwZS5TYXM5P1szLDEwXTpbNCx0aGlz''@;'; put 'put ''LnBlcmZvcm1DQVNTZWN1cml0eUNoZWNrKCldOlszLDEzXTtjYXNlIDk6ei5zZW50KCksei5sYWJlbD0xMDtjYXNlIDEwOnJldHVybls0LHRoaXMuZmV0Y2hVc2VyTmFtZSgpXTtjYXNlIDExOnJldHVybiBPPXouc2VudCgpLnVzZXJOYW1lLFs0LHRoaXMubG9naW5DYWxsYmFjaygpXTtjYXNl''@;'; put 'put ''IDEyOnJldHVybiB6LnNlbnQoKSxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTpPfV07Y2FzZSAxMzpyZXR1cm5bMix7aXNMb2dnZWRJbjohMSx1c2VyTmFtZToiIn1dfX0pfSl9LGRlLnByb3RvdHlwZS5sb2dJbj1mdW5jdGlvbih2ZSxBZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQg''@;'; put 'put ''MCxmdW5jdGlvbigpe3ZhciBrZSxTZSxUZSxFZSxoZSxPLHosbmU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGtlPXtfc2VydmljZToiZGVmYXVsdCIsdXNlcm5hbWU6dmUscGFzc3dvcmQ6QWV9LFs0LHRoaXMuY2hlY2tTZXNzaW9u''@;'; put 'put ''KCldO2Nhc2UgMTpyZXR1cm4gU2U9dGUuc2VudCgpLFRlPVNlLmxvZ2luRm9ybSxFZT1TZS51c2VyTmFtZSxTZS5pc0xvZ2dlZEluP0VlIT09a2UudXNlcm5hbWU/WzMsM106WzQsdGhpcy5sb2dpbkNhbGxiYWNrKCldOlszLDddO2Nhc2UgMjpyZXR1cm4gdGUuc2VudCgpLHRoaXMudXNlck5h''@;'; put 'put ''bWU9RWUsWzIse2lzTG9nZ2VkSW46ITAsdXNlck5hbWU6dGhpcy51c2VyTmFtZX1dO2Nhc2UgMzpyZXR1cm5bNCx0aGlzLmxvZ091dCgpXTtjYXNlIDQ6cmV0dXJuIHRlLnNlbnQoKSxbNCx0aGlzLmdldE5ld0xvZ2luRm9ybSgpXTtjYXNlIDU6VGU9dGUuc2VudCgpLHRlLmxhYmVsPTY7Y2Fz''@;'; put 'put ''ZSA2OnJldHVyblszLDhdO2Nhc2UgNzp0aGlzLnVzZXJOYW1lPSIiLHRlLmxhYmVsPTg7Y2FzZSA4OnJldHVybls0LHRoaXMuc2VuZExvZ2luUmVxdWVzdChUZSxrZSldO2Nhc2UgOTpyZXR1cm4gaGU9dGUuc2VudCgpLChPPWZlKHRoaXMuc2VydmVyVHlwZSxoZSkpP1szLDE0XTphZShoZSk/''@;'; put 'put ''WzQsdGhpcy5nZXRMb2dpbkZvcm0oaGUpXTpbMywxMl07Y2FzZSAxMDpyZXR1cm4gej10ZS5zZW50KCksWzQsdGhpcy5zZW5kTG9naW5SZXF1ZXN0KHosa2UpXTtjYXNlIDExOmhlPXRlLnNlbnQoKSx0ZS5sYWJlbD0xMjtjYXNlIDEyOnJldHVybls0LHRoaXMuY2hlY2tTZXNzaW9uKCldO2Nh''@;'; put 'put ''c2UgMTM6cmV0dXJuIG5lPXRlLnNlbnQoKSwoTz1uZS5pc0xvZ2dlZEluKSYmKHRoaXMudXNlck5hbWU9bmUudXNlck5hbWUpLFszLDE1XTtjYXNlIDE0OnRoaXMudXNlck5hbWU9a2UudXNlcm5hbWUsdGUubGFiZWw9MTU7Y2FzZSAxNTpyZXR1cm4gTz90aGlzLnNlcnZlclR5cGUhPT1XLlNl''@;'; put 'put ''cnZlclR5cGUuU2FzOT9bMywxN106WzQsdGhpcy5wZXJmb3JtQ0FTU2VjdXJpdHlDaGVjaygpXTpbMywxOF07Y2FzZSAxNjp0ZS5zZW50KCksdGUubGFiZWw9MTc7Y2FzZSAxNzpyZXR1cm4gdGhpcy5sb2dpbkNhbGxiYWNrKCksWzMsMTldO2Nhc2UgMTg6dGhpcy51c2VyTmFtZT0iIix0ZS5s''@;'; put 'put ''YWJlbD0xOTtjYXNlIDE5OnJldHVyblsyLHtpc0xvZ2dlZEluOk8sdXNlck5hbWU6dGhpcy51c2VyTmFtZX1dfX0pfSl9LGRlLnByb3RvdHlwZS5wZXJmb3JtQ0FTU2VjdXJpdHlDaGVjaz1mdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmU7''@;'; put 'put ''cmV0dXJuIFkodGhpcyxmdW5jdGlvbihBZSl7c3dpdGNoKEFlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHZlPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL1NBU1N0b3JlZFByb2Nlc3Mval9zcHJpbmdfY2FzX3NlY3VyaXR5X2NoZWNrIiksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiL1NB''@;'; put 'put ''U0xvZ29uL2xvZ2luP3NlcnZpY2U9Ii5jb25jYXQodmUpLHZvaWQgMCldO2Nhc2UgMTpyZXR1cm4gQWUuc2VudCgpLFsyXX19KX0pfSxkZS5wcm90b3R5cGUuc2VuZExvZ2luUmVxdWVzdD1mdW5jdGlvbih2ZSxBZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBJZSxUZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKEVlKXtzd2l0Y2goRWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5zZXJ2ZXJUeXBlIT09Vy5TZXJ2ZXJUeXBlLlNhc2pzP1szLDJdOls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KHRoaXMubG9naW5Vcmwse3VzZXJuYW1lOkFlLnVz''@;'; put 'put ''ZXJuYW1lLHBhc3N3b3JkOkFlLnBhc3N3b3JkfSx2b2lkIDApXTtjYXNlIDE6Y2FzZSAzOnJldHVyblsyLEVlLnNlbnQoKS5yZXN1bHRdO2Nhc2UgMjpmb3IoSWUgaW4gdmUpQWVbSWVdPXZlW0llXTtyZXR1cm4gVGU9KDAsTi5zZXJpYWxpemUpKEFlKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQu''@;'; put 'put ''cG9zdCh0aGlzLmxvZ2luVXJsLFRlLHZvaWQgMCwidGV4dC9wbGFpbiIseyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLEFjY2VwdDoiKi8qIn0pXX19KX0pfSxkZS5wcm90b3R5cGUuY2hlY2tTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRo''@;'; put 'put ''aXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB2ZSxBZSxrZSxTZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKEllKXtzd2l0Y2goSWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmZldGNoVXNlck5hbWUoKV07Y2FzZSAxOnJldHVybiB2ZT1JZS5zZW50KCksa2U9dmUudXNlck5h''@;'; put 'put ''bWUsU2U9bnVsbCwoQWU9dmUuaXNMb2dnZWRJbik/WzMsNF06WzQsdGhpcy5sb2dPdXQoKV07Y2FzZSAyOnJldHVybiBJZS5zZW50KCksWzQsdGhpcy5nZXROZXdMb2dpbkZvcm0oKV07Y2FzZSAzOlNlPUllLnNlbnQoKSxJZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMixQcm9taXNlLnJlc29s''@;'; put 'put ''dmUoe2lzTG9nZ2VkSW46QWUsdXNlck5hbWU6a2UudG9Mb3dlckNhc2UoKSxsb2dpbkZvcm06U2V9KV19fSl9KX0sZGUucHJvdG90eXBlLmdldE5ld0xvZ2luRm9ybT1mdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmU7cmV0dXJuIFkodGhp''@;'; put 'put ''cyxmdW5jdGlvbihBZSl7c3dpdGNoKEFlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuc2VydmVyVHlwZT09PVcuU2VydmVyVHlwZS5TYXNqcz9bMix0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvIix2b2lkIDApLnRoZW4oZnVuY3Rpb24oa2Upe3ZhciBTZSxUZT1udWxsPT09KFNlPS88c2Ny''@;'; put 'put ''aXB0PmRvY3VtZW50LmNvb2tpZSA9ICcoWFNSRi1UT0tFTj0uKjsgTWF4LUFnZT04NjQwMDsgU2FtZVNpdGU9U3RyaWN0OyBQYXRoPVwvOyknPFwvc2NyaXB0Pi8uZXhlYyhrZS5yZXN1bHQpKXx8dm9pZCAwPT09U2U/dm9pZCAwOlNlWzFdO1RlJiYoZG9jdW1lbnQuY29va2llPVRlKX0pXTpb''@;'; put 'put ''NCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KHRoaXMubG9naW5VcmwucmVwbGFjZSgiLmRvIiwiIiksdm9pZCAwLCJ0ZXh0L3BsYWluIildO2Nhc2UgMTpyZXR1cm4gdmU9QWUuc2VudCgpLnJlc3VsdCxbNCx0aGlzLmdldExvZ2luRm9ybSh2ZSldO2Nhc2UgMjpyZXR1cm5bMixBZS5zZW50KCld''@;'; put 'put ''fX0pfSl9LGRlLnByb3RvdHlwZS5mZXRjaFVzZXJOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB2ZSxBZSxrZSxTZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKEllKXtzd2l0Y2goSWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdmU9IiIu''@;'; put 'put ''Y29uY2F0KHRoaXMuc2VydmVyVXJsLHRoaXMuc2VydmVyVHlwZT09PVcuU2VydmVyVHlwZS5TYXNWaXlhPyIvaWRlbnRpdGllcy91c2Vycy9AY3VycmVudFVzZXIiOnRoaXMuc2VydmVyVHlwZT09PVcuU2VydmVyVHlwZS5TYXM5PyIvU0FTU3RvcmVkUHJvY2VzcyI6Ii9TQVNqc0FwaS9zZXNz''@;'; put 'put ''aW9uIiksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCh2ZSx2b2lkIDAsInRleHQvcGxhaW4iKS5jYXRjaChmdW5jdGlvbihUZSl7cmV0dXJue3Jlc3VsdDoiYXV0aEVyciJ9fSldO2Nhc2UgMTpyZXR1cm4gQWU9SWUuc2VudCgpLnJlc3VsdCxTZT0oa2U9ImF1dGhFcnIiIT09QWUpP3RoaXMu''@;'; put 'put ''ZXh0cmFjdFVzZXJOYW1lKEFlKToiIixrZT9bMywzXTpbNCx0aGlzLmxvZ091dCgpXTtjYXNlIDI6SWUuc2VudCgpLEllLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyLHtpc0xvZ2dlZEluOmtlLHVzZXJOYW1lOlNlfV19fSl9KX0sZGUucHJvdG90eXBlLmdldExvZ2luRm9ybT1mdW5jdGlvbih2''@;'; put 'put ''ZSl7dmFyIEFlPS88Zm9ybS4rYWN0aW9uPSIoLipMb2dvblteIl0qKS4qPi8uZXhlYyh2ZSksa2U9e307aWYoQWUmJkFlLmxlbmd0aCl7dGhpcy5zZXRMb2dpblVybChBZSk7dmFyIFNlPXZlLm1hdGNoKC88aW5wdXQuKiJoaWRkZW4iW14+XSo+L2cpO1NlJiZTZS5mb3JFYWNoKGZ1bmN0aW9u''@;'; put 'put ''KEllKXt2YXIgVGU9SWUubWF0Y2goL25hbWU9IihbXiJdKikiXHN2YWx1ZT0iKFteIl0qKS8pO1RlJiZUZS5sZW5ndGgmJihrZVtUZVsxXV09VGVbMl0pfSl9cmV0dXJuIE9iamVjdC5rZXlzKGtlKS5sZW5ndGg/a2U6bnVsbH0sZGUucHJvdG90eXBlLmxvZ091dD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBsZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHZlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0Q2xpZW50LmNsZWFyQ3NyZlRva2VucygpLFsyLHRoaXMucmVxdWVzdENsaWVudC5nZXQodGhpcy5sb2dvdXRVcmwsdm9pZCAwKS50aGVuKGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuITB9KV19KX0pfSxkZX0oKTtRLkF1dGhNYW5hZ2VyPXNlO3ZhciBhZT1mdW5jdGlvbihkZSl7cmV0dXJuL0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRoZSBzeXN0ZW0gd2FzIHZlcmlmeWluZyB5b3VyIGNyZWRlbnRpYWxzLiBQbGVhc2UgZW50ZXIgeW91ciBjcmVkZW50''@;'; put 'put ''aWFscyBhZ2Fpbi4vZ20udGVzdChkZSl9LGZlPWZ1bmN0aW9uKGRlLHZlKXtyZXR1cm4gZGU9PT1XLlNlcnZlclR5cGUuU2FzanM/bnVsbD09dmU/dm9pZCAwOnZlLmxvZ2dlZGluOi9Zb3UgaGF2ZSBzaWduZWQgaW4vZ20udGVzdCh2ZSl9fSw1NzpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBpZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVyxOLGVlLHEpe3JldHVybiBuZXcoZWV8fChlZT1Qcm9taXNlKSkoZnVuY3Rpb24oSixzZSl7ZnVuY3Rpb24gYWUodmUpe3RyeXtkZShxLm5leHQodmUpKX1jYXRjaChBZSl7c2UoQWUpfX1mdW5jdGlvbiBmZSh2ZSl7''@;'; put 'put ''dHJ5e2RlKHEudGhyb3codmUpKX1jYXRjaChBZSl7c2UoQWUpfX1mdW5jdGlvbiBkZSh2ZSl7dmFyIEFlO3ZlLmRvbmU/Sih2ZS52YWx1ZSk6KEFlPXZlLnZhbHVlLEFlIGluc3RhbmNlb2YgZWU/QWU6bmV3IGVlKGZ1bmN0aW9uKGtlKXtrZShBZSl9KSkudGhlbihhZSxmZSl9ZGUoKHE9cS5h''@;'; put 'put ''cHBseShXLE58fFtdKSkubmV4dCgpKX0pfSxsZT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihXLE4pe3ZhciBlZSxxLEosc2UsYWU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmSlswXSl0aHJvdyBKWzFdO3JldHVybiBKWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJu''@;'; put 'put ''IHNlPXtuZXh0OmZlKDApLHRocm93OmZlKDEpLHJldHVybjpmZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHNlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHNlO2Z1bmN0aW9uIGZlKGRlKXtyZXR1cm4gZnVuY3Rpb24odmUpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihBZSl7aWYoZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YWU7KXRyeXtpZihlZT0xLHEmJihKPTImQWVbMF0/cS5yZXR1cm46QWVbMF0/cS50aHJvd3x8KChKPXEucmV0dXJuKSYmSi5jYWxsKHEpLDApOnEubmV4dCkm''@;'; put 'put ''JiEoSj1KLmNhbGwocSxBZVsxXSkpLmRvbmUpcmV0dXJuIEo7c3dpdGNoKHE9MCxKJiYoQWU9WzImQWVbMF0sSi52YWx1ZV0pLEFlWzBdKXtjYXNlIDA6Y2FzZSAxOko9QWU7YnJlYWs7Y2FzZSA0OnJldHVybiBhZS5sYWJlbCsrLHt2YWx1ZTpBZVsxXSxkb25lOiExfTtjYXNlIDU6YWUubGFi''@;'; put 'put ''ZWwrKyxxPUFlWzFdLEFlPVswXTtjb250aW51ZTtjYXNlIDc6QWU9YWUub3BzLnBvcCgpLGFlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChKPShKPWFlLnRyeXMpLmxlbmd0aD4wJiZKW0oubGVuZ3RoLTFdKXx8NiE9PUFlWzBdJiYyIT09QWVbMF0pKXthZT0wO2NvbnRpbnVl''@;'; put 'put ''fWlmKDM9PT1BZVswXSYmKCFKfHxBZVsxXT5KWzBdJiZBZVsxXTxKWzNdKSl7YWUubGFiZWw9QWVbMV07YnJlYWt9aWYoNj09PUFlWzBdJiZhZS5sYWJlbDxKWzFdKXthZS5sYWJlbD1KWzFdLEo9QWU7YnJlYWt9aWYoSiYmYWUubGFiZWw8SlsyXSl7YWUubGFiZWw9SlsyXSxhZS5vcHMucHVz''@;'; put 'put ''aChBZSk7YnJlYWt9SlsyXSYmYWUub3BzLnBvcCgpLGFlLnRyeXMucG9wKCk7Y29udGludWV9QWU9Ti5jYWxsKFcsYWUpfWNhdGNoKGtlKXtBZT1bNixrZV0scT0wfWZpbmFsbHl7ZWU9Sj0wfWlmKDUmQWVbMF0pdGhyb3cgQWVbMV07cmV0dXJue3ZhbHVlOkFlWzBdP0FlWzFdOnZvaWQgMCxk''@;'; put 'put ''b25lOiEwfX0oW2RlLHZlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZ2V0QWNjZXNzVG9rZW5Gb3JTYXNqcz12b2lkIDA7dmFyIFk9Wig5Nzc4KTtRLmdldEFjY2Vzc1Rva2VuRm9yU2FzanM9ZnVuY3Rpb24oVyxOLGVlKXtyZXR1cm4g''@;'; put 'put ''aWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oSil7c3dpdGNoKEoubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxXLnBvc3QoIi9TQVNqc0FwaS9hdXRoL3Rva2VuIix7Y2xpZW50SWQ6Tixjb2RlOmVlfSx2b2lkIDApLnRoZW4oZnVuY3Rpb24o''@;'; put 'put ''c2Upe3ZhciBhZT1zZS5yZXN1bHQ7cmV0dXJue2FjY2Vzc190b2tlbjphZS5hY2Nlc3NUb2tlbixyZWZyZXNoX3Rva2VuOmFlLnJlZnJlc2hUb2tlbn19KS5jYXRjaChmdW5jdGlvbihzZSl7dGhyb3coMCxZLnByZWZpeE1lc3NhZ2UpKHNlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGFjY2VzcyB0''@;'; put 'put ''b2tlbi4gIil9KV07Y2FzZSAxOnJldHVyblsyLEouc2VudCgpXX19KX0pfX0sMzU2OTpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT1aKDg3NjQpLkJ1ZmZlcixsZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZWUscSxKLHNlKXtyZXR1cm4gbmV3KEp8fChKPVBy''@;'; put 'put ''b21pc2UpKShmdW5jdGlvbihhZSxmZSl7ZnVuY3Rpb24gZGUoa2Upe3RyeXtBZShzZS5uZXh0KGtlKSl9Y2F0Y2goU2Upe2ZlKFNlKX19ZnVuY3Rpb24gdmUoa2Upe3RyeXtBZShzZS50aHJvdyhrZSkpfWNhdGNoKFNlKXtmZShTZSl9fWZ1bmN0aW9uIEFlKGtlKXt2YXIgU2U7a2UuZG9uZT9h''@;'; put 'put ''ZShrZS52YWx1ZSk6KFNlPWtlLnZhbHVlLFNlIGluc3RhbmNlb2YgSj9TZTpuZXcgSihmdW5jdGlvbihJZSl7SWUoU2UpfSkpLnRoZW4oZGUsdmUpfUFlKChzZT1zZS5hcHBseShlZSxxfHxbXSkpLm5leHQoKSl9KX0sWT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlZSxxKXt2''@;'; put 'put ''YXIgSixzZSxhZSxmZSxkZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZhZVswXSl0aHJvdyBhZVsxXTtyZXR1cm4gYWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZmU9e25leHQ6dmUoMCksdGhyb3c6dmUoMSkscmV0dXJuOnZlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiYoZmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZmU7ZnVuY3Rpb24gdmUoQWUpe3JldHVybiBmdW5jdGlvbihrZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXtpZihKKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGlu''@;'; put 'put ''Zy4iKTtmb3IoO2RlOyl0cnl7aWYoSj0xLHNlJiYoYWU9MiZTZVswXT9zZS5yZXR1cm46U2VbMF0/c2UudGhyb3d8fCgoYWU9c2UucmV0dXJuKSYmYWUuY2FsbChzZSksMCk6c2UubmV4dCkmJiEoYWU9YWUuY2FsbChzZSxTZVsxXSkpLmRvbmUpcmV0dXJuIGFlO3N3aXRjaChzZT0wLGFlJiYo''@;'; put 'put ''U2U9WzImU2VbMF0sYWUudmFsdWVdKSxTZVswXSl7Y2FzZSAwOmNhc2UgMTphZT1TZTticmVhaztjYXNlIDQ6cmV0dXJuIGRlLmxhYmVsKysse3ZhbHVlOlNlWzFdLGRvbmU6ITF9O2Nhc2UgNTpkZS5sYWJlbCsrLHNlPVNlWzFdLFNlPVswXTtjb250aW51ZTtjYXNlIDc6U2U9ZGUub3BzLnBv''@;'; put 'put ''cCgpLGRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChhZT0oYWU9ZGUudHJ5cykubGVuZ3RoPjAmJmFlW2FlLmxlbmd0aC0xXSl8fDYhPT1TZVswXSYmMiE9PVNlWzBdKSl7ZGU9MDtjb250aW51ZX1pZigzPT09U2VbMF0mJighYWV8fFNlWzFdPmFlWzBdJiZTZVsxXTxhZVsz''@;'; put 'put ''XSkpe2RlLmxhYmVsPVNlWzFdO2JyZWFrfWlmKDY9PT1TZVswXSYmZGUubGFiZWw8YWVbMV0pe2RlLmxhYmVsPWFlWzFdLGFlPVNlO2JyZWFrfWlmKGFlJiZkZS5sYWJlbDxhZVsyXSl7ZGUubGFiZWw9YWVbMl0sZGUub3BzLnB1c2goU2UpO2JyZWFrfWFlWzJdJiZkZS5vcHMucG9wKCksZGUu''@;'; put 'put ''dHJ5cy5wb3AoKTtjb250aW51ZX1TZT1xLmNhbGwoZWUsZGUpfWNhdGNoKEllKXtTZT1bNixJZV0sc2U9MH1maW5hbGx5e0o9YWU9MH1pZig1JlNlWzBdKXRocm93IFNlWzFdO3JldHVybnt2YWx1ZTpTZVswXT9TZVsxXTp2b2lkIDAsZG9uZTohMH19KFtBZSxrZV0pfX19O09iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdldEFjY2Vzc1Rva2VuRm9yVml5YT12b2lkIDA7dmFyIFc9Wig5Nzc4KSxOPVooMTM5NSk7US5nZXRBY2Nlc3NUb2tlbkZvclZpeWE9ZnVuY3Rpb24oZWUscSxKLHNlKXtyZXR1cm4gbGUodGhpcyx2b2lkIDAsdm9pZCAw''@;'; put 'put ''LGZ1bmN0aW9uKCl7dmFyIGFlLGZlLGRlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24odmUpe3N3aXRjaCh2ZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBhZT12b2lkIDA9PT1pZT9idG9hKHErIjoiK0opOmllLmZyb20ocSsiOiIrSikudG9TdHJpbmcoImJhc2U2NCIpLGZlPXtBdXRob3JpemF0aW9u''@;'; put 'put ''OiJCYXNpYyAiK2FlLEFjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LGRlPW5ldyBVUkxTZWFyY2hQYXJhbXMoe2dyYW50X3R5cGU6ImF1dGhvcml6YXRpb25fY29kZSIsY29kZTpzZX0pLFs0LGVlLnBvc3QoIi9TQVNMb2dvbi9vYXV0aC90b2tlbiIsZGUsdm9pZCAwLCJhcHBsaWNhdGlvbi94''@;'; put 'put ''LXd3dy1mb3JtLXVybGVuY29kZWQiLGZlKS50aGVuKGZ1bmN0aW9uKEFlKXtyZXR1cm4gQWUucmVzdWx0fSkuY2F0Y2goZnVuY3Rpb24oQWUpe3Rocm93IEFlIGluc3RhbmNlb2YgTi5DZXJ0aWZpY2F0ZUVycm9yP0FlOigwLFcucHJlZml4TWVzc2FnZSkoQWUsIkVycm9yIHdoaWxlIGdldHRp''@;'; put 'put ''bmcgYWNjZXNzIHRva2VuLiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsdmUuc2VudCgpXX19KX0pfX0sNzA0OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KSxZPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihzZSxhZSxmZSxkZSl7cmV0''@;'; put 'put ''dXJuIG5ldyhmZXx8KGZlPVByb21pc2UpKShmdW5jdGlvbih2ZSxBZSl7ZnVuY3Rpb24ga2UoVGUpe3RyeXtJZShkZS5uZXh0KFRlKSl9Y2F0Y2goRWUpe0FlKEVlKX19ZnVuY3Rpb24gU2UoVGUpe3RyeXtJZShkZS50aHJvdyhUZSkpfWNhdGNoKEVlKXtBZShFZSl9fWZ1bmN0aW9uIEllKFRl''@;'; put 'put ''KXt2YXIgRWU7VGUuZG9uZT92ZShUZS52YWx1ZSk6KEVlPVRlLnZhbHVlLEVlIGluc3RhbmNlb2YgZmU/RWU6bmV3IGZlKGZ1bmN0aW9uKGhlKXtoZShFZSl9KSkudGhlbihrZSxTZSl9SWUoKGRlPWRlLmFwcGx5KHNlLGFlfHxbXSkpLm5leHQoKSl9KX0sVz10aGlzJiZ0aGlzLl9fZ2VuZXJh''@;'; put 'put ''dG9yfHxmdW5jdGlvbihzZSxhZSl7dmFyIGZlLGRlLHZlLEFlLGtlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnZlWzBdKXRocm93IHZlWzFdO3JldHVybiB2ZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBBZT17bmV4dDpTZSgwKSx0aHJvdzpTZSgxKSxyZXR1cm46U2UoMil9''@;'; put 'put ''LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihBZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxBZTtmdW5jdGlvbiBTZShJZSl7cmV0dXJuIGZ1bmN0aW9uKFRlKXtyZXR1cm4gZnVuY3Rpb24oRWUpe2lmKGZlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVy''@;'; put 'put ''YXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2tlOyl0cnl7aWYoZmU9MSxkZSYmKHZlPTImRWVbMF0/ZGUucmV0dXJuOkVlWzBdP2RlLnRocm93fHwoKHZlPWRlLnJldHVybikmJnZlLmNhbGwoZGUpLDApOmRlLm5leHQpJiYhKHZlPXZlLmNhbGwoZGUsRWVbMV0pKS5kb25lKXJl''@;'; put 'put ''dHVybiB2ZTtzd2l0Y2goZGU9MCx2ZSYmKEVlPVsyJkVlWzBdLHZlLnZhbHVlXSksRWVbMF0pe2Nhc2UgMDpjYXNlIDE6dmU9RWU7YnJlYWs7Y2FzZSA0OnJldHVybiBrZS5sYWJlbCsrLHt2YWx1ZTpFZVsxXSxkb25lOiExfTtjYXNlIDU6a2UubGFiZWwrKyxkZT1FZVsxXSxFZT1bMF07Y29u''@;'; put 'put ''dGludWU7Y2FzZSA3OkVlPWtlLm9wcy5wb3AoKSxrZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgodmU9KHZlPWtlLnRyeXMpLmxlbmd0aD4wJiZ2ZVt2ZS5sZW5ndGgtMV0pfHw2IT09RWVbMF0mJjIhPT1FZVswXSkpe2tlPTA7Y29udGludWV9aWYoMz09PUVlWzBdJiYoIXZl''@;'; put 'put ''fHxFZVsxXT52ZVswXSYmRWVbMV08dmVbM10pKXtrZS5sYWJlbD1FZVsxXTticmVha31pZig2PT09RWVbMF0mJmtlLmxhYmVsPHZlWzFdKXtrZS5sYWJlbD12ZVsxXSx2ZT1FZTticmVha31pZih2ZSYma2UubGFiZWw8dmVbMl0pe2tlLmxhYmVsPXZlWzJdLGtlLm9wcy5wdXNoKEVlKTticmVh''@;'; put 'put ''a312ZVsyXSYma2Uub3BzLnBvcCgpLGtlLnRyeXMucG9wKCk7Y29udGludWV9RWU9YWUuY2FsbChzZSxrZSl9Y2F0Y2goaGUpe0VlPVs2LGhlXSxkZT0wfWZpbmFsbHl7ZmU9dmU9MH1pZig1JkVlWzBdKXRocm93IEVlWzFdO3JldHVybnt2YWx1ZTpFZVswXT9FZVsxXTp2b2lkIDAsZG9uZToh''@;'; put 'put ''MH19KFtJZSxUZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdldFRva2Vucz12b2lkIDA7dmFyIE49Wig2Nzk5KSxlZT1aKDM5MDApLHE9WigzNjYpLEo9WigyNDkpO1EuZ2V0VG9rZW5zPWZ1bmN0aW9uKHNlLGFlLGZlKXtyZXR1cm4g''@;'; put 'put ''dm9pZCAwPT09ZmUmJihmZT1lZS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGRlLHZlLEFlLGtlLFNlLFRlLEVlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOmlmKGRlPWllLmxvZ2dlcnx8''@;'; put 'put ''bGUsQWU9YWUucmVmcmVzaF90b2tlbixrZT1hZS5jbGllbnQsU2U9YWUuc2VjcmV0LCEoMCxOLmlzQWNjZXNzVG9rZW5FeHBpcmluZykodmU9YWUuYWNjZXNzX3Rva2VuKSYmISgwLE4uaXNSZWZyZXNoVG9rZW5FeHBpcmluZykoQWUpKXJldHVyblszLDVdO2lmKCgwLE4uaGFzVG9rZW5FeHBp''@;'; put 'put ''cmVkKShBZSkpdGhyb3cgZGUuZXJyb3IoIlVuYWJsZSB0byBvYnRhaW4gbmV3IGFjY2VzcyB0b2tlbi4gWW91ciByZWZyZXNoIHRva2VuIGhhcyBleHBpcmVkLiIpLG5ldyBFcnJvcigiVW5hYmxlIHRvIG9idGFpbiBuZXcgYWNjZXNzIHRva2VuLiBZb3VyIHJlZnJlc2ggdG9rZW4gaGFzIGV4''@;'; put 'put ''cGlyZWQuIik7cmV0dXJuIGRlLmluZm8oIlJlZnJlc2hpbmcgYWNjZXNzIGFuZCByZWZyZXNoIHRva2Vucy4iKSxmZSE9PWVlLlNlcnZlclR5cGUuU2FzVml5YT9bMywyXTpbNCwoMCxxLnJlZnJlc2hUb2tlbnNGb3JWaXlhKShzZSxrZSxTZSxBZSldO2Nhc2UgMTpyZXR1cm4gRWU9aGUuc2Vu''@;'; put 'put ''dCgpLFszLDRdO2Nhc2UgMjpyZXR1cm5bNCwoMCxKLnJlZnJlc2hUb2tlbnNGb3JTYXNqcykoc2UsQWUpXTtjYXNlIDM6RWU9aGUuc2VudCgpLGhlLmxhYmVsPTQ7Y2FzZSA0OnZlPShUZT1FZSkuYWNjZXNzX3Rva2VuLEFlPVRlLnJlZnJlc2hfdG9rZW4saGUubGFiZWw9NTtjYXNlIDU6cmV0''@;'; put 'put ''dXJuWzIse2FjY2Vzc190b2tlbjp2ZSxyZWZyZXNoX3Rva2VuOkFlLGNsaWVudDprZSxzZWNyZXQ6U2V9XX19KX0pfX0sMTUyNzpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oWSxX''@;'; put 'put ''LE4sZWUpe3ZvaWQgMD09PWVlJiYoZWU9TiksT2JqZWN0LmRlZmluZVByb3BlcnR5KFksZWUse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSl9OmZ1bmN0aW9uKFksVyxOLGVlKXt2b2lkIDA9PT1lZSYmKGVlPU4pLFlbZWVdPVdbTl19KSxsZT10aGlzJiZ0aGlz''@;'; put 'put ''Ll9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE4gaW4gWSkiZGVmYXVsdCI9PT1OfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxOKXx8aWUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbGUo''@;'; put 'put ''WigyODUxKSxRKSxsZShaKDkwOTcpLFEpLGxlKFooOTE2NiksUSl9LDkwOTc6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuaXNBdXRob3JpemVGb3JtUmVxdWlyZWQ9dm9pZCAwLFEuaXNBdXRob3JpemVGb3Jt''@;'; put 'put ''UmVxdWlyZWQ9ZnVuY3Rpb24oWil7cmV0dXJuLzxmb3JtLithY3Rpb249IiguKkxvZ29uXC9vYXV0aFwvYXV0aG9yaXplW14iXSopLio+L2dtLnRlc3QoWil9fSw5MTY2OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9''@;'; put 'put ''KSxRLmlzTG9nSW5SZXF1aXJlZD12b2lkIDAsUS5pc0xvZ0luUmVxdWlyZWQ9ZnVuY3Rpb24oWil7cmV0dXJuLzxmb3JtLithY3Rpb249IiguKkxvZ29uW14iXSopLio+L2dtLnRlc3QoWil9fSw1NDE4OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19h''@;'; put 'put ''d2FpdGVyfHxmdW5jdGlvbihOLGVlLHEsSil7cmV0dXJuIG5ldyhxfHwocT1Qcm9taXNlKSkoZnVuY3Rpb24oc2UsYWUpe2Z1bmN0aW9uIGZlKEFlKXt0cnl7dmUoSi5uZXh0KEFlKSl9Y2F0Y2goa2Upe2FlKGtlKX19ZnVuY3Rpb24gZGUoQWUpe3RyeXt2ZShKLnRocm93KEFlKSl9Y2F0Y2go''@;'; put 'put ''a2Upe2FlKGtlKX19ZnVuY3Rpb24gdmUoQWUpe3ZhciBrZTtBZS5kb25lP3NlKEFlLnZhbHVlKTooa2U9QWUudmFsdWUsa2UgaW5zdGFuY2VvZiBxP2tlOm5ldyBxKGZ1bmN0aW9uKFNlKXtTZShrZSl9KSkudGhlbihmZSxkZSl9dmUoKEo9Si5hcHBseShOLGVlfHxbXSkpLm5leHQoKSl9KX0s''@;'; put 'put ''bGU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oTixlZSl7dmFyIHEsSixzZSxhZSxmZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZzZVswXSl0aHJvdyBzZVsxXTtyZXR1cm4gc2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYWU9e25leHQ6ZGUoMCksdGhyb3c6''@;'; put 'put ''ZGUoMSkscmV0dXJuOmRlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYWU7ZnVuY3Rpb24gZGUodmUpe3JldHVybiBmdW5jdGlvbihBZSl7cmV0dXJuIGZ1bmN0aW9uKGtlKXtpZihxKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2ZlOyl0cnl7aWYocT0xLEomJihzZT0yJmtlWzBdP0oucmV0dXJuOmtlWzBdP0oudGhyb3d8fCgoc2U9Si5yZXR1cm4pJiZzZS5jYWxsKEopLDApOkoubmV4dCkmJiEoc2U9c2UuY2FsbChKLGtlWzFd''@;'; put 'put ''KSkuZG9uZSlyZXR1cm4gc2U7c3dpdGNoKEo9MCxzZSYmKGtlPVsyJmtlWzBdLHNlLnZhbHVlXSksa2VbMF0pe2Nhc2UgMDpjYXNlIDE6c2U9a2U7YnJlYWs7Y2FzZSA0OnJldHVybiBmZS5sYWJlbCsrLHt2YWx1ZTprZVsxXSxkb25lOiExfTtjYXNlIDU6ZmUubGFiZWwrKyxKPWtlWzFdLGtl''@;'; put 'put ''PVswXTtjb250aW51ZTtjYXNlIDc6a2U9ZmUub3BzLnBvcCgpLGZlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChzZT0oc2U9ZmUudHJ5cykubGVuZ3RoPjAmJnNlW3NlLmxlbmd0aC0xXSl8fDYhPT1rZVswXSYmMiE9PWtlWzBdKSl7ZmU9MDtjb250aW51ZX1pZigzPT09a2Vb''@;'; put 'put ''MF0mJighc2V8fGtlWzFdPnNlWzBdJiZrZVsxXTxzZVszXSkpe2ZlLmxhYmVsPWtlWzFdO2JyZWFrfWlmKDY9PT1rZVswXSYmZmUubGFiZWw8c2VbMV0pe2ZlLmxhYmVsPXNlWzFdLHNlPWtlO2JyZWFrfWlmKHNlJiZmZS5sYWJlbDxzZVsyXSl7ZmUubGFiZWw9c2VbMl0sZmUub3BzLnB1c2go''@;'; put 'put ''a2UpO2JyZWFrfXNlWzJdJiZmZS5vcHMucG9wKCksZmUudHJ5cy5wb3AoKTtjb250aW51ZX1rZT1lZS5jYWxsKE4sZmUpfWNhdGNoKFNlKXtrZT1bNixTZV0sSj0wfWZpbmFsbHl7cT1zZT0wfWlmKDUma2VbMF0pdGhyb3cga2VbMV07cmV0dXJue3ZhbHVlOmtlWzBdP2tlWzFdOnZvaWQgMCxk''@;'; put 'put ''b25lOiEwfX0oW3ZlLEFlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEub3BlbldlYlBhZ2U9dm9pZCAwO3ZhciBZPVooMTIxMCksVz17d2lkdGg6NTAwLGhlaWdodDo2MDB9O1Eub3BlbldlYlBhZ2U9ZnVuY3Rpb24oTixlZSxxLEope3Jl''@;'; put 'put ''dHVybiB2b2lkIDA9PT1lZSYmKGVlPSIiKSx2b2lkIDA9PT1xJiYocT1XKSxpZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgc2UsYWUsZmUsZGUsdmU7cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oQWUpe3N3aXRjaChBZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBzZT1xLndpZHRo''@;'; put 'put ''LGFlPXEuaGVpZ2h0LGZlPXNjcmVlbi53aWR0aC8yLXNlLzIsZGU9c2NyZWVuLmhlaWdodC8yLWFlLzIsKHZlPXdpbmRvdy5vcGVuKE4sZWUsInRvb2xiYXI9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx3aWR0aD0iLmNvbmNhdChzZSwiLGhlaWdodD0iKS5jb25jYXQoYWUsIixsZWZ0PSIpLmNv''@;'; put 'put ''bmNhdChmZSwiLHRvcD0iKS5jb25jYXQoZGUpKSk/WzMsMl06WzQsKG51bGwhPUo/SjpZLm9wZW5Mb2dpblByb21wdCkoKV07Y2FzZSAxOnJldHVyblsyLEFlLnNlbnQoKT93aW5kb3cub3BlbihOLGVlLCJ0b29sYmFyPTAsbG9jYXRpb249MCxtZW51YmFyPTAsd2lkdGg9Ii5jb25jYXQoc2Us''@;'; put 'put ''IixoZWlnaHQ9IikuY29uY2F0KGFlLCIsbGVmdD0iKS5jb25jYXQoZmUsIix0b3A9IikuY29uY2F0KGRlKSk6bnVsbF07Y2FzZSAyOnJldHVyblsyLHZlXX19KX0pfX0sMjQ5OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlv''@;'; put 'put ''bihXLE4sZWUscSl7cmV0dXJuIG5ldyhlZXx8KGVlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5jdGlvbiBhZSh2ZSl7dHJ5e2RlKHEubmV4dCh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGZlKHZlKXt0cnl7ZGUocS50aHJvdyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1''@;'; put 'put ''bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5zdGFuY2VvZiBlZT9BZTpuZXcgZWUoZnVuY3Rpb24oa2Upe2tlKEFlKX0pKS50aGVuKGFlLGZlKX1kZSgocT1xLmFwcGx5KFcsTnx8W10pKS5uZXh0KCkpfSl9LGxlPXRoaXMmJnRoaXMu''@;'; put 'put ''X19nZW5lcmF0b3J8fGZ1bmN0aW9uKFcsTil7dmFyIGVlLHEsSixzZSxhZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZKWzBdKXRocm93IEpbMV07cmV0dXJuIEpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gc2U9e25leHQ6ZmUoMCksdGhyb3c6ZmUoMSkscmV0dXJuOmZlKDIp''@;'; put 'put ''fSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoc2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksc2U7ZnVuY3Rpb24gZmUoZGUpe3JldHVybiBmdW5jdGlvbih2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtpZihlZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5l''@;'; put 'put ''cmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthZTspdHJ5e2lmKGVlPTEscSYmKEo9MiZBZVswXT9xLnJldHVybjpBZVswXT9xLnRocm93fHwoKEo9cS5yZXR1cm4pJiZKLmNhbGwocSksMCk6cS5uZXh0KSYmIShKPUouY2FsbChxLEFlWzFdKSkuZG9uZSlyZXR1cm4gSjtzd2l0''@;'; put 'put ''Y2gocT0wLEomJihBZT1bMiZBZVswXSxKLnZhbHVlXSksQWVbMF0pe2Nhc2UgMDpjYXNlIDE6Sj1BZTticmVhaztjYXNlIDQ6cmV0dXJuIGFlLmxhYmVsKysse3ZhbHVlOkFlWzFdLGRvbmU6ITF9O2Nhc2UgNTphZS5sYWJlbCsrLHE9QWVbMV0sQWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpBZT1h''@;'; put 'put ''ZS5vcHMucG9wKCksYWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEo9KEo9YWUudHJ5cykubGVuZ3RoPjAmJkpbSi5sZW5ndGgtMV0pfHw2IT09QWVbMF0mJjIhPT1BZVswXSkpe2FlPTA7Y29udGludWV9aWYoMz09PUFlWzBdJiYoIUp8fEFlWzFdPkpbMF0mJkFlWzFdPEpb''@;'; put 'put ''M10pKXthZS5sYWJlbD1BZVsxXTticmVha31pZig2PT09QWVbMF0mJmFlLmxhYmVsPEpbMV0pe2FlLmxhYmVsPUpbMV0sSj1BZTticmVha31pZihKJiZhZS5sYWJlbDxKWzJdKXthZS5sYWJlbD1KWzJdLGFlLm9wcy5wdXNoKEFlKTticmVha31KWzJdJiZhZS5vcHMucG9wKCksYWUudHJ5cy5w''@;'; put 'put ''b3AoKTtjb250aW51ZX1BZT1OLmNhbGwoVyxhZSl9Y2F0Y2goa2Upe0FlPVs2LGtlXSxxPTB9ZmluYWxseXtlZT1KPTB9aWYoNSZBZVswXSl0aHJvdyBBZVsxXTtyZXR1cm57dmFsdWU6QWVbMF0/QWVbMV06dm9pZCAwLGRvbmU6ITB9fShbZGUsdmVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5yZWZyZXNoVG9rZW5zRm9yU2FzanM9dm9pZCAwO3ZhciBZPVooOTc3OCk7US5yZWZyZXNoVG9rZW5zRm9yU2FzanM9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gaWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRo''@;'; put 'put ''aXMsZnVuY3Rpb24ocSl7c3dpdGNoKHEubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxXLnBvc3QoIi9TQVNqc0FwaS9hdXRoL3JlZnJlc2giLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHtBdXRob3JpemF0aW9uOiJCZWFyZXIgIitOfSkudGhlbihmdW5jdGlvbihKKXt2YXIgc2U9Si5yZXN1bHQ7cmV0''@;'; put 'put ''dXJue2FjY2Vzc190b2tlbjpzZS5hY2Nlc3NUb2tlbixyZWZyZXNoX3Rva2VuOnNlLnJlZnJlc2hUb2tlbn19KS5jYXRjaChmdW5jdGlvbihKKXt0aHJvdygwLFkucHJlZml4TWVzc2FnZSkoSiwiRXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0b2tlbnM6ICIpfSldO2Nhc2UgMTpyZXR1cm5bMixx''@;'; put 'put ''LnNlbnQoKV19fSl9KX19LDM2NjpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT1aKDg3NjQpLkJ1ZmZlcixsZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZWUscSxKLHNlKXtyZXR1cm4gbmV3KEp8fChKPVByb21pc2UpKShmdW5jdGlvbihhZSxmZSl7ZnVuY3Rp''@;'; put 'put ''b24gZGUoa2Upe3RyeXtBZShzZS5uZXh0KGtlKSl9Y2F0Y2goU2Upe2ZlKFNlKX19ZnVuY3Rpb24gdmUoa2Upe3RyeXtBZShzZS50aHJvdyhrZSkpfWNhdGNoKFNlKXtmZShTZSl9fWZ1bmN0aW9uIEFlKGtlKXt2YXIgU2U7a2UuZG9uZT9hZShrZS52YWx1ZSk6KFNlPWtlLnZhbHVlLFNlIGlu''@;'; put 'put ''c3RhbmNlb2YgSj9TZTpuZXcgSihmdW5jdGlvbihJZSl7SWUoU2UpfSkpLnRoZW4oZGUsdmUpfUFlKChzZT1zZS5hcHBseShlZSxxfHxbXSkpLm5leHQoKSl9KX0sWT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlZSxxKXt2YXIgSixzZSxhZSxmZSxkZT17bGFiZWw6MCxzZW50''@;'; put 'put ''OmZ1bmN0aW9uKCl7aWYoMSZhZVswXSl0aHJvdyBhZVsxXTtyZXR1cm4gYWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZmU9e25leHQ6dmUoMCksdGhyb3c6dmUoMSkscmV0dXJuOnZlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzfSksZmU7ZnVuY3Rpb24gdmUoQWUpe3JldHVybiBmdW5jdGlvbihrZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXtpZihKKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2RlOyl0cnl7aWYoSj0xLHNlJiYo''@;'; put 'put ''YWU9MiZTZVswXT9zZS5yZXR1cm46U2VbMF0/c2UudGhyb3d8fCgoYWU9c2UucmV0dXJuKSYmYWUuY2FsbChzZSksMCk6c2UubmV4dCkmJiEoYWU9YWUuY2FsbChzZSxTZVsxXSkpLmRvbmUpcmV0dXJuIGFlO3N3aXRjaChzZT0wLGFlJiYoU2U9WzImU2VbMF0sYWUudmFsdWVdKSxTZVswXSl7''@;'; put 'put ''Y2FzZSAwOmNhc2UgMTphZT1TZTticmVhaztjYXNlIDQ6cmV0dXJuIGRlLmxhYmVsKysse3ZhbHVlOlNlWzFdLGRvbmU6ITF9O2Nhc2UgNTpkZS5sYWJlbCsrLHNlPVNlWzFdLFNlPVswXTtjb250aW51ZTtjYXNlIDc6U2U9ZGUub3BzLnBvcCgpLGRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVm''@;'; put 'put ''YXVsdDppZighKChhZT0oYWU9ZGUudHJ5cykubGVuZ3RoPjAmJmFlW2FlLmxlbmd0aC0xXSl8fDYhPT1TZVswXSYmMiE9PVNlWzBdKSl7ZGU9MDtjb250aW51ZX1pZigzPT09U2VbMF0mJighYWV8fFNlWzFdPmFlWzBdJiZTZVsxXTxhZVszXSkpe2RlLmxhYmVsPVNlWzFdO2JyZWFrfWlmKDY9''@;'; put 'put ''PT1TZVswXSYmZGUubGFiZWw8YWVbMV0pe2RlLmxhYmVsPWFlWzFdLGFlPVNlO2JyZWFrfWlmKGFlJiZkZS5sYWJlbDxhZVsyXSl7ZGUubGFiZWw9YWVbMl0sZGUub3BzLnB1c2goU2UpO2JyZWFrfWFlWzJdJiZkZS5vcHMucG9wKCksZGUudHJ5cy5wb3AoKTtjb250aW51ZX1TZT1xLmNhbGwo''@;'; put 'put ''ZWUsZGUpfWNhdGNoKEllKXtTZT1bNixJZV0sc2U9MH1maW5hbGx5e0o9YWU9MH1pZig1JlNlWzBdKXRocm93IFNlWzFdO3JldHVybnt2YWx1ZTpTZVswXT9TZVsxXTp2b2lkIDAsZG9uZTohMH19KFtBZSxrZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KSxRLnJlZnJlc2hUb2tlbnNGb3JWaXlhPXZvaWQgMDt2YXIgVz1aKDk3NzgpLE49Wig2MjMwKTtRLnJlZnJlc2hUb2tlbnNGb3JWaXlhPWZ1bmN0aW9uKGVlLHEsSixzZSl7cmV0dXJuIGxlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBhZSxmZSxkZTtyZXR1cm4g''@;'; put 'put ''WSh0aGlzLGZ1bmN0aW9uKHZlKXtzd2l0Y2godmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYWU9dm9pZCAwPT09aWU/YnRvYShxKyI6IitKKTppZS5mcm9tKHErIjoiK0opLnRvU3RyaW5nKCJiYXNlNjQiKSxmZT17QXV0aG9yaXphdGlvbjoiQmFzaWMgIithZX0sKGRlPSJ1bmRlZmluZWQiPT10''@;'; put 'put ''eXBlb2YgRm9ybURhdGE/bmV3IE46bmV3IEZvcm1EYXRhKS5hcHBlbmQoImdyYW50X3R5cGUiLCJyZWZyZXNoX3Rva2VuIiksZGUuYXBwZW5kKCJyZWZyZXNoX3Rva2VuIixzZSksWzQsZWUucG9zdCgiL1NBU0xvZ29uL29hdXRoL3Rva2VuIixkZSx2b2lkIDAsIm11bHRpcGFydC9mb3JtLWRh''@;'; put 'put ''dGE7IGJvdW5kYXJ5PSIrZGUuX2JvdW5kYXJ5LGZlKS50aGVuKGZ1bmN0aW9uKEFlKXtyZXR1cm4gQWUucmVzdWx0fSkuY2F0Y2goZnVuY3Rpb24oQWUpe3Rocm93KDAsVy5wcmVmaXhNZXNzYWdlKShBZSwiRXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0b2tlbnM6ICIpfSldO2Nhc2UgMTpyZXR1''@;'; put 'put ''cm5bMix2ZS5zZW50KCldfX0pfSl9fSw0NTgyOmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihXLE4sZWUscSl7cmV0dXJuIG5ldyhlZXx8KGVlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5jdGlvbiBhZSh2ZSl7''@;'; put 'put ''dHJ5e2RlKHEubmV4dCh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGZlKHZlKXt0cnl7ZGUocS50aHJvdyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5zdGFuY2VvZiBlZT9B''@;'; put 'put ''ZTpuZXcgZWUoZnVuY3Rpb24oa2Upe2tlKEFlKX0pKS50aGVuKGFlLGZlKX1kZSgocT1xLmFwcGx5KFcsTnx8W10pKS5uZXh0KCkpfSl9LGxlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFcsTil7dmFyIGVlLHEsSixzZSxhZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYo''@;'; put 'put ''MSZKWzBdKXRocm93IEpbMV07cmV0dXJuIEpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gc2U9e25leHQ6ZmUoMCksdGhyb3c6ZmUoMSkscmV0dXJuOmZlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoc2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''fSksc2U7ZnVuY3Rpb24gZmUoZGUpe3JldHVybiBmdW5jdGlvbih2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtpZihlZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthZTspdHJ5e2lmKGVlPTEscSYmKEo9MiZBZVswXT9xLnJldHVy''@;'; put 'put ''bjpBZVswXT9xLnRocm93fHwoKEo9cS5yZXR1cm4pJiZKLmNhbGwocSksMCk6cS5uZXh0KSYmIShKPUouY2FsbChxLEFlWzFdKSkuZG9uZSlyZXR1cm4gSjtzd2l0Y2gocT0wLEomJihBZT1bMiZBZVswXSxKLnZhbHVlXSksQWVbMF0pe2Nhc2UgMDpjYXNlIDE6Sj1BZTticmVhaztjYXNlIDQ6''@;'; put 'put ''cmV0dXJuIGFlLmxhYmVsKysse3ZhbHVlOkFlWzFdLGRvbmU6ITF9O2Nhc2UgNTphZS5sYWJlbCsrLHE9QWVbMV0sQWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpBZT1hZS5vcHMucG9wKCksYWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEo9KEo9YWUudHJ5cykubGVuZ3RoPjAm''@;'; put 'put ''JkpbSi5sZW5ndGgtMV0pfHw2IT09QWVbMF0mJjIhPT1BZVswXSkpe2FlPTA7Y29udGludWV9aWYoMz09PUFlWzBdJiYoIUp8fEFlWzFdPkpbMF0mJkFlWzFdPEpbM10pKXthZS5sYWJlbD1BZVsxXTticmVha31pZig2PT09QWVbMF0mJmFlLmxhYmVsPEpbMV0pe2FlLmxhYmVsPUpbMV0sSj1B''@;'; put 'put ''ZTticmVha31pZihKJiZhZS5sYWJlbDxKWzJdKXthZS5sYWJlbD1KWzJdLGFlLm9wcy5wdXNoKEFlKTticmVha31KWzJdJiZhZS5vcHMucG9wKCksYWUudHJ5cy5wb3AoKTtjb250aW51ZX1BZT1OLmNhbGwoVyxhZSl9Y2F0Y2goa2Upe0FlPVs2LGtlXSxxPTB9ZmluYWxseXtlZT1KPTB9aWYo''@;'; put 'put ''NSZBZVswXSl0aHJvdyBBZVsxXTtyZXR1cm57dmFsdWU6QWVbMF0/QWVbMV06dm9pZCAwLGRvbmU6ITB9fShbZGUsdmVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS52ZXJpZnlTYXM5TG9naW49dm9pZCAwO3ZhciBZPVooNTkyOCk7US52''@;'; put 'put ''ZXJpZnlTYXM5TG9naW49ZnVuY3Rpb24oVyl7cmV0dXJuIGllKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBOLGVlLHE7cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oSil7c3dpdGNoKEoubGFiZWwpe2Nhc2UgMDpOPSExLGVlPW5ldyBEYXRlLHE9MCxKLmxhYmVsPTE7Y2FzZSAx''@;'; put 'put ''OnJldHVybls0LCgwLFkuZGVsYXkpKDFlMyldO2Nhc2UgMjppZihKLnNlbnQoKSxXLmNsb3NlZClyZXR1cm5bMyw0XTtOPVcud2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoIlNBU0xvZ29uIikmJlcud2luZG93LmRvY3VtZW50LmJvZHkuaW5uZXJUZXh0LmluY2x1ZGVzKCJZb3UgaGF2''@;'; put 'put ''ZSBzaWduZWQgaW4uIikscT0oKG5ldyBEYXRlKS52YWx1ZU9mKCktZWUudmFsdWVPZigpKS8xZTMsSi5sYWJlbD0zO2Nhc2UgMzppZighTiYmcTwzMDApcmV0dXJuWzMsMV07Si5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMix7aXNMb2dnZWRJbjpOfV19fSl9KX19LDY1NDc6ZnVuY3Rpb24oVSxR''@;'; put 'put ''LFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFcsTixlZSxxKXtyZXR1cm4gbmV3KGVlfHwoZWU9UHJvbWlzZSkpKGZ1bmN0aW9uKEosc2Upe2Z1bmN0aW9uIGFlKHZlKXt0cnl7ZGUocS5uZXh0KHZlKSl9Y2F0Y2goQWUpe3NlKEFlKX19ZnVu''@;'; put 'put ''Y3Rpb24gZmUodmUpe3RyeXtkZShxLnRocm93KHZlKSl9Y2F0Y2goQWUpe3NlKEFlKX19ZnVuY3Rpb24gZGUodmUpe3ZhciBBZTt2ZS5kb25lP0oodmUudmFsdWUpOihBZT12ZS52YWx1ZSxBZSBpbnN0YW5jZW9mIGVlP0FlOm5ldyBlZShmdW5jdGlvbihrZSl7a2UoQWUpfSkpLnRoZW4oYWUs''@;'; put 'put ''ZmUpfWRlKChxPXEuYXBwbHkoVyxOfHxbXSkpLm5leHQoKSl9KX0sbGU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVyxOKXt2YXIgZWUscSxKLHNlLGFlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkpbMF0pdGhyb3cgSlsxXTtyZXR1cm4gSlsxXX0sdHJ5czpbXSxv''@;'; put 'put ''cHM6W119O3JldHVybiBzZT17bmV4dDpmZSgwKSx0aHJvdzpmZSgxKSxyZXR1cm46ZmUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihzZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxzZTtmdW5jdGlvbiBmZShkZSl7cmV0dXJuIGZ1bmN0aW9uKHZl''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24oQWUpe2lmKGVlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2FlOyl0cnl7aWYoZWU9MSxxJiYoSj0yJkFlWzBdP3EucmV0dXJuOkFlWzBdP3EudGhyb3d8fCgoSj1xLnJldHVybikmJkouY2FsbChx''@;'; put 'put ''KSwwKTpxLm5leHQpJiYhKEo9Si5jYWxsKHEsQWVbMV0pKS5kb25lKXJldHVybiBKO3N3aXRjaChxPTAsSiYmKEFlPVsyJkFlWzBdLEoudmFsdWVdKSxBZVswXSl7Y2FzZSAwOmNhc2UgMTpKPUFlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYWUubGFiZWwrKyx7dmFsdWU6QWVbMV0sZG9uZTohMX07''@;'; put 'put ''Y2FzZSA1OmFlLmxhYmVsKysscT1BZVsxXSxBZT1bMF07Y29udGludWU7Y2FzZSA3OkFlPWFlLm9wcy5wb3AoKSxhZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1hZS50cnlzKS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1BZVswXSYmMiE9PUFlWzBdKSl7''@;'; put 'put ''YWU9MDtjb250aW51ZX1pZigzPT09QWVbMF0mJighSnx8QWVbMV0+SlswXSYmQWVbMV08SlszXSkpe2FlLmxhYmVsPUFlWzFdO2JyZWFrfWlmKDY9PT1BZVswXSYmYWUubGFiZWw8SlsxXSl7YWUubGFiZWw9SlsxXSxKPUFlO2JyZWFrfWlmKEomJmFlLmxhYmVsPEpbMl0pe2FlLmxhYmVsPUpb''@;'; put 'put ''Ml0sYWUub3BzLnB1c2goQWUpO2JyZWFrfUpbMl0mJmFlLm9wcy5wb3AoKSxhZS50cnlzLnBvcCgpO2NvbnRpbnVlfUFlPU4uY2FsbChXLGFlKX1jYXRjaChrZSl7QWU9WzYsa2VdLHE9MH1maW5hbGx5e2VlPUo9MH1pZig1JkFlWzBdKXRocm93IEFlWzFdO3JldHVybnt2YWx1ZTpBZVswXT9B''@;'; put 'put ''ZVsxXTp2b2lkIDAsZG9uZTohMH19KFtkZSx2ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzTG9nZ2VkSW5TQVNWSVlBPVEudmVyaWZ5U2FzVml5YUxvZ2luPXZvaWQgMDt2YXIgWT1aKDU5MjgpO1EudmVyaWZ5U2FzVml5YUxvZ2lu''@;'; put 'put ''PWZ1bmN0aW9uKFcpe3ZhciBOLGVlO3JldHVybiBpZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcSxKLHNlLGFlO3JldHVybiBsZSh0aGlzLGZ1bmN0aW9uKGZlKXtzd2l0Y2goZmUubGFiZWwpe2Nhc2UgMDpxPSExLEo9bmV3IERhdGUsc2U9MCxmZS5sYWJlbD0xO2Nhc2Ug''@;'; put 'put ''MTpyZXR1cm5bNCwoMCxZLmRlbGF5KSgxZTMpXTtjYXNlIDI6aWYoZmUuc2VudCgpLFcuY2xvc2VkKXJldHVyblszLDRdO3E9KDAsUS5pc0xvZ2dlZEluU0FTVklZQSkoKSxzZT0oKG5ldyBEYXRlKS52YWx1ZU9mKCktSi52YWx1ZU9mKCkpLzFlMyxmZS5sYWJlbD0zO2Nhc2UgMzppZighcSYm''@;'; put 'put ''c2U8MzAwKXJldHVyblszLDFdO2ZlLmxhYmVsPTQ7Y2FzZSA0OmFlPSExLEo9bmV3IERhdGUsZmUubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzQsKDAsWS5kZWxheSkoMWUzKV07Y2FzZSA2OmlmKGZlLnNlbnQoKSxXLmNsb3NlZClyZXR1cm5bMyw4XTthZT1XLndpbmRvdy5sb2NhdGlvbi5ocmVm''@;'; put 'put ''LmluY2x1ZGVzKCJTQVNMb2dvbiIpfHwobnVsbD09PShlZT1udWxsPT09KE49Vy53aW5kb3cuZG9jdW1lbnQuYm9keSl8fHZvaWQgMD09PU4/dm9pZCAwOk4uaW5uZXJUZXh0KXx8dm9pZCAwPT09ZWU/dm9pZCAwOmVlLmluY2x1ZGVzKCJZb3UgaGF2ZSBzaWduZWQgaW4uIikpLHNlPSgobmV3''@;'; put 'put ''IERhdGUpLnZhbHVlT2YoKS1KLnZhbHVlT2YoKSkvMWUzLGZlLmxhYmVsPTc7Y2FzZSA3OmlmKCFhZSYmc2U8MzAwKXJldHVyblszLDVdO2ZlLmxhYmVsPTg7Y2FzZSA4OnJldHVyblsyLHtpc0xvZ2dlZEluOnEmJmFlfV19fSl9KX0sUS5pc0xvZ2dlZEluU0FTVklZQT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBkb2N1bWVudC5jb29raWUuaW5jbHVkZXMoIkN1cnJlbnQtVXNlciIpJiZkb2N1bWVudC5jb29raWUuaW5jbHVkZXMoInVzZXJJZCIpfX0sNDAzNzooVSxRLFopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdl''@;'; put 'put ''bmVyYXRlRmlsZVVwbG9hZEZvcm09dm9pZCAwO3ZhciBpZT1aKDYyMzApLGxlPVooMjQwMik7US5nZW5lcmF0ZUZpbGVVcGxvYWRGb3JtPWZ1bmN0aW9uKFksVyl7Zm9yKHZhciBOIGluIFcpaWYoQXJyYXkuaXNBcnJheShXW05dKSl7dmFyIGVlPU4scT0oMCxsZS5jb252ZXJ0VG9DU1YpKFcs''@;'; put 'put ''Tik7aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PXEpdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgRm9ybURhdGEmJlkgaW5zdGFuY2Vv''@;'; put 'put ''ZiBpZSlZLmFwcGVuZChlZSxxLHtmaWxlbmFtZToiIi5jb25jYXQoZWUsIi5jc3YiKSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vY3N2In0pO2Vsc2V7dmFyIEo9bmV3IEJsb2IoW3FdLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSk7WS5hcHBlbmQoZWUsSiwiIi5jb25jYXQoZWUsIi5jc3Yi''@;'; put 'put ''KSl9fXJldHVybiBZfX0sMjE3MDooVSxRLFopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdlbmVyYXRlVGFibGVVcGxvYWRGb3JtPXZvaWQgMDt2YXIgaWU9WigyNDAyKSxsZT1aKDQ3OTkpO1EuZ2VuZXJhdGVUYWJs''@;'; put 'put ''ZVVwbG9hZEZvcm09ZnVuY3Rpb24oWSxXKXt2YXIgTj1bXSxlZT17fSxxPTA7Zm9yKHZhciBKIGluIFcpe3ErKywoMCxpZS5pc0Zvcm1hdHNUYWJsZSkoSil8fE4ucHVzaChKKTt2YXIgc2U9KDAsaWUuY29udmVydFRvQ1NWKShXLEopO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9''@;'; put 'put ''PT1zZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7c2UubGVuZ3RoPjE2ZTM/KDAsbGUuc3BsaXRDaHVua3MpKHNlKS5tYXAoZnVuY3Rpb24oYWUpe1kuYXBwZW5kKCJzYXNqcyIuY29uY2F0''@;'; put 'put ''KHEsImRhdGEiKSxhZSl9KTplZVsic2FzanMiLmNvbmNhdChxLCJkYXRhIildPXNlfXJldHVybiBlZS5zYXNqc190YWJsZXM9Ti5qb2luKCIgIikse2Zvcm1EYXRhOlkscmVxdWVzdFBhcmFtczplZX19fSwzNjA3OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRo''@;'; put 'put ''aXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihXLE4sZWUscSl7dm9pZCAwPT09cSYmKHE9ZWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLHEse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE5bZWVdfX0pfTpmdW5jdGlvbihXLE4sZWUscSl7''@;'; put 'put ''dm9pZCAwPT09cSYmKHE9ZWUpLFdbcV09TltlZV19KSxsZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oVyxOKXtmb3IodmFyIGVlIGluIFcpImRlZmF1bHQiPT09ZWV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChOLGVlKXx8aWUoTixXLGVlKX07T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBZPVooNTk1Nik7bGUoWigxMjMwKSxRKSxsZShaKDEzOTUpLFEpLGxlKFooOTgyMSksUSksbGUoWig4MzA2KSxRKSxRLmRlZmF1bHQ9WS5kZWZhdWx0fSwxNTcwOmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIGllLGxlPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaWU9ZnVuY3Rpb24oSixzZSl7cmV0dXJuKGllPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihhZSxmZSl7YWUuX19wcm90b19fPWZlfXx8ZnVuY3Rpb24o''@;'; put 'put ''YWUsZmUpe2Zvcih2YXIgZGUgaW4gZmUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZlLGRlKSYmKGFlW2RlXT1mZVtkZV0pfSkoSixzZSl9LGZ1bmN0aW9uKEosc2Upe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzZSYmbnVsbCE9PXNlKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoc2UpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIGFlKCl7dGhpcy5jb25zdHJ1Y3Rvcj1KfWllKEosc2UpLEoucHJvdG90eXBlPW51bGw9PT1zZT9PYmplY3QuY3JlYXRlKHNlKTooYWUucHJvdG90eXBlPXNl''@;'; put 'put ''LnByb3RvdHlwZSxuZXcgYWUpfSksWT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oSixzZSxhZSxmZSl7cmV0dXJuIG5ldyhhZXx8KGFlPVByb21pc2UpKShmdW5jdGlvbihkZSx2ZSl7ZnVuY3Rpb24gQWUoSWUpe3RyeXtTZShmZS5uZXh0KEllKSl9Y2F0Y2goVGUpe3ZlKFRlKX19''@;'; put 'put ''ZnVuY3Rpb24ga2UoSWUpe3RyeXtTZShmZS50aHJvdyhJZSkpfWNhdGNoKFRlKXt2ZShUZSl9fWZ1bmN0aW9uIFNlKEllKXt2YXIgVGU7SWUuZG9uZT9kZShJZS52YWx1ZSk6KFRlPUllLnZhbHVlLFRlIGluc3RhbmNlb2YgYWU/VGU6bmV3IGFlKGZ1bmN0aW9uKEVlKXtFZShUZSl9KSkudGhl''@;'; put 'put ''bihBZSxrZSl9U2UoKGZlPWZlLmFwcGx5KEosc2V8fFtdKSkubmV4dCgpKX0pfSxXPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEosc2Upe3ZhciBhZSxmZSxkZSx2ZSxBZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZkZVswXSl0aHJvdyBkZVsxXTtyZXR1cm4gZGVb''@;'; put 'put ''MV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gdmU9e25leHQ6a2UoMCksdGhyb3c6a2UoMSkscmV0dXJuOmtlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYodmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksdmU7ZnVuY3Rpb24ga2UoU2Upe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbihJZSl7cmV0dXJuIGZ1bmN0aW9uKFRlKXtpZihhZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtBZTspdHJ5e2lmKGFlPTEsZmUmJihkZT0yJlRlWzBdP2ZlLnJldHVybjpUZVswXT9mZS50aHJvd3x8KChkZT1m''@;'; put 'put ''ZS5yZXR1cm4pJiZkZS5jYWxsKGZlKSwwKTpmZS5uZXh0KSYmIShkZT1kZS5jYWxsKGZlLFRlWzFdKSkuZG9uZSlyZXR1cm4gZGU7c3dpdGNoKGZlPTAsZGUmJihUZT1bMiZUZVswXSxkZS52YWx1ZV0pLFRlWzBdKXtjYXNlIDA6Y2FzZSAxOmRlPVRlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gQWUu''@;'; put 'put ''bGFiZWwrKyx7dmFsdWU6VGVbMV0sZG9uZTohMX07Y2FzZSA1OkFlLmxhYmVsKyssZmU9VGVbMV0sVGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpUZT1BZS5vcHMucG9wKCksQWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGRlPShkZT1BZS50cnlzKS5sZW5ndGg+MCYmZGVbZGUu''@;'; put 'put ''bGVuZ3RoLTFdKXx8NiE9PVRlWzBdJiYyIT09VGVbMF0pKXtBZT0wO2NvbnRpbnVlfWlmKDM9PT1UZVswXSYmKCFkZXx8VGVbMV0+ZGVbMF0mJlRlWzFdPGRlWzNdKSl7QWUubGFiZWw9VGVbMV07YnJlYWt9aWYoNj09PVRlWzBdJiZBZS5sYWJlbDxkZVsxXSl7QWUubGFiZWw9ZGVbMV0sZGU9''@;'; put 'put ''VGU7YnJlYWt9aWYoZGUmJkFlLmxhYmVsPGRlWzJdKXtBZS5sYWJlbD1kZVsyXSxBZS5vcHMucHVzaChUZSk7YnJlYWt9ZGVbMl0mJkFlLm9wcy5wb3AoKSxBZS50cnlzLnBvcCgpO2NvbnRpbnVlfVRlPXNlLmNhbGwoSixBZSl9Y2F0Y2goRWUpe1RlPVs2LEVlXSxmZT0wfWZpbmFsbHl7YWU9''@;'; put 'put ''ZGU9MH1pZig1JlRlWzBdKXRocm93IFRlWzFdO3JldHVybnt2YWx1ZTpUZVswXT9UZVsxXTp2b2lkIDAsZG9uZTohMH19KFtTZSxJZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkNvbXB1dGVKb2JFeGVjdXRvcj12b2lkIDA7dmFyIE49''@;'; put 'put ''WigzOTAwKSxlZT1aKDEzOTUpLHE9ZnVuY3Rpb24oSil7ZnVuY3Rpb24gc2UoYWUsZmUpe3ZhciBkZT1KLmNhbGwodGhpcyxhZSxOLlNlcnZlclR5cGUuU2FzVml5YSl8fHRoaXM7cmV0dXJuIGRlLnNhc1ZpeWFBcGlDbGllbnQ9ZmUsZGV9cmV0dXJuIGxlKHNlLEopLHNlLnByb3RvdHlwZS5l''@;'; put 'put ''eGVjdXRlPWZ1bmN0aW9uKGFlLGZlLGRlLHZlLEFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIga2UsSWU9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFRlKXtyZXR1cm4ga2U9dmV8fGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxb''@;'; put 'put ''MixuZXcgUHJvbWlzZShmdW5jdGlvbihFZSxoZSl7dmFyIE87bnVsbD09PShPPUllLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1PfHxPLmV4ZWN1dGVDb21wdXRlSm9iKGFlLGRlLmNvbnRleHROYW1lLGRlLmRlYnVnLGZlLEFlLCEwLCEwKS50aGVuKGZ1bmN0aW9uKHope0llLnNhc1Zp''@;'; put 'put ''eWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdCh6LGFlLGRlLmRlYnVnKSxFZSh6LnJlc3VsdCl9KS5jYXRjaChmdW5jdGlvbih6KXtyZXR1cm4gWShJZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lPXRoaXM7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVs''@;'; put 'put ''KXtjYXNlIDA6cmV0dXJuIHogaW5zdGFuY2VvZiBlZS5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdCh6LGFlLGRlLmRlYnVnKSxoZShuZXcgZWUuRXJyb3JSZXNwb25zZShudWxsPT16P3ZvaWQgMDp6Lm1lc3NhZ2UseikpKSx6''@;'; put 'put ''IGluc3RhbmNlb2YgZWUuTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIG5lLmV4ZWN1dGUoYWUsZmUsZGUsdmUpLnRoZW4oZnVuY3Rpb24oeCl7RWUoeCl9LGZ1bmN0aW9uKHgpe2hlKHgpfSl9KSxbNCxrZSgpXSk6WzMsMl07''@;'; put 'put ''Y2FzZSAxOnJldHVybiB0ZS5zZW50KCksWzMsM107Y2FzZSAyOmhlKG5ldyBlZS5FcnJvclJlc3BvbnNlKG51bGw9PXo/dm9pZCAwOnoubWVzc2FnZSx6KSksdGUubGFiZWw9MztjYXNlIDM6cmV0dXJuWzJdfX0pfSl9KX0pXX0pfSl9LHNlfShaKDYxMTgpLkJhc2VKb2JFeGVjdXRvcik7US5D''@;'; put 'put ''b21wdXRlSm9iRXhlY3V0b3I9cX0sMzQ5MTpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZSxsZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGllPWZ1bmN0aW9uKHNlLGFlKXtyZXR1cm4oaWU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2Yg''@;'; put 'put ''QXJyYXkmJmZ1bmN0aW9uKGZlLGRlKXtmZS5fX3Byb3RvX189ZGV9fHxmdW5jdGlvbihmZSxkZSl7Zm9yKHZhciB2ZSBpbiBkZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGUsdmUpJiYoZmVbdmVdPWRlW3ZlXSl9KShzZSxhZSl9LGZ1bmN0aW9uKHNlLGFlKXtpZigi''@;'; put 'put ''ZnVuY3Rpb24iIT10eXBlb2YgYWUmJm51bGwhPT1hZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGFlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBmZSgpe3RoaXMuY29uc3RydWN0b3I9c2V9aWUoc2UsYWUpLHNl''@;'; put 'put ''LnByb3RvdHlwZT1udWxsPT09YWU/T2JqZWN0LmNyZWF0ZShhZSk6KGZlLnByb3RvdHlwZT1hZS5wcm90b3R5cGUsbmV3IGZlKX0pLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHNlLGFlLGZlLGRlKXtyZXR1cm4gbmV3KGZlfHwoZmU9UHJvbWlzZSkpKGZ1bmN0aW9uKHZlLEFl''@;'; put 'put ''KXtmdW5jdGlvbiBrZShUZSl7dHJ5e0llKGRlLm5leHQoVGUpKX1jYXRjaChFZSl7QWUoRWUpfX1mdW5jdGlvbiBTZShUZSl7dHJ5e0llKGRlLnRocm93KFRlKSl9Y2F0Y2goRWUpe0FlKEVlKX19ZnVuY3Rpb24gSWUoVGUpe3ZhciBFZTtUZS5kb25lP3ZlKFRlLnZhbHVlKTooRWU9VGUudmFs''@;'; put 'put ''dWUsRWUgaW5zdGFuY2VvZiBmZT9FZTpuZXcgZmUoZnVuY3Rpb24oaGUpe2hlKEVlKX0pKS50aGVuKGtlLFNlKX1JZSgoZGU9ZGUuYXBwbHkoc2UsYWV8fFtdKSkubmV4dCgpKX0pfSxXPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHNlLGFlKXt2YXIgZmUsZGUsdmUsQWUsa2U9''@;'; put 'put ''e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJuIHZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEFlPXtuZXh0OlNlKDApLHRocm93OlNlKDEpLHJldHVybjpTZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEFlW1N5bWJvbC5p''@;'; put 'put ''dGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEFlO2Z1bmN0aW9uIFNlKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUpe3JldHVybiBmdW5jdGlvbihFZSl7aWYoZmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7a2U7KXRy''@;'; put 'put ''eXtpZihmZT0xLGRlJiYodmU9MiZFZVswXT9kZS5yZXR1cm46RWVbMF0/ZGUudGhyb3d8fCgodmU9ZGUucmV0dXJuKSYmdmUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodmU9dmUuY2FsbChkZSxFZVsxXSkpLmRvbmUpcmV0dXJuIHZlO3N3aXRjaChkZT0wLHZlJiYoRWU9WzImRWVbMF0sdmUu''@;'; put 'put ''dmFsdWVdKSxFZVswXSl7Y2FzZSAwOmNhc2UgMTp2ZT1FZTticmVhaztjYXNlIDQ6cmV0dXJuIGtlLmxhYmVsKysse3ZhbHVlOkVlWzFdLGRvbmU6ITF9O2Nhc2UgNTprZS5sYWJlbCsrLGRlPUVlWzFdLEVlPVswXTtjb250aW51ZTtjYXNlIDc6RWU9a2Uub3BzLnBvcCgpLGtlLnRyeXMucG9w''@;'; put 'put ''KCk7Y29udGludWU7ZGVmYXVsdDppZighKCh2ZT0odmU9a2UudHJ5cykubGVuZ3RoPjAmJnZlW3ZlLmxlbmd0aC0xXSl8fDYhPT1FZVswXSYmMiE9PUVlWzBdKSl7a2U9MDtjb250aW51ZX1pZigzPT09RWVbMF0mJighdmV8fEVlWzFdPnZlWzBdJiZFZVsxXTx2ZVszXSkpe2tlLmxhYmVsPUVl''@;'; put 'put ''WzFdO2JyZWFrfWlmKDY9PT1FZVswXSYma2UubGFiZWw8dmVbMV0pe2tlLmxhYmVsPXZlWzFdLHZlPUVlO2JyZWFrfWlmKHZlJiZrZS5sYWJlbDx2ZVsyXSl7a2UubGFiZWw9dmVbMl0sa2Uub3BzLnB1c2goRWUpO2JyZWFrfXZlWzJdJiZrZS5vcHMucG9wKCksa2UudHJ5cy5wb3AoKTtjb250''@;'; put 'put ''aW51ZX1FZT1hZS5jYWxsKHNlLGtlKX1jYXRjaChoZSl7RWU9WzYsaGVdLGRlPTB9ZmluYWxseXtmZT12ZT0wfWlmKDUmRWVbMF0pdGhyb3cgRWVbMV07cmV0dXJue3ZhbHVlOkVlWzBdP0VlWzFdOnZvaWQgMCxkb25lOiEwfX0oW0llLFRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEs''@;'; put 'put ''Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuRmlsZVVwbG9hZGVyPXZvaWQgMDt2YXIgTj1aKDU5MjgpLGVlPVooMTM5NSkscT1aKDM5MDApLEo9ZnVuY3Rpb24oc2Upe2Z1bmN0aW9uIGFlKGZlLGRlLHZlLEFlKXt2YXIga2U9c2UuY2FsbCh0aGlzLGZlLGRlKXx8dGhpcztyZXR1cm4ga2Uu''@;'; put 'put ''am9ic1BhdGg9dmUsa2UucmVxdWVzdENsaWVudD1BZSxrZX1yZXR1cm4gbGUoYWUsc2UpLGFlLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGZlLGRlLHZlLEFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIga2UsU2UsSWUsVGUsRWUsaGUsTyx6LG5lLHRl''@;'; put 'put ''LHgsUCxWLFM9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKEYpe2lmKFNlPWRlLnBhcmFtcyxJZT1BZXx8ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LG51bGw9PShrZT1kZS5maWxlcyl8fCFrZS5sZW5ndGgpdGhyb3cgbmV3IGVlLkVycm9yUmVzcG9uc2UoIkF0IGxl''@;'; put 'put ''YXN0IG9uZSBmaWxlIG11c3QgYmUgcHJvdmlkZWQuIik7aWYoIWZlfHwiIj09PWZlKXRocm93IG5ldyBlZS5FcnJvclJlc3BvbnNlKCJzYXNKb2IgbXVzdCBiZSBwcm92aWRlZC4iKTtmb3IoRWUgaW4gVGU9IiIsU2UpU2UuaGFzT3duUHJvcGVydHkoRWUpJiYoVGUrPSImIi5jb25jYXQoRWUs''@;'; put 'put ''Ij0iKS5jb25jYXQoU2VbRWVdKSk7Zm9yKGhlPXZlLmFwcExvYz92ZS5hcHBMb2MucmVwbGFjZSgvXC8/JC8sIi8iKStmZS5yZXBsYWNlKC9eXC8vLCIiKTpmZSxPPSIiLmNvbmNhdCh0aGlzLmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitoZSkuY29uY2F0KFRlKSx6PW5ldyBG''@;'; put 'put ''b3JtRGF0YSxuZT0wLHRlPWtlO25lPHRlLmxlbmd0aDtuZSsrKXouYXBwZW5kKCJmaWxlIiwoeD10ZVtuZV0pLmZpbGUseC5maWxlTmFtZSk7cmV0dXJuKFA9dGhpcy5yZXF1ZXN0Q2xpZW50LmdldENzcmZUb2tlbigiZmlsZSIpKSYmei5hcHBlbmQoIl9jc3JmIixQLnZhbHVlKSx2ZS5kZWJ1''@;'; put 'put ''ZyYmei5hcHBlbmQoIl9kZWJ1ZyIsIjEzMSIpLHZlLnNlcnZlclR5cGU9PT1xLlNlcnZlclR5cGUuU2FzVml5YSYmdmUuY29udGV4dE5hbWUmJnouYXBwZW5kKCJfY29udGV4dG5hbWUiLHZlLmNvbnRleHROYW1lKSxWPXsiY2FjaGUtY29udHJvbCI6Im5vLWNhY2hlIixBY2NlcHQ6IiovKiIs''@;'; put 'put ''IkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbih5ZSxDZSl7Uy5yZXF1ZXN0Q2xpZW50LnBvc3QoTyx6LHZvaWQgMCwiYXBwbGljYXRpb24vanNvbiIsVikudGhlbihmdW5jdGlvbihEZSl7cmV0dXJuIFkoUyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIFBlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oUWUpe3N3aXRjaChRZS5sYWJlbCl7Y2FzZSAwOmlmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KERlLGZlLHZlLmRlYnVnKSxQZT1EZS5yZXN1bHQsIXZlLmRlYnVnKXJldHVyblszLDVdO3N3aXRjaCh0aGlzLnNlcnZl''@;'; put 'put ''clR5cGUpe2Nhc2UgcS5TZXJ2ZXJUeXBlLlNhc1ZpeWE6cmV0dXJuWzMsMV07Y2FzZSBxLlNlcnZlclR5cGUuU2FzOTpyZXR1cm5bMywzXX1yZXR1cm5bMyw0XTtjYXNlIDE6cmV0dXJuWzQsKDAsTi5wYXJzZVNhc1ZpeWFEZWJ1Z1Jlc3BvbnNlKShEZS5yZXN1bHQsdGhpcy5yZXF1ZXN0Q2xp''@;'; put 'put ''ZW50LHZlLnNlcnZlclVybCldO2Nhc2UgMjpyZXR1cm4gUGU9UWUuc2VudCgpLFszLDRdO2Nhc2UgMzpyZXR1cm4gUGU9InN0cmluZyI9PXR5cGVvZiBEZS5yZXN1bHQ/KDAsTi5wYXJzZVdlYm91dFJlc3BvbnNlKShEZS5yZXN1bHQsTyk6RGUucmVzdWx0LFszLDRdO2Nhc2UgNDpyZXR1cm5b''@;'; put 'put ''Myw2XTtjYXNlIDU6dGhpcy5zZXJ2ZXJUeXBlIT09cS5TZXJ2ZXJUeXBlLlNhc2pzJiYoUGU9InN0cmluZyI9PXR5cGVvZiBEZS5yZXN1bHQ/KDAsTi5nZXRWYWxpZEpzb24pKERlLnJlc3VsdCk6RGUucmVzdWx0KSxRZS5sYWJlbD02O2Nhc2UgNjpyZXR1cm4geWUoUGUpLFsyXX19KX0pfSku''@;'; put 'put ''Y2F0Y2goZnVuY3Rpb24oRGUpe3JldHVybiBZKFMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBQZT10aGlzO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oUWUpe3N3aXRjaChRZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBEZSBpbnN0YW5jZW9mIGVlLkpvYkV4ZWN1dGlvbkVycm9yJiYodGhp''@;'; put 'put ''cy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoRGUsZmUsdmUuZGVidWcpLENlKG5ldyBlZS5FcnJvclJlc3BvbnNlKG51bGw9PURlP3ZvaWQgMDpEZS5tZXNzYWdlLERlKSkpLERlIGluc3RhbmNlb2YgZWUuTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0''@;'; put 'put ''KGZ1bmN0aW9uKCl7cmV0dXJuIFBlLmV4ZWN1dGUoZmUsZGUsdmUsQWUpLnRoZW4oZnVuY3Rpb24oJGUpe3llKCRlKX0sZnVuY3Rpb24oJGUpe0NlKCRlKX0pfSksWzQsSWUoKV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gUWUuc2VudCgpLFszLDNdO2Nhc2UgMjpDZShuZXcgZWUuRXJyb3JSZXNw''@;'; put 'put ''b25zZSgiRmlsZSB1cGxvYWQgcmVxdWVzdCBmYWlsZWQuIixEZSkpLFFlLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxhZX0oWig2MTE4KS5CYXNlSm9iRXhlY3V0b3IpO1EuRmlsZVVwbG9hZGVyPUp9LDQ0NDY6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgaWUsbGU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpZT1mdW5jdGlvbihhZSxmZSl7cmV0dXJuKGllPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkZSx2ZSl7ZGUuX19wcm90b19fPXZlfXx8ZnVuY3Rpb24oZGUsdmUp''@;'; put 'put ''e2Zvcih2YXIgQWUgaW4gdmUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZlLEFlKSYmKGRlW0FlXT12ZVtBZV0pfSkoYWUsZmUpfSxmdW5jdGlvbihhZSxmZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGZlJiZudWxsIT09ZmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xh''@;'; put 'put ''c3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhmZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gZGUoKXt0aGlzLmNvbnN0cnVjdG9yPWFlfWllKGFlLGZlKSxhZS5wcm90b3R5cGU9bnVsbD09PWZlP09iamVjdC5jcmVhdGUoZmUpOihkZS5wcm90b3R5cGU9ZmUu''@;'; put 'put ''cHJvdG90eXBlLG5ldyBkZSl9KSxZPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihhZSxmZSxkZSx2ZSl7cmV0dXJuIG5ldyhkZXx8KGRlPVByb21pc2UpKShmdW5jdGlvbihBZSxrZSl7ZnVuY3Rpb24gU2UoRWUpe3RyeXtUZSh2ZS5uZXh0KEVlKSl9Y2F0Y2goaGUpe2tlKGhlKX19''@;'; put 'put ''ZnVuY3Rpb24gSWUoRWUpe3RyeXtUZSh2ZS50aHJvdyhFZSkpfWNhdGNoKGhlKXtrZShoZSl9fWZ1bmN0aW9uIFRlKEVlKXt2YXIgaGU7RWUuZG9uZT9BZShFZS52YWx1ZSk6KGhlPUVlLnZhbHVlLGhlIGluc3RhbmNlb2YgZGU/aGU6bmV3IGRlKGZ1bmN0aW9uKE8pe08oaGUpfSkpLnRoZW4o''@;'; put 'put ''U2UsSWUpfVRlKCh2ZT12ZS5hcHBseShhZSxmZXx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oYWUsZmUpe3ZhciBkZSx2ZSxBZSxrZSxTZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZBZVswXSl0aHJvdyBBZVsxXTtyZXR1cm4gQWVb''@;'; put 'put ''MV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4ga2U9e25leHQ6SWUoMCksdGhyb3c6SWUoMSkscmV0dXJuOkllKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoa2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksa2U7ZnVuY3Rpb24gSWUoVGUpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbihFZSl7cmV0dXJuIGZ1bmN0aW9uKGhlKXtpZihkZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtTZTspdHJ5e2lmKGRlPTEsdmUmJihBZT0yJmhlWzBdP3ZlLnJldHVybjpoZVswXT92ZS50aHJvd3x8KChBZT12''@;'; put 'put ''ZS5yZXR1cm4pJiZBZS5jYWxsKHZlKSwwKTp2ZS5uZXh0KSYmIShBZT1BZS5jYWxsKHZlLGhlWzFdKSkuZG9uZSlyZXR1cm4gQWU7c3dpdGNoKHZlPTAsQWUmJihoZT1bMiZoZVswXSxBZS52YWx1ZV0pLGhlWzBdKXtjYXNlIDA6Y2FzZSAxOkFlPWhlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gU2Uu''@;'; put 'put ''bGFiZWwrKyx7dmFsdWU6aGVbMV0sZG9uZTohMX07Y2FzZSA1OlNlLmxhYmVsKyssdmU9aGVbMV0saGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpoZT1TZS5vcHMucG9wKCksU2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEFlPShBZT1TZS50cnlzKS5sZW5ndGg+MCYmQWVbQWUu''@;'; put 'put ''bGVuZ3RoLTFdKXx8NiE9PWhlWzBdJiYyIT09aGVbMF0pKXtTZT0wO2NvbnRpbnVlfWlmKDM9PT1oZVswXSYmKCFBZXx8aGVbMV0+QWVbMF0mJmhlWzFdPEFlWzNdKSl7U2UubGFiZWw9aGVbMV07YnJlYWt9aWYoNj09PWhlWzBdJiZTZS5sYWJlbDxBZVsxXSl7U2UubGFiZWw9QWVbMV0sQWU9''@;'; put 'put ''aGU7YnJlYWt9aWYoQWUmJlNlLmxhYmVsPEFlWzJdKXtTZS5sYWJlbD1BZVsyXSxTZS5vcHMucHVzaChoZSk7YnJlYWt9QWVbMl0mJlNlLm9wcy5wb3AoKSxTZS50cnlzLnBvcCgpO2NvbnRpbnVlfWhlPWZlLmNhbGwoYWUsU2UpfWNhdGNoKE8pe2hlPVs2LE9dLHZlPTB9ZmluYWxseXtkZT1B''@;'; put 'put ''ZT0wfWlmKDUmaGVbMF0pdGhyb3cgaGVbMV07cmV0dXJue3ZhbHVlOmhlWzBdP2hlWzFdOnZvaWQgMCxkb25lOiEwfX0oW1RlLEVlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSmVzSm9iRXhlY3V0b3I9dm9pZCAwO3ZhciBOPVooMzkw''@;'; put 'put ''MCksZWU9WigxMzk1KSxxPVooNjExOCksSj1aKDU5MjgpLHNlPWZ1bmN0aW9uKGFlKXtmdW5jdGlvbiBmZShkZSx2ZSl7dmFyIEFlPWFlLmNhbGwodGhpcyxkZSxOLlNlcnZlclR5cGUuU2FzVml5YSl8fHRoaXM7cmV0dXJuIEFlLnNhc1ZpeWFBcGlDbGllbnQ9dmUsQWV9cmV0dXJuIGxlKGZl''@;'; put 'put ''LGFlKSxmZS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihkZSx2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIHZvaWQgMD09PUllJiYoSWU9W10pLFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFRlLGhlPXRoaXM7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihPKXtyZXR1cm4gVGU9''@;'; put 'put ''a2V8fGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbih6LG5lKXt2YXIgdGU7bnVsbD09PSh0ZT1oZS5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09dGV8fHRlLmV4ZWN1dGVKb2IoZGUsQWUuY29udGV4dE5hbWUsQWUuZGVidWcs''@;'; put 'put ''dmUsU2UpLnRoZW4oZnVuY3Rpb24oeCl7aGUuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KHgsZGUsQWUuZGVidWcpO3ZhciBQPSgwLEouYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKHgsSWUpO3ooUCl9KS5jYXRjaChmdW5jdGlvbih4KXtyZXR1cm4gWShoZSx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFA9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHggaW5zdGFuY2VvZiBlZS5Kb2JFeGVjdXRpb25FcnJvciYmKHRoaXMuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KHgsZGUsQWUu''@;'; put 'put ''ZGVidWcpLG5lKG5ldyBlZS5FcnJvclJlc3BvbnNlKG51bGw9PXg/dm9pZCAwOngubWVzc2FnZSx4KSkpLHggaW5zdGFuY2VvZiBlZS5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gUC5leGVjdXRlKGRlLHZlLEFlLGtlLFNl''@;'; put 'put ''LEllKS50aGVuKGZ1bmN0aW9uKFQpe3ooVCl9LGZ1bmN0aW9uKFQpe25lKFQpfSl9KSxbNCxUZSgpXSk6WzMsMl07Y2FzZSAxOnJldHVybiBWLnNlbnQoKSxbMywzXTtjYXNlIDI6bmUobmV3IGVlLkVycm9yUmVzcG9uc2UobnVsbD09eD92b2lkIDA6eC5tZXNzYWdlLHgpKSxWLmxhYmVsPTM7''@;'; put 'put ''Y2FzZSAzOnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxmZX0ocS5CYXNlSm9iRXhlY3V0b3IpO1EuSmVzSm9iRXhlY3V0b3I9c2V9LDYxMTg6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKE4sZWUscSxKKXtyZXR1cm4g''@;'; put 'put ''bmV3KHF8fChxPVByb21pc2UpKShmdW5jdGlvbihzZSxhZSl7ZnVuY3Rpb24gZmUoQWUpe3RyeXt2ZShKLm5leHQoQWUpKX1jYXRjaChrZSl7YWUoa2UpfX1mdW5jdGlvbiBkZShBZSl7dHJ5e3ZlKEoudGhyb3coQWUpKX1jYXRjaChrZSl7YWUoa2UpfX1mdW5jdGlvbiB2ZShBZSl7dmFyIGtl''@;'; put 'put ''O0FlLmRvbmU/c2UoQWUudmFsdWUpOihrZT1BZS52YWx1ZSxrZSBpbnN0YW5jZW9mIHE/a2U6bmV3IHEoZnVuY3Rpb24oU2Upe1NlKGtlKX0pKS50aGVuKGZlLGRlKX12ZSgoSj1KLmFwcGx5KE4sZWV8fFtdKSkubmV4dCgpKX0pfSxsZT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlv''@;'; put 'put ''bihOLGVlKXt2YXIgcSxKLHNlLGFlLGZlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnNlWzBdKXRocm93IHNlWzFdO3JldHVybiBzZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhZT17bmV4dDpkZSgwKSx0aHJvdzpkZSgxKSxyZXR1cm46ZGUoMil9LCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wmJihhZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhZTtmdW5jdGlvbiBkZSh2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtyZXR1cm4gZnVuY3Rpb24oa2Upe2lmKHEpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkg''@;'; put 'put ''ZXhlY3V0aW5nLiIpO2Zvcig7ZmU7KXRyeXtpZihxPTEsSiYmKHNlPTIma2VbMF0/Si5yZXR1cm46a2VbMF0/Si50aHJvd3x8KChzZT1KLnJldHVybikmJnNlLmNhbGwoSiksMCk6Si5uZXh0KSYmIShzZT1zZS5jYWxsKEosa2VbMV0pKS5kb25lKXJldHVybiBzZTtzd2l0Y2goSj0wLHNlJiYo''@;'; put 'put ''a2U9WzIma2VbMF0sc2UudmFsdWVdKSxrZVswXSl7Y2FzZSAwOmNhc2UgMTpzZT1rZTticmVhaztjYXNlIDQ6cmV0dXJuIGZlLmxhYmVsKysse3ZhbHVlOmtlWzFdLGRvbmU6ITF9O2Nhc2UgNTpmZS5sYWJlbCsrLEo9a2VbMV0sa2U9WzBdO2NvbnRpbnVlO2Nhc2UgNzprZT1mZS5vcHMucG9w''@;'; put 'put ''KCksZmUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHNlPShzZT1mZS50cnlzKS5sZW5ndGg+MCYmc2Vbc2UubGVuZ3RoLTFdKXx8NiE9PWtlWzBdJiYyIT09a2VbMF0pKXtmZT0wO2NvbnRpbnVlfWlmKDM9PT1rZVswXSYmKCFzZXx8a2VbMV0+c2VbMF0mJmtlWzFdPHNlWzNd''@;'; put 'put ''KSl7ZmUubGFiZWw9a2VbMV07YnJlYWt9aWYoNj09PWtlWzBdJiZmZS5sYWJlbDxzZVsxXSl7ZmUubGFiZWw9c2VbMV0sc2U9a2U7YnJlYWt9aWYoc2UmJmZlLmxhYmVsPHNlWzJdKXtmZS5sYWJlbD1zZVsyXSxmZS5vcHMucHVzaChrZSk7YnJlYWt9c2VbMl0mJmZlLm9wcy5wb3AoKSxmZS50''@;'; put 'put ''cnlzLnBvcCgpO2NvbnRpbnVlfWtlPWVlLmNhbGwoTixmZSl9Y2F0Y2goU2Upe2tlPVs2LFNlXSxKPTB9ZmluYWxseXtxPXNlPTB9aWYoNSZrZVswXSl0aHJvdyBrZVsxXTtyZXR1cm57dmFsdWU6a2VbMF0/a2VbMV06dm9pZCAwLGRvbmU6ITB9fShbdmUsQWVdKX19fTtPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5CYXNlSm9iRXhlY3V0b3I9dm9pZCAwO3ZhciBZPVooNTkyOCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIE4oZWUscSl7dmFyIEo9dGhpczt0aGlzLnNlcnZlclVybD1lZSx0aGlzLnNlcnZlclR5cGU9cSx0aGlzLndhaXRpbmdS''@;'; put 'put ''ZXF1ZXN0cz1bXSx0aGlzLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVybiBpZShKLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgc2U9dGhpcztyZXR1cm4gbGUodGhpcyxmdW5jdGlvbihhZSl7c3dpdGNoKGFlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsKDAsWS5h''@;'; put 'put ''c3luY0ZvckVhY2gpKHRoaXMud2FpdGluZ1JlcXVlc3RzLGZ1bmN0aW9uKGZlKXtyZXR1cm4gaWUoc2Usdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLGZ1bmN0aW9uKGRlKXtzd2l0Y2goZGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxmZSgpXTtjYXNlIDE6cmV0dXJu''@;'; put 'put ''IGRlLnNlbnQoKSxbMl19fSl9KX0pXTtjYXNlIDE6cmV0dXJuIGFlLnNlbnQoKSx0aGlzLndhaXRpbmdSZXF1ZXN0cz1bXSxbMl19fSl9KX19cmV0dXJuIE4ucHJvdG90eXBlLmFwcGVuZFdhaXRpbmdSZXF1ZXN0PWZ1bmN0aW9uKGVlKXt0aGlzLndhaXRpbmdSZXF1ZXN0cy5wdXNoKGVlKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuZ2V0UmVxdWVzdFBhcmFtcz1mdW5jdGlvbihlZSl7dmFyIHE9e307cmV0dXJuIGVlLmRlYnVnJiYocS5fb21pdHRleHRsb2c9ImZhbHNlIixxLl9vbWl0c2Vzc2lvbnJlc3VsdHM9ImZhbHNlIixxLl9kZWJ1Zz0xMzEpLHF9LE59KCk7US5CYXNlSm9iRXhlY3V0b3I9V30s''@;'; put 'put ''MjY5MzpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZSxsZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGllPWZ1bmN0aW9uKHZlLEFlKXtyZXR1cm4oaWU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGtlLFNl''@;'; put 'put ''KXtrZS5fX3Byb3RvX189U2V9fHxmdW5jdGlvbihrZSxTZSl7Zm9yKHZhciBJZSBpbiBTZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoU2UsSWUpJiYoa2VbSWVdPVNlW0llXSl9KSh2ZSxBZSl9LGZ1bmN0aW9uKHZlLEFlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgQWUm''@;'; put 'put ''Jm51bGwhPT1BZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKEFlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBrZSgpe3RoaXMuY29uc3RydWN0b3I9dmV9aWUodmUsQWUpLHZlLnByb3RvdHlwZT1udWxsPT09QWU/''@;'; put 'put ''T2JqZWN0LmNyZWF0ZShBZSk6KGtlLnByb3RvdHlwZT1BZS5wcm90b3R5cGUsbmV3IGtlKX0pLFk9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gWT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih2ZSl7Zm9yKHZhciBBZSxrZT0xLFNlPWFyZ3VtZW50cy5sZW5ndGg7a2U8''@;'; put 'put ''U2U7a2UrKylmb3IodmFyIEllIGluIEFlPWFyZ3VtZW50c1trZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEFlLEllKSYmKHZlW0llXT1BZVtJZV0pO3JldHVybiB2ZX0sWS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFc9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0''@;'; put 'put ''aW9uKHZlLEFlLGtlLFNlKXtyZXR1cm4gbmV3KGtlfHwoa2U9UHJvbWlzZSkpKGZ1bmN0aW9uKEllLFRlKXtmdW5jdGlvbiBFZSh6KXt0cnl7TyhTZS5uZXh0KHopKX1jYXRjaChuZSl7VGUobmUpfX1mdW5jdGlvbiBoZSh6KXt0cnl7TyhTZS50aHJvdyh6KSl9Y2F0Y2gobmUpe1RlKG5lKX19''@;'; put 'put ''ZnVuY3Rpb24gTyh6KXt2YXIgbmU7ei5kb25lP0llKHoudmFsdWUpOihuZT16LnZhbHVlLG5lIGluc3RhbmNlb2Yga2U/bmU6bmV3IGtlKGZ1bmN0aW9uKHRlKXt0ZShuZSl9KSkudGhlbihFZSxoZSl9TygoU2U9U2UuYXBwbHkodmUsQWV8fFtdKSkubmV4dCgpKX0pfSxOPXRoaXMmJnRoaXMu''@;'; put 'put ''X19nZW5lcmF0b3J8fGZ1bmN0aW9uKHZlLEFlKXt2YXIga2UsU2UsSWUsVGUsRWU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmSWVbMF0pdGhyb3cgSWVbMV07cmV0dXJuIEllWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIFRlPXtuZXh0OmhlKDApLHRocm93OmhlKDEpLHJldHVy''@;'; put 'put ''bjpoZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFRlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFRlO2Z1bmN0aW9uIGhlKE8pe3JldHVybiBmdW5jdGlvbih6KXtyZXR1cm4gZnVuY3Rpb24obmUpe2lmKGtlKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO0VlOyl0cnl7aWYoa2U9MSxTZSYmKEllPTImbmVbMF0/U2UucmV0dXJuOm5lWzBdP1NlLnRocm93fHwoKEllPVNlLnJldHVybikmJkllLmNhbGwoU2UpLDApOlNlLm5leHQpJiYhKEllPUllLmNhbGwoU2UsbmVbMV0pKS5k''@;'; put 'put ''b25lKXJldHVybiBJZTtzd2l0Y2goU2U9MCxJZSYmKG5lPVsyJm5lWzBdLEllLnZhbHVlXSksbmVbMF0pe2Nhc2UgMDpjYXNlIDE6SWU9bmU7YnJlYWs7Y2FzZSA0OnJldHVybiBFZS5sYWJlbCsrLHt2YWx1ZTpuZVsxXSxkb25lOiExfTtjYXNlIDU6RWUubGFiZWwrKyxTZT1uZVsxXSxuZT1b''@;'; put 'put ''MF07Y29udGludWU7Y2FzZSA3Om5lPUVlLm9wcy5wb3AoKSxFZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSWU9KEllPUVlLnRyeXMpLmxlbmd0aD4wJiZJZVtJZS5sZW5ndGgtMV0pfHw2IT09bmVbMF0mJjIhPT1uZVswXSkpe0VlPTA7Y29udGludWV9aWYoMz09PW5lWzBd''@;'; put 'put ''JiYoIUllfHxuZVsxXT5JZVswXSYmbmVbMV08SWVbM10pKXtFZS5sYWJlbD1uZVsxXTticmVha31pZig2PT09bmVbMF0mJkVlLmxhYmVsPEllWzFdKXtFZS5sYWJlbD1JZVsxXSxJZT1uZTticmVha31pZihJZSYmRWUubGFiZWw8SWVbMl0pe0VlLmxhYmVsPUllWzJdLEVlLm9wcy5wdXNoKG5l''@;'; put 'put ''KTticmVha31JZVsyXSYmRWUub3BzLnBvcCgpLEVlLnRyeXMucG9wKCk7Y29udGludWV9bmU9QWUuY2FsbCh2ZSxFZSl9Y2F0Y2godGUpe25lPVs2LHRlXSxTZT0wfWZpbmFsbHl7a2U9SWU9MH1pZig1Jm5lWzBdKXRocm93IG5lWzFdO3JldHVybnt2YWx1ZTpuZVswXT9uZVsxXTp2b2lkIDAs''@;'; put 'put ''ZG9uZTohMH19KFtPLHpdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TYXM5Sm9iRXhlY3V0b3I9dm9pZCAwO3ZhciBlZT1aKDYyMzApLHE9WigxMzk1KSxKPVooNTkyOCksc2U9Wig2MTE4KSxhZT1aKDc5NSksZmU9ZnVuY3Rpb24odmUp''@;'; put 'put ''e2Z1bmN0aW9uIEFlKGtlLFNlLEllLFRlLEVlKXt2YXIgaGU9dmUuY2FsbCh0aGlzLGtlLFNlKXx8dGhpcztyZXR1cm4gaGUuam9ic1BhdGg9SWUsaGUucmVxdWVzdENsaWVudD1UZSxoZS5zYXM5UmVxdWVzdENsaWVudD1uZXcgYWUuU2FzOVJlcXVlc3RDbGllbnQoa2UsRWUpLGhlfXJldHVy''@;'; put 'put ''biBsZShBZSx2ZSksQWUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oa2UsU2UsSWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBUZSxFZSxoZSxPLHosbmUsdGU9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVsKXtjYXNl''@;'; put 'put ''IDA6aWYoVGU9KDAsSi5pc1JlbGF0aXZlUGF0aCkoa2UpJiZJZS5hcHBMb2M/SWUuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikra2UucmVwbGFjZSgvXlwvLywiIik6a2UsRWU9IiIuY29uY2F0KEllLnNlcnZlclVybCkuY29uY2F0KHRoaXMuam9ic1BhdGgsIj8iKS5jb25jYXQoIl9wcm9n''@;'; put 'put ''cmFtPSIrVGUpLEVlPSIiLmNvbmNhdChFZSkuY29uY2F0KEllLnVzZXJuYW1lJiZJZS5wYXNzd29yZD8iJl91c2VybmFtZT0iK0llLnVzZXJuYW1lKyImX3Bhc3N3b3JkPSIrSWUucGFzc3dvcmQ6IiIpLEVlPSIiLmNvbmNhdChFZSkuY29uY2F0KEllLmRlYnVnPyImX2RlYnVnPTEzMSI6IiIp''@;'; put 'put ''LGhlPVkoe30sdGhpcy5nZXRSZXF1ZXN0UGFyYW1zKEllKSksTz1uZXcgZWUsU2UpdHJ5e089ZGUoTyxTZSl9Y2F0Y2goUCl7cmV0dXJuWzIsUHJvbWlzZS5yZWplY3QobmV3IHEuRXJyb3JSZXNwb25zZShudWxsPT1QP3ZvaWQgMDpQLm1lc3NhZ2UsUCkpXX1lbHNlIFNlPSIiO2Zvcih6IGlu''@;'; put 'put ''IGhlKWhlLmhhc093blByb3BlcnR5KHopJiZPLmFwcGVuZCh6LGhlW3pdKTtyZXR1cm5bNCx0aGlzLnNhczlSZXF1ZXN0Q2xpZW50LmxvZ2luKEllLnVzZXJuYW1lLEllLnBhc3N3b3JkLHRoaXMuam9ic1BhdGgpXTtjYXNlIDE6cmV0dXJuIHguc2VudCgpLG5lPVNlJiZPYmplY3Qua2V5cyhT''@;'; put 'put ''ZSkubGVuZ3RoPyJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK08uX2JvdW5kYXJ5OiJ0ZXh0L3BsYWluIixbMixuZXcgUHJvbWlzZShmdW5jdGlvbihQLFYpe3JldHVybiB0ZS5zYXM5UmVxdWVzdENsaWVudC5wb3N0KEVlLE8sdm9pZCAwLG5lLHtBY2NlcHQ6IiovKiIsQ29ubmVj''@;'; put 'put ''dGlvbjoiS2VlcC1BbGl2ZSJ9KS50aGVuKGZ1bmN0aW9uKFQpe3RlLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChULGtlLEllLmRlYnVnKSxQKFQpfSkuY2F0Y2goZnVuY3Rpb24oVCl7dmFyIFM9VDtULnJlc3VsdCYmIiIhPT1ULnJlc3VsdD9TPVQucmVzdWx0OlQubWVzc2FnZSYmKFM9''@;'; put 'put ''VC5tZXNzYWdlKSx0ZS5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoUyxrZSxJZS5kZWJ1ZyksVihuZXcgcS5FcnJvclJlc3BvbnNlKG51bGw9PVQ/dm9pZCAwOlQubWVzc2FnZSxUKSl9KX0pXX19KX0pfSxBZS5wcm90b3R5cGUuZ2V0UmVxdWVzdFBhcmFtcz1mdW5jdGlvbihrZSl7dmFy''@;'; put 'put ''IFNlPXt9O3JldHVybiBrZS5kZWJ1ZyYmKFNlLl9kZWJ1Zz0xMzEpLFNlfSxBZX0oc2UuQmFzZUpvYkV4ZWN1dG9yKTtRLlNhczlKb2JFeGVjdXRvcj1mZTt2YXIgZGU9ZnVuY3Rpb24odmUsQWUpe2Zvcih2YXIga2UgaW4gQWUpe3ZhciBTZT1rZSxJZT0oMCxKLmNvbnZlcnRUb0NTVikoQWUs''@;'; put 'put ''a2UpO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT1JZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7dmUuYXBwZW5kKFNlLEllLHtmaWxlbmFtZToiIi5jb25jYXQoU2UsIi5j''@;'; put 'put ''c3YiKSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vY3N2In0pfXJldHVybiB2ZX19LDEwNjU6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpZT1mdW5jdGlvbihkZSx2ZSl7cmV0dXJuKGllPU9iamVjdC5zZXRQcm90b3R5cGVP''@;'; put 'put ''Znx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihBZSxrZSl7QWUuX19wcm90b19fPWtlfXx8ZnVuY3Rpb24oQWUsa2Upe2Zvcih2YXIgU2UgaW4ga2UpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGtlLFNlKSYmKEFlW1NlXT1rZVtTZV0pfSko''@;'; put 'put ''ZGUsdmUpfSxmdW5jdGlvbihkZSx2ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHZlJiZudWxsIT09dmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyh2ZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gQWUoKXt0aGlz''@;'; put 'put ''LmNvbnN0cnVjdG9yPWRlfWllKGRlLHZlKSxkZS5wcm90b3R5cGU9bnVsbD09PXZlP09iamVjdC5jcmVhdGUodmUpOihBZS5wcm90b3R5cGU9dmUucHJvdG90eXBlLG5ldyBBZSl9KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9T2JqZWN0LmFzc2lnbnx8ZnVu''@;'; put 'put ''Y3Rpb24oZGUpe2Zvcih2YXIgdmUsQWU9MSxrZT1hcmd1bWVudHMubGVuZ3RoO0FlPGtlO0FlKyspZm9yKHZhciBTZSBpbiB2ZT1hcmd1bWVudHNbQWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2ZSxTZSkmJihkZVtTZV09dmVbU2VdKTtyZXR1cm4gZGV9LFkuYXBw''@;'; put 'put ''bHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihkZSx2ZSxBZSxrZSl7cmV0dXJuIG5ldyhBZXx8KEFlPVByb21pc2UpKShmdW5jdGlvbihTZSxJZSl7ZnVuY3Rpb24gVGUoTyl7dHJ5e2hlKGtlLm5leHQoTykpfWNhdGNoKHope0llKHopfX1mdW5j''@;'; put 'put ''dGlvbiBFZShPKXt0cnl7aGUoa2UudGhyb3coTykpfWNhdGNoKHope0llKHopfX1mdW5jdGlvbiBoZShPKXt2YXIgejtPLmRvbmU/U2UoTy52YWx1ZSk6KHo9Ty52YWx1ZSx6IGluc3RhbmNlb2YgQWU/ejpuZXcgQWUoZnVuY3Rpb24obmUpe25lKHopfSkpLnRoZW4oVGUsRWUpfWhlKChrZT1r''@;'; put 'put ''ZS5hcHBseShkZSx2ZXx8W10pKS5uZXh0KCkpfSl9LE49dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZGUsdmUpe3ZhciBBZSxrZSxTZSxJZSxUZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm4gU2VbMV19LHRyeXM6W10sb3Bz''@;'; put 'put ''OltdfTtyZXR1cm4gSWU9e25leHQ6RWUoMCksdGhyb3c6RWUoMSkscmV0dXJuOkVlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoSWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSWU7ZnVuY3Rpb24gRWUoaGUpe3JldHVybiBmdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oeil7aWYoQWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7VGU7KXRyeXtpZihBZT0xLGtlJiYoU2U9MiZ6WzBdP2tlLnJldHVybjp6WzBdP2tlLnRocm93fHwoKFNlPWtlLnJldHVybikmJlNlLmNhbGwo''@;'; put 'put ''a2UpLDApOmtlLm5leHQpJiYhKFNlPVNlLmNhbGwoa2UselsxXSkpLmRvbmUpcmV0dXJuIFNlO3N3aXRjaChrZT0wLFNlJiYoej1bMiZ6WzBdLFNlLnZhbHVlXSkselswXSl7Y2FzZSAwOmNhc2UgMTpTZT16O2JyZWFrO2Nhc2UgNDpyZXR1cm4gVGUubGFiZWwrKyx7dmFsdWU6elsxXSxkb25l''@;'; put 'put ''OiExfTtjYXNlIDU6VGUubGFiZWwrKyxrZT16WzFdLHo9WzBdO2NvbnRpbnVlO2Nhc2UgNzp6PVRlLm9wcy5wb3AoKSxUZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoU2U9KFNlPVRlLnRyeXMpLmxlbmd0aD4wJiZTZVtTZS5sZW5ndGgtMV0pfHw2IT09elswXSYmMiE9PXpb''@;'; put 'put ''MF0pKXtUZT0wO2NvbnRpbnVlfWlmKDM9PT16WzBdJiYoIVNlfHx6WzFdPlNlWzBdJiZ6WzFdPFNlWzNdKSl7VGUubGFiZWw9elsxXTticmVha31pZig2PT09elswXSYmVGUubGFiZWw8U2VbMV0pe1RlLmxhYmVsPVNlWzFdLFNlPXo7YnJlYWt9aWYoU2UmJlRlLmxhYmVsPFNlWzJdKXtUZS5s''@;'; put 'put ''YWJlbD1TZVsyXSxUZS5vcHMucHVzaCh6KTticmVha31TZVsyXSYmVGUub3BzLnBvcCgpLFRlLnRyeXMucG9wKCk7Y29udGludWV9ej12ZS5jYWxsKGRlLFRlKX1jYXRjaChuZSl7ej1bNixuZV0sa2U9MH1maW5hbGx5e0FlPVNlPTB9aWYoNSZ6WzBdKXRocm93IHpbMV07cmV0dXJue3ZhbHVl''@;'; put 'put ''OnpbMF0/elsxXTp2b2lkIDAsZG9uZTohMH19KFtoZSxPXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU2FzanNKb2JFeGVjdXRvcj12b2lkIDA7dmFyIGVlPVooNjIzMCkscT1aKDM5MDApLEo9WigxMzk1KSxzZT1aKDQwMzcpLGFlPVoo''@;'; put 'put ''NTkyOCksZmU9ZnVuY3Rpb24oZGUpe2Z1bmN0aW9uIHZlKEFlLGtlLFNlKXt2YXIgSWU9ZGUuY2FsbCh0aGlzLEFlLHEuU2VydmVyVHlwZS5TYXNqcyl8fHRoaXM7cmV0dXJuIEllLmpvYnNQYXRoPWtlLEllLnJlcXVlc3RDbGllbnQ9U2UsSWV9cmV0dXJuIGxlKHZlLGRlKSx2ZS5wcm90b3R5''@;'; put 'put ''cGUuZXhlY3V0ZT1mdW5jdGlvbihBZSxrZSxTZSxJZSxUZSxFZSl7cmV0dXJuIHZvaWQgMD09PUVlJiYoRWU9W10pLFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGhlLE8seixuZSx0ZSx4LFAsVD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oUyl7aWYoaGU9SWUsTz0o''@;'; put 'put ''MCxhZS5pc1JlbGF0aXZlUGF0aCkoQWUpJiZTZS5hcHBMb2M/U2UuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrQWUucmVwbGFjZSgvXlwvLywiIik6QWUsej0iIi5jb25jYXQoU2Uuc2VydmVyVXJsKS5jb25jYXQodGhpcy5qb2JzUGF0aCwiLz8iKS5jb25jYXQoIl9wcm9ncmFtPSIrTyks''@;'; put 'put ''bmU9WSh7fSx0aGlzLmdldFJlcXVlc3RQYXJhbXMoU2UpKSx0ZT0idW5kZWZpbmVkIj09dHlwZW9mIEZvcm1EYXRhP25ldyBlZTpuZXcgRm9ybURhdGEsa2UpdHJ5e3RlPSgwLHNlLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm0pKHRlLGtlKX1jYXRjaChGKXtyZXR1cm5bMixQcm9taXNlLnJlamVj''@;'; put 'put ''dChuZXcgSi5FcnJvclJlc3BvbnNlKG51bGw9PUY/dm9pZCAwOkYubWVzc2FnZSxGKSldfWZvcih4IGluIG5lKW5lLmhhc093blByb3BlcnR5KHgpJiZ0ZS5hcHBlbmQoeCxuZVt4XSk7cmV0dXJuIFA9dGUgaW5zdGFuY2VvZiBlZSYmInVuZGVmaW5lZCI9PXR5cGVvZiBGb3JtRGF0YT8ibXVs''@;'; put 'put ''dGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9Ii5jb25jYXQodGUuZ2V0Qm91bmRhcnkoKSk6dm9pZCAwLFsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKEYseWUpe1QucmVxdWVzdENsaWVudC5wb3N0KHosdGUsbnVsbD09VGU/dm9pZCAwOlRlLmFjY2Vzc190b2tlbixQKS50aGVuKGZ1bmN0aW9u''@;'; put 'put ''KENlKXtyZXR1cm4gVyhULHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRGU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihQZSl7aWYoT2JqZWN0LmVudHJpZXMoQ2UucmVzdWx0KS5sZW5ndGg8MSl0aHJvdyBuZXcgSi5Kb2JFeGVjdXRpb25FcnJvcigwLCJObyB3ZWJvdXQgd2FzIHJldHVy''@;'; put 'put ''bmVkIGJ5IGpvYiAiLmNvbmNhdChPLCIuICBQbGVhc2UgY2hlY2sgdGhlIFNBUyBsb2cgZm9yIG1vcmUgaW5mby4iKSxDZS5sb2cpO3JldHVybiB0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChDZSxBZSxTZS5kZWJ1ZyksRGU9KDAsYWUuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJp''@;'; put 'put ''YnV0ZXMpKENlLEVlKSxGKERlKSxbMl19KX0pfSkuY2F0Y2goZnVuY3Rpb24oQ2Upe3JldHVybiBXKFQsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBEZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oUGUpe3N3aXRjaChQZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBDZSBpbnN0YW5j''@;'; put 'put ''ZW9mIEouSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChDZSxBZSxTZS5kZWJ1ZykseWUobmV3IEouRXJyb3JSZXNwb25zZShudWxsPT1DZT92b2lkIDA6Q2UubWVzc2FnZSxDZSkpKSxDZSBpbnN0YW5jZW9mIEouTG9naW5SZXF1aXJlZEVycm9y''@;'; put 'put ''PyhJZXx8eWUobmV3IEouRXJyb3JSZXNwb25zZSgiUmVxdWVzdCBpcyBub3QgYXV0aGVudGljYXRlZC4gTWFrZSBzdXJlIC5lbnYgZmlsZSBleGlzdHMgd2l0aCB2YWxpZCBjcmVkZW50aWFscy4iLENlKSksdGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdChmdW5jdGlvbigpe3JldHVybiBEZS5l''@;'; put 'put ''eGVjdXRlKEFlLGtlLFNlLEllLFRlLEVlKS50aGVuKGZ1bmN0aW9uKFFlKXtGKFFlKX0sZnVuY3Rpb24oUWUpe3llKFFlKX0pfSksaGU/WzQsaGUoKV06WzMsMl0pOlszLDNdO2Nhc2UgMTpQZS5zZW50KCksUGUubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzMsNF07Y2FzZSAzOnllKG5ldyBKLkVy''@;'; put 'put ''cm9yUmVzcG9uc2UobnVsbD09Q2U/dm9pZCAwOkNlLm1lc3NhZ2UsQ2UpKSxQZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pfSldfSl9KX0sdmV9KFooNjExOCkuQmFzZUpvYkV4ZWN1dG9yKTtRLlNhc2pzSm9iRXhlY3V0b3I9ZmV9LDYwODQ6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgaWUsbGU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpZT1mdW5jdGlvbihrZSxTZSl7cmV0dXJuKGllPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihJZSxUZSl7SWUuX19wcm90b19fPVRlfXx8ZnVuY3Rp''@;'; put 'put ''b24oSWUsVGUpe2Zvcih2YXIgRWUgaW4gVGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFRlLEVlKSYmKEllW0VlXT1UZVtFZV0pfSkoa2UsU2UpfSxmdW5jdGlvbihrZSxTZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFNlJiZudWxsIT09U2UpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhTZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gSWUoKXt0aGlzLmNvbnN0cnVjdG9yPWtlfWllKGtlLFNlKSxrZS5wcm90b3R5cGU9bnVsbD09PVNlP09iamVjdC5jcmVhdGUoU2UpOihJZS5wcm90''@;'; put 'put ''b3R5cGU9U2UucHJvdG90eXBlLG5ldyBJZSl9KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oa2Upe2Zvcih2YXIgU2UsSWU9MSxUZT1hcmd1bWVudHMubGVuZ3RoO0llPFRlO0llKyspZm9yKHZhciBFZSBpbiBTZT1h''@;'; put 'put ''cmd1bWVudHNbSWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChTZSxFZSkmJihrZVtFZV09U2VbRWVdKTtyZXR1cm4ga2V9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihrZSxTZSxJZSxUZSl7cmV0dXJuIG5l''@;'; put 'put ''dyhJZXx8KEllPVByb21pc2UpKShmdW5jdGlvbihFZSxoZSl7ZnVuY3Rpb24gTyh0ZSl7dHJ5e25lKFRlLm5leHQodGUpKX1jYXRjaCh4KXtoZSh4KX19ZnVuY3Rpb24geih0ZSl7dHJ5e25lKFRlLnRocm93KHRlKSl9Y2F0Y2goeCl7aGUoeCl9fWZ1bmN0aW9uIG5lKHRlKXt2YXIgeDt0ZS5k''@;'; put 'put ''b25lP0VlKHRlLnZhbHVlKTooeD10ZS52YWx1ZSx4IGluc3RhbmNlb2YgSWU/eDpuZXcgSWUoZnVuY3Rpb24oUCl7UCh4KX0pKS50aGVuKE8seil9bmUoKFRlPVRlLmFwcGx5KGtlLFNlfHxbXSkpLm5leHQoKSl9KX0sTj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihrZSxTZSl7''@;'; put 'put ''dmFyIEllLFRlLEVlLGhlLE89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmRWVbMF0pdGhyb3cgRWVbMV07cmV0dXJuIEVlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGhlPXtuZXh0OnooMCksdGhyb3c6eigxKSxyZXR1cm46eigyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmKGhlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGhlO2Z1bmN0aW9uIHoobmUpe3JldHVybiBmdW5jdGlvbih0ZSl7cmV0dXJuIGZ1bmN0aW9uKHgpe2lmKEllKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4i''@;'; put 'put ''KTtmb3IoO087KXRyeXtpZihJZT0xLFRlJiYoRWU9MiZ4WzBdP1RlLnJldHVybjp4WzBdP1RlLnRocm93fHwoKEVlPVRlLnJldHVybikmJkVlLmNhbGwoVGUpLDApOlRlLm5leHQpJiYhKEVlPUVlLmNhbGwoVGUseFsxXSkpLmRvbmUpcmV0dXJuIEVlO3N3aXRjaChUZT0wLEVlJiYoeD1bMiZ4''@;'; put 'put ''WzBdLEVlLnZhbHVlXSkseFswXSl7Y2FzZSAwOmNhc2UgMTpFZT14O2JyZWFrO2Nhc2UgNDpyZXR1cm4gTy5sYWJlbCsrLHt2YWx1ZTp4WzFdLGRvbmU6ITF9O2Nhc2UgNTpPLmxhYmVsKyssVGU9eFsxXSx4PVswXTtjb250aW51ZTtjYXNlIDc6eD1PLm9wcy5wb3AoKSxPLnRyeXMucG9wKCk7''@;'; put 'put ''Y29udGludWU7ZGVmYXVsdDppZighKChFZT0oRWU9Ty50cnlzKS5sZW5ndGg+MCYmRWVbRWUubGVuZ3RoLTFdKXx8NiE9PXhbMF0mJjIhPT14WzBdKSl7Tz0wO2NvbnRpbnVlfWlmKDM9PT14WzBdJiYoIUVlfHx4WzFdPkVlWzBdJiZ4WzFdPEVlWzNdKSl7Ty5sYWJlbD14WzFdO2JyZWFrfWlm''@;'; put 'put ''KDY9PT14WzBdJiZPLmxhYmVsPEVlWzFdKXtPLmxhYmVsPUVlWzFdLEVlPXg7YnJlYWt9aWYoRWUmJk8ubGFiZWw8RWVbMl0pe08ubGFiZWw9RWVbMl0sTy5vcHMucHVzaCh4KTticmVha31FZVsyXSYmTy5vcHMucG9wKCksTy50cnlzLnBvcCgpO2NvbnRpbnVlfXg9U2UuY2FsbChrZSxPKX1j''@;'; put 'put ''YXRjaChQKXt4PVs2LFBdLFRlPTB9ZmluYWxseXtJZT1FZT0wfWlmKDUmeFswXSl0aHJvdyB4WzFdO3JldHVybnt2YWx1ZTp4WzBdP3hbMV06dm9pZCAwLGRvbmU6ITB9fShbbmUsdGVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5XZWJK''@;'; put 'put ''b2JFeGVjdXRvcj12b2lkIDA7dmFyIGVlPVooNjIzMCkscT1aKDM5MDApLEo9WigxMzk1KSxzZT1aKDQwMzcpLGFlPVooMjE3MCksZmU9Wig1OTI4KSxkZT1aKDYxMTgpLHZlPVooMjgxMyksQWU9ZnVuY3Rpb24oa2Upe2Z1bmN0aW9uIFNlKEllLFRlLEVlLGhlLE8pe3ZhciB6PWtlLmNhbGwo''@;'; put 'put ''dGhpcyxJZSxUZSl8fHRoaXM7cmV0dXJuIHouam9ic1BhdGg9RWUsei5yZXF1ZXN0Q2xpZW50PWhlLHouc2FzVml5YUFwaUNsaWVudD1PLHp9cmV0dXJuIGxlKFNlLGtlKSxTZS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihJZSxUZSxFZSxoZSxPLHope3JldHVybiB2b2lkIDA9PT16JiYo''@;'; put 'put ''ej1bXSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmUsdGUseCxQLFYsVCxTLEYseWUsRGUsUGUsUWUsZ3Q9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHl0KXtzd2l0Y2goeXQubGFiZWwpe2Nhc2UgMDppZihuZT1oZSx0ZT0oMCxmZS5pc1JlbGF0aXZlUGF0aCko''@;'; put 'put ''SWUpJiZFZS5hcHBMb2M/RWUuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrSWUucmVwbGFjZSgvXlwvLywiIik6SWUseD0iIi5jb25jYXQoRWUuc2VydmVyVXJsKS5jb25jYXQodGhpcy5qb2JzUGF0aCwiLz8iKS5jb25jYXQoIl9wcm9ncmFtPSIrdGUpLEVlLnNlcnZlclR5cGUhPT1xLlNl''@;'; put 'put ''cnZlclR5cGUuU2FzVml5YSlyZXR1cm5bMyw1XTtQPXZvaWQgMCx5dC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4geXQudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCx0aGlzLmdldEpvYlVyaShJZSldO2Nhc2UgMjpyZXR1cm4gUD15dC5zZW50KCksWzMsNF07Y2FzZSAzOnJldHVybiBWPXl0LnNlbnQo''@;'; put 'put ''KSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihwdCxtdCl7cmV0dXJuIFcoZ3Qsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB2dD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oZnQpe3N3aXRjaChmdC5sYWJlbCl7Y2FzZSAwOnJldHVybiBWIGluc3RhbmNlb2YgSi5Mb2dpblJlcXVp''@;'; put 'put ''cmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gdnQuZXhlY3V0ZShJZSxUZSxFZSxoZSxPLHopLnRoZW4oZnVuY3Rpb24oRnQpe3B0KEZ0KX0sZnVuY3Rpb24oRnQpe210KEZ0KX0pfSksbmU/WzQsbmUoKV06WzMsMl0pOlszLDNdO2Nhc2UgMTpm''@;'; put 'put ''dC5zZW50KCksZnQubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzMsNF07Y2FzZSAzOm10KG5ldyBKLkVycm9yUmVzcG9uc2UobnVsbD09Vj92b2lkIDA6Vi5tZXNzYWdlLFYpKSxmdC5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pXTtjYXNlIDQ6eCs9UC5sZW5ndGg+MD8iJl9qb2I9IitQ''@;'; put 'put ''OiIiLFAubGVuZ3RoPjAmJih4PSh4Kz0iJl9qb2I9IitQKS5yZXBsYWNlKCJfcHJvZ3JhbT0iLCJfX3Byb2dyYW09IikpLHgrPUVlLmNvbnRleHROYW1lJiYhL1xzLy50ZXN0KEVlLmNvbnRleHROYW1lKT8iJl9jb250ZXh0bmFtZT0iLmNvbmNhdChFZS5jb250ZXh0TmFtZSk6IiIseXQubGFi''@;'; put 'put ''ZWw9NTtjYXNlIDU6aWYoVD1ZKHt9LHRoaXMuZ2V0UmVxdWVzdFBhcmFtcyhFZSkpLFM9InVuZGVmaW5lZCI9PXR5cGVvZiBGb3JtRGF0YT9uZXcgZWU6bmV3IEZvcm1EYXRhLFRlKWlmKEY9SlNPTi5zdHJpbmdpZnkoVGUpLEVlLnNlcnZlclR5cGU9PT1xLlNlcnZlclR5cGUuU2FzOXx8Ri5s''@;'; put 'put ''ZW5ndGg+NWU1fHxGLmluY2x1ZGVzKCI7IikpdHJ5e1M9KDAsc2UuZ2VuZXJhdGVGaWxlVXBsb2FkRm9ybSkoUyxUZSl9Y2F0Y2gocHQpe3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBKLkVycm9yUmVzcG9uc2UobnVsbD09cHQ/dm9pZCAwOnB0Lm1lc3NhZ2UscHQpKV19ZWxzZSB0cnl7''@;'; put 'put ''eWU9KDAsYWUuZ2VuZXJhdGVUYWJsZVVwbG9hZEZvcm0pKFMsVGUpLERlPXllLnJlcXVlc3RQYXJhbXMsUz15ZS5mb3JtRGF0YSxUPVkoWSh7fSxUKSxEZSl9Y2F0Y2gocHQpe3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBKLkVycm9yUmVzcG9uc2UobnVsbD09cHQ/dm9pZCAwOnB0Lm1l''@;'; put 'put ''c3NhZ2UscHQpKV19Zm9yKFBlIGluIFQpVC5oYXNPd25Qcm9wZXJ0eShQZSkmJlMuYXBwZW5kKFBlLFRbUGVdKTtyZXR1cm4gUWU9UyBpbnN0YW5jZW9mIGVlJiYidW5kZWZpbmVkIj09dHlwZW9mIEZvcm1EYXRhPyJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iLmNvbmNhdChTLmdl''@;'; put 'put ''dEJvdW5kYXJ5KCkpOnZvaWQgMCxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihwdCxtdCl7Z3QucmVxdWVzdENsaWVudC5wb3N0KHgsUyxudWxsPT1PP3ZvaWQgMDpPLmFjY2Vzc190b2tlbixRZSkudGhlbihmdW5jdGlvbih2dCl7cmV0dXJuIFcoZ3Qsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBmdCxGdDtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKG9uKXtzd2l0Y2gob24ubGFiZWwpe2Nhc2UgMDppZih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdCh2dCxJZSxFZS5kZWJ1ZyksZnQ9dnQucmVzdWx0LCFFZS5kZWJ1ZylyZXR1cm5bMyw0XTtzd2l0Y2godGhpcy5zZXJ2''@;'; put 'put ''ZXJUeXBlKXtjYXNlIHEuU2VydmVyVHlwZS5TYXNWaXlhOnJldHVyblszLDFdO2Nhc2UgcS5TZXJ2ZXJUeXBlLlNhczk6cmV0dXJuWzMsM119cmV0dXJuWzMsNF07Y2FzZSAxOnJldHVybls0LCgwLGZlLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2UpKHZ0LnJlc3VsdCx0aGlzLnJlcXVlc3RD''@;'; put 'put ''bGllbnQsdGhpcy5zZXJ2ZXJVcmwpXTtjYXNlIDI6cmV0dXJuIGZ0PW9uLnNlbnQoKSxbMyw0XTtjYXNlIDM6cmV0dXJuIGZ0PSJzdHJpbmciPT10eXBlb2YgdnQucmVzdWx0PygwLHZlLnBhcnNlV2Vib3V0UmVzcG9uc2UpKHZ0LnJlc3VsdCx4KTp2dC5yZXN1bHQsWzMsNF07Y2FzZSA0OnJl''@;'; put 'put ''dHVybiBGdD0oMCxmZS5hcHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcykoe3Jlc3VsdDpmdCxsb2c6dnQubG9nfSx6KSxwdChGdCksWzJdfX0pfSl9KS5jYXRjaChmdW5jdGlvbih2dCl7cmV0dXJuIFcoZ3Qsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBmdD10aGlzO3JldHVybiBO''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24oRnQpe3N3aXRjaChGdC5sYWJlbCl7Y2FzZSAwOnJldHVybiB2dCBpbnN0YW5jZW9mIEouSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdCh2dCxJZSxFZS5kZWJ1ZyksbXQobmV3IEouRXJyb3JSZXNwb25zZShudWxsPT12''@;'; put 'put ''dD92b2lkIDA6dnQubWVzc2FnZSx2dCkpKSx2dCBpbnN0YW5jZW9mIEouTG9naW5SZXF1aXJlZEVycm9yPyhoZXx8bXQobmV3IEouRXJyb3JSZXNwb25zZSgiUmVxdWVzdCBpcyBub3QgYXV0aGVudGljYXRlZC4gTWFrZSBzdXJlIC5lbnYgZmlsZSBleGlzdHMgd2l0aCB2YWxpZCBjcmVkZW50''@;'; put 'put ''aWFscy4iLHZ0KSksdGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdChmdW5jdGlvbigpe3JldHVybiBmdC5leGVjdXRlKEllLFRlLEVlLGhlLE8seikudGhlbihmdW5jdGlvbihvbil7cHQob24pfSxmdW5jdGlvbihvbil7bXQob24pfSl9KSxuZT9bNCxuZSgpXTpbMywyXSk6WzMsM107Y2FzZSAx''@;'; put 'put ''OkZ0LnNlbnQoKSxGdC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMyw0XTtjYXNlIDM6bXQobmV3IEouRXJyb3JSZXNwb25zZShudWxsPT12dD92b2lkIDA6dnQubWVzc2FnZSx2dCkpLEZ0LmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyXX19KX0pfSl9KV19fSl9KX0sU2UucHJvdG90eXBlLmdldEpv''@;'; put 'put ''YlVyaT1mdW5jdGlvbihJZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFRlLEVlLGhlLE8seixuZTtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHRlKXtzd2l0Y2godGUubGFiZWwpe2Nhc2UgMDppZighdGhpcy5zYXNWaXlhQXBpQ2xpZW50KXJldHVyblsyLCIi''@;'; put 'put ''XTtpZihUZT0iIiwoMCxmZS5pc1JlbGF0aXZlUGF0aCkoSWUpPyhPPUllLnNwbGl0KCIvIiksRWU9Ty5sZW5ndGg+MT9PWzBdOiIiLGhlPU8ubGVuZ3RoPjE/T1sxXToiIik6KE89SWUuc3BsaXQoIi8iKSxoZT1PLnBvcCgpfHwiIixFZT1PLmpvaW4oIi8iKSksIWhlKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiSm9iIG5hbWUgaXMgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRKb2JzSW5Gb2xkZXIoRWUpXTtjYXNlIDE6cmV0dXJuKHo9dGUuc2VudCgpKSYmKG5lPXouZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uYW1lPT09aGUm''@;'; put 'put ''JiJqb2JEZWZpbml0aW9uIj09PXguY29udGVudFR5cGV9KSkmJihUZT1uZS51cmkpLFsyLFRlXX19KX0pfSxTZX0oZGUuQmFzZUpvYkV4ZWN1dG9yKTtRLldlYkpvYkV4ZWN1dG9yPUFlfSw4MjE3OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19jcmVh''@;'; put 'put ''dGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTixlZSl7dm9pZCAwPT09ZWUmJihlZT1OKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWSxlZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV1tOXX19KX06ZnVuY3Rpb24oWSxXLE4sZWUpe3ZvaWQgMD09''@;'; put 'put ''PWVlJiYoZWU9TiksWVtlZV09V1tOXX0pLGxlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihZLFcpe2Zvcih2YXIgTiBpbiBZKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLE4pfHxpZShXLFksTil9O09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsZShaKDE1NzApLFEpLGxlKFooMzQ5MSksUSksbGUoWig0NDQ2KSxRKSxsZShaKDYxMTgpLFEpLGxlKFooMjY5MyksUSksbGUoWig2MDg0KSxRKSxsZShaKDEwNjUpLFEpfSw0NTg4OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIGllPVooNDE1NSksbGU9Wig1MTA4KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oU2Upe2Zvcih2YXIgSWUsVGU9MSxFZT1hcmd1bWVudHMubGVuZ3RoO1RlPEVlO1RlKyspZm9yKHZhciBoZSBpbiBJZT1h''@;'; put 'put ''cmd1bWVudHNbVGVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChJZSxoZSkmJihTZVtoZV09SWVbaGVdKTtyZXR1cm4gU2V9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihTZSxJZSxUZSxFZSl7cmV0dXJuIG5l''@;'; put 'put ''dyhUZXx8KFRlPVByb21pc2UpKShmdW5jdGlvbihoZSxPKXtmdW5jdGlvbiB6KHgpe3RyeXt0ZShFZS5uZXh0KHgpKX1jYXRjaChQKXtPKFApfX1mdW5jdGlvbiBuZSh4KXt0cnl7dGUoRWUudGhyb3coeCkpfWNhdGNoKFApe08oUCl9fWZ1bmN0aW9uIHRlKHgpe3ZhciBQO3guZG9uZT9oZSh4''@;'; put 'put ''LnZhbHVlKTooUD14LnZhbHVlLFAgaW5zdGFuY2VvZiBUZT9QOm5ldyBUZShmdW5jdGlvbihWKXtWKFApfSkpLnRoZW4oeixuZSl9dGUoKEVlPUVlLmFwcGx5KFNlLEllfHxbXSkpLm5leHQoKSl9KX0sTj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihTZSxJZSl7dmFyIFRlLEVl''@;'; put 'put ''LGhlLE8sej17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZoZVswXSl0aHJvdyBoZVsxXTtyZXR1cm4gaGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gTz17bmV4dDpuZSgwKSx0aHJvdzpuZSgxKSxyZXR1cm46bmUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihPW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLE87ZnVuY3Rpb24gbmUodGUpe3JldHVybiBmdW5jdGlvbih4KXtyZXR1cm4gZnVuY3Rpb24oUCl7aWYoVGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7ejsp''@;'; put 'put ''dHJ5e2lmKFRlPTEsRWUmJihoZT0yJlBbMF0/RWUucmV0dXJuOlBbMF0/RWUudGhyb3d8fCgoaGU9RWUucmV0dXJuKSYmaGUuY2FsbChFZSksMCk6RWUubmV4dCkmJiEoaGU9aGUuY2FsbChFZSxQWzFdKSkuZG9uZSlyZXR1cm4gaGU7c3dpdGNoKEVlPTAsaGUmJihQPVsyJlBbMF0saGUudmFs''@;'; put 'put ''dWVdKSxQWzBdKXtjYXNlIDA6Y2FzZSAxOmhlPVA7YnJlYWs7Y2FzZSA0OnJldHVybiB6LmxhYmVsKysse3ZhbHVlOlBbMV0sZG9uZTohMX07Y2FzZSA1OnoubGFiZWwrKyxFZT1QWzFdLFA9WzBdO2NvbnRpbnVlO2Nhc2UgNzpQPXoub3BzLnBvcCgpLHoudHJ5cy5wb3AoKTtjb250aW51ZTtk''@;'; put 'put ''ZWZhdWx0OmlmKCEoKGhlPShoZT16LnRyeXMpLmxlbmd0aD4wJiZoZVtoZS5sZW5ndGgtMV0pfHw2IT09UFswXSYmMiE9PVBbMF0pKXt6PTA7Y29udGludWV9aWYoMz09PVBbMF0mJighaGV8fFBbMV0+aGVbMF0mJlBbMV08aGVbM10pKXt6LmxhYmVsPVBbMV07YnJlYWt9aWYoNj09PVBbMF0m''@;'; put 'put ''JnoubGFiZWw8aGVbMV0pe3oubGFiZWw9aGVbMV0saGU9UDticmVha31pZihoZSYmei5sYWJlbDxoZVsyXSl7ei5sYWJlbD1oZVsyXSx6Lm9wcy5wdXNoKFApO2JyZWFrfWhlWzJdJiZ6Lm9wcy5wb3AoKSx6LnRyeXMucG9wKCk7Y29udGludWV9UD1JZS5jYWxsKFNlLHopfWNhdGNoKFYpe1A9''@;'; put 'put ''WzYsVl0sRWU9MH1maW5hbGx5e1RlPWhlPTB9aWYoNSZQWzBdKXRocm93IFBbMV07cmV0dXJue3ZhbHVlOlBbMF0/UFsxXTp2b2lkIDAsZG9uZTohMH19KFt0ZSx4XSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEudGhyb3dJZkVycm9yPVEu''@;'; put 'put ''UmVxdWVzdENsaWVudD12b2lkIDA7dmFyIGVlPVooODM3MykscT1aKDE1MjcpLEo9WigxMzk1KSxzZT1aKDI4MTMpLGFlPVooOTc3OCksZmU9Wig5NTI2KSxkZT1aKDU5MjgpLHZlPVooMTAwNSksQWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBTZShJZSxUZSxFZSl7dmFyIGhlPXRoaXM7dGhpcy5i''@;'; put 'put ''YXNlVXJsPUllLHRoaXMucmVxdWVzdHM9W10sdGhpcy5yZXF1ZXN0c0xpbWl0PTEwLHRoaXMuY3NyZlRva2VuPXtoZWFkZXJOYW1lOiIiLHZhbHVlOiIifSx0aGlzLmdldFJlcXVlc3RzPWZ1bmN0aW9uKCl7cmV0dXJuIGhlLnJlcXVlc3RzfSx0aGlzLmNsZWFyUmVxdWVzdHM9ZnVuY3Rpb24o''@;'; put 'put ''KXtoZS5yZXF1ZXN0cz1bXX0sdGhpcy5hdXRob3JpemU9ZnVuY3Rpb24oTyl7cmV0dXJuIFcoaGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6LG5lLHRlLHgsUCxWLFQsUyxGLHllLENlLERlO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oUGUpe3N3aXRjaChQZS5sYWJlbCl7Y2FzZSAw''@;'; put 'put ''OmZvcihuZT17fSx0ZT1PLnNwbGl0KCI8Ym9keT4iKVsxXS5zcGxpdCgiPC9ib2R5PiIpWzBdLCh4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9dGUsUD14LnF1ZXJ5U2VsZWN0b3IoIiNhcHBsaWNhdGlvbl9hdXRob3JpemF0aW9uIiksej1QP3RoaXMuYmFzZVVy''@;'; put 'put ''bCtQLmdldEF0dHJpYnV0ZSgiYWN0aW9uIik6bnVsbCxWPW51bGw9PVA/dm9pZCAwOlAucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKSxUPTAsUz1WO1Q8Uy5sZW5ndGg7VCsrKSJ1c2VyX29hdXRoX2FwcHJvdmFsIj09PShGPVNbVF0pLm5hbWUmJihGLnZhbHVlPSJ0cnVlIiksbmVbRi5uYW1l''@;'; put 'put ''XT1GLnZhbHVlO2ZvcihEZSBpbih5ZT1PYmplY3Qua2V5cyhuZSkuZmluZChmdW5jdGlvbihRZSl7cmV0dXJuIG51bGw9PVFlP3ZvaWQgMDpRZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJjc3JmIil9KSkmJih0aGlzLmNzcmZUb2tlbi52YWx1ZT1uZVt5ZV0sdGhpcy5jc3JmVG9rZW4uaGVh''@;'; put 'put ''ZGVyTmFtZT10aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lfHwieC1jc3JmLXRva2VuIiksQ2U9bmV3IEZvcm1EYXRhLG5lKW5lLmhhc093blByb3BlcnR5KERlKSYmQ2UuYXBwZW5kKERlLG5lW0RlXSk7aWYoIXopdGhyb3cgbmV3IEVycm9yKCJBdXRoIEZvcm0gVVJMIGlzIG51bGwgb3IgdW5k''@;'; put 'put ''ZWZpbmVkLiIpO3JldHVybls0LHRoaXMuaHR0cENsaWVudC5wb3N0KHosQ2Use3Jlc3BvbnNlVHlwZToidGV4dCIsaGVhZGVyczp7QWNjZXB0OiIqLyoiLCJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIn19KS50aGVuKGZ1bmN0aW9uKFFlKXtyZXR1cm4gUWUuZGF0YX0pLmNhdGNoKGZ1bmN0''@;'; put 'put ''aW9uKFFlKXsoaWUubG9nZ2VyfHxsZSkuZXJyb3IoUWUpfSldO2Nhc2UgMTpyZXR1cm5bMixQZS5zZW50KCldfX0pfSl9LHRoaXMuZ2V0SGVhZGVycz1mdW5jdGlvbihPLHope3ZhciBuZT17fTtyZXR1cm4iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiE9PXomJihuZVsiQ29u''@;'; put 'put ''dGVudC1UeXBlIl09eiksbmUuQWNjZXB0PSJhcHBsaWNhdGlvbi9qc29uIj09PXo/ImFwcGxpY2F0aW9uL2pzb24iOiIqLyoiLE8mJihuZS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoTykpLGhlLmNzcmZUb2tlbi5oZWFkZXJOYW1lJiZoZS5jc3JmVG9rZW4udmFsdWUmJihuZVto''@;'; put 'put ''ZS5jc3JmVG9rZW4uaGVhZGVyTmFtZV09aGUuY3NyZlRva2VuLnZhbHVlKSxuZX0sdGhpcy5wYXJzZUFuZFNldEZpbGVVcGxvYWRDc3JmVG9rZW49ZnVuY3Rpb24oTyl7dmFyIHo9aGUucGFyc2VDc3JmVG9rZW4oTyk7eiYmKGhlLmZpbGVVcGxvYWRDc3JmVG9rZW49eil9LHRoaXMucGFyc2VB''@;'; put 'put ''bmRTZXRDc3JmVG9rZW49ZnVuY3Rpb24oTyl7dmFyIHo9aGUucGFyc2VDc3JmVG9rZW4oTyk7eiYmKGhlLmNzcmZUb2tlbj16KX0sdGhpcy5wYXJzZUNzcmZUb2tlbj1mdW5jdGlvbihPKXt2YXIgeixuZT1udWxsPT09KHo9Ty5oZWFkZXJzWyJ4LWNzcmYtaGVhZGVyIl0pfHx2b2lkIDA9PT16''@;'; put 'put ''P3ZvaWQgMDp6LnRvTG93ZXJDYXNlKCk7aWYobmUpcmV0dXJue2hlYWRlck5hbWU6bmUsdmFsdWU6Ty5oZWFkZXJzW25lXXx8IiJ9fSx0aGlzLmhhbmRsZUVycm9yPWZ1bmN0aW9uKE8seixuZSl7cmV0dXJuIHZvaWQgMD09PW5lJiYobmU9ITEpLFcoaGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''bigpe3ZhciB0ZSx4O3JldHVybiBOKHRoaXMsZnVuY3Rpb24oUCl7c3dpdGNoKFAubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGU9Ty5yZXNwb25zZSxPIGluc3RhbmNlb2YgSi5BdXRob3JpemVFcnJvcj9bNCx0aGlzLmh0dHBDbGllbnQuZ2V0KE8uY29uZmlybVVybCx7cmVzcG9uc2VUeXBlOiJ0''@;'; put 'put ''ZXh0IixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbiIsQWNjZXB0OiIqLyoifX0pLmNhdGNoKGZ1bmN0aW9uKFYpe3Rocm93KDAsYWUucHJlZml4TWVzc2FnZSkoViwiRXJyb3Igd2hpbGUgZ2V0dGluZyBlcnJvciBjb25maXJtVXJsLiAiKX0pXTpbMyw1XTtjYXNlIDE6cmV0''@;'; put 'put ''dXJuIHg9UC5zZW50KCksKDAscS5pc0F1dGhvcml6ZUZvcm1SZXF1aXJlZCkobnVsbD09eD92b2lkIDA6eC5kYXRhKT9bNCx0aGlzLmF1dGhvcml6ZSh4LmRhdGEpLmNhdGNoKGZ1bmN0aW9uKFYpe3Rocm93KDAsYWUucHJlZml4TWVzc2FnZSkoViwiRXJyb3Igd2hpbGUgYXV0aG9yaXppbmcg''@;'; put 'put ''cmVxdWVzdC4gIil9KV06WzMsM107Y2FzZSAyOlAuc2VudCgpLFAubGFiZWw9MztjYXNlIDM6cmV0dXJuWzQseigpLmNhdGNoKGZ1bmN0aW9uKFYpe3Rocm93KDAsYWUucHJlZml4TWVzc2FnZSkoViwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGNhbGxiYWNrIGluIGhhbmRsZUVycm9yLiAiKX0p''@;'; put 'put ''XTtjYXNlIDQ6cmV0dXJuWzIsUC5zZW50KCldO2Nhc2UgNTppZihPIGluc3RhbmNlb2YgSi5Mb2dpblJlcXVpcmVkRXJyb3IpdGhyb3cgdGhpcy5jbGVhckNzcmZUb2tlbnMoKSxPO3JldHVybiBPIGluc3RhbmNlb2YgdmUuSW52YWxpZFNBU2pzQ3NyZkVycm9yP1s0LHRoaXMuaHR0cENsaWVu''@;'; put 'put ''dC5nZXQoIi8iLHt3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKFYpe3ZhciBULFM9bnVsbD09PShUPS88c2NyaXB0PmRvY3VtZW50LmNvb2tpZSA9ICcoWFNSRi1UT0tFTj0uKjsgTWF4LUFnZT04NjQwMDsgU2FtZVNpdGU9U3RyaWN0OyBQYXRoPVwvOyknPFwvc2NyaXB0Pi8u''@;'; put 'put ''ZXhlYyhWLmRhdGEpKXx8dm9pZCAwPT09VD92b2lkIDA6VFsxXTtTJiYoZG9jdW1lbnQuY29va2llPVMpfSkuY2F0Y2goZnVuY3Rpb24oVil7dGhyb3coMCxhZS5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSByZS1mZXRjaGluZyBDU1JGIHRva2VuLiIpfSldOlszLDhdO2Nhc2UgNjpy''@;'; put 'put ''ZXR1cm4gUC5zZW50KCksWzQseigpLmNhdGNoKGZ1bmN0aW9uKFYpe3Rocm93KDAsYWUucHJlZml4TWVzc2FnZSkoViwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGNhbGxiYWNrIGluIGhhbmRsZUVycm9yLiAiKX0pXTtjYXNlIDc6cmV0dXJuWzIsUC5zZW50KCldO2Nhc2UgODpyZXR1cm4gNDAz''@;'; put 'put ''IT09KG51bGw9PXRlP3ZvaWQgMDp0ZS5zdGF0dXMpJiY0NDkhPT0obnVsbD09dGU/dm9pZCAwOnRlLnN0YXR1cyk/WzMsMTFdOih0aGlzLnBhcnNlQW5kU2V0Q3NyZlRva2VuKHRlKSx0aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lJiZ0aGlzLmNzcmZUb2tlbi52YWx1ZT9bNCx6KCkuY2F0Y2go''@;'; put 'put ''ZnVuY3Rpb24oVil7dGhyb3coMCxhZS5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY2FsbGJhY2sgaW4gaGFuZGxlRXJyb3IuICIpfSldOlszLDEwXSk7Y2FzZSA5OnJldHVyblsyLFAuc2VudCgpXTtjYXNlIDEwOnRocm93IE87Y2FzZSAxMTppZig0MDQ9PT0obnVs''@;'; put 'put ''bD09dGU/dm9pZCAwOnRlLnN0YXR1cykpdGhyb3cgbmV3IEouTm90Rm91bmRFcnJvcih0ZS5jb25maWcudXJsKTtpZig1MDI9PT0obnVsbD09dGU/dm9pZCAwOnRlLnN0YXR1cykpe2lmKG5lKXRocm93IG5ldyBKLkludGVybmFsU2VydmVyRXJyb3I7cmV0dXJuWzJdfVAubGFiZWw9MTI7Y2Fz''@;'; put 'put ''ZSAxMjp0aHJvdyBPLmlzQXhpb3NFcnJvciYmIlVOQUJMRV9UT19WRVJJRllfTEVBRl9TSUdOQVRVUkUiPT09Ty5jb2RlP25ldyBKLkNlcnRpZmljYXRlRXJyb3IoTy5tZXNzYWdlKTpPLm1lc3NhZ2U/TzooMCxhZS5wcmVmaXhNZXNzYWdlKShPLCJFcnJvciB3aGlsZSBoYW5kbGluZyBlcnJv''@;'; put 'put ''ci4gIil9fSl9KX0sdGhpcy5jcmVhdGVIdHRwQ2xpZW50KEllLFRlKSxFZSYmKHRoaXMucmVxdWVzdHNMaW1pdD1FZSl9cmV0dXJuIFNlLnByb3RvdHlwZS5zZXRDb25maWc9ZnVuY3Rpb24oSWUsVGUpe3RoaXMuY3JlYXRlSHR0cENsaWVudChJZSxUZSl9LFNlLnByb3RvdHlwZS5zYXZlTG9j''@;'; put 'put ''YWxTdG9yYWdlVG9rZW49ZnVuY3Rpb24oSWUsVGUpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJhY2Nlc3NUb2tlbiIsSWUpLGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJyZWZyZXNoVG9rZW4iLFRlKX0sU2UucHJvdG90eXBlLmdldENzcmZUb2tlbj1mdW5jdGlvbihJZSl7cmV0dXJuIHZvaWQgMD09''@;'; put 'put ''PUllJiYoSWU9ImdlbmVyYWwiKSwiZmlsZSI9PT1JZT90aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW46dGhpcy5jc3JmVG9rZW59LFNlLnByb3RvdHlwZS5jbGVhckNzcmZUb2tlbnM9ZnVuY3Rpb24oKXt0aGlzLmNzcmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn0sdGhpcy5maWxlVXBs''@;'; put 'put ''b2FkQ3NyZlRva2VuPXtoZWFkZXJOYW1lOiIiLHZhbHVlOiIifX0sU2UucHJvdG90eXBlLmNsZWFyTG9jYWxTdG9yYWdlVG9rZW5zPWZ1bmN0aW9uKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oImFjY2Vzc1Rva2VuIiwiIiksbG9jYWxTdG9yYWdlLnNldEl0ZW0oInJlZnJlc2hUb2tlbiIsIiIp''@;'; put 'put ''fSxTZS5wcm90b3R5cGUuZ2V0QmFzZVVybD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh0dHBDbGllbnQuZGVmYXVsdHMuYmFzZVVSTHx8IiJ9LFNlLnByb3RvdHlwZS5hcHBlbmRSZXF1ZXN0PWZ1bmN0aW9uKEllLFRlLEVlKXt2YXIgaGU9IiIsTz0iIix6PW51bGw7RWUmJihudWxsIT1JZSYm''@;'; put 'put ''SWUubG9nPyhoZT0oMCxkZS5wYXJzZVNvdXJjZUNvZGUpKEllLmxvZyksTz0oMCxkZS5wYXJzZUdlbmVyYXRlZENvZGUpKEllLmxvZyksej1udWxsIT1JZSYmSWUucmVzdWx0P0llLnJlc3VsdC5XT1JLOkllLmxvZyk6bnVsbCE9SWUmJkllLnJlc3VsdCYmKCJzdHJpbmciPT10eXBlb2YgSWUu''@;'; put 'put ''cmVzdWx0JiYoaGU9KDAsZGUucGFyc2VTb3VyY2VDb2RlKShJZS5yZXN1bHQpLE89KDAsZGUucGFyc2VHZW5lcmF0ZWRDb2RlKShJZS5yZXN1bHQpKSx6PUllLnJlc3VsdC5XT1JLKSk7dmFyIG5lPSJzdHJpbmciPT10eXBlb2YobnVsbD09SWU/dm9pZCAwOkllLnJlc3VsdCk/bnVsbD09SWU/''@;'; put 'put ''dm9pZCAwOkllLnJlc3VsdDpKU09OLnN0cmluZ2lmeShudWxsPT1JZT92b2lkIDA6SWUucmVzdWx0LG51bGwsMik7dGhpcy5yZXF1ZXN0cy5wdXNoKHtsb2dGaWxlOihudWxsPT1JZT92b2lkIDA6SWUubG9nKXx8bmV8fEllLHNlcnZpY2VMaW5rOlRlLHRpbWVzdGFtcDpuZXcgRGF0ZSxzb3Vy''@;'; put 'put ''Y2VDb2RlOmhlLGdlbmVyYXRlZENvZGU6TyxTQVNXT1JLOnp9KSx0aGlzLnJlcXVlc3RzLmxlbmd0aD50aGlzLnJlcXVlc3RzTGltaXQmJnRoaXMucmVxdWVzdHMuc3BsaWNlKDAsMSl9LFNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oSWUsVGUsRWUsaGUsTyl7cmV0dXJuIHZvaWQgMD09PUVl''@;'; put 'put ''JiYoRWU9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT1oZSYmKGhlPXt9KSx2b2lkIDA9PT1PJiYoTz0hMSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeixuZSx0ZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oeCl7cmV0dXJuIHo9WShZKHt9LHRoaXMuZ2V0''@;'; put 'put ''SGVhZGVycyhUZSxFZSkpLGhlKSxuZT17aGVhZGVyczp6LHJlc3BvbnNlVHlwZToidGV4dC9wbGFpbiI9PT1FZT8idGV4dCI6Impzb24iLHdpdGhDcmVkZW50aWFsczohMH0sInRleHQvcGxhaW4iPT09RWUmJihuZS50cmFuc2Zvcm1SZXNwb25zZT12b2lkIDApLFsyLHRoaXMuaHR0cENsaWVu''@;'; put 'put ''dC5nZXQoSWUsbmUpLnRoZW4oZnVuY3Rpb24oUCl7cmV0dXJuKDAsUS50aHJvd0lmRXJyb3IpKFApLHRlLnBhcnNlUmVzcG9uc2UoUCl9KS5jYXRjaChmdW5jdGlvbihQKXtyZXR1cm4gVyh0ZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFY9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0''@;'; put 'put ''aW9uKFQpe3N3aXRjaChULmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcihQLGZ1bmN0aW9uKCl7cmV0dXJuIFYuZ2V0KEllLFRlLEVlLGhlKS5jYXRjaChmdW5jdGlvbihTKXt0aHJvdygwLGFlLnByZWZpeE1lc3NhZ2UpKFMsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBo''@;'; put 'put ''YW5kbGUgZXJyb3IgY2FsbGJhY2suICIpfSl9LE8pXTtjYXNlIDE6cmV0dXJuWzIsVC5zZW50KCldfX0pfSl9KV19KX0pfSxTZS5wcm90b3R5cGUucG9zdD1mdW5jdGlvbihJZSxUZSxFZSxoZSxPLHope3JldHVybiB2b2lkIDA9PT1oZSYmKGhlPSJhcHBsaWNhdGlvbi9qc29uIiksdm9pZCAw''@;'; put 'put ''PT09TyYmKE89e30pLHZvaWQgMD09PXomJih6PXt9KSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBuZSx0ZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oeCl7cmV0dXJuIG5lPVkoWSh7fSx0aGlzLmdldEhlYWRlcnMoRWUsaGUpKSxPKSxbMix0aGlzLmh0dHBDbGll''@;'; put 'put ''bnQucG9zdChJZSxUZSxZKHtoZWFkZXJzOm5lLHdpdGhDcmVkZW50aWFsczohMH0seikpLnRoZW4oZnVuY3Rpb24oUCl7cmV0dXJuKDAsUS50aHJvd0lmRXJyb3IpKFApLHRlLnBhcnNlUmVzcG9uc2UoUCl9KS5jYXRjaChmdW5jdGlvbihQKXtyZXR1cm4gVyh0ZSx2b2lkIDAsdm9pZCAwLGZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIFY9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKFQpe3N3aXRjaChULmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcihQLGZ1bmN0aW9uKCl7cmV0dXJuIFYucG9zdChJZSxUZSxFZSxoZSxPKX0pXTtjYXNlIDE6cmV0dXJuWzIsVC5zZW50KCld''@;'; put 'put ''fX0pfSl9KV19KX0pfSxTZS5wcm90b3R5cGUucHV0PWZ1bmN0aW9uKEllLFRlLEVlLGhlKXtyZXR1cm4gdm9pZCAwPT09aGUmJihoZT17fSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTyx6PXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihuZSl7cmV0dXJuIE89WShZ''@;'; put 'put ''KHt9LHRoaXMuZ2V0SGVhZGVycyhFZSwiYXBwbGljYXRpb24vanNvbiIpKSxoZSksWzIsdGhpcy5odHRwQ2xpZW50LnB1dChJZSxUZSx7aGVhZGVyczpPLHdpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVuY3Rpb24odGUpe3JldHVybigwLFEudGhyb3dJZkVycm9yKSh0ZSksei5wYXJzZVJl''@;'; put 'put ''c3BvbnNlKHRlKX0pLmNhdGNoKGZ1bmN0aW9uKHRlKXtyZXR1cm4gVyh6LHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oUCl7c3dpdGNoKFAubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKHRlLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHgucHV0KEllLFRlLEVlLGhlKX0pXTtjYXNlIDE6cmV0dXJuWzIsUC5zZW50KCldfX0pfSl9KV19KX0pfSxTZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKEllLFRlKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRWUsaGU9dGhpcztyZXR1''@;'; put 'put ''cm4gTih0aGlzLGZ1bmN0aW9uKE8pe3JldHVybiBFZT10aGlzLmdldEhlYWRlcnMoVGUsImFwcGxpY2F0aW9uL2pzb24iKSxbMix0aGlzLmh0dHBDbGllbnQuZGVsZXRlKEllLHtoZWFkZXJzOkVlLHdpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVuY3Rpb24oeil7cmV0dXJuKDAsUS50aHJv''@;'; put 'put ''d0lmRXJyb3IpKHopLGhlLnBhcnNlUmVzcG9uc2Uoeil9KS5jYXRjaChmdW5jdGlvbih6KXtyZXR1cm4gVyhoZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lPXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhp''@;'; put 'put ''cy5oYW5kbGVFcnJvcih6LGZ1bmN0aW9uKCl7cmV0dXJuIG5lLmRlbGV0ZShJZSxUZSl9KV07Y2FzZSAxOnJldHVyblsyLHRlLnNlbnQoKV19fSl9KX0pXX0pfSl9LFNlLnByb3RvdHlwZS5wYXRjaD1mdW5jdGlvbihJZSxUZSxFZSl7cmV0dXJuIHZvaWQgMD09PVRlJiYoVGU9e30pLFcodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGhlLE89dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHope3JldHVybiBoZT10aGlzLmdldEhlYWRlcnMoRWUsImFwcGxpY2F0aW9uL2pzb24iKSxbMix0aGlzLmh0dHBDbGllbnQucGF0Y2goSWUsVGUse2hlYWRlcnM6aGUsd2l0aENy''@;'; put 'put ''ZWRlbnRpYWxzOiEwfSkudGhlbihmdW5jdGlvbihuZSl7cmV0dXJuKDAsUS50aHJvd0lmRXJyb3IpKG5lKSxPLnBhcnNlUmVzcG9uc2UobmUpfSkuY2F0Y2goZnVuY3Rpb24obmUpe3JldHVybiBXKE8sdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0ZT10aGlzO3JldHVybiBOKHRoaXMs''@;'; put 'put ''ZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKG5lLGZ1bmN0aW9uKCl7cmV0dXJuIHRlLnBhdGNoKEllLFRlLEVlKX0pXTtjYXNlIDE6cmV0dXJuWzIseC5zZW50KCldfX0pfSl9KV19KX0pfSxTZS5wcm90b3R5cGUudXBsb2FkRmls''@;'; put 'put ''ZT1mdW5jdGlvbihJZSxUZSxFZSl7dmFyIGhlO3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPLHosbmU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6Tz10aGlzLmdldEhlYWRlcnMoRWUsImFwcGxpY2F0aW9uL2pz''@;'; put 'put ''b24iKSwhKG51bGw9PT0oaGU9dGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuKXx8dm9pZCAwPT09aGUpJiZoZS52YWx1ZSYmKE9bdGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuLmhlYWRlck5hbWVdPXRoaXMuZmlsZVVwbG9hZENzcmZUb2tlbi52YWx1ZSksdGUubGFiZWw9MTtjYXNlIDE6cmV0dXJu''@;'; put 'put ''IHRlLnRyeXMucHVzaChbMSwzLCw0XSksWzQsdGhpcy5odHRwQ2xpZW50LnBvc3QoSWUsVGUse2hlYWRlcnM6Tyx0cmFuc2Zvcm1SZXF1ZXN0OmZ1bmN0aW9uKHgpe3JldHVybiB4fX0pXTtjYXNlIDI6cmV0dXJuWzIse3Jlc3VsdDoobmU9dGUuc2VudCgpKS5kYXRhLGV0YWc6bmUuaGVhZGVy''@;'; put 'put ''cy5ldGFnfV07Y2FzZSAzOmlmKHo9dGUuc2VudCgpLDQwMz09PShudWxsPT0obmU9ei5yZXNwb25zZSk/dm9pZCAwOm5lLnN0YXR1cyl8fDQ0OT09PShudWxsPT1uZT92b2lkIDA6bmUuc3RhdHVzKSl7aWYodGhpcy5wYXJzZUFuZFNldEZpbGVVcGxvYWRDc3JmVG9rZW4obmUpLHRoaXMuZmls''@;'; put 'put ''ZVVwbG9hZENzcmZUb2tlbilyZXR1cm5bMix0aGlzLnVwbG9hZEZpbGUoSWUsVGUsRWUpXTt0aHJvdyB6fXRocm93IHo7Y2FzZSA0OnJldHVyblsyXX19KX0pfSxTZS5wcm90b3R5cGUucGFyc2VSZXNwb25zZT1mdW5jdGlvbihJZSl7dmFyIFRlLEVlPW51bGwhPUllJiZJZS5oZWFkZXJzP0ll''@;'; put 'put ''LmhlYWRlcnMuZXRhZzoiIixoZT0hMTt0cnl7VGU9InN0cmluZyI9PXR5cGVvZiBJZS5kYXRhP0pTT04ucGFyc2UoSWUuZGF0YSk6SWUuZGF0YX1jYXRjaCh6KXt0cnl7VGU9SlNPTi5wYXJzZSgoMCxzZS5wYXJzZVdlYm91dFJlc3BvbnNlKShJZS5kYXRhKSl9Y2F0Y2gobmUpe1RlPUllLmRh''@;'; put 'put ''dGF9aGU9ITB9dmFyIE89e3Jlc3VsdDpUZSxldGFnOkVlLHN0YXR1czpJZS5zdGF0dXN9O3JldHVybiBoZSYmKE8ubG9nPUllLmRhdGEpLE99LFNlLnByb3RvdHlwZS5jcmVhdGVIdHRwQ2xpZW50PWZ1bmN0aW9uKEllLFRlKXt2YXIgRWU9VGU/bmV3IGVlLkFnZW50KFRlKTp2b2lkIDA7dGhp''@;'; put 'put ''cy5odHRwQ2xpZW50PSgwLGRlLmNyZWF0ZUF4aW9zSW5zdGFuY2UpKEllLEVlKSx0aGlzLmh0dHBDbGllbnQuZGVmYXVsdHMudmFsaWRhdGVTdGF0dXM9ZnVuY3Rpb24oaGUpe3JldHVybiBoZT49MjAwJiZoZTw9NDAxfX0sU2V9KCk7US5SZXF1ZXN0Q2xpZW50PUFlLFEudGhyb3dJZkVycm9y''@;'; put 'put ''PWZ1bmN0aW9uKFNlKXt2YXIgSWUsVGUsRWUsaGUsTyx6LG5lO3N3aXRjaChTZS5zdGF0dXMpe2Nhc2UgNDAwOmlmKCJvYmplY3QiPT10eXBlb2YgU2UuZGF0YSYmImludmFsaWRfZ3JhbnQiPT09U2UuZGF0YS5lcnJvcil0aHJvdyBuZXcgSi5Mb2dpblJlcXVpcmVkRXJyb3IoU2UuZGF0YSk7''@;'; put 'put ''aWYoInN0cmluZyI9PXR5cGVvZiBTZS5kYXRhJiYiaW52YWxpZCBjc3JmIHRva2VuISI9PT1TZS5kYXRhLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IHZlLkludmFsaWRTQVNqc0NzcmZFcnJvcjticmVhaztjYXNlIDQwMTp0aHJvdyJvYmplY3QiPT10eXBlb2YgU2UuZGF0YT9uZXcgSi5Mb2dp''@;'; put 'put ''blJlcXVpcmVkRXJyb3IoU2UuZGF0YSk6bmV3IEouTG9naW5SZXF1aXJlZEVycm9yfWlmKG51bGwhPT0oVGU9bnVsbD09PShJZT1TZS5kYXRhKXx8dm9pZCAwPT09SWU/dm9pZCAwOkllLmVudGl0eUlEKSYmdm9pZCAwIT09VGUmJlRlLmluY2x1ZGVzKCJsb2dpbiIpKXRocm93IG5ldyBKLkxv''@;'; put 'put ''Z2luUmVxdWlyZWRFcnJvcjtpZigic3RyaW5nIj09dHlwZW9mIFNlLmRhdGEmJigwLHEuaXNBdXRob3JpemVGb3JtUmVxdWlyZWQpKFNlLmRhdGEpKXRocm93IG5ldyBKLkF1dGhvcml6ZUVycm9yKCJBdXRob3JpemF0aW9uIHJlcXVpcmVkIixTZS5yZXF1ZXN0LnJlc3BvbnNlVVJMKTtpZigi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIFNlLmRhdGEmJigwLHEuaXNMb2dJblJlcXVpcmVkKShTZS5kYXRhKSYmKG51bGw9PT0oaGU9bnVsbD09PShFZT1TZS5jb25maWcpfHx2b2lkIDA9PT1FZT92b2lkIDA6RWUudXJsKXx8dm9pZCAwPT09aGV8fCFoZS5pbmNsdWRlcygiL1NBU0xvZ29uL2xvZ2luIikp''@;'; put 'put ''KXRocm93IG5ldyBKLkxvZ2luUmVxdWlyZWRFcnJvcjtpZihudWxsIT09KE89U2UuZGF0YSkmJnZvaWQgMCE9PU8mJk8uYXV0aF9yZXF1ZXN0KXRocm93IG5ldyBKLkF1dGhvcml6ZUVycm9yKFNlLmRhdGEubWVzc2FnZSxTZS5yZXF1ZXN0LnJlc3BvbnNlVVJMKTtpZihudWxsIT09KG5lPW51''@;'; put 'put ''bGw9PT0oej1TZS5jb25maWcpfHx2b2lkIDA9PT16P3ZvaWQgMDp6LnVybCkmJnZvaWQgMCE9PW5lJiZuZS5pbmNsdWRlcygic2FzQXV0aEVycm9yIikpdGhyb3cgbmV3IGZlLlNBUzlBdXRoRXJyb3I7dmFyIHg9a2UoU2UuZGF0YSk7aWYoeCl0aHJvdyB4fTt2YXIga2U9ZnVuY3Rpb24oU2Up''@;'; put 'put ''e2lmKCFTZSlyZXR1cm4gbnVsbDt0cnl7dmFyIEllPUpTT04ucGFyc2UobnVsbD09U2U/dm9pZCAwOlNlLnJlcGxhY2UoL1tcblxyXS9nLCIgIikpO2lmKEllLmVycm9yQ29kZSYmSWUubWVzc2FnZSlyZXR1cm4gbmV3IEouSm9iRXhlY3V0aW9uRXJyb3IoSWUuZXJyb3JDb2RlLEllLm1lc3Nh''@;'; put 'put ''Z2UsbnVsbD09U2U/dm9pZCAwOlNlLnJlcGxhY2UoL1tcblxyXS9nLCIgIikpfWNhdGNoKHRlKXt9dHJ5e2lmKG51bGwhPVNlJiZTZS5pbmNsdWRlcygneyJlcnJvckNvZGUnKSYmKHo9U2Uuc3BsaXQoJ3siZXJyb3JDb2RlJykpLmxlbmd0aD4xKXt2YXIgVGU9J3siZXJyb3JDb2RlJyt6WzFd''@;'; put 'put ''LnNwbGl0KCcifScpWzBdKycifScsRWU9SlNPTi5wYXJzZShUZS5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTtyZXR1cm4gbmV3IEouSm9iRXhlY3V0aW9uRXJyb3IoRWUuZXJyb3JDb2RlLEVlLm1lc3NhZ2UsbnVsbD09U2U/dm9pZCAwOlNlLnJlcGxhY2UoL1tcblxyXS9nLCJcbiIpKX19Y2F0''@;'; put 'put ''Y2godGUpe310cnl7aWYobnVsbCE9U2UmJlNlLm1hdGNoKC9zdG9yZWQgcHJvY2VzcyBub3QgZm91bmQ6IC9pKSYmKHo9U2Uuc3BsaXQoL3N0b3JlZCBwcm9jZXNzIG5vdCBmb3VuZDogL2kpKS5sZW5ndGg+MSl7dmFyIGhlPXpbMV0uc3BsaXQoIjxpPiIpWzFdLnNwbGl0KCI8L2k+IilbMF0s''@;'; put 'put ''Tz0iU3RvcmVkIHByb2Nlc3Mgbm90IGZvdW5kOiAiLmNvbmNhdChoZSk7cmV0dXJuIG5ldyBKLkpvYkV4ZWN1dGlvbkVycm9yKDUwMCxPLCIiKX19Y2F0Y2godGUpe310cnl7dmFyIHo7aWYoKG51bGw9PVNlfHwhU2UubWF0Y2goLz4+d2Vib3V0QkVHSU48PC8pKSYmbnVsbCE9U2UmJlNlLm1h''@;'; put 'put ''dGNoKC9TdG9yZWQgUHJvY2VzcyBFcnJvci9pKSYmbnVsbCE9U2UmJlNlLm1hdGNoKC9UaGlzIHJlcXVlc3QgY29tcGxldGVkIHdpdGggZXJyb3JzLi9pKSYmKHo9U2Uuc3BsaXQoIjxoMj5TQVMgTG9nPC9oMj4iKSkubGVuZ3RoPjEpe3ZhciBuZT16WzFdLnNwbGl0KCI8cHJlPiIpWzFdLnNw''@;'; put 'put ''bGl0KCI8L3ByZT4iKVswXTtyZXR1cm4gbmV3IEouSm9iRXhlY3V0aW9uRXJyb3IoNTAwLE89IlRoaXMgcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCBlcnJvcnMuIixuZSl9fWNhdGNoKHRlKXt9cmV0dXJuIG51bGx9fSw3OTU6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGU9''@;'; put 'put ''dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpZT1mdW5jdGlvbihmZSxkZSl7cmV0dXJuKGllPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih2ZSxBZSl7dmUuX19wcm90b19fPUFlfXx8ZnVuY3Rpb24odmUsQWUpe2Zvcih2YXIg''@;'; put 'put ''a2UgaW4gQWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEFlLGtlKSYmKHZlW2tlXT1BZVtrZV0pfSkoZmUsZGUpfSxmdW5jdGlvbihmZSxkZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGRlJiZudWxsIT09ZGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5k''@;'; put 'put ''cyB2YWx1ZSAiK1N0cmluZyhkZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gdmUoKXt0aGlzLmNvbnN0cnVjdG9yPWZlfWllKGZlLGRlKSxmZS5wcm90b3R5cGU9bnVsbD09PWRlP09iamVjdC5jcmVhdGUoZGUpOih2ZS5wcm90b3R5cGU9ZGUucHJvdG90eXBl''@;'; put 'put ''LG5ldyB2ZSl9KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZmUpe2Zvcih2YXIgZGUsdmU9MSxBZT1hcmd1bWVudHMubGVuZ3RoO3ZlPEFlO3ZlKyspZm9yKHZhciBrZSBpbiBkZT1hcmd1bWVudHNbdmVdKU9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZSxrZSkmJihmZVtrZV09ZGVba2VdKTtyZXR1cm4gZmV9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihmZSxkZSx2ZSxBZSl7cmV0dXJuIG5ldyh2ZXx8KHZlPVByb21pc2Up''@;'; put 'put ''KShmdW5jdGlvbihrZSxTZSl7ZnVuY3Rpb24gSWUoaGUpe3RyeXtFZShBZS5uZXh0KGhlKSl9Y2F0Y2goTyl7U2UoTyl9fWZ1bmN0aW9uIFRlKGhlKXt0cnl7RWUoQWUudGhyb3coaGUpKX1jYXRjaChPKXtTZShPKX19ZnVuY3Rpb24gRWUoaGUpe3ZhciBPO2hlLmRvbmU/a2UoaGUudmFsdWUp''@;'; put 'put ''OihPPWhlLnZhbHVlLE8gaW5zdGFuY2VvZiB2ZT9POm5ldyB2ZShmdW5jdGlvbih6KXt6KE8pfSkpLnRoZW4oSWUsVGUpfUVlKChBZT1BZS5hcHBseShmZSxkZXx8W10pKS5uZXh0KCkpfSl9LE49dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZmUsZGUpe3ZhciB2ZSxBZSxrZSxT''@;'; put 'put ''ZSxJZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZrZVswXSl0aHJvdyBrZVsxXTtyZXR1cm4ga2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gU2U9e25leHQ6VGUoMCksdGhyb3c6VGUoMSkscmV0dXJuOlRlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoU2VbU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksU2U7ZnVuY3Rpb24gVGUoRWUpe3JldHVybiBmdW5jdGlvbihoZSl7cmV0dXJuIGZ1bmN0aW9uKE8pe2lmKHZlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO0ll''@;'; put 'put ''Oyl0cnl7aWYodmU9MSxBZSYmKGtlPTImT1swXT9BZS5yZXR1cm46T1swXT9BZS50aHJvd3x8KChrZT1BZS5yZXR1cm4pJiZrZS5jYWxsKEFlKSwwKTpBZS5uZXh0KSYmIShrZT1rZS5jYWxsKEFlLE9bMV0pKS5kb25lKXJldHVybiBrZTtzd2l0Y2goQWU9MCxrZSYmKE89WzImT1swXSxrZS52''@;'; put 'put ''YWx1ZV0pLE9bMF0pe2Nhc2UgMDpjYXNlIDE6a2U9TzticmVhaztjYXNlIDQ6cmV0dXJuIEllLmxhYmVsKysse3ZhbHVlOk9bMV0sZG9uZTohMX07Y2FzZSA1OkllLmxhYmVsKyssQWU9T1sxXSxPPVswXTtjb250aW51ZTtjYXNlIDc6Tz1JZS5vcHMucG9wKCksSWUudHJ5cy5wb3AoKTtjb250''@;'; put 'put ''aW51ZTtkZWZhdWx0OmlmKCEoKGtlPShrZT1JZS50cnlzKS5sZW5ndGg+MCYma2Vba2UubGVuZ3RoLTFdKXx8NiE9PU9bMF0mJjIhPT1PWzBdKSl7SWU9MDtjb250aW51ZX1pZigzPT09T1swXSYmKCFrZXx8T1sxXT5rZVswXSYmT1sxXTxrZVszXSkpe0llLmxhYmVsPU9bMV07YnJlYWt9aWYo''@;'; put 'put ''Nj09PU9bMF0mJkllLmxhYmVsPGtlWzFdKXtJZS5sYWJlbD1rZVsxXSxrZT1PO2JyZWFrfWlmKGtlJiZJZS5sYWJlbDxrZVsyXSl7SWUubGFiZWw9a2VbMl0sSWUub3BzLnB1c2goTyk7YnJlYWt9a2VbMl0mJkllLm9wcy5wb3AoKSxJZS50cnlzLnBvcCgpO2NvbnRpbnVlfU89ZGUuY2FsbChm''@;'; put 'put ''ZSxJZSl9Y2F0Y2goeil7Tz1bNix6XSxBZT0wfWZpbmFsbHl7dmU9a2U9MH1pZig1Jk9bMF0pdGhyb3cgT1sxXTtyZXR1cm57dmFsdWU6T1swXT9PWzFdOnZvaWQgMCxkb25lOiEwfX0oW0VlLGhlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p''@;'; put 'put ''LFEuU2FzOVJlcXVlc3RDbGllbnQ9dm9pZCAwO3ZhciBlZT1aKDgyMjQpLHE9Wig3ODU3KSxKPVooOTc3OCksc2U9Wig0NTg4KSxhZT1mdW5jdGlvbihmZSl7ZnVuY3Rpb24gZGUodmUsQWUpe3ZhciBrZT1mZS5jYWxsKHRoaXMsdmUsQWUpfHx0aGlzO3JldHVybiBrZS5odHRwQ2xpZW50LmRl''@;'; put 'put ''ZmF1bHRzLm1heFJlZGlyZWN0cz0wLGtlLmh0dHBDbGllbnQuZGVmYXVsdHMudmFsaWRhdGVTdGF0dXM9ZnVuY3Rpb24oU2Upe3JldHVybiBTZT49MjAwJiZTZTwzMDN9LGVlLmRlZmF1bHQmJigoMCxlZS5kZWZhdWx0KShrZS5odHRwQ2xpZW50KSxrZS5odHRwQ2xpZW50LmRlZmF1bHRzLmph''@;'; put 'put ''cj1uZXcgcS5Db29raWVKYXIpLGtlfXJldHVybiBsZShkZSxmZSksZGUucHJvdG90eXBlLmxvZ2luPWZ1bmN0aW9uKHZlLEFlLGtlKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgU2U7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihJZSl7c3dpdGNoKEllLmxhYmVs''@;'; put 'put ''KXtjYXNlIDA6cmV0dXJuIFNlPSIvVXNlciBGb2xkZXJzLyIuY29uY2F0KHZlLCIvTXkgRm9sZGVyL3Nhc2pzL3J1bm5lciIpLHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5qYXI/KHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5qYXIucmVtb3ZlQWxsQ29va2llcygpLFs0LHRoaXMuZ2V0KCIi''@;'; put 'put ''LmNvbmNhdChrZSwiP19wcm9ncmFtPSIpLmNvbmNhdChTZSwiJl91c2VybmFtZT0iKS5jb25jYXQodmUsIiZfcGFzc3dvcmQ9IikuY29uY2F0KEFlKSx2b2lkIDAsInRleHQvcGxhaW4iKV0pOlszLDJdO2Nhc2UgMTpJZS5zZW50KCksSWUubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzJdfX0pfSl9''@;'; put 'put ''LGRlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odmUsQWUsa2UsU2UsSWUpe3JldHVybiB2b2lkIDA9PT1rZSYmKGtlPSJhcHBsaWNhdGlvbi9qc29uIiksdm9pZCAwPT09U2UmJihTZT17fSksdm9pZCAwPT09SWUmJihJZT0hMSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''VGUsRWUsaGU9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKE8pe3JldHVybiBUZT1ZKFkoe30sdGhpcy5nZXRIZWFkZXJzKEFlLGtlKSksU2UpLEVlPXtoZWFkZXJzOlRlLHJlc3BvbnNlVHlwZToidGV4dC9wbGFpbiI9PT1rZT8idGV4dCI6Impzb24iLHdpdGhDcmVkZW50aWFsczohMH0s''@;'; put 'put ''InRleHQvcGxhaW4iPT09a2UmJihFZS50cmFuc2Zvcm1SZXNwb25zZT12b2lkIDApLFsyLHRoaXMuaHR0cENsaWVudC5nZXQodmUsRWUpLnRoZW4oZnVuY3Rpb24oeil7cmV0dXJuIDMwMj09PXouc3RhdHVzP2hlLmdldCh6LmhlYWRlcnMubG9jYXRpb24sQWUsa2UpOigoMCxzZS50aHJvd0lm''@;'; put 'put ''RXJyb3IpKHopLGhlLnBhcnNlUmVzcG9uc2UoeikpfSkuY2F0Y2goZnVuY3Rpb24oeil7cmV0dXJuIFcoaGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBuZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMu''@;'; put 'put ''aGFuZGxlRXJyb3IoeixmdW5jdGlvbigpe3JldHVybiBuZS5nZXQodmUsQWUsa2UsU2UpLmNhdGNoKGZ1bmN0aW9uKHgpe3Rocm93KDAsSi5wcmVmaXhNZXNzYWdlKSh4LCJFcnJvciB3aGlsZSBleGVjdXRpbmcgaGFuZGxlIGVycm9yIGNhbGxiYWNrLiAiKX0pfSxJZSkuY2F0Y2goZnVuY3Rp''@;'; put 'put ''b24oeCl7dGhyb3coMCxKLnByZWZpeE1lc3NhZ2UpKHgsIkVycm9yIHdoaWxlIGhhbmRsaW5nIGVycm9yLiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsdGUuc2VudCgpXX19KX0pfSldfSl9KX0sZGUucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24odmUsQWUsa2UsU2UsSWUpe3JldHVybiB2b2lkIDA9''@;'; put 'put ''PT1TZSYmKFNlPSJhcHBsaWNhdGlvbi9qc29uIiksdm9pZCAwPT09SWUmJihJZT17fSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVGUsRWU9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm4gVGU9WShZKHt9LHRoaXMuZ2V0SGVhZGVycyhrZSxTZSkp''@;'; put 'put ''LEllKSxbMix0aGlzLmh0dHBDbGllbnQucG9zdCh2ZSxBZSx7aGVhZGVyczpUZSx3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKE8pe3JldHVybiBXKEVlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtj''@;'; put 'put ''YXNlIDA6cmV0dXJuIDMwMiE9PU8uc3RhdHVzP1szLDJdOls0LHRoaXMuZ2V0KE8uaGVhZGVycy5sb2NhdGlvbix2b2lkIDAsU2UsSWUpXTtjYXNlIDE6cmV0dXJuWzIsei5zZW50KCldO2Nhc2UgMjpyZXR1cm4oMCxzZS50aHJvd0lmRXJyb3IpKE8pLFsyLHRoaXMucGFyc2VSZXNwb25zZShP''@;'; put 'put ''KV19fSl9KX0pLmNhdGNoKGZ1bmN0aW9uKE8pe3JldHVybiBXKEVlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgej10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuaGFuZGxlRXJyb3IoTyxmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB6LnBvc3QodmUsQWUsa2UsU2UsSWUpfSldO2Nhc2UgMTpyZXR1cm5bMixuZS5zZW50KCldfX0pfSl9KV19KX0pfSxkZX0oc2UuUmVxdWVzdENsaWVudCk7US5TYXM5UmVxdWVzdENsaWVudD1hZX0sMzYwMjpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZSxsZT10''@;'; put 'put ''aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGllPWZ1bmN0aW9uKGVlLHEpe3JldHVybihpZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oSixzZSl7Si5fX3Byb3RvX189c2V9fHxmdW5jdGlvbihKLHNlKXtmb3IodmFyIGFlIGlu''@;'; put 'put ''IHNlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZSxhZSkmJihKW2FlXT1zZVthZV0pfSkoZWUscSl9LGZ1bmN0aW9uKGVlLHEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBxJiZudWxsIT09cSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIr''@;'; put 'put ''U3RyaW5nKHEpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEooKXt0aGlzLmNvbnN0cnVjdG9yPWVlfWllKGVlLHEpLGVlLnByb3RvdHlwZT1udWxsPT09cT9PYmplY3QuY3JlYXRlKHEpOihKLnByb3RvdHlwZT1xLnByb3RvdHlwZSxuZXcgSil9KTtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TYXNqc1JlcXVlc3RDbGllbnQ9dm9pZCAwO3ZhciBZPVooNDU4OCksVz1aKDU5MjgpLE49ZnVuY3Rpb24oZWUpe2Z1bmN0aW9uIHEoKXt2YXIgSj1udWxsIT09ZWUmJmVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8''@;'; put 'put ''dGhpcztyZXR1cm4gSi5nZXRIZWFkZXJzPWZ1bmN0aW9uKHNlLGFlKXt2YXIgZmUsZGU9e307cmV0dXJuImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIhPT1hZSYmKGRlWyJDb250ZW50LVR5cGUiXT1hZSksZGUuQWNjZXB0PSJhcHBsaWNhdGlvbi9qc29uIj09PWFlP2FlOiIq''@;'; put 'put ''LyoiLHNlfHwidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8KHNlPW51bGwhPT0oZmU9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImFjY2Vzc1Rva2VuIikpJiZ2b2lkIDAhPT1mZT9mZTp2b2lkIDApLHNlJiYoZGUuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KHNlKSksZGV9LEp9cmV0''@;'; put 'put ''dXJuIGxlKHEsZWUpLHEucHJvdG90eXBlLnBhcnNlUmVzcG9uc2U9ZnVuY3Rpb24oSil7dmFyIHNlLGFlPW51bGwhPUomJkouaGVhZGVycz9KLmhlYWRlcnMuZXRhZzoiIixmZT17fTt0cnl7ZmU9InN0cmluZyI9PXR5cGVvZiBKLmRhdGE/SlNPTi5wYXJzZShKLmRhdGEpOkouZGF0YX1jYXRj''@;'; put 'put ''aCh2ZSl7aWYoSi5kYXRhLmluY2x1ZGVzKFcuU0FTSlNfTE9HU19TRVBBUkFUT1IpKXt2YXIgZGU9Si5kYXRhLnNwbGl0KFcuU0FTSlNfTE9HU19TRVBBUkFUT1IpO3NlPWRlWzFdLGRlWzBdLnRyaW0oKSYmKGZlPSgwLFcuZ2V0VmFsaWRKc29uKShkZVswXSkpfWVsc2UgZmU9Si5kYXRhfXJl''@;'; put 'put ''dHVybntyZXN1bHQ6ZmUsbG9nOnNlLGV0YWc6YWUsc3RhdHVzOkouc3RhdHVzfX0scX0oWS5SZXF1ZXN0Q2xpZW50KTtRLlNhc2pzUmVxdWVzdENsaWVudD1OfSw0NzA6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p''@;'; put 'put ''fSw0NjY2OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNjE3NzooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDU3NjY6KFUsUSk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw0OTc1OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMjE1OihVLFEpPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDc4MjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQxNjg6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw4NTE2OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMzE1MzooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDU4NDE6KFUsUSk9PnsidXNlIHN0cmljdCI7dmFyIFosbGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuTG9naW5NZWNoYW5pc209US5TQVNqc0NvbmZpZz12b2lkIDAsUS5TQVNqc0NvbmZpZz1mdW5j''@;'; put 'put ''dGlvbigpe3RoaXMuc2VydmVyVXJsPSIiLHRoaXMucGF0aFNBU0pTPSIiLHRoaXMucGF0aFNBUzk9IiIsdGhpcy5wYXRoU0FTVml5YT0iIix0aGlzLmFwcExvYz0iIix0aGlzLnNlcnZlclR5cGU9bnVsbCx0aGlzLmRlYnVnPSEwLHRoaXMuY29udGV4dE5hbWU9IiIsdGhpcy51c2VDb21wdXRl''@;'; put 'put ''QXBpPW51bGwsdGhpcy5sb2dpbk1lY2hhbmlzbT1aLkRlZmF1bHQsdGhpcy5yZXF1ZXN0SGlzdG9yeUxpbWl0PTEwfSwobGU9Wj1RLkxvZ2luTWVjaGFuaXNtfHwoUS5Mb2dpbk1lY2hhbmlzbT17fSkpLkRlZmF1bHQ9IkRlZmF1bHQiLGxlLlJlZGlyZWN0ZWQ9IlJlZGlyZWN0ZWQifSwyNDkz''@;'; put 'put ''OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNjAzODooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDk0OTM6KFUsUSk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw4NjUwOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMTI0OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciBaLGllPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoWj1mdW5jdGlvbihZLFcpe3JldHVybihaPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLGVlKXtOLl9fcHJvdG9fXz1lZX18fGZ1bmN0aW9uKE4sZWUpe2Zvcih2''@;'; put 'put ''YXIgcSBpbiBlZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWUscSkmJihOW3FdPWVlW3FdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUg''@;'; put 'put ''IitTdHJpbmcoVykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1aKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuQXV0aG9yaXplRXJyb3I9dm9pZCAwO3ZhciBsZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4sZWUpe3ZhciBxPVkuY2FsbCh0aGlzLE4pfHx0aGlzO3JldHVybiBxLm1lc3NhZ2U9TixxLmNvbmZpcm1Vcmw9ZWUscS5u''@;'; put 'put ''YW1lPSJBdXRob3JpemVFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHEsVy5wcm90b3R5cGUpLHF9cmV0dXJuIGllKFcsWSksV30oRXJyb3IpO1EuQXV0aG9yaXplRXJyb3I9bGV9LDk0NjU6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFosaWU9dGhpcyYmdGhpcy5fX2V4dGVu''@;'; put 'put ''ZHN8fChaPWZ1bmN0aW9uKFksVyl7cmV0dXJuKFo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sZWUpe04uX19wcm90b19fPWVlfXx8ZnVuY3Rpb24oTixlZSl7Zm9yKHZhciBxIGluIGVlKU9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''aGFzT3duUHJvcGVydHkuY2FsbChlZSxxKSYmKE5bcV09ZWVbcV0pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0''@;'; put 'put ''cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfVooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksUS5DZXJ0aWZpY2F0ZUVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVyhOKXt2YXIgZWU9WS5jYWxsKHRoaXMsIiIuY29uY2F0KE4sIlxuUGxlYXNlIHZpc2l0IHRoZSBsaW5rIGJlbG93IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoaXMg''@;'; put 'put ''aXNzdWU6XG4tICIpLmNvbmNhdCgiaHR0cHM6Ly9naXRodWIuY29tL3Nhc2pzL2NsaS9pc3N1ZXMvMTE4MSNpc3N1ZWNvbW1lbnQtMTA5MDYzODU4NCIsIlxuIikpfHx0aGlzO3JldHVybiBlZS5uYW1lPSJDZXJ0aWZpY2F0ZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoZWUsVy5wcm90''@;'; put 'put ''b3R5cGUpLGVlfXJldHVybiBpZShXLFkpLFd9KEVycm9yKTtRLkNlcnRpZmljYXRlRXJyb3I9bGV9LDUyNjc6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFosaWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChaPWZ1bmN0aW9uKFksVyl7cmV0dXJuKFo9T2JqZWN0LnNldFByb3RvdHlw''@;'; put 'put ''ZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sZWUpe04uX19wcm90b19fPWVlfXx8ZnVuY3Rpb24oTixlZSl7Zm9yKHZhciBxIGluIGVlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSxxKSYmKE5bcV09ZWVbcV0pfSkoWSxXKX0s''@;'; put 'put ''ZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1Z''@;'; put 'put ''fVooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3I9dm9pZCAwO3Zh''@;'; put 'put ''ciBsZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4sZWUpe3ZhciBxPVkuY2FsbCh0aGlzLCJFcnJvcjogSm9iIGV4ZWN1dGlvbiBmYWlsZWQiKXx8dGhpcztyZXR1cm4gcS5qb2I9TixxLmxvZz1lZSxxLm5hbWU9IkNvbXB1dGVKb2JFeGVjdXRpb25FcnJvciIsT2JqZWN0LnNldFByb3RvdHlw''@;'; put 'put ''ZU9mKHEsVy5wcm90b3R5cGUpLHF9cmV0dXJuIGllKFcsWSksV30oRXJyb3IpO1EuQ29tcHV0ZUpvYkV4ZWN1dGlvbkVycm9yPWxlfSw5MjMyOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkVycm9yUmVzcG9u''@;'; put 'put ''c2U9dm9pZCAwLFEuRXJyb3JSZXNwb25zZT1mdW5jdGlvbihpZSxsZSxZKXt2YXIgVz1sZTtpZigib2JqZWN0IiE9dHlwZW9mIGxlKXRyeXtXPUpTT04ucGFyc2UobGUpfWNhdGNoKE4pe1k9bGUsVz0iIn10aGlzLmVycm9yPXttZXNzYWdlOmllLGRldGFpbHM6VyxyYXc6WX19fSw1MTA5OmZ1''@;'; put 'put ''bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBaLGllPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoWj1mdW5jdGlvbihZLFcpe3JldHVybihaPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLGVlKXtOLl9fcHJvdG9fXz1l''@;'; put 'put ''ZX18fGZ1bmN0aW9uKE4sZWUpe2Zvcih2YXIgcSBpbiBlZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWUscSkmJihOW3FdPWVlW3FdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1aKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90''@;'; put 'put ''b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSW50ZXJuYWxTZXJ2ZXJFcnJvcj12b2lkIDA7dmFyIGxlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoKXt2YXIgTj1ZLmNhbGwodGhpcywiRXJyb3I6IEludGVybmFsIHNlcnZl''@;'; put 'put ''ciBlcnJvci4iKXx8dGhpcztyZXR1cm4gTi5uYW1lPSJJbnRlcm5hbFNlcnZlckVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoTixXLnByb3RvdHlwZSksTn1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5JbnRlcm5hbFNlcnZlckVycm9yPWxlfSw1NTE4OmZ1bmN0aW9uKFUsUSl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBaLGllPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoWj1mdW5jdGlvbihZLFcpe3JldHVybihaPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLGVlKXtOLl9fcHJvdG9fXz1lZX18fGZ1bmN0aW9uKE4s''@;'; put 'put ''ZWUpe2Zvcih2YXIgcSBpbiBlZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWUscSkmJihOW3FdPWVlW3FdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVu''@;'; put 'put ''ZHMgdmFsdWUgIitTdHJpbmcoVykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1aKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90b3R5cGUsbmV3IE4pfSk7''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSW52YWxpZEpzb25FcnJvcj12b2lkIDA7dmFyIGxlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoKXt2YXIgTj1ZLmNhbGwodGhpcywiRXJyb3I6IGludmFsaWQgSnNvbiBzdHJpbmciKXx8dGhpcztyZXR1''@;'; put 'put ''cm4gTi5uYW1lPSJJbnZhbGlkSnNvbkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoTixXLnByb3RvdHlwZSksTn1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5JbnZhbGlkSnNvbkVycm9yPWxlfSwxMDA1OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBaLGllPXRoaXMmJnRo''@;'; put 'put ''aXMuX19leHRlbmRzfHwoWj1mdW5jdGlvbihZLFcpe3JldHVybihaPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLGVlKXtOLl9fcHJvdG9fXz1lZX18fGZ1bmN0aW9uKE4sZWUpe2Zvcih2YXIgcSBpbiBlZSlPYmplY3Qu''@;'; put 'put ''cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWUscSkmJihOW3FdPWVlW3FdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVykrIiBpcyBu''@;'; put 'put ''b3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1aKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSW52YWxpZFNBU2pzQ3NyZkVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVygpe3ZhciBOPXRoaXM7cmV0dXJuKE49WS5jYWxsKHRoaXMsIkF1dGggZXJyb3I6ICIuY29uY2F0KCJJbnZhbGlkIENTUkYgdG9rZW4hIikpfHx0''@;'; put 'put ''aGlzKS5uYW1lPSJJbnZhbGlkU0FTanNDc3JmRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihOLFcucHJvdG90eXBlKSxOfXJldHVybiBpZShXLFkpLFd9KEVycm9yKTtRLkludmFsaWRTQVNqc0NzcmZFcnJvcj1sZX0sODUzMTpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgWixp''@;'; put 'put ''ZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KFo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oWj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTixlZSl7Ti5fX3Byb3RvX189ZWV9fHxmdW5jdGlvbihOLGVlKXtmb3IodmFyIHEgaW4g''@;'; put 'put ''ZWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVlLHEpJiYoTltxXT1lZVtxXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5n''@;'; put 'put ''KFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9WihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJvdG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkpvYkV4ZWN1dGlvbkVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVyhOLGVlLHEpe3ZhciBKPVkuY2FsbCh0aGlzLCJFcnJvciBDb2RlICIuY29uY2F0KE4sIjogIikuY29uY2F0KGVlKSl8fHRoaXM7cmV0''@;'; put 'put ''dXJuIEouZXJyb3JDb2RlPU4sSi5lcnJvck1lc3NhZ2U9ZWUsSi5yZXN1bHQ9cSxKLm5hbWU9IkpvYkV4ZWN1dGlvbkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoSixXLnByb3RvdHlwZSksSn1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5Kb2JFeGVjdXRpb25FcnJvcj1sZX0sOTA3''@;'; put 'put ''OTpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgWixpZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KFo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oWj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTixlZSl7Ti5fX3Byb3Rv''@;'; put 'put ''X189ZWV9fHxmdW5jdGlvbihOLGVlKXtmb3IodmFyIHEgaW4gZWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVlLHEpJiYoTltxXT1lZVtxXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9WihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJvdG90eXBlPVcu''@;'; put 'put ''cHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkpvYlN0YXRlUG9sbEVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVyhOLGVlKXt2YXIgcT1ZLmNhbGwodGhpcywiRXJyb3Igd2hpbGUgcG9s''@;'; put 'put ''bGluZyBqb2Igc3RhdGUgZm9yIGpvYiAiLmNvbmNhdChOLCI6ICIpLmNvbmNhdChlZS5tZXNzYWdlfHxlZSkpfHx0aGlzO3JldHVybiBxLm9yaWdpbmFsRXJyb3I9ZWUscS5uYW1lPSJKb2JTdGF0ZVBvbGxFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHEsVy5wcm90b3R5cGUpLHF9cmV0''@;'; put 'put ''dXJuIGllKFcsWSksV30oRXJyb3IpO1EuSm9iU3RhdGVQb2xsRXJyb3I9bGV9LDMwOTY6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFosaWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChaPWZ1bmN0aW9uKFksVyl7cmV0dXJuKFo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90''@;'; put 'put ''b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sZWUpe04uX19wcm90b19fPWVlfXx8ZnVuY3Rpb24oTixlZSl7Zm9yKHZhciBxIGluIGVlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSxxKSYmKE5bcV09ZWVbcV0pfSkoWSxXKX0sZnVuY3Rpb24oWSxX''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfVooWSxXKSxZLnBy''@;'; put 'put ''b3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Kc29uUGFyc2VBcnJheUVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7''@;'; put 'put ''ZnVuY3Rpb24gVygpe3ZhciBOPVkuY2FsbCh0aGlzLCJDYW4gbm90IHBhcnNlIGFycmF5IG9iamVjdCB0byBqc29uLiIpfHx0aGlzO3JldHVybiBOLm5hbWU9Ikpzb25QYXJzZUFycmF5RXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihOLFcucHJvdG90eXBlKSxOfXJldHVybiBpZShXLFkp''@;'; put 'put ''LFd9KEVycm9yKTtRLkpzb25QYXJzZUFycmF5RXJyb3I9bGV9LDY3NDM6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFosaWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChaPWZ1bmN0aW9uKFksVyl7cmV0dXJuKFo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWlu''@;'; put 'put ''c3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sZWUpe04uX19wcm90b19fPWVlfXx8ZnVuY3Rpb24oTixlZSl7Zm9yKHZhciBxIGluIGVlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSxxKSYmKE5bcV09ZWVbcV0pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfVooWSxXKSxZLnByb3RvdHlwZT1u''@;'; put 'put ''dWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Mb2dpblJlcXVpcmVkRXJyb3I9dm9pZCAwO3ZhciBsZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBX''@;'; put 'put ''KE4pe3ZhciBlZT10aGlzLHE9Tj9KU09OLnN0cmluZ2lmeShOLG51bGwsMik6IllvdSBtdXN0IGJlIGxvZ2dlZCBpbiB0byBhY2Nlc3MgdGhpcyByZXNvdXJjZSI7cmV0dXJuKGVlPVkuY2FsbCh0aGlzLCJBdXRoIGVycm9yOiAiLmNvbmNhdChxKSl8fHRoaXMpLm5hbWU9IkxvZ2luUmVxdWly''@;'; put 'put ''ZWRFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKGVlLFcucHJvdG90eXBlKSxlZX1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5Mb2dpblJlcXVpcmVkRXJyb3I9bGV9LDc4NjQ6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFosaWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fCha''@;'; put 'put ''PWZ1bmN0aW9uKFksVyl7cmV0dXJuKFo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sZWUpe04uX19wcm90b19fPWVlfXx8ZnVuY3Rpb24oTixlZSl7Zm9yKHZhciBxIGluIGVlKU9iamVjdC5wcm90b3R5cGUuaGFzT3du''@;'; put 'put ''UHJvcGVydHkuY2FsbChlZSxxKSYmKE5bcV09ZWVbcV0pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9y''@;'; put 'put ''IG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfVooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVl''@;'; put 'put ''OiEwfSksUS5Ob1Nlc3Npb25TdGF0ZUVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVyhOLGVlLHEpe3ZhciBKPVkuY2FsbCh0aGlzLCJDb3VsZCBub3QgZ2V0IHNlc3Npb24gc3RhdGUuIFNlcnZlciByZXNwb25kZWQgd2l0aCAiLmNvbmNhdChOLCIgd2hpbHN0IGNo''@;'; put 'put ''ZWNraW5nIHN0YXRlOiAiKS5jb25jYXQoZWUpKXx8dGhpcztyZXR1cm4gSi5zZXJ2ZXJSZXNwb25zZVN0YXR1cz1OLEouc2Vzc2lvblN0YXRlVXJsPWVlLEoubG9nVXJsPXEsSi5uYW1lPSJOb1Nlc3Npb25TdGF0dXMiLE9iamVjdC5zZXRQcm90b3R5cGVPZihKLFcucHJvdG90eXBlKSxKfXJl''@;'; put 'put ''dHVybiBpZShXLFkpLFd9KEVycm9yKTtRLk5vU2Vzc2lvblN0YXRlRXJyb3I9bGV9LDk1Nzc6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIFosaWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChaPWZ1bmN0aW9uKFksVyl7cmV0dXJuKFo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19w''@;'; put 'put ''cm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sZWUpe04uX19wcm90b19fPWVlfXx8ZnVuY3Rpb24oTixlZSl7Zm9yKHZhciBxIGluIGVlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSxxKSYmKE5bcV09ZWVbcV0pfSkoWSxXKX0sZnVuY3Rpb24o''@;'; put 'put ''WSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfVooWSxXKSxZ''@;'; put 'put ''LnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Ob3RGb3VuZEVycm9yPXZvaWQgMDt2YXIgbGU9ZnVuY3Rpb24oWSl7ZnVu''@;'; put 'put ''Y3Rpb24gVyhOKXt2YXIgZWU9WS5jYWxsKHRoaXMsIkVycm9yOiBSZXNvdXJjZSBhdCAiLmNvbmNhdChOLCIgd2FzIG5vdCBmb3VuZCIpKXx8dGhpcztyZXR1cm4gZWUudXJsPU4sZWUubmFtZT0iTm90Rm91bmRFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKGVlLFcucHJvdG90eXBlKSxl''@;'; put 'put ''ZX1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5Ob3RGb3VuZEVycm9yPWxlfSw5Mjc5OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllLGxlPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaWU9ZnVuY3Rpb24oTixlZSl7cmV0dXJuKGllPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8''@;'; put 'put ''e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihxLEope3EuX19wcm90b19fPUp9fHxmdW5jdGlvbihxLEope2Zvcih2YXIgc2UgaW4gSilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSixzZSkmJihxW3NlXT1KW3NlXSl9KShOLGVlKX0sZnVuY3Rp''@;'; put 'put ''b24oTixlZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGVlJiZudWxsIT09ZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhlZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcSgpe3RoaXMuY29uc3RydWN0b3I9Tn1p''@;'; put 'put ''ZShOLGVlKSxOLnByb3RvdHlwZT1udWxsPT09ZWU/T2JqZWN0LmNyZWF0ZShlZSk6KHEucHJvdG90eXBlPWVlLnByb3RvdHlwZSxuZXcgcSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Sb290Rm9sZGVyTm90Rm91bmRFcnJvcj12b2lkIDA7''@;'; put 'put ''dmFyIFk9Wig2Nzk5KSxXPWZ1bmN0aW9uKE4pe2Z1bmN0aW9uIGVlKHEsSixzZSl7dmFyIGFlPXRoaXMsZmU9IlJvb3QgZm9sZGVyICIuY29uY2F0KHEsIiB3YXMgbm90IGZvdW5kLiIpKyJcblBsZWFzZSBjaGVjayAiLmNvbmNhdChKLCIvU0FTRHJpdmUuIikrIlxuSWYgdGhlIGZvbGRlciBE''@;'; put 'put ''T0VTIGV4aXN0IHRoZW4gaXQgaXMgbGlrZWx5IGEgcGVybWlzc2lvbiBwcm9ibGVtLlxuIjtpZihzZSl7dmFyIGRlPSgwLFkuZGVjb2RlVG9rZW4pKHNlKS5zY29wZTtmZSs9IllvdXIgYWNjZXNzIHRva2VuIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc2NvcGVzOlxuIisoZGU9ZGUubWFwKGZ1''@;'; put 'put ''bmN0aW9uKHZlKXtyZXR1cm4iKiAiK3ZlfSkpLmpvaW4oIlxuIil9cmV0dXJuKGFlPU4uY2FsbCh0aGlzLGZlKXx8dGhpcykubmFtZT0iUm9vdEZvbGRlck5vdEZvdW5kRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihhZSxlZS5wcm90b3R5cGUpLGFlfXJldHVybiBsZShlZSxOKSxlZX0o''@;'; put 'put ''RXJyb3IpO1EuUm9vdEZvbGRlck5vdEZvdW5kRXJyb3I9V30sOTUyNjpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgWixpZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KFo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oWj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5z''@;'; put 'put ''dGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTixlZSl7Ti5fX3Byb3RvX189ZWV9fHxmdW5jdGlvbihOLGVlKXtmb3IodmFyIHEgaW4gZWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVlLHEpJiYoTltxXT1lZVtxXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5j''@;'; put 'put ''dGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9WihZLFcpLFkucHJvdG90eXBlPW51''@;'; put 'put ''bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJvdG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLlNBUzlBdXRoRXJyb3I9dm9pZCAwO3ZhciBsZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKCl7dmFy''@;'; put 'put ''IE49WS5jYWxsKHRoaXMsIlRoZSBjcmVkZW50aWFscyB5b3UgcHJvdmlkZWQgY2Fubm90IGJlIGF1dGhlbnRpY2F0ZWQuIFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgc2V0IG9mIGNyZWRlbnRpYWxzLiIpfHx0aGlzO3JldHVybiBOLm5hbWU9IkF1dGhvcml6ZUVycm9yIixPYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2YoTixXLnByb3RvdHlwZSksTn1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5TQVM5QXV0aEVycm9yPWxlfSw4ODc1OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBaLGllPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoWj1mdW5jdGlvbihZLFcpe3JldHVybihaPU9iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLGVlKXtOLl9fcHJvdG9fXz1lZX18fGZ1bmN0aW9uKE4sZWUpe2Zvcih2YXIgcSBpbiBlZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWUscSkmJihOW3FdPWVl''@;'; put 'put ''W3FdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMu''@;'; put 'put ''Y29uc3RydWN0b3I9WX1aKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuV2Vib3V0UmVzcG9uc2VFcnJvcj12''@;'; put 'put ''b2lkIDA7dmFyIGxlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoTil7dmFyIGVlPVkuY2FsbCh0aGlzLCJFcnJvcjogZXJyb3Igd2hpbGUgcGFyc2luZyByZXNwb25zZSBmcm9tICIuY29uY2F0KE4pKXx8dGhpcztyZXR1cm4gZWUudXJsPU4sZWUubmFtZT0iV2Vib3V0UmVzcG9uc2VFcnJvciIs''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mKGVlLFcucHJvdG90eXBlKSxlZX1yZXR1cm4gaWUoVyxZKSxXfShFcnJvcik7US5XZWJvdXRSZXNwb25zZUVycm9yPWxlfSwxMzk1OmZ1bmN0aW9uKFUsUSxaKXsidXNlIHN0cmljdCI7dmFyIGllPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2Jq''@;'; put 'put ''ZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTixlZSl7dm9pZCAwPT09ZWUmJihlZT1OKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWSxlZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV1tOXX19KX06ZnVuY3Rpb24oWSxXLE4sZWUpe3ZvaWQgMD09PWVlJiYoZWU9TiksWVtl''@;'; put 'put ''ZV09V1tOXX0pLGxlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihZLFcpe2Zvcih2YXIgTiBpbiBZKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLE4pfHxpZShXLFksTil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxsZShaKDEyNCksUSksbGUoWig5NDY1KSxRKSxsZShaKDUyNjcpLFEpLGxlKFooOTIzMiksUSksbGUoWig1MTA5KSxRKSxsZShaKDU1MTgpLFEpLGxlKFooODUzMSksUSksbGUoWig5MDc5KSxRKSxsZShaKDMwOTYpLFEpLGxlKFooNjc0MyksUSksbGUoWig3''@;'; put 'put ''ODY0KSxRKSxsZShaKDk1NzcpLFEpLGxlKFooOTI3OSksUSksbGUoWig4ODc1KSxRKX0sMTIzMDpmdW5jdGlvbihVLFEsWil7InVzZSBzdHJpY3QiO3ZhciBpZT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oWSxXLE4sZWUpe3ZvaWQgMD09PWVl''@;'; put 'put ''JiYoZWU9TiksT2JqZWN0LmRlZmluZVByb3BlcnR5KFksZWUse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSl9OmZ1bmN0aW9uKFksVyxOLGVlKXt2b2lkIDA9PT1lZSYmKGVlPU4pLFlbZWVdPVdbTl19KSxsZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVu''@;'; put 'put ''Y3Rpb24oWSxXKXtmb3IodmFyIE4gaW4gWSkiZGVmYXVsdCI9PT1OfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxOKXx8aWUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbGUoWig0NzApLFEpLGxlKFooNDY2''@;'; put 'put ''NiksUSksbGUoWig0OTc1KSxRKSxsZShaKDU3NjYpLFEpLGxlKFooMjE1KSxRKSxsZShaKDQ3ODIpLFEpLGxlKFooNDE2OCksUSksbGUoWig4NTE2KSxRKSxsZShaKDU4NDEpLFEpLGxlKFooMjQ5MyksUSksbGUoWig2MDM4KSxRKSxsZShaKDk0OTMpLFEpLGxlKFooMzE1MyksUSksbGUoWig4''@;'; put 'put ''NjUwKSxRKSxsZShaKDYxNzcpLFEpfSwzMzAyOmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBaPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFo9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oWSl7Zm9yKHZhciBXLE49MSxlZT1hcmd1bWVudHMubGVuZ3RoO048''@;'; put 'put ''ZWU7TisrKWZvcih2YXIgcSBpbiBXPWFyZ3VtZW50c1tOXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxxKSYmKFlbcV09V1txXSk7cmV0dXJuIFl9LFouYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oWSxXLE4s''@;'; put 'put ''ZWUpe3JldHVybiBuZXcoTnx8KE49UHJvbWlzZSkpKGZ1bmN0aW9uKHEsSil7ZnVuY3Rpb24gc2UoZGUpe3RyeXtmZShlZS5uZXh0KGRlKSl9Y2F0Y2godmUpe0oodmUpfX1mdW5jdGlvbiBhZShkZSl7dHJ5e2ZlKGVlLnRocm93KGRlKSl9Y2F0Y2godmUpe0oodmUpfX1mdW5jdGlvbiBmZShk''@;'; put 'put ''ZSl7dmFyIHZlO2RlLmRvbmU/cShkZS52YWx1ZSk6KHZlPWRlLnZhbHVlLHZlIGluc3RhbmNlb2YgTj92ZTpuZXcgTihmdW5jdGlvbihBZSl7QWUodmUpfSkpLnRoZW4oc2UsYWUpfWZlKChlZT1lZS5hcHBseShZLFd8fFtdKSkubmV4dCgpKX0pfSxsZT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9y''@;'; put 'put ''fHxmdW5jdGlvbihZLFcpe3ZhciBOLGVlLHEsSixzZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZxWzBdKXRocm93IHFbMV07cmV0dXJuIHFbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gSj17bmV4dDphZSgwKSx0aHJvdzphZSgxKSxyZXR1cm46YWUoMil9LCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJihKW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEo7ZnVuY3Rpb24gYWUoZmUpe3JldHVybiBmdW5jdGlvbihkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlKXtpZihOKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5''@;'; put 'put ''IGV4ZWN1dGluZy4iKTtmb3IoO3NlOyl0cnl7aWYoTj0xLGVlJiYocT0yJnZlWzBdP2VlLnJldHVybjp2ZVswXT9lZS50aHJvd3x8KChxPWVlLnJldHVybikmJnEuY2FsbChlZSksMCk6ZWUubmV4dCkmJiEocT1xLmNhbGwoZWUsdmVbMV0pKS5kb25lKXJldHVybiBxO3N3aXRjaChlZT0wLHEm''@;'; put 'put ''Jih2ZT1bMiZ2ZVswXSxxLnZhbHVlXSksdmVbMF0pe2Nhc2UgMDpjYXNlIDE6cT12ZTticmVhaztjYXNlIDQ6cmV0dXJuIHNlLmxhYmVsKysse3ZhbHVlOnZlWzFdLGRvbmU6ITF9O2Nhc2UgNTpzZS5sYWJlbCsrLGVlPXZlWzFdLHZlPVswXTtjb250aW51ZTtjYXNlIDc6dmU9c2Uub3BzLnBv''@;'; put 'put ''cCgpLHNlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChxPShxPXNlLnRyeXMpLmxlbmd0aD4wJiZxW3EubGVuZ3RoLTFdKXx8NiE9PXZlWzBdJiYyIT09dmVbMF0pKXtzZT0wO2NvbnRpbnVlfWlmKDM9PT12ZVswXSYmKCFxfHx2ZVsxXT5xWzBdJiZ2ZVsxXTxxWzNdKSl7c2Uu''@;'; put 'put ''bGFiZWw9dmVbMV07YnJlYWt9aWYoNj09PXZlWzBdJiZzZS5sYWJlbDxxWzFdKXtzZS5sYWJlbD1xWzFdLHE9dmU7YnJlYWt9aWYocSYmc2UubGFiZWw8cVsyXSl7c2UubGFiZWw9cVsyXSxzZS5vcHMucHVzaCh2ZSk7YnJlYWt9cVsyXSYmc2Uub3BzLnBvcCgpLHNlLnRyeXMucG9wKCk7Y29u''@;'; put 'put ''dGludWV9dmU9Vy5jYWxsKFksc2UpfWNhdGNoKEFlKXt2ZT1bNixBZV0sZWU9MH1maW5hbGx5e049cT0wfWlmKDUmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJue3ZhbHVlOnZlWzBdP3ZlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2ZlLGRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXM9dm9pZCAwLFEuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oWSxXKXtyZXR1cm4gaWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE4sZWU7cmV0dXJuIGxl''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE49e30sbnVsbCE9VyYmVy5sZW5ndGg/KGVlPVcucmVkdWNlKGZ1bmN0aW9uKEosc2Upe3JldHVybiBKW3NlXT1ZW3NlXSxKfSx7fSksTj1aKHtyZXN1bHQ6WS5yZXN1bHR9LGVlKSk6Tj1ZLnJlc3VsdCxbMixOXX0pfSl9fSw3OTIyOmZ1bmN0aW9u''@;'; put 'put ''KFUsUSl7InVzZSBzdHJpY3QiO3ZhciBaPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihsZSxZLFcsTil7cmV0dXJuIG5ldyhXfHwoVz1Qcm9taXNlKSkoZnVuY3Rpb24oZWUscSl7ZnVuY3Rpb24gSihmZSl7dHJ5e2FlKE4ubmV4dChmZSkpfWNhdGNoKGRlKXtxKGRlKX19ZnVuY3Rp''@;'; put 'put ''b24gc2UoZmUpe3RyeXthZShOLnRocm93KGZlKSl9Y2F0Y2goZGUpe3EoZGUpfX1mdW5jdGlvbiBhZShmZSl7dmFyIGRlO2ZlLmRvbmU/ZWUoZmUudmFsdWUpOihkZT1mZS52YWx1ZSxkZSBpbnN0YW5jZW9mIFc/ZGU6bmV3IFcoZnVuY3Rpb24odmUpe3ZlKGRlKX0pKS50aGVuKEosc2UpfWFl''@;'; put 'put ''KChOPU4uYXBwbHkobGUsWXx8W10pKS5uZXh0KCkpfSl9LGllPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGxlLFkpe3ZhciBXLE4sZWUscSxKPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmVlWzBdKXRocm93IGVlWzFdO3JldHVybiBlZVsxXX0sdHJ5czpbXSxvcHM6''@;'; put 'put ''W119O3JldHVybiBxPXtuZXh0OnNlKDApLHRocm93OnNlKDEpLHJldHVybjpzZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSkscTtmdW5jdGlvbiBzZShhZSl7cmV0dXJuIGZ1bmN0aW9uKGZlKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oZGUpe2lmKFcpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7SjspdHJ5e2lmKFc9MSxOJiYoZWU9MiZkZVswXT9OLnJldHVybjpkZVswXT9OLnRocm93fHwoKGVlPU4ucmV0dXJuKSYmZWUuY2FsbChOKSwwKTpO''@;'; put 'put ''Lm5leHQpJiYhKGVlPWVlLmNhbGwoTixkZVsxXSkpLmRvbmUpcmV0dXJuIGVlO3N3aXRjaChOPTAsZWUmJihkZT1bMiZkZVswXSxlZS52YWx1ZV0pLGRlWzBdKXtjYXNlIDA6Y2FzZSAxOmVlPWRlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gSi5sYWJlbCsrLHt2YWx1ZTpkZVsxXSxkb25lOiExfTtj''@;'; put 'put ''YXNlIDU6Si5sYWJlbCsrLE49ZGVbMV0sZGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpkZT1KLm9wcy5wb3AoKSxKLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChlZT0oZWU9Si50cnlzKS5sZW5ndGg+MCYmZWVbZWUubGVuZ3RoLTFdKXx8NiE9PWRlWzBdJiYyIT09ZGVbMF0pKXtK''@;'; put 'put ''PTA7Y29udGludWV9aWYoMz09PWRlWzBdJiYoIWVlfHxkZVsxXT5lZVswXSYmZGVbMV08ZWVbM10pKXtKLmxhYmVsPWRlWzFdO2JyZWFrfWlmKDY9PT1kZVswXSYmSi5sYWJlbDxlZVsxXSl7Si5sYWJlbD1lZVsxXSxlZT1kZTticmVha31pZihlZSYmSi5sYWJlbDxlZVsyXSl7Si5sYWJlbD1l''@;'; put 'put ''ZVsyXSxKLm9wcy5wdXNoKGRlKTticmVha31lZVsyXSYmSi5vcHMucG9wKCksSi50cnlzLnBvcCgpO2NvbnRpbnVlfWRlPVkuY2FsbChsZSxKKX1jYXRjaCh2ZSl7ZGU9WzYsdmVdLE49MH1maW5hbGx5e1c9ZWU9MH1pZig1JmRlWzBdKXRocm93IGRlWzFdO3JldHVybnt2YWx1ZTpkZVswXT9k''@;'; put 'put ''ZVsxXTp2b2lkIDAsZG9uZTohMH19KFthZSxmZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmFzeW5jRm9yRWFjaD12b2lkIDAsUS5hc3luY0ZvckVhY2g9ZnVuY3Rpb24obGUsWSl7cmV0dXJuIFoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIFc7cmV0dXJuIGllKHRoaXMsZnVuY3Rpb24oTil7c3dpdGNoKE4ubGFiZWwpe2Nhc2UgMDpXPTAsTi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gVzxsZS5sZW5ndGg/WzQsWShsZVtXXSxXLGxlKV06WzMsNF07Y2FzZSAyOk4uc2VudCgpLE4ubGFiZWw9MztjYXNlIDM6cmV0''@;'; put 'put ''dXJuIFcrKyxbMywxXTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9fSwzNzkzOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmNvbXBhcmVUaW1lc3RhbXBzPXZvaWQgMCxRLmNvbXBhcmVUaW1lc3RhbXBzPWZ1bmN0''@;'; put 'put ''aW9uKFosaWUpe3JldHVybiBpZS50aW1lc3RhbXAuZ2V0VGltZSgpLVoudGltZXN0YW1wLmdldFRpbWUoKX19LDM1NTM6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU0FTSlNfTE9HU19TRVBBUkFUT1I9dm9p''@;'; put 'put ''ZCAwLFEuU0FTSlNfTE9HU19TRVBBUkFUT1I9IlNBU0pTX0xPR1NfU0VQQVJBVE9SXzE2M2VlMTdiNmZmMjRmMDI4OTI4OTcyZDgwYTI2Nzg0In0sMjQwMjooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDUxMDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7''@;'; put 'put ''dmFsdWU6ITB9KSxRLmlzRm9ybWF0c1RhYmxlPVEuY29udmVydFRvQ1NWPXZvaWQgMDt2YXIgbGU9Wig2NDY3KSxZPVooOTc3OCk7US5jb252ZXJ0VG9DU1Y9ZnVuY3Rpb24oTixlZSl7dmFyIHE7aWYoIU5bZWVdKXRocm93KDAsWS5wcmVmaXhNZXNzYWdlKSgiTm8gdGFibGUgcHJvdmlkZWQg''@;'; put 'put ''dG8gYmUgY29udmVydGVkIHRvIENTVi4iLCJFcnJvciB3aGlsZSBjb252ZXJ0aW5nIHRvIENTVi4gIik7dmFyIEo9TltlZV07aWYoIUFycmF5LmlzQXJyYXkoSikpcmV0dXJuIiI7dmFyIHNlLGFlPW51bGw9PT0ocT1OWyIkIi5jb25jYXQoZWUpXSl8fHZvaWQgMD09PXE/dm9pZCAwOnEuZm9y''@;'; put 'put ''bWF0cyxmZT1bXSxkZT0hMTthZSYmKGZlPU9iamVjdC5rZXlzKGFlKS5tYXAoZnVuY3Rpb24oQWUpe3JldHVybiIiLmNvbmNhdChBZSwiOiIpLmNvbmNhdChhZVtBZV0pfSkpO3ZhciB2ZT1PYmplY3Qua2V5cyhKWzBdKTtyZXR1cm4gdmUuZm9yRWFjaChmdW5jdGlvbihBZSl7aWYoIWFlfHwh''@;'; put 'put ''T2JqZWN0LmtleXMoYWUpLmluY2x1ZGVzKEFlKSl7dmFyIGtlPSExLFNlPSExO2lmKEouZm9yRWFjaChmdW5jdGlvbihPKXtudWxsPT09T1tBZV18fCJudW1iZXIiPT10eXBlb2YgT1tBZV0/a2U9ITA6InN0cmluZyI9PXR5cGVvZiBPW0FlXSYmKDAsbGUuaXNTcGVjaWFsTWlzc2luZykoT1tB''@;'; put 'put ''ZV0pJiYoU2U9ITApfSksa2UmJlNlKWZlLnB1c2goIiIuY29uY2F0KEFlLCI6YmVzdC4iKSksYWV8fChhZT17fSksYWVbQWVdPSJiZXN0LiI7ZWxzZXt2YXIgSWU9bnVsbCxUZT0hMSxFZT0tMSxoZT1KLm1hcChmdW5jdGlvbihPLHope2lmKE9bQWVdfHwiIj09PU9bQWVdKXtJZT9UZXx8KEVl''@;'; put 'put ''PShUZT0oIiI9PT1PW0FlXXx8InN0cmluZyI9PXR5cGVvZiBPW0FlXT8iY2hhcnMiOiJudW1iZXIiKSE9PUllKT96KzE6LTEpOkllPSIiPT09T1tBZV18fCJzdHJpbmciPT10eXBlb2YgT1tBZV0/ImNoYXJzIjoibnVtYmVyIjt2YXIgdGU9dm9pZCAwO3JldHVybiJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''T1tBZV0mJih0ZT1XKE9bQWVdKSksdGV9fSkuc29ydChmdW5jdGlvbihPLHope3JldHVybiB6LU99KVswXTtoZSYmaGU+MzI3NjUmJihkZT0hMCksVGUmJmllLmVycm9yKCJSb3cgKCIuY29uY2F0KEVlLCIpLCBDb2x1bW4gKCIpLmNvbmNhdChBZSwiKSBoYXMgbWl4ZWQgdHlwZXM6IEVSUk9S''@;'; put 'put ''IikpLGZlLnB1c2goIiIuY29uY2F0KEFlLCI6IikuY29uY2F0KCJjaGFycyI9PT1JZT8iJGNoYXIiOiIiKS5jb25jYXQoaGV8fCgiY2hhcnMiPT09SWU/IjEiOiJiZXN0IiksIi4iKSl9fX0pLGFlJiYoZmU9ZmUuc29ydChmdW5jdGlvbihBZSxrZSl7cmV0dXJuIHZlLmluZGV4T2YoQWUucmVw''@;'; put 'put ''bGFjZSgvOi4qLywiIikpLXZlLmluZGV4T2Yoa2UucmVwbGFjZSgvOi4qLywiIikpfSkpLGRlPyJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI6KHNlPUoubWFwKGZ1bmN0aW9uKEFlKXtyZXR1cm4gT2JqZWN0LmtleXMoQWUpLm1hcChmdW5jdGlvbihrZSxTZSl7dmFyIEllLFRlPUFlW2tl''@;'; put 'put ''XTtpZigibnVtYmVyIj09dHlwZW9mIFRlKXJldHVybiBUZTtpZihJZT1udWxsPT09VGU/IiI6VGUsYWUmJiJiZXN0LiI9PT1hZVtrZV0pe2lmKEllJiYhKDAsbGUuaXNTcGVjaWFsTWlzc2luZykoSWUpKXRocm93IG5ldyBFcnJvcigiQSBTcGVjaWFsIG1pc3NpbmcgdmFsdWUgY2FuIG9ubHkg''@;'; put 'put ''YmUgYSBzaW5nbGUgY2hhcmFjdGVyIGZyb20gJ0EnIHRvICdaJywgJ18nLCAnLlthLXpdJywgJy5fJyIpO3ZhciBFZT1JZS5pbmNsdWRlcygiLiIpPyIiOiIuIjtyZXR1cm4iIi5jb25jYXQoRWUpLmNvbmNhdChJZS50b0xvd2VyQ2FzZSgpKX1yZXR1cm4gSWU9SWUucmVwbGFjZSgvIi9nLCci''@;'; put 'put ''IicpLChJZT0nIicuY29uY2F0KEllLCciJykpLnN1YnN0cmluZygxLEllLmxlbmd0aC0xKS5zZWFyY2goLyhcdHxcbnxccnwsfFwnfFwiKS9nbSk8MCYmKEllPUllLnN1YnN0cmluZygxLEllLmxlbmd0aC0xKSksIiI9PT0oSWU9SWUucmVwbGFjZSgvXHJcbi9nbSwiXG4iKSkmJmZlW1NlXS5p''@;'; put 'put ''bmNsdWRlcygiYmVzdCIpJiYoSWU9Ii4iKSxJZX0pLmpvaW4oIiwiKX0pLGZlLmpvaW4oIiwiKS5yZXBsYWNlKC8sL2csIiAiKSsiXHJcbiIrc2Uuam9pbigiXHJcbiIpKX0sUS5pc0Zvcm1hdHNUYWJsZT1mdW5jdGlvbihOKXtyZXR1cm4vXlwkLiovLnRlc3QoTil9O3ZhciBXPWZ1bmN0aW9u''@;'; put 'put ''KE4pe2Zvcih2YXIgZWU9Ti5sZW5ndGgscT1OLmxlbmd0aC0xO3E+PTA7cS0tKXt2YXIgSj1OLmNoYXJDb2RlQXQocSk7Sj4xMjcmJko8PTIwNDc/ZWUrKzpKPjIwNDcmJko8PTY1NTM1JiYoZWUrPTIpLEo+PTU2MzIwJiZKPD01NzM0MyYmcS0tfXJldHVybiBlZX19LDYxMTY6KFUsUSxaKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5jcmVhdGVBeGlvc0luc3RhbmNlPXZvaWQgMDt2YXIgaWU9Wig5NjY5KTtRLmNyZWF0ZUF4aW9zSW5zdGFuY2U9ZnVuY3Rpb24obGUsWSl7cmV0dXJuIGllLmRlZmF1bHQuY3Jl''@;'; put 'put ''YXRlKHtiYXNlVVJMOmxlLGh0dHBzQWdlbnQ6WX0pfX0sOTgyNTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5kZWxheT12b2lkIDAsUS5kZWxheT1mdW5jdGlvbihaKXtyZXR1cm4gbmV3IFByb21pc2UoZnVu''@;'; put 'put ''Y3Rpb24oaWUpe3JldHVybiBzZXRUaW1lb3V0KGllLFopfSl9fSw5OTA6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MTU1KSxsZT1aKDUxMDgpLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGVlLHEsSixzZSl7cmV0dXJuIG5ldyhKfHwoSj1Qcm9taXNl''@;'; put 'put ''KSkoZnVuY3Rpb24oYWUsZmUpe2Z1bmN0aW9uIGRlKGtlKXt0cnl7QWUoc2UubmV4dChrZSkpfWNhdGNoKFNlKXtmZShTZSl9fWZ1bmN0aW9uIHZlKGtlKXt0cnl7QWUoc2UudGhyb3coa2UpKX1jYXRjaChTZSl7ZmUoU2UpfX1mdW5jdGlvbiBBZShrZSl7dmFyIFNlO2tlLmRvbmU/YWUoa2Uu''@;'; put 'put ''dmFsdWUpOihTZT1rZS52YWx1ZSxTZSBpbnN0YW5jZW9mIEo/U2U6bmV3IEooZnVuY3Rpb24oSWUpe0llKFNlKX0pKS50aGVuKGRlLHZlKX1BZSgoc2U9c2UuYXBwbHkoZWUscXx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZWUscSl7dmFyIEos''@;'; put 'put ''c2UsYWUsZmUsZGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmYWVbMF0pdGhyb3cgYWVbMV07cmV0dXJuIGFlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGZlPXtuZXh0OnZlKDApLHRocm93OnZlKDEpLHJldHVybjp2ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''KGZlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGZlO2Z1bmN0aW9uIHZlKEFlKXtyZXR1cm4gZnVuY3Rpb24oa2Upe3JldHVybiBmdW5jdGlvbihTZSl7aWYoSil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7''@;'; put 'put ''Zm9yKDtkZTspdHJ5e2lmKEo9MSxzZSYmKGFlPTImU2VbMF0/c2UucmV0dXJuOlNlWzBdP3NlLnRocm93fHwoKGFlPXNlLnJldHVybikmJmFlLmNhbGwoc2UpLDApOnNlLm5leHQpJiYhKGFlPWFlLmNhbGwoc2UsU2VbMV0pKS5kb25lKXJldHVybiBhZTtzd2l0Y2goc2U9MCxhZSYmKFNlPVsy''@;'; put 'put ''JlNlWzBdLGFlLnZhbHVlXSksU2VbMF0pe2Nhc2UgMDpjYXNlIDE6YWU9U2U7YnJlYWs7Y2FzZSA0OnJldHVybiBkZS5sYWJlbCsrLHt2YWx1ZTpTZVsxXSxkb25lOiExfTtjYXNlIDU6ZGUubGFiZWwrKyxzZT1TZVsxXSxTZT1bMF07Y29udGludWU7Y2FzZSA3OlNlPWRlLm9wcy5wb3AoKSxk''@;'; put 'put ''ZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoYWU9KGFlPWRlLnRyeXMpLmxlbmd0aD4wJiZhZVthZS5sZW5ndGgtMV0pfHw2IT09U2VbMF0mJjIhPT1TZVswXSkpe2RlPTA7Y29udGludWV9aWYoMz09PVNlWzBdJiYoIWFlfHxTZVsxXT5hZVswXSYmU2VbMV08YWVbM10pKXtk''@;'; put 'put ''ZS5sYWJlbD1TZVsxXTticmVha31pZig2PT09U2VbMF0mJmRlLmxhYmVsPGFlWzFdKXtkZS5sYWJlbD1hZVsxXSxhZT1TZTticmVha31pZihhZSYmZGUubGFiZWw8YWVbMl0pe2RlLmxhYmVsPWFlWzJdLGRlLm9wcy5wdXNoKFNlKTticmVha31hZVsyXSYmZGUub3BzLnBvcCgpLGRlLnRyeXMu''@;'; put 'put ''cG9wKCk7Y29udGludWV9U2U9cS5jYWxsKGVlLGRlKX1jYXRjaChJZSl7U2U9WzYsSWVdLHNlPTB9ZmluYWxseXtKPWFlPTB9aWYoNSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm57dmFsdWU6U2VbMF0/U2VbMV06dm9pZCAwLGRvbmU6ITB9fShbQWUsa2VdKX19fTtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5mZXRjaExvZz1RLmZldGNoTG9nQnlDaHVua3M9dm9pZCAwO3ZhciBOPVooOTc3OCk7US5mZXRjaExvZ0J5Q2h1bmtzPWZ1bmN0aW9uKGVlLHEsSixzZSl7cmV0dXJuIFkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCxRLmZldGNoTG9nKShlZSxxLEosMCxzZSldO2Nhc2UgMTpyZXR1cm5bMixhZS5zZW50KCldfX0pfSl9LFEuZmV0Y2hMb2c9ZnVuY3Rpb24oZWUscSxKLHNlLGFlKXtyZXR1cm4gWSh2''@;'; put 'put ''b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBmZSxkZSx2ZSxBZSxrZTtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFNlKXtzd2l0Y2goU2UubGFiZWwpe2Nhc2UgMDpmZT1pZS5sb2dnZXJ8fGxlLGRlPSIiLHZlPWFlPDFlND9hZToxZTQsU2UubGFiZWw9MTtjYXNlIDE6cmV0dXJu''@;'; put 'put ''IGZlLmluZm8oIkZldGNoaW5nIGxvZ3MgZnJvbSBsaW5lIG5vOiAiLmNvbmNhdChzZSsxLCIgdG8gIikuY29uY2F0KHNlK3ZlLCIgb2YgIikuY29uY2F0KGFlLCIuIikpLFs0LGVlLmdldCgiIi5jb25jYXQoSiwiP3N0YXJ0PSIpLmNvbmNhdChzZSwiJmxpbWl0PSIpLmNvbmNhdCh2ZSkscSku''@;'; put 'put ''dGhlbihmdW5jdGlvbihJZSl7cmV0dXJuIEllLnJlc3VsdH0pLmNhdGNoKGZ1bmN0aW9uKEllKXt0aHJvdygwLE4ucHJlZml4TWVzc2FnZSkoSWUsIkVycm9yIHdoaWxlIGdldHRpbmcgbG9nLiAiKX0pXTtjYXNlIDI6aWYoMD09PShBZT1TZS5zZW50KCkpLml0ZW1zLmxlbmd0aClyZXR1cm5b''@;'; put 'put ''Myw0XTtrZT1BZS5pdGVtcy5tYXAoZnVuY3Rpb24oSWUpe3JldHVybiBJZS5saW5lfSkuam9pbigiXG4iKSxkZSs9a2Usc2UrPXZlLFNlLmxhYmVsPTM7Y2FzZSAzOmlmKHNlPGFlKXJldHVyblszLDFdO1NlLmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyLGRlXX19KX0pfX0sNzE0OihVLFEsWik9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZm9ybWF0RGF0YUZvclJlcXVlc3Q9dm9pZCAwO3ZhciBpZT1aKDI0MDIpLGxlPVooNDc5OSk7US5mb3JtYXREYXRhRm9yUmVxdWVzdD1mdW5jdGlvbihZKXt2YXIgVz1bXSxO''@;'; put 'put ''PTAsZWU9e307Zm9yKHZhciBxIGluIFkpaWYoISgwLGllLmlzRm9ybWF0c1RhYmxlKShxKXx8IU9iamVjdC5rZXlzKFkpLmluY2x1ZGVzKHEucmVwbGFjZSgvXlwkLywiIikpKXtOKyssKDAsaWUuaXNGb3JtYXRzVGFibGUpKHEpfHxXLnB1c2gocSk7dmFyIEo9KDAsaWUuY29udmVydFRvQ1NW''@;'; put 'put ''KShZLHEpO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT1KKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtpZihKLmxlbmd0aD4xNmUzKXt2YXIgc2U9KDAsbGUuc3BsaXRDaHVu''@;'; put 'put ''a3MpKEopO2VlWyJzYXNqcyIuY29uY2F0KE4sImRhdGEwIildPXNlLmxlbmd0aCxzZS5mb3JFYWNoKGZ1bmN0aW9uKGFlLGZlKXtlZVsic2FzanMiLmNvbmNhdChOLCJkYXRhIikuY29uY2F0KGZlKzEpXT1hZX0pfWVsc2UgZWVbInNhc2pzIi5jb25jYXQoTiwiZGF0YSIpXT1KfXJldHVybiBl''@;'; put 'put ''ZS5zYXNqc190YWJsZXM9Vy5qb2luKCIgIiksZWV9fSwxODg0OihVLFEsWik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZ2V0VmFsaWRKc29uPXZvaWQgMDt2YXIgaWU9WigxMzk1KTtRLmdldFZhbGlkSnNvbj1mdW5j''@;'; put 'put ''dGlvbihsZSl7dHJ5e2lmKG51bGw9PWxlKXRocm93IG5ldyBpZS5JbnZhbGlkSnNvbkVycm9yO2lmKEFycmF5LmlzQXJyYXkobGUpKXRocm93IG5ldyBpZS5Kc29uUGFyc2VBcnJheUVycm9yO3JldHVybiJvYmplY3QiPT10eXBlb2YgbGU/bGU6IiI9PT1sZT97fTpKU09OLnBhcnNlKGxlKX1j''@;'; put 'put ''YXRjaChZKXt0aHJvdyBZIGluc3RhbmNlb2YgaWUuSnNvblBhcnNlQXJyYXlFcnJvcj9ZOm5ldyBpZS5JbnZhbGlkSnNvbkVycm9yfX19LDU5Mjg6ZnVuY3Rpb24oVSxRLFopeyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1''@;'; put 'put ''bmN0aW9uKFksVyxOLGVlKXt2b2lkIDA9PT1lZSYmKGVlPU4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLGVlLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXW05dfX0pfTpmdW5jdGlvbihZLFcsTixlZSl7dm9pZCAwPT09ZWUmJihlZT1OKSxZW2VlXT1XW05dfSksbGU9''@;'; put 'put ''dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKFksVyl7Zm9yKHZhciBOIGluIFkpImRlZmF1bHQiPT09Tnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFcsTil8fGllKFcsWSxOKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLGxlKFooMzMwMiksUSksbGUoWig3OTIyKSxRKSxsZShaKDM3OTMpLFEpLGxlKFooMjQwMiksUSksbGUoWigzNTUzKSxRKSxsZShaKDYxMTYpLFEpLGxlKFooOTgyNSksUSksbGUoWig5OTApLFEpLGxlKFooMTg4NCksUSksbGUoWig0MjQzKSxRKSxsZShaKDI1NyksUSksbGUoWigy''@;'; put 'put ''KSxRKSxsZShaKDI2MTUpLFEpLGxlKFooMjkyMCksUSksbGUoWigyNDIyKSxRKSxsZShaKDMxKSxRKSxsZShaKDY1MTUpLFEpLGxlKFooNjQxNiksUSksbGUoWigyODEzKSxRKSxsZShaKDk4OTYpLFEpLGxlKFooNDc5OSksUSksbGUoWig0NTE2KSxRKX0sNDI0MzooVSxRLFopPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBpZT1aKDQxNTUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzTm9kZT12b2lkIDAsUS5pc05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09aWUmJm51bGwhPWllLnZlcnNpb25zJiZudWxsIT1pZS52ZXJzaW9ucy5u''@;'; put 'put ''b2RlfX0sMjU3OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzUmVsYXRpdmVQYXRoPXZvaWQgMCxRLmlzUmVsYXRpdmVQYXRoPWZ1bmN0aW9uKFope3JldHVybiEhWiYmIVouc3RhcnRzV2l0aCgiLyIpfX0s''@;'; put 'put ''MjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5pc1VyaT12b2lkIDAsUS5pc1VyaT1mdW5jdGlvbihaKXtyZXR1cm4vXlwvZm9sZGVyc1wvZm9sZGVyc1wvLy50ZXN0KFopfX0sMjYxNTooVSxRKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5pc1VybD12b2lkIDAsUS5pc1VybD1mdW5jdGlvbihaKXt0cnl7dmFyIGllPW5ldyBVUkwoWik7aWYoIVsiaHR0cDoiLCJodHRwczoiXS5pbmNsdWRlcyhpZS5wcm90b2NvbCkpcmV0dXJu''@;'; put 'put ''ITF9Y2F0Y2gobGUpe3JldHVybiExfXJldHVybiEwfX0sMTIxMDpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgWixxLGllPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihxLEosc2UsYWUpe3JldHVybiBuZXcoc2V8fChzZT1Qcm9taXNlKSkoZnVuY3Rpb24oZmUsZGUpe2Z1''@;'; put 'put ''bmN0aW9uIHZlKFNlKXt0cnl7a2UoYWUubmV4dChTZSkpfWNhdGNoKEllKXtkZShJZSl9fWZ1bmN0aW9uIEFlKFNlKXt0cnl7a2UoYWUudGhyb3coU2UpKX1jYXRjaChJZSl7ZGUoSWUpfX1mdW5jdGlvbiBrZShTZSl7dmFyIEllO1NlLmRvbmU/ZmUoU2UudmFsdWUpOihJZT1TZS52YWx1ZSxJ''@;'; put 'put ''ZSBpbnN0YW5jZW9mIHNlP0llOm5ldyBzZShmdW5jdGlvbihUZSl7VGUoSWUpfSkpLnRoZW4odmUsQWUpfWtlKChhZT1hZS5hcHBseShxLEp8fFtdKSkubmV4dCgpKX0pfSxsZT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihxLEope3ZhciBzZSxhZSxmZSxkZSx2ZT17bGFiZWw6''@;'; put 'put ''MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZmZVswXSl0aHJvdyBmZVsxXTtyZXR1cm4gZmVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZGU9e25leHQ6QWUoMCksdGhyb3c6QWUoMSkscmV0dXJuOkFlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZGVbU3ltYm9sLml0ZXJhdG9y''@;'; put 'put ''XT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZGU7ZnVuY3Rpb24gQWUoa2Upe3JldHVybiBmdW5jdGlvbihTZSl7cmV0dXJuIGZ1bmN0aW9uKEllKXtpZihzZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt2ZTspdHJ5e2lmKHNl''@;'; put 'put ''PTEsYWUmJihmZT0yJkllWzBdP2FlLnJldHVybjpJZVswXT9hZS50aHJvd3x8KChmZT1hZS5yZXR1cm4pJiZmZS5jYWxsKGFlKSwwKTphZS5uZXh0KSYmIShmZT1mZS5jYWxsKGFlLEllWzFdKSkuZG9uZSlyZXR1cm4gZmU7c3dpdGNoKGFlPTAsZmUmJihJZT1bMiZJZVswXSxmZS52YWx1ZV0p''@;'; put 'put ''LEllWzBdKXtjYXNlIDA6Y2FzZSAxOmZlPUllO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdmUubGFiZWwrKyx7dmFsdWU6SWVbMV0sZG9uZTohMX07Y2FzZSA1OnZlLmxhYmVsKyssYWU9SWVbMV0sSWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpJZT12ZS5vcHMucG9wKCksdmUudHJ5cy5wb3AoKTtjb250''@;'; put 'put ''aW51ZTtkZWZhdWx0OmlmKCEoKGZlPShmZT12ZS50cnlzKS5sZW5ndGg+MCYmZmVbZmUubGVuZ3RoLTFdKXx8NiE9PUllWzBdJiYyIT09SWVbMF0pKXt2ZT0wO2NvbnRpbnVlfWlmKDM9PT1JZVswXSYmKCFmZXx8SWVbMV0+ZmVbMF0mJkllWzFdPGZlWzNdKSl7dmUubGFiZWw9SWVbMV07YnJl''@;'; put 'put ''YWt9aWYoNj09PUllWzBdJiZ2ZS5sYWJlbDxmZVsxXSl7dmUubGFiZWw9ZmVbMV0sZmU9SWU7YnJlYWt9aWYoZmUmJnZlLmxhYmVsPGZlWzJdKXt2ZS5sYWJlbD1mZVsyXSx2ZS5vcHMucHVzaChJZSk7YnJlYWt9ZmVbMl0mJnZlLm9wcy5wb3AoKSx2ZS50cnlzLnBvcCgpO2NvbnRpbnVlfUll''@;'; put 'put ''PUouY2FsbChxLHZlKX1jYXRjaChUZSl7SWU9WzYsVGVdLGFlPTB9ZmluYWxseXtzZT1mZT0wfWlmKDUmSWVbMF0pdGhyb3cgSWVbMV07cmV0dXJue3ZhbHVlOkllWzBdP0llWzFdOnZvaWQgMCxkb25lOiEwfX0oW2tlLFNlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1''@;'; put 'put ''bGUiLHt2YWx1ZTohMH0pLFEub3BlbkxvZ2luUHJvbXB0PXZvaWQgMCwocT1afHwoWj17fSkpLnN0eWxlcz0ic2FzanNBZGFwdGVyU3R5bGVzIixxLm92ZXJsYXk9InNhc2pzQWRhcHRlckxvZ2luUHJvbXB0QkciLHEuZGlhbG9nPSJzYXNqc0FkYXB0ZXJMb2dpblByb21wdCI7dmFyIFk9InNh''@;'; put 'put ''c2pzLWFkYXB0ZXIiLFc9e3BvcFVwOiIiLmNvbmNhdChZLCJwb3BVcCIpLHBvcFVwQkc6IiIuY29uY2F0KFksInBvcFVwQkciKX07US5vcGVuTG9naW5Qcm9tcHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocSl7cmV0dXJuIGllKHZvaWQgMCx2b2lkIDAsdm9pZCAw''@;'; put 'put ''LGZ1bmN0aW9uKCl7dmFyIEosc2UsYWUsZmUsZGUsdmUsQWUsa2U7cmV0dXJuIGxlKHRoaXMsZnVuY3Rpb24oU2Upe3JldHVybihKPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIikpLmlkPVouc3R5bGVzLEouaW5uZXJUZXh0PWVlLChzZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk''@;'; put 'put ''aXYiKSkuaWQ9Wi5vdmVybGF5LHNlLmNsYXNzTGlzdC5hZGQoVy5wb3BVcEJHKSwoYWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlkPVouZGlhbG9nLGFlLmNsYXNzTGlzdC5hZGQoVy5wb3BVcCksKGZlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIikpLmlubmVyVGV4dD0i''@;'; put 'put ''U2Vzc2lvbiBFeHBpcmVkISIsYWUuYXBwZW5kQ2hpbGQoZmUpLGRlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCh2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLmlubmVyVGV4dD0iWW91IG5lZWQgdG8gcmVsb2dpbiwgY2xpY2sgT0sgdG8gbG9naW4uIixkZS5hcHBl''@;'; put 'put ''bmRDaGlsZCh2ZSksYWUuYXBwZW5kQ2hpbGQoZGUpLChBZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKSkuY2xhc3NMaXN0LmFkZCgiY2FuY2VsIiksQWUuaW5uZXJUZXh0PSJDYW5jZWwiLEFlLm9uY2xpY2s9ZnVuY3Rpb24oKXtOKCkscSghMSl9LGFlLmFwcGVuZENoaWxkKEFl''@;'; put 'put ''KSwoa2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikpLmNsYXNzTGlzdC5hZGQoImNvbmZpcm0iKSxrZS5pbm5lclRleHQ9Ik9rIixrZS5vbmNsaWNrPWZ1bmN0aW9uKCl7TigpLHEoITApfSxhZS5hcHBlbmRDaGlsZChrZSksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0i''@;'; put 'put ''aGlkZGVuIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKEopLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2UpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYWUpLFsyXX0pfSl9KX07dmFyIE49ZnVuY3Rpb24oKXtPYmplY3QudmFsdWVzKFopLmZvckVhY2goZnVuY3Rpb24ocSl7dmFy''@;'; put 'put ''IEosc2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocSk7bnVsbD09PShKPW51bGw9PXNlP3ZvaWQgMDpzZS5wYXJlbnROb2RlKXx8dm9pZCAwPT09Snx8Si5yZW1vdmVDaGlsZChzZSl9KSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJhdXRvIn0sZWU9IlxuLiIuY29uY2F0KFcucG9w''@;'; put 'put ''VXBCRywiICxcbi4iKS5jb25jYXQoVy5wb3BVcCwiIHtcbiAgei1pbmRleDogMTAwMDA7XG59XG4uIikuY29uY2F0KFcucG9wVXAsIiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3Jk''@;'; put 'put ''ZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDQwJTtcbiAgbGVmdDogNTAlO1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtZmFtaWx5OiAnUFQgU2FucycsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjZmZmO1xu''@;'; put 'put ''ICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IGF1dG87XG4g''@;'; put 'put ''IG1heC1oZWlnaHQ6IDMwMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiID4gaDEge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNp''@;'; put 'put ''emluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogNXB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEuMmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNw''@;'; put 'put ''YXJlbnQ7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XG4gIGJvcmRlci1jb2xvcjogYmxhY2s7XG59XG4uIikuY29uY2F0KFcucG9wVXAsIiA+IGRpdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtMTA4cHgpO1xuICBtYXJnaW46''@;'; put 'put ''IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogNSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVy''@;'; put 'put ''LXdpZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2NjYztcbiAgYm9yZGVyLXN0eWxlOiBub25lIG5vbmUgc29saWQgbm9uZTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uIikuY29uY2F0KFcucG9wVXAsIiA+IGRpdiA+IHNwYW4ge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBib3gt''@;'; put 'put ''c2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMTA4cHg7XG4gIHZlcnRpY2FsLWFs''@;'; put 'put ''aWduOiBtaWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiIC5jYW5jZWwge1xuICBmbG9hdDogbGVmdDtcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiIC5jb25maXJtIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLiIpLmNvbmNhdChXLnBvcFVwLCIg''@;'; put 'put ''PiBidXR0b24ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxMHB4O1xuICB3aWR0aDogNTAlO1xuICBib3JkZXI6IDFw''@;'; put 'put ''eCBub25lICNjY2M7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMSwgMSwgMSwgMC4yKTtcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiID4gYnV0dG9uOmhvdmVy''@;'; put 'put ''IHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuLiIpLmNvbmNhdChXLnBvcFVwQkcsIiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAg''@;'; put 'put ''bWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvcGFjaXR5OiAwLjk1O1xuICB6LWluZGV4OiA1MDtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KCMwMzc4Y2QsICMwMTIwMzYpO1xufVxuIil9LDI5MjA6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEubmVlZHNSZXRyeT12b2lkIDAsUS5uZWVkc1JldHJ5PWZ1bmN0aW9uKFope3JldHVybiEhWiYmKFouaW5jbHVkZXMoJyJlcnJvckNvZGUiOjQwMycpJiZaLmluY2x1ZGVzKCJfY3NyZiIpJiZaLmluY2x1ZGVzKCJYLUNTUkYtVE9L''@;'; put 'put ''RU4iKXx8Wi5pbmNsdWRlcygnInN0YXR1cyI6NDAzJykmJlouaW5jbHVkZXMoJyJlcnJvciI6IkZvcmJpZGRlbiInKXx8Wi5pbmNsdWRlcygnInN0YXR1cyI6NDQ5JykmJlouaW5jbHVkZXMoIkF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3MsIHJldHJ5IG9yaWdpbmFsIHJlcXVlc3QiKSl9fSwyNDIy''@;'; put 'put ''OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnBhcnNlR2VuZXJhdGVkQ29kZT12b2lkIDAsUS5wYXJzZUdlbmVyYXRlZENvZGU9ZnVuY3Rpb24oWil7cmV0dXJuIFouc3BsaXQoIlxuIikuZmlsdGVyKGZ1bmN0''@;'; put 'put ''aW9uKGllKXtyZXR1cm4gaWUudHJpbSgpLnN0YXJ0c1dpdGgoIk1QUklOVCIpfSkuam9pbigiXHJcbiIpfX0sMzE6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig1MTA4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5wYXJzZVNhc1Zp''@;'; put 'put ''eWFMb2c9dm9pZCAwLFEucGFyc2VTYXNWaXlhTG9nPWZ1bmN0aW9uKGxlKXt2YXIgWTt0cnl7WT1sZS5pdGVtcz9sZS5pdGVtcy5tYXAoZnVuY3Rpb24oVyl7cmV0dXJuIFcubGluZX0pLmpvaW4oIlxuIik6SlNPTi5zdHJpbmdpZnkobGUpfWNhdGNoKFcpe2llLmVycm9yKCJBbiBlcnJvciBo''@;'; put 'put ''YXMgb2NjdXJyZWQgd2hpbGUgcGFyc2luZyB0aGUgbG9nIHJlc3BvbnNlIixXKSxZPWxlfXJldHVybiBZfX0sNjUxNTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5wYXJzZVNvdXJjZUNvZGU9dm9pZCAwLFEu''@;'; put 'put ''cGFyc2VTb3VyY2VDb2RlPWZ1bmN0aW9uKFope3JldHVybiBaLnNwbGl0KCJcbiIpLmZpbHRlcihmdW5jdGlvbihpZSl7cmV0dXJuIGllLnRyaW0oKS5zdWJzdHJpbmcoMCwxMCkudHJpbVN0YXJ0KCkubWF0Y2goL15cZC8pfSkuam9pbigiXHJcbiIpfX0sNjQxNjpmdW5jdGlvbihVLFEsWil7''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBpZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVyxOLGVlLHEpe3JldHVybiBuZXcoZWV8fChlZT1Qcm9taXNlKSkoZnVuY3Rpb24oSixzZSl7ZnVuY3Rpb24gYWUodmUpe3RyeXtkZShxLm5leHQodmUpKX1jYXRjaChBZSl7c2UoQWUpfX1mdW5jdGlv''@;'; put 'put ''biBmZSh2ZSl7dHJ5e2RlKHEudGhyb3codmUpKX1jYXRjaChBZSl7c2UoQWUpfX1mdW5jdGlvbiBkZSh2ZSl7dmFyIEFlO3ZlLmRvbmU/Sih2ZS52YWx1ZSk6KEFlPXZlLnZhbHVlLEFlIGluc3RhbmNlb2YgZWU/QWU6bmV3IGVlKGZ1bmN0aW9uKGtlKXtrZShBZSl9KSkudGhlbihhZSxmZSl9''@;'; put 'put ''ZGUoKHE9cS5hcHBseShXLE58fFtdKSkubmV4dCgpKX0pfSxsZT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihXLE4pe3ZhciBlZSxxLEosc2UsYWU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmSlswXSl0aHJvdyBKWzFdO3JldHVybiBKWzFdfSx0cnlzOltdLG9wczpb''@;'; put 'put ''XX07cmV0dXJuIHNlPXtuZXh0OmZlKDApLHRocm93OmZlKDEpLHJldHVybjpmZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHNlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHNlO2Z1bmN0aW9uIGZlKGRlKXtyZXR1cm4gZnVuY3Rpb24odmUpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihBZSl7aWYoZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YWU7KXRyeXtpZihlZT0xLHEmJihKPTImQWVbMF0/cS5yZXR1cm46QWVbMF0/cS50aHJvd3x8KChKPXEucmV0dXJuKSYmSi5jYWxsKHEpLDAp''@;'; put 'put ''OnEubmV4dCkmJiEoSj1KLmNhbGwocSxBZVsxXSkpLmRvbmUpcmV0dXJuIEo7c3dpdGNoKHE9MCxKJiYoQWU9WzImQWVbMF0sSi52YWx1ZV0pLEFlWzBdKXtjYXNlIDA6Y2FzZSAxOko9QWU7YnJlYWs7Y2FzZSA0OnJldHVybiBhZS5sYWJlbCsrLHt2YWx1ZTpBZVsxXSxkb25lOiExfTtjYXNl''@;'; put 'put ''IDU6YWUubGFiZWwrKyxxPUFlWzFdLEFlPVswXTtjb250aW51ZTtjYXNlIDc6QWU9YWUub3BzLnBvcCgpLGFlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChKPShKPWFlLnRyeXMpLmxlbmd0aD4wJiZKW0oubGVuZ3RoLTFdKXx8NiE9PUFlWzBdJiYyIT09QWVbMF0pKXthZT0w''@;'; put 'put ''O2NvbnRpbnVlfWlmKDM9PT1BZVswXSYmKCFKfHxBZVsxXT5KWzBdJiZBZVsxXTxKWzNdKSl7YWUubGFiZWw9QWVbMV07YnJlYWt9aWYoNj09PUFlWzBdJiZhZS5sYWJlbDxKWzFdKXthZS5sYWJlbD1KWzFdLEo9QWU7YnJlYWt9aWYoSiYmYWUubGFiZWw8SlsyXSl7YWUubGFiZWw9SlsyXSxh''@;'; put 'put ''ZS5vcHMucHVzaChBZSk7YnJlYWt9SlsyXSYmYWUub3BzLnBvcCgpLGFlLnRyeXMucG9wKCk7Y29udGludWV9QWU9Ti5jYWxsKFcsYWUpfWNhdGNoKGtlKXtBZT1bNixrZV0scT0wfWZpbmFsbHl7ZWU9Sj0wfWlmKDUmQWVbMF0pdGhyb3cgQWVbMV07cmV0dXJue3ZhbHVlOkFlWzBdP0FlWzFd''@;'; put 'put ''OnZvaWQgMCxkb25lOiEwfX0oW2RlLHZlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEucGFyc2VTYXNWaXlhRGVidWdSZXNwb25zZT12b2lkIDA7dmFyIFk9Wig1OTI4KTtRLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2U9ZnVuY3Rpb24o''@;'; put 'put ''VyxOLGVlKXtyZXR1cm4gaWUodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcSxKO3JldHVybiBsZSh0aGlzLGZ1bmN0aW9uKHNlKXtpZihxPVcuc3BsaXQoLzxpZnJhbWUgc3R5bGU9IndpZHRoOiA5OSU7IGhlaWdodDogNTAwcHgiIHNyYz0ifDxpZnJhbWUgc3R5bGU9Indp''@;'; put 'put ''ZHRoOiA5OSU7IGhlaWdodDogNTAwcHg7IGJhY2tncm91bmQtY29sb3I6Q2FudmFzOyIgc3JjPS8pWzFdLCEoSj1xP3Euc3BsaXQoLyI+PFwvaWZyYW1lPnw+PFwvaWZyYW1lPi8pWzBdOm51bGwpKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgd2Vib3V0IGZpbGUgVVJMLiIpO3Jl''@;'; put 'put ''dHVyblsyLE4uZ2V0KGVlK0osdm9pZCAwLCJ0ZXh0L3BsYWluIikudGhlbihmdW5jdGlvbihhZSl7cmV0dXJuKDAsWS5nZXRWYWxpZEpzb24pKGFlLnJlc3VsdCl9KV19KX0pfX0sMjgxMzooVSxRLFopPT57InVzZSBzdHJpY3QiO3ZhciBpZT1aKDUxMDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnBhcnNlV2Vib3V0UmVzcG9uc2U9dm9pZCAwO3ZhciBsZT1aKDEzOTUpO1EucGFyc2VXZWJvdXRSZXNwb25zZT1mdW5jdGlvbihZLFcpe3ZhciBOPSIiO2lmKFkuaW5jbHVkZXMoIj4+d2Vib3V0QkVHSU48PCIpKXRyeXtOPVkuc3BsaXQo''@;'; put 'put ''Ij4+d2Vib3V0QkVHSU48PCIpWzFdLnNwbGl0KCI+PndlYm91dEVORDw8IilbMF19Y2F0Y2goZWUpe2lmKFcpdGhyb3cgbmV3IGxlLldlYm91dFJlc3BvbnNlRXJyb3IoVyk7Tj0iIixpZS5lcnJvcihlZSl9cmV0dXJuIE59fSw5ODk2OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnNlcmlhbGl6ZT12b2lkIDAsUS5zZXJpYWxpemU9ZnVuY3Rpb24oWil7dmFyIGllPVtdO2Zvcih2YXIgbGUgaW4gWilpZihaLmhhc093blByb3BlcnR5KGxlKSlpZihaW2xlXWluc3RhbmNlb2YgQXJyYXkpZm9yKHZhciBZ''@;'; put 'put ''PTAsVz1aW2xlXS5sZW5ndGg7WTxXO1krKylpZS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChsZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChaW2xlXVtZXSkpO2Vsc2UgaWUucHVzaChlbmNvZGVVUklDb21wb25lbnQobGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQoWltsZV0pKTtyZXR1cm4g''@;'; put 'put ''aWUuam9pbigiJiIpfX0sNDc5OTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5zcGxpdENodW5rcz12b2lkIDAsUS5zcGxpdENodW5rcz1mdW5jdGlvbihaKXtmb3IodmFyIGxlPU1hdGguY2VpbChaLmxlbmd0''@;'; put 'put ''aC8xNmUzKSxZPW5ldyBBcnJheShsZSksVz0wLE49MDtXPGxlOysrVyxOKz0xNmUzKVlbV109Wi5zdWJzdHIoTiwxNmUzKTtyZXR1cm4gWX19LDQ1MTY6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEudmFsaWRh''@;'; put 'put ''dGVJbnB1dD1RLklOVkFMSURfVEFCTEVfU1RSVUNUVVJFPVEuTU9SRV9JTkZPPXZvaWQgMCxRLk1PUkVfSU5GTz0iRm9yIG1vcmUgaW5mbyBzZWUgaHR0cHM6Ly9zYXNqcy5pby9zYXNqcy1hZGFwdGVyLyNyZXF1ZXN0LXJlc3BvbnNlIixRLklOVkFMSURfVEFCTEVfU1RSVUNUVVJFPSJQYXJh''@;'; put 'put ''bWV0ZXIgZGF0YSBjb250YWlucyBpbnZhbGlkIHRhYmxlIHN0cnVjdHVyZS4gIi5jb25jYXQoUS5NT1JFX0lORk8pLFEudmFsaWRhdGVJbnB1dD1mdW5jdGlvbihpZSl7aWYobnVsbD09PWllKXJldHVybntzdGF0dXM6ITAsbXNnOiIifTtpZigib2JqZWN0IiE9PVooaWUpKXJldHVybntzdGF0''@;'; put 'put ''dXM6ITEsbXNnOlEuSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkV9O3ZhciBsZT1mdW5jdGlvbihhZSl7cmV0dXJuIGFlLm1hdGNoKC9eXCQuKi8pJiZPYmplY3Qua2V5cyhpZSkuaW5jbHVkZXMoYWUucmVwbGFjZSgvXlwkLywiIikpfTtmb3IodmFyIFkgaW4gaWUpe2lmKCFZLm1hdGNoKC9eW2Et''@;'; put 'put ''ekEtWl9dLykmJiFsZShZKSlyZXR1cm57c3RhdHVzOiExLG1zZzoiRmlyc3QgbGV0dGVyIG9mIHRhYmxlIHNob3VsZCBiZSBhbHBoYWJldCBvciB1bmRlcnNjb3JlLiJ9O2lmKCFZLm1hdGNoKC9eW2EtekEtWl9dW2EtekEtWjAtOV9dKiQvKSYmIWxlKFkpKXJldHVybntzdGF0dXM6ITEsbXNn''@;'; put 'put ''OiJUYWJsZSBuYW1lIHNob3VsZCBiZSBhbHBoYW51bWVyaWMuIn07aWYoWS5sZW5ndGg+MzIpcmV0dXJue3N0YXR1czohMSxtc2c6Ik1heGltdW0gbGVuZ3RoIGZvciB0YWJsZSBuYW1lIGNvdWxkIGJlIDMyIGNoYXJhY3RlcnMuIn07aWYoIkFycmF5IiE9PVooaWVbWV0pJiYhbGUoWSkpcmV0''@;'; put 'put ''dXJue3N0YXR1czohMSxtc2c6US5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRX07Zm9yKHZhciBXPTAsTj1pZVtZXTtXPE4ubGVuZ3RoO1crKyl7dmFyIGVlPU5bV107aWYoIm9iamVjdCIhPT1aKGVlKSlyZXR1cm57c3RhdHVzOiExLG1zZzoiVGFibGUgIi5jb25jYXQoWSwiIGNvbnRhaW5zIGlu''@;'; put 'put ''dmFsaWQgc3RydWN0dXJlLiAiKS5jb25jYXQoUS5NT1JFX0lORk8pfTtmb3IodmFyIHE9MCxKPU9iamVjdC5rZXlzKGVlKTtxPEoubGVuZ3RoO3ErKyl7dmFyIHNlPUpbcV07aWYodm9pZCAwPT09ZWVbc2VdKXJldHVybntzdGF0dXM6ITEsbXNnOiJBIHJvdyBpbiB0YWJsZSAiLmNvbmNhdChZ''@;'; put 'put ''LCIgY29udGFpbnMgaW52YWxpZCB2YWx1ZS4gQ2FuJ3QgYXNzaWduIHVuZGVmaW5lZCB0byAiKS5jb25jYXQoc2UsIi4iKX19fX1yZXR1cm57c3RhdHVzOiEwLG1zZzoiIn19O3ZhciBaPWZ1bmN0aW9uKGllKXtyZXR1cm4gQXJyYXkuaXNBcnJheShpZSk/IkFycmF5Ijp0eXBlb2YgaWV9fSw4''@;'; put 'put ''OTgxOihVLFEpPT57InVzZSBzdHJpY3QiO1EuZnJvbUNhbGxiYWNrPWZ1bmN0aW9uKFope3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oLi4uaWUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBpZVtpZS5sZW5ndGgtMV0pcmV0dXJuIG5ldyBQcm9taXNlKChsZSxZKT0+e1ou''@;'; put 'put ''Y2FsbCh0aGlzLC4uLmllLChXLE4pPT5udWxsIT1XP1koVyk6bGUoTikpfSk7Wi5hcHBseSh0aGlzLGllKX0sIm5hbWUiLHt2YWx1ZTpaLm5hbWV9KX0sUS5mcm9tUHJvbWlzZT1mdW5jdGlvbihaKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLmllKXtjb25zdCBs''@;'; put 'put ''ZT1pZVtpZS5sZW5ndGgtMV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGxlKXJldHVybiBaLmFwcGx5KHRoaXMsaWUpO1ouYXBwbHkodGhpcyxpZS5zbGljZSgwLC0xKSkudGhlbihZPT5sZShudWxsLFkpLGxlKX0sIm5hbWUiLHt2YWx1ZTpaLm5hbWV9KX19LDI1MTE6ZnVuY3Rpb24oVSxRLFop''@;'; put 'put ''e3ZhciBpZTtVPVoubm1kKFUpLGZ1bmN0aW9uKGxlKXt2YXIgVyxOPTIxNDc0ODM2NDcscT0vXnhuLS0vLEo9L1teXHgyMC1ceDdFXS8sc2U9L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9nLGFlPXtvdmVyZmxvdzoiT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHBy''@;'; put 'put ''b2Nlc3MiLCJub3QtYmFzaWMiOiJJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpIiwiaW52YWxpZC1pbnB1dCI6IkludmFsaWQgaW5wdXQifSxmZT1NYXRoLmZsb29yLGRlPVN0cmluZy5mcm9tQ2hhckNvZGU7ZnVuY3Rpb24gdmUoeil7dGhyb3cgUmFuZ2VF''@;'; put 'put ''cnJvcihhZVt6XSl9ZnVuY3Rpb24gQWUoeixuZSl7Zm9yKHZhciB0ZT16Lmxlbmd0aCx4PVtdO3RlLS07KXhbdGVdPW5lKHpbdGVdKTtyZXR1cm4geH1mdW5jdGlvbiBrZSh6LG5lKXt2YXIgdGU9ei5zcGxpdCgiQCIpLHg9IiI7cmV0dXJuIHRlLmxlbmd0aD4xJiYoeD10ZVswXSsiQCIsej10''@;'; put 'put ''ZVsxXSkseCtBZSgoej16LnJlcGxhY2Uoc2UsIi4iKSkuc3BsaXQoIi4iKSxuZSkuam9pbigiLiIpfWZ1bmN0aW9uIFNlKHope2Zvcih2YXIgbmUsdGUseD1bXSxQPTAsVj16Lmxlbmd0aDtQPFY7KShuZT16LmNoYXJDb2RlQXQoUCsrKSk+PTU1Mjk2JiZuZTw9NTYzMTkmJlA8Vj81NjMyMD09''@;'; put 'put ''KDY0NTEyJih0ZT16LmNoYXJDb2RlQXQoUCsrKSkpP3gucHVzaCgoKDEwMjMmbmUpPDwxMCkrKDEwMjMmdGUpKzY1NTM2KTooeC5wdXNoKG5lKSxQLS0pOngucHVzaChuZSk7cmV0dXJuIHh9ZnVuY3Rpb24gSWUoeil7cmV0dXJuIEFlKHosZnVuY3Rpb24obmUpe3ZhciB0ZT0iIjtyZXR1cm4g''@;'; put 'put ''bmU+NjU1MzUmJih0ZSs9ZGUoKG5lLT02NTUzNik+Pj4xMCYxMDIzfDU1Mjk2KSxuZT01NjMyMHwxMDIzJm5lKSx0ZStkZShuZSl9KS5qb2luKCIiKX1mdW5jdGlvbiBUZSh6LG5lKXtyZXR1cm4geisyMis3NSooejwyNiktKCgwIT1uZSk8PDUpfWZ1bmN0aW9uIEVlKHosbmUsdGUpe3ZhciB4''@;'; put 'put ''PTA7Zm9yKHo9dGU/ZmUoei83MDApOno+PjEseis9ZmUoei9uZSk7ej40NTU7eCs9MzYpej1mZSh6LzM1KTtyZXR1cm4gZmUoeCszNip6Lyh6KzM4KSl9ZnVuY3Rpb24gaGUoeil7dmFyIG5lLHRlLHgsUCxWLFQsUyxGLHllLENlLERlLFBlPVtdLFFlPXoubGVuZ3RoLCRlPTAsZ3Q9MTI4LHl0''@;'; put 'put ''PTcyO2ZvcigodGU9ei5sYXN0SW5kZXhPZigiLSIpKTwwJiYodGU9MCkseD0wO3g8dGU7Kyt4KXouY2hhckNvZGVBdCh4KT49MTI4JiZ2ZSgibm90LWJhc2ljIiksUGUucHVzaCh6LmNoYXJDb2RlQXQoeCkpO2ZvcihQPXRlPjA/dGUrMTowO1A8UWU7KXtmb3IoVj0kZSxUPTEsUz0zNjtQPj1R''@;'; put 'put ''ZSYmdmUoImludmFsaWQtaW5wdXQiKSwoKEY9KERlPXouY2hhckNvZGVBdChQKyspKS00ODwxMD9EZS0yMjpEZS02NTwyNj9EZS02NTpEZS05NzwyNj9EZS05NzozNik+PTM2fHxGPmZlKChOLSRlKS9UKSkmJnZlKCJvdmVyZmxvdyIpLCRlKz1GKlQsIShGPCh5ZT1TPD15dD8xOlM+PXl0KzI2''@;'; put 'put ''PzI2OlMteXQpKTtTKz0zNilUPmZlKE4vKENlPTM2LXllKSkmJnZlKCJvdmVyZmxvdyIpLFQqPUNlO3l0PUVlKCRlLVYsbmU9UGUubGVuZ3RoKzEsMD09ViksZmUoJGUvbmUpPk4tZ3QmJnZlKCJvdmVyZmxvdyIpLGd0Kz1mZSgkZS9uZSksJGUlPW5lLFBlLnNwbGljZSgkZSsrLDAsZ3QpfXJl''@;'; put 'put ''dHVybiBJZShQZSl9ZnVuY3Rpb24gTyh6KXt2YXIgbmUsdGUseCxQLFYsVCxTLEYseWUsQ2UsRGUsUGUsUWUsJGUsZ3QseXQ9W107Zm9yKFBlPSh6PVNlKHopKS5sZW5ndGgsbmU9MTI4LHRlPTAsVj03MixUPTA7VDxQZTsrK1QpKERlPXpbVF0pPDEyOCYmeXQucHVzaChkZShEZSkpO2Zvcih4''@;'; put 'put ''PVA9eXQubGVuZ3RoLFAmJnl0LnB1c2goIi0iKTt4PFBlOyl7Zm9yKFM9TixUPTA7VDxQZTsrK1QpKERlPXpbVF0pPj1uZSYmRGU8UyYmKFM9RGUpO2ZvcihTLW5lPmZlKChOLXRlKS8oUWU9eCsxKSkmJnZlKCJvdmVyZmxvdyIpLHRlKz0oUy1uZSkqUWUsbmU9UyxUPTA7VDxQZTsrK1QpaWYo''@;'; put 'put ''KERlPXpbVF0pPG5lJiYrK3RlPk4mJnZlKCJvdmVyZmxvdyIpLERlPT1uZSl7Zm9yKEY9dGUseWU9MzY7IShGPChDZT15ZTw9Vj8xOnllPj1WKzI2PzI2OnllLVYpKTt5ZSs9MzYpeXQucHVzaChkZShUZShDZSsoZ3Q9Ri1DZSklKCRlPTM2LUNlKSwwKSkpLEY9ZmUoZ3QvJGUpO3l0LnB1c2go''@;'; put 'put ''ZGUoVGUoRiwwKSkpLFY9RWUodGUsUWUseD09UCksdGU9MCwrK3h9Kyt0ZSwrK25lfXJldHVybiB5dC5qb2luKCIiKX1XPXt2ZXJzaW9uOiIxLjMuMiIsdWNzMjp7ZGVjb2RlOlNlLGVuY29kZTpJZX0sZGVjb2RlOmhlLGVuY29kZTpPLHRvQVNDSUk6ZnVuY3Rpb24oeil7cmV0dXJuIGtlKHos''@;'; put 'put ''ZnVuY3Rpb24obmUpe3JldHVybiBKLnRlc3QobmUpPyJ4bi0tIitPKG5lKTpuZX0pfSx0b1VuaWNvZGU6ZnVuY3Rpb24oeil7cmV0dXJuIGtlKHosZnVuY3Rpb24obmUpe3JldHVybiBxLnRlc3QobmUpP2hlKG5lLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpOm5lfSl9fSx2b2lkIDA9PT0oaWU9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gV30uY2FsbChRLFosUSxVKSl8fChVLmV4cG9ydHM9aWUpfSgpfSw4NTc1OihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVooMjUxMSksbGU9WigyNTAyKTtmdW5jdGlvbiBZKCl7dGhpcy5wcm90b2NvbD1udWxsLHRoaXMuc2xhc2hlcz1udWxsLHRoaXMu''@;'; put 'put ''YXV0aD1udWxsLHRoaXMuaG9zdD1udWxsLHRoaXMucG9ydD1udWxsLHRoaXMuaG9zdG5hbWU9bnVsbCx0aGlzLmhhc2g9bnVsbCx0aGlzLnNlYXJjaD1udWxsLHRoaXMucXVlcnk9bnVsbCx0aGlzLnBhdGhuYW1lPW51bGwsdGhpcy5wYXRoPW51bGwsdGhpcy5ocmVmPW51bGx9US5RYz1JZTt2''@;'; put 'put ''YXIgVz0vXihbYS16MC05ListXSs6KS9pLE49LzpbMC05XSokLyxlZT0vXihcL1wvPyg/IVwvKVteXD9cc10qKShcP1teXHNdKik/JC8scT1bInsiLCJ9IiwifCIsIlxcIiwiXiIsImAiXS5jb25jYXQoWyI8IiwiPiIsJyInLCJgIiwiICIsIlxyIiwiXG4iLCJcdCJdKSxKPVsiJyJdLmNvbmNh''@;'; put 'put ''dChxKSxzZT1bIiUiLCIvIiwiPyIsIjsiLCIjIl0uY29uY2F0KEopLGFlPVsiLyIsIj8iLCIjIl0sZmU9L15bK2EtejAtOUEtWl8tXXswLDYzfSQvLGRlPS9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkLyx2ZT17amF2YXNjcmlwdDohMCwiamF2YXNjcmlwdDoiOiEwfSxBZT17amF2YXNj''@;'; put 'put ''cmlwdDohMCwiamF2YXNjcmlwdDoiOiEwfSxrZT17aHR0cDohMCxodHRwczohMCxmdHA6ITAsZ29waGVyOiEwLGZpbGU6ITAsImh0dHA6IjohMCwiaHR0cHM6IjohMCwiZnRwOiI6ITAsImdvcGhlcjoiOiEwLCJmaWxlOiI6ITB9LFNlPVooNzY3Myk7ZnVuY3Rpb24gSWUoVGUsRWUsaGUpe2lm''@;'; put 'put ''KFRlJiZsZS5pc09iamVjdChUZSkmJlRlIGluc3RhbmNlb2YgWSlyZXR1cm4gVGU7dmFyIE89bmV3IFk7cmV0dXJuIE8ucGFyc2UoVGUsRWUsaGUpLE99WS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oVGUsRWUsaGUpe2lmKCFsZS5pc1N0cmluZyhUZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''UGFyYW1ldGVyICd1cmwnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAiK3R5cGVvZiBUZSk7dmFyIE89VGUuaW5kZXhPZigiPyIpLHo9LTEhPT1PJiZPPFRlLmluZGV4T2YoIiMiKT8iPyI6IiMiLG5lPVRlLnNwbGl0KHopO25lWzBdPW5lWzBdLnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgdGU9VGU9''@;'; put 'put ''bmUuam9pbih6KTtpZih0ZT10ZS50cmltKCksIWhlJiYxPT09VGUuc3BsaXQoIiMiKS5sZW5ndGgpe3ZhciB4PWVlLmV4ZWModGUpO2lmKHgpcmV0dXJuIHRoaXMucGF0aD10ZSx0aGlzLmhyZWY9dGUsdGhpcy5wYXRobmFtZT14WzFdLHhbMl0/KHRoaXMuc2VhcmNoPXhbMl0sdGhpcy5xdWVy''@;'; put 'put ''eT1FZT9TZS5wYXJzZSh0aGlzLnNlYXJjaC5zdWJzdHIoMSkpOnRoaXMuc2VhcmNoLnN1YnN0cigxKSk6RWUmJih0aGlzLnNlYXJjaD0iIix0aGlzLnF1ZXJ5PXt9KSx0aGlzfXZhciBQPVcuZXhlYyh0ZSk7aWYoUCl7dmFyIFY9KFA9UFswXSkudG9Mb3dlckNhc2UoKTt0aGlzLnByb3RvY29s''@;'; put 'put ''PVYsdGU9dGUuc3Vic3RyKFAubGVuZ3RoKX1pZihoZXx8UHx8dGUubWF0Y2goL15cL1wvW15AXC9dK0BbXkBcL10rLykpe3ZhciBUPSIvLyI9PT10ZS5zdWJzdHIoMCwyKTshVHx8UCYmQWVbUF18fCh0ZT10ZS5zdWJzdHIoMiksdGhpcy5zbGFzaGVzPSEwKX1pZighQWVbUF0mJihUfHxQJiYh''@;'; put 'put ''a2VbUF0pKXtmb3IodmFyIFMsRix5ZT0tMSxDZT0wO0NlPGFlLmxlbmd0aDtDZSsrKS0xIT09KERlPXRlLmluZGV4T2YoYWVbQ2VdKSkmJigtMT09PXllfHxEZTx5ZSkmJih5ZT1EZSk7Zm9yKC0xIT09KEY9LTE9PT15ZT90ZS5sYXN0SW5kZXhPZigiQCIpOnRlLmxhc3RJbmRleE9mKCJAIix5''@;'; put 'put ''ZSkpJiYoUz10ZS5zbGljZSgwLEYpLHRlPXRlLnNsaWNlKEYrMSksdGhpcy5hdXRoPWRlY29kZVVSSUNvbXBvbmVudChTKSkseWU9LTEsQ2U9MDtDZTxzZS5sZW5ndGg7Q2UrKyl7dmFyIERlOy0xIT09KERlPXRlLmluZGV4T2Yoc2VbQ2VdKSkmJigtMT09PXllfHxEZTx5ZSkmJih5ZT1EZSl9''@;'; put 'put ''LTE9PT15ZSYmKHllPXRlLmxlbmd0aCksdGhpcy5ob3N0PXRlLnNsaWNlKDAseWUpLHRlPXRlLnNsaWNlKHllKSx0aGlzLnBhcnNlSG9zdCgpLHRoaXMuaG9zdG5hbWU9dGhpcy5ob3N0bmFtZXx8IiI7dmFyIFBlPSJbIj09PXRoaXMuaG9zdG5hbWVbMF0mJiJdIj09PXRoaXMuaG9zdG5hbWVb''@;'; put 'put ''dGhpcy5ob3N0bmFtZS5sZW5ndGgtMV07aWYoIVBlKWZvcih2YXIgUWU9dGhpcy5ob3N0bmFtZS5zcGxpdCgvXC4vKSwkZT0oQ2U9MCxRZS5sZW5ndGgpO0NlPCRlO0NlKyspe3ZhciBndD1RZVtDZV07aWYoZ3QmJiFndC5tYXRjaChmZSkpe2Zvcih2YXIgeXQ9IiIscHQ9MCxtdD1ndC5sZW5n''@;'; put 'put ''dGg7cHQ8bXQ7cHQrKylndC5jaGFyQ29kZUF0KHB0KT4xMjc/eXQrPSJ4Ijp5dCs9Z3RbcHRdO2lmKCF5dC5tYXRjaChmZSkpe3ZhciB2dD1RZS5zbGljZSgwLENlKSxmdD1RZS5zbGljZShDZSsxKSxGdD1ndC5tYXRjaChkZSk7RnQmJih2dC5wdXNoKEZ0WzFdKSxmdC51bnNoaWZ0KEZ0WzJd''@;'; put 'put ''KSksZnQubGVuZ3RoJiYodGU9Ii8iK2Z0LmpvaW4oIi4iKSt0ZSksdGhpcy5ob3N0bmFtZT12dC5qb2luKCIuIik7YnJlYWt9fX10aGlzLmhvc3RuYW1lPXRoaXMuaG9zdG5hbWUubGVuZ3RoPjI1NT8iIjp0aGlzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCksUGV8fCh0aGlzLmhvc3RuYW1lPWll''@;'; put 'put ''LnRvQVNDSUkodGhpcy5ob3N0bmFtZSkpO3ZhciBvbj10aGlzLnBvcnQ/IjoiK3RoaXMucG9ydDoiIjt0aGlzLmhvc3Q9KHRoaXMuaG9zdG5hbWV8fCIiKStvbix0aGlzLmhyZWYrPXRoaXMuaG9zdCxQZSYmKHRoaXMuaG9zdG5hbWU9dGhpcy5ob3N0bmFtZS5zdWJzdHIoMSx0aGlzLmhvc3Ru''@;'; put 'put ''YW1lLmxlbmd0aC0yKSwiLyIhPT10ZVswXSYmKHRlPSIvIit0ZSkpfWlmKCF2ZVtWXSlmb3IoQ2U9MCwkZT1KLmxlbmd0aDtDZTwkZTtDZSsrKXt2YXIgbnQ9SltDZV07aWYoLTEhPT10ZS5pbmRleE9mKG50KSl7dmFyIHFlPWVuY29kZVVSSUNvbXBvbmVudChudCk7cWU9PT1udCYmKHFlPWVz''@;'; put 'put ''Y2FwZShudCkpLHRlPXRlLnNwbGl0KG50KS5qb2luKHFlKX19dmFyIG90PXRlLmluZGV4T2YoIiMiKTstMSE9PW90JiYodGhpcy5oYXNoPXRlLnN1YnN0cihvdCksdGU9dGUuc2xpY2UoMCxvdCkpO3ZhciBSdD10ZS5pbmRleE9mKCI/Iik7cmV0dXJuLTEhPT1SdD8odGhpcy5zZWFyY2g9dGUu''@;'; put 'put ''c3Vic3RyKFJ0KSx0aGlzLnF1ZXJ5PXRlLnN1YnN0cihSdCsxKSxFZSYmKHRoaXMucXVlcnk9U2UucGFyc2UodGhpcy5xdWVyeSkpLHRlPXRlLnNsaWNlKDAsUnQpKTpFZSYmKHRoaXMuc2VhcmNoPSIiLHRoaXMucXVlcnk9e30pLHRlJiYodGhpcy5wYXRobmFtZT10ZSksa2VbVl0mJnRoaXMu''@;'; put 'put ''aG9zdG5hbWUmJiF0aGlzLnBhdGhuYW1lJiYodGhpcy5wYXRobmFtZT0iLyIpLCh0aGlzLnBhdGhuYW1lfHx0aGlzLnNlYXJjaCkmJih0aGlzLnBhdGg9KG9uPXRoaXMucGF0aG5hbWV8fCIiKSsodGhpcy5zZWFyY2h8fCIiKSksdGhpcy5ocmVmPXRoaXMuZm9ybWF0KCksdGhpc30sWS5wcm90''@;'; put 'put ''b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKCl7dmFyIFRlPXRoaXMuYXV0aHx8IiI7VGUmJihUZT0oVGU9ZW5jb2RlVVJJQ29tcG9uZW50KFRlKSkucmVwbGFjZSgvJTNBL2ksIjoiKSxUZSs9IkAiKTt2YXIgRWU9dGhpcy5wcm90b2NvbHx8IiIsaGU9dGhpcy5wYXRobmFtZXx8IiIsTz10aGlzLmhh''@;'; put 'put ''c2h8fCIiLHo9ITEsbmU9IiI7dGhpcy5ob3N0P3o9VGUrdGhpcy5ob3N0OnRoaXMuaG9zdG5hbWUmJih6PVRlKygtMT09PXRoaXMuaG9zdG5hbWUuaW5kZXhPZigiOiIpP3RoaXMuaG9zdG5hbWU6IlsiK3RoaXMuaG9zdG5hbWUrIl0iKSx0aGlzLnBvcnQmJih6Kz0iOiIrdGhpcy5wb3J0KSks''@;'; put 'put ''dGhpcy5xdWVyeSYmbGUuaXNPYmplY3QodGhpcy5xdWVyeSkmJk9iamVjdC5rZXlzKHRoaXMucXVlcnkpLmxlbmd0aCYmKG5lPVNlLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5KSk7dmFyIHRlPXRoaXMuc2VhcmNofHxuZSYmIj8iK25lfHwiIjtyZXR1cm4gRWUmJiI6IiE9PUVlLnN1YnN0cigtMSkm''@;'; put 'put ''JihFZSs9IjoiKSx0aGlzLnNsYXNoZXN8fCghRWV8fGtlW0VlXSkmJiExIT09ej8oej0iLy8iKyh6fHwiIiksaGUmJiIvIiE9PWhlLmNoYXJBdCgwKSYmKGhlPSIvIitoZSkpOnp8fCh6PSIiKSxPJiYiIyIhPT1PLmNoYXJBdCgwKSYmKE89IiMiK08pLHRlJiYiPyIhPT10ZS5jaGFyQXQoMCkm''@;'; put 'put ''Jih0ZT0iPyIrdGUpLEVlK3orKGhlPWhlLnJlcGxhY2UoL1s/I10vZyxmdW5jdGlvbih4KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHgpfSkpKyh0ZT10ZS5yZXBsYWNlKCIjIiwiJTIzIikpK099LFkucHJvdG90eXBlLnJlc29sdmU9ZnVuY3Rpb24oVGUpe3JldHVybiB0aGlzLnJlc29s''@;'; put 'put ''dmVPYmplY3QoSWUoVGUsITEsITApKS5mb3JtYXQoKX0sWS5wcm90b3R5cGUucmVzb2x2ZU9iamVjdD1mdW5jdGlvbihUZSl7aWYobGUuaXNTdHJpbmcoVGUpKXt2YXIgRWU9bmV3IFk7RWUucGFyc2UoVGUsITEsITApLFRlPUVlfWZvcih2YXIgaGU9bmV3IFksTz1PYmplY3Qua2V5cyh0aGlz''@;'; put 'put ''KSx6PTA7ejxPLmxlbmd0aDt6Kyspe3ZhciBuZT1PW3pdO2hlW25lXT10aGlzW25lXX1pZihoZS5oYXNoPVRlLmhhc2gsIiI9PT1UZS5ocmVmKXJldHVybiBoZS5ocmVmPWhlLmZvcm1hdCgpLGhlO2lmKFRlLnNsYXNoZXMmJiFUZS5wcm90b2NvbCl7Zm9yKHZhciB0ZT1PYmplY3Qua2V5cyhU''@;'; put 'put ''ZSkseD0wO3g8dGUubGVuZ3RoO3grKyl7dmFyIFA9dGVbeF07InByb3RvY29sIiE9PVAmJihoZVtQXT1UZVtQXSl9cmV0dXJuIGtlW2hlLnByb3RvY29sXSYmaGUuaG9zdG5hbWUmJiFoZS5wYXRobmFtZSYmKGhlLnBhdGg9aGUucGF0aG5hbWU9Ii8iKSxoZS5ocmVmPWhlLmZvcm1hdCgpLGhl''@;'; put 'put ''fWlmKFRlLnByb3RvY29sJiZUZS5wcm90b2NvbCE9PWhlLnByb3RvY29sKXtpZigha2VbVGUucHJvdG9jb2xdKXtmb3IodmFyIFY9T2JqZWN0LmtleXMoVGUpLFQ9MDtUPFYubGVuZ3RoO1QrKyl7dmFyIFM9VltUXTtoZVtTXT1UZVtTXX1yZXR1cm4gaGUuaHJlZj1oZS5mb3JtYXQoKSxoZX1p''@;'; put 'put ''ZihoZS5wcm90b2NvbD1UZS5wcm90b2NvbCxUZS5ob3N0fHxBZVtUZS5wcm90b2NvbF0paGUucGF0aG5hbWU9VGUucGF0aG5hbWU7ZWxzZXtmb3IodmFyIEY9KFRlLnBhdGhuYW1lfHwiIikuc3BsaXQoIi8iKTtGLmxlbmd0aCYmIShUZS5ob3N0PUYuc2hpZnQoKSk7KTtUZS5ob3N0fHwoVGUu''@;'; put 'put ''aG9zdD0iIiksVGUuaG9zdG5hbWV8fChUZS5ob3N0bmFtZT0iIiksIiIhPT1GWzBdJiZGLnVuc2hpZnQoIiIpLEYubGVuZ3RoPDImJkYudW5zaGlmdCgiIiksaGUucGF0aG5hbWU9Ri5qb2luKCIvIil9cmV0dXJuIGhlLnNlYXJjaD1UZS5zZWFyY2gsaGUucXVlcnk9VGUucXVlcnksaGUuaG9z''@;'; put 'put ''dD1UZS5ob3N0fHwiIixoZS5hdXRoPVRlLmF1dGgsaGUuaG9zdG5hbWU9VGUuaG9zdG5hbWV8fFRlLmhvc3QsaGUucG9ydD1UZS5wb3J0LChoZS5wYXRobmFtZXx8aGUuc2VhcmNoKSYmKGhlLnBhdGg9KGhlLnBhdGhuYW1lfHwiIikrKGhlLnNlYXJjaHx8IiIpKSxoZS5zbGFzaGVzPWhlLnNs''@;'; put 'put ''YXNoZXN8fFRlLnNsYXNoZXMsaGUuaHJlZj1oZS5mb3JtYXQoKSxoZX12YXIgRGU9aGUucGF0aG5hbWUmJiIvIj09PWhlLnBhdGhuYW1lLmNoYXJBdCgwKSxQZT1UZS5ob3N0fHxUZS5wYXRobmFtZSYmIi8iPT09VGUucGF0aG5hbWUuY2hhckF0KDApLFFlPVBlfHxEZXx8aGUuaG9zdCYmVGUu''@;'; put 'put ''cGF0aG5hbWUsJGU9UWUsZ3Q9aGUucGF0aG5hbWUmJmhlLnBhdGhuYW1lLnNwbGl0KCIvIil8fFtdLHl0PShGPVRlLnBhdGhuYW1lJiZUZS5wYXRobmFtZS5zcGxpdCgiLyIpfHxbXSxoZS5wcm90b2NvbCYmIWtlW2hlLnByb3RvY29sXSk7aWYoeXQmJihoZS5ob3N0bmFtZT0iIixoZS5wb3J0''@;'; put 'put ''PW51bGwsaGUuaG9zdCYmKCIiPT09Z3RbMF0/Z3RbMF09aGUuaG9zdDpndC51bnNoaWZ0KGhlLmhvc3QpKSxoZS5ob3N0PSIiLFRlLnByb3RvY29sJiYoVGUuaG9zdG5hbWU9bnVsbCxUZS5wb3J0PW51bGwsVGUuaG9zdCYmKCIiPT09RlswXT9GWzBdPVRlLmhvc3Q6Ri51bnNoaWZ0KFRlLmhv''@;'; put 'put ''c3QpKSxUZS5ob3N0PW51bGwpLFFlPVFlJiYoIiI9PT1GWzBdfHwiIj09PWd0WzBdKSksUGUpaGUuaG9zdD1UZS5ob3N0fHwiIj09PVRlLmhvc3Q/VGUuaG9zdDpoZS5ob3N0LGhlLmhvc3RuYW1lPVRlLmhvc3RuYW1lfHwiIj09PVRlLmhvc3RuYW1lP1RlLmhvc3RuYW1lOmhlLmhvc3RuYW1l''@;'; put 'put ''LGhlLnNlYXJjaD1UZS5zZWFyY2gsaGUucXVlcnk9VGUucXVlcnksZ3Q9RjtlbHNlIGlmKEYubGVuZ3RoKWd0fHwoZ3Q9W10pLGd0LnBvcCgpLGd0PWd0LmNvbmNhdChGKSxoZS5zZWFyY2g9VGUuc2VhcmNoLGhlLnF1ZXJ5PVRlLnF1ZXJ5O2Vsc2UgaWYoIWxlLmlzTnVsbE9yVW5kZWZpbmVk''@;'; put 'put ''KFRlLnNlYXJjaCkpcmV0dXJuIHl0JiYoaGUuaG9zdG5hbWU9aGUuaG9zdD1ndC5zaGlmdCgpLChGdD0hIShoZS5ob3N0JiZoZS5ob3N0LmluZGV4T2YoIkAiKT4wKSYmaGUuaG9zdC5zcGxpdCgiQCIpKSYmKGhlLmF1dGg9RnQuc2hpZnQoKSxoZS5ob3N0PWhlLmhvc3RuYW1lPUZ0LnNoaWZ0''@;'; put 'put ''KCkpKSxoZS5zZWFyY2g9VGUuc2VhcmNoLGhlLnF1ZXJ5PVRlLnF1ZXJ5LGxlLmlzTnVsbChoZS5wYXRobmFtZSkmJmxlLmlzTnVsbChoZS5zZWFyY2gpfHwoaGUucGF0aD0oaGUucGF0aG5hbWU/aGUucGF0aG5hbWU6IiIpKyhoZS5zZWFyY2g/aGUuc2VhcmNoOiIiKSksaGUuaHJlZj1oZS5m''@;'; put 'put ''b3JtYXQoKSxoZTtpZighZ3QubGVuZ3RoKXJldHVybiBoZS5wYXRobmFtZT1udWxsLGhlLnBhdGg9aGUuc2VhcmNoPyIvIitoZS5zZWFyY2g6bnVsbCxoZS5ocmVmPWhlLmZvcm1hdCgpLGhlO2Zvcih2YXIgcHQ9Z3Quc2xpY2UoLTEpWzBdLG10PShoZS5ob3N0fHxUZS5ob3N0fHxndC5sZW5n''@;'; put 'put ''dGg+MSkmJigiLiI9PT1wdHx8Ii4uIj09PXB0KXx8IiI9PT1wdCx2dD0wLGZ0PWd0Lmxlbmd0aDtmdD49MDtmdC0tKSIuIj09PShwdD1ndFtmdF0pP2d0LnNwbGljZShmdCwxKToiLi4iPT09cHQ/KGd0LnNwbGljZShmdCwxKSx2dCsrKTp2dCYmKGd0LnNwbGljZShmdCwxKSx2dC0tKTtpZigh''@;'; put 'put ''UWUmJiEkZSlmb3IoO3Z0LS07dnQpZ3QudW5zaGlmdCgiLi4iKTshUWV8fCIiPT09Z3RbMF18fGd0WzBdJiYiLyI9PT1ndFswXS5jaGFyQXQoMCl8fGd0LnVuc2hpZnQoIiIpLG10JiYiLyIhPT1ndC5qb2luKCIvIikuc3Vic3RyKC0xKSYmZ3QucHVzaCgiIik7dmFyIEZ0LG9uPSIiPT09Z3Rb''@;'; put 'put ''MF18fGd0WzBdJiYiLyI9PT1ndFswXS5jaGFyQXQoMCk7cmV0dXJuIHl0JiYoaGUuaG9zdG5hbWU9aGUuaG9zdD1vbj8iIjpndC5sZW5ndGg/Z3Quc2hpZnQoKToiIiwoRnQ9ISEoaGUuaG9zdCYmaGUuaG9zdC5pbmRleE9mKCJAIik+MCkmJmhlLmhvc3Quc3BsaXQoIkAiKSkmJihoZS5hdXRo''@;'; put 'put ''PUZ0LnNoaWZ0KCksaGUuaG9zdD1oZS5ob3N0bmFtZT1GdC5zaGlmdCgpKSksKFFlPVFlfHxoZS5ob3N0JiZndC5sZW5ndGgpJiYhb24mJmd0LnVuc2hpZnQoIiIpLGd0Lmxlbmd0aD9oZS5wYXRobmFtZT1ndC5qb2luKCIvIik6KGhlLnBhdGhuYW1lPW51bGwsaGUucGF0aD1udWxsKSxsZS5p''@;'; put 'put ''c051bGwoaGUucGF0aG5hbWUpJiZsZS5pc051bGwoaGUuc2VhcmNoKXx8KGhlLnBhdGg9KGhlLnBhdGhuYW1lP2hlLnBhdGhuYW1lOiIiKSsoaGUuc2VhcmNoP2hlLnNlYXJjaDoiIikpLGhlLmF1dGg9VGUuYXV0aHx8aGUuYXV0aCxoZS5zbGFzaGVzPWhlLnNsYXNoZXN8fFRlLnNsYXNoZXMs''@;'; put 'put ''aGUuaHJlZj1oZS5mb3JtYXQoKSxoZX0sWS5wcm90b3R5cGUucGFyc2VIb3N0PWZ1bmN0aW9uKCl7dmFyIFRlPXRoaXMuaG9zdCxFZT1OLmV4ZWMoVGUpO0VlJiYoIjoiIT09KEVlPUVlWzBdKSYmKHRoaXMucG9ydD1FZS5zdWJzdHIoMSkpLFRlPVRlLnN1YnN0cigwLFRlLmxlbmd0aC1FZS5s''@;'; put 'put ''ZW5ndGgpKSxUZSYmKHRoaXMuaG9zdG5hbWU9VGUpfX0sMjUwMjpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz17aXNTdHJpbmc6ZnVuY3Rpb24oUSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBRfSxpc09iamVjdDpmdW5jdGlvbihRKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIFEmJm51bGwh''@;'; put 'put ''PT1RfSxpc051bGw6ZnVuY3Rpb24oUSl7cmV0dXJuIG51bGw9PT1RfSxpc051bGxPclVuZGVmaW5lZDpmdW5jdGlvbihRKXtyZXR1cm4gbnVsbD09UX19fSw0OTI3OihVLFEsWik9Pnt2YXIgaWU9Wig1MTA4KTtmdW5jdGlvbiBsZShZKXt0cnl7aWYoIVouZy5sb2NhbFN0b3JhZ2UpcmV0dXJu''@;'; put 'put ''ITF9Y2F0Y2goTil7cmV0dXJuITF9dmFyIFc9Wi5nLmxvY2FsU3RvcmFnZVtZXTtyZXR1cm4gbnVsbCE9VyYmInRydWUiPT09U3RyaW5nKFcpLnRvTG93ZXJDYXNlKCl9VS5leHBvcnRzPWZ1bmN0aW9uKFksVyl7aWYobGUoIm5vRGVwcmVjYXRpb24iKSlyZXR1cm4gWTt2YXIgTj0hMTtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXtpZighTil7aWYobGUoInRocm93RGVwcmVjYXRpb24iKSl0aHJvdyBuZXcgRXJyb3IoVyk7bGUoInRyYWNlRGVwcmVjYXRpb24iKT9pZS50cmFjZShXKTppZS53YXJuKFcpLE49ITB9cmV0dXJuIFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19LDM4NDpVPT57VS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKFEpe3JldHVybiBRJiYib2JqZWN0Ij09dHlwZW9mIFEmJiJmdW5jdGlvbiI9PXR5cGVvZiBRLmNvcHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBRLmZpbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBRLnJlYWRVSW50OH19LDU5NTU6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''aWU9WigyNTg0KSxsZT1aKDg2NjIpLFk9Wig2NDMwKSxXPVooNTY5Mik7ZnVuY3Rpb24gTih5ZSl7cmV0dXJuIHllLmNhbGwuYmluZCh5ZSl9dmFyIGVlPSJ1bmRlZmluZWQiIT10eXBlb2YgQmlnSW50LHE9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wsSj1OKE9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''dG9TdHJpbmcpLHNlPU4oTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKSxhZT1OKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZiksZmU9TihCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mKTtpZihlZSl2YXIgZGU9TihCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YpO2lmKHEpdmFyIHZlPU4oU3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZS52YWx1ZU9mKTtmdW5jdGlvbiBBZSh5ZSxDZSl7aWYoIm9iamVjdCIhPXR5cGVvZiB5ZSlyZXR1cm4hMTt0cnl7cmV0dXJuIENlKHllKSwhMH1jYXRjaChEZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGtlKHllKXtyZXR1cm4iW29iamVjdCBNYXBdIj09PUooeWUpfWZ1bmN0aW9u''@;'; put 'put ''IFNlKHllKXtyZXR1cm4iW29iamVjdCBTZXRdIj09PUooeWUpfWZ1bmN0aW9uIEllKHllKXtyZXR1cm4iW29iamVjdCBXZWFrTWFwXSI9PT1KKHllKX1mdW5jdGlvbiBUZSh5ZSl7cmV0dXJuIltvYmplY3QgV2Vha1NldF0iPT09Sih5ZSl9ZnVuY3Rpb24gRWUoeWUpe3JldHVybiJbb2JqZWN0''@;'; put 'put ''IEFycmF5QnVmZmVyXSI9PT1KKHllKX1mdW5jdGlvbiBoZSh5ZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmKEVlLndvcmtpbmc/RWUoeWUpOnllIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpfWZ1bmN0aW9uIE8oeWUpe3JldHVybiJbb2JqZWN0IERhdGFWaWV3XSI9''@;'; put 'put ''PT1KKHllKX1mdW5jdGlvbiB6KHllKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3JiYoTy53b3JraW5nP08oeWUpOnllIGluc3RhbmNlb2YgRGF0YVZpZXcpfVEuaXNBcmd1bWVudHNPYmplY3Q9aWUsUS5pc0dlbmVyYXRvckZ1bmN0aW9uPWxlLFEuaXNUeXBlZEFycmF5PVcs''@;'; put 'put ''US5pc1Byb21pc2U9ZnVuY3Rpb24oeWUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYmeWUgaW5zdGFuY2VvZiBQcm9taXNlfHxudWxsIT09eWUmJiJvYmplY3QiPT10eXBlb2YgeWUmJiJmdW5jdGlvbiI9PXR5cGVvZiB5ZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgeWUu''@;'; put 'put ''Y2F0Y2h9LFEuaXNBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24oeWUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoeWUpOlcoeWUpfHx6KHllKX0sUS5pc1VpbnQ4QXJyYXk9ZnVuY3Rpb24oeWUpe3Jl''@;'; put 'put ''dHVybiJVaW50OEFycmF5Ij09PVkoeWUpfSxRLmlzVWludDhDbGFtcGVkQXJyYXk9ZnVuY3Rpb24oeWUpe3JldHVybiJVaW50OENsYW1wZWRBcnJheSI9PT1ZKHllKX0sUS5pc1VpbnQxNkFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iVWludDE2QXJyYXkiPT09WSh5ZSl9LFEuaXNVaW50MzJB''@;'; put 'put ''cnJheT1mdW5jdGlvbih5ZSl7cmV0dXJuIlVpbnQzMkFycmF5Ij09PVkoeWUpfSxRLmlzSW50OEFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iSW50OEFycmF5Ij09PVkoeWUpfSxRLmlzSW50MTZBcnJheT1mdW5jdGlvbih5ZSl7cmV0dXJuIkludDE2QXJyYXkiPT09WSh5ZSl9LFEuaXNJbnQz''@;'; put 'put ''MkFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iSW50MzJBcnJheSI9PT1ZKHllKX0sUS5pc0Zsb2F0MzJBcnJheT1mdW5jdGlvbih5ZSl7cmV0dXJuIkZsb2F0MzJBcnJheSI9PT1ZKHllKX0sUS5pc0Zsb2F0NjRBcnJheT1mdW5jdGlvbih5ZSl7cmV0dXJuIkZsb2F0NjRBcnJheSI9PT1ZKHll''@;'; put 'put ''KX0sUS5pc0JpZ0ludDY0QXJyYXk9ZnVuY3Rpb24oeWUpe3JldHVybiJCaWdJbnQ2NEFycmF5Ij09PVkoeWUpfSxRLmlzQmlnVWludDY0QXJyYXk9ZnVuY3Rpb24oeWUpe3JldHVybiJCaWdVaW50NjRBcnJheSI9PT1ZKHllKX0sa2Uud29ya2luZz0idW5kZWZpbmVkIiE9dHlwZW9mIE1hcCYm''@;'; put 'put ''a2UobmV3IE1hcCksUS5pc01hcD1mdW5jdGlvbih5ZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBNYXAmJihrZS53b3JraW5nP2tlKHllKTp5ZSBpbnN0YW5jZW9mIE1hcCl9LFNlLndvcmtpbmc9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJlNlKG5ldyBTZXQpLFEuaXNTZXQ9ZnVuY3Rp''@;'; put 'put ''b24oeWUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgU2V0JiYoU2Uud29ya2luZz9TZSh5ZSk6eWUgaW5zdGFuY2VvZiBTZXQpfSxJZS53b3JraW5nPSJ1bmRlZmluZWQiIT10eXBlb2YgV2Vha01hcCYmSWUobmV3IFdlYWtNYXApLFEuaXNXZWFrTWFwPWZ1bmN0aW9uKHllKXtyZXR1cm4i''@;'; put 'put ''dW5kZWZpbmVkIiE9dHlwZW9mIFdlYWtNYXAmJihJZS53b3JraW5nP0llKHllKTp5ZSBpbnN0YW5jZW9mIFdlYWtNYXApfSxUZS53b3JraW5nPSJ1bmRlZmluZWQiIT10eXBlb2YgV2Vha1NldCYmVGUobmV3IFdlYWtTZXQpLFEuaXNXZWFrU2V0PWZ1bmN0aW9uKHllKXtyZXR1cm4gVGUoeWUp''@;'; put 'put ''fSxFZS53b3JraW5nPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkVlKG5ldyBBcnJheUJ1ZmZlciksUS5pc0FycmF5QnVmZmVyPWhlLE8ud29ya2luZz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3JiZPKG5ldyBE''@;'; put 'put ''YXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSksMCwxKSksUS5pc0RhdGFWaWV3PXo7dmFyIG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI/U2hhcmVkQXJyYXlCdWZmZXI6dm9pZCAwO2Z1bmN0aW9uIHRlKHllKXtyZXR1cm4iW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZl''@;'; put 'put ''cl0iPT09Sih5ZSl9ZnVuY3Rpb24geCh5ZSl7cmV0dXJuIHZvaWQgMCE9PW5lJiYodm9pZCAwPT09dGUud29ya2luZyYmKHRlLndvcmtpbmc9dGUobmV3IG5lKSksdGUud29ya2luZz90ZSh5ZSk6eWUgaW5zdGFuY2VvZiBuZSl9ZnVuY3Rpb24gUCh5ZSl7cmV0dXJuIEFlKHllLHNlKX1mdW5j''@;'; put 'put ''dGlvbiBWKHllKXtyZXR1cm4gQWUoeWUsYWUpfWZ1bmN0aW9uIFQoeWUpe3JldHVybiBBZSh5ZSxmZSl9ZnVuY3Rpb24gUyh5ZSl7cmV0dXJuIGVlJiZBZSh5ZSxkZSl9ZnVuY3Rpb24gRih5ZSl7cmV0dXJuIHEmJkFlKHllLHZlKX1RLmlzU2hhcmVkQXJyYXlCdWZmZXI9eCxRLmlzQXN5bmNG''@;'; put 'put ''dW5jdGlvbj1mdW5jdGlvbih5ZSl7cmV0dXJuIltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT09Sih5ZSl9LFEuaXNNYXBJdGVyYXRvcj1mdW5jdGlvbih5ZSl7cmV0dXJuIltvYmplY3QgTWFwIEl0ZXJhdG9yXSI9PT1KKHllKX0sUS5pc1NldEl0ZXJhdG9yPWZ1bmN0aW9uKHllKXtyZXR1cm4i''@;'; put 'put ''W29iamVjdCBTZXQgSXRlcmF0b3JdIj09PUooeWUpfSxRLmlzR2VuZXJhdG9yT2JqZWN0PWZ1bmN0aW9uKHllKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIj09PUooeWUpfSxRLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZT1mdW5jdGlvbih5ZSl7cmV0dXJuIltvYmplY3QgV2ViQXNz''@;'; put 'put ''ZW1ibHkuTW9kdWxlXSI9PT1KKHllKX0sUS5pc051bWJlck9iamVjdD1QLFEuaXNTdHJpbmdPYmplY3Q9VixRLmlzQm9vbGVhbk9iamVjdD1ULFEuaXNCaWdJbnRPYmplY3Q9UyxRLmlzU3ltYm9sT2JqZWN0PUYsUS5pc0JveGVkUHJpbWl0aXZlPWZ1bmN0aW9uKHllKXtyZXR1cm4gUCh5ZSl8''@;'; put 'put ''fFYoeWUpfHxUKHllKXx8Uyh5ZSl8fEYoeWUpfSxRLmlzQW55QXJyYXlCdWZmZXI9ZnVuY3Rpb24oeWUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSYmKGhlKHllKXx8eCh5ZSkpfSxbImlzUHJveHkiLCJpc0V4dGVybmFsIiwiaXNNb2R1bGVOYW1lc3BhY2VPYmplY3Qi''@;'; put 'put ''XS5mb3JFYWNoKGZ1bmN0aW9uKHllKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSx5ZSx7ZW51bWVyYWJsZTohMSx2YWx1ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcih5ZSsiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdXNlcmxhbmQiKX19KX0pfSw5NTM5OihVLFEsWik9Pnt2YXIgaWU9Wig0''@;'; put 'put ''MTU1KSxsZT1aKDUxMDgpLFk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnN8fGZ1bmN0aW9uKENlKXtmb3IodmFyIERlPU9iamVjdC5rZXlzKENlKSxQZT17fSxRZT0wO1FlPERlLmxlbmd0aDtRZSsrKVBlW0RlW1FlXV09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihD''@;'; put 'put ''ZSxEZVtRZV0pO3JldHVybiBQZX0sVz0vJVtzZGolXS9nO1EuZm9ybWF0PWZ1bmN0aW9uKENlKXtpZighVGUoQ2UpKXtmb3IodmFyIERlPVtdLFBlPTA7UGU8YXJndW1lbnRzLmxlbmd0aDtQZSsrKURlLnB1c2goSihhcmd1bWVudHNbUGVdKSk7cmV0dXJuIERlLmpvaW4oIiAiKX1QZT0xO2Zv''@;'; put 'put ''cih2YXIgUWU9YXJndW1lbnRzLCRlPVFlLmxlbmd0aCxndD1TdHJpbmcoQ2UpLnJlcGxhY2UoVyxmdW5jdGlvbihwdCl7aWYoIiUlIj09PXB0KXJldHVybiIlIjtpZihQZT49JGUpcmV0dXJuIHB0O3N3aXRjaChwdCl7Y2FzZSIlcyI6cmV0dXJuIFN0cmluZyhRZVtQZSsrXSk7Y2FzZSIlZCI6''@;'; put 'put ''cmV0dXJuIE51bWJlcihRZVtQZSsrXSk7Y2FzZSIlaiI6dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShRZVtQZSsrXSl9Y2F0Y2gobXQpe3JldHVybiJbQ2lyY3VsYXJdIn1kZWZhdWx0OnJldHVybiBwdH19KSx5dD1RZVtQZV07UGU8JGU7eXQ9UWVbKytQZV0pU2UoeXQpfHwhTyh5dCk/Z3Qr''@;'; put 'put ''PSIgIit5dDpndCs9IiAiK0ooeXQpO3JldHVybiBndH0sUS5kZXByZWNhdGU9ZnVuY3Rpb24oQ2UsRGUpe2lmKHZvaWQgMCE9PWllJiYhMD09PWllLm5vRGVwcmVjYXRpb24pcmV0dXJuIENlO2lmKHZvaWQgMD09PWllKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBRLmRlcHJlY2F0ZShDZSxE''@;'; put 'put ''ZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgUGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIVBlKXtpZihpZS50aHJvd0RlcHJlY2F0aW9uKXRocm93IG5ldyBFcnJvcihEZSk7aWUudHJhY2VEZXByZWNhdGlvbj9sZS50cmFjZShEZSk6bGUuZXJyb3IoRGUpLFBlPSEwfXJldHVybiBD''@;'; put 'put ''ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTt2YXIgTj17fSxlZT0vXiQvO2lmKGllLmVudi5OT0RFX0RFQlVHKXt2YXIgcT1pZS5lbnYuTk9ERV9ERUJVRztxPXEucmVwbGFjZSgvW3xcXHt9KClbXF1eJCs/Ll0vZywiXFwkJiIpLnJlcGxhY2UoL1wqL2csIi4qIikucmVwbGFjZSgvLC9nLCIk''@;'; put 'put ''fF4iKS50b1VwcGVyQ2FzZSgpLGVlPW5ldyBSZWdFeHAoIl4iK3ErIiQiLCJpIil9ZnVuY3Rpb24gSihDZSxEZSl7dmFyIFBlPXtzZWVuOltdLHN0eWxpemU6YWV9O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPj0zJiYoUGUuZGVwdGg9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPj00''@;'; put 'put ''JiYoUGUuY29sb3JzPWFyZ3VtZW50c1szXSksa2UoRGUpP1BlLnNob3dIaWRkZW49RGU6RGUmJlEuX2V4dGVuZChQZSxEZSksRWUoUGUuc2hvd0hpZGRlbikmJihQZS5zaG93SGlkZGVuPSExKSxFZShQZS5kZXB0aCkmJihQZS5kZXB0aD0yKSxFZShQZS5jb2xvcnMpJiYoUGUuY29sb3JzPSEx''@;'; put 'put ''KSxFZShQZS5jdXN0b21JbnNwZWN0KSYmKFBlLmN1c3RvbUluc3BlY3Q9ITApLFBlLmNvbG9ycyYmKFBlLnN0eWxpemU9c2UpLGZlKFBlLENlLFBlLmRlcHRoKX1mdW5jdGlvbiBzZShDZSxEZSl7dmFyIFBlPUouc3R5bGVzW0RlXTtyZXR1cm4gUGU/Ilx4MWJbIitKLmNvbG9yc1tQZV1bMF0r''@;'; put 'put ''Im0iK0NlKyJceDFiWyIrSi5jb2xvcnNbUGVdWzFdKyJtIjpDZX1mdW5jdGlvbiBhZShDZSxEZSl7cmV0dXJuIENlfWZ1bmN0aW9uIGZlKENlLERlLFBlKXtpZihDZS5jdXN0b21JbnNwZWN0JiZEZSYmdGUoRGUuaW5zcGVjdCkmJkRlLmluc3BlY3QhPT1RLmluc3BlY3QmJighRGUuY29uc3Ry''@;'; put 'put ''dWN0b3J8fERlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PURlKSl7dmFyIFFlPURlLmluc3BlY3QoUGUsQ2UpO3JldHVybiBUZShRZSl8fChRZT1mZShDZSxRZSxQZSkpLFFlfXZhciAkZT1mdW5jdGlvbihvbixfdCl7aWYoRWUoX3QpKXJldHVybiBvbi5zdHlsaXplKCJ1bmRlZmluZWQiLCJ1''@;'; put 'put ''bmRlZmluZWQiKTtpZihUZShfdCkpe3ZhciBudD0iJyIrSlNPTi5zdHJpbmdpZnkoX3QpLnJlcGxhY2UoL14ifCIkL2csIiIpLnJlcGxhY2UoLycvZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKSsiJyI7cmV0dXJuIG9uLnN0eWxpemUobnQsInN0cmluZyIpfXJldHVybiBJZShfdCk/b24u''@;'; put 'put ''c3R5bGl6ZSgiIitfdCwibnVtYmVyIik6a2UoX3QpP29uLnN0eWxpemUoIiIrX3QsImJvb2xlYW4iKTpTZShfdCk/b24uc3R5bGl6ZSgibnVsbCIsIm51bGwiKTp2b2lkIDB9KENlLERlKTtpZigkZSlyZXR1cm4gJGU7dmFyIF90LGd0PU9iamVjdC5rZXlzKERlKSx5dD0oX3Q9e30sZ3QuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihudCxxZSl7X3RbbnRdPSEwfSksX3QpO2lmKENlLnNob3dIaWRkZW4mJihndD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhEZSkpLG5lKERlKSYmKGd0LmluZGV4T2YoIm1lc3NhZ2UiKT49MHx8Z3QuaW5kZXhPZigiZGVzY3JpcHRpb24iKT49MCkpcmV0dXJuIGRl''@;'; put 'put ''KERlKTtpZigwPT09Z3QubGVuZ3RoKXtpZih0ZShEZSkpcmV0dXJuIENlLnN0eWxpemUoIltGdW5jdGlvbiIrKERlLm5hbWU/IjogIitEZS5uYW1lOiIiKSsiXSIsInNwZWNpYWwiKTtpZihoZShEZSkpcmV0dXJuIENlLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKERl''@;'; put 'put ''KSwicmVnZXhwIik7aWYoeihEZSkpcmV0dXJuIENlLnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChEZSksImRhdGUiKTtpZihuZShEZSkpcmV0dXJuIGRlKERlKX12YXIgbXQsdnQ9IiIsZnQ9ITEsRnQ9WyJ7IiwifSJdO3JldHVybiBBZShEZSkmJihmdD0hMCxGdD1bIlsi''@;'; put 'put ''LCJdIl0pLHRlKERlKSYmKHZ0PSIgW0Z1bmN0aW9uIisoRGUubmFtZT8iOiAiK0RlLm5hbWU6IiIpKyJdIiksaGUoRGUpJiYodnQ9IiAiK1JlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChEZSkpLHooRGUpJiYodnQ9IiAiK0RhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwoRGUp''@;'; put 'put ''KSxuZShEZSkmJih2dD0iICIrZGUoRGUpKSwwIT09Z3QubGVuZ3RofHxmdCYmMCE9RGUubGVuZ3RoP1BlPDA/aGUoRGUpP0NlLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKERlKSwicmVnZXhwIik6Q2Uuc3R5bGl6ZSgiW09iamVjdF0iLCJzcGVjaWFsIik6KENlLnNl''@;'; put 'put ''ZW4ucHVzaChEZSksbXQ9ZnQ/ZnVuY3Rpb24ob24sX3QsbnQscWUsb3Qpe2Zvcih2YXIgUnQ9W10sQ3Q9MCxjdD1fdC5sZW5ndGg7Q3Q8Y3Q7KytDdClTKF90LFN0cmluZyhDdCkpP1J0LnB1c2godmUob24sX3QsbnQscWUsU3RyaW5nKEN0KSwhMCkpOlJ0LnB1c2goIiIpO3JldHVybiBvdC5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKE50KXtOdC5tYXRjaCgvXlxkKyQvKXx8UnQucHVzaCh2ZShvbixfdCxudCxxZSxOdCwhMCkpfSksUnR9KENlLERlLFBlLHl0LGd0KTpndC5tYXAoZnVuY3Rpb24ob24pe3JldHVybiB2ZShDZSxEZSxQZSx5dCxvbixmdCl9KSxDZS5zZWVuLnBvcCgpLGZ1bmN0aW9u''@;'; put 'put ''KG9uLF90LG50KXtyZXR1cm4gb24ucmVkdWNlKGZ1bmN0aW9uKHFlLG90KXtyZXR1cm4gb3QuaW5kZXhPZigiXG4iKSxxZStvdC5yZXBsYWNlKC9cdTAwMWJcW1xkXGQ/bS9nLCIiKS5sZW5ndGgrMX0sMCk+NjA/bnRbMF0rKCIiPT09X3Q/IiI6X3QrIlxuICIpKyIgIitvbi5qb2luKCIsXG4g''@;'; put 'put ''ICIpKyIgIitudFsxXTpudFswXStfdCsiICIrb24uam9pbigiLCAiKSsiICIrbnRbMV19KG10LHZ0LEZ0KSk6RnRbMF0rdnQrRnRbMV19ZnVuY3Rpb24gZGUoQ2Upe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChDZSkrIl0ifWZ1bmN0aW9uIHZlKENlLERlLFBlLFFl''@;'; put 'put ''LCRlLGd0KXt2YXIgeXQscHQsbXQ7aWYoKG10PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRGUsJGUpfHx7dmFsdWU6RGVbJGVdfSkuZ2V0P3B0PUNlLnN0eWxpemUobXQuc2V0PyJbR2V0dGVyL1NldHRlcl0iOiJbR2V0dGVyXSIsInNwZWNpYWwiKTptdC5zZXQmJihwdD1DZS5z''@;'; put 'put ''dHlsaXplKCJbU2V0dGVyXSIsInNwZWNpYWwiKSksUyhRZSwkZSl8fCh5dD0iWyIrJGUrIl0iKSxwdHx8KENlLnNlZW4uaW5kZXhPZihtdC52YWx1ZSk8MD8ocHQ9U2UoUGUpP2ZlKENlLG10LnZhbHVlLG51bGwpOmZlKENlLG10LnZhbHVlLFBlLTEpKS5pbmRleE9mKCJcbiIpPi0xJiYocHQ9''@;'; put 'put ''Z3Q/cHQuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKHZ0KXtyZXR1cm4iICAiK3Z0fSkuam9pbigiXG4iKS5zdWJzdHIoMik6IlxuIitwdC5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24odnQpe3JldHVybiIgICAiK3Z0fSkuam9pbigiXG4iKSk6cHQ9Q2Uuc3R5bGl6ZSgiW0NpcmN1bGFyXSIs''@;'; put 'put ''InNwZWNpYWwiKSksRWUoeXQpKXtpZihndCYmJGUubWF0Y2goL15cZCskLykpcmV0dXJuIHB0Oyh5dD1KU09OLnN0cmluZ2lmeSgiIiskZSkpLm1hdGNoKC9eIihbYS16QS1aX11bYS16QS1aXzAtOV0qKSIkLyk/KHl0PXl0LnN1YnN0cigxLHl0Lmxlbmd0aC0yKSx5dD1DZS5zdHlsaXplKHl0''@;'; put 'put ''LCJuYW1lIikpOih5dD15dC5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFjZSgvKF4ifCIkKS9nLCInIikseXQ9Q2Uuc3R5bGl6ZSh5dCwic3RyaW5nIikpfXJldHVybiB5dCsiOiAiK3B0fWZ1bmN0aW9uIEFlKENlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShD''@;'; put 'put ''ZSl9ZnVuY3Rpb24ga2UoQ2Upe3JldHVybiJib29sZWFuIj09dHlwZW9mIENlfWZ1bmN0aW9uIFNlKENlKXtyZXR1cm4gbnVsbD09PUNlfWZ1bmN0aW9uIEllKENlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIENlfWZ1bmN0aW9uIFRlKENlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIENlfWZ1''@;'; put 'put ''bmN0aW9uIEVlKENlKXtyZXR1cm4gdm9pZCAwPT09Q2V9ZnVuY3Rpb24gaGUoQ2Upe3JldHVybiBPKENlKSYmIltvYmplY3QgUmVnRXhwXSI9PT14KENlKX1mdW5jdGlvbiBPKENlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIENlJiZudWxsIT09Q2V9ZnVuY3Rpb24geihDZSl7cmV0dXJuIE8o''@;'; put 'put ''Q2UpJiYiW29iamVjdCBEYXRlXSI9PT14KENlKX1mdW5jdGlvbiBuZShDZSl7cmV0dXJuIE8oQ2UpJiYoIltvYmplY3QgRXJyb3JdIj09PXgoQ2UpfHxDZSBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiB0ZShDZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIENlfWZ1bmN0aW9uIHgoQ2Up''@;'; put 'put ''e3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQ2UpfWZ1bmN0aW9uIFAoQ2Upe3JldHVybiBDZTwxMD8iMCIrQ2UudG9TdHJpbmcoMTApOkNlLnRvU3RyaW5nKDEwKX1RLmRlYnVnbG9nPWZ1bmN0aW9uKENlKXtpZihDZT1DZS50b1VwcGVyQ2FzZSgpLCFOW0NlXSlpZihl''@;'; put 'put ''ZS50ZXN0KENlKSl7dmFyIERlPWllLnBpZDtOW0NlXT1mdW5jdGlvbigpe3ZhciBQZT1RLmZvcm1hdC5hcHBseShRLGFyZ3VtZW50cyk7bGUuZXJyb3IoIiVzICVkOiAlcyIsQ2UsRGUsUGUpfX1lbHNlIE5bQ2VdPWZ1bmN0aW9uKCl7fTtyZXR1cm4gTltDZV19LFEuaW5zcGVjdD1KLEouY29s''@;'; put 'put ''b3JzPXtib2xkOlsxLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0saW52ZXJzZTpbNywyN10sd2hpdGU6WzM3LDM5XSxncmV5Ols5MCwzOV0sYmxhY2s6WzMwLDM5XSxibHVlOlszNCwzOV0sY3lhbjpbMzYsMzldLGdyZWVuOlszMiwzOV0sbWFnZW50YTpbMzUsMzldLHJlZDpb''@;'; put 'put ''MzEsMzldLHllbGxvdzpbMzMsMzldfSxKLnN0eWxlcz17c3BlY2lhbDoiY3lhbiIsbnVtYmVyOiJ5ZWxsb3ciLGJvb2xlYW46InllbGxvdyIsdW5kZWZpbmVkOiJncmV5IixudWxsOiJib2xkIixzdHJpbmc6ImdyZWVuIixkYXRlOiJtYWdlbnRhIixyZWdleHA6InJlZCJ9LFEudHlwZXM9Wig1''@;'; put 'put ''OTU1KSxRLmlzQXJyYXk9QWUsUS5pc0Jvb2xlYW49a2UsUS5pc051bGw9U2UsUS5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbihDZSl7cmV0dXJuIG51bGw9PUNlfSxRLmlzTnVtYmVyPUllLFEuaXNTdHJpbmc9VGUsUS5pc1N5bWJvbD1mdW5jdGlvbihDZSl7cmV0dXJuInN5bWJvbCI9PXR5''@;'; put 'put ''cGVvZiBDZX0sUS5pc1VuZGVmaW5lZD1FZSxRLmlzUmVnRXhwPWhlLFEudHlwZXMuaXNSZWdFeHA9aGUsUS5pc09iamVjdD1PLFEuaXNEYXRlPXosUS50eXBlcy5pc0RhdGU9eixRLmlzRXJyb3I9bmUsUS50eXBlcy5pc05hdGl2ZUVycm9yPW5lLFEuaXNGdW5jdGlvbj10ZSxRLmlzUHJpbWl0''@;'; put 'put ''aXZlPWZ1bmN0aW9uKENlKXtyZXR1cm4gbnVsbD09PUNlfHwiYm9vbGVhbiI9PXR5cGVvZiBDZXx8Im51bWJlciI9PXR5cGVvZiBDZXx8InN0cmluZyI9PXR5cGVvZiBDZXx8InN5bWJvbCI9PXR5cGVvZiBDZXx8dm9pZCAwPT09Q2V9LFEuaXNCdWZmZXI9WigzODQpO3ZhciBWPVsiSmFuIiwi''@;'; put 'put ''RmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl07ZnVuY3Rpb24gVCgpe3ZhciBDZT1uZXcgRGF0ZSxEZT1bUChDZS5nZXRIb3VycygpKSxQKENlLmdldE1pbnV0ZXMoKSksUChDZS5nZXRTZWNvbmRzKCkpXS5qb2luKCI6Iik7''@;'; put 'put ''cmV0dXJuW0NlLmdldERhdGUoKSxWW0NlLmdldE1vbnRoKCldLERlXS5qb2luKCIgIil9ZnVuY3Rpb24gUyhDZSxEZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChDZSxEZSl9US5sb2c9ZnVuY3Rpb24oKXtsZS5sb2coIiVzIC0gJXMiLFQoKSxRLmZvcm1h''@;'; put 'put ''dC5hcHBseShRLGFyZ3VtZW50cykpfSxRLmluaGVyaXRzPVooNTcxNyksUS5fZXh0ZW5kPWZ1bmN0aW9uKENlLERlKXtpZighRGV8fCFPKERlKSlyZXR1cm4gQ2U7Zm9yKHZhciBQZT1PYmplY3Qua2V5cyhEZSksUWU9UGUubGVuZ3RoO1FlLS07KUNlW1BlW1FlXV09RGVbUGVbUWVdXTtyZXR1''@;'; put 'put ''cm4gQ2V9O3ZhciBGPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sP1N5bWJvbCgidXRpbC5wcm9taXNpZnkuY3VzdG9tIik6dm9pZCAwO2Z1bmN0aW9uIHllKENlLERlKXtpZighQ2Upe3ZhciBQZT1uZXcgRXJyb3IoIlByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZSIp''@;'; put 'put ''O1BlLnJlYXNvbj1DZSxDZT1QZX1yZXR1cm4gRGUoQ2UpfVEucHJvbWlzaWZ5PWZ1bmN0aW9uKENlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgQ2UpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJvcmlnaW5hbCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7aWYoRiYmQ2Vb''@;'; put 'put ''Rl0pe3ZhciBEZTtpZigiZnVuY3Rpb24iIT10eXBlb2YoRGU9Q2VbRl0pKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidXRpbC5wcm9taXNpZnkuY3VzdG9tIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KERlLEYse3Zh''@;'; put 'put ''bHVlOkRlLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksRGV9ZnVuY3Rpb24gRGUoKXtmb3IodmFyIFBlLFFlLCRlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHB0LG10KXtQZT1wdCxRZT1tdH0pLGd0PVtdLHl0PTA7eXQ8YXJndW1lbnRzLmxlbmd0aDt5dCsrKWd0''@;'; put 'put ''LnB1c2goYXJndW1lbnRzW3l0XSk7Z3QucHVzaChmdW5jdGlvbihwdCxtdCl7cHQ/UWUocHQpOlBlKG10KX0pO3RyeXtDZS5hcHBseSh0aGlzLGd0KX1jYXRjaChwdCl7UWUocHQpfXJldHVybiAkZX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKERlLE9iamVjdC5nZXRQcm90b3R5cGVP''@;'; put 'put ''ZihDZSkpLEYmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEZSxGLHt2YWx1ZTpEZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKERlLFkoQ2UpKX0sUS5wcm9taXNpZnkuY3VzdG9tPUYsUS5jYWxsYmFja2lmeT1mdW5j''@;'; put 'put ''dGlvbihDZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIENlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAib3JpZ2luYWwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO2Z1bmN0aW9uIERlKCl7Zm9yKHZhciBQZT1bXSxRZT0wO1FlPGFyZ3VtZW50cy5sZW5ndGg7UWUrKylQ''@;'; put 'put ''ZS5wdXNoKGFyZ3VtZW50c1tRZV0pO3ZhciAkZT1QZS5wb3AoKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgJGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGxhc3QgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uIik7dmFyIGd0PXRoaXMseXQ9ZnVuY3Rpb24oKXtyZXR1cm4gJGUu''@;'; put 'put ''YXBwbHkoZ3QsYXJndW1lbnRzKX07Q2UuYXBwbHkodGhpcyxQZSkudGhlbihmdW5jdGlvbihwdCl7aWUubmV4dFRpY2soeXQuYmluZChudWxsLG51bGwscHQpKX0sZnVuY3Rpb24ocHQpe2llLm5leHRUaWNrKHllLmJpbmQobnVsbCxwdCx5dCkpfSl9cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZihEZSxPYmplY3QuZ2V0UHJvdG90eXBlT2YoQ2UpKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhEZSxZKENlKSksRGV9fSw0ODE6KFUsUSxaKT0+eyFmdW5jdGlvbihpZSl7InVzZSBzdHJpY3QiO2llLmV4cG9ydHMuaXNfdXJpPVksaWUuZXhwb3J0cy5pc19odHRwX3VyaT1XLGllLmV4''@;'; put 'put ''cG9ydHMuaXNfaHR0cHNfdXJpPU4saWUuZXhwb3J0cy5pc193ZWJfdXJpPWVlLGllLmV4cG9ydHMuaXNVcmk9WSxpZS5leHBvcnRzLmlzSHR0cFVyaT1XLGllLmV4cG9ydHMuaXNIdHRwc1VyaT1OLGllLmV4cG9ydHMuaXNXZWJVcmk9ZWU7dmFyIGxlPWZ1bmN0aW9uKHEpe3JldHVybiBxLm1h''@;'; put 'put ''dGNoKC8oPzooW146XC8/I10rKTopPyg/OlwvXC8oW15cLz8jXSopKT8oW14/I10qKSg/Olw/KFteI10qKSk/KD86IyguKikpPy8pfTtmdW5jdGlvbiBZKHEpe2lmKHEmJiEvW15hLXowLTlcOlwvXD9cI1xbXF1cQFwhXCRcJlwnXChcKVwqXCtcLFw7XD1cLlwtXF9cflwlXS9pLnRlc3QocSkm''@;'; put 'put ''JiEvJVteMC05YS1mXS9pLnRlc3QocSkmJiEvJVswLTlhLWZdKDo/W14wLTlhLWZdfCQpL2kudGVzdChxKSl7dmFyIEosc2UsYWUsZmUsZGUsdmU9IiIsQWU9IiI7aWYodmU9KEo9bGUocSkpWzFdLHNlPUpbMl0sYWU9SlszXSxmZT1KWzRdLGRlPUpbNV0sdmUmJnZlLmxlbmd0aCYmYWUubGVu''@;'; put 'put ''Z3RoPj0wKXtpZihzZSYmc2UubGVuZ3RoKXtpZigwIT09YWUubGVuZ3RoJiYhL15cLy8udGVzdChhZSkpcmV0dXJufWVsc2UgaWYoL15cL1wvLy50ZXN0KGFlKSlyZXR1cm47aWYoL15bYS16XVthLXowLTlcK1wtXC5dKiQvLnRlc3QodmUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEFlKz12ZSsi''@;'; put 'put ''OiIsc2UmJnNlLmxlbmd0aCYmKEFlKz0iLy8iK3NlKSxBZSs9YWUsZmUmJmZlLmxlbmd0aCYmKEFlKz0iPyIrZmUpLGRlJiZkZS5sZW5ndGgmJihBZSs9IiMiK2RlKSxBZX19fWZ1bmN0aW9uIFcocSxKKXtpZihZKHEpKXt2YXIgc2UsYWUsZmUsZGUsdmU9IiIsQWU9IiIsa2U9IiIsU2U9IiI7''@;'; put 'put ''aWYodmU9KHNlPWxlKHEpKVsxXSxBZT1zZVsyXSxhZT1zZVszXSxmZT1zZVs0XSxkZT1zZVs1XSx2ZSl7aWYoSil7aWYoImh0dHBzIiE9dmUudG9Mb3dlckNhc2UoKSlyZXR1cm59ZWxzZSBpZigiaHR0cCIhPXZlLnRvTG93ZXJDYXNlKCkpcmV0dXJuO2lmKEFlKXJldHVybi86KFxkKykkLy50''@;'; put 'put ''ZXN0KEFlKSYmKGtlPUFlLm1hdGNoKC86KFxkKykkLylbMF0sQWU9QWUucmVwbGFjZSgvOlxkKyQvLCIiKSksU2UrPXZlKyI6IixTZSs9Ii8vIitBZSxrZSYmKFNlKz1rZSksU2UrPWFlLGZlJiZmZS5sZW5ndGgmJihTZSs9Ij8iK2ZlKSxkZSYmZGUubGVuZ3RoJiYoU2UrPSIjIitkZSksU2V9''@;'; put 'put ''fX1mdW5jdGlvbiBOKHEpe3JldHVybiBXKHEsITApfWZ1bmN0aW9uIGVlKHEpe3JldHVybiBXKHEpfHxOKHEpfX0oVT1aLm5tZChVKSl9LDY0MzA6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9Wig0MDI5KSxsZT1aKDMwODMpLFk9WigxOTI0KSxXPVkoIk9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''dG9TdHJpbmciKSxOPVooNjQxMCkoKSxlZT0idW5kZWZpbmVkIj09dHlwZW9mIGdsb2JhbFRoaXM/Wi5nOmdsb2JhbFRoaXMscT1sZSgpLEo9WSgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLHNlPXt9LGFlPVooODgyKSxmZT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7TiYmYWUmJmZlJiZpZShx''@;'; put 'put ''LGZ1bmN0aW9uKHZlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZWVbdmVdKXt2YXIgQWU9bmV3IGVlW3ZlXTtpZihTeW1ib2wudG9TdHJpbmdUYWcgaW4gQWUpe3ZhciBrZT1mZShBZSksU2U9YWUoa2UsU3ltYm9sLnRvU3RyaW5nVGFnKTtpZighU2Upe3ZhciBJZT1mZShrZSk7U2U9YWUoSWUs''@;'; put 'put ''U3ltYm9sLnRvU3RyaW5nVGFnKX1zZVt2ZV09U2UuZ2V0fX19KTt2YXIgZGU9Wig1NjkyKTtVLmV4cG9ydHM9ZnVuY3Rpb24odmUpe3JldHVybiEhZGUodmUpJiYoTiYmU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZlPyhBZT12ZSxrZT0hMSxpZShzZSxmdW5jdGlvbihTZSxJZSl7aWYoIWtlKXRy''@;'; put 'put ''eXt2YXIgVGU9U2UuY2FsbChBZSk7VGU9PT1JZSYmKGtlPVRlKX1jYXRjaChFZSl7fX0pLGtlKTpKKFcodmUpLDgsLTEpKTt2YXIgQWUsa2V9fSwyNDc5OlU9PntVLmV4cG9ydHM9ZnVuY3Rpb24gUShaLGllKXtpZihaJiZpZSlyZXR1cm4gUShaKShpZSk7aWYoImZ1bmN0aW9uIiE9dHlwZW9m''@;'; put 'put ''IFopdGhyb3cgbmV3IFR5cGVFcnJvcigibmVlZCB3cmFwcGVyIGZ1bmN0aW9uIik7cmV0dXJuIE9iamVjdC5rZXlzKFopLmZvckVhY2goZnVuY3Rpb24oWSl7bGVbWV09WltZXX0pLGxlO2Z1bmN0aW9uIGxlKCl7Zm9yKHZhciBZPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxXPTA7VzxZ''@;'; put 'put ''Lmxlbmd0aDtXKyspWVtXXT1hcmd1bWVudHNbV107dmFyIE49Wi5hcHBseSh0aGlzLFkpLGVlPVlbWS5sZW5ndGgtMV07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIE4mJk4hPT1lZSYmT2JqZWN0LmtleXMoZWUpLmZvckVhY2goZnVuY3Rpb24ocSl7TltxXT1lZVtxXX0pLE59fX0sOTUwOigp''@;'; put 'put ''PT57fSw2NjAxOigpPT57fSw5MjE0OigpPT57fSw4NjIzOigpPT57fSw3NzQ4OigpPT57fSw1NTY4OigpPT57fSwyNTM1OigpPT57fSwzNzEwOigpPT57fSw1NDQzOigpPT57fSw0MTI5OigpPT57fSw2NjE5OigpPT57fSw3MTA4OigpPT57fSwyMzYxOigpPT57fSw0NjE2OigpPT57fSw3MjE3''@;'; put 'put ''OigpPT57fSw4MzczOigpPT57fSwzMDgzOihVLFEsWik9PnsidXNlIHN0cmljdCI7dmFyIGllPVsiQmlnSW50NjRBcnJheSIsIkJpZ1VpbnQ2NEFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50MTZB''@;'; put 'put ''cnJheSIsIlVpbnQzMkFycmF5IiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5Il0sbGU9InVuZGVmaW5lZCI9PXR5cGVvZiBnbG9iYWxUaGlzP1ouZzpnbG9iYWxUaGlzO1UuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgWT1bXSxXPTA7VzxpZS5sZW5ndGg7VysrKSJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBsZVtpZVtXXV0mJihZW1kubGVuZ3RoXT1pZVtXXSk7cmV0dXJuIFl9fSw4ODI6KFUsUSxaKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWU9WigyMTApKCIlT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciUiLCEwKTtpZihpZSl0cnl7aWUoW10sImxlbmd0aCIpfWNhdGNo''@;'; put 'put ''KGxlKXtpZT1udWxsfVUuZXhwb3J0cz1pZX0sNDk0NjpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImFlcy0xMjgtZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MCwibW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTkyLWVjYiI6eyJj''@;'; put 'put ''aXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTI1Ni1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xMjgtY2JjIjp7ImNpcGhlciI6IkFFUyIs''@;'; put 'put ''ImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTE5Mi1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMjU2LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1Niwi''@;'; put 'put ''aXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczEyOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczE5MiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwi''@;'; put 'put ''dHlwZSI6ImJsb2NrIn0sImFlczI1NiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xMjgtY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0s''@;'; put 'put ''ImFlcy0xOTItY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgt''@;'; put 'put ''Y2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYjgi''@;'; put 'put ''OnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmIxIjp7ImNp''@;'; put 'put ''cGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtb2ZiIjp7ImNpcGhlciI6''@;'; put 'put ''IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtl''@;'; put 'put ''eSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJp''@;'; put 'put ''diI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTIsIm1v''@;'; put 'put ''ZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9LCJhZXMtMTkyLWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTI1Ni1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5''@;'; put 'put ''cGUiOiJhdXRoIn19Jyl9LDUyMDc6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJzaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwi''@;'; put 'put ''UlNBLVNIQTIyNCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwic2hhMjU2V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBk''@;'; put 'put ''MDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwIn0sIlJTQS1TSEEyNTYiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwIn0sInNoYTM4NFdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJy''@;'; put 'put ''c2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJSU0EtU0hBMzg0Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJz''@;'; put 'put ''aGE1MTJXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTUxMiI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQw''@;'; put 'put ''NjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTEiOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGExIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQifSwiZWNkc2Etd2l0aC1TSEExIjp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGExIiwiaWQiOiIi''@;'; put 'put ''fSwic2hhMjU2Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJzaGEyMjQiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sInNoYTM4NCI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwic2hhNTEyIjp7InNp''@;'; put 'put ''Z24iOiJlY2RzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQS1TSEExIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEi''@;'; put 'put ''LCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEyMjQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJEU0EtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBMjU2Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjU2''@;'; put 'put ''IiwiaWQiOiIifSwiRFNBLVNIQTI1NiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTM4NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiIn0sIkRTQS1TSEEzODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJp''@;'; put 'put ''ZCI6IiJ9LCJEU0EtV0lUSC1TSEE1MTIiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVJJUEVNRDE2MCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InJtZDE2MCIsImlk''@;'; put 'put ''IjoiIn0sInJpcGVtZDE2MFdpdGhSU0EiOnsic2lnbiI6InJzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEwNTAwMDQxNCJ9LCJSU0EtUklQRU1EMTYwIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0MDMw''@;'; put 'put ''MjAxMDUwMDA0MTQifSwibWQ1V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJtZDUiLCJpZCI6IjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMCJ9LCJSU0EtTUQ1Ijp7InNpZ24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAwYzA2MDgy''@;'; put 'put ''YTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifX0nKX0sMTMwODpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjEuMy4xMzIuMC4xMCI6InNlY3AyNTZrMSIsIjEuMy4xMzIuMC4zMyI6InAyMjQiLCIxLjIuODQwLjEwMDQ1LjMuMS4xIjoicDE5MiIsIjEuMi44NDAuMTAw''@;'; put 'put ''NDUuMy4xLjciOiJwMjU2IiwiMS4zLjEzMi4wLjM0IjoicDM4NCIsIjEuMy4xMzIuMC4zNSI6InA1MjEifScpfSwzMjA4OlU9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPUpTT04ucGFyc2UoJ3siT19SRE9OTFkiOjAsIk9fV1JPTkxZIjoxLCJPX1JEV1IiOjIsIlNfSUZNVCI6NjE0NDAsIlNf''@;'; put 'put ''SUZSRUciOjMyNzY4LCJTX0lGRElSIjoxNjM4NCwiU19JRkNIUiI6ODE5MiwiU19JRkJMSyI6MjQ1NzYsIlNfSUZJRk8iOjQwOTYsIlNfSUZMTksiOjQwOTYwLCJTX0lGU09DSyI6NDkxNTIsIk9fQ1JFQVQiOjUxMiwiT19FWENMIjoyMDQ4LCJPX05PQ1RUWSI6MTMxMDcyLCJPX1RSVU5DIjox''@;'; put 'put ''MDI0LCJPX0FQUEVORCI6OCwiT19ESVJFQ1RPUlkiOjEwNDg1NzYsIk9fTk9GT0xMT1ciOjI1NiwiT19TWU5DIjoxMjgsIk9fU1lNTElOSyI6MjA5NzE1MiwiT19OT05CTE9DSyI6NCwiU19JUldYVSI6NDQ4LCJTX0lSVVNSIjoyNTYsIlNfSVdVU1IiOjEyOCwiU19JWFVTUiI6NjQsIlNfSVJX''@;'; put 'put ''WEciOjU2LCJTX0lSR1JQIjozMiwiU19JV0dSUCI6MTYsIlNfSVhHUlAiOjgsIlNfSVJXWE8iOjcsIlNfSVJPVEgiOjQsIlNfSVdPVEgiOjIsIlNfSVhPVEgiOjEsIkUyQklHIjo3LCJFQUNDRVMiOjEzLCJFQUREUklOVVNFIjo0OCwiRUFERFJOT1RBVkFJTCI6NDksIkVBRk5PU1VQUE9SVCI6''@;'; put 'put ''NDcsIkVBR0FJTiI6MzUsIkVBTFJFQURZIjozNywiRUJBREYiOjksIkVCQURNU0ciOjk0LCJFQlVTWSI6MTYsIkVDQU5DRUxFRCI6ODksIkVDSElMRCI6MTAsIkVDT05OQUJPUlRFRCI6NTMsIkVDT05OUkVGVVNFRCI6NjEsIkVDT05OUkVTRVQiOjU0LCJFREVBRExLIjoxMSwiRURFU1RBRERS''@;'; put 'put ''UkVRIjozOSwiRURPTSI6MzMsIkVEUVVPVCI6NjksIkVFWElTVCI6MTcsIkVGQVVMVCI6MTQsIkVGQklHIjoyNywiRUhPU1RVTlJFQUNIIjo2NSwiRUlEUk0iOjkwLCJFSUxTRVEiOjkyLCJFSU5QUk9HUkVTUyI6MzYsIkVJTlRSIjo0LCJFSU5WQUwiOjIyLCJFSU8iOjUsIkVJU0NPTk4iOjU2''@;'; put 'put ''LCJFSVNESVIiOjIxLCJFTE9PUCI6NjIsIkVNRklMRSI6MjQsIkVNTElOSyI6MzEsIkVNU0dTSVpFIjo0MCwiRU1VTFRJSE9QIjo5NSwiRU5BTUVUT09MT05HIjo2MywiRU5FVERPV04iOjUwLCJFTkVUUkVTRVQiOjUyLCJFTkVUVU5SRUFDSCI6NTEsIkVORklMRSI6MjMsIkVOT0JVRlMiOjU1''@;'; put 'put ''LCJFTk9EQVRBIjo5NiwiRU5PREVWIjoxOSwiRU5PRU5UIjoyLCJFTk9FWEVDIjo4LCJFTk9MQ0siOjc3LCJFTk9MSU5LIjo5NywiRU5PTUVNIjoxMiwiRU5PTVNHIjo5MSwiRU5PUFJPVE9PUFQiOjQyLCJFTk9TUEMiOjI4LCJFTk9TUiI6OTgsIkVOT1NUUiI6OTksIkVOT1NZUyI6NzgsIkVO''@;'; put 'put ''T1RDT05OIjo1NywiRU5PVERJUiI6MjAsIkVOT1RFTVBUWSI6NjYsIkVOT1RTT0NLIjozOCwiRU5PVFNVUCI6NDUsIkVOT1RUWSI6MjUsIkVOWElPIjo2LCJFT1BOT1RTVVBQIjoxMDIsIkVPVkVSRkxPVyI6ODQsIkVQRVJNIjoxLCJFUElQRSI6MzIsIkVQUk9UTyI6MTAwLCJFUFJPVE9OT1NV''@;'; put 'put ''UFBPUlQiOjQzLCJFUFJPVE9UWVBFIjo0MSwiRVJBTkdFIjozNCwiRVJPRlMiOjMwLCJFU1BJUEUiOjI5LCJFU1JDSCI6MywiRVNUQUxFIjo3MCwiRVRJTUUiOjEwMSwiRVRJTUVET1VUIjo2MCwiRVRYVEJTWSI6MjYsIkVXT1VMREJMT0NLIjozNSwiRVhERVYiOjE4LCJTSUdIVVAiOjEsIlNJ''@;'; put 'put ''R0lOVCI6MiwiU0lHUVVJVCI6MywiU0lHSUxMIjo0LCJTSUdUUkFQIjo1LCJTSUdBQlJUIjo2LCJTSUdJT1QiOjYsIlNJR0JVUyI6MTAsIlNJR0ZQRSI6OCwiU0lHS0lMTCI6OSwiU0lHVVNSMSI6MzAsIlNJR1NFR1YiOjExLCJTSUdVU1IyIjozMSwiU0lHUElQRSI6MTMsIlNJR0FMUk0iOjE0''@;'; put 'put ''LCJTSUdURVJNIjoxNSwiU0lHQ0hMRCI6MjAsIlNJR0NPTlQiOjE5LCJTSUdTVE9QIjoxNywiU0lHVFNUUCI6MTgsIlNJR1RUSU4iOjIxLCJTSUdUVE9VIjoyMiwiU0lHVVJHIjoxNiwiU0lHWENQVSI6MjQsIlNJR1hGU1oiOjI1LCJTSUdWVEFMUk0iOjI2LCJTSUdQUk9GIjoyNywiU0lHV0lO''@;'; put 'put ''Q0giOjI4LCJTSUdJTyI6MjMsIlNJR1NZUyI6MTIsIlNTTF9PUF9BTEwiOjIxNDc0ODY3MTksIlNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT04iOjI2MjE0NCwiU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSI6NDE5NDMwNCwiU1NMX09QX0NJU0NPX0FOWUNP''@;'; put 'put ''Tk5FQ1QiOjMyNzY4LCJTU0xfT1BfQ09PS0lFX0VYQ0hBTkdFIjo4MTkyLCJTU0xfT1BfQ1JZUFRPUFJPX1RMU0VYVF9CVUciOjIxNDc0ODM2NDgsIlNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFMiOjIwNDgsIlNTTF9PUF9FUEhFTUVSQUxfUlNBIjowLCJTU0xfT1BfTEVHQUNZ''@;'; put 'put ''X1NFUlZFUl9DT05ORUNUIjo0LCJTU0xfT1BfTUlDUk9TT0ZUX0JJR19TU0xWM19CVUZGRVIiOjMyLCJTU0xfT1BfTUlDUk9TT0ZUX1NFU1NfSURfQlVHIjoxLCJTU0xfT1BfTVNJRV9TU0xWMl9SU0FfUEFERElORyI6MCwiU1NMX09QX05FVFNDQVBFX0NBX0ROX0JVRyI6NTM2ODcwOTEyLCJT''@;'; put 'put ''U0xfT1BfTkVUU0NBUEVfQ0hBTExFTkdFX0JVRyI6MiwiU1NMX09QX05FVFNDQVBFX0RFTU9fQ0lQSEVSX0NIQU5HRV9CVUciOjEwNzM3NDE4MjQsIlNTTF9PUF9ORVRTQ0FQRV9SRVVTRV9DSVBIRVJfQ0hBTkdFX0JVRyI6OCwiU1NMX09QX05PX0NPTVBSRVNTSU9OIjoxMzEwNzIsIlNTTF9P''@;'; put 'put ''UF9OT19RVUVSWV9NVFUiOjQwOTYsIlNTTF9PUF9OT19TRVNTSU9OX1JFU1VNUFRJT05fT05fUkVORUdPVElBVElPTiI6NjU1MzYsIlNTTF9PUF9OT19TU0x2MiI6MTY3NzcyMTYsIlNTTF9PUF9OT19TU0x2MyI6MzM1NTQ0MzIsIlNTTF9PUF9OT19USUNLRVQiOjE2Mzg0LCJTU0xfT1BfTk9f''@;'; put 'put ''VExTdjEiOjY3MTA4ODY0LCJTU0xfT1BfTk9fVExTdjFfMSI6MjY4NDM1NDU2LCJTU0xfT1BfTk9fVExTdjFfMiI6MTM0MjE3NzI4LCJTU0xfT1BfUEtDUzFfQ0hFQ0tfMSI6MCwiU1NMX09QX1BLQ1MxX0NIRUNLXzIiOjAsIlNTTF9PUF9TSU5HTEVfREhfVVNFIjoxMDQ4NTc2LCJTU0xfT1Bf''@;'; put 'put ''U0lOR0xFX0VDREhfVVNFIjo1MjQyODgsIlNTTF9PUF9TU0xFQVlfMDgwX0NMSUVOVF9ESF9CVUciOjEyOCwiU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRyI6MCwiU1NMX09QX1RMU19CTE9DS19QQURESU5HX0JVRyI6NTEyLCJTU0xfT1BfVExTX0Q1X0JVRyI6MjU2LCJTU0xf''@;'; put 'put ''T1BfVExTX1JPTExCQUNLX0JVRyI6ODM4ODYwOCwiRU5HSU5FX01FVEhPRF9EU0EiOjIsIkVOR0lORV9NRVRIT0RfREgiOjQsIkVOR0lORV9NRVRIT0RfUkFORCI6OCwiRU5HSU5FX01FVEhPRF9FQ0RIIjoxNiwiRU5HSU5FX01FVEhPRF9FQ0RTQSI6MzIsIkVOR0lORV9NRVRIT0RfQ0lQSEVS''@;'; put 'put ''UyI6NjQsIkVOR0lORV9NRVRIT0RfRElHRVNUUyI6MTI4LCJFTkdJTkVfTUVUSE9EX1NUT1JFIjoyNTYsIkVOR0lORV9NRVRIT0RfUEtFWV9NRVRIUyI6NTEyLCJFTkdJTkVfTUVUSE9EX1BLRVlfQVNOMV9NRVRIUyI6MTAyNCwiRU5HSU5FX01FVEhPRF9BTEwiOjY1NTM1LCJFTkdJTkVfTUVU''@;'; put 'put ''SE9EX05PTkUiOjAsIkRIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUUiOjIsIkRIX0NIRUNLX1BfTk9UX1BSSU1FIjoxLCJESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SIjo0LCJESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SIjo4LCJOUE5fRU5BQkxFRCI6MSwiUlNBX1BLQ1MxX1BBRERJTkci''@;'; put 'put ''OjEsIlJTQV9TU0xWMjNfUEFERElORyI6MiwiUlNBX05PX1BBRERJTkciOjMsIlJTQV9QS0NTMV9PQUVQX1BBRERJTkciOjQsIlJTQV9YOTMxX1BBRERJTkciOjUsIlJTQV9QS0NTMV9QU1NfUEFERElORyI6NiwiUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEIjoyLCJQT0lOVF9DT05WRVJT''@;'; put 'put ''SU9OX1VOQ09NUFJFU1NFRCI6NCwiUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQiOjYsIkZfT0siOjAsIlJfT0siOjQsIldfT0siOjIsIlhfT0siOjEsIlVWX1VEUF9SRVVTRUFERFIiOjR9Jyl9LDk3OTk6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJtb2RwMSI6eyJn''@;'; put 'put ''ZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4''@;'; put 'put ''NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAyIjp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5''@;'; put 'put ''OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmZmIn0sIm1vZHA1Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRm''@;'; put 'put ''ZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQy''@;'; put 'put ''M2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE0Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBk''@;'; put 'put ''YzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1''@;'; put 'put ''YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1''@;'; put 'put ''ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTUiOnsiZ2VuIjoiMDIiLCJw''@;'; put 'put ''cmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdl''@;'; put 'put ''YzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVk''@;'; put 'put ''NTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVh''@;'; put 'put ''OGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2''@;'; put 'put ''YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNhZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTYiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZj''@;'; put 'put ''OTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVj''@;'; put 'put ''YjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFi''@;'; put 'put ''Yzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMz''@;'; put 'put ''YTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTEx''@;'; put 'put ''NzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0''@;'; put 'put ''ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2MzE5''@;'; put 'put ''OWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE3Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAy''@;'; put 'put ''YjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4''@;'; put 'put ''ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgx''@;'; put 'put ''NzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNl''@;'; put 'put ''ZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWEx''@;'; put 'put ''MGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcw''@;'; put 'put ''NDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzEx''@;'; put 'put ''Nzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQw''@;'; put 'put ''MzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMx''@;'; put 'put ''M2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE4Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIz''@;'; put 'put ''NGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4''@;'; put 'put ''NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhj''@;'; put 'put ''YTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2Jh''@;'; put 'put ''NjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcw''@;'; put 'put ''OTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0''@;'; put 'put ''MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3''@;'; put 'put ''MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZm''@;'; put 'put ''YjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3''@;'; put 'put ''ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJl''@;'; put 'put ''MTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDky''@;'; put 'put ''MjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFj''@;'; put 'put ''YzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBi''@;'; put 'put ''OTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZiJ9fScpfSw4NTk3OlU9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPXtpODoiNi41LjQifX0sMjU2MjpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjIuMTYuODQwLjEuMTAxLjMuNC4xLjEiOiJhZXMt''@;'; put 'put ''MTI4LWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIiOiJhZXMtMTI4LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjMiOiJhZXMtMTI4LW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQiOiJhZXMtMTI4LWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxIjoiYWVzLTE5Mi1lY2Ii''@;'; put 'put ''LCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMiI6ImFlcy0xOTItY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjMiOiJhZXMtMTkyLW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0IjoiYWVzLTE5Mi1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MSI6ImFlcy0yNTYtZWNiIiwiMi4x''@;'; put 'put ''Ni44NDAuMS4xMDEuMy40LjEuNDIiOiJhZXMtMjU2LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzIjoiYWVzLTI1Ni1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NCI6ImFlcy0yNTYtY2ZiIn0nKX0sMzcwNDpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1KU09OLnBhcnNlKCdb''@;'; put 'put ''ImFjIiwiY29tLmFjIiwiZWR1LmFjIiwiZ292LmFjIiwibmV0LmFjIiwibWlsLmFjIiwib3JnLmFjIiwiYWQiLCJub20uYWQiLCJhZSIsImNvLmFlIiwibmV0LmFlIiwib3JnLmFlIiwic2NoLmFlIiwiYWMuYWUiLCJnb3YuYWUiLCJtaWwuYWUiLCJhZXJvIiwiYWNjaWRlbnQtaW52ZXN0aWdh''@;'; put 'put ''dGlvbi5hZXJvIiwiYWNjaWRlbnQtcHJldmVudGlvbi5hZXJvIiwiYWVyb2JhdGljLmFlcm8iLCJhZXJvY2x1Yi5hZXJvIiwiYWVyb2Ryb21lLmFlcm8iLCJhZ2VudHMuYWVybyIsImFpcmNyYWZ0LmFlcm8iLCJhaXJsaW5lLmFlcm8iLCJhaXJwb3J0LmFlcm8iLCJhaXItc3VydmVpbGxhbmNl''@;'; put 'put ''LmFlcm8iLCJhaXJ0cmFmZmljLmFlcm8iLCJhaXItdHJhZmZpYy1jb250cm9sLmFlcm8iLCJhbWJ1bGFuY2UuYWVybyIsImFtdXNlbWVudC5hZXJvIiwiYXNzb2NpYXRpb24uYWVybyIsImF1dGhvci5hZXJvIiwiYmFsbG9vbmluZy5hZXJvIiwiYnJva2VyLmFlcm8iLCJjYWEuYWVybyIsImNh''@;'; put 'put ''cmdvLmFlcm8iLCJjYXRlcmluZy5hZXJvIiwiY2VydGlmaWNhdGlvbi5hZXJvIiwiY2hhbXBpb25zaGlwLmFlcm8iLCJjaGFydGVyLmFlcm8iLCJjaXZpbGF2aWF0aW9uLmFlcm8iLCJjbHViLmFlcm8iLCJjb25mZXJlbmNlLmFlcm8iLCJjb25zdWx0YW50LmFlcm8iLCJjb25zdWx0aW5nLmFl''@;'; put 'put ''cm8iLCJjb250cm9sLmFlcm8iLCJjb3VuY2lsLmFlcm8iLCJjcmV3LmFlcm8iLCJkZXNpZ24uYWVybyIsImRnY2EuYWVybyIsImVkdWNhdG9yLmFlcm8iLCJlbWVyZ2VuY3kuYWVybyIsImVuZ2luZS5hZXJvIiwiZW5naW5lZXIuYWVybyIsImVudGVydGFpbm1lbnQuYWVybyIsImVxdWlwbWVu''@;'; put 'put ''dC5hZXJvIiwiZXhjaGFuZ2UuYWVybyIsImV4cHJlc3MuYWVybyIsImZlZGVyYXRpb24uYWVybyIsImZsaWdodC5hZXJvIiwiZnJlaWdodC5hZXJvIiwiZnVlbC5hZXJvIiwiZ2xpZGluZy5hZXJvIiwiZ292ZXJubWVudC5hZXJvIiwiZ3JvdW5kaGFuZGxpbmcuYWVybyIsImdyb3VwLmFlcm8i''@;'; put 'put ''LCJoYW5nZ2xpZGluZy5hZXJvIiwiaG9tZWJ1aWx0LmFlcm8iLCJpbnN1cmFuY2UuYWVybyIsImpvdXJuYWwuYWVybyIsImpvdXJuYWxpc3QuYWVybyIsImxlYXNpbmcuYWVybyIsImxvZ2lzdGljcy5hZXJvIiwibWFnYXppbmUuYWVybyIsIm1haW50ZW5hbmNlLmFlcm8iLCJtZWRpYS5hZXJv''@;'; put 'put ''IiwibWljcm9saWdodC5hZXJvIiwibW9kZWxsaW5nLmFlcm8iLCJuYXZpZ2F0aW9uLmFlcm8iLCJwYXJhY2h1dGluZy5hZXJvIiwicGFyYWdsaWRpbmcuYWVybyIsInBhc3Nlbmdlci1hc3NvY2lhdGlvbi5hZXJvIiwicGlsb3QuYWVybyIsInByZXNzLmFlcm8iLCJwcm9kdWN0aW9uLmFlcm8i''@;'; put 'put ''LCJyZWNyZWF0aW9uLmFlcm8iLCJyZXBib2R5LmFlcm8iLCJyZXMuYWVybyIsInJlc2VhcmNoLmFlcm8iLCJyb3RvcmNyYWZ0LmFlcm8iLCJzYWZldHkuYWVybyIsInNjaWVudGlzdC5hZXJvIiwic2VydmljZXMuYWVybyIsInNob3cuYWVybyIsInNreWRpdmluZy5hZXJvIiwic29mdHdhcmUu''@;'; put 'put ''YWVybyIsInN0dWRlbnQuYWVybyIsInRyYWRlci5hZXJvIiwidHJhZGluZy5hZXJvIiwidHJhaW5lci5hZXJvIiwidW5pb24uYWVybyIsIndvcmtpbmdncm91cC5hZXJvIiwid29ya3MuYWVybyIsImFmIiwiZ292LmFmIiwiY29tLmFmIiwib3JnLmFmIiwibmV0LmFmIiwiZWR1LmFmIiwiYWci''@;'; put 'put ''LCJjb20uYWciLCJvcmcuYWciLCJuZXQuYWciLCJjby5hZyIsIm5vbS5hZyIsImFpIiwib2ZmLmFpIiwiY29tLmFpIiwibmV0LmFpIiwib3JnLmFpIiwiYWwiLCJjb20uYWwiLCJlZHUuYWwiLCJnb3YuYWwiLCJtaWwuYWwiLCJuZXQuYWwiLCJvcmcuYWwiLCJhbSIsImNvLmFtIiwiY29tLmFt''@;'; put 'put ''IiwiY29tbXVuZS5hbSIsIm5ldC5hbSIsIm9yZy5hbSIsImFvIiwiZWQuYW8iLCJndi5hbyIsIm9nLmFvIiwiY28uYW8iLCJwYi5hbyIsIml0LmFvIiwiYXEiLCJhciIsImNvbS5hciIsImVkdS5hciIsImdvYi5hciIsImdvdi5hciIsImludC5hciIsIm1pbC5hciIsIm11c2ljYS5hciIsIm5l''@;'; put 'put ''dC5hciIsIm9yZy5hciIsInR1ci5hciIsImFycGEiLCJlMTY0LmFycGEiLCJpbi1hZGRyLmFycGEiLCJpcDYuYXJwYSIsImlyaXMuYXJwYSIsInVyaS5hcnBhIiwidXJuLmFycGEiLCJhcyIsImdvdi5hcyIsImFzaWEiLCJhdCIsImFjLmF0IiwiY28uYXQiLCJndi5hdCIsIm9yLmF0IiwiYXUi''@;'; put 'put ''LCJjb20uYXUiLCJuZXQuYXUiLCJvcmcuYXUiLCJlZHUuYXUiLCJnb3YuYXUiLCJhc24uYXUiLCJpZC5hdSIsImluZm8uYXUiLCJjb25mLmF1Iiwib3ouYXUiLCJhY3QuYXUiLCJuc3cuYXUiLCJudC5hdSIsInFsZC5hdSIsInNhLmF1IiwidGFzLmF1IiwidmljLmF1Iiwid2EuYXUiLCJhY3Qu''@;'; put 'put ''ZWR1LmF1IiwiY2F0aG9saWMuZWR1LmF1IiwibnN3LmVkdS5hdSIsIm50LmVkdS5hdSIsInFsZC5lZHUuYXUiLCJzYS5lZHUuYXUiLCJ0YXMuZWR1LmF1IiwidmljLmVkdS5hdSIsIndhLmVkdS5hdSIsInFsZC5nb3YuYXUiLCJzYS5nb3YuYXUiLCJ0YXMuZ292LmF1IiwidmljLmdvdi5hdSIs''@;'; put 'put ''IndhLmdvdi5hdSIsImVkdWNhdGlvbi50YXMuZWR1LmF1Iiwic2Nob29scy5uc3cuZWR1LmF1IiwiYXciLCJjb20uYXciLCJheCIsImF6IiwiY29tLmF6IiwibmV0LmF6IiwiaW50LmF6IiwiZ292LmF6Iiwib3JnLmF6IiwiZWR1LmF6IiwiaW5mby5heiIsInBwLmF6IiwibWlsLmF6IiwibmFt''@;'; put 'put ''ZS5heiIsInByby5heiIsImJpei5heiIsImJhIiwiY29tLmJhIiwiZWR1LmJhIiwiZ292LmJhIiwibWlsLmJhIiwibmV0LmJhIiwib3JnLmJhIiwiYmIiLCJiaXouYmIiLCJjby5iYiIsImNvbS5iYiIsImVkdS5iYiIsImdvdi5iYiIsImluZm8uYmIiLCJuZXQuYmIiLCJvcmcuYmIiLCJzdG9y''@;'; put 'put ''ZS5iYiIsInR2LmJiIiwiKi5iZCIsImJlIiwiYWMuYmUiLCJiZiIsImdvdi5iZiIsImJnIiwiYS5iZyIsImIuYmciLCJjLmJnIiwiZC5iZyIsImUuYmciLCJmLmJnIiwiZy5iZyIsImguYmciLCJpLmJnIiwiai5iZyIsImsuYmciLCJsLmJnIiwibS5iZyIsIm4uYmciLCJvLmJnIiwicC5iZyIs''@;'; put 'put ''InEuYmciLCJyLmJnIiwicy5iZyIsInQuYmciLCJ1LmJnIiwidi5iZyIsIncuYmciLCJ4LmJnIiwieS5iZyIsInouYmciLCIwLmJnIiwiMS5iZyIsIjIuYmciLCIzLmJnIiwiNC5iZyIsIjUuYmciLCI2LmJnIiwiNy5iZyIsIjguYmciLCI5LmJnIiwiYmgiLCJjb20uYmgiLCJlZHUuYmgiLCJu''@;'; put 'put ''ZXQuYmgiLCJvcmcuYmgiLCJnb3YuYmgiLCJiaSIsImNvLmJpIiwiY29tLmJpIiwiZWR1LmJpIiwib3IuYmkiLCJvcmcuYmkiLCJiaXoiLCJiaiIsImFzc28uYmoiLCJiYXJyZWF1LmJqIiwiZ291di5iaiIsImJtIiwiY29tLmJtIiwiZWR1LmJtIiwiZ292LmJtIiwibmV0LmJtIiwib3JnLmJt''@;'; put 'put ''IiwiYm4iLCJjb20uYm4iLCJlZHUuYm4iLCJnb3YuYm4iLCJuZXQuYm4iLCJvcmcuYm4iLCJibyIsImNvbS5ibyIsImVkdS5ibyIsImdvYi5ibyIsImludC5ibyIsIm9yZy5ibyIsIm5ldC5ibyIsIm1pbC5ibyIsInR2LmJvIiwid2ViLmJvIiwiYWNhZGVtaWEuYm8iLCJhZ3JvLmJvIiwiYXJ0''@;'; put 'put ''ZS5ibyIsImJsb2cuYm8iLCJib2xpdmlhLmJvIiwiY2llbmNpYS5ibyIsImNvb3BlcmF0aXZhLmJvIiwiZGVtb2NyYWNpYS5ibyIsImRlcG9ydGUuYm8iLCJlY29sb2dpYS5ibyIsImVjb25vbWlhLmJvIiwiZW1wcmVzYS5ibyIsImluZGlnZW5hLmJvIiwiaW5kdXN0cmlhLmJvIiwiaW5mby5i''@;'; put 'put ''byIsIm1lZGljaW5hLmJvIiwibW92aW1pZW50by5ibyIsIm11c2ljYS5ibyIsIm5hdHVyYWwuYm8iLCJub21icmUuYm8iLCJub3RpY2lhcy5ibyIsInBhdHJpYS5ibyIsInBvbGl0aWNhLmJvIiwicHJvZmVzaW9uYWwuYm8iLCJwbHVyaW5hY2lvbmFsLmJvIiwicHVlYmxvLmJvIiwicmV2aXN0''@;'; put 'put ''YS5ibyIsInNhbHVkLmJvIiwidGVjbm9sb2dpYS5ibyIsInRrc2F0LmJvIiwidHJhbnNwb3J0ZS5ibyIsIndpa2kuYm8iLCJiciIsIjlndWFjdS5iciIsImFiYy5iciIsImFkbS5iciIsImFkdi5iciIsImFnci5iciIsImFqdS5iciIsImFtLmJyIiwiYW5hbmkuYnIiLCJhcGFyZWNpZGEuYnIi''@;'; put 'put ''LCJhcnEuYnIiLCJhcnQuYnIiLCJhdG8uYnIiLCJiLmJyIiwiYmFydWVyaS5iciIsImJlbGVtLmJyIiwiYmh6LmJyIiwiYmlvLmJyIiwiYmxvZy5iciIsImJtZC5iciIsImJvYXZpc3RhLmJyIiwiYnNiLmJyIiwiY2FtcGluYWdyYW5kZS5iciIsImNhbXBpbmFzLmJyIiwiY2F4aWFzLmJyIiwi''@;'; put 'put ''Y2ltLmJyIiwiY25nLmJyIiwiY250LmJyIiwiY29tLmJyIiwiY29udGFnZW0uYnIiLCJjb29wLmJyIiwiY3JpLmJyIiwiY3VpYWJhLmJyIiwiY3VyaXRpYmEuYnIiLCJkZWYuYnIiLCJlY24uYnIiLCJlY28uYnIiLCJlZHUuYnIiLCJlbXAuYnIiLCJlbmcuYnIiLCJlc3AuYnIiLCJldGMuYnIi''@;'; put 'put ''LCJldGkuYnIiLCJmYXIuYnIiLCJmZWlyYS5iciIsImZsb2cuYnIiLCJmbG9yaXBhLmJyIiwiZm0uYnIiLCJmbmQuYnIiLCJmb3J0YWwuYnIiLCJmb3QuYnIiLCJmb3ouYnIiLCJmc3QuYnIiLCJnMTIuYnIiLCJnZ2YuYnIiLCJnb2lhbmlhLmJyIiwiZ292LmJyIiwiYWMuZ292LmJyIiwiYWwu''@;'; put 'put ''Z292LmJyIiwiYW0uZ292LmJyIiwiYXAuZ292LmJyIiwiYmEuZ292LmJyIiwiY2UuZ292LmJyIiwiZGYuZ292LmJyIiwiZXMuZ292LmJyIiwiZ28uZ292LmJyIiwibWEuZ292LmJyIiwibWcuZ292LmJyIiwibXMuZ292LmJyIiwibXQuZ292LmJyIiwicGEuZ292LmJyIiwicGIuZ292LmJyIiwi''@;'; put 'put ''cGUuZ292LmJyIiwicGkuZ292LmJyIiwicHIuZ292LmJyIiwicmouZ292LmJyIiwicm4uZ292LmJyIiwicm8uZ292LmJyIiwicnIuZ292LmJyIiwicnMuZ292LmJyIiwic2MuZ292LmJyIiwic2UuZ292LmJyIiwic3AuZ292LmJyIiwidG8uZ292LmJyIiwiZ3J1LmJyIiwiaW1iLmJyIiwiaW5k''@;'; put 'put ''LmJyIiwiaW5mLmJyIiwiamFiLmJyIiwiamFtcGEuYnIiLCJqZGYuYnIiLCJqb2ludmlsbGUuYnIiLCJqb3IuYnIiLCJqdXMuYnIiLCJsZWcuYnIiLCJsZWwuYnIiLCJsb25kcmluYS5iciIsIm1hY2FwYS5iciIsIm1hY2Vpby5iciIsIm1hbmF1cy5iciIsIm1hcmluZ2EuYnIiLCJtYXQuYnIi''@;'; put 'put ''LCJtZWQuYnIiLCJtaWwuYnIiLCJtb3JlbmEuYnIiLCJtcC5iciIsIm11cy5iciIsIm5hdGFsLmJyIiwibmV0LmJyIiwibml0ZXJvaS5iciIsIioubm9tLmJyIiwibm90LmJyIiwibnRyLmJyIiwib2RvLmJyIiwib25nLmJyIiwib3JnLmJyIiwib3Nhc2NvLmJyIiwicGFsbWFzLmJyIiwicG9h''@;'; put 'put ''LmJyIiwicHBnLmJyIiwicHJvLmJyIiwicHNjLmJyIiwicHNpLmJyIiwicHZoLmJyIiwicXNsLmJyIiwicmFkaW8uYnIiLCJyZWMuYnIiLCJyZWNpZmUuYnIiLCJyaWJlaXJhby5iciIsInJpby5iciIsInJpb2JyYW5jby5iciIsInJpb3ByZXRvLmJyIiwic2FsdmFkb3IuYnIiLCJzYW1wYS5i''@;'; put 'put ''ciIsInNhbnRhbWFyaWEuYnIiLCJzYW50b2FuZHJlLmJyIiwic2FvYmVybmFyZG8uYnIiLCJzYW9nb25jYS5iciIsInNqYy5iciIsInNsZy5iciIsInNsei5iciIsInNvcm9jYWJhLmJyIiwic3J2LmJyIiwidGF4aS5iciIsInRjLmJyIiwidGVvLmJyIiwidGhlLmJyIiwidG1wLmJyIiwidHJk''@;'; put 'put ''LmJyIiwidHVyLmJyIiwidHYuYnIiLCJ1ZGkuYnIiLCJ2ZXQuYnIiLCJ2aXguYnIiLCJ2bG9nLmJyIiwid2lraS5iciIsInpsZy5iciIsImJzIiwiY29tLmJzIiwibmV0LmJzIiwib3JnLmJzIiwiZWR1LmJzIiwiZ292LmJzIiwiYnQiLCJjb20uYnQiLCJlZHUuYnQiLCJnb3YuYnQiLCJuZXQu''@;'; put 'put ''YnQiLCJvcmcuYnQiLCJidiIsImJ3IiwiY28uYnciLCJvcmcuYnciLCJieSIsImdvdi5ieSIsIm1pbC5ieSIsImNvbS5ieSIsIm9mLmJ5IiwiYnoiLCJjb20uYnoiLCJuZXQuYnoiLCJvcmcuYnoiLCJlZHUuYnoiLCJnb3YuYnoiLCJjYSIsImFiLmNhIiwiYmMuY2EiLCJtYi5jYSIsIm5iLmNh''@;'; put 'put ''IiwibmYuY2EiLCJubC5jYSIsIm5zLmNhIiwibnQuY2EiLCJudS5jYSIsIm9uLmNhIiwicGUuY2EiLCJxYy5jYSIsInNrLmNhIiwieWsuY2EiLCJnYy5jYSIsImNhdCIsImNjIiwiY2QiLCJnb3YuY2QiLCJjZiIsImNnIiwiY2giLCJjaSIsIm9yZy5jaSIsIm9yLmNpIiwiY29tLmNpIiwiY28u''@;'; put 'put ''Y2kiLCJlZHUuY2kiLCJlZC5jaSIsImFjLmNpIiwibmV0LmNpIiwiZ28uY2kiLCJhc3NvLmNpIiwiYVx4ZTlyb3BvcnQuY2kiLCJpbnQuY2kiLCJwcmVzc2UuY2kiLCJtZC5jaSIsImdvdXYuY2kiLCIqLmNrIiwiIXd3dy5jayIsImNsIiwiYXByZW5kZW1hcy5jbCIsImNvLmNsIiwiZ29iLmNs''@;'; put 'put ''IiwiZ292LmNsIiwibWlsLmNsIiwiY20iLCJjby5jbSIsImNvbS5jbSIsImdvdi5jbSIsIm5ldC5jbSIsImNuIiwiYWMuY24iLCJjb20uY24iLCJlZHUuY24iLCJnb3YuY24iLCJuZXQuY24iLCJvcmcuY24iLCJtaWwuY24iLCJcdTUxNmNcdTUzZjguY24iLCJcdTdmNTFcdTdlZGMuY24iLCJc''@;'; put 'put ''dTdkYjJcdTdkNjEuY24iLCJhaC5jbiIsImJqLmNuIiwiY3EuY24iLCJmai5jbiIsImdkLmNuIiwiZ3MuY24iLCJnei5jbiIsImd4LmNuIiwiaGEuY24iLCJoYi5jbiIsImhlLmNuIiwiaGkuY24iLCJobC5jbiIsImhuLmNuIiwiamwuY24iLCJqcy5jbiIsImp4LmNuIiwibG4uY24iLCJubS5j''@;'; put 'put ''biIsIm54LmNuIiwicWguY24iLCJzYy5jbiIsInNkLmNuIiwic2guY24iLCJzbi5jbiIsInN4LmNuIiwidGouY24iLCJ4ai5jbiIsInh6LmNuIiwieW4uY24iLCJ6ai5jbiIsImhrLmNuIiwibW8uY24iLCJ0dy5jbiIsImNvIiwiYXJ0cy5jbyIsImNvbS5jbyIsImVkdS5jbyIsImZpcm0uY28i''@;'; put 'put ''LCJnb3YuY28iLCJpbmZvLmNvIiwiaW50LmNvIiwibWlsLmNvIiwibmV0LmNvIiwibm9tLmNvIiwib3JnLmNvIiwicmVjLmNvIiwid2ViLmNvIiwiY29tIiwiY29vcCIsImNyIiwiYWMuY3IiLCJjby5jciIsImVkLmNyIiwiZmkuY3IiLCJnby5jciIsIm9yLmNyIiwic2EuY3IiLCJjdSIsImNv''@;'; put 'put ''bS5jdSIsImVkdS5jdSIsIm9yZy5jdSIsIm5ldC5jdSIsImdvdi5jdSIsImluZi5jdSIsImN2IiwiY3ciLCJjb20uY3ciLCJlZHUuY3ciLCJuZXQuY3ciLCJvcmcuY3ciLCJjeCIsImdvdi5jeCIsImN5IiwiYWMuY3kiLCJiaXouY3kiLCJjb20uY3kiLCJla2xvZ2VzLmN5IiwiZ292LmN5Iiwi''@;'; put 'put ''bHRkLmN5IiwibmFtZS5jeSIsIm5ldC5jeSIsIm9yZy5jeSIsInBhcmxpYW1lbnQuY3kiLCJwcmVzcy5jeSIsInByby5jeSIsInRtLmN5IiwiY3oiLCJkZSIsImRqIiwiZGsiLCJkbSIsImNvbS5kbSIsIm5ldC5kbSIsIm9yZy5kbSIsImVkdS5kbSIsImdvdi5kbSIsImRvIiwiYXJ0LmRvIiwi''@;'; put 'put ''Y29tLmRvIiwiZWR1LmRvIiwiZ29iLmRvIiwiZ292LmRvIiwibWlsLmRvIiwibmV0LmRvIiwib3JnLmRvIiwic2xkLmRvIiwid2ViLmRvIiwiZHoiLCJjb20uZHoiLCJvcmcuZHoiLCJuZXQuZHoiLCJnb3YuZHoiLCJlZHUuZHoiLCJhc3NvLmR6IiwicG9sLmR6IiwiYXJ0LmR6IiwiZWMiLCJj''@;'; put 'put ''b20uZWMiLCJpbmZvLmVjIiwibmV0LmVjIiwiZmluLmVjIiwiazEyLmVjIiwibWVkLmVjIiwicHJvLmVjIiwib3JnLmVjIiwiZWR1LmVjIiwiZ292LmVjIiwiZ29iLmVjIiwibWlsLmVjIiwiZWR1IiwiZWUiLCJlZHUuZWUiLCJnb3YuZWUiLCJyaWlrLmVlIiwibGliLmVlIiwibWVkLmVlIiwi''@;'; put 'put ''Y29tLmVlIiwicHJpLmVlIiwiYWlwLmVlIiwib3JnLmVlIiwiZmllLmVlIiwiZWciLCJjb20uZWciLCJlZHUuZWciLCJldW4uZWciLCJnb3YuZWciLCJtaWwuZWciLCJuYW1lLmVnIiwibmV0LmVnIiwib3JnLmVnIiwic2NpLmVnIiwiKi5lciIsImVzIiwiY29tLmVzIiwibm9tLmVzIiwib3Jn''@;'; put 'put ''LmVzIiwiZ29iLmVzIiwiZWR1LmVzIiwiZXQiLCJjb20uZXQiLCJnb3YuZXQiLCJvcmcuZXQiLCJlZHUuZXQiLCJiaXouZXQiLCJuYW1lLmV0IiwiaW5mby5ldCIsIm5ldC5ldCIsImV1IiwiZmkiLCJhbGFuZC5maSIsImZqIiwiYWMuZmoiLCJiaXouZmoiLCJjb20uZmoiLCJnb3YuZmoiLCJp''@;'; put 'put ''bmZvLmZqIiwibWlsLmZqIiwibmFtZS5maiIsIm5ldC5maiIsIm9yZy5maiIsInByby5maiIsIiouZmsiLCJmbSIsImZvIiwiZnIiLCJhc3NvLmZyIiwiY29tLmZyIiwiZ291di5mciIsIm5vbS5mciIsInByZC5mciIsInRtLmZyIiwiYWVyb3BvcnQuZnIiLCJhdm9jYXQuZnIiLCJhdm91ZXMu''@;'; put 'put ''ZnIiLCJjY2kuZnIiLCJjaGFtYmFncmkuZnIiLCJjaGlydXJnaWVucy1kZW50aXN0ZXMuZnIiLCJleHBlcnRzLWNvbXB0YWJsZXMuZnIiLCJnZW9tZXRyZS1leHBlcnQuZnIiLCJncmV0YS5mciIsImh1aXNzaWVyLWp1c3RpY2UuZnIiLCJtZWRlY2luLmZyIiwibm90YWlyZXMuZnIiLCJwaGFy''@;'; put 'put ''bWFjaWVuLmZyIiwicG9ydC5mciIsInZldGVyaW5haXJlLmZyIiwiZ2EiLCJnYiIsImdkIiwiZ2UiLCJjb20uZ2UiLCJlZHUuZ2UiLCJnb3YuZ2UiLCJvcmcuZ2UiLCJtaWwuZ2UiLCJuZXQuZ2UiLCJwdnQuZ2UiLCJnZiIsImdnIiwiY28uZ2ciLCJuZXQuZ2ciLCJvcmcuZ2ciLCJnaCIsImNv''@;'; put 'put ''bS5naCIsImVkdS5naCIsImdvdi5naCIsIm9yZy5naCIsIm1pbC5naCIsImdpIiwiY29tLmdpIiwibHRkLmdpIiwiZ292LmdpIiwibW9kLmdpIiwiZWR1LmdpIiwib3JnLmdpIiwiZ2wiLCJjby5nbCIsImNvbS5nbCIsImVkdS5nbCIsIm5ldC5nbCIsIm9yZy5nbCIsImdtIiwiZ24iLCJhYy5n''@;'; put 'put ''biIsImNvbS5nbiIsImVkdS5nbiIsImdvdi5nbiIsIm9yZy5nbiIsIm5ldC5nbiIsImdvdiIsImdwIiwiY29tLmdwIiwibmV0LmdwIiwibW9iaS5ncCIsImVkdS5ncCIsIm9yZy5ncCIsImFzc28uZ3AiLCJncSIsImdyIiwiY29tLmdyIiwiZWR1LmdyIiwibmV0LmdyIiwib3JnLmdyIiwiZ292''@;'; put 'put ''LmdyIiwiZ3MiLCJndCIsImNvbS5ndCIsImVkdS5ndCIsImdvYi5ndCIsImluZC5ndCIsIm1pbC5ndCIsIm5ldC5ndCIsIm9yZy5ndCIsImd1IiwiY29tLmd1IiwiZWR1Lmd1IiwiZ292Lmd1IiwiZ3VhbS5ndSIsImluZm8uZ3UiLCJuZXQuZ3UiLCJvcmcuZ3UiLCJ3ZWIuZ3UiLCJndyIsImd5''@;'; put 'put ''IiwiY28uZ3kiLCJjb20uZ3kiLCJlZHUuZ3kiLCJnb3YuZ3kiLCJuZXQuZ3kiLCJvcmcuZ3kiLCJoayIsImNvbS5oayIsImVkdS5oayIsImdvdi5oayIsImlkdi5oayIsIm5ldC5oayIsIm9yZy5oayIsIlx1NTE2Y1x1NTNmOC5oayIsIlx1NjU1OVx1ODBiMi5oayIsIlx1NjU0ZVx1ODBiMi5o''@;'; put 'put ''ayIsIlx1NjUzZlx1NWU5Yy5oayIsIlx1NTAwYlx1NGViYS5oayIsIlx1NGUyYVx1NGViYS5oayIsIlx1N2I4N1x1NGViYS5oayIsIlx1N2RiMlx1N2VkYy5oayIsIlx1N2Y1MVx1N2VkYy5oayIsIlx1N2VjNFx1N2U1NC5oayIsIlx1N2RiMlx1N2Q2MS5oayIsIlx1N2Y1MVx1N2Q2MS5oayIs''@;'; put 'put ''Ilx1N2VjNFx1N2VjNy5oayIsIlx1N2Q0NFx1N2U1NC5oayIsIlx1N2Q0NFx1N2VjNy5oayIsImhtIiwiaG4iLCJjb20uaG4iLCJlZHUuaG4iLCJvcmcuaG4iLCJuZXQuaG4iLCJtaWwuaG4iLCJnb2IuaG4iLCJociIsIml6LmhyIiwiZnJvbS5ociIsIm5hbWUuaHIiLCJjb20uaHIiLCJodCIs''@;'; put 'put ''ImNvbS5odCIsInNob3AuaHQiLCJmaXJtLmh0IiwiaW5mby5odCIsImFkdWx0Lmh0IiwibmV0Lmh0IiwicHJvLmh0Iiwib3JnLmh0IiwibWVkLmh0IiwiYXJ0Lmh0IiwiY29vcC5odCIsInBvbC5odCIsImFzc28uaHQiLCJlZHUuaHQiLCJyZWwuaHQiLCJnb3V2Lmh0IiwicGVyc28uaHQiLCJo''@;'; put 'put ''dSIsImNvLmh1IiwiaW5mby5odSIsIm9yZy5odSIsInByaXYuaHUiLCJzcG9ydC5odSIsInRtLmh1IiwiMjAwMC5odSIsImFncmFyLmh1IiwiYm9sdC5odSIsImNhc2luby5odSIsImNpdHkuaHUiLCJlcm90aWNhLmh1IiwiZXJvdGlrYS5odSIsImZpbG0uaHUiLCJmb3J1bS5odSIsImdhbWVz''@;'; put 'put ''Lmh1IiwiaG90ZWwuaHUiLCJpbmdhdGxhbi5odSIsImpvZ2Fzei5odSIsImtvbnl2ZWxvLmh1IiwibGFrYXMuaHUiLCJtZWRpYS5odSIsIm5ld3MuaHUiLCJyZWtsYW0uaHUiLCJzZXguaHUiLCJzaG9wLmh1Iiwic3VsaS5odSIsInN6ZXguaHUiLCJ0b3pzZGUuaHUiLCJ1dGF6YXMuaHUiLCJ2''@;'; put 'put ''aWRlby5odSIsImlkIiwiYWMuaWQiLCJiaXouaWQiLCJjby5pZCIsImRlc2EuaWQiLCJnby5pZCIsIm1pbC5pZCIsIm15LmlkIiwibmV0LmlkIiwib3IuaWQiLCJwb25wZXMuaWQiLCJzY2guaWQiLCJ3ZWIuaWQiLCJpZSIsImdvdi5pZSIsImlsIiwiYWMuaWwiLCJjby5pbCIsImdvdi5pbCIs''@;'; put 'put ''ImlkZi5pbCIsImsxMi5pbCIsIm11bmkuaWwiLCJuZXQuaWwiLCJvcmcuaWwiLCJpbSIsImFjLmltIiwiY28uaW0iLCJjb20uaW0iLCJsdGQuY28uaW0iLCJuZXQuaW0iLCJvcmcuaW0iLCJwbGMuY28uaW0iLCJ0dC5pbSIsInR2LmltIiwiaW4iLCJjby5pbiIsImZpcm0uaW4iLCJuZXQuaW4i''@;'; put 'put ''LCJvcmcuaW4iLCJnZW4uaW4iLCJpbmQuaW4iLCJuaWMuaW4iLCJhYy5pbiIsImVkdS5pbiIsInJlcy5pbiIsImdvdi5pbiIsIm1pbC5pbiIsImluZm8iLCJpbnQiLCJldS5pbnQiLCJpbyIsImNvbS5pbyIsImlxIiwiZ292LmlxIiwiZWR1LmlxIiwibWlsLmlxIiwiY29tLmlxIiwib3JnLmlx''@;'; put 'put ''IiwibmV0LmlxIiwiaXIiLCJhYy5pciIsImNvLmlyIiwiZ292LmlyIiwiaWQuaXIiLCJuZXQuaXIiLCJvcmcuaXIiLCJzY2guaXIiLCJcdTA2MjdcdTA2Y2NcdTA2MzFcdTA2MjdcdTA2NDYuaXIiLCJcdTA2MjdcdTA2NGFcdTA2MzFcdTA2MjdcdTA2NDYuaXIiLCJpcyIsIm5ldC5pcyIsImNv''@;'; put 'put ''bS5pcyIsImVkdS5pcyIsImdvdi5pcyIsIm9yZy5pcyIsImludC5pcyIsIml0IiwiZ292Lml0IiwiZWR1Lml0IiwiYWJyLml0IiwiYWJydXp6by5pdCIsImFvc3RhLXZhbGxleS5pdCIsImFvc3RhdmFsbGV5Lml0IiwiYmFzLml0IiwiYmFzaWxpY2F0YS5pdCIsImNhbC5pdCIsImNhbGFicmlh''@;'; put 'put ''Lml0IiwiY2FtLml0IiwiY2FtcGFuaWEuaXQiLCJlbWlsaWEtcm9tYWduYS5pdCIsImVtaWxpYXJvbWFnbmEuaXQiLCJlbXIuaXQiLCJmcml1bGktdi1naXVsaWEuaXQiLCJmcml1bGktdmUtZ2l1bGlhLml0IiwiZnJpdWxpLXZlZ2l1bGlhLml0IiwiZnJpdWxpLXZlbmV6aWEtZ2l1bGlhLml0''@;'; put 'put ''IiwiZnJpdWxpLXZlbmV6aWFnaXVsaWEuaXQiLCJmcml1bGktdmdpdWxpYS5pdCIsImZyaXVsaXYtZ2l1bGlhLml0IiwiZnJpdWxpdmUtZ2l1bGlhLml0IiwiZnJpdWxpdmVnaXVsaWEuaXQiLCJmcml1bGl2ZW5lemlhLWdpdWxpYS5pdCIsImZyaXVsaXZlbmV6aWFnaXVsaWEuaXQiLCJmcml1''@;'; put 'put ''bGl2Z2l1bGlhLml0IiwiZnZnLml0IiwibGF6Lml0IiwibGF6aW8uaXQiLCJsaWcuaXQiLCJsaWd1cmlhLml0IiwibG9tLml0IiwibG9tYmFyZGlhLml0IiwibG9tYmFyZHkuaXQiLCJsdWNhbmlhLml0IiwibWFyLml0IiwibWFyY2hlLml0IiwibW9sLml0IiwibW9saXNlLml0IiwicGllZG1v''@;'; put 'put ''bnQuaXQiLCJwaWVtb250ZS5pdCIsInBtbi5pdCIsInB1Zy5pdCIsInB1Z2xpYS5pdCIsInNhci5pdCIsInNhcmRlZ25hLml0Iiwic2FyZGluaWEuaXQiLCJzaWMuaXQiLCJzaWNpbGlhLml0Iiwic2ljaWx5Lml0IiwidGFhLml0IiwidG9zLml0IiwidG9zY2FuYS5pdCIsInRyZW50aW4tc3Vk''@;'; put 'put ''LXRpcm9sLml0IiwidHJlbnRpbi1zXHhmY2QtdGlyb2wuaXQiLCJ0cmVudGluLXN1ZHRpcm9sLml0IiwidHJlbnRpbi1zXHhmY2R0aXJvbC5pdCIsInRyZW50aW4tc3VlZC10aXJvbC5pdCIsInRyZW50aW4tc3VlZHRpcm9sLml0IiwidHJlbnRpbm8tYS1hZGlnZS5pdCIsInRyZW50aW5vLWFh''@;'; put 'put ''ZGlnZS5pdCIsInRyZW50aW5vLWFsdG8tYWRpZ2UuaXQiLCJ0cmVudGluby1hbHRvYWRpZ2UuaXQiLCJ0cmVudGluby1zLXRpcm9sLml0IiwidHJlbnRpbm8tc3Rpcm9sLml0IiwidHJlbnRpbm8tc3VkLXRpcm9sLml0IiwidHJlbnRpbm8tc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbm8tc3Vk''@;'; put 'put ''dGlyb2wuaXQiLCJ0cmVudGluby1zXHhmY2R0aXJvbC5pdCIsInRyZW50aW5vLXN1ZWQtdGlyb2wuaXQiLCJ0cmVudGluby1zdWVkdGlyb2wuaXQiLCJ0cmVudGluby5pdCIsInRyZW50aW5vYS1hZGlnZS5pdCIsInRyZW50aW5vYWFkaWdlLml0IiwidHJlbnRpbm9hbHRvLWFkaWdlLml0Iiwi''@;'; put 'put ''dHJlbnRpbm9hbHRvYWRpZ2UuaXQiLCJ0cmVudGlub3MtdGlyb2wuaXQiLCJ0cmVudGlub3N0aXJvbC5pdCIsInRyZW50aW5vc3VkLXRpcm9sLml0IiwidHJlbnRpbm9zXHhmY2QtdGlyb2wuaXQiLCJ0cmVudGlub3N1ZHRpcm9sLml0IiwidHJlbnRpbm9zXHhmY2R0aXJvbC5pdCIsInRyZW50''@;'; put 'put ''aW5vc3VlZC10aXJvbC5pdCIsInRyZW50aW5vc3VlZHRpcm9sLml0IiwidHJlbnRpbnN1ZC10aXJvbC5pdCIsInRyZW50aW5zXHhmY2QtdGlyb2wuaXQiLCJ0cmVudGluc3VkdGlyb2wuaXQiLCJ0cmVudGluc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluc3VlZC10aXJvbC5pdCIsInRyZW50aW5z''@;'; put 'put ''dWVkdGlyb2wuaXQiLCJ0dXNjYW55Lml0IiwidW1iLml0IiwidW1icmlhLml0IiwidmFsLWQtYW9zdGEuaXQiLCJ2YWwtZGFvc3RhLml0IiwidmFsZC1hb3N0YS5pdCIsInZhbGRhb3N0YS5pdCIsInZhbGxlLWFvc3RhLml0IiwidmFsbGUtZC1hb3N0YS5pdCIsInZhbGxlLWRhb3N0YS5pdCIs''@;'; put 'put ''InZhbGxlYW9zdGEuaXQiLCJ2YWxsZWQtYW9zdGEuaXQiLCJ2YWxsZWRhb3N0YS5pdCIsInZhbGxlZS1hb3N0ZS5pdCIsInZhbGxceGU5ZS1hb3N0ZS5pdCIsInZhbGxlZS1kLWFvc3RlLml0IiwidmFsbFx4ZTllLWQtYW9zdGUuaXQiLCJ2YWxsZWVhb3N0ZS5pdCIsInZhbGxceGU5ZWFvc3Rl''@;'; put 'put ''Lml0IiwidmFsbGVlZGFvc3RlLml0IiwidmFsbFx4ZTllZGFvc3RlLml0IiwidmFvLml0IiwidmRhLml0IiwidmVuLml0IiwidmVuZXRvLml0IiwiYWcuaXQiLCJhZ3JpZ2VudG8uaXQiLCJhbC5pdCIsImFsZXNzYW5kcmlhLml0IiwiYWx0by1hZGlnZS5pdCIsImFsdG9hZGlnZS5pdCIsImFu''@;'; put 'put ''Lml0IiwiYW5jb25hLml0IiwiYW5kcmlhLWJhcmxldHRhLXRyYW5pLml0IiwiYW5kcmlhLXRyYW5pLWJhcmxldHRhLml0IiwiYW5kcmlhYmFybGV0dGF0cmFuaS5pdCIsImFuZHJpYXRyYW5pYmFybGV0dGEuaXQiLCJhby5pdCIsImFvc3RhLml0IiwiYW9zdGUuaXQiLCJhcC5pdCIsImFxLml0''@;'; put 'put ''IiwiYXF1aWxhLml0IiwiYXIuaXQiLCJhcmV6em8uaXQiLCJhc2NvbGktcGljZW5vLml0IiwiYXNjb2xpcGljZW5vLml0IiwiYXN0aS5pdCIsImF0Lml0IiwiYXYuaXQiLCJhdmVsbGluby5pdCIsImJhLml0IiwiYmFsc2FuLXN1ZHRpcm9sLml0IiwiYmFsc2FuLXNceGZjZHRpcm9sLml0Iiwi''@;'; put 'put ''YmFsc2FuLXN1ZWR0aXJvbC5pdCIsImJhbHNhbi5pdCIsImJhcmkuaXQiLCJiYXJsZXR0YS10cmFuaS1hbmRyaWEuaXQiLCJiYXJsZXR0YXRyYW5pYW5kcmlhLml0IiwiYmVsbHVuby5pdCIsImJlbmV2ZW50by5pdCIsImJlcmdhbW8uaXQiLCJiZy5pdCIsImJpLml0IiwiYmllbGxhLml0Iiwi''@;'; put 'put ''YmwuaXQiLCJibi5pdCIsImJvLml0IiwiYm9sb2duYS5pdCIsImJvbHphbm8tYWx0b2FkaWdlLml0IiwiYm9semFuby5pdCIsImJvemVuLXN1ZHRpcm9sLml0IiwiYm96ZW4tc1x4ZmNkdGlyb2wuaXQiLCJib3plbi1zdWVkdGlyb2wuaXQiLCJib3plbi5pdCIsImJyLml0IiwiYnJlc2NpYS5p''@;'; put 'put ''dCIsImJyaW5kaXNpLml0IiwiYnMuaXQiLCJidC5pdCIsImJ1bHNhbi1zdWR0aXJvbC5pdCIsImJ1bHNhbi1zXHhmY2R0aXJvbC5pdCIsImJ1bHNhbi1zdWVkdGlyb2wuaXQiLCJidWxzYW4uaXQiLCJiei5pdCIsImNhLml0IiwiY2FnbGlhcmkuaXQiLCJjYWx0YW5pc3NldHRhLml0IiwiY2Ft''@;'; put 'put ''cGlkYW5vLW1lZGlvLml0IiwiY2FtcGlkYW5vbWVkaW8uaXQiLCJjYW1wb2Jhc3NvLml0IiwiY2FyYm9uaWEtaWdsZXNpYXMuaXQiLCJjYXJib25pYWlnbGVzaWFzLml0IiwiY2FycmFyYS1tYXNzYS5pdCIsImNhcnJhcmFtYXNzYS5pdCIsImNhc2VydGEuaXQiLCJjYXRhbmlhLml0IiwiY2F0''@;'; put 'put ''YW56YXJvLml0IiwiY2IuaXQiLCJjZS5pdCIsImNlc2VuYS1mb3JsaS5pdCIsImNlc2VuYS1mb3JsXHhlYy5pdCIsImNlc2VuYWZvcmxpLml0IiwiY2VzZW5hZm9ybFx4ZWMuaXQiLCJjaC5pdCIsImNoaWV0aS5pdCIsImNpLml0IiwiY2wuaXQiLCJjbi5pdCIsImNvLml0IiwiY29tby5pdCIs''@;'; put 'put ''ImNvc2VuemEuaXQiLCJjci5pdCIsImNyZW1vbmEuaXQiLCJjcm90b25lLml0IiwiY3MuaXQiLCJjdC5pdCIsImN1bmVvLml0IiwiY3ouaXQiLCJkZWxsLW9nbGlhc3RyYS5pdCIsImRlbGxvZ2xpYXN0cmEuaXQiLCJlbi5pdCIsImVubmEuaXQiLCJmYy5pdCIsImZlLml0IiwiZmVybW8uaXQi''@;'; put 'put ''LCJmZXJyYXJhLml0IiwiZmcuaXQiLCJmaS5pdCIsImZpcmVuemUuaXQiLCJmbG9yZW5jZS5pdCIsImZtLml0IiwiZm9nZ2lhLml0IiwiZm9ybGktY2VzZW5hLml0IiwiZm9ybFx4ZWMtY2VzZW5hLml0IiwiZm9ybGljZXNlbmEuaXQiLCJmb3JsXHhlY2Nlc2VuYS5pdCIsImZyLml0IiwiZnJv''@;'; put 'put ''c2lub25lLml0IiwiZ2UuaXQiLCJnZW5vYS5pdCIsImdlbm92YS5pdCIsImdvLml0IiwiZ29yaXppYS5pdCIsImdyLml0IiwiZ3Jvc3NldG8uaXQiLCJpZ2xlc2lhcy1jYXJib25pYS5pdCIsImlnbGVzaWFzY2FyYm9uaWEuaXQiLCJpbS5pdCIsImltcGVyaWEuaXQiLCJpcy5pdCIsImlzZXJu''@;'; put 'put ''aWEuaXQiLCJrci5pdCIsImxhLXNwZXppYS5pdCIsImxhcXVpbGEuaXQiLCJsYXNwZXppYS5pdCIsImxhdGluYS5pdCIsImxjLml0IiwibGUuaXQiLCJsZWNjZS5pdCIsImxlY2NvLml0IiwibGkuaXQiLCJsaXZvcm5vLml0IiwibG8uaXQiLCJsb2RpLml0IiwibHQuaXQiLCJsdS5pdCIsImx1''@;'; put 'put ''Y2NhLml0IiwibWFjZXJhdGEuaXQiLCJtYW50b3ZhLml0IiwibWFzc2EtY2FycmFyYS5pdCIsIm1hc3NhY2FycmFyYS5pdCIsIm1hdGVyYS5pdCIsIm1iLml0IiwibWMuaXQiLCJtZS5pdCIsIm1lZGlvLWNhbXBpZGFuby5pdCIsIm1lZGlvY2FtcGlkYW5vLml0IiwibWVzc2luYS5pdCIsIm1p''@;'; put 'put ''Lml0IiwibWlsYW4uaXQiLCJtaWxhbm8uaXQiLCJtbi5pdCIsIm1vLml0IiwibW9kZW5hLml0IiwibW9uemEtYnJpYW56YS5pdCIsIm1vbnphLWUtZGVsbGEtYnJpYW56YS5pdCIsIm1vbnphLml0IiwibW9uemFicmlhbnphLml0IiwibW9uemFlYnJpYW56YS5pdCIsIm1vbnphZWRlbGxhYnJp''@;'; put 'put ''YW56YS5pdCIsIm1zLml0IiwibXQuaXQiLCJuYS5pdCIsIm5hcGxlcy5pdCIsIm5hcG9saS5pdCIsIm5vLml0Iiwibm92YXJhLml0IiwibnUuaXQiLCJudW9yby5pdCIsIm9nLml0Iiwib2dsaWFzdHJhLml0Iiwib2xiaWEtdGVtcGlvLml0Iiwib2xiaWF0ZW1waW8uaXQiLCJvci5pdCIsIm9y''@;'; put 'put ''aXN0YW5vLml0Iiwib3QuaXQiLCJwYS5pdCIsInBhZG92YS5pdCIsInBhZHVhLml0IiwicGFsZXJtby5pdCIsInBhcm1hLml0IiwicGF2aWEuaXQiLCJwYy5pdCIsInBkLml0IiwicGUuaXQiLCJwZXJ1Z2lhLml0IiwicGVzYXJvLXVyYmluby5pdCIsInBlc2Fyb3VyYmluby5pdCIsInBlc2Nh''@;'; put 'put ''cmEuaXQiLCJwZy5pdCIsInBpLml0IiwicGlhY2VuemEuaXQiLCJwaXNhLml0IiwicGlzdG9pYS5pdCIsInBuLml0IiwicG8uaXQiLCJwb3JkZW5vbmUuaXQiLCJwb3RlbnphLml0IiwicHIuaXQiLCJwcmF0by5pdCIsInB0Lml0IiwicHUuaXQiLCJwdi5pdCIsInB6Lml0IiwicmEuaXQiLCJy''@;'; put 'put ''YWd1c2EuaXQiLCJyYXZlbm5hLml0IiwicmMuaXQiLCJyZS5pdCIsInJlZ2dpby1jYWxhYnJpYS5pdCIsInJlZ2dpby1lbWlsaWEuaXQiLCJyZWdnaW9jYWxhYnJpYS5pdCIsInJlZ2dpb2VtaWxpYS5pdCIsInJnLml0IiwicmkuaXQiLCJyaWV0aS5pdCIsInJpbWluaS5pdCIsInJtLml0Iiwi''@;'; put 'put ''cm4uaXQiLCJyby5pdCIsInJvbWEuaXQiLCJyb21lLml0Iiwicm92aWdvLml0Iiwic2EuaXQiLCJzYWxlcm5vLml0Iiwic2Fzc2FyaS5pdCIsInNhdm9uYS5pdCIsInNpLml0Iiwic2llbmEuaXQiLCJzaXJhY3VzYS5pdCIsInNvLml0Iiwic29uZHJpby5pdCIsInNwLml0Iiwic3IuaXQiLCJz''@;'; put 'put ''cy5pdCIsInN1ZWR0aXJvbC5pdCIsInNceGZjZHRpcm9sLml0Iiwic3YuaXQiLCJ0YS5pdCIsInRhcmFudG8uaXQiLCJ0ZS5pdCIsInRlbXBpby1vbGJpYS5pdCIsInRlbXBpb29sYmlhLml0IiwidGVyYW1vLml0IiwidGVybmkuaXQiLCJ0bi5pdCIsInRvLml0IiwidG9yaW5vLml0IiwidHAu''@;'; put 'put ''aXQiLCJ0ci5pdCIsInRyYW5pLWFuZHJpYS1iYXJsZXR0YS5pdCIsInRyYW5pLWJhcmxldHRhLWFuZHJpYS5pdCIsInRyYW5pYW5kcmlhYmFybGV0dGEuaXQiLCJ0cmFuaWJhcmxldHRhYW5kcmlhLml0IiwidHJhcGFuaS5pdCIsInRyZW50by5pdCIsInRyZXZpc28uaXQiLCJ0cmllc3RlLml0''@;'; put 'put ''IiwidHMuaXQiLCJ0dXJpbi5pdCIsInR2Lml0IiwidWQuaXQiLCJ1ZGluZS5pdCIsInVyYmluby1wZXNhcm8uaXQiLCJ1cmJpbm9wZXNhcm8uaXQiLCJ2YS5pdCIsInZhcmVzZS5pdCIsInZiLml0IiwidmMuaXQiLCJ2ZS5pdCIsInZlbmV6aWEuaXQiLCJ2ZW5pY2UuaXQiLCJ2ZXJiYW5pYS5p''@;'; put 'put ''dCIsInZlcmNlbGxpLml0IiwidmVyb25hLml0IiwidmkuaXQiLCJ2aWJvLXZhbGVudGlhLml0Iiwidmlib3ZhbGVudGlhLml0IiwidmljZW56YS5pdCIsInZpdGVyYm8uaXQiLCJ2ci5pdCIsInZzLml0IiwidnQuaXQiLCJ2di5pdCIsImplIiwiY28uamUiLCJuZXQuamUiLCJvcmcuamUiLCIq''@;'; put 'put ''LmptIiwiam8iLCJjb20uam8iLCJvcmcuam8iLCJuZXQuam8iLCJlZHUuam8iLCJzY2guam8iLCJnb3Yuam8iLCJtaWwuam8iLCJuYW1lLmpvIiwiam9icyIsImpwIiwiYWMuanAiLCJhZC5qcCIsImNvLmpwIiwiZWQuanAiLCJnby5qcCIsImdyLmpwIiwibGcuanAiLCJuZS5qcCIsIm9yLmpw''@;'; put 'put ''IiwiYWljaGkuanAiLCJha2l0YS5qcCIsImFvbW9yaS5qcCIsImNoaWJhLmpwIiwiZWhpbWUuanAiLCJmdWt1aS5qcCIsImZ1a3Vva2EuanAiLCJmdWt1c2hpbWEuanAiLCJnaWZ1LmpwIiwiZ3VubWEuanAiLCJoaXJvc2hpbWEuanAiLCJob2trYWlkby5qcCIsImh5b2dvLmpwIiwiaWJhcmFr''@;'; put 'put ''aS5qcCIsImlzaGlrYXdhLmpwIiwiaXdhdGUuanAiLCJrYWdhd2EuanAiLCJrYWdvc2hpbWEuanAiLCJrYW5hZ2F3YS5qcCIsImtvY2hpLmpwIiwia3VtYW1vdG8uanAiLCJreW90by5qcCIsIm1pZS5qcCIsIm1peWFnaS5qcCIsIm1peWF6YWtpLmpwIiwibmFnYW5vLmpwIiwibmFnYXNha2ku''@;'; put 'put ''anAiLCJuYXJhLmpwIiwibmlpZ2F0YS5qcCIsIm9pdGEuanAiLCJva2F5YW1hLmpwIiwib2tpbmF3YS5qcCIsIm9zYWthLmpwIiwic2FnYS5qcCIsInNhaXRhbWEuanAiLCJzaGlnYS5qcCIsInNoaW1hbmUuanAiLCJzaGl6dW9rYS5qcCIsInRvY2hpZ2kuanAiLCJ0b2t1c2hpbWEuanAiLCJ0''@;'; put 'put ''b2t5by5qcCIsInRvdHRvcmkuanAiLCJ0b3lhbWEuanAiLCJ3YWtheWFtYS5qcCIsInlhbWFnYXRhLmpwIiwieWFtYWd1Y2hpLmpwIiwieWFtYW5hc2hpLmpwIiwiXHU2ODAzXHU2NzI4LmpwIiwiXHU2MTFiXHU3N2U1LmpwIiwiXHU2MTFiXHU1YTliLmpwIiwiXHU1MTc1XHU1ZWFiLmpwIiwi''@;'; put 'put ''XHU3MThhXHU2NzJjLmpwIiwiXHU4MzI4XHU1N2NlLmpwIiwiXHU1MzE3XHU2ZDc3XHU5MDUzLmpwIiwiXHU1MzQzXHU4NDQ5LmpwIiwiXHU1NDhjXHU2YjRjXHU1YzcxLmpwIiwiXHU5NTc3XHU1ZDBlLmpwIiwiXHU5NTc3XHU5MWNlLmpwIiwiXHU2NWIwXHU2ZjVmLmpwIiwiXHU5NzUyXHU2''@;'; put 'put ''OGVlLmpwIiwiXHU5NzU5XHU1Y2ExLmpwIiwiXHU2NzcxXHU0ZWFjLmpwIiwiXHU3N2YzXHU1ZGRkLmpwIiwiXHU1N2ZjXHU3Mzg5LmpwIiwiXHU0ZTA5XHU5MWNkLmpwIiwiXHU0ZWFjXHU5MGZkLmpwIiwiXHU0ZjUwXHU4Y2MwLmpwIiwiXHU1OTI3XHU1MjA2LmpwIiwiXHU1OTI3XHU5NjJh''@;'; put 'put ''LmpwIiwiXHU1OTQ4XHU4MjZmLmpwIiwiXHU1YmFlXHU1N2NlLmpwIiwiXHU1YmFlXHU1ZDBlLmpwIiwiXHU1YmNjXHU1YzcxLmpwIiwiXHU1YzcxXHU1M2UzLmpwIiwiXHU1YzcxXHU1ZjYyLmpwIiwiXHU1YzcxXHU2OGE4LmpwIiwiXHU1Y2E5XHU2MjRiLmpwIiwiXHU1YzkwXHU5NjFjLmpw''@;'; put 'put ''IiwiXHU1Y2ExXHU1YzcxLmpwIiwiXHU1Y2Y2XHU2ODM5LmpwIiwiXHU1ZTgzXHU1Y2Y2LmpwIiwiXHU1ZmIzXHU1Y2Y2LmpwIiwiXHU2Yzk2XHU3ZTA0LmpwIiwiXHU2ZWNiXHU4Y2MwLmpwIiwiXHU3OTVlXHU1OTQ4XHU1ZGRkLmpwIiwiXHU3OThmXHU0ZTk1LmpwIiwiXHU3OThmXHU1Y2Ex''@;'; put 'put ''LmpwIiwiXHU3OThmXHU1Y2Y2LmpwIiwiXHU3OWNiXHU3NTMwLmpwIiwiXHU3ZmE0XHU5OWFjLmpwIiwiXHU5OTk5XHU1ZGRkLmpwIiwiXHU5YWQ4XHU3N2U1LmpwIiwiXHU5Y2U1XHU1M2Q2LmpwIiwiXHU5ZTdmXHU1MTUwXHU1Y2Y2LmpwIiwiKi5rYXdhc2FraS5qcCIsIioua2l0YWt5dXNo''@;'; put 'put ''dS5qcCIsIioua29iZS5qcCIsIioubmFnb3lhLmpwIiwiKi5zYXBwb3JvLmpwIiwiKi5zZW5kYWkuanAiLCIqLnlva29oYW1hLmpwIiwiIWNpdHkua2F3YXNha2kuanAiLCIhY2l0eS5raXRha3l1c2h1LmpwIiwiIWNpdHkua29iZS5qcCIsIiFjaXR5Lm5hZ295YS5qcCIsIiFjaXR5LnNhcHBv''@;'; put 'put ''cm8uanAiLCIhY2l0eS5zZW5kYWkuanAiLCIhY2l0eS55b2tvaGFtYS5qcCIsImFpc2FpLmFpY2hpLmpwIiwiYW1hLmFpY2hpLmpwIiwiYW5qby5haWNoaS5qcCIsImFzdWtlLmFpY2hpLmpwIiwiY2hpcnl1LmFpY2hpLmpwIiwiY2hpdGEuYWljaGkuanAiLCJmdXNvLmFpY2hpLmpwIiwiZ2Ft''@;'; put 'put ''YWdvcmkuYWljaGkuanAiLCJoYW5kYS5haWNoaS5qcCIsImhhenUuYWljaGkuanAiLCJoZWtpbmFuLmFpY2hpLmpwIiwiaGlnYXNoaXVyYS5haWNoaS5qcCIsImljaGlub21peWEuYWljaGkuanAiLCJpbmF6YXdhLmFpY2hpLmpwIiwiaW51eWFtYS5haWNoaS5qcCIsImlzc2hpa2kuYWljaGku''@;'; put 'put ''anAiLCJpd2FrdXJhLmFpY2hpLmpwIiwia2FuaWUuYWljaGkuanAiLCJrYXJpeWEuYWljaGkuanAiLCJrYXN1Z2FpLmFpY2hpLmpwIiwia2lyYS5haWNoaS5qcCIsImtpeW9zdS5haWNoaS5qcCIsImtvbWFraS5haWNoaS5qcCIsImtvbmFuLmFpY2hpLmpwIiwia290YS5haWNoaS5qcCIsIm1p''@;'; put 'put ''aGFtYS5haWNoaS5qcCIsIm1peW9zaGkuYWljaGkuanAiLCJuaXNoaW8uYWljaGkuanAiLCJuaXNzaGluLmFpY2hpLmpwIiwib2J1LmFpY2hpLmpwIiwib2d1Y2hpLmFpY2hpLmpwIiwib2hhcnUuYWljaGkuanAiLCJva2F6YWtpLmFpY2hpLmpwIiwib3dhcmlhc2FoaS5haWNoaS5qcCIsInNl''@;'; put 'put ''dG8uYWljaGkuanAiLCJzaGlrYXRzdS5haWNoaS5qcCIsInNoaW5zaGlyby5haWNoaS5qcCIsInNoaXRhcmEuYWljaGkuanAiLCJ0YWhhcmEuYWljaGkuanAiLCJ0YWthaGFtYS5haWNoaS5qcCIsInRvYmlzaGltYS5haWNoaS5qcCIsInRvZWkuYWljaGkuanAiLCJ0b2dvLmFpY2hpLmpwIiwi''@;'; put 'put ''dG9rYWkuYWljaGkuanAiLCJ0b2tvbmFtZS5haWNoaS5qcCIsInRveW9ha2UuYWljaGkuanAiLCJ0b3lvaGFzaGkuYWljaGkuanAiLCJ0b3lva2F3YS5haWNoaS5qcCIsInRveW9uZS5haWNoaS5qcCIsInRveW90YS5haWNoaS5qcCIsInRzdXNoaW1hLmFpY2hpLmpwIiwieWF0b21pLmFpY2hp''@;'; put 'put ''LmpwIiwiYWtpdGEuYWtpdGEuanAiLCJkYWlzZW4uYWtpdGEuanAiLCJmdWppc2F0by5ha2l0YS5qcCIsImdvam9tZS5ha2l0YS5qcCIsImhhY2hpcm9nYXRhLmFraXRhLmpwIiwiaGFwcG91LmFraXRhLmpwIiwiaGlnYXNoaW5hcnVzZS5ha2l0YS5qcCIsImhvbmpvLmFraXRhLmpwIiwiaG9u''@;'; put 'put ''anlvLmFraXRhLmpwIiwiaWthd2EuYWtpdGEuanAiLCJrYW1pa29hbmkuYWtpdGEuanAiLCJrYW1pb2thLmFraXRhLmpwIiwia2F0YWdhbWkuYWtpdGEuanAiLCJrYXp1bm8uYWtpdGEuanAiLCJraXRhYWtpdGEuYWtpdGEuanAiLCJrb3Nha2EuYWtpdGEuanAiLCJreW93YS5ha2l0YS5qcCIs''@;'; put 'put ''Im1pc2F0by5ha2l0YS5qcCIsIm1pdGFuZS5ha2l0YS5qcCIsIm1vcml5b3NoaS5ha2l0YS5qcCIsIm5pa2Foby5ha2l0YS5qcCIsIm5vc2hpcm8uYWtpdGEuanAiLCJvZGF0ZS5ha2l0YS5qcCIsIm9nYS5ha2l0YS5qcCIsIm9nYXRhLmFraXRhLmpwIiwic2VtYm9rdS5ha2l0YS5qcCIsInlv''@;'; put 'put ''a290ZS5ha2l0YS5qcCIsInl1cmlob25qby5ha2l0YS5qcCIsImFvbW9yaS5hb21vcmkuanAiLCJnb25vaGUuYW9tb3JpLmpwIiwiaGFjaGlub2hlLmFvbW9yaS5qcCIsImhhc2hpa2FtaS5hb21vcmkuanAiLCJoaXJhbmFpLmFvbW9yaS5qcCIsImhpcm9zYWtpLmFvbW9yaS5qcCIsIml0YXlh''@;'; put 'put ''bmFnaS5hb21vcmkuanAiLCJrdXJvaXNoaS5hb21vcmkuanAiLCJtaXNhd2EuYW9tb3JpLmpwIiwibXV0c3UuYW9tb3JpLmpwIiwibmFrYWRvbWFyaS5hb21vcmkuanAiLCJub2hlamkuYW9tb3JpLmpwIiwib2lyYXNlLmFvbW9yaS5qcCIsIm93YW5pLmFvbW9yaS5qcCIsInJva3Vub2hlLmFv''@;'; put 'put ''bW9yaS5qcCIsInNhbm5vaGUuYW9tb3JpLmpwIiwic2hpY2hpbm9oZS5hb21vcmkuanAiLCJzaGluZ28uYW9tb3JpLmpwIiwidGFra28uYW9tb3JpLmpwIiwidG93YWRhLmFvbW9yaS5qcCIsInRzdWdhcnUuYW9tb3JpLmpwIiwidHN1cnV0YS5hb21vcmkuanAiLCJhYmlrby5jaGliYS5qcCIs''@;'; put 'put ''ImFzYWhpLmNoaWJhLmpwIiwiY2hvbmFuLmNoaWJhLmpwIiwiY2hvc2VpLmNoaWJhLmpwIiwiY2hvc2hpLmNoaWJhLmpwIiwiY2h1by5jaGliYS5qcCIsImZ1bmFiYXNoaS5jaGliYS5qcCIsImZ1dHRzdS5jaGliYS5qcCIsImhhbmFtaWdhd2EuY2hpYmEuanAiLCJpY2hpaGFyYS5jaGliYS5q''@;'; put 'put ''cCIsImljaGlrYXdhLmNoaWJhLmpwIiwiaWNoaW5vbWl5YS5jaGliYS5qcCIsImluemFpLmNoaWJhLmpwIiwiaXN1bWkuY2hpYmEuanAiLCJrYW1hZ2F5YS5jaGliYS5qcCIsImthbW9nYXdhLmNoaWJhLmpwIiwia2FzaGl3YS5jaGliYS5qcCIsImthdG9yaS5jaGliYS5qcCIsImthdHN1dXJh''@;'; put 'put ''LmNoaWJhLmpwIiwia2ltaXRzdS5jaGliYS5qcCIsImtpc2FyYXp1LmNoaWJhLmpwIiwia296YWtpLmNoaWJhLmpwIiwia3VqdWt1cmkuY2hpYmEuanAiLCJreW9uYW4uY2hpYmEuanAiLCJtYXRzdWRvLmNoaWJhLmpwIiwibWlkb3JpLmNoaWJhLmpwIiwibWloYW1hLmNoaWJhLmpwIiwibWlu''@;'; put 'put ''YW1pYm9zby5jaGliYS5qcCIsIm1vYmFyYS5jaGliYS5qcCIsIm11dHN1emF3YS5jaGliYS5qcCIsIm5hZ2FyYS5jaGliYS5qcCIsIm5hZ2FyZXlhbWEuY2hpYmEuanAiLCJuYXJhc2hpbm8uY2hpYmEuanAiLCJuYXJpdGEuY2hpYmEuanAiLCJub2RhLmNoaWJhLmpwIiwib2FtaXNoaXJhc2F0''@;'; put 'put ''by5jaGliYS5qcCIsIm9taWdhd2EuY2hpYmEuanAiLCJvbmp1a3UuY2hpYmEuanAiLCJvdGFraS5jaGliYS5qcCIsInNha2FlLmNoaWJhLmpwIiwic2FrdXJhLmNoaWJhLmpwIiwic2hpbW9mdXNhLmNoaWJhLmpwIiwic2hpcmFrby5jaGliYS5qcCIsInNoaXJvaS5jaGliYS5qcCIsInNoaXN1''@;'; put 'put ''aS5jaGliYS5qcCIsInNvZGVnYXVyYS5jaGliYS5qcCIsInNvc2EuY2hpYmEuanAiLCJ0YWtvLmNoaWJhLmpwIiwidGF0ZXlhbWEuY2hpYmEuanAiLCJ0b2dhbmUuY2hpYmEuanAiLCJ0b2hub3Noby5jaGliYS5qcCIsInRvbWlzYXRvLmNoaWJhLmpwIiwidXJheWFzdS5jaGliYS5qcCIsInlh''@;'; put 'put ''Y2hpbWF0YS5jaGliYS5qcCIsInlhY2hpeW8uY2hpYmEuanAiLCJ5b2thaWNoaWJhLmNoaWJhLmpwIiwieW9rb3NoaWJhaGlrYXJpLmNoaWJhLmpwIiwieW90c3VrYWlkby5jaGliYS5qcCIsImFpbmFuLmVoaW1lLmpwIiwiaG9uYWkuZWhpbWUuanAiLCJpa2F0YS5laGltZS5qcCIsImltYWJh''@;'; put 'put ''cmkuZWhpbWUuanAiLCJpeW8uZWhpbWUuanAiLCJrYW1pamltYS5laGltZS5qcCIsImtpaG9rdS5laGltZS5qcCIsImt1bWFrb2dlbi5laGltZS5qcCIsIm1hc2FraS5laGltZS5qcCIsIm1hdHN1bm8uZWhpbWUuanAiLCJtYXRzdXlhbWEuZWhpbWUuanAiLCJuYW1pa2F0YS5laGltZS5qcCIs''@;'; put 'put ''Im5paWhhbWEuZWhpbWUuanAiLCJvenUuZWhpbWUuanAiLCJzYWlqby5laGltZS5qcCIsInNlaXlvLmVoaW1lLmpwIiwic2hpa29rdWNodW8uZWhpbWUuanAiLCJ0b2JlLmVoaW1lLmpwIiwidG9vbi5laGltZS5qcCIsInVjaGlrby5laGltZS5qcCIsInV3YWppbWEuZWhpbWUuanAiLCJ5YXdh''@;'; put 'put ''dGFoYW1hLmVoaW1lLmpwIiwiZWNoaXplbi5mdWt1aS5qcCIsImVpaGVpamkuZnVrdWkuanAiLCJmdWt1aS5mdWt1aS5qcCIsImlrZWRhLmZ1a3VpLmpwIiwia2F0c3V5YW1hLmZ1a3VpLmpwIiwibWloYW1hLmZ1a3VpLmpwIiwibWluYW1pZWNoaXplbi5mdWt1aS5qcCIsIm9iYW1hLmZ1a3Vp''@;'; put 'put ''LmpwIiwib2hpLmZ1a3VpLmpwIiwib25vLmZ1a3VpLmpwIiwic2FiYWUuZnVrdWkuanAiLCJzYWthaS5mdWt1aS5qcCIsInRha2FoYW1hLmZ1a3VpLmpwIiwidHN1cnVnYS5mdWt1aS5qcCIsIndha2FzYS5mdWt1aS5qcCIsImFzaGl5YS5mdWt1b2thLmpwIiwiYnV6ZW4uZnVrdW9rYS5qcCIs''@;'; put 'put ''ImNoaWt1Z28uZnVrdW9rYS5qcCIsImNoaWt1aG8uZnVrdW9rYS5qcCIsImNoaWt1am8uZnVrdW9rYS5qcCIsImNoaWt1c2hpbm8uZnVrdW9rYS5qcCIsImNoaWt1emVuLmZ1a3Vva2EuanAiLCJjaHVvLmZ1a3Vva2EuanAiLCJkYXphaWZ1LmZ1a3Vva2EuanAiLCJmdWt1Y2hpLmZ1a3Vva2Eu''@;'; put 'put ''anAiLCJoYWthdGEuZnVrdW9rYS5qcCIsImhpZ2FzaGkuZnVrdW9rYS5qcCIsImhpcm9rYXdhLmZ1a3Vva2EuanAiLCJoaXNheWFtYS5mdWt1b2thLmpwIiwiaWl6dWthLmZ1a3Vva2EuanAiLCJpbmF0c3VraS5mdWt1b2thLmpwIiwia2Foby5mdWt1b2thLmpwIiwia2FzdWdhLmZ1a3Vva2Eu''@;'; put 'put ''anAiLCJrYXN1eWEuZnVrdW9rYS5qcCIsImthd2FyYS5mdWt1b2thLmpwIiwia2Vpc2VuLmZ1a3Vva2EuanAiLCJrb2dhLmZ1a3Vva2EuanAiLCJrdXJhdGUuZnVrdW9rYS5qcCIsImt1cm9naS5mdWt1b2thLmpwIiwia3VydW1lLmZ1a3Vva2EuanAiLCJtaW5hbWkuZnVrdW9rYS5qcCIsIm1p''@;'; put 'put ''eWFrby5mdWt1b2thLmpwIiwibWl5YW1hLmZ1a3Vva2EuanAiLCJtaXlhd2FrYS5mdWt1b2thLmpwIiwibWl6dW1ha2kuZnVrdW9rYS5qcCIsIm11bmFrYXRhLmZ1a3Vva2EuanAiLCJuYWthZ2F3YS5mdWt1b2thLmpwIiwibmFrYW1hLmZ1a3Vva2EuanAiLCJuaXNoaS5mdWt1b2thLmpwIiwi''@;'; put 'put ''bm9nYXRhLmZ1a3Vva2EuanAiLCJvZ29yaS5mdWt1b2thLmpwIiwib2thZ2FraS5mdWt1b2thLmpwIiwib2thd2EuZnVrdW9rYS5qcCIsIm9raS5mdWt1b2thLmpwIiwib211dGEuZnVrdW9rYS5qcCIsIm9uZ2EuZnVrdW9rYS5qcCIsIm9ub2pvLmZ1a3Vva2EuanAiLCJvdG8uZnVrdW9rYS5q''@;'; put 'put ''cCIsInNhaWdhd2EuZnVrdW9rYS5qcCIsInNhc2FndXJpLmZ1a3Vva2EuanAiLCJzaGluZ3UuZnVrdW9rYS5qcCIsInNoaW55b3NoaXRvbWkuZnVrdW9rYS5qcCIsInNob25haS5mdWt1b2thLmpwIiwic29lZGEuZnVrdW9rYS5qcCIsInN1ZS5mdWt1b2thLmpwIiwidGFjaGlhcmFpLmZ1a3Vv''@;'; put 'put ''a2EuanAiLCJ0YWdhd2EuZnVrdW9rYS5qcCIsInRha2F0YS5mdWt1b2thLmpwIiwidG9oby5mdWt1b2thLmpwIiwidG95b3RzdS5mdWt1b2thLmpwIiwidHN1aWtpLmZ1a3Vva2EuanAiLCJ1a2loYS5mdWt1b2thLmpwIiwidW1pLmZ1a3Vva2EuanAiLCJ1c3VpLmZ1a3Vva2EuanAiLCJ5YW1h''@;'; put 'put ''ZGEuZnVrdW9rYS5qcCIsInlhbWUuZnVrdW9rYS5qcCIsInlhbmFnYXdhLmZ1a3Vva2EuanAiLCJ5dWt1aGFzaGkuZnVrdW9rYS5qcCIsImFpenViYW5nZS5mdWt1c2hpbWEuanAiLCJhaXp1bWlzYXRvLmZ1a3VzaGltYS5qcCIsImFpenV3YWthbWF0c3UuZnVrdXNoaW1hLmpwIiwiYXNha2F3''@;'; put 'put ''YS5mdWt1c2hpbWEuanAiLCJiYW5kYWkuZnVrdXNoaW1hLmpwIiwiZGF0ZS5mdWt1c2hpbWEuanAiLCJmdWt1c2hpbWEuZnVrdXNoaW1hLmpwIiwiZnVydWRvbm8uZnVrdXNoaW1hLmpwIiwiZnV0YWJhLmZ1a3VzaGltYS5qcCIsImhhbmF3YS5mdWt1c2hpbWEuanAiLCJoaWdhc2hpLmZ1a3Vz''@;'; put 'put ''aGltYS5qcCIsImhpcmF0YS5mdWt1c2hpbWEuanAiLCJoaXJvbm8uZnVrdXNoaW1hLmpwIiwiaWl0YXRlLmZ1a3VzaGltYS5qcCIsImluYXdhc2hpcm8uZnVrdXNoaW1hLmpwIiwiaXNoaWthd2EuZnVrdXNoaW1hLmpwIiwiaXdha2kuZnVrdXNoaW1hLmpwIiwiaXp1bWl6YWtpLmZ1a3VzaGlt''@;'; put 'put ''YS5qcCIsImthZ2FtaWlzaGkuZnVrdXNoaW1hLmpwIiwia2FuZXlhbWEuZnVrdXNoaW1hLmpwIiwia2F3YW1hdGEuZnVrdXNoaW1hLmpwIiwia2l0YWthdGEuZnVrdXNoaW1hLmpwIiwia2l0YXNoaW9iYXJhLmZ1a3VzaGltYS5qcCIsImtvb3JpLmZ1a3VzaGltYS5qcCIsImtvcml5YW1hLmZ1''@;'; put 'put ''a3VzaGltYS5qcCIsImt1bmltaS5mdWt1c2hpbWEuanAiLCJtaWhhcnUuZnVrdXNoaW1hLmpwIiwibWlzaGltYS5mdWt1c2hpbWEuanAiLCJuYW1pZS5mdWt1c2hpbWEuanAiLCJuYW5nby5mdWt1c2hpbWEuanAiLCJuaXNoaWFpenUuZnVrdXNoaW1hLmpwIiwibmlzaGlnby5mdWt1c2hpbWEu''@;'; put 'put ''anAiLCJva3VtYS5mdWt1c2hpbWEuanAiLCJvbW90ZWdvLmZ1a3VzaGltYS5qcCIsIm9uby5mdWt1c2hpbWEuanAiLCJvdGFtYS5mdWt1c2hpbWEuanAiLCJzYW1lZ2F3YS5mdWt1c2hpbWEuanAiLCJzaGltb2dvLmZ1a3VzaGltYS5qcCIsInNoaXJha2F3YS5mdWt1c2hpbWEuanAiLCJzaG93''@;'; put 'put ''YS5mdWt1c2hpbWEuanAiLCJzb21hLmZ1a3VzaGltYS5qcCIsInN1a2FnYXdhLmZ1a3VzaGltYS5qcCIsInRhaXNoaW4uZnVrdXNoaW1hLmpwIiwidGFtYWthd2EuZnVrdXNoaW1hLmpwIiwidGFuYWd1cmEuZnVrdXNoaW1hLmpwIiwidGVuZWkuZnVrdXNoaW1hLmpwIiwieWFidWtpLmZ1a3Vz''@;'; put 'put ''aGltYS5qcCIsInlhbWF0by5mdWt1c2hpbWEuanAiLCJ5YW1hdHN1cmkuZnVrdXNoaW1hLmpwIiwieWFuYWl6dS5mdWt1c2hpbWEuanAiLCJ5dWdhd2EuZnVrdXNoaW1hLmpwIiwiYW5wYWNoaS5naWZ1LmpwIiwiZW5hLmdpZnUuanAiLCJnaWZ1LmdpZnUuanAiLCJnaW5hbi5naWZ1LmpwIiwi''@;'; put 'put ''Z29kby5naWZ1LmpwIiwiZ3Vqby5naWZ1LmpwIiwiaGFzaGltYS5naWZ1LmpwIiwiaGljaGlzby5naWZ1LmpwIiwiaGlkYS5naWZ1LmpwIiwiaGlnYXNoaXNoaXJha2F3YS5naWZ1LmpwIiwiaWJpZ2F3YS5naWZ1LmpwIiwiaWtlZGEuZ2lmdS5qcCIsImtha2FtaWdhaGFyYS5naWZ1LmpwIiwi''@;'; put 'put ''a2FuaS5naWZ1LmpwIiwia2FzYWhhcmEuZ2lmdS5qcCIsImthc2FtYXRzdS5naWZ1LmpwIiwia2F3YXVlLmdpZnUuanAiLCJraXRhZ2F0YS5naWZ1LmpwIiwibWluby5naWZ1LmpwIiwibWlub2thbW8uZ2lmdS5qcCIsIm1pdGFrZS5naWZ1LmpwIiwibWl6dW5hbWkuZ2lmdS5qcCIsIm1vdG9z''@;'; put 'put ''dS5naWZ1LmpwIiwibmFrYXRzdWdhd2EuZ2lmdS5qcCIsIm9nYWtpLmdpZnUuanAiLCJzYWthaG9naS5naWZ1LmpwIiwic2VraS5naWZ1LmpwIiwic2VraWdhaGFyYS5naWZ1LmpwIiwic2hpcmFrYXdhLmdpZnUuanAiLCJ0YWppbWkuZ2lmdS5qcCIsInRha2F5YW1hLmdpZnUuanAiLCJ0YXJ1''@;'; put 'put ''aS5naWZ1LmpwIiwidG9raS5naWZ1LmpwIiwidG9taWthLmdpZnUuanAiLCJ3YW5vdWNoaS5naWZ1LmpwIiwieWFtYWdhdGEuZ2lmdS5qcCIsInlhb3RzdS5naWZ1LmpwIiwieW9yby5naWZ1LmpwIiwiYW5uYWthLmd1bm1hLmpwIiwiY2hpeW9kYS5ndW5tYS5qcCIsImZ1amlva2EuZ3VubWEu''@;'; put 'put ''anAiLCJoaWdhc2hpYWdhdHN1bWEuZ3VubWEuanAiLCJpc2VzYWtpLmd1bm1hLmpwIiwiaXRha3VyYS5ndW5tYS5qcCIsImthbm5hLmd1bm1hLmpwIiwia2FucmEuZ3VubWEuanAiLCJrYXRhc2hpbmEuZ3VubWEuanAiLCJrYXdhYmEuZ3VubWEuanAiLCJraXJ5dS5ndW5tYS5qcCIsImt1c2F0''@;'; put 'put ''c3UuZ3VubWEuanAiLCJtYWViYXNoaS5ndW5tYS5qcCIsIm1laXdhLmd1bm1hLmpwIiwibWlkb3JpLmd1bm1hLmpwIiwibWluYWthbWkuZ3VubWEuanAiLCJuYWdhbm9oYXJhLmd1bm1hLmpwIiwibmFrYW5vam8uZ3VubWEuanAiLCJuYW5tb2t1Lmd1bm1hLmpwIiwibnVtYXRhLmd1bm1hLmpw''@;'; put 'put ''Iiwib2l6dW1pLmd1bm1hLmpwIiwib3JhLmd1bm1hLmpwIiwib3RhLmd1bm1hLmpwIiwic2hpYnVrYXdhLmd1bm1hLmpwIiwic2hpbW9uaXRhLmd1bm1hLmpwIiwic2hpbnRvLmd1bm1hLmpwIiwic2hvd2EuZ3VubWEuanAiLCJ0YWthc2FraS5ndW5tYS5qcCIsInRha2F5YW1hLmd1bm1hLmpw''@;'; put 'put ''IiwidGFtYW11cmEuZ3VubWEuanAiLCJ0YXRlYmF5YXNoaS5ndW5tYS5qcCIsInRvbWlva2EuZ3VubWEuanAiLCJ0c3VraXlvbm8uZ3VubWEuanAiLCJ0c3VtYWdvaS5ndW5tYS5qcCIsInVlbm8uZ3VubWEuanAiLCJ5b3NoaW9rYS5ndW5tYS5qcCIsImFzYW1pbmFtaS5oaXJvc2hpbWEuanAi''@;'; put 'put ''LCJkYWl3YS5oaXJvc2hpbWEuanAiLCJldGFqaW1hLmhpcm9zaGltYS5qcCIsImZ1Y2h1Lmhpcm9zaGltYS5qcCIsImZ1a3V5YW1hLmhpcm9zaGltYS5qcCIsImhhdHN1a2FpY2hpLmhpcm9zaGltYS5qcCIsImhpZ2FzaGloaXJvc2hpbWEuaGlyb3NoaW1hLmpwIiwiaG9uZ28uaGlyb3NoaW1h''@;'; put 'put ''LmpwIiwiamluc2VraWtvZ2VuLmhpcm9zaGltYS5qcCIsImthaXRhLmhpcm9zaGltYS5qcCIsImt1aS5oaXJvc2hpbWEuanAiLCJrdW1hbm8uaGlyb3NoaW1hLmpwIiwia3VyZS5oaXJvc2hpbWEuanAiLCJtaWhhcmEuaGlyb3NoaW1hLmpwIiwibWl5b3NoaS5oaXJvc2hpbWEuanAiLCJuYWth''@;'; put 'put ''Lmhpcm9zaGltYS5qcCIsIm9ub21pY2hpLmhpcm9zaGltYS5qcCIsIm9zYWtpa2FtaWppbWEuaGlyb3NoaW1hLmpwIiwib3Rha2UuaGlyb3NoaW1hLmpwIiwic2FrYS5oaXJvc2hpbWEuanAiLCJzZXJhLmhpcm9zaGltYS5qcCIsInNlcmFuaXNoaS5oaXJvc2hpbWEuanAiLCJzaGluaWNoaS5o''@;'; put 'put ''aXJvc2hpbWEuanAiLCJzaG9iYXJhLmhpcm9zaGltYS5qcCIsInRha2VoYXJhLmhpcm9zaGltYS5qcCIsImFiYXNoaXJpLmhva2thaWRvLmpwIiwiYWJpcmEuaG9ra2FpZG8uanAiLCJhaWJldHN1Lmhva2thaWRvLmpwIiwiYWthYmlyYS5ob2trYWlkby5qcCIsImFra2VzaGkuaG9ra2FpZG8u''@;'; put 'put ''anAiLCJhc2FoaWthd2EuaG9ra2FpZG8uanAiLCJhc2hpYmV0c3UuaG9ra2FpZG8uanAiLCJhc2hvcm8uaG9ra2FpZG8uanAiLCJhc3NhYnUuaG9ra2FpZG8uanAiLCJhdHN1bWEuaG9ra2FpZG8uanAiLCJiaWJhaS5ob2trYWlkby5qcCIsImJpZWkuaG9ra2FpZG8uanAiLCJiaWZ1a2EuaG9r''@;'; put 'put ''a2FpZG8uanAiLCJiaWhvcm8uaG9ra2FpZG8uanAiLCJiaXJhdG9yaS5ob2trYWlkby5qcCIsImNoaXBwdWJldHN1Lmhva2thaWRvLmpwIiwiY2hpdG9zZS5ob2trYWlkby5qcCIsImRhdGUuaG9ra2FpZG8uanAiLCJlYmV0c3UuaG9ra2FpZG8uanAiLCJlbWJldHN1Lmhva2thaWRvLmpwIiwi''@;'; put 'put ''ZW5pd2EuaG9ra2FpZG8uanAiLCJlcmltby5ob2trYWlkby5qcCIsImVzYW4uaG9ra2FpZG8uanAiLCJlc2FzaGkuaG9ra2FpZG8uanAiLCJmdWthZ2F3YS5ob2trYWlkby5qcCIsImZ1a3VzaGltYS5ob2trYWlkby5qcCIsImZ1cmFuby5ob2trYWlkby5qcCIsImZ1cnViaXJhLmhva2thaWRv''@;'; put 'put ''LmpwIiwiaGFib3JvLmhva2thaWRvLmpwIiwiaGFrb2RhdGUuaG9ra2FpZG8uanAiLCJoYW1hdG9uYmV0c3UuaG9ra2FpZG8uanAiLCJoaWRha2EuaG9ra2FpZG8uanAiLCJoaWdhc2hpa2FndXJhLmhva2thaWRvLmpwIiwiaGlnYXNoaWthd2EuaG9ra2FpZG8uanAiLCJoaXJvby5ob2trYWlk''@;'; put 'put ''by5qcCIsImhva3VyeXUuaG9ra2FpZG8uanAiLCJob2t1dG8uaG9ra2FpZG8uanAiLCJob25iZXRzdS5ob2trYWlkby5qcCIsImhvcm9rYW5haS5ob2trYWlkby5qcCIsImhvcm9ub2JlLmhva2thaWRvLmpwIiwiaWtlZGEuaG9ra2FpZG8uanAiLCJpbWFrYW5lLmhva2thaWRvLmpwIiwiaXNo''@;'; put 'put ''aWthcmkuaG9ra2FpZG8uanAiLCJpd2FtaXphd2EuaG9ra2FpZG8uanAiLCJpd2FuYWkuaG9ra2FpZG8uanAiLCJrYW1pZnVyYW5vLmhva2thaWRvLmpwIiwia2FtaWthd2EuaG9ra2FpZG8uanAiLCJrYW1pc2hpaG9yby5ob2trYWlkby5qcCIsImthbWlzdW5hZ2F3YS5ob2trYWlkby5qcCIs''@;'; put 'put ''ImthbW9lbmFpLmhva2thaWRvLmpwIiwia2F5YWJlLmhva2thaWRvLmpwIiwia2VtYnVjaGkuaG9ra2FpZG8uanAiLCJraWtvbmFpLmhva2thaWRvLmpwIiwia2ltb2JldHN1Lmhva2thaWRvLmpwIiwia2l0YWhpcm9zaGltYS5ob2trYWlkby5qcCIsImtpdGFtaS5ob2trYWlkby5qcCIsImtp''@;'; put 'put ''eW9zYXRvLmhva2thaWRvLmpwIiwia29zaGltaXp1Lmhva2thaWRvLmpwIiwia3VubmVwcHUuaG9ra2FpZG8uanAiLCJrdXJpeWFtYS5ob2trYWlkby5qcCIsImt1cm9tYXRzdW5haS5ob2trYWlkby5qcCIsImt1c2hpcm8uaG9ra2FpZG8uanAiLCJrdXRjaGFuLmhva2thaWRvLmpwIiwia3lv''@;'; put 'put ''d2EuaG9ra2FpZG8uanAiLCJtYXNoaWtlLmhva2thaWRvLmpwIiwibWF0c3VtYWUuaG9ra2FpZG8uanAiLCJtaWthc2EuaG9ra2FpZG8uanAiLCJtaW5hbWlmdXJhbm8uaG9ra2FpZG8uanAiLCJtb21iZXRzdS5ob2trYWlkby5qcCIsIm1vc2V1c2hpLmhva2thaWRvLmpwIiwibXVrYXdhLmhv''@;'; put 'put ''a2thaWRvLmpwIiwibXVyb3Jhbi5ob2trYWlkby5qcCIsIm5haWUuaG9ra2FpZG8uanAiLCJuYWthZ2F3YS5ob2trYWlkby5qcCIsIm5ha2FzYXRzdW5haS5ob2trYWlkby5qcCIsIm5ha2F0b21iZXRzdS5ob2trYWlkby5qcCIsIm5hbmFlLmhva2thaWRvLmpwIiwibmFucG9yby5ob2trYWlk''@;'; put 'put ''by5qcCIsIm5heW9yby5ob2trYWlkby5qcCIsIm5lbXVyby5ob2trYWlkby5qcCIsIm5paWthcHB1Lmhva2thaWRvLmpwIiwibmlraS5ob2trYWlkby5qcCIsIm5pc2hpb2tvcHBlLmhva2thaWRvLmpwIiwibm9ib3JpYmV0c3UuaG9ra2FpZG8uanAiLCJudW1hdGEuaG9ra2FpZG8uanAiLCJv''@;'; put 'put ''YmloaXJvLmhva2thaWRvLmpwIiwib2JpcmEuaG9ra2FpZG8uanAiLCJva2V0by5ob2trYWlkby5qcCIsIm9rb3BwZS5ob2trYWlkby5qcCIsIm90YXJ1Lmhva2thaWRvLmpwIiwib3RvYmUuaG9ra2FpZG8uanAiLCJvdG9mdWtlLmhva2thaWRvLmpwIiwib3RvaW5lcHB1Lmhva2thaWRvLmpw''@;'; put 'put ''Iiwib3VtdS5ob2trYWlkby5qcCIsIm96b3JhLmhva2thaWRvLmpwIiwicGlwcHUuaG9ra2FpZG8uanAiLCJyYW5rb3NoaS5ob2trYWlkby5qcCIsInJlYnVuLmhva2thaWRvLmpwIiwicmlrdWJldHN1Lmhva2thaWRvLmpwIiwicmlzaGlyaS5ob2trYWlkby5qcCIsInJpc2hpcmlmdWppLmhv''@;'; put 'put ''a2thaWRvLmpwIiwic2Fyb21hLmhva2thaWRvLmpwIiwic2FydWZ1dHN1Lmhva2thaWRvLmpwIiwic2hha290YW4uaG9ra2FpZG8uanAiLCJzaGFyaS5ob2trYWlkby5qcCIsInNoaWJlY2hhLmhva2thaWRvLmpwIiwic2hpYmV0c3UuaG9ra2FpZG8uanAiLCJzaGlrYWJlLmhva2thaWRvLmpw''@;'; put 'put ''Iiwic2hpa2FvaS5ob2trYWlkby5qcCIsInNoaW1hbWFraS5ob2trYWlkby5qcCIsInNoaW1penUuaG9ra2FpZG8uanAiLCJzaGltb2thd2EuaG9ra2FpZG8uanAiLCJzaGluc2hpbm90c3UuaG9ra2FpZG8uanAiLCJzaGludG9rdS5ob2trYWlkby5qcCIsInNoaXJhbnVrYS5ob2trYWlkby5q''@;'; put 'put ''cCIsInNoaXJhb2kuaG9ra2FpZG8uanAiLCJzaGlyaXVjaGkuaG9ra2FpZG8uanAiLCJzb2JldHN1Lmhva2thaWRvLmpwIiwic3VuYWdhd2EuaG9ra2FpZG8uanAiLCJ0YWlraS5ob2trYWlkby5qcCIsInRha2FzdS5ob2trYWlkby5qcCIsInRha2lrYXdhLmhva2thaWRvLmpwIiwidGFraW5v''@;'; put 'put ''dWUuaG9ra2FpZG8uanAiLCJ0ZXNoaWthZ2EuaG9ra2FpZG8uanAiLCJ0b2JldHN1Lmhva2thaWRvLmpwIiwidG9obWEuaG9ra2FpZG8uanAiLCJ0b21ha29tYWkuaG9ra2FpZG8uanAiLCJ0b21hcmkuaG9ra2FpZG8uanAiLCJ0b3lhLmhva2thaWRvLmpwIiwidG95YWtvLmhva2thaWRvLmpw''@;'; put 'put ''IiwidG95b3RvbWkuaG9ra2FpZG8uanAiLCJ0b3lvdXJhLmhva2thaWRvLmpwIiwidHN1YmV0c3UuaG9ra2FpZG8uanAiLCJ0c3VraWdhdGEuaG9ra2FpZG8uanAiLCJ1cmFrYXdhLmhva2thaWRvLmpwIiwidXJhdXN1Lmhva2thaWRvLmpwIiwidXJ5dS5ob2trYWlkby5qcCIsInV0YXNoaW5h''@;'; put 'put ''aS5ob2trYWlkby5qcCIsIndha2thbmFpLmhva2thaWRvLmpwIiwid2Fzc2FtdS5ob2trYWlkby5qcCIsInlha3Vtby5ob2trYWlkby5qcCIsInlvaWNoaS5ob2trYWlkby5qcCIsImFpb2kuaHlvZ28uanAiLCJha2FzaGkuaHlvZ28uanAiLCJha28uaHlvZ28uanAiLCJhbWFnYXNha2kuaHlv''@;'; put 'put ''Z28uanAiLCJhb2dha2kuaHlvZ28uanAiLCJhc2Fnby5oeW9nby5qcCIsImFzaGl5YS5oeW9nby5qcCIsImF3YWppLmh5b2dvLmpwIiwiZnVrdXNha2kuaHlvZ28uanAiLCJnb3NoaWtpLmh5b2dvLmpwIiwiaGFyaW1hLmh5b2dvLmpwIiwiaGltZWppLmh5b2dvLmpwIiwiaWNoaWthd2EuaHlv''@;'; put 'put ''Z28uanAiLCJpbmFnYXdhLmh5b2dvLmpwIiwiaXRhbWkuaHlvZ28uanAiLCJrYWtvZ2F3YS5oeW9nby5qcCIsImthbWlnb3JpLmh5b2dvLmpwIiwia2FtaWthd2EuaHlvZ28uanAiLCJrYXNhaS5oeW9nby5qcCIsImthc3VnYS5oeW9nby5qcCIsImthd2FuaXNoaS5oeW9nby5qcCIsIm1pa2ku''@;'; put 'put ''aHlvZ28uanAiLCJtaW5hbWlhd2FqaS5oeW9nby5qcCIsIm5pc2hpbm9taXlhLmh5b2dvLmpwIiwibmlzaGl3YWtpLmh5b2dvLmpwIiwib25vLmh5b2dvLmpwIiwic2FuZGEuaHlvZ28uanAiLCJzYW5uYW4uaHlvZ28uanAiLCJzYXNheWFtYS5oeW9nby5qcCIsInNheW8uaHlvZ28uanAiLCJz''@;'; put 'put ''aGluZ3UuaHlvZ28uanAiLCJzaGlub25zZW4uaHlvZ28uanAiLCJzaGlzby5oeW9nby5qcCIsInN1bW90by5oeW9nby5qcCIsInRhaXNoaS5oeW9nby5qcCIsInRha2EuaHlvZ28uanAiLCJ0YWthcmF6dWthLmh5b2dvLmpwIiwidGFrYXNhZ28uaHlvZ28uanAiLCJ0YWtpbm8uaHlvZ28uanAi''@;'; put 'put ''LCJ0YW1iYS5oeW9nby5qcCIsInRhdHN1bm8uaHlvZ28uanAiLCJ0b3lvb2thLmh5b2dvLmpwIiwieWFidS5oeW9nby5qcCIsInlhc2hpcm8uaHlvZ28uanAiLCJ5b2thLmh5b2dvLmpwIiwieW9rYXdhLmh5b2dvLmpwIiwiYW1pLmliYXJha2kuanAiLCJhc2FoaS5pYmFyYWtpLmpwIiwiYmFu''@;'; put 'put ''ZG8uaWJhcmFraS5qcCIsImNoaWt1c2VpLmliYXJha2kuanAiLCJkYWlnby5pYmFyYWtpLmpwIiwiZnVqaXNoaXJvLmliYXJha2kuanAiLCJoaXRhY2hpLmliYXJha2kuanAiLCJoaXRhY2hpbmFrYS5pYmFyYWtpLmpwIiwiaGl0YWNoaW9taXlhLmliYXJha2kuanAiLCJoaXRhY2hpb3RhLmli''@;'; put 'put ''YXJha2kuanAiLCJpYmFyYWtpLmliYXJha2kuanAiLCJpbmEuaWJhcmFraS5qcCIsImluYXNoaWtpLmliYXJha2kuanAiLCJpdGFrby5pYmFyYWtpLmpwIiwiaXdhbWEuaWJhcmFraS5qcCIsImpvc28uaWJhcmFraS5qcCIsImthbWlzdS5pYmFyYWtpLmpwIiwia2FzYW1hLmliYXJha2kuanAi''@;'; put 'put ''LCJrYXNoaW1hLmliYXJha2kuanAiLCJrYXN1bWlnYXVyYS5pYmFyYWtpLmpwIiwia29nYS5pYmFyYWtpLmpwIiwibWloby5pYmFyYWtpLmpwIiwibWl0by5pYmFyYWtpLmpwIiwibW9yaXlhLmliYXJha2kuanAiLCJuYWthLmliYXJha2kuanAiLCJuYW1lZ2F0YS5pYmFyYWtpLmpwIiwib2Fy''@;'; put 'put ''YWkuaWJhcmFraS5qcCIsIm9nYXdhLmliYXJha2kuanAiLCJvbWl0YW1hLmliYXJha2kuanAiLCJyeXVnYXNha2kuaWJhcmFraS5qcCIsInNha2FpLmliYXJha2kuanAiLCJzYWt1cmFnYXdhLmliYXJha2kuanAiLCJzaGltb2RhdGUuaWJhcmFraS5qcCIsInNoaW1vdHN1bWEuaWJhcmFraS5q''@;'; put 'put ''cCIsInNoaXJvc2F0by5pYmFyYWtpLmpwIiwic293YS5pYmFyYWtpLmpwIiwic3VpZnUuaWJhcmFraS5qcCIsInRha2FoYWdpLmliYXJha2kuanAiLCJ0YW1hdHN1a3VyaS5pYmFyYWtpLmpwIiwidG9rYWkuaWJhcmFraS5qcCIsInRvbW9iZS5pYmFyYWtpLmpwIiwidG9uZS5pYmFyYWtpLmpw''@;'; put 'put ''IiwidG9yaWRlLmliYXJha2kuanAiLCJ0c3VjaGl1cmEuaWJhcmFraS5qcCIsInRzdWt1YmEuaWJhcmFraS5qcCIsInVjaGloYXJhLmliYXJha2kuanAiLCJ1c2hpa3UuaWJhcmFraS5qcCIsInlhY2hpeW8uaWJhcmFraS5qcCIsInlhbWFnYXRhLmliYXJha2kuanAiLCJ5YXdhcmEuaWJhcmFr''@;'; put 'put ''aS5qcCIsInl1a2kuaWJhcmFraS5qcCIsImFuYW1penUuaXNoaWthd2EuanAiLCJoYWt1aS5pc2hpa2F3YS5qcCIsImhha3VzYW4uaXNoaWthd2EuanAiLCJrYWdhLmlzaGlrYXdhLmpwIiwia2Fob2t1LmlzaGlrYXdhLmpwIiwia2FuYXphd2EuaXNoaWthd2EuanAiLCJrYXdha2l0YS5pc2hp''@;'; put 'put ''a2F3YS5qcCIsImtvbWF0c3UuaXNoaWthd2EuanAiLCJuYWthbm90by5pc2hpa2F3YS5qcCIsIm5hbmFvLmlzaGlrYXdhLmpwIiwibm9taS5pc2hpa2F3YS5qcCIsIm5vbm9pY2hpLmlzaGlrYXdhLmpwIiwibm90by5pc2hpa2F3YS5qcCIsInNoaWthLmlzaGlrYXdhLmpwIiwic3V6dS5pc2hp''@;'; put 'put ''a2F3YS5qcCIsInRzdWJhdGEuaXNoaWthd2EuanAiLCJ0c3VydWdpLmlzaGlrYXdhLmpwIiwidWNoaW5hZGEuaXNoaWthd2EuanAiLCJ3YWppbWEuaXNoaWthd2EuanAiLCJmdWRhaS5pd2F0ZS5qcCIsImZ1amlzYXdhLml3YXRlLmpwIiwiaGFuYW1ha2kuaXdhdGUuanAiLCJoaXJhaXp1bWku''@;'; put 'put ''aXdhdGUuanAiLCJoaXJvbm8uaXdhdGUuanAiLCJpY2hpbm9oZS5pd2F0ZS5qcCIsImljaGlub3Nla2kuaXdhdGUuanAiLCJpd2FpenVtaS5pd2F0ZS5qcCIsIml3YXRlLml3YXRlLmpwIiwiam9ib2ppLml3YXRlLmpwIiwia2FtYWlzaGkuaXdhdGUuanAiLCJrYW5lZ2FzYWtpLml3YXRlLmpw''@;'; put 'put ''Iiwia2FydW1haS5pd2F0ZS5qcCIsImthd2FpLml3YXRlLmpwIiwia2l0YWthbWkuaXdhdGUuanAiLCJrdWppLml3YXRlLmpwIiwia3Vub2hlLml3YXRlLmpwIiwia3V6dW1ha2kuaXdhdGUuanAiLCJtaXlha28uaXdhdGUuanAiLCJtaXp1c2F3YS5pd2F0ZS5qcCIsIm1vcmlva2EuaXdhdGUu''@;'; put 'put ''anAiLCJuaW5vaGUuaXdhdGUuanAiLCJub2RhLml3YXRlLmpwIiwib2Z1bmF0by5pd2F0ZS5qcCIsIm9zaHUuaXdhdGUuanAiLCJvdHN1Y2hpLml3YXRlLmpwIiwicmlrdXplbnRha2F0YS5pd2F0ZS5qcCIsInNoaXdhLml3YXRlLmpwIiwic2hpenVrdWlzaGkuaXdhdGUuanAiLCJzdW1pdGEu''@;'; put 'put ''aXdhdGUuanAiLCJ0YW5vaGF0YS5pd2F0ZS5qcCIsInRvbm8uaXdhdGUuanAiLCJ5YWhhYmEuaXdhdGUuanAiLCJ5YW1hZGEuaXdhdGUuanAiLCJheWFnYXdhLmthZ2F3YS5qcCIsImhpZ2FzaGlrYWdhd2Eua2FnYXdhLmpwIiwia2Fub25qaS5rYWdhd2EuanAiLCJrb3RvaGlyYS5rYWdhd2Eu''@;'; put 'put ''anAiLCJtYW5uby5rYWdhd2EuanAiLCJtYXJ1Z2FtZS5rYWdhd2EuanAiLCJtaXRveW8ua2FnYXdhLmpwIiwibmFvc2hpbWEua2FnYXdhLmpwIiwic2FudWtpLmthZ2F3YS5qcCIsInRhZG90c3Uua2FnYXdhLmpwIiwidGFrYW1hdHN1LmthZ2F3YS5qcCIsInRvbm9zaG8ua2FnYXdhLmpwIiwi''@;'; put 'put ''dWNoaW5vbWkua2FnYXdhLmpwIiwidXRhenUua2FnYXdhLmpwIiwiemVudHN1amkua2FnYXdhLmpwIiwiYWt1bmUua2Fnb3NoaW1hLmpwIiwiYW1hbWkua2Fnb3NoaW1hLmpwIiwiaGlva2kua2Fnb3NoaW1hLmpwIiwiaXNhLmthZ29zaGltYS5qcCIsImlzZW4ua2Fnb3NoaW1hLmpwIiwiaXp1''@;'; put 'put ''bWkua2Fnb3NoaW1hLmpwIiwia2Fnb3NoaW1hLmthZ29zaGltYS5qcCIsImthbm95YS5rYWdvc2hpbWEuanAiLCJrYXdhbmFiZS5rYWdvc2hpbWEuanAiLCJraW5rby5rYWdvc2hpbWEuanAiLCJrb3V5YW1hLmthZ29zaGltYS5qcCIsIm1ha3VyYXpha2kua2Fnb3NoaW1hLmpwIiwibWF0c3Vt''@;'; put 'put ''b3RvLmthZ29zaGltYS5qcCIsIm1pbmFtaXRhbmUua2Fnb3NoaW1hLmpwIiwibmFrYXRhbmUua2Fnb3NoaW1hLmpwIiwibmlzaGlub29tb3RlLmthZ29zaGltYS5qcCIsInNhdHN1bWFzZW5kYWkua2Fnb3NoaW1hLmpwIiwic29vLmthZ29zaGltYS5qcCIsInRhcnVtaXp1LmthZ29zaGltYS5q''@;'; put 'put ''cCIsInl1c3VpLmthZ29zaGltYS5qcCIsImFpa2F3YS5rYW5hZ2F3YS5qcCIsImF0c3VnaS5rYW5hZ2F3YS5qcCIsImF5YXNlLmthbmFnYXdhLmpwIiwiY2hpZ2FzYWtpLmthbmFnYXdhLmpwIiwiZWJpbmEua2FuYWdhd2EuanAiLCJmdWppc2F3YS5rYW5hZ2F3YS5qcCIsImhhZGFuby5rYW5h''@;'; put 'put ''Z2F3YS5qcCIsImhha29uZS5rYW5hZ2F3YS5qcCIsImhpcmF0c3VrYS5rYW5hZ2F3YS5qcCIsImlzZWhhcmEua2FuYWdhd2EuanAiLCJrYWlzZWkua2FuYWdhd2EuanAiLCJrYW1ha3VyYS5rYW5hZ2F3YS5qcCIsImtpeW9rYXdhLmthbmFnYXdhLmpwIiwibWF0c3VkYS5rYW5hZ2F3YS5qcCIs''@;'; put 'put ''Im1pbmFtaWFzaGlnYXJhLmthbmFnYXdhLmpwIiwibWl1cmEua2FuYWdhd2EuanAiLCJuYWthaS5rYW5hZ2F3YS5qcCIsIm5pbm9taXlhLmthbmFnYXdhLmpwIiwib2Rhd2FyYS5rYW5hZ2F3YS5qcCIsIm9pLmthbmFnYXdhLmpwIiwib2lzby5rYW5hZ2F3YS5qcCIsInNhZ2FtaWhhcmEua2Fu''@;'; put 'put ''YWdhd2EuanAiLCJzYW11a2F3YS5rYW5hZ2F3YS5qcCIsInRzdWt1aS5rYW5hZ2F3YS5qcCIsInlhbWFraXRhLmthbmFnYXdhLmpwIiwieWFtYXRvLmthbmFnYXdhLmpwIiwieW9rb3N1a2Eua2FuYWdhd2EuanAiLCJ5dWdhd2FyYS5rYW5hZ2F3YS5qcCIsInphbWEua2FuYWdhd2EuanAiLCJ6''@;'; put 'put ''dXNoaS5rYW5hZ2F3YS5qcCIsImFraS5rb2NoaS5qcCIsImdlaXNlaS5rb2NoaS5qcCIsImhpZGFrYS5rb2NoaS5qcCIsImhpZ2FzaGl0c3Vuby5rb2NoaS5qcCIsImluby5rb2NoaS5qcCIsImthZ2FtaS5rb2NoaS5qcCIsImthbWkua29jaGkuanAiLCJraXRhZ2F3YS5rb2NoaS5qcCIsImtv''@;'; put 'put ''Y2hpLmtvY2hpLmpwIiwibWloYXJhLmtvY2hpLmpwIiwibW90b3lhbWEua29jaGkuanAiLCJtdXJvdG8ua29jaGkuanAiLCJuYWhhcmkua29jaGkuanAiLCJuYWthbXVyYS5rb2NoaS5qcCIsIm5hbmtva3Uua29jaGkuanAiLCJuaXNoaXRvc2Eua29jaGkuanAiLCJuaXlvZG9nYXdhLmtvY2hp''@;'; put 'put ''LmpwIiwib2NoaS5rb2NoaS5qcCIsIm9rYXdhLmtvY2hpLmpwIiwib3RveW8ua29jaGkuanAiLCJvdHN1a2kua29jaGkuanAiLCJzYWthd2Eua29jaGkuanAiLCJzdWt1bW8ua29jaGkuanAiLCJzdXNha2kua29jaGkuanAiLCJ0b3NhLmtvY2hpLmpwIiwidG9zYXNoaW1penUua29jaGkuanAi''@;'; put 'put ''LCJ0b3lvLmtvY2hpLmpwIiwidHN1bm8ua29jaGkuanAiLCJ1bWFqaS5rb2NoaS5qcCIsInlhc3VkYS5rb2NoaS5qcCIsInl1c3VoYXJhLmtvY2hpLmpwIiwiYW1ha3VzYS5rdW1hbW90by5qcCIsImFyYW8ua3VtYW1vdG8uanAiLCJhc28ua3VtYW1vdG8uanAiLCJjaG95by5rdW1hbW90by5q''@;'; put 'put ''cCIsImd5b2t1dG8ua3VtYW1vdG8uanAiLCJrYW1pYW1ha3VzYS5rdW1hbW90by5qcCIsImtpa3VjaGkua3VtYW1vdG8uanAiLCJrdW1hbW90by5rdW1hbW90by5qcCIsIm1hc2hpa2kua3VtYW1vdG8uanAiLCJtaWZ1bmUua3VtYW1vdG8uanAiLCJtaW5hbWF0YS5rdW1hbW90by5qcCIsIm1p''@;'; put 'put ''bmFtaW9ndW5pLmt1bWFtb3RvLmpwIiwibmFnYXN1Lmt1bWFtb3RvLmpwIiwibmlzaGloYXJhLmt1bWFtb3RvLmpwIiwib2d1bmkua3VtYW1vdG8uanAiLCJvenUua3VtYW1vdG8uanAiLCJzdW1vdG8ua3VtYW1vdG8uanAiLCJ0YWthbW9yaS5rdW1hbW90by5qcCIsInVraS5rdW1hbW90by5q''@;'; put 'put ''cCIsInV0by5rdW1hbW90by5qcCIsInlhbWFnYS5rdW1hbW90by5qcCIsInlhbWF0by5rdW1hbW90by5qcCIsInlhdHN1c2hpcm8ua3VtYW1vdG8uanAiLCJheWFiZS5reW90by5qcCIsImZ1a3VjaGl5YW1hLmt5b3RvLmpwIiwiaGlnYXNoaXlhbWEua3lvdG8uanAiLCJpZGUua3lvdG8uanAi''@;'; put 'put ''LCJpbmUua3lvdG8uanAiLCJqb3lvLmt5b3RvLmpwIiwia2FtZW9rYS5reW90by5qcCIsImthbW8ua3lvdG8uanAiLCJraXRhLmt5b3RvLmpwIiwia2l6dS5reW90by5qcCIsImt1bWl5YW1hLmt5b3RvLmpwIiwia3lvdGFtYmEua3lvdG8uanAiLCJreW90YW5hYmUua3lvdG8uanAiLCJreW90''@;'; put 'put ''YW5nby5reW90by5qcCIsIm1haXp1cnUua3lvdG8uanAiLCJtaW5hbWkua3lvdG8uanAiLCJtaW5hbWl5YW1hc2hpcm8ua3lvdG8uanAiLCJtaXlhenUua3lvdG8uanAiLCJtdWtvLmt5b3RvLmpwIiwibmFnYW9rYWt5by5reW90by5qcCIsIm5ha2FneW8ua3lvdG8uanAiLCJuYW50YW4ua3lv''@;'; put 'put ''dG8uanAiLCJveWFtYXpha2kua3lvdG8uanAiLCJzYWt5by5reW90by5qcCIsInNlaWthLmt5b3RvLmpwIiwidGFuYWJlLmt5b3RvLmpwIiwidWppLmt5b3RvLmpwIiwidWppdGF3YXJhLmt5b3RvLmpwIiwid2F6dWthLmt5b3RvLmpwIiwieWFtYXNoaW5hLmt5b3RvLmpwIiwieWF3YXRhLmt5''@;'; put 'put ''b3RvLmpwIiwiYXNhaGkubWllLmpwIiwiaW5hYmUubWllLmpwIiwiaXNlLm1pZS5qcCIsImthbWV5YW1hLm1pZS5qcCIsImthd2Fnb2UubWllLmpwIiwia2loby5taWUuanAiLCJraXNvc2FraS5taWUuanAiLCJraXdhLm1pZS5qcCIsImtvbW9uby5taWUuanAiLCJrdW1hbm8ubWllLmpwIiwi''@;'; put 'put ''a3V3YW5hLm1pZS5qcCIsIm1hdHN1c2FrYS5taWUuanAiLCJtZWl3YS5taWUuanAiLCJtaWhhbWEubWllLmpwIiwibWluYW1paXNlLm1pZS5qcCIsIm1pc3VnaS5taWUuanAiLCJtaXlhbWEubWllLmpwIiwibmFiYXJpLm1pZS5qcCIsInNoaW1hLm1pZS5qcCIsInN1enVrYS5taWUuanAiLCJ0''@;'; put 'put ''YWRvLm1pZS5qcCIsInRhaWtpLm1pZS5qcCIsInRha2kubWllLmpwIiwidGFtYWtpLm1pZS5qcCIsInRvYmEubWllLmpwIiwidHN1Lm1pZS5qcCIsInVkb25vLm1pZS5qcCIsInVyZXNoaW5vLm1pZS5qcCIsIndhdGFyYWkubWllLmpwIiwieW9ra2FpY2hpLm1pZS5qcCIsImZ1cnVrYXdhLm1p''@;'; put 'put ''eWFnaS5qcCIsImhpZ2FzaGltYXRzdXNoaW1hLm1peWFnaS5qcCIsImlzaGlub21ha2kubWl5YWdpLmpwIiwiaXdhbnVtYS5taXlhZ2kuanAiLCJrYWt1ZGEubWl5YWdpLmpwIiwia2FtaS5taXlhZ2kuanAiLCJrYXdhc2FraS5taXlhZ2kuanAiLCJtYXJ1bW9yaS5taXlhZ2kuanAiLCJtYXRz''@;'; put 'put ''dXNoaW1hLm1peWFnaS5qcCIsIm1pbmFtaXNhbnJpa3UubWl5YWdpLmpwIiwibWlzYXRvLm1peWFnaS5qcCIsIm11cmF0YS5taXlhZ2kuanAiLCJuYXRvcmkubWl5YWdpLmpwIiwib2dhd2FyYS5taXlhZ2kuanAiLCJvaGlyYS5taXlhZ2kuanAiLCJvbmFnYXdhLm1peWFnaS5qcCIsIm9zYWtp''@;'; put 'put ''Lm1peWFnaS5qcCIsInJpZnUubWl5YWdpLmpwIiwic2VtaW5lLm1peWFnaS5qcCIsInNoaWJhdGEubWl5YWdpLmpwIiwic2hpY2hpa2FzaHVrdS5taXlhZ2kuanAiLCJzaGlrYW1hLm1peWFnaS5qcCIsInNoaW9nYW1hLm1peWFnaS5qcCIsInNoaXJvaXNoaS5taXlhZ2kuanAiLCJ0YWdham8u''@;'; put 'put ''bWl5YWdpLmpwIiwidGFpd2EubWl5YWdpLmpwIiwidG9tZS5taXlhZ2kuanAiLCJ0b21peWEubWl5YWdpLmpwIiwid2FrdXlhLm1peWFnaS5qcCIsIndhdGFyaS5taXlhZ2kuanAiLCJ5YW1hbW90by5taXlhZ2kuanAiLCJ6YW8ubWl5YWdpLmpwIiwiYXlhLm1peWF6YWtpLmpwIiwiZWJpbm8u''@;'; put 'put ''bWl5YXpha2kuanAiLCJnb2thc2UubWl5YXpha2kuanAiLCJoeXVnYS5taXlhemFraS5qcCIsImthZG9nYXdhLm1peWF6YWtpLmpwIiwia2F3YW1pbmFtaS5taXlhemFraS5qcCIsImtpam8ubWl5YXpha2kuanAiLCJraXRhZ2F3YS5taXlhemFraS5qcCIsImtpdGFrYXRhLm1peWF6YWtpLmpw''@;'; put 'put ''Iiwia2l0YXVyYS5taXlhemFraS5qcCIsImtvYmF5YXNoaS5taXlhemFraS5qcCIsImt1bml0b21pLm1peWF6YWtpLmpwIiwia3VzaGltYS5taXlhemFraS5qcCIsIm1pbWF0YS5taXlhemFraS5qcCIsIm1peWFrb25vam8ubWl5YXpha2kuanAiLCJtaXlhemFraS5taXlhemFraS5qcCIsIm1v''@;'; put 'put ''cm90c3VrYS5taXlhemFraS5qcCIsIm5pY2hpbmFuLm1peWF6YWtpLmpwIiwibmlzaGltZXJhLm1peWF6YWtpLmpwIiwibm9iZW9rYS5taXlhemFraS5qcCIsInNhaXRvLm1peWF6YWtpLmpwIiwic2hpaWJhLm1peWF6YWtpLmpwIiwic2hpbnRvbWkubWl5YXpha2kuanAiLCJ0YWthaGFydS5t''@;'; put 'put ''aXlhemFraS5qcCIsInRha2FuYWJlLm1peWF6YWtpLmpwIiwidGFrYXpha2kubWl5YXpha2kuanAiLCJ0c3Vuby5taXlhemFraS5qcCIsImFjaGkubmFnYW5vLmpwIiwiYWdlbWF0c3UubmFnYW5vLmpwIiwiYW5hbi5uYWdhbm8uanAiLCJhb2tpLm5hZ2Fuby5qcCIsImFzYWhpLm5hZ2Fuby5q''@;'; put 'put ''cCIsImF6dW1pbm8ubmFnYW5vLmpwIiwiY2hpa3Vob2t1Lm5hZ2Fuby5qcCIsImNoaWt1bWEubmFnYW5vLmpwIiwiY2hpbm8ubmFnYW5vLmpwIiwiZnVqaW1pLm5hZ2Fuby5qcCIsImhha3ViYS5uYWdhbm8uanAiLCJoYXJhLm5hZ2Fuby5qcCIsImhpcmF5YS5uYWdhbm8uanAiLCJpaWRhLm5h''@;'; put 'put ''Z2Fuby5qcCIsImlpamltYS5uYWdhbm8uanAiLCJpaXlhbWEubmFnYW5vLmpwIiwiaWl6dW5hLm5hZ2Fuby5qcCIsImlrZWRhLm5hZ2Fuby5qcCIsImlrdXNha2EubmFnYW5vLmpwIiwiaW5hLm5hZ2Fuby5qcCIsImthcnVpemF3YS5uYWdhbm8uanAiLCJrYXdha2FtaS5uYWdhbm8uanAiLCJr''@;'; put 'put ''aXNvLm5hZ2Fuby5qcCIsImtpc29mdWt1c2hpbWEubmFnYW5vLmpwIiwia2l0YWFpa2kubmFnYW5vLmpwIiwia29tYWdhbmUubmFnYW5vLmpwIiwia29tb3JvLm5hZ2Fuby5qcCIsIm1hdHN1a2F3YS5uYWdhbm8uanAiLCJtYXRzdW1vdG8ubmFnYW5vLmpwIiwibWlhc2EubmFnYW5vLmpwIiwi''@;'; put 'put ''bWluYW1pYWlraS5uYWdhbm8uanAiLCJtaW5hbWltYWtpLm5hZ2Fuby5qcCIsIm1pbmFtaW1pbm93YS5uYWdhbm8uanAiLCJtaW5vd2EubmFnYW5vLmpwIiwibWl5YWRhLm5hZ2Fuby5qcCIsIm1peW90YS5uYWdhbm8uanAiLCJtb2NoaXp1a2kubmFnYW5vLmpwIiwibmFnYW5vLm5hZ2Fuby5q''@;'; put 'put ''cCIsIm5hZ2F3YS5uYWdhbm8uanAiLCJuYWdpc28ubmFnYW5vLmpwIiwibmFrYWdhd2EubmFnYW5vLmpwIiwibmFrYW5vLm5hZ2Fuby5qcCIsIm5vemF3YW9uc2VuLm5hZ2Fuby5qcCIsIm9idXNlLm5hZ2Fuby5qcCIsIm9nYXdhLm5hZ2Fuby5qcCIsIm9rYXlhLm5hZ2Fuby5qcCIsIm9tYWNo''@;'; put 'put ''aS5uYWdhbm8uanAiLCJvbWkubmFnYW5vLmpwIiwib29rdXdhLm5hZ2Fuby5qcCIsIm9vc2hpa2EubmFnYW5vLmpwIiwib3Rha2kubmFnYW5vLmpwIiwib3RhcmkubmFnYW5vLmpwIiwic2FrYWUubmFnYW5vLmpwIiwic2FrYWtpLm5hZ2Fuby5qcCIsInNha3UubmFnYW5vLmpwIiwic2FrdWhv''@;'; put 'put ''Lm5hZ2Fuby5qcCIsInNoaW1vc3V3YS5uYWdhbm8uanAiLCJzaGluYW5vbWFjaGkubmFnYW5vLmpwIiwic2hpb2ppcmkubmFnYW5vLmpwIiwic3V3YS5uYWdhbm8uanAiLCJzdXpha2EubmFnYW5vLmpwIiwidGFrYWdpLm5hZ2Fuby5qcCIsInRha2Ftb3JpLm5hZ2Fuby5qcCIsInRha2F5YW1h''@;'; put 'put ''Lm5hZ2Fuby5qcCIsInRhdGVzaGluYS5uYWdhbm8uanAiLCJ0YXRzdW5vLm5hZ2Fuby5qcCIsInRvZ2FrdXNoaS5uYWdhbm8uanAiLCJ0b2d1cmEubmFnYW5vLmpwIiwidG9taS5uYWdhbm8uanAiLCJ1ZWRhLm5hZ2Fuby5qcCIsIndhZGEubmFnYW5vLmpwIiwieWFtYWdhdGEubmFnYW5vLmpw''@;'; put 'put ''IiwieWFtYW5vdWNoaS5uYWdhbm8uanAiLCJ5YXNha2EubmFnYW5vLmpwIiwieWFzdW9rYS5uYWdhbm8uanAiLCJjaGlqaXdhLm5hZ2FzYWtpLmpwIiwiZnV0c3UubmFnYXNha2kuanAiLCJnb3RvLm5hZ2FzYWtpLmpwIiwiaGFzYW1pLm5hZ2FzYWtpLmpwIiwiaGlyYWRvLm5hZ2FzYWtpLmpw''@;'; put 'put ''IiwiaWtpLm5hZ2FzYWtpLmpwIiwiaXNhaGF5YS5uYWdhc2FraS5qcCIsImthd2F0YW5hLm5hZ2FzYWtpLmpwIiwia3VjaGlub3RzdS5uYWdhc2FraS5qcCIsIm1hdHN1dXJhLm5hZ2FzYWtpLmpwIiwibmFnYXNha2kubmFnYXNha2kuanAiLCJvYmFtYS5uYWdhc2FraS5qcCIsIm9tdXJhLm5h''@;'; put 'put ''Z2FzYWtpLmpwIiwib3NldG8ubmFnYXNha2kuanAiLCJzYWlrYWkubmFnYXNha2kuanAiLCJzYXNlYm8ubmFnYXNha2kuanAiLCJzZWloaS5uYWdhc2FraS5qcCIsInNoaW1hYmFyYS5uYWdhc2FraS5qcCIsInNoaW5rYW1pZ290by5uYWdhc2FraS5qcCIsInRvZ2l0c3UubmFnYXNha2kuanAi''@;'; put 'put ''LCJ0c3VzaGltYS5uYWdhc2FraS5qcCIsInVuemVuLm5hZ2FzYWtpLmpwIiwiYW5kby5uYXJhLmpwIiwiZ29zZS5uYXJhLmpwIiwiaGVndXJpLm5hcmEuanAiLCJoaWdhc2hpeW9zaGluby5uYXJhLmpwIiwiaWthcnVnYS5uYXJhLmpwIiwiaWtvbWEubmFyYS5qcCIsImthbWlraXRheWFtYS5u''@;'; put 'put ''YXJhLmpwIiwia2FubWFraS5uYXJhLmpwIiwia2FzaGliYS5uYXJhLmpwIiwia2FzaGloYXJhLm5hcmEuanAiLCJrYXRzdXJhZ2kubmFyYS5qcCIsImthd2FpLm5hcmEuanAiLCJrYXdha2FtaS5uYXJhLmpwIiwia2F3YW5pc2hpLm5hcmEuanAiLCJrb3J5by5uYXJhLmpwIiwia3Vyb3Rha2ku''@;'; put 'put ''bmFyYS5qcCIsIm1pdHN1ZS5uYXJhLmpwIiwibWl5YWtlLm5hcmEuanAiLCJuYXJhLm5hcmEuanAiLCJub3NlZ2F3YS5uYXJhLmpwIiwib2ppLm5hcmEuanAiLCJvdWRhLm5hcmEuanAiLCJveW9kby5uYXJhLmpwIiwic2FrdXJhaS5uYXJhLmpwIiwic2FuZ28ubmFyYS5qcCIsInNoaW1vaWNo''@;'; put 'put ''aS5uYXJhLmpwIiwic2hpbW9raXRheWFtYS5uYXJhLmpwIiwic2hpbmpvLm5hcmEuanAiLCJzb25pLm5hcmEuanAiLCJ0YWthdG9yaS5uYXJhLmpwIiwidGF3YXJhbW90by5uYXJhLmpwIiwidGVua2F3YS5uYXJhLmpwIiwidGVucmkubmFyYS5qcCIsInVkYS5uYXJhLmpwIiwieWFtYXRva29y''@;'; put 'put ''aXlhbWEubmFyYS5qcCIsInlhbWF0b3Rha2FkYS5uYXJhLmpwIiwieWFtYXpvZS5uYXJhLmpwIiwieW9zaGluby5uYXJhLmpwIiwiYWdhLm5paWdhdGEuanAiLCJhZ2Fuby5uaWlnYXRhLmpwIiwiZ29zZW4ubmlpZ2F0YS5qcCIsIml0b2lnYXdhLm5paWdhdGEuanAiLCJpenVtb3pha2kubmlp''@;'; put 'put ''Z2F0YS5qcCIsImpvZXRzdS5uaWlnYXRhLmpwIiwia2Ftby5uaWlnYXRhLmpwIiwia2FyaXdhLm5paWdhdGEuanAiLCJrYXNoaXdhemFraS5uaWlnYXRhLmpwIiwibWluYW1pdW9udW1hLm5paWdhdGEuanAiLCJtaXRzdWtlLm5paWdhdGEuanAiLCJtdWlrYS5uaWlnYXRhLmpwIiwibXVyYWth''@;'; put 'put ''bWkubmlpZ2F0YS5qcCIsIm15b2tvLm5paWdhdGEuanAiLCJuYWdhb2thLm5paWdhdGEuanAiLCJuaWlnYXRhLm5paWdhdGEuanAiLCJvaml5YS5uaWlnYXRhLmpwIiwib21pLm5paWdhdGEuanAiLCJzYWRvLm5paWdhdGEuanAiLCJzYW5qby5uaWlnYXRhLmpwIiwic2Vpcm8ubmlpZ2F0YS5q''@;'; put 'put ''cCIsInNlaXJvdS5uaWlnYXRhLmpwIiwic2VraWthd2EubmlpZ2F0YS5qcCIsInNoaWJhdGEubmlpZ2F0YS5qcCIsInRhZ2FtaS5uaWlnYXRhLmpwIiwidGFpbmFpLm5paWdhdGEuanAiLCJ0b2NoaW8ubmlpZ2F0YS5qcCIsInRva2FtYWNoaS5uaWlnYXRhLmpwIiwidHN1YmFtZS5uaWlnYXRh''@;'; put 'put ''LmpwIiwidHN1bmFuLm5paWdhdGEuanAiLCJ1b251bWEubmlpZ2F0YS5qcCIsInlhaGlrby5uaWlnYXRhLmpwIiwieW9pdGEubmlpZ2F0YS5qcCIsInl1emF3YS5uaWlnYXRhLmpwIiwiYmVwcHUub2l0YS5qcCIsImJ1bmdvb25vLm9pdGEuanAiLCJidW5nb3Rha2FkYS5vaXRhLmpwIiwiaGFz''@;'; put 'put ''YW1hLm9pdGEuanAiLCJoaWppLm9pdGEuanAiLCJoaW1lc2hpbWEub2l0YS5qcCIsImhpdGEub2l0YS5qcCIsImthbWl0c3VlLm9pdGEuanAiLCJrb2tvbm9lLm9pdGEuanAiLCJrdWp1Lm9pdGEuanAiLCJrdW5pc2FraS5vaXRhLmpwIiwia3VzdS5vaXRhLmpwIiwib2l0YS5vaXRhLmpwIiwi''@;'; put 'put ''c2Fpa2kub2l0YS5qcCIsInRha2V0YS5vaXRhLmpwIiwidHN1a3VtaS5vaXRhLmpwIiwidXNhLm9pdGEuanAiLCJ1c3VraS5vaXRhLmpwIiwieXVmdS5vaXRhLmpwIiwiYWthaXdhLm9rYXlhbWEuanAiLCJhc2FrdWNoaS5va2F5YW1hLmpwIiwiYml6ZW4ub2theWFtYS5qcCIsImhheWFzaGlt''@;'; put 'put ''YS5va2F5YW1hLmpwIiwiaWJhcmEub2theWFtYS5qcCIsImthZ2FtaW5vLm9rYXlhbWEuanAiLCJrYXNhb2thLm9rYXlhbWEuanAiLCJraWJpY2h1by5va2F5YW1hLmpwIiwia3VtZW5hbi5va2F5YW1hLmpwIiwia3VyYXNoaWtpLm9rYXlhbWEuanAiLCJtYW5pd2Eub2theWFtYS5qcCIsIm1p''@;'; put 'put ''c2FraS5va2F5YW1hLmpwIiwibmFnaS5va2F5YW1hLmpwIiwibmlpbWkub2theWFtYS5qcCIsIm5pc2hpYXdha3VyYS5va2F5YW1hLmpwIiwib2theWFtYS5va2F5YW1hLmpwIiwic2F0b3Noby5va2F5YW1hLmpwIiwic2V0b3VjaGkub2theWFtYS5qcCIsInNoaW5qby5va2F5YW1hLmpwIiwi''@;'; put 'put ''c2hvby5va2F5YW1hLmpwIiwic29qYS5va2F5YW1hLmpwIiwidGFrYWhhc2hpLm9rYXlhbWEuanAiLCJ0YW1hbm8ub2theWFtYS5qcCIsInRzdXlhbWEub2theWFtYS5qcCIsIndha2Uub2theWFtYS5qcCIsInlha2FnZS5va2F5YW1hLmpwIiwiYWd1bmkub2tpbmF3YS5qcCIsImdpbm93YW4u''@;'; put 'put ''b2tpbmF3YS5qcCIsImdpbm96YS5va2luYXdhLmpwIiwiZ3VzaGlrYW1pLm9raW5hd2EuanAiLCJoYWViYXJ1Lm9raW5hd2EuanAiLCJoaWdhc2hpLm9raW5hd2EuanAiLCJoaXJhcmEub2tpbmF3YS5qcCIsImloZXlhLm9raW5hd2EuanAiLCJpc2hpZ2FraS5va2luYXdhLmpwIiwiaXNoaWth''@;'; put 'put ''d2Eub2tpbmF3YS5qcCIsIml0b21hbi5va2luYXdhLmpwIiwiaXplbmEub2tpbmF3YS5qcCIsImthZGVuYS5va2luYXdhLmpwIiwia2luLm9raW5hd2EuanAiLCJraXRhZGFpdG8ub2tpbmF3YS5qcCIsImtpdGFuYWthZ3VzdWt1Lm9raW5hd2EuanAiLCJrdW1lamltYS5va2luYXdhLmpwIiwi''@;'; put 'put ''a3VuaWdhbWkub2tpbmF3YS5qcCIsIm1pbmFtaWRhaXRvLm9raW5hd2EuanAiLCJtb3RvYnUub2tpbmF3YS5qcCIsIm5hZ28ub2tpbmF3YS5qcCIsIm5haGEub2tpbmF3YS5qcCIsIm5ha2FndXN1a3Uub2tpbmF3YS5qcCIsIm5ha2lqaW4ub2tpbmF3YS5qcCIsIm5hbmpvLm9raW5hd2EuanAi''@;'; put 'put ''LCJuaXNoaWhhcmEub2tpbmF3YS5qcCIsIm9naW1pLm9raW5hd2EuanAiLCJva2luYXdhLm9raW5hd2EuanAiLCJvbm5hLm9raW5hd2EuanAiLCJzaGltb2ppLm9raW5hd2EuanAiLCJ0YWtldG9taS5va2luYXdhLmpwIiwidGFyYW1hLm9raW5hd2EuanAiLCJ0b2thc2hpa2kub2tpbmF3YS5q''@;'; put 'put ''cCIsInRvbWlndXN1a3Uub2tpbmF3YS5qcCIsInRvbmFraS5va2luYXdhLmpwIiwidXJhc29lLm9raW5hd2EuanAiLCJ1cnVtYS5va2luYXdhLmpwIiwieWFlc2Uub2tpbmF3YS5qcCIsInlvbWl0YW4ub2tpbmF3YS5qcCIsInlvbmFiYXJ1Lm9raW5hd2EuanAiLCJ5b25hZ3VuaS5va2luYXdh''@;'; put 'put ''LmpwIiwiemFtYW1pLm9raW5hd2EuanAiLCJhYmVuby5vc2FrYS5qcCIsImNoaWhheWFha2FzYWthLm9zYWthLmpwIiwiY2h1by5vc2FrYS5qcCIsImRhaXRvLm9zYWthLmpwIiwiZnVqaWlkZXJhLm9zYWthLmpwIiwiaGFiaWtpbm8ub3Nha2EuanAiLCJoYW5uYW4ub3Nha2EuanAiLCJoaWdh''@;'; put 'put ''c2hpb3Nha2Eub3Nha2EuanAiLCJoaWdhc2hpc3VtaXlvc2hpLm9zYWthLmpwIiwiaGlnYXNoaXlvZG9nYXdhLm9zYWthLmpwIiwiaGlyYWthdGEub3Nha2EuanAiLCJpYmFyYWtpLm9zYWthLmpwIiwiaWtlZGEub3Nha2EuanAiLCJpenVtaS5vc2FrYS5qcCIsIml6dW1pb3RzdS5vc2FrYS5q''@;'; put 'put ''cCIsIml6dW1pc2Fuby5vc2FrYS5qcCIsImthZG9tYS5vc2FrYS5qcCIsImthaXp1a2Eub3Nha2EuanAiLCJrYW5hbi5vc2FrYS5qcCIsImthc2hpd2FyYS5vc2FrYS5qcCIsImthdGFuby5vc2FrYS5qcCIsImthd2FjaGluYWdhbm8ub3Nha2EuanAiLCJraXNoaXdhZGEub3Nha2EuanAiLCJr''@;'; put 'put ''aXRhLm9zYWthLmpwIiwia3VtYXRvcmkub3Nha2EuanAiLCJtYXRzdWJhcmEub3Nha2EuanAiLCJtaW5hdG8ub3Nha2EuanAiLCJtaW5vaC5vc2FrYS5qcCIsIm1pc2FraS5vc2FrYS5qcCIsIm1vcmlndWNoaS5vc2FrYS5qcCIsIm5leWFnYXdhLm9zYWthLmpwIiwibmlzaGkub3Nha2EuanAi''@;'; put 'put ''LCJub3NlLm9zYWthLmpwIiwib3Nha2FzYXlhbWEub3Nha2EuanAiLCJzYWthaS5vc2FrYS5qcCIsInNheWFtYS5vc2FrYS5qcCIsInNlbm5hbi5vc2FrYS5qcCIsInNldHRzdS5vc2FrYS5qcCIsInNoaWpvbmF3YXRlLm9zYWthLmpwIiwic2hpbWFtb3RvLm9zYWthLmpwIiwic3VpdGEub3Nh''@;'; put 'put ''a2EuanAiLCJ0YWRhb2thLm9zYWthLmpwIiwidGFpc2hpLm9zYWthLmpwIiwidGFqaXJpLm9zYWthLmpwIiwidGFrYWlzaGkub3Nha2EuanAiLCJ0YWthdHN1a2kub3Nha2EuanAiLCJ0b25kYWJheWFzaGkub3Nha2EuanAiLCJ0b3lvbmFrYS5vc2FrYS5qcCIsInRveW9uby5vc2FrYS5qcCIs''@;'; put 'put ''Inlhby5vc2FrYS5qcCIsImFyaWFrZS5zYWdhLmpwIiwiYXJpdGEuc2FnYS5qcCIsImZ1a3Vkb21pLnNhZ2EuanAiLCJnZW5rYWkuc2FnYS5qcCIsImhhbWF0YW1hLnNhZ2EuanAiLCJoaXplbi5zYWdhLmpwIiwiaW1hcmkuc2FnYS5qcCIsImthbWltaW5lLnNhZ2EuanAiLCJrYW56YWtpLnNh''@;'; put 'put ''Z2EuanAiLCJrYXJhdHN1LnNhZ2EuanAiLCJrYXNoaW1hLnNhZ2EuanAiLCJraXRhZ2F0YS5zYWdhLmpwIiwia2l0YWhhdGEuc2FnYS5qcCIsImtpeWFtYS5zYWdhLmpwIiwia291aG9rdS5zYWdhLmpwIiwia3l1cmFnaS5zYWdhLmpwIiwibmlzaGlhcml0YS5zYWdhLmpwIiwib2dpLnNhZ2Eu''@;'; put 'put ''anAiLCJvbWFjaGkuc2FnYS5qcCIsIm91Y2hpLnNhZ2EuanAiLCJzYWdhLnNhZ2EuanAiLCJzaGlyb2lzaGkuc2FnYS5qcCIsInRha3Uuc2FnYS5qcCIsInRhcmEuc2FnYS5qcCIsInRvc3Uuc2FnYS5qcCIsInlvc2hpbm9nYXJpLnNhZ2EuanAiLCJhcmFrYXdhLnNhaXRhbWEuanAiLCJhc2Fr''@;'; put 'put ''YS5zYWl0YW1hLmpwIiwiY2hpY2hpYnUuc2FpdGFtYS5qcCIsImZ1amltaS5zYWl0YW1hLmpwIiwiZnVqaW1pbm8uc2FpdGFtYS5qcCIsImZ1a2F5YS5zYWl0YW1hLmpwIiwiaGFubm8uc2FpdGFtYS5qcCIsImhhbnl1LnNhaXRhbWEuanAiLCJoYXN1ZGEuc2FpdGFtYS5qcCIsImhhdG9nYXlh''@;'; put 'put ''LnNhaXRhbWEuanAiLCJoYXRveWFtYS5zYWl0YW1hLmpwIiwiaGlkYWthLnNhaXRhbWEuanAiLCJoaWdhc2hpY2hpY2hpYnUuc2FpdGFtYS5qcCIsImhpZ2FzaGltYXRzdXlhbWEuc2FpdGFtYS5qcCIsImhvbmpvLnNhaXRhbWEuanAiLCJpbmEuc2FpdGFtYS5qcCIsImlydW1hLnNhaXRhbWEu''@;'; put 'put ''anAiLCJpd2F0c3VraS5zYWl0YW1hLmpwIiwia2FtaWl6dW1pLnNhaXRhbWEuanAiLCJrYW1pa2F3YS5zYWl0YW1hLmpwIiwia2FtaXNhdG8uc2FpdGFtYS5qcCIsImthc3VrYWJlLnNhaXRhbWEuanAiLCJrYXdhZ29lLnNhaXRhbWEuanAiLCJrYXdhZ3VjaGkuc2FpdGFtYS5qcCIsImthd2Fq''@;'; put 'put ''aW1hLnNhaXRhbWEuanAiLCJrYXpvLnNhaXRhbWEuanAiLCJraXRhbW90by5zYWl0YW1hLmpwIiwia29zaGlnYXlhLnNhaXRhbWEuanAiLCJrb3Vub3N1LnNhaXRhbWEuanAiLCJrdWtpLnNhaXRhbWEuanAiLCJrdW1hZ2F5YS5zYWl0YW1hLmpwIiwibWF0c3VidXNoaS5zYWl0YW1hLmpwIiwi''@;'; put 'put ''bWluYW5vLnNhaXRhbWEuanAiLCJtaXNhdG8uc2FpdGFtYS5qcCIsIm1peWFzaGlyby5zYWl0YW1hLmpwIiwibWl5b3NoaS5zYWl0YW1hLmpwIiwibW9yb3lhbWEuc2FpdGFtYS5qcCIsIm5hZ2F0b3JvLnNhaXRhbWEuanAiLCJuYW1lZ2F3YS5zYWl0YW1hLmpwIiwibmlpemEuc2FpdGFtYS5q''@;'; put 'put ''cCIsIm9nYW5vLnNhaXRhbWEuanAiLCJvZ2F3YS5zYWl0YW1hLmpwIiwib2dvc2Uuc2FpdGFtYS5qcCIsIm9rZWdhd2Euc2FpdGFtYS5qcCIsIm9taXlhLnNhaXRhbWEuanAiLCJvdGFraS5zYWl0YW1hLmpwIiwicmFuemFuLnNhaXRhbWEuanAiLCJyeW9rYW1pLnNhaXRhbWEuanAiLCJzYWl0''@;'; put 'put ''YW1hLnNhaXRhbWEuanAiLCJzYWthZG8uc2FpdGFtYS5qcCIsInNhdHRlLnNhaXRhbWEuanAiLCJzYXlhbWEuc2FpdGFtYS5qcCIsInNoaWtpLnNhaXRhbWEuanAiLCJzaGlyYW9rYS5zYWl0YW1hLmpwIiwic29rYS5zYWl0YW1hLmpwIiwic3VnaXRvLnNhaXRhbWEuanAiLCJ0b2RhLnNhaXRh''@;'; put 'put ''bWEuanAiLCJ0b2tpZ2F3YS5zYWl0YW1hLmpwIiwidG9rb3JvemF3YS5zYWl0YW1hLmpwIiwidHN1cnVnYXNoaW1hLnNhaXRhbWEuanAiLCJ1cmF3YS5zYWl0YW1hLmpwIiwid2FyYWJpLnNhaXRhbWEuanAiLCJ5YXNoaW8uc2FpdGFtYS5qcCIsInlva296ZS5zYWl0YW1hLmpwIiwieW9uby5z''@;'; put 'put ''YWl0YW1hLmpwIiwieW9yaWkuc2FpdGFtYS5qcCIsInlvc2hpZGEuc2FpdGFtYS5qcCIsInlvc2hpa2F3YS5zYWl0YW1hLmpwIiwieW9zaGltaS5zYWl0YW1hLmpwIiwiYWlzaG8uc2hpZ2EuanAiLCJnYW1vLnNoaWdhLmpwIiwiaGlnYXNoaW9taS5zaGlnYS5qcCIsImhpa29uZS5zaGlnYS5q''@;'; put 'put ''cCIsImtva2Euc2hpZ2EuanAiLCJrb25hbi5zaGlnYS5qcCIsImtvc2VpLnNoaWdhLmpwIiwia290by5zaGlnYS5qcCIsImt1c2F0c3Uuc2hpZ2EuanAiLCJtYWliYXJhLnNoaWdhLmpwIiwibW9yaXlhbWEuc2hpZ2EuanAiLCJuYWdhaGFtYS5zaGlnYS5qcCIsIm5pc2hpYXphaS5zaGlnYS5q''@;'; put 'put ''cCIsIm5vdG9nYXdhLnNoaWdhLmpwIiwib21paGFjaGltYW4uc2hpZ2EuanAiLCJvdHN1LnNoaWdhLmpwIiwicml0dG8uc2hpZ2EuanAiLCJyeXVvaC5zaGlnYS5qcCIsInRha2FzaGltYS5zaGlnYS5qcCIsInRha2F0c3VraS5zaGlnYS5qcCIsInRvcmFoaW1lLnNoaWdhLmpwIiwidG95b3Nh''@;'; put 'put ''dG8uc2hpZ2EuanAiLCJ5YXN1LnNoaWdhLmpwIiwiYWthZ2kuc2hpbWFuZS5qcCIsImFtYS5zaGltYW5lLmpwIiwiZ290c3Uuc2hpbWFuZS5qcCIsImhhbWFkYS5zaGltYW5lLmpwIiwiaGlnYXNoaWl6dW1vLnNoaW1hbmUuanAiLCJoaWthd2Euc2hpbWFuZS5qcCIsImhpa2ltaS5zaGltYW5l''@;'; put 'put ''LmpwIiwiaXp1bW8uc2hpbWFuZS5qcCIsImtha2lub2tpLnNoaW1hbmUuanAiLCJtYXN1ZGEuc2hpbWFuZS5qcCIsIm1hdHN1ZS5zaGltYW5lLmpwIiwibWlzYXRvLnNoaW1hbmUuanAiLCJuaXNoaW5vc2hpbWEuc2hpbWFuZS5qcCIsIm9oZGEuc2hpbWFuZS5qcCIsIm9raW5vc2hpbWEuc2hp''@;'; put 'put ''bWFuZS5qcCIsIm9rdWl6dW1vLnNoaW1hbmUuanAiLCJzaGltYW5lLnNoaW1hbmUuanAiLCJ0YW1heXUuc2hpbWFuZS5qcCIsInRzdXdhbm8uc2hpbWFuZS5qcCIsInVubmFuLnNoaW1hbmUuanAiLCJ5YWt1bW8uc2hpbWFuZS5qcCIsInlhc3VnaS5zaGltYW5lLmpwIiwieWF0c3VrYS5zaGlt''@;'; put 'put ''YW5lLmpwIiwiYXJhaS5zaGl6dW9rYS5qcCIsImF0YW1pLnNoaXp1b2thLmpwIiwiZnVqaS5zaGl6dW9rYS5qcCIsImZ1amllZGEuc2hpenVva2EuanAiLCJmdWppa2F3YS5zaGl6dW9rYS5qcCIsImZ1amlub21peWEuc2hpenVva2EuanAiLCJmdWt1cm9pLnNoaXp1b2thLmpwIiwiZ290ZW1i''@;'; put 'put ''YS5zaGl6dW9rYS5qcCIsImhhaWJhcmEuc2hpenVva2EuanAiLCJoYW1hbWF0c3Uuc2hpenVva2EuanAiLCJoaWdhc2hpaXp1LnNoaXp1b2thLmpwIiwiaXRvLnNoaXp1b2thLmpwIiwiaXdhdGEuc2hpenVva2EuanAiLCJpenUuc2hpenVva2EuanAiLCJpenVub2t1bmkuc2hpenVva2EuanAi''@;'; put 'put ''LCJrYWtlZ2F3YS5zaGl6dW9rYS5qcCIsImthbm5hbWkuc2hpenVva2EuanAiLCJrYXdhbmVob24uc2hpenVva2EuanAiLCJrYXdhenUuc2hpenVva2EuanAiLCJraWt1Z2F3YS5zaGl6dW9rYS5qcCIsImtvc2FpLnNoaXp1b2thLmpwIiwibWFraW5vaGFyYS5zaGl6dW9rYS5qcCIsIm1hdHN1''@;'; put 'put ''emFraS5zaGl6dW9rYS5qcCIsIm1pbmFtaWl6dS5zaGl6dW9rYS5qcCIsIm1pc2hpbWEuc2hpenVva2EuanAiLCJtb3JpbWFjaGkuc2hpenVva2EuanAiLCJuaXNoaWl6dS5zaGl6dW9rYS5qcCIsIm51bWF6dS5zaGl6dW9rYS5qcCIsIm9tYWV6YWtpLnNoaXp1b2thLmpwIiwic2hpbWFkYS5z''@;'; put 'put ''aGl6dW9rYS5qcCIsInNoaW1penUuc2hpenVva2EuanAiLCJzaGltb2RhLnNoaXp1b2thLmpwIiwic2hpenVva2Euc2hpenVva2EuanAiLCJzdXNvbm8uc2hpenVva2EuanAiLCJ5YWl6dS5zaGl6dW9rYS5qcCIsInlvc2hpZGEuc2hpenVva2EuanAiLCJhc2hpa2FnYS50b2NoaWdpLmpwIiwi''@;'; put 'put ''YmF0by50b2NoaWdpLmpwIiwiaGFnYS50b2NoaWdpLmpwIiwiaWNoaWthaS50b2NoaWdpLmpwIiwiaXdhZnVuZS50b2NoaWdpLmpwIiwia2FtaW5va2F3YS50b2NoaWdpLmpwIiwia2FudW1hLnRvY2hpZ2kuanAiLCJrYXJhc3V5YW1hLnRvY2hpZ2kuanAiLCJrdXJvaXNvLnRvY2hpZ2kuanAi''@;'; put 'put ''LCJtYXNoaWtvLnRvY2hpZ2kuanAiLCJtaWJ1LnRvY2hpZ2kuanAiLCJtb2thLnRvY2hpZ2kuanAiLCJtb3RlZ2kudG9jaGlnaS5qcCIsIm5hc3UudG9jaGlnaS5qcCIsIm5hc3VzaGlvYmFyYS50b2NoaWdpLmpwIiwibmlra28udG9jaGlnaS5qcCIsIm5pc2hpa2F0YS50b2NoaWdpLmpwIiwi''@;'; put 'put ''bm9naS50b2NoaWdpLmpwIiwib2hpcmEudG9jaGlnaS5qcCIsIm9odGF3YXJhLnRvY2hpZ2kuanAiLCJveWFtYS50b2NoaWdpLmpwIiwic2FrdXJhLnRvY2hpZ2kuanAiLCJzYW5vLnRvY2hpZ2kuanAiLCJzaGltb3RzdWtlLnRvY2hpZ2kuanAiLCJzaGlveWEudG9jaGlnaS5qcCIsInRha2Fu''@;'; put 'put ''ZXphd2EudG9jaGlnaS5qcCIsInRvY2hpZ2kudG9jaGlnaS5qcCIsInRzdWdhLnRvY2hpZ2kuanAiLCJ1amlpZS50b2NoaWdpLmpwIiwidXRzdW5vbWl5YS50b2NoaWdpLmpwIiwieWFpdGEudG9jaGlnaS5qcCIsImFpenVtaS50b2t1c2hpbWEuanAiLCJhbmFuLnRva3VzaGltYS5qcCIsImlj''@;'; put 'put ''aGliYS50b2t1c2hpbWEuanAiLCJpdGFuby50b2t1c2hpbWEuanAiLCJrYWluYW4udG9rdXNoaW1hLmpwIiwia29tYXRzdXNoaW1hLnRva3VzaGltYS5qcCIsIm1hdHN1c2hpZ2UudG9rdXNoaW1hLmpwIiwibWltYS50b2t1c2hpbWEuanAiLCJtaW5hbWkudG9rdXNoaW1hLmpwIiwibWl5b3No''@;'; put 'put ''aS50b2t1c2hpbWEuanAiLCJtdWdpLnRva3VzaGltYS5qcCIsIm5ha2FnYXdhLnRva3VzaGltYS5qcCIsIm5hcnV0by50b2t1c2hpbWEuanAiLCJzYW5hZ29jaGkudG9rdXNoaW1hLmpwIiwic2hpc2hpa3VpLnRva3VzaGltYS5qcCIsInRva3VzaGltYS50b2t1c2hpbWEuanAiLCJ3YWppa2ku''@;'; put 'put ''dG9rdXNoaW1hLmpwIiwiYWRhY2hpLnRva3lvLmpwIiwiYWtpcnVuby50b2t5by5qcCIsImFraXNoaW1hLnRva3lvLmpwIiwiYW9nYXNoaW1hLnRva3lvLmpwIiwiYXJha2F3YS50b2t5by5qcCIsImJ1bmt5by50b2t5by5qcCIsImNoaXlvZGEudG9reW8uanAiLCJjaG9mdS50b2t5by5qcCIs''@;'; put 'put ''ImNodW8udG9reW8uanAiLCJlZG9nYXdhLnRva3lvLmpwIiwiZnVjaHUudG9reW8uanAiLCJmdXNzYS50b2t5by5qcCIsImhhY2hpam8udG9reW8uanAiLCJoYWNoaW9qaS50b2t5by5qcCIsImhhbXVyYS50b2t5by5qcCIsImhpZ2FzaGlrdXJ1bWUudG9reW8uanAiLCJoaWdhc2hpbXVyYXlh''@;'; put 'put ''bWEudG9reW8uanAiLCJoaWdhc2hpeWFtYXRvLnRva3lvLmpwIiwiaGluby50b2t5by5qcCIsImhpbm9kZS50b2t5by5qcCIsImhpbm9oYXJhLnRva3lvLmpwIiwiaW5hZ2kudG9reW8uanAiLCJpdGFiYXNoaS50b2t5by5qcCIsImthdHN1c2hpa2EudG9reW8uanAiLCJraXRhLnRva3lvLmpw''@;'; put 'put ''Iiwia2l5b3NlLnRva3lvLmpwIiwia29kYWlyYS50b2t5by5qcCIsImtvZ2FuZWkudG9reW8uanAiLCJrb2t1YnVuamkudG9reW8uanAiLCJrb21hZS50b2t5by5qcCIsImtvdG8udG9reW8uanAiLCJrb3V6dXNoaW1hLnRva3lvLmpwIiwia3VuaXRhY2hpLnRva3lvLmpwIiwibWFjaGlkYS50''@;'; put 'put ''b2t5by5qcCIsIm1lZ3Vyby50b2t5by5qcCIsIm1pbmF0by50b2t5by5qcCIsIm1pdGFrYS50b2t5by5qcCIsIm1penVoby50b2t5by5qcCIsIm11c2FzaGltdXJheWFtYS50b2t5by5qcCIsIm11c2FzaGluby50b2t5by5qcCIsIm5ha2Fuby50b2t5by5qcCIsIm5lcmltYS50b2t5by5qcCIs''@;'; put 'put ''Im9nYXNhd2FyYS50b2t5by5qcCIsIm9rdXRhbWEudG9reW8uanAiLCJvbWUudG9reW8uanAiLCJvc2hpbWEudG9reW8uanAiLCJvdGEudG9reW8uanAiLCJzZXRhZ2F5YS50b2t5by5qcCIsInNoaWJ1eWEudG9reW8uanAiLCJzaGluYWdhd2EudG9reW8uanAiLCJzaGluanVrdS50b2t5by5q''@;'; put 'put ''cCIsInN1Z2luYW1pLnRva3lvLmpwIiwic3VtaWRhLnRva3lvLmpwIiwidGFjaGlrYXdhLnRva3lvLmpwIiwidGFpdG8udG9reW8uanAiLCJ0YW1hLnRva3lvLmpwIiwidG9zaGltYS50b2t5by5qcCIsImNoaXp1LnRvdHRvcmkuanAiLCJoaW5vLnRvdHRvcmkuanAiLCJrYXdhaGFyYS50b3R0''@;'; put 'put ''b3JpLmpwIiwia29nZS50b3R0b3JpLmpwIiwia290b3VyYS50b3R0b3JpLmpwIiwibWlzYXNhLnRvdHRvcmkuanAiLCJuYW5idS50b3R0b3JpLmpwIiwibmljaGluYW4udG90dG9yaS5qcCIsInNha2FpbWluYXRvLnRvdHRvcmkuanAiLCJ0b3R0b3JpLnRvdHRvcmkuanAiLCJ3YWthc2EudG90''@;'; put 'put ''dG9yaS5qcCIsInlhenUudG90dG9yaS5qcCIsInlvbmFnby50b3R0b3JpLmpwIiwiYXNhaGkudG95YW1hLmpwIiwiZnVjaHUudG95YW1hLmpwIiwiZnVrdW1pdHN1LnRveWFtYS5qcCIsImZ1bmFoYXNoaS50b3lhbWEuanAiLCJoaW1pLnRveWFtYS5qcCIsImltaXp1LnRveWFtYS5qcCIsImlu''@;'; put 'put ''YW1pLnRveWFtYS5qcCIsImpvaGFuYS50b3lhbWEuanAiLCJrYW1paWNoaS50b3lhbWEuanAiLCJrdXJvYmUudG95YW1hLmpwIiwibmFrYW5paWthd2EudG95YW1hLmpwIiwibmFtZXJpa2F3YS50b3lhbWEuanAiLCJuYW50by50b3lhbWEuanAiLCJueXV6ZW4udG95YW1hLmpwIiwib3lhYmUu''@;'; put 'put ''dG95YW1hLmpwIiwidGFpcmEudG95YW1hLmpwIiwidGFrYW9rYS50b3lhbWEuanAiLCJ0YXRleWFtYS50b3lhbWEuanAiLCJ0b2dhLnRveWFtYS5qcCIsInRvbmFtaS50b3lhbWEuanAiLCJ0b3lhbWEudG95YW1hLmpwIiwidW5henVraS50b3lhbWEuanAiLCJ1b3p1LnRveWFtYS5qcCIsInlh''@;'; put 'put ''bWFkYS50b3lhbWEuanAiLCJhcmlkYS53YWtheWFtYS5qcCIsImFyaWRhZ2F3YS53YWtheWFtYS5qcCIsImdvYm8ud2FrYXlhbWEuanAiLCJoYXNoaW1vdG8ud2FrYXlhbWEuanAiLCJoaWRha2Eud2FrYXlhbWEuanAiLCJoaXJvZ2F3YS53YWtheWFtYS5qcCIsImluYW1pLndha2F5YW1hLmpw''@;'; put 'put ''IiwiaXdhZGUud2FrYXlhbWEuanAiLCJrYWluYW4ud2FrYXlhbWEuanAiLCJrYW1pdG9uZGEud2FrYXlhbWEuanAiLCJrYXRzdXJhZ2kud2FrYXlhbWEuanAiLCJraW1pbm8ud2FrYXlhbWEuanAiLCJraW5va2F3YS53YWtheWFtYS5qcCIsImtpdGF5YW1hLndha2F5YW1hLmpwIiwia295YS53''@;'; put 'put ''YWtheWFtYS5qcCIsImtvemEud2FrYXlhbWEuanAiLCJrb3phZ2F3YS53YWtheWFtYS5qcCIsImt1ZG95YW1hLndha2F5YW1hLmpwIiwia3VzaGltb3RvLndha2F5YW1hLmpwIiwibWloYW1hLndha2F5YW1hLmpwIiwibWlzYXRvLndha2F5YW1hLmpwIiwibmFjaGlrYXRzdXVyYS53YWtheWFt''@;'; put 'put ''YS5qcCIsInNoaW5ndS53YWtheWFtYS5qcCIsInNoaXJhaGFtYS53YWtheWFtYS5qcCIsInRhaWppLndha2F5YW1hLmpwIiwidGFuYWJlLndha2F5YW1hLmpwIiwid2FrYXlhbWEud2FrYXlhbWEuanAiLCJ5dWFzYS53YWtheWFtYS5qcCIsInl1cmEud2FrYXlhbWEuanAiLCJhc2FoaS55YW1h''@;'; put 'put ''Z2F0YS5qcCIsImZ1bmFnYXRhLnlhbWFnYXRhLmpwIiwiaGlnYXNoaW5lLnlhbWFnYXRhLmpwIiwiaWlkZS55YW1hZ2F0YS5qcCIsImthaG9rdS55YW1hZ2F0YS5qcCIsImthbWlub3lhbWEueWFtYWdhdGEuanAiLCJrYW5leWFtYS55YW1hZ2F0YS5qcCIsImthd2FuaXNoaS55YW1hZ2F0YS5q''@;'; put 'put ''cCIsIm1hbXVyb2dhd2EueWFtYWdhdGEuanAiLCJtaWthd2EueWFtYWdhdGEuanAiLCJtdXJheWFtYS55YW1hZ2F0YS5qcCIsIm5hZ2FpLnlhbWFnYXRhLmpwIiwibmFrYXlhbWEueWFtYWdhdGEuanAiLCJuYW55by55YW1hZ2F0YS5qcCIsIm5pc2hpa2F3YS55YW1hZ2F0YS5qcCIsIm9iYW5h''@;'; put 'put ''emF3YS55YW1hZ2F0YS5qcCIsIm9lLnlhbWFnYXRhLmpwIiwib2d1bmkueWFtYWdhdGEuanAiLCJvaGt1cmEueWFtYWdhdGEuanAiLCJvaXNoaWRhLnlhbWFnYXRhLmpwIiwic2FnYWUueWFtYWdhdGEuanAiLCJzYWthdGEueWFtYWdhdGEuanAiLCJzYWtlZ2F3YS55YW1hZ2F0YS5qcCIsInNo''@;'; put 'put ''aW5qby55YW1hZ2F0YS5qcCIsInNoaXJhdGFrYS55YW1hZ2F0YS5qcCIsInNob25haS55YW1hZ2F0YS5qcCIsInRha2FoYXRhLnlhbWFnYXRhLmpwIiwidGVuZG8ueWFtYWdhdGEuanAiLCJ0b3phd2EueWFtYWdhdGEuanAiLCJ0c3VydW9rYS55YW1hZ2F0YS5qcCIsInlhbWFnYXRhLnlhbWFn''@;'; put 'put ''YXRhLmpwIiwieWFtYW5vYmUueWFtYWdhdGEuanAiLCJ5b25lemF3YS55YW1hZ2F0YS5qcCIsInl1emEueWFtYWdhdGEuanAiLCJhYnUueWFtYWd1Y2hpLmpwIiwiaGFnaS55YW1hZ3VjaGkuanAiLCJoaWthcmkueWFtYWd1Y2hpLmpwIiwiaG9mdS55YW1hZ3VjaGkuanAiLCJpd2FrdW5pLnlh''@;'; put 'put ''bWFndWNoaS5qcCIsImt1ZGFtYXRzdS55YW1hZ3VjaGkuanAiLCJtaXRvdS55YW1hZ3VjaGkuanAiLCJuYWdhdG8ueWFtYWd1Y2hpLmpwIiwib3NoaW1hLnlhbWFndWNoaS5qcCIsInNoaW1vbm9zZWtpLnlhbWFndWNoaS5qcCIsInNodW5hbi55YW1hZ3VjaGkuanAiLCJ0YWJ1c2UueWFtYWd1''@;'; put 'put ''Y2hpLmpwIiwidG9rdXlhbWEueWFtYWd1Y2hpLmpwIiwidG95b3RhLnlhbWFndWNoaS5qcCIsInViZS55YW1hZ3VjaGkuanAiLCJ5dXUueWFtYWd1Y2hpLmpwIiwiY2h1by55YW1hbmFzaGkuanAiLCJkb3NoaS55YW1hbmFzaGkuanAiLCJmdWVmdWtpLnlhbWFuYXNoaS5qcCIsImZ1amlrYXdh''@;'; put 'put ''LnlhbWFuYXNoaS5qcCIsImZ1amlrYXdhZ3VjaGlrby55YW1hbmFzaGkuanAiLCJmdWppeW9zaGlkYS55YW1hbmFzaGkuanAiLCJoYXlha2F3YS55YW1hbmFzaGkuanAiLCJob2t1dG8ueWFtYW5hc2hpLmpwIiwiaWNoaWthd2FtaXNhdG8ueWFtYW5hc2hpLmpwIiwia2FpLnlhbWFuYXNoaS5q''@;'; put 'put ''cCIsImtvZnUueWFtYW5hc2hpLmpwIiwia29zaHUueWFtYW5hc2hpLmpwIiwia29zdWdlLnlhbWFuYXNoaS5qcCIsIm1pbmFtaS1hbHBzLnlhbWFuYXNoaS5qcCIsIm1pbm9idS55YW1hbmFzaGkuanAiLCJuYWthbWljaGkueWFtYW5hc2hpLmpwIiwibmFuYnUueWFtYW5hc2hpLmpwIiwibmFy''@;'; put 'put ''dXNhd2EueWFtYW5hc2hpLmpwIiwibmlyYXNha2kueWFtYW5hc2hpLmpwIiwibmlzaGlrYXRzdXJhLnlhbWFuYXNoaS5qcCIsIm9zaGluby55YW1hbmFzaGkuanAiLCJvdHN1a2kueWFtYW5hc2hpLmpwIiwic2hvd2EueWFtYW5hc2hpLmpwIiwidGFiYXlhbWEueWFtYW5hc2hpLmpwIiwidHN1''@;'; put 'put ''cnUueWFtYW5hc2hpLmpwIiwidWVub2hhcmEueWFtYW5hc2hpLmpwIiwieWFtYW5ha2Frby55YW1hbmFzaGkuanAiLCJ5YW1hbmFzaGkueWFtYW5hc2hpLmpwIiwia2UiLCJhYy5rZSIsImNvLmtlIiwiZ28ua2UiLCJpbmZvLmtlIiwibWUua2UiLCJtb2JpLmtlIiwibmUua2UiLCJvci5rZSIs''@;'; put 'put ''InNjLmtlIiwia2ciLCJvcmcua2ciLCJuZXQua2ciLCJjb20ua2ciLCJlZHUua2ciLCJnb3Yua2ciLCJtaWwua2ciLCIqLmtoIiwia2kiLCJlZHUua2kiLCJiaXoua2kiLCJuZXQua2kiLCJvcmcua2kiLCJnb3Yua2kiLCJpbmZvLmtpIiwiY29tLmtpIiwia20iLCJvcmcua20iLCJub20ua20i''@;'; put 'put ''LCJnb3Yua20iLCJwcmQua20iLCJ0bS5rbSIsImVkdS5rbSIsIm1pbC5rbSIsImFzcy5rbSIsImNvbS5rbSIsImNvb3Aua20iLCJhc3NvLmttIiwicHJlc3NlLmttIiwibWVkZWNpbi5rbSIsIm5vdGFpcmVzLmttIiwicGhhcm1hY2llbnMua20iLCJ2ZXRlcmluYWlyZS5rbSIsImdvdXYua20i''@;'; put 'put ''LCJrbiIsIm5ldC5rbiIsIm9yZy5rbiIsImVkdS5rbiIsImdvdi5rbiIsImtwIiwiY29tLmtwIiwiZWR1LmtwIiwiZ292LmtwIiwib3JnLmtwIiwicmVwLmtwIiwidHJhLmtwIiwia3IiLCJhYy5rciIsImNvLmtyIiwiZXMua3IiLCJnby5rciIsImhzLmtyIiwia2cua3IiLCJtaWwua3IiLCJt''@;'; put 'put ''cy5rciIsIm5lLmtyIiwib3Iua3IiLCJwZS5rciIsInJlLmtyIiwic2Mua3IiLCJidXNhbi5rciIsImNodW5nYnVrLmtyIiwiY2h1bmduYW0ua3IiLCJkYWVndS5rciIsImRhZWplb24ua3IiLCJnYW5nd29uLmtyIiwiZ3dhbmdqdS5rciIsImd5ZW9uZ2J1ay5rciIsImd5ZW9uZ2dpLmtyIiwi''@;'; put 'put ''Z3llb25nbmFtLmtyIiwiaW5jaGVvbi5rciIsImplanUua3IiLCJqZW9uYnVrLmtyIiwiamVvbm5hbS5rciIsInNlb3VsLmtyIiwidWxzYW4ua3IiLCJrdyIsImNvbS5rdyIsImVkdS5rdyIsImVtYi5rdyIsImdvdi5rdyIsImluZC5rdyIsIm5ldC5rdyIsIm9yZy5rdyIsImt5IiwiZWR1Lmt5''@;'; put 'put ''IiwiZ292Lmt5IiwiY29tLmt5Iiwib3JnLmt5IiwibmV0Lmt5Iiwia3oiLCJvcmcua3oiLCJlZHUua3oiLCJuZXQua3oiLCJnb3Yua3oiLCJtaWwua3oiLCJjb20ua3oiLCJsYSIsImludC5sYSIsIm5ldC5sYSIsImluZm8ubGEiLCJlZHUubGEiLCJnb3YubGEiLCJwZXIubGEiLCJjb20ubGEi''@;'; put 'put ''LCJvcmcubGEiLCJsYiIsImNvbS5sYiIsImVkdS5sYiIsImdvdi5sYiIsIm5ldC5sYiIsIm9yZy5sYiIsImxjIiwiY29tLmxjIiwibmV0LmxjIiwiY28ubGMiLCJvcmcubGMiLCJlZHUubGMiLCJnb3YubGMiLCJsaSIsImxrIiwiZ292LmxrIiwic2NoLmxrIiwibmV0LmxrIiwiaW50LmxrIiwi''@;'; put 'put ''Y29tLmxrIiwib3JnLmxrIiwiZWR1LmxrIiwibmdvLmxrIiwic29jLmxrIiwid2ViLmxrIiwibHRkLmxrIiwiYXNzbi5sayIsImdycC5sayIsImhvdGVsLmxrIiwiYWMubGsiLCJsciIsImNvbS5sciIsImVkdS5sciIsImdvdi5sciIsIm9yZy5sciIsIm5ldC5sciIsImxzIiwiYWMubHMiLCJi''@;'; put 'put ''aXoubHMiLCJjby5scyIsImVkdS5scyIsImdvdi5scyIsImluZm8ubHMiLCJuZXQubHMiLCJvcmcubHMiLCJzYy5scyIsImx0IiwiZ292Lmx0IiwibHUiLCJsdiIsImNvbS5sdiIsImVkdS5sdiIsImdvdi5sdiIsIm9yZy5sdiIsIm1pbC5sdiIsImlkLmx2IiwibmV0Lmx2IiwiYXNuLmx2Iiwi''@;'; put 'put ''Y29uZi5sdiIsImx5IiwiY29tLmx5IiwibmV0Lmx5IiwiZ292Lmx5IiwicGxjLmx5IiwiZWR1Lmx5Iiwic2NoLmx5IiwibWVkLmx5Iiwib3JnLmx5IiwiaWQubHkiLCJtYSIsImNvLm1hIiwibmV0Lm1hIiwiZ292Lm1hIiwib3JnLm1hIiwiYWMubWEiLCJwcmVzcy5tYSIsIm1jIiwidG0ubWMi''@;'; put 'put ''LCJhc3NvLm1jIiwibWQiLCJtZSIsImNvLm1lIiwibmV0Lm1lIiwib3JnLm1lIiwiZWR1Lm1lIiwiYWMubWUiLCJnb3YubWUiLCJpdHMubWUiLCJwcml2Lm1lIiwibWciLCJvcmcubWciLCJub20ubWciLCJnb3YubWciLCJwcmQubWciLCJ0bS5tZyIsImVkdS5tZyIsIm1pbC5tZyIsImNvbS5t''@;'; put 'put ''ZyIsImNvLm1nIiwibWgiLCJtaWwiLCJtayIsImNvbS5tayIsIm9yZy5tayIsIm5ldC5tayIsImVkdS5tayIsImdvdi5tayIsImluZi5tayIsIm5hbWUubWsiLCJtbCIsImNvbS5tbCIsImVkdS5tbCIsImdvdXYubWwiLCJnb3YubWwiLCJuZXQubWwiLCJvcmcubWwiLCJwcmVzc2UubWwiLCIq''@;'; put 'put ''Lm1tIiwibW4iLCJnb3YubW4iLCJlZHUubW4iLCJvcmcubW4iLCJtbyIsImNvbS5tbyIsIm5ldC5tbyIsIm9yZy5tbyIsImVkdS5tbyIsImdvdi5tbyIsIm1vYmkiLCJtcCIsIm1xIiwibXIiLCJnb3YubXIiLCJtcyIsImNvbS5tcyIsImVkdS5tcyIsImdvdi5tcyIsIm5ldC5tcyIsIm9yZy5t''@;'; put 'put ''cyIsIm10IiwiY29tLm10IiwiZWR1Lm10IiwibmV0Lm10Iiwib3JnLm10IiwibXUiLCJjb20ubXUiLCJuZXQubXUiLCJvcmcubXUiLCJnb3YubXUiLCJhYy5tdSIsImNvLm11Iiwib3IubXUiLCJtdXNldW0iLCJhY2FkZW15Lm11c2V1bSIsImFncmljdWx0dXJlLm11c2V1bSIsImFpci5tdXNl''@;'; put 'put ''dW0iLCJhaXJndWFyZC5tdXNldW0iLCJhbGFiYW1hLm11c2V1bSIsImFsYXNrYS5tdXNldW0iLCJhbWJlci5tdXNldW0iLCJhbWJ1bGFuY2UubXVzZXVtIiwiYW1lcmljYW4ubXVzZXVtIiwiYW1lcmljYW5hLm11c2V1bSIsImFtZXJpY2FuYW50aXF1ZXMubXVzZXVtIiwiYW1lcmljYW5hcnQu''@;'; put 'put ''bXVzZXVtIiwiYW1zdGVyZGFtLm11c2V1bSIsImFuZC5tdXNldW0iLCJhbm5lZnJhbmsubXVzZXVtIiwiYW50aHJvLm11c2V1bSIsImFudGhyb3BvbG9neS5tdXNldW0iLCJhbnRpcXVlcy5tdXNldW0iLCJhcXVhcml1bS5tdXNldW0iLCJhcmJvcmV0dW0ubXVzZXVtIiwiYXJjaGFlb2xvZ2lj''@;'; put 'put ''YWwubXVzZXVtIiwiYXJjaGFlb2xvZ3kubXVzZXVtIiwiYXJjaGl0ZWN0dXJlLm11c2V1bSIsImFydC5tdXNldW0iLCJhcnRhbmRkZXNpZ24ubXVzZXVtIiwiYXJ0Y2VudGVyLm11c2V1bSIsImFydGRlY28ubXVzZXVtIiwiYXJ0ZWR1Y2F0aW9uLm11c2V1bSIsImFydGdhbGxlcnkubXVzZXVt''@;'; put 'put ''IiwiYXJ0cy5tdXNldW0iLCJhcnRzYW5kY3JhZnRzLm11c2V1bSIsImFzbWF0YXJ0Lm11c2V1bSIsImFzc2Fzc2luYXRpb24ubXVzZXVtIiwiYXNzaXNpLm11c2V1bSIsImFzc29jaWF0aW9uLm11c2V1bSIsImFzdHJvbm9teS5tdXNldW0iLCJhdGxhbnRhLm11c2V1bSIsImF1c3Rpbi5tdXNl''@;'; put 'put ''dW0iLCJhdXN0cmFsaWEubXVzZXVtIiwiYXV0b21vdGl2ZS5tdXNldW0iLCJhdmlhdGlvbi5tdXNldW0iLCJheGlzLm11c2V1bSIsImJhZGFqb3oubXVzZXVtIiwiYmFnaGRhZC5tdXNldW0iLCJiYWhuLm11c2V1bSIsImJhbGUubXVzZXVtIiwiYmFsdGltb3JlLm11c2V1bSIsImJhcmNlbG9u''@;'; put 'put ''YS5tdXNldW0iLCJiYXNlYmFsbC5tdXNldW0iLCJiYXNlbC5tdXNldW0iLCJiYXRocy5tdXNldW0iLCJiYXVlcm4ubXVzZXVtIiwiYmVhdXhhcnRzLm11c2V1bSIsImJlZWxkZW5nZWx1aWQubXVzZXVtIiwiYmVsbGV2dWUubXVzZXVtIiwiYmVyZ2JhdS5tdXNldW0iLCJiZXJrZWxleS5tdXNl''@;'; put 'put ''dW0iLCJiZXJsaW4ubXVzZXVtIiwiYmVybi5tdXNldW0iLCJiaWJsZS5tdXNldW0iLCJiaWxiYW8ubXVzZXVtIiwiYmlsbC5tdXNldW0iLCJiaXJkYXJ0Lm11c2V1bSIsImJpcnRocGxhY2UubXVzZXVtIiwiYm9ubi5tdXNldW0iLCJib3N0b24ubXVzZXVtIiwiYm90YW5pY2FsLm11c2V1bSIs''@;'; put 'put ''ImJvdGFuaWNhbGdhcmRlbi5tdXNldW0iLCJib3RhbmljZ2FyZGVuLm11c2V1bSIsImJvdGFueS5tdXNldW0iLCJicmFuZHl3aW5ldmFsbGV5Lm11c2V1bSIsImJyYXNpbC5tdXNldW0iLCJicmlzdG9sLm11c2V1bSIsImJyaXRpc2gubXVzZXVtIiwiYnJpdGlzaGNvbHVtYmlhLm11c2V1bSIs''@;'; put 'put ''ImJyb2FkY2FzdC5tdXNldW0iLCJicnVuZWwubXVzZXVtIiwiYnJ1c3NlbC5tdXNldW0iLCJicnVzc2Vscy5tdXNldW0iLCJicnV4ZWxsZXMubXVzZXVtIiwiYnVpbGRpbmcubXVzZXVtIiwiYnVyZ2hvZi5tdXNldW0iLCJidXMubXVzZXVtIiwiYnVzaGV5Lm11c2V1bSIsImNhZGFxdWVzLm11''@;'; put 'put ''c2V1bSIsImNhbGlmb3JuaWEubXVzZXVtIiwiY2FtYnJpZGdlLm11c2V1bSIsImNhbi5tdXNldW0iLCJjYW5hZGEubXVzZXVtIiwiY2FwZWJyZXRvbi5tdXNldW0iLCJjYXJyaWVyLm11c2V1bSIsImNhcnRvb25hcnQubXVzZXVtIiwiY2FzYWRlbGFtb25lZGEubXVzZXVtIiwiY2FzdGxlLm11''@;'; put 'put ''c2V1bSIsImNhc3RyZXMubXVzZXVtIiwiY2VsdGljLm11c2V1bSIsImNlbnRlci5tdXNldW0iLCJjaGF0dGFub29nYS5tdXNldW0iLCJjaGVsdGVuaGFtLm11c2V1bSIsImNoZXNhcGVha2ViYXkubXVzZXVtIiwiY2hpY2Fnby5tdXNldW0iLCJjaGlsZHJlbi5tdXNldW0iLCJjaGlsZHJlbnMu''@;'; put 'put ''bXVzZXVtIiwiY2hpbGRyZW5zZ2FyZGVuLm11c2V1bSIsImNoaXJvcHJhY3RpYy5tdXNldW0iLCJjaG9jb2xhdGUubXVzZXVtIiwiY2hyaXN0aWFuc2J1cmcubXVzZXVtIiwiY2luY2lubmF0aS5tdXNldW0iLCJjaW5lbWEubXVzZXVtIiwiY2lyY3VzLm11c2V1bSIsImNpdmlsaXNhdGlvbi5t''@;'; put 'put ''dXNldW0iLCJjaXZpbGl6YXRpb24ubXVzZXVtIiwiY2l2aWx3YXIubXVzZXVtIiwiY2xpbnRvbi5tdXNldW0iLCJjbG9jay5tdXNldW0iLCJjb2FsLm11c2V1bSIsImNvYXN0YWxkZWZlbmNlLm11c2V1bSIsImNvZHkubXVzZXVtIiwiY29sZHdhci5tdXNldW0iLCJjb2xsZWN0aW9uLm11c2V1''@;'; put 'put ''bSIsImNvbG9uaWFsd2lsbGlhbXNidXJnLm11c2V1bSIsImNvbG9yYWRvcGxhdGVhdS5tdXNldW0iLCJjb2x1bWJpYS5tdXNldW0iLCJjb2x1bWJ1cy5tdXNldW0iLCJjb21tdW5pY2F0aW9uLm11c2V1bSIsImNvbW11bmljYXRpb25zLm11c2V1bSIsImNvbW11bml0eS5tdXNldW0iLCJjb21w''@;'; put 'put ''dXRlci5tdXNldW0iLCJjb21wdXRlcmhpc3RvcnkubXVzZXVtIiwiY29tdW5pY2FceGU3XHhmNWVzLm11c2V1bSIsImNvbnRlbXBvcmFyeS5tdXNldW0iLCJjb250ZW1wb3JhcnlhcnQubXVzZXVtIiwiY29udmVudC5tdXNldW0iLCJjb3BlbmhhZ2VuLm11c2V1bSIsImNvcnBvcmF0aW9uLm11''@;'; put 'put ''c2V1bSIsImNvcnJlaW9zLWUtdGVsZWNvbXVuaWNhXHhlN1x4ZjVlcy5tdXNldW0iLCJjb3J2ZXR0ZS5tdXNldW0iLCJjb3N0dW1lLm11c2V1bSIsImNvdW50cnllc3RhdGUubXVzZXVtIiwiY291bnR5Lm11c2V1bSIsImNyYWZ0cy5tdXNldW0iLCJjcmFuYnJvb2subXVzZXVtIiwiY3JlYXRp''@;'; put 'put ''b24ubXVzZXVtIiwiY3VsdHVyYWwubXVzZXVtIiwiY3VsdHVyYWxjZW50ZXIubXVzZXVtIiwiY3VsdHVyZS5tdXNldW0iLCJjeWJlci5tdXNldW0iLCJjeW1ydS5tdXNldW0iLCJkYWxpLm11c2V1bSIsImRhbGxhcy5tdXNldW0iLCJkYXRhYmFzZS5tdXNldW0iLCJkZHIubXVzZXVtIiwiZGVj''@;'; put 'put ''b3JhdGl2ZWFydHMubXVzZXVtIiwiZGVsYXdhcmUubXVzZXVtIiwiZGVsbWVuaG9yc3QubXVzZXVtIiwiZGVubWFyay5tdXNldW0iLCJkZXBvdC5tdXNldW0iLCJkZXNpZ24ubXVzZXVtIiwiZGV0cm9pdC5tdXNldW0iLCJkaW5vc2F1ci5tdXNldW0iLCJkaXNjb3ZlcnkubXVzZXVtIiwiZG9s''@;'; put 'put ''bHMubXVzZXVtIiwiZG9ub3N0aWEubXVzZXVtIiwiZHVyaGFtLm11c2V1bSIsImVhc3RhZnJpY2EubXVzZXVtIiwiZWFzdGNvYXN0Lm11c2V1bSIsImVkdWNhdGlvbi5tdXNldW0iLCJlZHVjYXRpb25hbC5tdXNldW0iLCJlZ3lwdGlhbi5tdXNldW0iLCJlaXNlbmJhaG4ubXVzZXVtIiwiZWxi''@;'; put 'put ''dXJnLm11c2V1bSIsImVsdmVuZHJlbGwubXVzZXVtIiwiZW1icm9pZGVyeS5tdXNldW0iLCJlbmN5Y2xvcGVkaWMubXVzZXVtIiwiZW5nbGFuZC5tdXNldW0iLCJlbnRvbW9sb2d5Lm11c2V1bSIsImVudmlyb25tZW50Lm11c2V1bSIsImVudmlyb25tZW50YWxjb25zZXJ2YXRpb24ubXVzZXVt''@;'; put 'put ''IiwiZXBpbGVwc3kubXVzZXVtIiwiZXNzZXgubXVzZXVtIiwiZXN0YXRlLm11c2V1bSIsImV0aG5vbG9neS5tdXNldW0iLCJleGV0ZXIubXVzZXVtIiwiZXhoaWJpdGlvbi5tdXNldW0iLCJmYW1pbHkubXVzZXVtIiwiZmFybS5tdXNldW0iLCJmYXJtZXF1aXBtZW50Lm11c2V1bSIsImZhcm1l''@;'; put 'put ''cnMubXVzZXVtIiwiZmFybXN0ZWFkLm11c2V1bSIsImZpZWxkLm11c2V1bSIsImZpZ3VlcmVzLm11c2V1bSIsImZpbGF0ZWxpYS5tdXNldW0iLCJmaWxtLm11c2V1bSIsImZpbmVhcnQubXVzZXVtIiwiZmluZWFydHMubXVzZXVtIiwiZmlubGFuZC5tdXNldW0iLCJmbGFuZGVycy5tdXNldW0i''@;'; put 'put ''LCJmbG9yaWRhLm11c2V1bSIsImZvcmNlLm11c2V1bSIsImZvcnRtaXNzb3VsYS5tdXNldW0iLCJmb3J0d29ydGgubXVzZXVtIiwiZm91bmRhdGlvbi5tdXNldW0iLCJmcmFuY2Fpc2UubXVzZXVtIiwiZnJhbmtmdXJ0Lm11c2V1bSIsImZyYW56aXNrYW5lci5tdXNldW0iLCJmcmVlbWFzb25y''@;'; put 'put ''eS5tdXNldW0iLCJmcmVpYnVyZy5tdXNldW0iLCJmcmlib3VyZy5tdXNldW0iLCJmcm9nLm11c2V1bSIsImZ1bmRhY2lvLm11c2V1bSIsImZ1cm5pdHVyZS5tdXNldW0iLCJnYWxsZXJ5Lm11c2V1bSIsImdhcmRlbi5tdXNldW0iLCJnYXRld2F5Lm11c2V1bSIsImdlZWx2aW5jay5tdXNldW0i''@;'; put 'put ''LCJnZW1vbG9naWNhbC5tdXNldW0iLCJnZW9sb2d5Lm11c2V1bSIsImdlb3JnaWEubXVzZXVtIiwiZ2llc3Nlbi5tdXNldW0iLCJnbGFzLm11c2V1bSIsImdsYXNzLm11c2V1bSIsImdvcmdlLm11c2V1bSIsImdyYW5kcmFwaWRzLm11c2V1bSIsImdyYXoubXVzZXVtIiwiZ3Vlcm5zZXkubXVz''@;'; put 'put ''ZXVtIiwiaGFsbG9mZmFtZS5tdXNldW0iLCJoYW1idXJnLm11c2V1bSIsImhhbmRzb24ubXVzZXVtIiwiaGFydmVzdGNlbGVicmF0aW9uLm11c2V1bSIsImhhd2FpaS5tdXNldW0iLCJoZWFsdGgubXVzZXVtIiwiaGVpbWF0dW5kdWhyZW4ubXVzZXVtIiwiaGVsbGFzLm11c2V1bSIsImhlbHNp''@;'; put 'put ''bmtpLm11c2V1bSIsImhlbWJ5Z2RzZm9yYnVuZC5tdXNldW0iLCJoZXJpdGFnZS5tdXNldW0iLCJoaXN0b2lyZS5tdXNldW0iLCJoaXN0b3JpY2FsLm11c2V1bSIsImhpc3RvcmljYWxzb2NpZXR5Lm11c2V1bSIsImhpc3RvcmljaG91c2VzLm11c2V1bSIsImhpc3RvcmlzY2gubXVzZXVtIiwi''@;'; put 'put ''aGlzdG9yaXNjaGVzLm11c2V1bSIsImhpc3RvcnkubXVzZXVtIiwiaGlzdG9yeW9mc2NpZW5jZS5tdXNldW0iLCJob3JvbG9neS5tdXNldW0iLCJob3VzZS5tdXNldW0iLCJodW1hbml0aWVzLm11c2V1bSIsImlsbHVzdHJhdGlvbi5tdXNldW0iLCJpbWFnZWFuZHNvdW5kLm11c2V1bSIsImlu''@;'; put 'put ''ZGlhbi5tdXNldW0iLCJpbmRpYW5hLm11c2V1bSIsImluZGlhbmFwb2xpcy5tdXNldW0iLCJpbmRpYW5tYXJrZXQubXVzZXVtIiwiaW50ZWxsaWdlbmNlLm11c2V1bSIsImludGVyYWN0aXZlLm11c2V1bSIsImlyYXEubXVzZXVtIiwiaXJvbi5tdXNldW0iLCJpc2xlb2ZtYW4ubXVzZXVtIiwi''@;'; put 'put ''amFtaXNvbi5tdXNldW0iLCJqZWZmZXJzb24ubXVzZXVtIiwiamVydXNhbGVtLm11c2V1bSIsImpld2VscnkubXVzZXVtIiwiamV3aXNoLm11c2V1bSIsImpld2lzaGFydC5tdXNldW0iLCJqZmsubXVzZXVtIiwiam91cm5hbGlzbS5tdXNldW0iLCJqdWRhaWNhLm11c2V1bSIsImp1ZHlnYXJs''@;'; put 'put ''YW5kLm11c2V1bSIsImp1ZWRpc2NoZXMubXVzZXVtIiwianVpZi5tdXNldW0iLCJrYXJhdGUubXVzZXVtIiwia2FyaWthdHVyLm11c2V1bSIsImtpZHMubXVzZXVtIiwia29lYmVuaGF2bi5tdXNldW0iLCJrb2Vsbi5tdXNldW0iLCJrdW5zdC5tdXNldW0iLCJrdW5zdHNhbW1sdW5nLm11c2V1''@;'; put 'put ''bSIsImt1bnN0dW5kZGVzaWduLm11c2V1bSIsImxhYm9yLm11c2V1bSIsImxhYm91ci5tdXNldW0iLCJsYWpvbGxhLm11c2V1bSIsImxhbmNhc2hpcmUubXVzZXVtIiwibGFuZGVzLm11c2V1bSIsImxhbnMubXVzZXVtIiwibFx4ZTRucy5tdXNldW0iLCJsYXJzc29uLm11c2V1bSIsImxld2lz''@;'; put 'put ''bWlsbGVyLm11c2V1bSIsImxpbmNvbG4ubXVzZXVtIiwibGluei5tdXNldW0iLCJsaXZpbmcubXVzZXVtIiwibGl2aW5naGlzdG9yeS5tdXNldW0iLCJsb2NhbGhpc3RvcnkubXVzZXVtIiwibG9uZG9uLm11c2V1bSIsImxvc2FuZ2VsZXMubXVzZXVtIiwibG91dnJlLm11c2V1bSIsImxveWFs''@;'; put 'put ''aXN0Lm11c2V1bSIsImx1Y2VybmUubXVzZXVtIiwibHV4ZW1ib3VyZy5tdXNldW0iLCJsdXplcm4ubXVzZXVtIiwibWFkLm11c2V1bSIsIm1hZHJpZC5tdXNldW0iLCJtYWxsb3JjYS5tdXNldW0iLCJtYW5jaGVzdGVyLm11c2V1bSIsIm1hbnNpb24ubXVzZXVtIiwibWFuc2lvbnMubXVzZXVt''@;'; put 'put ''IiwibWFueC5tdXNldW0iLCJtYXJidXJnLm11c2V1bSIsIm1hcml0aW1lLm11c2V1bSIsIm1hcml0aW1vLm11c2V1bSIsIm1hcnlsYW5kLm11c2V1bSIsIm1hcnlsaHVyc3QubXVzZXVtIiwibWVkaWEubXVzZXVtIiwibWVkaWNhbC5tdXNldW0iLCJtZWRpemluaGlzdG9yaXNjaGVzLm11c2V1''@;'; put 'put ''bSIsIm1lZXJlcy5tdXNldW0iLCJtZW1vcmlhbC5tdXNldW0iLCJtZXNhdmVyZGUubXVzZXVtIiwibWljaGlnYW4ubXVzZXVtIiwibWlkYXRsYW50aWMubXVzZXVtIiwibWlsaXRhcnkubXVzZXVtIiwibWlsbC5tdXNldW0iLCJtaW5lcnMubXVzZXVtIiwibWluaW5nLm11c2V1bSIsIm1pbm5l''@;'; put 'put ''c290YS5tdXNldW0iLCJtaXNzaWxlLm11c2V1bSIsIm1pc3NvdWxhLm11c2V1bSIsIm1vZGVybi5tdXNldW0iLCJtb21hLm11c2V1bSIsIm1vbmV5Lm11c2V1bSIsIm1vbm1vdXRoLm11c2V1bSIsIm1vbnRpY2VsbG8ubXVzZXVtIiwibW9udHJlYWwubXVzZXVtIiwibW9zY293Lm11c2V1bSIs''@;'; put 'put ''Im1vdG9yY3ljbGUubXVzZXVtIiwibXVlbmNoZW4ubXVzZXVtIiwibXVlbnN0ZXIubXVzZXVtIiwibXVsaG91c2UubXVzZXVtIiwibXVuY2llLm11c2V1bSIsIm11c2VldC5tdXNldW0iLCJtdXNldW1jZW50ZXIubXVzZXVtIiwibXVzZXVtdmVyZW5pZ2luZy5tdXNldW0iLCJtdXNpYy5tdXNl''@;'; put 'put ''dW0iLCJuYXRpb25hbC5tdXNldW0iLCJuYXRpb25hbGZpcmVhcm1zLm11c2V1bSIsIm5hdGlvbmFsaGVyaXRhZ2UubXVzZXVtIiwibmF0aXZlYW1lcmljYW4ubXVzZXVtIiwibmF0dXJhbGhpc3RvcnkubXVzZXVtIiwibmF0dXJhbGhpc3RvcnltdXNldW0ubXVzZXVtIiwibmF0dXJhbHNjaWVu''@;'; put 'put ''Y2VzLm11c2V1bSIsIm5hdHVyZS5tdXNldW0iLCJuYXR1cmhpc3RvcmlzY2hlcy5tdXNldW0iLCJuYXR1dXJ3ZXRlbnNjaGFwcGVuLm11c2V1bSIsIm5hdW1idXJnLm11c2V1bSIsIm5hdmFsLm11c2V1bSIsIm5lYnJhc2thLm11c2V1bSIsIm5ldWVzLm11c2V1bSIsIm5ld2hhbXBzaGlyZS5t''@;'; put 'put ''dXNldW0iLCJuZXdqZXJzZXkubXVzZXVtIiwibmV3bWV4aWNvLm11c2V1bSIsIm5ld3BvcnQubXVzZXVtIiwibmV3c3BhcGVyLm11c2V1bSIsIm5ld3lvcmsubXVzZXVtIiwibmllcGNlLm11c2V1bSIsIm5vcmZvbGsubXVzZXVtIiwibm9ydGgubXVzZXVtIiwibnJ3Lm11c2V1bSIsIm55Yy5t''@;'; put 'put ''dXNldW0iLCJueW55Lm11c2V1bSIsIm9jZWFub2dyYXBoaWMubXVzZXVtIiwib2NlYW5vZ3JhcGhpcXVlLm11c2V1bSIsIm9tYWhhLm11c2V1bSIsIm9ubGluZS5tdXNldW0iLCJvbnRhcmlvLm11c2V1bSIsIm9wZW5haXIubXVzZXVtIiwib3JlZ29uLm11c2V1bSIsIm9yZWdvbnRyYWlsLm11''@;'; put 'put ''c2V1bSIsIm90YWdvLm11c2V1bSIsIm94Zm9yZC5tdXNldW0iLCJwYWNpZmljLm11c2V1bSIsInBhZGVyYm9ybi5tdXNldW0iLCJwYWxhY2UubXVzZXVtIiwicGFsZW8ubXVzZXVtIiwicGFsbXNwcmluZ3MubXVzZXVtIiwicGFuYW1hLm11c2V1bSIsInBhcmlzLm11c2V1bSIsInBhc2FkZW5h''@;'; put 'put ''Lm11c2V1bSIsInBoYXJtYWN5Lm11c2V1bSIsInBoaWxhZGVscGhpYS5tdXNldW0iLCJwaGlsYWRlbHBoaWFhcmVhLm11c2V1bSIsInBoaWxhdGVseS5tdXNldW0iLCJwaG9lbml4Lm11c2V1bSIsInBob3RvZ3JhcGh5Lm11c2V1bSIsInBpbG90cy5tdXNldW0iLCJwaXR0c2J1cmdoLm11c2V1''@;'; put 'put ''bSIsInBsYW5ldGFyaXVtLm11c2V1bSIsInBsYW50YXRpb24ubXVzZXVtIiwicGxhbnRzLm11c2V1bSIsInBsYXphLm11c2V1bSIsInBvcnRhbC5tdXNldW0iLCJwb3J0bGFuZC5tdXNldW0iLCJwb3J0bGxpZ2F0Lm11c2V1bSIsInBvc3RzLWFuZC10ZWxlY29tbXVuaWNhdGlvbnMubXVzZXVt''@;'; put 'put ''IiwicHJlc2VydmF0aW9uLm11c2V1bSIsInByZXNpZGlvLm11c2V1bSIsInByZXNzLm11c2V1bSIsInByb2plY3QubXVzZXVtIiwicHVibGljLm11c2V1bSIsInB1Ym9sLm11c2V1bSIsInF1ZWJlYy5tdXNldW0iLCJyYWlscm9hZC5tdXNldW0iLCJyYWlsd2F5Lm11c2V1bSIsInJlc2VhcmNo''@;'; put 'put ''Lm11c2V1bSIsInJlc2lzdGFuY2UubXVzZXVtIiwicmlvZGVqYW5laXJvLm11c2V1bSIsInJvY2hlc3Rlci5tdXNldW0iLCJyb2NrYXJ0Lm11c2V1bSIsInJvbWEubXVzZXVtIiwicnVzc2lhLm11c2V1bSIsInNhaW50bG91aXMubXVzZXVtIiwic2FsZW0ubXVzZXVtIiwic2FsdmFkb3JkYWxp''@;'; put 'put ''Lm11c2V1bSIsInNhbHpidXJnLm11c2V1bSIsInNhbmRpZWdvLm11c2V1bSIsInNhbmZyYW5jaXNjby5tdXNldW0iLCJzYW50YWJhcmJhcmEubXVzZXVtIiwic2FudGFjcnV6Lm11c2V1bSIsInNhbnRhZmUubXVzZXVtIiwic2Fza2F0Y2hld2FuLm11c2V1bSIsInNhdHgubXVzZXVtIiwic2F2''@;'; put 'put ''YW5uYWhnYS5tdXNldW0iLCJzY2hsZXNpc2NoZXMubXVzZXVtIiwic2Nob2VuYnJ1bm4ubXVzZXVtIiwic2Nob2tvbGFkZW4ubXVzZXVtIiwic2Nob29sLm11c2V1bSIsInNjaHdlaXoubXVzZXVtIiwic2NpZW5jZS5tdXNldW0iLCJzY2llbmNlYW5kaGlzdG9yeS5tdXNldW0iLCJzY2llbmNl''@;'; put 'put ''YW5kaW5kdXN0cnkubXVzZXVtIiwic2NpZW5jZWNlbnRlci5tdXNldW0iLCJzY2llbmNlY2VudGVycy5tdXNldW0iLCJzY2llbmNlLWZpY3Rpb24ubXVzZXVtIiwic2NpZW5jZWhpc3RvcnkubXVzZXVtIiwic2NpZW5jZXMubXVzZXVtIiwic2NpZW5jZXNuYXR1cmVsbGVzLm11c2V1bSIsInNj''@;'; put 'put ''b3RsYW5kLm11c2V1bSIsInNlYXBvcnQubXVzZXVtIiwic2V0dGxlbWVudC5tdXNldW0iLCJzZXR0bGVycy5tdXNldW0iLCJzaGVsbC5tdXNldW0iLCJzaGVyYnJvb2tlLm11c2V1bSIsInNpYmVuaWsubXVzZXVtIiwic2lsay5tdXNldW0iLCJza2kubXVzZXVtIiwic2tvbGUubXVzZXVtIiwi''@;'; put 'put ''c29jaWV0eS5tdXNldW0iLCJzb2xvZ25lLm11c2V1bSIsInNvdW5kYW5kdmlzaW9uLm11c2V1bSIsInNvdXRoY2Fyb2xpbmEubXVzZXVtIiwic291dGh3ZXN0Lm11c2V1bSIsInNwYWNlLm11c2V1bSIsInNweS5tdXNldW0iLCJzcXVhcmUubXVzZXVtIiwic3RhZHQubXVzZXVtIiwic3RhbGJh''@;'; put 'put ''bnMubXVzZXVtIiwic3Rhcm5iZXJnLm11c2V1bSIsInN0YXRlLm11c2V1bSIsInN0YXRlb2ZkZWxhd2FyZS5tdXNldW0iLCJzdGF0aW9uLm11c2V1bSIsInN0ZWFtLm11c2V1bSIsInN0ZWllcm1hcmsubXVzZXVtIiwic3Rqb2huLm11c2V1bSIsInN0b2NraG9sbS5tdXNldW0iLCJzdHBldGVy''@;'; put 'put ''c2J1cmcubXVzZXVtIiwic3R1dHRnYXJ0Lm11c2V1bSIsInN1aXNzZS5tdXNldW0iLCJzdXJnZW9uc2hhbGwubXVzZXVtIiwic3VycmV5Lm11c2V1bSIsInN2aXp6ZXJhLm11c2V1bSIsInN3ZWRlbi5tdXNldW0iLCJzeWRuZXkubXVzZXVtIiwidGFuay5tdXNldW0iLCJ0Y20ubXVzZXVtIiwi''@;'; put 'put ''dGVjaG5vbG9neS5tdXNldW0iLCJ0ZWxla29tbXVuaWthdGlvbi5tdXNldW0iLCJ0ZWxldmlzaW9uLm11c2V1bSIsInRleGFzLm11c2V1bSIsInRleHRpbGUubXVzZXVtIiwidGhlYXRlci5tdXNldW0iLCJ0aW1lLm11c2V1bSIsInRpbWVrZWVwaW5nLm11c2V1bSIsInRvcG9sb2d5Lm11c2V1''@;'; put 'put ''bSIsInRvcmluby5tdXNldW0iLCJ0b3VjaC5tdXNldW0iLCJ0b3duLm11c2V1bSIsInRyYW5zcG9ydC5tdXNldW0iLCJ0cmVlLm11c2V1bSIsInRyb2xsZXkubXVzZXVtIiwidHJ1c3QubXVzZXVtIiwidHJ1c3RlZS5tdXNldW0iLCJ1aHJlbi5tdXNldW0iLCJ1bG0ubXVzZXVtIiwidW5kZXJz''@;'; put 'put ''ZWEubXVzZXVtIiwidW5pdmVyc2l0eS5tdXNldW0iLCJ1c2EubXVzZXVtIiwidXNhbnRpcXVlcy5tdXNldW0iLCJ1c2FydHMubXVzZXVtIiwidXNjb3VudHJ5ZXN0YXRlLm11c2V1bSIsInVzY3VsdHVyZS5tdXNldW0iLCJ1c2RlY29yYXRpdmVhcnRzLm11c2V1bSIsInVzZ2FyZGVuLm11c2V1''@;'; put 'put ''bSIsInVzaGlzdG9yeS5tdXNldW0iLCJ1c2h1YWlhLm11c2V1bSIsInVzbGl2aW5naGlzdG9yeS5tdXNldW0iLCJ1dGFoLm11c2V1bSIsInV2aWMubXVzZXVtIiwidmFsbGV5Lm11c2V1bSIsInZhbnRhYS5tdXNldW0iLCJ2ZXJzYWlsbGVzLm11c2V1bSIsInZpa2luZy5tdXNldW0iLCJ2aWxs''@;'; put 'put ''YWdlLm11c2V1bSIsInZpcmdpbmlhLm11c2V1bSIsInZpcnR1YWwubXVzZXVtIiwidmlydHVlbC5tdXNldW0iLCJ2bGFhbmRlcmVuLm11c2V1bSIsInZvbGtlbmt1bmRlLm11c2V1bSIsIndhbGVzLm11c2V1bSIsIndhbGxvbmllLm11c2V1bSIsIndhci5tdXNldW0iLCJ3YXNoaW5ndG9uZGMu''@;'; put 'put ''bXVzZXVtIiwid2F0Y2hhbmRjbG9jay5tdXNldW0iLCJ3YXRjaC1hbmQtY2xvY2subXVzZXVtIiwid2VzdGVybi5tdXNldW0iLCJ3ZXN0ZmFsZW4ubXVzZXVtIiwid2hhbGluZy5tdXNldW0iLCJ3aWxkbGlmZS5tdXNldW0iLCJ3aWxsaWFtc2J1cmcubXVzZXVtIiwid2luZG1pbGwubXVzZXVt''@;'; put 'put ''Iiwid29ya3Nob3AubXVzZXVtIiwieW9yay5tdXNldW0iLCJ5b3Jrc2hpcmUubXVzZXVtIiwieW9zZW1pdGUubXVzZXVtIiwieW91dGgubXVzZXVtIiwiem9vbG9naWNhbC5tdXNldW0iLCJ6b29sb2d5Lm11c2V1bSIsIlx1MDVkOVx1MDVlOFx1MDVkNVx1MDVlOVx1MDVkY1x1MDVkOVx1MDVk''@;'; put 'put ''ZC5tdXNldW0iLCJcdTA0MzhcdTA0M2FcdTA0M2VcdTA0M2MubXVzZXVtIiwibXYiLCJhZXJvLm12IiwiYml6Lm12IiwiY29tLm12IiwiY29vcC5tdiIsImVkdS5tdiIsImdvdi5tdiIsImluZm8ubXYiLCJpbnQubXYiLCJtaWwubXYiLCJtdXNldW0ubXYiLCJuYW1lLm12IiwibmV0Lm12Iiwi''@;'; put 'put ''b3JnLm12IiwicHJvLm12IiwibXciLCJhYy5tdyIsImJpei5tdyIsImNvLm13IiwiY29tLm13IiwiY29vcC5tdyIsImVkdS5tdyIsImdvdi5tdyIsImludC5tdyIsIm11c2V1bS5tdyIsIm5ldC5tdyIsIm9yZy5tdyIsIm14IiwiY29tLm14Iiwib3JnLm14IiwiZ29iLm14IiwiZWR1Lm14Iiwi''@;'; put 'put ''bmV0Lm14IiwibXkiLCJjb20ubXkiLCJuZXQubXkiLCJvcmcubXkiLCJnb3YubXkiLCJlZHUubXkiLCJtaWwubXkiLCJuYW1lLm15IiwibXoiLCJhYy5teiIsImFkdi5teiIsImNvLm16IiwiZWR1Lm16IiwiZ292Lm16IiwibWlsLm16IiwibmV0Lm16Iiwib3JnLm16IiwibmEiLCJpbmZvLm5h''@;'; put 'put ''IiwicHJvLm5hIiwibmFtZS5uYSIsInNjaG9vbC5uYSIsIm9yLm5hIiwiZHIubmEiLCJ1cy5uYSIsIm14Lm5hIiwiY2EubmEiLCJpbi5uYSIsImNjLm5hIiwidHYubmEiLCJ3cy5uYSIsIm1vYmkubmEiLCJjby5uYSIsImNvbS5uYSIsIm9yZy5uYSIsIm5hbWUiLCJuYyIsImFzc28ubmMiLCJu''@;'; put 'put ''b20ubmMiLCJuZSIsIm5ldCIsIm5mIiwiY29tLm5mIiwibmV0Lm5mIiwicGVyLm5mIiwicmVjLm5mIiwid2ViLm5mIiwiYXJ0cy5uZiIsImZpcm0ubmYiLCJpbmZvLm5mIiwib3RoZXIubmYiLCJzdG9yZS5uZiIsIm5nIiwiY29tLm5nIiwiZWR1Lm5nIiwiZ292Lm5nIiwiaS5uZyIsIm1pbC5u''@;'; put 'put ''ZyIsIm1vYmkubmciLCJuYW1lLm5nIiwibmV0Lm5nIiwib3JnLm5nIiwic2NoLm5nIiwibmkiLCJhYy5uaSIsImJpei5uaSIsImNvLm5pIiwiY29tLm5pIiwiZWR1Lm5pIiwiZ29iLm5pIiwiaW4ubmkiLCJpbmZvLm5pIiwiaW50Lm5pIiwibWlsLm5pIiwibmV0Lm5pIiwibm9tLm5pIiwib3Jn''@;'; put 'put ''Lm5pIiwid2ViLm5pIiwibmwiLCJubyIsImZocy5ubyIsInZncy5ubyIsImZ5bGtlc2JpYmwubm8iLCJmb2xrZWJpYmwubm8iLCJtdXNldW0ubm8iLCJpZHJldHQubm8iLCJwcml2Lm5vIiwibWlsLm5vIiwic3RhdC5ubyIsImRlcC5ubyIsImtvbW11bmUubm8iLCJoZXJhZC5ubyIsImFhLm5v''@;'; put 'put ''IiwiYWgubm8iLCJidS5ubyIsImZtLm5vIiwiaGwubm8iLCJobS5ubyIsImphbi1tYXllbi5ubyIsIm1yLm5vIiwibmwubm8iLCJudC5ubyIsIm9mLm5vIiwib2wubm8iLCJvc2xvLm5vIiwicmwubm8iLCJzZi5ubyIsInN0Lm5vIiwic3ZhbGJhcmQubm8iLCJ0bS5ubyIsInRyLm5vIiwidmEu''@;'; put 'put ''bm8iLCJ2Zi5ubyIsImdzLmFhLm5vIiwiZ3MuYWgubm8iLCJncy5idS5ubyIsImdzLmZtLm5vIiwiZ3MuaGwubm8iLCJncy5obS5ubyIsImdzLmphbi1tYXllbi5ubyIsImdzLm1yLm5vIiwiZ3Mubmwubm8iLCJncy5udC5ubyIsImdzLm9mLm5vIiwiZ3Mub2wubm8iLCJncy5vc2xvLm5vIiwi''@;'; put 'put ''Z3Mucmwubm8iLCJncy5zZi5ubyIsImdzLnN0Lm5vIiwiZ3Muc3ZhbGJhcmQubm8iLCJncy50bS5ubyIsImdzLnRyLm5vIiwiZ3MudmEubm8iLCJncy52Zi5ubyIsImFrcmVoYW1uLm5vIiwiXHhlNWtyZWhhbW4ubm8iLCJhbGdhcmQubm8iLCJceGU1bGdceGU1cmQubm8iLCJhcm5hLm5vIiwi''@;'; put 'put ''YnJ1bXVuZGRhbC5ubyIsImJyeW5lLm5vIiwiYnJvbm5veXN1bmQubm8iLCJiclx4Zjhublx4Zjh5c3VuZC5ubyIsImRyb2Jhay5ubyIsImRyXHhmOGJhay5ubyIsImVnZXJzdW5kLm5vIiwiZmV0c3VuZC5ubyIsImZsb3JvLm5vIiwiZmxvclx4Zjgubm8iLCJmcmVkcmlrc3RhZC5ubyIsImhv''@;'; put 'put ''a2tzdW5kLm5vIiwiaG9uZWZvc3Mubm8iLCJoXHhmOG5lZm9zcy5ubyIsImplc3NoZWltLm5vIiwiam9ycGVsYW5kLm5vIiwialx4ZjhycGVsYW5kLm5vIiwia2lya2VuZXMubm8iLCJrb3BlcnZpay5ubyIsImtyb2tzdGFkZWx2YS5ubyIsImxhbmdldmFnLm5vIiwibGFuZ2V2XHhlNWcubm8i''@;'; put 'put ''LCJsZWlydmlrLm5vIiwibWpvbmRhbGVuLm5vIiwibWpceGY4bmRhbGVuLm5vIiwibW8taS1yYW5hLm5vIiwibW9zam9lbi5ubyIsIm1vc2pceGY4ZW4ubm8iLCJuZXNvZGR0YW5nZW4ubm8iLCJvcmthbmdlci5ubyIsIm9zb3lyby5ubyIsIm9zXHhmOHlyby5ubyIsInJhaG9sdC5ubyIsInJc''@;'; put 'put ''eGU1aG9sdC5ubyIsInNhbmRuZXNzam9lbi5ubyIsInNhbmRuZXNzalx4Zjhlbi5ubyIsInNrZWRzbW9rb3JzZXQubm8iLCJzbGF0dHVtLm5vIiwic3BqZWxrYXZpay5ubyIsInN0YXRoZWxsZS5ubyIsInN0YXZlcm4ubm8iLCJzdGpvcmRhbHNoYWxzZW4ubm8iLCJzdGpceGY4cmRhbHNoYWxz''@;'; put 'put ''ZW4ubm8iLCJ0YW5hbmdlci5ubyIsInRyYW5ieS5ubyIsInZvc3NldmFuZ2VuLm5vIiwiYWZqb3JkLm5vIiwiXHhlNWZqb3JkLm5vIiwiYWdkZW5lcy5ubyIsImFsLm5vIiwiXHhlNWwubm8iLCJhbGVzdW5kLm5vIiwiXHhlNWxlc3VuZC5ubyIsImFsc3RhaGF1Zy5ubyIsImFsdGEubm8iLCJc''@;'; put 'put ''eGUxbHRceGUxLm5vIiwiYWxhaGVhZGp1Lm5vIiwiXHhlMWxhaGVhZGp1Lm5vIiwiYWx2ZGFsLm5vIiwiYW1saS5ubyIsIlx4ZTVtbGkubm8iLCJhbW90Lm5vIiwiXHhlNW1vdC5ubyIsImFuZGVidS5ubyIsImFuZG95Lm5vIiwiYW5kXHhmOHkubm8iLCJhbmRhc3VvbG8ubm8iLCJhcmRhbC5u''@;'; put 'put ''byIsIlx4ZTVyZGFsLm5vIiwiYXJlbWFyay5ubyIsImFyZW5kYWwubm8iLCJceGU1cy5ubyIsImFzZXJhbC5ubyIsIlx4ZTVzZXJhbC5ubyIsImFza2VyLm5vIiwiYXNraW0ubm8iLCJhc2t2b2xsLm5vIiwiYXNrb3kubm8iLCJhc2tceGY4eS5ubyIsImFzbmVzLm5vIiwiXHhlNXNuZXMubm8i''@;'; put 'put ''LCJhdWRuZWRhbG4ubm8iLCJhdWtyYS5ubyIsImF1cmUubm8iLCJhdXJsYW5kLm5vIiwiYXVyc2tvZy1ob2xhbmQubm8iLCJhdXJza29nLWhceGY4bGFuZC5ubyIsImF1c3Rldm9sbC5ubyIsImF1c3RyaGVpbS5ubyIsImF2ZXJveS5ubyIsImF2ZXJceGY4eS5ubyIsImJhbGVzdHJhbmQubm8i''@;'; put 'put ''LCJiYWxsYW5nZW4ubm8iLCJiYWxhdC5ubyIsImJceGUxbFx4ZTF0Lm5vIiwiYmFsc2Zqb3JkLm5vIiwiYmFoY2NhdnVvdG5hLm5vIiwiYlx4ZTFoY2NhdnVvdG5hLm5vIiwiYmFtYmxlLm5vIiwiYmFyZHUubm8iLCJiZWFyZHUubm8iLCJiZWlhcm4ubm8iLCJiYWpkZGFyLm5vIiwiYlx4ZTFq''@;'; put 'put ''ZGRhci5ubyIsImJhaWRhci5ubyIsImJceGUxaWRceGUxci5ubyIsImJlcmcubm8iLCJiZXJnZW4ubm8iLCJiZXJsZXZhZy5ubyIsImJlcmxldlx4ZTVnLm5vIiwiYmVhcmFsdmFoa2kubm8iLCJiZWFyYWx2XHhlMWhraS5ubyIsImJpbmRhbC5ubyIsImJpcmtlbmVzLm5vIiwiYmphcmtveS5u''@;'; put 'put ''byIsImJqYXJrXHhmOHkubm8iLCJiamVya3JlaW0ubm8iLCJianVnbi5ubyIsImJvZG8ubm8iLCJib2RceGY4Lm5vIiwiYmFkYWRkamEubm8iLCJiXHhlNWRceGU1ZGRqXHhlNS5ubyIsImJ1ZGVqanUubm8iLCJib2tuLm5vIiwiYnJlbWFuZ2VyLm5vIiwiYnJvbm5veS5ubyIsImJyXHhmOG5u''@;'; put 'put ''XHhmOHkubm8iLCJieWdsYW5kLm5vIiwiYnlrbGUubm8iLCJiYXJ1bS5ubyIsImJceGU2cnVtLm5vIiwiYm8udGVsZW1hcmsubm8iLCJiXHhmOC50ZWxlbWFyay5ubyIsImJvLm5vcmRsYW5kLm5vIiwiYlx4Zjgubm9yZGxhbmQubm8iLCJiaWV2YXQubm8iLCJiaWV2XHhlMXQubm8iLCJib21s''@;'; put 'put ''by5ubyIsImJceGY4bWxvLm5vIiwiYmF0c2Zqb3JkLm5vIiwiYlx4ZTV0c2Zqb3JkLm5vIiwiYmFoY2F2dW90bmEubm8iLCJiXHhlMWhjYXZ1b3RuYS5ubyIsImRvdnJlLm5vIiwiZHJhbW1lbi5ubyIsImRyYW5nZWRhbC5ubyIsImR5cm95Lm5vIiwiZHlyXHhmOHkubm8iLCJkb25uYS5ubyIs''@;'; put 'put ''ImRceGY4bm5hLm5vIiwiZWlkLm5vIiwiZWlkZmpvcmQubm8iLCJlaWRzYmVyZy5ubyIsImVpZHNrb2cubm8iLCJlaWRzdm9sbC5ubyIsImVpZ2Vyc3VuZC5ubyIsImVsdmVydW0ubm8iLCJlbmViYWtrLm5vIiwiZW5nZXJkYWwubm8iLCJldG5lLm5vIiwiZXRuZWRhbC5ubyIsImV2ZW5lcy5u''@;'; put 'put ''byIsImV2ZW5hc3NpLm5vIiwiZXZlblx4ZTFcdTAxNjFcdTAxNjFpLm5vIiwiZXZqZS1vZy1ob3JubmVzLm5vIiwiZmFyc3VuZC5ubyIsImZhdXNrZS5ubyIsImZ1b3Nza28ubm8iLCJmdW9pc2t1Lm5vIiwiZmVkamUubm8iLCJmZXQubm8iLCJmaW5ub3kubm8iLCJmaW5uXHhmOHkubm8iLCJm''@;'; put 'put ''aXRqYXIubm8iLCJmamFsZXIubm8iLCJmamVsbC5ubyIsImZsYWtzdGFkLm5vIiwiZmxhdGFuZ2VyLm5vIiwiZmxla2tlZmpvcmQubm8iLCJmbGVzYmVyZy5ubyIsImZsb3JhLm5vIiwiZmxhLm5vIiwiZmxceGU1Lm5vIiwiZm9sbGRhbC5ubyIsImZvcnNhbmQubm8iLCJmb3NuZXMubm8iLCJm''@;'; put 'put ''cmVpLm5vIiwiZnJvZ24ubm8iLCJmcm9sYW5kLm5vIiwiZnJvc3RhLm5vIiwiZnJhbmEubm8iLCJmclx4ZTZuYS5ubyIsImZyb3lhLm5vIiwiZnJceGY4eWEubm8iLCJmdXNhLm5vIiwiZnlyZXNkYWwubm8iLCJmb3JkZS5ubyIsImZceGY4cmRlLm5vIiwiZ2FtdmlrLm5vIiwiZ2FuZ2F2aWlr''@;'; put 'put ''YS5ubyIsImdceGUxXHUwMTRiZ2F2aWlrYS5ubyIsImdhdWxhci5ubyIsImdhdXNkYWwubm8iLCJnaWxkZXNrYWwubm8iLCJnaWxkZXNrXHhlNWwubm8iLCJnaXNrZS5ubyIsImdqZW1uZXMubm8iLCJnamVyZHJ1bS5ubyIsImdqZXJzdGFkLm5vIiwiZ2plc2RhbC5ubyIsImdqb3Zpay5ubyIs''@;'; put 'put ''ImdqXHhmOHZpay5ubyIsImdsb3BwZW4ubm8iLCJnb2wubm8iLCJncmFuLm5vIiwiZ3JhbmUubm8iLCJncmFudmluLm5vIiwiZ3JhdGFuZ2VuLm5vIiwiZ3JpbXN0YWQubm8iLCJncm9uZy5ubyIsImtyYWFuZ2hrZS5ubyIsImtyXHhlNWFuZ2hrZS5ubyIsImdydWUubm8iLCJndWxlbi5ubyIs''@;'; put 'put ''ImhhZHNlbC5ubyIsImhhbGRlbi5ubyIsImhhbHNhLm5vIiwiaGFtYXIubm8iLCJoYW1hcm95Lm5vIiwiaGFibWVyLm5vIiwiaFx4ZTFibWVyLm5vIiwiaGFwbWlyLm5vIiwiaFx4ZTFwbWlyLm5vIiwiaGFtbWVyZmVzdC5ubyIsImhhbW1hcmZlYXN0YS5ubyIsImhceGUxbW1ceGUxcmZlYXN0''@;'; put 'put ''YS5ubyIsImhhcmFtLm5vIiwiaGFyZWlkLm5vIiwiaGFyc3RhZC5ubyIsImhhc3Zpay5ubyIsImFrbm9sdW9rdGEubm8iLCJceGUxa1x1MDE0Ym9sdW9rdGEubm8iLCJoYXR0ZmplbGxkYWwubm8iLCJhYXJib3J0ZS5ubyIsImhhdWdlc3VuZC5ubyIsImhlbW5lLm5vIiwiaGVtbmVzLm5vIiwi''@;'; put 'put ''aGVtc2VkYWwubm8iLCJoZXJveS5tb3JlLW9nLXJvbXNkYWwubm8iLCJoZXJceGY4eS5tXHhmOHJlLW9nLXJvbXNkYWwubm8iLCJoZXJveS5ub3JkbGFuZC5ubyIsImhlclx4Zjh5Lm5vcmRsYW5kLm5vIiwiaGl0cmEubm8iLCJoamFydGRhbC5ubyIsImhqZWxtZWxhbmQubm8iLCJob2JvbC5u''@;'; put 'put ''byIsImhvYlx4ZjhsLm5vIiwiaG9mLm5vIiwiaG9sLm5vIiwiaG9sZS5ubyIsImhvbG1lc3RyYW5kLm5vIiwiaG9sdGFsZW4ubm8iLCJob2x0XHhlNWxlbi5ubyIsImhvcm5pbmRhbC5ubyIsImhvcnRlbi5ubyIsImh1cmRhbC5ubyIsImh1cnVtLm5vIiwiaHZhbGVyLm5vIiwiaHlsbGVzdGFk''@;'; put 'put ''Lm5vIiwiaGFnZWJvc3RhZC5ubyIsImhceGU2Z2Vib3N0YWQubm8iLCJob3lhbmdlci5ubyIsImhceGY4eWFuZ2VyLm5vIiwiaG95bGFuZGV0Lm5vIiwiaFx4Zjh5bGFuZGV0Lm5vIiwiaGEubm8iLCJoXHhlNS5ubyIsImliZXN0YWQubm8iLCJpbmRlcm95Lm5vIiwiaW5kZXJceGY4eS5ubyIs''@;'; put 'put ''Iml2ZWxhbmQubm8iLCJqZXZuYWtlci5ubyIsImpvbmRhbC5ubyIsImpvbHN0ZXIubm8iLCJqXHhmOGxzdGVyLm5vIiwia2FyYXNqb2subm8iLCJrYXJhc2pvaGthLm5vIiwia1x4ZTFyXHhlMVx1MDE2MWpvaGthLm5vIiwia2FybHNveS5ubyIsImdhbHNhLm5vIiwiZ1x4ZTFsc1x4ZTEubm8i''@;'; put 'put ''LCJrYXJtb3kubm8iLCJrYXJtXHhmOHkubm8iLCJrYXV0b2tlaW5vLm5vIiwiZ3VvdmRhZ2VhaWRudS5ubyIsImtsZXBwLm5vIiwia2xhYnUubm8iLCJrbFx4ZTZidS5ubyIsImtvbmdzYmVyZy5ubyIsImtvbmdzdmluZ2VyLm5vIiwia3JhZ2Vyby5ubyIsImtyYWdlclx4Zjgubm8iLCJrcmlz''@;'; put 'put ''dGlhbnNhbmQubm8iLCJrcmlzdGlhbnN1bmQubm8iLCJrcm9kc2hlcmFkLm5vIiwia3JceGY4ZHNoZXJhZC5ubyIsImt2YWxzdW5kLm5vIiwicmFoa2tlcmF2anUubm8iLCJyXHhlMWhra2VyXHhlMXZqdS5ubyIsImt2YW0ubm8iLCJrdmluZXNkYWwubm8iLCJrdmlubmhlcmFkLm5vIiwia3Zp''@;'; put 'put ''dGVzZWlkLm5vIiwia3ZpdHNveS5ubyIsImt2aXRzXHhmOHkubm8iLCJrdmFmam9yZC5ubyIsImt2XHhlNmZqb3JkLm5vIiwiZ2llaHRhdnVvYXRuYS5ubyIsImt2YW5hbmdlbi5ubyIsImt2XHhlNm5hbmdlbi5ubyIsIm5hdnVvdG5hLm5vIiwiblx4ZTF2dW90bmEubm8iLCJrYWZqb3JkLm5v''@;'; put 'put ''Iiwia1x4ZTVmam9yZC5ubyIsImdhaXZ1b3RuYS5ubyIsImdceGUxaXZ1b3RuYS5ubyIsImxhcnZpay5ubyIsImxhdmFuZ2VuLm5vIiwibGF2YWdpcy5ubyIsImxvYWJhdC5ubyIsImxvYWJceGUxdC5ubyIsImxlYmVzYnkubm8iLCJkYXZ2ZXNpaWRhLm5vIiwibGVpa2FuZ2VyLm5vIiwibGVp''@;'; put 'put ''cmZqb3JkLm5vIiwibGVrYS5ubyIsImxla3N2aWsubm8iLCJsZW52aWsubm8iLCJsZWFuZ2F2aWlrYS5ubyIsImxlYVx1MDE0Ymdhdmlpa2Eubm8iLCJsZXNqYS5ubyIsImxldmFuZ2VyLm5vIiwibGllci5ubyIsImxpZXJuZS5ubyIsImxpbGxlaGFtbWVyLm5vIiwibGlsbGVzYW5kLm5vIiwi''@;'; put 'put ''bGluZGVzbmVzLm5vIiwibGluZGFzLm5vIiwibGluZFx4ZTVzLm5vIiwibG9tLm5vIiwibG9wcGEubm8iLCJsYWhwcGkubm8iLCJsXHhlMWhwcGkubm8iLCJsdW5kLm5vIiwibHVubmVyLm5vIiwibHVyb3kubm8iLCJsdXJceGY4eS5ubyIsImx1c3Rlci5ubyIsImx5bmdkYWwubm8iLCJseW5n''@;'; put 'put ''ZW4ubm8iLCJpdmd1Lm5vIiwibGFyZGFsLm5vIiwibGVyZGFsLm5vIiwibFx4ZTZyZGFsLm5vIiwibG9kaW5nZW4ubm8iLCJsXHhmOGRpbmdlbi5ubyIsImxvcmVuc2tvZy5ubyIsImxceGY4cmVuc2tvZy5ubyIsImxvdGVuLm5vIiwibFx4Zjh0ZW4ubm8iLCJtYWx2aWsubm8iLCJtYXNveS5u''@;'; put 'put ''byIsIm1ceGU1c1x4Zjh5Lm5vIiwibXVvc2F0Lm5vIiwibXVvc1x4ZTF0Lm5vIiwibWFuZGFsLm5vIiwibWFya2VyLm5vIiwibWFybmFyZGFsLm5vIiwibWFzZmpvcmRlbi5ubyIsIm1lbGFuZC5ubyIsIm1lbGRhbC5ubyIsIm1lbGh1cy5ubyIsIm1lbG95Lm5vIiwibWVsXHhmOHkubm8iLCJt''@;'; put 'put ''ZXJha2VyLm5vIiwibWVyXHhlNWtlci5ubyIsIm1vYXJla2Uubm8iLCJtb1x4ZTVyZWtlLm5vIiwibWlkc3VuZC5ubyIsIm1pZHRyZS1nYXVsZGFsLm5vIiwibW9kYWxlbi5ubyIsIm1vZHVtLm5vIiwibW9sZGUubm8iLCJtb3NrZW5lcy5ubyIsIm1vc3Mubm8iLCJtb3N2aWsubm8iLCJtYWxz''@;'; put 'put ''ZWx2Lm5vIiwibVx4ZTVsc2Vsdi5ubyIsIm1hbGF0dnVvcG1pLm5vIiwibVx4ZTFsYXR2dW9wbWkubm8iLCJuYW1kYWxzZWlkLm5vIiwiYWVqcmllLm5vIiwibmFtc29zLm5vIiwibmFtc3Nrb2dhbi5ubyIsIm5hYW1lc2pldnVlbWllLm5vIiwiblx4ZTVceGU1bWVzamV2dWVtaWUubm8iLCJs''@;'; put 'put ''YWFrZXN2dWVtaWUubm8iLCJuYW5uZXN0YWQubm8iLCJuYXJ2aWsubm8iLCJuYXJ2aWlrYS5ubyIsIm5hdXN0ZGFsLm5vIiwibmVkcmUtZWlrZXIubm8iLCJuZXMuYWtlcnNodXMubm8iLCJuZXMuYnVza2VydWQubm8iLCJuZXNuYS5ubyIsIm5lc29kZGVuLm5vIiwibmVzc2VieS5ubyIsInVu''@;'; put 'put ''amFyZ2Eubm8iLCJ1bmpceGUxcmdhLm5vIiwibmVzc2V0Lm5vIiwibmlzc2VkYWwubm8iLCJuaXR0ZWRhbC5ubyIsIm5vcmQtYXVyZGFsLm5vIiwibm9yZC1mcm9uLm5vIiwibm9yZC1vZGFsLm5vIiwibm9yZGRhbC5ubyIsIm5vcmRrYXBwLm5vIiwiZGF2dmVuamFyZ2Eubm8iLCJkYXZ2ZW5q''@;'; put 'put ''XHhlMXJnYS5ubyIsIm5vcmRyZS1sYW5kLm5vIiwibm9yZHJlaXNhLm5vIiwicmFpc2Eubm8iLCJyXHhlMWlzYS5ubyIsIm5vcmUtb2ctdXZkYWwubm8iLCJub3RvZGRlbi5ubyIsIm5hcm95Lm5vIiwiblx4ZTZyXHhmOHkubm8iLCJub3R0ZXJveS5ubyIsIm5ceGY4dHRlclx4Zjh5Lm5vIiwi''@;'; put 'put ''b2RkYS5ubyIsIm9rc25lcy5ubyIsIlx4Zjhrc25lcy5ubyIsIm9wcGRhbC5ubyIsIm9wcGVnYXJkLm5vIiwib3BwZWdceGU1cmQubm8iLCJvcmtkYWwubm8iLCJvcmxhbmQubm8iLCJceGY4cmxhbmQubm8iLCJvcnNrb2cubm8iLCJceGY4cnNrb2cubm8iLCJvcnN0YS5ubyIsIlx4Zjhyc3Rh''@;'; put 'put ''Lm5vIiwib3MuaGVkbWFyay5ubyIsIm9zLmhvcmRhbGFuZC5ubyIsIm9zZW4ubm8iLCJvc3Rlcm95Lm5vIiwib3N0ZXJceGY4eS5ubyIsIm9zdHJlLXRvdGVuLm5vIiwiXHhmOHN0cmUtdG90ZW4ubm8iLCJvdmVyaGFsbGEubm8iLCJvdnJlLWVpa2VyLm5vIiwiXHhmOHZyZS1laWtlci5ubyIs''@;'; put 'put ''Im95ZXIubm8iLCJceGY4eWVyLm5vIiwib3lnYXJkZW4ubm8iLCJceGY4eWdhcmRlbi5ubyIsIm95c3RyZS1zbGlkcmUubm8iLCJceGY4eXN0cmUtc2xpZHJlLm5vIiwicG9yc2FuZ2VyLm5vIiwicG9yc2FuZ3Uubm8iLCJwb3JzXHhlMVx1MDE0Ymd1Lm5vIiwicG9yc2dydW5uLm5vIiwicmFk''@;'; put 'put ''b3kubm8iLCJyYWRceGY4eS5ubyIsInJha2tlc3RhZC5ubyIsInJhbmEubm8iLCJydW92YXQubm8iLCJyYW5kYWJlcmcubm8iLCJyYXVtYS5ubyIsInJlbmRhbGVuLm5vIiwicmVubmVidS5ubyIsInJlbm5lc295Lm5vIiwicmVubmVzXHhmOHkubm8iLCJyaW5kYWwubm8iLCJyaW5nZWJ1Lm5v''@;'; put 'put ''IiwicmluZ2VyaWtlLm5vIiwicmluZ3Nha2VyLm5vIiwicmlzc2Eubm8iLCJyaXNvci5ubyIsInJpc1x4ZjhyLm5vIiwicm9hbi5ubyIsInJvbGxhZy5ubyIsInJ5Z2dlLm5vIiwicmFsaW5nZW4ubm8iLCJyXHhlNmxpbmdlbi5ubyIsInJvZG95Lm5vIiwiclx4ZjhkXHhmOHkubm8iLCJyb21z''@;'; put 'put ''a29nLm5vIiwiclx4Zjhtc2tvZy5ubyIsInJvcm9zLm5vIiwiclx4Zjhyb3Mubm8iLCJyb3N0Lm5vIiwiclx4ZjhzdC5ubyIsInJveWtlbi5ubyIsInJceGY4eWtlbi5ubyIsInJveXJ2aWsubm8iLCJyXHhmOHlydmlrLm5vIiwicmFkZS5ubyIsInJceGU1ZGUubm8iLCJzYWxhbmdlbi5ubyIs''@;'; put 'put ''InNpZWxsYWsubm8iLCJzYWx0ZGFsLm5vIiwic2FsYXQubm8iLCJzXHhlMWxceGUxdC5ubyIsInNceGUxbGF0Lm5vIiwic2FtbmFuZ2VyLm5vIiwic2FuZGUubW9yZS1vZy1yb21zZGFsLm5vIiwic2FuZGUubVx4ZjhyZS1vZy1yb21zZGFsLm5vIiwic2FuZGUudmVzdGZvbGQubm8iLCJzYW5k''@;'; put 'put ''ZWZqb3JkLm5vIiwic2FuZG5lcy5ubyIsInNhbmRveS5ubyIsInNhbmRceGY4eS5ubyIsInNhcnBzYm9yZy5ubyIsInNhdWRhLm5vIiwic2F1aGVyYWQubm8iLCJzZWwubm8iLCJzZWxidS5ubyIsInNlbGplLm5vIiwic2Vsam9yZC5ubyIsInNpZ2RhbC5ubyIsInNpbGphbi5ubyIsInNpcmRh''@;'; put 'put ''bC5ubyIsInNrYXVuLm5vIiwic2tlZHNtby5ubyIsInNraS5ubyIsInNraWVuLm5vIiwic2tpcHR2ZXQubm8iLCJza2plcnZveS5ubyIsInNramVydlx4Zjh5Lm5vIiwic2tpZXJ2YS5ubyIsInNraWVydlx4ZTEubm8iLCJza2phay5ubyIsInNralx4ZTVrLm5vIiwic2tvZGplLm5vIiwic2th''@;'; put 'put ''bmxhbmQubm8iLCJza1x4ZTVubGFuZC5ubyIsInNrYW5pdC5ubyIsInNrXHhlMW5pdC5ubyIsInNtb2xhLm5vIiwic21ceGY4bGEubm8iLCJzbmlsbGZqb3JkLm5vIiwic25hc2Eubm8iLCJzblx4ZTVzYS5ubyIsInNub2FzYS5ubyIsInNuYWFzZS5ubyIsInNuXHhlNWFzZS5ubyIsInNvZ25k''@;'; put 'put ''YWwubm8iLCJzb2tuZGFsLm5vIiwic29sYS5ubyIsInNvbHVuZC5ubyIsInNvbmdkYWxlbi5ubyIsInNvcnRsYW5kLm5vIiwic3B5ZGViZXJnLm5vIiwic3RhbmdlLm5vIiwic3RhdmFuZ2VyLm5vIiwic3RlaWdlbi5ubyIsInN0ZWlua2plci5ubyIsInN0am9yZGFsLm5vIiwic3RqXHhmOHJk''@;'; put 'put ''YWwubm8iLCJzdG9ra2Uubm8iLCJzdG9yLWVsdmRhbC5ubyIsInN0b3JkLm5vIiwic3RvcmRhbC5ubyIsInN0b3Jmam9yZC5ubyIsIm9tYXN2dW90bmEubm8iLCJzdHJhbmQubm8iLCJzdHJhbmRhLm5vIiwic3RyeW4ubm8iLCJzdWxhLm5vIiwic3VsZGFsLm5vIiwic3VuZC5ubyIsInN1bm5k''@;'; put 'put ''YWwubm8iLCJzdXJuYWRhbC5ubyIsInN2ZWlvLm5vIiwic3ZlbHZpay5ubyIsInN5a2t5bHZlbi5ubyIsInNvZ25lLm5vIiwic1x4ZjhnbmUubm8iLCJzb21uYS5ubyIsInNceGY4bW5hLm5vIiwic29uZHJlLWxhbmQubm8iLCJzXHhmOG5kcmUtbGFuZC5ubyIsInNvci1hdXJkYWwubm8iLCJz''@;'; put 'put ''XHhmOHItYXVyZGFsLm5vIiwic29yLWZyb24ubm8iLCJzXHhmOHItZnJvbi5ubyIsInNvci1vZGFsLm5vIiwic1x4ZjhyLW9kYWwubm8iLCJzb3ItdmFyYW5nZXIubm8iLCJzXHhmOHItdmFyYW5nZXIubm8iLCJtYXR0YS12YXJqamF0Lm5vIiwibVx4ZTF0dGEtdlx4ZTFyamphdC5ubyIsInNv''@;'; put 'put ''cmZvbGQubm8iLCJzXHhmOHJmb2xkLm5vIiwic29ycmVpc2Eubm8iLCJzXHhmOHJyZWlzYS5ubyIsInNvcnVtLm5vIiwic1x4ZjhydW0ubm8iLCJ0YW5hLm5vIiwiZGVhdG51Lm5vIiwidGltZS5ubyIsInRpbmd2b2xsLm5vIiwidGlubi5ubyIsInRqZWxkc3VuZC5ubyIsImRpZWxkZGFudW9y''@;'; put 'put ''cmkubm8iLCJ0am9tZS5ubyIsInRqXHhmOG1lLm5vIiwidG9ra2Uubm8iLCJ0b2xnYS5ubyIsInRvcnNrZW4ubm8iLCJ0cmFub3kubm8iLCJ0cmFuXHhmOHkubm8iLCJ0cm9tc28ubm8iLCJ0cm9tc1x4Zjgubm8iLCJ0cm9tc2Eubm8iLCJyb21zYS5ubyIsInRyb25kaGVpbS5ubyIsInRyb2Fu''@;'; put 'put ''ZGluLm5vIiwidHJ5c2lsLm5vIiwidHJhbmEubm8iLCJ0clx4ZTZuYS5ubyIsInRyb2dzdGFkLm5vIiwidHJceGY4Z3N0YWQubm8iLCJ0dmVkZXN0cmFuZC5ubyIsInR5ZGFsLm5vIiwidHluc2V0Lm5vIiwidHlzZmpvcmQubm8iLCJkaXZ0YXN2dW9kbmEubm8iLCJkaXZ0dGFzdnVvdG5hLm5v''@;'; put 'put ''IiwidHlzbmVzLm5vIiwidHlzdmFyLm5vIiwidHlzdlx4ZTZyLm5vIiwidG9uc2Jlcmcubm8iLCJ0XHhmOG5zYmVyZy5ubyIsInVsbGVuc2FrZXIubm8iLCJ1bGxlbnN2YW5nLm5vIiwidWx2aWsubm8iLCJ1dHNpcmEubm8iLCJ2YWRzby5ubyIsInZhZHNceGY4Lm5vIiwiY2FoY2VzdW9sby5u''@;'; put 'put ''byIsIlx1MDEwZFx4ZTFoY2VzdW9sby5ubyIsInZha3NkYWwubm8iLCJ2YWxsZS5ubyIsInZhbmcubm8iLCJ2YW55bHZlbi5ubyIsInZhcmRvLm5vIiwidmFyZFx4Zjgubm8iLCJ2YXJnZ2F0Lm5vIiwidlx4ZTFyZ2dceGUxdC5ubyIsInZlZnNuLm5vIiwidmFhcHN0ZS5ubyIsInZlZ2Eubm8i''@;'; put 'put ''LCJ2ZWdhcnNoZWkubm8iLCJ2ZWdceGU1cnNoZWkubm8iLCJ2ZW5uZXNsYS5ubyIsInZlcmRhbC5ubyIsInZlcnJhbi5ubyIsInZlc3RieS5ubyIsInZlc3RuZXMubm8iLCJ2ZXN0cmUtc2xpZHJlLm5vIiwidmVzdHJlLXRvdGVuLm5vIiwidmVzdHZhZ295Lm5vIiwidmVzdHZceGU1Z1x4Zjh5''@;'; put 'put ''Lm5vIiwidmV2ZWxzdGFkLm5vIiwidmlrLm5vIiwidmlrbmEubm8iLCJ2aW5kYWZqb3JkLm5vIiwidm9sZGEubm8iLCJ2b3NzLm5vIiwidmFyb3kubm8iLCJ2XHhlNnJceGY4eS5ubyIsInZhZ2FuLm5vIiwidlx4ZTVnYW4ubm8iLCJ2b2FnYXQubm8iLCJ2YWdzb3kubm8iLCJ2XHhlNWdzXHhm''@;'; put 'put ''OHkubm8iLCJ2YWdhLm5vIiwidlx4ZTVnXHhlNS5ubyIsInZhbGVyLm9zdGZvbGQubm8iLCJ2XHhlNWxlci5ceGY4c3Rmb2xkLm5vIiwidmFsZXIuaGVkbWFyay5ubyIsInZceGU1bGVyLmhlZG1hcmsubm8iLCIqLm5wIiwibnIiLCJiaXoubnIiLCJpbmZvLm5yIiwiZ292Lm5yIiwiZWR1Lm5y''@;'; put 'put ''Iiwib3JnLm5yIiwibmV0Lm5yIiwiY29tLm5yIiwibnUiLCJueiIsImFjLm56IiwiY28ubnoiLCJjcmkubnoiLCJnZWVrLm56IiwiZ2VuLm56IiwiZ292dC5ueiIsImhlYWx0aC5ueiIsIml3aS5ueiIsImtpd2kubnoiLCJtYW9yaS5ueiIsIm1pbC5ueiIsIm1cdTAxMDFvcmkubnoiLCJuZXQu''@;'; put 'put ''bnoiLCJvcmcubnoiLCJwYXJsaWFtZW50Lm56Iiwic2Nob29sLm56Iiwib20iLCJjby5vbSIsImNvbS5vbSIsImVkdS5vbSIsImdvdi5vbSIsIm1lZC5vbSIsIm11c2V1bS5vbSIsIm5ldC5vbSIsIm9yZy5vbSIsInByby5vbSIsIm9uaW9uIiwib3JnIiwicGEiLCJhYy5wYSIsImdvYi5wYSIs''@;'; put 'put ''ImNvbS5wYSIsIm9yZy5wYSIsInNsZC5wYSIsImVkdS5wYSIsIm5ldC5wYSIsImluZy5wYSIsImFiby5wYSIsIm1lZC5wYSIsIm5vbS5wYSIsInBlIiwiZWR1LnBlIiwiZ29iLnBlIiwibm9tLnBlIiwibWlsLnBlIiwib3JnLnBlIiwiY29tLnBlIiwibmV0LnBlIiwicGYiLCJjb20ucGYiLCJv''@;'; put 'put ''cmcucGYiLCJlZHUucGYiLCIqLnBnIiwicGgiLCJjb20ucGgiLCJuZXQucGgiLCJvcmcucGgiLCJnb3YucGgiLCJlZHUucGgiLCJuZ28ucGgiLCJtaWwucGgiLCJpLnBoIiwicGsiLCJjb20ucGsiLCJuZXQucGsiLCJlZHUucGsiLCJvcmcucGsiLCJmYW0ucGsiLCJiaXoucGsiLCJ3ZWIucGsi''@;'; put 'put ''LCJnb3YucGsiLCJnb2IucGsiLCJnb2sucGsiLCJnb24ucGsiLCJnb3AucGsiLCJnb3MucGsiLCJpbmZvLnBrIiwicGwiLCJjb20ucGwiLCJuZXQucGwiLCJvcmcucGwiLCJhaWQucGwiLCJhZ3JvLnBsIiwiYXRtLnBsIiwiYXV0by5wbCIsImJpei5wbCIsImVkdS5wbCIsImdtaW5hLnBsIiwi''@;'; put 'put ''Z3NtLnBsIiwiaW5mby5wbCIsIm1haWwucGwiLCJtaWFzdGEucGwiLCJtZWRpYS5wbCIsIm1pbC5wbCIsIm5pZXJ1Y2hvbW9zY2kucGwiLCJub20ucGwiLCJwYy5wbCIsInBvd2lhdC5wbCIsInByaXYucGwiLCJyZWFsZXN0YXRlLnBsIiwicmVsLnBsIiwic2V4LnBsIiwic2hvcC5wbCIsInNr''@;'; put 'put ''bGVwLnBsIiwic29zLnBsIiwic3prb2xhLnBsIiwidGFyZ2kucGwiLCJ0bS5wbCIsInRvdXJpc20ucGwiLCJ0cmF2ZWwucGwiLCJ0dXJ5c3R5a2EucGwiLCJnb3YucGwiLCJhcC5nb3YucGwiLCJpYy5nb3YucGwiLCJpcy5nb3YucGwiLCJ1cy5nb3YucGwiLCJrbXBzcC5nb3YucGwiLCJrcHBz''@;'; put 'put ''cC5nb3YucGwiLCJrd3BzcC5nb3YucGwiLCJwc3AuZ292LnBsIiwid3Nrci5nb3YucGwiLCJrd3AuZ292LnBsIiwibXcuZ292LnBsIiwidWcuZ292LnBsIiwidW0uZ292LnBsIiwidW1pZy5nb3YucGwiLCJ1Z2ltLmdvdi5wbCIsInVwb3cuZ292LnBsIiwidXcuZ292LnBsIiwic3Rhcm9zdHdv''@;'; put 'put ''Lmdvdi5wbCIsInBhLmdvdi5wbCIsInBvLmdvdi5wbCIsInBzc2UuZ292LnBsIiwicHVwLmdvdi5wbCIsInJ6Z3cuZ292LnBsIiwic2EuZ292LnBsIiwic28uZ292LnBsIiwic3IuZ292LnBsIiwid3NhLmdvdi5wbCIsInNrby5nb3YucGwiLCJ1enMuZ292LnBsIiwid2lpaC5nb3YucGwiLCJ3''@;'; put 'put ''aW5iLmdvdi5wbCIsInBpbmIuZ292LnBsIiwid2lvcy5nb3YucGwiLCJ3aXRkLmdvdi5wbCIsInd6bWl1dy5nb3YucGwiLCJwaXcuZ292LnBsIiwid2l3Lmdvdi5wbCIsImdyaXcuZ292LnBsIiwid2lmLmdvdi5wbCIsIm91bS5nb3YucGwiLCJzZG4uZ292LnBsIiwienAuZ292LnBsIiwidXBw''@;'; put 'put ''by5nb3YucGwiLCJtdXAuZ292LnBsIiwid3Vvei5nb3YucGwiLCJrb25zdWxhdC5nb3YucGwiLCJvaXJtLmdvdi5wbCIsImF1Z3VzdG93LnBsIiwiYmFiaWEtZ29yYS5wbCIsImJlZHppbi5wbCIsImJlc2tpZHkucGwiLCJiaWFsb3dpZXphLnBsIiwiYmlhbHlzdG9rLnBsIiwiYmllbGF3YS5w''@;'; put 'put ''bCIsImJpZXN6Y3phZHkucGwiLCJib2xlc2xhd2llYy5wbCIsImJ5ZGdvc3pjei5wbCIsImJ5dG9tLnBsIiwiY2llc3p5bi5wbCIsImN6ZWxhZHoucGwiLCJjemVzdC5wbCIsImRsdWdvbGVrYS5wbCIsImVsYmxhZy5wbCIsImVsay5wbCIsImdsb2dvdy5wbCIsImduaWV6bm8ucGwiLCJnb3Js''@;'; put 'put ''aWNlLnBsIiwiZ3JhamV3by5wbCIsImlsYXdhLnBsIiwiamF3b3J6bm8ucGwiLCJqZWxlbmlhLWdvcmEucGwiLCJqZ29yYS5wbCIsImthbGlzei5wbCIsImthemltaWVyei1kb2xueS5wbCIsImthcnBhY3oucGwiLCJrYXJ0dXp5LnBsIiwia2FzenVieS5wbCIsImthdG93aWNlLnBsIiwia2Vw''@;'; put 'put ''bm8ucGwiLCJrZXRyenluLnBsIiwia2xvZHprby5wbCIsImtvYmllcnp5Y2UucGwiLCJrb2xvYnJ6ZWcucGwiLCJrb25pbi5wbCIsImtvbnNrb3dvbGEucGwiLCJrdXRuby5wbCIsImxhcHkucGwiLCJsZWJvcmsucGwiLCJsZWduaWNhLnBsIiwibGV6YWpzay5wbCIsImxpbWFub3dhLnBsIiwi''@;'; put 'put ''bG9temEucGwiLCJsb3dpY3oucGwiLCJsdWJpbi5wbCIsImx1a293LnBsIiwibWFsYm9yay5wbCIsIm1hbG9wb2xza2EucGwiLCJtYXpvd3N6ZS5wbCIsIm1henVyeS5wbCIsIm1pZWxlYy5wbCIsIm1pZWxuby5wbCIsIm1yYWdvd28ucGwiLCJuYWtsby5wbCIsIm5vd2FydWRhLnBsIiwibnlz''@;'; put 'put ''YS5wbCIsIm9sYXdhLnBsIiwib2xlY2tvLnBsIiwib2xrdXN6LnBsIiwib2xzenR5bi5wbCIsIm9wb2N6bm8ucGwiLCJvcG9sZS5wbCIsIm9zdHJvZGEucGwiLCJvc3Ryb2xla2EucGwiLCJvc3Ryb3dpZWMucGwiLCJvc3Ryb3d3bGtwLnBsIiwicGlsYS5wbCIsInBpc3oucGwiLCJwb2RoYWxl''@;'; put 'put ''LnBsIiwicG9kbGFzaWUucGwiLCJwb2xrb3dpY2UucGwiLCJwb21vcnplLnBsIiwicG9tb3Jza2llLnBsIiwicHJvY2hvd2ljZS5wbCIsInBydXN6a293LnBsIiwicHJ6ZXdvcnNrLnBsIiwicHVsYXd5LnBsIiwicmFkb20ucGwiLCJyYXdhLW1hei5wbCIsInJ5Ym5pay5wbCIsInJ6ZXN6b3cu''@;'; put 'put ''cGwiLCJzYW5vay5wbCIsInNlam55LnBsIiwic2xhc2sucGwiLCJzbHVwc2sucGwiLCJzb3Nub3dpZWMucGwiLCJzdGFsb3dhLXdvbGEucGwiLCJza29jem93LnBsIiwic3RhcmFjaG93aWNlLnBsIiwic3RhcmdhcmQucGwiLCJzdXdhbGtpLnBsIiwic3dpZG5pY2EucGwiLCJzd2llYm9kemlu''@;'; put 'put ''LnBsIiwic3dpbm91anNjaWUucGwiLCJzemN6ZWNpbi5wbCIsInN6Y3p5dG5vLnBsIiwidGFybm9icnplZy5wbCIsInRnb3J5LnBsIiwidHVyZWsucGwiLCJ0eWNoeS5wbCIsInVzdGthLnBsIiwid2FsYnJ6eWNoLnBsIiwid2FybWlhLnBsIiwid2Fyc3phd2EucGwiLCJ3YXcucGwiLCJ3ZWdy''@;'; put 'put ''b3cucGwiLCJ3aWVsdW4ucGwiLCJ3bG9jbC5wbCIsIndsb2NsYXdlay5wbCIsIndvZHppc2xhdy5wbCIsIndvbG9taW4ucGwiLCJ3cm9jbGF3LnBsIiwiemFjaHBvbW9yLnBsIiwiemFnYW4ucGwiLCJ6YXJvdy5wbCIsInpnb3JhLnBsIiwiemdvcnplbGVjLnBsIiwicG0iLCJwbiIsImdvdi5w''@;'; put 'put ''biIsImNvLnBuIiwib3JnLnBuIiwiZWR1LnBuIiwibmV0LnBuIiwicG9zdCIsInByIiwiY29tLnByIiwibmV0LnByIiwib3JnLnByIiwiZ292LnByIiwiZWR1LnByIiwiaXNsYS5wciIsInByby5wciIsImJpei5wciIsImluZm8ucHIiLCJuYW1lLnByIiwiZXN0LnByIiwicHJvZi5wciIsImFj''@;'; put 'put ''LnByIiwicHJvIiwiYWFhLnBybyIsImFjYS5wcm8iLCJhY2N0LnBybyIsImF2b2NhdC5wcm8iLCJiYXIucHJvIiwiY3BhLnBybyIsImVuZy5wcm8iLCJqdXIucHJvIiwibGF3LnBybyIsIm1lZC5wcm8iLCJyZWNodC5wcm8iLCJwcyIsImVkdS5wcyIsImdvdi5wcyIsInNlYy5wcyIsInBsby5w''@;'; put 'put ''cyIsImNvbS5wcyIsIm9yZy5wcyIsIm5ldC5wcyIsInB0IiwibmV0LnB0IiwiZ292LnB0Iiwib3JnLnB0IiwiZWR1LnB0IiwiaW50LnB0IiwicHVibC5wdCIsImNvbS5wdCIsIm5vbWUucHQiLCJwdyIsImNvLnB3IiwibmUucHciLCJvci5wdyIsImVkLnB3IiwiZ28ucHciLCJiZWxhdS5wdyIs''@;'; put 'put ''InB5IiwiY29tLnB5IiwiY29vcC5weSIsImVkdS5weSIsImdvdi5weSIsIm1pbC5weSIsIm5ldC5weSIsIm9yZy5weSIsInFhIiwiY29tLnFhIiwiZWR1LnFhIiwiZ292LnFhIiwibWlsLnFhIiwibmFtZS5xYSIsIm5ldC5xYSIsIm9yZy5xYSIsInNjaC5xYSIsInJlIiwiYXNzby5yZSIsImNv''@;'; put 'put ''bS5yZSIsIm5vbS5yZSIsInJvIiwiYXJ0cy5ybyIsImNvbS5ybyIsImZpcm0ucm8iLCJpbmZvLnJvIiwibm9tLnJvIiwibnQucm8iLCJvcmcucm8iLCJyZWMucm8iLCJzdG9yZS5ybyIsInRtLnJvIiwid3d3LnJvIiwicnMiLCJhYy5ycyIsImNvLnJzIiwiZWR1LnJzIiwiZ292LnJzIiwiaW4u''@;'; put 'put ''cnMiLCJvcmcucnMiLCJydSIsInJ3IiwiYWMucnciLCJjby5ydyIsImNvb3AucnciLCJnb3YucnciLCJtaWwucnciLCJuZXQucnciLCJvcmcucnciLCJzYSIsImNvbS5zYSIsIm5ldC5zYSIsIm9yZy5zYSIsImdvdi5zYSIsIm1lZC5zYSIsInB1Yi5zYSIsImVkdS5zYSIsInNjaC5zYSIsInNi''@;'; put 'put ''IiwiY29tLnNiIiwiZWR1LnNiIiwiZ292LnNiIiwibmV0LnNiIiwib3JnLnNiIiwic2MiLCJjb20uc2MiLCJnb3Yuc2MiLCJuZXQuc2MiLCJvcmcuc2MiLCJlZHUuc2MiLCJzZCIsImNvbS5zZCIsIm5ldC5zZCIsIm9yZy5zZCIsImVkdS5zZCIsIm1lZC5zZCIsInR2LnNkIiwiZ292LnNkIiwi''@;'; put 'put ''aW5mby5zZCIsInNlIiwiYS5zZSIsImFjLnNlIiwiYi5zZSIsImJkLnNlIiwiYnJhbmQuc2UiLCJjLnNlIiwiZC5zZSIsImUuc2UiLCJmLnNlIiwiZmguc2UiLCJmaHNrLnNlIiwiZmh2LnNlIiwiZy5zZSIsImguc2UiLCJpLnNlIiwiay5zZSIsImtvbWZvcmIuc2UiLCJrb21tdW5hbGZvcmJ1''@;'; put 'put ''bmQuc2UiLCJrb212dXguc2UiLCJsLnNlIiwibGFuYmliLnNlIiwibS5zZSIsIm4uc2UiLCJuYXR1cmJydWtzZ3ltbi5zZSIsIm8uc2UiLCJvcmcuc2UiLCJwLnNlIiwicGFydGkuc2UiLCJwcC5zZSIsInByZXNzLnNlIiwici5zZSIsInMuc2UiLCJ0LnNlIiwidG0uc2UiLCJ1LnNlIiwidy5z''@;'; put 'put ''ZSIsInguc2UiLCJ5LnNlIiwiei5zZSIsInNnIiwiY29tLnNnIiwibmV0LnNnIiwib3JnLnNnIiwiZ292LnNnIiwiZWR1LnNnIiwicGVyLnNnIiwic2giLCJjb20uc2giLCJuZXQuc2giLCJnb3Yuc2giLCJvcmcuc2giLCJtaWwuc2giLCJzaSIsInNqIiwic2siLCJzbCIsImNvbS5zbCIsIm5l''@;'; put 'put ''dC5zbCIsImVkdS5zbCIsImdvdi5zbCIsIm9yZy5zbCIsInNtIiwic24iLCJhcnQuc24iLCJjb20uc24iLCJlZHUuc24iLCJnb3V2LnNuIiwib3JnLnNuIiwicGVyc28uc24iLCJ1bml2LnNuIiwic28iLCJjb20uc28iLCJlZHUuc28iLCJnb3Yuc28iLCJtZS5zbyIsIm5ldC5zbyIsIm9yZy5z''@;'; put 'put ''byIsInNyIiwic3MiLCJiaXouc3MiLCJjb20uc3MiLCJlZHUuc3MiLCJnb3Yuc3MiLCJuZXQuc3MiLCJvcmcuc3MiLCJzdCIsImNvLnN0IiwiY29tLnN0IiwiY29uc3VsYWRvLnN0IiwiZWR1LnN0IiwiZW1iYWl4YWRhLnN0IiwiZ292LnN0IiwibWlsLnN0IiwibmV0LnN0Iiwib3JnLnN0Iiwi''@;'; put 'put ''cHJpbmNpcGUuc3QiLCJzYW90b21lLnN0Iiwic3RvcmUuc3QiLCJzdSIsInN2IiwiY29tLnN2IiwiZWR1LnN2IiwiZ29iLnN2Iiwib3JnLnN2IiwicmVkLnN2Iiwic3giLCJnb3Yuc3giLCJzeSIsImVkdS5zeSIsImdvdi5zeSIsIm5ldC5zeSIsIm1pbC5zeSIsImNvbS5zeSIsIm9yZy5zeSIs''@;'; put 'put ''InN6IiwiY28uc3oiLCJhYy5zeiIsIm9yZy5zeiIsInRjIiwidGQiLCJ0ZWwiLCJ0ZiIsInRnIiwidGgiLCJhYy50aCIsImNvLnRoIiwiZ28udGgiLCJpbi50aCIsIm1pLnRoIiwibmV0LnRoIiwib3IudGgiLCJ0aiIsImFjLnRqIiwiYml6LnRqIiwiY28udGoiLCJjb20udGoiLCJlZHUudGoi''@;'; put 'put ''LCJnby50aiIsImdvdi50aiIsImludC50aiIsIm1pbC50aiIsIm5hbWUudGoiLCJuZXQudGoiLCJuaWMudGoiLCJvcmcudGoiLCJ0ZXN0LnRqIiwid2ViLnRqIiwidGsiLCJ0bCIsImdvdi50bCIsInRtIiwiY29tLnRtIiwiY28udG0iLCJvcmcudG0iLCJuZXQudG0iLCJub20udG0iLCJnb3Yu''@;'; put 'put ''dG0iLCJtaWwudG0iLCJlZHUudG0iLCJ0biIsImNvbS50biIsImVucy50biIsImZpbi50biIsImdvdi50biIsImluZC50biIsImludGwudG4iLCJuYXQudG4iLCJuZXQudG4iLCJvcmcudG4iLCJpbmZvLnRuIiwicGVyc28udG4iLCJ0b3VyaXNtLnRuIiwiZWR1bmV0LnRuIiwicm5ydC50biIs''@;'; put 'put ''InJucy50biIsInJudS50biIsIm1pbmNvbS50biIsImFncmluZXQudG4iLCJkZWZlbnNlLnRuIiwidHVyZW4udG4iLCJ0byIsImNvbS50byIsImdvdi50byIsIm5ldC50byIsIm9yZy50byIsImVkdS50byIsIm1pbC50byIsInRyIiwiYXYudHIiLCJiYnMudHIiLCJiZWwudHIiLCJiaXoudHIi''@;'; put 'put ''LCJjb20udHIiLCJkci50ciIsImVkdS50ciIsImdlbi50ciIsImdvdi50ciIsImluZm8udHIiLCJtaWwudHIiLCJrMTIudHIiLCJrZXAudHIiLCJuYW1lLnRyIiwibmV0LnRyIiwib3JnLnRyIiwicG9sLnRyIiwidGVsLnRyIiwidHNrLnRyIiwidHYudHIiLCJ3ZWIudHIiLCJuYy50ciIsImdv''@;'; put 'put ''di5uYy50ciIsInR0IiwiY28udHQiLCJjb20udHQiLCJvcmcudHQiLCJuZXQudHQiLCJiaXoudHQiLCJpbmZvLnR0IiwicHJvLnR0IiwiaW50LnR0IiwiY29vcC50dCIsImpvYnMudHQiLCJtb2JpLnR0IiwidHJhdmVsLnR0IiwibXVzZXVtLnR0IiwiYWVyby50dCIsIm5hbWUudHQiLCJnb3Yu''@;'; put 'put ''dHQiLCJlZHUudHQiLCJ0diIsInR3IiwiZWR1LnR3IiwiZ292LnR3IiwibWlsLnR3IiwiY29tLnR3IiwibmV0LnR3Iiwib3JnLnR3IiwiaWR2LnR3IiwiZ2FtZS50dyIsImViaXoudHciLCJjbHViLnR3IiwiXHU3ZGIyXHU4ZGVmLnR3IiwiXHU3ZDQ0XHU3ZTU0LnR3IiwiXHU1NTQ2XHU2OTZk''@;'; put 'put ''LnR3IiwidHoiLCJhYy50eiIsImNvLnR6IiwiZ28udHoiLCJob3RlbC50eiIsImluZm8udHoiLCJtZS50eiIsIm1pbC50eiIsIm1vYmkudHoiLCJuZS50eiIsIm9yLnR6Iiwic2MudHoiLCJ0di50eiIsInVhIiwiY29tLnVhIiwiZWR1LnVhIiwiZ292LnVhIiwiaW4udWEiLCJuZXQudWEiLCJv''@;'; put 'put ''cmcudWEiLCJjaGVya2Fzc3kudWEiLCJjaGVya2FzeS51YSIsImNoZXJuaWdvdi51YSIsImNoZXJuaWhpdi51YSIsImNoZXJuaXZ0c2kudWEiLCJjaGVybm92dHN5LnVhIiwiY2sudWEiLCJjbi51YSIsImNyLnVhIiwiY3JpbWVhLnVhIiwiY3YudWEiLCJkbi51YSIsImRuZXByb3BldHJvdnNr''@;'; put 'put ''LnVhIiwiZG5pcHJvcGV0cm92c2sudWEiLCJkb21pbmljLnVhIiwiZG9uZXRzay51YSIsImRwLnVhIiwiaWYudWEiLCJpdmFuby1mcmFua2l2c2sudWEiLCJraC51YSIsImtoYXJraXYudWEiLCJraGFya292LnVhIiwia2hlcnNvbi51YSIsImtobWVsbml0c2tpeS51YSIsImtobWVsbnl0c2t5''@;'; put 'put ''aS51YSIsImtpZXYudWEiLCJraXJvdm9ncmFkLnVhIiwia20udWEiLCJrci51YSIsImtyeW0udWEiLCJrcy51YSIsImt2LnVhIiwia3lpdi51YSIsImxnLnVhIiwibHQudWEiLCJsdWdhbnNrLnVhIiwibHV0c2sudWEiLCJsdi51YSIsImx2aXYudWEiLCJtay51YSIsIm15a29sYWl2LnVhIiwi''@;'; put 'put ''bmlrb2xhZXYudWEiLCJvZC51YSIsIm9kZXNhLnVhIiwib2Rlc3NhLnVhIiwicGwudWEiLCJwb2x0YXZhLnVhIiwicml2bmUudWEiLCJyb3Zuby51YSIsInJ2LnVhIiwic2IudWEiLCJzZWJhc3RvcG9sLnVhIiwic2V2YXN0b3BvbC51YSIsInNtLnVhIiwic3VteS51YSIsInRlLnVhIiwidGVy''@;'; put 'put ''bm9waWwudWEiLCJ1ei51YSIsInV6aGdvcm9kLnVhIiwidmlubmljYS51YSIsInZpbm55dHNpYS51YSIsInZuLnVhIiwidm9seW4udWEiLCJ5YWx0YS51YSIsInphcG9yaXpoemhlLnVhIiwiemFwb3Jpemh6aGlhLnVhIiwiemhpdG9taXIudWEiLCJ6aHl0b215ci51YSIsInpwLnVhIiwienQu''@;'; put 'put ''dWEiLCJ1ZyIsImNvLnVnIiwib3IudWciLCJhYy51ZyIsInNjLnVnIiwiZ28udWciLCJuZS51ZyIsImNvbS51ZyIsIm9yZy51ZyIsInVrIiwiYWMudWsiLCJjby51ayIsImdvdi51ayIsImx0ZC51ayIsIm1lLnVrIiwibmV0LnVrIiwibmhzLnVrIiwib3JnLnVrIiwicGxjLnVrIiwicG9saWNl''@;'; put 'put ''LnVrIiwiKi5zY2gudWsiLCJ1cyIsImRuaS51cyIsImZlZC51cyIsImlzYS51cyIsImtpZHMudXMiLCJuc24udXMiLCJhay51cyIsImFsLnVzIiwiYXIudXMiLCJhcy51cyIsImF6LnVzIiwiY2EudXMiLCJjby51cyIsImN0LnVzIiwiZGMudXMiLCJkZS51cyIsImZsLnVzIiwiZ2EudXMiLCJn''@;'; put 'put ''dS51cyIsImhpLnVzIiwiaWEudXMiLCJpZC51cyIsImlsLnVzIiwiaW4udXMiLCJrcy51cyIsImt5LnVzIiwibGEudXMiLCJtYS51cyIsIm1kLnVzIiwibWUudXMiLCJtaS51cyIsIm1uLnVzIiwibW8udXMiLCJtcy51cyIsIm10LnVzIiwibmMudXMiLCJuZC51cyIsIm5lLnVzIiwibmgudXMi''@;'; put 'put ''LCJuai51cyIsIm5tLnVzIiwibnYudXMiLCJueS51cyIsIm9oLnVzIiwib2sudXMiLCJvci51cyIsInBhLnVzIiwicHIudXMiLCJyaS51cyIsInNjLnVzIiwic2QudXMiLCJ0bi51cyIsInR4LnVzIiwidXQudXMiLCJ2aS51cyIsInZ0LnVzIiwidmEudXMiLCJ3YS51cyIsIndpLnVzIiwid3Yu''@;'; put 'put ''dXMiLCJ3eS51cyIsImsxMi5hay51cyIsImsxMi5hbC51cyIsImsxMi5hci51cyIsImsxMi5hcy51cyIsImsxMi5hei51cyIsImsxMi5jYS51cyIsImsxMi5jby51cyIsImsxMi5jdC51cyIsImsxMi5kYy51cyIsImsxMi5kZS51cyIsImsxMi5mbC51cyIsImsxMi5nYS51cyIsImsxMi5ndS51''@;'; put 'put ''cyIsImsxMi5pYS51cyIsImsxMi5pZC51cyIsImsxMi5pbC51cyIsImsxMi5pbi51cyIsImsxMi5rcy51cyIsImsxMi5reS51cyIsImsxMi5sYS51cyIsImsxMi5tYS51cyIsImsxMi5tZC51cyIsImsxMi5tZS51cyIsImsxMi5taS51cyIsImsxMi5tbi51cyIsImsxMi5tby51cyIsImsxMi5t''@;'; put 'put ''cy51cyIsImsxMi5tdC51cyIsImsxMi5uYy51cyIsImsxMi5uZS51cyIsImsxMi5uaC51cyIsImsxMi5uai51cyIsImsxMi5ubS51cyIsImsxMi5udi51cyIsImsxMi5ueS51cyIsImsxMi5vaC51cyIsImsxMi5vay51cyIsImsxMi5vci51cyIsImsxMi5wYS51cyIsImsxMi5wci51cyIsImsx''@;'; put 'put ''Mi5yaS51cyIsImsxMi5zYy51cyIsImsxMi50bi51cyIsImsxMi50eC51cyIsImsxMi51dC51cyIsImsxMi52aS51cyIsImsxMi52dC51cyIsImsxMi52YS51cyIsImsxMi53YS51cyIsImsxMi53aS51cyIsImsxMi53eS51cyIsImNjLmFrLnVzIiwiY2MuYWwudXMiLCJjYy5hci51cyIsImNj''@;'; put 'put ''LmFzLnVzIiwiY2MuYXoudXMiLCJjYy5jYS51cyIsImNjLmNvLnVzIiwiY2MuY3QudXMiLCJjYy5kYy51cyIsImNjLmRlLnVzIiwiY2MuZmwudXMiLCJjYy5nYS51cyIsImNjLmd1LnVzIiwiY2MuaGkudXMiLCJjYy5pYS51cyIsImNjLmlkLnVzIiwiY2MuaWwudXMiLCJjYy5pbi51cyIsImNj''@;'; put 'put ''LmtzLnVzIiwiY2Mua3kudXMiLCJjYy5sYS51cyIsImNjLm1hLnVzIiwiY2MubWQudXMiLCJjYy5tZS51cyIsImNjLm1pLnVzIiwiY2MubW4udXMiLCJjYy5tby51cyIsImNjLm1zLnVzIiwiY2MubXQudXMiLCJjYy5uYy51cyIsImNjLm5kLnVzIiwiY2MubmUudXMiLCJjYy5uaC51cyIsImNj''@;'; put 'put ''Lm5qLnVzIiwiY2Mubm0udXMiLCJjYy5udi51cyIsImNjLm55LnVzIiwiY2Mub2gudXMiLCJjYy5vay51cyIsImNjLm9yLnVzIiwiY2MucGEudXMiLCJjYy5wci51cyIsImNjLnJpLnVzIiwiY2Muc2MudXMiLCJjYy5zZC51cyIsImNjLnRuLnVzIiwiY2MudHgudXMiLCJjYy51dC51cyIsImNj''@;'; put 'put ''LnZpLnVzIiwiY2MudnQudXMiLCJjYy52YS51cyIsImNjLndhLnVzIiwiY2Mud2kudXMiLCJjYy53di51cyIsImNjLnd5LnVzIiwibGliLmFrLnVzIiwibGliLmFsLnVzIiwibGliLmFyLnVzIiwibGliLmFzLnVzIiwibGliLmF6LnVzIiwibGliLmNhLnVzIiwibGliLmNvLnVzIiwibGliLmN0''@;'; put 'put ''LnVzIiwibGliLmRjLnVzIiwibGliLmZsLnVzIiwibGliLmdhLnVzIiwibGliLmd1LnVzIiwibGliLmhpLnVzIiwibGliLmlhLnVzIiwibGliLmlkLnVzIiwibGliLmlsLnVzIiwibGliLmluLnVzIiwibGliLmtzLnVzIiwibGliLmt5LnVzIiwibGliLmxhLnVzIiwibGliLm1hLnVzIiwibGli''@;'; put 'put ''Lm1kLnVzIiwibGliLm1lLnVzIiwibGliLm1pLnVzIiwibGliLm1uLnVzIiwibGliLm1vLnVzIiwibGliLm1zLnVzIiwibGliLm10LnVzIiwibGliLm5jLnVzIiwibGliLm5kLnVzIiwibGliLm5lLnVzIiwibGliLm5oLnVzIiwibGliLm5qLnVzIiwibGliLm5tLnVzIiwibGliLm52LnVzIiwi''@;'; put 'put ''bGliLm55LnVzIiwibGliLm9oLnVzIiwibGliLm9rLnVzIiwibGliLm9yLnVzIiwibGliLnBhLnVzIiwibGliLnByLnVzIiwibGliLnJpLnVzIiwibGliLnNjLnVzIiwibGliLnNkLnVzIiwibGliLnRuLnVzIiwibGliLnR4LnVzIiwibGliLnV0LnVzIiwibGliLnZpLnVzIiwibGliLnZ0LnVz''@;'; put 'put ''IiwibGliLnZhLnVzIiwibGliLndhLnVzIiwibGliLndpLnVzIiwibGliLnd5LnVzIiwicHZ0LmsxMi5tYS51cyIsImNodHIuazEyLm1hLnVzIiwicGFyb2NoLmsxMi5tYS51cyIsImFubi1hcmJvci5taS51cyIsImNvZy5taS51cyIsImRzdC5taS51cyIsImVhdG9uLm1pLnVzIiwiZ2VuLm1p''@;'; put 'put ''LnVzIiwibXVzLm1pLnVzIiwidGVjLm1pLnVzIiwid2FzaHRlbmF3Lm1pLnVzIiwidXkiLCJjb20udXkiLCJlZHUudXkiLCJndWIudXkiLCJtaWwudXkiLCJuZXQudXkiLCJvcmcudXkiLCJ1eiIsImNvLnV6IiwiY29tLnV6IiwibmV0LnV6Iiwib3JnLnV6IiwidmEiLCJ2YyIsImNvbS52YyIs''@;'; put 'put ''Im5ldC52YyIsIm9yZy52YyIsImdvdi52YyIsIm1pbC52YyIsImVkdS52YyIsInZlIiwiYXJ0cy52ZSIsImNvLnZlIiwiY29tLnZlIiwiZTEyLnZlIiwiZWR1LnZlIiwiZmlybS52ZSIsImdvYi52ZSIsImdvdi52ZSIsImluZm8udmUiLCJpbnQudmUiLCJtaWwudmUiLCJuZXQudmUiLCJvcmcu''@;'; put 'put ''dmUiLCJyZWMudmUiLCJzdG9yZS52ZSIsInRlYy52ZSIsIndlYi52ZSIsInZnIiwidmkiLCJjby52aSIsImNvbS52aSIsImsxMi52aSIsIm5ldC52aSIsIm9yZy52aSIsInZuIiwiY29tLnZuIiwibmV0LnZuIiwib3JnLnZuIiwiZWR1LnZuIiwiZ292LnZuIiwiaW50LnZuIiwiYWMudm4iLCJi''@;'; put 'put ''aXoudm4iLCJpbmZvLnZuIiwibmFtZS52biIsInByby52biIsImhlYWx0aC52biIsInZ1IiwiY29tLnZ1IiwiZWR1LnZ1IiwibmV0LnZ1Iiwib3JnLnZ1Iiwid2YiLCJ3cyIsImNvbS53cyIsIm5ldC53cyIsIm9yZy53cyIsImdvdi53cyIsImVkdS53cyIsInl0IiwiXHUwNjI3XHUwNjQ1XHUw''@;'; put 'put ''NjI3XHUwNjMxXHUwNjI3XHUwNjJhIiwiXHUwNTcwXHUwNTYxXHUwNTc1IiwiXHUwOWFjXHUwOWJlXHUwOTgyXHUwOWIyXHUwOWJlIiwiXHUwNDMxXHUwNDMzIiwiXHUwNDMxXHUwNDM1XHUwNDNiIiwiXHU0ZTJkXHU1NmZkIiwiXHU0ZTJkXHU1NzBiIiwiXHUwNjI3XHUwNjQ0XHUwNjJjXHUw''@;'; put 'put ''NjMyXHUwNjI3XHUwNjI2XHUwNjMxIiwiXHUwNjQ1XHUwNjM1XHUwNjMxIiwiXHUwNDM1XHUwNDRlIiwiXHUwM2I1XHUwM2M1IiwiXHUwNjQ1XHUwNjQ4XHUwNjMxXHUwNjRhXHUwNjJhXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI3IiwiXHUxMGQyXHUxMGQ0IiwiXHUwM2I1XHUwM2JiIiwiXHU5''@;'; put 'put ''OTk5XHU2ZTJmIiwiXHU1MTZjXHU1M2Y4Llx1OTk5OVx1NmUyZiIsIlx1NjU1OVx1ODBiMi5cdTk5OTlcdTZlMmYiLCJcdTY1M2ZcdTVlOWMuXHU5OTk5XHU2ZTJmIiwiXHU1MDBiXHU0ZWJhLlx1OTk5OVx1NmUyZiIsIlx1N2RiMlx1N2Q2MS5cdTk5OTlcdTZlMmYiLCJcdTdkNDRcdTdlNTQu''@;'; put 'put ''XHU5OTk5XHU2ZTJmIiwiXHUwY2FkXHUwY2JlXHUwY2IwXHUwY2E0IiwiXHUwYjJkXHUwYjNlXHUwYjMwXHUwYjI0IiwiXHUwOWFkXHUwOWJlXHUwOWYwXHUwOWE0IiwiXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTI0XHUwOTJlXHUwOTRkIiwiXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTRiXHUwOTI0''@;'; put 'put ''IiwiXHUwNjgwXHUwNjI3XHUwNjMxXHUwNjJhIiwiXHUwZDJkXHUwZDNlXHUwZDMwXHUwZDI0XHUwZDAyIiwiXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTI0IiwiXHUwNjI4XHUwNjI3XHUwNjMxXHUwNjJhIiwiXHUwNjI4XHUwNmJlXHUwNjI3XHUwNjMxXHUwNjJhIiwiXHUwYzJkXHUwYzNlXHUw''@;'; put 'put ''YzMwXHUwYzI0XHUwYzRkIiwiXHUwYWFkXHUwYWJlXHUwYWIwXHUwYWE0IiwiXHUwYTJkXHUwYTNlXHUwYTMwXHUwYTI0IiwiXHUwOWFkXHUwOWJlXHUwOWIwXHUwOWE0IiwiXHUwYjg3XHUwYmE4XHUwYmNkXHUwYmE0XHUwYmJmXHUwYmFmXHUwYmJlIiwiXHUwNjI3XHUwNmNjXHUwNjMxXHUw''@;'; put 'put ''NjI3XHUwNjQ2IiwiXHUwNjI3XHUwNjRhXHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjMxXHUwNjI3XHUwNjQyIiwiXHUwNjI3XHUwNjQ0XHUwNjI3XHUwNjMxXHUwNjJmXHUwNjQ2IiwiXHVkNTVjXHVhZDZkIiwiXHUwNDliXHUwNDMwXHUwNDM3IiwiXHUwZGJkXHUwZDgyXHUwZDlh''@;'; put 'put ''XHUwZGNmIiwiXHUwYjg3XHUwYmIyXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmM4IiwiXHUwNjI3XHUwNjQ0XHUwNjQ1XHUwNjNhXHUwNjMxXHUwNjI4IiwiXHUwNDNjXHUwNDNhXHUwNDM0IiwiXHUwNDNjXHUwNDNlXHUwNDNkIiwiXHU2ZmIzXHU5NTgwIiwiXHU2ZmIzXHU5NWU4IiwiXHUwNjQ1''@;'; put 'put ''XHUwNjQ0XHUwNjRhXHUwNjMzXHUwNjRhXHUwNjI3IiwiXHUwNjM5XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjdlXHUwNjI3XHUwNmE5XHUwNjMzXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjdlXHUwNjI3XHUwNjQzXHUwNjMzXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjQxXHUwNjQ0XHUw''@;'; put 'put ''NjMzXHUwNjM3XHUwNjRhXHUwNjQ2IiwiXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNmXHUwNDQwLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzZVx1MDQ0MFx1MDQzMy5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0M2VcdTA0MzFcdTA0NDAuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNl''@;'; put 'put ''XHUwNDM0Llx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQ0M1x1MDQzZlx1MDQ0MC5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0MzBcdTA0M2EuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDQwXHUwNDQ0IiwiXHUwNjQyXHUwNjM3XHUwNjMxIiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUw''@;'; put 'put ''NjQ4XHUwNjJmXHUwNjRhXHUwNjI5IiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUwNmNjXHUwNjI5IiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUwNmNjXHUwNmMzIiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUw''@;'; put 'put ''NjRhXHUwNjQ3IiwiXHUwNjMzXHUwNjQ4XHUwNjJmXHUwNjI3XHUwNjQ2IiwiXHU2NWIwXHU1MmEwXHU1NzYxIiwiXHUwYjlhXHUwYmJmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmFhXHUwYmNkXHUwYmFhXHUwYmMyXHUwYmIwXHUwYmNkIiwiXHUwNjMzXHUwNjQ4XHUwNjMxXHUwNjRhXHUwNjI5''@;'; put 'put ''IiwiXHUwNjMzXHUwNjQ4XHUwNjMxXHUwNjRhXHUwNjI3IiwiXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTI4XHUwZTM2XHUwZTAxXHUwZTI5XHUwZTMyLlx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGUxOFx1MGUzOFx1MGUyM1x1MGUwMVx1MGUzNFx1MGUwOC5cdTBlNDRcdTBlMTdcdTBlMjIi''@;'; put 'put ''LCJcdTBlMjNcdTBlMzFcdTBlMTBcdTBlMWFcdTBlMzJcdTBlMjUuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTE3XHUwZTJiXHUwZTMyXHUwZTIzLlx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGU0MFx1MGUxOVx1MGU0N1x1MGUxNS5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMmRcdTBlMDdc''@;'; put 'put ''dTBlMDRcdTBlNGNcdTBlMDFcdTBlMjMuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwNjJhXHUwNjQ4XHUwNjQ2XHUwNjMzIiwiXHU1M2YwXHU3MDYzIiwiXHU1M2YwXHU2ZTdlIiwiXHU4MWZhXHU3MDYzIiwiXHUwNDQzXHUwNDNhXHUwNDQwIiwiXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ1XHUw''@;'; put 'put ''NjQ2IiwieHh4IiwiKi55ZSIsImFjLnphIiwiYWdyaWMuemEiLCJhbHQuemEiLCJjby56YSIsImVkdS56YSIsImdvdi56YSIsImdyb25kYXIuemEiLCJsYXcuemEiLCJtaWwuemEiLCJuZXQuemEiLCJuZ28uemEiLCJuaWMuemEiLCJuaXMuemEiLCJub20uemEiLCJvcmcuemEiLCJzY2hvb2wu''@;'; put 'put ''emEiLCJ0bS56YSIsIndlYi56YSIsInptIiwiYWMuem0iLCJiaXouem0iLCJjby56bSIsImNvbS56bSIsImVkdS56bSIsImdvdi56bSIsImluZm8uem0iLCJtaWwuem0iLCJuZXQuem0iLCJvcmcuem0iLCJzY2guem0iLCJ6dyIsImFjLnp3IiwiY28uenciLCJnb3YuenciLCJtaWwuenciLCJv''@;'; put 'put ''cmcuenciLCJhYWEiLCJhYXJwIiwiYWJhcnRoIiwiYWJiIiwiYWJib3R0IiwiYWJidmllIiwiYWJjIiwiYWJsZSIsImFib2dhZG8iLCJhYnVkaGFiaSIsImFjYWRlbXkiLCJhY2NlbnR1cmUiLCJhY2NvdW50YW50IiwiYWNjb3VudGFudHMiLCJhY28iLCJhY3RvciIsImFkYWMiLCJhZHMiLCJh''@;'; put 'put ''ZHVsdCIsImFlZyIsImFldG5hIiwiYWZhbWlseWNvbXBhbnkiLCJhZmwiLCJhZnJpY2EiLCJhZ2FraGFuIiwiYWdlbmN5IiwiYWlnIiwiYWlnbyIsImFpcmJ1cyIsImFpcmZvcmNlIiwiYWlydGVsIiwiYWtkbiIsImFsZmFyb21lbyIsImFsaWJhYmEiLCJhbGlwYXkiLCJhbGxmaW5hbnoiLCJh''@;'; put 'put ''bGxzdGF0ZSIsImFsbHkiLCJhbHNhY2UiLCJhbHN0b20iLCJhbWF6b24iLCJhbWVyaWNhbmV4cHJlc3MiLCJhbWVyaWNhbmZhbWlseSIsImFtZXgiLCJhbWZhbSIsImFtaWNhIiwiYW1zdGVyZGFtIiwiYW5hbHl0aWNzIiwiYW5kcm9pZCIsImFucXVhbiIsImFueiIsImFvbCIsImFwYXJ0bWVu''@;'; put 'put ''dHMiLCJhcHAiLCJhcHBsZSIsImFxdWFyZWxsZSIsImFyYWIiLCJhcmFtY28iLCJhcmNoaSIsImFybXkiLCJhcnQiLCJhcnRlIiwiYXNkYSIsImFzc29jaWF0ZXMiLCJhdGhsZXRhIiwiYXR0b3JuZXkiLCJhdWN0aW9uIiwiYXVkaSIsImF1ZGlibGUiLCJhdWRpbyIsImF1c3Bvc3QiLCJhdXRo''@;'; put 'put ''b3IiLCJhdXRvIiwiYXV0b3MiLCJhdmlhbmNhIiwiYXdzIiwiYXhhIiwiYXp1cmUiLCJiYWJ5IiwiYmFpZHUiLCJiYW5hbWV4IiwiYmFuYW5hcmVwdWJsaWMiLCJiYW5kIiwiYmFuayIsImJhciIsImJhcmNlbG9uYSIsImJhcmNsYXljYXJkIiwiYmFyY2xheXMiLCJiYXJlZm9vdCIsImJhcmdh''@;'; put 'put ''aW5zIiwiYmFzZWJhbGwiLCJiYXNrZXRiYWxsIiwiYmF1aGF1cyIsImJheWVybiIsImJiYyIsImJidCIsImJidmEiLCJiY2ciLCJiY24iLCJiZWF0cyIsImJlYXV0eSIsImJlZXIiLCJiZW50bGV5IiwiYmVybGluIiwiYmVzdCIsImJlc3RidXkiLCJiZXQiLCJiaGFydGkiLCJiaWJsZSIsImJp''@;'; put 'put ''ZCIsImJpa2UiLCJiaW5nIiwiYmluZ28iLCJiaW8iLCJibGFjayIsImJsYWNrZnJpZGF5IiwiYmxvY2tidXN0ZXIiLCJibG9nIiwiYmxvb21iZXJnIiwiYmx1ZSIsImJtcyIsImJtdyIsImJucHBhcmliYXMiLCJib2F0cyIsImJvZWhyaW5nZXIiLCJib2ZhIiwiYm9tIiwiYm9uZCIsImJvbyIs''@;'; put 'put ''ImJvb2siLCJib29raW5nIiwiYm9zY2giLCJib3N0aWsiLCJib3N0b24iLCJib3QiLCJib3V0aXF1ZSIsImJveCIsImJyYWRlc2NvIiwiYnJpZGdlc3RvbmUiLCJicm9hZHdheSIsImJyb2tlciIsImJyb3RoZXIiLCJicnVzc2VscyIsImJ1ZGFwZXN0IiwiYnVnYXR0aSIsImJ1aWxkIiwiYnVp''@;'; put 'put ''bGRlcnMiLCJidXNpbmVzcyIsImJ1eSIsImJ1enoiLCJiemgiLCJjYWIiLCJjYWZlIiwiY2FsIiwiY2FsbCIsImNhbHZpbmtsZWluIiwiY2FtIiwiY2FtZXJhIiwiY2FtcCIsImNhbmNlcnJlc2VhcmNoIiwiY2Fub24iLCJjYXBldG93biIsImNhcGl0YWwiLCJjYXBpdGFsb25lIiwiY2FyIiwi''@;'; put 'put ''Y2FyYXZhbiIsImNhcmRzIiwiY2FyZSIsImNhcmVlciIsImNhcmVlcnMiLCJjYXJzIiwiY2FzYSIsImNhc2UiLCJjYXNlaWgiLCJjYXNoIiwiY2FzaW5vIiwiY2F0ZXJpbmciLCJjYXRob2xpYyIsImNiYSIsImNibiIsImNicmUiLCJjYnMiLCJjZWIiLCJjZW50ZXIiLCJjZW8iLCJjZXJuIiwi''@;'; put 'put ''Y2ZhIiwiY2ZkIiwiY2hhbmVsIiwiY2hhbm5lbCIsImNoYXJpdHkiLCJjaGFzZSIsImNoYXQiLCJjaGVhcCIsImNoaW50YWkiLCJjaHJpc3RtYXMiLCJjaHJvbWUiLCJjaHVyY2giLCJjaXByaWFuaSIsImNpcmNsZSIsImNpc2NvIiwiY2l0YWRlbCIsImNpdGkiLCJjaXRpYyIsImNpdHkiLCJj''@;'; put 'put ''aXR5ZWF0cyIsImNsYWltcyIsImNsZWFuaW5nIiwiY2xpY2siLCJjbGluaWMiLCJjbGluaXF1ZSIsImNsb3RoaW5nIiwiY2xvdWQiLCJjbHViIiwiY2x1Ym1lZCIsImNvYWNoIiwiY29kZXMiLCJjb2ZmZWUiLCJjb2xsZWdlIiwiY29sb2duZSIsImNvbWNhc3QiLCJjb21tYmFuayIsImNvbW11''@;'; put 'put ''bml0eSIsImNvbXBhbnkiLCJjb21wYXJlIiwiY29tcHV0ZXIiLCJjb21zZWMiLCJjb25kb3MiLCJjb25zdHJ1Y3Rpb24iLCJjb25zdWx0aW5nIiwiY29udGFjdCIsImNvbnRyYWN0b3JzIiwiY29va2luZyIsImNvb2tpbmdjaGFubmVsIiwiY29vbCIsImNvcnNpY2EiLCJjb3VudHJ5IiwiY291''@;'; put 'put ''cG9uIiwiY291cG9ucyIsImNvdXJzZXMiLCJjcGEiLCJjcmVkaXQiLCJjcmVkaXRjYXJkIiwiY3JlZGl0dW5pb24iLCJjcmlja2V0IiwiY3Jvd24iLCJjcnMiLCJjcnVpc2UiLCJjcnVpc2VzIiwiY3NjIiwiY3Vpc2luZWxsYSIsImN5bXJ1IiwiY3lvdSIsImRhYnVyIiwiZGFkIiwiZGFuY2Ui''@;'; put 'put ''LCJkYXRhIiwiZGF0ZSIsImRhdGluZyIsImRhdHN1biIsImRheSIsImRjbGsiLCJkZHMiLCJkZWFsIiwiZGVhbGVyIiwiZGVhbHMiLCJkZWdyZWUiLCJkZWxpdmVyeSIsImRlbGwiLCJkZWxvaXR0ZSIsImRlbHRhIiwiZGVtb2NyYXQiLCJkZW50YWwiLCJkZW50aXN0IiwiZGVzaSIsImRlc2ln''@;'; put 'put ''biIsImRldiIsImRobCIsImRpYW1vbmRzIiwiZGlldCIsImRpZ2l0YWwiLCJkaXJlY3QiLCJkaXJlY3RvcnkiLCJkaXNjb3VudCIsImRpc2NvdmVyIiwiZGlzaCIsImRpeSIsImRucCIsImRvY3MiLCJkb2N0b3IiLCJkb2ciLCJkb21haW5zIiwiZG90IiwiZG93bmxvYWQiLCJkcml2ZSIsImR0''@;'; put 'put ''diIsImR1YmFpIiwiZHVjayIsImR1bmxvcCIsImR1cG9udCIsImR1cmJhbiIsImR2YWciLCJkdnIiLCJlYXJ0aCIsImVhdCIsImVjbyIsImVkZWthIiwiZWR1Y2F0aW9uIiwiZW1haWwiLCJlbWVyY2siLCJlbmVyZ3kiLCJlbmdpbmVlciIsImVuZ2luZWVyaW5nIiwiZW50ZXJwcmlzZXMiLCJl''@;'; put 'put ''cHNvbiIsImVxdWlwbWVudCIsImVyaWNzc29uIiwiZXJuaSIsImVzcSIsImVzdGF0ZSIsImVzdXJhbmNlIiwiZXRpc2FsYXQiLCJldXJvdmlzaW9uIiwiZXVzIiwiZXZlbnRzIiwiZXhjaGFuZ2UiLCJleHBlcnQiLCJleHBvc2VkIiwiZXhwcmVzcyIsImV4dHJhc3BhY2UiLCJmYWdlIiwiZmFp''@;'; put 'put ''bCIsImZhaXJ3aW5kcyIsImZhaXRoIiwiZmFtaWx5IiwiZmFuIiwiZmFucyIsImZhcm0iLCJmYXJtZXJzIiwiZmFzaGlvbiIsImZhc3QiLCJmZWRleCIsImZlZWRiYWNrIiwiZmVycmFyaSIsImZlcnJlcm8iLCJmaWF0IiwiZmlkZWxpdHkiLCJmaWRvIiwiZmlsbSIsImZpbmFsIiwiZmluYW5j''@;'; put 'put ''ZSIsImZpbmFuY2lhbCIsImZpcmUiLCJmaXJlc3RvbmUiLCJmaXJtZGFsZSIsImZpc2giLCJmaXNoaW5nIiwiZml0IiwiZml0bmVzcyIsImZsaWNrciIsImZsaWdodHMiLCJmbGlyIiwiZmxvcmlzdCIsImZsb3dlcnMiLCJmbHkiLCJmb28iLCJmb29kIiwiZm9vZG5ldHdvcmsiLCJmb290YmFs''@;'; put 'put ''bCIsImZvcmQiLCJmb3JleCIsImZvcnNhbGUiLCJmb3J1bSIsImZvdW5kYXRpb24iLCJmb3giLCJmcmVlIiwiZnJlc2VuaXVzIiwiZnJsIiwiZnJvZ2FucyIsImZyb250ZG9vciIsImZyb250aWVyIiwiZnRyIiwiZnVqaXRzdSIsImZ1aml4ZXJveCIsImZ1biIsImZ1bmQiLCJmdXJuaXR1cmUi''@;'; put 'put ''LCJmdXRib2wiLCJmeWkiLCJnYWwiLCJnYWxsZXJ5IiwiZ2FsbG8iLCJnYWxsdXAiLCJnYW1lIiwiZ2FtZXMiLCJnYXAiLCJnYXJkZW4iLCJnYXkiLCJnYml6IiwiZ2RuIiwiZ2VhIiwiZ2VudCIsImdlbnRpbmciLCJnZW9yZ2UiLCJnZ2VlIiwiZ2lmdCIsImdpZnRzIiwiZ2l2ZXMiLCJnaXZp''@;'; put 'put ''bmciLCJnbGFkZSIsImdsYXNzIiwiZ2xlIiwiZ2xvYmFsIiwiZ2xvYm8iLCJnbWFpbCIsImdtYmgiLCJnbW8iLCJnbXgiLCJnb2RhZGR5IiwiZ29sZCIsImdvbGRwb2ludCIsImdvbGYiLCJnb28iLCJnb29keWVhciIsImdvb2ciLCJnb29nbGUiLCJnb3AiLCJnb3QiLCJncmFpbmdlciIsImdy''@;'; put 'put ''YXBoaWNzIiwiZ3JhdGlzIiwiZ3JlZW4iLCJncmlwZSIsImdyb2NlcnkiLCJncm91cCIsImd1YXJkaWFuIiwiZ3VjY2kiLCJndWdlIiwiZ3VpZGUiLCJndWl0YXJzIiwiZ3VydSIsImhhaXIiLCJoYW1idXJnIiwiaGFuZ291dCIsImhhdXMiLCJoYm8iLCJoZGZjIiwiaGRmY2JhbmsiLCJoZWFs''@;'; put 'put ''dGgiLCJoZWFsdGhjYXJlIiwiaGVscCIsImhlbHNpbmtpIiwiaGVyZSIsImhlcm1lcyIsImhndHYiLCJoaXBob3AiLCJoaXNhbWl0c3UiLCJoaXRhY2hpIiwiaGl2IiwiaGt0IiwiaG9ja2V5IiwiaG9sZGluZ3MiLCJob2xpZGF5IiwiaG9tZWRlcG90IiwiaG9tZWdvb2RzIiwiaG9tZXMiLCJo''@;'; put 'put ''b21lc2Vuc2UiLCJob25kYSIsImhvcnNlIiwiaG9zcGl0YWwiLCJob3N0IiwiaG9zdGluZyIsImhvdCIsImhvdGVsZXMiLCJob3RlbHMiLCJob3RtYWlsIiwiaG91c2UiLCJob3ciLCJoc2JjIiwiaHVnaGVzIiwiaHlhdHQiLCJoeXVuZGFpIiwiaWJtIiwiaWNiYyIsImljZSIsImljdSIsImll''@;'; put 'put ''ZWUiLCJpZm0iLCJpa2FubyIsImltYW1hdCIsImltZGIiLCJpbW1vIiwiaW1tb2JpbGllbiIsImluYyIsImluZHVzdHJpZXMiLCJpbmZpbml0aSIsImluZyIsImluayIsImluc3RpdHV0ZSIsImluc3VyYW5jZSIsImluc3VyZSIsImludGVsIiwiaW50ZXJuYXRpb25hbCIsImludHVpdCIsImlu''@;'; put 'put ''dmVzdG1lbnRzIiwiaXBpcmFuZ2EiLCJpcmlzaCIsImlzbWFpbGkiLCJpc3QiLCJpc3RhbmJ1bCIsIml0YXUiLCJpdHYiLCJpdmVjbyIsImphZ3VhciIsImphdmEiLCJqY2IiLCJqY3AiLCJqZWVwIiwiamV0enQiLCJqZXdlbHJ5IiwiamlvIiwiamxsIiwiam1wIiwiam5qIiwiam9idXJnIiwi''@;'; put 'put ''am90Iiwiam95IiwianBtb3JnYW4iLCJqcHJzIiwianVlZ29zIiwianVuaXBlciIsImthdWZlbiIsImtkZGkiLCJrZXJyeWhvdGVscyIsImtlcnJ5bG9naXN0aWNzIiwia2Vycnlwcm9wZXJ0aWVzIiwia2ZoIiwia2lhIiwia2ltIiwia2luZGVyIiwia2luZGxlIiwia2l0Y2hlbiIsImtpd2ki''@;'; put 'put ''LCJrb2VsbiIsImtvbWF0c3UiLCJrb3NoZXIiLCJrcG1nIiwia3BuIiwia3JkIiwia3JlZCIsImt1b2tncm91cCIsImt5b3RvIiwibGFjYWl4YSIsImxhbWJvcmdoaW5pIiwibGFtZXIiLCJsYW5jYXN0ZXIiLCJsYW5jaWEiLCJsYW5kIiwibGFuZHJvdmVyIiwibGFueGVzcyIsImxhc2FsbGUi''@;'; put 'put ''LCJsYXQiLCJsYXRpbm8iLCJsYXRyb2JlIiwibGF3IiwibGF3eWVyIiwibGRzIiwibGVhc2UiLCJsZWNsZXJjIiwibGVmcmFrIiwibGVnYWwiLCJsZWdvIiwibGV4dXMiLCJsZ2J0IiwibGlkbCIsImxpZmUiLCJsaWZlaW5zdXJhbmNlIiwibGlmZXN0eWxlIiwibGlnaHRpbmciLCJsaWtlIiwi''@;'; put 'put ''bGlsbHkiLCJsaW1pdGVkIiwibGltbyIsImxpbmNvbG4iLCJsaW5kZSIsImxpbmsiLCJsaXBzeSIsImxpdmUiLCJsaXZpbmciLCJsaXhpbCIsImxsYyIsImxscCIsImxvYW4iLCJsb2FucyIsImxvY2tlciIsImxvY3VzIiwibG9mdCIsImxvbCIsImxvbmRvbiIsImxvdHRlIiwibG90dG8iLCJs''@;'; put 'put ''b3ZlIiwibHBsIiwibHBsZmluYW5jaWFsIiwibHRkIiwibHRkYSIsImx1bmRiZWNrIiwibHVwaW4iLCJsdXhlIiwibHV4dXJ5IiwibWFjeXMiLCJtYWRyaWQiLCJtYWlmIiwibWFpc29uIiwibWFrZXVwIiwibWFuIiwibWFuYWdlbWVudCIsIm1hbmdvIiwibWFwIiwibWFya2V0IiwibWFya2V0''@;'; put 'put ''aW5nIiwibWFya2V0cyIsIm1hcnJpb3R0IiwibWFyc2hhbGxzIiwibWFzZXJhdGkiLCJtYXR0ZWwiLCJtYmEiLCJtY2tpbnNleSIsIm1lZCIsIm1lZGlhIiwibWVldCIsIm1lbGJvdXJuZSIsIm1lbWUiLCJtZW1vcmlhbCIsIm1lbiIsIm1lbnUiLCJtZXJja21zZCIsIm1ldGxpZmUiLCJtaWFt''@;'; put 'put ''aSIsIm1pY3Jvc29mdCIsIm1pbmkiLCJtaW50IiwibWl0IiwibWl0c3ViaXNoaSIsIm1sYiIsIm1scyIsIm1tYSIsIm1vYmlsZSIsIm1vZGEiLCJtb2UiLCJtb2kiLCJtb20iLCJtb25hc2giLCJtb25leSIsIm1vbnN0ZXIiLCJtb3Jtb24iLCJtb3J0Z2FnZSIsIm1vc2NvdyIsIm1vdG8iLCJt''@;'; put 'put ''b3RvcmN5Y2xlcyIsIm1vdiIsIm1vdmllIiwibXNkIiwibXRuIiwibXRyIiwibXV0dWFsIiwibmFiIiwibmFkZXgiLCJuYWdveWEiLCJuYXRpb253aWRlIiwibmF0dXJhIiwibmF2eSIsIm5iYSIsIm5lYyIsIm5ldGJhbmsiLCJuZXRmbGl4IiwibmV0d29yayIsIm5ldXN0YXIiLCJuZXciLCJu''@;'; put 'put ''ZXdob2xsYW5kIiwibmV3cyIsIm5leHQiLCJuZXh0ZGlyZWN0IiwibmV4dXMiLCJuZmwiLCJuZ28iLCJuaGsiLCJuaWNvIiwibmlrZSIsIm5pa29uIiwibmluamEiLCJuaXNzYW4iLCJuaXNzYXkiLCJub2tpYSIsIm5vcnRod2VzdGVybm11dHVhbCIsIm5vcnRvbiIsIm5vdyIsIm5vd3J1eiIs''@;'; put 'put ''Im5vd3R2IiwibnJhIiwibnJ3IiwibnR0IiwibnljIiwib2JpIiwib2JzZXJ2ZXIiLCJvZmYiLCJvZmZpY2UiLCJva2luYXdhIiwib2xheWFuIiwib2xheWFuZ3JvdXAiLCJvbGRuYXZ5Iiwib2xsbyIsIm9tZWdhIiwib25lIiwib25nIiwib25sIiwib25saW5lIiwib255b3Vyc2lkZSIsIm9v''@;'; put 'put ''byIsIm9wZW4iLCJvcmFjbGUiLCJvcmFuZ2UiLCJvcmdhbmljIiwib3JpZ2lucyIsIm9zYWthIiwib3RzdWthIiwib3R0Iiwib3ZoIiwicGFnZSIsInBhbmFzb25pYyIsInBhcmlzIiwicGFycyIsInBhcnRuZXJzIiwicGFydHMiLCJwYXJ0eSIsInBhc3NhZ2VucyIsInBheSIsInBjY3ciLCJw''@;'; put 'put ''ZXQiLCJwZml6ZXIiLCJwaGFybWFjeSIsInBoZCIsInBoaWxpcHMiLCJwaG9uZSIsInBob3RvIiwicGhvdG9ncmFwaHkiLCJwaG90b3MiLCJwaHlzaW8iLCJwaWNzIiwicGljdGV0IiwicGljdHVyZXMiLCJwaWQiLCJwaW4iLCJwaW5nIiwicGluayIsInBpb25lZXIiLCJwaXp6YSIsInBsYWNl''@;'; put 'put ''IiwicGxheSIsInBsYXlzdGF0aW9uIiwicGx1bWJpbmciLCJwbHVzIiwicG5jIiwicG9obCIsInBva2VyIiwicG9saXRpZSIsInBvcm4iLCJwcmFtZXJpY2EiLCJwcmF4aSIsInByZXNzIiwicHJpbWUiLCJwcm9kIiwicHJvZHVjdGlvbnMiLCJwcm9mIiwicHJvZ3Jlc3NpdmUiLCJwcm9tbyIs''@;'; put 'put ''InByb3BlcnRpZXMiLCJwcm9wZXJ0eSIsInByb3RlY3Rpb24iLCJwcnUiLCJwcnVkZW50aWFsIiwicHViIiwicHdjIiwicXBvbiIsInF1ZWJlYyIsInF1ZXN0IiwicXZjIiwicmFjaW5nIiwicmFkaW8iLCJyYWlkIiwicmVhZCIsInJlYWxlc3RhdGUiLCJyZWFsdG9yIiwicmVhbHR5IiwicmVj''@;'; put 'put ''aXBlcyIsInJlZCIsInJlZHN0b25lIiwicmVkdW1icmVsbGEiLCJyZWhhYiIsInJlaXNlIiwicmVpc2VuIiwicmVpdCIsInJlbGlhbmNlIiwicmVuIiwicmVudCIsInJlbnRhbHMiLCJyZXBhaXIiLCJyZXBvcnQiLCJyZXB1YmxpY2FuIiwicmVzdCIsInJlc3RhdXJhbnQiLCJyZXZpZXciLCJy''@;'; put 'put ''ZXZpZXdzIiwicmV4cm90aCIsInJpY2giLCJyaWNoYXJkbGkiLCJyaWNvaCIsInJpZ2h0YXRob21lIiwicmlsIiwicmlvIiwicmlwIiwicm1pdCIsInJvY2hlciIsInJvY2tzIiwicm9kZW8iLCJyb2dlcnMiLCJyb29tIiwicnN2cCIsInJ1Z2J5IiwicnVociIsInJ1biIsInJ3ZSIsInJ5dWt5''@;'; put 'put ''dSIsInNhYXJsYW5kIiwic2FmZSIsInNhZmV0eSIsInNha3VyYSIsInNhbGUiLCJzYWxvbiIsInNhbXNjbHViIiwic2Ftc3VuZyIsInNhbmR2aWsiLCJzYW5kdmlrY29yb21hbnQiLCJzYW5vZmkiLCJzYXAiLCJzYXJsIiwic2FzIiwic2F2ZSIsInNheG8iLCJzYmkiLCJzYnMiLCJzY2EiLCJz''@;'; put 'put ''Y2IiLCJzY2hhZWZmbGVyIiwic2NobWlkdCIsInNjaG9sYXJzaGlwcyIsInNjaG9vbCIsInNjaHVsZSIsInNjaHdhcnoiLCJzY2llbmNlIiwic2Nqb2huc29uIiwic2NvciIsInNjb3QiLCJzZWFyY2giLCJzZWF0Iiwic2VjdXJlIiwic2VjdXJpdHkiLCJzZWVrIiwic2VsZWN0Iiwic2VuZXIi''@;'; put 'put ''LCJzZXJ2aWNlcyIsInNlcyIsInNldmVuIiwic2V3Iiwic2V4Iiwic2V4eSIsInNmciIsInNoYW5ncmlsYSIsInNoYXJwIiwic2hhdyIsInNoZWxsIiwic2hpYSIsInNoaWtzaGEiLCJzaG9lcyIsInNob3AiLCJzaG9wcGluZyIsInNob3VqaSIsInNob3ciLCJzaG93dGltZSIsInNocmlyYW0i''@;'; put 'put ''LCJzaWxrIiwic2luYSIsInNpbmdsZXMiLCJzaXRlIiwic2tpIiwic2tpbiIsInNreSIsInNreXBlIiwic2xpbmciLCJzbWFydCIsInNtaWxlIiwic25jZiIsInNvY2NlciIsInNvY2lhbCIsInNvZnRiYW5rIiwic29mdHdhcmUiLCJzb2h1Iiwic29sYXIiLCJzb2x1dGlvbnMiLCJzb25nIiwi''@;'; put 'put ''c29ueSIsInNveSIsInNwYSIsInNwYWNlIiwic3BvcnQiLCJzcG90Iiwic3ByZWFkYmV0dGluZyIsInNybCIsInN0YWRhIiwic3RhcGxlcyIsInN0YXIiLCJzdGF0ZWJhbmsiLCJzdGF0ZWZhcm0iLCJzdGMiLCJzdGNncm91cCIsInN0b2NraG9sbSIsInN0b3JhZ2UiLCJzdG9yZSIsInN0cmVh''@;'; put 'put ''bSIsInN0dWRpbyIsInN0dWR5Iiwic3R5bGUiLCJzdWNrcyIsInN1cHBsaWVzIiwic3VwcGx5Iiwic3VwcG9ydCIsInN1cmYiLCJzdXJnZXJ5Iiwic3V6dWtpIiwic3dhdGNoIiwic3dpZnRjb3ZlciIsInN3aXNzIiwic3lkbmV5Iiwic3ltYW50ZWMiLCJzeXN0ZW1zIiwidGFiIiwidGFpcGVp''@;'; put 'put ''IiwidGFsayIsInRhb2JhbyIsInRhcmdldCIsInRhdGFtb3RvcnMiLCJ0YXRhciIsInRhdHRvbyIsInRheCIsInRheGkiLCJ0Y2kiLCJ0ZGsiLCJ0ZWFtIiwidGVjaCIsInRlY2hub2xvZ3kiLCJ0ZW1hc2VrIiwidGVubmlzIiwidGV2YSIsInRoZCIsInRoZWF0ZXIiLCJ0aGVhdHJlIiwidGlh''@;'; put 'put ''YSIsInRpY2tldHMiLCJ0aWVuZGEiLCJ0aWZmYW55IiwidGlwcyIsInRpcmVzIiwidGlyb2wiLCJ0am1heHgiLCJ0angiLCJ0a21heHgiLCJ0bWFsbCIsInRvZGF5IiwidG9reW8iLCJ0b29scyIsInRvcCIsInRvcmF5IiwidG9zaGliYSIsInRvdGFsIiwidG91cnMiLCJ0b3duIiwidG95b3Rh''@;'; put 'put ''IiwidG95cyIsInRyYWRlIiwidHJhZGluZyIsInRyYWluaW5nIiwidHJhdmVsIiwidHJhdmVsY2hhbm5lbCIsInRyYXZlbGVycyIsInRyYXZlbGVyc2luc3VyYW5jZSIsInRydXN0IiwidHJ2IiwidHViZSIsInR1aSIsInR1bmVzIiwidHVzaHUiLCJ0dnMiLCJ1YmFuayIsInVicyIsInVuaWNv''@;'; put 'put ''bSIsInVuaXZlcnNpdHkiLCJ1bm8iLCJ1b2wiLCJ1cHMiLCJ2YWNhdGlvbnMiLCJ2YW5hIiwidmFuZ3VhcmQiLCJ2ZWdhcyIsInZlbnR1cmVzIiwidmVyaXNpZ24iLCJ2ZXJzaWNoZXJ1bmciLCJ2ZXQiLCJ2aWFqZXMiLCJ2aWRlbyIsInZpZyIsInZpa2luZyIsInZpbGxhcyIsInZpbiIsInZp''@;'; put 'put ''cCIsInZpcmdpbiIsInZpc2EiLCJ2aXNpb24iLCJ2aXZhIiwidml2byIsInZsYWFuZGVyZW4iLCJ2b2RrYSIsInZvbGtzd2FnZW4iLCJ2b2x2byIsInZvdGUiLCJ2b3RpbmciLCJ2b3RvIiwidm95YWdlIiwidnVlbG9zIiwid2FsZXMiLCJ3YWxtYXJ0Iiwid2FsdGVyIiwid2FuZyIsIndhbmdn''@;'; put 'put ''b3UiLCJ3YXRjaCIsIndhdGNoZXMiLCJ3ZWF0aGVyIiwid2VhdGhlcmNoYW5uZWwiLCJ3ZWJjYW0iLCJ3ZWJlciIsIndlYnNpdGUiLCJ3ZWQiLCJ3ZWRkaW5nIiwid2VpYm8iLCJ3ZWlyIiwid2hvc3dobyIsIndpZW4iLCJ3aWtpIiwid2lsbGlhbWhpbGwiLCJ3aW4iLCJ3aW5kb3dzIiwid2lu''@;'; put 'put ''ZSIsIndpbm5lcnMiLCJ3bWUiLCJ3b2x0ZXJza2x1d2VyIiwid29vZHNpZGUiLCJ3b3JrIiwid29ya3MiLCJ3b3JsZCIsIndvdyIsInd0YyIsInd0ZiIsInhib3giLCJ4ZXJveCIsInhmaW5pdHkiLCJ4aWh1YW4iLCJ4aW4iLCJcdTA5MTVcdTA5NDlcdTA5MmUiLCJcdTMwYmJcdTMwZmNcdTMw''@;'; put 'put ''ZWIiLCJcdTRmNWJcdTVjNzEiLCJcdTYxNDhcdTU1ODQiLCJcdTk2YzZcdTU2ZTIiLCJcdTU3MjhcdTdlYmYiLCJcdTU5MjdcdTRmMTdcdTZjN2RcdThmNjYiLCJcdTcwYjlcdTc3MGIiLCJcdTBlMDRcdTBlMmRcdTBlMjEiLCJcdTUxNmJcdTUzNjYiLCJcdTA2NDVcdTA2NDhcdTA2NDJcdTA2''@;'; put 'put ''MzkiLCJcdTUxNmNcdTc2Y2EiLCJcdTUxNmNcdTUzZjgiLCJcdTk5OTlcdTY4M2NcdTkxY2NcdTYyYzkiLCJcdTdmNTFcdTdhZDkiLCJcdTc5ZmJcdTUyYTgiLCJcdTYyMTFcdTcyMzFcdTRmNjAiLCJcdTA0M2NcdTA0M2VcdTA0NDFcdTA0M2FcdTA0MzJcdTA0MzAiLCJcdTA0M2FcdTA0MzBc''@;'; put 'put ''dTA0NDJcdTA0M2VcdTA0M2JcdTA0MzhcdTA0M2EiLCJcdTA0M2VcdTA0M2RcdTA0M2JcdTA0MzBcdTA0MzlcdTA0M2QiLCJcdTA0NDFcdTA0MzBcdTA0MzlcdTA0NDIiLCJcdTgwNTRcdTkwMWEiLCJcdTA1ZTdcdTA1ZDVcdTA1ZGQiLCJcdTY1ZjZcdTVjMWEiLCJcdTVmYWVcdTUzNWEiLCJc''@;'; put 'put ''dTZkZTFcdTlhNmNcdTk1MjEiLCJcdTMwZDVcdTMwYTFcdTMwYzNcdTMwYjdcdTMwZTdcdTMwZjMiLCJcdTA0M2VcdTA0NDBcdTA0MzMiLCJcdTA5MjhcdTA5NDdcdTA5MWYiLCJcdTMwYjlcdTMwYzhcdTMwYTIiLCJcdTMwYTJcdTMwZGVcdTMwYmVcdTMwZjMiLCJcdWMwYmNcdWMxMzEiLCJc''@;'; put 'put ''dTU1NDZcdTY4MDciLCJcdTU1NDZcdTVlOTciLCJcdTU1NDZcdTU3Y2UiLCJcdTA0MzRcdTA0MzVcdTA0NDJcdTA0MzgiLCJcdTMwZGRcdTMwYTRcdTMwZjNcdTMwYzgiLCJcdTY1YjBcdTk1ZmIiLCJcdTVkZTVcdTg4NGMiLCJcdTViYjZcdTk2ZmIiLCJcdTA2NDNcdTA2NDhcdTA2NDUiLCJc''@;'; put 'put ''dTRlMmRcdTY1ODdcdTdmNTEiLCJcdTRlMmRcdTRmZTEiLCJcdTVhMzFcdTRlNTAiLCJcdThjMzdcdTZiNGMiLCJcdTk2ZmJcdThhMGFcdTc2YzhcdTc5ZDEiLCJcdThkMmRcdTcyNjkiLCJcdTMwYWZcdTMwZTlcdTMwYTZcdTMwYzkiLCJcdTkwMWFcdThjYTkiLCJcdTdmNTFcdTVlOTciLCJc''@;'; put 'put ''dTA5MzhcdTA5MDJcdTA5MTdcdTA5MjBcdTA5MjgiLCJcdTk5MTBcdTUzODUiLCJcdTdmNTFcdTdlZGMiLCJcdTA0M2FcdTA0M2VcdTA0M2MiLCJcdTRlOWFcdTlhNmNcdTkwMGEiLCJcdThiZmFcdTU3ZmFcdTRlOWEiLCJcdTk4ZGZcdTU0YzEiLCJcdTk4ZGVcdTUyMjlcdTZkNjYiLCJcdTYy''@;'; put 'put ''NGJcdTg4NjgiLCJcdTYyNGJcdTY3M2EiLCJcdTA2MjdcdTA2MzFcdTA2MjdcdTA2NDVcdTA2NDNcdTA2NDgiLCJcdTA2MjdcdTA2NDRcdTA2MzlcdTA2NDRcdTA2NGFcdTA2MjdcdTA2NDYiLCJcdTA2MjdcdTA2MmFcdTA2MzVcdTA2MjdcdTA2NDRcdTA2MjdcdTA2MmEiLCJcdTA2MjhcdTA2''@;'; put 'put ''MjdcdTA2MzJcdTA2MjdcdTA2MzEiLCJcdTA2MjdcdTA2MjhcdTA2NDhcdTA2MzhcdTA2MjhcdTA2NGEiLCJcdTA2NDNcdTA2MjdcdTA2MmJcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDMiLCJcdTA2NDdcdTA2NDVcdTA2MzFcdTA2MjdcdTA2NDciLCJcdWIyZjdcdWNlZjQiLCJcdTY1M2ZcdTVl''@;'; put 'put ''OWMiLCJcdTA2MzRcdTA2MjhcdTA2NDNcdTA2MjkiLCJcdTA2MjhcdTA2NGFcdTA2MmFcdTA2NDMiLCJcdTA2MzlcdTA2MzFcdTA2MjgiLCJcdTY3M2FcdTY3ODQiLCJcdTdlYzRcdTdlYzdcdTY3M2FcdTY3ODQiLCJcdTUwNjVcdTVlYjciLCJcdTYyZGJcdTgwNTgiLCJcdTA0NDBcdTA0NDNc''@;'; put 'put ''dTA0NDEiLCJcdTczZTBcdTViOWQiLCJcdTU5MjdcdTYyZmYiLCJcdTMwN2ZcdTMwOTNcdTMwNmEiLCJcdTMwYjBcdTMwZmNcdTMwYjBcdTMwZWIiLCJcdTRlMTZcdTc1NGMiLCJcdTY2ZjhcdTdjNGQiLCJcdTdmNTFcdTU3NDAiLCJcdWIyZjdcdWIxMzciLCJcdTMwYjNcdTMwZTAiLCJcdTU5''@;'; put 'put ''MjlcdTRlM2JcdTY1NTkiLCJcdTZlMzhcdTYyMGYiLCJ2ZXJtXHhmNmdlbnNiZXJhdGVyIiwidmVybVx4ZjZnZW5zYmVyYXR1bmciLCJcdTRmMDFcdTRlMWEiLCJcdTRmZTFcdTYwNmYiLCJcdTU2MDlcdTkxY2NcdTU5MjdcdTkxNTJcdTVlOTciLCJcdTU2MDlcdTkxY2MiLCJcdTVlN2ZcdTRl''@;'; put 'put ''MWMiLCJcdTY1M2ZcdTUyYTEiLCJ4eXoiLCJ5YWNodHMiLCJ5YWhvbyIsInlhbWF4dW4iLCJ5YW5kZXgiLCJ5b2RvYmFzaGkiLCJ5b2dhIiwieW9rb2hhbWEiLCJ5b3UiLCJ5b3V0dWJlIiwieXVuIiwiemFwcG9zIiwiemFyYSIsInplcm8iLCJ6aXAiLCJ6b25lIiwienVlcmljaCIsImNjLnVh''@;'; put 'put ''IiwiaW5mLnVhIiwibHRkLnVhIiwiYWRvYmVhZW1jbG91ZC5jb20iLCJhZG9iZWFlbWNsb3VkLm5ldCIsIiouZGV2LmFkb2JlYWVtY2xvdWQuY29tIiwiYmVlcC5wbCIsImJhcnN5LmNhIiwiKi5jb21wdXRlLmVzdGF0ZSIsIiouYWxjZXMubmV0d29yayIsImFsdGVydmlzdGEub3JnIiwiYWx3''@;'; put 'put ''YXlzZGF0YS5uZXQiLCJjbG91ZGZyb250Lm5ldCIsIiouY29tcHV0ZS5hbWF6b25hd3MuY29tIiwiKi5jb21wdXRlLTEuYW1hem9uYXdzLmNvbSIsIiouY29tcHV0ZS5hbWF6b25hd3MuY29tLmNuIiwidXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJjbi1ub3J0aC0xLmViLmFtYXpvbmF3cy5j''@;'; put 'put ''b20uY24iLCJjbi1ub3J0aHdlc3QtMS5lYi5hbWF6b25hd3MuY29tLmNuIiwiZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1ub3J0aGVhc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLW5vcnRoZWFzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtbm9ydGhlYXN0LTMuZWxhc3Rp''@;'; put 'put ''Y2JlYW5zdGFsay5jb20iLCJhcC1zb3V0aC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtc291dGhlYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1zb3V0aGVhc3QtMi5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImNhLWNlbnRyYWwtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImV1''@;'; put 'put ''LWNlbnRyYWwtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImV1LXdlc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImV1LXdlc3QtMi5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImV1LXdlc3QtMy5lbGFzdGljYmVhbnN0YWxrLmNvbSIsInNhLWVhc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIs''@;'; put 'put ''InVzLWVhc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsInVzLWVhc3QtMi5lbGFzdGljYmVhbnN0YWxrLmNvbSIsInVzLWdvdi13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy13ZXN0LTIuZWxhc3RpY2JlYW5zdGFsay5j''@;'; put 'put ''b20iLCIqLmVsYi5hbWF6b25hd3MuY29tIiwiKi5lbGIuYW1hem9uYXdzLmNvbS5jbiIsInMzLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWFwLXNvdXRoLTEuYW1hem9uYXdzLmNv''@;'; put 'put ''bSIsInMzLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwi''@;'; put 'put ''czMtZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLWV4dGVybmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMtdXMtZ292LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy11cy1nb3Yt''@;'; put 'put ''d2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy11cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuYXAtc291dGgtMS5hbWF6b25h''@;'; put 'put ''d3MuY29tIiwiczMuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiczMuY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJz''@;'; put 'put ''My51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0''@;'; put 'put ''YWNrLmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMz''@;'; put 'put ''LmR1YWxzdGFjay5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFj''@;'; put 'put ''ay51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtdXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLXVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS11cy13ZXN0LTIuYW1h''@;'; put 'put ''em9uYXdzLmNvbSIsInMzLXdlYnNpdGUtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtZXUtd2VzdC0xLmFtYXpv''@;'; put 'put ''bmF3cy5jb20iLCJzMy13ZWJzaXRlLXNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29t''@;'; put 'put ''IiwiczMtd2Vic2l0ZS5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsImFtc3cubmwiLCJ0''@;'; put 'put ''M2wzcDBydC5uZXQiLCJ0ZWxlLmFtdW5lLm9yZyIsImFwaWdlZS5pbyIsIm9uLWFwdGlibGUuY29tIiwidXNlci5hc2VpbmV0Lm5lLmpwIiwiZ3YudmMiLCJkLmd2LnZjIiwidXNlci5wYXJ0eS5ldXMiLCJwaW1pZW50YS5vcmciLCJwb2l2cm9uLm9yZyIsInBvdGFnZXIub3JnIiwic3dlZXRw''@;'; put 'put ''ZXBwZXIub3JnIiwibXlhc3VzdG9yLmNvbSIsIm15ZnJpdHoubmV0IiwiKi5hd2Rldi5jYSIsIiouYWR2aXNvci53cyIsImItZGF0YS5pbyIsImJhY2twbGFuZWFwcC5pbyIsImJhbGVuYS1kZXZpY2VzLmNvbSIsImFwcC5iYW56YWljbG91ZC5pbyIsImJldGFpbmFib3guY29tIiwiYm5yLmxh''@;'; put 'put ''IiwiYmxhY2tiYXVkY2RuLm5ldCIsImJvb21sYS5uZXQiLCJib3hmdXNlLmlvIiwic3F1YXJlNy5jaCIsImJwbGFjZWQuY29tIiwiYnBsYWNlZC5kZSIsInNxdWFyZTcuZGUiLCJicGxhY2VkLm5ldCIsInNxdWFyZTcubmV0IiwiYnJvd3NlcnNhZmV0eW1hcmsuaW8iLCJ1azAuYmlndi5pbyIs''@;'; put 'put ''ImRoLmJ5dGVtYXJrLmNvLnVrIiwidm0uYnl0ZW1hcmsuY28udWsiLCJteWNkLmV1IiwiY2FycmQuY28iLCJjcmQuY28iLCJ1d3UuYWkiLCJhZS5vcmciLCJhci5jb20iLCJici5jb20iLCJjbi5jb20iLCJjb20uZGUiLCJjb20uc2UiLCJkZS5jb20iLCJldS5jb20iLCJnYi5jb20iLCJnYi5u''@;'; put 'put ''ZXQiLCJodS5jb20iLCJodS5uZXQiLCJqcC5uZXQiLCJqcG4uY29tIiwia3IuY29tIiwibWV4LmNvbSIsIm5vLmNvbSIsInFjLmNvbSIsInJ1LmNvbSIsInNhLmNvbSIsInNlLm5ldCIsInVrLmNvbSIsInVrLm5ldCIsInVzLmNvbSIsInV5LmNvbSIsInphLmJ6IiwiemEuY29tIiwiYWZyaWNh''@;'; put 'put ''LmNvbSIsImdyLmNvbSIsImluLm5ldCIsInVzLm9yZyIsImNvLmNvbSIsImMubGEiLCJjZXJ0bWdyLm9yZyIsInhlbmFwcG9uYXp1cmUuY29tIiwiZGlzY291cnNlLmdyb3VwIiwiZGlzY291cnNlLnRlYW0iLCJ2aXJ0dWVlbGRvbWVpbi5ubCIsImNsZXZlcmFwcHMuaW8iLCIqLmxjbC5kZXYi''@;'; put 'put ''LCIqLnN0Zy5kZXYiLCJjNjYubWUiLCJjbG91ZDY2LndzIiwiY2xvdWQ2Ni56b25lIiwiamRldmNsb3VkLmNvbSIsIndwZGV2Y2xvdWQuY29tIiwiY2xvdWRhY2Nlc3MuaG9zdCIsImZyZWVzaXRlLmhvc3QiLCJjbG91ZGFjY2Vzcy5uZXQiLCJjbG91ZGNvbnRyb2xsZWQuY29tIiwiY2xvdWRj''@;'; put 'put ''b250cm9sYXBwLmNvbSIsImNsb3VkZXJhLnNpdGUiLCJ0cnljbG91ZGZsYXJlLmNvbSIsIndvcmtlcnMuZGV2Iiwid25leHQuYXBwIiwiY28uY2EiLCIqLm90YXAuY28iLCJjby5jeiIsImMuY2RuNzcub3JnIiwiY2RuNzctc3NsLm5ldCIsInIuY2RuNzcubmV0IiwicnNjLmNkbjc3Lm9yZyIs''@;'; put 'put ''InNzbC5vcmlnaW4uY2RuNzctc2VjdXJlLm9yZyIsImNsb3VkbnMuYXNpYSIsImNsb3VkbnMuYml6IiwiY2xvdWRucy5jbHViIiwiY2xvdWRucy5jYyIsImNsb3VkbnMuZXUiLCJjbG91ZG5zLmluIiwiY2xvdWRucy5pbmZvIiwiY2xvdWRucy5vcmciLCJjbG91ZG5zLnBybyIsImNsb3VkbnMu''@;'; put 'put ''cHciLCJjbG91ZG5zLnVzIiwiY2xvdWRlaXR5Lm5ldCIsImNucHkuZ2RuIiwiY28ubmwiLCJjby5ubyIsIndlYmhvc3RpbmcuYmUiLCJob3N0aW5nLWNsdXN0ZXIubmwiLCJhYy5ydSIsImVkdS5ydSIsImdvdi5ydSIsImludC5ydSIsIm1pbC5ydSIsInRlc3QucnUiLCJkeW4uY29zaWRucy5k''@;'; put 'put ''ZSIsImR5bmFtaXNjaGVzLWRucy5kZSIsImRuc3VwZGF0ZXIuZGUiLCJpbnRlcm5ldC1kbnMuZGUiLCJsLW8tZy1pLW4uZGUiLCJkeW5hbWljLWRucy5pbmZvIiwiZmVzdGUtaXAubmV0Iiwia254LXNlcnZlci5uZXQiLCJzdGF0aWMtYWNjZXNzLm5ldCIsInJlYWxtLmN6IiwiKi5jcnlwdG9u''@;'; put 'put ''b21pYy5uZXQiLCJjdXBjYWtlLmlzIiwiKi5jdXN0b21lci1vY2kuY29tIiwiKi5vY2kuY3VzdG9tZXItb2NpLmNvbSIsIioub2NwLmN1c3RvbWVyLW9jaS5jb20iLCIqLm9jcy5jdXN0b21lci1vY2kuY29tIiwiY3lvbi5saW5rIiwiY3lvbi5zaXRlIiwiZGFwbGllLm1lIiwibG9jYWxob3N0''@;'; put 'put ''LmRhcGxpZS5tZSIsImRhdHRvbG9jYWwuY29tIiwiZGF0dG9yZWxheS5jb20iLCJkYXR0b3dlYi5jb20iLCJteWRhdHRvLmNvbSIsImRhdHRvbG9jYWwubmV0IiwibXlkYXR0by5uZXQiLCJiaXouZGsiLCJjby5kayIsImZpcm0uZGsiLCJyZWcuZGsiLCJzdG9yZS5kayIsIiouZGFwcHMuZWFy''@;'; put 'put ''dGgiLCIqLmJ6ei5kYXBwcy5lYXJ0aCIsImJ1aWx0d2l0aGRhcmsuY29tIiwiZWRnZXN0YWNrLm1lIiwiZGViaWFuLm5ldCIsImRlZHluLmlvIiwiZG5zaG9tZS5kZSIsIm9ubGluZS50aCIsInNob3AudGgiLCJkcmF5ZGRucy5jb20iLCJkcmVhbWhvc3RlcnMuY29tIiwibXlkcm9iby5jb20i''@;'; put 'put ''LCJkcnVkLmlvIiwiZHJ1ZC51cyIsImR1Y2tkbnMub3JnIiwiZHkuZmkiLCJ0dW5rLm9yZyIsImR5bmRucy1hdC1ob21lLmNvbSIsImR5bmRucy1hdC13b3JrLmNvbSIsImR5bmRucy1ibG9nLmNvbSIsImR5bmRucy1mcmVlLmNvbSIsImR5bmRucy1ob21lLmNvbSIsImR5bmRucy1pcC5jb20i''@;'; put 'put ''LCJkeW5kbnMtbWFpbC5jb20iLCJkeW5kbnMtb2ZmaWNlLmNvbSIsImR5bmRucy1waWNzLmNvbSIsImR5bmRucy1yZW1vdGUuY29tIiwiZHluZG5zLXNlcnZlci5jb20iLCJkeW5kbnMtd2ViLmNvbSIsImR5bmRucy13aWtpLmNvbSIsImR5bmRucy13b3JrLmNvbSIsImR5bmRucy5iaXoiLCJk''@;'; put 'put ''eW5kbnMuaW5mbyIsImR5bmRucy5vcmciLCJkeW5kbnMudHYiLCJhdC1iYW5kLWNhbXAubmV0IiwiYXRoLmN4IiwiYmFycmVsLW9mLWtub3dsZWRnZS5pbmZvIiwiYmFycmVsbC1vZi1rbm93bGVkZ2UuaW5mbyIsImJldHRlci10aGFuLnR2IiwiYmxvZ2Rucy5jb20iLCJibG9nZG5zLm5ldCIs''@;'; put 'put ''ImJsb2dkbnMub3JnIiwiYmxvZ3NpdGUub3JnIiwiYm9sZGx5Z29pbmdub3doZXJlLm9yZyIsImJyb2tlLWl0Lm5ldCIsImJ1eXNob3VzZXMubmV0IiwiY2VjaGlyZS5jb20iLCJkbnNhbGlhcy5jb20iLCJkbnNhbGlhcy5uZXQiLCJkbnNhbGlhcy5vcmciLCJkbnNkb2pvLmNvbSIsImRuc2Rv''@;'; put 'put ''am8ubmV0IiwiZG5zZG9qby5vcmciLCJkb2VzLWl0Lm5ldCIsImRvZXNudGV4aXN0LmNvbSIsImRvZXNudGV4aXN0Lm9yZyIsImRvbnRleGlzdC5jb20iLCJkb250ZXhpc3QubmV0IiwiZG9udGV4aXN0Lm9yZyIsImRvb21kbnMuY29tIiwiZG9vbWRucy5vcmciLCJkdnJkbnMub3JnIiwiZHlu''@;'; put 'put ''LW8tc2F1ci5jb20iLCJkeW5hbGlhcy5jb20iLCJkeW5hbGlhcy5uZXQiLCJkeW5hbGlhcy5vcmciLCJkeW5hdGhvbWUubmV0IiwiZHluZG5zLndzIiwiZW5kb2ZpbnRlcm5ldC5uZXQiLCJlbmRvZmludGVybmV0Lm9yZyIsImVuZG9mdGhlaW50ZXJuZXQub3JnIiwiZXN0LWEtbGEtbWFpc29u''@;'; put 'put ''LmNvbSIsImVzdC1hLWxhLW1hc2lvbi5jb20iLCJlc3QtbGUtcGF0cm9uLmNvbSIsImVzdC1tb24tYmxvZ3VldXIuY29tIiwiZm9yLWJldHRlci5iaXoiLCJmb3ItbW9yZS5iaXoiLCJmb3Itb3VyLmluZm8iLCJmb3Itc29tZS5iaXoiLCJmb3ItdGhlLmJpeiIsImZvcmdvdC5oZXIubmFtZSIs''@;'; put 'put ''ImZvcmdvdC5oaXMubmFtZSIsImZyb20tYWsuY29tIiwiZnJvbS1hbC5jb20iLCJmcm9tLWFyLmNvbSIsImZyb20tYXoubmV0IiwiZnJvbS1jYS5jb20iLCJmcm9tLWNvLm5ldCIsImZyb20tY3QuY29tIiwiZnJvbS1kYy5jb20iLCJmcm9tLWRlLmNvbSIsImZyb20tZmwuY29tIiwiZnJvbS1n''@;'; put 'put ''YS5jb20iLCJmcm9tLWhpLmNvbSIsImZyb20taWEuY29tIiwiZnJvbS1pZC5jb20iLCJmcm9tLWlsLmNvbSIsImZyb20taW4uY29tIiwiZnJvbS1rcy5jb20iLCJmcm9tLWt5LmNvbSIsImZyb20tbGEubmV0IiwiZnJvbS1tYS5jb20iLCJmcm9tLW1kLmNvbSIsImZyb20tbWUub3JnIiwiZnJv''@;'; put 'put ''bS1taS5jb20iLCJmcm9tLW1uLmNvbSIsImZyb20tbW8uY29tIiwiZnJvbS1tcy5jb20iLCJmcm9tLW10LmNvbSIsImZyb20tbmMuY29tIiwiZnJvbS1uZC5jb20iLCJmcm9tLW5lLmNvbSIsImZyb20tbmguY29tIiwiZnJvbS1uai5jb20iLCJmcm9tLW5tLmNvbSIsImZyb20tbnYuY29tIiwi''@;'; put 'put ''ZnJvbS1ueS5uZXQiLCJmcm9tLW9oLmNvbSIsImZyb20tb2suY29tIiwiZnJvbS1vci5jb20iLCJmcm9tLXBhLmNvbSIsImZyb20tcHIuY29tIiwiZnJvbS1yaS5jb20iLCJmcm9tLXNjLmNvbSIsImZyb20tc2QuY29tIiwiZnJvbS10bi5jb20iLCJmcm9tLXR4LmNvbSIsImZyb20tdXQuY29t''@;'; put 'put ''IiwiZnJvbS12YS5jb20iLCJmcm9tLXZ0LmNvbSIsImZyb20td2EuY29tIiwiZnJvbS13aS5jb20iLCJmcm9tLXd2LmNvbSIsImZyb20td3kuY29tIiwiZnRwYWNjZXNzLmNjIiwiZnVldHRlcnRkYXNuZXR6LmRlIiwiZ2FtZS1ob3N0Lm9yZyIsImdhbWUtc2VydmVyLmNjIiwiZ2V0bXlpcC5j''@;'; put 'put ''b20iLCJnZXRzLWl0Lm5ldCIsImdvLmR5bmRucy5vcmciLCJnb3RkbnMuY29tIiwiZ290ZG5zLm9yZyIsImdyb2tzLXRoZS5pbmZvIiwiZ3Jva3MtdGhpcy5pbmZvIiwiaGFtLXJhZGlvLW9wLm5ldCIsImhlcmUtZm9yLW1vcmUuaW5mbyIsImhvYmJ5LXNpdGUuY29tIiwiaG9iYnktc2l0ZS5v''@;'; put 'put ''cmciLCJob21lLmR5bmRucy5vcmciLCJob21lZG5zLm9yZyIsImhvbWVmdHAubmV0IiwiaG9tZWZ0cC5vcmciLCJob21laXAubmV0IiwiaG9tZWxpbnV4LmNvbSIsImhvbWVsaW51eC5uZXQiLCJob21lbGludXgub3JnIiwiaG9tZXVuaXguY29tIiwiaG9tZXVuaXgubmV0IiwiaG9tZXVuaXgu''@;'; put 'put ''b3JnIiwiaWFtYWxsYW1hLmNvbSIsImluLXRoZS1iYW5kLm5ldCIsImlzLWEtYW5hcmNoaXN0LmNvbSIsImlzLWEtYmxvZ2dlci5jb20iLCJpcy1hLWJvb2trZWVwZXIuY29tIiwiaXMtYS1icnVpbnNmYW4ub3JnIiwiaXMtYS1idWxscy1mYW4uY29tIiwiaXMtYS1jYW5kaWRhdGUub3JnIiwi''@;'; put 'put ''aXMtYS1jYXRlcmVyLmNvbSIsImlzLWEtY2VsdGljc2Zhbi5vcmciLCJpcy1hLWNoZWYuY29tIiwiaXMtYS1jaGVmLm5ldCIsImlzLWEtY2hlZi5vcmciLCJpcy1hLWNvbnNlcnZhdGl2ZS5jb20iLCJpcy1hLWNwYS5jb20iLCJpcy1hLWN1YmljbGUtc2xhdmUuY29tIiwiaXMtYS1kZW1vY3Jh''@;'; put 'put ''dC5jb20iLCJpcy1hLWRlc2lnbmVyLmNvbSIsImlzLWEtZG9jdG9yLmNvbSIsImlzLWEtZmluYW5jaWFsYWR2aXNvci5jb20iLCJpcy1hLWdlZWsuY29tIiwiaXMtYS1nZWVrLm5ldCIsImlzLWEtZ2Vlay5vcmciLCJpcy1hLWdyZWVuLmNvbSIsImlzLWEtZ3VydS5jb20iLCJpcy1hLWhhcmQt''@;'; put 'put ''d29ya2VyLmNvbSIsImlzLWEtaHVudGVyLmNvbSIsImlzLWEta25pZ2h0Lm9yZyIsImlzLWEtbGFuZHNjYXBlci5jb20iLCJpcy1hLWxhd3llci5jb20iLCJpcy1hLWxpYmVyYWwuY29tIiwiaXMtYS1saWJlcnRhcmlhbi5jb20iLCJpcy1hLWxpbnV4LXVzZXIub3JnIiwiaXMtYS1sbGFtYS5j''@;'; put 'put ''b20iLCJpcy1hLW11c2ljaWFuLmNvbSIsImlzLWEtbmFzY2FyZmFuLmNvbSIsImlzLWEtbnVyc2UuY29tIiwiaXMtYS1wYWludGVyLmNvbSIsImlzLWEtcGF0c2Zhbi5vcmciLCJpcy1hLXBlcnNvbmFsdHJhaW5lci5jb20iLCJpcy1hLXBob3RvZ3JhcGhlci5jb20iLCJpcy1hLXBsYXllci5j''@;'; put 'put ''b20iLCJpcy1hLXJlcHVibGljYW4uY29tIiwiaXMtYS1yb2Nrc3Rhci5jb20iLCJpcy1hLXNvY2lhbGlzdC5jb20iLCJpcy1hLXNveGZhbi5vcmciLCJpcy1hLXN0dWRlbnQuY29tIiwiaXMtYS10ZWFjaGVyLmNvbSIsImlzLWEtdGVjaGllLmNvbSIsImlzLWEtdGhlcmFwaXN0LmNvbSIsImlz''@;'; put 'put ''LWFuLWFjY291bnRhbnQuY29tIiwiaXMtYW4tYWN0b3IuY29tIiwiaXMtYW4tYWN0cmVzcy5jb20iLCJpcy1hbi1hbmFyY2hpc3QuY29tIiwiaXMtYW4tYXJ0aXN0LmNvbSIsImlzLWFuLWVuZ2luZWVyLmNvbSIsImlzLWFuLWVudGVydGFpbmVyLmNvbSIsImlzLWJ5LnVzIiwiaXMtY2VydGlm''@;'; put 'put ''aWVkLmNvbSIsImlzLWZvdW5kLm9yZyIsImlzLWdvbmUuY29tIiwiaXMtaW50by1hbmltZS5jb20iLCJpcy1pbnRvLWNhcnMuY29tIiwiaXMtaW50by1jYXJ0b29ucy5jb20iLCJpcy1pbnRvLWdhbWVzLmNvbSIsImlzLWxlZXQuY29tIiwiaXMtbG9zdC5vcmciLCJpcy1ub3QtY2VydGlmaWVk''@;'; put 'put ''LmNvbSIsImlzLXNhdmVkLm9yZyIsImlzLXNsaWNrLmNvbSIsImlzLXViZXJsZWV0LmNvbSIsImlzLXZlcnktYmFkLm9yZyIsImlzLXZlcnktZXZpbC5vcmciLCJpcy12ZXJ5LWdvb2Qub3JnIiwiaXMtdmVyeS1uaWNlLm9yZyIsImlzLXZlcnktc3dlZXQub3JnIiwiaXMtd2l0aC10aGViYW5k''@;'; put 'put ''LmNvbSIsImlzYS1nZWVrLmNvbSIsImlzYS1nZWVrLm5ldCIsImlzYS1nZWVrLm9yZyIsImlzYS1ob2NrZXludXQuY29tIiwiaXNzbWFydGVydGhhbnlvdS5jb20iLCJpc3RlaW5nZWVrLmRlIiwiaXN0bWVpbi5kZSIsImtpY2tzLWFzcy5uZXQiLCJraWNrcy1hc3Mub3JnIiwia25vd3NpdGFs''@;'; put 'put ''bC5pbmZvIiwibGFuZC00LXNhbGUudXMiLCJsZWJ0aW1uZXR6LmRlIiwibGVpdHVuZ3Nlbi5kZSIsImxpa2VzLXBpZS5jb20iLCJsaWtlc2NhbmR5LmNvbSIsIm1lcnNlaW5lLm51IiwibWluZS5udSIsIm1pc2NvbmZ1c2VkLm9yZyIsIm15cGV0cy53cyIsIm15cGhvdG9zLmNjIiwibmVhdC11''@;'; put 'put ''cmwuY29tIiwib2ZmaWNlLW9uLXRoZS5uZXQiLCJvbi10aGUtd2ViLnR2IiwicG9kem9uZS5uZXQiLCJwb2R6b25lLm9yZyIsInJlYWRteWJsb2cub3JnIiwic2F2ZXMtdGhlLXdoYWxlcy5jb20iLCJzY3JhcHBlci1zaXRlLm5ldCIsInNjcmFwcGluZy5jYyIsInNlbGZpcC5iaXoiLCJzZWxm''@;'; put 'put ''aXAuY29tIiwic2VsZmlwLmluZm8iLCJzZWxmaXAubmV0Iiwic2VsZmlwLm9yZyIsInNlbGxzLWZvci1sZXNzLmNvbSIsInNlbGxzLWZvci11LmNvbSIsInNlbGxzLWl0Lm5ldCIsInNlbGxzeW91cmhvbWUub3JnIiwic2VydmViYnMuY29tIiwic2VydmViYnMubmV0Iiwic2VydmViYnMub3Jn''@;'; put 'put ''Iiwic2VydmVmdHAubmV0Iiwic2VydmVmdHAub3JnIiwic2VydmVnYW1lLm9yZyIsInNoYWNrbmV0Lm51Iiwic2ltcGxlLXVybC5jb20iLCJzcGFjZS10by1yZW50LmNvbSIsInN0dWZmLTQtc2FsZS5vcmciLCJzdHVmZi00LXNhbGUudXMiLCJ0ZWFjaGVzLXlvZ2EuY29tIiwidGhydWhlcmUu''@;'; put 'put ''bmV0IiwidHJhZXVtdGdlcmFkZS5kZSIsIndlYmhvcC5iaXoiLCJ3ZWJob3AuaW5mbyIsIndlYmhvcC5uZXQiLCJ3ZWJob3Aub3JnIiwid29yc2UtdGhhbi50diIsIndyaXRlc3RoaXNibG9nLmNvbSIsImRkbnNzLmRlIiwiZHluLmRkbnNzLmRlIiwiZHluZG5zLmRkbnNzLmRlIiwiZHluZG5z''@;'; put 'put ''MS5kZSIsImR5bi1pcDI0LmRlIiwiaG9tZS13ZWJzZXJ2ZXIuZGUiLCJkeW4uaG9tZS13ZWJzZXJ2ZXIuZGUiLCJteWhvbWUtc2VydmVyLmRlIiwiZGRuc3Mub3JnIiwiZGVmaW5pbWEubmV0IiwiZGVmaW5pbWEuaW8iLCJiY2kuZG5zdHJhY2UucHJvIiwiZGRuc2ZyZWUuY29tIiwiZGRuc2dl''@;'; put 'put ''ZWsuY29tIiwiZ2lpemUuY29tIiwiZ2xlZXplLmNvbSIsImtvem93LmNvbSIsImxvc2V5b3VyaXAuY29tIiwib29ndXkuY29tIiwidGhld29ya3BjLmNvbSIsImNhc2FjYW0ubmV0IiwiZHludS5uZXQiLCJhY2Nlc3NjYW0ub3JnIiwiY2FtZHZyLm9yZyIsImZyZWVkZG5zLm9yZyIsIm15d2ly''@;'; put 'put ''ZS5vcmciLCJ3ZWJyZWRpcmVjdC5vcmciLCJteWRkbnMucm9ja3MiLCJibG9nc2l0ZS54eXoiLCJkeW52Ni5uZXQiLCJlNC5jeiIsImVuLXJvb3QuZnIiLCJteXR1bGVhcC5jb20iLCJvbnJlZC5vbmUiLCJzdGFnaW5nLm9ucmVkLm9uZSIsImVub25pYy5pbyIsImN1c3RvbWVyLmVub25pYy5p''@;'; put 'put ''byIsImV1Lm9yZyIsImFsLmV1Lm9yZyIsImFzc28uZXUub3JnIiwiYXQuZXUub3JnIiwiYXUuZXUub3JnIiwiYmUuZXUub3JnIiwiYmcuZXUub3JnIiwiY2EuZXUub3JnIiwiY2QuZXUub3JnIiwiY2guZXUub3JnIiwiY24uZXUub3JnIiwiY3kuZXUub3JnIiwiY3ouZXUub3JnIiwiZGUuZXUu''@;'; put 'put ''b3JnIiwiZGsuZXUub3JnIiwiZWR1LmV1Lm9yZyIsImVlLmV1Lm9yZyIsImVzLmV1Lm9yZyIsImZpLmV1Lm9yZyIsImZyLmV1Lm9yZyIsImdyLmV1Lm9yZyIsImhyLmV1Lm9yZyIsImh1LmV1Lm9yZyIsImllLmV1Lm9yZyIsImlsLmV1Lm9yZyIsImluLmV1Lm9yZyIsImludC5ldS5vcmciLCJp''@;'; put 'put ''cy5ldS5vcmciLCJpdC5ldS5vcmciLCJqcC5ldS5vcmciLCJrci5ldS5vcmciLCJsdC5ldS5vcmciLCJsdS5ldS5vcmciLCJsdi5ldS5vcmciLCJtYy5ldS5vcmciLCJtZS5ldS5vcmciLCJtay5ldS5vcmciLCJtdC5ldS5vcmciLCJteS5ldS5vcmciLCJuZXQuZXUub3JnIiwibmcuZXUub3Jn''@;'; put 'put ''IiwibmwuZXUub3JnIiwibm8uZXUub3JnIiwibnouZXUub3JnIiwicGFyaXMuZXUub3JnIiwicGwuZXUub3JnIiwicHQuZXUub3JnIiwicS1hLmV1Lm9yZyIsInJvLmV1Lm9yZyIsInJ1LmV1Lm9yZyIsInNlLmV1Lm9yZyIsInNpLmV1Lm9yZyIsInNrLmV1Lm9yZyIsInRyLmV1Lm9yZyIsInVr''@;'; put 'put ''LmV1Lm9yZyIsInVzLmV1Lm9yZyIsImV1LTEuZXZlbm5vZGUuY29tIiwiZXUtMi5ldmVubm9kZS5jb20iLCJldS0zLmV2ZW5ub2RlLmNvbSIsImV1LTQuZXZlbm5vZGUuY29tIiwidXMtMS5ldmVubm9kZS5jb20iLCJ1cy0yLmV2ZW5ub2RlLmNvbSIsInVzLTMuZXZlbm5vZGUuY29tIiwidXMt''@;'; put 'put ''NC5ldmVubm9kZS5jb20iLCJ0d21haWwuY2MiLCJ0d21haWwubmV0IiwidHdtYWlsLm9yZyIsIm15bWFpbGVyLmNvbS50dyIsInVybC50dyIsImFwcHMuZmJzYnguY29tIiwicnUubmV0IiwiYWR5Z2V5YS5ydSIsImJhc2hraXJpYS5ydSIsImJpci5ydSIsImNiZy5ydSIsImNvbS5ydSIsImRh''@;'; put 'put ''Z2VzdGFuLnJ1IiwiZ3Jvem55LnJ1Iiwia2FsbXlraWEucnUiLCJrdXN0YW5haS5ydSIsIm1hcmluZS5ydSIsIm1vcmRvdmlhLnJ1IiwibXNrLnJ1IiwibXl0aXMucnUiLCJuYWxjaGlrLnJ1Iiwibm92LnJ1IiwicHlhdGlnb3Jzay5ydSIsInNwYi5ydSIsInZsYWRpa2F2a2F6LnJ1Iiwidmxh''@;'; put 'put ''ZGltaXIucnUiLCJhYmtoYXppYS5zdSIsImFkeWdleWEuc3UiLCJha3R5dWJpbnNrLnN1IiwiYXJraGFuZ2Vsc2suc3UiLCJhcm1lbmlhLnN1IiwiYXNoZ2FiYWQuc3UiLCJhemVyYmFpamFuLnN1IiwiYmFsYXNob3Yuc3UiLCJiYXNoa2lyaWEuc3UiLCJicnlhbnNrLnN1IiwiYnVraGFyYS5z''@;'; put 'put ''dSIsImNoaW1rZW50LnN1IiwiZGFnZXN0YW4uc3UiLCJlYXN0LWthemFraHN0YW4uc3UiLCJleG5ldC5zdSIsImdlb3JnaWEuc3UiLCJncm96bnkuc3UiLCJpdmFub3ZvLnN1IiwiamFtYnlsLnN1Iiwia2FsbXlraWEuc3UiLCJrYWx1Z2Euc3UiLCJrYXJhY29sLnN1Iiwia2FyYWdhbmRhLnN1''@;'; put 'put ''Iiwia2FyZWxpYS5zdSIsImtoYWthc3NpYS5zdSIsImtyYXNub2Rhci5zdSIsImt1cmdhbi5zdSIsImt1c3RhbmFpLnN1IiwibGVudWcuc3UiLCJtYW5neXNobGFrLnN1IiwibW9yZG92aWEuc3UiLCJtc2suc3UiLCJtdXJtYW5zay5zdSIsIm5hbGNoaWsuc3UiLCJuYXZvaS5zdSIsIm5vcnRo''@;'; put 'put ''LWthemFraHN0YW4uc3UiLCJub3Yuc3UiLCJvYm5pbnNrLnN1IiwicGVuemEuc3UiLCJwb2tyb3Zzay5zdSIsInNvY2hpLnN1Iiwic3BiLnN1IiwidGFzaGtlbnQuc3UiLCJ0ZXJtZXouc3UiLCJ0b2dsaWF0dGkuc3UiLCJ0cm9pdHNrLnN1IiwidHNlbGlub2dyYWQuc3UiLCJ0dWxhLnN1Iiwi''@;'; put 'put ''dHV2YS5zdSIsInZsYWRpa2F2a2F6LnN1IiwidmxhZGltaXIuc3UiLCJ2b2xvZ2RhLnN1IiwiY2hhbm5lbHNkdnIubmV0IiwidS5jaGFubmVsc2R2ci5uZXQiLCJmYXN0bHktdGVycmFyaXVtLmNvbSIsImZhc3RseWxiLm5ldCIsIm1hcC5mYXN0bHlsYi5uZXQiLCJmcmVldGxzLmZhc3RseS5u''@;'; put 'put ''ZXQiLCJtYXAuZmFzdGx5Lm5ldCIsImEucHJvZC5mYXN0bHkubmV0IiwiZ2xvYmFsLnByb2QuZmFzdGx5Lm5ldCIsImEuc3NsLmZhc3RseS5uZXQiLCJiLnNzbC5mYXN0bHkubmV0IiwiZ2xvYmFsLnNzbC5mYXN0bHkubmV0IiwiZmFzdHBhbmVsLmRpcmVjdCIsImZhc3R2cHMtc2VydmVyLmNv''@;'; put 'put ''bSIsImZoYXBwLnh5eiIsImZlZG9yYWluZnJhY2xvdWQub3JnIiwiZmVkb3JhcGVvcGxlLm9yZyIsImNsb3VkLmZlZG9yYXByb2plY3Qub3JnIiwiYXBwLm9zLmZlZG9yYXByb2plY3Qub3JnIiwiYXBwLm9zLnN0Zy5mZWRvcmFwcm9qZWN0Lm9yZyIsIm15ZG9iaXNzLmNvbSIsImZpbGVnZWFy''@;'; put 'put ''Lm1lIiwiZmlsZWdlYXItYXUubWUiLCJmaWxlZ2Vhci1kZS5tZSIsImZpbGVnZWFyLWdiLm1lIiwiZmlsZWdlYXItaWUubWUiLCJmaWxlZ2Vhci1qcC5tZSIsImZpbGVnZWFyLXNnLm1lIiwiZmlyZWJhc2VhcHAuY29tIiwiZmx5bm5odWIuY29tIiwiZmx5bm5ob3N0aW5nLm5ldCIsIjBlLnZj''@;'; put 'put ''IiwiZnJlZWJveC1vcy5jb20iLCJmcmVlYm94b3MuY29tIiwiZmJ4LW9zLmZyIiwiZmJ4b3MuZnIiLCJmcmVlYm94LW9zLmZyIiwiZnJlZWJveG9zLmZyIiwiZnJlZWRlc2t0b3Aub3JnIiwiKi5mdXR1cmVjbXMuYXQiLCIqLmV4LmZ1dHVyZWNtcy5hdCIsIiouaW4uZnV0dXJlY21zLmF0Iiwi''@;'; put 'put ''ZnV0dXJlaG9zdGluZy5hdCIsImZ1dHVyZW1haWxpbmcuYXQiLCIqLmV4Lm9ydHNpbmZvLmF0IiwiKi5rdW5kZW4ub3J0c2luZm8uYXQiLCIqLnN0YXRpY3MuY2xvdWQiLCJzZXJ2aWNlLmdvdi51ayIsImdlaGlybi5uZS5qcCIsInVzZXJjb250ZW50LmpwIiwiZ2VudGFwcHMuY29tIiwibGFi''@;'; put 'put ''Lm1zIiwiZ2l0aHViLmlvIiwiZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwiZ2l0bGFiLmlvIiwiZ2xpdGNoLm1lIiwibG9saXBvcC5pbyIsImNsb3VkYXBwcy5kaWdpdGFsIiwibG9uZG9uLmNsb3VkYXBwcy5kaWdpdGFsIiwiaG9tZW9mZmljZS5nb3YudWsiLCJyby5pbSIsInNob3Aucm8iLCJn''@;'; put 'put ''b2lwLmRlIiwicnVuLmFwcCIsImEucnVuLmFwcCIsIndlYi5hcHAiLCIqLjBlbW0uY29tIiwiYXBwc3BvdC5jb20iLCIqLnIuYXBwc3BvdC5jb20iLCJibG9nc3BvdC5hZSIsImJsb2dzcG90LmFsIiwiYmxvZ3Nwb3QuYW0iLCJibG9nc3BvdC5iYSIsImJsb2dzcG90LmJlIiwiYmxvZ3Nwb3Qu''@;'; put 'put ''YmciLCJibG9nc3BvdC5iaiIsImJsb2dzcG90LmNhIiwiYmxvZ3Nwb3QuY2YiLCJibG9nc3BvdC5jaCIsImJsb2dzcG90LmNsIiwiYmxvZ3Nwb3QuY28uYXQiLCJibG9nc3BvdC5jby5pZCIsImJsb2dzcG90LmNvLmlsIiwiYmxvZ3Nwb3QuY28ua2UiLCJibG9nc3BvdC5jby5ueiIsImJsb2dz''@;'; put 'put ''cG90LmNvLnVrIiwiYmxvZ3Nwb3QuY28uemEiLCJibG9nc3BvdC5jb20iLCJibG9nc3BvdC5jb20uYXIiLCJibG9nc3BvdC5jb20uYXUiLCJibG9nc3BvdC5jb20uYnIiLCJibG9nc3BvdC5jb20uYnkiLCJibG9nc3BvdC5jb20uY28iLCJibG9nc3BvdC5jb20uY3kiLCJibG9nc3BvdC5jb20u''@;'; put 'put ''ZWUiLCJibG9nc3BvdC5jb20uZWciLCJibG9nc3BvdC5jb20uZXMiLCJibG9nc3BvdC5jb20ubXQiLCJibG9nc3BvdC5jb20ubmciLCJibG9nc3BvdC5jb20udHIiLCJibG9nc3BvdC5jb20udXkiLCJibG9nc3BvdC5jdiIsImJsb2dzcG90LmN6IiwiYmxvZ3Nwb3QuZGUiLCJibG9nc3BvdC5k''@;'; put 'put ''ayIsImJsb2dzcG90LmZpIiwiYmxvZ3Nwb3QuZnIiLCJibG9nc3BvdC5nciIsImJsb2dzcG90LmhrIiwiYmxvZ3Nwb3QuaHIiLCJibG9nc3BvdC5odSIsImJsb2dzcG90LmllIiwiYmxvZ3Nwb3QuaW4iLCJibG9nc3BvdC5pcyIsImJsb2dzcG90Lml0IiwiYmxvZ3Nwb3QuanAiLCJibG9nc3Bv''@;'; put 'put ''dC5rciIsImJsb2dzcG90LmxpIiwiYmxvZ3Nwb3QubHQiLCJibG9nc3BvdC5sdSIsImJsb2dzcG90Lm1kIiwiYmxvZ3Nwb3QubWsiLCJibG9nc3BvdC5tciIsImJsb2dzcG90Lm14IiwiYmxvZ3Nwb3QubXkiLCJibG9nc3BvdC5ubCIsImJsb2dzcG90Lm5vIiwiYmxvZ3Nwb3QucGUiLCJibG9n''@;'; put 'put ''c3BvdC5wdCIsImJsb2dzcG90LnFhIiwiYmxvZ3Nwb3QucmUiLCJibG9nc3BvdC5ybyIsImJsb2dzcG90LnJzIiwiYmxvZ3Nwb3QucnUiLCJibG9nc3BvdC5zZSIsImJsb2dzcG90LnNnIiwiYmxvZ3Nwb3Quc2kiLCJibG9nc3BvdC5zayIsImJsb2dzcG90LnNuIiwiYmxvZ3Nwb3QudGQiLCJi''@;'; put 'put ''bG9nc3BvdC50dyIsImJsb2dzcG90LnVnIiwiYmxvZ3Nwb3Qudm4iLCJjbG91ZGZ1bmN0aW9ucy5uZXQiLCJjbG91ZC5nb29nIiwiY29kZXNwb3QuY29tIiwiZ29vZ2xlYXBpcy5jb20iLCJnb29nbGVjb2RlLmNvbSIsInBhZ2VzcGVlZG1vYmlsaXplci5jb20iLCJwdWJsaXNocHJveHkuY29t''@;'; put 'put ''Iiwid2l0aGdvb2dsZS5jb20iLCJ3aXRoeW91dHViZS5jb20iLCJhd3NtcHBsLmNvbSIsImZpbi5jaSIsImZyZWUuaHIiLCJjYWEubGkiLCJ1YS5ycyIsImNvbmYuc2UiLCJocy56b25lIiwiaHMucnVuIiwiaGFzaGJhbmcuc2giLCJoYXN1cmEuYXBwIiwiaGFzdXJhLWFwcC5pbyIsImhlcGZv''@;'; put 'put ''cmdlLm9yZyIsImhlcm9rdWFwcC5jb20iLCJoZXJva3Vzc2wuY29tIiwibXlyYXZlbmRiLmNvbSIsInJhdmVuZGIuY29tbXVuaXR5IiwicmF2ZW5kYi5tZSIsImRldmVsb3BtZW50LnJ1biIsInJhdmVuZGIucnVuIiwiYnBsLmJpeiIsIm9yeC5iaXoiLCJuZy5jaXR5IiwiYml6LmdsIiwibmcu''@;'; put 'put ''aW5rIiwiY29sLm5nIiwiZmlybS5uZyIsImdlbi5uZyIsImx0ZC5uZyIsIm5nby5uZyIsIm5nLnNjaG9vbCIsInNjaC5zbyIsImhceGU0a2tpbmVuLmZpIiwiKi5tb29uc2NhbGUuaW8iLCJtb29uc2NhbGUubmV0IiwiaWtpLmZpIiwiZHluLWJlcmxpbi5kZSIsImluLWJlcmxpbi5kZSIsImlu''@;'; put 'put ''LWJyYi5kZSIsImluLWJ1dHRlci5kZSIsImluLWRzbC5kZSIsImluLWRzbC5uZXQiLCJpbi1kc2wub3JnIiwiaW4tdnBuLmRlIiwiaW4tdnBuLm5ldCIsImluLXZwbi5vcmciLCJiaXouYXQiLCJpbmZvLmF0IiwiaW5mby5jeCIsImFjLmxlZy5iciIsImFsLmxlZy5iciIsImFtLmxlZy5iciIs''@;'; put 'put ''ImFwLmxlZy5iciIsImJhLmxlZy5iciIsImNlLmxlZy5iciIsImRmLmxlZy5iciIsImVzLmxlZy5iciIsImdvLmxlZy5iciIsIm1hLmxlZy5iciIsIm1nLmxlZy5iciIsIm1zLmxlZy5iciIsIm10LmxlZy5iciIsInBhLmxlZy5iciIsInBiLmxlZy5iciIsInBlLmxlZy5iciIsInBpLmxlZy5i''@;'; put 'put ''ciIsInByLmxlZy5iciIsInJqLmxlZy5iciIsInJuLmxlZy5iciIsInJvLmxlZy5iciIsInJyLmxlZy5iciIsInJzLmxlZy5iciIsInNjLmxlZy5iciIsInNlLmxlZy5iciIsInNwLmxlZy5iciIsInRvLmxlZy5iciIsInBpeG9saW5vLmNvbSIsImlwaWZvbnkubmV0IiwibWVpbi1pc2Vydi5k''@;'; put 'put ''ZSIsInRlc3QtaXNlcnYuZGUiLCJpc2Vydi5kZXYiLCJpb2JiLm5ldCIsIm15amluby5ydSIsIiouaG9zdGluZy5teWppbm8ucnUiLCIqLmxhbmRpbmcubXlqaW5vLnJ1IiwiKi5zcGVjdHJ1bS5teWppbm8ucnUiLCIqLnZwcy5teWppbm8ucnUiLCIqLnRyaXRvbi56b25lIiwiKi5jbnMuam95''@;'; put 'put ''ZW50LmNvbSIsImpzLm9yZyIsImthYXMuZ2ciLCJraHBsYXkubmwiLCJrZXltYWNoaW5lLmRlIiwia2luZ2hvc3QubmV0IiwidW5pNS5uZXQiLCJrbmlnaHRwb2ludC5zeXN0ZW1zIiwib3lhLnRvIiwiY28ua3JkIiwiZWR1LmtyZCIsImdpdC1yZXBvcy5kZSIsImxjdWJlLXNlcnZlci5kZSIs''@;'; put 'put ''InN2bi1yZXBvcy5kZSIsImxlYWRwYWdlcy5jbyIsImxwYWdlcy5jbyIsImxwdXNlcmNvbnRlbnQuY29tIiwibGVsdXguc2l0ZSIsImNvLmJ1c2luZXNzIiwiY28uZWR1Y2F0aW9uIiwiY28uZXZlbnRzIiwiY28uZmluYW5jaWFsIiwiY28ubmV0d29yayIsImNvLnBsYWNlIiwiY28udGVjaG5v''@;'; put 'put ''bG9neSIsImFwcC5sbXBtLmNvbSIsImxpbmtpdG9vbHMuc3BhY2UiLCJsaW5reWFyZC5jbG91ZCIsImxpbmt5YXJkLWNsb3VkLmNoIiwibWVtYmVycy5saW5vZGUuY29tIiwibm9kZWJhbGFuY2VyLmxpbm9kZS5jb20iLCJ3ZS5icyIsImxvZ2lubGluZS5hcHAiLCJsb2dpbmxpbmUuZGV2Iiwi''@;'; put 'put ''bG9naW5saW5lLmlvIiwibG9naW5saW5lLnNlcnZpY2VzIiwibG9naW5saW5lLnNpdGUiLCJrcmFzbmlrLnBsIiwibGVjem5hLnBsIiwibHViYXJ0b3cucGwiLCJsdWJsaW4ucGwiLCJwb25pYXRvd2EucGwiLCJzd2lkbmlrLnBsIiwidWtsdWdzLm9yZyIsImdsdWcub3JnLnVrIiwibHVnLm9y''@;'; put 'put ''Zy51ayIsImx1Z3Mub3JnLnVrIiwiYmFyc3kuYmciLCJiYXJzeS5jby51ayIsImJhcnN5b25saW5lLmNvLnVrIiwiYmFyc3ljZW50ZXIuY29tIiwiYmFyc3lvbmxpbmUuY29tIiwiYmFyc3kuY2x1YiIsImJhcnN5LmRlIiwiYmFyc3kuZXUiLCJiYXJzeS5pbiIsImJhcnN5LmluZm8iLCJiYXJz''@;'; put 'put ''eS5pbyIsImJhcnN5Lm1lIiwiYmFyc3kubWVudSIsImJhcnN5Lm1vYmkiLCJiYXJzeS5uZXQiLCJiYXJzeS5vbmxpbmUiLCJiYXJzeS5vcmciLCJiYXJzeS5wcm8iLCJiYXJzeS5wdWIiLCJiYXJzeS5zaG9wIiwiYmFyc3kuc2l0ZSIsImJhcnN5LnN1cHBvcnQiLCJiYXJzeS51ayIsIioubWFn''@;'; put 'put ''ZW50b3NpdGUuY2xvdWQiLCJtYXlmaXJzdC5pbmZvIiwibWF5Zmlyc3Qub3JnIiwiaGIuY2xkbWFpbC5ydSIsIm1pbmlzZXJ2ZXIuY29tIiwibWVtc2V0Lm5ldCIsImNsb3VkLm1ldGFjZW50cnVtLmN6IiwiY3VzdG9tLm1ldGFjZW50cnVtLmN6IiwiZmx0LmNsb3VkLm11bmkuY3oiLCJ1c3Iu''@;'; put 'put ''Y2xvdWQubXVuaS5jeiIsIm1ldGVvcmFwcC5jb20iLCJldS5tZXRlb3JhcHAuY29tIiwiY28ucGwiLCJhenVyZWNvbnRhaW5lci5pbyIsImF6dXJld2Vic2l0ZXMubmV0IiwiYXp1cmUtbW9iaWxlLm5ldCIsImNsb3VkYXBwLm5ldCIsIm1vemlsbGEtaW90Lm9yZyIsImJtb2F0dGFjaG1lbnRz''@;'; put 'put ''Lm9yZyIsIm5ldC5ydSIsIm9yZy5ydSIsInBwLnJ1IiwidWkubmFidS5jYXNhIiwicG9ueS5jbHViIiwib2YuZmFzaGlvbiIsIm9uLmZhc2hpb24iLCJvZi5mb290YmFsbCIsImluLmxvbmRvbiIsIm9mLmxvbmRvbiIsImZvci5tZW4iLCJhbmQubW9tIiwiZm9yLm1vbSIsImZvci5vbmUiLCJm''@;'; put 'put ''b3Iuc2FsZSIsIm9mLndvcmsiLCJ0by53b3JrIiwibmN0dS5tZSIsImJpdGJhbGxvb24uY29tIiwibmV0bGlmeS5jb20iLCI0dS5jb20iLCJuZ3Jvay5pbyIsIm5oLXNlcnYuY28udWsiLCJuZnNob3N0LmNvbSIsImRuc2tpbmcuY2giLCJteXBpLmNvIiwibjR0LmNvIiwiMDAxd3d3LmNvbSIs''@;'; put 'put ''ImRkbnNsaXZlLmNvbSIsIm15aXBob3N0LmNvbSIsImZvcnVtei5pbmZvIiwiMTYtYi5pdCIsIjMyLWIuaXQiLCI2NC1iLml0Iiwic291bmRjYXN0Lm1lIiwidGNwNC5tZSIsImRuc3VwLm5ldCIsImhpY2FtLm5ldCIsIm5vdy1kbnMubmV0Iiwib3duaXAubmV0IiwidnBuZG5zLm5ldCIsImR5''@;'; put 'put ''bnNlcnYub3JnIiwibm93LWRucy5vcmciLCJ4NDQzLnB3Iiwibm93LWRucy50b3AiLCJudGRsbC50b3AiLCJmcmVlZGRucy51cyIsImNyYWZ0aW5nLnh5eiIsInphcHRvLnh5eiIsIm5zdXBkYXRlLmluZm8iLCJuZXJkcG9sLm92aCIsImJsb2dzeXRlLmNvbSIsImJyYXNpbGlhLm1lIiwiY2Fi''@;'; put 'put ''bGUtbW9kZW0ub3JnIiwiY2lzY29mcmVhay5jb20iLCJjb2xsZWdlZmFuLm9yZyIsImNvdWNocG90YXRvZnJpZXMub3JnIiwiZGFtbnNlcnZlci5jb20iLCJkZG5zLm1lIiwiZGl0Y2h5b3VyaXAuY29tIiwiZG5zZm9yLm1lIiwiZG5zaXNraW5reS5jb20iLCJkdnJjYW0uaW5mbyIsImR5bm5z''@;'; put 'put ''LmNvbSIsImVhdGluZy1vcmdhbmljLm5ldCIsImZhbnRhc3lsZWFndWUuY2MiLCJnZWVrZ2FsYXh5LmNvbSIsImdvbGZmYW4udXMiLCJoZWFsdGgtY2FyZXJlZm9ybS5jb20iLCJob21lc2VjdXJpdHltYWMuY29tIiwiaG9tZXNlY3VyaXR5cGMuY29tIiwiaG9wdG8ubWUiLCJpbG92ZWNvbGxl''@;'; put 'put ''Z2UuaW5mbyIsImxvZ2ludG8ubWUiLCJtbGJmYW4ub3JnIiwibW1hZmFuLmJpeiIsIm15YWN0aXZlZGlyZWN0b3J5LmNvbSIsIm15ZGlzc2VudC5uZXQiLCJteWVmZmVjdC5uZXQiLCJteW1lZGlhcGMubmV0IiwibXlwc3gubmV0IiwibXlzZWN1cml0eWNhbWVyYS5jb20iLCJteXNlY3VyaXR5''@;'; put 'put ''Y2FtZXJhLm5ldCIsIm15c2VjdXJpdHljYW1lcmEub3JnIiwibmV0LWZyZWFrcy5jb20iLCJuZmxmYW4ub3JnIiwibmhsZmFuLm5ldCIsIm5vLWlwLmNhIiwibm8taXAuY28udWsiLCJuby1pcC5uZXQiLCJub2lwLnVzIiwib250aGV3aWZpLmNvbSIsInBnYWZhbi5uZXQiLCJwb2ludDJ0aGlz''@;'; put 'put ''LmNvbSIsInBvaW50dG8udXMiLCJwcml2YXRpemVoZWFsdGhpbnN1cmFuY2UubmV0IiwicXVpY2tzeXRlcy5jb20iLCJyZWFkLWJvb2tzLm9yZyIsInNlY3VyaXR5dGFjdGljcy5jb20iLCJzZXJ2ZWV4Y2hhbmdlLmNvbSIsInNlcnZlaHVtb3VyLmNvbSIsInNlcnZlcDJwLmNvbSIsInNlcnZl''@;'; put 'put ''c2FyY2FzbS5jb20iLCJzdHVmZnRvcmVhZC5jb20iLCJ1ZmNmYW4ub3JnIiwidW51c3VhbHBlcnNvbi5jb20iLCJ3b3JraXNib3JpbmcuY29tIiwiM3V0aWxpdGllcy5jb20iLCJib3VuY2VtZS5uZXQiLCJkZG5zLm5ldCIsImRkbnNraW5nLmNvbSIsImdvdGRucy5jaCIsImhvcHRvLm9yZyIs''@;'; put 'put ''Im15ZnRwLmJpeiIsIm15ZnRwLm9yZyIsIm15dm5jLmNvbSIsIm5vLWlwLmJpeiIsIm5vLWlwLmluZm8iLCJuby1pcC5vcmciLCJub2lwLm1lIiwicmVkaXJlY3RtZS5uZXQiLCJzZXJ2ZWJlZXIuY29tIiwic2VydmVibG9nLm5ldCIsInNlcnZlY291bnRlcnN0cmlrZS5jb20iLCJzZXJ2ZWZ0''@;'; put 'put ''cC5jb20iLCJzZXJ2ZWdhbWUuY29tIiwic2VydmVoYWxmbGlmZS5jb20iLCJzZXJ2ZWh0dHAuY29tIiwic2VydmVpcmMuY29tIiwic2VydmVtaW5lY3JhZnQubmV0Iiwic2VydmVtcDMuY29tIiwic2VydmVwaWNzLmNvbSIsInNlcnZlcXVha2UuY29tIiwic3l0ZXMubmV0Iiwid2ViaG9wLm1l''@;'; put 'put ''IiwiemFwdG8ub3JnIiwic3RhZ2Uubm9kZWFydC5pbyIsIm5vZHVtLmNvIiwibm9kdW0uaW8iLCJwY2xvdWQuaG9zdCIsIm55Yy5tbiIsIm5vbS5hZSIsIm5vbS5hZiIsIm5vbS5haSIsIm5vbS5hbCIsIm55bS5ieSIsIm5vbS5ieiIsIm55bS5ieiIsIm5vbS5jbCIsIm55bS5lYyIsIm5vbS5n''@;'; put 'put ''ZCIsIm5vbS5nZSIsIm5vbS5nbCIsIm55bS5nciIsIm5vbS5ndCIsIm55bS5neSIsIm55bS5oayIsIm5vbS5obiIsIm55bS5pZSIsIm5vbS5pbSIsIm5vbS5rZSIsIm55bS5reiIsIm55bS5sYSIsIm55bS5sYyIsIm5vbS5saSIsIm55bS5saSIsIm55bS5sdCIsIm55bS5sdSIsIm5vbS5sdiIs''@;'; put 'put ''Im55bS5tZSIsIm5vbS5tayIsIm55bS5tbiIsIm55bS5teCIsIm5vbS5udSIsIm55bS5ueiIsIm55bS5wZSIsIm55bS5wdCIsIm5vbS5wdyIsIm5vbS5xYSIsIm55bS5ybyIsIm5vbS5ycyIsIm5vbS5zaSIsIm55bS5zayIsIm5vbS5zdCIsIm55bS5zdSIsIm55bS5zeCIsIm5vbS50aiIsIm55''@;'; put 'put ''bS50dyIsIm5vbS51ZyIsIm5vbS51eSIsIm5vbS52YyIsIm5vbS52ZyIsInN0YXRpYy5vYnNlcnZhYmxldXNlcmNvbnRlbnQuY29tIiwiY3lhLmdnIiwiY2xvdWR5Y2x1c3Rlci5uZXQiLCJuaWQuaW8iLCJvcGVuY3JhZnQuaG9zdGluZyIsIm9wZXJhdW5pdGUuY29tIiwic2t5Z2VhcmFwcC5j''@;'; put 'put ''b20iLCJvdXRzeXN0ZW1zY2xvdWQuY29tIiwib3ducHJvdmlkZXIuY29tIiwib3duLnBtIiwib3gucnMiLCJveS5sYyIsInBnZm9nLmNvbSIsInBhZ2Vmcm9udGFwcC5jb20iLCJhcnQucGwiLCJnbGl3aWNlLnBsIiwia3Jha293LnBsIiwicG96bmFuLnBsIiwid3JvYy5wbCIsInpha29wYW5l''@;'; put 'put ''LnBsIiwicGFudGhlb25zaXRlLmlvIiwiZ290cGFudGhlb24uY29tIiwibXlwZXAubGluayIsInBlcnNwZWN0YS5jbG91ZCIsIm9uLXdlYi5mciIsIioucGxhdGZvcm0uc2giLCIqLnBsYXRmb3Jtc2guc2l0ZSIsImR5bjUzLmlvIiwiY28uYm4iLCJ4ZW4ucHJnbXIuY29tIiwicHJpdi5hdCIs''@;'; put 'put ''InBydmN5LnBhZ2UiLCIqLmR3ZWIubGluayIsInByb3RvbmV0LmlvIiwiY2hpcnVyZ2llbnMtZGVudGlzdGVzLWVuLWZyYW5jZS5mciIsImJ5ZW4uc2l0ZSIsInB1YnRscy5vcmciLCJxdWFsaWZpb2FwcC5jb20iLCJxYnVzZXIuY29tIiwiaW5zdGFudGNsb3VkLmNuIiwicmFzLnJ1IiwicWEy''@;'; put 'put ''LmNvbSIsInFjeC5pbyIsIiouc3lzLnFjeC5pbyIsImRldi1teXFuYXBjbG91ZC5jb20iLCJhbHBoYS1teXFuYXBjbG91ZC5jb20iLCJteXFuYXBjbG91ZC5jb20iLCIqLnF1aXBlbGVtZW50cy5jb20iLCJ2YXBvci5jbG91ZCIsInZhcG9yY2xvdWQuaW8iLCJyYWNrbWF6ZS5jb20iLCJyYWNr''@;'; put 'put ''bWF6ZS5uZXQiLCIqLm9uLWszcy5pbyIsIioub24tcmFuY2hlci5jbG91ZCIsIioub24tcmlvLmlvIiwicmVhZHRoZWRvY3MuaW8iLCJyaGNsb3VkLmNvbSIsImFwcC5yZW5kZXIuY29tIiwib25yZW5kZXIuY29tIiwicmVwbC5jbyIsInJlcGwucnVuIiwicmVzaW5kZXZpY2UuaW8iLCJkZXZp''@;'; put 'put ''Y2VzLnJlc2luc3RhZ2luZy5pbyIsImh6Yy5pbyIsIndlbGxiZWluZ3pvbmUuZXUiLCJwdHBsdXMuZml0Iiwid2VsbGJlaW5nem9uZS5jby51ayIsImdpdC1wYWdlcy5yaXQuZWR1Iiwic2FuZGNhdHMuaW8iLCJsb2dvaXAuZGUiLCJsb2dvaXAuY29tIiwic2Nob2tva2Vrcy5uZXQiLCJnb3Yu''@;'; put 'put ''c2NvdCIsInNjcnlzZWMuY29tIiwiZmlyZXdhbGwtZ2F0ZXdheS5jb20iLCJmaXJld2FsbC1nYXRld2F5LmRlIiwibXktZ2F0ZXdheS5kZSIsIm15LXJvdXRlci5kZSIsInNwZG5zLmRlIiwic3BkbnMuZXUiLCJmaXJld2FsbC1nYXRld2F5Lm5ldCIsIm15LWZpcmV3YWxsLm9yZyIsIm15Zmly''@;'; put 'put ''ZXdhbGwub3JnIiwic3BkbnMub3JnIiwic2Vuc2VlcmluZy5uZXQiLCJiaXoudWEiLCJjby51YSIsInBwLnVhIiwic2hpZnRlZGl0LmlvIiwibXlzaG9wYmxvY2tzLmNvbSIsInNob3BpdHNpdGUuY29tIiwibW8tc2llbWVucy5pbyIsIjFrYXBwLmNvbSIsImFwcGNoaXppLmNvbSIsImFwcGxp''@;'; put 'put ''bnppLmNvbSIsInNpbmFhcHAuY29tIiwidmlwc2luYWFwcC5jb20iLCJzaXRlbGVhZi5uZXQiLCJib3VudHktZnVsbC5jb20iLCJhbHBoYS5ib3VudHktZnVsbC5jb20iLCJiZXRhLmJvdW50eS1mdWxsLmNvbSIsInN0YWNraGVyby1uZXR3b3JrLmNvbSIsInN0YXRpYy5sYW5kIiwiZGV2LnN0''@;'; put 'put ''YXRpYy5sYW5kIiwic2l0ZXMuc3RhdGljLmxhbmQiLCJhcHBzLmxhaXIuaW8iLCIqLnN0b2xvcy5pbyIsInNwYWNla2l0LmlvIiwiY3VzdG9tZXIuc3BlZWRwYXJ0bmVyLmRlIiwiYXBpLnN0ZGxpYi5jb20iLCJzdG9yai5mYXJtIiwidXR3ZW50ZS5pbyIsInNvYy5zcmNmLm5ldCIsInVzZXIu''@;'; put 'put ''c3JjZi5uZXQiLCJ0ZW1wLWRucy5jb20iLCJhcHBsaWNhdGlvbmNsb3VkLmlvIiwic2NhcHAuaW8iLCIqLnM1eS5pbyIsIiouc2Vuc2lvc2l0ZS5jbG91ZCIsInN5bmNsb3VkLml0IiwiZGlza3N0YXRpb24ubWUiLCJkc2Nsb3VkLmJpeiIsImRzY2xvdWQubWUiLCJkc2Nsb3VkLm1vYmkiLCJk''@;'; put 'put ''c215bmFzLmNvbSIsImRzbXluYXMubmV0IiwiZHNteW5hcy5vcmciLCJmYW1pbHlkcy5jb20iLCJmYW1pbHlkcy5uZXQiLCJmYW1pbHlkcy5vcmciLCJpMjM0Lm1lIiwibXlkcy5tZSIsInN5bm9sb2d5Lm1lIiwidnBucGx1cy50byIsImRpcmVjdC5xdWlja2Nvbm5lY3QudG8iLCJ0YWlmdW4t''@;'; put 'put ''ZG5zLmRlIiwiZ2RhLnBsIiwiZ2RhbnNrLnBsIiwiZ2R5bmlhLnBsIiwibWVkLnBsIiwic29wb3QucGwiLCJlZHVnaXQub3JnIiwidGVsZWJpdC5hcHAiLCJ0ZWxlYml0LmlvIiwiKi50ZWxlYml0Lnh5eiIsImd3aWRkbGUuY28udWsiLCJ0aGluZ2R1c3RkYXRhLmNvbSIsImN1c3QuZGV2LnRo''@;'; put 'put ''aW5nZHVzdC5pbyIsImN1c3QuZGlzcmVjLnRoaW5nZHVzdC5pbyIsImN1c3QucHJvZC50aGluZ2R1c3QuaW8iLCJjdXN0LnRlc3RpbmcudGhpbmdkdXN0LmlvIiwiYXJ2by5uZXR3b3JrIiwiYXppbXV0aC5uZXR3b3JrIiwiYmxveGNtcy5jb20iLCJ0b3dubmV3cy1zdGFnaW5nLmNvbSIsIjEy''@;'; put 'put ''aHAuYXQiLCIyaXguYXQiLCI0bGltYS5hdCIsImxpbWEtY2l0eS5hdCIsIjEyaHAuY2giLCIyaXguY2giLCI0bGltYS5jaCIsImxpbWEtY2l0eS5jaCIsInRyYWZmaWNwbGV4LmNsb3VkIiwiZGUuY29vbCIsIjEyaHAuZGUiLCIyaXguZGUiLCI0bGltYS5kZSIsImxpbWEtY2l0eS5kZSIsIjEz''@;'; put 'put ''MzcucGljdHVyZXMiLCJjbGFuLnJpcCIsImxpbWEtY2l0eS5yb2NrcyIsIndlYnNwYWNlLnJvY2tzIiwibGltYS56b25lIiwiKi50cmFuc3VybC5iZSIsIioudHJhbnN1cmwuZXUiLCIqLnRyYW5zdXJsLm5sIiwidHV4ZmFtaWx5Lm9yZyIsImRkLWRucy5kZSIsImRpc2tzdGF0aW9uLmV1Iiwi''@;'; put 'put ''ZGlza3N0YXRpb24ub3JnIiwiZHJheS1kbnMuZGUiLCJkcmF5ZG5zLmRlIiwiZHluLXZwbi5kZSIsImR5bnZwbi5kZSIsIm1laW4tdmlnb3IuZGUiLCJteS12aWdvci5kZSIsIm15LXdhbi5kZSIsInN5bm8tZHMuZGUiLCJzeW5vbG9neS1kaXNrc3RhdGlvbi5kZSIsInN5bm9sb2d5LWRzLmRl''@;'; put 'put ''IiwidWJlci5zcGFjZSIsIioudWJlcnNwYWNlLmRlIiwiaGsuY29tIiwiaGsub3JnIiwibHRkLmhrIiwiaW5jLmhrIiwidmlydHVhbHVzZXIuZGUiLCJ2aXJ0dWFsLXVzZXIuZGUiLCJ1cm93bi5jbG91ZCIsImRuc3VwZGF0ZS5pbmZvIiwibGliLmRlLnVzIiwiMjAzOC5pbyIsInJvdXRlci5t''@;'; put 'put ''YW5hZ2VtZW50Iiwidi1pbmZvLmluZm8iLCJ2b29ybG9wZXIuY2xvdWQiLCJ2LnVhIiwid2FmZmxlY2VsbC5jb20iLCIqLndlYmhhcmUuZGV2Iiwid2VkZXBsb3kuaW8iLCJ3ZWRlcGxveS5tZSIsIndlZGVwbG95LnNoIiwicmVtb3Rld2QuY29tIiwid21mbGFicy5vcmciLCJteWZvcnVtLmNv''@;'; put 'put ''bW11bml0eSIsImNvbW11bml0eS1wcm8uZGUiLCJkaXNrdXNzaW9uc2JlcmVpY2guZGUiLCJjb21tdW5pdHktcHJvLm5ldCIsIm1laW5mb3J1bS5uZXQiLCJoYWxmLmhvc3QiLCJ4bmJheS5jb20iLCJ1Mi54bmJheS5jb20iLCJ1Mi1sb2NhbC54bmJheS5jb20iLCJjaXN0cm9uLm5sIiwiZGVt''@;'; put 'put ''b24ubmwiLCJ4czRhbGwuc3BhY2UiLCJ5YW5kZXhjbG91ZC5uZXQiLCJzdG9yYWdlLnlhbmRleGNsb3VkLm5ldCIsIndlYnNpdGUueWFuZGV4Y2xvdWQubmV0Iiwib2ZmaWNpYWwuYWNhZGVteSIsInlvbGFzaXRlLmNvbSIsInliby5mYWl0aCIsInlvbWJvLm1lIiwiaG9tZWxpbmsub25lIiwi''@;'; put 'put ''eWJvLnBhcnR5IiwieWJvLnJldmlldyIsInliby5zY2llbmNlIiwieWJvLnRyYWRlIiwibm9ob3N0Lm1lIiwibm9oby5zdCIsInphLm5ldCIsInphLm9yZyIsIm5vdy5zaCIsImJzcy5kZXNpZ24iLCJiYXNpY3NlcnZlci5pbyIsInZpcnR1YWxzZXJ2ZXIuaW8iLCJlbnRlcnByaXNlY2xvdWQu''@;'; put 'put ''bnUiXScpfX0sRT17fTtmdW5jdGlvbiBNZShVKXt2YXIgUT1FW1VdO2lmKHZvaWQgMCE9PVEpcmV0dXJuIFEuZXhwb3J0czt2YXIgWj1FW1VdPXtpZDpVLGxvYWRlZDohMSxleHBvcnRzOnt9fTtyZXR1cm4gQltVXS5jYWxsKFouZXhwb3J0cyxaLFouZXhwb3J0cyxNZSksWi5sb2FkZWQ9ITAs''@;'; put 'put ''Wi5leHBvcnRzfXJldHVybiBNZS5kPShVLFEpPT57Zm9yKHZhciBaIGluIFEpTWUubyhRLFopJiYhTWUubyhVLFopJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoVSxaLHtlbnVtZXJhYmxlOiEwLGdldDpRW1pdfSl9LE1lLmc9ZnVuY3Rpb24oKXtpZigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRo''@;'; put 'put ''aXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChVKXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxNZS5vPShVLFEpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5''@;'; put 'put ''LmNhbGwoVSxRKSxNZS5yPVU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoVSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFUsIl9fZXNNb2R1bGUi''@;'; put 'put ''LHt2YWx1ZTohMH0pfSxNZS5ubWQ9VT0+KFUucGF0aHM9W10sVS5jaGlsZHJlbnx8KFUuY2hpbGRyZW49W10pLFUpLE1lKDM2MDcpfSkoKX0sMjk3NDg6ZnVuY3Rpb24oWGUsSmUsTCl7InVzZSBzdHJpY3QiO3ZhciBnZT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oWil7''@;'; put 'put ''cmV0dXJuIFomJlouX19lc01vZHVsZT9aOntkZWZhdWx0Olp9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSmUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEplLmlzU3BlY2lhbE1pc3Npbmc9SmUuY2hvaWNlVmFsaWRhdG9yPUplLmNvbmZpcm1hdGlvblZhbGlkYXRvcj1KZS51cmxWYWxpZGF0''@;'; put 'put ''b3I9dm9pZCAwO3ZhciBCPWdlKEwoNzMzOTMpKTtKZS51cmxWYWxpZGF0b3I9ZnVuY3Rpb24oWixpZSl7cmV0dXJuISFCLmRlZmF1bHQuaXNIdHRwVXJpKFopfHwhIUIuZGVmYXVsdC5pc0h0dHBzVXJpKFopfHwiIj09PVp8fGllfSxKZS5jb25maXJtYXRpb25WYWxpZGF0b3I9ZnVuY3Rpb24o''@;'; put 'put ''Wil7cmV0dXJuITA9PT1afHwhMT09PVp9LEplLmNob2ljZVZhbGlkYXRvcj1mdW5jdGlvbihaLGllLGxlKXtyZXR1cm4gWj4wJiZaPD1pZXx8bGV9LEplLmlzU3BlY2lhbE1pc3Npbmc9ZnVuY3Rpb24oWil7cmV0dXJuKCJzdHJpbmciIT10eXBlb2YgWnx8IVouaW5jbHVkZXMoIi4uIikpJiZu''@;'; put 'put ''ZXcgUmVnRXhwKCJeKFxcLik/W2Etel8uXXsxfSQiLCJpIikudGVzdChaKX19LDI1ODU5OihYZSxKZSk9PnsidXNlIHN0cmljdCI7dmFyIEI7SmUuRD12b2lkIDAsKEI9SmUuRHx8KEplLkQ9e30pKS5TYXNWaXlhPSJTQVNWSVlBIixCLlNhczk9IlNBUzkiLEIuU2FzanM9IlNBU0pTIn0sMzY2''@;'; put 'put ''MjU6KFhlLEplKT0+eyJ1c2Ugc3RyaWN0IjtKZS5SPXZvaWQgMCxKZS5SPWZ1bmN0aW9uKEIsRSxNZSl7aWYodm9pZCAwPT09RSYmKEU9MSksdm9pZCAwPT09TWUmJihNZT0xMDk5NTExNjI3Nzc2KSwwPT09QilyZXR1cm4iMCBCIjtCPUI+TWU/TWU6Qjt2YXIgWj1FPDA/MDpFLGllPU1hdGgu''@;'; put 'put ''Zmxvb3IoTWF0aC5sb2coQikvTWF0aC5sb2coMTAyNCkpO3JldHVybihCL01hdGgucG93KDEwMjQsaWUpKS50b0ZpeGVkKFopKyIgIitbIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiJdW2llXX19LDUzMzk5OmZ1bmN0aW9uKFhlKXt2YXIgSmU9e3ZlcnNpb246IjEuMTUuMCJ9O0plWzQzN109ZnVu''@;'; put 'put ''Y3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+''@;'; put 'put ''P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5''@;'; put 'put ''XHhmZlx4ZDZceGRjXHhhMlx4YTNceGE1XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUy''@;'; put 'put ''NTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUy''@;'; put 'put ''XHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUy''@;'; put 'put ''MjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLGdlW0VdPUwuY2hhckF0KEUp''@;'; put 'put ''O3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzYyMF09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFl''@;'; put 'put ''XHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHUwMTA1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHUwMTA3''@;'; put 'put ''XHhjNFx1MDEwNFx1MDExOFx1MDExOVx1MDE0Mlx4ZjRceGY2XHUwMTA2XHhmYlx4ZjlcdTAxNWFceGQ2XHhkY1x4YTJcdTAxNDFceGE1XHUwMTViXHUwMTkyXHUwMTc5XHUwMTdiXHhmM1x4ZDNcdTAxNDRcdTAxNDNcdTAxN2FcdTAxN2NceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJc''@;'; put 'put ''eGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5''@;'; put 'put ''XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVc''@;'; put 'put ''dTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3Ro''@;'; put 'put ''OysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLGdlW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzczN109ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4''@;'; put 'put ''MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8''@;'; put 'put ''fX5ceDdmXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2IxXHUwM2IyXHUw''@;'; put 'put ''M2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2MyXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYx''@;'; put 'put ''XHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUy''@;'; put 'put ''NTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2M5XHUwM2FjXHUwM2FkXHUwM2FlXHUwM2NhXHUwM2FmXHUwM2NjXHUwM2NkXHUwM2NiXHUwM2NlXHUwMzg2XHUwMzg4XHUwMzg5''@;'; put 'put ''XHUwMzhhXHUwMzhjXHUwMzhlXHUwMzhmXHhiMVx1MjI2NVx1MjI2NFx1MDNhYVx1MDNhYlx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIixnZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wu''@;'; put 'put ''Y2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVs4NTBdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZc''@;'; put 'put ''eDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVc''@;'; put 'put ''eGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx4ZDdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZceGFlXHhhY1x4YmRceGJjXHhhMVx4YWJceGJi''@;'; put 'put ''XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJceGMwXHhhOVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx4YTJceGE1XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHhlM1x4YzNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBc''@;'; put 'put ''dTI1NmNceGE0XHhmMFx4ZDBceGNhXHhjYlx4YzhcdTAxMzFceGNkXHhjZVx4Y2ZcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2XHhjY1x1MjU4MFx4ZDNceGRmXHhkNFx4ZDJceGY1XHhkNVx4YjVceGZlXHhkZVx4ZGFceGRiXHhkOVx4ZmRceGRkXHhhZlx4YjRceGFkXHhiMVx1MjAxN1x4''@;'; put 'put ''YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpn''@;'; put 'put ''ZX19KCksSmVbODUyXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywt''@;'; put 'put ''Li8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx1MDE2Zlx1MDEwN1x4ZTdcdTAxNDJceGViXHUwMTUwXHUwMTUxXHhlZVx1MDE3OVx4YzRcdTAxMDZc''@;'; put 'put ''eGM5XHUwMTM5XHUwMTNhXHhmNFx4ZjZcdTAxM2RcdTAxM2VcdTAxNWFcdTAxNWJceGQ2XHhkY1x1MDE2NFx1MDE2NVx1MDE0MVx4ZDdcdTAxMGRceGUxXHhlZFx4ZjNceGZhXHUwMTA0XHUwMTA1XHUwMTdkXHUwMTdlXHUwMTE4XHUwMTE5XHhhY1x1MDE3YVx1MDEwY1x1MDE1Zlx4YWJceGJi''@;'; put 'put ''XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJcdTAxMWFcdTAxNWVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxN2JcdTAxN2NcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxMDJcdTAxMDNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZc''@;'; put 'put ''dTI1NjBcdTI1NTBcdTI1NmNceGE0XHUwMTExXHUwMTEwXHUwMTBlXHhjYlx1MDEwZlx1MDE0N1x4Y2RceGNlXHUwMTFiXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwMTYyXHUwMTZlXHUyNTgwXHhkM1x4ZGZceGQ0XHUwMTQzXHUwMTQ0XHUwMTQ4XHUwMTYwXHUwMTYxXHUwMTU0XHhkYVx1''@;'; put 'put ''MDE1NVx1MDE3MFx4ZmRceGRkXHUwMTYzXHhiNFx4YWRcdTAyZGRcdTAyZGJcdTAyYzdcdTAyZDhceGE3XHhmN1x4YjhceGIwXHhhOFx1MDJkOVx1MDE3MVx1MDE1OFx1MDE1OVx1MjVhMFx4YTAiLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChF''@;'; put 'put ''KSYmKEJbTC5jaGFyQXQoRSldPUUpLGdlW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzg1N109ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRc''@;'; put 'put ''eDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRc''@;'; put 'put ''eGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx1MDEzMVx4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlcdTAxMzBceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MDE1ZVx1MDE1Zlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx1MDExZVx1MDExZlx4YmZceGFlXHhhY1x4''@;'; put 'put ''YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJceGMwXHhhOVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx4YTJceGE1XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHhlM1x4YzNcdTI1NWFcdTI1NTRcdTI1Njlc''@;'; put 'put ''dTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHhiYVx4YWFceGNhXHhjYlx4YzhcdWZmZmRceGNkXHhjZVx4Y2ZcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2XHhjY1x1MjU4MFx4ZDNceGRmXHhkNFx4ZDJceGY1XHhkNVx4YjVcdWZmZmRceGQ3XHhkYVx4ZGJceGQ5XHhlY1x4ZmZceGFm''@;'; put 'put ''XHhiNFx4YWRceGIxXHVmZmZkXHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIixnZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChF''@;'; put 'put ''KTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVs4NjFdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgx''@;'; put 'put ''ZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhkMFx4ZjBceGRlXHhj''@;'; put 'put ''NFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZmVceGZiXHhkZFx4ZmRceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGMxXHhjZFx4ZDNceGRhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1''@;'; put 'put ''MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2''@;'; put 'put ''N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0''@;'; put 'put ''XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIixnZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkm''@;'; put 'put ''JihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVs4NjVdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgx''@;'; put 'put ''NVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhl''@;'; put 'put ''MFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4''@;'; put 'put ''YTFceGFiXHhhNFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1''@;'; put 'put ''NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAz''@;'; put 'put ''YzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIixnZT1bXSxCPXt9LEU9MDtFIT1M''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVs4NjZdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5c''@;'; put 'put ''dlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1''@;'; put 'put ''dnd4eXp7fH1+XHg3Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1''@;'; put 'put ''MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUy''@;'; put 'put ''NFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1''@;'; put 'put ''MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0''@;'; put 'put ''Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MDQwMVx1MDQ1MVx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwZVx1MDQ1ZVx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMTE2XHhhNFx1MjVhMFx4YTAiLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVB''@;'; put 'put ''dChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLGdlW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzg3NF09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4''@;'; put 'put ''MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHUyMDI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHhhMFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1''@;'; put 'put ''MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUz''@;'; put 'put ''NVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1''@;'; put 'put ''MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSks''@;'; put 'put ''Z2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVbODk1XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgx''@;'; put 'put ''YVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTAxMGNceGZjXHhlOVx1MDEwZlx4ZTRcdTAxMGVcdTAxNjRcdTAxMGRc''@;'; put 'put ''dTAxMWJcdTAxMWFcdTAxMzlceGNkXHUwMTNlXHUwMWVhXHhjNFx4YzFceGM5XHUwMTdlXHUwMTdkXHhmNFx4ZjZceGQzXHUwMTZmXHhkYVx4ZmRceGQ2XHhkY1x1MDE2MFx1MDEzZFx4ZGRcdTAxNThcdTAxNjVceGUxXHhlZFx4ZjNceGZhXHUwMTQ4XHUwMTQ3XHUwMTZlXHhkNFx1MDE2MVx1''@;'; put 'put ''MDE1OVx1MDE1NVx1MDE1NFx4YmNceGE3XHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2Nc''@;'; put 'put ''dTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRm''@;'; put 'put ''XHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhh''@;'; put 'put ''MCIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVbOTMyXT1mdW5jdGlvbigpe3ZhciBFLEw9W10sZ2U9e30sQj1bXTtmb3Io''@;'; put 'put ''QlswXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpL''@;'; put 'put ''TE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmNjFcdWZmNjJcdWZmNjNcdWZmNjRcdWZmNjVcdWZmNjZcdWZmNjdcdWZmNjhcdWZmNjlcdWZmNmFcdWZmNmJcdWZmNmNcdWZm''@;'; put 'put ''NmRcdWZmNmVcdWZmNmZcdWZmNzBcdWZmNzFcdWZmNzJcdWZmNzNcdWZmNzRcdWZmNzVcdWZmNzZcdWZmNzdcdWZmNzhcdWZmNzlcdWZmN2FcdWZmN2JcdWZmN2NcdWZmN2RcdWZmN2VcdWZmN2ZcdWZmODBcdWZmODFcdWZmODJcdWZmODNcdWZmODRcdWZmODVcdWZmODZcdWZmODdcdWZmODhc''@;'; put 'put ''dWZmODlcdWZmOGFcdWZmOGJcdWZmOGNcdWZmOGRcdWZmOGVcdWZmOGZcdWZmOTBcdWZmOTFcdWZmOTJcdWZmOTNcdWZmOTRcdWZmOTVcdWZmOTZcdWZmOTdcdWZmOThcdWZmOTlcdWZmOWFcdWZmOWJcdWZmOWNcdWZmOWRcdWZmOWVcdWZmOWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxFPTA7RSE9QlswXS5sZW5ndGg7KytFKTY1NTMzIT09QlswXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlswXVtFXV09MCtFLExbMCtFXT1CWzBdW0VdKTtmb3IoQlsxMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTMwMDBcdTMwMDFcdTMwMDJcdWZmMGNcdWZmMGVcdTMwZmJcdWZmMWFcdWZmMWJcdWZmMWZcdWZmMDFcdTMwOWJcdTMwOWNceGI0XHVmZjQwXHhhOFx1ZmYzZVx1ZmZlM1x1ZmYzZlx1MzBmZFx1MzBmZVx1MzA5ZFx1MzA5ZVx1MzAwM1x1NGVkZFx1MzAwNVx1MzAwNlx1MzAwN1x1MzBmY1x1''@;'; put 'put ''MjAxNVx1MjAxMFx1ZmYwZlx1ZmYzY1x1ZmY1ZVx1MjIyNVx1ZmY1Y1x1MjAyNlx1MjAyNVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1ZmYwOFx1ZmYwOVx1MzAxNFx1MzAxNVx1ZmYzYlx1ZmYzZFx1ZmY1Ylx1ZmY1ZFx1MzAwOFx1MzAwOVx1MzAwYVx1MzAwYlx1MzAwY1x1MzAwZFx1MzAw''@;'; put 'put ''ZVx1MzAwZlx1MzAxMFx1MzAxMVx1ZmYwYlx1ZmYwZFx4YjFceGQ3XHVmZmZkXHhmN1x1ZmYxZFx1MjI2MFx1ZmYxY1x1ZmYxZVx1MjI2Nlx1MjI2N1x1MjIxZVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmZTVcdWZmMDRcdWZmZTBcdWZmZTFcdWZmMDVcdWZm''@;'; put 'put ''MDNcdWZmMDZcdWZmMGFcdWZmMjBceGE3XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyNWJkXHUyNWJjXHUyMDNiXHUzMDEyXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMjI3XHUyMjI4XHVmZmUyXHUyMWQy''@;'; put 'put ''XHUyMWQ0XHUyMjAwXHUyMjAzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUy''@;'; put 'put ''MjJiXHUyMjJjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMTJiXHUyMDMwXHUyNjZmXHUyNjZkXHUyNjZhXHUyMDIwXHUyMDIxXHhiNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjVlZlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1C''@;'; put 'put ''WzEyOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTI5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMjldW0VdXT0zMzAyNCtFLExbMzMwMjQrRV09QlsxMjldW0VdKTtmb3IoQlsxMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZm''@;'; put 'put ''MzhcdWZmMzlcdWZmM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJc''@;'; put 'put ''dWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwNDFcdTMwNDJcdTMwNDNcdTMwNDRcdTMwNDVcdTMwNDZcdTMwNDdcdTMwNDhcdTMwNDlcdTMwNGFcdTMwNGJcdTMwNGNcdTMwNGRcdTMwNGVcdTMwNGZcdTMw''@;'; put 'put ''NTBcdTMwNTFcdTMwNTJcdTMwNTNcdTMwNTRcdTMwNTVcdTMwNTZcdTMwNTdcdTMwNThcdTMwNTlcdTMwNWFcdTMwNWJcdTMwNWNcdTMwNWRcdTMwNWVcdTMwNWZcdTMwNjBcdTMwNjFcdTMwNjJcdTMwNjNcdTMwNjRcdTMwNjVcdTMwNjZcdTMwNjdcdTMwNjhcdTMwNjlcdTMwNmFcdTMwNmJc''@;'; put 'put ''dTMwNmNcdTMwNmRcdTMwNmVcdTMwNmZcdTMwNzBcdTMwNzFcdTMwNzJcdTMwNzNcdTMwNzRcdTMwNzVcdTMwNzZcdTMwNzdcdTMwNzhcdTMwNzlcdTMwN2FcdTMwN2JcdTMwN2NcdTMwN2RcdTMwN2VcdTMwN2ZcdTMwODBcdTMwODFcdTMwODJcdTMwODNcdTMwODRcdTMwODVcdTMwODZcdTMw''@;'; put 'put ''ODdcdTMwODhcdTMwODlcdTMwOGFcdTMwOGJcdTMwOGNcdTMwOGRcdTMwOGVcdTMwOGZcdTMwOTBcdTMwOTFcdTMwOTJcdTMwOTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSxFPTA7RSE9QlsxMzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTMwXVtFXV09MzMyODArRSxMWzMzMjgwK0VdPUJbMTMwXVtFXSk7Zm9yKEJbMTMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUzMGExXHUzMGEyXHUzMGEzXHUzMGE0XHUzMGE1XHUzMGE2XHUzMGE3XHUzMGE4XHUzMGE5XHUzMGFhXHUzMGFiXHUzMGFjXHUzMGFkXHUzMGFlXHUzMGFmXHUzMGIwXHUzMGIxXHUzMGIyXHUzMGIzXHUzMGI0XHUzMGI1XHUzMGI2XHUzMGI3XHUzMGI4XHUzMGI5XHUzMGJh''@;'; put 'put ''XHUzMGJiXHUzMGJjXHUzMGJkXHUzMGJlXHUzMGJmXHUzMGMwXHUzMGMxXHUzMGMyXHUzMGMzXHUzMGM0XHUzMGM1XHUzMGM2XHUzMGM3XHUzMGM4XHUzMGM5XHUzMGNhXHUzMGNiXHUzMGNjXHUzMGNkXHUzMGNlXHUzMGNmXHUzMGQwXHUzMGQxXHUzMGQyXHUzMGQzXHUzMGQ0XHUzMGQ1XHUz''@;'; put 'put ''MGQ2XHUzMGQ3XHUzMGQ4XHUzMGQ5XHUzMGRhXHUzMGRiXHUzMGRjXHUzMGRkXHUzMGRlXHUzMGRmXHVmZmZkXHUzMGUwXHUzMGUxXHUzMGUyXHUzMGUzXHUzMGU0XHUzMGU1XHUzMGU2XHUzMGU3XHUzMGU4XHUzMGU5XHUzMGVhXHUzMGViXHUzMGVjXHUzMGVkXHUzMGVlXHUzMGVmXHUzMGYw''@;'; put 'put ''XHUzMGYxXHUzMGYyXHUzMGYzXHUzMGY0XHUzMGY1XHUzMGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUw''@;'; put 'put ''MzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5''@;'; put 'put ''XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTMxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzMV1bRV1dPTMzNTM2K0UsTFszMzUzNitFXT1CWzEzMV1bRV0pO2ZvcihCWzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQy''@;'; put 'put ''Nlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1''@;'; put 'put ''MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1ZmZmZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0''@;'; put 'put ''Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1''@;'; put 'put ''MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzJdW0VdXT0zMzc5MitFLExbMzM3OTIrRV09QlsxMzJdW0VdKTtmb3IoQlsxMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI0NjBcdTI0NjFcdTI0NjJcdTI0NjNcdTI0NjRcdTI0NjVcdTI0NjZcdTI0NjdcdTI0NjhcdTI0NjlcdTI0NmFcdTI0NmJcdTI0NmNcdTI0NmRcdTI0NmVcdTI0NmZcdTI0NzBcdTI0NzFcdTI0NzJcdTI0NzNcdTIxNjBcdTIx''@;'; put 'put ''NjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdWZmZmRcdTMzNDlcdTMzMTRcdTMzMjJcdTMzNGRcdTMzMThcdTMzMjdcdTMzMDNcdTMzMzZcdTMzNTFcdTMzNTdcdTMzMGRcdTMzMjZcdTMzMjNcdTMzMmJcdTMzNGFcdTMzM2JcdTMzOWNcdTMzOWRc''@;'; put 'put ''dTMzOWVcdTMzOGVcdTMzOGZcdTMzYzRcdTMzYTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMzN2JcdWZmZmRcdTMwMWRcdTMwMWZcdTIxMTZcdTMzY2RcdTIxMjFcdTMyYTRcdTMyYTVcdTMyYTZcdTMyYTdcdTMyYThcdTMyMzFcdTMyMzJcdTMy''@;'; put 'put ''MzlcdTMzN2VcdTMzN2RcdTMzN2NcdTIyNTJcdTIyNjFcdTIyMmJcdTIyMmVcdTIyMTFcdTIyMWFcdTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTIyMzVcdTIyMjlcdTIyMmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzNV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTM1XVtFXV09MzQ1NjArRSxMWzM0NTYwK0VdPUJbMTM1XVtFXSk7Zm9yKEJbMTM2XT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTljXHU1NTE2XHU1YTAzXHU5NjNmXHU1NGMwXHU2MTFiXHU2MzI4''@;'; put 'put ''XHU1OWY2XHU5MDIyXHU4NDc1XHU4MzFjXHU3YTUwXHU2MGFhXHU2M2UxXHU2ZTI1XHU2NWVkXHU4NDY2XHU4MmE2XHU5YmY1XHU2ODkzXHU1NzI3XHU2NWExXHU2MjcxXHU1YjliXHU1OWQwXHU4NjdiXHU5OGY0XHU3ZDYyXHU3ZGJlXHU5YjhlXHU2MjE2XHU3YzlmXHU4OGI3XHU1Yjg5XHU1''@;'; put 'put ''ZWI1XHU2MzA5XHU2Njk3XHU2ODQ4XHU5NWM3XHU5NzhkXHU2NzRmXHU0ZWU1XHU0ZjBhXHU0ZjRkXHU0ZjlkXHU1MDQ5XHU1NmYyXHU1OTM3XHU1OWQ0XHU1YTAxXHU1YzA5XHU2MGRmXHU2MTBmXHU2MTcwXHU2NjEzXHU2OTA1XHU3MGJhXHU3NTRmXHU3NTcwXHU3OWZiXHU3ZGFkXHU3ZGVm''@;'; put 'put ''XHU4MGMzXHU4NDBlXHU4ODYzXHU4YjAyXHU5MDU1XHU5MDdhXHU1MzNiXHU0ZTk1XHU0ZWE1XHU1N2RmXHU4MGIyXHU5MGMxXHU3OGVmXHU0ZTAwXHU1OGYxXHU2ZWEyXHU5MDM4XHU3YTMyXHU4MzI4XHU4MjhiXHU5YzJmXHU1MTQxXHU1MzcwXHU1NGJkXHU1NGUxXHU1NmUwXHU1OWZiXHU1''@;'; put 'put ''ZjE1XHU5OGYyXHU2ZGViXHU4MGU0XHU4NTJkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzNl1bRV1dPTM0ODE2K0UsTFszNDgxNitFXT1CWzEzNl1bRV0pO2ZvcihC''@;'; put 'put ''WzEzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY2Mlx1OTY3MFx1OTZhMFx1OTdmYlx1NTQwYlx1NTNmM1x1NWI4N1x1NzBjZlx1N2ZiZFx1OGZjMlx1OTZlOFx1NTM2Zlx1OWQ1Y1x1N2FiYVx1NGUxMVx1Nzg5M1x1ODFmY1x1''@;'; put 'put ''NmUyNlx1NTYxOFx1NTUwNFx1NmIxZFx1ODUxYVx1OWMzYlx1NTllNVx1NTNhOVx1NmQ2Nlx1NzRkY1x1OTU4Zlx1NTY0Mlx1NGU5MVx1OTA0Ylx1OTZmMlx1ODM0Zlx1OTkwY1x1NTNlMVx1NTViNlx1NWIzMFx1NWY3MVx1NjYyMFx1NjZmM1x1NjgwNFx1NmMzOFx1NmNmM1x1NmQyOVx1NzQ1''@;'; put 'put ''Ylx1NzZjOFx1N2E0ZVx1OTgzNFx1ODJmMVx1ODg1Ylx1OGE2MFx1OTJlZFx1NmRiMlx1NzVhYlx1NzZjYVx1OTljNVx1NjBhNlx1OGIwMVx1OGQ4YVx1OTViMlx1Njk4ZVx1NTNhZFx1NTE4Nlx1ZmZmZFx1NTcxMlx1NTgzMFx1NTk0NFx1NWJiNFx1NWVmNlx1NjAyOFx1NjNhOVx1NjNmNFx1''@;'; put 'put ''NmNiZlx1NmYxNFx1NzA4ZVx1NzExNFx1NzE1OVx1NzFkNVx1NzMzZlx1N2UwMVx1ODI3Nlx1ODJkMVx1ODU5N1x1OTA2MFx1OTI1Ylx1OWQxYlx1NTg2OVx1NjViY1x1NmM1YVx1NzUyNVx1NTFmOVx1NTkyZVx1NTk2NVx1NWY4MFx1NWZkY1x1NjJiY1x1NjVmYVx1NmEyYVx1NmIyN1x1NmJi''@;'; put 'put ''NFx1NzM4Ylx1N2ZjMVx1ODk1Nlx1OWQyY1x1OWQwZVx1OWVjNFx1NWNhMVx1NmM5Nlx1ODM3Ylx1NTEwNFx1NWM0Ylx1NjFiNlx1ODFjNlx1Njg3Nlx1NzI2MVx1NGU1OVx1NGZmYVx1NTM3OFx1NjA2OVx1NmUyOVx1N2E0Zlx1OTdmM1x1NGUwYlx1NTMxNlx1NGVlZVx1NGY1NVx1NGYzZFx1''@;'; put 'put ''NGZhMVx1NGY3M1x1NTJhMFx1NTNlZlx1NTYwOVx1NTkwZlx1NWFjMVx1NWJiNlx1NWJlMVx1NzlkMVx1NjY4N1x1Njc5Y1x1NjdiNlx1NmI0Y1x1NmNiM1x1NzA2Ylx1NzNjMlx1Nzk4ZFx1NzliZVx1N2EzY1x1N2I4N1x1ODJiMVx1ODJkYlx1ODMwNFx1ODM3N1x1ODNlZlx1ODNkM1x1ODc2''@;'; put 'put ''Nlx1OGFiMlx1NTYyOVx1OGNhOFx1OGZlNlx1OTA0ZVx1OTcxZVx1ODY4YVx1NGZjNFx1NWNlOFx1NjIxMVx1NzI1OVx1NzUzYlx1ODFlNVx1ODJiZFx1ODZmZVx1OGNjMFx1OTZjNVx1OTkxM1x1OTlkNVx1NGVjYlx1NGYxYVx1ODllM1x1NTZkZVx1NTg0YVx1NThjYVx1NWVmYlx1NWZlYlx1''@;'; put 'put ''NjAyYVx1NjA5NFx1NjA2Mlx1NjFkMFx1NjIxMlx1NjJkMFx1NjUzOVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzddW0VdXT0zNTA3MitFLExbMzUwNzIrRV09Qlsx''@;'; put 'put ''MzddW0VdKTtmb3IoQlsxMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTliNDFcdTY2NjZcdTY4YjBcdTZkNzdcdTcwNzBcdTc1NGNcdTc2ODZcdTdkNzVcdTgyYTVcdTg3ZjlcdTk1OGJcdTk2OGVcdThjOWRcdTUxZjFcdTUyYmVc''@;'; put 'put ''dTU5MTZcdTU0YjNcdTViYjNcdTVkMTZcdTYxNjhcdTY5ODJcdTZkYWZcdTc4OGRcdTg0Y2JcdTg4NTdcdThhNzJcdTkzYTdcdTlhYjhcdTZkNmNcdTk5YThcdTg2ZDlcdTU3YTNcdTY3ZmZcdTg2Y2VcdTkyMGVcdTUyODNcdTU2ODdcdTU0MDRcdTVlZDNcdTYyZTFcdTY0YjlcdTY4M2NcdTY4''@;'; put 'put ''MzhcdTZiYmJcdTczNzJcdTc4YmFcdTdhNmJcdTg5OWFcdTg5ZDJcdThkNmJcdThmMDNcdTkwZWRcdTk1YTNcdTk2OTRcdTk3NjlcdTViNjZcdTVjYjNcdTY5N2RcdTk4NGRcdTk4NGVcdTYzOWJcdTdiMjBcdTZhMmJcdWZmZmRcdTZhN2ZcdTY4YjZcdTljMGRcdTZmNWZcdTUyNzJcdTU1OWRc''@;'; put 'put ''dTYwNzBcdTYyZWNcdTZkM2JcdTZlMDdcdTZlZDFcdTg0NWJcdTg5MTBcdThmNDRcdTRlMTRcdTljMzlcdTUzZjZcdTY5MWJcdTZhM2FcdTk3ODRcdTY4MmFcdTUxNWNcdTdhYzNcdTg0YjJcdTkxZGNcdTkzOGNcdTU2NWJcdTlkMjhcdTY4MjJcdTgzMDVcdTg0MzFcdTdjYTVcdTUyMDhcdTgy''@;'; put 'put ''YzVcdTc0ZTZcdTRlN2VcdTRmODNcdTUxYTBcdTViZDJcdTUyMGFcdTUyZDhcdTUyZTdcdTVkZmJcdTU1OWFcdTU4MmFcdTU5ZTZcdTViOGNcdTViOThcdTViZGJcdTVlNzJcdTVlNzlcdTYwYTNcdTYxMWZcdTYxNjNcdTYxYmVcdTYzZGJcdTY1NjJcdTY3ZDFcdTY4NTNcdTY4ZmFcdTZiM2Vc''@;'; put 'put ''dTZiNTNcdTZjNTdcdTZmMjJcdTZmOTdcdTZmNDVcdTc0YjBcdTc1MThcdTc2ZTNcdTc3MGJcdTdhZmZcdTdiYTFcdTdjMjFcdTdkZTlcdTdmMzZcdTdmZjBcdTgwOWRcdTgyNjZcdTgzOWVcdTg5YjNcdThhY2NcdThjYWJcdTkwODRcdTk0NTFcdTk1OTNcdTk1OTFcdTk1YTJcdTk2NjVcdTk3''@;'; put 'put ''ZDNcdTk5MjhcdTgyMThcdTRlMzhcdTU0MmJcdTVjYjhcdTVkY2NcdTczYTlcdTc2NGNcdTc3M2NcdTVjYTlcdTdmZWJcdThkMGJcdTk2YzFcdTk4MTFcdTk4NTRcdTk4NThcdTRmMDFcdTRmMGVcdTUzNzFcdTU1OWNcdTU2NjhcdTU3ZmFcdTU5NDdcdTViMDlcdTViYzRcdTVjOTBcdTVlMGNc''@;'; put 'put ''dTVlN2VcdTVmY2NcdTYzZWVcdTY3M2FcdTY1ZDdcdTY1ZTJcdTY3MWZcdTY4Y2JcdTY4YzRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzOF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTM4XVtFXV09MzUzMjgrRSxM''@;'; put 'put ''WzM1MzI4K0VdPUJbMTM4XVtFXSk7Zm9yKEJbMTM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTVmXHU1ZTMwXHU2YmM1XHU2YzE3XHU2YzdkXHU3NTdmXHU3OTQ4XHU1YjYzXHU3YTAwXHU3ZDAwXHU1ZmJkXHU4OThmXHU4YTE4''@;'; put 'put ''XHU4Y2I0XHU4ZDc3XHU4ZWNjXHU4ZjFkXHU5OGUyXHU5YTBlXHU5YjNjXHU0ZTgwXHU1MDdkXHU1MTAwXHU1OTkzXHU1YjljXHU2MjJmXHU2MjgwXHU2NGVjXHU2YjNhXHU3MmEwXHU3NTkxXHU3OTQ3XHU3ZmE5XHU4N2ZiXHU4YWJjXHU4YjcwXHU2M2FjXHU4M2NhXHU5N2EwXHU1NDA5XHU1''@;'; put 'put ''NDAzXHU1NWFiXHU2ODU0XHU2YTU4XHU4YTcwXHU3ODI3XHU2Nzc1XHU5ZWNkXHU1Mzc0XHU1YmEyXHU4MTFhXHU4NjUwXHU5MDA2XHU0ZTE4XHU0ZTQ1XHU0ZWM3XHU0ZjExXHU1M2NhXHU1NDM4XHU1YmFlXHU1ZjEzXHU2MDI1XHU2NTUxXHVmZmZkXHU2NzNkXHU2YzQyXHU2YzcyXHU2Y2Uz''@;'; put 'put ''XHU3MDc4XHU3NDAzXHU3YTc2XHU3YWFlXHU3YjA4XHU3ZDFhXHU3Y2ZlXHU3ZDY2XHU2NWU3XHU3MjViXHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MmUwXHU2MzE5XHU2ZTIwXHU4NjVhXHU4YTMxXHU4ZGRkXHU5MmY4XHU2ZjAxXHU3OWE2XHU5YjVhXHU0ZWE4XHU0ZWFiXHU0ZWFjXHU0''@;'; put 'put ''ZjliXHU0ZmEwXHU1MGQxXHU1MTQ3XHU3YWY2XHU1MTcxXHU1MWY2XHU1MzU0XHU1MzIxXHU1MzdmXHU1M2ViXHU1NWFjXHU1ODgzXHU1Y2UxXHU1ZjM3XHU1ZjRhXHU2MDJmXHU2MDUwXHU2MDZkXHU2MzFmXHU2NTU5XHU2YTRiXHU2Y2MxXHU3MmMyXHU3MmVkXHU3N2VmXHU4MGY4XHU4MTA1''@;'; put 'put ''XHU4MjA4XHU4NTRlXHU5MGY3XHU5M2UxXHU5N2ZmXHU5OTU3XHU5YTVhXHU0ZWYwXHU1MWRkXHU1YzJkXHU2NjgxXHU2OTZkXHU1YzQwXHU2NmYyXHU2OTc1XHU3Mzg5XHU2ODUwXHU3YzgxXHU1MGM1XHU1MmU0XHU1NzQ3XHU1ZGZlXHU5MzI2XHU2NWE0XHU2YjIzXHU2YjNkXHU3NDM0XHU3''@;'; put 'put ''OTgxXHU3OWJkXHU3YjRiXHU3ZGNhXHU4MmI5XHU4M2NjXHU4ODdmXHU4OTVmXHU4YjM5XHU4ZmQxXHU5MWQxXHU1NDFmXHU5MjgwXHU0ZTVkXHU1MDM2XHU1M2U1XHU1MzNhXHU3MmQ3XHU3Mzk2XHU3N2U5XHU4MmU2XHU4ZWFmXHU5OWM2XHU5OWM4XHU5OWQyXHU1MTc3XHU2MTFhXHU4NjVl''@;'; put 'put ''XHU1NWIwXHU3YTdhXHU1MDc2XHU1YmQzXHU5MDQ3XHU5Njg1XHU0ZTMyXHU2YWRiXHU5MWU3XHU1YzUxXHU1YzQ4XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzOV1b''@;'; put 'put ''RV1dPTM1NTg0K0UsTFszNTU4NCtFXT1CWzEzOV1bRV0pO2ZvcihCWzE0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjM5OFx1N2E5Zlx1NmM5M1x1OTc3NFx1OGY2MVx1N2FhYVx1NzE4YVx1OTY4OFx1N2M4Mlx1NjgxN1x1N2U3''@;'; put 'put ''MFx1Njg1MVx1OTM2Y1x1NTJmMlx1NTQxYlx1ODVhYlx1OGExM1x1N2ZhNFx1OGVjZFx1OTBlMVx1NTM2Nlx1ODg4OFx1Nzk0MVx1NGZjMlx1NTBiZVx1NTIxMVx1NTE0NFx1NTU1M1x1NTcyZFx1NzNlYVx1NTc4Ylx1NTk1MVx1NWY2Mlx1NWY4NFx1NjA3NVx1NjE3Nlx1NjE2N1x1NjFhOVx1''@;'; put 'put ''NjNiMlx1NjQzYVx1NjU2Y1x1NjY2Zlx1Njg0Mlx1NmUxM1x1NzU2Nlx1N2EzZFx1N2NmYlx1N2Q0Y1x1N2Q5OVx1N2U0Ylx1N2Y2Ylx1ODMwZVx1ODM0YVx1ODZjZFx1OGEwOFx1OGE2M1x1OGI2Nlx1OGVmZFx1OTgxYVx1OWQ4Zlx1ODJiOFx1OGZjZVx1OWJlOFx1ZmZmZFx1NTI4N1x1NjIx''@;'; put 'put ''Zlx1NjQ4M1x1NmZjMFx1OTY5OVx1Njg0MVx1NTA5MVx1NmIyMFx1NmM3YVx1NmY1NFx1N2E3NFx1N2Q1MFx1ODg0MFx1OGEyM1x1NjcwOFx1NGVmNlx1NTAzOVx1NTAyNlx1NTA2NVx1NTE3Y1x1NTIzOFx1NTI2M1x1NTVhN1x1NTcwZlx1NTgwNVx1NWFjY1x1NWVmYVx1NjFiMlx1NjFmOFx1''@;'; put 'put ''NjJmM1x1NjM3Mlx1NjkxY1x1NmEyOVx1NzI3ZFx1NzJhY1x1NzMyZVx1NzgxNFx1Nzg2Zlx1N2Q3OVx1NzcwY1x1ODBhOVx1ODk4Ylx1OGIxOVx1OGNlMlx1OGVkMlx1OTA2M1x1OTM3NVx1OTY3YVx1OTg1NVx1OWExM1x1OWU3OFx1NTE0M1x1NTM5Zlx1NTNiM1x1NWU3Ylx1NWYyNlx1NmUx''@;'; put 'put ''Ylx1NmU5MFx1NzM4NFx1NzNmZVx1N2Q0M1x1ODIzN1x1OGEwMFx1OGFmYVx1OTY1MFx1NGU0ZVx1NTAwYlx1NTNlNFx1NTQ3Y1x1NTZmYVx1NTlkMVx1NWI2NFx1NWRmMVx1NWVhYlx1NWYyN1x1NjIzOFx1NjU0NVx1NjdhZlx1NmU1Nlx1NzJkMFx1N2NjYVx1ODhiNFx1ODBhMVx1ODBlMVx1''@;'; put 'put ''ODNmMFx1ODY0ZVx1OGE4N1x1OGRlOFx1OTIzN1x1OTZjN1x1OTg2N1x1OWYxM1x1NGU5NFx1NGU5Mlx1NGYwZFx1NTM0OFx1NTQ0OVx1NTQzZVx1NWEyZlx1NWY4Y1x1NWZhMVx1NjA5Zlx1NjhhN1x1NmE4ZVx1NzQ1YVx1Nzg4MVx1OGE5ZVx1OGFhNFx1OGI3N1x1OTE5MFx1NGU1ZVx1OWJj''@;'; put 'put ''OVx1NGVhNFx1NGY3Y1x1NGZhZlx1NTAxOVx1NTAxNlx1NTE0OVx1NTE2Y1x1NTI5Zlx1NTJiOVx1NTJmZVx1NTM5YVx1NTNlM1x1NTQxMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQwXVtFXS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoZ2VbQlsxNDBdW0VdXT0zNTg0MCtFLExbMzU4NDArRV09QlsxNDBdW0VdKTtmb3IoQlsxNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0MGVcdTU1ODlcdTU3NTFcdTU3YTJcdTU5N2RcdTViNTRcdTViNWRcdTViOGZcdTVk''@;'; put 'put ''ZTVcdTVkZTdcdTVkZjdcdTVlNzhcdTVlODNcdTVlOWFcdTVlYjdcdTVmMThcdTYwNTJcdTYxNGNcdTYyOTdcdTYyZDhcdTYzYTdcdTY1M2JcdTY2MDJcdTY2NDNcdTY2ZjRcdTY3NmRcdTY4MjFcdTY4OTdcdTY5Y2JcdTZjNWZcdTZkMmFcdTZkNjlcdTZlMmZcdTZlOWRcdTc1MzJcdTc2ODdc''@;'; put 'put ''dTc4NmNcdTdhM2ZcdTdjZTBcdTdkMDVcdTdkMThcdTdkNWVcdTdkYjFcdTgwMTVcdTgwMDNcdTgwYWZcdTgwYjFcdTgxNTRcdTgxOGZcdTgyMmFcdTgzNTJcdTg4NGNcdTg4NjFcdThiMWJcdThjYTJcdThjZmNcdTkwY2FcdTkxNzVcdTkyNzFcdTc4M2ZcdTkyZmNcdTk1YTRcdTk2NGRcdWZm''@;'; put 'put ''ZmRcdTk4MDVcdTk5OTlcdTlhZDhcdTlkM2JcdTUyNWJcdTUyYWJcdTUzZjdcdTU0MDhcdTU4ZDVcdTYyZjdcdTZmZTBcdThjNmFcdThmNWZcdTllYjlcdTUxNGJcdTUyM2JcdTU0NGFcdTU2ZmRcdTdhNDBcdTkxNzdcdTlkNjBcdTllZDJcdTczNDRcdTZmMDlcdTgxNzBcdTc1MTFcdTVmZmRc''@;'; put 'put ''dTYwZGFcdTlhYThcdTcyZGJcdThmYmNcdTZiNjRcdTk4MDNcdTRlY2FcdTU2ZjBcdTU3NjRcdTU4YmVcdTVhNWFcdTYwNjhcdTYxYzdcdTY2MGZcdTY2MDZcdTY4MzlcdTY4YjFcdTZkZjdcdTc1ZDVcdTdkM2FcdTgyNmVcdTliNDJcdTRlOWJcdTRmNTBcdTUzYzlcdTU1MDZcdTVkNmZcdTVk''@;'; put 'put ''ZTZcdTVkZWVcdTY3ZmJcdTZjOTlcdTc0NzNcdTc4MDJcdThhNTBcdTkzOTZcdTg4ZGZcdTU3NTBcdTVlYTdcdTYzMmJcdTUwYjVcdTUwYWNcdTUxOGRcdTY3MDBcdTU0YzlcdTU4NWVcdTU5YmJcdTViYjBcdTVmNjlcdTYyNGRcdTYzYTFcdTY4M2RcdTZiNzNcdTZlMDhcdTcwN2RcdTkxYzdc''@;'; put 'put ''dTcyODBcdTc4MTVcdTc4MjZcdTc5NmRcdTY1OGVcdTdkMzBcdTgzZGNcdTg4YzFcdThmMDlcdTk2OWJcdTUyNjRcdTU3MjhcdTY3NTBcdTdmNmFcdThjYTFcdTUxYjRcdTU3NDJcdTk2MmFcdTU4M2FcdTY5OGFcdTgwYjRcdTU0YjJcdTVkMGVcdTU3ZmNcdTc4OTVcdTlkZmFcdTRmNWNcdTUy''@;'; put 'put ''NGFcdTU0OGJcdTY0M2VcdTY2MjhcdTY3MTRcdTY3ZjVcdTdhODRcdTdiNTZcdTdkMjJcdTkzMmZcdTY4NWNcdTliYWRcdTdiMzlcdTUzMTlcdTUxOGFcdTUyMzdcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0MV1bRV0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKGdlW0JbMTQxXVtFXV09MzYwOTYrRSxMWzM2MDk2K0VdPUJbMTQxXVtFXSk7Zm9yKEJbMTQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YmRmXHU2MmY2XHU2NGFlXHU2NGU2XHU2NzJkXHU2YmJhXHU4''@;'; put 'put ''NWE5XHU5NmQxXHU3NjkwXHU5YmQ2XHU2MzRjXHU5MzA2XHU5YmFiXHU3NmJmXHU2NjUyXHU0ZTA5XHU1MDk4XHU1M2MyXHU1YzcxXHU2MGU4XHU2NDkyXHU2NTYzXHU2ODVmXHU3MWU2XHU3M2NhXHU3NTIzXHU3Yjk3XHU3ZTgyXHU4Njk1XHU4YjgzXHU4Y2RiXHU5MTc4XHU5OTEwXHU2NWFj''@;'; put 'put ''XHU2NmFiXHU2YjhiXHU0ZWQ1XHU0ZWQ0XHU0ZjNhXHU0ZjdmXHU1MjNhXHU1M2Y4XHU1M2YyXHU1NWUzXHU1NmRiXHU1OGViXHU1OWNiXHU1OWM5XHU1OWZmXHU1YjUwXHU1YzRkXHU1ZTAyXHU1ZTJiXHU1ZmQ3XHU2MDFkXHU2MzA3XHU2NTJmXHU1YjVjXHU2NWFmXHU2NWJkXHU2NWU4XHU2''@;'; put 'put ''NzlkXHU2YjYyXHVmZmZkXHU2YjdiXHU2YzBmXHU3MzQ1XHU3OTQ5XHU3OWMxXHU3Y2Y4XHU3ZDE5XHU3ZDJiXHU4MGEyXHU4MTAyXHU4MWYzXHU4OTk2XHU4YTVlXHU4YTY5XHU4YTY2XHU4YThjXHU4YWVlXHU4Y2M3XHU4Y2RjXHU5NmNjXHU5OGZjXHU2YjZmXHU0ZThiXHU0ZjNjXHU0Zjhk''@;'; put 'put ''XHU1MTUwXHU1YjU3XHU1YmZhXHU2MTQ4XHU2MzAxXHU2NjQyXHU2YjIxXHU2ZWNiXHU2Y2JiXHU3MjNlXHU3NGJkXHU3NWQ0XHU3OGMxXHU3OTNhXHU4MDBjXHU4MDMzXHU4MWVhXHU4NDk0XHU4ZjllXHU2YzUwXHU5ZTdmXHU1ZjBmXHU4YjU4XHU5ZDJiXHU3YWZhXHU4ZWY4XHU1YjhkXHU5''@;'; put 'put ''NmViXHU0ZTAzXHU1M2YxXHU1N2Y3XHU1OTMxXHU1YWM5XHU1YmE0XHU2MDg5XHU2ZTdmXHU2ZjA2XHU3NWJlXHU4Y2VhXHU1YjlmXHU4NTAwXHU3YmUwXHU1MDcyXHU2N2Y0XHU4MjlkXHU1YzYxXHU4NTRhXHU3ZTFlXHU4MjBlXHU1MTk5XHU1YzA0XHU2MzY4XHU4ZDY2XHU2NTljXHU3MTZl''@;'; put 'put ''XHU3OTNlXHU3ZDE3XHU4MDA1XHU4YjFkXHU4ZWNhXHU5MDZlXHU4NmM3XHU5MGFhXHU1MDFmXHU1MmZhXHU1YzNhXHU2NzUzXHU3MDdjXHU3MjM1XHU5MTRjXHU5MWM4XHU5MzJiXHU4MmU1XHU1YmMyXHU1ZjMxXHU2MGY5XHU0ZTNiXHU1M2Q2XHU1Yjg4XHU2MjRiXHU2NzMxXHU2YjhhXHU3''@;'; put 'put ''MmU5XHU3M2UwXHU3YTJlXHU4MTZiXHU4ZGEzXHU5MTUyXHU5OTk2XHU1MTEyXHU1M2Q3XHU1NDZhXHU1YmZmXHU2Mzg4XHU2YTM5XHU3ZGFjXHU5NzAwXHU1NmRhXHU1M2NlXHU1NDY4XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQyXS5sZW5ndGg7KytFKTY1NTMz''@;'; put 'put ''IT09QlsxNDJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0Ml1bRV1dPTM2MzUyK0UsTFszNjM1MitFXT1CWzE0Ml1bRV0pO2ZvcihCWzE0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI5N1x1NWMzMVx1NWRkZVx1NGZlZVx1''@;'; put 'put ''NjEwMVx1NjJmZVx1NmQzMlx1NzljMFx1NzljYlx1N2Q0Mlx1N2U0ZFx1N2ZkMlx1ODFlZFx1ODIxZlx1ODQ5MFx1ODg0Nlx1ODk3Mlx1OGI5MFx1OGU3NFx1OGYyZlx1OTAzMVx1OTE0Ylx1OTE2Y1x1OTZjNlx1OTE5Y1x1NGVjMFx1NGY0Zlx1NTE0NVx1NTM0MVx1NWY5M1x1NjIwZVx1Njdk''@;'; put 'put ''NFx1NmM0MVx1NmUwYlx1NzM2M1x1N2UyNlx1OTFjZFx1OTI4M1x1NTNkNFx1NTkxOVx1NWJiZlx1NmRkMVx1Nzk1ZFx1N2UyZVx1N2M5Ylx1NTg3ZVx1NzE5Zlx1NTFmYVx1ODg1M1x1OGZmMFx1NGZjYVx1NWNmYlx1NjYyNVx1NzdhY1x1N2FlM1x1ODIxY1x1OTlmZlx1NTFjNlx1NWZhYVx1''@;'; put 'put ''NjVlY1x1Njk2Zlx1NmI4OVx1NmRmM1x1ZmZmZFx1NmU5Nlx1NmY2NFx1NzZmZVx1N2QxNFx1NWRlMVx1OTA3NVx1OTE4N1x1OTgwNlx1NTFlNlx1NTIxZFx1NjI0MFx1NjY5MVx1NjZkOVx1NmUxYVx1NWViNlx1N2RkMlx1N2Y3Mlx1NjZmOFx1ODVhZlx1ODVmN1x1OGFmOFx1NTJhOVx1NTNk''@;'; put 'put ''OVx1NTk3M1x1NWU4Zlx1NWY5MFx1NjA1NVx1OTJlNFx1OTY2NFx1NTBiN1x1NTExZlx1NTJkZFx1NTMyMFx1NTM0N1x1NTNlY1x1NTRlOFx1NTU0Nlx1NTUzMVx1NTYxN1x1NTk2OFx1NTliZVx1NWEzY1x1NWJiNVx1NWMwNlx1NWMwZlx1NWMxMVx1NWMxYVx1NWU4NFx1NWU4YVx1NWVlMFx1''@;'; put 'put ''NWY3MFx1NjI3Zlx1NjI4NFx1NjJkYlx1NjM4Y1x1NjM3N1x1NjYwN1x1NjYwY1x1NjYyZFx1NjY3Nlx1Njc3ZVx1NjhhMlx1NmExZlx1NmEzNVx1NmNiY1x1NmQ4OFx1NmUwOVx1NmU1OFx1NzEzY1x1NzEyNlx1NzE2N1x1NzVjN1x1NzcwMVx1Nzg1ZFx1NzkwMVx1Nzk2NVx1NzlmMFx1N2Fl''@;'; put 'put ''MFx1N2IxMVx1N2NhN1x1N2QzOVx1ODA5Nlx1ODNkNlx1ODQ4Ylx1ODU0OVx1ODg1ZFx1ODhmM1x1OGExZlx1OGEzY1x1OGE1NFx1OGE3M1x1OGM2MVx1OGNkZVx1OTFhNFx1OTI2Nlx1OTM3ZVx1OTQxOFx1OTY5Y1x1OTc5OFx1NGUwYVx1NGUwOFx1NGUxZVx1NGU1N1x1NTE5N1x1NTI3MFx1''@;'; put 'put ''NTdjZVx1NTgzNFx1NThjY1x1NWIyMlx1NWUzOFx1NjBjNVx1NjRmZVx1Njc2MVx1Njc1Nlx1NmQ0NFx1NzJiNlx1NzU3M1x1N2E2M1x1ODRiOFx1OGI3Mlx1OTFiOFx1OTMyMFx1NTYzMVx1NTdmNFx1OThmZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0M10ubGVu''@;'; put 'put ''Z3RoOysrRSk2NTUzMyE9PUJbMTQzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDNdW0VdXT0zNjYwOCtFLExbMzY2MDgrRV09QlsxNDNdW0VdKTtmb3IoQlsxNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYyZWRcdTY5MGRc''@;'; put 'put ''dTZiOTZcdTcxZWRcdTdlNTRcdTgwNzdcdTgyNzJcdTg5ZTZcdTk4ZGZcdTg3NTVcdThmYjFcdTVjM2JcdTRmMzhcdTRmZTFcdTRmYjVcdTU1MDdcdTVhMjBcdTViZGRcdTViZTlcdTVmYzNcdTYxNGVcdTYzMmZcdTY1YjBcdTY2NGJcdTY4ZWVcdTY5OWJcdTZkNzhcdTZkZjFcdTc1MzNcdTc1''@;'; put 'put ''YjlcdTc3MWZcdTc5NWVcdTc5ZTZcdTdkMzNcdTgxZTNcdTgyYWZcdTg1YWFcdTg5YWFcdThhM2FcdThlYWJcdThmOWJcdTkwMzJcdTkxZGRcdTk3MDdcdTRlYmFcdTRlYzFcdTUyMDNcdTU4NzVcdTU4ZWNcdTVjMGJcdTc1MWFcdTVjM2RcdTgxNGVcdThhMGFcdThmYzVcdTk2NjNcdTk3NmRc''@;'; put 'put ''dTdiMjVcdThhY2ZcdTk4MDhcdTkxNjJcdTU2ZjNcdTUzYThcdWZmZmRcdTkwMTdcdTU0MzlcdTU3ODJcdTVlMjVcdTYzYThcdTZjMzRcdTcwOGFcdTc3NjFcdTdjOGJcdTdmZTBcdTg4NzBcdTkwNDJcdTkxNTRcdTkzMTBcdTkzMThcdTk2OGZcdTc0NWVcdTlhYzRcdTVkMDdcdTVkNjlcdTY1''@;'; put 'put ''NzBcdTY3YTJcdThkYThcdTk2ZGJcdTYzNmVcdTY3NDlcdTY5MTlcdTgzYzVcdTk4MTdcdTk2YzBcdTg4ZmVcdTZmODRcdTY0N2FcdTViZjhcdTRlMTZcdTcwMmNcdTc1NWRcdTY2MmZcdTUxYzRcdTUyMzZcdTUyZTJcdTU5ZDNcdTVmODFcdTYwMjdcdTYyMTBcdTY1M2ZcdTY1NzRcdTY2MWZc''@;'; put 'put ''dTY2NzRcdTY4ZjJcdTY4MTZcdTZiNjNcdTZlMDVcdTcyNzJcdTc1MWZcdTc2ZGJcdTdjYmVcdTgwNTZcdTU4ZjBcdTg4ZmRcdTg5N2ZcdThhYTBcdThhOTNcdThhY2JcdTkwMWRcdTkxOTJcdTk3NTJcdTk3NTlcdTY1ODlcdTdhMGVcdTgxMDZcdTk2YmJcdTVlMmRcdTYwZGNcdTYyMWFcdTY1''@;'; put 'put ''YTVcdTY2MTRcdTY3OTBcdTc3ZjNcdTdhNGRcdTdjNGRcdTdlM2VcdTgxMGFcdThjYWNcdThkNjRcdThkZTFcdThlNWZcdTc4YTlcdTUyMDdcdTYyZDlcdTYzYTVcdTY0NDJcdTYyOThcdThhMmRcdTdhODNcdTdiYzBcdThhYWNcdTk2ZWFcdTdkNzZcdTgyMGNcdTg3NDlcdTRlZDlcdTUxNDhc''@;'; put 'put ''dTUzNDNcdTUzNjBcdTViYTNcdTVjMDJcdTVjMTZcdTVkZGRcdTYyMjZcdTYyNDdcdTY0YjBcdTY4MTNcdTY4MzRcdTZjYzlcdTZkNDVcdTZkMTdcdTY3ZDNcdTZmNWNcdTcxNGVcdTcxN2RcdTY1Y2JcdTdhN2ZcdTdiYWRcdTdkZGFcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7''@;'; put 'put ''RSE9QlsxNDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQ0XVtFXV09MzY4NjQrRSxMWzM2ODY0K0VdPUJbMTQ0XVtFXSk7Zm9yKEJbMTQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU3ZTRhXHU3ZmE4XHU4MTdhXHU4MjFiXHU4MjM5XHU4NWE2XHU4YTZlXHU4Y2NlXHU4ZGY1XHU5MDc4XHU5MDc3XHU5MmFkXHU5MjkxXHU5NTgzXHU5YmFlXHU1MjRkXHU1NTg0XHU2ZjM4XHU3MTM2XHU1MTY4XHU3OTg1XHU3ZTU1XHU4MWIzXHU3Y2NlXHU1NjRjXHU1ODUxXHU1Y2E4XHU2''@;'; put 'put ''M2FhXHU2NmZlXHU2NmZkXHU2OTVhXHU3MmQ5XHU3NThmXHU3NThlXHU3OTBlXHU3OTU2XHU3OWRmXHU3Yzk3XHU3ZDIwXHU3ZDQ0XHU4NjA3XHU4YTM0XHU5NjNiXHU5MDYxXHU5ZjIwXHU1MGU3XHU1Mjc1XHU1M2NjXHU1M2UyXHU1MDA5XHU1NWFhXHU1OGVlXHU1OTRmXHU3MjNkXHU1Yjhi''@;'; put 'put ''XHU1YzY0XHU1MzFkXHU2MGUzXHU2MGYzXHU2MzVjXHU2MzgzXHU2MzNmXHU2M2JiXHVmZmZkXHU2NGNkXHU2NWU5XHU2NmY5XHU1ZGUzXHU2OWNkXHU2OWZkXHU2ZjE1XHU3MWU1XHU0ZTg5XHU3NWU5XHU3NmY4XHU3YTkzXHU3Y2RmXHU3ZGNmXHU3ZDljXHU4MDYxXHU4MzQ5XHU4MzU4XHU4''@;'; put 'put ''NDZjXHU4NGJjXHU4NWZiXHU4OGM1XHU4ZDcwXHU5MDAxXHU5MDZkXHU5Mzk3XHU5NzFjXHU5YTEyXHU1MGNmXHU1ODk3XHU2MThlXHU4MWQzXHU4NTM1XHU4ZDA4XHU5MDIwXHU0ZmMzXHU1MDc0XHU1MjQ3XHU1MzczXHU2MDZmXHU2MzQ5XHU2NzVmXHU2ZTJjXHU4ZGIzXHU5MDFmXHU0ZmQ3''@;'; put 'put ''XHU1YzVlXHU4Y2NhXHU2NWNmXHU3ZDlhXHU1MzUyXHU4ODk2XHU1MTc2XHU2M2MzXHU1YjU4XHU1YjZiXHU1YzBhXHU2NDBkXHU2NzUxXHU5MDVjXHU0ZWQ2XHU1OTFhXHU1OTJhXHU2YzcwXHU4YTUxXHU1NTNlXHU1ODE1XHU1OWE1XHU2MGYwXHU2MjUzXHU2N2MxXHU4MjM1XHU2OTU1XHU5''@;'; put 'put ''NjQwXHU5OWM0XHU5YTI4XHU0ZjUzXHU1ODA2XHU1YmZlXHU4MDEwXHU1Y2IxXHU1ZTJmXHU1Zjg1XHU2MDIwXHU2MTRiXHU2MjM0XHU2NmZmXHU2Y2YwXHU2ZWRlXHU4MGNlXHU4MTdmXHU4MmQ0XHU4ODhiXHU4Y2I4XHU5MDAwXHU5MDJlXHU5NjhhXHU5ZWRiXHU5YmRiXHU0ZWUzXHU1M2Yw''@;'; put 'put ''XHU1OTI3XHU3YjJjXHU5MThkXHU5ODRjXHU5ZGY5XHU2ZWRkXHU3MDI3XHU1MzUzXHU1NTQ0XHU1Yjg1XHU2MjU4XHU2MjllXHU2MmQzXHU2Y2EyXHU2ZmVmXHU3NDIyXHU4YTE3XHU5NDM4XHU2ZmMxXHU4YWZlXHU4MzM4XHU1MWU3XHU4NmY4XHU1M2VhXHVmZmZkXHVmZmZkXHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksRT0wO0UhPUJbMTQ1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0NV1bRV1dPTM3MTIwK0UsTFszNzEyMCtFXT1CWzE0NV1bRV0pO2ZvcihCWzE0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1NTNlOVx1NGY0Nlx1OTA1NFx1OGZiMFx1NTk2YVx1ODEzMVx1NWRmZFx1N2FlYVx1OGZiZlx1NjhkYVx1OGMzN1x1NzJmOFx1OWM0OFx1NmEzZFx1OGFiMFx1NGUzOVx1NTM1OFx1NTYwNlx1NTc2Nlx1NjJjNVx1NjNhMlx1NjVlNlx1NmI0ZVx1NmRlMVx1NmU1Ylx1''@;'; put 'put ''NzBhZFx1NzdlZFx1N2FlZlx1N2JhYVx1N2RiYlx1ODAzZFx1ODBjNlx1ODZjYlx1OGE5NVx1OTM1Ylx1NTZlM1x1NThjN1x1NWYzZVx1NjVhZFx1NjY5Nlx1NmE4MFx1NmJiNVx1NzUzN1x1OGFjN1x1NTAyNFx1NzdlNVx1NTczMFx1NWYxYlx1NjA2NVx1NjY3YVx1NmM2MFx1NzVmNFx1N2Ex''@;'; put 'put ''YVx1N2Y2ZVx1ODFmNFx1ODcxOFx1OTA0NVx1OTliM1x1N2JjOVx1NzU1Y1x1N2FmOVx1N2I1MVx1ODRjNFx1ZmZmZFx1OTAxMFx1NzllOVx1N2E5Mlx1ODMzNlx1NWFlMVx1Nzc0MFx1NGUyZFx1NGVmMlx1NWI5OVx1NWZlMFx1NjJiZFx1NjYzY1x1NjdmMVx1NmNlOFx1ODY2Ylx1ODg3N1x1''@;'; put 'put ''OGEzYlx1OTE0ZVx1OTJmM1x1OTlkMFx1NmExN1x1NzAyNlx1NzMyYVx1ODJlN1x1ODQ1N1x1OGNhZlx1NGUwMVx1NTE0Nlx1NTFjYlx1NTU4Ylx1NWJmNVx1NWUxNlx1NWUzM1x1NWU4MVx1NWYxNFx1NWYzNVx1NWY2Ylx1NWZiNFx1NjFmMlx1NjMxMVx1NjZhMlx1NjcxZFx1NmY2ZVx1NzI1''@;'; put 'put ''Mlx1NzUzYVx1NzczYVx1ODA3NFx1ODEzOVx1ODE3OFx1ODc3Nlx1OGFiZlx1OGFkY1x1OGQ4NVx1OGRmM1x1OTI5YVx1OTU3N1x1OTgwMlx1OWNlNVx1NTJjNVx1NjM1N1x1NzZmNFx1NjcxNVx1NmM4OFx1NzNjZFx1OGNjM1x1OTNhZVx1OTY3M1x1NmQyNVx1NTg5Y1x1NjkwZVx1NjljY1x1''@;'; put 'put ''OGZmZFx1OTM5YVx1NzVkYlx1OTAxYVx1NTg1YVx1NjgwMlx1NjNiNFx1NjlmYlx1NGY0M1x1NmYyY1x1NjdkOFx1OGZiYlx1ODUyNlx1N2RiNFx1OTM1NFx1NjkzZlx1NmY3MFx1NTc2YVx1NThmN1x1NWIyY1x1N2QyY1x1NzIyYVx1NTQwYVx1OTFlM1x1OWRiNFx1NGVhZFx1NGY0ZVx1NTA1''@;'; put 'put ''Y1x1NTA3NVx1NTI0M1x1OGM5ZVx1NTQ0OFx1NTgyNFx1NWI5YVx1NWUxZFx1NWU5NVx1NWVhZFx1NWVmN1x1NWYxZlx1NjA4Y1x1NjJiNVx1NjMzYVx1NjNkMFx1NjhhZlx1NmM0MFx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2RlMFx1ODI0N1x1OGEwMlx1OGFlNlx1OGU0NFx1OTAxM1x1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDZdW0VdXT0zNzM3NitFLExbMzczNzYrRV09QlsxNDZdW0VdKTtmb3IoQlsxNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwYjhcdTkxMmRcdTkxZDhcdTlmMGVcdTZjZTVcdTY0NThcdTY0ZTJcdTY1NzVcdTZlZjRcdTc2ODRcdTdiMWJcdTkwNjlcdTkzZDFcdTZlYmFcdTU0ZjJcdTVmYjlcdTY0YTRcdThmNGRcdThmZWRcdTkyNDRcdTUxNzhcdTU4NmJcdTU5Mjlc''@;'; put 'put ''dTVjNTVcdTVlOTdcdTZkZmJcdTdlOGZcdTc1MWNcdThjYmNcdThlZTJcdTk4NWJcdTcwYjlcdTRmMWRcdTZiYmZcdTZmYjFcdTc1MzBcdTk2ZmJcdTUxNGVcdTU0MTBcdTU4MzVcdTU4NTdcdTU5YWNcdTVjNjBcdTVmOTJcdTY1OTdcdTY3NWNcdTZlMjFcdTc2N2JcdTgzZGZcdThjZWRcdTkw''@;'; put 'put ''MTRcdTkwZmRcdTkzNGRcdTc4MjVcdTc4M2FcdTUyYWFcdTVlYTZcdTU3MWZcdTU5NzRcdTYwMTJcdTUwMTJcdTUxNWFcdTUxYWNcdWZmZmRcdTUxY2RcdTUyMDBcdTU1MTBcdTU4NTRcdTU4NThcdTU5NTdcdTViOTVcdTVjZjZcdTVkOGJcdTYwYmNcdTYyOTVcdTY0MmRcdTY3NzFcdTY4NDNc''@;'; put 'put ''dTY4YmNcdTY4ZGZcdTc2ZDdcdTZkZDhcdTZlNmZcdTZkOWJcdTcwNmZcdTcxYzhcdTVmNTNcdTc1ZDhcdTc5NzdcdTdiNDlcdTdiNTRcdTdiNTJcdTdjZDZcdTdkNzFcdTUyMzBcdTg0NjNcdTg1NjlcdTg1ZTRcdThhMGVcdThiMDRcdThjNDZcdThlMGZcdTkwMDNcdTkwMGZcdTk0MTlcdTk2''@;'; put 'put ''NzZcdTk4MmRcdTlhMzBcdTk1ZDhcdTUwY2RcdTUyZDVcdTU0MGNcdTU4MDJcdTVjMGVcdTYxYTdcdTY0OWVcdTZkMWVcdTc3YjNcdTdhZTVcdTgwZjRcdTg0MDRcdTkwNTNcdTkyODVcdTVjZTBcdTlkMDdcdTUzM2ZcdTVmOTdcdTVmYjNcdTZkOWNcdTcyNzlcdTc3NjNcdTc5YmZcdTdiZTRc''@;'; put 'put ''dTZiZDJcdTcyZWNcdThhYWRcdTY4MDNcdTZhNjFcdTUxZjhcdTdhODFcdTY5MzRcdTVjNGFcdTljZjZcdTgyZWJcdTViYzVcdTkxNDlcdTcwMWVcdTU2NzhcdTVjNmZcdTYwYzdcdTY1NjZcdTZjOGNcdThjNWFcdTkwNDFcdTk4MTNcdTU0NTFcdTY2YzdcdTkyMGRcdTU5NDhcdTkwYTNcdTUx''@;'; put 'put ''ODVcdTRlNGRcdTUxZWFcdTg1OTlcdThiMGVcdTcwNThcdTYzN2FcdTkzNGJcdTY5NjJcdTk5YjRcdTdlMDRcdTc1NzdcdTUzNTdcdTY5NjBcdThlZGZcdTk2ZTNcdTZjNWRcdTRlOGNcdTVjM2NcdTVmMTBcdThmZTlcdTUzMDJcdThjZDFcdTgwODlcdTg2NzlcdTVlZmZcdTY1ZTVcdTRlNzNc''@;'; put 'put ''dTUxNjVcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQ3XVtFXV09Mzc2MzIrRSxMWzM3NjMyK0VdPUJbMTQ3XVtFXSk7Zm9yKEJbMTQ4XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1OTgyXHU1YzNmXHU5N2VlXHU0ZWZiXHU1OThhXHU1ZmNkXHU4YThkXHU2ZmUxXHU3OWIwXHU3OTYyXHU1YmU3XHU4NDcxXHU3MzJiXHU3MWIxXHU1ZTc0XHU1ZmY1XHU2MzdiXHU2NDlhXHU3MWMzXHU3Yzk4XHU0ZTQz''@;'; put 'put ''XHU1ZWZjXHU0ZTRiXHU1N2RjXHU1NmEyXHU2MGE5XHU2ZmMzXHU3ZDBkXHU4MGZkXHU4MTMzXHU4MWJmXHU4ZmIyXHU4OTk3XHU4NmE0XHU1ZGY0XHU2MjhhXHU2NGFkXHU4OTg3XHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3NDM2XHU3ODM0XHU1YTQ2XHU3Zjc1XHU4MmFkXHU5OWFjXHU0ZmYzXHU1''@;'; put 'put ''ZWMzXHU2MmRkXHU2MzkyXHU2NTU3XHU2NzZmXHU3NmMzXHU3MjRjXHU4MGNjXHU4MGJhXHU4ZjI5XHU5MTRkXHU1MDBkXHU1N2Y5XHU1YTkyXHU2ODg1XHVmZmZkXHU2OTczXHU3MTY0XHU3MmZkXHU4Y2I3XHU1OGYyXHU4Y2UwXHU5NjZhXHU5MDE5XHU4NzdmXHU3OWU0XHU3N2U3XHU4NDI5''@;'; put 'put ''XHU0ZjJmXHU1MjY1XHU1MzVhXHU2MmNkXHU2N2NmXHU2Y2NhXHU3NjdkXHU3Yjk0XHU3Yzk1XHU4MjM2XHU4NTg0XHU4ZmViXHU2NmRkXHU2ZjIwXHU3MjA2XHU3ZTFiXHU4M2FiXHU5OWMxXHU5ZWE2XHU1MWZkXHU3YmIxXHU3ODcyXHU3YmI4XHU4MDg3XHU3YjQ4XHU2YWU4XHU1ZTYxXHU4''@;'; put 'put ''MDhjXHU3NTUxXHU3NTYwXHU1MTZiXHU5MjYyXHU2ZThjXHU3NjdhXHU5MTk3XHU5YWVhXHU0ZjEwXHU3ZjcwXHU2MjljXHU3YjRmXHU5NWE1XHU5Y2U5XHU1NjdhXHU1ODU5XHU4NmU0XHU5NmJjXHU0ZjM0XHU1MjI0XHU1MzRhXHU1M2NkXHU1M2RiXHU1ZTA2XHU2NDJjXHU2NTkxXHU2Nzdm''@;'; put 'put ''XHU2YzNlXHU2YzRlXHU3MjQ4XHU3MmFmXHU3M2VkXHU3NTU0XHU3ZTQxXHU4MjJjXHU4NWU5XHU4Y2E5XHU3YmM0XHU5MWM2XHU3MTY5XHU5ODEyXHU5OGVmXHU2MzNkXHU2NjY5XHU3NTZhXHU3NmU0XHU3OGQwXHU4NTQzXHU4NmVlXHU1MzJhXHU1MzUxXHU1NDI2XHU1OTgzXHU1ZTg3XHU1''@;'; put 'put ''ZjdjXHU2MGIyXHU2MjQ5XHU2Mjc5XHU2MmFiXHU2NTkwXHU2YmQ0XHU2Y2NjXHU3NWIyXHU3NmFlXHU3ODkxXHU3OWQ4XHU3ZGNiXHU3Zjc3XHU4MGE1XHU4OGFiXHU4YWI5XHU4Y2JiXHU5MDdmXHU5NzVlXHU5OGRiXHU2YTBiXHU3YzM4XHU1MDk5XHU1YzNlXHU1ZmFlXHU2Nzg3XHU2YmQ4''@;'; put 'put ''XHU3NDM1XHU3NzA5XHU3ZjhlXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0OF1bRV1dPTM3ODg4K0UsTFszNzg4OCtFXT1CWzE0OF1bRV0pO2ZvcihCWzE0OV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWYzYlx1NjdjYVx1N2ExN1x1NTMzOVx1NzU4Ylx1OWFlZFx1NWY2Nlx1ODE5ZFx1ODNmMVx1ODA5OFx1NWYzY1x1NWZjNVx1NzU2Mlx1N2I0Nlx1OTAzY1x1Njg2N1x1NTllYlx1NWE5Ylx1N2Qx''@;'; put 'put ''MFx1NzY3ZVx1OGIyY1x1NGZmNVx1NWY2YVx1NmExOVx1NmMzN1x1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGE1NVx1OGM3OVx1NWVkZlx1NjNjZlx1NzVjNVx1NzlkMlx1ODJkN1x1OTMyOFx1OTJmMlx1ODQ5Y1x1ODZlZFx1OWMyZFx1NTRjMVx1NWY2Y1x1NjU4Y1x1NmQ1Y1x1NzAxNVx1''@;'; put 'put ''OGNhN1x1OGNkM1x1OTgzYlx1NjU0Zlx1NzRmNlx1NGUwZFx1NGVkOFx1NTdlMFx1NTkyYlx1NWE2Nlx1NWJjY1x1NTFhOFx1NWUwM1x1NWU5Y1x1NjAxNlx1NjI3Nlx1NjU3N1x1ZmZmZFx1NjVhN1x1NjY2ZVx1NmQ2ZVx1NzIzNlx1N2IyNlx1ODE1MFx1ODE5YVx1ODI5OVx1OGI1Y1x1OGNh''@;'; put 'put ''MFx1OGNlNlx1OGQ3NFx1OTYxY1x1OTY0NFx1NGZhZVx1NjRhYlx1NmI2Nlx1ODIxZVx1ODQ2MVx1ODU2YVx1OTBlOFx1NWMwMVx1Njk1M1x1OThhOFx1ODQ3YVx1ODU1N1x1NGYwZlx1NTI2Zlx1NWZhOVx1NWU0NVx1NjcwZFx1Nzk4Zlx1ODE3OVx1ODkwN1x1ODk4Nlx1NmRmNVx1NWYxN1x1''@;'; put 'put ''NjI1NVx1NmNiOFx1NGVjZlx1NzI2OVx1OWI5Mlx1NTIwNlx1NTQzYlx1NTY3NFx1NThiM1x1NjFhNFx1NjI2ZVx1NzExYVx1NTk2ZVx1N2M4OVx1N2NkZVx1N2QxYlx1OTZmMFx1NjU4N1x1ODA1ZVx1NGUxOVx1NGY3NVx1NTE3NVx1NTg0MFx1NWU2M1x1NWU3M1x1NWYwYVx1NjdjNFx1NGUy''@;'; put 'put ''Nlx1ODUzZFx1OTU4OVx1OTY1Ylx1N2M3M1x1OTgwMVx1NTBmYlx1NThjMVx1NzY1Nlx1NzhhN1x1NTIyNVx1NzdhNVx1ODUxMVx1N2I4Nlx1NTA0Zlx1NTkwOVx1NzI0N1x1N2JjN1x1N2RlOFx1OGZiYVx1OGZkNFx1OTA0ZFx1NGZiZlx1NTJjOVx1NWEyOVx1NWYwMVx1OTdhZFx1NGZkZFx1''@;'; put 'put ''ODIxN1x1OTJlYVx1NTcwM1x1NjM1NVx1NmI2OVx1NzUyYlx1ODhkY1x1OGYxNFx1N2E0Mlx1NTJkZlx1NTg5M1x1NjE1NVx1NjIwYVx1NjZhZVx1NmJjZFx1N2MzZlx1ODNlOVx1NTAyM1x1NGZmOFx1NTMwNVx1NTQ0Nlx1NTgzMVx1NTk0OVx1NWI5ZFx1NWNmMFx1NWNlZlx1NWQyOVx1NWU5''@;'; put 'put ''Nlx1NjJiMVx1NjM2N1x1NjUzZVx1NjViOVx1NjcwYlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDldW0VdXT0zODE0NCtFLExbMzgxNDQrRV09QlsxNDldW0VdKTtm''@;'; put 'put ''b3IoQlsxNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjZDVcdTZjZTFcdTcwZjlcdTc4MzJcdTdlMmJcdTgwZGVcdTgyYjNcdTg0MGNcdTg0ZWNcdTg3MDJcdTg5MTJcdThhMmFcdThjNGFcdTkwYTZcdTkyZDJcdTk4ZmRcdTlj''@;'; put 'put ''ZjNcdTlkNmNcdTRlNGZcdTRlYTFcdTUwOGRcdTUyNTZcdTU3NGFcdTU5YThcdTVlM2RcdTVmZDhcdTVmZDlcdTYyM2ZcdTY2YjRcdTY3MWJcdTY3ZDBcdTY4ZDJcdTUxOTJcdTdkMjFcdTgwYWFcdTgxYThcdThiMDBcdThjOGNcdThjYmZcdTkyN2VcdTk2MzJcdTU0MjBcdTk4MmNcdTUzMTdc''@;'; put 'put ''dTUwZDVcdTUzNWNcdTU4YThcdTY0YjJcdTY3MzRcdTcyNjdcdTc3NjZcdTdhNDZcdTkxZTZcdTUyYzNcdTZjYTFcdTZiODZcdTU4MDBcdTVlNGNcdTU5NTRcdTY3MmNcdTdmZmJcdTUxZTFcdTc2YzZcdWZmZmRcdTY0NjlcdTc4ZThcdTliNTRcdTllYmJcdTU3Y2JcdTU5YjlcdTY2MjdcdTY3''@;'; put 'put ''OWFcdTZiY2VcdTU0ZTlcdTY5ZDlcdTVlNTVcdTgxOWNcdTY3OTVcdTliYWFcdTY3ZmVcdTljNTJcdTY4NWRcdTRlYTZcdTRmZTNcdTUzYzhcdTYyYjlcdTY3MmJcdTZjYWJcdThmYzRcdTRmYWRcdTdlNmRcdTllYmZcdTRlMDdcdTYxNjJcdTZlODBcdTZmMmJcdTg1MTNcdTU0NzNcdTY3MmFc''@;'; put 'put ''dTliNDVcdTVkZjNcdTdiOTVcdTVjYWNcdTViYzZcdTg3MWNcdTZlNGFcdTg0ZDFcdTdhMTRcdTgxMDhcdTU5OTlcdTdjOGRcdTZjMTFcdTc3MjBcdTUyZDlcdTU5MjJcdTcxMjFcdTcyNWZcdTc3ZGJcdTk3MjdcdTlkNjFcdTY5MGJcdTVhN2ZcdTVhMThcdTUxYTVcdTU0MGRcdTU0N2RcdTY2''@;'; put 'put ''MGVcdTc2ZGZcdThmZjdcdTkyOThcdTljZjRcdTU5ZWFcdTcyNWRcdTZlYzVcdTUxNGRcdTY4YzlcdTdkYmZcdTdkZWNcdTk3NjJcdTllYmFcdTY0NzhcdTZhMjFcdTgzMDJcdTU5ODRcdTViNWZcdTZiZGJcdTczMWJcdTc2ZjJcdTdkYjJcdTgwMTdcdTg0OTlcdTUxMzJcdTY3MjhcdTllZDlc''@;'; put 'put ''dTc2ZWVcdTY3NjJcdTUyZmZcdTk5MDVcdTVjMjRcdTYyM2JcdTdjN2VcdThjYjBcdTU1NGZcdTYwYjZcdTdkMGJcdTk1ODBcdTUzMDFcdTRlNWZcdTUxYjZcdTU5MWNcdTcyM2FcdTgwMzZcdTkxY2VcdTVmMjVcdTc3ZTJcdTUzODRcdTVmNzlcdTdkMDRcdTg1YWNcdThhMzNcdThlOGRcdTk3''@;'; put 'put ''NTZcdTY3ZjNcdTg1YWVcdTk0NTNcdTYxMDlcdTYxMDhcdTZjYjlcdTc2NTJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTUwXVtFXV09Mzg0MDArRSxMWzM4NDAwK0Vd''@;'; put 'put ''PUJbMTUwXVtFXSk7Zm9yKEJbMTUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YWVkXHU4ZjM4XHU1NTJmXHU0ZjUxXHU1MTJhXHU1MmM3XHU1M2NiXHU1YmE1XHU1ZTdkXHU2MGEwXHU2MTgyXHU2M2Q2XHU2NzA5XHU2N2RhXHU2''@;'; put 'put ''ZTY3XHU2ZDhjXHU3MzM2XHU3MzM3XHU3NTMxXHU3OTUwXHU4OGQ1XHU4YTk4XHU5MDRhXHU5MDkxXHU5MGY1XHU5NmM0XHU4NzhkXHU1OTE1XHU0ZTg4XHU0ZjU5XHU0ZTBlXHU4YTg5XHU4ZjNmXHU5ODEwXHU1MGFkXHU1ZTdjXHU1OTk2XHU1YmI5XHU1ZWI4XHU2M2RhXHU2M2ZhXHU2NGMx''@;'; put 'put ''XHU2NmRjXHU2OTRhXHU2OWQ4XHU2ZDBiXHU2ZWI2XHU3MTk0XHU3NTI4XHU3YWFmXHU3ZjhhXHU4MDAwXHU4NDQ5XHU4NGM5XHU4OTgxXHU4YjIxXHU4ZTBhXHU5MDY1XHU5NjdkXHU5OTBhXHU2MTdlXHU2MjkxXHU2YjMyXHVmZmZkXHU2YzgzXHU2ZDc0XHU3ZmNjXHU3ZmZjXHU2ZGMwXHU3''@;'; put 'put ''Zjg1XHU4N2JhXHU4OGY4XHU2NzY1XHU4M2IxXHU5ODNjXHU5NmY3XHU2ZDFiXHU3ZDYxXHU4NDNkXHU5MTZhXHU0ZTcxXHU1Mzc1XHU1ZDUwXHU2YjA0XHU2ZmViXHU4NWNkXHU4NjJkXHU4OWE3XHU1MjI5XHU1NDBmXHU1YzY1XHU2NzRlXHU2OGE4XHU3NDA2XHU3NDgzXHU3NWUyXHU4OGNm''@;'; put 'put ''XHU4OGUxXHU5MWNjXHU5NmUyXHU5Njc4XHU1ZjhiXHU3Mzg3XHU3YWNiXHU4NDRlXHU2M2EwXHU3NTY1XHU1Mjg5XHU2ZDQxXHU2ZTljXHU3NDA5XHU3NTU5XHU3ODZiXHU3YzkyXHU5Njg2XHU3YWRjXHU5ZjhkXHU0ZmI2XHU2MTZlXHU2NWM1XHU4NjVjXHU0ZTg2XHU0ZWFlXHU1MGRhXHU0''@;'; put 'put ''ZTIxXHU1MWNjXHU1YmVlXHU2NTk5XHU2ODgxXHU2ZGJjXHU3MzFmXHU3NjQyXHU3N2FkXHU3YTFjXHU3Y2U3XHU4MjZmXHU4YWQyXHU5MDdjXHU5MWNmXHU5Njc1XHU5ODE4XHU1MjliXHU3ZGQxXHU1MDJiXHU1Mzk4XHU2Nzk3XHU2ZGNiXHU3MWQwXHU3NDMzXHU4MWU4XHU4ZjJhXHU5NmEz''@;'; put 'put ''XHU5YzU3XHU5ZTlmXHU3NDYwXHU1ODQxXHU2ZDk5XHU3ZDJmXHU5ODVlXHU0ZWU0XHU0ZjM2XHU0ZjhiXHU1MWI3XHU1MmIxXHU1ZGJhXHU2MDFjXHU3M2IyXHU3OTNjXHU4MmQzXHU5MjM0XHU5NmI3XHU5NmY2XHU5NzBhXHU5ZTk3XHU5ZjYyXHU2NmE2XHU2Yjc0XHU1MjE3XHU1MmEzXHU3''@;'; put 'put ''MGM4XHU4OGMyXHU1ZWM5XHU2MDRiXHU2MTkwXHU2ZjIzXHU3MTQ5XHU3YzNlXHU3ZGY0XHU4MDZmXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTUxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1MV1bRV1dPTM4NjU2''@;'; put 'put ''K0UsTFszODY1NitFXT1CWzE1MV1bRV0pO2ZvcihCWzE1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODRlZVx1OTAyM1x1OTMyY1x1NTQ0Mlx1OWI2Zlx1NmFkM1x1NzA4OVx1OGNjMlx1OGRlZlx1OTczMlx1NTJiNFx1NWE0MVx1''@;'; put 'put ''NWVjYVx1NWYwNFx1NjcxN1x1Njk3Y1x1Njk5NFx1NmQ2YVx1NmYwZlx1NzI2Mlx1NzJmY1x1N2JlZFx1ODAwMVx1ODA3ZVx1ODc0Ylx1OTBjZVx1NTE2ZFx1OWU5M1x1Nzk4NFx1ODA4Ylx1OTMzMlx1OGFkNlx1NTAyZFx1NTQ4Y1x1OGE3MVx1NmI2YVx1OGNjNFx1ODEwN1x1NjBkMVx1Njdh''@;'; put 'put ''MFx1OWRmMlx1NGU5OVx1NGU5OFx1OWMxMFx1OGE2Ylx1ODVjMVx1ODU2OFx1NjkwMFx1NmU3ZVx1Nzg5N1x1ODE1NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NWYwY1x1NGUxMFx1NGUxNVx1NGUyYVx1NGUzMVx1NGUzNlx1NGUzY1x1NGUzZlx1NGU0Mlx1NGU1Nlx1NGU1OFx1NGU4Mlx1NGU4NVx1OGM2Ylx1NGU4YVx1ODIxMlx1NWYwZFx1NGU4ZVx1NGU5ZVx1NGU5Zlx1NGVhMFx1NGVhMlx1NGViMFx1NGViM1x1NGViNlx1NGVjZVx1NGVjZFx1''@;'; put 'put ''NGVjNFx1NGVjNlx1NGVjMlx1NGVkN1x1NGVkZVx1NGVlZFx1NGVkZlx1NGVmN1x1NGYwOVx1NGY1YVx1NGYzMFx1NGY1Ylx1NGY1ZFx1NGY1N1x1NGY0N1x1NGY3Nlx1NGY4OFx1NGY4Zlx1NGY5OFx1NGY3Ylx1NGY2OVx1NGY3MFx1NGY5MVx1NGY2Zlx1NGY4Nlx1NGY5Nlx1NTExOFx1NGZk''@;'; put 'put ''NFx1NGZkZlx1NGZjZVx1NGZkOFx1NGZkYlx1NGZkMVx1NGZkYVx1NGZkMFx1NGZlNFx1NGZlNVx1NTAxYVx1NTAyOFx1NTAxNFx1NTAyYVx1NTAyNVx1NTAwNVx1NGYxY1x1NGZmNlx1NTAyMVx1NTAyOVx1NTAyY1x1NGZmZVx1NGZlZlx1NTAxMVx1NTAwNlx1NTA0M1x1NTA0N1x1NjcwM1x1''@;'; put 'put ''NTA1NVx1NTA1MFx1NTA0OFx1NTA1YVx1NTA1Nlx1NTA2Y1x1NTA3OFx1NTA4MFx1NTA5YVx1NTA4NVx1NTBiNFx1NTBiMlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsx''@;'; put 'put ''NTJdW0VdXT0zODkxMitFLExbMzg5MTIrRV09QlsxNTJdW0VdKTtmb3IoQlsxNTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUwYzlcdTUwY2FcdTUwYjNcdTUwYzJcdTUwZDZcdTUwZGVcdTUwZTVcdTUwZWRcdTUwZTNcdTUwZWVc''@;'; put 'put ''dTUwZjlcdTUwZjVcdTUxMDlcdTUxMDFcdTUxMDJcdTUxMTZcdTUxMTVcdTUxMTRcdTUxMWFcdTUxMjFcdTUxM2FcdTUxMzdcdTUxM2NcdTUxM2JcdTUxM2ZcdTUxNDBcdTUxNTJcdTUxNGNcdTUxNTRcdTUxNjJcdTdhZjhcdTUxNjlcdTUxNmFcdTUxNmVcdTUxODBcdTUxODJcdTU2ZDhcdTUx''@;'; put 'put ''OGNcdTUxODlcdTUxOGZcdTUxOTFcdTUxOTNcdTUxOTVcdTUxOTZcdTUxYTRcdTUxYTZcdTUxYTJcdTUxYTlcdTUxYWFcdTUxYWJcdTUxYjNcdTUxYjFcdTUxYjJcdTUxYjBcdTUxYjVcdTUxYmRcdTUxYzVcdTUxYzlcdTUxZGJcdTUxZTBcdTg2NTVcdTUxZTlcdTUxZWRcdWZmZmRcdTUxZjBc''@;'; put 'put ''dTUxZjVcdTUxZmVcdTUyMDRcdTUyMGJcdTUyMTRcdTUyMGVcdTUyMjdcdTUyMmFcdTUyMmVcdTUyMzNcdTUyMzlcdTUyNGZcdTUyNDRcdTUyNGJcdTUyNGNcdTUyNWVcdTUyNTRcdTUyNmFcdTUyNzRcdTUyNjlcdTUyNzNcdTUyN2ZcdTUyN2RcdTUyOGRcdTUyOTRcdTUyOTJcdTUyNzFcdTUy''@;'; put 'put ''ODhcdTUyOTFcdThmYThcdThmYTdcdTUyYWNcdTUyYWRcdTUyYmNcdTUyYjVcdTUyYzFcdTUyY2RcdTUyZDdcdTUyZGVcdTUyZTNcdTUyZTZcdTk4ZWRcdTUyZTBcdTUyZjNcdTUyZjVcdTUyZjhcdTUyZjlcdTUzMDZcdTUzMDhcdTc1MzhcdTUzMGRcdTUzMTBcdTUzMGZcdTUzMTVcdTUzMWFc''@;'; put 'put ''dTUzMjNcdTUzMmZcdTUzMzFcdTUzMzNcdTUzMzhcdTUzNDBcdTUzNDZcdTUzNDVcdTRlMTdcdTUzNDlcdTUzNGRcdTUxZDZcdTUzNWVcdTUzNjlcdTUzNmVcdTU5MThcdTUzN2JcdTUzNzdcdTUzODJcdTUzOTZcdTUzYTBcdTUzYTZcdTUzYTVcdTUzYWVcdTUzYjBcdTUzYjZcdTUzYzNcdTdj''@;'; put 'put ''MTJcdTk2ZDlcdTUzZGZcdTY2ZmNcdTcxZWVcdTUzZWVcdTUzZThcdTUzZWRcdTUzZmFcdTU0MDFcdTU0M2RcdTU0NDBcdTU0MmNcdTU0MmRcdTU0M2NcdTU0MmVcdTU0MzZcdTU0MjlcdTU0MWRcdTU0NGVcdTU0OGZcdTU0NzVcdTU0OGVcdTU0NWZcdTU0NzFcdTU0NzdcdTU0NzBcdTU0OTJc''@;'; put 'put ''dTU0N2JcdTU0ODBcdTU0NzZcdTU0ODRcdTU0OTBcdTU0ODZcdTU0YzdcdTU0YTJcdTU0YjhcdTU0YTVcdTU0YWNcdTU0YzRcdTU0YzhcdTU0YThcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1M11bRV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKGdlW0JbMTUzXVtFXV09MzkxNjgrRSxMWzM5MTY4K0VdPUJbMTUzXVtFXSk7Zm9yKEJbMTU0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGFiXHU1NGMyXHU1NGE0XHU1NGJlXHU1NGJjXHU1NGQ4XHU1NGU1XHU1NGU2''@;'; put 'put ''XHU1NTBmXHU1NTE0XHU1NGZkXHU1NGVlXHU1NGVkXHU1NGZhXHU1NGUyXHU1NTM5XHU1NTQwXHU1NTYzXHU1NTRjXHU1NTJlXHU1NTVjXHU1NTQ1XHU1NTU2XHU1NTU3XHU1NTM4XHU1NTMzXHU1NTVkXHU1NTk5XHU1NTgwXHU1NGFmXHU1NThhXHU1NTlmXHU1NTdiXHU1NTdlXHU1NTk4XHU1''@;'; put 'put ''NTllXHU1NWFlXHU1NTdjXHU1NTgzXHU1NWE5XHU1NTg3XHU1NWE4XHU1NWRhXHU1NWM1XHU1NWRmXHU1NWM0XHU1NWRjXHU1NWU0XHU1NWQ0XHU1NjE0XHU1NWY3XHU1NjE2XHU1NWZlXHU1NWZkXHU1NjFiXHU1NWY5XHU1NjRlXHU1NjUwXHU3MWRmXHU1NjM0XHU1NjM2XHU1NjMyXHU1NjM4''@;'; put 'put ''XHVmZmZkXHU1NjZiXHU1NjY0XHU1NjJmXHU1NjZjXHU1NjZhXHU1Njg2XHU1NjgwXHU1NjhhXHU1NmEwXHU1Njk0XHU1NjhmXHU1NmE1XHU1NmFlXHU1NmI2XHU1NmI0XHU1NmMyXHU1NmJjXHU1NmMxXHU1NmMzXHU1NmMwXHU1NmM4XHU1NmNlXHU1NmQxXHU1NmQzXHU1NmQ3XHU1NmVlXHU1''@;'; put 'put ''NmY5XHU1NzAwXHU1NmZmXHU1NzA0XHU1NzA5XHU1NzA4XHU1NzBiXHU1NzBkXHU1NzEzXHU1NzE4XHU1NzE2XHU1NWM3XHU1NzFjXHU1NzI2XHU1NzM3XHU1NzM4XHU1NzRlXHU1NzNiXHU1NzQwXHU1NzRmXHU1NzY5XHU1N2MwXHU1Nzg4XHU1NzYxXHU1NzdmXHU1Nzg5XHU1NzkzXHU1N2Ew''@;'; put 'put ''XHU1N2IzXHU1N2E0XHU1N2FhXHU1N2IwXHU1N2MzXHU1N2M2XHU1N2Q0XHU1N2QyXHU1N2QzXHU1ODBhXHU1N2Q2XHU1N2UzXHU1ODBiXHU1ODE5XHU1ODFkXHU1ODcyXHU1ODIxXHU1ODYyXHU1ODRiXHU1ODcwXHU2YmMwXHU1ODUyXHU1ODNkXHU1ODc5XHU1ODg1XHU1OGI5XHU1ODlmXHU1''@;'; put 'put ''OGFiXHU1OGJhXHU1OGRlXHU1OGJiXHU1OGI4XHU1OGFlXHU1OGM1XHU1OGQzXHU1OGQxXHU1OGQ3XHU1OGQ5XHU1OGQ4XHU1OGU1XHU1OGRjXHU1OGU0XHU1OGRmXHU1OGVmXHU1OGZhXHU1OGY5XHU1OGZiXHU1OGZjXHU1OGZkXHU1OTAyXHU1OTBhXHU1OTEwXHU1OTFiXHU2OGE2XHU1OTI1''@;'; put 'put ''XHU1OTJjXHU1OTJkXHU1OTMyXHU1OTM4XHU1OTNlXHU3YWQyXHU1OTU1XHU1OTUwXHU1OTRlXHU1OTVhXHU1OTU4XHU1OTYyXHU1OTYwXHU1OTY3XHU1OTZjXHU1OTY5XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTRd''@;'; put 'put ''W0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1NF1bRV1dPTM5NDI0K0UsTFszOTQyNCtFXT1CWzE1NF1bRV0pO2ZvcihCWzE1NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk3OFx1NTk4MVx1NTk5ZFx1NGY1ZVx1NGZhYlx1NTlh''@;'; put 'put ''M1x1NTliMlx1NTljNlx1NTllOFx1NTlkY1x1NTk4ZFx1NTlkOVx1NTlkYVx1NWEyNVx1NWExZlx1NWExMVx1NWExY1x1NWEwOVx1NWExYVx1NWE0MFx1NWE2Y1x1NWE0OVx1NWEzNVx1NWEzNlx1NWE2Mlx1NWE2YVx1NWE5YVx1NWFiY1x1NWFiZVx1NWFjYlx1NWFjMlx1NWFiZFx1NWFlM1x1''@;'; put 'put ''NWFkN1x1NWFlNlx1NWFlOVx1NWFkNlx1NWFmYVx1NWFmYlx1NWIwY1x1NWIwYlx1NWIxNlx1NWIzMlx1NWFkMFx1NWIyYVx1NWIzNlx1NWIzZVx1NWI0M1x1NWI0NVx1NWI0MFx1NWI1MVx1NWI1NVx1NWI1YVx1NWI1Ylx1NWI2NVx1NWI2OVx1NWI3MFx1NWI3M1x1NWI3NVx1NWI3OFx1NjU4''@;'; put 'put ''OFx1NWI3YVx1NWI4MFx1ZmZmZFx1NWI4M1x1NWJhNlx1NWJiOFx1NWJjM1x1NWJjN1x1NWJjOVx1NWJkNFx1NWJkMFx1NWJlNFx1NWJlNlx1NWJlMlx1NWJkZVx1NWJlNVx1NWJlYlx1NWJmMFx1NWJmNlx1NWJmM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwZFx1NWMxM1x1NWMyMFx1NWMyMlx1''@;'; put 'put ''NWMyOFx1NWMzOFx1NWMzOVx1NWM0MVx1NWM0Nlx1NWM0ZVx1NWM1M1x1NWM1MFx1NWM0Zlx1NWI3MVx1NWM2Y1x1NWM2ZVx1NGU2Mlx1NWM3Nlx1NWM3OVx1NWM4Y1x1NWM5MVx1NWM5NFx1NTk5Ylx1NWNhYlx1NWNiYlx1NWNiNlx1NWNiY1x1NWNiN1x1NWNjNVx1NWNiZVx1NWNjN1x1NWNk''@;'; put 'put ''OVx1NWNlOVx1NWNmZFx1NWNmYVx1NWNlZFx1NWQ4Y1x1NWNlYVx1NWQwYlx1NWQxNVx1NWQxN1x1NWQ1Y1x1NWQxZlx1NWQxYlx1NWQxMVx1NWQxNFx1NWQyMlx1NWQxYVx1NWQxOVx1NWQxOFx1NWQ0Y1x1NWQ1Mlx1NWQ0ZVx1NWQ0Ylx1NWQ2Y1x1NWQ3M1x1NWQ3Nlx1NWQ4N1x1NWQ4NFx1''@;'; put 'put ''NWQ4Mlx1NWRhMlx1NWQ5ZFx1NWRhY1x1NWRhZVx1NWRiZFx1NWQ5MFx1NWRiN1x1NWRiY1x1NWRjOVx1NWRjZFx1NWRkM1x1NWRkMlx1NWRkNlx1NWRkYlx1NWRlYlx1NWRmMlx1NWRmNVx1NWUwYlx1NWUxYVx1NWUxOVx1NWUxMVx1NWUxYlx1NWUzNlx1NWUzN1x1NWU0NFx1NWU0M1x1NWU0''@;'; put 'put ''MFx1NWU0ZVx1NWU1N1x1NWU1NFx1NWU1Zlx1NWU2Mlx1NWU2NFx1NWU0N1x1NWU3NVx1NWU3Nlx1NWU3YVx1OWViY1x1NWU3Zlx1NWVhMFx1NWVjMVx1NWVjMlx1NWVjOFx1NWVkMFx1NWVjZlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1NV0ubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUJbMTU1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTVdW0VdXT0zOTY4MCtFLExbMzk2ODArRV09QlsxNTVdW0VdKTtmb3IoQlsxNTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVlZDZcdTVlZTNcdTVlZGRcdTVl''@;'; put 'put ''ZGFcdTVlZGJcdTVlZTJcdTVlZTFcdTVlZThcdTVlZTlcdTVlZWNcdTVlZjFcdTVlZjNcdTVlZjBcdTVlZjRcdTVlZjhcdTVlZmVcdTVmMDNcdTVmMDlcdTVmNWRcdTVmNWNcdTVmMGJcdTVmMTFcdTVmMTZcdTVmMjlcdTVmMmRcdTVmMzhcdTVmNDFcdTVmNDhcdTVmNGNcdTVmNGVcdTVmMmZc''@;'; put 'put ''dTVmNTFcdTVmNTZcdTVmNTdcdTVmNTlcdTVmNjFcdTVmNmRcdTVmNzNcdTVmNzdcdTVmODNcdTVmODJcdTVmN2ZcdTVmOGFcdTVmODhcdTVmOTFcdTVmODdcdTVmOWVcdTVmOTlcdTVmOThcdTVmYTBcdTVmYThcdTVmYWRcdTVmYmNcdTVmZDZcdTVmZmJcdTVmZTRcdTVmZjhcdTVmZjFcdTVm''@;'; put 'put ''ZGRcdTYwYjNcdTVmZmZcdTYwMjFcdTYwNjBcdWZmZmRcdTYwMTlcdTYwMTBcdTYwMjlcdTYwMGVcdTYwMzFcdTYwMWJcdTYwMTVcdTYwMmJcdTYwMjZcdTYwMGZcdTYwM2FcdTYwNWFcdTYwNDFcdTYwNmFcdTYwNzdcdTYwNWZcdTYwNGFcdTYwNDZcdTYwNGRcdTYwNjNcdTYwNDNcdTYwNjRc''@;'; put 'put ''dTYwNDJcdTYwNmNcdTYwNmJcdTYwNTlcdTYwODFcdTYwOGRcdTYwZTdcdTYwODNcdTYwOWFcdTYwODRcdTYwOWJcdTYwOTZcdTYwOTdcdTYwOTJcdTYwYTdcdTYwOGJcdTYwZTFcdTYwYjhcdTYwZTBcdTYwZDNcdTYwYjRcdTVmZjBcdTYwYmRcdTYwYzZcdTYwYjVcdTYwZDhcdTYxNGRcdTYx''@;'; put 'put ''MTVcdTYxMDZcdTYwZjZcdTYwZjdcdTYxMDBcdTYwZjRcdTYwZmFcdTYxMDNcdTYxMjFcdTYwZmJcdTYwZjFcdTYxMGRcdTYxMGVcdTYxNDdcdTYxM2VcdTYxMjhcdTYxMjdcdTYxNGFcdTYxM2ZcdTYxM2NcdTYxMmNcdTYxMzRcdTYxM2RcdTYxNDJcdTYxNDRcdTYxNzNcdTYxNzdcdTYxNThc''@;'; put 'put ''dTYxNTlcdTYxNWFcdTYxNmJcdTYxNzRcdTYxNmZcdTYxNjVcdTYxNzFcdTYxNWZcdTYxNWRcdTYxNTNcdTYxNzVcdTYxOTlcdTYxOTZcdTYxODdcdTYxYWNcdTYxOTRcdTYxOWFcdTYxOGFcdTYxOTFcdTYxYWJcdTYxYWVcdTYxY2NcdTYxY2FcdTYxYzlcdTYxZjdcdTYxYzhcdTYxYzNcdTYx''@;'; put 'put ''YzZcdTYxYmFcdTYxY2JcdTdmNzlcdTYxY2RcdTYxZTZcdTYxZTNcdTYxZjZcdTYxZmFcdTYxZjRcdTYxZmZcdTYxZmRcdTYxZmNcdTYxZmVcdTYyMDBcdTYyMDhcdTYyMDlcdTYyMGRcdTYyMGNcdTYyMTRcdTYyMWJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTZd''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTU2XVtFXV09Mzk5MzYrRSxMWzM5OTM2K0VdPUJbMTU2XVtFXSk7Zm9yKEJbMTU3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MjFlXHU2''@;'; put 'put ''MjIxXHU2MjJhXHU2MjJlXHU2MjMwXHU2MjMyXHU2MjMzXHU2MjQxXHU2MjRlXHU2MjVlXHU2MjYzXHU2MjViXHU2MjYwXHU2MjY4XHU2MjdjXHU2MjgyXHU2Mjg5XHU2MjdlXHU2MjkyXHU2MjkzXHU2Mjk2XHU2MmQ0XHU2MjgzXHU2Mjk0XHU2MmQ3XHU2MmQxXHU2MmJiXHU2MmNmXHU2MmZm''@;'; put 'put ''XHU2MmM2XHU2NGQ0XHU2MmM4XHU2MmRjXHU2MmNjXHU2MmNhXHU2MmMyXHU2MmM3XHU2MjliXHU2MmM5XHU2MzBjXHU2MmVlXHU2MmYxXHU2MzI3XHU2MzAyXHU2MzA4XHU2MmVmXHU2MmY1XHU2MzUwXHU2MzNlXHU2MzRkXHU2NDFjXHU2MzRmXHU2Mzk2XHU2MzhlXHU2MzgwXHU2M2FiXHU2''@;'; put 'put ''Mzc2XHU2M2EzXHU2MzhmXHU2Mzg5XHU2MzlmXHU2M2I1XHU2MzZiXHVmZmZkXHU2MzY5XHU2M2JlXHU2M2U5XHU2M2MwXHU2M2M2XHU2M2UzXHU2M2M5XHU2M2QyXHU2M2Y2XHU2M2M0XHU2NDE2XHU2NDM0XHU2NDA2XHU2NDEzXHU2NDI2XHU2NDM2XHU2NTFkXHU2NDE3XHU2NDI4XHU2NDBm''@;'; put 'put ''XHU2NDY3XHU2NDZmXHU2NDc2XHU2NDRlXHU2NTJhXHU2NDk1XHU2NDkzXHU2NGE1XHU2NGE5XHU2NDg4XHU2NGJjXHU2NGRhXHU2NGQyXHU2NGM1XHU2NGM3XHU2NGJiXHU2NGQ4XHU2NGMyXHU2NGYxXHU2NGU3XHU4MjA5XHU2NGUwXHU2NGUxXHU2MmFjXHU2NGUzXHU2NGVmXHU2NTJjXHU2''@;'; put 'put ''NGY2XHU2NGY0XHU2NGYyXHU2NGZhXHU2NTAwXHU2NGZkXHU2NTE4XHU2NTFjXHU2NTA1XHU2NTI0XHU2NTIzXHU2NTJiXHU2NTM0XHU2NTM1XHU2NTM3XHU2NTM2XHU2NTM4XHU3NTRiXHU2NTQ4XHU2NTU2XHU2NTU1XHU2NTRkXHU2NTU4XHU2NTVlXHU2NTVkXHU2NTcyXHU2NTc4XHU2NTgy''@;'; put 'put ''XHU2NTgzXHU4YjhhXHU2NTliXHU2NTlmXHU2NWFiXHU2NWI3XHU2NWMzXHU2NWM2XHU2NWMxXHU2NWM0XHU2NWNjXHU2NWQyXHU2NWRiXHU2NWQ5XHU2NWUwXHU2NWUxXHU2NWYxXHU2NzcyXHU2NjBhXHU2NjAzXHU2NWZiXHU2NzczXHU2NjM1XHU2NjM2XHU2NjM0XHU2NjFjXHU2NjRmXHU2''@;'; put 'put ''NjQ0XHU2NjQ5XHU2NjQxXHU2NjVlXHU2NjVkXHU2NjY0XHU2NjY3XHU2NjY4XHU2NjVmXHU2NjYyXHU2NjcwXHU2NjgzXHU2Njg4XHU2NjhlXHU2Njg5XHU2Njg0XHU2Njk4XHU2NjlkXHU2NmMxXHU2NmI5XHU2NmM5XHU2NmJlXHU2NmJjXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMTU3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1N11bRV1dPTQwMTkyK0UsTFs0MDE5MitFXT1CWzE1N11bRV0pO2ZvcihCWzE1OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NjZjNFx1NjZiOFx1NjZkNlx1NjZkYVx1NjZlMFx1NjYzZlx1NjZlNlx1NjZlOVx1NjZmMFx1NjZmNVx1NjZmN1x1NjcwZlx1NjcxNlx1NjcxZVx1NjcyNlx1NjcyN1x1OTczOFx1NjcyZVx1NjczZlx1NjczNlx1Njc0MVx1NjczOFx1NjczN1x1Njc0Nlx1Njc1ZVx1Njc2MFx1Njc1''@;'; put 'put ''OVx1Njc2M1x1Njc2NFx1Njc4OVx1Njc3MFx1NjdhOVx1Njc3Y1x1Njc2YVx1Njc4Y1x1Njc4Ylx1NjdhNlx1NjdhMVx1Njc4NVx1NjdiN1x1NjdlZlx1NjdiNFx1NjdlY1x1NjdiM1x1NjdlOVx1NjdiOFx1NjdlNFx1NjdkZVx1NjdkZFx1NjdlMlx1NjdlZVx1NjdiOVx1NjdjZVx1NjdjNlx1''@;'; put 'put ''NjdlN1x1NmE5Y1x1NjgxZVx1Njg0Nlx1NjgyOVx1Njg0MFx1Njg0ZFx1NjgzMlx1Njg0ZVx1ZmZmZFx1NjhiM1x1NjgyYlx1Njg1OVx1Njg2M1x1Njg3N1x1Njg3Zlx1Njg5Zlx1Njg4Zlx1NjhhZFx1Njg5NFx1Njg5ZFx1Njg5Ylx1Njg4M1x1NmFhZVx1NjhiOVx1Njg3NFx1NjhiNVx1Njhh''@;'; put 'put ''MFx1NjhiYVx1NjkwZlx1Njg4ZFx1Njg3ZVx1NjkwMVx1NjhjYVx1NjkwOFx1NjhkOFx1NjkyMlx1NjkyNlx1NjhlMVx1NjkwY1x1NjhjZFx1NjhkNFx1NjhlN1x1NjhkNVx1NjkzNlx1NjkxMlx1NjkwNFx1NjhkN1x1NjhlM1x1NjkyNVx1NjhmOVx1NjhlMFx1NjhlZlx1NjkyOFx1NjkyYVx1''@;'; put 'put ''NjkxYVx1NjkyM1x1NjkyMVx1NjhjNlx1Njk3OVx1Njk3N1x1Njk1Y1x1Njk3OFx1Njk2Ylx1Njk1NFx1Njk3ZVx1Njk2ZVx1NjkzOVx1Njk3NFx1NjkzZFx1Njk1OVx1NjkzMFx1Njk2MVx1Njk1ZVx1Njk1ZFx1Njk4MVx1Njk2YVx1NjliMlx1NjlhZVx1NjlkMFx1NjliZlx1NjljMVx1Njlk''@;'; put 'put ''M1x1NjliZVx1NjljZVx1NWJlOFx1NjljYVx1NjlkZFx1NjliYlx1NjljM1x1NjlhN1x1NmEyZVx1Njk5MVx1NjlhMFx1Njk5Y1x1Njk5NVx1NjliNFx1NjlkZVx1NjllOFx1NmEwMlx1NmExYlx1NjlmZlx1NmIwYVx1NjlmOVx1NjlmMlx1NjllN1x1NmEwNVx1NjliMVx1NmExZVx1NjllZFx1''@;'; put 'put ''NmExNFx1NjllYlx1NmEwYVx1NmExMlx1NmFjMVx1NmEyM1x1NmExM1x1NmE0NFx1NmEwY1x1NmE3Mlx1NmEzNlx1NmE3OFx1NmE0N1x1NmE2Mlx1NmE1OVx1NmE2Nlx1NmE0OFx1NmEzOFx1NmEyMlx1NmE5MFx1NmE4ZFx1NmFhMFx1NmE4NFx1NmFhMlx1NmFhM1x1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNThdW0VdXT00MDQ0OCtFLExbNDA0NDgrRV09QlsxNThdW0VdKTtmb3IoQlsxNTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTZhOTdcdTg2MTdcdTZhYmJcdTZhYzNcdTZhYzJcdTZhYjhcdTZhYjNcdTZhYWNcdTZhZGVcdTZhZDFcdTZhZGZcdTZhYWFcdTZhZGFcdTZhZWFcdTZhZmJcdTZiMDVcdTg2MTZcdTZhZmFcdTZiMTJcdTZiMTZcdTliMzFcdTZiMWZcdTZiMzhcdTZiMzdcdTc2''@;'; put 'put ''ZGNcdTZiMzlcdTk4ZWVcdTZiNDdcdTZiNDNcdTZiNDlcdTZiNTBcdTZiNTlcdTZiNTRcdTZiNWJcdTZiNWZcdTZiNjFcdTZiNzhcdTZiNzlcdTZiN2ZcdTZiODBcdTZiODRcdTZiODNcdTZiOGRcdTZiOThcdTZiOTVcdTZiOWVcdTZiYTRcdTZiYWFcdTZiYWJcdTZiYWZcdTZiYjJcdTZiYjFc''@;'; put 'put ''dTZiYjNcdTZiYjdcdTZiYmNcdTZiYzZcdTZiY2JcdTZiZDNcdTZiZGZcdTZiZWNcdTZiZWJcdTZiZjNcdTZiZWZcdWZmZmRcdTllYmVcdTZjMDhcdTZjMTNcdTZjMTRcdTZjMWJcdTZjMjRcdTZjMjNcdTZjNWVcdTZjNTVcdTZjNjJcdTZjNmFcdTZjODJcdTZjOGRcdTZjOWFcdTZjODFcdTZj''@;'; put 'put ''OWJcdTZjN2VcdTZjNjhcdTZjNzNcdTZjOTJcdTZjOTBcdTZjYzRcdTZjZjFcdTZjZDNcdTZjYmRcdTZjZDdcdTZjYzVcdTZjZGRcdTZjYWVcdTZjYjFcdTZjYmVcdTZjYmFcdTZjZGJcdTZjZWZcdTZjZDlcdTZjZWFcdTZkMWZcdTg4NGRcdTZkMzZcdTZkMmJcdTZkM2RcdTZkMzhcdTZkMTlc''@;'; put 'put ''dTZkMzVcdTZkMzNcdTZkMTJcdTZkMGNcdTZkNjNcdTZkOTNcdTZkNjRcdTZkNWFcdTZkNzlcdTZkNTlcdTZkOGVcdTZkOTVcdTZmZTRcdTZkODVcdTZkZjlcdTZlMTVcdTZlMGFcdTZkYjVcdTZkYzdcdTZkZTZcdTZkYjhcdTZkYzZcdTZkZWNcdTZkZGVcdTZkY2NcdTZkZThcdTZkZDJcdTZk''@;'; put 'put ''YzVcdTZkZmFcdTZkZDlcdTZkZTRcdTZkZDVcdTZkZWFcdTZkZWVcdTZlMmRcdTZlNmVcdTZlMmVcdTZlMTlcdTZlNzJcdTZlNWZcdTZlM2VcdTZlMjNcdTZlNmJcdTZlMmJcdTZlNzZcdTZlNGRcdTZlMWZcdTZlNDNcdTZlM2FcdTZlNGVcdTZlMjRcdTZlZmZcdTZlMWRcdTZlMzhcdTZlODJc''@;'; put 'put ''dTZlYWFcdTZlOThcdTZlYzlcdTZlYjdcdTZlZDNcdTZlYmRcdTZlYWZcdTZlYzRcdTZlYjJcdTZlZDRcdTZlZDVcdTZlOGZcdTZlYTVcdTZlYzJcdTZlOWZcdTZmNDFcdTZmMTFcdTcwNGNcdTZlZWNcdTZlZjhcdTZlZmVcdTZmM2ZcdTZlZjJcdTZmMzFcdTZlZWZcdTZmMzJcdTZlY2NcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1OV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTU5XVtFXV09NDA3MDQrRSxMWzQwNzA0K0VdPUJbMTU5XVtFXSk7Zm9yKEJbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZjNlXHU2ZjEzXHU2ZWY3XHU2Zjg2XHU2ZjdhXHU2Zjc4XHU2ZjgxXHU2ZjgwXHU2ZjZmXHU2ZjViXHU2ZmYzXHU2ZjZkXHU2ZjgyXHU2ZjdjXHU2ZjU4XHU2ZjhlXHU2ZjkxXHU2ZmMyXHU2ZjY2XHU2ZmIzXHU2ZmEzXHU2ZmExXHU2''@;'; put 'put ''ZmE0XHU2ZmI5XHU2ZmM2XHU2ZmFhXHU2ZmRmXHU2ZmQ1XHU2ZmVjXHU2ZmQ0XHU2ZmQ4XHU2ZmYxXHU2ZmVlXHU2ZmRiXHU3MDA5XHU3MDBiXHU2ZmZhXHU3MDExXHU3MDAxXHU3MDBmXHU2ZmZlXHU3MDFiXHU3MDFhXHU2Zjc0XHU3MDFkXHU3MDE4XHU3MDFmXHU3MDMwXHU3MDNlXHU3MDMy''@;'; put 'put ''XHU3MDUxXHU3MDYzXHU3MDk5XHU3MDkyXHU3MGFmXHU3MGYxXHU3MGFjXHU3MGI4XHU3MGIzXHU3MGFlXHU3MGRmXHU3MGNiXHU3MGRkXHVmZmZkXHU3MGQ5XHU3MTA5XHU3MGZkXHU3MTFjXHU3MTE5XHU3MTY1XHU3MTU1XHU3MTg4XHU3MTY2XHU3MTYyXHU3MTRjXHU3MTU2XHU3MTZjXHU3''@;'; put 'put ''MThmXHU3MWZiXHU3MTg0XHU3MTk1XHU3MWE4XHU3MWFjXHU3MWQ3XHU3MWI5XHU3MWJlXHU3MWQyXHU3MWM5XHU3MWQ0XHU3MWNlXHU3MWUwXHU3MWVjXHU3MWU3XHU3MWY1XHU3MWZjXHU3MWY5XHU3MWZmXHU3MjBkXHU3MjEwXHU3MjFiXHU3MjI4XHU3MjJkXHU3MjJjXHU3MjMwXHU3MjMy''@;'; put 'put ''XHU3MjNiXHU3MjNjXHU3MjNmXHU3MjQwXHU3MjQ2XHU3MjRiXHU3MjU4XHU3Mjc0XHU3MjdlXHU3MjgyXHU3MjgxXHU3Mjg3XHU3MjkyXHU3Mjk2XHU3MmEyXHU3MmE3XHU3MmI5XHU3MmIyXHU3MmMzXHU3MmM2XHU3MmM0XHU3MmNlXHU3MmQyXHU3MmUyXHU3MmUwXHU3MmUxXHU3MmY5XHU3''@;'; put 'put ''MmY3XHU1MDBmXHU3MzE3XHU3MzBhXHU3MzFjXHU3MzE2XHU3MzFkXHU3MzM0XHU3MzJmXHU3MzI5XHU3MzI1XHU3MzNlXHU3MzRlXHU3MzRmXHU5ZWQ4XHU3MzU3XHU3MzZhXHU3MzY4XHU3MzcwXHU3Mzc4XHU3Mzc1XHU3MzdiXHU3MzdhXHU3M2M4XHU3M2IzXHU3M2NlXHU3M2JiXHU3M2Mw''@;'; put 'put ''XHU3M2U1XHU3M2VlXHU3M2RlXHU3NGEyXHU3NDA1XHU3NDZmXHU3NDI1XHU3M2Y4XHU3NDMyXHU3NDNhXHU3NDU1XHU3NDNmXHU3NDVmXHU3NDU5XHU3NDQxXHU3NDVjXHU3NDY5XHU3NDcwXHU3NDYzXHU3NDZhXHU3NDc2XHU3NDdlXHU3NDhiXHU3NDllXHU3NGE3XHU3NGNhXHU3NGNmXHU3''@;'; put 'put ''NGQ0XHU3M2YxXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyNF1bRV1dPTU3MzQ0K0UsTFs1NzM0NCtFXT1CWzIyNF1bRV0pO2ZvcihCWzIyNV09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRlMFx1NzRlM1x1NzRlN1x1NzRlOVx1NzRlZVx1NzRmMlx1NzRmMFx1NzRmMVx1NzRmOFx1NzRmN1x1NzUwNFx1NzUwM1x1NzUwNVx1NzUwY1x1NzUwZVx1NzUwZFx1NzUxNVx1NzUxM1x1NzUxZVx1NzUyNlx1''@;'; put 'put ''NzUyY1x1NzUzY1x1NzU0NFx1NzU0ZFx1NzU0YVx1NzU0OVx1NzU1Ylx1NzU0Nlx1NzU1YVx1NzU2OVx1NzU2NFx1NzU2N1x1NzU2Ylx1NzU2ZFx1NzU3OFx1NzU3Nlx1NzU4Nlx1NzU4N1x1NzU3NFx1NzU4YVx1NzU4OVx1NzU4Mlx1NzU5NFx1NzU5YVx1NzU5ZFx1NzVhNVx1NzVhM1x1NzVj''@;'; put 'put ''Mlx1NzViM1x1NzVjM1x1NzViNVx1NzViZFx1NzViOFx1NzViY1x1NzViMVx1NzVjZFx1NzVjYVx1NzVkMlx1NzVkOVx1NzVlM1x1NzVkZVx1NzVmZVx1NzVmZlx1ZmZmZFx1NzVmY1x1NzYwMVx1NzVmMFx1NzVmYVx1NzVmMlx1NzVmM1x1NzYwYlx1NzYwZFx1NzYwOVx1NzYxZlx1NzYyN1x1''@;'; put 'put ''NzYyMFx1NzYyMVx1NzYyMlx1NzYyNFx1NzYzNFx1NzYzMFx1NzYzYlx1NzY0N1x1NzY0OFx1NzY0Nlx1NzY1Y1x1NzY1OFx1NzY2MVx1NzY2Mlx1NzY2OFx1NzY2OVx1NzY2YVx1NzY2N1x1NzY2Y1x1NzY3MFx1NzY3Mlx1NzY3Nlx1NzY3OFx1NzY3Y1x1NzY4MFx1NzY4M1x1NzY4OFx1NzY4''@;'; put 'put ''Ylx1NzY4ZVx1NzY5Nlx1NzY5M1x1NzY5OVx1NzY5YVx1NzZiMFx1NzZiNFx1NzZiOFx1NzZiOVx1NzZiYVx1NzZjMlx1NzZjZFx1NzZkNlx1NzZkMlx1NzZkZVx1NzZlMVx1NzZlNVx1NzZlN1x1NzZlYVx1ODYyZlx1NzZmYlx1NzcwOFx1NzcwN1x1NzcwNFx1NzcyOVx1NzcyNFx1NzcxZVx1''@;'; put 'put ''NzcyNVx1NzcyNlx1NzcxYlx1NzczN1x1NzczOFx1Nzc0N1x1Nzc1YVx1Nzc2OFx1Nzc2Ylx1Nzc1Ylx1Nzc2NVx1Nzc3Zlx1Nzc3ZVx1Nzc3OVx1Nzc4ZVx1Nzc4Ylx1Nzc5MVx1NzdhMFx1Nzc5ZVx1NzdiMFx1NzdiNlx1NzdiOVx1NzdiZlx1NzdiY1x1NzdiZFx1NzdiYlx1NzdjN1x1Nzdj''@;'; put 'put ''ZFx1NzdkN1x1NzdkYVx1NzdkY1x1NzdlM1x1NzdlZVx1NzdmY1x1NzgwY1x1NzgxMlx1NzkyNlx1NzgyMFx1NzkyYVx1Nzg0NVx1Nzg4ZVx1Nzg3NFx1Nzg4Nlx1Nzg3Y1x1Nzg5YVx1Nzg4Y1x1NzhhM1x1NzhiNVx1NzhhYVx1NzhhZlx1NzhkMVx1NzhjNlx1NzhjYlx1NzhkNFx1NzhiZVx1''@;'; put 'put ''NzhiY1x1NzhjNVx1NzhjYVx1NzhlY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjVdW0VdXT01NzYwMCtFLExbNTc2MDArRV09QlsyMjVdW0VdKTtmb3IoQlsyMjZd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc4ZTdcdTc4ZGFcdTc4ZmRcdTc4ZjRcdTc5MDdcdTc5MTJcdTc5MTFcdTc5MTlcdTc5MmNcdTc5MmJcdTc5NDBcdTc5NjBcdTc5NTdcdTc5NWZcdTc5NWFcdTc5NTVcdTc5NTNcdTc5N2Fc''@;'; put 'put ''dTc5N2ZcdTc5OGFcdTc5OWRcdTc5YTdcdTlmNGJcdTc5YWFcdTc5YWVcdTc5YjNcdTc5YjlcdTc5YmFcdTc5YzlcdTc5ZDVcdTc5ZTdcdTc5ZWNcdTc5ZTFcdTc5ZTNcdTdhMDhcdTdhMGRcdTdhMThcdTdhMTlcdTdhMjBcdTdhMWZcdTc5ODBcdTdhMzFcdTdhM2JcdTdhM2VcdTdhMzdcdTdh''@;'; put 'put ''NDNcdTdhNTdcdTdhNDlcdTdhNjFcdTdhNjJcdTdhNjlcdTlmOWRcdTdhNzBcdTdhNzlcdTdhN2RcdTdhODhcdTdhOTdcdTdhOTVcdTdhOThcdTdhOTZcdTdhYTlcdTdhYzhcdTdhYjBcdWZmZmRcdTdhYjZcdTdhYzVcdTdhYzRcdTdhYmZcdTkwODNcdTdhYzdcdTdhY2FcdTdhY2RcdTdhY2Zc''@;'; put 'put ''dTdhZDVcdTdhZDNcdTdhZDlcdTdhZGFcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTZcdTdhZWRcdTdhZjBcdTdiMDJcdTdiMGZcdTdiMGFcdTdiMDZcdTdiMzNcdTdiMThcdTdiMTlcdTdiMWVcdTdiMzVcdTdiMjhcdTdiMzZcdTdiNTBcdTdiN2FcdTdiMDRcdTdiNGRcdTdiMGJcdTdiNGNcdTdi''@;'; put 'put ''NDVcdTdiNzVcdTdiNjVcdTdiNzRcdTdiNjdcdTdiNzBcdTdiNzFcdTdiNmNcdTdiNmVcdTdiOWRcdTdiOThcdTdiOWZcdTdiOGRcdTdiOWNcdTdiOWFcdTdiOGJcdTdiOTJcdTdiOGZcdTdiNWRcdTdiOTlcdTdiY2JcdTdiYzFcdTdiY2NcdTdiY2ZcdTdiYjRcdTdiYzZcdTdiZGRcdTdiZTlc''@;'; put 'put ''dTdjMTFcdTdjMTRcdTdiZTZcdTdiZTVcdTdjNjBcdTdjMDBcdTdjMDdcdTdjMTNcdTdiZjNcdTdiZjdcdTdjMTdcdTdjMGRcdTdiZjZcdTdjMjNcdTdjMjdcdTdjMmFcdTdjMWZcdTdjMzdcdTdjMmJcdTdjM2RcdTdjNGNcdTdjNDNcdTdjNTRcdTdjNGZcdTdjNDBcdTdjNTBcdTdjNThcdTdj''@;'; put 'put ''NWZcdTdjNjRcdTdjNTZcdTdjNjVcdTdjNmNcdTdjNzVcdTdjODNcdTdjOTBcdTdjYTRcdTdjYWRcdTdjYTJcdTdjYWJcdTdjYTFcdTdjYThcdTdjYjNcdTdjYjJcdTdjYjFcdTdjYWVcdTdjYjlcdTdjYmRcdTdjYzBcdTdjYzVcdTdjYzJcdTdjZDhcdTdjZDJcdTdjZGNcdTdjZTJcdTliM2Jc''@;'; put 'put ''dTdjZWZcdTdjZjJcdTdjZjRcdTdjZjZcdTdjZmFcdTdkMDZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI2XVtFXV09NTc4NTYrRSxMWzU3ODU2K0VdPUJbMjI2XVtF''@;'; put 'put ''XSk7Zm9yKEJbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZDAyXHU3ZDFjXHU3ZDE1XHU3ZDBhXHU3ZDQ1XHU3ZDRiXHU3ZDJlXHU3ZDMyXHU3ZDNmXHU3ZDM1XHU3ZDQ2XHU3ZDczXHU3ZDU2XHU3ZDRlXHU3ZDcyXHU3ZDY4''@;'; put 'put ''XHU3ZDZlXHU3ZDRmXHU3ZDYzXHU3ZDkzXHU3ZDg5XHU3ZDViXHU3ZDhmXHU3ZDdkXHU3ZDliXHU3ZGJhXHU3ZGFlXHU3ZGEzXHU3ZGI1XHU3ZGM3XHU3ZGJkXHU3ZGFiXHU3ZTNkXHU3ZGEyXHU3ZGFmXHU3ZGRjXHU3ZGI4XHU3ZDlmXHU3ZGIwXHU3ZGQ4XHU3ZGRkXHU3ZGU0XHU3ZGRlXHU3''@;'; put 'put ''ZGZiXHU3ZGYyXHU3ZGUxXHU3ZTA1XHU3ZTBhXHU3ZTIzXHU3ZTIxXHU3ZTEyXHU3ZTMxXHU3ZTFmXHU3ZTA5XHU3ZTBiXHU3ZTIyXHU3ZTQ2XHU3ZTY2XHU3ZTNiXHU3ZTM1XHU3ZTM5XHU3ZTQzXHU3ZTM3XHVmZmZkXHU3ZTMyXHU3ZTNhXHU3ZTY3XHU3ZTVkXHU3ZTU2XHU3ZTVlXHU3ZTU5''@;'; put 'put ''XHU3ZTVhXHU3ZTc5XHU3ZTZhXHU3ZTY5XHU3ZTdjXHU3ZTdiXHU3ZTgzXHU3ZGQ1XHU3ZTdkXHU4ZmFlXHU3ZTdmXHU3ZTg4XHU3ZTg5XHU3ZThjXHU3ZTkyXHU3ZTkwXHU3ZTkzXHU3ZTk0XHU3ZTk2XHU3ZThlXHU3ZTliXHU3ZTljXHU3ZjM4XHU3ZjNhXHU3ZjQ1XHU3ZjRjXHU3ZjRkXHU3''@;'; put 'put ''ZjRlXHU3ZjUwXHU3ZjUxXHU3ZjU1XHU3ZjU0XHU3ZjU4XHU3ZjVmXHU3ZjYwXHU3ZjY4XHU3ZjY5XHU3ZjY3XHU3Zjc4XHU3ZjgyXHU3Zjg2XHU3ZjgzXHU3Zjg4XHU3Zjg3XHU3ZjhjXHU3Zjk0XHU3ZjllXHU3ZjlkXHU3ZjlhXHU3ZmEzXHU3ZmFmXHU3ZmIyXHU3ZmI5XHU3ZmFlXHU3ZmI2''@;'; put 'put ''XHU3ZmI4XHU4YjcxXHU3ZmM1XHU3ZmM2XHU3ZmNhXHU3ZmQ1XHU3ZmQ0XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmYzXHU3ZmY5XHU5OGRjXHU4MDA2XHU4MDA0XHU4MDBiXHU4MDEyXHU4MDE4XHU4MDE5XHU4MDFjXHU4MDIxXHU4MDI4XHU4MDNmXHU4MDNiXHU4MDRhXHU4MDQ2XHU4MDUyXHU4''@;'; put 'put ''MDU4XHU4MDVhXHU4MDVmXHU4MDYyXHU4MDY4XHU4MDczXHU4MDcyXHU4MDcwXHU4MDc2XHU4MDc5XHU4MDdkXHU4MDdmXHU4MDg0XHU4MDg2XHU4MDg1XHU4MDliXHU4MDkzXHU4MDlhXHU4MGFkXHU1MTkwXHU4MGFjXHU4MGRiXHU4MGU1XHU4MGQ5XHU4MGRkXHU4MGM0XHU4MGRhXHU4MGQ2''@;'; put 'put ''XHU4MTA5XHU4MGVmXHU4MGYxXHU4MTFiXHU4MTI5XHU4MTIzXHU4MTJmXHU4MTRiXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyN11bRV1dPTU4MTEyK0UsTFs1ODEx''@;'; put 'put ''MitFXT1CWzIyN11bRV0pO2ZvcihCWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY4Ylx1ODE0Nlx1ODEzZVx1ODE1M1x1ODE1MVx1ODBmY1x1ODE3MVx1ODE2ZVx1ODE2NVx1ODE2Nlx1ODE3NFx1ODE4M1x1ODE4OFx1ODE4''@;'; put 'put ''YVx1ODE4MFx1ODE4Mlx1ODFhMFx1ODE5NVx1ODFhNFx1ODFhM1x1ODE1Zlx1ODE5M1x1ODFhOVx1ODFiMFx1ODFiNVx1ODFiZVx1ODFiOFx1ODFiZFx1ODFjMFx1ODFjMlx1ODFiYVx1ODFjOVx1ODFjZFx1ODFkMVx1ODFkOVx1ODFkOFx1ODFjOFx1ODFkYVx1ODFkZlx1ODFlMFx1ODFlN1x1''@;'; put 'put ''ODFmYVx1ODFmYlx1ODFmZVx1ODIwMVx1ODIwMlx1ODIwNVx1ODIwN1x1ODIwYVx1ODIwZFx1ODIxMFx1ODIxNlx1ODIyOVx1ODIyYlx1ODIzOFx1ODIzM1x1ODI0MFx1ODI1OVx1ODI1OFx1ODI1ZFx1ODI1YVx1ODI1Zlx1ODI2NFx1ZmZmZFx1ODI2Mlx1ODI2OFx1ODI2YVx1ODI2Ylx1ODIy''@;'; put 'put ''ZVx1ODI3MVx1ODI3N1x1ODI3OFx1ODI3ZVx1ODI4ZFx1ODI5Mlx1ODJhYlx1ODI5Zlx1ODJiYlx1ODJhY1x1ODJlMVx1ODJlM1x1ODJkZlx1ODJkMlx1ODJmNFx1ODJmM1x1ODJmYVx1ODM5M1x1ODMwM1x1ODJmYlx1ODJmOVx1ODJkZVx1ODMwNlx1ODJkY1x1ODMwOVx1ODJkOVx1ODMzNVx1''@;'; put 'put ''ODMzNFx1ODMxNlx1ODMzMlx1ODMzMVx1ODM0MFx1ODMzOVx1ODM1MFx1ODM0NVx1ODMyZlx1ODMyYlx1ODMxN1x1ODMxOFx1ODM4NVx1ODM5YVx1ODNhYVx1ODM5Zlx1ODNhMlx1ODM5Nlx1ODMyM1x1ODM4ZVx1ODM4N1x1ODM4YVx1ODM3Y1x1ODNiNVx1ODM3M1x1ODM3NVx1ODNhMFx1ODM4''@;'; put 'put ''OVx1ODNhOFx1ODNmNFx1ODQxM1x1ODNlYlx1ODNjZVx1ODNmZFx1ODQwM1x1ODNkOFx1ODQwYlx1ODNjMVx1ODNmN1x1ODQwN1x1ODNlMFx1ODNmMlx1ODQwZFx1ODQyMlx1ODQyMFx1ODNiZFx1ODQzOFx1ODUwNlx1ODNmYlx1ODQ2ZFx1ODQyYVx1ODQzY1x1ODU1YVx1ODQ4NFx1ODQ3N1x1''@;'; put 'put ''ODQ2Ylx1ODRhZFx1ODQ2ZVx1ODQ4Mlx1ODQ2OVx1ODQ0Nlx1ODQyY1x1ODQ2Zlx1ODQ3OVx1ODQzNVx1ODRjYVx1ODQ2Mlx1ODRiOVx1ODRiZlx1ODQ5Zlx1ODRkOVx1ODRjZFx1ODRiYlx1ODRkYVx1ODRkMFx1ODRjMVx1ODRjNlx1ODRkNlx1ODRhMVx1ODUyMVx1ODRmZlx1ODRmNFx1ODUx''@;'; put 'put ''N1x1ODUxOFx1ODUyY1x1ODUxZlx1ODUxNVx1ODUxNFx1ODRmY1x1ODU0MFx1ODU2M1x1ODU1OFx1ODU0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjhdW0VdXT01''@;'; put 'put ''ODM2OCtFLExbNTgzNjgrRV09QlsyMjhdW0VdKTtmb3IoQlsyMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NDFcdTg2MDJcdTg1NGJcdTg1NTVcdTg1ODBcdTg1YTRcdTg1ODhcdTg1OTFcdTg1OGFcdTg1YThcdTg1NmRcdTg1''@;'; put 'put ''OTRcdTg1OWJcdTg1ZWFcdTg1ODdcdTg1OWNcdTg1NzdcdTg1N2VcdTg1OTBcdTg1YzlcdTg1YmFcdTg1Y2ZcdTg1YjlcdTg1ZDBcdTg1ZDVcdTg1ZGRcdTg1ZTVcdTg1ZGNcdTg1ZjlcdTg2MGFcdTg2MTNcdTg2MGJcdTg1ZmVcdTg1ZmFcdTg2MDZcdTg2MjJcdTg2MWFcdTg2MzBcdTg2M2Zc''@;'; put 'put ''dTg2NGRcdTRlNTVcdTg2NTRcdTg2NWZcdTg2NjdcdTg2NzFcdTg2OTNcdTg2YTNcdTg2YTlcdTg2YWFcdTg2OGJcdTg2OGNcdTg2YjZcdTg2YWZcdTg2YzRcdTg2YzZcdTg2YjBcdTg2YzlcdTg4MjNcdTg2YWJcdTg2ZDRcdTg2ZGVcdTg2ZTlcdTg2ZWNcdWZmZmRcdTg2ZGZcdTg2ZGJcdTg2''@;'; put 'put ''ZWZcdTg3MTJcdTg3MDZcdTg3MDhcdTg3MDBcdTg3MDNcdTg2ZmJcdTg3MTFcdTg3MDlcdTg3MGRcdTg2ZjlcdTg3MGFcdTg3MzRcdTg3M2ZcdTg3MzdcdTg3M2JcdTg3MjVcdTg3MjlcdTg3MWFcdTg3NjBcdTg3NWZcdTg3NzhcdTg3NGNcdTg3NGVcdTg3NzRcdTg3NTdcdTg3NjhcdTg3NmVc''@;'; put 'put ''dTg3NTlcdTg3NTNcdTg3NjNcdTg3NmFcdTg4MDVcdTg3YTJcdTg3OWZcdTg3ODJcdTg3YWZcdTg3Y2JcdTg3YmRcdTg3YzBcdTg3ZDBcdTk2ZDZcdTg3YWJcdTg3YzRcdTg3YjNcdTg3YzdcdTg3YzZcdTg3YmJcdTg3ZWZcdTg3ZjJcdTg3ZTBcdTg4MGZcdTg4MGRcdTg3ZmVcdTg3ZjZcdTg3''@;'; put 'put ''ZjdcdTg4MGVcdTg3ZDJcdTg4MTFcdTg4MTZcdTg4MTVcdTg4MjJcdTg4MjFcdTg4MzFcdTg4MzZcdTg4MzlcdTg4MjdcdTg4M2JcdTg4NDRcdTg4NDJcdTg4NTJcdTg4NTlcdTg4NWVcdTg4NjJcdTg4NmJcdTg4ODFcdTg4N2VcdTg4OWVcdTg4NzVcdTg4N2RcdTg4YjVcdTg4NzJcdTg4ODJc''@;'; put 'put ''dTg4OTdcdTg4OTJcdTg4YWVcdTg4OTlcdTg4YTJcdTg4OGRcdTg4YTRcdTg4YjBcdTg4YmZcdTg4YjFcdTg4YzNcdTg4YzRcdTg4ZDRcdTg4ZDhcdTg4ZDlcdTg4ZGRcdTg4ZjlcdTg5MDJcdTg4ZmNcdTg4ZjRcdTg4ZThcdTg4ZjJcdTg5MDRcdTg5MGNcdTg5MGFcdTg5MTNcdTg5NDNcdTg5''@;'; put 'put ''MWVcdTg5MjVcdTg5MmFcdTg5MmJcdTg5NDFcdTg5NDRcdTg5M2JcdTg5MzZcdTg5MzhcdTg5NGNcdTg5MWRcdTg5NjBcdTg5NWVcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdl''@;'; put 'put ''W0JbMjI5XVtFXV09NTg2MjQrRSxMWzU4NjI0K0VdPUJbMjI5XVtFXSk7Zm9yKEJbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OTY2XHU4OTY0XHU4OTZkXHU4OTZhXHU4OTZmXHU4OTc0XHU4OTc3XHU4OTdlXHU4OTgzXHU4''@;'; put 'put ''OTg4XHU4OThhXHU4OTkzXHU4OTk4XHU4OWExXHU4OWE5XHU4OWE2XHU4OWFjXHU4OWFmXHU4OWIyXHU4OWJhXHU4OWJkXHU4OWJmXHU4OWMwXHU4OWRhXHU4OWRjXHU4OWRkXHU4OWU3XHU4OWY0XHU4OWY4XHU4YTAzXHU4YTE2XHU4YTEwXHU4YTBjXHU4YTFiXHU4YTFkXHU4YTI1XHU4YTM2''@;'; put 'put ''XHU4YTQxXHU4YTViXHU4YTUyXHU4YTQ2XHU4YTQ4XHU4YTdjXHU4YTZkXHU4YTZjXHU4YTYyXHU4YTg1XHU4YTgyXHU4YTg0XHU4YWE4XHU4YWExXHU4YTkxXHU4YWE1XHU4YWE2XHU4YTlhXHU4YWEzXHU4YWM0XHU4YWNkXHU4YWMyXHU4YWRhXHU4YWViXHU4YWYzXHU4YWU3XHVmZmZkXHU4''@;'; put 'put ''YWU0XHU4YWYxXHU4YjE0XHU4YWUwXHU4YWUyXHU4YWY3XHU4YWRlXHU4YWRiXHU4YjBjXHU4YjA3XHU4YjFhXHU4YWUxXHU4YjE2XHU4YjEwXHU4YjE3XHU4YjIwXHU4YjMzXHU5N2FiXHU4YjI2XHU4YjJiXHU4YjNlXHU4YjI4XHU4YjQxXHU4YjRjXHU4YjRmXHU4YjRlXHU4YjQ5XHU4YjU2''@;'; put 'put ''XHU4YjViXHU4YjVhXHU4YjZiXHU4YjVmXHU4YjZjXHU4YjZmXHU4Yjc0XHU4YjdkXHU4YjgwXHU4YjhjXHU4YjhlXHU4YjkyXHU4YjkzXHU4Yjk2XHU4Yjk5XHU4YjlhXHU4YzNhXHU4YzQxXHU4YzNmXHU4YzQ4XHU4YzRjXHU4YzRlXHU4YzUwXHU4YzU1XHU4YzYyXHU4YzZjXHU4Yzc4XHU4''@;'; put 'put ''YzdhXHU4YzgyXHU4Yzg5XHU4Yzg1XHU4YzhhXHU4YzhkXHU4YzhlXHU4Yzk0XHU4YzdjXHU4Yzk4XHU2MjFkXHU4Y2FkXHU4Y2FhXHU4Y2JkXHU4Y2IyXHU4Y2IzXHU4Y2FlXHU4Y2I2XHU4Y2M4XHU4Y2MxXHU4Y2U0XHU4Y2UzXHU4Y2RhXHU4Y2ZkXHU4Y2ZhXHU4Y2ZiXHU4ZDA0XHU4ZDA1''@;'; put 'put ''XHU4ZDBhXHU4ZDA3XHU4ZDBmXHU4ZDBkXHU4ZDEwXHU5ZjRlXHU4ZDEzXHU4Y2NkXHU4ZDE0XHU4ZDE2XHU4ZDY3XHU4ZDZkXHU4ZDcxXHU4ZDczXHU4ZDgxXHU4ZDk5XHU4ZGMyXHU4ZGJlXHU4ZGJhXHU4ZGNmXHU4ZGRhXHU4ZGQ2XHU4ZGNjXHU4ZGRiXHU4ZGNiXHU4ZGVhXHU4ZGViXHU4''@;'; put 'put ''ZGRmXHU4ZGUzXHU4ZGZjXHU4ZTA4XHU4ZTA5XHU4ZGZmXHU4ZTFkXHU4ZTFlXHU4ZTEwXHU4ZTFmXHU4ZTQyXHU4ZTM1XHU4ZTMwXHU4ZTM0XHU4ZTRhXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzBdW0VdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihnZVtCWzIzMF1bRV1dPTU4ODgwK0UsTFs1ODg4MCtFXT1CWzIzMF1bRV0pO2ZvcihCWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGU0N1x1OGU0OVx1OGU0Y1x1OGU1MFx1OGU0OFx1OGU1OVx1OGU2NFx1''@;'; put 'put ''OGU2MFx1OGUyYVx1OGU2M1x1OGU1NVx1OGU3Nlx1OGU3Mlx1OGU3Y1x1OGU4MVx1OGU4N1x1OGU4NVx1OGU4NFx1OGU4Ylx1OGU4YVx1OGU5M1x1OGU5MVx1OGU5NFx1OGU5OVx1OGVhYVx1OGVhMVx1OGVhY1x1OGViMFx1OGVjNlx1OGViMVx1OGViZVx1OGVjNVx1OGVjOFx1OGVjYlx1OGVk''@;'; put 'put ''Ylx1OGVlM1x1OGVmY1x1OGVmYlx1OGVlYlx1OGVmZVx1OGYwYVx1OGYwNVx1OGYxNVx1OGYxMlx1OGYxOVx1OGYxM1x1OGYxY1x1OGYxZlx1OGYxYlx1OGYwY1x1OGYyNlx1OGYzM1x1OGYzYlx1OGYzOVx1OGY0NVx1OGY0Mlx1OGYzZVx1OGY0Y1x1OGY0OVx1OGY0Nlx1OGY0ZVx1OGY1N1x1''@;'; put 'put ''OGY1Y1x1ZmZmZFx1OGY2Mlx1OGY2M1x1OGY2NFx1OGY5Y1x1OGY5Zlx1OGZhM1x1OGZhZFx1OGZhZlx1OGZiN1x1OGZkYVx1OGZlNVx1OGZlMlx1OGZlYVx1OGZlZlx1OTA4N1x1OGZmNFx1OTAwNVx1OGZmOVx1OGZmYVx1OTAxMVx1OTAxNVx1OTAyMVx1OTAwZFx1OTAxZVx1OTAxNlx1OTAw''@;'; put 'put ''Ylx1OTAyN1x1OTAzNlx1OTAzNVx1OTAzOVx1OGZmOFx1OTA0Zlx1OTA1MFx1OTA1MVx1OTA1Mlx1OTAwZVx1OTA0OVx1OTAzZVx1OTA1Nlx1OTA1OFx1OTA1ZVx1OTA2OFx1OTA2Zlx1OTA3Nlx1OTZhOFx1OTA3Mlx1OTA4Mlx1OTA3ZFx1OTA4MVx1OTA4MFx1OTA4YVx1OTA4OVx1OTA4Zlx1''@;'; put 'put ''OTBhOFx1OTBhZlx1OTBiMVx1OTBiNVx1OTBlMlx1OTBlNFx1NjI0OFx1OTBkYlx1OTEwMlx1OTExMlx1OTExOVx1OTEzMlx1OTEzMFx1OTE0YVx1OTE1Nlx1OTE1OFx1OTE2M1x1OTE2NVx1OTE2OVx1OTE3M1x1OTE3Mlx1OTE4Ylx1OTE4OVx1OTE4Mlx1OTFhMlx1OTFhYlx1OTFhZlx1OTFh''@;'; put 'put ''YVx1OTFiNVx1OTFiNFx1OTFiYVx1OTFjMFx1OTFjMVx1OTFjOVx1OTFjYlx1OTFkMFx1OTFkNlx1OTFkZlx1OTFlMVx1OTFkYlx1OTFmY1x1OTFmNVx1OTFmNlx1OTIxZVx1OTFmZlx1OTIxNFx1OTIyY1x1OTIxNVx1OTIxMVx1OTI1ZVx1OTI1N1x1OTI0NVx1OTI0OVx1OTI2NFx1OTI0OFx1''@;'; put 'put ''OTI5NVx1OTIzZlx1OTI0Ylx1OTI1MFx1OTI5Y1x1OTI5Nlx1OTI5M1x1OTI5Ylx1OTI1YVx1OTJjZlx1OTJiOVx1OTJiN1x1OTJlOVx1OTMwZlx1OTJmYVx1OTM0NFx1OTMyZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJb''@;'; put 'put ''MjMxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzFdW0VdXT01OTEzNitFLExbNTkxMzYrRV09QlsyMzFdW0VdKTtmb3IoQlsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMTlcdTkzMjJcdTkzMWFcdTkzMjNcdTkzM2Fc''@;'; put 'put ''dTkzMzVcdTkzM2JcdTkzNWNcdTkzNjBcdTkzN2NcdTkzNmVcdTkzNTZcdTkzYjBcdTkzYWNcdTkzYWRcdTkzOTRcdTkzYjlcdTkzZDZcdTkzZDdcdTkzZThcdTkzZTVcdTkzZDhcdTkzYzNcdTkzZGRcdTkzZDBcdTkzYzhcdTkzZTRcdTk0MWFcdTk0MTRcdTk0MTNcdTk0MDNcdTk0MDdcdTk0''@;'; put 'put ''MTBcdTk0MzZcdTk0MmJcdTk0MzVcdTk0MjFcdTk0M2FcdTk0NDFcdTk0NTJcdTk0NDRcdTk0NWJcdTk0NjBcdTk0NjJcdTk0NWVcdTk0NmFcdTkyMjlcdTk0NzBcdTk0NzVcdTk0NzdcdTk0N2RcdTk0NWFcdTk0N2NcdTk0N2VcdTk0ODFcdTk0N2ZcdTk1ODJcdTk1ODdcdTk1OGFcdTk1OTRc''@;'; put 'put ''dTk1OTZcdTk1OThcdTk1OTlcdWZmZmRcdTk1YTBcdTk1YThcdTk1YTdcdTk1YWRcdTk1YmNcdTk1YmJcdTk1YjlcdTk1YmVcdTk1Y2FcdTZmZjZcdTk1YzNcdTk1Y2RcdTk1Y2NcdTk1ZDVcdTk1ZDRcdTk1ZDZcdTk1ZGNcdTk1ZTFcdTk1ZTVcdTk1ZTJcdTk2MjFcdTk2MjhcdTk2MmVcdTk2''@;'; put 'put ''MmZcdTk2NDJcdTk2NGNcdTk2NGZcdTk2NGJcdTk2NzdcdTk2NWNcdTk2NWVcdTk2NWRcdTk2NWZcdTk2NjZcdTk2NzJcdTk2NmNcdTk2OGRcdTk2OThcdTk2OTVcdTk2OTdcdTk2YWFcdTk2YTdcdTk2YjFcdTk2YjJcdTk2YjBcdTk2YjRcdTk2YjZcdTk2YjhcdTk2YjlcdTk2Y2VcdTk2Y2Jc''@;'; put 'put ''dTk2YzlcdTk2Y2RcdTg5NGRcdTk2ZGNcdTk3MGRcdTk2ZDVcdTk2ZjlcdTk3MDRcdTk3MDZcdTk3MDhcdTk3MTNcdTk3MGVcdTk3MTFcdTk3MGZcdTk3MTZcdTk3MTlcdTk3MjRcdTk3MmFcdTk3MzBcdTk3MzlcdTk3M2RcdTk3M2VcdTk3NDRcdTk3NDZcdTk3NDhcdTk3NDJcdTk3NDlcdTk3''@;'; put 'put ''NWNcdTk3NjBcdTk3NjRcdTk3NjZcdTk3NjhcdTUyZDJcdTk3NmJcdTk3NzFcdTk3NzlcdTk3ODVcdTk3N2NcdTk3ODFcdTk3N2FcdTk3ODZcdTk3OGJcdTk3OGZcdTk3OTBcdTk3OWNcdTk3YThcdTk3YTZcdTk3YTNcdTk3YjNcdTk3YjRcdTk3YzNcdTk3YzZcdTk3YzhcdTk3Y2JcdTk3ZGNc''@;'; put 'put ''dTk3ZWRcdTlmNGZcdTk3ZjJcdTdhZGZcdTk3ZjZcdTk3ZjVcdTk4MGZcdTk4MGNcdTk4MzhcdTk4MjRcdTk4MjFcdTk4MzdcdTk4M2RcdTk4NDZcdTk4NGZcdTk4NGJcdTk4NmJcdTk4NmZcdTk4NzBcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzJdLmxlbmd0aDsr''@;'; put 'put ''K0UpNjU1MzMhPT1CWzIzMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMyXVtFXV09NTkzOTIrRSxMWzU5MzkyK0VdPUJbMjMyXVtFXSk7Zm9yKEJbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODcxXHU5ODc0XHU5ODcz''@;'; put 'put ''XHU5OGFhXHU5OGFmXHU5OGIxXHU5OGI2XHU5OGM0XHU5OGMzXHU5OGM2XHU5OGU5XHU5OGViXHU5OTAzXHU5OTA5XHU5OTEyXHU5OTE0XHU5OTE4XHU5OTIxXHU5OTFkXHU5OTFlXHU5OTI0XHU5OTIwXHU5OTJjXHU5OTJlXHU5OTNkXHU5OTNlXHU5OTQyXHU5OTQ5XHU5OTQ1XHU5OTUwXHU5''@;'; put 'put ''OTRiXHU5OTUxXHU5OTUyXHU5OTRjXHU5OTU1XHU5OTk3XHU5OTk4XHU5OWE1XHU5OWFkXHU5OWFlXHU5OWJjXHU5OWRmXHU5OWRiXHU5OWRkXHU5OWQ4XHU5OWQxXHU5OWVkXHU5OWVlXHU5OWYxXHU5OWYyXHU5OWZiXHU5OWY4XHU5YTAxXHU5YTBmXHU5YTA1XHU5OWUyXHU5YTE5XHU5YTJi''@;'; put 'put ''XHU5YTM3XHU5YTQ1XHU5YTQyXHU5YTQwXHU5YTQzXHVmZmZkXHU5YTNlXHU5YTU1XHU5YTRkXHU5YTViXHU5YTU3XHU5YTVmXHU5YTYyXHU5YTY1XHU5YTY0XHU5YTY5XHU5YTZiXHU5YTZhXHU5YWFkXHU5YWIwXHU5YWJjXHU5YWMwXHU5YWNmXHU5YWQxXHU5YWQzXHU5YWQ0XHU5YWRlXHU5''@;'; put 'put ''YWRmXHU5YWUyXHU5YWUzXHU5YWU2XHU5YWVmXHU5YWViXHU5YWVlXHU5YWY0XHU5YWYxXHU5YWY3XHU5YWZiXHU5YjA2XHU5YjE4XHU5YjFhXHU5YjFmXHU5YjIyXHU5YjIzXHU5YjI1XHU5YjI3XHU5YjI4XHU5YjI5XHU5YjJhXHU5YjJlXHU5YjJmXHU5YjMyXHU5YjQ0XHU5YjQzXHU5YjRm''@;'; put 'put ''XHU5YjRkXHU5YjRlXHU5YjUxXHU5YjU4XHU5Yjc0XHU5YjkzXHU5YjgzXHU5YjkxXHU5Yjk2XHU5Yjk3XHU5YjlmXHU5YmEwXHU5YmE4XHU5YmI0XHU5YmMwXHU5YmNhXHU5YmI5XHU5YmM2XHU5YmNmXHU5YmQxXHU5YmQyXHU5YmUzXHU5YmUyXHU5YmU0XHU5YmQ0XHU5YmUxXHU5YzNhXHU5''@;'; put 'put ''YmYyXHU5YmYxXHU5YmYwXHU5YzE1XHU5YzE0XHU5YzA5XHU5YzEzXHU5YzBjXHU5YzA2XHU5YzA4XHU5YzEyXHU5YzBhXHU5YzA0XHU5YzJlXHU5YzFiXHU5YzI1XHU5YzI0XHU5YzIxXHU5YzMwXHU5YzQ3XHU5YzMyXHU5YzQ2XHU5YzNlXHU5YzVhXHU5YzYwXHU5YzY3XHU5Yzc2XHU5Yzc4''@;'; put 'put ''XHU5Y2U3XHU5Y2VjXHU5Y2YwXHU5ZDA5XHU5ZDA4XHU5Y2ViXHU5ZDAzXHU5ZDA2XHU5ZDJhXHU5ZDI2XHU5ZGFmXHU5ZDIzXHU5ZDFmXHU5ZDQ0XHU5ZDE1XHU5ZDEyXHU5ZDQxXHU5ZDNmXHU5ZDNlXHU5ZDQ2XHU5ZDQ4XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJb''@;'; put 'put ''MjMzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzM11bRV1dPTU5NjQ4K0UsTFs1OTY0OCtFXT1CWzIzM11bRV0pO2ZvcihCWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQ1''@;'; put 'put ''ZFx1OWQ1ZVx1OWQ2NFx1OWQ1MVx1OWQ1MFx1OWQ1OVx1OWQ3Mlx1OWQ4OVx1OWQ4N1x1OWRhYlx1OWQ2Zlx1OWQ3YVx1OWQ5YVx1OWRhNFx1OWRhOVx1OWRiMlx1OWRjNFx1OWRjMVx1OWRiYlx1OWRiOFx1OWRiYVx1OWRjNlx1OWRjZlx1OWRjMlx1OWRkOVx1OWRkM1x1OWRmOFx1OWRlNlx1''@;'; put 'put ''OWRlZFx1OWRlZlx1OWRmZFx1OWUxYVx1OWUxYlx1OWUxZVx1OWU3NVx1OWU3OVx1OWU3ZFx1OWU4MVx1OWU4OFx1OWU4Ylx1OWU4Y1x1OWU5Mlx1OWU5NVx1OWU5MVx1OWU5ZFx1OWVhNVx1OWVhOVx1OWViOFx1OWVhYVx1OWVhZFx1OTc2MVx1OWVjY1x1OWVjZVx1OWVjZlx1OWVkMFx1OWVk''@;'; put 'put ''NFx1OWVkY1x1OWVkZVx1OWVkZFx1OWVlMFx1OWVlNVx1OWVlOFx1OWVlZlx1ZmZmZFx1OWVmNFx1OWVmNlx1OWVmN1x1OWVmOVx1OWVmYlx1OWVmY1x1OWVmZFx1OWYwN1x1OWYwOFx1NzZiN1x1OWYxNVx1OWYyMVx1OWYyY1x1OWYzZVx1OWY0YVx1OWY1Mlx1OWY1NFx1OWY2M1x1OWY1Zlx1''@;'; put 'put ''OWY2MFx1OWY2MVx1OWY2Nlx1OWY2N1x1OWY2Y1x1OWY2YVx1OWY3N1x1OWY3Mlx1OWY3Nlx1OWY5NVx1OWY5Y1x1OWZhMFx1NTgyZlx1NjljN1x1OTA1OVx1NzQ2NFx1NTFkY1x1NzE5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLEU9MDtFIT1CWzIzNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzRdW0VdXT01OTkwNCtFLExbNTk5MDQrRV09QlsyMzRdW0VdKTtmb3IoQlsyMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJc''@;'; put 'put ''dTRmZmZcdTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGFcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0''@;'; put 'put ''OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGZcdWZmZmRcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZc''@;'; put 'put ''dTVjYmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYy''@;'; put 'put ''YTZcdTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJc''@;'; put 'put ''dTY3YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdTZkOTZcdTZkYWNcdTZk''@;'; put 'put ''Y2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZlMzlcdTZlNWNcdTZlMjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcwODVcdTcwYWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjFcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzN11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM3XVtFXV09NjA2NzIrRSxMWzYwNjcyK0VdPUJbMjM3XVtFXSk7Zm9yKEJbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3Njli''@;'; put 'put ''XHU3NmE2XHVmYTE3XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5XHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3''@;'; put 'put ''ZjQ3XHU3ZmExXHVmYTFlXHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5XHVmZmZkXHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2''@;'; put 'put ''XHU4YjUzXHU4YjdmXHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5''@;'; put 'put ''MjNjXHU5MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0''@;'; put 'put ''XHU5M2M2XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5XHU5''@;'; put 'put ''YWRjXHU5Yjc1XHU5YjcyXHU5YjhmXHU5YmIxXHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxXHVmZmZkXHVmZmZkXHUyMTcwXHUyMTcxXHUyMTcyXHUyMTczXHUyMTc0XHUyMTc1XHUyMTc2XHUyMTc3XHUyMTc4XHUyMTc5XHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAy''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzOF1bRV1dPTYwOTI4K0UsTFs2MDkyOCtFXT1CWzIzOF1bRV0pO2ZvcihCWzI1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1ZmZlMlx1ZmZl''@;'; put 'put ''NFx1ZmYwN1x1ZmYwMlx1MzIzMVx1MjExNlx1MjEyMVx1MjIzNVx1N2U4YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYzMVx1NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1''@;'; put 'put ''NGY5YVx1NGY5NFx1NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YVx1ZmZmZFx1NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIxNVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3''@;'; put 'put ''Mlx1NTM5M1x1NTNiMlx1NTNkZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRmZlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1NTdjN1x1ZmEwZlx1ZmExMFx1NTg5ZVx1NThiMlx1NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1''@;'; put 'put ''NzUyZlx1NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRiOVx1NWRkMFx1NWYyMVx1NWYzNFx1NWY2N1x1NWZiN1x1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjEx''@;'; put 'put ''MVx1NjEzN1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNmNVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYzYlx1NjYwOVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1''@;'; put 'put ''NjcwZVx1ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1NjllMlx1NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQw''@;'; put 'put ''NFx1NmQ4N1x1NmQ2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNTBdW0VdXT02NGUzK0UsTFs2NGUzK0VdPUJbMjUwXVtFXSk7Zm9yKEJbMjUxXT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBm''@;'; put 'put ''XHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3''@;'; put 'put ''NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2XHVmYTE3XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5XHVmZmZkXHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4''@;'; put 'put ''XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3ZmExXHVmYTFlXHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5XHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4''@;'; put 'put ''YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4YjdmXHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2''@;'; put 'put ''XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5MjNjXHU5MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5''@;'; put 'put ''MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0XHU5M2M2XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3''@;'; put 'put ''XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjUxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNTFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI1MV1bRV1dPTY0MjU2K0UsTFs2NDI1NitFXT1CWzI1MV1bRV0pO2ZvcihCWzI1''@;'; put 'put ''Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNTJdW0VdXT02NDUxMitFLExbNjQ1MTIrRV09QlsyNTJd''@;'; put 'put ''W0VdKTtyZXR1cm57ZW5jOmdlLGRlYzpMfX0oKSxKZVs5MzZdPWZ1bmN0aW9uKCl7dmFyIEUsTD1bXSxnZT17fSxCPVtdO2ZvcihCWzBdPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgx''@;'; put 'put ''OFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzBdW0VdXT0wK0UsTFswK0VdPUJb''@;'; put 'put ''MF1bRV0pO2ZvcihCWzEyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGUwMlx1NGUwNFx1NGUwNVx1NGUwNlx1NGUwZlx1NGUxMlx1NGUxN1x1NGUxZlx1NGUyMFx1NGUyMVx1NGUyM1x1NGUyNlx1NGUyOVx1NGUyZVx1NGUyZlx1''@;'; put 'put ''NGUzMVx1NGUzM1x1NGUzNVx1NGUzN1x1NGUzY1x1NGU0MFx1NGU0MVx1NGU0Mlx1NGU0NFx1NGU0Nlx1NGU0YVx1NGU1MVx1NGU1NVx1NGU1N1x1NGU1YVx1NGU1Ylx1NGU2Mlx1NGU2M1x1NGU2NFx1NGU2NVx1NGU2N1x1NGU2OFx1NGU2YVx1NGU2Ylx1NGU2Y1x1NGU2ZFx1NGU2ZVx1NGU2''@;'; put 'put ''Zlx1NGU3Mlx1NGU3NFx1NGU3NVx1NGU3Nlx1NGU3N1x1NGU3OFx1NGU3OVx1NGU3YVx1NGU3Ylx1NGU3Y1x1NGU3ZFx1NGU3Zlx1NGU4MFx1NGU4MVx1NGU4Mlx1NGU4M1x1NGU4NFx1NGU4NVx1NGU4N1x1NGU4YVx1ZmZmZFx1NGU5MFx1NGU5Nlx1NGU5N1x1NGU5OVx1NGU5Y1x1NGU5ZFx1''@;'; put 'put ''NGU5ZVx1NGVhM1x1NGVhYVx1NGVhZlx1NGViMFx1NGViMVx1NGViNFx1NGViNlx1NGViN1x1NGViOFx1NGViOVx1NGViY1x1NGViZFx1NGViZVx1NGVjOFx1NGVjY1x1NGVjZlx1NGVkMFx1NGVkMlx1NGVkYVx1NGVkYlx1NGVkY1x1NGVlMFx1NGVlMlx1NGVlNlx1NGVlN1x1NGVlOVx1NGVl''@;'; put 'put ''ZFx1NGVlZVx1NGVlZlx1NGVmMVx1NGVmNFx1NGVmOFx1NGVmOVx1NGVmYVx1NGVmY1x1NGVmZVx1NGYwMFx1NGYwMlx1NGYwM1x1NGYwNFx1NGYwNVx1NGYwNlx1NGYwN1x1NGYwOFx1NGYwYlx1NGYwY1x1NGYxMlx1NGYxM1x1NGYxNFx1NGYxNVx1NGYxNlx1NGYxY1x1NGYxZFx1NGYyMVx1''@;'; put 'put ''NGYyM1x1NGYyOFx1NGYyOVx1NGYyY1x1NGYyZFx1NGYyZVx1NGYzMVx1NGYzM1x1NGYzNVx1NGYzN1x1NGYzOVx1NGYzYlx1NGYzZVx1NGYzZlx1NGY0MFx1NGY0MVx1NGY0Mlx1NGY0NFx1NGY0NVx1NGY0N1x1NGY0OFx1NGY0OVx1NGY0YVx1NGY0Ylx1NGY0Y1x1NGY1Mlx1NGY1NFx1NGY1''@;'; put 'put ''Nlx1NGY2MVx1NGY2Mlx1NGY2Nlx1NGY2OFx1NGY2YVx1NGY2Ylx1NGY2ZFx1NGY2ZVx1NGY3MVx1NGY3Mlx1NGY3NVx1NGY3N1x1NGY3OFx1NGY3OVx1NGY3YVx1NGY3ZFx1NGY4MFx1NGY4MVx1NGY4Mlx1NGY4NVx1NGY4Nlx1NGY4N1x1NGY4YVx1NGY4Y1x1NGY4ZVx1NGY5MFx1NGY5Mlx1''@;'; put 'put ''NGY5M1x1NGY5NVx1NGY5Nlx1NGY5OFx1NGY5OVx1NGY5YVx1NGY5Y1x1NGY5ZVx1NGY5Zlx1NGZhMVx1NGZhMlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEyOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTI5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMjldW0VdXT0zMzAyNCtFLExb''@;'; put 'put ''MzMwMjQrRV09QlsxMjldW0VdKTtmb3IoQlsxMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmYTRcdTRmYWJcdTRmYWRcdTRmYjBcdTRmYjFcdTRmYjJcdTRmYjNcdTRmYjRcdTRmYjZcdTRmYjdcdTRmYjhcdTRmYjlcdTRmYmFc''@;'; put 'put ''dTRmYmJcdTRmYmNcdTRmYmRcdTRmYmVcdTRmYzBcdTRmYzFcdTRmYzJcdTRmYzZcdTRmYzdcdTRmYzhcdTRmYzlcdTRmY2JcdTRmY2NcdTRmY2RcdTRmZDJcdTRmZDNcdTRmZDRcdTRmZDVcdTRmZDZcdTRmZDlcdTRmZGJcdTRmZTBcdTRmZTJcdTRmZTRcdTRmZTVcdTRmZTdcdTRmZWJcdTRm''@;'; put 'put ''ZWNcdTRmZjBcdTRmZjJcdTRmZjRcdTRmZjVcdTRmZjZcdTRmZjdcdTRmZjlcdTRmZmJcdTRmZmNcdTRmZmRcdTRmZmZcdTUwMDBcdTUwMDFcdTUwMDJcdTUwMDNcdTUwMDRcdTUwMDVcdTUwMDZcdTUwMDdcdTUwMDhcdTUwMDlcdTUwMGFcdWZmZmRcdTUwMGJcdTUwMGVcdTUwMTBcdTUwMTFc''@;'; put 'put ''dTUwMTNcdTUwMTVcdTUwMTZcdTUwMTdcdTUwMWJcdTUwMWRcdTUwMWVcdTUwMjBcdTUwMjJcdTUwMjNcdTUwMjRcdTUwMjdcdTUwMmJcdTUwMmZcdTUwMzBcdTUwMzFcdTUwMzJcdTUwMzNcdTUwMzRcdTUwMzVcdTUwMzZcdTUwMzdcdTUwMzhcdTUwMzlcdTUwM2JcdTUwM2RcdTUwM2ZcdTUw''@;'; put 'put ''NDBcdTUwNDFcdTUwNDJcdTUwNDRcdTUwNDVcdTUwNDZcdTUwNDlcdTUwNGFcdTUwNGJcdTUwNGRcdTUwNTBcdTUwNTFcdTUwNTJcdTUwNTNcdTUwNTRcdTUwNTZcdTUwNTdcdTUwNThcdTUwNTlcdTUwNWJcdTUwNWRcdTUwNWVcdTUwNWZcdTUwNjBcdTUwNjFcdTUwNjJcdTUwNjNcdTUwNjRc''@;'; put 'put ''dTUwNjZcdTUwNjdcdTUwNjhcdTUwNjlcdTUwNmFcdTUwNmJcdTUwNmRcdTUwNmVcdTUwNmZcdTUwNzBcdTUwNzFcdTUwNzJcdTUwNzNcdTUwNzRcdTUwNzVcdTUwNzhcdTUwNzlcdTUwN2FcdTUwN2NcdTUwN2RcdTUwODFcdTUwODJcdTUwODNcdTUwODRcdTUwODZcdTUwODdcdTUwODlcdTUw''@;'; put 'put ''OGFcdTUwOGJcdTUwOGNcdTUwOGVcdTUwOGZcdTUwOTBcdTUwOTFcdTUwOTJcdTUwOTNcdTUwOTRcdTUwOTVcdTUwOTZcdTUwOTdcdTUwOThcdTUwOTlcdTUwOWFcdTUwOWJcdTUwOWNcdTUwOWRcdTUwOWVcdTUwOWZcdTUwYTBcdTUwYTFcdTUwYTJcdTUwYTRcdTUwYTZcdTUwYWFcdTUwYWJc''@;'; put 'put ''dTUwYWRcdTUwYWVcdTUwYWZcdTUwYjBcdTUwYjFcdTUwYjNcdTUwYjRcdTUwYjVcdTUwYjZcdTUwYjdcdTUwYjhcdTUwYjlcdTUwYmNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTMwXVtF''@;'; put 'put ''XV09MzMyODArRSxMWzMzMjgwK0VdPUJbMTMwXVtFXSk7Zm9yKEJbMTMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MGJkXHU1MGJlXHU1MGJmXHU1MGMwXHU1MGMxXHU1MGMyXHU1MGMzXHU1MGM0XHU1MGM1XHU1MGM2XHU1MGM3''@;'; put 'put ''XHU1MGM4XHU1MGM5XHU1MGNhXHU1MGNiXHU1MGNjXHU1MGNkXHU1MGNlXHU1MGQwXHU1MGQxXHU1MGQyXHU1MGQzXHU1MGQ0XHU1MGQ1XHU1MGQ3XHU1MGQ4XHU1MGQ5XHU1MGRiXHU1MGRjXHU1MGRkXHU1MGRlXHU1MGRmXHU1MGUwXHU1MGUxXHU1MGUyXHU1MGUzXHU1MGU0XHU1MGU1XHU1''@;'; put 'put ''MGU4XHU1MGU5XHU1MGVhXHU1MGViXHU1MGVmXHU1MGYwXHU1MGYxXHU1MGYyXHU1MGY0XHU1MGY2XHU1MGY3XHU1MGY4XHU1MGY5XHU1MGZhXHU1MGZjXHU1MGZkXHU1MGZlXHU1MGZmXHU1MTAwXHU1MTAxXHU1MTAyXHU1MTAzXHU1MTA0XHU1MTA1XHU1MTA4XHVmZmZkXHU1MTA5XHU1MTBh''@;'; put 'put ''XHU1MTBjXHU1MTBkXHU1MTBlXHU1MTBmXHU1MTEwXHU1MTExXHU1MTEzXHU1MTE0XHU1MTE1XHU1MTE2XHU1MTE3XHU1MTE4XHU1MTE5XHU1MTFhXHU1MTFiXHU1MTFjXHU1MTFkXHU1MTFlXHU1MTFmXHU1MTIwXHU1MTIyXHU1MTIzXHU1MTI0XHU1MTI1XHU1MTI2XHU1MTI3XHU1MTI4XHU1''@;'; put 'put ''MTI5XHU1MTJhXHU1MTJiXHU1MTJjXHU1MTJkXHU1MTJlXHU1MTJmXHU1MTMwXHU1MTMxXHU1MTMyXHU1MTMzXHU1MTM0XHU1MTM1XHU1MTM2XHU1MTM3XHU1MTM4XHU1MTM5XHU1MTNhXHU1MTNiXHU1MTNjXHU1MTNkXHU1MTNlXHU1MTQyXHU1MTQ3XHU1MTRhXHU1MTRjXHU1MTRlXHU1MTRm''@;'; put 'put ''XHU1MTUwXHU1MTUyXHU1MTUzXHU1MTU3XHU1MTU4XHU1MTU5XHU1MTViXHU1MTVkXHU1MTVlXHU1MTVmXHU1MTYwXHU1MTYxXHU1MTYzXHU1MTY0XHU1MTY2XHU1MTY3XHU1MTY5XHU1MTZhXHU1MTZmXHU1MTcyXHU1MTdhXHU1MTdlXHU1MTdmXHU1MTgzXHU1MTg0XHU1MTg2XHU1MTg3XHU1''@;'; put 'put ''MThhXHU1MThiXHU1MThlXHU1MThmXHU1MTkwXHU1MTkxXHU1MTkzXHU1MTk0XHU1MTk4XHU1MTlhXHU1MTlkXHU1MTllXHU1MTlmXHU1MWExXHU1MWEzXHU1MWE2XHU1MWE3XHU1MWE4XHU1MWE5XHU1MWFhXHU1MWFkXHU1MWFlXHU1MWI0XHU1MWI4XHU1MWI5XHU1MWJhXHU1MWJlXHU1MWJm''@;'; put 'put ''XHU1MWMxXHU1MWMyXHU1MWMzXHU1MWM1XHU1MWM4XHU1MWNhXHU1MWNkXHU1MWNlXHU1MWQwXHU1MWQyXHU1MWQzXHU1MWQ0XHU1MWQ1XHU1MWQ2XHU1MWQ3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTMxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzFdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihnZVtCWzEzMV1bRV1dPTMzNTM2K0UsTFszMzUzNitFXT1CWzEzMV1bRV0pO2ZvcihCWzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTFkOFx1NTFkOVx1NTFkYVx1NTFkY1x1NTFkZVx1NTFkZlx1NTFlMlx1NTFlM1x1NTFl''@;'; put 'put ''NVx1NTFlNlx1NTFlN1x1NTFlOFx1NTFlOVx1NTFlYVx1NTFlY1x1NTFlZVx1NTFmMVx1NTFmMlx1NTFmNFx1NTFmN1x1NTFmZVx1NTIwNFx1NTIwNVx1NTIwOVx1NTIwYlx1NTIwY1x1NTIwZlx1NTIxMFx1NTIxM1x1NTIxNFx1NTIxNVx1NTIxY1x1NTIxZVx1NTIxZlx1NTIyMVx1NTIyMlx1''@;'; put 'put ''NTIyM1x1NTIyNVx1NTIyNlx1NTIyN1x1NTIyYVx1NTIyY1x1NTIyZlx1NTIzMVx1NTIzMlx1NTIzNFx1NTIzNVx1NTIzY1x1NTIzZVx1NTI0NFx1NTI0NVx1NTI0Nlx1NTI0N1x1NTI0OFx1NTI0OVx1NTI0Ylx1NTI0ZVx1NTI0Zlx1NTI1Mlx1NTI1M1x1NTI1NVx1NTI1N1x1NTI1OFx1ZmZm''@;'; put 'put ''ZFx1NTI1OVx1NTI1YVx1NTI1Ylx1NTI1ZFx1NTI1Zlx1NTI2MFx1NTI2Mlx1NTI2M1x1NTI2NFx1NTI2Nlx1NTI2OFx1NTI2Ylx1NTI2Y1x1NTI2ZFx1NTI2ZVx1NTI3MFx1NTI3MVx1NTI3M1x1NTI3NFx1NTI3NVx1NTI3Nlx1NTI3N1x1NTI3OFx1NTI3OVx1NTI3YVx1NTI3Ylx1NTI3Y1x1''@;'; put 'put ''NTI3ZVx1NTI4MFx1NTI4M1x1NTI4NFx1NTI4NVx1NTI4Nlx1NTI4N1x1NTI4OVx1NTI4YVx1NTI4Ylx1NTI4Y1x1NTI4ZFx1NTI4ZVx1NTI4Zlx1NTI5MVx1NTI5Mlx1NTI5NFx1NTI5NVx1NTI5Nlx1NTI5N1x1NTI5OFx1NTI5OVx1NTI5YVx1NTI5Y1x1NTJhNFx1NTJhNVx1NTJhNlx1NTJh''@;'; put 'put ''N1x1NTJhZVx1NTJhZlx1NTJiMFx1NTJiNFx1NTJiNVx1NTJiNlx1NTJiN1x1NTJiOFx1NTJiOVx1NTJiYVx1NTJiYlx1NTJiY1x1NTJiZFx1NTJjMFx1NTJjMVx1NTJjMlx1NTJjNFx1NTJjNVx1NTJjNlx1NTJjOFx1NTJjYVx1NTJjY1x1NTJjZFx1NTJjZVx1NTJjZlx1NTJkMVx1NTJkM1x1''@;'; put 'put ''NTJkNFx1NTJkNVx1NTJkN1x1NTJkOVx1NTJkYVx1NTJkYlx1NTJkY1x1NTJkZFx1NTJkZVx1NTJlMFx1NTJlMVx1NTJlMlx1NTJlM1x1NTJlNVx1NTJlNlx1NTJlN1x1NTJlOFx1NTJlOVx1NTJlYVx1NTJlYlx1NTJlY1x1NTJlZFx1NTJlZVx1NTJlZlx1NTJmMVx1NTJmMlx1NTJmM1x1NTJm''@;'; put 'put ''NFx1NTJmNVx1NTJmNlx1NTJmN1x1NTJmOFx1NTJmYlx1NTJmY1x1NTJmZFx1NTMwMVx1NTMwMlx1NTMwM1x1NTMwNFx1NTMwN1x1NTMwOVx1NTMwYVx1NTMwYlx1NTMwY1x1NTMwZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMyXVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoZ2VbQlsxMzJdW0VdXT0zMzc5MitFLExbMzM3OTIrRV09QlsxMzJdW0VdKTtmb3IoQlsxMzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUzMTFcdTUzMTJcdTUzMTNcdTUzMTRcdTUzMThcdTUzMWJcdTUz''@;'; put 'put ''MWNcdTUzMWVcdTUzMWZcdTUzMjJcdTUzMjRcdTUzMjVcdTUzMjdcdTUzMjhcdTUzMjlcdTUzMmJcdTUzMmNcdTUzMmRcdTUzMmZcdTUzMzBcdTUzMzFcdTUzMzJcdTUzMzNcdTUzMzRcdTUzMzVcdTUzMzZcdTUzMzdcdTUzMzhcdTUzM2NcdTUzM2RcdTUzNDBcdTUzNDJcdTUzNDRcdTUzNDZc''@;'; put 'put ''dTUzNGJcdTUzNGNcdTUzNGRcdTUzNTBcdTUzNTRcdTUzNThcdTUzNTlcdTUzNWJcdTUzNWRcdTUzNjVcdTUzNjhcdTUzNmFcdTUzNmNcdTUzNmRcdTUzNzJcdTUzNzZcdTUzNzlcdTUzN2JcdTUzN2NcdTUzN2RcdTUzN2VcdTUzODBcdTUzODFcdTUzODNcdTUzODdcdTUzODhcdTUzOGFcdTUz''@;'; put 'put ''OGVcdTUzOGZcdWZmZmRcdTUzOTBcdTUzOTFcdTUzOTJcdTUzOTNcdTUzOTRcdTUzOTZcdTUzOTdcdTUzOTlcdTUzOWJcdTUzOWNcdTUzOWVcdTUzYTBcdTUzYTFcdTUzYTRcdTUzYTdcdTUzYWFcdTUzYWJcdTUzYWNcdTUzYWRcdTUzYWZcdTUzYjBcdTUzYjFcdTUzYjJcdTUzYjNcdTUzYjRc''@;'; put 'put ''dTUzYjVcdTUzYjdcdTUzYjhcdTUzYjlcdTUzYmFcdTUzYmNcdTUzYmRcdTUzYmVcdTUzYzBcdTUzYzNcdTUzYzRcdTUzYzVcdTUzYzZcdTUzYzdcdTUzY2VcdTUzY2ZcdTUzZDBcdTUzZDJcdTUzZDNcdTUzZDVcdTUzZGFcdTUzZGNcdTUzZGRcdTUzZGVcdTUzZTFcdTUzZTJcdTUzZTdcdTUz''@;'; put 'put ''ZjRcdTUzZmFcdTUzZmVcdTUzZmZcdTU0MDBcdTU0MDJcdTU0MDVcdTU0MDdcdTU0MGJcdTU0MTRcdTU0MThcdTU0MTlcdTU0MWFcdTU0MWNcdTU0MjJcdTU0MjRcdTU0MjVcdTU0MmFcdTU0MzBcdTU0MzNcdTU0MzZcdTU0MzdcdTU0M2FcdTU0M2RcdTU0M2ZcdTU0NDFcdTU0NDJcdTU0NDRc''@;'; put 'put ''dTU0NDVcdTU0NDdcdTU0NDlcdTU0NGNcdTU0NGRcdTU0NGVcdTU0NGZcdTU0NTFcdTU0NWFcdTU0NWRcdTU0NWVcdTU0NWZcdTU0NjBcdTU0NjFcdTU0NjNcdTU0NjVcdTU0NjdcdTU0NjlcdTU0NmFcdTU0NmJcdTU0NmNcdTU0NmRcdTU0NmVcdTU0NmZcdTU0NzBcdTU0NzRcdTU0NzlcdTU0''@;'; put 'put ''N2FcdTU0N2VcdTU0N2ZcdTU0ODFcdTU0ODNcdTU0ODVcdTU0ODdcdTU0ODhcdTU0ODlcdTU0OGFcdTU0OGRcdTU0OTFcdTU0OTNcdTU0OTdcdTU0OThcdTU0OWNcdTU0OWVcdTU0OWZcdTU0YTBcdTU0YTFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzNdLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzEzM11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTMzXVtFXV09MzQwNDgrRSxMWzM0MDQ4K0VdPUJbMTMzXVtFXSk7Zm9yKEJbMTM0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGEyXHU1NGE1XHU1NGFlXHU1NGIwXHU1''@;'; put 'put ''NGIyXHU1NGI1XHU1NGI2XHU1NGI3XHU1NGI5XHU1NGJhXHU1NGJjXHU1NGJlXHU1NGMzXHU1NGM1XHU1NGNhXHU1NGNiXHU1NGQ2XHU1NGQ4XHU1NGRiXHU1NGUwXHU1NGUxXHU1NGUyXHU1NGUzXHU1NGU0XHU1NGViXHU1NGVjXHU1NGVmXHU1NGYwXHU1NGYxXHU1NGY0XHU1NGY1XHU1NGY2''@;'; put 'put ''XHU1NGY3XHU1NGY4XHU1NGY5XHU1NGZiXHU1NGZlXHU1NTAwXHU1NTAyXHU1NTAzXHU1NTA0XHU1NTA1XHU1NTA4XHU1NTBhXHU1NTBiXHU1NTBjXHU1NTBkXHU1NTBlXHU1NTEyXHU1NTEzXHU1NTE1XHU1NTE2XHU1NTE3XHU1NTE4XHU1NTE5XHU1NTFhXHU1NTFjXHU1NTFkXHU1NTFlXHU1''@;'; put 'put ''NTFmXHU1NTIxXHU1NTI1XHU1NTI2XHVmZmZkXHU1NTI4XHU1NTI5XHU1NTJiXHU1NTJkXHU1NTMyXHU1NTM0XHU1NTM1XHU1NTM2XHU1NTM4XHU1NTM5XHU1NTNhXHU1NTNiXHU1NTNkXHU1NTQwXHU1NTQyXHU1NTQ1XHU1NTQ3XHU1NTQ4XHU1NTRiXHU1NTRjXHU1NTRkXHU1NTRlXHU1NTRm''@;'; put 'put ''XHU1NTUxXHU1NTUyXHU1NTUzXHU1NTU0XHU1NTU3XHU1NTU4XHU1NTU5XHU1NTVhXHU1NTViXHU1NTVkXHU1NTVlXHU1NTVmXHU1NTYwXHU1NTYyXHU1NTYzXHU1NTY4XHU1NTY5XHU1NTZiXHU1NTZmXHU1NTcwXHU1NTcxXHU1NTcyXHU1NTczXHU1NTc0XHU1NTc5XHU1NTdhXHU1NTdkXHU1''@;'; put 'put ''NTdmXHU1NTg1XHU1NTg2XHU1NThjXHU1NThkXHU1NThlXHU1NTkwXHU1NTkyXHU1NTkzXHU1NTk1XHU1NTk2XHU1NTk3XHU1NTlhXHU1NTliXHU1NTllXHU1NWEwXHU1NWExXHU1NWEyXHU1NWEzXHU1NWE0XHU1NWE1XHU1NWE2XHU1NWE4XHU1NWE5XHU1NWFhXHU1NWFiXHU1NWFjXHU1NWFk''@;'; put 'put ''XHU1NWFlXHU1NWFmXHU1NWIwXHU1NWIyXHU1NWI0XHU1NWI2XHU1NWI4XHU1NWJhXHU1NWJjXHU1NWJmXHU1NWMwXHU1NWMxXHU1NWMyXHU1NWMzXHU1NWM2XHU1NWM3XHU1NWM4XHU1NWNhXHU1NWNiXHU1NWNlXHU1NWNmXHU1NWQwXHU1NWQ1XHU1NWQ3XHU1NWQ4XHU1NWQ5XHU1NWRhXHU1''@;'; put 'put ''NWRiXHU1NWRlXHU1NWUwXHU1NWUyXHU1NWU3XHU1NWU5XHU1NWVkXHU1NWVlXHU1NWYwXHU1NWYxXHU1NWY0XHU1NWY2XHU1NWY4XHU1NWY5XHU1NWZhXHU1NWZiXHU1NWZjXHU1NWZmXHU1NjAyXHU1NjAzXHU1NjA0XHU1NjA1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM0XS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsxMzRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzNF1bRV1dPTM0MzA0K0UsTFszNDMwNCtFXT1CWzEzNF1bRV0pO2ZvcihCWzEzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTYwNlx1NTYwN1x1''@;'; put 'put ''NTYwYVx1NTYwYlx1NTYwZFx1NTYxMFx1NTYxMVx1NTYxMlx1NTYxM1x1NTYxNFx1NTYxNVx1NTYxNlx1NTYxN1x1NTYxOVx1NTYxYVx1NTYxY1x1NTYxZFx1NTYyMFx1NTYyMVx1NTYyMlx1NTYyNVx1NTYyNlx1NTYyOFx1NTYyOVx1NTYyYVx1NTYyYlx1NTYyZVx1NTYyZlx1NTYzMFx1NTYz''@;'; put 'put ''M1x1NTYzNVx1NTYzN1x1NTYzOFx1NTYzYVx1NTYzY1x1NTYzZFx1NTYzZVx1NTY0MFx1NTY0MVx1NTY0Mlx1NTY0M1x1NTY0NFx1NTY0NVx1NTY0Nlx1NTY0N1x1NTY0OFx1NTY0OVx1NTY0YVx1NTY0Ylx1NTY0Zlx1NTY1MFx1NTY1MVx1NTY1Mlx1NTY1M1x1NTY1NVx1NTY1Nlx1NTY1YVx1''@;'; put 'put ''NTY1Ylx1NTY1ZFx1NTY1ZVx1NTY1Zlx1NTY2MFx1NTY2MVx1ZmZmZFx1NTY2M1x1NTY2NVx1NTY2Nlx1NTY2N1x1NTY2ZFx1NTY2ZVx1NTY2Zlx1NTY3MFx1NTY3Mlx1NTY3M1x1NTY3NFx1NTY3NVx1NTY3N1x1NTY3OFx1NTY3OVx1NTY3YVx1NTY3ZFx1NTY3ZVx1NTY3Zlx1NTY4MFx1NTY4''@;'; put 'put ''MVx1NTY4Mlx1NTY4M1x1NTY4NFx1NTY4N1x1NTY4OFx1NTY4OVx1NTY4YVx1NTY4Ylx1NTY4Y1x1NTY4ZFx1NTY5MFx1NTY5MVx1NTY5Mlx1NTY5NFx1NTY5NVx1NTY5Nlx1NTY5N1x1NTY5OFx1NTY5OVx1NTY5YVx1NTY5Ylx1NTY5Y1x1NTY5ZFx1NTY5ZVx1NTY5Zlx1NTZhMFx1NTZhMVx1''@;'; put 'put ''NTZhMlx1NTZhNFx1NTZhNVx1NTZhNlx1NTZhN1x1NTZhOFx1NTZhOVx1NTZhYVx1NTZhYlx1NTZhY1x1NTZhZFx1NTZhZVx1NTZiMFx1NTZiMVx1NTZiMlx1NTZiM1x1NTZiNFx1NTZiNVx1NTZiNlx1NTZiOFx1NTZiOVx1NTZiYVx1NTZiYlx1NTZiZFx1NTZiZVx1NTZiZlx1NTZjMFx1NTZj''@;'; put 'put ''MVx1NTZjMlx1NTZjM1x1NTZjNFx1NTZjNVx1NTZjNlx1NTZjN1x1NTZjOFx1NTZjOVx1NTZjYlx1NTZjY1x1NTZjZFx1NTZjZVx1NTZjZlx1NTZkMFx1NTZkMVx1NTZkMlx1NTZkM1x1NTZkNVx1NTZkNlx1NTZkOFx1NTZkOVx1NTZkY1x1NTZlM1x1NTZlNVx1NTZlNlx1NTZlN1x1NTZlOFx1''@;'; put 'put ''NTZlOVx1NTZlYVx1NTZlY1x1NTZlZVx1NTZlZlx1NTZmMlx1NTZmM1x1NTZmNlx1NTZmN1x1NTZmOFx1NTZmYlx1NTZmY1x1NTcwMFx1NTcwMVx1NTcwMlx1NTcwNVx1NTcwN1x1NTcwYlx1NTcwY1x1NTcwZFx1NTcwZVx1NTcwZlx1NTcxMFx1NTcxMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzEzNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzVdW0VdXT0zNDU2MCtFLExbMzQ1NjArRV09QlsxMzVdW0VdKTtmb3IoQlsxMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTU3MTJcdTU3MTNcdTU3MTRcdTU3MTVcdTU3MTZcdTU3MTdcdTU3MThcdTU3MTlcdTU3MWFcdTU3MWJcdTU3MWRcdTU3MWVcdTU3MjBcdTU3MjFcdTU3MjJcdTU3MjRcdTU3MjVcdTU3MjZcdTU3MjdcdTU3MmJcdTU3MzFcdTU3MzJcdTU3MzRcdTU3MzVcdTU3MzZcdTU3MzdcdTU3MzhcdTU3''@;'; put 'put ''M2NcdTU3M2RcdTU3M2ZcdTU3NDFcdTU3NDNcdTU3NDRcdTU3NDVcdTU3NDZcdTU3NDhcdTU3NDlcdTU3NGJcdTU3NTJcdTU3NTNcdTU3NTRcdTU3NTVcdTU3NTZcdTU3NThcdTU3NTlcdTU3NjJcdTU3NjNcdTU3NjVcdTU3NjdcdTU3NmNcdTU3NmVcdTU3NzBcdTU3NzFcdTU3NzJcdTU3NzRc''@;'; put 'put ''dTU3NzVcdTU3NzhcdTU3NzlcdTU3N2FcdTU3N2RcdTU3N2VcdTU3N2ZcdTU3ODBcdWZmZmRcdTU3ODFcdTU3ODdcdTU3ODhcdTU3ODlcdTU3OGFcdTU3OGRcdTU3OGVcdTU3OGZcdTU3OTBcdTU3OTFcdTU3OTRcdTU3OTVcdTU3OTZcdTU3OTdcdTU3OThcdTU3OTlcdTU3OWFcdTU3OWNcdTU3''@;'; put 'put ''OWRcdTU3OWVcdTU3OWZcdTU3YTVcdTU3YThcdTU3YWFcdTU3YWNcdTU3YWZcdTU3YjBcdTU3YjFcdTU3YjNcdTU3YjVcdTU3YjZcdTU3YjdcdTU3YjlcdTU3YmFcdTU3YmJcdTU3YmNcdTU3YmRcdTU3YmVcdTU3YmZcdTU3YzBcdTU3YzFcdTU3YzRcdTU3YzVcdTU3YzZcdTU3YzdcdTU3Yzhc''@;'; put 'put ''dTU3YzlcdTU3Y2FcdTU3Y2NcdTU3Y2RcdTU3ZDBcdTU3ZDFcdTU3ZDNcdTU3ZDZcdTU3ZDdcdTU3ZGJcdTU3ZGNcdTU3ZGVcdTU3ZTFcdTU3ZTJcdTU3ZTNcdTU3ZTVcdTU3ZTZcdTU3ZTdcdTU3ZThcdTU3ZTlcdTU3ZWFcdTU3ZWJcdTU3ZWNcdTU3ZWVcdTU3ZjBcdTU3ZjFcdTU3ZjJcdTU3''@;'; put 'put ''ZjNcdTU3ZjVcdTU3ZjZcdTU3ZjdcdTU3ZmJcdTU3ZmNcdTU3ZmVcdTU3ZmZcdTU4MDFcdTU4MDNcdTU4MDRcdTU4MDVcdTU4MDhcdTU4MDlcdTU4MGFcdTU4MGNcdTU4MGVcdTU4MGZcdTU4MTBcdTU4MTJcdTU4MTNcdTU4MTRcdTU4MTZcdTU4MTdcdTU4MThcdTU4MWFcdTU4MWJcdTU4MWNc''@;'; put 'put ''dTU4MWRcdTU4MWZcdTU4MjJcdTU4MjNcdTU4MjVcdTU4MjZcdTU4MjdcdTU4MjhcdTU4MjlcdTU4MmJcdTU4MmNcdTU4MmRcdTU4MmVcdTU4MmZcdTU4MzFcdTU4MzJcdTU4MzNcdTU4MzRcdTU4MzZcdTU4MzdcdTU4MzhcdTU4MzlcdTU4M2FcdTU4M2JcdTU4M2NcdTU4M2RcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsxMzZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzNl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTM2XVtFXV09MzQ4MTYrRSxMWzM0ODE2K0VdPUJbMTM2XVtFXSk7Zm9yKEJbMTM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU1ODNlXHU1ODNmXHU1ODQwXHU1ODQxXHU1ODQyXHU1ODQzXHU1ODQ1XHU1ODQ2XHU1ODQ3XHU1ODQ4XHU1ODQ5XHU1ODRhXHU1ODRiXHU1ODRlXHU1ODRmXHU1ODUwXHU1ODUyXHU1ODUzXHU1ODU1XHU1ODU2XHU1ODU3XHU1ODU5XHU1ODVhXHU1ODViXHU1ODVjXHU1''@;'; put 'put ''ODVkXHU1ODVmXHU1ODYwXHU1ODYxXHU1ODYyXHU1ODYzXHU1ODY0XHU1ODY2XHU1ODY3XHU1ODY4XHU1ODY5XHU1ODZhXHU1ODZkXHU1ODZlXHU1ODZmXHU1ODcwXHU1ODcxXHU1ODcyXHU1ODczXHU1ODc0XHU1ODc1XHU1ODc2XHU1ODc3XHU1ODc4XHU1ODc5XHU1ODdhXHU1ODdiXHU1ODdj''@;'; put 'put ''XHU1ODdkXHU1ODdmXHU1ODgyXHU1ODg0XHU1ODg2XHU1ODg3XHU1ODg4XHU1ODhhXHU1ODhiXHU1ODhjXHVmZmZkXHU1ODhkXHU1ODhlXHU1ODhmXHU1ODkwXHU1ODkxXHU1ODk0XHU1ODk1XHU1ODk2XHU1ODk3XHU1ODk4XHU1ODliXHU1ODljXHU1ODlkXHU1OGEwXHU1OGExXHU1OGEyXHU1''@;'; put 'put ''OGEzXHU1OGE0XHU1OGE1XHU1OGE2XHU1OGE3XHU1OGFhXHU1OGFiXHU1OGFjXHU1OGFkXHU1OGFlXHU1OGFmXHU1OGIwXHU1OGIxXHU1OGIyXHU1OGIzXHU1OGI0XHU1OGI1XHU1OGI2XHU1OGI3XHU1OGI4XHU1OGI5XHU1OGJhXHU1OGJiXHU1OGJkXHU1OGJlXHU1OGJmXHU1OGMwXHU1OGMy''@;'; put 'put ''XHU1OGMzXHU1OGM0XHU1OGM2XHU1OGM3XHU1OGM4XHU1OGM5XHU1OGNhXHU1OGNiXHU1OGNjXHU1OGNkXHU1OGNlXHU1OGNmXHU1OGQwXHU1OGQyXHU1OGQzXHU1OGQ0XHU1OGQ2XHU1OGQ3XHU1OGQ4XHU1OGQ5XHU1OGRhXHU1OGRiXHU1OGRjXHU1OGRkXHU1OGRlXHU1OGRmXHU1OGUwXHU1''@;'; put 'put ''OGUxXHU1OGUyXHU1OGUzXHU1OGU1XHU1OGU2XHU1OGU3XHU1OGU4XHU1OGU5XHU1OGVhXHU1OGVkXHU1OGVmXHU1OGYxXHU1OGYyXHU1OGY0XHU1OGY1XHU1OGY3XHU1OGY4XHU1OGZhXHU1OGZiXHU1OGZjXHU1OGZkXHU1OGZlXHU1OGZmXHU1OTAwXHU1OTAxXHU1OTAzXHU1OTA1XHU1OTA2''@;'; put 'put ''XHU1OTA4XHU1OTA5XHU1OTBhXHU1OTBiXHU1OTBjXHU1OTBlXHU1OTEwXHU1OTExXHU1OTEyXHU1OTEzXHU1OTE3XHU1OTE4XHU1OTFiXHU1OTFkXHU1OTFlXHU1OTIwXHU1OTIxXHU1OTIyXHU1OTIzXHU1OTI2XHU1OTI4XHU1OTJjXHU1OTMwXHU1OTMyXHU1OTMzXHU1OTM1XHU1OTM2XHU1''@;'; put 'put ''OTNiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzN11bRV1dPTM1MDcyK0UsTFszNTA3MitFXT1CWzEzN11bRV0pO2ZvcihCWzEzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTkzZFx1NTkzZVx1NTkzZlx1NTk0MFx1NTk0M1x1NTk0NVx1NTk0Nlx1NTk0YVx1NTk0Y1x1NTk0ZFx1NTk1MFx1NTk1Mlx1NTk1M1x1NTk1OVx1NTk1Ylx1NTk1Y1x1NTk1ZFx1NTk1ZVx1NTk1Zlx1NTk2MVx1NTk2M1x1NTk2NFx1NTk2Nlx1''@;'; put 'put ''NTk2N1x1NTk2OFx1NTk2OVx1NTk2YVx1NTk2Ylx1NTk2Y1x1NTk2ZFx1NTk2ZVx1NTk2Zlx1NTk3MFx1NTk3MVx1NTk3Mlx1NTk3NVx1NTk3N1x1NTk3YVx1NTk3Ylx1NTk3Y1x1NTk3ZVx1NTk3Zlx1NTk4MFx1NTk4NVx1NTk4OVx1NTk4Ylx1NTk4Y1x1NTk4ZVx1NTk4Zlx1NTk5MFx1NTk5''@;'; put 'put ''MVx1NTk5NFx1NTk5NVx1NTk5OFx1NTk5YVx1NTk5Ylx1NTk5Y1x1NTk5ZFx1NTk5Zlx1NTlhMFx1NTlhMVx1NTlhMlx1NTlhNlx1ZmZmZFx1NTlhN1x1NTlhY1x1NTlhZFx1NTliMFx1NTliMVx1NTliM1x1NTliNFx1NTliNVx1NTliNlx1NTliN1x1NTliOFx1NTliYVx1NTliY1x1NTliZFx1''@;'; put 'put ''NTliZlx1NTljMFx1NTljMVx1NTljMlx1NTljM1x1NTljNFx1NTljNVx1NTljN1x1NTljOFx1NTljOVx1NTljY1x1NTljZFx1NTljZVx1NTljZlx1NTlkNVx1NTlkNlx1NTlkOVx1NTlkYlx1NTlkZVx1NTlkZlx1NTllMFx1NTllMVx1NTllMlx1NTllNFx1NTllNlx1NTllN1x1NTllOVx1NTll''@;'; put 'put ''YVx1NTllYlx1NTllZFx1NTllZVx1NTllZlx1NTlmMFx1NTlmMVx1NTlmMlx1NTlmM1x1NTlmNFx1NTlmNVx1NTlmNlx1NTlmN1x1NTlmOFx1NTlmYVx1NTlmY1x1NTlmZFx1NTlmZVx1NWEwMFx1NWEwMlx1NWEwYVx1NWEwYlx1NWEwZFx1NWEwZVx1NWEwZlx1NWExMFx1NWExMlx1NWExNFx1''@;'; put 'put ''NWExNVx1NWExNlx1NWExN1x1NWExOVx1NWExYVx1NWExYlx1NWExZFx1NWExZVx1NWEyMVx1NWEyMlx1NWEyNFx1NWEyNlx1NWEyN1x1NWEyOFx1NWEyYVx1NWEyYlx1NWEyY1x1NWEyZFx1NWEyZVx1NWEyZlx1NWEzMFx1NWEzM1x1NWEzNVx1NWEzN1x1NWEzOFx1NWEzOVx1NWEzYVx1NWEz''@;'; put 'put ''Ylx1NWEzZFx1NWEzZVx1NWEzZlx1NWE0MVx1NWE0Mlx1NWE0M1x1NWE0NFx1NWE0NVx1NWE0N1x1NWE0OFx1NWE0Ylx1NWE0Y1x1NWE0ZFx1NWE0ZVx1NWE0Zlx1NWE1MFx1NWE1MVx1NWE1Mlx1NWE1M1x1NWE1NFx1NWE1Nlx1NWE1N1x1NWE1OFx1NWE1OVx1NWE1Ylx1NWE1Y1x1NWE1ZFx1''@;'; put 'put ''NWE1ZVx1NWE1Zlx1NWE2MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzhdW0VdXT0zNTMyOCtFLExbMzUzMjgrRV09QlsxMzhdW0VdKTtmb3IoQlsxMzldPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVhNjFcdTVhNjNcdTVhNjRcdTVhNjVcdTVhNjZcdTVhNjhcdTVhNjlcdTVhNmJcdTVhNmNcdTVhNmRcdTVhNmVcdTVhNmZcdTVhNzBcdTVhNzFcdTVhNzJcdTVhNzNcdTVhNzhcdTVhNzlcdTVhN2JcdTVhN2NcdTVhN2Rc''@;'; put 'put ''dTVhN2VcdTVhODBcdTVhODFcdTVhODJcdTVhODNcdTVhODRcdTVhODVcdTVhODZcdTVhODdcdTVhODhcdTVhODlcdTVhOGFcdTVhOGJcdTVhOGNcdTVhOGRcdTVhOGVcdTVhOGZcdTVhOTBcdTVhOTFcdTVhOTNcdTVhOTRcdTVhOTVcdTVhOTZcdTVhOTdcdTVhOThcdTVhOTlcdTVhOWNcdTVh''@;'; put 'put ''OWRcdTVhOWVcdTVhOWZcdTVhYTBcdTVhYTFcdTVhYTJcdTVhYTNcdTVhYTRcdTVhYTVcdTVhYTZcdTVhYTdcdTVhYThcdTVhYTlcdTVhYWJcdTVhYWNcdWZmZmRcdTVhYWRcdTVhYWVcdTVhYWZcdTVhYjBcdTVhYjFcdTVhYjRcdTVhYjZcdTVhYjdcdTVhYjlcdTVhYmFcdTVhYmJcdTVhYmNc''@;'; put 'put ''dTVhYmRcdTVhYmZcdTVhYzBcdTVhYzNcdTVhYzRcdTVhYzVcdTVhYzZcdTVhYzdcdTVhYzhcdTVhY2FcdTVhY2JcdTVhY2RcdTVhY2VcdTVhY2ZcdTVhZDBcdTVhZDFcdTVhZDNcdTVhZDVcdTVhZDdcdTVhZDlcdTVhZGFcdTVhZGJcdTVhZGRcdTVhZGVcdTVhZGZcdTVhZTJcdTVhZTRcdTVh''@;'; put 'put ''ZTVcdTVhZTdcdTVhZThcdTVhZWFcdTVhZWNcdTVhZWRcdTVhZWVcdTVhZWZcdTVhZjBcdTVhZjJcdTVhZjNcdTVhZjRcdTVhZjVcdTVhZjZcdTVhZjdcdTVhZjhcdTVhZjlcdTVhZmFcdTVhZmJcdTVhZmNcdTVhZmRcdTVhZmVcdTVhZmZcdTViMDBcdTViMDFcdTViMDJcdTViMDNcdTViMDRc''@;'; put 'put ''dTViMDVcdTViMDZcdTViMDdcdTViMDhcdTViMGFcdTViMGJcdTViMGNcdTViMGRcdTViMGVcdTViMGZcdTViMTBcdTViMTFcdTViMTJcdTViMTNcdTViMTRcdTViMTVcdTViMThcdTViMTlcdTViMWFcdTViMWJcdTViMWNcdTViMWRcdTViMWVcdTViMWZcdTViMjBcdTViMjFcdTViMjJcdTVi''@;'; put 'put ''MjNcdTViMjRcdTViMjVcdTViMjZcdTViMjdcdTViMjhcdTViMjlcdTViMmFcdTViMmJcdTViMmNcdTViMmRcdTViMmVcdTViMmZcdTViMzBcdTViMzFcdTViMzNcdTViMzVcdTViMzZcdTViMzhcdTViMzlcdTViM2FcdTViM2JcdTViM2NcdTViM2RcdTViM2VcdTViM2ZcdTViNDFcdTViNDJc''@;'; put 'put ''dTViNDNcdTViNDRcdTViNDVcdTViNDZcdTViNDdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTM5XVtFXV09MzU1ODQrRSxMWzM1NTg0K0VdPUJbMTM5XVtFXSk7Zm9yKEJbMTQwXT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YjQ4XHU1YjQ5XHU1YjRhXHU1YjRiXHU1YjRjXHU1YjRkXHU1YjRlXHU1YjRmXHU1YjUyXHU1YjU2XHU1YjVlXHU1YjYwXHU1YjYxXHU1YjY3XHU1YjY4XHU1YjZiXHU1YjZkXHU1YjZlXHU1YjZm''@;'; put 'put ''XHU1YjcyXHU1Yjc0XHU1Yjc2XHU1Yjc3XHU1Yjc4XHU1Yjc5XHU1YjdiXHU1YjdjXHU1YjdlXHU1YjdmXHU1YjgyXHU1Yjg2XHU1YjhhXHU1YjhkXHU1YjhlXHU1YjkwXHU1YjkxXHU1YjkyXHU1Yjk0XHU1Yjk2XHU1YjlmXHU1YmE3XHU1YmE4XHU1YmE5XHU1YmFjXHU1YmFkXHU1YmFlXHU1''@;'; put 'put ''YmFmXHU1YmIxXHU1YmIyXHU1YmI3XHU1YmJhXHU1YmJiXHU1YmJjXHU1YmMwXHU1YmMxXHU1YmMzXHU1YmM4XHU1YmM5XHU1YmNhXHU1YmNiXHU1YmNkXHU1YmNlXHU1YmNmXHVmZmZkXHU1YmQxXHU1YmQ0XHU1YmQ1XHU1YmQ2XHU1YmQ3XHU1YmQ4XHU1YmQ5XHU1YmRhXHU1YmRiXHU1YmRj''@;'; put 'put ''XHU1YmUwXHU1YmUyXHU1YmUzXHU1YmU2XHU1YmU3XHU1YmU5XHU1YmVhXHU1YmViXHU1YmVjXHU1YmVkXHU1YmVmXHU1YmYxXHU1YmYyXHU1YmYzXHU1YmY0XHU1YmY1XHU1YmY2XHU1YmY3XHU1YmZkXHU1YmZlXHU1YzAwXHU1YzAyXHU1YzAzXHU1YzA1XHU1YzA3XHU1YzA4XHU1YzBiXHU1''@;'; put 'put ''YzBjXHU1YzBkXHU1YzBlXHU1YzEwXHU1YzEyXHU1YzEzXHU1YzE3XHU1YzE5XHU1YzFiXHU1YzFlXHU1YzFmXHU1YzIwXHU1YzIxXHU1YzIzXHU1YzI2XHU1YzI4XHU1YzI5XHU1YzJhXHU1YzJiXHU1YzJkXHU1YzJlXHU1YzJmXHU1YzMwXHU1YzMyXHU1YzMzXHU1YzM1XHU1YzM2XHU1YzM3''@;'; put 'put ''XHU1YzQzXHU1YzQ0XHU1YzQ2XHU1YzQ3XHU1YzRjXHU1YzRkXHU1YzUyXHU1YzUzXHU1YzU0XHU1YzU2XHU1YzU3XHU1YzU4XHU1YzVhXHU1YzViXHU1YzVjXHU1YzVkXHU1YzVmXHU1YzYyXHU1YzY0XHU1YzY3XHU1YzY4XHU1YzY5XHU1YzZhXHU1YzZiXHU1YzZjXHU1YzZkXHU1YzcwXHU1''@;'; put 'put ''YzcyXHU1YzczXHU1Yzc0XHU1Yzc1XHU1Yzc2XHU1Yzc3XHU1Yzc4XHU1YzdiXHU1YzdjXHU1YzdkXHU1YzdlXHU1YzgwXHU1YzgzXHU1Yzg0XHU1Yzg1XHU1Yzg2XHU1Yzg3XHU1Yzg5XHU1YzhhXHU1YzhiXHU1YzhlXHU1YzhmXHU1YzkyXHU1YzkzXHU1Yzk1XHU1YzlkXHU1YzllXHU1Yzlm''@;'; put 'put ''XHU1Y2EwXHU1Y2ExXHU1Y2E0XHU1Y2E1XHU1Y2E2XHU1Y2E3XHU1Y2E4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0MF1bRV1dPTM1ODQwK0UsTFszNTg0MCtFXT1CWzE0MF1bRV0pO2Zv''@;'; put 'put ''cihCWzE0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWNhYVx1NWNhZVx1NWNhZlx1NWNiMFx1NWNiMlx1NWNiNFx1NWNiNlx1NWNiOVx1NWNiYVx1NWNiYlx1NWNiY1x1NWNiZVx1NWNjMFx1NWNjMlx1NWNjM1x1NWNjNVx1NWNj''@;'; put 'put ''Nlx1NWNjN1x1NWNjOFx1NWNjOVx1NWNjYVx1NWNjY1x1NWNjZFx1NWNjZVx1NWNjZlx1NWNkMFx1NWNkMVx1NWNkM1x1NWNkNFx1NWNkNVx1NWNkNlx1NWNkN1x1NWNkOFx1NWNkYVx1NWNkYlx1NWNkY1x1NWNkZFx1NWNkZVx1NWNkZlx1NWNlMFx1NWNlMlx1NWNlM1x1NWNlN1x1NWNlOVx1''@;'; put 'put ''NWNlYlx1NWNlY1x1NWNlZVx1NWNlZlx1NWNmMVx1NWNmMlx1NWNmM1x1NWNmNFx1NWNmNVx1NWNmNlx1NWNmN1x1NWNmOFx1NWNmOVx1NWNmYVx1NWNmY1x1NWNmZFx1NWNmZVx1NWNmZlx1NWQwMFx1ZmZmZFx1NWQwMVx1NWQwNFx1NWQwNVx1NWQwOFx1NWQwOVx1NWQwYVx1NWQwYlx1NWQw''@;'; put 'put ''Y1x1NWQwZFx1NWQwZlx1NWQxMFx1NWQxMVx1NWQxMlx1NWQxM1x1NWQxNVx1NWQxN1x1NWQxOFx1NWQxOVx1NWQxYVx1NWQxY1x1NWQxZFx1NWQxZlx1NWQyMFx1NWQyMVx1NWQyMlx1NWQyM1x1NWQyNVx1NWQyOFx1NWQyYVx1NWQyYlx1NWQyY1x1NWQyZlx1NWQzMFx1NWQzMVx1NWQzMlx1''@;'; put 'put ''NWQzM1x1NWQzNVx1NWQzNlx1NWQzN1x1NWQzOFx1NWQzOVx1NWQzYVx1NWQzYlx1NWQzY1x1NWQzZlx1NWQ0MFx1NWQ0MVx1NWQ0Mlx1NWQ0M1x1NWQ0NFx1NWQ0NVx1NWQ0Nlx1NWQ0OFx1NWQ0OVx1NWQ0ZFx1NWQ0ZVx1NWQ0Zlx1NWQ1MFx1NWQ1MVx1NWQ1Mlx1NWQ1M1x1NWQ1NFx1NWQ1''@;'; put 'put ''NVx1NWQ1Nlx1NWQ1N1x1NWQ1OVx1NWQ1YVx1NWQ1Y1x1NWQ1ZVx1NWQ1Zlx1NWQ2MFx1NWQ2MVx1NWQ2Mlx1NWQ2M1x1NWQ2NFx1NWQ2NVx1NWQ2Nlx1NWQ2N1x1NWQ2OFx1NWQ2YVx1NWQ2ZFx1NWQ2ZVx1NWQ3MFx1NWQ3MVx1NWQ3Mlx1NWQ3M1x1NWQ3NVx1NWQ3Nlx1NWQ3N1x1NWQ3OFx1''@;'; put 'put ''NWQ3OVx1NWQ3YVx1NWQ3Ylx1NWQ3Y1x1NWQ3ZFx1NWQ3ZVx1NWQ3Zlx1NWQ4MFx1NWQ4MVx1NWQ4M1x1NWQ4NFx1NWQ4NVx1NWQ4Nlx1NWQ4N1x1NWQ4OFx1NWQ4OVx1NWQ4YVx1NWQ4Ylx1NWQ4Y1x1NWQ4ZFx1NWQ4ZVx1NWQ4Zlx1NWQ5MFx1NWQ5MVx1NWQ5Mlx1NWQ5M1x1NWQ5NFx1NWQ5''@;'; put 'put ''NVx1NWQ5Nlx1NWQ5N1x1NWQ5OFx1NWQ5YVx1NWQ5Ylx1NWQ5Y1x1NWQ5ZVx1NWQ5Zlx1NWRhMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDFdW0VdXT0zNjA5NitFLExbMzYwOTYrRV09''@;'; put 'put ''QlsxNDFdW0VdKTtmb3IoQlsxNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVkYTFcdTVkYTJcdTVkYTNcdTVkYTRcdTVkYTVcdTVkYTZcdTVkYTdcdTVkYThcdTVkYTlcdTVkYWFcdTVkYWJcdTVkYWNcdTVkYWRcdTVkYWVcdTVk''@;'; put 'put ''YWZcdTVkYjBcdTVkYjFcdTVkYjJcdTVkYjNcdTVkYjRcdTVkYjVcdTVkYjZcdTVkYjhcdTVkYjlcdTVkYmFcdTVkYmJcdTVkYmNcdTVkYmRcdTVkYmVcdTVkYmZcdTVkYzBcdTVkYzFcdTVkYzJcdTVkYzNcdTVkYzRcdTVkYzZcdTVkYzdcdTVkYzhcdTVkYzlcdTVkY2FcdTVkY2JcdTVkY2Nc''@;'; put 'put ''dTVkY2VcdTVkY2ZcdTVkZDBcdTVkZDFcdTVkZDJcdTVkZDNcdTVkZDRcdTVkZDVcdTVkZDZcdTVkZDdcdTVkZDhcdTVkZDlcdTVkZGFcdTVkZGNcdTVkZGZcdTVkZTBcdTVkZTNcdTVkZTRcdTVkZWFcdTVkZWNcdTVkZWRcdWZmZmRcdTVkZjBcdTVkZjVcdTVkZjZcdTVkZjhcdTVkZjlcdTVk''@;'; put 'put ''ZmFcdTVkZmJcdTVkZmNcdTVkZmZcdTVlMDBcdTVlMDRcdTVlMDdcdTVlMDlcdTVlMGFcdTVlMGJcdTVlMGRcdTVlMGVcdTVlMTJcdTVlMTNcdTVlMTdcdTVlMWVcdTVlMWZcdTVlMjBcdTVlMjFcdTVlMjJcdTVlMjNcdTVlMjRcdTVlMjVcdTVlMjhcdTVlMjlcdTVlMmFcdTVlMmJcdTVlMmNc''@;'; put 'put ''dTVlMmZcdTVlMzBcdTVlMzJcdTVlMzNcdTVlMzRcdTVlMzVcdTVlMzZcdTVlMzlcdTVlM2FcdTVlM2VcdTVlM2ZcdTVlNDBcdTVlNDFcdTVlNDNcdTVlNDZcdTVlNDdcdTVlNDhcdTVlNDlcdTVlNGFcdTVlNGJcdTVlNGRcdTVlNGVcdTVlNGZcdTVlNTBcdTVlNTFcdTVlNTJcdTVlNTNcdTVl''@;'; put 'put ''NTZcdTVlNTdcdTVlNThcdTVlNTlcdTVlNWFcdTVlNWNcdTVlNWRcdTVlNWZcdTVlNjBcdTVlNjNcdTVlNjRcdTVlNjVcdTVlNjZcdTVlNjdcdTVlNjhcdTVlNjlcdTVlNmFcdTVlNmJcdTVlNmNcdTVlNmRcdTVlNmVcdTVlNmZcdTVlNzBcdTVlNzFcdTVlNzVcdTVlNzdcdTVlNzlcdTVlN2Vc''@;'; put 'put ''dTVlODFcdTVlODJcdTVlODNcdTVlODVcdTVlODhcdTVlODlcdTVlOGNcdTVlOGRcdTVlOGVcdTVlOTJcdTVlOThcdTVlOWJcdTVlOWRcdTVlYTFcdTVlYTJcdTVlYTNcdTVlYTRcdTVlYThcdTVlYTlcdTVlYWFcdTVlYWJcdTVlYWNcdTVlYWVcdTVlYWZcdTVlYjBcdTVlYjFcdTVlYjJcdTVl''@;'; put 'put ''YjRcdTVlYmFcdTVlYmJcdTVlYmNcdTVlYmRcdTVlYmZcdTVlYzBcdTVlYzFcdTVlYzJcdTVlYzNcdTVlYzRcdTVlYzVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQyXVtFXV09MzYzNTIr''@;'; put 'put ''RSxMWzM2MzUyK0VdPUJbMTQyXVtFXSk7Zm9yKEJbMTQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZWM2XHU1ZWM3XHU1ZWM4XHU1ZWNiXHU1ZWNjXHU1ZWNkXHU1ZWNlXHU1ZWNmXHU1ZWQwXHU1ZWQ0XHU1ZWQ1XHU1ZWQ3XHU1''@;'; put 'put ''ZWQ4XHU1ZWQ5XHU1ZWRhXHU1ZWRjXHU1ZWRkXHU1ZWRlXHU1ZWRmXHU1ZWUwXHU1ZWUxXHU1ZWUyXHU1ZWUzXHU1ZWU0XHU1ZWU1XHU1ZWU2XHU1ZWU3XHU1ZWU5XHU1ZWViXHU1ZWVjXHU1ZWVkXHU1ZWVlXHU1ZWVmXHU1ZWYwXHU1ZWYxXHU1ZWYyXHU1ZWYzXHU1ZWY1XHU1ZWY4XHU1ZWY5''@;'; put 'put ''XHU1ZWZiXHU1ZWZjXHU1ZWZkXHU1ZjA1XHU1ZjA2XHU1ZjA3XHU1ZjA5XHU1ZjBjXHU1ZjBkXHU1ZjBlXHU1ZjEwXHU1ZjEyXHU1ZjE0XHU1ZjE2XHU1ZjE5XHU1ZjFhXHU1ZjFjXHU1ZjFkXHU1ZjFlXHU1ZjIxXHU1ZjIyXHU1ZjIzXHU1ZjI0XHVmZmZkXHU1ZjI4XHU1ZjJiXHU1ZjJjXHU1''@;'; put 'put ''ZjJlXHU1ZjMwXHU1ZjMyXHU1ZjMzXHU1ZjM0XHU1ZjM1XHU1ZjM2XHU1ZjM3XHU1ZjM4XHU1ZjNiXHU1ZjNkXHU1ZjNlXHU1ZjNmXHU1ZjQxXHU1ZjQyXHU1ZjQzXHU1ZjQ0XHU1ZjQ1XHU1ZjQ2XHU1ZjQ3XHU1ZjQ4XHU1ZjQ5XHU1ZjRhXHU1ZjRiXHU1ZjRjXHU1ZjRkXHU1ZjRlXHU1ZjRm''@;'; put 'put ''XHU1ZjUxXHU1ZjU0XHU1ZjU5XHU1ZjVhXHU1ZjViXHU1ZjVjXHU1ZjVlXHU1ZjVmXHU1ZjYwXHU1ZjYzXHU1ZjY1XHU1ZjY3XHU1ZjY4XHU1ZjZiXHU1ZjZlXHU1ZjZmXHU1ZjcyXHU1Zjc0XHU1Zjc1XHU1Zjc2XHU1Zjc4XHU1ZjdhXHU1ZjdkXHU1ZjdlXHU1ZjdmXHU1ZjgzXHU1Zjg2XHU1''@;'; put 'put ''ZjhkXHU1ZjhlXHU1ZjhmXHU1ZjkxXHU1ZjkzXHU1Zjk0XHU1Zjk2XHU1ZjlhXHU1ZjliXHU1ZjlkXHU1ZjllXHU1ZjlmXHU1ZmEwXHU1ZmEyXHU1ZmEzXHU1ZmE0XHU1ZmE1XHU1ZmE2XHU1ZmE3XHU1ZmE5XHU1ZmFiXHU1ZmFjXHU1ZmFmXHU1ZmIwXHU1ZmIxXHU1ZmIyXHU1ZmIzXHU1ZmI0''@;'; put 'put ''XHU1ZmI2XHU1ZmI4XHU1ZmI5XHU1ZmJhXHU1ZmJiXHU1ZmJlXHU1ZmJmXHU1ZmMwXHU1ZmMxXHU1ZmMyXHU1ZmM3XHU1ZmM4XHU1ZmNhXHU1ZmNiXHU1ZmNlXHU1ZmQzXHU1ZmQ0XHU1ZmQ1XHU1ZmRhXHU1ZmRiXHU1ZmRjXHU1ZmRlXHU1ZmRmXHU1ZmUyXHU1ZmUzXHU1ZmU1XHU1ZmU2XHU1''@;'; put 'put ''ZmU4XHU1ZmU5XHU1ZmVjXHU1ZmVmXHU1ZmYwXHU1ZmYyXHU1ZmYzXHU1ZmY0XHU1ZmY2XHU1ZmY3XHU1ZmY5XHU1ZmZhXHU1ZmZjXHU2MDA3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0''@;'; put 'put ''M11bRV1dPTM2NjA4K0UsTFszNjYwOCtFXT1CWzE0M11bRV0pO2ZvcihCWzE0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjAwOFx1NjAwOVx1NjAwYlx1NjAwY1x1NjAxMFx1NjAxMVx1NjAxM1x1NjAxN1x1NjAxOFx1NjAxYVx1''@;'; put 'put ''NjAxZVx1NjAxZlx1NjAyMlx1NjAyM1x1NjAyNFx1NjAyY1x1NjAyZFx1NjAyZVx1NjAzMFx1NjAzMVx1NjAzMlx1NjAzM1x1NjAzNFx1NjAzNlx1NjAzN1x1NjAzOFx1NjAzOVx1NjAzYVx1NjAzZFx1NjAzZVx1NjA0MFx1NjA0NFx1NjA0NVx1NjA0Nlx1NjA0N1x1NjA0OFx1NjA0OVx1NjA0''@;'; put 'put ''YVx1NjA0Y1x1NjA0ZVx1NjA0Zlx1NjA1MVx1NjA1M1x1NjA1NFx1NjA1Nlx1NjA1N1x1NjA1OFx1NjA1Ylx1NjA1Y1x1NjA1ZVx1NjA1Zlx1NjA2MFx1NjA2MVx1NjA2NVx1NjA2Nlx1NjA2ZVx1NjA3MVx1NjA3Mlx1NjA3NFx1NjA3NVx1NjA3N1x1NjA3ZVx1NjA4MFx1ZmZmZFx1NjA4MVx1''@;'; put 'put ''NjA4Mlx1NjA4NVx1NjA4Nlx1NjA4N1x1NjA4OFx1NjA4YVx1NjA4Ylx1NjA4ZVx1NjA4Zlx1NjA5MFx1NjA5MVx1NjA5M1x1NjA5NVx1NjA5N1x1NjA5OFx1NjA5OVx1NjA5Y1x1NjA5ZVx1NjBhMVx1NjBhMlx1NjBhNFx1NjBhNVx1NjBhN1x1NjBhOVx1NjBhYVx1NjBhZVx1NjBiMFx1NjBi''@;'; put 'put ''M1x1NjBiNVx1NjBiNlx1NjBiN1x1NjBiOVx1NjBiYVx1NjBiZFx1NjBiZVx1NjBiZlx1NjBjMFx1NjBjMVx1NjBjMlx1NjBjM1x1NjBjNFx1NjBjN1x1NjBjOFx1NjBjOVx1NjBjY1x1NjBjZFx1NjBjZVx1NjBjZlx1NjBkMFx1NjBkMlx1NjBkM1x1NjBkNFx1NjBkNlx1NjBkN1x1NjBkOVx1''@;'; put 'put ''NjBkYlx1NjBkZVx1NjBlMVx1NjBlMlx1NjBlM1x1NjBlNFx1NjBlNVx1NjBlYVx1NjBmMVx1NjBmMlx1NjBmNVx1NjBmN1x1NjBmOFx1NjBmYlx1NjBmY1x1NjBmZFx1NjBmZVx1NjBmZlx1NjEwMlx1NjEwM1x1NjEwNFx1NjEwNVx1NjEwN1x1NjEwYVx1NjEwYlx1NjEwY1x1NjExMFx1NjEx''@;'; put 'put ''MVx1NjExMlx1NjExM1x1NjExNFx1NjExNlx1NjExN1x1NjExOFx1NjExOVx1NjExYlx1NjExY1x1NjExZFx1NjExZVx1NjEyMVx1NjEyMlx1NjEyNVx1NjEyOFx1NjEyOVx1NjEyYVx1NjEyY1x1NjEyZFx1NjEyZVx1NjEyZlx1NjEzMFx1NjEzMVx1NjEzMlx1NjEzM1x1NjEzNFx1NjEzNVx1''@;'; put 'put ''NjEzNlx1NjEzN1x1NjEzOFx1NjEzOVx1NjEzYVx1NjEzYlx1NjEzY1x1NjEzZFx1NjEzZVx1NjE0MFx1NjE0MVx1NjE0Mlx1NjE0M1x1NjE0NFx1NjE0NVx1NjE0Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ0XVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoZ2VbQlsxNDRdW0VdXT0zNjg2NCtFLExbMzY4NjQrRV09QlsxNDRdW0VdKTtmb3IoQlsxNDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxNDdcdTYxNDlcdTYxNGJcdTYxNGRcdTYxNGZcdTYxNTBcdTYxNTJcdTYxNTNc''@;'; put 'put ''dTYxNTRcdTYxNTZcdTYxNTdcdTYxNThcdTYxNTlcdTYxNWFcdTYxNWJcdTYxNWNcdTYxNWVcdTYxNWZcdTYxNjBcdTYxNjFcdTYxNjNcdTYxNjRcdTYxNjVcdTYxNjZcdTYxNjlcdTYxNmFcdTYxNmJcdTYxNmNcdTYxNmRcdTYxNmVcdTYxNmZcdTYxNzFcdTYxNzJcdTYxNzNcdTYxNzRcdTYx''@;'; put 'put ''NzZcdTYxNzhcdTYxNzlcdTYxN2FcdTYxN2JcdTYxN2NcdTYxN2RcdTYxN2VcdTYxN2ZcdTYxODBcdTYxODFcdTYxODJcdTYxODNcdTYxODRcdTYxODVcdTYxODZcdTYxODdcdTYxODhcdTYxODlcdTYxOGFcdTYxOGNcdTYxOGRcdTYxOGZcdTYxOTBcdTYxOTFcdTYxOTJcdTYxOTNcdTYxOTVc''@;'; put 'put ''dWZmZmRcdTYxOTZcdTYxOTdcdTYxOThcdTYxOTlcdTYxOWFcdTYxOWJcdTYxOWNcdTYxOWVcdTYxOWZcdTYxYTBcdTYxYTFcdTYxYTJcdTYxYTNcdTYxYTRcdTYxYTVcdTYxYTZcdTYxYWFcdTYxYWJcdTYxYWRcdTYxYWVcdTYxYWZcdTYxYjBcdTYxYjFcdTYxYjJcdTYxYjNcdTYxYjRcdTYx''@;'; put 'put ''YjVcdTYxYjZcdTYxYjhcdTYxYjlcdTYxYmFcdTYxYmJcdTYxYmNcdTYxYmRcdTYxYmZcdTYxYzBcdTYxYzFcdTYxYzNcdTYxYzRcdTYxYzVcdTYxYzZcdTYxYzdcdTYxYzlcdTYxY2NcdTYxY2RcdTYxY2VcdTYxY2ZcdTYxZDBcdTYxZDNcdTYxZDVcdTYxZDZcdTYxZDdcdTYxZDhcdTYxZDlc''@;'; put 'put ''dTYxZGFcdTYxZGJcdTYxZGNcdTYxZGRcdTYxZGVcdTYxZGZcdTYxZTBcdTYxZTFcdTYxZTJcdTYxZTNcdTYxZTRcdTYxZTVcdTYxZTdcdTYxZThcdTYxZTlcdTYxZWFcdTYxZWJcdTYxZWNcdTYxZWRcdTYxZWVcdTYxZWZcdTYxZjBcdTYxZjFcdTYxZjJcdTYxZjNcdTYxZjRcdTYxZjZcdTYx''@;'; put 'put ''ZjdcdTYxZjhcdTYxZjlcdTYxZmFcdTYxZmJcdTYxZmNcdTYxZmRcdTYxZmVcdTYyMDBcdTYyMDFcdTYyMDJcdTYyMDNcdTYyMDRcdTYyMDVcdTYyMDdcdTYyMDlcdTYyMTNcdTYyMTRcdTYyMTlcdTYyMWNcdTYyMWRcdTYyMWVcdTYyMjBcdTYyMjNcdTYyMjZcdTYyMjdcdTYyMjhcdTYyMjlc''@;'; put 'put ''dTYyMmJcdTYyMmRcdTYyMmZcdTYyMzBcdTYyMzFcdTYyMzJcdTYyMzVcdTYyMzZcdTYyMzhcdTYyMzlcdTYyM2FcdTYyM2JcdTYyM2NcdTYyNDJcdTYyNDRcdTYyNDVcdTYyNDZcdTYyNGFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0NV1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQ1XVtFXV09MzcxMjArRSxMWzM3MTIwK0VdPUJbMTQ1XVtFXSk7Zm9yKEJbMTQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MjRmXHU2MjUwXHU2MjU1XHU2MjU2XHU2MjU3XHU2MjU5''@;'; put 'put ''XHU2MjVhXHU2MjVjXHU2MjVkXHU2MjVlXHU2MjVmXHU2MjYwXHU2MjYxXHU2MjYyXHU2MjY0XHU2MjY1XHU2MjY4XHU2MjcxXHU2MjcyXHU2Mjc0XHU2Mjc1XHU2Mjc3XHU2Mjc4XHU2MjdhXHU2MjdiXHU2MjdkXHU2MjgxXHU2MjgyXHU2MjgzXHU2Mjg1XHU2Mjg2XHU2Mjg3XHU2Mjg4XHU2''@;'; put 'put ''MjhiXHU2MjhjXHU2MjhkXHU2MjhlXHU2MjhmXHU2MjkwXHU2Mjk0XHU2Mjk5XHU2MjljXHU2MjlkXHU2MjllXHU2MmEzXHU2MmE2XHU2MmE3XHU2MmE5XHU2MmFhXHU2MmFkXHU2MmFlXHU2MmFmXHU2MmIwXHU2MmIyXHU2MmIzXHU2MmI0XHU2MmI2XHU2MmI3XHU2MmI4XHU2MmJhXHU2MmJl''@;'; put 'put ''XHU2MmMwXHU2MmMxXHVmZmZkXHU2MmMzXHU2MmNiXHU2MmNmXHU2MmQxXHU2MmQ1XHU2MmRkXHU2MmRlXHU2MmUwXHU2MmUxXHU2MmU0XHU2MmVhXHU2MmViXHU2MmYwXHU2MmYyXHU2MmY1XHU2MmY4XHU2MmY5XHU2MmZhXHU2MmZiXHU2MzAwXHU2MzAzXHU2MzA0XHU2MzA1XHU2MzA2XHU2''@;'; put 'put ''MzBhXHU2MzBiXHU2MzBjXHU2MzBkXHU2MzBmXHU2MzEwXHU2MzEyXHU2MzEzXHU2MzE0XHU2MzE1XHU2MzE3XHU2MzE4XHU2MzE5XHU2MzFjXHU2MzI2XHU2MzI3XHU2MzI5XHU2MzJjXHU2MzJkXHU2MzJlXHU2MzMwXHU2MzMxXHU2MzMzXHU2MzM0XHU2MzM1XHU2MzM2XHU2MzM3XHU2MzM4''@;'; put 'put ''XHU2MzNiXHU2MzNjXHU2MzNlXHU2MzNmXHU2MzQwXHU2MzQxXHU2MzQ0XHU2MzQ3XHU2MzQ4XHU2MzRhXHU2MzUxXHU2MzUyXHU2MzUzXHU2MzU0XHU2MzU2XHU2MzU3XHU2MzU4XHU2MzU5XHU2MzVhXHU2MzViXHU2MzVjXHU2MzVkXHU2MzYwXHU2MzY0XHU2MzY1XHU2MzY2XHU2MzY4XHU2''@;'; put 'put ''MzZhXHU2MzZiXHU2MzZjXHU2MzZmXHU2MzcwXHU2MzcyXHU2MzczXHU2Mzc0XHU2Mzc1XHU2Mzc4XHU2Mzc5XHU2MzdjXHU2MzdkXHU2MzdlXHU2MzdmXHU2MzgxXHU2MzgzXHU2Mzg0XHU2Mzg1XHU2Mzg2XHU2MzhiXHU2MzhkXHU2MzkxXHU2MzkzXHU2Mzk0XHU2Mzk1XHU2Mzk3XHU2Mzk5''@;'; put 'put ''XHU2MzlhXHU2MzliXHU2MzljXHU2MzlkXHU2MzllXHU2MzlmXHU2M2ExXHU2M2E0XHU2M2E2XHU2M2FiXHU2M2FmXHU2M2IxXHU2M2IyXHU2M2I1XHU2M2I2XHU2M2I5XHU2M2JiXHU2M2JkXHU2M2JmXHU2M2MwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ2XS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxNDZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0Nl1bRV1dPTM3Mzc2K0UsTFszNzM3NitFXT1CWzE0Nl1bRV0pO2ZvcihCWzE0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjNjMVx1NjNjMlx1NjNjM1x1NjNj''@;'; put 'put ''NVx1NjNjN1x1NjNjOFx1NjNjYVx1NjNjYlx1NjNjY1x1NjNkMVx1NjNkM1x1NjNkNFx1NjNkNVx1NjNkN1x1NjNkOFx1NjNkOVx1NjNkYVx1NjNkYlx1NjNkY1x1NjNkZFx1NjNkZlx1NjNlMlx1NjNlNFx1NjNlNVx1NjNlNlx1NjNlN1x1NjNlOFx1NjNlYlx1NjNlY1x1NjNlZVx1NjNlZlx1''@;'; put 'put ''NjNmMFx1NjNmMVx1NjNmM1x1NjNmNVx1NjNmN1x1NjNmOVx1NjNmYVx1NjNmYlx1NjNmY1x1NjNmZVx1NjQwM1x1NjQwNFx1NjQwNlx1NjQwN1x1NjQwOFx1NjQwOVx1NjQwYVx1NjQwZFx1NjQwZVx1NjQxMVx1NjQxMlx1NjQxNVx1NjQxNlx1NjQxN1x1NjQxOFx1NjQxOVx1NjQxYVx1NjQx''@;'; put 'put ''ZFx1NjQxZlx1NjQyMlx1NjQyM1x1NjQyNFx1ZmZmZFx1NjQyNVx1NjQyN1x1NjQyOFx1NjQyOVx1NjQyYlx1NjQyZVx1NjQyZlx1NjQzMFx1NjQzMVx1NjQzMlx1NjQzM1x1NjQzNVx1NjQzNlx1NjQzN1x1NjQzOFx1NjQzOVx1NjQzYlx1NjQzY1x1NjQzZVx1NjQ0MFx1NjQ0Mlx1NjQ0M1x1''@;'; put 'put ''NjQ0OVx1NjQ0Ylx1NjQ0Y1x1NjQ0ZFx1NjQ0ZVx1NjQ0Zlx1NjQ1MFx1NjQ1MVx1NjQ1M1x1NjQ1NVx1NjQ1Nlx1NjQ1N1x1NjQ1OVx1NjQ1YVx1NjQ1Ylx1NjQ1Y1x1NjQ1ZFx1NjQ1Zlx1NjQ2MFx1NjQ2MVx1NjQ2Mlx1NjQ2M1x1NjQ2NFx1NjQ2NVx1NjQ2Nlx1NjQ2OFx1NjQ2YVx1NjQ2''@;'; put 'put ''Ylx1NjQ2Y1x1NjQ2ZVx1NjQ2Zlx1NjQ3MFx1NjQ3MVx1NjQ3Mlx1NjQ3M1x1NjQ3NFx1NjQ3NVx1NjQ3Nlx1NjQ3N1x1NjQ3Ylx1NjQ3Y1x1NjQ3ZFx1NjQ3ZVx1NjQ3Zlx1NjQ4MFx1NjQ4MVx1NjQ4M1x1NjQ4Nlx1NjQ4OFx1NjQ4OVx1NjQ4YVx1NjQ4Ylx1NjQ4Y1x1NjQ4ZFx1NjQ4ZVx1''@;'; put 'put ''NjQ4Zlx1NjQ5MFx1NjQ5M1x1NjQ5NFx1NjQ5N1x1NjQ5OFx1NjQ5YVx1NjQ5Ylx1NjQ5Y1x1NjQ5ZFx1NjQ5Zlx1NjRhMFx1NjRhMVx1NjRhMlx1NjRhM1x1NjRhNVx1NjRhNlx1NjRhN1x1NjRhOFx1NjRhYVx1NjRhYlx1NjRhZlx1NjRiMVx1NjRiMlx1NjRiM1x1NjRiNFx1NjRiNlx1NjRi''@;'; put 'put ''OVx1NjRiYlx1NjRiZFx1NjRiZVx1NjRiZlx1NjRjMVx1NjRjM1x1NjRjNFx1NjRjNlx1NjRjN1x1NjRjOFx1NjRjOVx1NjRjYVx1NjRjYlx1NjRjY1x1NjRjZlx1NjRkMVx1NjRkM1x1NjRkNFx1NjRkNVx1NjRkNlx1NjRkOVx1NjRkYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0N10u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDddW0VdXT0zNzYzMitFLExbMzc2MzIrRV09QlsxNDddW0VdKTtmb3IoQlsxNDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0ZGJcdTY0''@;'; put 'put ''ZGNcdTY0ZGRcdTY0ZGZcdTY0ZTBcdTY0ZTFcdTY0ZTNcdTY0ZTVcdTY0ZTdcdTY0ZThcdTY0ZTlcdTY0ZWFcdTY0ZWJcdTY0ZWNcdTY0ZWRcdTY0ZWVcdTY0ZWZcdTY0ZjBcdTY0ZjFcdTY0ZjJcdTY0ZjNcdTY0ZjRcdTY0ZjVcdTY0ZjZcdTY0ZjdcdTY0ZjhcdTY0ZjlcdTY0ZmFcdTY0ZmJc''@;'; put 'put ''dTY0ZmNcdTY0ZmRcdTY0ZmVcdTY0ZmZcdTY1MDFcdTY1MDJcdTY1MDNcdTY1MDRcdTY1MDVcdTY1MDZcdTY1MDdcdTY1MDhcdTY1MGFcdTY1MGJcdTY1MGNcdTY1MGRcdTY1MGVcdTY1MGZcdTY1MTBcdTY1MTFcdTY1MTNcdTY1MTRcdTY1MTVcdTY1MTZcdTY1MTdcdTY1MTlcdTY1MWFcdTY1''@;'; put 'put ''MWJcdTY1MWNcdTY1MWRcdTY1MWVcdTY1MWZcdTY1MjBcdTY1MjFcdWZmZmRcdTY1MjJcdTY1MjNcdTY1MjRcdTY1MjZcdTY1MjdcdTY1MjhcdTY1MjlcdTY1MmFcdTY1MmNcdTY1MmRcdTY1MzBcdTY1MzFcdTY1MzJcdTY1MzNcdTY1MzdcdTY1M2FcdTY1M2NcdTY1M2RcdTY1NDBcdTY1NDFc''@;'; put 'put ''dTY1NDJcdTY1NDNcdTY1NDRcdTY1NDZcdTY1NDdcdTY1NGFcdTY1NGJcdTY1NGRcdTY1NGVcdTY1NTBcdTY1NTJcdTY1NTNcdTY1NTRcdTY1NTdcdTY1NThcdTY1NWFcdTY1NWNcdTY1NWZcdTY1NjBcdTY1NjFcdTY1NjRcdTY1NjVcdTY1NjdcdTY1NjhcdTY1NjlcdTY1NmFcdTY1NmRcdTY1''@;'; put 'put ''NmVcdTY1NmZcdTY1NzFcdTY1NzNcdTY1NzVcdTY1NzZcdTY1NzhcdTY1NzlcdTY1N2FcdTY1N2JcdTY1N2NcdTY1N2RcdTY1N2VcdTY1N2ZcdTY1ODBcdTY1ODFcdTY1ODJcdTY1ODNcdTY1ODRcdTY1ODVcdTY1ODZcdTY1ODhcdTY1ODlcdTY1OGFcdTY1OGRcdTY1OGVcdTY1OGZcdTY1OTJc''@;'; put 'put ''dTY1OTRcdTY1OTVcdTY1OTZcdTY1OThcdTY1OWFcdTY1OWRcdTY1OWVcdTY1YTBcdTY1YTJcdTY1YTNcdTY1YTZcdTY1YThcdTY1YWFcdTY1YWNcdTY1YWVcdTY1YjFcdTY1YjJcdTY1YjNcdTY1YjRcdTY1YjVcdTY1YjZcdTY1YjdcdTY1YjhcdTY1YmFcdTY1YmJcdTY1YmVcdTY1YmZcdTY1''@;'; put 'put ''YzBcdTY1YzJcdTY1YzdcdTY1YzhcdTY1YzlcdTY1Y2FcdTY1Y2RcdTY1ZDBcdTY1ZDFcdTY1ZDNcdTY1ZDRcdTY1ZDVcdTY1ZDhcdTY1ZDlcdTY1ZGFcdTY1ZGJcdTY1ZGNcdTY1ZGRcdTY1ZGVcdTY1ZGZcdTY1ZTFcdTY1ZTNcdTY1ZTRcdTY1ZWFcdTY1ZWJcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxNDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQ4XVtFXV09Mzc4ODgrRSxMWzM3ODg4K0VdPUJbMTQ4XVtFXSk7Zm9yKEJbMTQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU2NWYyXHU2NWYzXHU2NWY0XHU2NWY1XHU2NWY4XHU2NWY5XHU2NWZiXHU2NWZjXHU2NWZkXHU2NWZlXHU2NWZmXHU2NjAxXHU2NjA0XHU2NjA1XHU2NjA3XHU2NjA4XHU2NjA5XHU2NjBiXHU2NjBkXHU2NjEwXHU2NjExXHU2NjEyXHU2NjE2XHU2NjE3XHU2NjE4XHU2NjFhXHU2NjFi''@;'; put 'put ''XHU2NjFjXHU2NjFlXHU2NjIxXHU2NjIyXHU2NjIzXHU2NjI0XHU2NjI2XHU2NjI5XHU2NjJhXHU2NjJiXHU2NjJjXHU2NjJlXHU2NjMwXHU2NjMyXHU2NjMzXHU2NjM3XHU2NjM4XHU2NjM5XHU2NjNhXHU2NjNiXHU2NjNkXHU2NjNmXHU2NjQwXHU2NjQyXHU2NjQ0XHU2NjQ1XHU2NjQ2XHU2''@;'; put 'put ''NjQ3XHU2NjQ4XHU2NjQ5XHU2NjRhXHU2NjRkXHU2NjRlXHU2NjUwXHU2NjUxXHU2NjU4XHVmZmZkXHU2NjU5XHU2NjViXHU2NjVjXHU2NjVkXHU2NjVlXHU2NjYwXHU2NjYyXHU2NjYzXHU2NjY1XHU2NjY3XHU2NjY5XHU2NjZhXHU2NjZiXHU2NjZjXHU2NjZkXHU2NjcxXHU2NjcyXHU2Njcz''@;'; put 'put ''XHU2Njc1XHU2Njc4XHU2Njc5XHU2NjdiXHU2NjdjXHU2NjdkXHU2NjdmXHU2NjgwXHU2NjgxXHU2NjgzXHU2Njg1XHU2Njg2XHU2Njg4XHU2Njg5XHU2NjhhXHU2NjhiXHU2NjhkXHU2NjhlXHU2NjhmXHU2NjkwXHU2NjkyXHU2NjkzXHU2Njk0XHU2Njk1XHU2Njk4XHU2Njk5XHU2NjlhXHU2''@;'; put 'put ''NjliXHU2NjljXHU2NjllXHU2NjlmXHU2NmEwXHU2NmExXHU2NmEyXHU2NmEzXHU2NmE0XHU2NmE1XHU2NmE2XHU2NmE5XHU2NmFhXHU2NmFiXHU2NmFjXHU2NmFkXHU2NmFmXHU2NmIwXHU2NmIxXHU2NmIyXHU2NmIzXHU2NmI1XHU2NmI2XHU2NmI3XHU2NmI4XHU2NmJhXHU2NmJiXHU2NmJj''@;'; put 'put ''XHU2NmJkXHU2NmJmXHU2NmMwXHU2NmMxXHU2NmMyXHU2NmMzXHU2NmM0XHU2NmM1XHU2NmM2XHU2NmM3XHU2NmM4XHU2NmM5XHU2NmNhXHU2NmNiXHU2NmNjXHU2NmNkXHU2NmNlXHU2NmNmXHU2NmQwXHU2NmQxXHU2NmQyXHU2NmQzXHU2NmQ0XHU2NmQ1XHU2NmQ2XHU2NmQ3XHU2NmQ4XHU2''@;'; put 'put ''NmRhXHU2NmRlXHU2NmRmXHU2NmUwXHU2NmUxXHU2NmUyXHU2NmUzXHU2NmU0XHU2NmU1XHU2NmU3XHU2NmU4XHU2NmVhXHU2NmViXHU2NmVjXHU2NmVkXHU2NmVlXHU2NmVmXHU2NmYxXHU2NmY1XHU2NmY2XHU2NmY4XHU2NmZhXHU2NmZiXHU2NmZkXHU2NzAxXHU2NzAyXHU2NzAzXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTQ5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0OV1bRV1dPTM4MTQ0K0UsTFszODE0NCtFXT1CWzE0OV1bRV0pO2ZvcihCWzE1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1NjcwNFx1NjcwNVx1NjcwNlx1NjcwN1x1NjcwY1x1NjcwZVx1NjcwZlx1NjcxMVx1NjcxMlx1NjcxM1x1NjcxNlx1NjcxOFx1NjcxOVx1NjcxYVx1NjcxY1x1NjcxZVx1NjcyMFx1NjcyMVx1NjcyMlx1NjcyM1x1NjcyNFx1NjcyNVx1NjcyN1x1NjcyOVx1Njcy''@;'; put 'put ''ZVx1NjczMFx1NjczMlx1NjczM1x1NjczNlx1NjczN1x1NjczOFx1NjczOVx1NjczYlx1NjczY1x1NjczZVx1NjczZlx1Njc0MVx1Njc0NFx1Njc0NVx1Njc0N1x1Njc0YVx1Njc0Ylx1Njc0ZFx1Njc1Mlx1Njc1NFx1Njc1NVx1Njc1N1x1Njc1OFx1Njc1OVx1Njc1YVx1Njc1Ylx1Njc1ZFx1''@;'; put 'put ''Njc2Mlx1Njc2M1x1Njc2NFx1Njc2Nlx1Njc2N1x1Njc2Ylx1Njc2Y1x1Njc2ZVx1Njc3MVx1Njc3NFx1Njc3Nlx1ZmZmZFx1Njc3OFx1Njc3OVx1Njc3YVx1Njc3Ylx1Njc3ZFx1Njc4MFx1Njc4Mlx1Njc4M1x1Njc4NVx1Njc4Nlx1Njc4OFx1Njc4YVx1Njc4Y1x1Njc4ZFx1Njc4ZVx1Njc4''@;'; put 'put ''Zlx1Njc5MVx1Njc5Mlx1Njc5M1x1Njc5NFx1Njc5Nlx1Njc5OVx1Njc5Ylx1Njc5Zlx1NjdhMFx1NjdhMVx1NjdhNFx1NjdhNlx1NjdhOVx1NjdhY1x1NjdhZVx1NjdiMVx1NjdiMlx1NjdiNFx1NjdiOVx1NjdiYVx1NjdiYlx1NjdiY1x1NjdiZFx1NjdiZVx1NjdiZlx1NjdjMFx1NjdjMlx1''@;'; put 'put ''NjdjNVx1NjdjNlx1NjdjN1x1NjdjOFx1NjdjOVx1NjdjYVx1NjdjYlx1NjdjY1x1NjdjZFx1NjdjZVx1NjdkNVx1NjdkNlx1NjdkN1x1NjdkYlx1NjdkZlx1NjdlMVx1NjdlM1x1NjdlNFx1NjdlNlx1NjdlN1x1NjdlOFx1NjdlYVx1NjdlYlx1NjdlZFx1NjdlZVx1NjdmMlx1NjdmNVx1Njdm''@;'; put 'put ''Nlx1NjdmN1x1NjdmOFx1NjdmOVx1NjdmYVx1NjdmYlx1NjdmY1x1NjdmZVx1NjgwMVx1NjgwMlx1NjgwM1x1NjgwNFx1NjgwNlx1NjgwZFx1NjgxMFx1NjgxMlx1NjgxNFx1NjgxNVx1NjgxOFx1NjgxOVx1NjgxYVx1NjgxYlx1NjgxY1x1NjgxZVx1NjgxZlx1NjgyMFx1NjgyMlx1NjgyM1x1''@;'; put 'put ''NjgyNFx1NjgyNVx1NjgyNlx1NjgyN1x1NjgyOFx1NjgyYlx1NjgyY1x1NjgyZFx1NjgyZVx1NjgyZlx1NjgzMFx1NjgzMVx1NjgzNFx1NjgzNVx1NjgzNlx1NjgzYVx1NjgzYlx1NjgzZlx1Njg0N1x1Njg0Ylx1Njg0ZFx1Njg0Zlx1Njg1Mlx1Njg1Nlx1Njg1N1x1Njg1OFx1Njg1OVx1Njg1''@;'; put 'put ''YVx1Njg1Ylx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTBdW0VdXT0zODQwMCtFLExbMzg0MDArRV09QlsxNTBdW0VdKTtmb3IoQlsxNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY4NWNcdTY4NWRcdTY4NWVcdTY4NWZcdTY4NmFcdTY4NmNcdTY4NmRcdTY4NmVcdTY4NmZcdTY4NzBcdTY4NzFcdTY4NzJcdTY4NzNcdTY4NzVcdTY4NzhcdTY4NzlcdTY4N2FcdTY4N2JcdTY4N2NcdTY4N2RcdTY4N2VcdTY4N2ZcdTY4''@;'; put 'put ''ODBcdTY4ODJcdTY4ODRcdTY4ODdcdTY4ODhcdTY4ODlcdTY4OGFcdTY4OGJcdTY4OGNcdTY4OGRcdTY4OGVcdTY4OTBcdTY4OTFcdTY4OTJcdTY4OTRcdTY4OTVcdTY4OTZcdTY4OThcdTY4OTlcdTY4OWFcdTY4OWJcdTY4OWNcdTY4OWRcdTY4OWVcdTY4OWZcdTY4YTBcdTY4YTFcdTY4YTNc''@;'; put 'put ''dTY4YTRcdTY4YTVcdTY4YTlcdTY4YWFcdTY4YWJcdTY4YWNcdTY4YWVcdTY4YjFcdTY4YjJcdTY4YjRcdTY4YjZcdTY4YjdcdTY4YjhcdWZmZmRcdTY4YjlcdTY4YmFcdTY4YmJcdTY4YmNcdTY4YmRcdTY4YmVcdTY4YmZcdTY4YzFcdTY4YzNcdTY4YzRcdTY4YzVcdTY4YzZcdTY4YzdcdTY4''@;'; put 'put ''YzhcdTY4Y2FcdTY4Y2NcdTY4Y2VcdTY4Y2ZcdTY4ZDBcdTY4ZDFcdTY4ZDNcdTY4ZDRcdTY4ZDZcdTY4ZDdcdTY4ZDlcdTY4ZGJcdTY4ZGNcdTY4ZGRcdTY4ZGVcdTY4ZGZcdTY4ZTFcdTY4ZTJcdTY4ZTRcdTY4ZTVcdTY4ZTZcdTY4ZTdcdTY4ZThcdTY4ZTlcdTY4ZWFcdTY4ZWJcdTY4ZWNc''@;'; put 'put ''dTY4ZWRcdTY4ZWZcdTY4ZjJcdTY4ZjNcdTY4ZjRcdTY4ZjZcdTY4ZjdcdTY4ZjhcdTY4ZmJcdTY4ZmRcdTY4ZmVcdTY4ZmZcdTY5MDBcdTY5MDJcdTY5MDNcdTY5MDRcdTY5MDZcdTY5MDdcdTY5MDhcdTY5MDlcdTY5MGFcdTY5MGNcdTY5MGZcdTY5MTFcdTY5MTNcdTY5MTRcdTY5MTVcdTY5''@;'; put 'put ''MTZcdTY5MTdcdTY5MThcdTY5MTlcdTY5MWFcdTY5MWJcdTY5MWNcdTY5MWRcdTY5MWVcdTY5MjFcdTY5MjJcdTY5MjNcdTY5MjVcdTY5MjZcdTY5MjdcdTY5MjhcdTY5MjlcdTY5MmFcdTY5MmJcdTY5MmNcdTY5MmVcdTY5MmZcdTY5MzFcdTY5MzJcdTY5MzNcdTY5MzVcdTY5MzZcdTY5Mzdc''@;'; put 'put ''dTY5MzhcdTY5M2FcdTY5M2JcdTY5M2NcdTY5M2VcdTY5NDBcdTY5NDFcdTY5NDNcdTY5NDRcdTY5NDVcdTY5NDZcdTY5NDdcdTY5NDhcdTY5NDlcdTY5NGFcdTY5NGJcdTY5NGNcdTY5NGRcdTY5NGVcdTY5NGZcdTY5NTBcdTY5NTFcdTY5NTJcdTY5NTNcdTY5NTVcdTY5NTZcdTY5NThcdTY5''@;'; put 'put ''NTlcdTY5NWJcdTY5NWNcdTY5NWZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTUxXVtFXV09Mzg2NTYrRSxMWzM4NjU2K0VdPUJbMTUxXVtFXSk7Zm9yKEJbMTUyXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTYxXHU2OTYyXHU2OTY0XHU2OTY1XHU2OTY3XHU2OTY4XHU2OTY5XHU2OTZhXHU2OTZjXHU2OTZkXHU2OTZmXHU2OTcwXHU2OTcyXHU2OTczXHU2OTc0XHU2OTc1XHU2OTc2XHU2OTdhXHU2OTdiXHU2OTdkXHU2''@;'; put 'put ''OTdlXHU2OTdmXHU2OTgxXHU2OTgzXHU2OTg1XHU2OThhXHU2OThiXHU2OThjXHU2OThlXHU2OThmXHU2OTkwXHU2OTkxXHU2OTkyXHU2OTkzXHU2OTk2XHU2OTk3XHU2OTk5XHU2OTlhXHU2OTlkXHU2OTllXHU2OTlmXHU2OWEwXHU2OWExXHU2OWEyXHU2OWEzXHU2OWE0XHU2OWE1XHU2OWE2''@;'; put 'put ''XHU2OWE5XHU2OWFhXHU2OWFjXHU2OWFlXHU2OWFmXHU2OWIwXHU2OWIyXHU2OWIzXHU2OWI1XHU2OWI2XHU2OWI4XHU2OWI5XHU2OWJhXHU2OWJjXHU2OWJkXHVmZmZkXHU2OWJlXHU2OWJmXHU2OWMwXHU2OWMyXHU2OWMzXHU2OWM0XHU2OWM1XHU2OWM2XHU2OWM3XHU2OWM4XHU2OWM5XHU2''@;'; put 'put ''OWNiXHU2OWNkXHU2OWNmXHU2OWQxXHU2OWQyXHU2OWQzXHU2OWQ1XHU2OWQ2XHU2OWQ3XHU2OWQ4XHU2OWQ5XHU2OWRhXHU2OWRjXHU2OWRkXHU2OWRlXHU2OWUxXHU2OWUyXHU2OWUzXHU2OWU0XHU2OWU1XHU2OWU2XHU2OWU3XHU2OWU4XHU2OWU5XHU2OWVhXHU2OWViXHU2OWVjXHU2OWVl''@;'; put 'put ''XHU2OWVmXHU2OWYwXHU2OWYxXHU2OWYzXHU2OWY0XHU2OWY1XHU2OWY2XHU2OWY3XHU2OWY4XHU2OWY5XHU2OWZhXHU2OWZiXHU2OWZjXHU2OWZlXHU2YTAwXHU2YTAxXHU2YTAyXHU2YTAzXHU2YTA0XHU2YTA1XHU2YTA2XHU2YTA3XHU2YTA4XHU2YTA5XHU2YTBiXHU2YTBjXHU2YTBkXHU2''@;'; put 'put ''YTBlXHU2YTBmXHU2YTEwXHU2YTExXHU2YTEyXHU2YTEzXHU2YTE0XHU2YTE1XHU2YTE2XHU2YTE5XHU2YTFhXHU2YTFiXHU2YTFjXHU2YTFkXHU2YTFlXHU2YTIwXHU2YTIyXHU2YTIzXHU2YTI0XHU2YTI1XHU2YTI2XHU2YTI3XHU2YTI5XHU2YTJiXHU2YTJjXHU2YTJkXHU2YTJlXHU2YTMw''@;'; put 'put ''XHU2YTMyXHU2YTMzXHU2YTM0XHU2YTM2XHU2YTM3XHU2YTM4XHU2YTM5XHU2YTNhXHU2YTNiXHU2YTNjXHU2YTNmXHU2YTQwXHU2YTQxXHU2YTQyXHU2YTQzXHU2YTQ1XHU2YTQ2XHU2YTQ4XHU2YTQ5XHU2YTRhXHU2YTRiXHU2YTRjXHU2YTRkXHU2YTRlXHU2YTRmXHU2YTUxXHU2YTUyXHU2''@;'; put 'put ''YTUzXHU2YTU0XHU2YTU1XHU2YTU2XHU2YTU3XHU2YTVhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTUyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1Ml1bRV1dPTM4OTEyK0UsTFszODkxMitFXT1CWzE1Ml1bRV0pO2ZvcihCWzE1M109''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE1Y1x1NmE1ZFx1NmE1ZVx1NmE1Zlx1NmE2MFx1NmE2Mlx1NmE2M1x1NmE2NFx1NmE2Nlx1NmE2N1x1NmE2OFx1NmE2OVx1NmE2YVx1NmE2Ylx1NmE2Y1x1NmE2ZFx1NmE2ZVx1NmE2Zlx1''@;'; put 'put ''NmE3MFx1NmE3Mlx1NmE3M1x1NmE3NFx1NmE3NVx1NmE3Nlx1NmE3N1x1NmE3OFx1NmE3YVx1NmE3Ylx1NmE3ZFx1NmE3ZVx1NmE3Zlx1NmE4MVx1NmE4Mlx1NmE4M1x1NmE4NVx1NmE4Nlx1NmE4N1x1NmE4OFx1NmE4OVx1NmE4YVx1NmE4Ylx1NmE4Y1x1NmE4ZFx1NmE4Zlx1NmE5Mlx1NmE5''@;'; put 'put ''M1x1NmE5NFx1NmE5NVx1NmE5Nlx1NmE5OFx1NmE5OVx1NmE5YVx1NmE5Ylx1NmE5Y1x1NmE5ZFx1NmE5ZVx1NmE5Zlx1NmFhMVx1NmFhMlx1NmFhM1x1NmFhNFx1NmFhNVx1NmFhNlx1ZmZmZFx1NmFhN1x1NmFhOFx1NmFhYVx1NmFhZFx1NmFhZVx1NmFhZlx1NmFiMFx1NmFiMVx1NmFiMlx1''@;'; put 'put ''NmFiM1x1NmFiNFx1NmFiNVx1NmFiNlx1NmFiN1x1NmFiOFx1NmFiOVx1NmFiYVx1NmFiYlx1NmFiY1x1NmFiZFx1NmFiZVx1NmFiZlx1NmFjMFx1NmFjMVx1NmFjMlx1NmFjM1x1NmFjNFx1NmFjNVx1NmFjNlx1NmFjN1x1NmFjOFx1NmFjOVx1NmFjYVx1NmFjYlx1NmFjY1x1NmFjZFx1NmFj''@;'; put 'put ''ZVx1NmFjZlx1NmFkMFx1NmFkMVx1NmFkMlx1NmFkM1x1NmFkNFx1NmFkNVx1NmFkNlx1NmFkN1x1NmFkOFx1NmFkOVx1NmFkYVx1NmFkYlx1NmFkY1x1NmFkZFx1NmFkZVx1NmFkZlx1NmFlMFx1NmFlMVx1NmFlMlx1NmFlM1x1NmFlNFx1NmFlNVx1NmFlNlx1NmFlN1x1NmFlOFx1NmFlOVx1''@;'; put 'put ''NmFlYVx1NmFlYlx1NmFlY1x1NmFlZFx1NmFlZVx1NmFlZlx1NmFmMFx1NmFmMVx1NmFmMlx1NmFmM1x1NmFmNFx1NmFmNVx1NmFmNlx1NmFmN1x1NmFmOFx1NmFmOVx1NmFmYVx1NmFmYlx1NmFmY1x1NmFmZFx1NmFmZVx1NmFmZlx1NmIwMFx1NmIwMVx1NmIwMlx1NmIwM1x1NmIwNFx1NmIw''@;'; put 'put ''NVx1NmIwNlx1NmIwN1x1NmIwOFx1NmIwOVx1NmIwYVx1NmIwYlx1NmIwY1x1NmIwZFx1NmIwZVx1NmIwZlx1NmIxMFx1NmIxMVx1NmIxMlx1NmIxM1x1NmIxNFx1NmIxNVx1NmIxNlx1NmIxN1x1NmIxOFx1NmIxOVx1NmIxYVx1NmIxYlx1NmIxY1x1NmIxZFx1NmIxZVx1NmIxZlx1NmIyNVx1''@;'; put 'put ''NmIyNlx1NmIyOFx1NmIyOVx1NmIyYVx1NmIyYlx1NmIyY1x1NmIyZFx1NmIyZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTNdW0VdXT0zOTE2OCtFLExbMzkxNjgrRV09QlsxNTNdW0Vd''@;'; put 'put ''KTtmb3IoQlsxNTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZiMmZcdTZiMzBcdTZiMzFcdTZiMzNcdTZiMzRcdTZiMzVcdTZiMzZcdTZiMzhcdTZiM2JcdTZiM2NcdTZiM2RcdTZiM2ZcdTZiNDBcdTZiNDFcdTZiNDJcdTZiNDRc''@;'; put 'put ''dTZiNDVcdTZiNDhcdTZiNGFcdTZiNGJcdTZiNGRcdTZiNGVcdTZiNGZcdTZiNTBcdTZiNTFcdTZiNTJcdTZiNTNcdTZiNTRcdTZiNTVcdTZiNTZcdTZiNTdcdTZiNThcdTZiNWFcdTZiNWJcdTZiNWNcdTZiNWRcdTZiNWVcdTZiNWZcdTZiNjBcdTZiNjFcdTZiNjhcdTZiNjlcdTZiNmJcdTZi''@;'; put 'put ''NmNcdTZiNmRcdTZiNmVcdTZiNmZcdTZiNzBcdTZiNzFcdTZiNzJcdTZiNzNcdTZiNzRcdTZiNzVcdTZiNzZcdTZiNzdcdTZiNzhcdTZiN2FcdTZiN2RcdTZiN2VcdTZiN2ZcdTZiODBcdTZiODVcdTZiODhcdWZmZmRcdTZiOGNcdTZiOGVcdTZiOGZcdTZiOTBcdTZiOTFcdTZiOTRcdTZiOTVc''@;'; put 'put ''dTZiOTdcdTZiOThcdTZiOTlcdTZiOWNcdTZiOWRcdTZiOWVcdTZiOWZcdTZiYTBcdTZiYTJcdTZiYTNcdTZiYTRcdTZiYTVcdTZiYTZcdTZiYTdcdTZiYThcdTZiYTlcdTZiYWJcdTZiYWNcdTZiYWRcdTZiYWVcdTZiYWZcdTZiYjBcdTZiYjFcdTZiYjJcdTZiYjZcdTZiYjhcdTZiYjlcdTZi''@;'; put 'put ''YmFcdTZiYmJcdTZiYmNcdTZiYmRcdTZiYmVcdTZiYzBcdTZiYzNcdTZiYzRcdTZiYzZcdTZiYzdcdTZiYzhcdTZiYzlcdTZiY2FcdTZiY2NcdTZiY2VcdTZiZDBcdTZiZDFcdTZiZDhcdTZiZGFcdTZiZGNcdTZiZGRcdTZiZGVcdTZiZGZcdTZiZTBcdTZiZTJcdTZiZTNcdTZiZTRcdTZiZTVc''@;'; put 'put ''dTZiZTZcdTZiZTdcdTZiZThcdTZiZTlcdTZiZWNcdTZiZWRcdTZiZWVcdTZiZjBcdTZiZjFcdTZiZjJcdTZiZjRcdTZiZjZcdTZiZjdcdTZiZjhcdTZiZmFcdTZiZmJcdTZiZmNcdTZiZmVcdTZiZmZcdTZjMDBcdTZjMDFcdTZjMDJcdTZjMDNcdTZjMDRcdTZjMDhcdTZjMDlcdTZjMGFcdTZj''@;'; put 'put ''MGJcdTZjMGNcdTZjMGVcdTZjMTJcdTZjMTdcdTZjMWNcdTZjMWRcdTZjMWVcdTZjMjBcdTZjMjNcdTZjMjVcdTZjMmJcdTZjMmNcdTZjMmRcdTZjMzFcdTZjMzNcdTZjMzZcdTZjMzdcdTZjMzlcdTZjM2FcdTZjM2JcdTZjM2NcdTZjM2VcdTZjM2ZcdTZjNDNcdTZjNDRcdTZjNDVcdTZjNDhc''@;'; put 'put ''dTZjNGJcdTZjNGNcdTZjNGRcdTZjNGVcdTZjNGZcdTZjNTFcdTZjNTJcdTZjNTNcdTZjNTZcdTZjNThcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTU0XVtFXV09Mzk0MjQrRSxMWzM5NDI0''@;'; put 'put ''K0VdPUJbMTU0XVtFXSk7Zm9yKEJbMTU1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzU5XHU2YzVhXHU2YzYyXHU2YzYzXHU2YzY1XHU2YzY2XHU2YzY3XHU2YzZiXHU2YzZjXHU2YzZkXHU2YzZlXHU2YzZmXHU2YzcxXHU2Yzcz''@;'; put 'put ''XHU2Yzc1XHU2Yzc3XHU2Yzc4XHU2YzdhXHU2YzdiXHU2YzdjXHU2YzdmXHU2YzgwXHU2Yzg0XHU2Yzg3XHU2YzhhXHU2YzhiXHU2YzhkXHU2YzhlXHU2YzkxXHU2YzkyXHU2Yzk1XHU2Yzk2XHU2Yzk3XHU2Yzk4XHU2YzlhXHU2YzljXHU2YzlkXHU2YzllXHU2Y2EwXHU2Y2EyXHU2Y2E4XHU2''@;'; put 'put ''Y2FjXHU2Y2FmXHU2Y2IwXHU2Y2I0XHU2Y2I1XHU2Y2I2XHU2Y2I3XHU2Y2JhXHU2Y2MwXHU2Y2MxXHU2Y2MyXHU2Y2MzXHU2Y2M2XHU2Y2M3XHU2Y2M4XHU2Y2NiXHU2Y2NkXHU2Y2NlXHU2Y2NmXHU2Y2QxXHU2Y2QyXHU2Y2Q4XHVmZmZkXHU2Y2Q5XHU2Y2RhXHU2Y2RjXHU2Y2RkXHU2Y2Rm''@;'; put 'put ''XHU2Y2U0XHU2Y2U2XHU2Y2U3XHU2Y2U5XHU2Y2VjXHU2Y2VkXHU2Y2YyXHU2Y2Y0XHU2Y2Y5XHU2Y2ZmXHU2ZDAwXHU2ZDAyXHU2ZDAzXHU2ZDA1XHU2ZDA2XHU2ZDA4XHU2ZDA5XHU2ZDBhXHU2ZDBkXHU2ZDBmXHU2ZDEwXHU2ZDExXHU2ZDEzXHU2ZDE0XHU2ZDE1XHU2ZDE2XHU2ZDE4XHU2''@;'; put 'put ''ZDFjXHU2ZDFkXHU2ZDFmXHU2ZDIwXHU2ZDIxXHU2ZDIyXHU2ZDIzXHU2ZDI0XHU2ZDI2XHU2ZDI4XHU2ZDI5XHU2ZDJjXHU2ZDJkXHU2ZDJmXHU2ZDMwXHU2ZDM0XHU2ZDM2XHU2ZDM3XHU2ZDM4XHU2ZDNhXHU2ZDNmXHU2ZDQwXHU2ZDQyXHU2ZDQ0XHU2ZDQ5XHU2ZDRjXHU2ZDUwXHU2ZDU1''@;'; put 'put ''XHU2ZDU2XHU2ZDU3XHU2ZDU4XHU2ZDViXHU2ZDVkXHU2ZDVmXHU2ZDYxXHU2ZDYyXHU2ZDY0XHU2ZDY1XHU2ZDY3XHU2ZDY4XHU2ZDZiXHU2ZDZjXHU2ZDZkXHU2ZDcwXHU2ZDcxXHU2ZDcyXHU2ZDczXHU2ZDc1XHU2ZDc2XHU2ZDc5XHU2ZDdhXHU2ZDdiXHU2ZDdkXHU2ZDdlXHU2ZDdmXHU2''@;'; put 'put ''ZDgwXHU2ZDgxXHU2ZDgzXHU2ZDg0XHU2ZDg2XHU2ZDg3XHU2ZDhhXHU2ZDhiXHU2ZDhkXHU2ZDhmXHU2ZDkwXHU2ZDkyXHU2ZDk2XHU2ZDk3XHU2ZDk4XHU2ZDk5XHU2ZDlhXHU2ZDljXHU2ZGEyXHU2ZGE1XHU2ZGFjXHU2ZGFkXHU2ZGIwXHU2ZGIxXHU2ZGIzXHU2ZGI0XHU2ZGI2XHU2ZGI3''@;'; put 'put ''XHU2ZGI5XHU2ZGJhXHU2ZGJiXHU2ZGJjXHU2ZGJkXHU2ZGJlXHU2ZGMxXHU2ZGMyXHU2ZGMzXHU2ZGM4XHU2ZGM5XHU2ZGNhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1NV1bRV1dPTM5''@;'; put 'put ''NjgwK0UsTFszOTY4MCtFXT1CWzE1NV1bRV0pO2ZvcihCWzE1Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmRjZFx1NmRjZVx1NmRjZlx1NmRkMFx1NmRkMlx1NmRkM1x1NmRkNFx1NmRkNVx1NmRkN1x1NmRkYVx1NmRkYlx1NmRk''@;'; put 'put ''Y1x1NmRkZlx1NmRlMlx1NmRlM1x1NmRlNVx1NmRlN1x1NmRlOFx1NmRlOVx1NmRlYVx1NmRlZFx1NmRlZlx1NmRmMFx1NmRmMlx1NmRmNFx1NmRmNVx1NmRmNlx1NmRmOFx1NmRmYVx1NmRmZFx1NmRmZVx1NmRmZlx1NmUwMFx1NmUwMVx1NmUwMlx1NmUwM1x1NmUwNFx1NmUwNlx1NmUwN1x1''@;'; put 'put ''NmUwOFx1NmUwOVx1NmUwYlx1NmUwZlx1NmUxMlx1NmUxM1x1NmUxNVx1NmUxOFx1NmUxOVx1NmUxYlx1NmUxY1x1NmUxZVx1NmUxZlx1NmUyMlx1NmUyNlx1NmUyN1x1NmUyOFx1NmUyYVx1NmUyY1x1NmUyZVx1NmUzMFx1NmUzMVx1NmUzM1x1NmUzNVx1ZmZmZFx1NmUzNlx1NmUzN1x1NmUz''@;'; put 'put ''OVx1NmUzYlx1NmUzY1x1NmUzZFx1NmUzZVx1NmUzZlx1NmU0MFx1NmU0MVx1NmU0Mlx1NmU0NVx1NmU0Nlx1NmU0N1x1NmU0OFx1NmU0OVx1NmU0YVx1NmU0Ylx1NmU0Y1x1NmU0Zlx1NmU1MFx1NmU1MVx1NmU1Mlx1NmU1NVx1NmU1N1x1NmU1OVx1NmU1YVx1NmU1Y1x1NmU1ZFx1NmU1ZVx1''@;'; put 'put ''NmU2MFx1NmU2MVx1NmU2Mlx1NmU2M1x1NmU2NFx1NmU2NVx1NmU2Nlx1NmU2N1x1NmU2OFx1NmU2OVx1NmU2YVx1NmU2Y1x1NmU2ZFx1NmU2Zlx1NmU3MFx1NmU3MVx1NmU3Mlx1NmU3M1x1NmU3NFx1NmU3NVx1NmU3Nlx1NmU3N1x1NmU3OFx1NmU3OVx1NmU3YVx1NmU3Ylx1NmU3Y1x1NmU3''@;'; put 'put ''ZFx1NmU4MFx1NmU4MVx1NmU4Mlx1NmU4NFx1NmU4N1x1NmU4OFx1NmU4YVx1NmU4Ylx1NmU4Y1x1NmU4ZFx1NmU4ZVx1NmU5MVx1NmU5Mlx1NmU5M1x1NmU5NFx1NmU5NVx1NmU5Nlx1NmU5N1x1NmU5OVx1NmU5YVx1NmU5Ylx1NmU5ZFx1NmU5ZVx1NmVhMFx1NmVhMVx1NmVhM1x1NmVhNFx1''@;'; put 'put ''NmVhNlx1NmVhOFx1NmVhOVx1NmVhYlx1NmVhY1x1NmVhZFx1NmVhZVx1NmViMFx1NmViM1x1NmViNVx1NmViOFx1NmViOVx1NmViY1x1NmViZVx1NmViZlx1NmVjMFx1NmVjM1x1NmVjNFx1NmVjNVx1NmVjNlx1NmVjOFx1NmVjOVx1NmVjYVx1NmVjY1x1NmVjZFx1NmVjZVx1NmVkMFx1NmVk''@;'; put 'put ''Mlx1NmVkNlx1NmVkOFx1NmVkOVx1NmVkYlx1NmVkY1x1NmVkZFx1NmVlM1x1NmVlN1x1NmVlYVx1NmVlYlx1NmVlY1x1NmVlZFx1NmVlZVx1NmVlZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2Vb''@;'; put 'put ''QlsxNTZdW0VdXT0zOTkzNitFLExbMzk5MzYrRV09QlsxNTZdW0VdKTtmb3IoQlsxNTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZlZjBcdTZlZjFcdTZlZjJcdTZlZjNcdTZlZjVcdTZlZjZcdTZlZjdcdTZlZjhcdTZlZmFcdTZl''@;'; put 'put ''ZmJcdTZlZmNcdTZlZmRcdTZlZmVcdTZlZmZcdTZmMDBcdTZmMDFcdTZmMDNcdTZmMDRcdTZmMDVcdTZmMDdcdTZmMDhcdTZmMGFcdTZmMGJcdTZmMGNcdTZmMGRcdTZmMGVcdTZmMTBcdTZmMTFcdTZmMTJcdTZmMTZcdTZmMTdcdTZmMThcdTZmMTlcdTZmMWFcdTZmMWJcdTZmMWNcdTZmMWRc''@;'; put 'put ''dTZmMWVcdTZmMWZcdTZmMjFcdTZmMjJcdTZmMjNcdTZmMjVcdTZmMjZcdTZmMjdcdTZmMjhcdTZmMmNcdTZmMmVcdTZmMzBcdTZmMzJcdTZmMzRcdTZmMzVcdTZmMzdcdTZmMzhcdTZmMzlcdTZmM2FcdTZmM2JcdTZmM2NcdTZmM2RcdTZmM2ZcdTZmNDBcdTZmNDFcdTZmNDJcdWZmZmRcdTZm''@;'; put 'put ''NDNcdTZmNDRcdTZmNDVcdTZmNDhcdTZmNDlcdTZmNGFcdTZmNGNcdTZmNGVcdTZmNGZcdTZmNTBcdTZmNTFcdTZmNTJcdTZmNTNcdTZmNTRcdTZmNTVcdTZmNTZcdTZmNTdcdTZmNTlcdTZmNWFcdTZmNWJcdTZmNWRcdTZmNWZcdTZmNjBcdTZmNjFcdTZmNjNcdTZmNjRcdTZmNjVcdTZmNjdc''@;'; put 'put ''dTZmNjhcdTZmNjlcdTZmNmFcdTZmNmJcdTZmNmNcdTZmNmZcdTZmNzBcdTZmNzFcdTZmNzNcdTZmNzVcdTZmNzZcdTZmNzdcdTZmNzlcdTZmN2JcdTZmN2RcdTZmN2VcdTZmN2ZcdTZmODBcdTZmODFcdTZmODJcdTZmODNcdTZmODVcdTZmODZcdTZmODdcdTZmOGFcdTZmOGJcdTZmOGZcdTZm''@;'; put 'put ''OTBcdTZmOTFcdTZmOTJcdTZmOTNcdTZmOTRcdTZmOTVcdTZmOTZcdTZmOTdcdTZmOThcdTZmOTlcdTZmOWFcdTZmOWJcdTZmOWRcdTZmOWVcdTZmOWZcdTZmYTBcdTZmYTJcdTZmYTNcdTZmYTRcdTZmYTVcdTZmYTZcdTZmYThcdTZmYTlcdTZmYWFcdTZmYWJcdTZmYWNcdTZmYWRcdTZmYWVc''@;'; put 'put ''dTZmYWZcdTZmYjBcdTZmYjFcdTZmYjJcdTZmYjRcdTZmYjVcdTZmYjdcdTZmYjhcdTZmYmFcdTZmYmJcdTZmYmNcdTZmYmRcdTZmYmVcdTZmYmZcdTZmYzFcdTZmYzNcdTZmYzRcdTZmYzVcdTZmYzZcdTZmYzdcdTZmYzhcdTZmY2FcdTZmY2JcdTZmY2NcdTZmY2RcdTZmY2VcdTZmY2ZcdTZm''@;'; put 'put ''ZDBcdTZmZDNcdTZmZDRcdTZmZDVcdTZmZDZcdTZmZDdcdTZmZDhcdTZmZDlcdTZmZGFcdTZmZGJcdTZmZGNcdTZmZGRcdTZmZGZcdTZmZTJcdTZmZTNcdTZmZTRcdTZmZTVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1N11bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKGdlW0JbMTU3XVtFXV09NDAxOTIrRSxMWzQwMTkyK0VdPUJbMTU3XVtFXSk7Zm9yKEJbMTU4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmU2XHU2ZmU3XHU2ZmU4XHU2ZmU5XHU2ZmVhXHU2ZmViXHU2ZmVjXHU2''@;'; put 'put ''ZmVkXHU2ZmYwXHU2ZmYxXHU2ZmYyXHU2ZmYzXHU2ZmY0XHU2ZmY1XHU2ZmY2XHU2ZmY3XHU2ZmY4XHU2ZmY5XHU2ZmZhXHU2ZmZiXHU2ZmZjXHU2ZmZkXHU2ZmZlXHU2ZmZmXHU3MDAwXHU3MDAxXHU3MDAyXHU3MDAzXHU3MDA0XHU3MDA1XHU3MDA2XHU3MDA3XHU3MDA4XHU3MDA5XHU3MDBh''@;'; put 'put ''XHU3MDBiXHU3MDBjXHU3MDBkXHU3MDBlXHU3MDBmXHU3MDEwXHU3MDEyXHU3MDEzXHU3MDE0XHU3MDE1XHU3MDE2XHU3MDE3XHU3MDE4XHU3MDE5XHU3MDFjXHU3MDFkXHU3MDFlXHU3MDFmXHU3MDIwXHU3MDIxXHU3MDIyXHU3MDI0XHU3MDI1XHU3MDI2XHU3MDI3XHU3MDI4XHU3MDI5XHU3''@;'; put 'put ''MDJhXHVmZmZkXHU3MDJiXHU3MDJjXHU3MDJkXHU3MDJlXHU3MDJmXHU3MDMwXHU3MDMxXHU3MDMyXHU3MDMzXHU3MDM0XHU3MDM2XHU3MDM3XHU3MDM4XHU3MDNhXHU3MDNiXHU3MDNjXHU3MDNkXHU3MDNlXHU3MDNmXHU3MDQwXHU3MDQxXHU3MDQyXHU3MDQzXHU3MDQ0XHU3MDQ1XHU3MDQ2''@;'; put 'put ''XHU3MDQ3XHU3MDQ4XHU3MDQ5XHU3MDRhXHU3MDRiXHU3MDRkXHU3MDRlXHU3MDUwXHU3MDUxXHU3MDUyXHU3MDUzXHU3MDU0XHU3MDU1XHU3MDU2XHU3MDU3XHU3MDU4XHU3MDU5XHU3MDVhXHU3MDViXHU3MDVjXHU3MDVkXHU3MDVmXHU3MDYwXHU3MDYxXHU3MDYyXHU3MDYzXHU3MDY0XHU3''@;'; put 'put ''MDY1XHU3MDY2XHU3MDY3XHU3MDY4XHU3MDY5XHU3MDZhXHU3MDZlXHU3MDcxXHU3MDcyXHU3MDczXHU3MDc0XHU3MDc3XHU3MDc5XHU3MDdhXHU3MDdiXHU3MDdkXHU3MDgxXHU3MDgyXHU3MDgzXHU3MDg0XHU3MDg2XHU3MDg3XHU3MDg4XHU3MDhiXHU3MDhjXHU3MDhkXHU3MDhmXHU3MDkw''@;'; put 'put ''XHU3MDkxXHU3MDkzXHU3MDk3XHU3MDk4XHU3MDlhXHU3MDliXHU3MDllXHU3MDlmXHU3MGEwXHU3MGExXHU3MGEyXHU3MGEzXHU3MGE0XHU3MGE1XHU3MGE2XHU3MGE3XHU3MGE4XHU3MGE5XHU3MGFhXHU3MGIwXHU3MGIyXHU3MGI0XHU3MGI1XHU3MGI2XHU3MGJhXHU3MGJlXHU3MGJmXHU3''@;'; put 'put ''MGM0XHU3MGM1XHU3MGM2XHU3MGM3XHU3MGM5XHU3MGNiXHU3MGNjXHU3MGNkXHU3MGNlXHU3MGNmXHU3MGQwXHU3MGQxXHU3MGQyXHU3MGQzXHU3MGQ0XHU3MGQ1XHU3MGQ2XHU3MGQ3XHU3MGRhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU4XS5sZW5ndGg7KytFKTY1NTMzIT09Qlsx''@;'; put 'put ''NThdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1OF1bRV1dPTQwNDQ4K0UsTFs0MDQ0OCtFXT1CWzE1OF1bRV0pO2ZvcihCWzE1OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzBkY1x1NzBkZFx1NzBkZVx1NzBlMFx1NzBlMVx1''@;'; put 'put ''NzBlMlx1NzBlM1x1NzBlNVx1NzBlYVx1NzBlZVx1NzBmMFx1NzBmMVx1NzBmMlx1NzBmM1x1NzBmNFx1NzBmNVx1NzBmNlx1NzBmOFx1NzBmYVx1NzBmYlx1NzBmY1x1NzBmZVx1NzBmZlx1NzEwMFx1NzEwMVx1NzEwMlx1NzEwM1x1NzEwNFx1NzEwNVx1NzEwNlx1NzEwN1x1NzEwOFx1NzEw''@;'; put 'put ''Ylx1NzEwY1x1NzEwZFx1NzEwZVx1NzEwZlx1NzExMVx1NzExMlx1NzExNFx1NzExN1x1NzExYlx1NzExY1x1NzExZFx1NzExZVx1NzExZlx1NzEyMFx1NzEyMVx1NzEyMlx1NzEyM1x1NzEyNFx1NzEyNVx1NzEyN1x1NzEyOFx1NzEyOVx1NzEyYVx1NzEyYlx1NzEyY1x1NzEyZFx1NzEyZVx1''@;'; put 'put ''NzEzMlx1NzEzM1x1NzEzNFx1ZmZmZFx1NzEzNVx1NzEzN1x1NzEzOFx1NzEzOVx1NzEzYVx1NzEzYlx1NzEzY1x1NzEzZFx1NzEzZVx1NzEzZlx1NzE0MFx1NzE0MVx1NzE0Mlx1NzE0M1x1NzE0NFx1NzE0Nlx1NzE0N1x1NzE0OFx1NzE0OVx1NzE0Ylx1NzE0ZFx1NzE0Zlx1NzE1MFx1NzE1''@;'; put 'put ''MVx1NzE1Mlx1NzE1M1x1NzE1NFx1NzE1NVx1NzE1Nlx1NzE1N1x1NzE1OFx1NzE1OVx1NzE1YVx1NzE1Ylx1NzE1ZFx1NzE1Zlx1NzE2MFx1NzE2MVx1NzE2Mlx1NzE2M1x1NzE2NVx1NzE2OVx1NzE2YVx1NzE2Ylx1NzE2Y1x1NzE2ZFx1NzE2Zlx1NzE3MFx1NzE3MVx1NzE3NFx1NzE3NVx1''@;'; put 'put ''NzE3Nlx1NzE3N1x1NzE3OVx1NzE3Ylx1NzE3Y1x1NzE3ZVx1NzE3Zlx1NzE4MFx1NzE4MVx1NzE4Mlx1NzE4M1x1NzE4NVx1NzE4Nlx1NzE4N1x1NzE4OFx1NzE4OVx1NzE4Ylx1NzE4Y1x1NzE4ZFx1NzE4ZVx1NzE5MFx1NzE5MVx1NzE5Mlx1NzE5M1x1NzE5NVx1NzE5Nlx1NzE5N1x1NzE5''@;'; put 'put ''YVx1NzE5Ylx1NzE5Y1x1NzE5ZFx1NzE5ZVx1NzFhMVx1NzFhMlx1NzFhM1x1NzFhNFx1NzFhNVx1NzFhNlx1NzFhN1x1NzFhOVx1NzFhYVx1NzFhYlx1NzFhZFx1NzFhZVx1NzFhZlx1NzFiMFx1NzFiMVx1NzFiMlx1NzFiNFx1NzFiNlx1NzFiN1x1NzFiOFx1NzFiYVx1NzFiYlx1NzFiY1x1''@;'; put 'put ''NzFiZFx1NzFiZVx1NzFiZlx1NzFjMFx1NzFjMVx1NzFjMlx1NzFjNFx1NzFjNVx1NzFjNlx1NzFjN1x1NzFjOFx1NzFjOVx1NzFjYVx1NzFjYlx1NzFjY1x1NzFjZFx1NzFjZlx1NzFkMFx1NzFkMVx1NzFkMlx1NzFkM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1OV0ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMTU5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTldW0VdXT00MDcwNCtFLExbNDA3MDQrRV09QlsxNTldW0VdKTtmb3IoQlsxNjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcxZDZcdTcxZDdcdTcxZDhc''@;'; put 'put ''dTcxZDlcdTcxZGFcdTcxZGJcdTcxZGNcdTcxZGRcdTcxZGVcdTcxZGZcdTcxZTFcdTcxZTJcdTcxZTNcdTcxZTRcdTcxZTZcdTcxZThcdTcxZTlcdTcxZWFcdTcxZWJcdTcxZWNcdTcxZWRcdTcxZWZcdTcxZjBcdTcxZjFcdTcxZjJcdTcxZjNcdTcxZjRcdTcxZjVcdTcxZjZcdTcxZjdcdTcx''@;'; put 'put ''ZjhcdTcxZmFcdTcxZmJcdTcxZmNcdTcxZmRcdTcxZmVcdTcxZmZcdTcyMDBcdTcyMDFcdTcyMDJcdTcyMDNcdTcyMDRcdTcyMDVcdTcyMDdcdTcyMDhcdTcyMDlcdTcyMGFcdTcyMGJcdTcyMGNcdTcyMGRcdTcyMGVcdTcyMGZcdTcyMTBcdTcyMTFcdTcyMTJcdTcyMTNcdTcyMTRcdTcyMTVc''@;'; put 'put ''dTcyMTZcdTcyMTdcdTcyMThcdTcyMTlcdTcyMWFcdWZmZmRcdTcyMWJcdTcyMWNcdTcyMWVcdTcyMWZcdTcyMjBcdTcyMjFcdTcyMjJcdTcyMjNcdTcyMjRcdTcyMjVcdTcyMjZcdTcyMjdcdTcyMjlcdTcyMmJcdTcyMmRcdTcyMmVcdTcyMmZcdTcyMzJcdTcyMzNcdTcyMzRcdTcyM2FcdTcy''@;'; put 'put ''M2NcdTcyM2VcdTcyNDBcdTcyNDFcdTcyNDJcdTcyNDNcdTcyNDRcdTcyNDVcdTcyNDZcdTcyNDlcdTcyNGFcdTcyNGJcdTcyNGVcdTcyNGZcdTcyNTBcdTcyNTFcdTcyNTNcdTcyNTRcdTcyNTVcdTcyNTdcdTcyNThcdTcyNWFcdTcyNWNcdTcyNWVcdTcyNjBcdTcyNjNcdTcyNjRcdTcyNjVc''@;'; put 'put ''dTcyNjhcdTcyNmFcdTcyNmJcdTcyNmNcdTcyNmRcdTcyNzBcdTcyNzFcdTcyNzNcdTcyNzRcdTcyNzZcdTcyNzdcdTcyNzhcdTcyN2JcdTcyN2NcdTcyN2RcdTcyODJcdTcyODNcdTcyODVcdTcyODZcdTcyODdcdTcyODhcdTcyODlcdTcyOGNcdTcyOGVcdTcyOTBcdTcyOTFcdTcyOTNcdTcy''@;'; put 'put ''OTRcdTcyOTVcdTcyOTZcdTcyOTdcdTcyOThcdTcyOTlcdTcyOWFcdTcyOWJcdTcyOWNcdTcyOWRcdTcyOWVcdTcyYTBcdTcyYTFcdTcyYTJcdTcyYTNcdTcyYTRcdTcyYTVcdTcyYTZcdTcyYTdcdTcyYThcdTcyYTlcdTcyYWFcdTcyYWJcdTcyYWVcdTcyYjFcdTcyYjJcdTcyYjNcdTcyYjVc''@;'; put 'put ''dTcyYmFcdTcyYmJcdTcyYmNcdTcyYmRcdTcyYmVcdTcyYmZcdTcyYzBcdTcyYzVcdTcyYzZcdTcyYzdcdTcyYzlcdTcyY2FcdTcyY2JcdTcyY2NcdTcyY2ZcdTcyZDFcdTcyZDNcdTcyZDRcdTcyZDVcdTcyZDZcdTcyZDhcdTcyZGFcdTcyZGJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''NjBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTYwXVtFXV09NDA5NjArRSxMWzQwOTYwK0VdPUJbMTYwXVtFXSk7Zm9yKEJbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MDJjOVx1MDJjN1x4YThcdTMwMDNcdTMwMDVcdTIwMTRcdWZmNWVcdTIwMTZcdTIwMjZcdTIwMThcdTIw''@;'; put 'put ''MTlcdTIwMWNcdTIwMWRcdTMwMTRcdTMwMTVcdTMwMDhcdTMwMDlcdTMwMGFcdTMwMGJcdTMwMGNcdTMwMGRcdTMwMGVcdTMwMGZcdTMwMTZcdTMwMTdcdTMwMTBcdTMwMTFceGIxXHhkN1x4ZjdcdTIyMzZcdTIyMjdcdTIyMjhcdTIyMTFcdTIyMGZcdTIyMmFcdTIyMjlcdTIyMDhcdTIyMzdc''@;'; put 'put ''dTIyMWFcdTIyYTVcdTIyMjVcdTIyMjBcdTIzMTJcdTIyOTlcdTIyMmJcdTIyMmVcdTIyNjFcdTIyNGNcdTIyNDhcdTIyM2RcdTIyMWRcdTIyNjBcdTIyNmVcdTIyNmZcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHVmZjA0''@;'; put 'put ''XHhhNFx1ZmZlMFx1ZmZlMVx1MjAzMFx4YTdcdTIxMTZcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTIwM2JcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTMwMTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjFd''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTYxXVtFXV09NDEyMTYrRSxMWzQxMjE2K0VdPUJbMTYxXVtFXSk7Zm9yKEJbMTYyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMTcwXHUyMTcxXHUyMTcyXHUyMTczXHUyMTc0XHUyMTc1XHUyMTc2XHUyMTc3XHUyMTc4XHUyMTc5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUyNDg4XHUyNDg5XHUyNDhhXHUyNDhiXHUyNDhjXHUyNDhkXHUyNDhlXHUyNDhmXHUyNDkwXHUyNDkxXHUyNDkyXHUyNDkzXHUyNDk0XHUyNDk1XHUyNDk2XHUyNDk3XHUyNDk4XHUyNDk5XHUyNDlhXHUyNDliXHUyNDc0XHUyNDc1XHUyNDc2XHUyNDc3XHUyNDc4XHUyNDc5''@;'; put 'put ''XHUyNDdhXHUyNDdiXHUyNDdjXHUyNDdkXHUyNDdlXHUyNDdmXHUyNDgwXHUyNDgxXHUyNDgyXHUyNDgzXHUyNDg0XHUyNDg1XHUyNDg2XHUyNDg3XHUyNDYwXHUyNDYxXHUyNDYyXHUyNDYzXHUyNDY0XHUyNDY1XHUyNDY2XHUyNDY3XHUyNDY4XHUyNDY5XHVmZmZkXHVmZmZkXHUzMjIwXHUz''@;'; put 'put ''MjIxXHUzMjIyXHUzMjIzXHUzMjI0XHUzMjI1XHUzMjI2XHUzMjI3XHUzMjI4XHUzMjI5XHVmZmZkXHVmZmZkXHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3XHUyMTY4XHUyMTY5XHUyMTZhXHUyMTZiXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMTYyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2Ml1bRV1dPTQxNDcyK0UsTFs0MTQ3MitFXT1CWzE2Ml1bRV0pO2ZvcihCWzE2M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmYwMVx1ZmYwMlx1ZmYwM1x1ZmZlNVx1ZmYwNVx1ZmYwNlx1ZmYwN1x1ZmYwOFx1ZmYwOVx1ZmYwYVx1ZmYwYlx1ZmYwY1x1''@;'; put 'put ''ZmYwZFx1ZmYwZVx1ZmYwZlx1ZmYxMFx1ZmYxMVx1ZmYxMlx1ZmYxM1x1ZmYxNFx1ZmYxNVx1ZmYxNlx1ZmYxN1x1ZmYxOFx1ZmYxOVx1ZmYxYVx1ZmYxYlx1ZmYxY1x1ZmYxZFx1ZmYxZVx1ZmYxZlx1ZmYyMFx1ZmYyMVx1ZmYyMlx1ZmYyM1x1ZmYyNFx1ZmYyNVx1ZmYyNlx1ZmYyN1x1ZmYy''@;'; put 'put ''OFx1ZmYyOVx1ZmYyYVx1ZmYyYlx1ZmYyY1x1ZmYyZFx1ZmYyZVx1ZmYyZlx1ZmYzMFx1ZmYzMVx1ZmYzMlx1ZmYzM1x1ZmYzNFx1ZmYzNVx1ZmYzNlx1ZmYzN1x1ZmYzOFx1ZmYzOVx1ZmYzYVx1ZmYzYlx1ZmYzY1x1ZmYzZFx1ZmYzZVx1ZmYzZlx1ZmY0MFx1ZmY0MVx1ZmY0Mlx1ZmY0M1x1''@;'; put 'put ''ZmY0NFx1ZmY0NVx1ZmY0Nlx1ZmY0N1x1ZmY0OFx1ZmY0OVx1ZmY0YVx1ZmY0Ylx1ZmY0Y1x1ZmY0ZFx1ZmY0ZVx1ZmY0Zlx1ZmY1MFx1ZmY1MVx1ZmY1Mlx1ZmY1M1x1ZmY1NFx1ZmY1NVx1ZmY1Nlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1ZmY1Ylx1ZmY1Y1x1ZmY1ZFx1ZmZlM1x1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjNdW0VdXT00MTcyOCtFLExbNDE3MjgrRV09QlsxNjNdW0VdKTtmb3IoQlsxNjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwNDFcdTMwNDJcdTMwNDNcdTMwNDRcdTMwNDVcdTMwNDZcdTMwNDdcdTMwNDhcdTMwNDlcdTMwNGFc''@;'; put 'put ''dTMwNGJcdTMwNGNcdTMwNGRcdTMwNGVcdTMwNGZcdTMwNTBcdTMwNTFcdTMwNTJcdTMwNTNcdTMwNTRcdTMwNTVcdTMwNTZcdTMwNTdcdTMwNThcdTMwNTlcdTMwNWFcdTMwNWJcdTMwNWNcdTMwNWRcdTMwNWVcdTMwNWZcdTMwNjBcdTMwNjFcdTMwNjJcdTMwNjNcdTMwNjRcdTMwNjVcdTMw''@;'; put 'put ''NjZcdTMwNjdcdTMwNjhcdTMwNjlcdTMwNmFcdTMwNmJcdTMwNmNcdTMwNmRcdTMwNmVcdTMwNmZcdTMwNzBcdTMwNzFcdTMwNzJcdTMwNzNcdTMwNzRcdTMwNzVcdTMwNzZcdTMwNzdcdTMwNzhcdTMwNzlcdTMwN2FcdTMwN2JcdTMwN2NcdTMwN2RcdTMwN2VcdTMwN2ZcdTMwODBcdTMwODFc''@;'; put 'put ''dTMwODJcdTMwODNcdTMwODRcdTMwODVcdTMwODZcdTMwODdcdTMwODhcdTMwODlcdTMwOGFcdTMwOGJcdTMwOGNcdTMwOGRcdTMwOGVcdTMwOGZcdTMwOTBcdTMwOTFcdTMwOTJcdTMwOTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY0XVtFXV09NDE5ODQrRSxMWzQxOTg0K0VdPUJbMTY0XVtFXSk7Zm9yKEJbMTY1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMGExXHUzMGEyXHUzMGEzXHUzMGE0XHUzMGE1XHUzMGE2XHUzMGE3XHUzMGE4''@;'; put 'put ''XHUzMGE5XHUzMGFhXHUzMGFiXHUzMGFjXHUzMGFkXHUzMGFlXHUzMGFmXHUzMGIwXHUzMGIxXHUzMGIyXHUzMGIzXHUzMGI0XHUzMGI1XHUzMGI2XHUzMGI3XHUzMGI4XHUzMGI5XHUzMGJhXHUzMGJiXHUzMGJjXHUzMGJkXHUzMGJlXHUzMGJmXHUzMGMwXHUzMGMxXHUzMGMyXHUzMGMzXHUz''@;'; put 'put ''MGM0XHUzMGM1XHUzMGM2XHUzMGM3XHUzMGM4XHUzMGM5XHUzMGNhXHUzMGNiXHUzMGNjXHUzMGNkXHUzMGNlXHUzMGNmXHUzMGQwXHUzMGQxXHUzMGQyXHUzMGQzXHUzMGQ0XHUzMGQ1XHUzMGQ2XHUzMGQ3XHUzMGQ4XHUzMGQ5XHUzMGRhXHUzMGRiXHUzMGRjXHUzMGRkXHUzMGRlXHUzMGRm''@;'; put 'put ''XHUzMGUwXHUzMGUxXHUzMGUyXHUzMGUzXHUzMGU0XHUzMGU1XHUzMGU2XHUzMGU3XHUzMGU4XHUzMGU5XHUzMGVhXHUzMGViXHUzMGVjXHUzMGVkXHUzMGVlXHUzMGVmXHUzMGYwXHUzMGYxXHUzMGYyXHUzMGYzXHUzMGY0XHUzMGY1XHUzMGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2NV1bRV1dPTQyMjQwK0UsTFs0MjI0MCtFXT1CWzE2NV1bRV0pO2ZvcihCWzE2Nl09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5''@;'; put 'put ''Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1''@;'; put 'put ''MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmUzNVx1ZmUzNlx1ZmUzOVx1ZmUzYVx1ZmUzZlx1ZmU0MFx1ZmUzZFx1ZmUzZVx1ZmU0MVx1ZmU0Mlx1ZmU0M1x1ZmU0NFx1ZmZmZFx1ZmZmZFx1ZmUzYlx1ZmUzY1x1ZmUzN1x1ZmUzOFx1ZmUzMVx1ZmZmZFx1ZmUzM1x1ZmUzNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjZdW0VdXT00MjQ5NitFLExbNDI0OTYrRV09QlsxNjZdW0VdKTtmb3IoQlsxNjdd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MTBcdTA0MTFcdTA0MTJcdTA0''@;'; put 'put ''MTNcdTA0MTRcdTA0MTVcdTA0MDFcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRc''@;'; put 'put ''dTA0MmVcdTA0MmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0NTFcdTA0MzZcdTA0MzdcdTA0MzhcdTA0''@;'; put 'put ''MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY3XVtFXV09NDI3NTIrRSxMWzQyNzUyK0VdPUJbMTY3XVtF''@;'; put 'put ''XSk7Zm9yKEJbMTY4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMmNhXHUwMmNiXHUwMmQ5XHUyMDEzXHUyMDE1XHUyMDI1XHUyMDM1XHUyMTA1XHUyMTA5XHUyMTk2XHUyMTk3XHUyMTk4XHUyMTk5XHUyMjE1XHUyMjFmXHUyMjIz''@;'; put 'put ''XHUyMjUyXHUyMjY2XHUyMjY3XHUyMmJmXHUyNTUwXHUyNTUxXHUyNTUyXHUyNTUzXHUyNTU0XHUyNTU1XHUyNTU2XHUyNTU3XHUyNTU4XHUyNTU5XHUyNTVhXHUyNTViXHUyNTVjXHUyNTVkXHUyNTVlXHUyNTVmXHUyNTYwXHUyNTYxXHUyNTYyXHUyNTYzXHUyNTY0XHUyNTY1XHUyNTY2XHUy''@;'; put 'put ''NTY3XHUyNTY4XHUyNTY5XHUyNTZhXHUyNTZiXHUyNTZjXHUyNTZkXHUyNTZlXHUyNTZmXHUyNTcwXHUyNTcxXHUyNTcyXHUyNTczXHUyNTgxXHUyNTgyXHUyNTgzXHUyNTg0XHUyNTg1XHUyNTg2XHUyNTg3XHVmZmZkXHUyNTg4XHUyNTg5XHUyNThhXHUyNThiXHUyNThjXHUyNThkXHUyNThl''@;'; put 'put ''XHUyNThmXHUyNTkzXHUyNTk0XHUyNTk1XHUyNWJjXHUyNWJkXHUyNWUyXHUyNWUzXHUyNWU0XHUyNWU1XHUyNjA5XHUyMjk1XHUzMDEyXHUzMDFkXHUzMDFlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMTAxXHhl''@;'; put 'put ''MVx1MDFjZVx4ZTBcdTAxMTNceGU5XHUwMTFiXHhlOFx1MDEyYlx4ZWRcdTAxZDBceGVjXHUwMTRkXHhmM1x1MDFkMlx4ZjJcdTAxNmJceGZhXHUwMWQ0XHhmOVx1MDFkNlx1MDFkOFx1MDFkYVx1MDFkY1x4ZmNceGVhXHUwMjUxXHVmZmZkXHUwMTQ0XHUwMTQ4XHVmZmZkXHUwMjYxXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHUzMTA1XHUzMTA2XHUzMTA3XHUzMTA4XHUzMTA5XHUzMTBhXHUzMTBiXHUzMTBjXHUzMTBkXHUzMTBlXHUzMTBmXHUzMTEwXHUzMTExXHUzMTEyXHUzMTEzXHUzMTE0XHUzMTE1XHUzMTE2XHUzMTE3XHUzMTE4XHUzMTE5XHUzMTFhXHUzMTFiXHUzMTFjXHUz''@;'; put 'put ''MTFkXHUzMTFlXHUzMTFmXHUzMTIwXHUzMTIxXHUzMTIyXHUzMTIzXHUzMTI0XHUzMTI1XHUzMTI2XHUzMTI3XHUzMTI4XHUzMTI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2OF1bRV1dPTQzMDA4K0UsTFs0MzAwOCtFXT1CWzE2OF1bRV0pO2ZvcihCWzE2''@;'; put 'put ''OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAyMVx1MzAyMlx1MzAyM1x1MzAyNFx1MzAyNVx1MzAyNlx1MzAyN1x1MzAyOFx1MzAyOVx1MzJhM1x1MzM4ZVx1MzM4Zlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzNhMVx1MzNjNFx1MzNj''@;'; put 'put ''ZVx1MzNkMVx1MzNkMlx1MzNkNVx1ZmUzMFx1ZmZlMlx1ZmZlNFx1ZmZmZFx1MjEyMVx1MzIzMVx1ZmZmZFx1MjAxMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBmY1x1MzA5Ylx1MzA5Y1x1MzBmZFx1MzBmZVx1MzAwNlx1MzA5ZFx1MzA5ZVx1ZmU0OVx1ZmU0YVx1ZmU0Ylx1ZmU0Y1x1ZmU0ZFx1''@;'; put 'put ''ZmU0ZVx1ZmU0Zlx1ZmU1MFx1ZmU1MVx1ZmU1Mlx1ZmU1NFx1ZmU1NVx1ZmU1Nlx1ZmU1N1x1ZmU1OVx1ZmU1YVx1ZmU1Ylx1ZmU1Y1x1ZmU1ZFx1ZmU1ZVx1ZmU1Zlx1ZmU2MFx1ZmU2MVx1ZmZmZFx1ZmU2Mlx1ZmU2M1x1ZmU2NFx1ZmU2NVx1ZmU2Nlx1ZmU2OFx1ZmU2OVx1ZmU2YVx1ZmU2''@;'; put 'put ''Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''MjUwMFx1MjUwMVx1MjUwMlx1MjUwM1x1MjUwNFx1MjUwNVx1MjUwNlx1MjUwN1x1MjUwOFx1MjUwOVx1MjUwYVx1MjUwYlx1MjUwY1x1MjUwZFx1MjUwZVx1MjUwZlx1MjUxMFx1MjUxMVx1MjUxMlx1MjUxM1x1MjUxNFx1MjUxNVx1MjUxNlx1MjUxN1x1MjUxOFx1MjUxOVx1MjUxYVx1MjUx''@;'; put 'put ''Ylx1MjUxY1x1MjUxZFx1MjUxZVx1MjUxZlx1MjUyMFx1MjUyMVx1MjUyMlx1MjUyM1x1MjUyNFx1MjUyNVx1MjUyNlx1MjUyN1x1MjUyOFx1MjUyOVx1MjUyYVx1MjUyYlx1MjUyY1x1MjUyZFx1MjUyZVx1MjUyZlx1MjUzMFx1MjUzMVx1MjUzMlx1MjUzM1x1MjUzNFx1MjUzNVx1MjUzNlx1''@;'; put 'put ''MjUzN1x1MjUzOFx1MjUzOVx1MjUzYVx1MjUzYlx1MjUzY1x1MjUzZFx1MjUzZVx1MjUzZlx1MjU0MFx1MjU0MVx1MjU0Mlx1MjU0M1x1MjU0NFx1MjU0NVx1MjU0Nlx1MjU0N1x1MjU0OFx1MjU0OVx1MjU0YVx1MjU0Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjldW0VdXT00MzI2NCtFLExbNDMyNjQrRV09QlsxNjld''@;'; put 'put ''W0VdKTtmb3IoQlsxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcyZGNcdTcyZGRcdTcyZGZcdTcyZTJcdTcyZTNcdTcyZTRcdTcyZTVcdTcyZTZcdTcyZTdcdTcyZWFcdTcyZWJcdTcyZjVcdTcyZjZcdTcyZjlcdTcyZmRcdTcy''@;'; put 'put ''ZmVcdTcyZmZcdTczMDBcdTczMDJcdTczMDRcdTczMDVcdTczMDZcdTczMDdcdTczMDhcdTczMDlcdTczMGJcdTczMGNcdTczMGRcdTczMGZcdTczMTBcdTczMTFcdTczMTJcdTczMTRcdTczMThcdTczMTlcdTczMWFcdTczMWZcdTczMjBcdTczMjNcdTczMjRcdTczMjZcdTczMjdcdTczMjhc''@;'; put 'put ''dTczMmRcdTczMmZcdTczMzBcdTczMzJcdTczMzNcdTczMzVcdTczMzZcdTczM2FcdTczM2JcdTczM2NcdTczM2RcdTczNDBcdTczNDFcdTczNDJcdTczNDNcdTczNDRcdTczNDVcdTczNDZcdTczNDdcdTczNDhcdWZmZmRcdTczNDlcdTczNGFcdTczNGJcdTczNGNcdTczNGVcdTczNGZcdTcz''@;'; put 'put ''NTFcdTczNTNcdTczNTRcdTczNTVcdTczNTZcdTczNThcdTczNTlcdTczNWFcdTczNWJcdTczNWNcdTczNWRcdTczNWVcdTczNWZcdTczNjFcdTczNjJcdTczNjNcdTczNjRcdTczNjVcdTczNjZcdTczNjdcdTczNjhcdTczNjlcdTczNmFcdTczNmJcdTczNmVcdTczNzBcdTczNzFcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTcwXVtFXV09NDM1MjArRSxMWzQz''@;'; put 'put ''NTIwK0VdPUJbMTcwXVtFXSk7Zm9yKEJbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzcyXHU3MzczXHU3Mzc0XHU3Mzc1XHU3Mzc2XHU3Mzc3XHU3Mzc4XHU3Mzc5XHU3MzdhXHU3MzdiXHU3MzdjXHU3MzdkXHU3MzdmXHU3''@;'; put 'put ''MzgwXHU3MzgxXHU3MzgyXHU3MzgzXHU3Mzg1XHU3Mzg2XHU3Mzg4XHU3MzhhXHU3MzhjXHU3MzhkXHU3MzhmXHU3MzkwXHU3MzkyXHU3MzkzXHU3Mzk0XHU3Mzk1XHU3Mzk3XHU3Mzk4XHU3Mzk5XHU3MzlhXHU3MzljXHU3MzlkXHU3MzllXHU3M2EwXHU3M2ExXHU3M2EzXHU3M2E0XHU3M2E1''@;'; put 'put ''XHU3M2E2XHU3M2E3XHU3M2E4XHU3M2FhXHU3M2FjXHU3M2FkXHU3M2IxXHU3M2I0XHU3M2I1XHU3M2I2XHU3M2I4XHU3M2I5XHU3M2JjXHU3M2JkXHU3M2JlXHU3M2JmXHU3M2MxXHU3M2MzXHU3M2M0XHU3M2M1XHU3M2M2XHU3M2M3XHVmZmZkXHU3M2NiXHU3M2NjXHU3M2NlXHU3M2QyXHU3''@;'; put 'put ''M2QzXHU3M2Q0XHU3M2Q1XHU3M2Q2XHU3M2Q3XHU3M2Q4XHU3M2RhXHU3M2RiXHU3M2RjXHU3M2RkXHU3M2RmXHU3M2UxXHU3M2UyXHU3M2UzXHU3M2U0XHU3M2U2XHU3M2U4XHU3M2VhXHU3M2ViXHU3M2VjXHU3M2VlXHU3M2VmXHU3M2YwXHU3M2YxXHU3M2YzXHU3M2Y0XHU3M2Y1XHU3M2Y2''@;'; put 'put ''XHU3M2Y3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTcxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3MV1bRV1d''@;'; put 'put ''PTQzNzc2K0UsTFs0Mzc3NitFXT1CWzE3MV1bRV0pO2ZvcihCWzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzNmOFx1NzNmOVx1NzNmYVx1NzNmYlx1NzNmY1x1NzNmZFx1NzNmZVx1NzNmZlx1NzQwMFx1NzQwMVx1NzQwMlx1''@;'; put 'put ''NzQwNFx1NzQwN1x1NzQwOFx1NzQwYlx1NzQwY1x1NzQwZFx1NzQwZVx1NzQxMVx1NzQxMlx1NzQxM1x1NzQxNFx1NzQxNVx1NzQxNlx1NzQxN1x1NzQxOFx1NzQxOVx1NzQxY1x1NzQxZFx1NzQxZVx1NzQxZlx1NzQyMFx1NzQyMVx1NzQyM1x1NzQyNFx1NzQyN1x1NzQyOVx1NzQyYlx1NzQy''@;'; put 'put ''ZFx1NzQyZlx1NzQzMVx1NzQzMlx1NzQzN1x1NzQzOFx1NzQzOVx1NzQzYVx1NzQzYlx1NzQzZFx1NzQzZVx1NzQzZlx1NzQ0MFx1NzQ0Mlx1NzQ0M1x1NzQ0NFx1NzQ0NVx1NzQ0Nlx1NzQ0N1x1NzQ0OFx1NzQ0OVx1NzQ0YVx1NzQ0Ylx1NzQ0Y1x1NzQ0ZFx1ZmZmZFx1NzQ0ZVx1NzQ0Zlx1''@;'; put 'put ''NzQ1MFx1NzQ1MVx1NzQ1Mlx1NzQ1M1x1NzQ1NFx1NzQ1Nlx1NzQ1OFx1NzQ1ZFx1NzQ2MFx1NzQ2MVx1NzQ2Mlx1NzQ2M1x1NzQ2NFx1NzQ2NVx1NzQ2Nlx1NzQ2N1x1NzQ2OFx1NzQ2OVx1NzQ2YVx1NzQ2Ylx1NzQ2Y1x1NzQ2ZVx1NzQ2Zlx1NzQ3MVx1NzQ3Mlx1NzQ3M1x1NzQ3NFx1NzQ3''@;'; put 'put ''NVx1NzQ3OFx1NzQ3OVx1NzQ3YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTcyXVtFXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''Z2VbQlsxNzJdW0VdXT00NDAzMitFLExbNDQwMzIrRV09QlsxNzJdW0VdKTtmb3IoQlsxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0N2JcdTc0N2NcdTc0N2RcdTc0N2ZcdTc0ODJcdTc0ODRcdTc0ODVcdTc0ODZcdTc0ODhc''@;'; put 'put ''dTc0ODlcdTc0OGFcdTc0OGNcdTc0OGRcdTc0OGZcdTc0OTFcdTc0OTJcdTc0OTNcdTc0OTRcdTc0OTVcdTc0OTZcdTc0OTdcdTc0OThcdTc0OTlcdTc0OWFcdTc0OWJcdTc0OWRcdTc0OWZcdTc0YTBcdTc0YTFcdTc0YTJcdTc0YTNcdTc0YTRcdTc0YTVcdTc0YTZcdTc0YWFcdTc0YWJcdTc0''@;'; put 'put ''YWNcdTc0YWRcdTc0YWVcdTc0YWZcdTc0YjBcdTc0YjFcdTc0YjJcdTc0YjNcdTc0YjRcdTc0YjVcdTc0YjZcdTc0YjdcdTc0YjhcdTc0YjlcdTc0YmJcdTc0YmNcdTc0YmRcdTc0YmVcdTc0YmZcdTc0YzBcdTc0YzFcdTc0YzJcdTc0YzNcdTc0YzRcdTc0YzVcdTc0YzZcdTc0YzdcdWZmZmRc''@;'; put 'put ''dTc0YzhcdTc0YzlcdTc0Y2FcdTc0Y2JcdTc0Y2NcdTc0Y2RcdTc0Y2VcdTc0Y2ZcdTc0ZDBcdTc0ZDFcdTc0ZDNcdTc0ZDRcdTc0ZDVcdTc0ZDZcdTc0ZDdcdTc0ZDhcdTc0ZDlcdTc0ZGFcdTc0ZGJcdTc0ZGRcdTc0ZGZcdTc0ZTFcdTc0ZTVcdTc0ZTdcdTc0ZThcdTc0ZTlcdTc0ZWFcdTc0''@;'; put 'put ''ZWJcdTc0ZWNcdTc0ZWRcdTc0ZjBcdTc0ZjFcdTc0ZjJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3M11bRV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKGdlW0JbMTczXVtFXV09NDQyODgrRSxMWzQ0Mjg4K0VdPUJbMTczXVtFXSk7Zm9yKEJbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NGYzXHU3NGY1XHU3NGY4XHU3NGY5XHU3NGZhXHU3NGZiXHU3NGZj''@;'; put 'put ''XHU3NGZkXHU3NGZlXHU3NTAwXHU3NTAxXHU3NTAyXHU3NTAzXHU3NTA1XHU3NTA2XHU3NTA3XHU3NTA4XHU3NTA5XHU3NTBhXHU3NTBiXHU3NTBjXHU3NTBlXHU3NTEwXHU3NTEyXHU3NTE0XHU3NTE1XHU3NTE2XHU3NTE3XHU3NTFiXHU3NTFkXHU3NTFlXHU3NTIwXHU3NTIxXHU3NTIyXHU3''@;'; put 'put ''NTIzXHU3NTI0XHU3NTI2XHU3NTI3XHU3NTJhXHU3NTJlXHU3NTM0XHU3NTM2XHU3NTM5XHU3NTNjXHU3NTNkXHU3NTNmXHU3NTQxXHU3NTQyXHU3NTQzXHU3NTQ0XHU3NTQ2XHU3NTQ3XHU3NTQ5XHU3NTRhXHU3NTRkXHU3NTUwXHU3NTUxXHU3NTUyXHU3NTUzXHU3NTU1XHU3NTU2XHU3NTU3''@;'; put 'put ''XHU3NTU4XHVmZmZkXHU3NTVkXHU3NTVlXHU3NTVmXHU3NTYwXHU3NTYxXHU3NTYyXHU3NTYzXHU3NTY0XHU3NTY3XHU3NTY4XHU3NTY5XHU3NTZiXHU3NTZjXHU3NTZkXHU3NTZlXHU3NTZmXHU3NTcwXHU3NTcxXHU3NTczXHU3NTc1XHU3NTc2XHU3NTc3XHU3NTdhXHU3NTdiXHU3NTdjXHU3''@;'; put 'put ''NTdkXHU3NTdlXHU3NTgwXHU3NTgxXHU3NTgyXHU3NTg0XHU3NTg1XHU3NTg3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc0XS5sZW5ndGg7KytFKTY1NTMzIT09''@;'; put 'put ''QlsxNzRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3NF1bRV1dPTQ0NTQ0K0UsTFs0NDU0NCtFXT1CWzE3NF1bRV0pO2ZvcihCWzE3NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzU4OFx1NzU4OVx1NzU4YVx1NzU4Y1x1NzU4''@;'; put 'put ''ZFx1NzU4ZVx1NzU5MFx1NzU5M1x1NzU5NVx1NzU5OFx1NzU5Ylx1NzU5Y1x1NzU5ZVx1NzVhMlx1NzVhNlx1NzVhN1x1NzVhOFx1NzVhOVx1NzVhYVx1NzVhZFx1NzViNlx1NzViN1x1NzViYVx1NzViYlx1NzViZlx1NzVjMFx1NzVjMVx1NzVjNlx1NzVjYlx1NzVjY1x1NzVjZVx1NzVjZlx1''@;'; put 'put ''NzVkMFx1NzVkMVx1NzVkM1x1NzVkN1x1NzVkOVx1NzVkYVx1NzVkY1x1NzVkZFx1NzVkZlx1NzVlMFx1NzVlMVx1NzVlNVx1NzVlOVx1NzVlY1x1NzVlZFx1NzVlZVx1NzVlZlx1NzVmMlx1NzVmM1x1NzVmNVx1NzVmNlx1NzVmN1x1NzVmOFx1NzVmYVx1NzVmYlx1NzVmZFx1NzVmZVx1NzYw''@;'; put 'put ''Mlx1NzYwNFx1NzYwNlx1NzYwN1x1ZmZmZFx1NzYwOFx1NzYwOVx1NzYwYlx1NzYwZFx1NzYwZVx1NzYwZlx1NzYxMVx1NzYxMlx1NzYxM1x1NzYxNFx1NzYxNlx1NzYxYVx1NzYxY1x1NzYxZFx1NzYxZVx1NzYyMVx1NzYyM1x1NzYyN1x1NzYyOFx1NzYyY1x1NzYyZVx1NzYyZlx1NzYzMVx1''@;'; put 'put ''NzYzMlx1NzYzNlx1NzYzN1x1NzYzOVx1NzYzYVx1NzYzYlx1NzYzZFx1NzY0MVx1NzY0Mlx1NzY0NFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3NV0ubGVuZ3Ro''@;'; put 'put ''OysrRSk2NTUzMyE9PUJbMTc1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzVdW0VdXT00NDgwMCtFLExbNDQ4MDArRV09QlsxNzVdW0VdKTtmb3IoQlsxNzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2NDVcdTc2NDZcdTc2''@;'; put 'put ''NDdcdTc2NDhcdTc2NDlcdTc2NGFcdTc2NGJcdTc2NGVcdTc2NGZcdTc2NTBcdTc2NTFcdTc2NTJcdTc2NTNcdTc2NTVcdTc2NTdcdTc2NThcdTc2NTlcdTc2NWFcdTc2NWJcdTc2NWRcdTc2NWZcdTc2NjBcdTc2NjFcdTc2NjJcdTc2NjRcdTc2NjVcdTc2NjZcdTc2NjdcdTc2NjhcdTc2Njlc''@;'; put 'put ''dTc2NmFcdTc2NmNcdTc2NmRcdTc2NmVcdTc2NzBcdTc2NzFcdTc2NzJcdTc2NzNcdTc2NzRcdTc2NzVcdTc2NzZcdTc2NzdcdTc2NzlcdTc2N2FcdTc2N2NcdTc2N2ZcdTc2ODBcdTc2ODFcdTc2ODNcdTc2ODVcdTc2ODlcdTc2OGFcdTc2OGNcdTc2OGRcdTc2OGZcdTc2OTBcdTc2OTJcdTc2''@;'; put 'put ''OTRcdTc2OTVcdTc2OTdcdTc2OThcdTc2OWFcdTc2OWJcdWZmZmRcdTc2OWNcdTc2OWRcdTc2OWVcdTc2OWZcdTc2YTBcdTc2YTFcdTc2YTJcdTc2YTNcdTc2YTVcdTc2YTZcdTc2YTdcdTc2YThcdTc2YTlcdTc2YWFcdTc2YWJcdTc2YWNcdTc2YWRcdTc2YWZcdTc2YjBcdTc2YjNcdTc2YjVc''@;'; put 'put ''dTc2YjZcdTc2YjdcdTc2YjhcdTc2YjlcdTc2YmFcdTc2YmJcdTc2YmNcdTc2YmRcdTc2YmVcdTc2YzBcdTc2YzFcdTc2YzNcdTU1NGFcdTk2M2ZcdTU3YzNcdTYzMjhcdTU0Y2VcdTU1MDlcdTU0YzBcdTc2OTFcdTc2NGNcdTg1M2NcdTc3ZWVcdTgyN2VcdTc4OGRcdTcyMzFcdTk2OThcdTk3''@;'; put 'put ''OGRcdTZjMjhcdTViODlcdTRmZmFcdTYzMDlcdTY2OTdcdTVjYjhcdTgwZmFcdTY4NDhcdTgwYWVcdTY2MDJcdTc2Y2VcdTUxZjlcdTY1NTZcdTcxYWNcdTdmZjFcdTg4ODRcdTUwYjJcdTU5NjVcdTYxY2FcdTZmYjNcdTgyYWRcdTYzNGNcdTYyNTJcdTUzZWRcdTU0MjdcdTdiMDZcdTUxNmJc''@;'; put 'put ''dTc1YTRcdTVkZjRcdTYyZDRcdThkY2JcdTk3NzZcdTYyOGFcdTgwMTlcdTU3NWRcdTk3MzhcdTdmNjJcdTcyMzhcdTc2N2RcdTY3Y2ZcdTc2N2VcdTY0NDZcdTRmNzBcdThkMjVcdTYyZGNcdTdhMTdcdTY1OTFcdTczZWRcdTY0MmNcdTYyNzNcdTgyMmNcdTk4ODFcdTY3N2ZcdTcyNDhcdTYy''@;'; put 'put ''NmVcdTYyY2NcdTRmMzRcdTc0ZTNcdTUzNGFcdTUyOWVcdTdlY2FcdTkwYTZcdTVlMmVcdTY4ODZcdTY5OWNcdTgxODBcdTdlZDFcdTY4ZDJcdTc4YzVcdTg2OGNcdTk1NTFcdTUwOGRcdThjMjRcdTgyZGVcdTgwZGVcdTUzMDVcdTg5MTJcdTUyNjVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9''@;'; put 'put ''QlsxNzZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTc2XVtFXV09NDUwNTYrRSxMWzQ1MDU2K0VdPUJbMTc2XVtFXSk7Zm9yKEJbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3''@;'; put 'put ''NmM0XHU3NmM3XHU3NmM5XHU3NmNiXHU3NmNjXHU3NmQzXHU3NmQ1XHU3NmQ5XHU3NmRhXHU3NmRjXHU3NmRkXHU3NmRlXHU3NmUwXHU3NmUxXHU3NmUyXHU3NmUzXHU3NmU0XHU3NmU2XHU3NmU3XHU3NmU4XHU3NmU5XHU3NmVhXHU3NmViXHU3NmVjXHU3NmVkXHU3NmYwXHU3NmYzXHU3NmY1''@;'; put 'put ''XHU3NmY2XHU3NmY3XHU3NmZhXHU3NmZiXHU3NmZkXHU3NmZmXHU3NzAwXHU3NzAyXHU3NzAzXHU3NzA1XHU3NzA2XHU3NzBhXHU3NzBjXHU3NzBlXHU3NzBmXHU3NzEwXHU3NzExXHU3NzEyXHU3NzEzXHU3NzE0XHU3NzE1XHU3NzE2XHU3NzE3XHU3NzE4XHU3NzFiXHU3NzFjXHU3NzFkXHU3''@;'; put 'put ''NzFlXHU3NzIxXHU3NzIzXHU3NzI0XHU3NzI1XHU3NzI3XHU3NzJhXHU3NzJiXHVmZmZkXHU3NzJjXHU3NzJlXHU3NzMwXHU3NzMxXHU3NzMyXHU3NzMzXHU3NzM0XHU3NzM5XHU3NzNiXHU3NzNkXHU3NzNlXHU3NzNmXHU3NzQyXHU3NzQ0XHU3NzQ1XHU3NzQ2XHU3NzQ4XHU3NzQ5XHU3NzRh''@;'; put 'put ''XHU3NzRiXHU3NzRjXHU3NzRkXHU3NzRlXHU3NzRmXHU3NzUyXHU3NzUzXHU3NzU0XHU3NzU1XHU3NzU2XHU3NzU3XHU3NzU4XHU3NzU5XHU3NzVjXHU4NTg0XHU5NmY5XHU0ZmRkXHU1ODIxXHU5OTcxXHU1YjlkXHU2MmIxXHU2MmE1XHU2NmI0XHU4Yzc5XHU5YzhkXHU3MjA2XHU2NzZmXHU3''@;'; put 'put ''ODkxXHU2MGIyXHU1MzUxXHU1MzE3XHU4Zjg4XHU4MGNjXHU4ZDFkXHU5NGExXHU1MDBkXHU3MmM4XHU1OTA3XHU2MGViXHU3MTE5XHU4OGFiXHU1OTU0XHU4MmVmXHU2NzJjXHU3YjI4XHU1ZDI5XHU3ZWY3XHU3NTJkXHU2Y2Y1XHU4ZTY2XHU4ZmY4XHU5MDNjXHU5ZjNiXHU2YmQ0XHU5MTE5''@;'; put 'put ''XHU3YjE0XHU1ZjdjXHU3OGE3XHU4NGQ2XHU4NTNkXHU2YmQ1XHU2YmQ5XHU2YmQ2XHU1ZTAxXHU1ZTg3XHU3NWY5XHU5NWVkXHU2NTVkXHU1ZjBhXHU1ZmM1XHU4ZjlmXHU1OGMxXHU4MWMyXHU5MDdmXHU5NjViXHU5N2FkXHU4ZmI5XHU3ZjE2XHU4ZDJjXHU2MjQxXHU0ZmJmXHU1M2Q4XHU1''@;'; put 'put ''MzVlXHU4ZmE4XHU4ZmE5XHU4ZmFiXHU5MDRkXHU2ODA3XHU1ZjZhXHU4MTk4XHU4ODY4XHU5Y2Q2XHU2MThiXHU1MjJiXHU3NjJhXHU1ZjZjXHU2NThjXHU2ZmQyXHU2ZWU4XHU1YmJlXHU2NDQ4XHU1MTc1XHU1MWIwXHU2N2M0XHU0ZTE5XHU3OWM5XHU5OTdjXHU3MGIzXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksRT0wO0UhPUJbMTc3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3N11bRV1dPTQ1MzEyK0UsTFs0NTMxMitFXT1CWzE3N11bRV0pO2ZvcihCWzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1Nzc1ZFx1Nzc1ZVx1Nzc1Zlx1Nzc2MFx1Nzc2NFx1Nzc2N1x1Nzc2OVx1Nzc2YVx1Nzc2ZFx1Nzc2ZVx1Nzc2Zlx1Nzc3MFx1Nzc3MVx1Nzc3Mlx1Nzc3M1x1Nzc3NFx1Nzc3NVx1Nzc3Nlx1Nzc3N1x1Nzc3OFx1Nzc3YVx1Nzc3Ylx1Nzc3Y1x1Nzc4MVx1Nzc4Mlx1Nzc4''@;'; put 'put ''M1x1Nzc4Nlx1Nzc4N1x1Nzc4OFx1Nzc4OVx1Nzc4YVx1Nzc4Ylx1Nzc4Zlx1Nzc5MFx1Nzc5M1x1Nzc5NFx1Nzc5NVx1Nzc5Nlx1Nzc5N1x1Nzc5OFx1Nzc5OVx1Nzc5YVx1Nzc5Ylx1Nzc5Y1x1Nzc5ZFx1Nzc5ZVx1NzdhMVx1NzdhM1x1NzdhNFx1NzdhNlx1NzdhOFx1NzdhYlx1NzdhZFx1''@;'; put 'put ''NzdhZVx1NzdhZlx1NzdiMVx1NzdiMlx1NzdiNFx1NzdiNlx1NzdiN1x1NzdiOFx1NzdiOVx1NzdiYVx1ZmZmZFx1NzdiY1x1NzdiZVx1NzdjMFx1NzdjMVx1NzdjMlx1NzdjM1x1NzdjNFx1NzdjNVx1NzdjNlx1NzdjN1x1NzdjOFx1NzdjOVx1NzdjYVx1NzdjYlx1NzdjY1x1NzdjZVx1Nzdj''@;'; put 'put ''Zlx1NzdkMFx1NzdkMVx1NzdkMlx1NzdkM1x1NzdkNFx1NzdkNVx1NzdkNlx1NzdkOFx1NzdkOVx1NzdkYVx1NzdkZFx1NzdkZVx1NzdkZlx1NzdlMFx1NzdlMVx1NzdlNFx1NzVjNVx1NWU3Nlx1NzNiYlx1ODNlMFx1NjRhZFx1NjJlOFx1OTRiNVx1NmNlMlx1NTM1YVx1NTJjM1x1NjQwZlx1''@;'; put 'put ''OTRjMlx1N2I5NFx1NGYyZlx1NWUxYlx1ODIzNlx1ODExNlx1ODE4YVx1NmUyNFx1NmNjYVx1OWE3M1x1NjM1NVx1NTM1Y1x1NTRmYVx1ODg2NVx1NTdlMFx1NGUwZFx1NWUwM1x1NmI2NVx1N2MzZlx1OTBlOFx1NjAxNlx1NjRlNlx1NzMxY1x1ODhjMVx1Njc1MFx1NjI0ZFx1OGQyMlx1Nzc2''@;'; put 'put ''Y1x1OGUyOVx1OTFjN1x1NWY2OVx1ODNkY1x1ODUyMVx1OTkxMFx1NTNjMlx1ODY5NVx1NmI4Ylx1NjBlZFx1NjBlOFx1NzA3Zlx1ODJjZFx1ODIzMVx1NGVkM1x1NmNhN1x1ODVjZlx1NjRjZFx1N2NkOVx1NjlmZFx1NjZmOVx1ODM0OVx1NTM5NVx1N2I1Nlx1NGZhN1x1NTE4Y1x1NmQ0Ylx1''@;'; put 'put ''NWM0Mlx1OGU2ZFx1NjNkMlx1NTNjOVx1ODMyY1x1ODMzNlx1NjdlNVx1NzhiNFx1NjQzZFx1NWJkZlx1NWM5NFx1NWRlZVx1OGJlN1x1NjJjNlx1NjdmNFx1OGM3YVx1NjQwMFx1NjNiYVx1ODc0OVx1OTk4Ylx1OGMxN1x1N2YyMFx1OTRmMlx1NGVhN1x1OTYxMFx1OThhNFx1NjYwY1x1NzMx''@;'; put 'put ''Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzhdW0VdXT00NTU2OCtFLExbNDU1NjgrRV09QlsxNzhdW0VdKTtmb3IoQlsxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3ZTZcdTc3ZThcdTc3ZWFcdTc3ZWZcdTc3ZjBcdTc3ZjFcdTc3ZjJcdTc3ZjRcdTc3ZjVcdTc3ZjdcdTc3ZjlcdTc3ZmFcdTc3ZmJcdTc3ZmNcdTc4MDNcdTc4MDRcdTc4MDVcdTc4MDZcdTc4MDdcdTc4MDhcdTc4MGFcdTc4MGJcdTc4MGVcdTc4''@;'; put 'put ''MGZcdTc4MTBcdTc4MTNcdTc4MTVcdTc4MTlcdTc4MWJcdTc4MWVcdTc4MjBcdTc4MjFcdTc4MjJcdTc4MjRcdTc4MjhcdTc4MmFcdTc4MmJcdTc4MmVcdTc4MmZcdTc4MzFcdTc4MzJcdTc4MzNcdTc4MzVcdTc4MzZcdTc4M2RcdTc4M2ZcdTc4NDFcdTc4NDJcdTc4NDNcdTc4NDRcdTc4NDZc''@;'; put 'put ''dTc4NDhcdTc4NDlcdTc4NGFcdTc4NGJcdTc4NGRcdTc4NGZcdTc4NTFcdTc4NTNcdTc4NTRcdTc4NThcdTc4NTlcdTc4NWFcdWZmZmRcdTc4NWJcdTc4NWNcdTc4NWVcdTc4NWZcdTc4NjBcdTc4NjFcdTc4NjJcdTc4NjNcdTc4NjRcdTc4NjVcdTc4NjZcdTc4NjdcdTc4NjhcdTc4NjlcdTc4''@;'; put 'put ''NmZcdTc4NzBcdTc4NzFcdTc4NzJcdTc4NzNcdTc4NzRcdTc4NzVcdTc4NzZcdTc4NzhcdTc4NzlcdTc4N2FcdTc4N2JcdTc4N2RcdTc4N2VcdTc4N2ZcdTc4ODBcdTc4ODFcdTc4ODJcdTc4ODNcdTU3M2FcdTVjMWRcdTVlMzhcdTk1N2ZcdTUwN2ZcdTgwYTBcdTUzODJcdTY1NWVcdTc1NDVc''@;'; put 'put ''dTU1MzFcdTUwMjFcdThkODVcdTYyODRcdTk0OWVcdTY3MWRcdTU2MzJcdTZmNmVcdTVkZTJcdTU0MzVcdTcwOTJcdThmNjZcdTYyNmZcdTY0YTRcdTYzYTNcdTVmN2JcdTZmODhcdTkwZjRcdTgxZTNcdThmYjBcdTVjMThcdTY2NjhcdTVmZjFcdTZjODlcdTk2NDhcdThkODFcdTg4NmNcdTY0''@;'; put 'put ''OTFcdTc5ZjBcdTU3Y2VcdTZhNTlcdTYyMTBcdTU0NDhcdTRlNThcdTdhMGJcdTYwZTlcdTZmODRcdThiZGFcdTYyN2ZcdTkwMWVcdTlhOGJcdTc5ZTRcdTU0MDNcdTc1ZjRcdTYzMDFcdTUzMTlcdTZjNjBcdThmZGZcdTVmMWJcdTlhNzBcdTgwM2JcdTlmN2ZcdTRmODhcdTVjM2FcdThkNjRc''@;'; put 'put ''dTdmYzVcdTY1YTVcdTcwYmRcdTUxNDVcdTUxYjJcdTg2NmJcdTVkMDdcdTViYTBcdTYyYmRcdTkxNmNcdTc1NzRcdThlMGNcdTdhMjBcdTYxMDFcdTdiNzlcdTRlYzdcdTdlZjhcdTc3ODVcdTRlMTFcdTgxZWRcdTUyMWRcdTUxZmFcdTZhNzFcdTUzYThcdThlODdcdTk1MDRcdTk2Y2ZcdTZl''@;'; put 'put ''YzFcdTk2NjRcdTY5NWFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3OV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTc5XVtFXV09NDU4MjQrRSxMWzQ1ODI0K0VdPUJbMTc5XVtFXSk7Zm9yKEJbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ODg0XHU3ODg1XHU3ODg2XHU3ODg4XHU3ODhhXHU3ODhiXHU3ODhmXHU3ODkwXHU3ODkyXHU3ODk0XHU3ODk1XHU3ODk2XHU3ODk5XHU3ODlkXHU3ODllXHU3OGEwXHU3OGEyXHU3OGE0XHU3OGE2XHU3OGE4XHU3OGE5XHU3''@;'; put 'put ''OGFhXHU3OGFiXHU3OGFjXHU3OGFkXHU3OGFlXHU3OGFmXHU3OGI1XHU3OGI2XHU3OGI3XHU3OGI4XHU3OGJhXHU3OGJiXHU3OGJjXHU3OGJkXHU3OGJmXHU3OGMwXHU3OGMyXHU3OGMzXHU3OGM0XHU3OGM2XHU3OGM3XHU3OGM4XHU3OGNjXHU3OGNkXHU3OGNlXHU3OGNmXHU3OGQxXHU3OGQy''@;'; put 'put ''XHU3OGQzXHU3OGQ2XHU3OGQ3XHU3OGQ4XHU3OGRhXHU3OGRiXHU3OGRjXHU3OGRkXHU3OGRlXHU3OGRmXHU3OGUwXHU3OGUxXHU3OGUyXHU3OGUzXHVmZmZkXHU3OGU0XHU3OGU1XHU3OGU2XHU3OGU3XHU3OGU5XHU3OGVhXHU3OGViXHU3OGVkXHU3OGVlXHU3OGVmXHU3OGYwXHU3OGYxXHU3''@;'; put 'put ''OGYzXHU3OGY1XHU3OGY2XHU3OGY4XHU3OGY5XHU3OGZiXHU3OGZjXHU3OGZkXHU3OGZlXHU3OGZmXHU3OTAwXHU3OTAyXHU3OTAzXHU3OTA0XHU3OTA2XHU3OTA3XHU3OTA4XHU3OTA5XHU3OTBhXHU3OTBiXHU3OTBjXHU3ODQwXHU1MGE4XHU3N2Q3XHU2NDEwXHU4OWU2XHU1OTA0XHU2M2Uz''@;'; put 'put ''XHU1ZGRkXHU3YTdmXHU2OTNkXHU0ZjIwXHU4MjM5XHU1NTk4XHU0ZTMyXHU3NWFlXHU3YTk3XHU1ZTYyXHU1ZThhXHU5NWVmXHU1MjFiXHU1NDM5XHU3MDhhXHU2Mzc2XHU5NTI0XHU1NzgyXHU2NjI1XHU2OTNmXHU5MTg3XHU1NTA3XHU2ZGYzXHU3ZWFmXHU4ODIyXHU2MjMzXHU3ZWYwXHU3''@;'; put 'put ''NWI1XHU4MzI4XHU3OGMxXHU5NmNjXHU4ZjllXHU2MTQ4XHU3NGY3XHU4YmNkXHU2YjY0XHU1MjNhXHU4ZDUwXHU2YjIxXHU4MDZhXHU4NDcxXHU1NmYxXHU1MzA2XHU0ZWNlXHU0ZTFiXHU1MWQxXHU3Yzk3XHU5MThiXHU3YzA3XHU0ZmMzXHU4ZTdmXHU3YmUxXHU3YTljXHU2NDY3XHU1ZDE0''@;'; put 'put ''XHU1MGFjXHU4MTA2XHU3NjAxXHU3Y2I5XHU2ZGVjXHU3ZmUwXHU2NzUxXHU1YjU4XHU1YmY4XHU3OGNiXHU2NGFlXHU2NDEzXHU2M2FhXHU2MzJiXHU5NTE5XHU2NDJkXHU4ZmJlXHU3YjU0XHU3NjI5XHU2MjUzXHU1OTI3XHU1NDQ2XHU2Yjc5XHU1MGEzXHU2MjM0XHU1ZTI2XHU2Yjg2XHU0''@;'; put 'put ''ZWUzXHU4ZDM3XHU4ODhiXHU1Zjg1XHU5MDJlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4MF1bRV1dPTQ2MDgwK0UsTFs0NjA4MCtFXT1CWzE4MF1bRV0pO2ZvcihCWzE4MV09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzkwZFx1NzkwZVx1NzkwZlx1NzkxMFx1NzkxMVx1NzkxMlx1NzkxNFx1NzkxNVx1NzkxNlx1NzkxN1x1NzkxOFx1NzkxOVx1NzkxYVx1NzkxYlx1NzkxY1x1NzkxZFx1NzkxZlx1NzkyMFx1NzkyMVx1''@;'; put 'put ''NzkyMlx1NzkyM1x1NzkyNVx1NzkyNlx1NzkyN1x1NzkyOFx1NzkyOVx1NzkyYVx1NzkyYlx1NzkyY1x1NzkyZFx1NzkyZVx1NzkyZlx1NzkzMFx1NzkzMVx1NzkzMlx1NzkzM1x1NzkzNVx1NzkzNlx1NzkzN1x1NzkzOFx1NzkzOVx1NzkzZFx1NzkzZlx1Nzk0Mlx1Nzk0M1x1Nzk0NFx1Nzk0''@;'; put 'put ''NVx1Nzk0N1x1Nzk0YVx1Nzk0Ylx1Nzk0Y1x1Nzk0ZFx1Nzk0ZVx1Nzk0Zlx1Nzk1MFx1Nzk1MVx1Nzk1Mlx1Nzk1NFx1Nzk1NVx1Nzk1OFx1Nzk1OVx1Nzk2MVx1Nzk2M1x1ZmZmZFx1Nzk2NFx1Nzk2Nlx1Nzk2OVx1Nzk2YVx1Nzk2Ylx1Nzk2Y1x1Nzk2ZVx1Nzk3MFx1Nzk3MVx1Nzk3Mlx1''@;'; put 'put ''Nzk3M1x1Nzk3NFx1Nzk3NVx1Nzk3Nlx1Nzk3OVx1Nzk3Ylx1Nzk3Y1x1Nzk3ZFx1Nzk3ZVx1Nzk3Zlx1Nzk4Mlx1Nzk4M1x1Nzk4Nlx1Nzk4N1x1Nzk4OFx1Nzk4OVx1Nzk4Ylx1Nzk4Y1x1Nzk4ZFx1Nzk4ZVx1Nzk5MFx1Nzk5MVx1Nzk5Mlx1NjAyMFx1ODAzZFx1NjJjNVx1NGUzOVx1NTM1''@;'; put 'put ''NVx1OTBmOFx1NjNiOFx1ODBjNlx1NjVlNlx1NmMyZVx1NGY0Nlx1NjBlZVx1NmRlMVx1OGJkZVx1NWYzOVx1ODZjYlx1NWY1M1x1NjMyMVx1NTE1YVx1ODM2MVx1Njg2M1x1NTIwMFx1NjM2M1x1OGU0OFx1NTAxMlx1NWM5Ylx1Nzk3N1x1NWJmY1x1NTIzMFx1N2EzYlx1NjBiY1x1OTA1M1x1''@;'; put 'put ''NzZkN1x1NWZiN1x1NWY5N1x1NzY4NFx1OGU2Y1x1NzA2Zlx1NzY3Ylx1N2I0OVx1NzdhYVx1NTFmM1x1OTA5M1x1NTgyNFx1NGY0ZVx1NmVmNFx1OGZlYVx1NjU0Y1x1N2IxYlx1NzJjNFx1NmRhNFx1N2ZkZlx1NWFlMVx1NjJiNVx1NWU5NVx1NTczMFx1ODQ4Mlx1N2IyY1x1NWUxZFx1NWYx''@;'; put 'put ''Zlx1OTAxMlx1N2YxNFx1OThhMFx1NjM4Mlx1NmVjN1x1Nzg5OFx1NzBiOVx1NTE3OFx1OTc1Ylx1NTdhYlx1NzUzNVx1NGY0M1x1NzUzOFx1NWU5N1x1NjBlNlx1NTk2MFx1NmRjMFx1NmJiZlx1Nzg4OVx1NTNmY1x1OTZkNVx1NTFjYlx1NTIwMVx1NjM4OVx1NTQwYVx1OTQ5M1x1OGMwM1x1''@;'; put 'put ''OGRjY1x1NzIzOVx1Nzg5Zlx1ODc3Nlx1OGZlZFx1OGMwZFx1NTNlMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODFdW0VdXT00NjMzNitFLExbNDYzMzYrRV09QlsxODFdW0VdKTtmb3Io''@;'; put 'put ''QlsxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5OTNcdTc5OTRcdTc5OTVcdTc5OTZcdTc5OTdcdTc5OThcdTc5OTlcdTc5OWJcdTc5OWNcdTc5OWRcdTc5OWVcdTc5OWZcdTc5YTBcdTc5YTFcdTc5YTJcdTc5YTNcdTc5YTRc''@;'; put 'put ''dTc5YTVcdTc5YTZcdTc5YThcdTc5YTlcdTc5YWFcdTc5YWJcdTc5YWNcdTc5YWRcdTc5YWVcdTc5YWZcdTc5YjBcdTc5YjFcdTc5YjJcdTc5YjRcdTc5YjVcdTc5YjZcdTc5YjdcdTc5YjhcdTc5YmNcdTc5YmZcdTc5YzJcdTc5YzRcdTc5YzVcdTc5YzdcdTc5YzhcdTc5Y2FcdTc5Y2NcdTc5''@;'; put 'put ''Y2VcdTc5Y2ZcdTc5ZDBcdTc5ZDNcdTc5ZDRcdTc5ZDZcdTc5ZDdcdTc5ZDlcdTc5ZGFcdTc5ZGJcdTc5ZGNcdTc5ZGRcdTc5ZGVcdTc5ZTBcdTc5ZTFcdTc5ZTJcdTc5ZTVcdTc5ZThcdTc5ZWFcdWZmZmRcdTc5ZWNcdTc5ZWVcdTc5ZjFcdTc5ZjJcdTc5ZjNcdTc5ZjRcdTc5ZjVcdTc5ZjZc''@;'; put 'put ''dTc5ZjdcdTc5ZjlcdTc5ZmFcdTc5ZmNcdTc5ZmVcdTc5ZmZcdTdhMDFcdTdhMDRcdTdhMDVcdTdhMDdcdTdhMDhcdTdhMDlcdTdhMGFcdTdhMGNcdTdhMGZcdTdhMTBcdTdhMTFcdTdhMTJcdTdhMTNcdTdhMTVcdTdhMTZcdTdhMThcdTdhMTlcdTdhMWJcdTdhMWNcdTRlMDFcdTc2ZWZcdTUz''@;'; put 'put ''ZWVcdTk0ODlcdTk4NzZcdTlmMGVcdTk1MmRcdTViOWFcdThiYTJcdTRlMjJcdTRlMWNcdTUxYWNcdTg0NjNcdTYxYzJcdTUyYThcdTY4MGJcdTRmOTdcdTYwNmJcdTUxYmJcdTZkMWVcdTUxNWNcdTYyOTZcdTY1OTdcdTk2NjFcdThjNDZcdTkwMTdcdTc1ZDhcdTkwZmRcdTc3NjNcdTZiZDJc''@;'; put 'put ''dTcyOGFcdTcyZWNcdThiZmJcdTU4MzVcdTc3NzlcdThkNGNcdTY3NWNcdTk1NDBcdTgwOWFcdTVlYTZcdTZlMjFcdTU5OTJcdTdhZWZcdTc3ZWRcdTk1M2JcdTZiYjVcdTY1YWRcdTdmMGVcdTU4MDZcdTUxNTFcdTk2MWZcdTViZjlcdTU4YTlcdTU0MjhcdThlNzJcdTY1NjZcdTk4N2ZcdTU2''@;'; put 'put ''ZTRcdTk0OWRcdTc2ZmVcdTkwNDFcdTYzODdcdTU0YzZcdTU5MWFcdTU5M2FcdTU3OWJcdThlYjJcdTY3MzVcdThkZmFcdTgyMzVcdTUyNDFcdTYwZjBcdTU4MTVcdTg2ZmVcdTVjZThcdTllNDVcdTRmYzRcdTk4OWRcdThiYjlcdTVhMjVcdTYwNzZcdTUzODRcdTYyN2NcdTkwNGZcdTkxMDJc''@;'; put 'put ''dTk5N2ZcdTYwNjlcdTgwMGNcdTUxM2ZcdTgwMzNcdTVjMTRcdTk5NzVcdTZkMzFcdTRlOGNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTgyXVtFXV09NDY1OTIrRSxMWzQ2NTkyK0VdPUJb''@;'; put 'put ''MTgyXVtFXSk7Zm9yKEJbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTFkXHU3YTFmXHU3YTIxXHU3YTIyXHU3YTI0XHU3YTI1XHU3YTI2XHU3YTI3XHU3YTI4XHU3YTI5XHU3YTJhXHU3YTJiXHU3YTJjXHU3YTJkXHU3YTJl''@;'; put 'put ''XHU3YTJmXHU3YTMwXHU3YTMxXHU3YTMyXHU3YTM0XHU3YTM1XHU3YTM2XHU3YTM4XHU3YTNhXHU3YTNlXHU3YTQwXHU3YTQxXHU3YTQyXHU3YTQzXHU3YTQ0XHU3YTQ1XHU3YTQ3XHU3YTQ4XHU3YTQ5XHU3YTRhXHU3YTRiXHU3YTRjXHU3YTRkXHU3YTRlXHU3YTRmXHU3YTUwXHU3YTUyXHU3''@;'; put 'put ''YTUzXHU3YTU0XHU3YTU1XHU3YTU2XHU3YTU4XHU3YTU5XHU3YTVhXHU3YTViXHU3YTVjXHU3YTVkXHU3YTVlXHU3YTVmXHU3YTYwXHU3YTYxXHU3YTYyXHU3YTYzXHU3YTY0XHU3YTY1XHU3YTY2XHU3YTY3XHU3YTY4XHVmZmZkXHU3YTY5XHU3YTZhXHU3YTZiXHU3YTZjXHU3YTZkXHU3YTZl''@;'; put 'put ''XHU3YTZmXHU3YTcxXHU3YTcyXHU3YTczXHU3YTc1XHU3YTdiXHU3YTdjXHU3YTdkXHU3YTdlXHU3YTgyXHU3YTg1XHU3YTg3XHU3YTg5XHU3YThhXHU3YThiXHU3YThjXHU3YThlXHU3YThmXHU3YTkwXHU3YTkzXHU3YTk0XHU3YTk5XHU3YTlhXHU3YTliXHU3YTllXHU3YWExXHU3YWEyXHU4''@;'; put 'put ''ZDMwXHU1M2QxXHU3ZjVhXHU3YjRmXHU0ZjEwXHU0ZTRmXHU5NjAwXHU2Y2Q1XHU3M2QwXHU4NWU5XHU1ZTA2XHU3NTZhXHU3ZmZiXHU2YTBhXHU3N2ZlXHU5NDkyXHU3ZTQxXHU1MWUxXHU3MGU2XHU1M2NkXHU4ZmQ0XHU4MzAzXHU4ZDI5XHU3MmFmXHU5OTZkXHU2Y2RiXHU1NzRhXHU4MmIz''@;'; put 'put ''XHU2NWI5XHU4MGFhXHU2MjNmXHU5NjMyXHU1OWE4XHU0ZWZmXHU4YmJmXHU3ZWJhXHU2NTNlXHU4M2YyXHU5NzVlXHU1NTYxXHU5OGRlXHU4MGE1XHU1MzJhXHU4YmZkXHU1NDIwXHU4MGJhXHU1ZTlmXHU2Y2I4XHU4ZDM5XHU4MmFjXHU5MTVhXHU1NDI5XHU2YzFiXHU1MjA2XHU3ZWI3XHU1''@;'; put 'put ''NzVmXHU3MTFhXHU2YzdlXHU3Yzg5XHU1OTRiXHU0ZWZkXHU1ZmZmXHU2MTI0XHU3Y2FhXHU0ZTMwXHU1YzAxXHU2N2FiXHU4NzAyXHU1Y2YwXHU5NTBiXHU5OGNlXHU3NWFmXHU3MGZkXHU5MDIyXHU1MWFmXHU3ZjFkXHU4YmJkXHU1OTQ5XHU1MWU0XHU0ZjViXHU1NDI2XHU1OTJiXHU2NTc3''@;'; put 'put ''XHU4MGE0XHU1Yjc1XHU2Mjc2XHU2MmMyXHU4ZjkwXHU1ZTQ1XHU2YzFmXHU3YjI2XHU0ZjBmXHU0ZmQ4XHU2NzBkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4M11bRV1dPTQ2ODQ4K0Us''@;'; put 'put ''TFs0Njg0OCtFXT1CWzE4M11bRV0pO2ZvcihCWzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2FhM1x1N2FhNFx1N2FhN1x1N2FhOVx1N2FhYVx1N2FhYlx1N2FhZVx1N2FhZlx1N2FiMFx1N2FiMVx1N2FiMlx1N2FiNFx1N2Fi''@;'; put 'put ''NVx1N2FiNlx1N2FiN1x1N2FiOFx1N2FiOVx1N2FiYVx1N2FiYlx1N2FiY1x1N2FiZFx1N2FiZVx1N2FjMFx1N2FjMVx1N2FjMlx1N2FjM1x1N2FjNFx1N2FjNVx1N2FjNlx1N2FjN1x1N2FjOFx1N2FjOVx1N2FjYVx1N2FjY1x1N2FjZFx1N2FjZVx1N2FjZlx1N2FkMFx1N2FkMVx1N2FkMlx1''@;'; put 'put ''N2FkM1x1N2FkNFx1N2FkNVx1N2FkN1x1N2FkOFx1N2FkYVx1N2FkYlx1N2FkY1x1N2FkZFx1N2FlMVx1N2FlMlx1N2FlNFx1N2FlN1x1N2FlOFx1N2FlOVx1N2FlYVx1N2FlYlx1N2FlY1x1N2FlZVx1N2FmMFx1N2FmMVx1N2FmMlx1N2FmM1x1ZmZmZFx1N2FmNFx1N2FmNVx1N2FmNlx1N2Fm''@;'; put 'put ''N1x1N2FmOFx1N2FmYlx1N2FmY1x1N2FmZVx1N2IwMFx1N2IwMVx1N2IwMlx1N2IwNVx1N2IwN1x1N2IwOVx1N2IwY1x1N2IwZFx1N2IwZVx1N2IxMFx1N2IxMlx1N2IxM1x1N2IxNlx1N2IxN1x1N2IxOFx1N2IxYVx1N2IxY1x1N2IxZFx1N2IxZlx1N2IyMVx1N2IyMlx1N2IyM1x1N2IyN1x1''@;'; put 'put ''N2IyOVx1N2IyZFx1NmQ2ZVx1NmRhYVx1Nzk4Zlx1ODhiMVx1NWYxN1x1NzUyYlx1NjI5YVx1OGY4NVx1NGZlZlx1OTFkY1x1NjVhN1x1ODEyZlx1ODE1MVx1NWU5Y1x1ODE1MFx1OGQ3NFx1NTI2Zlx1ODk4Nlx1OGQ0Ylx1NTkwZFx1NTA4NVx1NGVkOFx1OTYxY1x1NzIzNlx1ODE3OVx1OGQx''@;'; put 'put ''Zlx1NWJjY1x1OGJhM1x1OTY0NFx1NTk4N1x1N2YxYVx1NTQ5MFx1NTY3Nlx1NTYwZVx1OGJlNVx1NjUzOVx1Njk4Mlx1OTQ5OVx1NzZkNlx1NmU4OVx1NWU3Mlx1NzUxOFx1Njc0Nlx1NjdkMVx1N2FmZlx1ODA5ZFx1OGQ3Nlx1NjExZlx1NzljNlx1NjU2Mlx1OGQ2M1x1NTE4OFx1NTIxYVx1''@;'; put 'put ''OTRhMlx1N2YzOFx1ODA5Ylx1N2ViMlx1NWM5N1x1NmUyZlx1Njc2MFx1N2JkOVx1NzY4Ylx1OWFkOFx1ODE4Zlx1N2Y5NFx1N2NkNVx1NjQxZVx1OTU1MFx1N2EzZlx1NTQ0YVx1NTRlNVx1NmI0Y1x1NjQwMVx1NjIwOFx1OWUzZFx1ODBmM1x1NzU5OVx1NTI3Mlx1OTc2OVx1ODQ1Ylx1Njgz''@;'; put 'put ''Y1x1ODZlNFx1OTYwMVx1OTY5NFx1OTRlY1x1NGUyYVx1NTQwNFx1N2VkOVx1NjgzOVx1OGRkZlx1ODAxNVx1NjZmNFx1NWU5YVx1N2ZiOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODRd''@;'; put 'put ''W0VdXT00NzEwNCtFLExbNDcxMDQrRV09QlsxODRdW0VdKTtmb3IoQlsxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdiMmZcdTdiMzBcdTdiMzJcdTdiMzRcdTdiMzVcdTdiMzZcdTdiMzdcdTdiMzlcdTdiM2JcdTdiM2RcdTdi''@;'; put 'put ''M2ZcdTdiNDBcdTdiNDFcdTdiNDJcdTdiNDNcdTdiNDRcdTdiNDZcdTdiNDhcdTdiNGFcdTdiNGRcdTdiNGVcdTdiNTNcdTdiNTVcdTdiNTdcdTdiNTlcdTdiNWNcdTdiNWVcdTdiNWZcdTdiNjFcdTdiNjNcdTdiNjRcdTdiNjVcdTdiNjZcdTdiNjdcdTdiNjhcdTdiNjlcdTdiNmFcdTdiNmJc''@;'; put 'put ''dTdiNmNcdTdiNmRcdTdiNmZcdTdiNzBcdTdiNzNcdTdiNzRcdTdiNzZcdTdiNzhcdTdiN2FcdTdiN2NcdTdiN2RcdTdiN2ZcdTdiODFcdTdiODJcdTdiODNcdTdiODRcdTdiODZcdTdiODdcdTdiODhcdTdiODlcdTdiOGFcdTdiOGJcdTdiOGNcdTdiOGVcdTdiOGZcdWZmZmRcdTdiOTFcdTdi''@;'; put 'put ''OTJcdTdiOTNcdTdiOTZcdTdiOThcdTdiOTlcdTdiOWFcdTdiOWJcdTdiOWVcdTdiOWZcdTdiYTBcdTdiYTNcdTdiYTRcdTdiYTVcdTdiYWVcdTdiYWZcdTdiYjBcdTdiYjJcdTdiYjNcdTdiYjVcdTdiYjZcdTdiYjdcdTdiYjlcdTdiYmFcdTdiYmJcdTdiYmNcdTdiYmRcdTdiYmVcdTdiYmZc''@;'; put 'put ''dTdiYzBcdTdiYzJcdTdiYzNcdTdiYzRcdTU3YzJcdTgwM2ZcdTY4OTdcdTVkZTVcdTY1M2JcdTUyOWZcdTYwNmRcdTlmOWFcdTRmOWJcdThlYWNcdTUxNmNcdTViYWJcdTVmMTNcdTVkZTlcdTZjNWVcdTYyZjFcdThkMjFcdTUxNzFcdTk0YTlcdTUyZmVcdTZjOWZcdTgyZGZcdTcyZDdcdTU3''@;'; put 'put ''YTJcdTY3ODRcdThkMmRcdTU5MWZcdThmOWNcdTgzYzdcdTU0OTVcdTdiOGRcdTRmMzBcdTZjYmRcdTViNjRcdTU5ZDFcdTlmMTNcdTUzZTRcdTg2Y2FcdTlhYThcdThjMzdcdTgwYTFcdTY1NDVcdTk4N2VcdTU2ZmFcdTk2YzdcdTUyMmVcdTc0ZGNcdTUyNTBcdTViZTFcdTYzMDJcdTg5MDJc''@;'; put 'put ''dTRlNTZcdTYyZDBcdTYwMmFcdTY4ZmFcdTUxNzNcdTViOThcdTUxYTBcdTg5YzJcdTdiYTFcdTk5ODZcdTdmNTBcdTYwZWZcdTcwNGNcdThkMmZcdTUxNDlcdTVlN2ZcdTkwMWJcdTc0NzBcdTg5YzRcdTU3MmRcdTc4NDVcdTVmNTJcdTlmOWZcdTk1ZmFcdThmNjhcdTliM2NcdThiZTFcdTc2''@;'; put 'put ''NzhcdTY4NDJcdTY3ZGNcdThkZWFcdThkMzVcdTUyM2RcdThmOGFcdTZlZGFcdTY4Y2RcdTk1MDVcdTkwZWRcdTU2ZmRcdTY3OWNcdTg4ZjlcdThmYzdcdTU0YzhcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4NV1bRV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKGdlW0JbMTg1XVtFXV09NDczNjArRSxMWzQ3MzYwK0VdPUJbMTg1XVtFXSk7Zm9yKEJbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YmM1XHU3YmM4XHU3YmM5XHU3YmNhXHU3YmNiXHU3YmNkXHU3YmNlXHU3YmNmXHU3''@;'; put 'put ''YmQwXHU3YmQyXHU3YmQ0XHU3YmQ1XHU3YmQ2XHU3YmQ3XHU3YmQ4XHU3YmRiXHU3YmRjXHU3YmRlXHU3YmRmXHU3YmUwXHU3YmUyXHU3YmUzXHU3YmU0XHU3YmU3XHU3YmU4XHU3YmU5XHU3YmViXHU3YmVjXHU3YmVkXHU3YmVmXHU3YmYwXHU3YmYyXHU3YmYzXHU3YmY0XHU3YmY1XHU3YmY2''@;'; put 'put ''XHU3YmY4XHU3YmY5XHU3YmZhXHU3YmZiXHU3YmZkXHU3YmZmXHU3YzAwXHU3YzAxXHU3YzAyXHU3YzAzXHU3YzA0XHU3YzA1XHU3YzA2XHU3YzA4XHU3YzA5XHU3YzBhXHU3YzBkXHU3YzBlXHU3YzEwXHU3YzExXHU3YzEyXHU3YzEzXHU3YzE0XHU3YzE1XHU3YzE3XHU3YzE4XHU3YzE5XHVm''@;'; put 'put ''ZmZkXHU3YzFhXHU3YzFiXHU3YzFjXHU3YzFkXHU3YzFlXHU3YzIwXHU3YzIxXHU3YzIyXHU3YzIzXHU3YzI0XHU3YzI1XHU3YzI4XHU3YzI5XHU3YzJiXHU3YzJjXHU3YzJkXHU3YzJlXHU3YzJmXHU3YzMwXHU3YzMxXHU3YzMyXHU3YzMzXHU3YzM0XHU3YzM1XHU3YzM2XHU3YzM3XHU3YzM5''@;'; put 'put ''XHU3YzNhXHU3YzNiXHU3YzNjXHU3YzNkXHU3YzNlXHU3YzQyXHU5YWI4XHU1YjY5XHU2ZDc3XHU2YzI2XHU0ZWE1XHU1YmIzXHU5YTg3XHU5MTYzXHU2MWE4XHU5MGFmXHU5N2U5XHU1NDJiXHU2ZGI1XHU1YmQyXHU1MWZkXHU1NThhXHU3ZjU1XHU3ZmYwXHU2NGJjXHU2MzRkXHU2NWYxXHU2''@;'; put 'put ''MWJlXHU2MDhkXHU3MTBhXHU2YzU3XHU2YzQ5XHU1OTJmXHU2NzZkXHU4MjJhXHU1OGQ1XHU1NjhlXHU4YzZhXHU2YmViXHU5MGRkXHU1OTdkXHU4MDE3XHU1M2Y3XHU2ZDY5XHU1NDc1XHU1NTlkXHU4Mzc3XHU4M2NmXHU2ODM4XHU3OWJlXHU1NDhjXHU0ZjU1XHU1NDA4XHU3NmQyXHU4Yzg5''@;'; put 'put ''XHU5NjAyXHU2Y2IzXHU2ZGI4XHU4ZDZiXHU4OTEwXHU5ZTY0XHU4ZDNhXHU1NjNmXHU5ZWQxXHU3NWQ1XHU1Zjg4XHU3MmUwXHU2MDY4XHU1NGZjXHU0ZWE4XHU2YTJhXHU4ODYxXHU2MDUyXHU4ZjcwXHU1NGM0XHU3MGQ4XHU4Njc5XHU5ZTNmXHU2ZDJhXHU1YjhmXHU1ZjE4XHU3ZWEyXHU1''@;'; put 'put ''NTg5XHU0ZmFmXHU3MzM0XHU1NDNjXHU1MzlhXHU1MDE5XHU1NDBlXHU1NDdjXHU0ZTRlXHU1ZmZkXHU3NDVhXHU1OGY2XHU4NDZiXHU4MGUxXHU4Nzc0XHU3MmQwXHU3Y2NhXHU2ZTU2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODZdW0Vd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4Nl1bRV1dPTQ3NjE2K0UsTFs0NzYxNitFXT1CWzE4Nl1bRV0pO2ZvcihCWzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2M0M1x1N2M0NFx1N2M0NVx1N2M0Nlx1N2M0N1x1N2M0OFx1''@;'; put 'put ''N2M0OVx1N2M0YVx1N2M0Ylx1N2M0Y1x1N2M0ZVx1N2M0Zlx1N2M1MFx1N2M1MVx1N2M1Mlx1N2M1M1x1N2M1NFx1N2M1NVx1N2M1Nlx1N2M1N1x1N2M1OFx1N2M1OVx1N2M1YVx1N2M1Ylx1N2M1Y1x1N2M1ZFx1N2M1ZVx1N2M1Zlx1N2M2MFx1N2M2MVx1N2M2Mlx1N2M2M1x1N2M2NFx1N2M2''@;'; put 'put ''NVx1N2M2Nlx1N2M2N1x1N2M2OFx1N2M2OVx1N2M2YVx1N2M2Ylx1N2M2Y1x1N2M2ZFx1N2M2ZVx1N2M2Zlx1N2M3MFx1N2M3MVx1N2M3Mlx1N2M3NVx1N2M3Nlx1N2M3N1x1N2M3OFx1N2M3OVx1N2M3YVx1N2M3ZVx1N2M3Zlx1N2M4MFx1N2M4MVx1N2M4Mlx1N2M4M1x1N2M4NFx1N2M4NVx1''@;'; put 'put ''N2M4Nlx1N2M4N1x1ZmZmZFx1N2M4OFx1N2M4YVx1N2M4Ylx1N2M4Y1x1N2M4ZFx1N2M4ZVx1N2M4Zlx1N2M5MFx1N2M5M1x1N2M5NFx1N2M5Nlx1N2M5OVx1N2M5YVx1N2M5Ylx1N2NhMFx1N2NhMVx1N2NhM1x1N2NhNlx1N2NhN1x1N2NhOFx1N2NhOVx1N2NhYlx1N2NhY1x1N2NhZFx1N2Nh''@;'; put 'put ''Zlx1N2NiMFx1N2NiNFx1N2NiNVx1N2NiNlx1N2NiN1x1N2NiOFx1N2NiYVx1N2NiYlx1NWYyN1x1ODY0ZVx1NTUyY1x1NjJhNFx1NGU5Mlx1NmNhYVx1NjIzN1x1ODJiMVx1NTRkN1x1NTM0ZVx1NzMzZVx1NmVkMVx1NzUzYlx1NTIxMlx1NTMxNlx1OGJkZFx1NjlkMFx1NWY4YVx1NjAwMFx1''@;'; put 'put ''NmRlZVx1NTc0Zlx1NmIyMlx1NzNhZlx1Njg1M1x1OGZkOFx1N2YxM1x1NjM2Mlx1NjBhM1x1NTUyNFx1NzVlYVx1OGM2Mlx1NzExNVx1NmRhM1x1NWJhNlx1NWU3Ylx1ODM1Mlx1NjE0Y1x1OWVjNFx1NzhmYVx1ODc1N1x1N2MyN1x1NzY4N1x1NTFmMFx1NjBmNlx1NzE0Y1x1NjY0M1x1NWU0''@;'; put 'put ''Y1x1NjA0ZFx1OGMwZVx1NzA3MFx1NjMyNVx1OGY4OVx1NWZiZFx1NjA2Mlx1ODZkNFx1NTZkZVx1NmJjMVx1NjA5NFx1NjE2N1x1NTM0OVx1NjBlMFx1NjY2Nlx1OGQzZlx1NzlmZFx1NGYxYVx1NzBlOVx1NmM0N1x1OGJiM1x1OGJmMlx1N2VkOFx1ODM2NFx1NjYwZlx1NWE1YVx1OWI0Mlx1''@;'; put 'put ''NmQ1MVx1NmRmN1x1OGM0MVx1NmQzYlx1NGYxOVx1NzA2Ylx1ODNiN1x1NjIxNlx1NjBkMVx1OTcwZFx1OGQyN1x1Nzk3OFx1NTFmYlx1NTczZVx1NTdmYVx1NjczYVx1NzU3OFx1N2EzZFx1NzllZlx1N2I5NVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4N10ubGVuZ3RoOysrRSk2NTUz''@;'; put 'put ''MyE9PUJbMTg3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODddW0VdXT00Nzg3MitFLExbNDc4NzIrRV09QlsxODddW0VdKTtmb3IoQlsxODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjYmZcdTdjYzBcdTdjYzJcdTdjYzNc''@;'; put 'put ''dTdjYzRcdTdjYzZcdTdjYzlcdTdjY2JcdTdjY2VcdTdjY2ZcdTdjZDBcdTdjZDFcdTdjZDJcdTdjZDNcdTdjZDRcdTdjZDhcdTdjZGFcdTdjZGJcdTdjZGRcdTdjZGVcdTdjZTFcdTdjZTJcdTdjZTNcdTdjZTRcdTdjZTVcdTdjZTZcdTdjZTdcdTdjZTlcdTdjZWFcdTdjZWJcdTdjZWNcdTdj''@;'; put 'put ''ZWRcdTdjZWVcdTdjZjBcdTdjZjFcdTdjZjJcdTdjZjNcdTdjZjRcdTdjZjVcdTdjZjZcdTdjZjdcdTdjZjlcdTdjZmFcdTdjZmNcdTdjZmRcdTdjZmVcdTdjZmZcdTdkMDBcdTdkMDFcdTdkMDJcdTdkMDNcdTdkMDRcdTdkMDVcdTdkMDZcdTdkMDdcdTdkMDhcdTdkMDlcdTdkMGJcdTdkMGNc''@;'; put 'put ''dTdkMGRcdTdkMGVcdTdkMGZcdTdkMTBcdWZmZmRcdTdkMTFcdTdkMTJcdTdkMTNcdTdkMTRcdTdkMTVcdTdkMTZcdTdkMTdcdTdkMThcdTdkMTlcdTdkMWFcdTdkMWJcdTdkMWNcdTdkMWRcdTdkMWVcdTdkMWZcdTdkMjFcdTdkMjNcdTdkMjRcdTdkMjVcdTdkMjZcdTdkMjhcdTdkMjlcdTdk''@;'; put 'put ''MmFcdTdkMmNcdTdkMmRcdTdkMmVcdTdkMzBcdTdkMzFcdTdkMzJcdTdkMzNcdTdkMzRcdTdkMzVcdTdkMzZcdTgwOGNcdTk5NjVcdThmZjlcdTZmYzBcdThiYTVcdTllMjFcdTU5ZWNcdTdlZTlcdTdmMDlcdTU0MDlcdTY3ODFcdTY4ZDhcdThmOTFcdTdjNGRcdTk2YzZcdTUzY2FcdTYwMjVc''@;'; put 'put ''dTc1YmVcdTZjNzJcdTUzNzNcdTVhYzlcdTdlYTdcdTYzMjRcdTUxZTBcdTgxMGFcdTVkZjFcdTg0ZGZcdTYyODBcdTUxODBcdTViNjNcdTRmMGVcdTc5NmRcdTUyNDJcdTYwYjhcdTZkNGVcdTViYzRcdTViYzJcdThiYTFcdThiYjBcdTY1ZTJcdTVmY2NcdTk2NDVcdTU5OTNcdTdlZTdcdTdl''@;'; put 'put ''YWFcdTU2MDlcdTY3YjdcdTU5MzlcdTRmNzNcdTViYjZcdTUyYTBcdTgzNWFcdTk4OGFcdThkM2VcdTc1MzJcdTk0YmVcdTUwNDdcdTdhM2NcdTRlZjdcdTY3YjZcdTlhN2VcdTVhYzFcdTZiN2NcdTc2ZDFcdTU3NWFcdTVjMTZcdTdiM2FcdTk1ZjRcdTcxNGVcdTUxN2NcdTgwYTlcdTgyNzBc''@;'; put 'put ''dTU5NzhcdTdmMDRcdTgzMjdcdTY4YzBcdTY3ZWNcdTc4YjFcdTc4NzdcdTYyZTNcdTYzNjFcdTdiODBcdTRmZWRcdTUyNmFcdTUxY2ZcdTgzNTBcdTY5ZGJcdTkyNzRcdThkZjVcdThkMzFcdTg5YzFcdTk1MmVcdTdiYWRcdTRlZjZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODhdLmxl''@;'; put 'put ''bmd0aDsrK0UpNjU1MzMhPT1CWzE4OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTg4XVtFXV09NDgxMjgrRSxMWzQ4MTI4K0VdPUJbMTg4XVtFXSk7Zm9yKEJbMTg5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZDM3XHU3ZDM4''@;'; put 'put ''XHU3ZDM5XHU3ZDNhXHU3ZDNiXHU3ZDNjXHU3ZDNkXHU3ZDNlXHU3ZDNmXHU3ZDQwXHU3ZDQxXHU3ZDQyXHU3ZDQzXHU3ZDQ0XHU3ZDQ1XHU3ZDQ2XHU3ZDQ3XHU3ZDQ4XHU3ZDQ5XHU3ZDRhXHU3ZDRiXHU3ZDRjXHU3ZDRkXHU3ZDRlXHU3ZDRmXHU3ZDUwXHU3ZDUxXHU3ZDUyXHU3ZDUzXHU3''@;'; put 'put ''ZDU0XHU3ZDU1XHU3ZDU2XHU3ZDU3XHU3ZDU4XHU3ZDU5XHU3ZDVhXHU3ZDViXHU3ZDVjXHU3ZDVkXHU3ZDVlXHU3ZDVmXHU3ZDYwXHU3ZDYxXHU3ZDYyXHU3ZDYzXHU3ZDY0XHU3ZDY1XHU3ZDY2XHU3ZDY3XHU3ZDY4XHU3ZDY5XHU3ZDZhXHU3ZDZiXHU3ZDZjXHU3ZDZkXHU3ZDZmXHU3ZDcw''@;'; put 'put ''XHU3ZDcxXHU3ZDcyXHU3ZDczXHU3ZDc0XHU3ZDc1XHU3ZDc2XHVmZmZkXHU3ZDc4XHU3ZDc5XHU3ZDdhXHU3ZDdiXHU3ZDdjXHU3ZDdkXHU3ZDdlXHU3ZDdmXHU3ZDgwXHU3ZDgxXHU3ZDgyXHU3ZDgzXHU3ZDg0XHU3ZDg1XHU3ZDg2XHU3ZDg3XHU3ZDg4XHU3ZDg5XHU3ZDhhXHU3ZDhiXHU3''@;'; put 'put ''ZDhjXHU3ZDhkXHU3ZDhlXHU3ZDhmXHU3ZDkwXHU3ZDkxXHU3ZDkyXHU3ZDkzXHU3ZDk0XHU3ZDk1XHU3ZDk2XHU3ZDk3XHU3ZDk4XHU1MDY1XHU4MjMwXHU1MjUxXHU5OTZmXHU2ZTEwXHU2ZTg1XHU2ZGE3XHU1ZWZhXHU1MGY1XHU1OWRjXHU1YzA2XHU2ZDQ2XHU2YzVmXHU3NTg2XHU4NDhi''@;'; put 'put ''XHU2ODY4XHU1OTU2XHU4YmIyXHU1MzIwXHU5MTcxXHU5NjRkXHU4NTQ5XHU2OTEyXHU3OTAxXHU3MTI2XHU4MGY2XHU0ZWE0XHU5MGNhXHU2ZDQ3XHU5YTg0XHU1YTA3XHU1NmJjXHU2NDA1XHU5NGYwXHU3N2ViXHU0ZmE1XHU4MTFhXHU3MmUxXHU4OWQyXHU5OTdhXHU3ZjM0XHU3ZWRlXHU1''@;'; put 'put ''MjdmXHU2NTU5XHU5MTc1XHU4ZjdmXHU4ZjgzXHU1M2ViXHU3YTk2XHU2M2VkXHU2M2E1XHU3Njg2XHU3OWY4XHU4ODU3XHU5NjM2XHU2MjJhXHU1MmFiXHU4MjgyXHU2ODU0XHU2NzcwXHU2Mzc3XHU3NzZiXHU3YWVkXHU2ZDAxXHU3ZWQzXHU4OWUzXHU1OWQwXHU2MjEyXHU4NWM5XHU4MmE1''@;'; put 'put ''XHU3NTRjXHU1MDFmXHU0ZWNiXHU3NWE1XHU4YmViXHU1YzRhXHU1ZGZlXHU3YjRiXHU2NWE0XHU5MWQxXHU0ZWNhXHU2ZDI1XHU4OTVmXHU3ZDI3XHU5NTI2XHU0ZWM1XHU4YzI4XHU4ZmRiXHU5NzczXHU2NjRiXHU3OTgxXHU4ZmQxXHU3MGVjXHU2ZDc4XHVmZmZkIi5zcGxpdCgiIiksRT0w''@;'; put 'put ''O0UhPUJbMTg5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4OV1bRV1dPTQ4Mzg0K0UsTFs0ODM4NCtFXT1CWzE4OV1bRV0pO2ZvcihCWzE5MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1N2Q5OVx1N2Q5YVx1N2Q5Ylx1N2Q5Y1x1N2Q5ZFx1N2Q5ZVx1N2Q5Zlx1N2RhMFx1N2RhMVx1N2RhMlx1N2RhM1x1N2RhNFx1N2RhNVx1N2RhN1x1N2RhOFx1N2RhOVx1N2RhYVx1N2RhYlx1N2RhY1x1N2RhZFx1N2RhZlx1N2RiMFx1N2RiMVx1N2RiMlx1N2RiM1x1N2RiNFx1N2RiNVx1''@;'; put 'put ''N2RiNlx1N2RiN1x1N2RiOFx1N2RiOVx1N2RiYVx1N2RiYlx1N2RiY1x1N2RiZFx1N2RiZVx1N2RiZlx1N2RjMFx1N2RjMVx1N2RjMlx1N2RjM1x1N2RjNFx1N2RjNVx1N2RjNlx1N2RjN1x1N2RjOFx1N2RjOVx1N2RjYVx1N2RjYlx1N2RjY1x1N2RjZFx1N2RjZVx1N2RjZlx1N2RkMFx1N2Rk''@;'; put 'put ''MVx1N2RkMlx1N2RkM1x1N2RkNFx1N2RkNVx1N2RkNlx1N2RkN1x1N2RkOFx1N2RkOVx1ZmZmZFx1N2RkYVx1N2RkYlx1N2RkY1x1N2RkZFx1N2RkZVx1N2RkZlx1N2RlMFx1N2RlMVx1N2RlMlx1N2RlM1x1N2RlNFx1N2RlNVx1N2RlNlx1N2RlN1x1N2RlOFx1N2RlOVx1N2RlYVx1N2RlYlx1''@;'; put 'put ''N2RlY1x1N2RlZFx1N2RlZVx1N2RlZlx1N2RmMFx1N2RmMVx1N2RmMlx1N2RmM1x1N2RmNFx1N2RmNVx1N2RmNlx1N2RmN1x1N2RmOFx1N2RmOVx1N2RmYVx1NWMzZFx1NTJiMlx1ODM0Nlx1NTE2Mlx1ODMwZVx1Nzc1Ylx1NjY3Nlx1OWNiOFx1NGVhY1x1NjBjYVx1N2NiZVx1N2NiM1x1N2Vj''@;'; put 'put ''Zlx1NGU5NVx1OGI2Nlx1NjY2Zlx1OTg4OFx1OTc1OVx1NTg4M1x1NjU2Y1x1OTU1Y1x1NWY4NFx1NzVjOVx1OTc1Nlx1N2FkZlx1N2FkZVx1NTFjMFx1NzBhZlx1N2E5OFx1NjNlYVx1N2E3Nlx1N2VhMFx1NzM5Nlx1OTdlZFx1NGU0NVx1NzA3OFx1NGU1ZFx1OTE1Mlx1NTNhOVx1NjU1MVx1''@;'; put 'put ''NjVlN1x1ODFmY1x1ODIwNVx1NTQ4ZVx1NWMzMVx1NzU5YVx1OTdhMFx1NjJkOFx1NzJkOVx1NzViZFx1NWM0NVx1OWE3OVx1ODNjYVx1NWM0MFx1NTQ4MFx1NzdlOVx1NGUzZVx1NmNhZVx1ODA1YVx1NjJkMlx1NjM2ZVx1NWRlOFx1NTE3N1x1OGRkZFx1OGUxZVx1OTUyZlx1NGZmMVx1NTNl''@;'; put 'put ''NVx1NjBlN1x1NzBhY1x1NTI2N1x1NjM1MFx1OWU0M1x1NWExZlx1NTAyNlx1NzczN1x1NTM3N1x1N2VlMlx1NjQ4NVx1NjUyYlx1NjI4OVx1NjM5OFx1NTAxNFx1NzIzNVx1ODljOVx1NTFiM1x1OGJjMFx1N2VkZFx1NTc0N1x1ODNjY1x1OTRhN1x1NTE5Ylx1NTQxYlx1NWNmYlx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLEU9MDtFIT1CWzE5MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTBdW0VdXT00ODY0MCtFLExbNDg2NDArRV09QlsxOTBdW0VdKTtmb3IoQlsxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTdkZmJcdTdkZmNcdTdkZmRcdTdkZmVcdTdkZmZcdTdlMDBcdTdlMDFcdTdlMDJcdTdlMDNcdTdlMDRcdTdlMDVcdTdlMDZcdTdlMDdcdTdlMDhcdTdlMDlcdTdlMGFcdTdlMGJcdTdlMGNcdTdlMGRcdTdlMGVcdTdlMGZcdTdlMTBcdTdlMTFcdTdlMTJcdTdlMTNc''@;'; put 'put ''dTdlMTRcdTdlMTVcdTdlMTZcdTdlMTdcdTdlMThcdTdlMTlcdTdlMWFcdTdlMWJcdTdlMWNcdTdlMWRcdTdlMWVcdTdlMWZcdTdlMjBcdTdlMjFcdTdlMjJcdTdlMjNcdTdlMjRcdTdlMjVcdTdlMjZcdTdlMjdcdTdlMjhcdTdlMjlcdTdlMmFcdTdlMmJcdTdlMmNcdTdlMmRcdTdlMmVcdTdl''@;'; put 'put ''MmZcdTdlMzBcdTdlMzFcdTdlMzJcdTdlMzNcdTdlMzRcdTdlMzVcdTdlMzZcdTdlMzdcdTdlMzhcdTdlMzlcdWZmZmRcdTdlM2FcdTdlM2NcdTdlM2RcdTdlM2VcdTdlM2ZcdTdlNDBcdTdlNDJcdTdlNDNcdTdlNDRcdTdlNDVcdTdlNDZcdTdlNDhcdTdlNDlcdTdlNGFcdTdlNGJcdTdlNGNc''@;'; put 'put ''dTdlNGRcdTdlNGVcdTdlNGZcdTdlNTBcdTdlNTFcdTdlNTJcdTdlNTNcdTdlNTRcdTdlNTVcdTdlNTZcdTdlNTdcdTdlNThcdTdlNTlcdTdlNWFcdTdlNWJcdTdlNWNcdTdlNWRcdTRmY2FcdTdhZTNcdTZkNWFcdTkwZTFcdTlhOGZcdTU1ODBcdTU0OTZcdTUzNjFcdTU0YWZcdTVmMDBcdTYz''@;'; put 'put ''ZTlcdTY5NzdcdTUxZWZcdTYxNjhcdTUyMGFcdTU4MmFcdTUyZDhcdTU3NGVcdTc4MGRcdTc3MGJcdTVlYjdcdTYxNzdcdTdjZTBcdTYyNWJcdTYyOTdcdTRlYTJcdTcwOTVcdTgwMDNcdTYyZjdcdTcwZTRcdTk3NjBcdTU3NzdcdTgyZGJcdTY3ZWZcdTY4ZjVcdTc4ZDVcdTk4OTdcdTc5ZDFc''@;'; put 'put ''dTU4ZjNcdTU0YjNcdTUzZWZcdTZlMzRcdTUxNGJcdTUyM2JcdTViYTJcdThiZmVcdTgwYWZcdTU1NDNcdTU3YTZcdTYwNzNcdTU3NTFcdTU0MmRcdTdhN2FcdTYwNTBcdTViNTRcdTYzYTdcdTYyYTBcdTUzZTNcdTYyNjNcdTViYzdcdTY3YWZcdTU0ZWRcdTdhOWZcdTgyZTZcdTkxNzdcdTVl''@;'; put 'put ''OTNcdTg4ZTRcdTU5MzhcdTU3YWVcdTYzMGVcdThkZThcdTgwZWZcdTU3NTdcdTdiNzdcdTRmYTlcdTVmZWJcdTViYmRcdTZiM2VcdTUzMjFcdTdiNTBcdTcyYzJcdTY4NDZcdTc3ZmZcdTc3MzZcdTY1ZjdcdTUxYjVcdTRlOGZcdTc2ZDRcdTVjYmZcdTdhYTVcdTg0NzVcdTU5NGVcdTliNDFc''@;'; put 'put ''dTUwODBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTkxXVtFXV09NDg4OTYrRSxMWzQ4ODk2K0VdPUJbMTkxXVtFXSk7Zm9yKEJbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZTVlXHU3ZTVmXHU3ZTYwXHU3ZTYxXHU3ZTYyXHU3ZTYzXHU3ZTY0XHU3ZTY1XHU3ZTY2XHU3ZTY3XHU3ZTY4XHU3ZTY5XHU3ZTZhXHU3ZTZiXHU3ZTZjXHU3ZTZkXHU3ZTZlXHU3ZTZmXHU3ZTcwXHU3ZTcxXHU3ZTcyXHU3ZTczXHU3ZTc0''@;'; put 'put ''XHU3ZTc1XHU3ZTc2XHU3ZTc3XHU3ZTc4XHU3ZTc5XHU3ZTdhXHU3ZTdiXHU3ZTdjXHU3ZTdkXHU3ZTdlXHU3ZTdmXHU3ZTgwXHU3ZTgxXHU3ZTgzXHU3ZTg0XHU3ZTg1XHU3ZTg2XHU3ZTg3XHU3ZTg4XHU3ZTg5XHU3ZThhXHU3ZThiXHU3ZThjXHU3ZThkXHU3ZThlXHU3ZThmXHU3ZTkwXHU3''@;'; put 'put ''ZTkxXHU3ZTkyXHU3ZTkzXHU3ZTk0XHU3ZTk1XHU3ZTk2XHU3ZTk3XHU3ZTk4XHU3ZTk5XHU3ZTlhXHU3ZTljXHU3ZTlkXHU3ZTllXHVmZmZkXHU3ZWFlXHU3ZWI0XHU3ZWJiXHU3ZWJjXHU3ZWQ2XHU3ZWU0XHU3ZWVjXHU3ZWY5XHU3ZjBhXHU3ZjEwXHU3ZjFlXHU3ZjM3XHU3ZjM5XHU3ZjNi''@;'; put 'put ''XHU3ZjNjXHU3ZjNkXHU3ZjNlXHU3ZjNmXHU3ZjQwXHU3ZjQxXHU3ZjQzXHU3ZjQ2XHU3ZjQ3XHU3ZjQ4XHU3ZjQ5XHU3ZjRhXHU3ZjRiXHU3ZjRjXHU3ZjRkXHU3ZjRlXHU3ZjRmXHU3ZjUyXHU3ZjUzXHU5OTg4XHU2MTI3XHU2ZTgzXHU1NzY0XHU2NjA2XHU2MzQ2XHU1NmYwXHU2MmVjXHU2''@;'; put 'put ''MjY5XHU1ZWQzXHU5NjE0XHU1NzgzXHU2MmM5XHU1NTg3XHU4NzIxXHU4MTRhXHU4ZmEzXHU1NTY2XHU4M2IxXHU2NzY1XHU4ZDU2XHU4NGRkXHU1YTZhXHU2ODBmXHU2MmU2XHU3YmVlXHU5NjExXHU1MTcwXHU2ZjljXHU4YzMwXHU2M2ZkXHU4OWM4XHU2MWQyXHU3ZjA2XHU3MGMyXHU2ZWU1''@;'; put 'put ''XHU3NDA1XHU2OTk0XHU3MmZjXHU1ZWNhXHU5MGNlXHU2NzE3XHU2ZDZhXHU2MzVlXHU1MmIzXHU3MjYyXHU4MDAxXHU0ZjZjXHU1OWU1XHU5MTZhXHU3MGQ5XHU2ZDlkXHU1MmQyXHU0ZTUwXHU5NmY3XHU5NTZkXHU4NTdlXHU3OGNhXHU3ZDJmXHU1MTIxXHU1NzkyXHU2NGMyXHU4MDhiXHU3''@;'; put 'put ''YzdiXHU2Y2VhXHU2OGYxXHU2OTVlXHU1MWI3XHU1Mzk4XHU2OGE4XHU3MjgxXHU5ZWNlXHU3YmYxXHU3MmY4XHU3OWJiXHU2ZjEzXHU3NDA2XHU2NzRlXHU5MWNjXHU5Y2E0XHU3OTNjXHU4Mzg5XHU4MzU0XHU1NDBmXHU2ODE3XHU0ZTNkXHU1Mzg5XHU1MmIxXHU3ODNlXHU1Mzg2XHU1MjI5''@;'; put 'put ''XHU1MDg4XHU0ZjhiXHU0ZmQwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5Ml1bRV1dPTQ5MTUyK0UsTFs0OTE1MitFXT1CWzE5Ml1bRV0pO2ZvcihCWzE5M109Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y1Nlx1N2Y1OVx1N2Y1Ylx1N2Y1Y1x1N2Y1ZFx1N2Y1ZVx1N2Y2MFx1N2Y2M1x1N2Y2NFx1N2Y2NVx1N2Y2Nlx1N2Y2N1x1N2Y2Ylx1N2Y2Y1x1N2Y2ZFx1N2Y2Zlx1N2Y3MFx1N2Y3M1x1N2Y3NVx1N2Y3Nlx1N2Y3''@;'; put 'put ''N1x1N2Y3OFx1N2Y3YVx1N2Y3Ylx1N2Y3Y1x1N2Y3ZFx1N2Y3Zlx1N2Y4MFx1N2Y4Mlx1N2Y4M1x1N2Y4NFx1N2Y4NVx1N2Y4Nlx1N2Y4N1x1N2Y4OFx1N2Y4OVx1N2Y4Ylx1N2Y4ZFx1N2Y4Zlx1N2Y5MFx1N2Y5MVx1N2Y5Mlx1N2Y5M1x1N2Y5NVx1N2Y5Nlx1N2Y5N1x1N2Y5OFx1N2Y5OVx1''@;'; put 'put ''N2Y5Ylx1N2Y5Y1x1N2ZhMFx1N2ZhMlx1N2ZhM1x1N2ZhNVx1N2ZhNlx1N2ZhOFx1N2ZhOVx1N2ZhYVx1N2ZhYlx1N2ZhY1x1N2ZhZFx1N2ZhZVx1N2ZiMVx1ZmZmZFx1N2ZiM1x1N2ZiNFx1N2ZiNVx1N2ZiNlx1N2ZiN1x1N2ZiYVx1N2ZiYlx1N2ZiZVx1N2ZjMFx1N2ZjMlx1N2ZjM1x1N2Zj''@;'; put 'put ''NFx1N2ZjNlx1N2ZjN1x1N2ZjOFx1N2ZjOVx1N2ZjYlx1N2ZjZFx1N2ZjZlx1N2ZkMFx1N2ZkMVx1N2ZkMlx1N2ZkM1x1N2ZkNlx1N2ZkN1x1N2ZkOVx1N2ZkYVx1N2ZkYlx1N2ZkY1x1N2ZkZFx1N2ZkZVx1N2ZlMlx1N2ZlM1x1NzVlMlx1N2FjYlx1N2M5Mlx1NmNhNVx1OTZiNlx1NTI5Ylx1''@;'; put 'put ''NzQ4M1x1NTRlOVx1NGZlOVx1ODA1NFx1ODNiMlx1OGZkZVx1OTU3MFx1NWVjOVx1NjAxY1x1NmQ5Zlx1NWUxOFx1NjU1Ylx1ODEzOFx1OTRmZVx1NjA0Ylx1NzBiY1x1N2VjM1x1N2NhZVx1NTFjOVx1Njg4MVx1N2NiMVx1ODI2Zlx1NGUyNFx1OGY4Nlx1OTFjZlx1NjY3ZVx1NGVhZVx1OGMw''@;'; put 'put ''NVx1NjRhOVx1ODA0YVx1NTBkYVx1NzU5N1x1NzFjZVx1NWJlNVx1OGZiZFx1NmY2Nlx1NGU4Nlx1NjQ4Mlx1OTU2M1x1NWVkNlx1NjU5OVx1NTIxN1x1ODhjMlx1NzBjOFx1NTJhM1x1NzMwZVx1NzQzM1x1Njc5N1x1NzhmN1x1OTcxNlx1NGUzNFx1OTBiYlx1OWNkZVx1NmRjYlx1NTFkYlx1''@;'; put 'put ''OGQ0MVx1NTQxZFx1NjJjZVx1NzNiMlx1ODNmMVx1OTZmNlx1OWY4NFx1OTRjM1x1NGYzNlx1N2Y5YVx1NTFjY1x1NzA3NVx1OTY3NVx1NWNhZFx1OTg4Nlx1NTNlNlx1NGVlNFx1NmU5Y1x1NzQwOVx1NjliNFx1Nzg2Ylx1OTk4Zlx1NzU1OVx1NTIxOFx1NzYyNFx1NmQ0MVx1NjdmM1x1NTE2''@;'; put 'put ''ZFx1OWY5OVx1ODA0Ylx1NTQ5OVx1N2IzY1x1N2FiZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTNdW0VdXT00OTQwOCtFLExbNDk0MDgrRV09QlsxOTNdW0VdKTtmb3IoQlsxOTRdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdmZTRcdTdmZTdcdTdmZThcdTdmZWFcdTdmZWJcdTdmZWNcdTdmZWRcdTdmZWZcdTdmZjJcdTdmZjRcdTdmZjVcdTdmZjZcdTdmZjdcdTdmZjhcdTdmZjlcdTdmZmFcdTdmZmRcdTdmZmVcdTdm''@;'; put 'put ''ZmZcdTgwMDJcdTgwMDdcdTgwMDhcdTgwMDlcdTgwMGFcdTgwMGVcdTgwMGZcdTgwMTFcdTgwMTNcdTgwMWFcdTgwMWJcdTgwMWRcdTgwMWVcdTgwMWZcdTgwMjFcdTgwMjNcdTgwMjRcdTgwMmJcdTgwMmNcdTgwMmRcdTgwMmVcdTgwMmZcdTgwMzBcdTgwMzJcdTgwMzRcdTgwMzlcdTgwM2Fc''@;'; put 'put ''dTgwM2NcdTgwM2VcdTgwNDBcdTgwNDFcdTgwNDRcdTgwNDVcdTgwNDdcdTgwNDhcdTgwNDlcdTgwNGVcdTgwNGZcdTgwNTBcdTgwNTFcdTgwNTNcdTgwNTVcdTgwNTZcdTgwNTdcdWZmZmRcdTgwNTlcdTgwNWJcdTgwNWNcdTgwNWRcdTgwNWVcdTgwNWZcdTgwNjBcdTgwNjFcdTgwNjJcdTgw''@;'; put 'put ''NjNcdTgwNjRcdTgwNjVcdTgwNjZcdTgwNjdcdTgwNjhcdTgwNmJcdTgwNmNcdTgwNmRcdTgwNmVcdTgwNmZcdTgwNzBcdTgwNzJcdTgwNzNcdTgwNzRcdTgwNzVcdTgwNzZcdTgwNzdcdTgwNzhcdTgwNzlcdTgwN2FcdTgwN2JcdTgwN2NcdTgwN2RcdTk2ODZcdTU3ODRcdTYyZTJcdTk2NDdc''@;'; put 'put ''dTY5N2NcdTVhMDRcdTY0MDJcdTdiZDNcdTZmMGZcdTk2NGJcdTgyYTZcdTUzNjJcdTk4ODVcdTVlOTBcdTcwODlcdTYzYjNcdTUzNjRcdTg2NGZcdTljODFcdTllOTNcdTc4OGNcdTk3MzJcdThkZWZcdThkNDJcdTllN2ZcdTZmNWVcdTc5ODRcdTVmNTVcdTk2NDZcdTYyMmVcdTlhNzRcdTU0''@;'; put 'put ''MTVcdTk0ZGRcdTRmYTNcdTY1YzVcdTVjNjVcdTVjNjFcdTdmMTVcdTg2NTFcdTZjMmZcdTVmOGJcdTczODdcdTZlZTRcdTdlZmZcdTVjZTZcdTYzMWJcdTViNmFcdTZlZTZcdTUzNzVcdTRlNzFcdTYzYTBcdTc1NjVcdTYyYTFcdThmNmVcdTRmMjZcdTRlZDFcdTZjYTZcdTdlYjZcdThiYmFc''@;'; put 'put ''dTg0MWRcdTg3YmFcdTdmNTdcdTkwM2JcdTk1MjNcdTdiYTlcdTlhYTFcdTg4ZjhcdTg0M2RcdTZkMWJcdTlhODZcdTdlZGNcdTU5ODhcdTllYmJcdTczOWJcdTc4MDFcdTg2ODJcdTlhNmNcdTlhODJcdTU2MWJcdTU0MTdcdTU3Y2JcdTRlNzBcdTllYTZcdTUzNTZcdThmYzhcdTgxMDlcdTc3''@;'; put 'put ''OTJcdTk5OTJcdTg2ZWVcdTZlZTFcdTg1MTNcdTY2ZmNcdTYxNjJcdTZmMmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTk0XVtFXV09NDk2NjQrRSxMWzQ5NjY0K0VdPUJbMTk0XVtFXSk7''@;'; put 'put ''Zm9yKEJbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDdlXHU4MDgxXHU4MDgyXHU4MDg1XHU4MDg4XHU4MDhhXHU4MDhkXHU4MDhlXHU4MDhmXHU4MDkwXHU4MDkxXHU4MDkyXHU4MDk0XHU4MDk1XHU4MDk3XHU4MDk5XHU4''@;'; put 'put ''MDllXHU4MGEzXHU4MGE2XHU4MGE3XHU4MGE4XHU4MGFjXHU4MGIwXHU4MGIzXHU4MGI1XHU4MGI2XHU4MGI4XHU4MGI5XHU4MGJiXHU4MGM1XHU4MGM3XHU4MGM4XHU4MGM5XHU4MGNhXHU4MGNiXHU4MGNmXHU4MGQwXHU4MGQxXHU4MGQyXHU4MGQzXHU4MGQ0XHU4MGQ1XHU4MGQ4XHU4MGRm''@;'; put 'put ''XHU4MGUwXHU4MGUyXHU4MGUzXHU4MGU2XHU4MGVlXHU4MGY1XHU4MGY3XHU4MGY5XHU4MGZiXHU4MGZlXHU4MGZmXHU4MTAwXHU4MTAxXHU4MTAzXHU4MTA0XHU4MTA1XHU4MTA3XHU4MTA4XHU4MTBiXHVmZmZkXHU4MTBjXHU4MTE1XHU4MTE3XHU4MTE5XHU4MTFiXHU4MTFjXHU4MTFkXHU4''@;'; put 'put ''MTFmXHU4MTIwXHU4MTIxXHU4MTIyXHU4MTIzXHU4MTI0XHU4MTI1XHU4MTI2XHU4MTI3XHU4MTI4XHU4MTI5XHU4MTJhXHU4MTJiXHU4MTJkXHU4MTJlXHU4MTMwXHU4MTMzXHU4MTM0XHU4MTM1XHU4MTM3XHU4MTM5XHU4MTNhXHU4MTNiXHU4MTNjXHU4MTNkXHU4MTNmXHU4YzI5XHU4Mjky''@;'; put 'put ''XHU4MzJiXHU3NmYyXHU2YzEzXHU1ZmQ5XHU4M2JkXHU3MzJiXHU4MzA1XHU5NTFhXHU2YmRiXHU3N2RiXHU5NGM2XHU1MzZmXHU4MzAyXHU1MTkyXHU1ZTNkXHU4YzhjXHU4ZDM4XHU0ZTQ4XHU3M2FiXHU2NzlhXHU2ODg1XHU5MTc2XHU5NzA5XHU3MTY0XHU2Y2ExXHU3NzA5XHU1YTkyXHU5''@;'; put 'put ''NTQxXHU2YmNmXHU3ZjhlXHU2NjI3XHU1YmQwXHU1OWI5XHU1YTlhXHU5NWU4XHU5NWY3XHU0ZWVjXHU4NDBjXHU4NDk5XHU2YWFjXHU3NmRmXHU5NTMwXHU3MzFiXHU2OGE2XHU1YjVmXHU3NzJmXHU5MTlhXHU5NzYxXHU3Y2RjXHU4ZmY3XHU4YzFjXHU1ZjI1XHU3YzczXHU3OWQ4XHU4OWM1''@;'; put 'put ''XHU2Y2NjXHU4NzFjXHU1YmM2XHU1ZTQyXHU2OGM5XHU3NzIwXHU3ZWY1XHU1MTk1XHU1MTRkXHU1MmM5XHU1YTI5XHU3ZjA1XHU5NzYyXHU4MmQ3XHU2M2NmXHU3Nzg0XHU4NWQwXHU3OWQyXHU2ZTNhXHU1ZTk5XHU1OTk5XHU4NTExXHU3MDZkXHU2YzExXHU2MmJmXHU3NmJmXHU2NTRmXHU2''@;'; put 'put ''MGFmXHU5NWZkXHU2NjBlXHU4NzlmXHU5ZTIzXHU5NGVkXHU1NDBkXHU1NDdkXHU4YzJjXHU2NDc4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5NV1bRV1dPTQ5OTIwK0UsTFs0OTkyMCtF''@;'; put 'put ''XT1CWzE5NV1bRV0pO2ZvcihCWzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODE0MFx1ODE0MVx1ODE0Mlx1ODE0M1x1ODE0NFx1ODE0NVx1ODE0N1x1ODE0OVx1ODE0ZFx1ODE0ZVx1ODE0Zlx1ODE1Mlx1ODE1Nlx1ODE1N1x1''@;'; put 'put ''ODE1OFx1ODE1Ylx1ODE1Y1x1ODE1ZFx1ODE1ZVx1ODE1Zlx1ODE2MVx1ODE2Mlx1ODE2M1x1ODE2NFx1ODE2Nlx1ODE2OFx1ODE2YVx1ODE2Ylx1ODE2Y1x1ODE2Zlx1ODE3Mlx1ODE3M1x1ODE3NVx1ODE3Nlx1ODE3N1x1ODE3OFx1ODE4MVx1ODE4M1x1ODE4NFx1ODE4NVx1ODE4Nlx1ODE4''@;'; put 'put ''N1x1ODE4OVx1ODE4Ylx1ODE4Y1x1ODE4ZFx1ODE4ZVx1ODE5MFx1ODE5Mlx1ODE5M1x1ODE5NFx1ODE5NVx1ODE5Nlx1ODE5N1x1ODE5OVx1ODE5YVx1ODE5ZVx1ODE5Zlx1ODFhMFx1ODFhMVx1ODFhMlx1ODFhNFx1ODFhNVx1ZmZmZFx1ODFhN1x1ODFhOVx1ODFhYlx1ODFhY1x1ODFhZFx1''@;'; put 'put ''ODFhZVx1ODFhZlx1ODFiMFx1ODFiMVx1ODFiMlx1ODFiNFx1ODFiNVx1ODFiNlx1ODFiN1x1ODFiOFx1ODFiOVx1ODFiY1x1ODFiZFx1ODFiZVx1ODFiZlx1ODFjNFx1ODFjNVx1ODFjN1x1ODFjOFx1ODFjOVx1ODFjYlx1ODFjZFx1ODFjZVx1ODFjZlx1ODFkMFx1ODFkMVx1ODFkMlx1ODFk''@;'; put 'put ''M1x1NjQ3OVx1ODYxMVx1NmEyMVx1ODE5Y1x1NzhlOFx1NjQ2OVx1OWI1NFx1NjJiOVx1NjcyYlx1ODNhYlx1NThhOFx1OWVkOFx1NmNhYlx1NmYyMFx1NWJkZVx1OTY0Y1x1OGMwYlx1NzI1Zlx1NjdkMFx1NjJjN1x1NzI2MVx1NGVhOVx1NTljNlx1NmJjZFx1NTg5M1x1NjZhZVx1NWU1NVx1''@;'; put 'put ''NTJkZlx1NjE1NVx1NjcyOFx1NzZlZVx1Nzc2Nlx1NzI2N1x1N2E0Nlx1NjJmZlx1NTRlYVx1NTQ1MFx1OTRhMFx1OTBhM1x1NWExY1x1N2ViM1x1NmMxNlx1NGU0M1x1NTk3Nlx1ODAxMFx1NTk0OFx1NTM1N1x1NzUzN1x1OTZiZVx1NTZjYVx1NjMyMFx1ODExMVx1NjA3Y1x1OTVmOVx1NmRk''@;'; put 'put ''Nlx1NTQ2Mlx1OTk4MVx1NTE4NVx1NWFlOVx1ODBmZFx1NTlhZVx1OTcxM1x1NTAyYVx1NmNlNVx1NWMzY1x1NjJkZlx1NGY2MFx1NTMzZlx1ODE3Ylx1OTAwNlx1NmViYVx1ODUyYlx1NjJjOFx1NWU3NFx1NzhiZVx1NjRiNVx1NjM3Ylx1NWZmNVx1NWExOFx1OTE3Zlx1OWUxZlx1NWMzZlx1''@;'; put 'put ''NjM0Zlx1ODA0Mlx1NWI3ZFx1NTU2ZVx1OTU0YVx1OTU0ZFx1NmQ4NVx1NjBhOFx1NjdlMFx1NzJkZVx1NTFkZFx1NWI4MVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTZdW0VdXT01MDE3''@;'; put 'put ''NitFLExbNTAxNzYrRV09QlsxOTZdW0VdKTtmb3IoQlsxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxZDRcdTgxZDVcdTgxZDZcdTgxZDdcdTgxZDhcdTgxZDlcdTgxZGFcdTgxZGJcdTgxZGNcdTgxZGRcdTgxZGVcdTgxZGZc''@;'; put 'put ''dTgxZTBcdTgxZTFcdTgxZTJcdTgxZTRcdTgxZTVcdTgxZTZcdTgxZThcdTgxZTlcdTgxZWJcdTgxZWVcdTgxZWZcdTgxZjBcdTgxZjFcdTgxZjJcdTgxZjVcdTgxZjZcdTgxZjdcdTgxZjhcdTgxZjlcdTgxZmFcdTgxZmRcdTgxZmZcdTgyMDNcdTgyMDdcdTgyMDhcdTgyMDlcdTgyMGFcdTgy''@;'; put 'put ''MGJcdTgyMGVcdTgyMGZcdTgyMTFcdTgyMTNcdTgyMTVcdTgyMTZcdTgyMTdcdTgyMThcdTgyMTlcdTgyMWFcdTgyMWRcdTgyMjBcdTgyMjRcdTgyMjVcdTgyMjZcdTgyMjdcdTgyMjlcdTgyMmVcdTgyMzJcdTgyM2FcdTgyM2NcdTgyM2RcdTgyM2ZcdWZmZmRcdTgyNDBcdTgyNDFcdTgyNDJc''@;'; put 'put ''dTgyNDNcdTgyNDVcdTgyNDZcdTgyNDhcdTgyNGFcdTgyNGNcdTgyNGRcdTgyNGVcdTgyNTBcdTgyNTFcdTgyNTJcdTgyNTNcdTgyNTRcdTgyNTVcdTgyNTZcdTgyNTdcdTgyNTlcdTgyNWJcdTgyNWNcdTgyNWRcdTgyNWVcdTgyNjBcdTgyNjFcdTgyNjJcdTgyNjNcdTgyNjRcdTgyNjVcdTgy''@;'; put 'put ''NjZcdTgyNjdcdTgyNjlcdTYyZTdcdTZjZGVcdTcyNWJcdTYyNmRcdTk0YWVcdTdlYmRcdTgxMTNcdTZkNTNcdTUxOWNcdTVmMDRcdTU5NzRcdTUyYWFcdTYwMTJcdTU5NzNcdTY2OTZcdTg2NTBcdTc1OWZcdTYzMmFcdTYxZTZcdTdjZWZcdThiZmFcdTU0ZTZcdTZiMjdcdTllMjVcdTZiYjRc''@;'; put 'put ''dTg1ZDVcdTU0NTVcdTUwNzZcdTZjYTRcdTU1NmFcdThkYjRcdTcyMmNcdTVlMTVcdTYwMTVcdTc0MzZcdTYyY2RcdTYzOTJcdTcyNGNcdTVmOThcdTZlNDNcdTZkM2VcdTY1MDBcdTZmNThcdTc2ZDhcdTc4ZDBcdTc2ZmNcdTc1NTRcdTUyMjRcdTUzZGJcdTRlNTNcdTVlOWVcdTY1YzFcdTgw''@;'; put 'put ''MmFcdTgwZDZcdTYyOWJcdTU0ODZcdTUyMjhcdTcwYWVcdTg4OGRcdThkZDFcdTZjZTFcdTU0NzhcdTgwZGFcdTU3ZjlcdTg4ZjRcdThkNTRcdTk2NmFcdTkxNGRcdTRmNjlcdTZjOWJcdTU1YjdcdTc2YzZcdTc4MzBcdTYyYThcdTcwZjlcdTZmOGVcdTVmNmRcdTg0ZWNcdTY4ZGFcdTc4N2Nc''@;'; put 'put ''dTdiZjdcdTgxYThcdTY3MGJcdTllNGZcdTYzNjdcdTc4YjBcdTU3NmZcdTc4MTJcdTk3MzlcdTYyNzlcdTYyYWJcdTUyODhcdTc0MzVcdTZiZDdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0Jb''@;'; put 'put ''MTk3XVtFXV09NTA0MzIrRSxMWzUwNDMyK0VdPUJbMTk3XVtFXSk7Zm9yKEJbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjZhXHU4MjZiXHU4MjZjXHU4MjZkXHU4MjcxXHU4Mjc1XHU4Mjc2XHU4Mjc3XHU4Mjc4XHU4Mjdi''@;'; put 'put ''XHU4MjdjXHU4MjgwXHU4MjgxXHU4MjgzXHU4Mjg1XHU4Mjg2XHU4Mjg3XHU4Mjg5XHU4MjhjXHU4MjkwXHU4MjkzXHU4Mjk0XHU4Mjk1XHU4Mjk2XHU4MjlhXHU4MjliXHU4MjllXHU4MmEwXHU4MmEyXHU4MmEzXHU4MmE3XHU4MmIyXHU4MmI1XHU4MmI2XHU4MmJhXHU4MmJiXHU4MmJjXHU4''@;'; put 'put ''MmJmXHU4MmMwXHU4MmMyXHU4MmMzXHU4MmM1XHU4MmM2XHU4MmM5XHU4MmQwXHU4MmQ2XHU4MmQ5XHU4MmRhXHU4MmRkXHU4MmUyXHU4MmU3XHU4MmU4XHU4MmU5XHU4MmVhXHU4MmVjXHU4MmVkXHU4MmVlXHU4MmYwXHU4MmYyXHU4MmYzXHU4MmY1XHU4MmY2XHU4MmY4XHVmZmZkXHU4MmZh''@;'; put 'put ''XHU4MmZjXHU4MmZkXHU4MmZlXHU4MmZmXHU4MzAwXHU4MzBhXHU4MzBiXHU4MzBkXHU4MzEwXHU4MzEyXHU4MzEzXHU4MzE2XHU4MzE4XHU4MzE5XHU4MzFkXHU4MzFlXHU4MzFmXHU4MzIwXHU4MzIxXHU4MzIyXHU4MzIzXHU4MzI0XHU4MzI1XHU4MzI2XHU4MzI5XHU4MzJhXHU4MzJlXHU4''@;'; put 'put ''MzMwXHU4MzMyXHU4MzM3XHU4MzNiXHU4MzNkXHU1NTY0XHU4MTNlXHU3NWIyXHU3NmFlXHU1MzM5XHU3NWRlXHU1MGZiXHU1YzQxXHU4YjZjXHU3YmM3XHU1MDRmXHU3MjQ3XHU5YTk3XHU5OGQ4XHU2ZjAyXHU3NGUyXHU3OTY4XHU2NDg3XHU3N2E1XHU2MmZjXHU5ODkxXHU4ZDJiXHU1NGMx''@;'; put 'put ''XHU4MDU4XHU0ZTUyXHU1NzZhXHU4MmY5XHU4NDBkXHU1ZTczXHU1MWVkXHU3NGY2XHU4YmM0XHU1YzRmXHU1NzYxXHU2Y2ZjXHU5ODg3XHU1YTQ2XHU3ODM0XHU5YjQ0XHU4ZmViXHU3Yzk1XHU1MjU2XHU2MjUxXHU5NGZhXHU0ZWM2XHU4Mzg2XHU4NDYxXHU4M2U5XHU4NGIyXHU1N2Q0XHU2''@;'; put 'put ''NzM0XHU1NzAzXHU2NjZlXHU2ZDY2XHU4YzMxXHU2NmRkXHU3MDExXHU2NzFmXHU2YjNhXHU2ODE2XHU2MjFhXHU1OWJiXHU0ZTAzXHU1MWM0XHU2ZjA2XHU2N2QyXHU2YzhmXHU1MTc2XHU2OGNiXHU1OTQ3XHU2YjY3XHU3NTY2XHU1ZDBlXHU4MTEwXHU5ZjUwXHU2NWQ3XHU3OTQ4XHU3OTQx''@;'; put 'put ''XHU5YTkxXHU4ZDc3XHU1YzgyXHU0ZTVlXHU0ZjAxXHU1NDJmXHU1OTUxXHU3ODBjXHU1NjY4XHU2YzE0XHU4ZmM0XHU1ZjAzXHU2YzdkXHU2Y2UzXHU4YmFiXHU2MzkwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOThdW0VdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihnZVtCWzE5OF1bRV1dPTUwNjg4K0UsTFs1MDY4OCtFXT1CWzE5OF1bRV0pO2ZvcihCWzE5OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODMzZVx1ODMzZlx1ODM0MVx1ODM0Mlx1ODM0NFx1ODM0NVx1ODM0OFx1ODM0''@;'; put 'put ''YVx1ODM0Ylx1ODM0Y1x1ODM0ZFx1ODM0ZVx1ODM1M1x1ODM1NVx1ODM1Nlx1ODM1N1x1ODM1OFx1ODM1OVx1ODM1ZFx1ODM2Mlx1ODM3MFx1ODM3MVx1ODM3Mlx1ODM3M1x1ODM3NFx1ODM3NVx1ODM3Nlx1ODM3OVx1ODM3YVx1ODM3ZVx1ODM3Zlx1ODM4MFx1ODM4MVx1ODM4Mlx1ODM4M1x1''@;'; put 'put ''ODM4NFx1ODM4N1x1ODM4OFx1ODM4YVx1ODM4Ylx1ODM4Y1x1ODM4ZFx1ODM4Zlx1ODM5MFx1ODM5MVx1ODM5NFx1ODM5NVx1ODM5Nlx1ODM5N1x1ODM5OVx1ODM5YVx1ODM5ZFx1ODM5Zlx1ODNhMVx1ODNhMlx1ODNhM1x1ODNhNFx1ODNhNVx1ODNhNlx1ODNhN1x1ODNhY1x1ODNhZFx1ODNh''@;'; put 'put ''ZVx1ZmZmZFx1ODNhZlx1ODNiNVx1ODNiYlx1ODNiZVx1ODNiZlx1ODNjMlx1ODNjM1x1ODNjNFx1ODNjNlx1ODNjOFx1ODNjOVx1ODNjYlx1ODNjZFx1ODNjZVx1ODNkMFx1ODNkMVx1ODNkMlx1ODNkM1x1ODNkNVx1ODNkN1x1ODNkOVx1ODNkYVx1ODNkYlx1ODNkZVx1ODNlMlx1ODNlM1x1''@;'; put 'put ''ODNlNFx1ODNlNlx1ODNlN1x1ODNlOFx1ODNlYlx1ODNlY1x1ODNlZFx1NjA3MFx1NmQzZFx1NzI3NVx1NjI2Nlx1OTQ4ZVx1OTRjNVx1NTM0M1x1OGZjMVx1N2I3ZVx1NGVkZlx1OGMyNlx1NGU3ZVx1OWVkNFx1OTRiMVx1OTRiM1x1NTI0ZFx1NmY1Y1x1OTA2M1x1NmQ0NVx1OGMzNFx1NTgx''@;'; put 'put ''MVx1NWQ0Y1x1NmIyMFx1NmI0OVx1NjdhYVx1NTQ1Ylx1ODE1NFx1N2Y4Y1x1NTg5OVx1ODUzN1x1NWYzYVx1NjJhMlx1NmE0N1x1OTUzOVx1NjU3Mlx1NjA4NFx1Njg2NVx1NzdhN1x1NGU1NFx1NGZhOFx1NWRlN1x1OTc5OFx1NjRhY1x1N2ZkOFx1NWNlZFx1NGZjZlx1N2E4ZFx1NTIwN1x1''@;'; put 'put ''ODMwNFx1NGUxNFx1NjAyZlx1N2E4M1x1OTRhNlx1NGZiNVx1NGViMlx1NzllNlx1NzQzNFx1NTJlNFx1ODJiOVx1NjRkMlx1NzliZFx1NWJkZFx1NmM4MVx1OTc1Mlx1OGY3Ylx1NmMyMlx1NTAzZVx1NTM3Zlx1NmUwNVx1NjRjZVx1NjY3NFx1NmMzMFx1NjBjNVx1OTg3N1x1OGJmN1x1NWU4''@;'; put 'put ''Nlx1NzQzY1x1N2E3N1x1NzljYlx1NGUxOFx1OTBiMVx1NzQwM1x1NmM0Mlx1NTZkYVx1OTE0Ylx1NmNjNVx1OGQ4Ylx1NTMzYVx1ODZjNlx1NjZmMlx1OGVhZlx1NWM0OFx1OWE3MVx1NmUyMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk5''@;'; put 'put ''XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTldW0VdXT01MDk0NCtFLExbNTA5NDQrRV09QlsxOTldW0VdKTtmb3IoQlsyMDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzZWVcdTgzZWZcdTgzZjNcdTgzZjRcdTgzZjVcdTgz''@;'; put 'put ''ZjZcdTgzZjdcdTgzZmFcdTgzZmJcdTgzZmNcdTgzZmVcdTgzZmZcdTg0MDBcdTg0MDJcdTg0MDVcdTg0MDdcdTg0MDhcdTg0MDlcdTg0MGFcdTg0MTBcdTg0MTJcdTg0MTNcdTg0MTRcdTg0MTVcdTg0MTZcdTg0MTdcdTg0MTlcdTg0MWFcdTg0MWJcdTg0MWVcdTg0MWZcdTg0MjBcdTg0MjFc''@;'; put 'put ''dTg0MjJcdTg0MjNcdTg0MjlcdTg0MmFcdTg0MmJcdTg0MmNcdTg0MmRcdTg0MmVcdTg0MmZcdTg0MzBcdTg0MzJcdTg0MzNcdTg0MzRcdTg0MzVcdTg0MzZcdTg0MzdcdTg0MzlcdTg0M2FcdTg0M2JcdTg0M2VcdTg0M2ZcdTg0NDBcdTg0NDFcdTg0NDJcdTg0NDNcdTg0NDRcdTg0NDVcdTg0''@;'; put 'put ''NDdcdTg0NDhcdTg0NDlcdWZmZmRcdTg0NGFcdTg0NGJcdTg0NGNcdTg0NGRcdTg0NGVcdTg0NGZcdTg0NTBcdTg0NTJcdTg0NTNcdTg0NTRcdTg0NTVcdTg0NTZcdTg0NThcdTg0NWRcdTg0NWVcdTg0NWZcdTg0NjBcdTg0NjJcdTg0NjRcdTg0NjVcdTg0NjZcdTg0NjdcdTg0NjhcdTg0NmFc''@;'; put 'put ''dTg0NmVcdTg0NmZcdTg0NzBcdTg0NzJcdTg0NzRcdTg0NzdcdTg0NzlcdTg0N2JcdTg0N2NcdTUzZDZcdTVhMzZcdTlmOGJcdThkYTNcdTUzYmJcdTU3MDhcdTk4YTdcdTY3NDNcdTkxOWJcdTZjYzlcdTUxNjhcdTc1Y2FcdTYyZjNcdTcyYWNcdTUyMzhcdTUyOWRcdTdmM2FcdTcwOTRcdTc2''@;'; put 'put ''MzhcdTUzNzRcdTllNGFcdTY5YjdcdTc4NmVcdTk2YzBcdTg4ZDlcdTdmYTRcdTcxMzZcdTcxYzNcdTUxODlcdTY3ZDNcdTc0ZTRcdTU4ZTRcdTY1MThcdTU2YjdcdThiYTlcdTk5NzZcdTYyNzBcdTdlZDVcdTYwZjlcdTcwZWRcdTU4ZWNcdTRlYzFcdTRlYmFcdTVmY2RcdTk3ZTdcdTRlZmJc''@;'; put 'put ''dThiYTRcdTUyMDNcdTU5OGFcdTdlYWJcdTYyNTRcdTRlY2RcdTY1ZTVcdTYyMGVcdTgzMzhcdTg0YzlcdTgzNjNcdTg3OGRcdTcxOTRcdTZlYjZcdTViYjlcdTdlZDJcdTUxOTdcdTYzYzlcdTY3ZDRcdTgwODlcdTgzMzlcdTg4MTVcdTUxMTJcdTViN2FcdTU5ODJcdThmYjFcdTRlNzNcdTZj''@;'; put 'put ''NWRcdTUxNjVcdTg5MjVcdThmNmZcdTk2MmVcdTg1NGFcdTc0NWVcdTk1MTBcdTk1ZjBcdTZkYTZcdTgyZTVcdTVmMzFcdTY0OTJcdTZkMTJcdTg0MjhcdTgxNmVcdTljYzNcdTU4NWVcdThkNWJcdTRlMDlcdTUzYzFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDBdLmxlbmd0aDsrK0Up''@;'; put 'put ''NjU1MzMhPT1CWzIwMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjAwXVtFXV09NTEyMDArRSxMWzUxMjAwK0VdPUJbMjAwXVtFXSk7Zm9yKEJbMjAxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NDdkXHU4NDdlXHU4NDdmXHU4''@;'; put 'put ''NDgwXHU4NDgxXHU4NDgzXHU4NDg0XHU4NDg1XHU4NDg2XHU4NDhhXHU4NDhkXHU4NDhmXHU4NDkwXHU4NDkxXHU4NDkyXHU4NDkzXHU4NDk0XHU4NDk1XHU4NDk2XHU4NDk4XHU4NDlhXHU4NDliXHU4NDlkXHU4NDllXHU4NDlmXHU4NGEwXHU4NGEyXHU4NGEzXHU4NGE0XHU4NGE1XHU4NGE2''@;'; put 'put ''XHU4NGE3XHU4NGE4XHU4NGE5XHU4NGFhXHU4NGFiXHU4NGFjXHU4NGFkXHU4NGFlXHU4NGIwXHU4NGIxXHU4NGIzXHU4NGI1XHU4NGI2XHU4NGI3XHU4NGJiXHU4NGJjXHU4NGJlXHU4NGMwXHU4NGMyXHU4NGMzXHU4NGM1XHU4NGM2XHU4NGM3XHU4NGM4XHU4NGNiXHU4NGNjXHU4NGNlXHU4''@;'; put 'put ''NGNmXHU4NGQyXHU4NGQ0XHU4NGQ1XHU4NGQ3XHVmZmZkXHU4NGQ4XHU4NGQ5XHU4NGRhXHU4NGRiXHU4NGRjXHU4NGRlXHU4NGUxXHU4NGUyXHU4NGU0XHU4NGU3XHU4NGU4XHU4NGU5XHU4NGVhXHU4NGViXHU4NGVkXHU4NGVlXHU4NGVmXHU4NGYxXHU4NGYyXHU4NGYzXHU4NGY0XHU4NGY1''@;'; put 'put ''XHU4NGY2XHU4NGY3XHU4NGY4XHU4NGY5XHU4NGZhXHU4NGZiXHU4NGZkXHU4NGZlXHU4NTAwXHU4NTAxXHU4NTAyXHU0ZjFlXHU2NTYzXHU2ODUxXHU1NWQzXHU0ZTI3XHU2NDE0XHU5YTlhXHU2MjZiXHU1YWMyXHU3NDVmXHU4MjcyXHU2ZGE5XHU2OGVlXHU1MGU3XHU4MzhlXHU3ODAyXHU2''@;'; put 'put ''NzQwXHU1MjM5XHU2Yzk5XHU3ZWIxXHU1MGJiXHU1NTY1XHU3MTVlXHU3YjViXHU2NjUyXHU3M2NhXHU4MmViXHU2NzQ5XHU1YzcxXHU1MjIwXHU3MTdkXHU4ODZiXHU5NWVhXHU5NjU1XHU2NGM1XHU4ZDYxXHU4MWIzXHU1NTg0XHU2YzU1XHU2MjQ3XHU3ZjJlXHU1ODkyXHU0ZjI0XHU1NTQ2''@;'; put 'put ''XHU4ZDRmXHU2NjRjXHU0ZTBhXHU1YzFhXHU4OGYzXHU2OGEyXHU2MzRlXHU3YTBkXHU3MGU3XHU4MjhkXHU1MmZhXHU5N2Y2XHU1YzExXHU1NGU4XHU5MGI1XHU3ZWNkXHU1OTYyXHU4ZDRhXHU4NmM3XHU4MjBjXHU4MjBkXHU4ZDY2XHU2NDQ0XHU1YzA0XHU2MTUxXHU2ZDg5XHU3OTNlXHU4''@;'; put 'put ''YmJlXHU3ODM3XHU3NTMzXHU1NDdiXHU0ZjM4XHU4ZWFiXHU2ZGYxXHU1YTIwXHU3ZWM1XHU3OTVlXHU2Yzg4XHU1YmExXHU1YTc2XHU3NTFhXHU4MGJlXHU2MTRlXHU2ZTE3XHU1OGYwXHU3NTFmXHU3NTI1XHU3MjcyXHU1MzQ3XHU3ZWYzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAx''@;'; put 'put ''XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwMV1bRV1dPTUxNDU2K0UsTFs1MTQ1NitFXT1CWzIwMV1bRV0pO2ZvcihCWzIwMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODUwM1x1''@;'; put 'put ''ODUwNFx1ODUwNVx1ODUwNlx1ODUwN1x1ODUwOFx1ODUwOVx1ODUwYVx1ODUwYlx1ODUwZFx1ODUwZVx1ODUwZlx1ODUxMFx1ODUxMlx1ODUxNFx1ODUxNVx1ODUxNlx1ODUxOFx1ODUxOVx1ODUxYlx1ODUxY1x1ODUxZFx1ODUxZVx1ODUyMFx1ODUyMlx1ODUyM1x1ODUyNFx1ODUyNVx1ODUy''@;'; put 'put ''Nlx1ODUyN1x1ODUyOFx1ODUyOVx1ODUyYVx1ODUyZFx1ODUyZVx1ODUyZlx1ODUzMFx1ODUzMVx1ODUzMlx1ODUzM1x1ODUzNFx1ODUzNVx1ODUzNlx1ODUzZVx1ODUzZlx1ODU0MFx1ODU0MVx1ODU0Mlx1ODU0NFx1ODU0NVx1ODU0Nlx1ODU0N1x1ODU0Ylx1ODU0Y1x1ODU0ZFx1ODU0ZVx1''@;'; put 'put ''ODU0Zlx1ODU1MFx1ODU1MVx1ODU1Mlx1ODU1M1x1ODU1NFx1ODU1NVx1ZmZmZFx1ODU1N1x1ODU1OFx1ODU1YVx1ODU1Ylx1ODU1Y1x1ODU1ZFx1ODU1Zlx1ODU2MFx1ODU2MVx1ODU2Mlx1ODU2M1x1ODU2NVx1ODU2Nlx1ODU2N1x1ODU2OVx1ODU2YVx1ODU2Ylx1ODU2Y1x1ODU2ZFx1ODU2''@;'; put 'put ''ZVx1ODU2Zlx1ODU3MFx1ODU3MVx1ODU3M1x1ODU3NVx1ODU3Nlx1ODU3N1x1ODU3OFx1ODU3Y1x1ODU3ZFx1ODU3Zlx1ODU4MFx1ODU4MVx1NzcwMVx1NzZkYlx1NTI2OVx1ODBkY1x1NTcyM1x1NWUwOFx1NTkzMVx1NzJlZVx1NjViZFx1NmU3Zlx1OGJkN1x1NWMzOFx1ODY3MVx1NTM0MVx1''@;'; put 'put ''NzdmM1x1NjJmZVx1NjVmNlx1NGVjMFx1OThkZlx1ODY4MFx1NWI5ZVx1OGJjNlx1NTNmMlx1NzdlMlx1NGY3Zlx1NWM0ZVx1OWE3Nlx1NTljYlx1NWYwZlx1NzkzYVx1NThlYlx1NGUxNlx1NjdmZlx1NGU4Ylx1NjJlZFx1OGE5M1x1OTAxZFx1NTJiZlx1NjYyZlx1NTVkY1x1NTY2Y1x1OTAw''@;'; put 'put ''Mlx1NGVkNVx1NGY4ZFx1OTFjYVx1OTk3MFx1NmMwZlx1NWUwMlx1NjA0M1x1NWJhNFx1ODljNlx1OGJkNVx1NjUzNlx1NjI0Ylx1OTk5Nlx1NWI4OFx1NWJmZlx1NjM4OFx1NTUyZVx1NTNkN1x1NzYyNlx1NTE3ZFx1ODUyY1x1NjdhMlx1NjhiM1x1NmI4YVx1NjI5Mlx1OGY5M1x1NTNkNFx1''@;'; put 'put ''ODIxMlx1NmRkMVx1NzU4Zlx1NGU2Nlx1OGQ0ZVx1NWI3MFx1NzE5Zlx1ODVhZlx1NjY5MVx1NjZkOVx1N2Y3Mlx1ODcwMFx1OWVjZFx1OWYyMFx1NWM1ZVx1NjcyZlx1OGZmMFx1NjgxMVx1Njc1Zlx1NjIwZFx1N2FkNlx1NTg4NVx1NWViNlx1NjU3MFx1NmYzMVx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LEU9MDtFIT1CWzIwMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDJdW0VdXT01MTcxMitFLExbNTE3MTIrRV09QlsyMDJdW0VdKTtmb3IoQlsyMDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTg1ODJcdTg1ODNcdTg1ODZcdTg1ODhcdTg1ODlcdTg1OGFcdTg1OGJcdTg1OGNcdTg1OGRcdTg1OGVcdTg1OTBcdTg1OTFcdTg1OTJcdTg1OTNcdTg1OTRcdTg1OTVcdTg1OTZcdTg1OTdcdTg1OThcdTg1OTlcdTg1OWFcdTg1OWRcdTg1OWVcdTg1OWZcdTg1YTBcdTg1YTFcdTg1''@;'; put 'put ''YTJcdTg1YTNcdTg1YTVcdTg1YTZcdTg1YTdcdTg1YTlcdTg1YWJcdTg1YWNcdTg1YWRcdTg1YjFcdTg1YjJcdTg1YjNcdTg1YjRcdTg1YjVcdTg1YjZcdTg1YjhcdTg1YmFcdTg1YmJcdTg1YmNcdTg1YmRcdTg1YmVcdTg1YmZcdTg1YzBcdTg1YzJcdTg1YzNcdTg1YzRcdTg1YzVcdTg1YzZc''@;'; put 'put ''dTg1YzdcdTg1YzhcdTg1Y2FcdTg1Y2JcdTg1Y2NcdTg1Y2RcdTg1Y2VcdTg1ZDFcdTg1ZDJcdWZmZmRcdTg1ZDRcdTg1ZDZcdTg1ZDdcdTg1ZDhcdTg1ZDlcdTg1ZGFcdTg1ZGJcdTg1ZGRcdTg1ZGVcdTg1ZGZcdTg1ZTBcdTg1ZTFcdTg1ZTJcdTg1ZTNcdTg1ZTVcdTg1ZTZcdTg1ZTdcdTg1''@;'; put 'put ''ZThcdTg1ZWFcdTg1ZWJcdTg1ZWNcdTg1ZWRcdTg1ZWVcdTg1ZWZcdTg1ZjBcdTg1ZjFcdTg1ZjJcdTg1ZjNcdTg1ZjRcdTg1ZjVcdTg1ZjZcdTg1ZjdcdTg1ZjhcdTYwNTVcdTUyMzdcdTgwMGRcdTY0NTRcdTg4NzBcdTc1MjlcdTVlMDVcdTY4MTNcdTYyZjRcdTk3MWNcdTUzY2NcdTcyM2Rc''@;'; put 'put ''dThjMDFcdTZjMzRcdTc3NjFcdTdhMGVcdTU0MmVcdTc3YWNcdTk4N2FcdTgyMWNcdThiZjRcdTc4NTVcdTY3MTRcdTcwYzFcdTY1YWZcdTY0OTVcdTU2MzZcdTYwMWRcdTc5YzFcdTUzZjhcdTRlMWRcdTZiN2JcdTgwODZcdTViZmFcdTU1ZTNcdTU2ZGJcdTRmM2FcdTRmM2NcdTk5NzJcdTVk''@;'; put 'put ''ZjNcdTY3N2VcdTgwMzhcdTYwMDJcdTk4ODJcdTkwMDFcdTViOGJcdThiYmNcdThiZjVcdTY0MWNcdTgyNThcdTY0ZGVcdTU1ZmRcdTgyY2ZcdTkxNjVcdTRmZDdcdTdkMjBcdTkwMWZcdTdjOWZcdTUwZjNcdTU4NTFcdTZlYWZcdTViYmZcdThiYzlcdTgwODNcdTkxNzhcdTg0OWNcdTdiOTdc''@;'; put 'put ''dTg2N2RcdTk2OGJcdTk2OGZcdTdlZTVcdTlhZDNcdTc4OGVcdTVjODFcdTdhNTdcdTkwNDJcdTk2YTdcdTc5NWZcdTViNTlcdTYzNWZcdTdiMGJcdTg0ZDFcdTY4YWRcdTU1MDZcdTdmMjlcdTc0MTBcdTdkMjJcdTk1MDFcdTYyNDBcdTU4NGNcdTRlZDZcdTViODNcdTU5NzlcdTU4NTRcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwM11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjAzXVtFXV09NTE5NjgrRSxMWzUxOTY4K0VdPUJbMjAzXVtFXSk7Zm9yKEJbMjA0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU4NWY5XHU4NWZhXHU4NWZjXHU4NWZkXHU4NWZlXHU4NjAwXHU4NjAxXHU4NjAyXHU4NjAzXHU4NjA0XHU4NjA2XHU4NjA3XHU4NjA4XHU4NjA5XHU4NjBhXHU4NjBiXHU4NjBjXHU4NjBkXHU4NjBlXHU4NjBmXHU4NjEwXHU4NjEyXHU4NjEzXHU4NjE0XHU4''@;'; put 'put ''NjE1XHU4NjE3XHU4NjE4XHU4NjE5XHU4NjFhXHU4NjFiXHU4NjFjXHU4NjFkXHU4NjFlXHU4NjFmXHU4NjIwXHU4NjIxXHU4NjIyXHU4NjIzXHU4NjI0XHU4NjI1XHU4NjI2XHU4NjI4XHU4NjJhXHU4NjJiXHU4NjJjXHU4NjJkXHU4NjJlXHU4NjJmXHU4NjMwXHU4NjMxXHU4NjMyXHU4NjMz''@;'; put 'put ''XHU4NjM0XHU4NjM1XHU4NjM2XHU4NjM3XHU4NjM5XHU4NjNhXHU4NjNiXHU4NjNkXHU4NjNlXHU4NjNmXHU4NjQwXHVmZmZkXHU4NjQxXHU4NjQyXHU4NjQzXHU4NjQ0XHU4NjQ1XHU4NjQ2XHU4NjQ3XHU4NjQ4XHU4NjQ5XHU4NjRhXHU4NjRiXHU4NjRjXHU4NjUyXHU4NjUzXHU4NjU1XHU4''@;'; put 'put ''NjU2XHU4NjU3XHU4NjU4XHU4NjU5XHU4NjViXHU4NjVjXHU4NjVkXHU4NjVmXHU4NjYwXHU4NjYxXHU4NjYzXHU4NjY0XHU4NjY1XHU4NjY2XHU4NjY3XHU4NjY4XHU4NjY5XHU4NjZhXHU3MzZkXHU2MzFlXHU4ZTRiXHU4ZTBmXHU4MGNlXHU4MmQ0XHU2MmFjXHU1M2YwXHU2Y2YwXHU5MTVl''@;'; put 'put ''XHU1OTJhXHU2MDAxXHU2YzcwXHU1NzRkXHU2NDRhXHU4ZDJhXHU3NjJiXHU2ZWU5XHU1NzViXHU2YTgwXHU3NWYwXHU2ZjZkXHU4YzJkXHU4YzA4XHU1NzY2XHU2YmVmXHU4ODkyXHU3OGIzXHU2M2EyXHU1M2Y5XHU3MGFkXHU2YzY0XHU1ODU4XHU2NDJhXHU1ODAyXHU2OGUwXHU4MTliXHU1''@;'; put 'put ''NTEwXHU3Y2Q2XHU1MDE4XHU4ZWJhXHU2ZGNjXHU4ZDlmXHU3MGViXHU2MzhmXHU2ZDliXHU2ZWQ0XHU3ZWU2XHU4NDA0XHU2ODQzXHU5MDAzXHU2ZGQ4XHU5Njc2XHU4YmE4XHU1OTU3XHU3Mjc5XHU4NWU0XHU4MTdlXHU3NWJjXHU4YThhXHU2OGFmXHU1MjU0XHU4ZTIyXHU5NTExXHU2M2Qw''@;'; put 'put ''XHU5ODk4XHU4ZTQ0XHU1NTdjXHU0ZjUzXHU2NmZmXHU1NjhmXHU2MGQ1XHU2ZDk1XHU1MjQzXHU1YzQ5XHU1OTI5XHU2ZGZiXHU1ODZiXHU3NTMwXHU3NTFjXHU2MDZjXHU4MjE0XHU4MTQ2XHU2MzExXHU2NzYxXHU4ZmUyXHU3NzNhXHU4ZGYzXHU4ZDM0XHU5NGMxXHU1ZTE2XHU1Mzg1XHU1''@;'; put 'put ''NDJjXHU3MGMzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwNF1bRV1dPTUyMjI0K0UsTFs1MjIyNCtFXT1CWzIwNF1bRV0pO2ZvcihCWzIwNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODY2ZFx1ODY2Zlx1ODY3MFx1ODY3Mlx1ODY3M1x1ODY3NFx1ODY3NVx1ODY3Nlx1ODY3N1x1ODY3OFx1ODY4M1x1ODY4NFx1ODY4NVx1ODY4Nlx1ODY4N1x1ODY4OFx1ODY4OVx1ODY4ZVx1ODY4Zlx1ODY5MFx1ODY5MVx1ODY5Mlx1''@;'; put 'put ''ODY5NFx1ODY5Nlx1ODY5N1x1ODY5OFx1ODY5OVx1ODY5YVx1ODY5Ylx1ODY5ZVx1ODY5Zlx1ODZhMFx1ODZhMVx1ODZhMlx1ODZhNVx1ODZhNlx1ODZhYlx1ODZhZFx1ODZhZVx1ODZiMlx1ODZiM1x1ODZiN1x1ODZiOFx1ODZiOVx1ODZiYlx1ODZiY1x1ODZiZFx1ODZiZVx1ODZiZlx1ODZj''@;'; put 'put ''MVx1ODZjMlx1ODZjM1x1ODZjNVx1ODZjOFx1ODZjY1x1ODZjZFx1ODZkMlx1ODZkM1x1ODZkNVx1ODZkNlx1ODZkN1x1ODZkYVx1ODZkY1x1ZmZmZFx1ODZkZFx1ODZlMFx1ODZlMVx1ODZlMlx1ODZlM1x1ODZlNVx1ODZlNlx1ODZlN1x1ODZlOFx1ODZlYVx1ODZlYlx1ODZlY1x1ODZlZlx1''@;'; put 'put ''ODZmNVx1ODZmNlx1ODZmN1x1ODZmYVx1ODZmYlx1ODZmY1x1ODZmZFx1ODZmZlx1ODcwMVx1ODcwNFx1ODcwNVx1ODcwNlx1ODcwYlx1ODcwY1x1ODcwZVx1ODcwZlx1ODcxMFx1ODcxMVx1ODcxNFx1ODcxNlx1NmM0MFx1NWVmN1x1NTA1Y1x1NGVhZFx1NWVhZFx1NjMzYVx1ODI0N1x1OTAx''@;'; put 'put ''YVx1Njg1MFx1OTE2ZVx1NzdiM1x1NTQwY1x1OTRkY1x1NWY2NFx1N2FlNVx1Njg3Nlx1NjM0NVx1N2I1Mlx1N2VkZlx1NzVkYlx1NTA3N1x1NjI5NVx1NTkzNFx1OTAwZlx1NTFmOFx1NzljM1x1N2E4MVx1NTZmZVx1NWY5Mlx1OTAxNFx1NmQ4Mlx1NWM2MFx1NTcxZlx1NTQxMFx1NTE1NFx1''@;'; put 'put ''NmU0ZFx1NTZlMlx1NjNhOFx1OTg5M1x1ODE3Zlx1ODcxNVx1ODkyYVx1OTAwMFx1NTQxZVx1NWM2Zlx1ODFjMFx1NjJkNlx1NjI1OFx1ODEzMVx1OWUzNVx1OTY0MFx1OWE2ZVx1OWE3Y1x1NjkyZFx1NTlhNVx1NjJkM1x1NTUzZVx1NjMxNlx1NTRjN1x1ODZkOVx1NmQzY1x1NWEwM1x1NzRl''@;'; put 'put ''Nlx1ODg5Y1x1NmI2YVx1NTkxNlx1OGM0Y1x1NWYyZlx1NmU3ZVx1NzNhOVx1OTg3ZFx1NGUzOFx1NzBmN1x1NWI4Y1x1Nzg5N1x1NjMzZFx1NjY1YVx1NzY5Nlx1NjBjYlx1NWI5Ylx1NWE0OVx1NGUwN1x1ODE1NVx1NmM2YVx1NzM4Ylx1NGVhMVx1Njc4OVx1N2Y1MVx1NWY4MFx1NjVmYVx1''@;'; put 'put ''NjcxYlx1NWZkOFx1NTk4NFx1NWEwMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDVdW0VdXT01MjQ4MCtFLExbNTI0ODArRV09QlsyMDVdW0VdKTtmb3IoQlsyMDZdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg3MTlcdTg3MWJcdTg3MWRcdTg3MWZcdTg3MjBcdTg3MjRcdTg3MjZcdTg3MjdcdTg3MjhcdTg3MmFcdTg3MmJcdTg3MmNcdTg3MmRcdTg3MmZcdTg3MzBcdTg3MzJcdTg3MzNcdTg3MzVcdTg3MzZcdTg3Mzhc''@;'; put 'put ''dTg3MzlcdTg3M2FcdTg3M2NcdTg3M2RcdTg3NDBcdTg3NDFcdTg3NDJcdTg3NDNcdTg3NDRcdTg3NDVcdTg3NDZcdTg3NGFcdTg3NGJcdTg3NGRcdTg3NGZcdTg3NTBcdTg3NTFcdTg3NTJcdTg3NTRcdTg3NTVcdTg3NTZcdTg3NThcdTg3NWFcdTg3NWJcdTg3NWNcdTg3NWRcdTg3NWVcdTg3''@;'; put 'put ''NWZcdTg3NjFcdTg3NjJcdTg3NjZcdTg3NjdcdTg3NjhcdTg3NjlcdTg3NmFcdTg3NmJcdTg3NmNcdTg3NmRcdTg3NmZcdTg3NzFcdTg3NzJcdTg3NzNcdTg3NzVcdWZmZmRcdTg3NzdcdTg3NzhcdTg3NzlcdTg3N2FcdTg3N2ZcdTg3ODBcdTg3ODFcdTg3ODRcdTg3ODZcdTg3ODdcdTg3ODlc''@;'; put 'put ''dTg3OGFcdTg3OGNcdTg3OGVcdTg3OGZcdTg3OTBcdTg3OTFcdTg3OTJcdTg3OTRcdTg3OTVcdTg3OTZcdTg3OThcdTg3OTlcdTg3OWFcdTg3OWJcdTg3OWNcdTg3OWRcdTg3OWVcdTg3YTBcdTg3YTFcdTg3YTJcdTg3YTNcdTg3YTRcdTVkY2RcdTVmYWVcdTUzNzFcdTk3ZTZcdThmZGRcdTY4''@;'; put 'put ''NDVcdTU2ZjRcdTU1MmZcdTYwZGZcdTRlM2FcdTZmNGRcdTdlZjRcdTgyYzdcdTg0MGVcdTU5ZDRcdTRmMWZcdTRmMmFcdTVjM2VcdTdlYWNcdTY3MmFcdTg1MWFcdTU0NzNcdTc1NGZcdTgwYzNcdTU1ODJcdTliNGZcdTRmNGRcdTZlMmRcdThjMTNcdTVjMDlcdTYxNzBcdTUzNmJcdTc2MWZc''@;'; put 'put ''dTZlMjlcdTg2OGFcdTY1ODdcdTk1ZmJcdTdlYjlcdTU0M2JcdTdhMzNcdTdkMGFcdTk1ZWVcdTU1ZTFcdTdmYzFcdTc0ZWVcdTYzMWRcdTg3MTdcdTZkYTFcdTdhOWRcdTYyMTFcdTY1YTFcdTUzNjdcdTYzZTFcdTZjODNcdTVkZWJcdTU0NWNcdTk0YThcdTRlNGNcdTZjNjFcdThiZWNcdTVj''@;'; put 'put ''NGJcdTY1ZTBcdTgyOWNcdTY4YTdcdTU0M2VcdTU0MzRcdTZiY2JcdTZiNjZcdTRlOTRcdTYzNDJcdTUzNDhcdTgyMWVcdTRmMGRcdTRmYWVcdTU3NWVcdTYyMGFcdTk2ZmVcdTY2NjRcdTcyNjlcdTUyZmZcdTUyYTFcdTYwOWZcdThiZWZcdTY2MTRcdTcxOTlcdTY3OTBcdTg5N2ZcdTc4NTJc''@;'; put 'put ''dTc3ZmRcdTY2NzBcdTU2M2JcdTU0MzhcdTk1MjFcdTcyN2FcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwNl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA2XVtFXV09NTI3MzYrRSxMWzUyNzM2K0VdPUJbMjA2XVtFXSk7Zm9yKEJbMjA3''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4N2E1XHU4N2E2XHU4N2E3XHU4N2E5XHU4N2FhXHU4N2FlXHU4N2IwXHU4N2IxXHU4N2IyXHU4N2I0XHU4N2I2XHU4N2I3XHU4N2I4XHU4N2I5XHU4N2JiXHU4N2JjXHU4N2JlXHU4N2Jm''@;'; put 'put ''XHU4N2MxXHU4N2MyXHU4N2MzXHU4N2M0XHU4N2M1XHU4N2M3XHU4N2M4XHU4N2M5XHU4N2NjXHU4N2NkXHU4N2NlXHU4N2NmXHU4N2QwXHU4N2Q0XHU4N2Q1XHU4N2Q2XHU4N2Q3XHU4N2Q4XHU4N2Q5XHU4N2RhXHU4N2RjXHU4N2RkXHU4N2RlXHU4N2RmXHU4N2UxXHU4N2UyXHU4N2UzXHU4''@;'; put 'put ''N2U0XHU4N2U2XHU4N2U3XHU4N2U4XHU4N2U5XHU4N2ViXHU4N2VjXHU4N2VkXHU4N2VmXHU4N2YwXHU4N2YxXHU4N2YyXHU4N2YzXHU4N2Y0XHU4N2Y1XHU4N2Y2XHU4N2Y3XHU4N2Y4XHVmZmZkXHU4N2ZhXHU4N2ZiXHU4N2ZjXHU4N2ZkXHU4N2ZmXHU4ODAwXHU4ODAxXHU4ODAyXHU4ODA0''@;'; put 'put ''XHU4ODA1XHU4ODA2XHU4ODA3XHU4ODA4XHU4ODA5XHU4ODBiXHU4ODBjXHU4ODBkXHU4ODBlXHU4ODBmXHU4ODEwXHU4ODExXHU4ODEyXHU4ODE0XHU4ODE3XHU4ODE4XHU4ODE5XHU4ODFhXHU4ODFjXHU4ODFkXHU4ODFlXHU4ODFmXHU4ODIwXHU4ODIzXHU3YTAwXHU2MDZmXHU1ZTBjXHU2''@;'; put 'put ''MDg5XHU4MTlkXHU1OTE1XHU2MGRjXHU3MTg0XHU3MGVmXHU2ZWFhXHU2YzUwXHU3MjgwXHU2YTg0XHU4OGFkXHU1ZTJkXHU0ZTYwXHU1YWIzXHU1NTljXHU5NGUzXHU2ZDE3XHU3Y2ZiXHU5Njk5XHU2MjBmXHU3ZWM2XHU3NzhlXHU4NjdlXHU1MzIzXHU5NzFlXHU4Zjk2XHU2Njg3XHU1Y2Ux''@;'; put 'put ''XHU0ZmEwXHU3MmVkXHU0ZTBiXHU1M2E2XHU1OTBmXHU1NDEzXHU2MzgwXHU5NTI4XHU1MTQ4XHU0ZWQ5XHU5YzljXHU3ZWE0XHU1NGI4XHU4ZDI0XHU4ODU0XHU4MjM3XHU5NWYyXHU2ZDhlXHU1ZjI2XHU1YWNjXHU2NjNlXHU5NjY5XHU3M2IwXHU3MzJlXHU1M2JmXHU4MTdhXHU5OTg1XHU3''@;'; put 'put ''ZmExXHU1YmFhXHU5Njc3XHU5NjUwXHU3ZWJmXHU3NmY4XHU1M2EyXHU5NTc2XHU5OTk5XHU3YmIxXHU4OTQ0XHU2ZTU4XHU0ZTYxXHU3ZmQ0XHU3OTY1XHU4YmU2XHU2MGYzXHU1NGNkXHU0ZWFiXHU5ODc5XHU1ZGY3XHU2YTYxXHU1MGNmXHU1NDExXHU4YzYxXHU4NDI3XHU3ODVkXHU5NzA0''@;'; put 'put ''XHU1MjRhXHU1NGVlXHU1NmEzXHU5NTAwXHU2ZDg4XHU1YmI1XHU2ZGM2XHU2NjUzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwN11bRV1dPTUyOTkyK0UsTFs1Mjk5MitFXT1CWzIwN11b''@;'; put 'put ''RV0pO2ZvcihCWzIwOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODgyNFx1ODgyNVx1ODgyNlx1ODgyN1x1ODgyOFx1ODgyOVx1ODgyYVx1ODgyYlx1ODgyY1x1ODgyZFx1ODgyZVx1ODgyZlx1ODgzMFx1ODgzMVx1ODgzM1x1ODgz''@;'; put 'put ''NFx1ODgzNVx1ODgzNlx1ODgzN1x1ODgzOFx1ODgzYVx1ODgzYlx1ODgzZFx1ODgzZVx1ODgzZlx1ODg0MVx1ODg0Mlx1ODg0M1x1ODg0Nlx1ODg0N1x1ODg0OFx1ODg0OVx1ODg0YVx1ODg0Ylx1ODg0ZVx1ODg0Zlx1ODg1MFx1ODg1MVx1ODg1Mlx1ODg1M1x1ODg1NVx1ODg1Nlx1ODg1OFx1''@;'; put 'put ''ODg1YVx1ODg1Ylx1ODg1Y1x1ODg1ZFx1ODg1ZVx1ODg1Zlx1ODg2MFx1ODg2Nlx1ODg2N1x1ODg2YVx1ODg2ZFx1ODg2Zlx1ODg3MVx1ODg3M1x1ODg3NFx1ODg3NVx1ODg3Nlx1ODg3OFx1ODg3OVx1ODg3YVx1ZmZmZFx1ODg3Ylx1ODg3Y1x1ODg4MFx1ODg4M1x1ODg4Nlx1ODg4N1x1ODg4''@;'; put 'put ''OVx1ODg4YVx1ODg4Y1x1ODg4ZVx1ODg4Zlx1ODg5MFx1ODg5MVx1ODg5M1x1ODg5NFx1ODg5NVx1ODg5N1x1ODg5OFx1ODg5OVx1ODg5YVx1ODg5Ylx1ODg5ZFx1ODg5ZVx1ODg5Zlx1ODhhMFx1ODhhMVx1ODhhM1x1ODhhNVx1ODhhNlx1ODhhN1x1ODhhOFx1ODhhOVx1ODhhYVx1NWMwZlx1''@;'; put 'put ''NWI1ZFx1NjgyMVx1ODA5Nlx1NTU3OFx1N2IxMVx1NjU0OFx1Njk1NFx1NGU5Ylx1NmI0N1x1ODc0ZVx1OTc4Ylx1NTM0Zlx1NjMxZlx1NjQzYVx1OTBhYVx1NjU5Y1x1ODBjMVx1OGMxMFx1NTE5OVx1NjhiMFx1NTM3OFx1ODdmOVx1NjFjOFx1NmNjNFx1NmNmYlx1OGMyMlx1NWM1MVx1ODVh''@;'; put 'put ''YVx1ODJhZlx1OTUwY1x1NmIyM1x1OGY5Ylx1NjViMFx1NWZmYlx1NWZjM1x1NGZlMVx1ODg0NVx1NjYxZlx1ODE2NVx1NzMyOVx1NjBmYVx1NTE3NFx1NTIxMVx1NTc4Ylx1NWY2Mlx1OTBhMlx1ODg0Y1x1OTE5Mlx1NWU3OFx1Njc0Zlx1NjAyN1x1NTlkM1x1NTE0NFx1NTFmNlx1ODBmOFx1''@;'; put 'put ''NTMwOFx1NmM3OVx1OTZjNFx1NzE4YVx1NGYxMVx1NGZlZVx1N2Y5ZVx1NjczZFx1NTVjNVx1OTUwOFx1NzljMFx1ODg5Nlx1N2VlM1x1NTg5Zlx1NjIwY1x1OTcwMFx1ODY1YVx1NTYxOFx1OTg3Ylx1NWY5MFx1OGJiOFx1ODRjNFx1OTE1N1x1NTNkOVx1NjVlZFx1NWU4Zlx1NzU1Y1x1NjA2''@;'; put 'put ''NFx1N2Q2ZVx1NWE3Zlx1N2VlYVx1N2VlZFx1OGY2OVx1NTVhN1x1NWJhM1x1NjBhY1x1NjVjYlx1NzM4NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDhdW0VdXT01MzI0OCtFLExbNTMy''@;'; put 'put ''NDgrRV09QlsyMDhdW0VdKTtmb3IoQlsyMDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg4YWNcdTg4YWVcdTg4YWZcdTg4YjBcdTg4YjJcdTg4YjNcdTg4YjRcdTg4YjVcdTg4YjZcdTg4YjhcdTg4YjlcdTg4YmFcdTg4YmJcdTg4''@;'; put 'put ''YmRcdTg4YmVcdTg4YmZcdTg4YzBcdTg4YzNcdTg4YzRcdTg4YzdcdTg4YzhcdTg4Y2FcdTg4Y2JcdTg4Y2NcdTg4Y2RcdTg4Y2ZcdTg4ZDBcdTg4ZDFcdTg4ZDNcdTg4ZDZcdTg4ZDdcdTg4ZGFcdTg4ZGJcdTg4ZGNcdTg4ZGRcdTg4ZGVcdTg4ZTBcdTg4ZTFcdTg4ZTZcdTg4ZTdcdTg4ZTlc''@;'; put 'put ''dTg4ZWFcdTg4ZWJcdTg4ZWNcdTg4ZWRcdTg4ZWVcdTg4ZWZcdTg4ZjJcdTg4ZjVcdTg4ZjZcdTg4ZjdcdTg4ZmFcdTg4ZmJcdTg4ZmRcdTg4ZmZcdTg5MDBcdTg5MDFcdTg5MDNcdTg5MDRcdTg5MDVcdTg5MDZcdTg5MDdcdTg5MDhcdWZmZmRcdTg5MDlcdTg5MGJcdTg5MGNcdTg5MGRcdTg5''@;'; put 'put ''MGVcdTg5MGZcdTg5MTFcdTg5MTRcdTg5MTVcdTg5MTZcdTg5MTdcdTg5MThcdTg5MWNcdTg5MWRcdTg5MWVcdTg5MWZcdTg5MjBcdTg5MjJcdTg5MjNcdTg5MjRcdTg5MjZcdTg5MjdcdTg5MjhcdTg5MjlcdTg5MmNcdTg5MmRcdTg5MmVcdTg5MmZcdTg5MzFcdTg5MzJcdTg5MzNcdTg5MzVc''@;'; put 'put ''dTg5MzdcdTkwMDlcdTc2NjNcdTc3MjlcdTdlZGFcdTk3NzRcdTg1OWJcdTViNjZcdTdhNzRcdTk2ZWFcdTg4NDBcdTUyY2JcdTcxOGZcdTVmYWFcdTY1ZWNcdThiZTJcdTViZmJcdTlhNmZcdTVkZTFcdTZiODlcdTZjNWJcdThiYWRcdThiYWZcdTkwMGFcdThmYzVcdTUzOGJcdTYyYmNcdTll''@;'; put 'put ''MjZcdTllMmRcdTU0NDBcdTRlMmJcdTgyYmRcdTcyNTlcdTg2OWNcdTVkMTZcdTg4NTlcdTZkYWZcdTk2YzVcdTU0ZDFcdTRlOWFcdThiYjZcdTcxMDlcdTU0YmRcdTk2MDlcdTcwZGZcdTZkZjlcdTc2ZDBcdTRlMjVcdTc4MTRcdTg3MTJcdTVjYTlcdTVlZjZcdThhMDBcdTk4OWNcdTk2MGVc''@;'; put 'put ''dTcwOGVcdTZjYmZcdTU5NDRcdTYzYTlcdTc3M2NcdTg4NGRcdTZmMTRcdTgyNzNcdTU4MzBcdTcxZDVcdTUzOGNcdTc4MWFcdTk2YzFcdTU1MDFcdTVmNjZcdTcxMzBcdTViYjRcdThjMWFcdTlhOGNcdTZiODNcdTU5MmVcdTllMmZcdTc5ZTdcdTY3NjhcdTYyNmNcdTRmNmZcdTc1YTFcdTdm''@;'; put 'put ''OGFcdTZkMGJcdTk2MzNcdTZjMjdcdTRlZjBcdTc1ZDJcdTUxN2JcdTY4MzdcdTZmM2VcdTkwODBcdTgxNzBcdTU5OTZcdTc0NzZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA5XVtFXV09''@;'; put 'put ''NTM1MDQrRSxMWzUzNTA0K0VdPUJbMjA5XVtFXSk7Zm9yKEJbMjEwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OTM4XHU4OTM5XHU4OTNhXHU4OTNiXHU4OTNjXHU4OTNkXHU4OTNlXHU4OTNmXHU4OTQwXHU4OTQyXHU4OTQzXHU4''@;'; put 'put ''OTQ1XHU4OTQ2XHU4OTQ3XHU4OTQ4XHU4OTQ5XHU4OTRhXHU4OTRiXHU4OTRjXHU4OTRkXHU4OTRlXHU4OTRmXHU4OTUwXHU4OTUxXHU4OTUyXHU4OTUzXHU4OTU0XHU4OTU1XHU4OTU2XHU4OTU3XHU4OTU4XHU4OTU5XHU4OTVhXHU4OTViXHU4OTVjXHU4OTVkXHU4OTYwXHU4OTYxXHU4OTYy''@;'; put 'put ''XHU4OTYzXHU4OTY0XHU4OTY1XHU4OTY3XHU4OTY4XHU4OTY5XHU4OTZhXHU4OTZiXHU4OTZjXHU4OTZkXHU4OTZlXHU4OTZmXHU4OTcwXHU4OTcxXHU4OTcyXHU4OTczXHU4OTc0XHU4OTc1XHU4OTc2XHU4OTc3XHU4OTc4XHU4OTc5XHU4OTdhXHU4OTdjXHVmZmZkXHU4OTdkXHU4OTdlXHU4''@;'; put 'put ''OTgwXHU4OTgyXHU4OTg0XHU4OTg1XHU4OTg3XHU4OTg4XHU4OTg5XHU4OThhXHU4OThiXHU4OThjXHU4OThkXHU4OThlXHU4OThmXHU4OTkwXHU4OTkxXHU4OTkyXHU4OTkzXHU4OTk0XHU4OTk1XHU4OTk2XHU4OTk3XHU4OTk4XHU4OTk5XHU4OTlhXHU4OTliXHU4OTljXHU4OTlkXHU4OTll''@;'; put 'put ''XHU4OTlmXHU4OWEwXHU4OWExXHU2NDQ3XHU1YzI3XHU5MDY1XHU3YTkxXHU4YzIzXHU1OWRhXHU1NGFjXHU4MjAwXHU4MzZmXHU4OTgxXHU4MDAwXHU2OTMwXHU1NjRlXHU4MDM2XHU3MjM3XHU5MWNlXHU1MWI2XHU0ZTVmXHU5ODc1XHU2Mzk2XHU0ZTFhXHU1M2Y2XHU2NmYzXHU4MTRiXHU1''@;'; put 'put ''OTFjXHU2ZGIyXHU0ZTAwXHU1OGY5XHU1MzNiXHU2M2Q2XHU5NGYxXHU0ZjlkXHU0ZjBhXHU4ODYzXHU5ODkwXHU1OTM3XHU5MDU3XHU3OWZiXHU0ZWVhXHU4MGYwXHU3NTkxXHU2YzgyXHU1YjljXHU1OWU4XHU1ZjVkXHU2OTA1XHU4NjgxXHU1MDFhXHU1ZGYyXHU0ZTU5XHU3N2UzXHU0ZWU1''@;'; put 'put ''XHU4MjdhXHU2MjkxXHU2NjEzXHU5MDkxXHU1Yzc5XHU0ZWJmXHU1Zjc5XHU4MWM2XHU5MDM4XHU4MDg0XHU3NWFiXHU0ZWE2XHU4OGQ0XHU2MTBmXHU2YmM1XHU1ZmM2XHU0ZTQ5XHU3NmNhXHU2ZWEyXHU4YmUzXHU4YmFlXHU4YzBhXHU4YmQxXHU1ZjAyXHU3ZmZjXHU3ZmNjXHU3ZWNlXHU4''@;'; put 'put ''MzM1XHU4MzZiXHU1NmUwXHU2YmI3XHU5N2YzXHU5NjM0XHU1OWZiXHU1NDFmXHU5NGY2XHU2ZGViXHU1YmM1XHU5OTZlXHU1YzM5XHU1ZjE1XHU5NjkwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTBdW0VdLmNoYXJDb2RlQXQoMCkmJihn''@;'; put 'put ''ZVtCWzIxMF1bRV1dPTUzNzYwK0UsTFs1Mzc2MCtFXT1CWzIxMF1bRV0pO2ZvcihCWzIxMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODlhMlx1ODlhM1x1ODlhNFx1ODlhNVx1ODlhNlx1ODlhN1x1ODlhOFx1ODlhOVx1ODlhYVx1''@;'; put 'put ''ODlhYlx1ODlhY1x1ODlhZFx1ODlhZVx1ODlhZlx1ODliMFx1ODliMVx1ODliMlx1ODliM1x1ODliNFx1ODliNVx1ODliNlx1ODliN1x1ODliOFx1ODliOVx1ODliYVx1ODliYlx1ODliY1x1ODliZFx1ODliZVx1ODliZlx1ODljMFx1ODljM1x1ODljZFx1ODlkM1x1ODlkNFx1ODlkNVx1ODlk''@;'; put 'put ''N1x1ODlkOFx1ODlkOVx1ODlkYlx1ODlkZFx1ODlkZlx1ODllMFx1ODllMVx1ODllMlx1ODllNFx1ODllN1x1ODllOFx1ODllOVx1ODllYVx1ODllY1x1ODllZFx1ODllZVx1ODlmMFx1ODlmMVx1ODlmMlx1ODlmNFx1ODlmNVx1ODlmNlx1ODlmN1x1ODlmOFx1ODlmOVx1ODlmYVx1ZmZmZFx1''@;'; put 'put ''ODlmYlx1ODlmY1x1ODlmZFx1ODlmZVx1ODlmZlx1OGEwMVx1OGEwMlx1OGEwM1x1OGEwNFx1OGEwNVx1OGEwNlx1OGEwOFx1OGEwOVx1OGEwYVx1OGEwYlx1OGEwY1x1OGEwZFx1OGEwZVx1OGEwZlx1OGExMFx1OGExMVx1OGExMlx1OGExM1x1OGExNFx1OGExNVx1OGExNlx1OGExN1x1OGEx''@;'; put 'put ''OFx1OGExOVx1OGExYVx1OGExYlx1OGExY1x1OGExZFx1NTM3MFx1ODJmMVx1NmEzMVx1NWE3NFx1OWU3MFx1NWU5NFx1N2YyOFx1ODNiOVx1ODQyNFx1ODQyNVx1ODM2N1x1ODc0N1x1OGZjZVx1OGQ2Mlx1NzZjOFx1NWY3MVx1OTg5Nlx1Nzg2Y1x1NjYyMFx1NTRkZlx1NjJlNVx1NGY2M1x1''@;'; put 'put ''ODFjM1x1NzVjOFx1NWViOFx1OTZjZFx1OGUwYVx1ODZmOVx1NTQ4Zlx1NmNmM1x1NmQ4Y1x1NmMzOFx1NjA3Zlx1NTJjN1x1NzUyOFx1NWU3ZFx1NGYxOFx1NjBhMFx1NWZlN1x1NWMyNFx1NzUzMVx1OTBhZVx1OTRjMFx1NzJiOVx1NmNiOVx1NmUzOFx1OTE0OVx1NjcwOVx1NTNjYlx1NTNm''@;'; put 'put ''M1x1NGY1MVx1OTFjOVx1OGJmMVx1NTNjOFx1NWU3Y1x1OGZjMlx1NmRlNFx1NGU4ZVx1NzZjMlx1Njk4Nlx1ODY1ZVx1NjExYVx1ODIwNlx1NGY1OVx1NGZkZVx1OTAzZVx1OWM3Y1x1NjEwOVx1NmUxZFx1NmUxNFx1OTY4NVx1NGU4OFx1NWEzMVx1OTZlOFx1NGUwZVx1NWM3Zlx1NzliOVx1''@;'; put 'put ''NWI4N1x1OGJlZFx1N2ZiZFx1NzM4OVx1NTdkZlx1ODI4Ylx1OTBjMVx1NTQwMVx1OTA0N1x1NTViYlx1NWNlYVx1NWZhMVx1NjEwOFx1NmIzMlx1NzJmMVx1ODBiMlx1OGE4OVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjExXVtFXS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYoZ2VbQlsyMTFdW0VdXT01NDAxNitFLExbNTQwMTYrRV09QlsyMTFdW0VdKTtmb3IoQlsyMTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhMWVcdThhMWZcdThhMjBcdThhMjFcdThhMjJcdThhMjNcdThhMjRc''@;'; put 'put ''dThhMjVcdThhMjZcdThhMjdcdThhMjhcdThhMjlcdThhMmFcdThhMmJcdThhMmNcdThhMmRcdThhMmVcdThhMmZcdThhMzBcdThhMzFcdThhMzJcdThhMzNcdThhMzRcdThhMzVcdThhMzZcdThhMzdcdThhMzhcdThhMzlcdThhM2FcdThhM2JcdThhM2NcdThhM2RcdThhM2ZcdThhNDBcdThh''@;'; put 'put ''NDFcdThhNDJcdThhNDNcdThhNDRcdThhNDVcdThhNDZcdThhNDdcdThhNDlcdThhNGFcdThhNGJcdThhNGNcdThhNGRcdThhNGVcdThhNGZcdThhNTBcdThhNTFcdThhNTJcdThhNTNcdThhNTRcdThhNTVcdThhNTZcdThhNTdcdThhNThcdThhNTlcdThhNWFcdThhNWJcdThhNWNcdThhNWRc''@;'; put 'put ''dThhNWVcdWZmZmRcdThhNWZcdThhNjBcdThhNjFcdThhNjJcdThhNjNcdThhNjRcdThhNjVcdThhNjZcdThhNjdcdThhNjhcdThhNjlcdThhNmFcdThhNmJcdThhNmNcdThhNmRcdThhNmVcdThhNmZcdThhNzBcdThhNzFcdThhNzJcdThhNzNcdThhNzRcdThhNzVcdThhNzZcdThhNzdcdThh''@;'; put 'put ''NzhcdThhN2FcdThhN2JcdThhN2NcdThhN2RcdThhN2VcdThhN2ZcdThhODBcdTZkNzRcdTViZDNcdTg4ZDVcdTk4ODRcdThjNmJcdTlhNmRcdTllMzNcdTZlMGFcdTUxYTRcdTUxNDNcdTU3YTNcdTg4ODFcdTUzOWZcdTYzZjRcdThmOTVcdTU2ZWRcdTU0NThcdTU3MDZcdTczM2ZcdTZlOTBc''@;'; put 'put ''dTdmMThcdThmZGNcdTgyZDFcdTYxM2ZcdTYwMjhcdTk2NjJcdTY2ZjBcdTdlYTZcdThkOGFcdThkYzNcdTk0YTVcdTVjYjNcdTdjYTRcdTY3MDhcdTYwYTZcdTk2MDVcdTgwMThcdTRlOTFcdTkwZTdcdTUzMDBcdTk2NjhcdTUxNDFcdThmZDBcdTg1NzRcdTkxNWRcdTY2NTVcdTk3ZjVcdTVi''@;'; put 'put ''NTVcdTUzMWRcdTc4MzhcdTY3NDJcdTY4M2RcdTU0YzlcdTcwN2VcdTViYjBcdThmN2RcdTUxOGRcdTU3MjhcdTU0YjFcdTY1MTJcdTY2ODJcdThkNWVcdThkNDNcdTgxMGZcdTg0NmNcdTkwNmRcdTdjZGZcdTUxZmZcdTg1ZmJcdTY3YTNcdTY1ZTlcdTZmYTFcdTg2YTRcdThlODFcdTU2NmFc''@;'; put 'put ''dTkwMjBcdTc2ODJcdTcwNzZcdTcxZTVcdThkMjNcdTYyZTlcdTUyMTlcdTZjZmRcdThkM2NcdTYwMGVcdTU4OWVcdTYxOGVcdTY2ZmVcdThkNjBcdTYyNGVcdTU1YjNcdTZlMjNcdTY3MmRcdThmNjdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1C''@;'; put 'put ''WzIxMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjEyXVtFXV09NTQyNzIrRSxMWzU0MjcyK0VdPUJbMjEyXVtFXSk7Zm9yKEJbMjEzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YTgxXHU4YTgyXHU4YTgzXHU4YTg0XHU4YTg1''@;'; put 'put ''XHU4YTg2XHU4YTg3XHU4YTg4XHU4YThiXHU4YThjXHU4YThkXHU4YThlXHU4YThmXHU4YTkwXHU4YTkxXHU4YTkyXHU4YTk0XHU4YTk1XHU4YTk2XHU4YTk3XHU4YTk4XHU4YTk5XHU4YTlhXHU4YTliXHU4YTljXHU4YTlkXHU4YTllXHU4YTlmXHU4YWEwXHU4YWExXHU4YWEyXHU4YWEzXHU4''@;'; put 'put ''YWE0XHU4YWE1XHU4YWE2XHU4YWE3XHU4YWE4XHU4YWE5XHU4YWFhXHU4YWFiXHU4YWFjXHU4YWFkXHU4YWFlXHU4YWFmXHU4YWIwXHU4YWIxXHU4YWIyXHU4YWIzXHU4YWI0XHU4YWI1XHU4YWI2XHU4YWI3XHU4YWI4XHU4YWI5XHU4YWJhXHU4YWJiXHU4YWJjXHU4YWJkXHU4YWJlXHU4YWJm''@;'; put 'put ''XHU4YWMwXHU4YWMxXHU4YWMyXHVmZmZkXHU4YWMzXHU4YWM0XHU4YWM1XHU4YWM2XHU4YWM3XHU4YWM4XHU4YWM5XHU4YWNhXHU4YWNiXHU4YWNjXHU4YWNkXHU4YWNlXHU4YWNmXHU4YWQwXHU4YWQxXHU4YWQyXHU4YWQzXHU4YWQ0XHU4YWQ1XHU4YWQ2XHU4YWQ3XHU4YWQ4XHU4YWQ5XHU4''@;'; put 'put ''YWRhXHU4YWRiXHU4YWRjXHU4YWRkXHU4YWRlXHU4YWRmXHU4YWUwXHU4YWUxXHU4YWUyXHU4YWUzXHU5NGUxXHU5NWY4XHU3NzI4XHU2ODA1XHU2OWE4XHU1NDhiXHU0ZTRkXHU3MGI4XHU4YmM4XHU2NDU4XHU2NThiXHU1Yjg1XHU3YTg0XHU1MDNhXHU1YmU4XHU3N2JiXHU2YmUxXHU4YTc5''@;'; put 'put ''XHU3Yzk4XHU2Y2JlXHU3NmNmXHU2NWE5XHU4Zjk3XHU1ZDJkXHU1YzU1XHU4NjM4XHU2ODA4XHU1MzYwXHU2MjE4XHU3YWQ5XHU2ZTViXHU3ZWZkXHU2YTFmXHU3YWUwXHU1ZjcwXHU2ZjMzXHU1ZjIwXHU2MzhjXHU2ZGE4XHU2NzU2XHU0ZTA4XHU1ZTEwXHU4ZDI2XHU0ZWQ3XHU4MGMwXHU3''@;'; put 'put ''NjM0XHU5NjljXHU2MmRiXHU2NjJkXHU2MjdlXHU2Y2JjXHU4ZDc1XHU3MTY3XHU3ZjY5XHU1MTQ2XHU4MDg3XHU1M2VjXHU5MDZlXHU2Mjk4XHU1NGYyXHU4NmYwXHU4Zjk5XHU4MDA1XHU5NTE3XHU4NTE3XHU4ZmQ5XHU2ZDU5XHU3M2NkXHU2NTlmXHU3NzFmXHU3NTA0XHU3ODI3XHU4MWZi''@;'; put 'put ''XHU4ZDFlXHU5NDg4XHU0ZmE2XHU2Nzk1XHU3NWI5XHU4YmNhXHU5NzA3XHU2MzJmXHU5NTQ3XHU5NjM1XHU4NGI4XHU2MzIzXHU3NzQxXHU1ZjgxXHU3MmYwXHU0ZTg5XHU2MDE0XHU2NTc0XHU2MmVmXHU2YjYzXHU2NTNmXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEzXS5sZW5ndGg7''@;'; put 'put ''KytFKTY1NTMzIT09QlsyMTNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxM11bRV1dPTU0NTI4K0UsTFs1NDUyOCtFXT1CWzIxM11bRV0pO2ZvcihCWzIxNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFlNFx1OGFlNVx1OGFl''@;'; put 'put ''Nlx1OGFlN1x1OGFlOFx1OGFlOVx1OGFlYVx1OGFlYlx1OGFlY1x1OGFlZFx1OGFlZVx1OGFlZlx1OGFmMFx1OGFmMVx1OGFmMlx1OGFmM1x1OGFmNFx1OGFmNVx1OGFmNlx1OGFmN1x1OGFmOFx1OGFmOVx1OGFmYVx1OGFmYlx1OGFmY1x1OGFmZFx1OGFmZVx1OGFmZlx1OGIwMFx1OGIwMVx1''@;'; put 'put ''OGIwMlx1OGIwM1x1OGIwNFx1OGIwNVx1OGIwNlx1OGIwOFx1OGIwOVx1OGIwYVx1OGIwYlx1OGIwY1x1OGIwZFx1OGIwZVx1OGIwZlx1OGIxMFx1OGIxMVx1OGIxMlx1OGIxM1x1OGIxNFx1OGIxNVx1OGIxNlx1OGIxN1x1OGIxOFx1OGIxOVx1OGIxYVx1OGIxYlx1OGIxY1x1OGIxZFx1OGIx''@;'; put 'put ''ZVx1OGIxZlx1OGIyMFx1OGIyMVx1OGIyMlx1OGIyM1x1ZmZmZFx1OGIyNFx1OGIyNVx1OGIyN1x1OGIyOFx1OGIyOVx1OGIyYVx1OGIyYlx1OGIyY1x1OGIyZFx1OGIyZVx1OGIyZlx1OGIzMFx1OGIzMVx1OGIzMlx1OGIzM1x1OGIzNFx1OGIzNVx1OGIzNlx1OGIzN1x1OGIzOFx1OGIzOVx1''@;'; put 'put ''OGIzYVx1OGIzYlx1OGIzY1x1OGIzZFx1OGIzZVx1OGIzZlx1OGI0MFx1OGI0MVx1OGI0Mlx1OGI0M1x1OGI0NFx1OGI0NVx1NWUyN1x1NzVjN1x1OTBkMVx1OGJjMVx1ODI5ZFx1Njc5ZFx1NjUyZlx1NTQzMVx1ODcxOFx1NzdlNVx1ODBhMlx1ODEwMlx1NmM0MVx1NGU0Ylx1N2VjN1x1ODA0''@;'; put 'put ''Y1x1NzZmNFx1NjkwZFx1NmI5Nlx1NjI2N1x1NTAzY1x1NGY4NFx1NTc0MFx1NjMwN1x1NmI2Mlx1OGRiZVx1NTNlYVx1NjVlOFx1N2ViOFx1NWZkN1x1NjMxYVx1NjNiN1x1ODFmM1x1ODFmNFx1N2Y2ZVx1NWUxY1x1NWNkOVx1NTIzNlx1NjY3YVx1NzllOVx1N2ExYVx1OGQyOFx1NzA5OVx1''@;'; put 'put ''NzVkNFx1NmVkZVx1NmNiYlx1N2E5Mlx1NGUyZFx1NzZjNVx1NWZlMFx1OTQ5Zlx1ODg3N1x1N2VjOFx1NzljZFx1ODBiZlx1OTFjZFx1NGVmMlx1NGYxN1x1ODIxZlx1NTQ2OFx1NWRkZVx1NmQzMlx1OGJjY1x1N2NhNVx1OGY3NFx1ODA5OFx1NWUxYVx1NTQ5Mlx1NzZiMVx1NWI5OVx1NjYz''@;'; put 'put ''Y1x1OWFhNFx1NzNlMFx1NjgyYVx1ODZkYlx1NjczMVx1NzMyYVx1OGJmOFx1OGJkYlx1OTAxMFx1N2FmOVx1NzBkYlx1NzE2ZVx1NjJjNFx1NzdhOVx1NTYzMVx1NGUzYlx1ODQ1N1x1NjdmMVx1NTJhOVx1ODZjMFx1OGQyZVx1OTRmOFx1N2I1MVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1C''@;'; put 'put ''WzIxNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTRdW0VdXT01NDc4NCtFLExbNTQ3ODQrRV09QlsyMTRdW0VdKTtmb3IoQlsyMTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThi''@;'; put 'put ''NDZcdThiNDdcdThiNDhcdThiNDlcdThiNGFcdThiNGJcdThiNGNcdThiNGRcdThiNGVcdThiNGZcdThiNTBcdThiNTFcdThiNTJcdThiNTNcdThiNTRcdThiNTVcdThiNTZcdThiNTdcdThiNThcdThiNTlcdThiNWFcdThiNWJcdThiNWNcdThiNWRcdThiNWVcdThiNWZcdThiNjBcdThiNjFc''@;'; put 'put ''dThiNjJcdThiNjNcdThiNjRcdThiNjVcdThiNjdcdThiNjhcdThiNjlcdThiNmFcdThiNmJcdThiNmRcdThiNmVcdThiNmZcdThiNzBcdThiNzFcdThiNzJcdThiNzNcdThiNzRcdThiNzVcdThiNzZcdThiNzdcdThiNzhcdThiNzlcdThiN2FcdThiN2JcdThiN2NcdThiN2RcdThiN2VcdThi''@;'; put 'put ''N2ZcdThiODBcdThiODFcdThiODJcdThiODNcdThiODRcdThiODVcdThiODZcdWZmZmRcdThiODdcdThiODhcdThiODlcdThiOGFcdThiOGJcdThiOGNcdThiOGRcdThiOGVcdThiOGZcdThiOTBcdThiOTFcdThiOTJcdThiOTNcdThiOTRcdThiOTVcdThiOTZcdThiOTdcdThiOThcdThiOTlc''@;'; put 'put ''dThiOWFcdThiOWJcdThiOWNcdThiOWRcdThiOWVcdThiOWZcdThiYWNcdThiYjFcdThiYmJcdThiYzdcdThiZDBcdThiZWFcdThjMDlcdThjMWVcdTRmNGZcdTZjZThcdTc5NWRcdTlhN2JcdTYyOTNcdTcyMmFcdTYyZmRcdTRlMTNcdTc4MTZcdThmNmNcdTY0YjBcdThkNWFcdTdiYzZcdTY4''@;'; put 'put ''NjlcdTVlODRcdTg4YzVcdTU5ODZcdTY0OWVcdTU4ZWVcdTcyYjZcdTY5MGVcdTk1MjVcdThmZmRcdThkNThcdTU3NjBcdTdmMDBcdThjMDZcdTUxYzZcdTYzNDlcdTYyZDlcdTUzNTNcdTY4NGNcdTc0MjJcdTgzMDFcdTkxNGNcdTU1NDRcdTc3NDBcdTcwN2NcdTZkNGFcdTUxNzlcdTU0YThc''@;'; put 'put ''dThkNDRcdTU5ZmZcdTZlY2JcdTZkYzRcdTViNWNcdTdkMmJcdTRlZDRcdTdjN2RcdTZlZDNcdTViNTBcdTgxZWFcdTZlMGRcdTViNTdcdTliMDNcdTY4ZDVcdThlMmFcdTViOTdcdTdlZmNcdTYwM2JcdTdlYjVcdTkwYjlcdThkNzBcdTU5NGZcdTYzY2RcdTc5ZGZcdThkYjNcdTUzNTJcdTY1''@;'; put 'put ''Y2ZcdTc5NTZcdThiYzVcdTk2M2JcdTdlYzRcdTk0YmJcdTdlODJcdTU2MzRcdTkxODlcdTY3MDBcdTdmNmFcdTVjMGFcdTkwNzVcdTY2MjhcdTVkZTZcdTRmNTBcdTY3ZGVcdTUwNWFcdTRmNWNcdTU3NTBcdTVlYTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSxFPTA7RSE9QlsyMTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxNV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE1XVtFXV09NTUwNDArRSxMWzU1MDQwK0VdPUJbMjE1XVtFXSk7Zm9yKEJbMjE2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU4YzM4XHU4YzM5XHU4YzNhXHU4YzNiXHU4YzNjXHU4YzNkXHU4YzNlXHU4YzNmXHU4YzQwXHU4YzQyXHU4YzQzXHU4YzQ0XHU4YzQ1XHU4YzQ4XHU4YzRhXHU4YzRiXHU4YzRkXHU4YzRlXHU4YzRmXHU4YzUwXHU4YzUxXHU4YzUyXHU4YzUzXHU4YzU0XHU4YzU2XHU4YzU3''@;'; put 'put ''XHU4YzU4XHU4YzU5XHU4YzViXHU4YzVjXHU4YzVkXHU4YzVlXHU4YzVmXHU4YzYwXHU4YzYzXHU4YzY0XHU4YzY1XHU4YzY2XHU4YzY3XHU4YzY4XHU4YzY5XHU4YzZjXHU4YzZkXHU4YzZlXHU4YzZmXHU4YzcwXHU4YzcxXHU4YzcyXHU4Yzc0XHU4Yzc1XHU4Yzc2XHU4Yzc3XHU4YzdiXHU4''@;'; put 'put ''YzdjXHU4YzdkXHU4YzdlXHU4YzdmXHU4YzgwXHU4YzgxXHU4YzgzXHU4Yzg0XHU4Yzg2XHU4Yzg3XHVmZmZkXHU4Yzg4XHU4YzhiXHU4YzhkXHU4YzhlXHU4YzhmXHU4YzkwXHU4YzkxXHU4YzkyXHU4YzkzXHU4Yzk1XHU4Yzk2XHU4Yzk3XHU4Yzk5XHU4YzlhXHU4YzliXHU4YzljXHU4Yzlk''@;'; put 'put ''XHU4YzllXHU4YzlmXHU4Y2EwXHU4Y2ExXHU4Y2EyXHU4Y2EzXHU4Y2E0XHU4Y2E1XHU4Y2E2XHU4Y2E3XHU4Y2E4XHU4Y2E5XHU4Y2FhXHU4Y2FiXHU4Y2FjXHU4Y2FkXHU0ZThkXHU0ZTBjXHU1MTQwXHU0ZTEwXHU1ZWZmXHU1MzQ1XHU0ZTE1XHU0ZTk4XHU0ZTFlXHU5YjMyXHU1YjZjXHU1''@;'; put 'put ''NjY5XHU0ZTI4XHU3OWJhXHU0ZTNmXHU1MzE1XHU0ZTQ3XHU1OTJkXHU3MjNiXHU1MzZlXHU2YzEwXHU1NmRmXHU4MGU0XHU5OTk3XHU2YmQzXHU3NzdlXHU5ZjE3XHU0ZTM2XHU0ZTlmXHU5ZjEwXHU0ZTVjXHU0ZTY5XHU0ZTkzXHU4Mjg4XHU1YjViXHU1NTZjXHU1NjBmXHU0ZWM0XHU1Mzhk''@;'; put 'put ''XHU1MzlkXHU1M2EzXHU1M2E1XHU1M2FlXHU5NzY1XHU4ZDVkXHU1MzFhXHU1M2Y1XHU1MzI2XHU1MzJlXHU1MzNlXHU4ZDVjXHU1MzY2XHU1MzYzXHU1MjAyXHU1MjA4XHU1MjBlXHU1MjJkXHU1MjMzXHU1MjNmXHU1MjQwXHU1MjRjXHU1MjVlXHU1MjYxXHU1MjVjXHU4NGFmXHU1MjdkXHU1''@;'; put 'put ''MjgyXHU1MjgxXHU1MjkwXHU1MjkzXHU1MTgyXHU3ZjU0XHU0ZWJiXHU0ZWMzXHU0ZWM5XHU0ZWMyXHU0ZWU4XHU0ZWUxXHU0ZWViXHU0ZWRlXHU0ZjFiXHU0ZWYzXHU0ZjIyXHU0ZjY0XHU0ZWY1XHU0ZjI1XHU0ZjI3XHU0ZjA5XHU0ZjJiXHU0ZjVlXHU0ZjY3XHU2NTM4XHU0ZjVhXHU0ZjVk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxNl1bRV1dPTU1Mjk2K0UsTFs1NTI5NitFXT1CWzIxNl1bRV0pO2ZvcihCWzIxN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGNhZVx1OGNhZlx1OGNiMFx1OGNiMVx1OGNiMlx1OGNiM1x1OGNiNFx1OGNiNVx1OGNiNlx1OGNiN1x1OGNiOFx1OGNiOVx1OGNiYVx1OGNiYlx1OGNiY1x1OGNiZFx1OGNiZVx1OGNiZlx1OGNjMFx1OGNjMVx1OGNjMlx1OGNjM1x1OGNjNFx1OGNj''@;'; put 'put ''NVx1OGNjNlx1OGNjN1x1OGNjOFx1OGNjOVx1OGNjYVx1OGNjYlx1OGNjY1x1OGNjZFx1OGNjZVx1OGNjZlx1OGNkMFx1OGNkMVx1OGNkMlx1OGNkM1x1OGNkNFx1OGNkNVx1OGNkNlx1OGNkN1x1OGNkOFx1OGNkOVx1OGNkYVx1OGNkYlx1OGNkY1x1OGNkZFx1OGNkZVx1OGNkZlx1OGNlMFx1''@;'; put 'put ''OGNlMVx1OGNlMlx1OGNlM1x1OGNlNFx1OGNlNVx1OGNlNlx1OGNlN1x1OGNlOFx1OGNlOVx1OGNlYVx1OGNlYlx1OGNlY1x1ZmZmZFx1OGNlZFx1OGNlZVx1OGNlZlx1OGNmMFx1OGNmMVx1OGNmMlx1OGNmM1x1OGNmNFx1OGNmNVx1OGNmNlx1OGNmN1x1OGNmOFx1OGNmOVx1OGNmYVx1OGNm''@;'; put 'put ''Ylx1OGNmY1x1OGNmZFx1OGNmZVx1OGNmZlx1OGQwMFx1OGQwMVx1OGQwMlx1OGQwM1x1OGQwNFx1OGQwNVx1OGQwNlx1OGQwN1x1OGQwOFx1OGQwOVx1OGQwYVx1OGQwYlx1OGQwY1x1OGQwZFx1NGY1Zlx1NGY1N1x1NGYzMlx1NGYzZFx1NGY3Nlx1NGY3NFx1NGY5MVx1NGY4OVx1NGY4M1x1''@;'; put 'put ''NGY4Zlx1NGY3ZVx1NGY3Ylx1NGZhYVx1NGY3Y1x1NGZhY1x1NGY5NFx1NGZlNlx1NGZlOFx1NGZlYVx1NGZjNVx1NGZkYVx1NGZlM1x1NGZkY1x1NGZkMVx1NGZkZlx1NGZmOFx1NTAyOVx1NTA0Y1x1NGZmM1x1NTAyY1x1NTAwZlx1NTAyZVx1NTAyZFx1NGZmZVx1NTAxY1x1NTAwY1x1NTAy''@;'; put 'put ''NVx1NTAyOFx1NTA3ZVx1NTA0M1x1NTA1NVx1NTA0OFx1NTA0ZVx1NTA2Y1x1NTA3Ylx1NTBhNVx1NTBhN1x1NTBhOVx1NTBiYVx1NTBkNlx1NTEwNlx1NTBlZFx1NTBlY1x1NTBlNlx1NTBlZVx1NTEwN1x1NTEwYlx1NGVkZFx1NmMzZFx1NGY1OFx1NGY2NVx1NGZjZVx1OWZhMFx1NmM0Nlx1''@;'; put 'put ''N2M3NFx1NTE2ZVx1NWRmZFx1OWVjOVx1OTk5OFx1NTE4MVx1NTkxNFx1NTJmOVx1NTMwZFx1OGEwN1x1NTMxMFx1NTFlYlx1NTkxOVx1NTE1NVx1NGVhMFx1NTE1Nlx1NGViM1x1ODg2ZVx1ODhhNFx1NGViNVx1ODExNFx1ODhkMlx1Nzk4MFx1NWIzNFx1ODgwM1x1N2ZiOFx1NTFhYlx1NTFi''@;'; put 'put ''MVx1NTFiZFx1NTFiY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTddW0VdXT01NTU1MitFLExbNTU1NTIrRV09QlsyMTddW0VdKTtmb3IoQlsyMThdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMGVcdThkMGZcdThkMTBcdThkMTFcdThkMTJcdThkMTNcdThkMTRcdThkMTVcdThkMTZcdThkMTdcdThkMThcdThkMTlcdThkMWFcdThkMWJcdThkMWNcdThkMjBcdThkNTFcdThkNTJcdThkNTdcdThkNWZcdThkNjVcdThk''@;'; put 'put ''NjhcdThkNjlcdThkNmFcdThkNmNcdThkNmVcdThkNmZcdThkNzFcdThkNzJcdThkNzhcdThkNzlcdThkN2FcdThkN2JcdThkN2NcdThkN2RcdThkN2VcdThkN2ZcdThkODBcdThkODJcdThkODNcdThkODZcdThkODdcdThkODhcdThkODlcdThkOGNcdThkOGRcdThkOGVcdThkOGZcdThkOTBc''@;'; put 'put ''dThkOTJcdThkOTNcdThkOTVcdThkOTZcdThkOTdcdThkOThcdThkOTlcdThkOWFcdThkOWJcdThkOWNcdThkOWRcdThkOWVcdThkYTBcdThkYTFcdWZmZmRcdThkYTJcdThkYTRcdThkYTVcdThkYTZcdThkYTdcdThkYThcdThkYTlcdThkYWFcdThkYWJcdThkYWNcdThkYWRcdThkYWVcdThk''@;'; put 'put ''YWZcdThkYjBcdThkYjJcdThkYjZcdThkYjdcdThkYjlcdThkYmJcdThkYmRcdThkYzBcdThkYzFcdThkYzJcdThkYzVcdThkYzdcdThkYzhcdThkYzlcdThkY2FcdThkY2RcdThkZDBcdThkZDJcdThkZDNcdThkZDRcdTUxYzdcdTUxOTZcdTUxYTJcdTUxYTVcdThiYTBcdThiYTZcdThiYTdc''@;'; put 'put ''dThiYWFcdThiYjRcdThiYjVcdThiYjdcdThiYzJcdThiYzNcdThiY2JcdThiY2ZcdThiY2VcdThiZDJcdThiZDNcdThiZDRcdThiZDZcdThiZDhcdThiZDlcdThiZGNcdThiZGZcdThiZTBcdThiZTRcdThiZThcdThiZTlcdThiZWVcdThiZjBcdThiZjNcdThiZjZcdThiZjlcdThiZmNcdThi''@;'; put 'put ''ZmZcdThjMDBcdThjMDJcdThjMDRcdThjMDdcdThjMGNcdThjMGZcdThjMTFcdThjMTJcdThjMTRcdThjMTVcdThjMTZcdThjMTlcdThjMWJcdThjMThcdThjMWRcdThjMWZcdThjMjBcdThjMjFcdThjMjVcdThjMjdcdThjMmFcdThjMmJcdThjMmVcdThjMmZcdThjMzJcdThjMzNcdThjMzVc''@;'; put 'put ''dThjMzZcdTUzNjlcdTUzN2FcdTk2MWRcdTk2MjJcdTk2MjFcdTk2MzFcdTk2MmFcdTk2M2RcdTk2M2NcdTk2NDJcdTk2NDlcdTk2NTRcdTk2NWZcdTk2NjdcdTk2NmNcdTk2NzJcdTk2NzRcdTk2ODhcdTk2OGRcdTk2OTdcdTk2YjBcdTkwOTdcdTkwOWJcdTkwOWRcdTkwOTlcdTkwYWNcdTkw''@;'; put 'put ''YTFcdTkwYjRcdTkwYjNcdTkwYjZcdTkwYmFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMThdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxOF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE4XVtFXV09NTU4MDgrRSxMWzU1ODA4K0VdPUJbMjE4XVtFXSk7Zm9yKEJbMjE5XT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZGQ1XHU4ZGQ4XHU4ZGQ5XHU4ZGRjXHU4ZGUwXHU4ZGUxXHU4ZGUyXHU4ZGU1XHU4ZGU2XHU4ZGU3XHU4ZGU5XHU4ZGVkXHU4ZGVlXHU4ZGYwXHU4ZGYxXHU4ZGYyXHU4ZGY0XHU4ZGY2XHU4ZGZjXHU4''@;'; put 'put ''ZGZlXHU4ZGZmXHU4ZTAwXHU4ZTAxXHU4ZTAyXHU4ZTAzXHU4ZTA0XHU4ZTA2XHU4ZTA3XHU4ZTA4XHU4ZTBiXHU4ZTBkXHU4ZTBlXHU4ZTEwXHU4ZTExXHU4ZTEyXHU4ZTEzXHU4ZTE1XHU4ZTE2XHU4ZTE3XHU4ZTE4XHU4ZTE5XHU4ZTFhXHU4ZTFiXHU4ZTFjXHU4ZTIwXHU4ZTIxXHU4ZTI0''@;'; put 'put ''XHU4ZTI1XHU4ZTI2XHU4ZTI3XHU4ZTI4XHU4ZTJiXHU4ZTJkXHU4ZTMwXHU4ZTMyXHU4ZTMzXHU4ZTM0XHU4ZTM2XHU4ZTM3XHU4ZTM4XHU4ZTNiXHU4ZTNjXHU4ZTNlXHVmZmZkXHU4ZTNmXHU4ZTQzXHU4ZTQ1XHU4ZTQ2XHU4ZTRjXHU4ZTRkXHU4ZTRlXHU4ZTRmXHU4ZTUwXHU4ZTUzXHU4''@;'; put 'put ''ZTU0XHU4ZTU1XHU4ZTU2XHU4ZTU3XHU4ZTU4XHU4ZTVhXHU4ZTViXHU4ZTVjXHU4ZTVkXHU4ZTVlXHU4ZTVmXHU4ZTYwXHU4ZTYxXHU4ZTYyXHU4ZTYzXHU4ZTY0XHU4ZTY1XHU4ZTY3XHU4ZTY4XHU4ZTZhXHU4ZTZiXHU4ZTZlXHU4ZTcxXHU5MGI4XHU5MGIwXHU5MGNmXHU5MGM1XHU5MGJl''@;'; put 'put ''XHU5MGQwXHU5MGM0XHU5MGM3XHU5MGQzXHU5MGU2XHU5MGUyXHU5MGRjXHU5MGQ3XHU5MGRiXHU5MGViXHU5MGVmXHU5MGZlXHU5MTA0XHU5MTIyXHU5MTFlXHU5MTIzXHU5MTMxXHU5MTJmXHU5MTM5XHU5MTQzXHU5MTQ2XHU1MjBkXHU1OTQyXHU1MmEyXHU1MmFjXHU1MmFkXHU1MmJlXHU1''@;'; put 'put ''NGZmXHU1MmQwXHU1MmQ2XHU1MmYwXHU1M2RmXHU3MWVlXHU3N2NkXHU1ZWY0XHU1MWY1XHU1MWZjXHU5YjJmXHU1M2I2XHU1ZjAxXHU3NTVhXHU1ZGVmXHU1NzRjXHU1N2E5XHU1N2ExXHU1ODdlXHU1OGJjXHU1OGM1XHU1OGQxXHU1NzI5XHU1NzJjXHU1NzJhXHU1NzMzXHU1NzM5XHU1NzJl''@;'; put 'put ''XHU1NzJmXHU1NzVjXHU1NzNiXHU1NzQyXHU1NzY5XHU1Nzg1XHU1NzZiXHU1Nzg2XHU1NzdjXHU1NzdiXHU1NzY4XHU1NzZkXHU1Nzc2XHU1NzczXHU1N2FkXHU1N2E0XHU1NzhjXHU1N2IyXHU1N2NmXHU1N2E3XHU1N2I0XHU1NzkzXHU1N2EwXHU1N2Q1XHU1N2Q4XHU1N2RhXHU1N2Q5XHU1''@;'; put 'put ''N2QyXHU1N2I4XHU1N2Y0XHU1N2VmXHU1N2Y4XHU1N2U0XHU1N2RkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxOV1bRV1dPTU2MDY0K0UsTFs1NjA2NCtFXT1CWzIxOV1bRV0pO2ZvcihC''@;'; put 'put ''WzIyMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGU3M1x1OGU3NVx1OGU3N1x1OGU3OFx1OGU3OVx1OGU3YVx1OGU3Ylx1OGU3ZFx1OGU3ZVx1OGU4MFx1OGU4Mlx1OGU4M1x1OGU4NFx1OGU4Nlx1OGU4OFx1OGU4OVx1OGU4YVx1''@;'; put 'put ''OGU4Ylx1OGU4Y1x1OGU4ZFx1OGU4ZVx1OGU5MVx1OGU5Mlx1OGU5M1x1OGU5NVx1OGU5Nlx1OGU5N1x1OGU5OFx1OGU5OVx1OGU5YVx1OGU5Ylx1OGU5ZFx1OGU5Zlx1OGVhMFx1OGVhMVx1OGVhMlx1OGVhM1x1OGVhNFx1OGVhNVx1OGVhNlx1OGVhN1x1OGVhOFx1OGVhOVx1OGVhYVx1OGVh''@;'; put 'put ''ZFx1OGVhZVx1OGViMFx1OGViMVx1OGViM1x1OGViNFx1OGViNVx1OGViNlx1OGViN1x1OGViOFx1OGViOVx1OGViYlx1OGViY1x1OGViZFx1OGViZVx1OGViZlx1OGVjMFx1OGVjMVx1OGVjMlx1ZmZmZFx1OGVjM1x1OGVjNFx1OGVjNVx1OGVjNlx1OGVjN1x1OGVjOFx1OGVjOVx1OGVjYVx1''@;'; put 'put ''OGVjYlx1OGVjY1x1OGVjZFx1OGVjZlx1OGVkMFx1OGVkMVx1OGVkMlx1OGVkM1x1OGVkNFx1OGVkNVx1OGVkNlx1OGVkN1x1OGVkOFx1OGVkOVx1OGVkYVx1OGVkYlx1OGVkY1x1OGVkZFx1OGVkZVx1OGVkZlx1OGVlMFx1OGVlMVx1OGVlMlx1OGVlM1x1OGVlNFx1NTgwYlx1NTgwZFx1NTdm''@;'; put 'put ''ZFx1NTdlZFx1NTgwMFx1NTgxZVx1NTgxOVx1NTg0NFx1NTgyMFx1NTg2NVx1NTg2Y1x1NTg4MVx1NTg4OVx1NTg5YVx1NTg4MFx1OTlhOFx1OWYxOVx1NjFmZlx1ODI3OVx1ODI3ZFx1ODI3Zlx1ODI4Zlx1ODI4YVx1ODJhOFx1ODI4NFx1ODI4ZVx1ODI5MVx1ODI5N1x1ODI5OVx1ODJhYlx1''@;'; put 'put ''ODJiOFx1ODJiZVx1ODJiMFx1ODJjOFx1ODJjYVx1ODJlM1x1ODI5OFx1ODJiN1x1ODJhZVx1ODJjYlx1ODJjY1x1ODJjMVx1ODJhOVx1ODJiNFx1ODJhMVx1ODJhYVx1ODI5Zlx1ODJjNFx1ODJjZVx1ODJhNFx1ODJlMVx1ODMwOVx1ODJmN1x1ODJlNFx1ODMwZlx1ODMwN1x1ODJkY1x1ODJm''@;'; put 'put ''NFx1ODJkMlx1ODJkOFx1ODMwY1x1ODJmYlx1ODJkM1x1ODMxMVx1ODMxYVx1ODMwNlx1ODMxNFx1ODMxNVx1ODJlMFx1ODJkNVx1ODMxY1x1ODM1MVx1ODM1Ylx1ODM1Y1x1ODMwOFx1ODM5Mlx1ODMzY1x1ODMzNFx1ODMzMVx1ODM5Ylx1ODM1ZVx1ODMyZlx1ODM0Zlx1ODM0N1x1ODM0M1x1''@;'; put 'put ''ODM1Zlx1ODM0MFx1ODMxN1x1ODM2MFx1ODMyZFx1ODMzYVx1ODMzM1x1ODM2Nlx1ODM2NVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjBdW0VdXT01NjMyMCtFLExbNTYzMjArRV09Qlsy''@;'; put 'put ''MjBdW0VdKTtmb3IoQlsyMjFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlZTVcdThlZTZcdThlZTdcdThlZThcdThlZTlcdThlZWFcdThlZWJcdThlZWNcdThlZWRcdThlZWVcdThlZWZcdThlZjBcdThlZjFcdThlZjJcdThlZjNc''@;'; put 'put ''dThlZjRcdThlZjVcdThlZjZcdThlZjdcdThlZjhcdThlZjlcdThlZmFcdThlZmJcdThlZmNcdThlZmRcdThlZmVcdThlZmZcdThmMDBcdThmMDFcdThmMDJcdThmMDNcdThmMDRcdThmMDVcdThmMDZcdThmMDdcdThmMDhcdThmMDlcdThmMGFcdThmMGJcdThmMGNcdThmMGRcdThmMGVcdThm''@;'; put 'put ''MGZcdThmMTBcdThmMTFcdThmMTJcdThmMTNcdThmMTRcdThmMTVcdThmMTZcdThmMTdcdThmMThcdThmMTlcdThmMWFcdThmMWJcdThmMWNcdThmMWRcdThmMWVcdThmMWZcdThmMjBcdThmMjFcdThmMjJcdThmMjNcdWZmZmRcdThmMjRcdThmMjVcdThmMjZcdThmMjdcdThmMjhcdThmMjlc''@;'; put 'put ''dThmMmFcdThmMmJcdThmMmNcdThmMmRcdThmMmVcdThmMmZcdThmMzBcdThmMzFcdThmMzJcdThmMzNcdThmMzRcdThmMzVcdThmMzZcdThmMzdcdThmMzhcdThmMzlcdThmM2FcdThmM2JcdThmM2NcdThmM2RcdThmM2VcdThmM2ZcdThmNDBcdThmNDFcdThmNDJcdThmNDNcdThmNDRcdTgz''@;'; put 'put ''NjhcdTgzMWJcdTgzNjlcdTgzNmNcdTgzNmFcdTgzNmRcdTgzNmVcdTgzYjBcdTgzNzhcdTgzYjNcdTgzYjRcdTgzYTBcdTgzYWFcdTgzOTNcdTgzOWNcdTgzODVcdTgzN2NcdTgzYjZcdTgzYTlcdTgzN2RcdTgzYjhcdTgzN2JcdTgzOThcdTgzOWVcdTgzYThcdTgzYmFcdTgzYmNcdTgzYzFc''@;'; put 'put ''dTg0MDFcdTgzZTVcdTgzZDhcdTU4MDdcdTg0MThcdTg0MGJcdTgzZGRcdTgzZmRcdTgzZDZcdTg0MWNcdTg0MzhcdTg0MTFcdTg0MDZcdTgzZDRcdTgzZGZcdTg0MGZcdTg0MDNcdTgzZjhcdTgzZjlcdTgzZWFcdTgzYzVcdTgzYzBcdTg0MjZcdTgzZjBcdTgzZTFcdTg0NWNcdTg0NTFcdTg0''@;'; put 'put ''NWFcdTg0NTlcdTg0NzNcdTg0ODdcdTg0ODhcdTg0N2FcdTg0ODlcdTg0NzhcdTg0M2NcdTg0NDZcdTg0NjlcdTg0NzZcdTg0OGNcdTg0OGVcdTg0MzFcdTg0NmRcdTg0YzFcdTg0Y2RcdTg0ZDBcdTg0ZTZcdTg0YmRcdTg0ZDNcdTg0Y2FcdTg0YmZcdTg0YmFcdTg0ZTBcdTg0YTFcdTg0Yjlc''@;'; put 'put ''dTg0YjRcdTg0OTdcdTg0ZTVcdTg0ZTNcdTg1MGNcdTc1MGRcdTg1MzhcdTg0ZjBcdTg1MzlcdTg1MWZcdTg1M2FcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjIxXVtFXV09NTY1NzYrRSxM''@;'; put 'put ''WzU2NTc2K0VdPUJbMjIxXVtFXSk7Zm9yKEJbMjIyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZjQ1XHU4ZjQ2XHU4ZjQ3XHU4ZjQ4XHU4ZjQ5XHU4ZjRhXHU4ZjRiXHU4ZjRjXHU4ZjRkXHU4ZjRlXHU4ZjRmXHU4ZjUwXHU4ZjUx''@;'; put 'put ''XHU4ZjUyXHU4ZjUzXHU4ZjU0XHU4ZjU1XHU4ZjU2XHU4ZjU3XHU4ZjU4XHU4ZjU5XHU4ZjVhXHU4ZjViXHU4ZjVjXHU4ZjVkXHU4ZjVlXHU4ZjVmXHU4ZjYwXHU4ZjYxXHU4ZjYyXHU4ZjYzXHU4ZjY0XHU4ZjY1XHU4ZjZhXHU4ZjgwXHU4ZjhjXHU4ZjkyXHU4ZjlkXHU4ZmEwXHU4ZmExXHU4''@;'; put 'put ''ZmEyXHU4ZmE0XHU4ZmE1XHU4ZmE2XHU4ZmE3XHU4ZmFhXHU4ZmFjXHU4ZmFkXHU4ZmFlXHU4ZmFmXHU4ZmIyXHU4ZmIzXHU4ZmI0XHU4ZmI1XHU4ZmI3XHU4ZmI4XHU4ZmJhXHU4ZmJiXHU4ZmJjXHU4ZmJmXHU4ZmMwXHU4ZmMzXHU4ZmM2XHVmZmZkXHU4ZmM5XHU4ZmNhXHU4ZmNiXHU4ZmNj''@;'; put 'put ''XHU4ZmNkXHU4ZmNmXHU4ZmQyXHU4ZmQ2XHU4ZmQ3XHU4ZmRhXHU4ZmUwXHU4ZmUxXHU4ZmUzXHU4ZmU3XHU4ZmVjXHU4ZmVmXHU4ZmYxXHU4ZmYyXHU4ZmY0XHU4ZmY1XHU4ZmY2XHU4ZmZhXHU4ZmZiXHU4ZmZjXHU4ZmZlXHU4ZmZmXHU5MDA3XHU5MDA4XHU5MDBjXHU5MDBlXHU5MDEzXHU5''@;'; put 'put ''MDE1XHU5MDE4XHU4NTU2XHU4NTNiXHU4NGZmXHU4NGZjXHU4NTU5XHU4NTQ4XHU4NTY4XHU4NTY0XHU4NTVlXHU4NTdhXHU3N2EyXHU4NTQzXHU4NTcyXHU4NTdiXHU4NWE0XHU4NWE4XHU4NTg3XHU4NThmXHU4NTc5XHU4NWFlXHU4NTljXHU4NTg1XHU4NWI5XHU4NWI3XHU4NWIwXHU4NWQz''@;'; put 'put ''XHU4NWMxXHU4NWRjXHU4NWZmXHU4NjI3XHU4NjA1XHU4NjI5XHU4NjE2XHU4NjNjXHU1ZWZlXHU1ZjA4XHU1OTNjXHU1OTQxXHU4MDM3XHU1OTU1XHU1OTVhXHU1OTU4XHU1MzBmXHU1YzIyXHU1YzI1XHU1YzJjXHU1YzM0XHU2MjRjXHU2MjZhXHU2MjlmXHU2MmJiXHU2MmNhXHU2MmRhXHU2''@;'; put 'put ''MmQ3XHU2MmVlXHU2MzIyXHU2MmY2XHU2MzM5XHU2MzRiXHU2MzQzXHU2M2FkXHU2M2Y2XHU2MzcxXHU2MzdhXHU2MzhlXHU2M2I0XHU2MzZkXHU2M2FjXHU2MzhhXHU2MzY5XHU2M2FlXHU2M2JjXHU2M2YyXHU2M2Y4XHU2M2UwXHU2M2ZmXHU2M2M0XHU2M2RlXHU2M2NlXHU2NDUyXHU2M2M2''@;'; put 'put ''XHU2M2JlXHU2NDQ1XHU2NDQxXHU2NDBiXHU2NDFiXHU2NDIwXHU2NDBjXHU2NDI2XHU2NDIxXHU2NDVlXHU2NDg0XHU2NDZkXHU2NDk2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyMl1b''@;'; put 'put ''RV1dPTU2ODMyK0UsTFs1NjgzMitFXT1CWzIyMl1bRV0pO2ZvcihCWzIyM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTAxOVx1OTAxY1x1OTAyM1x1OTAyNFx1OTAyNVx1OTAyN1x1OTAyOFx1OTAyOVx1OTAyYVx1OTAyYlx1OTAy''@;'; put 'put ''Y1x1OTAzMFx1OTAzMVx1OTAzMlx1OTAzM1x1OTAzNFx1OTAzN1x1OTAzOVx1OTAzYVx1OTAzZFx1OTAzZlx1OTA0MFx1OTA0M1x1OTA0NVx1OTA0Nlx1OTA0OFx1OTA0OVx1OTA0YVx1OTA0Ylx1OTA0Y1x1OTA0ZVx1OTA1NFx1OTA1NVx1OTA1Nlx1OTA1OVx1OTA1YVx1OTA1Y1x1OTA1ZFx1''@;'; put 'put ''OTA1ZVx1OTA1Zlx1OTA2MFx1OTA2MVx1OTA2NFx1OTA2Nlx1OTA2N1x1OTA2OVx1OTA2YVx1OTA2Ylx1OTA2Y1x1OTA2Zlx1OTA3MFx1OTA3MVx1OTA3Mlx1OTA3M1x1OTA3Nlx1OTA3N1x1OTA3OFx1OTA3OVx1OTA3YVx1OTA3Ylx1OTA3Y1x1OTA3ZVx1OTA4MVx1ZmZmZFx1OTA4NFx1OTA4''@;'; put 'put ''NVx1OTA4Nlx1OTA4N1x1OTA4OVx1OTA4YVx1OTA4Y1x1OTA4ZFx1OTA4ZVx1OTA4Zlx1OTA5MFx1OTA5Mlx1OTA5NFx1OTA5Nlx1OTA5OFx1OTA5YVx1OTA5Y1x1OTA5ZVx1OTA5Zlx1OTBhMFx1OTBhNFx1OTBhNVx1OTBhN1x1OTBhOFx1OTBhOVx1OTBhYlx1OTBhZFx1OTBiMlx1OTBiN1x1''@;'; put 'put ''OTBiY1x1OTBiZFx1OTBiZlx1OTBjMFx1NjQ3YVx1NjRiN1x1NjRiOFx1NjQ5OVx1NjRiYVx1NjRjMFx1NjRkMFx1NjRkN1x1NjRlNFx1NjRlMlx1NjUwOVx1NjUyNVx1NjUyZVx1NWYwYlx1NWZkMlx1NzUxOVx1NWYxMVx1NTM1Zlx1NTNmMVx1NTNmZFx1NTNlOVx1NTNlOFx1NTNmYlx1NTQx''@;'; put 'put ''Mlx1NTQxNlx1NTQwNlx1NTQ0Ylx1NTQ1Mlx1NTQ1M1x1NTQ1NFx1NTQ1Nlx1NTQ0M1x1NTQyMVx1NTQ1N1x1NTQ1OVx1NTQyM1x1NTQzMlx1NTQ4Mlx1NTQ5NFx1NTQ3N1x1NTQ3MVx1NTQ2NFx1NTQ5YVx1NTQ5Ylx1NTQ4NFx1NTQ3Nlx1NTQ2Nlx1NTQ5ZFx1NTRkMFx1NTRhZFx1NTRjMlx1''@;'; put 'put ''NTRiNFx1NTRkMlx1NTRhN1x1NTRhNlx1NTRkM1x1NTRkNFx1NTQ3Mlx1NTRhM1x1NTRkNVx1NTRiYlx1NTRiZlx1NTRjY1x1NTRkOVx1NTRkYVx1NTRkY1x1NTRhOVx1NTRhYVx1NTRhNFx1NTRkZFx1NTRjZlx1NTRkZVx1NTUxYlx1NTRlN1x1NTUyMFx1NTRmZFx1NTUxNFx1NTRmM1x1NTUy''@;'; put 'put ''Mlx1NTUyM1x1NTUwZlx1NTUxMVx1NTUyN1x1NTUyYVx1NTU2N1x1NTU4Zlx1NTViNVx1NTU0OVx1NTU2ZFx1NTU0MVx1NTU1NVx1NTUzZlx1NTU1MFx1NTUzY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIzXVtFXS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoZ2VbQlsyMjNdW0VdXT01NzA4OCtFLExbNTcwODgrRV09QlsyMjNdW0VdKTtmb3IoQlsyMjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwYzJcdTkwYzNcdTkwYzZcdTkwYzhcdTkwYzlcdTkwY2JcdTkwY2NcdTkwY2RcdTkw''@;'; put 'put ''ZDJcdTkwZDRcdTkwZDVcdTkwZDZcdTkwZDhcdTkwZDlcdTkwZGFcdTkwZGVcdTkwZGZcdTkwZTBcdTkwZTNcdTkwZTRcdTkwZTVcdTkwZTlcdTkwZWFcdTkwZWNcdTkwZWVcdTkwZjBcdTkwZjFcdTkwZjJcdTkwZjNcdTkwZjVcdTkwZjZcdTkwZjdcdTkwZjlcdTkwZmFcdTkwZmJcdTkwZmNc''@;'; put 'put ''dTkwZmZcdTkxMDBcdTkxMDFcdTkxMDNcdTkxMDVcdTkxMDZcdTkxMDdcdTkxMDhcdTkxMDlcdTkxMGFcdTkxMGJcdTkxMGNcdTkxMGRcdTkxMGVcdTkxMGZcdTkxMTBcdTkxMTFcdTkxMTJcdTkxMTNcdTkxMTRcdTkxMTVcdTkxMTZcdTkxMTdcdTkxMThcdTkxMWFcdTkxMWJcdTkxMWNcdWZm''@;'; put 'put ''ZmRcdTkxMWRcdTkxMWZcdTkxMjBcdTkxMjFcdTkxMjRcdTkxMjVcdTkxMjZcdTkxMjdcdTkxMjhcdTkxMjlcdTkxMmFcdTkxMmJcdTkxMmNcdTkxMmRcdTkxMmVcdTkxMzBcdTkxMzJcdTkxMzNcdTkxMzRcdTkxMzVcdTkxMzZcdTkxMzdcdTkxMzhcdTkxM2FcdTkxM2JcdTkxM2NcdTkxM2Rc''@;'; put 'put ''dTkxM2VcdTkxM2ZcdTkxNDBcdTkxNDFcdTkxNDJcdTkxNDRcdTU1MzdcdTU1NTZcdTU1NzVcdTU1NzZcdTU1NzdcdTU1MzNcdTU1MzBcdTU1NWNcdTU1OGJcdTU1ZDJcdTU1ODNcdTU1YjFcdTU1YjlcdTU1ODhcdTU1ODFcdTU1OWZcdTU1N2VcdTU1ZDZcdTU1OTFcdTU1N2JcdTU1ZGZcdTU1''@;'; put 'put ''YmRcdTU1YmVcdTU1OTRcdTU1OTlcdTU1ZWFcdTU1ZjdcdTU1YzlcdTU2MWZcdTU1ZDFcdTU1ZWJcdTU1ZWNcdTU1ZDRcdTU1ZTZcdTU1ZGRcdTU1YzRcdTU1ZWZcdTU1ZTVcdTU1ZjJcdTU1ZjNcdTU1Y2NcdTU1Y2RcdTU1ZThcdTU1ZjVcdTU1ZTRcdThmOTRcdTU2MWVcdTU2MDhcdTU2MGNc''@;'; put 'put ''dTU2MDFcdTU2MjRcdTU2MjNcdTU1ZmVcdTU2MDBcdTU2MjdcdTU2MmRcdTU2NThcdTU2MzlcdTU2NTdcdTU2MmNcdTU2NGRcdTU2NjJcdTU2NTlcdTU2NWNcdTU2NGNcdTU2NTRcdTU2ODZcdTU2NjRcdTU2NzFcdTU2NmJcdTU2N2JcdTU2N2NcdTU2ODVcdTU2OTNcdTU2YWZcdTU2ZDRcdTU2''@;'; put 'put ''ZDdcdTU2ZGRcdTU2ZTFcdTU2ZjVcdTU2ZWJcdTU2ZjlcdTU2ZmZcdTU3MDRcdTU3MGFcdTU3MDlcdTU3MWNcdTVlMGZcdTVlMTlcdTVlMTRcdTVlMTFcdTVlMzFcdTVlM2JcdTVlM2NcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNF1bRV0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKGdlW0JbMjI0XVtFXV09NTczNDQrRSxMWzU3MzQ0K0VdPUJbMjI0XVtFXSk7Zm9yKEJbMjI1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MTQ1XHU5MTQ3XHU5MTQ4XHU5MTUxXHU5MTUzXHU5MTU0XHU5''@;'; put 'put ''MTU1XHU5MTU2XHU5MTU4XHU5MTU5XHU5MTViXHU5MTVjXHU5MTVmXHU5MTYwXHU5MTY2XHU5MTY3XHU5MTY4XHU5MTZiXHU5MTZkXHU5MTczXHU5MTdhXHU5MTdiXHU5MTdjXHU5MTgwXHU5MTgxXHU5MTgyXHU5MTgzXHU5MTg0XHU5MTg2XHU5MTg4XHU5MThhXHU5MThlXHU5MThmXHU5MTkz''@;'; put 'put ''XHU5MTk0XHU5MTk1XHU5MTk2XHU5MTk3XHU5MTk4XHU5MTk5XHU5MTljXHU5MTlkXHU5MTllXHU5MTlmXHU5MWEwXHU5MWExXHU5MWE0XHU5MWE1XHU5MWE2XHU5MWE3XHU5MWE4XHU5MWE5XHU5MWFiXHU5MWFjXHU5MWIwXHU5MWIxXHU5MWIyXHU5MWIzXHU5MWI2XHU5MWI3XHU5MWI4XHU5''@;'; put 'put ''MWI5XHU5MWJiXHVmZmZkXHU5MWJjXHU5MWJkXHU5MWJlXHU5MWJmXHU5MWMwXHU5MWMxXHU5MWMyXHU5MWMzXHU5MWM0XHU5MWM1XHU5MWM2XHU5MWM4XHU5MWNiXHU5MWQwXHU5MWQyXHU5MWQzXHU5MWQ0XHU5MWQ1XHU5MWQ2XHU5MWQ3XHU5MWQ4XHU5MWQ5XHU5MWRhXHU5MWRiXHU5MWRk''@;'; put 'put ''XHU5MWRlXHU5MWRmXHU5MWUwXHU5MWUxXHU5MWUyXHU5MWUzXHU5MWU0XHU5MWU1XHU1ZTM3XHU1ZTQ0XHU1ZTU0XHU1ZTViXHU1ZTVlXHU1ZTYxXHU1YzhjXHU1YzdhXHU1YzhkXHU1YzkwXHU1Yzk2XHU1Yzg4XHU1Yzk4XHU1Yzk5XHU1YzkxXHU1YzlhXHU1YzljXHU1Y2I1XHU1Y2EyXHU1''@;'; put 'put ''Y2JkXHU1Y2FjXHU1Y2FiXHU1Y2IxXHU1Y2EzXHU1Y2MxXHU1Y2I3XHU1Y2M0XHU1Y2QyXHU1Y2U0XHU1Y2NiXHU1Y2U1XHU1ZDAyXHU1ZDAzXHU1ZDI3XHU1ZDI2XHU1ZDJlXHU1ZDI0XHU1ZDFlXHU1ZDA2XHU1ZDFiXHU1ZDU4XHU1ZDNlXHU1ZDM0XHU1ZDNkXHU1ZDZjXHU1ZDViXHU1ZDZm''@;'; put 'put ''XHU1ZDVkXHU1ZDZiXHU1ZDRiXHU1ZDRhXHU1ZDY5XHU1ZDc0XHU1ZDgyXHU1ZDk5XHU1ZDlkXHU4YzczXHU1ZGI3XHU1ZGM1XHU1ZjczXHU1Zjc3XHU1ZjgyXHU1Zjg3XHU1Zjg5XHU1ZjhjXHU1Zjk1XHU1Zjk5XHU1ZjljXHU1ZmE4XHU1ZmFkXHU1ZmI1XHU1ZmJjXHU4ODYyXHU1ZjYxXHU3''@;'; put 'put ''MmFkXHU3MmIwXHU3MmI0XHU3MmI3XHU3MmI4XHU3MmMzXHU3MmMxXHU3MmNlXHU3MmNkXHU3MmQyXHU3MmU4XHU3MmVmXHU3MmU5XHU3MmYyXHU3MmY0XHU3MmY3XHU3MzAxXHU3MmYzXHU3MzAzXHU3MmZhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI1XS5sZW5ndGg7KytFKTY1NTMz''@;'; put 'put ''IT09QlsyMjVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyNV1bRV1dPTU3NjAwK0UsTFs1NzYwMCtFXT1CWzIyNV1bRV0pO2ZvcihCWzIyNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTFlNlx1OTFlN1x1OTFlOFx1OTFlOVx1''@;'; put 'put ''OTFlYVx1OTFlYlx1OTFlY1x1OTFlZFx1OTFlZVx1OTFlZlx1OTFmMFx1OTFmMVx1OTFmMlx1OTFmM1x1OTFmNFx1OTFmNVx1OTFmNlx1OTFmN1x1OTFmOFx1OTFmOVx1OTFmYVx1OTFmYlx1OTFmY1x1OTFmZFx1OTFmZVx1OTFmZlx1OTIwMFx1OTIwMVx1OTIwMlx1OTIwM1x1OTIwNFx1OTIw''@;'; put 'put ''NVx1OTIwNlx1OTIwN1x1OTIwOFx1OTIwOVx1OTIwYVx1OTIwYlx1OTIwY1x1OTIwZFx1OTIwZVx1OTIwZlx1OTIxMFx1OTIxMVx1OTIxMlx1OTIxM1x1OTIxNFx1OTIxNVx1OTIxNlx1OTIxN1x1OTIxOFx1OTIxOVx1OTIxYVx1OTIxYlx1OTIxY1x1OTIxZFx1OTIxZVx1OTIxZlx1OTIyMFx1''@;'; put 'put ''OTIyMVx1OTIyMlx1OTIyM1x1OTIyNFx1ZmZmZFx1OTIyNVx1OTIyNlx1OTIyN1x1OTIyOFx1OTIyOVx1OTIyYVx1OTIyYlx1OTIyY1x1OTIyZFx1OTIyZVx1OTIyZlx1OTIzMFx1OTIzMVx1OTIzMlx1OTIzM1x1OTIzNFx1OTIzNVx1OTIzNlx1OTIzN1x1OTIzOFx1OTIzOVx1OTIzYVx1OTIz''@;'; put 'put ''Ylx1OTIzY1x1OTIzZFx1OTIzZVx1OTIzZlx1OTI0MFx1OTI0MVx1OTI0Mlx1OTI0M1x1OTI0NFx1OTI0NVx1NzJmYlx1NzMxN1x1NzMxM1x1NzMyMVx1NzMwYVx1NzMxZVx1NzMxZFx1NzMxNVx1NzMyMlx1NzMzOVx1NzMyNVx1NzMyY1x1NzMzOFx1NzMzMVx1NzM1MFx1NzM0ZFx1NzM1N1x1''@;'; put 'put ''NzM2MFx1NzM2Y1x1NzM2Zlx1NzM3ZVx1ODIxYlx1NTkyNVx1OThlN1x1NTkyNFx1NTkwMlx1OTk2M1x1OTk2N1x1OTk2OFx1OTk2OVx1OTk2YVx1OTk2Ylx1OTk2Y1x1OTk3NFx1OTk3N1x1OTk3ZFx1OTk4MFx1OTk4NFx1OTk4N1x1OTk4YVx1OTk4ZFx1OTk5MFx1OTk5MVx1OTk5M1x1OTk5''@;'; put 'put ''NFx1OTk5NVx1NWU4MFx1NWU5MVx1NWU4Ylx1NWU5Nlx1NWVhNVx1NWVhMFx1NWViOVx1NWViNVx1NWViZVx1NWViM1x1OGQ1M1x1NWVkMlx1NWVkMVx1NWVkYlx1NWVlOFx1NWVlYVx1ODFiYVx1NWZjNFx1NWZjOVx1NWZkNlx1NWZjZlx1NjAwM1x1NWZlZVx1NjAwNFx1NWZlMVx1NWZlNFx1''@;'; put 'put ''NWZmZVx1NjAwNVx1NjAwNlx1NWZlYVx1NWZlZFx1NWZmOFx1NjAxOVx1NjAzNVx1NjAyNlx1NjAxYlx1NjAwZlx1NjAwZFx1NjAyOVx1NjAyYlx1NjAwYVx1NjAzZlx1NjAyMVx1NjA3OFx1NjA3OVx1NjA3Ylx1NjA3YVx1NjA0Mlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNl0ubGVu''@;'; put 'put ''Z3RoOysrRSk2NTUzMyE9PUJbMjI2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjZdW0VdXT01Nzg1NitFLExbNTc4NTYrRV09QlsyMjZdW0VdKTtmb3IoQlsyMjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkyNDZcdTkyNDdc''@;'; put 'put ''dTkyNDhcdTkyNDlcdTkyNGFcdTkyNGJcdTkyNGNcdTkyNGRcdTkyNGVcdTkyNGZcdTkyNTBcdTkyNTFcdTkyNTJcdTkyNTNcdTkyNTRcdTkyNTVcdTkyNTZcdTkyNTdcdTkyNThcdTkyNTlcdTkyNWFcdTkyNWJcdTkyNWNcdTkyNWRcdTkyNWVcdTkyNWZcdTkyNjBcdTkyNjFcdTkyNjJcdTky''@;'; put 'put ''NjNcdTkyNjRcdTkyNjVcdTkyNjZcdTkyNjdcdTkyNjhcdTkyNjlcdTkyNmFcdTkyNmJcdTkyNmNcdTkyNmRcdTkyNmVcdTkyNmZcdTkyNzBcdTkyNzFcdTkyNzJcdTkyNzNcdTkyNzVcdTkyNzZcdTkyNzdcdTkyNzhcdTkyNzlcdTkyN2FcdTkyN2JcdTkyN2NcdTkyN2RcdTkyN2VcdTkyN2Zc''@;'; put 'put ''dTkyODBcdTkyODFcdTkyODJcdTkyODNcdTkyODRcdTkyODVcdWZmZmRcdTkyODZcdTkyODdcdTkyODhcdTkyODlcdTkyOGFcdTkyOGJcdTkyOGNcdTkyOGRcdTkyOGZcdTkyOTBcdTkyOTFcdTkyOTJcdTkyOTNcdTkyOTRcdTkyOTVcdTkyOTZcdTkyOTdcdTkyOThcdTkyOTlcdTkyOWFcdTky''@;'; put 'put ''OWJcdTkyOWNcdTkyOWRcdTkyOWVcdTkyOWZcdTkyYTBcdTkyYTFcdTkyYTJcdTkyYTNcdTkyYTRcdTkyYTVcdTkyYTZcdTkyYTdcdTYwNmFcdTYwN2RcdTYwOTZcdTYwOWFcdTYwYWRcdTYwOWRcdTYwODNcdTYwOTJcdTYwOGNcdTYwOWJcdTYwZWNcdTYwYmJcdTYwYjFcdTYwZGRcdTYwZDhc''@;'; put 'put ''dTYwYzZcdTYwZGFcdTYwYjRcdTYxMjBcdTYxMjZcdTYxMTVcdTYxMjNcdTYwZjRcdTYxMDBcdTYxMGVcdTYxMmJcdTYxNGFcdTYxNzVcdTYxYWNcdTYxOTRcdTYxYTdcdTYxYjdcdTYxZDRcdTYxZjVcdTVmZGRcdTk2YjNcdTk1ZTlcdTk1ZWJcdTk1ZjFcdTk1ZjNcdTk1ZjVcdTk1ZjZcdTk1''@;'; put 'put ''ZmNcdTk1ZmVcdTk2MDNcdTk2MDRcdTk2MDZcdTk2MDhcdTk2MGFcdTk2MGJcdTk2MGNcdTk2MGRcdTk2MGZcdTk2MTJcdTk2MTVcdTk2MTZcdTk2MTdcdTk2MTlcdTk2MWFcdTRlMmNcdTcyM2ZcdTYyMTVcdTZjMzVcdTZjNTRcdTZjNWNcdTZjNGFcdTZjYTNcdTZjODVcdTZjOTBcdTZjOTRc''@;'; put 'put ''dTZjOGNcdTZjNjhcdTZjNjlcdTZjNzRcdTZjNzZcdTZjODZcdTZjYTlcdTZjZDBcdTZjZDRcdTZjYWRcdTZjZjdcdTZjZjhcdTZjZjFcdTZjZDdcdTZjYjJcdTZjZTBcdTZjZDZcdTZjZmFcdTZjZWJcdTZjZWVcdTZjYjFcdTZjZDNcdTZjZWZcdTZjZmVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7''@;'; put 'put ''RSE9QlsyMjddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyN11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI3XVtFXV09NTgxMTIrRSxMWzU4MTEyK0VdPUJbMjI3XVtFXSk7Zm9yKEJbMjI4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU5MmE4XHU5MmE5XHU5MmFhXHU5MmFiXHU5MmFjXHU5MmFkXHU5MmFmXHU5MmIwXHU5MmIxXHU5MmIyXHU5MmIzXHU5MmI0XHU5MmI1XHU5MmI2XHU5MmI3XHU5MmI4XHU5MmI5XHU5MmJhXHU5MmJiXHU5MmJjXHU5MmJkXHU5MmJlXHU5MmJmXHU5MmMwXHU5MmMxXHU5MmMyXHU5MmMzXHU5''@;'; put 'put ''MmM0XHU5MmM1XHU5MmM2XHU5MmM3XHU5MmM5XHU5MmNhXHU5MmNiXHU5MmNjXHU5MmNkXHU5MmNlXHU5MmNmXHU5MmQwXHU5MmQxXHU5MmQyXHU5MmQzXHU5MmQ0XHU5MmQ1XHU5MmQ2XHU5MmQ3XHU5MmQ4XHU5MmQ5XHU5MmRhXHU5MmRiXHU5MmRjXHU5MmRkXHU5MmRlXHU5MmRmXHU5MmUw''@;'; put 'put ''XHU5MmUxXHU5MmUyXHU5MmUzXHU5MmU0XHU5MmU1XHU5MmU2XHU5MmU3XHU5MmU4XHVmZmZkXHU5MmU5XHU5MmVhXHU5MmViXHU5MmVjXHU5MmVkXHU5MmVlXHU5MmVmXHU5MmYwXHU5MmYxXHU5MmYyXHU5MmYzXHU5MmY0XHU5MmY1XHU5MmY2XHU5MmY3XHU5MmY4XHU5MmY5XHU5MmZhXHU5''@;'; put 'put ''MmZiXHU5MmZjXHU5MmZkXHU5MmZlXHU5MmZmXHU5MzAwXHU5MzAxXHU5MzAyXHU5MzAzXHU5MzA0XHU5MzA1XHU5MzA2XHU5MzA3XHU5MzA4XHU5MzA5XHU2ZDM5XHU2ZDI3XHU2ZDBjXHU2ZDQzXHU2ZDQ4XHU2ZDA3XHU2ZDA0XHU2ZDE5XHU2ZDBlXHU2ZDJiXHU2ZDRkXHU2ZDJlXHU2ZDM1''@;'; put 'put ''XHU2ZDFhXHU2ZDRmXHU2ZDUyXHU2ZDU0XHU2ZDMzXHU2ZDkxXHU2ZDZmXHU2ZDllXHU2ZGEwXHU2ZDVlXHU2ZDkzXHU2ZDk0XHU2ZDVjXHU2ZDYwXHU2ZDdjXHU2ZDYzXHU2ZTFhXHU2ZGM3XHU2ZGM1XHU2ZGRlXHU2ZTBlXHU2ZGJmXHU2ZGUwXHU2ZTExXHU2ZGU2XHU2ZGRkXHU2ZGQ5XHU2''@;'; put 'put ''ZTE2XHU2ZGFiXHU2ZTBjXHU2ZGFlXHU2ZTJiXHU2ZTZlXHU2ZTRlXHU2ZTZiXHU2ZWIyXHU2ZTVmXHU2ZTg2XHU2ZTUzXHU2ZTU0XHU2ZTMyXHU2ZTI1XHU2ZTQ0XHU2ZWRmXHU2ZWIxXHU2ZTk4XHU2ZWUwXHU2ZjJkXHU2ZWUyXHU2ZWE1XHU2ZWE3XHU2ZWJkXHU2ZWJiXHU2ZWI3XHU2ZWQ3''@;'; put 'put ''XHU2ZWI0XHU2ZWNmXHU2ZThmXHU2ZWMyXHU2ZTlmXHU2ZjYyXHU2ZjQ2XHU2ZjQ3XHU2ZjI0XHU2ZjE1XHU2ZWY5XHU2ZjJmXHU2ZjM2XHU2ZjRiXHU2Zjc0XHU2ZjJhXHU2ZjA5XHU2ZjI5XHU2Zjg5XHU2ZjhkXHU2ZjhjXHU2Zjc4XHU2ZjcyXHU2ZjdjXHU2ZjdhXHU2ZmQxXHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksRT0wO0UhPUJbMjI4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyOF1bRV1dPTU4MzY4K0UsTFs1ODM2OCtFXT1CWzIyOF1bRV0pO2ZvcihCWzIyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1OTMwYVx1OTMwYlx1OTMwY1x1OTMwZFx1OTMwZVx1OTMwZlx1OTMxMFx1OTMxMVx1OTMxMlx1OTMxM1x1OTMxNFx1OTMxNVx1OTMxNlx1OTMxN1x1OTMxOFx1OTMxOVx1OTMxYVx1OTMxYlx1OTMxY1x1OTMxZFx1OTMxZVx1OTMxZlx1OTMyMFx1OTMyMVx1OTMyMlx1''@;'; put 'put ''OTMyM1x1OTMyNFx1OTMyNVx1OTMyNlx1OTMyN1x1OTMyOFx1OTMyOVx1OTMyYVx1OTMyYlx1OTMyY1x1OTMyZFx1OTMyZVx1OTMyZlx1OTMzMFx1OTMzMVx1OTMzMlx1OTMzM1x1OTMzNFx1OTMzNVx1OTMzNlx1OTMzN1x1OTMzOFx1OTMzOVx1OTMzYVx1OTMzYlx1OTMzY1x1OTMzZFx1OTMz''@;'; put 'put ''Zlx1OTM0MFx1OTM0MVx1OTM0Mlx1OTM0M1x1OTM0NFx1OTM0NVx1OTM0Nlx1OTM0N1x1OTM0OFx1OTM0OVx1ZmZmZFx1OTM0YVx1OTM0Ylx1OTM0Y1x1OTM0ZFx1OTM0ZVx1OTM0Zlx1OTM1MFx1OTM1MVx1OTM1Mlx1OTM1M1x1OTM1NFx1OTM1NVx1OTM1Nlx1OTM1N1x1OTM1OFx1OTM1OVx1''@;'; put 'put ''OTM1YVx1OTM1Ylx1OTM1Y1x1OTM1ZFx1OTM1ZVx1OTM1Zlx1OTM2MFx1OTM2MVx1OTM2Mlx1OTM2M1x1OTM2NFx1OTM2NVx1OTM2Nlx1OTM2N1x1OTM2OFx1OTM2OVx1OTM2Ylx1NmZjOVx1NmZhN1x1NmZiOVx1NmZiNlx1NmZjMlx1NmZlMVx1NmZlZVx1NmZkZVx1NmZlMFx1NmZlZlx1NzAx''@;'; put 'put ''YVx1NzAyM1x1NzAxYlx1NzAzOVx1NzAzNVx1NzA0Zlx1NzA1ZVx1NWI4MFx1NWI4NFx1NWI5NVx1NWI5M1x1NWJhNVx1NWJiOFx1NzUyZlx1OWE5ZVx1NjQzNFx1NWJlNFx1NWJlZVx1ODkzMFx1NWJmMFx1OGU0N1x1OGIwN1x1OGZiNlx1OGZkM1x1OGZkNVx1OGZlNVx1OGZlZVx1OGZlNFx1''@;'; put 'put ''OGZlOVx1OGZlNlx1OGZmM1x1OGZlOFx1OTAwNVx1OTAwNFx1OTAwYlx1OTAyNlx1OTAxMVx1OTAwZFx1OTAxNlx1OTAyMVx1OTAzNVx1OTAzNlx1OTAyZFx1OTAyZlx1OTA0NFx1OTA1MVx1OTA1Mlx1OTA1MFx1OTA2OFx1OTA1OFx1OTA2Mlx1OTA1Ylx1NjZiOVx1OTA3NFx1OTA3ZFx1OTA4''@;'; put 'put ''Mlx1OTA4OFx1OTA4M1x1OTA4Ylx1NWY1MFx1NWY1N1x1NWY1Nlx1NWY1OFx1NWMzYlx1NTRhYlx1NWM1MFx1NWM1OVx1NWI3MVx1NWM2M1x1NWM2Nlx1N2ZiY1x1NWYyYVx1NWYyOVx1NWYyZFx1ODI3NFx1NWYzY1x1OWIzYlx1NWM2ZVx1NTk4MVx1NTk4M1x1NTk4ZFx1NTlhOVx1NTlhYVx1''@;'; put 'put ''NTlhM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjldW0VdXT01ODYyNCtFLExbNTg2MjQrRV09QlsyMjldW0VdKTtmb3IoQlsyMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzNmNcdTkzNmRcdTkzNmVcdTkzNmZcdTkzNzBcdTkzNzFcdTkzNzJcdTkzNzNcdTkzNzRcdTkzNzVcdTkzNzZcdTkzNzdcdTkzNzhcdTkzNzlcdTkzN2FcdTkzN2JcdTkzN2NcdTkzN2RcdTkzN2VcdTkzN2ZcdTkzODBcdTkzODFcdTkzODJc''@;'; put 'put ''dTkzODNcdTkzODRcdTkzODVcdTkzODZcdTkzODdcdTkzODhcdTkzODlcdTkzOGFcdTkzOGJcdTkzOGNcdTkzOGRcdTkzOGVcdTkzOTBcdTkzOTFcdTkzOTJcdTkzOTNcdTkzOTRcdTkzOTVcdTkzOTZcdTkzOTdcdTkzOThcdTkzOTlcdTkzOWFcdTkzOWJcdTkzOWNcdTkzOWRcdTkzOWVcdTkz''@;'; put 'put ''OWZcdTkzYTBcdTkzYTFcdTkzYTJcdTkzYTNcdTkzYTRcdTkzYTVcdTkzYTZcdTkzYTdcdTkzYThcdTkzYTlcdTkzYWFcdTkzYWJcdWZmZmRcdTkzYWNcdTkzYWRcdTkzYWVcdTkzYWZcdTkzYjBcdTkzYjFcdTkzYjJcdTkzYjNcdTkzYjRcdTkzYjVcdTkzYjZcdTkzYjdcdTkzYjhcdTkzYjlc''@;'; put 'put ''dTkzYmFcdTkzYmJcdTkzYmNcdTkzYmRcdTkzYmVcdTkzYmZcdTkzYzBcdTkzYzFcdTkzYzJcdTkzYzNcdTkzYzRcdTkzYzVcdTkzYzZcdTkzYzdcdTkzYzhcdTkzYzlcdTkzY2JcdTkzY2NcdTkzY2RcdTU5OTdcdTU5Y2FcdTU5YWJcdTU5OWVcdTU5YTRcdTU5ZDJcdTU5YjJcdTU5YWZcdTU5''@;'; put 'put ''ZDdcdTU5YmVcdTVhMDVcdTVhMDZcdTU5ZGRcdTVhMDhcdTU5ZTNcdTU5ZDhcdTU5ZjlcdTVhMGNcdTVhMDlcdTVhMzJcdTVhMzRcdTVhMTFcdTVhMjNcdTVhMTNcdTVhNDBcdTVhNjdcdTVhNGFcdTVhNTVcdTVhM2NcdTVhNjJcdTVhNzVcdTgwZWNcdTVhYWFcdTVhOWJcdTVhNzdcdTVhN2Fc''@;'; put 'put ''dTVhYmVcdTVhZWJcdTVhYjJcdTVhZDJcdTVhZDRcdTVhYjhcdTVhZTBcdTVhZTNcdTVhZjFcdTVhZDZcdTVhZTZcdTVhZDhcdTVhZGNcdTViMDlcdTViMTdcdTViMTZcdTViMzJcdTViMzdcdTViNDBcdTVjMTVcdTVjMWNcdTViNWFcdTViNjVcdTViNzNcdTViNTFcdTViNTNcdTViNjJcdTlh''@;'; put 'put ''NzVcdTlhNzdcdTlhNzhcdTlhN2FcdTlhN2ZcdTlhN2RcdTlhODBcdTlhODFcdTlhODVcdTlhODhcdTlhOGFcdTlhOTBcdTlhOTJcdTlhOTNcdTlhOTZcdTlhOThcdTlhOWJcdTlhOWNcdTlhOWRcdTlhOWZcdTlhYTBcdTlhYTJcdTlhYTNcdTlhYTVcdTlhYTdcdTdlOWZcdTdlYTFcdTdlYTNc''@;'; put 'put ''dTdlYTVcdTdlYThcdTdlYTlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMwXVtFXV09NTg4ODArRSxMWzU4ODgwK0VdPUJbMjMwXVtFXSk7Zm9yKEJbMjMxXT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5M2NlXHU5M2NmXHU5M2QwXHU5M2QxXHU5M2QyXHU5M2QzXHU5M2Q0XHU5M2Q1XHU5M2Q3XHU5M2Q4XHU5M2Q5XHU5M2RhXHU5M2RiXHU5M2RjXHU5M2RkXHU5M2RlXHU5M2RmXHU5M2UwXHU5M2UxXHU5M2UyXHU5M2Uz''@;'; put 'put ''XHU5M2U0XHU5M2U1XHU5M2U2XHU5M2U3XHU5M2U4XHU5M2U5XHU5M2VhXHU5M2ViXHU5M2VjXHU5M2VkXHU5M2VlXHU5M2VmXHU5M2YwXHU5M2YxXHU5M2YyXHU5M2YzXHU5M2Y0XHU5M2Y1XHU5M2Y2XHU5M2Y3XHU5M2Y4XHU5M2Y5XHU5M2ZhXHU5M2ZiXHU5M2ZjXHU5M2ZkXHU5M2ZlXHU5''@;'; put 'put ''M2ZmXHU5NDAwXHU5NDAxXHU5NDAyXHU5NDAzXHU5NDA0XHU5NDA1XHU5NDA2XHU5NDA3XHU5NDA4XHU5NDA5XHU5NDBhXHU5NDBiXHU5NDBjXHU5NDBkXHVmZmZkXHU5NDBlXHU5NDBmXHU5NDEwXHU5NDExXHU5NDEyXHU5NDEzXHU5NDE0XHU5NDE1XHU5NDE2XHU5NDE3XHU5NDE4XHU5NDE5''@;'; put 'put ''XHU5NDFhXHU5NDFiXHU5NDFjXHU5NDFkXHU5NDFlXHU5NDFmXHU5NDIwXHU5NDIxXHU5NDIyXHU5NDIzXHU5NDI0XHU5NDI1XHU5NDI2XHU5NDI3XHU5NDI4XHU5NDI5XHU5NDJhXHU5NDJiXHU5NDJjXHU5NDJkXHU5NDJlXHU3ZWFkXHU3ZWIwXHU3ZWJlXHU3ZWMwXHU3ZWMxXHU3ZWMyXHU3''@;'; put 'put ''ZWM5XHU3ZWNiXHU3ZWNjXHU3ZWQwXHU3ZWQ0XHU3ZWQ3XHU3ZWRiXHU3ZWUwXHU3ZWUxXHU3ZWU4XHU3ZWViXHU3ZWVlXHU3ZWVmXHU3ZWYxXHU3ZWYyXHU3ZjBkXHU3ZWY2XHU3ZWZhXHU3ZWZiXHU3ZWZlXHU3ZjAxXHU3ZjAyXHU3ZjAzXHU3ZjA3XHU3ZjA4XHU3ZjBiXHU3ZjBjXHU3ZjBm''@;'; put 'put ''XHU3ZjExXHU3ZjEyXHU3ZjE3XHU3ZjE5XHU3ZjFjXHU3ZjFiXHU3ZjFmXHU3ZjIxXHU3ZjIyXHU3ZjIzXHU3ZjI0XHU3ZjI1XHU3ZjI2XHU3ZjI3XHU3ZjJhXHU3ZjJiXHU3ZjJjXHU3ZjJkXHU3ZjJmXHU3ZjMwXHU3ZjMxXHU3ZjMyXHU3ZjMzXHU3ZjM1XHU1ZTdhXHU3NTdmXHU1ZGRiXHU3''@;'; put 'put ''NTNlXHU5MDk1XHU3MzhlXHU3MzkxXHU3M2FlXHU3M2EyXHU3MzlmXHU3M2NmXHU3M2MyXHU3M2QxXHU3M2I3XHU3M2IzXHU3M2MwXHU3M2M5XHU3M2M4XHU3M2U1XHU3M2Q5XHU5ODdjXHU3NDBhXHU3M2U5XHU3M2U3XHU3M2RlXHU3M2JhXHU3M2YyXHU3NDBmXHU3NDJhXHU3NDViXHU3NDI2''@;'; put 'put ''XHU3NDI1XHU3NDI4XHU3NDMwXHU3NDJlXHU3NDJjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzMV1bRV1dPTU5MTM2K0UsTFs1OTEzNitFXT1CWzIzMV1bRV0pO2ZvcihCWzIzMl09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTQyZlx1OTQzMFx1OTQzMVx1OTQzMlx1OTQzM1x1OTQzNFx1OTQzNVx1OTQzNlx1OTQzN1x1OTQzOFx1OTQzOVx1OTQzYVx1OTQzYlx1OTQzY1x1OTQzZFx1OTQzZlx1OTQ0MFx1OTQ0MVx1OTQ0''@;'; put 'put ''Mlx1OTQ0M1x1OTQ0NFx1OTQ0NVx1OTQ0Nlx1OTQ0N1x1OTQ0OFx1OTQ0OVx1OTQ0YVx1OTQ0Ylx1OTQ0Y1x1OTQ0ZFx1OTQ0ZVx1OTQ0Zlx1OTQ1MFx1OTQ1MVx1OTQ1Mlx1OTQ1M1x1OTQ1NFx1OTQ1NVx1OTQ1Nlx1OTQ1N1x1OTQ1OFx1OTQ1OVx1OTQ1YVx1OTQ1Ylx1OTQ1Y1x1OTQ1ZFx1''@;'; put 'put ''OTQ1ZVx1OTQ1Zlx1OTQ2MFx1OTQ2MVx1OTQ2Mlx1OTQ2M1x1OTQ2NFx1OTQ2NVx1OTQ2Nlx1OTQ2N1x1OTQ2OFx1OTQ2OVx1OTQ2YVx1OTQ2Y1x1OTQ2ZFx1OTQ2ZVx1OTQ2Zlx1ZmZmZFx1OTQ3MFx1OTQ3MVx1OTQ3Mlx1OTQ3M1x1OTQ3NFx1OTQ3NVx1OTQ3Nlx1OTQ3N1x1OTQ3OFx1OTQ3''@;'; put 'put ''OVx1OTQ3YVx1OTQ3Ylx1OTQ3Y1x1OTQ3ZFx1OTQ3ZVx1OTQ3Zlx1OTQ4MFx1OTQ4MVx1OTQ4Mlx1OTQ4M1x1OTQ4NFx1OTQ5MVx1OTQ5Nlx1OTQ5OFx1OTRjN1x1OTRjZlx1OTRkM1x1OTRkNFx1OTRkYVx1OTRlNlx1OTRmYlx1OTUxY1x1OTUyMFx1NzQxYlx1NzQxYVx1NzQ0MVx1NzQ1Y1x1''@;'; put 'put ''NzQ1N1x1NzQ1NVx1NzQ1OVx1NzQ3N1x1NzQ2ZFx1NzQ3ZVx1NzQ5Y1x1NzQ4ZVx1NzQ4MFx1NzQ4MVx1NzQ4N1x1NzQ4Ylx1NzQ5ZVx1NzRhOFx1NzRhOVx1NzQ5MFx1NzRhN1x1NzRkMlx1NzRiYVx1OTdlYVx1OTdlYlx1OTdlY1x1Njc0Y1x1Njc1M1x1Njc1ZVx1Njc0OFx1Njc2OVx1Njdh''@;'; put 'put ''NVx1Njc4N1x1Njc2YVx1Njc3M1x1Njc5OFx1NjdhN1x1Njc3NVx1NjdhOFx1Njc5ZVx1NjdhZFx1Njc4Ylx1Njc3N1x1Njc3Y1x1NjdmMFx1NjgwOVx1NjdkOFx1NjgwYVx1NjdlOVx1NjdiMFx1NjgwY1x1NjdkOVx1NjdiNVx1NjdkYVx1NjdiM1x1NjdkZFx1NjgwMFx1NjdjM1x1NjdiOFx1''@;'; put 'put ''NjdlMlx1NjgwZVx1NjdjMVx1NjdmZFx1NjgzMlx1NjgzM1x1Njg2MFx1Njg2MVx1Njg0ZVx1Njg2Mlx1Njg0NFx1Njg2NFx1Njg4M1x1NjgxZFx1Njg1NVx1Njg2Nlx1Njg0MVx1Njg2N1x1Njg0MFx1NjgzZVx1Njg0YVx1Njg0OVx1NjgyOVx1NjhiNVx1Njg4Zlx1Njg3NFx1Njg3N1x1Njg5''@;'; put 'put ''M1x1Njg2Ylx1NjhjMlx1Njk2ZVx1NjhmY1x1NjkxZlx1NjkyMFx1NjhmOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzJdW0VdXT01OTM5MitFLExbNTkzOTIrRV09QlsyMzJdW0VdKTtm''@;'; put 'put ''b3IoQlsyMzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk1MjdcdTk1MzNcdTk1M2RcdTk1NDNcdTk1NDhcdTk1NGJcdTk1NTVcdTk1NWFcdTk1NjBcdTk1NmVcdTk1NzRcdTk1NzVcdTk1NzdcdTk1NzhcdTk1NzlcdTk1N2FcdTk1''@;'; put 'put ''N2JcdTk1N2NcdTk1N2RcdTk1N2VcdTk1ODBcdTk1ODFcdTk1ODJcdTk1ODNcdTk1ODRcdTk1ODVcdTk1ODZcdTk1ODdcdTk1ODhcdTk1ODlcdTk1OGFcdTk1OGJcdTk1OGNcdTk1OGRcdTk1OGVcdTk1OGZcdTk1OTBcdTk1OTFcdTk1OTJcdTk1OTNcdTk1OTRcdTk1OTVcdTk1OTZcdTk1OTdc''@;'; put 'put ''dTk1OThcdTk1OTlcdTk1OWFcdTk1OWJcdTk1OWNcdTk1OWRcdTk1OWVcdTk1OWZcdTk1YTBcdTk1YTFcdTk1YTJcdTk1YTNcdTk1YTRcdTk1YTVcdTk1YTZcdTk1YTdcdTk1YThcdTk1YTlcdTk1YWFcdWZmZmRcdTk1YWJcdTk1YWNcdTk1YWRcdTk1YWVcdTk1YWZcdTk1YjBcdTk1YjFcdTk1''@;'; put 'put ''YjJcdTk1YjNcdTk1YjRcdTk1YjVcdTk1YjZcdTk1YjdcdTk1YjhcdTk1YjlcdTk1YmFcdTk1YmJcdTk1YmNcdTk1YmRcdTk1YmVcdTk1YmZcdTk1YzBcdTk1YzFcdTk1YzJcdTk1YzNcdTk1YzRcdTk1YzVcdTk1YzZcdTk1YzdcdTk1YzhcdTk1YzlcdTk1Y2FcdTk1Y2JcdTY5MjRcdTY4ZjBc''@;'; put 'put ''dTY5MGJcdTY5MDFcdTY5NTdcdTY4ZTNcdTY5MTBcdTY5NzFcdTY5MzlcdTY5NjBcdTY5NDJcdTY5NWRcdTY5ODRcdTY5NmJcdTY5ODBcdTY5OThcdTY5NzhcdTY5MzRcdTY5Y2NcdTY5ODdcdTY5ODhcdTY5Y2VcdTY5ODlcdTY5NjZcdTY5NjNcdTY5NzlcdTY5OWJcdTY5YTdcdTY5YmJcdTY5''@;'; put 'put ''YWJcdTY5YWRcdTY5ZDRcdTY5YjFcdTY5YzFcdTY5Y2FcdTY5ZGZcdTY5OTVcdTY5ZTBcdTY5OGRcdTY5ZmZcdTZhMmZcdTY5ZWRcdTZhMTdcdTZhMThcdTZhNjVcdTY5ZjJcdTZhNDRcdTZhM2VcdTZhYTBcdTZhNTBcdTZhNWJcdTZhMzVcdTZhOGVcdTZhNzlcdTZhM2RcdTZhMjhcdTZhNThc''@;'; put 'put ''dTZhN2NcdTZhOTFcdTZhOTBcdTZhYTlcdTZhOTdcdTZhYWJcdTczMzdcdTczNTJcdTZiODFcdTZiODJcdTZiODdcdTZiODRcdTZiOTJcdTZiOTNcdTZiOGRcdTZiOWFcdTZiOWJcdTZiYTFcdTZiYWFcdThmNmJcdThmNmRcdThmNzFcdThmNzJcdThmNzNcdThmNzVcdThmNzZcdThmNzhcdThm''@;'; put 'put ''NzdcdThmNzlcdThmN2FcdThmN2NcdThmN2VcdThmODFcdThmODJcdThmODRcdThmODdcdThmOGJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzM11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMzXVtFXV09NTk2NDgrRSxMWzU5NjQ4K0Vd''@;'; put 'put ''PUJbMjMzXVtFXSk7Zm9yKEJbMjM0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NWNjXHU5NWNkXHU5NWNlXHU5NWNmXHU5NWQwXHU5NWQxXHU5NWQyXHU5NWQzXHU5NWQ0XHU5NWQ1XHU5NWQ2XHU5NWQ3XHU5NWQ4XHU5NWQ5XHU5''@;'; put 'put ''NWRhXHU5NWRiXHU5NWRjXHU5NWRkXHU5NWRlXHU5NWRmXHU5NWUwXHU5NWUxXHU5NWUyXHU5NWUzXHU5NWU0XHU5NWU1XHU5NWU2XHU5NWU3XHU5NWVjXHU5NWZmXHU5NjA3XHU5NjEzXHU5NjE4XHU5NjFiXHU5NjFlXHU5NjIwXHU5NjIzXHU5NjI0XHU5NjI1XHU5NjI2XHU5NjI3XHU5NjI4''@;'; put 'put ''XHU5NjI5XHU5NjJiXHU5NjJjXHU5NjJkXHU5NjJmXHU5NjMwXHU5NjM3XHU5NjM4XHU5NjM5XHU5NjNhXHU5NjNlXHU5NjQxXHU5NjQzXHU5NjRhXHU5NjRlXHU5NjRmXHU5NjUxXHU5NjUyXHU5NjUzXHU5NjU2XHU5NjU3XHVmZmZkXHU5NjU4XHU5NjU5XHU5NjVhXHU5NjVjXHU5NjVkXHU5''@;'; put 'put ''NjVlXHU5NjYwXHU5NjYzXHU5NjY1XHU5NjY2XHU5NjZiXHU5NjZkXHU5NjZlXHU5NjZmXHU5NjcwXHU5NjcxXHU5NjczXHU5Njc4XHU5Njc5XHU5NjdhXHU5NjdiXHU5NjdjXHU5NjdkXHU5NjdlXHU5NjdmXHU5NjgwXHU5NjgxXHU5NjgyXHU5NjgzXHU5Njg0XHU5Njg3XHU5Njg5XHU5Njhh''@;'; put 'put ''XHU4ZjhkXHU4ZjhlXHU4ZjhmXHU4Zjk4XHU4ZjlhXHU4ZWNlXHU2MjBiXHU2MjE3XHU2MjFiXHU2MjFmXHU2MjIyXHU2MjIxXHU2MjI1XHU2MjI0XHU2MjJjXHU4MWU3XHU3NGVmXHU3NGY0XHU3NGZmXHU3NTBmXHU3NTExXHU3NTEzXHU2NTM0XHU2NWVlXHU2NWVmXHU2NWYwXHU2NjBhXHU2''@;'; put 'put ''NjE5XHU2NzcyXHU2NjAzXHU2NjE1XHU2NjAwXHU3MDg1XHU2NmY3XHU2NjFkXHU2NjM0XHU2NjMxXHU2NjM2XHU2NjM1XHU4MDA2XHU2NjVmXHU2NjU0XHU2NjQxXHU2NjRmXHU2NjU2XHU2NjYxXHU2NjU3XHU2Njc3XHU2Njg0XHU2NjhjXHU2NmE3XHU2NjlkXHU2NmJlXHU2NmRiXHU2NmRj''@;'; put 'put ''XHU2NmU2XHU2NmU5XHU4ZDMyXHU4ZDMzXHU4ZDM2XHU4ZDNiXHU4ZDNkXHU4ZDQwXHU4ZDQ1XHU4ZDQ2XHU4ZDQ4XHU4ZDQ5XHU4ZDQ3XHU4ZDRkXHU4ZDU1XHU4ZDU5XHU4OWM3XHU4OWNhXHU4OWNiXHU4OWNjXHU4OWNlXHU4OWNmXHU4OWQwXHU4OWQxXHU3MjZlXHU3MjlmXHU3MjVkXHU3''@;'; put 'put ''MjY2XHU3MjZmXHU3MjdlXHU3MjdmXHU3Mjg0XHU3MjhiXHU3MjhkXHU3MjhmXHU3MjkyXHU2MzA4XHU2MzMyXHU2M2IwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzNF1bRV1dPTU5OTA0''@;'; put 'put ''K0UsTFs1OTkwNCtFXT1CWzIzNF1bRV0pO2ZvcihCWzIzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY4Y1x1OTY4ZVx1OTY5MVx1OTY5Mlx1OTY5M1x1OTY5NVx1OTY5Nlx1OTY5YVx1OTY5Ylx1OTY5ZFx1OTY5ZVx1OTY5Zlx1''@;'; put 'put ''OTZhMFx1OTZhMVx1OTZhMlx1OTZhM1x1OTZhNFx1OTZhNVx1OTZhNlx1OTZhOFx1OTZhOVx1OTZhYVx1OTZhYlx1OTZhY1x1OTZhZFx1OTZhZVx1OTZhZlx1OTZiMVx1OTZiMlx1OTZiNFx1OTZiNVx1OTZiN1x1OTZiOFx1OTZiYVx1OTZiYlx1OTZiZlx1OTZjMlx1OTZjM1x1OTZjOFx1OTZj''@;'; put 'put ''YVx1OTZjYlx1OTZkMFx1OTZkMVx1OTZkM1x1OTZkNFx1OTZkNlx1OTZkN1x1OTZkOFx1OTZkOVx1OTZkYVx1OTZkYlx1OTZkY1x1OTZkZFx1OTZkZVx1OTZkZlx1OTZlMVx1OTZlMlx1OTZlM1x1OTZlNFx1OTZlNVx1OTZlNlx1OTZlN1x1OTZlYlx1ZmZmZFx1OTZlY1x1OTZlZFx1OTZlZVx1''@;'; put 'put ''OTZmMFx1OTZmMVx1OTZmMlx1OTZmNFx1OTZmNVx1OTZmOFx1OTZmYVx1OTZmYlx1OTZmY1x1OTZmZFx1OTZmZlx1OTcwMlx1OTcwM1x1OTcwNVx1OTcwYVx1OTcwYlx1OTcwY1x1OTcxMFx1OTcxMVx1OTcxMlx1OTcxNFx1OTcxNVx1OTcxN1x1OTcxOFx1OTcxOVx1OTcxYVx1OTcxYlx1OTcx''@;'; put 'put ''ZFx1OTcxZlx1OTcyMFx1NjQzZlx1NjRkOFx1ODAwNFx1NmJlYVx1NmJmM1x1NmJmZFx1NmJmNVx1NmJmOVx1NmMwNVx1NmMwN1x1NmMwNlx1NmMwZFx1NmMxNVx1NmMxOFx1NmMxOVx1NmMxYVx1NmMyMVx1NmMyOVx1NmMyNFx1NmMyYVx1NmMzMlx1NjUzNVx1NjU1NVx1NjU2Ylx1NzI0ZFx1''@;'; put 'put ''NzI1Mlx1NzI1Nlx1NzIzMFx1ODY2Mlx1NTIxNlx1ODA5Zlx1ODA5Y1x1ODA5M1x1ODBiY1x1NjcwYVx1ODBiZFx1ODBiMVx1ODBhYlx1ODBhZFx1ODBiNFx1ODBiN1x1ODBlN1x1ODBlOFx1ODBlOVx1ODBlYVx1ODBkYlx1ODBjMlx1ODBjNFx1ODBkOVx1ODBjZFx1ODBkN1x1NjcxMFx1ODBk''@;'; put 'put ''ZFx1ODBlYlx1ODBmMVx1ODBmNFx1ODBlZFx1ODEwZFx1ODEwZVx1ODBmMlx1ODBmY1x1NjcxNVx1ODExMlx1OGM1YVx1ODEzNlx1ODExZVx1ODEyY1x1ODExOFx1ODEzMlx1ODE0OFx1ODE0Y1x1ODE1M1x1ODE3NFx1ODE1OVx1ODE1YVx1ODE3MVx1ODE2MFx1ODE2OVx1ODE3Y1x1ODE3ZFx1''@;'; put 'put ''ODE2ZFx1ODE2N1x1NTg0ZFx1NWFiNVx1ODE4OFx1ODE4Mlx1ODE5MVx1NmVkNVx1ODFhM1x1ODFhYVx1ODFjY1x1NjcyNlx1ODFjYVx1ODFiYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsy''@;'; put 'put ''MzVdW0VdXT02MDE2MCtFLExbNjAxNjArRV09QlsyMzVdW0VdKTtmb3IoQlsyMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3MjFcdTk3MjJcdTk3MjNcdTk3MjRcdTk3MjVcdTk3MjZcdTk3MjdcdTk3MjhcdTk3MjlcdTk3MmJc''@;'; put 'put ''dTk3MmNcdTk3MmVcdTk3MmZcdTk3MzFcdTk3MzNcdTk3MzRcdTk3MzVcdTk3MzZcdTk3MzdcdTk3M2FcdTk3M2JcdTk3M2NcdTk3M2RcdTk3M2ZcdTk3NDBcdTk3NDFcdTk3NDJcdTk3NDNcdTk3NDRcdTk3NDVcdTk3NDZcdTk3NDdcdTk3NDhcdTk3NDlcdTk3NGFcdTk3NGJcdTk3NGNcdTk3''@;'; put 'put ''NGRcdTk3NGVcdTk3NGZcdTk3NTBcdTk3NTFcdTk3NTRcdTk3NTVcdTk3NTdcdTk3NThcdTk3NWFcdTk3NWNcdTk3NWRcdTk3NWZcdTk3NjNcdTk3NjRcdTk3NjZcdTk3NjdcdTk3NjhcdTk3NmFcdTk3NmJcdTk3NmNcdTk3NmRcdTk3NmVcdTk3NmZcdTk3NzBcdTk3NzFcdWZmZmRcdTk3NzJc''@;'; put 'put ''dTk3NzVcdTk3NzdcdTk3NzhcdTk3NzlcdTk3N2FcdTk3N2JcdTk3N2RcdTk3N2VcdTk3N2ZcdTk3ODBcdTk3ODFcdTk3ODJcdTk3ODNcdTk3ODRcdTk3ODZcdTk3ODdcdTk3ODhcdTk3ODlcdTk3OGFcdTk3OGNcdTk3OGVcdTk3OGZcdTk3OTBcdTk3OTNcdTk3OTVcdTk3OTZcdTk3OTdcdTk3''@;'; put 'put ''OTlcdTk3OWFcdTk3OWJcdTk3OWNcdTk3OWRcdTgxYzFcdTgxYTZcdTZiMjRcdTZiMzdcdTZiMzlcdTZiNDNcdTZiNDZcdTZiNTlcdTk4ZDFcdTk4ZDJcdTk4ZDNcdTk4ZDVcdTk4ZDlcdTk4ZGFcdTZiYjNcdTVmNDBcdTZiYzJcdTg5ZjNcdTY1OTBcdTlmNTFcdTY1OTNcdTY1YmNcdTY1YzZc''@;'; put 'put ''dTY1YzRcdTY1YzNcdTY1Y2NcdTY1Y2VcdTY1ZDJcdTY1ZDZcdTcwODBcdTcwOWNcdTcwOTZcdTcwOWRcdTcwYmJcdTcwYzBcdTcwYjdcdTcwYWJcdTcwYjFcdTcwZThcdTcwY2FcdTcxMTBcdTcxMTNcdTcxMTZcdTcxMmZcdTcxMzFcdTcxNzNcdTcxNWNcdTcxNjhcdTcxNDVcdTcxNzJcdTcx''@;'; put 'put ''NGFcdTcxNzhcdTcxN2FcdTcxOThcdTcxYjNcdTcxYjVcdTcxYThcdTcxYTBcdTcxZTBcdTcxZDRcdTcxZTdcdTcxZjlcdTcyMWRcdTcyMjhcdTcwNmNcdTcxMThcdTcxNjZcdTcxYjlcdTYyM2VcdTYyM2RcdTYyNDNcdTYyNDhcdTYyNDlcdTc5M2JcdTc5NDBcdTc5NDZcdTc5NDlcdTc5NWJc''@;'; put 'put ''dTc5NWNcdTc5NTNcdTc5NWFcdTc5NjJcdTc5NTdcdTc5NjBcdTc5NmZcdTc5NjdcdTc5N2FcdTc5ODVcdTc5OGFcdTc5OWFcdTc5YTdcdTc5YjNcdTVmZDFcdTVmZDBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNl1bRV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKGdlW0JbMjM2XVtFXV09NjA0MTYrRSxMWzYwNDE2K0VdPUJbMjM2XVtFXSk7Zm9yKEJbMjM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzllXHU5NzlmXHU5N2ExXHU5N2EyXHU5N2E0XHU5N2E1XHU5N2E2XHU5N2E3''@;'; put 'put ''XHU5N2E4XHU5N2E5XHU5N2FhXHU5N2FjXHU5N2FlXHU5N2IwXHU5N2IxXHU5N2IzXHU5N2I1XHU5N2I2XHU5N2I3XHU5N2I4XHU5N2I5XHU5N2JhXHU5N2JiXHU5N2JjXHU5N2JkXHU5N2JlXHU5N2JmXHU5N2MwXHU5N2MxXHU5N2MyXHU5N2MzXHU5N2M0XHU5N2M1XHU5N2M2XHU5N2M3XHU5''@;'; put 'put ''N2M4XHU5N2M5XHU5N2NhXHU5N2NiXHU5N2NjXHU5N2NkXHU5N2NlXHU5N2NmXHU5N2QwXHU5N2QxXHU5N2QyXHU5N2QzXHU5N2Q0XHU5N2Q1XHU5N2Q2XHU5N2Q3XHU5N2Q4XHU5N2Q5XHU5N2RhXHU5N2RiXHU5N2RjXHU5N2RkXHU5N2RlXHU5N2RmXHU5N2UwXHU5N2UxXHU5N2UyXHU5N2Uz''@;'; put 'put ''XHVmZmZkXHU5N2U0XHU5N2U1XHU5N2U4XHU5N2VlXHU5N2VmXHU5N2YwXHU5N2YxXHU5N2YyXHU5N2Y0XHU5N2Y3XHU5N2Y4XHU5N2Y5XHU5N2ZhXHU5N2ZiXHU5N2ZjXHU5N2ZkXHU5N2ZlXHU5N2ZmXHU5ODAwXHU5ODAxXHU5ODAyXHU5ODAzXHU5ODA0XHU5ODA1XHU5ODA2XHU5ODA3XHU5''@;'; put 'put ''ODA4XHU5ODA5XHU5ODBhXHU5ODBiXHU5ODBjXHU5ODBkXHU5ODBlXHU2MDNjXHU2MDVkXHU2MDVhXHU2MDY3XHU2MDQxXHU2MDU5XHU2MDYzXHU2MGFiXHU2MTA2XHU2MTBkXHU2MTVkXHU2MWE5XHU2MTlkXHU2MWNiXHU2MWQxXHU2MjA2XHU4MDgwXHU4MDdmXHU2YzkzXHU2Y2Y2XHU2ZGZj''@;'; put 'put ''XHU3N2Y2XHU3N2Y4XHU3ODAwXHU3ODA5XHU3ODE3XHU3ODE4XHU3ODExXHU2NWFiXHU3ODJkXHU3ODFjXHU3ODFkXHU3ODM5XHU3ODNhXHU3ODNiXHU3ODFmXHU3ODNjXHU3ODI1XHU3ODJjXHU3ODIzXHU3ODI5XHU3ODRlXHU3ODZkXHU3ODU2XHU3ODU3XHU3ODI2XHU3ODUwXHU3ODQ3XHU3''@;'; put 'put ''ODRjXHU3ODZhXHU3ODliXHU3ODkzXHU3ODlhXHU3ODg3XHU3ODljXHU3OGExXHU3OGEzXHU3OGIyXHU3OGI5XHU3OGE1XHU3OGQ0XHU3OGQ5XHU3OGM5XHU3OGVjXHU3OGYyXHU3OTA1XHU3OGY0XHU3OTEzXHU3OTI0XHU3OTFlXHU3OTM0XHU5ZjliXHU5ZWY5XHU5ZWZiXHU5ZWZjXHU3NmYx''@;'; put 'put ''XHU3NzA0XHU3NzBkXHU3NmY5XHU3NzA3XHU3NzA4XHU3NzFhXHU3NzIyXHU3NzE5XHU3NzJkXHU3NzI2XHU3NzM1XHU3NzM4XHU3NzUwXHU3NzUxXHU3NzQ3XHU3NzQzXHU3NzVhXHU3NzY4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzdd''@;'; put 'put ''W0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzN11bRV1dPTYwNjcyK0UsTFs2MDY3MitFXT1CWzIzN11bRV0pO2ZvcihCWzIzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTgwZlx1OTgxMFx1OTgxMVx1OTgxMlx1OTgxM1x1OTgx''@;'; put 'put ''NFx1OTgxNVx1OTgxNlx1OTgxN1x1OTgxOFx1OTgxOVx1OTgxYVx1OTgxYlx1OTgxY1x1OTgxZFx1OTgxZVx1OTgxZlx1OTgyMFx1OTgyMVx1OTgyMlx1OTgyM1x1OTgyNFx1OTgyNVx1OTgyNlx1OTgyN1x1OTgyOFx1OTgyOVx1OTgyYVx1OTgyYlx1OTgyY1x1OTgyZFx1OTgyZVx1OTgyZlx1''@;'; put 'put ''OTgzMFx1OTgzMVx1OTgzMlx1OTgzM1x1OTgzNFx1OTgzNVx1OTgzNlx1OTgzN1x1OTgzOFx1OTgzOVx1OTgzYVx1OTgzYlx1OTgzY1x1OTgzZFx1OTgzZVx1OTgzZlx1OTg0MFx1OTg0MVx1OTg0Mlx1OTg0M1x1OTg0NFx1OTg0NVx1OTg0Nlx1OTg0N1x1OTg0OFx1OTg0OVx1OTg0YVx1OTg0''@;'; put 'put ''Ylx1OTg0Y1x1OTg0ZFx1ZmZmZFx1OTg0ZVx1OTg0Zlx1OTg1MFx1OTg1MVx1OTg1Mlx1OTg1M1x1OTg1NFx1OTg1NVx1OTg1Nlx1OTg1N1x1OTg1OFx1OTg1OVx1OTg1YVx1OTg1Ylx1OTg1Y1x1OTg1ZFx1OTg1ZVx1OTg1Zlx1OTg2MFx1OTg2MVx1OTg2Mlx1OTg2M1x1OTg2NFx1OTg2NVx1''@;'; put 'put ''OTg2Nlx1OTg2N1x1OTg2OFx1OTg2OVx1OTg2YVx1OTg2Ylx1OTg2Y1x1OTg2ZFx1OTg2ZVx1Nzc2Mlx1Nzc2NVx1Nzc3Zlx1Nzc4ZFx1Nzc3ZFx1Nzc4MFx1Nzc4Y1x1Nzc5MVx1Nzc5Zlx1NzdhMFx1NzdiMFx1NzdiNVx1NzdiZFx1NzUzYVx1NzU0MFx1NzU0ZVx1NzU0Ylx1NzU0OFx1NzU1''@;'; put 'put ''Ylx1NzU3Mlx1NzU3OVx1NzU4M1x1N2Y1OFx1N2Y2MVx1N2Y1Zlx1OGE0OFx1N2Y2OFx1N2Y3NFx1N2Y3MVx1N2Y3OVx1N2Y4MVx1N2Y3ZVx1NzZjZFx1NzZlNVx1ODgzMlx1OTQ4NVx1OTQ4Nlx1OTQ4N1x1OTQ4Ylx1OTQ4YVx1OTQ4Y1x1OTQ4ZFx1OTQ4Zlx1OTQ5MFx1OTQ5NFx1OTQ5N1x1''@;'; put 'put ''OTQ5NVx1OTQ5YVx1OTQ5Ylx1OTQ5Y1x1OTRhM1x1OTRhNFx1OTRhYlx1OTRhYVx1OTRhZFx1OTRhY1x1OTRhZlx1OTRiMFx1OTRiMlx1OTRiNFx1OTRiNlx1OTRiN1x1OTRiOFx1OTRiOVx1OTRiYVx1OTRiY1x1OTRiZFx1OTRiZlx1OTRjNFx1OTRjOFx1OTRjOVx1OTRjYVx1OTRjYlx1OTRj''@;'; put 'put ''Y1x1OTRjZFx1OTRjZVx1OTRkMFx1OTRkMVx1OTRkMlx1OTRkNVx1OTRkNlx1OTRkN1x1OTRkOVx1OTRkOFx1OTRkYlx1OTRkZVx1OTRkZlx1OTRlMFx1OTRlMlx1OTRlNFx1OTRlNVx1OTRlN1x1OTRlOFx1OTRlYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzOF0ubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUJbMjM4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzhdW0VdXT02MDkyOCtFLExbNjA5MjgrRV09QlsyMzhdW0VdKTtmb3IoQlsyMzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4NmZcdTk4NzBcdTk4NzFcdTk4''@;'; put 'put ''NzJcdTk4NzNcdTk4NzRcdTk4OGJcdTk4OGVcdTk4OTJcdTk4OTVcdTk4OTlcdTk4YTNcdTk4YThcdTk4YTlcdTk4YWFcdTk4YWJcdTk4YWNcdTk4YWRcdTk4YWVcdTk4YWZcdTk4YjBcdTk4YjFcdTk4YjJcdTk4YjNcdTk4YjRcdTk4YjVcdTk4YjZcdTk4YjdcdTk4YjhcdTk4YjlcdTk4YmFc''@;'; put 'put ''dTk4YmJcdTk4YmNcdTk4YmRcdTk4YmVcdTk4YmZcdTk4YzBcdTk4YzFcdTk4YzJcdTk4YzNcdTk4YzRcdTk4YzVcdTk4YzZcdTk4YzdcdTk4YzhcdTk4YzlcdTk4Y2FcdTk4Y2JcdTk4Y2NcdTk4Y2RcdTk4Y2ZcdTk4ZDBcdTk4ZDRcdTk4ZDZcdTk4ZDdcdTk4ZGJcdTk4ZGNcdTk4ZGRcdTk4''@;'; put 'put ''ZTBcdTk4ZTFcdTk4ZTJcdTk4ZTNcdTk4ZTRcdWZmZmRcdTk4ZTVcdTk4ZTZcdTk4ZTlcdTk4ZWFcdTk4ZWJcdTk4ZWNcdTk4ZWRcdTk4ZWVcdTk4ZWZcdTk4ZjBcdTk4ZjFcdTk4ZjJcdTk4ZjNcdTk4ZjRcdTk4ZjVcdTk4ZjZcdTk4ZjdcdTk4ZjhcdTk4ZjlcdTk4ZmFcdTk4ZmJcdTk4ZmNc''@;'; put 'put ''dTk4ZmRcdTk4ZmVcdTk4ZmZcdTk5MDBcdTk5MDFcdTk5MDJcdTk5MDNcdTk5MDRcdTk5MDVcdTk5MDZcdTk5MDdcdTk0ZTlcdTk0ZWJcdTk0ZWVcdTk0ZWZcdTk0ZjNcdTk0ZjRcdTk0ZjVcdTk0ZjdcdTk0ZjlcdTk0ZmNcdTk0ZmRcdTk0ZmZcdTk1MDNcdTk1MDJcdTk1MDZcdTk1MDdcdTk1''@;'; put 'put ''MDlcdTk1MGFcdTk1MGRcdTk1MGVcdTk1MGZcdTk1MTJcdTk1MTNcdTk1MTRcdTk1MTVcdTk1MTZcdTk1MThcdTk1MWJcdTk1MWRcdTk1MWVcdTk1MWZcdTk1MjJcdTk1MmFcdTk1MmJcdTk1MjlcdTk1MmNcdTk1MzFcdTk1MzJcdTk1MzRcdTk1MzZcdTk1MzdcdTk1MzhcdTk1M2NcdTk1M2Vc''@;'; put 'put ''dTk1M2ZcdTk1NDJcdTk1MzVcdTk1NDRcdTk1NDVcdTk1NDZcdTk1NDlcdTk1NGNcdTk1NGVcdTk1NGZcdTk1NTJcdTk1NTNcdTk1NTRcdTk1NTZcdTk1NTdcdTk1NThcdTk1NTlcdTk1NWJcdTk1NWVcdTk1NWZcdTk1NWRcdTk1NjFcdTk1NjJcdTk1NjRcdTk1NjVcdTk1NjZcdTk1NjdcdTk1''@;'; put 'put ''NjhcdTk1NjlcdTk1NmFcdTk1NmJcdTk1NmNcdTk1NmZcdTk1NzFcdTk1NzJcdTk1NzNcdTk1M2FcdTc3ZTdcdTc3ZWNcdTk2YzlcdTc5ZDVcdTc5ZWRcdTc5ZTNcdTc5ZWJcdTdhMDZcdTVkNDdcdTdhMDNcdTdhMDJcdTdhMWVcdTdhMTRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzld''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM5XVtFXV09NjExODQrRSxMWzYxMTg0K0VdPUJbMjM5XVtFXSk7Zm9yKEJbMjQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5OTA4XHU5''@;'; put 'put ''OTA5XHU5OTBhXHU5OTBiXHU5OTBjXHU5OTBlXHU5OTBmXHU5OTExXHU5OTEyXHU5OTEzXHU5OTE0XHU5OTE1XHU5OTE2XHU5OTE3XHU5OTE4XHU5OTE5XHU5OTFhXHU5OTFiXHU5OTFjXHU5OTFkXHU5OTFlXHU5OTFmXHU5OTIwXHU5OTIxXHU5OTIyXHU5OTIzXHU5OTI0XHU5OTI1XHU5OTI2''@;'; put 'put ''XHU5OTI3XHU5OTI4XHU5OTI5XHU5OTJhXHU5OTJiXHU5OTJjXHU5OTJkXHU5OTJmXHU5OTMwXHU5OTMxXHU5OTMyXHU5OTMzXHU5OTM0XHU5OTM1XHU5OTM2XHU5OTM3XHU5OTM4XHU5OTM5XHU5OTNhXHU5OTNiXHU5OTNjXHU5OTNkXHU5OTNlXHU5OTNmXHU5OTQwXHU5OTQxXHU5OTQyXHU5''@;'; put 'put ''OTQzXHU5OTQ0XHU5OTQ1XHU5OTQ2XHU5OTQ3XHU5OTQ4XHU5OTQ5XHVmZmZkXHU5OTRhXHU5OTRiXHU5OTRjXHU5OTRkXHU5OTRlXHU5OTRmXHU5OTUwXHU5OTUxXHU5OTUyXHU5OTUzXHU5OTU2XHU5OTU3XHU5OTU4XHU5OTU5XHU5OTVhXHU5OTViXHU5OTVjXHU5OTVkXHU5OTVlXHU5OTVm''@;'; put 'put ''XHU5OTYwXHU5OTYxXHU5OTYyXHU5OTY0XHU5OTY2XHU5OTczXHU5OTc4XHU5OTc5XHU5OTdiXHU5OTdlXHU5OTgyXHU5OTgzXHU5OTg5XHU3YTM5XHU3YTM3XHU3YTUxXHU5ZWNmXHU5OWE1XHU3YTcwXHU3Njg4XHU3NjhlXHU3NjkzXHU3Njk5XHU3NmE0XHU3NGRlXHU3NGUwXHU3NTJjXHU5''@;'; put 'put ''ZTIwXHU5ZTIyXHU5ZTI4XHU5ZTI5XHU5ZTJhXHU5ZTJiXHU5ZTJjXHU5ZTMyXHU5ZTMxXHU5ZTM2XHU5ZTM4XHU5ZTM3XHU5ZTM5XHU5ZTNhXHU5ZTNlXHU5ZTQxXHU5ZTQyXHU5ZTQ0XHU5ZTQ2XHU5ZTQ3XHU5ZTQ4XHU5ZTQ5XHU5ZTRiXHU5ZTRjXHU5ZTRlXHU5ZTUxXHU5ZTU1XHU5ZTU3''@;'; put 'put ''XHU5ZTVhXHU5ZTViXHU5ZTVjXHU5ZTVlXHU5ZTYzXHU5ZTY2XHU5ZTY3XHU5ZTY4XHU5ZTY5XHU5ZTZhXHU5ZTZiXHU5ZTZjXHU5ZTcxXHU5ZTZkXHU5ZTczXHU3NTkyXHU3NTk0XHU3NTk2XHU3NWEwXHU3NTlkXHU3NWFjXHU3NWEzXHU3NWIzXHU3NWI0XHU3NWI4XHU3NWM0XHU3NWIxXHU3''@;'; put 'put ''NWIwXHU3NWMzXHU3NWMyXHU3NWQ2XHU3NWNkXHU3NWUzXHU3NWU4XHU3NWU2XHU3NWU0XHU3NWViXHU3NWU3XHU3NjAzXHU3NWYxXHU3NWZjXHU3NWZmXHU3NjEwXHU3NjAwXHU3NjA1XHU3NjBjXHU3NjE3XHU3NjBhXHU3NjI1XHU3NjE4XHU3NjE1XHU3NjE5XHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMjQwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0MF1bRV1dPTYxNDQwK0UsTFs2MTQ0MCtFXT1CWzI0MF1bRV0pO2ZvcihCWzI0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1OTk4Y1x1OTk4ZVx1OTk5YVx1OTk5Ylx1OTk5Y1x1OTk5ZFx1OTk5ZVx1OTk5Zlx1OTlhMFx1OTlhMVx1OTlhMlx1OTlhM1x1OTlhNFx1OTlhNlx1OTlhN1x1OTlhOVx1OTlhYVx1OTlhYlx1OTlhY1x1OTlhZFx1OTlhZVx1OTlhZlx1OTliMFx1OTliMVx1OTliMlx1OTliM1x1OTli''@;'; put 'put ''NFx1OTliNVx1OTliNlx1OTliN1x1OTliOFx1OTliOVx1OTliYVx1OTliYlx1OTliY1x1OTliZFx1OTliZVx1OTliZlx1OTljMFx1OTljMVx1OTljMlx1OTljM1x1OTljNFx1OTljNVx1OTljNlx1OTljN1x1OTljOFx1OTljOVx1OTljYVx1OTljYlx1OTljY1x1OTljZFx1OTljZVx1OTljZlx1''@;'; put 'put ''OTlkMFx1OTlkMVx1OTlkMlx1OTlkM1x1OTlkNFx1OTlkNVx1OTlkNlx1OTlkN1x1OTlkOFx1ZmZmZFx1OTlkOVx1OTlkYVx1OTlkYlx1OTlkY1x1OTlkZFx1OTlkZVx1OTlkZlx1OTllMFx1OTllMVx1OTllMlx1OTllM1x1OTllNFx1OTllNVx1OTllNlx1OTllN1x1OTllOFx1OTllOVx1OTll''@;'; put 'put ''YVx1OTllYlx1OTllY1x1OTllZFx1OTllZVx1OTllZlx1OTlmMFx1OTlmMVx1OTlmMlx1OTlmM1x1OTlmNFx1OTlmNVx1OTlmNlx1OTlmN1x1OTlmOFx1OTlmOVx1NzYxYlx1NzYzY1x1NzYyMlx1NzYyMFx1NzY0MFx1NzYyZFx1NzYzMFx1NzYzZlx1NzYzNVx1NzY0M1x1NzYzZVx1NzYzM1x1''@;'; put 'put ''NzY0ZFx1NzY1ZVx1NzY1NFx1NzY1Y1x1NzY1Nlx1NzY2Ylx1NzY2Zlx1N2ZjYVx1N2FlNlx1N2E3OFx1N2E3OVx1N2E4MFx1N2E4Nlx1N2E4OFx1N2E5NVx1N2FhNlx1N2FhMFx1N2FhY1x1N2FhOFx1N2FhZFx1N2FiM1x1ODg2NFx1ODg2OVx1ODg3Mlx1ODg3ZFx1ODg3Zlx1ODg4Mlx1ODhh''@;'; put 'put ''Mlx1ODhjNlx1ODhiN1x1ODhiY1x1ODhjOVx1ODhlMlx1ODhjZVx1ODhlM1x1ODhlNVx1ODhmMVx1ODkxYVx1ODhmY1x1ODhlOFx1ODhmZVx1ODhmMFx1ODkyMVx1ODkxOVx1ODkxM1x1ODkxYlx1ODkwYVx1ODkzNFx1ODkyYlx1ODkzNlx1ODk0MVx1ODk2Nlx1ODk3Ylx1NzU4Ylx1ODBlNVx1''@;'; put 'put ''NzZiMlx1NzZiNFx1NzdkY1x1ODAxMlx1ODAxNFx1ODAxNlx1ODAxY1x1ODAyMFx1ODAyMlx1ODAyNVx1ODAyNlx1ODAyN1x1ODAyOVx1ODAyOFx1ODAzMVx1ODAwYlx1ODAzNVx1ODA0M1x1ODA0Nlx1ODA0ZFx1ODA1Mlx1ODA2OVx1ODA3MVx1ODk4M1x1OTg3OFx1OTg4MFx1OTg4M1x1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDFdW0VdXT02MTY5NitFLExbNjE2OTYrRV09QlsyNDFdW0VdKTtmb3IoQlsyNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTk5ZmFcdTk5ZmJcdTk5ZmNcdTk5ZmRcdTk5ZmVcdTk5ZmZcdTlhMDBcdTlhMDFcdTlhMDJcdTlhMDNcdTlhMDRcdTlhMDVcdTlhMDZcdTlhMDdcdTlhMDhcdTlhMDlcdTlhMGFcdTlhMGJcdTlhMGNcdTlhMGRcdTlhMGVcdTlhMGZcdTlhMTBcdTlhMTFcdTlh''@;'; put 'put ''MTJcdTlhMTNcdTlhMTRcdTlhMTVcdTlhMTZcdTlhMTdcdTlhMThcdTlhMTlcdTlhMWFcdTlhMWJcdTlhMWNcdTlhMWRcdTlhMWVcdTlhMWZcdTlhMjBcdTlhMjFcdTlhMjJcdTlhMjNcdTlhMjRcdTlhMjVcdTlhMjZcdTlhMjdcdTlhMjhcdTlhMjlcdTlhMmFcdTlhMmJcdTlhMmNcdTlhMmRc''@;'; put 'put ''dTlhMmVcdTlhMmZcdTlhMzBcdTlhMzFcdTlhMzJcdTlhMzNcdTlhMzRcdTlhMzVcdTlhMzZcdTlhMzdcdTlhMzhcdWZmZmRcdTlhMzlcdTlhM2FcdTlhM2JcdTlhM2NcdTlhM2RcdTlhM2VcdTlhM2ZcdTlhNDBcdTlhNDFcdTlhNDJcdTlhNDNcdTlhNDRcdTlhNDVcdTlhNDZcdTlhNDdcdTlh''@;'; put 'put ''NDhcdTlhNDlcdTlhNGFcdTlhNGJcdTlhNGNcdTlhNGRcdTlhNGVcdTlhNGZcdTlhNTBcdTlhNTFcdTlhNTJcdTlhNTNcdTlhNTRcdTlhNTVcdTlhNTZcdTlhNTdcdTlhNThcdTlhNTlcdTk4ODlcdTk4OGNcdTk4OGRcdTk4OGZcdTk4OTRcdTk4OWFcdTk4OWJcdTk4OWVcdTk4OWZcdTk4YTFc''@;'; put 'put ''dTk4YTJcdTk4YTVcdTk4YTZcdTg2NGRcdTg2NTRcdTg2NmNcdTg2NmVcdTg2N2ZcdTg2N2FcdTg2N2NcdTg2N2JcdTg2YThcdTg2OGRcdTg2OGJcdTg2YWNcdTg2OWRcdTg2YTdcdTg2YTNcdTg2YWFcdTg2OTNcdTg2YTlcdTg2YjZcdTg2YzRcdTg2YjVcdTg2Y2VcdTg2YjBcdTg2YmFcdTg2''@;'; put 'put ''YjFcdTg2YWZcdTg2YzlcdTg2Y2ZcdTg2YjRcdTg2ZTlcdTg2ZjFcdTg2ZjJcdTg2ZWRcdTg2ZjNcdTg2ZDBcdTg3MTNcdTg2ZGVcdTg2ZjRcdTg2ZGZcdTg2ZDhcdTg2ZDFcdTg3MDNcdTg3MDdcdTg2ZjhcdTg3MDhcdTg3MGFcdTg3MGRcdTg3MDlcdTg3MjNcdTg3M2JcdTg3MWVcdTg3MjVc''@;'; put 'put ''dTg3MmVcdTg3MWFcdTg3M2VcdTg3NDhcdTg3MzRcdTg3MzFcdTg3MjlcdTg3MzdcdTg3M2ZcdTg3ODJcdTg3MjJcdTg3N2RcdTg3N2VcdTg3N2JcdTg3NjBcdTg3NzBcdTg3NGNcdTg3NmVcdTg3OGJcdTg3NTNcdTg3NjNcdTg3N2NcdTg3NjRcdTg3NTlcdTg3NjVcdTg3OTNcdTg3YWZcdTg3''@;'; put 'put ''YThcdTg3ZDJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQyXVtFXV09NjE5NTIrRSxMWzYxOTUyK0VdPUJbMjQyXVtFXSk7Zm9yKEJbMjQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YTVhXHU5YTViXHU5YTVjXHU5YTVkXHU5YTVlXHU5YTVmXHU5YTYwXHU5YTYxXHU5YTYyXHU5YTYzXHU5YTY0XHU5YTY1XHU5YTY2XHU5YTY3XHU5YTY4XHU5YTY5XHU5YTZhXHU5YTZiXHU5YTcyXHU5YTgzXHU5YTg5XHU5YThkXHU5''@;'; put 'put ''YThlXHU5YTk0XHU5YTk1XHU5YTk5XHU5YWE2XHU5YWE5XHU5YWFhXHU5YWFiXHU5YWFjXHU5YWFkXHU5YWFlXHU5YWFmXHU5YWIyXHU5YWIzXHU5YWI0XHU5YWI1XHU5YWI5XHU5YWJiXHU5YWJkXHU5YWJlXHU5YWJmXHU5YWMzXHU5YWM0XHU5YWM2XHU5YWM3XHU5YWM4XHU5YWM5XHU5YWNh''@;'; put 'put ''XHU5YWNkXHU5YWNlXHU5YWNmXHU5YWQwXHU5YWQyXHU5YWQ0XHU5YWQ1XHU5YWQ2XHU5YWQ3XHU5YWQ5XHU5YWRhXHU5YWRiXHU5YWRjXHVmZmZkXHU5YWRkXHU5YWRlXHU5YWUwXHU5YWUyXHU5YWUzXHU5YWU0XHU5YWU1XHU5YWU3XHU5YWU4XHU5YWU5XHU5YWVhXHU5YWVjXHU5YWVlXHU5''@;'; put 'put ''YWYwXHU5YWYxXHU5YWYyXHU5YWYzXHU5YWY0XHU5YWY1XHU5YWY2XHU5YWY3XHU5YWY4XHU5YWZhXHU5YWZjXHU5YWZkXHU5YWZlXHU5YWZmXHU5YjAwXHU5YjAxXHU5YjAyXHU5YjA0XHU5YjA1XHU5YjA2XHU4N2M2XHU4Nzg4XHU4Nzg1XHU4N2FkXHU4Nzk3XHU4NzgzXHU4N2FiXHU4N2U1''@;'; put 'put ''XHU4N2FjXHU4N2I1XHU4N2IzXHU4N2NiXHU4N2QzXHU4N2JkXHU4N2QxXHU4N2MwXHU4N2NhXHU4N2RiXHU4N2VhXHU4N2UwXHU4N2VlXHU4ODE2XHU4ODEzXHU4N2ZlXHU4ODBhXHU4ODFiXHU4ODIxXHU4ODM5XHU4ODNjXHU3ZjM2XHU3ZjQyXHU3ZjQ0XHU3ZjQ1XHU4MjEwXHU3YWZhXHU3''@;'; put 'put ''YWZkXHU3YjA4XHU3YjAzXHU3YjA0XHU3YjE1XHU3YjBhXHU3YjJiXHU3YjBmXHU3YjQ3XHU3YjM4XHU3YjJhXHU3YjE5XHU3YjJlXHU3YjMxXHU3YjIwXHU3YjI1XHU3YjI0XHU3YjMzXHU3YjNlXHU3YjFlXHU3YjU4XHU3YjVhXHU3YjQ1XHU3Yjc1XHU3YjRjXHU3YjVkXHU3YjYwXHU3YjZl''@;'; put 'put ''XHU3YjdiXHU3YjYyXHU3YjcyXHU3YjcxXHU3YjkwXHU3YmE2XHU3YmE3XHU3YmI4XHU3YmFjXHU3YjlkXHU3YmE4XHU3Yjg1XHU3YmFhXHU3YjljXHU3YmEyXHU3YmFiXHU3YmI0XHU3YmQxXHU3YmMxXHU3YmNjXHU3YmRkXHU3YmRhXHU3YmU1XHU3YmU2XHU3YmVhXHU3YzBjXHU3YmZlXHU3''@;'; put 'put ''YmZjXHU3YzBmXHU3YzE2XHU3YzBiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0M11bRV1dPTYyMjA4K0UsTFs2MjIwOCtFXT1CWzI0M11bRV0pO2ZvcihCWzI0NF09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWIwN1x1OWIwOVx1OWIwYVx1OWIwYlx1OWIwY1x1OWIwZFx1OWIwZVx1OWIxMFx1OWIxMVx1OWIxMlx1OWIxNFx1OWIxNVx1OWIxNlx1OWIxN1x1OWIxOFx1OWIxOVx1OWIxYVx1OWIxYlx1OWIxY1x1OWIxZFx1''@;'; put 'put ''OWIxZVx1OWIyMFx1OWIyMVx1OWIyMlx1OWIyNFx1OWIyNVx1OWIyNlx1OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyYlx1OWIyY1x1OWIyZFx1OWIyZVx1OWIzMFx1OWIzMVx1OWIzM1x1OWIzNFx1OWIzNVx1OWIzNlx1OWIzN1x1OWIzOFx1OWIzOVx1OWIzYVx1OWIzZFx1OWIzZVx1OWIz''@;'; put 'put ''Zlx1OWI0MFx1OWI0Nlx1OWI0YVx1OWI0Ylx1OWI0Y1x1OWI0ZVx1OWI1MFx1OWI1Mlx1OWI1M1x1OWI1NVx1OWI1Nlx1OWI1N1x1OWI1OFx1OWI1OVx1OWI1YVx1ZmZmZFx1OWI1Ylx1OWI1Y1x1OWI1ZFx1OWI1ZVx1OWI1Zlx1OWI2MFx1OWI2MVx1OWI2Mlx1OWI2M1x1OWI2NFx1OWI2NVx1''@;'; put 'put ''OWI2Nlx1OWI2N1x1OWI2OFx1OWI2OVx1OWI2YVx1OWI2Ylx1OWI2Y1x1OWI2ZFx1OWI2ZVx1OWI2Zlx1OWI3MFx1OWI3MVx1OWI3Mlx1OWI3M1x1OWI3NFx1OWI3NVx1OWI3Nlx1OWI3N1x1OWI3OFx1OWI3OVx1OWI3YVx1OWI3Ylx1N2MxZlx1N2MyYVx1N2MyNlx1N2MzOFx1N2M0MVx1N2M0''@;'; put 'put ''MFx1ODFmZVx1ODIwMVx1ODIwMlx1ODIwNFx1ODFlY1x1ODg0NFx1ODIyMVx1ODIyMlx1ODIyM1x1ODIyZFx1ODIyZlx1ODIyOFx1ODIyYlx1ODIzOFx1ODIzYlx1ODIzM1x1ODIzNFx1ODIzZVx1ODI0NFx1ODI0OVx1ODI0Ylx1ODI0Zlx1ODI1YVx1ODI1Zlx1ODI2OFx1ODg3ZVx1ODg4NVx1''@;'; put 'put ''ODg4OFx1ODhkOFx1ODhkZlx1ODk1ZVx1N2Y5ZFx1N2Y5Zlx1N2ZhN1x1N2ZhZlx1N2ZiMFx1N2ZiMlx1N2M3Y1x1NjU0OVx1N2M5MVx1N2M5ZFx1N2M5Y1x1N2M5ZVx1N2NhMlx1N2NiMlx1N2NiY1x1N2NiZFx1N2NjMVx1N2NjN1x1N2NjY1x1N2NjZFx1N2NjOFx1N2NjNVx1N2NkN1x1N2Nl''@;'; put 'put ''OFx1ODI2ZVx1NjZhOFx1N2ZiZlx1N2ZjZVx1N2ZkNVx1N2ZlNVx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZlZVx1N2ZmM1x1N2NmOFx1N2Q3N1x1N2RhNlx1N2RhZVx1N2U0N1x1N2U5Ylx1OWViOFx1OWViNFx1OGQ3M1x1OGQ4NFx1OGQ5NFx1OGQ5MVx1OGRiMVx1OGQ2N1x1OGQ2ZFx1OGM0N1x1''@;'; put 'put ''OGM0OVx1OTE0YVx1OTE1MFx1OTE0ZVx1OTE0Zlx1OTE2NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDRdW0VdXT02MjQ2NCtFLExbNjI0NjQrRV09QlsyNDRdW0VdKTtmb3IoQlsyNDVd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTliN2NcdTliN2RcdTliN2VcdTliN2ZcdTliODBcdTliODFcdTliODJcdTliODNcdTliODRcdTliODVcdTliODZcdTliODdcdTliODhcdTliODlcdTliOGFcdTliOGJcdTliOGNcdTliOGRc''@;'; put 'put ''dTliOGVcdTliOGZcdTliOTBcdTliOTFcdTliOTJcdTliOTNcdTliOTRcdTliOTVcdTliOTZcdTliOTdcdTliOThcdTliOTlcdTliOWFcdTliOWJcdTliOWNcdTliOWRcdTliOWVcdTliOWZcdTliYTBcdTliYTFcdTliYTJcdTliYTNcdTliYTRcdTliYTVcdTliYTZcdTliYTdcdTliYThcdTli''@;'; put 'put ''YTlcdTliYWFcdTliYWJcdTliYWNcdTliYWRcdTliYWVcdTliYWZcdTliYjBcdTliYjFcdTliYjJcdTliYjNcdTliYjRcdTliYjVcdTliYjZcdTliYjdcdTliYjhcdTliYjlcdTliYmFcdWZmZmRcdTliYmJcdTliYmNcdTliYmRcdTliYmVcdTliYmZcdTliYzBcdTliYzFcdTliYzJcdTliYzNc''@;'; put 'put ''dTliYzRcdTliYzVcdTliYzZcdTliYzdcdTliYzhcdTliYzlcdTliY2FcdTliY2JcdTliY2NcdTliY2RcdTliY2VcdTliY2ZcdTliZDBcdTliZDFcdTliZDJcdTliZDNcdTliZDRcdTliZDVcdTliZDZcdTliZDdcdTliZDhcdTliZDlcdTliZGFcdTliZGJcdTkxNjJcdTkxNjFcdTkxNzBcdTkx''@;'; put 'put ''NjlcdTkxNmZcdTkxN2RcdTkxN2VcdTkxNzJcdTkxNzRcdTkxNzlcdTkxOGNcdTkxODVcdTkxOTBcdTkxOGRcdTkxOTFcdTkxYTJcdTkxYTNcdTkxYWFcdTkxYWRcdTkxYWVcdTkxYWZcdTkxYjVcdTkxYjRcdTkxYmFcdThjNTVcdTllN2VcdThkYjhcdThkZWJcdThlMDVcdThlNTlcdThlNjlc''@;'; put 'put ''dThkYjVcdThkYmZcdThkYmNcdThkYmFcdThkYzRcdThkZDZcdThkZDdcdThkZGFcdThkZGVcdThkY2VcdThkY2ZcdThkZGJcdThkYzZcdThkZWNcdThkZjdcdThkZjhcdThkZTNcdThkZjlcdThkZmJcdThkZTRcdThlMDlcdThkZmRcdThlMTRcdThlMWRcdThlMWZcdThlMmNcdThlMmVcdThl''@;'; put 'put ''MjNcdThlMmZcdThlM2FcdThlNDBcdThlMzlcdThlMzVcdThlM2RcdThlMzFcdThlNDlcdThlNDFcdThlNDJcdThlNTFcdThlNTJcdThlNGFcdThlNzBcdThlNzZcdThlN2NcdThlNmZcdThlNzRcdThlODVcdThlOGZcdThlOTRcdThlOTBcdThlOWNcdThlOWVcdThjNzhcdThjODJcdThjOGFc''@;'; put 'put ''dThjODVcdThjOThcdThjOTRcdTY1OWJcdTg5ZDZcdTg5ZGVcdTg5ZGFcdTg5ZGNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0NV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ1XVtFXV09NjI3MjArRSxMWzYyNzIwK0VdPUJbMjQ1XVtF''@;'; put 'put ''XSk7Zm9yKEJbMjQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YmRjXHU5YmRkXHU5YmRlXHU5YmRmXHU5YmUwXHU5YmUxXHU5YmUyXHU5YmUzXHU5YmU0XHU5YmU1XHU5YmU2XHU5YmU3XHU5YmU4XHU5YmU5XHU5YmVhXHU5YmVi''@;'; put 'put ''XHU5YmVjXHU5YmVkXHU5YmVlXHU5YmVmXHU5YmYwXHU5YmYxXHU5YmYyXHU5YmYzXHU5YmY0XHU5YmY1XHU5YmY2XHU5YmY3XHU5YmY4XHU5YmY5XHU5YmZhXHU5YmZiXHU5YmZjXHU5YmZkXHU5YmZlXHU5YmZmXHU5YzAwXHU5YzAxXHU5YzAyXHU5YzAzXHU5YzA0XHU5YzA1XHU5YzA2XHU5''@;'; put 'put ''YzA3XHU5YzA4XHU5YzA5XHU5YzBhXHU5YzBiXHU5YzBjXHU5YzBkXHU5YzBlXHU5YzBmXHU5YzEwXHU5YzExXHU5YzEyXHU5YzEzXHU5YzE0XHU5YzE1XHU5YzE2XHU5YzE3XHU5YzE4XHU5YzE5XHU5YzFhXHVmZmZkXHU5YzFiXHU5YzFjXHU5YzFkXHU5YzFlXHU5YzFmXHU5YzIwXHU5YzIx''@;'; put 'put ''XHU5YzIyXHU5YzIzXHU5YzI0XHU5YzI1XHU5YzI2XHU5YzI3XHU5YzI4XHU5YzI5XHU5YzJhXHU5YzJiXHU5YzJjXHU5YzJkXHU5YzJlXHU5YzJmXHU5YzMwXHU5YzMxXHU5YzMyXHU5YzMzXHU5YzM0XHU5YzM1XHU5YzM2XHU5YzM3XHU5YzM4XHU5YzM5XHU5YzNhXHU5YzNiXHU4OWU1XHU4''@;'; put 'put ''OWViXHU4OWVmXHU4YTNlXHU4YjI2XHU5NzUzXHU5NmU5XHU5NmYzXHU5NmVmXHU5NzA2XHU5NzAxXHU5NzA4XHU5NzBmXHU5NzBlXHU5NzJhXHU5NzJkXHU5NzMwXHU5NzNlXHU5ZjgwXHU5ZjgzXHU5Zjg1XHU5Zjg2XHU5Zjg3XHU5Zjg4XHU5Zjg5XHU5ZjhhXHU5ZjhjXHU5ZWZlXHU5ZjBi''@;'; put 'put ''XHU5ZjBkXHU5NmI5XHU5NmJjXHU5NmJkXHU5NmNlXHU5NmQyXHU3N2JmXHU5NmUwXHU5MjhlXHU5MmFlXHU5MmM4XHU5MzNlXHU5MzZhXHU5M2NhXHU5MzhmXHU5NDNlXHU5NDZiXHU5YzdmXHU5YzgyXHU5Yzg1XHU5Yzg2XHU5Yzg3XHU5Yzg4XHU3YTIzXHU5YzhiXHU5YzhlXHU5YzkwXHU5''@;'; put 'put ''YzkxXHU5YzkyXHU5Yzk0XHU5Yzk1XHU5YzlhXHU5YzliXHU5YzllXHU5YzlmXHU5Y2EwXHU5Y2ExXHU5Y2EyXHU5Y2EzXHU5Y2E1XHU5Y2E2XHU5Y2E3XHU5Y2E4XHU5Y2E5XHU5Y2FiXHU5Y2FkXHU5Y2FlXHU5Y2IwXHU5Y2IxXHU5Y2IyXHU5Y2IzXHU5Y2I0XHU5Y2I1XHU5Y2I2XHU5Y2I3''@;'; put 'put ''XHU5Y2JhXHU5Y2JiXHU5Y2JjXHU5Y2JkXHU5Y2M0XHU5Y2M1XHU5Y2M2XHU5Y2M3XHU5Y2NhXHU5Y2NiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0Nl1bRV1dPTYyOTc2K0UsTFs2Mjk3''@;'; put 'put ''NitFXT1CWzI0Nl1bRV0pO2ZvcihCWzI0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWMzY1x1OWMzZFx1OWMzZVx1OWMzZlx1OWM0MFx1OWM0MVx1OWM0Mlx1OWM0M1x1OWM0NFx1OWM0NVx1OWM0Nlx1OWM0N1x1OWM0OFx1OWM0''@;'; put 'put ''OVx1OWM0YVx1OWM0Ylx1OWM0Y1x1OWM0ZFx1OWM0ZVx1OWM0Zlx1OWM1MFx1OWM1MVx1OWM1Mlx1OWM1M1x1OWM1NFx1OWM1NVx1OWM1Nlx1OWM1N1x1OWM1OFx1OWM1OVx1OWM1YVx1OWM1Ylx1OWM1Y1x1OWM1ZFx1OWM1ZVx1OWM1Zlx1OWM2MFx1OWM2MVx1OWM2Mlx1OWM2M1x1OWM2NFx1''@;'; put 'put ''OWM2NVx1OWM2Nlx1OWM2N1x1OWM2OFx1OWM2OVx1OWM2YVx1OWM2Ylx1OWM2Y1x1OWM2ZFx1OWM2ZVx1OWM2Zlx1OWM3MFx1OWM3MVx1OWM3Mlx1OWM3M1x1OWM3NFx1OWM3NVx1OWM3Nlx1OWM3N1x1OWM3OFx1OWM3OVx1OWM3YVx1ZmZmZFx1OWM3Ylx1OWM3ZFx1OWM3ZVx1OWM4MFx1OWM4''@;'; put 'put ''M1x1OWM4NFx1OWM4OVx1OWM4YVx1OWM4Y1x1OWM4Zlx1OWM5M1x1OWM5Nlx1OWM5N1x1OWM5OFx1OWM5OVx1OWM5ZFx1OWNhYVx1OWNhY1x1OWNhZlx1OWNiOVx1OWNiZVx1OWNiZlx1OWNjMFx1OWNjMVx1OWNjMlx1OWNjOFx1OWNjOVx1OWNkMVx1OWNkMlx1OWNkYVx1OWNkYlx1OWNlMFx1''@;'; put 'put ''OWNlMVx1OWNjY1x1OWNjZFx1OWNjZVx1OWNjZlx1OWNkMFx1OWNkM1x1OWNkNFx1OWNkNVx1OWNkN1x1OWNkOFx1OWNkOVx1OWNkY1x1OWNkZFx1OWNkZlx1OWNlMlx1OTc3Y1x1OTc4NVx1OTc5MVx1OTc5Mlx1OTc5NFx1OTdhZlx1OTdhYlx1OTdhM1x1OTdiMlx1OTdiNFx1OWFiMVx1OWFi''@;'; put 'put ''MFx1OWFiN1x1OWU1OFx1OWFiNlx1OWFiYVx1OWFiY1x1OWFjMVx1OWFjMFx1OWFjNVx1OWFjMlx1OWFjYlx1OWFjY1x1OWFkMVx1OWI0NVx1OWI0M1x1OWI0N1x1OWI0OVx1OWI0OFx1OWI0ZFx1OWI1MVx1OThlOFx1OTkwZFx1OTkyZVx1OTk1NVx1OTk1NFx1OWFkZlx1OWFlMVx1OWFlNlx1''@;'; put 'put ''OWFlZlx1OWFlYlx1OWFmYlx1OWFlZFx1OWFmOVx1OWIwOFx1OWIwZlx1OWIxM1x1OWIxZlx1OWIyM1x1OWViZFx1OWViZVx1N2UzYlx1OWU4Mlx1OWU4N1x1OWU4OFx1OWU4Ylx1OWU5Mlx1OTNkNlx1OWU5ZFx1OWU5Zlx1OWVkYlx1OWVkY1x1OWVkZFx1OWVlMFx1OWVkZlx1OWVlMlx1OWVl''@;'; put 'put ''OVx1OWVlN1x1OWVlNVx1OWVlYVx1OWVlZlx1OWYyMlx1OWYyY1x1OWYyZlx1OWYzOVx1OWYzN1x1OWYzZFx1OWYzZVx1OWY0NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDddW0VdXT02''@;'; put 'put ''MzIzMitFLExbNjMyMzIrRV09QlsyNDddW0VdKTtmb3IoQlsyNDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljZTNcdTljZTRcdTljZTVcdTljZTZcdTljZTdcdTljZThcdTljZTlcdTljZWFcdTljZWJcdTljZWNcdTljZWRcdTlj''@;'; put 'put ''ZWVcdTljZWZcdTljZjBcdTljZjFcdTljZjJcdTljZjNcdTljZjRcdTljZjVcdTljZjZcdTljZjdcdTljZjhcdTljZjlcdTljZmFcdTljZmJcdTljZmNcdTljZmRcdTljZmVcdTljZmZcdTlkMDBcdTlkMDFcdTlkMDJcdTlkMDNcdTlkMDRcdTlkMDVcdTlkMDZcdTlkMDdcdTlkMDhcdTlkMDlc''@;'; put 'put ''dTlkMGFcdTlkMGJcdTlkMGNcdTlkMGRcdTlkMGVcdTlkMGZcdTlkMTBcdTlkMTFcdTlkMTJcdTlkMTNcdTlkMTRcdTlkMTVcdTlkMTZcdTlkMTdcdTlkMThcdTlkMTlcdTlkMWFcdTlkMWJcdTlkMWNcdTlkMWRcdTlkMWVcdTlkMWZcdTlkMjBcdTlkMjFcdWZmZmRcdTlkMjJcdTlkMjNcdTlk''@;'; put 'put ''MjRcdTlkMjVcdTlkMjZcdTlkMjdcdTlkMjhcdTlkMjlcdTlkMmFcdTlkMmJcdTlkMmNcdTlkMmRcdTlkMmVcdTlkMmZcdTlkMzBcdTlkMzFcdTlkMzJcdTlkMzNcdTlkMzRcdTlkMzVcdTlkMzZcdTlkMzdcdTlkMzhcdTlkMzlcdTlkM2FcdTlkM2JcdTlkM2NcdTlkM2RcdTlkM2VcdTlkM2Zc''@;'; put 'put ''dTlkNDBcdTlkNDFcdTlkNDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdl''@;'; put 'put ''W0JbMjQ4XVtFXV09NjM0ODgrRSxMWzYzNDg4K0VdPUJbMjQ4XVtFXSk7Zm9yKEJbMjQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDQzXHU5ZDQ0XHU5ZDQ1XHU5ZDQ2XHU5ZDQ3XHU5ZDQ4XHU5ZDQ5XHU5ZDRhXHU5ZDRiXHU5''@;'; put 'put ''ZDRjXHU5ZDRkXHU5ZDRlXHU5ZDRmXHU5ZDUwXHU5ZDUxXHU5ZDUyXHU5ZDUzXHU5ZDU0XHU5ZDU1XHU5ZDU2XHU5ZDU3XHU5ZDU4XHU5ZDU5XHU5ZDVhXHU5ZDViXHU5ZDVjXHU5ZDVkXHU5ZDVlXHU5ZDVmXHU5ZDYwXHU5ZDYxXHU5ZDYyXHU5ZDYzXHU5ZDY0XHU5ZDY1XHU5ZDY2XHU5ZDY3''@;'; put 'put ''XHU5ZDY4XHU5ZDY5XHU5ZDZhXHU5ZDZiXHU5ZDZjXHU5ZDZkXHU5ZDZlXHU5ZDZmXHU5ZDcwXHU5ZDcxXHU5ZDcyXHU5ZDczXHU5ZDc0XHU5ZDc1XHU5ZDc2XHU5ZDc3XHU5ZDc4XHU5ZDc5XHU5ZDdhXHU5ZDdiXHU5ZDdjXHU5ZDdkXHU5ZDdlXHU5ZDdmXHU5ZDgwXHU5ZDgxXHVmZmZkXHU5''@;'; put 'put ''ZDgyXHU5ZDgzXHU5ZDg0XHU5ZDg1XHU5ZDg2XHU5ZDg3XHU5ZDg4XHU5ZDg5XHU5ZDhhXHU5ZDhiXHU5ZDhjXHU5ZDhkXHU5ZDhlXHU5ZDhmXHU5ZDkwXHU5ZDkxXHU5ZDkyXHU5ZDkzXHU5ZDk0XHU5ZDk1XHU5ZDk2XHU5ZDk3XHU5ZDk4XHU5ZDk5XHU5ZDlhXHU5ZDliXHU5ZDljXHU5ZDlk''@;'; put 'put ''XHU5ZDllXHU5ZDlmXHU5ZGEwXHU5ZGExXHU5ZGEyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDldW0VdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihnZVtCWzI0OV1bRV1dPTYzNzQ0K0UsTFs2Mzc0NCtFXT1CWzI0OV1bRV0pO2ZvcihCWzI1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWRhM1x1OWRhNFx1OWRhNVx1OWRhNlx1OWRhN1x1OWRhOFx1OWRhOVx1''@;'; put 'put ''OWRhYVx1OWRhYlx1OWRhY1x1OWRhZFx1OWRhZVx1OWRhZlx1OWRiMFx1OWRiMVx1OWRiMlx1OWRiM1x1OWRiNFx1OWRiNVx1OWRiNlx1OWRiN1x1OWRiOFx1OWRiOVx1OWRiYVx1OWRiYlx1OWRiY1x1OWRiZFx1OWRiZVx1OWRiZlx1OWRjMFx1OWRjMVx1OWRjMlx1OWRjM1x1OWRjNFx1OWRj''@;'; put 'put ''NVx1OWRjNlx1OWRjN1x1OWRjOFx1OWRjOVx1OWRjYVx1OWRjYlx1OWRjY1x1OWRjZFx1OWRjZVx1OWRjZlx1OWRkMFx1OWRkMVx1OWRkMlx1OWRkM1x1OWRkNFx1OWRkNVx1OWRkNlx1OWRkN1x1OWRkOFx1OWRkOVx1OWRkYVx1OWRkYlx1OWRkY1x1OWRkZFx1OWRkZVx1OWRkZlx1OWRlMFx1''@;'; put 'put ''OWRlMVx1ZmZmZFx1OWRlMlx1OWRlM1x1OWRlNFx1OWRlNVx1OWRlNlx1OWRlN1x1OWRlOFx1OWRlOVx1OWRlYVx1OWRlYlx1OWRlY1x1OWRlZFx1OWRlZVx1OWRlZlx1OWRmMFx1OWRmMVx1OWRmMlx1OWRmM1x1OWRmNFx1OWRmNVx1OWRmNlx1OWRmN1x1OWRmOFx1OWRmOVx1OWRmYVx1OWRm''@;'; put 'put ''Ylx1OWRmY1x1OWRmZFx1OWRmZVx1OWRmZlx1OWUwMFx1OWUwMVx1OWUwMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJb''@;'; put 'put ''MjUwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNTBdW0VdXT02NGUzK0UsTFs2NGUzK0VdPUJbMjUwXVtFXSk7Zm9yKEJbMjUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZTAzXHU5ZTA0XHU5ZTA1XHU5ZTA2XHU5ZTA3XHU5''@;'; put 'put ''ZTA4XHU5ZTA5XHU5ZTBhXHU5ZTBiXHU5ZTBjXHU5ZTBkXHU5ZTBlXHU5ZTBmXHU5ZTEwXHU5ZTExXHU5ZTEyXHU5ZTEzXHU5ZTE0XHU5ZTE1XHU5ZTE2XHU5ZTE3XHU5ZTE4XHU5ZTE5XHU5ZTFhXHU5ZTFiXHU5ZTFjXHU5ZTFkXHU5ZTFlXHU5ZTI0XHU5ZTI3XHU5ZTJlXHU5ZTMwXHU5ZTM0''@;'; put 'put ''XHU5ZTNiXHU5ZTNjXHU5ZTQwXHU5ZTRkXHU5ZTUwXHU5ZTUyXHU5ZTUzXHU5ZTU0XHU5ZTU2XHU5ZTU5XHU5ZTVkXHU5ZTVmXHU5ZTYwXHU5ZTYxXHU5ZTYyXHU5ZTY1XHU5ZTZlXHU5ZTZmXHU5ZTcyXHU5ZTc0XHU5ZTc1XHU5ZTc2XHU5ZTc3XHU5ZTc4XHU5ZTc5XHU5ZTdhXHU5ZTdiXHU5''@;'; put 'put ''ZTdjXHU5ZTdkXHU5ZTgwXHVmZmZkXHU5ZTgxXHU5ZTgzXHU5ZTg0XHU5ZTg1XHU5ZTg2XHU5ZTg5XHU5ZThhXHU5ZThjXHU5ZThkXHU5ZThlXHU5ZThmXHU5ZTkwXHU5ZTkxXHU5ZTk0XHU5ZTk1XHU5ZTk2XHU5ZTk3XHU5ZTk4XHU5ZTk5XHU5ZTlhXHU5ZTliXHU5ZTljXHU5ZTllXHU5ZWEw''@;'; put 'put ''XHU5ZWExXHU5ZWEyXHU5ZWEzXHU5ZWE0XHU5ZWE1XHU5ZWE3XHU5ZWE4XHU5ZWE5XHU5ZWFhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjUxXS5sZW5ndGg7KytF''@;'; put 'put ''KTY1NTMzIT09QlsyNTFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI1MV1bRV1dPTY0MjU2K0UsTFs2NDI1NitFXT1CWzI1MV1bRV0pO2ZvcihCWzI1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWVhYlx1OWVhY1x1OWVhZFx1''@;'; put 'put ''OWVhZVx1OWVhZlx1OWViMFx1OWViMVx1OWViMlx1OWViM1x1OWViNVx1OWViNlx1OWViN1x1OWViOVx1OWViYVx1OWViY1x1OWViZlx1OWVjMFx1OWVjMVx1OWVjMlx1OWVjM1x1OWVjNVx1OWVjNlx1OWVjN1x1OWVjOFx1OWVjYVx1OWVjYlx1OWVjY1x1OWVkMFx1OWVkMlx1OWVkM1x1OWVk''@;'; put 'put ''NVx1OWVkNlx1OWVkN1x1OWVkOVx1OWVkYVx1OWVkZVx1OWVlMVx1OWVlM1x1OWVlNFx1OWVlNlx1OWVlOFx1OWVlYlx1OWVlY1x1OWVlZFx1OWVlZVx1OWVmMFx1OWVmMVx1OWVmMlx1OWVmM1x1OWVmNFx1OWVmNVx1OWVmNlx1OWVmN1x1OWVmOFx1OWVmYVx1OWVmZFx1OWVmZlx1OWYwMFx1''@;'; put 'put ''OWYwMVx1OWYwMlx1OWYwM1x1OWYwNFx1OWYwNVx1ZmZmZFx1OWYwNlx1OWYwN1x1OWYwOFx1OWYwOVx1OWYwYVx1OWYwY1x1OWYwZlx1OWYxMVx1OWYxMlx1OWYxNFx1OWYxNVx1OWYxNlx1OWYxOFx1OWYxYVx1OWYxYlx1OWYxY1x1OWYxZFx1OWYxZVx1OWYxZlx1OWYyMVx1OWYyM1x1OWYy''@;'; put 'put ''NFx1OWYyNVx1OWYyNlx1OWYyN1x1OWYyOFx1OWYyOVx1OWYyYVx1OWYyYlx1OWYyZFx1OWYyZVx1OWYzMFx1OWYzMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1''@;'; put 'put ''Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNTJdW0VdXT02NDUxMitFLExbNjQ1MTIrRV09QlsyNTJdW0VdKTtmb3IoQlsyNTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlmMzJc''@;'; put 'put ''dTlmMzNcdTlmMzRcdTlmMzVcdTlmMzZcdTlmMzhcdTlmM2FcdTlmM2NcdTlmM2ZcdTlmNDBcdTlmNDFcdTlmNDJcdTlmNDNcdTlmNDVcdTlmNDZcdTlmNDdcdTlmNDhcdTlmNDlcdTlmNGFcdTlmNGJcdTlmNGNcdTlmNGRcdTlmNGVcdTlmNGZcdTlmNTJcdTlmNTNcdTlmNTRcdTlmNTVcdTlm''@;'; put 'put ''NTZcdTlmNTdcdTlmNThcdTlmNTlcdTlmNWFcdTlmNWJcdTlmNWNcdTlmNWRcdTlmNWVcdTlmNWZcdTlmNjBcdTlmNjFcdTlmNjJcdTlmNjNcdTlmNjRcdTlmNjVcdTlmNjZcdTlmNjdcdTlmNjhcdTlmNjlcdTlmNmFcdTlmNmJcdTlmNmNcdTlmNmRcdTlmNmVcdTlmNmZcdTlmNzBcdTlmNzFc''@;'; put 'put ''dTlmNzJcdTlmNzNcdTlmNzRcdTlmNzVcdTlmNzZcdTlmNzdcdTlmNzhcdWZmZmRcdTlmNzlcdTlmN2FcdTlmN2JcdTlmN2NcdTlmN2RcdTlmN2VcdTlmODFcdTlmODJcdTlmOGRcdTlmOGVcdTlmOGZcdTlmOTBcdTlmOTFcdTlmOTJcdTlmOTNcdTlmOTRcdTlmOTVcdTlmOTZcdTlmOTdcdTlm''@;'; put 'put ''OThcdTlmOWNcdTlmOWRcdTlmOWVcdTlmYTFcdTlmYTJcdTlmYTNcdTlmYTRcdTlmYTVcdWY5MmNcdWY5NzlcdWY5OTVcdWY5ZTdcdWY5ZjFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxFPTA7RSE9QlsyNTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1M11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjUzXVtFXV09NjQ3NjgrRSxMWzY0NzY4K0VdPUJbMjUzXVtFXSk7Zm9yKEJbMjU0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmYTBjXHVmYTBkXHVmYTBlXHVmYTBmXHVmYTExXHVmYTEzXHVmYTE0XHVmYTE4XHVmYTFmXHVmYTIwXHVmYTIxXHVmYTIzXHVmYTI0XHVmYTI3XHVmYTI4XHVmYTI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjU0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNTRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI1NF1bRV1dPTY1MDI0K0UsTFs2NTAyNCtFXT1CWzI1NF1bRV0pO3JldHVybntlbmM6Z2UsZGVjOkx9fSgpLEplWzk0OV09ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''RSxMPVtdLGdlPXt9LEI9W107Zm9yKEJbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1''@;'; put 'put ''Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMF1bRV1dPTArRSxMWzArRV09QlswXVtFXSk7Zm9yKEJbMTI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhYzAyXHVhYzAzXHVhYzA1XHVhYzA2XHVhYzBiXHVhYzBjXHVhYzBkXHVhYzBlXHVhYzBmXHVhYzE4XHVhYzFlXHVhYzFmXHVhYzIxXHVhYzIyXHVhYzIzXHVhYzI1XHVhYzI2XHVhYzI3XHVhYzI4XHVhYzI5XHVhYzJhXHVhYzJiXHVhYzJl''@;'; put 'put ''XHVhYzMyXHVhYzMzXHVhYzM0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhYzM1XHVhYzM2XHVhYzM3XHVhYzNhXHVhYzNiXHVhYzNkXHVhYzNlXHVhYzNmXHVhYzQxXHVhYzQyXHVhYzQzXHVhYzQ0XHVhYzQ1XHVhYzQ2XHVhYzQ3XHVhYzQ4XHVhYzQ5XHVhYzRhXHVh''@;'; put 'put ''YzRjXHVhYzRlXHVhYzRmXHVhYzUwXHVhYzUxXHVhYzUyXHVhYzUzXHVhYzU1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhYzU2XHVhYzU3XHVhYzU5XHVhYzVhXHVhYzViXHVhYzVkXHVhYzVlXHVhYzVmXHVhYzYwXHVhYzYxXHVhYzYyXHVhYzYzXHVhYzY0XHVhYzY1''@;'; put 'put ''XHVhYzY2XHVhYzY3XHVhYzY4XHVhYzY5XHVhYzZhXHVhYzZiXHVhYzZjXHVhYzZkXHVhYzZlXHVhYzZmXHVhYzcyXHVhYzczXHVhYzc1XHVhYzc2XHVhYzc5XHVhYzdiXHVhYzdjXHVhYzdkXHVhYzdlXHVhYzdmXHVhYzgyXHVhYzg3XHVhYzg4XHVhYzhkXHVhYzhlXHVhYzhmXHVhYzkxXHVh''@;'; put 'put ''YzkyXHVhYzkzXHVhYzk1XHVhYzk2XHVhYzk3XHVhYzk4XHVhYzk5XHVhYzlhXHVhYzliXHVhYzllXHVhY2EyXHVhY2EzXHVhY2E0XHVhY2E1XHVhY2E2XHVhY2E3XHVhY2FiXHVhY2FkXHVhY2FlXHVhY2IxXHVhY2IyXHVhY2IzXHVhY2I0XHVhY2I1XHVhY2I2XHVhY2I3XHVhY2JhXHVhY2Jl''@;'; put 'put ''XHVhY2JmXHVhY2MwXHVhY2MyXHVhY2MzXHVhY2M1XHVhY2M2XHVhY2M3XHVhY2M5XHVhY2NhXHVhY2NiXHVhY2NkXHVhY2NlXHVhY2NmXHVhY2QwXHVhY2QxXHVhY2QyXHVhY2QzXHVhY2Q0XHVhY2Q2XHVhY2Q4XHVhY2Q5XHVhY2RhXHVhY2RiXHVhY2RjXHVhY2RkXHVhY2RlXHVhY2RmXHVh''@;'; put 'put ''Y2UyXHVhY2UzXHVhY2U1XHVhY2U2XHVhY2U5XHVhY2ViXHVhY2VkXHVhY2VlXHVhY2YyXHVhY2Y0XHVhY2Y3XHVhY2Y4XHVhY2Y5XHVhY2ZhXHVhY2ZiXHVhY2ZlXHVhY2ZmXHVhZDAxXHVhZDAyXHVhZDAzXHVhZDA1XHVhZDA3XHVhZDA4XHVhZDA5XHVhZDBhXHVhZDBiXHVhZDBlXHVhZDEw''@;'; put 'put ''XHVhZDEyXHVhZDEzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTI5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMjldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEyOV1bRV1dPTMzMDI0K0UsTFszMzAyNCtFXT1CWzEyOV1bRV0pO2ZvcihCWzEzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWQxNFx1YWQxNVx1YWQxNlx1YWQxN1x1YWQxOVx1YWQxYVx1YWQxYlx1YWQxZFx1YWQxZVx1YWQxZlx1YWQyMVx1YWQyMlx1YWQyM1x1YWQyNFx1YWQyNVx1YWQyNlx1YWQyN1x1YWQyOFx1YWQyYVx1YWQyYlx1YWQy''@;'; put 'put ''ZVx1YWQyZlx1YWQzMFx1YWQzMVx1YWQzMlx1YWQzM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWQzNlx1YWQzN1x1YWQzOVx1YWQzYVx1YWQzYlx1YWQzZFx1YWQzZVx1YWQzZlx1YWQ0MFx1YWQ0MVx1YWQ0Mlx1YWQ0M1x1YWQ0Nlx1YWQ0OFx1YWQ0YVx1YWQ0Ylx1''@;'; put 'put ''YWQ0Y1x1YWQ0ZFx1YWQ0ZVx1YWQ0Zlx1YWQ1MVx1YWQ1Mlx1YWQ1M1x1YWQ1NVx1YWQ1Nlx1YWQ1N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWQ1OVx1YWQ1YVx1YWQ1Ylx1YWQ1Y1x1YWQ1ZFx1YWQ1ZVx1YWQ1Zlx1YWQ2MFx1YWQ2Mlx1YWQ2NFx1YWQ2NVx1YWQ2''@;'; put 'put ''Nlx1YWQ2N1x1YWQ2OFx1YWQ2OVx1YWQ2YVx1YWQ2Ylx1YWQ2ZVx1YWQ2Zlx1YWQ3MVx1YWQ3Mlx1YWQ3N1x1YWQ3OFx1YWQ3OVx1YWQ3YVx1YWQ3ZVx1YWQ4MFx1YWQ4M1x1YWQ4NFx1YWQ4NVx1YWQ4Nlx1YWQ4N1x1YWQ4YVx1YWQ4Ylx1YWQ4ZFx1YWQ4ZVx1YWQ4Zlx1YWQ5MVx1YWQ5Mlx1''@;'; put 'put ''YWQ5M1x1YWQ5NFx1YWQ5NVx1YWQ5Nlx1YWQ5N1x1YWQ5OFx1YWQ5OVx1YWQ5YVx1YWQ5Ylx1YWQ5ZVx1YWQ5Zlx1YWRhMFx1YWRhMVx1YWRhMlx1YWRhM1x1YWRhNVx1YWRhNlx1YWRhN1x1YWRhOFx1YWRhOVx1YWRhYVx1YWRhYlx1YWRhY1x1YWRhZFx1YWRhZVx1YWRhZlx1YWRiMFx1YWRi''@;'; put 'put ''MVx1YWRiMlx1YWRiM1x1YWRiNFx1YWRiNVx1YWRiNlx1YWRiOFx1YWRiOVx1YWRiYVx1YWRiYlx1YWRiY1x1YWRiZFx1YWRiZVx1YWRiZlx1YWRjMlx1YWRjM1x1YWRjNVx1YWRjNlx1YWRjN1x1YWRjOVx1YWRjYVx1YWRjYlx1YWRjY1x1YWRjZFx1YWRjZVx1YWRjZlx1YWRkMlx1YWRkNFx1''@;'; put 'put ''YWRkNVx1YWRkNlx1YWRkN1x1YWRkOFx1YWRkOVx1YWRkYVx1YWRkYlx1YWRkZFx1YWRkZVx1YWRkZlx1YWRlMVx1YWRlMlx1YWRlM1x1YWRlNVx1YWRlNlx1YWRlN1x1YWRlOFx1YWRlOVx1YWRlYVx1YWRlYlx1YWRlY1x1YWRlZFx1YWRlZVx1YWRlZlx1YWRmMFx1YWRmMVx1YWRmMlx1YWRm''@;'; put 'put ''M1x1YWRmNFx1YWRmNVx1YWRmNlx1YWRmN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzBdW0VdXT0zMzI4MCtFLExbMzMyODArRV09QlsxMzBdW0VdKTtmb3IoQlsxMzFdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkZmFcdWFkZmJcdWFkZmRcdWFkZmVcdWFlMDJcdWFlMDNcdWFlMDRcdWFlMDVcdWFlMDZcdWFlMDdcdWFlMGFcdWFlMGNcdWFlMGVcdWFlMGZcdWFlMTBcdWFlMTFcdWFlMTJcdWFlMTNcdWFl''@;'; put 'put ''MTVcdWFlMTZcdWFlMTdcdWFlMThcdWFlMTlcdWFlMWFcdWFlMWJcdWFlMWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFlMWRcdWFlMWVcdWFlMWZcdWFlMjBcdWFlMjFcdWFlMjJcdWFlMjNcdWFlMjRcdWFlMjVcdWFlMjZcdWFlMjdcdWFlMjhcdWFlMjlcdWFlMmFc''@;'; put 'put ''dWFlMmJcdWFlMmNcdWFlMmRcdWFlMmVcdWFlMmZcdWFlMzJcdWFlMzNcdWFlMzVcdWFlMzZcdWFlMzlcdWFlM2JcdWFlM2NcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFlM2RcdWFlM2VcdWFlM2ZcdWFlNDJcdWFlNDRcdWFlNDdcdWFlNDhcdWFlNDlcdWFlNGJcdWFl''@;'; put 'put ''NGZcdWFlNTFcdWFlNTJcdWFlNTNcdWFlNTVcdWFlNTdcdWFlNThcdWFlNTlcdWFlNWFcdWFlNWJcdWFlNWVcdWFlNjJcdWFlNjNcdWFlNjRcdWFlNjZcdWFlNjdcdWFlNmFcdWFlNmJcdWFlNmRcdWFlNmVcdWFlNmZcdWFlNzFcdWFlNzJcdWFlNzNcdWFlNzRcdWFlNzVcdWFlNzZcdWFlNzdc''@;'; put 'put ''dWFlN2FcdWFlN2VcdWFlN2ZcdWFlODBcdWFlODFcdWFlODJcdWFlODNcdWFlODZcdWFlODdcdWFlODhcdWFlODlcdWFlOGFcdWFlOGJcdWFlOGRcdWFlOGVcdWFlOGZcdWFlOTBcdWFlOTFcdWFlOTJcdWFlOTNcdWFlOTRcdWFlOTVcdWFlOTZcdWFlOTdcdWFlOThcdWFlOTlcdWFlOWFcdWFl''@;'; put 'put ''OWJcdWFlOWNcdWFlOWRcdWFlOWVcdWFlOWZcdWFlYTBcdWFlYTFcdWFlYTJcdWFlYTNcdWFlYTRcdWFlYTVcdWFlYTZcdWFlYTdcdWFlYThcdWFlYTlcdWFlYWFcdWFlYWJcdWFlYWNcdWFlYWRcdWFlYWVcdWFlYWZcdWFlYjBcdWFlYjFcdWFlYjJcdWFlYjNcdWFlYjRcdWFlYjVcdWFlYjZc''@;'; put 'put ''dWFlYjdcdWFlYjhcdWFlYjlcdWFlYmFcdWFlYmJcdWFlYmZcdWFlYzFcdWFlYzJcdWFlYzNcdWFlYzVcdWFlYzZcdWFlYzdcdWFlYzhcdWFlYzlcdWFlY2FcdWFlY2JcdWFlY2VcdWFlZDJcdWFlZDNcdWFlZDRcdWFlZDVcdWFlZDZcdWFlZDdcdWFlZGFcdWFlZGJcdWFlZGRcdWFlZGVcdWFl''@;'; put 'put ''ZGZcdWFlZTBcdWFlZTFcdWFlZTJcdWFlZTNcdWFlZTRcdWFlZTVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzMV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTMxXVtFXV09MzM1MzYrRSxMWzMzNTM2K0VdPUJbMTMxXVtFXSk7Zm9yKEJb''@;'; put 'put ''MTMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZWU2XHVhZWU3XHVhZWU5XHVhZWVhXHVhZWVjXHVhZWVlXHVhZWVmXHVhZWYwXHVhZWYxXHVhZWYyXHVhZWYzXHVhZWY1XHVhZWY2XHVhZWY3XHVhZWY5XHVhZWZhXHVh''@;'; put 'put ''ZWZiXHVhZWZkXHVhZWZlXHVhZWZmXHVhZjAwXHVhZjAxXHVhZjAyXHVhZjAzXHVhZjA0XHVhZjA1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZjA2XHVhZjA5XHVhZjBhXHVhZjBiXHVhZjBjXHVhZjBlXHVhZjBmXHVhZjExXHVhZjEyXHVhZjEzXHVhZjE0XHVhZjE1''@;'; put 'put ''XHVhZjE2XHVhZjE3XHVhZjE4XHVhZjE5XHVhZjFhXHVhZjFiXHVhZjFjXHVhZjFkXHVhZjFlXHVhZjFmXHVhZjIwXHVhZjIxXHVhZjIyXHVhZjIzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZjI0XHVhZjI1XHVhZjI2XHVhZjI3XHVhZjI4XHVhZjI5XHVhZjJhXHVh''@;'; put 'put ''ZjJiXHVhZjJlXHVhZjJmXHVhZjMxXHVhZjMzXHVhZjM1XHVhZjM2XHVhZjM3XHVhZjM4XHVhZjM5XHVhZjNhXHVhZjNiXHVhZjNlXHVhZjQwXHVhZjQ0XHVhZjQ1XHVhZjQ2XHVhZjQ3XHVhZjRhXHVhZjRiXHVhZjRjXHVhZjRkXHVhZjRlXHVhZjRmXHVhZjUxXHVhZjUyXHVhZjUzXHVhZjU0''@;'; put 'put ''XHVhZjU1XHVhZjU2XHVhZjU3XHVhZjU4XHVhZjU5XHVhZjVhXHVhZjViXHVhZjVlXHVhZjVmXHVhZjYwXHVhZjYxXHVhZjYyXHVhZjYzXHVhZjY2XHVhZjY3XHVhZjY4XHVhZjY5XHVhZjZhXHVhZjZiXHVhZjZjXHVhZjZkXHVhZjZlXHVhZjZmXHVhZjcwXHVhZjcxXHVhZjcyXHVhZjczXHVh''@;'; put 'put ''Zjc0XHVhZjc1XHVhZjc2XHVhZjc3XHVhZjc4XHVhZjdhXHVhZjdiXHVhZjdjXHVhZjdkXHVhZjdlXHVhZjdmXHVhZjgxXHVhZjgyXHVhZjgzXHVhZjg1XHVhZjg2XHVhZjg3XHVhZjg5XHVhZjhhXHVhZjhiXHVhZjhjXHVhZjhkXHVhZjhlXHVhZjhmXHVhZjkyXHVhZjkzXHVhZjk0XHVhZjk2''@;'; put 'put ''XHVhZjk3XHVhZjk4XHVhZjk5XHVhZjlhXHVhZjliXHVhZjlkXHVhZjllXHVhZjlmXHVhZmEwXHVhZmExXHVhZmEyXHVhZmEzXHVhZmE0XHVhZmE1XHVhZmE2XHVhZmE3XHVhZmE4XHVhZmE5XHVhZmFhXHVhZmFiXHVhZmFjXHVhZmFkXHVhZmFlXHVhZmFmXHVhZmIwXHVhZmIxXHVhZmIyXHVh''@;'; put 'put ''ZmIzXHVhZmI0XHVhZmI1XHVhZmI2XHVhZmI3XHVhZmJhXHVhZmJiXHVhZmJkXHVhZmJlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTMyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzMl1bRV1dPTMzNzkyK0UsTFszMzc5MitFXT1CWzEz''@;'; put 'put ''Ml1bRV0pO2ZvcihCWzEzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWZiZlx1YWZjMVx1YWZjMlx1YWZjM1x1YWZjNFx1YWZjNVx1YWZjNlx1YWZjYVx1YWZjY1x1YWZjZlx1YWZkMFx1YWZkMVx1YWZkMlx1YWZkM1x1''@;'; put 'put ''YWZkNVx1YWZkNlx1YWZkN1x1YWZkOFx1YWZkOVx1YWZkYVx1YWZkYlx1YWZkZFx1YWZkZVx1YWZkZlx1YWZlMFx1YWZlMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWZlMlx1YWZlM1x1YWZlNFx1YWZlNVx1YWZlNlx1YWZlN1x1YWZlYVx1YWZlYlx1YWZlY1x1YWZl''@;'; put 'put ''ZFx1YWZlZVx1YWZlZlx1YWZmMlx1YWZmM1x1YWZmNVx1YWZmNlx1YWZmN1x1YWZmOVx1YWZmYVx1YWZmYlx1YWZmY1x1YWZmZFx1YWZmZVx1YWZmZlx1YjAwMlx1YjAwM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjAwNVx1YjAwNlx1YjAwN1x1YjAwOFx1YjAwOVx1''@;'; put 'put ''YjAwYVx1YjAwYlx1YjAwZFx1YjAwZVx1YjAwZlx1YjAxMVx1YjAxMlx1YjAxM1x1YjAxNVx1YjAxNlx1YjAxN1x1YjAxOFx1YjAxOVx1YjAxYVx1YjAxYlx1YjAxZVx1YjAxZlx1YjAyMFx1YjAyMVx1YjAyMlx1YjAyM1x1YjAyNFx1YjAyNVx1YjAyNlx1YjAyN1x1YjAyOVx1YjAyYVx1YjAy''@;'; put 'put ''Ylx1YjAyY1x1YjAyZFx1YjAyZVx1YjAyZlx1YjAzMFx1YjAzMVx1YjAzMlx1YjAzM1x1YjAzNFx1YjAzNVx1YjAzNlx1YjAzN1x1YjAzOFx1YjAzOVx1YjAzYVx1YjAzYlx1YjAzY1x1YjAzZFx1YjAzZVx1YjAzZlx1YjA0MFx1YjA0MVx1YjA0Mlx1YjA0M1x1YjA0Nlx1YjA0N1x1YjA0OVx1''@;'; put 'put ''YjA0Ylx1YjA0ZFx1YjA0Zlx1YjA1MFx1YjA1MVx1YjA1Mlx1YjA1Nlx1YjA1OFx1YjA1YVx1YjA1Ylx1YjA1Y1x1YjA1ZVx1YjA1Zlx1YjA2MFx1YjA2MVx1YjA2Mlx1YjA2M1x1YjA2NFx1YjA2NVx1YjA2Nlx1YjA2N1x1YjA2OFx1YjA2OVx1YjA2YVx1YjA2Ylx1YjA2Y1x1YjA2ZFx1YjA2''@;'; put 'put ''ZVx1YjA2Zlx1YjA3MFx1YjA3MVx1YjA3Mlx1YjA3M1x1YjA3NFx1YjA3NVx1YjA3Nlx1YjA3N1x1YjA3OFx1YjA3OVx1YjA3YVx1YjA3Ylx1YjA3ZVx1YjA3Zlx1YjA4MVx1YjA4Mlx1YjA4M1x1YjA4NVx1YjA4Nlx1YjA4N1x1YjA4OFx1YjA4OVx1YjA4YVx1YjA4Ylx1YjA4ZVx1YjA5MFx1''@;'; put 'put ''YjA5Mlx1YjA5M1x1YjA5NFx1YjA5NVx1YjA5Nlx1YjA5N1x1YjA5Ylx1YjA5ZFx1YjA5ZVx1YjBhM1x1YjBhNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzNdW0VdXT0zNDA0OCtFLExb''@;'; put 'put ''MzQwNDgrRV09QlsxMzNdW0VdKTtmb3IoQlsxMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIwYTVcdWIwYTZcdWIwYTdcdWIwYWFcdWIwYjBcdWIwYjJcdWIwYjZcdWIwYjdcdWIwYjlcdWIwYmFcdWIwYmJcdWIwYmRc''@;'; put 'put ''dWIwYmVcdWIwYmZcdWIwYzBcdWIwYzFcdWIwYzJcdWIwYzNcdWIwYzZcdWIwY2FcdWIwY2JcdWIwY2NcdWIwY2RcdWIwY2VcdWIwY2ZcdWIwZDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIwZDNcdWIwZDVcdWIwZDZcdWIwZDdcdWIwZDlcdWIwZGFcdWIwZGJcdWIw''@;'; put 'put ''ZGNcdWIwZGRcdWIwZGVcdWIwZGZcdWIwZTFcdWIwZTJcdWIwZTNcdWIwZTRcdWIwZTZcdWIwZTdcdWIwZThcdWIwZTlcdWIwZWFcdWIwZWJcdWIwZWNcdWIwZWRcdWIwZWVcdWIwZWZcdWIwZjBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIwZjFcdWIwZjJcdWIwZjNc''@;'; put 'put ''dWIwZjRcdWIwZjVcdWIwZjZcdWIwZjdcdWIwZjhcdWIwZjlcdWIwZmFcdWIwZmJcdWIwZmNcdWIwZmRcdWIwZmVcdWIwZmZcdWIxMDBcdWIxMDFcdWIxMDJcdWIxMDNcdWIxMDRcdWIxMDVcdWIxMDZcdWIxMDdcdWIxMGFcdWIxMGRcdWIxMGVcdWIxMGZcdWIxMTFcdWIxMTRcdWIxMTVcdWIx''@;'; put 'put ''MTZcdWIxMTdcdWIxMWFcdWIxMWVcdWIxMWZcdWIxMjBcdWIxMjFcdWIxMjJcdWIxMjZcdWIxMjdcdWIxMjlcdWIxMmFcdWIxMmJcdWIxMmRcdWIxMmVcdWIxMmZcdWIxMzBcdWIxMzFcdWIxMzJcdWIxMzNcdWIxMzZcdWIxM2FcdWIxM2JcdWIxM2NcdWIxM2RcdWIxM2VcdWIxM2ZcdWIxNDJc''@;'; put 'put ''dWIxNDNcdWIxNDVcdWIxNDZcdWIxNDdcdWIxNDlcdWIxNGFcdWIxNGJcdWIxNGNcdWIxNGRcdWIxNGVcdWIxNGZcdWIxNTJcdWIxNTNcdWIxNTZcdWIxNTdcdWIxNTlcdWIxNWFcdWIxNWJcdWIxNWRcdWIxNWVcdWIxNWZcdWIxNjFcdWIxNjJcdWIxNjNcdWIxNjRcdWIxNjVcdWIxNjZcdWIx''@;'; put 'put ''NjdcdWIxNjhcdWIxNjlcdWIxNmFcdWIxNmJcdWIxNmNcdWIxNmRcdWIxNmVcdWIxNmZcdWIxNzBcdWIxNzFcdWIxNzJcdWIxNzNcdWIxNzRcdWIxNzVcdWIxNzZcdWIxNzdcdWIxN2FcdWIxN2JcdWIxN2RcdWIxN2VcdWIxN2ZcdWIxODFcdWIxODNcdWIxODRcdWIxODVcdWIxODZcdWIxODdc''@;'; put 'put ''dWIxOGFcdWIxOGNcdWIxOGVcdWIxOGZcdWIxOTBcdWIxOTFcdWIxOTVcdWIxOTZcdWIxOTdcdWIxOTlcdWIxOWFcdWIxOWJcdWIxOWRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzNF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTM0XVtF''@;'; put 'put ''XV09MzQzMDQrRSxMWzM0MzA0K0VdPUJbMTM0XVtFXSk7Zm9yKEJbMTM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMTllXHViMTlmXHViMWEwXHViMWExXHViMWEyXHViMWEzXHViMWE0XHViMWE1XHViMWE2XHViMWE3''@;'; put 'put ''XHViMWE5XHViMWFhXHViMWFiXHViMWFjXHViMWFkXHViMWFlXHViMWFmXHViMWIwXHViMWIxXHViMWIyXHViMWIzXHViMWI0XHViMWI1XHViMWI2XHViMWI3XHViMWI4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMWI5XHViMWJhXHViMWJiXHViMWJjXHViMWJkXHVi''@;'; put 'put ''MWJlXHViMWJmXHViMWMwXHViMWMxXHViMWMyXHViMWMzXHViMWM0XHViMWM1XHViMWM2XHViMWM3XHViMWM4XHViMWM5XHViMWNhXHViMWNiXHViMWNkXHViMWNlXHViMWNmXHViMWQxXHViMWQyXHViMWQzXHViMWQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMWQ2''@;'; put 'put ''XHViMWQ3XHViMWQ4XHViMWQ5XHViMWRhXHViMWRiXHViMWRlXHViMWUwXHViMWUxXHViMWUyXHViMWUzXHViMWU0XHViMWU1XHViMWU2XHViMWU3XHViMWVhXHViMWViXHViMWVkXHViMWVlXHViMWVmXHViMWYxXHViMWYyXHViMWYzXHViMWY0XHViMWY1XHViMWY2XHViMWY3XHViMWY4XHVi''@;'; put 'put ''MWZhXHViMWZjXHViMWZlXHViMWZmXHViMjAwXHViMjAxXHViMjAyXHViMjAzXHViMjA2XHViMjA3XHViMjA5XHViMjBhXHViMjBkXHViMjBlXHViMjBmXHViMjEwXHViMjExXHViMjEyXHViMjEzXHViMjE2XHViMjE4XHViMjFhXHViMjFiXHViMjFjXHViMjFkXHViMjFlXHViMjFmXHViMjIx''@;'; put 'put ''XHViMjIyXHViMjIzXHViMjI0XHViMjI1XHViMjI2XHViMjI3XHViMjI4XHViMjI5XHViMjJhXHViMjJiXHViMjJjXHViMjJkXHViMjJlXHViMjJmXHViMjMwXHViMjMxXHViMjMyXHViMjMzXHViMjM1XHViMjM2XHViMjM3XHViMjM4XHViMjM5XHViMjNhXHViMjNiXHViMjNkXHViMjNlXHVi''@;'; put 'put ''MjNmXHViMjQwXHViMjQxXHViMjQyXHViMjQzXHViMjQ0XHViMjQ1XHViMjQ2XHViMjQ3XHViMjQ4XHViMjQ5XHViMjRhXHViMjRiXHViMjRjXHViMjRkXHViMjRlXHViMjRmXHViMjUwXHViMjUxXHViMjUyXHViMjUzXHViMjU0XHViMjU1XHViMjU2XHViMjU3XHViMjU5XHViMjVhXHViMjVi''@;'; put 'put ''XHViMjVkXHViMjVlXHViMjVmXHViMjYxXHViMjYyXHViMjYzXHViMjY0XHViMjY1XHViMjY2XHViMjY3XHViMjZhXHViMjZiXHViMjZjXHViMjZkXHViMjZlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzVdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihnZVtCWzEzNV1bRV1dPTM0NTYwK0UsTFszNDU2MCtFXT1CWzEzNV1bRV0pO2ZvcihCWzEzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjI2Zlx1YjI3MFx1YjI3MVx1YjI3Mlx1YjI3M1x1YjI3Nlx1YjI3N1x1YjI3''@;'; put 'put ''OFx1YjI3OVx1YjI3YVx1YjI3Ylx1YjI3ZFx1YjI3ZVx1YjI3Zlx1YjI4MFx1YjI4MVx1YjI4Mlx1YjI4M1x1YjI4Nlx1YjI4N1x1YjI4OFx1YjI4YVx1YjI4Ylx1YjI4Y1x1YjI4ZFx1YjI4ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjI4Zlx1YjI5Mlx1YjI5M1x1''@;'; put 'put ''YjI5NVx1YjI5Nlx1YjI5N1x1YjI5Ylx1YjI5Y1x1YjI5ZFx1YjI5ZVx1YjI5Zlx1YjJhMlx1YjJhNFx1YjJhN1x1YjJhOFx1YjJhOVx1YjJhYlx1YjJhZFx1YjJhZVx1YjJhZlx1YjJiMVx1YjJiMlx1YjJiM1x1YjJiNVx1YjJiNlx1YjJiN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1YjJiOFx1YjJiOVx1YjJiYVx1YjJiYlx1YjJiY1x1YjJiZFx1YjJiZVx1YjJiZlx1YjJjMFx1YjJjMVx1YjJjMlx1YjJjM1x1YjJjNFx1YjJjNVx1YjJjNlx1YjJjN1x1YjJjYVx1YjJjYlx1YjJjZFx1YjJjZVx1YjJjZlx1YjJkMVx1YjJkM1x1YjJkNFx1YjJkNVx1YjJkNlx1''@;'; put 'put ''YjJkN1x1YjJkYVx1YjJkY1x1YjJkZVx1YjJkZlx1YjJlMFx1YjJlMVx1YjJlM1x1YjJlN1x1YjJlOVx1YjJlYVx1YjJmMFx1YjJmMVx1YjJmMlx1YjJmNlx1YjJmY1x1YjJmZFx1YjJmZVx1YjMwMlx1YjMwM1x1YjMwNVx1YjMwNlx1YjMwN1x1YjMwOVx1YjMwYVx1YjMwYlx1YjMwY1x1YjMw''@;'; put 'put ''ZFx1YjMwZVx1YjMwZlx1YjMxMlx1YjMxNlx1YjMxN1x1YjMxOFx1YjMxOVx1YjMxYVx1YjMxYlx1YjMxZFx1YjMxZVx1YjMxZlx1YjMyMFx1YjMyMVx1YjMyMlx1YjMyM1x1YjMyNFx1YjMyNVx1YjMyNlx1YjMyN1x1YjMyOFx1YjMyOVx1YjMyYVx1YjMyYlx1YjMyY1x1YjMyZFx1YjMyZVx1''@;'; put 'put ''YjMyZlx1YjMzMFx1YjMzMVx1YjMzMlx1YjMzM1x1YjMzNFx1YjMzNVx1YjMzNlx1YjMzN1x1YjMzOFx1YjMzOVx1YjMzYVx1YjMzYlx1YjMzY1x1YjMzZFx1YjMzZVx1YjMzZlx1YjM0MFx1YjM0MVx1YjM0Mlx1YjM0M1x1YjM0NFx1YjM0NVx1YjM0Nlx1YjM0N1x1YjM0OFx1YjM0OVx1YjM0''@;'; put 'put ''YVx1YjM0Ylx1YjM0Y1x1YjM0ZFx1YjM0ZVx1YjM0Zlx1YjM1MFx1YjM1MVx1YjM1Mlx1YjM1M1x1YjM1N1x1YjM1OVx1YjM1YVx1YjM1ZFx1YjM2MFx1YjM2MVx1YjM2Mlx1YjM2M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM2XVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoZ2VbQlsxMzZdW0VdXT0zNDgxNitFLExbMzQ4MTYrRV09QlsxMzZdW0VdKTtmb3IoQlsxMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIzNjZcdWIzNjhcdWIzNmFcdWIzNmNcdWIzNmRcdWIz''@;'; put 'put ''NmZcdWIzNzJcdWIzNzNcdWIzNzVcdWIzNzZcdWIzNzdcdWIzNzlcdWIzN2FcdWIzN2JcdWIzN2NcdWIzN2RcdWIzN2VcdWIzN2ZcdWIzODJcdWIzODZcdWIzODdcdWIzODhcdWIzODlcdWIzOGFcdWIzOGJcdWIzOGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIzOGVc''@;'; put 'put ''dWIzOGZcdWIzOTFcdWIzOTJcdWIzOTNcdWIzOTVcdWIzOTZcdWIzOTdcdWIzOThcdWIzOTlcdWIzOWFcdWIzOWJcdWIzOWNcdWIzOWRcdWIzOWVcdWIzOWZcdWIzYTJcdWIzYTNcdWIzYTRcdWIzYTVcdWIzYTZcdWIzYTdcdWIzYTlcdWIzYWFcdWIzYWJcdWIzYWRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIzYWVcdWIzYWZcdWIzYjBcdWIzYjFcdWIzYjJcdWIzYjNcdWIzYjRcdWIzYjVcdWIzYjZcdWIzYjdcdWIzYjhcdWIzYjlcdWIzYmFcdWIzYmJcdWIzYmNcdWIzYmRcdWIzYmVcdWIzYmZcdWIzYzBcdWIzYzFcdWIzYzJcdWIzYzNcdWIzYzZcdWIzYzdc''@;'; put 'put ''dWIzYzlcdWIzY2FcdWIzY2RcdWIzY2ZcdWIzZDFcdWIzZDJcdWIzZDNcdWIzZDZcdWIzZDhcdWIzZGFcdWIzZGNcdWIzZGVcdWIzZGZcdWIzZTFcdWIzZTJcdWIzZTNcdWIzZTVcdWIzZTZcdWIzZTdcdWIzZTlcdWIzZWFcdWIzZWJcdWIzZWNcdWIzZWRcdWIzZWVcdWIzZWZcdWIzZjBcdWIz''@;'; put 'put ''ZjFcdWIzZjJcdWIzZjNcdWIzZjRcdWIzZjVcdWIzZjZcdWIzZjdcdWIzZjhcdWIzZjlcdWIzZmFcdWIzZmJcdWIzZmRcdWIzZmVcdWIzZmZcdWI0MDBcdWI0MDFcdWI0MDJcdWI0MDNcdWI0MDRcdWI0MDVcdWI0MDZcdWI0MDdcdWI0MDhcdWI0MDlcdWI0MGFcdWI0MGJcdWI0MGNcdWI0MGRc''@;'; put 'put ''dWI0MGVcdWI0MGZcdWI0MTFcdWI0MTJcdWI0MTNcdWI0MTRcdWI0MTVcdWI0MTZcdWI0MTdcdWI0MTlcdWI0MWFcdWI0MWJcdWI0MWRcdWI0MWVcdWI0MWZcdWI0MjFcdWI0MjJcdWI0MjNcdWI0MjRcdWI0MjVcdWI0MjZcdWI0MjdcdWI0MmFcdWI0MmNcdWI0MmRcdWI0MmVcdWI0MmZcdWI0''@;'; put 'put ''MzBcdWI0MzFcdWI0MzJcdWI0MzNcdWI0MzVcdWI0MzZcdWI0MzdcdWI0MzhcdWI0MzlcdWI0M2FcdWI0M2JcdWI0M2NcdWI0M2RcdWI0M2VcdWI0M2ZcdWI0NDBcdWI0NDFcdWI0NDJcdWI0NDNcdWI0NDRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzddLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzEzN11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTM3XVtFXV09MzUwNzIrRSxMWzM1MDcyK0VdPUJbMTM3XVtFXSk7Zm9yKEJbMTM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNDQ1XHViNDQ2XHViNDQ3XHVi''@;'; put 'put ''NDQ4XHViNDQ5XHViNDRhXHViNDRiXHViNDRjXHViNDRkXHViNDRlXHViNDRmXHViNDUyXHViNDUzXHViNDU1XHViNDU2XHViNDU3XHViNDU5XHViNDVhXHViNDViXHViNDVjXHViNDVkXHViNDVlXHViNDVmXHViNDYyXHViNDY0XHViNDY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHViNDY3XHViNDY4XHViNDY5XHViNDZhXHViNDZiXHViNDZkXHViNDZlXHViNDZmXHViNDcwXHViNDcxXHViNDcyXHViNDczXHViNDc0XHViNDc1XHViNDc2XHViNDc3XHViNDc4XHViNDc5XHViNDdhXHViNDdiXHViNDdjXHViNDdkXHViNDdlXHViNDdmXHViNDgxXHViNDgyXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNDgzXHViNDg0XHViNDg1XHViNDg2XHViNDg3XHViNDg5XHViNDhhXHViNDhiXHViNDhjXHViNDhkXHViNDhlXHViNDhmXHViNDkwXHViNDkxXHViNDkyXHViNDkzXHViNDk0XHViNDk1XHViNDk2XHViNDk3XHViNDk4XHViNDk5''@;'; put 'put ''XHViNDlhXHViNDliXHViNDljXHViNDllXHViNDlmXHViNGEwXHViNGExXHViNGEyXHViNGEzXHViNGE1XHViNGE2XHViNGE3XHViNGE5XHViNGFhXHViNGFiXHViNGFkXHViNGFlXHViNGFmXHViNGIwXHViNGIxXHViNGIyXHViNGIzXHViNGI0XHViNGI2XHViNGI4XHViNGJhXHViNGJiXHVi''@;'; put 'put ''NGJjXHViNGJkXHViNGJlXHViNGJmXHViNGMxXHViNGMyXHViNGMzXHViNGM1XHViNGM2XHViNGM3XHViNGM5XHViNGNhXHViNGNiXHViNGNjXHViNGNkXHViNGNlXHViNGNmXHViNGQxXHViNGQyXHViNGQzXHViNGQ0XHViNGQ2XHViNGQ3XHViNGQ4XHViNGQ5XHViNGRhXHViNGRiXHViNGRl''@;'; put 'put ''XHViNGRmXHViNGUxXHViNGUyXHViNGU1XHViNGU3XHViNGU4XHViNGU5XHViNGVhXHViNGViXHViNGVlXHViNGYwXHViNGYyXHViNGYzXHViNGY0XHViNGY1XHViNGY2XHViNGY3XHViNGY5XHViNGZhXHViNGZiXHViNGZjXHViNGZkXHViNGZlXHViNGZmXHViNTAwXHViNTAxXHViNTAyXHVi''@;'; put 'put ''NTAzXHViNTA0XHViNTA1XHViNTA2XHViNTA3XHViNTA4XHViNTA5XHViNTBhXHViNTBiXHViNTBjXHViNTBkXHViNTBlXHViNTBmXHViNTEwXHViNTExXHViNTEyXHViNTEzXHViNTE2XHViNTE3XHViNTE5XHViNTFhXHViNTFkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM4XS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsxMzhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzEzOF1bRV1dPTM1MzI4K0UsTFszNTMyOCtFXT1CWzEzOF1bRV0pO2ZvcihCWzEzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjUxZVx1''@;'; put 'put ''YjUxZlx1YjUyMFx1YjUyMVx1YjUyMlx1YjUyM1x1YjUyNlx1YjUyYlx1YjUyY1x1YjUyZFx1YjUyZVx1YjUyZlx1YjUzMlx1YjUzM1x1YjUzNVx1YjUzNlx1YjUzN1x1YjUzOVx1YjUzYVx1YjUzYlx1YjUzY1x1YjUzZFx1YjUzZVx1YjUzZlx1YjU0Mlx1YjU0Nlx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjU0N1x1YjU0OFx1YjU0OVx1YjU0YVx1YjU0ZVx1YjU0Zlx1YjU1MVx1YjU1Mlx1YjU1M1x1YjU1NVx1YjU1Nlx1YjU1N1x1YjU1OFx1YjU1OVx1YjU1YVx1YjU1Ylx1YjU1ZVx1YjU2Mlx1YjU2M1x1YjU2NFx1YjU2NVx1YjU2Nlx1YjU2N1x1YjU2OFx1''@;'; put 'put ''YjU2OVx1YjU2YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjU2Ylx1YjU2Y1x1YjU2ZFx1YjU2ZVx1YjU2Zlx1YjU3MFx1YjU3MVx1YjU3Mlx1YjU3M1x1YjU3NFx1YjU3NVx1YjU3Nlx1YjU3N1x1YjU3OFx1YjU3OVx1YjU3YVx1YjU3Ylx1YjU3Y1x1YjU3ZFx1YjU3''@;'; put 'put ''ZVx1YjU3Zlx1YjU4MFx1YjU4MVx1YjU4Mlx1YjU4M1x1YjU4NFx1YjU4NVx1YjU4Nlx1YjU4N1x1YjU4OFx1YjU4OVx1YjU4YVx1YjU4Ylx1YjU4Y1x1YjU4ZFx1YjU4ZVx1YjU4Zlx1YjU5MFx1YjU5MVx1YjU5Mlx1YjU5M1x1YjU5NFx1YjU5NVx1YjU5Nlx1YjU5N1x1YjU5OFx1YjU5OVx1''@;'; put 'put ''YjU5YVx1YjU5Ylx1YjU5Y1x1YjU5ZFx1YjU5ZVx1YjU5Zlx1YjVhMlx1YjVhM1x1YjVhNVx1YjVhNlx1YjVhN1x1YjVhOVx1YjVhY1x1YjVhZFx1YjVhZVx1YjVhZlx1YjViMlx1YjViNlx1YjViN1x1YjViOFx1YjViOVx1YjViYVx1YjViZVx1YjViZlx1YjVjMVx1YjVjMlx1YjVjM1x1YjVj''@;'; put 'put ''NVx1YjVjNlx1YjVjN1x1YjVjOFx1YjVjOVx1YjVjYVx1YjVjYlx1YjVjZVx1YjVkMlx1YjVkM1x1YjVkNFx1YjVkNVx1YjVkNlx1YjVkN1x1YjVkOVx1YjVkYVx1YjVkYlx1YjVkY1x1YjVkZFx1YjVkZVx1YjVkZlx1YjVlMFx1YjVlMVx1YjVlMlx1YjVlM1x1YjVlNFx1YjVlNVx1YjVlNlx1''@;'; put 'put ''YjVlN1x1YjVlOFx1YjVlOVx1YjVlYVx1YjVlYlx1YjVlZFx1YjVlZVx1YjVlZlx1YjVmMFx1YjVmMVx1YjVmMlx1YjVmM1x1YjVmNFx1YjVmNVx1YjVmNlx1YjVmN1x1YjVmOFx1YjVmOVx1YjVmYVx1YjVmYlx1YjVmY1x1YjVmZFx1YjVmZVx1YjVmZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzEzOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxMzldW0VdXT0zNTU4NCtFLExbMzU1ODQrRV09QlsxMzldW0VdKTtmb3IoQlsxNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWI2MDBcdWI2MDFcdWI2MDJcdWI2MDNcdWI2MDRcdWI2MDVcdWI2MDZcdWI2MDdcdWI2MDhcdWI2MDlcdWI2MGFcdWI2MGJcdWI2MGNcdWI2MGRcdWI2MGVcdWI2MGZcdWI2MTJcdWI2MTNcdWI2MTVcdWI2MTZcdWI2MTdcdWI2MTlcdWI2MWFcdWI2MWJcdWI2MWNcdWI2MWRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI2MWVcdWI2MWZcdWI2MjBcdWI2MjFcdWI2MjJcdWI2MjNcdWI2MjRcdWI2MjZcdWI2MjdcdWI2MjhcdWI2MjlcdWI2MmFcdWI2MmJcdWI2MmRcdWI2MmVcdWI2MmZcdWI2MzBcdWI2MzFcdWI2MzJcdWI2MzNcdWI2MzVcdWI2MzZc''@;'; put 'put ''dWI2MzdcdWI2MzhcdWI2MzlcdWI2M2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI2M2JcdWI2M2NcdWI2M2RcdWI2M2VcdWI2M2ZcdWI2NDBcdWI2NDFcdWI2NDJcdWI2NDNcdWI2NDRcdWI2NDVcdWI2NDZcdWI2NDdcdWI2NDlcdWI2NGFcdWI2NGJcdWI2NGNcdWI2''@;'; put 'put ''NGRcdWI2NGVcdWI2NGZcdWI2NTBcdWI2NTFcdWI2NTJcdWI2NTNcdWI2NTRcdWI2NTVcdWI2NTZcdWI2NTdcdWI2NThcdWI2NTlcdWI2NWFcdWI2NWJcdWI2NWNcdWI2NWRcdWI2NWVcdWI2NWZcdWI2NjBcdWI2NjFcdWI2NjJcdWI2NjNcdWI2NjVcdWI2NjZcdWI2NjdcdWI2NjlcdWI2NmFc''@;'; put 'put ''dWI2NmJcdWI2NmNcdWI2NmRcdWI2NmVcdWI2NmZcdWI2NzBcdWI2NzFcdWI2NzJcdWI2NzNcdWI2NzRcdWI2NzVcdWI2NzZcdWI2NzdcdWI2NzhcdWI2NzlcdWI2N2FcdWI2N2JcdWI2N2NcdWI2N2RcdWI2N2VcdWI2N2ZcdWI2ODBcdWI2ODFcdWI2ODJcdWI2ODNcdWI2ODRcdWI2ODVcdWI2''@;'; put 'put ''ODZcdWI2ODdcdWI2ODhcdWI2ODlcdWI2OGFcdWI2OGJcdWI2OGNcdWI2OGRcdWI2OGVcdWI2OGZcdWI2OTBcdWI2OTFcdWI2OTJcdWI2OTNcdWI2OTRcdWI2OTVcdWI2OTZcdWI2OTdcdWI2OThcdWI2OTlcdWI2OWFcdWI2OWJcdWI2OWVcdWI2OWZcdWI2YTFcdWI2YTJcdWI2YTNcdWI2YTVc''@;'; put 'put ''dWI2YTZcdWI2YTdcdWI2YThcdWI2YTlcdWI2YWFcdWI2YWRcdWI2YWVcdWI2YWZcdWI2YjBcdWI2YjJcdWI2YjNcdWI2YjRcdWI2YjVcdWI2YjZcdWI2YjdcdWI2YjhcdWI2YjlcdWI2YmFcdWI2YmJcdWI2YmNcdWI2YmRcdWI2YmVcdWI2YmZcdWI2YzBcdWI2YzFcdWI2YzJcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsxNDBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQwXVtFXV09MzU4NDArRSxMWzM1ODQwK0VdPUJbMTQwXVtFXSk7Zm9yKEJbMTQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHViNmMzXHViNmM0XHViNmM1XHViNmM2XHViNmM3XHViNmM4XHViNmM5XHViNmNhXHViNmNiXHViNmNjXHViNmNkXHViNmNlXHViNmNmXHViNmQwXHViNmQxXHViNmQyXHViNmQzXHViNmQ1XHViNmQ2XHViNmQ3XHViNmQ4XHViNmQ5XHViNmRhXHViNmRiXHVi''@;'; put 'put ''NmRjXHViNmRkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNmRlXHViNmRmXHViNmUwXHViNmUxXHViNmUyXHViNmUzXHViNmU0XHViNmU1XHViNmU2XHViNmU3XHViNmU4XHViNmU5XHViNmVhXHViNmViXHViNmVjXHViNmVkXHViNmVlXHViNmVmXHViNmYxXHViNmYy''@;'; put 'put ''XHViNmYzXHViNmY1XHViNmY2XHViNmY3XHViNmY5XHViNmZhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNmZiXHViNmZjXHViNmZkXHViNmZlXHViNmZmXHViNzAyXHViNzAzXHViNzA0XHViNzA2XHViNzA3XHViNzA4XHViNzA5XHViNzBhXHViNzBiXHViNzBjXHVi''@;'; put 'put ''NzBkXHViNzBlXHViNzBmXHViNzEwXHViNzExXHViNzEyXHViNzEzXHViNzE0XHViNzE1XHViNzE2XHViNzE3XHViNzE4XHViNzE5XHViNzFhXHViNzFiXHViNzFjXHViNzFkXHViNzFlXHViNzFmXHViNzIwXHViNzIxXHViNzIyXHViNzIzXHViNzI0XHViNzI1XHViNzI2XHViNzI3XHViNzJh''@;'; put 'put ''XHViNzJiXHViNzJkXHViNzJlXHViNzMxXHViNzMyXHViNzMzXHViNzM0XHViNzM1XHViNzM2XHViNzM3XHViNzNhXHViNzNjXHViNzNkXHViNzNlXHViNzNmXHViNzQwXHViNzQxXHViNzQyXHViNzQzXHViNzQ1XHViNzQ2XHViNzQ3XHViNzQ5XHViNzRhXHViNzRiXHViNzRkXHViNzRlXHVi''@;'; put 'put ''NzRmXHViNzUwXHViNzUxXHViNzUyXHViNzUzXHViNzU2XHViNzU3XHViNzU4XHViNzU5XHViNzVhXHViNzViXHViNzVjXHViNzVkXHViNzVlXHViNzVmXHViNzYxXHViNzYyXHViNzYzXHViNzY1XHViNzY2XHViNzY3XHViNzY5XHViNzZhXHViNzZiXHViNzZjXHViNzZkXHViNzZlXHViNzZm''@;'; put 'put ''XHViNzcyXHViNzc0XHViNzc2XHViNzc3XHViNzc4XHViNzc5XHViNzdhXHViNzdiXHViNzdlXHViNzdmXHViNzgxXHViNzgyXHViNzgzXHViNzg1XHViNzg2XHViNzg3XHViNzg4XHViNzg5XHViNzhhXHViNzhiXHViNzhlXHViNzkzXHViNzk0XHViNzk1XHViNzlhXHViNzliXHViNzlkXHVi''@;'; put 'put ''NzllXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0MV1bRV1dPTM2MDk2K0UsTFszNjA5NitFXT1CWzE0MV1bRV0pO2ZvcihCWzE0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjc5Zlx1YjdhMVx1YjdhMlx1YjdhM1x1YjdhNFx1YjdhNVx1YjdhNlx1YjdhN1x1YjdhYVx1YjdhZVx1YjdhZlx1YjdiMFx1YjdiMVx1YjdiMlx1YjdiM1x1YjdiNlx1YjdiN1x1YjdiOVx1YjdiYVx1YjdiYlx1YjdiY1x1YjdiZFx1''@;'; put 'put ''YjdiZVx1YjdiZlx1YjdjMFx1YjdjMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjdjMlx1YjdjM1x1YjdjNFx1YjdjNVx1YjdjNlx1YjdjOFx1YjdjYVx1YjdjYlx1YjdjY1x1YjdjZFx1YjdjZVx1YjdjZlx1YjdkMFx1YjdkMVx1YjdkMlx1YjdkM1x1YjdkNFx1Yjdk''@;'; put 'put ''NVx1YjdkNlx1YjdkN1x1YjdkOFx1YjdkOVx1YjdkYVx1YjdkYlx1YjdkY1x1YjdkZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjdkZVx1YjdkZlx1YjdlMFx1YjdlMVx1YjdlMlx1YjdlM1x1YjdlNFx1YjdlNVx1YjdlNlx1YjdlN1x1YjdlOFx1YjdlOVx1YjdlYVx1''@;'; put 'put ''YjdlYlx1YjdlZVx1YjdlZlx1YjdmMVx1YjdmMlx1YjdmM1x1YjdmNVx1YjdmNlx1YjdmN1x1YjdmOFx1YjdmOVx1YjdmYVx1YjdmYlx1YjdmZVx1YjgwMlx1YjgwM1x1YjgwNFx1YjgwNVx1YjgwNlx1YjgwYVx1YjgwYlx1YjgwZFx1YjgwZVx1YjgwZlx1YjgxMVx1YjgxMlx1YjgxM1x1Yjgx''@;'; put 'put ''NFx1YjgxNVx1YjgxNlx1YjgxN1x1YjgxYVx1YjgxY1x1YjgxZVx1YjgxZlx1YjgyMFx1YjgyMVx1YjgyMlx1YjgyM1x1YjgyNlx1YjgyN1x1YjgyOVx1YjgyYVx1YjgyYlx1YjgyZFx1YjgyZVx1YjgyZlx1YjgzMFx1YjgzMVx1YjgzMlx1YjgzM1x1YjgzNlx1YjgzYVx1YjgzYlx1YjgzY1x1''@;'; put 'put ''YjgzZFx1YjgzZVx1YjgzZlx1Yjg0MVx1Yjg0Mlx1Yjg0M1x1Yjg0NVx1Yjg0Nlx1Yjg0N1x1Yjg0OFx1Yjg0OVx1Yjg0YVx1Yjg0Ylx1Yjg0Y1x1Yjg0ZFx1Yjg0ZVx1Yjg0Zlx1Yjg1MFx1Yjg1Mlx1Yjg1NFx1Yjg1NVx1Yjg1Nlx1Yjg1N1x1Yjg1OFx1Yjg1OVx1Yjg1YVx1Yjg1Ylx1Yjg1''@;'; put 'put ''ZVx1Yjg1Zlx1Yjg2MVx1Yjg2Mlx1Yjg2M1x1Yjg2NVx1Yjg2Nlx1Yjg2N1x1Yjg2OFx1Yjg2OVx1Yjg2YVx1Yjg2Ylx1Yjg2ZVx1Yjg3MFx1Yjg3Mlx1Yjg3M1x1Yjg3NFx1Yjg3NVx1Yjg3Nlx1Yjg3N1x1Yjg3OVx1Yjg3YVx1Yjg3Ylx1Yjg3ZFx1Yjg3ZVx1Yjg3Zlx1Yjg4MFx1Yjg4MVx1''@;'; put 'put ''Yjg4Mlx1Yjg4M1x1Yjg4NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDJdW0VdXT0zNjM1MitFLExbMzYzNTIrRV09QlsxNDJdW0VdKTtmb3IoQlsxNDNdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI4ODVcdWI4ODZcdWI4ODdcdWI4ODhcdWI4ODlcdWI4OGFcdWI4OGJcdWI4OGNcdWI4OGVcdWI4OGZcdWI4OTBcdWI4OTFcdWI4OTJcdWI4OTNcdWI4OTRcdWI4OTVcdWI4OTZcdWI4OTdcdWI4OThcdWI4OTlc''@;'; put 'put ''dWI4OWFcdWI4OWJcdWI4OWNcdWI4OWRcdWI4OWVcdWI4OWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI4YTBcdWI4YTFcdWI4YTJcdWI4YTNcdWI4YTRcdWI4YTVcdWI4YTZcdWI4YTdcdWI4YTlcdWI4YWFcdWI4YWJcdWI4YWNcdWI4YWRcdWI4YWVcdWI4YWZcdWI4''@;'; put 'put ''YjFcdWI4YjJcdWI4YjNcdWI4YjVcdWI4YjZcdWI4YjdcdWI4YjlcdWI4YmFcdWI4YmJcdWI4YmNcdWI4YmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI4YmVcdWI4YmZcdWI4YzJcdWI4YzRcdWI4YzZcdWI4YzdcdWI4YzhcdWI4YzlcdWI4Y2FcdWI4Y2JcdWI4Y2Rc''@;'; put 'put ''dWI4Y2VcdWI4Y2ZcdWI4ZDFcdWI4ZDJcdWI4ZDNcdWI4ZDVcdWI4ZDZcdWI4ZDdcdWI4ZDhcdWI4ZDlcdWI4ZGFcdWI4ZGJcdWI4ZGNcdWI4ZGVcdWI4ZTBcdWI4ZTJcdWI4ZTNcdWI4ZTRcdWI4ZTVcdWI4ZTZcdWI4ZTdcdWI4ZWFcdWI4ZWJcdWI4ZWRcdWI4ZWVcdWI4ZWZcdWI4ZjFcdWI4''@;'; put 'put ''ZjJcdWI4ZjNcdWI4ZjRcdWI4ZjVcdWI4ZjZcdWI4ZjdcdWI4ZmFcdWI4ZmNcdWI4ZmVcdWI4ZmZcdWI5MDBcdWI5MDFcdWI5MDJcdWI5MDNcdWI5MDVcdWI5MDZcdWI5MDdcdWI5MDhcdWI5MDlcdWI5MGFcdWI5MGJcdWI5MGNcdWI5MGRcdWI5MGVcdWI5MGZcdWI5MTBcdWI5MTFcdWI5MTJc''@;'; put 'put ''dWI5MTNcdWI5MTRcdWI5MTVcdWI5MTZcdWI5MTdcdWI5MTlcdWI5MWFcdWI5MWJcdWI5MWNcdWI5MWRcdWI5MWVcdWI5MWZcdWI5MjFcdWI5MjJcdWI5MjNcdWI5MjRcdWI5MjVcdWI5MjZcdWI5MjdcdWI5MjhcdWI5MjlcdWI5MmFcdWI5MmJcdWI5MmNcdWI5MmRcdWI5MmVcdWI5MmZcdWI5''@;'; put 'put ''MzBcdWI5MzFcdWI5MzJcdWI5MzNcdWI5MzRcdWI5MzVcdWI5MzZcdWI5MzdcdWI5MzhcdWI5MzlcdWI5M2FcdWI5M2JcdWI5M2VcdWI5M2ZcdWI5NDFcdWI5NDJcdWI5NDNcdWI5NDVcdWI5NDZcdWI5NDdcdWI5NDhcdWI5NDlcdWI5NGFcdWI5NGJcdWI5NGRcdWI5NGVcdWI5NTBcdWI5NTJc''@;'; put 'put ''dWI5NTNcdWI5NTRcdWI5NTVcdWI5NTZcdWI5NTdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0M11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQzXVtFXV09MzY2MDgrRSxMWzM2NjA4K0VdPUJbMTQzXVtFXSk7Zm9yKEJbMTQ0XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOTVhXHViOTViXHViOTVkXHViOTVlXHViOTVmXHViOTYxXHViOTYyXHViOTYzXHViOTY0XHViOTY1XHViOTY2XHViOTY3XHViOTZhXHViOTZjXHViOTZlXHViOTZmXHViOTcwXHViOTcx''@;'; put 'put ''XHViOTcyXHViOTczXHViOTc2XHViOTc3XHViOTc5XHViOTdhXHViOTdiXHViOTdkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOTdlXHViOTdmXHViOTgwXHViOTgxXHViOTgyXHViOTgzXHViOTg2XHViOTg4XHViOThiXHViOThjXHViOThmXHViOTkwXHViOTkxXHVi''@;'; put 'put ''OTkyXHViOTkzXHViOTk0XHViOTk1XHViOTk2XHViOTk3XHViOTk4XHViOTk5XHViOTlhXHViOTliXHViOTljXHViOTlkXHViOTllXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOTlmXHViOWEwXHViOWExXHViOWEyXHViOWEzXHViOWE0XHViOWE1XHViOWE2XHViOWE3''@;'; put 'put ''XHViOWE4XHViOWE5XHViOWFhXHViOWFiXHViOWFlXHViOWFmXHViOWIxXHViOWIyXHViOWIzXHViOWI1XHViOWI2XHViOWI3XHViOWI4XHViOWI5XHViOWJhXHViOWJiXHViOWJlXHViOWMwXHViOWMyXHViOWMzXHViOWM0XHViOWM1XHViOWM2XHViOWM3XHViOWNhXHViOWNiXHViOWNkXHVi''@;'; put 'put ''OWQzXHViOWQ0XHViOWQ1XHViOWQ2XHViOWQ3XHViOWRhXHViOWRjXHViOWRmXHViOWUwXHViOWUyXHViOWU2XHViOWU3XHViOWU5XHViOWVhXHViOWViXHViOWVkXHViOWVlXHViOWVmXHViOWYwXHViOWYxXHViOWYyXHViOWYzXHViOWY2XHViOWZiXHViOWZjXHViOWZkXHViOWZlXHViOWZm''@;'; put 'put ''XHViYTAyXHViYTAzXHViYTA0XHViYTA1XHViYTA2XHViYTA3XHViYTA5XHViYTBhXHViYTBiXHViYTBjXHViYTBkXHViYTBlXHViYTBmXHViYTEwXHViYTExXHViYTEyXHViYTEzXHViYTE0XHViYTE2XHViYTE3XHViYTE4XHViYTE5XHViYTFhXHViYTFiXHViYTFjXHViYTFkXHViYTFlXHVi''@;'; put 'put ''YTFmXHViYTIwXHViYTIxXHViYTIyXHViYTIzXHViYTI0XHViYTI1XHViYTI2XHViYTI3XHViYTI4XHViYTI5XHViYTJhXHViYTJiXHViYTJjXHViYTJkXHViYTJlXHViYTJmXHViYTMwXHViYTMxXHViYTMyXHViYTMzXHViYTM0XHViYTM1XHViYTM2XHViYTM3XHViYTNhXHViYTNiXHViYTNk''@;'; put 'put ''XHViYTNlXHViYTNmXHViYTQxXHViYTQzXHViYTQ0XHViYTQ1XHViYTQ2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0NF1bRV1dPTM2ODY0K0UsTFszNjg2NCtFXT1CWzE0NF1bRV0pO2Zv''@;'; put 'put ''cihCWzE0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmE0N1x1YmE0YVx1YmE0Y1x1YmE0Zlx1YmE1MFx1YmE1MVx1YmE1Mlx1YmE1Nlx1YmE1N1x1YmE1OVx1YmE1YVx1YmE1Ylx1YmE1ZFx1YmE1ZVx1YmE1Zlx1YmE2''@;'; put 'put ''MFx1YmE2MVx1YmE2Mlx1YmE2M1x1YmE2Nlx1YmE2YVx1YmE2Ylx1YmE2Y1x1YmE2ZFx1YmE2ZVx1YmE2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmE3Mlx1YmE3M1x1YmE3NVx1YmE3Nlx1YmE3N1x1YmE3OVx1YmE3YVx1YmE3Ylx1YmE3Y1x1YmE3ZFx1YmE3ZVx1''@;'; put 'put ''YmE3Zlx1YmE4MFx1YmE4MVx1YmE4Mlx1YmE4Nlx1YmE4OFx1YmE4OVx1YmE4YVx1YmE4Ylx1YmE4ZFx1YmE4ZVx1YmE4Zlx1YmE5MFx1YmE5MVx1YmE5Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmE5M1x1YmE5NFx1YmE5NVx1YmE5Nlx1YmE5N1x1YmE5OFx1YmE5''@;'; put 'put ''OVx1YmE5YVx1YmE5Ylx1YmE5Y1x1YmE5ZFx1YmE5ZVx1YmE5Zlx1YmFhMFx1YmFhMVx1YmFhMlx1YmFhM1x1YmFhNFx1YmFhNVx1YmFhNlx1YmFhN1x1YmFhYVx1YmFhZFx1YmFhZVx1YmFhZlx1YmFiMVx1YmFiM1x1YmFiNFx1YmFiNVx1YmFiNlx1YmFiN1x1YmFiYVx1YmFiY1x1YmFiZVx1''@;'; put 'put ''YmFiZlx1YmFjMFx1YmFjMVx1YmFjMlx1YmFjM1x1YmFjNVx1YmFjNlx1YmFjN1x1YmFjOVx1YmFjYVx1YmFjYlx1YmFjY1x1YmFjZFx1YmFjZVx1YmFjZlx1YmFkMFx1YmFkMVx1YmFkMlx1YmFkM1x1YmFkNFx1YmFkNVx1YmFkNlx1YmFkN1x1YmFkYVx1YmFkYlx1YmFkY1x1YmFkZFx1YmFk''@;'; put 'put ''ZVx1YmFkZlx1YmFlMFx1YmFlMVx1YmFlMlx1YmFlM1x1YmFlNFx1YmFlNVx1YmFlNlx1YmFlN1x1YmFlOFx1YmFlOVx1YmFlYVx1YmFlYlx1YmFlY1x1YmFlZFx1YmFlZVx1YmFlZlx1YmFmMFx1YmFmMVx1YmFmMlx1YmFmM1x1YmFmNFx1YmFmNVx1YmFmNlx1YmFmN1x1YmFmOFx1YmFmOVx1''@;'; put 'put ''YmFmYVx1YmFmYlx1YmFmZFx1YmFmZVx1YmFmZlx1YmIwMVx1YmIwMlx1YmIwM1x1YmIwNVx1YmIwNlx1YmIwN1x1YmIwOFx1YmIwOVx1YmIwYVx1YmIwYlx1YmIwY1x1YmIwZVx1YmIxMFx1YmIxMlx1YmIxM1x1YmIxNFx1YmIxNVx1YmIxNlx1YmIxN1x1YmIxOVx1YmIxYVx1YmIxYlx1YmIx''@;'; put 'put ''ZFx1YmIxZVx1YmIxZlx1YmIyMVx1YmIyMlx1YmIyM1x1YmIyNFx1YmIyNVx1YmIyNlx1YmIyN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNDVdW0VdXT0zNzEyMCtFLExbMzcxMjArRV09''@;'; put 'put ''QlsxNDVdW0VdKTtmb3IoQlsxNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJiMjhcdWJiMmFcdWJiMmNcdWJiMmRcdWJiMmVcdWJiMmZcdWJiMzBcdWJiMzFcdWJiMzJcdWJiMzNcdWJiMzdcdWJiMzlcdWJiM2FcdWJi''@;'; put 'put ''M2ZcdWJiNDBcdWJiNDFcdWJiNDJcdWJiNDNcdWJiNDZcdWJiNDhcdWJiNGFcdWJiNGJcdWJiNGNcdWJiNGVcdWJiNTFcdWJiNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJiNTNcdWJiNTVcdWJiNTZcdWJiNTdcdWJiNTlcdWJiNWFcdWJiNWJcdWJiNWNcdWJiNWRc''@;'; put 'put ''dWJiNWVcdWJiNWZcdWJiNjBcdWJiNjJcdWJiNjRcdWJiNjVcdWJiNjZcdWJiNjdcdWJiNjhcdWJiNjlcdWJiNmFcdWJiNmJcdWJiNmRcdWJiNmVcdWJiNmZcdWJiNzBcdWJiNzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJiNzJcdWJiNzNcdWJiNzRcdWJiNzVcdWJi''@;'; put 'put ''NzZcdWJiNzdcdWJiNzhcdWJiNzlcdWJiN2FcdWJiN2JcdWJiN2NcdWJiN2RcdWJiN2VcdWJiN2ZcdWJiODBcdWJiODFcdWJiODJcdWJiODNcdWJiODRcdWJiODVcdWJiODZcdWJiODdcdWJiODlcdWJiOGFcdWJiOGJcdWJiOGRcdWJiOGVcdWJiOGZcdWJiOTFcdWJiOTJcdWJiOTNcdWJiOTRc''@;'; put 'put ''dWJiOTVcdWJiOTZcdWJiOTdcdWJiOThcdWJiOTlcdWJiOWFcdWJiOWJcdWJiOWNcdWJiOWRcdWJiOWVcdWJiOWZcdWJiYTBcdWJiYTFcdWJiYTJcdWJiYTNcdWJiYTVcdWJiYTZcdWJiYTdcdWJiYTlcdWJiYWFcdWJiYWJcdWJiYWRcdWJiYWVcdWJiYWZcdWJiYjBcdWJiYjFcdWJiYjJcdWJi''@;'; put 'put ''YjNcdWJiYjVcdWJiYjZcdWJiYjhcdWJiYjlcdWJiYmFcdWJiYmJcdWJiYmNcdWJiYmRcdWJiYmVcdWJiYmZcdWJiYzFcdWJiYzJcdWJiYzNcdWJiYzVcdWJiYzZcdWJiYzdcdWJiYzlcdWJiY2FcdWJiY2JcdWJiY2NcdWJiY2RcdWJiY2VcdWJiY2ZcdWJiZDFcdWJiZDJcdWJiZDRcdWJiZDVc''@;'; put 'put ''dWJiZDZcdWJiZDdcdWJiZDhcdWJiZDlcdWJiZGFcdWJiZGJcdWJiZGNcdWJiZGRcdWJiZGVcdWJiZGZcdWJiZTBcdWJiZTFcdWJiZTJcdWJiZTNcdWJiZTRcdWJiZTVcdWJiZTZcdWJiZTdcdWJiZThcdWJiZTlcdWJiZWFcdWJiZWJcdWJiZWNcdWJiZWRcdWJiZWVcdWJiZWZcdWJiZjBcdWJi''@;'; put 'put ''ZjFcdWJiZjJcdWJiZjNcdWJiZjRcdWJiZjVcdWJiZjZcdWJiZjdcdWJiZmFcdWJiZmJcdWJiZmRcdWJiZmVcdWJjMDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQ2XVtFXV09MzczNzYr''@;'; put 'put ''RSxMWzM3Mzc2K0VdPUJbMTQ2XVtFXSk7Zm9yKEJbMTQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYzAzXHViYzA0XHViYzA1XHViYzA2XHViYzA3XHViYzBhXHViYzBlXHViYzEwXHViYzEyXHViYzEzXHViYzE5XHVi''@;'; put 'put ''YzFhXHViYzIwXHViYzIxXHViYzIyXHViYzIzXHViYzI2XHViYzI4XHViYzJhXHViYzJiXHViYzJjXHViYzJlXHViYzJmXHViYzMyXHViYzMzXHViYzM1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYzM2XHViYzM3XHViYzM5XHViYzNhXHViYzNiXHViYzNjXHViYzNk''@;'; put 'put ''XHViYzNlXHViYzNmXHViYzQyXHViYzQ2XHViYzQ3XHViYzQ4XHViYzRhXHViYzRiXHViYzRlXHViYzRmXHViYzUxXHViYzUyXHViYzUzXHViYzU0XHViYzU1XHViYzU2XHViYzU3XHViYzU4XHViYzU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYzVhXHViYzViXHVi''@;'; put 'put ''YzVjXHViYzVlXHViYzVmXHViYzYwXHViYzYxXHViYzYyXHViYzYzXHViYzY0XHViYzY1XHViYzY2XHViYzY3XHViYzY4XHViYzY5XHViYzZhXHViYzZiXHViYzZjXHViYzZkXHViYzZlXHViYzZmXHViYzcwXHViYzcxXHViYzcyXHViYzczXHViYzc0XHViYzc1XHViYzc2XHViYzc3XHViYzc4''@;'; put 'put ''XHViYzc5XHViYzdhXHViYzdiXHViYzdjXHViYzdkXHViYzdlXHViYzdmXHViYzgwXHViYzgxXHViYzgyXHViYzgzXHViYzg2XHViYzg3XHViYzg5XHViYzhhXHViYzhkXHViYzhmXHViYzkwXHViYzkxXHViYzkyXHViYzkzXHViYzk2XHViYzk4XHViYzliXHViYzljXHViYzlkXHViYzllXHVi''@;'; put 'put ''YzlmXHViY2EyXHViY2EzXHViY2E1XHViY2E2XHViY2E5XHViY2FhXHViY2FiXHViY2FjXHViY2FkXHViY2FlXHViY2FmXHViY2IyXHViY2I2XHViY2I3XHViY2I4XHViY2I5XHViY2JhXHViY2JiXHViY2JlXHViY2JmXHViY2MxXHViY2MyXHViY2MzXHViY2M1XHViY2M2XHViY2M3XHViY2M4''@;'; put 'put ''XHViY2M5XHViY2NhXHViY2NiXHViY2NjXHViY2NlXHViY2QyXHViY2QzXHViY2Q0XHViY2Q2XHViY2Q3XHViY2Q5XHViY2RhXHViY2RiXHViY2RkXHViY2RlXHViY2RmXHViY2UwXHViY2UxXHViY2UyXHViY2UzXHViY2U0XHViY2U1XHViY2U2XHViY2U3XHViY2U4XHViY2U5XHViY2VhXHVi''@;'; put 'put ''Y2ViXHViY2VjXHViY2VkXHViY2VlXHViY2VmXHViY2YwXHViY2YxXHViY2YyXHViY2YzXHViY2Y3XHViY2Y5XHViY2ZhXHViY2ZiXHViY2ZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE0''@;'; put 'put ''N11bRV1dPTM3NjMyK0UsTFszNzYzMitFXT1CWzE0N11bRV0pO2ZvcihCWzE0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmNmZVx1YmNmZlx1YmQwMFx1YmQwMVx1YmQwMlx1YmQwM1x1YmQwNlx1YmQwOFx1YmQwYVx1''@;'; put 'put ''YmQwYlx1YmQwY1x1YmQwZFx1YmQwZVx1YmQwZlx1YmQxMVx1YmQxMlx1YmQxM1x1YmQxNVx1YmQxNlx1YmQxN1x1YmQxOFx1YmQxOVx1YmQxYVx1YmQxYlx1YmQxY1x1YmQxZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmQxZVx1YmQxZlx1YmQyMFx1YmQyMVx1YmQy''@;'; put 'put ''Mlx1YmQyM1x1YmQyNVx1YmQyNlx1YmQyN1x1YmQyOFx1YmQyOVx1YmQyYVx1YmQyYlx1YmQyZFx1YmQyZVx1YmQyZlx1YmQzMFx1YmQzMVx1YmQzMlx1YmQzM1x1YmQzNFx1YmQzNVx1YmQzNlx1YmQzN1x1YmQzOFx1YmQzOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''YmQzYVx1YmQzYlx1YmQzY1x1YmQzZFx1YmQzZVx1YmQzZlx1YmQ0MVx1YmQ0Mlx1YmQ0M1x1YmQ0NFx1YmQ0NVx1YmQ0Nlx1YmQ0N1x1YmQ0YVx1YmQ0Ylx1YmQ0ZFx1YmQ0ZVx1YmQ0Zlx1YmQ1MVx1YmQ1Mlx1YmQ1M1x1YmQ1NFx1YmQ1NVx1YmQ1Nlx1YmQ1N1x1YmQ1YVx1YmQ1Ylx1YmQ1''@;'; put 'put ''Y1x1YmQ1ZFx1YmQ1ZVx1YmQ1Zlx1YmQ2MFx1YmQ2MVx1YmQ2Mlx1YmQ2M1x1YmQ2NVx1YmQ2Nlx1YmQ2N1x1YmQ2OVx1YmQ2YVx1YmQ2Ylx1YmQ2Y1x1YmQ2ZFx1YmQ2ZVx1YmQ2Zlx1YmQ3MFx1YmQ3MVx1YmQ3Mlx1YmQ3M1x1YmQ3NFx1YmQ3NVx1YmQ3Nlx1YmQ3N1x1YmQ3OFx1YmQ3OVx1''@;'; put 'put ''YmQ3YVx1YmQ3Ylx1YmQ3Y1x1YmQ3ZFx1YmQ3ZVx1YmQ3Zlx1YmQ4Mlx1YmQ4M1x1YmQ4NVx1YmQ4Nlx1YmQ4Ylx1YmQ4Y1x1YmQ4ZFx1YmQ4ZVx1YmQ4Zlx1YmQ5Mlx1YmQ5NFx1YmQ5Nlx1YmQ5N1x1YmQ5OFx1YmQ5Ylx1YmQ5ZFx1YmQ5ZVx1YmQ5Zlx1YmRhMFx1YmRhMVx1YmRhMlx1YmRh''@;'; put 'put ''M1x1YmRhNVx1YmRhNlx1YmRhN1x1YmRhOFx1YmRhOVx1YmRhYVx1YmRhYlx1YmRhY1x1YmRhZFx1YmRhZVx1YmRhZlx1YmRiMVx1YmRiMlx1YmRiM1x1YmRiNFx1YmRiNVx1YmRiNlx1YmRiN1x1YmRiOVx1YmRiYVx1YmRiYlx1YmRiY1x1YmRiZFx1YmRiZVx1YmRiZlx1YmRjMFx1YmRjMVx1''@;'; put 'put ''YmRjMlx1YmRjM1x1YmRjNFx1YmRjNVx1YmRjNlx1YmRjN1x1YmRjOFx1YmRjOVx1YmRjYVx1YmRjYlx1YmRjY1x1YmRjZFx1YmRjZVx1YmRjZlx1YmRkMFx1YmRkMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ4XVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoZ2VbQlsxNDhdW0VdXT0zNzg4OCtFLExbMzc4ODgrRV09QlsxNDhdW0VdKTtmb3IoQlsxNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkZDJcdWJkZDNcdWJkZDZcdWJkZDdcdWJkZDlcdWJkZGFcdWJkZGJc''@;'; put 'put ''dWJkZGRcdWJkZGVcdWJkZGZcdWJkZTBcdWJkZTFcdWJkZTJcdWJkZTNcdWJkZTRcdWJkZTVcdWJkZTZcdWJkZTdcdWJkZThcdWJkZWFcdWJkZWJcdWJkZWNcdWJkZWRcdWJkZWVcdWJkZWZcdWJkZjFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkZjJcdWJkZjNcdWJk''@;'; put 'put ''ZjVcdWJkZjZcdWJkZjdcdWJkZjlcdWJkZmFcdWJkZmJcdWJkZmNcdWJkZmRcdWJkZmVcdWJkZmZcdWJlMDFcdWJlMDJcdWJlMDRcdWJlMDZcdWJlMDdcdWJlMDhcdWJlMDlcdWJlMGFcdWJlMGJcdWJlMGVcdWJlMGZcdWJlMTFcdWJlMTJcdWJlMTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWJlMTVcdWJlMTZcdWJlMTdcdWJlMThcdWJlMTlcdWJlMWFcdWJlMWJcdWJlMWVcdWJlMjBcdWJlMjFcdWJlMjJcdWJlMjNcdWJlMjRcdWJlMjVcdWJlMjZcdWJlMjdcdWJlMjhcdWJlMjlcdWJlMmFcdWJlMmJcdWJlMmNcdWJlMmRcdWJlMmVcdWJlMmZcdWJlMzBcdWJl''@;'; put 'put ''MzFcdWJlMzJcdWJlMzNcdWJlMzRcdWJlMzVcdWJlMzZcdWJlMzdcdWJlMzhcdWJlMzlcdWJlM2FcdWJlM2JcdWJlM2NcdWJlM2RcdWJlM2VcdWJlM2ZcdWJlNDBcdWJlNDFcdWJlNDJcdWJlNDNcdWJlNDZcdWJlNDdcdWJlNDlcdWJlNGFcdWJlNGJcdWJlNGRcdWJlNGZcdWJlNTBcdWJlNTFc''@;'; put 'put ''dWJlNTJcdWJlNTNcdWJlNTZcdWJlNThcdWJlNWNcdWJlNWRcdWJlNWVcdWJlNWZcdWJlNjJcdWJlNjNcdWJlNjVcdWJlNjZcdWJlNjdcdWJlNjlcdWJlNmJcdWJlNmNcdWJlNmRcdWJlNmVcdWJlNmZcdWJlNzJcdWJlNzZcdWJlNzdcdWJlNzhcdWJlNzlcdWJlN2FcdWJlN2VcdWJlN2ZcdWJl''@;'; put 'put ''ODFcdWJlODJcdWJlODNcdWJlODVcdWJlODZcdWJlODdcdWJlODhcdWJlODlcdWJlOGFcdWJlOGJcdWJlOGVcdWJlOTJcdWJlOTNcdWJlOTRcdWJlOTVcdWJlOTZcdWJlOTdcdWJlOWFcdWJlOWJcdWJlOWNcdWJlOWRcdWJlOWVcdWJlOWZcdWJlYTBcdWJlYTFcdWJlYTJcdWJlYTNcdWJlYTRc''@;'; put 'put ''dWJlYTVcdWJlYTZcdWJlYTdcdWJlYTlcdWJlYWFcdWJlYWJcdWJlYWNcdWJlYWRcdWJlYWVcdWJlYWZcdWJlYjBcdWJlYjFcdWJlYjJcdWJlYjNcdWJlYjRcdWJlYjVcdWJlYjZcdWJlYjdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0OV1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTQ5XVtFXV09MzgxNDQrRSxMWzM4MTQ0K0VdPUJbMTQ5XVtFXSk7Zm9yKEJbMTUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZWI4XHViZWI5XHViZWJhXHViZWJiXHViZWJj''@;'; put 'put ''XHViZWJkXHViZWJlXHViZWJmXHViZWMwXHViZWMxXHViZWMyXHViZWMzXHViZWM0XHViZWM1XHViZWM2XHViZWM3XHViZWM4XHViZWM5XHViZWNhXHViZWNiXHViZWNjXHViZWNkXHViZWNlXHViZWNmXHViZWQyXHViZWQzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVi''@;'; put 'put ''ZWQ1XHViZWQ2XHViZWQ5XHViZWRhXHViZWRiXHViZWRjXHViZWRkXHViZWRlXHViZWRmXHViZWUxXHViZWUyXHViZWU2XHViZWU3XHViZWU4XHViZWU5XHViZWVhXHViZWViXHViZWVkXHViZWVlXHViZWVmXHViZWYwXHViZWYxXHViZWYyXHViZWYzXHViZWY0XHViZWY1XHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZWY2XHViZWY3XHViZWY4XHViZWY5XHViZWZhXHViZWZiXHViZWZjXHViZWZkXHViZWZlXHViZWZmXHViZjAwXHViZjAyXHViZjAzXHViZjA0XHViZjA1XHViZjA2XHViZjA3XHViZjBhXHViZjBiXHViZjBjXHViZjBkXHViZjBlXHViZjBmXHVi''@;'; put 'put ''ZjEwXHViZjExXHViZjEyXHViZjEzXHViZjE0XHViZjE1XHViZjE2XHViZjE3XHViZjFhXHViZjFlXHViZjFmXHViZjIwXHViZjIxXHViZjIyXHViZjIzXHViZjI0XHViZjI1XHViZjI2XHViZjI3XHViZjI4XHViZjI5XHViZjJhXHViZjJiXHViZjJjXHViZjJkXHViZjJlXHViZjJmXHViZjMw''@;'; put 'put ''XHViZjMxXHViZjMyXHViZjMzXHViZjM0XHViZjM1XHViZjM2XHViZjM3XHViZjM4XHViZjM5XHViZjNhXHViZjNiXHViZjNjXHViZjNkXHViZjNlXHViZjNmXHViZjQyXHViZjQzXHViZjQ1XHViZjQ2XHViZjQ3XHViZjQ5XHViZjRhXHViZjRiXHViZjRjXHViZjRkXHViZjRlXHViZjRmXHVi''@;'; put 'put ''ZjUyXHViZjUzXHViZjU0XHViZjU2XHViZjU3XHViZjU4XHViZjU5XHViZjVhXHViZjViXHViZjVjXHViZjVkXHViZjVlXHViZjVmXHViZjYwXHViZjYxXHViZjYyXHViZjYzXHViZjY0XHViZjY1XHViZjY2XHViZjY3XHViZjY4XHViZjY5XHViZjZhXHViZjZiXHViZjZjXHViZjZkXHViZjZl''@;'; put 'put ''XHViZjZmXHViZjcwXHViZjcxXHViZjcyXHViZjczXHViZjc0XHViZjc1XHViZjc2XHViZjc3XHViZjc4XHViZjc5XHViZjdhXHViZjdiXHViZjdjXHViZjdkXHViZjdlXHViZjdmXHViZjgwXHViZjgxXHViZjgyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTUwXS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxNTBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1MF1bRV1dPTM4NDAwK0UsTFszODQwMCtFXT1CWzE1MF1bRV0pO2ZvcihCWzE1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmY4M1x1YmY4NFx1YmY4''@;'; put 'put ''NVx1YmY4Nlx1YmY4N1x1YmY4OFx1YmY4OVx1YmY4YVx1YmY4Ylx1YmY4Y1x1YmY4ZFx1YmY4ZVx1YmY4Zlx1YmY5MFx1YmY5MVx1YmY5Mlx1YmY5M1x1YmY5NVx1YmY5Nlx1YmY5N1x1YmY5OFx1YmY5OVx1YmY5YVx1YmY5Ylx1YmY5Y1x1YmY5ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1YmY5ZVx1YmY5Zlx1YmZhMFx1YmZhMVx1YmZhMlx1YmZhM1x1YmZhNFx1YmZhNVx1YmZhNlx1YmZhN1x1YmZhOFx1YmZhOVx1YmZhYVx1YmZhYlx1YmZhY1x1YmZhZFx1YmZhZVx1YmZhZlx1YmZiMVx1YmZiMlx1YmZiM1x1YmZiNFx1YmZiNVx1YmZiNlx1YmZiN1x1YmZi''@;'; put 'put ''OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmZiOVx1YmZiYVx1YmZiYlx1YmZiY1x1YmZiZFx1YmZiZVx1YmZiZlx1YmZjMFx1YmZjMVx1YmZjMlx1YmZjM1x1YmZjNFx1YmZjNlx1YmZjN1x1YmZjOFx1YmZjOVx1YmZjYVx1YmZjYlx1YmZjZVx1YmZjZlx1YmZkMVx1''@;'; put 'put ''YmZkMlx1YmZkM1x1YmZkNVx1YmZkNlx1YmZkN1x1YmZkOFx1YmZkOVx1YmZkYVx1YmZkYlx1YmZkZFx1YmZkZVx1YmZlMFx1YmZlMlx1YmZlM1x1YmZlNFx1YmZlNVx1YmZlNlx1YmZlN1x1YmZlOFx1YmZlOVx1YmZlYVx1YmZlYlx1YmZlY1x1YmZlZFx1YmZlZVx1YmZlZlx1YmZmMFx1YmZm''@;'; put 'put ''MVx1YmZmMlx1YmZmM1x1YmZmNFx1YmZmNVx1YmZmNlx1YmZmN1x1YmZmOFx1YmZmOVx1YmZmYVx1YmZmYlx1YmZmY1x1YmZmZFx1YmZmZVx1YmZmZlx1YzAwMFx1YzAwMVx1YzAwMlx1YzAwM1x1YzAwNFx1YzAwNVx1YzAwNlx1YzAwN1x1YzAwOFx1YzAwOVx1YzAwYVx1YzAwYlx1YzAwY1x1''@;'; put 'put ''YzAwZFx1YzAwZVx1YzAwZlx1YzAxMFx1YzAxMVx1YzAxMlx1YzAxM1x1YzAxNFx1YzAxNVx1YzAxNlx1YzAxN1x1YzAxOFx1YzAxOVx1YzAxYVx1YzAxYlx1YzAxY1x1YzAxZFx1YzAxZVx1YzAxZlx1YzAyMFx1YzAyMVx1YzAyMlx1YzAyM1x1YzAyNFx1YzAyNVx1YzAyNlx1YzAyN1x1YzAy''@;'; put 'put ''OFx1YzAyOVx1YzAyYVx1YzAyYlx1YzAyY1x1YzAyZFx1YzAyZVx1YzAyZlx1YzAzMFx1YzAzMVx1YzAzMlx1YzAzM1x1YzAzNFx1YzAzNVx1YzAzNlx1YzAzN1x1YzAzOFx1YzAzOVx1YzAzYVx1YzAzYlx1YzAzZFx1YzAzZVx1YzAzZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1MV0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTFdW0VdXT0zODY1NitFLExbMzg2NTYrRV09QlsxNTFdW0VdKTtmb3IoQlsxNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMw''@;'; put 'put ''NDBcdWMwNDFcdWMwNDJcdWMwNDNcdWMwNDRcdWMwNDVcdWMwNDZcdWMwNDdcdWMwNDhcdWMwNDlcdWMwNGFcdWMwNGJcdWMwNGNcdWMwNGRcdWMwNGVcdWMwNGZcdWMwNTBcdWMwNTJcdWMwNTNcdWMwNTRcdWMwNTVcdWMwNTZcdWMwNTdcdWMwNTlcdWMwNWFcdWMwNWJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMwNWRcdWMwNWVcdWMwNWZcdWMwNjFcdWMwNjJcdWMwNjNcdWMwNjRcdWMwNjVcdWMwNjZcdWMwNjdcdWMwNmFcdWMwNmJcdWMwNmNcdWMwNmRcdWMwNmVcdWMwNmZcdWMwNzBcdWMwNzFcdWMwNzJcdWMwNzNcdWMwNzRcdWMwNzVcdWMwNzZcdWMw''@;'; put 'put ''NzdcdWMwNzhcdWMwNzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMwN2FcdWMwN2JcdWMwN2NcdWMwN2RcdWMwN2VcdWMwN2ZcdWMwODBcdWMwODFcdWMwODJcdWMwODNcdWMwODRcdWMwODVcdWMwODZcdWMwODdcdWMwODhcdWMwODlcdWMwOGFcdWMwOGJcdWMwOGNc''@;'; put 'put ''dWMwOGRcdWMwOGVcdWMwOGZcdWMwOTJcdWMwOTNcdWMwOTVcdWMwOTZcdWMwOTdcdWMwOTlcdWMwOWFcdWMwOWJcdWMwOWNcdWMwOWRcdWMwOWVcdWMwOWZcdWMwYTJcdWMwYTRcdWMwYTZcdWMwYTdcdWMwYThcdWMwYTlcdWMwYWFcdWMwYWJcdWMwYWVcdWMwYjFcdWMwYjJcdWMwYjdcdWMw''@;'; put 'put ''YjhcdWMwYjlcdWMwYmFcdWMwYmJcdWMwYmVcdWMwYzJcdWMwYzNcdWMwYzRcdWMwYzZcdWMwYzdcdWMwY2FcdWMwY2JcdWMwY2RcdWMwY2VcdWMwY2ZcdWMwZDFcdWMwZDJcdWMwZDNcdWMwZDRcdWMwZDVcdWMwZDZcdWMwZDdcdWMwZGFcdWMwZGVcdWMwZGZcdWMwZTBcdWMwZTFcdWMwZTJc''@;'; put 'put ''dWMwZTNcdWMwZTZcdWMwZTdcdWMwZTlcdWMwZWFcdWMwZWJcdWMwZWRcdWMwZWVcdWMwZWZcdWMwZjBcdWMwZjFcdWMwZjJcdWMwZjNcdWMwZjZcdWMwZjhcdWMwZmFcdWMwZmJcdWMwZmNcdWMwZmRcdWMwZmVcdWMwZmZcdWMxMDFcdWMxMDJcdWMxMDNcdWMxMDVcdWMxMDZcdWMxMDdcdWMx''@;'; put 'put ''MDlcdWMxMGFcdWMxMGJcdWMxMGNcdWMxMGRcdWMxMGVcdWMxMGZcdWMxMTFcdWMxMTJcdWMxMTNcdWMxMTRcdWMxMTZcdWMxMTdcdWMxMThcdWMxMTlcdWMxMWFcdWMxMWJcdWMxMjFcdWMxMjJcdWMxMjVcdWMxMjhcdWMxMjlcdWMxMmFcdWMxMmJcdWMxMmVcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxNTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTUyXVtFXV09Mzg5MTIrRSxMWzM4OTEyK0VdPUJbMTUyXVtFXSk7Zm9yKEJbMTUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVjMTMyXHVjMTMzXHVjMTM0XHVjMTM1XHVjMTM3XHVjMTNhXHVjMTNiXHVjMTNkXHVjMTNlXHVjMTNmXHVjMTQxXHVjMTQyXHVjMTQzXHVjMTQ0XHVjMTQ1XHVjMTQ2XHVjMTQ3XHVjMTRhXHVjMTRlXHVjMTRmXHVjMTUwXHVjMTUxXHVjMTUyXHVjMTUzXHVjMTU2XHVjMTU3''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMTU5XHVjMTVhXHVjMTViXHVjMTVkXHVjMTVlXHVjMTVmXHVjMTYwXHVjMTYxXHVjMTYyXHVjMTYzXHVjMTY2XHVjMTZhXHVjMTZiXHVjMTZjXHVjMTZkXHVjMTZlXHVjMTZmXHVjMTcxXHVjMTcyXHVjMTczXHVjMTc1XHVj''@;'; put 'put ''MTc2XHVjMTc3XHVjMTc5XHVjMTdhXHVjMTdiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMTdjXHVjMTdkXHVjMTdlXHVjMTdmXHVjMTgwXHVjMTgxXHVjMTgyXHVjMTgzXHVjMTg0XHVjMTg2XHVjMTg3XHVjMTg4XHVjMTg5XHVjMThhXHVjMThiXHVjMThmXHVjMTkx''@;'; put 'put ''XHVjMTkyXHVjMTkzXHVjMTk1XHVjMTk3XHVjMTk4XHVjMTk5XHVjMTlhXHVjMTliXHVjMTllXHVjMWEwXHVjMWEyXHVjMWEzXHVjMWE0XHVjMWE2XHVjMWE3XHVjMWFhXHVjMWFiXHVjMWFkXHVjMWFlXHVjMWFmXHVjMWIxXHVjMWIyXHVjMWIzXHVjMWI0XHVjMWI1XHVjMWI2XHVjMWI3XHVj''@;'; put 'put ''MWI4XHVjMWI5XHVjMWJhXHVjMWJiXHVjMWJjXHVjMWJlXHVjMWJmXHVjMWMwXHVjMWMxXHVjMWMyXHVjMWMzXHVjMWM1XHVjMWM2XHVjMWM3XHVjMWM5XHVjMWNhXHVjMWNiXHVjMWNkXHVjMWNlXHVjMWNmXHVjMWQwXHVjMWQxXHVjMWQyXHVjMWQzXHVjMWQ1XHVjMWQ2XHVjMWQ5XHVjMWRh''@;'; put 'put ''XHVjMWRiXHVjMWRjXHVjMWRkXHVjMWRlXHVjMWRmXHVjMWUxXHVjMWUyXHVjMWUzXHVjMWU1XHVjMWU2XHVjMWU3XHVjMWU5XHVjMWVhXHVjMWViXHVjMWVjXHVjMWVkXHVjMWVlXHVjMWVmXHVjMWYyXHVjMWY0XHVjMWY1XHVjMWY2XHVjMWY3XHVjMWY4XHVjMWY5XHVjMWZhXHVjMWZiXHVj''@;'; put 'put ''MWZlXHVjMWZmXHVjMjAxXHVjMjAyXHVjMjAzXHVjMjA1XHVjMjA2XHVjMjA3XHVjMjA4XHVjMjA5XHVjMjBhXHVjMjBiXHVjMjBlXHVjMjEwXHVjMjEyXHVjMjEzXHVjMjE0XHVjMjE1XHVjMjE2XHVjMjE3XHVjMjFhXHVjMjFiXHVjMjFkXHVjMjFlXHVjMjIxXHVjMjIyXHVjMjIzXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTUzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1M11bRV1dPTM5MTY4K0UsTFszOTE2OCtFXT1CWzE1M11bRV0pO2ZvcihCWzE1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzIyNFx1YzIyNVx1YzIyNlx1YzIyN1x1YzIyYVx1YzIyY1x1YzIyZVx1YzIzMFx1YzIzM1x1YzIzNVx1YzIzNlx1YzIzN1x1YzIzOFx1YzIzOVx1YzIzYVx1YzIzYlx1YzIzY1x1YzIzZFx1YzIzZVx1YzIzZlx1YzI0MFx1YzI0MVx1YzI0Mlx1YzI0''@;'; put 'put ''M1x1YzI0NFx1YzI0NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzI0Nlx1YzI0N1x1YzI0OVx1YzI0YVx1YzI0Ylx1YzI0Y1x1YzI0ZFx1YzI0ZVx1YzI0Zlx1YzI1Mlx1YzI1M1x1YzI1NVx1YzI1Nlx1YzI1N1x1YzI1OVx1YzI1YVx1YzI1Ylx1YzI1Y1x1YzI1ZFx1''@;'; put 'put ''YzI1ZVx1YzI1Zlx1YzI2MVx1YzI2Mlx1YzI2M1x1YzI2NFx1YzI2Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzI2N1x1YzI2OFx1YzI2OVx1YzI2YVx1YzI2Ylx1YzI2ZVx1YzI2Zlx1YzI3MVx1YzI3Mlx1YzI3M1x1YzI3NVx1YzI3Nlx1YzI3N1x1YzI3OFx1YzI3''@;'; put 'put ''OVx1YzI3YVx1YzI3Ylx1YzI3ZVx1YzI4MFx1YzI4Mlx1YzI4M1x1YzI4NFx1YzI4NVx1YzI4Nlx1YzI4N1x1YzI4YVx1YzI4Ylx1YzI4Y1x1YzI4ZFx1YzI4ZVx1YzI4Zlx1YzI5MVx1YzI5Mlx1YzI5M1x1YzI5NFx1YzI5NVx1YzI5Nlx1YzI5N1x1YzI5OVx1YzI5YVx1YzI5Y1x1YzI5ZVx1''@;'; put 'put ''YzI5Zlx1YzJhMFx1YzJhMVx1YzJhMlx1YzJhM1x1YzJhNlx1YzJhN1x1YzJhOVx1YzJhYVx1YzJhYlx1YzJhZVx1YzJhZlx1YzJiMFx1YzJiMVx1YzJiMlx1YzJiM1x1YzJiNlx1YzJiOFx1YzJiYVx1YzJiYlx1YzJiY1x1YzJiZFx1YzJiZVx1YzJiZlx1YzJjMFx1YzJjMVx1YzJjMlx1YzJj''@;'; put 'put ''M1x1YzJjNFx1YzJjNVx1YzJjNlx1YzJjN1x1YzJjOFx1YzJjOVx1YzJjYVx1YzJjYlx1YzJjY1x1YzJjZFx1YzJjZVx1YzJjZlx1YzJkMFx1YzJkMVx1YzJkMlx1YzJkM1x1YzJkNFx1YzJkNVx1YzJkNlx1YzJkN1x1YzJkOFx1YzJkOVx1YzJkYVx1YzJkYlx1YzJkZVx1YzJkZlx1YzJlMVx1''@;'; put 'put ''YzJlMlx1YzJlNVx1YzJlNlx1YzJlN1x1YzJlOFx1YzJlOVx1YzJlYVx1YzJlZVx1YzJmMFx1YzJmMlx1YzJmM1x1YzJmNFx1YzJmNVx1YzJmN1x1YzJmYVx1YzJmZFx1YzJmZVx1YzJmZlx1YzMwMVx1YzMwMlx1YzMwM1x1YzMwNFx1YzMwNVx1YzMwNlx1YzMwN1x1YzMwYVx1YzMwYlx1YzMw''@;'; put 'put ''ZVx1YzMwZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTRdW0VdXT0zOTQyNCtFLExbMzk0MjQrRV09QlsxNTRdW0VdKTtmb3IoQlsxNTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMzMTBcdWMzMTFcdWMzMTJcdWMzMTZcdWMzMTdcdWMzMTlcdWMzMWFcdWMzMWJcdWMzMWRcdWMzMWVcdWMzMWZcdWMzMjBcdWMzMjFcdWMzMjJcdWMzMjNcdWMzMjZcdWMzMjdcdWMzMmFcdWMzMmJcdWMzMmNcdWMzMmRcdWMz''@;'; put 'put ''MmVcdWMzMmZcdWMzMzBcdWMzMzFcdWMzMzJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMzMzNcdWMzMzRcdWMzMzVcdWMzMzZcdWMzMzdcdWMzMzhcdWMzMzlcdWMzM2FcdWMzM2JcdWMzM2NcdWMzM2RcdWMzM2VcdWMzM2ZcdWMzNDBcdWMzNDFcdWMzNDJcdWMzNDNc''@;'; put 'put ''dWMzNDRcdWMzNDZcdWMzNDdcdWMzNDhcdWMzNDlcdWMzNGFcdWMzNGJcdWMzNGNcdWMzNGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMzNGVcdWMzNGZcdWMzNTBcdWMzNTFcdWMzNTJcdWMzNTNcdWMzNTRcdWMzNTVcdWMzNTZcdWMzNTdcdWMzNThcdWMzNTlcdWMz''@;'; put 'put ''NWFcdWMzNWJcdWMzNWNcdWMzNWRcdWMzNWVcdWMzNWZcdWMzNjBcdWMzNjFcdWMzNjJcdWMzNjNcdWMzNjRcdWMzNjVcdWMzNjZcdWMzNjdcdWMzNmFcdWMzNmJcdWMzNmRcdWMzNmVcdWMzNmZcdWMzNzFcdWMzNzNcdWMzNzRcdWMzNzVcdWMzNzZcdWMzNzdcdWMzN2FcdWMzN2JcdWMzN2Vc''@;'; put 'put ''dWMzN2ZcdWMzODBcdWMzODFcdWMzODJcdWMzODNcdWMzODVcdWMzODZcdWMzODdcdWMzODlcdWMzOGFcdWMzOGJcdWMzOGRcdWMzOGVcdWMzOGZcdWMzOTBcdWMzOTFcdWMzOTJcdWMzOTNcdWMzOTRcdWMzOTVcdWMzOTZcdWMzOTdcdWMzOThcdWMzOTlcdWMzOWFcdWMzOWJcdWMzOWNcdWMz''@;'; put 'put ''OWRcdWMzOWVcdWMzOWZcdWMzYTBcdWMzYTFcdWMzYTJcdWMzYTNcdWMzYTRcdWMzYTVcdWMzYTZcdWMzYTdcdWMzYThcdWMzYTlcdWMzYWFcdWMzYWJcdWMzYWNcdWMzYWRcdWMzYWVcdWMzYWZcdWMzYjBcdWMzYjFcdWMzYjJcdWMzYjNcdWMzYjRcdWMzYjVcdWMzYjZcdWMzYjdcdWMzYjhc''@;'; put 'put ''dWMzYjlcdWMzYmFcdWMzYmJcdWMzYmNcdWMzYmRcdWMzYmVcdWMzYmZcdWMzYzFcdWMzYzJcdWMzYzNcdWMzYzRcdWMzYzVcdWMzYzZcdWMzYzdcdWMzYzhcdWMzYzlcdWMzY2FcdWMzY2JcdWMzY2NcdWMzY2RcdWMzY2VcdWMzY2ZcdWMzZDBcdWMzZDFcdWMzZDJcdWMzZDNcdWMzZDRcdWMz''@;'; put 'put ''ZDVcdWMzZDZcdWMzZDdcdWMzZGFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1NV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTU1XVtFXV09Mzk2ODArRSxMWzM5NjgwK0VdPUJbMTU1XVtFXSk7Zm9yKEJbMTU2XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjM2RiXHVjM2RkXHVjM2RlXHVjM2UxXHVjM2UzXHVjM2U0XHVjM2U1XHVjM2U2XHVjM2U3XHVjM2VhXHVjM2ViXHVjM2VjXHVjM2VlXHVjM2VmXHVjM2YwXHVjM2YxXHVjM2YyXHVjM2YzXHVjM2Y2XHVj''@;'; put 'put ''M2Y3XHVjM2Y5XHVjM2ZhXHVjM2ZiXHVjM2ZjXHVjM2ZkXHVjM2ZlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjM2ZmXHVjNDAwXHVjNDAxXHVjNDAyXHVjNDAzXHVjNDA0XHVjNDA1XHVjNDA2XHVjNDA3XHVjNDA5XHVjNDBhXHVjNDBiXHVjNDBjXHVjNDBkXHVjNDBl''@;'; put 'put ''XHVjNDBmXHVjNDExXHVjNDEyXHVjNDEzXHVjNDE0XHVjNDE1XHVjNDE2XHVjNDE3XHVjNDE4XHVjNDE5XHVjNDFhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNDFiXHVjNDFjXHVjNDFkXHVjNDFlXHVjNDFmXHVjNDIwXHVjNDIxXHVjNDIyXHVjNDIzXHVjNDI1XHVj''@;'; put 'put ''NDI2XHVjNDI3XHVjNDI4XHVjNDI5XHVjNDJhXHVjNDJiXHVjNDJkXHVjNDJlXHVjNDJmXHVjNDMxXHVjNDMyXHVjNDMzXHVjNDM1XHVjNDM2XHVjNDM3XHVjNDM4XHVjNDM5XHVjNDNhXHVjNDNiXHVjNDNlXHVjNDNmXHVjNDQwXHVjNDQxXHVjNDQyXHVjNDQzXHVjNDQ0XHVjNDQ1XHVjNDQ2''@;'; put 'put ''XHVjNDQ3XHVjNDQ5XHVjNDRhXHVjNDRiXHVjNDRjXHVjNDRkXHVjNDRlXHVjNDRmXHVjNDUwXHVjNDUxXHVjNDUyXHVjNDUzXHVjNDU0XHVjNDU1XHVjNDU2XHVjNDU3XHVjNDU4XHVjNDU5XHVjNDVhXHVjNDViXHVjNDVjXHVjNDVkXHVjNDVlXHVjNDVmXHVjNDYwXHVjNDYxXHVjNDYyXHVj''@;'; put 'put ''NDYzXHVjNDY2XHVjNDY3XHVjNDY5XHVjNDZhXHVjNDZiXHVjNDZkXHVjNDZlXHVjNDZmXHVjNDcwXHVjNDcxXHVjNDcyXHVjNDczXHVjNDc2XHVjNDc3XHVjNDc4XHVjNDdhXHVjNDdiXHVjNDdjXHVjNDdkXHVjNDdlXHVjNDdmXHVjNDgxXHVjNDgyXHVjNDgzXHVjNDg0XHVjNDg1XHVjNDg2''@;'; put 'put ''XHVjNDg3XHVjNDg4XHVjNDg5XHVjNDhhXHVjNDhiXHVjNDhjXHVjNDhkXHVjNDhlXHVjNDhmXHVjNDkwXHVjNDkxXHVjNDkyXHVjNDkzXHVjNDk1XHVjNDk2XHVjNDk3XHVjNDk4XHVjNDk5XHVjNDlhXHVjNDliXHVjNDlkXHVjNDllXHVjNDlmXHVjNGEwXHVjNGExXHVjNGEyXHVjNGEzXHVj''@;'; put 'put ''NGE0XHVjNGE1XHVjNGE2XHVjNGE3XHVjNGE4XHVjNGE5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1Nl1bRV1dPTM5OTM2K0UsTFszOTkzNitFXT1CWzE1Nl1bRV0pO2ZvcihCWzE1N109''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRhYVx1YzRhYlx1YzRhY1x1YzRhZFx1YzRhZVx1YzRhZlx1YzRiMFx1YzRiMVx1YzRiMlx1YzRiM1x1YzRiNFx1YzRiNVx1YzRiNlx1YzRiN1x1YzRiOVx1YzRiYVx1YzRiYlx1''@;'; put 'put ''YzRiZFx1YzRiZVx1YzRiZlx1YzRjMFx1YzRjMVx1YzRjMlx1YzRjM1x1YzRjNFx1YzRjNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRjNlx1YzRjN1x1YzRjOFx1YzRjOVx1YzRjYVx1YzRjYlx1YzRjY1x1YzRjZFx1YzRjZVx1YzRjZlx1YzRkMFx1YzRkMVx1YzRk''@;'; put 'put ''Mlx1YzRkM1x1YzRkNFx1YzRkNVx1YzRkNlx1YzRkN1x1YzRkOFx1YzRkOVx1YzRkYVx1YzRkYlx1YzRkY1x1YzRkZFx1YzRkZVx1YzRkZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRlMFx1YzRlMVx1YzRlMlx1YzRlM1x1YzRlNFx1YzRlNVx1YzRlNlx1YzRlN1x1''@;'; put 'put ''YzRlOFx1YzRlYVx1YzRlYlx1YzRlY1x1YzRlZFx1YzRlZVx1YzRlZlx1YzRmMlx1YzRmM1x1YzRmNVx1YzRmNlx1YzRmN1x1YzRmOVx1YzRmYlx1YzRmY1x1YzRmZFx1YzRmZVx1YzUwMlx1YzUwM1x1YzUwNFx1YzUwNVx1YzUwNlx1YzUwN1x1YzUwOFx1YzUwOVx1YzUwYVx1YzUwYlx1YzUw''@;'; put 'put ''ZFx1YzUwZVx1YzUwZlx1YzUxMVx1YzUxMlx1YzUxM1x1YzUxNVx1YzUxNlx1YzUxN1x1YzUxOFx1YzUxOVx1YzUxYVx1YzUxYlx1YzUxZFx1YzUxZVx1YzUxZlx1YzUyMFx1YzUyMVx1YzUyMlx1YzUyM1x1YzUyNFx1YzUyNVx1YzUyNlx1YzUyN1x1YzUyYVx1YzUyYlx1YzUyZFx1YzUyZVx1''@;'; put 'put ''YzUyZlx1YzUzMVx1YzUzMlx1YzUzM1x1YzUzNFx1YzUzNVx1YzUzNlx1YzUzN1x1YzUzYVx1YzUzY1x1YzUzZVx1YzUzZlx1YzU0MFx1YzU0MVx1YzU0Mlx1YzU0M1x1YzU0Nlx1YzU0N1x1YzU0Ylx1YzU0Zlx1YzU1MFx1YzU1MVx1YzU1Mlx1YzU1Nlx1YzU1YVx1YzU1Ylx1YzU1Y1x1YzU1''@;'; put 'put ''Zlx1YzU2Mlx1YzU2M1x1YzU2NVx1YzU2Nlx1YzU2N1x1YzU2OVx1YzU2YVx1YzU2Ylx1YzU2Y1x1YzU2ZFx1YzU2ZVx1YzU2Zlx1YzU3Mlx1YzU3Nlx1YzU3N1x1YzU3OFx1YzU3OVx1YzU3YVx1YzU3Ylx1YzU3ZVx1YzU3Zlx1YzU4MVx1YzU4Mlx1YzU4M1x1YzU4NVx1YzU4Nlx1YzU4OFx1''@;'; put 'put ''YzU4OVx1YzU4YVx1YzU4Ylx1YzU4ZVx1YzU5MFx1YzU5Mlx1YzU5M1x1YzU5NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNTddW0VdXT00MDE5MitFLExbNDAxOTIrRV09QlsxNTddW0Vd''@;'; put 'put ''KTtmb3IoQlsxNThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM1OTZcdWM1OTlcdWM1OWFcdWM1OWJcdWM1OWRcdWM1OWVcdWM1OWZcdWM1YTFcdWM1YTJcdWM1YTNcdWM1YTRcdWM1YTVcdWM1YTZcdWM1YTdcdWM1YThc''@;'; put 'put ''dWM1YWFcdWM1YWJcdWM1YWNcdWM1YWRcdWM1YWVcdWM1YWZcdWM1YjBcdWM1YjFcdWM1YjJcdWM1YjNcdWM1YjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM1YjdcdWM1YmFcdWM1YmZcdWM1YzBcdWM1YzFcdWM1YzJcdWM1YzNcdWM1Y2JcdWM1Y2RcdWM1Y2ZcdWM1''@;'; put 'put ''ZDJcdWM1ZDNcdWM1ZDVcdWM1ZDZcdWM1ZDdcdWM1ZDlcdWM1ZGFcdWM1ZGJcdWM1ZGNcdWM1ZGRcdWM1ZGVcdWM1ZGZcdWM1ZTJcdWM1ZTRcdWM1ZTZcdWM1ZTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM1ZThcdWM1ZTlcdWM1ZWFcdWM1ZWJcdWM1ZWZcdWM1ZjFc''@;'; put 'put ''dWM1ZjJcdWM1ZjNcdWM1ZjVcdWM1ZjhcdWM1ZjlcdWM1ZmFcdWM1ZmJcdWM2MDJcdWM2MDNcdWM2MDRcdWM2MDlcdWM2MGFcdWM2MGJcdWM2MGRcdWM2MGVcdWM2MGZcdWM2MTFcdWM2MTJcdWM2MTNcdWM2MTRcdWM2MTVcdWM2MTZcdWM2MTdcdWM2MWFcdWM2MWRcdWM2MWVcdWM2MWZcdWM2''@;'; put 'put ''MjBcdWM2MjFcdWM2MjJcdWM2MjNcdWM2MjZcdWM2MjdcdWM2MjlcdWM2MmFcdWM2MmJcdWM2MmZcdWM2MzFcdWM2MzJcdWM2MzZcdWM2MzhcdWM2M2FcdWM2M2NcdWM2M2RcdWM2M2VcdWM2M2ZcdWM2NDJcdWM2NDNcdWM2NDVcdWM2NDZcdWM2NDdcdWM2NDlcdWM2NGFcdWM2NGJcdWM2NGNc''@;'; put 'put ''dWM2NGRcdWM2NGVcdWM2NGZcdWM2NTJcdWM2NTZcdWM2NTdcdWM2NThcdWM2NTlcdWM2NWFcdWM2NWJcdWM2NWVcdWM2NWZcdWM2NjFcdWM2NjJcdWM2NjNcdWM2NjRcdWM2NjVcdWM2NjZcdWM2NjdcdWM2NjhcdWM2NjlcdWM2NmFcdWM2NmJcdWM2NmRcdWM2NmVcdWM2NzBcdWM2NzJcdWM2''@;'; put 'put ''NzNcdWM2NzRcdWM2NzVcdWM2NzZcdWM2NzdcdWM2N2FcdWM2N2JcdWM2N2RcdWM2N2VcdWM2N2ZcdWM2ODFcdWM2ODJcdWM2ODNcdWM2ODRcdWM2ODVcdWM2ODZcdWM2ODdcdWM2OGFcdWM2OGNcdWM2OGVcdWM2OGZcdWM2OTBcdWM2OTFcdWM2OTJcdWM2OTNcdWM2OTZcdWM2OTdcdWM2OTlc''@;'; put 'put ''dWM2OWFcdWM2OWJcdWM2OWRcdWM2OWVcdWM2OWZcdWM2YTBcdWM2YTFcdWM2YTJcdWM2YTNcdWM2YTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNThdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTU4XVtFXV09NDA0NDgrRSxMWzQwNDQ4''@;'; put 'put ''K0VdPUJbMTU4XVtFXSk7Zm9yKEJbMTU5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNmE4XHVjNmFhXHVjNmFiXHVjNmFjXHVjNmFkXHVjNmFlXHVjNmFmXHVjNmIyXHVjNmIzXHVjNmI1XHVjNmI2XHVjNmI3XHVjNmJi''@;'; put 'put ''XHVjNmJjXHVjNmJkXHVjNmJlXHVjNmJmXHVjNmMyXHVjNmM0XHVjNmM2XHVjNmM3XHVjNmM4XHVjNmM5XHVjNmNhXHVjNmNiXHVjNmNlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNmNmXHVjNmQxXHVjNmQyXHVjNmQzXHVjNmQ1XHVjNmQ2XHVjNmQ3XHVjNmQ4XHVj''@;'; put 'put ''NmQ5XHVjNmRhXHVjNmRiXHVjNmRlXHVjNmRmXHVjNmUyXHVjNmUzXHVjNmU0XHVjNmU1XHVjNmU2XHVjNmU3XHVjNmVhXHVjNmViXHVjNmVkXHVjNmVlXHVjNmVmXHVjNmYxXHVjNmYyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNmYzXHVjNmY0XHVjNmY1XHVjNmY2''@;'; put 'put ''XHVjNmY3XHVjNmZhXHVjNmZiXHVjNmZjXHVjNmZlXHVjNmZmXHVjNzAwXHVjNzAxXHVjNzAyXHVjNzAzXHVjNzA2XHVjNzA3XHVjNzA5XHVjNzBhXHVjNzBiXHVjNzBkXHVjNzBlXHVjNzBmXHVjNzEwXHVjNzExXHVjNzEyXHVjNzEzXHVjNzE2XHVjNzE4XHVjNzFhXHVjNzFiXHVjNzFjXHVj''@;'; put 'put ''NzFkXHVjNzFlXHVjNzFmXHVjNzIyXHVjNzIzXHVjNzI1XHVjNzI2XHVjNzI3XHVjNzI5XHVjNzJhXHVjNzJiXHVjNzJjXHVjNzJkXHVjNzJlXHVjNzJmXHVjNzMyXHVjNzM0XHVjNzM2XHVjNzM4XHVjNzM5XHVjNzNhXHVjNzNiXHVjNzNlXHVjNzNmXHVjNzQxXHVjNzQyXHVjNzQzXHVjNzQ1''@;'; put 'put ''XHVjNzQ2XHVjNzQ3XHVjNzQ4XHVjNzQ5XHVjNzRiXHVjNzRlXHVjNzUwXHVjNzU5XHVjNzVhXHVjNzViXHVjNzVkXHVjNzVlXHVjNzVmXHVjNzYxXHVjNzYyXHVjNzYzXHVjNzY0XHVjNzY1XHVjNzY2XHVjNzY3XHVjNzY5XHVjNzZhXHVjNzZjXHVjNzZkXHVjNzZlXHVjNzZmXHVjNzcwXHVj''@;'; put 'put ''NzcxXHVjNzcyXHVjNzczXHVjNzc2XHVjNzc3XHVjNzc5XHVjNzdhXHVjNzdiXHVjNzdmXHVjNzgwXHVjNzgxXHVjNzgyXHVjNzg2XHVjNzhiXHVjNzhjXHVjNzhkXHVjNzhmXHVjNzkyXHVjNzkzXHVjNzk1XHVjNzk5XHVjNzliXHVjNzljXHVjNzlkXHVjNzllXHVjNzlmXHVjN2EyXHVjN2E3''@;'; put 'put ''XHVjN2E4XHVjN2E5XHVjN2FhXHVjN2FiXHVjN2FlXHVjN2FmXHVjN2IxXHVjN2IyXHVjN2IzXHVjN2I1XHVjN2I2XHVjN2I3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE1OV1bRV1dPTQw''@;'; put 'put ''NzA0K0UsTFs0MDcwNCtFXT1CWzE1OV1bRV0pO2ZvcihCWzE2MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzdiOFx1YzdiOVx1YzdiYVx1YzdiYlx1YzdiZVx1YzdjMlx1YzdjM1x1YzdjNFx1YzdjNVx1YzdjNlx1Yzdj''@;'; put 'put ''N1x1YzdjYVx1YzdjYlx1YzdjZFx1YzdjZlx1YzdkMVx1YzdkMlx1YzdkM1x1YzdkNFx1YzdkNVx1YzdkNlx1YzdkN1x1YzdkOVx1YzdkYVx1YzdkYlx1YzdkY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzdkZVx1YzdkZlx1YzdlMFx1YzdlMVx1YzdlMlx1YzdlM1x1''@;'; put 'put ''YzdlNVx1YzdlNlx1YzdlN1x1YzdlOVx1YzdlYVx1YzdlYlx1YzdlZFx1YzdlZVx1YzdlZlx1YzdmMFx1YzdmMVx1YzdmMlx1YzdmM1x1YzdmNFx1YzdmNVx1YzdmNlx1YzdmN1x1YzdmOFx1YzdmOVx1YzdmYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzdmYlx1Yzdm''@;'; put 'put ''Y1x1YzdmZFx1YzdmZVx1YzdmZlx1YzgwMlx1YzgwM1x1YzgwNVx1YzgwNlx1YzgwN1x1YzgwOVx1YzgwYlx1YzgwY1x1YzgwZFx1YzgwZVx1YzgwZlx1YzgxMlx1YzgxNFx1YzgxN1x1YzgxOFx1YzgxOVx1YzgxYVx1YzgxYlx1YzgxZVx1YzgxZlx1YzgyMVx1YzgyMlx1YzgyM1x1YzgyNVx1''@;'; put 'put ''YzgyNlx1YzgyN1x1YzgyOFx1YzgyOVx1YzgyYVx1YzgyYlx1YzgyZVx1YzgzMFx1YzgzMlx1YzgzM1x1YzgzNFx1YzgzNVx1YzgzNlx1YzgzN1x1YzgzOVx1YzgzYVx1YzgzYlx1YzgzZFx1YzgzZVx1YzgzZlx1Yzg0MVx1Yzg0Mlx1Yzg0M1x1Yzg0NFx1Yzg0NVx1Yzg0Nlx1Yzg0N1x1Yzg0''@;'; put 'put ''YVx1Yzg0Ylx1Yzg0ZVx1Yzg0Zlx1Yzg1MFx1Yzg1MVx1Yzg1Mlx1Yzg1M1x1Yzg1NVx1Yzg1Nlx1Yzg1N1x1Yzg1OFx1Yzg1OVx1Yzg1YVx1Yzg1Ylx1Yzg1Y1x1Yzg1ZFx1Yzg1ZVx1Yzg1Zlx1Yzg2MFx1Yzg2MVx1Yzg2Mlx1Yzg2M1x1Yzg2NFx1Yzg2NVx1Yzg2Nlx1Yzg2N1x1Yzg2OFx1''@;'; put 'put ''Yzg2OVx1Yzg2YVx1Yzg2Ylx1Yzg2Y1x1Yzg2ZFx1Yzg2ZVx1Yzg2Zlx1Yzg3Mlx1Yzg3M1x1Yzg3NVx1Yzg3Nlx1Yzg3N1x1Yzg3OVx1Yzg3Ylx1Yzg3Y1x1Yzg3ZFx1Yzg3ZVx1Yzg3Zlx1Yzg4Mlx1Yzg4NFx1Yzg4OFx1Yzg4OVx1Yzg4YVx1Yzg4ZVx1Yzg4Zlx1Yzg5MFx1Yzg5MVx1Yzg5''@;'; put 'put ''Mlx1Yzg5M1x1Yzg5NVx1Yzg5Nlx1Yzg5N1x1Yzg5OFx1Yzg5OVx1Yzg5YVx1Yzg5Ylx1Yzg5Y1x1Yzg5ZVx1YzhhMFx1YzhhMlx1YzhhM1x1YzhhNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2Vb''@;'; put 'put ''QlsxNjBdW0VdXT00MDk2MCtFLExbNDA5NjArRV09QlsxNjBdW0VdKTtmb3IoQlsxNjFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM4YTVcdWM4YTZcdWM4YTdcdWM4YTlcdWM4YWFcdWM4YWJcdWM4YWNcdWM4YWRcdWM4''@;'; put 'put ''YWVcdWM4YWZcdWM4YjBcdWM4YjFcdWM4YjJcdWM4YjNcdWM4YjRcdWM4YjVcdWM4YjZcdWM4YjdcdWM4YjhcdWM4YjlcdWM4YmFcdWM4YmJcdWM4YmVcdWM4YmZcdWM4YzBcdWM4YzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM4YzJcdWM4YzNcdWM4YzVcdWM4YzZc''@;'; put 'put ''dWM4YzdcdWM4YzlcdWM4Y2FcdWM4Y2JcdWM4Y2RcdWM4Y2VcdWM4Y2ZcdWM4ZDBcdWM4ZDFcdWM4ZDJcdWM4ZDNcdWM4ZDZcdWM4ZDhcdWM4ZGFcdWM4ZGJcdWM4ZGNcdWM4ZGRcdWM4ZGVcdWM4ZGZcdWM4ZTJcdWM4ZTNcdWM4ZTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWM4ZTZcdWM4ZTdcdWM4ZThcdWM4ZTlcdWM4ZWFcdWM4ZWJcdWM4ZWNcdWM4ZWRcdWM4ZWVcdWM4ZWZcdWM4ZjBcdWM4ZjFcdWM4ZjJcdWM4ZjNcdWM4ZjRcdWM4ZjZcdWM4ZjdcdWM4ZjhcdWM4ZjlcdWM4ZmFcdWM4ZmJcdWM4ZmVcdWM4ZmZcdWM5MDFcdWM5MDJcdWM5MDNcdWM5MDdc''@;'; put 'put ''dWM5MDhcdWM5MDlcdWM5MGFcdWM5MGJcdWM5MGVcdTMwMDBcdTMwMDFcdTMwMDJceGI3XHUyMDI1XHUyMDI2XHhhOFx1MzAwM1x4YWRcdTIwMTVcdTIyMjVcdWZmM2NcdTIyM2NcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTMwMTRcdTMwMTVcdTMwMDhcdTMwMDlcdTMwMGFcdTMwMGJcdTMw''@;'; put 'put ''MGNcdTMwMGRcdTMwMGVcdTMwMGZcdTMwMTBcdTMwMTFceGIxXHhkN1x4ZjdcdTIyNjBcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzRceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHUyMTJiXHVmZmUwXHVmZmUxXHVmZmU1XHUyNjQyXHUyNjQwXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUy''@;'; put 'put ''MjYxXHUyMjUyXHhhN1x1MjAzYlx1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MjE5NFx1MzAxM1x1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1''@;'; put 'put ''MjIzNVx1MjIyYlx1MjIyY1x1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1MjIyN1x1MjIyOFx1ZmZlMlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsx''@;'; put 'put ''NjFdW0VdXT00MTIxNitFLExbNDEyMTYrRV09QlsxNjFdW0VdKTtmb3IoQlsxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5MTBcdWM5MTJcdWM5MTNcdWM5MTRcdWM5MTVcdWM5MTZcdWM5MTdcdWM5MTlcdWM5MWFc''@;'; put 'put ''dWM5MWJcdWM5MWNcdWM5MWRcdWM5MWVcdWM5MWZcdWM5MjBcdWM5MjFcdWM5MjJcdWM5MjNcdWM5MjRcdWM5MjVcdWM5MjZcdWM5MjdcdWM5MjhcdWM5MjlcdWM5MmFcdWM5MmJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5MmRcdWM5MmVcdWM5MmZcdWM5MzBcdWM5''@;'; put 'put ''MzFcdWM5MzJcdWM5MzNcdWM5MzVcdWM5MzZcdWM5MzdcdWM5MzhcdWM5MzlcdWM5M2FcdWM5M2JcdWM5M2NcdWM5M2RcdWM5M2VcdWM5M2ZcdWM5NDBcdWM5NDFcdWM5NDJcdWM5NDNcdWM5NDRcdWM5NDVcdWM5NDZcdWM5NDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWM5NDhcdWM5NDlcdWM5NGFcdWM5NGJcdWM5NGNcdWM5NGRcdWM5NGVcdWM5NGZcdWM5NTJcdWM5NTNcdWM5NTVcdWM5NTZcdWM5NTdcdWM5NTlcdWM5NWFcdWM5NWJcdWM5NWNcdWM5NWRcdWM5NWVcdWM5NWZcdWM5NjJcdWM5NjRcdWM5NjVcdWM5NjZcdWM5NjdcdWM5NjhcdWM5NjlcdWM5''@;'; put 'put ''NmFcdWM5NmJcdWM5NmRcdWM5NmVcdWM5NmZcdTIxZDJcdTIxZDRcdTIyMDBcdTIyMDNceGI0XHVmZjVlXHUwMmM3XHUwMmQ4XHUwMmRkXHUwMmRhXHUwMmQ5XHhiOFx1MDJkYlx4YTFceGJmXHUwMmQwXHUyMjJlXHUyMjExXHUyMjBmXHhhNFx1MjEwOVx1MjAzMFx1MjVjMVx1MjVjMFx1MjVi''@;'; put 'put ''N1x1MjViNlx1MjY2NFx1MjY2MFx1MjY2MVx1MjY2NVx1MjY2N1x1MjY2M1x1MjI5OVx1MjVjOFx1MjVhM1x1MjVkMFx1MjVkMVx1MjU5Mlx1MjVhNFx1MjVhNVx1MjVhOFx1MjVhN1x1MjVhNlx1MjVhOVx1MjY2OFx1MjYwZlx1MjYwZVx1MjYxY1x1MjYxZVx4YjZcdTIwMjBcdTIwMjFcdTIx''@;'; put 'put ''OTVcdTIxOTdcdTIxOTlcdTIxOTZcdTIxOThcdTI2NmRcdTI2NjlcdTI2NmFcdTI2NmNcdTMyN2ZcdTMyMWNcdTIxMTZcdTMzYzdcdTIxMjJcdTMzYzJcdTMzZDhcdTIxMjFcdTIwYWNceGFlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2''@;'; put 'put ''Ml1bRV1dPTQxNDcyK0UsTFs0MTQ3MitFXT1CWzE2Ml1bRV0pO2ZvcihCWzE2M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yzk3MVx1Yzk3Mlx1Yzk3M1x1Yzk3NVx1Yzk3Nlx1Yzk3N1x1Yzk3OFx1Yzk3OVx1Yzk3YVx1''@;'; put 'put ''Yzk3Ylx1Yzk3ZFx1Yzk3ZVx1Yzk3Zlx1Yzk4MFx1Yzk4MVx1Yzk4Mlx1Yzk4M1x1Yzk4NFx1Yzk4NVx1Yzk4Nlx1Yzk4N1x1Yzk4YVx1Yzk4Ylx1Yzk4ZFx1Yzk4ZVx1Yzk4Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yzk5MVx1Yzk5Mlx1Yzk5M1x1Yzk5NFx1Yzk5''@;'; put 'put ''NVx1Yzk5Nlx1Yzk5N1x1Yzk5YVx1Yzk5Y1x1Yzk5ZVx1Yzk5Zlx1YzlhMFx1YzlhMVx1YzlhMlx1YzlhM1x1YzlhNFx1YzlhNVx1YzlhNlx1YzlhN1x1YzlhOFx1YzlhOVx1YzlhYVx1YzlhYlx1YzlhY1x1YzlhZFx1YzlhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''YzlhZlx1YzliMFx1YzliMVx1YzliMlx1YzliM1x1YzliNFx1YzliNVx1YzliNlx1YzliN1x1YzliOFx1YzliOVx1YzliYVx1YzliYlx1YzliY1x1YzliZFx1YzliZVx1YzliZlx1YzljMlx1YzljM1x1YzljNVx1YzljNlx1YzljOVx1YzljYlx1YzljY1x1YzljZFx1YzljZVx1YzljZlx1Yzlk''@;'; put 'put ''Mlx1YzlkNFx1YzlkN1x1YzlkOFx1YzlkYlx1ZmYwMVx1ZmYwMlx1ZmYwM1x1ZmYwNFx1ZmYwNVx1ZmYwNlx1ZmYwN1x1ZmYwOFx1ZmYwOVx1ZmYwYVx1ZmYwYlx1ZmYwY1x1ZmYwZFx1ZmYwZVx1ZmYwZlx1ZmYxMFx1ZmYxMVx1ZmYxMlx1ZmYxM1x1ZmYxNFx1ZmYxNVx1ZmYxNlx1ZmYxN1x1''@;'; put 'put ''ZmYxOFx1ZmYxOVx1ZmYxYVx1ZmYxYlx1ZmYxY1x1ZmYxZFx1ZmYxZVx1ZmYxZlx1ZmYyMFx1ZmYyMVx1ZmYyMlx1ZmYyM1x1ZmYyNFx1ZmYyNVx1ZmYyNlx1ZmYyN1x1ZmYyOFx1ZmYyOVx1ZmYyYVx1ZmYyYlx1ZmYyY1x1ZmYyZFx1ZmYyZVx1ZmYyZlx1ZmYzMFx1ZmYzMVx1ZmYzMlx1ZmYz''@;'; put 'put ''M1x1ZmYzNFx1ZmYzNVx1ZmYzNlx1ZmYzN1x1ZmYzOFx1ZmYzOVx1ZmYzYVx1ZmYzYlx1ZmZlNlx1ZmYzZFx1ZmYzZVx1ZmYzZlx1ZmY0MFx1ZmY0MVx1ZmY0Mlx1ZmY0M1x1ZmY0NFx1ZmY0NVx1ZmY0Nlx1ZmY0N1x1ZmY0OFx1ZmY0OVx1ZmY0YVx1ZmY0Ylx1ZmY0Y1x1ZmY0ZFx1ZmY0ZVx1''@;'; put 'put ''ZmY0Zlx1ZmY1MFx1ZmY1MVx1ZmY1Mlx1ZmY1M1x1ZmY1NFx1ZmY1NVx1ZmY1Nlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1ZmY1Ylx1ZmY1Y1x1ZmY1ZFx1ZmZlM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYzXVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoZ2VbQlsxNjNdW0VdXT00MTcyOCtFLExbNDE3MjgrRV09QlsxNjNdW0VdKTtmb3IoQlsxNjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5ZGVcdWM5ZGZcdWM5ZTFcdWM5ZTNcdWM5ZTVcdWM5ZTZcdWM5ZThc''@;'; put 'put ''dWM5ZTlcdWM5ZWFcdWM5ZWJcdWM5ZWVcdWM5ZjJcdWM5ZjNcdWM5ZjRcdWM5ZjVcdWM5ZjZcdWM5ZjdcdWM5ZmFcdWM5ZmJcdWM5ZmRcdWM5ZmVcdWM5ZmZcdWNhMDFcdWNhMDJcdWNhMDNcdWNhMDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhMDVcdWNhMDZcdWNh''@;'; put 'put ''MDdcdWNhMGFcdWNhMGVcdWNhMGZcdWNhMTBcdWNhMTFcdWNhMTJcdWNhMTNcdWNhMTVcdWNhMTZcdWNhMTdcdWNhMTlcdWNhMWFcdWNhMWJcdWNhMWNcdWNhMWRcdWNhMWVcdWNhMWZcdWNhMjBcdWNhMjFcdWNhMjJcdWNhMjNcdWNhMjRcdWNhMjVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWNhMjZcdWNhMjdcdWNhMjhcdWNhMmFcdWNhMmJcdWNhMmNcdWNhMmRcdWNhMmVcdWNhMmZcdWNhMzBcdWNhMzFcdWNhMzJcdWNhMzNcdWNhMzRcdWNhMzVcdWNhMzZcdWNhMzdcdWNhMzhcdWNhMzlcdWNhM2FcdWNhM2JcdWNhM2NcdWNhM2RcdWNhM2VcdWNhM2ZcdWNh''@;'; put 'put ''NDBcdWNhNDFcdWNhNDJcdWNhNDNcdWNhNDRcdWNhNDVcdWNhNDZcdTMxMzFcdTMxMzJcdTMxMzNcdTMxMzRcdTMxMzVcdTMxMzZcdTMxMzdcdTMxMzhcdTMxMzlcdTMxM2FcdTMxM2JcdTMxM2NcdTMxM2RcdTMxM2VcdTMxM2ZcdTMxNDBcdTMxNDFcdTMxNDJcdTMxNDNcdTMxNDRcdTMxNDVc''@;'; put 'put ''dTMxNDZcdTMxNDdcdTMxNDhcdTMxNDlcdTMxNGFcdTMxNGJcdTMxNGNcdTMxNGRcdTMxNGVcdTMxNGZcdTMxNTBcdTMxNTFcdTMxNTJcdTMxNTNcdTMxNTRcdTMxNTVcdTMxNTZcdTMxNTdcdTMxNThcdTMxNTlcdTMxNWFcdTMxNWJcdTMxNWNcdTMxNWRcdTMxNWVcdTMxNWZcdTMxNjBcdTMx''@;'; put 'put ''NjFcdTMxNjJcdTMxNjNcdTMxNjRcdTMxNjVcdTMxNjZcdTMxNjdcdTMxNjhcdTMxNjlcdTMxNmFcdTMxNmJcdTMxNmNcdTMxNmRcdTMxNmVcdTMxNmZcdTMxNzBcdTMxNzFcdTMxNzJcdTMxNzNcdTMxNzRcdTMxNzVcdTMxNzZcdTMxNzdcdTMxNzhcdTMxNzlcdTMxN2FcdTMxN2JcdTMxN2Nc''@;'; put 'put ''dTMxN2RcdTMxN2VcdTMxN2ZcdTMxODBcdTMxODFcdTMxODJcdTMxODNcdTMxODRcdTMxODVcdTMxODZcdTMxODdcdTMxODhcdTMxODlcdTMxOGFcdTMxOGJcdTMxOGNcdTMxOGRcdTMxOGVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2NF1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY0XVtFXV09NDE5ODQrRSxMWzQxOTg0K0VdPUJbMTY0XVtFXSk7Zm9yKEJbMTY1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTQ3XHVjYTQ4XHVjYTQ5XHVjYTRhXHVjYTRi''@;'; put 'put ''XHVjYTRlXHVjYTRmXHVjYTUxXHVjYTUyXHVjYTUzXHVjYTU1XHVjYTU2XHVjYTU3XHVjYTU4XHVjYTU5XHVjYTVhXHVjYTViXHVjYTVlXHVjYTYyXHVjYTYzXHVjYTY0XHVjYTY1XHVjYTY2XHVjYTY3XHVjYTY5XHVjYTZhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVj''@;'; put 'put ''YTZiXHVjYTZjXHVjYTZkXHVjYTZlXHVjYTZmXHVjYTcwXHVjYTcxXHVjYTcyXHVjYTczXHVjYTc0XHVjYTc1XHVjYTc2XHVjYTc3XHVjYTc4XHVjYTc5XHVjYTdhXHVjYTdiXHVjYTdjXHVjYTdlXHVjYTdmXHVjYTgwXHVjYTgxXHVjYTgyXHVjYTgzXHVjYTg1XHVjYTg2XHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTg3XHVjYTg4XHVjYTg5XHVjYThhXHVjYThiXHVjYThjXHVjYThkXHVjYThlXHVjYThmXHVjYTkwXHVjYTkxXHVjYTkyXHVjYTkzXHVjYTk0XHVjYTk1XHVjYTk2XHVjYTk3XHVjYTk5XHVjYTlhXHVjYTliXHVjYTljXHVjYTlkXHVjYTllXHVj''@;'; put 'put ''YTlmXHVjYWEwXHVjYWExXHVjYWEyXHVjYWEzXHVjYWE0XHVjYWE1XHVjYWE2XHVjYWE3XHUyMTcwXHUyMTcxXHUyMTcyXHUyMTczXHUyMTc0XHUyMTc1XHUyMTc2XHUyMTc3XHUyMTc4XHUyMTc5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYz''@;'; put 'put ''XHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3XHUyMTY4XHUyMTY5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUw''@;'; put 'put ''MzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2Jh''@;'; put 'put ''XHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY1XS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxNjVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2NV1bRV1dPTQyMjQwK0UsTFs0MjI0MCtFXT1CWzE2NV1bRV0pO2ZvcihCWzE2Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2FhOFx1Y2FhOVx1Y2Fh''@;'; put 'put ''YVx1Y2FhYlx1Y2FhY1x1Y2FhZFx1Y2FhZVx1Y2FhZlx1Y2FiMFx1Y2FiMVx1Y2FiMlx1Y2FiM1x1Y2FiNFx1Y2FiNVx1Y2FiNlx1Y2FiN1x1Y2FiOFx1Y2FiOVx1Y2FiYVx1Y2FiYlx1Y2FiZVx1Y2FiZlx1Y2FjMVx1Y2FjMlx1Y2FjM1x1Y2FjNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1Y2FjNlx1Y2FjN1x1Y2FjOFx1Y2FjOVx1Y2FjYVx1Y2FjYlx1Y2FjZVx1Y2FkMFx1Y2FkMlx1Y2FkNFx1Y2FkNVx1Y2FkNlx1Y2FkN1x1Y2FkYVx1Y2FkYlx1Y2FkY1x1Y2FkZFx1Y2FkZVx1Y2FkZlx1Y2FlMVx1Y2FlMlx1Y2FlM1x1Y2FlNFx1Y2FlNVx1Y2FlNlx1Y2Fl''@;'; put 'put ''N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2FlOFx1Y2FlOVx1Y2FlYVx1Y2FlYlx1Y2FlZFx1Y2FlZVx1Y2FlZlx1Y2FmMFx1Y2FmMVx1Y2FmMlx1Y2FmM1x1Y2FmNVx1Y2FmNlx1Y2FmN1x1Y2FmOFx1Y2FmOVx1Y2FmYVx1Y2FmYlx1Y2FmY1x1Y2FmZFx1Y2FmZVx1''@;'; put 'put ''Y2FmZlx1Y2IwMFx1Y2IwMVx1Y2IwMlx1Y2IwM1x1Y2IwNFx1Y2IwNVx1Y2IwNlx1Y2IwN1x1Y2IwOVx1Y2IwYVx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUx''@;'; put 'put ''N1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1MjUxMlx1MjUxMVx1MjUxYVx1MjUxOVx1MjUxNlx1MjUxNVx1MjUwZVx1MjUwZFx1MjUxZVx1MjUxZlx1MjUyMVx1MjUyMlx1''@;'; put 'put ''MjUyNlx1MjUyN1x1MjUyOVx1MjUyYVx1MjUyZFx1MjUyZVx1MjUzMVx1MjUzMlx1MjUzNVx1MjUzNlx1MjUzOVx1MjUzYVx1MjUzZFx1MjUzZVx1MjU0MFx1MjU0MVx1MjU0M1x1MjU0NFx1MjU0NVx1MjU0Nlx1MjU0N1x1MjU0OFx1MjU0OVx1MjU0YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2Nl0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjZdW0VdXT00MjQ5NitFLExbNDI0OTYrRV09QlsxNjZdW0VdKTtmb3IoQlsxNjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNi''@;'; put 'put ''MGJcdWNiMGNcdWNiMGRcdWNiMGVcdWNiMGZcdWNiMTFcdWNiMTJcdWNiMTNcdWNiMTVcdWNiMTZcdWNiMTdcdWNiMTlcdWNiMWFcdWNiMWJcdWNiMWNcdWNiMWRcdWNiMWVcdWNiMWZcdWNiMjJcdWNiMjNcdWNiMjRcdWNiMjVcdWNiMjZcdWNiMjdcdWNiMjhcdWNiMjlcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiMmFcdWNiMmJcdWNiMmNcdWNiMmRcdWNiMmVcdWNiMmZcdWNiMzBcdWNiMzFcdWNiMzJcdWNiMzNcdWNiMzRcdWNiMzVcdWNiMzZcdWNiMzdcdWNiMzhcdWNiMzlcdWNiM2FcdWNiM2JcdWNiM2NcdWNiM2RcdWNiM2VcdWNiM2ZcdWNiNDBcdWNi''@;'; put 'put ''NDJcdWNiNDNcdWNiNDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiNDVcdWNiNDZcdWNiNDdcdWNiNGFcdWNiNGJcdWNiNGRcdWNiNGVcdWNiNGZcdWNiNTFcdWNiNTJcdWNiNTNcdWNiNTRcdWNiNTVcdWNiNTZcdWNiNTdcdWNiNWFcdWNiNWJcdWNiNWNcdWNiNWVc''@;'; put 'put ''dWNiNWZcdWNiNjBcdWNiNjFcdWNiNjJcdWNiNjNcdWNiNjVcdWNiNjZcdWNiNjdcdWNiNjhcdWNiNjlcdWNiNmFcdWNiNmJcdWNiNmNcdTMzOTVcdTMzOTZcdTMzOTdcdTIxMTNcdTMzOThcdTMzYzRcdTMzYTNcdTMzYTRcdTMzYTVcdTMzYTZcdTMzOTlcdTMzOWFcdTMzOWJcdTMzOWNcdTMz''@;'; put 'put ''OWRcdTMzOWVcdTMzOWZcdTMzYTBcdTMzYTFcdTMzYTJcdTMzY2FcdTMzOGRcdTMzOGVcdTMzOGZcdTMzY2ZcdTMzODhcdTMzODlcdTMzYzhcdTMzYTdcdTMzYThcdTMzYjBcdTMzYjFcdTMzYjJcdTMzYjNcdTMzYjRcdTMzYjVcdTMzYjZcdTMzYjdcdTMzYjhcdTMzYjlcdTMzODBcdTMzODFc''@;'; put 'put ''dTMzODJcdTMzODNcdTMzODRcdTMzYmFcdTMzYmJcdTMzYmNcdTMzYmRcdTMzYmVcdTMzYmZcdTMzOTBcdTMzOTFcdTMzOTJcdTMzOTNcdTMzOTRcdTIxMjZcdTMzYzBcdTMzYzFcdTMzOGFcdTMzOGJcdTMzOGNcdTMzZDZcdTMzYzVcdTMzYWRcdTMzYWVcdTMzYWZcdTMzZGJcdTMzYTlcdTMz''@;'; put 'put ''YWFcdTMzYWJcdTMzYWNcdTMzZGRcdTMzZDBcdTMzZDNcdTMzYzNcdTMzYzlcdTMzZGNcdTMzYzZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxNjddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY3XVtFXV09NDI3NTIrRSxMWzQyNzUyK0VdPUJbMTY3XVtFXSk7Zm9yKEJbMTY4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVjYjZkXHVjYjZlXHVjYjZmXHVjYjcwXHVjYjcxXHVjYjcyXHVjYjczXHVjYjc0XHVjYjc1XHVjYjc2XHVjYjc3XHVjYjdhXHVjYjdiXHVjYjdjXHVjYjdkXHVjYjdlXHVjYjdmXHVjYjgwXHVjYjgxXHVjYjgyXHVjYjgzXHVjYjg0XHVjYjg1XHVjYjg2XHVjYjg3XHVjYjg4''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjg5XHVjYjhhXHVjYjhiXHVjYjhjXHVjYjhkXHVjYjhlXHVjYjhmXHVjYjkwXHVjYjkxXHVjYjkyXHVjYjkzXHVjYjk0XHVjYjk1XHVjYjk2XHVjYjk3XHVjYjk4XHVjYjk5XHVjYjlhXHVjYjliXHVjYjlkXHVjYjllXHVj''@;'; put 'put ''YjlmXHVjYmEwXHVjYmExXHVjYmEyXHVjYmEzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYmE0XHVjYmE1XHVjYmE2XHVjYmE3XHVjYmE4XHVjYmE5XHVjYmFhXHVjYmFiXHVjYmFjXHVjYmFkXHVjYmFlXHVjYmFmXHVjYmIwXHVjYmIxXHVjYmIyXHVjYmIzXHVjYmI0''@;'; put 'put ''XHVjYmI1XHVjYmI2XHVjYmI3XHVjYmI5XHVjYmJhXHVjYmJiXHVjYmJjXHVjYmJkXHVjYmJlXHVjYmJmXHVjYmMwXHVjYmMxXHVjYmMyXHVjYmMzXHVjYmM0XHhjNlx4ZDBceGFhXHUwMTI2XHVmZmZkXHUwMTMyXHVmZmZkXHUwMTNmXHUwMTQxXHhkOFx1MDE1Mlx4YmFceGRlXHUwMTY2XHUw''@;'; put 'put ''MTRhXHVmZmZkXHUzMjYwXHUzMjYxXHUzMjYyXHUzMjYzXHUzMjY0XHUzMjY1XHUzMjY2XHUzMjY3XHUzMjY4XHUzMjY5XHUzMjZhXHUzMjZiXHUzMjZjXHUzMjZkXHUzMjZlXHUzMjZmXHUzMjcwXHUzMjcxXHUzMjcyXHUzMjczXHUzMjc0XHUzMjc1XHUzMjc2XHUzMjc3XHUzMjc4XHUzMjc5''@;'; put 'put ''XHUzMjdhXHUzMjdiXHUyNGQwXHUyNGQxXHUyNGQyXHUyNGQzXHUyNGQ0XHUyNGQ1XHUyNGQ2XHUyNGQ3XHUyNGQ4XHUyNGQ5XHUyNGRhXHUyNGRiXHUyNGRjXHUyNGRkXHUyNGRlXHUyNGRmXHUyNGUwXHUyNGUxXHUyNGUyXHUyNGUzXHUyNGU0XHUyNGU1XHUyNGU2XHUyNGU3XHUyNGU4XHUy''@;'; put 'put ''NGU5XHUyNDYwXHUyNDYxXHUyNDYyXHUyNDYzXHUyNDY0XHUyNDY1XHUyNDY2XHUyNDY3XHUyNDY4XHUyNDY5XHUyNDZhXHUyNDZiXHUyNDZjXHUyNDZkXHUyNDZlXHhiZFx1MjE1M1x1MjE1NFx4YmNceGJlXHUyMTViXHUyMTVjXHUyMTVkXHUyMTVlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMTY4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2OF1bRV1dPTQzMDA4K0UsTFs0MzAwOCtFXT1CWzE2OF1bRV0pO2ZvcihCWzE2OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1Y2JjNVx1Y2JjNlx1Y2JjN1x1Y2JjOFx1Y2JjOVx1Y2JjYVx1Y2JjYlx1Y2JjY1x1Y2JjZFx1Y2JjZVx1Y2JjZlx1Y2JkMFx1Y2JkMVx1Y2JkMlx1Y2JkM1x1Y2JkNVx1Y2JkNlx1Y2JkN1x1Y2JkOFx1Y2JkOVx1Y2JkYVx1Y2JkYlx1Y2JkY1x1Y2JkZFx1Y2JkZVx1Y2JkZlx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JlMFx1Y2JlMVx1Y2JlMlx1Y2JlM1x1Y2JlNVx1Y2JlNlx1Y2JlOFx1Y2JlYVx1Y2JlYlx1Y2JlY1x1Y2JlZFx1Y2JlZVx1Y2JlZlx1Y2JmMFx1Y2JmMVx1Y2JmMlx1Y2JmM1x1Y2JmNFx1Y2JmNVx1Y2JmNlx1Y2JmN1x1Y2JmOFx1''@;'; put 'put ''Y2JmOVx1Y2JmYVx1Y2JmYlx1Y2JmY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JmZFx1Y2JmZVx1Y2JmZlx1Y2MwMFx1Y2MwMVx1Y2MwMlx1Y2MwM1x1Y2MwNFx1Y2MwNVx1Y2MwNlx1Y2MwN1x1Y2MwOFx1Y2MwOVx1Y2MwYVx1Y2MwYlx1Y2MwZVx1Y2MwZlx1Y2Mx''@;'; put 'put ''MVx1Y2MxMlx1Y2MxM1x1Y2MxNVx1Y2MxNlx1Y2MxN1x1Y2MxOFx1Y2MxOVx1Y2MxYVx1Y2MxYlx1Y2MxZVx1Y2MxZlx1Y2MyMFx1Y2MyM1x1Y2MyNFx4ZTZcdTAxMTFceGYwXHUwMTI3XHUwMTMxXHUwMTMzXHUwMTM4XHUwMTQwXHUwMTQyXHhmOFx1MDE1M1x4ZGZceGZlXHUwMTY3XHUwMTRi''@;'; put 'put ''XHUwMTQ5XHUzMjAwXHUzMjAxXHUzMjAyXHUzMjAzXHUzMjA0XHUzMjA1XHUzMjA2XHUzMjA3XHUzMjA4XHUzMjA5XHUzMjBhXHUzMjBiXHUzMjBjXHUzMjBkXHUzMjBlXHUzMjBmXHUzMjEwXHUzMjExXHUzMjEyXHUzMjEzXHUzMjE0XHUzMjE1XHUzMjE2XHUzMjE3XHUzMjE4XHUzMjE5XHUz''@;'; put 'put ''MjFhXHUzMjFiXHUyNDljXHUyNDlkXHUyNDllXHUyNDlmXHUyNGEwXHUyNGExXHUyNGEyXHUyNGEzXHUyNGE0XHUyNGE1XHUyNGE2XHUyNGE3XHUyNGE4XHUyNGE5XHUyNGFhXHUyNGFiXHUyNGFjXHUyNGFkXHUyNGFlXHUyNGFmXHUyNGIwXHUyNGIxXHUyNGIyXHUyNGIzXHUyNGI0XHUyNGI1''@;'; put 'put ''XHUyNDc0XHUyNDc1XHUyNDc2XHUyNDc3XHUyNDc4XHUyNDc5XHUyNDdhXHUyNDdiXHUyNDdjXHUyNDdkXHUyNDdlXHUyNDdmXHUyNDgwXHUyNDgxXHUyNDgyXHhiOVx4YjJceGIzXHUyMDc0XHUyMDdmXHUyMDgxXHUyMDgyXHUyMDgzXHUyMDg0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJb''@;'; put 'put ''MTY5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2OV1bRV1dPTQzMjY0K0UsTFs0MzI2NCtFXT1CWzE2OV1bRV0pO2ZvcihCWzE3MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1Y2MyNVx1Y2MyNlx1Y2MyYVx1Y2MyYlx1Y2MyZFx1Y2MyZlx1Y2MzMVx1Y2MzMlx1Y2MzM1x1Y2MzNFx1Y2MzNVx1Y2MzNlx1Y2MzN1x1Y2MzYVx1Y2MzZlx1Y2M0MFx1Y2M0MVx1Y2M0Mlx1Y2M0M1x1Y2M0Nlx1Y2M0N1x1Y2M0OVx1Y2M0YVx1Y2M0Ylx1Y2M0ZFx1Y2M0ZVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2M0Zlx1Y2M1MFx1Y2M1MVx1Y2M1Mlx1Y2M1M1x1Y2M1Nlx1Y2M1YVx1Y2M1Ylx1Y2M1Y1x1Y2M1ZFx1Y2M1ZVx1Y2M1Zlx1Y2M2MVx1Y2M2Mlx1Y2M2M1x1Y2M2NVx1Y2M2N1x1Y2M2OVx1Y2M2YVx1Y2M2Ylx1Y2M2Y1x1Y2M2ZFx1Y2M2''@;'; put 'put ''ZVx1Y2M2Zlx1Y2M3MVx1Y2M3Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2M3M1x1Y2M3NFx1Y2M3Nlx1Y2M3N1x1Y2M3OFx1Y2M3OVx1Y2M3YVx1Y2M3Ylx1Y2M3Y1x1Y2M3ZFx1Y2M3ZVx1Y2M3Zlx1Y2M4MFx1Y2M4MVx1Y2M4Mlx1Y2M4M1x1Y2M4NFx1Y2M4NVx1''@;'; put 'put ''Y2M4Nlx1Y2M4N1x1Y2M4OFx1Y2M4OVx1Y2M4YVx1Y2M4Ylx1Y2M4Y1x1Y2M4ZFx1Y2M4ZVx1Y2M4Zlx1Y2M5MFx1Y2M5MVx1Y2M5Mlx1Y2M5M1x1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NVx1MzA0Nlx1MzA0N1x1MzA0OFx1MzA0OVx1MzA0YVx1MzA0Ylx1MzA0Y1x1MzA0ZFx1MzA0''@;'; put 'put ''ZVx1MzA0Zlx1MzA1MFx1MzA1MVx1MzA1Mlx1MzA1M1x1MzA1NFx1MzA1NVx1MzA1Nlx1MzA1N1x1MzA1OFx1MzA1OVx1MzA1YVx1MzA1Ylx1MzA1Y1x1MzA1ZFx1MzA1ZVx1MzA1Zlx1MzA2MFx1MzA2MVx1MzA2Mlx1MzA2M1x1MzA2NFx1MzA2NVx1MzA2Nlx1MzA2N1x1MzA2OFx1MzA2OVx1''@;'; put 'put ''MzA2YVx1MzA2Ylx1MzA2Y1x1MzA2ZFx1MzA2ZVx1MzA2Zlx1MzA3MFx1MzA3MVx1MzA3Mlx1MzA3M1x1MzA3NFx1MzA3NVx1MzA3Nlx1MzA3N1x1MzA3OFx1MzA3OVx1MzA3YVx1MzA3Ylx1MzA3Y1x1MzA3ZFx1MzA3ZVx1MzA3Zlx1MzA4MFx1MzA4MVx1MzA4Mlx1MzA4M1x1MzA4NFx1MzA4''@;'; put 'put ''NVx1MzA4Nlx1MzA4N1x1MzA4OFx1MzA4OVx1MzA4YVx1MzA4Ylx1MzA4Y1x1MzA4ZFx1MzA4ZVx1MzA4Zlx1MzA5MFx1MzA5MVx1MzA5Mlx1MzA5M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLEU9MDtFIT1CWzE3MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTcwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzBdW0VdXT00MzUyMCtFLExbNDM1MjArRV09QlsxNzBdW0VdKTtmb3IoQlsxNzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWNjOTRcdWNjOTVcdWNjOTZcdWNjOTdcdWNjOWFcdWNjOWJcdWNjOWRcdWNjOWVcdWNjOWZcdWNjYTFcdWNjYTJcdWNjYTNcdWNjYTRcdWNjYTVcdWNjYTZcdWNjYTdcdWNjYWFcdWNjYWVcdWNjYWZcdWNjYjBcdWNjYjFcdWNjYjJcdWNjYjNcdWNjYjZcdWNjYjdc''@;'; put 'put ''dWNjYjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjYmFcdWNjYmJcdWNjYmRcdWNjYmVcdWNjYmZcdWNjYzBcdWNjYzFcdWNjYzJcdWNjYzNcdWNjYzZcdWNjYzhcdWNjY2FcdWNjY2JcdWNjY2NcdWNjY2RcdWNjY2VcdWNjY2ZcdWNjZDFcdWNjZDJcdWNjZDNcdWNj''@;'; put 'put ''ZDVcdWNjZDZcdWNjZDdcdWNjZDhcdWNjZDlcdWNjZGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjZGJcdWNjZGNcdWNjZGRcdWNjZGVcdWNjZGZcdWNjZTBcdWNjZTFcdWNjZTJcdWNjZTNcdWNjZTVcdWNjZTZcdWNjZTdcdWNjZThcdWNjZTlcdWNjZWFcdWNjZWJc''@;'; put 'put ''dWNjZWRcdWNjZWVcdWNjZWZcdWNjZjFcdWNjZjJcdWNjZjNcdWNjZjRcdWNjZjVcdWNjZjZcdWNjZjdcdWNjZjhcdWNjZjlcdWNjZmFcdWNjZmJcdWNjZmNcdWNjZmRcdTMwYTFcdTMwYTJcdTMwYTNcdTMwYTRcdTMwYTVcdTMwYTZcdTMwYTdcdTMwYThcdTMwYTlcdTMwYWFcdTMwYWJcdTMw''@;'; put 'put ''YWNcdTMwYWRcdTMwYWVcdTMwYWZcdTMwYjBcdTMwYjFcdTMwYjJcdTMwYjNcdTMwYjRcdTMwYjVcdTMwYjZcdTMwYjdcdTMwYjhcdTMwYjlcdTMwYmFcdTMwYmJcdTMwYmNcdTMwYmRcdTMwYmVcdTMwYmZcdTMwYzBcdTMwYzFcdTMwYzJcdTMwYzNcdTMwYzRcdTMwYzVcdTMwYzZcdTMwYzdc''@;'; put 'put ''dTMwYzhcdTMwYzlcdTMwY2FcdTMwY2JcdTMwY2NcdTMwY2RcdTMwY2VcdTMwY2ZcdTMwZDBcdTMwZDFcdTMwZDJcdTMwZDNcdTMwZDRcdTMwZDVcdTMwZDZcdTMwZDdcdTMwZDhcdTMwZDlcdTMwZGFcdTMwZGJcdTMwZGNcdTMwZGRcdTMwZGVcdTMwZGZcdTMwZTBcdTMwZTFcdTMwZTJcdTMw''@;'; put 'put ''ZTNcdTMwZTRcdTMwZTVcdTMwZTZcdTMwZTdcdTMwZThcdTMwZTlcdTMwZWFcdTMwZWJcdTMwZWNcdTMwZWRcdTMwZWVcdTMwZWZcdTMwZjBcdTMwZjFcdTMwZjJcdTMwZjNcdTMwZjRcdTMwZjVcdTMwZjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTcxXVtFXV09NDM3NzYrRSxMWzQzNzc2K0VdPUJbMTcxXVtFXSk7Zm9yKEJbMTcyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2ZlXHVjY2ZmXHVjZDAwXHVjZDAyXHVjZDAzXHVjZDA0XHVjZDA1XHVjZDA2XHVjZDA3XHVjZDBhXHVjZDBiXHVjZDBkXHVjZDBlXHVjZDBmXHVjZDExXHVjZDEyXHVjZDEzXHVjZDE0XHVjZDE1XHVjZDE2XHVjZDE3XHVjZDFhXHVjZDFj''@;'; put 'put ''XHVjZDFlXHVjZDFmXHVjZDIwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZDIxXHVjZDIyXHVjZDIzXHVjZDI1XHVjZDI2XHVjZDI3XHVjZDI5XHVjZDJhXHVjZDJiXHVjZDJkXHVjZDJlXHVjZDJmXHVjZDMwXHVjZDMxXHVjZDMyXHVjZDMzXHVjZDM0XHVjZDM1XHVj''@;'; put 'put ''ZDM2XHVjZDM3XHVjZDM4XHVjZDNhXHVjZDNiXHVjZDNjXHVjZDNkXHVjZDNlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZDNmXHVjZDQwXHVjZDQxXHVjZDQyXHVjZDQzXHVjZDQ0XHVjZDQ1XHVjZDQ2XHVjZDQ3XHVjZDQ4XHVjZDQ5XHVjZDRhXHVjZDRiXHVjZDRj''@;'; put 'put ''XHVjZDRkXHVjZDRlXHVjZDRmXHVjZDUwXHVjZDUxXHVjZDUyXHVjZDUzXHVjZDU0XHVjZDU1XHVjZDU2XHVjZDU3XHVjZDU4XHVjZDU5XHVjZDVhXHVjZDViXHVjZDVkXHVjZDVlXHVjZDVmXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDAxXHUwNDE2XHUwNDE3XHUw''@;'; put 'put ''NDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDUxXHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUw''@;'; put 'put ''NDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTcyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3Ml1bRV1dPTQ0MDMyK0UsTFs0NDAzMitFXT1CWzE3Ml1bRV0pO2ZvcihCWzE3M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Q2MVx1Y2Q2Mlx1Y2Q2M1x1Y2Q2NVx1Y2Q2Nlx1Y2Q2N1x1Y2Q2OFx1Y2Q2OVx1Y2Q2YVx1Y2Q2Ylx1Y2Q2ZVx1Y2Q3MFx1Y2Q3Mlx1Y2Q3M1x1Y2Q3NFx1Y2Q3NVx1Y2Q3Nlx1Y2Q3N1x1Y2Q3OVx1Y2Q3YVx1Y2Q3''@;'; put 'put ''Ylx1Y2Q3Y1x1Y2Q3ZFx1Y2Q3ZVx1Y2Q3Zlx1Y2Q4MFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Q4MVx1Y2Q4Mlx1Y2Q4M1x1Y2Q4NFx1Y2Q4NVx1Y2Q4Nlx1Y2Q4N1x1Y2Q4OVx1Y2Q4YVx1Y2Q4Ylx1Y2Q4Y1x1Y2Q4ZFx1Y2Q4ZVx1Y2Q4Zlx1Y2Q5MFx1Y2Q5MVx1''@;'; put 'put ''Y2Q5Mlx1Y2Q5M1x1Y2Q5Nlx1Y2Q5N1x1Y2Q5OVx1Y2Q5YVx1Y2Q5Ylx1Y2Q5ZFx1Y2Q5ZVx1Y2Q5Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2RhMFx1Y2RhMVx1Y2RhMlx1Y2RhM1x1Y2RhNlx1Y2RhOFx1Y2RhYVx1Y2RhYlx1Y2RhY1x1Y2RhZFx1Y2RhZVx1Y2Rh''@;'; put 'put ''Zlx1Y2RiMVx1Y2RiMlx1Y2RiM1x1Y2RiNFx1Y2RiNVx1Y2RiNlx1Y2RiN1x1Y2RiOFx1Y2RiOVx1Y2RiYVx1Y2RiYlx1Y2RiY1x1Y2RiZFx1Y2RiZVx1Y2RiZlx1Y2RjMFx1Y2RjMVx1Y2RjMlx1Y2RjM1x1Y2RjNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTczXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzNdW0VdXT00NDI4OCtFLExbNDQyODgrRV09QlsxNzNdW0VdKTtmb3IoQlsxNzRdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkYzZcdWNkYzdcdWNkYzhcdWNkYzlcdWNkY2FcdWNkY2JcdWNkY2RcdWNkY2VcdWNkY2ZcdWNkZDFcdWNkZDJcdWNkZDNcdWNkZDRcdWNkZDVcdWNkZDZcdWNkZDdcdWNkZDhcdWNkZDlcdWNk''@;'; put 'put ''ZGFcdWNkZGJcdWNkZGNcdWNkZGRcdWNkZGVcdWNkZGZcdWNkZTBcdWNkZTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkZTJcdWNkZTNcdWNkZTRcdWNkZTVcdWNkZTZcdWNkZTdcdWNkZTlcdWNkZWFcdWNkZWJcdWNkZWRcdWNkZWVcdWNkZWZcdWNkZjFcdWNkZjJc''@;'; put 'put ''dWNkZjNcdWNkZjRcdWNkZjVcdWNkZjZcdWNkZjdcdWNkZmFcdWNkZmNcdWNkZmVcdWNkZmZcdWNlMDBcdWNlMDFcdWNlMDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlMDNcdWNlMDVcdWNlMDZcdWNlMDdcdWNlMDlcdWNlMGFcdWNlMGJcdWNlMGRcdWNlMGVcdWNl''@;'; put 'put ''MGZcdWNlMTBcdWNlMTFcdWNlMTJcdWNlMTNcdWNlMTVcdWNlMTZcdWNlMTdcdWNlMThcdWNlMWFcdWNlMWJcdWNlMWNcdWNlMWRcdWNlMWVcdWNlMWZcdWNlMjJcdWNlMjNcdWNlMjVcdWNlMjZcdWNlMjdcdWNlMjlcdWNlMmFcdWNlMmJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTc0XVtFXV09NDQ1NDQrRSxMWzQ0NTQ0K0VdPUJbMTc0XVtFXSk7Zm9yKEJb''@;'; put 'put ''MTc1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTJjXHVjZTJkXHVjZTJlXHVjZTJmXHVjZTMyXHVjZTM0XHVjZTM2XHVjZTM3XHVjZTM4XHVjZTM5XHVjZTNhXHVjZTNiXHVjZTNjXHVjZTNkXHVjZTNlXHVjZTNmXHVj''@;'; put 'put ''ZTQwXHVjZTQxXHVjZTQyXHVjZTQzXHVjZTQ0XHVjZTQ1XHVjZTQ2XHVjZTQ3XHVjZTQ4XHVjZTQ5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTRhXHVjZTRiXHVjZTRjXHVjZTRkXHVjZTRlXHVjZTRmXHVjZTUwXHVjZTUxXHVjZTUyXHVjZTUzXHVjZTU0XHVjZTU1''@;'; put 'put ''XHVjZTU2XHVjZTU3XHVjZTVhXHVjZTViXHVjZTVkXHVjZTVlXHVjZTYyXHVjZTYzXHVjZTY0XHVjZTY1XHVjZTY2XHVjZTY3XHVjZTZhXHVjZTZjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTZlXHVjZTZmXHVjZTcwXHVjZTcxXHVjZTcyXHVjZTczXHVjZTc2XHVj''@;'; put 'put ''ZTc3XHVjZTc5XHVjZTdhXHVjZTdiXHVjZTdkXHVjZTdlXHVjZTdmXHVjZTgwXHVjZTgxXHVjZTgyXHVjZTgzXHVjZTg2XHVjZTg4XHVjZThhXHVjZThiXHVjZThjXHVjZThkXHVjZThlXHVjZThmXHVjZTkyXHVjZTkzXHVjZTk1XHVjZTk2XHVjZTk3XHVjZTk5XHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3NV1bRV1dPTQ0ODAwK0UsTFs0NDgwMCtFXT1CWzE3''@;'; put 'put ''NV1bRV0pO2ZvcihCWzE3Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2U5YVx1Y2U5Ylx1Y2U5Y1x1Y2U5ZFx1Y2U5ZVx1Y2U5Zlx1Y2VhMlx1Y2VhNlx1Y2VhN1x1Y2VhOFx1Y2VhOVx1Y2VhYVx1Y2VhYlx1Y2VhZVx1''@;'; put 'put ''Y2VhZlx1Y2ViMFx1Y2ViMVx1Y2ViMlx1Y2ViM1x1Y2ViNFx1Y2ViNVx1Y2ViNlx1Y2ViN1x1Y2ViOFx1Y2ViOVx1Y2ViYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2ViYlx1Y2ViY1x1Y2ViZFx1Y2ViZVx1Y2ViZlx1Y2VjMFx1Y2VjMlx1Y2VjM1x1Y2VjNFx1Y2Vj''@;'; put 'put ''NVx1Y2VjNlx1Y2VjN1x1Y2VjOFx1Y2VjOVx1Y2VjYVx1Y2VjYlx1Y2VjY1x1Y2VjZFx1Y2VjZVx1Y2VjZlx1Y2VkMFx1Y2VkMVx1Y2VkMlx1Y2VkM1x1Y2VkNFx1Y2VkNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2VkNlx1Y2VkN1x1Y2VkOFx1Y2VkOVx1Y2VkYVx1''@;'; put 'put ''Y2VkYlx1Y2VkY1x1Y2VkZFx1Y2VkZVx1Y2VkZlx1Y2VlMFx1Y2VlMVx1Y2VlMlx1Y2VlM1x1Y2VlNlx1Y2VlN1x1Y2VlOVx1Y2VlYVx1Y2VlZFx1Y2VlZVx1Y2VlZlx1Y2VmMFx1Y2VmMVx1Y2VmMlx1Y2VmM1x1Y2VmNlx1Y2VmYVx1Y2VmYlx1Y2VmY1x1Y2VmZFx1Y2VmZVx1Y2VmZlx1YWMw''@;'; put 'put ''MFx1YWMwMVx1YWMwNFx1YWMwN1x1YWMwOFx1YWMwOVx1YWMwYVx1YWMxMFx1YWMxMVx1YWMxMlx1YWMxM1x1YWMxNFx1YWMxNVx1YWMxNlx1YWMxN1x1YWMxOVx1YWMxYVx1YWMxYlx1YWMxY1x1YWMxZFx1YWMyMFx1YWMyNFx1YWMyY1x1YWMyZFx1YWMyZlx1YWMzMFx1YWMzMVx1YWMzOFx1''@;'; put 'put ''YWMzOVx1YWMzY1x1YWM0MFx1YWM0Ylx1YWM0ZFx1YWM1NFx1YWM1OFx1YWM1Y1x1YWM3MFx1YWM3MVx1YWM3NFx1YWM3N1x1YWM3OFx1YWM3YVx1YWM4MFx1YWM4MVx1YWM4M1x1YWM4NFx1YWM4NVx1YWM4Nlx1YWM4OVx1YWM4YVx1YWM4Ylx1YWM4Y1x1YWM5MFx1YWM5NFx1YWM5Y1x1YWM5''@;'; put 'put ''ZFx1YWM5Zlx1YWNhMFx1YWNhMVx1YWNhOFx1YWNhOVx1YWNhYVx1YWNhY1x1YWNhZlx1YWNiMFx1YWNiOFx1YWNiOVx1YWNiYlx1YWNiY1x1YWNiZFx1YWNjMVx1YWNjNFx1YWNjOFx1YWNjY1x1YWNkNVx1YWNkN1x1YWNlMFx1YWNlMVx1YWNlNFx1YWNlN1x1YWNlOFx1YWNlYVx1YWNlY1x1''@;'; put 'put ''YWNlZlx1YWNmMFx1YWNmMVx1YWNmM1x1YWNmNVx1YWNmNlx1YWNmY1x1YWNmZFx1YWQwMFx1YWQwNFx1YWQwNlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzZdW0VdXT00NTA1NitFLExb''@;'; put 'put ''NDUwNTYrRV09QlsxNzZdW0VdKTtmb3IoQlsxNzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmMDJcdWNmMDNcdWNmMDVcdWNmMDZcdWNmMDdcdWNmMDlcdWNmMGFcdWNmMGJcdWNmMGNcdWNmMGRcdWNmMGVcdWNmMGZc''@;'; put 'put ''dWNmMTJcdWNmMTRcdWNmMTZcdWNmMTdcdWNmMThcdWNmMTlcdWNmMWFcdWNmMWJcdWNmMWRcdWNmMWVcdWNmMWZcdWNmMjFcdWNmMjJcdWNmMjNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmMjVcdWNmMjZcdWNmMjdcdWNmMjhcdWNmMjlcdWNmMmFcdWNmMmJcdWNm''@;'; put 'put ''MmVcdWNmMzJcdWNmMzNcdWNmMzRcdWNmMzVcdWNmMzZcdWNmMzdcdWNmMzlcdWNmM2FcdWNmM2JcdWNmM2NcdWNmM2RcdWNmM2VcdWNmM2ZcdWNmNDBcdWNmNDFcdWNmNDJcdWNmNDNcdWNmNDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmNDVcdWNmNDZcdWNmNDdc''@;'; put 'put ''dWNmNDhcdWNmNDlcdWNmNGFcdWNmNGJcdWNmNGNcdWNmNGRcdWNmNGVcdWNmNGZcdWNmNTBcdWNmNTFcdWNmNTJcdWNmNTNcdWNmNTZcdWNmNTdcdWNmNTlcdWNmNWFcdWNmNWJcdWNmNWRcdWNmNWVcdWNmNWZcdWNmNjBcdWNmNjFcdWNmNjJcdWNmNjNcdWNmNjZcdWNmNjhcdWNmNmFcdWNm''@;'; put 'put ''NmJcdWNmNmNcdWFkMGNcdWFkMGRcdWFkMGZcdWFkMTFcdWFkMThcdWFkMWNcdWFkMjBcdWFkMjlcdWFkMmNcdWFkMmRcdWFkMzRcdWFkMzVcdWFkMzhcdWFkM2NcdWFkNDRcdWFkNDVcdWFkNDdcdWFkNDlcdWFkNTBcdWFkNTRcdWFkNThcdWFkNjFcdWFkNjNcdWFkNmNcdWFkNmRcdWFkNzBc''@;'; put 'put ''dWFkNzNcdWFkNzRcdWFkNzVcdWFkNzZcdWFkN2JcdWFkN2NcdWFkN2RcdWFkN2ZcdWFkODFcdWFkODJcdWFkODhcdWFkODlcdWFkOGNcdWFkOTBcdWFkOWNcdWFkOWRcdWFkYTRcdWFkYjdcdWFkYzBcdWFkYzFcdWFkYzRcdWFkYzhcdWFkZDBcdWFkZDFcdWFkZDNcdWFkZGNcdWFkZTBcdWFk''@;'; put 'put ''ZTRcdWFkZjhcdWFkZjlcdWFkZmNcdWFkZmZcdWFlMDBcdWFlMDFcdWFlMDhcdWFlMDlcdWFlMGJcdWFlMGRcdWFlMTRcdWFlMzBcdWFlMzFcdWFlMzRcdWFlMzdcdWFlMzhcdWFlM2FcdWFlNDBcdWFlNDFcdWFlNDNcdWFlNDVcdWFlNDZcdWFlNGFcdWFlNGNcdWFlNGRcdWFlNGVcdWFlNTBc''@;'; put 'put ''dWFlNTRcdWFlNTZcdWFlNWNcdWFlNWRcdWFlNWZcdWFlNjBcdWFlNjFcdWFlNjVcdWFlNjhcdWFlNjlcdWFlNmNcdWFlNzBcdWFlNzhcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTc3XVtF''@;'; put 'put ''XV09NDUzMTIrRSxMWzQ1MzEyK0VdPUJbMTc3XVtFXSk7Zm9yKEJbMTc4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjZkXHVjZjZlXHVjZjZmXHVjZjcyXHVjZjczXHVjZjc1XHVjZjc2XHVjZjc3XHVjZjc5XHVjZjdh''@;'; put 'put ''XHVjZjdiXHVjZjdjXHVjZjdkXHVjZjdlXHVjZjdmXHVjZjgxXHVjZjgyXHVjZjgzXHVjZjg0XHVjZjg2XHVjZjg3XHVjZjg4XHVjZjg5XHVjZjhhXHVjZjhiXHVjZjhkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjhlXHVjZjhmXHVjZjkwXHVjZjkxXHVjZjkyXHVj''@;'; put 'put ''ZjkzXHVjZjk0XHVjZjk1XHVjZjk2XHVjZjk3XHVjZjk4XHVjZjk5XHVjZjlhXHVjZjliXHVjZjljXHVjZjlkXHVjZjllXHVjZjlmXHVjZmEwXHVjZmEyXHVjZmEzXHVjZmE0XHVjZmE1XHVjZmE2XHVjZmE3XHVjZmE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZmFh''@;'; put 'put ''XHVjZmFiXHVjZmFjXHVjZmFkXHVjZmFlXHVjZmFmXHVjZmIxXHVjZmIyXHVjZmIzXHVjZmI0XHVjZmI1XHVjZmI2XHVjZmI3XHVjZmI4XHVjZmI5XHVjZmJhXHVjZmJiXHVjZmJjXHVjZmJkXHVjZmJlXHVjZmJmXHVjZmMwXHVjZmMxXHVjZmMyXHVjZmMzXHVjZmM1XHVjZmM2XHVjZmM3XHVj''@;'; put 'put ''ZmM4XHVjZmM5XHVjZmNhXHVjZmNiXHVhZTc5XHVhZTdiXHVhZTdjXHVhZTdkXHVhZTg0XHVhZTg1XHVhZThjXHVhZWJjXHVhZWJkXHVhZWJlXHVhZWMwXHVhZWM0XHVhZWNjXHVhZWNkXHVhZWNmXHVhZWQwXHVhZWQxXHVhZWQ4XHVhZWQ5XHVhZWRjXHVhZWU4XHVhZWViXHVhZWVkXHVhZWY0''@;'; put 'put ''XHVhZWY4XHVhZWZjXHVhZjA3XHVhZjA4XHVhZjBkXHVhZjEwXHVhZjJjXHVhZjJkXHVhZjMwXHVhZjMyXHVhZjM0XHVhZjNjXHVhZjNkXHVhZjNmXHVhZjQxXHVhZjQyXHVhZjQzXHVhZjQ4XHVhZjQ5XHVhZjUwXHVhZjVjXHVhZjVkXHVhZjY0XHVhZjY1XHVhZjc5XHVhZjgwXHVhZjg0XHVh''@;'; put 'put ''Zjg4XHVhZjkwXHVhZjkxXHVhZjk1XHVhZjljXHVhZmI4XHVhZmI5XHVhZmJjXHVhZmMwXHVhZmM3XHVhZmM4XHVhZmM5XHVhZmNiXHVhZmNkXHVhZmNlXHVhZmQ0XHVhZmRjXHVhZmU4XHVhZmU5XHVhZmYwXHVhZmYxXHVhZmY0XHVhZmY4XHViMDAwXHViMDAxXHViMDA0XHViMDBjXHViMDEw''@;'; put 'put ''XHViMDE0XHViMDFjXHViMDFkXHViMDI4XHViMDQ0XHViMDQ1XHViMDQ4XHViMDRhXHViMDRjXHViMDRlXHViMDUzXHViMDU0XHViMDU1XHViMDU3XHViMDU5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzhdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihnZVtCWzE3OF1bRV1dPTQ1NTY4K0UsTFs0NTU2OCtFXT1CWzE3OF1bRV0pO2ZvcihCWzE3OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2ZjY1x1Y2ZjZFx1Y2ZjZVx1Y2ZjZlx1Y2ZkMFx1Y2ZkMVx1Y2ZkMlx1Y2Zk''@;'; put 'put ''M1x1Y2ZkNFx1Y2ZkNVx1Y2ZkNlx1Y2ZkN1x1Y2ZkOFx1Y2ZkOVx1Y2ZkYVx1Y2ZkYlx1Y2ZkY1x1Y2ZkZFx1Y2ZkZVx1Y2ZkZlx1Y2ZlMlx1Y2ZlM1x1Y2ZlNVx1Y2ZlNlx1Y2ZlN1x1Y2ZlOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2ZlYVx1Y2ZlYlx1Y2ZlY1x1''@;'; put 'put ''Y2ZlZFx1Y2ZlZVx1Y2ZlZlx1Y2ZmMlx1Y2ZmNFx1Y2ZmNlx1Y2ZmN1x1Y2ZmOFx1Y2ZmOVx1Y2ZmYVx1Y2ZmYlx1Y2ZmZFx1Y2ZmZVx1Y2ZmZlx1ZDAwMVx1ZDAwMlx1ZDAwM1x1ZDAwNVx1ZDAwNlx1ZDAwN1x1ZDAwOFx1ZDAwOVx1ZDAwYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZDAwYlx1ZDAwY1x1ZDAwZFx1ZDAwZVx1ZDAwZlx1ZDAxMFx1ZDAxMlx1ZDAxM1x1ZDAxNFx1ZDAxNVx1ZDAxNlx1ZDAxN1x1ZDAxOVx1ZDAxYVx1ZDAxYlx1ZDAxY1x1ZDAxZFx1ZDAxZVx1ZDAxZlx1ZDAyMFx1ZDAyMVx1ZDAyMlx1ZDAyM1x1ZDAyNFx1ZDAyNVx1ZDAyNlx1''@;'; put 'put ''ZDAyN1x1ZDAyOFx1ZDAyOVx1ZDAyYVx1ZDAyYlx1ZDAyY1x1YjA1ZFx1YjA3Y1x1YjA3ZFx1YjA4MFx1YjA4NFx1YjA4Y1x1YjA4ZFx1YjA4Zlx1YjA5MVx1YjA5OFx1YjA5OVx1YjA5YVx1YjA5Y1x1YjA5Zlx1YjBhMFx1YjBhMVx1YjBhMlx1YjBhOFx1YjBhOVx1YjBhYlx1YjBhY1x1YjBh''@;'; put 'put ''ZFx1YjBhZVx1YjBhZlx1YjBiMVx1YjBiM1x1YjBiNFx1YjBiNVx1YjBiOFx1YjBiY1x1YjBjNFx1YjBjNVx1YjBjN1x1YjBjOFx1YjBjOVx1YjBkMFx1YjBkMVx1YjBkNFx1YjBkOFx1YjBlMFx1YjBlNVx1YjEwOFx1YjEwOVx1YjEwYlx1YjEwY1x1YjExMFx1YjExMlx1YjExM1x1YjExOFx1''@;'; put 'put ''YjExOVx1YjExYlx1YjExY1x1YjExZFx1YjEyM1x1YjEyNFx1YjEyNVx1YjEyOFx1YjEyY1x1YjEzNFx1YjEzNVx1YjEzN1x1YjEzOFx1YjEzOVx1YjE0MFx1YjE0MVx1YjE0NFx1YjE0OFx1YjE1MFx1YjE1MVx1YjE1NFx1YjE1NVx1YjE1OFx1YjE1Y1x1YjE2MFx1YjE3OFx1YjE3OVx1YjE3''@;'; put 'put ''Y1x1YjE4MFx1YjE4Mlx1YjE4OFx1YjE4OVx1YjE4Ylx1YjE4ZFx1YjE5Mlx1YjE5M1x1YjE5NFx1YjE5OFx1YjE5Y1x1YjFhOFx1YjFjY1x1YjFkMFx1YjFkNFx1YjFkY1x1YjFkZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc5XVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoZ2VbQlsxNzldW0VdXT00NTgyNCtFLExbNDU4MjQrRV09QlsxNzldW0VdKTtmb3IoQlsxODBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQwMmVcdWQwMmZcdWQwMzBcdWQwMzFcdWQwMzJcdWQw''@;'; put 'put ''MzNcdWQwMzZcdWQwMzdcdWQwMzlcdWQwM2FcdWQwM2JcdWQwM2RcdWQwM2VcdWQwM2ZcdWQwNDBcdWQwNDFcdWQwNDJcdWQwNDNcdWQwNDZcdWQwNDhcdWQwNGFcdWQwNGJcdWQwNGNcdWQwNGRcdWQwNGVcdWQwNGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQwNTFc''@;'; put 'put ''dWQwNTJcdWQwNTNcdWQwNTVcdWQwNTZcdWQwNTdcdWQwNTlcdWQwNWFcdWQwNWJcdWQwNWNcdWQwNWRcdWQwNWVcdWQwNWZcdWQwNjFcdWQwNjJcdWQwNjNcdWQwNjRcdWQwNjVcdWQwNjZcdWQwNjdcdWQwNjhcdWQwNjlcdWQwNmFcdWQwNmJcdWQwNmVcdWQwNmZcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQwNzFcdWQwNzJcdWQwNzNcdWQwNzVcdWQwNzZcdWQwNzdcdWQwNzhcdWQwNzlcdWQwN2FcdWQwN2JcdWQwN2VcdWQwN2ZcdWQwODBcdWQwODJcdWQwODNcdWQwODRcdWQwODVcdWQwODZcdWQwODdcdWQwODhcdWQwODlcdWQwOGFcdWQwOGJcdWQwOGNc''@;'; put 'put ''dWQwOGRcdWQwOGVcdWQwOGZcdWQwOTBcdWQwOTFcdWQwOTJcdWQwOTNcdWQwOTRcdWIxZGZcdWIxZThcdWIxZTlcdWIxZWNcdWIxZjBcdWIxZjlcdWIxZmJcdWIxZmRcdWIyMDRcdWIyMDVcdWIyMDhcdWIyMGJcdWIyMGNcdWIyMTRcdWIyMTVcdWIyMTdcdWIyMTlcdWIyMjBcdWIyMzRcdWIy''@;'; put 'put ''M2NcdWIyNThcdWIyNWNcdWIyNjBcdWIyNjhcdWIyNjlcdWIyNzRcdWIyNzVcdWIyN2NcdWIyODRcdWIyODVcdWIyODlcdWIyOTBcdWIyOTFcdWIyOTRcdWIyOThcdWIyOTlcdWIyOWFcdWIyYTBcdWIyYTFcdWIyYTNcdWIyYTVcdWIyYTZcdWIyYWFcdWIyYWNcdWIyYjBcdWIyYjRcdWIyYzhc''@;'; put 'put ''dWIyYzlcdWIyY2NcdWIyZDBcdWIyZDJcdWIyZDhcdWIyZDlcdWIyZGJcdWIyZGRcdWIyZTJcdWIyZTRcdWIyZTVcdWIyZTZcdWIyZThcdWIyZWJcdWIyZWNcdWIyZWRcdWIyZWVcdWIyZWZcdWIyZjNcdWIyZjRcdWIyZjVcdWIyZjdcdWIyZjhcdWIyZjlcdWIyZmFcdWIyZmJcdWIyZmZcdWIz''@;'; put 'put ''MDBcdWIzMDFcdWIzMDRcdWIzMDhcdWIzMTBcdWIzMTFcdWIzMTNcdWIzMTRcdWIzMTVcdWIzMWNcdWIzNTRcdWIzNTVcdWIzNTZcdWIzNThcdWIzNWJcdWIzNWNcdWIzNWVcdWIzNWZcdWIzNjRcdWIzNjVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODBdLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzE4MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTgwXVtFXV09NDYwODArRSxMWzQ2MDgwK0VdPUJbMTgwXVtFXSk7Zm9yKEJbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDk1XHVkMDk2XHVkMDk3XHVk''@;'; put 'put ''MDk4XHVkMDk5XHVkMDlhXHVkMDliXHVkMDljXHVkMDlkXHVkMDllXHVkMDlmXHVkMGEwXHVkMGExXHVkMGEyXHVkMGEzXHVkMGE2XHVkMGE3XHVkMGE5XHVkMGFhXHVkMGFiXHVkMGFkXHVkMGFlXHVkMGFmXHVkMGIwXHVkMGIxXHVkMGIyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVkMGIzXHVkMGI2XHVkMGI4XHVkMGJhXHVkMGJiXHVkMGJjXHVkMGJkXHVkMGJlXHVkMGJmXHVkMGMyXHVkMGMzXHVkMGM1XHVkMGM2XHVkMGM3XHVkMGNhXHVkMGNiXHVkMGNjXHVkMGNkXHVkMGNlXHVkMGNmXHVkMGQyXHVkMGQ2XHVkMGQ3XHVkMGQ4XHVkMGQ5XHVkMGRhXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMGRiXHVkMGRlXHVkMGRmXHVkMGUxXHVkMGUyXHVkMGUzXHVkMGU1XHVkMGU2XHVkMGU3XHVkMGU4XHVkMGU5XHVkMGVhXHVkMGViXHVkMGVlXHVkMGYyXHVkMGYzXHVkMGY0XHVkMGY1XHVkMGY2XHVkMGY3XHVkMGY5XHVkMGZh''@;'; put 'put ''XHVkMGZiXHVkMGZjXHVkMGZkXHVkMGZlXHVkMGZmXHVkMTAwXHVkMTAxXHVkMTAyXHVkMTAzXHVkMTA0XHViMzY3XHViMzY5XHViMzZiXHViMzZlXHViMzcwXHViMzcxXHViMzc0XHViMzc4XHViMzgwXHViMzgxXHViMzgzXHViMzg0XHViMzg1XHViMzhjXHViMzkwXHViMzk0XHViM2EwXHVi''@;'; put 'put ''M2ExXHViM2E4XHViM2FjXHViM2M0XHViM2M1XHViM2M4XHViM2NiXHViM2NjXHViM2NlXHViM2QwXHViM2Q0XHViM2Q1XHViM2Q3XHViM2Q5XHViM2RiXHViM2RkXHViM2UwXHViM2U0XHViM2U4XHViM2ZjXHViNDEwXHViNDE4XHViNDFjXHViNDIwXHViNDI4XHViNDI5XHViNDJiXHViNDM0''@;'; put 'put ''XHViNDUwXHViNDUxXHViNDU0XHViNDU4XHViNDYwXHViNDYxXHViNDYzXHViNDY1XHViNDZjXHViNDgwXHViNDg4XHViNDlkXHViNGE0XHViNGE4XHViNGFjXHViNGI1XHViNGI3XHViNGI5XHViNGMwXHViNGM0XHViNGM4XHViNGQwXHViNGQ1XHViNGRjXHViNGRkXHViNGUwXHViNGUzXHVi''@;'; put 'put ''NGU0XHViNGU2XHViNGVjXHViNGVkXHViNGVmXHViNGYxXHViNGY4XHViNTE0XHViNTE1XHViNTE4XHViNTFiXHViNTFjXHViNTI0XHViNTI1XHViNTI3XHViNTI4XHViNTI5XHViNTJhXHViNTMwXHViNTMxXHViNTM0XHViNTM4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgxXS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsxODFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4MV1bRV1dPTQ2MzM2K0UsTFs0NjMzNitFXT1CWzE4MV1bRV0pO2ZvcihCWzE4Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDEwNVx1''@;'; put 'put ''ZDEwNlx1ZDEwN1x1ZDEwOFx1ZDEwOVx1ZDEwYVx1ZDEwYlx1ZDEwY1x1ZDEwZVx1ZDEwZlx1ZDExMFx1ZDExMVx1ZDExMlx1ZDExM1x1ZDExNFx1ZDExNVx1ZDExNlx1ZDExN1x1ZDExOFx1ZDExOVx1ZDExYVx1ZDExYlx1ZDExY1x1ZDExZFx1ZDExZVx1ZDExZlx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDEyMFx1ZDEyMVx1ZDEyMlx1ZDEyM1x1ZDEyNFx1ZDEyNVx1ZDEyNlx1ZDEyN1x1ZDEyOFx1ZDEyOVx1ZDEyYVx1ZDEyYlx1ZDEyY1x1ZDEyZFx1ZDEyZVx1ZDEyZlx1ZDEzMlx1ZDEzM1x1ZDEzNVx1ZDEzNlx1ZDEzN1x1ZDEzOVx1ZDEzYlx1ZDEzY1x1''@;'; put 'put ''ZDEzZFx1ZDEzZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDEzZlx1ZDE0Mlx1ZDE0Nlx1ZDE0N1x1ZDE0OFx1ZDE0OVx1ZDE0YVx1ZDE0Ylx1ZDE0ZVx1ZDE0Zlx1ZDE1MVx1ZDE1Mlx1ZDE1M1x1ZDE1NVx1ZDE1Nlx1ZDE1N1x1ZDE1OFx1ZDE1OVx1ZDE1YVx1ZDE1''@;'; put 'put ''Ylx1ZDE1ZVx1ZDE2MFx1ZDE2Mlx1ZDE2M1x1ZDE2NFx1ZDE2NVx1ZDE2Nlx1ZDE2N1x1ZDE2OVx1ZDE2YVx1ZDE2Ylx1ZDE2ZFx1YjU0MFx1YjU0MVx1YjU0M1x1YjU0NFx1YjU0NVx1YjU0Ylx1YjU0Y1x1YjU0ZFx1YjU1MFx1YjU1NFx1YjU1Y1x1YjU1ZFx1YjU1Zlx1YjU2MFx1YjU2MVx1''@;'; put 'put ''YjVhMFx1YjVhMVx1YjVhNFx1YjVhOFx1YjVhYVx1YjVhYlx1YjViMFx1YjViMVx1YjViM1x1YjViNFx1YjViNVx1YjViYlx1YjViY1x1YjViZFx1YjVjMFx1YjVjNFx1YjVjY1x1YjVjZFx1YjVjZlx1YjVkMFx1YjVkMVx1YjVkOFx1YjVlY1x1YjYxMFx1YjYxMVx1YjYxNFx1YjYxOFx1YjYy''@;'; put 'put ''NVx1YjYyY1x1YjYzNFx1YjY0OFx1YjY2NFx1YjY2OFx1YjY5Y1x1YjY5ZFx1YjZhMFx1YjZhNFx1YjZhYlx1YjZhY1x1YjZiMVx1YjZkNFx1YjZmMFx1YjZmNFx1YjZmOFx1YjcwMFx1YjcwMVx1YjcwNVx1YjcyOFx1YjcyOVx1YjcyY1x1YjcyZlx1YjczMFx1YjczOFx1YjczOVx1YjczYlx1''@;'; put 'put ''Yjc0NFx1Yjc0OFx1Yjc0Y1x1Yjc1NFx1Yjc1NVx1Yjc2MFx1Yjc2NFx1Yjc2OFx1Yjc3MFx1Yjc3MVx1Yjc3M1x1Yjc3NVx1Yjc3Y1x1Yjc3ZFx1Yjc4MFx1Yjc4NFx1Yjc4Y1x1Yjc4ZFx1Yjc4Zlx1Yjc5MFx1Yjc5MVx1Yjc5Mlx1Yjc5Nlx1Yjc5N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzE4Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODJdW0VdXT00NjU5MitFLExbNDY1OTIrRV09QlsxODJdW0VdKTtmb3IoQlsxODNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWQxNmVcdWQxNmZcdWQxNzBcdWQxNzFcdWQxNzJcdWQxNzNcdWQxNzRcdWQxNzVcdWQxNzZcdWQxNzdcdWQxNzhcdWQxNzlcdWQxN2FcdWQxN2JcdWQxN2RcdWQxN2VcdWQxN2ZcdWQxODBcdWQxODFcdWQxODJcdWQxODNcdWQxODVcdWQxODZcdWQxODdcdWQxODlcdWQxOGFcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxOGJcdWQxOGNcdWQxOGRcdWQxOGVcdWQxOGZcdWQxOTBcdWQxOTFcdWQxOTJcdWQxOTNcdWQxOTRcdWQxOTVcdWQxOTZcdWQxOTdcdWQxOThcdWQxOTlcdWQxOWFcdWQxOWJcdWQxOWNcdWQxOWRcdWQxOWVcdWQxOWZcdWQxYTJc''@;'; put 'put ''dWQxYTNcdWQxYTVcdWQxYTZcdWQxYTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxYTlcdWQxYWFcdWQxYWJcdWQxYWNcdWQxYWRcdWQxYWVcdWQxYWZcdWQxYjJcdWQxYjRcdWQxYjZcdWQxYjdcdWQxYjhcdWQxYjlcdWQxYmJcdWQxYmRcdWQxYmVcdWQxYmZcdWQx''@;'; put 'put ''YzFcdWQxYzJcdWQxYzNcdWQxYzRcdWQxYzVcdWQxYzZcdWQxYzdcdWQxYzhcdWQxYzlcdWQxY2FcdWQxY2JcdWQxY2NcdWQxY2RcdWQxY2VcdWQxY2ZcdWI3OThcdWI3OTlcdWI3OWNcdWI3YTBcdWI3YThcdWI3YTlcdWI3YWJcdWI3YWNcdWI3YWRcdWI3YjRcdWI3YjVcdWI3YjhcdWI3Yzdc''@;'; put 'put ''dWI3YzlcdWI3ZWNcdWI3ZWRcdWI3ZjBcdWI3ZjRcdWI3ZmNcdWI3ZmRcdWI3ZmZcdWI4MDBcdWI4MDFcdWI4MDdcdWI4MDhcdWI4MDlcdWI4MGNcdWI4MTBcdWI4MThcdWI4MTlcdWI4MWJcdWI4MWRcdWI4MjRcdWI4MjVcdWI4MjhcdWI4MmNcdWI4MzRcdWI4MzVcdWI4MzdcdWI4MzhcdWI4''@;'; put 'put ''MzlcdWI4NDBcdWI4NDRcdWI4NTFcdWI4NTNcdWI4NWNcdWI4NWRcdWI4NjBcdWI4NjRcdWI4NmNcdWI4NmRcdWI4NmZcdWI4NzFcdWI4NzhcdWI4N2NcdWI4OGRcdWI4YThcdWI4YjBcdWI4YjRcdWI4YjhcdWI4YzBcdWI4YzFcdWI4YzNcdWI4YzVcdWI4Y2NcdWI4ZDBcdWI4ZDRcdWI4ZGRc''@;'; put 'put ''dWI4ZGZcdWI4ZTFcdWI4ZThcdWI4ZTlcdWI4ZWNcdWI4ZjBcdWI4ZjhcdWI4ZjlcdWI4ZmJcdWI4ZmRcdWI5MDRcdWI5MThcdWI5MjBcdWI5M2NcdWI5M2RcdWI5NDBcdWI5NDRcdWI5NGNcdWI5NGZcdWI5NTFcdWI5NThcdWI5NTlcdWI5NWNcdWI5NjBcdWI5NjhcdWI5NjlcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsxODNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4M11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTgzXVtFXV09NDY4NDgrRSxMWzQ2ODQ4K0VdPUJbMTgzXVtFXSk7Zm9yKEJbMTg0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVkMWQwXHVkMWQxXHVkMWQyXHVkMWQzXHVkMWQ0XHVkMWQ1XHVkMWQ2XHVkMWQ3XHVkMWQ5XHVkMWRhXHVkMWRiXHVkMWRjXHVkMWRkXHVkMWRlXHVkMWRmXHVkMWUwXHVkMWUxXHVkMWUyXHVkMWUzXHVkMWU0XHVkMWU1XHVkMWU2XHVkMWU3XHVkMWU4XHVk''@;'; put 'put ''MWU5XHVkMWVhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMWViXHVkMWVjXHVkMWVkXHVkMWVlXHVkMWVmXHVkMWYwXHVkMWYxXHVkMWYyXHVkMWYzXHVkMWY1XHVkMWY2XHVkMWY3XHVkMWY5XHVkMWZhXHVkMWZiXHVkMWZjXHVkMWZkXHVkMWZlXHVkMWZmXHVkMjAw''@;'; put 'put ''XHVkMjAxXHVkMjAyXHVkMjAzXHVkMjA0XHVkMjA1XHVkMjA2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjA4XHVkMjBhXHVkMjBiXHVkMjBjXHVkMjBkXHVkMjBlXHVkMjBmXHVkMjExXHVkMjEyXHVkMjEzXHVkMjE0XHVkMjE1XHVkMjE2XHVkMjE3XHVkMjE4XHVk''@;'; put 'put ''MjE5XHVkMjFhXHVkMjFiXHVkMjFjXHVkMjFkXHVkMjFlXHVkMjFmXHVkMjIwXHVkMjIxXHVkMjIyXHVkMjIzXHVkMjI0XHVkMjI1XHVkMjI2XHVkMjI3XHVkMjI4XHVkMjI5XHViOTZiXHViOTZkXHViOTc0XHViOTc1XHViOTc4XHViOTdjXHViOTg0XHViOTg1XHViOTg3XHViOTg5XHViOThh''@;'; put 'put ''XHViOThkXHViOThlXHViOWFjXHViOWFkXHViOWIwXHViOWI0XHViOWJjXHViOWJkXHViOWJmXHViOWMxXHViOWM4XHViOWM5XHViOWNjXHViOWNlXHViOWNmXHViOWQwXHViOWQxXHViOWQyXHViOWQ4XHViOWQ5XHViOWRiXHViOWRkXHViOWRlXHViOWUxXHViOWUzXHViOWU0XHViOWU1XHVi''@;'; put 'put ''OWU4XHViOWVjXHViOWY0XHViOWY1XHViOWY3XHViOWY4XHViOWY5XHViOWZhXHViYTAwXHViYTAxXHViYTA4XHViYTE1XHViYTM4XHViYTM5XHViYTNjXHViYTQwXHViYTQyXHViYTQ4XHViYTQ5XHViYTRiXHViYTRkXHViYTRlXHViYTUzXHViYTU0XHViYTU1XHViYTU4XHViYTVjXHViYTY0''@;'; put 'put ''XHViYTY1XHViYTY3XHViYTY4XHViYTY5XHViYTcwXHViYTcxXHViYTc0XHViYTc4XHViYTgzXHViYTg0XHViYTg1XHViYTg3XHViYThjXHViYWE4XHViYWE5XHViYWFiXHViYWFjXHViYWIwXHViYWIyXHViYWI4XHViYWI5XHViYWJiXHViYWJkXHViYWM0XHViYWM4XHViYWQ4XHViYWQ5XHVi''@;'; put 'put ''YWZjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4NF1bRV1dPTQ3MTA0K0UsTFs0NzEwNCtFXT1CWzE4NF1bRV0pO2ZvcihCWzE4NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDIyYVx1ZDIyYlx1ZDIyZVx1ZDIyZlx1ZDIzMVx1ZDIzMlx1ZDIzM1x1ZDIzNVx1ZDIzNlx1ZDIzN1x1ZDIzOFx1ZDIzOVx1ZDIzYVx1ZDIzYlx1ZDIzZVx1ZDI0MFx1ZDI0Mlx1ZDI0M1x1ZDI0NFx1ZDI0NVx1ZDI0Nlx1ZDI0N1x1''@;'; put 'put ''ZDI0OVx1ZDI0YVx1ZDI0Ylx1ZDI0Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDI0ZFx1ZDI0ZVx1ZDI0Zlx1ZDI1MFx1ZDI1MVx1ZDI1Mlx1ZDI1M1x1ZDI1NFx1ZDI1NVx1ZDI1Nlx1ZDI1N1x1ZDI1OFx1ZDI1OVx1ZDI1YVx1ZDI1Ylx1ZDI1ZFx1ZDI1ZVx1ZDI1''@;'; put 'put ''Zlx1ZDI2MFx1ZDI2MVx1ZDI2Mlx1ZDI2M1x1ZDI2NVx1ZDI2Nlx1ZDI2N1x1ZDI2OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDI2OVx1ZDI2YVx1ZDI2Ylx1ZDI2Y1x1ZDI2ZFx1ZDI2ZVx1ZDI2Zlx1ZDI3MFx1ZDI3MVx1ZDI3Mlx1ZDI3M1x1ZDI3NFx1ZDI3NVx1''@;'; put 'put ''ZDI3Nlx1ZDI3N1x1ZDI3OFx1ZDI3OVx1ZDI3YVx1ZDI3Ylx1ZDI3Y1x1ZDI3ZFx1ZDI3ZVx1ZDI3Zlx1ZDI4Mlx1ZDI4M1x1ZDI4NVx1ZDI4Nlx1ZDI4N1x1ZDI4OVx1ZDI4YVx1ZDI4Ylx1ZDI4Y1x1YmIwMFx1YmIwNFx1YmIwZFx1YmIwZlx1YmIxMVx1YmIxOFx1YmIxY1x1YmIyMFx1YmIy''@;'; put 'put ''OVx1YmIyYlx1YmIzNFx1YmIzNVx1YmIzNlx1YmIzOFx1YmIzYlx1YmIzY1x1YmIzZFx1YmIzZVx1YmI0NFx1YmI0NVx1YmI0N1x1YmI0OVx1YmI0ZFx1YmI0Zlx1YmI1MFx1YmI1NFx1YmI1OFx1YmI2MVx1YmI2M1x1YmI2Y1x1YmI4OFx1YmI4Y1x1YmI5MFx1YmJhNFx1YmJhOFx1YmJhY1x1''@;'; put 'put ''YmJiNFx1YmJiN1x1YmJjMFx1YmJjNFx1YmJjOFx1YmJkMFx1YmJkM1x1YmJmOFx1YmJmOVx1YmJmY1x1YmJmZlx1YmMwMFx1YmMwMlx1YmMwOFx1YmMwOVx1YmMwYlx1YmMwY1x1YmMwZFx1YmMwZlx1YmMxMVx1YmMxNFx1YmMxNVx1YmMxNlx1YmMxN1x1YmMxOFx1YmMxYlx1YmMxY1x1YmMx''@;'; put 'put ''ZFx1YmMxZVx1YmMxZlx1YmMyNFx1YmMyNVx1YmMyN1x1YmMyOVx1YmMyZFx1YmMzMFx1YmMzMVx1YmMzNFx1YmMzOFx1YmM0MFx1YmM0MVx1YmM0M1x1YmM0NFx1YmM0NVx1YmM0OVx1YmM0Y1x1YmM0ZFx1YmM1MFx1YmM1ZFx1YmM4NFx1YmM4NVx1YmM4OFx1YmM4Ylx1YmM4Y1x1YmM4ZVx1''@;'; put 'put ''YmM5NFx1YmM5NVx1YmM5N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODVdW0VdXT00NzM2MCtFLExbNDczNjArRV09QlsxODVdW0VdKTtmb3IoQlsxODZdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyOGRcdWQyOGVcdWQyOGZcdWQyOTJcdWQyOTNcdWQyOTRcdWQyOTZcdWQyOTdcdWQyOThcdWQyOTlcdWQyOWFcdWQyOWJcdWQyOWRcdWQyOWVcdWQyOWZcdWQyYTFcdWQyYTJcdWQyYTNcdWQyYTVcdWQyYTZc''@;'; put 'put ''dWQyYTdcdWQyYThcdWQyYTlcdWQyYWFcdWQyYWJcdWQyYWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyYWVcdWQyYWZcdWQyYjBcdWQyYjJcdWQyYjNcdWQyYjRcdWQyYjVcdWQyYjZcdWQyYjdcdWQyYmFcdWQyYmJcdWQyYmRcdWQyYmVcdWQyYzFcdWQyYzNcdWQy''@;'; put 'put ''YzRcdWQyYzVcdWQyYzZcdWQyYzdcdWQyY2FcdWQyY2NcdWQyY2RcdWQyY2VcdWQyY2ZcdWQyZDBcdWQyZDFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyZDJcdWQyZDNcdWQyZDVcdWQyZDZcdWQyZDdcdWQyZDlcdWQyZGFcdWQyZGJcdWQyZGRcdWQyZGVcdWQyZGZc''@;'; put 'put ''dWQyZTBcdWQyZTFcdWQyZTJcdWQyZTNcdWQyZTZcdWQyZTdcdWQyZThcdWQyZTlcdWQyZWFcdWQyZWJcdWQyZWNcdWQyZWRcdWQyZWVcdWQyZWZcdWQyZjJcdWQyZjNcdWQyZjVcdWQyZjZcdWQyZjdcdWQyZjlcdWQyZmFcdWJjOTlcdWJjOWFcdWJjYTBcdWJjYTFcdWJjYTRcdWJjYTdcdWJj''@;'; put 'put ''YThcdWJjYjBcdWJjYjFcdWJjYjNcdWJjYjRcdWJjYjVcdWJjYmNcdWJjYmRcdWJjYzBcdWJjYzRcdWJjY2RcdWJjY2ZcdWJjZDBcdWJjZDFcdWJjZDVcdWJjZDhcdWJjZGNcdWJjZjRcdWJjZjVcdWJjZjZcdWJjZjhcdWJjZmNcdWJkMDRcdWJkMDVcdWJkMDdcdWJkMDlcdWJkMTBcdWJkMTRc''@;'; put 'put ''dWJkMjRcdWJkMmNcdWJkNDBcdWJkNDhcdWJkNDlcdWJkNGNcdWJkNTBcdWJkNThcdWJkNTlcdWJkNjRcdWJkNjhcdWJkODBcdWJkODFcdWJkODRcdWJkODdcdWJkODhcdWJkODlcdWJkOGFcdWJkOTBcdWJkOTFcdWJkOTNcdWJkOTVcdWJkOTlcdWJkOWFcdWJkOWNcdWJkYTRcdWJkYjBcdWJk''@;'; put 'put ''YjhcdWJkZDRcdWJkZDVcdWJkZDhcdWJkZGNcdWJkZTlcdWJkZjBcdWJkZjRcdWJkZjhcdWJlMDBcdWJlMDNcdWJlMDVcdWJlMGNcdWJlMGRcdWJlMTBcdWJlMTRcdWJlMWNcdWJlMWRcdWJlMWZcdWJlNDRcdWJlNDVcdWJlNDhcdWJlNGNcdWJlNGVcdWJlNTRcdWJlNTVcdWJlNTdcdWJlNTlc''@;'; put 'put ''dWJlNWFcdWJlNWJcdWJlNjBcdWJlNjFcdWJlNjRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTg2XVtFXV09NDc2MTYrRSxMWzQ3NjE2K0VdPUJbMTg2XVtFXSk7Zm9yKEJbMTg3XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmZiXHVkMmZjXHVkMmZkXHVkMmZlXHVkMmZmXHVkMzAyXHVkMzA0XHVkMzA2XHVkMzA3XHVkMzA4XHVkMzA5XHVkMzBhXHVkMzBiXHVkMzBmXHVkMzExXHVkMzEyXHVkMzEzXHVkMzE1''@;'; put 'put ''XHVkMzE3XHVkMzE4XHVkMzE5XHVkMzFhXHVkMzFiXHVkMzFlXHVkMzIyXHVkMzIzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMzI0XHVkMzI2XHVkMzI3XHVkMzJhXHVkMzJiXHVkMzJkXHVkMzJlXHVkMzJmXHVkMzMxXHVkMzMyXHVkMzMzXHVkMzM0XHVkMzM1XHVk''@;'; put 'put ''MzM2XHVkMzM3XHVkMzNhXHVkMzNlXHVkMzNmXHVkMzQwXHVkMzQxXHVkMzQyXHVkMzQzXHVkMzQ2XHVkMzQ3XHVkMzQ4XHVkMzQ5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMzRhXHVkMzRiXHVkMzRjXHVkMzRkXHVkMzRlXHVkMzRmXHVkMzUwXHVkMzUxXHVkMzUy''@;'; put 'put ''XHVkMzUzXHVkMzU0XHVkMzU1XHVkMzU2XHVkMzU3XHVkMzU4XHVkMzU5XHVkMzVhXHVkMzViXHVkMzVjXHVkMzVkXHVkMzVlXHVkMzVmXHVkMzYwXHVkMzYxXHVkMzYyXHVkMzYzXHVkMzY0XHVkMzY1XHVkMzY2XHVkMzY3XHVkMzY4XHVkMzY5XHViZTY4XHViZTZhXHViZTcwXHViZTcxXHVi''@;'; put 'put ''ZTczXHViZTc0XHViZTc1XHViZTdiXHViZTdjXHViZTdkXHViZTgwXHViZTg0XHViZThjXHViZThkXHViZThmXHViZTkwXHViZTkxXHViZTk4XHViZTk5XHViZWE4XHViZWQwXHViZWQxXHViZWQ0XHViZWQ3XHViZWQ4XHViZWUwXHViZWUzXHViZWU0XHViZWU1XHViZWVjXHViZjAxXHViZjA4''@;'; put 'put ''XHViZjA5XHViZjE4XHViZjE5XHViZjFiXHViZjFjXHViZjFkXHViZjQwXHViZjQxXHViZjQ0XHViZjQ4XHViZjUwXHViZjUxXHViZjU1XHViZjk0XHViZmIwXHViZmM1XHViZmNjXHViZmNkXHViZmQwXHViZmQ0XHViZmRjXHViZmRmXHViZmUxXHVjMDNjXHVjMDUxXHVjMDU4XHVjMDVjXHVj''@;'; put 'put ''MDYwXHVjMDY4XHVjMDY5XHVjMDkwXHVjMDkxXHVjMDk0XHVjMDk4XHVjMGEwXHVjMGExXHVjMGEzXHVjMGE1XHVjMGFjXHVjMGFkXHVjMGFmXHVjMGIwXHVjMGIzXHVjMGI0XHVjMGI1XHVjMGI2XHVjMGJjXHVjMGJkXHVjMGJmXHVjMGMwXHVjMGMxXHVjMGM1XHVjMGM4XHVjMGM5XHVjMGNj''@;'; put 'put ''XHVjMGQwXHVjMGQ4XHVjMGQ5XHVjMGRiXHVjMGRjXHVjMGRkXHVjMGU0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4N11bRV1dPTQ3ODcyK0UsTFs0Nzg3MitFXT1CWzE4N11bRV0pO2Zv''@;'; put 'put ''cihCWzE4OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDM2YVx1ZDM2Ylx1ZDM2Y1x1ZDM2ZFx1ZDM2ZVx1ZDM2Zlx1ZDM3MFx1ZDM3MVx1ZDM3Mlx1ZDM3M1x1ZDM3NFx1ZDM3NVx1ZDM3Nlx1ZDM3N1x1ZDM3OFx1ZDM3''@;'; put 'put ''OVx1ZDM3YVx1ZDM3Ylx1ZDM3ZVx1ZDM3Zlx1ZDM4MVx1ZDM4Mlx1ZDM4M1x1ZDM4NVx1ZDM4Nlx1ZDM4N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDM4OFx1ZDM4OVx1ZDM4YVx1ZDM4Ylx1ZDM4ZVx1ZDM5Mlx1ZDM5M1x1ZDM5NFx1ZDM5NVx1ZDM5Nlx1ZDM5N1x1''@;'; put 'put ''ZDM5YVx1ZDM5Ylx1ZDM5ZFx1ZDM5ZVx1ZDM5Zlx1ZDNhMVx1ZDNhMlx1ZDNhM1x1ZDNhNFx1ZDNhNVx1ZDNhNlx1ZDNhN1x1ZDNhYVx1ZDNhY1x1ZDNhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDNhZlx1ZDNiMFx1ZDNiMVx1ZDNiMlx1ZDNiM1x1ZDNiNVx1ZDNi''@;'; put 'put ''Nlx1ZDNiN1x1ZDNiOVx1ZDNiYVx1ZDNiYlx1ZDNiZFx1ZDNiZVx1ZDNiZlx1ZDNjMFx1ZDNjMVx1ZDNjMlx1ZDNjM1x1ZDNjNlx1ZDNjN1x1ZDNjYVx1ZDNjYlx1ZDNjY1x1ZDNjZFx1ZDNjZVx1ZDNjZlx1ZDNkMVx1ZDNkMlx1ZDNkM1x1ZDNkNFx1ZDNkNVx1ZDNkNlx1YzBlNVx1YzBlOFx1''@;'; put 'put ''YzBlY1x1YzBmNFx1YzBmNVx1YzBmN1x1YzBmOVx1YzEwMFx1YzEwNFx1YzEwOFx1YzExMFx1YzExNVx1YzExY1x1YzExZFx1YzExZVx1YzExZlx1YzEyMFx1YzEyM1x1YzEyNFx1YzEyNlx1YzEyN1x1YzEyY1x1YzEyZFx1YzEyZlx1YzEzMFx1YzEzMVx1YzEzNlx1YzEzOFx1YzEzOVx1YzEz''@;'; put 'put ''Y1x1YzE0MFx1YzE0OFx1YzE0OVx1YzE0Ylx1YzE0Y1x1YzE0ZFx1YzE1NFx1YzE1NVx1YzE1OFx1YzE1Y1x1YzE2NFx1YzE2NVx1YzE2N1x1YzE2OFx1YzE2OVx1YzE3MFx1YzE3NFx1YzE3OFx1YzE4NVx1YzE4Y1x1YzE4ZFx1YzE4ZVx1YzE5MFx1YzE5NFx1YzE5Nlx1YzE5Y1x1YzE5ZFx1''@;'; put 'put ''YzE5Zlx1YzFhMVx1YzFhNVx1YzFhOFx1YzFhOVx1YzFhY1x1YzFiMFx1YzFiZFx1YzFjNFx1YzFjOFx1YzFjY1x1YzFkNFx1YzFkN1x1YzFkOFx1YzFlMFx1YzFlNFx1YzFlOFx1YzFmMFx1YzFmMVx1YzFmM1x1YzFmY1x1YzFmZFx1YzIwMFx1YzIwNFx1YzIwY1x1YzIwZFx1YzIwZlx1YzIx''@;'; put 'put ''MVx1YzIxOFx1YzIxOVx1YzIxY1x1YzIxZlx1YzIyMFx1YzIyOFx1YzIyOVx1YzIyYlx1YzIyZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODhdW0VdXT00ODEyOCtFLExbNDgxMjgrRV09''@;'; put 'put ''QlsxODhdW0VdKTtmb3IoQlsxODldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzZDdcdWQzZDlcdWQzZGFcdWQzZGJcdWQzZGNcdWQzZGRcdWQzZGVcdWQzZGZcdWQzZTBcdWQzZTJcdWQzZTRcdWQzZTVcdWQzZTZcdWQz''@;'; put 'put ''ZTdcdWQzZThcdWQzZTlcdWQzZWFcdWQzZWJcdWQzZWVcdWQzZWZcdWQzZjFcdWQzZjJcdWQzZjNcdWQzZjVcdWQzZjZcdWQzZjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzZjhcdWQzZjlcdWQzZmFcdWQzZmJcdWQzZmVcdWQ0MDBcdWQ0MDJcdWQ0MDNcdWQ0MDRc''@;'; put 'put ''dWQ0MDVcdWQ0MDZcdWQ0MDdcdWQ0MDlcdWQ0MGFcdWQ0MGJcdWQ0MGNcdWQ0MGRcdWQ0MGVcdWQ0MGZcdWQ0MTBcdWQ0MTFcdWQ0MTJcdWQ0MTNcdWQ0MTRcdWQ0MTVcdWQ0MTZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0MTdcdWQ0MThcdWQ0MTlcdWQ0MWFcdWQ0''@;'; put 'put ''MWJcdWQ0MWNcdWQ0MWVcdWQ0MWZcdWQ0MjBcdWQ0MjFcdWQ0MjJcdWQ0MjNcdWQ0MjRcdWQ0MjVcdWQ0MjZcdWQ0MjdcdWQ0MjhcdWQ0MjlcdWQ0MmFcdWQ0MmJcdWQ0MmNcdWQ0MmRcdWQ0MmVcdWQ0MmZcdWQ0MzBcdWQ0MzFcdWQ0MzJcdWQ0MzNcdWQ0MzRcdWQ0MzVcdWQ0MzZcdWQ0Mzdc''@;'; put 'put ''dWMyMmZcdWMyMzFcdWMyMzJcdWMyMzRcdWMyNDhcdWMyNTBcdWMyNTFcdWMyNTRcdWMyNThcdWMyNjBcdWMyNjVcdWMyNmNcdWMyNmRcdWMyNzBcdWMyNzRcdWMyN2NcdWMyN2RcdWMyN2ZcdWMyODFcdWMyODhcdWMyODlcdWMyOTBcdWMyOThcdWMyOWJcdWMyOWRcdWMyYTRcdWMyYTVcdWMy''@;'; put 'put ''YThcdWMyYWNcdWMyYWRcdWMyYjRcdWMyYjVcdWMyYjdcdWMyYjlcdWMyZGNcdWMyZGRcdWMyZTBcdWMyZTNcdWMyZTRcdWMyZWJcdWMyZWNcdWMyZWRcdWMyZWZcdWMyZjFcdWMyZjZcdWMyZjhcdWMyZjlcdWMyZmJcdWMyZmNcdWMzMDBcdWMzMDhcdWMzMDlcdWMzMGNcdWMzMGRcdWMzMTNc''@;'; put 'put ''dWMzMTRcdWMzMTVcdWMzMThcdWMzMWNcdWMzMjRcdWMzMjVcdWMzMjhcdWMzMjlcdWMzNDVcdWMzNjhcdWMzNjlcdWMzNmNcdWMzNzBcdWMzNzJcdWMzNzhcdWMzNzlcdWMzN2NcdWMzN2RcdWMzODRcdWMzODhcdWMzOGNcdWMzYzBcdWMzZDhcdWMzZDlcdWMzZGNcdWMzZGZcdWMzZTBcdWMz''@;'; put 'put ''ZTJcdWMzZThcdWMzZTlcdWMzZWRcdWMzZjRcdWMzZjVcdWMzZjhcdWM0MDhcdWM0MTBcdWM0MjRcdWM0MmNcdWM0MzBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4OV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTg5XVtFXV09NDgzODQr''@;'; put 'put ''RSxMWzQ4Mzg0K0VdPUJbMTg5XVtFXSk7Zm9yKEJbMTkwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDM4XHVkNDM5XHVkNDNhXHVkNDNiXHVkNDNjXHVkNDNkXHVkNDNlXHVkNDNmXHVkNDQxXHVkNDQyXHVkNDQzXHVk''@;'; put 'put ''NDQ1XHVkNDQ2XHVkNDQ3XHVkNDQ4XHVkNDQ5XHVkNDRhXHVkNDRiXHVkNDRjXHVkNDRkXHVkNDRlXHVkNDRmXHVkNDUwXHVkNDUxXHVkNDUyXHVkNDUzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDU0XHVkNDU1XHVkNDU2XHVkNDU3XHVkNDU4XHVkNDU5XHVkNDVh''@;'; put 'put ''XHVkNDViXHVkNDVkXHVkNDVlXHVkNDVmXHVkNDYxXHVkNDYyXHVkNDYzXHVkNDY1XHVkNDY2XHVkNDY3XHVkNDY4XHVkNDY5XHVkNDZhXHVkNDZiXHVkNDZjXHVkNDZlXHVkNDcwXHVkNDcxXHVkNDcyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDczXHVkNDc0XHVk''@;'; put 'put ''NDc1XHVkNDc2XHVkNDc3XHVkNDdhXHVkNDdiXHVkNDdkXHVkNDdlXHVkNDgxXHVkNDgzXHVkNDg0XHVkNDg1XHVkNDg2XHVkNDg3XHVkNDhhXHVkNDhjXHVkNDhlXHVkNDhmXHVkNDkwXHVkNDkxXHVkNDkyXHVkNDkzXHVkNDk1XHVkNDk2XHVkNDk3XHVkNDk4XHVkNDk5XHVkNDlhXHVkNDli''@;'; put 'put ''XHVkNDljXHVkNDlkXHVjNDM0XHVjNDNjXHVjNDNkXHVjNDQ4XHVjNDY0XHVjNDY1XHVjNDY4XHVjNDZjXHVjNDc0XHVjNDc1XHVjNDc5XHVjNDgwXHVjNDk0XHVjNDljXHVjNGI4XHVjNGJjXHVjNGU5XHVjNGYwXHVjNGYxXHVjNGY0XHVjNGY4XHVjNGZhXHVjNGZmXHVjNTAwXHVjNTAxXHVj''@;'; put 'put ''NTBjXHVjNTEwXHVjNTE0XHVjNTFjXHVjNTI4XHVjNTI5XHVjNTJjXHVjNTMwXHVjNTM4XHVjNTM5XHVjNTNiXHVjNTNkXHVjNTQ0XHVjNTQ1XHVjNTQ4XHVjNTQ5XHVjNTRhXHVjNTRjXHVjNTRkXHVjNTRlXHVjNTUzXHVjNTU0XHVjNTU1XHVjNTU3XHVjNTU4XHVjNTU5XHVjNTVkXHVjNTVl''@;'; put 'put ''XHVjNTYwXHVjNTYxXHVjNTY0XHVjNTY4XHVjNTcwXHVjNTcxXHVjNTczXHVjNTc0XHVjNTc1XHVjNTdjXHVjNTdkXHVjNTgwXHVjNTg0XHVjNTg3XHVjNThjXHVjNThkXHVjNThmXHVjNTkxXHVjNTk1XHVjNTk3XHVjNTk4XHVjNTljXHVjNWEwXHVjNWE5XHVjNWI0XHVjNWI1XHVjNWI4XHVj''@;'; put 'put ''NWI5XHVjNWJiXHVjNWJjXHVjNWJkXHVjNWJlXHVjNWM0XHVjNWM1XHVjNWM2XHVjNWM3XHVjNWM4XHVjNWM5XHVjNWNhXHVjNWNjXHVjNWNlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5''@;'; put 'put ''MF1bRV1dPTQ4NjQwK0UsTFs0ODY0MCtFXT1CWzE5MF1bRV0pO2ZvcihCWzE5MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQ5ZVx1ZDQ5Zlx1ZDRhMFx1ZDRhMVx1ZDRhMlx1ZDRhM1x1ZDRhNFx1ZDRhNVx1ZDRhNlx1''@;'; put 'put ''ZDRhN1x1ZDRhOFx1ZDRhYVx1ZDRhYlx1ZDRhY1x1ZDRhZFx1ZDRhZVx1ZDRhZlx1ZDRiMFx1ZDRiMVx1ZDRiMlx1ZDRiM1x1ZDRiNFx1ZDRiNVx1ZDRiNlx1ZDRiN1x1ZDRiOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDRiOVx1ZDRiYVx1ZDRiYlx1ZDRiY1x1ZDRi''@;'; put 'put ''ZFx1ZDRiZVx1ZDRiZlx1ZDRjMFx1ZDRjMVx1ZDRjMlx1ZDRjM1x1ZDRjNFx1ZDRjNVx1ZDRjNlx1ZDRjN1x1ZDRjOFx1ZDRjOVx1ZDRjYVx1ZDRjYlx1ZDRjZFx1ZDRjZVx1ZDRjZlx1ZDRkMVx1ZDRkMlx1ZDRkM1x1ZDRkNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZDRkNlx1ZDRkN1x1ZDRkOFx1ZDRkOVx1ZDRkYVx1ZDRkYlx1ZDRkZFx1ZDRkZVx1ZDRlMFx1ZDRlMVx1ZDRlMlx1ZDRlM1x1ZDRlNFx1ZDRlNVx1ZDRlNlx1ZDRlN1x1ZDRlOVx1ZDRlYVx1ZDRlYlx1ZDRlZFx1ZDRlZVx1ZDRlZlx1ZDRmMVx1ZDRmMlx1ZDRmM1x1ZDRmNFx1ZDRmNVx1ZDRm''@;'; put 'put ''Nlx1ZDRmN1x1ZDRmOVx1ZDRmYVx1ZDRmY1x1YzVkMFx1YzVkMVx1YzVkNFx1YzVkOFx1YzVlMFx1YzVlMVx1YzVlM1x1YzVlNVx1YzVlY1x1YzVlZFx1YzVlZVx1YzVmMFx1YzVmNFx1YzVmNlx1YzVmN1x1YzVmY1x1YzVmZFx1YzVmZVx1YzVmZlx1YzYwMFx1YzYwMVx1YzYwNVx1YzYwNlx1''@;'; put 'put ''YzYwN1x1YzYwOFx1YzYwY1x1YzYxMFx1YzYxOFx1YzYxOVx1YzYxYlx1YzYxY1x1YzYyNFx1YzYyNVx1YzYyOFx1YzYyY1x1YzYyZFx1YzYyZVx1YzYzMFx1YzYzM1x1YzYzNFx1YzYzNVx1YzYzN1x1YzYzOVx1YzYzYlx1YzY0MFx1YzY0MVx1YzY0NFx1YzY0OFx1YzY1MFx1YzY1MVx1YzY1''@;'; put 'put ''M1x1YzY1NFx1YzY1NVx1YzY1Y1x1YzY1ZFx1YzY2MFx1YzY2Y1x1YzY2Zlx1YzY3MVx1YzY3OFx1YzY3OVx1YzY3Y1x1YzY4MFx1YzY4OFx1YzY4OVx1YzY4Ylx1YzY4ZFx1YzY5NFx1YzY5NVx1YzY5OFx1YzY5Y1x1YzZhNFx1YzZhNVx1YzZhN1x1YzZhOVx1YzZiMFx1YzZiMVx1YzZiNFx1''@;'; put 'put ''YzZiOFx1YzZiOVx1YzZiYVx1YzZjMFx1YzZjMVx1YzZjM1x1YzZjNVx1YzZjY1x1YzZjZFx1YzZkMFx1YzZkNFx1YzZkY1x1YzZkZFx1YzZlMFx1YzZlMVx1YzZlOFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkxXVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoZ2VbQlsxOTFdW0VdXT00ODg5NitFLExbNDg4OTYrRV09QlsxOTFdW0VdKTtmb3IoQlsxOTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0ZmVcdWQ0ZmZcdWQ1MDBcdWQ1MDFcdWQ1MDJcdWQ1MDNcdWQ1MDVc''@;'; put 'put ''dWQ1MDZcdWQ1MDdcdWQ1MDlcdWQ1MGFcdWQ1MGJcdWQ1MGRcdWQ1MGVcdWQ1MGZcdWQ1MTBcdWQ1MTFcdWQ1MTJcdWQ1MTNcdWQ1MTZcdWQ1MThcdWQ1MTlcdWQ1MWFcdWQ1MWJcdWQ1MWNcdWQ1MWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1MWVcdWQ1MWZcdWQ1''@;'; put 'put ''MjBcdWQ1MjFcdWQ1MjJcdWQ1MjNcdWQ1MjRcdWQ1MjVcdWQ1MjZcdWQ1MjdcdWQ1MjhcdWQ1MjlcdWQ1MmFcdWQ1MmJcdWQ1MmNcdWQ1MmRcdWQ1MmVcdWQ1MmZcdWQ1MzBcdWQ1MzFcdWQ1MzJcdWQ1MzNcdWQ1MzRcdWQ1MzVcdWQ1MzZcdWQ1MzdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWQ1MzhcdWQ1MzlcdWQ1M2FcdWQ1M2JcdWQ1M2VcdWQ1M2ZcdWQ1NDFcdWQ1NDJcdWQ1NDNcdWQ1NDVcdWQ1NDZcdWQ1NDdcdWQ1NDhcdWQ1NDlcdWQ1NGFcdWQ1NGJcdWQ1NGVcdWQ1NTBcdWQ1NTJcdWQ1NTNcdWQ1NTRcdWQ1NTVcdWQ1NTZcdWQ1NTdcdWQ1NWFcdWQ1''@;'; put 'put ''NWJcdWQ1NWRcdWQ1NWVcdWQ1NWZcdWQ1NjFcdWQ1NjJcdWQ1NjNcdWM2ZTlcdWM2ZWNcdWM2ZjBcdWM2ZjhcdWM2ZjlcdWM2ZmRcdWM3MDRcdWM3MDVcdWM3MDhcdWM3MGNcdWM3MTRcdWM3MTVcdWM3MTdcdWM3MTlcdWM3MjBcdWM3MjFcdWM3MjRcdWM3MjhcdWM3MzBcdWM3MzFcdWM3MzNc''@;'; put 'put ''dWM3MzVcdWM3MzdcdWM3M2NcdWM3M2RcdWM3NDBcdWM3NDRcdWM3NGFcdWM3NGNcdWM3NGRcdWM3NGZcdWM3NTFcdWM3NTJcdWM3NTNcdWM3NTRcdWM3NTVcdWM3NTZcdWM3NTdcdWM3NThcdWM3NWNcdWM3NjBcdWM3NjhcdWM3NmJcdWM3NzRcdWM3NzVcdWM3NzhcdWM3N2NcdWM3N2RcdWM3''@;'; put 'put ''N2VcdWM3ODNcdWM3ODRcdWM3ODVcdWM3ODdcdWM3ODhcdWM3ODlcdWM3OGFcdWM3OGVcdWM3OTBcdWM3OTFcdWM3OTRcdWM3OTZcdWM3OTdcdWM3OThcdWM3OWFcdWM3YTBcdWM3YTFcdWM3YTNcdWM3YTRcdWM3YTVcdWM3YTZcdWM3YWNcdWM3YWRcdWM3YjBcdWM3YjRcdWM3YmNcdWM3YmRc''@;'; put 'put ''dWM3YmZcdWM3YzBcdWM3YzFcdWM3YzhcdWM3YzlcdWM3Y2NcdWM3Y2VcdWM3ZDBcdWM3ZDhcdWM3ZGRcdWM3ZTRcdWM3ZThcdWM3ZWNcdWM4MDBcdWM4MDFcdWM4MDRcdWM4MDhcdWM4MGFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5Ml1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTkyXVtFXV09NDkxNTIrRSxMWzQ5MTUyK0VdPUJbMTkyXVtFXSk7Zm9yKEJbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTY0XHVkNTY2XHVkNTY3XHVkNTZhXHVkNTZj''@;'; put 'put ''XHVkNTZlXHVkNTZmXHVkNTcwXHVkNTcxXHVkNTcyXHVkNTczXHVkNTc2XHVkNTc3XHVkNTc5XHVkNTdhXHVkNTdiXHVkNTdkXHVkNTdlXHVkNTdmXHVkNTgwXHVkNTgxXHVkNTgyXHVkNTgzXHVkNTg2XHVkNThhXHVkNThiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVk''@;'; put 'put ''NThjXHVkNThkXHVkNThlXHVkNThmXHVkNTkxXHVkNTkyXHVkNTkzXHVkNTk0XHVkNTk1XHVkNTk2XHVkNTk3XHVkNTk4XHVkNTk5XHVkNTlhXHVkNTliXHVkNTljXHVkNTlkXHVkNTllXHVkNTlmXHVkNWEwXHVkNWExXHVkNWEyXHVkNWEzXHVkNWE0XHVkNWE2XHVkNWE3XHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNWE4XHVkNWE5XHVkNWFhXHVkNWFiXHVkNWFjXHVkNWFkXHVkNWFlXHVkNWFmXHVkNWIwXHVkNWIxXHVkNWIyXHVkNWIzXHVkNWI0XHVkNWI1XHVkNWI2XHVkNWI3XHVkNWI4XHVkNWI5XHVkNWJhXHVkNWJiXHVkNWJjXHVkNWJkXHVkNWJlXHVk''@;'; put 'put ''NWJmXHVkNWMwXHVkNWMxXHVkNWMyXHVkNWMzXHVkNWM0XHVkNWM1XHVkNWM2XHVkNWM3XHVjODEwXHVjODExXHVjODEzXHVjODE1XHVjODE2XHVjODFjXHVjODFkXHVjODIwXHVjODI0XHVjODJjXHVjODJkXHVjODJmXHVjODMxXHVjODM4XHVjODNjXHVjODQwXHVjODQ4XHVjODQ5XHVjODRj''@;'; put 'put ''XHVjODRkXHVjODU0XHVjODcwXHVjODcxXHVjODc0XHVjODc4XHVjODdhXHVjODgwXHVjODgxXHVjODgzXHVjODg1XHVjODg2XHVjODg3XHVjODhiXHVjODhjXHVjODhkXHVjODk0XHVjODlkXHVjODlmXHVjOGExXHVjOGE4XHVjOGJjXHVjOGJkXHVjOGM0XHVjOGM4XHVjOGNjXHVjOGQ0XHVj''@;'; put 'put ''OGQ1XHVjOGQ3XHVjOGQ5XHVjOGUwXHVjOGUxXHVjOGU0XHVjOGY1XHVjOGZjXHVjOGZkXHVjOTAwXHVjOTA0XHVjOTA1XHVjOTA2XHVjOTBjXHVjOTBkXHVjOTBmXHVjOTExXHVjOTE4XHVjOTJjXHVjOTM0XHVjOTUwXHVjOTUxXHVjOTU0XHVjOTU4XHVjOTYwXHVjOTYxXHVjOTYzXHVjOTZj''@;'; put 'put ''XHVjOTcwXHVjOTc0XHVjOTdjXHVjOTg4XHVjOTg5XHVjOThjXHVjOTkwXHVjOTk4XHVjOTk5XHVjOTliXHVjOTlkXHVjOWMwXHVjOWMxXHVjOWM0XHVjOWM3XHVjOWM4XHVjOWNhXHVjOWQwXHVjOWQxXHVjOWQzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkzXS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxOTNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5M11bRV1dPTQ5NDA4K0UsTFs0OTQwOCtFXT1CWzE5M11bRV0pO2ZvcihCWzE5NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDVjYVx1ZDVjYlx1ZDVj''@;'; put 'put ''ZFx1ZDVjZVx1ZDVjZlx1ZDVkMVx1ZDVkM1x1ZDVkNFx1ZDVkNVx1ZDVkNlx1ZDVkN1x1ZDVkYVx1ZDVkY1x1ZDVkZVx1ZDVkZlx1ZDVlMFx1ZDVlMVx1ZDVlMlx1ZDVlM1x1ZDVlNlx1ZDVlN1x1ZDVlOVx1ZDVlYVx1ZDVlYlx1ZDVlZFx1ZDVlZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZDVlZlx1ZDVmMFx1ZDVmMVx1ZDVmMlx1ZDVmM1x1ZDVmNlx1ZDVmOFx1ZDVmYVx1ZDVmYlx1ZDVmY1x1ZDVmZFx1ZDVmZVx1ZDVmZlx1ZDYwMlx1ZDYwM1x1ZDYwNVx1ZDYwNlx1ZDYwN1x1ZDYwOVx1ZDYwYVx1ZDYwYlx1ZDYwY1x1ZDYwZFx1ZDYwZVx1ZDYwZlx1ZDYx''@;'; put 'put ''Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDYxNlx1ZDYxN1x1ZDYxOFx1ZDYxOVx1ZDYxYVx1ZDYxYlx1ZDYxZFx1ZDYxZVx1ZDYxZlx1ZDYyMVx1ZDYyMlx1ZDYyM1x1ZDYyNVx1ZDYyNlx1ZDYyN1x1ZDYyOFx1ZDYyOVx1ZDYyYVx1ZDYyYlx1ZDYyY1x1ZDYyZVx1''@;'; put 'put ''ZDYyZlx1ZDYzMFx1ZDYzMVx1ZDYzMlx1ZDYzM1x1ZDYzNFx1ZDYzNVx1ZDYzNlx1ZDYzN1x1ZDYzYVx1ZDYzYlx1YzlkNVx1YzlkNlx1YzlkOVx1YzlkYVx1YzlkY1x1YzlkZFx1YzllMFx1YzllMlx1YzllNFx1YzllN1x1YzllY1x1YzllZFx1YzllZlx1YzlmMFx1YzlmMVx1YzlmOFx1Yzlm''@;'; put 'put ''OVx1YzlmY1x1Y2EwMFx1Y2EwOFx1Y2EwOVx1Y2EwYlx1Y2EwY1x1Y2EwZFx1Y2ExNFx1Y2ExOFx1Y2EyOVx1Y2E0Y1x1Y2E0ZFx1Y2E1MFx1Y2E1NFx1Y2E1Y1x1Y2E1ZFx1Y2E1Zlx1Y2E2MFx1Y2E2MVx1Y2E2OFx1Y2E3ZFx1Y2E4NFx1Y2E5OFx1Y2FiY1x1Y2FiZFx1Y2FjMFx1Y2FjNFx1''@;'; put 'put ''Y2FjY1x1Y2FjZFx1Y2FjZlx1Y2FkMVx1Y2FkM1x1Y2FkOFx1Y2FkOVx1Y2FlMFx1Y2FlY1x1Y2FmNFx1Y2IwOFx1Y2IxMFx1Y2IxNFx1Y2IxOFx1Y2IyMFx1Y2IyMVx1Y2I0MVx1Y2I0OFx1Y2I0OVx1Y2I0Y1x1Y2I1MFx1Y2I1OFx1Y2I1OVx1Y2I1ZFx1Y2I2NFx1Y2I3OFx1Y2I3OVx1Y2I5''@;'; put 'put ''Y1x1Y2JiOFx1Y2JkNFx1Y2JlNFx1Y2JlN1x1Y2JlOVx1Y2MwY1x1Y2MwZFx1Y2MxMFx1Y2MxNFx1Y2MxY1x1Y2MxZFx1Y2MyMVx1Y2MyMlx1Y2MyN1x1Y2MyOFx1Y2MyOVx1Y2MyY1x1Y2MyZVx1Y2MzMFx1Y2MzOFx1Y2MzOVx1Y2MzYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5NF0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTRdW0VdXT00OTY2NCtFLExbNDk2NjQrRV09QlsxOTRdW0VdKTtmb3IoQlsxOTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2''@;'; put 'put ''M2RcdWQ2M2VcdWQ2M2ZcdWQ2NDFcdWQ2NDJcdWQ2NDNcdWQ2NDRcdWQ2NDZcdWQ2NDdcdWQ2NGFcdWQ2NGNcdWQ2NGVcdWQ2NGZcdWQ2NTBcdWQ2NTJcdWQ2NTNcdWQ2NTZcdWQ2NTdcdWQ2NTlcdWQ2NWFcdWQ2NWJcdWQ2NWRcdWQ2NWVcdWQ2NWZcdWQ2NjBcdWQ2NjFcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2NjJcdWQ2NjNcdWQ2NjRcdWQ2NjVcdWQ2NjZcdWQ2NjhcdWQ2NmFcdWQ2NmJcdWQ2NmNcdWQ2NmRcdWQ2NmVcdWQ2NmZcdWQ2NzJcdWQ2NzNcdWQ2NzVcdWQ2NzZcdWQ2NzdcdWQ2NzhcdWQ2NzlcdWQ2N2FcdWQ2N2JcdWQ2N2NcdWQ2N2RcdWQ2''@;'; put 'put ''N2VcdWQ2N2ZcdWQ2ODBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2ODFcdWQ2ODJcdWQ2ODRcdWQ2ODZcdWQ2ODdcdWQ2ODhcdWQ2ODlcdWQ2OGFcdWQ2OGJcdWQ2OGVcdWQ2OGZcdWQ2OTFcdWQ2OTJcdWQ2OTNcdWQ2OTVcdWQ2OTZcdWQ2OTdcdWQ2OThcdWQ2OTlc''@;'; put 'put ''dWQ2OWFcdWQ2OWJcdWQ2OWNcdWQ2OWVcdWQ2YTBcdWQ2YTJcdWQ2YTNcdWQ2YTRcdWQ2YTVcdWQ2YTZcdWQ2YTdcdWQ2YTlcdWQ2YWFcdWNjM2NcdWNjM2RcdWNjM2VcdWNjNDRcdWNjNDVcdWNjNDhcdWNjNGNcdWNjNTRcdWNjNTVcdWNjNTdcdWNjNThcdWNjNTlcdWNjNjBcdWNjNjRcdWNj''@;'; put 'put ''NjZcdWNjNjhcdWNjNzBcdWNjNzVcdWNjOThcdWNjOTlcdWNjOWNcdWNjYTBcdWNjYThcdWNjYTlcdWNjYWJcdWNjYWNcdWNjYWRcdWNjYjRcdWNjYjVcdWNjYjhcdWNjYmNcdWNjYzRcdWNjYzVcdWNjYzdcdWNjYzlcdWNjZDBcdWNjZDRcdWNjZTRcdWNjZWNcdWNjZjBcdWNkMDFcdWNkMDhc''@;'; put 'put ''dWNkMDlcdWNkMGNcdWNkMTBcdWNkMThcdWNkMTlcdWNkMWJcdWNkMWRcdWNkMjRcdWNkMjhcdWNkMmNcdWNkMzlcdWNkNWNcdWNkNjBcdWNkNjRcdWNkNmNcdWNkNmRcdWNkNmZcdWNkNzFcdWNkNzhcdWNkODhcdWNkOTRcdWNkOTVcdWNkOThcdWNkOWNcdWNkYTRcdWNkYTVcdWNkYTdcdWNk''@;'; put 'put ''YTlcdWNkYjBcdWNkYzRcdWNkY2NcdWNkZDBcdWNkZThcdWNkZWNcdWNkZjBcdWNkZjhcdWNkZjlcdWNkZmJcdWNkZmRcdWNlMDRcdWNlMDhcdWNlMGNcdWNlMTRcdWNlMTlcdWNlMjBcdWNlMjFcdWNlMjRcdWNlMjhcdWNlMzBcdWNlMzFcdWNlMzNcdWNlMzVcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxOTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5NV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTk1XVtFXV09NDk5MjArRSxMWzQ5OTIwK0VdPUJbMTk1XVtFXSk7Zm9yKEJbMTk2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVkNmFiXHVkNmFkXHVkNmFlXHVkNmFmXHVkNmIxXHVkNmIyXHVkNmIzXHVkNmI0XHVkNmI1XHVkNmI2XHVkNmI3XHVkNmI4XHVkNmJhXHVkNmJjXHVkNmJkXHVkNmJlXHVkNmJmXHVkNmMwXHVkNmMxXHVkNmMyXHVkNmMzXHVkNmM2XHVkNmM3XHVkNmM5XHVkNmNhXHVkNmNi''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNmNkXHVkNmNlXHVkNmNmXHVkNmQwXHVkNmQyXHVkNmQzXHVkNmQ1XHVkNmQ2XHVkNmQ4XHVkNmRhXHVkNmRiXHVkNmRjXHVkNmRkXHVkNmRlXHVkNmRmXHVkNmUxXHVkNmUyXHVkNmUzXHVkNmU1XHVkNmU2XHVkNmU3XHVk''@;'; put 'put ''NmU5XHVkNmVhXHVkNmViXHVkNmVjXHVkNmVkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNmVlXHVkNmVmXHVkNmYxXHVkNmYyXHVkNmYzXHVkNmY0XHVkNmY2XHVkNmY3XHVkNmY4XHVkNmY5XHVkNmZhXHVkNmZiXHVkNmZlXHVkNmZmXHVkNzAxXHVkNzAyXHVkNzAz''@;'; put 'put ''XHVkNzA1XHVkNzA2XHVkNzA3XHVkNzA4XHVkNzA5XHVkNzBhXHVkNzBiXHVkNzBjXHVkNzBkXHVkNzBlXHVkNzBmXHVkNzEwXHVkNzEyXHVkNzEzXHVkNzE0XHVjZTU4XHVjZTU5XHVjZTVjXHVjZTVmXHVjZTYwXHVjZTYxXHVjZTY4XHVjZTY5XHVjZTZiXHVjZTZkXHVjZTc0XHVjZTc1XHVj''@;'; put 'put ''ZTc4XHVjZTdjXHVjZTg0XHVjZTg1XHVjZTg3XHVjZTg5XHVjZTkwXHVjZTkxXHVjZTk0XHVjZTk4XHVjZWEwXHVjZWExXHVjZWEzXHVjZWE0XHVjZWE1XHVjZWFjXHVjZWFkXHVjZWMxXHVjZWU0XHVjZWU1XHVjZWU4XHVjZWViXHVjZWVjXHVjZWY0XHVjZWY1XHVjZWY3XHVjZWY4XHVjZWY5''@;'; put 'put ''XHVjZjAwXHVjZjAxXHVjZjA0XHVjZjA4XHVjZjEwXHVjZjExXHVjZjEzXHVjZjE1XHVjZjFjXHVjZjIwXHVjZjI0XHVjZjJjXHVjZjJkXHVjZjJmXHVjZjMwXHVjZjMxXHVjZjM4XHVjZjU0XHVjZjU1XHVjZjU4XHVjZjVjXHVjZjY0XHVjZjY1XHVjZjY3XHVjZjY5XHVjZjcwXHVjZjcxXHVj''@;'; put 'put ''Zjc0XHVjZjc4XHVjZjgwXHVjZjg1XHVjZjhjXHVjZmExXHVjZmE4XHVjZmIwXHVjZmM0XHVjZmUwXHVjZmUxXHVjZmU0XHVjZmU4XHVjZmYwXHVjZmYxXHVjZmYzXHVjZmY1XHVjZmZjXHVkMDAwXHVkMDA0XHVkMDExXHVkMDE4XHVkMDJkXHVkMDM0XHVkMDM1XHVkMDM4XHVkMDNjXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTk2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5Nl1bRV1dPTUwMTc2K0UsTFs1MDE3NitFXT1CWzE5Nl1bRV0pO2ZvcihCWzE5N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDcxNVx1ZDcxNlx1ZDcxN1x1ZDcxYVx1ZDcxYlx1ZDcxZFx1ZDcxZVx1ZDcxZlx1ZDcyMVx1ZDcyMlx1ZDcyM1x1ZDcyNFx1ZDcyNVx1ZDcyNlx1ZDcyN1x1ZDcyYVx1ZDcyY1x1ZDcyZVx1ZDcyZlx1ZDczMFx1ZDczMVx1ZDczMlx1ZDczM1x1ZDcz''@;'; put 'put ''Nlx1ZDczN1x1ZDczOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDczYVx1ZDczYlx1ZDczZFx1ZDczZVx1ZDczZlx1ZDc0MFx1ZDc0MVx1ZDc0Mlx1ZDc0M1x1ZDc0NVx1ZDc0Nlx1ZDc0OFx1ZDc0YVx1ZDc0Ylx1ZDc0Y1x1ZDc0ZFx1ZDc0ZVx1ZDc0Zlx1ZDc1Mlx1''@;'; put 'put ''ZDc1M1x1ZDc1NVx1ZDc1YVx1ZDc1Ylx1ZDc1Y1x1ZDc1ZFx1ZDc1ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDc1Zlx1ZDc2Mlx1ZDc2NFx1ZDc2Nlx1ZDc2N1x1ZDc2OFx1ZDc2YVx1ZDc2Ylx1ZDc2ZFx1ZDc2ZVx1ZDc2Zlx1ZDc3MVx1ZDc3Mlx1ZDc3M1x1ZDc3''@;'; put 'put ''NVx1ZDc3Nlx1ZDc3N1x1ZDc3OFx1ZDc3OVx1ZDc3YVx1ZDc3Ylx1ZDc3ZVx1ZDc3Zlx1ZDc4MFx1ZDc4Mlx1ZDc4M1x1ZDc4NFx1ZDc4NVx1ZDc4Nlx1ZDc4N1x1ZDc4YVx1ZDc4Ylx1ZDA0NFx1ZDA0NVx1ZDA0N1x1ZDA0OVx1ZDA1MFx1ZDA1NFx1ZDA1OFx1ZDA2MFx1ZDA2Y1x1ZDA2ZFx1''@;'; put 'put ''ZDA3MFx1ZDA3NFx1ZDA3Y1x1ZDA3ZFx1ZDA4MVx1ZDBhNFx1ZDBhNVx1ZDBhOFx1ZDBhY1x1ZDBiNFx1ZDBiNVx1ZDBiN1x1ZDBiOVx1ZDBjMFx1ZDBjMVx1ZDBjNFx1ZDBjOFx1ZDBjOVx1ZDBkMFx1ZDBkMVx1ZDBkM1x1ZDBkNFx1ZDBkNVx1ZDBkY1x1ZDBkZFx1ZDBlMFx1ZDBlNFx1ZDBl''@;'; put 'put ''Y1x1ZDBlZFx1ZDBlZlx1ZDBmMFx1ZDBmMVx1ZDBmOFx1ZDEwZFx1ZDEzMFx1ZDEzMVx1ZDEzNFx1ZDEzOFx1ZDEzYVx1ZDE0MFx1ZDE0MVx1ZDE0M1x1ZDE0NFx1ZDE0NVx1ZDE0Y1x1ZDE0ZFx1ZDE1MFx1ZDE1NFx1ZDE1Y1x1ZDE1ZFx1ZDE1Zlx1ZDE2MVx1ZDE2OFx1ZDE2Y1x1ZDE3Y1x1''@;'; put 'put ''ZDE4NFx1ZDE4OFx1ZDFhMFx1ZDFhMVx1ZDFhNFx1ZDFhOFx1ZDFiMFx1ZDFiMVx1ZDFiM1x1ZDFiNVx1ZDFiYVx1ZDFiY1x1ZDFjMFx1ZDFkOFx1ZDFmNFx1ZDFmOFx1ZDIwN1x1ZDIwOVx1ZDIxMFx1ZDIyY1x1ZDIyZFx1ZDIzMFx1ZDIzNFx1ZDIzY1x1ZDIzZFx1ZDIzZlx1ZDI0MVx1ZDI0''@;'; put 'put ''OFx1ZDI1Y1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTddW0VdXT01MDQzMitFLExbNTA0MzIrRV09QlsxOTddW0VdKTtmb3IoQlsxOThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3OGRcdWQ3OGVcdWQ3OGZcdWQ3OTFcdWQ3OTJcdWQ3OTNcdWQ3OTRcdWQ3OTVcdWQ3OTZcdWQ3OTdcdWQ3OWFcdWQ3OWNcdWQ3OWVcdWQ3OWZcdWQ3YTBcdWQ3YTFcdWQ3YTJcdWQ3YTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyNjRcdWQyODBcdWQyODFcdWQyODRcdWQyODhcdWQyOTBcdWQyOTFcdWQyOTVc''@;'; put 'put ''dWQyOWNcdWQyYTBcdWQyYTRcdWQyYWNcdWQyYjFcdWQyYjhcdWQyYjlcdWQyYmNcdWQyYmZcdWQyYzBcdWQyYzJcdWQyYzhcdWQyYzlcdWQyY2JcdWQyZDRcdWQyZDhcdWQyZGNcdWQyZTRcdWQyZTVcdWQyZjBcdWQyZjFcdWQyZjRcdWQyZjhcdWQzMDBcdWQzMDFcdWQzMDNcdWQzMDVcdWQz''@;'; put 'put ''MGNcdWQzMGRcdWQzMGVcdWQzMTBcdWQzMTRcdWQzMTZcdWQzMWNcdWQzMWRcdWQzMWZcdWQzMjBcdWQzMjFcdWQzMjVcdWQzMjhcdWQzMjlcdWQzMmNcdWQzMzBcdWQzMzhcdWQzMzlcdWQzM2JcdWQzM2NcdWQzM2RcdWQzNDRcdWQzNDVcdWQzN2NcdWQzN2RcdWQzODBcdWQzODRcdWQzOGNc''@;'; put 'put ''dWQzOGRcdWQzOGZcdWQzOTBcdWQzOTFcdWQzOThcdWQzOTlcdWQzOWNcdWQzYTBcdWQzYThcdWQzYTlcdWQzYWJcdWQzYWRcdWQzYjRcdWQzYjhcdWQzYmNcdWQzYzRcdWQzYzVcdWQzYzhcdWQzYzlcdWQzZDBcdWQzZDhcdWQzZTFcdWQzZTNcdWQzZWNcdWQzZWRcdWQzZjBcdWQzZjRcdWQz''@;'; put 'put ''ZmNcdWQzZmRcdWQzZmZcdWQ0MDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOThdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTk4XVtFXV09NTA2ODgrRSxMWzUwNjg4K0VdPUJbMTk4XVtFXSk7Zm9yKEJbMTk5XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDA4XHVkNDFkXHVkNDQwXHVkNDQ0XHVkNDVjXHVkNDYw''@;'; put 'put ''XHVkNDY0XHVkNDZkXHVkNDZmXHVkNDc4XHVkNDc5XHVkNDdjXHVkNDdmXHVkNDgwXHVkNDgyXHVkNDg4XHVkNDg5XHVkNDhiXHVkNDhkXHVkNDk0XHVkNGE5XHVkNGNjXHVkNGQwXHVkNGQ0XHVkNGRjXHVkNGRmXHVkNGU4XHVkNGVjXHVkNGYwXHVkNGY4XHVkNGZiXHVkNGZkXHVkNTA0XHVk''@;'; put 'put ''NTA4XHVkNTBjXHVkNTE0XHVkNTE1XHVkNTE3XHVkNTNjXHVkNTNkXHVkNTQwXHVkNTQ0XHVkNTRjXHVkNTRkXHVkNTRmXHVkNTUxXHVkNTU4XHVkNTU5XHVkNTVjXHVkNTYwXHVkNTY1XHVkNTY4XHVkNTY5XHVkNTZiXHVkNTZkXHVkNTc0XHVkNTc1XHVkNTc4XHVkNTdjXHVkNTg0XHVkNTg1''@;'; put 'put ''XHVkNTg3XHVkNTg4XHVkNTg5XHVkNTkwXHVkNWE1XHVkNWM4XHVkNWM5XHVkNWNjXHVkNWQwXHVkNWQyXHVkNWQ4XHVkNWQ5XHVkNWRiXHVkNWRkXHVkNWU0XHVkNWU1XHVkNWU4XHVkNWVjXHVkNWY0XHVkNWY1XHVkNWY3XHVkNWY5XHVkNjAwXHVkNjAxXHVkNjA0XHVkNjA4XHVkNjEwXHVk''@;'; put 'put ''NjExXHVkNjEzXHVkNjE0XHVkNjE1XHVkNjFjXHVkNjIwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5OV1bRV1dPTUwOTQ0K0UsTFs1MDk0NCtFXT1CWzE5OV1bRV0pO2ZvcihCWzIwMF09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDYyNFx1ZDYyZFx1ZDYzOFx1ZDYz''@;'; put 'put ''OVx1ZDYzY1x1ZDY0MFx1ZDY0NVx1ZDY0OFx1ZDY0OVx1ZDY0Ylx1ZDY0ZFx1ZDY1MVx1ZDY1NFx1ZDY1NVx1ZDY1OFx1ZDY1Y1x1ZDY2N1x1ZDY2OVx1ZDY3MFx1ZDY3MVx1ZDY3NFx1ZDY4M1x1ZDY4NVx1ZDY4Y1x1ZDY4ZFx1ZDY5MFx1ZDY5NFx1ZDY5ZFx1ZDY5Zlx1ZDZhMVx1ZDZhOFx1''@;'; put 'put ''ZDZhY1x1ZDZiMFx1ZDZiOVx1ZDZiYlx1ZDZjNFx1ZDZjNVx1ZDZjOFx1ZDZjY1x1ZDZkMVx1ZDZkNFx1ZDZkN1x1ZDZkOVx1ZDZlMFx1ZDZlNFx1ZDZlOFx1ZDZmMFx1ZDZmNVx1ZDZmY1x1ZDZmZFx1ZDcwMFx1ZDcwNFx1ZDcxMVx1ZDcxOFx1ZDcxOVx1ZDcxY1x1ZDcyMFx1ZDcyOFx1ZDcy''@;'; put 'put ''OVx1ZDcyYlx1ZDcyZFx1ZDczNFx1ZDczNVx1ZDczOFx1ZDczY1x1ZDc0NFx1ZDc0N1x1ZDc0OVx1ZDc1MFx1ZDc1MVx1ZDc1NFx1ZDc1Nlx1ZDc1N1x1ZDc1OFx1ZDc1OVx1ZDc2MFx1ZDc2MVx1ZDc2M1x1ZDc2NVx1ZDc2OVx1ZDc2Y1x1ZDc3MFx1ZDc3NFx1ZDc3Y1x1ZDc3ZFx1ZDc4MVx1''@;'; put 'put ''ZDc4OFx1ZDc4OVx1ZDc4Y1x1ZDc5MFx1ZDc5OFx1ZDc5OVx1ZDc5Ylx1ZDc5ZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDBdW0VdXT01MTIwMCtFLExbNTEyMDArRV09QlsyMDBdW0Vd''@;'; put 'put ''KTtmb3IoQlsyMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmM2RcdTRm''@;'; put 'put ''NzNcdTUwNDdcdTUwZjlcdTUyYTBcdTUzZWZcdTU0NzVcdTU0ZTVcdTU2MDlcdTVhYzFcdTViYjZcdTY2ODdcdTY3YjZcdTY3YjdcdTY3ZWZcdTZiNGNcdTczYzJcdTc1YzJcdTdhM2NcdTgyZGJcdTgzMDRcdTg4NTdcdTg4ODhcdThhMzZcdThjYzhcdThkY2ZcdThlZmJcdThmZTZcdTk5ZDVc''@;'; put 'put ''dTUyM2JcdTUzNzRcdTU0MDRcdTYwNmFcdTYxNjRcdTZiYmNcdTczY2ZcdTgxMWFcdTg5YmFcdTg5ZDJcdTk1YTNcdTRmODNcdTUyMGFcdTU4YmVcdTU5NzhcdTU5ZTZcdTVlNzJcdTVlNzlcdTYxYzdcdTYzYzBcdTY3NDZcdTY3ZWNcdTY4N2ZcdTZmOTdcdTc2NGVcdTc3MGJcdTc4ZjVcdTdh''@;'; put 'put ''MDhcdTdhZmZcdTdjMjFcdTgwOWRcdTgyNmVcdTgyNzFcdThhZWJcdTk1OTNcdTRlNmJcdTU1OWRcdTY2ZjdcdTZlMzRcdTc4YTNcdTdhZWRcdTg0NWJcdTg5MTBcdTg3NGVcdTk3YThcdTUyZDhcdTU3NGVcdTU4MmFcdTVkNGNcdTYxMWZcdTYxYmVcdTYyMjFcdTY1NjJcdTY3ZDFcdTZhNDRc''@;'; put 'put ''dTZlMWJcdTc1MThcdTc1YjNcdTc2ZTNcdTc3YjBcdTdkM2FcdTkwYWZcdTk0NTFcdTk0NTJcdTlmOTVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjAyXVtFXV09NTE3MTIrRSxMWzUxNzEy''@;'; put 'put ''K0VdPUJbMjAyXVtFXSk7Zm9yKEJbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU1MzIzXHU1Y2FjXHU3NTMyXHU4MGRiXHU5MjQwXHU5NTk4XHU1MjViXHU1ODA4XHU1OWRjXHU1Y2ExXHU1ZDE3XHU1ZWI3XHU1ZjNhXHU1ZjRhXHU2MTc3XHU2YzVmXHU3NTdhXHU3NTg2XHU3Y2UwXHU3ZDczXHU3ZGIxXHU3ZjhjXHU4MTU0XHU4MjIxXHU4NTkxXHU4OTQxXHU4YjFi''@;'; put 'put ''XHU5MmZjXHU5NjRkXHU5YzQ3XHU0ZWNiXHU0ZWY3XHU1MDBiXHU1MWYxXHU1ODRmXHU2MTM3XHU2MTNlXHU2MTY4XHU2NTM5XHU2OWVhXHU2ZjExXHU3NWE1XHU3Njg2XHU3NmQ2XHU3Yjg3XHU4MmE1XHU4NGNiXHVmOTAwXHU5M2E3XHU5NThiXHU1NTgwXHU1YmEyXHU1NzUxXHVmOTAxXHU3''@;'; put 'put ''Y2IzXHU3ZmI5XHU5MWI1XHU1MDI4XHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MzZlXHU2NGRhXHU2NGU3XHU2ZTIwXHU3MGFjXHU3OTViXHU4ZGRkXHU4ZTFlXHVmOTAyXHU5MDdkXHU5MjQ1XHU5MmY4XHU0ZTdlXHU0ZWY2XHU1MDY1XHU1ZGZlXHU1ZWZhXHU2MTA2XHU2OTU3XHU4MTcx''@;'; put 'put ''XHU4NjU0XHU4ZTQ3XHU5Mzc1XHU5YTJiXHU0ZTVlXHU1MDkxXHU2NzcwXHU2ODQwXHU1MTA5XHU1MjhkXHU1MjkyXHU2YWEyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwM11bRV1dPTUx''@;'; put 'put ''OTY4K0UsTFs1MTk2OCtFXT1CWzIwM11bRV0pO2ZvcihCWzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdiY1x1OTIxMFx1OWVkNFx1NTJhYlx1NjAyZlx1OGZmMlx1NTA0OFx1NjFhOVx1NjNlZFx1NjRjYVx1NjgzY1x1NmE4NFx1NmZjMFx1ODE4OFx1ODlhMVx1OTY5NFx1NTgwNVx1NzI3ZFx1NzJhY1x1NzUwNFx1N2Q3OVx1N2U2ZFx1ODBhOVx1ODk4Ylx1OGI3''@;'; put 'put ''NFx1OTA2M1x1OWQ1MVx1NjI4OVx1NmM3YVx1NmY1NFx1N2Q1MFx1N2YzYVx1OGEyM1x1NTE3Y1x1NjE0YVx1N2I5ZFx1OGIxOVx1OTI1N1x1OTM4Y1x1NGVhY1x1NGZkM1x1NTAxZVx1NTBiZVx1NTEwNlx1NTJjMVx1NTJjZFx1NTM3Zlx1NTc3MFx1NTg4M1x1NWU5YVx1NWY5MVx1NjE3Nlx1''@;'; put 'put ''NjFhY1x1NjRjZVx1NjU2Y1x1NjY2Zlx1NjZiYlx1NjZmNFx1Njg5N1x1NmQ4N1x1NzA4NVx1NzBmMVx1NzQ5Zlx1NzRhNVx1NzRjYVx1NzVkOVx1Nzg2Y1x1NzhlY1x1N2FkZlx1N2FmNlx1N2Q0NVx1N2Q5M1x1ODAxNVx1ODAzZlx1ODExYlx1ODM5Nlx1OGI2Nlx1OGYxNVx1OTAxNVx1OTNl''@;'; put 'put ''MVx1OTgwM1x1OTgzOFx1OWE1YVx1OWJlOFx1NGZjMlx1NTU1M1x1NTgzYVx1NTk1MVx1NWI2M1x1NWM0Nlx1NjBiOFx1NjIxMlx1Njg0Mlx1NjhiMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2Vb''@;'; put 'put ''QlsyMDRdW0VdXT01MjIyNCtFLExbNTIyMjQrRV09QlsyMDRdW0VdKTtmb3IoQlsyMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY4ZThcdTZlYWFcdTc1NGNcdTc2NzhcdTc4Y2VcdTdhM2RcdTdjZmJcdTdlNmJcdTdlN2NcdThhMDhcdThhYTFcdThjM2ZcdTk2OGVcdTlkYzRcdTUzZTRcdTUzZTlcdTU0NGFcdTU0NzFcdTU2ZmFcdTU5ZDFcdTViNjRcdTVjM2JcdTVl''@;'; put 'put ''YWJcdTYyZjdcdTY1MzdcdTY1NDVcdTY1NzJcdTY2YTBcdTY3YWZcdTY5YzFcdTZjYmRcdTc1ZmNcdTc2OTBcdTc3N2VcdTdhM2ZcdTdmOTRcdTgwMDNcdTgwYTFcdTgxOGZcdTgyZTZcdTgyZmRcdTgzZjBcdTg1YzFcdTg4MzFcdTg4YjRcdThhYTVcdWY5MDNcdThmOWNcdTkzMmVcdTk2Yzdc''@;'; put 'put ''dTk4NjdcdTlhZDhcdTlmMTNcdTU0ZWRcdTY1OWJcdTY2ZjJcdTY4OGZcdTdhNDBcdThjMzdcdTlkNjBcdTU2ZjBcdTU3NjRcdTVkMTFcdTY2MDZcdTY4YjFcdTY4Y2RcdTZlZmVcdTc0MjhcdTg4OWVcdTliZTRcdTZjNjhcdWY5MDRcdTlhYThcdTRmOWJcdTUxNmNcdTUxNzFcdTUyOWZcdTVi''@;'; put 'put ''NTRcdTVkZTVcdTYwNTBcdTYwNmRcdTYyZjFcdTYzYTdcdTY1M2JcdTczZDlcdTdhN2FcdTg2YTNcdThjYTJcdTk3OGZcdTRlMzJcdTViZTFcdTYyMDhcdTY3OWNcdTc0ZGNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwNV1bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKGdlW0JbMjA1XVtFXV09NTI0ODArRSxMWzUyNDgwK0VdPUJbMjA1XVtFXSk7Zm9yKEJbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OWQxXHU4M2QzXHU4YTg3XHU4YWIyXHU4ZGU4XHU5MDRlXHU5MzRiXHU5ODQ2XHU1ZWQzXHU2OWU4XHU4NWZmXHU5MGVkXHVmOTA1XHU1MWEwXHU1Yjk4XHU1YmVjXHU2MTYzXHU2OGZhXHU2YjNlXHU3MDRjXHU3''@;'; put 'put ''NDJmXHU3NGQ4XHU3YmExXHU3ZjUwXHU4M2M1XHU4OWMwXHU4Y2FiXHU5NWRjXHU5OTI4XHU1MjJlXHU2MDVkXHU2MmVjXHU5MDAyXHU0ZjhhXHU1MTQ5XHU1MzIxXHU1OGQ5XHU1ZWUzXHU2NmUwXHU2ZDM4XHU3MDlhXHU3MmMyXHU3M2Q2XHU3YjUwXHU4MGYxXHU5NDViXHU1MzY2XHU2Mzli''@;'; put 'put ''XHU3ZjZiXHU0ZTU2XHU1MDgwXHU1ODRhXHU1OGRlXHU2MDJhXHU2MTI3XHU2MmQwXHU2OWQwXHU5YjQxXHU1YjhmXHU3ZDE4XHU4MGIxXHU4ZjVmXHU0ZWE0XHU1MGQxXHU1NGFjXHU1NWFjXHU1YjBjXHU1ZGEwXHU1ZGU3XHU2NTJhXHU2NTRlXHU2ODIxXHU2YTRiXHU3MmUxXHU3NjhlXHU3''@;'; put 'put ''N2VmXHU3ZDVlXHU3ZmY5XHU4MWEwXHU4NTRlXHU4NmRmXHU4ZjAzXHU4ZjRlXHU5MGNhXHU5OTAzXHU5YTU1XHU5YmFiXHU0ZTE4XHU0ZTQ1XHU0ZTVkXHU0ZWM3XHU0ZmYxXHU1MTc3XHU1MmZlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA2XS5sZW5ndGg7KytFKTY1NTMzIT09Qlsy''@;'; put 'put ''MDZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwNl1bRV1dPTUyNzM2K0UsTFs1MjczNitFXT1CWzIwNl1bRV0pO2ZvcihCWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTM0MFx1NTNlM1x1NTNlNVx1NTQ4ZVx1NTYxNFx1NTc3NVx1NTdhMlx1NWJjN1x1NWQ4N1x1NWVkMFx1NjFmY1x1NjJkOFx1NjU1MVx1NjdiOFx1NjdlOVx1NjljYlx1NmI1MFx1NmJjNlx1''@;'; put 'put ''NmJlY1x1NmM0Mlx1NmU5ZFx1NzA3OFx1NzJkN1x1NzM5Nlx1NzQwM1x1NzdiZlx1NzdlOVx1N2E3Nlx1N2Q3Zlx1ODAwOVx1ODFmY1x1ODIwNVx1ODIwYVx1ODJkZlx1ODg2Mlx1OGIzM1x1OGNmY1x1OGVjMFx1OTAxMVx1OTBiMVx1OTI2NFx1OTJiNlx1OTlkMlx1OWE0NVx1OWNlOVx1OWRk''@;'; put 'put ''N1x1OWY5Y1x1NTcwYlx1NWM0MFx1ODNjYVx1OTdhMFx1OTdhYlx1OWViNFx1NTQxYlx1N2E5OFx1N2ZhNFx1ODhkOVx1OGVjZFx1OTBlMVx1NTgwMFx1NWM0OFx1NjM5OFx1N2E5Zlx1NWJhZVx1NWYxM1x1N2E3OVx1N2FhZVx1ODI4ZVx1OGVhY1x1NTAyNlx1NTIzOFx1NTJmOFx1NTM3N1x1''@;'; put 'put ''NTcwOFx1NjJmM1x1NjM3Mlx1NmIwYVx1NmRjM1x1NzczN1x1NTNhNVx1NzM1N1x1ODU2OFx1OGU3Nlx1OTVkNVx1NjczYVx1NmFjM1x1NmY3MFx1OGE2ZFx1OGVjY1x1OTk0Ylx1ZjkwNlx1NjY3N1x1NmI3OFx1OGNiNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwN10ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMjA3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDddW0VdXT01Mjk5MitFLExbNTI5OTIrRV09QlsyMDddW0VdKTtmb3IoQlsyMDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTliM2NcdWY5MDdcdTUzZWJcdTU3MmRcdTU5NGVcdTYzYzZcdTY5ZmJcdTczZWFcdTc4NDVcdTdhYmFcdTdhYzVcdTdjZmVcdTg0NzVcdTg5OGZcdThkNzNcdTkwMzVc''@;'; put 'put ''dTk1YThcdTUyZmJcdTU3NDdcdTc1NDdcdTdiNjBcdTgzY2NcdTkyMWVcdWY5MDhcdTZhNThcdTUxNGJcdTUyNGJcdTUyODdcdTYyMWZcdTY4ZDhcdTY5NzVcdTk2OTlcdTUwYzVcdTUyYTRcdTUyZTRcdTYxYzNcdTY1YTRcdTY4MzlcdTY5ZmZcdTc0N2VcdTdiNGJcdTgyYjlcdTgzZWJcdTg5''@;'; put 'put ''YjJcdThiMzlcdThmZDFcdTk5NDlcdWY5MDlcdTRlY2FcdTU5OTdcdTY0ZDJcdTY2MTFcdTZhOGVcdTc0MzRcdTc5ODFcdTc5YmRcdTgyYTlcdTg4N2VcdTg4N2ZcdTg5NWZcdWY5MGFcdTkzMjZcdTRmMGJcdTUzY2FcdTYwMjVcdTYyNzFcdTZjNzJcdTdkMWFcdTdkNjZcdTRlOThcdTUxNjJc''@;'; put 'put ''dTc3ZGNcdTgwYWZcdTRmMDFcdTRmMGVcdTUxNzZcdTUxODBcdTU1ZGNcdTU2NjhcdTU3M2JcdTU3ZmFcdTU3ZmNcdTU5MTRcdTU5NDdcdTU5OTNcdTViYzRcdTVjOTBcdTVkMGVcdTVkZjFcdTVlN2VcdTVmY2NcdTYyODBcdTY1ZDdcdTY1ZTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsy''@;'; put 'put ''MDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwOF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA4XVtFXV09NTMyNDgrRSxMWzUzMjQ4K0VdPUJbMjA4XVtFXSk7Zm9yKEJbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzFlXHU2NzFmXHU2NzVlXHU2OGNiXHU2OGM0XHU2YTVmXHU2YjNhXHU2YzIzXHU2YzdkXHU2YzgyXHU2ZGM3XHU3Mzk4XHU3NDI2XHU3NDJh''@;'; put 'put ''XHU3NDgyXHU3NGEzXHU3NTc4XHU3NTdmXHU3ODgxXHU3OGVmXHU3OTQxXHU3OTQ3XHU3OTQ4XHU3OTdhXHU3Yjk1XHU3ZDAwXHU3ZGJhXHU3Zjg4XHU4MDA2XHU4MDJkXHU4MDhjXHU4YTE4XHU4YjRmXHU4YzQ4XHU4ZDc3XHU5MzIxXHU5MzI0XHU5OGUyXHU5OTUxXHU5YTBlXHU5YTBmXHU5''@;'; put 'put ''YTY1XHU5ZTkyXHU3ZGNhXHU0Zjc2XHU1NDA5XHU2MmVlXHU2ODU0XHU5MWQxXHU1NWFiXHU1MTNhXHVmOTBiXHVmOTBjXHU1YTFjXHU2MWU2XHVmOTBkXHU2MmNmXHU2MmZmXHVmOTBlXHVmOTBmXHVmOTEwXHVmOTExXHVmOTEyXHVmOTEzXHU5MGEzXHVmOTE0XHVmOTE1XHVmOTE2XHVmOTE3''@;'; put 'put ''XHVmOTE4XHU4YWZlXHVmOTE5XHVmOTFhXHVmOTFiXHVmOTFjXHU2Njk2XHVmOTFkXHU3MTU2XHVmOTFlXHVmOTFmXHU5NmUzXHVmOTIwXHU2MzRmXHU2MzdhXHU1MzU3XHVmOTIxXHU2NzhmXHU2OTYwXHU2ZTczXHVmOTIyXHU3NTM3XHVmOTIzXHVmOTI0XHVmOTI1XHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMjA5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwOV1bRV1dPTUzNTA0K0UsTFs1MzUwNCtFXT1CWzIwOV1bRV0pO2ZvcihCWzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QwZFx1ZjkyNlx1ZjkyN1x1ODg3Mlx1NTZjYVx1NWExOFx1ZjkyOFx1ZjkyOVx1ZjkyYVx1ZjkyYlx1ZjkyY1x1NGU0''@;'; put 'put ''M1x1ZjkyZFx1NTE2N1x1NTk0OFx1NjdmMFx1ODAxMFx1ZjkyZVx1NTk3M1x1NWU3NFx1NjQ5YVx1NzljYVx1NWZmNVx1NjA2Y1x1NjJjOFx1NjM3Ylx1NWJlN1x1NWJkN1x1NTJhYVx1ZjkyZlx1NTk3NFx1NWYyOVx1NjAxMlx1ZjkzMFx1ZjkzMVx1ZjkzMlx1NzQ1OVx1ZjkzM1x1ZjkzNFx1''@;'; put 'put ''ZjkzNVx1ZjkzNlx1ZjkzN1x1ZjkzOFx1OTlkMVx1ZjkzOVx1ZjkzYVx1ZjkzYlx1ZjkzY1x1ZjkzZFx1ZjkzZVx1ZjkzZlx1Zjk0MFx1Zjk0MVx1Zjk0Mlx1Zjk0M1x1NmZjM1x1Zjk0NFx1Zjk0NVx1ODFiZlx1OGZiMlx1NjBmMVx1Zjk0Nlx1Zjk0N1x1ODE2Nlx1Zjk0OFx1Zjk0OVx1NWMz''@;'; put 'put ''Zlx1Zjk0YVx1Zjk0Ylx1Zjk0Y1x1Zjk0ZFx1Zjk0ZVx1Zjk0Zlx1Zjk1MFx1Zjk1MVx1NWFlOVx1OGEyNVx1Njc3Ylx1N2QxMFx1Zjk1Mlx1Zjk1M1x1Zjk1NFx1Zjk1NVx1Zjk1Nlx1Zjk1N1x1ODBmZFx1Zjk1OFx1Zjk1OVx1NWMzY1x1NmNlNVx1NTMzZlx1NmViYVx1NTkxYVx1ODMzNlx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTBdW0VdXT01Mzc2MCtFLExbNTM3NjArRV09QlsyMTBdW0VdKTtmb3IoQlsyMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMzlcdTRlYjZcdTRmNDZcdTU1YWVcdTU3MThcdTU4YzdcdTVmNTZcdTY1YjdcdTY1ZTZcdTZh''@;'; put 'put ''ODBcdTZiYjVcdTZlNGRcdTc3ZWRcdTdhZWZcdTdjMWVcdTdkZGVcdTg2Y2JcdTg4OTJcdTkxMzJcdTkzNWJcdTY0YmJcdTZmYmVcdTczN2FcdTc1YjhcdTkwNTRcdTU1NTZcdTU3NGRcdTYxYmFcdTY0ZDRcdTY2YzdcdTZkZTFcdTZlNWJcdTZmNmRcdTZmYjlcdTc1ZjBcdTgwNDNcdTgxYmRc''@;'; put 'put ''dTg1NDFcdTg5ODNcdThhYzdcdThiNWFcdTkzMWZcdTZjOTNcdTc1NTNcdTdiNTRcdThlMGZcdTkwNWRcdTU1MTBcdTU4MDJcdTU4NThcdTVlNjJcdTYyMDdcdTY0OWVcdTY4ZTBcdTc1NzZcdTdjZDZcdTg3YjNcdTllZThcdTRlZTNcdTU3ODhcdTU3NmVcdTU5MjdcdTVjMGRcdTVjYjFcdTVl''@;'; put 'put ''MzZcdTVmODVcdTYyMzRcdTY0ZTFcdTczYjNcdTgxZmFcdTg4OGJcdThjYjhcdTk2OGFcdTllZGJcdTViODVcdTVmYjdcdTYwYjNcdTUwMTJcdTUyMDBcdTUyMzBcdTU3MTZcdTU4MzVcdTU4NTdcdTVjMGVcdTVjNjBcdTVjZjZcdTVkOGJcdTVlYTZcdTVmOTJcdTYwYmNcdTYzMTFcdTYzODlc''@;'; put 'put ''dTY0MTdcdTY4NDNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxMV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjExXVtFXV09NTQwMTYrRSxMWzU0MDE2K0VdPUJbMjExXVtFXSk7Zm9yKEJbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OGY5XHU2YWMyXHU2ZGQ4XHU2ZTIxXHU2ZWQ0XHU2ZmU0XHU3MWZlXHU3''@;'; put 'put ''NmRjXHU3Nzc5XHU3OWIxXHU3YTNiXHU4NDA0XHU4OWE5XHU4Y2VkXHU4ZGYzXHU4ZTQ4XHU5MDAzXHU5MDE0XHU5MDUzXHU5MGZkXHU5MzRkXHU5Njc2XHU5N2RjXHU2YmQyXHU3MDA2XHU3MjU4XHU3MmEyXHU3MzY4XHU3NzYzXHU3OWJmXHU3YmU0XHU3ZTliXHU4YjgwXHU1OGE5XHU2MGM3''@;'; put 'put ''XHU2NTY2XHU2NWZkXHU2NmJlXHU2YzhjXHU3MTFlXHU3MWM5XHU4YzVhXHU5ODEzXHU0ZTZkXHU3YTgxXHU0ZWRkXHU1MWFjXHU1MWNkXHU1MmQ1XHU1NDBjXHU2MWE3XHU2NzcxXHU2ODUwXHU2OGRmXHU2ZDFlXHU2ZjdjXHU3NWJjXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDYzXHU5Mjg1XHU1''@;'; put 'put ''MTVjXHU2NTk3XHU2NzVjXHU2NzkzXHU3NWQ4XHU3YWM3XHU4MzczXHVmOTVhXHU4YzQ2XHU5MDE3XHU5ODJkXHU1YzZmXHU4MWMwXHU4MjlhXHU5MDQxXHU5MDZmXHU5MjBkXHU1Zjk3XHU1ZDlkXHU2YTU5XHU3MWM4XHU3NjdiXHU3YjQ5XHU4NWU0XHU4YjA0XHU5MTI3XHU5YTMwXHU1NTg3''@;'; put 'put ''XHU2MWY2XHVmOTViXHU3NjY5XHU3Zjg1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxMl1bRV1dPTU0MjcyK0UsTFs1NDI3MitFXT1CWzIxMl1bRV0pO2ZvcihCWzIxM109Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODYzZlx1ODdiYVx1ODhmOFx1OTA4Zlx1Zjk1Y1x1''@;'; put 'put ''NmQxYlx1NzBkOVx1NzNkZVx1N2Q2MVx1ODQzZFx1Zjk1ZFx1OTE2YVx1OTlmMVx1Zjk1ZVx1NGU4Mlx1NTM3NVx1NmIwNFx1NmIxMlx1NzAzZVx1NzIxYlx1ODYyZFx1OWUxZVx1NTI0Y1x1OGZhM1x1NWQ1MFx1NjRlNVx1NjUyY1x1NmIxNlx1NmZlYlx1N2M0M1x1N2U5Y1x1ODVjZFx1ODk2''@;'; put 'put ''NFx1ODliZFx1NjJjOVx1ODFkOFx1ODgxZlx1NWVjYVx1NjcxN1x1NmQ2YVx1NzJmY1x1NzQwNVx1NzQ2Zlx1ODc4Mlx1OTBkZVx1NGY4Nlx1NWQwZFx1NWZhMFx1ODQwYVx1NTFiN1x1NjNhMFx1NzU2NVx1NGVhZVx1NTAwNlx1NTE2OVx1NTFjOVx1Njg4MVx1NmExMVx1N2NhZVx1N2NiMVx1''@;'; put 'put ''N2NlN1x1ODI2Zlx1OGFkMlx1OGYxYlx1OTFjZlx1NGZiNlx1NTEzN1x1NTJmNVx1NTQ0Mlx1NWVlY1x1NjE2ZVx1NjIzZVx1NjVjNVx1NmFkYVx1NmZmZVx1NzkyYVx1ODVkY1x1ODgyM1x1OTVhZFx1OWE2Mlx1OWE2YVx1OWU5N1x1OWVjZVx1NTI5Ylx1NjZjNlx1NmI3N1x1NzAxZFx1Nzky''@;'; put 'put ''Ylx1OGY2Mlx1OTc0Mlx1NjE5MFx1NjIwMFx1NjUyM1x1NmYyM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTNdW0VdXT01NDUyOCtFLExbNTQ1MjgrRV09QlsyMTNdW0VdKTtmb3IoQlsy''@;'; put 'put ''MTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcxNDlcdTc0ODlcdTdkZjRc''@;'; put 'put ''dTgwNmZcdTg0ZWVcdThmMjZcdTkwMjNcdTkzNGFcdTUxYmRcdTUyMTdcdTUyYTNcdTZkMGNcdTcwYzhcdTg4YzJcdTVlYzlcdTY1ODJcdTZiYWVcdTZmYzJcdTdjM2VcdTczNzVcdTRlZTRcdTRmMzZcdTU2ZjlcdWY5NWZcdTVjYmFcdTVkYmFcdTYwMWNcdTczYjJcdTdiMmRcdTdmOWFcdTdm''@;'; put 'put ''Y2VcdTgwNDZcdTkwMWVcdTkyMzRcdTk2ZjZcdTk3NDhcdTk4MThcdTlmNjFcdTRmOGJcdTZmYTdcdTc5YWVcdTkxYjRcdTk2YjdcdTUyZGVcdWY5NjBcdTY0ODhcdTY0YzRcdTZhZDNcdTZmNWVcdTcwMThcdTcyMTBcdTc2ZTdcdTgwMDFcdTg2MDZcdTg2NWNcdThkZWZcdThmMDVcdTk3MzJc''@;'; put 'put ''dTliNmZcdTlkZmFcdTllNzVcdTc4OGNcdTc5N2ZcdTdkYTBcdTgzYzlcdTkzMDRcdTllN2ZcdTllOTNcdThhZDZcdTU4ZGZcdTVmMDRcdTY3MjdcdTcwMjdcdTc0Y2ZcdTdjNjBcdTgwN2VcdTUxMjFcdTcwMjhcdTcyNjJcdTc4Y2FcdThjYzJcdThjZGFcdThjZjRcdTk2ZjdcdTRlODZcdTUw''@;'; put 'put ''ZGFcdTViZWVcdTVlZDZcdTY1OTlcdTcxY2VcdTc2NDJcdTc3YWRcdTgwNGFcdTg0ZmNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxNF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE0XVtFXV09NTQ3ODQrRSxMWzU0Nzg0K0VdPUJbMjE0''@;'; put 'put ''XVtFXSk7Zm9yKEJbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MDdj''@;'; put 'put ''XHU5YjI3XHU5ZjhkXHU1OGQ4XHU1YTQxXHU1YzYyXHU2YTEzXHU2ZGRhXHU2ZjBmXHU3NjNiXHU3ZDJmXHU3ZTM3XHU4NTFlXHU4OTM4XHU5M2U0XHU5NjRiXHU1Mjg5XHU2NWQyXHU2N2YzXHU2OWI0XHU2ZDQxXHU2ZTljXHU3MDBmXHU3NDA5XHU3NDYwXHU3NTU5XHU3NjI0XHU3ODZiXHU4''@;'; put 'put ''YjJjXHU5ODVlXHU1MTZkXHU2MjJlXHU5Njc4XHU0Zjk2XHU1MDJiXHU1ZDE5XHU2ZGVhXHU3ZGI4XHU4ZjJhXHU1ZjhiXHU2MTQ0XHU2ODE3XHVmOTYxXHU5Njg2XHU1MmQyXHU4MDhiXHU1MWRjXHU1MWNjXHU2OTVlXHU3YTFjXHU3ZGJlXHU4M2YxXHU5Njc1XHU0ZmRhXHU1MjI5XHU1Mzk4''@;'; put 'put ''XHU1NDBmXHU1NTBlXHU1YzY1XHU2MGE3XHU2NzRlXHU2OGE4XHU2ZDZjXHU3MjgxXHU3MmY4XHU3NDA2XHU3NDgzXHVmOTYyXHU3NWUyXHU3YzZjXHU3Zjc5XHU3ZmI4XHU4Mzg5XHU4OGNmXHU4OGUxXHU5MWNjXHU5MWQwXHU5NmUyXHU5YmM5XHU1NDFkXHU2ZjdlXHU3MWQwXHU3NDk4XHU4''@;'; put 'put ''NWZhXHU4ZWFhXHU5NmEzXHU5YzU3XHU5ZTlmXHU2Nzk3XHU2ZGNiXHU3NDMzXHU4MWU4XHU5NzE2XHU3ODJjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxNV1bRV1dPTU1MDQwK0UsTFs1''@;'; put 'put ''NTA0MCtFXT1CWzIxNV1bRV0pO2ZvcihCWzIxNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1N2FjYlx1N2IyMFx1N2M5Mlx1NjQ2OVx1NzQ2YVx1NzVmMlx1NzhiY1x1NzhlOFx1OTlhY1x1OWI1NFx1OWViYlx1NWJkZVx1NWU1NVx1NmYyMFx1ODE5Y1x1ODNhYlx1OTA4OFx1NGUwN1x1NTM0ZFx1NWEyOVx1NWRkMlx1NWY0ZVx1NjE2Mlx1NjMzZFx1NjY2OVx1NjZmY1x1''@;'; put 'put ''NmVmZlx1NmYyYlx1NzA2M1x1Nzc5ZVx1ODQyY1x1ODUxM1x1ODgzYlx1OGYxM1x1OTk0NVx1OWMzYlx1NTUxY1x1NjJiOVx1NjcyYlx1NmNhYlx1ODMwOVx1ODk2YVx1OTc3YVx1NGVhMVx1NTk4NFx1NWZkOFx1NWZkOVx1NjcxYlx1N2RiMlx1N2Y1NFx1ODI5Mlx1ODMyYlx1ODNiZFx1OGYx''@;'; put 'put ''ZVx1OTA5OVx1NTdjYlx1NTliOVx1NWE5Mlx1NWJkMFx1NjYyN1x1Njc5YVx1Njg4NVx1NmJjZlx1NzE2NFx1N2Y3NVx1OGNiN1x1OGNlM1x1OTA4MVx1OWI0NVx1ODEwOFx1OGM4YVx1OTY0Y1x1OWE0MFx1OWVhNVx1NWI1Zlx1NmMxM1x1NzMxYlx1NzZmMlx1NzZkZlx1ODQwY1x1NTFhYVx1''@;'; put 'put ''ODk5M1x1NTE0ZFx1NTE5NVx1NTJjOVx1NjhjOVx1NmM5NFx1NzcwNFx1NzcyMFx1N2RiZlx1N2RlY1x1OTc2Mlx1OWViNVx1NmVjNVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTZdW0Vd''@;'; put 'put ''XT01NTI5NitFLExbNTUyOTYrRV09QlsyMTZdW0VdKTtmb3IoQlsyMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1MTFcdTUxYTVcdTU0MGRcdTU0N2RcdTY2MGVcdTY2OWRcdTY5MjdcdTZlOWZcdTc2YmZcdTc3OTFcdTgzMTdcdTg0YzJcdTg3OWZcdTkxNjlcdTkyOThcdTljZjRcdTg4ODJcdTRmYWVcdTUxOTJcdTUyZGZcdTU5YzZcdTVlM2RcdTYxNTVcdTY0Nzhc''@;'; put 'put ''dTY0NzlcdTY2YWVcdTY3ZDBcdTZhMjFcdTZiY2RcdTZiZGJcdTcyNWZcdTcyNjFcdTc0NDFcdTc3MzhcdTc3ZGJcdTgwMTdcdTgyYmNcdTgzMDVcdThiMDBcdThiMjhcdThjOGNcdTY3MjhcdTZjOTBcdTcyNjdcdTc2ZWVcdTc3NjZcdTdhNDZcdTlkYTlcdTZiN2ZcdTZjOTJcdTU5MjJcdTY3''@;'; put 'put ''MjZcdTg0OTlcdTUzNmZcdTU4OTNcdTU5OTlcdTVlZGZcdTYzY2ZcdTY2MzRcdTY3NzNcdTZlM2FcdTczMmJcdTdhZDdcdTgyZDdcdTkzMjhcdTUyZDlcdTVkZWJcdTYxYWVcdTYxY2JcdTYyMGFcdTYyYzdcdTY0YWJcdTY1ZTBcdTY5NTlcdTZiNjZcdTZiY2JcdTcxMjFcdTczZjdcdTc1NWRc''@;'; put 'put ''dTdlNDZcdTgyMWVcdTgzMDJcdTg1NmFcdThhYTNcdThjYmZcdTk3MjdcdTlkNjFcdTU4YThcdTllZDhcdTUwMTFcdTUyMGVcdTU0M2JcdTU1NGZcdTY1ODdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxN11bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KGdlW0JbMjE3XVtFXV09NTU1NTIrRSxMWzU1NTUyK0VdPUJbMjE3XVtFXSk7Zm9yKEJbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Yzc2XHU3ZDBhXHU3ZDBiXHU4MDVlXHU4NjhhXHU5NTgwXHU5NmVmXHU1MmZmXHU2Yzk1XHU3MjY5XHU1NDczXHU1YTlhXHU1YzNlXHU1ZDRiXHU1ZjRjXHU1ZmFlXHU2NzJhXHU2OGI2XHU2OTYzXHU2ZTNjXHU2ZTQ0XHU3NzA5''@;'; put 'put ''XHU3YzczXHU3ZjhlXHU4NTg3XHU4YjBlXHU4ZmY3XHU5NzYxXHU5ZWY0XHU1Y2I3XHU2MGI2XHU2MTBkXHU2MWFiXHU2NTRmXHU2NWZiXHU2NWZjXHU2YzExXHU2Y2VmXHU3MzlmXHU3M2M5XHU3ZGUxXHU5NTk0XHU1YmM2XHU4NzFjXHU4YjEwXHU1MjVkXHU1MzVhXHU2MmNkXHU2NDBmXHU2''@;'; put 'put ''NGIyXHU2NzM0XHU2YTM4XHU2Y2NhXHU3M2MwXHU3NDllXHU3Yjk0XHU3Yzk1XHU3ZTFiXHU4MThhXHU4MjM2XHU4NTg0XHU4ZmViXHU5NmY5XHU5OWMxXHU0ZjM0XHU1MzRhXHU1M2NkXHU1M2RiXHU2MmNjXHU2NDJjXHU2NTAwXHU2NTkxXHU2OWMzXHU2Y2VlXHU2ZjU4XHU3M2VkXHU3NTU0''@;'; put 'put ''XHU3NjIyXHU3NmU0XHU3NmZjXHU3OGQwXHU3OGZiXHU3OTJjXHU3ZDQ2XHU4MjJjXHU4N2UwXHU4ZmQ0XHU5ODEyXHU5OGVmXHU1MmMzXHU2MmQ0XHU2NGE1XHU2ZTI0XHU2ZjUxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMThdW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihnZVtCWzIxOF1bRV1dPTU1ODA4K0UsTFs1NTgwOCtFXT1CWzIxOF1bRV0pO2ZvcihCWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzY3Y1x1OGRjYlx1OTFiMVx1OTI2Mlx1OWFlZVx1OWI0M1x1NTAyM1x1NTA4ZFx1NTc0YVx1NTlhOFx1NWMyOFx1NWU0N1x1NWY3N1x1NjIzZlx1NjUzZVx1NjViOVx1NjVjMVx1NjYwOVx1Njc4Ylx1Njk5''@;'; put 'put ''Y1x1NmVjMlx1NzhjNVx1N2QyMVx1ODBhYVx1ODE4MFx1ODIyYlx1ODJiM1x1ODRhMVx1ODY4Y1x1OGEyYVx1OGIxN1x1OTBhNlx1OTYzMlx1OWY5MFx1NTAwZFx1NGZmM1x1Zjk2M1x1NTdmOVx1NWY5OFx1NjJkY1x1NjM5Mlx1Njc2Zlx1NmU0M1x1NzExOVx1NzZjM1x1ODBjY1x1ODBkYVx1''@;'; put 'put ''ODhmNFx1ODhmNVx1ODkxOVx1OGNlMFx1OGYyOVx1OTE0ZFx1OTY2YVx1NGYyZlx1NGY3MFx1NWUxYlx1NjdjZlx1NjgyMlx1NzY3ZFx1NzY3ZVx1OWI0NFx1NWU2MVx1NmEwYVx1NzE2OVx1NzFkNFx1NzU2YVx1Zjk2NFx1N2U0MVx1ODU0M1x1ODVlOVx1OThkY1x1NGYxMFx1N2I0Zlx1N2Y3''@;'; put 'put ''MFx1OTVhNVx1NTFlMVx1NWUwNlx1NjhiNVx1NmMzZVx1NmM0ZVx1NmNkYlx1NzJhZlx1N2JjNFx1ODMwM1x1NmNkNVx1NzQzYVx1NTBmYlx1NTI4OFx1NThjMVx1NjRkOFx1NmE5N1x1NzRhN1x1NzY1Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxOV0ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMjE5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTldW0VdXT01NjA2NCtFLExbNTYwNjQrRV09QlsyMTldW0VdKTtmb3IoQlsyMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc4YTdcdTg2MTdcdTk1ZTJcdTk3MzlcdWY5NjVcdTUzNWVcdTVmMDFcdThiOGFcdThmYThcdThmYWZcdTkwOGFcdTUyMjVcdTc3YTVcdTljNDlcdTlmMDhcdTRlMTlcdTUwMDJcdTUx''@;'; put 'put ''NzVcdTVjNWJcdTVlNzdcdTY2MWVcdTY2M2FcdTY3YzRcdTY4YzVcdTcwYjNcdTc1MDFcdTc1YzVcdTc5YzlcdTdhZGRcdThmMjdcdTk5MjBcdTlhMDhcdTRmZGRcdTU4MjFcdTU4MzFcdTViZjZcdTY2NmVcdTZiNjVcdTZkMTFcdTZlN2FcdTZmN2RcdTczZTRcdTc1MmJcdTgzZTlcdTg4ZGNc''@;'; put 'put ''dTg5MTNcdThiNWNcdThmMTRcdTRmMGZcdTUwZDVcdTUzMTBcdTUzNWNcdTViOTNcdTVmYTlcdTY3MGRcdTc5OGZcdTgxNzlcdTgzMmZcdTg1MTRcdTg5MDdcdTg5ODZcdThmMzlcdThmM2JcdTk5YTVcdTljMTJcdTY3MmNcdTRlNzZcdTRmZjhcdTU5NDlcdTVjMDFcdTVjZWZcdTVjZjBcdTYz''@;'; put 'put ''NjdcdTY4ZDJcdTcwZmRcdTcxYTJcdTc0MmJcdTdlMmJcdTg0ZWNcdTg3MDJcdTkwMjJcdTkyZDJcdTljZjNcdTRlMGRcdTRlZDhcdTRmZWZcdTUwODVcdTUyNTZcdTUyNmZcdTU0MjZcdTU0OTBcdTU3ZTBcdTU5MmJcdTVhNjZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjBdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzIyMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjIwXVtFXV09NTYzMjArRSxMWzU2MzIwK0VdPUJbMjIwXVtFXSk7Zm9yKEJbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YjVhXHU1Yjc1XHU1YmNjXHU1ZTljXHVmOTY2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2ZDZlXHU2ZWE1XHU3MjM2XHU3YjI2XHU3YzNmXHU3ZjM2XHU4MTUwXHU4''@;'; put 'put ''MTUxXHU4MTlhXHU4MjQwXHU4Mjk5XHU4M2E5XHU4YTAzXHU4Y2EwXHU4Y2U2XHU4Y2ZiXHU4ZDc0XHU4ZGJhXHU5MGU4XHU5MWRjXHU5NjFjXHU5NjQ0XHU5OWQ5XHU5Y2U3XHU1MzE3XHU1MjA2XHU1NDI5XHU1Njc0XHU1OGIzXHU1OTU0XHU1OTZlXHU1ZmZmXHU2MWE0XHU2MjZlXHU2NjEw''@;'; put 'put ''XHU2YzdlXHU3MTFhXHU3NmM2XHU3Yzg5XHU3Y2RlXHU3ZDFiXHU4MmFjXHU4Y2MxXHU5NmYwXHVmOTY3XHU0ZjViXHU1ZjE3XHU1ZjdmXHU2MmMyXHU1ZDI5XHU2NzBiXHU2OGRhXHU3ODdjXHU3ZTQzXHU5ZDZjXHU0ZTE1XHU1MDk5XHU1MzE1XHU1MzJhXHU1MzUxXHU1OTgzXHU1YTYyXHU1''@;'; put 'put ''ZTg3XHU2MGIyXHU2MThhXHU2MjQ5XHU2Mjc5XHU2NTkwXHU2Nzg3XHU2OWE3XHU2YmQ0XHU2YmQ2XHU2YmQ3XHU2YmQ4XHU2Y2I4XHVmOTY4XHU3NDM1XHU3NWZhXHU3ODEyXHU3ODkxXHU3OWQ1XHU3OWQ4XHU3YzgzXHU3ZGNiXHU3ZmUxXHU4MGE1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMjIxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyMV1bRV1dPTU2NTc2K0UsTFs1NjU3NitFXT1CWzIyMV1bRV0pO2ZvcihCWzIyMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODEzZVx1ODFjMlx1ODNmMlx1ODcxYVx1ODhlOFx1OGFiOVx1OGI2Y1x1OGNiYlx1OTExOVx1OTc1ZVx1OThkYlx1OWYzYlx1NTZhY1x1''@;'; put 'put ''NWIyYVx1NWY2Y1x1NjU4Y1x1NmFiM1x1NmJhZlx1NmQ1Y1x1NmZmMVx1NzAxNVx1NzI1ZFx1NzNhZFx1OGNhN1x1OGNkM1x1OTgzYlx1NjE5MVx1NmMzN1x1ODA1OFx1OWEwMVx1NGU0ZFx1NGU4Ylx1NGU5Ylx1NGVkNVx1NGYzYVx1NGYzY1x1NGY3Zlx1NGZkZlx1NTBmZlx1NTNmMlx1NTNm''@;'; put 'put ''OFx1NTUwNlx1NTVlM1x1NTZkYlx1NThlYlx1NTk2Mlx1NWExMVx1NWJlYlx1NWJmYVx1NWMwNFx1NWRmM1x1NWUyYlx1NWY5OVx1NjAxZFx1NjM2OFx1NjU5Y1x1NjVhZlx1NjdmNlx1NjdmYlx1NjhhZFx1NmI3Ylx1NmM5OVx1NmNkN1x1NmUyM1x1NzAwOVx1NzM0NVx1NzgwMlx1NzkzZVx1''@;'; put 'put ''Nzk0MFx1Nzk2MFx1NzljMVx1N2JlOVx1N2QxN1x1N2Q3Mlx1ODA4Nlx1ODIwZFx1ODM4ZVx1ODRkMVx1ODZjN1x1ODhkZlx1OGE1MFx1OGE1ZVx1OGIxZFx1OGNkY1x1OGQ2Nlx1OGZhZFx1OTBhYVx1OThmY1x1OTlkZlx1OWU5ZFx1NTI0YVx1Zjk2OVx1NjcxNFx1Zjk2YVx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLEU9MDtFIT1CWzIyMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjJdW0VdXT01NjgzMitFLExbNTY4MzIrRV09QlsyMjJdW0VdKTtmb3IoQlsyMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUwOThcdTUyMmFcdTVjNzFcdTY1NjNcdTZjNTVcdTczY2FcdTc1MjNcdTc1OWRcdTdiOTdcdTg0OWNcdTkxNzhc''@;'; put 'put ''dTk3MzBcdTRlNzdcdTY0OTJcdTZiYmFcdTcxNWVcdTg1YTlcdTRlMDlcdWY5NmJcdTY3NDlcdTY4ZWVcdTZlMTdcdTgyOWZcdTg1MThcdTg4NmJcdTYzZjdcdTZmODFcdTkyMTJcdTk4YWZcdTRlMGFcdTUwYjdcdTUwY2ZcdTUxMWZcdTU1NDZcdTU1YWFcdTU2MTdcdTViNDBcdTVjMTlcdTVj''@;'; put 'put ''ZTBcdTVlMzhcdTVlOGFcdTVlYTBcdTVlYzJcdTYwZjNcdTY4NTFcdTZhNjFcdTZlNThcdTcyM2RcdTcyNDBcdTcyYzBcdTc2ZjhcdTc5NjVcdTdiYjFcdTdmZDRcdTg4ZjNcdTg5ZjRcdThhNzNcdThjNjFcdThjZGVcdTk3MWNcdTU4NWVcdTc0YmRcdThjZmRcdTU1YzdcdWY5NmNcdTdhNjFc''@;'; put 'put ''dTdkMjJcdTgyNzJcdTcyNzJcdTc1MWZcdTc1MjVcdWY5NmRcdTdiMTlcdTU4ODVcdTU4ZmJcdTVkYmNcdTVlOGZcdTVlYjZcdTVmOTBcdTYwNTVcdTYyOTJcdTYzN2ZcdTY1NGRcdTY2OTFcdTY2ZDlcdTY2ZjhcdTY4MTZcdTY4ZjJcdTcyODBcdTc0NWVcdTdiNmVcdTdkNmVcdTdkZDZcdTdm''@;'; put 'put ''NzJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyM11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjIzXVtFXV09NTcwODgrRSxMWzU3MDg4K0VdPUJbMjIzXVtFXSk7Zm9yKEJbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MGU1XHU4MjEyXHU4NWFmXHU4OTdmXHU4YTkzXHU5MDFkXHU5MmU0XHU5ZWNkXHU5ZjIw''@;'; put 'put ''XHU1OTE1XHU1OTZkXHU1ZTJkXHU2MGRjXHU2NjE0XHU2NjczXHU2NzkwXHU2YzUwXHU2ZGM1XHU2ZjVmXHU3N2YzXHU3OGE5XHU4NGM2XHU5MWNiXHU5MzJiXHU0ZWQ5XHU1MGNhXHU1MTQ4XHU1NTg0XHU1YjBiXHU1YmEzXHU2MjQ3XHU2NTdlXHU2NWNiXHU2ZTMyXHU3MTdkXHU3NDAxXHU3''@;'; put 'put ''NDQ0XHU3NDg3XHU3NGJmXHU3NjZjXHU3OWFhXHU3ZGRhXHU3ZTU1XHU3ZmE4XHU4MTdhXHU4MWIzXHU4MjM5XHU4NjFhXHU4N2VjXHU4YTc1XHU4ZGUzXHU5MDc4XHU5MjkxXHU5NDI1XHU5OTRkXHU5YmFlXHU1MzY4XHU1YzUxXHU2OTU0XHU2Y2M0XHU2ZDI5XHU2ZTJiXHU4MjBjXHU4NTli''@;'; put 'put ''XHU4OTNiXHU4YTJkXHU4YWFhXHU5NmVhXHU5ZjY3XHU1MjYxXHU2NmI5XHU2YmIyXHU3ZTk2XHU4N2ZlXHU4ZDBkXHU5NTgzXHU5NjVkXHU2NTFkXHU2ZDg5XHU3MWVlXHVmOTZlXHU1N2NlXHU1OWQzXHU1YmFjXHU2MDI3XHU2MGZhXHU2MjEwXHU2NjFmXHU2NjVmXHU3MzI5XHU3M2Y5XHU3''@;'; put 'put ''NmRiXHU3NzAxXHU3YjZjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyNF1bRV1dPTU3MzQ0K0UsTFs1NzM0NCtFXT1CWzIyNF1bRV0pO2ZvcihCWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA1Nlx1ODA3Mlx1ODE2NVx1OGFhMFx1OTE5Mlx1NGUxNlx1NTJl''@;'; put 'put ''Mlx1NmI3Mlx1NmQxN1x1N2EwNVx1N2IzOVx1N2QzMFx1Zjk2Zlx1OGNiMFx1NTNlY1x1NTYyZlx1NTg1MVx1NWJiNVx1NWMwZlx1NWMxMVx1NWRlMlx1NjI0MFx1NjM4M1x1NjQxNFx1NjYyZFx1NjhiM1x1NmNiY1x1NmQ4OFx1NmVhZlx1NzAxZlx1NzBhNFx1NzFkMlx1NzUyNlx1NzU4Zlx1''@;'; put 'put ''NzU4ZVx1NzYxOVx1N2IxMVx1N2JlMFx1N2MyYlx1N2QyMFx1N2QzOVx1ODUyY1x1ODU2ZFx1ODYwN1x1OGEzNFx1OTAwZFx1OTA2MVx1OTBiNVx1OTJiN1x1OTdmNlx1OWEzN1x1NGZkN1x1NWM2Y1x1Njc1Zlx1NmQ5MVx1N2M5Zlx1N2U4Y1x1OGIxNlx1OGQxNlx1OTAxZlx1NWI2Ylx1NWRm''@;'; put 'put ''ZFx1NjQwZFx1ODRjMFx1OTA1Y1x1OThlMVx1NzM4N1x1NWI4Ylx1NjA5YVx1Njc3ZVx1NmRkZVx1OGExZlx1OGFhNlx1OTAwMVx1OTgwY1x1NTIzN1x1Zjk3MFx1NzA1MVx1Nzg4ZVx1OTM5Nlx1ODg3MFx1OTFkN1x1NGZlZVx1NTNkN1x1NTVmZFx1NTZkYVx1NTc4Mlx1NThmZFx1NWFjMlx1''@;'; put 'put ''NWI4OFx1NWNhYlx1NWNjMFx1NWUyNVx1NjEwMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjVdW0VdXT01NzYwMCtFLExbNTc2MDArRV09QlsyMjVdW0VdKTtmb3IoQlsyMjZdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYyMGRcdTYyNGJcdTYzODhcdTY0MWNcdTY1''@;'; put 'put ''MzZcdTY1NzhcdTZhMzlcdTZiOGFcdTZjMzRcdTZkMTlcdTZmMzFcdTcxZTdcdTcyZTlcdTczNzhcdTc0MDdcdTc0YjJcdTc2MjZcdTc3NjFcdTc5YzBcdTdhNTdcdTdhZWFcdTdjYjlcdTdkOGZcdTdkYWNcdTdlNjFcdTdmOWVcdTgxMjlcdTgzMzFcdTg0OTBcdTg0ZGFcdTg1ZWFcdTg4OTZc''@;'; put 'put ''dThhYjBcdThiOTBcdThmMzhcdTkwNDJcdTkwODNcdTkxNmNcdTkyOTZcdTkyYjlcdTk2OGJcdTk2YTdcdTk2YThcdTk2ZDZcdTk3MDBcdTk4MDhcdTk5OTZcdTlhZDNcdTliMWFcdTUzZDRcdTU4N2VcdTU5MTlcdTViNzBcdTViYmZcdTZkZDFcdTZmNWFcdTcxOWZcdTc0MjFcdTc0YjlcdTgw''@;'; put 'put ''ODVcdTgzZmRcdTVkZTFcdTVmODdcdTVmYWFcdTYwNDJcdTY1ZWNcdTY4MTJcdTY5NmZcdTZhNTNcdTZiODlcdTZkMzVcdTZkZjNcdTczZTNcdTc2ZmVcdTc3YWNcdTdiNGRcdTdkMTRcdTgxMjNcdTgyMWNcdTgzNDBcdTg0ZjRcdTg1NjNcdThhNjJcdThhYzRcdTkxODdcdTkzMWVcdTk4MDZc''@;'; put 'put ''dTk5YjRcdTYyMGNcdTg4NTNcdThmZjBcdTkyNjVcdTVkMDdcdTVkMjdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI2XVtFXV09NTc4NTYrRSxMWzU3ODU2K0VdPUJbMjI2XVtFXSk7Zm9y''@;'; put 'put ''KEJbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZDY5XHU3NDVmXHU4''@;'; put 'put ''MTlkXHU4NzY4XHU2ZmQ1XHU2MmZlXHU3ZmQyXHU4OTM2XHU4OTcyXHU0ZTFlXHU0ZTU4XHU1MGU3XHU1MmRkXHU1MzQ3XHU2MjdmXHU2NjA3XHU3ZTY5XHU4ODA1XHU5NjVlXHU0ZjhkXHU1MzE5XHU1NjM2XHU1OWNiXHU1YWE0XHU1YzM4XHU1YzRlXHU1YzRkXHU1ZTAyXHU1ZjExXHU2MDQz''@;'; put 'put ''XHU2NWJkXHU2NjJmXHU2NjQyXHU2N2JlXHU2N2Y0XHU3MzFjXHU3N2UyXHU3OTNhXHU3ZmM1XHU4NDk0XHU4NGNkXHU4OTk2XHU4YTY2XHU4YTY5XHU4YWUxXHU4YzU1XHU4YzdhXHU1N2Y0XHU1YmQ0XHU1ZjBmXHU2MDZmXHU2MmVkXHU2OTBkXHU2Yjk2XHU2ZTVjXHU3MTg0XHU3YmQyXHU4''@;'; put 'put ''NzU1XHU4YjU4XHU4ZWZlXHU5OGRmXHU5OGZlXHU0ZjM4XHU0ZjgxXHU0ZmUxXHU1NDdiXHU1YTIwXHU1YmI4XHU2MTNjXHU2NWIwXHU2NjY4XHU3MWZjXHU3NTMzXHU3OTVlXHU3ZDMzXHU4MTRlXHU4MWUzXHU4Mzk4XHU4NWFhXHU4NWNlXHU4NzAzXHU4YTBhXHU4ZWFiXHU4ZjliXHVmOTcx''@;'; put 'put ''XHU4ZmM1XHU1OTMxXHU1YmE0XHU1YmU2XHU2MDg5XHU1YmU5XHU1YzBiXHU1ZmMzXHU2YzgxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyN11bRV1dPTU4MTEyK0UsTFs1ODExMitFXT1C''@;'; put 'put ''WzIyN11bRV0pO2ZvcihCWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''Zjk3Mlx1NmRmMVx1NzAwYlx1NzUxYVx1ODJhZlx1OGFmNlx1NGVjMFx1NTM0MVx1Zjk3M1x1OTZkOVx1NmMwZlx1NGU5ZVx1NGZjNFx1NTE1Mlx1NTU1ZVx1NWEyNVx1NWNlOFx1NjIxMVx1NzI1OVx1ODJiZFx1ODNhYVx1ODZmZVx1ODg1OVx1OGExZFx1OTYzZlx1OTZjNVx1OTkxM1x1OWQw''@;'; put 'put ''OVx1OWQ1ZFx1NTgwYVx1NWNiM1x1NWRiZFx1NWU0NFx1NjBlMVx1NjExNVx1NjNlMVx1NmEwMlx1NmUyNVx1OTEwMlx1OTM1NFx1OTg0ZVx1OWMxMFx1OWY3N1x1NWI4OVx1NWNiOFx1NjMwOVx1NjY0Zlx1Njg0OFx1NzczY1x1OTZjMVx1OTc4ZFx1OTg1NFx1OWI5Zlx1NjVhMVx1OGIwMVx1''@;'; put 'put ''OGVjYlx1OTViY1x1NTUzNVx1NWNhOVx1NWRkNlx1NWViNVx1NjY5N1x1NzY0Y1x1ODNmNFx1OTVjN1x1NThkM1x1NjJiY1x1NzJjZVx1OWQyOFx1NGVmMFx1NTkyZVx1NjAwZlx1NjYzYlx1NmI4M1x1NzllN1x1OWQyNlx1NTM5M1x1NTRjMFx1NTdjM1x1NWQxNlx1NjExYlx1NjZkNlx1NmRh''@;'; put 'put ''Zlx1Nzg4ZFx1ODI3ZVx1OTY5OFx1OTc0NFx1NTM4NFx1NjI3Y1x1NjM5Nlx1NmRiMlx1N2UwYVx1ODE0Ylx1OTg0ZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjhdW0VdXT01ODM2OCtF''@;'; put 'put ''LExbNTgzNjgrRV09QlsyMjhdW0VdKTtmb3IoQlsyMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTZhZmJcdTdmNGNcdTlkYWZcdTllMWFcdTRlNWZcdTUwM2JcdTUxYjZcdTU5MWNcdTYwZjlcdTYzZjZcdTY5MzBcdTcyM2FcdTgwMzZcdWY5NzRcdTkxY2VcdTVmMzFcdWY5NzVcdWY5NzZcdTdkMDRcdTgyZTVcdTg0NmZcdTg0YmJcdTg1ZTVcdThlOGRcdWY5NzdcdTRm''@;'; put 'put ''NmZcdWY5NzhcdWY5NzlcdTU4ZTRcdTViNDNcdTYwNTlcdTYzZGFcdTY1MThcdTY1NmRcdTY2OThcdWY5N2FcdTY5NGFcdTZhMjNcdTZkMGJcdTcwMDFcdTcxNmNcdTc1ZDJcdTc2MGRcdTc5YjNcdTdhNzBcdWY5N2JcdTdmOGFcdWY5N2NcdTg5NDRcdWY5N2RcdThiOTNcdTkxYzBcdTk2N2Rc''@;'; put 'put ''dWY5N2VcdTk5MGFcdTU3MDRcdTVmYTFcdTY1YmNcdTZmMDFcdTc2MDBcdTc5YTZcdThhOWVcdTk5YWRcdTliNWFcdTlmNmNcdTUxMDRcdTYxYjZcdTYyOTFcdTZhOGRcdTgxYzZcdTUwNDNcdTU4MzBcdTVmNjZcdTcxMDlcdThhMDBcdThhZmFcdTViN2NcdTg2MTZcdTRmZmFcdTUxM2NcdTU2''@;'; put 'put ''YjRcdTU5NDRcdTYzYTlcdTZkZjlcdTVkYWFcdTY5NmRcdTUxODZcdTRlODhcdTRmNTlcdWY5N2ZcdWY5ODBcdWY5ODFcdTU5ODJcdWY5ODJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI5''@;'; put 'put ''XVtFXV09NTg2MjQrRSxMWzU4NjI0K0VdPUJbMjI5XVtFXSk7Zm9yKEJbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOTgzXHU2YjVmXHU2YzVkXHVmOTg0XHU3NGI1XHU3OTE2XHVmOTg1XHU4MjA3XHU4MjQ1XHU4MzM5XHU4ZjNmXHU4ZjVkXHVmOTg2XHU5OTE4XHVmOTg3XHVmOTg4XHVmOTg5XHU0ZWE2XHVmOThhXHU1N2RmXHU1Zjc5XHU2NjEzXHVmOThiXHVm''@;'; put 'put ''OThjXHU3NWFiXHU3ZTc5XHU4YjZmXHVmOThkXHU5MDA2XHU5YTViXHU1NmE1XHU1ODI3XHU1OWY4XHU1YTFmXHU1YmI0XHVmOThlXHU1ZWY2XHVmOThmXHVmOTkwXHU2MzUwXHU2MzNiXHVmOTkxXHU2OTNkXHU2Yzg3XHU2Y2JmXHU2ZDhlXHU2ZDkzXHU2ZGY1XHU2ZjE0XHVmOTkyXHU3MGRm''@;'; put 'put ''XHU3MTM2XHU3MTU5XHVmOTkzXHU3MWMzXHU3MWQ1XHVmOTk0XHU3ODRmXHU3ODZmXHVmOTk1XHU3Yjc1XHU3ZGUzXHVmOTk2XHU3ZTJmXHVmOTk3XHU4ODRkXHU4ZWRmXHVmOTk4XHVmOTk5XHVmOTlhXHU5MjViXHVmOTliXHU5Y2Y2XHVmOTljXHVmOTlkXHVmOTllXHU2MDg1XHU2ZDg1XHVm''@;'; put 'put ''OTlmXHU3MWIxXHVmOWEwXHVmOWExXHU5NWIxXHU1M2FkXHVmOWEyXHVmOWEzXHVmOWE0XHU2N2QzXHVmOWE1XHU3MDhlXHU3MTMwXHU3NDMwXHU4Mjc2XHU4MmQyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzBdW0VdLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihnZVtCWzIzMF1bRV1dPTU4ODgwK0UsTFs1ODg4MCtFXT1CWzIzMF1bRV0pO2ZvcihCWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZjlhNlx1OTViYlx1OWFlNVx1OWU3ZFx1NjZjNFx1ZjlhN1x1NzFjMVx1ODQ0OVx1ZjlhOFx1ZjlhOVx1NTg0Ylx1ZjlhYVx1ZjlhYlx1NWRiOFx1NWY3MVx1ZjlhY1x1NjYyMFx1NjY4ZVx1Njk3OVx1NjlhZVx1NmMzOFx1''@;'; put 'put ''NmNmM1x1NmUzNlx1NmY0MVx1NmZkYVx1NzAxYlx1NzAyZlx1NzE1MFx1NzFkZlx1NzM3MFx1ZjlhZFx1NzQ1Ylx1ZjlhZVx1NzRkNFx1NzZjOFx1N2E0ZVx1N2U5M1x1ZjlhZlx1ZjliMFx1ODJmMVx1OGE2MFx1OGZjZVx1ZjliMVx1OTM0OFx1ZjliMlx1OTcxOVx1ZjliM1x1ZjliNFx1NGU0''@;'; put 'put ''Mlx1NTAyYVx1ZjliNVx1NTIwOFx1NTNlMVx1NjZmM1x1NmM2ZFx1NmZjYVx1NzMwYVx1Nzc3Zlx1N2E2Mlx1ODJhZVx1ODVkZFx1ODYwMlx1ZjliNlx1ODhkNFx1OGE2M1x1OGI3ZFx1OGM2Ylx1ZjliN1x1OTJiM1x1ZjliOFx1OTcxM1x1OTgxMFx1NGU5NFx1NGYwZFx1NGZjOVx1NTBiMlx1''@;'; put 'put ''NTM0OFx1NTQzZVx1NTQzM1x1NTVkYVx1NTg2Mlx1NThiYVx1NTk2N1x1NWExYlx1NWJlNFx1NjA5Zlx1ZjliOVx1NjFjYVx1NjU1Nlx1NjVmZlx1NjY2NFx1NjhhN1x1NmM1YVx1NmZiM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMxXVtF''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzFdW0VdXT01OTEzNitFLExbNTkxMzYrRV09QlsyMzFdW0VdKTtmb3IoQlsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcwY2ZcdTcxYWNcdTczNTJcdTdiN2RcdTg3MDhcdThhYTRcdTljMzJcdTlmMDdcdTVjNGJcdTZjODNcdTczNDRcdTczODlcdTkyM2FcdTZlYWJcdTc0NjVcdTc2MWZcdTdhNjlcdTdlMTVcdTg2MGFc''@;'; put 'put ''dTUxNDBcdTU4YzVcdTY0YzFcdTc0ZWVcdTc1MTVcdTc2NzBcdTdmYzFcdTkwOTVcdTk2Y2RcdTk5NTRcdTZlMjZcdTc0ZTZcdTdhYTlcdTdhYWFcdTgxZTVcdTg2ZDlcdTg3NzhcdThhMWJcdTVhNDlcdTViOGNcdTViOWJcdTY4YTFcdTY5MDBcdTZkNjNcdTczYTlcdTc0MTNcdTc0MmNcdTc4''@;'; put 'put ''OTdcdTdkZTlcdTdmZWJcdTgxMThcdTgxNTVcdTgzOWVcdThjNGNcdTk2MmVcdTk4MTFcdTY2ZjBcdTVmODBcdTY1ZmFcdTY3ODlcdTZjNmFcdTczOGJcdTUwMmRcdTVhMDNcdTZiNmFcdTc3ZWVcdTU5MTZcdTVkNmNcdTVkY2RcdTczMjVcdTc1NGZcdWY5YmFcdWY5YmJcdTUwZTVcdTUxZjlc''@;'; put 'put ''dTU4MmZcdTU5MmRcdTU5OTZcdTU5ZGFcdTViZTVcdWY5YmNcdWY5YmRcdTVkYTJcdTYyZDdcdTY0MTZcdTY0OTNcdTY0ZmVcdWY5YmVcdTY2ZGNcdWY5YmZcdTZhNDhcdWY5YzBcdTcxZmZcdTc0NjRcdWY5YzFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzJdLmxlbmd0aDsrK0UpNjU1''@;'; put 'put ''MzMhPT1CWzIzMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMyXVtFXV09NTkzOTIrRSxMWzU5MzkyK0VdPUJbMjMyXVtFXSk7Zm9yKEJbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTg4XHU3YWFmXHU3ZTQ3XHU3ZTVlXHU4MDAwXHU4MTcwXHVmOWMyXHU4N2VmXHU4OTgxXHU4YjIwXHU5MDU5XHVmOWMzXHU5MDgwXHU5OTUyXHU2MTdlXHU2YjMyXHU2ZDc0''@;'; put 'put ''XHU3ZTFmXHU4OTI1XHU4ZmIxXHU0ZmQxXHU1MGFkXHU1MTk3XHU1MmM3XHU1N2M3XHU1ODg5XHU1YmI5XHU1ZWI4XHU2MTQyXHU2OTk1XHU2ZDhjXHU2ZTY3XHU2ZWI2XHU3MTk0XHU3NDYyXHU3NTI4XHU3NTJjXHU4MDczXHU4MzM4XHU4NGM5XHU4ZTBhXHU5Mzk0XHU5M2RlXHVmOWM0XHU0''@;'; put 'put ''ZThlXHU0ZjUxXHU1MDc2XHU1MTJhXHU1M2M4XHU1M2NiXHU1M2YzXHU1Yjg3XHU1YmQzXHU1YzI0XHU2MTFhXHU2MTgyXHU2NWY0XHU3MjViXHU3Mzk3XHU3NDQwXHU3NmMyXHU3OTUwXHU3OTkxXHU3OWI5XHU3ZDA2XHU3ZmJkXHU4MjhiXHU4NWQ1XHU4NjVlXHU4ZmMyXHU5MDQ3XHU5MGY1''@;'; put 'put ''XHU5MWVhXHU5Njg1XHU5NmU4XHU5NmU5XHU1MmQ2XHU1ZjY3XHU2NWVkXHU2NjMxXHU2ODJmXHU3MTVjXHU3YTM2XHU5MGMxXHU5ODBhXHU0ZTkxXHVmOWM1XHU2YTUyXHU2YjllXHU2ZjkwXHU3MTg5XHU4MDE4XHU4MmI4XHU4NTUzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMzXS5s''@;'; put 'put ''ZW5ndGg7KytFKTY1NTMzIT09QlsyMzNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzM11bRV1dPTU5NjQ4K0UsTFs1OTY0OCtFXT1CWzIzM11bRV0pO2ZvcihCWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTA0Ylx1OTY5NVx1OTZmMlx1OTdmYlx1ODUxYVx1OWIzMVx1NGU5MFx1NzE4YVx1OTZjNFx1NTE0M1x1NTM5Zlx1NTRlMVx1NTcxM1x1NTcxMlx1NTdh''@;'; put 'put ''M1x1NWE5Ylx1NWFjNFx1NWJjM1x1NjAyOFx1NjEzZlx1NjNmNFx1NmM4NVx1NmQzOVx1NmU3Mlx1NmU5MFx1NzIzMFx1NzMzZlx1NzQ1N1x1ODJkMVx1ODg4MVx1OGY0NVx1OTA2MFx1ZjljNlx1OTY2Mlx1OTg1OFx1OWQxYlx1NjcwOFx1OGQ4YVx1OTI1ZVx1NGY0ZFx1NTA0OVx1NTBkZVx1''@;'; put 'put ''NTM3MVx1NTcwZFx1NTlkNFx1NWEwMVx1NWMwOVx1NjE3MFx1NjY5MFx1NmUyZFx1NzIzMlx1NzQ0Ylx1N2RlZlx1ODBjM1x1ODQwZVx1ODQ2Nlx1ODUzZlx1ODc1Zlx1ODg1Ylx1ODkxOFx1OGIwMlx1OTA1NVx1OTdjYlx1OWI0Zlx1NGU3M1x1NGY5MVx1NTExMlx1NTE2YVx1ZjljN1x1NTUy''@;'; put 'put ''Zlx1NTVhOVx1NWI3YVx1NWJhNVx1NWU3Y1x1NWU3ZFx1NWViZVx1NjBhMFx1NjBkZlx1NjEwOFx1NjEwOVx1NjNjNFx1NjUzOFx1NjcwOVx1ZjljOFx1NjdkNFx1NjdkYVx1ZjljOVx1Njk2MVx1Njk2Mlx1NmNiOVx1NmQyN1x1ZjljYVx1NmUzOFx1ZjljYlx1ZmZmZCIuc3BsaXQoIiIpLEU9''@;'; put 'put ''MDtFIT1CWzIzNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzRdW0VdXT01OTkwNCtFLExbNTk5MDQrRV09QlsyMzRdW0VdKTtmb3IoQlsyMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmZTFcdTczMzZcdTczMzdcdWY5Y2NcdTc0NWNcdTc1MzFcdWY5Y2RcdTc2NTJcdWY5Y2VcdWY5Y2ZcdTdkYWRcdTgxZmVcdTg0''@;'; put 'put ''MzhcdTg4ZDVcdThhOThcdThhZGJcdThhZWRcdThlMzBcdThlNDJcdTkwNGFcdTkwM2VcdTkwN2FcdTkxNDlcdTkxYzlcdTkzNmVcdWY5ZDBcdWY5ZDFcdTU4MDlcdWY5ZDJcdTZiZDNcdTgwODlcdTgwYjJcdWY5ZDNcdWY5ZDRcdTUxNDFcdTU5NmJcdTVjMzlcdWY5ZDVcdWY5ZDZcdTZmNjRc''@;'; put 'put ''dTczYTdcdTgwZTRcdThkMDdcdWY5ZDdcdTkyMTdcdTk1OGZcdWY5ZDhcdWY5ZDlcdWY5ZGFcdWY5ZGJcdTgwN2ZcdTYyMGVcdTcwMWNcdTdkNjhcdTg3OGRcdWY5ZGNcdTU3YTBcdTYwNjlcdTYxNDdcdTZiYjdcdThhYmVcdTkyODBcdTk2YjFcdTRlNTlcdTU0MWZcdTZkZWJcdTg1MmRcdTk2''@;'; put 'put ''NzBcdTk3ZjNcdTk4ZWVcdTYzZDZcdTZjZTNcdTkwOTFcdTUxZGRcdTYxYzlcdTgxYmFcdTlkZjlcdTRmOWRcdTUwMWFcdTUxMDBcdTViOWNcdTYxMGZcdTYxZmZcdTY0ZWNcdTY5MDVcdTZiYzVcdTc1OTFcdTc3ZTNcdTdmYTlcdTgyNjRcdTg1OGZcdTg3ZmJcdTg4NjNcdThhYmNcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxFPTA7RSE9QlsyMzVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM1XVtFXV09NjAxNjArRSxMWzYwMTYwK0VdPUJbMjM1XVtFXSk7Zm9yKEJbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjcwXHU5MWFiXHU0ZThjXHU0ZWU1XHU0ZjBhXHVmOWRkXHVmOWRlXHU1OTM3XHU1OWU4XHVmOWRmXHU1''@;'; put 'put ''ZGYyXHU1ZjFiXHU1ZjViXHU2MDIxXHVmOWUwXHVmOWUxXHVmOWUyXHVmOWUzXHU3MjNlXHU3M2U1XHVmOWU0XHU3NTcwXHU3NWNkXHVmOWU1XHU3OWZiXHVmOWU2XHU4MDBjXHU4MDMzXHU4MDg0XHU4MmUxXHU4MzUxXHVmOWU3XHVmOWU4XHU4Y2JkXHU4Y2IzXHU5MDg3XHVmOWU5XHVmOWVh''@;'; put 'put ''XHU5OGY0XHU5OTBjXHVmOWViXHVmOWVjXHU3MDM3XHU3NmNhXHU3ZmNhXHU3ZmNjXHU3ZmZjXHU4YjFhXHU0ZWJhXHU0ZWMxXHU1MjAzXHU1MzcwXHVmOWVkXHU1NGJkXHU1NmUwXHU1OWZiXHU1YmM1XHU1ZjE1XHU1ZmNkXHU2ZTZlXHVmOWVlXHVmOWVmXHU3ZDZhXHU4MzM1XHVmOWYwXHU4''@;'; put 'put ''NjkzXHU4YThkXHVmOWYxXHU5NzZkXHU5Nzc3XHVmOWYyXHVmOWYzXHU0ZTAwXHU0ZjVhXHU0ZjdlXHU1OGY5XHU2NWU1XHU2ZWEyXHU5MDM4XHU5M2IwXHU5OWI5XHU0ZWZiXHU1OGVjXHU1OThhXHU1OWQ5XHU2MDQxXHVmOWY0XHVmOWY1XHU3YTE0XHVmOWY2XHU4MzRmXHU4Y2MzXHU1MTY1''@;'; put 'put ''XHU1MzQ0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzNl1bRV1dPTYwNDE2K0UsTFs2MDQxNitFXT1CWzIzNl1bRV0pO2ZvcihCWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZjlmN1x1ZjlmOFx1ZjlmOVx1NGVjZFx1NTI2OVx1NWI1NVx1ODJiZlx1NGVkNFx1''@;'; put 'put ''NTIzYVx1NTRhOFx1NTljOVx1NTlmZlx1NWI1MFx1NWI1N1x1NWI1Y1x1NjA2M1x1NjE0OFx1NmVjYlx1NzA5OVx1NzE2ZVx1NzM4Nlx1NzRmN1x1NzViNVx1NzhjMVx1N2QyYlx1ODAwNVx1ODFlYVx1ODMyOFx1ODUxN1x1ODVjOVx1OGFlZVx1OGNjN1x1OTZjY1x1NGY1Y1x1NTJmYVx1NTZi''@;'; put 'put ''Y1x1NjVhYlx1NjYyOFx1NzA3Y1x1NzBiOFx1NzIzNVx1N2RiZFx1ODI4ZFx1OTE0Y1x1OTZjMFx1OWQ3Mlx1NWI3MVx1NjhlN1x1NmI5OFx1NmY3YVx1NzZkZVx1NWM5MVx1NjZhYlx1NmY1Ylx1N2JiNFx1N2MyYVx1ODgzNlx1OTZkY1x1NGUwOFx1NGVkN1x1NTMyMFx1NTgzNFx1NThiYlx1''@;'; put 'put ''NThlZlx1NTk2Y1x1NWMwN1x1NWUzM1x1NWU4NFx1NWYzNVx1NjM4Y1x1NjZiMlx1Njc1Nlx1NmExZlx1NmFhM1x1NmIwY1x1NmYzZlx1NzI0Nlx1ZjlmYVx1NzM1MFx1NzQ4Ylx1N2FlMFx1N2NhN1x1ODE3OFx1ODFkZlx1ODFlN1x1ODM4YVx1ODQ2Y1x1ODUyM1x1ODU5NFx1ODVjZlx1ODhk''@;'; put 'put ''ZFx1OGQxM1x1OTFhY1x1OTU3N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzddW0VdXT02MDY3MitFLExbNjA2NzIrRV09QlsyMzddW0VdKTtmb3IoQlsyMzhdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OWNcdTUxOGRcdTU0YzlcdTU3MjhcdTViYjBcdTYyNGRc''@;'; put 'put ''dTY3NTBcdTY4M2RcdTY4OTNcdTZlM2RcdTZlZDNcdTcwN2RcdTdlMjFcdTg4YzFcdThjYTFcdThmMDlcdTlmNGJcdTlmNGVcdTcyMmRcdTdiOGZcdThhY2RcdTkzMWFcdTRmNDdcdTRmNGVcdTUxMzJcdTU0ODBcdTU5ZDBcdTVlOTVcdTYyYjVcdTY3NzVcdTY5NmVcdTZhMTdcdTZjYWVcdTZl''@;'; put 'put ''MWFcdTcyZDlcdTczMmFcdTc1YmRcdTdiYjhcdTdkMzVcdTgyZTdcdTgzZjlcdTg0NTdcdTg1ZjdcdThhNWJcdThjYWZcdThlODdcdTkwMTlcdTkwYjhcdTk2Y2VcdTlmNWZcdTUyZTNcdTU0MGFcdTVhZTFcdTViYzJcdTY0NThcdTY1NzVcdTZlZjRcdTcyYzRcdWY5ZmJcdTc2ODRcdTdhNGRc''@;'; put 'put ''dTdiMWJcdTdjNGRcdTdlM2VcdTdmZGZcdTgzN2JcdThiMmJcdThjY2FcdThkNjRcdThkZTFcdThlNWZcdThmZWFcdThmZjlcdTkwNjlcdTkzZDFcdTRmNDNcdTRmN2FcdTUwYjNcdTUxNjhcdTUxNzhcdTUyNGRcdTUyNmFcdTU4NjFcdTU4N2NcdTU5NjBcdTVjMDhcdTVjNTVcdTVlZGJcdTYw''@;'; put 'put ''OWJcdTYyMzBcdTY4MTNcdTZiYmZcdTZjMDhcdTZmYjFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzOF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM4XVtFXV09NjA5MjgrRSxMWzYwOTI4K0VdPUJbMjM4XVtFXSk7Zm9yKEJbMjM5XT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTRlXHU3NDIwXHU3NTMwXHU3NTM4''@;'; put 'put ''XHU3NTUxXHU3NjcyXHU3YjRjXHU3YjhiXHU3YmFkXHU3YmM2XHU3ZThmXHU4YTZlXHU4ZjNlXHU4ZjQ5XHU5MjNmXHU5MjkzXHU5MzIyXHU5NDJiXHU5NmZiXHU5ODVhXHU5ODZiXHU5OTFlXHU1MjA3XHU2MjJhXHU2Mjk4XHU2ZDU5XHU3NjY0XHU3YWNhXHU3YmMwXHU3ZDc2XHU1MzYwXHU1''@;'; put 'put ''Y2JlXHU1ZTk3XHU2ZjM4XHU3MGI5XHU3Yzk4XHU5NzExXHU5YjhlXHU5ZWRlXHU2M2E1XHU2NDdhXHU4Nzc2XHU0ZTAxXHU0ZTk1XHU0ZWFkXHU1MDVjXHU1MDc1XHU1NDQ4XHU1OWMzXHU1YjlhXHU1ZTQwXHU1ZWFkXHU1ZWY3XHU1ZjgxXHU2MGM1XHU2MzNhXHU2NTNmXHU2NTc0XHU2NWNj''@;'; put 'put ''XHU2Njc2XHU2Njc4XHU2N2ZlXHU2OTY4XHU2YTg5XHU2YjYzXHU2YzQwXHU2ZGMwXHU2ZGU4XHU2ZTFmXHU2ZTVlXHU3MDFlXHU3MGExXHU3MzhlXHU3M2ZkXHU3NTNhXHU3NzViXHU3ODg3XHU3OThlXHU3YTBiXHU3YTdkXHU3Y2JlXHU3ZDhlXHU4MjQ3XHU4YTAyXHU4YWVhXHU4YzllXHU5''@;'; put 'put ''MTJkXHU5MTRhXHU5MWQ4XHU5MjY2XHU5MmNjXHU5MzIwXHU5NzA2XHU5NzU2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzOV1bRV1dPTYxMTg0K0UsTFs2MTE4NCtFXT1CWzIzOV1bRV0p''@;'; put 'put ''O2ZvcihCWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTc1Y1x1OTgw''@;'; put 'put ''Mlx1OWYwZVx1NTIzNlx1NTI5MVx1NTU3Y1x1NTgyNFx1NWUxZFx1NWYxZlx1NjA4Y1x1NjNkMFx1NjhhZlx1NmZkZlx1Nzk2ZFx1N2IyY1x1ODFjZFx1ODViYVx1ODhmZFx1OGFmOFx1OGU0NFx1OTE4ZFx1OTY2NFx1OTY5Ylx1OTczZFx1OTg0Y1x1OWY0YVx1NGZjZVx1NTE0Nlx1NTFjYlx1''@;'; put 'put ''NTJhOVx1NTYzMlx1NWYxNFx1NWY2Ylx1NjNhYVx1NjRjZFx1NjVlOVx1NjY0MVx1NjZmYVx1NjZmOVx1NjcxZFx1Njg5ZFx1NjhkN1x1NjlmZFx1NmYxNVx1NmY2ZVx1NzE2N1x1NzFlNVx1NzIyYVx1NzRhYVx1NzczYVx1Nzk1Nlx1Nzk1YVx1NzlkZlx1N2EyMFx1N2E5NVx1N2M5N1x1N2Nk''@;'; put 'put ''Zlx1N2Q0NFx1N2U3MFx1ODA4N1x1ODVmYlx1ODZhNFx1OGE1NFx1OGFiZlx1OGQ5OVx1OGU4MVx1OTAyMFx1OTA2ZFx1OTFlM1x1OTYzYlx1OTZkNVx1OWNlNVx1NjVjZlx1N2MwN1x1OGRiM1x1OTNjM1x1NWI1OFx1NWMwYVx1NTM1Mlx1NjJkOVx1NzMxZFx1NTAyN1x1NWI5N1x1NWY5ZVx1''@;'; put 'put ''NjBiMFx1NjE2Ylx1NjhkNVx1NmRkOVx1NzQyZVx1N2EyZVx1N2Q0Mlx1N2Q5Y1x1N2UzMVx1ODE2Ylx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDBdW0VdXT02MTQ0MCtFLExbNjE0NDAr''@;'; put 'put ''RV09QlsyNDBdW0VdKTtmb3IoQlsyNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdThlMmFcdThlMzVcdTkzN2VcdTk0MThcdTRmNTBcdTU3NTBcdTVkZTZcdTVlYTdcdTYzMmJcdTdmNmFcdTRlM2JcdTRmNGZcdTRmOGZcdTUwNWFcdTU5ZGRcdTgwYzRcdTU0NmFcdTU0NjhcdTU1ZmVcdTU5NGZcdTViOTlcdTVkZGVcdTVlZGFcdTY2NWRcdTY3MzFcdTY3ZjFcdTY4MmFc''@;'; put 'put ''dTZjZThcdTZkMzJcdTZlNGFcdTZmOGRcdTcwYjdcdTczZTBcdTc1ODdcdTdjNGNcdTdkMDJcdTdkMmNcdTdkYTJcdTgyMWZcdTg2ZGJcdThhM2JcdThhODVcdThkNzBcdThlOGFcdThmMzNcdTkwMzFcdTkxNGVcdTkxNTJcdTk0NDRcdTk5ZDBcdTdhZjlcdTdjYTVcdTRmY2FcdTUxMDFcdTUx''@;'; put 'put ''YzZcdTU3YzhcdTViZWZcdTVjZmJcdTY2NTlcdTZhM2RcdTZkNWFcdTZlOTZcdTZmZWNcdTcxMGNcdTc1NmZcdTdhZTNcdTg4MjJcdTkwMjFcdTkwNzVcdTk2Y2JcdTk5ZmZcdTgzMDFcdTRlMmRcdTRlZjJcdTg4NDZcdTkxY2RcdTUzN2RcdTZhZGJcdTY5NmJcdTZjNDFcdTg0N2FcdTU4OWVc''@;'; put 'put ''dTYxOGVcdTY2ZmVcdTYyZWZcdTcwZGRcdTc1MTFcdTc1YzdcdTdlNTJcdTg0YjhcdThiNDlcdThkMDhcdTRlNGJcdTUzZWFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQxXVtFXV09NjE2''@;'; put 'put ''OTYrRSxMWzYxNjk2K0VdPUJbMjQxXVtFXSk7Zm9yKEJbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU1NGFiXHU1NzMwXHU1NzQwXHU1ZmQ3XHU2MzAxXHU2MzA3XHU2NDZmXHU2NTJmXHU2NWU4XHU2NjdhXHU2NzlkXHU2N2IzXHU2YjYyXHU2YzYwXHU2YzlhXHU2ZjJjXHU3N2U1XHU3ODI1XHU3OTQ5XHU3OTU3XHU3ZDE5XHU4MGEyXHU4MTAyXHU4MWYzXHU4Mjlk''@;'; put 'put ''XHU4MmI3XHU4NzE4XHU4YThjXHVmOWZjXHU4ZDA0XHU4ZGJlXHU5MDcyXHU3NmY0XHU3YTE5XHU3YTM3XHU3ZTU0XHU4MDc3XHU1NTA3XHU1NWQ0XHU1ODc1XHU2MzJmXHU2NDIyXHU2NjQ5XHU2NjRiXHU2ODZkXHU2OTliXHU2Yjg0XHU2ZDI1XHU2ZWIxXHU3M2NkXHU3NDY4XHU3NGExXHU3''@;'; put 'put ''NTViXHU3NWI5XHU3NmUxXHU3NzFlXHU3NzhiXHU3OWU2XHU3ZTA5XHU3ZTFkXHU4MWZiXHU4NTJmXHU4ODk3XHU4YTNhXHU4Y2QxXHU4ZWViXHU4ZmIwXHU5MDMyXHU5M2FkXHU5NjYzXHU5NjczXHU5NzA3XHU0Zjg0XHU1M2YxXHU1OWVhXHU1YWM5XHU1ZTE5XHU2ODRlXHU3NGM2XHU3NWJl''@;'; put 'put ''XHU3OWU5XHU3YTkyXHU4MWEzXHU4NmVkXHU4Y2VhXHU4ZGNjXHU4ZmVkXHU2NTlmXHU2NzE1XHVmOWZkXHU1N2Y3XHU2ZjU3XHU3ZGRkXHU4ZjJmXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtC''@;'; put 'put ''WzI0Ml1bRV1dPTYxOTUyK0UsTFs2MTk1MitFXT1CWzI0Ml1bRV0pO2ZvcihCWzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTNmNlx1OTZjNlx1NWZiNVx1NjFmMlx1NmY4NFx1NGUxNFx1NGY5OFx1NTAxZlx1NTNjOVx1NTVkZlx1NWQ2Zlx1NWRlZVx1NmIyMVx1NmI2NFx1NzhjYlx1N2I5YVx1ZjlmZVx1OGU0OVx1OGVjYVx1OTA2ZVx1NjM0OVx1NjQzZVx1Nzc0''@;'; put 'put ''MFx1N2E4NFx1OTMyZlx1OTQ3Zlx1OWY2YVx1NjRiMFx1NmZhZlx1NzFlNlx1NzRhOFx1NzRkYVx1N2FjNFx1N2MxMlx1N2U4Mlx1N2NiMlx1N2U5OFx1OGI5YVx1OGQwYVx1OTQ3ZFx1OTkxMFx1OTk0Y1x1NTIzOVx1NWJkZlx1NjRlNlx1NjcyZFx1N2QyZVx1NTBlZFx1NTNjM1x1NTg3OVx1''@;'; put 'put ''NjE1OFx1NjE1OVx1NjFmYVx1NjVhY1x1N2FkOVx1OGI5Mlx1OGI5Nlx1NTAwOVx1NTAyMVx1NTI3NVx1NTUzMVx1NWEzY1x1NWVlMFx1NWY3MFx1NjEzNFx1NjU1ZVx1NjYwY1x1NjYzNlx1NjZhMlx1NjljZFx1NmVjNFx1NmYzMlx1NzMxNlx1NzYyMVx1N2E5M1x1ODEzOVx1ODI1OVx1ODNk''@;'; put 'put ''Nlx1ODRiY1x1NTBiNVx1NTdmMFx1NWJjMFx1NWJlOFx1NWY2OVx1NjNhMVx1NzgyNlx1N2RiNVx1ODNkY1x1ODUyMVx1OTFjN1x1OTFmNVx1NTE4YVx1NjdmNVx1N2I1Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQzXVtFXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYoZ2VbQlsyNDNdW0VdXT02MjIwOCtFLExbNjIyMDgrRV09QlsyNDNdW0VdKTtmb3IoQlsyNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThjYWNcdTUxYzRcdTU5YmJcdTYwYmRcdTg2NTVcdTUwMWNcdWY5ZmZcdTUyNTRcdTVjM2FcdTYxN2RcdTYyMWFcdTYyZDNcdTY0ZjJcdTY1YTVcdTZlY2NcdTc2MjBcdTgxMGFcdThlNjBcdTk2NWZcdTk2YmJcdTRl''@;'; put 'put ''ZGZcdTUzNDNcdTU1OThcdTU5MjlcdTVkZGRcdTY0YzVcdTZjYzlcdTZkZmFcdTczOTRcdTdhN2ZcdTgyMWJcdTg1YTZcdThjZTRcdThlMTBcdTkwNzdcdTkxZTdcdTk1ZTFcdTk2MjFcdTk3YzZcdTUxZjhcdTU0ZjJcdTU1ODZcdTVmYjlcdTY0YTRcdTZmODhcdTdkYjRcdThmMWZcdThmNGRc''@;'; put 'put ''dTk0MzVcdTUwYzlcdTVjMTZcdTZjYmVcdTZkZmJcdTc1MWJcdTc3YmJcdTdjM2RcdTdjNjRcdThhNzlcdThhYzJcdTU4MWVcdTU5YmVcdTVlMTZcdTYzNzdcdTcyNTJcdTc1OGFcdTc3NmJcdThhZGNcdThjYmNcdThmMTJcdTVlZjNcdTY2NzRcdTZkZjhcdTgwN2RcdTgzYzFcdThhY2JcdTk3''@;'; put 'put ''NTFcdTliZDZcdWZhMDBcdTUyNDNcdTY2ZmZcdTZkOTVcdTZlZWZcdTdkZTBcdThhZTZcdTkwMmVcdTkwNWVcdTlhZDRcdTUyMWRcdTUyN2ZcdTU0ZThcdTYxOTRcdTYyODRcdTYyZGJcdTY4YTJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0''@;'; put 'put ''NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ0XVtFXV09NjI0NjQrRSxMWzYyNDY0K0VdPUJbMjQ0XVtFXSk7Zm9yKEJbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTEyXHU2OTVhXHU2YTM1XHU3MDkyXHU3MTI2XHU3ODVkXHU3OTAxXHU3OTBlXHU3OWQyXHU3YTBkXHU4MDk2XHU4Mjc4XHU4MmQ1XHU4MzQ5XHU4NTQ5XHU4YzgyXHU4ZDg1XHU5MTYyXHU5''@;'; put 'put ''MThiXHU5MWFlXHU0ZmMzXHU1NmQxXHU3MWVkXHU3N2Q3XHU4NzAwXHU4OWY4XHU1YmY4XHU1ZmQ2XHU2NzUxXHU5MGE4XHU1M2UyXHU1ODVhXHU1YmY1XHU2MGE0XHU2MTgxXHU2NDYwXHU3ZTNkXHU4MDcwXHU4NTI1XHU5MjgzXHU2NGFlXHU1MGFjXHU1ZDE0XHU2NzAwXHU1ODljXHU2MmJk''@;'; put 'put ''XHU2M2E4XHU2OTBlXHU2OTc4XHU2YTFlXHU2ZTZiXHU3NmJhXHU3OWNiXHU4MmJiXHU4NDI5XHU4YWNmXHU4ZGE4XHU4ZmZkXHU5MTEyXHU5MTRiXHU5MTljXHU5MzEwXHU5MzE4XHU5MzlhXHU5NmRiXHU5YTM2XHU5YzBkXHU0ZTExXHU3NTVjXHU3OTVkXHU3YWZhXHU3YjUxXHU3YmM5XHU3''@;'; put 'put ''ZTJlXHU4NGM0XHU4ZTU5XHU4ZTc0XHU4ZWY4XHU5MDEwXHU2NjI1XHU2OTNmXHU3NDQzXHU1MWZhXHU2NzJlXHU5ZWRjXHU1MTQ1XHU1ZmUwXHU2Yzk2XHU4N2YyXHU4ODVkXHU4ODc3XHU2MGI0XHU4MWI1XHU4NDAzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ1XS5sZW5ndGg7KytF''@;'; put 'put ''KTY1NTMzIT09QlsyNDVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0NV1bRV1dPTYyNzIwK0UsTFs2MjcyMCtFXT1CWzI0NV1bRV0pO2ZvcihCWzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGQwNVx1NTNkNlx1NTQzOVx1NTYzNFx1NWEzNlx1NWMzMVx1NzA4YVx1N2ZlMFx1ODA1YVx1ODEwNlx1ODFlZFx1OGRhM1x1OTE4OVx1OWE1Zlx1OWRmMlx1NTA3NFx1''@;'; put 'put ''NGVjNFx1NTNhMFx1NjBmYlx1NmUyY1x1NWM2NFx1NGY4OFx1NTAyNFx1NTVlNFx1NWNkOVx1NWU1Zlx1NjA2NVx1Njg5NFx1NmNiYlx1NmRjNFx1NzFiZVx1NzVkNFx1NzVmNFx1NzY2MVx1N2ExYVx1N2E0OVx1N2RjN1x1N2RmYlx1N2Y2ZVx1ODFmNFx1ODZhOVx1OGYxY1x1OTZjOVx1OTli''@;'; put 'put ''M1x1OWY1Mlx1NTI0N1x1NTJjNVx1OThlZFx1ODlhYVx1NGUwM1x1NjdkMlx1NmYwNlx1NGZiNVx1NWJlMlx1Njc5NVx1NmM4OFx1NmQ3OFx1NzQxYlx1NzgyN1x1OTFkZFx1OTM3Y1x1ODdjNFx1NzllNFx1N2EzMVx1NWZlYlx1NGVkNlx1NTRhNFx1NTUzZVx1NThhZVx1NTlhNVx1NjBmMFx1''@;'; put 'put ''NjI1M1x1NjJkNlx1NjczNlx1Njk1NVx1ODIzNVx1OTY0MFx1OTliMVx1OTlkZFx1NTAyY1x1NTM1M1x1NTU0NFx1NTc3Y1x1ZmEwMVx1NjI1OFx1ZmEwMlx1NjRlMlx1NjY2Ylx1NjdkZFx1NmZjMVx1NmZlZlx1NzQyMlx1NzQzOFx1OGExN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0''@;'; put 'put ''Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDZdW0VdXT02Mjk3NitFLExbNjI5NzYrRV09QlsyNDZdW0VdKTtmb3IoQlsyNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0MzhcdTU0NTFcdTU2MDZcdTU3NjZcdTVmNDhcdTYxOWFcdTZiNGVcdTcwNThcdTcwYWRcdTdkYmJcdThhOTVcdTU5NmFcdTgxMmJcdTYzYTJc''@;'; put 'put ''dTc3MDhcdTgwM2RcdThjYWFcdTU4NTRcdTY0MmRcdTY5YmJcdTViOTVcdTVlMTFcdTZlNmZcdWZhMDNcdTg1NjlcdTUxNGNcdTUzZjBcdTU5MmFcdTYwMjBcdTYxNGJcdTZiODZcdTZjNzBcdTZjZjBcdTdiMWVcdTgwY2VcdTgyZDRcdThkYzZcdTkwYjBcdTk4YjFcdWZhMDRcdTY0YzdcdTZm''@;'; put 'put ''YTRcdTY0OTFcdTY1MDRcdTUxNGVcdTU0MTBcdTU3MWZcdThhMGVcdTYxNWZcdTY4NzZcdWZhMDVcdTc1ZGJcdTdiNTJcdTdkNzFcdTkwMWFcdTU4MDZcdTY5Y2NcdTgxN2ZcdTg5MmFcdTkwMDBcdTk4MzlcdTUwNzhcdTU5NTdcdTU5YWNcdTYyOTVcdTkwMGZcdTliMmFcdTYxNWRcdTcyNzlc''@;'; put 'put ''dTk1ZDZcdTU3NjFcdTVhNDZcdTVkZjRcdTYyOGFcdTY0YWRcdTY0ZmFcdTY3NzdcdTZjZTJcdTZkM2VcdTcyMmNcdTc0MzZcdTc4MzRcdTdmNzdcdTgyYWRcdThkZGJcdTk4MTdcdTUyMjRcdTU3NDJcdTY3N2ZcdTcyNDhcdTc0ZTNcdThjYTlcdThmYTZcdTkyMTFcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxFPTA7RSE9QlsyNDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ3XVtFXV09NjMyMzIrRSxMWzYzMjMyK0VdPUJbMjQ3XVtFXSk7Zm9yKEJbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjJhXHU1MTZiXHU1M2VkXHU2MzRjXHU0ZjY5XHU1NTA0XHU2MDk2XHU2NTU3XHU2YzliXHU2ZDdmXHU3MjRjXHU3MmZk''@;'; put 'put ''XHU3YTE3XHU4OTg3XHU4YzlkXHU1ZjZkXHU2ZjhlXHU3MGY5XHU4MWE4XHU2MTBlXHU0ZmJmXHU1MDRmXHU2MjQxXHU3MjQ3XHU3YmM3XHU3ZGU4XHU3ZmU5XHU5MDRkXHU5N2FkXHU5YTE5XHU4Y2I2XHU1NzZhXHU1ZTczXHU2N2IwXHU4NDBkXHU4YTU1XHU1NDIwXHU1YjE2XHU1ZTYzXHU1''@;'; put 'put ''ZWUyXHU1ZjBhXHU2NTgzXHU4MGJhXHU4NTNkXHU5NTg5XHU5NjViXHU0ZjQ4XHU1MzA1XHU1MzBkXHU1MzBmXHU1NDg2XHU1NGZhXHU1NzAzXHU1ZTAzXHU2MDE2XHU2MjliXHU2MmIxXHU2MzU1XHVmYTA2XHU2Y2UxXHU2ZDY2XHU3NWIxXHU3ODMyXHU4MGRlXHU4MTJmXHU4MmRlXHU4NDYx''@;'; put 'put ''XHU4NGIyXHU4ODhkXHU4OTEyXHU5MDBiXHU5MmVhXHU5OGZkXHU5YjkxXHU1ZTQ1XHU2NmI0XHU2NmRkXHU3MDExXHU3MjA2XHVmYTA3XHU0ZmY1XHU1MjdkXHU1ZjZhXHU2MTUzXHU2NzUzXHU2YTE5XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4Yzc5XHU5OGM3XHU5OGM0XHU5YTQzXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0OF1bRV1dPTYzNDg4K0UsTFs2MzQ4OCtFXT1CWzI0OF1bRV0pO2ZvcihCWzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRjMVx1N2ExZlx1Njk1M1x1OGFmN1x1OGM0YVx1OThhOFx1OTlhZVx1NWY3Y1x1NjJhYlx1NzVi''@;'; put 'put ''Mlx1NzZhZVx1ODhhYlx1OTA3Zlx1OTY0Mlx1NTMzOVx1NWYzY1x1NWZjNVx1NmNjY1x1NzNjY1x1NzU2Mlx1NzU4Ylx1N2I0Nlx1ODJmZVx1OTk5ZFx1NGU0Zlx1OTAzY1x1NGUwYlx1NGY1NVx1NTNhNlx1NTkwZlx1NWVjOFx1NjYzMFx1NmNiM1x1NzQ1NVx1ODM3N1x1ODc2Nlx1OGNjMFx1''@;'; put 'put ''OTA1MFx1OTcxZVx1OWMxNVx1NThkMVx1NWI3OFx1ODY1MFx1OGIxNFx1OWRiNFx1NWJkMlx1NjA2OFx1NjA4ZFx1NjVmMVx1NmM1N1x1NmYyMlx1NmZhM1x1NzAxYVx1N2Y1NVx1N2ZmMFx1OTU5MVx1OTU5Mlx1OTY1MFx1OTdkM1x1NTI3Mlx1OGY0NFx1NTFmZFx1NTQyYlx1NTRiOFx1NTU2''@;'; put 'put ''M1x1NTU4YVx1NmFiYlx1NmRiNVx1N2RkOFx1ODI2Nlx1OTI5Y1x1OTY3N1x1OWU3OVx1NTQwOFx1NTRjOFx1NzZkMlx1ODZlNFx1OTVhNFx1OTVkNFx1OTY1Y1x1NGVhMlx1NGYwOVx1NTllZVx1NWFlNlx1NWRmN1x1NjA1Mlx1NjI5N1x1Njc2ZFx1Njg0MVx1NmM4Nlx1NmUyZlx1N2YzOFx1''@;'; put 'put ''ODA5Ylx1ODIyYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDldW0VdXT02Mzc0NCtFLExbNjM3NDQrRV09QlsyNDldW0VdKTtmb3IoQlsyNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZhMDhcdWZhMDlcdTk4MDVcdTRlYTVcdTUwNTVcdTU0YjNcdTU3OTNcdTU5''@;'; put 'put ''NWFcdTViNjlcdTViYjNcdTYxYzhcdTY5NzdcdTZkNzdcdTcwMjNcdTg3ZjlcdTg5ZTNcdThhNzJcdThhZTdcdTkwODJcdTk5ZWRcdTlhYjhcdTUyYmVcdTY4MzhcdTUwMTZcdTVlNzhcdTY3NGZcdTgzNDdcdTg4NGNcdTRlYWJcdTU0MTFcdTU2YWVcdTczZTZcdTkxMTVcdTk3ZmZcdTk5MDlc''@;'; put 'put ''dTk5NTdcdTk5OTlcdTU2NTNcdTU4OWZcdTg2NWJcdThhMzFcdTYxYjJcdTZhZjZcdTczN2JcdThlZDJcdTZiNDdcdTk2YWFcdTlhNTdcdTU5NTVcdTcyMDBcdThkNmJcdTk3NjlcdTRmZDRcdTVjZjRcdTVmMjZcdTYxZjhcdTY2NWJcdTZjZWJcdTcwYWJcdTczODRcdTczYjlcdTczZmVcdTc3''@;'; put 'put ''MjlcdTc3NGRcdTdkNDNcdTdkNjJcdTdlMjNcdTgyMzdcdTg4NTJcdWZhMGFcdThjZTJcdTkyNDlcdTk4NmZcdTViNTFcdTdhNzRcdTg4NDBcdTk4MDFcdTVhY2NcdTRmZTBcdTUzNTRcdTU5M2VcdTVjZmRcdTYzM2VcdTZkNzlcdTcyZjlcdTgxMDVcdTgxMDdcdTgzYTJcdTkyY2ZcdTk4MzBc''@;'; put 'put ''dTRlYThcdTUxNDRcdTUyMTFcdTU3OGJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjUwXVtFXV09NjRlMytFLExbNjRlMytFXT1CWzI1MF1bRV0pO2ZvcihCWzI1MV09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWY2Mlx1NmNjMlx1NmVjZVx1NzAwNVx1NzA1MFx1NzBh''@;'; put 'put ''Zlx1NzE5Mlx1NzNlOVx1NzQ2OVx1ODM0YVx1ODdhMlx1ODg2MVx1OTAwOFx1OTBhMlx1OTNhM1x1OTlhOFx1NTE2ZVx1NWY1N1x1NjBlMFx1NjE2N1x1NjZiM1x1ODU1OVx1OGU0YVx1OTFhZlx1OTc4Ylx1NGU0ZVx1NGU5Mlx1NTQ3Y1x1NThkNVx1NThmYVx1NTk3ZFx1NWNiNVx1NWYyN1x1''@;'; put 'put ''NjIzNlx1NjI0OFx1NjYwYVx1NjY2N1x1NmJlYlx1NmQ2OVx1NmRjZlx1NmU1Nlx1NmVmOFx1NmY5NFx1NmZlMFx1NmZlOVx1NzA1ZFx1NzJkMFx1NzQyNVx1NzQ1YVx1NzRlMFx1NzY5M1x1Nzk1Y1x1N2NjYVx1N2UxZVx1ODBlMVx1ODJhNlx1ODQ2Ylx1ODRiZlx1ODY0ZVx1ODY1Zlx1ODc3''@;'; put 'put ''NFx1OGI3N1x1OGM2YVx1OTNhY1x1OTgwMFx1OTg2NVx1NjBkMVx1NjIxNlx1OTE3N1x1NWE1YVx1NjYwZlx1NmRmN1x1NmUzZVx1NzQzZlx1OWI0Mlx1NWZmZFx1NjBkYVx1N2IwZlx1NTRjNFx1NWYxOFx1NmM1ZVx1NmNkM1x1NmQyYVx1NzBkOFx1N2QwNVx1ODY3OVx1OGEwY1x1OWQzYlx1''@;'; put 'put ''NTMxNlx1NTQ4Y1x1NWIwNVx1NmEzYVx1NzA2Ylx1NzU3NVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNTFdW0VdXT02NDI1NitFLExbNjQyNTYrRV09QlsyNTFdW0VdKTtmb3IoQlsyNTJd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5OGRcdTc5YmVcdTgyYjFcdTgz''@;'; put 'put ''ZWZcdThhNzFcdThiNDFcdThjYThcdTk3NzRcdWZhMGJcdTY0ZjRcdTY1MmJcdTc4YmFcdTc4YmJcdTdhNmJcdTRlMzhcdTU1OWFcdTU5NTBcdTViYTZcdTVlN2JcdTYwYTNcdTYzZGJcdTZiNjFcdTY2NjVcdTY4NTNcdTZlMTlcdTcxNjVcdTc0YjBcdTdkMDhcdTkwODRcdTlhNjlcdTljMjVc''@;'; put 'put ''dTZkM2JcdTZlZDFcdTczM2VcdThjNDFcdTk1Y2FcdTUxZjBcdTVlNGNcdTVmYThcdTYwNGRcdTYwZjZcdTYxMzBcdTYxNGNcdTY2NDNcdTY2NDRcdTY5YTVcdTZjYzFcdTZlNWZcdTZlYzlcdTZmNjJcdTcxNGNcdTc0OWNcdTc2ODdcdTdiYzFcdTdjMjdcdTgzNTJcdTg3NTdcdTkwNTFcdTk2''@;'; put 'put ''OGRcdTllYzNcdTUzMmZcdTU2ZGVcdTVlZmJcdTVmOGFcdTYwNjJcdTYwOTRcdTYxZjdcdTY2NjZcdTY3MDNcdTZhOWNcdTZkZWVcdTZmYWVcdTcwNzBcdTczNmFcdTdlNmFcdTgxYmVcdTgzMzRcdTg2ZDRcdThhYThcdThjYzRcdTUyODNcdTczNzJcdTViOTZcdTZhNmJcdTk0MDRcdTU0ZWVc''@;'; put 'put ''dTU2ODZcdTViNWRcdTY1NDhcdTY1ODVcdTY2YzlcdTY4OWZcdTZkOGRcdTZkYzZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjUyXVtFXV09NjQ1MTIrRSxMWzY0NTEyK0VdPUJbMjUyXVtF''@;'; put 'put ''XSk7Zm9yKEJbMjUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MjNiXHU4''@;'; put 'put ''MGI0XHU5MTc1XHU5YTRkXHU0ZmFmXHU1MDE5XHU1MzlhXHU1NDBlXHU1NDNjXHU1NTg5XHU1NWM1XHU1ZTNmXHU1ZjhjXHU2NzNkXHU3MTY2XHU3M2RkXHU5MDA1XHU1MmRiXHU1MmYzXHU1ODY0XHU1OGNlXHU3MTA0XHU3MThmXHU3MWZiXHU4NWIwXHU4YTEzXHU2Njg4XHU4NWE4XHU1NWE3''@;'; put 'put ''XHU2Njg0XHU3MTRhXHU4NDMxXHU1MzQ5XHU1NTk5XHU2YmMxXHU1ZjU5XHU1ZmJkXHU2M2VlXHU2Njg5XHU3MTQ3XHU4YWYxXHU4ZjFkXHU5ZWJlXHU0ZjExXHU2NDNhXHU3MGNiXHU3NTY2XHU4NjY3XHU2MDY0XHU4YjRlXHU5ZGY4XHU1MTQ3XHU1MWY2XHU1MzA4XHU2ZDM2XHU4MGY4XHU5''@;'; put 'put ''ZWQxXHU2NjE1XHU2YjIzXHU3MDk4XHU3NWQ1XHU1NDAzXHU1Yzc5XHU3ZDA3XHU4YTE2XHU2YjIwXHU2YjNkXHU2YjQ2XHU1NDM4XHU2MDcwXHU2ZDNkXHU3ZmQ1XHU4MjA4XHU1MGQ2XHU1MWRlXHU1NTljXHU1NjZiXHU1NmNkXHU1OWVjXHU1YjA5XHU1ZTBjXHU2MTk5XHU2MTk4XHU2MjMx''@;'; put 'put ''XHU2NjVlXHU2NmU2XHU3MTk5XHU3MWI5XHU3MWJhXHU3MmE3XHU3OWE3XHU3YTAwXHU3ZmIyXHU4YTcwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjUzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNTNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI1M11bRV1dPTY0NzY4K0UsTFs2NDc2''@;'; put 'put ''OCtFXT1CWzI1M11bRV0pO3JldHVybntlbmM6Z2UsZGVjOkx9fSgpLEplWzk1MF09ZnVuY3Rpb24oKXt2YXIgRSxMPVtdLGdlPXt9LEI9W107Zm9yKEJbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1''@;'; put 'put ''XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMF1bRV1dPTAr''@;'; put 'put ''RSxMWzArRV09QlswXVtFXSk7Zm9yKEJbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHVmZjBjXHUzMDAxXHUzMDAyXHVmZjBlXHUyMDI3XHVmZjFiXHVmZjFhXHVmZjFmXHVmZjAxXHVmZTMwXHUyMDI2XHUyMDI1XHVm''@;'; put 'put ''ZTUwXHVmZTUxXHVmZTUyXHhiN1x1ZmU1NFx1ZmU1NVx1ZmU1Nlx1ZmU1N1x1ZmY1Y1x1MjAxM1x1ZmUzMVx1MjAxNFx1ZmUzM1x1MjU3NFx1ZmUzNFx1ZmU0Zlx1ZmYwOFx1ZmYwOVx1ZmUzNVx1ZmUzNlx1ZmY1Ylx1ZmY1ZFx1ZmUzN1x1ZmUzOFx1MzAxNFx1MzAxNVx1ZmUzOVx1ZmUzYVx1''@;'; put 'put ''MzAxMFx1MzAxMVx1ZmUzYlx1ZmUzY1x1MzAwYVx1MzAwYlx1ZmUzZFx1ZmUzZVx1MzAwOFx1MzAwOVx1ZmUzZlx1ZmU0MFx1MzAwY1x1MzAwZFx1ZmU0MVx1ZmU0Mlx1MzAwZVx1MzAwZlx1ZmU0M1x1ZmU0NFx1ZmU1OVx1ZmU1YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmU1Ylx1ZmU1Y1x1ZmU1ZFx1ZmU1ZVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxZFx1MzAxZVx1MjAzNVx1MjAzMlx1ZmYwM1x1ZmYwNlx1ZmYwYVx1MjAzYlx4YTdcdTMwMDNcdTI1Y2JcdTI1Y2ZcdTI1YjNcdTI1YjJcdTI1Y2VcdTI2MDZcdTI2MDVcdTI1YzdcdTI1YzZc''@;'; put 'put ''dTI1YTFcdTI1YTBcdTI1YmRcdTI1YmNcdTMyYTNcdTIxMDVceGFmXHVmZmUzXHVmZjNmXHUwMmNkXHVmZTQ5XHVmZTRhXHVmZTRkXHVmZTRlXHVmZTRiXHVmZTRjXHVmZTVmXHVmZTYwXHVmZTYxXHVmZjBiXHVmZjBkXHhkN1x4ZjdceGIxXHUyMjFhXHVmZjFjXHVmZjFlXHVmZjFkXHUyMjY2''@;'; put 'put ''XHUyMjY3XHUyMjYwXHUyMjFlXHUyMjUyXHUyMjYxXHVmZTYyXHVmZTYzXHVmZTY0XHVmZTY1XHVmZTY2XHVmZjVlXHUyMjI5XHUyMjJhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUzM2QyXHUzM2QxXHUyMjJiXHUyMjJlXHUyMjM1XHUyMjM0XHUyNjQwXHUyNjQyXHUyMjk1XHUyMjk5XHUy''@;'; put 'put ''MTkxXHUyMTkzXHUyMTkwXHUyMTkyXHUyMTk2XHUyMTk3XHUyMTk5XHUyMTk4XHUyMjI1XHUyMjIzXHVmZjBmXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2MV1bRV1dPTQxMjE2K0UsTFs0''@;'; put 'put ''MTIxNitFXT1CWzE2MV1bRV0pO2ZvcihCWzE2Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmYzY1x1MjIxNVx1ZmU2OFx1ZmYwNFx1ZmZlNVx1MzAxMlx1ZmZlMFx1ZmZlMVx1ZmYwNVx1ZmYyMFx1MjEwM1x1MjEwOVx1ZmU2OVx1''@;'; put 'put ''ZmU2YVx1ZmU2Ylx1MzNkNVx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzNjZVx1MzNhMVx1MzM4ZVx1MzM4Zlx1MzNjNFx4YjBcdTUxNTlcdTUxNWJcdTUxNWVcdTUxNWRcdTUxNjFcdTUxNjNcdTU1ZTdcdTc0ZTlcdTdjY2VcdTI1ODFcdTI1ODJcdTI1ODNcdTI1ODRcdTI1ODVcdTI1ODZcdTI1ODdc''@;'; put 'put ''dTI1ODhcdTI1OGZcdTI1OGVcdTI1OGRcdTI1OGNcdTI1OGJcdTI1OGFcdTI1ODlcdTI1M2NcdTI1MzRcdTI1MmNcdTI1MjRcdTI1MWNcdTI1OTRcdTI1MDBcdTI1MDJcdTI1OTVcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1NmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTI1NmVcdTI1NzBcdTI1NmZcdTI1NTBcdTI1NWVcdTI1NmFcdTI1NjFcdTI1ZTJcdTI1ZTNcdTI1ZTVcdTI1ZTRcdTI1NzFcdTI1NzJcdTI1NzNcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdTIxNjBcdTIxNjFcdTIx''@;'; put 'put ''NjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdTMwMjFcdTMwMjJcdTMwMjNcdTMwMjRcdTMwMjVcdTMwMjZcdTMwMjdcdTMwMjhcdTMwMjlcdTUzNDFcdTUzNDRcdTUzNDVcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhc''@;'; put 'put ''dWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZm''@;'; put 'put ''NGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTYyXVtFXV09''@;'; put 'put ''NDE0NzIrRSxMWzQxNDcyK0VdPUJbMTYyXVtFXSk7Zm9yKEJbMTYzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUw''@;'; put 'put ''Mzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2Ji''@;'; put 'put ''XHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUzMTA1XHUzMTA2XHUzMTA3XHUzMTA4XHUzMTA5XHUzMTBhXHUzMTBiXHUzMTBjXHUzMTBkXHUzMTBlXHUzMTBmXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHUzMTEwXHUzMTExXHUzMTEyXHUzMTEzXHUzMTE0XHUzMTE1XHUzMTE2XHUzMTE3XHUzMTE4XHUzMTE5XHUzMTFhXHUzMTFiXHUzMTFjXHUzMTFkXHUzMTFlXHUzMTFmXHUzMTIwXHUzMTIxXHUzMTIyXHUzMTIzXHUzMTI0XHUzMTI1XHUzMTI2XHUzMTI3XHUz''@;'; put 'put ''MTI4XHUzMTI5XHUwMmQ5XHUwMmM5XHUwMmNhXHUwMmM3XHUwMmNiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMGFjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjNdW0VdLmNoYXJDb2RlQXQoMCkmJihn''@;'; put 'put ''ZVtCWzE2M11bRV1dPTQxNzI4K0UsTFs0MTcyOCtFXT1CWzE2M11bRV0pO2ZvcihCWzE2NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGUwMFx1NGU1OVx1NGUwMVx1NGUwM1x1NGU0M1x1NGU1ZFx1NGU4Nlx1NGU4Y1x1NGViYVx1''@;'; put 'put ''NTEzZlx1NTE2NVx1NTE2Ylx1NTFlMFx1NTIwMFx1NTIwMVx1NTI5Ylx1NTMxNVx1NTM0MVx1NTM1Y1x1NTNjOFx1NGUwOVx1NGUwYlx1NGUwOFx1NGUwYVx1NGUyYlx1NGUzOFx1NTFlMVx1NGU0NVx1NGU0OFx1NGU1Zlx1NGU1ZVx1NGU4ZVx1NGVhMVx1NTE0MFx1NTIwM1x1NTJmYVx1NTM0''@;'; put 'put ''M1x1NTNjOVx1NTNlM1x1NTcxZlx1NThlYlx1NTkxNVx1NTkyN1x1NTk3M1x1NWI1MFx1NWI1MVx1NWI1M1x1NWJmOFx1NWMwZlx1NWMyMlx1NWMzOFx1NWM3MVx1NWRkZFx1NWRlNVx1NWRmMVx1NWRmMlx1NWRmM1x1NWRmZVx1NWU3Mlx1NWVmZVx1NWYwYlx1NWYxM1x1NjI0ZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGUxMVx1NGUxMFx1NGUwZFx1NGUyZFx1NGUzMFx1NGUzOVx1NGU0Ylx1NWMzOVx1NGU4OFx1NGU5MVx1NGU5NVx1NGU5Mlx1NGU5NFx1NGVhMlx1NGVjMVx1NGVjMFx1NGVjM1x1NGVjNlx1NGVjN1x1NGVjZFx1NGVjYVx1NGVjYlx1''@;'; put 'put ''NGVjNFx1NTE0M1x1NTE0MVx1NTE2N1x1NTE2ZFx1NTE2ZVx1NTE2Y1x1NTE5N1x1NTFmNlx1NTIwNlx1NTIwN1x1NTIwOFx1NTJmYlx1NTJmZVx1NTJmZlx1NTMxNlx1NTMzOVx1NTM0OFx1NTM0N1x1NTM0NVx1NTM1ZVx1NTM4NFx1NTNjYlx1NTNjYVx1NTNjZFx1NThlY1x1NTkyOVx1NTky''@;'; put 'put ''Ylx1NTkyYVx1NTkyZFx1NWI1NFx1NWMxMVx1NWMyNFx1NWMzYVx1NWM2Zlx1NWRmNFx1NWU3Ylx1NWVmZlx1NWYxNFx1NWYxNVx1NWZjM1x1NjIwOFx1NjIzNlx1NjI0Ylx1NjI0ZVx1NjUyZlx1NjU4N1x1NjU5N1x1NjVhNFx1NjViOVx1NjVlNVx1NjZmMFx1NjcwOFx1NjcyOFx1NmIyMFx1''@;'; put 'put ''NmI2Mlx1NmI3OVx1NmJjYlx1NmJkNFx1NmJkYlx1NmMwZlx1NmMzNFx1NzA2Ylx1NzIyYVx1NzIzNlx1NzIzYlx1NzI0N1x1NzI1OVx1NzI1Ylx1NzJhY1x1NzM4Ylx1NGUxOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY0XVtFXS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYoZ2VbQlsxNjRdW0VdXT00MTk4NCtFLExbNDE5ODQrRV09QlsxNjRdW0VdKTtmb3IoQlsxNjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMTZcdTRlMTVcdTRlMTRcdTRlMThcdTRlM2JcdTRlNGRcdTRlNGZc''@;'; put 'put ''dTRlNGVcdTRlZTVcdTRlZDhcdTRlZDRcdTRlZDVcdTRlZDZcdTRlZDdcdTRlZTNcdTRlZTRcdTRlZDlcdTRlZGVcdTUxNDVcdTUxNDRcdTUxODlcdTUxOGFcdTUxYWNcdTUxZjlcdTUxZmFcdTUxZjhcdTUyMGFcdTUyYTBcdTUyOWZcdTUzMDVcdTUzMDZcdTUzMTdcdTUzMWRcdTRlZGZcdTUz''@;'; put 'put ''NGFcdTUzNDlcdTUzNjFcdTUzNjBcdTUzNmZcdTUzNmVcdTUzYmJcdTUzZWZcdTUzZTRcdTUzZjNcdTUzZWNcdTUzZWVcdTUzZTlcdTUzZThcdTUzZmNcdTUzZjhcdTUzZjVcdTUzZWJcdTUzZTZcdTUzZWFcdTUzZjJcdTUzZjFcdTUzZjBcdTUzZTVcdTUzZWRcdTUzZmJcdTU2ZGJcdTU2ZGFc''@;'; put 'put ''dTU5MTZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU5MmVcdTU5MzFcdTU5NzRcdTU5NzZcdTViNTVcdTViODNcdTVjM2NcdTVkZThcdTVkZTdcdTVkZTZcdTVlMDJcdTVlMDNcdTVlNzNcdTVlN2NcdTVmMDFcdTVmMThcdTVmMTdcdTVmYzVcdTYyMGFcdTYyNTNc''@;'; put 'put ''dTYyNTRcdTYyNTJcdTYyNTFcdTY1YTVcdTY1ZTZcdTY3MmVcdTY3MmNcdTY3MmFcdTY3MmJcdTY3MmRcdTZiNjNcdTZiY2RcdTZjMTFcdTZjMTBcdTZjMzhcdTZjNDFcdTZjNDBcdTZjM2VcdTcyYWZcdTczODRcdTczODlcdTc0ZGNcdTc0ZTZcdTc1MThcdTc1MWZcdTc1MjhcdTc1MjlcdTc1''@;'; put 'put ''MzBcdTc1MzFcdTc1MzJcdTc1MzNcdTc1OGJcdTc2N2RcdTc2YWVcdTc2YmZcdTc2ZWVcdTc3ZGJcdTc3ZTJcdTc3ZjNcdTc5M2FcdTc5YmVcdTdhNzRcdTdhY2JcdTRlMWVcdTRlMWZcdTRlNTJcdTRlNTNcdTRlNjlcdTRlOTlcdTRlYTRcdTRlYTZcdTRlYTVcdTRlZmZcdTRmMDlcdTRmMTlc''@;'; put 'put ''dTRmMGFcdTRmMTVcdTRmMGRcdTRmMTBcdTRmMTFcdTRmMGZcdTRlZjJcdTRlZjZcdTRlZmJcdTRlZjBcdTRlZjNcdTRlZmRcdTRmMDFcdTRmMGJcdTUxNDlcdTUxNDdcdTUxNDZcdTUxNDhcdTUxNjhcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjVdLmxlbmd0aDsrK0UpNjU1MzMhPT1C''@;'; put 'put ''WzE2NV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY1XVtFXV09NDIyNDArRSxMWzQyMjQwK0VdPUJbMTY1XVtFXSk7Zm9yKEJbMTY2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MTcxXHU1MThkXHU1MWIwXHU1MjE3XHU1MjEx''@;'; put 'put ''XHU1MjEyXHU1MjBlXHU1MjE2XHU1MmEzXHU1MzA4XHU1MzIxXHU1MzIwXHU1MzcwXHU1MzcxXHU1NDA5XHU1NDBmXHU1NDBjXHU1NDBhXHU1NDEwXHU1NDAxXHU1NDBiXHU1NDA0XHU1NDExXHU1NDBkXHU1NDA4XHU1NDAzXHU1NDBlXHU1NDA2XHU1NDEyXHU1NmUwXHU1NmRlXHU1NmRkXHU1''@;'; put 'put ''NzMzXHU1NzMwXHU1NzI4XHU1NzJkXHU1NzJjXHU1NzJmXHU1NzI5XHU1OTE5XHU1OTFhXHU1OTM3XHU1OTM4XHU1OTg0XHU1OTc4XHU1OTgzXHU1OTdkXHU1OTc5XHU1OTgyXHU1OTgxXHU1YjU3XHU1YjU4XHU1Yjg3XHU1Yjg4XHU1Yjg1XHU1Yjg5XHU1YmZhXHU1YzE2XHU1Yzc5XHU1ZGRl''@;'; put 'put ''XHU1ZTA2XHU1ZTc2XHU1ZTc0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZjBmXHU1ZjFiXHU1ZmQ5XHU1ZmQ2XHU2MjBlXHU2MjBjXHU2MjBkXHU2MjEwXHU2MjYzXHU2MjViXHU2MjU4XHU2NTM2XHU2NWU5XHU2NWU4XHU2NWVjXHU2NWVkXHU2NmYyXHU2NmYz''@;'; put 'put ''XHU2NzA5XHU2NzNkXHU2NzM0XHU2NzMxXHU2NzM1XHU2YjIxXHU2YjY0XHU2YjdiXHU2YzE2XHU2YzVkXHU2YzU3XHU2YzU5XHU2YzVmXHU2YzYwXHU2YzUwXHU2YzU1XHU2YzYxXHU2YzViXHU2YzRkXHU2YzRlXHU3MDcwXHU3MjVmXHU3MjVkXHU3NjdlXHU3YWY5XHU3YzczXHU3Y2Y4XHU3''@;'; put 'put ''ZjM2XHU3ZjhhXHU3ZmJkXHU4MDAxXHU4MDAzXHU4MDBjXHU4MDEyXHU4MDMzXHU4MDdmXHU4MDg5XHU4MDhiXHU4MDhjXHU4MWUzXHU4MWVhXHU4MWYzXHU4MWZjXHU4MjBjXHU4MjFiXHU4MjFmXHU4MjZlXHU4MjcyXHU4MjdlXHU4NjZiXHU4ODQwXHU4ODRjXHU4ODYzXHU4OTdmXHU5NjIx''@;'; put 'put ''XHU0ZTMyXHU0ZWE4XHU0ZjRkXHU0ZjRmXHU0ZjQ3XHU0ZjU3XHU0ZjVlXHU0ZjM0XHU0ZjViXHU0ZjU1XHU0ZjMwXHU0ZjUwXHU0ZjUxXHU0ZjNkXHU0ZjNhXHU0ZjM4XHU0ZjQzXHU0ZjU0XHU0ZjNjXHU0ZjQ2XHU0ZjYzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY2XS5sZW5ndGg7''@;'; put 'put ''KytFKTY1NTMzIT09QlsxNjZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2Nl1bRV1dPTQyNDk2K0UsTFs0MjQ5NitFXT1CWzE2Nl1bRV0pO2ZvcihCWzE2N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGY1Y1x1NGY2MFx1NGYy''@;'; put 'put ''Zlx1NGY0ZVx1NGYzNlx1NGY1OVx1NGY1ZFx1NGY0OFx1NGY1YVx1NTE0Y1x1NTE0Ylx1NTE0ZFx1NTE3NVx1NTFiNlx1NTFiN1x1NTIyNVx1NTIyNFx1NTIyOVx1NTIyYVx1NTIyOFx1NTJhYlx1NTJhOVx1NTJhYVx1NTJhY1x1NTMyM1x1NTM3M1x1NTM3NVx1NTQxZFx1NTQyZFx1NTQxZVx1''@;'; put 'put ''NTQzZVx1NTQyNlx1NTQ0ZVx1NTQyN1x1NTQ0Nlx1NTQ0M1x1NTQzM1x1NTQ0OFx1NTQ0Mlx1NTQxYlx1NTQyOVx1NTQ0YVx1NTQzOVx1NTQzYlx1NTQzOFx1NTQyZVx1NTQzNVx1NTQzNlx1NTQyMFx1NTQzY1x1NTQ0MFx1NTQzMVx1NTQyYlx1NTQxZlx1NTQyY1x1NTZlYVx1NTZmMFx1NTZl''@;'; put 'put ''NFx1NTZlYlx1NTc0YVx1NTc1MVx1NTc0MFx1NTc0ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTc0N1x1NTc0ZVx1NTczZVx1NTc1MFx1NTc0Zlx1NTczYlx1NThlZlx1NTkzZVx1NTk5ZFx1NTk5Mlx1NTlhOFx1NTk5ZVx1NTlhM1x1NTk5OVx1NTk5Nlx1NTk4''@;'; put 'put ''ZFx1NTlhNFx1NTk5M1x1NTk4YVx1NTlhNVx1NWI1ZFx1NWI1Y1x1NWI1YVx1NWI1Ylx1NWI4Y1x1NWI4Ylx1NWI4Zlx1NWMyY1x1NWM0MFx1NWM0MVx1NWMzZlx1NWMzZVx1NWM5MFx1NWM5MVx1NWM5NFx1NWM4Y1x1NWRlYlx1NWUwY1x1NWU4Zlx1NWU4N1x1NWU4YVx1NWVmN1x1NWYwNFx1''@;'; put 'put ''NWYxZlx1NWY2NFx1NWY2Mlx1NWY3N1x1NWY3OVx1NWZkOFx1NWZjY1x1NWZkN1x1NWZjZFx1NWZmMVx1NWZlYlx1NWZmOFx1NWZlYVx1NjIxMlx1NjIxMVx1NjI4NFx1NjI5N1x1NjI5Nlx1NjI4MFx1NjI3Nlx1NjI4OVx1NjI2ZFx1NjI4YVx1NjI3Y1x1NjI3ZVx1NjI3OVx1NjI3M1x1NjI5''@;'; put 'put ''Mlx1NjI2Zlx1NjI5OFx1NjI2ZVx1NjI5NVx1NjI5M1x1NjI5MVx1NjI4Nlx1NjUzOVx1NjUzYlx1NjUzOFx1NjVmMVx1NjZmNFx1Njc1Zlx1Njc0ZVx1Njc0Zlx1Njc1MFx1Njc1MVx1Njc1Y1x1Njc1Nlx1Njc1ZVx1Njc0OVx1Njc0Nlx1Njc2MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1C''@;'; put 'put ''WzE2N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjddW0VdXT00Mjc1MitFLExbNDI3NTIrRV09QlsxNjddW0VdKTtmb3IoQlsxNjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY3''@;'; put 'put ''NTNcdTY3NTdcdTZiNjVcdTZiY2ZcdTZjNDJcdTZjNWVcdTZjOTlcdTZjODFcdTZjODhcdTZjODlcdTZjODVcdTZjOWJcdTZjNmFcdTZjN2FcdTZjOTBcdTZjNzBcdTZjOGNcdTZjNjhcdTZjOTZcdTZjOTJcdTZjN2RcdTZjODNcdTZjNzJcdTZjN2VcdTZjNzRcdTZjODZcdTZjNzZcdTZjOGRc''@;'; put 'put ''dTZjOTRcdTZjOThcdTZjODJcdTcwNzZcdTcwN2NcdTcwN2RcdTcwNzhcdTcyNjJcdTcyNjFcdTcyNjBcdTcyYzRcdTcyYzJcdTczOTZcdTc1MmNcdTc1MmJcdTc1MzdcdTc1MzhcdTc2ODJcdTc2ZWZcdTc3ZTNcdTc5YzFcdTc5YzBcdTc5YmZcdTdhNzZcdTdjZmJcdTdmNTVcdTgwOTZcdTgw''@;'; put 'put ''OTNcdTgwOWRcdTgwOThcdTgwOWJcdTgwOWFcdTgwYjJcdTgyNmZcdTgyOTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgyOGJcdTgyOGRcdTg5OGJcdTg5ZDJcdThhMDBcdThjMzdcdThjNDZcdThjNTVcdThjOWRcdThkNjRcdThkNzBcdThkYjNcdThlYWJcdThl''@;'; put 'put ''Y2FcdThmOWJcdThmYjBcdThmYzJcdThmYzZcdThmYzVcdThmYzRcdTVkZTFcdTkwOTFcdTkwYTJcdTkwYWFcdTkwYTZcdTkwYTNcdTkxNDlcdTkxYzZcdTkxY2NcdTk2MzJcdTk2MmVcdTk2MzFcdTk2MmFcdTk2MmNcdTRlMjZcdTRlNTZcdTRlNzNcdTRlOGJcdTRlOWJcdTRlOWVcdTRlYWJc''@;'; put 'put ''dTRlYWNcdTRmNmZcdTRmOWRcdTRmOGRcdTRmNzNcdTRmN2ZcdTRmNmNcdTRmOWJcdTRmOGJcdTRmODZcdTRmODNcdTRmNzBcdTRmNzVcdTRmODhcdTRmNjlcdTRmN2JcdTRmOTZcdTRmN2VcdTRmOGZcdTRmOTFcdTRmN2FcdTUxNTRcdTUxNTJcdTUxNTVcdTUxNjlcdTUxNzdcdTUxNzZcdTUx''@;'; put 'put ''NzhcdTUxYmRcdTUxZmRcdTUyM2JcdTUyMzhcdTUyMzdcdTUyM2FcdTUyMzBcdTUyMmVcdTUyMzZcdTUyNDFcdTUyYmVcdTUyYmJcdTUzNTJcdTUzNTRcdTUzNTNcdTUzNTFcdTUzNjZcdTUzNzdcdTUzNzhcdTUzNzlcdTUzZDZcdTUzZDRcdTUzZDdcdTU0NzNcdTU0NzVcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSxFPTA7RSE9QlsxNjhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY4XVtFXV09NDMwMDgrRSxMWzQzMDA4K0VdPUJbMTY4XVtFXSk7Zm9yKEJbMTY5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU1NDk2XHU1NDc4XHU1NDk1XHU1NDgwXHU1NDdiXHU1NDc3XHU1NDg0XHU1NDkyXHU1NDg2XHU1NDdjXHU1NDkwXHU1NDcxXHU1NDc2XHU1NDhjXHU1NDlhXHU1NDYyXHU1NDY4XHU1NDhiXHU1NDdkXHU1NDhlXHU1NmZhXHU1NzgzXHU1Nzc3XHU1NzZhXHU1NzY5XHU1NzYx''@;'; put 'put ''XHU1NzY2XHU1NzY0XHU1NzdjXHU1OTFjXHU1OTQ5XHU1OTQ3XHU1OTQ4XHU1OTQ0XHU1OTU0XHU1OWJlXHU1OWJiXHU1OWQ0XHU1OWI5XHU1OWFlXHU1OWQxXHU1OWM2XHU1OWQwXHU1OWNkXHU1OWNiXHU1OWQzXHU1OWNhXHU1OWFmXHU1OWIzXHU1OWQyXHU1OWM1XHU1YjVmXHU1YjY0XHU1''@;'; put 'put ''YjYzXHU1Yjk3XHU1YjlhXHU1Yjk4XHU1YjljXHU1Yjk5XHU1YjliXHU1YzFhXHU1YzQ4XHU1YzQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzQ2XHU1Y2I3XHU1Y2ExXHU1Y2I4XHU1Y2E5XHU1Y2FiXHU1Y2IxXHU1Y2IzXHU1ZTE4XHU1ZTFhXHU1ZTE2XHU1''@;'; put 'put ''ZTE1XHU1ZTFiXHU1ZTExXHU1ZTc4XHU1ZTlhXHU1ZTk3XHU1ZTljXHU1ZTk1XHU1ZTk2XHU1ZWY2XHU1ZjI2XHU1ZjI3XHU1ZjI5XHU1ZjgwXHU1ZjgxXHU1ZjdmXHU1ZjdjXHU1ZmRkXHU1ZmUwXHU1ZmZkXHU1ZmY1XHU1ZmZmXHU2MDBmXHU2MDE0XHU2MDJmXHU2MDM1XHU2MDE2XHU2MDJh''@;'; put 'put ''XHU2MDE1XHU2MDIxXHU2MDI3XHU2MDI5XHU2MDJiXHU2MDFiXHU2MjE2XHU2MjE1XHU2MjNmXHU2MjNlXHU2MjQwXHU2MjdmXHU2MmM5XHU2MmNjXHU2MmM0XHU2MmJmXHU2MmMyXHU2MmI5XHU2MmQyXHU2MmRiXHU2MmFiXHU2MmQzXHU2MmQ0XHU2MmNiXHU2MmM4XHU2MmE4XHU2MmJkXHU2''@;'; put 'put ''MmJjXHU2MmQwXHU2MmQ5XHU2MmM3XHU2MmNkXHU2MmI1XHU2MmRhXHU2MmIxXHU2MmQ4XHU2MmQ2XHU2MmQ3XHU2MmM2XHU2MmFjXHU2MmNlXHU2NTNlXHU2NWE3XHU2NWJjXHU2NWZhXHU2NjE0XHU2NjEzXHU2NjBjXHU2NjA2XHU2NjAyXHU2NjBlXHU2NjAwXHU2NjBmXHU2NjE1XHU2NjBh''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2OV1bRV1dPTQzMjY0K0UsTFs0MzI2NCtFXT1CWzE2OV1bRV0pO2ZvcihCWzE3MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjYwN1x1NjcwZFx1NjcwYlx1Njc2ZFx1Njc4Ylx1Njc5NVx1Njc3MVx1Njc5Y1x1Njc3M1x1Njc3N1x1Njc4N1x1Njc5ZFx1Njc5N1x1Njc2Zlx1Njc3MFx1Njc3Zlx1Njc4OVx1Njc3ZVx1Njc5MFx1Njc3NVx1Njc5YVx1Njc5M1x1Njc3Y1x1Njc2''@;'; put 'put ''YVx1Njc3Mlx1NmIyM1x1NmI2Nlx1NmI2N1x1NmI3Zlx1NmMxM1x1NmMxYlx1NmNlM1x1NmNlOFx1NmNmM1x1NmNiMVx1NmNjY1x1NmNlNVx1NmNiM1x1NmNiZFx1NmNiZVx1NmNiY1x1NmNlMlx1NmNhYlx1NmNkNVx1NmNkM1x1NmNiOFx1NmNjNFx1NmNiOVx1NmNjMVx1NmNhZVx1NmNkN1x1''@;'; put 'put ''NmNjNVx1NmNmMVx1NmNiZlx1NmNiYlx1NmNlMVx1NmNkYlx1NmNjYVx1NmNhY1x1NmNlZlx1NmNkY1x1NmNkNlx1NmNlMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzA5NVx1NzA4ZVx1NzA5Mlx1NzA4YVx1NzA5OVx1NzIyY1x1NzIyZFx1NzIzOFx1NzI0OFx1''@;'; put 'put ''NzI2N1x1NzI2OVx1NzJjMFx1NzJjZVx1NzJkOVx1NzJkN1x1NzJkMFx1NzNhOVx1NzNhOFx1NzM5Zlx1NzNhYlx1NzNhNVx1NzUzZFx1NzU5ZFx1NzU5OVx1NzU5YVx1NzY4NFx1NzZjMlx1NzZmMlx1NzZmNFx1NzdlNVx1NzdmZFx1NzkzZVx1Nzk0MFx1Nzk0MVx1NzljOVx1NzljOFx1N2E3''@;'; put 'put ''YVx1N2E3OVx1N2FmYVx1N2NmZVx1N2Y1NFx1N2Y4Y1x1N2Y4Ylx1ODAwNVx1ODBiYVx1ODBhNVx1ODBhMlx1ODBiMVx1ODBhMVx1ODBhYlx1ODBhOVx1ODBiNFx1ODBhYVx1ODBhZlx1ODFlNVx1ODFmZVx1ODIwZFx1ODJiM1x1ODI5ZFx1ODI5OVx1ODJhZFx1ODJiZFx1ODI5Zlx1ODJiOVx1''@;'; put 'put ''ODJiMVx1ODJhY1x1ODJhNVx1ODJhZlx1ODJiOFx1ODJhM1x1ODJiMFx1ODJiZVx1ODJiN1x1ODY0ZVx1ODY3MVx1NTIxZFx1ODg2OFx1OGVjYlx1OGZjZVx1OGZkNFx1OGZkMVx1OTBiNVx1OTBiOFx1OTBiMVx1OTBiNlx1OTFjN1x1OTFkMVx1OTU3N1x1OTU4MFx1OTYxY1x1OTY0MFx1OTYz''@;'; put 'put ''Zlx1OTYzYlx1OTY0NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTcwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzBdW0VdXT00MzUyMCtFLExbNDM1MjArRV09QlsxNzBdW0VdKTtmb3IoQlsxNzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2NDJcdTk2YjlcdTk2ZThcdTk3NTJcdTk3NWVcdTRlOWZcdTRlYWRcdTRlYWVcdTRmZTFcdTRmYjVcdTRmYWZcdTRmYmZcdTRmZTBcdTRmZDFcdTRmY2ZcdTRmZGRcdTRmYzNcdTRmYjZcdTRmZDhcdTRmZGZcdTRmY2FcdTRm''@;'; put 'put ''ZDdcdTRmYWVcdTRmZDBcdTRmYzRcdTRmYzJcdTRmZGFcdTRmY2VcdTRmZGVcdTRmYjdcdTUxNTdcdTUxOTJcdTUxOTFcdTUxYTBcdTUyNGVcdTUyNDNcdTUyNGFcdTUyNGRcdTUyNGNcdTUyNGJcdTUyNDdcdTUyYzdcdTUyYzlcdTUyYzNcdTUyYzFcdTUzMGRcdTUzNTdcdTUzN2JcdTUzOWFc''@;'; put 'put ''dTUzZGJcdTU0YWNcdTU0YzBcdTU0YThcdTU0Y2VcdTU0YzlcdTU0YjhcdTU0YTZcdTU0YjNcdTU0YzdcdTU0YzJcdTU0YmRcdTU0YWFcdTU0YzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0YzRcdTU0YzhcdTU0YWZcdTU0YWJcdTU0YjFcdTU0YmJcdTU0YTlc''@;'; put 'put ''dTU0YTdcdTU0YmZcdTU2ZmZcdTU3ODJcdTU3OGJcdTU3YTBcdTU3YTNcdTU3YTJcdTU3Y2VcdTU3YWVcdTU3OTNcdTU5NTVcdTU5NTFcdTU5NGZcdTU5NGVcdTU5NTBcdTU5ZGNcdTU5ZDhcdTU5ZmZcdTU5ZTNcdTU5ZThcdTVhMDNcdTU5ZTVcdTU5ZWFcdTU5ZGFcdTU5ZTZcdTVhMDFcdTU5''@;'; put 'put ''ZmJcdTViNjlcdTViYTNcdTViYTZcdTViYTRcdTViYTJcdTViYTVcdTVjMDFcdTVjNGVcdTVjNGZcdTVjNGRcdTVjNGJcdTVjZDlcdTVjZDJcdTVkZjdcdTVlMWRcdTVlMjVcdTVlMWZcdTVlN2RcdTVlYTBcdTVlYTZcdTVlZmFcdTVmMDhcdTVmMmRcdTVmNjVcdTVmODhcdTVmODVcdTVmOGFc''@;'; put 'put ''dTVmOGJcdTVmODdcdTVmOGNcdTVmODlcdTYwMTJcdTYwMWRcdTYwMjBcdTYwMjVcdTYwMGVcdTYwMjhcdTYwNGRcdTYwNzBcdTYwNjhcdTYwNjJcdTYwNDZcdTYwNDNcdTYwNmNcdTYwNmJcdTYwNmFcdTYwNjRcdTYyNDFcdTYyZGNcdTYzMTZcdTYzMDlcdTYyZmNcdTYyZWRcdTYzMDFcdTYy''@;'; put 'put ''ZWVcdTYyZmRcdTYzMDdcdTYyZjFcdTYyZjdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTcxXVtFXV09NDM3NzYrRSxMWzQzNzc2K0VdPUJbMTcxXVtFXSk7Zm9yKEJbMTcyXT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MmVmXHU2MmVjXHU2MmZlXHU2MmY0XHU2MzExXHU2MzAyXHU2NTNmXHU2NTQ1XHU2NWFiXHU2NWJkXHU2NWUyXHU2NjI1XHU2NjJkXHU2NjIwXHU2NjI3XHU2NjJmXHU2NjFmXHU2NjI4XHU2NjMxXHU2''@;'; put 'put ''NjI0XHU2NmY3XHU2N2ZmXHU2N2QzXHU2N2YxXHU2N2Q0XHU2N2QwXHU2N2VjXHU2N2I2XHU2N2FmXHU2N2Y1XHU2N2U5XHU2N2VmXHU2N2M0XHU2N2QxXHU2N2I0XHU2N2RhXHU2N2U1XHU2N2I4XHU2N2NmXHU2N2RlXHU2N2YzXHU2N2IwXHU2N2Q5XHU2N2UyXHU2N2RkXHU2N2QyXHU2YjZh''@;'; put 'put ''XHU2YjgzXHU2Yjg2XHU2YmI1XHU2YmQyXHU2YmQ3XHU2YzFmXHU2Y2M5XHU2ZDBiXHU2ZDMyXHU2ZDJhXHU2ZDQxXHU2ZDI1XHU2ZDBjXHU2ZDMxXHU2ZDFlXHU2ZDE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDNiXHU2ZDNkXHU2ZDNlXHU2ZDM2XHU2ZDFi''@;'; put 'put ''XHU2Y2Y1XHU2ZDM5XHU2ZDI3XHU2ZDM4XHU2ZDI5XHU2ZDJlXHU2ZDM1XHU2ZDBlXHU2ZDJiXHU3MGFiXHU3MGJhXHU3MGIzXHU3MGFjXHU3MGFmXHU3MGFkXHU3MGI4XHU3MGFlXHU3MGE0XHU3MjMwXHU3MjcyXHU3MjZmXHU3Mjc0XHU3MmU5XHU3MmUwXHU3MmUxXHU3M2I3XHU3M2NhXHU3''@;'; put 'put ''M2JiXHU3M2IyXHU3M2NkXHU3M2MwXHU3M2IzXHU3NTFhXHU3NTJkXHU3NTRmXHU3NTRjXHU3NTRlXHU3NTRiXHU3NWFiXHU3NWE0XHU3NWE1XHU3NWEyXHU3NWEzXHU3Njc4XHU3Njg2XHU3Njg3XHU3Njg4XHU3NmM4XHU3NmM2XHU3NmMzXHU3NmM1XHU3NzAxXHU3NmY5XHU3NmY4XHU3NzA5''@;'; put 'put ''XHU3NzBiXHU3NmZlXHU3NmZjXHU3NzA3XHU3N2RjXHU3ODAyXHU3ODE0XHU3ODBjXHU3ODBkXHU3OTQ2XHU3OTQ5XHU3OTQ4XHU3OTQ3XHU3OWI5XHU3OWJhXHU3OWQxXHU3OWQyXHU3OWNiXHU3YTdmXHU3YTgxXHU3YWZmXHU3YWZkXHU3YzdkXHU3ZDAyXHU3ZDA1XHU3ZDAwXHU3ZDA5XHU3''@;'; put 'put ''ZDA3XHU3ZDA0XHU3ZDA2XHU3ZjM4XHU3ZjhlXHU3ZmJmXHU4MDA0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTcyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3Ml1bRV1dPTQ0MDMyK0UsTFs0NDAzMitFXT1CWzE3Ml1bRV0pO2ZvcihC''@;'; put 'put ''WzE3M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODAxMFx1ODAwZFx1ODAxMVx1ODAzNlx1ODBkNlx1ODBlNVx1ODBkYVx1ODBjM1x1ODBjNFx1ODBjY1x1ODBlMVx1ODBkYlx1ODBjZVx1ODBkZVx1ODBlNFx1ODBkZFx1ODFmNFx1''@;'; put 'put ''ODIyMlx1ODJlN1x1ODMwM1x1ODMwNVx1ODJlM1x1ODJkYlx1ODJlNlx1ODMwNFx1ODJlNVx1ODMwMlx1ODMwOVx1ODJkMlx1ODJkN1x1ODJmMVx1ODMwMVx1ODJkY1x1ODJkNFx1ODJkMVx1ODJkZVx1ODJkM1x1ODJkZlx1ODJlZlx1ODMwNlx1ODY1MFx1ODY3OVx1ODY3Ylx1ODY3YVx1ODg0''@;'; put 'put ''ZFx1ODg2Ylx1ODk4MVx1ODlkNFx1OGEwOFx1OGEwMlx1OGEwM1x1OGM5ZVx1OGNhMFx1OGQ3NFx1OGQ3M1x1OGRiNFx1OGVjZFx1OGVjY1x1OGZmMFx1OGZlNlx1OGZlMlx1OGZlYVx1OGZlNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGZlZFx1OGZlYlx1OGZl''@;'; put 'put ''NFx1OGZlOFx1OTBjYVx1OTBjZVx1OTBjMVx1OTBjM1x1OTE0Ylx1OTE0YVx1OTFjZFx1OTU4Mlx1OTY1MFx1OTY0Ylx1OTY0Y1x1OTY0ZFx1OTc2Mlx1OTc2OVx1OTdjYlx1OTdlZFx1OTdmM1x1OTgwMVx1OThhOFx1OThkYlx1OThkZlx1OTk5Nlx1OTk5OVx1NGU1OFx1NGViM1x1NTAwY1x1''@;'; put 'put ''NTAwZFx1NTAyM1x1NGZlZlx1NTAyNlx1NTAyNVx1NGZmOFx1NTAyOVx1NTAxNlx1NTAwNlx1NTAzY1x1NTAxZlx1NTAxYVx1NTAxMlx1NTAxMVx1NGZmYVx1NTAwMFx1NTAxNFx1NTAyOFx1NGZmMVx1NTAyMVx1NTAwYlx1NTAxOVx1NTAxOFx1NGZmM1x1NGZlZVx1NTAyZFx1NTAyYVx1NGZm''@;'; put 'put ''ZVx1NTAyYlx1NTAwOVx1NTE3Y1x1NTFhNFx1NTFhNVx1NTFhMlx1NTFjZFx1NTFjY1x1NTFjNlx1NTFjYlx1NTI1Nlx1NTI1Y1x1NTI1NFx1NTI1Ylx1NTI1ZFx1NTMyYVx1NTM3Zlx1NTM5Zlx1NTM5ZFx1NTNkZlx1NTRlOFx1NTUxMFx1NTUwMVx1NTUzN1x1NTRmY1x1NTRlNVx1NTRmMlx1''@;'; put 'put ''NTUwNlx1NTRmYVx1NTUxNFx1NTRlOVx1NTRlZFx1NTRlMVx1NTUwOVx1NTRlZVx1NTRlYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTczXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzNdW0VdXT00NDI4OCtFLExbNDQyODgrRV09Qlsx''@;'; put 'put ''NzNdW0VdKTtmb3IoQlsxNzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0ZTZcdTU1MjdcdTU1MDdcdTU0ZmRcdTU1MGZcdTU3MDNcdTU3MDRcdTU3YzJcdTU3ZDRcdTU3Y2JcdTU3YzNcdTU4MDlcdTU5MGZcdTU5NTdcdTU5NThc''@;'; put 'put ''dTU5NWFcdTVhMTFcdTVhMThcdTVhMWNcdTVhMWZcdTVhMWJcdTVhMTNcdTU5ZWNcdTVhMjBcdTVhMjNcdTVhMjlcdTVhMjVcdTVhMGNcdTVhMDlcdTViNmJcdTVjNThcdTViYjBcdTViYjNcdTViYjZcdTViYjRcdTViYWVcdTViYjVcdTViYjlcdTViYjhcdTVjMDRcdTVjNTFcdTVjNTVcdTVj''@;'; put 'put ''NTBcdTVjZWRcdTVjZmRcdTVjZmJcdTVjZWFcdTVjZThcdTVjZjBcdTVjZjZcdTVkMDFcdTVjZjRcdTVkZWVcdTVlMmRcdTVlMmJcdTVlYWJcdTVlYWRcdTVlYTdcdTVmMzFcdTVmOTJcdTVmOTFcdTVmOTBcdTYwNTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYw''@;'; put 'put ''NjNcdTYwNjVcdTYwNTBcdTYwNTVcdTYwNmRcdTYwNjlcdTYwNmZcdTYwODRcdTYwOWZcdTYwOWFcdTYwOGRcdTYwOTRcdTYwOGNcdTYwODVcdTYwOTZcdTYyNDdcdTYyZjNcdTYzMDhcdTYyZmZcdTYzNGVcdTYzM2VcdTYzMmZcdTYzNTVcdTYzNDJcdTYzNDZcdTYzNGZcdTYzNDlcdTYzM2Fc''@;'; put 'put ''dTYzNTBcdTYzM2RcdTYzMmFcdTYzMmJcdTYzMjhcdTYzNGRcdTYzNGNcdTY1NDhcdTY1NDlcdTY1OTlcdTY1YzFcdTY1YzVcdTY2NDJcdTY2NDlcdTY2NGZcdTY2NDNcdTY2NTJcdTY2NGNcdTY2NDVcdTY2NDFcdTY2ZjhcdTY3MTRcdTY3MTVcdTY3MTdcdTY4MjFcdTY4MzhcdTY4NDhcdTY4''@;'; put 'put ''NDZcdTY4NTNcdTY4MzlcdTY4NDJcdTY4NTRcdTY4MjlcdTY4YjNcdTY4MTdcdTY4NGNcdTY4NTFcdTY4M2RcdTY3ZjRcdTY4NTBcdTY4NDBcdTY4M2NcdTY4NDNcdTY4MmFcdTY4NDVcdTY4MTNcdTY4MThcdTY4NDFcdTZiOGFcdTZiODlcdTZiYjdcdTZjMjNcdTZjMjdcdTZjMjhcdTZjMjZc''@;'; put 'put ''dTZjMjRcdTZjZjBcdTZkNmFcdTZkOTVcdTZkODhcdTZkODdcdTZkNjZcdTZkNzhcdTZkNzdcdTZkNTlcdTZkOTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTc0XVtFXV09NDQ1NDQrRSxM''@;'; put 'put ''WzQ0NTQ0K0VdPUJbMTc0XVtFXSk7Zm9yKEJbMTc1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDZjXHU2ZDg5XHU2ZDZlXHU2ZDVhXHU2ZDc0XHU2ZDY5XHU2ZDhjXHU2ZDhhXHU2ZDc5XHU2ZDg1XHU2ZDY1XHU2ZDk0XHU3MGNh''@;'; put 'put ''XHU3MGQ4XHU3MGU0XHU3MGQ5XHU3MGM4XHU3MGNmXHU3MjM5XHU3Mjc5XHU3MmZjXHU3MmY5XHU3MmZkXHU3MmY4XHU3MmY3XHU3Mzg2XHU3M2VkXHU3NDA5XHU3M2VlXHU3M2UwXHU3M2VhXHU3M2RlXHU3NTU0XHU3NTVkXHU3NTVjXHU3NTVhXHU3NTU5XHU3NWJlXHU3NWM1XHU3NWM3XHU3''@;'; put 'put ''NWIyXHU3NWIzXHU3NWJkXHU3NWJjXHU3NWI5XHU3NWMyXHU3NWI4XHU3NjhiXHU3NmIwXHU3NmNhXHU3NmNkXHU3NmNlXHU3NzI5XHU3NzFmXHU3NzIwXHU3NzI4XHU3N2U5XHU3ODMwXHU3ODI3XHU3ODM4XHU3ODFkXHU3ODM0XHU3ODM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU3ODI1XHU3ODJkXHU3ODIwXHU3ODFmXHU3ODMyXHU3OTU1XHU3OTUwXHU3OTYwXHU3OTVmXHU3OTU2XHU3OTVlXHU3OTVkXHU3OTU3XHU3OTVhXHU3OWU0XHU3OWUzXHU3OWU3XHU3OWRmXHU3OWU2XHU3OWU5XHU3OWQ4XHU3YTg0XHU3YTg4XHU3YWQ5XHU3YjA2XHU3YjEx''@;'; put 'put ''XHU3Yzg5XHU3ZDIxXHU3ZDE3XHU3ZDBiXHU3ZDBhXHU3ZDIwXHU3ZDIyXHU3ZDE0XHU3ZDEwXHU3ZDE1XHU3ZDFhXHU3ZDFjXHU3ZDBkXHU3ZDE5XHU3ZDFiXHU3ZjNhXHU3ZjVmXHU3Zjk0XHU3ZmM1XHU3ZmMxXHU4MDA2XHU4MDE4XHU4MDE1XHU4MDE5XHU4MDE3XHU4MDNkXHU4MDNmXHU4''@;'; put 'put ''MGYxXHU4MTAyXHU4MGYwXHU4MTA1XHU4MGVkXHU4MGY0XHU4MTA2XHU4MGY4XHU4MGYzXHU4MTA4XHU4MGZkXHU4MTBhXHU4MGZjXHU4MGVmXHU4MWVkXHU4MWVjXHU4MjAwXHU4MjEwXHU4MjJhXHU4MjJiXHU4MjI4XHU4MjJjXHU4MmJiXHU4MzJiXHU4MzUyXHU4MzU0XHU4MzRhXHU4MzM4''@;'; put 'put ''XHU4MzUwXHU4MzQ5XHU4MzM1XHU4MzM0XHU4MzRmXHU4MzMyXHU4MzM5XHU4MzM2XHU4MzE3XHU4MzQwXHU4MzMxXHU4MzI4XHU4MzQzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3NV1b''@;'; put 'put ''RV1dPTQ0ODAwK0UsTFs0NDgwMCtFXT1CWzE3NV1bRV0pO2ZvcihCWzE3Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODY1NFx1ODY4YVx1ODZhYVx1ODY5M1x1ODZhNFx1ODZhOVx1ODY4Y1x1ODZhM1x1ODY5Y1x1ODg3MFx1ODg3''@;'; put 'put ''N1x1ODg4MVx1ODg4Mlx1ODg3ZFx1ODg3OVx1OGExOFx1OGExMFx1OGEwZVx1OGEwY1x1OGExNVx1OGEwYVx1OGExN1x1OGExM1x1OGExNlx1OGEwZlx1OGExMVx1OGM0OFx1OGM3YVx1OGM3OVx1OGNhMVx1OGNhMlx1OGQ3N1x1OGVhY1x1OGVkMlx1OGVkNFx1OGVjZlx1OGZiMVx1OTAwMVx1''@;'; put 'put ''OTAwNlx1OGZmN1x1OTAwMFx1OGZmYVx1OGZmNFx1OTAwM1x1OGZmZFx1OTAwNVx1OGZmOFx1OTA5NVx1OTBlMVx1OTBkZFx1OTBlMlx1OTE1Mlx1OTE0ZFx1OTE0Y1x1OTFkOFx1OTFkZFx1OTFkN1x1OTFkY1x1OTFkOVx1OTU4M1x1OTY2Mlx1OTY2M1x1OTY2MVx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY1Ylx1OTY1ZFx1OTY2NFx1OTY1OFx1OTY1ZVx1OTZiYlx1OThlMlx1OTlhY1x1OWFhOFx1OWFkOFx1OWIyNVx1OWIzMlx1OWIzY1x1NGU3ZVx1NTA3YVx1NTA3ZFx1NTA1Y1x1NTA0N1x1NTA0M1x1NTA0Y1x1NTA1YVx1NTA0OVx1NTA2NVx1NTA3''@;'; put 'put ''Nlx1NTA0ZVx1NTA1NVx1NTA3NVx1NTA3NFx1NTA3N1x1NTA0Zlx1NTAwZlx1NTA2Zlx1NTA2ZFx1NTE1Y1x1NTE5NVx1NTFmMFx1NTI2YVx1NTI2Zlx1NTJkMlx1NTJkOVx1NTJkOFx1NTJkNVx1NTMxMFx1NTMwZlx1NTMxOVx1NTMzZlx1NTM0MFx1NTMzZVx1NTNjM1x1NjZmY1x1NTU0Nlx1''@;'; put 'put ''NTU2YVx1NTU2Nlx1NTU0NFx1NTU1ZVx1NTU2MVx1NTU0M1x1NTU0YVx1NTUzMVx1NTU1Nlx1NTU0Zlx1NTU1NVx1NTUyZlx1NTU2NFx1NTUzOFx1NTUyZVx1NTU1Y1x1NTUyY1x1NTU2M1x1NTUzM1x1NTU0MVx1NTU1N1x1NTcwOFx1NTcwYlx1NTcwOVx1NTdkZlx1NTgwNVx1NTgwYVx1NTgw''@;'; put 'put ''Nlx1NTdlMFx1NTdlNFx1NTdmYVx1NTgwMlx1NTgzNVx1NTdmN1x1NTdmOVx1NTkyMFx1NTk2Mlx1NWEzNlx1NWE0MVx1NWE0OVx1NWE2Nlx1NWE2YVx1NWE0MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc2XVtFXS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoZ2VbQlsxNzZdW0VdXT00NTA1NitFLExbNDUwNTYrRV09QlsxNzZdW0VdKTtmb3IoQlsxNzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVhM2NcdTVhNjJcdTVhNWFcdTVhNDZcdTVhNGFcdTViNzBcdTViYzdcdTViYzVcdTVi''@;'; put 'put ''YzRcdTViYzJcdTViYmZcdTViYzZcdTVjMDlcdTVjMDhcdTVjMDdcdTVjNjBcdTVjNWNcdTVjNWRcdTVkMDdcdTVkMDZcdTVkMGVcdTVkMWJcdTVkMTZcdTVkMjJcdTVkMTFcdTVkMjlcdTVkMTRcdTVkMTlcdTVkMjRcdTVkMjdcdTVkMTdcdTVkZTJcdTVlMzhcdTVlMzZcdTVlMzNcdTVlMzdc''@;'; put 'put ''dTVlYjdcdTVlYjhcdTVlYjZcdTVlYjVcdTVlYmVcdTVmMzVcdTVmMzdcdTVmNTdcdTVmNmNcdTVmNjlcdTVmNmJcdTVmOTdcdTVmOTlcdTVmOWVcdTVmOThcdTVmYTFcdTVmYTBcdTVmOWNcdTYwN2ZcdTYwYTNcdTYwODlcdTYwYTBcdTYwYThcdTYwY2JcdTYwYjRcdTYwZTZcdTYwYmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwYzVcdTYwYmJcdTYwYjVcdTYwZGNcdTYwYmNcdTYwZDhcdTYwZDVcdTYwYzZcdTYwZGZcdTYwYjhcdTYwZGFcdTYwYzdcdTYyMWFcdTYyMWJcdTYyNDhcdTYzYTBcdTYzYTdcdTYzNzJcdTYzOTZcdTYzYTJcdTYzYTVcdTYz''@;'; put 'put ''NzdcdTYzNjdcdTYzOThcdTYzYWFcdTYzNzFcdTYzYTlcdTYzODlcdTYzODNcdTYzOWJcdTYzNmJcdTYzYThcdTYzODRcdTYzODhcdTYzOTlcdTYzYTFcdTYzYWNcdTYzOTJcdTYzOGZcdTYzODBcdTYzN2JcdTYzNjlcdTYzNjhcdTYzN2FcdTY1NWRcdTY1NTZcdTY1NTFcdTY1NTlcdTY1NTdc''@;'; put 'put ''dTU1NWZcdTY1NGZcdTY1NThcdTY1NTVcdTY1NTRcdTY1OWNcdTY1OWJcdTY1YWNcdTY1Y2ZcdTY1Y2JcdTY1Y2NcdTY1Y2VcdTY2NWRcdTY2NWFcdTY2NjRcdTY2NjhcdTY2NjZcdTY2NWVcdTY2ZjlcdTUyZDdcdTY3MWJcdTY4ODFcdTY4YWZcdTY4YTJcdTY4OTNcdTY4YjVcdTY4N2ZcdTY4''@;'; put 'put ''NzZcdTY4YjFcdTY4YTdcdTY4OTdcdTY4YjBcdTY4ODNcdTY4YzRcdTY4YWRcdTY4ODZcdTY4ODVcdTY4OTRcdTY4OWRcdTY4YThcdTY4OWZcdTY4YTFcdTY4ODJcdTZiMzJcdTZiYmFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3N11bRV0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKGdlW0JbMTc3XVtFXV09NDUzMTIrRSxMWzQ1MzEyK0VdPUJbMTc3XVtFXSk7Zm9yKEJbMTc4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YmViXHU2YmVjXHU2YzJiXHU2ZDhlXHU2ZGJjXHU2ZGYzXHU2''@;'; put 'put ''ZGQ5XHU2ZGIyXHU2ZGUxXHU2ZGNjXHU2ZGU0XHU2ZGZiXHU2ZGZhXHU2ZTA1XHU2ZGM3XHU2ZGNiXHU2ZGFmXHU2ZGQxXHU2ZGFlXHU2ZGRlXHU2ZGY5XHU2ZGI4XHU2ZGY3XHU2ZGY1XHU2ZGM1XHU2ZGQyXHU2ZTFhXHU2ZGI1XHU2ZGRhXHU2ZGViXHU2ZGQ4XHU2ZGVhXHU2ZGYxXHU2ZGVl''@;'; put 'put ''XHU2ZGU4XHU2ZGM2XHU2ZGM0XHU2ZGFhXHU2ZGVjXHU2ZGJmXHU2ZGU2XHU3MGY5XHU3MTA5XHU3MTBhXHU3MGZkXHU3MGVmXHU3MjNkXHU3MjdkXHU3MjgxXHU3MzFjXHU3MzFiXHU3MzE2XHU3MzEzXHU3MzE5XHU3Mzg3XHU3NDA1XHU3NDBhXHU3NDAzXHU3NDA2XHU3M2ZlXHU3NDBkXHU3''@;'; put 'put ''NGUwXHU3NGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NGY3XHU3NTFjXHU3NTIyXHU3NTY1XHU3NTY2XHU3NTYyXHU3NTcwXHU3NThmXHU3NWQ0XHU3NWQ1XHU3NWI1XHU3NWNhXHU3NWNkXHU3NjhlXHU3NmQ0XHU3NmQyXHU3NmRiXHU3NzM3XHU3NzNlXHU3''@;'; put 'put ''NzNjXHU3NzM2XHU3NzM4XHU3NzNhXHU3ODZiXHU3ODQzXHU3ODRlXHU3OTY1XHU3OTY4XHU3OTZkXHU3OWZiXHU3YTkyXHU3YTk1XHU3YjIwXHU3YjI4XHU3YjFiXHU3YjJjXHU3YjI2XHU3YjE5XHU3YjFlXHU3YjJlXHU3YzkyXHU3Yzk3XHU3Yzk1XHU3ZDQ2XHU3ZDQzXHU3ZDcxXHU3ZDJl''@;'; put 'put ''XHU3ZDM5XHU3ZDNjXHU3ZDQwXHU3ZDMwXHU3ZDMzXHU3ZDQ0XHU3ZDJmXHU3ZDQyXHU3ZDMyXHU3ZDMxXHU3ZjNkXHU3ZjllXHU3ZjlhXHU3ZmNjXHU3ZmNlXHU3ZmQyXHU4MDFjXHU4MDRhXHU4MDQ2XHU4MTJmXHU4MTE2XHU4MTIzXHU4MTJiXHU4MTI5XHU4MTMwXHU4MTI0XHU4MjAyXHU4''@;'; put 'put ''MjM1XHU4MjM3XHU4MjM2XHU4MjM5XHU4MzhlXHU4MzllXHU4Mzk4XHU4Mzc4XHU4M2EyXHU4Mzk2XHU4M2JkXHU4M2FiXHU4MzkyXHU4MzhhXHU4MzkzXHU4Mzg5XHU4M2EwXHU4Mzc3XHU4MzdiXHU4MzdjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc4XS5sZW5ndGg7KytFKTY1NTMz''@;'; put 'put ''IT09QlsxNzhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3OF1bRV1dPTQ1NTY4K0UsTFs0NTU2OCtFXT1CWzE3OF1bRV0pO2ZvcihCWzE3OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODM4Nlx1ODNhN1x1ODY1NVx1NWY2YVx1''@;'; put 'put ''ODZjN1x1ODZjMFx1ODZiNlx1ODZjNFx1ODZiNVx1ODZjNlx1ODZjYlx1ODZiMVx1ODZhZlx1ODZjOVx1ODg1M1x1ODg5ZVx1ODg4OFx1ODhhYlx1ODg5Mlx1ODg5Nlx1ODg4ZFx1ODg4Ylx1ODk5M1x1ODk4Zlx1OGEyYVx1OGExZFx1OGEyM1x1OGEyNVx1OGEzMVx1OGEyZFx1OGExZlx1OGEx''@;'; put 'put ''Ylx1OGEyMlx1OGM0OVx1OGM1YVx1OGNhOVx1OGNhY1x1OGNhYlx1OGNhOFx1OGNhYVx1OGNhN1x1OGQ2N1x1OGQ2Nlx1OGRiZVx1OGRiYVx1OGVkYlx1OGVkZlx1OTAxOVx1OTAwZFx1OTAxYVx1OTAxN1x1OTAyM1x1OTAxZlx1OTAxZFx1OTAxMFx1OTAxNVx1OTAxZVx1OTAyMFx1OTAwZlx1''@;'; put 'put ''OTAyMlx1OTAxNlx1OTAxYlx1OTAxNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTBlOFx1OTBlZFx1OTBmZFx1OTE1N1x1OTFjZVx1OTFmNVx1OTFlNlx1OTFlM1x1OTFlN1x1OTFlZFx1OTFlOVx1OTU4OVx1OTY2YVx1OTY3NVx1OTY3M1x1OTY3OFx1OTY3MFx1''@;'; put 'put ''OTY3NFx1OTY3Nlx1OTY3N1x1OTY2Y1x1OTZjMFx1OTZlYVx1OTZlOVx1N2FlMFx1N2FkZlx1OTgwMlx1OTgwM1x1OWI1YVx1OWNlNVx1OWU3NVx1OWU3Zlx1OWVhNVx1OWViYlx1NTBhMlx1NTA4ZFx1NTA4NVx1NTA5OVx1NTA5MVx1NTA4MFx1NTA5Nlx1NTA5OFx1NTA5YVx1NjcwMFx1NTFm''@;'; put 'put ''MVx1NTI3Mlx1NTI3NFx1NTI3NVx1NTI2OVx1NTJkZVx1NTJkZFx1NTJkYlx1NTM1YVx1NTNhNVx1NTU3Ylx1NTU4MFx1NTVhN1x1NTU3Y1x1NTU4YVx1NTU5ZFx1NTU5OFx1NTU4Mlx1NTU5Y1x1NTVhYVx1NTU5NFx1NTU4N1x1NTU4Ylx1NTU4M1x1NTViM1x1NTVhZVx1NTU5Zlx1NTUzZVx1''@;'; put 'put ''NTViMlx1NTU5YVx1NTViYlx1NTVhY1x1NTViMVx1NTU3ZVx1NTU4OVx1NTVhYlx1NTU5OVx1NTcwZFx1NTgyZlx1NTgyYVx1NTgzNFx1NTgyNFx1NTgzMFx1NTgzMVx1NTgyMVx1NTgxZFx1NTgyMFx1NThmOVx1NThmYVx1NTk2MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3OV0ubGVu''@;'; put 'put ''Z3RoOysrRSk2NTUzMyE9PUJbMTc5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzldW0VdXT00NTgyNCtFLExbNDU4MjQrRV09QlsxNzldW0VdKTtmb3IoQlsxODBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVhNzdcdTVhOWFc''@;'; put 'put ''dTVhN2ZcdTVhOTJcdTVhOWJcdTVhYTdcdTViNzNcdTViNzFcdTViZDJcdTViY2NcdTViZDNcdTViZDBcdTVjMGFcdTVjMGJcdTVjMzFcdTVkNGNcdTVkNTBcdTVkMzRcdTVkNDdcdTVkZmRcdTVlNDVcdTVlM2RcdTVlNDBcdTVlNDNcdTVlN2VcdTVlY2FcdTVlYzFcdTVlYzJcdTVlYzRcdTVm''@;'; put 'put ''M2NcdTVmNmRcdTVmYTlcdTVmYWFcdTVmYThcdTYwZDFcdTYwZTFcdTYwYjJcdTYwYjZcdTYwZTBcdTYxMWNcdTYxMjNcdTYwZmFcdTYxMTVcdTYwZjBcdTYwZmJcdTYwZjRcdTYxNjhcdTYwZjFcdTYxMGVcdTYwZjZcdTYxMDlcdTYxMDBcdTYxMTJcdTYyMWZcdTYyNDlcdTYzYTNcdTYzOGNc''@;'; put 'put ''dTYzY2ZcdTYzYzBcdTYzZTlcdTYzYzlcdTYzYzZcdTYzY2RcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzZDJcdTYzZTNcdTYzZDBcdTYzZTFcdTYzZDZcdTYzZWRcdTYzZWVcdTYzNzZcdTYzZjRcdTYzZWFcdTYzZGJcdTY0NTJcdTYzZGFcdTYzZjlcdTY1NWVc''@;'; put 'put ''dTY1NjZcdTY1NjJcdTY1NjNcdTY1OTFcdTY1OTBcdTY1YWZcdTY2NmVcdTY2NzBcdTY2NzRcdTY2NzZcdTY2NmZcdTY2OTFcdTY2N2FcdTY2N2VcdTY2NzdcdTY2ZmVcdTY2ZmZcdTY3MWZcdTY3MWRcdTY4ZmFcdTY4ZDVcdTY4ZTBcdTY4ZDhcdTY4ZDdcdTY5MDVcdTY4ZGZcdTY4ZjVcdTY4''@;'; put 'put ''ZWVcdTY4ZTdcdTY4ZjlcdTY4ZDJcdTY4ZjJcdTY4ZTNcdTY4Y2JcdTY4Y2RcdTY5MGRcdTY5MTJcdTY5MGVcdTY4YzlcdTY4ZGFcdTY5NmVcdTY4ZmJcdTZiM2VcdTZiM2FcdTZiM2RcdTZiOThcdTZiOTZcdTZiYmNcdTZiZWZcdTZjMmVcdTZjMmZcdTZjMmNcdTZlMmZcdTZlMzhcdTZlNTRc''@;'; put 'put ''dTZlMjFcdTZlMzJcdTZlNjdcdTZlNGFcdTZlMjBcdTZlMjVcdTZlMjNcdTZlMWJcdTZlNWJcdTZlNThcdTZlMjRcdTZlNTZcdTZlNmVcdTZlMmRcdTZlMjZcdTZlNmZcdTZlMzRcdTZlNGRcdTZlM2FcdTZlMmNcdTZlNDNcdTZlMWRcdTZlM2VcdTZlY2JcdWZmZmQiLnNwbGl0KCIiKSxFPTA7''@;'; put 'put ''RSE9QlsxODBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTgwXVtFXV09NDYwODArRSxMWzQ2MDgwK0VdPUJbMTgwXVtFXSk7Zm9yKEJbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU2ZTg5XHU2ZTE5XHU2ZTRlXHU2ZTYzXHU2ZTQ0XHU2ZTcyXHU2ZTY5XHU2ZTVmXHU3MTE5XHU3MTFhXHU3MTI2XHU3MTMwXHU3MTIxXHU3MTM2XHU3MTZlXHU3MTFjXHU3MjRjXHU3Mjg0XHU3MjgwXHU3MzM2XHU3MzI1XHU3MzM0XHU3MzI5XHU3NDNhXHU3NDJhXHU3NDMzXHU3NDIyXHU3''@;'; put 'put ''NDI1XHU3NDM1XHU3NDM2XHU3NDM0XHU3NDJmXHU3NDFiXHU3NDI2XHU3NDI4XHU3NTI1XHU3NTI2XHU3NTZiXHU3NTZhXHU3NWUyXHU3NWRiXHU3NWUzXHU3NWQ5XHU3NWQ4XHU3NWRlXHU3NWUwXHU3NjdiXHU3NjdjXHU3Njk2XHU3NjkzXHU3NmI0XHU3NmRjXHU3NzRmXHU3N2VkXHU3ODVk''@;'; put 'put ''XHU3ODZjXHU3ODZmXHU3YTBkXHU3YTA4XHU3YTBiXHU3YTA1XHU3YTAwXHU3YTk4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTk3XHU3YTk2XHU3YWU1XHU3YWUzXHU3YjQ5XHU3YjU2XHU3YjQ2XHU3YjUwXHU3YjUyXHU3YjU0XHU3YjRkXHU3YjRiXHU3YjRm''@;'; put 'put ''XHU3YjUxXHU3YzlmXHU3Y2E1XHU3ZDVlXHU3ZDUwXHU3ZDY4XHU3ZDU1XHU3ZDJiXHU3ZDZlXHU3ZDcyXHU3ZDYxXHU3ZDY2XHU3ZDYyXHU3ZDcwXHU3ZDczXHU1NTg0XHU3ZmQ0XHU3ZmQ1XHU4MDBiXHU4MDUyXHU4MDg1XHU4MTU1XHU4MTU0XHU4MTRiXHU4MTUxXHU4MTRlXHU4MTM5XHU4''@;'; put 'put ''MTQ2XHU4MTNlXHU4MTRjXHU4MTUzXHU4MTc0XHU4MjEyXHU4MjFjXHU4M2U5XHU4NDAzXHU4M2Y4XHU4NDBkXHU4M2UwXHU4M2M1XHU4NDBiXHU4M2MxXHU4M2VmXHU4M2YxXHU4M2Y0XHU4NDU3XHU4NDBhXHU4M2YwXHU4NDBjXHU4M2NjXHU4M2ZkXHU4M2YyXHU4M2NhXHU4NDM4XHU4NDBl''@;'; put 'put ''XHU4NDA0XHU4M2RjXHU4NDA3XHU4M2Q0XHU4M2RmXHU4NjViXHU4NmRmXHU4NmQ5XHU4NmVkXHU4NmQ0XHU4NmRiXHU4NmU0XHU4NmQwXHU4NmRlXHU4ODU3XHU4OGMxXHU4OGMyXHU4OGIxXHU4OTgzXHU4OTk2XHU4YTNiXHU4YTYwXHU4YTU1XHU4YTVlXHU4YTNjXHU4YTQxXHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksRT0wO0UhPUJbMTgxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4MV1bRV1dPTQ2MzM2K0UsTFs0NjMzNitFXT1CWzE4MV1bRV0pO2ZvcihCWzE4Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1OGE1NFx1OGE1Ylx1OGE1MFx1OGE0Nlx1OGEzNFx1OGEzYVx1OGEzNlx1OGE1Nlx1OGM2MVx1OGM4Mlx1OGNhZlx1OGNiY1x1OGNiM1x1OGNiZFx1OGNjMVx1OGNiYlx1OGNjMFx1OGNiNFx1OGNiN1x1OGNiNlx1OGNiZlx1OGNiOFx1OGQ4YVx1OGQ4NVx1OGQ4MVx1''@;'; put 'put ''OGRjZVx1OGRkZFx1OGRjYlx1OGRkYVx1OGRkMVx1OGRjY1x1OGRkYlx1OGRjNlx1OGVmYlx1OGVmOFx1OGVmY1x1OGY5Y1x1OTAyZVx1OTAzNVx1OTAzMVx1OTAzOFx1OTAzMlx1OTAzNlx1OTEwMlx1OTBmNVx1OTEwOVx1OTBmZVx1OTE2M1x1OTE2NVx1OTFjZlx1OTIxNFx1OTIxNVx1OTIy''@;'; put 'put ''M1x1OTIwOVx1OTIxZVx1OTIwZFx1OTIxMFx1OTIwN1x1OTIxMVx1OTU5NFx1OTU4Zlx1OTU4Ylx1OTU5MVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTU5M1x1OTU5Mlx1OTU4ZVx1OTY4YVx1OTY4ZVx1OTY4Ylx1OTY3ZFx1OTY4NVx1OTY4Nlx1OTY4ZFx1OTY3''@;'; put 'put ''Mlx1OTY4NFx1OTZjMVx1OTZjNVx1OTZjNFx1OTZjNlx1OTZjN1x1OTZlZlx1OTZmMlx1OTdjY1x1OTgwNVx1OTgwNlx1OTgwOFx1OThlN1x1OThlYVx1OThlZlx1OThlOVx1OThmMlx1OThlZFx1OTlhZVx1OTlhZFx1OWVjM1x1OWVjZFx1OWVkMVx1NGU4Mlx1NTBhZFx1NTBiNVx1NTBiMlx1''@;'; put 'put ''NTBiM1x1NTBjNVx1NTBiZVx1NTBhY1x1NTBiN1x1NTBiYlx1NTBhZlx1NTBjN1x1NTI3Zlx1NTI3N1x1NTI3ZFx1NTJkZlx1NTJlNlx1NTJlNFx1NTJlMlx1NTJlM1x1NTMyZlx1NTVkZlx1NTVlOFx1NTVkM1x1NTVlNlx1NTVjZVx1NTVkY1x1NTVjN1x1NTVkMVx1NTVlM1x1NTVlNFx1NTVl''@;'; put 'put ''Zlx1NTVkYVx1NTVlMVx1NTVjNVx1NTVjNlx1NTVlNVx1NTVjOVx1NTcxMlx1NTcxM1x1NTg1ZVx1NTg1MVx1NTg1OFx1NTg1N1x1NTg1YVx1NTg1NFx1NTg2Ylx1NTg0Y1x1NTg2ZFx1NTg0YVx1NTg2Mlx1NTg1Mlx1NTg0Ylx1NTk2N1x1NWFjMVx1NWFjOVx1NWFjY1x1NWFiZVx1NWFiZFx1''@;'; put 'put ''NWFiY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODJdW0VdXT00NjU5MitFLExbNDY1OTIrRV09QlsxODJdW0VdKTtmb3IoQlsxODNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVhYjNcdTVhYzJcdTVhYjJcdTVkNjlcdTVkNmZcdTVlNGNcdTVlNzlcdTVlYzlcdTVlYzhcdTVmMTJcdTVmNTlcdTVmYWNcdTVmYWVcdTYxMWFcdTYxMGZcdTYxNDhcdTYxMWZcdTYwZjNcdTYxMWJcdTYwZjlcdTYxMDFcdTYxMDhcdTYxNGVc''@;'; put 'put ''dTYxNGNcdTYxNDRcdTYxNGRcdTYxM2VcdTYxMzRcdTYxMjdcdTYxMGRcdTYxMDZcdTYxMzdcdTYyMjFcdTYyMjJcdTY0MTNcdTY0M2VcdTY0MWVcdTY0MmFcdTY0MmRcdTY0M2RcdTY0MmNcdTY0MGZcdTY0MWNcdTY0MTRcdTY0MGRcdTY0MzZcdTY0MTZcdTY0MTdcdTY0MDZcdTY1NmNcdTY1''@;'; put 'put ''OWZcdTY1YjBcdTY2OTdcdTY2ODlcdTY2ODdcdTY2ODhcdTY2OTZcdTY2ODRcdTY2OThcdTY2OGRcdTY3MDNcdTY5OTRcdTY5NmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY5NWFcdTY5NzdcdTY5NjBcdTY5NTRcdTY5NzVcdTY5MzBcdTY5ODJcdTY5NGFcdTY5''@;'; put 'put ''NjhcdTY5NmJcdTY5NWVcdTY5NTNcdTY5NzlcdTY5ODZcdTY5NWRcdTY5NjNcdTY5NWJcdTZiNDdcdTZiNzJcdTZiYzBcdTZiYmZcdTZiZDNcdTZiZmRcdTZlYTJcdTZlYWZcdTZlZDNcdTZlYjZcdTZlYzJcdTZlOTBcdTZlOWRcdTZlYzdcdTZlYzVcdTZlYTVcdTZlOThcdTZlYmNcdTZlYmFc''@;'; put 'put ''dTZlYWJcdTZlZDFcdTZlOTZcdTZlOWNcdTZlYzRcdTZlZDRcdTZlYWFcdTZlYTdcdTZlYjRcdTcxNGVcdTcxNTlcdTcxNjlcdTcxNjRcdTcxNDlcdTcxNjdcdTcxNWNcdTcxNmNcdTcxNjZcdTcxNGNcdTcxNjVcdTcxNWVcdTcxNDZcdTcxNjhcdTcxNTZcdTcyM2FcdTcyNTJcdTczMzdcdTcz''@;'; put 'put ''NDVcdTczM2ZcdTczM2VcdTc0NmZcdTc0NWFcdTc0NTVcdTc0NWZcdTc0NWVcdTc0NDFcdTc0M2ZcdTc0NTlcdTc0NWJcdTc0NWNcdTc1NzZcdTc1NzhcdTc2MDBcdTc1ZjBcdTc2MDFcdTc1ZjJcdTc1ZjFcdTc1ZmFcdTc1ZmZcdTc1ZjRcdTc1ZjNcdTc2ZGVcdTc2ZGZcdTc3NWJcdTc3NmJc''@;'; put 'put ''dTc3NjZcdTc3NWVcdTc3NjNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4M11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTgzXVtFXV09NDY4NDgrRSxMWzQ2ODQ4K0VdPUJbMTgzXVtFXSk7Zm9yKEJbMTg0XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Nzc5XHU3NzZhXHU3NzZjXHU3NzVjXHU3NzY1XHU3NzY4XHU3NzYyXHU3N2VlXHU3ODhlXHU3OGIwXHU3ODk3XHU3ODk4XHU3ODhjXHU3ODg5XHU3ODdjXHU3ODkxXHU3ODkzXHU3ODdmXHU3OTdhXHU3OTdmXHU3OTgx''@;'; put 'put ''XHU4NDJjXHU3OWJkXHU3YTFjXHU3YTFhXHU3YTIwXHU3YTE0XHU3YTFmXHU3YTFlXHU3YTlmXHU3YWEwXHU3Yjc3XHU3YmMwXHU3YjYwXHU3YjZlXHU3YjY3XHU3Y2IxXHU3Y2IzXHU3Y2I1XHU3ZDkzXHU3ZDc5XHU3ZDkxXHU3ZDgxXHU3ZDhmXHU3ZDViXHU3ZjZlXHU3ZjY5XHU3ZjZhXHU3''@;'; put 'put ''ZjcyXHU3ZmE5XHU3ZmE4XHU3ZmE0XHU4MDU2XHU4MDU4XHU4MDg2XHU4MDg0XHU4MTcxXHU4MTcwXHU4MTc4XHU4MTY1XHU4MTZlXHU4MTczXHU4MTZiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MTc5XHU4MTdhXHU4MTY2XHU4MjA1XHU4MjQ3XHU4NDgyXHU4''@;'; put 'put ''NDc3XHU4NDNkXHU4NDMxXHU4NDc1XHU4NDY2XHU4NDZiXHU4NDQ5XHU4NDZjXHU4NDViXHU4NDNjXHU4NDM1XHU4NDYxXHU4NDYzXHU4NDY5XHU4NDZkXHU4NDQ2XHU4NjVlXHU4NjVjXHU4NjVmXHU4NmY5XHU4NzEzXHU4NzA4XHU4NzA3XHU4NzAwXHU4NmZlXHU4NmZiXHU4NzAyXHU4NzAz''@;'; put 'put ''XHU4NzA2XHU4NzBhXHU4ODU5XHU4OGRmXHU4OGQ0XHU4OGQ5XHU4OGRjXHU4OGQ4XHU4OGRkXHU4OGUxXHU4OGNhXHU4OGQ1XHU4OGQyXHU4OTljXHU4OWUzXHU4YTZiXHU4YTcyXHU4YTczXHU4YTY2XHU4YTY5XHU4YTcwXHU4YTg3XHU4YTdjXHU4YTYzXHU4YWEwXHU4YTcxXHU4YTg1XHU4''@;'; put 'put ''YTZkXHU4YTYyXHU4YTZlXHU4YTZjXHU4YTc5XHU4YTdiXHU4YTNlXHU4YTY4XHU4YzYyXHU4YzhhXHU4Yzg5XHU4Y2NhXHU4Y2M3XHU4Y2M4XHU4Y2M0XHU4Y2IyXHU4Y2MzXHU4Y2MyXHU4Y2M1XHU4ZGUxXHU4ZGRmXHU4ZGU4XHU4ZGVmXHU4ZGYzXHU4ZGZhXHU4ZGVhXHU4ZGU0XHU4ZGU2''@;'; put 'put ''XHU4ZWIyXHU4ZjAzXHU4ZjA5XHU4ZWZlXHU4ZjBhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4NF1bRV1dPTQ3MTA0K0UsTFs0NzEwNCtFXT1CWzE4NF1bRV0pO2ZvcihCWzE4NV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGY5Zlx1OGZiMlx1OTA0Ylx1OTA0YVx1OTA1M1x1OTA0Mlx1OTA1NFx1OTAzY1x1OTA1NVx1OTA1MFx1OTA0N1x1OTA0Zlx1OTA0ZVx1OTA0ZFx1OTA1MVx1OTAzZVx1OTA0MVx1OTExMlx1OTEx''@;'; put 'put ''N1x1OTE2Y1x1OTE2YVx1OTE2OVx1OTFjOVx1OTIzN1x1OTI1N1x1OTIzOFx1OTIzZFx1OTI0MFx1OTIzZVx1OTI1Ylx1OTI0Ylx1OTI2NFx1OTI1MVx1OTIzNFx1OTI0OVx1OTI0ZFx1OTI0NVx1OTIzOVx1OTIzZlx1OTI1YVx1OTU5OFx1OTY5OFx1OTY5NFx1OTY5NVx1OTZjZFx1OTZjYlx1''@;'; put 'put ''OTZjOVx1OTZjYVx1OTZmN1x1OTZmYlx1OTZmOVx1OTZmNlx1OTc1Nlx1OTc3NFx1OTc3Nlx1OTgxMFx1OTgxMVx1OTgxM1x1OTgwYVx1OTgxMlx1OTgwY1x1OThmY1x1OThmNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OThmZFx1OThmZVx1OTliM1x1OTliMVx1''@;'; put 'put ''OTliNFx1OWFlMVx1OWNlOVx1OWU4Mlx1OWYwZVx1OWYxM1x1OWYyMFx1NTBlN1x1NTBlZVx1NTBlNVx1NTBkNlx1NTBlZFx1NTBkYVx1NTBkNVx1NTBjZlx1NTBkMVx1NTBmMVx1NTBjZVx1NTBlOVx1NTE2Mlx1NTFmM1x1NTI4M1x1NTI4Mlx1NTMzMVx1NTNhZFx1NTVmZVx1NTYwMFx1NTYx''@;'; put 'put ''Ylx1NTYxN1x1NTVmZFx1NTYxNFx1NTYwNlx1NTYwOVx1NTYwZFx1NTYwZVx1NTVmN1x1NTYxNlx1NTYxZlx1NTYwOFx1NTYxMFx1NTVmNlx1NTcxOFx1NTcxNlx1NTg3NVx1NTg3ZVx1NTg4M1x1NTg5M1x1NTg4YVx1NTg3OVx1NTg4NVx1NTg3ZFx1NThmZFx1NTkyNVx1NTkyMlx1NTkyNFx1''@;'; put 'put ''NTk2YVx1NTk2OVx1NWFlMVx1NWFlNlx1NWFlOVx1NWFkN1x1NWFkNlx1NWFkOFx1NWFlM1x1NWI3NVx1NWJkZVx1NWJlN1x1NWJlMVx1NWJlNVx1NWJlNlx1NWJlOFx1NWJlMlx1NWJlNFx1NWJkZlx1NWMwZFx1NWM2Mlx1NWQ4NFx1NWQ4N1x1NWU1Ylx1NWU2M1x1NWU1NVx1NWU1N1x1NWU1''@;'; put 'put ''NFx1NWVkM1x1NWVkNlx1NWYwYVx1NWY0Nlx1NWY3MFx1NWZiOVx1NjE0N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODVdW0VdXT00NzM2MCtFLExbNDczNjArRV09QlsxODVdW0VdKTtm''@;'; put 'put ''b3IoQlsxODZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxM2ZcdTYxNGJcdTYxNzdcdTYxNjJcdTYxNjNcdTYxNWZcdTYxNWFcdTYxNThcdTYxNzVcdTYyMmFcdTY0ODdcdTY0NThcdTY0NTRcdTY0YTRcdTY0NzhcdTY0NWZcdTY0''@;'; put 'put ''N2FcdTY0NTFcdTY0NjdcdTY0MzRcdTY0NmRcdTY0N2JcdTY1NzJcdTY1YTFcdTY1ZDdcdTY1ZDZcdTY2YTJcdTY2YThcdTY2OWRcdTY5OWNcdTY5YThcdTY5OTVcdTY5YzFcdTY5YWVcdTY5ZDNcdTY5Y2JcdTY5OWJcdTY5YjdcdTY5YmJcdTY5YWJcdTY5YjRcdTY5ZDBcdTY5Y2RcdTY5YWRc''@;'; put 'put ''dTY5Y2NcdTY5YTZcdTY5YzNcdTY5YTNcdTZiNDlcdTZiNGNcdTZjMzNcdTZmMzNcdTZmMTRcdTZlZmVcdTZmMTNcdTZlZjRcdTZmMjlcdTZmM2VcdTZmMjBcdTZmMmNcdTZmMGZcdTZmMDJcdTZmMjJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZlZmZcdTZlZWZc''@;'; put 'put ''dTZmMDZcdTZmMzFcdTZmMzhcdTZmMzJcdTZmMjNcdTZmMTVcdTZmMmJcdTZmMmZcdTZmODhcdTZmMmFcdTZlZWNcdTZmMDFcdTZlZjJcdTZlY2NcdTZlZjdcdTcxOTRcdTcxOTlcdTcxN2RcdTcxOGFcdTcxODRcdTcxOTJcdTcyM2VcdTcyOTJcdTcyOTZcdTczNDRcdTczNTBcdTc0NjRcdTc0''@;'; put 'put ''NjNcdTc0NmFcdTc0NzBcdTc0NmRcdTc1MDRcdTc1OTFcdTc2MjdcdTc2MGRcdTc2MGJcdTc2MDlcdTc2MTNcdTc2ZTFcdTc2ZTNcdTc3ODRcdTc3N2RcdTc3N2ZcdTc3NjFcdTc4YzFcdTc4OWZcdTc4YTdcdTc4YjNcdTc4YTlcdTc4YTNcdTc5OGVcdTc5OGZcdTc5OGRcdTdhMmVcdTdhMzFc''@;'; put 'put ''dTdhYWFcdTdhYTlcdTdhZWRcdTdhZWZcdTdiYTFcdTdiOTVcdTdiOGJcdTdiNzVcdTdiOTdcdTdiOWRcdTdiOTRcdTdiOGZcdTdiYjhcdTdiODdcdTdiODRcdTdjYjlcdTdjYmRcdTdjYmVcdTdkYmJcdTdkYjBcdTdkOWNcdTdkYmRcdTdkYmVcdTdkYTBcdTdkY2FcdTdkYjRcdTdkYjJcdTdk''@;'; put 'put ''YjFcdTdkYmFcdTdkYTJcdTdkYmZcdTdkYjVcdTdkYjhcdTdkYWRcdTdkZDJcdTdkYzdcdTdkYWNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTg2XVtFXV09NDc2MTYrRSxMWzQ3NjE2K0Vd''@;'; put 'put ''PUJbMTg2XVtFXSk7Zm9yKEJbMTg3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZjcwXHU3ZmUwXHU3ZmUxXHU3ZmRmXHU4MDVlXHU4MDVhXHU4MDg3XHU4MTUwXHU4MTgwXHU4MThmXHU4MTg4XHU4MThhXHU4MTdmXHU4MTgyXHU4''@;'; put 'put ''MWU3XHU4MWZhXHU4MjA3XHU4MjE0XHU4MjFlXHU4MjRiXHU4NGM5XHU4NGJmXHU4NGM2XHU4NGM0XHU4NDk5XHU4NDllXHU4NGIyXHU4NDljXHU4NGNiXHU4NGI4XHU4NGMwXHU4NGQzXHU4NDkwXHU4NGJjXHU4NGQxXHU4NGNhXHU4NzNmXHU4NzFjXHU4NzNiXHU4NzIyXHU4NzI1XHU4NzM0''@;'; put 'put ''XHU4NzE4XHU4NzU1XHU4NzM3XHU4NzI5XHU4OGYzXHU4OTAyXHU4OGY0XHU4OGY5XHU4OGY4XHU4OGZkXHU4OGU4XHU4OTFhXHU4OGVmXHU4YWE2XHU4YThjXHU4YTllXHU4YWEzXHU4YThkXHU4YWExXHU4YTkzXHU4YWE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU4YWFhXHU4YWE1XHU4YWE4XHU4YTk4XHU4YTkxXHU4YTlhXHU4YWE3XHU4YzZhXHU4YzhkXHU4YzhjXHU4Y2QzXHU4Y2QxXHU4Y2QyXHU4ZDZiXHU4ZDk5XHU4ZDk1XHU4ZGZjXHU4ZjE0XHU4ZjEyXHU4ZjE1XHU4ZjEzXHU4ZmEzXHU5MDYwXHU5MDU4XHU5MDVjXHU5MDYzXHU5MDU5XHU5''@;'; put 'put ''MDVlXHU5MDYyXHU5MDVkXHU5MDViXHU5MTE5XHU5MTE4XHU5MTFlXHU5MTc1XHU5MTc4XHU5MTc3XHU5MTc0XHU5Mjc4XHU5MjgwXHU5Mjg1XHU5Mjk4XHU5Mjk2XHU5MjdiXHU5MjkzXHU5MjljXHU5MmE4XHU5MjdjXHU5MjkxXHU5NWExXHU5NWE4XHU5NWE5XHU5NWEzXHU5NWE1XHU5NWE0''@;'; put 'put ''XHU5Njk5XHU5NjljXHU5NjliXHU5NmNjXHU5NmQyXHU5NzAwXHU5NzdjXHU5Nzg1XHU5N2Y2XHU5ODE3XHU5ODE4XHU5OGFmXHU5OGIxXHU5OTAzXHU5OTA1XHU5OTBjXHU5OTA5XHU5OWMxXHU5YWFmXHU5YWIwXHU5YWU2XHU5YjQxXHU5YjQyXHU5Y2Y0XHU5Y2Y2XHU5Y2YzXHU5ZWJjXHU5''@;'; put 'put ''ZjNiXHU5ZjRhXHU1MTA0XHU1MTAwXHU1MGZiXHU1MGY1XHU1MGY5XHU1MTAyXHU1MTA4XHU1MTA5XHU1MTA1XHU1MWRjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4N11bRV1dPTQ3ODcy''@;'; put 'put ''K0UsTFs0Nzg3MitFXT1CWzE4N11bRV0pO2ZvcihCWzE4OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTI4N1x1NTI4OFx1NTI4OVx1NTI4ZFx1NTI4YVx1NTJmMFx1NTNiMlx1NTYyZVx1NTYzYlx1NTYzOVx1NTYzMlx1NTYzZlx1''@;'; put 'put ''NTYzNFx1NTYyOVx1NTY1M1x1NTY0ZVx1NTY1N1x1NTY3NFx1NTYzNlx1NTYyZlx1NTYzMFx1NTg4MFx1NTg5Zlx1NTg5ZVx1NThiM1x1NTg5Y1x1NThhZVx1NThhOVx1NThhNlx1NTk2ZFx1NWIwOVx1NWFmYlx1NWIwYlx1NWFmNVx1NWIwY1x1NWIwOFx1NWJlZVx1NWJlY1x1NWJlOVx1NWJl''@;'; put 'put ''Ylx1NWM2NFx1NWM2NVx1NWQ5ZFx1NWQ5NFx1NWU2Mlx1NWU1Zlx1NWU2MVx1NWVlMlx1NWVkYVx1NWVkZlx1NWVkZFx1NWVlM1x1NWVlMFx1NWY0OFx1NWY3MVx1NWZiN1x1NWZiNVx1NjE3Nlx1NjE2N1x1NjE2ZVx1NjE1ZFx1NjE1NVx1NjE4Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1NjE3Y1x1NjE3MFx1NjE2Ylx1NjE3ZVx1NjFhN1x1NjE5MFx1NjFhYlx1NjE4ZVx1NjFhY1x1NjE5YVx1NjFhNFx1NjE5NFx1NjFhZVx1NjIyZVx1NjQ2OVx1NjQ2Zlx1NjQ3OVx1NjQ5ZVx1NjRiMlx1NjQ4OFx1NjQ5MFx1NjRiMFx1NjRhNVx1NjQ5M1x1NjQ5NVx1''@;'; put 'put ''NjRhOVx1NjQ5Mlx1NjRhZVx1NjRhZFx1NjRhYlx1NjQ5YVx1NjRhY1x1NjQ5OVx1NjRhMlx1NjRiM1x1NjU3NVx1NjU3N1x1NjU3OFx1NjZhZVx1NjZhYlx1NjZiNFx1NjZiMVx1NmEyM1x1NmExZlx1NjllOFx1NmEwMVx1NmExZVx1NmExOVx1NjlmZFx1NmEyMVx1NmExM1x1NmEwYVx1Njlm''@;'; put 'put ''M1x1NmEwMlx1NmEwNVx1NjllZFx1NmExMVx1NmI1MFx1NmI0ZVx1NmJhNFx1NmJjNVx1NmJjNlx1NmYzZlx1NmY3Y1x1NmY4NFx1NmY1MVx1NmY2Nlx1NmY1NFx1NmY4Nlx1NmY2ZFx1NmY1Ylx1NmY3OFx1NmY2ZVx1NmY4ZVx1NmY3YVx1NmY3MFx1NmY2NFx1NmY5N1x1NmY1OFx1NmVkNVx1''@;'; put 'put ''NmY2Zlx1NmY2MFx1NmY1Zlx1NzE5Zlx1NzFhY1x1NzFiMVx1NzFhOFx1NzI1Nlx1NzI5Ylx1NzM0ZVx1NzM1N1x1NzQ2OVx1NzQ4Ylx1NzQ4M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsx''@;'; put 'put ''ODhdW0VdXT00ODEyOCtFLExbNDgxMjgrRV09QlsxODhdW0VdKTtmb3IoQlsxODldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0N2VcdTc0ODBcdTc1N2ZcdTc2MjBcdTc2MjlcdTc2MWZcdTc2MjRcdTc2MjZcdTc2MjFcdTc2MjJc''@;'; put 'put ''dTc2OWFcdTc2YmFcdTc2ZTRcdTc3OGVcdTc3ODdcdTc3OGNcdTc3OTFcdTc3OGJcdTc4Y2JcdTc4YzVcdTc4YmFcdTc4Y2FcdTc4YmVcdTc4ZDVcdTc4YmNcdTc4ZDBcdTdhM2ZcdTdhM2NcdTdhNDBcdTdhM2RcdTdhMzdcdTdhM2JcdTdhYWZcdTdhYWVcdTdiYWRcdTdiYjFcdTdiYzRcdTdi''@;'; put 'put ''YjRcdTdiYzZcdTdiYzdcdTdiYzFcdTdiYTBcdTdiY2NcdTdjY2FcdTdkZTBcdTdkZjRcdTdkZWZcdTdkZmJcdTdkZDhcdTdkZWNcdTdkZGRcdTdkZThcdTdkZTNcdTdkZGFcdTdkZGVcdTdkZTlcdTdkOWVcdTdkZDlcdTdkZjJcdTdkZjlcdTdmNzVcdTdmNzdcdTdmYWZcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdmZTlcdTgwMjZcdTgxOWJcdTgxOWNcdTgxOWRcdTgxYTBcdTgxOWFcdTgxOThcdTg1MTdcdTg1M2RcdTg1MWFcdTg0ZWVcdTg1MmNcdTg1MmRcdTg1MTNcdTg1MTFcdTg1MjNcdTg1MjFcdTg1MTRcdTg0ZWNcdTg1MjVcdTg0ZmZcdTg1MDZc''@;'; put 'put ''dTg3ODJcdTg3NzRcdTg3NzZcdTg3NjBcdTg3NjZcdTg3NzhcdTg3NjhcdTg3NTlcdTg3NTdcdTg3NGNcdTg3NTNcdTg4NWJcdTg4NWRcdTg5MTBcdTg5MDdcdTg5MTJcdTg5MTNcdTg5MTVcdTg5MGFcdThhYmNcdThhZDJcdThhYzdcdThhYzRcdThhOTVcdThhY2JcdThhZjhcdThhYjJcdThh''@;'; put 'put ''YzlcdThhYzJcdThhYmZcdThhYjBcdThhZDZcdThhY2RcdThhYjZcdThhYjlcdThhZGJcdThjNGNcdThjNGVcdThjNmNcdThjZTBcdThjZGVcdThjZTZcdThjZTRcdThjZWNcdThjZWRcdThjZTJcdThjZTNcdThjZGNcdThjZWFcdThjZTFcdThkNmRcdThkOWZcdThkYTNcdThlMmJcdThlMTBc''@;'; put 'put ''dThlMWRcdThlMjJcdThlMGZcdThlMjlcdThlMWZcdThlMjFcdThlMWVcdThlYmFcdThmMWRcdThmMWJcdThmMWZcdThmMjlcdThmMjZcdThmMmFcdThmMWNcdThmMWVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4OV1bRV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKGdlW0JbMTg5XVtFXV09NDgzODQrRSxMWzQ4Mzg0K0VdPUJbMTg5XVtFXSk7Zm9yKEJbMTkwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZjI1XHU5MDY5XHU5MDZlXHU5MDY4XHU5MDZkXHU5MDc3XHU5MTMwXHU5MTJk''@;'; put 'put ''XHU5MTI3XHU5MTMxXHU5MTg3XHU5MTg5XHU5MThiXHU5MTgzXHU5MmM1XHU5MmJiXHU5MmI3XHU5MmVhXHU5MmFjXHU5MmU0XHU5MmMxXHU5MmIzXHU5MmJjXHU5MmQyXHU5MmM3XHU5MmYwXHU5MmIyXHU5NWFkXHU5NWIxXHU5NzA0XHU5NzA2XHU5NzA3XHU5NzA5XHU5NzYwXHU5NzhkXHU5''@;'; put 'put ''NzhiXHU5NzhmXHU5ODIxXHU5ODJiXHU5ODFjXHU5OGIzXHU5OTBhXHU5OTEzXHU5OTEyXHU5OTE4XHU5OWRkXHU5OWQwXHU5OWRmXHU5OWRiXHU5OWQxXHU5OWQ1XHU5OWQyXHU5OWQ5XHU5YWI3XHU5YWVlXHU5YWVmXHU5YjI3XHU5YjQ1XHU5YjQ0XHU5Yjc3XHU5YjZmXHU5ZDA2XHU5ZDA5''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDAzXHU5ZWE5XHU5ZWJlXHU5ZWNlXHU1OGE4XHU5ZjUyXHU1MTEyXHU1MTE4XHU1MTE0XHU1MTEwXHU1MTE1XHU1MTgwXHU1MWFhXHU1MWRkXHU1MjkxXHU1MjkzXHU1MmYzXHU1NjU5XHU1NjZiXHU1Njc5XHU1NjY5''@;'; put 'put ''XHU1NjY0XHU1Njc4XHU1NjZhXHU1NjY4XHU1NjY1XHU1NjcxXHU1NjZmXHU1NjZjXHU1NjYyXHU1Njc2XHU1OGMxXHU1OGJlXHU1OGM3XHU1OGM1XHU1OTZlXHU1YjFkXHU1YjM0XHU1Yjc4XHU1YmYwXHU1YzBlXHU1ZjRhXHU2MWIyXHU2MTkxXHU2MWE5XHU2MThhXHU2MWNkXHU2MWI2XHU2''@;'; put 'put ''MWJlXHU2MWNhXHU2MWM4XHU2MjMwXHU2NGM1XHU2NGMxXHU2NGNiXHU2NGJiXHU2NGJjXHU2NGRhXHU2NGM0XHU2NGM3XHU2NGMyXHU2NGNkXHU2NGJmXHU2NGQyXHU2NGQ0XHU2NGJlXHU2NTc0XHU2NmM2XHU2NmM5XHU2NmI5XHU2NmM0XHU2NmM3XHU2NmI4XHU2YTNkXHU2YTM4XHU2YTNh''@;'; put 'put ''XHU2YTU5XHU2YTZiXHU2YTU4XHU2YTM5XHU2YTQ0XHU2YTYyXHU2YTYxXHU2YTRiXHU2YTQ3XHU2YTM1XHU2YTVmXHU2YTQ4XHU2YjU5XHU2Yjc3XHU2YzA1XHU2ZmMyXHU2ZmIxXHU2ZmExXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTBd''@;'; put 'put ''W0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5MF1bRV1dPTQ4NjQwK0UsTFs0ODY0MCtFXT1CWzE5MF1bRV0pO2ZvcihCWzE5MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZjM1x1NmZhNFx1NmZjMVx1NmZhN1x1NmZiM1x1NmZj''@;'; put 'put ''MFx1NmZiOVx1NmZiNlx1NmZhNlx1NmZhMFx1NmZiNFx1NzFiZVx1NzFjOVx1NzFkMFx1NzFkMlx1NzFjOFx1NzFkNVx1NzFiOVx1NzFjZVx1NzFkOVx1NzFkY1x1NzFjM1x1NzFjNFx1NzM2OFx1NzQ5Y1x1NzRhM1x1NzQ5OFx1NzQ5Zlx1NzQ5ZVx1NzRlMlx1NzUwY1x1NzUwZFx1NzYzNFx1''@;'; put 'put ''NzYzOFx1NzYzYVx1NzZlN1x1NzZlNVx1NzdhMFx1Nzc5ZVx1Nzc5Zlx1NzdhNVx1NzhlOFx1NzhkYVx1NzhlY1x1NzhlN1x1NzlhNlx1N2E0ZFx1N2E0ZVx1N2E0Nlx1N2E0Y1x1N2E0Ylx1N2FiYVx1N2JkOVx1N2MxMVx1N2JjOVx1N2JlNFx1N2JkYlx1N2JlMVx1N2JlOVx1N2JlNlx1N2Nk''@;'; put 'put ''NVx1N2NkNlx1N2UwYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2UxMVx1N2UwOFx1N2UxYlx1N2UyM1x1N2UxZVx1N2UxZFx1N2UwOVx1N2UxMFx1N2Y3OVx1N2ZiMlx1N2ZmMFx1N2ZmMVx1N2ZlZVx1ODAyOFx1ODFiM1x1ODFhOVx1ODFhOFx1ODFmYlx1ODIw''@;'; put 'put ''OFx1ODI1OFx1ODI1OVx1ODU0YVx1ODU1OVx1ODU0OFx1ODU2OFx1ODU2OVx1ODU0M1x1ODU0OVx1ODU2ZFx1ODU2YVx1ODU1ZVx1ODc4M1x1ODc5Zlx1ODc5ZVx1ODdhMlx1ODc4ZFx1ODg2MVx1ODkyYVx1ODkzMlx1ODkyNVx1ODkyYlx1ODkyMVx1ODlhYVx1ODlhNlx1OGFlNlx1OGFmYVx1''@;'; put 'put ''OGFlYlx1OGFmMVx1OGIwMFx1OGFkY1x1OGFlN1x1OGFlZVx1OGFmZVx1OGIwMVx1OGIwMlx1OGFmN1x1OGFlZFx1OGFmM1x1OGFmNlx1OGFmY1x1OGM2Ylx1OGM2ZFx1OGM5M1x1OGNmNFx1OGU0NFx1OGUzMVx1OGUzNFx1OGU0Mlx1OGUzOVx1OGUzNVx1OGYzYlx1OGYyZlx1OGYzOFx1OGYz''@;'; put 'put ''M1x1OGZhOFx1OGZhNlx1OTA3NVx1OTA3NFx1OTA3OFx1OTA3Mlx1OTA3Y1x1OTA3YVx1OTEzNFx1OTE5Mlx1OTMyMFx1OTMzNlx1OTJmOFx1OTMzM1x1OTMyZlx1OTMyMlx1OTJmY1x1OTMyYlx1OTMwNFx1OTMxYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5MV0ubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUJbMTkxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTFdW0VdXT00ODg5NitFLExbNDg4OTYrRV09QlsxOTFdW0VdKTtmb3IoQlsxOTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMTBcdTkzMjZcdTkzMjFcdTkz''@;'; put 'put ''MTVcdTkzMmVcdTkzMTlcdTk1YmJcdTk2YTdcdTk2YThcdTk2YWFcdTk2ZDVcdTk3MGVcdTk3MTFcdTk3MTZcdTk3MGRcdTk3MTNcdTk3MGZcdTk3NWJcdTk3NWNcdTk3NjZcdTk3OThcdTk4MzBcdTk4MzhcdTk4M2JcdTk4MzdcdTk4MmRcdTk4MzlcdTk4MjRcdTk5MTBcdTk5MjhcdTk5MWVc''@;'; put 'put ''dTk5MWJcdTk5MjFcdTk5MWFcdTk5ZWRcdTk5ZTJcdTk5ZjFcdTlhYjhcdTlhYmNcdTlhZmJcdTlhZWRcdTliMjhcdTliOTFcdTlkMTVcdTlkMjNcdTlkMjZcdTlkMjhcdTlkMTJcdTlkMWJcdTllZDhcdTllZDRcdTlmOGRcdTlmOWNcdTUxMmFcdTUxMWZcdTUxMjFcdTUxMzJcdTUyZjVcdTU2''@;'; put 'put ''OGVcdTU2ODBcdTU2OTBcdTU2ODVcdTU2ODdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2OGZcdTU4ZDVcdTU4ZDNcdTU4ZDFcdTU4Y2VcdTViMzBcdTViMmFcdTViMjRcdTViN2FcdTVjMzdcdTVjNjhcdTVkYmNcdTVkYmFcdTVkYmRcdTVkYjhcdTVlNmJcdTVm''@;'; put 'put ''NGNcdTVmYmRcdTYxYzlcdTYxYzJcdTYxYzdcdTYxZTZcdTYxY2JcdTYyMzJcdTYyMzRcdTY0Y2VcdTY0Y2FcdTY0ZDhcdTY0ZTBcdTY0ZjBcdTY0ZTZcdTY0ZWNcdTY0ZjFcdTY0ZTJcdTY0ZWRcdTY1ODJcdTY1ODNcdTY2ZDlcdTY2ZDZcdTZhODBcdTZhOTRcdTZhODRcdTZhYTJcdTZhOWNc''@;'; put 'put ''dTZhZGJcdTZhYTNcdTZhN2VcdTZhOTdcdTZhOTBcdTZhYTBcdTZiNWNcdTZiYWVcdTZiZGFcdTZjMDhcdTZmZDhcdTZmZjFcdTZmZGZcdTZmZTBcdTZmZGJcdTZmZTRcdTZmZWJcdTZmZWZcdTZmODBcdTZmZWNcdTZmZTFcdTZmZTlcdTZmZDVcdTZmZWVcdTZmZjBcdTcxZTdcdTcxZGZcdTcx''@;'; put 'put ''ZWVcdTcxZTZcdTcxZTVcdTcxZWRcdTcxZWNcdTcxZjRcdTcxZTBcdTcyMzVcdTcyNDZcdTczNzBcdTczNzJcdTc0YTlcdTc0YjBcdTc0YTZcdTc0YThcdTc2NDZcdTc2NDJcdTc2NGNcdTc2ZWFcdTc3YjNcdTc3YWFcdTc3YjBcdTc3YWNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTJd''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5Ml1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTkyXVtFXV09NDkxNTIrRSxMWzQ5MTUyK0VdPUJbMTkyXVtFXSk7Zm9yKEJbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2E3XHU3''@;'; put 'put ''N2FkXHU3N2VmXHU3OGY3XHU3OGZhXHU3OGY0XHU3OGVmXHU3OTAxXHU3OWE3XHU3OWFhXHU3YTU3XHU3YWJmXHU3YzA3XHU3YzBkXHU3YmZlXHU3YmY3XHU3YzBjXHU3YmUwXHU3Y2UwXHU3Y2RjXHU3Y2RlXHU3Y2UyXHU3Y2RmXHU3Y2Q5XHU3Y2RkXHU3ZTJlXHU3ZTNlXHU3ZTQ2XHU3ZTM3''@;'; put 'put ''XHU3ZTMyXHU3ZTQzXHU3ZTJiXHU3ZTNkXHU3ZTMxXHU3ZTQ1XHU3ZTQxXHU3ZTM0XHU3ZTM5XHU3ZTQ4XHU3ZTM1XHU3ZTNmXHU3ZTJmXHU3ZjQ0XHU3ZmYzXHU3ZmZjXHU4MDcxXHU4MDcyXHU4MDcwXHU4MDZmXHU4MDczXHU4MWM2XHU4MWMzXHU4MWJhXHU4MWMyXHU4MWMwXHU4MWJmXHU4''@;'; put 'put ''MWJkXHU4MWM5XHU4MWJlXHU4MWU4XHU4MjA5XHU4MjcxXHU4NWFhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTg0XHU4NTdlXHU4NTljXHU4NTkxXHU4NTk0XHU4NWFmXHU4NTliXHU4NTg3XHU4NWE4XHU4NThhXHU4NjY3XHU4N2MwXHU4N2QxXHU4N2IzXHU4''@;'; put 'put ''N2QyXHU4N2M2XHU4N2FiXHU4N2JiXHU4N2JhXHU4N2M4XHU4N2NiXHU4OTNiXHU4OTM2XHU4OTQ0XHU4OTM4XHU4OTNkXHU4OWFjXHU4YjBlXHU4YjE3XHU4YjE5XHU4YjFiXHU4YjBhXHU4YjIwXHU4YjFkXHU4YjA0XHU4YjEwXHU4YzQxXHU4YzNmXHU4YzczXHU4Y2ZhXHU4Y2ZkXHU4Y2Zj''@;'; put 'put ''XHU4Y2Y4XHU4Y2ZiXHU4ZGE4XHU4ZTQ5XHU4ZTRiXHU4ZTQ4XHU4ZTRhXHU4ZjQ0XHU4ZjNlXHU4ZjQyXHU4ZjQ1XHU4ZjNmXHU5MDdmXHU5MDdkXHU5MDg0XHU5MDgxXHU5MDgyXHU5MDgwXHU5MTM5XHU5MWEzXHU5MTllXHU5MTljXHU5MzRkXHU5MzgyXHU5MzI4XHU5Mzc1XHU5MzRhXHU5''@;'; put 'put ''MzY1XHU5MzRiXHU5MzE4XHU5MzdlXHU5MzZjXHU5MzViXHU5MzcwXHU5MzVhXHU5MzU0XHU5NWNhXHU5NWNiXHU5NWNjXHU5NWM4XHU5NWM2XHU5NmIxXHU5NmI4XHU5NmQ2XHU5NzFjXHU5NzFlXHU5N2EwXHU5N2QzXHU5ODQ2XHU5OGI2XHU5OTM1XHU5YTAxXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMTkzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5M11bRV1dPTQ5NDA4K0UsTFs0OTQwOCtFXT1CWzE5M11bRV0pO2ZvcihCWzE5NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1OTlmZlx1OWJhZVx1OWJhYlx1OWJhYVx1OWJhZFx1OWQzYlx1OWQzZlx1OWU4Ylx1OWVjZlx1OWVkZVx1OWVkY1x1OWVkZFx1OWVkYlx1OWYzZVx1OWY0Ylx1NTNlMlx1NTY5NVx1NTZhZVx1NThkOVx1NThkOFx1NWIzOFx1NWY1ZFx1NjFlM1x1NjIzM1x1NjRmNFx1NjRmMlx1NjRm''@;'; put 'put ''ZVx1NjUwNlx1NjRmYVx1NjRmYlx1NjRmN1x1NjViN1x1NjZkY1x1NjcyNlx1NmFiM1x1NmFhY1x1NmFjM1x1NmFiYlx1NmFiOFx1NmFjMlx1NmFhZVx1NmFhZlx1NmI1Zlx1NmI3OFx1NmJhZlx1NzAwOVx1NzAwYlx1NmZmZVx1NzAwNlx1NmZmYVx1NzAxMVx1NzAwZlx1NzFmYlx1NzFmY1x1''@;'; put 'put ''NzFmZVx1NzFmOFx1NzM3N1x1NzM3NVx1NzRhN1x1NzRiZlx1NzUxNVx1NzY1Nlx1NzY1OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzY1Mlx1NzdiZFx1NzdiZlx1NzdiYlx1NzdiY1x1NzkwZVx1NzlhZVx1N2E2MVx1N2E2Mlx1N2E2MFx1N2FjNFx1N2FjNVx1''@;'; put 'put ''N2MyYlx1N2MyN1x1N2MyYVx1N2MxZVx1N2MyM1x1N2MyMVx1N2NlN1x1N2U1NFx1N2U1NVx1N2U1ZVx1N2U1YVx1N2U2MVx1N2U1Mlx1N2U1OVx1N2Y0OFx1N2ZmOVx1N2ZmYlx1ODA3N1x1ODA3Nlx1ODFjZFx1ODFjZlx1ODIwYVx1ODVjZlx1ODVhOVx1ODVjZFx1ODVkMFx1ODVjOVx1ODVi''@;'; put 'put ''MFx1ODViYVx1ODViOVx1ODVhNlx1ODdlZlx1ODdlY1x1ODdmMlx1ODdlMFx1ODk4Nlx1ODliMlx1ODlmNFx1OGIyOFx1OGIzOVx1OGIyY1x1OGIyYlx1OGM1MFx1OGQwNVx1OGU1OVx1OGU2M1x1OGU2Nlx1OGU2NFx1OGU1Zlx1OGU1NVx1OGVjMFx1OGY0OVx1OGY0ZFx1OTA4N1x1OTA4M1x1''@;'; put 'put ''OTA4OFx1OTFhYlx1OTFhY1x1OTFkMFx1OTM5NFx1OTM4YVx1OTM5Nlx1OTNhMlx1OTNiM1x1OTNhZVx1OTNhY1x1OTNiMFx1OTM5OFx1OTM5YVx1OTM5N1x1OTVkNFx1OTVkNlx1OTVkMFx1OTVkNVx1OTZlMlx1OTZkY1x1OTZkOVx1OTZkYlx1OTZkZVx1OTcyNFx1OTdhM1x1OTdhNlx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTRdW0VdXT00OTY2NCtFLExbNDk2NjQrRV09QlsxOTRdW0VdKTtmb3IoQlsxOTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTk3YWRcdTk3ZjlcdTk4NGRcdTk4NGZcdTk4NGNcdTk4NGVcdTk4NTNcdTk4YmFcdTk5M2VcdTk5M2ZcdTk5M2RcdTk5MmVcdTk5YTVcdTlhMGVcdTlhYzFcdTliMDNcdTliMDZcdTliNGZcdTliNGVcdTliNGRcdTliY2FcdTliYzlcdTliZmRcdTliYzhcdTli''@;'; put 'put ''YzBcdTlkNTFcdTlkNWRcdTlkNjBcdTllZTBcdTlmMTVcdTlmMmNcdTUxMzNcdTU2YTVcdTU4ZGVcdTU4ZGZcdTU4ZTJcdTViZjVcdTlmOTBcdTVlZWNcdTYxZjJcdTYxZjdcdTYxZjZcdTYxZjVcdTY1MDBcdTY1MGZcdTY2ZTBcdTY2ZGRcdTZhZTVcdTZhZGRcdTZhZGFcdTZhZDNcdTcwMWJc''@;'; put 'put ''dTcwMWZcdTcwMjhcdTcwMWFcdTcwMWRcdTcwMTVcdTcwMThcdTcyMDZcdTcyMGRcdTcyNThcdTcyYTJcdTczNzhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczN2FcdTc0YmRcdTc0Y2FcdTc0ZTNcdTc1ODdcdTc1ODZcdTc2NWZcdTc2NjFcdTc3YzdcdTc5MTlc''@;'; put 'put ''dTc5YjFcdTdhNmJcdTdhNjlcdTdjM2VcdTdjM2ZcdTdjMzhcdTdjM2RcdTdjMzdcdTdjNDBcdTdlNmJcdTdlNmRcdTdlNzlcdTdlNjlcdTdlNmFcdTdmODVcdTdlNzNcdTdmYjZcdTdmYjlcdTdmYjhcdTgxZDhcdTg1ZTlcdTg1ZGRcdTg1ZWFcdTg1ZDVcdTg1ZTRcdTg1ZTVcdTg1ZjdcdTg3''@;'; put 'put ''ZmJcdTg4MDVcdTg4MGRcdTg3ZjlcdTg3ZmVcdTg5NjBcdTg5NWZcdTg5NTZcdTg5NWVcdThiNDFcdThiNWNcdThiNThcdThiNDlcdThiNWFcdThiNGVcdThiNGZcdThiNDZcdThiNTlcdThkMDhcdThkMGFcdThlN2NcdThlNzJcdThlODdcdThlNzZcdThlNmNcdThlN2FcdThlNzRcdThmNTRc''@;'; put 'put ''dThmNGVcdThmYWRcdTkwOGFcdTkwOGJcdTkxYjFcdTkxYWVcdTkzZTFcdTkzZDFcdTkzZGZcdTkzYzNcdTkzYzhcdTkzZGNcdTkzZGRcdTkzZDZcdTkzZTJcdTkzY2RcdTkzZDhcdTkzZTRcdTkzZDdcdTkzZThcdTk1ZGNcdTk2YjRcdTk2ZTNcdTk3MmFcdTk3MjdcdTk3NjFcdTk3ZGNcdTk3''@;'; put 'put ''ZmJcdTk4NWVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5NV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTk1XVtFXV09NDk5MjArRSxMWzQ5OTIwK0VdPUJbMTk1XVtFXSk7Zm9yKEJbMTk2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODU4XHU5ODViXHU5OGJjXHU5OTQ1XHU5OTQ5XHU5YTE2XHU5YTE5XHU5YjBkXHU5YmU4XHU5YmU3XHU5YmQ2XHU5YmRiXHU5ZDg5XHU5ZDYxXHU5ZDcyXHU5ZDZhXHU5ZDZjXHU5ZTkyXHU5ZTk3XHU5ZTkzXHU5ZWI0XHU1MmY4XHU1''@;'; put 'put ''NmE4XHU1NmI3XHU1NmI2XHU1NmI0XHU1NmJjXHU1OGU0XHU1YjQwXHU1YjQzXHU1YjdkXHU1YmY2XHU1ZGM5XHU2MWY4XHU2MWZhXHU2NTE4XHU2NTE0XHU2NTE5XHU2NmU2XHU2NzI3XHU2YWVjXHU3MDNlXHU3MDMwXHU3MDMyXHU3MjEwXHU3MzdiXHU3NGNmXHU3NjYyXHU3NjY1XHU3OTI2''@;'; put 'put ''XHU3OTJhXHU3OTJjXHU3OTJiXHU3YWM3XHU3YWY2XHU3YzRjXHU3YzQzXHU3YzRkXHU3Y2VmXHU3Y2YwXHU4ZmFlXHU3ZTdkXHU3ZTdjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZTgyXHU3ZjRjXHU4MDAwXHU4MWRhXHU4MjY2XHU4NWZiXHU4NWY5XHU4NjEx''@;'; put 'put ''XHU4NWZhXHU4NjA2XHU4NjBiXHU4NjA3XHU4NjBhXHU4ODE0XHU4ODE1XHU4OTY0XHU4OWJhXHU4OWY4XHU4YjcwXHU4YjZjXHU4YjY2XHU4YjZmXHU4YjVmXHU4YjZiXHU4ZDBmXHU4ZDBkXHU4ZTg5XHU4ZTgxXHU4ZTg1XHU4ZTgyXHU5MWI0XHU5MWNiXHU5NDE4XHU5NDAzXHU5M2ZkXHU5''@;'; put 'put ''NWUxXHU5NzMwXHU5OGM0XHU5OTUyXHU5OTUxXHU5OWE4XHU5YTJiXHU5YTMwXHU5YTM3XHU5YTM1XHU5YzEzXHU5YzBkXHU5ZTc5XHU5ZWI1XHU5ZWU4XHU5ZjJmXHU5ZjVmXHU5ZjYzXHU5ZjYxXHU1MTM3XHU1MTM4XHU1NmMxXHU1NmMwXHU1NmMyXHU1OTE0XHU1YzZjXHU1ZGNkXHU2MWZj''@;'; put 'put ''XHU2MWZlXHU2NTFkXHU2NTFjXHU2NTk1XHU2NmU5XHU2YWZiXHU2YjA0XHU2YWZhXHU2YmIyXHU3MDRjXHU3MjFiXHU3MmE3XHU3NGQ2XHU3NGQ0XHU3NjY5XHU3N2QzXHU3YzUwXHU3ZThmXHU3ZThjXHU3ZmJjXHU4NjE3XHU4NjJkXHU4NjFhXHU4ODIzXHU4ODIyXHU4ODIxXHU4ODFmXHU4''@;'; put 'put ''OTZhXHU4OTZjXHU4OWJkXHU4Yjc0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5Nl1bRV1dPTUwMTc2K0UsTFs1MDE3NitFXT1CWzE5Nl1bRV0pO2ZvcihCWzE5N109Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGI3N1x1OGI3ZFx1OGQxM1x1OGU4YVx1OGU4ZFx1OGU4Ylx1OGY1Zlx1OGZhZlx1OTFiYVx1OTQyZVx1OTQzM1x1OTQzNVx1OTQzYVx1OTQzOFx1OTQzMlx1OTQyYlx1OTVlMlx1OTczOFx1OTczOVx1OTczMlx1''@;'; put 'put ''OTdmZlx1OTg2N1x1OTg2NVx1OTk1N1x1OWE0NVx1OWE0M1x1OWE0MFx1OWEzZVx1OWFjZlx1OWI1NFx1OWI1MVx1OWMyZFx1OWMyNVx1OWRhZlx1OWRiNFx1OWRjMlx1OWRiOFx1OWU5ZFx1OWVlZlx1OWYxOVx1OWY1Y1x1OWY2Nlx1OWY2N1x1NTEzY1x1NTEzYlx1NTZjOFx1NTZjYVx1NTZj''@;'; put 'put ''OVx1NWI3Zlx1NWRkNFx1NWRkMlx1NWY0ZVx1NjFmZlx1NjUyNFx1NmIwYVx1NmI2MVx1NzA1MVx1NzA1OFx1NzM4MFx1NzRlNFx1NzU4YVx1NzY2ZVx1NzY2Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzliM1x1N2M2MFx1N2M1Zlx1ODA3ZVx1ODA3ZFx1ODFk''@;'; put 'put ''Zlx1ODk3Mlx1ODk2Zlx1ODlmY1x1OGI4MFx1OGQxNlx1OGQxN1x1OGU5MVx1OGU5M1x1OGY2MVx1OTE0OFx1OTQ0NFx1OTQ1MVx1OTQ1Mlx1OTczZFx1OTczZVx1OTdjM1x1OTdjMVx1OTg2Ylx1OTk1NVx1OWE1NVx1OWE0ZFx1OWFkMlx1OWIxYVx1OWM0OVx1OWMzMVx1OWMzZVx1OWMzYlx1''@;'; put 'put ''OWRkM1x1OWRkN1x1OWYzNFx1OWY2Y1x1OWY2YVx1OWY5NFx1NTZjY1x1NWRkNlx1NjIwMFx1NjUyM1x1NjUyYlx1NjUyYVx1NjZlY1x1NmIxMFx1NzRkYVx1N2FjYVx1N2M2NFx1N2M2M1x1N2M2NVx1N2U5M1x1N2U5Nlx1N2U5NFx1ODFlMlx1ODYzOFx1ODYzZlx1ODgzMVx1OGI4YVx1OTA5''@;'; put 'put ''MFx1OTA4Zlx1OTQ2M1x1OTQ2MFx1OTQ2NFx1OTc2OFx1OTg2Zlx1OTk1Y1x1OWE1YVx1OWE1Ylx1OWE1N1x1OWFkM1x1OWFkNFx1OWFkMVx1OWM1NFx1OWM1N1x1OWM1Nlx1OWRlNVx1OWU5Zlx1OWVmNFx1NTZkMVx1NThlOVx1NjUyY1x1NzA1ZVx1NzY3MVx1NzY3Mlx1NzdkN1x1N2Y1MFx1''@;'; put 'put ''N2Y4OFx1ODgzNlx1ODgzOVx1ODg2Mlx1OGI5M1x1OGI5Mlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTddW0VdXT01MDQzMitFLExbNTA0MzIrRV09QlsxOTddW0VdKTtmb3IoQlsxOThd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiOTZcdTgyNzdcdThkMWJcdTkxYzBcdTk0NmFcdTk3NDJcdTk3NDhcdTk3NDRcdTk3YzZcdTk4NzBcdTlhNWZcdTliMjJcdTliNThcdTljNWZcdTlkZjlcdTlkZmFcdTllN2NcdTllN2Rc''@;'; put 'put ''dTlmMDdcdTlmNzdcdTlmNzJcdTVlZjNcdTZiMTZcdTcwNjNcdTdjNmNcdTdjNmVcdTg4M2JcdTg5YzBcdThlYTFcdTkxYzFcdTk0NzJcdTk0NzBcdTk4NzFcdTk5NWVcdTlhZDZcdTliMjNcdTllY2NcdTcwNjRcdTc3ZGFcdThiOWFcdTk0NzdcdTk3YzlcdTlhNjJcdTlhNjVcdTdlOWNcdThi''@;'; put 'put ''OWNcdThlYWFcdTkxYzVcdTk0N2RcdTk0N2VcdTk0N2NcdTljNzdcdTljNzhcdTllZjdcdThjNTRcdTk0N2ZcdTllMWFcdTcyMjhcdTlhNmFcdTliMzFcdTllMWJcdTllMWVcdTdjNzJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOThdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTk4XVtFXV09NTA2ODgrRSxMWzUwNjg4K0VdPUJbMTk4XVtF''@;'; put 'put ''XSk7Zm9yKEJbMjAxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTQyXHU0ZTVjXHU1MWY1XHU1MzFhXHU1MzgyXHU0ZTA3XHU0ZTBjXHU0ZTQ3XHU0ZThkXHU1NmQ3XHVmYTBjXHU1YzZlXHU1ZjczXHU0ZTBmXHU1MTg3XHU0ZTBl''@;'; put 'put ''XHU0ZTJlXHU0ZTkzXHU0ZWMyXHU0ZWM5XHU0ZWM4XHU1MTk4XHU1MmZjXHU1MzZjXHU1M2I5XHU1NzIwXHU1OTAzXHU1OTJjXHU1YzEwXHU1ZGZmXHU2NWUxXHU2YmIzXHU2YmNjXHU2YzE0XHU3MjNmXHU0ZTMxXHU0ZTNjXHU0ZWU4XHU0ZWRjXHU0ZWU5XHU0ZWUxXHU0ZWRkXHU0ZWRhXHU1''@;'; put 'put ''MjBjXHU1MzFjXHU1MzRjXHU1NzIyXHU1NzIzXHU1OTE3XHU1OTJmXHU1YjgxXHU1Yjg0XHU1YzEyXHU1YzNiXHU1Yzc0XHU1YzczXHU1ZTA0XHU1ZTgwXHU1ZTgyXHU1ZmM5XHU2MjA5XHU2MjUwXHU2YzE1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzM2XHU2''@;'; put 'put ''YzQzXHU2YzNmXHU2YzNiXHU3MmFlXHU3MmIwXHU3MzhhXHU3OWI4XHU4MDhhXHU5NjFlXHU0ZjBlXHU0ZjE4XHU0ZjJjXHU0ZWY1XHU0ZjE0XHU0ZWYxXHU0ZjAwXHU0ZWY3XHU0ZjA4XHU0ZjFkXHU0ZjAyXHU0ZjA1XHU0ZjIyXHU0ZjEzXHU0ZjA0XHU0ZWY0XHU0ZjEyXHU1MWIxXHU1MjEz''@;'; put 'put ''XHU1MjA5XHU1MjEwXHU1MmE2XHU1MzIyXHU1MzFmXHU1MzRkXHU1MzhhXHU1NDA3XHU1NmUxXHU1NmRmXHU1NzJlXHU1NzJhXHU1NzM0XHU1OTNjXHU1OTgwXHU1OTdjXHU1OTg1XHU1OTdiXHU1OTdlXHU1OTc3XHU1OTdmXHU1YjU2XHU1YzE1XHU1YzI1XHU1YzdjXHU1YzdhXHU1YzdiXHU1''@;'; put 'put ''YzdlXHU1ZGRmXHU1ZTc1XHU1ZTg0XHU1ZjAyXHU1ZjFhXHU1Zjc0XHU1ZmQ1XHU1ZmQ0XHU1ZmNmXHU2MjVjXHU2MjVlXHU2MjY0XHU2MjYxXHU2MjY2XHU2MjYyXHU2MjU5XHU2MjYwXHU2MjVhXHU2MjY1XHU2NWVmXHU2NWVlXHU2NzNlXHU2NzM5XHU2NzM4XHU2NzNiXHU2NzNhXHU2NzNm''@;'; put 'put ''XHU2NzNjXHU2NzMzXHU2YzE4XHU2YzQ2XHU2YzUyXHU2YzVjXHU2YzRmXHU2YzRhXHU2YzU0XHU2YzRiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwMV1bRV1dPTUxNDU2K0UsTFs1MTQ1''@;'; put 'put ''NitFXT1CWzIwMV1bRV0pO2ZvcihCWzIwMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmM0Y1x1NzA3MVx1NzI1ZVx1NzJiNFx1NzJiNVx1NzM4ZVx1NzUyYVx1NzY3Zlx1N2E3NVx1N2Y1MVx1ODI3OFx1ODI3Y1x1ODI4MFx1ODI3''@;'; put 'put ''ZFx1ODI3Zlx1ODY0ZFx1ODk3ZVx1OTA5OVx1OTA5N1x1OTA5OFx1OTA5Ylx1OTA5NFx1OTYyMlx1OTYyNFx1OTYyMFx1OTYyM1x1NGY1Nlx1NGYzYlx1NGY2Mlx1NGY0OVx1NGY1M1x1NGY2NFx1NGYzZVx1NGY2N1x1NGY1Mlx1NGY1Zlx1NGY0MVx1NGY1OFx1NGYyZFx1NGYzM1x1NGYzZlx1''@;'; put 'put ''NGY2MVx1NTE4Zlx1NTFiOVx1NTIxY1x1NTIxZVx1NTIyMVx1NTJhZFx1NTJhZVx1NTMwOVx1NTM2M1x1NTM3Mlx1NTM4ZVx1NTM4Zlx1NTQzMFx1NTQzN1x1NTQyYVx1NTQ1NFx1NTQ0NVx1NTQxOVx1NTQxY1x1NTQyNVx1NTQxOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NTQzZFx1NTQ0Zlx1NTQ0MVx1NTQyOFx1NTQyNFx1NTQ0N1x1NTZlZVx1NTZlN1x1NTZlNVx1NTc0MVx1NTc0NVx1NTc0Y1x1NTc0OVx1NTc0Ylx1NTc1Mlx1NTkwNlx1NTk0MFx1NTlhNlx1NTk5OFx1NTlhMFx1NTk5N1x1NTk4ZVx1NTlhMlx1NTk5MFx1NTk4Zlx1NTlhN1x1NTlh''@;'; put 'put ''MVx1NWI4ZVx1NWI5Mlx1NWMyOFx1NWMyYVx1NWM4ZFx1NWM4Zlx1NWM4OFx1NWM4Ylx1NWM4OVx1NWM5Mlx1NWM4YVx1NWM4Nlx1NWM5M1x1NWM5NVx1NWRlMFx1NWUwYVx1NWUwZVx1NWU4Ylx1NWU4OVx1NWU4Y1x1NWU4OFx1NWU4ZFx1NWYwNVx1NWYxZFx1NWY3OFx1NWY3Nlx1NWZkMlx1''@;'; put 'put ''NWZkMVx1NWZkMFx1NWZlZFx1NWZlOFx1NWZlZVx1NWZmM1x1NWZlMVx1NWZlNFx1NWZlM1x1NWZmYVx1NWZlZlx1NWZmN1x1NWZmYlx1NjAwMFx1NWZmNFx1NjIzYVx1NjI4M1x1NjI4Y1x1NjI4ZVx1NjI4Zlx1NjI5NFx1NjI4N1x1NjI3MVx1NjI3Ylx1NjI3YVx1NjI3MFx1NjI4MVx1NjI4''@;'; put 'put ''OFx1NjI3N1x1NjI3ZFx1NjI3Mlx1NjI3NFx1NjUzN1x1NjVmMFx1NjVmNFx1NjVmM1x1NjVmMlx1NjVmNVx1Njc0NVx1Njc0N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDJdW0VdXT01''@;'; put 'put ''MTcxMitFLExbNTE3MTIrRV09QlsyMDJdW0VdKTtmb3IoQlsyMDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY3NTlcdTY3NTVcdTY3NGNcdTY3NDhcdTY3NWRcdTY3NGRcdTY3NWFcdTY3NGJcdTZiZDBcdTZjMTlcdTZjMWFcdTZj''@;'; put 'put ''NzhcdTZjNjdcdTZjNmJcdTZjODRcdTZjOGJcdTZjOGZcdTZjNzFcdTZjNmZcdTZjNjlcdTZjOWFcdTZjNmRcdTZjODdcdTZjOTVcdTZjOWNcdTZjNjZcdTZjNzNcdTZjNjVcdTZjN2JcdTZjOGVcdTcwNzRcdTcwN2FcdTcyNjNcdTcyYmZcdTcyYmRcdTcyYzNcdTcyYzZcdTcyYzFcdTcyYmFc''@;'; put 'put ''dTcyYzVcdTczOTVcdTczOTdcdTczOTNcdTczOTRcdTczOTJcdTc1M2FcdTc1MzlcdTc1OTRcdTc1OTVcdTc2ODFcdTc5M2RcdTgwMzRcdTgwOTVcdTgwOTlcdTgwOTBcdTgwOTJcdTgwOWNcdTgyOTBcdTgyOGZcdTgyODVcdTgyOGVcdTgyOTFcdTgyOTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTgyOGFcdTgyODNcdTgyODRcdThjNzhcdThmYzlcdThmYmZcdTkwOWZcdTkwYTFcdTkwYTVcdTkwOWVcdTkwYTdcdTkwYTBcdTk2MzBcdTk2MjhcdTk2MmZcdTk2MmRcdTRlMzNcdTRmOThcdTRmN2NcdTRmODVcdTRmN2RcdTRmODBcdTRmODdcdTRmNzZcdTRm''@;'; put 'put ''NzRcdTRmODlcdTRmODRcdTRmNzdcdTRmNGNcdTRmOTdcdTRmNmFcdTRmOWFcdTRmNzlcdTRmODFcdTRmNzhcdTRmOTBcdTRmOWNcdTRmOTRcdTRmOWVcdTRmOTJcdTRmODJcdTRmOTVcdTRmNmJcdTRmNmVcdTUxOWVcdTUxYmNcdTUxYmVcdTUyMzVcdTUyMzJcdTUyMzNcdTUyNDZcdTUyMzFc''@;'; put 'put ''dTUyYmNcdTUzMGFcdTUzMGJcdTUzM2NcdTUzOTJcdTUzOTRcdTU0ODdcdTU0N2ZcdTU0ODFcdTU0OTFcdTU0ODJcdTU0ODhcdTU0NmJcdTU0N2FcdTU0N2VcdTU0NjVcdTU0NmNcdTU0NzRcdTU0NjZcdTU0OGRcdTU0NmZcdTU0NjFcdTU0NjBcdTU0OThcdTU0NjNcdTU0NjdcdTU0NjRcdTU2''@;'; put 'put ''ZjdcdTU2ZjlcdTU3NmZcdTU3NzJcdTU3NmRcdTU3NmJcdTU3NzFcdTU3NzBcdTU3NzZcdTU3ODBcdTU3NzVcdTU3N2JcdTU3NzNcdTU3NzRcdTU3NjJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwM11bRV0uY2hhckNvZGVBdCgwKSYmKGdl''@;'; put 'put ''W0JbMjAzXVtFXV09NTE5NjgrRSxMWzUxOTY4K0VdPUJbMjAzXVtFXSk7Zm9yKEJbMjA0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzY4XHU1NzdkXHU1OTBjXHU1OTQ1XHU1OWI1XHU1OWJhXHU1OWNmXHU1OWNlXHU1OWIyXHU1''@;'; put 'put ''OWNjXHU1OWMxXHU1OWI2XHU1OWJjXHU1OWMzXHU1OWQ2XHU1OWIxXHU1OWJkXHU1OWMwXHU1OWM4XHU1OWI0XHU1OWM3XHU1YjYyXHU1YjY1XHU1YjkzXHU1Yjk1XHU1YzQ0XHU1YzQ3XHU1Y2FlXHU1Y2E0XHU1Y2EwXHU1Y2I1XHU1Y2FmXHU1Y2E4XHU1Y2FjXHU1YzlmXHU1Y2EzXHU1Y2Fk''@;'; put 'put ''XHU1Y2EyXHU1Y2FhXHU1Y2E3XHU1YzlkXHU1Y2E1XHU1Y2I2XHU1Y2IwXHU1Y2E2XHU1ZTE3XHU1ZTE0XHU1ZTE5XHU1ZjI4XHU1ZjIyXHU1ZjIzXHU1ZjI0XHU1ZjU0XHU1ZjgyXHU1ZjdlXHU1ZjdkXHU1ZmRlXHU1ZmU1XHU2MDJkXHU2MDI2XHU2MDE5XHU2MDMyXHU2MDBiXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDM0XHU2MDBhXHU2MDE3XHU2MDMzXHU2MDFhXHU2MDFlXHU2MDJjXHU2MDIyXHU2MDBkXHU2MDEwXHU2MDJlXHU2MDEzXHU2MDExXHU2MDBjXHU2MDA5XHU2MDFjXHU2MjE0XHU2MjNkXHU2MmFkXHU2MmI0XHU2MmQxXHU2MmJlXHU2''@;'; put 'put ''MmFhXHU2MmI2XHU2MmNhXHU2MmFlXHU2MmIzXHU2MmFmXHU2MmJiXHU2MmE5XHU2MmIwXHU2MmI4XHU2NTNkXHU2NWE4XHU2NWJiXHU2NjA5XHU2NWZjXHU2NjA0XHU2NjEyXHU2NjA4XHU2NWZiXHU2NjAzXHU2NjBiXHU2NjBkXHU2NjA1XHU2NWZkXHU2NjExXHU2NjEwXHU2NmY2XHU2NzBh''@;'; put 'put ''XHU2Nzg1XHU2NzZjXHU2NzhlXHU2NzkyXHU2Nzc2XHU2NzdiXHU2Nzk4XHU2Nzg2XHU2Nzg0XHU2Nzc0XHU2NzhkXHU2NzhjXHU2NzdhXHU2NzlmXHU2NzkxXHU2Nzk5XHU2NzgzXHU2NzdkXHU2NzgxXHU2Nzc4XHU2Nzc5XHU2Nzk0XHU2YjI1XHU2YjgwXHU2YjdlXHU2YmRlXHU2YzFkXHU2''@;'; put 'put ''YzkzXHU2Y2VjXHU2Y2ViXHU2Y2VlXHU2Y2Q5XHU2Y2I2XHU2Y2Q0XHU2Y2FkXHU2Y2U3XHU2Y2I3XHU2Y2QwXHU2Y2MyXHU2Y2JhXHU2Y2MzXHU2Y2M2XHU2Y2VkXHU2Y2YyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDRdW0VdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihnZVtCWzIwNF1bRV1dPTUyMjI0K0UsTFs1MjIyNCtFXT1CWzIwNF1bRV0pO2ZvcihCWzIwNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmNkMlx1NmNkZFx1NmNiNFx1NmM4YVx1NmM5ZFx1NmM4MFx1NmNkZVx1''@;'; put 'put ''NmNjMFx1NmQzMFx1NmNjZFx1NmNjN1x1NmNiMFx1NmNmOVx1NmNjZlx1NmNlOVx1NmNkMVx1NzA5NFx1NzA5OFx1NzA4NVx1NzA5M1x1NzA4Nlx1NzA4NFx1NzA5MVx1NzA5Nlx1NzA4Mlx1NzA5YVx1NzA4M1x1NzI2YVx1NzJkNlx1NzJjYlx1NzJkOFx1NzJjOVx1NzJkY1x1NzJkMlx1NzJk''@;'; put 'put ''NFx1NzJkYVx1NzJjY1x1NzJkMVx1NzNhNFx1NzNhMVx1NzNhZFx1NzNhNlx1NzNhMlx1NzNhMFx1NzNhY1x1NzM5ZFx1NzRkZFx1NzRlOFx1NzUzZlx1NzU0MFx1NzUzZVx1NzU4Y1x1NzU5OFx1NzZhZlx1NzZmM1x1NzZmMVx1NzZmMFx1NzZmNVx1NzdmOFx1NzdmY1x1NzdmOVx1NzdmYlx1''@;'; put 'put ''NzdmYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdmN1x1Nzk0Mlx1NzkzZlx1NzljNVx1N2E3OFx1N2E3Ylx1N2FmYlx1N2M3NVx1N2NmZFx1ODAzNVx1ODA4Zlx1ODBhZVx1ODBhM1x1ODBiOFx1ODBiNVx1ODBhZFx1ODIyMFx1ODJhMFx1ODJjMFx1ODJhYlx1''@;'; put 'put ''ODI5YVx1ODI5OFx1ODI5Ylx1ODJiNVx1ODJhN1x1ODJhZVx1ODJiY1x1ODI5ZVx1ODJiYVx1ODJiNFx1ODJhOFx1ODJhMVx1ODJhOVx1ODJjMlx1ODJhNFx1ODJjM1x1ODJiNlx1ODJhMlx1ODY3MFx1ODY2Zlx1ODY2ZFx1ODY2ZVx1OGM1Nlx1OGZkMlx1OGZjYlx1OGZkM1x1OGZjZFx1OGZk''@;'; put 'put ''Nlx1OGZkNVx1OGZkN1x1OTBiMlx1OTBiNFx1OTBhZlx1OTBiM1x1OTBiMFx1OTYzOVx1OTYzZFx1OTYzY1x1OTYzYVx1OTY0M1x1NGZjZFx1NGZjNVx1NGZkM1x1NGZiMlx1NGZjOVx1NGZjYlx1NGZjMVx1NGZkNFx1NGZkY1x1NGZkOVx1NGZiYlx1NGZiM1x1NGZkYlx1NGZjN1x1NGZkNlx1''@;'; put 'put ''NGZiYVx1NGZjMFx1NGZiOVx1NGZlY1x1NTI0NFx1NTI0OVx1NTJjMFx1NTJjMlx1NTMzZFx1NTM3Y1x1NTM5N1x1NTM5Nlx1NTM5OVx1NTM5OFx1NTRiYVx1NTRhMVx1NTRhZFx1NTRhNVx1NTRjZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJb''@;'; put 'put ''MjA1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDVdW0VdXT01MjQ4MCtFLExbNTI0ODArRV09QlsyMDVdW0VdKTtmb3IoQlsyMDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0YzNcdTgzMGRcdTU0YjdcdTU0YWVcdTU0ZDZc''@;'; put 'put ''dTU0YjZcdTU0YzVcdTU0YzZcdTU0YTBcdTU0NzBcdTU0YmNcdTU0YTJcdTU0YmVcdTU0NzJcdTU0ZGVcdTU0YjBcdTU3YjVcdTU3OWVcdTU3OWZcdTU3YTRcdTU3OGNcdTU3OTdcdTU3OWRcdTU3OWJcdTU3OTRcdTU3OThcdTU3OGZcdTU3OTlcdTU3YTVcdTU3OWFcdTU3OTVcdTU4ZjRcdTU5''@;'; put 'put ''MGRcdTU5NTNcdTU5ZTFcdTU5ZGVcdTU5ZWVcdTVhMDBcdTU5ZjFcdTU5ZGRcdTU5ZmFcdTU5ZmRcdTU5ZmNcdTU5ZjZcdTU5ZTRcdTU5ZjJcdTU5ZjdcdTU5ZGJcdTU5ZTlcdTU5ZjNcdTU5ZjVcdTU5ZTBcdTU5ZmVcdTU5ZjRcdTU5ZWRcdTViYThcdTVjNGNcdTVjZDBcdTVjZDhcdTVjY2Nc''@;'; put 'put ''dTVjZDdcdTVjY2JcdTVjZGJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVjZGVcdTVjZGFcdTVjYzlcdTVjYzdcdTVjY2FcdTVjZDZcdTVjZDNcdTVjZDRcdTVjY2ZcdTVjYzhcdTVjYzZcdTVjY2VcdTVjZGZcdTVjZjhcdTVkZjlcdTVlMjFcdTVlMjJcdTVlMjNc''@;'; put 'put ''dTVlMjBcdTVlMjRcdTVlYjBcdTVlYTRcdTVlYTJcdTVlOWJcdTVlYTNcdTVlYTVcdTVmMDdcdTVmMmVcdTVmNTZcdTVmODZcdTYwMzdcdTYwMzlcdTYwNTRcdTYwNzJcdTYwNWVcdTYwNDVcdTYwNTNcdTYwNDdcdTYwNDlcdTYwNWJcdTYwNGNcdTYwNDBcdTYwNDJcdTYwNWZcdTYwMjRcdTYw''@;'; put 'put ''NDRcdTYwNThcdTYwNjZcdTYwNmVcdTYyNDJcdTYyNDNcdTYyY2ZcdTYzMGRcdTYzMGJcdTYyZjVcdTYzMGVcdTYzMDNcdTYyZWJcdTYyZjlcdTYzMGZcdTYzMGNcdTYyZjhcdTYyZjZcdTYzMDBcdTYzMTNcdTYzMTRcdTYyZmFcdTYzMTVcdTYyZmJcdTYyZjBcdTY1NDFcdTY1NDNcdTY1YWFc''@;'; put 'put ''dTY1YmZcdTY2MzZcdTY2MjFcdTY2MzJcdTY2MzVcdTY2MWNcdTY2MjZcdTY2MjJcdTY2MzNcdTY2MmJcdTY2M2FcdTY2MWRcdTY2MzRcdTY2MzlcdTY2MmVcdTY3MGZcdTY3MTBcdTY3YzFcdTY3ZjJcdTY3YzhcdTY3YmFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDZdLmxlbmd0aDsr''@;'; put 'put ''K0UpNjU1MzMhPT1CWzIwNl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA2XVtFXV09NTI3MzYrRSxMWzUyNzM2K0VdPUJbMjA2XVtFXSk7Zm9yKEJbMjA3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2N2RjXHU2N2JiXHU2N2Y4''@;'; put 'put ''XHU2N2Q4XHU2N2MwXHU2N2I3XHU2N2M1XHU2N2ViXHU2N2U0XHU2N2RmXHU2N2I1XHU2N2NkXHU2N2IzXHU2N2Y3XHU2N2Y2XHU2N2VlXHU2N2UzXHU2N2MyXHU2N2I5XHU2N2NlXHU2N2U3XHU2N2YwXHU2N2IyXHU2N2ZjXHU2N2M2XHU2N2VkXHU2N2NjXHU2N2FlXHU2N2U2XHU2N2RiXHU2''@;'; put 'put ''N2ZhXHU2N2M5XHU2N2NhXHU2N2MzXHU2N2VhXHU2N2NiXHU2YjI4XHU2YjgyXHU2Yjg0XHU2YmI2XHU2YmQ2XHU2YmQ4XHU2YmUwXHU2YzIwXHU2YzIxXHU2ZDI4XHU2ZDM0XHU2ZDJkXHU2ZDFmXHU2ZDNjXHU2ZDNmXHU2ZDEyXHU2ZDBhXHU2Y2RhXHU2ZDMzXHU2ZDA0XHU2ZDE5XHU2ZDNh''@;'; put 'put ''XHU2ZDFhXHU2ZDExXHU2ZDAwXHU2ZDFkXHU2ZDQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDAxXHU2ZDE4XHU2ZDM3XHU2ZDAzXHU2ZDBmXHU2ZDQwXHU2ZDA3XHU2ZDIwXHU2ZDJjXHU2ZDA4XHU2ZDIyXHU2ZDA5XHU2ZDEwXHU3MGI3XHU3MDlmXHU3MGJl''@;'; put 'put ''XHU3MGIxXHU3MGIwXHU3MGExXHU3MGI0XHU3MGI1XHU3MGE5XHU3MjQxXHU3MjQ5XHU3MjRhXHU3MjZjXHU3MjcwXHU3MjczXHU3MjZlXHU3MmNhXHU3MmU0XHU3MmU4XHU3MmViXHU3MmRmXHU3MmVhXHU3MmU2XHU3MmUzXHU3Mzg1XHU3M2NjXHU3M2MyXHU3M2M4XHU3M2M1XHU3M2I5XHU3''@;'; put 'put ''M2I2XHU3M2I1XHU3M2I0XHU3M2ViXHU3M2JmXHU3M2M3XHU3M2JlXHU3M2MzXHU3M2M2XHU3M2I4XHU3M2NiXHU3NGVjXHU3NGVlXHU3NTJlXHU3NTQ3XHU3NTQ4XHU3NWE3XHU3NWFhXHU3Njc5XHU3NmM0XHU3NzA4XHU3NzAzXHU3NzA0XHU3NzA1XHU3NzBhXHU3NmY3XHU3NmZiXHU3NmZh''@;'; put 'put ''XHU3N2U3XHU3N2U4XHU3ODA2XHU3ODExXHU3ODEyXHU3ODA1XHU3ODEwXHU3ODBmXHU3ODBlXHU3ODA5XHU3ODAzXHU3ODEzXHU3OTRhXHU3OTRjXHU3OTRiXHU3OTQ1XHU3OTQ0XHU3OWQ1XHU3OWNkXHU3OWNmXHU3OWQ2XHU3OWNlXHU3YTgwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJb''@;'; put 'put ''MjA3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwN11bRV1dPTUyOTkyK0UsTFs1Mjk5MitFXT1CWzIwN11bRV0pO2ZvcihCWzIwOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E3''@;'; put 'put ''ZVx1N2FkMVx1N2IwMFx1N2IwMVx1N2M3YVx1N2M3OFx1N2M3OVx1N2M3Zlx1N2M4MFx1N2M4MVx1N2QwM1x1N2QwOFx1N2QwMVx1N2Y1OFx1N2Y5MVx1N2Y4ZFx1N2ZiZVx1ODAwN1x1ODAwZVx1ODAwZlx1ODAxNFx1ODAzN1x1ODBkOFx1ODBjN1x1ODBlMFx1ODBkMVx1ODBjOFx1ODBjMlx1''@;'; put 'put ''ODBkMFx1ODBjNVx1ODBlM1x1ODBkOVx1ODBkY1x1ODBjYVx1ODBkNVx1ODBjOVx1ODBjZlx1ODBkN1x1ODBlNlx1ODBjZFx1ODFmZlx1ODIyMVx1ODI5NFx1ODJkOVx1ODJmZVx1ODJmOVx1ODMwN1x1ODJlOFx1ODMwMFx1ODJkNVx1ODMzYVx1ODJlYlx1ODJkNlx1ODJmNFx1ODJlY1x1ODJl''@;'; put 'put ''MVx1ODJmMlx1ODJmNVx1ODMwY1x1ODJmYlx1ODJmNlx1ODJmMFx1ODJlYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODJlNFx1ODJlMFx1ODJmYVx1ODJmM1x1ODJlZFx1ODY3N1x1ODY3NFx1ODY3Y1x1ODY3M1x1ODg0MVx1ODg0ZVx1ODg2N1x1ODg2YVx1ODg2''@;'; put 'put ''OVx1ODlkM1x1OGEwNFx1OGEwN1x1OGQ3Mlx1OGZlM1x1OGZlMVx1OGZlZVx1OGZlMFx1OTBmMVx1OTBiZFx1OTBiZlx1OTBkNVx1OTBjNVx1OTBiZVx1OTBjN1x1OTBjYlx1OTBjOFx1OTFkNFx1OTFkM1x1OTY1NFx1OTY0Zlx1OTY1MVx1OTY1M1x1OTY0YVx1OTY0ZVx1NTAxZVx1NTAwNVx1''@;'; put 'put ''NTAwN1x1NTAxM1x1NTAyMlx1NTAzMFx1NTAxYlx1NGZmNVx1NGZmNFx1NTAzM1x1NTAzN1x1NTAyY1x1NGZmNlx1NGZmN1x1NTAxN1x1NTAxY1x1NTAyMFx1NTAyN1x1NTAzNVx1NTAyZlx1NTAzMVx1NTAwZVx1NTE1YVx1NTE5NFx1NTE5M1x1NTFjYVx1NTFjNFx1NTFjNVx1NTFjOFx1NTFj''@;'; put 'put ''ZVx1NTI2MVx1NTI1YVx1NTI1Mlx1NTI1ZVx1NTI1Zlx1NTI1NVx1NTI2Mlx1NTJjZFx1NTMwZVx1NTM5ZVx1NTUyNlx1NTRlMlx1NTUxN1x1NTUxMlx1NTRlN1x1NTRmM1x1NTRlNFx1NTUxYVx1NTRmZlx1NTUwNFx1NTUwOFx1NTRlYlx1NTUxMVx1NTUwNVx1NTRmMVx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLEU9MDtFIT1CWzIwOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDhdW0VdXT01MzI0OCtFLExbNTMyNDgrRV09QlsyMDhdW0VdKTtmb3IoQlsyMDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTU1MGFcdTU0ZmJcdTU0ZjdcdTU0ZjhcdTU0ZTBcdTU1MGVcdTU1MDNcdTU1MGJcdTU3MDFcdTU3MDJcdTU3Y2NcdTU4MzJcdTU3ZDVcdTU3ZDJcdTU3YmFcdTU3YzZcdTU3YmRcdTU3YmNcdTU3YjhcdTU3YjZcdTU3YmZcdTU3YzdcdTU3ZDBcdTU3YjlcdTU3YzFcdTU5MGVc''@;'; put 'put ''dTU5NGFcdTVhMTlcdTVhMTZcdTVhMmRcdTVhMmVcdTVhMTVcdTVhMGZcdTVhMTdcdTVhMGFcdTVhMWVcdTVhMzNcdTViNmNcdTViYTdcdTViYWRcdTViYWNcdTVjMDNcdTVjNTZcdTVjNTRcdTVjZWNcdTVjZmZcdTVjZWVcdTVjZjFcdTVjZjdcdTVkMDBcdTVjZjlcdTVlMjlcdTVlMjhcdTVl''@;'; put 'put ''YThcdTVlYWVcdTVlYWFcdTVlYWNcdTVmMzNcdTVmMzBcdTVmNjdcdTYwNWRcdTYwNWFcdTYwNjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwNDFcdTYwYTJcdTYwODhcdTYwODBcdTYwOTJcdTYwODFcdTYwOWRcdTYwODNcdTYwOTVcdTYwOWJcdTYwOTdcdTYw''@;'; put 'put ''ODdcdTYwOWNcdTYwOGVcdTYyMTlcdTYyNDZcdTYyZjJcdTYzMTBcdTYzNTZcdTYzMmNcdTYzNDRcdTYzNDVcdTYzMzZcdTYzNDNcdTYzZTRcdTYzMzlcdTYzNGJcdTYzNGFcdTYzM2NcdTYzMjlcdTYzNDFcdTYzMzRcdTYzNThcdTYzNTRcdTYzNTlcdTYzMmRcdTYzNDdcdTYzMzNcdTYzNWFc''@;'; put 'put ''dTYzNTFcdTYzMzhcdTYzNTdcdTYzNDBcdTYzNDhcdTY1NGFcdTY1NDZcdTY1YzZcdTY1YzNcdTY1YzRcdTY1YzJcdTY2NGFcdTY2NWZcdTY2NDdcdTY2NTFcdTY3MTJcdTY3MTNcdTY4MWZcdTY4MWFcdTY4NDlcdTY4MzJcdTY4MzNcdTY4M2JcdTY4NGJcdTY4NGZcdTY4MTZcdTY4MzFcdTY4''@;'; put 'put ''MWNcdTY4MzVcdTY4MmJcdTY4MmRcdTY4MmZcdTY4NGVcdTY4NDRcdTY4MzRcdTY4MWRcdTY4MTJcdTY4MTRcdTY4MjZcdTY4MjhcdTY4MmVcdTY4NGRcdTY4M2FcdTY4MjVcdTY4MjBcdTZiMmNcdTZiMmZcdTZiMmRcdTZiMzFcdTZiMzRcdTZiNmRcdTgwODJcdTZiODhcdTZiZTZcdTZiZTRc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA5XVtFXV09NTM1MDQrRSxMWzUzNTA0K0VdPUJbMjA5XVtFXSk7Zm9yKEJbMjEwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YmU4XHU2YmUzXHU2YmUyXHU2YmU3XHU2YzI1XHU2ZDdhXHU2ZDYzXHU2ZDY0XHU2ZDc2XHU2ZDBkXHU2ZDYxXHU2ZDkyXHU2ZDU4XHU2ZDYyXHU2ZDZkXHU2ZDZmXHU2ZDkxXHU2ZDhkXHU2ZGVmXHU2ZDdmXHU2ZDg2XHU2ZDVlXHU2ZDY3XHU2ZDYw''@;'; put 'put ''XHU2ZDk3XHU2ZDcwXHU2ZDdjXHU2ZDVmXHU2ZDgyXHU2ZDk4XHU2ZDJmXHU2ZDY4XHU2ZDhiXHU2ZDdlXHU2ZDgwXHU2ZDg0XHU2ZDE2XHU2ZDgzXHU2ZDdiXHU2ZDdkXHU2ZDc1XHU2ZDkwXHU3MGRjXHU3MGQzXHU3MGQxXHU3MGRkXHU3MGNiXHU3ZjM5XHU3MGUyXHU3MGQ3XHU3MGQyXHU3''@;'; put 'put ''MGRlXHU3MGUwXHU3MGQ0XHU3MGNkXHU3MGM1XHU3MGM2XHU3MGM3XHU3MGRhXHU3MGNlXHU3MGUxXHU3MjQyXHU3Mjc4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Mjc3XHU3Mjc2XHU3MzAwXHU3MmZhXHU3MmY0XHU3MmZlXHU3MmY2XHU3MmYzXHU3MmZiXHU3''@;'; put 'put ''MzAxXHU3M2QzXHU3M2Q5XHU3M2U1XHU3M2Q2XHU3M2JjXHU3M2U3XHU3M2UzXHU3M2U5XHU3M2RjXHU3M2QyXHU3M2RiXHU3M2Q0XHU3M2RkXHU3M2RhXHU3M2Q3XHU3M2Q4XHU3M2U4XHU3NGRlXHU3NGRmXHU3NGY0XHU3NGY1XHU3NTIxXHU3NTViXHU3NTVmXHU3NWIwXHU3NWMxXHU3NWJi''@;'; put 'put ''XHU3NWM0XHU3NWMwXHU3NWJmXHU3NWI2XHU3NWJhXHU3NjhhXHU3NmM5XHU3NzFkXHU3NzFiXHU3NzEwXHU3NzEzXHU3NzEyXHU3NzIzXHU3NzExXHU3NzE1XHU3NzE5XHU3NzFhXHU3NzIyXHU3NzI3XHU3ODIzXHU3ODJjXHU3ODIyXHU3ODM1XHU3ODJmXHU3ODI4XHU3ODJlXHU3ODJiXHU3''@;'; put 'put ''ODIxXHU3ODI5XHU3ODMzXHU3ODJhXHU3ODMxXHU3OTU0XHU3OTViXHU3OTRmXHU3OTVjXHU3OTUzXHU3OTUyXHU3OTUxXHU3OWViXHU3OWVjXHU3OWUwXHU3OWVlXHU3OWVkXHU3OWVhXHU3OWRjXHU3OWRlXHU3OWRkXHU3YTg2XHU3YTg5XHU3YTg1XHU3YThiXHU3YThjXHU3YThhXHU3YTg3''@;'; put 'put ''XHU3YWQ4XHU3YjEwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxMF1bRV1dPTUzNzYwK0UsTFs1Mzc2MCtFXT1CWzIxMF1bRV0pO2ZvcihCWzIxMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2IwNFx1N2IxM1x1N2IwNVx1N2IwZlx1N2IwOFx1N2IwYVx1N2IwZVx1N2IwOVx1N2IxMlx1N2M4NFx1N2M5MVx1N2M4YVx1N2M4Y1x1N2M4OFx1N2M4ZFx1N2M4NVx1N2QxZVx1N2QxZFx1N2QxMVx1N2QwZVx1N2QxOFx1N2Qx''@;'; put 'put ''Nlx1N2QxM1x1N2QxZlx1N2QxMlx1N2QwZlx1N2QwY1x1N2Y1Y1x1N2Y2MVx1N2Y1ZVx1N2Y2MFx1N2Y1ZFx1N2Y1Ylx1N2Y5Nlx1N2Y5Mlx1N2ZjM1x1N2ZjMlx1N2ZjMFx1ODAxNlx1ODAzZVx1ODAzOVx1ODBmYVx1ODBmMlx1ODBmOVx1ODBmNVx1ODEwMVx1ODBmYlx1ODEwMFx1ODIwMVx1''@;'; put 'put ''ODIyZlx1ODIyNVx1ODMzM1x1ODMyZFx1ODM0NFx1ODMxOVx1ODM1MVx1ODMyNVx1ODM1Nlx1ODMzZlx1ODM0MVx1ODMyNlx1ODMxY1x1ODMyMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODM0Mlx1ODM0ZVx1ODMxYlx1ODMyYVx1ODMwOFx1ODMzY1x1ODM0ZFx1''@;'; put 'put ''ODMxNlx1ODMyNFx1ODMyMFx1ODMzN1x1ODMyZlx1ODMyOVx1ODM0N1x1ODM0NVx1ODM0Y1x1ODM1M1x1ODMxZVx1ODMyY1x1ODM0Ylx1ODMyN1x1ODM0OFx1ODY1M1x1ODY1Mlx1ODZhMlx1ODZhOFx1ODY5Nlx1ODY4ZFx1ODY5MVx1ODY5ZVx1ODY4N1x1ODY5N1x1ODY4Nlx1ODY4Ylx1ODY5''@;'; put 'put ''YVx1ODY4NVx1ODZhNVx1ODY5OVx1ODZhMVx1ODZhN1x1ODY5NVx1ODY5OFx1ODY4ZVx1ODY5ZFx1ODY5MFx1ODY5NFx1ODg0M1x1ODg0NFx1ODg2ZFx1ODg3NVx1ODg3Nlx1ODg3Mlx1ODg4MFx1ODg3MVx1ODg3Zlx1ODg2Zlx1ODg4M1x1ODg3ZVx1ODg3NFx1ODg3Y1x1OGExMlx1OGM0N1x1''@;'; put 'put ''OGM1N1x1OGM3Ylx1OGNhNFx1OGNhM1x1OGQ3Nlx1OGQ3OFx1OGRiNVx1OGRiN1x1OGRiNlx1OGVkMVx1OGVkM1x1OGZmZVx1OGZmNVx1OTAwMlx1OGZmZlx1OGZmYlx1OTAwNFx1OGZmY1x1OGZmNlx1OTBkNlx1OTBlMFx1OTBkOVx1OTBkYVx1OTBlM1x1OTBkZlx1OTBlNVx1OTBkOFx1OTBk''@;'; put 'put ''Ylx1OTBkN1x1OTBkY1x1OTBlNFx1OTE1MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjExXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTFdW0VdXT01NDAxNitFLExbNTQwMTYrRV09QlsyMTFdW0VdKTtmb3IoQlsyMTJdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkxNGVcdTkxNGZcdTkxZDVcdTkxZTJcdTkxZGFcdTk2NWNcdTk2NWZcdTk2YmNcdTk4ZTNcdTlhZGZcdTliMmZcdTRlN2ZcdTUwNzBcdTUwNmFcdTUwNjFcdTUwNWVcdTUwNjBcdTUwNTNcdTUwNGJcdTUw''@;'; put 'put ''NWRcdTUwNzJcdTUwNDhcdTUwNGRcdTUwNDFcdTUwNWJcdTUwNGFcdTUwNjJcdTUwMTVcdTUwNDVcdTUwNWZcdTUwNjlcdTUwNmJcdTUwNjNcdTUwNjRcdTUwNDZcdTUwNDBcdTUwNmVcdTUwNzNcdTUwNTdcdTUwNTFcdTUxZDBcdTUyNmJcdTUyNmRcdTUyNmNcdTUyNmVcdTUyZDZcdTUyZDNc''@;'; put 'put ''dTUzMmRcdTUzOWNcdTU1NzVcdTU1NzZcdTU1M2NcdTU1NGRcdTU1NTBcdTU1MzRcdTU1MmFcdTU1NTFcdTU1NjJcdTU1MzZcdTU1MzVcdTU1MzBcdTU1NTJcdTU1NDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU1MGNcdTU1MzJcdTU1NjVcdTU1NGVcdTU1Mzlc''@;'; put 'put ''dTU1NDhcdTU1MmRcdTU1M2JcdTU1NDBcdTU1NGJcdTU3MGFcdTU3MDdcdTU3ZmJcdTU4MTRcdTU3ZTJcdTU3ZjZcdTU3ZGNcdTU3ZjRcdTU4MDBcdTU3ZWRcdTU3ZmRcdTU4MDhcdTU3ZjhcdTU4MGJcdTU3ZjNcdTU3Y2ZcdTU4MDdcdTU3ZWVcdTU3ZTNcdTU3ZjJcdTU3ZTVcdTU3ZWNcdTU3''@;'; put 'put ''ZTFcdTU4MGVcdTU3ZmNcdTU4MTBcdTU3ZTdcdTU4MDFcdTU4MGNcdTU3ZjFcdTU3ZTlcdTU3ZjBcdTU4MGRcdTU4MDRcdTU5NWNcdTVhNjBcdTVhNThcdTVhNTVcdTVhNjdcdTVhNWVcdTVhMzhcdTVhMzVcdTVhNmRcdTVhNTBcdTVhNWZcdTVhNjVcdTVhNmNcdTVhNTNcdTVhNjRcdTVhNTdc''@;'; put 'put ''dTVhNDNcdTVhNWRcdTVhNTJcdTVhNDRcdTVhNWJcdTVhNDhcdTVhOGVcdTVhM2VcdTVhNGRcdTVhMzlcdTVhNGNcdTVhNzBcdTVhNjlcdTVhNDdcdTVhNTFcdTVhNTZcdTVhNDJcdTVhNWNcdTViNzJcdTViNmVcdTViYzFcdTViYzBcdTVjNTlcdTVkMWVcdTVkMGJcdTVkMWRcdTVkMWFcdTVk''@;'; put 'put ''MjBcdTVkMGNcdTVkMjhcdTVkMGRcdTVkMjZcdTVkMjVcdTVkMGZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjEyXVtFXV09NTQyNzIrRSxMWzU0MjcyK0VdPUJbMjEyXVtFXSk7Zm9yKEJb''@;'; put 'put ''MjEzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZDMwXHU1ZDEyXHU1ZDIzXHU1ZDFmXHU1ZDJlXHU1ZTNlXHU1ZTM0XHU1ZWIxXHU1ZWI0XHU1ZWI5XHU1ZWIyXHU1ZWIzXHU1ZjM2XHU1ZjM4XHU1ZjliXHU1Zjk2XHU1ZjlmXHU2''@;'; put 'put ''MDhhXHU2MDkwXHU2MDg2XHU2MGJlXHU2MGIwXHU2MGJhXHU2MGQzXHU2MGQ0XHU2MGNmXHU2MGU0XHU2MGQ5XHU2MGRkXHU2MGM4XHU2MGIxXHU2MGRiXHU2MGI3XHU2MGNhXHU2MGJmXHU2MGMzXHU2MGNkXHU2MGMwXHU2MzMyXHU2MzY1XHU2MzhhXHU2MzgyXHU2MzdkXHU2M2JkXHU2Mzll''@;'; put 'put ''XHU2M2FkXHU2MzlkXHU2Mzk3XHU2M2FiXHU2MzhlXHU2MzZmXHU2Mzg3XHU2MzkwXHU2MzZlXHU2M2FmXHU2Mzc1XHU2MzljXHU2MzZkXHU2M2FlXHU2MzdjXHU2M2E0XHU2MzNiXHU2MzlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Mzc4XHU2Mzg1XHU2Mzgx''@;'; put 'put ''XHU2MzkxXHU2MzhkXHU2MzcwXHU2NTUzXHU2NWNkXHU2NjY1XHU2NjYxXHU2NjViXHU2NjU5XHU2NjVjXHU2NjYyXHU2NzE4XHU2ODc5XHU2ODg3XHU2ODkwXHU2ODljXHU2ODZkXHU2ODZlXHU2OGFlXHU2OGFiXHU2OTU2XHU2ODZmXHU2OGEzXHU2OGFjXHU2OGE5XHU2ODc1XHU2ODc0XHU2''@;'; put 'put ''OGIyXHU2ODhmXHU2ODc3XHU2ODkyXHU2ODdjXHU2ODZiXHU2ODcyXHU2OGFhXHU2ODgwXHU2ODcxXHU2ODdlXHU2ODliXHU2ODk2XHU2ODhiXHU2OGEwXHU2ODg5XHU2OGE0XHU2ODc4XHU2ODdiXHU2ODkxXHU2ODhjXHU2ODhhXHU2ODdkXHU2YjM2XHU2YjMzXHU2YjM3XHU2YjM4XHU2Yjkx''@;'; put 'put ''XHU2YjhmXHU2YjhkXHU2YjhlXHU2YjhjXHU2YzJhXHU2ZGMwXHU2ZGFiXHU2ZGI0XHU2ZGIzXHU2ZTc0XHU2ZGFjXHU2ZGU5XHU2ZGUyXHU2ZGI3XHU2ZGY2XHU2ZGQ0XHU2ZTAwXHU2ZGM4XHU2ZGUwXHU2ZGRmXHU2ZGQ2XHU2ZGJlXHU2ZGU1XHU2ZGRjXHU2ZGRkXHU2ZGRiXHU2ZGY0XHU2''@;'; put 'put ''ZGNhXHU2ZGJkXHU2ZGVkXHU2ZGYwXHU2ZGJhXHU2ZGQ1XHU2ZGMyXHU2ZGNmXHU2ZGM5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxM11bRV1dPTU0NTI4K0UsTFs1NDUyOCtFXT1CWzIx''@;'; put 'put ''M11bRV0pO2ZvcihCWzIxNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmRkMFx1NmRmMlx1NmRkM1x1NmRmZFx1NmRkN1x1NmRjZFx1NmRlM1x1NmRiYlx1NzBmYVx1NzEwZFx1NzBmN1x1NzExN1x1NzBmNFx1NzEwY1x1NzBmMFx1''@;'; put 'put ''NzEwNFx1NzBmM1x1NzExMFx1NzBmY1x1NzBmZlx1NzEwNlx1NzExM1x1NzEwMFx1NzBmOFx1NzBmNlx1NzEwYlx1NzEwMlx1NzEwZVx1NzI3ZVx1NzI3Ylx1NzI3Y1x1NzI3Zlx1NzMxZFx1NzMxN1x1NzMwN1x1NzMxMVx1NzMxOFx1NzMwYVx1NzMwOFx1NzJmZlx1NzMwZlx1NzMxZVx1NzM4''@;'; put 'put ''OFx1NzNmNlx1NzNmOFx1NzNmNVx1NzQwNFx1NzQwMVx1NzNmZFx1NzQwN1x1NzQwMFx1NzNmYVx1NzNmY1x1NzNmZlx1NzQwY1x1NzQwYlx1NzNmNFx1NzQwOFx1NzU2NFx1NzU2M1x1NzVjZVx1NzVkMlx1NzVjZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzVj''@;'; put 'put ''Ylx1NzVjY1x1NzVkMVx1NzVkMFx1NzY4Zlx1NzY4OVx1NzZkM1x1NzczOVx1NzcyZlx1NzcyZFx1NzczMVx1NzczMlx1NzczNFx1NzczM1x1NzczZFx1NzcyNVx1NzczYlx1NzczNVx1Nzg0OFx1Nzg1Mlx1Nzg0OVx1Nzg0ZFx1Nzg0YVx1Nzg0Y1x1NzgyNlx1Nzg0NVx1Nzg1MFx1Nzk2NFx1''@;'; put 'put ''Nzk2N1x1Nzk2OVx1Nzk2YVx1Nzk2M1x1Nzk2Ylx1Nzk2MVx1NzliYlx1NzlmYVx1NzlmOFx1NzlmNlx1NzlmN1x1N2E4Zlx1N2E5NFx1N2E5MFx1N2IzNVx1N2I0N1x1N2IzNFx1N2IyNVx1N2IzMFx1N2IyMlx1N2IyNFx1N2IzM1x1N2IxOFx1N2IyYVx1N2IxZFx1N2IzMVx1N2IyYlx1N2Iy''@;'; put 'put ''ZFx1N2IyZlx1N2IzMlx1N2IzOFx1N2IxYVx1N2IyM1x1N2M5NFx1N2M5OFx1N2M5Nlx1N2NhM1x1N2QzNVx1N2QzZFx1N2QzOFx1N2QzNlx1N2QzYVx1N2Q0NVx1N2QyY1x1N2QyOVx1N2Q0MVx1N2Q0N1x1N2QzZVx1N2QzZlx1N2Q0YVx1N2QzYlx1N2QyOFx1N2Y2M1x1N2Y5NVx1N2Y5Y1x1''@;'; put 'put ''N2Y5ZFx1N2Y5Ylx1N2ZjYVx1N2ZjYlx1N2ZjZFx1N2ZkMFx1N2ZkMVx1N2ZjN1x1N2ZjZlx1N2ZjOVx1ODAxZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTRdW0VdXT01NDc4NCtFLExb''@;'; put 'put ''NTQ3ODQrRV09QlsyMTRdW0VdKTtmb3IoQlsyMTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgwMWVcdTgwMWJcdTgwNDdcdTgwNDNcdTgwNDhcdTgxMThcdTgxMjVcdTgxMTlcdTgxMWJcdTgxMmRcdTgxMWZcdTgxMmNcdTgxMWVc''@;'; put 'put ''dTgxMjFcdTgxMTVcdTgxMjdcdTgxMWRcdTgxMjJcdTgyMTFcdTgyMzhcdTgyMzNcdTgyM2FcdTgyMzRcdTgyMzJcdTgyNzRcdTgzOTBcdTgzYTNcdTgzYThcdTgzOGRcdTgzN2FcdTgzNzNcdTgzYTRcdTgzNzRcdTgzOGZcdTgzODFcdTgzOTVcdTgzOTlcdTgzNzVcdTgzOTRcdTgzYTlcdTgz''@;'; put 'put ''N2RcdTgzODNcdTgzOGNcdTgzOWRcdTgzOWJcdTgzYWFcdTgzOGJcdTgzN2VcdTgzYTVcdTgzYWZcdTgzODhcdTgzOTdcdTgzYjBcdTgzN2ZcdTgzYTZcdTgzODdcdTgzYWVcdTgzNzZcdTgzOWFcdTg2NTlcdTg2NTZcdTg2YmZcdTg2YjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTg2YzJcdTg2YzFcdTg2YzVcdTg2YmFcdTg2YjBcdTg2YzhcdTg2YjlcdTg2YjNcdTg2YjhcdTg2Y2NcdTg2YjRcdTg2YmJcdTg2YmNcdTg2YzNcdTg2YmRcdTg2YmVcdTg4NTJcdTg4ODlcdTg4OTVcdTg4YThcdTg4YTJcdTg4YWFcdTg4OWFcdTg4OTFcdTg4YTFcdTg4OWZc''@;'; put 'put ''dTg4OThcdTg4YTdcdTg4OTlcdTg4OWJcdTg4OTdcdTg4YTRcdTg4YWNcdTg4OGNcdTg4OTNcdTg4OGVcdTg5ODJcdTg5ZDZcdTg5ZDlcdTg5ZDVcdThhMzBcdThhMjdcdThhMmNcdThhMWVcdThjMzlcdThjM2JcdThjNWNcdThjNWRcdThjN2RcdThjYTVcdThkN2RcdThkN2JcdThkNzlcdThk''@;'; put 'put ''YmNcdThkYzJcdThkYjlcdThkYmZcdThkYzFcdThlZDhcdThlZGVcdThlZGRcdThlZGNcdThlZDdcdThlZTBcdThlZTFcdTkwMjRcdTkwMGJcdTkwMTFcdTkwMWNcdTkwMGNcdTkwMjFcdTkwZWZcdTkwZWFcdTkwZjBcdTkwZjRcdTkwZjJcdTkwZjNcdTkwZDRcdTkwZWJcdTkwZWNcdTkwZTlc''@;'; put 'put ''dTkxNTZcdTkxNThcdTkxNWFcdTkxNTNcdTkxNTVcdTkxZWNcdTkxZjRcdTkxZjFcdTkxZjNcdTkxZjhcdTkxZTRcdTkxZjlcdTkxZWFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxNV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE1XVtF''@;'; put 'put ''XV09NTUwNDArRSxMWzU1MDQwK0VdPUJbMjE1XVtFXSk7Zm9yKEJbMjE2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MWViXHU5MWY3XHU5MWU4XHU5MWVlXHU5NTdhXHU5NTg2XHU5NTg4XHU5NjdjXHU5NjZkXHU5NjZiXHU5Njcx''@;'; put 'put ''XHU5NjZmXHU5NmJmXHU5NzZhXHU5ODA0XHU5OGU1XHU5OTk3XHU1MDliXHU1MDk1XHU1MDk0XHU1MDllXHU1MDhiXHU1MGEzXHU1MDgzXHU1MDhjXHU1MDhlXHU1MDlkXHU1MDY4XHU1MDljXHU1MDkyXHU1MDgyXHU1MDg3XHU1MTVmXHU1MWQ0XHU1MzEyXHU1MzExXHU1M2E0XHU1M2E3XHU1''@;'; put 'put ''NTkxXHU1NWE4XHU1NWE1XHU1NWFkXHU1NTc3XHU1NjQ1XHU1NWEyXHU1NTkzXHU1NTg4XHU1NThmXHU1NWI1XHU1NTgxXHU1NWEzXHU1NTkyXHU1NWE0XHU1NTdkXHU1NThjXHU1NWE2XHU1NTdmXHU1NTk1XHU1NWExXHU1NThlXHU1NzBjXHU1ODI5XHU1ODM3XHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ODE5XHU1ODFlXHU1ODI3XHU1ODIzXHU1ODI4XHU1N2Y1XHU1ODQ4XHU1ODI1XHU1ODFjXHU1ODFiXHU1ODMzXHU1ODNmXHU1ODM2XHU1ODJlXHU1ODM5XHU1ODM4XHU1ODJkXHU1ODJjXHU1ODNiXHU1OTYxXHU1YWFmXHU1YTk0XHU1YTlmXHU1YTdh''@;'; put 'put ''XHU1YWEyXHU1YTllXHU1YTc4XHU1YWE2XHU1YTdjXHU1YWE1XHU1YWFjXHU1YTk1XHU1YWFlXHU1YTM3XHU1YTg0XHU1YThhXHU1YTk3XHU1YTgzXHU1YThiXHU1YWE5XHU1YTdiXHU1YTdkXHU1YThjXHU1YTljXHU1YThmXHU1YTkzXHU1YTlkXHU1YmVhXHU1YmNkXHU1YmNiXHU1YmQ0XHU1''@;'; put 'put ''YmQxXHU1YmNhXHU1YmNlXHU1YzBjXHU1YzMwXHU1ZDM3XHU1ZDQzXHU1ZDZiXHU1ZDQxXHU1ZDRiXHU1ZDNmXHU1ZDM1XHU1ZDUxXHU1ZDRlXHU1ZDU1XHU1ZDMzXHU1ZDNhXHU1ZDUyXHU1ZDNkXHU1ZDMxXHU1ZDU5XHU1ZDQyXHU1ZDM5XHU1ZDQ5XHU1ZDM4XHU1ZDNjXHU1ZDMyXHU1ZDM2''@;'; put 'put ''XHU1ZDQwXHU1ZDQ1XHU1ZTQ0XHU1ZTQxXHU1ZjU4XHU1ZmE2XHU1ZmE1XHU1ZmFiXHU2MGM5XHU2MGI5XHU2MGNjXHU2MGUyXHU2MGNlXHU2MGM0XHU2MTE0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTZdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihnZVtCWzIxNl1bRV1dPTU1Mjk2K0UsTFs1NTI5NitFXT1CWzIxNl1bRV0pO2ZvcihCWzIxN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjBmMlx1NjEwYVx1NjExNlx1NjEwNVx1NjBmNVx1NjExM1x1NjBmOFx1NjBmY1x1NjBm''@;'; put 'put ''ZVx1NjBjMVx1NjEwM1x1NjExOFx1NjExZFx1NjExMFx1NjBmZlx1NjEwNFx1NjEwYlx1NjI0YVx1NjM5NFx1NjNiMVx1NjNiMFx1NjNjZVx1NjNlNVx1NjNlOFx1NjNlZlx1NjNjM1x1NjQ5ZFx1NjNmM1x1NjNjYVx1NjNlMFx1NjNmNlx1NjNkNVx1NjNmMlx1NjNmNVx1NjQ2MVx1NjNkZlx1''@;'; put 'put ''NjNiZVx1NjNkZFx1NjNkY1x1NjNjNFx1NjNkOFx1NjNkM1x1NjNjMlx1NjNjN1x1NjNjY1x1NjNjYlx1NjNjOFx1NjNmMFx1NjNkN1x1NjNkOVx1NjUzMlx1NjU2N1x1NjU2YVx1NjU2NFx1NjU1Y1x1NjU2OFx1NjU2NVx1NjU4Y1x1NjU5ZFx1NjU5ZVx1NjVhZVx1NjVkMFx1NjVkMlx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjY3Y1x1NjY2Y1x1NjY3Ylx1NjY4MFx1NjY3MVx1NjY3OVx1NjY2YVx1NjY3Mlx1NjcwMVx1NjkwY1x1NjhkM1x1NjkwNFx1NjhkY1x1NjkyYVx1NjhlY1x1NjhlYVx1NjhmMVx1NjkwZlx1NjhkNlx1NjhmN1x1NjhlYlx1Njhl''@;'; put 'put ''NFx1NjhmNlx1NjkxM1x1NjkxMFx1NjhmM1x1NjhlMVx1NjkwN1x1NjhjY1x1NjkwOFx1Njk3MFx1NjhiNFx1NjkxMVx1NjhlZlx1NjhjNlx1NjkxNFx1NjhmOFx1NjhkMFx1NjhmZFx1NjhmY1x1NjhlOFx1NjkwYlx1NjkwYVx1NjkxN1x1NjhjZVx1NjhjOFx1NjhkZFx1NjhkZVx1NjhlNlx1''@;'; put 'put ''NjhmNFx1NjhkMVx1NjkwNlx1NjhkNFx1NjhlOVx1NjkxNVx1NjkyNVx1NjhjN1x1NmIzOVx1NmIzYlx1NmIzZlx1NmIzY1x1NmI5NFx1NmI5N1x1NmI5OVx1NmI5NVx1NmJiZFx1NmJmMFx1NmJmMlx1NmJmM1x1NmMzMFx1NmRmY1x1NmU0Nlx1NmU0N1x1NmUxZlx1NmU0OVx1NmU4OFx1NmUz''@;'; put 'put ''Y1x1NmUzZFx1NmU0NVx1NmU2Mlx1NmUyYlx1NmUzZlx1NmU0MVx1NmU1ZFx1NmU3M1x1NmUxY1x1NmUzM1x1NmU0Ylx1NmU0MFx1NmU1MVx1NmUzYlx1NmUwM1x1NmUyZVx1NmU1ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE3XVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoZ2VbQlsyMTddW0VdXT01NTU1MitFLExbNTU1NTIrRV09QlsyMTddW0VdKTtmb3IoQlsyMThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZlNjhcdTZlNWNcdTZlNjFcdTZlMzFcdTZlMjhcdTZlNjBcdTZl''@;'; put 'put ''NzFcdTZlNmJcdTZlMzlcdTZlMjJcdTZlMzBcdTZlNTNcdTZlNjVcdTZlMjdcdTZlNzhcdTZlNjRcdTZlNzdcdTZlNTVcdTZlNzlcdTZlNTJcdTZlNjZcdTZlMzVcdTZlMzZcdTZlNWFcdTcxMjBcdTcxMWVcdTcxMmZcdTcwZmJcdTcxMmVcdTcxMzFcdTcxMjNcdTcxMjVcdTcxMjJcdTcxMzJc''@;'; put 'put ''dTcxMWZcdTcxMjhcdTcxM2FcdTcxMWJcdTcyNGJcdTcyNWFcdTcyODhcdTcyODlcdTcyODZcdTcyODVcdTcyOGJcdTczMTJcdTczMGJcdTczMzBcdTczMjJcdTczMzFcdTczMzNcdTczMjdcdTczMzJcdTczMmRcdTczMjZcdTczMjNcdTczMzVcdTczMGNcdTc0MmVcdTc0MmNcdTc0MzBcdTc0''@;'; put 'put ''MmJcdTc0MTZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0MWFcdTc0MjFcdTc0MmRcdTc0MzFcdTc0MjRcdTc0MjNcdTc0MWRcdTc0MjlcdTc0MjBcdTc0MzJcdTc0ZmJcdTc1MmZcdTc1NmZcdTc1NmNcdTc1ZTdcdTc1ZGFcdTc1ZTFcdTc1ZTZcdTc1ZGRcdTc1''@;'; put 'put ''ZGZcdTc1ZTRcdTc1ZDdcdTc2OTVcdTc2OTJcdTc2ZGFcdTc3NDZcdTc3NDdcdTc3NDRcdTc3NGRcdTc3NDVcdTc3NGFcdTc3NGVcdTc3NGJcdTc3NGNcdTc3ZGVcdTc3ZWNcdTc4NjBcdTc4NjRcdTc4NjVcdTc4NWNcdTc4NmRcdTc4NzFcdTc4NmFcdTc4NmVcdTc4NzBcdTc4NjlcdTc4Njhc''@;'; put 'put ''dTc4NWVcdTc4NjJcdTc5NzRcdTc5NzNcdTc5NzJcdTc5NzBcdTdhMDJcdTdhMGFcdTdhMDNcdTdhMGNcdTdhMDRcdTdhOTlcdTdhZTZcdTdhZTRcdTdiNGFcdTdiM2JcdTdiNDRcdTdiNDhcdTdiNGNcdTdiNGVcdTdiNDBcdTdiNThcdTdiNDVcdTdjYTJcdTdjOWVcdTdjYThcdTdjYTFcdTdk''@;'; put 'put ''NThcdTdkNmZcdTdkNjNcdTdkNTNcdTdkNTZcdTdkNjdcdTdkNmFcdTdkNGZcdTdkNmRcdTdkNWNcdTdkNmJcdTdkNTJcdTdkNTRcdTdkNjlcdTdkNTFcdTdkNWZcdTdkNGVcdTdmM2VcdTdmM2ZcdTdmNjVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMThdLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzIxOF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE4XVtFXV09NTU4MDgrRSxMWzU1ODA4K0VdPUJbMjE4XVtFXSk7Zm9yKEJbMjE5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZjY2XHU3ZmEyXHU3ZmEwXHU3ZmExXHU3''@;'; put 'put ''ZmQ3XHU4MDUxXHU4MDRmXHU4MDUwXHU4MGZlXHU4MGQ0XHU4MTQzXHU4MTRhXHU4MTUyXHU4MTRmXHU4MTQ3XHU4MTNkXHU4MTRkXHU4MTNhXHU4MWU2XHU4MWVlXHU4MWY3XHU4MWY4XHU4MWY5XHU4MjA0XHU4MjNjXHU4MjNkXHU4MjNmXHU4Mjc1XHU4MzNiXHU4M2NmXHU4M2Y5XHU4NDIz''@;'; put 'put ''XHU4M2MwXHU4M2U4XHU4NDEyXHU4M2U3XHU4M2U0XHU4M2ZjXHU4M2Y2XHU4NDEwXHU4M2M2XHU4M2M4XHU4M2ViXHU4M2UzXHU4M2JmXHU4NDAxXHU4M2RkXHU4M2U1XHU4M2Q4XHU4M2ZmXHU4M2UxXHU4M2NiXHU4M2NlXHU4M2Q2XHU4M2Y1XHU4M2M5XHU4NDA5XHU4NDBmXHU4M2RlXHU4''@;'; put 'put ''NDExXHU4NDA2XHU4M2MyXHU4M2YzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4M2Q1XHU4M2ZhXHU4M2M3XHU4M2QxXHU4M2VhXHU4NDEzXHU4M2MzXHU4M2VjXHU4M2VlXHU4M2M0XHU4M2ZiXHU4M2Q3XHU4M2UyXHU4NDFiXHU4M2RiXHU4M2ZlXHU4NmQ4XHU4''@;'; put 'put ''NmUyXHU4NmU2XHU4NmQzXHU4NmUzXHU4NmRhXHU4NmVhXHU4NmRkXHU4NmViXHU4NmRjXHU4NmVjXHU4NmU5XHU4NmQ3XHU4NmU4XHU4NmQxXHU4ODQ4XHU4ODU2XHU4ODU1XHU4OGJhXHU4OGQ3XHU4OGI5XHU4OGI4XHU4OGMwXHU4OGJlXHU4OGI2XHU4OGJjXHU4OGI3XHU4OGJkXHU4OGIy''@;'; put 'put ''XHU4OTAxXHU4OGM5XHU4OTk1XHU4OTk4XHU4OTk3XHU4OWRkXHU4OWRhXHU4OWRiXHU4YTRlXHU4YTRkXHU4YTM5XHU4YTU5XHU4YTQwXHU4YTU3XHU4YTU4XHU4YTQ0XHU4YTQ1XHU4YTUyXHU4YTQ4XHU4YTUxXHU4YTRhXHU4YTRjXHU4YTRmXHU4YzVmXHU4YzgxXHU4YzgwXHU4Y2JhXHU4''@;'; put 'put ''Y2JlXHU4Y2IwXHU4Y2I5XHU4Y2I1XHU4ZDg0XHU4ZDgwXHU4ZDg5XHU4ZGQ4XHU4ZGQzXHU4ZGNkXHU4ZGM3XHU4ZGQ2XHU4ZGRjXHU4ZGNmXHU4ZGQ1XHU4ZGQ5XHU4ZGM4XHU4ZGQ3XHU4ZGM1XHU4ZWVmXHU4ZWY3XHU4ZWZhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE5XS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsyMTldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxOV1bRV1dPTU2MDY0K0UsTFs1NjA2NCtFXT1CWzIxOV1bRV0pO2ZvcihCWzIyMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGVmOVx1OGVlNlx1''@;'; put 'put ''OGVlZVx1OGVlNVx1OGVmNVx1OGVlN1x1OGVlOFx1OGVmNlx1OGVlYlx1OGVmMVx1OGVlY1x1OGVmNFx1OGVlOVx1OTAyZFx1OTAzNFx1OTAyZlx1OTEwNlx1OTEyY1x1OTEwNFx1OTBmZlx1OTBmY1x1OTEwOFx1OTBmOVx1OTBmYlx1OTEwMVx1OTEwMFx1OTEwN1x1OTEwNVx1OTEwM1x1OTE2''@;'; put 'put ''MVx1OTE2NFx1OTE1Zlx1OTE2Mlx1OTE2MFx1OTIwMVx1OTIwYVx1OTIyNVx1OTIwM1x1OTIxYVx1OTIyNlx1OTIwZlx1OTIwY1x1OTIwMFx1OTIxMlx1OTFmZlx1OTFmZFx1OTIwNlx1OTIwNFx1OTIyN1x1OTIwMlx1OTIxY1x1OTIyNFx1OTIxOVx1OTIxN1x1OTIwNVx1OTIxNlx1OTU3Ylx1''@;'; put 'put ''OTU4ZFx1OTU4Y1x1OTU5MFx1OTY4N1x1OTY3ZVx1OTY4OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY4OVx1OTY4M1x1OTY4MFx1OTZjMlx1OTZjOFx1OTZjM1x1OTZmMVx1OTZmMFx1OTc2Y1x1OTc3MFx1OTc2ZVx1OTgwN1x1OThhOVx1OThlYlx1OWNlNlx1''@;'; put 'put ''OWVmOVx1NGU4M1x1NGU4NFx1NGViNlx1NTBiZFx1NTBiZlx1NTBjNlx1NTBhZVx1NTBjNFx1NTBjYVx1NTBiNFx1NTBjOFx1NTBjMlx1NTBiMFx1NTBjMVx1NTBiYVx1NTBiMVx1NTBjYlx1NTBjOVx1NTBiNlx1NTBiOFx1NTFkN1x1NTI3YVx1NTI3OFx1NTI3Ylx1NTI3Y1x1NTVjM1x1NTVk''@;'; put 'put ''Ylx1NTVjY1x1NTVkMFx1NTVjYlx1NTVjYVx1NTVkZFx1NTVjMFx1NTVkNFx1NTVjNFx1NTVlOVx1NTViZlx1NTVkMlx1NTU4ZFx1NTVjZlx1NTVkNVx1NTVlMlx1NTVkNlx1NTVjOFx1NTVmMlx1NTVjZFx1NTVkOVx1NTVjMlx1NTcxNFx1NTg1M1x1NTg2OFx1NTg2NFx1NTg0Zlx1NTg0ZFx1''@;'; put 'put ''NTg0OVx1NTg2Zlx1NTg1NVx1NTg0ZVx1NTg1ZFx1NTg1OVx1NTg2NVx1NTg1Ylx1NTgzZFx1NTg2M1x1NTg3MVx1NThmY1x1NWFjN1x1NWFjNFx1NWFjYlx1NWFiYVx1NWFiOFx1NWFiMVx1NWFiNVx1NWFiMFx1NWFiZlx1NWFjOFx1NWFiYlx1NWFjNlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzIyMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjBdW0VdXT01NjMyMCtFLExbNTYzMjArRV09QlsyMjBdW0VdKTtmb3IoQlsyMjFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTVhYjdcdTVhYzBcdTVhY2FcdTVhYjRcdTVhYjZcdTVhY2RcdTVhYjlcdTVhOTBcdTViZDZcdTViZDhcdTViZDlcdTVjMWZcdTVjMzNcdTVkNzFcdTVkNjNcdTVkNGFcdTVkNjVcdTVkNzJcdTVkNmNcdTVkNWVcdTVkNjhcdTVkNjdcdTVkNjJcdTVkZjBcdTVlNGZcdTVlNGVcdTVlNGFcdTVl''@;'; put 'put ''NGRcdTVlNGJcdTVlYzVcdTVlY2NcdTVlYzZcdTVlY2JcdTVlYzdcdTVmNDBcdTVmYWZcdTVmYWRcdTYwZjdcdTYxNDlcdTYxNGFcdTYxMmJcdTYxNDVcdTYxMzZcdTYxMzJcdTYxMmVcdTYxNDZcdTYxMmZcdTYxNGZcdTYxMjlcdTYxNDBcdTYyMjBcdTkxNjhcdTYyMjNcdTYyMjVcdTYyMjRc''@;'; put 'put ''dTYzYzVcdTYzZjFcdTYzZWJcdTY0MTBcdTY0MTJcdTY0MDlcdTY0MjBcdTY0MjRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0MzNcdTY0NDNcdTY0MWZcdTY0MTVcdTY0MThcdTY0MzlcdTY0MzdcdTY0MjJcdTY0MjNcdTY0MGNcdTY0MjZcdTY0MzBcdTY0Mjhc''@;'; put 'put ''dTY0NDFcdTY0MzVcdTY0MmZcdTY0MGFcdTY0MWFcdTY0NDBcdTY0MjVcdTY0MjdcdTY0MGJcdTYzZTdcdTY0MWJcdTY0MmVcdTY0MjFcdTY0MGVcdTY1NmZcdTY1OTJcdTY1ZDNcdTY2ODZcdTY2OGNcdTY2OTVcdTY2OTBcdTY2OGJcdTY2OGFcdTY2OTlcdTY2OTRcdTY2NzhcdTY3MjBcdTY5''@;'; put 'put ''NjZcdTY5NWZcdTY5MzhcdTY5NGVcdTY5NjJcdTY5NzFcdTY5M2ZcdTY5NDVcdTY5NmFcdTY5MzlcdTY5NDJcdTY5NTdcdTY5NTlcdTY5N2FcdTY5NDhcdTY5NDlcdTY5MzVcdTY5NmNcdTY5MzNcdTY5M2RcdTY5NjVcdTY4ZjBcdTY5NzhcdTY5MzRcdTY5NjlcdTY5NDBcdTY5NmZcdTY5NDRc''@;'; put 'put ''dTY5NzZcdTY5NThcdTY5NDFcdTY5NzRcdTY5NGNcdTY5M2JcdTY5NGJcdTY5MzdcdTY5NWNcdTY5NGZcdTY5NTFcdTY5MzJcdTY5NTJcdTY5MmZcdTY5N2JcdTY5M2NcdTZiNDZcdTZiNDVcdTZiNDNcdTZiNDJcdTZiNDhcdTZiNDFcdTZiOWJcdWZhMGRcdTZiZmJcdTZiZmNcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsyMjFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjIxXVtFXV09NTY1NzYrRSxMWzU2NTc2K0VdPUJbMjIxXVtFXSk7Zm9yKEJbMjIyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU2YmY5XHU2YmY3XHU2YmY4XHU2ZTliXHU2ZWQ2XHU2ZWM4XHU2ZThmXHU2ZWMwXHU2ZTlmXHU2ZTkzXHU2ZTk0XHU2ZWEwXHU2ZWIxXHU2ZWI5XHU2ZWM2XHU2ZWQyXHU2ZWJkXHU2ZWMxXHU2ZTllXHU2ZWM5XHU2ZWI3XHU2ZWIwXHU2ZWNkXHU2ZWE2XHU2ZWNmXHU2''@;'; put 'put ''ZWIyXHU2ZWJlXHU2ZWMzXHU2ZWRjXHU2ZWQ4XHU2ZTk5XHU2ZTkyXHU2ZThlXHU2ZThkXHU2ZWE0XHU2ZWExXHU2ZWJmXHU2ZWIzXHU2ZWQwXHU2ZWNhXHU2ZTk3XHU2ZWFlXHU2ZWEzXHU3MTQ3XHU3MTU0XHU3MTUyXHU3MTYzXHU3MTYwXHU3MTQxXHU3MTVkXHU3MTYyXHU3MTcyXHU3MTc4''@;'; put 'put ''XHU3MTZhXHU3MTYxXHU3MTQyXHU3MTU4XHU3MTQzXHU3MTRiXHU3MTcwXHU3MTVmXHU3MTUwXHU3MTUzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTQ0XHU3MTRkXHU3MTVhXHU3MjRmXHU3MjhkXHU3MjhjXHU3MjkxXHU3MjkwXHU3MjhlXHU3MzNjXHU3MzQy''@;'; put 'put ''XHU3MzNiXHU3MzNhXHU3MzQwXHU3MzRhXHU3MzQ5XHU3NDQ0XHU3NDRhXHU3NDRiXHU3NDUyXHU3NDUxXHU3NDU3XHU3NDQwXHU3NDRmXHU3NDUwXHU3NDRlXHU3NDQyXHU3NDQ2XHU3NDRkXHU3NDU0XHU3NGUxXHU3NGZmXHU3NGZlXHU3NGZkXHU3NTFkXHU3NTc5XHU3NTc3XHU2OTgzXHU3''@;'; put 'put ''NWVmXHU3NjBmXHU3NjAzXHU3NWY3XHU3NWZlXHU3NWZjXHU3NWY5XHU3NWY4XHU3NjEwXHU3NWZiXHU3NWY2XHU3NWVkXHU3NWY1XHU3NWZkXHU3Njk5XHU3NmI1XHU3NmRkXHU3NzU1XHU3NzVmXHU3NzYwXHU3NzUyXHU3NzU2XHU3NzVhXHU3NzY5XHU3NzY3XHU3NzU0XHU3NzU5XHU3NzZk''@;'; put 'put ''XHU3N2UwXHU3ODg3XHU3ODlhXHU3ODk0XHU3ODhmXHU3ODg0XHU3ODk1XHU3ODg1XHU3ODg2XHU3OGExXHU3ODgzXHU3ODc5XHU3ODk5XHU3ODgwXHU3ODk2XHU3ODdiXHU3OTdjXHU3OTgyXHU3OTdkXHU3OTc5XHU3YTExXHU3YTE4XHU3YTE5XHU3YTEyXHU3YTE3XHU3YTE1XHU3YTIyXHU3''@;'; put 'put ''YTEzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyMl1bRV1dPTU2ODMyK0UsTFs1NjgzMitFXT1CWzIyMl1bRV0pO2ZvcihCWzIyM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2ExYlx1N2ExMFx1N2FhM1x1N2FhMlx1N2E5ZVx1N2FlYlx1N2I2Nlx1N2I2NFx1N2I2ZFx1N2I3NFx1N2I2OVx1N2I3Mlx1N2I2NVx1N2I3M1x1N2I3MVx1N2I3MFx1N2I2MVx1N2I3OFx1N2I3Nlx1N2I2M1x1N2NiMlx1N2NiNFx1N2NhZlx1''@;'; put 'put ''N2Q4OFx1N2Q4Nlx1N2Q4MFx1N2Q4ZFx1N2Q3Zlx1N2Q4NVx1N2Q3YVx1N2Q4ZVx1N2Q3Ylx1N2Q4M1x1N2Q3Y1x1N2Q4Y1x1N2Q5NFx1N2Q4NFx1N2Q3ZFx1N2Q5Mlx1N2Y2ZFx1N2Y2Ylx1N2Y2N1x1N2Y2OFx1N2Y2Y1x1N2ZhNlx1N2ZhNVx1N2ZhN1x1N2ZkYlx1N2ZkY1x1ODAyMVx1ODE2''@;'; put 'put ''NFx1ODE2MFx1ODE3N1x1ODE1Y1x1ODE2OVx1ODE1Ylx1ODE2Mlx1ODE3Mlx1NjcyMVx1ODE1ZVx1ODE3Nlx1ODE2N1x1ODE2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODE0NFx1ODE2MVx1ODIxZFx1ODI0OVx1ODI0NFx1ODI0MFx1ODI0Mlx1ODI0NVx1ODRm''@;'; put 'put ''MVx1ODQzZlx1ODQ1Nlx1ODQ3Nlx1ODQ3OVx1ODQ4Zlx1ODQ4ZFx1ODQ2NVx1ODQ1MVx1ODQ0MFx1ODQ4Nlx1ODQ2N1x1ODQzMFx1ODQ0ZFx1ODQ3ZFx1ODQ1YVx1ODQ1OVx1ODQ3NFx1ODQ3M1x1ODQ1ZFx1ODUwN1x1ODQ1ZVx1ODQzN1x1ODQzYVx1ODQzNFx1ODQ3YVx1ODQ0M1x1ODQ3OFx1''@;'; put 'put ''ODQzMlx1ODQ0NVx1ODQyOVx1ODNkOVx1ODQ0Ylx1ODQyZlx1ODQ0Mlx1ODQyZFx1ODQ1Zlx1ODQ3MFx1ODQzOVx1ODQ0ZVx1ODQ0Y1x1ODQ1Mlx1ODQ2Zlx1ODRjNVx1ODQ4ZVx1ODQzYlx1ODQ0N1x1ODQzNlx1ODQzM1x1ODQ2OFx1ODQ3ZVx1ODQ0NFx1ODQyYlx1ODQ2MFx1ODQ1NFx1ODQ2''@;'; put 'put ''ZVx1ODQ1MFx1ODcwYlx1ODcwNFx1ODZmN1x1ODcwY1x1ODZmYVx1ODZkNlx1ODZmNVx1ODc0ZFx1ODZmOFx1ODcwZVx1ODcwOVx1ODcwMVx1ODZmNlx1ODcwZFx1ODcwNVx1ODhkNlx1ODhjYlx1ODhjZFx1ODhjZVx1ODhkZVx1ODhkYlx1ODhkYVx1ODhjY1x1ODhkMFx1ODk4NVx1ODk5Ylx1''@;'; put 'put ''ODlkZlx1ODllNVx1ODllNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjNdW0VdXT01NzA4OCtFLExbNTcwODgrRV09QlsyMjNdW0VdKTtmb3IoQlsyMjRdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5ZTFcdTg5ZTBcdTg5ZTJcdTg5ZGNcdTg5ZTZcdThhNzZcdThhODZcdThhN2ZcdThhNjFcdThhM2ZcdThhNzdcdThhODJcdThhODRcdThhNzVcdThhODNcdThhODFcdThhNzRcdThhN2FcdThjM2NcdThjNGJcdThjNGFc''@;'; put 'put ''dThjNjVcdThjNjRcdThjNjZcdThjODZcdThjODRcdThjODVcdThjY2NcdThkNjhcdThkNjlcdThkOTFcdThkOGNcdThkOGVcdThkOGZcdThkOGRcdThkOTNcdThkOTRcdThkOTBcdThkOTJcdThkZjBcdThkZTBcdThkZWNcdThkZjFcdThkZWVcdThkZDBcdThkZTlcdThkZTNcdThkZTJcdThk''@;'; put 'put ''ZTdcdThkZjJcdThkZWJcdThkZjRcdThmMDZcdThlZmZcdThmMDFcdThmMDBcdThmMDVcdThmMDdcdThmMDhcdThmMDJcdThmMGJcdTkwNTJcdTkwM2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwNDRcdTkwNDlcdTkwM2RcdTkxMTBcdTkxMGRcdTkxMGZcdTkx''@;'; put 'put ''MTFcdTkxMTZcdTkxMTRcdTkxMGJcdTkxMGVcdTkxNmVcdTkxNmZcdTkyNDhcdTkyNTJcdTkyMzBcdTkyM2FcdTkyNjZcdTkyMzNcdTkyNjVcdTkyNWVcdTkyODNcdTkyMmVcdTkyNGFcdTkyNDZcdTkyNmRcdTkyNmNcdTkyNGZcdTkyNjBcdTkyNjdcdTkyNmZcdTkyMzZcdTkyNjFcdTkyNzBc''@;'; put 'put ''dTkyMzFcdTkyNTRcdTkyNjNcdTkyNTBcdTkyNzJcdTkyNGVcdTkyNTNcdTkyNGNcdTkyNTZcdTkyMzJcdTk1OWZcdTk1OWNcdTk1OWVcdTk1OWJcdTk2OTJcdTk2OTNcdTk2OTFcdTk2OTdcdTk2Y2VcdTk2ZmFcdTk2ZmRcdTk2ZjhcdTk2ZjVcdTk3NzNcdTk3NzdcdTk3NzhcdTk3NzJcdTk4''@;'; put 'put ''MGZcdTk4MGRcdTk4MGVcdTk4YWNcdTk4ZjZcdTk4ZjlcdTk5YWZcdTk5YjJcdTk5YjBcdTk5YjVcdTlhYWRcdTlhYWJcdTliNWJcdTljZWFcdTljZWRcdTljZTdcdTllODBcdTllZmRcdTUwZTZcdTUwZDRcdTUwZDdcdTUwZThcdTUwZjNcdTUwZGJcdTUwZWFcdTUwZGRcdTUwZTRcdTUwZDNc''@;'; put 'put ''dTUwZWNcdTUwZjBcdTUwZWZcdTUwZTNcdTUwZTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI0XVtFXV09NTczNDQrRSxMWzU3MzQ0K0VdPUJbMjI0XVtFXSk7Zm9yKEJbMjI1XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MWQ4XHU1MjgwXHU1MjgxXHU1MmU5XHU1MmViXHU1MzMwXHU1M2FjXHU1NjI3XHU1NjE1XHU1NjBjXHU1NjEyXHU1NWZjXHU1NjBmXHU1NjFjXHU1NjAxXHU1NjEzXHU1NjAyXHU1NWZhXHU1NjFk''@;'; put 'put ''XHU1NjA0XHU1NWZmXHU1NWY5XHU1ODg5XHU1ODdjXHU1ODkwXHU1ODk4XHU1ODg2XHU1ODgxXHU1ODdmXHU1ODc0XHU1ODhiXHU1ODdhXHU1ODg3XHU1ODkxXHU1ODhlXHU1ODc2XHU1ODgyXHU1ODg4XHU1ODdiXHU1ODk0XHU1ODhmXHU1OGZlXHU1OTZiXHU1YWRjXHU1YWVlXHU1YWU1XHU1''@;'; put 'put ''YWQ1XHU1YWVhXHU1YWRhXHU1YWVkXHU1YWViXHU1YWYzXHU1YWUyXHU1YWUwXHU1YWRiXHU1YWVjXHU1YWRlXHU1YWRkXHU1YWQ5XHU1YWU4XHU1YWRmXHU1Yjc3XHU1YmUwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YmUzXHU1YzYzXHU1ZDgyXHU1ZDgwXHU1''@;'; put 'put ''ZDdkXHU1ZDg2XHU1ZDdhXHU1ZDgxXHU1ZDc3XHU1ZDhhXHU1ZDg5XHU1ZDg4XHU1ZDdlXHU1ZDdjXHU1ZDhkXHU1ZDc5XHU1ZDdmXHU1ZTU4XHU1ZTU5XHU1ZTUzXHU1ZWQ4XHU1ZWQxXHU1ZWQ3XHU1ZWNlXHU1ZWRjXHU1ZWQ1XHU1ZWQ5XHU1ZWQyXHU1ZWQ0XHU1ZjQ0XHU1ZjQzXHU1ZjZm''@;'; put 'put ''XHU1ZmI2XHU2MTJjXHU2MTI4XHU2MTQxXHU2MTVlXHU2MTcxXHU2MTczXHU2MTUyXHU2MTUzXHU2MTcyXHU2MTZjXHU2MTgwXHU2MTc0XHU2MTU0XHU2MTdhXHU2MTViXHU2MTY1XHU2MTNiXHU2MTZhXHU2MTYxXHU2MTU2XHU2MjI5XHU2MjI3XHU2MjJiXHU2NDJiXHU2NDRkXHU2NDViXHU2''@;'; put 'put ''NDVkXHU2NDc0XHU2NDc2XHU2NDcyXHU2NDczXHU2NDdkXHU2NDc1XHU2NDY2XHU2NGE2XHU2NDRlXHU2NDgyXHU2NDVlXHU2NDVjXHU2NDRiXHU2NDUzXHU2NDYwXHU2NDUwXHU2NDdmXHU2NDNmXHU2NDZjXHU2NDZiXHU2NDU5XHU2NDY1XHU2NDc3XHU2NTczXHU2NWEwXHU2NmExXHU2NmEw''@;'; put 'put ''XHU2NjlmXHU2NzA1XHU2NzA0XHU2NzIyXHU2OWIxXHU2OWI2XHU2OWM5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyNV1bRV1dPTU3NjAwK0UsTFs1NzYwMCtFXT1CWzIyNV1bRV0pO2Zv''@;'; put 'put ''cihCWzIyNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjlhMFx1NjljZVx1Njk5Nlx1NjliMFx1NjlhY1x1NjliY1x1Njk5MVx1Njk5OVx1Njk4ZVx1NjlhN1x1Njk4ZFx1NjlhOVx1NjliZVx1NjlhZlx1NjliZlx1NjljNFx1Njli''@;'; put 'put ''ZFx1NjlhNFx1NjlkNFx1NjliOVx1NjljYVx1Njk5YVx1NjljZlx1NjliM1x1Njk5M1x1NjlhYVx1NjlhMVx1Njk5ZVx1NjlkOVx1Njk5N1x1Njk5MFx1NjljMlx1NjliNVx1NjlhNVx1NjljNlx1NmI0YVx1NmI0ZFx1NmI0Ylx1NmI5ZVx1NmI5Zlx1NmJhMFx1NmJjM1x1NmJjNFx1NmJmZVx1''@;'; put 'put ''NmVjZVx1NmVmNVx1NmVmMVx1NmYwM1x1NmYyNVx1NmVmOFx1NmYzN1x1NmVmYlx1NmYyZVx1NmYwOVx1NmY0ZVx1NmYxOVx1NmYxYVx1NmYyN1x1NmYxOFx1NmYzYlx1NmYxMlx1NmVlZFx1NmYwYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmYzNlx1NmY3M1x1''@;'; put 'put ''NmVmOVx1NmVlZVx1NmYyZFx1NmY0MFx1NmYzMFx1NmYzY1x1NmYzNVx1NmVlYlx1NmYwN1x1NmYwZVx1NmY0M1x1NmYwNVx1NmVmZFx1NmVmNlx1NmYzOVx1NmYxY1x1NmVmY1x1NmYzYVx1NmYxZlx1NmYwZFx1NmYxZVx1NmYwOFx1NmYyMVx1NzE4N1x1NzE5MFx1NzE4OVx1NzE4MFx1NzE4''@;'; put 'put ''NVx1NzE4Mlx1NzE4Zlx1NzE3Ylx1NzE4Nlx1NzE4MVx1NzE5N1x1NzI0NFx1NzI1M1x1NzI5N1x1NzI5NVx1NzI5M1x1NzM0M1x1NzM0ZFx1NzM1MVx1NzM0Y1x1NzQ2Mlx1NzQ3M1x1NzQ3MVx1NzQ3NVx1NzQ3Mlx1NzQ2N1x1NzQ2ZVx1NzUwMFx1NzUwMlx1NzUwM1x1NzU3ZFx1NzU5MFx1''@;'; put 'put ''NzYxNlx1NzYwOFx1NzYwY1x1NzYxNVx1NzYxMVx1NzYwYVx1NzYxNFx1NzZiOFx1Nzc4MVx1Nzc3Y1x1Nzc4NVx1Nzc4Mlx1Nzc2ZVx1Nzc4MFx1Nzc2Zlx1Nzc3ZVx1Nzc4M1x1NzhiMlx1NzhhYVx1NzhiNFx1NzhhZFx1NzhhOFx1Nzg3ZVx1NzhhYlx1Nzg5ZVx1NzhhNVx1NzhhMFx1Nzhh''@;'; put 'put ''Y1x1NzhhMlx1NzhhNFx1Nzk5OFx1Nzk4YVx1Nzk4Ylx1Nzk5Nlx1Nzk5NVx1Nzk5NFx1Nzk5M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjZdW0VdXT01Nzg1NitFLExbNTc4NTYrRV09''@;'; put 'put ''QlsyMjZdW0VdKTtmb3IoQlsyMjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5OTdcdTc5ODhcdTc5OTJcdTc5OTBcdTdhMmJcdTdhNGFcdTdhMzBcdTdhMmZcdTdhMjhcdTdhMjZcdTdhYThcdTdhYWJcdTdhYWNcdTdhZWVcdTdi''@;'; put 'put ''ODhcdTdiOWNcdTdiOGFcdTdiOTFcdTdiOTBcdTdiOTZcdTdiOGRcdTdiOGNcdTdiOWJcdTdiOGVcdTdiODVcdTdiOThcdTUyODRcdTdiOTlcdTdiYTRcdTdiODJcdTdjYmJcdTdjYmZcdTdjYmNcdTdjYmFcdTdkYTdcdTdkYjdcdTdkYzJcdTdkYTNcdTdkYWFcdTdkYzFcdTdkYzBcdTdkYzVc''@;'; put 'put ''dTdkOWRcdTdkY2VcdTdkYzRcdTdkYzZcdTdkY2JcdTdkY2NcdTdkYWZcdTdkYjlcdTdkOTZcdTdkYmNcdTdkOWZcdTdkYTZcdTdkYWVcdTdkYTlcdTdkYTFcdTdkYzlcdTdmNzNcdTdmZTJcdTdmZTNcdTdmZTVcdTdmZGVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTgwMjRcdTgwNWRcdTgwNWNcdTgxODlcdTgxODZcdTgxODNcdTgxODdcdTgxOGRcdTgxOGNcdTgxOGJcdTgyMTVcdTg0OTdcdTg0YTRcdTg0YTFcdTg0OWZcdTg0YmFcdTg0Y2VcdTg0YzJcdTg0YWNcdTg0YWVcdTg0YWJcdTg0YjlcdTg0YjRcdTg0YzFcdTg0Y2RcdTg0YWFcdTg0OWFcdTg0''@;'; put 'put ''YjFcdTg0ZDBcdTg0OWRcdTg0YTdcdTg0YmJcdTg0YTJcdTg0OTRcdTg0YzdcdTg0Y2NcdTg0OWJcdTg0YTlcdTg0YWZcdTg0YThcdTg0ZDZcdTg0OThcdTg0YjZcdTg0Y2ZcdTg0YTBcdTg0ZDdcdTg0ZDRcdTg0ZDJcdTg0ZGJcdTg0YjBcdTg0OTFcdTg2NjFcdTg3MzNcdTg3MjNcdTg3Mjhc''@;'; put 'put ''dTg3NmJcdTg3NDBcdTg3MmVcdTg3MWVcdTg3MjFcdTg3MTlcdTg3MWJcdTg3NDNcdTg3MmNcdTg3NDFcdTg3M2VcdTg3NDZcdTg3MjBcdTg3MzJcdTg3MmFcdTg3MmRcdTg3M2NcdTg3MTJcdTg3M2FcdTg3MzFcdTg3MzVcdTg3NDJcdTg3MjZcdTg3MjdcdTg3MzhcdTg3MjRcdTg3MWFcdTg3''@;'; put 'put ''MzBcdTg3MTFcdTg4ZjdcdTg4ZTdcdTg4ZjFcdTg4ZjJcdTg4ZmFcdTg4ZmVcdTg4ZWVcdTg4ZmNcdTg4ZjZcdTg4ZmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyN11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI3XVtFXV09NTgxMTIr''@;'; put 'put ''RSxMWzU4MTEyK0VdPUJbMjI3XVtFXSk7Zm9yKEJbMjI4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OGYwXHU4OGVjXHU4OGViXHU4OTlkXHU4OWExXHU4OTlmXHU4OTllXHU4OWU5XHU4OWViXHU4OWU4XHU4YWFiXHU4YTk5XHU4''@;'; put 'put ''YThiXHU4YTkyXHU4YThmXHU4YTk2XHU4YzNkXHU4YzY4XHU4YzY5XHU4Y2Q1XHU4Y2NmXHU4Y2Q3XHU4ZDk2XHU4ZTA5XHU4ZTAyXHU4ZGZmXHU4ZTBkXHU4ZGZkXHU4ZTBhXHU4ZTAzXHU4ZTA3XHU4ZTA2XHU4ZTA1XHU4ZGZlXHU4ZTAwXHU4ZTA0XHU4ZjEwXHU4ZjExXHU4ZjBlXHU4ZjBk''@;'; put 'put ''XHU5MTIzXHU5MTFjXHU5MTIwXHU5MTIyXHU5MTFmXHU5MTFkXHU5MTFhXHU5MTI0XHU5MTIxXHU5MTFiXHU5MTdhXHU5MTcyXHU5MTc5XHU5MTczXHU5MmE1XHU5MmE0XHU5Mjc2XHU5MjliXHU5MjdhXHU5MmEwXHU5Mjk0XHU5MmFhXHU5MjhkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU5MmE2XHU5MjlhXHU5MmFiXHU5Mjc5XHU5Mjk3XHU5MjdmXHU5MmEzXHU5MmVlXHU5MjhlXHU5MjgyXHU5Mjk1XHU5MmEyXHU5MjdkXHU5Mjg4XHU5MmExXHU5MjhhXHU5Mjg2XHU5MjhjXHU5Mjk5XHU5MmE3XHU5MjdlXHU5Mjg3XHU5MmE5XHU5MjlkXHU5MjhiXHU5''@;'; put 'put ''MjJkXHU5NjllXHU5NmExXHU5NmZmXHU5NzU4XHU5NzdkXHU5NzdhXHU5NzdlXHU5NzgzXHU5NzgwXHU5NzgyXHU5NzdiXHU5Nzg0XHU5NzgxXHU5NzdmXHU5N2NlXHU5N2NkXHU5ODE2XHU5OGFkXHU5OGFlXHU5OTAyXHU5OTAwXHU5OTA3XHU5OTlkXHU5OTljXHU5OWMzXHU5OWI5XHU5OWJi''@;'; put 'put ''XHU5OWJhXHU5OWMyXHU5OWJkXHU5OWM3XHU5YWIxXHU5YWUzXHU5YWU3XHU5YjNlXHU5YjNmXHU5YjYwXHU5YjYxXHU5YjVmXHU5Y2YxXHU5Y2YyXHU5Y2Y1XHU5ZWE3XHU1MGZmXHU1MTAzXHU1MTMwXHU1MGY4XHU1MTA2XHU1MTA3XHU1MGY2XHU1MGZlXHU1MTBiXHU1MTBjXHU1MGZkXHU1''@;'; put 'put ''MTBhXHU1MjhiXHU1MjhjXHU1MmYxXHU1MmVmXHU1NjQ4XHU1NjQyXHU1NjRjXHU1NjM1XHU1NjQxXHU1NjRhXHU1NjQ5XHU1NjQ2XHU1NjU4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIy''@;'; put 'put ''OF1bRV1dPTU4MzY4K0UsTFs1ODM2OCtFXT1CWzIyOF1bRV0pO2ZvcihCWzIyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTY1YVx1NTY0MFx1NTYzM1x1NTYzZFx1NTYyY1x1NTYzZVx1NTYzOFx1NTYyYVx1NTYzYVx1NTcxYVx1''@;'; put 'put ''NThhYlx1NTg5ZFx1NThiMVx1NThhMFx1NThhM1x1NThhZlx1NThhY1x1NThhNVx1NThhMVx1NThmZlx1NWFmZlx1NWFmNFx1NWFmZFx1NWFmN1x1NWFmNlx1NWIwM1x1NWFmOFx1NWIwMlx1NWFmOVx1NWIwMVx1NWIwN1x1NWIwNVx1NWIwZlx1NWM2N1x1NWQ5OVx1NWQ5N1x1NWQ5Zlx1NWQ5''@;'; put 'put ''Mlx1NWRhMlx1NWQ5M1x1NWQ5NVx1NWRhMFx1NWQ5Y1x1NWRhMVx1NWQ5YVx1NWQ5ZVx1NWU2OVx1NWU1ZFx1NWU2MFx1NWU1Y1x1N2RmM1x1NWVkYlx1NWVkZVx1NWVlMVx1NWY0OVx1NWZiMlx1NjE4Ylx1NjE4M1x1NjE3OVx1NjFiMVx1NjFiMFx1NjFhMlx1NjE4OVx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjE5Ylx1NjE5M1x1NjFhZlx1NjFhZFx1NjE5Zlx1NjE5Mlx1NjFhYVx1NjFhMVx1NjE4ZFx1NjE2Nlx1NjFiM1x1NjIyZFx1NjQ2ZVx1NjQ3MFx1NjQ5Nlx1NjRhMFx1NjQ4NVx1NjQ5N1x1NjQ5Y1x1NjQ4Zlx1NjQ4Ylx1NjQ4YVx1NjQ4Y1x1''@;'; put 'put ''NjRhM1x1NjQ5Zlx1NjQ2OFx1NjRiMVx1NjQ5OFx1NjU3Nlx1NjU3YVx1NjU3OVx1NjU3Ylx1NjViMlx1NjViM1x1NjZiNVx1NjZiMFx1NjZhOVx1NjZiMlx1NjZiN1x1NjZhYVx1NjZhZlx1NmEwMFx1NmEwNlx1NmExN1x1NjllNVx1NjlmOFx1NmExNVx1NjlmMVx1NjllNFx1NmEyMFx1Njlm''@;'; put 'put ''Zlx1NjllY1x1NjllMlx1NmExYlx1NmExZFx1NjlmZVx1NmEyN1x1NjlmMlx1NjllZVx1NmExNFx1NjlmN1x1NjllN1x1NmE0MFx1NmEwOFx1NjllNlx1NjlmYlx1NmEwZFx1NjlmY1x1NjllYlx1NmEwOVx1NmEwNFx1NmExOFx1NmEyNVx1NmEwZlx1NjlmNlx1NmEyNlx1NmEwN1x1NjlmNFx1''@;'; put 'put ''NmExNlx1NmI1MVx1NmJhNVx1NmJhM1x1NmJhMlx1NmJhNlx1NmMwMVx1NmMwMFx1NmJmZlx1NmMwMlx1NmY0MVx1NmYyNlx1NmY3ZVx1NmY4N1x1NmZjNlx1NmY5Mlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI5XVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoZ2VbQlsyMjldW0VdXT01ODYyNCtFLExbNTg2MjQrRV09QlsyMjldW0VdKTtmb3IoQlsyMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmOGRcdTZmODlcdTZmOGNcdTZmNjJcdTZmNGZcdTZmODVcdTZmNWFcdTZmOTZc''@;'; put 'put ''dTZmNzZcdTZmNmNcdTZmODJcdTZmNTVcdTZmNzJcdTZmNTJcdTZmNTBcdTZmNTdcdTZmOTRcdTZmOTNcdTZmNWRcdTZmMDBcdTZmNjFcdTZmNmJcdTZmN2RcdTZmNjdcdTZmOTBcdTZmNTNcdTZmOGJcdTZmNjlcdTZmN2ZcdTZmOTVcdTZmNjNcdTZmNzdcdTZmNmFcdTZmN2JcdTcxYjJcdTcx''@;'; put 'put ''YWZcdTcxOWJcdTcxYjBcdTcxYTBcdTcxOWFcdTcxYTlcdTcxYjVcdTcxOWRcdTcxYTVcdTcxOWVcdTcxYTRcdTcxYTFcdTcxYWFcdTcxOWNcdTcxYTdcdTcxYjNcdTcyOThcdTcyOWFcdTczNThcdTczNTJcdTczNWVcdTczNWZcdTczNjBcdTczNWRcdTczNWJcdTczNjFcdTczNWFcdTczNTlc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczNjJcdTc0ODdcdTc0ODlcdTc0OGFcdTc0ODZcdTc0ODFcdTc0N2RcdTc0ODVcdTc0ODhcdTc0N2NcdTc0NzlcdTc1MDhcdTc1MDdcdTc1N2VcdTc2MjVcdTc2MWVcdTc2MTlcdTc2MWRcdTc2MWNcdTc2MjNcdTc2MWFc''@;'; put 'put ''dTc2MjhcdTc2MWJcdTc2OWNcdTc2OWRcdTc2OWVcdTc2OWJcdTc3OGRcdTc3OGZcdTc3ODlcdTc3ODhcdTc4Y2RcdTc4YmJcdTc4Y2ZcdTc4Y2NcdTc4ZDFcdTc4Y2VcdTc4ZDRcdTc4YzhcdTc4YzNcdTc4YzRcdTc4YzlcdTc5OWFcdTc5YTFcdTc5YTBcdTc5OWNcdTc5YTJcdTc5OWJcdTZi''@;'; put 'put ''NzZcdTdhMzlcdTdhYjJcdTdhYjRcdTdhYjNcdTdiYjdcdTdiY2JcdTdiYmVcdTdiYWNcdTdiY2VcdTdiYWZcdTdiYjlcdTdiY2FcdTdiYjVcdTdjYzVcdTdjYzhcdTdjY2NcdTdjY2JcdTdkZjdcdTdkZGJcdTdkZWFcdTdkZTdcdTdkZDdcdTdkZTFcdTdlMDNcdTdkZmFcdTdkZTZcdTdkZjZc''@;'; put 'put ''dTdkZjFcdTdkZjBcdTdkZWVcdTdkZGZcdTdmNzZcdTdmYWNcdTdmYjBcdTdmYWRcdTdmZWRcdTdmZWJcdTdmZWFcdTdmZWNcdTdmZTZcdTdmZThcdTgwNjRcdTgwNjdcdTgxYTNcdTgxOWZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMF1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMwXVtFXV09NTg4ODArRSxMWzU4ODgwK0VdPUJbMjMwXVtFXSk7Zm9yKEJbMjMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MTllXHU4MTk1XHU4MWEyXHU4MTk5XHU4MTk3XHU4MjE2''@;'; put 'put ''XHU4MjRmXHU4MjUzXHU4MjUyXHU4MjUwXHU4MjRlXHU4MjUxXHU4NTI0XHU4NTNiXHU4NTBmXHU4NTAwXHU4NTI5XHU4NTBlXHU4NTA5XHU4NTBkXHU4NTFmXHU4NTBhXHU4NTI3XHU4NTFjXHU4NGZiXHU4NTJiXHU4NGZhXHU4NTA4XHU4NTBjXHU4NGY0XHU4NTJhXHU4NGYyXHU4NTE1XHU4''@;'; put 'put ''NGY3XHU4NGViXHU4NGYzXHU4NGZjXHU4NTEyXHU4NGVhXHU4NGU5XHU4NTE2XHU4NGZlXHU4NTI4XHU4NTFkXHU4NTJlXHU4NTAyXHU4NGZkXHU4NTFlXHU4NGY2XHU4NTMxXHU4NTI2XHU4NGU3XHU4NGU4XHU4NGYwXHU4NGVmXHU4NGY5XHU4NTE4XHU4NTIwXHU4NTMwXHU4NTBiXHU4NTE5''@;'; put 'put ''XHU4NTJmXHU4NjYyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NzU2XHU4NzYzXHU4NzY0XHU4Nzc3XHU4N2UxXHU4NzczXHU4NzU4XHU4NzU0XHU4NzViXHU4NzUyXHU4NzYxXHU4NzVhXHU4NzUxXHU4NzVlXHU4NzZkXHU4NzZhXHU4NzUwXHU4NzRlXHU4NzVm''@;'; put 'put ''XHU4NzVkXHU4NzZmXHU4NzZjXHU4NzdhXHU4NzZlXHU4NzVjXHU4NzY1XHU4NzRmXHU4NzdiXHU4Nzc1XHU4NzYyXHU4NzY3XHU4NzY5XHU4ODVhXHU4OTA1XHU4OTBjXHU4OTE0XHU4OTBiXHU4OTE3XHU4OTE4XHU4OTE5XHU4OTA2XHU4OTE2XHU4OTExXHU4OTBlXHU4OTA5XHU4OWEyXHU4''@;'; put 'put ''OWE0XHU4OWEzXHU4OWVkXHU4OWYwXHU4OWVjXHU4YWNmXHU4YWM2XHU4YWI4XHU4YWQzXHU4YWQxXHU4YWQ0XHU4YWQ1XHU4YWJiXHU4YWQ3XHU4YWJlXHU4YWMwXHU4YWM1XHU4YWQ4XHU4YWMzXHU4YWJhXHU4YWJkXHU4YWQ5XHU4YzNlXHU4YzRkXHU4YzhmXHU4Y2U1XHU4Y2RmXHU4Y2Q5''@;'; put 'put ''XHU4Y2U4XHU4Y2RhXHU4Y2RkXHU4Y2U3XHU4ZGEwXHU4ZDljXHU4ZGExXHU4ZDliXHU4ZTIwXHU4ZTIzXHU4ZTI1XHU4ZTI0XHU4ZTJlXHU4ZTE1XHU4ZTFiXHU4ZTE2XHU4ZTExXHU4ZTE5XHU4ZTI2XHU4ZTI3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMxXS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsyMzFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzMV1bRV1dPTU5MTM2K0UsTFs1OTEzNitFXT1CWzIzMV1bRV0pO2ZvcihCWzIzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGUxNFx1OGUxMlx1OGUxOFx1OGUx''@;'; put 'put ''M1x1OGUxY1x1OGUxN1x1OGUxYVx1OGYyY1x1OGYyNFx1OGYxOFx1OGYxYVx1OGYyMFx1OGYyM1x1OGYxNlx1OGYxN1x1OTA3M1x1OTA3MFx1OTA2Zlx1OTA2N1x1OTA2Ylx1OTEyZlx1OTEyYlx1OTEyOVx1OTEyYVx1OTEzMlx1OTEyNlx1OTEyZVx1OTE4NVx1OTE4Nlx1OTE4YVx1OTE4MVx1''@;'; put 'put ''OTE4Mlx1OTE4NFx1OTE4MFx1OTJkMFx1OTJjM1x1OTJjNFx1OTJjMFx1OTJkOVx1OTJiNlx1OTJjZlx1OTJmMVx1OTJkZlx1OTJkOFx1OTJlOVx1OTJkN1x1OTJkZFx1OTJjY1x1OTJlZlx1OTJjMlx1OTJlOFx1OTJjYVx1OTJjOFx1OTJjZVx1OTJlNlx1OTJjZFx1OTJkNVx1OTJjOVx1OTJl''@;'; put 'put ''MFx1OTJkZVx1OTJlN1x1OTJkMVx1OTJkM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJiNVx1OTJlMVx1OTJjNlx1OTJiNFx1OTU3Y1x1OTVhY1x1OTVhYlx1OTVhZVx1OTViMFx1OTZhNFx1OTZhMlx1OTZkM1x1OTcwNVx1OTcwOFx1OTcwMlx1OTc1YVx1OTc4''@;'; put 'put ''YVx1OTc4ZVx1OTc4OFx1OTdkMFx1OTdjZlx1OTgxZVx1OTgxZFx1OTgyNlx1OTgyOVx1OTgyOFx1OTgyMFx1OTgxYlx1OTgyN1x1OThiMlx1OTkwOFx1OThmYVx1OTkxMVx1OTkxNFx1OTkxNlx1OTkxN1x1OTkxNVx1OTlkY1x1OTljZFx1OTljZlx1OTlkM1x1OTlkNFx1OTljZVx1OTljOVx1''@;'; put 'put ''OTlkNlx1OTlkOFx1OTljYlx1OTlkN1x1OTljY1x1OWFiM1x1OWFlY1x1OWFlYlx1OWFmM1x1OWFmMlx1OWFmMVx1OWI0Nlx1OWI0M1x1OWI2N1x1OWI3NFx1OWI3MVx1OWI2Nlx1OWI3Nlx1OWI3NVx1OWI3MFx1OWI2OFx1OWI2NFx1OWI2Y1x1OWNmY1x1OWNmYVx1OWNmZFx1OWNmZlx1OWNm''@;'; put 'put ''N1x1OWQwN1x1OWQwMFx1OWNmOVx1OWNmYlx1OWQwOFx1OWQwNVx1OWQwNFx1OWU4M1x1OWVkM1x1OWYwZlx1OWYxMFx1NTExY1x1NTExM1x1NTExN1x1NTExYVx1NTExMVx1NTFkZVx1NTMzNFx1NTNlMVx1NTY3MFx1NTY2MFx1NTY2ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMl0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzJdW0VdXT01OTM5MitFLExbNTkzOTIrRV09QlsyMzJdW0VdKTtmb3IoQlsyMzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2NzNcdTU2''@;'; put 'put ''NjZcdTU2NjNcdTU2NmRcdTU2NzJcdTU2NWVcdTU2NzdcdTU3MWNcdTU3MWJcdTU4YzhcdTU4YmRcdTU4YzlcdTU4YmZcdTU4YmFcdTU4YzJcdTU4YmNcdTU4YzZcdTViMTdcdTViMTlcdTViMWJcdTViMjFcdTViMTRcdTViMTNcdTViMTBcdTViMTZcdTViMjhcdTViMWFcdTViMjBcdTViMWVc''@;'; put 'put ''dTViZWZcdTVkYWNcdTVkYjFcdTVkYTlcdTVkYTdcdTVkYjVcdTVkYjBcdTVkYWVcdTVkYWFcdTVkYThcdTVkYjJcdTVkYWRcdTVkYWZcdTVkYjRcdTVlNjdcdTVlNjhcdTVlNjZcdTVlNmZcdTVlZTlcdTVlZTdcdTVlZTZcdTVlZThcdTVlZTVcdTVmNGJcdTVmYmNcdTYxOWRcdTYxYThcdTYx''@;'; put 'put ''OTZcdTYxYzVcdTYxYjRcdTYxYzZcdTYxYzFcdTYxY2NcdTYxYmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxYmZcdTYxYjhcdTYxOGNcdTY0ZDdcdTY0ZDZcdTY0ZDBcdTY0Y2ZcdTY0YzlcdTY0YmRcdTY0ODlcdTY0YzNcdTY0ZGJcdTY0ZjNcdTY0ZDlcdTY1''@;'; put 'put ''MzNcdTY1N2ZcdTY1N2NcdTY1YTJcdTY2YzhcdTY2YmVcdTY2YzBcdTY2Y2FcdTY2Y2JcdTY2Y2ZcdTY2YmRcdTY2YmJcdTY2YmFcdTY2Y2NcdTY3MjNcdTZhMzRcdTZhNjZcdTZhNDlcdTZhNjdcdTZhMzJcdTZhNjhcdTZhM2VcdTZhNWRcdTZhNmRcdTZhNzZcdTZhNWJcdTZhNTFcdTZhMjhc''@;'; put 'put ''dTZhNWFcdTZhM2JcdTZhM2ZcdTZhNDFcdTZhNmFcdTZhNjRcdTZhNTBcdTZhNGZcdTZhNTRcdTZhNmZcdTZhNjlcdTZhNjBcdTZhM2NcdTZhNWVcdTZhNTZcdTZhNTVcdTZhNGRcdTZhNGVcdTZhNDZcdTZiNTVcdTZiNTRcdTZiNTZcdTZiYTdcdTZiYWFcdTZiYWJcdTZiYzhcdTZiYzdcdTZj''@;'; put 'put ''MDRcdTZjMDNcdTZjMDZcdTZmYWRcdTZmY2JcdTZmYTNcdTZmYzdcdTZmYmNcdTZmY2VcdTZmYzhcdTZmNWVcdTZmYzRcdTZmYmRcdTZmOWVcdTZmY2FcdTZmYThcdTcwMDRcdTZmYTVcdTZmYWVcdTZmYmFcdTZmYWNcdTZmYWFcdTZmY2ZcdTZmYmZcdTZmYjhcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsyMzNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzM11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMzXVtFXV09NTk2NDgrRSxMWzU5NjQ4K0VdPUJbMjMzXVtFXSk7Zm9yKEJbMjM0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU2ZmEyXHU2ZmM5XHU2ZmFiXHU2ZmNkXHU2ZmFmXHU2ZmIyXHU2ZmIwXHU3MWM1XHU3MWMyXHU3MWJmXHU3MWI4XHU3MWQ2XHU3MWMwXHU3MWMxXHU3MWNiXHU3MWQ0XHU3MWNhXHU3MWM3XHU3MWNmXHU3MWJkXHU3MWQ4XHU3MWJjXHU3MWM2XHU3MWRhXHU3MWRiXHU3MjlkXHU3Mjll''@;'; put 'put ''XHU3MzY5XHU3MzY2XHU3MzY3XHU3MzZjXHU3MzY1XHU3MzZiXHU3MzZhXHU3NDdmXHU3NDlhXHU3NGEwXHU3NDk0XHU3NDkyXHU3NDk1XHU3NGExXHU3NTBiXHU3NTgwXHU3NjJmXHU3NjJkXHU3NjMxXHU3NjNkXHU3NjMzXHU3NjNjXHU3NjM1XHU3NjMyXHU3NjMwXHU3NmJiXHU3NmU2XHU3''@;'; put 'put ''NzlhXHU3NzlkXHU3N2ExXHU3NzljXHU3NzliXHU3N2EyXHU3N2EzXHU3Nzk1XHU3Nzk5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Nzk3XHU3OGRkXHU3OGU5XHU3OGU1XHU3OGVhXHU3OGRlXHU3OGUzXHU3OGRiXHU3OGUxXHU3OGUyXHU3OGVkXHU3OGRmXHU3''@;'; put 'put ''OGUwXHU3OWE0XHU3YTQ0XHU3YTQ4XHU3YTQ3XHU3YWI2XHU3YWI4XHU3YWI1XHU3YWIxXHU3YWI3XHU3YmRlXHU3YmUzXHU3YmU3XHU3YmRkXHU3YmQ1XHU3YmU1XHU3YmRhXHU3YmU4XHU3YmY5XHU3YmQ0XHU3YmVhXHU3YmUyXHU3YmRjXHU3YmViXHU3YmQ4XHU3YmRmXHU3Y2QyXHU3Y2Q0''@;'; put 'put ''XHU3Y2Q3XHU3Y2QwXHU3Y2QxXHU3ZTEyXHU3ZTIxXHU3ZTE3XHU3ZTBjXHU3ZTFmXHU3ZTIwXHU3ZTEzXHU3ZTBlXHU3ZTFjXHU3ZTE1XHU3ZTFhXHU3ZTIyXHU3ZTBiXHU3ZTBmXHU3ZTE2XHU3ZTBkXHU3ZTE0XHU3ZTI1XHU3ZTI0XHU3ZjQzXHU3ZjdiXHU3ZjdjXHU3ZjdhXHU3ZmIxXHU3''@;'; put 'put ''ZmVmXHU4MDJhXHU4MDI5XHU4MDZjXHU4MWIxXHU4MWE2XHU4MWFlXHU4MWI5XHU4MWI1XHU4MWFiXHU4MWIwXHU4MWFjXHU4MWI0XHU4MWIyXHU4MWI3XHU4MWE3XHU4MWYyXHU4MjU1XHU4MjU2XHU4MjU3XHU4NTU2XHU4NTQ1XHU4NTZiXHU4NTRkXHU4NTUzXHU4NTYxXHU4NTU4XHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMjM0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzNF1bRV1dPTU5OTA0K0UsTFs1OTkwNCtFXT1CWzIzNF1bRV0pO2ZvcihCWzIzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU0MFx1ODU0Nlx1ODU2NFx1ODU0MVx1ODU2Mlx1ODU0NFx1ODU1MVx1ODU0N1x1ODU2M1x1ODUzZVx1ODU1Ylx1ODU3MVx1ODU0ZVx1ODU2ZVx1ODU3NVx1ODU1NVx1ODU2N1x1ODU2MFx1ODU4Y1x1ODU2Nlx1ODU1ZFx1ODU1NFx1ODU2NVx1ODU2Y1x1ODY2''@;'; put 'put ''M1x1ODY2NVx1ODY2NFx1ODc5Ylx1ODc4Zlx1ODc5N1x1ODc5M1x1ODc5Mlx1ODc4OFx1ODc4MVx1ODc5Nlx1ODc5OFx1ODc3OVx1ODc4N1x1ODdhM1x1ODc4NVx1ODc5MFx1ODc5MVx1ODc5ZFx1ODc4NFx1ODc5NFx1ODc5Y1x1ODc5YVx1ODc4OVx1ODkxZVx1ODkyNlx1ODkzMFx1ODkyZFx1''@;'; put 'put ''ODkyZVx1ODkyN1x1ODkzMVx1ODkyMlx1ODkyOVx1ODkyM1x1ODkyZlx1ODkyY1x1ODkxZlx1ODlmMVx1OGFlMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFlMlx1OGFmMlx1OGFmNFx1OGFmNVx1OGFkZFx1OGIxNFx1OGFlNFx1OGFkZlx1OGFmMFx1OGFjOFx1''@;'; put 'put ''OGFkZVx1OGFlMVx1OGFlOFx1OGFmZlx1OGFlZlx1OGFmYlx1OGM5MVx1OGM5Mlx1OGM5MFx1OGNmNVx1OGNlZVx1OGNmMVx1OGNmMFx1OGNmM1x1OGQ2Y1x1OGQ2ZVx1OGRhNVx1OGRhN1x1OGUzM1x1OGUzZVx1OGUzOFx1OGU0MFx1OGU0NVx1OGUzNlx1OGUzY1x1OGUzZFx1OGU0MVx1OGUz''@;'; put 'put ''MFx1OGUzZlx1OGViZFx1OGYzNlx1OGYyZVx1OGYzNVx1OGYzMlx1OGYzOVx1OGYzN1x1OGYzNFx1OTA3Nlx1OTA3OVx1OTA3Ylx1OTA4Nlx1OTBmYVx1OTEzM1x1OTEzNVx1OTEzNlx1OTE5M1x1OTE5MFx1OTE5MVx1OTE4ZFx1OTE4Zlx1OTMyN1x1OTMxZVx1OTMwOFx1OTMxZlx1OTMwNlx1''@;'; put 'put ''OTMwZlx1OTM3YVx1OTMzOFx1OTMzY1x1OTMxYlx1OTMyM1x1OTMxMlx1OTMwMVx1OTM0Nlx1OTMyZFx1OTMwZVx1OTMwZFx1OTJjYlx1OTMxZFx1OTJmYVx1OTMyNVx1OTMxM1x1OTJmOVx1OTJmN1x1OTMzNFx1OTMwMlx1OTMyNFx1OTJmZlx1OTMyOVx1OTMzOVx1OTMzNVx1OTMyYVx1OTMx''@;'; put 'put ''NFx1OTMwY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzVdW0VdXT02MDE2MCtFLExbNjAxNjArRV09QlsyMzVdW0VdKTtmb3IoQlsyMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMGJcdTkyZmVcdTkzMDlcdTkzMDBcdTkyZmJcdTkzMTZcdTk1YmNcdTk1Y2RcdTk1YmVcdTk1YjlcdTk1YmFcdTk1YjZcdTk1YmZcdTk1YjVcdTk1YmRcdTk2YTlcdTk2ZDRcdTk3MGJcdTk3MTJcdTk3MTBcdTk3OTlcdTk3OTdcdTk3''@;'; put 'put ''OTRcdTk3ZjBcdTk3ZjhcdTk4MzVcdTk4MmZcdTk4MzJcdTk5MjRcdTk5MWZcdTk5MjdcdTk5MjlcdTk5OWVcdTk5ZWVcdTk5ZWNcdTk5ZTVcdTk5ZTRcdTk5ZjBcdTk5ZTNcdTk5ZWFcdTk5ZTlcdTk5ZTdcdTlhYjlcdTlhYmZcdTlhYjRcdTlhYmJcdTlhZjZcdTlhZmFcdTlhZjlcdTlhZjdc''@;'; put 'put ''dTliMzNcdTliODBcdTliODVcdTliODdcdTliN2NcdTliN2VcdTliN2JcdTliODJcdTliOTNcdTliOTJcdTliOTBcdTliN2FcdTliOTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTliN2RcdTliODhcdTlkMjVcdTlkMTdcdTlkMjBcdTlkMWVcdTlkMTRcdTlkMjlc''@;'; put 'put ''dTlkMWRcdTlkMThcdTlkMjJcdTlkMTBcdTlkMTlcdTlkMWZcdTllODhcdTllODZcdTllODdcdTllYWVcdTllYWRcdTllZDVcdTllZDZcdTllZmFcdTlmMTJcdTlmM2RcdTUxMjZcdTUxMjVcdTUxMjJcdTUxMjRcdTUxMjBcdTUxMjlcdTUyZjRcdTU2OTNcdTU2OGNcdTU2OGRcdTU2ODZcdTU2''@;'; put 'put ''ODRcdTU2ODNcdTU2N2VcdTU2ODJcdTU2N2ZcdTU2ODFcdTU4ZDZcdTU4ZDRcdTU4Y2ZcdTU4ZDJcdTViMmRcdTViMjVcdTViMzJcdTViMjNcdTViMmNcdTViMjdcdTViMjZcdTViMmZcdTViMmVcdTViN2JcdTViZjFcdTViZjJcdTVkYjdcdTVlNmNcdTVlNmFcdTVmYmVcdTVmYmJcdTYxYzNc''@;'; put 'put ''dTYxYjVcdTYxYmNcdTYxZTdcdTYxZTBcdTYxZTVcdTYxZTRcdTYxZThcdTYxZGVcdTY0ZWZcdTY0ZTlcdTY0ZTNcdTY0ZWJcdTY0ZTRcdTY0ZThcdTY1ODFcdTY1ODBcdTY1YjZcdTY1ZGFcdTY2ZDJcdTZhOGRcdTZhOTZcdTZhODFcdTZhYTVcdTZhODlcdTZhOWZcdTZhOWJcdTZhYTFcdTZh''@;'; put 'put ''OWVcdTZhODdcdTZhOTNcdTZhOGVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM2XVtFXV09NjA0MTYrRSxMWzYwNDE2K0VdPUJbMjM2XVtFXSk7Zm9yKEJbMjM3XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTk1XHU2YTgzXHU2YWE4XHU2YWE0XHU2YTkxXHU2YTdmXHU2YWE2XHU2YTlhXHU2YTg1XHU2YThjXHU2YTkyXHU2YjViXHU2YmFkXHU2YzA5XHU2ZmNjXHU2ZmE5XHU2ZmY0XHU2ZmQ0XHU2ZmUzXHU2ZmRjXHU2''@;'; put 'put ''ZmVkXHU2ZmU3XHU2ZmU2XHU2ZmRlXHU2ZmYyXHU2ZmRkXHU2ZmUyXHU2ZmU4XHU3MWUxXHU3MWYxXHU3MWU4XHU3MWYyXHU3MWU0XHU3MWYwXHU3MWUyXHU3MzczXHU3MzZlXHU3MzZmXHU3NDk3XHU3NGIyXHU3NGFiXHU3NDkwXHU3NGFhXHU3NGFkXHU3NGIxXHU3NGE1XHU3NGFmXHU3NTEw''@;'; put 'put ''XHU3NTExXHU3NTEyXHU3NTBmXHU3NTg0XHU3NjQzXHU3NjQ4XHU3NjQ5XHU3NjQ3XHU3NmE0XHU3NmU5XHU3N2I1XHU3N2FiXHU3N2IyXHU3N2I3XHU3N2I2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2I0XHU3N2IxXHU3N2E4XHU3N2YwXHU3OGYzXHU3OGZk''@;'; put 'put ''XHU3OTAyXHU3OGZiXHU3OGZjXHU3OGYyXHU3OTA1XHU3OGY5XHU3OGZlXHU3OTA0XHU3OWFiXHU3OWE4XHU3YTVjXHU3YTViXHU3YTU2XHU3YTU4XHU3YTU0XHU3YTVhXHU3YWJlXHU3YWMwXHU3YWMxXHU3YzA1XHU3YzBmXHU3YmYyXHU3YzAwXHU3YmZmXHU3YmZiXHU3YzBlXHU3YmY0XHU3''@;'; put 'put ''YzBiXHU3YmYzXHU3YzAyXHU3YzA5XHU3YzAzXHU3YzAxXHU3YmY4XHU3YmZkXHU3YzA2XHU3YmYwXHU3YmYxXHU3YzEwXHU3YzBhXHU3Y2U4XHU3ZTJkXHU3ZTNjXHU3ZTQyXHU3ZTMzXHU5ODQ4XHU3ZTM4XHU3ZTJhXHU3ZTQ5XHU3ZTQwXHU3ZTQ3XHU3ZTI5XHU3ZTRjXHU3ZTMwXHU3ZTNi''@;'; put 'put ''XHU3ZTM2XHU3ZTQ0XHU3ZTNhXHU3ZjQ1XHU3ZjdmXHU3ZjdlXHU3ZjdkXHU3ZmY0XHU3ZmYyXHU4MDJjXHU4MWJiXHU4MWM0XHU4MWNjXHU4MWNhXHU4MWM1XHU4MWM3XHU4MWJjXHU4MWU5XHU4MjViXHU4MjVhXHU4MjVjXHU4NTgzXHU4NTgwXHU4NThmXHU4NWE3XHU4NTk1XHU4NWEwXHU4''@;'; put 'put ''NThiXHU4NWEzXHU4NTdiXHU4NWE0XHU4NTlhXHU4NTllXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzN11bRV1dPTYwNjcyK0UsTFs2MDY3MitFXT1CWzIzN11bRV0pO2ZvcihCWzIzOF09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU3N1x1ODU3Y1x1ODU4OVx1ODVhMVx1ODU3YVx1ODU3OFx1ODU1N1x1ODU4ZVx1ODU5Nlx1ODU4Nlx1ODU4ZFx1ODU5OVx1ODU5ZFx1ODU4MVx1ODVhMlx1ODU4Mlx1ODU4OFx1ODU4NVx1''@;'; put 'put ''ODU3OVx1ODU3Nlx1ODU5OFx1ODU5MFx1ODU5Zlx1ODY2OFx1ODdiZVx1ODdhYVx1ODdhZFx1ODdjNVx1ODdiMFx1ODdhY1x1ODdiOVx1ODdiNVx1ODdiY1x1ODdhZVx1ODdjOVx1ODdjM1x1ODdjMlx1ODdjY1x1ODdiN1x1ODdhZlx1ODdjNFx1ODdjYVx1ODdiNFx1ODdiNlx1ODdiZlx1ODdi''@;'; put 'put ''OFx1ODdiZFx1ODdkZVx1ODdiMlx1ODkzNVx1ODkzM1x1ODkzY1x1ODkzZVx1ODk0MVx1ODk1Mlx1ODkzN1x1ODk0Mlx1ODlhZFx1ODlhZlx1ODlhZVx1ODlmMlx1ODlmM1x1OGIxZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGIxOFx1OGIxNlx1OGIxMVx1OGIw''@;'; put 'put ''NVx1OGIwYlx1OGIyMlx1OGIwZlx1OGIxMlx1OGIxNVx1OGIwN1x1OGIwZFx1OGIwOFx1OGIwNlx1OGIxY1x1OGIxM1x1OGIxYVx1OGM0Zlx1OGM3MFx1OGM3Mlx1OGM3MVx1OGM2Zlx1OGM5NVx1OGM5NFx1OGNmOVx1OGQ2Zlx1OGU0ZVx1OGU0ZFx1OGU1M1x1OGU1MFx1OGU0Y1x1OGU0N1x1''@;'; put 'put ''OGY0M1x1OGY0MFx1OTA4NVx1OTA3ZVx1OTEzOFx1OTE5YVx1OTFhMlx1OTE5Ylx1OTE5OVx1OTE5Zlx1OTFhMVx1OTE5ZFx1OTFhMFx1OTNhMVx1OTM4M1x1OTNhZlx1OTM2NFx1OTM1Nlx1OTM0N1x1OTM3Y1x1OTM1OFx1OTM1Y1x1OTM3Nlx1OTM0OVx1OTM1MFx1OTM1MVx1OTM2MFx1OTM2''@;'; put 'put ''ZFx1OTM4Zlx1OTM0Y1x1OTM2YVx1OTM3OVx1OTM1N1x1OTM1NVx1OTM1Mlx1OTM0Zlx1OTM3MVx1OTM3N1x1OTM3Ylx1OTM2MVx1OTM1ZVx1OTM2M1x1OTM2N1x1OTM4MFx1OTM0ZVx1OTM1OVx1OTVjN1x1OTVjMFx1OTVjOVx1OTVjM1x1OTVjNVx1OTViN1x1OTZhZVx1OTZiMFx1OTZhY1x1''@;'; put 'put ''OTcyMFx1OTcxZlx1OTcxOFx1OTcxZFx1OTcxOVx1OTc5YVx1OTdhMVx1OTc5Y1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzhdW0VdXT02MDkyOCtFLExbNjA5MjgrRV09QlsyMzhdW0Vd''@;'; put 'put ''KTtmb3IoQlsyMzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3OWVcdTk3OWRcdTk3ZDVcdTk3ZDRcdTk3ZjFcdTk4NDFcdTk4NDRcdTk4NGFcdTk4NDlcdTk4NDVcdTk4NDNcdTk5MjVcdTk5MmJcdTk5MmNcdTk5MmFcdTk5MzNc''@;'; put 'put ''dTk5MzJcdTk5MmZcdTk5MmRcdTk5MzFcdTk5MzBcdTk5OThcdTk5YTNcdTk5YTFcdTlhMDJcdTk5ZmFcdTk5ZjRcdTk5ZjdcdTk5ZjlcdTk5ZjhcdTk5ZjZcdTk5ZmJcdTk5ZmRcdTk5ZmVcdTk5ZmNcdTlhMDNcdTlhYmVcdTlhZmVcdTlhZmRcdTliMDFcdTlhZmNcdTliNDhcdTliOWFcdTli''@;'; put 'put ''YThcdTliOWVcdTliOWJcdTliYTZcdTliYTFcdTliYTVcdTliYTRcdTliODZcdTliYTJcdTliYTBcdTliYWZcdTlkMzNcdTlkNDFcdTlkNjdcdTlkMzZcdTlkMmVcdTlkMmZcdTlkMzFcdTlkMzhcdTlkMzBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkNDVcdTlk''@;'; put 'put ''NDJcdTlkNDNcdTlkM2VcdTlkMzdcdTlkNDBcdTlkM2RcdTdmZjVcdTlkMmRcdTllOGFcdTllODlcdTllOGRcdTllYjBcdTllYzhcdTllZGFcdTllZmJcdTllZmZcdTlmMjRcdTlmMjNcdTlmMjJcdTlmNTRcdTlmYTBcdTUxMzFcdTUxMmRcdTUxMmVcdTU2OThcdTU2OWNcdTU2OTdcdTU2OWFc''@;'; put 'put ''dTU2OWRcdTU2OTlcdTU5NzBcdTViM2NcdTVjNjlcdTVjNmFcdTVkYzBcdTVlNmRcdTVlNmVcdTYxZDhcdTYxZGZcdTYxZWRcdTYxZWVcdTYxZjFcdTYxZWFcdTYxZjBcdTYxZWJcdTYxZDZcdTYxZTlcdTY0ZmZcdTY1MDRcdTY0ZmRcdTY0ZjhcdTY1MDFcdTY1MDNcdTY0ZmNcdTY1OTRcdTY1''@;'; put 'put ''ZGJcdTY2ZGFcdTY2ZGJcdTY2ZDhcdTZhYzVcdTZhYjlcdTZhYmRcdTZhZTFcdTZhYzZcdTZhYmFcdTZhYjZcdTZhYjdcdTZhYzdcdTZhYjRcdTZhYWRcdTZiNWVcdTZiYzlcdTZjMGJcdTcwMDdcdTcwMGNcdTcwMGRcdTcwMDFcdTcwMDVcdTcwMTRcdTcwMGVcdTZmZmZcdTcwMDBcdTZmZmJc''@;'; put 'put ''dTcwMjZcdTZmZmNcdTZmZjdcdTcwMGFcdTcyMDFcdTcxZmZcdTcxZjlcdTcyMDNcdTcxZmRcdTczNzZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM5XVtFXV09NjExODQrRSxMWzYxMTg0''@;'; put 'put ''K0VdPUJbMjM5XVtFXSk7Zm9yKEJbMjQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NGI4XHU3NGMwXHU3NGI1XHU3NGMxXHU3NGJlXHU3NGI2XHU3NGJiXHU3NGMyXHU3NTE0XHU3NTEzXHU3NjVjXHU3NjY0XHU3NjU5XHU3NjUw''@;'; put 'put ''XHU3NjUzXHU3NjU3XHU3NjVhXHU3NmE2XHU3NmJkXHU3NmVjXHU3N2MyXHU3N2JhXHU3OGZmXHU3OTBjXHU3OTEzXHU3OTE0XHU3OTA5XHU3OTEwXHU3OTEyXHU3OTExXHU3OWFkXHU3OWFjXHU3YTVmXHU3YzFjXHU3YzI5XHU3YzE5XHU3YzIwXHU3YzFmXHU3YzJkXHU3YzFkXHU3YzI2XHU3''@;'; put 'put ''YzI4XHU3YzIyXHU3YzI1XHU3YzMwXHU3ZTVjXHU3ZTUwXHU3ZTU2XHU3ZTYzXHU3ZTU4XHU3ZTYyXHU3ZTVmXHU3ZTUxXHU3ZTYwXHU3ZTU3XHU3ZTUzXHU3ZmI1XHU3ZmIzXHU3ZmY3XHU3ZmY4XHU4MDc1XHU4MWQxXHU4MWQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU4MWQwXHU4MjVmXHU4MjVlXHU4NWI0XHU4NWM2XHU4NWMwXHU4NWMzXHU4NWMyXHU4NWIzXHU4NWI1XHU4NWJkXHU4NWM3XHU4NWM0XHU4NWJmXHU4NWNiXHU4NWNlXHU4NWM4XHU4NWM1XHU4NWIxXHU4NWI2XHU4NWQyXHU4NjI0XHU4NWI4XHU4NWI3XHU4NWJlXHU4NjY5XHU4N2U3''@;'; put 'put ''XHU4N2U2XHU4N2UyXHU4N2RiXHU4N2ViXHU4N2VhXHU4N2U1XHU4N2RmXHU4N2YzXHU4N2U0XHU4N2Q0XHU4N2RjXHU4N2QzXHU4N2VkXHU4N2Q4XHU4N2UzXHU4N2E0XHU4N2Q3XHU4N2Q5XHU4ODAxXHU4N2Y0XHU4N2U4XHU4N2RkXHU4OTUzXHU4OTRiXHU4OTRmXHU4OTRjXHU4OTQ2XHU4''@;'; put 'put ''OTUwXHU4OTUxXHU4OTQ5XHU4YjJhXHU4YjI3XHU4YjIzXHU4YjMzXHU4YjMwXHU4YjM1XHU4YjQ3XHU4YjJmXHU4YjNjXHU4YjNlXHU4YjMxXHU4YjI1XHU4YjM3XHU4YjI2XHU4YjM2XHU4YjJlXHU4YjI0XHU4YjNiXHU4YjNkXHU4YjNhXHU4YzQyXHU4Yzc1XHU4Yzk5XHU4Yzk4XHU4Yzk3''@;'; put 'put ''XHU4Y2ZlXHU4ZDA0XHU4ZDAyXHU4ZDAwXHU4ZTVjXHU4ZTYyXHU4ZTYwXHU4ZTU3XHU4ZTU2XHU4ZTVlXHU4ZTY1XHU4ZTY3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0MF1bRV1dPTYx''@;'; put 'put ''NDQwK0UsTFs2MTQ0MCtFXT1CWzI0MF1bRV0pO2ZvcihCWzI0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGU1Ylx1OGU1YVx1OGU2MVx1OGU1ZFx1OGU2OVx1OGU1NFx1OGY0Nlx1OGY0N1x1OGY0OFx1OGY0Ylx1OTEyOFx1OTEz''@;'; put 'put ''YVx1OTEzYlx1OTEzZVx1OTFhOFx1OTFhNVx1OTFhN1x1OTFhZlx1OTFhYVx1OTNiNVx1OTM4Y1x1OTM5Mlx1OTNiN1x1OTM5Ylx1OTM5ZFx1OTM4OVx1OTNhN1x1OTM4ZVx1OTNhYVx1OTM5ZVx1OTNhNlx1OTM5NVx1OTM4OFx1OTM5OVx1OTM5Zlx1OTM4ZFx1OTNiMVx1OTM5MVx1OTNiMlx1''@;'; put 'put ''OTNhNFx1OTNhOFx1OTNiNFx1OTNhM1x1OTNhNVx1OTVkMlx1OTVkM1x1OTVkMVx1OTZiM1x1OTZkN1x1OTZkYVx1NWRjMlx1OTZkZlx1OTZkOFx1OTZkZFx1OTcyM1x1OTcyMlx1OTcyNVx1OTdhY1x1OTdhZVx1OTdhOFx1OTdhYlx1OTdhNFx1OTdhYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1OTdhMlx1OTdhNVx1OTdkN1x1OTdkOVx1OTdkNlx1OTdkOFx1OTdmYVx1OTg1MFx1OTg1MVx1OTg1Mlx1OThiOFx1OTk0MVx1OTkzY1x1OTkzYVx1OWEwZlx1OWEwYlx1OWEwOVx1OWEwZFx1OWEwNFx1OWExMVx1OWEwYVx1OWEwNVx1OWEwN1x1OWEwNlx1OWFj''@;'; put 'put ''MFx1OWFkY1x1OWIwOFx1OWIwNFx1OWIwNVx1OWIyOVx1OWIzNVx1OWI0YVx1OWI0Y1x1OWI0Ylx1OWJjN1x1OWJjNlx1OWJjM1x1OWJiZlx1OWJjMVx1OWJiNVx1OWJiOFx1OWJkM1x1OWJiNlx1OWJjNFx1OWJiOVx1OWJiZFx1OWQ1Y1x1OWQ1M1x1OWQ0Zlx1OWQ0YVx1OWQ1Ylx1OWQ0Ylx1''@;'; put 'put ''OWQ1OVx1OWQ1Nlx1OWQ0Y1x1OWQ1N1x1OWQ1Mlx1OWQ1NFx1OWQ1Zlx1OWQ1OFx1OWQ1YVx1OWU4ZVx1OWU4Y1x1OWVkZlx1OWYwMVx1OWYwMFx1OWYxNlx1OWYyNVx1OWYyYlx1OWYyYVx1OWYyOVx1OWYyOFx1OWY0Y1x1OWY1NVx1NTEzNFx1NTEzNVx1NTI5Nlx1NTJmN1x1NTNiNFx1NTZh''@;'; put 'put ''Ylx1NTZhZFx1NTZhNlx1NTZhN1x1NTZhYVx1NTZhY1x1NThkYVx1NThkZFx1NThkYlx1NTkxMlx1NWIzZFx1NWIzZVx1NWIzZlx1NWRjM1x1NWU3MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2Vb''@;'; put 'put ''QlsyNDFdW0VdXT02MTY5NitFLExbNjE2OTYrRV09QlsyNDFdW0VdKTtmb3IoQlsyNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmYmZcdTYxZmJcdTY1MDdcdTY1MTBcdTY1MGRcdTY1MDlcdTY1MGNcdTY1MGVcdTY1ODRcdTY1''@;'; put 'put ''ZGVcdTY1ZGRcdTY2ZGVcdTZhZTdcdTZhZTBcdTZhY2NcdTZhZDFcdTZhZDlcdTZhY2JcdTZhZGZcdTZhZGNcdTZhZDBcdTZhZWJcdTZhY2ZcdTZhY2RcdTZhZGVcdTZiNjBcdTZiYjBcdTZjMGNcdTcwMTlcdTcwMjdcdTcwMjBcdTcwMTZcdTcwMmJcdTcwMjFcdTcwMjJcdTcwMjNcdTcwMjlc''@;'; put 'put ''dTcwMTdcdTcwMjRcdTcwMWNcdTcwMmFcdTcyMGNcdTcyMGFcdTcyMDdcdTcyMDJcdTcyMDVcdTcyYTVcdTcyYTZcdTcyYTRcdTcyYTNcdTcyYTFcdTc0Y2JcdTc0YzVcdTc0YjdcdTc0YzNcdTc1MTZcdTc2NjBcdTc3YzlcdTc3Y2FcdTc3YzRcdTc3ZjFcdTc5MWRcdTc5MWJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5MjFcdTc5MWNcdTc5MTdcdTc5MWVcdTc5YjBcdTdhNjdcdTdhNjhcdTdjMzNcdTdjM2NcdTdjMzlcdTdjMmNcdTdjM2JcdTdjZWNcdTdjZWFcdTdlNzZcdTdlNzVcdTdlNzhcdTdlNzBcdTdlNzdcdTdlNmZcdTdlN2FcdTdlNzJcdTdl''@;'; put 'put ''NzRcdTdlNjhcdTdmNGJcdTdmNGFcdTdmODNcdTdmODZcdTdmYjdcdTdmZmRcdTdmZmVcdTgwNzhcdTgxZDdcdTgxZDVcdTgyNjRcdTgyNjFcdTgyNjNcdTg1ZWJcdTg1ZjFcdTg1ZWRcdTg1ZDlcdTg1ZTFcdTg1ZThcdTg1ZGFcdTg1ZDdcdTg1ZWNcdTg1ZjJcdTg1ZjhcdTg1ZDhcdTg1ZGZc''@;'; put 'put ''dTg1ZTNcdTg1ZGNcdTg1ZDFcdTg1ZjBcdTg1ZTZcdTg1ZWZcdTg1ZGVcdTg1ZTJcdTg4MDBcdTg3ZmFcdTg4MDNcdTg3ZjZcdTg3ZjdcdTg4MDlcdTg4MGNcdTg4MGJcdTg4MDZcdTg3ZmNcdTg4MDhcdTg3ZmZcdTg4MGFcdTg4MDJcdTg5NjJcdTg5NWFcdTg5NWJcdTg5NTdcdTg5NjFcdTg5''@;'; put 'put ''NWNcdTg5NThcdTg5NWRcdTg5NTlcdTg5ODhcdTg5YjdcdTg5YjZcdTg5ZjZcdThiNTBcdThiNDhcdThiNGFcdThiNDBcdThiNTNcdThiNTZcdThiNTRcdThiNGJcdThiNTVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0Ml1bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKGdlW0JbMjQyXVtFXV09NjE5NTIrRSxMWzYxOTUyK0VdPUJbMjQyXVtFXSk7Zm9yKEJbMjQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjUxXHU4YjQyXHU4YjUyXHU4YjU3XHU4YzQzXHU4Yzc3XHU4Yzc2XHU4''@;'; put 'put ''YzlhXHU4ZDA2XHU4ZDA3XHU4ZDA5XHU4ZGFjXHU4ZGFhXHU4ZGFkXHU4ZGFiXHU4ZTZkXHU4ZTc4XHU4ZTczXHU4ZTZhXHU4ZTZmXHU4ZTdiXHU4ZWMyXHU4ZjUyXHU4ZjUxXHU4ZjRmXHU4ZjUwXHU4ZjUzXHU4ZmI0XHU5MTQwXHU5MTNmXHU5MWIwXHU5MWFkXHU5M2RlXHU5M2M3XHU5M2Nm''@;'; put 'put ''XHU5M2MyXHU5M2RhXHU5M2QwXHU5M2Y5XHU5M2VjXHU5M2NjXHU5M2Q5XHU5M2E5XHU5M2U2XHU5M2NhXHU5M2Q0XHU5M2VlXHU5M2UzXHU5M2Q1XHU5M2M0XHU5M2NlXHU5M2MwXHU5M2QyXHU5M2U3XHU5NTdkXHU5NWRhXHU5NWRiXHU5NmUxXHU5NzI5XHU5NzJiXHU5NzJjXHU5NzI4XHU5''@;'; put 'put ''NzI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2IzXHU5N2I3XHU5N2I2XHU5N2RkXHU5N2RlXHU5N2RmXHU5ODVjXHU5ODU5XHU5ODVkXHU5ODU3XHU5OGJmXHU5OGJkXHU5OGJiXHU5OGJlXHU5OTQ4XHU5OTQ3XHU5OTQzXHU5OWE2XHU5OWE3XHU5YTFhXHU5''@;'; put 'put ''YTE1XHU5YTI1XHU5YTFkXHU5YTI0XHU5YTFiXHU5YTIyXHU5YTIwXHU5YTI3XHU5YTIzXHU5YTFlXHU5YTFjXHU5YTE0XHU5YWMyXHU5YjBiXHU5YjBhXHU5YjBlXHU5YjBjXHU5YjM3XHU5YmVhXHU5YmViXHU5YmUwXHU5YmRlXHU5YmU0XHU5YmU2XHU5YmUyXHU5YmYwXHU5YmQ0XHU5YmQ3''@;'; put 'put ''XHU5YmVjXHU5YmRjXHU5YmQ5XHU5YmU1XHU5YmQ1XHU5YmUxXHU5YmRhXHU5ZDc3XHU5ZDgxXHU5ZDhhXHU5ZDg0XHU5ZDg4XHU5ZDcxXHU5ZDgwXHU5ZDc4XHU5ZDg2XHU5ZDhiXHU5ZDhjXHU5ZDdkXHU5ZDZiXHU5ZDc0XHU5ZDc1XHU5ZDcwXHU5ZDY5XHU5ZDg1XHU5ZDczXHU5ZDdiXHU5''@;'; put 'put ''ZDgyXHU5ZDZmXHU5ZDc5XHU5ZDdmXHU5ZDg3XHU5ZDY4XHU5ZTk0XHU5ZTkxXHU5ZWMwXHU5ZWZjXHU5ZjJkXHU5ZjQwXHU5ZjQxXHU5ZjRkXHU5ZjU2XHU5ZjU3XHU5ZjU4XHU1MzM3XHU1NmIyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQzXS5sZW5ndGg7KytFKTY1NTMzIT09Qlsy''@;'; put 'put ''NDNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0M11bRV1dPTYyMjA4K0UsTFs2MjIwOCtFXT1CWzI0M11bRV0pO2ZvcihCWzI0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTZiNVx1NTZiM1x1NThlM1x1NWI0NVx1NWRjNlx1''@;'; put 'put ''NWRjN1x1NWVlZVx1NWVlZlx1NWZjMFx1NWZjMVx1NjFmOVx1NjUxN1x1NjUxNlx1NjUxNVx1NjUxM1x1NjVkZlx1NjZlOFx1NjZlM1x1NjZlNFx1NmFmM1x1NmFmMFx1NmFlYVx1NmFlOFx1NmFmOVx1NmFmMVx1NmFlZVx1NmFlZlx1NzAzY1x1NzAzNVx1NzAyZlx1NzAzN1x1NzAzNFx1NzAz''@;'; put 'put ''MVx1NzA0Mlx1NzAzOFx1NzAzZlx1NzAzYVx1NzAzOVx1NzA0MFx1NzAzYlx1NzAzM1x1NzA0MVx1NzIxM1x1NzIxNFx1NzJhOFx1NzM3ZFx1NzM3Y1x1NzRiYVx1NzZhYlx1NzZhYVx1NzZiZVx1NzZlZFx1NzdjY1x1NzdjZVx1NzdjZlx1NzdjZFx1NzdmMlx1NzkyNVx1NzkyM1x1NzkyN1x1''@;'; put 'put ''NzkyOFx1NzkyNFx1NzkyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzliMlx1N2E2ZVx1N2E2Y1x1N2E2ZFx1N2FmN1x1N2M0OVx1N2M0OFx1N2M0YVx1N2M0N1x1N2M0NVx1N2NlZVx1N2U3Ylx1N2U3ZVx1N2U4MVx1N2U4MFx1N2ZiYVx1N2ZmZlx1ODA3OVx1''@;'; put 'put ''ODFkYlx1ODFkOVx1ODIwYlx1ODI2OFx1ODI2OVx1ODYyMlx1ODVmZlx1ODYwMVx1ODVmZVx1ODYxYlx1ODYwMFx1ODVmNlx1ODYwNFx1ODYwOVx1ODYwNVx1ODYwY1x1ODVmZFx1ODgxOVx1ODgxMFx1ODgxMVx1ODgxN1x1ODgxM1x1ODgxNlx1ODk2M1x1ODk2Nlx1ODliOVx1ODlmN1x1OGI2''@;'; put 'put ''MFx1OGI2YVx1OGI1ZFx1OGI2OFx1OGI2M1x1OGI2NVx1OGI2N1x1OGI2ZFx1OGRhZVx1OGU4Nlx1OGU4OFx1OGU4NFx1OGY1OVx1OGY1Nlx1OGY1N1x1OGY1NVx1OGY1OFx1OGY1YVx1OTA4ZFx1OTE0M1x1OTE0MVx1OTFiN1x1OTFiNVx1OTFiMlx1OTFiM1x1OTQwYlx1OTQxM1x1OTNmYlx1''@;'; put 'put ''OTQyMFx1OTQwZlx1OTQxNFx1OTNmZVx1OTQxNVx1OTQxMFx1OTQyOFx1OTQxOVx1OTQwZFx1OTNmNVx1OTQwMFx1OTNmN1x1OTQwN1x1OTQwZVx1OTQxNlx1OTQxMlx1OTNmYVx1OTQwOVx1OTNmOFx1OTQwYVx1OTNmZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0NF0ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMjQ0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDRdW0VdXT02MjQ2NCtFLExbNjI0NjQrRV09QlsyNDRdW0VdKTtmb3IoQlsyNDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzZmNcdTk0MGNcdTkzZjZc''@;'; put 'put ''dTk0MTFcdTk0MDZcdTk1ZGVcdTk1ZTBcdTk1ZGZcdTk3MmVcdTk3MmZcdTk3YjlcdTk3YmJcdTk3ZmRcdTk3ZmVcdTk4NjBcdTk4NjJcdTk4NjNcdTk4NWZcdTk4YzFcdTk4YzJcdTk5NTBcdTk5NGVcdTk5NTlcdTk5NGNcdTk5NGJcdTk5NTNcdTlhMzJcdTlhMzRcdTlhMzFcdTlhMmNcdTlh''@;'; put 'put ''MmFcdTlhMzZcdTlhMjlcdTlhMmVcdTlhMzhcdTlhMmRcdTlhYzdcdTlhY2FcdTlhYzZcdTliMTBcdTliMTJcdTliMTFcdTljMGJcdTljMDhcdTliZjdcdTljMDVcdTljMTJcdTliZjhcdTljNDBcdTljMDdcdTljMGVcdTljMDZcdTljMTdcdTljMTRcdTljMDlcdTlkOWZcdTlkOTlcdTlkYTRc''@;'; put 'put ''dTlkOWRcdTlkOTJcdTlkOThcdTlkOTBcdTlkOWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkYTBcdTlkOTRcdTlkOWNcdTlkYWFcdTlkOTdcdTlkYTFcdTlkOWFcdTlkYTJcdTlkYThcdTlkOWVcdTlkYTNcdTlkYmZcdTlkYTlcdTlkOTZcdTlkYTZcdTlkYTdc''@;'; put 'put ''dTllOTlcdTllOWJcdTllOWFcdTllZTVcdTllZTRcdTllZTdcdTllZTZcdTlmMzBcdTlmMmVcdTlmNWJcdTlmNjBcdTlmNWVcdTlmNWRcdTlmNTlcdTlmOTFcdTUxM2FcdTUxMzlcdTUyOThcdTUyOTdcdTU2YzNcdTU2YmRcdTU2YmVcdTViNDhcdTViNDdcdTVkY2JcdTVkY2ZcdTVlZjFcdTYx''@;'; put 'put ''ZmRcdTY1MWJcdTZiMDJcdTZhZmNcdTZiMDNcdTZhZjhcdTZiMDBcdTcwNDNcdTcwNDRcdTcwNGFcdTcwNDhcdTcwNDlcdTcwNDVcdTcwNDZcdTcyMWRcdTcyMWFcdTcyMTlcdTczN2VcdTc1MTdcdTc2NmFcdTc3ZDBcdTc5MmRcdTc5MzFcdTc5MmZcdTdjNTRcdTdjNTNcdTdjZjJcdTdlOGFc''@;'; put 'put ''dTdlODdcdTdlODhcdTdlOGJcdTdlODZcdTdlOGRcdTdmNGRcdTdmYmJcdTgwMzBcdTgxZGRcdTg2MThcdTg2MmFcdTg2MjZcdTg2MWZcdTg2MjNcdTg2MWNcdTg2MTlcdTg2MjdcdTg2MmVcdTg2MjFcdTg2MjBcdTg2MjlcdTg2MWVcdTg2MjVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsy''@;'; put 'put ''NDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0NV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ1XVtFXV09NjI3MjArRSxMWzYyNzIwK0VdPUJbMjQ1XVtFXSk7Zm9yKEJbMjQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ODI5''@;'; put 'put ''XHU4ODFkXHU4ODFiXHU4ODIwXHU4ODI0XHU4ODFjXHU4ODJiXHU4ODRhXHU4OTZkXHU4OTY5XHU4OTZlXHU4OTZiXHU4OWZhXHU4Yjc5XHU4Yjc4XHU4YjQ1XHU4YjdhXHU4YjdiXHU4ZDEwXHU4ZDE0XHU4ZGFmXHU4ZThlXHU4ZThjXHU4ZjVlXHU4ZjViXHU4ZjVkXHU5MTQ2XHU5MTQ0XHU5''@;'; put 'put ''MTQ1XHU5MWI5XHU5NDNmXHU5NDNiXHU5NDM2XHU5NDI5XHU5NDNkXHU5NDNjXHU5NDMwXHU5NDM5XHU5NDJhXHU5NDM3XHU5NDJjXHU5NDQwXHU5NDMxXHU5NWU1XHU5NWU0XHU5NWUzXHU5NzM1XHU5NzNhXHU5N2JmXHU5N2UxXHU5ODY0XHU5OGM5XHU5OGM2XHU5OGMwXHU5OTU4XHU5OTU2''@;'; put 'put ''XHU5YTM5XHU5YTNkXHU5YTQ2XHU5YTQ0XHU5YTQyXHU5YTQxXHU5YTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YTNmXHU5YWNkXHU5YjE1XHU5YjE3XHU5YjE4XHU5YjE2XHU5YjNhXHU5YjUyXHU5YzJiXHU5YzFkXHU5YzFjXHU5YzJjXHU5YzIzXHU5YzI4''@;'; put 'put ''XHU5YzI5XHU5YzI0XHU5YzIxXHU5ZGI3XHU5ZGI2XHU5ZGJjXHU5ZGMxXHU5ZGM3XHU5ZGNhXHU5ZGNmXHU5ZGJlXHU5ZGM1XHU5ZGMzXHU5ZGJiXHU5ZGI1XHU5ZGNlXHU5ZGI5XHU5ZGJhXHU5ZGFjXHU5ZGM4XHU5ZGIxXHU5ZGFkXHU5ZGNjXHU5ZGIzXHU5ZGNkXHU5ZGIyXHU5ZTdhXHU5''@;'; put 'put ''ZTljXHU5ZWViXHU5ZWVlXHU5ZWVkXHU5ZjFiXHU5ZjE4XHU5ZjFhXHU5ZjMxXHU5ZjRlXHU5ZjY1XHU5ZjY0XHU5ZjkyXHU0ZWI5XHU1NmM2XHU1NmM1XHU1NmNiXHU1OTcxXHU1YjRiXHU1YjRjXHU1ZGQ1XHU1ZGQxXHU1ZWYyXHU2NTIxXHU2NTIwXHU2NTI2XHU2NTIyXHU2YjBiXHU2YjA4''@;'; put 'put ''XHU2YjA5XHU2YzBkXHU3MDU1XHU3MDU2XHU3MDU3XHU3MDUyXHU3MjFlXHU3MjFmXHU3MmE5XHU3MzdmXHU3NGQ4XHU3NGQ1XHU3NGQ5XHU3NGQ3XHU3NjZkXHU3NmFkXHU3OTM1XHU3OWI0XHU3YTcwXHU3YTcxXHU3YzU3XHU3YzVjXHU3YzU5XHU3YzViXHU3YzVhXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMjQ2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0Nl1bRV1dPTYyOTc2K0UsTFs2Mjk3NitFXT1CWzI0Nl1bRV0pO2ZvcihCWzI0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1N2NmNFx1N2NmMVx1N2U5MVx1N2Y0Zlx1N2Y4N1x1ODFkZVx1ODI2Ylx1ODYzNFx1ODYzNVx1ODYzM1x1ODYyY1x1ODYzMlx1ODYzNlx1ODgyY1x1ODgyOFx1ODgyNlx1ODgyYVx1ODgyNVx1ODk3MVx1ODliZlx1ODliZVx1ODlmYlx1OGI3ZVx1OGI4NFx1OGI4Mlx1OGI4Nlx1''@;'; put 'put ''OGI4NVx1OGI3Zlx1OGQxNVx1OGU5NVx1OGU5NFx1OGU5YVx1OGU5Mlx1OGU5MFx1OGU5Nlx1OGU5N1x1OGY2MFx1OGY2Mlx1OTE0N1x1OTQ0Y1x1OTQ1MFx1OTQ0YVx1OTQ0Ylx1OTQ0Zlx1OTQ0N1x1OTQ0NVx1OTQ0OFx1OTQ0OVx1OTQ0Nlx1OTczZlx1OTdlM1x1OTg2YVx1OTg2OVx1OThj''@;'; put 'put ''Ylx1OTk1NFx1OTk1Ylx1OWE0ZVx1OWE1M1x1OWE1NFx1OWE0Y1x1OWE0Zlx1OWE0OFx1OWE0YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWE0OVx1OWE1Mlx1OWE1MFx1OWFkMFx1OWIxOVx1OWIyYlx1OWIzYlx1OWI1Nlx1OWI1NVx1OWM0Nlx1OWM0OFx1OWMz''@;'; put 'put ''Zlx1OWM0NFx1OWMzOVx1OWMzM1x1OWM0MVx1OWMzY1x1OWMzN1x1OWMzNFx1OWMzMlx1OWMzZFx1OWMzNlx1OWRkYlx1OWRkMlx1OWRkZVx1OWRkYVx1OWRjYlx1OWRkMFx1OWRkY1x1OWRkMVx1OWRkZlx1OWRlOVx1OWRkOVx1OWRkOFx1OWRkNlx1OWRmNVx1OWRkNVx1OWRkZFx1OWViNlx1''@;'; put 'put ''OWVmMFx1OWYzNVx1OWYzM1x1OWYzMlx1OWY0Mlx1OWY2Ylx1OWY5NVx1OWZhMlx1NTEzZFx1NTI5OVx1NThlOFx1NThlN1x1NTk3Mlx1NWI0ZFx1NWRkOFx1ODgyZlx1NWY0Zlx1NjIwMVx1NjIwM1x1NjIwNFx1NjUyOVx1NjUyNVx1NjU5Nlx1NjZlYlx1NmIxMVx1NmIxMlx1NmIwZlx1NmJj''@;'; put 'put ''YVx1NzA1Ylx1NzA1YVx1NzIyMlx1NzM4Mlx1NzM4MVx1NzM4M1x1NzY3MFx1NzdkNFx1N2M2N1x1N2M2Nlx1N2U5NVx1ODI2Y1x1ODYzYVx1ODY0MFx1ODYzOVx1ODYzY1x1ODYzMVx1ODYzYlx1ODYzZVx1ODgzMFx1ODgzMlx1ODgyZVx1ODgzM1x1ODk3Nlx1ODk3NFx1ODk3M1x1ODlmZVx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDddW0VdXT02MzIzMitFLExbNjMyMzIrRV09QlsyNDddW0VdKTtmb3IoQlsyNDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiOGNcdThiOGVcdThiOGJcdThiODhcdThjNDVcdThkMTlcdThlOThcdThmNjRcdThmNjNcdTkxYmNcdTk0NjJcdTk0NTVcdTk0NWRcdTk0NTdcdTk0NWVcdTk3YzRcdTk3YzVcdTk4MDBcdTlhNTZcdTlhNTlcdTliMWVcdTliMWZcdTliMjBcdTljNTJc''@;'; put 'put ''dTljNThcdTljNTBcdTljNGFcdTljNGRcdTljNGJcdTljNTVcdTljNTlcdTljNGNcdTljNGVcdTlkZmJcdTlkZjdcdTlkZWZcdTlkZTNcdTlkZWJcdTlkZjhcdTlkZTRcdTlkZjZcdTlkZTFcdTlkZWVcdTlkZTZcdTlkZjJcdTlkZjBcdTlkZTJcdTlkZWNcdTlkZjRcdTlkZjNcdTlkZThcdTlk''@;'; put 'put ''ZWRcdTllYzJcdTllZDBcdTllZjJcdTllZjNcdTlmMDZcdTlmMWNcdTlmMzhcdTlmMzdcdTlmMzZcdTlmNDNcdTlmNGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlmNzFcdTlmNzBcdTlmNmVcdTlmNmZcdTU2ZDNcdTU2Y2RcdTViNGVcdTVjNmRcdTY1MmRcdTY2''@;'; put 'put ''ZWRcdTY2ZWVcdTZiMTNcdTcwNWZcdTcwNjFcdTcwNWRcdTcwNjBcdTcyMjNcdTc0ZGJcdTc0ZTVcdTc3ZDVcdTc5MzhcdTc5YjdcdTc5YjZcdTdjNmFcdTdlOTdcdTdmODlcdTgyNmRcdTg2NDNcdTg4MzhcdTg4MzdcdTg4MzVcdTg4NGJcdThiOTRcdThiOTVcdThlOWVcdThlOWZcdThlYTBc''@;'; put 'put ''dThlOWRcdTkxYmVcdTkxYmRcdTkxYzJcdTk0NmJcdTk0NjhcdTk0NjlcdTk2ZTVcdTk3NDZcdTk3NDNcdTk3NDdcdTk3YzdcdTk3ZTVcdTlhNWVcdTlhZDVcdTliNTlcdTljNjNcdTljNjdcdTljNjZcdTljNjJcdTljNWVcdTljNjBcdTllMDJcdTlkZmVcdTllMDdcdTllMDNcdTllMDZcdTll''@;'; put 'put ''MDVcdTllMDBcdTllMDFcdTllMDlcdTlkZmZcdTlkZmRcdTllMDRcdTllYTBcdTlmMWVcdTlmNDZcdTlmNzRcdTlmNzVcdTlmNzZcdTU2ZDRcdTY1MmVcdTY1YjhcdTZiMThcdTZiMTlcdTZiMTdcdTZiMWFcdTcwNjJcdTcyMjZcdTcyYWFcdTc3ZDhcdTc3ZDlcdTc5MzlcdTdjNjlcdTdjNmJc''@;'; put 'put ''dTdjZjZcdTdlOWFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ4XVtFXV09NjM0ODgrRSxMWzYzNDg4K0VdPUJbMjQ4XVtFXSk7Zm9yKEJbMjQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZTk4XHU3ZTliXHU3ZTk5XHU4MWUwXHU4MWUxXHU4NjQ2XHU4NjQ3XHU4NjQ4XHU4OTc5XHU4OTdhXHU4OTdjXHU4OTdiXHU4OWZmXHU4Yjk4XHU4Yjk5XHU4ZWE1XHU4ZWE0XHU4ZWEzXHU5NDZlXHU5NDZkXHU5NDZmXHU5NDcx''@;'; put 'put ''XHU5NDczXHU5NzQ5XHU5ODcyXHU5OTVmXHU5YzY4XHU5YzZlXHU5YzZkXHU5ZTBiXHU5ZTBkXHU5ZTEwXHU5ZTBmXHU5ZTEyXHU5ZTExXHU5ZWExXHU5ZWY1XHU5ZjA5XHU5ZjQ3XHU5Zjc4XHU5ZjdiXHU5ZjdhXHU5Zjc5XHU1NzFlXHU3MDY2XHU3YzZmXHU4ODNjXHU4ZGIyXHU4ZWE2XHU5''@;'; put 'put ''MWMzXHU5NDc0XHU5NDc4XHU5NDc2XHU5NDc1XHU5YTYwXHU5Yzc0XHU5YzczXHU5YzcxXHU5Yzc1XHU5ZTE0XHU5ZTEzXHU5ZWY2XHU5ZjBhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZmE0XHU3MDY4XHU3MDY1XHU3Y2Y3XHU4NjZhXHU4ODNlXHU4ODNkXHU4''@;'; put 'put ''ODNmXHU4YjllXHU4YzljXHU4ZWE5XHU4ZWM5XHU5NzRiXHU5ODczXHU5ODc0XHU5OGNjXHU5OTYxXHU5OWFiXHU5YTY0XHU5YTY2XHU5YTY3XHU5YjI0XHU5ZTE1XHU5ZTE3XHU5ZjQ4XHU2MjA3XHU2YjFlXHU3MjI3XHU4NjRjXHU4ZWE4XHU5NDgyXHU5NDgwXHU5NDgxXHU5YTY5XHU5YTY4''@;'; put 'put ''XHU5YjJlXHU5ZTE5XHU3MjI5XHU4NjRiXHU4YjlmXHU5NDgzXHU5Yzc5XHU5ZWI3XHU3Njc1XHU5YTZiXHU5YzdhXHU5ZTFkXHU3MDY5XHU3MDZhXHU5ZWE0XHU5ZjdlXHU5ZjQ5XHU5Zjk4XHU3ODgxXHU5MmI5XHU4OGNmXHU1OGJiXHU2MDUyXHU3Y2E3XHU1YWZhXHUyNTU0XHUyNTY2XHUy''@;'; put 'put ''NTU3XHUyNTYwXHUyNTZjXHUyNTYzXHUyNTVhXHUyNTY5XHUyNTVkXHUyNTUyXHUyNTY0XHUyNTU1XHUyNTVlXHUyNTZhXHUyNTYxXHUyNTU4XHUyNTY3XHUyNTViXHUyNTUzXHUyNTY1XHUyNTU2XHUyNTVmXHUyNTZiXHUyNTYyXHUyNTU5XHUyNTY4XHUyNTVjXHUyNTUxXHUyNTUwXHUyNTZk''@;'; put 'put ''XHUyNTZlXHUyNTcwXHUyNTZmXHUyNTkzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0OV1bRV1dPTYzNzQ0K0UsTFs2Mzc0NCtFXT1CWzI0OV1bRV0pO3JldHVybntlbmM6Z2UsZGVjOkx9''@;'; put 'put ''fSgpLEplWzEyNTBdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0u''@;'; put 'put ''LzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1MjAxYVx1ZmZmZFx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1YVx1''@;'; put 'put ''MDE2NFx1MDE3ZFx1MDE3OVx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDE2MVx1MjAzYVx1MDE1Ylx1MDE2NVx1MDE3ZVx1MDE3YVx4YTBcdTAyYzdcdTAyZDhcdTAxNDFceGE0XHUwMTA0XHhhNlx4YTdceGE4XHhhOVx1MDE1''@;'; put 'put ''ZVx4YWJceGFjXHhhZFx4YWVcdTAxN2JceGIwXHhiMVx1MDJkYlx1MDE0Mlx4YjRceGI1XHhiNlx4YjdceGI4XHUwMTA1XHUwMTVmXHhiYlx1MDEzZFx1MDJkZFx1MDEzZVx1MDE3Y1x1MDE1NFx4YzFceGMyXHUwMTAyXHhjNFx1MDEzOVx1MDEwNlx4YzdcdTAxMGNceGM5XHUwMTE4XHhjYlx1''@;'; put 'put ''MDExYVx4Y2RceGNlXHUwMTBlXHUwMTEwXHUwMTQzXHUwMTQ3XHhkM1x4ZDRcdTAxNTBceGQ2XHhkN1x1MDE1OFx1MDE2ZVx4ZGFcdTAxNzBceGRjXHhkZFx1MDE2Mlx4ZGZcdTAxNTVceGUxXHhlMlx1MDEwM1x4ZTRcdTAxM2FcdTAxMDdceGU3XHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMWJc''@;'; put 'put ''eGVkXHhlZVx1MDEwZlx1MDExMVx1MDE0NFx1MDE0OFx4ZjNceGY0XHUwMTUxXHhmNlx4ZjdcdTAxNTlcdTAxNmZceGZhXHUwMTcxXHhmY1x4ZmRcdTAxNjNcdTAyZDkiLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQo''@;'; put 'put ''RSldPUUpLGdlW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzEyNTFdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgx''@;'; put 'put ''OFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDQwMlx1MDQwM1x1MjAxYVx1MDQ1M1x1MjAxZVx1MjAy''@;'; put 'put ''Nlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQwOVx1MjAzOVx1MDQwYVx1MDQwY1x1MDQwYlx1MDQwZlx1MDQ1Mlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDQ1OVx1MjAzYVx1MDQ1YVx1MDQ1Y1x1MDQ1Ylx1MDQ1Zlx4YTBcdTA0''@;'; put 'put ''MGVcdTA0NWVcdTA0MDhceGE0XHUwNDkwXHhhNlx4YTdcdTA0MDFceGE5XHUwNDA0XHhhYlx4YWNceGFkXHhhZVx1MDQwN1x4YjBceGIxXHUwNDA2XHUwNDU2XHUwNDkxXHhiNVx4YjZceGI3XHUwNDUxXHUyMTE2XHUwNDU0XHhiYlx1MDQ1OFx1MDQwNVx1MDQ1NVx1MDQ1N1x1MDQxMFx1MDQx''@;'; put 'put ''MVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1''@;'; put 'put ''MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0''@;'; put 'put ''OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0ZiIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVb''@;'; put 'put ''MTI1Ml09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1''@;'; put 'put ''Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHUw''@;'; put 'put ''MTdkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHUwMTdlXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFl''@;'; put 'put ''XHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdc''@;'; put 'put ''eGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIixnZT1b''@;'; put 'put ''XSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVsxMjUzXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgw''@;'; put 'put ''NVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2Rl''@;'; put 'put ''ZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIw''@;'; put 'put ''MTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwMzg1XHUwMzg2XHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx1ZmZmZFx4YWJceGFjXHhhZFx4YWVcdTIwMTVceGIwXHhiMVx4YjJceGIzXHUwMzg0XHhiNVx4YjZceGI3XHUw''@;'; put 'put ''Mzg4XHUwMzg5XHUwMzhhXHhiYlx1MDM4Y1x4YmRcdTAzOGVcdTAzOGZcdTAzOTBcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdWZmZmRcdTAzYTNcdTAz''@;'; put 'put ''YTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYWFcdTAzYWJcdTAzYWNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzYjBcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZc''@;'; put 'put ''dTAzYzBcdTAzYzFcdTAzYzJcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdTAzY2FcdTAzY2JcdTAzY2NcdTAzY2RcdTAzY2VcdWZmZmQiLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQo''@;'; put 'put ''RSldPUUpLGdlW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzEyNTRdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgx''@;'; put 'put ''OFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAy''@;'; put 'put ''Nlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x1ZmZmZFx1ZmZmZFx1MDE3OFx4YTBceGEx''@;'; put 'put ''XHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2Fc''@;'; put 'put ''eGNiXHhjY1x4Y2RceGNlXHhjZlx1MDExZVx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDEzMFx1MDE1ZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTFmXHhmMVx4''@;'; put 'put ''ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMTMxXHUwMTVmXHhmZiIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpC''@;'; put 'put ''LGRlYzpnZX19KCksSmVbMTI1NV09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUm''@;'; put 'put ''JygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx4YTFceGEyXHhhM1x1MjBhYVx4YTVceGE2XHhhN1x4YThceGE5XHhk''@;'; put 'put ''N1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhiY1x4YmRceGJlXHhiZlx1MDViMFx1MDViMVx1MDViMlx1MDViM1x1MDViNFx1MDViNVx1MDViNlx1MDViN1x1MDViOFx1MDViOVx1ZmZmZFx1MDViYlx1MDViY1x1''@;'; put 'put ''MDViZFx1MDViZVx1MDViZlx1MDVjMFx1MDVjMVx1MDVjMlx1MDVjM1x1MDVmMFx1MDVmMVx1MDVmMlx1MDVmM1x1MDVmNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVk''@;'; put 'put ''OFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVbMTI1Nl09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZc''@;'; put 'put ''clx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5''@;'; put 'put ''ent8fX5ceDdmXHUyMGFjXHUwNjdlXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwNjc5XHUyMDM5XHUwMTUyXHUwNjg2XHUwNjk4XHUwNjg4XHUwNmFmXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwNmE5XHUyMTIy''@;'; put 'put ''XHUwNjkxXHUyMDNhXHUwMTUzXHUyMDBjXHUyMDBkXHUwNmJhXHhhMFx1MDYwY1x4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHUwNmJlXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHUwNjFiXHhiYlx4YmNceGJkXHhi''@;'; put 'put ''ZVx1MDYxZlx1MDZjMVx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx4ZDdcdTA2MzdcdTA2MzhcdTA2''@;'; put 'put ''MzlcdTA2M2FcdTA2NDBcdTA2NDFcdTA2NDJcdTA2NDNceGUwXHUwNjQ0XHhlMlx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx4ZTdceGU4XHhlOVx4ZWFceGViXHUwNjQ5XHUwNjRhXHhlZVx4ZWZcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVceGY0XHUwNjRmXHUwNjUwXHhmN1x1MDY1MVx4Zjlc''@;'; put 'put ''dTA2NTJceGZiXHhmY1x1MjAwZVx1MjAwZlx1MDZkMiIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVbMTI1N109ZnVuY3Rp''@;'; put 'put ''b24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BB''@;'; put 'put ''QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHVmZmZkXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHhhOFx1MDJjN1x4YjhcdWZmZmRc''@;'; put 'put ''dTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRceGFmXHUwMmRiXHVmZmZkXHhhMFx1ZmZmZFx4YTJceGEzXHhhNFx1ZmZmZFx4YTZceGE3XHhkOFx4YTlcdTAxNTZceGFiXHhhY1x4YWRceGFlXHhjNlx4YjBceGIx''@;'; put 'put ''XHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhmOFx4YjlcdTAxNTdceGJiXHhiY1x4YmRceGJlXHhlNlx1MDEwNFx1MDEyZVx1MDEwMFx1MDEwNlx4YzRceGM1XHUwMTE4XHUwMTEyXHUwMTBjXHhjOVx1MDE3OVx1MDExNlx1MDEyMlx1MDEzNlx1MDEyYVx1MDEzYlx1MDE2MFx1MDE0M1x1MDE0''@;'; put 'put ''NVx4ZDNcdTAxNGNceGQ1XHhkNlx4ZDdcdTAxNzJcdTAxNDFcdTAxNWFcdTAxNmFceGRjXHUwMTdiXHUwMTdkXHhkZlx1MDEwNVx1MDEyZlx1MDEwMVx1MDEwN1x4ZTRceGU1XHUwMTE5XHUwMTEzXHUwMTBkXHhlOVx1MDE3YVx1MDExN1x1MDEyM1x1MDEzN1x1MDEyYlx1MDEzY1x1MDE2MVx1''@;'; put 'put ''MDE0NFx1MDE0Nlx4ZjNcdTAxNGRceGY1XHhmNlx4ZjdcdTAxNzNcdTAxNDJcdTAxNWJcdTAxNmJceGZjXHUwMTdjXHUwMTdlXHUwMmQ5IixnZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNo''@;'; put 'put ''YXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVsxMjU4XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFj''@;'; put 'put ''XHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAy''@;'; put 'put ''YzZcdTIwMzBcdWZmZmRcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVc''@;'; put 'put ''eGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4''@;'; put 'put ''Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNc''@;'; put 'put ''eGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIixnZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIs''@;'; put 'put ''ZGVjOmdlfX0oKSxKZVsxZTRdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJico''@;'; put 'put ''KSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4''@;'; put 'put ''ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUy''@;'; put 'put ''MjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1''@;'; put 'put ''Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx1ZmIwMVx1ZmIwMlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUw''@;'; put 'put ''MmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVbMTAwMDZd''@;'; put 'put ''PWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6''@;'; put 'put ''Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRceGI5XHhiMlx4YzlceGIzXHhkNlx4ZGNcdTAzODVceGUwXHhlMlx4ZTRcdTAzODRceGE4XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGEzXHUyMTIyXHhlZVx4''@;'; put 'put ''ZWZcdTIwMjJceGJkXHUyMDMwXHhmNFx4ZjZceGE2XHhhZFx4ZjlceGZiXHhmY1x1MjAyMFx1MDM5M1x1MDM5NFx1MDM5OFx1MDM5Ylx1MDM5ZVx1MDNhMFx4ZGZceGFlXHhhOVx1MDNhM1x1MDNhYVx4YTdcdTIyNjBceGIwXHUwMzg3XHUwMzkxXHhiMVx1MjI2NFx1MjI2NVx4YTVcdTAzOTJc''@;'; put 'put ''dTAzOTVcdTAzOTZcdTAzOTdcdTAzOTlcdTAzOWFcdTAzOWNcdTAzYTZcdTAzYWJcdTAzYThcdTAzYTlcdTAzYWNcdTAzOWRceGFjXHUwMzlmXHUwM2ExXHUyMjQ4XHUwM2E0XHhhYlx4YmJcdTIwMjZceGEwXHUwM2E1XHUwM2E3XHUwMzg2XHUwMzg4XHUwMTUzXHUyMDEzXHUyMDE1XHUyMDFj''@;'; put 'put ''XHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MDM4OVx1MDM4YVx1MDM4Y1x1MDM4ZVx1MDNhZFx1MDNhZVx1MDNhZlx1MDNjY1x1MDM4Zlx1MDNjZFx1MDNiMVx1MDNiMlx1MDNjOFx1MDNiNFx1MDNiNVx1MDNjNlx1MDNiM1x1MDNiN1x1MDNiOVx1MDNiZVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNi''@;'; put 'put ''ZFx1MDNiZlx1MDNjMFx1MDNjZVx1MDNjMVx1MDNjM1x1MDNjNFx1MDNiOFx1MDNjOVx1MDNjMlx1MDNjN1x1MDNjNVx1MDNiNlx1MDNjYVx1MDNjYlx1MDM5MFx1MDNiMFx1ZmZmZCIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltM''@;'; put 'put ''LmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksSmVbMTAwMDddPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4''@;'; put 'put ''MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1''@;'; put 'put ''MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQy''@;'; put 'put ''Zlx1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHUwNDA2XHhhZVx4YTlcdTIxMjJcdTA0MDJcdTA0NTJcdTIyNjBcdTA0MDNcdTA0NTNcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHUwNDU2XHhiNVx1MjIwMlx1MDQwOFx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwOVx1MDQ1OVx1''@;'; put 'put ''MDQwYVx1MDQ1YVx1MDQ1OFx1MDQwNVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTA0MGJcdTA0NWJcdTA0MGNcdTA0NWNcdTA0NTVcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyMDFlXHUwNDBlXHUwNDVlXHUwNDBmXHUw''@;'; put 'put ''NDVmXHUyMTE2XHUwNDAxXHUwNDUxXHUwNDRmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2''@;'; put 'put ''XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHhhNCIsZ2U9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpn''@;'; put 'put ''ZX19KCksSmVbMTAwMDhdPWZ1bmN0aW9uKCl7dmFyIEUsTD1bXSxnZT17fSxCPVtdO2ZvcihCWzBdPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFk''@;'; put 'put ''XHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4ODBcdWY4ZDhcdWY4ZDlcdWY4ZGFcdWY4ZGJcdWY4ZGNcdWY4ZGRcdWY4ZGVcdWY4ZGZcdWY4''@;'; put 'put ''ZTBcdWY4ZTFcdWY4ZTJcdWY4ZTNcdWY4ZTRcdWY4ZTVcdWY4ZTZcdWY4ZTdcdWY4ZThcdWY4ZTlcdWY4ZWFcdWY4ZWJcdWY4ZWNcdWY4ZWRcdWY4ZWVcdWY4ZWZcdWY4ZjBcdWY4ZjFcdWY4ZjJcdWY4ZjNcdWY4ZjRcdWY4ZjVcdWY4ZjZcdWY4ZjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWY4ZjhcdWY4ZjlcdWY4ZmFcdWY4ZmJcdWY4ZmNcdWY4ZmRcdWY4ZmVcdWY4ZmYiLnNwbGl0KCIiKSxFPTA7RSE9QlswXS5sZW5ndGg7KytFKTY1NTMzIT09QlswXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlswXVtFXV09MCtFLExbMCtFXT1CWzBdW0VdKTtmb3IoQlsxNjFdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDBcdTMwMDFcdTMwMDJcdTMwZmJcdTAy''@;'; put 'put ''YzlcdTAyYzdceGE4XHUzMDAzXHUzMDA1XHUyMDE1XHVmZjVlXHVmZmZkXHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4XHUzMDA5XHUzMDBhXHUzMDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDE2XHUzMDE3XHUzMDEwXHUzMDExXHhiMVx4ZDdc''@;'; put 'put ''eGY3XHUyMjM2XHUyMjI3XHUyMjI4XHUyMjExXHUyMjBmXHUyMjJhXHUyMjI5XHUyMjA4XHUyMjM3XHUyMjFhXHUyMmE1XHUyMjI1XHUyMjIwXHUyMzEyXHUyMjk5XHUyMjJiXHUyMjJlXHUyMjYxXHUyMjRjXHUyMjQ4XHUyMjNkXHUyMjFkXHUyMjYwXHUyMjZlXHUyMjZmXHUyMjY0XHUyMjY1''@;'; put 'put ''XHUyMjFlXHUyMjM1XHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmYwNFx4YTRcdWZmZTBcdWZmZTFcdTIwMzBceGE3XHUyMTE2XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyMDNiXHUy''@;'; put 'put ''MTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2MV1bRV1dPTQxMjE2K0UsTFs0MTIxNitFXT1CWzE2MV1bRV0pO2ZvcihCWzE2Ml09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjQ4OFx1MjQ4OVx1MjQ4YVx1MjQ4Ylx1MjQ4Y1x1MjQ4ZFx1MjQ4ZVx1MjQ4Zlx1MjQ5MFx1MjQ5MVx1MjQ5Mlx1MjQ5M1x1MjQ5NFx1MjQ5NVx1MjQ5Nlx1MjQ5N1x1''@;'; put 'put ''MjQ5OFx1MjQ5OVx1MjQ5YVx1MjQ5Ylx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx1MjQ4M1x1MjQ4NFx1MjQ4NVx1MjQ4Nlx1MjQ4N1x1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2''@;'; put 'put ''M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1ZmZmZFx1ZmZmZFx1MzIyMFx1MzIyMVx1MzIyMlx1MzIyM1x1MzIyNFx1MzIyNVx1MzIyNlx1MzIyN1x1MzIyOFx1MzIyOVx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1''@;'; put 'put ''MjE2N1x1MjE2OFx1MjE2OVx1MjE2YVx1MjE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjJdW0VdXT00MTQ3MitFLExbNDE0NzIrRV09QlsxNjJdW0VdKTtmb3Io''@;'; put 'put ''QlsxNjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMDFcdWZmMDJcdWZm''@;'; put 'put ''MDNcdWZmZTVcdWZmMDVcdWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVc''@;'; put 'put ''dWZmMWZcdWZmMjBcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZm''@;'; put 'put ''M2FcdWZmM2JcdWZmM2NcdWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVc''@;'; put 'put ''dWZmNTZcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2M11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTYzXVtFXV09NDE3MjgrRSxMWzQxNzI4K0VdPUJb''@;'; put 'put ''MTYzXVtFXSk7Zm9yKEJbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUz''@;'; put 'put ''MDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVj''@;'; put 'put ''XHUzMDVkXHUzMDVlXHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUz''@;'; put 'put ''MDc4XHUzMDc5XHUzMDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkz''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2NF1bRV1dPTQxOTg0K0Us''@;'; put 'put ''TFs0MTk4NCtFXT1CWzE2NF1bRV0pO2ZvcihCWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBi''@;'; put 'put ''YVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1''@;'; put 'put ''MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1MzBkZVx1MzBkZlx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBm''@;'; put 'put ''MVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNjVd''@;'; put 'put ''W0VdXT00MjI0MCtFLExbNDIyNDArRV09QlsxNjVdW0VdKTtmb3IoQlsxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAz''@;'; put 'put ''YTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzRc''@;'; put 'put ''dTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2Nl1bRV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKGdlW0JbMTY2XVtFXV09NDI0OTYrRSxMWzQyNDk2K0VdPUJbMTY2XVtFXSk7Zm9yKEJbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDAxXHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUw''@;'; put 'put ''NDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDMw''@;'; put 'put ''XHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDUxXHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUw''@;'; put 'put ''NDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjddW0Vd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihnZVtCWzE2N11bRV1dPTQyNzUyK0UsTFs0Mjc1MitFXT1CWzE2N11bRV0pO2ZvcihCWzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQwXHhlY1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAx''@;'; put 'put ''ZGFcdTAxZGNceGZjXHhlYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1MzExMFx1MzExMVx1MzExMlx1MzEx''@;'; put 'put ''M1x1MzExNFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY4XVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoZ2VbQlsxNjhdW0VdXT00MzAwOCtFLExbNDMwMDgrRV09QlsxNjhdW0VdKTtmb3IoQlsxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDFcdTI1MDJcdTI1MDNcdTI1MDRcdTI1MDVcdTI1MDZcdTI1MDdcdTI1MDhcdTI1MDlcdTI1MGFcdTI1MGJcdTI1MGNcdTI1MGRcdTI1MGVcdTI1MGZcdTI1MTBcdTI1MTFc''@;'; put 'put ''dTI1MTJcdTI1MTNcdTI1MTRcdTI1MTVcdTI1MTZcdTI1MTdcdTI1MThcdTI1MTlcdTI1MWFcdTI1MWJcdTI1MWNcdTI1MWRcdTI1MWVcdTI1MWZcdTI1MjBcdTI1MjFcdTI1MjJcdTI1MjNcdTI1MjRcdTI1MjVcdTI1MjZcdTI1MjdcdTI1MjhcdTI1MjlcdTI1MmFcdTI1MmJcdTI1MmNcdTI1''@;'; put 'put ''MmRcdTI1MmVcdTI1MmZcdTI1MzBcdTI1MzFcdTI1MzJcdTI1MzNcdTI1MzRcdTI1MzVcdTI1MzZcdTI1MzdcdTI1MzhcdTI1MzlcdTI1M2FcdTI1M2JcdTI1M2NcdTI1M2RcdTI1M2VcdTI1M2ZcdTI1NDBcdTI1NDFcdTI1NDJcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhc''@;'; put 'put ''dTI1NDlcdTI1NGFcdTI1NGJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2OV1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTY5XVtFXV09NDMyNjQrRSxMWzQzMjY0K0VdPUJbMTY5XVtFXSk7Zm9yKEJbMTc2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTRhXHU5NjNmXHU1N2MzXHU2MzI4XHU1NGNlXHU1NTA5XHU1NGMwXHU3NjkxXHU3NjRjXHU4NTNjXHU3N2VlXHU4MjdlXHU3ODhkXHU3MjMxXHU5Njk4XHU5NzhkXHU2YzI4XHU1Yjg5XHU0ZmZh''@;'; put 'put ''XHU2MzA5XHU2Njk3XHU1Y2I4XHU4MGZhXHU2ODQ4XHU4MGFlXHU2NjAyXHU3NmNlXHU1MWY5XHU2NTU2XHU3MWFjXHU3ZmYxXHU4ODg0XHU1MGIyXHU1OTY1XHU2MWNhXHU2ZmIzXHU4MmFkXHU2MzRjXHU2MjUyXHU1M2VkXHU1NDI3XHU3YjA2XHU1MTZiXHU3NWE0XHU1ZGY0XHU2MmQ0XHU4''@;'; put 'put ''ZGNiXHU5Nzc2XHU2MjhhXHU4MDE5XHU1NzVkXHU5NzM4XHU3ZjYyXHU3MjM4XHU3NjdkXHU2N2NmXHU3NjdlXHU2NDQ2XHU0ZjcwXHU4ZDI1XHU2MmRjXHU3YTE3XHU2NTkxXHU3M2VkXHU2NDJjXHU2MjczXHU4MjJjXHU5ODgxXHU2NzdmXHU3MjQ4XHU2MjZlXHU2MmNjXHU0ZjM0XHU3NGUz''@;'; put 'put ''XHU1MzRhXHU1MjllXHU3ZWNhXHU5MGE2XHU1ZTJlXHU2ODg2XHU2OTljXHU4MTgwXHU3ZWQxXHU2OGQyXHU3OGM1XHU4NjhjXHU5NTUxXHU1MDhkXHU4YzI0XHU4MmRlXHU4MGRlXHU1MzA1XHU4OTEyXHU1MjY1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc2XS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxNzZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3Nl1bRV1dPTQ1MDU2K0UsTFs0NTA1NitFXT1CWzE3Nl1bRV0pO2ZvcihCWzE3N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU4NFx1OTZmOVx1NGZkZFx1NTgyMVx1OTk3MVx1NWI5ZFx1NjJiMVx1NjJhNVx1NjZiNFx1OGM3OVx1OWM4ZFx1NzIwNlx1Njc2Zlx1Nzg5MVx1NjBiMlx1NTM1MVx1NTMx''@;'; put 'put ''N1x1OGY4OFx1ODBjY1x1OGQxZFx1OTRhMVx1NTAwZFx1NzJjOFx1NTkwN1x1NjBlYlx1NzExOVx1ODhhYlx1NTk1NFx1ODJlZlx1NjcyY1x1N2IyOFx1NWQyOVx1N2VmN1x1NzUyZFx1NmNmNVx1OGU2Nlx1OGZmOFx1OTAzY1x1OWYzYlx1NmJkNFx1OTExOVx1N2IxNFx1NWY3Y1x1NzhhN1x1''@;'; put 'put ''ODRkNlx1ODUzZFx1NmJkNVx1NmJkOVx1NmJkNlx1NWUwMVx1NWU4N1x1NzVmOVx1OTVlZFx1NjU1ZFx1NWYwYVx1NWZjNVx1OGY5Zlx1NThjMVx1ODFjMlx1OTA3Zlx1OTY1Ylx1OTdhZFx1OGZiOVx1N2YxNlx1OGQyY1x1NjI0MVx1NGZiZlx1NTNkOFx1NTM1ZVx1OGZhOFx1OGZhOVx1OGZh''@;'; put 'put ''Ylx1OTA0ZFx1NjgwN1x1NWY2YVx1ODE5OFx1ODg2OFx1OWNkNlx1NjE4Ylx1NTIyYlx1NzYyYVx1NWY2Y1x1NjU4Y1x1NmZkMlx1NmVlOFx1NWJiZVx1NjQ0OFx1NTE3NVx1NTFiMFx1NjdjNFx1NGUxOVx1NzljOVx1OTk3Y1x1NzBiM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3N10u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxNzddW0VdXT00NTMxMitFLExbNDUzMTIrRV09QlsxNzddW0VdKTtmb3IoQlsxNzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBcdTY0YWRcdTYyZThcdTk0YjVcdTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVl''@;'; put 'put ''MWJcdTgyMzZcdTgxMTZcdTgxOGFcdTZlMjRcdTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBcdTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYwMTZcdTY0ZTZcdTczMWNcdTg4YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlc''@;'; put 'put ''dTgzZGNcdTg1MjFcdTk5MTBcdTUzYzJcdTg2OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRlZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRcdTY2ZjlcdTgzNDlcdTUzOTVcdTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUz''@;'; put 'put ''YzlcdTgzMmNcdTgzMzZcdTY3ZTVcdTc4YjRcdTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRcdThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThjMTdcdTdmMjBcdTk0ZjJcdTRlYTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTZcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxNzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3OF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTc4XVtFXV09NDU1NjgrRSxMWzQ1NTY4K0VdPUJbMTc4XVtFXSk7Zm9yKEJbMTc5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzNhXHU1YzFkXHU1ZTM4XHU5NTdmXHU1MDdmXHU4MGEwXHU1MzgyXHU2NTVlXHU3NTQ1XHU1NTMxXHU1MDIxXHU4ZDg1XHU2''@;'; put 'put ''Mjg0XHU5NDllXHU2NzFkXHU1NjMyXHU2ZjZlXHU1ZGUyXHU1NDM1XHU3MDkyXHU4ZjY2XHU2MjZmXHU2NGE0XHU2M2EzXHU1ZjdiXHU2Zjg4XHU5MGY0XHU4MWUzXHU4ZmIwXHU1YzE4XHU2NjY4XHU1ZmYxXHU2Yzg5XHU5NjQ4XHU4ZDgxXHU4ODZjXHU2NDkxXHU3OWYwXHU1N2NlXHU2YTU5''@;'; put 'put ''XHU2MjEwXHU1NDQ4XHU0ZTU4XHU3YTBiXHU2MGU5XHU2Zjg0XHU4YmRhXHU2MjdmXHU5MDFlXHU5YThiXHU3OWU0XHU1NDAzXHU3NWY0XHU2MzAxXHU1MzE5XHU2YzYwXHU4ZmRmXHU1ZjFiXHU5YTcwXHU4MDNiXHU5ZjdmXHU0Zjg4XHU1YzNhXHU4ZDY0XHU3ZmM1XHU2NWE1XHU3MGJkXHU1''@;'; put 'put ''MTQ1XHU1MWIyXHU4NjZiXHU1ZDA3XHU1YmEwXHU2MmJkXHU5MTZjXHU3NTc0XHU4ZTBjXHU3YTIwXHU2MTAxXHU3Yjc5XHU0ZWM3XHU3ZWY4XHU3Nzg1XHU0ZTExXHU4MWVkXHU1MjFkXHU1MWZhXHU2YTcxXHU1M2E4XHU4ZTg3XHU5NTA0XHU5NmNmXHU2ZWMxXHU5NjY0XHU2OTVhXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTc5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE3OV1bRV1dPTQ1ODI0K0UsTFs0NTgyNCtFXT1CWzE3OV1bRV0pO2ZvcihCWzE4MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzg0MFx1NTBhOFx1NzdkN1x1NjQxMFx1ODllNlx1NTkwNFx1NjNlM1x1NWRkZFx1N2E3Zlx1NjkzZFx1''@;'; put 'put ''NGYyMFx1ODIzOVx1NTU5OFx1NGUzMlx1NzVhZVx1N2E5N1x1NWU2Mlx1NWU4YVx1OTVlZlx1NTIxYlx1NTQzOVx1NzA4YVx1NjM3Nlx1OTUyNFx1NTc4Mlx1NjYyNVx1NjkzZlx1OTE4N1x1NTUwN1x1NmRmM1x1N2VhZlx1ODgyMlx1NjIzM1x1N2VmMFx1NzViNVx1ODMyOFx1NzhjMVx1OTZj''@;'; put 'put ''Y1x1OGY5ZVx1NjE0OFx1NzRmN1x1OGJjZFx1NmI2NFx1NTIzYVx1OGQ1MFx1NmIyMVx1ODA2YVx1ODQ3MVx1NTZmMVx1NTMwNlx1NGVjZVx1NGUxYlx1NTFkMVx1N2M5N1x1OTE4Ylx1N2MwN1x1NGZjM1x1OGU3Zlx1N2JlMVx1N2E5Y1x1NjQ2N1x1NWQxNFx1NTBhY1x1ODEwNlx1NzYwMVx1''@;'; put 'put ''N2NiOVx1NmRlY1x1N2ZlMFx1Njc1MVx1NWI1OFx1NWJmOFx1NzhjYlx1NjRhZVx1NjQxM1x1NjNhYVx1NjMyYlx1OTUxOVx1NjQyZFx1OGZiZVx1N2I1NFx1NzYyOVx1NjI1M1x1NTkyN1x1NTQ0Nlx1NmI3OVx1NTBhM1x1NjIzNFx1NWUyNlx1NmI4Nlx1NGVlM1x1OGQzN1x1ODg4Ylx1NWY4''@;'; put 'put ''NVx1OTAyZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODBdW0VdXT00NjA4MCtFLExbNDYwODArRV09QlsxODBdW0VdKTtmb3IoQlsxODFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwMjBcdTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZc''@;'; put 'put ''dTY1ZTZcdTZjMmVcdTRmNDZcdTYwZWVcdTZkZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFcdTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJcdTVjOWJcdTc5NzdcdTViZmNcdTUyMzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2''@;'; put 'put ''ODRcdThlNmNcdTcwNmZcdTc2N2JcdTdiNDlcdTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZlZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVhZTFcdTYyYjVcdTVlOTVcdTU3MzBcdTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBc''@;'; put 'put ''dTYzODJcdTZlYzdcdTc4OThcdTcwYjlcdTUxNzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1MzhcdTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNcdTk2ZDVcdTUxY2JcdTUyMDFcdTYzODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3''@;'; put 'put ''NzZcdThmZWRcdThjMGRcdTUzZTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTgxXVtFXV09NDYzMzYrRSxMWzQ2MzM2K0VdPUJbMTgxXVtFXSk7Zm9yKEJbMTgyXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTAxXHU3NmVmXHU1M2VlXHU5NDg5XHU5ODc2XHU5ZjBl''@;'; put 'put ''XHU5NTJkXHU1YjlhXHU4YmEyXHU0ZTIyXHU0ZTFjXHU1MWFjXHU4NDYzXHU2MWMyXHU1MmE4XHU2ODBiXHU0Zjk3XHU2MDZiXHU1MWJiXHU2ZDFlXHU1MTVjXHU2Mjk2XHU2NTk3XHU5NjYxXHU4YzQ2XHU5MDE3XHU3NWQ4XHU5MGZkXHU3NzYzXHU2YmQyXHU3MjhhXHU3MmVjXHU4YmZiXHU1''@;'; put 'put ''ODM1XHU3Nzc5XHU4ZDRjXHU2NzVjXHU5NTQwXHU4MDlhXHU1ZWE2XHU2ZTIxXHU1OTkyXHU3YWVmXHU3N2VkXHU5NTNiXHU2YmI1XHU2NWFkXHU3ZjBlXHU1ODA2XHU1MTUxXHU5NjFmXHU1YmY5XHU1OGE5XHU1NDI4XHU4ZTcyXHU2NTY2XHU5ODdmXHU1NmU0XHU5NDlkXHU3NmZlXHU5MDQx''@;'; put 'put ''XHU2Mzg3XHU1NGM2XHU1OTFhXHU1OTNhXHU1NzliXHU4ZWIyXHU2NzM1XHU4ZGZhXHU4MjM1XHU1MjQxXHU2MGYwXHU1ODE1XHU4NmZlXHU1Y2U4XHU5ZTQ1XHU0ZmM0XHU5ODlkXHU4YmI5XHU1YTI1XHU2MDc2XHU1Mzg0XHU2MjdjXHU5MDRmXHU5MTAyXHU5OTdmXHU2MDY5XHU4MDBjXHU1''@;'; put 'put ''MTNmXHU4MDMzXHU1YzE0XHU5OTc1XHU2ZDMxXHU0ZThjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4Ml1bRV1dPTQ2NTkyK0UsTFs0NjU5MitFXT1CWzE4Ml1bRV0pO2ZvcihCWzE4M109''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0''@;'; put 'put ''Zlx1NGYxMFx1NGU0Zlx1OTYwMFx1NmNkNVx1NzNkMFx1ODVlOVx1NWUwNlx1NzU2YVx1N2ZmYlx1NmEwYVx1NzdmZVx1OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZkNFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1''@;'; put 'put ''OTYzMlx1NTlhOFx1NGVmZlx1OGJiZlx1N2ViYVx1NjUzZVx1ODNmMlx1OTc1ZVx1NTU2MVx1OThkZVx1ODBhNVx1NTMyYVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4''@;'; put 'put ''OVx1NTk0Ylx1NGVmZFx1NWZmZlx1NjEyNFx1N2NhYVx1NGUzMFx1NWMwMVx1NjdhYlx1ODcwMlx1NWNmMFx1OTUwYlx1OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2YxZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1''@;'; put 'put ''NjJjMlx1OGY5MFx1NWU0NVx1NmMxZlx1N2IyNlx1NGYwZlx1NGZkOFx1NjcwZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODNdW0VdXT00Njg0OCtFLExbNDY4NDgrRV09QlsxODNdW0Vd''@;'; put 'put ''KTtmb3IoQlsxODRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkNmVcdTZk''@;'; put 'put ''YWFcdTc5OGZcdTg4YjFcdTVmMTdcdTc1MmJcdTYyOWFcdThmODVcdTRmZWZcdTkxZGNcdTY1YTdcdTgxMmZcdTgxNTFcdTVlOWNcdTgxNTBcdThkNzRcdTUyNmZcdTg5ODZcdThkNGJcdTU5MGRcdTUwODVcdTRlZDhcdTk2MWNcdTcyMzZcdTgxNzlcdThkMWZcdTViY2NcdThiYTNcdTk2NDRc''@;'; put 'put ''dTU5ODdcdTdmMWFcdTU0OTBcdTU2NzZcdTU2MGVcdThiZTVcdTY1MzlcdTY5ODJcdTk0OTlcdTc2ZDZcdTZlODlcdTVlNzJcdTc1MThcdTY3NDZcdTY3ZDFcdTdhZmZcdTgwOWRcdThkNzZcdTYxMWZcdTc5YzZcdTY1NjJcdThkNjNcdTUxODhcdTUyMWFcdTk0YTJcdTdmMzhcdTgwOWJcdTdl''@;'; put 'put ''YjJcdTVjOTdcdTZlMmZcdTY3NjBcdTdiZDlcdTc2OGJcdTlhZDhcdTgxOGZcdTdmOTRcdTdjZDVcdTY0MWVcdTk1NTBcdTdhM2ZcdTU0NGFcdTU0ZTVcdTZiNGNcdTY0MDFcdTYyMDhcdTllM2RcdTgwZjNcdTc1OTlcdTUyNzJcdTk3NjlcdTg0NWJcdTY4M2NcdTg2ZTRcdTk2MDFcdTk2OTRc''@;'; put 'put ''dTk0ZWNcdTRlMmFcdTU0MDRcdTdlZDlcdTY4MzlcdThkZGZcdTgwMTVcdTY2ZjRcdTVlOWFcdTdmYjlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTg0XVtFXV09NDcxMDQrRSxMWzQ3MTA0''@;'; put 'put ''K0VdPUJbMTg0XVtFXSk7Zm9yKEJbMTg1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU1N2MyXHU4MDNmXHU2ODk3XHU1ZGU1XHU2NTNiXHU1MjlmXHU2MDZkXHU5ZjlhXHU0ZjliXHU4ZWFjXHU1MTZjXHU1YmFiXHU1ZjEzXHU1ZGU5XHU2YzVlXHU2MmYxXHU4ZDIxXHU1MTcxXHU5NGE5XHU1MmZlXHU2YzlmXHU4MmRmXHU3MmQ3XHU1N2EyXHU2Nzg0XHU4ZDJkXHU1OTFm''@;'; put 'put ''XHU4ZjljXHU4M2M3XHU1NDk1XHU3YjhkXHU0ZjMwXHU2Y2JkXHU1YjY0XHU1OWQxXHU5ZjEzXHU1M2U0XHU4NmNhXHU5YWE4XHU4YzM3XHU4MGExXHU2NTQ1XHU5ODdlXHU1NmZhXHU5NmM3XHU1MjJlXHU3NGRjXHU1MjUwXHU1YmUxXHU2MzAyXHU4OTAyXHU0ZTU2XHU2MmQwXHU2MDJhXHU2''@;'; put 'put ''OGZhXHU1MTczXHU1Yjk4XHU1MWEwXHU4OWMyXHU3YmExXHU5OTg2XHU3ZjUwXHU2MGVmXHU3MDRjXHU4ZDJmXHU1MTQ5XHU1ZTdmXHU5MDFiXHU3NDcwXHU4OWM0XHU1NzJkXHU3ODQ1XHU1ZjUyXHU5ZjlmXHU5NWZhXHU4ZjY4XHU5YjNjXHU4YmUxXHU3Njc4XHU2ODQyXHU2N2RjXHU4ZGVh''@;'; put 'put ''XHU4ZDM1XHU1MjNkXHU4ZjhhXHU2ZWRhXHU2OGNkXHU5NTA1XHU5MGVkXHU1NmZkXHU2NzljXHU4OGY5XHU4ZmM3XHU1NGM4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4NV1bRV1dPTQ3''@;'; put 'put ''MzYwK0UsTFs0NzM2MCtFXT1CWzE4NV1bRV0pO2ZvcihCWzE4Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1OWFiOFx1NWI2OVx1NmQ3N1x1NmMyNlx1NGVhNVx1NWJiM1x1OWE4N1x1OTE2M1x1NjFhOFx1OTBhZlx1OTdlOVx1NTQyYlx1NmRiNVx1NWJkMlx1NTFmZFx1NTU4YVx1N2Y1NVx1N2ZmMFx1NjRiY1x1NjM0ZFx1NjVmMVx1NjFiZVx1NjA4ZFx1NzEwYVx1NmM1''@;'; put 'put ''N1x1NmM0OVx1NTkyZlx1Njc2ZFx1ODIyYVx1NThkNVx1NTY4ZVx1OGM2YVx1NmJlYlx1OTBkZFx1NTk3ZFx1ODAxN1x1NTNmN1x1NmQ2OVx1NTQ3NVx1NTU5ZFx1ODM3N1x1ODNjZlx1NjgzOFx1NzliZVx1NTQ4Y1x1NGY1NVx1NTQwOFx1NzZkMlx1OGM4OVx1OTYwMlx1NmNiM1x1NmRiOFx1''@;'; put 'put ''OGQ2Ylx1ODkxMFx1OWU2NFx1OGQzYVx1NTYzZlx1OWVkMVx1NzVkNVx1NWY4OFx1NzJlMFx1NjA2OFx1NTRmY1x1NGVhOFx1NmEyYVx1ODg2MVx1NjA1Mlx1OGY3MFx1NTRjNFx1NzBkOFx1ODY3OVx1OWUzZlx1NmQyYVx1NWI4Zlx1NWYxOFx1N2VhMlx1NTU4OVx1NGZhZlx1NzMzNFx1NTQz''@;'; put 'put ''Y1x1NTM5YVx1NTAxOVx1NTQwZVx1NTQ3Y1x1NGU0ZVx1NWZmZFx1NzQ1YVx1NThmNlx1ODQ2Ylx1ODBlMVx1ODc3NFx1NzJkMFx1N2NjYVx1NmU1Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2Vb''@;'; put 'put ''QlsxODZdW0VdXT00NzYxNitFLExbNDc2MTYrRV09QlsxODZdW0VdKTtmb3IoQlsxODddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmMjdcdTg2NGVcdTU1MmNcdTYyYTRcdTRlOTJcdTZjYWFcdTYyMzdcdTgyYjFcdTU0ZDdcdTUzNGVcdTczM2VcdTZlZDFcdTc1M2JcdTUyMTJcdTUzMTZcdThiZGRcdTY5ZDBcdTVmOGFcdTYwMDBcdTZkZWVcdTU3NGZcdTZiMjJcdTcz''@;'; put 'put ''YWZcdTY4NTNcdThmZDhcdTdmMTNcdTYzNjJcdTYwYTNcdTU1MjRcdTc1ZWFcdThjNjJcdTcxMTVcdTZkYTNcdTViYTZcdTVlN2JcdTgzNTJcdTYxNGNcdTllYzRcdTc4ZmFcdTg3NTdcdTdjMjdcdTc2ODdcdTUxZjBcdTYwZjZcdTcxNGNcdTY2NDNcdTVlNGNcdTYwNGRcdThjMGVcdTcwNzBc''@;'; put 'put ''dTYzMjVcdThmODlcdTVmYmRcdTYwNjJcdTg2ZDRcdTU2ZGVcdTZiYzFcdTYwOTRcdTYxNjdcdTUzNDlcdTYwZTBcdTY2NjZcdThkM2ZcdTc5ZmRcdTRmMWFcdTcwZTlcdTZjNDdcdThiYjNcdThiZjJcdTdlZDhcdTgzNjRcdTY2MGZcdTVhNWFcdTliNDJcdTZkNTFcdTZkZjdcdThjNDFcdTZk''@;'; put 'put ''M2JcdTRmMTlcdTcwNmJcdTgzYjdcdTYyMTZcdTYwZDFcdTk3MGRcdThkMjdcdTc5NzhcdTUxZmJcdTU3M2VcdTU3ZmFcdTY3M2FcdTc1NzhcdTdhM2RcdTc5ZWZcdTdiOTVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4N11bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKGdlW0JbMTg3XVtFXV09NDc4NzIrRSxMWzQ3ODcyK0VdPUJbMTg3XVtFXSk7Zm9yKEJbMTg4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDhjXHU5OTY1XHU4ZmY5XHU2ZmMwXHU4YmE1XHU5ZTIxXHU1OWVjXHU3ZWU5XHU3ZjA5XHU1NDA5XHU2NzgxXHU2OGQ4XHU4ZjkxXHU3YzRkXHU5NmM2XHU1M2NhXHU2MDI1XHU3NWJlXHU2YzcyXHU1MzczXHU1''@;'; put 'put ''YWM5XHU3ZWE3XHU2MzI0XHU1MWUwXHU4MTBhXHU1ZGYxXHU4NGRmXHU2MjgwXHU1MTgwXHU1YjYzXHU0ZjBlXHU3OTZkXHU1MjQyXHU2MGI4XHU2ZDRlXHU1YmM0XHU1YmMyXHU4YmExXHU4YmIwXHU2NWUyXHU1ZmNjXHU5NjQ1XHU1OTkzXHU3ZWU3XHU3ZWFhXHU1NjA5XHU2N2I3XHU1OTM5''@;'; put 'put ''XHU0ZjczXHU1YmI2XHU1MmEwXHU4MzVhXHU5ODhhXHU4ZDNlXHU3NTMyXHU5NGJlXHU1MDQ3XHU3YTNjXHU0ZWY3XHU2N2I2XHU5YTdlXHU1YWMxXHU2YjdjXHU3NmQxXHU1NzVhXHU1YzE2XHU3YjNhXHU5NWY0XHU3MTRlXHU1MTdjXHU4MGE5XHU4MjcwXHU1OTc4XHU3ZjA0XHU4MzI3XHU2''@;'; put 'put ''OGMwXHU2N2VjXHU3OGIxXHU3ODc3XHU2MmUzXHU2MzYxXHU3YjgwXHU0ZmVkXHU1MjZhXHU1MWNmXHU4MzUwXHU2OWRiXHU5Mjc0XHU4ZGY1XHU4ZDMxXHU4OWMxXHU5NTJlXHU3YmFkXHU0ZWY2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg4XS5sZW5ndGg7KytFKTY1NTMzIT09Qlsx''@;'; put 'put ''ODhdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE4OF1bRV1dPTQ4MTI4K0UsTFs0ODEyOCtFXT1CWzE4OF1bRV0pO2ZvcihCWzE4OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTA2NVx1ODIzMFx1NTI1MVx1OTk2Zlx1NmUxMFx1NmU4NVx1NmRhN1x1NWVmYVx1NTBmNVx1NTlkY1x1NWMwNlx1NmQ0Nlx1NmM1Zlx1NzU4Nlx1ODQ4Ylx1Njg2OFx1NTk1Nlx1OGJiMlx1''@;'; put 'put ''NTMyMFx1OTE3MVx1OTY0ZFx1ODU0OVx1NjkxMlx1NzkwMVx1NzEyNlx1ODBmNlx1NGVhNFx1OTBjYVx1NmQ0N1x1OWE4NFx1NWEwN1x1NTZiY1x1NjQwNVx1OTRmMFx1NzdlYlx1NGZhNVx1ODExYVx1NzJlMVx1ODlkMlx1OTk3YVx1N2YzNFx1N2VkZVx1NTI3Zlx1NjU1OVx1OTE3NVx1OGY3''@;'; put 'put ''Zlx1OGY4M1x1NTNlYlx1N2E5Nlx1NjNlZFx1NjNhNVx1NzY4Nlx1NzlmOFx1ODg1N1x1OTYzNlx1NjIyYVx1NTJhYlx1ODI4Mlx1Njg1NFx1Njc3MFx1NjM3N1x1Nzc2Ylx1N2FlZFx1NmQwMVx1N2VkM1x1ODllM1x1NTlkMFx1NjIxMlx1ODVjOVx1ODJhNVx1NzU0Y1x1NTAxZlx1NGVjYlx1''@;'; put 'put ''NzVhNVx1OGJlYlx1NWM0YVx1NWRmZVx1N2I0Ylx1NjVhNFx1OTFkMVx1NGVjYVx1NmQyNVx1ODk1Zlx1N2QyN1x1OTUyNlx1NGVjNVx1OGMyOFx1OGZkYlx1OTc3M1x1NjY0Ylx1Nzk4MVx1OGZkMVx1NzBlY1x1NmQ3OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4OV0ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMTg5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxODldW0VdXT00ODM4NCtFLExbNDgzODQrRV09QlsxODldW0VdKTtmb3IoQlsxOTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdjYmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZc''@;'; put 'put ''dTk4ODhcdTk3NTlcdTU4ODNcdTY1NmNcdTk1NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdhZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZcdTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJcdTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0''@;'; put 'put ''OGVcdTVjMzFcdTc1OWFcdTk3YTBcdTYyZDhcdTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2FcdTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYzNmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdc''@;'; put 'put ''dTYzNTBcdTllNDNcdTVhMWZcdTUwMjZcdTc3MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYyODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRcdTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJcdTVjZmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''OTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5MF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTkwXVtFXV09NDg2NDArRSxMWzQ4NjQwK0VdPUJbMTkwXVtFXSk7Zm9yKEJbMTkxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZmNhXHU3YWUzXHU2ZDVhXHU5MGUxXHU5YThmXHU1NTgwXHU1NDk2XHU1MzYxXHU1NGFmXHU1ZjAwXHU2M2U5XHU2OTc3XHU1MWVmXHU2MTY4''@;'; put 'put ''XHU1MjBhXHU1ODJhXHU1MmQ4XHU1NzRlXHU3ODBkXHU3NzBiXHU1ZWI3XHU2MTc3XHU3Y2UwXHU2MjViXHU2Mjk3XHU0ZWEyXHU3MDk1XHU4MDAzXHU2MmY3XHU3MGU0XHU5NzYwXHU1Nzc3XHU4MmRiXHU2N2VmXHU2OGY1XHU3OGQ1XHU5ODk3XHU3OWQxXHU1OGYzXHU1NGIzXHU1M2VmXHU2''@;'; put 'put ''ZTM0XHU1MTRiXHU1MjNiXHU1YmEyXHU4YmZlXHU4MGFmXHU1NTQzXHU1N2E2XHU2MDczXHU1NzUxXHU1NDJkXHU3YTdhXHU2MDUwXHU1YjU0XHU2M2E3XHU2MmEwXHU1M2UzXHU2MjYzXHU1YmM3XHU2N2FmXHU1NGVkXHU3YTlmXHU4MmU2XHU5MTc3XHU1ZTkzXHU4OGU0XHU1OTM4XHU1N2Fl''@;'; put 'put ''XHU2MzBlXHU4ZGU4XHU4MGVmXHU1NzU3XHU3Yjc3XHU0ZmE5XHU1ZmViXHU1YmJkXHU2YjNlXHU1MzIxXHU3YjUwXHU3MmMyXHU2ODQ2XHU3N2ZmXHU3NzM2XHU2NWY3XHU1MWI1XHU0ZThmXHU3NmQ0XHU1Y2JmXHU3YWE1XHU4NDc1XHU1OTRlXHU5YjQxXHU1MDgwXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMTkxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5MV1bRV1dPTQ4ODk2K0UsTFs0ODg5NitFXT1CWzE5MV1bRV0pO2ZvcihCWzE5Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTk4OFx1NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1NjI2OVx1NWVkM1x1OTYxNFx1NTc4''@;'; put 'put ''M1x1NjJjOVx1NTU4N1x1ODcyMVx1ODE0YVx1OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJlNlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVlNVx1NzQwNVx1Njk5NFx1NzJmY1x1''@;'; put 'put ''NWVjYVx1OTBjZVx1NjcxN1x1NmQ2YVx1NjM1ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1N2M3Ylx1NmNlYVx1NjhmMVx1Njk1''@;'; put 'put ''ZVx1NTFiN1x1NTM5OFx1NjhhOFx1NzI4MVx1OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNhNFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQwZlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIyOVx1NTA4OFx1NGY4Ylx1NGZkMFx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTJdW0VdXT00OTE1MitFLExbNDkxNTIrRV09QlsxOTJdW0VdKTtmb3IoQlsxOTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgw''@;'; put 'put ''NTRcdTgzYjJcdThmZGVcdTk1NzBcdTVlYzlcdTYwMWNcdTZkOWZcdTVlMThcdTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdjYjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2VcdTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFc''@;'; put 'put ''dTc1OTdcdTcxY2VcdTViZTVcdThmYmRcdTZmNjZcdTRlODZcdTY0ODJcdTk1NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdcdTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZkY2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTcz''@;'; put 'put ''YjJcdTgzZjFcdTk2ZjZcdTlmODRcdTk0YzNcdTRmMzZcdTdmOWFcdTUxY2NcdTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFcdTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlc''@;'; put 'put ''dTdiM2NcdTdhYmZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5M11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTkzXVtFXV09NDk0MDgrRSxMWzQ5NDA4K0VdPUJbMTkzXVtFXSk7Zm9yKEJbMTk0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Njg2XHU1Nzg0XHU2MmUyXHU5NjQ3XHU2OTdjXHU1YTA0XHU2NDAyXHU3''@;'; put 'put ''YmQzXHU2ZjBmXHU5NjRiXHU4MmE2XHU1MzYyXHU5ODg1XHU1ZTkwXHU3MDg5XHU2M2IzXHU1MzY0XHU4NjRmXHU5YzgxXHU5ZTkzXHU3ODhjXHU5NzMyXHU4ZGVmXHU4ZDQyXHU5ZTdmXHU2ZjVlXHU3OTg0XHU1ZjU1XHU5NjQ2XHU2MjJlXHU5YTc0XHU1NDE1XHU5NGRkXHU0ZmEzXHU2NWM1''@;'; put 'put ''XHU1YzY1XHU1YzYxXHU3ZjE1XHU4NjUxXHU2YzJmXHU1ZjhiXHU3Mzg3XHU2ZWU0XHU3ZWZmXHU1Y2U2XHU2MzFiXHU1YjZhXHU2ZWU2XHU1Mzc1XHU0ZTcxXHU2M2EwXHU3NTY1XHU2MmExXHU4ZjZlXHU0ZjI2XHU0ZWQxXHU2Y2E2XHU3ZWI2XHU4YmJhXHU4NDFkXHU4N2JhXHU3ZjU3XHU5''@;'; put 'put ''MDNiXHU5NTIzXHU3YmE5XHU5YWExXHU4OGY4XHU4NDNkXHU2ZDFiXHU5YTg2XHU3ZWRjXHU1OTg4XHU5ZWJiXHU3MzliXHU3ODAxXHU4NjgyXHU5YTZjXHU5YTgyXHU1NjFiXHU1NDE3XHU1N2NiXHU0ZTcwXHU5ZWE2XHU1MzU2XHU4ZmM4XHU4MTA5XHU3NzkyXHU5OTkyXHU4NmVlXHU2ZWUx''@;'; put 'put ''XHU4NTEzXHU2NmZjXHU2MTYyXHU2ZjJiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5NF1bRV1dPTQ5NjY0K0UsTFs0OTY2NCtFXT1CWzE5NF1bRV0pO2ZvcihCWzE5NV09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1''@;'; put 'put ''NWZkOVx1ODNiZFx1NzMyYlx1ODMwNVx1OTUxYVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMwMlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQzOFx1NGU0OFx1NzNhYlx1Njc5YVx1Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYy''@;'; put 'put ''N1x1NWJkMFx1NTliOVx1NWE5YVx1OTVlOFx1OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1NWI1Zlx1NzcyZlx1OTE5YVx1OTc2MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1''@;'; put 'put ''NWU0Mlx1NjhjOVx1NzcyMFx1N2VmNVx1NTE5NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVkMFx1NzlkMlx1NmUzYVx1NWU5OVx1NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5''@;'; put 'put ''Zlx1OWUyM1x1OTRlZFx1NTQwZFx1NTQ3ZFx1OGMyY1x1NjQ3OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk1XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOTVdW0VdXT00OTkyMCtFLExbNDk5MjArRV09QlsxOTVdW0VdKTtmb3IoQlsx''@;'; put 'put ''OTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0NzlcdTg2MTFcdTZhMjFc''@;'; put 'put ''dTgxOWNcdTc4ZThcdTY0NjlcdTliNTRcdTYyYjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBcdTYyYzdcdTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2YWVcdTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2''@;'; put 'put ''ZWVcdTc3NjZcdTcyNjdcdTdhNDZcdTYyZmZcdTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUzNTdcdTc1MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2NcdTk1ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVc''@;'; put 'put ''dTVhZTlcdTgwZmRcdTU5YWVcdTk3MTNcdTUwMmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRcdTc4YmVcdTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTllMWZcdTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1''@;'; put 'put ''NmVcdTk1NGFcdTk1NGRcdTZkODVcdTYwYThcdTY3ZTBcdTcyZGVcdTUxZGRcdTViODFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMTk2XVtFXV09NTAxNzYrRSxMWzUwMTc2K0VdPUJbMTk2''@;'; put 'put ''XVtFXSk7Zm9yKEJbMTk3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MmU3''@;'; put 'put ''XHU2Y2RlXHU3MjViXHU2MjZkXHU5NGFlXHU3ZWJkXHU4MTEzXHU2ZDUzXHU1MTljXHU1ZjA0XHU1OTc0XHU1MmFhXHU2MDEyXHU1OTczXHU2Njk2XHU4NjUwXHU3NTlmXHU2MzJhXHU2MWU2XHU3Y2VmXHU4YmZhXHU1NGU2XHU2YjI3XHU5ZTI1XHU2YmI0XHU4NWQ1XHU1NDU1XHU1MDc2XHU2''@;'; put 'put ''Y2E0XHU1NTZhXHU4ZGI0XHU3MjJjXHU1ZTE1XHU2MDE1XHU3NDM2XHU2MmNkXHU2MzkyXHU3MjRjXHU1Zjk4XHU2ZTQzXHU2ZDNlXHU2NTAwXHU2ZjU4XHU3NmQ4XHU3OGQwXHU3NmZjXHU3NTU0XHU1MjI0XHU1M2RiXHU0ZTUzXHU1ZTllXHU2NWMxXHU4MDJhXHU4MGQ2XHU2MjliXHU1NDg2''@;'; put 'put ''XHU1MjI4XHU3MGFlXHU4ODhkXHU4ZGQxXHU2Y2UxXHU1NDc4XHU4MGRhXHU1N2Y5XHU4OGY0XHU4ZDU0XHU5NjZhXHU5MTRkXHU0ZjY5XHU2YzliXHU1NWI3XHU3NmM2XHU3ODMwXHU2MmE4XHU3MGY5XHU2ZjhlXHU1ZjZkXHU4NGVjXHU2OGRhXHU3ODdjXHU3YmY3XHU4MWE4XHU2NzBiXHU5''@;'; put 'put ''ZTRmXHU2MzY3XHU3OGIwXHU1NzZmXHU3ODEyXHU5NzM5XHU2Mjc5XHU2MmFiXHU1Mjg4XHU3NDM1XHU2YmQ3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzE5N11bRV1dPTUwNDMyK0UsTFs1''@;'; put 'put ''MDQzMitFXT1CWzE5N11bRV0pO2ZvcihCWzE5OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1NTU2NFx1ODEzZVx1NzViMlx1NzZhZVx1NTMzOVx1NzVkZVx1NTBmYlx1NWM0MVx1OGI2Y1x1N2JjN1x1NTA0Zlx1NzI0N1x1OWE5N1x1OThkOFx1NmYwMlx1NzRlMlx1Nzk2OFx1NjQ4N1x1NzdhNVx1NjJmY1x1OTg5MVx1OGQyYlx1NTRjMVx1ODA1OFx1NGU1Mlx1NTc2YVx1''@;'; put 'put ''ODJmOVx1ODQwZFx1NWU3M1x1NTFlZFx1NzRmNlx1OGJjNFx1NWM0Zlx1NTc2MVx1NmNmY1x1OTg4N1x1NWE0Nlx1NzgzNFx1OWI0NFx1OGZlYlx1N2M5NVx1NTI1Nlx1NjI1MVx1OTRmYVx1NGVjNlx1ODM4Nlx1ODQ2MVx1ODNlOVx1ODRiMlx1NTdkNFx1NjczNFx1NTcwM1x1NjY2ZVx1NmQ2''@;'; put 'put ''Nlx1OGMzMVx1NjZkZFx1NzAxMVx1NjcxZlx1NmIzYVx1NjgxNlx1NjIxYVx1NTliYlx1NGUwM1x1NTFjNFx1NmYwNlx1NjdkMlx1NmM4Zlx1NTE3Nlx1NjhjYlx1NTk0N1x1NmI2N1x1NzU2Nlx1NWQwZVx1ODExMFx1OWY1MFx1NjVkN1x1Nzk0OFx1Nzk0MVx1OWE5MVx1OGQ3N1x1NWM4Mlx1''@;'; put 'put ''NGU1ZVx1NGYwMVx1NTQyZlx1NTk1MVx1NzgwY1x1NTY2OFx1NmMxNFx1OGZjNFx1NWYwM1x1NmM3ZFx1NmNlM1x1OGJhYlx1NjM5MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsxOThdW0Vd''@;'; put 'put ''XT01MDY4OCtFLExbNTA2ODgrRV09QlsxOThdW0VdKTtmb3IoQlsxOTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwNzBcdTZkM2RcdTcyNzVcdTYyNjZcdTk0OGVcdTk0YzVcdTUzNDNcdThmYzFcdTdiN2VcdTRlZGZcdThjMjZcdTRlN2VcdTllZDRcdTk0YjFcdTk0YjNcdTUyNGRcdTZmNWNcdTkwNjNcdTZkNDVcdThjMzRcdTU4MTFcdTVkNGNcdTZiMjBcdTZiNDlc''@;'; put 'put ''dTY3YWFcdTU0NWJcdTgxNTRcdTdmOGNcdTU4OTlcdTg1MzdcdTVmM2FcdTYyYTJcdTZhNDdcdTk1MzlcdTY1NzJcdTYwODRcdTY4NjVcdTc3YTdcdTRlNTRcdTRmYThcdTVkZTdcdTk3OThcdTY0YWNcdTdmZDhcdTVjZWRcdTRmY2ZcdTdhOGRcdTUyMDdcdTgzMDRcdTRlMTRcdTYwMmZcdTdh''@;'; put 'put ''ODNcdTk0YTZcdTRmYjVcdTRlYjJcdTc5ZTZcdTc0MzRcdTUyZTRcdTgyYjlcdTY0ZDJcdTc5YmRcdTViZGRcdTZjODFcdTk3NTJcdThmN2JcdTZjMjJcdTUwM2VcdTUzN2ZcdTZlMDVcdTY0Y2VcdTY2NzRcdTZjMzBcdTYwYzVcdTk4NzdcdThiZjdcdTVlODZcdTc0M2NcdTdhNzdcdTc5Y2Jc''@;'; put 'put ''dTRlMThcdTkwYjFcdTc0MDNcdTZjNDJcdTU2ZGFcdTkxNGJcdTZjYzVcdThkOGJcdTUzM2FcdTg2YzZcdTY2ZjJcdThlYWZcdTVjNDhcdTlhNzFcdTZlMjBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5OV1bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KGdlW0JbMTk5XVtFXV09NTA5NDQrRSxMWzUwOTQ0K0VdPUJbMTk5XVtFXSk7Zm9yKEJbMjAwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1M2Q2XHU1YTM2XHU5ZjhiXHU4ZGEzXHU1M2JiXHU1NzA4XHU5OGE3XHU2NzQzXHU5MTliXHU2Y2M5XHU1MTY4XHU3NWNhXHU2MmYzXHU3MmFjXHU1MjM4XHU1MjlkXHU3ZjNhXHU3MDk0XHU3NjM4XHU1Mzc0XHU5ZTRhXHU2OWI3''@;'; put 'put ''XHU3ODZlXHU5NmMwXHU4OGQ5XHU3ZmE0XHU3MTM2XHU3MWMzXHU1MTg5XHU2N2QzXHU3NGU0XHU1OGU0XHU2NTE4XHU1NmI3XHU4YmE5XHU5OTc2XHU2MjcwXHU3ZWQ1XHU2MGY5XHU3MGVkXHU1OGVjXHU0ZWMxXHU0ZWJhXHU1ZmNkXHU5N2U3XHU0ZWZiXHU4YmE0XHU1MjAzXHU1OThhXHU3''@;'; put 'put ''ZWFiXHU2MjU0XHU0ZWNkXHU2NWU1XHU2MjBlXHU4MzM4XHU4NGM5XHU4MzYzXHU4NzhkXHU3MTk0XHU2ZWI2XHU1YmI5XHU3ZWQyXHU1MTk3XHU2M2M5XHU2N2Q0XHU4MDg5XHU4MzM5XHU4ODE1XHU1MTEyXHU1YjdhXHU1OTgyXHU4ZmIxXHU0ZTczXHU2YzVkXHU1MTY1XHU4OTI1XHU4ZjZm''@;'; put 'put ''XHU5NjJlXHU4NTRhXHU3NDVlXHU5NTEwXHU5NWYwXHU2ZGE2XHU4MmU1XHU1ZjMxXHU2NDkyXHU2ZDEyXHU4NDI4XHU4MTZlXHU5Y2MzXHU1ODVlXHU4ZDViXHU0ZTA5XHU1M2MxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDBdW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihnZVtCWzIwMF1bRV1dPTUxMjAwK0UsTFs1MTIwMCtFXT1CWzIwMF1bRV0pO2ZvcihCWzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGYxZVx1NjU2M1x1Njg1MVx1NTVkM1x1NGUyN1x1NjQxNFx1OWE5YVx1NjI2Ylx1NWFjMlx1NzQ1Zlx1ODI3Mlx1NmRhOVx1NjhlZVx1NTBlN1x1ODM4ZVx1NzgwMlx1Njc0MFx1NTIzOVx1NmM5OVx1N2Vi''@;'; put 'put ''MVx1NTBiYlx1NTU2NVx1NzE1ZVx1N2I1Ylx1NjY1Mlx1NzNjYVx1ODJlYlx1Njc0OVx1NWM3MVx1NTIyMFx1NzE3ZFx1ODg2Ylx1OTVlYVx1OTY1NVx1NjRjNVx1OGQ2MVx1ODFiM1x1NTU4NFx1NmM1NVx1NjI0N1x1N2YyZVx1NTg5Mlx1NGYyNFx1NTU0Nlx1OGQ0Zlx1NjY0Y1x1NGUwYVx1''@;'; put 'put ''NWMxYVx1ODhmM1x1NjhhMlx1NjM0ZVx1N2EwZFx1NzBlN1x1ODI4ZFx1NTJmYVx1OTdmNlx1NWMxMVx1NTRlOFx1OTBiNVx1N2VjZFx1NTk2Mlx1OGQ0YVx1ODZjN1x1ODIwY1x1ODIwZFx1OGQ2Nlx1NjQ0NFx1NWMwNFx1NjE1MVx1NmQ4OVx1NzkzZVx1OGJiZVx1NzgzN1x1NzUzM1x1NTQ3''@;'; put 'put ''Ylx1NGYzOFx1OGVhYlx1NmRmMVx1NWEyMFx1N2VjNVx1Nzk1ZVx1NmM4OFx1NWJhMVx1NWE3Nlx1NzUxYVx1ODBiZVx1NjE0ZVx1NmUxN1x1NThmMFx1NzUxZlx1NzUyNVx1NzI3Mlx1NTM0N1x1N2VmM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwMV0ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMjAxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDFdW0VdXT01MTQ1NitFLExbNTE0NTYrRV09QlsyMDFdW0VdKTtmb3IoQlsyMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFcdTcyZWVcdTY1YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFcdTc3ZjNcdTYyZmVcdTY1ZjZcdTRl''@;'; put 'put ''YzBcdTk4ZGZcdTg2ODBcdTViOWVcdThiYzZcdTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYyZWRcdThhOTNcdTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkwMDJcdTRlZDVcdTRmOGRcdTkxY2Fc''@;'; put 'put ''dTk5NzBcdTZjMGZcdTVlMDJcdTYwNDNcdTViYTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2RcdTg1MmNcdTY3YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRcdTgyMTJcdTZkZDFcdTc1OGZcdTRl''@;'; put 'put ''NjZcdThkNGVcdTViNzBcdTcxOWZcdTg1YWZcdTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdhZDZcdTU4ODVcdTVlYjZcdTY1NzBcdTZmMzFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDJdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzIwMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjAyXVtFXV09NTE3MTIrRSxMWzUxNzEyK0VdPUJbMjAyXVtFXSk7Zm9yKEJbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDU1XHU1MjM3XHU4MDBkXHU2NDU0XHU4ODcwXHU3NTI5XHU1ZTA1XHU2ODEzXHU2MmY0XHU5NzFjXHU1M2NjXHU3MjNkXHU4YzAxXHU2YzM0XHU3NzYxXHU3''@;'; put 'put ''YTBlXHU1NDJlXHU3N2FjXHU5ODdhXHU4MjFjXHU4YmY0XHU3ODU1XHU2NzE0XHU3MGMxXHU2NWFmXHU2NDk1XHU1NjM2XHU2MDFkXHU3OWMxXHU1M2Y4XHU0ZTFkXHU2YjdiXHU4MDg2XHU1YmZhXHU1NWUzXHU1NmRiXHU0ZjNhXHU0ZjNjXHU5OTcyXHU1ZGYzXHU2NzdlXHU4MDM4XHU2MDAy''@;'; put 'put ''XHU5ODgyXHU5MDAxXHU1YjhiXHU4YmJjXHU4YmY1XHU2NDFjXHU4MjU4XHU2NGRlXHU1NWZkXHU4MmNmXHU5MTY1XHU0ZmQ3XHU3ZDIwXHU5MDFmXHU3YzlmXHU1MGYzXHU1ODUxXHU2ZWFmXHU1YmJmXHU4YmM5XHU4MDgzXHU5MTc4XHU4NDljXHU3Yjk3XHU4NjdkXHU5NjhiXHU5NjhmXHU3''@;'; put 'put ''ZWU1XHU5YWQzXHU3ODhlXHU1YzgxXHU3YTU3XHU5MDQyXHU5NmE3XHU3OTVmXHU1YjU5XHU2MzVmXHU3YjBiXHU4NGQxXHU2OGFkXHU1NTA2XHU3ZjI5XHU3NDEwXHU3ZDIyXHU5NTAxXHU2MjQwXHU1ODRjXHU0ZWQ2XHU1YjgzXHU1OTc5XHU1ODU0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMjAzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwM11bRV1dPTUxOTY4K0UsTFs1MTk2OCtFXT1CWzIwM11bRV0pO2ZvcihCWzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzM2ZFx1NjMxZVx1OGU0Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1''@;'; put 'put ''NTc0ZFx1NjQ0YVx1OGQyYVx1NzYyYlx1NmVlOVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1NjNhMlx1NTNmOVx1NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGVi''@;'; put 'put ''YVx1NmRjY1x1OGQ5Zlx1NzBlYlx1NjM4Zlx1NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3OVx1ODVlNFx1ODE3ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1''@;'; put 'put ''NGY1M1x1NjZmZlx1NTY4Zlx1NjBkNVx1NmQ5NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRmYlx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1NjMxMVx1Njc2MVx1OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjM1x1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLEU9MDtFIT1CWzIwNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDRdW0VdXT01MjIyNCtFLExbNTIyMjQrRV09QlsyMDRdW0VdKTtmb3IoQlsyMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjNDBcdTVlZjdcdTUwNWNcdTRlYWRcdTVlYWRcdTYzM2FcdTgyNDdcdTkwMWFcdTY4NTBcdTkxNmVcdTc3YjNc''@;'; put 'put ''dTU0MGNcdTk0ZGNcdTVmNjRcdTdhZTVcdTY4NzZcdTYzNDVcdTdiNTJcdTdlZGZcdTc1ZGJcdTUwNzdcdTYyOTVcdTU5MzRcdTkwMGZcdTUxZjhcdTc5YzNcdTdhODFcdTU2ZmVcdTVmOTJcdTkwMTRcdTZkODJcdTVjNjBcdTU3MWZcdTU0MTBcdTUxNTRcdTZlNGRcdTU2ZTJcdTYzYThcdTk4''@;'; put 'put ''OTNcdTgxN2ZcdTg3MTVcdTg5MmFcdTkwMDBcdTU0MWVcdTVjNmZcdTgxYzBcdTYyZDZcdTYyNThcdTgxMzFcdTllMzVcdTk2NDBcdTlhNmVcdTlhN2NcdTY5MmRcdTU5YTVcdTYyZDNcdTU1M2VcdTYzMTZcdTU0YzdcdTg2ZDlcdTZkM2NcdTVhMDNcdTc0ZTZcdTg4OWNcdTZiNmFcdTU5MTZc''@;'; put 'put ''dThjNGNcdTVmMmZcdTZlN2VcdTczYTlcdTk4N2RcdTRlMzhcdTcwZjdcdTViOGNcdTc4OTdcdTYzM2RcdTY2NWFcdTc2OTZcdTYwY2JcdTViOWJcdTVhNDlcdTRlMDdcdTgxNTVcdTZjNmFcdTczOGJcdTRlYTFcdTY3ODlcdTdmNTFcdTVmODBcdTY1ZmFcdTY3MWJcdTVmZDhcdTU5ODRcdTVh''@;'; put 'put ''MDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwNV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA1XVtFXV09NTI0ODArRSxMWzUyNDgwK0VdPUJbMjA1XVtFXSk7Zm9yKEJbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZGNkXHU1ZmFlXHU1MzcxXHU5N2U2XHU4ZmRkXHU2ODQ1XHU1NmY0XHU1NTJmXHU2MGRm''@;'; put 'put ''XHU0ZTNhXHU2ZjRkXHU3ZWY0XHU4MmM3XHU4NDBlXHU1OWQ0XHU0ZjFmXHU0ZjJhXHU1YzNlXHU3ZWFjXHU2NzJhXHU4NTFhXHU1NDczXHU3NTRmXHU4MGMzXHU1NTgyXHU5YjRmXHU0ZjRkXHU2ZTJkXHU4YzEzXHU1YzA5XHU2MTcwXHU1MzZiXHU3NjFmXHU2ZTI5XHU4NjhhXHU2NTg3XHU5''@;'; put 'put ''NWZiXHU3ZWI5XHU1NDNiXHU3YTMzXHU3ZDBhXHU5NWVlXHU1NWUxXHU3ZmMxXHU3NGVlXHU2MzFkXHU4NzE3XHU2ZGExXHU3YTlkXHU2MjExXHU2NWExXHU1MzY3XHU2M2UxXHU2YzgzXHU1ZGViXHU1NDVjXHU5NGE4XHU0ZTRjXHU2YzYxXHU4YmVjXHU1YzRiXHU2NWUwXHU4MjljXHU2OGE3''@;'; put 'put ''XHU1NDNlXHU1NDM0XHU2YmNiXHU2YjY2XHU0ZTk0XHU2MzQyXHU1MzQ4XHU4MjFlXHU0ZjBkXHU0ZmFlXHU1NzVlXHU2MjBhXHU5NmZlXHU2NjY0XHU3MjY5XHU1MmZmXHU1MmExXHU2MDlmXHU4YmVmXHU2NjE0XHU3MTk5XHU2NzkwXHU4OTdmXHU3ODUyXHU3N2ZkXHU2NjcwXHU1NjNiXHU1''@;'; put 'put ''NDM4XHU5NTIxXHU3MjdhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwNl1bRV1dPTUyNzM2K0UsTFs1MjczNitFXT1CWzIwNl1bRV0pO2ZvcihCWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2EwMFx1NjA2Zlx1NWUwY1x1NjA4OVx1ODE5ZFx1NTkxNVx1NjBk''@;'; put 'put ''Y1x1NzE4NFx1NzBlZlx1NmVhYVx1NmM1MFx1NzI4MFx1NmE4NFx1ODhhZFx1NWUyZFx1NGU2MFx1NWFiM1x1NTU5Y1x1OTRlM1x1NmQxN1x1N2NmYlx1OTY5OVx1NjIwZlx1N2VjNlx1Nzc4ZVx1ODY3ZVx1NTMyM1x1OTcxZVx1OGY5Nlx1NjY4N1x1NWNlMVx1NGZhMFx1NzJlZFx1NGUwYlx1''@;'; put 'put ''NTNhNlx1NTkwZlx1NTQxM1x1NjM4MFx1OTUyOFx1NTE0OFx1NGVkOVx1OWM5Y1x1N2VhNFx1NTRiOFx1OGQyNFx1ODg1NFx1ODIzN1x1OTVmMlx1NmQ4ZVx1NWYyNlx1NWFjY1x1NjYzZVx1OTY2OVx1NzNiMFx1NzMyZVx1NTNiZlx1ODE3YVx1OTk4NVx1N2ZhMVx1NWJhYVx1OTY3N1x1OTY1''@;'; put 'put ''MFx1N2ViZlx1NzZmOFx1NTNhMlx1OTU3Nlx1OTk5OVx1N2JiMVx1ODk0NFx1NmU1OFx1NGU2MVx1N2ZkNFx1Nzk2NVx1OGJlNlx1NjBmM1x1NTRjZFx1NGVhYlx1OTg3OVx1NWRmN1x1NmE2MVx1NTBjZlx1NTQxMVx1OGM2MVx1ODQyN1x1Nzg1ZFx1OTcwNFx1NTI0YVx1NTRlZVx1NTZhM1x1''@;'; put 'put ''OTUwMFx1NmQ4OFx1NWJiNVx1NmRjNlx1NjY1M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA3XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMDddW0VdXT01Mjk5MitFLExbNTI5OTIrRV09QlsyMDddW0VdKTtmb3IoQlsyMDhdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVjMGZcdTViNWRcdTY4MjFcdTgwOTZcdTU1''@;'; put 'put ''NzhcdTdiMTFcdTY1NDhcdTY5NTRcdTRlOWJcdTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUzNzhcdTg3ZjlcdTYxYzhcdTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgyYWZcdTk1MGNcdTZiMjNc''@;'; put 'put ''dThmOWJcdTY1YjBcdTVmZmJcdTVmYzNcdTRmZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJcdTVlNzhcdTY3NGZcdTYwMjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhcdTZjNzlcdTk2YzRcdTcx''@;'; put 'put ''OGFcdTRmMTFcdTRmZWVcdTdmOWVcdTY3M2RcdTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThiYjhcdTg0YzRcdTkxNTdcdTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdkNmVcdTVhN2ZcdTdlZWFc''@;'; put 'put ''dTdlZWRcdThmNjlcdTU1YTdcdTViYTNcdTYwYWNcdTY1Y2JcdTczODRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwOF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjA4XVtFXV09NTMyNDgrRSxMWzUzMjQ4K0VdPUJbMjA4XVtFXSk7Zm9y''@;'; put 'put ''KEJbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MDA5XHU3NjYzXHU3''@;'; put 'put ''NzI5XHU3ZWRhXHU5Nzc0XHU4NTliXHU1YjY2XHU3YTc0XHU5NmVhXHU4ODQwXHU1MmNiXHU3MThmXHU1ZmFhXHU2NWVjXHU4YmUyXHU1YmZiXHU5YTZmXHU1ZGUxXHU2Yjg5XHU2YzViXHU4YmFkXHU4YmFmXHU5MDBhXHU4ZmM1XHU1MzhiXHU2MmJjXHU5ZTI2XHU5ZTJkXHU1NDQwXHU0ZTJi''@;'; put 'put ''XHU4MmJkXHU3MjU5XHU4NjljXHU1ZDE2XHU4ODU5XHU2ZGFmXHU5NmM1XHU1NGQxXHU0ZTlhXHU4YmI2XHU3MTA5XHU1NGJkXHU5NjA5XHU3MGRmXHU2ZGY5XHU3NmQwXHU0ZTI1XHU3ODE0XHU4NzEyXHU1Y2E5XHU1ZWY2XHU4YTAwXHU5ODljXHU5NjBlXHU3MDhlXHU2Y2JmXHU1OTQ0XHU2''@;'; put 'put ''M2E5XHU3NzNjXHU4ODRkXHU2ZjE0XHU4MjczXHU1ODMwXHU3MWQ1XHU1MzhjXHU3ODFhXHU5NmMxXHU1NTAxXHU1ZjY2XHU3MTMwXHU1YmI0XHU4YzFhXHU5YThjXHU2YjgzXHU1OTJlXHU5ZTJmXHU3OWU3XHU2NzY4XHU2MjZjXHU0ZjZmXHU3NWExXHU3ZjhhXHU2ZDBiXHU5NjMzXHU2YzI3''@;'; put 'put ''XHU0ZWYwXHU3NWQyXHU1MTdiXHU2ODM3XHU2ZjNlXHU5MDgwXHU4MTcwXHU1OTk2XHU3NDc2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIwOV1bRV1dPTUzNTA0K0UsTFs1MzUwNCtFXT1C''@;'; put 'put ''WzIwOV1bRV0pO2ZvcihCWzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NjQ0N1x1NWMyN1x1OTA2NVx1N2E5MVx1OGMyM1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1ODAwMFx1NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1NTFiNlx1NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThm''@;'; put 'put ''OVx1NTMzYlx1NjNkNlx1OTRmMVx1NGY5ZFx1NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1NzlmYlx1NGVlYVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTllOFx1NWY1ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1''@;'; put 'put ''OTA5MVx1NWM3OVx1NGViZlx1NWY3OVx1ODFjNlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1NjEwZlx1NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1OGJlM1x1OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJi''@;'; put 'put ''N1x1OTdmM1x1OTYzNFx1NTlmYlx1NTQxZlx1OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYxNVx1OTY5MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTBdW0VdXT01Mzc2MCtF''@;'; put 'put ''LExbNTM3NjArRV09QlsyMTBdW0VdKTtmb3IoQlsyMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTUzNzBcdTgyZjFcdTZhMzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2YzhcdTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1YzhcdTVlYjhcdTk2''@;'; put 'put ''Y2RcdThlMGFcdTg2ZjlcdTU0OGZcdTZjZjNcdTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlcdTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFcdTkxYzlcdThiZjFc''@;'; put 'put ''dTUzYzhcdTVlN2NcdThmYzJcdTZkZTRcdTRlOGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRcdTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRlMGVcdTVjN2ZcdTc5YjlcdTViODdcdThiZWRcdTdmYmRcdTcz''@;'; put 'put ''ODlcdTU3ZGZcdTgyOGJcdTkwYzFcdTU0MDFcdTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxMV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjEx''@;'; put 'put ''XVtFXV09NTQwMTYrRSxMWzU0MDE2K0VdPUJbMjExXVtFXSk7Zm9yKEJbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDc0XHU1YmQzXHU4OGQ1XHU5ODg0XHU4YzZiXHU5YTZkXHU5ZTMzXHU2ZTBhXHU1MWE0XHU1MTQzXHU1N2EzXHU4ODgxXHU1MzlmXHU2M2Y0XHU4Zjk1XHU1NmVkXHU1NDU4XHU1NzA2XHU3MzNmXHU2ZTkwXHU3ZjE4XHU4ZmRjXHU4MmQxXHU2''@;'; put 'put ''MTNmXHU2MDI4XHU5NjYyXHU2NmYwXHU3ZWE2XHU4ZDhhXHU4ZGMzXHU5NGE1XHU1Y2IzXHU3Y2E0XHU2NzA4XHU2MGE2XHU5NjA1XHU4MDE4XHU0ZTkxXHU5MGU3XHU1MzAwXHU5NjY4XHU1MTQxXHU4ZmQwXHU4NTc0XHU5MTVkXHU2NjU1XHU5N2Y1XHU1YjU1XHU1MzFkXHU3ODM4XHU2NzQy''@;'; put 'put ''XHU2ODNkXHU1NGM5XHU3MDdlXHU1YmIwXHU4ZjdkXHU1MThkXHU1NzI4XHU1NGIxXHU2NTEyXHU2NjgyXHU4ZDVlXHU4ZDQzXHU4MTBmXHU4NDZjXHU5MDZkXHU3Y2RmXHU1MWZmXHU4NWZiXHU2N2EzXHU2NWU5XHU2ZmExXHU4NmE0XHU4ZTgxXHU1NjZhXHU5MDIwXHU3NjgyXHU3MDc2XHU3''@;'; put 'put ''MWU1XHU4ZDIzXHU2MmU5XHU1MjE5XHU2Y2ZkXHU4ZDNjXHU2MDBlXHU1ODllXHU2MThlXHU2NmZlXHU4ZDYwXHU2MjRlXHU1NWIzXHU2ZTIzXHU2NzJkXHU4ZjY3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTJdW0VdLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihnZVtCWzIxMl1bRV1dPTU0MjcyK0UsTFs1NDI3MitFXT1CWzIxMl1bRV0pO2ZvcihCWzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1NjU4Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1''@;'; put 'put ''NjVhOVx1OGY5N1x1NWQyZFx1NWM1NVx1ODYzOFx1NjgwOFx1NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2FlMFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4Y1x1NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYy''@;'; put 'put ''ZFx1NjI3ZVx1NmNiY1x1OGQ3NVx1NzE2N1x1N2Y2OVx1NTE0Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1OGZkOVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1''@;'; put 'put ''Njc5NVx1NzViOVx1OGJjYVx1OTcwN1x1NjMyZlx1OTU0N1x1OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2M1x1NjUzZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEzXVtF''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTNdW0VdXT01NDUyOCtFLExbNTQ1MjgrRV09QlsyMTNdW0VdKTtmb3IoQlsyMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVlMjdcdTc1YzdcdTkwZDFcdThiYzFcdTgyOWRcdTY3OWRcdTY1MmZcdTU0MzFcdTg3MThcdTc3ZTVcdTgwYTJcdTgxMDJcdTZjNDFcdTRlNGJcdTdlYzdcdTgwNGNcdTc2ZjRcdTY5MGRcdTZiOTZc''@;'; put 'put ''dTYyNjdcdTUwM2NcdTRmODRcdTU3NDBcdTYzMDdcdTZiNjJcdThkYmVcdTUzZWFcdTY1ZThcdTdlYjhcdTVmZDdcdTYzMWFcdTYzYjdcdTgxZjNcdTgxZjRcdTdmNmVcdTVlMWNcdTVjZDlcdTUyMzZcdTY2N2FcdTc5ZTlcdTdhMWFcdThkMjhcdTcwOTlcdTc1ZDRcdTZlZGVcdTZjYmJcdTdh''@;'; put 'put ''OTJcdTRlMmRcdTc2YzVcdTVmZTBcdTk0OWZcdTg4NzdcdTdlYzhcdTc5Y2RcdTgwYmZcdTkxY2RcdTRlZjJcdTRmMTdcdTgyMWZcdTU0NjhcdTVkZGVcdTZkMzJcdThiY2NcdTdjYTVcdThmNzRcdTgwOThcdTVlMWFcdTU0OTJcdTc2YjFcdTViOTlcdTY2M2NcdTlhYTRcdTczZTBcdTY4MmFc''@;'; put 'put ''dTg2ZGJcdTY3MzFcdTczMmFcdThiZjhcdThiZGJcdTkwMTBcdTdhZjlcdTcwZGJcdTcxNmVcdTYyYzRcdTc3YTlcdTU2MzFcdTRlM2JcdTg0NTdcdTY3ZjFcdTUyYTlcdTg2YzBcdThkMmVcdTk0ZjhcdTdiNTFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTRdLmxlbmd0aDsrK0UpNjU1''@;'; put 'put ''MzMhPT1CWzIxNF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE0XVtFXV09NTQ3ODQrRSxMWzU0Nzg0K0VdPUJbMjE0XVtFXSk7Zm9yKEJbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjRmXHU2Y2U4XHU3OTVkXHU5YTdiXHU2MjkzXHU3MjJhXHU2MmZkXHU0ZTEzXHU3ODE2XHU4ZjZjXHU2NGIwXHU4ZDVhXHU3YmM2XHU2ODY5XHU1ZTg0XHU4OGM1XHU1OTg2''@;'; put 'put ''XHU2NDllXHU1OGVlXHU3MmI2XHU2OTBlXHU5NTI1XHU4ZmZkXHU4ZDU4XHU1NzYwXHU3ZjAwXHU4YzA2XHU1MWM2XHU2MzQ5XHU2MmQ5XHU1MzUzXHU2ODRjXHU3NDIyXHU4MzAxXHU5MTRjXHU1NTQ0XHU3NzQwXHU3MDdjXHU2ZDRhXHU1MTc5XHU1NGE4XHU4ZDQ0XHU1OWZmXHU2ZWNiXHU2''@;'; put 'put ''ZGM0XHU1YjVjXHU3ZDJiXHU0ZWQ0XHU3YzdkXHU2ZWQzXHU1YjUwXHU4MWVhXHU2ZTBkXHU1YjU3XHU5YjAzXHU2OGQ1XHU4ZTJhXHU1Yjk3XHU3ZWZjXHU2MDNiXHU3ZWI1XHU5MGI5XHU4ZDcwXHU1OTRmXHU2M2NkXHU3OWRmXHU4ZGIzXHU1MzUyXHU2NWNmXHU3OTU2XHU4YmM1XHU5NjNi''@;'; put 'put ''XHU3ZWM0XHU5NGJiXHU3ZTgyXHU1NjM0XHU5MTg5XHU2NzAwXHU3ZjZhXHU1YzBhXHU5MDc1XHU2NjI4XHU1ZGU2XHU0ZjUwXHU2N2RlXHU1MDVhXHU0ZjVjXHU1NzUwXHU1ZWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE1XS5s''@;'; put 'put ''ZW5ndGg7KytFKTY1NTMzIT09QlsyMTVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxNV1bRV1dPTU1MDQwK0UsTFs1NTA0MCtFXT1CWzIxNV1bRV0pO2ZvcihCWzIxNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU4ZFx1NGUwY1x1NTE0MFx1NGUxMFx1NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUz''@;'; put 'put ''Zlx1NTMxNVx1NGU0N1x1NTkyZFx1NzIzYlx1NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1NGU1Y1x1NGU2OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1''@;'; put 'put ''NTNhZVx1OTc2NVx1OGQ1ZFx1NTMxYVx1NTNmNVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIzM1x1NTIzZlx1NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5''@;'; put 'put ''M1x1NTE4Mlx1N2Y1NFx1NGViYlx1NGVjM1x1NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1NGYyNVx1NGYyN1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZFx1ZmZmZCIuc3BsaXQoIiIpLEU9''@;'; put 'put ''MDtFIT1CWzIxNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTZdW0VdXT01NTI5NitFLExbNTUyOTYrRV09QlsyMTZdW0VdKTtmb3IoQlsyMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmNWZcdTRmNTdcdTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRmN2JcdTRm''@;'; put 'put ''YWFcdTRmN2NcdTRmYWNcdTRmOTRcdTRmZTZcdTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRmZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUwMmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2VcdTUwNDNc''@;'; put 'put ''dTUwNTVcdTUwNDhcdTUwNGVcdTUwNmNcdTUwN2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFcdTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJcdTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVkZmRcdTll''@;'; put 'put ''YzlcdTk5OThcdTUxODFcdTU5MTRcdTUyZjlcdTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgxMTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmNcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxFPTA7RSE9QlsyMTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxN11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjE3XVtFXV09NTU1NTIrRSxMWzU1NTUyK0VdPUJbMjE3XVtFXSk7Zm9yKEJbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MWM3XHU1MTk2XHU1MWEyXHU1MWE1XHU4YmEwXHU4YmE2XHU4YmE3XHU4YmFhXHU4YmI0XHU4YmI1XHU4''@;'; put 'put ''YmI3XHU4YmMyXHU4YmMzXHU4YmNiXHU4YmNmXHU4YmNlXHU4YmQyXHU4YmQzXHU4YmQ0XHU4YmQ2XHU4YmQ4XHU4YmQ5XHU4YmRjXHU4YmRmXHU4YmUwXHU4YmU0XHU4YmU4XHU4YmU5XHU4YmVlXHU4YmYwXHU4YmYzXHU4YmY2XHU4YmY5XHU4YmZjXHU4YmZmXHU4YzAwXHU4YzAyXHU4YzA0''@;'; put 'put ''XHU4YzA3XHU4YzBjXHU4YzBmXHU4YzExXHU4YzEyXHU4YzE0XHU4YzE1XHU4YzE2XHU4YzE5XHU4YzFiXHU4YzE4XHU4YzFkXHU4YzFmXHU4YzIwXHU4YzIxXHU4YzI1XHU4YzI3XHU4YzJhXHU4YzJiXHU4YzJlXHU4YzJmXHU4YzMyXHU4YzMzXHU4YzM1XHU4YzM2XHU1MzY5XHU1MzdhXHU5''@;'; put 'put ''NjFkXHU5NjIyXHU5NjIxXHU5NjMxXHU5NjJhXHU5NjNkXHU5NjNjXHU5NjQyXHU5NjQ5XHU5NjU0XHU5NjVmXHU5NjY3XHU5NjZjXHU5NjcyXHU5Njc0XHU5Njg4XHU5NjhkXHU5Njk3XHU5NmIwXHU5MDk3XHU5MDliXHU5MDlkXHU5MDk5XHU5MGFjXHU5MGExXHU5MGI0XHU5MGIzXHU5MGI2''@;'; put 'put ''XHU5MGJhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMThdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIxOF1bRV1dPTU1ODA4K0UsTFs1NTgwOCtFXT1CWzIxOF1bRV0pO2ZvcihCWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTBiOFx1OTBiMFx1OTBjZlx1OTBjNVx1OTBiZVx1OTBkMFx1OTBjNFx1OTBjN1x1''@;'; put 'put ''OTBkM1x1OTBlNlx1OTBlMlx1OTBkY1x1OTBkN1x1OTBkYlx1OTBlYlx1OTBlZlx1OTBmZVx1OTEwNFx1OTEyMlx1OTExZVx1OTEyM1x1OTEzMVx1OTEyZlx1OTEzOVx1OTE0M1x1OTE0Nlx1NTIwZFx1NTk0Mlx1NTJhMlx1NTJhY1x1NTJhZFx1NTJiZVx1NTRmZlx1NTJkMFx1NTJkNlx1NTJm''@;'; put 'put ''MFx1NTNkZlx1NzFlZVx1NzdjZFx1NWVmNFx1NTFmNVx1NTFmY1x1OWIyZlx1NTNiNlx1NWYwMVx1NzU1YVx1NWRlZlx1NTc0Y1x1NTdhOVx1NTdhMVx1NTg3ZVx1NThiY1x1NThjNVx1NThkMVx1NTcyOVx1NTcyY1x1NTcyYVx1NTczM1x1NTczOVx1NTcyZVx1NTcyZlx1NTc1Y1x1NTczYlx1''@;'; put 'put ''NTc0Mlx1NTc2OVx1NTc4NVx1NTc2Ylx1NTc4Nlx1NTc3Y1x1NTc3Ylx1NTc2OFx1NTc2ZFx1NTc3Nlx1NTc3M1x1NTdhZFx1NTdhNFx1NTc4Y1x1NTdiMlx1NTdjZlx1NTdhN1x1NTdiNFx1NTc5M1x1NTdhMFx1NTdkNVx1NTdkOFx1NTdkYVx1NTdkOVx1NTdkMlx1NTdiOFx1NTdmNFx1NTdl''@;'; put 'put ''Zlx1NTdmOFx1NTdlNFx1NTdkZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE5XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMTldW0VdXT01NjA2NCtFLExbNTYwNjQrRV09QlsyMTldW0VdKTtmb3IoQlsyMjBdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU4MGJcdTU4MGRcdTU3ZmRcdTU3ZWRcdTU4MDBcdTU4MWVc''@;'; put 'put ''dTU4MTlcdTU4NDRcdTU4MjBcdTU4NjVcdTU4NmNcdTU4ODFcdTU4ODlcdTU4OWFcdTU4ODBcdTk5YThcdTlmMTlcdTYxZmZcdTgyNzlcdTgyN2RcdTgyN2ZcdTgyOGZcdTgyOGFcdTgyYThcdTgyODRcdTgyOGVcdTgyOTFcdTgyOTdcdTgyOTlcdTgyYWJcdTgyYjhcdTgyYmVcdTgyYjBcdTgy''@;'; put 'put ''YzhcdTgyY2FcdTgyZTNcdTgyOThcdTgyYjdcdTgyYWVcdTgyY2JcdTgyY2NcdTgyYzFcdTgyYTlcdTgyYjRcdTgyYTFcdTgyYWFcdTgyOWZcdTgyYzRcdTgyY2VcdTgyYTRcdTgyZTFcdTgzMDlcdTgyZjdcdTgyZTRcdTgzMGZcdTgzMDdcdTgyZGNcdTgyZjRcdTgyZDJcdTgyZDhcdTgzMGNc''@;'; put 'put ''dTgyZmJcdTgyZDNcdTgzMTFcdTgzMWFcdTgzMDZcdTgzMTRcdTgzMTVcdTgyZTBcdTgyZDVcdTgzMWNcdTgzNTFcdTgzNWJcdTgzNWNcdTgzMDhcdTgzOTJcdTgzM2NcdTgzMzRcdTgzMzFcdTgzOWJcdTgzNWVcdTgzMmZcdTgzNGZcdTgzNDdcdTgzNDNcdTgzNWZcdTgzNDBcdTgzMTdcdTgz''@;'; put 'put ''NjBcdTgzMmRcdTgzM2FcdTgzMzNcdTgzNjZcdTgzNjVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjIwXVtFXV09NTYzMjArRSxMWzU2MzIwK0VdPUJbMjIwXVtFXSk7Zm9yKEJbMjIxXT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MzY4XHU4MzFiXHU4MzY5XHU4MzZj''@;'; put 'put ''XHU4MzZhXHU4MzZkXHU4MzZlXHU4M2IwXHU4Mzc4XHU4M2IzXHU4M2I0XHU4M2EwXHU4M2FhXHU4MzkzXHU4MzljXHU4Mzg1XHU4MzdjXHU4M2I2XHU4M2E5XHU4MzdkXHU4M2I4XHU4MzdiXHU4Mzk4XHU4MzllXHU4M2E4XHU4M2JhXHU4M2JjXHU4M2MxXHU4NDAxXHU4M2U1XHU4M2Q4XHU1''@;'; put 'put ''ODA3XHU4NDE4XHU4NDBiXHU4M2RkXHU4M2ZkXHU4M2Q2XHU4NDFjXHU4NDM4XHU4NDExXHU4NDA2XHU4M2Q0XHU4M2RmXHU4NDBmXHU4NDAzXHU4M2Y4XHU4M2Y5XHU4M2VhXHU4M2M1XHU4M2MwXHU4NDI2XHU4M2YwXHU4M2UxXHU4NDVjXHU4NDUxXHU4NDVhXHU4NDU5XHU4NDczXHU4NDg3''@;'; put 'put ''XHU4NDg4XHU4NDdhXHU4NDg5XHU4NDc4XHU4NDNjXHU4NDQ2XHU4NDY5XHU4NDc2XHU4NDhjXHU4NDhlXHU4NDMxXHU4NDZkXHU4NGMxXHU4NGNkXHU4NGQwXHU4NGU2XHU4NGJkXHU4NGQzXHU4NGNhXHU4NGJmXHU4NGJhXHU4NGUwXHU4NGExXHU4NGI5XHU4NGI0XHU4NDk3XHU4NGU1XHU4''@;'; put 'put ''NGUzXHU4NTBjXHU3NTBkXHU4NTM4XHU4NGYwXHU4NTM5XHU4NTFmXHU4NTNhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjFdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyMV1bRV1dPTU2NTc2K0UsTFs1NjU3NitFXT1CWzIyMV1bRV0p''@;'; put 'put ''O2ZvcihCWzIyMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU1Nlx1ODUz''@;'; put 'put ''Ylx1ODRmZlx1ODRmY1x1ODU1OVx1ODU0OFx1ODU2OFx1ODU2NFx1ODU1ZVx1ODU3YVx1NzdhMlx1ODU0M1x1ODU3Mlx1ODU3Ylx1ODVhNFx1ODVhOFx1ODU4N1x1ODU4Zlx1ODU3OVx1ODVhZVx1ODU5Y1x1ODU4NVx1ODViOVx1ODViN1x1ODViMFx1ODVkM1x1ODVjMVx1ODVkY1x1ODVmZlx1''@;'; put 'put ''ODYyN1x1ODYwNVx1ODYyOVx1ODYxNlx1ODYzY1x1NWVmZVx1NWYwOFx1NTkzY1x1NTk0MVx1ODAzN1x1NTk1NVx1NTk1YVx1NTk1OFx1NTMwZlx1NWMyMlx1NWMyNVx1NWMyY1x1NWMzNFx1NjI0Y1x1NjI2YVx1NjI5Zlx1NjJiYlx1NjJjYVx1NjJkYVx1NjJkN1x1NjJlZVx1NjMyMlx1NjJm''@;'; put 'put ''Nlx1NjMzOVx1NjM0Ylx1NjM0M1x1NjNhZFx1NjNmNlx1NjM3MVx1NjM3YVx1NjM4ZVx1NjNiNFx1NjM2ZFx1NjNhY1x1NjM4YVx1NjM2OVx1NjNhZVx1NjNiY1x1NjNmMlx1NjNmOFx1NjNlMFx1NjNmZlx1NjNjNFx1NjNkZVx1NjNjZVx1NjQ1Mlx1NjNjNlx1NjNiZVx1NjQ0NVx1NjQ0MVx1''@;'; put 'put ''NjQwYlx1NjQxYlx1NjQyMFx1NjQwY1x1NjQyNlx1NjQyMVx1NjQ1ZVx1NjQ4NFx1NjQ2ZFx1NjQ5Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIyXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjJdW0VdXT01NjgzMitFLExbNTY4MzIr''@;'; put 'put ''RV09QlsyMjJdW0VdKTtmb3IoQlsyMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTY0N2FcdTY0YjdcdTY0YjhcdTY0OTlcdTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVmMTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUzZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJc''@;'; put 'put ''dTU0NTJcdTU0NTNcdTU0NTRcdTU0NTZcdTU0NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJcdTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRcdTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0''@;'; put 'put ''YTZcdTU0ZDNcdTU0ZDRcdTU0NzJcdTU0YTNcdTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFc''@;'; put 'put ''dTU1MjdcdTU1MmFcdTU1NjdcdTU1OGZcdTU1YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2NcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyM11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjIzXVtFXV09NTcw''@;'; put 'put ''ODgrRSxMWzU3MDg4K0VdPUJbMjIzXVtFXSk7Zm9yKEJbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU1NTM3XHU1NTU2XHU1NTc1XHU1NTc2XHU1NTc3XHU1NTMzXHU1NTMwXHU1NTVjXHU1NThiXHU1NWQyXHU1NTgzXHU1NWIxXHU1NWI5XHU1NTg4XHU1NTgxXHU1NTlmXHU1NTdlXHU1NWQ2XHU1NTkxXHU1NTdiXHU1NWRmXHU1NWJkXHU1NWJlXHU1NTk0XHU1NTk5''@;'; put 'put ''XHU1NWVhXHU1NWY3XHU1NWM5XHU1NjFmXHU1NWQxXHU1NWViXHU1NWVjXHU1NWQ0XHU1NWU2XHU1NWRkXHU1NWM0XHU1NWVmXHU1NWU1XHU1NWYyXHU1NWYzXHU1NWNjXHU1NWNkXHU1NWU4XHU1NWY1XHU1NWU0XHU4Zjk0XHU1NjFlXHU1NjA4XHU1NjBjXHU1NjAxXHU1NjI0XHU1NjIzXHU1''@;'; put 'put ''NWZlXHU1NjAwXHU1NjI3XHU1NjJkXHU1NjU4XHU1NjM5XHU1NjU3XHU1NjJjXHU1NjRkXHU1NjYyXHU1NjU5XHU1NjVjXHU1NjRjXHU1NjU0XHU1Njg2XHU1NjY0XHU1NjcxXHU1NjZiXHU1NjdiXHU1NjdjXHU1Njg1XHU1NjkzXHU1NmFmXHU1NmQ0XHU1NmQ3XHU1NmRkXHU1NmUxXHU1NmY1''@;'; put 'put ''XHU1NmViXHU1NmY5XHU1NmZmXHU1NzA0XHU1NzBhXHU1NzA5XHU1NzFjXHU1ZTBmXHU1ZTE5XHU1ZTE0XHU1ZTExXHU1ZTMxXHU1ZTNiXHU1ZTNjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjRdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtC''@;'; put 'put ''WzIyNF1bRV1dPTU3MzQ0K0UsTFs1NzM0NCtFXT1CWzIyNF1bRV0pO2ZvcihCWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWUzN1x1NWU0NFx1NWU1NFx1NWU1Ylx1NWU1ZVx1NWU2MVx1NWM4Y1x1NWM3YVx1NWM4ZFx1NWM5MFx1NWM5Nlx1NWM4OFx1NWM5OFx1NWM5OVx1NWM5MVx1NWM5YVx1NWM5Y1x1NWNiNVx1NWNhMlx1NWNiZFx1NWNhY1x1NWNhYlx1NWNi''@;'; put 'put ''MVx1NWNhM1x1NWNjMVx1NWNiN1x1NWNjNFx1NWNkMlx1NWNlNFx1NWNjYlx1NWNlNVx1NWQwMlx1NWQwM1x1NWQyN1x1NWQyNlx1NWQyZVx1NWQyNFx1NWQxZVx1NWQwNlx1NWQxYlx1NWQ1OFx1NWQzZVx1NWQzNFx1NWQzZFx1NWQ2Y1x1NWQ1Ylx1NWQ2Zlx1NWQ1ZFx1NWQ2Ylx1NWQ0Ylx1''@;'; put 'put ''NWQ0YVx1NWQ2OVx1NWQ3NFx1NWQ4Mlx1NWQ5OVx1NWQ5ZFx1OGM3M1x1NWRiN1x1NWRjNVx1NWY3M1x1NWY3N1x1NWY4Mlx1NWY4N1x1NWY4OVx1NWY4Y1x1NWY5NVx1NWY5OVx1NWY5Y1x1NWZhOFx1NWZhZFx1NWZiNVx1NWZiY1x1ODg2Mlx1NWY2MVx1NzJhZFx1NzJiMFx1NzJiNFx1NzJi''@;'; put 'put ''N1x1NzJiOFx1NzJjM1x1NzJjMVx1NzJjZVx1NzJjZFx1NzJkMlx1NzJlOFx1NzJlZlx1NzJlOVx1NzJmMlx1NzJmNFx1NzJmN1x1NzMwMVx1NzJmM1x1NzMwM1x1NzJmYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI1XVtFXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYoZ2VbQlsyMjVdW0VdXT01NzYwMCtFLExbNTc2MDArRV09QlsyMjVdW0VdKTtmb3IoQlsyMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlcdTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTcz''@;'; put 'put ''N2VcdTgyMWJcdTU5MjVcdTk4ZTdcdTU5MjRcdTU5MDJcdTk5NjNcdTk5NjdcdTk5NjhcdTk5NjlcdTk5NmFcdTk5NmJcdTk5NmNcdTk5NzRcdTk5NzdcdTk5N2RcdTk5ODBcdTk5ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFc''@;'; put 'put ''dTVlOGJcdTVlOTZcdTVlYTVcdTVlYTBcdTVlYjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVlZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRcdTVmYzlcdTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVm''@;'; put 'put ''ZWFcdTVmZWRcdTVmZjhcdTYwMTlcdTYwMzVcdTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlcdTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYwN2JcdTYwN2FcdTYwNDJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIy''@;'; put 'put ''Nl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI2XVtFXV09NTc4NTYrRSxMWzU3ODU2K0VdPUJbMjI2XVtFXSk7Zm9yKEJbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDZhXHU2MDdkXHU2MDk2XHU2MDlhXHU2MGFkXHU2MDlkXHU2MDgzXHU2MDkyXHU2MDhjXHU2MDliXHU2MGVjXHU2MGJiXHU2MGIxXHU2MGRkXHU2MGQ4XHU2MGM2XHU2MGRhXHU2MGI0XHU2''@;'; put 'put ''MTIwXHU2MTI2XHU2MTE1XHU2MTIzXHU2MGY0XHU2MTAwXHU2MTBlXHU2MTJiXHU2MTRhXHU2MTc1XHU2MWFjXHU2MTk0XHU2MWE3XHU2MWI3XHU2MWQ0XHU2MWY1XHU1ZmRkXHU5NmIzXHU5NWU5XHU5NWViXHU5NWYxXHU5NWYzXHU5NWY1XHU5NWY2XHU5NWZjXHU5NWZlXHU5NjAzXHU5NjA0''@;'; put 'put ''XHU5NjA2XHU5NjA4XHU5NjBhXHU5NjBiXHU5NjBjXHU5NjBkXHU5NjBmXHU5NjEyXHU5NjE1XHU5NjE2XHU5NjE3XHU5NjE5XHU5NjFhXHU0ZTJjXHU3MjNmXHU2MjE1XHU2YzM1XHU2YzU0XHU2YzVjXHU2YzRhXHU2Y2EzXHU2Yzg1XHU2YzkwXHU2Yzk0XHU2YzhjXHU2YzY4XHU2YzY5XHU2''@;'; put 'put ''Yzc0XHU2Yzc2XHU2Yzg2XHU2Y2E5XHU2Y2QwXHU2Y2Q0XHU2Y2FkXHU2Y2Y3XHU2Y2Y4XHU2Y2YxXHU2Y2Q3XHU2Y2IyXHU2Y2UwXHU2Y2Q2XHU2Y2ZhXHU2Y2ViXHU2Y2VlXHU2Y2IxXHU2Y2QzXHU2Y2VmXHU2Y2ZlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI3XS5sZW5ndGg7KytF''@;'; put 'put ''KTY1NTMzIT09QlsyMjddW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIyN11bRV1dPTU4MTEyK0UsTFs1ODExMitFXT1CWzIyN11bRV0pO2ZvcihCWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQzOVx1NmQyN1x1NmQwY1x1NmQ0M1x1NmQ0OFx1NmQwN1x1NmQwNFx1NmQxOVx1NmQwZVx1NmQyYlx1NmQ0ZFx1NmQyZVx1NmQzNVx1NmQxYVx1NmQ0Zlx1NmQ1Mlx1''@;'; put 'put ''NmQ1NFx1NmQzM1x1NmQ5MVx1NmQ2Zlx1NmQ5ZVx1NmRhMFx1NmQ1ZVx1NmQ5M1x1NmQ5NFx1NmQ1Y1x1NmQ2MFx1NmQ3Y1x1NmQ2M1x1NmUxYVx1NmRjN1x1NmRjNVx1NmRkZVx1NmUwZVx1NmRiZlx1NmRlMFx1NmUxMVx1NmRlNlx1NmRkZFx1NmRkOVx1NmUxNlx1NmRhYlx1NmUwY1x1NmRh''@;'; put 'put ''ZVx1NmUyYlx1NmU2ZVx1NmU0ZVx1NmU2Ylx1NmViMlx1NmU1Zlx1NmU4Nlx1NmU1M1x1NmU1NFx1NmUzMlx1NmUyNVx1NmU0NFx1NmVkZlx1NmViMVx1NmU5OFx1NmVlMFx1NmYyZFx1NmVlMlx1NmVhNVx1NmVhN1x1NmViZFx1NmViYlx1NmViN1x1NmVkN1x1NmViNFx1NmVjZlx1NmU4Zlx1''@;'; put 'put ''NmVjMlx1NmU5Zlx1NmY2Mlx1NmY0Nlx1NmY0N1x1NmYyNFx1NmYxNVx1NmVmOVx1NmYyZlx1NmYzNlx1NmY0Ylx1NmY3NFx1NmYyYVx1NmYwOVx1NmYyOVx1NmY4OVx1NmY4ZFx1NmY4Y1x1NmY3OFx1NmY3Mlx1NmY3Y1x1NmY3YVx1NmZkMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIy''@;'; put 'put ''OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI4XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMjhdW0VdXT01ODM2OCtFLExbNTgzNjgrRV09QlsyMjhdW0VdKTtmb3IoQlsyMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmYzlcdTZmYTdcdTZmYjlcdTZmYjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcwMzlc''@;'; put 'put ''dTcwMzVcdTcwNGZcdTcwNWVcdTViODBcdTViODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdcdThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNcdThm''@;'; put 'put ''ZThcdTkwMDVcdTkwMDRcdTkwMGJcdTkwMjZcdTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkwNjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkwOGJc''@;'; put 'put ''dTVmNTBcdTVmNTdcdTVmNTZcdTVmNThcdTVjM2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2NcdTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTNcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxFPTA7RSE9QlsyMjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyOV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjI5XVtFXV09NTg2MjQrRSxMWzU4NjI0K0VdPUJbMjI5XVtFXSk7Zm9yKEJbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1OTk3XHU1OWNhXHU1OWFiXHU1OTllXHU1OWE0XHU1OWQyXHU1OWIyXHU1OWFmXHU1OWQ3XHU1OWJlXHU1YTA1XHU1YTA2''@;'; put 'put ''XHU1OWRkXHU1YTA4XHU1OWUzXHU1OWQ4XHU1OWY5XHU1YTBjXHU1YTA5XHU1YTMyXHU1YTM0XHU1YTExXHU1YTIzXHU1YTEzXHU1YTQwXHU1YTY3XHU1YTRhXHU1YTU1XHU1YTNjXHU1YTYyXHU1YTc1XHU4MGVjXHU1YWFhXHU1YTliXHU1YTc3XHU1YTdhXHU1YWJlXHU1YWViXHU1YWIyXHU1''@;'; put 'put ''YWQyXHU1YWQ0XHU1YWI4XHU1YWUwXHU1YWUzXHU1YWYxXHU1YWQ2XHU1YWU2XHU1YWQ4XHU1YWRjXHU1YjA5XHU1YjE3XHU1YjE2XHU1YjMyXHU1YjM3XHU1YjQwXHU1YzE1XHU1YzFjXHU1YjVhXHU1YjY1XHU1YjczXHU1YjUxXHU1YjUzXHU1YjYyXHU5YTc1XHU5YTc3XHU5YTc4XHU5YTdh''@;'; put 'put ''XHU5YTdmXHU5YTdkXHU5YTgwXHU5YTgxXHU5YTg1XHU5YTg4XHU5YThhXHU5YTkwXHU5YTkyXHU5YTkzXHU5YTk2XHU5YTk4XHU5YTliXHU5YTljXHU5YTlkXHU5YTlmXHU5YWEwXHU5YWEyXHU5YWEzXHU5YWE1XHU5YWE3XHU3ZTlmXHU3ZWExXHU3ZWEzXHU3ZWE1XHU3ZWE4XHU3ZWE5XHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzBdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzMF1bRV1dPTU4ODgwK0UsTFs1ODg4MCtFXT1CWzIzMF1bRV0pO2ZvcihCWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2VhZFx1N2ViMFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2Vk''@;'; put 'put ''MFx1N2VkNFx1N2VkN1x1N2VkYlx1N2VlMFx1N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2VmYVx1N2VmYlx1N2VmZVx1N2YwMVx1N2YwMlx1N2YwM1x1N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1''@;'; put 'put ''N2YxOVx1N2YxY1x1N2YxYlx1N2YxZlx1N2YyMVx1N2YyMlx1N2YyM1x1N2YyNFx1N2YyNVx1N2YyNlx1N2YyN1x1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZlx1N2YzMFx1N2YzMVx1N2YzMlx1N2YzM1x1N2YzNVx1NWU3YVx1NzU3Zlx1NWRkYlx1NzUzZVx1OTA5NVx1NzM4ZVx1NzM5''@;'; put 'put ''MVx1NzNhZVx1NzNhMlx1NzM5Zlx1NzNjZlx1NzNjMlx1NzNkMVx1NzNiN1x1NzNiM1x1NzNjMFx1NzNjOVx1NzNjOFx1NzNlNVx1NzNkOVx1OTg3Y1x1NzQwYVx1NzNlOVx1NzNlN1x1NzNkZVx1NzNiYVx1NzNmMlx1NzQwZlx1NzQyYVx1NzQ1Ylx1NzQyNlx1NzQyNVx1NzQyOFx1NzQzMFx1''@;'; put 'put ''NzQyZVx1NzQyY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMxXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzFdW0VdXT01OTEzNitFLExbNTkxMzYrRV09QlsyMzFdW0VdKTtmb3IoQlsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0''@;'; put 'put ''NzdcdTc0NmRcdTc0N2VcdTc0OWNcdTc0OGVcdTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJcdTc0YmFcdTk3ZWFcdTk3ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNc''@;'; put 'put ''dTY3OThcdTY3YTdcdTY3NzVcdTY3YThcdTY3OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3YjBcdTY4MGNcdTY3ZDlcdTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3''@;'; put 'put ''ZmRcdTY4MzJcdTY4MzNcdTY4NjBcdTY4NjFcdTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4NjdcdTY4NDBcdTY4M2VcdTY4NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVc''@;'; put 'put ''dTY4ZmNcdTY5MWZcdTY5MjBcdTY4ZjlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMl1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjMyXVtFXV09NTkzOTIrRSxMWzU5MzkyK0VdPUJbMjMyXVtFXSk7Zm9yKEJbMjMzXT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTI0XHU2OGYwXHU2OTBiXHU2OTAxXHU2OTU3XHU2''@;'; put 'put ''OGUzXHU2OTEwXHU2OTcxXHU2OTM5XHU2OTYwXHU2OTQyXHU2OTVkXHU2OTg0XHU2OTZiXHU2OTgwXHU2OTk4XHU2OTc4XHU2OTM0XHU2OWNjXHU2OTg3XHU2OTg4XHU2OWNlXHU2OTg5XHU2OTY2XHU2OTYzXHU2OTc5XHU2OTliXHU2OWE3XHU2OWJiXHU2OWFiXHU2OWFkXHU2OWQ0XHU2OWIx''@;'; put 'put ''XHU2OWMxXHU2OWNhXHU2OWRmXHU2OTk1XHU2OWUwXHU2OThkXHU2OWZmXHU2YTJmXHU2OWVkXHU2YTE3XHU2YTE4XHU2YTY1XHU2OWYyXHU2YTQ0XHU2YTNlXHU2YWEwXHU2YTUwXHU2YTViXHU2YTM1XHU2YThlXHU2YTc5XHU2YTNkXHU2YTI4XHU2YTU4XHU2YTdjXHU2YTkxXHU2YTkwXHU2''@;'; put 'put ''YWE5XHU2YTk3XHU2YWFiXHU3MzM3XHU3MzUyXHU2YjgxXHU2YjgyXHU2Yjg3XHU2Yjg0XHU2YjkyXHU2YjkzXHU2YjhkXHU2YjlhXHU2YjliXHU2YmExXHU2YmFhXHU4ZjZiXHU4ZjZkXHU4ZjcxXHU4ZjcyXHU4ZjczXHU4Zjc1XHU4Zjc2XHU4Zjc4XHU4Zjc3XHU4Zjc5XHU4ZjdhXHU4Zjdj''@;'; put 'put ''XHU4ZjdlXHU4ZjgxXHU4ZjgyXHU4Zjg0XHU4Zjg3XHU4ZjhiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzNdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzM11bRV1dPTU5NjQ4K0UsTFs1OTY0OCtFXT1CWzIzM11bRV0pO2ZvcihCWzIz''@;'; put 'put ''NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGY4ZFx1OGY4ZVx1OGY4Zlx1''@;'; put 'put ''OGY5OFx1OGY5YVx1OGVjZVx1NjIwYlx1NjIxN1x1NjIxYlx1NjIxZlx1NjIyMlx1NjIyMVx1NjIyNVx1NjIyNFx1NjIyY1x1ODFlN1x1NzRlZlx1NzRmNFx1NzRmZlx1NzUwZlx1NzUxMVx1NzUxM1x1NjUzNFx1NjVlZVx1NjVlZlx1NjVmMFx1NjYwYVx1NjYxOVx1Njc3Mlx1NjYwM1x1NjYx''@;'; put 'put ''NVx1NjYwMFx1NzA4NVx1NjZmN1x1NjYxZFx1NjYzNFx1NjYzMVx1NjYzNlx1NjYzNVx1ODAwNlx1NjY1Zlx1NjY1NFx1NjY0MVx1NjY0Zlx1NjY1Nlx1NjY2MVx1NjY1N1x1NjY3N1x1NjY4NFx1NjY4Y1x1NjZhN1x1NjY5ZFx1NjZiZVx1NjZkYlx1NjZkY1x1NjZlNlx1NjZlOVx1OGQzMlx1''@;'; put 'put ''OGQzM1x1OGQzNlx1OGQzYlx1OGQzZFx1OGQ0MFx1OGQ0NVx1OGQ0Nlx1OGQ0OFx1OGQ0OVx1OGQ0N1x1OGQ0ZFx1OGQ1NVx1OGQ1OVx1ODljN1x1ODljYVx1ODljYlx1ODljY1x1ODljZVx1ODljZlx1ODlkMFx1ODlkMVx1NzI2ZVx1NzI5Zlx1NzI1ZFx1NzI2Nlx1NzI2Zlx1NzI3ZVx1NzI3''@;'; put 'put ''Zlx1NzI4NFx1NzI4Ylx1NzI4ZFx1NzI4Zlx1NzI5Mlx1NjMwOFx1NjMzMlx1NjNiMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM0XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyMzRdW0VdXT01OTkwNCtFLExbNTk5MDQrRV09QlsyMzRd''@;'; put 'put ''W0VdKTtmb3IoQlsyMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0M2Zc''@;'; put 'put ''dTY0ZDhcdTgwMDRcdTZiZWFcdTZiZjNcdTZiZmRcdTZiZjVcdTZiZjlcdTZjMDVcdTZjMDdcdTZjMDZcdTZjMGRcdTZjMTVcdTZjMThcdTZjMTlcdTZjMWFcdTZjMjFcdTZjMjlcdTZjMjRcdTZjMmFcdTZjMzJcdTY1MzVcdTY1NTVcdTY1NmJcdTcyNGRcdTcyNTJcdTcyNTZcdTcyMzBcdTg2''@;'; put 'put ''NjJcdTUyMTZcdTgwOWZcdTgwOWNcdTgwOTNcdTgwYmNcdTY3MGFcdTgwYmRcdTgwYjFcdTgwYWJcdTgwYWRcdTgwYjRcdTgwYjdcdTgwZTdcdTgwZThcdTgwZTlcdTgwZWFcdTgwZGJcdTgwYzJcdTgwYzRcdTgwZDlcdTgwY2RcdTgwZDdcdTY3MTBcdTgwZGRcdTgwZWJcdTgwZjFcdTgwZjRc''@;'; put 'put ''dTgwZWRcdTgxMGRcdTgxMGVcdTgwZjJcdTgwZmNcdTY3MTVcdTgxMTJcdThjNWFcdTgxMzZcdTgxMWVcdTgxMmNcdTgxMThcdTgxMzJcdTgxNDhcdTgxNGNcdTgxNTNcdTgxNzRcdTgxNTlcdTgxNWFcdTgxNzFcdTgxNjBcdTgxNjlcdTgxN2NcdTgxN2RcdTgxNmRcdTgxNjdcdTU4NGRcdTVh''@;'; put 'put ''YjVcdTgxODhcdTgxODJcdTgxOTFcdTZlZDVcdTgxYTNcdTgxYWFcdTgxY2NcdTY3MjZcdTgxY2FcdTgxYmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjM1XVtFXV09NjAxNjArRSxMWzYw''@;'; put 'put ''MTYwK0VdPUJbMjM1XVtFXSk7Zm9yKEJbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU4MWMxXHU4MWE2XHU2YjI0XHU2YjM3XHU2YjM5XHU2YjQzXHU2YjQ2XHU2YjU5XHU5OGQxXHU5OGQyXHU5OGQzXHU5OGQ1XHU5OGQ5XHU5OGRhXHU2YmIzXHU1ZjQwXHU2YmMyXHU4OWYzXHU2NTkwXHU5ZjUxXHU2NTkzXHU2NWJjXHU2NWM2XHU2NWM0XHU2NWMzXHU2NWNjXHU2''@;'; put 'put ''NWNlXHU2NWQyXHU2NWQ2XHU3MDgwXHU3MDljXHU3MDk2XHU3MDlkXHU3MGJiXHU3MGMwXHU3MGI3XHU3MGFiXHU3MGIxXHU3MGU4XHU3MGNhXHU3MTEwXHU3MTEzXHU3MTE2XHU3MTJmXHU3MTMxXHU3MTczXHU3MTVjXHU3MTY4XHU3MTQ1XHU3MTcyXHU3MTRhXHU3MTc4XHU3MTdhXHU3MTk4''@;'; put 'put ''XHU3MWIzXHU3MWI1XHU3MWE4XHU3MWEwXHU3MWUwXHU3MWQ0XHU3MWU3XHU3MWY5XHU3MjFkXHU3MjI4XHU3MDZjXHU3MTE4XHU3MTY2XHU3MWI5XHU2MjNlXHU2MjNkXHU2MjQzXHU2MjQ4XHU2MjQ5XHU3OTNiXHU3OTQwXHU3OTQ2XHU3OTQ5XHU3OTViXHU3OTVjXHU3OTUzXHU3OTVhXHU3''@;'; put 'put ''OTYyXHU3OTU3XHU3OTYwXHU3OTZmXHU3OTY3XHU3OTdhXHU3OTg1XHU3OThhXHU3OTlhXHU3OWE3XHU3OWIzXHU1ZmQxXHU1ZmQwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzZdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzNl1bRV1d''@;'; put 'put ''PTYwNDE2K0UsTFs2MDQxNitFXT1CWzIzNl1bRV0pO2ZvcihCWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjAzY1x1NjA1ZFx1NjA1YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFjYlx1NjFkMVx1NjIwNlx1ODA4MFx1ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1NzgwMFx1''@;'; put 'put ''NzgwOVx1NzgxN1x1NzgxOFx1NzgxMVx1NjVhYlx1NzgyZFx1NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1Nzg5''@;'; put 'put ''M1x1Nzg5YVx1Nzg4N1x1Nzg5Y1x1NzhhMVx1NzhhM1x1NzhiMlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1NzkyNFx1NzkxZVx1NzkzNFx1OWY5Ylx1OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZmOVx1''@;'; put 'put ''NzcwN1x1NzcwOFx1NzcxYVx1NzcyMlx1NzcxOVx1NzcyZFx1NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM3XVtFXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''Z2VbQlsyMzddW0VdXT02MDY3MitFLExbNjA2NzIrRV09QlsyMzddW0VdKTtmb3IoQlsyMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3NjJcdTc3NjVcdTc3N2ZcdTc3OGRcdTc3N2RcdTc3ODBcdTc3OGNcdTc3OTFcdTc3OWZcdTc3YTBcdTc3YjBcdTc3YjVcdTc3YmRcdTc1M2FcdTc1NDBcdTc1NGVcdTc1NGJcdTc1NDhcdTc1NWJcdTc1NzJcdTc1NzlcdTc1ODNc''@;'; put 'put ''dTdmNThcdTdmNjFcdTdmNWZcdThhNDhcdTdmNjhcdTdmNzRcdTdmNzFcdTdmNzlcdTdmODFcdTdmN2VcdTc2Y2RcdTc2ZTVcdTg4MzJcdTk0ODVcdTk0ODZcdTk0ODdcdTk0OGJcdTk0OGFcdTk0OGNcdTk0OGRcdTk0OGZcdTk0OTBcdTk0OTRcdTk0OTdcdTk0OTVcdTk0OWFcdTk0OWJcdTk0''@;'; put 'put ''OWNcdTk0YTNcdTk0YTRcdTk0YWJcdTk0YWFcdTk0YWRcdTk0YWNcdTk0YWZcdTk0YjBcdTk0YjJcdTk0YjRcdTk0YjZcdTk0YjdcdTk0YjhcdTk0YjlcdTk0YmFcdTk0YmNcdTk0YmRcdTk0YmZcdTk0YzRcdTk0YzhcdTk0YzlcdTk0Y2FcdTk0Y2JcdTk0Y2NcdTk0Y2RcdTk0Y2VcdTk0ZDBc''@;'; put 'put ''dTk0ZDFcdTk0ZDJcdTk0ZDVcdTk0ZDZcdTk0ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzOF1bRV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKGdlW0JbMjM4XVtFXV09NjA5MjgrRSxMWzYwOTI4K0VdPUJbMjM4XVtFXSk7Zm9yKEJbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NGU5XHU5NGViXHU5NGVlXHU5NGVmXHU5NGYzXHU5NGY0XHU5NGY1XHU5NGY3XHU5NGY5XHU5NGZjXHU5NGZkXHU5NGZmXHU5NTAzXHU5NTAyXHU5NTA2XHU5NTA3XHU5NTA5XHU5NTBhXHU5NTBkXHU5NTBl''@;'; put 'put ''XHU5NTBmXHU5NTEyXHU5NTEzXHU5NTE0XHU5NTE1XHU5NTE2XHU5NTE4XHU5NTFiXHU5NTFkXHU5NTFlXHU5NTFmXHU5NTIyXHU5NTJhXHU5NTJiXHU5NTI5XHU5NTJjXHU5NTMxXHU5NTMyXHU5NTM0XHU5NTM2XHU5NTM3XHU5NTM4XHU5NTNjXHU5NTNlXHU5NTNmXHU5NTQyXHU5NTM1XHU5''@;'; put 'put ''NTQ0XHU5NTQ1XHU5NTQ2XHU5NTQ5XHU5NTRjXHU5NTRlXHU5NTRmXHU5NTUyXHU5NTUzXHU5NTU0XHU5NTU2XHU5NTU3XHU5NTU4XHU5NTU5XHU5NTViXHU5NTVlXHU5NTVmXHU5NTVkXHU5NTYxXHU5NTYyXHU5NTY0XHU5NTY1XHU5NTY2XHU5NTY3XHU5NTY4XHU5NTY5XHU5NTZhXHU5NTZi''@;'; put 'put ''XHU5NTZjXHU5NTZmXHU5NTcxXHU5NTcyXHU5NTczXHU5NTNhXHU3N2U3XHU3N2VjXHU5NmM5XHU3OWQ1XHU3OWVkXHU3OWUzXHU3OWViXHU3YTA2XHU1ZDQ3XHU3YTAzXHU3YTAyXHU3YTFlXHU3YTE0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM5XS5sZW5ndGg7KytFKTY1NTMzIT09''@;'; put 'put ''QlsyMzldW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzIzOV1bRV1dPTYxMTg0K0UsTFs2MTE4NCtFXT1CWzIzOV1bRV0pO2ZvcihCWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOFx1OWUy''@;'; put 'put ''OVx1OWUyYVx1OWUyYlx1OWUyY1x1OWUzMlx1OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0N1x1OWU0OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0ZVx1OWU1MVx1OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1''@;'; put 'put ''OWU1ZVx1OWU2M1x1OWU2Nlx1OWU2N1x1OWU2OFx1OWU2OVx1OWU2YVx1OWU2Ylx1OWU2Y1x1OWU3MVx1OWU2ZFx1OWU3M1x1NzU5Mlx1NzU5NFx1NzU5Nlx1NzVhMFx1NzU5ZFx1NzVhY1x1NzVhM1x1NzViM1x1NzViNFx1NzViOFx1NzVjNFx1NzViMVx1NzViMFx1NzVjM1x1NzVjMlx1NzVk''@;'; put 'put ''Nlx1NzVjZFx1NzVlM1x1NzVlOFx1NzVlNlx1NzVlNFx1NzVlYlx1NzVlN1x1NzYwM1x1NzVmMVx1NzVmY1x1NzVmZlx1NzYxMFx1NzYwMFx1NzYwNVx1NzYwY1x1NzYxN1x1NzYwYVx1NzYyNVx1NzYxOFx1NzYxNVx1NzYxOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0MF0ubGVuZ3Ro''@;'; put 'put ''OysrRSk2NTUzMyE9PUJbMjQwXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDBdW0VdXT02MTQ0MCtFLExbNjE0NDArRV09QlsyNDBdW0VdKTtmb3IoQlsyNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBcdTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNcdTc2M2VcdTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2''@;'; put 'put ''NWNcdTc2NTZcdTc2NmJcdTc2NmZcdTdmY2FcdTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdhYjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4N2ZcdTg4ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNc''@;'; put 'put ''dTg4YzlcdTg4ZTJcdTg4Y2VcdTg4ZTNcdTg4ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRcdTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2JcdTc1OGJcdTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgw''@;'; put 'put ''MTJcdTgwMTRcdTgwMTZcdTgwMWNcdTgwMjBcdTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgwNTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4ODBcdTk4ODNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9''@;'; put 'put ''QlsyNDFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0MV1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQxXVtFXV09NjE2OTYrRSxMWzYxNjk2K0VdPUJbMjQxXVtFXSk7Zm9yKEJbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODg5XHU5ODhjXHU5ODhkXHU5ODhmXHU5ODk0XHU5ODlhXHU5ODliXHU5ODllXHU5ODlmXHU5OGExXHU5OGEyXHU5OGE1XHU5OGE2XHU4''@;'; put 'put ''NjRkXHU4NjU0XHU4NjZjXHU4NjZlXHU4NjdmXHU4NjdhXHU4NjdjXHU4NjdiXHU4NmE4XHU4NjhkXHU4NjhiXHU4NmFjXHU4NjlkXHU4NmE3XHU4NmEzXHU4NmFhXHU4NjkzXHU4NmE5XHU4NmI2XHU4NmM0XHU4NmI1XHU4NmNlXHU4NmIwXHU4NmJhXHU4NmIxXHU4NmFmXHU4NmM5XHU4NmNm''@;'; put 'put ''XHU4NmI0XHU4NmU5XHU4NmYxXHU4NmYyXHU4NmVkXHU4NmYzXHU4NmQwXHU4NzEzXHU4NmRlXHU4NmY0XHU4NmRmXHU4NmQ4XHU4NmQxXHU4NzAzXHU4NzA3XHU4NmY4XHU4NzA4XHU4NzBhXHU4NzBkXHU4NzA5XHU4NzIzXHU4NzNiXHU4NzFlXHU4NzI1XHU4NzJlXHU4NzFhXHU4NzNlXHU4''@;'; put 'put ''NzQ4XHU4NzM0XHU4NzMxXHU4NzI5XHU4NzM3XHU4NzNmXHU4NzgyXHU4NzIyXHU4NzdkXHU4NzdlXHU4NzdiXHU4NzYwXHU4NzcwXHU4NzRjXHU4NzZlXHU4NzhiXHU4NzUzXHU4NzYzXHU4NzdjXHU4NzY0XHU4NzU5XHU4NzY1XHU4NzkzXHU4N2FmXHU4N2E4XHU4N2QyXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksRT0wO0UhPUJbMjQyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDJdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0Ml1bRV1dPTYxOTUyK0UsTFs2MTk1MitFXT1CWzI0Ml1bRV0pO2ZvcihCWzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODdjNlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1''@;'; put 'put ''ODdjYlx1ODdkM1x1ODdiZFx1ODdkMVx1ODdjMFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1ODgyMVx1ODgzOVx1ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2Iw''@;'; put 'put ''NFx1N2IxNVx1N2IwYVx1N2IyYlx1N2IwZlx1N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2IzZVx1N2IxZVx1N2I1OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1''@;'; put 'put ''N2I3MVx1N2I5MFx1N2JhNlx1N2JhN1x1N2JiOFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1N2JjMVx1N2JjY1x1N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2JlYVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2Mw''@;'; put 'put ''Ylx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQzXVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDNdW0VdXT02MjIwOCtFLExbNjIyMDgrRV09QlsyNDNdW0VdKTtmb3IoQlsyNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJc''@;'; put 'put ''dTgyMDRcdTgxZWNcdTg4NDRcdTgyMjFcdTgyMjJcdTgyMjNcdTgyMmRcdTgyMmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlcdTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5''@;'; put 'put ''NWVcdTdmOWRcdTdmOWZcdTdmYTdcdTdmYWZcdTdmYjBcdTdmYjJcdTdjN2NcdTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdjYzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZc''@;'; put 'put ''dTdmY2VcdTdmZDVcdTdmZTVcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZWVcdTdmZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNcdThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkx''@;'; put 'put ''NGVcdTkxNGZcdTkxNjRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0NF1bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ0XVtFXV09NjI0NjQrRSxMWzYyNDY0K0VdPUJbMjQ0XVtFXSk7Zm9yKEJbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MTYyXHU5MTYxXHU5MTcwXHU5MTY5XHU5MTZmXHU5MTdkXHU5MTdl''@;'; put 'put ''XHU5MTcyXHU5MTc0XHU5MTc5XHU5MThjXHU5MTg1XHU5MTkwXHU5MThkXHU5MTkxXHU5MWEyXHU5MWEzXHU5MWFhXHU5MWFkXHU5MWFlXHU5MWFmXHU5MWI1XHU5MWI0XHU5MWJhXHU4YzU1XHU5ZTdlXHU4ZGI4XHU4ZGViXHU4ZTA1XHU4ZTU5XHU4ZTY5XHU4ZGI1XHU4ZGJmXHU4ZGJjXHU4''@;'; put 'put ''ZGJhXHU4ZGM0XHU4ZGQ2XHU4ZGQ3XHU4ZGRhXHU4ZGRlXHU4ZGNlXHU4ZGNmXHU4ZGRiXHU4ZGM2XHU4ZGVjXHU4ZGY3XHU4ZGY4XHU4ZGUzXHU4ZGY5XHU4ZGZiXHU4ZGU0XHU4ZTA5XHU4ZGZkXHU4ZTE0XHU4ZTFkXHU4ZTFmXHU4ZTJjXHU4ZTJlXHU4ZTIzXHU4ZTJmXHU4ZTNhXHU4ZTQw''@;'; put 'put ''XHU4ZTM5XHU4ZTM1XHU4ZTNkXHU4ZTMxXHU4ZTQ5XHU4ZTQxXHU4ZTQyXHU4ZTUxXHU4ZTUyXHU4ZTRhXHU4ZTcwXHU4ZTc2XHU4ZTdjXHU4ZTZmXHU4ZTc0XHU4ZTg1XHU4ZThmXHU4ZTk0XHU4ZTkwXHU4ZTljXHU4ZTllXHU4Yzc4XHU4YzgyXHU4YzhhXHU4Yzg1XHU4Yzk4XHU4Yzk0XHU2''@;'; put 'put ''NTliXHU4OWQ2XHU4OWRlXHU4OWRhXHU4OWRjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDVdW0VdLmNoYXJDb2RlQXQoMCkmJihnZVtCWzI0NV1bRV1dPTYyNzIwK0UsTFs2MjcyMCtFXT1CWzI0NV1bRV0pO2ZvcihCWzI0Nl09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIy''@;'; put 'put ''Nlx1OTc1M1x1OTZlOVx1OTZmM1x1OTZlZlx1OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NVx1OWY4Nlx1OWY4N1x1OWY4OFx1OWY4OVx1OWY4YVx1OWY4Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1OTZiY1x1''@;'; put 'put ''OTZiZFx1OTZjZVx1OTZkMlx1NzdiZlx1OTZlMFx1OTI4ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5NFx1OWM5''@;'; put 'put ''NVx1OWM5YVx1OWM5Ylx1OWM5ZVx1OWM5Zlx1OWNhMFx1OWNhMVx1OWNhMlx1OWNhM1x1OWNhNVx1OWNhNlx1OWNhN1x1OWNhOFx1OWNhOVx1OWNhYlx1OWNhZFx1OWNhZVx1OWNiMFx1OWNiMVx1OWNiMlx1OWNiM1x1OWNiNFx1OWNiNVx1OWNiNlx1OWNiN1x1OWNiYVx1OWNiYlx1OWNiY1x1''@;'; put 'put ''OWNiZFx1OWNjNFx1OWNjNVx1OWNjNlx1OWNjN1x1OWNjYVx1OWNjYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ2XVtFXS5jaGFyQ29kZUF0KDApJiYoZ2VbQlsyNDZdW0VdXT02Mjk3NitFLExbNjI5NzYrRV09QlsyNDZdW0VdKTtmb3Io''@;'; put 'put ''QlsyNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljY2NcdTljY2RcdTlj''@;'; put 'put ''Y2VcdTljY2ZcdTljZDBcdTljZDNcdTljZDRcdTljZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTllNThcdTlhYjZc''@;'; put 'put ''dTlhYmFcdTlhYmNcdTlhYzFcdTlhYzBcdTlhYzVcdTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThcdTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZmJcdTlh''@;'; put 'put ''ZWRcdTlhZjlcdTliMDhcdTliMGZcdTliMTNcdTliMWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTllOWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTllZTVcdTllZWFc''@;'; put 'put ''dTllZWZcdTlmMjJcdTlmMmNcdTlmMmZcdTlmMzlcdTlmMzdcdTlmM2RcdTlmM2VcdTlmNDRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0N11bRV0uY2hhckNvZGVBdCgwKSYmKGdlW0JbMjQ3XVtFXV09NjMyMzIrRSxMWzYzMjMyK0VdPUJb''@;'; put 'put ''MjQ3XVtFXSk7cmV0dXJue2VuYzpnZSxkZWM6TH19KCksSmVbMTAwMjldPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4''@;'; put 'put ''MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRcdTAxMDBcdTAxMDFceGM5XHUwMTA0XHhkNlx4ZGNceGUxXHUwMTA1XHUwMTBj''@;'; put 'put ''XHhlNFx1MDEwZFx1MDEwNlx1MDEwN1x4ZTlcdTAxNzlcdTAxN2FcdTAxMGVceGVkXHUwMTBmXHUwMTEyXHUwMTEzXHUwMTE2XHhmM1x1MDExN1x4ZjRceGY2XHhmNVx4ZmFcdTAxMWFcdTAxMWJceGZjXHUyMDIwXHhiMFx1MDExOFx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEy''@;'; put 'put ''Mlx1MDExOVx4YThcdTIyNjBcdTAxMjNcdTAxMmVcdTAxMmZcdTAxMmFcdTIyNjRcdTIyNjVcdTAxMmJcdTAxMzZcdTIyMDJcdTIyMTFcdTAxNDJcdTAxM2JcdTAxM2NcdTAxM2RcdTAxM2VcdTAxMzlcdTAxM2FcdTAxNDVcdTAxNDZcdTAxNDNceGFjXHUyMjFhXHUwMTQ0XHUwMTQ3XHUyMjA2''@;'; put 'put ''XHhhYlx4YmJcdTIwMjZceGEwXHUwMTQ4XHUwMTUwXHhkNVx1MDE1MVx1MDE0Y1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FcdTAxNGRcdTAxNTRcdTAxNTVcdTAxNThcdTIwMzlcdTIwM2FcdTAxNTlcdTAxNTZcdTAxNTdcdTAxNjBcdTIwMWFcdTIwMWVc''@;'; put 'put ''dTAxNjFcdTAxNWFcdTAxNWJceGMxXHUwMTY0XHUwMTY1XHhjZFx1MDE3ZFx1MDE3ZVx1MDE2YVx4ZDNceGQ0XHUwMTZiXHUwMTZlXHhkYVx1MDE2Zlx1MDE3MFx1MDE3MVx1MDE3Mlx1MDE3M1x4ZGRceGZkXHUwMTM3XHUwMTdiXHUwMTQxXHUwMTdjXHUwMTIyXHUwMmM3IixnZT1bXSxCPXt9''@;'; put 'put ''LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVsxMDA3OV09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2''@;'; put 'put ''XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlq''@;'; put 'put ''a2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNceGRkXHhiMFx4YTJc''@;'; put 'put ''eGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1''@;'; put 'put ''MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx4ZDBceGYwXHhkZVx4ZmVceGZkXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJc''@;'; put 'put ''eGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3IixnZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1M''@;'; put 'put ''LmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxnZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOmdlfX0oKSxKZVsxMDA4MV09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4''@;'; put 'put ''MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx4''@;'; put 'put ''YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhh''@;'; put 'put ''OVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEw''@;'; put 'put ''XHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTAxMWVcdTAxMWZcdTAxMzBcdTAxMzFcdTAxNWVcdTAxNWZcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4Yzhc''@;'; put 'put ''eGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHVmZmZkXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLGdlPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYm''@;'; put 'put ''KEJbTC5jaGFyQXQoRSldPUUpLGdlW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6Z2V9fSgpLEplWzI4NTkxXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4''@;'; put 'put ''MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceDgwXHg4MVx4ODJceDgzXHg4NFx4''@;'; put 'put ''ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhh''@;'; put 'put ''ZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx4ZDBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3''@;'; put 'put ''XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiIsZ2U9''@;'; put 'put ''W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksZ2VbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzpnZX19KCksWGUuZXhwb3J0cyYmInVuZGVmaW5lZCI9PXR5cGVvZiBET19OT1RfRVhQT1JUX0NPREVQ''@;'; put 'put ''QUdFJiYoWGUuZXhwb3J0cz1KZSksZnVuY3Rpb24oTCxnZSl7InVzZSBzdHJpY3QiO2lmKHZvaWQgMD09PUplKXt2YXIgQj1KZTtYZS5leHBvcnRzJiYidW5kZWZpbmVkIj09dHlwZW9mIERPX05PVF9FWFBPUlRfQ09ERVBBR0U/WGUuZXhwb3J0cz1nZShCKTpMLmNwdGFibGU9Z2UoQil9ZWxz''@;'; put 'put ''ZSBKZT1nZShKZSl9KHRoaXMsZnVuY3Rpb24oTCl7InVzZSBzdHJpY3QiO3ZhciBnZT17MTIwMDoidXRmMTZsZSIsMTIwMToidXRmMTZiZSIsMTJlMzoidXRmMzJsZSIsMTIwMDE6InV0ZjMyYmUiLDE2OTY5OiJ1dGY2NGxlIiwyMDEyNzoiYXNjaWkiLDY1ZTM6InV0ZjciLDY1MDAxOiJ1dGY4''@;'; put 'put ''In0sQj1bODc0LDEyNTAsMTI1MSwxMjUyLDEyNTMsMTI1NCwxMjU1LDEyNTYsMWU0XSxFPVs5MzIsOTM2LDk0OSw5NTBdLE1lPVs2NTAwMV0sVT17fSxRPXt9LFo9e30saWU9e30sbGU9ZnVuY3Rpb24oVil7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoVil9LFk9ZnVuY3Rpb24oVil7cmV0''@;'; put 'put ''dXJuIFYuY2hhckNvZGVBdCgwKX0sVz0idW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlcixOPWZ1bmN0aW9uKCl7fTtpZihXKXt2YXIgZWU9IUJ1ZmZlci5mcm9tO2lmKCFlZSl0cnl7QnVmZmVyLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaChQKXtlZT0hMH1OPWVlP2Z1bmN0aW9uKFAsVil7cmV0''@;'; put 'put ''dXJuIFY/bmV3IEJ1ZmZlcihQLFYpOm5ldyBCdWZmZXIoUCl9OkJ1ZmZlci5mcm9tLmJpbmQoQnVmZmVyKSxCdWZmZXIuYWxsb2NVbnNhZmV8fChCdWZmZXIuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oUCl7cmV0dXJuIG5ldyBCdWZmZXIoUCl9KTt2YXIgcT0xMDI0LEo9QnVmZmVyLmFsbG9jVW5z''@;'; put 'put ''YWZlKHEpLGFlPWZ1bmN0aW9uKFYpe3ZhciBUPWZ1bmN0aW9uKFYpe2Zvcih2YXIgVD1CdWZmZXIuYWxsb2NVbnNhZmUoNjU1MzYpLFM9MDtTPDY1NTM2OysrUylUW1NdPTA7Zm9yKHZhciBGPU9iamVjdC5rZXlzKFYpLHllPUYubGVuZ3RoLENlPTAsRGU9RltDZV07Q2U8eWU7KytDZSkhKERl''@;'; put 'put ''PUZbQ2VdKXx8KFRbRGUuY2hhckNvZGVBdCgwKV09VltEZV0pO3JldHVybiBUfShMW1ZdLmVuYyk7cmV0dXJuIGZ1bmN0aW9uKEYseWUpe3ZhciBEZSxDZT1GLmxlbmd0aCxQZT0wLFFlPTAsJGU9MCxndD0wO2lmKCJzdHJpbmciPT10eXBlb2YgRilmb3IoRGU9QnVmZmVyLmFsbG9jVW5zYWZl''@;'; put 'put ''KENlKSxQZT0wO1BlPENlOysrUGUpRGVbUGVdPVRbRi5jaGFyQ29kZUF0KFBlKV07ZWxzZSBpZihCdWZmZXIuaXNCdWZmZXIoRikpe2ZvcihEZT1CdWZmZXIuYWxsb2NVbnNhZmUoMipDZSksUWU9MCxQZT0wO1BlPENlOysrUGUpKCRlPUZbUGVdKTwxMjg/RGVbUWUrK109VFskZV06JGU8MjI0''@;'; put 'put ''PyhEZVtRZSsrXT1UWygoMzEmJGUpPDw2KSsoNjMmRltQZSsxXSldLCsrUGUpOiRlPDI0MD8oRGVbUWUrK109VFsoKDE1JiRlKTw8MTIpKygoNjMmRltQZSsxXSk8PDYpKyg2MyZGW1BlKzJdKV0sUGUrPTIpOihndD0oKDcmJGUpPDwxOCkrKCg2MyZGW1BlKzFdKTw8MTIpKygoNjMmRltQZSsy''@;'; put 'put ''XSk8PDYpKyg2MyZGW1BlKzNdKSxQZSs9MyxndDw2NTUzNj9EZVtRZSsrXT1UW2d0XTooRGVbUWUrK109VFs1NTI5NisoKGd0LT02NTUzNik+PjEwJjEwMjMpXSxEZVtRZSsrXT1UWzU2MzIwKygxMDIzJmd0KV0pKTtEZT1EZS5zbGljZSgwLFFlKX1lbHNlIGZvcihEZT1CdWZmZXIuYWxsb2NV''@;'; put 'put ''bnNhZmUoQ2UpLFBlPTA7UGU8Q2U7KytQZSlEZVtQZV09VFtGW1BlXS5jaGFyQ29kZUF0KDApXTtyZXR1cm4geWUmJiJidWYiIT09eWU/ImFyciIhPT15ZT9EZS50b1N0cmluZygiYmluYXJ5Iik6W10uc2xpY2UuY2FsbChEZSk6RGV9fSxmZT1mdW5jdGlvbihWKXt2YXIgVD1MW1ZdLmRlYyxT''@;'; put 'put ''PUJ1ZmZlci5hbGxvY1Vuc2FmZSgxMzEwNzIpLEY9MCx5ZT0iIjtmb3IoRj0wO0Y8VC5sZW5ndGg7KytGKWlmKHllPVRbRl0pe3ZhciBDZT15ZS5jaGFyQ29kZUF0KDApO1NbMipGXT0yNTUmQ2UsU1syKkYrMV09Q2U+Pjh9cmV0dXJuIGZ1bmN0aW9uKFBlKXt2YXIgUWU9UGUubGVuZ3RoLCRl''@;'; put 'put ''PTAsZ3Q9MDtpZigyKlFlPnEmJihxPTIqUWUsSj1CdWZmZXIuYWxsb2NVbnNhZmUocSkpLEJ1ZmZlci5pc0J1ZmZlcihQZSkpZm9yKCRlPTA7JGU8UWU7JGUrKylKWzIqJGVdPVNbZ3Q9MipQZVskZV1dLEpbMiokZSsxXT1TW2d0KzFdO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBQZSlmb3Io''@;'; put 'put ''JGU9MDskZTxRZTskZSsrKWd0PTIqUGUuY2hhckNvZGVBdCgkZSksSlsyKiRlXT1TW2d0XSxKWzIqJGUrMV09U1tndCsxXTtlbHNlIGZvcigkZT0wOyRlPFFlOyRlKyspSlsyKiRlXT1TW2d0PTIqUGVbJGVdXSxKWzIqJGUrMV09U1tndCsxXTtyZXR1cm4gSi5zbGljZSgwLDIqUWUpLnRvU3Ry''@;'; put 'put ''aW5nKCJ1Y3MyIil9fSxkZT1mdW5jdGlvbihWKXtmb3IodmFyIFQ9TFtWXS5lbmMsUz1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSxGPTA7RjwxMzEwNzI7KytGKVNbRl09MDtmb3IodmFyIHllPU9iamVjdC5rZXlzKFQpLENlPTAsRGU9eWVbQ2VdO0NlPHllLmxlbmd0aDsrK0NlKWlmKERl''@;'; put 'put ''PXllW0NlXSl7dmFyIFBlPURlLmNoYXJDb2RlQXQoMCk7U1syKlBlXT0yNTUmVFtEZV0sU1syKlBlKzFdPVRbRGVdPj44fXJldHVybiBmdW5jdGlvbigkZSxndCl7dmFyIHl0PSRlLmxlbmd0aCxwdD1CdWZmZXIuYWxsb2NVbnNhZmUoMip5dCksbXQ9MCx2dD0wLGZ0PTAsRnQ9MCxvbj0wO2lm''@;'; put 'put ''KCJzdHJpbmciPT10eXBlb2YgJGUpe2ZvcihtdD1GdD0wO210PHl0OysrbXQpdnQ9MiokZS5jaGFyQ29kZUF0KG10KSxwdFtGdCsrXT1TW3Z0KzFdfHxTW3Z0XSxTW3Z0KzFdPjAmJihwdFtGdCsrXT1TW3Z0XSk7cHQ9cHQuc2xpY2UoMCxGdCl9ZWxzZSBpZihCdWZmZXIuaXNCdWZmZXIoJGUp''@;'; put 'put ''KXtmb3IobXQ9RnQ9MDttdDx5dDsrK210KShvbj0kZVttdF0pPDEyOD92dD1vbjpvbjwyMjQ/KHZ0PSgoMzEmb24pPDw2KSsoNjMmJGVbbXQrMV0pLCsrbXQpOm9uPDI0MD8odnQ9KCgxNSZvbik8PDEyKSsoKDYzJiRlW210KzFdKTw8NikrKDYzJiRlW210KzJdKSxtdCs9Mik6KHZ0PSgoNyZv''@;'; put 'put ''bik8PDE4KSsoKDYzJiRlW210KzFdKTw8MTIpKygoNjMmJGVbbXQrMl0pPDw2KSsoNjMmJGVbbXQrM10pLG10Kz0zKSx2dDw2NTUzNj8ocHRbRnQrK109U1sxKyh2dCo9MildfHxTW3Z0XSxTW3Z0KzFdPjAmJihwdFtGdCsrXT1TW3Z0XSkpOihwdFtGdCsrXT1TWzErKHZ0PTIqKDU1Mjk2Kygo''@;'; put 'put ''ZnQ9dnQtNjU1MzYpPj4xMCYxMDIzKSkpXXx8U1t2dF0sU1t2dCsxXT4wJiYocHRbRnQrK109U1t2dF0pLHB0W0Z0KytdPVNbMSsodnQ9MiooNTYzMjArKDEwMjMmZnQpKSldfHxTW3Z0XSxTW3Z0KzFdPjAmJihwdFtGdCsrXT1TW3Z0XSkpO3B0PXB0LnNsaWNlKDAsRnQpfWVsc2UgZm9yKG10''@;'; put 'put ''PUZ0PTA7bXQ8eXQ7bXQrKyl2dD0yKiRlW210XS5jaGFyQ29kZUF0KDApLHB0W0Z0KytdPVNbdnQrMV18fFNbdnRdLFNbdnQrMV0+MCYmKHB0W0Z0KytdPVNbdnRdKTtyZXR1cm4gZ3QmJiJidWYiIT09Z3Q/ImFyciIhPT1ndD9wdC50b1N0cmluZygiYmluYXJ5Iik6W10uc2xpY2UuY2FsbChw''@;'; put 'put ''dCk6cHR9fSx2ZT1mdW5jdGlvbihWKXt2YXIgeWUsVD1MW1ZdLmRlYyxTPUJ1ZmZlci5hbGxvY1Vuc2FmZSgxMzEwNzIpLEY9MCxDZT0wLERlPTAsUGU9MDtmb3IoUGU9MDtQZTw2NTUzNjsrK1BlKVNbMipQZV09MjU1LFNbMipQZSsxXT0yNTM7Zm9yKEY9MDtGPFQubGVuZ3RoOysrRikhKHll''@;'; put 'put ''PVRbRl0pfHwoQ2U9eWUuY2hhckNvZGVBdCgwKSxTW0RlPTIqRl09MjU1JkNlLFNbRGUrMV09Q2U+PjgpO3JldHVybiBmdW5jdGlvbigkZSl7dmFyIGd0PSRlLmxlbmd0aCx5dD1CdWZmZXIuYWxsb2NVbnNhZmUoMipndCkscHQ9MCxtdD0wLHZ0PTA7aWYoQnVmZmVyLmlzQnVmZmVyKCRlKSlm''@;'; put 'put ''b3IocHQ9MDtwdDxndDtwdCsrKTI1NT09PVNbbXQ9MiokZVtwdF1dJiYyNTM9PT1TW210KzFdJiYobXQ9MiooKCRlW3B0XTw8OCkrJGVbcHQrMV0pLCsrcHQpLHl0W3Z0KytdPVNbbXRdLHl0W3Z0KytdPVNbbXQrMV07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mICRlKWZvcihwdD0wO3B0PGd0''@;'; put 'put ''O3B0KyspbXQ9MiokZS5jaGFyQ29kZUF0KHB0KSwyNTU9PT1TW210XSYmMjUzPT09U1ttdCsxXSYmKG10PTIqKCgkZS5jaGFyQ29kZUF0KHB0KTw8OCkrJGUuY2hhckNvZGVBdChwdCsxKSksKytwdCkseXRbdnQrK109U1ttdF0seXRbdnQrK109U1ttdCsxXTtlbHNlIGZvcihwdD0wO3B0PGd0''@;'; put 'put ''O3B0KyspMjU1PT09U1ttdD0yKiRlW3B0XV0mJjI1Mz09PVNbbXQrMV0mJihtdD0yKigoJGVbcHRdPDw4KSskZVtwdCsxXSksKytwdCkseXRbdnQrK109U1ttdF0seXRbdnQrK109U1ttdCsxXTtyZXR1cm4geXQuc2xpY2UoMCx2dCkudG9TdHJpbmcoInVjczIiKX19O1VbNjUwMDFdPWZ1bmN0''@;'; put 'put ''aW9uIFAoVil7aWYoInN0cmluZyI9PXR5cGVvZiBWKXJldHVybiBQKFYuc3BsaXQoIiIpLm1hcChZKSk7dmFyIFQ9Vi5sZW5ndGgsUz0wLEY9MDs0KlQ+cSYmKHE9NCpULEo9QnVmZmVyLmFsbG9jVW5zYWZlKHEpKTt2YXIgeWU9MDtUPj0zJiYyMzk9PVZbMF0mJjE4Nz09VlsxXSYmMTkxPT1W''@;'; put 'put ''WzJdJiYoeWU9Myk7Zm9yKHZhciBDZT0xLERlPTAsUGU9MDt5ZTxUO3llKz1DZSlDZT0xLChQZT1WW3llXSk8MTI4P1M9UGU6UGU8MjI0PyhTPTY0KigzMSZQZSkrKDYzJlZbeWUrMV0pLENlPTIpOlBlPDI0MD8oUz0oKDE1JlBlKTw8MTIpKzY0Kig2MyZWW3llKzFdKSsoNjMmVlt5ZSsyXSks''@;'; put 'put ''Q2U9Myk6KFM9MjYyMTQ0Kig3JlBlKSsoKDYzJlZbeWUrMV0pPDwxMikrNjQqKDYzJlZbeWUrMl0pKyg2MyZWW3llKzNdKSxDZT00KSxTPDY1NTM2PyhKW0RlKytdPTI1NSZTLEpbRGUrK109Uz4+OCk6KEY9NTUyOTYrKChTLT02NTUzNik+PjEwJjEwMjMpLFM9NTYzMjArKDEwMjMmUyksSltE''@;'; put 'put ''ZSsrXT0yNTUmRixKW0RlKytdPUY+Pj44LEpbRGUrK109MjU1JlMsSltEZSsrXT1TPj4+OCYyNTUpO3JldHVybiBKLnNsaWNlKDAsRGUpLnRvU3RyaW5nKCJ1Y3MyIil9LFFbNjUwMDFdPWZ1bmN0aW9uKFYsVCl7aWYoVyYmQnVmZmVyLmlzQnVmZmVyKFYpKXJldHVybiBUJiYiYnVmIiE9PVQ/''@;'; put 'put ''ImFyciIhPT1UP1YudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwoVik6Vjt2YXIgUz1WLmxlbmd0aCxGPTAseWU9MCxDZT0wLERlPSJzdHJpbmciPT10eXBlb2YgVjs0KlM+cSYmKHE9NCpTLEo9QnVmZmVyLmFsbG9jVW5zYWZlKHEpKTtmb3IodmFyIFBlPTA7UGU8UzsrK1BlKShG''@;'; put 'put ''PURlP1YuY2hhckNvZGVBdChQZSk6VltQZV0uY2hhckNvZGVBdCgwKSk8PTEyNz9KW0NlKytdPUY6Rjw9MjA0Nz8oSltDZSsrXT0xOTIrKEY+PjYpLEpbQ2UrK109MTI4Kyg2MyZGKSk6Rj49NTUyOTYmJkY8PTU3MzQzPyhGLT01NTI5NiwrK1BlLHllPShEZT9WLmNoYXJDb2RlQXQoUGUpOlZb''@;'; put 'put ''UGVdLmNoYXJDb2RlQXQoMCkpLTU2MzIwKyhGPDwxMCksSltDZSsrXT0yNDArKHllPj4+MTgmNyksSltDZSsrXT0xNDQrKHllPj4+MTImNjMpLEpbQ2UrK109MTI4Kyh5ZT4+PjYmNjMpLEpbQ2UrK109MTI4Kyg2MyZ5ZSkpOihKW0NlKytdPTIyNCsoRj4+MTIpLEpbQ2UrK109MTI4KyhGPj42''@;'; put 'put ''JjYzKSxKW0NlKytdPTEyOCsoNjMmRikpO3JldHVybiBUJiYiYnVmIiE9PVQ/ImFyciIhPT1UP0ouc2xpY2UoMCxDZSkudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwoSiwwLENlKTpKLnNsaWNlKDAsQ2UpfX12YXIgQWU9ZnVuY3Rpb24oKXtpZihXKXtpZihaW0JbMF1dKXJldHVy''@;'; put 'put ''bjt2YXIgVj0wLFQ9MDtmb3IoVj0wO1Y8Qi5sZW5ndGg7KytWKUxbVD1CW1ZdXSYmKFpbVF09ZmUoVCksaWVbVF09YWUoVCkpO2ZvcihWPTA7VjxFLmxlbmd0aDsrK1YpTFtUPUVbVl1dJiYoWltUXT12ZShUKSxpZVtUXT1kZShUKSk7Zm9yKFY9MDtWPE1lLmxlbmd0aDsrK1YpVVtUPU1lW1Zd''@;'; put 'put ''XSYmKFpbVF09VVtUXSksUVtUXSYmKGllW1RdPVFbVF0pfX0sa2U9ZnVuY3Rpb24oUCxWKXtyZXR1cm4iIn0sU2U9ZnVuY3Rpb24oVil7ZGVsZXRlIFpbVl0sZGVsZXRlIGllW1ZdfSxUZT17ZW5jYWNoZTpBZSxkZWNhY2hlOmZ1bmN0aW9uKCl7aWYoVyl7aWYoIVpbQlswXV0pcmV0dXJuO0Iu''@;'; put 'put ''Zm9yRWFjaChTZSksRS5mb3JFYWNoKFNlKSxNZS5mb3JFYWNoKFNlKX1PPWtlLHo9MH0sc2JjczpCLGRiY3M6RX07QWUoKTt2YXIgRWU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLE89a2Usej0wO3JldHVybiBMLnV0''@;'; put 'put ''aWxzPXtkZWNvZGU6ZnVuY3Rpb24gUChWLFQpe3ZhciBTO2lmKFM9WltWXSlyZXR1cm4gUyhUKTtpZigic3RyaW5nIj09dHlwZW9mIFQpcmV0dXJuIFAoVixULnNwbGl0KCIiKS5tYXAoWSkpO3ZhciBwdCxGPVQubGVuZ3RoLHllPW5ldyBBcnJheShGKSxDZT0iIixEZT0wLFBlPTAsUWU9MSwk''@;'; put 'put ''ZT0wLGd0PTAseXQ9TFtWXSxtdD0iIjtpZih5dCYmKHB0PXl0LmRlYykpZm9yKFBlPTA7UGU8RjtQZSs9UWUpe2lmKFFlPTIsKENlPXB0WyhUW1BlXTw8OCkrVFtQZSsxXV0pfHwoUWU9MSxDZT1wdFtUW1BlXV0pLCFDZSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBjb2RlOiAiK1Rb''@;'; put 'put ''UGVdKyIgIitUW1BlK1FlLTFdKyIgIitQZSsiICIrUWUrIiAiK3B0W1RbUGVdXSk7eWVbJGUrK109Q2V9ZWxzZXtpZighKG10PWdlW1ZdKSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBDUDogIitWKTtzd2l0Y2gobXQpe2Nhc2UidXRmOCI6Zm9yKEY+PTMmJjIzOT09VFswXSYmMTg3''@;'; put 'put ''PT1UWzFdJiYxOTE9PVRbMl0mJihQZT0zKTtQZTxGO1BlKz1RZSlRZT0xLFRbUGVdPDEyOD9EZT1UW1BlXTpUW1BlXTwyMjQ/KERlPTY0KigzMSZUW1BlXSkrKDYzJlRbUGUrMV0pLFFlPTIpOlRbUGVdPDI0MD8oRGU9KCgxNSZUW1BlXSk8PDEyKSs2NCooNjMmVFtQZSsxXSkrKDYzJlRbUGUr''@;'; put 'put ''Ml0pLFFlPTMpOihEZT0yNjIxNDQqKDcmVFtQZV0pKygoNjMmVFtQZSsxXSk8PDEyKSs2NCooNjMmVFtQZSsyXSkrKDYzJlRbUGUrM10pLFFlPTQpLERlPDY1NTM2fHwoZ3Q9NTUyOTYrKChEZS09NjU1MzYpPj4xMCYxMDIzKSxEZT01NjMyMCsoMTAyMyZEZSkseWVbJGUrK109U3RyaW5nLmZy''@;'; put 'put ''b21DaGFyQ29kZShndCkpLHllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoRGUpO2JyZWFrO2Nhc2UiYXNjaWkiOmlmKFcmJkJ1ZmZlci5pc0J1ZmZlcihUKSlyZXR1cm4gVC50b1N0cmluZyhtdCk7Zm9yKFBlPTA7UGU8RjtQZSsrKXllW1BlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKFRbUGVd''@;'; put 'put ''KTskZT1GO2JyZWFrO2Nhc2UidXRmMTZsZSI6aWYoRj49MiYmMjU1PT1UWzBdJiYyNTQ9PVRbMV0mJihQZT0yKSxXJiZCdWZmZXIuaXNCdWZmZXIoVCkpcmV0dXJuIFQudG9TdHJpbmcobXQpO2ZvcihRZT0yO1BlKzE8RjtQZSs9UWUpeWVbJGUrK109U3RyaW5nLmZyb21DaGFyQ29kZSgoVFtQ''@;'; put 'put ''ZSsxXTw8OCkrVFtQZV0pO2JyZWFrO2Nhc2UidXRmMTZiZSI6Zm9yKEY+PTImJjI1ND09VFswXSYmMjU1PT1UWzFdJiYoUGU9MiksUWU9MjtQZSsxPEY7UGUrPVFlKXllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKFRbUGVdPDw4KStUW1BlKzFdKTticmVhaztjYXNlInV0ZjMybGUiOmZv''@;'; put 'put ''cihGPj00JiYyNTU9PVRbMF0mJjI1ND09VFsxXSYmMD09PVRbMl0mJjA9PT1UWzNdJiYoUGU9NCksUWU9NDtQZTxGO1BlKz1RZSkoRGU9KFRbUGUrM108PDI0KSsoVFtQZSsyXTw8MTYpKyhUW1BlKzFdPDw4KStUW1BlXSk+NjU1MzU/KERlLT02NTUzNix5ZVskZSsrXT1TdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKDU1Mjk2KyhEZT4+MTAmMTAyMykpLHllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTYzMjArKDEwMjMmRGUpKSk6eWVbJGUrK109U3RyaW5nLmZyb21DaGFyQ29kZShEZSk7YnJlYWs7Y2FzZSJ1dGYzMmJlIjpmb3IoRj49NCYmMjU1PT1UWzNdJiYyNTQ9PVRbMl0mJjA9PT1U''@;'; put 'put ''WzFdJiYwPT09VFswXSYmKFBlPTQpLFFlPTQ7UGU8RjtQZSs9UWUpKERlPShUW1BlXTw8MjQpKyhUW1BlKzFdPDwxNikrKFRbUGUrMl08PDgpK1RbUGUrM10pPjY1NTM1PyhEZS09NjU1MzYseWVbJGUrK109U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoRGU+PjEwJjEwMjMpKSx5ZVskZSsr''@;'; put 'put ''XT1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKygxMDIzJkRlKSkpOnllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoRGUpO2JyZWFrO2Nhc2UidXRmNyI6Zm9yKEY+PTQmJjQzPT1UWzBdJiY0Nz09VFsxXSYmMTE4PT1UWzJdJiYoRj49NSYmNTY9PVRbM10mJjQ1PT1UWzRdP1BlPTU6KDU2''@;'; put 'put ''PT1UWzNdfHw1Nz09VFszXXx8NDM9PVRbM118fDQ3PT1UWzNdKSYmKFBlPTQpKTtQZTxGO1BlKz1RZSlpZig0Mz09PVRbUGVdKWlmKFFlPTEsNDUhPT1UW1BlKzFdKXtmb3IoO1N0cmluZy5mcm9tQ2hhckNvZGUoVFtQZStRZV0pLm1hdGNoKC9bQS1aYS16MC05K1wvXS8pOylRZSsrO3ZhciB2''@;'; put 'put ''dD0wOzQ1PT09VFtQZStRZV0mJigrK1FlLHZ0PTEpO2Zvcih2YXIgZnQ9W10sRnQ9IiIscWU9MCxvdD0wLFJ0PTAsQ3Q9MCxjdD0xO2N0PFFlLXZ0JiYocWU9RWUuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKFRbUGUrY3QrK10pKSxvdD1FZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNv''@;'; put 'put ''ZGUoVFtQZStjdCsrXSkpLGZ0LnB1c2gocWU8PDJ8b3Q+PjQpLC0xIT09KFJ0PUVlLmluZGV4T2YoU3RyaW5nLmZyb21DaGFyQ29kZShUW1BlK2N0KytdKSkpJiYoZnQucHVzaCgoMTUmb3QpPDw0fFJ0Pj4yKSwtMSE9PShDdD1FZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoVFtQZStj''@;'; put 'put ''dCsrXSkpKSkpOylDdDw2NCYmZnQucHVzaCgoMyZSdCk8PDZ8Q3QpO2ZvcihGdD1QKDEyMDEsZnQpLGN0PTA7Y3Q8RnQubGVuZ3RoOysrY3QpeWVbJGUrK109RnQuY2hhckF0KGN0KX1lbHNlIFFlPTIseWVbJGUrK109IisiO2Vsc2UgUWU9MSx5ZVskZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2Rl''@;'; put 'put ''KFRbUGVdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgbWFnaWM6ICIrVisiICIrZ2VbVl0pfX1yZXR1cm4geWUuc2xpY2UoMCwkZSkuam9pbigiIil9LGVuY29kZTpmdW5jdGlvbiBQKFYsVCxTKXtpZihWPT09eiYmTylyZXR1cm4gTyhULFMpO2lmKGllW1Zd''@;'; put 'put ''KXJldHVybihPPWllW3o9Vl0pKFQsUyk7VyYmQnVmZmVyLmlzQnVmZmVyKFQpJiYoVD1ULnRvU3RyaW5nKCJ1dGY4IikpO3ZhciBndCxGPVQubGVuZ3RoLHllPVc/QnVmZmVyLmFsbG9jVW5zYWZlKDQqRik6W10sQ2U9MCxEZT0wLFBlPTAsUWU9MCwkZT1MW1ZdLHl0PSIiLHB0PSJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgVDtpZigkZSYmKGd0PSRlLmVuYykpZm9yKERlPTA7RGU8RjsrK0RlLCsrUGUpKENlPWd0W3B0P1QuY2hhckF0KERlKTpUW0RlXV0pPjI1NT8oeWVbUGVdPUNlPj44LHllWysrUGVdPTI1NSZDZSk6eWVbUGVdPTI1NSZDZTtlbHNle2lmKCEoeXQ9Z2VbVl0pKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiVW5yZWNvZ25pemVkIENQOiAiK1YpO3N3aXRjaCh5dCl7Y2FzZSJ1dGY4IjppZihXJiZwdCl7UGU9KHllPU4oVCx5dCkpLmxlbmd0aDticmVha31mb3IoRGU9MDtEZTxGOysrRGUsKytQZSkoQ2U9cHQ/VC5jaGFyQ29kZUF0KERlKTpUW0RlXS5jaGFyQ29kZUF0KDApKTw9MTI3P3ll''@;'; put 'put ''W1BlXT1DZTpDZTw9MjA0Nz8oeWVbUGVdPTE5MisoQ2U+PjYpLHllWysrUGVdPTEyOCsoNjMmQ2UpKTpDZT49NTUyOTYmJkNlPD01NzM0Mz8oQ2UtPTU1Mjk2LFFlPShwdD9ULmNoYXJDb2RlQXQoKytEZSk6VFsrK0RlXS5jaGFyQ29kZUF0KDApKS01NjMyMCsoQ2U8PDEwKSx5ZVtQZV09MjQw''@;'; put 'put ''KyhRZT4+PjE4JjcpLHllWysrUGVdPTE0NCsoUWU+Pj4xMiY2MykseWVbKytQZV09MTI4KyhRZT4+PjYmNjMpLHllWysrUGVdPTEyOCsoNjMmUWUpKTooeWVbUGVdPTIyNCsoQ2U+PjEyKSx5ZVsrK1BlXT0xMjgrKENlPj42JjYzKSx5ZVsrK1BlXT0xMjgrKDYzJkNlKSk7YnJlYWs7Y2FzZSJh''@;'; put 'put ''c2NpaSI6aWYoVyYmInN0cmluZyI9PXR5cGVvZiBUKXtQZT0oeWU9TihULHl0KSkubGVuZ3RoO2JyZWFrfWZvcihEZT0wO0RlPEY7KytEZSwrK1BlKXtpZighKChDZT1wdD9ULmNoYXJDb2RlQXQoRGUpOlRbRGVdLmNoYXJDb2RlQXQoMCkpPD0xMjcpKXRocm93IG5ldyBFcnJvcigiYmFkIGFz''@;'; put 'put ''Y2lpICIrQ2UpO3llW1BlXT1DZX1icmVhaztjYXNlInV0ZjE2bGUiOmlmKFcmJiJzdHJpbmciPT10eXBlb2YgVCl7UGU9KHllPU4oVCx5dCkpLmxlbmd0aDticmVha31mb3IoRGU9MDtEZTxGOysrRGUpQ2U9cHQ/VC5jaGFyQ29kZUF0KERlKTpUW0RlXS5jaGFyQ29kZUF0KDApLHllW1BlKytd''@;'; put 'put ''PTI1NSZDZSx5ZVtQZSsrXT1DZT4+ODticmVhaztjYXNlInV0ZjE2YmUiOmZvcihEZT0wO0RlPEY7KytEZSlDZT1wdD9ULmNoYXJDb2RlQXQoRGUpOlRbRGVdLmNoYXJDb2RlQXQoMCkseWVbUGUrK109Q2U+PjgseWVbUGUrK109MjU1JkNlO2JyZWFrO2Nhc2UidXRmMzJsZSI6Zm9yKERlPTA7''@;'; put 'put ''RGU8RjsrK0RlKShDZT1wdD9ULmNoYXJDb2RlQXQoRGUpOlRbRGVdLmNoYXJDb2RlQXQoMCkpPj01NTI5NiYmQ2U8PTU3MzQzJiYoQ2U9NjU1MzYrKENlLTU1Mjk2PDwxMCkrKFRbKytEZV0uY2hhckNvZGVBdCgwKS01NjMyMCkpLHllW1BlKytdPTI1NSZDZSx5ZVtQZSsrXT0yNTUmKENlPj49''@;'; put 'put ''OCkseWVbUGUrK109MjU1JihDZT4+PTgpLHllW1BlKytdPTI1NSYoQ2U+Pj04KTticmVhaztjYXNlInV0ZjMyYmUiOmZvcihEZT0wO0RlPEY7KytEZSkoQ2U9cHQ/VC5jaGFyQ29kZUF0KERlKTpUW0RlXS5jaGFyQ29kZUF0KDApKT49NTUyOTYmJkNlPD01NzM0MyYmKENlPTY1NTM2KyhDZS01''@;'; put 'put ''NTI5Njw8MTApKyhUWysrRGVdLmNoYXJDb2RlQXQoMCktNTYzMjApKSx5ZVtQZSszXT0yNTUmQ2UseWVbUGUrMl09MjU1JihDZT4+PTgpLHllW1BlKzFdPTI1NSYoQ2U+Pj04KSx5ZVtQZV09MjU1JihDZT4+PTgpLFBlKz00O2JyZWFrO2Nhc2UidXRmNyI6Zm9yKERlPTA7RGU8RjtEZSsrKXt2''@;'; put 'put ''YXIgbXQ9cHQ/VC5jaGFyQXQoRGUpOlRbRGVdLmNoYXJBdCgwKTtpZigiKyIhPT1tdClpZigiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknKCksLS4vOj8iLmluZGV4T2YobXQpPi0xKXllW1BlKytdPW10LmNoYXJDb2RlQXQo''@;'; put 'put ''MCk7ZWxzZXt2YXIgdnQ9UCgxMjAxLG10KTt5ZVtQZSsrXT00Myx5ZVtQZSsrXT1FZS5jaGFyQ29kZUF0KHZ0WzBdPj4yKSx5ZVtQZSsrXT1FZS5jaGFyQ29kZUF0KCgoMyZ2dFswXSk8PDQpKygodnRbMV18fDApPj40KSkseWVbUGUrK109RWUuY2hhckNvZGVBdCgoKDE1JnZ0WzFdKTw8Mikr''@;'; put 'put ''KCh2dFsyXXx8MCk+PjYpKSx5ZVtQZSsrXT00NX1lbHNlIHllW1BlKytdPTQzLHllW1BlKytdPTQ1fWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBtYWdpYzogIitWKyIgIitnZVtWXSl9fXJldHVybiB5ZT15ZS5zbGljZSgwLFBlKSxXP1MmJiJidWYiIT09Uz8i''@;'; put 'put ''YXJyIiE9PVM/eWUudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwoeWUpOnllOiJzdHIiPT1TP3llLm1hcChsZSkuam9pbigiIik6eWV9LGhhc2NwOmZ1bmN0aW9uKFYpe3JldHVybiEoIUxbVl0mJiFnZVtWXSl9LG1hZ2ljOmdlLGNhY2hlOlRlfSxMfSl9LDY5OTYzOihYZSxKZSk9''@;'; put 'put ''Pnt2YXIgTCxnZSxCOyFmdW5jdGlvbihFKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIERPX05PVF9FWFBPUlRfSlNaSVApWGUuZXhwb3J0cz1FKCk7ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIERPX05PVF9FWFBPUlRfSlNaSVApSlNaaXBTeW5jPUUoKSxnZT1bXSx2b2lkIDAhPT0oQj0i''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YoTD1FKT9MLmFwcGx5KEplLGdlKTpMKSYmKFhlLmV4cG9ydHM9Qik7ZWxzZXt2YXIgTWU7InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP01lPWdsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/TWU9d2luZG93OiJ1bmRlZmluZWQiIT10''@;'; put 'put ''eXBlb2YgZ2xvYmFsP01lPWdsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mICQmJiQuZ2xvYmFsP01lPSQuZ2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmKE1lPXNlbGYpLE1lLkpTWmlwU3luYz1FKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBRKFosaWUsbGUpe2Z1bmN0''@;'; put 'put ''aW9uIFkoZWUscSl7aWYoIWllW2VlXSl7aWYoIVpbZWVdKXtpZihXKXJldHVybiBXKGVlLCEwKTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitlZSsiJyIpfXZhciBzZT1pZVtlZV09e2V4cG9ydHM6e319O1pbZWVdWzBdLmNhbGwoc2UuZXhwb3J0cyxmdW5jdGlvbihh''@;'; put 'put ''ZSl7cmV0dXJuIFkoWltlZV1bMV1bYWVdfHxhZSl9LHNlLHNlLmV4cG9ydHMsUSxaLGllLGxlKX1yZXR1cm4gaWVbZWVdLmV4cG9ydHN9Zm9yKHZhciBXPXZvaWQgMCxOPTA7TjxsZS5sZW5ndGg7TisrKVkobGVbTl0pO3JldHVybiBZfSh7MTpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIGxlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7aWUuZW5jb2RlPWZ1bmN0aW9uKFksVyl7Zm9yKHZhciBlZSxxLEosc2UsYWUsZmUsZGUsTj0iIix2ZT0wO3ZlPFkubGVuZ3RoOylzZT0oZWU9WS5jaGFy''@;'; put 'put ''Q29kZUF0KHZlKyspKT4+MixhZT0oMyZlZSk8PDR8KHE9WS5jaGFyQ29kZUF0KHZlKyspKT4+NCxmZT0oMTUmcSk8PDJ8KEo9WS5jaGFyQ29kZUF0KHZlKyspKT4+NixkZT02MyZKLGlzTmFOKHEpP2ZlPWRlPTY0OmlzTmFOKEopJiYoZGU9NjQpLE49TitsZS5jaGFyQXQoc2UpK2xlLmNoYXJB''@;'; put 'put ''dChhZSkrbGUuY2hhckF0KGZlKStsZS5jaGFyQXQoZGUpO3JldHVybiBOfSxpZS5kZWNvZGU9ZnVuY3Rpb24oWSxXKXt2YXIgcSxKLHNlLGFlLGZlLGRlLE49IiIsdmU9MDtmb3IoWT1ZLnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCIiKTt2ZTxZLmxlbmd0aDspc2U9bGUuaW5kZXhP''@;'; put 'put ''ZihZLmNoYXJBdCh2ZSsrKSkscT0oMTUmKGFlPWxlLmluZGV4T2YoWS5jaGFyQXQodmUrKykpKSk8PDR8KGZlPWxlLmluZGV4T2YoWS5jaGFyQXQodmUrKykpKT4+MixKPSgzJmZlKTw8NnwoZGU9bGUuaW5kZXhPZihZLmNoYXJBdCh2ZSsrKSkpLE4rPVN0cmluZy5mcm9tQ2hhckNvZGUoc2U8''@;'; put 'put ''PDJ8YWU+PjQpLDY0IT1mZSYmKE4rPVN0cmluZy5mcm9tQ2hhckNvZGUocSkpLDY0IT1kZSYmKE4rPVN0cmluZy5mcm9tQ2hhckNvZGUoSikpO3JldHVybiBOfX0se31dLDI6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGxlKCl7dGhpcy5jb21wcmVzc2VkU2l6ZT0w''@;'; put 'put ''LHRoaXMudW5jb21wcmVzc2VkU2l6ZT0wLHRoaXMuY3JjMzI9MCx0aGlzLmNvbXByZXNzaW9uTWV0aG9kPW51bGwsdGhpcy5jb21wcmVzc2VkQ29udGVudD1udWxsfWxlLnByb3RvdHlwZT17Z2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxnZXRDb21wcmVzc2VkQ29udGVudDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBudWxsfX0sWi5leHBvcnRzPWxlfSx7fV0sMzpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7aWUuU1RPUkU9e21hZ2ljOiJcMFwwIixjb21wcmVzczpmdW5jdGlvbihsZSl7cmV0dXJuIGxlfSx1bmNvbXByZXNzOmZ1bmN0aW9uKGxlKXtyZXR1cm4gbGV9''@;'; put 'put ''LGNvbXByZXNzSW5wdXRUeXBlOm51bGwsdW5jb21wcmVzc0lucHV0VHlwZTpudWxsfSxpZS5ERUZMQVRFPVEoIi4vZmxhdGUiKX0seyIuL2ZsYXRlIjo4fV0sNDpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vdXRpbHMiKSxZPVswLDE5OTY5NTk4OTQsMzk5Mzkx''@;'; put 'put ''OTc4OCwyNTY3NTI0Nzk0LDEyNDYzNDEzNywxODg2MDU3NjE1LDM5MTU2MjE2ODUsMjY1NzM5MjAzNSwyNDkyNjgyNzQsMjA0NDUwODMyNCwzNzcyMTE1MjMwLDI1NDcxNzc4NjQsMTYyOTQxOTk1LDIxMjU1NjEwMjEsMzg4NzYwNzA0NywyNDI4NDQ0MDQ5LDQ5ODUzNjU0OCwxNzg5OTI3NjY2''@;'; put 'put ''LDQwODkwMTY2NDgsMjIyNzA2MTIxNCw0NTA1NDg4NjEsMTg0MzI1ODYwMyw0MTA3NTgwNzUzLDIyMTE2Nzc2MzksMzI1ODgzOTkwLDE2ODQ3NzcxNTIsNDI1MTEyMjA0MiwyMzIxOTI2NjM2LDMzNTYzMzQ4NywxNjYxMzY1NDY1LDQxOTUzMDI3NTUsMjM2NjExNTMxNyw5OTcwNzMwOTYsMTI4''@;'; put 'put ''MTk1Mzg4NiwzNTc5ODU1MzMyLDI3MjQ2ODgyNDIsMTAwNjg4ODE0NSwxMjU4NjA3Njg3LDM1MjQxMDE2MjksMjc2ODk0MjQ0Myw5MDEwOTc3MjIsMTExOTAwMDY4NCwzNjg2NTE3MjA2LDI4OTgwNjU3MjgsODUzMDQ0NDUxLDExNzIyNjYxMDEsMzcwNTAxNTc1OSwyODgyNjE2NjY1LDY1MTc2''@;'; put 'put ''Nzk4MCwxMzczNTAzNTQ2LDMzNjk1NTQzMDQsMzIxODEwNDU5OCw1NjU1MDcyNTMsMTQ1NDYyMTczMSwzNDg1MTExNzA1LDMwOTk0MzYzMDMsNjcxMjY2OTc0LDE1OTQxOTgwMjQsMzMyMjczMDkzMCwyOTcwMzQ3ODEyLDc5NTgzNTUyNywxNDgzMjMwMjI1LDMyNDQzNjcyNzUsMzA2MDE0OTU2''@;'; put 'put ''NSwxOTk0MTQ2MTkyLDMxMTU4NTM0LDI1NjM5MDc3NzIsNDAyMzcxNzkzMCwxOTA3NDU5NDY1LDExMjYzNzIxNSwyNjgwMTUzMjUzLDM5MDQ0MjcwNTksMjAxMzc3NjI5MCwyNTE3MjIwMzYsMjUxNzIxNTM3NCwzNzc1ODMwMDQwLDIxMzc2NTY3NjMsMTQxMzc2ODEzLDI0MzkyNzc3MTksMzg2''@;'; put 'put ''NTI3MTI5NywxODAyMTk1NDQ0LDQ3Njg2NDg2NiwyMjM4MDAxMzY4LDQwNjY1MDg4NzgsMTgxMjM3MDkyNSw0NTMwOTI3MzEsMjE4MTYyNTAyNSw0MTExNDUxMjIzLDE3MDYwODg5MDIsMzE0MDQyNzA0LDIzNDQ1MzIyMDIsNDI0MDAxNzUzMiwxNjU4NjU4MjcxLDM2NjYxOTk3NywyMzYyNjcw''@;'; put 'put ''MzIzLDQyMjQ5OTQ0MDUsMTMwMzUzNTk2MCw5ODQ5NjE0ODYsMjc0NzAwNzA5MiwzNTY5MDM3NTM4LDEyNTYxNzA4MTcsMTAzNzYwNDMxMSwyNzY1MjEwNzMzLDM1NTQwNzk5OTUsMTEzMTAxNDUwNiw4Nzk2Nzk5OTYsMjkwOTI0MzQ2MiwzNjYzNzcxODU2LDExNDExMjQ0NjcsODU1ODQyMjc3''@;'; put 'put ''LDI4NTI4MDE2MzEsMzcwODY0ODY0OSwxMzQyNTMzOTQ4LDY1NDQ1OTMwNiwzMTg4Mzk2MDQ4LDMzNzMwMTUxNzQsMTQ2NjQ3OTkwOSw1NDQxNzk2MzUsMzExMDUyMzkxMywzNDYyNTIyMDE1LDE1OTE2NzEwNTQsNzAyMTM4Nzc2LDI5NjY0NjA0NTAsMzM1Mjc5OTQxMiwxNTA0OTE4ODA3LDc4''@;'; put 'put ''MzU1MTg3MywzMDgyNjQwNDQzLDMyMzM0NDI5ODksMzk4ODI5MjM4NCwyNTk2MjU0NjQ2LDYyMzE3MDY4LDE5NTc4MTA4NDIsMzkzOTg0NTk0NSwyNjQ3ODE2MTExLDgxNDcwOTk3LDE5NDM4MDM1MjMsMzgxNDkxODkzMCwyNDg5NTk2ODA0LDIyNTI3NDQzMCwyMDUzNzkwMzc2LDM4MjYxNzU3''@;'; put 'put ''NTUsMjQ2NjkwNjAxMywxNjc4MTY3NDMsMjA5NzY1MTM3Nyw0MDI3NTUyNTgwLDIyNjU0OTAzODYsNTAzNDQ0MDcyLDE3NjIwNTA4MTQsNDE1MDQxNzI0NSwyMTU0MTI5MzU1LDQyNjUyMjIyNSwxODUyNTA3ODc5LDQyNzUzMTM1MjYsMjMxMjMxNzkyMCwyODI3NTM2MjYsMTc0MjU1NTg1Miw0''@;'; put 'put ''MTg5NzA4MTQzLDIzOTQ4Nzc5NDUsMzk3OTE3NzYzLDE2MjIxODM2MzcsMzYwNDM5MDg4OCwyNzE0ODY2NTU4LDk1MzcyOTczMiwxMzQwMDc2NjI2LDM1MTg3MTk5ODUsMjc5NzM2MDk5OSwxMDY4ODI4MzgxLDEyMTk2Mzg4NTksMzYyNDc0MTg1MCwyOTM2Njc1MTQ4LDkwNjE4NTQ2MiwxMDkw''@;'; put 'put ''ODEyNTEyLDM3NDc2NzIwMDMsMjgyNTM3OTY2OSw4MjkzMjkxMzUsMTE4MTMzNTE2MSwzNDEyMTc3ODA0LDMxNjA4MzQ4NDIsNjI4MDg1NDA4LDEzODI2MDUzNjYsMzQyMzM2OTEwOSwzMTM4MDc4NDY3LDU3MDU2MjIzMywxNDI2NDAwODE1LDMzMTczMTY1NDIsMjk5ODczMzYwOCw3MzMyMzk5''@;'; put 'put ''NTQsMTU1NTI2MTk1NiwzMjY4OTM1NTkxLDMwNTAzNjA2MjUsNzUyNDU5NDAzLDE1NDEzMjAyMjEsMjYwNzA3MTkyMCwzOTY1OTczMDMwLDE5Njk5MjI5NzIsNDA3MzU0OTgsMjYxNzgzNzIyNSwzOTQzNTc3MTUxLDE5MTMwODc4NzcsODM5MDgzNzEsMjUxMjM0MTYzNCwzODAzNzQwNjkyLDIw''@;'; put 'put ''NzUyMDg2MjIsMjEzMjYxMTEyLDI0NjMyNzI2MDMsMzg1NTk5MDI4NSwyMDk0ODU0MDcxLDE5ODk1ODg4MSwyMjYyMDI5MDEyLDQwNTcyNjA2MTAsMTc1OTM1OTk5Miw1MzQ0MTQxOTAsMjE3NjcxODU0MSw0MTM5MzI5MTE1LDE4NzM4MzYwMDEsNDE0NjY0NTY3LDIyODIyNDg5MzQsNDI3OTIw''@;'; put 'put ''MDM2OCwxNzExNjg0NTU0LDI4NTI4MTExNiwyNDA1ODAxNzI3LDQxNjcyMTY3NDUsMTYzNDQ2Nzc5NSwzNzYyMjk3MDEsMjY4NTA2Nzg5NiwzNjA4MDA3NDA2LDEzMDg5MTg2MTIsOTU2NTQzOTM4LDI4MDg1NTUxMDUsMzQ5NTk1ODI2MywxMjMxNjM2MzAxLDEwNDc0MjcwMzUsMjkzMjk1OTgx''@;'; put 'put ''OCwzNjU0NzAzODM2LDEwODgzNTkyNzAsOTM2OTE4ZTMsMjg0NzcxNDg5OSwzNzM2ODM3ODI5LDEyMDI5MDA4NjMsODE3MjMzODk3LDMxODMzNDIxMDgsMzQwMTIzNzEzMCwxNDA0Mjc3NTUyLDYxNTgxODE1MCwzMTM0MjA3NDkzLDM0NTM0MjEyMDMsMTQyMzg1NzQ0OSw2MDE0NTA0MzEsMzAw''@;'; put 'put ''OTgzNzYxNCwzMjk0NzEwNDU2LDE1NjcxMDM3NDYsNzExOTI4NzI0LDMwMjA2Njg0NzEsMzI3MjM4MDA2NSwxNTEwMzM0MjM1LDc1NTE2NzExN107Wi5leHBvcnRzPWZ1bmN0aW9uKE4sZWUpe2lmKHZvaWQgMD09PU58fCFOLmxlbmd0aClyZXR1cm4gMDt2YXIgcT0ic3RyaW5nIiE9PWxlLmdl''@;'; put 'put ''dFR5cGVPZihOKTt2b2lkIDA9PT1lZSYmKGVlPTApO3ZhciBhZT0wO2VlXj0tMTtmb3IodmFyIGZlPTAsZGU9Ti5sZW5ndGg7ZmU8ZGU7ZmUrKylhZT1xP05bZmVdOk4uY2hhckNvZGVBdChmZSksZWU9ZWU+Pj44XllbMjU1JihlZV5hZSldO3JldHVybi0xXmVlfX0seyIuL3V0aWxzIjoyMX1d''@;'; put 'put ''LDU6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO3ZhciBsZT1RKCIuL3V0aWxzIik7ZnVuY3Rpb24gWShXKXt0aGlzLmRhdGE9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMuaW5kZXg9MH1ZLnByb3RvdHlwZT17Y2hlY2tPZmZzZXQ6ZnVuY3Rpb24oVyl7dGhpcy5jaGVja0luZGV4KHRo''@;'; put 'put ''aXMuaW5kZXgrVyl9LGNoZWNrSW5kZXg6ZnVuY3Rpb24oVyl7aWYodGhpcy5sZW5ndGg8V3x8VzwwKXRocm93IG5ldyBFcnJvcigiRW5kIG9mIGRhdGEgcmVhY2hlZCAoZGF0YSBsZW5ndGggPSAiK3RoaXMubGVuZ3RoKyIsIGFza2VkIGluZGV4ID0gIitXKyIpLiBDb3JydXB0ZWQgemlwID8i''@;'; put 'put ''KX0sc2V0SW5kZXg6ZnVuY3Rpb24oVyl7dGhpcy5jaGVja0luZGV4KFcpLHRoaXMuaW5kZXg9V30sc2tpcDpmdW5jdGlvbihXKXt0aGlzLnNldEluZGV4KHRoaXMuaW5kZXgrVyl9LGJ5dGVBdDpmdW5jdGlvbihXKXt9LHJlYWRJbnQ6ZnVuY3Rpb24oVyl7dmFyIGVlLE49MDtmb3IodGhpcy5j''@;'; put 'put ''aGVja09mZnNldChXKSxlZT10aGlzLmluZGV4K1ctMTtlZT49dGhpcy5pbmRleDtlZS0tKU49KE48PDgpK3RoaXMuYnl0ZUF0KGVlKTtyZXR1cm4gdGhpcy5pbmRleCs9VyxOfSxyZWFkU3RyaW5nOmZ1bmN0aW9uKFcpe3JldHVybiBsZS50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnJlYWRE''@;'; put 'put ''YXRhKFcpKX0scmVhZERhdGE6ZnVuY3Rpb24oVyl7fSxsYXN0SW5kZXhPZlNpZ25hdHVyZTpmdW5jdGlvbihXKXt9LHJlYWREYXRlOmZ1bmN0aW9uKCl7dmFyIFc9dGhpcy5yZWFkSW50KDQpO3JldHVybiBuZXcgRGF0ZSgxOTgwKyhXPj4yNSYxMjcpLChXPj4yMSYxNSktMSxXPj4xNiYzMSxX''@;'; put 'put ''Pj4xMSYzMSxXPj41JjYzLCgzMSZXKTw8MSl9fSxaLmV4cG9ydHM9WX0seyIuL3V0aWxzIjoyMX1dLDY6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO2llLmJhc2U2ND0hMSxpZS5iaW5hcnk9ITEsaWUuZGlyPSExLGllLmNyZWF0ZUZvbGRlcnM9ITEsaWUuZGF0ZT1udWxsLGllLmNv''@;'; put 'put ''bXByZXNzaW9uPW51bGwsaWUuY29tbWVudD1udWxsfSx7fV0sNzpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vdXRpbHMiKTtpZS5zdHJpbmcyYmluYXJ5PWZ1bmN0aW9uKFkpe3JldHVybiBsZS5zdHJpbmcyYmluYXJ5KFkpfSxpZS5zdHJpbmcyVWludDhBcnJh''@;'; put 'put ''eT1mdW5jdGlvbihZKXtyZXR1cm4gbGUudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLFkpfSxpZS51aW50OEFycmF5MlN0cmluZz1mdW5jdGlvbihZKXtyZXR1cm4gbGUudHJhbnNmb3JtVG8oInN0cmluZyIsWSl9LGllLnN0cmluZzJCbG9iPWZ1bmN0aW9uKFkpe3ZhciBXPWxlLnRyYW5zZm9y''@;'; put 'put ''bVRvKCJhcnJheWJ1ZmZlciIsWSk7cmV0dXJuIGxlLmFycmF5QnVmZmVyMkJsb2IoVyl9LGllLmFycmF5QnVmZmVyMkJsb2I9ZnVuY3Rpb24oWSl7cmV0dXJuIGxlLmFycmF5QnVmZmVyMkJsb2IoWSl9LGllLnRyYW5zZm9ybVRvPWZ1bmN0aW9uKFksVyl7cmV0dXJuIGxlLnRyYW5zZm9ybVRv''@;'; put 'put ''KFksVyl9LGllLmdldFR5cGVPZj1mdW5jdGlvbihZKXtyZXR1cm4gbGUuZ2V0VHlwZU9mKFkpfSxpZS5jaGVja1N1cHBvcnQ9ZnVuY3Rpb24oWSl7cmV0dXJuIGxlLmNoZWNrU3VwcG9ydChZKX0saWUuTUFYX1ZBTFVFXzE2QklUUz1sZS5NQVhfVkFMVUVfMTZCSVRTLGllLk1BWF9WQUxVRV8z''@;'; put 'put ''MkJJVFM9bGUuTUFYX1ZBTFVFXzMyQklUUyxpZS5wcmV0dHk9ZnVuY3Rpb24oWSl7cmV0dXJuIGxlLnByZXR0eShZKX0saWUuZmluZENvbXByZXNzaW9uPWZ1bmN0aW9uKFkpe3JldHVybiBsZS5maW5kQ29tcHJlc3Npb24oWSl9LGllLmlzUmVnRXhwPWZ1bmN0aW9uKFkpe3JldHVybiBsZS5p''@;'; put 'put ''c1JlZ0V4cChZKX19LHsiLi91dGlscyI6MjF9XSw4OltmdW5jdGlvbihRLFosaWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgbGU9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQxNkFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQzMkFycmF5''@;'; put 'put ''LFk9USgicGFrbyIpO2llLnVuY29tcHJlc3NJbnB1dFR5cGU9bGU/InVpbnQ4YXJyYXkiOiJhcnJheSIsaWUuY29tcHJlc3NJbnB1dFR5cGU9bGU/InVpbnQ4YXJyYXkiOiJhcnJheSIsaWUubWFnaWM9IlxiXDAiLGllLmNvbXByZXNzPWZ1bmN0aW9uKFcpe3JldHVybiBZLmRlZmxhdGVSYXco''@;'; put 'put ''Vyl9LGllLnVuY29tcHJlc3M9ZnVuY3Rpb24oVyl7cmV0dXJuIFkuaW5mbGF0ZVJhdyhXKX19LHtwYWtvOjI0fV0sOTpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vYmFzZTY0Iik7ZnVuY3Rpb24gWShXLE4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIFkpKXJldHVy''@;'; put 'put ''biBuZXcgWShXLE4pO3RoaXMuZmlsZXM9e30sdGhpcy5jb21tZW50PW51bGwsdGhpcy5yb290PSIiLFcmJnRoaXMubG9hZChXLE4pLHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZWU9bmV3IFk7Zm9yKHZhciBxIGluIHRoaXMpImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXNbcV0mJihlZVtxXT10''@;'; put 'put ''aGlzW3FdKTtyZXR1cm4gZWV9fShZLnByb3RvdHlwZT1RKCIuL29iamVjdCIpKS5sb2FkPVEoIi4vbG9hZCIpLFkuc3VwcG9ydD1RKCIuL3N1cHBvcnQiKSxZLmRlZmF1bHRzPVEoIi4vZGVmYXVsdHMiKSxZLnV0aWxzPVEoIi4vZGVwcmVjYXRlZFB1YmxpY1V0aWxzIiksWS5iYXNlNjQ9e2Vu''@;'; put 'put ''Y29kZTpmdW5jdGlvbihXKXtyZXR1cm4gbGUuZW5jb2RlKFcpfSxkZWNvZGU6ZnVuY3Rpb24oVyl7cmV0dXJuIGxlLmRlY29kZShXKX19LFkuY29tcHJlc3Npb25zPVEoIi4vY29tcHJlc3Npb25zIiksWi5leHBvcnRzPVl9LHsiLi9iYXNlNjQiOjEsIi4vY29tcHJlc3Npb25zIjozLCIuL2Rl''@;'; put 'put ''ZmF1bHRzIjo2LCIuL2RlcHJlY2F0ZWRQdWJsaWNVdGlscyI6NywiLi9sb2FkIjoxMCwiLi9vYmplY3QiOjEzLCIuL3N1cHBvcnQiOjE3fV0sMTA6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO3ZhciBsZT1RKCIuL2Jhc2U2NCIpLFk9USgiLi96aXBFbnRyaWVzIik7Wi5leHBvcnRz''@;'; put 'put ''PWZ1bmN0aW9uKFcsTil7dmFyIGVlLHEsSixzZTtmb3IoKE49Tnx8e30pLmJhc2U2NCYmKFc9bGUuZGVjb2RlKFcpKSxlZT0ocT1uZXcgWShXLE4pKS5maWxlcyxKPTA7SjxlZS5sZW5ndGg7SisrKXRoaXMuZmlsZSgoc2U9ZWVbSl0pLmZpbGVOYW1lLHNlLmRlY29tcHJlc3NlZCx7YmluYXJ5''@;'; put 'put ''OiEwLG9wdGltaXplZEJpbmFyeVN0cmluZzohMCxkYXRlOnNlLmRhdGUsZGlyOnNlLmRpcixjb21tZW50OnNlLmZpbGVDb21tZW50Lmxlbmd0aD9zZS5maWxlQ29tbWVudDpudWxsLGNyZWF0ZUZvbGRlcnM6Ti5jcmVhdGVGb2xkZXJzfSk7cmV0dXJuIHEuemlwQ29tbWVudC5sZW5ndGgmJih0''@;'; put 'put ''aGlzLmNvbW1lbnQ9cS56aXBDb21tZW50KSx0aGlzfX0seyIuL2Jhc2U2NCI6MSwiLi96aXBFbnRyaWVzIjoyMn1dLDExOltmdW5jdGlvbihRLFosaWUpeyhmdW5jdGlvbihsZSl7InVzZSBzdHJpY3QiO3ZhciBZPWZ1bmN0aW9uKCl7fTtpZih2b2lkIDAhPT1sZSl7dmFyIFc9IWxlLmZyb207''@;'; put 'put ''aWYoIVcpdHJ5e2xlLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaChOKXtXPSEwfVk9Vz9mdW5jdGlvbihOLGVlKXtyZXR1cm4gZWU/bmV3IGxlKE4sZWUpOm5ldyBsZShOKX06bGUuZnJvbS5iaW5kKGxlKSxsZS5hbGxvY3x8KGxlLmFsbG9jPWZ1bmN0aW9uKE4pe3JldHVybiBuZXcgbGUoTil9''@;'; put 'put ''KX1aLmV4cG9ydHM9ZnVuY3Rpb24oTixlZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBOP2xlLmFsbG9jKE4pOlkoTixlZSl9LFouZXhwb3J0cy50ZXN0PWZ1bmN0aW9uKE4pe3JldHVybiBsZS5pc0J1ZmZlcihOKX19KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXI/QnVm''@;'; put 'put ''ZmVyOnZvaWQgMCl9LHt9XSwxMjpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vdWludDhBcnJheVJlYWRlciIpO2Z1bmN0aW9uIFkoVyl7dGhpcy5kYXRhPVcsdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmluZGV4PTB9KFkucHJvdG90eXBlPW5l''@;'; put 'put ''dyBsZSkucmVhZERhdGE9ZnVuY3Rpb24oVyl7dGhpcy5jaGVja09mZnNldChXKTt2YXIgTj10aGlzLmRhdGEuc2xpY2UodGhpcy5pbmRleCx0aGlzLmluZGV4K1cpO3JldHVybiB0aGlzLmluZGV4Kz1XLE59LFouZXhwb3J0cz1ZfSx7Ii4vdWludDhBcnJheVJlYWRlciI6MTh9XSwxMzpbZnVu''@;'; put 'put ''Y3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vc3VwcG9ydCIpLFk9USgiLi91dGlscyIpLFc9USgiLi9jcmMzMiIpLE49USgiLi9zaWduYXR1cmUiKSxlZT1RKCIuL2RlZmF1bHRzIikscT1RKCIuL2Jhc2U2NCIpLEo9USgiLi9jb21wcmVzc2lvbnMiKSxzZT1RKCIuL2Nv''@;'; put 'put ''bXByZXNzZWRPYmplY3QiKSxhZT1RKCIuL25vZGVCdWZmZXIiKSxmZT1RKCIuL3V0ZjgiKSxkZT1RKCIuL3N0cmluZ1dyaXRlciIpLHZlPVEoIi4vdWludDhBcnJheVdyaXRlciIpLEFlPWZ1bmN0aW9uKFYpe2lmKFYuX2RhdGEgaW5zdGFuY2VvZiBzZSYmKFYuX2RhdGE9Vi5fZGF0YS5nZXRD''@;'; put 'put ''b250ZW50KCksVi5vcHRpb25zLmJpbmFyeT0hMCxWLm9wdGlvbnMuYmFzZTY0PSExLCJ1aW50OGFycmF5Ij09PVkuZ2V0VHlwZU9mKFYuX2RhdGEpKSl7dmFyIFQ9Vi5fZGF0YTtWLl9kYXRhPW5ldyBVaW50OEFycmF5KFQubGVuZ3RoKSwwIT09VC5sZW5ndGgmJlYuX2RhdGEuc2V0KFQsMCl9''@;'; put 'put ''cmV0dXJuIFYuX2RhdGF9LGtlPWZ1bmN0aW9uKFYpe3ZhciBUPUFlKFYpO3JldHVybiJzdHJpbmciPT09WS5nZXRUeXBlT2YoVCk/IVYub3B0aW9ucy5iaW5hcnkmJmxlLm5vZGVidWZmZXI/YWUoVCwidXRmLTgiKTpWLmFzQmluYXJ5KCk6VH0sU2U9ZnVuY3Rpb24oVil7dmFyIFQ9QWUodGhp''@;'; put 'put ''cyk7cmV0dXJuIG51bGw9PVQ/IiI6KHRoaXMub3B0aW9ucy5iYXNlNjQmJihUPXEuZGVjb2RlKFQpKSxUPVYmJnRoaXMub3B0aW9ucy5iaW5hcnk/UC51dGY4ZGVjb2RlKFQpOlkudHJhbnNmb3JtVG8oInN0cmluZyIsVCksIVYmJiF0aGlzLm9wdGlvbnMuYmluYXJ5JiYoVD1ZLnRyYW5zZm9y''@;'; put 'put ''bVRvKCJzdHJpbmciLFAudXRmOGVuY29kZShUKSkpLFQpfSxJZT1mdW5jdGlvbihWLFQsUyl7dGhpcy5uYW1lPVYsdGhpcy5kaXI9Uy5kaXIsdGhpcy5kYXRlPVMuZGF0ZSx0aGlzLmNvbW1lbnQ9Uy5jb21tZW50LHRoaXMuX2RhdGE9VCx0aGlzLm9wdGlvbnM9Uyx0aGlzLl9pbml0aWFsTWV0''@;'; put 'put ''YWRhdGE9e2RpcjpTLmRpcixkYXRlOlMuZGF0ZX19O0llLnByb3RvdHlwZT17YXNUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIFNlLmNhbGwodGhpcywhMCl9LGFzQmluYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIFNlLmNhbGwodGhpcywhMSl9LGFzTm9kZUJ1ZmZlcjpmdW5jdGlvbigpe3ZhciBWPWtl''@;'; put 'put ''KHRoaXMpO3JldHVybiBZLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixWKX0sYXNVaW50OEFycmF5OmZ1bmN0aW9uKCl7dmFyIFY9a2UodGhpcyk7cmV0dXJuIFkudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLFYpfSxhc0FycmF5QnVmZmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXNVaW50''@;'; put 'put ''OEFycmF5KCkuYnVmZmVyfX07dmFyIFRlPWZ1bmN0aW9uKFYsVCl7dmFyIEYsUz0iIjtmb3IoRj0wO0Y8VDtGKyspUys9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmViksVj4+Pj04O3JldHVybiBTfSxFZT1mdW5jdGlvbigpe3ZhciBULFMsVj17fTtmb3IoVD0wO1Q8YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aDtUKyspZm9yKFMgaW4gYXJndW1lbnRzW1RdKWFyZ3VtZW50c1tUXS5oYXNPd25Qcm9wZXJ0eShTKSYmdm9pZCAwPT09VltTXSYmKFZbU109YXJndW1lbnRzW1RdW1NdKTtyZXR1cm4gVn0sTz1mdW5jdGlvbihWLFQsUyl7dmFyIHllLEY9WS5nZXRUeXBlT2YoVCk7aWYoUz1mdW5jdGlvbihW''@;'; put 'put ''KXtyZXR1cm4hMD09PShWPVZ8fHt9KS5iYXNlNjQmJm51bGw9PVYuYmluYXJ5JiYoVi5iaW5hcnk9ITApLChWPUVlKFYsZWUpKS5kYXRlPVYuZGF0ZXx8bmV3IERhdGUsbnVsbCE9PVYuY29tcHJlc3Npb24mJihWLmNvbXByZXNzaW9uPVYuY29tcHJlc3Npb24udG9VcHBlckNhc2UoKSksVn0o''@;'; put 'put ''UyksUy5jcmVhdGVGb2xkZXJzJiYoeWU9eihWKSkmJm5lLmNhbGwodGhpcyx5ZSwhMCksUy5kaXJ8fG51bGw9PVQpUy5iYXNlNjQ9ITEsUy5iaW5hcnk9ITEsVD1udWxsO2Vsc2UgaWYoInN0cmluZyI9PT1GKVMuYmluYXJ5JiYhUy5iYXNlNjQmJiEwIT09Uy5vcHRpbWl6ZWRCaW5hcnlTdHJp''@;'; put 'put ''bmcmJihUPVkuc3RyaW5nMmJpbmFyeShUKSk7ZWxzZXtpZihTLmJhc2U2ND0hMSxTLmJpbmFyeT0hMCwhKEZ8fFQgaW5zdGFuY2VvZiBzZSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBvZiAnIitWKyInIGlzIGluIGFuIHVuc3VwcG9ydGVkIGZvcm1hdCAhIik7ImFycmF5YnVmZmVyIj09''@;'; put 'put ''PUYmJihUPVkudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLFQpKX12YXIgQ2U9bmV3IEllKFYsVCxTKTtyZXR1cm4gdGhpcy5maWxlc1tWXT1DZSxDZX0sej1mdW5jdGlvbihWKXsiLyI9PVYuc2xpY2UoLTEpJiYoVj1WLnN1YnN0cmluZygwLFYubGVuZ3RoLTEpKTt2YXIgVD1WLmxhc3RJbmRl''@;'; put 'put ''eE9mKCIvIik7cmV0dXJuIFQ+MD9WLnN1YnN0cmluZygwLFQpOiIifSxuZT1mdW5jdGlvbihWLFQpe3JldHVybiIvIiE9Vi5zbGljZSgtMSkmJihWKz0iLyIpLFQ9dm9pZCAwIT09VCYmVCx0aGlzLmZpbGVzW1ZdfHxPLmNhbGwodGhpcyxWLG51bGwse2RpcjohMCxjcmVhdGVGb2xkZXJzOlR9''@;'; put 'put ''KSx0aGlzLmZpbGVzW1ZdfSx0ZT1mdW5jdGlvbihWLFQpe3ZhciBGLFM9bmV3IHNlO3JldHVybiBWLl9kYXRhIGluc3RhbmNlb2Ygc2U/KFMudW5jb21wcmVzc2VkU2l6ZT1WLl9kYXRhLnVuY29tcHJlc3NlZFNpemUsUy5jcmMzMj1WLl9kYXRhLmNyYzMyLDA9PT1TLnVuY29tcHJlc3NlZFNp''@;'; put 'put ''emV8fFYuZGlyPyhUPUouU1RPUkUsUy5jb21wcmVzc2VkQ29udGVudD0iIixTLmNyYzMyPTApOlYuX2RhdGEuY29tcHJlc3Npb25NZXRob2Q9PT1ULm1hZ2ljP1MuY29tcHJlc3NlZENvbnRlbnQ9Vi5fZGF0YS5nZXRDb21wcmVzc2VkQ29udGVudCgpOihGPVYuX2RhdGEuZ2V0Q29udGVudCgp''@;'; put 'put ''LFMuY29tcHJlc3NlZENvbnRlbnQ9VC5jb21wcmVzcyhZLnRyYW5zZm9ybVRvKFQuY29tcHJlc3NJbnB1dFR5cGUsRikpKSk6KCghKEY9a2UoVikpfHwwPT09Ri5sZW5ndGh8fFYuZGlyKSYmKFQ9Si5TVE9SRSxGPSIiKSxTLnVuY29tcHJlc3NlZFNpemU9Ri5sZW5ndGgsUy5jcmMzMj1XKEYp''@;'; put 'put ''LFMuY29tcHJlc3NlZENvbnRlbnQ9VC5jb21wcmVzcyhZLnRyYW5zZm9ybVRvKFQuY29tcHJlc3NJbnB1dFR5cGUsRikpKSxTLmNvbXByZXNzZWRTaXplPVMuY29tcHJlc3NlZENvbnRlbnQubGVuZ3RoLFMuY29tcHJlc3Npb25NZXRob2Q9VC5tYWdpYyxTfSx4PWZ1bmN0aW9uKFYsVCxTLEYp''@;'; put 'put ''e3ZhciB5dCxwdCxGdCxvbixDZT1ZLnRyYW5zZm9ybVRvKCJzdHJpbmciLGZlLnV0ZjhlbmNvZGUoVC5uYW1lKSksRGU9VC5jb21tZW50fHwiIixQZT1ZLnRyYW5zZm9ybVRvKCJzdHJpbmciLGZlLnV0ZjhlbmNvZGUoRGUpKSxRZT1DZS5sZW5ndGghPT1ULm5hbWUubGVuZ3RoLCRlPVBlLmxl''@;'; put 'put ''bmd0aCE9PURlLmxlbmd0aCxndD1ULm9wdGlvbnMsbXQ9IiIsdnQ9IiIsZnQ9IiI7RnQ9VC5faW5pdGlhbE1ldGFkYXRhLmRpciE9PVQuZGlyP1QuZGlyOmd0LmRpcix5dD0ob249VC5faW5pdGlhbE1ldGFkYXRhLmRhdGUhPT1ULmRhdGU/VC5kYXRlOmd0LmRhdGUpLmdldEhvdXJzKCkseXQ8''@;'; put 'put ''PD02LHl0fD1vbi5nZXRNaW51dGVzKCkseXQ8PD01LHl0fD1vbi5nZXRTZWNvbmRzKCkvMixwdD1vbi5nZXRGdWxsWWVhcigpLTE5ODAscHQ8PD00LHB0fD1vbi5nZXRNb250aCgpKzEscHQ8PD01LHB0fD1vbi5nZXREYXRlKCksUWUmJih2dD1UZSgxLDEpK1RlKFcoQ2UpLDQpK0NlLG10Kz0i''@;'; put 'put ''dXAiK1RlKHZ0Lmxlbmd0aCwyKSt2dCksJGUmJihmdD1UZSgxLDEpK1RlKHRoaXMuY3JjMzIoUGUpLDQpK1BlLG10Kz0idWMiK1RlKGZ0Lmxlbmd0aCwyKStmdCk7dmFyIF90PSIiO3JldHVybiBfdCs9IlxuXDAiLF90Kz1RZXx8JGU/IlwwXGIiOiJcMFwwIixfdCs9Uy5jb21wcmVzc2lvbk1l''@;'; put 'put ''dGhvZCxfdCs9VGUoeXQsMiksX3QrPVRlKHB0LDIpLF90Kz1UZShTLmNyYzMyLDQpLF90Kz1UZShTLmNvbXByZXNzZWRTaXplLDQpLF90Kz1UZShTLnVuY29tcHJlc3NlZFNpemUsNCksX3QrPVRlKENlLmxlbmd0aCwyKSxfdCs9VGUobXQubGVuZ3RoLDIpLHtmaWxlUmVjb3JkOk4uTE9DQUxf''@;'; put 'put ''RklMRV9IRUFERVIrX3QrQ2UrbXQsZGlyUmVjb3JkOk4uQ0VOVFJBTF9GSUxFX0hFQURFUisiXHgxNFwwIitfdCtUZShQZS5sZW5ndGgsMikrIlwwXDBcMFwwIisoITA9PT1GdD8iXHgxMFwwXDBcMCI6IlwwXDBcMFwwIikrVGUoRiw0KStDZSttdCtQZSxjb21wcmVzc2VkT2JqZWN0OlN9fSxQ''@;'; put 'put ''PXtsb2FkOmZ1bmN0aW9uKFYsVCl7dGhyb3cgbmV3IEVycm9yKCJMb2FkIG1ldGhvZCBpcyBub3QgZGVmaW5lZC4gSXMgdGhlIGZpbGUganN6aXAtbG9hZC5qcyBpbmNsdWRlZCA/Iil9LGZpbHRlcjpmdW5jdGlvbihWKXt2YXIgUyxGLHllLENlLFQ9W107Zm9yKFMgaW4gdGhpcy5maWxlcykh''@;'; put 'put ''dGhpcy5maWxlcy5oYXNPd25Qcm9wZXJ0eShTKXx8KENlPW5ldyBJZSgoeWU9dGhpcy5maWxlc1tTXSkubmFtZSx5ZS5fZGF0YSxFZSh5ZS5vcHRpb25zKSksRj1TLnNsaWNlKHRoaXMucm9vdC5sZW5ndGgsUy5sZW5ndGgpLFMuc2xpY2UoMCx0aGlzLnJvb3QubGVuZ3RoKT09PXRoaXMucm9v''@;'; put 'put ''dCYmVihGLENlKSYmVC5wdXNoKENlKSk7cmV0dXJuIFR9LGZpbGU6ZnVuY3Rpb24oVixULFMpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihZLmlzUmVnRXhwKFYpKXt2YXIgRj1WO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbih5ZSxDZSl7cmV0dXJuIUNlLmRpciYmRi50ZXN0KHll''@;'; put 'put ''KX0pfXJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbih5ZSxDZSl7cmV0dXJuIUNlLmRpciYmeWU9PT1WfSlbMF18fG51bGx9cmV0dXJuIE8uY2FsbCh0aGlzLFY9dGhpcy5yb290K1YsVCxTKSx0aGlzfSxmb2xkZXI6ZnVuY3Rpb24oVil7aWYoIVYpcmV0dXJuIHRoaXM7aWYoWS5pc1JlZ0V4''@;'; put 'put ''cChWKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oeWUsQ2Upe3JldHVybiBDZS5kaXImJlYudGVzdCh5ZSl9KTt2YXIgUz1uZS5jYWxsKHRoaXMsdGhpcy5yb290K1YpLEY9dGhpcy5jbG9uZSgpO3JldHVybiBGLnJvb3Q9Uy5uYW1lLEZ9LHJlbW92ZTpmdW5jdGlvbihWKXt2YXIgVD10''@;'; put 'put ''aGlzLmZpbGVzW1Y9dGhpcy5yb290K1ZdO2lmKFR8fCgiLyIhPVYuc2xpY2UoLTEpJiYoVis9Ii8iKSxUPXRoaXMuZmlsZXNbVl0pLFQmJiFULmRpcilkZWxldGUgdGhpcy5maWxlc1tWXTtlbHNlIGZvcih2YXIgUz10aGlzLmZpbHRlcihmdW5jdGlvbih5ZSxDZSl7cmV0dXJuIENlLm5hbWUu''@;'; put 'put ''c2xpY2UoMCxWLmxlbmd0aCk9PT1WfSksRj0wO0Y8Uy5sZW5ndGg7RisrKWRlbGV0ZSB0aGlzLmZpbGVzW1NbRl0ubmFtZV07cmV0dXJuIHRoaXN9LGdlbmVyYXRlOmZ1bmN0aW9uKFYpe1Y9RWUoVnx8e30se2Jhc2U2NDohMCxjb21wcmVzc2lvbjoiU1RPUkUiLHR5cGU6ImJhc2U2NCIsY29t''@;'; put 'put ''bWVudDpudWxsfSksWS5jaGVja1N1cHBvcnQoVi50eXBlKTt2YXIgeWUsQ2UsbXQsVD1bXSxTPTAsRj0wLERlPVkudHJhbnNmb3JtVG8oInN0cmluZyIsdGhpcy51dGY4ZW5jb2RlKFYuY29tbWVudHx8dGhpcy5jb21tZW50fHwiIikpO2Zvcih2YXIgUGUgaW4gdGhpcy5maWxlcylpZih0aGlz''@;'; put 'put ''LmZpbGVzLmhhc093blByb3BlcnR5KFBlKSl7dmFyIFFlPXRoaXMuZmlsZXNbUGVdLCRlPVFlLm9wdGlvbnMuY29tcHJlc3Npb258fFYuY29tcHJlc3Npb24udG9VcHBlckNhc2UoKSxndD1KWyRlXTtpZighZ3QpdGhyb3cgbmV3IEVycm9yKCRlKyIgaXMgbm90IGEgdmFsaWQgY29tcHJlc3Np''@;'; put 'put ''b24gbWV0aG9kICEiKTt2YXIgeXQ9dGUuY2FsbCh0aGlzLFFlLGd0KSxwdD14LmNhbGwodGhpcyxQZSxRZSx5dCxTKTtTKz1wdC5maWxlUmVjb3JkLmxlbmd0aCt5dC5jb21wcmVzc2VkU2l6ZSxGKz1wdC5kaXJSZWNvcmQubGVuZ3RoLFQucHVzaChwdCl9bXQ9Ti5DRU5UUkFMX0RJUkVDVE9S''@;'; put 'put ''WV9FTkQrIlwwXDBcMFwwIitUZShULmxlbmd0aCwyKStUZShULmxlbmd0aCwyKStUZShGLDQpK1RlKFMsNCkrVGUoRGUubGVuZ3RoLDIpK0RlO3ZhciB2dD1WLnR5cGUudG9Mb3dlckNhc2UoKTtmb3IoeWU9InVpbnQ4YXJyYXkiPT09dnR8fCJhcnJheWJ1ZmZlciI9PT12dHx8ImJsb2IiPT09''@;'; put 'put ''dnR8fCJub2RlYnVmZmVyIj09PXZ0P25ldyB2ZShTK0YrbXQubGVuZ3RoKTpuZXcgZGUoUytGK210Lmxlbmd0aCksQ2U9MDtDZTxULmxlbmd0aDtDZSsrKXllLmFwcGVuZChUW0NlXS5maWxlUmVjb3JkKSx5ZS5hcHBlbmQoVFtDZV0uY29tcHJlc3NlZE9iamVjdC5jb21wcmVzc2VkQ29udGVu''@;'; put 'put ''dCk7Zm9yKENlPTA7Q2U8VC5sZW5ndGg7Q2UrKyl5ZS5hcHBlbmQoVFtDZV0uZGlyUmVjb3JkKTt5ZS5hcHBlbmQobXQpO3ZhciBmdD15ZS5maW5hbGl6ZSgpO3N3aXRjaChWLnR5cGUudG9Mb3dlckNhc2UoKSl7Y2FzZSJ1aW50OGFycmF5IjpjYXNlImFycmF5YnVmZmVyIjpjYXNlIm5vZGVi''@;'; put 'put ''dWZmZXIiOnJldHVybiBZLnRyYW5zZm9ybVRvKFYudHlwZS50b0xvd2VyQ2FzZSgpLGZ0KTtjYXNlImJsb2IiOnJldHVybiBZLmFycmF5QnVmZmVyMkJsb2IoWS50cmFuc2Zvcm1UbygiYXJyYXlidWZmZXIiLGZ0KSk7Y2FzZSJiYXNlNjQiOnJldHVybiBWLmJhc2U2ND9xLmVuY29kZShmdCk6''@;'; put 'put ''ZnQ7ZGVmYXVsdDpyZXR1cm4gZnR9fSxjcmMzMjpmdW5jdGlvbihWLFQpe3JldHVybiBXKFYsVCl9LHV0ZjhlbmNvZGU6ZnVuY3Rpb24oVil7cmV0dXJuIFkudHJhbnNmb3JtVG8oInN0cmluZyIsZmUudXRmOGVuY29kZShWKSl9LHV0ZjhkZWNvZGU6ZnVuY3Rpb24oVil7cmV0dXJuIGZlLnV0''@;'; put 'put ''ZjhkZWNvZGUoVil9fTtaLmV4cG9ydHM9UH0seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL2NvbXByZXNzaW9ucyI6MywiLi9jcmMzMiI6NCwiLi9kZWZhdWx0cyI6NiwiLi9ub2RlQnVmZmVyIjoxMSwiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1dyaXRlciI6MTYs''@;'; put 'put ''Ii4vc3VwcG9ydCI6MTcsIi4vdWludDhBcnJheVdyaXRlciI6MTksIi4vdXRmOCI6MjAsIi4vdXRpbHMiOjIxfV0sMTQ6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO2llLkxPQ0FMX0ZJTEVfSEVBREVSPSJQS1x4MDNceDA0IixpZS5DRU5UUkFMX0ZJTEVfSEVBREVSPSJQS1x4MDFc''@;'; put 'put ''eDAyIixpZS5DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9IlBLXHgwNVx4MDYiLGllLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1I9IlBLXHgwNlx4MDciLGllLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORD0iUEtceDA2XHgwNiIsaWUuREFUQV9ERVNDUklQVE9SPSJQS1x4MDdcYiJ9''@;'; put 'put ''LHt9XSwxNTpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vZGF0YVJlYWRlciIpLFk9USgiLi91dGlscyIpO2Z1bmN0aW9uIFcoTixlZSl7dGhpcy5kYXRhPU4sZWV8fCh0aGlzLmRhdGE9WS5zdHJpbmcyYmluYXJ5KHRoaXMuZGF0YSkpLHRoaXMubGVuZ3RoPXRo''@;'; put 'put ''aXMuZGF0YS5sZW5ndGgsdGhpcy5pbmRleD0wfShXLnByb3RvdHlwZT1uZXcgbGUpLmJ5dGVBdD1mdW5jdGlvbihOKXtyZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQoTil9LFcucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKE4pe3JldHVybiB0aGlzLmRhdGEubGFz''@;'; put 'put ''dEluZGV4T2YoTil9LFcucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKE4pe3RoaXMuY2hlY2tPZmZzZXQoTik7dmFyIGVlPXRoaXMuZGF0YS5zbGljZSh0aGlzLmluZGV4LHRoaXMuaW5kZXgrTik7cmV0dXJuIHRoaXMuaW5kZXgrPU4sZWV9LFouZXhwb3J0cz1XfSx7Ii4vZGF0YVJlYWRl''@;'; put 'put ''ciI6NSwiLi91dGlscyI6MjF9XSwxNjpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vdXRpbHMiKSxZPWZ1bmN0aW9uKCl7dGhpcy5kYXRhPVtdfTtZLnByb3RvdHlwZT17YXBwZW5kOmZ1bmN0aW9uKFcpe1c9bGUudHJhbnNmb3JtVG8oInN0cmluZyIsVyksdGhp''@;'; put 'put ''cy5kYXRhLnB1c2goVyl9LGZpbmFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5qb2luKCIiKX19LFouZXhwb3J0cz1ZfSx7Ii4vdXRpbHMiOjIxfV0sMTc6W2Z1bmN0aW9uKFEsWixpZSl7KGZ1bmN0aW9uKGxlKXsidXNlIHN0cmljdCI7aWYoaWUuYmFzZTY0PSEwLGllLmFycmF5''@;'; put 'put ''PSEwLGllLnN0cmluZz0hMCxpZS5hcnJheWJ1ZmZlcj0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXksaWUubm9kZWJ1ZmZlcj12b2lkIDAhPT1sZSxpZS51aW50OGFycmF5PSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJh''@;'; put 'put ''eSwidW5kZWZpbmVkIj09dHlwZW9mIEFycmF5QnVmZmVyKWllLmJsb2I9ITE7ZWxzZXt2YXIgWT1uZXcgQXJyYXlCdWZmZXIoMCk7dHJ5e2llLmJsb2I9MD09PW5ldyBCbG9iKFtZXSx7dHlwZToiYXBwbGljYXRpb24vemlwIn0pLnNpemV9Y2F0Y2goZWUpe3RyeXt2YXIgTj1uZXcod2luZG93''@;'; put 'put ''LkJsb2JCdWlsZGVyfHx3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXJ8fHdpbmRvdy5Nb3pCbG9iQnVpbGRlcnx8d2luZG93Lk1TQmxvYkJ1aWxkZXIpO04uYXBwZW5kKFkpLGllLmJsb2I9MD09PU4uZ2V0QmxvYigiYXBwbGljYXRpb24vemlwIikuc2l6ZX1jYXRjaChxKXtpZS5ibG9iPSExfX19''@;'; put 'put ''fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyP0J1ZmZlcjp2b2lkIDApfSx7fV0sMTg6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO3ZhciBsZT1RKCIuL2RhdGFSZWFkZXIiKTtmdW5jdGlvbiBZKFcpe1cmJih0aGlzLmRhdGE9Vyx0aGlzLmxlbmd0aD10aGlz''@;'; put 'put ''LmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MCl9KFkucHJvdG90eXBlPW5ldyBsZSkuYnl0ZUF0PWZ1bmN0aW9uKFcpe3JldHVybiB0aGlzLmRhdGFbV119LFkucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKFcpe2Zvcih2YXIgTj1XLmNoYXJDb2RlQXQoMCksZWU9Vy5j''@;'; put 'put ''aGFyQ29kZUF0KDEpLHE9Vy5jaGFyQ29kZUF0KDIpLEo9Vy5jaGFyQ29kZUF0KDMpLHNlPXRoaXMubGVuZ3RoLTQ7c2U+PTA7LS1zZSlpZih0aGlzLmRhdGFbc2VdPT09TiYmdGhpcy5kYXRhW3NlKzFdPT09ZWUmJnRoaXMuZGF0YVtzZSsyXT09PXEmJnRoaXMuZGF0YVtzZSszXT09PUopcmV0''@;'; put 'put ''dXJuIHNlO3JldHVybi0xfSxZLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihXKXtpZih0aGlzLmNoZWNrT2Zmc2V0KFcpLDA9PT1XKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgTj10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy5pbmRleCx0aGlzLmluZGV4K1cpO3JldHVybiB0aGlz''@;'; put 'put ''LmluZGV4Kz1XLE59LFouZXhwb3J0cz1ZfSx7Ii4vZGF0YVJlYWRlciI6NX1dLDE5OltmdW5jdGlvbihRLFosaWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgbGU9USgiLi91dGlscyIpLFk9ZnVuY3Rpb24oVyl7dGhpcy5kYXRhPW5ldyBVaW50OEFycmF5KFcpLHRoaXMuaW5kZXg9MH07WS5wcm90b3R5''@;'; put 'put ''cGU9e2FwcGVuZDpmdW5jdGlvbihXKXswIT09Vy5sZW5ndGgmJihXPWxlLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixXKSx0aGlzLmRhdGEuc2V0KFcsdGhpcy5pbmRleCksdGhpcy5pbmRleCs9Vy5sZW5ndGgpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9fSxaLmV4''@;'; put 'put ''cG9ydHM9WX0seyIuL3V0aWxzIjoyMX1dLDIwOltmdW5jdGlvbihRLFosaWUpeyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIGxlPVEoIi4vdXRpbHMiKSxZPVEoIi4vc3VwcG9ydCIpLFc9USgiLi9ub2RlQnVmZmVyIiksTj1uZXcgQXJyYXkoMjU2KSxlZT0wO2VlPDI1NjtlZSsrKU5bZWVdPWVlPj0y''@;'; put 'put ''NTI/NjplZT49MjQ4PzU6ZWU+PTI0MD80OmVlPj0yMjQ/MzplZT49MTkyPzI6MTtOWzI1NF09TlsyNTRdPTE7dmFyIEo9ZnVuY3Rpb24oYWUsZmUpe3ZhciBkZTtmb3IoKGZlPWZlfHxhZS5sZW5ndGgpPmFlLmxlbmd0aCYmKGZlPWFlLmxlbmd0aCksZGU9ZmUtMTtkZT49MCYmMTI4PT0oMTky''@;'; put 'put ''JmFlW2RlXSk7KWRlLS07cmV0dXJuIGRlPDB8fDA9PT1kZT9mZTpkZStOW2FlW2RlXV0+ZmU/ZGU6ZmV9LHNlPWZ1bmN0aW9uKGFlKXt2YXIgZGUsdmUsQWUsa2UsU2U9YWUubGVuZ3RoLEllPW5ldyBBcnJheSgyKlNlKTtmb3IodmU9MCxkZT0wO2RlPFNlOylpZigoQWU9YWVbZGUrK10pPDEy''@;'; put 'put ''OClJZVt2ZSsrXT1BZTtlbHNlIGlmKChrZT1OW0FlXSk+NClJZVt2ZSsrXT02NTUzMyxkZSs9a2UtMTtlbHNle2ZvcihBZSY9Mj09PWtlPzMxOjM9PT1rZT8xNTo3O2tlPjEmJmRlPFNlOylBZT1BZTw8Nnw2MyZhZVtkZSsrXSxrZS0tO2tlPjE/SWVbdmUrK109NjU1MzM6QWU8NjU1MzY/SWVb''@;'; put 'put ''dmUrK109QWU6KEllW3ZlKytdPTU1Mjk2fChBZS09NjU1MzYpPj4xMCYxMDIzLEllW3ZlKytdPTU2MzIwfDEwMjMmQWUpfXJldHVybiBJZS5sZW5ndGghPT12ZSYmKEllLnN1YmFycmF5P0llPUllLnN1YmFycmF5KDAsdmUpOkllLmxlbmd0aD12ZSksbGUuYXBwbHlGcm9tQ2hhckNvZGUoSWUp''@;'; put 'put ''fTtpZS51dGY4ZW5jb2RlPWZ1bmN0aW9uKGZlKXtyZXR1cm4gWS5ub2RlYnVmZmVyP1coZmUsInV0Zi04Iik6ZnVuY3Rpb24oYWUpe3ZhciBmZSxkZSx2ZSxBZSxrZSxTZT1hZS5sZW5ndGgsSWU9MDtmb3IoQWU9MDtBZTxTZTtBZSsrKTU1Mjk2PT0oNjQ1MTImKGRlPWFlLmNoYXJDb2RlQXQo''@;'; put 'put ''QWUpKSkmJkFlKzE8U2UmJjU2MzIwPT0oNjQ1MTImKHZlPWFlLmNoYXJDb2RlQXQoQWUrMSkpKSYmKGRlPTY1NTM2KyhkZS01NTI5Njw8MTApKyh2ZS01NjMyMCksQWUrKyksSWUrPWRlPDEyOD8xOmRlPDIwNDg/MjpkZTw2NTUzNj8zOjQ7Zm9yKGZlPVkudWludDhhcnJheT9uZXcgVWludDhB''@;'; put 'put ''cnJheShJZSk6bmV3IEFycmF5KEllKSxrZT0wLEFlPTA7a2U8SWU7QWUrKyk1NTI5Nj09KDY0NTEyJihkZT1hZS5jaGFyQ29kZUF0KEFlKSkpJiZBZSsxPFNlJiY1NjMyMD09KDY0NTEyJih2ZT1hZS5jaGFyQ29kZUF0KEFlKzEpKSkmJihkZT02NTUzNisoZGUtNTUyOTY8PDEwKSsodmUtNTYz''@;'; put 'put ''MjApLEFlKyspLGRlPDEyOD9mZVtrZSsrXT1kZTpkZTwyMDQ4PyhmZVtrZSsrXT0xOTJ8ZGU+Pj42LGZlW2tlKytdPTEyOHw2MyZkZSk6ZGU8NjU1MzY/KGZlW2tlKytdPTIyNHxkZT4+PjEyLGZlW2tlKytdPTEyOHxkZT4+PjYmNjMsZmVba2UrK109MTI4fDYzJmRlKTooZmVba2UrK109MjQw''@;'; put 'put ''fGRlPj4+MTgsZmVba2UrK109MTI4fGRlPj4+MTImNjMsZmVba2UrK109MTI4fGRlPj4+NiY2MyxmZVtrZSsrXT0xMjh8NjMmZGUpO3JldHVybiBmZX0oZmUpfSxpZS51dGY4ZGVjb2RlPWZ1bmN0aW9uKGZlKXtpZihZLm5vZGVidWZmZXIpcmV0dXJuIGxlLnRyYW5zZm9ybVRvKCJub2RlYnVm''@;'; put 'put ''ZmVyIixmZSkudG9TdHJpbmcoInV0Zi04Iik7Zm9yKHZhciBkZT1bXSx2ZT0wLEFlPShmZT1sZS50cmFuc2Zvcm1UbyhZLnVpbnQ4YXJyYXk/InVpbnQ4YXJyYXkiOiJhcnJheSIsZmUpKS5sZW5ndGg7dmU8QWU7KXt2YXIgU2U9SihmZSxNYXRoLm1pbih2ZSs2NTUzNixBZSkpO2RlLnB1c2go''@;'; put 'put ''c2UoWS51aW50OGFycmF5P2ZlLnN1YmFycmF5KHZlLFNlKTpmZS5zbGljZSh2ZSxTZSkpKSx2ZT1TZX1yZXR1cm4gZGUuam9pbigiIil9fSx7Ii4vbm9kZUJ1ZmZlciI6MTEsIi4vc3VwcG9ydCI6MTcsIi4vdXRpbHMiOjIxfV0sMjE6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO3Zh''@;'; put 'put ''ciBsZT1RKCIuL3N1cHBvcnQiKSxZPVEoIi4vY29tcHJlc3Npb25zIiksVz1RKCIuL25vZGVCdWZmZXIiKTtmdW5jdGlvbiBOKGFlKXtyZXR1cm4gYWV9ZnVuY3Rpb24gZWUoYWUsZmUpe2Zvcih2YXIgZGU9MDtkZTxhZS5sZW5ndGg7KytkZSlmZVtkZV09MjU1JmFlLmNoYXJDb2RlQXQoZGUp''@;'; put 'put ''O3JldHVybiBmZX1mdW5jdGlvbiBxKGFlKXt2YXIgZmU9NjU1MzYsZGU9W10sdmU9YWUubGVuZ3RoLEFlPWllLmdldFR5cGVPZihhZSksa2U9MCxTZT0hMDt0cnl7c3dpdGNoKEFlKXtjYXNlInVpbnQ4YXJyYXkiOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJh''@;'; put 'put ''eSgwKSk7YnJlYWs7Y2FzZSJub2RlYnVmZmVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsVygwKSl9fWNhdGNoKEVlKXtTZT0hMX1pZighU2Upe2Zvcih2YXIgSWU9IiIsVGU9MDtUZTxhZS5sZW5ndGg7VGUrKylJZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhZVtUZV0pO3JldHVy''@;'; put 'put ''biBJZX1mb3IoO2tlPHZlJiZmZT4xOyl0cnl7ZGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsImFycmF5Ij09PUFlfHwibm9kZWJ1ZmZlciI9PT1BZT9hZS5zbGljZShrZSxNYXRoLm1pbihrZStmZSx2ZSkpOmFlLnN1YmFycmF5KGtlLE1hdGgubWluKGtlK2ZlLHZlKSkp''@;'; put 'put ''KSxrZSs9ZmV9Y2F0Y2goRWUpe2ZlPU1hdGguZmxvb3IoZmUvMil9cmV0dXJuIGRlLmpvaW4oIiIpfWZ1bmN0aW9uIEooYWUsZmUpe2Zvcih2YXIgZGU9MDtkZTxhZS5sZW5ndGg7ZGUrKylmZVtkZV09YWVbZGVdO3JldHVybiBmZX1pZS5zdHJpbmcyYmluYXJ5PWZ1bmN0aW9uKGFlKXtmb3Io''@;'; put 'put ''dmFyIGZlPSIiLGRlPTA7ZGU8YWUubGVuZ3RoO2RlKyspZmUrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmFlLmNoYXJDb2RlQXQoZGUpKTtyZXR1cm4gZmV9LGllLmFycmF5QnVmZmVyMkJsb2I9ZnVuY3Rpb24oYWUpe2llLmNoZWNrU3VwcG9ydCgiYmxvYiIpO3RyeXtyZXR1cm4gbmV3IEJs''@;'; put 'put ''b2IoW2FlXSx7dHlwZToiYXBwbGljYXRpb24vemlwIn0pfWNhdGNoKHZlKXt0cnl7dmFyIGRlPW5ldyh3aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcik7cmV0dXJuIGRlLmFwcGVu''@;'; put 'put ''ZChhZSksZGUuZ2V0QmxvYigiYXBwbGljYXRpb24vemlwIil9Y2F0Y2goQWUpe3Rocm93IG5ldyBFcnJvcigiQnVnIDogY2FuJ3QgY29uc3RydWN0IHRoZSBCbG9iLiIpfX19LGllLmFwcGx5RnJvbUNoYXJDb2RlPXE7dmFyIHNlPXt9O3NlLnN0cmluZz17c3RyaW5nOk4sYXJyYXk6ZnVuY3Rp''@;'; put 'put ''b24oYWUpe3JldHVybiBlZShhZSxuZXcgQXJyYXkoYWUubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGFlKXtyZXR1cm4gc2Uuc3RyaW5nLnVpbnQ4YXJyYXkoYWUpLmJ1ZmZlcn0sdWludDhhcnJheTpmdW5jdGlvbihhZSl7cmV0dXJuIGVlKGFlLG5ldyBVaW50OEFycmF5KGFlLmxl''@;'; put 'put ''bmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGFlKXtyZXR1cm4gZWUoYWUsVyhhZS5sZW5ndGgpKX19LHNlLmFycmF5PXtzdHJpbmc6cSxhcnJheTpOLGFycmF5YnVmZmVyOmZ1bmN0aW9uKGFlKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYWUpLmJ1ZmZlcn0sdWludDhhcnJheTpmdW5jdGlv''@;'; put 'put ''bihhZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGFlKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihhZSl7cmV0dXJuIFcoYWUpfX0sc2UuYXJyYXlidWZmZXI9e3N0cmluZzpmdW5jdGlvbihhZSl7cmV0dXJuIHEobmV3IFVpbnQ4QXJyYXkoYWUpKX0sYXJyYXk6ZnVuY3Rpb24oYWUpe3JldHVybiBK''@;'; put 'put ''KG5ldyBVaW50OEFycmF5KGFlKSxuZXcgQXJyYXkoYWUuYnl0ZUxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpOLHVpbnQ4YXJyYXk6ZnVuY3Rpb24oYWUpe3JldHVybiBuZXcgVWludDhBcnJheShhZSl9LG5vZGVidWZmZXI6ZnVuY3Rpb24oYWUpe3JldHVybiBXKG5ldyBVaW50OEFycmF5KGFlKSl9''@;'; put 'put ''fSxzZS51aW50OGFycmF5PXtzdHJpbmc6cSxhcnJheTpmdW5jdGlvbihhZSl7cmV0dXJuIEooYWUsbmV3IEFycmF5KGFlLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihhZSl7cmV0dXJuIGFlLmJ1ZmZlcn0sdWludDhhcnJheTpOLG5vZGVidWZmZXI6ZnVuY3Rpb24oYWUpe3JldHVy''@;'; put 'put ''biBXKGFlKX19LHNlLm5vZGVidWZmZXI9e3N0cmluZzpxLGFycmF5OmZ1bmN0aW9uKGFlKXtyZXR1cm4gSihhZSxuZXcgQXJyYXkoYWUubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGFlKXtyZXR1cm4gc2Uubm9kZWJ1ZmZlci51aW50OGFycmF5KGFlKS5idWZmZXJ9LHVpbnQ4YXJy''@;'; put 'put ''YXk6ZnVuY3Rpb24oYWUpe3JldHVybiBKKGFlLG5ldyBVaW50OEFycmF5KGFlLmxlbmd0aCkpfSxub2RlYnVmZmVyOk59LGllLnRyYW5zZm9ybVRvPWZ1bmN0aW9uKGFlLGZlKXtpZihmZXx8KGZlPSIiKSwhYWUpcmV0dXJuIGZlO2llLmNoZWNrU3VwcG9ydChhZSk7dmFyIGRlPWllLmdldFR5''@;'; put 'put ''cGVPZihmZSk7cmV0dXJuIHNlW2RlXVthZV0oZmUpfSxpZS5nZXRUeXBlT2Y9ZnVuY3Rpb24oYWUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYWU/InN0cmluZyI6IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhZSk/ImFycmF5IjpsZS5ub2RlYnVm''@;'; put 'put ''ZmVyJiZXLnRlc3QoYWUpPyJub2RlYnVmZmVyIjpsZS51aW50OGFycmF5JiZhZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/InVpbnQ4YXJyYXkiOmxlLmFycmF5YnVmZmVyJiZhZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyPyJhcnJheWJ1ZmZlciI6dm9pZCAwfSxpZS5jaGVja1N1cHBvcnQ9ZnVu''@;'; put 'put ''Y3Rpb24oYWUpe2lmKCFsZVthZS50b0xvd2VyQ2FzZSgpXSl0aHJvdyBuZXcgRXJyb3IoYWUrIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlciIpfSxpZS5NQVhfVkFMVUVfMTZCSVRTPTY1NTM1LGllLk1BWF9WQUxVRV8zMkJJVFM9LTEsaWUucHJldHR5PWZ1bmN0aW9uKGFlKXt2''@;'; put 'put ''YXIgZGUsdmUsZmU9IiI7Zm9yKHZlPTA7dmU8KGFlfHwiIikubGVuZ3RoO3ZlKyspZmUrPSJcXHgiKygoZGU9YWUuY2hhckNvZGVBdCh2ZSkpPDE2PyIwIjoiIikrZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGZlfSxpZS5maW5kQ29tcHJlc3Npb249ZnVuY3Rpb24oYWUp''@;'; put 'put ''e2Zvcih2YXIgZmUgaW4gWSlpZihZLmhhc093blByb3BlcnR5KGZlKSYmWVtmZV0ubWFnaWM9PT1hZSlyZXR1cm4gWVtmZV07cmV0dXJuIG51bGx9LGllLmlzUmVnRXhwPWZ1bmN0aW9uKGFlKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs''@;'; put 'put ''bChhZSl9fSx7Ii4vY29tcHJlc3Npb25zIjozLCIuL25vZGVCdWZmZXIiOjExLCIuL3N1cHBvcnQiOjE3fV0sMjI6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO3ZhciBsZT1RKCIuL3N0cmluZ1JlYWRlciIpLFk9USgiLi9ub2RlQnVmZmVyUmVhZGVyIiksVz1RKCIuL3VpbnQ4QXJy''@;'; put 'put ''YXlSZWFkZXIiKSxOPVEoIi4vdXRpbHMiKSxlZT1RKCIuL3NpZ25hdHVyZSIpLHE9USgiLi96aXBFbnRyeSIpLEo9USgiLi9zdXBwb3J0Iiksc2U9USgiLi9vYmplY3QiKTtmdW5jdGlvbiBhZShmZSxkZSl7dGhpcy5maWxlcz1bXSx0aGlzLmxvYWRPcHRpb25zPWRlLGZlJiZ0aGlzLmxvYWQo''@;'; put 'put ''ZmUpfWFlLnByb3RvdHlwZT17Y2hlY2tTaWduYXR1cmU6ZnVuY3Rpb24oZmUpe3ZhciBkZT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDQpO2lmKGRlIT09ZmUpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIG9yIGJ1ZyA6IHVuZXhwZWN0ZWQgc2lnbmF0dXJlICgiK04ucHJldHR5KGRl''@;'; put 'put ''KSsiLCBleHBlY3RlZCAiK04ucHJldHR5KGZlKSsiKSIpfSxyZWFkQmxvY2tFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLmRpc2tOdW1iZXI9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5j''@;'; put 'put ''ZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuY2VudHJhbERpck9mZnNldD10aGlz''@;'; put 'put ''LnJlYWRlci5yZWFkSW50KDQpLHRoaXMuemlwQ29tbWVudExlbmd0aD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuemlwQ29tbWVudD10aGlzLnJlYWRlci5yZWFkU3RyaW5nKHRoaXMuemlwQ29tbWVudExlbmd0aCksdGhpcy56aXBDb21tZW50PXNlLnV0ZjhkZWNvZGUodGhpcy56aXBD''@;'; put 'put ''b21tZW50KX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMudmVyc2lvbk1hZGVCeT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDIpLHRoaXMudmVyc2lvbk5lZWRlZD10aGlz''@;'; put 'put ''LnJlYWRlci5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz10aGlzLnJlYWRlci5yZWFkSW50KDgp''@;'; put 'put ''LHRoaXMuY2VudHJhbERpclJlY29yZHM9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyT2Zmc2V0PXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy56aXA2NEV4dGVuc2libGVEYXRhPXt9O2Zv''@;'; put 'put ''cih2YXIgdmUsQWUsa2UsZmU9dGhpcy56aXA2NEVuZE9mQ2VudHJhbFNpemUtNDQ7MDxmZTspdmU9dGhpcy5yZWFkZXIucmVhZEludCgyKSxBZT10aGlzLnJlYWRlci5yZWFkSW50KDQpLGtlPXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoQWUpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YVt2ZV09''@;'; put 'put ''e2lkOnZlLGxlbmd0aDpBZSx2YWx1ZTprZX19LHJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcjpmdW5jdGlvbigpe2lmKHRoaXMuZGlza1dpdGhaaXA2NENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2Vu''@;'; put 'put ''dHJhbERpcj10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuZGlza3NDb3VudD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza3NDb3VudD4xKXRocm93IG5ldyBFcnJvcigiTXVsdGktdm9sdW1lcyB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKX0scmVhZExvY2FsRmlsZXM6ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgZmUsZGU7Zm9yKGZlPTA7ZmU8dGhpcy5maWxlcy5sZW5ndGg7ZmUrKyl0aGlzLnJlYWRlci5zZXRJbmRleCgoZGU9dGhpcy5maWxlc1tmZV0pLmxvY2FsSGVhZGVyT2Zmc2V0KSx0aGlzLmNoZWNrU2lnbmF0dXJlKGVlLkxPQ0FMX0ZJTEVfSEVBREVSKSxkZS5yZWFkTG9jYWxQ''@;'; put 'put ''YXJ0KHRoaXMucmVhZGVyKSxkZS5oYW5kbGVVVEY4KCl9LHJlYWRDZW50cmFsRGlyOmZ1bmN0aW9uKCl7dmFyIGZlO2Zvcih0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLmNlbnRyYWxEaXJPZmZzZXQpO3RoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk9PT1lZS5DRU5UUkFMX0ZJTEVfSEVBREVS''@;'; put 'put ''OykoZmU9bmV3IHEoe3ppcDY0OnRoaXMuemlwNjR9LHRoaXMubG9hZE9wdGlvbnMpKS5yZWFkQ2VudHJhbFBhcnQodGhpcy5yZWFkZXIpLHRoaXMuZmlsZXMucHVzaChmZSl9LHJlYWRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt2YXIgZmU9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1''@;'; put 'put ''cmUoZWUuQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKTtpZigtMT09PWZlKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IGNhbid0IGZpbmQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5Iik7aWYodGhpcy5yZWFkZXIuc2V0SW5kZXgoZmUpLHRoaXMuY2hlY2tTaWduYXR1cmUoZWUuQ0VO''@;'; put 'put ''VFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlYWRCbG9ja0VuZE9mQ2VudHJhbCgpLHRoaXMuZGlza051bWJlcj09PU4uTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD09PU4uTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhp''@;'; put 'put ''c0Rpc2s9PT1OLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHM9PT1OLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclNpemU9PT1OLk1BWF9WQUxVRV8zMkJJVFN8fHRoaXMuY2VudHJhbERpck9mZnNldD09PU4uTUFYX1ZBTFVFXzMyQklUUyl7aWYodGhp''@;'; put 'put ''cy56aXA2ND0hMCwtMT09PShmZT10aGlzLnJlYWRlci5sYXN0SW5kZXhPZlNpZ25hdHVyZShlZS5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSkpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY2FuJ3QgZmluZCB0aGUgWklQNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0''@;'; put 'put ''b3J5IGxvY2F0b3IiKTt0aGlzLnJlYWRlci5zZXRJbmRleChmZSksdGhpcy5jaGVja1NpZ25hdHVyZShlZS5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSx0aGlzLnJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcigpLHRoaXMucmVhZGVyLnNldEluZGV4KHRoaXMucmVs''@;'; put 'put ''YXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpciksdGhpcy5jaGVja1NpZ25hdHVyZShlZS5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWwoKX19LHByZXBhcmVSZWFkZXI6ZnVuY3Rpb24oZmUpe3ZhciBkZT1OLmdldFR5cGVP''@;'; put 'put ''ZihmZSk7dGhpcy5yZWFkZXI9InN0cmluZyIhPT1kZXx8Si51aW50OGFycmF5PyJub2RlYnVmZmVyIj09PWRlP25ldyBZKGZlKTpuZXcgVyhOLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixmZSkpOm5ldyBsZShmZSx0aGlzLmxvYWRPcHRpb25zLm9wdGltaXplZEJpbmFyeVN0cmluZyl9LGxv''@;'; put 'put ''YWQ6ZnVuY3Rpb24oZmUpe3RoaXMucHJlcGFyZVJlYWRlcihmZSksdGhpcy5yZWFkRW5kT2ZDZW50cmFsKCksdGhpcy5yZWFkQ2VudHJhbERpcigpLHRoaXMucmVhZExvY2FsRmlsZXMoKX19LFouZXhwb3J0cz1hZX0seyIuL25vZGVCdWZmZXJSZWFkZXIiOjEyLCIuL29iamVjdCI6MTMsIi4v''@;'; put 'put ''c2lnbmF0dXJlIjoxNCwiLi9zdHJpbmdSZWFkZXIiOjE1LCIuL3N1cHBvcnQiOjE3LCIuL3VpbnQ4QXJyYXlSZWFkZXIiOjE4LCIuL3V0aWxzIjoyMSwiLi96aXBFbnRyeSI6MjN9XSwyMzpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vc3RyaW5nUmVhZGVyIiks''@;'; put 'put ''WT1RKCIuL3V0aWxzIiksVz1RKCIuL2NvbXByZXNzZWRPYmplY3QiKSxOPVEoIi4vb2JqZWN0Iik7ZnVuY3Rpb24gZWUocSxKKXt0aGlzLm9wdGlvbnM9cSx0aGlzLmxvYWRPcHRpb25zPUp9ZWUucHJvdG90eXBlPXtpc0VuY3J5cHRlZDpmdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLmJp''@;'; put 'put ''dEZsYWcpfSx1c2VVVEY4OmZ1bmN0aW9uKCl7cmV0dXJuIDIwNDg9PSgyMDQ4JnRoaXMuYml0RmxhZyl9LHByZXBhcmVDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbihxLEosc2Upe3JldHVybiBmdW5jdGlvbigpe3ZhciBhZT1xLmluZGV4O3Euc2V0SW5kZXgoSik7dmFyIGZlPXEucmVhZERh''@;'; put 'put ''dGEoc2UpO3JldHVybiBxLnNldEluZGV4KGFlKSxmZX19LHByZXBhcmVDb250ZW50OmZ1bmN0aW9uKHEsSixzZSxhZSxmZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGRlPVkudHJhbnNmb3JtVG8oYWUudW5jb21wcmVzc0lucHV0VHlwZSx0aGlzLmdldENvbXByZXNzZWRDb250ZW50KCkpLHZl''@;'; put 'put ''PWFlLnVuY29tcHJlc3MoZGUpO2lmKHZlLmxlbmd0aCE9PWZlKXRocm93IG5ldyBFcnJvcigiQnVnIDogdW5jb21wcmVzc2VkIGRhdGEgc2l6ZSBtaXNtYXRjaCIpO3JldHVybiB2ZX19LHJlYWRMb2NhbFBhcnQ6ZnVuY3Rpb24ocSl7dmFyIEosc2U7aWYocS5za2lwKDIyKSx0aGlzLmZpbGVO''@;'; put 'put ''YW1lTGVuZ3RoPXEucmVhZEludCgyKSxzZT1xLnJlYWRJbnQoMiksdGhpcy5maWxlTmFtZT1xLnJlYWRTdHJpbmcodGhpcy5maWxlTmFtZUxlbmd0aCkscS5za2lwKHNlKSwtMT09dGhpcy5jb21wcmVzc2VkU2l6ZXx8LTE9PXRoaXMudW5jb21wcmVzc2VkU2l6ZSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IkJ1ZyBvciBjb3JydXB0ZWQgemlwIDogZGlkbid0IGdldCBlbm91Z2ggaW5mb3JtYXRpb25zIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IChjb21wcmVzc2VkU2l6ZSA9PSAtMSB8fCB1bmNvbXByZXNzZWRTaXplID09IC0xKSIpO2lmKG51bGw9PT0oSj1ZLmZpbmRDb21wcmVzc2lvbih0''@;'; put 'put ''aGlzLmNvbXByZXNzaW9uTWV0aG9kKSkpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY29tcHJlc3Npb24gIitZLnByZXR0eSh0aGlzLmNvbXByZXNzaW9uTWV0aG9kKSsiIHVua25vd24gKGlubmVyIGZpbGUgOiAiK3RoaXMuZmlsZU5hbWUrIikiKTtpZih0aGlzLmRlY29tcHJl''@;'; put 'put ''c3NlZD1uZXcgVyx0aGlzLmRlY29tcHJlc3NlZC5jb21wcmVzc2VkU2l6ZT10aGlzLmNvbXByZXNzZWRTaXplLHRoaXMuZGVjb21wcmVzc2VkLnVuY29tcHJlc3NlZFNpemU9dGhpcy51bmNvbXByZXNzZWRTaXplLHRoaXMuZGVjb21wcmVzc2VkLmNyYzMyPXRoaXMuY3JjMzIsdGhpcy5kZWNv''@;'; put 'put ''bXByZXNzZWQuY29tcHJlc3Npb25NZXRob2Q9dGhpcy5jb21wcmVzc2lvbk1ldGhvZCx0aGlzLmRlY29tcHJlc3NlZC5nZXRDb21wcmVzc2VkQ29udGVudD10aGlzLnByZXBhcmVDb21wcmVzc2VkQ29udGVudChxLHEuaW5kZXgsdGhpcy5jb21wcmVzc2VkU2l6ZSxKKSx0aGlzLmRlY29tcHJl''@;'; put 'put ''c3NlZC5nZXRDb250ZW50PXRoaXMucHJlcGFyZUNvbnRlbnQocSxxLmluZGV4LHRoaXMuY29tcHJlc3NlZFNpemUsSix0aGlzLnVuY29tcHJlc3NlZFNpemUpLHRoaXMubG9hZE9wdGlvbnMuY2hlY2tDUkMzMiYmKHRoaXMuZGVjb21wcmVzc2VkPVkudHJhbnNmb3JtVG8oInN0cmluZyIsdGhp''@;'; put 'put ''cy5kZWNvbXByZXNzZWQuZ2V0Q29udGVudCgpKSxOLmNyYzMyKHRoaXMuZGVjb21wcmVzc2VkKSE9PXRoaXMuY3JjMzIpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IENSQzMyIG1pc21hdGNoIil9LHJlYWRDZW50cmFsUGFydDpmdW5jdGlvbihxKXtpZih0aGlzLnZlcnNpb25N''@;'; put 'put ''YWRlQnk9cS5yZWFkU3RyaW5nKDIpLHRoaXMudmVyc2lvbk5lZWRlZD1xLnJlYWRJbnQoMiksdGhpcy5iaXRGbGFnPXEucmVhZEludCgyKSx0aGlzLmNvbXByZXNzaW9uTWV0aG9kPXEucmVhZFN0cmluZygyKSx0aGlzLmRhdGU9cS5yZWFkRGF0ZSgpLHRoaXMuY3JjMzI9cS5yZWFkSW50KDQp''@;'; put 'put ''LHRoaXMuY29tcHJlc3NlZFNpemU9cS5yZWFkSW50KDQpLHRoaXMudW5jb21wcmVzc2VkU2l6ZT1xLnJlYWRJbnQoNCksdGhpcy5maWxlTmFtZUxlbmd0aD1xLnJlYWRJbnQoMiksdGhpcy5leHRyYUZpZWxkc0xlbmd0aD1xLnJlYWRJbnQoMiksdGhpcy5maWxlQ29tbWVudExlbmd0aD1xLnJl''@;'; put 'put ''YWRJbnQoMiksdGhpcy5kaXNrTnVtYmVyU3RhcnQ9cS5yZWFkSW50KDIpLHRoaXMuaW50ZXJuYWxGaWxlQXR0cmlidXRlcz1xLnJlYWRJbnQoMiksdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzPXEucmVhZEludCg0KSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PXEucmVhZEludCg0KSx0aGlz''@;'; put 'put ''LmlzRW5jcnlwdGVkKCkpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0ZWQgemlwIGFyZSBub3Qgc3VwcG9ydGVkIik7dGhpcy5maWxlTmFtZT1xLnJlYWRTdHJpbmcodGhpcy5maWxlTmFtZUxlbmd0aCksdGhpcy5yZWFkRXh0cmFGaWVsZHMocSksdGhpcy5wYXJzZVpJUDY0RXh0cmFGaWVsZChx''@;'; put 'put ''KSx0aGlzLmZpbGVDb21tZW50PXEucmVhZFN0cmluZyh0aGlzLmZpbGVDb21tZW50TGVuZ3RoKSx0aGlzLmRpcj0hISgxNiZ0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXMpfSxwYXJzZVpJUDY0RXh0cmFGaWVsZDpmdW5jdGlvbihxKXtpZih0aGlzLmV4dHJhRmllbGRzWzFdKXt2YXIgSj1u''@;'; put 'put ''ZXcgbGUodGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09WS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPUoucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PVkuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29t''@;'; put 'put ''cHJlc3NlZFNpemU9Si5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09WS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD1KLnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09WS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVt''@;'; put 'put ''YmVyU3RhcnQ9Si5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihxKXt2YXIgc2UsYWUsZmUsSj1xLmluZGV4O2Zvcih0aGlzLmV4dHJhRmllbGRzPXRoaXMuZXh0cmFGaWVsZHN8fHt9O3EuaW5kZXg8Sit0aGlzLmV4dHJhRmllbGRzTGVuZ3RoOylzZT1xLnJlYWRJbnQo''@;'; put 'put ''MiksYWU9cS5yZWFkSW50KDIpLGZlPXEucmVhZFN0cmluZyhhZSksdGhpcy5leHRyYUZpZWxkc1tzZV09e2lkOnNlLGxlbmd0aDphZSx2YWx1ZTpmZX19LGhhbmRsZVVURjg6ZnVuY3Rpb24oKXtpZih0aGlzLnVzZVVURjgoKSl0aGlzLmZpbGVOYW1lPU4udXRmOGRlY29kZSh0aGlzLmZpbGVO''@;'; put 'put ''YW1lKSx0aGlzLmZpbGVDb21tZW50PU4udXRmOGRlY29kZSh0aGlzLmZpbGVDb21tZW50KTtlbHNle3ZhciBxPXRoaXMuZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aCgpO251bGwhPT1xJiYodGhpcy5maWxlTmFtZT1xKTt2YXIgSj10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZUNvbW1lbnQo''@;'; put 'put ''KTtudWxsIT09SiYmKHRoaXMuZmlsZUNvbW1lbnQ9Sil9fSxmaW5kRXh0cmFGaWVsZFVuaWNvZGVQYXRoOmZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5leHRyYUZpZWxkc1syODc4OV07aWYocSl7dmFyIEo9bmV3IGxlKHEudmFsdWUpO3JldHVybiAxIT09Si5yZWFkSW50KDEpfHxOLmNyYzMyKHRo''@;'; put 'put ''aXMuZmlsZU5hbWUpIT09Si5yZWFkSW50KDQpP251bGw6Ti51dGY4ZGVjb2RlKEoucmVhZFN0cmluZyhxLmxlbmd0aC01KSl9cmV0dXJuIG51bGx9LGZpbmRFeHRyYUZpZWxkVW5pY29kZUNvbW1lbnQ6ZnVuY3Rpb24oKXt2YXIgcT10aGlzLmV4dHJhRmllbGRzWzI1NDYxXTtpZihxKXt2YXIg''@;'; put 'put ''Sj1uZXcgbGUocS52YWx1ZSk7cmV0dXJuIDEhPT1KLnJlYWRJbnQoMSl8fE4uY3JjMzIodGhpcy5maWxlQ29tbWVudCkhPT1KLnJlYWRJbnQoNCk/bnVsbDpOLnV0ZjhkZWNvZGUoSi5yZWFkU3RyaW5nKHEubGVuZ3RoLTUpKX1yZXR1cm4gbnVsbH19LFouZXhwb3J0cz1lZX0seyIuL2NvbXBy''@;'; put 'put ''ZXNzZWRPYmplY3QiOjIsIi4vb2JqZWN0IjoxMywiLi9zdHJpbmdSZWFkZXIiOjE1LCIuL3V0aWxzIjoyMX1dLDI0OltmdW5jdGlvbihRLFosaWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgZWU9e307KDAsUSgiLi9saWIvdXRpbHMvY29tbW9uIikuYXNzaWduKShlZSxRKCIuL2xpYi9kZWZsYXRlIiks''@;'; put 'put ''USgiLi9saWIvaW5mbGF0ZSIpLFEoIi4vbGliL3psaWIvY29uc3RhbnRzIikpLFouZXhwb3J0cz1lZX0seyIuL2xpYi9kZWZsYXRlIjoyNSwiLi9saWIvaW5mbGF0ZSI6MjYsIi4vbGliL3V0aWxzL2NvbW1vbiI6MjcsIi4vbGliL3psaWIvY29uc3RhbnRzIjozMH1dLDI1OltmdW5jdGlvbihR''@;'; put 'put ''LFosaWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgbGU9USgiLi96bGliL2RlZmxhdGUuanMiKSxZPVEoIi4vdXRpbHMvY29tbW9uIiksVz1RKCIuL3V0aWxzL3N0cmluZ3MiKSxOPVEoIi4vemxpYi9tZXNzYWdlcyIpLGVlPVEoIi4vemxpYi96c3RyZWFtIiksQWU9ZnVuY3Rpb24oVGUpe3RoaXMub3B0''@;'; put 'put ''aW9ucz1ZLmFzc2lnbih7bGV2ZWw6LTEsbWV0aG9kOjgsY2h1bmtTaXplOjE2Mzg0LHdpbmRvd0JpdHM6MTUsbWVtTGV2ZWw6OCxzdHJhdGVneTowLHRvOiIifSxUZXx8e30pO3ZhciBFZT10aGlzLm9wdGlvbnM7RWUucmF3JiZFZS53aW5kb3dCaXRzPjA/RWUud2luZG93Qml0cz0tRWUud2lu''@;'; put 'put ''ZG93Qml0czpFZS5nemlwJiZFZS53aW5kb3dCaXRzPjAmJkVlLndpbmRvd0JpdHM8MTYmJihFZS53aW5kb3dCaXRzKz0xNiksdGhpcy5lcnI9MCx0aGlzLm1zZz0iIix0aGlzLmVuZGVkPSExLHRoaXMuY2h1bmtzPVtdLHRoaXMuc3RybT1uZXcgZWUsdGhpcy5zdHJtLmF2YWlsX291dD0wO3Zh''@;'; put 'put ''ciBoZT1sZS5kZWZsYXRlSW5pdDIodGhpcy5zdHJtLEVlLmxldmVsLEVlLm1ldGhvZCxFZS53aW5kb3dCaXRzLEVlLm1lbUxldmVsLEVlLnN0cmF0ZWd5KTtpZigwIT09aGUpdGhyb3cgbmV3IEVycm9yKE5baGVdKTtFZS5oZWFkZXImJmxlLmRlZmxhdGVTZXRIZWFkZXIodGhpcy5zdHJtLEVl''@;'; put 'put ''LmhlYWRlcil9O2Z1bmN0aW9uIGtlKFRlLEVlKXt2YXIgaGU9bmV3IEFlKEVlKTtpZihoZS5wdXNoKFRlLCEwKSxoZS5lcnIpdGhyb3cgaGUubXNnO3JldHVybiBoZS5yZXN1bHR9QWUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oVGUsRWUpe3ZhciB6LG5lLGhlPXRoaXMuc3RybSxPPXRoaXMu''@;'; put 'put ''b3B0aW9ucy5jaHVua1NpemU7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtuZT1FZT09PX5+RWU/RWU6ITA9PT1FZT80OjAsaGUuaW5wdXQ9InN0cmluZyI9PXR5cGVvZiBUZT9XLnN0cmluZzJidWYoVGUpOlRlLGhlLm5leHRfaW49MCxoZS5hdmFpbF9pbj1oZS5pbnB1dC5sZW5ndGg7ZG97aWYo''@;'; put 'put ''MD09PWhlLmF2YWlsX291dCYmKGhlLm91dHB1dD1uZXcgWS5CdWY4KE8pLGhlLm5leHRfb3V0PTAsaGUuYXZhaWxfb3V0PU8pLDEhPT0oej1sZS5kZWZsYXRlKGhlLG5lKSkmJjAhPT16KXJldHVybiB0aGlzLm9uRW5kKHopLHRoaXMuZW5kZWQ9ITAsITE7KDA9PT1oZS5hdmFpbF9vdXR8fDA9''@;'; put 'put ''PT1oZS5hdmFpbF9pbiYmND09PW5lKSYmdGhpcy5vbkRhdGEoInN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/Vy5idWYyYmluc3RyaW5nKFkuc2hyaW5rQnVmKGhlLm91dHB1dCxoZS5uZXh0X291dCkpOlkuc2hyaW5rQnVmKGhlLm91dHB1dCxoZS5uZXh0X291dCkpfXdoaWxlKChoZS5hdmFp''@;'; put 'put ''bF9pbj4wfHwwPT09aGUuYXZhaWxfb3V0KSYmMSE9PXopO3JldHVybiA0IT09bmV8fCh6PWxlLmRlZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKHopLHRoaXMuZW5kZWQ9ITAsMD09PXopfSxBZS5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKFRlKXt0aGlzLmNodW5rcy5wdXNoKFRl''@;'; put 'put ''KX0sQWUucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKFRlKXswPT09VGUmJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpZLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj1UZSx0aGlz''@;'; put 'put ''Lm1zZz10aGlzLnN0cm0ubXNnfSxpZS5EZWZsYXRlPUFlLGllLmRlZmxhdGU9a2UsaWUuZGVmbGF0ZVJhdz1mdW5jdGlvbiBTZShUZSxFZSl7cmV0dXJuKEVlPUVlfHx7fSkucmF3PSEwLGtlKFRlLEVlKX0saWUuZ3ppcD1mdW5jdGlvbiBJZShUZSxFZSl7cmV0dXJuKEVlPUVlfHx7fSkuZ3pp''@;'; put 'put ''cD0hMCxrZShUZSxFZSl9fSx7Ii4vdXRpbHMvY29tbW9uIjoyNywiLi91dGlscy9zdHJpbmdzIjoyOCwiLi96bGliL2RlZmxhdGUuanMiOjMyLCIuL3psaWIvbWVzc2FnZXMiOjM3LCIuL3psaWIvenN0cmVhbSI6Mzl9XSwyNjpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxl''@;'; put 'put ''PVEoIi4vemxpYi9pbmZsYXRlLmpzIiksWT1RKCIuL3V0aWxzL2NvbW1vbiIpLFc9USgiLi91dGlscy9zdHJpbmdzIiksTj1RKCIuL3psaWIvY29uc3RhbnRzIiksZWU9USgiLi96bGliL21lc3NhZ2VzIikscT1RKCIuL3psaWIvenN0cmVhbSIpLEo9USgiLi96bGliL2d6aGVhZGVyIiksc2U9''@;'; put 'put ''ZnVuY3Rpb24oZGUpe3RoaXMub3B0aW9ucz1ZLmFzc2lnbih7Y2h1bmtTaXplOjE2Mzg0LHdpbmRvd0JpdHM6MCx0bzoiIn0sZGV8fHt9KTt2YXIgdmU9dGhpcy5vcHRpb25zO3ZlLnJhdyYmdmUud2luZG93Qml0cz49MCYmdmUud2luZG93Qml0czwxNiYmKHZlLndpbmRvd0JpdHM9LXZlLndp''@;'; put 'put ''bmRvd0JpdHMsMD09PXZlLndpbmRvd0JpdHMmJih2ZS53aW5kb3dCaXRzPS0xNSkpLHZlLndpbmRvd0JpdHM+PTAmJnZlLndpbmRvd0JpdHM8MTYmJiEoZGUmJmRlLndpbmRvd0JpdHMpJiYodmUud2luZG93Qml0cys9MzIpLHZlLndpbmRvd0JpdHM+MTUmJnZlLndpbmRvd0JpdHM8NDgmJjA9''@;'; put 'put ''PSgxNSZ2ZS53aW5kb3dCaXRzKSYmKHZlLndpbmRvd0JpdHN8PTE1KSx0aGlzLmVycj0wLHRoaXMubXNnPSIiLHRoaXMuZW5kZWQ9ITEsdGhpcy5jaHVua3M9W10sdGhpcy5zdHJtPW5ldyBxLHRoaXMuc3RybS5hdmFpbF9vdXQ9MDt2YXIgQWU9bGUuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSx2''@;'; put 'put ''ZS53aW5kb3dCaXRzKTtpZihBZSE9PU4uWl9PSyl0aHJvdyBuZXcgRXJyb3IoZWVbQWVdKTt0aGlzLmhlYWRlcj1uZXcgSixsZS5pbmZsYXRlR2V0SGVhZGVyKHRoaXMuc3RybSx0aGlzLmhlYWRlcil9O2Z1bmN0aW9uIGFlKGRlLHZlKXt2YXIgQWU9bmV3IHNlKHZlKTtpZihBZS5wdXNoKGRl''@;'; put 'put ''LCEwKSxBZS5lcnIpdGhyb3cgQWUubXNnO3JldHVybiBBZS5yZXN1bHR9c2UucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZGUsdmUpe3ZhciBTZSxJZSxUZSxFZSxoZSxBZT10aGlzLnN0cm0sa2U9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtpZih0aGlzLmVuZGVkKXJldHVybiExO0llPXZlPT09''@;'; put 'put ''fn52ZT92ZTohMD09PXZlP04uWl9GSU5JU0g6Ti5aX05PX0ZMVVNILEFlLmlucHV0PSJzdHJpbmciPT10eXBlb2YgZGU/Vy5iaW5zdHJpbmcyYnVmKGRlKTpkZSxBZS5uZXh0X2luPTAsQWUuYXZhaWxfaW49QWUuaW5wdXQubGVuZ3RoO2Rve2lmKDA9PT1BZS5hdmFpbF9vdXQmJihBZS5vdXRw''@;'; put 'put ''dXQ9bmV3IFkuQnVmOChrZSksQWUubmV4dF9vdXQ9MCxBZS5hdmFpbF9vdXQ9a2UpLChTZT1sZS5pbmZsYXRlKEFlLE4uWl9OT19GTFVTSCkpIT09Ti5aX1NUUkVBTV9FTkQmJlNlIT09Ti5aX09LKXJldHVybiB0aGlzLm9uRW5kKFNlKSx0aGlzLmVuZGVkPSEwLCExO0FlLm5leHRfb3V0JiYo''@;'; put 'put ''MD09PUFlLmF2YWlsX291dHx8U2U9PT1OLlpfU1RSRUFNX0VORHx8MD09PUFlLmF2YWlsX2luJiZJZT09PU4uWl9GSU5JU0gpJiYoInN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/KFRlPVcudXRmOGJvcmRlcihBZS5vdXRwdXQsQWUubmV4dF9vdXQpLEVlPUFlLm5leHRfb3V0LVRlLGhlPVcu''@;'; put 'put ''YnVmMnN0cmluZyhBZS5vdXRwdXQsVGUpLEFlLm5leHRfb3V0PUVlLEFlLmF2YWlsX291dD1rZS1FZSxFZSYmWS5hcnJheVNldChBZS5vdXRwdXQsQWUub3V0cHV0LFRlLEVlLDApLHRoaXMub25EYXRhKGhlKSk6dGhpcy5vbkRhdGEoWS5zaHJpbmtCdWYoQWUub3V0cHV0LEFlLm5leHRfb3V0''@;'; put 'put ''KSkpfXdoaWxlKEFlLmF2YWlsX2luPjAmJlNlIT09Ti5aX1NUUkVBTV9FTkQpO3JldHVybiBTZT09PU4uWl9TVFJFQU1fRU5EJiYoSWU9Ti5aX0ZJTklTSCksSWUhPT1OLlpfRklOSVNIfHwoU2U9bGUuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoU2UpLHRoaXMuZW5kZWQ9ITAs''@;'; put 'put ''U2U9PT1OLlpfT0spfSxzZS5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGRlKXt0aGlzLmNodW5rcy5wdXNoKGRlKX0sc2UucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGRlKXtkZT09PU4uWl9PSyYmKHRoaXMucmVzdWx0PSJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP3RoaXMuY2h1bmtz''@;'; put 'put ''LmpvaW4oIiIpOlkuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPWRlLHRoaXMubXNnPXRoaXMuc3RybS5tc2d9LGllLkluZmxhdGU9c2UsaWUuaW5mbGF0ZT1hZSxpZS5pbmZsYXRlUmF3PWZ1bmN0aW9uIGZlKGRlLHZlKXtyZXR1cm4odmU9dmV8''@;'; put 'put ''fHt9KS5yYXc9ITAsYWUoZGUsdmUpfSxpZS51bmd6aXA9YWV9LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmluZ3MiOjI4LCIuL3psaWIvY29uc3RhbnRzIjozMCwiLi96bGliL2d6aGVhZGVyIjozMywiLi96bGliL2luZmxhdGUuanMiOjM1LCIuL3psaWIvbWVzc2FnZXMiOjM3''@;'; put 'put ''LCIuL3psaWIvenN0cmVhbSI6Mzl9XSwyNzpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50MTZBcnJheSYmInVuZGVmaW5lZCIhPXR5cGVvZiBJbnQzMkFycmF5O2llLmFz''@;'; put 'put ''c2lnbj1mdW5jdGlvbihOKXtmb3IodmFyIGVlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtlZS5sZW5ndGg7KXt2YXIgcT1lZS5zaGlmdCgpO2lmKHEpe2lmKCJvYmplY3QiIT10eXBlb2YgcSl0aHJvdyBuZXcgVHlwZUVycm9yKHErIm11c3QgYmUgbm9uLW9iamVj''@;'; put 'put ''dCIpO2Zvcih2YXIgSiBpbiBxKXEuaGFzT3duUHJvcGVydHkoSikmJihOW0pdPXFbSl0pfX1yZXR1cm4gTn0saWUuc2hyaW5rQnVmPWZ1bmN0aW9uKE4sZWUpe3JldHVybiBOLmxlbmd0aD09PWVlP046Ti5zdWJhcnJheT9OLnN1YmFycmF5KDAsZWUpOihOLmxlbmd0aD1lZSxOKX07dmFyIFk9''@;'; put 'put ''e2FycmF5U2V0OmZ1bmN0aW9uKE4sZWUscSxKLHNlKXtpZihlZS5zdWJhcnJheSYmTi5zdWJhcnJheSlOLnNldChlZS5zdWJhcnJheShxLHErSiksc2UpO2Vsc2UgZm9yKHZhciBhZT0wO2FlPEo7YWUrKylOW3NlK2FlXT1lZVtxK2FlXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihOKXt2YXIg''@;'; put 'put ''ZWUscSxKLHNlLGFlLGZlO2ZvcihKPTAsZWU9MCxxPU4ubGVuZ3RoO2VlPHE7ZWUrKylKKz1OW2VlXS5sZW5ndGg7Zm9yKGZlPW5ldyBVaW50OEFycmF5KEopLHNlPTAsZWU9MCxxPU4ubGVuZ3RoO2VlPHE7ZWUrKylmZS5zZXQoYWU9TltlZV0sc2UpLHNlKz1hZS5sZW5ndGg7cmV0dXJuIGZl''@;'; put 'put ''fX0sVz17YXJyYXlTZXQ6ZnVuY3Rpb24oTixlZSxxLEosc2Upe2Zvcih2YXIgYWU9MDthZTxKO2FlKyspTltzZSthZV09ZWVbcSthZV19LGZsYXR0ZW5DaHVua3M6ZnVuY3Rpb24oTil7cmV0dXJuW10uY29uY2F0LmFwcGx5KFtdLE4pfX07aWUuc2V0VHlwZWQ9ZnVuY3Rpb24oTil7Tj8oaWUu''@;'; put 'put ''QnVmOD1VaW50OEFycmF5LGllLkJ1ZjE2PVVpbnQxNkFycmF5LGllLkJ1ZjMyPUludDMyQXJyYXksaWUuYXNzaWduKGllLFkpKTooaWUuQnVmOD1BcnJheSxpZS5CdWYxNj1BcnJheSxpZS5CdWYzMj1BcnJheSxpZS5hc3NpZ24oaWUsVykpfSxpZS5zZXRUeXBlZChsZSl9LHt9XSwyODpbZnVu''@;'; put 'put ''Y3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIGxlPVEoIi4vY29tbW9uIiksWT0hMCxXPSEwO3RyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsWzBdKX1jYXRjaChKKXtZPSExfXRyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMSkp''@;'; put 'put ''fWNhdGNoKEope1c9ITF9Zm9yKHZhciBOPW5ldyBsZS5CdWY4KDI1NiksZWU9MDtlZTwyNTY7ZWUrKylOW2VlXT1lZT49MjUyPzY6ZWU+PTI0OD81OmVlPj0yNDA/NDplZT49MjI0PzM6ZWU+PTE5Mj8yOjE7ZnVuY3Rpb24gcShKLHNlKXtpZihzZTw2NTUzNyYmKEouc3ViYXJyYXkmJld8fCFK''@;'; put 'put ''LnN1YmFycmF5JiZZKSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGxlLnNocmlua0J1ZihKLHNlKSk7Zm9yKHZhciBhZT0iIixmZT0wO2ZlPHNlO2ZlKyspYWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoSltmZV0pO3JldHVybiBhZX1OWzI1NF09TlsyNTRdPTEsaWUuc3Ry''@;'; put 'put ''aW5nMmJ1Zj1mdW5jdGlvbihKKXt2YXIgc2UsYWUsZmUsZGUsdmUsQWU9Si5sZW5ndGgsa2U9MDtmb3IoZGU9MDtkZTxBZTtkZSsrKTU1Mjk2PT0oNjQ1MTImKGFlPUouY2hhckNvZGVBdChkZSkpKSYmZGUrMTxBZSYmNTYzMjA9PSg2NDUxMiYoZmU9Si5jaGFyQ29kZUF0KGRlKzEpKSkmJihh''@;'; put 'put ''ZT02NTUzNisoYWUtNTUyOTY8PDEwKSsoZmUtNTYzMjApLGRlKyspLGtlKz1hZTwxMjg/MTphZTwyMDQ4PzI6YWU8NjU1MzY/Mzo0O2ZvcihzZT1uZXcgbGUuQnVmOChrZSksdmU9MCxkZT0wO3ZlPGtlO2RlKyspNTUyOTY9PSg2NDUxMiYoYWU9Si5jaGFyQ29kZUF0KGRlKSkpJiZkZSsxPEFl''@;'; put 'put ''JiY1NjMyMD09KDY0NTEyJihmZT1KLmNoYXJDb2RlQXQoZGUrMSkpKSYmKGFlPTY1NTM2KyhhZS01NTI5Njw8MTApKyhmZS01NjMyMCksZGUrKyksYWU8MTI4P3NlW3ZlKytdPWFlOmFlPDIwNDg/KHNlW3ZlKytdPTE5MnxhZT4+PjYsc2VbdmUrK109MTI4fDYzJmFlKTphZTw2NTUzNj8oc2Vb''@;'; put 'put ''dmUrK109MjI0fGFlPj4+MTIsc2VbdmUrK109MTI4fGFlPj4+NiY2MyxzZVt2ZSsrXT0xMjh8NjMmYWUpOihzZVt2ZSsrXT0yNDB8YWU+Pj4xOCxzZVt2ZSsrXT0xMjh8YWU+Pj4xMiY2MyxzZVt2ZSsrXT0xMjh8YWU+Pj42JjYzLHNlW3ZlKytdPTEyOHw2MyZhZSk7cmV0dXJuIHNlfSxpZS5i''@;'; put 'put ''dWYyYmluc3RyaW5nPWZ1bmN0aW9uKEope3JldHVybiBxKEosSi5sZW5ndGgpfSxpZS5iaW5zdHJpbmcyYnVmPWZ1bmN0aW9uKEope2Zvcih2YXIgc2U9bmV3IGxlLkJ1ZjgoSi5sZW5ndGgpLGFlPTAsZmU9c2UubGVuZ3RoO2FlPGZlO2FlKyspc2VbYWVdPUouY2hhckNvZGVBdChhZSk7cmV0''@;'; put 'put ''dXJuIHNlfSxpZS5idWYyc3RyaW5nPWZ1bmN0aW9uKEosc2Upe3ZhciBhZSxmZSxkZSx2ZSxBZT1zZXx8Si5sZW5ndGgsa2U9bmV3IEFycmF5KDIqQWUpO2ZvcihmZT0wLGFlPTA7YWU8QWU7KWlmKChkZT1KW2FlKytdKTwxMjgpa2VbZmUrK109ZGU7ZWxzZSBpZigodmU9TltkZV0pPjQpa2Vb''@;'; put 'put ''ZmUrK109NjU1MzMsYWUrPXZlLTE7ZWxzZXtmb3IoZGUmPTI9PT12ZT8zMTozPT09dmU/MTU6Nzt2ZT4xJiZhZTxBZTspZGU9ZGU8PDZ8NjMmSlthZSsrXSx2ZS0tO3ZlPjE/a2VbZmUrK109NjU1MzM6ZGU8NjU1MzY/a2VbZmUrK109ZGU6KGtlW2ZlKytdPTU1Mjk2fChkZS09NjU1MzYpPj4x''@;'; put 'put ''MCYxMDIzLGtlW2ZlKytdPTU2MzIwfDEwMjMmZGUpfXJldHVybiBxKGtlLGZlKX0saWUudXRmOGJvcmRlcj1mdW5jdGlvbihKLHNlKXt2YXIgYWU7Zm9yKChzZT1zZXx8Si5sZW5ndGgpPkoubGVuZ3RoJiYoc2U9Si5sZW5ndGgpLGFlPXNlLTE7YWU+PTAmJjEyOD09KDE5MiZKW2FlXSk7KWFl''@;'; put 'put ''LS07cmV0dXJuIGFlPDB8fDA9PT1hZT9zZTphZStOW0pbYWVdXT5zZT9hZTpzZX19LHsiLi9jb21tb24iOjI3fV0sMjk6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO1ouZXhwb3J0cz1mdW5jdGlvbiBsZShZLFcsTixlZSl7Zm9yKHZhciBxPTY1NTM1Jll8MCxKPVk+Pj4xNiY2NTUz''@;'; put 'put ''NXwwLHNlPTA7MCE9PU47KXtOLT1zZT1OPjJlMz8yZTM6Tjtkb3tKPUorKHE9cStXW2VlKytdfDApfDB9d2hpbGUoLS1zZSk7cSU9NjU1MjEsSiU9NjU1MjF9cmV0dXJuIHF8Sjw8MTZ8MH19LHt9XSwzMDpbZnVuY3Rpb24oUSxaLGllKXtaLmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJ''@;'; put 'put ''QUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJTklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpfU1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6''@;'; put 'put ''LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9DT01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjotMSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpf''@;'; put 'put ''VEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSwzMTpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7dmFyIFk9ZnVuY3Rpb24gbGUoKXtmb3IodmFyIE4sZWU9W10scT0wO3E8MjU2O3ErKyl7Tj1xO2Zvcih2YXIgSj0wO0o8ODtKKyspTj0xJk4/Mzk4ODI5MjM4NF5O''@;'; put 'put ''Pj4+MTpOPj4+MTtlZVtxXT1OfXJldHVybiBlZX0oKTtaLmV4cG9ydHM9ZnVuY3Rpb24gVyhOLGVlLHEsSil7dmFyIHNlPVksYWU9SitxO05ePS0xO2Zvcih2YXIgZmU9SjtmZTxhZTtmZSsrKU49Tj4+Pjhec2VbMjU1JihOXmVlW2ZlXSldO3JldHVybi0xXk59fSx7fV0sMzI6W2Z1bmN0aW9u''@;'; put 'put ''KFEsWixpZSl7InVzZSBzdHJpY3QiO3ZhciBsZT1RKCIuLi91dGlscy9jb21tb24iKSxZPVEoIi4vdHJlZXMiKSxXPVEoIi4vYWRsZXIzMiIpLE49USgiLi9jcmMzMiIpLGVlPVEoIi4vbWVzc2FnZXMiKSxndD0yNjI7ZnVuY3Rpb24gY3QoVnQsc24pe3JldHVybiBWdC5tc2c9ZWVbc25dLHNu''@;'; put 'put ''fWZ1bmN0aW9uIE50KFZ0KXtyZXR1cm4oVnQ8PDEpLShWdD40Pzk6MCl9ZnVuY3Rpb24gemUoVnQpe2Zvcih2YXIgc249VnQubGVuZ3RoOy0tc24+PTA7KVZ0W3NuXT0wfWZ1bmN0aW9uIFllKFZ0KXt2YXIgc249VnQuc3RhdGUsVW49c24ucGVuZGluZztVbj5WdC5hdmFpbF9vdXQmJihVbj1W''@;'; put 'put ''dC5hdmFpbF9vdXQpLDAhPT1VbiYmKGxlLmFycmF5U2V0KFZ0Lm91dHB1dCxzbi5wZW5kaW5nX2J1Zixzbi5wZW5kaW5nX291dCxVbixWdC5uZXh0X291dCksVnQubmV4dF9vdXQrPVVuLHNuLnBlbmRpbmdfb3V0Kz1VbixWdC50b3RhbF9vdXQrPVVuLFZ0LmF2YWlsX291dC09VW4sc24ucGVu''@;'; put 'put ''ZGluZy09VW4sMD09PXNuLnBlbmRpbmcmJihzbi5wZW5kaW5nX291dD0wKSl9ZnVuY3Rpb24gQXQoVnQsc24pe1kuX3RyX2ZsdXNoX2Jsb2NrKFZ0LFZ0LmJsb2NrX3N0YXJ0Pj0wP1Z0LmJsb2NrX3N0YXJ0Oi0xLFZ0LnN0cnN0YXJ0LVZ0LmJsb2NrX3N0YXJ0LHNuKSxWdC5ibG9ja19zdGFy''@;'; put 'put ''dD1WdC5zdHJzdGFydCxZZShWdC5zdHJtKX1mdW5jdGlvbiBqdChWdCxzbil7VnQucGVuZGluZ19idWZbVnQucGVuZGluZysrXT1zbn1mdW5jdGlvbiBKdChWdCxzbil7VnQucGVuZGluZ19idWZbVnQucGVuZGluZysrXT1zbj4+PjgmMjU1LFZ0LnBlbmRpbmdfYnVmW1Z0LnBlbmRpbmcrK109''@;'; put 'put ''MjU1JnNufWZ1bmN0aW9uIG1uKFZ0LHNuLFVuLF9uKXt2YXIgdG49VnQuYXZhaWxfaW47cmV0dXJuIHRuPl9uJiYodG49X24pLDA9PT10bj8wOihWdC5hdmFpbF9pbi09dG4sbGUuYXJyYXlTZXQoc24sVnQuaW5wdXQsVnQubmV4dF9pbix0bixVbiksMT09PVZ0LnN0YXRlLndyYXA/VnQuYWRs''@;'; put 'put ''ZXI9VyhWdC5hZGxlcixzbix0bixVbik6Mj09PVZ0LnN0YXRlLndyYXAmJihWdC5hZGxlcj1OKFZ0LmFkbGVyLHNuLHRuLFVuKSksVnQubmV4dF9pbis9dG4sVnQudG90YWxfaW4rPXRuLHRuKX1mdW5jdGlvbiBwbihWdCxzbil7dmFyIHRuLEduLFVuPVZ0Lm1heF9jaGFpbl9sZW5ndGgsX249''@;'; put 'put ''VnQuc3Ryc3RhcnQsVHI9VnQucHJldl9sZW5ndGgsUG49VnQubmljZV9tYXRjaCxTcj1WdC5zdHJzdGFydD5WdC53X3NpemUtZ3Q/VnQuc3Ryc3RhcnQtKFZ0Lndfc2l6ZS1ndCk6MCx2bj1WdC53aW5kb3csdW49VnQud19tYXNrLGNuPVZ0LnByZXYsU249VnQuc3Ryc3RhcnQrMjU4LEd0PXZu''@;'; put 'put ''W19uK1RyLTFdLEVuPXZuW19uK1RyXTtWdC5wcmV2X2xlbmd0aD49VnQuZ29vZF9tYXRjaCYmKFVuPj49MiksUG4+VnQubG9va2FoZWFkJiYoUG49VnQubG9va2FoZWFkKTtkb3tpZih2blsodG49c24pK1RyXT09PUVuJiZ2blt0bitUci0xXT09PUd0JiZ2blt0bl09PT12bltfbl0mJnZuWysr''@;'; put 'put ''dG5dPT09dm5bX24rMV0pe19uKz0yLHRuKys7ZG97fXdoaWxlKHZuWysrX25dPT09dm5bKyt0bl0mJnZuWysrX25dPT09dm5bKyt0bl0mJnZuWysrX25dPT09dm5bKyt0bl0mJnZuWysrX25dPT09dm5bKyt0bl0mJnZuWysrX25dPT09dm5bKyt0bl0mJnZuWysrX25dPT09dm5bKyt0bl0mJnZu''@;'; put 'put ''WysrX25dPT09dm5bKyt0bl0mJnZuWysrX25dPT09dm5bKyt0bl0mJl9uPFNuKTtpZihHbj0yNTgtKFNuLV9uKSxfbj1Tbi0yNTgsR24+VHIpe2lmKFZ0Lm1hdGNoX3N0YXJ0PXNuLFRyPUduLEduPj1QbilicmVhaztHdD12bltfbitUci0xXSxFbj12bltfbitUcl19fX13aGlsZSgoc249Y25b''@;'; put 'put ''c24mdW5dKT5TciYmMCE9LS1Vbik7cmV0dXJuIFRyPD1WdC5sb29rYWhlYWQ/VHI6VnQubG9va2FoZWFkfWZ1bmN0aW9uIGJuKFZ0KXt2YXIgVW4sX24sdG4sR24sVHIsc249VnQud19zaXplO2Rve2lmKEduPVZ0LndpbmRvd19zaXplLVZ0Lmxvb2thaGVhZC1WdC5zdHJzdGFydCxWdC5zdHJz''@;'; put 'put ''dGFydD49c24rKHNuLWd0KSl7bGUuYXJyYXlTZXQoVnQud2luZG93LFZ0LndpbmRvdyxzbixzbiwwKSxWdC5tYXRjaF9zdGFydC09c24sVnQuc3Ryc3RhcnQtPXNuLFZ0LmJsb2NrX3N0YXJ0LT1zbixVbj1fbj1WdC5oYXNoX3NpemU7ZG97dG49VnQuaGVhZFstLVVuXSxWdC5oZWFkW1VuXT10''@;'; put 'put ''bj49c24/dG4tc246MH13aGlsZSgtLV9uKTtVbj1fbj1zbjtkb3t0bj1WdC5wcmV2Wy0tVW5dLFZ0LnByZXZbVW5dPXRuPj1zbj90bi1zbjowfXdoaWxlKC0tX24pO0duKz1zbn1pZigwPT09VnQuc3RybS5hdmFpbF9pbilicmVhaztpZihfbj1tbihWdC5zdHJtLFZ0LndpbmRvdyxWdC5zdHJz''@;'; put 'put ''dGFydCtWdC5sb29rYWhlYWQsR24pLFZ0Lmxvb2thaGVhZCs9X24sVnQubG9va2FoZWFkK1Z0Lmluc2VydD49Mylmb3IoVnQuaW5zX2g9VnQud2luZG93W1RyPVZ0LnN0cnN0YXJ0LVZ0Lmluc2VydF0sVnQuaW5zX2g9KFZ0Lmluc19oPDxWdC5oYXNoX3NoaWZ0XlZ0LndpbmRvd1tUcisxXSkm''@;'; put 'put ''VnQuaGFzaF9tYXNrO1Z0Lmluc2VydCYmKFZ0Lmluc19oPShWdC5pbnNfaDw8VnQuaGFzaF9zaGlmdF5WdC53aW5kb3dbVHIrMy0xXSkmVnQuaGFzaF9tYXNrLFZ0LnByZXZbVHImVnQud19tYXNrXT1WdC5oZWFkW1Z0Lmluc19oXSxWdC5oZWFkW1Z0Lmluc19oXT1UcixUcisrLFZ0Lmluc2Vy''@;'; put 'put ''dC0tLCEoVnQubG9va2FoZWFkK1Z0Lmluc2VydDwzKSk7KTt9d2hpbGUoVnQubG9va2FoZWFkPGd0JiYwIT09VnQuc3RybS5hdmFpbF9pbil9ZnVuY3Rpb24gTm4oVnQsc24pe2Zvcih2YXIgVW4sX247Oyl7aWYoVnQubG9va2FoZWFkPGd0KXtpZihibihWdCksVnQubG9va2FoZWFkPGd0JiYw''@;'; put 'put ''PT09c24pcmV0dXJuIDE7aWYoMD09PVZ0Lmxvb2thaGVhZClicmVha31pZihVbj0wLFZ0Lmxvb2thaGVhZD49MyYmKFZ0Lmluc19oPShWdC5pbnNfaDw8VnQuaGFzaF9zaGlmdF5WdC53aW5kb3dbVnQuc3Ryc3RhcnQrMy0xXSkmVnQuaGFzaF9tYXNrLFVuPVZ0LnByZXZbVnQuc3Ryc3RhcnQm''@;'; put 'put ''VnQud19tYXNrXT1WdC5oZWFkW1Z0Lmluc19oXSxWdC5oZWFkW1Z0Lmluc19oXT1WdC5zdHJzdGFydCksMCE9PVVuJiZWdC5zdHJzdGFydC1Vbjw9VnQud19zaXplLWd0JiYoVnQubWF0Y2hfbGVuZ3RoPXBuKFZ0LFVuKSksVnQubWF0Y2hfbGVuZ3RoPj0zKWlmKF9uPVkuX3RyX3RhbGx5KFZ0''@;'; put 'put ''LFZ0LnN0cnN0YXJ0LVZ0Lm1hdGNoX3N0YXJ0LFZ0Lm1hdGNoX2xlbmd0aC0zKSxWdC5sb29rYWhlYWQtPVZ0Lm1hdGNoX2xlbmd0aCxWdC5tYXRjaF9sZW5ndGg8PVZ0Lm1heF9sYXp5X21hdGNoJiZWdC5sb29rYWhlYWQ+PTMpe1Z0Lm1hdGNoX2xlbmd0aC0tO2Rve1Z0LnN0cnN0YXJ0Kyss''@;'; put 'put ''VnQuaW5zX2g9KFZ0Lmluc19oPDxWdC5oYXNoX3NoaWZ0XlZ0LndpbmRvd1tWdC5zdHJzdGFydCszLTFdKSZWdC5oYXNoX21hc2ssVW49VnQucHJldltWdC5zdHJzdGFydCZWdC53X21hc2tdPVZ0LmhlYWRbVnQuaW5zX2hdLFZ0LmhlYWRbVnQuaW5zX2hdPVZ0LnN0cnN0YXJ0fXdoaWxlKDAh''@;'; put 'put ''PS0tVnQubWF0Y2hfbGVuZ3RoKTtWdC5zdHJzdGFydCsrfWVsc2UgVnQuc3Ryc3RhcnQrPVZ0Lm1hdGNoX2xlbmd0aCxWdC5tYXRjaF9sZW5ndGg9MCxWdC5pbnNfaD1WdC53aW5kb3dbVnQuc3Ryc3RhcnRdLFZ0Lmluc19oPShWdC5pbnNfaDw8VnQuaGFzaF9zaGlmdF5WdC53aW5kb3dbVnQu''@;'; put 'put ''c3Ryc3RhcnQrMV0pJlZ0Lmhhc2hfbWFzaztlbHNlIF9uPVkuX3RyX3RhbGx5KFZ0LDAsVnQud2luZG93W1Z0LnN0cnN0YXJ0XSksVnQubG9va2FoZWFkLS0sVnQuc3Ryc3RhcnQrKztpZihfbiYmKEF0KFZ0LCExKSwwPT09VnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBWdC5p''@;'; put 'put ''bnNlcnQ9VnQuc3Ryc3RhcnQ8Mj9WdC5zdHJzdGFydDoyLDQ9PT1zbj8oQXQoVnQsITApLDA9PT1WdC5zdHJtLmF2YWlsX291dD8zOjQpOlZ0Lmxhc3RfbGl0JiYoQXQoVnQsITEpLDA9PT1WdC5zdHJtLmF2YWlsX291dCk/MToyfWZ1bmN0aW9uIGtuKFZ0LHNuKXtmb3IodmFyIFVuLF9uLHRu''@;'; put 'put ''Ozspe2lmKFZ0Lmxvb2thaGVhZDxndCl7aWYoYm4oVnQpLFZ0Lmxvb2thaGVhZDxndCYmMD09PXNuKXJldHVybiAxO2lmKDA9PT1WdC5sb29rYWhlYWQpYnJlYWt9aWYoVW49MCxWdC5sb29rYWhlYWQ+PTMmJihWdC5pbnNfaD0oVnQuaW5zX2g8PFZ0Lmhhc2hfc2hpZnReVnQud2luZG93W1Z0''@;'; put 'put ''LnN0cnN0YXJ0KzMtMV0pJlZ0Lmhhc2hfbWFzayxVbj1WdC5wcmV2W1Z0LnN0cnN0YXJ0JlZ0LndfbWFza109VnQuaGVhZFtWdC5pbnNfaF0sVnQuaGVhZFtWdC5pbnNfaF09VnQuc3Ryc3RhcnQpLFZ0LnByZXZfbGVuZ3RoPVZ0Lm1hdGNoX2xlbmd0aCxWdC5wcmV2X21hdGNoPVZ0Lm1hdGNo''@;'; put 'put ''X3N0YXJ0LFZ0Lm1hdGNoX2xlbmd0aD0yLDAhPT1VbiYmVnQucHJldl9sZW5ndGg8VnQubWF4X2xhenlfbWF0Y2gmJlZ0LnN0cnN0YXJ0LVVuPD1WdC53X3NpemUtZ3QmJihWdC5tYXRjaF9sZW5ndGg9cG4oVnQsVW4pLFZ0Lm1hdGNoX2xlbmd0aDw9NSYmKDE9PT1WdC5zdHJhdGVneXx8Mz09''@;'; put 'put ''PVZ0Lm1hdGNoX2xlbmd0aCYmVnQuc3Ryc3RhcnQtVnQubWF0Y2hfc3RhcnQ+NDA5NikmJihWdC5tYXRjaF9sZW5ndGg9MikpLFZ0LnByZXZfbGVuZ3RoPj0zJiZWdC5tYXRjaF9sZW5ndGg8PVZ0LnByZXZfbGVuZ3RoKXt0bj1WdC5zdHJzdGFydCtWdC5sb29rYWhlYWQtMyxfbj1ZLl90cl90''@;'; put 'put ''YWxseShWdCxWdC5zdHJzdGFydC0xLVZ0LnByZXZfbWF0Y2gsVnQucHJldl9sZW5ndGgtMyksVnQubG9va2FoZWFkLT1WdC5wcmV2X2xlbmd0aC0xLFZ0LnByZXZfbGVuZ3RoLT0yO2RveysrVnQuc3Ryc3RhcnQ8PXRuJiYoVnQuaW5zX2g9KFZ0Lmluc19oPDxWdC5oYXNoX3NoaWZ0XlZ0Lndp''@;'; put 'put ''bmRvd1tWdC5zdHJzdGFydCszLTFdKSZWdC5oYXNoX21hc2ssVW49VnQucHJldltWdC5zdHJzdGFydCZWdC53X21hc2tdPVZ0LmhlYWRbVnQuaW5zX2hdLFZ0LmhlYWRbVnQuaW5zX2hdPVZ0LnN0cnN0YXJ0KX13aGlsZSgwIT0tLVZ0LnByZXZfbGVuZ3RoKTtpZihWdC5tYXRjaF9hdmFpbGFi''@;'; put 'put ''bGU9MCxWdC5tYXRjaF9sZW5ndGg9MixWdC5zdHJzdGFydCsrLF9uJiYoQXQoVnQsITEpLDA9PT1WdC5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9ZWxzZSBpZihWdC5tYXRjaF9hdmFpbGFibGUpe2lmKChfbj1ZLl90cl90YWxseShWdCwwLFZ0LndpbmRvd1tWdC5zdHJzdGFydC0xXSkpJiZB''@;'; put 'put ''dChWdCwhMSksVnQuc3Ryc3RhcnQrKyxWdC5sb29rYWhlYWQtLSwwPT09VnQuc3RybS5hdmFpbF9vdXQpcmV0dXJuIDF9ZWxzZSBWdC5tYXRjaF9hdmFpbGFibGU9MSxWdC5zdHJzdGFydCsrLFZ0Lmxvb2thaGVhZC0tfXJldHVybiBWdC5tYXRjaF9hdmFpbGFibGUmJihfbj1ZLl90cl90YWxs''@;'; put 'put ''eShWdCwwLFZ0LndpbmRvd1tWdC5zdHJzdGFydC0xXSksVnQubWF0Y2hfYXZhaWxhYmxlPTApLFZ0Lmluc2VydD1WdC5zdHJzdGFydDwyP1Z0LnN0cnN0YXJ0OjIsND09PXNuPyhBdChWdCwhMCksMD09PVZ0LnN0cm0uYXZhaWxfb3V0PzM6NCk6VnQubGFzdF9saXQmJihBdChWdCwhMSksMD09''@;'; put 'put ''PVZ0LnN0cm0uYXZhaWxfb3V0KT8xOjJ9dmFyIEZyLFhuPWZ1bmN0aW9uKFZ0LHNuLFVuLF9uLHRuKXt0aGlzLmdvb2RfbGVuZ3RoPVZ0LHRoaXMubWF4X2xhenk9c24sdGhpcy5uaWNlX2xlbmd0aD1Vbix0aGlzLm1heF9jaGFpbj1fbix0aGlzLmZ1bmM9dG59O2Z1bmN0aW9uIGVuKCl7dGhp''@;'; put 'put ''cy5zdHJtPW51bGwsdGhpcy5zdGF0dXM9MCx0aGlzLnBlbmRpbmdfYnVmPW51bGwsdGhpcy5wZW5kaW5nX2J1Zl9zaXplPTAsdGhpcy5wZW5kaW5nX291dD0wLHRoaXMucGVuZGluZz0wLHRoaXMud3JhcD0wLHRoaXMuZ3poZWFkPW51bGwsdGhpcy5nemluZGV4PTAsdGhpcy5tZXRob2Q9OCx0''@;'; put 'put ''aGlzLmxhc3RfZmx1c2g9LTEsdGhpcy53X3NpemU9MCx0aGlzLndfYml0cz0wLHRoaXMud19tYXNrPTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLndpbmRvd19zaXplPTAsdGhpcy5wcmV2PW51bGwsdGhpcy5oZWFkPW51bGwsdGhpcy5pbnNfaD0wLHRoaXMuaGFzaF9zaXplPTAsdGhpcy5oYXNo''@;'; put 'put ''X2JpdHM9MCx0aGlzLmhhc2hfbWFzaz0wLHRoaXMuaGFzaF9zaGlmdD0wLHRoaXMuYmxvY2tfc3RhcnQ9MCx0aGlzLm1hdGNoX2xlbmd0aD0wLHRoaXMucHJldl9tYXRjaD0wLHRoaXMubWF0Y2hfYXZhaWxhYmxlPTAsdGhpcy5zdHJzdGFydD0wLHRoaXMubWF0Y2hfc3RhcnQ9MCx0aGlzLmxv''@;'; put 'put ''b2thaGVhZD0wLHRoaXMucHJldl9sZW5ndGg9MCx0aGlzLm1heF9jaGFpbl9sZW5ndGg9MCx0aGlzLm1heF9sYXp5X21hdGNoPTAsdGhpcy5sZXZlbD0wLHRoaXMuc3RyYXRlZ3k9MCx0aGlzLmdvb2RfbWF0Y2g9MCx0aGlzLm5pY2VfbWF0Y2g9MCx0aGlzLmR5bl9sdHJlZT1uZXcgbGUuQnVm''@;'; put 'put ''MTYoMTE0NiksdGhpcy5keW5fZHRyZWU9bmV3IGxlLkJ1ZjE2KDEyMiksdGhpcy5ibF90cmVlPW5ldyBsZS5CdWYxNig3OCksemUodGhpcy5keW5fbHRyZWUpLHplKHRoaXMuZHluX2R0cmVlKSx6ZSh0aGlzLmJsX3RyZWUpLHRoaXMubF9kZXNjPW51bGwsdGhpcy5kX2Rlc2M9bnVsbCx0aGlz''@;'; put 'put ''LmJsX2Rlc2M9bnVsbCx0aGlzLmJsX2NvdW50PW5ldyBsZS5CdWYxNigxNiksdGhpcy5oZWFwPW5ldyBsZS5CdWYxNig1NzMpLHplKHRoaXMuaGVhcCksdGhpcy5oZWFwX2xlbj0wLHRoaXMuaGVhcF9tYXg9MCx0aGlzLmRlcHRoPW5ldyBsZS5CdWYxNig1NzMpLHplKHRoaXMuZGVwdGgpLHRo''@;'; put 'put ''aXMubF9idWY9MCx0aGlzLmxpdF9idWZzaXplPTAsdGhpcy5sYXN0X2xpdD0wLHRoaXMuZF9idWY9MCx0aGlzLm9wdF9sZW49MCx0aGlzLnN0YXRpY19sZW49MCx0aGlzLm1hdGNoZXM9MCx0aGlzLmluc2VydD0wLHRoaXMuYmlfYnVmPTAsdGhpcy5iaV92YWxpZD0wfWZ1bmN0aW9uIGRyKFZ0''@;'; put 'put ''KXt2YXIgc247cmV0dXJuIFZ0JiZWdC5zdGF0ZT8oVnQudG90YWxfaW49VnQudG90YWxfb3V0PTAsVnQuZGF0YV90eXBlPTIsKHNuPVZ0LnN0YXRlKS5wZW5kaW5nPTAsc24ucGVuZGluZ19vdXQ9MCxzbi53cmFwPDAmJihzbi53cmFwPS1zbi53cmFwKSxzbi5zdGF0dXM9c24ud3JhcD80Mjox''@;'; put 'put ''MTMsVnQuYWRsZXI9Mj09PXNuLndyYXA/MDoxLHNuLmxhc3RfZmx1c2g9MCxZLl90cl9pbml0KHNuKSwwKTpjdChWdCwtMil9ZnVuY3Rpb24gbnIoVnQpe3ZhciBzbj1kcihWdCk7cmV0dXJuIDA9PT1zbiYmZnVuY3Rpb24geHIoVnQpe1Z0LndpbmRvd19zaXplPTIqVnQud19zaXplLHplKFZ0''@;'; put 'put ''LmhlYWQpLFZ0Lm1heF9sYXp5X21hdGNoPUZyW1Z0LmxldmVsXS5tYXhfbGF6eSxWdC5nb29kX21hdGNoPUZyW1Z0LmxldmVsXS5nb29kX2xlbmd0aCxWdC5uaWNlX21hdGNoPUZyW1Z0LmxldmVsXS5uaWNlX2xlbmd0aCxWdC5tYXhfY2hhaW5fbGVuZ3RoPUZyW1Z0LmxldmVsXS5tYXhfY2hh''@;'; put 'put ''aW4sVnQuc3Ryc3RhcnQ9MCxWdC5ibG9ja19zdGFydD0wLFZ0Lmxvb2thaGVhZD0wLFZ0Lmluc2VydD0wLFZ0Lm1hdGNoX2xlbmd0aD1WdC5wcmV2X2xlbmd0aD0yLFZ0Lm1hdGNoX2F2YWlsYWJsZT0wLFZ0Lmluc19oPTB9KFZ0LnN0YXRlKSxzbn1mdW5jdGlvbiAkbihWdCxzbixVbixfbix0''@;'; put 'put ''bixHbil7aWYoIVZ0KXJldHVybi0yO3ZhciBUcj0xO2lmKC0xPT09c24mJihzbj02KSxfbjwwPyhUcj0wLF9uPS1fbik6X24+MTUmJihUcj0yLF9uLT0xNiksdG48MXx8dG4+OXx8OCE9PVVufHxfbjw4fHxfbj4xNXx8c248MHx8c24+OXx8R248MHx8R24+NClyZXR1cm4gY3QoVnQsLTIpOzg9''@;'; put 'put ''PT1fbiYmKF9uPTkpO3ZhciBQbj1uZXcgZW47cmV0dXJuIFZ0LnN0YXRlPVBuLFBuLnN0cm09VnQsUG4ud3JhcD1UcixQbi5nemhlYWQ9bnVsbCxQbi53X2JpdHM9X24sUG4ud19zaXplPTE8PFBuLndfYml0cyxQbi53X21hc2s9UG4ud19zaXplLTEsUG4uaGFzaF9iaXRzPXRuKzcsUG4uaGFz''@;'; put 'put ''aF9zaXplPTE8PFBuLmhhc2hfYml0cyxQbi5oYXNoX21hc2s9UG4uaGFzaF9zaXplLTEsUG4uaGFzaF9zaGlmdD1+figoUG4uaGFzaF9iaXRzKzMtMSkvMyksUG4ud2luZG93PW5ldyBsZS5CdWY4KDIqUG4ud19zaXplKSxQbi5oZWFkPW5ldyBsZS5CdWYxNihQbi5oYXNoX3NpemUpLFBuLnBy''@;'; put 'put ''ZXY9bmV3IGxlLkJ1ZjE2KFBuLndfc2l6ZSksUG4ubGl0X2J1ZnNpemU9MTw8dG4rNixQbi5wZW5kaW5nX2J1Zl9zaXplPTQqUG4ubGl0X2J1ZnNpemUsUG4ucGVuZGluZ19idWY9bmV3IGxlLkJ1ZjgoUG4ucGVuZGluZ19idWZfc2l6ZSksUG4uZF9idWY9UG4ubGl0X2J1ZnNpemU+PjEsUG4u''@;'; put 'put ''bF9idWY9MypQbi5saXRfYnVmc2l6ZSxQbi5sZXZlbD1zbixQbi5zdHJhdGVneT1HbixQbi5tZXRob2Q9VW4sbnIoVnQpfUZyPVtuZXcgWG4oMCwwLDAsMCxmdW5jdGlvbiBsbihWdCxzbil7dmFyIFVuPTY1NTM1O2ZvcihVbj5WdC5wZW5kaW5nX2J1Zl9zaXplLTUmJihVbj1WdC5wZW5kaW5n''@;'; put 'put ''X2J1Zl9zaXplLTUpOzspe2lmKFZ0Lmxvb2thaGVhZDw9MSl7aWYoYm4oVnQpLDA9PT1WdC5sb29rYWhlYWQmJjA9PT1zbilyZXR1cm4gMTtpZigwPT09VnQubG9va2FoZWFkKWJyZWFrfVZ0LnN0cnN0YXJ0Kz1WdC5sb29rYWhlYWQsVnQubG9va2FoZWFkPTA7dmFyIF9uPVZ0LmJsb2NrX3N0''@;'; put 'put ''YXJ0K1VuO2lmKCgwPT09VnQuc3Ryc3RhcnR8fFZ0LnN0cnN0YXJ0Pj1fbikmJihWdC5sb29rYWhlYWQ9VnQuc3Ryc3RhcnQtX24sVnQuc3Ryc3RhcnQ9X24sQXQoVnQsITEpLDA9PT1WdC5zdHJtLmF2YWlsX291dCl8fFZ0LnN0cnN0YXJ0LVZ0LmJsb2NrX3N0YXJ0Pj1WdC53X3NpemUtZ3Qm''@;'; put 'put ''JihBdChWdCwhMSksMD09PVZ0LnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1yZXR1cm4gVnQuaW5zZXJ0PTAsND09PXNuPyhBdChWdCwhMCksMD09PVZ0LnN0cm0uYXZhaWxfb3V0PzM6NCk6KFZ0LnN0cnN0YXJ0PlZ0LmJsb2NrX3N0YXJ0JiZBdChWdCwhMSksMSl9KSxuZXcgWG4oNCw0LDgs''@;'; put 'put ''NCxObiksbmV3IFhuKDQsNSwxNiw4LE5uKSxuZXcgWG4oNCw2LDMyLDMyLE5uKSxuZXcgWG4oNCw0LDE2LDE2LGtuKSxuZXcgWG4oOCwxNiwzMiwzMixrbiksbmV3IFhuKDgsMTYsMTI4LDEyOCxrbiksbmV3IFhuKDgsMzIsMTI4LDI1NixrbiksbmV3IFhuKDMyLDEyOCwyNTgsMTAyNCxrbiks''@;'; put 'put ''bmV3IFhuKDMyLDI1OCwyNTgsNDA5NixrbildLGllLmRlZmxhdGVJbml0PWZ1bmN0aW9uIFl0KFZ0LHNuKXtyZXR1cm4gJG4oVnQsc24sOCwxNSw4LDApfSxpZS5kZWZsYXRlSW5pdDI9JG4saWUuZGVmbGF0ZVJlc2V0PW5yLGllLmRlZmxhdGVSZXNldEtlZXA9ZHIsaWUuZGVmbGF0ZVNldEhl''@;'; put 'put ''YWRlcj1mdW5jdGlvbiB3bihWdCxzbil7cmV0dXJuIFZ0JiZWdC5zdGF0ZSYmMj09PVZ0LnN0YXRlLndyYXA/KFZ0LnN0YXRlLmd6aGVhZD1zbiwwKTotMn0saWUuZGVmbGF0ZT1mdW5jdGlvbiBnbihWdCxzbil7dmFyIFVuLF9uLHRuLEduO2lmKCFWdHx8IVZ0LnN0YXRlfHxzbj41fHxzbjww''@;'; put 'put ''KXJldHVybiBWdD9jdChWdCwtMik6LTI7aWYoX249VnQuc3RhdGUsIVZ0Lm91dHB1dHx8IVZ0LmlucHV0JiYwIT09VnQuYXZhaWxfaW58fDY2Nj09PV9uLnN0YXR1cyYmNCE9PXNuKXJldHVybiBjdChWdCwwPT09VnQuYXZhaWxfb3V0Py01Oi0yKTtpZihfbi5zdHJtPVZ0LFVuPV9uLmxhc3Rf''@;'; put 'put ''Zmx1c2gsX24ubGFzdF9mbHVzaD1zbiw0Mj09PV9uLnN0YXR1cylpZigyPT09X24ud3JhcClWdC5hZGxlcj0wLGp0KF9uLDMxKSxqdChfbiwxMzkpLGp0KF9uLDgpLF9uLmd6aGVhZD8oanQoX24sKF9uLmd6aGVhZC50ZXh0PzE6MCkrKF9uLmd6aGVhZC5oY3JjPzI6MCkrKF9uLmd6aGVhZC5l''@;'; put 'put ''eHRyYT80OjApKyhfbi5nemhlYWQubmFtZT84OjApKyhfbi5nemhlYWQuY29tbWVudD8xNjowKSksanQoX24sMjU1Jl9uLmd6aGVhZC50aW1lKSxqdChfbixfbi5nemhlYWQudGltZT4+OCYyNTUpLGp0KF9uLF9uLmd6aGVhZC50aW1lPj4xNiYyNTUpLGp0KF9uLF9uLmd6aGVhZC50aW1lPj4y''@;'; put 'put ''NCYyNTUpLGp0KF9uLDk9PT1fbi5sZXZlbD8yOl9uLnN0cmF0ZWd5Pj0yfHxfbi5sZXZlbDwyPzQ6MCksanQoX24sMjU1Jl9uLmd6aGVhZC5vcyksX24uZ3poZWFkLmV4dHJhJiZfbi5nemhlYWQuZXh0cmEubGVuZ3RoJiYoanQoX24sMjU1Jl9uLmd6aGVhZC5leHRyYS5sZW5ndGgpLGp0KF9u''@;'; put 'put ''LF9uLmd6aGVhZC5leHRyYS5sZW5ndGg+PjgmMjU1KSksX24uZ3poZWFkLmhjcmMmJihWdC5hZGxlcj1OKFZ0LmFkbGVyLF9uLnBlbmRpbmdfYnVmLF9uLnBlbmRpbmcsMCkpLF9uLmd6aW5kZXg9MCxfbi5zdGF0dXM9NjkpOihqdChfbiwwKSxqdChfbiwwKSxqdChfbiwwKSxqdChfbiwwKSxq''@;'; put 'put ''dChfbiwwKSxqdChfbiw5PT09X24ubGV2ZWw/Mjpfbi5zdHJhdGVneT49Mnx8X24ubGV2ZWw8Mj80OjApLGp0KF9uLDMpLF9uLnN0YXR1cz0xMTMpO2Vsc2V7dmFyIFRyPTgrKF9uLndfYml0cy04PDw0KTw8ODtUcnw9KF9uLnN0cmF0ZWd5Pj0yfHxfbi5sZXZlbDwyPzA6X24ubGV2ZWw8Nj8x''@;'; put 'put ''OjY9PT1fbi5sZXZlbD8yOjMpPDw2LDAhPT1fbi5zdHJzdGFydCYmKFRyfD0zMiksVHIrPTMxLVRyJTMxLF9uLnN0YXR1cz0xMTMsSnQoX24sVHIpLDAhPT1fbi5zdHJzdGFydCYmKEp0KF9uLFZ0LmFkbGVyPj4+MTYpLEp0KF9uLDY1NTM1JlZ0LmFkbGVyKSksVnQuYWRsZXI9MX1pZig2OT09''@;'; put 'put ''PV9uLnN0YXR1cylpZihfbi5nemhlYWQuZXh0cmEpe2Zvcih0bj1fbi5wZW5kaW5nO19uLmd6aW5kZXg8KDY1NTM1Jl9uLmd6aGVhZC5leHRyYS5sZW5ndGgpJiYoX24ucGVuZGluZyE9PV9uLnBlbmRpbmdfYnVmX3NpemV8fChfbi5nemhlYWQuaGNyYyYmX24ucGVuZGluZz50biYmKFZ0LmFk''@;'; put 'put ''bGVyPU4oVnQuYWRsZXIsX24ucGVuZGluZ19idWYsX24ucGVuZGluZy10bix0bikpLFllKFZ0KSx0bj1fbi5wZW5kaW5nLF9uLnBlbmRpbmchPT1fbi5wZW5kaW5nX2J1Zl9zaXplKSk7KWp0KF9uLDI1NSZfbi5nemhlYWQuZXh0cmFbX24uZ3ppbmRleF0pLF9uLmd6aW5kZXgrKztfbi5nemhl''@;'; put 'put ''YWQuaGNyYyYmX24ucGVuZGluZz50biYmKFZ0LmFkbGVyPU4oVnQuYWRsZXIsX24ucGVuZGluZ19idWYsX24ucGVuZGluZy10bix0bikpLF9uLmd6aW5kZXg9PT1fbi5nemhlYWQuZXh0cmEubGVuZ3RoJiYoX24uZ3ppbmRleD0wLF9uLnN0YXR1cz03Myl9ZWxzZSBfbi5zdGF0dXM9NzM7aWYo''@;'; put 'put ''NzM9PT1fbi5zdGF0dXMpaWYoX24uZ3poZWFkLm5hbWUpe3RuPV9uLnBlbmRpbmc7ZG97aWYoX24ucGVuZGluZz09PV9uLnBlbmRpbmdfYnVmX3NpemUmJihfbi5nemhlYWQuaGNyYyYmX24ucGVuZGluZz50biYmKFZ0LmFkbGVyPU4oVnQuYWRsZXIsX24ucGVuZGluZ19idWYsX24ucGVuZGlu''@;'; put 'put ''Zy10bix0bikpLFllKFZ0KSx0bj1fbi5wZW5kaW5nLF9uLnBlbmRpbmc9PT1fbi5wZW5kaW5nX2J1Zl9zaXplKSl7R249MTticmVha31Hbj1fbi5nemluZGV4PF9uLmd6aGVhZC5uYW1lLmxlbmd0aD8yNTUmX24uZ3poZWFkLm5hbWUuY2hhckNvZGVBdChfbi5nemluZGV4KyspOjAsanQoX24s''@;'; put 'put ''R24pfXdoaWxlKDAhPT1Hbik7X24uZ3poZWFkLmhjcmMmJl9uLnBlbmRpbmc+dG4mJihWdC5hZGxlcj1OKFZ0LmFkbGVyLF9uLnBlbmRpbmdfYnVmLF9uLnBlbmRpbmctdG4sdG4pKSwwPT09R24mJihfbi5nemluZGV4PTAsX24uc3RhdHVzPTkxKX1lbHNlIF9uLnN0YXR1cz05MTtpZig5MT09''@;'; put 'put ''PV9uLnN0YXR1cylpZihfbi5nemhlYWQuY29tbWVudCl7dG49X24ucGVuZGluZztkb3tpZihfbi5wZW5kaW5nPT09X24ucGVuZGluZ19idWZfc2l6ZSYmKF9uLmd6aGVhZC5oY3JjJiZfbi5wZW5kaW5nPnRuJiYoVnQuYWRsZXI9TihWdC5hZGxlcixfbi5wZW5kaW5nX2J1Zixfbi5wZW5kaW5n''@;'; put 'put ''LXRuLHRuKSksWWUoVnQpLHRuPV9uLnBlbmRpbmcsX24ucGVuZGluZz09PV9uLnBlbmRpbmdfYnVmX3NpemUpKXtHbj0xO2JyZWFrfUduPV9uLmd6aW5kZXg8X24uZ3poZWFkLmNvbW1lbnQubGVuZ3RoPzI1NSZfbi5nemhlYWQuY29tbWVudC5jaGFyQ29kZUF0KF9uLmd6aW5kZXgrKyk6MCxq''@;'; put 'put ''dChfbixHbil9d2hpbGUoMCE9PUduKTtfbi5nemhlYWQuaGNyYyYmX24ucGVuZGluZz50biYmKFZ0LmFkbGVyPU4oVnQuYWRsZXIsX24ucGVuZGluZ19idWYsX24ucGVuZGluZy10bix0bikpLDA9PT1HbiYmKF9uLnN0YXR1cz0xMDMpfWVsc2UgX24uc3RhdHVzPTEwMztpZigxMDM9PT1fbi5z''@;'; put 'put ''dGF0dXMmJihfbi5nemhlYWQuaGNyYz8oX24ucGVuZGluZysyPl9uLnBlbmRpbmdfYnVmX3NpemUmJlllKFZ0KSxfbi5wZW5kaW5nKzI8PV9uLnBlbmRpbmdfYnVmX3NpemUmJihqdChfbiwyNTUmVnQuYWRsZXIpLGp0KF9uLFZ0LmFkbGVyPj44JjI1NSksVnQuYWRsZXI9MCxfbi5zdGF0dXM9''@;'; put 'put ''MTEzKSk6X24uc3RhdHVzPTExMyksMCE9PV9uLnBlbmRpbmcpe2lmKFllKFZ0KSwwPT09VnQuYXZhaWxfb3V0KXJldHVybiBfbi5sYXN0X2ZsdXNoPS0xLDB9ZWxzZSBpZigwPT09VnQuYXZhaWxfaW4mJk50KHNuKTw9TnQoVW4pJiY0IT09c24pcmV0dXJuIGN0KFZ0LC01KTtpZig2NjY9PT1f''@;'; put 'put ''bi5zdGF0dXMmJjAhPT1WdC5hdmFpbF9pbilyZXR1cm4gY3QoVnQsLTUpO2lmKDAhPT1WdC5hdmFpbF9pbnx8MCE9PV9uLmxvb2thaGVhZHx8MCE9PXNuJiY2NjYhPT1fbi5zdGF0dXMpe3ZhciBTcj0yPT09X24uc3RyYXRlZ3k/ZnVuY3Rpb24gdXIoVnQsc24pe2Zvcih2YXIgVW47Oyl7aWYo''@;'; put 'put ''MD09PVZ0Lmxvb2thaGVhZCYmKGJuKFZ0KSwwPT09VnQubG9va2FoZWFkKSl7aWYoMD09PXNuKXJldHVybiAxO2JyZWFrfWlmKFZ0Lm1hdGNoX2xlbmd0aD0wLFVuPVkuX3RyX3RhbGx5KFZ0LDAsVnQud2luZG93W1Z0LnN0cnN0YXJ0XSksVnQubG9va2FoZWFkLS0sVnQuc3Ryc3RhcnQrKyxV''@;'; put 'put ''biYmKEF0KFZ0LCExKSwwPT09VnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBWdC5pbnNlcnQ9MCw0PT09c24/KEF0KFZ0LCEwKSwwPT09VnQuc3RybS5hdmFpbF9vdXQ/Mzo0KTpWdC5sYXN0X2xpdCYmKEF0KFZ0LCExKSwwPT09VnQuc3RybS5hdmFpbF9vdXQpPzE6Mn0oX24s''@;'; put 'put ''c24pOjM9PT1fbi5zdHJhdGVneT9mdW5jdGlvbiBlcihWdCxzbil7Zm9yKHZhciBVbixfbix0bixHbixUcj1WdC53aW5kb3c7Oyl7aWYoVnQubG9va2FoZWFkPD0yNTgpe2lmKGJuKFZ0KSxWdC5sb29rYWhlYWQ8PTI1OCYmMD09PXNuKXJldHVybiAxO2lmKDA9PT1WdC5sb29rYWhlYWQpYnJl''@;'; put 'put ''YWt9aWYoVnQubWF0Y2hfbGVuZ3RoPTAsVnQubG9va2FoZWFkPj0zJiZWdC5zdHJzdGFydD4wJiYoX249VHJbdG49VnQuc3Ryc3RhcnQtMV0pPT09VHJbKyt0bl0mJl9uPT09VHJbKyt0bl0mJl9uPT09VHJbKyt0bl0pe0duPVZ0LnN0cnN0YXJ0KzI1ODtkb3t9d2hpbGUoX249PT1UclsrK3Ru''@;'; put 'put ''XSYmX249PT1UclsrK3RuXSYmX249PT1UclsrK3RuXSYmX249PT1UclsrK3RuXSYmX249PT1UclsrK3RuXSYmX249PT1UclsrK3RuXSYmX249PT1UclsrK3RuXSYmX249PT1UclsrK3RuXSYmdG48R24pO1Z0Lm1hdGNoX2xlbmd0aD0yNTgtKEduLXRuKSxWdC5tYXRjaF9sZW5ndGg+VnQubG9v''@;'; put 'put ''a2FoZWFkJiYoVnQubWF0Y2hfbGVuZ3RoPVZ0Lmxvb2thaGVhZCl9aWYoVnQubWF0Y2hfbGVuZ3RoPj0zPyhVbj1ZLl90cl90YWxseShWdCwxLFZ0Lm1hdGNoX2xlbmd0aC0zKSxWdC5sb29rYWhlYWQtPVZ0Lm1hdGNoX2xlbmd0aCxWdC5zdHJzdGFydCs9VnQubWF0Y2hfbGVuZ3RoLFZ0Lm1h''@;'; put 'put ''dGNoX2xlbmd0aD0wKTooVW49WS5fdHJfdGFsbHkoVnQsMCxWdC53aW5kb3dbVnQuc3Ryc3RhcnRdKSxWdC5sb29rYWhlYWQtLSxWdC5zdHJzdGFydCsrKSxVbiYmKEF0KFZ0LCExKSwwPT09VnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBWdC5pbnNlcnQ9MCw0PT09c24/KEF0''@;'; put 'put ''KFZ0LCEwKSwwPT09VnQuc3RybS5hdmFpbF9vdXQ/Mzo0KTpWdC5sYXN0X2xpdCYmKEF0KFZ0LCExKSwwPT09VnQuc3RybS5hdmFpbF9vdXQpPzE6Mn0oX24sc24pOkZyW19uLmxldmVsXS5mdW5jKF9uLHNuKTtpZigoMz09PVNyfHw0PT09U3IpJiYoX24uc3RhdHVzPTY2NiksMT09PVNyfHwz''@;'; put 'put ''PT09U3IpcmV0dXJuIDA9PT1WdC5hdmFpbF9vdXQmJihfbi5sYXN0X2ZsdXNoPS0xKSwwO2lmKDI9PT1TciYmKDE9PT1zbj9ZLl90cl9hbGlnbihfbik6NSE9PXNuJiYoWS5fdHJfc3RvcmVkX2Jsb2NrKF9uLDAsMCwhMSksMz09PXNuJiYoemUoX24uaGVhZCksMD09PV9uLmxvb2thaGVhZCYm''@;'; put 'put ''KF9uLnN0cnN0YXJ0PTAsX24uYmxvY2tfc3RhcnQ9MCxfbi5pbnNlcnQ9MCkpKSxZZShWdCksMD09PVZ0LmF2YWlsX291dCkpcmV0dXJuIF9uLmxhc3RfZmx1c2g9LTEsMH1yZXR1cm4gNCE9PXNuPzA6X24ud3JhcDw9MD8xOigyPT09X24ud3JhcD8oanQoX24sMjU1JlZ0LmFkbGVyKSxqdChf''@;'; put 'put ''bixWdC5hZGxlcj4+OCYyNTUpLGp0KF9uLFZ0LmFkbGVyPj4xNiYyNTUpLGp0KF9uLFZ0LmFkbGVyPj4yNCYyNTUpLGp0KF9uLDI1NSZWdC50b3RhbF9pbiksanQoX24sVnQudG90YWxfaW4+PjgmMjU1KSxqdChfbixWdC50b3RhbF9pbj4+MTYmMjU1KSxqdChfbixWdC50b3RhbF9pbj4+MjQm''@;'; put 'put ''MjU1KSk6KEp0KF9uLFZ0LmFkbGVyPj4+MTYpLEp0KF9uLDY1NTM1JlZ0LmFkbGVyKSksWWUoVnQpLF9uLndyYXA+MCYmKF9uLndyYXA9LV9uLndyYXApLDAhPT1fbi5wZW5kaW5nPzA6MSl9LGllLmRlZmxhdGVFbmQ9ZnVuY3Rpb24gS24oVnQpe3ZhciBzbjtyZXR1cm4gVnQmJlZ0LnN0YXRl''@;'; put 'put ''PzQyIT09KHNuPVZ0LnN0YXRlLnN0YXR1cykmJjY5IT09c24mJjczIT09c24mJjkxIT09c24mJjEwMyE9PXNuJiYxMTMhPT1zbiYmNjY2IT09c24/Y3QoVnQsLTIpOihWdC5zdGF0ZT1udWxsLDExMz09PXNuP2N0KFZ0LC0zKTowKTotMn0saWUuZGVmbGF0ZUluZm89InBha28gZGVmbGF0ZSAo''@;'; put 'put ''ZnJvbSBOb2RlY2EgcHJvamVjdCkifSx7Ii4uL3V0aWxzL2NvbW1vbiI6MjcsIi4vYWRsZXIzMiI6MjksIi4vY3JjMzIiOjMxLCIuL21lc3NhZ2VzIjozNywiLi90cmVlcyI6Mzh9XSwzMzpbZnVuY3Rpb24oUSxaLGllKXsidXNlIHN0cmljdCI7Wi5leHBvcnRzPWZ1bmN0aW9uIGxlKCl7dGhp''@;'; put 'put ''cy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPSIiLHRoaXMuY29tbWVudD0iIix0aGlzLmhjcmM9MCx0aGlzLmRvbmU9ITF9fSx7fV0sMzQ6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBz''@;'; put 'put ''dHJpY3QiO1ouZXhwb3J0cz1mdW5jdGlvbihOLGVlKXt2YXIgcSxKLHNlLGFlLGZlLGRlLHZlLEFlLGtlLFNlLEllLFRlLEVlLGhlLE8seixuZSx0ZSx4LFAsVixULFMsRix5ZTtGPU4uaW5wdXQsc2U9KEo9Ti5uZXh0X2luKSsoTi5hdmFpbF9pbi01KSx5ZT1OLm91dHB1dCxmZT0oYWU9Ti5u''@;'; put 'put ''ZXh0X291dCktKGVlLU4uYXZhaWxfb3V0KSxkZT1hZSsoTi5hdmFpbF9vdXQtMjU3KSx2ZT0ocT1OLnN0YXRlKS5kbWF4LEFlPXEud3NpemUsa2U9cS53aGF2ZSxTZT1xLnduZXh0LEllPXEud2luZG93LFRlPXEuaG9sZCxFZT1xLmJpdHMsaGU9cS5sZW5jb2RlLE89cS5kaXN0Y29kZSx6PSgx''@;'; put 'put ''PDxxLmxlbmJpdHMpLTEsbmU9KDE8PHEuZGlzdGJpdHMpLTE7ZTpkb3tFZTwxNSYmKFRlKz1GW0orK108PEVlLFRlKz1GW0orK108PChFZSs9OCksRWUrPTgpLHRlPWhlW1RlJnpdO3Q6Zm9yKDs7KXtpZihUZT4+Pj14PXRlPj4+MjQsRWUtPXgsMD09KHg9dGU+Pj4xNiYyNTUpKXllW2FlKytd''@;'; put 'put ''PTY1NTM1JnRlO2Vsc2V7aWYoISgxNiZ4KSl7aWYoMD09KDY0JngpKXt0ZT1oZVsoNjU1MzUmdGUpKyhUZSYoMTw8eCktMSldO2NvbnRpbnVlIHR9aWYoMzImeCl7cS5tb2RlPTEyO2JyZWFrIGV9Ti5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIscS5tb2RlPTMwO2JyZWFrIGV9''@;'; put 'put ''UD02NTUzNSZ0ZSwoeCY9MTUpJiYoRWU8eCYmKFRlKz1GW0orK108PEVlLEVlKz04KSxQKz1UZSYoMTw8eCktMSxUZT4+Pj14LEVlLT14KSxFZTwxNSYmKFRlKz1GW0orK108PEVlLFRlKz1GW0orK108PChFZSs9OCksRWUrPTgpLHRlPU9bVGUmbmVdO246Zm9yKDs7KXtpZihUZT4+Pj14PXRl''@;'; put 'put ''Pj4+MjQsRWUtPXgsISgxNiYoeD10ZT4+PjE2JjI1NSkpKXtpZigwPT0oNjQmeCkpe3RlPU9bKDY1NTM1JnRlKSsoVGUmKDE8PHgpLTEpXTtjb250aW51ZSBufU4ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLHEubW9kZT0zMDticmVhayBlfWlmKFY9NjU1MzUmdGUsRWU8KHgmPTE1KSYm''@;'; put 'put ''KFRlKz1GW0orK108PEVlLChFZSs9OCk8eCYmKFRlKz1GW0orK108PEVlLEVlKz04KSksKFYrPVRlJigxPDx4KS0xKT52ZSl7Ti5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixxLm1vZGU9MzA7YnJlYWsgZX1pZihUZT4+Pj14LEVlLT14LFY+KHg9YWUtZmUpKXtpZigoeD1W''@;'; put 'put ''LXgpPmtlJiZxLnNhbmUpe04ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIscS5tb2RlPTMwO2JyZWFrIGV9aWYoVD0wLFM9SWUsMD09PVNlKXtpZihUKz1BZS14LHg8UCl7UC09eDtkb3t5ZVthZSsrXT1JZVtUKytdfXdoaWxlKC0teCk7VD1hZS1WLFM9eWV9fWVsc2UgaWYo''@;'; put 'put ''U2U8eCl7aWYoVCs9QWUrU2UteCwoeC09U2UpPFApe1AtPXg7ZG97eWVbYWUrK109SWVbVCsrXX13aGlsZSgtLXgpO2lmKFQ9MCxTZTxQKXtQLT14PVNlO2Rve3llW2FlKytdPUllW1QrK119d2hpbGUoLS14KTtUPWFlLVYsUz15ZX19fWVsc2UgaWYoVCs9U2UteCx4PFApe1AtPXg7ZG97eWVb''@;'; put 'put ''YWUrK109SWVbVCsrXX13aGlsZSgtLXgpO1Q9YWUtVixTPXllfWZvcig7UD4yOyl5ZVthZSsrXT1TW1QrK10seWVbYWUrK109U1tUKytdLHllW2FlKytdPVNbVCsrXSxQLT0zO1AmJih5ZVthZSsrXT1TW1QrK10sUD4xJiYoeWVbYWUrK109U1tUKytdKSl9ZWxzZXtUPWFlLVY7ZG97eWVbYWUr''@;'; put 'put ''K109eWVbVCsrXSx5ZVthZSsrXT15ZVtUKytdLHllW2FlKytdPXllW1QrK10sUC09M313aGlsZShQPjIpO1AmJih5ZVthZSsrXT15ZVtUKytdLFA+MSYmKHllW2FlKytdPXllW1QrK10pKX1icmVha319YnJlYWt9fXdoaWxlKEo8c2UmJmFlPGRlKTtUZSY9KDE8PChFZS09KFA9RWU+PjMpPDwz''@;'; put 'put ''KSktMSxOLm5leHRfaW49Si09UCxOLm5leHRfb3V0PWFlLE4uYXZhaWxfaW49SjxzZT9zZS1KKzU6NS0oSi1zZSksTi5hdmFpbF9vdXQ9YWU8ZGU/ZGUtYWUrMjU3OjI1Ny0oYWUtZGUpLHEuaG9sZD1UZSxxLmJpdHM9RWV9fSx7fV0sMzU6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciBsZT1RKCIuLi91dGlscy9jb21tb24iKSxZPVEoIi4vYWRsZXIzMiIpLFc9USgiLi9jcmMzMiIpLE49USgiLi9pbmZmYXN0IiksZWU9USgiLi9pbmZ0cmVlcyIpO2Z1bmN0aW9uIEp0KHduKXtyZXR1cm4od24+Pj4yNCYyNTUpKyh3bj4+PjgmNjUyODApKygoNjUyODAmd24pPDw4KSso''@;'; put 'put ''KDI1NSZ3bik8PDI0KX1mdW5jdGlvbiBtbigpe3RoaXMubW9kZT0wLHRoaXMubGFzdD0hMSx0aGlzLndyYXA9MCx0aGlzLmhhdmVkaWN0PSExLHRoaXMuZmxhZ3M9MCx0aGlzLmRtYXg9MCx0aGlzLmNoZWNrPTAsdGhpcy50b3RhbD0wLHRoaXMuaGVhZD1udWxsLHRoaXMud2JpdHM9MCx0aGlz''@;'; put 'put ''LndzaXplPTAsdGhpcy53aGF2ZT0wLHRoaXMud25leHQ9MCx0aGlzLndpbmRvdz1udWxsLHRoaXMuaG9sZD0wLHRoaXMuYml0cz0wLHRoaXMubGVuZ3RoPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmV4dHJhPTAsdGhpcy5sZW5jb2RlPW51bGwsdGhpcy5kaXN0Y29kZT1udWxsLHRoaXMubGVuYml0''@;'; put 'put ''cz0wLHRoaXMuZGlzdGJpdHM9MCx0aGlzLm5jb2RlPTAsdGhpcy5ubGVuPTAsdGhpcy5uZGlzdD0wLHRoaXMuaGF2ZT0wLHRoaXMubmV4dD1udWxsLHRoaXMubGVucz1uZXcgbGUuQnVmMTYoMzIwKSx0aGlzLndvcms9bmV3IGxlLkJ1ZjE2KDI4OCksdGhpcy5sZW5keW49bnVsbCx0aGlzLmRp''@;'; put 'put ''c3RkeW49bnVsbCx0aGlzLnNhbmU9MCx0aGlzLmJhY2s9MCx0aGlzLndhcz0wfWZ1bmN0aW9uIHBuKHduKXt2YXIgJG47cmV0dXJuIHduJiZ3bi5zdGF0ZT8od24udG90YWxfaW49d24udG90YWxfb3V0PSgkbj13bi5zdGF0ZSkudG90YWw9MCx3bi5tc2c9IiIsJG4ud3JhcCYmKHduLmFkbGVy''@;'; put 'put ''PTEmJG4ud3JhcCksJG4ubW9kZT0xLCRuLmxhc3Q9MCwkbi5oYXZlZGljdD0wLCRuLmRtYXg9MzI3NjgsJG4uaGVhZD1udWxsLCRuLmhvbGQ9MCwkbi5iaXRzPTAsJG4ubGVuY29kZT0kbi5sZW5keW49bmV3IGxlLkJ1ZjMyKDg1MiksJG4uZGlzdGNvZGU9JG4uZGlzdGR5bj1uZXcgbGUuQnVm''@;'; put 'put ''MzIoNTkyKSwkbi5zYW5lPTEsJG4uYmFjaz0tMSwwKTotMn1mdW5jdGlvbiBibih3bil7dmFyICRuO3JldHVybiB3biYmd24uc3RhdGU/KCgkbj13bi5zdGF0ZSkud3NpemU9MCwkbi53aGF2ZT0wLCRuLnduZXh0PTAscG4od24pKTotMn1mdW5jdGlvbiBsbih3biwkbil7dmFyIFl0LGduO3Jl''@;'; put 'put ''dHVybiF3bnx8IXduLnN0YXRlfHwoZ249d24uc3RhdGUsJG48MD8oWXQ9MCwkbj0tJG4pOihZdD0xKygkbj4+NCksJG48NDgmJigkbiY9MTUpKSwkbiYmKCRuPDh8fCRuPjE1KSk/LTI6KG51bGwhPT1nbi53aW5kb3cmJmduLndiaXRzIT09JG4mJihnbi53aW5kb3c9bnVsbCksZ24ud3JhcD1Z''@;'; put 'put ''dCxnbi53Yml0cz0kbixibih3bikpfWZ1bmN0aW9uIE5uKHduLCRuKXt2YXIgWXQsZ247cmV0dXJuIHduPyhnbj1uZXcgbW4sd24uc3RhdGU9Z24sZ24ud2luZG93PW51bGwsMCE9PShZdD1sbih3biwkbikpJiYod24uc3RhdGU9bnVsbCksWXQpOi0yfXZhciB1cixYbixlcj0hMDtmdW5jdGlv''@;'; put 'put ''biBGcih3bil7aWYoZXIpe3ZhciAkbjtmb3IodXI9bmV3IGxlLkJ1ZjMyKDUxMiksWG49bmV3IGxlLkJ1ZjMyKDMyKSwkbj0wOyRuPDE0NDspd24ubGVuc1skbisrXT04O2Zvcig7JG48MjU2Oyl3bi5sZW5zWyRuKytdPTk7Zm9yKDskbjwyODA7KXduLmxlbnNbJG4rK109Nztmb3IoOyRuPDI4''@;'; put 'put ''ODspd24ubGVuc1skbisrXT04O2ZvcihlZSgxLHduLmxlbnMsMCwyODgsdXIsMCx3bi53b3JrLHtiaXRzOjl9KSwkbj0wOyRuPDMyOyl3bi5sZW5zWyRuKytdPTU7ZWUoMix3bi5sZW5zLDAsMzIsWG4sMCx3bi53b3JrLHtiaXRzOjV9KSxlcj0hMX13bi5sZW5jb2RlPXVyLHduLmxlbmJpdHM9''@;'; put 'put ''OSx3bi5kaXN0Y29kZT1Ybix3bi5kaXN0Yml0cz01fWllLmluZmxhdGVSZXNldD1ibixpZS5pbmZsYXRlUmVzZXQyPWxuLGllLmluZmxhdGVSZXNldEtlZXA9cG4saWUuaW5mbGF0ZUluaXQ9ZnVuY3Rpb24ga24od24pe3JldHVybiBObih3biwxNSl9LGllLmluZmxhdGVJbml0Mj1ObixpZS5p''@;'; put 'put ''bmZsYXRlPWZ1bmN0aW9uIGVuKHduLCRuKXt2YXIgWXQsZ24sS24sVnQsc24sVW4sX24sdG4sR24sVHIsUG4sU3Isdm4sdW4sU24sR3QsRW4sam4scXQsTG4sSm4sb3IsSnIsVnIsY249MCxncj1uZXcgbGUuQnVmOCg0KSx0aT1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEz''@;'; put 'put ''LDIsMTQsMSwxNV07aWYoIXdufHwhd24uc3RhdGV8fCF3bi5vdXRwdXR8fCF3bi5pbnB1dCYmMCE9PXduLmF2YWlsX2luKXJldHVybi0yOzEyPT09KFl0PXduLnN0YXRlKS5tb2RlJiYoWXQubW9kZT0xMyksc249d24ubmV4dF9vdXQsS249d24ub3V0cHV0LFZ0PXduLm5leHRfaW4sZ249d24u''@;'; put 'put ''aW5wdXQsdG49WXQuaG9sZCxHbj1ZdC5iaXRzLFRyPVVuPXduLmF2YWlsX2luLFBuPV9uPXduLmF2YWlsX291dCxvcj0wO2U6Zm9yKDs7KXN3aXRjaChZdC5tb2RlKXtjYXNlIDE6aWYoMD09PVl0LndyYXApe1l0Lm1vZGU9MTM7YnJlYWt9Zm9yKDtHbjwxNjspe2lmKDA9PT1VbilicmVhayBl''@;'; put 'put ''O1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH1pZigyJll0LndyYXAmJjM1NjE1PT09dG4pe1l0LmNoZWNrPTAsZ3JbMF09MjU1JnRuLGdyWzFdPXRuPj4+OCYyNTUsWXQuY2hlY2s9VyhZdC5jaGVjayxnciwyLDApLHRuPTAsR249MCxZdC5tb2RlPTI7YnJlYWt9aWYoWXQuZmxhZ3M9MCxZ''@;'; put 'put ''dC5oZWFkJiYoWXQuaGVhZC5kb25lPSExKSwhKDEmWXQud3JhcCl8fCgoKDI1NSZ0bik8PDgpKyh0bj4+OCkpJTMxKXt3bi5tc2c9ImluY29ycmVjdCBoZWFkZXIgY2hlY2siLFl0Lm1vZGU9MzA7YnJlYWt9aWYoOCE9KDE1JnRuKSl7d24ubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhv''@;'; put 'put ''ZCIsWXQubW9kZT0zMDticmVha31pZihHbi09NCxKbj04KygxNSYodG4+Pj49NCkpLDA9PT1ZdC53Yml0cylZdC53Yml0cz1KbjtlbHNlIGlmKEpuPll0LndiaXRzKXt3bi5tc2c9ImludmFsaWQgd2luZG93IHNpemUiLFl0Lm1vZGU9MzA7YnJlYWt9WXQuZG1heD0xPDxKbix3bi5hZGxlcj1Z''@;'; put 'put ''dC5jaGVjaz0xLFl0Lm1vZGU9NTEyJnRuPzEwOjEyLHRuPTAsR249MDticmVhaztjYXNlIDI6Zm9yKDtHbjwxNjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH1pZihZdC5mbGFncz10biw4IT0oMjU1Jll0LmZsYWdzKSl7d24ubXNnPSJ1bmtub3duIGNv''@;'; put 'put ''bXByZXNzaW9uIG1ldGhvZCIsWXQubW9kZT0zMDticmVha31pZig1NzM0NCZZdC5mbGFncyl7d24ubXNnPSJ1bmtub3duIGhlYWRlciBmbGFncyBzZXQiLFl0Lm1vZGU9MzA7YnJlYWt9WXQuaGVhZCYmKFl0LmhlYWQudGV4dD10bj4+OCYxKSw1MTImWXQuZmxhZ3MmJihnclswXT0yNTUmdG4s''@;'; put 'put ''Z3JbMV09dG4+Pj44JjI1NSxZdC5jaGVjaz1XKFl0LmNoZWNrLGdyLDIsMCkpLHRuPTAsR249MCxZdC5tb2RlPTM7Y2FzZSAzOmZvcig7R248MzI7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1nbltWdCsrXTw8R24sR24rPTh9WXQuaGVhZCYmKFl0LmhlYWQudGltZT10biksNTEyJll0''@;'; put 'put ''LmZsYWdzJiYoZ3JbMF09MjU1JnRuLGdyWzFdPXRuPj4+OCYyNTUsZ3JbMl09dG4+Pj4xNiYyNTUsZ3JbM109dG4+Pj4yNCYyNTUsWXQuY2hlY2s9VyhZdC5jaGVjayxnciw0LDApKSx0bj0wLEduPTAsWXQubW9kZT00O2Nhc2UgNDpmb3IoO0duPDE2Oyl7aWYoMD09PVVuKWJyZWFrIGU7VW4t''@;'; put 'put ''LSx0bis9Z25bVnQrK108PEduLEduKz04fVl0LmhlYWQmJihZdC5oZWFkLnhmbGFncz0yNTUmdG4sWXQuaGVhZC5vcz10bj4+OCksNTEyJll0LmZsYWdzJiYoZ3JbMF09MjU1JnRuLGdyWzFdPXRuPj4+OCYyNTUsWXQuY2hlY2s9VyhZdC5jaGVjayxnciwyLDApKSx0bj0wLEduPTAsWXQubW9k''@;'; put 'put ''ZT01O2Nhc2UgNTppZigxMDI0Jll0LmZsYWdzKXtmb3IoO0duPDE2Oyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fVl0Lmxlbmd0aD10bixZdC5oZWFkJiYoWXQuaGVhZC5leHRyYV9sZW49dG4pLDUxMiZZdC5mbGFncyYmKGdyWzBdPTI1NSZ0bixnclsx''@;'; put 'put ''XT10bj4+PjgmMjU1LFl0LmNoZWNrPVcoWXQuY2hlY2ssZ3IsMiwwKSksdG49MCxHbj0wfWVsc2UgWXQuaGVhZCYmKFl0LmhlYWQuZXh0cmE9bnVsbCk7WXQubW9kZT02O2Nhc2UgNjppZigxMDI0Jll0LmZsYWdzJiYoKFNyPVl0Lmxlbmd0aCk+VW4mJihTcj1VbiksU3ImJihZdC5oZWFkJiYo''@;'; put 'put ''Sm49WXQuaGVhZC5leHRyYV9sZW4tWXQubGVuZ3RoLFl0LmhlYWQuZXh0cmF8fChZdC5oZWFkLmV4dHJhPW5ldyBBcnJheShZdC5oZWFkLmV4dHJhX2xlbikpLGxlLmFycmF5U2V0KFl0LmhlYWQuZXh0cmEsZ24sVnQsU3IsSm4pKSw1MTImWXQuZmxhZ3MmJihZdC5jaGVjaz1XKFl0LmNoZWNr''@;'; put 'put ''LGduLFNyLFZ0KSksVW4tPVNyLFZ0Kz1TcixZdC5sZW5ndGgtPVNyKSxZdC5sZW5ndGgpKWJyZWFrIGU7WXQubGVuZ3RoPTAsWXQubW9kZT03O2Nhc2UgNzppZigyMDQ4Jll0LmZsYWdzKXtpZigwPT09VW4pYnJlYWsgZTtTcj0wO2Rve0puPWduW1Z0K1NyKytdLFl0LmhlYWQmJkpuJiZZdC5s''@;'; put 'put ''ZW5ndGg8NjU1MzYmJihZdC5oZWFkLm5hbWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoSm4pKX13aGlsZShKbiYmU3I8VW4pO2lmKDUxMiZZdC5mbGFncyYmKFl0LmNoZWNrPVcoWXQuY2hlY2ssZ24sU3IsVnQpKSxVbi09U3IsVnQrPVNyLEpuKWJyZWFrIGV9ZWxzZSBZdC5oZWFkJiYoWXQuaGVh''@;'; put 'put ''ZC5uYW1lPW51bGwpO1l0Lmxlbmd0aD0wLFl0Lm1vZGU9ODtjYXNlIDg6aWYoNDA5NiZZdC5mbGFncyl7aWYoMD09PVVuKWJyZWFrIGU7U3I9MDtkb3tKbj1nbltWdCtTcisrXSxZdC5oZWFkJiZKbiYmWXQubGVuZ3RoPDY1NTM2JiYoWXQuaGVhZC5jb21tZW50Kz1TdHJpbmcuZnJvbUNoYXJD''@;'; put 'put ''b2RlKEpuKSl9d2hpbGUoSm4mJlNyPFVuKTtpZig1MTImWXQuZmxhZ3MmJihZdC5jaGVjaz1XKFl0LmNoZWNrLGduLFNyLFZ0KSksVW4tPVNyLFZ0Kz1TcixKbilicmVhayBlfWVsc2UgWXQuaGVhZCYmKFl0LmhlYWQuY29tbWVudD1udWxsKTtZdC5tb2RlPTk7Y2FzZSA5OmlmKDUxMiZZdC5m''@;'; put 'put ''bGFncyl7Zm9yKDtHbjwxNjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH1pZih0biE9PSg2NTUzNSZZdC5jaGVjaykpe3duLm1zZz0iaGVhZGVyIGNyYyBtaXNtYXRjaCIsWXQubW9kZT0zMDticmVha310bj0wLEduPTB9WXQuaGVhZCYmKFl0LmhlYWQu''@;'; put 'put ''aGNyYz1ZdC5mbGFncz4+OSYxLFl0LmhlYWQuZG9uZT0hMCksd24uYWRsZXI9WXQuY2hlY2s9MCxZdC5tb2RlPTEyO2JyZWFrO2Nhc2UgMTA6Zm9yKDtHbjwzMjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH13bi5hZGxlcj1ZdC5jaGVjaz1KdCh0biks''@;'; put 'put ''dG49MCxHbj0wLFl0Lm1vZGU9MTE7Y2FzZSAxMTppZigwPT09WXQuaGF2ZWRpY3QpcmV0dXJuIHduLm5leHRfb3V0PXNuLHduLmF2YWlsX291dD1fbix3bi5uZXh0X2luPVZ0LHduLmF2YWlsX2luPVVuLFl0LmhvbGQ9dG4sWXQuYml0cz1HbiwyO3duLmFkbGVyPVl0LmNoZWNrPTEsWXQubW9k''@;'; put 'put ''ZT0xMjtjYXNlIDEyOmlmKDU9PT0kbnx8Nj09PSRuKWJyZWFrIGU7Y2FzZSAxMzppZihZdC5sYXN0KXt0bj4+Pj03JkduLEduLT03JkduLFl0Lm1vZGU9Mjc7YnJlYWt9Zm9yKDtHbjwzOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fXN3aXRjaChZdC5s''@;'; put 'put ''YXN0PTEmdG4sR24tPTEsMyYodG4+Pj49MSkpe2Nhc2UgMDpZdC5tb2RlPTE0O2JyZWFrO2Nhc2UgMTppZihGcihZdCksWXQubW9kZT0yMCw2PT09JG4pe3RuPj4+PTIsR24tPTI7YnJlYWsgZX1icmVhaztjYXNlIDI6WXQubW9kZT0xNzticmVhaztjYXNlIDM6d24ubXNnPSJpbnZhbGlkIGJs''@;'; put 'put ''b2NrIHR5cGUiLFl0Lm1vZGU9MzB9dG4+Pj49MixHbi09MjticmVhaztjYXNlIDE0OmZvcih0bj4+Pj03JkduLEduLT03JkduO0duPDMyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fWlmKCg2NTUzNSZ0bikhPSh0bj4+PjE2XjY1NTM1KSl7d24ubXNn''@;'; put 'put ''PSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIixZdC5tb2RlPTMwO2JyZWFrfWlmKFl0Lmxlbmd0aD02NTUzNSZ0bix0bj0wLEduPTAsWXQubW9kZT0xNSw2PT09JG4pYnJlYWsgZTtjYXNlIDE1Oll0Lm1vZGU9MTY7Y2FzZSAxNjppZihTcj1ZdC5sZW5ndGgpe2lmKFNyPlVuJiYoU3I9''@;'; put 'put ''VW4pLFNyPl9uJiYoU3I9X24pLDA9PT1TcilicmVhayBlO2xlLmFycmF5U2V0KEtuLGduLFZ0LFNyLHNuKSxVbi09U3IsVnQrPVNyLF9uLT1Tcixzbis9U3IsWXQubGVuZ3RoLT1TcjticmVha31ZdC5tb2RlPTEyO2JyZWFrO2Nhc2UgMTc6Zm9yKDtHbjwxNDspe2lmKDA9PT1VbilicmVhayBl''@;'; put 'put ''O1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH1pZihZdC5ubGVuPTI1NysoMzEmdG4pLEduLT01LFl0Lm5kaXN0PTErKDMxJih0bj4+Pj01KSksR24tPTUsWXQubmNvZGU9NCsoMTUmKHRuPj4+PTUpKSx0bj4+Pj00LEduLT00LFl0Lm5sZW4+Mjg2fHxZdC5uZGlzdD4zMCl7d24ubXNnPSJ0''@;'; put 'put ''b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIsWXQubW9kZT0zMDticmVha31ZdC5oYXZlPTAsWXQubW9kZT0xODtjYXNlIDE4OmZvcig7WXQuaGF2ZTxZdC5uY29kZTspe2Zvcig7R248Mzspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH1Z''@;'; put 'put ''dC5sZW5zW3RpW1l0LmhhdmUrK11dPTcmdG4sdG4+Pj49MyxHbi09M31mb3IoO1l0LmhhdmU8MTk7KVl0LmxlbnNbdGlbWXQuaGF2ZSsrXV09MDtpZihZdC5sZW5jb2RlPVl0LmxlbmR5bixZdC5sZW5iaXRzPTcsb3I9ZWUoMCxZdC5sZW5zLDAsMTksWXQubGVuY29kZSwwLFl0LndvcmssSnI9''@;'; put 'put ''e2JpdHM6WXQubGVuYml0c30pLFl0LmxlbmJpdHM9SnIuYml0cyxvcil7d24ubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLFl0Lm1vZGU9MzA7YnJlYWt9WXQuaGF2ZT0wLFl0Lm1vZGU9MTk7Y2FzZSAxOTpmb3IoO1l0LmhhdmU8WXQubmxlbitZdC5uZGlzdDspe2Zvcig7R3Q9KGNu''@;'; put 'put ''PVl0LmxlbmNvZGVbdG4mKDE8PFl0LmxlbmJpdHMpLTFdKT4+PjE2JjI1NSxFbj02NTUzNSZjbiwhKChTbj1jbj4+PjI0KTw9R24pOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fWlmKEVuPDE2KXRuPj4+PVNuLEduLT1TbixZdC5sZW5zW1l0LmhhdmUr''@;'; put 'put ''K109RW47ZWxzZXtpZigxNj09PUVuKXtmb3IoVnI9U24rMjtHbjxWcjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH1pZih0bj4+Pj1TbixHbi09U24sMD09PVl0LmhhdmUpe3duLm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsWXQubW9kZT0z''@;'; put 'put ''MDticmVha31Kbj1ZdC5sZW5zW1l0LmhhdmUtMV0sU3I9MysoMyZ0biksdG4+Pj49MixHbi09Mn1lbHNlIGlmKDE3PT09RW4pe2ZvcihWcj1TbiszO0duPFZyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fUduLT1TbixKbj0wLFNyPTMrKDcmKHRuPj4+''@;'; put 'put ''PVNuKSksdG4+Pj49MyxHbi09M31lbHNle2ZvcihWcj1Tbis3O0duPFZyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fUduLT1TbixKbj0wLFNyPTExKygxMjcmKHRuPj4+PVNuKSksdG4+Pj49NyxHbi09N31pZihZdC5oYXZlK1NyPll0Lm5sZW4rWXQu''@;'; put 'put ''bmRpc3Qpe3duLm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsWXQubW9kZT0zMDticmVha31mb3IoO1NyLS07KVl0LmxlbnNbWXQuaGF2ZSsrXT1Kbn19aWYoMzA9PT1ZdC5tb2RlKWJyZWFrO2lmKDA9PT1ZdC5sZW5zWzI1Nl0pe3duLm1zZz0iaW52YWxpZCBjb2RlIC0tIG1pc3Np''@;'; put 'put ''bmcgZW5kLW9mLWJsb2NrIixZdC5tb2RlPTMwO2JyZWFrfWlmKFl0LmxlbmJpdHM9OSxvcj1lZSgxLFl0LmxlbnMsMCxZdC5ubGVuLFl0LmxlbmNvZGUsMCxZdC53b3JrLEpyPXtiaXRzOll0LmxlbmJpdHN9KSxZdC5sZW5iaXRzPUpyLmJpdHMsb3Ipe3duLm1zZz0iaW52YWxpZCBsaXRlcmFs''@;'; put 'put ''L2xlbmd0aHMgc2V0IixZdC5tb2RlPTMwO2JyZWFrfWlmKFl0LmRpc3RiaXRzPTYsWXQuZGlzdGNvZGU9WXQuZGlzdGR5bixvcj1lZSgyLFl0LmxlbnMsWXQubmxlbixZdC5uZGlzdCxZdC5kaXN0Y29kZSwwLFl0LndvcmssSnI9e2JpdHM6WXQuZGlzdGJpdHN9KSxZdC5kaXN0Yml0cz1Kci5i''@;'; put 'put ''aXRzLG9yKXt3bi5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsWXQubW9kZT0zMDticmVha31pZihZdC5tb2RlPTIwLDY9PT0kbilicmVhayBlO2Nhc2UgMjA6WXQubW9kZT0yMTtjYXNlIDIxOmlmKFVuPj02JiZfbj49MjU4KXt3bi5uZXh0X291dD1zbix3bi5hdmFpbF9vdXQ9X24sd24u''@;'; put 'put ''bmV4dF9pbj1WdCx3bi5hdmFpbF9pbj1VbixZdC5ob2xkPXRuLFl0LmJpdHM9R24sTih3bixQbiksc249d24ubmV4dF9vdXQsS249d24ub3V0cHV0LF9uPXduLmF2YWlsX291dCxWdD13bi5uZXh0X2luLGduPXduLmlucHV0LFVuPXduLmF2YWlsX2luLHRuPVl0LmhvbGQsR249WXQuYml0cywx''@;'; put 'put ''Mj09PVl0Lm1vZGUmJihZdC5iYWNrPS0xKTticmVha31mb3IoWXQuYmFjaz0wO0d0PShjbj1ZdC5sZW5jb2RlW3RuJigxPDxZdC5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUsRW49NjU1MzUmY24sISgoU249Y24+Pj4yNCk8PUduKTspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0Kytd''@;'; put 'put ''PDxHbixHbis9OH1pZihHdCYmMD09KDI0MCZHdCkpe2Zvcihqbj1TbixxdD1HdCxMbj1FbjtHdD0oY249WXQubGVuY29kZVtMbisoKHRuJigxPDxqbitxdCktMSk+PmpuKV0pPj4+MTYmMjU1LEVuPTY1NTM1JmNuLCEoam4rKFNuPWNuPj4+MjQpPD1Hbik7KXtpZigwPT09VW4pYnJlYWsgZTtV''@;'; put 'put ''bi0tLHRuKz1nbltWdCsrXTw8R24sR24rPTh9dG4+Pj49am4sR24tPWpuLFl0LmJhY2srPWpufWlmKHRuPj4+PVNuLEduLT1TbixZdC5iYWNrKz1TbixZdC5sZW5ndGg9RW4sMD09PUd0KXtZdC5tb2RlPTI2O2JyZWFrfWlmKDMyJkd0KXtZdC5iYWNrPS0xLFl0Lm1vZGU9MTI7YnJlYWt9aWYo''@;'; put 'put ''NjQmR3Qpe3duLm1zZz0iaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIixZdC5tb2RlPTMwO2JyZWFrfVl0LmV4dHJhPTE1Jkd0LFl0Lm1vZGU9MjI7Y2FzZSAyMjppZihZdC5leHRyYSl7Zm9yKFZyPVl0LmV4dHJhO0duPFZyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQr''@;'; put 'put ''K108PEduLEduKz04fVl0Lmxlbmd0aCs9dG4mKDE8PFl0LmV4dHJhKS0xLHRuPj4+PVl0LmV4dHJhLEduLT1ZdC5leHRyYSxZdC5iYWNrKz1ZdC5leHRyYX1ZdC53YXM9WXQubGVuZ3RoLFl0Lm1vZGU9MjM7Y2FzZSAyMzpmb3IoO0d0PShjbj1ZdC5kaXN0Y29kZVt0biYoMTw8WXQuZGlzdGJp''@;'; put 'put ''dHMpLTFdKT4+PjE2JjI1NSxFbj02NTUzNSZjbiwhKChTbj1jbj4+PjI0KTw9R24pOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9Z25bVnQrK108PEduLEduKz04fWlmKDA9PSgyNDAmR3QpKXtmb3Ioam49U24scXQ9R3QsTG49RW47R3Q9KGNuPVl0LmRpc3Rjb2RlW0xuKygodG4mKDE8''@;'; put 'put ''PGpuK3F0KS0xKT4+am4pXSk+Pj4xNiYyNTUsRW49NjU1MzUmY24sIShqbisoU249Y24+Pj4yNCk8PUduKTspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPWduW1Z0KytdPDxHbixHbis9OH10bj4+Pj1qbixHbi09am4sWXQuYmFjays9am59aWYodG4+Pj49U24sR24tPVNuLFl0LmJhY2sr''@;'; put 'put ''PVNuLDY0Jkd0KXt3bi5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsWXQubW9kZT0zMDticmVha31ZdC5vZmZzZXQ9RW4sWXQuZXh0cmE9MTUmR3QsWXQubW9kZT0yNDtjYXNlIDI0OmlmKFl0LmV4dHJhKXtmb3IoVnI9WXQuZXh0cmE7R248VnI7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0t''@;'; put 'put ''LHRuKz1nbltWdCsrXTw8R24sR24rPTh9WXQub2Zmc2V0Kz10biYoMTw8WXQuZXh0cmEpLTEsdG4+Pj49WXQuZXh0cmEsR24tPVl0LmV4dHJhLFl0LmJhY2srPVl0LmV4dHJhfWlmKFl0Lm9mZnNldD5ZdC5kbWF4KXt3bi5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixZdC5t''@;'; put 'put ''b2RlPTMwO2JyZWFrfVl0Lm1vZGU9MjU7Y2FzZSAyNTppZigwPT09X24pYnJlYWsgZTtpZihZdC5vZmZzZXQ+KFNyPVBuLV9uKSl7aWYoKFNyPVl0Lm9mZnNldC1Tcik+WXQud2hhdmUmJll0LnNhbmUpe3duLm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLFl0Lm1vZGU9MzA7''@;'; put 'put ''YnJlYWt9dm49U3I+WXQud25leHQ/WXQud3NpemUtKFNyLT1ZdC53bmV4dCk6WXQud25leHQtU3IsU3I+WXQubGVuZ3RoJiYoU3I9WXQubGVuZ3RoKSx1bj1ZdC53aW5kb3d9ZWxzZSB1bj1Lbix2bj1zbi1ZdC5vZmZzZXQsU3I9WXQubGVuZ3RoO1NyPl9uJiYoU3I9X24pLF9uLT1TcixZdC5s''@;'; put 'put ''ZW5ndGgtPVNyO2Rve0tuW3NuKytdPXVuW3ZuKytdfXdoaWxlKC0tU3IpOzA9PT1ZdC5sZW5ndGgmJihZdC5tb2RlPTIxKTticmVhaztjYXNlIDI2OmlmKDA9PT1fbilicmVhayBlO0tuW3NuKytdPVl0Lmxlbmd0aCxfbi0tLFl0Lm1vZGU9MjE7YnJlYWs7Y2FzZSAyNzppZihZdC53cmFwKXtm''@;'; put 'put ''b3IoO0duPDMyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bnw9Z25bVnQrK108PEduLEduKz04fWlmKHduLnRvdGFsX291dCs9UG4tPV9uLFl0LnRvdGFsKz1QbixQbiYmKHduLmFkbGVyPVl0LmNoZWNrPVl0LmZsYWdzP1coWXQuY2hlY2ssS24sUG4sc24tUG4pOlkoWXQuY2hlY2ssS24s''@;'; put 'put ''UG4sc24tUG4pKSxQbj1fbiwoWXQuZmxhZ3M/dG46SnQodG4pKSE9PVl0LmNoZWNrKXt3bi5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIixZdC5tb2RlPTMwO2JyZWFrfXRuPTAsR249MH1ZdC5tb2RlPTI4O2Nhc2UgMjg6aWYoWXQud3JhcCYmWXQuZmxhZ3Mpe2Zvcig7R248MzI7KXtpZigw''@;'; put 'put ''PT09VW4pYnJlYWsgZTtVbi0tLHRuKz1nbltWdCsrXTw8R24sR24rPTh9aWYodG4hPT0oNDI5NDk2NzI5NSZZdC50b3RhbCkpe3duLm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIsWXQubW9kZT0zMDticmVha310bj0wLEduPTB9WXQubW9kZT0yOTtjYXNlIDI5Om9yPTE7YnJlYWsgZTtj''@;'; put 'put ''YXNlIDMwOm9yPS0zO2JyZWFrIGU7Y2FzZSAzMTpyZXR1cm4tNDtkZWZhdWx0OnJldHVybi0yfXJldHVybiB3bi5uZXh0X291dD1zbix3bi5hdmFpbF9vdXQ9X24sd24ubmV4dF9pbj1WdCx3bi5hdmFpbF9pbj1VbixZdC5ob2xkPXRuLFl0LmJpdHM9R24sKFl0LndzaXplfHxQbiE9PXduLmF2''@;'; put 'put ''YWlsX291dCYmWXQubW9kZTwzMCYmKFl0Lm1vZGU8Mjd8fDQhPT0kbikpJiZmdW5jdGlvbiB4cih3biwkbixZdCxnbil7dmFyIEtuLFZ0PXduLnN0YXRlO3JldHVybiBudWxsPT09VnQud2luZG93JiYoVnQud3NpemU9MTw8VnQud2JpdHMsVnQud25leHQ9MCxWdC53aGF2ZT0wLFZ0LndpbmRv''@;'; put 'put ''dz1uZXcgbGUuQnVmOChWdC53c2l6ZSkpLGduPj1WdC53c2l6ZT8obGUuYXJyYXlTZXQoVnQud2luZG93LCRuLFl0LVZ0LndzaXplLFZ0LndzaXplLDApLFZ0LnduZXh0PTAsVnQud2hhdmU9VnQud3NpemUpOigoS249VnQud3NpemUtVnQud25leHQpPmduJiYoS249Z24pLGxlLmFycmF5U2V0''@;'; put 'put ''KFZ0LndpbmRvdywkbixZdC1nbixLbixWdC53bmV4dCksKGduLT1Lbik/KGxlLmFycmF5U2V0KFZ0LndpbmRvdywkbixZdC1nbixnbiwwKSxWdC53bmV4dD1nbixWdC53aGF2ZT1WdC53c2l6ZSk6KFZ0LnduZXh0Kz1LbixWdC53bmV4dD09PVZ0LndzaXplJiYoVnQud25leHQ9MCksVnQud2hh''@;'; put 'put ''dmU8VnQud3NpemUmJihWdC53aGF2ZSs9S24pKSksMH0od24sd24ub3V0cHV0LHduLm5leHRfb3V0LFBuLXduLmF2YWlsX291dCk/KFl0Lm1vZGU9MzEsLTQpOihQbi09d24uYXZhaWxfb3V0LHduLnRvdGFsX2luKz1Uci09d24uYXZhaWxfaW4sd24udG90YWxfb3V0Kz1QbixZdC50b3RhbCs9''@;'; put 'put ''UG4sWXQud3JhcCYmUG4mJih3bi5hZGxlcj1ZdC5jaGVjaz1ZdC5mbGFncz9XKFl0LmNoZWNrLEtuLFBuLHduLm5leHRfb3V0LVBuKTpZKFl0LmNoZWNrLEtuLFBuLHduLm5leHRfb3V0LVBuKSksd24uZGF0YV90eXBlPVl0LmJpdHMrKFl0Lmxhc3Q/NjQ6MCkrKDEyPT09WXQubW9kZT8xMjg6''@;'; put 'put ''MCkrKDIwPT09WXQubW9kZXx8MTU9PT1ZdC5tb2RlPzI1NjowKSwoMD09PVRyJiYwPT09UG58fDQ9PT0kbikmJjA9PT1vciYmKG9yPS01KSxvcil9LGllLmluZmxhdGVFbmQ9ZnVuY3Rpb24gZHIod24pe2lmKCF3bnx8IXduLnN0YXRlKXJldHVybi0yO3ZhciAkbj13bi5zdGF0ZTtyZXR1cm4g''@;'; put 'put ''JG4ud2luZG93JiYoJG4ud2luZG93PW51bGwpLHduLnN0YXRlPW51bGwsMH0saWUuaW5mbGF0ZUdldEhlYWRlcj1mdW5jdGlvbiBucih3biwkbil7dmFyIFl0O3JldHVybiB3biYmd24uc3RhdGUmJjAhPSgyJihZdD13bi5zdGF0ZSkud3JhcCk/KFl0LmhlYWQ9JG4sJG4uZG9uZT0hMSwwKTot''@;'; put 'put ''Mn0saWUuaW5mbGF0ZUluZm89InBha28gaW5mbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCkifSx7Ii4uL3V0aWxzL2NvbW1vbiI6MjcsIi4vYWRsZXIzMiI6MjksIi4vY3JjMzIiOjMxLCIuL2luZmZhc3QiOjM0LCIuL2luZnRyZWVzIjozNn1dLDM2OltmdW5jdGlvbihRLFosaWUpeyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbGU9USgiLi4vdXRpbHMvY29tbW9uIiksc2U9WzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSxhZT1bMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcs''@;'; put 'put ''MTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdLGZlPVsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIy''@;'; put 'put ''ODksMTYzODUsMjQ1NzcsMCwwXSxkZT1bMTYsMTYsMTYsMTYsMTcsMTcsMTgsMTgsMTksMTksMjAsMjAsMjEsMjEsMjIsMjIsMjMsMjMsMjQsMjQsMjUsMjUsMjYsMjYsMjcsMjcsMjgsMjgsMjksMjksNjQsNjRdO1ouZXhwb3J0cz1mdW5jdGlvbihBZSxrZSxTZSxJZSxUZSxFZSxoZSxPKXt2''@;'; put 'put ''YXIgRGUsUGUsUWUsJGUsZ3QsbXQsX3QsbnQscWUsej1PLmJpdHMsbmU9MCx0ZT0wLHg9MCxQPTAsVj0wLFQ9MCxTPTAsRj0wLHllPTAsQ2U9MCx5dD1udWxsLHB0PTAsdnQ9bmV3IGxlLkJ1ZjE2KDE2KSxmdD1uZXcgbGUuQnVmMTYoMTYpLEZ0PW51bGwsb249MDtmb3IobmU9MDtuZTw9MTU7''@;'; put 'put ''bmUrKyl2dFtuZV09MDtmb3IodGU9MDt0ZTxJZTt0ZSsrKXZ0W2tlW1NlK3RlXV0rKztmb3IoVj16LFA9MTU7UD49MSYmMD09PXZ0W1BdO1AtLSk7aWYoVj5QJiYoVj1QKSwwPT09UClyZXR1cm4gVGVbRWUrK109MjA5NzE1MjAsVGVbRWUrK109MjA5NzE1MjAsTy5iaXRzPTEsMDtmb3IoeD0x''@;'; put 'put ''O3g8UCYmMD09PXZ0W3hdO3grKyk7Zm9yKFY8eCYmKFY9eCksRj0xLG5lPTE7bmU8PTE1O25lKyspaWYoRjw8PTEsKEYtPXZ0W25lXSk8MClyZXR1cm4tMTtpZihGPjAmJigwPT09QWV8fDEhPT1QKSlyZXR1cm4tMTtmb3IoZnRbMV09MCxuZT0xO25lPDE1O25lKyspZnRbbmUrMV09ZnRbbmVd''@;'; put 'put ''K3Z0W25lXTtmb3IodGU9MDt0ZTxJZTt0ZSsrKTAhPT1rZVtTZSt0ZV0mJihoZVtmdFtrZVtTZSt0ZV1dKytdPXRlKTtpZigwPT09QWU/KHl0PUZ0PWhlLG10PTE5KToxPT09QWU/KHl0PXNlLHB0LT0yNTcsRnQ9YWUsb24tPTI1NyxtdD0yNTYpOih5dD1mZSxGdD1kZSxtdD0tMSksQ2U9MCx0''@;'; put 'put ''ZT0wLG5lPXgsZ3Q9RWUsVD1WLFM9MCxRZT0tMSwkZT0oeWU9MTw8ViktMSwxPT09QWUmJnllPjg1Mnx8Mj09PUFlJiZ5ZT41OTIpcmV0dXJuIDE7Zm9yKDs7KXtfdD1uZS1TLGhlW3RlXTxtdD8obnQ9MCxxZT1oZVt0ZV0pOmhlW3RlXT5tdD8obnQ9RnRbb24raGVbdGVdXSxxZT15dFtwdCto''@;'; put 'put ''ZVt0ZV1dKToobnQ9OTYscWU9MCksRGU9MTw8bmUtUyx4PVBlPTE8PFQ7ZG97VGVbZ3QrKENlPj5TKSsoUGUtPURlKV09X3Q8PDI0fG50PDwxNnxxZXwwfXdoaWxlKDAhPT1QZSk7Zm9yKERlPTE8PG5lLTE7Q2UmRGU7KURlPj49MTtpZigwIT09RGU/KENlJj1EZS0xLENlKz1EZSk6Q2U9MCx0''@;'; put 'put ''ZSsrLDA9PS0tdnRbbmVdKXtpZihuZT09PVApYnJlYWs7bmU9a2VbU2UraGVbdGVdXX1pZihuZT5WJiYoQ2UmJGUpIT09UWUpe2ZvcigwPT09UyYmKFM9ViksZ3QrPXgsRj0xPDwoVD1uZS1TKTtUK1M8UCYmISgoRi09dnRbVCtTXSk8PTApOylUKyssRjw8PTE7aWYoeWUrPTE8PFQsMT09PUFl''@;'; put 'put ''JiZ5ZT44NTJ8fDI9PT1BZSYmeWU+NTkyKXJldHVybiAxO1RlW1FlPUNlJiRlXT1WPDwyNHxUPDwxNnxndC1FZXwwfX1yZXR1cm4gMCE9PUNlJiYoVGVbZ3QrQ2VdPW5lLVM8PDI0fDY0PDwxNnwwKSxPLmJpdHM9ViwwfX0seyIuLi91dGlscy9jb21tb24iOjI3fV0sMzc6W2Z1bmN0aW9uKFEs''@;'; put 'put ''WixpZSl7InVzZSBzdHJpY3QiO1ouZXhwb3J0cz17MjoibmVlZCBkaWN0aW9uYXJ5IiwxOiJzdHJlYW0gZW5kIiwwOiIiLCItMSI6ImZpbGUgZXJyb3IiLCItMiI6InN0cmVhbSBlcnJvciIsIi0zIjoiZGF0YSBlcnJvciIsIi00IjoiaW5zdWZmaWNpZW50IG1lbW9yeSIsIi01IjoiYnVmZmVy''@;'; put 'put ''IGVycm9yIiwiLTYiOiJpbmNvbXBhdGlibGUgdmVyc2lvbiJ9fSx7fV0sMzg6W2Z1bmN0aW9uKFEsWixpZSl7InVzZSBzdHJpY3QiO3ZhciBsZT1RKCIuLi91dGlscy9jb21tb24iKTtmdW5jdGlvbiBxKGVuKXtmb3IodmFyIGRyPWVuLmxlbmd0aDstLWRyPj0wOyllbltkcl09MH12YXIgUD1b''@;'; put 'put ''MCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwXSxWPVswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSxUPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww''@;'; put 'put ''LDIsMyw3XSxTPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSx5ZT1uZXcgQXJyYXkoNTc2KTtxKHllKTt2YXIgQ2U9bmV3IEFycmF5KDYwKTtxKENlKTt2YXIgRGU9bmV3IEFycmF5KDUxMik7cShEZSk7dmFyIFBlPW5ldyBBcnJheSgyNTYpO3EoUGUp''@;'; put 'put ''O3ZhciBRZT1uZXcgQXJyYXkoMjkpO3EoUWUpO3ZhciAkZT1uZXcgQXJyYXkoMzApO3EoJGUpO3ZhciB5dCxwdCxtdCxndD1mdW5jdGlvbihlbixkcixucix3biwkbil7dGhpcy5zdGF0aWNfdHJlZT1lbix0aGlzLmV4dHJhX2JpdHM9ZHIsdGhpcy5leHRyYV9iYXNlPW5yLHRoaXMuZWxlbXM9''@;'; put 'put ''d24sdGhpcy5tYXhfbGVuZ3RoPSRuLHRoaXMuaGFzX3N0cmVlPWVuJiZlbi5sZW5ndGh9LHZ0PWZ1bmN0aW9uKGVuLGRyKXt0aGlzLmR5bl90cmVlPWVuLHRoaXMubWF4X2NvZGU9MCx0aGlzLnN0YXRfZGVzYz1kcn07ZnVuY3Rpb24gZnQoZW4pe3JldHVybiBlbjwyNTY/RGVbZW5dOkRlWzI1''@;'; put 'put ''NisoZW4+Pj43KV19ZnVuY3Rpb24gRnQoZW4sZHIpe2VuLnBlbmRpbmdfYnVmW2VuLnBlbmRpbmcrK109MjU1JmRyLGVuLnBlbmRpbmdfYnVmW2VuLnBlbmRpbmcrK109ZHI+Pj44JjI1NX1mdW5jdGlvbiBvbihlbixkcixucil7ZW4uYmlfdmFsaWQ+MTYtbnI/KGVuLmJpX2J1Znw9ZHI8PGVu''@;'; put 'put ''LmJpX3ZhbGlkJjY1NTM1LEZ0KGVuLGVuLmJpX2J1ZiksZW4uYmlfYnVmPWRyPj4xNi1lbi5iaV92YWxpZCxlbi5iaV92YWxpZCs9bnItMTYpOihlbi5iaV9idWZ8PWRyPDxlbi5iaV92YWxpZCY2NTUzNSxlbi5iaV92YWxpZCs9bnIpfWZ1bmN0aW9uIF90KGVuLGRyLG5yKXtvbihlbixuclsy''@;'; put 'put ''KmRyXSxuclsyKmRyKzFdKX1mdW5jdGlvbiBudChlbixkcil7dmFyIG5yPTA7ZG97bnJ8PTEmZW4sZW4+Pj49MSxucjw8PTF9d2hpbGUoLS1kcj4wKTtyZXR1cm4gbnI+Pj4xfWZ1bmN0aW9uIFJ0KGVuLGRyLG5yKXt2YXIgWXQsZ24sd249bmV3IEFycmF5KDE2KSwkbj0wO2ZvcihZdD0xO1l0''@;'; put 'put ''PD0xNTtZdCsrKXduW1l0XT0kbj0kbitucltZdC0xXTw8MTtmb3IoZ249MDtnbjw9ZHI7Z24rKyl7dmFyIEtuPWVuWzIqZ24rMV07MCE9PUtuJiYoZW5bMipnbl09bnQod25bS25dKyssS24pKX19ZnVuY3Rpb24gY3QoZW4pe3ZhciBkcjtmb3IoZHI9MDtkcjwyODY7ZHIrKyllbi5keW5fbHRy''@;'; put 'put ''ZWVbMipkcl09MDtmb3IoZHI9MDtkcjwzMDtkcisrKWVuLmR5bl9kdHJlZVsyKmRyXT0wO2Zvcihkcj0wO2RyPDE5O2RyKyspZW4uYmxfdHJlZVsyKmRyXT0wO2VuLmR5bl9sdHJlZVs1MTJdPTEsZW4ub3B0X2xlbj1lbi5zdGF0aWNfbGVuPTAsZW4ubGFzdF9saXQ9ZW4ubWF0Y2hlcz0wfWZ1''@;'; put 'put ''bmN0aW9uIE50KGVuKXtlbi5iaV92YWxpZD44P0Z0KGVuLGVuLmJpX2J1Zik6ZW4uYmlfdmFsaWQ+MCYmKGVuLnBlbmRpbmdfYnVmW2VuLnBlbmRpbmcrK109ZW4uYmlfYnVmKSxlbi5iaV9idWY9MCxlbi5iaV92YWxpZD0wfWZ1bmN0aW9uIFllKGVuLGRyLG5yLHduKXt2YXIgJG49MipkcixZ''@;'; put 'put ''dD0yKm5yO3JldHVybiBlblskbl08ZW5bWXRdfHxlblskbl09PT1lbltZdF0mJnduW2RyXTw9d25bbnJdfWZ1bmN0aW9uIEF0KGVuLGRyLG5yKXtmb3IodmFyIHduPWVuLmhlYXBbbnJdLCRuPW5yPDwxOyRuPD1lbi5oZWFwX2xlbiYmKCRuPGVuLmhlYXBfbGVuJiZZZShkcixlbi5oZWFwWyRu''@;'; put 'put ''KzFdLGVuLmhlYXBbJG5dLGVuLmRlcHRoKSYmJG4rKywhWWUoZHIsd24sZW4uaGVhcFskbl0sZW4uZGVwdGgpKTspZW4uaGVhcFtucl09ZW4uaGVhcFskbl0sbnI9JG4sJG48PD0xO2VuLmhlYXBbbnJdPXdufWZ1bmN0aW9uIGp0KGVuLGRyLG5yKXt2YXIgd24sJG4sZ24sS24sWXQ9MDtpZigw''@;'; put 'put ''IT09ZW4ubGFzdF9saXQpZG97d249ZW4ucGVuZGluZ19idWZbZW4uZF9idWYrMipZdF08PDh8ZW4ucGVuZGluZ19idWZbZW4uZF9idWYrMipZdCsxXSwkbj1lbi5wZW5kaW5nX2J1Zltlbi5sX2J1ZitZdF0sWXQrKywwPT09d24/X3QoZW4sJG4sZHIpOihfdChlbiwoZ249UGVbJG5dKSsyNTYr''@;'; put 'put ''MSxkciksMCE9PShLbj1QW2duXSkmJm9uKGVuLCRuLT1RZVtnbl0sS24pLF90KGVuLGduPWZ0KC0td24pLG5yKSwwIT09KEtuPVZbZ25dKSYmb24oZW4sd24tPSRlW2duXSxLbikpfXdoaWxlKFl0PGVuLmxhc3RfbGl0KTtfdChlbiwyNTYsZHIpfWZ1bmN0aW9uIEp0KGVuLGRyKXt2YXIgZ24s''@;'; put 'put ''S24sc24sbnI9ZHIuZHluX3RyZWUsd249ZHIuc3RhdF9kZXNjLnN0YXRpY190cmVlLCRuPWRyLnN0YXRfZGVzYy5oYXNfc3RyZWUsWXQ9ZHIuc3RhdF9kZXNjLmVsZW1zLFZ0PS0xO2Zvcihlbi5oZWFwX2xlbj0wLGVuLmhlYXBfbWF4PTU3Myxnbj0wO2duPFl0O2duKyspMCE9PW5yWzIqZ25d''@;'; put 'put ''Pyhlbi5oZWFwWysrZW4uaGVhcF9sZW5dPVZ0PWduLGVuLmRlcHRoW2duXT0wKTpuclsyKmduKzFdPTA7Zm9yKDtlbi5oZWFwX2xlbjwyOyluclsyKihzbj1lbi5oZWFwWysrZW4uaGVhcF9sZW5dPVZ0PDI/KytWdDowKV09MSxlbi5kZXB0aFtzbl09MCxlbi5vcHRfbGVuLS0sJG4mJihlbi5z''@;'; put 'put ''dGF0aWNfbGVuLT13blsyKnNuKzFdKTtmb3IoZHIubWF4X2NvZGU9VnQsZ249ZW4uaGVhcF9sZW4+PjE7Z24+PTE7Z24tLSlBdChlbixucixnbik7c249WXQ7ZG97Z249ZW4uaGVhcFsxXSxlbi5oZWFwWzFdPWVuLmhlYXBbZW4uaGVhcF9sZW4tLV0sQXQoZW4sbnIsMSksS249ZW4uaGVhcFsx''@;'; put 'put ''XSxlbi5oZWFwWy0tZW4uaGVhcF9tYXhdPWduLGVuLmhlYXBbLS1lbi5oZWFwX21heF09S24sbnJbMipzbl09bnJbMipnbl0rbnJbMipLbl0sZW4uZGVwdGhbc25dPShlbi5kZXB0aFtnbl0+PWVuLmRlcHRoW0tuXT9lbi5kZXB0aFtnbl06ZW4uZGVwdGhbS25dKSsxLG5yWzIqZ24rMV09bnJb''@;'; put 'put ''MipLbisxXT1zbixlbi5oZWFwWzFdPXNuKyssQXQoZW4sbnIsMSl9d2hpbGUoZW4uaGVhcF9sZW4+PTIpO2VuLmhlYXBbLS1lbi5oZWFwX21heF09ZW4uaGVhcFsxXSxmdW5jdGlvbiBvdChlbixkcil7dmFyIHNuLFVuLF9uLHRuLEduLFRyLG5yPWRyLmR5bl90cmVlLHduPWRyLm1heF9jb2Rl''@;'; put 'put ''LCRuPWRyLnN0YXRfZGVzYy5zdGF0aWNfdHJlZSxZdD1kci5zdGF0X2Rlc2MuaGFzX3N0cmVlLGduPWRyLnN0YXRfZGVzYy5leHRyYV9iaXRzLEtuPWRyLnN0YXRfZGVzYy5leHRyYV9iYXNlLFZ0PWRyLnN0YXRfZGVzYy5tYXhfbGVuZ3RoLFBuPTA7Zm9yKHRuPTA7dG48PTE1O3RuKyspZW4u''@;'; put 'put ''YmxfY291bnRbdG5dPTA7Zm9yKG5yWzIqZW4uaGVhcFtlbi5oZWFwX21heF0rMV09MCxzbj1lbi5oZWFwX21heCsxO3NuPDU3MztzbisrKSh0bj1uclsyKm5yWzIqKFVuPWVuLmhlYXBbc25dKSsxXSsxXSsxKT5WdCYmKHRuPVZ0LFBuKyspLG5yWzIqVW4rMV09dG4sIShVbj53bikmJihlbi5i''@;'; put 'put ''bF9jb3VudFt0bl0rKyxHbj0wLFVuPj1LbiYmKEduPWduW1VuLUtuXSksZW4ub3B0X2xlbis9KFRyPW5yWzIqVW5dKSoodG4rR24pLFl0JiYoZW4uc3RhdGljX2xlbis9VHIqKCRuWzIqVW4rMV0rR24pKSk7aWYoMCE9PVBuKXtkb3tmb3IodG49VnQtMTswPT09ZW4uYmxfY291bnRbdG5dOyl0''@;'; put 'put ''bi0tO2VuLmJsX2NvdW50W3RuXS0tLGVuLmJsX2NvdW50W3RuKzFdKz0yLGVuLmJsX2NvdW50W1Z0XS0tLFBuLT0yfXdoaWxlKFBuPjApO2Zvcih0bj1WdDswIT09dG47dG4tLSlmb3IoVW49ZW4uYmxfY291bnRbdG5dOzAhPT1VbjspISgoX249ZW4uaGVhcFstLXNuXSk+d24pJiYobnJbMipf''@;'; put 'put ''bisxXSE9PXRuJiYoZW4ub3B0X2xlbis9KHRuLW5yWzIqX24rMV0pKm5yWzIqX25dLG5yWzIqX24rMV09dG4pLFVuLS0pfX0oZW4sZHIpLFJ0KG5yLFZ0LGVuLmJsX2NvdW50KX1mdW5jdGlvbiBtbihlbixkcixucil7dmFyIHduLFl0LCRuPS0xLGduPWRyWzFdLEtuPTAsVnQ9Nyxzbj00O2Zv''@;'; put 'put ''cigwPT09Z24mJihWdD0xMzgsc249MyksZHJbMioobnIrMSkrMV09NjU1MzUsd249MDt3bjw9bnI7d24rKylZdD1nbixnbj1kclsyKih3bisxKSsxXSwhKCsrS248VnQmJll0PT09Z24pJiYoS248c24/ZW4uYmxfdHJlZVsyKll0XSs9S246MCE9PVl0PyhZdCE9PSRuJiZlbi5ibF90cmVlWzIq''@;'; put 'put ''WXRdKyssZW4uYmxfdHJlZVszMl0rKyk6S248PTEwP2VuLmJsX3RyZWVbMzRdKys6ZW4uYmxfdHJlZVszNl0rKyxLbj0wLCRuPVl0LDA9PT1nbj8oVnQ9MTM4LHNuPTMpOll0PT09Z24/KFZ0PTYsc249Myk6KFZ0PTcsc249NCkpfWZ1bmN0aW9uIHBuKGVuLGRyLG5yKXt2YXIgd24sWXQsJG49''@;'; put 'put ''LTEsZ249ZHJbMV0sS249MCxWdD03LHNuPTQ7Zm9yKDA9PT1nbiYmKFZ0PTEzOCxzbj0zKSx3bj0wO3duPD1ucjt3bisrKWlmKFl0PWduLGduPWRyWzIqKHduKzEpKzFdLCEoKytLbjxWdCYmWXQ9PT1nbikpe2lmKEtuPHNuKWRve190KGVuLFl0LGVuLmJsX3RyZWUpfXdoaWxlKDAhPS0tS24p''@;'; put 'put ''O2Vsc2UgMCE9PVl0PyhZdCE9PSRuJiYoX3QoZW4sWXQsZW4uYmxfdHJlZSksS24tLSksX3QoZW4sMTYsZW4uYmxfdHJlZSksb24oZW4sS24tMywyKSk6S248PTEwPyhfdChlbiwxNyxlbi5ibF90cmVlKSxvbihlbixLbi0zLDMpKTooX3QoZW4sMTgsZW4uYmxfdHJlZSksb24oZW4sS24tMTEs''@;'; put 'put ''NykpO0tuPTAsJG49WXQsMD09PWduPyhWdD0xMzgsc249Myk6WXQ9PT1nbj8oVnQ9Nixzbj0zKTooVnQ9Nyxzbj00KX19dmFyIGtuPSExO2Z1bmN0aW9uIHVyKGVuLGRyLG5yLHduKXtvbihlbiwwKyh3bj8xOjApLDMpLGZ1bmN0aW9uIHplKGVuLGRyLG5yLHduKXtOdChlbiksd24mJihGdChl''@;'; put 'put ''bixuciksRnQoZW4sfm5yKSksbGUuYXJyYXlTZXQoZW4ucGVuZGluZ19idWYsZW4ud2luZG93LGRyLG5yLGVuLnBlbmRpbmcpLGVuLnBlbmRpbmcrPW5yfShlbixkcixuciwhMCl9aWUuX3RyX2luaXQ9ZnVuY3Rpb24gZXIoZW4pe2tufHwoZnVuY3Rpb24gQ3QoKXt2YXIgZW4sZHIsbnIsd24s''@;'; put 'put ''JG4sWXQ9bmV3IEFycmF5KDE2KTtmb3IobnI9MCx3bj0wO3duPDI4O3duKyspZm9yKFFlW3duXT1ucixlbj0wO2VuPDE8PFBbd25dO2VuKyspUGVbbnIrK109d247Zm9yKFBlW25yLTFdPXduLCRuPTAsd249MDt3bjwxNjt3bisrKWZvcigkZVt3bl09JG4sZW49MDtlbjwxPDxWW3duXTtlbisr''@;'; put 'put ''KURlWyRuKytdPXduO2Zvcigkbj4+PTc7d248MzA7d24rKylmb3IoJGVbd25dPSRuPDw3LGVuPTA7ZW48MTw8Vlt3bl0tNztlbisrKURlWzI1NiskbisrXT13bjtmb3IoZHI9MDtkcjw9MTU7ZHIrKylZdFtkcl09MDtmb3IoZW49MDtlbjw9MTQzOyl5ZVsyKmVuKzFdPTgsZW4rKyxZdFs4XSsr''@;'; put 'put ''O2Zvcig7ZW48PTI1NTspeWVbMiplbisxXT05LGVuKyssWXRbOV0rKztmb3IoO2VuPD0yNzk7KXllWzIqZW4rMV09NyxlbisrLFl0WzddKys7Zm9yKDtlbjw9Mjg3Oyl5ZVsyKmVuKzFdPTgsZW4rKyxZdFs4XSsrO2ZvcihSdCh5ZSwyODcsWXQpLGVuPTA7ZW48MzA7ZW4rKylDZVsyKmVuKzFd''@;'; put 'put ''PTUsQ2VbMiplbl09bnQoZW4sNSk7eXQ9bmV3IGd0KHllLFAsMjU3LDI4NiwxNSkscHQ9bmV3IGd0KENlLFYsMCwzMCwxNSksbXQ9bmV3IGd0KG5ldyBBcnJheSgwKSxULDAsMTksNyl9KCksa249ITApLGVuLmxfZGVzYz1uZXcgdnQoZW4uZHluX2x0cmVlLHl0KSxlbi5kX2Rlc2M9bmV3IHZ0''@;'; put 'put ''KGVuLmR5bl9kdHJlZSxwdCksZW4uYmxfZGVzYz1uZXcgdnQoZW4uYmxfdHJlZSxtdCksZW4uYmlfYnVmPTAsZW4uYmlfdmFsaWQ9MCxjdChlbil9LGllLl90cl9zdG9yZWRfYmxvY2s9dXIsaWUuX3RyX2ZsdXNoX2Jsb2NrPWZ1bmN0aW9uIEZyKGVuLGRyLG5yLHduKXt2YXIgJG4sWXQsZ249''@;'; put 'put ''MDtlbi5sZXZlbD4wPygyPT09ZW4uc3RybS5kYXRhX3R5cGUmJihlbi5zdHJtLmRhdGFfdHlwZT1mdW5jdGlvbiBObihlbil7dmFyIG5yLGRyPTQwOTM2MjQ0NDc7Zm9yKG5yPTA7bnI8PTMxO25yKyssZHI+Pj49MSlpZigxJmRyJiYwIT09ZW4uZHluX2x0cmVlWzIqbnJdKXJldHVybiAwO2lm''@;'; put 'put ''KDAhPT1lbi5keW5fbHRyZWVbMThdfHwwIT09ZW4uZHluX2x0cmVlWzIwXXx8MCE9PWVuLmR5bl9sdHJlZVsyNl0pcmV0dXJuIDE7Zm9yKG5yPTMyO25yPDI1NjtucisrKWlmKDAhPT1lbi5keW5fbHRyZWVbMipucl0pcmV0dXJuIDE7cmV0dXJuIDB9KGVuKSksSnQoZW4sZW4ubF9kZXNjKSxK''@;'; put 'put ''dChlbixlbi5kX2Rlc2MpLGduPWZ1bmN0aW9uIGJuKGVuKXt2YXIgZHI7Zm9yKG1uKGVuLGVuLmR5bl9sdHJlZSxlbi5sX2Rlc2MubWF4X2NvZGUpLG1uKGVuLGVuLmR5bl9kdHJlZSxlbi5kX2Rlc2MubWF4X2NvZGUpLEp0KGVuLGVuLmJsX2Rlc2MpLGRyPTE4O2RyPj0zJiYwPT09ZW4uYmxf''@;'; put 'put ''dHJlZVsyKlNbZHJdKzFdO2RyLS0pO3JldHVybiBlbi5vcHRfbGVuKz0zKihkcisxKSs1KzUrNCxkcn0oZW4pLChZdD1lbi5zdGF0aWNfbGVuKzMrNz4+PjMpPD0oJG49ZW4ub3B0X2xlbiszKzc+Pj4zKSYmKCRuPVl0KSk6JG49WXQ9bnIrNSxucis0PD0kbiYmLTEhPT1kcj91cihlbixkcixu''@;'; put 'put ''cix3bik6ND09PWVuLnN0cmF0ZWd5fHxZdD09PSRuPyhvbihlbiwyKyh3bj8xOjApLDMpLGp0KGVuLHllLENlKSk6KG9uKGVuLDQrKHduPzE6MCksMyksZnVuY3Rpb24gbG4oZW4sZHIsbnIsd24pe3ZhciAkbjtmb3Iob24oZW4sZHItMjU3LDUpLG9uKGVuLG5yLTEsNSksb24oZW4sd24tNCw0''@;'; put 'put ''KSwkbj0wOyRuPHduOyRuKyspb24oZW4sZW4uYmxfdHJlZVsyKlNbJG5dKzFdLDMpO3BuKGVuLGVuLmR5bl9sdHJlZSxkci0xKSxwbihlbixlbi5keW5fZHRyZWUsbnItMSl9KGVuLGVuLmxfZGVzYy5tYXhfY29kZSsxLGVuLmRfZGVzYy5tYXhfY29kZSsxLGduKzEpLGp0KGVuLGVuLmR5bl9s''@;'; put 'put ''dHJlZSxlbi5keW5fZHRyZWUpKSxjdChlbiksd24mJk50KGVuKX0saWUuX3RyX3RhbGx5PWZ1bmN0aW9uIHhyKGVuLGRyLG5yKXtyZXR1cm4gZW4ucGVuZGluZ19idWZbZW4uZF9idWYrMiplbi5sYXN0X2xpdF09ZHI+Pj44JjI1NSxlbi5wZW5kaW5nX2J1Zltlbi5kX2J1ZisyKmVuLmxhc3Rf''@;'; put 'put ''bGl0KzFdPTI1NSZkcixlbi5wZW5kaW5nX2J1Zltlbi5sX2J1Zitlbi5sYXN0X2xpdF09MjU1Jm5yLGVuLmxhc3RfbGl0KyssMD09PWRyP2VuLmR5bl9sdHJlZVsyKm5yXSsrOihlbi5tYXRjaGVzKyssZHItLSxlbi5keW5fbHRyZWVbMiooUGVbbnJdKzI1NisxKV0rKyxlbi5keW5fZHRyZWVb''@;'; put 'put ''MipmdChkcildKyspLGVuLmxhc3RfbGl0PT09ZW4ubGl0X2J1ZnNpemUtMX0saWUuX3RyX2FsaWduPWZ1bmN0aW9uIFhuKGVuKXtvbihlbiwyLDMpLF90KGVuLDI1Nix5ZSksZnVuY3Rpb24gcWUoZW4pezE2PT09ZW4uYmlfdmFsaWQ/KEZ0KGVuLGVuLmJpX2J1ZiksZW4uYmlfYnVmPTAsZW4u''@;'; put 'put ''YmlfdmFsaWQ9MCk6ZW4uYmlfdmFsaWQ+PTgmJihlbi5wZW5kaW5nX2J1Zltlbi5wZW5kaW5nKytdPTI1NSZlbi5iaV9idWYsZW4uYmlfYnVmPj49OCxlbi5iaV92YWxpZC09OCl9KGVuKX19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM5OltmdW5jdGlvbihRLFosaWUpeyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtaLmV4cG9ydHM9ZnVuY3Rpb24gbGUoKXt0aGlzLmlucHV0PW51bGwsdGhpcy5uZXh0X2luPTAsdGhpcy5hdmFpbF9pbj0wLHRoaXMudG90YWxfaW49MCx0aGlzLm91dHB1dD1udWxsLHRoaXMubmV4dF9vdXQ9MCx0aGlzLmF2YWlsX291dD0wLHRoaXMudG90YWxfb3V0PTAsdGhpcy5tc2c9''@;'; put 'put ''IiIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfX0se31dfSx7fSxbOV0pKDkpfSl9LDMwNjI4OihYZSxKZSxMKT0+eyFmdW5jdGlvbiBCKFUpe1UudmVyc2lvbj0iMS4yMDIxMTEyMi4xIjt2YXIgUT0xMjAwLFo9MTI1MjsidW5kZWZpbmVkIj09dHlwZW9m''@;'; put 'put ''IGNwdGFibGUmJigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWwuY3B0YWJsZT1MKDUzMzk5KToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5jcHRhYmxlPUwoNTMzOTkpKSk7Zm9yKHZhciBpZT1bODc0LDkzMiw5MzYsOTQ5LDk1MCwxZTRdLGxlPTA7bGU8PTg7''@;'; put 'put ''KytsZSlpZS5wdXNoKDEyNTArbGUpO3ZhciBZPXswOjEyNTIsMTo2NTAwMSwyOjY1MDAxLDc3OjFlNCwxMjg6OTMyLDEyOTo5NDksMTMwOjEzNjEsMTM0OjkzNiwxMzY6OTUwLDE2MToxMjUzLDE2MjoxMjU0LDE2MzoxMjU4LDE3NzoxMjU1LDE3ODoxMjU2LDE4NjoxMjU3LDIwNDoxMjUxLDIy''@;'; put 'put ''Mjo4NzQsMjM4OjEyNTAsMjU1OjEyNTIsNjk6Njk2OX0sVz1mdW5jdGlvbihIKXstMSE9aWUuaW5kZXhPZihIKSYmKFo9WVswXT1IKX0sZWU9ZnVuY3Rpb24oSCl7UT1ILFcoSCl9O2Z1bmN0aW9uIHEoKXtlZSgxMjAwKSxmdW5jdGlvbiBOKCl7VygxMjUyKX0oKX1mdW5jdGlvbiBKKEgpe2Zv''@;'; put 'put ''cih2YXIgcmU9W10sWD0wLHdlPUgubGVuZ3RoO1g8d2U7KytYKXJlW1hdPUguY2hhckNvZGVBdChYKTtyZXR1cm4gcmV9dmFyIGZlPWZ1bmN0aW9uKEgpe3ZhciByZT1ILmNoYXJDb2RlQXQoMCksWD1ILmNoYXJDb2RlQXQoMSk7cmV0dXJuIDI1NT09cmUmJjI1ND09WD9mdW5jdGlvbiBzZShI''@;'; put 'put ''KXtmb3IodmFyIHJlPVtdLFg9MDtYPEgubGVuZ3RoPj4xOysrWClyZVtYXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEguY2hhckNvZGVBdCgyKlgpKyhILmNoYXJDb2RlQXQoMipYKzEpPDw4KSk7cmV0dXJuIHJlLmpvaW4oIiIpfShILnNsaWNlKDIpKToyNTQ9PXJlJiYyNTU9PVg/ZnVuY3Rpb24g''@;'; put 'put ''YWUoSCl7Zm9yKHZhciByZT1bXSxYPTA7WDxILmxlbmd0aD4+MTsrK1gpcmVbWF09U3RyaW5nLmZyb21DaGFyQ29kZShILmNoYXJDb2RlQXQoMipYKzEpKyhILmNoYXJDb2RlQXQoMipYKTw8OCkpO3JldHVybiByZS5qb2luKCIiKX0oSC5zbGljZSgyKSk6NjUyNzk9PXJlP0guc2xpY2UoMSk6''@;'; put 'put ''SH0sZGU9ZnVuY3Rpb24ocmUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHJlKX0sdmU9ZnVuY3Rpb24ocmUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHJlKX07InVuZGVmaW5lZCIhPXR5cGVvZiBjcHRhYmxlJiYoZWU9ZnVuY3Rpb24oSCl7UT1ILFcoSCl9LGZlPWZ1bmN0aW9u''@;'; put 'put ''KEgpe3JldHVybiAyNTU9PT1ILmNoYXJDb2RlQXQoMCkmJjI1ND09PUguY2hhckNvZGVBdCgxKT9jcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLEooSC5zbGljZSgyKSkpOkh9LGRlPWZ1bmN0aW9uKHJlKXtyZXR1cm4gMTIwMD09PVE/U3RyaW5nLmZyb21DaGFyQ29kZShyZSk6Y3B0YWJsZS51''@;'; put 'put ''dGlscy5kZWNvZGUoUSxbMjU1JnJlLHJlPj44XSlbMF19LHZlPWZ1bmN0aW9uKHJlKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUoWixbcmVdKVswXX0pO3ZhciByZSxTZT0ocmU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2''@;'; put 'put ''Nzg5Ky89Iix7ZW5jb2RlOmZ1bmN0aW9uKFgpe2Zvcih2YXIgd2U9IiIseGU9MCxGZT0wLFplPTAsVmU9MCxVZT0wLFN0PTAsSXQ9MCxQdD0wO1B0PFgubGVuZ3RoOylWZT0oeGU9WC5jaGFyQ29kZUF0KFB0KyspKT4+MixVZT0oMyZ4ZSk8PDR8KEZlPVguY2hhckNvZGVBdChQdCsrKSk+PjQs''@;'; put 'put ''U3Q9KDE1JkZlKTw8MnwoWmU9WC5jaGFyQ29kZUF0KFB0KyspKT4+NixJdD02MyZaZSxpc05hTihGZSk/U3Q9SXQ9NjQ6aXNOYU4oWmUpJiYoSXQ9NjQpLHdlKz1yZS5jaGFyQXQoVmUpK3JlLmNoYXJBdChVZSkrcmUuY2hhckF0KFN0KStyZS5jaGFyQXQoSXQpO3JldHVybiB3ZX0sZGVjb2Rl''@;'; put 'put ''OmZ1bmN0aW9uKHdlKXt2YXIgeGU9IiIsVWU9MCxTdD0wLEl0PTAsUHQ9MDt3ZT13ZS5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIFF0PTA7UXQ8d2UubGVuZ3RoOylVZT1yZS5pbmRleE9mKHdlLmNoYXJBdChRdCsrKSksU3Q9cmUuaW5kZXhPZih3ZS5jaGFyQXQoUXQrKykp''@;'; put 'put ''LHhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFVlPDwyfFN0Pj40KSw2NCE9PShJdD1yZS5pbmRleE9mKHdlLmNoYXJBdChRdCsrKSkpJiYoeGUrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1JlN0KTw8NHxJdD4+MikpLDY0IT09KFB0PXJlLmluZGV4T2Yod2UuY2hhckF0KFF0KyspKSkmJih4ZSs9''@;'; put 'put ''U3RyaW5nLmZyb21DaGFyQ29kZSgoMyZJdCk8PDZ8UHQpKTtyZXR1cm4geGV9fSksSWU9InVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXImJiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmdm9pZCAwIT09cHJvY2Vzcy52ZXJzaW9ucyYmISFwcm9jZXNzLnZlcnNpb25zLm5vZGUsVGU9ZnVu''@;'; put 'put ''Y3Rpb24oKXt9O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyKXt2YXIgRWU9IUJ1ZmZlci5mcm9tO2lmKCFFZSl0cnl7QnVmZmVyLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaChIKXtFZT0hMH1UZT1FZT9mdW5jdGlvbihILHJlKXtyZXR1cm4gcmU/bmV3IEJ1ZmZlcihILHJlKTpuZXcg''@;'; put 'put ''QnVmZmVyKEgpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlciksQnVmZmVyLmFsbG9jfHwoQnVmZmVyLmFsbG9jPWZ1bmN0aW9uKEgpe3JldHVybiBuZXcgQnVmZmVyKEgpfSksQnVmZmVyLmFsbG9jVW5zYWZlfHwoQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKEgpe3JldHVybiBuZXcgQnVm''@;'; put 'put ''ZmVyKEgpfSl9ZnVuY3Rpb24gaGUoSCl7cmV0dXJuIEllP0J1ZmZlci5hbGxvYyhIKTpuZXcgQXJyYXkoSCl9ZnVuY3Rpb24gTyhIKXtyZXR1cm4gSWU/QnVmZmVyLmFsbG9jVW5zYWZlKEgpOm5ldyBBcnJheShIKX12YXIgej1mdW5jdGlvbihyZSl7cmV0dXJuIEllP1RlKHJlLCJiaW5hcnki''@;'; put 'put ''KTpyZS5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKFgpe3JldHVybiAyNTUmWC5jaGFyQ29kZUF0KDApfSl9O2Z1bmN0aW9uIG5lKEgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHooSCk7Zm9yKHZhciByZT1uZXcgQXJyYXlCdWZmZXIoSC5sZW5ndGgpLFg9bmV3''@;'; put 'put ''IFVpbnQ4QXJyYXkocmUpLHdlPTA7d2UhPUgubGVuZ3RoOysrd2UpWFt3ZV09MjU1JkguY2hhckNvZGVBdCh3ZSk7cmV0dXJuIHJlfWZ1bmN0aW9uIHRlKEgpe2lmKEFycmF5LmlzQXJyYXkoSCkpcmV0dXJuIEgubWFwKGZ1bmN0aW9uKHdlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh3''@;'; put 'put ''ZSl9KS5qb2luKCIiKTtmb3IodmFyIHJlPVtdLFg9MDtYPEgubGVuZ3RoOysrWClyZVtYXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhbWF0pO3JldHVybiByZS5qb2luKCIiKX1mdW5jdGlvbiBQKEgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQXJyYXlCdWZmZXIpdGhyb3cgbmV3IEVycm9yKCJV''@;'; put 'put ''bnN1cHBvcnRlZCIpO2lmKEggaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gUChuZXcgVWludDhBcnJheShIKSk7Zm9yKHZhciByZT1uZXcgQXJyYXkoSC5sZW5ndGgpLFg9MDtYPEgubGVuZ3RoOysrWClyZVtYXT1IW1hdO3JldHVybiByZX12YXIgVj1mdW5jdGlvbihIKXt2YXIgcmU9''@;'; put 'put ''W107cmV0dXJuIEguZm9yRWFjaChmdW5jdGlvbihYKXtBcnJheS5pc0FycmF5KFgpP3JlPXJlLmNvbmNhdChYKTooInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiZYIGluc3RhbmNlb2YgVWludDhBcnJheXx8InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmWCBpbnN0YW5j''@;'; put 'put ''ZW9mIEFycmF5QnVmZmVyKSYmKHJlPXJlLmNvbmNhdChQKFgpKSl9KSxyZX0sVD0vXHUwMDAwL2csUz0vW1x1MDAwMS1cdTAwMDZdL2csRj17fSx5ZT1mdW5jdGlvbihyZSl7ZnVuY3Rpb24gWChycil7Zm9yKHZhciBEcj0iIixVcj1yci5sZW5ndGgtMTtVcj49MDspRHIrPXJyLmNoYXJBdChV''@;'; put 'put ''ci0tKTtyZXR1cm4gRHJ9ZnVuY3Rpb24gd2UocnIsRHIpe2Zvcih2YXIgVXI9IiI7VXIubGVuZ3RoPERyOylVcis9cnI7cmV0dXJuIFVyfWZ1bmN0aW9uIHhlKHJyLERyKXt2YXIgVXI9IiIrcnI7cmV0dXJuIFVyLmxlbmd0aD49RHI/VXI6d2UoIjAiLERyLVVyLmxlbmd0aCkrVXJ9ZnVuY3Rp''@;'; put 'put ''b24gRmUocnIsRHIpe3ZhciBVcj0iIitycjtyZXR1cm4gVXIubGVuZ3RoPj1Ecj9Vcjp3ZSgiICIsRHItVXIubGVuZ3RoKStVcn1mdW5jdGlvbiBaZShycixEcil7dmFyIFVyPSIiK3JyO3JldHVybiBVci5sZW5ndGg+PURyP1VyOlVyK3dlKCIgIixEci1Vci5sZW5ndGgpfXJlLnZlcnNpb249''@;'; put 'put ''IjEuMjAyMTA3MjYuMSI7dmFyIFN0PU1hdGgucG93KDIsMzIpO2Z1bmN0aW9uIEl0KHJyLERyKXtyZXR1cm4gcnI+U3R8fHJyPC1TdD9mdW5jdGlvbiBWZShycixEcil7dmFyIFVyPSIiK01hdGgucm91bmQocnIpO3JldHVybiBVci5sZW5ndGg+PURyP1VyOndlKCIwIixEci1Vci5sZW5ndGgp''@;'; put 'put ''K1VyfShycixEcik6ZnVuY3Rpb24gVWUocnIsRHIpe3ZhciBVcj0iIitycjtyZXR1cm4gVXIubGVuZ3RoPj1Ecj9Vcjp3ZSgiMCIsRHItVXIubGVuZ3RoKStVcn0oTWF0aC5yb3VuZChyciksRHIpfWZ1bmN0aW9uIFB0KHJyLERyKXtyZXR1cm4gcnIubGVuZ3RoPj03KyhEcj1Ecnx8MCkmJjEw''@;'; put 'put ''Mz09KDMyfHJyLmNoYXJDb2RlQXQoRHIpKSYmMTAxPT0oMzJ8cnIuY2hhckNvZGVBdChEcisxKSkmJjExMD09KDMyfHJyLmNoYXJDb2RlQXQoRHIrMikpJiYxMDE9PSgzMnxyci5jaGFyQ29kZUF0KERyKzMpKSYmMTE0PT0oMzJ8cnIuY2hhckNvZGVBdChEcis0KSkmJjk3PT0oMzJ8cnIuY2hh''@;'; put 'put ''ckNvZGVBdChEcis1KSkmJjEwOD09KDMyfHJyLmNoYXJDb2RlQXQoRHIrNikpfWZ1bmN0aW9uIFF0KHJyKXtmb3IodmFyIERyPVtdLFVyPU9iamVjdC5rZXlzKHJyKSxoMD0wO2gwIT09VXIubGVuZ3RoOysraDApRHJbcnJbVXJbaDBdXV09VXJbaDBdO3JldHVybiBEcn12YXIgYW49W1siU3Vu''@;'; put 'put ''IiwiU3VuZGF5Il0sWyJNb24iLCJNb25kYXkiXSxbIlR1ZSIsIlR1ZXNkYXkiXSxbIldlZCIsIldlZG5lc2RheSJdLFsiVGh1IiwiVGh1cnNkYXkiXSxbIkZyaSIsIkZyaWRheSJdLFsiU2F0IiwiU2F0dXJkYXkiXV0sQ249W1siSiIsIkphbiIsIkphbnVhcnkiXSxbIkYiLCJGZWIiLCJGZWJy''@;'; put 'put ''dWFyeSJdLFsiTSIsIk1hciIsIk1hcmNoIl0sWyJBIiwiQXByIiwiQXByaWwiXSxbIk0iLCJNYXkiLCJNYXkiXSxbIkoiLCJKdW4iLCJKdW5lIl0sWyJKIiwiSnVsIiwiSnVseSJdLFsiQSIsIkF1ZyIsIkF1Z3VzdCJdLFsiUyIsIlNlcCIsIlNlcHRlbWJlciJdLFsiTyIsIk9jdCIsIk9jdG9i''@;'; put 'put ''ZXIiXSxbIk4iLCJOb3YiLCJOb3ZlbWJlciJdLFsiRCIsIkRlYyIsIkRlY2VtYmVyIl1dO2Z1bmN0aW9uIEx0KHJyKXtyclswXT0iR2VuZXJhbCIscnJbMV09IjAiLHJyWzJdPSIwLjAwIixyclszXT0iIywjIzAiLHJyWzRdPSIjLCMjMC4wMCIscnJbOV09IjAlIixyclsxMF09IjAuMDAlIixy''@;'; put 'put ''clsxMV09IjAuMDBFKzAwIixyclsxMl09IiMgPy8/IixyclsxM109IiMgPz8vPz8iLHJyWzE0XT0ibS9kL3l5IixyclsxNV09ImQtbW1tLXl5IixyclsxNl09ImQtbW1tIixyclsxN109Im1tbS15eSIscnJbMThdPSJoOm1tIEFNL1BNIixyclsxOV09Img6bW06c3MgQU0vUE0iLHJyWzIwXT0i''@;'; put 'put ''aDptbSIscnJbMjFdPSJoOm1tOnNzIixyclsyMl09Im0vZC95eSBoOm1tIixyclszN109IiMsIyMwIDsoIywjIzApIixyclszOF09IiMsIyMwIDtbUmVkXSgjLCMjMCkiLHJyWzM5XT0iIywjIzAuMDA7KCMsIyMwLjAwKSIscnJbNDBdPSIjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCkiLHJyWzQ1''@;'; put 'put ''XT0ibW06c3MiLHJyWzQ2XT0iW2hdOm1tOnNzIixycls0N109Im1tc3MuMCIscnJbNDhdPSIjIzAuMEUrMCIscnJbNDldPSJAIixycls1Nl09JyJcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4ICJoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiAiJyxIcihycil9dmFyIHp0PXt9O0x0KHp0''@;'; put 'put ''KTt2YXIgZm49W10sSW49MDtmb3IoSW49NTtJbjw9ODsrK0luKWZuW0luXT0zMitJbjtmb3IoSW49MjM7SW48PTI2OysrSW4pZm5bSW5dPTA7Zm9yKEluPTI3O0luPD0zMTsrK0luKWZuW0luXT0xNDtmb3IoSW49NTA7SW48PTU4OysrSW4pZm5bSW5dPTE0O2ZvcihJbj01OTtJbjw9NjI7KytJ''@;'; put 'put ''bilmbltJbl09SW4tNTg7Zm9yKEluPTY3O0luPD02ODsrK0luKWZuW0luXT1Jbi01ODtmb3IoSW49NzI7SW48PTc1OysrSW4pZm5bSW5dPUluLTU4O2ZvcihJbj02NztJbjw9Njg7KytJbilmbltJbl09SW4tNTc7Zm9yKEluPTc2O0luPD03ODsrK0luKWZuW0luXT1Jbi01Njtmb3IoSW49Nzk7''@;'; put 'put ''SW48PTgxOysrSW4pZm5bSW5dPUluLTM0O3ZhciBSbj1bXTtmdW5jdGlvbiBWbihycixEcixVcil7Zm9yKHZhciBoMD1ycjwwPy0xOjEsZWk9cnIqaDAsdDA9MCxnaT0xLCRpPTAsTW89MSxNMD0wLG1vPTAsdjA9TWF0aC5mbG9vcihlaSk7TTA8RHImJigkaT0odjA9TWF0aC5mbG9vcihlaSkp''@;'; put 'put ''KmdpK3QwLG1vPXYwKk0wK01vLCEoZWktdjA8NWUtOCkpOyllaT0xLyhlaS12MCksdDA9Z2ksZ2k9JGksTW89TTAsTTA9bW87aWYobW8+RHImJihNMD5Ecj8obW89TW8sJGk9dDApOihtbz1NMCwkaT1naSkpLCFVcilyZXR1cm5bMCxoMCokaSxtb107dmFyIENsPU1hdGguZmxvb3IoaDAqJGkv''@;'; put 'put ''bW8pO3JldHVybltDbCxoMCokaS1DbCptbyxtb119ZnVuY3Rpb24gSXIocnIsRHIsVXIpe2lmKHJyPjI5NTg0NjV8fHJyPDApcmV0dXJuIG51bGw7dmFyIGgwPTB8cnIsZWk9TWF0aC5mbG9vcig4NjQwMCoocnItaDApKSx0MD0wLGdpPVtdLCRpPXtEOmgwLFQ6ZWksdTo4NjQwMCoocnItaDAp''@;'; put 'put ''LWVpLHk6MCxtOjAsZDowLEg6MCxNOjAsUzowLHE6MH07aWYoTWF0aC5hYnMoJGkudSk8MWUtNiYmKCRpLnU9MCksRHImJkRyLmRhdGUxOTA0JiYoaDArPTE0NjIpLCRpLnU+Ljk5OTkmJigkaS51PTAsODY0MDA9PSsrZWkmJigkaS5UPWVpPTAsKytoMCwrKyRpLkQpKSw2MD09PWgwKWdpPVVy''@;'; put 'put ''P1sxMzE3LDEwLDI5XTpbMTkwMCwyLDI5XSx0MD0zO2Vsc2UgaWYoMD09PWgwKWdpPVVyP1sxMzE3LDgsMjldOlsxOTAwLDEsMF0sdDA9NjtlbHNle2gwPjYwJiYtLWgwO3ZhciBNbz1uZXcgRGF0ZSgxOTAwLDAsMSk7TW8uc2V0RGF0ZShNby5nZXREYXRlKCkraDAtMSksZ2k9W01vLmdldEZ1''@;'; put 'put ''bGxZZWFyKCksTW8uZ2V0TW9udGgoKSsxLE1vLmdldERhdGUoKV0sdDA9TW8uZ2V0RGF5KCksaDA8NjAmJih0MD0odDArNiklNyksVXImJih0MD1mdW5jdGlvbiBpYShycixEcil7RHJbMF0tPTU4MTt2YXIgVXI9cnIuZ2V0RGF5KCk7cmV0dXJuIHJyPDYwJiYoVXI9KFVyKzYpJTcpLFVyfShN''@;'; put 'put ''byxnaSkpfXJldHVybiAkaS55PWdpWzBdLCRpLm09Z2lbMV0sJGkuZD1naVsyXSwkaS5TPWVpJTYwLGVpPU1hdGguZmxvb3IoZWkvNjApLCRpLk09ZWklNjAsZWk9TWF0aC5mbG9vcihlaS82MCksJGkuSD1laSwkaS5xPXQwLCRpfVJuWzVdPVJuWzYzXT0nIiQiIywjIzBfKTtcXCgiJCIjLCMj''@;'; put 'put ''MFxcKScsUm5bNl09Um5bNjRdPSciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLFJuWzddPVJuWzY1XT0nIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsUm5bOF09Um5bNjZdPSciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLFJuWzQxXT0nXygqICMs''@;'; put 'put ''IyMwXyk7XygqIFxcKCMsIyMwXFwpO18oKiAiLSJfKTtfKEBfKScsUm5bNDJdPSdfKCIkIiogIywjIzBfKTtfKCIkIiogXFwoIywjIzBcXCk7XygiJCIqICItIl8pO18oQF8pJyxSbls0M109J18oKiAjLCMjMC4wMF8pO18oKiBcXCgjLCMjMC4wMFxcKTtfKCogIi0iPz9fKTtfKEBfKScsUm5b''@;'; put 'put ''NDRdPSdfKCIkIiogIywjIzAuMDBfKTtfKCIkIiogXFwoIywjIzAuMDBcXCk7XygiJCIqICItIj8/Xyk7XyhAXyknLHJlLnBhcnNlX2RhdGVfY29kZT1Jcjt2YXIgaWk9bmV3IERhdGUoMTg5OSwxMSwzMSwwLDAsMCkseXI9aWkuZ2V0VGltZSgpLG9pPW5ldyBEYXRlKDE5MDAsMiwxLDAsMCww''@;'; put 'put ''KTtmdW5jdGlvbiBNcihycixEcil7dmFyIFVyPXJyLmdldFRpbWUoKTtyZXR1cm4gRHI/VXItPTEyNjIzMDRlNTpycj49b2kmJihVcis9ODY0ZTUpLChVci0oeXIrNmU0Kihyci5nZXRUaW1lem9uZU9mZnNldCgpLWlpLmdldFRpbWV6b25lT2Zmc2V0KCkpKSkvODY0ZTV9dmFyIFdyPSIiLGFp''@;'; put 'put ''PXsiZW4tdXMiOnt5OiJ5IixkOiJkIiwiLCI6IiwiLCIuIjoiLiIsZGF0ZToiXy8ifSwiZGUtZGUiOnt5OiJqIixkOiJ0IiwiLCI6Ii4iLCIuIjoiLCIsZGF0ZToiXy4ifSwiaXQtaXQiOnt5OiJ5IixkOiJkIiwiLCI6Ii4iLCIuIjoiLCIsZGF0ZToiXy8ifX0sbmk9YWlbV3IudG9Mb3dlckNh''@;'; put 'put ''c2UoKV18fGFpWyJlbi11cyJdLGZyPVF0KG5pKSxoaT0iJCIsdzA9IiIsYjA9IiwiLGJpPSIuIix6cj0iLyI7ZnVuY3Rpb24gSHIocnIpe3N3aXRjaCgoV3J8fCIiKS50b0xvd2VyQ2FzZSgpKXtjYXNlInpoLXR3IjpyclsyN109IlskLTQwNF1lL20vZCIscnJbMjhdPSdbJC00MDRdZSJcdTVl''@;'; put 'put ''NzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxyclsyOV09J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzMwXT0nbSIvImQiLyJ5eScscnJbMzFdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzMyXT0naGgiXHU2NjQyIm1tIlx1NTIwNiInLHJyWzMzXT0n''@;'; put 'put ''aGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxyclszNF09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLHJyWzM1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLHJyWzM2XT0iWyQt''@;'; put 'put ''NDA0XWUvbS9kIixycls1MF09IlskLTQwNF1lL20vZCIscnJbNTFdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxycls1Ml09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLHJyWzUzXT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0''@;'; put 'put ''OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLHJyWzU0XT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscnJbNTVdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0MiJtbSJcdTUyMDYiJyxycls1Nl09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUz''@;'; put 'put ''NDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxycls1N109IlskLTQwNF1lL20vZCIscnJbNThdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJzticmVhaztjYXNlInpoLWNuIjpyclsyN109J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicscnJbMjhdPSdtIlx1Njcw''@;'; put 'put ''OCJkIlx1NjVlNSInLHJyWzI5XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxyclszMF09J20iLSJkIi0ieXknLHJyWzMxXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxyclszMl09J2giXHU2NWY2Im1tIlx1NTIwNiInLHJyWzMzXT0naCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1Nzlk''@;'; put 'put ''MiInLHJyWzM0XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYiJyxyclszNV09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLHJyWzM2XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxycls1MF09J3l5''@;'; put 'put ''eXkiXHU1ZTc0Im0iXHU2NzA4IicscnJbNTFdPSdtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzUyXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxycls1M109J20iXHU2NzA4ImQiXHU2NWU1IicscnJbNTRdPSdtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzU1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1''@;'; put 'put ''NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYiJyxycls1Nl09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLHJyWzU3XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxycls1OF09J20iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2FzZSJqYS1q''@;'; put 'put ''cCI6cnJbMjddPSdbJC00MTFdZ2UiLiJtIi4iZCcscnJbMjhdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxyclsyOV09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzMwXT0nbSIvImQiLyJ5eScscnJbMzFdPSd5eXl5Ilx1NWU3NCJt''@;'; put 'put ''Ilx1NjcwOCJkIlx1NjVlNSInLHJyWzMyXT0naCJcdTY2NDIibW0iXHU1MjA2IicscnJbMzNdPSdoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicscnJbMzRdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHJyWzM1XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxyclszNl09J1skLTQxMV1nZSIu''@;'; put 'put ''Im0iLiJkJyxycls1MF09J1skLTQxMV1nZSIuIm0iLiJkJyxycls1MV09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzUyXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxycls1M109J20iXHU2NzA4ImQiXHU2NWU1IicscnJbNTRdPSdbJC00MTFdZ2dnZSJcdTVl''@;'; put 'put ''NzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxycls1NV09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicscnJbNTZdPSdtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzU3XT0nWyQtNDExXWdlIi4ibSIuImQnLHJyWzU4XT0nWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJrby1rciI6cnJbMjddPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4IiBkZCJcdTY1ZTUiJyxyclsyOF09Im1tLWRkIixyclsyOV09Im1tLWRkIixyclszMF09Im1tLWRkLXl5IixyclszMV09J3l5eXkiXHViMTQ0IiBtbSJcdWM2ZDQiIGRkIlx1Yzc3YyInLHJyWzMyXT0naCJcdWMyZGMiIG1t''@;'; put 'put ''Ilx1YmQ4NCInLHJyWzMzXT0naCJcdWMyZGMiIG1tIlx1YmQ4NCIgc3MiXHVjZDA4IicscnJbMzRdPSJ5eXl5LW1tLWRkIixyclszNV09Inl5eXktbW0tZGQiLHJyWzM2XT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1IicscnJbNTBdPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4''@;'; put 'put ''IiBkZCJcdTY1ZTUiJyxycls1MV09Im1tLWRkIixycls1Ml09Inl5eXktbW0tZGQiLHJyWzUzXT0ieXl5eS1tbS1kZCIscnJbNTRdPSJtbS1kZCIscnJbNTVdPSJ5eXl5LW1tLWRkIixycls1Nl09Inl5eXktbW0tZGQiLHJyWzU3XT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1''@;'; put 'put ''IicscnJbNThdPSJtbS1kZCI7YnJlYWs7Y2FzZSJ0aC10aCI6cnJbNTldPScidCIwJyxycls2MF09JyJ0IjAuMDAnLHJyWzYxXT0nInQiIywjIzAnLHJyWzYyXT0nInQiIywjIzAuMDAnLHJyWzY3XT0idDAlIixycls2OF09InQwLjAwJSIscnJbNjldPSJ0IyA/Lz8iLHJyWzcwXT0idCMgPz8v''@;'; put 'put ''Pz8iLHJyWzcxXT0nXHUwZTI3Ii8iXHUwZTE0Ii8iXHUwZTFiXHUwZTFiXHUwZTFiXHUwZTFiJyxycls3Ml09J1x1MGUyNyItIlx1MGUxNFx1MGUxNFx1MGUxNCItIlx1MGUxYlx1MGUxYicscnJbNzNdPSdcdTBlMjciLSJcdTBlMTRcdTBlMTRcdTBlMTQnLHJyWzc0XT0nXHUwZTE0XHUwZTE0''@;'; put 'put ''XHUwZTE0Ii0iXHUwZTFiXHUwZTFiJyxycls3NV09J1x1MGUwYSI6Ilx1MGUxOVx1MGUxOScscnJbNzZdPSdcdTBlMGEiOiJcdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLHJyWzc3XT0nXHUwZTI3Ii8iXHUwZTE0Ii8iXHUwZTFiXHUwZTFiXHUwZTFiXHUwZTFiIFx1MGUwYSI6Ilx1MGUx''@;'; put 'put ''OVx1MGUxOScscnJbNzhdPSdcdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLHJyWzc5XT0nW1x1MGUwYV1cdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLHJyWzgwXT0nXHUwZTE5XHUwZTE5IjoiXHUwZTE3XHUwZTE3LjAnLHJyWzgxXT0iZC9tL2JiIn19cmUuX2dlbmVyYWxfaW50PWZ1''@;'; put 'put ''bmN0aW9uIFowKHJyKXtyZXR1cm4gcnIudG9TdHJpbmcoMTApfTt2YXIgbjA9ZnVuY3Rpb24oKXt2YXIgRHI9Lyg/OlwuMCp8KFwuXGQqWzEtOV0pMCspJC87ZnVuY3Rpb24gVXIoTTApe3JldHVybi0xPT1NMC5pbmRleE9mKCIuIik/TTA6TTAucmVwbGFjZShEciwiJDEiKX12YXIgaDA9Lyg/''@;'; put 'put ''OlwuMCp8KFwuXGQqWzEtOV0pMCspW0VlXS8sZWk9LyhFWystXSkoXGQpJC87cmV0dXJuIGZ1bmN0aW9uKG1vKXt2YXIgdjA9ZnVuY3Rpb24gTW8oTTApe3ZhciB2MCxtbz1NYXRoLmZsb29yKE1hdGgubG9nKE1hdGguYWJzKE0wKSkqTWF0aC5MT0cxMEUpO3JldHVybiB2MD1tbz49LTQmJm1v''@;'; put 'put ''PD0tMT9NMC50b1ByZWNpc2lvbigxMCttbyk6TWF0aC5hYnMobW8pPD05P2Z1bmN0aW9uIGdpKE0wKXt2YXIgbW89TTA8MD8xMjoxMSx2MD1VcihNMC50b0ZpeGVkKDEyKSk7cmV0dXJuIHYwLmxlbmd0aDw9bW98fCh2MD1NMC50b1ByZWNpc2lvbigxMCkpLmxlbmd0aDw9bW8/djA6TTAudG9F''@;'; put 'put ''eHBvbmVudGlhbCg1KX0oTTApOjEwPT09bW8/TTAudG9GaXhlZCgxMCkuc3Vic3RyKDAsMTIpOmZ1bmN0aW9uICRpKE0wKXt2YXIgbW89VXIoTTAudG9GaXhlZCgxMSkpO3JldHVybiBtby5sZW5ndGg+KE0wPDA/MTI6MTEpfHwiMCI9PT1tb3x8Ii0wIj09PW1vP00wLnRvUHJlY2lzaW9uKDYp''@;'; put 'put ''Om1vfShNMCksVXIoZnVuY3Rpb24gdDAoTTApe3JldHVybi0xPT1NMC5pbmRleE9mKCJFIik/TTA6TTAucmVwbGFjZShoMCwiJDFFIikucmVwbGFjZShlaSwiJDEwJDIiKX0odjAudG9VcHBlckNhc2UoKSkpfShtbyk7cmV0dXJuIiwiPT09YjAmJiIuIj09PWJpP3YwOnYwLnJlcGxhY2UoL1ss''@;'; put 'put ''Ll0vZyxmdW5jdGlvbihDbCl7cmV0dXJuIiwiPT1DbD9iMDpiaX0pfX0oKTtmdW5jdGlvbiBmbyhycixEcil7c3dpdGNoKHR5cGVvZiBycil7Y2FzZSJzdHJpbmciOnJldHVybiBycjtjYXNlImJvb2xlYW4iOnJldHVybiBycj8iVFJVRSI6IkZBTFNFIjtjYXNlIm51bWJlciI6cmV0dXJuKDB8''@;'; put 'put ''cnIpPT09cnI/cnIudG9TdHJpbmcoMTApOm4wKHJyKTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIiI7Y2FzZSJvYmplY3QiOmlmKG51bGw9PXJyKXJldHVybiIiO2lmKHJyIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gVWMoMTQsTXIocnIsRHImJkRyLmRhdGUxOTA0KSxEcil9dGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBpbiBHZW5lcmFsIGZvcm1hdDogIitycil9cmUuX2dlbmVyYWxfbnVtPW4wLHJlLl9nZW5lcmFsPWZvO3ZhciBYMD0iXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5Ii5zcGxpdCgiIik7ZnVu''@;'; put 'put ''Y3Rpb24gemkocnIsRHIsVXIsaDApe3ZhciBNbyxlaT0iIix0MD0wLGdpPTAsJGk9VXIueSxNMD0wO3N3aXRjaChycil7Y2FzZSA5ODokaT1Vci55KzU0MztjYXNlIDEyMTpzd2l0Y2goRHIubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOk1vPSRpJTEwMCxNMD0yO2JyZWFrO2RlZmF1bHQ6TW89JGkl''@;'; put 'put ''MWU0LE0wPTR9YnJlYWs7Y2FzZSAxMDk6c3dpdGNoKERyLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpNbz1Vci5tLE0wPURyLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIENuW1VyLm0tMV1bMV07Y2FzZSA1OnJldHVybiBDbltVci5tLTFdWzBdO2RlZmF1bHQ6cmV0dXJuIENuW1VyLm0tMV1b''@;'; put 'put ''Ml19YnJlYWs7Y2FzZSAxMDA6c3dpdGNoKERyLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpNbz1Vci5kLE0wPURyLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIGFuW1VyLnFdWzBdO2RlZmF1bHQ6cmV0dXJuIGFuW1VyLnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaChEci5sZW5ndGgpe2Nh''@;'; put 'put ''c2UgMTpjYXNlIDI6TW89MSsoVXIuSCsxMSklMTIsTTA9RHIubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGhvdXIgZm9ybWF0OiAiK0RyfWJyZWFrO2Nhc2UgNzI6c3dpdGNoKERyLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpNbz1Vci5ILE0wPURyLmxlbmd0aDticmVhaztkZWZhdWx0''@;'; put 'put ''OnRocm93ImJhZCBob3VyIGZvcm1hdDogIitEcn1icmVhaztjYXNlIDc3OnN3aXRjaChEci5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6TW89VXIuTSxNMD1Eci5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgbWludXRlIGZvcm1hdDogIitEcn1icmVhaztjYXNlIDExNTppZigicyIhPURy''@;'; put 'put ''JiYic3MiIT1EciYmIi4wIiE9RHImJiIuMDAiIT1EciYmIi4wMDAiIT1Ecil0aHJvdyJiYWQgc2Vjb25kIGZvcm1hdDogIitEcjtyZXR1cm4gMCE9PVVyLnV8fCJzIiE9RHImJiJzcyIhPURyPyhnaT1oMD49Mj8zPT09aDA/MWUzOjEwMDoxPT09aDA/MTA6MSwodDA9TWF0aC5yb3VuZChnaSoo''@;'; put 'put ''VXIuUytVci51KSkpPj02MCpnaSYmKHQwPTApLCJzIj09PURyPzA9PT10MD8iMCI6IiIrdDAvZ2k6KGVpPXhlKHQwLDIraDApLCJzcyI9PT1Ecj9laS5zdWJzdHIoMCwyKToiLiIrZWkuc3Vic3RyKDIsRHIubGVuZ3RoLTEpKSk6eGUoVXIuUyxEci5sZW5ndGgpO2Nhc2UgOTA6c3dpdGNoKERy''@;'; put 'put ''KXtjYXNlIltoXSI6Y2FzZSJbaGhdIjpjYXNlIltcdTBlMGFdIjpjYXNlIltcdTBlMGFcdTBlMGFdIjpNbz0yNCpVci5EK1VyLkg7YnJlYWs7Y2FzZSJbbV0iOmNhc2UiW21tXSI6Y2FzZSJbXHUwZTE5XSI6Y2FzZSJbXHUwZTE5XHUwZTE5XSI6TW89NjAqKDI0KlVyLkQrVXIuSCkrVXIuTTti''@;'; put 'put ''cmVhaztjYXNlIltzXSI6Y2FzZSJbc3NdIjpjYXNlIltcdTBlMTddIjpjYXNlIltcdTBlMTdcdTBlMTddIjpNbz02MCooNjAqKDI0KlVyLkQrVXIuSCkrVXIuTSkrTWF0aC5yb3VuZChVci5TK1VyLnUpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGFic3RpbWUgZm9ybWF0OiAiK0RyfU0wPTM9''@;'; put 'put ''PT1Eci5sZW5ndGg/MToyO2JyZWFrO2Nhc2UgMTAxOk1vPSRpLE0wPTE7YnJlYWs7Y2FzZSAzNjIzOk1vPVVyLmQsTTA9RHIubGVuZ3RoO2JyZWFrO2Nhc2UgMzYwNDpzd2l0Y2goRHIubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOk1vPVVyLm0sTTA9RHIubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1''@;'; put 'put ''cm4gQ25bVXIubS0xXVsxXTtjYXNlIDU6cmV0dXJuIENuW1VyLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gQ25bVXIubS0xXVsyXX1icmVhaztjYXNlIDM2MTE6c3dpdGNoKCRpPVVyLnkrNTQzLERyLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpNbz0kaSUxMDAsTTA9MjticmVhaztkZWZhdWx0Ok1v''@;'; put 'put ''PSRpJTFlNCxNMD00fWJyZWFrO2Nhc2UgMzU5NDpNbz1Vci5ILE0wPURyLmxlbmd0aDticmVhaztjYXNlIDM2MDk6TW89VXIuTSxNMD1Eci5sZW5ndGg7YnJlYWs7Y2FzZSAzNjA3Ok1vPVVyLlMsTTA9RHIubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3cgcnIudG9TdHJpbmcoMTYpfXZhciBt''@;'; put 'put ''bz1NMD4wP3hlKE1vLE0wKToiIjtyZXR1cm4oOTA9PXJyP0RyLmNoYXJDb2RlQXQoMSk8MzU4NDpycjwzNTg0KT9tbzptby5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKHYwKXtyZXR1cm4gWDBbK3YwXX0pfWZ1bmN0aW9uIGcwKHJyKXtpZihyci5sZW5ndGg8PTMpcmV0dXJuIHJyO2Zvcih2''@;'; put 'put ''YXIgVXI9cnIubGVuZ3RoJTMsaDA9cnIuc3Vic3RyKDAsVXIpO1VyIT1yci5sZW5ndGg7VXIrPTMpaDArPShoMC5sZW5ndGg+MD8iLCI6IiIpK3JyLnN1YnN0cihVciwzKTtyZXR1cm4gaDB9dmFyIFMwPWZ1bmN0aW9uKCl7dmFyIERyPS8lL2c7ZnVuY3Rpb24gZWkoaHIsWW4pe3ZhciBxbix3''@;'; put 'put ''cj1oci5pbmRleE9mKCJFIiktaHIuaW5kZXhPZigiLiIpLTE7aWYoaHIubWF0Y2goL14jKzAuMEVcKzAkLykpe2lmKDA9PVluKXJldHVybiIwLjBFKzAiO2lmKFluPDApcmV0dXJuIi0iK2VpKGhyLC1Zbik7dmFyIFpyPWhyLmluZGV4T2YoIi4iKTstMT09PVpyJiYoWnI9aHIuaW5kZXhPZigi''@;'; put 'put ''RSIpKTt2YXIgZmk9TWF0aC5mbG9vcihNYXRoLmxvZyhZbikqTWF0aC5MT0cxMEUpJVpyO2lmKGZpPDAmJihmaSs9WnIpLC0xPT09KHFuPShZbi9NYXRoLnBvdygxMCxmaSkpLnRvUHJlY2lzaW9uKHdyKzErKFpyK2ZpKSVacikpLmluZGV4T2YoImUiKSl7dmFyIE9pPU1hdGguZmxvb3IoTWF0''@;'; put 'put ''aC5sb2coWW4pKk1hdGguTE9HMTBFKTtmb3IoLTE9PT1xbi5pbmRleE9mKCIuIik/cW49cW4uY2hhckF0KDApKyIuIitxbi5zdWJzdHIoMSkrIkUrIisoT2ktcW4ubGVuZ3RoK2ZpKTpxbis9IkUrIisoT2ktZmkpOyIwLiI9PT1xbi5zdWJzdHIoMCwyKTspcW49KHFuPXFuLmNoYXJBdCgwKStx''@;'; put 'put ''bi5zdWJzdHIoMixacikrIi4iK3FuLnN1YnN0cigyK1pyKSkucmVwbGFjZSgvXjArKFsxLTldKS8sIiQxIikucmVwbGFjZSgvXjArXC4vLCIwLiIpO3FuPXFuLnJlcGxhY2UoL1wrLS8sIi0iKX1xbj1xbi5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKGMwLFdp''@;'; put 'put ''LFkwLEkwKXtyZXR1cm4gV2krWTArSTAuc3Vic3RyKDAsKFpyK2ZpKSVacikrIi4iK0kwLnN1YnN0cihmaSkrIkUifSl9ZWxzZSBxbj1Zbi50b0V4cG9uZW50aWFsKHdyKTtyZXR1cm4gaHIubWF0Y2goL0VcKzAwJC8pJiZxbi5tYXRjaCgvZVsrLV1cZCQvKSYmKHFuPXFuLnN1YnN0cigwLHFu''@;'; put 'put ''Lmxlbmd0aC0xKSsiMCIrcW4uY2hhckF0KHFuLmxlbmd0aC0xKSksaHIubWF0Y2goL0VcLS8pJiZxbi5tYXRjaCgvZVwrLykmJihxbj1xbi5yZXBsYWNlKC9lXCsvLCJlIikpLHFuLnJlcGxhY2UoImUiLCJFIil9dmFyIHQwPS8jIChcPyspKCA/KVwvKCA/KShcZCspLyxNbz0vXiMqMCpcLihb''@;'; put 'put ''MCNdKykvLE0wPS9cKS4qWzAjXS8sbW89L1woIyMjXCkgIyMjXFw/LSMjIyMvO2Z1bmN0aW9uIHYwKGhyKXtmb3IodmFyIHFuLFluPSIiLHdyPTA7d3IhPWhyLmxlbmd0aDsrK3dyKXN3aXRjaChxbj1oci5jaGFyQ29kZUF0KHdyKSl7Y2FzZSAzNTpicmVhaztjYXNlIDYzOlluKz0iICI7YnJl''@;'; put 'put ''YWs7Y2FzZSA0ODpZbis9IjAiO2JyZWFrO2RlZmF1bHQ6WW4rPVN0cmluZy5mcm9tQ2hhckNvZGUocW4pfXJldHVybiBZbn1mdW5jdGlvbiBDbChocixZbil7dmFyIHFuPU1hdGgucG93KDEwLFluKTtyZXR1cm4iIitNYXRoLnJvdW5kKGhyKnFuKS9xbn1mdW5jdGlvbiBobChocixZbil7aWYo''@;'; put 'put ''WW4+MTEpcmV0dXJuIGhsKGhyLDExKSpNYXRoLnBvdygxMCxZbi0xMSk7dmFyIHFuPWhyLU1hdGguZmxvb3IoaHIpLHdyPU1hdGgucG93KDEwLFluKTtyZXR1cm4gWW48KCIiK01hdGgucm91bmQocW4qd3IpKS5sZW5ndGg/MDpNYXRoLnJvdW5kKHFuKndyKX1mdW5jdGlvbiBJcyhocixZbixx''@;'; put 'put ''bil7aWYoNDA9PT1oci5jaGFyQ29kZUF0KDApJiYhWW4ubWF0Y2goTTApKXt2YXIgd3I9WW4ucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIHFuPj0wP0lzKCJuIix3cixxbik6IigiK0lzKCJuIix3ciwtcW4pKyIpIn1pZig0ND09''@;'; put 'put ''PVluLmNoYXJDb2RlQXQoWW4ubGVuZ3RoLTEpKXJldHVybiBmdW5jdGlvbiBoMChocixZbixxbil7Zm9yKHZhciB3cj1Zbi5sZW5ndGgtMTs0ND09PVluLmNoYXJDb2RlQXQod3ItMSk7KS0td3I7cmV0dXJuIFMwKGhyLFluLnN1YnN0cigwLHdyKSxxbi9NYXRoLnBvdygxMCwzKihZbi5sZW5n''@;'; put 'put ''dGgtd3IpKSl9KGhyLFluLHFuKTtpZigtMSE9PVluLmluZGV4T2YoIiUiKSlyZXR1cm4gZnVuY3Rpb24gVXIoaHIsWW4scW4pe3ZhciB3cj1Zbi5yZXBsYWNlKERyLCIiKSxacj1Zbi5sZW5ndGgtd3IubGVuZ3RoO3JldHVybiBTMChocix3cixxbipNYXRoLnBvdygxMCwyKlpyKSkrd2UoIiUi''@;'; put 'put ''LFpyKX0oaHIsWW4scW4pO2lmKC0xIT09WW4uaW5kZXhPZigiRSIpKXJldHVybiBlaShZbixxbik7aWYoMzY9PT1Zbi5jaGFyQ29kZUF0KDApKXJldHVybiIkIitJcyhocixZbi5zdWJzdHIoIiAiPT1Zbi5jaGFyQXQoMSk/MjoxKSxxbik7dmFyIFpyLGZpLE9pLGMwLFdpPU1hdGguYWJzKHFu''@;'; put 'put ''KSxZMD1xbjwwPyItIjoiIjtpZihZbi5tYXRjaCgvXjAwKyQvKSlyZXR1cm4gWTArSXQoV2ksWW4ubGVuZ3RoKTtpZihZbi5tYXRjaCgvXlsjP10rJC8pKXJldHVybiIwIj09PShacj1JdChxbiwwKSkmJihacj0iIiksWnIubGVuZ3RoPlluLmxlbmd0aD9acjp2MChZbi5zdWJzdHIoMCxZbi5s''@;'; put 'put ''ZW5ndGgtWnIubGVuZ3RoKSkrWnI7aWYoZmk9WW4ubWF0Y2godDApKXJldHVybiBmdW5jdGlvbiBnaShocixZbixxbil7dmFyIHdyPXBhcnNlSW50KGhyWzRdLDEwKSxacj1NYXRoLnJvdW5kKFluKndyKSxmaT1NYXRoLmZsb29yKFpyL3dyKSxPaT1aci1maSp3cixjMD13cjtyZXR1cm4gcW4r''@;'; put 'put ''KDA9PT1maT8iIjoiIitmaSkrIiAiKygwPT09T2k/d2UoIiAiLGhyWzFdLmxlbmd0aCsxK2hyWzRdLmxlbmd0aCk6RmUoT2ksaHJbMV0ubGVuZ3RoKStoclsyXSsiLyIraHJbM10reGUoYzAsaHJbNF0ubGVuZ3RoKSl9KGZpLFdpLFkwKTtpZihZbi5tYXRjaCgvXiMrMCskLykpcmV0dXJuIFkw''@;'; put 'put ''K0l0KFdpLFluLmxlbmd0aC1Zbi5pbmRleE9mKCIwIikpO2lmKGZpPVluLm1hdGNoKE1vKSlyZXR1cm4gWnI9Q2wocW4sZmlbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIit2MChmaVsxXSkpLnJlcGxhY2UoL1wuJC8sIi4iK3YwKGZpWzFdKSkucmVwbGFjZSgvXC4oXGQq''@;'; put 'put ''KSQvLGZ1bmN0aW9uKFZhLEhzKXtyZXR1cm4iLiIrSHMrd2UoIjAiLHYwKGZpWzFdKS5sZW5ndGgtSHMubGVuZ3RoKX0pLC0xIT09WW4uaW5kZXhPZigiMC4iKT9acjpaci5yZXBsYWNlKC9eMFwuLywiLiIpO2lmKFluPVluLnJlcGxhY2UoL14jKyhbMC5dKS8sIiQxIiksZmk9WW4ubWF0Y2go''@;'; put 'put ''L14oMCopXC4oIyopJC8pKXJldHVybiBZMCtDbChXaSxmaVsyXS5sZW5ndGgpLnJlcGxhY2UoL1wuKFxkKlsxLTldKTAqJC8sIi4kMSIpLnJlcGxhY2UoL14oLT9cZCopJC8sIiQxLiIpLnJlcGxhY2UoL14wXC4vLGZpWzFdLmxlbmd0aD8iMC4iOiIuIik7aWYoZmk9WW4ubWF0Y2goL14jezEs''@;'; put 'put ''M30sIyMwKFwuPykkLykpcmV0dXJuIFkwK2cwKEl0KFdpLDApKTtpZihmaT1Zbi5tYXRjaCgvXiMsIyMwXC4oWyMwXSowKSQvKSlyZXR1cm4gcW48MD8iLSIrSXMoaHIsWW4sLXFuKTpnMCgiIisoTWF0aC5mbG9vcihxbikrZnVuY3Rpb24gRjIoaHIsWW4pe3JldHVybiBZbjwoIiIrTWF0aC5y''@;'; put 'put ''b3VuZCgoaHItTWF0aC5mbG9vcihocikpKk1hdGgucG93KDEwLFluKSkpLmxlbmd0aD8xOjB9KHFuLGZpWzFdLmxlbmd0aCkpKSsiLiIreGUoaGwocW4sZmlbMV0ubGVuZ3RoKSxmaVsxXS5sZW5ndGgpO2lmKGZpPVluLm1hdGNoKC9eIywjKiwjMC8pKXJldHVybiBJcyhocixZbi5yZXBsYWNl''@;'; put 'put ''KC9eIywjKiwvLCIiKSxxbik7aWYoZmk9WW4ubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIFpyPVgoSXMoaHIsWW4ucmVwbGFjZSgvW1xcLV0vZywiIikscW4pKSxPaT0wLFgoWChZbi5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKFZh''@;'; put 'put ''KXtyZXR1cm4gT2k8WnIubGVuZ3RoP1pyLmNoYXJBdChPaSsrKToiMCI9PT1WYT8iMCI6IiJ9KSk7aWYoWW4ubWF0Y2gobW8pKXJldHVybiIoIisoWnI9SXMoaHIsIiMjIyMjIyMjIyMiLHFuKSkuc3Vic3RyKDAsMykrIikgIitaci5zdWJzdHIoMywzKSsiLSIrWnIuc3Vic3RyKDYpO3ZhciBJ''@;'; put 'put ''MD0iIjtpZihmaT1Zbi5tYXRjaCgvXihbIzA/XSspKCA/KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIE9pPU1hdGgubWluKGZpWzRdLmxlbmd0aCw3KSxjMD1WbihXaSxNYXRoLnBvdygxMCxPaSktMSwhMSksWnI9IiIrWTAsIiAiPT0oSTA9UzAoIm4iLGZpWzFdLGMwWzFdKSkuY2hhckF0KEkw''@;'; put 'put ''Lmxlbmd0aC0xKSYmKEkwPUkwLnN1YnN0cigwLEkwLmxlbmd0aC0xKSsiMCIpLFpyKz1JMCtmaVsyXSsiLyIrZmlbM10sKEkwPVplKGMwWzJdLE9pKSkubGVuZ3RoPGZpWzRdLmxlbmd0aCYmKEkwPXYwKGZpWzRdLnN1YnN0cihmaVs0XS5sZW5ndGgtSTAubGVuZ3RoKSkrSTApLFpyKz1JMDtp''@;'; put 'put ''ZihmaT1Zbi5tYXRjaCgvXiMgKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gT2k9TWF0aC5taW4oTWF0aC5tYXgoZmlbMV0ubGVuZ3RoLGZpWzRdLmxlbmd0aCksNyksWTArKChjMD1WbihXaSxNYXRoLnBvdygxMCxPaSktMSwhMCkpWzBdfHwoYzBbMV0/IiI6IjAiKSkrIiAi''@;'; put 'put ''KyhjMFsxXT9GZShjMFsxXSxPaSkrZmlbMl0rIi8iK2ZpWzNdK1plKGMwWzJdLE9pKTp3ZSgiICIsMipPaSsxK2ZpWzJdLmxlbmd0aCtmaVszXS5sZW5ndGgpKTtpZihmaT1Zbi5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gWnI9SXQocW4sMCksWW4ubGVuZ3RoPD1aci5sZW5ndGg/WnI6djAo''@;'; put 'put ''WW4uc3Vic3RyKDAsWW4ubGVuZ3RoLVpyLmxlbmd0aCkpK1pyO2lmKGZpPVluLm1hdGNoKC9eKFsjMD9dKylcLihbIzBdKykkLykpe1pyPSIiK3FuLnRvRml4ZWQoTWF0aC5taW4oZmlbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLywiJDEiKSxPaT1aci5pbmRleE9mKCIuIik7''@;'; put 'put ''dmFyIHRhPVluLmluZGV4T2YoIi4iKS1PaSxabz1Zbi5sZW5ndGgtWnIubGVuZ3RoLXRhO3JldHVybiB2MChZbi5zdWJzdHIoMCx0YSkrWnIrWW4uc3Vic3RyKFluLmxlbmd0aC1abykpfWlmKGZpPVluLm1hdGNoKC9eMDAsMDAwXC4oWyMwXSowKSQvKSlyZXR1cm4gT2k9aGwocW4sZmlbMV0u''@;'; put 'put ''bGVuZ3RoKSxxbjwwPyItIitJcyhocixZbiwtcW4pOmcwKGZ1bmN0aW9uIE0yKGhyKXtyZXR1cm4gaHI8MjE0NzQ4MzY0NyYmaHI+LTIxNDc0ODM2NDg/IiIrKGhyPj0wPzB8aHI6aHItMXwwKToiIitNYXRoLmZsb29yKGhyKX0ocW4pKS5yZXBsYWNlKC9eXGQsXGR7M30kLywiMCQmIikucmVw''@;'; put 'put ''bGFjZSgvXlxkKiQvLGZ1bmN0aW9uKFZhKXtyZXR1cm4iMDAsIisoVmEubGVuZ3RoPDM/eGUoMCwzLVZhLmxlbmd0aCk6IiIpK1ZhfSkrIi4iK3hlKE9pLGZpWzFdLmxlbmd0aCk7c3dpdGNoKFluKXtjYXNlIiMjIywjIzAuMDAiOnJldHVybiBJcyhociwiIywjIzAuMDAiLHFuKTtjYXNlIiMj''@;'; put 'put ''IywjIyMiOmNhc2UiIyMsIyMjIjpjYXNlIiMsIyMjIjp2YXIgdm89ZzAoSXQoV2ksMCkpO3JldHVybiIwIiE9PXZvP1kwK3ZvOiIiO2Nhc2UiIyMjLCMjIy4wMCI6cmV0dXJuIElzKGhyLCIjIyMsIyMwLjAwIixxbikucmVwbGFjZSgvXjBcLi8sIi4iKTtjYXNlIiMsIyMjLjAwIjpyZXR1cm4g''@;'; put 'put ''SXMoaHIsIiMsIyMwLjAwIixxbikucmVwbGFjZSgvXjBcLi8sIi4iKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGZvcm1hdCB8IitZbisifCIpfWZ1bmN0aW9uIHNyKGhyLFluKXt2YXIgcW4sd3I9aHIuaW5kZXhPZigiRSIpLWhyLmluZGV4T2YoIi4iKS0xO2lmKGhyLm1hdGNoKC9e''@;'; put 'put ''IyswLjBFXCswJC8pKXtpZigwPT1ZbilyZXR1cm4iMC4wRSswIjtpZihZbjwwKXJldHVybiItIitzcihociwtWW4pO3ZhciBacj1oci5pbmRleE9mKCIuIik7LTE9PT1aciYmKFpyPWhyLmluZGV4T2YoIkUiKSk7dmFyIGZpPU1hdGguZmxvb3IoTWF0aC5sb2coWW4pKk1hdGguTE9HMTBFKSVa''@;'; put 'put ''cjtpZihmaTwwJiYoZmkrPVpyKSwhKHFuPShZbi9NYXRoLnBvdygxMCxmaSkpLnRvUHJlY2lzaW9uKHdyKzErKFpyK2ZpKSVacikpLm1hdGNoKC9bRWVdLykpe3ZhciBPaT1NYXRoLmZsb29yKE1hdGgubG9nKFluKSpNYXRoLkxPRzEwRSk7LTE9PT1xbi5pbmRleE9mKCIuIik/cW49cW4uY2hh''@;'; put 'put ''ckF0KDApKyIuIitxbi5zdWJzdHIoMSkrIkUrIisoT2ktcW4ubGVuZ3RoK2ZpKTpxbis9IkUrIisoT2ktZmkpLHFuPXFuLnJlcGxhY2UoL1wrLS8sIi0iKX1xbj1xbi5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKGMwLFdpLFkwLEkwKXtyZXR1cm4gV2krWTAr''@;'; put 'put ''STAuc3Vic3RyKDAsKFpyK2ZpKSVacikrIi4iK0kwLnN1YnN0cihmaSkrIkUifSl9ZWxzZSBxbj1Zbi50b0V4cG9uZW50aWFsKHdyKTtyZXR1cm4gaHIubWF0Y2goL0VcKzAwJC8pJiZxbi5tYXRjaCgvZVsrLV1cZCQvKSYmKHFuPXFuLnN1YnN0cigwLHFuLmxlbmd0aC0xKSsiMCIrcW4uY2hh''@;'; put 'put ''ckF0KHFuLmxlbmd0aC0xKSksaHIubWF0Y2goL0VcLS8pJiZxbi5tYXRjaCgvZVwrLykmJihxbj1xbi5yZXBsYWNlKC9lXCsvLCJlIikpLHFuLnJlcGxhY2UoImUiLCJFIil9ZnVuY3Rpb24gUHIoaHIsWW4scW4pe2lmKDQwPT09aHIuY2hhckNvZGVBdCgwKSYmIVluLm1hdGNoKE0wKSl7dmFy''@;'; put 'put ''IHdyPVluLnJlcGxhY2UoL1woICovLCIiKS5yZXBsYWNlKC8gXCkvLCIiKS5yZXBsYWNlKC9cKS8sIiIpO3JldHVybiBxbj49MD9QcigibiIsd3IscW4pOiIoIitQcigibiIsd3IsLXFuKSsiKSJ9aWYoNDQ9PT1Zbi5jaGFyQ29kZUF0KFluLmxlbmd0aC0xKSlyZXR1cm4gZnVuY3Rpb24gZzUo''@;'; put 'put ''aHIsWW4scW4pe2Zvcih2YXIgd3I9WW4ubGVuZ3RoLTE7NDQ9PT1Zbi5jaGFyQ29kZUF0KHdyLTEpOyktLXdyO3JldHVybiBTMChocixZbi5zdWJzdHIoMCx3cikscW4vTWF0aC5wb3coMTAsMyooWW4ubGVuZ3RoLXdyKSkpfShocixZbixxbik7aWYoLTEhPT1Zbi5pbmRleE9mKCIlIikpcmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIHE0KGhyLFluLHFuKXt2YXIgd3I9WW4ucmVwbGFjZShEciwiIiksWnI9WW4ubGVuZ3RoLXdyLmxlbmd0aDtyZXR1cm4gUzAoaHIsd3IscW4qTWF0aC5wb3coMTAsMipacikpK3dlKCIlIixacil9KGhyLFluLHFuKTtpZigtMSE9PVluLmluZGV4T2YoIkUiKSlyZXR1cm4g''@;'; put 'put ''c3IoWW4scW4pO2lmKDM2PT09WW4uY2hhckNvZGVBdCgwKSlyZXR1cm4iJCIrUHIoaHIsWW4uc3Vic3RyKCIgIj09WW4uY2hhckF0KDEpPzI6MSkscW4pO3ZhciBacixmaSxPaSxjMCxXaT1NYXRoLmFicyhxbiksWTA9cW48MD8iLSI6IiI7aWYoWW4ubWF0Y2goL14wMCskLykpcmV0dXJuIFkw''@;'; put 'put ''K3hlKFdpLFluLmxlbmd0aCk7aWYoWW4ubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4gWnI9IiIrcW4sMD09PXFuJiYoWnI9IiIpLFpyLmxlbmd0aD5Zbi5sZW5ndGg/WnI6djAoWW4uc3Vic3RyKDAsWW4ubGVuZ3RoLVpyLmxlbmd0aCkpK1pyO2lmKGZpPVluLm1hdGNoKHQwKSlyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gJGkoaHIsWW4scW4pe3JldHVybiBxbisoMD09PVluPyIiOiIiK1luKSt3ZSgiICIsaHJbMV0ubGVuZ3RoKzIraHJbNF0ubGVuZ3RoKX0oZmksV2ksWTApO2lmKFluLm1hdGNoKC9eIyswKyQvKSlyZXR1cm4gWTAreGUoV2ksWW4ubGVuZ3RoLVluLmluZGV4T2YoIjAiKSk7aWYoZmk9''@;'; put 'put ''WW4ubWF0Y2goTW8pKXJldHVybiBacj0oWnI9KCIiK3FuKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIit2MChmaVsxXSkpLnJlcGxhY2UoL1wuJC8sIi4iK3YwKGZpWzFdKSkpLnJlcGxhY2UoL1wuKFxkKikkLyxmdW5jdGlvbihWYSxIcyl7cmV0dXJuIi4iK0hzK3dlKCIwIix2MChmaVsx''@;'; put 'put ''XSkubGVuZ3RoLUhzLmxlbmd0aCl9KSwtMSE9PVluLmluZGV4T2YoIjAuIik/WnI6WnIucmVwbGFjZSgvXjBcLi8sIi4iKTtpZihZbj1Zbi5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLGZpPVluLm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4gWTArKCIiK1dpKS5yZXBsYWNlKC9cLihc''@;'; put 'put ''ZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxmaVsxXS5sZW5ndGg/IjAuIjoiLiIpO2lmKGZpPVluLm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBZMCtnMCgiIitXaSk7aWYoZmk9WW4ubWF0Y2goL14jLCMjMFwu''@;'; put 'put ''KFsjMF0qMCkkLykpcmV0dXJuIHFuPDA/Ii0iK1ByKGhyLFluLC1xbik6ZzAoIiIrcW4pKyIuIit3ZSgiMCIsZmlbMV0ubGVuZ3RoKTtpZihmaT1Zbi5tYXRjaCgvXiMsIyosIzAvKSlyZXR1cm4gUHIoaHIsWW4ucmVwbGFjZSgvXiMsIyosLywiIikscW4pO2lmKGZpPVluLm1hdGNoKC9eKFsw''@;'; put 'put ''I10rKShcXD8tKFswI10rKSkrJC8pKXJldHVybiBacj1YKFByKGhyLFluLnJlcGxhY2UoL1tcXC1dL2csIiIpLHFuKSksT2k9MCxYKFgoWW4ucmVwbGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbihWYSl7cmV0dXJuIE9pPFpyLmxlbmd0aD9aci5jaGFyQXQoT2krKyk6''@;'; put 'put ''IjAiPT09VmE/IjAiOiIifSkpO2lmKFluLm1hdGNoKG1vKSlyZXR1cm4iKCIrKFpyPVByKGhyLCIjIyMjIyMjIyMjIixxbikpLnN1YnN0cigwLDMpKyIpICIrWnIuc3Vic3RyKDMsMykrIi0iK1pyLnN1YnN0cig2KTt2YXIgSTA9IiI7aWYoZmk9WW4ubWF0Y2goL14oWyMwP10rKSggPylcLygg''@;'; put 'put ''PykoWyMwP10rKS8pKXJldHVybiBPaT1NYXRoLm1pbihmaVs0XS5sZW5ndGgsNyksYzA9Vm4oV2ksTWF0aC5wb3coMTAsT2kpLTEsITEpLFpyPSIiK1kwLCIgIj09KEkwPVMwKCJuIixmaVsxXSxjMFsxXSkpLmNoYXJBdChJMC5sZW5ndGgtMSkmJihJMD1JMC5zdWJzdHIoMCxJMC5sZW5ndGgt''@;'; put 'put ''MSkrIjAiKSxacis9STArZmlbMl0rIi8iK2ZpWzNdLChJMD1aZShjMFsyXSxPaSkpLmxlbmd0aDxmaVs0XS5sZW5ndGgmJihJMD12MChmaVs0XS5zdWJzdHIoZmlbNF0ubGVuZ3RoLUkwLmxlbmd0aCkpK0kwKSxacis9STA7aWYoZmk9WW4ubWF0Y2goL14jIChbIzA/XSspKCA/KVwvKCA/KShb''@;'; put 'put ''IzA/XSspLykpcmV0dXJuIE9pPU1hdGgubWluKE1hdGgubWF4KGZpWzFdLmxlbmd0aCxmaVs0XS5sZW5ndGgpLDcpLFkwKygoYzA9Vm4oV2ksTWF0aC5wb3coMTAsT2kpLTEsITApKVswXXx8KGMwWzFdPyIiOiIwIikpKyIgIisoYzBbMV0/RmUoYzBbMV0sT2kpK2ZpWzJdKyIvIitmaVszXSta''@;'; put 'put ''ZShjMFsyXSxPaSk6d2UoIiAiLDIqT2krMStmaVsyXS5sZW5ndGgrZmlbM10ubGVuZ3RoKSk7aWYoZmk9WW4ubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIFluLmxlbmd0aDw9KFpyPSIiK3FuKS5sZW5ndGg/WnI6djAoWW4uc3Vic3RyKDAsWW4ubGVuZ3RoLVpyLmxlbmd0aCkpK1pyO2lmKGZp''@;'; put 'put ''PVluLm1hdGNoKC9eKFsjMF0rKVwuKFsjMF0rKSQvKSl7WnI9IiIrcW4udG9GaXhlZChNYXRoLm1pbihmaVsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLCIkMSIpLE9pPVpyLmluZGV4T2YoIi4iKTt2YXIgdGE9WW4uaW5kZXhPZigiLiIpLU9pLFpvPVluLmxlbmd0aC1aci5s''@;'; put 'put ''ZW5ndGgtdGE7cmV0dXJuIHYwKFluLnN1YnN0cigwLHRhKStacitZbi5zdWJzdHIoWW4ubGVuZ3RoLVpvKSl9aWYoZmk9WW4ubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiBxbjwwPyItIitQcihocixZbiwtcW4pOmcwKCIiK3FuKS5yZXBsYWNlKC9eXGQsXGR7M30kLywiMCQm''@;'; put 'put ''IikucmVwbGFjZSgvXlxkKiQvLGZ1bmN0aW9uKFZhKXtyZXR1cm4iMDAsIisoVmEubGVuZ3RoPDM/eGUoMCwzLVZhLmxlbmd0aCk6IiIpK1ZhfSkrIi4iK3hlKDAsZmlbMV0ubGVuZ3RoKTt2YXIgdm89ZzAoIiIrV2kpO3N3aXRjaChZbil7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2Fz''@;'; put 'put ''ZSIjLCMjIyI6cmV0dXJuIjAiIT09dm8/WTArdm86IiI7Y2FzZSIjLCMwMCI6cmV0dXJuIjAwIiE9PSh2bz14ZSh2bywyKSk/WTArdm86IiI7ZGVmYXVsdDppZihZbi5tYXRjaCgvXC5bMCM/XSokLykpcmV0dXJuIFByKGhyLFluLnNsaWNlKDAsWW4ubGFzdEluZGV4T2YoIi4iKSkscW4pK3Yw''@;'; put 'put ''KFluLnNsaWNlKFluLmxhc3RJbmRleE9mKCIuIikpKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGZvcm1hdCB8IitZbisifCIpfXJldHVybiBmdW5jdGlvbihZbixxbix3cil7cmV0dXJuIjAsMCI9PXFuJiYocW49IiMsIzAwIiksKDB8d3IpPT09d3I/UHIoWW4scW4sd3IpOklzKFlu''@;'; put 'put ''LHFuLHdyKX19KCk7ZnVuY3Rpb24gQWkocnIpe2Zvcih2YXIgRHI9W10sVXI9ITEsaDA9MCxlaT0wO2gwPHJyLmxlbmd0aDsrK2gwKXN3aXRjaChyci5jaGFyQ29kZUF0KGgwKSl7Y2FzZSAzNDpVcj0hVXI7YnJlYWs7Y2FzZSA5NTpjYXNlIDQyOmNhc2UgOTI6KytoMDticmVhaztjYXNlIDU5''@;'; put 'put ''OkRyW0RyLmxlbmd0aF09cnIuc3Vic3RyKGVpLGgwLWVpKSxlaT1oMCsxfWlmKERyW0RyLmxlbmd0aF09cnIuc3Vic3RyKGVpKSwhMD09PVVyKXRocm93IG5ldyBFcnJvcigiRm9ybWF0IHwiK3JyKyJ8IHVudGVybWluYXRlZCBzdHJpbmcgIik7cmV0dXJuIERyfXJlLl9zcGxpdD1BaTt2YXIg''@;'; put 'put ''eDA9L1xbW0hoTW1Tc1x1MEUwQVx1MEUxOVx1MEUxN10qXF0vO2Z1bmN0aW9uIGYwKHJyKXtmb3IodmFyIERyPTAsVXI9IiIsaDA9IiI7RHI8cnIubGVuZ3RoOylzd2l0Y2goVXI9cnIuY2hhckF0KERyKSl7Y2FzZSJHIjpQdChycixEcikmJihEcis9NiksRHIrKzticmVhaztjYXNlJyInOmZv''@;'; put 'put ''cig7MzQhPT1yci5jaGFyQ29kZUF0KCsrRHIpJiZEcjxyci5sZW5ndGg7KTsrK0RyO2JyZWFrO2Nhc2UiXFwiOmNhc2UiXyI6RHIrPTI7YnJlYWs7Y2FzZSJAIjorK0RyO2JyZWFrO2Nhc2UiQiI6Y2FzZSJiIjppZigiMSI9PT1yci5jaGFyQXQoRHIrMSl8fCIyIj09PXJyLmNoYXJBdChEcisx''@;'; put 'put ''KSlyZXR1cm4hMDtjYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOnJldHVybiEwO2Nhc2UiQSI6Y2FzZSJhIjpjYXNlIlx1NGUwYSI6aWYoIkEvUCI9PT1y''@;'; put 'put ''ci5zdWJzdHIoRHIsMykudG9VcHBlckNhc2UoKXx8IkFNL1BNIj09PXJyLnN1YnN0cihEciw1KS50b1VwcGVyQ2FzZSgpfHwiXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCI9PT1yci5zdWJzdHIoRHIsNSkudG9VcHBlckNhc2UoKSlyZXR1cm4hMDsrK0RyO2JyZWFrO2Nhc2UiWyI6Zm9yKGgw''@;'; put 'put ''PVVyOyJdIiE9PXJyLmNoYXJBdChEcisrKSYmRHI8cnIubGVuZ3RoOyloMCs9cnIuY2hhckF0KERyKTtpZihoMC5tYXRjaCh4MCkpcmV0dXJuITA7YnJlYWs7Y2FzZSIuIjpjYXNlIjAiOmNhc2UiIyI6Zm9yKDtEcjxyci5sZW5ndGgmJigiMCM/LixFKy0lIi5pbmRleE9mKFVyPXJyLmNoYXJB''@;'; put 'put ''dCgrK0RyKSk+LTF8fCJcXCI9PVVyJiYiLSI9PXJyLmNoYXJBdChEcisxKSYmIjAjIi5pbmRleE9mKHJyLmNoYXJBdChEcisyKSk+LTEpOyk7YnJlYWs7Y2FzZSI/Ijpmb3IoO3JyLmNoYXJBdCgrK0RyKT09PVVyOyk7YnJlYWs7Y2FzZSIqIjorK0RyLCgiICI9PXJyLmNoYXJBdChEcil8fCIq''@;'; put 'put ''Ij09cnIuY2hhckF0KERyKSkmJisrRHI7YnJlYWs7Y2FzZSIoIjpjYXNlIikiOisrRHI7YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Zm9yKDtEcjxyci5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRl''@;'; put 'put ''eE9mKHJyLmNoYXJBdCgrK0RyKSk+LTE7KTticmVhaztkZWZhdWx0OisrRHJ9cmV0dXJuITF9ZnVuY3Rpb24ganIocnIsRHIsVXIsaDApe2Zvcih2YXIgTTAsbW8sdjAsZWk9W10sdDA9IiIsZ2k9MCwkaT0iIixNbz0idCIsQ2w9IkgiO2dpPHJyLmxlbmd0aDspc3dpdGNoKCRpPXJyLmNoYXJB''@;'; put 'put ''dChnaSkpe2Nhc2UiRyI6aWYoIVB0KHJyLGdpKSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBjaGFyYWN0ZXIgIiskaSsiIGluICIrcnIpO2VpW2VpLmxlbmd0aF09e3Q6IkciLHY6IkdlbmVyYWwifSxnaSs9NzticmVhaztjYXNlJyInOmZvcih0MD0iIjszNCE9PSh2MD1yci5jaGFy''@;'; put 'put ''Q29kZUF0KCsrZ2kpKSYmZ2k8cnIubGVuZ3RoOyl0MCs9U3RyaW5nLmZyb21DaGFyQ29kZSh2MCk7ZWlbZWkubGVuZ3RoXT17dDoidCIsdjp0MH0sKytnaTticmVhaztjYXNlIlxcIjp2YXIgaGw9cnIuY2hhckF0KCsrZ2kpO2VpW2VpLmxlbmd0aF09e3Q6IigiPT09aGx8fCIpIj09PWhsP2hs''@;'; put 'put ''OiJ0Iix2OmhsfSwrK2dpO2JyZWFrO2Nhc2UiXyI6ZWlbZWkubGVuZ3RoXT17dDoidCIsdjoiICJ9LGdpKz0yO2JyZWFrO2Nhc2UiQCI6ZWlbZWkubGVuZ3RoXT17dDoiVCIsdjpEcn0sKytnaTticmVhaztjYXNlIkIiOmNhc2UiYiI6aWYoIjEiPT09cnIuY2hhckF0KGdpKzEpfHwiMiI9PT1y''@;'; put 'put ''ci5jaGFyQXQoZ2krMSkpe2lmKG51bGw9PU0wJiZudWxsPT0oTTA9SXIoRHIsVXIsIjIiPT09cnIuY2hhckF0KGdpKzEpKSkpcmV0dXJuIiI7ZWlbZWkubGVuZ3RoXT17dDoiWCIsdjpyci5zdWJzdHIoZ2ksMil9LE1vPSRpLGdpKz0yO2JyZWFrfWNhc2UiTSI6Y2FzZSJEIjpjYXNlIlkiOmNh''@;'; put 'put ''c2UiSCI6Y2FzZSJTIjpjYXNlIkUiOiRpPSRpLnRvTG93ZXJDYXNlKCk7Y2FzZSJtIjpjYXNlImQiOmNhc2UieSI6Y2FzZSJoIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlIlx1MGUyNyI6Y2FzZSJcdTBlMTQiOmNhc2UiXHUwZTFiIjpjYXNlIlx1MGUwYSI6Y2FzZSJcdTBlMTkiOmNh''@;'; put 'put ''c2UiXHUwZTE3IjppZihEcjwwfHxudWxsPT1NMCYmbnVsbD09KE0wPUlyKERyLFVyKSkpcmV0dXJuIiI7Zm9yKHQwPSRpOysrZ2k8cnIubGVuZ3RoJiZyci5jaGFyQXQoZ2kpLnRvTG93ZXJDYXNlKCk9PT0kaTspdDArPSRpOyJtIj09PSRpJiYiaCI9PT1Nby50b0xvd2VyQ2FzZSgpJiYoJGk9''@;'; put 'put ''Ik0iKSwiaCI9PT0kaSYmKCRpPUNsKSxlaVtlaS5sZW5ndGhdPXt0OiRpLHY6dDB9LE1vPSRpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjYXNlIlx1NGUwYSI6dmFyIE0yPXt0OiRpLHY6JGl9O2lmKG51bGw9PU0wJiYoTTA9SXIoRHIsVXIpKSwiQS9QIj09PXJyLnN1YnN0cihnaSwzKS50b1Vw''@;'; put 'put ''cGVyQ2FzZSgpPyhudWxsIT1NMCYmKE0yLnY9TTAuSD49MTI/IlAiOiJBIiksTTIudD0iVCIsQ2w9ImgiLGdpKz0zKToiQU0vUE0iPT09cnIuc3Vic3RyKGdpLDUpLnRvVXBwZXJDYXNlKCk/KG51bGwhPU0wJiYoTTIudj1NMC5IPj0xMj8iUE0iOiJBTSIpLE0yLnQ9IlQiLGdpKz01LENsPSJo''@;'; put 'put ''Iik6Ilx1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDgiPT09cnIuc3Vic3RyKGdpLDUpLnRvVXBwZXJDYXNlKCk/KG51bGwhPU0wJiYoTTIudj1NMC5IPj0xMj8iXHU0ZTBiXHU1MzQ4IjoiXHU0ZTBhXHU1MzQ4IiksTTIudD0iVCIsZ2krPTUsQ2w9ImgiKTooTTIudD0idCIsKytnaSksbnVsbD09''@;'; put 'put ''TTAmJiJUIj09PU0yLnQpcmV0dXJuIiI7ZWlbZWkubGVuZ3RoXT1NMixNbz0kaTticmVhaztjYXNlIlsiOmZvcih0MD0kaTsiXSIhPT1yci5jaGFyQXQoZ2krKykmJmdpPHJyLmxlbmd0aDspdDArPXJyLmNoYXJBdChnaSk7aWYoIl0iIT09dDAuc2xpY2UoLTEpKXRocm93J3VudGVybWluYXRl''@;'; put 'put ''ZCAiWyIgYmxvY2s6IHwnK3QwKyJ8IjtpZih0MC5tYXRjaCh4MCkpe2lmKG51bGw9PU0wJiZudWxsPT0oTTA9SXIoRHIsVXIpKSlyZXR1cm4iIjtlaVtlaS5sZW5ndGhdPXt0OiJaIix2OnQwLnRvTG93ZXJDYXNlKCl9LE1vPXQwLmNoYXJBdCgxKX1lbHNlIHQwLmluZGV4T2YoIiQiKT4tMSYm''@;'; put 'put ''KHQwPSh0MC5tYXRjaCgvXCQoW14tXFtcXV0qKS8pfHxbXSlbMV18fCIkIixmMChycil8fChlaVtlaS5sZW5ndGhdPXt0OiJ0Iix2OnQwfSkpO2JyZWFrO2Nhc2UiLiI6aWYobnVsbCE9TTApe2Zvcih0MD0kaTsrK2dpPHJyLmxlbmd0aCYmIjAiPT09KCRpPXJyLmNoYXJBdChnaSkpOyl0MCs9''@;'; put 'put ''JGk7ZWlbZWkubGVuZ3RoXT17dDoicyIsdjp0MH07YnJlYWt9Y2FzZSIwIjpjYXNlIiMiOmZvcih0MD0kaTsrK2dpPHJyLmxlbmd0aCYmIjAjPy4sRSstJSIuaW5kZXhPZigkaT1yci5jaGFyQXQoZ2kpKT4tMTspdDArPSRpO2VpW2VpLmxlbmd0aF09e3Q6Im4iLHY6dDB9O2JyZWFrO2Nhc2Ui''@;'; put 'put ''PyI6Zm9yKHQwPSRpO3JyLmNoYXJBdCgrK2dpKT09PSRpOyl0MCs9JGk7ZWlbZWkubGVuZ3RoXT17dDokaSx2OnQwfSxNbz0kaTticmVhaztjYXNlIioiOisrZ2ksKCIgIj09cnIuY2hhckF0KGdpKXx8IioiPT1yci5jaGFyQXQoZ2kpKSYmKytnaTticmVhaztjYXNlIigiOmNhc2UiKSI6ZWlb''@;'; put 'put ''ZWkubGVuZ3RoXT17dDoxPT09aDA/InQiOiRpLHY6JGl9LCsrZ2k7YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Zm9yKHQwPSRpO2dpPHJyLmxlbmd0aCYmIjAxMjM0NTY3ODkiLmluZGV4T2YocnIu''@;'; put 'put ''Y2hhckF0KCsrZ2kpKT4tMTspdDArPXJyLmNoYXJBdChnaSk7ZWlbZWkubGVuZ3RoXT17dDoiRCIsdjp0MH07YnJlYWs7Y2FzZSIgIjplaVtlaS5sZW5ndGhdPXt0OiRpLHY6JGl9LCsrZ2k7YnJlYWs7Y2FzZSIkIjplaVtlaS5sZW5ndGhdPXt0OiJ0Iix2OmhpfSwrK2dpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''LyI6ZWlbZWkubGVuZ3RoXT1laS5sZW5ndGg+MCYmZjAoZWlbZWkubGVuZ3RoLTFdLnYpP3t0OiJ0Iix2OnpyfTp7dDoidCIsdjoiLyJ9LCsrZ2k7YnJlYWs7ZGVmYXVsdDppZigtMT09PSIsJC0rLygpOiFeJid+e308Pj1cdTIwYWNhY2Zpamtsb3BxcnR1dnd4elAiLmluZGV4T2YoJGkpKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIGNoYXJhY3RlciAiKyRpKyIgaW4gIitycik7ZWlbZWkubGVuZ3RoXT17dDoidCIsdjokaX0sKytnaX12YXIgcTQsSXM9MCxnNT0wO2ZvcihnaT1laS5sZW5ndGgtMSxNbz0idCI7Z2k+PTA7LS1naSlzd2l0Y2goZWlbZ2ldLnQpe2Nhc2UiaCI6''@;'; put 'put ''Y2FzZSJIIjplaVtnaV0udD1DbCxNbz0iaCIsSXM8MSYmKElzPTEpO2JyZWFrO2Nhc2UicyI6KHE0PWVpW2dpXS52Lm1hdGNoKC9cLjArJC8pKSYmKGc1PU1hdGgubWF4KGc1LHE0WzBdLmxlbmd0aC0xKSksSXM8MyYmKElzPTMpO2Nhc2UiZCI6Y2FzZSJ5IjpjYXNlIk0iOmNhc2UiZSI6TW89''@;'; put 'put ''ZWlbZ2ldLnQ7YnJlYWs7Y2FzZSJtIjoicyI9PT1NbyYmKGVpW2dpXS50PSJNIixJczwyJiYoSXM9MikpO2JyZWFrO2Nhc2UiWCI6YnJlYWs7Y2FzZSJaIjpJczwxJiZlaVtnaV0udi5tYXRjaCgvW0hoXS8pJiYoSXM9MSksSXM8MiYmZWlbZ2ldLnYubWF0Y2goL1tNbV0vKSYmKElzPTIpLElz''@;'; put 'put ''PDMmJmVpW2dpXS52Lm1hdGNoKC9bU3NdLykmJihJcz0zKX1zd2l0Y2goSXMpe2Nhc2UgMDpicmVhaztjYXNlIDE6TTAudT49LjUmJihNMC51PTAsKytNMC5TKSxNMC5TPj02MCYmKE0wLlM9MCwrK00wLk0pLE0wLk0+PTYwJiYoTTAuTT0wLCsrTTAuSCk7YnJlYWs7Y2FzZSAyOk0wLnU+PS41''@;'; put 'put ''JiYoTTAudT0wLCsrTTAuUyksTTAuUz49NjAmJihNMC5TPTAsKytNMC5NKX12YXIgUHIsc3I9IiI7Zm9yKGdpPTA7Z2k8ZWkubGVuZ3RoOysrZ2kpc3dpdGNoKGVpW2dpXS50KXtjYXNlInQiOmNhc2UiVCI6Y2FzZSIgIjpjYXNlIkQiOmJyZWFrO2Nhc2UiWCI6ZWlbZ2ldLnY9IiIsZWlbZ2ld''@;'; put 'put ''LnQ9IjsiO2JyZWFrO2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJIIjpjYXNlIk0iOmNhc2UicyI6Y2FzZSJlIjpjYXNlImIiOmNhc2UiWiI6Y2FzZSJcdTBlMjciOmNhc2UiXHUwZTE0IjpjYXNlIlx1MGUxYiI6Y2FzZSJcdTBlMGEiOmNhc2UiXHUwZTE5IjpjYXNlIlx1''@;'; put 'put ''MGUxNyI6ZWlbZ2ldLnY9emkoZWlbZ2ldLnQuY2hhckNvZGVBdCgwKSxlaVtnaV0udixNMCxnNSksZWlbZ2ldLnQ9InQiO2JyZWFrO2Nhc2UibiI6Y2FzZSI/Ijpmb3IoUHI9Z2krMTtudWxsIT1laVtQcl0mJigiPyI9PT0oJGk9ZWlbUHJdLnQpfHwiRCI9PT0kaXx8KCIgIj09PSRpfHwidCI9''@;'; put 'put ''PT0kaSkmJm51bGwhPWVpW1ByKzFdJiYoIj8iPT09ZWlbUHIrMV0udHx8InQiPT09ZWlbUHIrMV0udCYmIi8iPT09ZWlbUHIrMV0udil8fCIoIj09PWVpW2dpXS50JiYoIiAiPT09JGl8fCJuIj09PSRpfHwiKSI9PT0kaSl8fCJ0Ij09PSRpJiYoIi8iPT09ZWlbUHJdLnZ8fCIgIj09PWVpW1By''@;'; put 'put ''XS52JiZudWxsIT1laVtQcisxXSYmIj8iPT1laVtQcisxXS50KSk7KWVpW2dpXS52Kz1laVtQcl0udixlaVtQcl09e3Y6IiIsdDoiOyJ9LCsrUHI7c3IrPWVpW2dpXS52LGdpPVByLTE7YnJlYWs7Y2FzZSJHIjplaVtnaV0udD0idCIsZWlbZ2ldLnY9Zm8oRHIsVXIpfXZhciBZbixxbixocj0i''@;'; put 'put ''IjtpZihzci5sZW5ndGg+MCl7NDA9PXNyLmNoYXJDb2RlQXQoMCk/KFluPURyPDAmJjQ1PT09c3IuY2hhckNvZGVBdCgwKT8tRHI6RHIscW49UzAoIm4iLHNyLFluKSk6KHFuPVMwKCJuIixzcixZbj1EcjwwJiZoMD4xPy1EcjpEciksWW48MCYmZWlbMF0mJiJ0Ij09ZWlbMF0udCYmKHFuPXFu''@;'; put 'put ''LnN1YnN0cigxKSxlaVswXS52PSItIitlaVswXS52KSksUHI9KHFuPXFuLnJlcGxhY2UoL1ssXC5dL2csZnVuY3Rpb24oT2kpe3JldHVybiIuIj09T2k/Ymk6YjB9KSkubGVuZ3RoLTE7dmFyIHdyPWVpLmxlbmd0aDtmb3IoZ2k9MDtnaTxlaS5sZW5ndGg7KytnaSlpZihudWxsIT1laVtnaV0m''@;'; put 'put ''JiJ0IiE9ZWlbZ2ldLnQmJmVpW2dpXS52LmluZGV4T2YoIi4iKT4tMSl7d3I9Z2k7YnJlYWt9dmFyIFpyPWVpLmxlbmd0aDtpZih3cj09PWVpLmxlbmd0aCYmLTE9PT1xbi5pbmRleE9mKCJFIikpe2ZvcihnaT1laS5sZW5ndGgtMTtnaT49MDstLWdpKW51bGw9PWVpW2dpXXx8LTE9PT0ibj8i''@;'; put 'put ''LmluZGV4T2YoZWlbZ2ldLnQpfHwoUHI+PWVpW2dpXS52Lmxlbmd0aC0xP2VpW2dpXS52PXFuLnN1YnN0cigxKyhQci09ZWlbZ2ldLnYubGVuZ3RoKSxlaVtnaV0udi5sZW5ndGgpOlByPDA/ZWlbZ2ldLnY9IiI6KGVpW2dpXS52PXFuLnN1YnN0cigwLFByKzEpLFByPS0xKSxlaVtnaV0udD0i''@;'; put 'put ''dCIsWnI9Z2kpO1ByPj0wJiZacjxlaS5sZW5ndGgmJihlaVtacl0udj1xbi5zdWJzdHIoMCxQcisxKStlaVtacl0udil9ZWxzZSBpZih3ciE9PWVpLmxlbmd0aCYmLTE9PT1xbi5pbmRleE9mKCJFIikpe2ZvcihQcj1xbi5pbmRleE9mKGJpKS0xLGdpPXdyO2dpPj0wOy0tZ2kpaWYobnVsbCE9''@;'; put 'put ''ZWlbZ2ldJiYtMSE9PSJuPyIuaW5kZXhPZihlaVtnaV0udCkpe2Zvcihtbz1laVtnaV0udi5pbmRleE9mKCIuIik+LTEmJmdpPT09d3I/ZWlbZ2ldLnYuaW5kZXhPZigiLiIpLTE6ZWlbZ2ldLnYubGVuZ3RoLTEsaHI9ZWlbZ2ldLnYuc3Vic3RyKG1vKzEpO21vPj0wOy0tbW8pUHI+PTAmJigi''@;'; put 'put ''MCI9PT1laVtnaV0udi5jaGFyQXQobW8pfHwiIyI9PT1laVtnaV0udi5jaGFyQXQobW8pKSYmKGhyPXFuLmNoYXJBdChQci0tKStocik7ZWlbZ2ldLnY9aHIsZWlbZ2ldLnQ9InQiLFpyPWdpfWZvcihQcj49MCYmWnI8ZWkubGVuZ3RoJiYoZWlbWnJdLnY9cW4uc3Vic3RyKDAsUHIrMSkrZWlb''@;'; put 'put ''WnJdLnYpLFByPXFuLmluZGV4T2YoYmkpKzEsZ2k9d3I7Z2k8ZWkubGVuZ3RoOysrZ2kpaWYobnVsbCE9ZWlbZ2ldJiYoLTEhPT0ibj8oIi5pbmRleE9mKGVpW2dpXS50KXx8Z2k9PT13cikpe2Zvcihtbz1laVtnaV0udi5pbmRleE9mKGJpKT4tMSYmZ2k9PT13cj9laVtnaV0udi5pbmRleE9m''@;'; put 'put ''KGJpKSsxOjAsaHI9ZWlbZ2ldLnYuc3Vic3RyKDAsbW8pO21vPGVpW2dpXS52Lmxlbmd0aDsrK21vKVByPHFuLmxlbmd0aCYmKGhyKz1xbi5jaGFyQXQoUHIrKykpO2VpW2dpXS52PWhyLGVpW2dpXS50PSJ0Iixacj1naX19fWZvcihnaT0wO2dpPGVpLmxlbmd0aDsrK2dpKW51bGwhPWVpW2dp''@;'; put 'put ''XSYmIm4/Ii5pbmRleE9mKGVpW2dpXS50KT4tMSYmKGVpW2dpXS52PVMwKGVpW2dpXS50LGVpW2dpXS52LFluPWgwPjEmJkRyPDAmJmdpPjAmJiItIj09PWVpW2dpLTFdLnY/LURyOkRyKS5yZXBsYWNlKC9cLi9nLGJpKS5yZXBsYWNlKC8sLyxiMCksZWlbZ2ldLnQ9InQiKTt2YXIgZmk9IiI7''@;'; put 'put ''Zm9yKGdpPTA7Z2khPT1laS5sZW5ndGg7KytnaSludWxsIT1laVtnaV0mJihmaSs9ZWlbZ2ldLnYpO3JldHVybiBmaX1yZS5pc19kYXRlPWYwLHJlLl9ldmFsPWpyO3ZhciBzcz0vXFtbPTw+XS8sX2w9L1xbKD18Pls9XT98PFs+PV0/KSgtP1xkKyg/OlwuXGQqKT8pXF0vO2Z1bmN0aW9uIFFh''@;'; put 'put ''KHJyLERyKXtpZihudWxsPT1EcilyZXR1cm4hMTt2YXIgVXI9cGFyc2VGbG9hdChEclsyXSk7c3dpdGNoKERyWzFdKXtjYXNlIj0iOmlmKHJyPT1VcilyZXR1cm4hMDticmVhaztjYXNlIj4iOmlmKHJyPlVyKXJldHVybiEwO2JyZWFrO2Nhc2UiPCI6aWYocnI8VXIpcmV0dXJuITA7YnJlYWs7''@;'; put 'put ''Y2FzZSI8PiI6aWYocnIhPVVyKXJldHVybiEwO2JyZWFrO2Nhc2UiPj0iOmlmKHJyPj1VcilyZXR1cm4hMDticmVhaztjYXNlIjw9IjppZihycjw9VXIpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gVWMocnIsRHIsVXIpe251bGw9PVVyJiYoVXI9e30pO3ZhciBoMD0iIjtzd2l0Y2godHlw''@;'; put 'put ''ZW9mIHJyKXtjYXNlInN0cmluZyI6aDA9Im0vZC95eSI9PXJyJiZVci5kYXRlTkY/VXIuZGF0ZU5GOnJyO2JyZWFrO2Nhc2UibnVtYmVyIjpudWxsPT0oaDA9MTQ9PXJyJiZVci5kYXRlTkY/VXIuZGF0ZU5GOihudWxsIT1Vci50YWJsZT9Vci50YWJsZTp6dClbcnJdKSYmKGgwPVVyLnRhYmxl''@;'; put 'put ''JiZVci50YWJsZVtmbltycl1dfHx6dFtmbltycl1dKSxudWxsPT1oMCYmKGgwPVJuW3JyXXx8IkdlbmVyYWwiKX1pZihQdChoMCwwKSlyZXR1cm4gZm8oRHIsVXIpO0RyIGluc3RhbmNlb2YgRGF0ZSYmKERyPU1yKERyLFVyLmRhdGUxOTA0KSk7dmFyIGVpPWZ1bmN0aW9uIGhzKHJyLERyKXt2''@;'; put 'put ''YXIgVXI9QWkocnIpLGgwPVVyLmxlbmd0aCxlaT1VcltoMC0xXS5pbmRleE9mKCJAIik7aWYoaDA8NCYmZWk+LTEmJi0taDAsVXIubGVuZ3RoPjQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHwiK1VyLmpvaW4oInwiKSsifCIpO2lmKCJudW1iZXIiIT10''@;'; put 'put ''eXBlb2YgRHIpcmV0dXJuWzQsND09PVVyLmxlbmd0aHx8ZWk+LTE/VXJbVXIubGVuZ3RoLTFdOiJAIl07c3dpdGNoKFVyLmxlbmd0aCl7Y2FzZSAxOlVyPWVpPi0xP1siR2VuZXJhbCIsIkdlbmVyYWwiLCJHZW5lcmFsIixVclswXV06W1VyWzBdLFVyWzBdLFVyWzBdLCJAIl07YnJlYWs7Y2Fz''@;'; put 'put ''ZSAyOlVyPWVpPi0xP1tVclswXSxVclswXSxVclswXSxVclsxXV06W1VyWzBdLFVyWzFdLFVyWzBdLCJAIl07YnJlYWs7Y2FzZSAzOlVyPWVpPi0xP1tVclswXSxVclsxXSxVclswXSxVclsyXV06W1VyWzBdLFVyWzFdLFVyWzJdLCJAIl19dmFyIHQwPURyPjA/VXJbMF06RHI8MD9VclsxXTpV''@;'; put 'put ''clsyXTtpZigtMT09PVVyWzBdLmluZGV4T2YoIlsiKSYmLTE9PT1VclsxXS5pbmRleE9mKCJbIikpcmV0dXJuW2gwLHQwXTtpZihudWxsIT1VclswXS5tYXRjaChzcyl8fG51bGwhPVVyWzFdLm1hdGNoKHNzKSl7dmFyIGdpPVVyWzBdLm1hdGNoKF9sKSwkaT1VclsxXS5tYXRjaChfbCk7cmV0''@;'; put 'put ''dXJuIFFhKERyLGdpKT9baDAsVXJbMF1dOlFhKERyLCRpKT9baDAsVXJbMV1dOltoMCxVcltudWxsIT1naSYmbnVsbCE9JGk/MjoxXV19cmV0dXJuW2gwLHQwXX0oaDAsRHIpO2lmKFB0KGVpWzFdKSlyZXR1cm4gZm8oRHIsVXIpO2lmKCEwPT09RHIpRHI9IlRSVUUiO2Vsc2UgaWYoITE9PT1E''@;'; put 'put ''cilEcj0iRkFMU0UiO2Vsc2UgaWYoIiI9PT1Ecnx8bnVsbD09RHIpcmV0dXJuIiI7cmV0dXJuIGpyKGVpWzFdLERyLFVyLGVpWzBdKX1mdW5jdGlvbiBnMihycixEcil7aWYoIm51bWJlciIhPXR5cGVvZiBEcil7RHI9K0RyfHwtMTtmb3IodmFyIFVyPTA7VXI8MzkyOysrVXIpaWYobnVsbCE9''@;'; put 'put ''enRbVXJdKXtpZih6dFtVcl09PXJyKXtEcj1VcjticmVha319ZWxzZSBEcjwwJiYoRHI9VXIpO0RyPDAmJihEcj0zOTEpfXJldHVybiB6dFtEcl09cnIsRHJ9cmUubG9hZD1nMixyZS5fdGFibGU9enQscmUuZ2V0X3RhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHp0fSxyZS5sb2FkX3RhYmxlPWZ1''@;'; put 'put ''bmN0aW9uKERyKXtmb3IodmFyIFVyPTA7MzkyIT1VcjsrK1VyKXZvaWQgMCE9PURyW1VyXSYmZzIoRHJbVXJdLFVyKX0scmUuaW5pdF90YWJsZT1MdCxyZS5mb3JtYXQ9VWMscmUuZ2V0bG9jYWxlPWZ1bmN0aW9uIERpKCl7cmV0dXJuIFdyfHwiZW4tVVMifSxyZS5zZXRsb2NhbGU9ZnVuY3Rp''@;'; put 'put ''b24gY2kocnIpe2lmKGZ1bmN0aW9uIE1pKHJyKXt2YXIgRHI9MDtzd2l0Y2goKFdyfHwiIikudG9Mb3dlckNhc2UoKSl7Y2FzZSJ6aC10dyI6Y2FzZSJ6aC1jbiI6Y2FzZSJqYS1qcCI6Y2FzZSJrby1rciI6Zm9yKERyPTI3O0RyPD0zNjsrK0RyKWRlbGV0ZSBycltEcl07Zm9yKERyPTUwO0Ry''@;'; put 'put ''PD01ODsrK0RyKWRlbGV0ZSBycltEcl07YnJlYWs7Y2FzZSJ0aC10aCI6Zm9yKERyPTU5O0RyPD02MjsrK0RyKWRlbGV0ZSBycltEcl07Zm9yKERyPTY3O0RyPD04MTsrK0RyKWRlbGV0ZSBycltEcl19fSh6dCksV3I9cnIsSHIoenQpLCJ1bmRlZmluZWQiIT10eXBlb2YgSW50bCl7dmFyIERy''@;'; put 'put ''PUludGwuRGF0ZVRpbWVGb3JtYXQocnIpO2lmKERyLmZvcm1hdFRvUGFydHMpe2Zvcih2YXIgVXI9RHIuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLDAsNSwwLDAsMCkpLGgwPTA7aDA8NzsrK2gwKWFuW2gwXVsxXT1JbnRsLkRhdGVUaW1lRm9ybWF0KHJyLHt3ZWVrZGF5OiJsb25nIn0p''@;'; put 'put ''LmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwwLDUraDAsMCwwLDApKVswXS52YWx1ZSxhbltoMF1bMF09SW50bC5EYXRlVGltZUZvcm1hdChycix7d2Vla2RheToic2hvcnQifSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLDAsNStoMCwwLDAsMCkpWzBdLnZhbHVlO2Zvcih2YXIg''@;'; put 'put ''ZWk9MDtlaTwxMjsrK2VpKUNuW2VpXVsyXT1JbnRsLkRhdGVUaW1lRm9ybWF0KHJyLHttb250aDoibG9uZyJ9KS5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAsZWksMiwwLDAsMCkpWzBdLnZhbHVlLENuW2VpXVsxXT1JbnRsLkRhdGVUaW1lRm9ybWF0KHJyLHttb250aDoic2hvcnQifSku''@;'; put 'put ''Zm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLGVpLDIsMCwwLDApKVswXS52YWx1ZSxDbltlaV1bMF09Q25bZWldWzFdLnNsaWNlKDAsMSk7Zm9yKHZhciB0MD0iIixnaT0wO2dpPFVyLmxlbmd0aDsrK2dpKXt2YXIgJGk9VXJbZ2ldLnZhbHVlO3N3aXRjaChVcltnaV0udHlwZSl7Y2FzZSJ5''@;'; put 'put ''ZWFyIjp0MCs9Mj09JGkubGVuZ3RoPyJ5eSI6Inl5eXkiO2JyZWFrO2Nhc2UibW9udGgiOnQwKz0iMSI9PSRpPyJtIjoiMDEiPT0kaT8ibW0iOiRpPT1DblswXVsxXT8ibW1tIjokaT09Q25bMF1bMl0/Im1tbW0iOiRpPT1DblswXVswXT8ibW1tbW0iOiJtbSI7YnJlYWs7Y2FzZSJkYXkiOnQw''@;'; put 'put ''Kz0iNSI9PSRpPyJkIjoiMDUiPT0kaT8iZGQiOiRpPT1hblswXVswXT8iZGRkIjokaT09YW5bMF1bMV0/ImRkZGQiOiJkZCI7YnJlYWs7Y2FzZSJsaXRlcmFsIjp0MCs9JGkucmVwbGFjZSgvLi9nLCJcXCQmIiksMT09JGkubGVuZ3RoJiYoenI9JGkpfX0ocnIubWF0Y2goL2VuL2kpJiZyci5t''@;'; put 'put ''YXRjaCgvdXMvaSl8fCFycikmJih0MD0ibS9kL3l5IiksenRbMTRdPXQwfWVsc2UiamEtanAiPT1yci50b0xvd2VyQ2FzZSgpJiYoenRbMTRdPSJ5eXl5XFwvbVxcL2QiKTt2YXIgTW89SW50bC5OdW1iZXJGb3JtYXQocnIse30pLmZvcm1hdCgxMjM0NTY3Ljg5KTtNbyYmKGIwPShNby5tYXRj''@;'; put 'put ''aCgvMSguKikyLyl8fFtdKVsxXSxiaT0oTW8ubWF0Y2goLzcoLiopOC8pfHxbXSlbMV0pfWFpW3JyLnRvTG93ZXJDYXNlKCldfHwoYWlbcnIudG9Mb3dlckNhc2UoKV09eyIuIjpiaSwiLCI6YjB9KSxmcj1RdChuaT1haVtyci50b0xvd2VyQ2FzZSgpXXx8YWlbImVuLXVzIl0pfSxyZS5ub3Jt''@;'; put 'put ''YWxpemU9ZnVuY3Rpb24gQ2EocnIpe2Zvcih2YXIgRHI9MCxVcj0wLGgwPSIiLGVpPSIiLHQwPSIiLGdpPW5pLnl8fCJ5IiwkaT1naS50b1VwcGVyQ2FzZSgpLE1vPW5pLmR8fCJkIixNMD1Nby50b1VwcGVyQ2FzZSgpLG1vPW5pWyIuIl0sdjA9bmlbIiwiXSxDbD0iMCM/RSstJSIrbmlbIiwi''@;'; put 'put ''XSttbztEcjxyci5sZW5ndGg7KXN3aXRjaChoMD1yci5jaGFyQXQoRHIpKXtjYXNlIkciOkRyKyssdDArPWgwO2JyZWFrO2Nhc2UnIic6Zm9yKHQwKz1oMDszNCE9PShVcj1yci5jaGFyQ29kZUF0KCsrRHIpKSYmRHI8cnIubGVuZ3RoOyl0MCs9U3RyaW5nLmZyb21DaGFyQ29kZShVcik7dDAr''@;'; put 'put ''PSciJywrK0RyO2JyZWFrO2Nhc2UiXFwiOmNhc2UiXyI6dDArPXJyLnNsaWNlKERyLERyKzIpLERyKz0yO2JyZWFrO2Nhc2UiQCI6dDArPWgwLCsrRHI7YnJlYWs7Y2FzZSJCIjpjYXNlImIiOisrRHIsdDArPWgwO2JyZWFrO2Nhc2UgZ2k6Y2FzZSAkaTpjYXNlIE1vOmNhc2UgTTA6dDArPWZy''@;'; put 'put ''W2gwLnRvTG93ZXJDYXNlKCldLCsrRHI7YnJlYWs7Y2FzZSJNIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpjYXNlIm0iOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJBIjpjYXNlImEiOnQwKz1oMCwrK0RyO2JyZWFrO2Nhc2UiWyI6Zm9yKGVpPWgwOyJdIiE9PXJyLmNo''@;'; put 'put ''YXJBdChEcisrKSYmRHI8cnIubGVuZ3RoOyllaSs9cnIuY2hhckF0KERyKTt0MCs9ZWk7YnJlYWs7Y2FzZSB2MDp0MCs9JyInK2gwKyciJywrK0RyO2JyZWFrO2Nhc2UgbW86aWYoIShEcjxyci5sZW5ndGgmJihDbC5pbmRleE9mKGgwPXJyLmNoYXJBdCgrK0RyKSk+LTF8fCJcXCI9PWgwJiYi''@;'; put 'put ''LSI9PXJyLmNoYXJBdChEcisxKSYmIjAjIi5pbmRleE9mKHJyLmNoYXJBdChEcisyKSk+LTEpKSl7dDArPSciJyttbysnIic7YnJlYWt9aDA9bW8sLS1EcjtjYXNlIjAiOmNhc2UiIyI6Zm9yKHQwKz1mcltoMC50b0xvd2VyQ2FzZSgpXXx8aDA7RHI8cnIubGVuZ3RoJiYoQ2wuaW5kZXhPZiho''@;'; put 'put ''MD1yci5jaGFyQXQoKytEcikpPi0xfHwiXFwiPT1oMCYmIi0iPT1yci5jaGFyQXQoRHIrMSkmJiIwIyIuaW5kZXhPZihyci5jaGFyQXQoRHIrMikpPi0xKTspdDArPWZyW2gwLnRvTG93ZXJDYXNlKCldfHxoMDticmVhaztjYXNlIj8iOmZvcih0MCs9aDA7cnIuY2hhckF0KCsrRHIpPT09aDA7''@;'; put 'put ''KXQwKz1oMDticmVhaztjYXNlIioiOnQwKz1oMCwrK0RyLCgiICI9PXJyLmNoYXJBdChEcil8fCIqIj09cnIuY2hhckF0KERyKSkmJih0MCs9cnIuY2hhckF0KERyKSwrK0RyKTticmVhaztjYXNlIigiOmNhc2UiKSI6dDArPWgwLCsrRHI7YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6''@;'; put 'put ''Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Zm9yKHQwKz1oMDtEcjxyci5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKHJyLmNoYXJBdCgrK0RyKSk+LTE7KXQwKz1yci5jaGFyQXQoRHIpO2JyZWFrO2RlZmF1bHQ6dDArPWgwLCsrRHJ9cmV0dXJu''@;'; put 'put ''IHQwfSxyZS5nZXRjdXJyZW5jeT1mdW5jdGlvbiBKMCgpe3JldHVybiB3MHx8IlVTRCJ9LHJlLnNldGN1cnJlbmN5PWZ1bmN0aW9uIGlvKHJyKXt3MD1ycixoaT0idW5kZWZpbmVkIiE9dHlwZW9mIEludGw/SW50bC5OdW1iZXJGb3JtYXQoV3Ise3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3lE''@;'; put 'put ''aXNwbGF5OiJzeW1ib2wiLGN1cnJlbmN5OnJyfSkuZm9ybWF0KDApLnJlcGxhY2UoL1swXC5cLFxzXS9nLCIiKToiJCJ9fTt5ZShGKTt2YXIgeXQsQ2U9eyJHZW5lcmFsIE51bWJlciI6IkdlbmVyYWwiLCJHZW5lcmFsIERhdGUiOkYuX3RhYmxlWzIyXSwiTG9uZyBEYXRlIjoiZGRkZCwgbW1t''@;'; put 'put ''bSBkZCwgeXl5eSIsIk1lZGl1bSBEYXRlIjpGLl90YWJsZVsxNV0sIlNob3J0IERhdGUiOkYuX3RhYmxlWzE0XSwiTG9uZyBUaW1lIjpGLl90YWJsZVsxOV0sIk1lZGl1bSBUaW1lIjpGLl90YWJsZVsxOF0sIlNob3J0IFRpbWUiOkYuX3RhYmxlWzIwXSxDdXJyZW5jeTonIiQiIywjIzAuMDBf''@;'; put 'put ''KTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyxGaXhlZDpGLl90YWJsZVsyXSxTdGFuZGFyZDpGLl90YWJsZVs0XSxQZXJjZW50OkYuX3RhYmxlWzEwXSxTY2llbnRpZmljOkYuX3RhYmxlWzExXSwiWWVzL05vIjonIlllcyI7IlllcyI7Ik5vIjtAJywiVHJ1ZS9GYWxzZSI6JyJUcnVlIjsiVHJ1''@;'; put 'put ''ZSI7IkZhbHNlIjtAJywiT24vT2ZmIjonIlllcyI7IlllcyI7Ik5vIjtAJ30sRGU9ezU6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNzonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsODonIiQiIywjIzAuMDBf''@;'; put 'put ''KTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJywyMzoiR2VuZXJhbCIsMjQ6IkdlbmVyYWwiLDI1OiJHZW5lcmFsIiwyNjoiR2VuZXJhbCIsMjc6Im0vZC95eSIsMjg6Im0vZC95eSIsMjk6Im0vZC95eSIsMzA6Im0vZC95eSIsMzE6Im0vZC95eSIsMzI6Img6bW06c3MiLDMzOiJoOm1tOnNzIiwz''@;'; put 'put ''NDoiaDptbTpzcyIsMzU6Img6bW06c3MiLDM2OiJtL2QveXkiLDQxOidfKCogIywjIzBfKTtfKCogKCMsIyMwKTtfKCogIi0iXyk7XyhAXyknLDQyOidfKCIkIiogIywjIzBfKTtfKCIkIiogKCMsIyMwKTtfKCIkIiogIi0iXyk7XyhAXyknLDQzOidfKCogIywjIzAuMDBfKTtfKCogKCMsIyMw''@;'; put 'put ''LjAwKTtfKCogIi0iPz9fKTtfKEBfKScsNDQ6J18oIiQiKiAjLCMjMC4wMF8pO18oIiQiKiAoIywjIzAuMDApO18oIiQiKiAiLSI/P18pO18oQF8pJyw1MDoibS9kL3l5Iiw1MToibS9kL3l5Iiw1MjoibS9kL3l5Iiw1MzoibS9kL3l5Iiw1NDoibS9kL3l5Iiw1NToibS9kL3l5Iiw1NjoibS9k''@;'; put 'put ''L3l5Iiw1NzoibS9kL3l5Iiw1ODoibS9kL3l5Iiw1OToiMCIsNjA6IjAuMDAiLDYxOiIjLCMjMCIsNjI6IiMsIyMwLjAwIiw2MzonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjQ6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNjU6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywj''@;'; put 'put ''IzAuMDBcXCknLDY2OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDY3OiIwJSIsNjg6IjAuMDAlIiw2OToiIyA/Lz8iLDcwOiIjID8/Lz8/Iiw3MToibS9kL3l5Iiw3MjoibS9kL3l5Iiw3MzoiZC1tbW0teXkiLDc0OiJkLW1tbSIsNzU6Im1tbS15eSIsNzY6Img6bW0i''@;'; put 'put ''LDc3OiJoOm1tOnNzIiw3ODoibS9kL3l5IGg6bW0iLDc5OiJtbTpzcyIsODA6IltoXTptbTpzcyIsODE6Im1tc3MuMCJ9LFBlPS9bZERdK3xbbU1dK3xbeVllRV0rfFtIaF0rfFtTc10rL2c7IWZ1bmN0aW9uKEgpe0gudmVyc2lvbj0iMS4yLjAiO3ZhciBYPWZ1bmN0aW9uIHJlKCl7Zm9yKHZh''@;'; put 'put ''ciBWZT0wLFVlPW5ldyBBcnJheSgyNTYpLFN0PTA7MjU2IT1TdDsrK1N0KVVlW1N0XT1WZT0xJihWZT0xJihWZT0xJihWZT0xJihWZT0xJihWZT0xJihWZT0xJihWZT0xJihWZT1TdCk/LTMwNjY3NDkxMl5WZT4+PjE6VmU+Pj4xKT8tMzA2Njc0OTEyXlZlPj4+MTpWZT4+PjEpPy0zMDY2NzQ5''@;'; put 'put ''MTJeVmU+Pj4xOlZlPj4+MSk/LTMwNjY3NDkxMl5WZT4+PjE6VmU+Pj4xKT8tMzA2Njc0OTEyXlZlPj4+MTpWZT4+PjEpPy0zMDY2NzQ5MTJeVmU+Pj4xOlZlPj4+MSk/LTMwNjY3NDkxMl5WZT4+PjE6VmU+Pj4xKT8tMzA2Njc0OTEyXlZlPj4+MTpWZT4+PjE7cmV0dXJuInVuZGVmaW5lZCIh''@;'; put 'put ''PXR5cGVvZiBJbnQzMkFycmF5P25ldyBJbnQzMkFycmF5KFVlKTpVZX0oKTtILnRhYmxlPVgsSC5ic3RyPWZ1bmN0aW9uIHdlKFZlLFVlKXtmb3IodmFyIFN0PS0xXlVlLEl0PVZlLmxlbmd0aC0xLFB0PTA7UHQ8SXQ7KVN0PShTdD1TdD4+PjheWFsyNTUmKFN0XlZlLmNoYXJDb2RlQXQoUHQr''@;'; put 'put ''KykpXSk+Pj44XlhbMjU1JihTdF5WZS5jaGFyQ29kZUF0KFB0KyspKV07cmV0dXJuIFB0PT09SXQmJihTdD1TdD4+PjheWFsyNTUmKFN0XlZlLmNoYXJDb2RlQXQoUHQpKV0pLC0xXlN0fSxILmJ1Zj1mdW5jdGlvbiB4ZShWZSxVZSl7aWYoVmUubGVuZ3RoPjFlNClyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''RmUoVmUsVWUpe2Zvcih2YXIgU3Q9LTFeVWUsSXQ9VmUubGVuZ3RoLTcsUHQ9MDtQdDxJdDspU3Q9KFN0PShTdD0oU3Q9KFN0PShTdD0oU3Q9KFN0PVN0Pj4+OF5YWzI1NSYoU3ReVmVbUHQrK10pXSk+Pj44XlhbMjU1JihTdF5WZVtQdCsrXSldKT4+PjheWFsyNTUmKFN0XlZlW1B0KytdKV0p''@;'; put 'put ''Pj4+OF5YWzI1NSYoU3ReVmVbUHQrK10pXSk+Pj44XlhbMjU1JihTdF5WZVtQdCsrXSldKT4+PjheWFsyNTUmKFN0XlZlW1B0KytdKV0pPj4+OF5YWzI1NSYoU3ReVmVbUHQrK10pXSk+Pj44XlhbMjU1JihTdF5WZVtQdCsrXSldO2Zvcig7UHQ8SXQrNzspU3Q9U3Q+Pj44XlhbMjU1JihTdF5W''@;'; put 'put ''ZVtQdCsrXSldO3JldHVybi0xXlN0fShWZSxVZSk7Zm9yKHZhciBTdD0tMV5VZSxJdD1WZS5sZW5ndGgtMyxQdD0wO1B0PEl0OylTdD0oU3Q9KFN0PShTdD1TdD4+PjheWFsyNTUmKFN0XlZlW1B0KytdKV0pPj4+OF5YWzI1NSYoU3ReVmVbUHQrK10pXSk+Pj44XlhbMjU1JihTdF5WZVtQdCsr''@;'; put 'put ''XSldKT4+PjheWFsyNTUmKFN0XlZlW1B0KytdKV07Zm9yKDtQdDxJdCszOylTdD1TdD4+PjheWFsyNTUmKFN0XlZlW1B0KytdKV07cmV0dXJuLTFeU3R9LEguc3RyPWZ1bmN0aW9uIFplKFZlLFVlKXtmb3IodmFyIFF0LGFuLFN0PS0xXlVlLEl0PTAsUHQ9VmUubGVuZ3RoO0l0PFB0OykoUXQ9''@;'; put 'put ''VmUuY2hhckNvZGVBdChJdCsrKSk8MTI4P1N0PVN0Pj4+OF5YWzI1NSYoU3ReUXQpXTpRdDwyMDQ4P1N0PShTdD1TdD4+PjheWFsyNTUmKFN0XigxOTJ8UXQ+PjYmMzEpKV0pPj4+OF5YWzI1NSYoU3ReKDEyOHw2MyZRdCkpXTpRdD49NTUyOTYmJlF0PDU3MzQ0PyhRdD02NCsoMTAyMyZRdCks''@;'; put 'put ''YW49MTAyMyZWZS5jaGFyQ29kZUF0KEl0KyspLFN0PShTdD0oU3Q9KFN0PVN0Pj4+OF5YWzI1NSYoU3ReKDI0MHxRdD4+OCY3KSldKT4+PjheWFsyNTUmKFN0XigxMjh8UXQ+PjImNjMpKV0pPj4+OF5YWzI1NSYoU3ReKDEyOHxhbj4+NiYxNXwoMyZRdCk8PDQpKV0pPj4+OF5YWzI1NSYoU3Re''@;'; put 'put ''KDEyOHw2MyZhbikpXSk6U3Q9KFN0PShTdD1TdD4+PjheWFsyNTUmKFN0XigyMjR8UXQ+PjEyJjE1KSldKT4+PjheWFsyNTUmKFN0XigxMjh8UXQ+PjYmNjMpKV0pPj4+OF5YWzI1NSYoU3ReKDEyOHw2MyZRdCkpXTtyZXR1cm4tMV5TdH19KHl0PXt9KTt2YXIgbXQscHQ9ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgVWUscmU9e307ZnVuY3Rpb24gd2Uoc3Ipe2lmKCIvIj09c3IuY2hhckF0KHNyLmxlbmd0aC0xKSlyZXR1cm4tMT09PXNyLnNsaWNlKDAsLTEpLmluZGV4T2YoIi8iKT9zcjp3ZShzci5zbGljZSgwLC0xKSk7dmFyIFByPXNyLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1Qcj9zcjpz''@;'; put 'put ''ci5zbGljZSgwLFByKzEpfWZ1bmN0aW9uIHhlKHNyKXtpZigiLyI9PXNyLmNoYXJBdChzci5sZW5ndGgtMSkpcmV0dXJuIHhlKHNyLnNsaWNlKDAsLTEpKTt2YXIgUHI9c3IubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PVByP3NyOnNyLnNsaWNlKFByKzEpfWZ1bmN0aW9uIEZlKHNyLFBy''@;'; put 'put ''KXsic3RyaW5nIj09dHlwZW9mIFByJiYoUHI9bmV3IERhdGUoUHIpKTt2YXIgaHI9UHIuZ2V0SG91cnMoKTtocj0oaHI9aHI8PDZ8UHIuZ2V0TWludXRlcygpKTw8NXxQci5nZXRTZWNvbmRzKCk+Pj4xLHNyLndyaXRlX3NoaWZ0KDIsaHIpO3ZhciBZbj1Qci5nZXRGdWxsWWVhcigpLTE5ODA7''@;'; put 'put ''WW49KFluPVluPDw0fFByLmdldE1vbnRoKCkrMSk8PDV8UHIuZ2V0RGF0ZSgpLHNyLndyaXRlX3NoaWZ0KDIsWW4pfWZ1bmN0aW9uIFZlKHNyKXtLbChzciwwKTtmb3IodmFyIFByPXt9LGhyPTA7c3IubDw9c3IubGVuZ3RoLTQ7KXt2YXIgWW49c3IucmVhZF9zaGlmdCgyKSxxbj1zci5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpLHdyPXNyLmwrcW4sWnI9e307MjE1ODk9PT1ZbiYmKDEmKGhyPXNyLnJlYWRfc2hpZnQoMSkpJiYoWnIubXRpbWU9c3IucmVhZF9zaGlmdCg0KSkscW4+NSYmKDImaHImJihaci5hdGltZT1zci5yZWFkX3NoaWZ0KDQpKSw0JmhyJiYoWnIuY3RpbWU9c3IucmVhZF9zaGlmdCg0''@;'; put 'put ''KSkpLFpyLm10aW1lJiYoWnIubXQ9bmV3IERhdGUoMWUzKlpyLm10aW1lKSkpLHNyLmw9d3IsUHJbWW5dPVpyfXJldHVybiBQcn1mdW5jdGlvbiBTdCgpe3JldHVybiBVZXx8KFVlPUwoNzg3NzMpKX1mdW5jdGlvbiBJdChzcixQcil7aWYoODA9PXNyWzBdJiY3NT09c3JbMV0pcmV0dXJuIHYw''@;'; put 'put ''KHNyLFByKTtpZihzci5sZW5ndGg8NTEyKXRocm93IG5ldyBFcnJvcigiQ0ZCIGZpbGUgc2l6ZSAiK3NyLmxlbmd0aCsiIDwgNTEyIik7dmFyIGhyLHFuLHdyLFpyLGZpLE9pLFluPTUxMixjMD1bXSxXaT1zci5zbGljZSgwLDUxMik7S2woV2ksMCk7dmFyIFkwPWZ1bmN0aW9uIFB0KHNyKXtp''@;'; put 'put ''Zig4MD09c3Jbc3IubF0mJjc1PT1zcltzci5sKzFdKXJldHVyblswLDBdO3NyLmNoayhoaSwiSGVhZGVyIFNpZ25hdHVyZTogIiksc3IubCs9MTY7dmFyIFByPXNyLnJlYWRfc2hpZnQoMiwidSIpO3JldHVybltzci5yZWFkX3NoaWZ0KDIsInUiKSxQcl19KFdpKTtzd2l0Y2goaHI9WTBbMF0p''@;'; put 'put ''e2Nhc2UgMzpZbj01MTI7YnJlYWs7Y2FzZSA0OlluPTQwOTY7YnJlYWs7Y2FzZSAwOmlmKDA9PVkwWzFdKXJldHVybiB2MChzcixQcik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIk1ham9yIFZlcnNpb246IEV4cGVjdGVkIDMgb3IgNCBzYXcgIitocil9NTEyIT09WW4mJktsKFdpPXNyLnNs''@;'; put 'put ''aWNlKDAsWW4pLDI4KTt2YXIgSTA9c3Iuc2xpY2UoMCxZbik7IWZ1bmN0aW9uIFF0KHNyLFByKXt2YXIgaHI7c3dpdGNoKHNyLmwrPTIsaHI9c3IucmVhZF9zaGlmdCgyKSl7Y2FzZSA5OmlmKDMhPVByKXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IHNhdyAiK2hy''@;'; put 'put ''KTticmVhaztjYXNlIDEyOmlmKDQhPVByKXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCAxMiBzYXcgIitocik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgOSBvciAxMiBzYXcgIitocil9c3IuY2hrKCIwNjAwIiwi''@;'; put 'put ''TWluaSBTZWN0b3IgU2hpZnQ6ICIpLHNyLmNoaygiMDAwMDAwMDAwMDAwIiwiUmVzZXJ2ZWQ6ICIpfShXaSxocik7dmFyIHRhPVdpLnJlYWRfc2hpZnQoNCwiaSIpO2lmKDM9PT1ociYmMCE9PXRhKXRocm93IG5ldyBFcnJvcigiIyBEaXJlY3RvcnkgU2VjdG9yczogRXhwZWN0ZWQgMCBzYXcg''@;'; put 'put ''Iit0YSk7V2kubCs9NCxacj1XaS5yZWFkX3NoaWZ0KDQsImkiKSxXaS5sKz00LFdpLmNoaygiMDAxMDAwMDAiLCJNaW5pIFN0cmVhbSBDdXRvZmYgU2l6ZTogIiksZmk9V2kucmVhZF9zaGlmdCg0LCJpIikscW49V2kucmVhZF9zaGlmdCg0LCJpIiksT2k9V2kucmVhZF9zaGlmdCg0LCJpIiks''@;'; put 'put ''d3I9V2kucmVhZF9zaGlmdCg0LCJpIik7Zm9yKHZhciBabz0tMSx2bz0wO3ZvPDEwOSYmISgoWm89V2kucmVhZF9zaGlmdCg0LCJpIikpPDApOysrdm8pYzBbdm9dPVpvO3ZhciBWYT1mdW5jdGlvbiBhbihzcixQcil7Zm9yKHZhciBocj1NYXRoLmNlaWwoc3IubGVuZ3RoL1ByKS0xLFluPVtd''@;'; put 'put ''LHFuPTE7cW48aHI7KytxbilZbltxbi0xXT1zci5zbGljZShxbipQciwocW4rMSkqUHIpO3JldHVybiBZbltoci0xXT1zci5zbGljZShocipQciksWW59KHNyLFluKTt6dChPaSx3cixWYSxZbixjMCk7dmFyIEhzPWZ1bmN0aW9uIEluKHNyLFByLGhyLFluKXt2YXIgcW49c3IubGVuZ3RoLHdy''@;'; put 'put ''PVtdLFpyPVtdLGZpPVtdLE9pPVtdLGMwPVluLTEsV2k9MCxZMD0wLEkwPTAsdGE9MDtmb3IoV2k9MDtXaTxxbjsrK1dpKWlmKGZpPVtdLChJMD1XaStQcik+PXFuJiYoSTAtPXFuKSwhWnJbSTBdKXtPaT1bXTt2YXIgWm89W107Zm9yKFkwPUkwO1kwPj0wOyl7Wm9bWTBdPSEwLFpyW1kwXT0h''@;'; put 'put ''MCxmaVtmaS5sZW5ndGhdPVkwLE9pLnB1c2goc3JbWTBdKTt2YXIgdm89aHJbTWF0aC5mbG9vcig0KlkwL1luKV07aWYoWW48NCsodGE9NCpZMCZjMCkpdGhyb3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIitZMCsiIDQgIitZbik7aWYoIXNyW3ZvXXx8Wm9bWTA9b3Uoc3Jb''@;'; put 'put ''dm9dLHRhKV0pYnJlYWt9d3JbSTBdPXtub2RlczpmaSxkYXRhOkFuKFtPaV0pfX1yZXR1cm4gd3J9KFZhLFpyLGMwLFluKTtIc1tacl0ubmFtZT0iIURpcmVjdG9yeSIscW4+MCYmZmkhPT1mciYmKEhzW2ZpXS5uYW1lPSIhTWluaUZBVCIpLEhzW2MwWzBdXS5uYW1lPSIhRkFUIixIcy5mYXRf''@;'; put 'put ''YWRkcnM9YzAsSHMuc3N6PVluO3ZhciBkdT1bXSx5cz1bXSx3cz1bXTsoZnVuY3Rpb24gUm4oc3IsUHIsaHIsWW4scW4sd3IsWnIsZmkpe2Zvcih2YXIgdGEsT2k9MCxjMD1Zbi5sZW5ndGg/MjowLFdpPVByW3NyXS5kYXRhLFkwPTAsSTA9MDtZMDxXaS5sZW5ndGg7WTArPTEyOCl7dmFyIFpv''@;'; put 'put ''PVdpLnNsaWNlKFkwLFkwKzEyOCk7S2woWm8sNjQpLEkwPVpvLnJlYWRfc2hpZnQoMiksdGE9YjIoWm8sMCxJMC1jMCksWW4ucHVzaCh0YSk7dmFyIHZvPXtuYW1lOnRhLHR5cGU6Wm8ucmVhZF9zaGlmdCgxKSxjb2xvcjpaby5yZWFkX3NoaWZ0KDEpLEw6Wm8ucmVhZF9zaGlmdCg0LCJpIiks''@;'; put 'put ''Ujpaby5yZWFkX3NoaWZ0KDQsImkiKSxDOlpvLnJlYWRfc2hpZnQoNCwiaSIpLGNsc2lkOlpvLnJlYWRfc2hpZnQoMTYpLHN0YXRlOlpvLnJlYWRfc2hpZnQoNCwiaSIpLHN0YXJ0OjAsc2l6ZTowfTswIT09Wm8ucmVhZF9zaGlmdCgyKStaby5yZWFkX3NoaWZ0KDIpK1pvLnJlYWRfc2hpZnQo''@;'; put 'put ''MikrWm8ucmVhZF9zaGlmdCgyKSYmKHZvLmN0PVZuKFpvLFpvLmwtOCkpLDAhPT1aby5yZWFkX3NoaWZ0KDIpK1pvLnJlYWRfc2hpZnQoMikrWm8ucmVhZF9zaGlmdCgyKStaby5yZWFkX3NoaWZ0KDIpJiYodm8ubXQ9Vm4oWm8sWm8ubC04KSksdm8uc3RhcnQ9Wm8ucmVhZF9zaGlmdCg0LCJp''@;'; put 'put ''Iiksdm8uc2l6ZT1aby5yZWFkX3NoaWZ0KDQsImkiKSx2by5zaXplPDAmJnZvLnN0YXJ0PDAmJih2by5zaXplPXZvLnR5cGU9MCx2by5zdGFydD1mcix2by5uYW1lPSIiKSw1PT09dm8udHlwZT8oT2k9dm8uc3RhcnQscW4+MCYmT2khPT1mciYmKFByW09pXS5uYW1lPSIhU3RyZWFtRGF0YSIp''@;'; put 'put ''KTp2by5zaXplPj00MDk2Pyh2by5zdG9yYWdlPSJmYXQiLHZvaWQgMD09PVByW3ZvLnN0YXJ0XSYmKFByW3ZvLnN0YXJ0XT1mbihocix2by5zdGFydCxQci5mYXRfYWRkcnMsUHIuc3N6KSksUHJbdm8uc3RhcnRdLm5hbWU9dm8ubmFtZSx2by5jb250ZW50PVByW3ZvLnN0YXJ0XS5kYXRhLnNs''@;'; put 'put ''aWNlKDAsdm8uc2l6ZSkpOih2by5zdG9yYWdlPSJtaW5pZmF0Iix2by5zaXplPDA/dm8uc2l6ZT0wOk9pIT09ZnImJnZvLnN0YXJ0IT09ZnImJlByW09pXSYmKHZvLmNvbnRlbnQ9THQodm8sUHJbT2ldLmRhdGEsKFByW2ZpXXx8e30pLmRhdGEpKSksdm8uY29udGVudCYmS2wodm8uY29udGVu''@;'; put 'put ''dCwwKSx3clt0YV09dm8sWnIucHVzaCh2byl9fSkoWnIsSHMsVmEsZHUscW4se30seXMsZmkpLGZ1bmN0aW9uIENuKHNyLFByLGhyKXtmb3IodmFyIFluPTAscW49MCx3cj0wLFpyPTAsZmk9MCxPaT1oci5sZW5ndGgsYzA9W10sV2k9W107WW48T2k7KytZbiljMFtZbl09V2lbWW5dPVluLFBy''@;'; put 'put ''W1luXT1ocltZbl07Zm9yKDtmaTxXaS5sZW5ndGg7KytmaSlxbj1zcltZbj1XaVtmaV1dLkwsd3I9c3JbWW5dLlIsWnI9c3JbWW5dLkMsYzBbWW5dPT09WW4mJigtMSE9PXFuJiZjMFtxbl0hPT1xbiYmKGMwW1luXT1jMFtxbl0pLC0xIT09d3ImJmMwW3dyXSE9PXdyJiYoYzBbWW5dPWMwW3dy''@;'; put 'put ''XSkpLC0xIT09WnImJihjMFtacl09WW4pLC0xIT09cW4mJlluIT1jMFtZbl0mJihjMFtxbl09YzBbWW5dLFdpLmxhc3RJbmRleE9mKHFuKTxmaSYmV2kucHVzaChxbikpLC0xIT09d3ImJlluIT1jMFtZbl0mJihjMFt3cl09YzBbWW5dLFdpLmxhc3RJbmRleE9mKHdyKTxmaSYmV2kucHVzaCh3''@;'; put 'put ''cikpO2ZvcihZbj0xO1luPE9pOysrWW4pYzBbWW5dPT09WW4mJigtMSE9PXdyJiZjMFt3cl0hPT13cj9jMFtZbl09YzBbd3JdOi0xIT09cW4mJmMwW3FuXSE9PXFuJiYoYzBbWW5dPWMwW3FuXSkpO2ZvcihZbj0xO1luPE9pOysrWW4paWYoMCE9PXNyW1luXS50eXBlKXtpZigoZmk9WW4pIT1j''@;'; put 'put ''MFtmaV0pZG97UHJbWW5dPVByW2ZpPWMwW2ZpXV0rIi8iK1ByW1luXX13aGlsZSgwIT09ZmkmJi0xIT09YzBbZmldJiZmaSE9YzBbZmldKTtjMFtZbl09LTF9Zm9yKFByWzBdKz0iLyIsWW49MTtZbjxPaTsrK1luKTIhPT1zcltZbl0udHlwZSYmKFByW1luXSs9Ii8iKX0oeXMsd3MsZHUpLGR1''@;'; put 'put ''LnNoaWZ0KCk7dmFyIGJzPXtGaWxlSW5kZXg6eXMsRnVsbFBhdGhzOndzfTtyZXR1cm4gUHImJlByLnJhdyYmKGJzLnJhdz17aGVhZGVyOkkwLHNlY3RvcnM6VmF9KSxic31mdW5jdGlvbiBMdChzcixQcixocil7Zm9yKHZhciBxbj1zci5zaXplLHdyPVtdLFpyPXNyLnN0YXJ0O2hyJiZxbj4w''@;'; put 'put ''JiZacj49MDspd3IucHVzaChQci5zbGljZShacipuaSxacipuaStuaSkpLHFuLT1uaSxacj1vdShociw0KlpyKTtyZXR1cm4gMD09PXdyLmxlbmd0aD94aSgwKTpWKHdyKS5zbGljZSgwLHNyLnNpemUpfWZ1bmN0aW9uIHp0KHNyLFByLGhyLFluLHFuKXt2YXIgd3I9ZnI7aWYoc3I9PT1mcil7''@;'; put 'put ''aWYoMCE9PVByKXRocm93IG5ldyBFcnJvcigiRElGQVQgY2hhaW4gc2hvcnRlciB0aGFuIGV4cGVjdGVkIil9ZWxzZSBpZigtMSE9PXNyKXt2YXIgWnI9aHJbc3JdLGZpPShZbj4+PjIpLTE7aWYoIVpyKXJldHVybjtmb3IodmFyIE9pPTA7T2k8ZmkmJih3cj1vdShaciw0Kk9pKSkhPT1mcjsr''@;'; put 'put ''K09pKXFuLnB1c2god3IpO3p0KG91KFpyLFluLTQpLFByLTEsaHIsWW4scW4pfX1mdW5jdGlvbiBmbihzcixQcixocixZbixxbil7dmFyIHdyPVtdLFpyPVtdO3FufHwocW49W10pO3ZhciBmaT1Zbi0xLE9pPTAsYzA9MDtmb3IoT2k9UHI7T2k+PTA7KXtxbltPaV09ITAsd3Jbd3IubGVuZ3Ro''@;'; put 'put ''XT1PaSxaci5wdXNoKHNyW09pXSk7dmFyIFdpPWhyW01hdGguZmxvb3IoNCpPaS9ZbildO2lmKFluPDQrKGMwPTQqT2kmZmkpKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6ICIrT2krIiA0ICIrWW4pO2lmKCFzcltXaV0pYnJlYWs7T2k9b3Uoc3JbV2ldLGMwKX1yZXR1''@;'; put 'put ''cm57bm9kZXM6d3IsZGF0YTpBbihbWnJdKX19ZnVuY3Rpb24gVm4oc3IsUHIpe3JldHVybiBuZXcgRGF0ZSgxZTMqKEVhKHNyLFByKzQpLzFlNypNYXRoLnBvdygyLDMyKStFYShzcixQcikvMWU3LTExNjQ0NDczNjAwKSl9ZnVuY3Rpb24geXIoc3IsUHIpe3ZhciBocj1Qcnx8e30sWW49aHIu''@;'; put 'put ''cm9vdHx8IlJvb3QgRW50cnkiO2lmKHNyLkZ1bGxQYXRoc3x8KHNyLkZ1bGxQYXRocz1bXSksc3IuRmlsZUluZGV4fHwoc3IuRmlsZUluZGV4PVtdKSxzci5GdWxsUGF0aHMubGVuZ3RoIT09c3IuRmlsZUluZGV4Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImluY29uc2lzdGVudCBDRkIgc3Ry''@;'; put 'put ''dWN0dXJlIik7MD09PXNyLkZ1bGxQYXRocy5sZW5ndGgmJihzci5GdWxsUGF0aHNbMF09WW4rIi8iLHNyLkZpbGVJbmRleFswXT17bmFtZTpZbix0eXBlOjV9KSxoci5DTFNJRCYmKHNyLkZpbGVJbmRleFswXS5jbHNpZD1oci5DTFNJRCksZnVuY3Rpb24gb2koc3Ipe3ZhciBQcj0iXHgwMVNo''@;'; put 'put ''MzN0SjUiO2lmKCFwdC5maW5kKHNyLCIvIitQcikpe3ZhciBocj14aSg0KTtoclswXT01NSxoclsxXT1oclszXT01MCxoclsyXT01NCxzci5GaWxlSW5kZXgucHVzaCh7bmFtZTpQcix0eXBlOjIsY29udGVudDpocixzaXplOjQsTDo2OSxSOjY5LEM6Njl9KSxzci5GdWxsUGF0aHMucHVzaChz''@;'; put 'put ''ci5GdWxsUGF0aHNbMF0rUHIpLE1yKHNyKX19KHNyKX1mdW5jdGlvbiBNcihzcixQcil7eXIoc3IpO2Zvcih2YXIgaHI9ITEsWW49ITEscW49c3IuRnVsbFBhdGhzLmxlbmd0aC0xO3FuPj0wOy0tcW4pe3ZhciB3cj1zci5GaWxlSW5kZXhbcW5dO3N3aXRjaCh3ci50eXBlKXtjYXNlIDA6WW4/''@;'; put 'put ''aHI9ITA6KHNyLkZpbGVJbmRleC5wb3AoKSxzci5GdWxsUGF0aHMucG9wKCkpO2JyZWFrO2Nhc2UgMTpjYXNlIDI6Y2FzZSA1OlluPSEwLGlzTmFOKHdyLlIqd3IuTCp3ci5DKSYmKGhyPSEwKSx3ci5SPi0xJiZ3ci5MPi0xJiZ3ci5SPT13ci5MJiYoaHI9ITApO2JyZWFrO2RlZmF1bHQ6aHI9''@;'; put 'put ''ITB9fWlmKGhyfHxQcil7dmFyIFpyPW5ldyBEYXRlKDE5ODcsMSwxOSksZmk9MCxPaT1bXTtmb3IocW49MDtxbjxzci5GdWxsUGF0aHMubGVuZ3RoOysrcW4pMCE9PXNyLkZpbGVJbmRleFtxbl0udHlwZSYmT2kucHVzaChbc3IuRnVsbFBhdGhzW3FuXSxzci5GaWxlSW5kZXhbcW5dXSk7Zm9y''@;'; put 'put ''KHFuPTA7cW48T2kubGVuZ3RoOysrcW4pe3ZhciBjMD13ZShPaVtxbl1bMF0pO2ZvcihZbj0hMSxmaT0wO2ZpPE9pLmxlbmd0aDsrK2ZpKU9pW2ZpXVswXT09PWMwJiYoWW49ITApO1lufHxPaS5wdXNoKFtjMCx7bmFtZTp4ZShjMCkucmVwbGFjZSgiLyIsIiIpLHR5cGU6MSxjbHNpZDpKMCxj''@;'; put 'put ''dDpacixtdDpacixjb250ZW50Om51bGx9XSl9Zm9yKE9pLnNvcnQoZnVuY3Rpb24oSTAsdGEpe3JldHVybiBmdW5jdGlvbiBYKHNyLFByKXtmb3IodmFyIGhyPXNyLnNwbGl0KCIvIiksWW49UHIuc3BsaXQoIi8iKSxxbj0wLHdyPTAsWnI9TWF0aC5taW4oaHIubGVuZ3RoLFluLmxlbmd0aCk7''@;'; put 'put ''cW48WnI7Kytxbil7aWYod3I9aHJbcW5dLmxlbmd0aC1Zbltxbl0ubGVuZ3RoKXJldHVybiB3cjtpZihocltxbl0hPVluW3FuXSlyZXR1cm4gaHJbcW5dPFluW3FuXT8tMToxfXJldHVybiBoci5sZW5ndGgtWW4ubGVuZ3RofShJMFswXSx0YVswXSl9KSxzci5GdWxsUGF0aHM9W10sc3IuRmls''@;'; put 'put ''ZUluZGV4PVtdLHFuPTA7cW48T2kubGVuZ3RoOysrcW4pc3IuRnVsbFBhdGhzW3FuXT1PaVtxbl1bMF0sc3IuRmlsZUluZGV4W3FuXT1PaVtxbl1bMV07Zm9yKHFuPTA7cW48T2kubGVuZ3RoOysrcW4pe3ZhciBXaT1zci5GaWxlSW5kZXhbcW5dLFkwPXNyLkZ1bGxQYXRoc1txbl07aWYoV2ku''@;'; put 'put ''bmFtZT14ZShZMCkucmVwbGFjZSgiLyIsIiIpLFdpLkw9V2kuUj1XaS5DPS0oV2kuY29sb3I9MSksV2kuc2l6ZT1XaS5jb250ZW50P1dpLmNvbnRlbnQubGVuZ3RoOjAsV2kuc3RhcnQ9MCxXaS5jbHNpZD1XaS5jbHNpZHx8SjAsMD09PXFuKVdpLkM9T2kubGVuZ3RoPjE/MTotMSxXaS5zaXpl''@;'; put 'put ''PTAsV2kudHlwZT01O2Vsc2UgaWYoIi8iPT1ZMC5zbGljZSgtMSkpe2ZvcihmaT1xbisxO2ZpPE9pLmxlbmd0aCYmd2Uoc3IuRnVsbFBhdGhzW2ZpXSkhPVkwOysrZmkpO2ZvcihXaS5DPWZpPj1PaS5sZW5ndGg/LTE6ZmksZmk9cW4rMTtmaTxPaS5sZW5ndGgmJndlKHNyLkZ1bGxQYXRoc1tm''@;'; put 'put ''aV0pIT13ZShZMCk7KytmaSk7V2kuUj1maT49T2kubGVuZ3RoPy0xOmZpLFdpLnR5cGU9MX1lbHNlIHdlKHNyLkZ1bGxQYXRoc1txbisxXXx8IiIpPT13ZShZMCkmJihXaS5SPXFuKzEpLFdpLnR5cGU9Mn19fWZ1bmN0aW9uIFdyKHNyLFByKXt2YXIgaHI9UHJ8fHt9O2lmKE1yKHNyKSwiemlw''@;'; put 'put ''Ij09aHIuZmlsZVR5cGUpcmV0dXJuIGZ1bmN0aW9uIGhsKHNyLFByKXt2YXIgaHI9UHJ8fHt9LFluPVtdLHFuPVtdLHdyPXhpKDEpLFpyPWhyLmNvbXByZXNzaW9uPzg6MCxjMD0wLFdpPTAsWTA9MCxJMD0wLHRhPXNyLkZ1bGxQYXRoc1swXSxabz10YSx2bz1zci5GaWxlSW5kZXhbMF0sVmE9''@;'; put 'put ''W10sSHM9MDtmb3IoYzA9MTtjMDxzci5GdWxsUGF0aHMubGVuZ3RoOysrYzApaWYoWm89c3IuRnVsbFBhdGhzW2MwXS5zbGljZSh0YS5sZW5ndGgpLCh2bz1zci5GaWxlSW5kZXhbYzBdKS5zaXplJiZ2by5jb250ZW50JiYiXHgwMVNoMzN0SjUiIT1abyl7dmFyIHhjPVkwLGR1PXhpKFpvLmxl''@;'; put 'put ''bmd0aCk7Zm9yKFdpPTA7V2k8Wm8ubGVuZ3RoOysrV2kpZHUud3JpdGVfc2hpZnQoMSwxMjcmWm8uY2hhckNvZGVBdChXaSkpO2R1PWR1LnNsaWNlKDAsZHUubCksVmFbSTBdPXl0LmJ1Zih2by5jb250ZW50LDApO3ZhciB5cz12by5jb250ZW50Ozg9PVpyJiYoeXM9TWkoeXMpKSwod3I9eGko''@;'; put 'put ''MzApKS53cml0ZV9zaGlmdCg0LDY3MzI0NzUyKSx3ci53cml0ZV9zaGlmdCgyLDIwKSx3ci53cml0ZV9zaGlmdCgyLDApLHdyLndyaXRlX3NoaWZ0KDIsWnIpLHZvLm10P0ZlKHdyLHZvLm10KTp3ci53cml0ZV9zaGlmdCg0LDApLHdyLndyaXRlX3NoaWZ0KC00LFZhW0kwXSksd3Iud3JpdGVf''@;'; put 'put ''c2hpZnQoNCx5cy5sZW5ndGgpLHdyLndyaXRlX3NoaWZ0KDQsdm8uY29udGVudC5sZW5ndGgpLHdyLndyaXRlX3NoaWZ0KDIsZHUubGVuZ3RoKSx3ci53cml0ZV9zaGlmdCgyLDApLFkwKz13ci5sZW5ndGgsWW4ucHVzaCh3ciksWTArPWR1Lmxlbmd0aCxZbi5wdXNoKGR1KSxZMCs9eXMubGVu''@;'; put 'put ''Z3RoLFluLnB1c2goeXMpLCh3cj14aSg0NikpLndyaXRlX3NoaWZ0KDQsMzM2MzkyNDgpLHdyLndyaXRlX3NoaWZ0KDIsMCksd3Iud3JpdGVfc2hpZnQoMiwyMCksd3Iud3JpdGVfc2hpZnQoMiwwKSx3ci53cml0ZV9zaGlmdCgyLFpyKSx3ci53cml0ZV9zaGlmdCg0LDApLHdyLndyaXRlX3No''@;'; put 'put ''aWZ0KC00LFZhW0kwXSksd3Iud3JpdGVfc2hpZnQoNCx5cy5sZW5ndGgpLHdyLndyaXRlX3NoaWZ0KDQsdm8uY29udGVudC5sZW5ndGgpLHdyLndyaXRlX3NoaWZ0KDIsZHUubGVuZ3RoKSx3ci53cml0ZV9zaGlmdCgyLDApLHdyLndyaXRlX3NoaWZ0KDIsMCksd3Iud3JpdGVfc2hpZnQoMiww''@;'; put 'put ''KSx3ci53cml0ZV9zaGlmdCgyLDApLHdyLndyaXRlX3NoaWZ0KDQsMCksd3Iud3JpdGVfc2hpZnQoNCx4YyksSHMrPXdyLmwscW4ucHVzaCh3ciksSHMrPWR1Lmxlbmd0aCxxbi5wdXNoKGR1KSwrK0kwfXJldHVybih3cj14aSgyMikpLndyaXRlX3NoaWZ0KDQsMTAxMDEwMjU2KSx3ci53cml0''@;'; put 'put ''ZV9zaGlmdCgyLDApLHdyLndyaXRlX3NoaWZ0KDIsMCksd3Iud3JpdGVfc2hpZnQoMixJMCksd3Iud3JpdGVfc2hpZnQoMixJMCksd3Iud3JpdGVfc2hpZnQoNCxIcyksd3Iud3JpdGVfc2hpZnQoNCxZMCksd3Iud3JpdGVfc2hpZnQoMiwwKSxWKFtWKFluKSxWKHFuKSx3cl0pfShzcixocik7''@;'; put 'put ''dmFyIFluPWZ1bmN0aW9uKHRhKXtmb3IodmFyIFpvPTAsdm89MCxWYT0wO1ZhPHRhLkZpbGVJbmRleC5sZW5ndGg7KytWYSl7dmFyIEhzPXRhLkZpbGVJbmRleFtWYV07aWYoSHMuY29udGVudCl7dmFyIHhjPUhzLmNvbnRlbnQubGVuZ3RoO3hjPjAmJih4Yzw0MDk2P1pvKz14Yys2Mz4+Njp2''@;'; put 'put ''bys9eGMrNTExPj45KX19Zm9yKHZhciBkdT10YS5GdWxsUGF0aHMubGVuZ3RoKzM+PjIsd3M9Wm8rMTI3Pj43LGJzPShabys3Pj4zKSt2bytkdSt3cyxTMT1icysxMjc+PjcscDc9UzE8PTEwOT8wOk1hdGguY2VpbCgoUzEtMTA5KS8xMjcpO2JzK1MxK3A3KzEyNz4+Nz5TMTspcDc9KytTMTw9''@;'; put 'put ''MTA5PzA6TWF0aC5jZWlsKChTMS0xMDkpLzEyNyk7dmFyIFBkPVsxLHA3LFMxLHdzLGR1LHZvLFpvLDBdO3JldHVybiB0YS5GaWxlSW5kZXhbMF0uc2l6ZT1abzw8NixQZFs3XT0odGEuRmlsZUluZGV4WzBdLnN0YXJ0PVBkWzBdK1BkWzFdK1BkWzJdK1BkWzNdK1BkWzRdK1BkWzVdKSsoUGRb''@;'; put 'put ''Nl0rNz4+MyksUGR9KHNyKSxxbj14aShZbls3XTw8OSksd3I9MCxacj0wO2Zvcih3cj0wO3dyPDg7Kyt3cilxbi53cml0ZV9zaGlmdCgxLHcwW3dyXSk7Zm9yKHdyPTA7d3I8ODsrK3dyKXFuLndyaXRlX3NoaWZ0KDIsMCk7Zm9yKHFuLndyaXRlX3NoaWZ0KDIsNjIpLHFuLndyaXRlX3NoaWZ0''@;'; put 'put ''KDIsMykscW4ud3JpdGVfc2hpZnQoMiw2NTUzNCkscW4ud3JpdGVfc2hpZnQoMiw5KSxxbi53cml0ZV9zaGlmdCgyLDYpLHdyPTA7d3I8MzsrK3dyKXFuLndyaXRlX3NoaWZ0KDIsMCk7Zm9yKHFuLndyaXRlX3NoaWZ0KDQsMCkscW4ud3JpdGVfc2hpZnQoNCxZblsyXSkscW4ud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCxZblswXStZblsxXStZblsyXStZblszXS0xKSxxbi53cml0ZV9zaGlmdCg0LDApLHFuLndyaXRlX3NoaWZ0KDQsNDA5NikscW4ud3JpdGVfc2hpZnQoNCxZblszXT9ZblswXStZblsxXStZblsyXS0xOmZyKSxxbi53cml0ZV9zaGlmdCg0LFluWzNdKSxxbi53cml0ZV9zaGlmdCgtNCxZ''@;'; put 'put ''blsxXT9ZblswXS0xOmZyKSxxbi53cml0ZV9zaGlmdCg0LFluWzFdKSx3cj0wO3dyPDEwOTsrK3dyKXFuLndyaXRlX3NoaWZ0KC00LHdyPFluWzJdP1luWzFdK3dyOi0xKTtpZihZblsxXSlmb3IoWnI9MDtacjxZblsxXTsrK1pyKXtmb3IoO3dyPDIzNisxMjcqWnI7Kyt3cilxbi53cml0ZV9z''@;'; put 'put ''aGlmdCgtNCx3cjxZblsyXT9ZblsxXSt3cjotMSk7cW4ud3JpdGVfc2hpZnQoLTQsWnI9PT1ZblsxXS0xP2ZyOlpyKzEpfXZhciBmaT1mdW5jdGlvbih0YSl7Zm9yKFpyKz10YTt3cjxaci0xOysrd3IpcW4ud3JpdGVfc2hpZnQoLTQsd3IrMSk7dGEmJigrK3dyLHFuLndyaXRlX3NoaWZ0KC00''@;'; put 'put ''LGZyKSl9O2Zvcihacj13cj0wLFpyKz1ZblsxXTt3cjxacjsrK3dyKXFuLndyaXRlX3NoaWZ0KC00LGlvLkRJRlNFQ1QpO2Zvcihacis9WW5bMl07d3I8WnI7Kyt3cilxbi53cml0ZV9zaGlmdCgtNCxpby5GQVRTRUNUKTtmaShZblszXSksZmkoWW5bNF0pO2Zvcih2YXIgT2k9MCxjMD0wLFdp''@;'; put 'put ''PXNyLkZpbGVJbmRleFswXTtPaTxzci5GaWxlSW5kZXgubGVuZ3RoOysrT2kpKFdpPXNyLkZpbGVJbmRleFtPaV0pLmNvbnRlbnQmJiEoKGMwPVdpLmNvbnRlbnQubGVuZ3RoKTw0MDk2KSYmKFdpLnN0YXJ0PVpyLGZpKGMwKzUxMT4+OSkpO2ZvcihmaShZbls2XSs3Pj4zKTs1MTEmcW4ubDsp''@;'; put 'put ''cW4ud3JpdGVfc2hpZnQoLTQsaW8uRU5ET0ZDSEFJTik7Zm9yKFpyPXdyPTAsT2k9MDtPaTxzci5GaWxlSW5kZXgubGVuZ3RoOysrT2kpKFdpPXNyLkZpbGVJbmRleFtPaV0pLmNvbnRlbnQmJihjMD1XaS5jb250ZW50Lmxlbmd0aCkmJiEoYzA+PTQwOTYpJiYoV2kuc3RhcnQ9WnIsZmkoYzAr''@;'; put 'put ''NjM+PjYpKTtmb3IoOzUxMSZxbi5sOylxbi53cml0ZV9zaGlmdCgtNCxpby5FTkRPRkNIQUlOKTtmb3Iod3I9MDt3cjxZbls0XTw8MjsrK3dyKXt2YXIgWTA9c3IuRnVsbFBhdGhzW3dyXTtpZihZMCYmMCE9PVkwLmxlbmd0aCl7V2k9c3IuRmlsZUluZGV4W3dyXSwwPT09d3ImJihXaS5zdGFy''@;'; put 'put ''dD1XaS5zaXplP1dpLnN0YXJ0LTE6ZnIpO3ZhciBJMD0wPT09d3ImJmhyLnJvb3R8fFdpLm5hbWU7aWYoYzA9MiooSTAubGVuZ3RoKzEpLHFuLndyaXRlX3NoaWZ0KDY0LEkwLCJ1dGYxNmxlIikscW4ud3JpdGVfc2hpZnQoMixjMCkscW4ud3JpdGVfc2hpZnQoMSxXaS50eXBlKSxxbi53cml0''@;'; put 'put ''ZV9zaGlmdCgxLFdpLmNvbG9yKSxxbi53cml0ZV9zaGlmdCgtNCxXaS5MKSxxbi53cml0ZV9zaGlmdCgtNCxXaS5SKSxxbi53cml0ZV9zaGlmdCgtNCxXaS5DKSxXaS5jbHNpZClxbi53cml0ZV9zaGlmdCgxNixXaS5jbHNpZCwiaGV4Iik7ZWxzZSBmb3IoT2k9MDtPaTw0OysrT2kpcW4ud3Jp''@;'; put 'put ''dGVfc2hpZnQoNCwwKTtxbi53cml0ZV9zaGlmdCg0LFdpLnN0YXRlfHwwKSxxbi53cml0ZV9zaGlmdCg0LDApLHFuLndyaXRlX3NoaWZ0KDQsMCkscW4ud3JpdGVfc2hpZnQoNCwwKSxxbi53cml0ZV9zaGlmdCg0LDApLHFuLndyaXRlX3NoaWZ0KDQsV2kuc3RhcnQpLHFuLndyaXRlX3NoaWZ0''@;'; put 'put ''KDQsV2kuc2l6ZSkscW4ud3JpdGVfc2hpZnQoNCwwKX1lbHNle2ZvcihPaT0wO09pPDE3OysrT2kpcW4ud3JpdGVfc2hpZnQoNCwwKTtmb3IoT2k9MDtPaTwzOysrT2kpcW4ud3JpdGVfc2hpZnQoNCwtMSk7Zm9yKE9pPTA7T2k8MTI7KytPaSlxbi53cml0ZV9zaGlmdCg0LDApfX1mb3Iod3I9''@;'; put 'put ''MTt3cjxzci5GaWxlSW5kZXgubGVuZ3RoOysrd3IpaWYoKFdpPXNyLkZpbGVJbmRleFt3cl0pLnNpemU+PTQwOTYpe2Zvcihxbi5sPVdpLnN0YXJ0KzE8PDksT2k9MDtPaTxXaS5zaXplOysrT2kpcW4ud3JpdGVfc2hpZnQoMSxXaS5jb250ZW50W09pXSk7Zm9yKDs1MTEmT2k7KytPaSlxbi53''@;'; put 'put ''cml0ZV9zaGlmdCgxLDApfWZvcih3cj0xO3dyPHNyLkZpbGVJbmRleC5sZW5ndGg7Kyt3cilpZigoV2k9c3IuRmlsZUluZGV4W3dyXSkuc2l6ZT4wJiZXaS5zaXplPDQwOTYpe2ZvcihPaT0wO09pPFdpLnNpemU7KytPaSlxbi53cml0ZV9zaGlmdCgxLFdpLmNvbnRlbnRbT2ldKTtmb3IoOzYz''@;'; put 'put ''Jk9pOysrT2kpcW4ud3JpdGVfc2hpZnQoMSwwKX1mb3IoO3FuLmw8cW4ubGVuZ3RoOylxbi53cml0ZV9zaGlmdCgxLDApO3JldHVybiBxbn1yZS52ZXJzaW9uPSIxLjEuNCI7dmFyIERpLG5pPTY0LGZyPS0yLGhpPSJkMGNmMTFlMGExYjExYWUxIix3MD1bMjA4LDIwNywxNywyMjQsMTYxLDE3''@;'; put 'put ''NywyNiwyMjVdLEowPSIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsaW89e01BWFJFR1NFQ1Q6LTYsRElGU0VDVDotNCxGQVRTRUNUOi0zLEVORE9GQ0hBSU46ZnIsRlJFRVNFQ1Q6LTEsSEVBREVSX1NJR05BVFVSRTpoaSxIRUFERVJfTUlOT1JfVkVSU0lPTjoiM2UwMCIsTUFY''@;'; put 'put ''UkVHU0lEOi02LE5PU1RSRUFNOi0xLEhFQURFUl9DTFNJRDpKMCxFbnRyeVR5cGVzOlsidW5rbm93biIsInN0b3JhZ2UiLCJzdHJlYW0iLCJsb2NrYnl0ZXMiLCJwcm9wZXJ0eSIsInJvb3QiXX07ZnVuY3Rpb24gYmkoc3Ipe2Zvcih2YXIgUHI9bmV3IEFycmF5KHNyLmxlbmd0aCksaHI9MDto''@;'; put 'put ''cjxzci5sZW5ndGg7KytocilQcltocl09U3RyaW5nLmZyb21DaGFyQ29kZShzcltocl0pO3JldHVybiBQci5qb2luKCIiKX1mdW5jdGlvbiBNaShzcil7cmV0dXJuIERpP0RpLmRlZmxhdGVSYXdTeW5jKHNyKTpocyhzcil9Zm9yKHZhciBzcixQcixaMD1bMTYsMTcsMTgsMCw4LDcsOSw2LDEw''@;'; put 'put ''LDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0sbjA9WzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNThdLGZvPVsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMs''@;'; put 'put ''MjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzddLFgwPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSx6aT1YMD9uZXcgVWludDhBcnJheSgyNTYpOltdLGcwPTA7ZzA8MjU2OysrZzApemlbZzBdPSh2b2lkIDAs''@;'; put 'put ''MjU1JigoUHI9MTM5NTM2Jigoc3I9ZzApPDwxfHNyPDwxMSl8NTU4MTQ0Jihzcjw8NXxzcjw8MTUpKT4+MTZ8UHI+Pjh8UHIpKTtmdW5jdGlvbiBTMChzcixQcil7dmFyIGhyPXppWzI1NSZzcl07cmV0dXJuIFByPD04P2hyPj4+OC1QcjooaHI9aHI8PDh8emlbc3I+PjgmMjU1XSxQcjw9MTY/''@;'; put 'put ''aHI+Pj4xNi1QcjooaHI9aHI8PDh8emlbc3I+PjE2JjI1NV0pPj4+MjQtUHIpfWZ1bmN0aW9uIEFpKHNyLFByKXt2YXIgaHI9NyZQcixZbj1Qcj4+PjM7cmV0dXJuKHNyW1luXXwoaHI8PTY/MDpzcltZbisxXTw8OCkpPj4+aHImM31mdW5jdGlvbiB4MChzcixQcil7dmFyIGhyPTcmUHIsWW49''@;'; put 'put ''UHI+Pj4zO3JldHVybihzcltZbl18KGhyPD01PzA6c3JbWW4rMV08PDgpKT4+PmhyJjd9ZnVuY3Rpb24ganIoc3IsUHIpe3ZhciBocj03JlByLFluPVByPj4+MztyZXR1cm4oc3JbWW5dfChocjw9Mz8wOnNyW1luKzFdPDw4KSk+Pj5ociYzMX1mdW5jdGlvbiBDYShzcixQcil7dmFyIGhyPTcm''@;'; put 'put ''UHIsWW49UHI+Pj4zO3JldHVybihzcltZbl18KGhyPD0xPzA6c3JbWW4rMV08PDgpKT4+PmhyJjEyN31mdW5jdGlvbiBzcyhzcixQcixocil7dmFyIFluPTcmUHIscW49UHI+Pj4zLFpyPXNyW3FuXT4+PlluO3JldHVybiBocjw4LVlufHwoWnJ8PXNyW3FuKzFdPDw4LVluLGhyPDE2LVluKXx8''@;'; put 'put ''KFpyfD1zcltxbisyXTw8MTYtWW4saHI8MjQtWW4pfHwoWnJ8PXNyW3FuKzNdPDwyNC1ZbiksWnImKDE8PGhyKS0xfWZ1bmN0aW9uIF9sKHNyLFByKXt2YXIgaHI9c3IubGVuZ3RoLFluPTIqaHI+UHI/MipocjpQcis1LHFuPTA7aWYoaHI+PVByKXJldHVybiBzcjtpZihJZSl7dmFyIHdyPU8o''@;'; put 'put ''WW4pO2lmKHNyLmNvcHkpc3IuY29weSh3cik7ZWxzZSBmb3IoO3FuPHNyLmxlbmd0aDsrK3FuKXdyW3FuXT1zcltxbl07cmV0dXJuIHdyfWlmKFgwKXt2YXIgWnI9bmV3IFVpbnQ4QXJyYXkoWW4pO2lmKFpyLnNldClaci5zZXQoc3IpO2Vsc2UgZm9yKDtxbjxzci5sZW5ndGg7Kytxbilacltx''@;'; put 'put ''bl09c3JbcW5dO3JldHVybiBacn1yZXR1cm4gc3IubGVuZ3RoPVluLHNyfWZ1bmN0aW9uIFFhKHNyKXtmb3IodmFyIFByPW5ldyBBcnJheShzciksaHI9MDtocjxzcjsrK2hyKVByW2hyXT0wO3JldHVybiBQcn12YXIgaHM9ZnVuY3Rpb24oUHIpe3ZhciBocj14aSg1MCtNYXRoLmZsb29yKDEu''@;'; put 'put ''MSpQci5sZW5ndGgpKSxZbj1mdW5jdGlvbihocixZbil7Zm9yKHZhciBxbj0wO3FuPGhyLmxlbmd0aDspe3ZhciB3cj1NYXRoLm1pbig2NTUzNSxoci5sZW5ndGgtcW4pO2ZvcihZbi53cml0ZV9zaGlmdCgxLCsocW4rd3I9PWhyLmxlbmd0aCkpLFluLndyaXRlX3NoaWZ0KDIsd3IpLFluLndy''@;'; put 'put ''aXRlX3NoaWZ0KDIsNjU1MzUmfndyKTt3ci0tID4wOylZbltZbi5sKytdPWhyW3FuKytdfXJldHVybiBZbi5sfShQcixocik7cmV0dXJuIGhyLnNsaWNlKDAsWW4pfTtmdW5jdGlvbiBVYyhzcixQcixocil7dmFyIFluPTEscW49MCx3cj0wLFpyPTAsZmk9MCxPaT1zci5sZW5ndGgsYzA9WDA/''@;'; put 'put ''bmV3IFVpbnQxNkFycmF5KDMyKTpRYSgzMik7Zm9yKHdyPTA7d3I8MzI7Kyt3ciljMFt3cl09MDtmb3Iod3I9T2k7d3I8aHI7Kyt3cilzclt3cl09MDtPaT1zci5sZW5ndGg7dmFyIFdpPVgwP25ldyBVaW50MTZBcnJheShPaSk6UWEoT2kpO2Zvcih3cj0wO3dyPE9pOysrd3IpYzBbcW49c3Jb''@;'; put 'put ''d3JdXSsrLFluPHFuJiYoWW49cW4pLFdpW3dyXT0wO2ZvcihjMFswXT0wLHdyPTE7d3I8PVluOysrd3IpYzBbd3IrMTZdPWZpPWZpK2MwW3dyLTFdPDwxO2Zvcih3cj0wO3dyPE9pOysrd3IpMCE9KGZpPXNyW3dyXSkmJihXaVt3cl09YzBbZmkrMTZdKyspO3ZhciBZMD0wO2Zvcih3cj0wO3dy''@;'; put 'put ''PE9pOysrd3IpaWYoMCE9KFkwPXNyW3dyXSkpZm9yKGZpPVMwKFdpW3dyXSxZbik+PlluLVkwLFpyPSgxPDxZbis0LVkwKS0xO1pyPj0wOy0tWnIpUHJbZml8WnI8PFkwXT0xNSZZMHx3cjw8NDtyZXR1cm4gWW59dmFyIGcyPVgwP25ldyBVaW50MTZBcnJheSg1MTIpOlFhKDUxMikscnI9WDA/''@;'; put 'put ''bmV3IFVpbnQxNkFycmF5KDMyKTpRYSgzMik7aWYoIVgwKXtmb3IodmFyIERyPTA7RHI8NTEyOysrRHIpZzJbRHJdPTA7Zm9yKERyPTA7RHI8MzI7KytEcilycltEcl09MH0hZnVuY3Rpb24oKXtmb3IodmFyIHNyPVtdLFByPTA7UHI8MzI7UHIrKylzci5wdXNoKDUpO1VjKHNyLHJyLDMyKTt2''@;'; put 'put ''YXIgaHI9W107Zm9yKFByPTA7UHI8PTE0MztQcisrKWhyLnB1c2goOCk7Zm9yKDtQcjw9MjU1O1ByKyspaHIucHVzaCg5KTtmb3IoO1ByPD0yNzk7UHIrKyloci5wdXNoKDcpO2Zvcig7UHI8PTI4NztQcisrKWhyLnB1c2goOCk7VWMoaHIsZzIsMjg4KX0oKTt2YXIgVXI9WDA/bmV3IFVpbnQx''@;'; put 'put ''NkFycmF5KDMyNzY4KTpRYSgzMjc2OCksaDA9WDA/bmV3IFVpbnQxNkFycmF5KDMyNzY4KTpRYSgzMjc2OCksZWk9WDA/bmV3IFVpbnQxNkFycmF5KDEyOCk6UWEoMTI4KSx0MD0xLGdpPTE7ZnVuY3Rpb24gJGkoc3IsUHIpe3ZhciBocj1qcihzcixQcikrMjU3LFluPWpyKHNyLFByKz01KSsx''@;'; put 'put ''LHFuPWZ1bmN0aW9uIGYwKHNyLFByKXt2YXIgaHI9NyZQcixZbj1Qcj4+PjM7cmV0dXJuKHNyW1luXXwoaHI8PTQ/MDpzcltZbisxXTw8OCkpPj4+aHImMTV9KHNyLFByKz01KSs0O1ByKz00O2Zvcih2YXIgd3I9MCxacj1YMD9uZXcgVWludDhBcnJheSgxOSk6UWEoMTkpLGZpPVswLDAsMCww''@;'; put 'put ''LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSxPaT0xLGMwPVgwP25ldyBVaW50OEFycmF5KDgpOlFhKDgpLFdpPVgwP25ldyBVaW50OEFycmF5KDgpOlFhKDgpLFkwPVpyLmxlbmd0aCxJMD0wO0kwPHFuOysrSTApWnJbWjBbSTBdXT13cj14MChzcixQciksT2k8d3ImJihPaT13ciks''@;'; put 'put ''YzBbd3JdKyssUHIrPTM7dmFyIHRhPTA7Zm9yKGMwWzBdPTAsSTA9MTtJMDw9T2k7KytJMClXaVtJMF09dGE9dGErYzBbSTAtMV08PDE7Zm9yKEkwPTA7STA8WTA7KytJMCkwIT0odGE9WnJbSTBdKSYmKGZpW0kwXT1XaVt0YV0rKyk7dmFyIFpvPTA7Zm9yKEkwPTA7STA8WTA7KytJMClpZigw''@;'; put 'put ''IT0oWm89WnJbSTBdKSl7dGE9emlbZmlbSTBdXT4+OC1abztmb3IodmFyIHZvPSgxPDw3LVpvKS0xO3ZvPj0wOy0tdm8pZWlbdGF8dm88PFpvXT03JlpvfEkwPDwzfXZhciBWYT1bXTtmb3IoT2k9MTtWYS5sZW5ndGg8aHIrWW47KXN3aXRjaCh0YT1laVtDYShzcixQcildLFByKz03JnRhLHRh''@;'; put 'put ''Pj4+PTMpe2Nhc2UgMTY6Zm9yKHdyPTMrQWkoc3IsUHIpLFByKz0yLHRhPVZhW1ZhLmxlbmd0aC0xXTt3ci0tID4wOylWYS5wdXNoKHRhKTticmVhaztjYXNlIDE3OmZvcih3cj0zK3gwKHNyLFByKSxQcis9Mzt3ci0tID4wOylWYS5wdXNoKDApO2JyZWFrO2Nhc2UgMTg6Zm9yKHdyPTExK0Nh''@;'; put 'put ''KHNyLFByKSxQcis9Nzt3ci0tID4wOylWYS5wdXNoKDApO2JyZWFrO2RlZmF1bHQ6VmEucHVzaCh0YSksT2k8dGEmJihPaT10YSl9dmFyIEhzPVZhLnNsaWNlKDAsaHIpLHhjPVZhLnNsaWNlKGhyKTtmb3IoSTA9aHI7STA8Mjg2OysrSTApSHNbSTBdPTA7Zm9yKEkwPVluO0kwPDMwOysrSTAp''@;'; put 'put ''eGNbSTBdPTA7cmV0dXJuIHQwPVVjKEhzLFVyLDI4NiksZ2k9VWMoeGMsaDAsMzApLFByfWZ1bmN0aW9uIE0wKHNyLFByKXt2YXIgWW49ZnVuY3Rpb24gTW8oc3IsUHIpe2lmKDM9PXNyWzBdJiYhKDMmc3JbMV0pKXJldHVybltoZShQciksMl07Zm9yKHZhciBocj0wLFluPTAscW49TyhQcnx8''@;'; put 'put ''MTw8MTgpLHdyPTAsWnI9cW4ubGVuZ3RoPj4+MCxmaT0wLE9pPTA7MD09KDEmWW4pOylpZihZbj14MChzcixociksaHIrPTMsWW4+Pj4xIT0wKWZvcihZbj4+PjE9PTE/KGZpPTksT2k9NSk6KGhyPSRpKHNyLGhyKSxmaT10MCxPaT1naSksIVByJiZacjx3ciszMjc2NyYmKFpyPShxbj1fbChx''@;'; put 'put ''bix3ciszMjc2NykpLmxlbmd0aCk7Oyl7dmFyIFdpPXNzKHNyLGhyLGZpKSxZMD1Zbj4+PjE9PTE/ZzJbV2ldOlVyW1dpXTtpZihocis9MTUmWTAsMD09KChZMD4+Pj00KT4+PjgmMjU1KSlxblt3cisrXT1ZMDtlbHNle2lmKDI1Nj09WTApYnJlYWs7dmFyIEkwPShZMC09MjU3KTw4PzA6WTAt''@;'; put 'put ''ND4+MjtJMD41JiYoSTA9MCk7dmFyIHRhPXdyK24wW1kwXTtJMD4wJiYodGErPXNzKHNyLGhyLEkwKSxocis9STApLFdpPXNzKHNyLGhyLE9pKSxocis9MTUmKFkwPVluPj4+MT09MT9ycltXaV06aDBbV2ldKTt2YXIgWm89KFkwPj4+PTQpPDQ/MDpZMC0yPj4xLHZvPWZvW1kwXTtmb3IoWm8+''@;'; put 'put ''MCYmKHZvKz1zcyhzcixocixabyksaHIrPVpvKSwhUHImJlpyPHRhJiYoWnI9KHFuPV9sKHFuLHRhKSkubGVuZ3RoKTt3cjx0YTspcW5bd3JdPXFuW3dyLXZvXSwrK3dyfX1lbHNlezcmaHImJihocis9OC0oNyZocikpO3ZhciBjMD1zcltocj4+PjNdfHNyWzErKGhyPj4+MyldPDw4O2lmKGhy''@;'; put 'put ''Kz0zMiwhUHImJlpyPHdyK2MwJiYoWnI9KHFuPV9sKHFuLHdyK2MwKSkubGVuZ3RoKSwiZnVuY3Rpb24iPT10eXBlb2Ygc3IuY29weSlzci5jb3B5KHFuLHdyLGhyPj4+MywoaHI+Pj4zKStjMCksd3IrPWMwLGhyKz04KmMwO2Vsc2UgZm9yKDtjMC0tID4wOylxblt3cisrXT1zcltocj4+PjNd''@;'; put 'put ''LGhyKz04fXJldHVybltQcj9xbjpxbi5zbGljZSgwLHdyKSxocis3Pj4+M119KHNyLnNsaWNlKHNyLmx8fDApLFByKTtyZXR1cm4gc3IubCs9WW5bMV0sWW5bMF19ZnVuY3Rpb24gbW8oc3IsUHIpe2lmKCFzcil0aHJvdyBuZXcgRXJyb3IoUHIpOyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29s''@;'; put 'put ''ZSYmY29uc29sZS5lcnJvcihQcil9ZnVuY3Rpb24gdjAoc3IsUHIpe3ZhciBocj1zcjtLbChociwwKTt2YXIgd3I9e0ZpbGVJbmRleDpbXSxGdWxsUGF0aHM6W119O3lyKHdyLHtyb290OlByLnJvb3R9KTtmb3IodmFyIFpyPWhyLmxlbmd0aC00Oyg4MCE9aHJbWnJdfHw3NSE9aHJbWnIrMV18''@;'; put 'put ''fDUhPWhyW1pyKzJdfHw2IT1ocltaciszXSkmJlpyPj0wOyktLVpyO2hyLmw9WnIrNCxoci5sKz00O3ZhciBmaT1oci5yZWFkX3NoaWZ0KDIpO2hyLmwrPTY7dmFyIE9pPWhyLnJlYWRfc2hpZnQoNCk7Zm9yKGhyLmw9T2ksWnI9MDtacjxmaTsrK1pyKXtoci5sKz0yMDt2YXIgYzA9aHIucmVh''@;'; put 'put ''ZF9zaGlmdCg0KSxXaT1oci5yZWFkX3NoaWZ0KDQpLFkwPWhyLnJlYWRfc2hpZnQoMiksSTA9aHIucmVhZF9zaGlmdCgyKSx0YT1oci5yZWFkX3NoaWZ0KDIpO2hyLmwrPTg7dmFyIFpvPWhyLnJlYWRfc2hpZnQoNCksdm89VmUoaHIuc2xpY2UoaHIubCtZMCxoci5sK1kwK0kwKSk7aHIubCs9''@;'; put 'put ''WTArSTArdGE7dmFyIFZhPWhyLmw7aHIubD1abys0LENsKGhyLGMwLFdpLHdyLHZvKSxoci5sPVZhfXJldHVybiB3cn1mdW5jdGlvbiBDbChzcixQcixocixZbixxbil7c3IubCs9Mjt2YXIgd3I9c3IucmVhZF9zaGlmdCgyKSxacj1zci5yZWFkX3NoaWZ0KDIpLGZpPWZ1bmN0aW9uIFplKHNy''@;'; put 'put ''KXt2YXIgUHI9NjU1MzUmc3IucmVhZF9zaGlmdCgyKSxocj02NTUzNSZzci5yZWFkX3NoaWZ0KDIpLFluPW5ldyBEYXRlLHFuPTMxJmhyLHdyPTE1Jihocj4+Pj01KTtocj4+Pj00LFluLnNldE1pbGxpc2Vjb25kcygwKSxZbi5zZXRGdWxsWWVhcihocisxOTgwKSxZbi5zZXRNb250aCh3ci0x''@;'; put 'put ''KSxZbi5zZXREYXRlKHFuKTt2YXIgWnI9MzEmUHIsZmk9NjMmKFByPj4+PTUpO3JldHVybiBZbi5zZXRIb3VycyhQcj4+Pj02KSxZbi5zZXRNaW51dGVzKGZpKSxZbi5zZXRTZWNvbmRzKFpyPDwxKSxZbn0oc3IpO2lmKDgyNTcmd3IpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAg''@;'; put 'put ''ZW5jcnlwdGlvbiIpO2Zvcih2YXIgT2k9c3IucmVhZF9zaGlmdCg0KSxjMD1zci5yZWFkX3NoaWZ0KDQpLFdpPXNyLnJlYWRfc2hpZnQoNCksWTA9c3IucmVhZF9zaGlmdCgyKSxJMD1zci5yZWFkX3NoaWZ0KDIpLHRhPSIiLFpvPTA7Wm88WTA7Kytabyl0YSs9U3RyaW5nLmZyb21DaGFyQ29k''@;'; put 'put ''ZShzcltzci5sKytdKTtpZihJMCl7dmFyIHZvPVZlKHNyLnNsaWNlKHNyLmwsc3IubCtJMCkpOyh2b1syMTU4OV18fHt9KS5tdCYmKGZpPXZvWzIxNTg5XS5tdCksKChxbnx8e30pWzIxNTg5XXx8e30pLm10JiYoZmk9cW5bMjE1ODldLm10KX1zci5sKz1JMDt2YXIgVmE9c3Iuc2xpY2Uoc3Iu''@;'; put 'put ''bCxzci5sK2MwKTtzd2l0Y2goWnIpe2Nhc2UgODpWYT1mdW5jdGlvbiBIcihzcixQcil7aWYoIURpKXJldHVybiBNMChzcixQcik7dmFyIFluPW5ldygwLERpLkluZmxhdGVSYXcpLHFuPVluLl9wcm9jZXNzQ2h1bmsoc3Iuc2xpY2Uoc3IubCksWW4uX2ZpbmlzaEZsdXNoRmxhZyk7cmV0dXJu''@;'; put 'put ''IHNyLmwrPVluLmJ5dGVzUmVhZCxxbn0oc3IsV2kpO2JyZWFrO2Nhc2UgMDpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIENvbXByZXNzaW9uIG1ldGhvZCAiK1pyKX12YXIgSHM9ITE7OCZ3ciYmKDEzNDY5NTc2MD09KE9pPXNyLnJlYWRfc2hpZnQoNCkp''@;'; put 'put ''JiYoT2k9c3IucmVhZF9zaGlmdCg0KSxIcz0hMCksYzA9c3IucmVhZF9zaGlmdCg0KSxXaT1zci5yZWFkX3NoaWZ0KDQpKSxjMCE9UHImJm1vKEhzLCJCYWQgY29tcHJlc3NlZCBzaXplOiAiK1ByKyIgIT0gIitjMCksV2khPWhyJiZtbyhIcywiQmFkIHVuY29tcHJlc3NlZCBzaXplOiAiK2hy''@;'; put 'put ''KyIgIT0gIitXaSk7dmFyIHhjPXl0LmJ1ZihWYSwwKTtPaT4+MCE9eGM+PjAmJm1vKEhzLCJCYWQgQ1JDMzIgY2hlY2tzdW06ICIrT2krIiAhPSAiK3hjKSxNMihZbix0YSxWYSx7dW5zYWZlOiEwLG10OmZpfSl9ZnVuY3Rpb24gTTIoc3IsUHIsaHIsWW4pe3ZhciBxbj1ZbiYmWW4udW5zYWZl''@;'; put 'put ''O3FufHx5cihzcik7dmFyIHdyPSFxbiYmcHQuZmluZChzcixQcik7aWYoIXdyKXt2YXIgWnI9c3IuRnVsbFBhdGhzWzBdO1ByLnNsaWNlKDAsWnIubGVuZ3RoKT09WnI/WnI9UHI6KCIvIiE9WnIuc2xpY2UoLTEpJiYoWnIrPSIvIiksWnI9KFpyK1ByKS5yZXBsYWNlKCIvLyIsIi8iKSksd3I9''@;'; put 'put ''e25hbWU6eGUoUHIpLHR5cGU6Mn0sc3IuRmlsZUluZGV4LnB1c2god3IpLHNyLkZ1bGxQYXRocy5wdXNoKFpyKSxxbnx8cHQudXRpbHMuY2ZiX2djKHNyKX1yZXR1cm4gd3IuY29udGVudD1ocix3ci5zaXplPWhyP2hyLmxlbmd0aDowLFluJiYoWW4uQ0xTSUQmJih3ci5jbHNpZD1Zbi5DTFNJ''@;'; put 'put ''RCksWW4ubXQmJih3ci5tdD1Zbi5tdCksWW4uY3QmJih3ci5jdD1Zbi5jdCkpLHdyfXJldHVybiByZS5maW5kPWZ1bmN0aW9uIGFpKHNyLFByKXt2YXIgaHI9c3IuRnVsbFBhdGhzLm1hcChmdW5jdGlvbihPaSl7cmV0dXJuIE9pLnRvVXBwZXJDYXNlKCl9KSxZbj1oci5tYXAoZnVuY3Rpb24o''@;'; put 'put ''T2kpe3ZhciBjMD1PaS5zcGxpdCgiLyIpO3JldHVybiBjMFtjMC5sZW5ndGgtKCIvIj09T2kuc2xpY2UoLTEpPzI6MSldfSkscW49ITE7NDc9PT1Qci5jaGFyQ29kZUF0KDApPyhxbj0hMCxQcj1oclswXS5zbGljZSgwLC0xKStQcik6cW49LTEhPT1Qci5pbmRleE9mKCIvIik7dmFyIHdyPVBy''@;'; put 'put ''LnRvVXBwZXJDYXNlKCksWnI9ITA9PT1xbj9oci5pbmRleE9mKHdyKTpZbi5pbmRleE9mKHdyKTtpZigtMSE9PVpyKXJldHVybiBzci5GaWxlSW5kZXhbWnJdO3ZhciBmaT0hd3IubWF0Y2goUyk7Zm9yKHdyPXdyLnJlcGxhY2UoVCwiIiksZmkmJih3cj13ci5yZXBsYWNlKFMsIiEiKSksWnI9''@;'; put 'put ''MDtacjxoci5sZW5ndGg7KytacilpZigoZmk/aHJbWnJdLnJlcGxhY2UoUywiISIpOmhyW1pyXSkucmVwbGFjZShULCIiKT09d3J8fChmaT9Zbltacl0ucmVwbGFjZShTLCIhIik6WW5bWnJdKS5yZXBsYWNlKFQsIiIpPT13cilyZXR1cm4gc3IuRmlsZUluZGV4W1pyXTtyZXR1cm4gbnVsbH0s''@;'; put 'put ''cmUucmVhZD1mdW5jdGlvbiBpaShzcixQcil7c3dpdGNoKFByJiZQci50eXBlfHwiYmFzZTY0Iil7Y2FzZSJmaWxlIjpyZXR1cm4gZnVuY3Rpb24gSXIoc3IsUHIpe3JldHVybiBTdCgpLEl0KFVlLnJlYWRGaWxlU3luYyhzciksUHIpfShzcixQcik7Y2FzZSJiYXNlNjQiOnJldHVybiBJdCh6''@;'; put 'put ''KFNlLmRlY29kZShzcikpLFByKTtjYXNlImJpbmFyeSI6cmV0dXJuIEl0KHooc3IpLFByKX1yZXR1cm4gSXQoc3IsUHIpfSxyZS5wYXJzZT1JdCxyZS53cml0ZT1mdW5jdGlvbiB6cihzcixQcil7dmFyIGhyPVdyKHNyLFByKTtzd2l0Y2goUHImJlByLnR5cGUpe2Nhc2UiZmlsZSI6cmV0dXJu''@;'; put 'put ''IFN0KCksVWUud3JpdGVGaWxlU3luYyhQci5maWxlbmFtZSxociksaHI7Y2FzZSJiaW5hcnkiOnJldHVybiBiaShocik7Y2FzZSJiYXNlNjQiOnJldHVybiBTZS5lbmNvZGUoYmkoaHIpKX1yZXR1cm4gaHJ9LHJlLndyaXRlRmlsZT1mdW5jdGlvbiBiMChzcixQcixocil7U3QoKTt2YXIgWW49''@;'; put 'put ''V3Ioc3IsaHIpO1VlLndyaXRlRmlsZVN5bmMoUHIsWW4pfSxyZS51dGlscz17Y2ZiX25ldzpmdW5jdGlvbiBGMihzcil7dmFyIFByPXt9O3JldHVybiB5cihQcixzciksUHJ9LGNmYl9hZGQ6TTIsY2ZiX2RlbDpmdW5jdGlvbiBJcyhzcixQcil7eXIoc3IpO3ZhciBocj1wdC5maW5kKHNyLFBy''@;'; put 'put ''KTtpZihocilmb3IodmFyIFluPTA7WW48c3IuRmlsZUluZGV4Lmxlbmd0aDsrK1luKWlmKHNyLkZpbGVJbmRleFtZbl09PWhyKXJldHVybiBzci5GaWxlSW5kZXguc3BsaWNlKFluLDEpLHNyLkZ1bGxQYXRocy5zcGxpY2UoWW4sMSksITA7cmV0dXJuITF9LGNmYl9tb3Y6ZnVuY3Rpb24gZzUo''@;'; put 'put ''c3IsUHIsaHIpe3lyKHNyKTt2YXIgWW49cHQuZmluZChzcixQcik7aWYoWW4pZm9yKHZhciBxbj0wO3FuPHNyLkZpbGVJbmRleC5sZW5ndGg7KytxbilpZihzci5GaWxlSW5kZXhbcW5dPT1ZbilyZXR1cm4gc3IuRmlsZUluZGV4W3FuXS5uYW1lPXhlKGhyKSxzci5GdWxsUGF0aHNbcW5dPWhy''@;'; put 'put ''LCEwO3JldHVybiExfSxjZmJfZ2M6ZnVuY3Rpb24gcTQoc3Ipe01yKHNyLCEwKX0sUmVhZFNoaWZ0OnNkLENoZWNrRmllbGQ6TjEscHJlcF9ibG9iOktsLGJjb25jYXQ6Vix1c2VfemxpYjpmdW5jdGlvbiBjaShzcil7dHJ5e3ZhciBocj1uZXcoMCxzci5JbmZsYXRlUmF3KTtpZihoci5fcHJv''@;'; put 'put ''Y2Vzc0NodW5rKG5ldyBVaW50OEFycmF5KFszLDBdKSxoci5fZmluaXNoRmx1c2hGbGFnKSwhaHIuYnl0ZXNSZWFkKXRocm93IG5ldyBFcnJvcigiemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkIik7RGk9c3J9Y2F0Y2goWW4pe2NvbnNvbGUuZXJyb3IoImNhbm5vdCB1c2UgbmF0aXZl''@;'; put 'put ''IHpsaWI6ICIrKFluLm1lc3NhZ2V8fFluKSl9fSxfZGVmbGF0ZVJhdzpocyxfaW5mbGF0ZVJhdzpNMCxjb25zdHM6aW99LHJlfSgpO3RyeXttdD1MKDc4NzczKX1jYXRjaChIKXt9ZnVuY3Rpb24gdnQoSCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBIP25lKEgpOkFycmF5LmlzQXJyYXkoSCk/''@;'; put 'put ''ZnVuY3Rpb24geChIKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQ4QXJyYXkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCIpO3JldHVybiBuZXcgVWludDhBcnJheShIKX0oSCk6SH1mdW5jdGlvbiBmdChILHJlLFgpe2lmKHZvaWQgMCE9PW10JiZtdC53cml0ZUZpbGVTeW5jKXJl''@;'; put 'put ''dHVybiBYP210LndyaXRlRmlsZVN5bmMoSCxyZSxYKTptdC53cml0ZUZpbGVTeW5jKEgscmUpO3ZhciB3ZT0idXRmOCI9PVg/QW8ocmUpOnJlO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSUVfU2F2ZUZpbGUpcmV0dXJuIElFX1NhdmVGaWxlKHdlLEgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Yg''@;'; put 'put ''QmxvYil7dmFyIHhlPW5ldyBCbG9iKFt2dCh3ZSldLHt0eXBlOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci5tc1NhdmVCbG9iKXJldHVybiBuYXZpZ2F0b3IubXNTYXZlQmxvYih4ZSxIKTtpZigidW5kZWZp''@;'; put 'put ''bmVkIiE9dHlwZW9mIHNhdmVBcylyZXR1cm4gc2F2ZUFzKHhlLEgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgVVJMJiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jcmVhdGVFbGVtZW50JiZVUkwuY3JlYXRlT2JqZWN0VVJMKXt2YXIgRmU9VVJMLmNyZWF0ZU9iamVj''@;'; put 'put ''dFVSTCh4ZSk7aWYoIm9iamVjdCI9PXR5cGVvZiBjaHJvbWUmJiJmdW5jdGlvbiI9PXR5cGVvZihjaHJvbWUuZG93bmxvYWRzfHx7fSkuZG93bmxvYWQpcmV0dXJuIFVSTC5yZXZva2VPYmplY3RVUkwmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2V0VGltZW91dCYmc2V0VGltZW91dChmdW5jdGlv''@;'; put 'put ''bigpe1VSTC5yZXZva2VPYmplY3RVUkwoRmUpfSw2ZTQpLGNocm9tZS5kb3dubG9hZHMuZG93bmxvYWQoe3VybDpGZSxmaWxlbmFtZTpILHNhdmVBczohMH0pO3ZhciBaZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aWYobnVsbCE9WmUuZG93bmxvYWQpcmV0dXJuIFplLmRvd25sb2Fk''@;'; put 'put ''PUgsWmUuaHJlZj1GZSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFplKSxaZS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoWmUpLFVSTC5yZXZva2VPYmplY3RVUkwmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2V0VGltZW91dCYmc2V0VGltZW91dChmdW5jdGlvbigpe1VSTC5y''@;'; put 'put ''ZXZva2VPYmplY3RVUkwoRmUpfSw2ZTQpLEZlfX1pZigidW5kZWZpbmVkIiE9dHlwZW9mICQmJiJ1bmRlZmluZWQiIT10eXBlb2YgRmlsZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBGb2xkZXIpdHJ5e3ZhciBWZT1GaWxlKEgpO3JldHVybiBWZS5vcGVuKCJ3IiksVmUuZW5jb2Rpbmc9ImJpbmFy''@;'; put 'put ''eSIsQXJyYXkuaXNBcnJheShyZSkmJihyZT10ZShyZSkpLFZlLndyaXRlKHJlKSxWZS5jbG9zZSgpLHJlfWNhdGNoKFVlKXtpZighVWUubWVzc2FnZXx8IVVlLm1lc3NhZ2UubWF0Y2goL29uc3RydWN0LykpdGhyb3cgVWV9dGhyb3cgbmV3IEVycm9yKCJjYW5ub3Qgc2F2ZSBmaWxlICIrSCl9''@;'; put 'put ''ZnVuY3Rpb24gb24oSCl7Zm9yKHZhciByZT1PYmplY3Qua2V5cyhIKSxYPVtdLHdlPTA7d2U8cmUubGVuZ3RoOysrd2UpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEgscmVbd2VdKSYmWC5wdXNoKHJlW3dlXSk7cmV0dXJuIFh9ZnVuY3Rpb24gX3QoSCxyZSl7Zm9yKHZh''@;'; put 'put ''ciBYPVtdLHdlPW9uKEgpLHhlPTA7eGUhPT13ZS5sZW5ndGg7Kyt4ZSludWxsPT1YW0hbd2VbeGVdXVtyZV1dJiYoWFtIW3dlW3hlXV1bcmVdXT13ZVt4ZV0pO3JldHVybiBYfWZ1bmN0aW9uIG50KEgpe2Zvcih2YXIgcmU9W10sWD1vbihIKSx3ZT0wO3dlIT09WC5sZW5ndGg7Kyt3ZSlyZVtI''@;'; put 'put ''W1hbd2VdXV09WFt3ZV07cmV0dXJuIHJlfWZ1bmN0aW9uIHFlKEgpe2Zvcih2YXIgcmU9W10sWD1vbihIKSx3ZT0wO3dlIT09WC5sZW5ndGg7Kyt3ZSlyZVtIW1hbd2VdXV09cGFyc2VJbnQoWFt3ZV0sMTApO3JldHVybiByZX12YXIgY3QsTnQsUnQ9bmV3IERhdGUoMTg5OSwxMSwzMCwwLDAs''@;'; put 'put ''MCksQ3Q9MDtmdW5jdGlvbiB6ZSgpe0N0PVJ0LmdldFRpbWUoKSs2ZTQqKChuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKS1SdC5nZXRUaW1lem9uZU9mZnNldCgpKSxjdD1mdW5jdGlvbihyZSxYKXt2YXIgd2U9cmUuZ2V0VGltZSgpO3JldHVybiBYJiYod2UtPTEyNjMxNjhlNSksKHdl''@;'; put 'put ''LUN0KS84NjRlNX0sTnQ9ZnVuY3Rpb24ocmUpe3ZhciBYPW5ldyBEYXRlO3JldHVybiBYLnNldFRpbWUoMjQqcmUqNjAqNjAqMWUzK0N0KSxYfX1mdW5jdGlvbiBqdChIKXt2YXIgcmU9MCxYPTAsd2U9ITEseGU9SC5tYXRjaCgvUChbMC05XC5dK1kpPyhbMC05XC5dK00pPyhbMC05XC5dK0Qp''@;'; put 'put ''P1QoWzAtOVwuXStIKT8oWzAtOVwuXStNKT8oWzAtOVwuXStTKT8vKTtpZigheGUpdGhyb3cgbmV3IEVycm9yKCJ8IitIKyJ8IGlzIG5vdCBhbiBJU084NjAxIER1cmF0aW9uIik7Zm9yKHZhciBGZT0xO0ZlIT14ZS5sZW5ndGg7KytGZSlpZih4ZVtGZV0pe3N3aXRjaChYPTEsRmU+MyYmKHdl''@;'; put 'put ''PSEwKSx4ZVtGZV0uc2xpY2UoeGVbRmVdLmxlbmd0aC0xKSl7Y2FzZSJZIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogIit4ZVtGZV0uc2xpY2UoeGVbRmVdLmxlbmd0aC0xKSk7Y2FzZSJEIjpYKj0yNDtjYXNlIkgiOlgqPTYwO2Nhc2UiTSI6aWYo''@;'; put 'put ''IXdlKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgSVNPIER1cmF0aW9uIEZpZWxkOiBNIik7WCo9NjB9cmUrPVgqcGFyc2VJbnQoeGVbRmVdLDEwKX1yZXR1cm4gcmV9emUoKTt2YXIgSnQ9bmV3IERhdGUoIjIwMTctMDItMTlUMTk6MDY6MDkuMDAwWiIpO2lzTmFOKEp0LmdldEZ1bGxZ''@;'; put 'put ''ZWFyKCkpJiYoSnQ9bmV3IERhdGUoIjIvMTkvMTciKSk7dmFyIG1uPTIwMTc9PUp0LmdldEZ1bGxZZWFyKCk7ZnVuY3Rpb24gcG4oSCxyZSl7dmFyIFg9bmV3IERhdGUoSCk7aWYobW4pcmV0dXJuIHJlPjA/WC5zZXRUaW1lKFguZ2V0VGltZSgpKzYwKlguZ2V0VGltZXpvbmVPZmZzZXQoKSox''@;'; put 'put ''ZTMpOnJlPDAmJlguc2V0VGltZShYLmdldFRpbWUoKS02MCpYLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKSxYO2lmKEggaW5zdGFuY2VvZiBEYXRlKXJldHVybiBIO2lmKDE5MTc9PUp0LmdldEZ1bGxZZWFyKCkmJiFpc05hTihYLmdldEZ1bGxZZWFyKCkpKXt2YXIgd2U9WC5nZXRGdWxsWWVh''@;'; put 'put ''cigpO3JldHVybiBILmluZGV4T2YoIiIrd2UpPi0xfHxYLnNldEZ1bGxZZWFyKFguZ2V0RnVsbFllYXIoKSsxMDApLFh9dmFyIHhlPUgubWF0Y2goL1xkKy9nKXx8WyIyMDE3IiwiMiIsIjE5IiwiMCIsIjAiLCIwIl0sRmU9bmV3IERhdGUoK3hlWzBdLCt4ZVsxXS0xLCt4ZVsyXSwreGVbM118''@;'; put 'put ''fDAsK3hlWzRdfHwwLCt4ZVs1XXx8MCk7cmV0dXJuIEguaW5kZXhPZigiWiIpPi0xJiYoRmU9bmV3IERhdGUoRmUuZ2V0VGltZSgpLTYwKkZlLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKSksRmV9ZnVuY3Rpb24gYm4oSCl7Zm9yKHZhciByZT0iIixYPTA7WCE9SC5sZW5ndGg7KytYKXJlKz1T''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKEhbWF0pO3JldHVybiByZX1mdW5jdGlvbiBsbihIKXtpZigib2JqZWN0IiE9dHlwZW9mIEh8fG51bGw9PUgpcmV0dXJuIEg7aWYoSCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKEguZ2V0VGltZSgpKTtpZihBcnJheS5pc0FycmF5KEgpKXJldHVy''@;'; put 'put ''biBmdW5jdGlvbiBObihIKXtmb3IodmFyIHJlPVtdLFg9MDtYPEgubGVuZ3RoOysrWCl7dmFyIHdlPUhbWF07Im9iamVjdCI9PXR5cGVvZiB3ZT9yZVtYXT1sbih3ZSk6bnVsbCE9d2UmJihyZVtYXT13ZSl9cmV0dXJuIHJlfShIKTt2YXIgcmU9e307Zm9yKHZhciBYIGluIEgpT2JqZWN0LnBy''@;'; put 'put ''b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEgsWCkmJihyZVtYXT1sbihIW1hdKSk7cmV0dXJuIHJlfWZ1bmN0aW9uIGtuKEgscmUpe2lmKCJvYmplY3QiIT10eXBlb2YgcmV8fG51bGw9PXJlKXJldHVybiBIO2Zvcih2YXIgWCBpbiByZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl''@;'; put 'put ''cnR5LmNhbGwocmUsWCkmJihIW1hdPWxuKHJlW1hdKSk7cmV0dXJuIEh9ZnVuY3Rpb24gZXIoSCxyZSl7Zm9yKHZhciBYPSIiO1gubGVuZ3RoPHJlOylYKz1IO3JldHVybiBYfWZ1bmN0aW9uIHVyKEgpe3ZhciByZT1OdW1iZXIoSCk7aWYoIWlzTmFOKHJlKSlyZXR1cm4gaXNGaW5pdGUocmUp''@;'; put 'put ''P3JlOk5hTjtpZighL1xkLy50ZXN0KEgpKXJldHVybiByZTt2YXIgWD0xLHdlPUgucmVwbGFjZSgvKFtcZF0pLChbXGRdKS9nLCIkMSQyIikucmVwbGFjZSgvWyRdL2csIiIpLnJlcGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIFgqPTEwMCwiIn0pO3JldHVybiBpc05hTihyZT1OdW1i''@;'; put 'put ''ZXIod2UpKSYmKHdlPXdlLnJlcGxhY2UoL1soXSguKilbKV0vLGZ1bmN0aW9uKHhlLEZlKXtyZXR1cm4gWD0tWCxGZX0pLGlzTmFOKHJlPU51bWJlcih3ZSkpKT9yZTpyZS9YfWZ1bmN0aW9uIFhuKEgpe3ZhciByZT1uZXcgRGF0ZShIKSxYPW5ldyBEYXRlKE5hTiksd2U9cmUuZ2V0WWVhcigp''@;'; put 'put ''LHhlPXJlLmdldE1vbnRoKCksRmU9cmUuZ2V0RGF0ZSgpO3JldHVybiBpc05hTihGZSl8fHdlPDB8fHdlPjgwOTk/WDooeGU+MHx8RmU+MSkmJjEwMSE9d2V8fEgudG9Mb3dlckNhc2UoKS5tYXRjaCgvamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKT9y''@;'; put 'put ''ZTpILm1hdGNoKC9bXi0wLTk6LFwvXFxdLyk/WDpyZX1mdW5jdGlvbiBGcihILHJlKXtpZihyZSYmcmUucmF3KXJldHVybnt0OiJzIix2Okh9O2lmKCFIKXJldHVybnt0OiJ6In07aWYoIlRSVUUiPT09SClyZXR1cm57dDoiYiIsdjohMH07aWYoIkZBTFNFIj09PUgpcmV0dXJue3Q6ImIiLHY6''@;'; put 'put ''ITF9O3ZhciBYPSIiLHdlPU51bWJlcihIKTtpZihpc0Zpbml0ZSh3ZSkpcmV0dXJue3Q6Im4iLHY6d2V9O2lmKGlzTmFOKHdlKSYmL1xkLy50ZXN0KEgpKXt2YXIgeGU9MSxGZT1ILnJlcGxhY2UoLyhbXGRdKSwoW1xkXSkvZyxmdW5jdGlvbihRdCxhbixDbil7cmV0dXJuIFh8fChYPSIjLCMj''@;'; put 'put ''MCIpLGFuK0NufSkucmVwbGFjZSgvWyRdL2csIiIpLnJlcGxhY2UoL1wuXGQqLyxmdW5jdGlvbihRdCl7WHx8KFg9IjAiKSxYKz0iLiI7Zm9yKHZhciBhbj0yO2FuPD1RdC5sZW5ndGg7KythbilYKz0iMCI7cmV0dXJuIFF0fSkucmVwbGFjZSgvWyVdL2csZnVuY3Rpb24oKXtyZXR1cm4geGUq''@;'; put 'put ''PTEwMCxYfHwoWD0iMCIpLFgrPSIlIiwiIn0pO2lmKCFpc05hTih3ZT1OdW1iZXIoRmUpKSlyZXR1cm57dDoibiIsdjp3ZS94ZSx6Olh9O2lmKEZlPUZlLnJlcGxhY2UoL1soXSguKilbKV0vLGZ1bmN0aW9uKFF0LGFuKXtyZXR1cm4geGU9LXhlLGFufSksIWlzTmFOKHdlPU51bWJlcihGZSkp''@;'; put 'put ''KXJldHVybnt0OiJuIix2OndlL3hlLHo6KFh8fCIwIikrIl8pOygiKyhYfHwiMCIpKyIpO0AifX1lOmlmKCFyZXx8IXJlLnJhd0RhdGVzKXt2YXIgWmU9cmUmJnJlLmNlbGxEYXRlcyxWZT1uZXcgRGF0ZShIKSxTdD0obmV3IERhdGUoTmFOKSxWZS5nZXRZZWFyKCkpLEl0PVZlLmdldE1vbnRo''@;'; put 'put ''KCksUHQ9VmUuZ2V0RGF0ZSgpO2lmKGlzTmFOKFB0KXx8U3Q8MHx8U3Q+ODA5OSlicmVhayBlO2lmKChJdD4wfHxQdD4xKSYmMTAxIT1TdClyZXR1cm57dDpaZT8iZCI6Im4iLHY6WmU/VmU6Y3QoVmUpLHo6cmUuZGF0ZU5GfHxGLl90YWJsZVsxNF19O2lmKEgudG9Mb3dlckNhc2UoKS5tYXRj''@;'; put 'put ''aCgvamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKSlyZXR1cm57dDpaZT8iZCI6Im4iLHY6WmU/VmU6Y3QoVmUpLHo6cmUuZGF0ZU5GfHxGLl90YWJsZVsxNF19O2lmKEgubWF0Y2goL1teLTAtOTosXC9cXF0vKSlicmVhayBlO3JldHVybiBWZX1yZXR1''@;'; put 'put ''cm57dDoicyIsdjpIfX12YXIgUG4seHI9NT09ImFiYWNhYmEiLnNwbGl0KC8oOj9iKS9pKS5sZW5ndGg7ZnVuY3Rpb24gbnIoSCl7cmV0dXJuIG51bGwhPUgmJiFIfWZ1bmN0aW9uIHduKEgpe3JldHVybiBILmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0guc2xpY2UoMSl9ZnVuY3Rpb24gJG4o''@;'; put 'put ''SCl7cmV0dXJuIEg/SC5kYXRhP2ZlKEguZGF0YSk6SC5hc05vZGVCdWZmZXImJkllP2ZlKEguYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoImJpbmFyeSIpKTpILmFzQmluYXJ5P2ZlKEguYXNCaW5hcnkoKSk6SC5fZGF0YSYmSC5fZGF0YS5nZXRDb250ZW50P2ZlKGJuKEFycmF5LnByb3RvdHlw''@;'; put 'put ''ZS5zbGljZS5jYWxsKEguX2RhdGEuZ2V0Q29udGVudCgpLDApKSk6SC5jb250ZW50JiZILnR5cGU/ZmUoYm4oSC5jb250ZW50KSk6bnVsbDpudWxsfWZ1bmN0aW9uIFl0KEgpe2lmKCFIKXJldHVybiBudWxsO2lmKEguZGF0YSlyZXR1cm4gSihILmRhdGEpO2lmKEguYXNOb2RlQnVmZmVyJiZJ''@;'; put 'put ''ZSlyZXR1cm4gSC5hc05vZGVCdWZmZXIoKTtpZihILl9kYXRhJiZILl9kYXRhLmdldENvbnRlbnQpe3ZhciByZT1ILl9kYXRhLmdldENvbnRlbnQoKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHJlP0oocmUpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHJlKX1yZXR1cm4gSC5jb250ZW50''@;'; put 'put ''JiZILnR5cGU/SC5jb250ZW50Om51bGx9ZnVuY3Rpb24gS24oSCxyZSl7Zm9yKHZhciBYPUguRnVsbFBhdGhzfHxvbihILmZpbGVzKSx3ZT1yZS50b0xvd2VyQ2FzZSgpLHhlPXdlLnJlcGxhY2UoL1wvL2csIlxcIiksRmU9MDtGZTxYLmxlbmd0aDsrK0ZlKXt2YXIgWmU9WFtGZV0udG9Mb3dl''@;'; put 'put ''ckNhc2UoKTtpZih3ZT09WmV8fHhlPT1aZSlyZXR1cm4gSC5maWxlc1tYW0ZlXV19cmV0dXJuIG51bGx9ZnVuY3Rpb24gVnQoSCxyZSl7dmFyIFg9S24oSCxyZSk7aWYobnVsbD09WCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGZpbGUgIityZSsiIGluIHppcCIpO3JldHVybiBYfWZ1''@;'; put 'put ''bmN0aW9uIHNuKEgscmUsWCl7aWYoIVgpcmV0dXJuIGZ1bmN0aW9uIGduKEgpe3JldHVybiBIJiYiLmJpbiI9PT1ILm5hbWUuc2xpY2UoLTQpP1l0KEgpOiRuKEgpfShWdChILHJlKSk7aWYoIXJlKXJldHVybiBudWxsO3RyeXtyZXR1cm4gc24oSCxyZSl9Y2F0Y2god2Upe3JldHVybiBudWxs''@;'; put 'put ''fX1mdW5jdGlvbiBVbihILHJlLFgpe2lmKCFYKXJldHVybiAkbihWdChILHJlKSk7aWYoIXJlKXJldHVybiBudWxsO3RyeXtyZXR1cm4gVW4oSCxyZSl9Y2F0Y2god2Upe3JldHVybiBudWxsfX1mdW5jdGlvbiBfbihILHJlLFgpe2lmKCFYKXJldHVybiBZdChWdChILHJlKSk7aWYoIXJlKXJl''@;'; put 'put ''dHVybiBudWxsO3RyeXtyZXR1cm4gX24oSCxyZSl9Y2F0Y2god2Upe3JldHVybiBudWxsfX1mdW5jdGlvbiBHbihILHJlLFgpe0guRnVsbFBhdGhzP3B0LnV0aWxzLmNmYl9hZGQoSCxyZSxYKTpILmZpbGUocmUsWCl9ZnVuY3Rpb24gU3IoKXtyZXR1cm4gUG4/bmV3IFBuOnB0LnV0aWxzLmNm''@;'; put 'put ''Yl9uZXcoKX1mdW5jdGlvbiB2bihILHJlKXt2YXIgWDtpZihQbilzd2l0Y2gocmUudHlwZSl7Y2FzZSJiYXNlNjQiOlg9bmV3IFBuKEgse2Jhc2U2NDohMH0pO2JyZWFrO2Nhc2UiYmluYXJ5IjpjYXNlImFycmF5IjpYPW5ldyBQbihILHtiYXNlNjQ6ITF9KTticmVhaztjYXNlImJ1ZmZlciI6''@;'; put 'put ''WD1uZXcgUG4oSCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrcmUudHlwZSl9ZWxzZSBzd2l0Y2gocmUudHlwZSl7Y2FzZSJiYXNlNjQiOlg9cHQucmVhZChILHt0eXBlOiJiYXNlNjQifSk7YnJlYWs7Y2FzZSJiaW5hcnkiOlg9cHQucmVhZChI''@;'; put 'put ''LHt0eXBlOiJiaW5hcnkifSk7YnJlYWs7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOlg9cHQucmVhZChILHt0eXBlOiJidWZmZXIifSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrcmUudHlwZSl9cmV0dXJuIFh9ZnVuY3Rpb24gdW4oSCxyZSl7''@;'; put 'put ''aWYoIi8iPT1ILmNoYXJBdCgwKSlyZXR1cm4gSC5zbGljZSgxKTt2YXIgWD1yZS5zcGxpdCgiLyIpOyIvIiE9cmUuc2xpY2UoLTEpJiZYLnBvcCgpO2Zvcih2YXIgd2U9SC5zcGxpdCgiLyIpOzAhPT13ZS5sZW5ndGg7KXt2YXIgeGU9d2Uuc2hpZnQoKTsiLi4iPT09eGU/WC5wb3AoKToiLiIh''@;'; put 'put ''PT14ZSYmWC5wdXNoKHhlKX1yZXR1cm4gWC5qb2luKCIvIil9InVuZGVmaW5lZCIhPXR5cGVvZiBKU1ppcFN5bmMmJihQbj1KU1ppcFN5bmMpLFhlLmV4cG9ydHMmJnZvaWQgMD09PVBuJiYoUG49TCg2OTk2MykpO3ZhciBjbj0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi''@;'; put 'put ''IHN0YW5kYWxvbmU9InllcyI/PlxyXG4nLFNuPS8oPzpbXiJccz8+XC9dKylccyo9XHMqKCg/OiIpKD86W14iXSo/KSg/OiIpfCg/OicpKD86W14nXSo/KSg/OicpfCg/OlteJyI+XHNdKykpL2csR3Q9LzxbXC9cP10/W2EtekEtWjAtOTpfLV0rKD86XHMrW14iXHM/PlwvXStccyo9XHMqKD86''@;'; put 'put ''IlteIl0qInwnW14nXSonfFteJyI+XHM9XSspKSpccz9bXC9cP10/Pi9nO2NuLm1hdGNoKEd0KXx8KEd0PS88W14+XSo+L2cpO3ZhciBFbj0vPFx3KjovLGpuPS88KFwvPylcdys6LztmdW5jdGlvbiBxdChILHJlLFgpe2Zvcih2YXIgd2U9e30seGU9MCxGZT0wO3hlIT09SC5sZW5ndGgmJjMy''@;'; put 'put ''IT09KEZlPUguY2hhckNvZGVBdCh4ZSkpJiYxMCE9PUZlJiYxMyE9PUZlOysreGUpO2lmKHJlfHwod2VbMF09SC5zbGljZSgwLHhlKSkseGU9PT1ILmxlbmd0aClyZXR1cm4gd2U7dmFyIFplPUgubWF0Y2goU24pLFZlPTAsVWU9IiIsU3Q9MCxJdD0iIixQdD0iIixRdD0xO2lmKFplKWZvcihT''@;'; put 'put ''dD0wO1N0IT1aZS5sZW5ndGg7KytTdCl7Zm9yKFB0PVplW1N0XSxGZT0wO0ZlIT1QdC5sZW5ndGgmJjYxIT09UHQuY2hhckNvZGVBdChGZSk7KytGZSk7Zm9yKEl0PVB0LnNsaWNlKDAsRmUpLnRyaW0oKTszMj09UHQuY2hhckNvZGVBdChGZSsxKTspKytGZTtmb3IoUXQ9MzQ9PSh4ZT1QdC5j''@;'; put 'put ''aGFyQ29kZUF0KEZlKzEpKXx8Mzk9PXhlPzE6MCxVZT1QdC5zbGljZShGZSsxK1F0LFB0Lmxlbmd0aC1RdCksVmU9MDtWZSE9SXQubGVuZ3RoJiY1OCE9PUl0LmNoYXJDb2RlQXQoVmUpOysrVmUpO2lmKFZlPT09SXQubGVuZ3RoKUl0LmluZGV4T2YoIl8iKT4wJiYoSXQ9SXQuc2xpY2UoMCxJ''@;'; put 'put ''dC5pbmRleE9mKCJfIikpKSx3ZVtJdF09VWUsWHx8KHdlW0l0LnRvTG93ZXJDYXNlKCldPVVlKTtlbHNle3ZhciBhbj0oNT09PVZlJiYieG1sbnMiPT09SXQuc2xpY2UoMCw1KT8ieG1sbnMiOiIiKStJdC5zbGljZShWZSsxKTtpZih3ZVthbl0mJiJleHQiPT1JdC5zbGljZShWZS0zLFZlKSlj''@;'; put 'put ''b250aW51ZTt3ZVthbl09VWUsWHx8KHdlW2FuLnRvTG93ZXJDYXNlKCldPVVlKX19cmV0dXJuIHdlfWZ1bmN0aW9uIExuKEgpe3JldHVybiBILnJlcGxhY2Uoam4sIjwkMSIpfXZhciBKbj17IiZxdW90OyI6JyInLCImYXBvczsiOiInIiwiJmd0OyI6Ij4iLCImbHQ7IjoiPCIsIiZhbXA7Ijoi''@;'; put 'put ''JiJ9LG9yPW50KEpuKSxncj1mdW5jdGlvbigpe3ZhciBIPS8mKD86cXVvdHxhcG9zfGd0fGx0fGFtcHwjeD8oW1xkYS1mQS1GXSspKTsvZ2kscmU9L194KFtcZGEtZkEtRl17NH0pXy9naTtyZXR1cm4gZnVuY3Rpb24gWCh3ZSl7dmFyIHhlPXdlKyIiLEZlPXhlLmluZGV4T2YoIjwhW0NEQVRB''@;'; put 'put ''WyIpO2lmKC0xPT1GZSlyZXR1cm4geGUucmVwbGFjZShILGZ1bmN0aW9uKFZlLFVlKXtyZXR1cm4gSm5bVmVdfHxTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KFVlLFZlLmluZGV4T2YoIngiKT4tMT8xNjoxMCkpfHxWZX0pLnJlcGxhY2UocmUsZnVuY3Rpb24oVmUsVWUpe3JldHVybiBT''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KFVlLDE2KSl9KTt2YXIgWmU9eGUuaW5kZXhPZigiXV0+Iik7cmV0dXJuIFgoeGUuc2xpY2UoMCxGZSkpK3hlLnNsaWNlKEZlKzksWmUpK1goeGUuc2xpY2UoWmUrMykpfX0oKSxKcj0vWyY8PiciXS9nLFZyPS9bXHUwMDAwLVx1MDAwOFx1MDAw''@;'; put 'put ''Yi1cdTAwMWZdL2csdGk9L194WzAtOWEtZkEtRl17NH1fL2c7ZnVuY3Rpb24gT3IoSCl7cmV0dXJuKEgrIiIpLnJlcGxhY2UodGksIl94MDA1RiQmIikucmVwbGFjZShKcixmdW5jdGlvbihYKXtyZXR1cm4gb3JbWF19KS5yZXBsYWNlKFZyLGZ1bmN0aW9uKFgpe3JldHVybiJfeCIrKCIwMDAi''@;'; put 'put ''K1guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSsiXyJ9KX1mdW5jdGlvbiBsaShIKXtyZXR1cm4gT3IoSCkucmVwbGFjZSgvXG4vZywiX3gwMDBhXyIpfWZ1bmN0aW9uIElpKEgpe3JldHVybiBPcihIKS5yZXBsYWNlKC8gL2csIl94MDAyMF8iKX12YXIgcjA9L1tcdTAw''@;'; put 'put ''MDAtXHUwMDFmXS9nO2Z1bmN0aW9uIGUwKEgpe3JldHVybihIKyIiKS5yZXBsYWNlKEpyLGZ1bmN0aW9uKFgpe3JldHVybiBvcltYXX0pLnJlcGxhY2UoL1xuL2csIjxici8+IikucmVwbGFjZShyMCxmdW5jdGlvbihYKXtyZXR1cm4iJiN4IisoIjAwMCIrWC5jaGFyQ29kZUF0KDApLnRvU3Ry''@;'; put 'put ''aW5nKDE2KSkuc2xpY2UoLTQpKyI7In0pfWZ1bmN0aW9uIGQwKEgpe3JldHVybihIKyIiKS5yZXBsYWNlKEpyLGZ1bmN0aW9uKFgpe3JldHVybiBvcltYXX0pLnJlcGxhY2UocjAsZnVuY3Rpb24oWCl7cmV0dXJuIiYjeCIrWC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2Fz''@;'; put 'put ''ZSgpKyI7In0pfXZhciBfMD1mdW5jdGlvbigpe3ZhciBIPS8mIyhcZCspOy9nO2Z1bmN0aW9uIHJlKFgsd2Upe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHdlLDEwKSl9cmV0dXJuIGZ1bmN0aW9uKHdlKXtyZXR1cm4gd2UucmVwbGFjZShILHJlKX19KCk7ZnVuY3Rpb24g''@;'; put 'put ''QmkoSCl7c3dpdGNoKEgpe2Nhc2UgMTpjYXNlITA6Y2FzZSIxIjpjYXNlInRydWUiOmNhc2UiVFJVRSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19dmFyIGowPWZ1bmN0aW9uKHJlKXtmb3IodmFyIFg9IiIsd2U9MCx4ZT0wLEZlPTAsWmU9MCxWZT0wLFVlPTA7d2U8cmUubGVuZ3RoOyko''@;'; put 'put ''eGU9cmUuY2hhckNvZGVBdCh3ZSsrKSk8MTI4P1grPVN0cmluZy5mcm9tQ2hhckNvZGUoeGUpOihGZT1yZS5jaGFyQ29kZUF0KHdlKyspLHhlPjE5MSYmeGU8MjI0PyhWZT0oMzEmeGUpPDw2LFZlfD02MyZGZSxYKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFZlKSk6KFplPXJlLmNoYXJDb2RlQXQo''@;'; put 'put ''d2UrKykseGU8MjQwP1grPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1JnhlKTw8MTJ8KDYzJkZlKTw8Nnw2MyZaZSk6KFVlPSgoNyZ4ZSk8PDE4fCg2MyZGZSk8PDEyfCg2MyZaZSk8PDZ8NjMmKFZlPXJlLmNoYXJDb2RlQXQod2UrKykpKS02NTUzNixYKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1''@;'; put 'put ''Mjk2KyhVZT4+PjEwJjEwMjMpKSxYKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKygxMDIzJlVlKSkpKSk7cmV0dXJuIFh9LEFvPWZ1bmN0aW9uKEgpe2Zvcih2YXIgcmU9W10sWD0wLHdlPTAseGU9MDtYPEgubGVuZ3RoOylzd2l0Y2god2U9SC5jaGFyQ29kZUF0KFgrKyksITApe2Nhc2Ug''@;'; put 'put ''d2U8MTI4OnJlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh3ZSkpO2JyZWFrO2Nhc2Ugd2U8MjA0ODpyZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTkyKyh3ZT4+NikpKSxyZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4Kyg2MyZ3ZSkpKTticmVhaztjYXNlIHdlPj01NTI5NiYm''@;'; put 'put ''d2U8NTczNDQ6d2UtPTU1Mjk2LHhlPUguY2hhckNvZGVBdChYKyspLTU2MzIwKyh3ZTw8MTApLHJlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyNDArKHhlPj4xOCY3KSkpLHJlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxNDQrKHhlPj4xMiY2MykpKSxyZS5wdXNoKFN0cmluZy5mcm9t''@;'; put 'put ''Q2hhckNvZGUoMTI4Kyh4ZT4+NiY2MykpKSxyZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4Kyg2MyZ4ZSkpKTticmVhaztkZWZhdWx0OnJlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQrKHdlPj4xMikpKSxyZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4Kyh3ZT4+NiY2''@;'; put 'put ''MykpKSxyZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4Kyg2MyZ3ZSkpKX1yZXR1cm4gcmUuam9pbigiIil9O2lmKEllKXt2YXIgS289ZnVuY3Rpb24ocmUpe3ZhciB3ZSx4ZSxVZSxYPUJ1ZmZlci5hbGxvYygyKnJlLmxlbmd0aCksRmU9MSxaZT0wLFZlPTA7Zm9yKHhlPTA7eGU8cmUu''@;'; put 'put ''bGVuZ3RoO3hlKz1GZSlGZT0xLChVZT1yZS5jaGFyQ29kZUF0KHhlKSk8MTI4P3dlPVVlOlVlPDIyND8od2U9NjQqKDMxJlVlKSsoNjMmcmUuY2hhckNvZGVBdCh4ZSsxKSksRmU9Mik6VWU8MjQwPyh3ZT00MDk2KigxNSZVZSkrNjQqKDYzJnJlLmNoYXJDb2RlQXQoeGUrMSkpKyg2MyZyZS5j''@;'; put 'put ''aGFyQ29kZUF0KHhlKzIpKSxGZT0zKTooRmU9NCx3ZT0yNjIxNDQqKDcmVWUpKzQwOTYqKDYzJnJlLmNoYXJDb2RlQXQoeGUrMSkpKzY0Kig2MyZyZS5jaGFyQ29kZUF0KHhlKzIpKSsoNjMmcmUuY2hhckNvZGVBdCh4ZSszKSksVmU9NTUyOTYrKCh3ZS09NjU1MzYpPj4+MTAmMTAyMyksd2U9''@;'; put 'put ''NTYzMjArKDEwMjMmd2UpKSwwIT09VmUmJihYW1plKytdPTI1NSZWZSxYW1plKytdPVZlPj4+OCxWZT0wKSxYW1plKytdPXdlJTI1NixYW1plKytdPXdlPj4+ODtyZXR1cm4gWC5zbGljZSgwLFplKS50b1N0cmluZygidWNzMiIpfSxmYT0iZm9vIGJhciBiYXpceGUyXHg5OFx4ODNceGYwXHg5''@;'; put 'put ''Zlx4OGRceGEzIjtqMChmYSk9PUtvKGZhKSYmKGowPUtvKTt2YXIgZWw9ZnVuY3Rpb24ocmUpe3JldHVybiBUZShyZSwiYmluYXJ5IikudG9TdHJpbmcoInV0ZjgiKX07ajAoZmEpPT1lbChmYSkmJihqMD1lbCksQW89ZnVuY3Rpb24oSCl7cmV0dXJuIFRlKEgsInV0ZjgiKS50b1N0cmluZygi''@;'; put 'put ''YmluYXJ5Iil9fXZhciBILEppPShIPXt9LGZ1bmN0aW9uKFgsd2Upe3ZhciB4ZT1YKyJ8Iisod2V8fCIiKTtyZXR1cm4gSFt4ZV0/SFt4ZV06SFt4ZV09bmV3IFJlZ0V4cCgiPCg/Olxcdys6KT8iK1grJyg/OiB4bWw6c3BhY2U9InByZXNlcnZlIik/KD86W14+XSopPihbXFxzXFxTXSo/KTwv''@;'; put 'put ''KD86XFx3KzopPycrWCsiPiIsd2V8fCIiKX0pLE1hPWZ1bmN0aW9uKCl7dmFyIEg9W1sibmJzcCIsIiAiXSxbIm1pZGRvdCIsIlx4YjciXSxbInF1b3QiLCciJ10sWyJhcG9zIiwiJyJdLFsiZ3QiLCI+Il0sWyJsdCIsIjwiXSxbImFtcCIsIiYiXV0ubWFwKGZ1bmN0aW9uKHJlKXtyZXR1cm5b''@;'; put 'put ''bmV3IFJlZ0V4cCgiJiIrcmVbMF0rIjsiLCJpZyIpLHJlWzFdXX0pO3JldHVybiBmdW5jdGlvbihYKXtmb3IodmFyIHdlPVgucmVwbGFjZSgvXltcdFxuXHIgXSsvLCIiKS5yZXBsYWNlKC9bXHRcblxyIF0rJC8sIiIpLnJlcGxhY2UoL1tcdFxuXHIgXSsvZywiICIpLnJlcGxhY2UoLzxccypb''@;'; put 'put ''YkJdW3JSXVxzKlwvPz4vZywiXG4iKS5yZXBsYWNlKC88W14+XSo+L2csIiIpLHhlPTA7eGU8SC5sZW5ndGg7Kyt4ZSl3ZT13ZS5yZXBsYWNlKEhbeGVdWzBdLEhbeGVdWzFdKTtyZXR1cm4gd2V9fSgpLHlsPWZ1bmN0aW9uKCl7dmFyIEg9e307cmV0dXJuIGZ1bmN0aW9uKFgpe3JldHVybiB2''@;'; put 'put ''b2lkIDAhPT1IW1hdP0hbWF06SFtYXT1uZXcgUmVnRXhwKCI8KD86dnQ6KT8iK1grIj4oW1xcc1xcU10qPyk8Lyg/OnZ0Oik/IitYKyI+IiwiZyIpfX0oKSxmbD0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyxwaT0vPCg/OnZ0OikoW14+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uIHdpKEgscmUp''@;'; put 'put ''e3ZhciBYPXF0KEgpLHdlPUgubWF0Y2goeWwoWC5iYXNlVHlwZSkpfHxbXSx4ZT1bXTtpZih3ZS5sZW5ndGghPVguc2l6ZSl7aWYocmUuV1RGKXRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCB2ZWN0b3IgbGVuZ3RoICIrd2UubGVuZ3RoKyIgIT0gIitYLnNpemUpO3JldHVybiB4ZX1yZXR1''@;'; put 'put ''cm4gd2UuZm9yRWFjaChmdW5jdGlvbihGZSl7dmFyIFplPUZlLnJlcGxhY2UoZmwsIiIpLm1hdGNoKHBpKTtaZSYmeGUucHVzaCh7djpqMChaZVsyXSksdDpaZVsxXX0pfSkseGV9dmFyIG0wPS8oXlxzfFxzJHxcbikvO2Z1bmN0aW9uIEdvKEgscmUpe3JldHVybiI8IitIKyhyZS5tYXRjaCht''@;'; put 'put ''MCk/JyB4bWw6c3BhY2U9InByZXNlcnZlIic6IiIpKyI+IityZSsiPC8iK0grIj4ifWZ1bmN0aW9uIGMyKEgpe3JldHVybiBvbihIKS5tYXAoZnVuY3Rpb24ocmUpe3JldHVybiIgIityZSsnPSInK0hbcmVdKyciJ30pLmpvaW4oIiIpfWZ1bmN0aW9uIFNpKEgscmUsWCl7cmV0dXJuIjwiK0gr''@;'; put 'put ''KG51bGwhPVg/YzIoWCk6IiIpKyhudWxsIT1yZT8ocmUubWF0Y2gobTApPycgeG1sOnNwYWNlPSJwcmVzZXJ2ZSInOiIiKSsiPiIrcmUrIjwvIitIOiIvIikrIj4ifWZ1bmN0aW9uIHEwKEgscmUpe3RyeXtyZXR1cm4gSC50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuXGQqLywiIil9Y2F0Y2go''@;'; put 'put ''WCl7aWYocmUpdGhyb3cgWH1yZXR1cm4iIn12YXIgdGwsam8sVzA9e2RjOiJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIsZGN0ZXJtczoiaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLyIsZGNtaXR5cGU6Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS8iLG14OiJodHRwOi8v''@;'; put 'put ''c2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9tYWMvZXhjZWwvMjAwOC9tYWluIixyOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIixzanM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNr''@;'; put 'put ''YWdlLzIwMDYvc2hlZXRqcy9jb3JlLXByb3BlcnRpZXMiLHZ0OiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9kb2NQcm9wc1ZUeXBlcyIseHNpOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIseHNkOiJodHRw''@;'; put 'put ''Oi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIsbWFpbjpbImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIsImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL3NwcmVhZHNoZWV0bWwvbWFpbiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jv''@;'; put 'put ''c29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvbWFpbiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvMiJdfSxxb19vPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiLHFvX3g9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206''@;'; put 'put ''b2ZmaWNlOmV4Y2VsIixxb19zcz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6c3ByZWFkc2hlZXQiLHFvX3Y9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIixBbj1mdW5jdGlvbihIKXtmb3IodmFyIHJlPVtdLHdlPTA7d2U8SFswXS5sZW5ndGg7Kyt3ZSlpZihIWzBd''@;'; put 'put ''W3dlXSlmb3IodmFyIHhlPTAsRmU9SFswXVt3ZV0ubGVuZ3RoO3hlPEZlO3hlKz0xMDI0MClyZS5wdXNoLmFwcGx5KHJlLEhbMF1bd2VdLnNsaWNlKHhlLHhlKzEwMjQwKSk7cmV0dXJuIHJlfSxLMD1BbixiMj1mdW5jdGlvbihILHJlLFgpe2Zvcih2YXIgd2U9W10seGU9cmU7eGU8WDt4ZSs9''@;'; put 'put ''Mil3ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodmkoSCx4ZSkpKTtyZXR1cm4gd2Uuam9pbigiIikucmVwbGFjZShULCIiKX0saXU9YjIsUmY9ZnVuY3Rpb24oSCxyZSxYKXtmb3IodmFyIHdlPVtdLHhlPXJlO3hlPHJlK1g7Kyt4ZSl3ZS5wdXNoKCgiMCIrSFt4ZV0udG9TdHJpbmcoMTYp''@;'; put 'put ''KS5zbGljZSgtMikpO3JldHVybiB3ZS5qb2luKCIiKX0sUXU9UmYsS3M9ZnVuY3Rpb24oSCxyZSxYKXtmb3IodmFyIHdlPVtdLHhlPXJlO3hlPFg7eGUrKyl3ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobzIoSCx4ZSkpKTtyZXR1cm4gd2Uuam9pbigiIil9LE9wPUtzLEp1PWZ1bmN0aW9u''@;'; put 'put ''KEgscmUpe3ZhciBYPUVhKEgscmUpO3JldHVybiBYPjA/S3MoSCxyZSs0LHJlKzQrWC0xKToiIn0sJHM9SnUsRGw9ZnVuY3Rpb24oSCxyZSl7dmFyIFg9RWEoSCxyZSk7cmV0dXJuIFg+MD9LcyhILHJlKzQscmUrNCtYLTEpOiIifSxRMj1EbCxYdT1mdW5jdGlvbihILHJlKXt2YXIgWD0yKkVh''@;'; put 'put ''KEgscmUpO3JldHVybiBYPjA/S3MoSCxyZSs0LHJlKzQrWC0xKToiIn0sZ2M9WHU7dGw9am89ZnVuY3Rpb24ocmUsWCl7dmFyIHdlPUVhKHJlLFgpO3JldHVybiB3ZT4wP2IyKHJlLFgrNCxYKzQrd2UpOiIifTt2YXIgdW8sTmEsZGk9ZnVuY3Rpb24oSCxyZSl7dmFyIFg9RWEoSCxyZSk7cmV0''@;'; put 'put ''dXJuIFg+MD9LcyhILHJlKzQscmUrNCtYKToiIn0sTjA9ZGk7dW89TmE9ZnVuY3Rpb24oSCxyZSl7cmV0dXJuIGZ1bmN0aW9uIEthKEgscmUpe2Zvcih2YXIgWD0xLTIqKEhbcmUrN10+Pj43KSx3ZT0oKDEyNyZIW3JlKzddKTw8NCkrKEhbcmUrNl0+Pj40JjE1KSx4ZT0xNSZIW3JlKzZdLEZl''@;'; put 'put ''PTU7RmU+PTA7LS1GZSl4ZT0yNTYqeGUrSFtyZStGZV07cmV0dXJuIDIwNDc9PXdlPzA9PXhlP1gqKDEvMCk6TmFOOigwPT13ZT93ZT0tMTAyMjood2UtPTEwMjMseGUrPU1hdGgucG93KDIsNTIpKSxYKk1hdGgucG93KDIsd2UtNTIpKnhlKX0oSCxyZSl9O3ZhciBmMj1mdW5jdGlvbihyZSl7''@;'; put 'put ''cmV0dXJuIEFycmF5LmlzQXJyYXkocmUpfTtJZSYmKGIyPWZ1bmN0aW9uKEgscmUsWCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihIKT9ILnRvU3RyaW5nKCJ1dGYxNmxlIixyZSxYKS5yZXBsYWNlKFQsIiIpOml1KEgscmUsWCl9LFJmPWZ1bmN0aW9uKEgscmUsWCl7cmV0dXJuIEJ1ZmZlci5p''@;'; put 'put ''c0J1ZmZlcihIKT9ILnRvU3RyaW5nKCJoZXgiLHJlLHJlK1gpOlF1KEgscmUsWCl9LEp1PWZ1bmN0aW9uKHJlLFgpe2lmKCFCdWZmZXIuaXNCdWZmZXIocmUpKXJldHVybiAkcyhyZSxYKTt2YXIgd2U9cmUucmVhZFVJbnQzMkxFKFgpO3JldHVybiB3ZT4wP3JlLnRvU3RyaW5nKCJ1dGY4IixY''@;'; put 'put ''KzQsWCs0K3dlLTEpOiIifSxEbD1mdW5jdGlvbihyZSxYKXtpZighQnVmZmVyLmlzQnVmZmVyKHJlKSlyZXR1cm4gUTIocmUsWCk7dmFyIHdlPXJlLnJlYWRVSW50MzJMRShYKTtyZXR1cm4gd2U+MD9yZS50b1N0cmluZygidXRmOCIsWCs0LFgrNCt3ZS0xKToiIn0sWHU9ZnVuY3Rpb24ocmUs''@;'; put 'put ''WCl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihyZSkpcmV0dXJuIGdjKHJlLFgpO3ZhciB3ZT0yKnJlLnJlYWRVSW50MzJMRShYKTtyZXR1cm4gcmUudG9TdHJpbmcoInV0ZjE2bGUiLFgrNCxYKzQrd2UtMSl9LHRsPWZ1bmN0aW9uKHJlLFgpe2lmKCFCdWZmZXIuaXNCdWZmZXIocmUpKXJldHVybiBq''@;'; put 'put ''byhyZSxYKTt2YXIgd2U9cmUucmVhZFVJbnQzMkxFKFgpO3JldHVybiByZS50b1N0cmluZygidXRmMTZsZSIsWCs0LFgrNCt3ZSl9LGRpPWZ1bmN0aW9uKHJlLFgpe2lmKCFCdWZmZXIuaXNCdWZmZXIocmUpKXJldHVybiBOMChyZSxYKTt2YXIgd2U9cmUucmVhZFVJbnQzMkxFKFgpO3JldHVy''@;'; put 'put ''biByZS50b1N0cmluZygidXRmOCIsWCs0LFgrNCt3ZSl9LEtzPWZ1bmN0aW9uKHJlLFgsd2Upe3JldHVybiBCdWZmZXIuaXNCdWZmZXIocmUpP3JlLnRvU3RyaW5nKCJ1dGY4IixYLHdlKTpPcChyZSxYLHdlKX0sQW49ZnVuY3Rpb24oSCl7cmV0dXJuIEhbMF0ubGVuZ3RoPjAmJkJ1ZmZlci5p''@;'; put 'put ''c0J1ZmZlcihIWzBdWzBdKT9CdWZmZXIuY29uY2F0KEhbMF0pOkswKEgpfSxWPWZ1bmN0aW9uKEgpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoSFswXSk/QnVmZmVyLmNvbmNhdChIKTpbXS5jb25jYXQuYXBwbHkoW10sSCl9LHVvPWZ1bmN0aW9uKHJlLFgpe3JldHVybiBCdWZmZXIuaXNCdWZm''@;'; put 'put ''ZXIocmUpP3JlLnJlYWREb3VibGVMRShYKTpOYShyZSxYKX0sZjI9ZnVuY3Rpb24ocmUpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIocmUpfHxBcnJheS5pc0FycmF5KHJlKX0pLCJ1bmRlZmluZWQiIT10eXBlb2YgY3B0YWJsZSYmKGIyPWZ1bmN0aW9uKEgscmUsWCl7cmV0dXJuIGNwdGFibGUu''@;'; put 'put ''dXRpbHMuZGVjb2RlKDEyMDAsSC5zbGljZShyZSxYKSkucmVwbGFjZShULCIiKX0sS3M9ZnVuY3Rpb24oSCxyZSxYKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsSC5zbGljZShyZSxYKSl9LEp1PWZ1bmN0aW9uKEgscmUpe3ZhciBYPUVhKEgscmUpO3JldHVybiBYPjA/Y3B0''@;'; put 'put ''YWJsZS51dGlscy5kZWNvZGUoWixILnNsaWNlKHJlKzQscmUrNCtYLTEpKToiIn0sRGw9ZnVuY3Rpb24oSCxyZSl7dmFyIFg9RWEoSCxyZSk7cmV0dXJuIFg+MD9jcHRhYmxlLnV0aWxzLmRlY29kZShRLEguc2xpY2UocmUrNCxyZSs0K1gtMSkpOiIifSxYdT1mdW5jdGlvbihILHJlKXt2YXIg''@;'; put 'put ''WD0yKkVhKEgscmUpO3JldHVybiBYPjA/Y3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCxILnNsaWNlKHJlKzQscmUrNCtYLTEpKToiIn0sdGw9ZnVuY3Rpb24oSCxyZSl7dmFyIFg9RWEoSCxyZSk7cmV0dXJuIFg+MD9jcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLEguc2xpY2UocmUrNCxyZSs0''@;'; put 'put ''K1gpKToiIn0sZGk9ZnVuY3Rpb24oSCxyZSl7dmFyIFg9RWEoSCxyZSk7cmV0dXJuIFg+MD9jcHRhYmxlLnV0aWxzLmRlY29kZSg2NTAwMSxILnNsaWNlKHJlKzQscmUrNCtYKSk6IiJ9KTt2YXIgbzI9ZnVuY3Rpb24oSCxyZSl7cmV0dXJuIEhbcmVdfSx2aT1mdW5jdGlvbihILHJlKXtyZXR1''@;'; put 'put ''cm4gMjU2KkhbcmUrMV0rSFtyZV19LEJmPWZ1bmN0aW9uKEgscmUpe3ZhciBYPTI1NipIW3JlKzFdK0hbcmVdO3JldHVybiBYPDMyNzY4P1g6LTEqKDY1NTM1LVgrMSl9LEVhPWZ1bmN0aW9uKEgscmUpe3JldHVybiBIW3JlKzNdKigxPDwyNCkrKEhbcmUrMl08PDE2KSsoSFtyZSsxXTw8OCkr''@;'; put 'put ''SFtyZV19LG91PWZ1bmN0aW9uKEgscmUpe3JldHVybiBIW3JlKzNdPDwyNHxIW3JlKzJdPDwxNnxIW3JlKzFdPDw4fEhbcmVdfSxybz1mdW5jdGlvbihILHJlKXtyZXR1cm4gSFtyZV08PDI0fEhbcmUrMV08PDE2fEhbcmUrMl08PDh8SFtyZSszXX07ZnVuY3Rpb24gc2QoSCxyZSl7dmFyIHdl''@;'; put 'put ''LHhlLFplLFZlLFVlLFN0LFg9IiIsRmU9W107c3dpdGNoKHJlKXtjYXNlImRiY3MiOmlmKFN0PXRoaXMubCxJZSYmQnVmZmVyLmlzQnVmZmVyKHRoaXMpKVg9dGhpcy5zbGljZSh0aGlzLmwsdGhpcy5sKzIqSCkudG9TdHJpbmcoInV0ZjE2bGUiKTtlbHNlIGZvcihVZT0wO1VlPEg7KytVZSlY''@;'; put 'put ''Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHZpKHRoaXMsU3QpKSxTdCs9MjtIKj0yO2JyZWFrO2Nhc2UidXRmOCI6WD1Lcyh0aGlzLHRoaXMubCx0aGlzLmwrSCk7YnJlYWs7Y2FzZSJ1dGYxNmxlIjpYPWIyKHRoaXMsdGhpcy5sLHRoaXMubCsoSCo9MikpO2JyZWFrO2Nhc2Uid3N0ciI6aWYoInVu''@;'; put 'put ''ZGVmaW5lZCI9PXR5cGVvZiBjcHRhYmxlKXJldHVybiBzZC5jYWxsKHRoaXMsSCwiZGJjcyIpO1g9Y3B0YWJsZS51dGlscy5kZWNvZGUoUSx0aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrMipIKSksSCo9MjticmVhaztjYXNlImxwc3RyLWFuc2kiOlg9SnUodGhpcyx0aGlzLmwpLEg9NCtFYSh0''@;'; put 'put ''aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHN0ci1jcCI6WD1EbCh0aGlzLHRoaXMubCksSD00K0VhKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwd3N0ciI6WD1YdSh0aGlzLHRoaXMubCksSD00KzIqRWEodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBwNCI6SD00K0VhKHRoaXMsdGhpcy5s''@;'; put 'put ''KSxYPXRsKHRoaXMsdGhpcy5sKSwyJkgmJihIKz0yKTticmVhaztjYXNlIjhscHA0IjpIPTQrRWEodGhpcyx0aGlzLmwpLFg9ZGkodGhpcyx0aGlzLmwpLDMmSCYmKEgrPTQtKDMmSCkpO2JyZWFrO2Nhc2UiY3N0ciI6Zm9yKEg9MCxYPSIiOzAhPT0oWmU9bzIodGhpcyx0aGlzLmwrSCsrKSk7''@;'; put 'put ''KUZlLnB1c2goZGUoWmUpKTtYPUZlLmpvaW4oIiIpO2JyZWFrO2Nhc2UiX3dzdHIiOmZvcihIPTAsWD0iIjswIT09KFplPXZpKHRoaXMsdGhpcy5sK0gpKTspRmUucHVzaChkZShaZSkpLEgrPTI7SCs9MixYPUZlLmpvaW4oIiIpO2JyZWFrO2Nhc2UiZGJjcy1jb250Ijpmb3IoWD0iIixTdD10''@;'; put 'put ''aGlzLmwsVWU9MDtVZTxIOysrVWUpe2lmKHRoaXMubGVucyYmLTEhPT10aGlzLmxlbnMuaW5kZXhPZihTdCkpcmV0dXJuIFplPW8yKHRoaXMsU3QpLHRoaXMubD1TdCsxLFZlPXNkLmNhbGwodGhpcyxILVVlLFplPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKSxGZS5qb2luKCIiKStWZTtGZS5w''@;'; put 'put ''dXNoKGRlKHZpKHRoaXMsU3QpKSksU3QrPTJ9WD1GZS5qb2luKCIiKSxIKj0yO2JyZWFrO2Nhc2UiY3BzdHIiOmlmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3B0YWJsZSl7WD1jcHRhYmxlLnV0aWxzLmRlY29kZShRLHRoaXMuc2xpY2UodGhpcy5sLHRoaXMubCtIKSk7YnJlYWt9Y2FzZSJzYmNz''@;'; put 'put ''LWNvbnQiOmZvcihYPSIiLFN0PXRoaXMubCxVZT0wO1VlIT1IOysrVWUpe2lmKHRoaXMubGVucyYmLTEhPT10aGlzLmxlbnMuaW5kZXhPZihTdCkpcmV0dXJuIFplPW8yKHRoaXMsU3QpLHRoaXMubD1TdCsxLFZlPXNkLmNhbGwodGhpcyxILVVlLFplPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQi''@;'; put 'put ''KSxGZS5qb2luKCIiKStWZTtGZS5wdXNoKGRlKG8yKHRoaXMsU3QpKSksU3QrPTF9WD1GZS5qb2luKCIiKTticmVhaztkZWZhdWx0OnN3aXRjaChIKXtjYXNlIDE6cmV0dXJuIHdlPW8yKHRoaXMsdGhpcy5sKSx0aGlzLmwrKyx3ZTtjYXNlIDI6cmV0dXJuIHdlPSgiaSI9PT1yZT9CZjp2aSko''@;'; put 'put ''dGhpcyx0aGlzLmwpLHRoaXMubCs9Mix3ZTtjYXNlIDQ6Y2FzZS00OnJldHVybiJpIj09PXJlfHwwPT0oMTI4JnRoaXNbdGhpcy5sKzNdKT8od2U9KEg+MD9vdTpybykodGhpcyx0aGlzLmwpLHRoaXMubCs9NCx3ZSk6KHhlPUVhKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTQseGUpO2Nhc2UgODpj''@;'; put 'put ''YXNlLTg6aWYoImYiPT09cmUpcmV0dXJuIHhlPTg9PUg/dW8odGhpcyx0aGlzLmwpOnVvKFt0aGlzW3RoaXMubCs3XSx0aGlzW3RoaXMubCs2XSx0aGlzW3RoaXMubCs1XSx0aGlzW3RoaXMubCs0XSx0aGlzW3RoaXMubCszXSx0aGlzW3RoaXMubCsyXSx0aGlzW3RoaXMubCsxXSx0aGlzW3Ro''@;'; put 'put ''aXMubCswXV0sMCksdGhpcy5sKz04LHhlO0g9ODtjYXNlIDE2Olg9UmYodGhpcyx0aGlzLmwsSCl9fXJldHVybiB0aGlzLmwrPUgsWH12YXIgV3M9ZnVuY3Rpb24oSCxyZSxYKXtIW1hdPTI1NSZyZSxIW1grMV09cmU+Pj44JjI1NX07ZnVuY3Rpb24gZ3MoSCxyZSxYKXt2YXIgd2U9MCx4ZT0w''@;'; put 'put ''O2lmKCJkYmNzIj09PVgpe2Zvcih4ZT0wO3hlIT1yZS5sZW5ndGg7Kyt4ZSlXcyh0aGlzLHJlLmNoYXJDb2RlQXQoeGUpLHRoaXMubCsyKnhlKTt3ZT0yKnJlLmxlbmd0aH1lbHNlIGlmKCJzYmNzIj09PVgpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3B0YWJsZSYmODc0PT1aKWZvcih4ZT0w''@;'; put 'put ''O3hlIT1yZS5sZW5ndGg7Kyt4ZSl7dmFyIEZlPWNwdGFibGUudXRpbHMuZW5jb2RlKFoscmUuY2hhckF0KHhlKSk7dGhpc1t0aGlzLmwreGVdPUZlWzBdfWVsc2UgZm9yKHJlPXJlLnJlcGxhY2UoL1teXHgwMC1ceDdGXS9nLCJfIikseGU9MDt4ZSE9cmUubGVuZ3RoOysreGUpdGhpc1t0aGlz''@;'; put 'put ''LmwreGVdPTI1NSZyZS5jaGFyQ29kZUF0KHhlKTt3ZT1yZS5sZW5ndGh9ZWxzZXtpZigiaGV4Ij09PVgpe2Zvcig7eGU8SDsrK3hlKXRoaXNbdGhpcy5sKytdPXBhcnNlSW50KHJlLnNsaWNlKDIqeGUsMip4ZSsyKSwxNil8fDA7cmV0dXJuIHRoaXN9aWYoInV0ZjE2bGUiPT09WCl7dmFyIFpl''@;'; put 'put ''PU1hdGgubWluKHRoaXMubCtILHRoaXMubGVuZ3RoKTtmb3IoeGU9MDt4ZTxNYXRoLm1pbihyZS5sZW5ndGgsSCk7Kyt4ZSl7dmFyIFZlPXJlLmNoYXJDb2RlQXQoeGUpO3RoaXNbdGhpcy5sKytdPTI1NSZWZSx0aGlzW3RoaXMubCsrXT1WZT4+OH1mb3IoO3RoaXMubDxaZTspdGhpc1t0aGlz''@;'; put 'put ''LmwrK109MDtyZXR1cm4gdGhpc31zd2l0Y2goSCl7Y2FzZSAxOndlPTEsdGhpc1t0aGlzLmxdPTI1NSZyZTticmVhaztjYXNlIDI6d2U9Mix0aGlzW3RoaXMubF09MjU1JnJlLHRoaXNbdGhpcy5sKzFdPTI1NSYocmU+Pj49OCk7YnJlYWs7Y2FzZSAzOndlPTMsdGhpc1t0aGlzLmxdPTI1NSZy''@;'; put 'put ''ZSx0aGlzW3RoaXMubCsxXT0yNTUmKHJlPj4+PTgpLHRoaXNbdGhpcy5sKzJdPTI1NSYocmU+Pj49OCk7YnJlYWs7Y2FzZSA0OndlPTQsZnVuY3Rpb24oSCxyZSxYKXtIW1hdPTI1NSZyZSxIW1grMV09cmU+Pj44JjI1NSxIW1grMl09cmU+Pj4xNiYyNTUsSFtYKzNdPXJlPj4+MjQmMjU1fSh0''@;'; put 'put ''aGlzLHJlLHRoaXMubCk7YnJlYWs7Y2FzZSA4OmlmKHdlPTgsImYiPT09WCl7IWZ1bmN0aW9uIHNvKEgscmUsWCl7dmFyIHdlPShyZTwwfHwxL3JlPT0tMS8wPzE6MCk8PDcseGU9MCxGZT0wLFplPXdlPy1yZTpyZTtpc0Zpbml0ZShaZSk/MD09WmU/eGU9RmU9MDooeGU9TWF0aC5mbG9vcihN''@;'; put 'put ''YXRoLmxvZyhaZSkvTWF0aC5MTjIpLEZlPVplKk1hdGgucG93KDIsNTIteGUpLHhlPD0tMTAyMyYmKCFpc0Zpbml0ZShGZSl8fEZlPE1hdGgucG93KDIsNTIpKT94ZT0tMTAyMjooRmUtPU1hdGgucG93KDIsNTIpLHhlKz0xMDIzKSk6KHhlPTIwNDcsRmU9aXNOYU4ocmUpPzI2OTg1OjApO2Zv''@;'; put 'put ''cih2YXIgVmU9MDtWZTw9NTsrK1ZlLEZlLz0yNTYpSFtYK1ZlXT0yNTUmRmU7SFtYKzZdPSgxNSZ4ZSk8PDR8MTUmRmUsSFtYKzddPXhlPj40fHdlfSh0aGlzLHJlLHRoaXMubCk7YnJlYWt9Y2FzZSAxNjpicmVhaztjYXNlLTQ6d2U9NCxmdW5jdGlvbihILHJlLFgpe0hbWF09MjU1JnJlLEhb''@;'; put 'put ''WCsxXT1yZT4+OCYyNTUsSFtYKzJdPXJlPj4xNiYyNTUsSFtYKzNdPXJlPj4yNCYyNTV9KHRoaXMscmUsdGhpcy5sKX19cmV0dXJuIHRoaXMubCs9d2UsdGhpc31mdW5jdGlvbiBOMShILHJlKXt2YXIgWD1SZih0aGlzLHRoaXMubCxILmxlbmd0aD4+MSk7aWYoWCE9PUgpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKHJlKyJFeHBlY3RlZCAiK0grIiBzYXcgIitYKTt0aGlzLmwrPUgubGVuZ3RoPj4xfWZ1bmN0aW9uIEtsKEgscmUpe0gubD1yZSxILnJlYWRfc2hpZnQ9c2QsSC5jaGs9TjEsSC53cml0ZV9zaGlmdD1nc31mdW5jdGlvbiBMMihILHJlKXtILmwrPXJlfWZ1bmN0aW9uIHhpKEgpe3ZhciBy''@;'; put 'put ''ZT1oZShIKTtyZXR1cm4gS2wocmUsMCkscmV9ZnVuY3Rpb24gbTEoSCxyZSxYKXtpZihIKXt2YXIgd2UseGUsRmU7S2woSCxILmx8fDApO2Zvcih2YXIgWmU9SC5sZW5ndGgsVmU9MCxVZT0wO0gubDxaZTspezEyOCYoVmU9SC5yZWFkX3NoaWZ0KDEpKSYmKFZlPSgxMjcmVmUpKygoMTI3Jkgu''@;'; put 'put ''cmVhZF9zaGlmdCgxKSk8PDcpKTt2YXIgU3Q9VDZbVmVdfHxUNls2NTUzNV07Zm9yKEZlPTEyNyYod2U9SC5yZWFkX3NoaWZ0KDEpKSx4ZT0xO3hlPDQmJjEyOCZ3ZTsrK3hlKUZlKz0oMTI3Jih3ZT1ILnJlYWRfc2hpZnQoMSkpKTw8Nyp4ZTtVZT1ILmwrRmU7dmFyIEl0PShTdC5mfHxMMiko''@;'; put 'put ''SCxGZSxYKTtpZihILmw9VWUscmUoSXQsU3QubixWZSkpcmV0dXJufX19ZnVuY3Rpb24gdjEoKXt2YXIgSD1bXSxyZT1JZT8yNTY6MjA0OCxYPWZ1bmN0aW9uKFN0KXt2YXIgSXQ9eGkoU3QpO3JldHVybiBLbChJdCwwKSxJdH0sd2U9WChyZSkseGU9ZnVuY3Rpb24oKXshd2V8fCh3ZS5sZW5n''@;'; put 'put ''dGg+d2UubCYmKCh3ZT13ZS5zbGljZSgwLHdlLmwpKS5sPXdlLmxlbmd0aCksd2UubGVuZ3RoPjAmJkgucHVzaCh3ZSksd2U9bnVsbCl9LEZlPWZ1bmN0aW9uKFN0KXtyZXR1cm4gd2UmJlN0PHdlLmxlbmd0aC13ZS5sP3dlOih4ZSgpLHdlPVgoTWF0aC5tYXgoU3QrMSxyZSkpKX07cmV0dXJu''@;'; put 'put ''e25leHQ6RmUscHVzaDpmdW5jdGlvbihTdCl7eGUoKSxudWxsPT0od2U9U3QpLmwmJih3ZS5sPXdlLmxlbmd0aCksRmUocmUpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4geGUoKSxBbihbSF0pfSxfYnVmczpIfX1mdW5jdGlvbiBDMChILHJlLFgsd2Upe3ZhciBGZSx4ZT0rZUNbcmVdO2lmKCFp''@;'; put 'put ''c05hTih4ZSkpe3dlfHwod2U9VDZbeGVdLnB8fChYfHxbXSkubGVuZ3RofHwwKSxGZT0xKyh4ZT49MTI4PzE6MCkrMSx3ZT49MTI4JiYrK0ZlLHdlPj0xNjM4NCYmKytGZSx3ZT49MjA5NzE1MiYmKytGZTt2YXIgWmU9SC5uZXh0KEZlKTt4ZTw9MTI3P1plLndyaXRlX3NoaWZ0KDEseGUpOiha''@;'; put 'put ''ZS53cml0ZV9zaGlmdCgxLDEyOCsoMTI3JnhlKSksWmUud3JpdGVfc2hpZnQoMSx4ZT4+NykpO2Zvcih2YXIgVmU9MDs0IT1WZTsrK1ZlKXtpZighKHdlPj0xMjgpKXtaZS53cml0ZV9zaGlmdCgxLHdlKTticmVha31aZS53cml0ZV9zaGlmdCgxLDEyOCsoMTI3JndlKSksd2U+Pj03fXdlPjAm''@;'; put 'put ''JmYyKFgpJiZILnB1c2goWCl9fWZ1bmN0aW9uIGF1KEgscmUsWCl7dmFyIHdlPWxuKEgpO2lmKHJlLnM/KHdlLmNSZWwmJih3ZS5jKz1yZS5zLmMpLHdlLnJSZWwmJih3ZS5yKz1yZS5zLnIpKTood2UuY1JlbCYmKHdlLmMrPXJlLmMpLHdlLnJSZWwmJih3ZS5yKz1yZS5yKSksIVh8fFguYmlm''@;'; put 'put ''ZjwxMil7Zm9yKDt3ZS5jPj0yNTY7KXdlLmMtPTI1Njtmb3IoO3dlLnI+PTY1NTM2Oyl3ZS5yLT02NTUzNn1yZXR1cm4gd2V9ZnVuY3Rpb24gbXMoSCxyZSxYKXt2YXIgd2U9bG4oSCk7cmV0dXJuIHdlLnM9YXUod2UucyxyZS5zLFgpLHdlLmU9YXUod2UuZSxyZS5zLFgpLHdlfWZ1bmN0aW9u''@;'; put 'put ''IGgyKEgscmUpe2lmKEguY1JlbCYmSC5jPDApZm9yKEg9bG4oSCk7SC5jPDA7KUguYys9cmU+OD8xNjM4NDoyNTY7aWYoSC5yUmVsJiZILnI8MClmb3IoSD1sbihIKTtILnI8MDspSC5yKz1yZT44PzEwNDg1NzY6cmU+NT82NTUzNjoxNjM4NDtpZihILmNSZWwmJkguYz49KHJlPjg/MTYzODQ6''@;'; put 'put ''MjU2KSlmb3IoSD1sbihIKTtILmM+PShyZT44PzE2Mzg0OjI1Nik7KUguYy09cmU+OD8xNjM4NDoyNTY7aWYoSC5yUmVsJiZILnI+PTEwNDg1NzYpZm9yKEg9bG4oSCk7SC5yPj0xMDQ4NTc2OylILnItPTEwNDg1NzY7dmFyIFg9UTAoSCk7cmV0dXJuIUguY1JlbCYmbnVsbCE9SC5jUmVsJiYo''@;'; put 'put ''WD1mdW5jdGlvbiBPMihIKXtyZXR1cm4gSC5yZXBsYWNlKC9eKFtBLVpdKS8sIiQkJDEiKX0oWCkpLCFILnJSZWwmJm51bGwhPUguclJlbCYmKFg9ZnVuY3Rpb24gSjIoSCl7cmV0dXJuIEgucmVwbGFjZSgvKFtBLVpdfF4pKFxkKykkLywiJDEkJCQyIil9KFgpKSxYfWZ1bmN0aW9uIEdnKEgs''@;'; put 'put ''cmUpe3JldHVybiAwIT1ILnMucnx8SC5zLnJSZWx8fEguZS5yIT0ocmUuYmlmZj49MTI/MTA0ODU3NTpyZS5iaWZmPj04PzY1NTM2OjE2Mzg0KXx8SC5lLnJSZWw/MCE9SC5zLmN8fEgucy5jUmVsfHxILmUuYyE9KHJlLmJpZmY+PTEyPzE2MzgzOjI1NSl8fEguZS5jUmVsP2gyKEgucyxyZS5i''@;'; put 'put ''aWZmKSsiOiIraDIoSC5lLHJlLmJpZmYpOihILnMuclJlbD8iIjoiJCIpK2hhKEgucy5yKSsiOiIrKEguZS5yUmVsPyIiOiIkIikraGEoSC5lLnIpOihILnMuY1JlbD8iIjoiJCIpK0xsKEgucy5jKSsiOiIrKEguZS5jUmVsPyIiOiIkIikrTGwoSC5lLmMpfXZhciBWMT17fTtmdW5jdGlvbiBf''@;'; put 'put ''YShIKXtyZXR1cm4gcGFyc2VJbnQoZnVuY3Rpb24gdWQoSCl7cmV0dXJuIEgucmVwbGFjZSgvXCQoXGQrKSQvLCIkMSIpfShIKSwxMCktMX1mdW5jdGlvbiBoYShIKXtyZXR1cm4iIisoSCsxKX1mdW5jdGlvbiBYMihIKXtmb3IodmFyIHJlPWZ1bmN0aW9uIFJwKEgpe3JldHVybiBILnJlcGxh''@;'; put 'put ''Y2UoL15cJChbQS1aXSkvLCIkMSIpfShIKSxYPTAsd2U9MDt3ZSE9PXJlLmxlbmd0aDsrK3dlKVg9MjYqWCtyZS5jaGFyQ29kZUF0KHdlKS02NDtyZXR1cm4gWC0xfWZ1bmN0aW9uIExsKEgpe2lmKEg8MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY29sdW1uICIrSCk7dmFyIHJlPSIiO2Zv''@;'; put 'put ''cigrK0g7SDtIPU1hdGguZmxvb3IoKEgtMSkvMjYpKXJlPVN0cmluZy5mcm9tQ2hhckNvZGUoKEgtMSklMjYrNjUpK3JlO3JldHVybiByZX1mdW5jdGlvbiBwbyhIKXtmb3IodmFyIHJlPTAsWD0wLHdlPTA7d2U8SC5sZW5ndGg7Kyt3ZSl7dmFyIHhlPUguY2hhckNvZGVBdCh3ZSk7eGU+PTQ4''@;'; put 'put ''JiZ4ZTw9NTc/cmU9MTAqcmUrKHhlLTQ4KTp4ZT49NjUmJnhlPD05MCYmKFg9MjYqWCsoeGUtNjQpKX1yZXR1cm57YzpYLTEscjpyZS0xfX1mdW5jdGlvbiBRMChIKXtmb3IodmFyIHJlPUguYysxLFg9IiI7cmU7cmU9KHJlLTEpLzI2fDApWD1TdHJpbmcuZnJvbUNoYXJDb2RlKChyZS0xKSUy''@;'; put 'put ''Nis2NSkrWDtyZXR1cm4gWCsoSC5yKzEpfWZ1bmN0aW9uIG5zKEgpe3ZhciByZT1ILmluZGV4T2YoIjoiKTtyZXR1cm4tMT09cmU/e3M6cG8oSCksZTpwbyhIKX06e3M6cG8oSC5zbGljZSgwLHJlKSksZTpwbyhILnNsaWNlKHJlKzEpKX19ZnVuY3Rpb24gQWEoSCxyZSl7cmV0dXJuIHZvaWQg''@;'; put 'put ''MD09PXJlfHwibnVtYmVyIj09dHlwZW9mIHJlP0FhKEgucyxILmUpOigic3RyaW5nIiE9dHlwZW9mIEgmJihIPVEwKEgpKSwic3RyaW5nIiE9dHlwZW9mIHJlJiYocmU9UTAocmUpKSxIPT1yZT9IOkgrIjoiK3JlKX1mdW5jdGlvbiBlYShIKXt2YXIgcmU9SlNPTi5wYXJzZSgneyJzIjp7ImMi''@;'; put 'put ''OjAsInIiOjB9LCJlIjp7ImMiOjAsInIiOjB9fScpLFg9MCx3ZT0wLHhlPTAsRmU9SC5sZW5ndGg7Zm9yKFg9MDt3ZTxGZSYmISgoeGU9SC5jaGFyQ29kZUF0KHdlKS02NCk8MXx8eGU+MjYpOysrd2UpWD0yNipYK3hlO2ZvcihyZS5zLmM9LS1YLFg9MDt3ZTxGZSYmISgoeGU9SC5jaGFyQ29k''@;'; put 'put ''ZUF0KHdlKS00OCk8MHx8eGU+OSk7Kyt3ZSlYPTEwKlgreGU7aWYocmUucy5yPS0tWCx3ZT09PUZlfHw1OD09PUguY2hhckNvZGVBdCgrK3dlKSlyZXR1cm4gcmUuZS5jPXJlLnMuYyxyZS5lLnI9cmUucy5yLHJlO2ZvcihYPTA7d2UhPUZlJiYhKCh4ZT1ILmNoYXJDb2RlQXQod2UpLTY0KTwx''@;'; put 'put ''fHx4ZT4yNik7Kyt3ZSlYPTI2KlgreGU7Zm9yKHJlLmUuYz0tLVgsWD0wO3dlIT1GZSYmISgoeGU9SC5jaGFyQ29kZUF0KHdlKS00OCk8MHx8eGU+OSk7Kyt3ZSlYPTEwKlgreGU7cmV0dXJuIHJlLmUucj0tLVgscmV9ZnVuY3Rpb24gQTEoSCxyZSl7dmFyIFg9ImQiPT1ILnQmJnJlIGluc3Rh''@;'; put 'put ''bmNlb2YgRGF0ZTtpZihudWxsIT1ILnopdHJ5e3JldHVybiBILnc9Ri5mb3JtYXQoSC56LFg/Y3QocmUpOnJlKX1jYXRjaCh3ZSl7fXRyeXtyZXR1cm4gSC53PUYuZm9ybWF0KChILlhGfHx7fSkubnVtRm10SWR8fChYPzE0OjApLFg/Y3QocmUpOnJlKX1jYXRjaCh3ZSl7cmV0dXJuIiIrcmV9''@;'; put 'put ''fWZ1bmN0aW9uIGoxKEgscmUsWCl7cmV0dXJuIG51bGw9PUh8fG51bGw9PUgudHx8InoiPT1ILnQ/IiI6dm9pZCAwIT09SC53P0gudzooImQiPT1ILnQmJiFILnomJlgmJlguZGF0ZU5GJiYoSC56PVguZGF0ZU5GKSwiZSI9PUgudD9OZltILnZdfHxILnY6QTEoSCxudWxsPT1yZT9ILnY6cmUp''@;'; put 'put ''KX1mdW5jdGlvbiBtYyhILHJlKXt2YXIgWD1yZSYmcmUuc2hlZXQ/cmUuc2hlZXQ6IlNoZWV0MSIsd2U9e307cmV0dXJuIHdlW1hdPUgse1NoZWV0TmFtZXM6W1hdLFNoZWV0czp3ZX19ZnVuY3Rpb24gbHUoSCxyZSxYKXt2YXIgd2U9WHx8e30seGU9SD9BcnJheS5pc0FycmF5KEgpOndlLmRl''@;'; put 'put ''bnNlLEZlPUh8fCh4ZT9bXTp7fSksWmU9MCxWZT0wO2lmKEZlJiZudWxsIT13ZS5vcmlnaW4pe2lmKCJudW1iZXIiPT10eXBlb2Ygd2Uub3JpZ2luKVplPXdlLm9yaWdpbjtlbHNle3ZhciBVZT0ic3RyaW5nIj09dHlwZW9mIHdlLm9yaWdpbj9wbyh3ZS5vcmlnaW4pOndlLm9yaWdpbjtaZT1V''@;'; put 'put ''ZS5yLFZlPVVlLmN9RmVbIiFyZWYiXXx8KEZlWyIhcmVmIl09IkExOkExIil9dmFyIFN0PXtzOntjOjFlNyxyOjFlN30sZTp7YzowLHI6MH19O2lmKEZlWyIhcmVmIl0pe3ZhciBJdD1lYShGZVsiIXJlZiJdKTtTdC5zLmM9SXQucy5jLFN0LnMucj1JdC5zLnIsU3QuZS5jPU1hdGgubWF4KFN0''@;'; put 'put ''LmUuYyxJdC5lLmMpLFN0LmUucj1NYXRoLm1heChTdC5lLnIsSXQuZS5yKSwtMT09WmUmJihTdC5lLnI9WmU9SXQuZS5yKzEpfWZvcih2YXIgUHQ9MDtQdCE9cmUubGVuZ3RoOysrUHQpaWYocmVbUHRdKXtpZighQXJyYXkuaXNBcnJheShyZVtQdF0pKXRocm93IG5ldyBFcnJvcigiYW9hX3Rv''@;'; put 'put ''X3NoZWV0IGV4cGVjdHMgYW4gYXJyYXkgb2YgYXJyYXlzIik7Zm9yKHZhciBRdD0wO1F0IT1yZVtQdF0ubGVuZ3RoOysrUXQpaWYodm9pZCAwIT09cmVbUHRdW1F0XSl7dmFyIGFuPXt2OnJlW1B0XVtRdF19LENuPVplK1B0LEx0PVZlK1F0O2lmKFN0LnMucj5DbiYmKFN0LnMucj1DbiksU3Qu''@;'; put 'put ''cy5jPkx0JiYoU3Qucy5jPUx0KSxTdC5lLnI8Q24mJihTdC5lLnI9Q24pLFN0LmUuYzxMdCYmKFN0LmUuYz1MdCksIXJlW1B0XVtRdF18fCJvYmplY3QiIT10eXBlb2YgcmVbUHRdW1F0XXx8QXJyYXkuaXNBcnJheShyZVtQdF1bUXRdKXx8cmVbUHRdW1F0XWluc3RhbmNlb2YgRGF0ZSlpZihB''@;'; put 'put ''cnJheS5pc0FycmF5KGFuLnYpJiYoYW4uZj1yZVtQdF1bUXRdWzFdLGFuLnY9YW4udlswXSksbnVsbD09PWFuLnYpaWYoYW4uZilhbi50PSJuIjtlbHNlIGlmKHdlLm51bGxFcnJvcilhbi50PSJlIixhbi52PTA7ZWxzZXtpZighd2Uuc2hlZXRTdHVicyljb250aW51ZTthbi50PSJ6In1lbHNl''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBhbi52P2FuLnQ9Im4iOiJib29sZWFuIj09dHlwZW9mIGFuLnY/YW4udD0iYiI6YW4udiBpbnN0YW5jZW9mIERhdGU/KGFuLno9d2UuZGF0ZU5GfHxGLl90YWJsZVsxNF0sd2UuY2VsbERhdGVzPyhhbi50PSJkIixhbi53PUYuZm9ybWF0KGFuLnosY3QoYW4udikp''@;'; put 'put ''KTooYW4udD0ibiIsYW4udj1jdChhbi52KSxhbi53PUYuZm9ybWF0KGFuLnosYW4udikpKTphbi50PSJzIjtlbHNlIGFuPXJlW1B0XVtRdF07aWYoYW4mJmFuLmgpdHJ5e2FuLlI9b3MuaHRtbF90b19ycyhhbi5oKSxhbi52PSIiO2Zvcih2YXIgenQ9MDt6dDxhbi5SLmxlbmd0aDsrK3p0KWFu''@;'; put 'put ''LnYrPWFuLlJbenRdLnZ8fCIifWNhdGNoKEluKXt9aWYoeGUpRmVbQ25dfHwoRmVbQ25dPVtdKSxGZVtDbl1bTHRdJiZGZVtDbl1bTHRdLnMmJihhbi5zPUZlW0NuXVtMdF0ucyksRmVbQ25dW0x0XSYmRmVbQ25dW0x0XS56JiYoYW4uej1GZVtDbl1bTHRdLnopLEZlW0NuXVtMdF09YW47ZWxz''@;'; put 'put ''ZXt2YXIgZm49UTAoe2M6THQscjpDbn0pO0ZlW2ZuXSYmRmVbZm5dLnMmJihhbi5zPUZlW2ZuXS5zKSxGZVtmbl0mJkZlW2ZuXS56JiYoYW4uej1GZVtmbl0ueiksRmVbZm5dPWFufX19cmV0dXJuIFN0LnMuYzwxZTcmJihGZVsiIXJlZiJdPUFhKFN0KSksRmV9ZnVuY3Rpb24gbGYoSCxyZSl7''@;'; put 'put ''cmV0dXJuIGx1KG51bGwsSCxyZSl9ZnVuY3Rpb24geWgoSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoNCkpLHJlLndyaXRlX3NoaWZ0KDQsSCkscmV9ZnVuY3Rpb24gbmwoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCg0KTtyZXR1cm4gMD09PXJlPyIiOkgucmVhZF9zaGlmdChyZSwiZGJjcyIpfWZ1''@;'; put 'put ''bmN0aW9uIHN1KEgscmUpe3ZhciBYPSExO3JldHVybiBudWxsPT1yZSYmKFg9ITAscmU9eGkoNCsyKkgubGVuZ3RoKSkscmUud3JpdGVfc2hpZnQoNCxILmxlbmd0aCksSC5sZW5ndGg+MCYmcmUud3JpdGVfc2hpZnQoMCxILCJkYmNzIiksWD9yZS5zbGljZSgwLHJlLmwpOnJlfWZ1bmN0aW9u''@;'; put 'put ''IEt1KEgpe3JldHVybntpY2g6SC5yZWFkX3NoaWZ0KDIpLGlmbnQ6SC5yZWFkX3NoaWZ0KDIpfX1mdW5jdGlvbiBScyhILHJlKXt2YXIgWD1ILmwsd2U9SC5yZWFkX3NoaWZ0KDEpLHhlPW5sKEgpLEZlPVtdLFplPXt0OnhlLGg6eGV9O2lmKDAhPSgxJndlKSl7Zm9yKHZhciBWZT1ILnJlYWRf''@;'; put 'put ''c2hpZnQoNCksVWU9MDtVZSE9VmU7KytVZSlGZS5wdXNoKEt1KEgpKTtaZS5yPUZlfWVsc2UgWmUucj1be2ljaDowLGlmbnQ6MH1dO3JldHVybiBILmw9WCtyZSxaZX0hZnVuY3Rpb24oSCxyZSl7dmFyIFg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG9Ccm93c2VyaWZ5KVg9Y3J5cHRv''@;'; put 'put ''QnJvd3NlcmlmeTtlbHNlIGlmKHZvaWQgMCE9PXJlKVg9cmU7ZWxzZSB0cnl7WD1MKDQxMzQ4KX1jYXRjaCh3ZSl7WD1udWxsfUgucmM0PWZ1bmN0aW9uKHdlLHhlKXt2YXIgRmU9bmV3IEFycmF5KDI1NiksWmU9MCxWZT0wLFVlPTAsU3Q9MDtmb3IoVmU9MDsyNTYhPVZlOysrVmUpRmVbVmVd''@;'; put 'put ''PVZlO2ZvcihWZT0wOzI1NiE9VmU7KytWZSlVZT1VZStGZVtWZV0rd2VbVmUld2UubGVuZ3RoXS5jaGFyQ29kZUF0KDApJjI1NSxTdD1GZVtWZV0sRmVbVmVdPUZlW1VlXSxGZVtVZV09U3Q7VmU9VWU9MDt2YXIgSXQ9aGUoeGUubGVuZ3RoKTtmb3IoWmU9MDtaZSE9eGUubGVuZ3RoOysrWmUp''@;'; put 'put ''U3Q9RmVbVmU9VmUrMSYyNTVdLEZlW1ZlXT1GZVtVZT0oVWUrRmVbVmVdKSUyNTZdLEZlW1VlXT1TdCxJdFtaZV09eGVbWmVdXkZlW0ZlW1ZlXStGZVtVZV0mMjU1XTtyZXR1cm4gSXR9LEgubWQ1PWZ1bmN0aW9uKHdlKXtpZighWCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNyeXB0''@;'; put 'put ''byIpO3JldHVybiBYLmNyZWF0ZUhhc2goIm1kNSIpLnVwZGF0ZShCdWZmZXIuZnJvbSh3ZSkpLmRpZ2VzdCgiaGV4Iil9fShWMSwidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0bz9jcnlwdG86dm9pZCAwKTt2YXIgWWc9UnM7ZnVuY3Rpb24gUGYoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCg0KSxY''@;'; put 'put ''PUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gWCs9SC5yZWFkX3NoaWZ0KDEpPDwxNixILmwrKyx7YzpyZSxpU3R5bGVSZWY6WH19ZnVuY3Rpb24gQnAoSCxyZSl7cmV0dXJuIG51bGw9PXJlJiYocmU9eGkoOCkpLHJlLndyaXRlX3NoaWZ0KC00LEguYykscmUud3JpdGVfc2hpZnQoMyxILmlTdHls''@;'; put 'put ''ZVJlZnx8SC5zKSxyZS53cml0ZV9zaGlmdCgxLDApLHJlfWZ1bmN0aW9uIF80KEgpe3ZhciByZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIHJlKz1ILnJlYWRfc2hpZnQoMSk8PDE2LEgubCsrLHtjOi0xLGlTdHlsZVJlZjpyZX19ZnVuY3Rpb24gRmYoSCxyZSl7cmV0dXJuIG51bGw9PXJlJiYo''@;'; put 'put ''cmU9eGkoNCkpLHJlLndyaXRlX3NoaWZ0KDMsSC5pU3R5bGVSZWZ8fEgucykscmUud3JpdGVfc2hpZnQoMSwwKSxyZX12YXIgc2I9bmwsTk09c3U7ZnVuY3Rpb24gd2goSCl7dmFyIHJlPUgucmVhZF9zaGlmdCg0KTtyZXR1cm4gMD09PXJlfHw0Mjk0OTY3Mjk1PT09cmU/IiI6SC5yZWFkX3No''@;'; put 'put ''aWZ0KHJlLCJkYmNzIil9ZnVuY3Rpb24gUHAoSCxyZSl7dmFyIFg9ITE7cmV0dXJuIG51bGw9PXJlJiYoWD0hMCxyZT14aSgxMjcpKSxyZS53cml0ZV9zaGlmdCg0LEgubGVuZ3RoPjA/SC5sZW5ndGg6NDI5NDk2NzI5NSksSC5sZW5ndGg+MCYmcmUud3JpdGVfc2hpZnQoMCxILCJkYmNzIiks''@;'; put 'put ''WD9yZS5zbGljZSgwLHJlLmwpOnJlfXZhciBkOT1ubCxVZz13aCxGcD1QcDtmdW5jdGlvbiBRZyhIKXt2YXIgcmU9SC5zbGljZShILmwsSC5sKzQpLFg9MSZyZVswXSx3ZT0yJnJlWzBdO0gubCs9NCxyZVswXSY9MjUyO3ZhciB4ZT0wPT09d2U/dW8oWzAsMCwwLDAscmVbMF0scmVbMV0scmVb''@;'; put 'put ''Ml0scmVbM11dLDApOm91KHJlLDApPj4yO3JldHVybiBYP3hlLzEwMDp4ZX1mdW5jdGlvbiBWTShILHJlKXtudWxsPT1yZSYmKHJlPXhpKDQpKTt2YXIgWD0wLHdlPTAseGU9MTAwKkg7aWYoSD09KDB8SCkmJkg+PS0oMTw8MjkpJiZIPDE8PDI5P3dlPTE6eGU9PSgwfHhlKSYmeGU+PS0oMTw8''@;'; put 'put ''MjkpJiZ4ZTwxPDwyOSYmKHdlPTEsWD0xKSwhd2UpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBSa051bWJlciAiK0gpO3JlLndyaXRlX3NoaWZ0KC00LCgoWD94ZTpIKTw8MikrKFgrMikpfWZ1bmN0aW9uIHA5KEgpe3ZhciByZT17czp7fSxlOnt9fTtyZXR1cm4gcmUucy5yPUgucmVh''@;'; put 'put ''ZF9zaGlmdCg0KSxyZS5lLnI9SC5yZWFkX3NoaWZ0KDQpLHJlLnMuYz1ILnJlYWRfc2hpZnQoNCkscmUuZS5jPUgucmVhZF9zaGlmdCg0KSxyZX12YXIgYmg9cDksSHA9ZnVuY3Rpb24gSmcoSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoMTYpKSxyZS53cml0ZV9zaGlmdCg0LEgucy5yKSxyZS53''@;'; put 'put ''cml0ZV9zaGlmdCg0LEguZS5yKSxyZS53cml0ZV9zaGlmdCg0LEgucy5jKSxyZS53cml0ZV9zaGlmdCg0LEguZS5jKSxyZX07ZnVuY3Rpb24gak0oSCl7Zm9yKHZhciByZT1ILnJlYWRfc2hpZnQoNCksWD1bXSx3ZT0wO3dlPHJlOysrd2Upe3ZhciB4ZT1iaChIKTtYLnB1c2goQWEoeGUpKX1y''@;'; put 'put ''ZXR1cm4gWC5qb2luKCIsIil9ZnVuY3Rpb24gZTIoSCl7aWYoSC5sZW5ndGgtSC5sPDgpdGhyb3ciWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvdyI7cmV0dXJuIEgucmVhZF9zaGlmdCg4LCJmIil9ZnVuY3Rpb24gdWYoSCxyZSl7cmV0dXJuKHJlfHx4aSg4KSkud3JpdGVfc2hpZnQoOCxILCJm''@;'; put 'put ''Iil9ZnVuY3Rpb24gWGcoSCl7dmFyIHJlPXt9LHdlPUgucmVhZF9zaGlmdCgxKT4+PjEseGU9SC5yZWFkX3NoaWZ0KDEpLEZlPUgucmVhZF9zaGlmdCgyLCJpIiksWmU9SC5yZWFkX3NoaWZ0KDEpLFZlPUgucmVhZF9zaGlmdCgxKSxVZT1ILnJlYWRfc2hpZnQoMSk7c3dpdGNoKEgubCsrLHdl''@;'; put 'put ''KXtjYXNlIDA6cmUuYXV0bz0xO2JyZWFrO2Nhc2UgMTpyZS5pbmRleD14ZTt2YXIgU3Q9THVbeGVdO1N0JiYocmUucmdiPVdsKFN0KSk7YnJlYWs7Y2FzZSAyOnJlLnJnYj1XbChbWmUsVmUsVWVdKTticmVhaztjYXNlIDM6cmUudGhlbWU9eGV9cmV0dXJuIDAhPUZlJiYocmUudGludD1GZT4w''@;'; put 'put ''P0ZlLzMyNzY3OkZlLzMyNzY4KSxyZX1mdW5jdGlvbiBLZyhILHJlKXtpZihyZXx8KHJlPXhpKDgpKSwhSHx8SC5hdXRvKXJldHVybiByZS53cml0ZV9zaGlmdCg0LDApLHJlLndyaXRlX3NoaWZ0KDQsMCkscmU7bnVsbCE9SC5pbmRleD8ocmUud3JpdGVfc2hpZnQoMSwyKSxyZS53cml0ZV9z''@;'; put 'put ''aGlmdCgxLEguaW5kZXgpKTpudWxsIT1ILnRoZW1lPyhyZS53cml0ZV9zaGlmdCgxLDYpLHJlLndyaXRlX3NoaWZ0KDEsSC50aGVtZSkpOihyZS53cml0ZV9zaGlmdCgxLDUpLHJlLndyaXRlX3NoaWZ0KDEsMCkpO3ZhciBYPUgudGludHx8MDtpZihYPjA/WCo9MzI3Njc6WDwwJiYoWCo9MzI3''@;'; put 'put ''NjgpLHJlLndyaXRlX3NoaWZ0KDIsWCksSC5yZ2ImJm51bGw9PUgudGhlbWUpe3ZhciB3ZT1ILnJnYnx8IkZGRkZGRiI7Im51bWJlciI9PXR5cGVvZiB3ZSYmKHdlPSgiMDAwMDAwIit3ZS50b1N0cmluZygxNikpLnNsaWNlKC02KSkscmUud3JpdGVfc2hpZnQoMSxwYXJzZUludCh3ZS5zbGlj''@;'; put 'put ''ZSgwLDIpLDE2KSkscmUud3JpdGVfc2hpZnQoMSxwYXJzZUludCh3ZS5zbGljZSgyLDQpLDE2KSkscmUud3JpdGVfc2hpZnQoMSxwYXJzZUludCh3ZS5zbGljZSg0LDYpLDE2KSkscmUud3JpdGVfc2hpZnQoMSwyNTUpfWVsc2UgcmUud3JpdGVfc2hpZnQoMiwwKSxyZS53cml0ZV9zaGlmdCgx''@;'; put 'put ''LDApLHJlLndyaXRlX3NoaWZ0KDEsMCk7cmV0dXJuIHJlfWZ1bmN0aW9uIGNkKEgpe3ZhciByZT1ILnJlYWRfc2hpZnQoMSk7cmV0dXJuIEgubCsrLHtmQm9sZDoxJnJlLGZJdGFsaWM6MiZyZSxmVW5kZXJsaW5lOjQmcmUsZlN0cmlrZW91dDo4JnJlLGZPdXRsaW5lOjE2JnJlLGZTaGFkb3c6''@;'; put 'put ''MzImcmUsZkNvbmRlbnNlOjY0JnJlLGZFeHRlbmQ6MTI4JnJlfX1mdW5jdGlvbiBkMihILHJlKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KDQpO3N3aXRjaCh3ZSl7Y2FzZSAwOnJldHVybiIiO2Nhc2UgNDI5NDk2NzI5NTpjYXNlIDQyOTQ5NjcyOTQ6cmV0dXJuezI6IkJJVE1BUCIsMzoiTUVUQUZJ''@;'; put 'put ''TEVQSUNUIiw4OiJESUIiLDE0OiJFTkhNRVRBRklMRSJ9W0gucmVhZF9zaGlmdCg0KV18fCIifWlmKHdlPjQwMCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENsaXBib2FyZDogIit3ZS50b1N0cmluZygxNikpO3JldHVybiBILmwtPTQsSC5yZWFkX3NoaWZ0KDAsMT09cmU/Imxwc3Ry''@;'; put 'put ''IjoibHB3c3RyIil9dmFyIGYxPVs4MCw4MV0sdjk9ezE6e246IkNvZGVQYWdlIix0OjJ9LDI6e246IkNhdGVnb3J5Iix0OjgwfSwzOntuOiJQcmVzZW50YXRpb25Gb3JtYXQiLHQ6ODB9LDQ6e246IkJ5dGVDb3VudCIsdDozfSw1OntuOiJMaW5lQ291bnQiLHQ6M30sNjp7bjoiUGFyYWdyYXBo''@;'; put 'put ''Q291bnQiLHQ6M30sNzp7bjoiU2xpZGVDb3VudCIsdDozfSw4OntuOiJOb3RlQ291bnQiLHQ6M30sOTp7bjoiSGlkZGVuQ291bnQiLHQ6M30sMTA6e246Ik11bHRpbWVkaWFDbGlwQ291bnQiLHQ6M30sMTE6e246IlNjYWxlQ3JvcCIsdDoxMX0sMTI6e246IkhlYWRpbmdQYWlycyIsdDo0MTA4''@;'; put 'put ''fSwxMzp7bjoiVGl0bGVzT2ZQYXJ0cyIsdDo0MTI2fSwxNDp7bjoiTWFuYWdlciIsdDo4MH0sMTU6e246IkNvbXBhbnkiLHQ6ODB9LDE2OntuOiJMaW5rc1VwVG9EYXRlIix0OjExfSwxNzp7bjoiQ2hhcmFjdGVyQ291bnQiLHQ6M30sMTk6e246IlNoYXJlZERvYyIsdDoxMX0sMjI6e246Ikh5''@;'; put 'put ''cGVybGlua3NDaGFuZ2VkIix0OjExfSwyMzp7bjoiQXBwVmVyc2lvbiIsdDozLHA6InZlcnNpb24ifSwyNDp7bjoiRGlnU2lnIix0OjY1fSwyNjp7bjoiQ29udGVudFR5cGUiLHQ6ODB9LDI3OntuOiJDb250ZW50U3RhdHVzIix0OjgwfSwyODp7bjoiTGFuZ3VhZ2UiLHQ6ODB9LDI5OntuOiJW''@;'; put 'put ''ZXJzaW9uIix0OjgwfSwyNTU6e30sMjE0NzQ4MzY0ODp7bjoiTG9jYWxlIix0OjE5fSwyMTQ3NDgzNjUxOntuOiJCZWhhdmlvciIsdDoxOX0sMTkxOTA1NDQzNDp7fX0sZmI9ezE6e246IkNvZGVQYWdlIix0OjJ9LDI6e246IlRpdGxlIix0OjgwfSwzOntuOiJTdWJqZWN0Iix0OjgwfSw0Ontu''@;'; put 'put ''OiJBdXRob3IiLHQ6ODB9LDU6e246IktleXdvcmRzIix0OjgwfSw2OntuOiJDb21tZW50cyIsdDo4MH0sNzp7bjoiVGVtcGxhdGUiLHQ6ODB9LDg6e246Ikxhc3RBdXRob3IiLHQ6ODB9LDk6e246IlJldk51bWJlciIsdDo4MH0sMTA6e246IkVkaXRUaW1lIix0OjY0fSwxMTp7bjoiTGFzdFBy''@;'; put 'put ''aW50ZWQiLHQ6NjR9LDEyOntuOiJDcmVhdGVkRGF0ZSIsdDo2NH0sMTM6e246Ik1vZGlmaWVkRGF0ZSIsdDo2NH0sMTQ6e246IlBhZ2VDb3VudCIsdDozfSwxNTp7bjoiV29yZENvdW50Iix0OjN9LDE2OntuOiJDaGFyQ291bnQiLHQ6M30sMTc6e246IlRodW1ibmFpbCIsdDo3MX0sMTg6e246''@;'; put 'put ''IkFwcGxpY2F0aW9uIix0OjgwfSwxOTp7bjoiRG9jU2VjdXJpdHkiLHQ6M30sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDoxOX0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6MTl9LDE5MTkwNTQ0MzQ6e319LFZwPV90KHY5LCJuIiksdmM9X3QoZmIsIm4iKSxoYj17MToiVVMi''@;'; put 'put ''LDI6IkNBIiwzOiIiLDc6IlJVIiwyMDoiRUciLDMwOiJHUiIsMzE6Ik5MIiwzMjoiQkUiLDMzOiJGUiIsMzQ6IkVTIiwzNjoiSFUiLDM5OiJJVCIsNDE6IkNIIiw0MzoiQVQiLDQ0OiJHQiIsNDU6IkRLIiw0NjoiU0UiLDQ3OiJOTyIsNDg6IlBMIiw0OToiREUiLDUyOiJNWCIsNTU6IkJSIiw2''@;'; put 'put ''MToiQVUiLDY0OiJOWiIsNjY6IlRIIiw4MToiSlAiLDgyOiJLUiIsODQ6IlZOIiw4NjoiQ04iLDkwOiJUUiIsMTA1OiJKUyIsMjEzOiJEWiIsMjE2OiJNQSIsMjE4OiJMWSIsMzUxOiJQVCIsMzU0OiJJUyIsMzU4OiJGSSIsNDIwOiJDWiIsODg2OiJUVyIsOTYxOiJMQiIsOTYyOiJKTyIsOTYz''@;'; put 'put ''OiJTWSIsOTY0OiJJUSIsOTY1OiJLVyIsOTY2OiJTQSIsOTcxOiJBRSIsOTcyOiJJTCIsOTc0OiJRQSIsOTgxOiJJUiIsNjU1MzU6IlVTIn0sQTk9W251bGwsInNvbGlkIiwibWVkaXVtR3JheSIsImRhcmtHcmF5IiwibGlnaHRHcmF5IiwiZGFya0hvcml6b250YWwiLCJkYXJrVmVydGljYWwi''@;'; put 'put ''LCJkYXJrRG93biIsImRhcmtVcCIsImRhcmtHcmlkIiwiZGFya1RyZWxsaXMiLCJsaWdodEhvcml6b250YWwiLCJsaWdodFZlcnRpY2FsIiwibGlnaHREb3duIiwibGlnaHRVcCIsImxpZ2h0R3JpZCIsImxpZ2h0VHJlbGxpcyIsImdyYXkxMjUiLCJncmF5MDYyNSJdO2Z1bmN0aW9uIGZkKEgp''@;'; put 'put ''e3JldHVybiBILm1hcChmdW5jdGlvbihyZSl7cmV0dXJuW3JlPj4xNiYyNTUscmU+PjgmMjU1LDI1NSZyZV19KX12YXIgJHU9ZmQoWzAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1LDAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2''@;'; put 'put ''OTYwLDE2NzExOTM1LDY1NTM1LDgzODg2MDgsMzI3NjgsMTI4LDg0MjEzNzYsODM4ODczNiwzMjg5NiwxMjYzMjI1Niw4NDIxNTA0LDEwMDY2NDMxLDEwMDQwMTY2LDE2Nzc3MTY0LDEzNDM0ODc5LDY2ODQ3NzQsMTY3NDQ1NzYsMjYzMTYsMTM0MjE4MjMsMTI4LDE2NzExOTM1LDE2Nzc2OTYw''@;'; put 'put ''LDY1NTM1LDgzODg3MzYsODM4ODYwOCwzMjg5NiwyNTUsNTI0NzksMTM0MzQ4NzksMTM0MzQ4MjgsMTY3NzcxMTMsMTAwNzk0ODcsMTY3NTEwNTIsMTM0MDg3NjcsMTY3NjQwNTcsMzM2ODcwMywzMzk0NzY0LDEwMDc5MjMyLDE2NzYzOTA0LDE2NzUwODQ4LDE2NzM3NzkyLDY3MTA5MzcsOTg2''@;'; put 'put ''ODk1MCwxMzE1OCwzMzgxNjA2LDEzMDU2LDMzNTUzOTIsMTAwNDAwNjQsMTAwNDAxNjYsMzM1NTU0NSwzMzU1NDQzLDAsMTY3NzcyMTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pLEx1PWxuKCR1KSxlbT1mZChbMTI2MzIyNTYsOTg2ODk1MCw4NDIxNTA0LDY3MTA4ODYsMzM1''@;'; put 'put ''NTQ0MywxNjcxMTY4MCwzMjc2OCwxMzM2OTQ5NywxMjgsMzM5NDU2MCwyNjM2NywxMDAyNzIxMiwxMDA1MzE3MSwxMjgsMzI3NjgsODM4ODYwOCwzMjg5Niw4Mzg4NzM2LDg0MjEzNzYsMTM2MzE0ODgsMTQ1Mzk5OTQsMTMwNjg4NTAsMTM5MjQzNTIsOTk2NzQ5Niw5MTc1MjY3LDkxOTUwMDgs''@;'; put 'put ''MzY4MzUzNywxMDY5MjU4LDg4ODA4OTksNzQ5NDY0LDI4OTM0NzYsMTE3NDU3MzAsMzc1MDIwMSwxNTU1OTUwMywxODM3OTQxLDEyMDg0MzU5LDc2MzIyNTAsNzM2MzMyOCw5NTE0NTg4LDgyODg2MTcsMzAzNjgxNCwxMTE4NDgxMF0pLE5mPXswOiIjTlVMTCEiLDc6IiNESVYvMCEiLDE1OiIj''@;'; put 'put ''VkFMVUUhIiwyMzoiI1JFRiEiLDI5OiIjTkFNRT8iLDM2OiIjTlVNISIsNDI6IiNOL0EiLDQzOiIjR0VUVElOR19EQVRBIiwyNTU6IiNXVEY/In0sT3U9cWUoTmYpLEM0PXsiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQu''@;'; put 'put ''bWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYmluSW5kZXhXcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuaW50bG1hY3Jvc2hlZXQiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4TXMiOiJUT0RPIiwiYXBw''@;'; put 'put ''bGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbCI6ImNvcmVwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWwiOiJjdXN0cHJvcHMiLCJhcHBsaWNhdGlvbi92''@;'; put 'put ''bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZXh0ZW5kZWQtcHJvcGVydGllcyt4bWwiOiJleHRwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b21YbWxQcm9wZXJ0aWVzK3htbCI6ImN1c3RvbXhtbHByb3BzIiwiYXBwbGlj''@;'; put 'put ''YXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY3VzdG9tUHJvcGVydHkiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90VGFibGUiOiJwaXZvdHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9j''@;'; put 'put ''dW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdFRhYmxlK3htbCI6InBpdm90cyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sIjoiY2hhcnRvYmpzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGNvbG9yc3R5''@;'; put 'put ''bGUreG1sIjoiY2hhcnRjb2xvcnMiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1sIjoiY2hhcnRzdHlsZXMiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0ZXgreG1sIjoiY2hhcnRleHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2FsY0NoYWlu''@;'; put 'put ''IjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNhbGNDaGFpbit4bWwiOiJjYWxjY2hhaW5zIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwu''@;'; put 'put ''cHJpbnRlclNldHRpbmdzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZlWCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hdHRhY2hlZFRvb2xiYXJzIjoiVE9ETyIs''@;'; put 'put ''ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb25uZWN0aW9ucyI6ImNvbm5zIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIjoiY29ubnMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZXh0ZXJu''@;'; put 'put ''YWxMaW5rIjoibGlua3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbExpbmsreG1sIjoibGlua3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXRNZXRhZGF0YSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92''@;'; put 'put ''bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZURlZmluaXRpb24iOiJwaXZvdGNhY2hlcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZv''@;'; put 'put ''dENhY2hlUmVjb3JkcyI6InBpdm90cmVjb3JkcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVEZWZpbml0aW9uK3htbCI6InBpdm90Y2FjaGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9m''@;'; put 'put ''ZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sIjoicGl2b3RyZWNvcmRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnF1ZXJ5VGFibGUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNo''@;'; put 'put ''ZWV0bWwucXVlcnlUYWJsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnVzZXJOYW1lcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25IZWFkZXJzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkxvZyI6IlRP''@;'; put 'put ''RE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkhlYWRlcnMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uTG9n''@;'; put 'put ''K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC51c2VyTmFtZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZVNpbmdsZUNlbGxzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5v''@;'; put 'put ''cGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlU2luZ2xlQ2VsbHMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXIiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlIjoiVE9ETyIsImFwcGxp''@;'; put 'put ''Y2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXIreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndzU29ydE1hcCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGUi''@;'; put 'put ''OiJ0YWJsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWwiOiJ0YWJsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sIjoidGhlbWVzIiwiYXBwbGlj''@;'; put 'put ''YXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lT3ZlcnJpZGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lQ2FjaGUreG1sIjoiVE9ETyIs''@;'; put 'put ''ImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdCI6InZiYSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdFNpZ25hdHVyZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZvbGF0aWxlRGVwZW5kZW5jaWVzIjoiVE9ETyIsImFwcGxpY2F0''@;'; put 'put ''aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlRGVwZW5kZW5jaWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29udHJvbHByb3BlcnRpZXMreG1sIjoiY3RybHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9w''@;'; put 'put ''ZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVsK2RhdGEiOiJkYXRhbW9kZWxzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlN1cnZleSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmcreG1sIjoiZHJhd2lu''@;'; put 'put ''Z3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0c2hhcGVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1Db2xvcnMreG1sIjoiVE9E''@;'; put 'put ''TyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbURhdGEreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUxheW91dCt4bWwiOiJUT0RP''@;'; put 'put ''IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtU3R5bGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxEcmF3aW5nIjoiVE9ETyIsImFwcGxpY2F0aW9uL3Zu''@;'; put 'put ''ZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sIjoicmVscyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5vbGVPYmplY3QiOiJUT0RPIiwiaW1hZ2UvcG5nIjoiVE9ETyIsc2hlZXQ6ImpzIn0sZzM9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''SD17d29ya2Jvb2tzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCIseGxzbToiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC5tYWluK3htbCIseGxzYjoiYXBw''@;'; put 'put ''bGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiIseGxhbToiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC5tYWluK3htbCIseGx0eDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50''@;'; put 'put ''LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWwifSxzdHJzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRTdHJpbmdzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0''@;'; put 'put ''cmluZ3MifSxjb21tZW50czp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29tbWVudHMifSxzaGVldHM6e3hsc3g6ImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53b3Jrc2hlZXQifSxjaGFydHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVu''@;'; put 'put ''dC5zcHJlYWRzaGVldG1sLmNoYXJ0c2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldCJ9LGRpYWxvZ3M6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3ht''@;'; put 'put ''bCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmRpYWxvZ3NoZWV0In0sbWFjcm9zOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0In0sdGFibGVzOnt4bHN4OiJhcHBs''@;'; put 'put ''aWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZSJ9LHBpdm90czp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50''@;'; put 'put ''LnNwcmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIn0scGl2b3RjYWNoZXM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVE''@;'; put 'put ''ZWZpbml0aW9uK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0aW9uIn0scGl2b3RyZWNvcmRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlUmVjb3Jk''@;'; put 'put ''cyt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlUmVjb3JkcyJ9LGNvbm5zOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWwiLHhsc2I6ImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5tcy1leGNlbC5jb25uZWN0aW9ucyJ9LGxpbmtzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbExpbmsreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZXh0ZXJuYWxMaW5rIn0s''@;'; put 'put ''c3R5bGVzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc3R5bGVzIn19O3JldHVybiBvbihIKS5mb3JFYWNoKGZ1bmN0aW9uKHJlKXtbInhs''@;'; put 'put ''c20iLCJ4bGFtIl0uZm9yRWFjaChmdW5jdGlvbihYKXtIW3JlXVtYXXx8KEhbcmVdW1hdPUhbcmVdLnhsc3gpfSl9KSxvbihIKS5mb3JFYWNoKGZ1bmN0aW9uKHJlKXtvbihIW3JlXSkuZm9yRWFjaChmdW5jdGlvbihYKXtDNFtIW3JlXVtYXV09cmV9KX0pLEh9KCksTGE9ZnVuY3Rpb24gb3Qo''@;'; put 'put ''SCl7Zm9yKHZhciByZT1bXSxYPW9uKEgpLHdlPTA7d2UhPT1YLmxlbmd0aDsrK3dlKW51bGw9PXJlW0hbWFt3ZV1dXSYmKHJlW0hbWFt3ZV1dXT1bXSkscmVbSFtYW3dlXV1dLnB1c2goWFt3ZV0pO3JldHVybiByZX0oQzQpO1cwLkNUPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5v''@;'; put 'put ''cmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMiO3ZhciBhMj1TaSgiVHlwZXMiLG51bGwse3htbG5zOlcwLkNULCJ4bWxuczp4c2QiOlcwLnhzZCwieG1sbnM6eHNpIjpXMC54c2l9KSxJUj1bWyJ4bWwiLCJhcHBsaWNhdGlvbi94bWwiXSxbImJpbiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1l''@;'; put 'put ''eGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW4iXSxbInZtbCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxEcmF3aW5nIl0sWyJkYXRhIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVs''@;'; put 'put ''K2RhdGEiXSxbImJtcCIsImltYWdlL2JtcCJdLFsicG5nIiwiaW1hZ2UvcG5nIl0sWyJnaWYiLCJpbWFnZS9naWYiXSxbImVtZiIsImltYWdlL3gtZW1mIl0sWyJ3bWYiLCJpbWFnZS94LXdtZiJdLFsianBnIiwiaW1hZ2UvanBlZyJdLFsianBlZyIsImltYWdlL2pwZWciXSxbInRpZiIsImlt''@;'; put 'put ''YWdlL3RpZmYiXSxbInRpZmYiLCJpbWFnZS90aWZmIl0sWyJwZGYiLCJhcHBsaWNhdGlvbi9wZGYiXSxbInJlbHMiLExhLnJlbHNbMF1dXS5tYXAoZnVuY3Rpb24oSCl7cmV0dXJuIFNpKCJEZWZhdWx0IixudWxsLHtFeHRlbnNpb246SFswXSxDb250ZW50VHlwZTpIWzFdfSl9KSxkdD17V0I6''@;'; put 'put ''Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLFNIRUVUOiJodHRwOi8vc2hlZXRqcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmlj''@;'; put 'put ''ZURvY3VtZW50IixITElOSzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9oeXBlcmxpbmsiLFZNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25z''@;'; put 'put ''aGlwcy92bWxEcmF3aW5nIixYUEFUSDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmtQYXRoIixYTUlTUzoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlv''@;'; put 'put ''bnNoaXBzL3hsRXh0ZXJuYWxMaW5rUGF0aC94bFBhdGhNaXNzaW5nIixYTElOSzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmsiLENYTUw6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRz''@;'; put 'put ''Lm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sIixDWE1MUDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWxQcm9wcyIsVkJBOiJodHRwOi8vc2NoZW1hcy5taWNy''@;'; put 'put ''b3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMvdmJhUHJvamVjdCJ9O2Z1bmN0aW9uIER0KEgpe3ZhciByZT1ILmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIEguc2xpY2UoMCxyZSsxKSsiX3JlbHMvIitILnNsaWNlKHJlKzEpKyIucmVscyJ9ZnVuY3Rpb24gWHQoSCxyZSl7dmFy''@;'; put 'put ''IFg9eyIhaWQiOnt9fTtpZighSClyZXR1cm4gWDsiLyIhPT1yZS5jaGFyQXQoMCkmJihyZT0iLyIrcmUpO3ZhciB3ZT17fTtyZXR1cm4oSC5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHhlKXt2YXIgRmU9cXQoeGUpO2lmKCI8UmVsYXRpb25zaGlwIj09PUZlWzBdKXt2YXIgWmU9''@;'; put 'put ''e307WmUuVHlwZT1GZS5UeXBlLFplLlRhcmdldD1GZS5UYXJnZXQsWmUuSWQ9RmUuSWQsWmUuVGFyZ2V0TW9kZT1GZS5UYXJnZXRNb2RlO3ZhciBWZT0iRXh0ZXJuYWwiPT09RmUuVGFyZ2V0TW9kZT9GZS5UYXJnZXQ6dW4oRmUuVGFyZ2V0LHJlKTtYW1ZlXT1aZSx3ZVtGZS5JZF09WmV9fSks''@;'; put 'put ''WFsiIWlkIl09d2UsWH1XMC5SRUxTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiO3ZhciB1ZT1TaSgiUmVsYXRpb25zaGlwcyIsbnVsbCx7eG1sbnM6VzAuUkVMU30pO2Z1bmN0aW9uIFR0KEgpe3ZhciByZT1bY24sdWVdO3Jl''@;'; put 'put ''dHVybiBvbihIWyIhaWQiXSkuZm9yRWFjaChmdW5jdGlvbihYKXtyZVtyZS5sZW5ndGhdPVNpKCJSZWxhdGlvbnNoaXAiLG51bGwsSFsiIWlkIl1bWF0pfSkscmUubGVuZ3RoPjImJihyZVtyZS5sZW5ndGhdPSI8L1JlbGF0aW9uc2hpcHM+IixyZVsxXT1yZVsxXS5yZXBsYWNlKCIvPiIsIj4i''@;'; put 'put ''KSkscmUuam9pbigiIil9dmFyIGE9W2R0LkhMSU5LLGR0LlhQQVRILGR0LlhNSVNTXTtmdW5jdGlvbiBidChILHJlLFgsd2UseGUsRmUpe2lmKHhlfHwoeGU9e30pLEhbIiFpZCJdfHwoSFsiIWlkIl09e30pLHJlPDApZm9yKHJlPTE7SFsiIWlkIl1bInJJZCIrcmVdOysrcmUpO2lmKHhlLklk''@;'; put 'put ''PSJySWQiK3JlLHhlLlR5cGU9d2UseGUuVGFyZ2V0PVgsRmU/eGUuVGFyZ2V0TW9kZT1GZTphLmluZGV4T2YoeGUuVHlwZSk+LTEmJih4ZS5UYXJnZXRNb2RlPSJFeHRlcm5hbCIpLEhbIiFpZCJdW3hlLklkXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZXdyaXRlIHJJZCAiK3JlKTtyZXR1''@;'; put 'put ''cm4gSFsiIWlkIl1beGUuSWRdPXhlLEhbKCIvIit4ZS5UYXJnZXQpLnJlcGxhY2UoIi8vIiwiLyIpXT14ZSxyZX1mdW5jdGlvbiBfKEgscmUsWCl7cmV0dXJuWycgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSInK0grJyI+XG4nLCcgICAgPHJkZjp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0''@;'; put 'put ''cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhLycrKFh8fCJvZGYiKSsiIyIrcmUrJyIvPlxuJywiICA8L3JkZjpEZXNjcmlwdGlvbj5cbiJdLmpvaW4oIiIpfWZ1bmN0aW9uIHdvKEgscmUpe3JldHVyblsnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iJytI''@;'; put 'put ''KyciPlxuJywnICAgIDxuczA6aGFzUGFydCB4bWxuczpuczA9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS9wa2cjIiByZGY6cmVzb3VyY2U9IicrcmUrJyIvPlxuJywiICA8L3JkZjpEZXNjcmlwdGlvbj5cbiJdLmpvaW4oIiIpfXZhciAkbz1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBIPSc8b2ZmaWNlOmRvY3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOm1ldGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiIHhtbG5zOmRj''@;'; put 'put ''PSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxvZmZpY2U6bWV0YT48bWV0YTpnZW5lcmF0b3I+U2hlZXRKUyAnK1UudmVyc2lvbisiPC9tZXRhOmdlbmVyYXRv''@;'; put 'put ''cj48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+IjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSH19KCksb2U9W1siY3A6Y2F0ZWdvcnkiLCJDYXRlZ29yeSJdLFsiY3A6Y29udGVudFN0YXR1cyIsIkNvbnRlbnRTdGF0dXMiXSxbImNwOmtleXdvcmRzIiwiS2V5d29yZHMi''@;'; put 'put ''XSxbImNwOmxhc3RNb2RpZmllZEJ5IiwiTGFzdEF1dGhvciJdLFsiY3A6bGFzdFByaW50ZWQiLCJMYXN0UHJpbnRlZCJdLFsiY3A6cmV2aXNpb24iLCJSZXZOdW1iZXIiXSxbImNwOnZlcnNpb24iLCJWZXJzaW9uIl0sWyJkYzpjcmVhdG9yIiwiQXV0aG9yIl0sWyJkYzpkZXNjcmlwdGlvbiIs''@;'; put 'put ''IkNvbW1lbnRzIl0sWyJkYzppZGVudGlmaWVyIiwiSWRlbnRpZmllciJdLFsiZGM6bGFuZ3VhZ2UiLCJMYW5ndWFnZSJdLFsiZGM6c3ViamVjdCIsIlN1YmplY3QiXSxbImRjOnRpdGxlIiwiVGl0bGUiXSxbImRjdGVybXM6Y3JlYXRlZCIsIkNyZWF0ZWREYXRlIiwiZGF0ZSJdLFsiZGN0ZXJt''@;'; put 'put ''czptb2RpZmllZCIsIk1vZGlmaWVkRGF0ZSIsImRhdGUiXV07VzAuQ09SRV9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiLGR0LkNPUkVfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3Jt''@;'; put 'put ''YXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcy9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiO3ZhciBBYz1mdW5jdGlvbigpe2Zvcih2YXIgSD1uZXcgQXJyYXkob2UubGVuZ3RoKSxyZT0wO3JlPG9lLmxlbmd0aDsrK3JlKXt2YXIgWD1vZVtyZV0sd2U9Iig/OiIrWFswXS5zbGlj''@;'; put 'put ''ZSgwLFhbMF0uaW5kZXhPZigiOiIpKSsiOikiK1hbMF0uc2xpY2UoWFswXS5pbmRleE9mKCI6IikrMSk7SFtyZV09bmV3IFJlZ0V4cCgiPCIrd2UrIltePl0qPihbXFxzXFxTXSo/KTwvIit3ZSsiPiIpfXJldHVybiBIfSgpO2Z1bmN0aW9uIEsyKEgpe3ZhciByZT17fTtIPWowKEgpO2Zvcih2''@;'; put 'put ''YXIgWD0wO1g8b2UubGVuZ3RoOysrWCl7dmFyIHdlPW9lW1hdLHhlPUgubWF0Y2goQWNbWF0pO251bGwhPXhlJiZ4ZS5sZW5ndGg+MCYmKHJlW3dlWzFdXT1ncih4ZVsxXSkpLCJkYXRlIj09PXdlWzJdJiZyZVt3ZVsxXV0mJihyZVt3ZVsxXV09cG4ocmVbd2VbMV1dKSl9cmV0dXJuIHJlfXZh''@;'; put 'put ''ciBNbj1TaSgiY3A6Y29yZVByb3BlcnRpZXMiLG51bGwseyJ4bWxuczpjcCI6VzAuQ09SRV9QUk9QUywieG1sbnM6ZGMiOlcwLmRjLCJ4bWxuczpkY3Rlcm1zIjpXMC5kY3Rlcm1zLCJ4bWxuczpkY21pdHlwZSI6VzAuZGNtaXR5cGUsInhtbG5zOnhzaSI6VzAueHNpfSk7ZnVuY3Rpb24geG4o''@;'; put 'put ''SCxyZSxYLHdlLHhlKXtudWxsIT14ZVtIXXx8bnVsbD09cmV8fCIiPT09cmV8fCh4ZVtIXT1yZSxyZT1PcihyZSksd2Vbd2UubGVuZ3RoXT1YP1NpKEgscmUsWCk6R28oSCxyZSkpfXZhciBfMj1bWyJBcHBsaWNhdGlvbiIsIkFwcGxpY2F0aW9uIiwic3RyaW5nIl0sWyJBcHBWZXJzaW9uIiwi''@;'; put 'put ''QXBwVmVyc2lvbiIsInN0cmluZyJdLFsiQ29tcGFueSIsIkNvbXBhbnkiLCJzdHJpbmciXSxbIkRvY1NlY3VyaXR5IiwiRG9jU2VjdXJpdHkiLCJzdHJpbmciXSxbIk1hbmFnZXIiLCJNYW5hZ2VyIiwic3RyaW5nIl0sWyJIeXBlcmxpbmtzQ2hhbmdlZCIsIkh5cGVybGlua3NDaGFuZ2VkIiwi''@;'; put 'put ''Ym9vbCJdLFsiU2hhcmVkRG9jIiwiU2hhcmVkRG9jIiwiYm9vbCJdLFsiTGlua3NVcFRvRGF0ZSIsIkxpbmtzVXBUb0RhdGUiLCJib29sIl0sWyJTY2FsZUNyb3AiLCJTY2FsZUNyb3AiLCJib29sIl0sWyJIZWFkaW5nUGFpcnMiLCJIZWFkaW5nUGFpcnMiLCJyYXciXSxbIlRpdGxlc09mUGFy''@;'; put 'put ''dHMiLCJUaXRsZXNPZlBhcnRzIiwicmF3Il1dO2Z1bmN0aW9uIE1zKEgscmUsWCx3ZSl7dmFyIHhlPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgSCl4ZT13aShILHdlKTtlbHNlIGZvcih2YXIgRmU9MDtGZTxILmxlbmd0aDsrK0ZlKXhlPXhlLmNvbmNhdChIW0ZlXS5tYXAoZnVuY3Rpb24oSXQp''@;'; put 'put ''e3JldHVybnt2Okl0fX0pKTt2YXIgWmU9InN0cmluZyI9PXR5cGVvZiByZT93aShyZSx3ZSkubWFwKGZ1bmN0aW9uKEl0KXtyZXR1cm4gSXQudn0pOnJlLFZlPTAsVWU9MDtpZihaZS5sZW5ndGg+MClmb3IodmFyIFN0PTA7U3QhPT14ZS5sZW5ndGg7U3QrPTIpe3N3aXRjaChVZT0reGVbU3Qr''@;'; put 'put ''MV0udix4ZVtTdF0udil7Y2FzZSJXb3Jrc2hlZXRzIjpjYXNlIlx1NWRlNVx1NGY1Y1x1ODg2OCI6Y2FzZSJcdTA0MWJcdTA0MzhcdTA0NDFcdTA0NDJcdTA0NGIiOmNhc2UiXHUwNjIzXHUwNjQ4XHUwNjMxXHUwNjI3XHUwNjQyIFx1MDYyN1x1MDY0NFx1MDYzOVx1MDY0NVx1MDY0NCI6Y2Fz''@;'; put 'put ''ZSJcdTMwZWZcdTMwZmNcdTMwYWZcdTMwYjdcdTMwZmNcdTMwYzgiOmNhc2UiXHUwNWQyXHUwNWRjXHUwNWQ5XHUwNWQ1XHUwNWUwXHUwNWQ1XHUwNWVhIFx1MDVlMlx1MDVkMVx1MDVkNVx1MDVkM1x1MDVkNCI6Y2FzZSJBcmJlaXRzYmxceGU0dHRlciI6Y2FzZSJceGM3YWxcdTAxMzFcdTAx''@;'; put 'put ''NWZtYSBTYXlmYWxhclx1MDEzMSI6Y2FzZSJGZXVpbGxlcyBkZSBjYWxjdWwiOmNhc2UiRm9nbGkgZGkgbGF2b3JvIjpjYXNlIkZvbGhhcyBkZSBjXHhlMWxjdWxvIjpjYXNlIlBsYW5pbGhhcyI6Y2FzZSJSZWduZWFyayI6Y2FzZSJIb2phcyBkZSBjXHhlMWxjdWxvIjpjYXNlIldlcmtibGFk''@;'; put 'put ''ZW4iOlguV29ya3NoZWV0cz1VZSxYLlNoZWV0TmFtZXM9WmUuc2xpY2UoVmUsVmUrVWUpO2JyZWFrO2Nhc2UiTmFtZWQgUmFuZ2VzIjpjYXNlIlJhbmdvcyBjb24gbm9tYnJlIjpjYXNlIlx1NTQwZFx1NTI0ZFx1NGVkOFx1MzA0ZFx1NGUwMFx1ODlhNyI6Y2FzZSJCZW5hbm50ZSBCZXJlaWNo''@;'; put 'put ''ZSI6Y2FzZSJOYXZuZ2l2bmUgb21yXHhlNWRlciI6WC5OYW1lZFJhbmdlcz1VZSxYLkRlZmluZWROYW1lcz1aZS5zbGljZShWZSxWZStVZSk7YnJlYWs7Y2FzZSJDaGFydHMiOmNhc2UiRGlhZ3JhbW1lIjpYLkNoYXJ0c2hlZXRzPVVlLFguQ2hhcnROYW1lcz1aZS5zbGljZShWZSxWZStVZSl9''@;'; put 'put ''VmUrPVVlfX1XMC5FWFRfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXMiLGR0LkVYVF9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYv''@;'; put 'put ''cmVsYXRpb25zaGlwcy9leHRlbmRlZC1wcm9wZXJ0aWVzIjt2YXIgWU09U2koIlByb3BlcnRpZXMiLG51bGwse3htbG5zOlcwLkVYVF9QUk9QUywieG1sbnM6dnQiOlcwLnZ0fSk7VzAuQ1VTVF9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50''@;'; put 'put ''LzIwMDYvY3VzdG9tLXByb3BlcnRpZXMiLGR0LkNVU1RfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tLXByb3BlcnRpZXMiO3ZhciB5OT0vPFtePl0rPltePF0qL2csT249U2koIlByb3BlcnRp''@;'; put 'put ''ZXMiLG51bGwse3htbG5zOlcwLkNVU1RfUFJPUFMsInhtbG5zOnZ0IjpXMC52dH0pO3ZhciBlbz17VGl0bGU6IlRpdGxlIixTdWJqZWN0OiJTdWJqZWN0IixBdXRob3I6IkF1dGhvciIsS2V5d29yZHM6IktleXdvcmRzIixDb21tZW50czoiRGVzY3JpcHRpb24iLExhc3RBdXRob3I6Ikxhc3RB''@;'; put 'put ''dXRob3IiLFJldk51bWJlcjoiUmV2aXNpb24iLEFwcGxpY2F0aW9uOiJBcHBOYW1lIixMYXN0UHJpbnRlZDoiTGFzdFByaW50ZWQiLENyZWF0ZWREYXRlOiJDcmVhdGVkIixNb2RpZmllZERhdGU6Ikxhc3RTYXZlZCIsQ2F0ZWdvcnk6IkNhdGVnb3J5IixNYW5hZ2VyOiJNYW5hZ2VyIixDb21w''@;'; put 'put ''YW55OiJDb21wYW55IixBcHBWZXJzaW9uOiJWZXJzaW9uIixDb250ZW50U3RhdHVzOiJDb250ZW50U3RhdHVzIixJZGVudGlmaWVyOiJJZGVudGlmaWVyIixMYW5ndWFnZToiTGFuZ3VhZ2UifSxGMD1udChlbyk7ZnVuY3Rpb24gR2woSCxyZSxYKXtIW3JlPUYwW3JlXXx8cmVdPVh9ZnVuY3Rp''@;'; put 'put ''b24gTTgoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCg0KSxYPUgucmVhZF9zaGlmdCg0KTtyZXR1cm4gbmV3IERhdGUoMWUzKihYLzFlNypNYXRoLnBvdygyLDMyKStyZS8xZTctMTE2NDQ0NzM2MDApKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuMDAwLywiIil9ZnVuY3Rpb24gaGQoSCxyZSxY''@;'; put 'put ''KXt2YXIgd2U9SC5sLHhlPUgucmVhZF9zaGlmdCgwLCJscHN0ci1jcCIpO2lmKFgpZm9yKDtILmwtd2UmMzspKytILmw7cmV0dXJuIHhlfWZ1bmN0aW9uIFZmKEgscmUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdCgwLCJscHdzdHIiKTtyZXR1cm4gWCYmKEgubCs9NC0od2UubGVuZ3RoKzEmMykm''@;'; put 'put ''Myksd2V9ZnVuY3Rpb24gcTIoSCxyZSxYKXtyZXR1cm4gMzE9PT1yZT9WZihIKTpoZChILDAsWCl9ZnVuY3Rpb24gejEoSCxyZSxYKXtyZXR1cm4gcTIoSCxyZSwhMT09PVg/MDo0KX1mdW5jdGlvbiBwYihIKXt2YXIgcmU9SC5sLFg9Z2QoSCw4MSk7cmV0dXJuIDA9PUhbSC5sXSYmMD09SFtI''@;'; put 'put ''LmwrMV0mJkgubC1yZSYyJiYoSC5sKz0yKSxbWCxnZChILDMpXX1mdW5jdGlvbiBwZChILHJlKXtmb3IodmFyIFg9SC5yZWFkX3NoaWZ0KDQpLHdlPXt9LHhlPTA7eGUhPVg7Kyt4ZSl7dmFyIEZlPUgucmVhZF9zaGlmdCg0KSxaZT1ILnJlYWRfc2hpZnQoNCk7d2VbRmVdPUgucmVhZF9zaGlm''@;'; put 'put ''dChaZSwxMjAwPT09cmU/InV0ZjE2bGUiOiJ1dGY4IikucmVwbGFjZShULCIiKS5yZXBsYWNlKFMsIiEiKSwxMjAwPT09cmUmJlplJTImJihILmwrPTIpfXJldHVybiAzJkgubCYmKEgubD1ILmw+PjM8PDIpLHdlfWZ1bmN0aW9uIHAyKEgpe3ZhciByZT1ILnJlYWRfc2hpZnQoNCksWD1ILnNs''@;'; put 'put ''aWNlKEgubCxILmwrcmUpO3JldHVybiBILmwrPXJlLCgzJnJlKT4wJiYoSC5sKz00LSgzJnJlKSYzKSxYfWZ1bmN0aW9uIGdkKEgscmUsWCl7dmFyIHhlLHdlPUgucmVhZF9zaGlmdCgyKSxGZT1YfHx7fTtpZihILmwrPTIsMTIhPT1yZSYmd2UhPT1yZSYmLTE9PT1mMS5pbmRleE9mKHJlKSYm''@;'; put 'put ''KDQxMjYhPSg2NTUzNCZyZSl8fDQxMjYhPSg2NTUzNCZ3ZSkpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdHlwZSAiK3JlKyIgc2F3ICIrd2UpO3N3aXRjaCgxMj09PXJlP3dlOnJlKXtjYXNlIDI6cmV0dXJuIHhlPUgucmVhZF9zaGlmdCgyLCJpIiksRmUucmF3fHwoSC5sKz0yKSx4ZTtj''@;'; put 'put ''YXNlIDM6cmV0dXJuIEgucmVhZF9zaGlmdCg0LCJpIik7Y2FzZSAxMTpyZXR1cm4gMCE9PUgucmVhZF9zaGlmdCg0KTtjYXNlIDE5OnJldHVybiBILnJlYWRfc2hpZnQoNCk7Y2FzZSAzMDpyZXR1cm4gaGQoSCwwLDQpLnJlcGxhY2UoVCwiIik7Y2FzZSAzMTpyZXR1cm4gVmYoSCk7Y2FzZSA2''@;'; put 'put ''NDpyZXR1cm4gTTgoSCk7Y2FzZSA2NTpyZXR1cm4gcDIoSCk7Y2FzZSA3MTpyZXR1cm4gZnVuY3Rpb24gSk0oSCl7dmFyIHJlPXt9O3JldHVybiByZS5TaXplPUgucmVhZF9zaGlmdCg0KSxILmwrPXJlLlNpemUrMy0ocmUuU2l6ZS0xKSU0LHJlfShIKTtjYXNlIDgwOnJldHVybiB6MShILHdl''@;'; put 'put ''LCFGZS5yYXcpLnJlcGxhY2UoVCwiIik7Y2FzZSA4MTpyZXR1cm4gZnVuY3Rpb24gZGQoSCxyZSl7aWYoIXJlKXRocm93IG5ldyBFcnJvcigiVnRVbmFsaWduZWRTdHJpbmcgbXVzdCBoYXZlIHBvc2l0aXZlIGxlbmd0aCIpO3JldHVybiBxMihILHJlLDApfShILHdlKS5yZXBsYWNlKFQsIiIp''@;'; put 'put ''O2Nhc2UgNDEwODpyZXR1cm4gZnVuY3Rpb24gUU0oSCl7Zm9yKHZhciByZT1ILnJlYWRfc2hpZnQoNCksWD1bXSx3ZT0wO3dlPHJlLzI7Kyt3ZSlYLnB1c2gocGIoSCkpO3JldHVybiBYfShIKTtjYXNlIDQxMjY6Y2FzZSA0MTI3OnJldHVybiA0MTI3PT13ZT9mdW5jdGlvbiB3bChIKXtmb3Io''@;'; put 'put ''dmFyIHJlPUgucmVhZF9zaGlmdCg0KSxYPVtdLHdlPTA7d2UhPXJlOysrd2Upe3ZhciB4ZT1ILmw7WFt3ZV09SC5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpLnJlcGxhY2UoVCwiIiksSC5sLXhlJjImJihILmwrPTIpfXJldHVybiBYfShIKTpmdW5jdGlvbiB2cihIKXtmb3IodmFyIHJlPUgucmVh''@;'; put 'put ''ZF9zaGlmdCg0KSxYPVtdLHdlPTA7d2UhPXJlOysrd2UpWFt3ZV09SC5yZWFkX3NoaWZ0KDAsImxwc3RyLWNwIikucmVwbGFjZShULCIiKTtyZXR1cm4gWH0oSCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGVkUHJvcGVydHlWYWx1ZSB1bnJlY29nbml6ZWQgdHlwZSAiK3JlKyIgIit3''@;'; put 'put ''ZSl9fWZ1bmN0aW9uIFpwKEgscmUpe3ZhciBYPXhpKDQpLHdlPXhpKDQpO3N3aXRjaChYLndyaXRlX3NoaWZ0KDQsODA9PUg/MzE6SCksSCl7Y2FzZSAzOndlLndyaXRlX3NoaWZ0KC00LHJlKTticmVhaztjYXNlIDU6KHdlPXhpKDgpKS53cml0ZV9zaGlmdCg4LHJlLCJmIik7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAxMTp3ZS53cml0ZV9zaGlmdCg0LHJlPzE6MCk7YnJlYWs7Y2FzZSA2NDp3ZT1mdW5jdGlvbiBFOChIKXt2YXIgWD0oInN0cmluZyI9PXR5cGVvZiBIP25ldyBEYXRlKERhdGUucGFyc2UoSCkpOkgpLmdldFRpbWUoKS8xZTMrMTE2NDQ0NzM2MDAsd2U9WCVNYXRoLnBvdygyLDMyKSx4ZT0o''@;'; put 'put ''WC13ZSkvTWF0aC5wb3coMiwzMik7eGUqPTFlNzt2YXIgRmU9KHdlKj0xZTcpL01hdGgucG93KDIsMzIpfDA7RmU+MCYmKHdlJT1NYXRoLnBvdygyLDMyKSx4ZSs9RmUpO3ZhciBaZT14aSg4KTtyZXR1cm4gWmUud3JpdGVfc2hpZnQoNCx3ZSksWmUud3JpdGVfc2hpZnQoNCx4ZSksWmV9KHJl''@;'; put 'put ''KTticmVhaztjYXNlIDMxOmNhc2UgODA6Zm9yKCh3ZT14aSg0KzIqKHJlLmxlbmd0aCsxKSsocmUubGVuZ3RoJTI/MDoyKSkpLndyaXRlX3NoaWZ0KDQscmUubGVuZ3RoKzEpLHdlLndyaXRlX3NoaWZ0KDAscmUsImRiY3MiKTt3ZS5sIT13ZS5sZW5ndGg7KXdlLndyaXRlX3NoaWZ0KDEsMCk7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGVkUHJvcGVydHlWYWx1ZSB1bnJlY29nbml6ZWQgdHlwZSAiK0grIiAiK3JlKX1yZXR1cm4gVihbWCx3ZV0pfWZ1bmN0aW9uIE5jKEgscmUpe3ZhciBYPUgubCx3ZT1ILnJlYWRfc2hpZnQoNCkseGU9SC5yZWFkX3NoaWZ0KDQpLEZl''@;'; put 'put ''PVtdLFplPTAsVmU9MCxVZT0tMSxTdD17fTtmb3IoWmU9MDtaZSE9eGU7KytaZSl7dmFyIEl0PUgucmVhZF9zaGlmdCg0KSxQdD1ILnJlYWRfc2hpZnQoNCk7RmVbWmVdPVtJdCxQdCtYXX1GZS5zb3J0KGZ1bmN0aW9uKEluLFJuKXtyZXR1cm4gSW5bMV0tUm5bMV19KTt2YXIgUXQ9e307Zm9y''@;'; put 'put ''KFplPTA7WmUhPXhlOysrWmUpe2lmKEgubCE9PUZlW1plXVsxXSl7dmFyIGFuPSEwO2lmKFplPjAmJnJlKXN3aXRjaChyZVtGZVtaZS0xXVswXV0udCl7Y2FzZSAyOkgubCsyPT09RmVbWmVdWzFdJiYoSC5sKz0yLGFuPSExKTticmVhaztjYXNlIDgwOmNhc2UgNDEwODpILmw8PUZlW1plXVsx''@;'; put 'put ''XSYmKEgubD1GZVtaZV1bMV0sYW49ITEpfWlmKCghcmV8fDA9PVplKSYmSC5sPD1GZVtaZV1bMV0mJihhbj0hMSxILmw9RmVbWmVdWzFdKSxhbil0aHJvdyBuZXcgRXJyb3IoIlJlYWQgRXJyb3I6IEV4cGVjdGVkIGFkZHJlc3MgIitGZVtaZV1bMV0rIiBhdCAiK0gubCsiIDoiK1plKX1pZihy''@;'; put 'put ''ZSl7dmFyIENuPXJlW0ZlW1plXVswXV07aWYoUXRbQ24ubl09Z2QoSCxDbi50LHtyYXc6ITB9KSwidmVyc2lvbiI9PT1Dbi5wJiYoUXRbQ24ubl09U3RyaW5nKFF0W0NuLm5dPj4xNikrIi4iKygiMDAwMCIrU3RyaW5nKDY1NTM1JlF0W0NuLm5dKSkuc2xpY2UoLTQpKSwiQ29kZVBhZ2UiPT1D''@;'; put 'put ''bi5uKXN3aXRjaChRdFtDbi5uXSl7Y2FzZSAwOlF0W0NuLm5dPTEyNTI7Y2FzZSA4NzQ6Y2FzZSA5MzI6Y2FzZSA5MzY6Y2FzZSA5NDk6Y2FzZSA5NTA6Y2FzZSAxMjUwOmNhc2UgMTI1MTpjYXNlIDEyNTM6Y2FzZSAxMjU0OmNhc2UgMTI1NTpjYXNlIDEyNTY6Y2FzZSAxMjU3OmNhc2UgMTI1''@;'; put 'put ''ODpjYXNlIDFlNDpjYXNlIDEyMDA6Y2FzZSAxMjAxOmNhc2UgMTI1MjpjYXNlIDY1ZTM6Y2FzZS01MzY6Y2FzZSA2NTAwMTpjYXNlLTUzNTplZShWZT1RdFtDbi5uXT4+PjAmNjU1MzUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb2RlUGFnZTogIitRdFtD''@;'; put 'put ''bi5uXSl9fWVsc2UgaWYoMT09PUZlW1plXVswXSl7aWYoVmU9UXQuQ29kZVBhZ2U9Z2QoSCwyKSxlZShWZSksLTEhPT1VZSl7dmFyIEx0PUgubDtILmw9RmVbVWVdWzFdLFN0PXBkKEgsVmUpLEgubD1MdH19ZWxzZSBpZigwPT09RmVbWmVdWzBdKXtpZigwPT09VmUpe1VlPVplLEgubD1GZVta''@;'; put 'put ''ZSsxXVsxXTtjb250aW51ZX1TdD1wZChILFZlKX1lbHNle3ZhciBmbix6dD1TdFtGZVtaZV1bMF1dO3N3aXRjaChIW0gubF0pe2Nhc2UgNjU6SC5sKz00LGZuPXAyKEgpO2JyZWFrO2Nhc2UgMzA6Y2FzZSAzMTpILmwrPTQsZm49ejEoSCxIW0gubC00XSkucmVwbGFjZSgvXHUwMDAwKyQvLCIi''@;'; put 'put ''KTticmVhaztjYXNlIDM6SC5sKz00LGZuPUgucmVhZF9zaGlmdCg0LCJpIik7YnJlYWs7Y2FzZSAxOTpILmwrPTQsZm49SC5yZWFkX3NoaWZ0KDQpO2JyZWFrO2Nhc2UgNTpILmwrPTQsZm49SC5yZWFkX3NoaWZ0KDgsImYiKTticmVhaztjYXNlIDExOkgubCs9NCxmbj1KbyhILDQpO2JyZWFr''@;'; put 'put ''O2Nhc2UgNjQ6SC5sKz00LGZuPXBuKE04KEgpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5wYXJzZWQgdmFsdWU6ICIrSFtILmxdKX1RdFt6dF09Zm59fXJldHVybiBILmw9WCt3ZSxRdH12YXIgenA9WyJDb2RlUGFnZSIsIlRodW1ibmFpbCIsIl9QSURfTElOS0JBU0UiLCJf''@;'; put 'put ''UElEX0hMSU5LUyIsIlN5c3RlbUlkZW50aWZpZXIiLCJGTVRJRCJdLmNvbmNhdChbIldvcmtzaGVldHMiLCJTaGVldE5hbWVzIiwiTmFtZWRSYW5nZXMiLCJEZWZpbmVkTmFtZXMiLCJDaGFydHNoZWV0cyIsIkNoYXJ0TmFtZXMiXSk7ZnVuY3Rpb24gZ2IoSCl7c3dpdGNoKHR5cGVvZiBIKXtj''@;'; put 'put ''YXNlImJvb2xlYW4iOnJldHVybiAxMTtjYXNlIm51bWJlciI6cmV0dXJuKDB8SCk9PUg/Mzo1O2Nhc2Uic3RyaW5nIjpyZXR1cm4gMzE7Y2FzZSJvYmplY3QiOmlmKEggaW5zdGFuY2VvZiBEYXRlKXJldHVybiA2NH1yZXR1cm4tMX1mdW5jdGlvbiBiOShILHJlLFgpe3ZhciB3ZT14aSg4KSx4''@;'; put 'put ''ZT1bXSxGZT1bXSxaZT04LFZlPTAsVWU9eGkoOCksU3Q9eGkoOCk7aWYoVWUud3JpdGVfc2hpZnQoNCwyKSxVZS53cml0ZV9zaGlmdCg0LDEyMDApLFN0LndyaXRlX3NoaWZ0KDQsMSksRmUucHVzaChVZSkseGUucHVzaChTdCksWmUrPTgrVWUubGVuZ3RoLCFyZSl7KFN0PXhpKDgpKS53cml0''@;'; put 'put ''ZV9zaGlmdCg0LDApLHhlLnVuc2hpZnQoU3QpO3ZhciBJdD1beGkoNCldO2ZvcihJdFswXS53cml0ZV9zaGlmdCg0LEgubGVuZ3RoKSxWZT0wO1ZlPEgubGVuZ3RoOysrVmUpe3ZhciBQdD1IW1ZlXVswXTtmb3IoKFVlPXhpKDgrMiooUHQubGVuZ3RoKzEpKyhQdC5sZW5ndGglMj8wOjIpKSku''@;'; put 'put ''d3JpdGVfc2hpZnQoNCxWZSsyKSxVZS53cml0ZV9zaGlmdCg0LFB0Lmxlbmd0aCsxKSxVZS53cml0ZV9zaGlmdCgwLFB0LCJkYmNzIik7VWUubCE9VWUubGVuZ3RoOylVZS53cml0ZV9zaGlmdCgxLDApO0l0LnB1c2goVWUpfVVlPVYoSXQpLEZlLnVuc2hpZnQoVWUpLFplKz04K1VlLmxlbmd0''@;'; put 'put ''aH1mb3IoVmU9MDtWZTxILmxlbmd0aDsrK1ZlKWlmKCghcmV8fHJlW0hbVmVdWzBdXSkmJiEoenAuaW5kZXhPZihIW1ZlXVswXSk+LTEpJiZudWxsIT1IW1ZlXVsxXSl7dmFyIFF0PUhbVmVdWzFdLGFuPTA7aWYocmUpe3ZhciBDbj1YW2FuPStyZVtIW1ZlXVswXV1dO2lmKCJ2ZXJzaW9uIj09''@;'; put 'put ''Q24ucCYmInN0cmluZyI9PXR5cGVvZiBRdCl7dmFyIEx0PVF0LnNwbGl0KCIuIik7UXQ9KCtMdFswXTw8MTYpKygrTHRbMV18fDApfVVlPVpwKENuLnQsUXQpfWVsc2V7dmFyIHp0PWdiKFF0KTstMT09enQmJih6dD0zMSxRdD1TdHJpbmcoUXQpKSxVZT1acCh6dCxRdCl9RmUucHVzaChVZSks''@;'; put 'put ''KFN0PXhpKDgpKS53cml0ZV9zaGlmdCg0LHJlP2FuOjIrVmUpLHhlLnB1c2goU3QpLFplKz04K1VlLmxlbmd0aH12YXIgZm49OCooRmUubGVuZ3RoKzEpO2ZvcihWZT0wO1ZlPEZlLmxlbmd0aDsrK1ZlKXhlW1ZlXS53cml0ZV9zaGlmdCg0LGZuKSxmbis9RmVbVmVdLmxlbmd0aDtyZXR1cm4g''@;'; put 'put ''d2Uud3JpdGVfc2hpZnQoNCxaZSksd2Uud3JpdGVfc2hpZnQoNCxGZS5sZW5ndGgpLFYoW3dlXS5jb25jYXQoeGUpLmNvbmNhdChGZSkpfWZ1bmN0aW9uIGpmKEgscmUsWCl7dmFyIHdlPUguY29udGVudDtpZighd2UpcmV0dXJue307S2wod2UsMCk7dmFyIHhlLEZlLFplLFZlLFVlPTA7d2Uu''@;'; put 'put ''Y2hrKCJmZWZmIiwiQnl0ZSBPcmRlcjogIiksd2UucmVhZF9zaGlmdCgyKTt2YXIgU3Q9d2UucmVhZF9zaGlmdCg0KSxJdD13ZS5yZWFkX3NoaWZ0KDE2KTtpZihJdCE9PXB0LnV0aWxzLmNvbnN0cy5IRUFERVJfQ0xTSUQmJkl0IT09WCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBQcm9wZXJ0eVNl''@;'; put 'put ''dCBDTFNJRCAiK0l0KTtpZigxIT09KHhlPXdlLnJlYWRfc2hpZnQoNCkpJiYyIT09eGUpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgI1NldHM6ICIreGUpO2lmKEZlPXdlLnJlYWRfc2hpZnQoMTYpLFZlPXdlLnJlYWRfc2hpZnQoNCksMT09PXhlJiZWZSE9PXdlLmwpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJMZW5ndGggbWlzbWF0Y2g6ICIrVmUrIiAhPT0gIit3ZS5sKTsyPT09eGUmJihaZT13ZS5yZWFkX3NoaWZ0KDE2KSxVZT13ZS5yZWFkX3NoaWZ0KDQpKTt2YXIgQ24sUHQ9TmMod2UscmUpLFF0PXtTeXN0ZW1JZGVudGlmaWVyOlN0fTtmb3IodmFyIGFuIGluIFB0KVF0W2FuXT1Q''@;'; put 'put ''dFthbl07aWYoUXQuRk1USUQ9RmUsMT09PXhlKXJldHVybiBRdDtpZihVZS13ZS5sPT0yJiYod2UubCs9Miksd2UubCE9PVVlKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrd2UubCsiICE9PSAiK1VlKTt0cnl7Q249TmMod2UsbnVsbCl9Y2F0Y2goTHQpe31mb3IoYW4g''@;'; put 'put ''aW4gQ24pUXRbYW5dPUNuW2FuXTtyZXR1cm4gUXQuRk1USUQ9W0ZlLFplXSxRdH1mdW5jdGlvbiBxaShILHJlLFgsd2UseGUsRmUpe3ZhciBaZT14aSh4ZT82ODo0OCksVmU9W1plXTtaZS53cml0ZV9zaGlmdCgyLDY1NTM0KSxaZS53cml0ZV9zaGlmdCgyLDApLFplLndyaXRlX3NoaWZ0KDQs''@;'; put 'put ''ODQyNDEyNTk5KSxaZS53cml0ZV9zaGlmdCgxNixwdC51dGlscy5jb25zdHMuSEVBREVSX0NMU0lELCJoZXgiKSxaZS53cml0ZV9zaGlmdCg0LHhlPzI6MSksWmUud3JpdGVfc2hpZnQoMTYscmUsImhleCIpLFplLndyaXRlX3NoaWZ0KDQseGU/Njg6NDgpO3ZhciBVZT1iOShILFgsd2UpO2lm''@;'; put 'put ''KFZlLnB1c2goVWUpLHhlKXt2YXIgU3Q9YjkoeGUsbnVsbCxudWxsKTtaZS53cml0ZV9zaGlmdCgxNixGZSwiaGV4IiksWmUud3JpdGVfc2hpZnQoNCw2OCtVZS5sZW5ndGgpLFZlLnB1c2goU3QpfXJldHVybiBWKFZlKX1mdW5jdGlvbiBPbChILHJlKXtyZXR1cm4gSC5yZWFkX3NoaWZ0KHJl''@;'; put 'put ''KSxudWxsfWZ1bmN0aW9uIEpvKEgscmUpe3JldHVybiAxPT09SC5yZWFkX3NoaWZ0KHJlKX1mdW5jdGlvbiBHMShILHJlKXtyZXR1cm4gcmV8fChyZT14aSgyKSkscmUud3JpdGVfc2hpZnQoMiwrISFIKSxyZX1mdW5jdGlvbiBlMShIKXtyZXR1cm4gSC5yZWFkX3NoaWZ0KDIsInUiKX1mdW5j''@;'; put 'put ''dGlvbiBjZihILHJlKXtyZXR1cm4gcmV8fChyZT14aSgyKSkscmUud3JpdGVfc2hpZnQoMixIKSxyZX1mdW5jdGlvbiBtMyhILHJlKXtyZXR1cm4gZnVuY3Rpb24gRXMoSCxyZSxYKXtmb3IodmFyIHdlPVtdLHhlPUgubCtyZTtILmw8eGU7KXdlLnB1c2goWChILHhlLUgubCkpO2lmKHhlIT09''@;'; put 'put ''SC5sKXRocm93IG5ldyBFcnJvcigiU2x1cnAgZXJyb3IiKTtyZXR1cm4gd2V9KEgscmUsZTEpfWZ1bmN0aW9uIFcxKEgscmUsWCl7cmV0dXJuIFh8fChYPXhpKDIpKSxYLndyaXRlX3NoaWZ0KDEsImUiPT1yZT8rSDorISFIKSxYLndyaXRlX3NoaWZ0KDEsImUiPT1yZT8xOjApLFh9ZnVuY3Rp''@;'; put 'put ''b24gWmYoSCxyZSxYKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KFgmJlguYmlmZj49MTI/MjoxKSx4ZT0ic2Jjcy1jb250IixGZT1RO1gmJlguYmlmZj49OCYmKFE9MTIwMCksWCYmOCE9WC5iaWZmPzEyPT1YLmJpZmYmJih4ZT0id3N0ciIpOkgucmVhZF9zaGlmdCgxKSYmKHhlPSJkYmNzLWNvbnQi''@;'; put 'put ''KSxYLmJpZmY+PTImJlguYmlmZjw9NSYmKHhlPSJjcHN0ciIpO3ZhciBWZT13ZT9ILnJlYWRfc2hpZnQod2UseGUpOiIiO3JldHVybiBRPUZlLFZlfWZ1bmN0aW9uIHRtKEgpe3ZhciByZT1RO1E9MTIwMDt2YXIgVWUsWD1ILnJlYWRfc2hpZnQoMiksd2U9SC5yZWFkX3NoaWZ0KDEpLHhlPTQm''@;'; put 'put ''d2UsRmU9OCZ3ZSxaZT0xKygxJndlKSxWZT0wLFN0PXt9O0ZlJiYoVmU9SC5yZWFkX3NoaWZ0KDIpKSx4ZSYmKFVlPUgucmVhZF9zaGlmdCg0KSk7dmFyIFB0PTA9PT1YPyIiOkgucmVhZF9zaGlmdChYLDI9PVplPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKTtpZihGZSlmb3IoU3QuX1I9W107''@;'; put 'put ''VmUtLSA+MDspU3QuX1IucHVzaCh7aWR4OkgucmVhZF9zaGlmdCgyKSxpZm50OkgucmVhZF9zaGlmdCgyKX0pO3JldHVybiB4ZSYmKEgubCs9VWUpLFN0LnQ9UHQsRmV8fChTdC5yPSI8dD4iK1N0LnQrIjwvdD4iKSxRPXJlLFN0fWZ1bmN0aW9uIFZjKEgscmUpe3ZhciBYPUguUiYmSC5SLmxl''@;'; put 'put ''bmd0aHx8SC5yO0guciYmKEguUj1OOChILnIpKTt2YXIgd2U9IiIseGU9MDtYP0guUi5mb3JFYWNoKGZ1bmN0aW9uKENuKXt4ZSsrLHdlKz1Dbi52fHwiIn0pOih3ZT1ILnR8fCIiLHhlPTEpO3ZhciBGZT14aSgzKyh4ZT4xPzI6MCkpO0ZlLndyaXRlX3NoaWZ0KDIsd2UubGVuZ3RoKSxGZS53''@;'; put 'put ''cml0ZV9zaGlmdCgxLDF8KHhlPjE/ODowKSkseGU+MSYmRmUud3JpdGVfc2hpZnQoMix4ZSk7dmFyIFplPXhpKDIqd2UubGVuZ3RoKTtaZS53cml0ZV9zaGlmdCgyKndlLmxlbmd0aCx3ZSwidXRmMTZsZSIpO3ZhciBWZT1bRmUsWmVdO2lmKFgpe3ZhciBVZT14aSg0KkguUi5sZW5ndGgpLFN0''@;'; put 'put ''PTA7VmUucHVzaChVZSk7Zm9yKHZhciBJdD0wO0l0PEguUi5sZW5ndGg7KytJdCl7dmFyIFB0PUguUltJdF07VWUud3JpdGVfc2hpZnQoMixTdCksU3QrPShQdC52fHwiIikubGVuZ3RoO3ZhciBRdD1QdC5zP3JjKHJlLmNlbGxYZnMscmUuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpQdC5z''@;'; put 'put ''fSxyZSk6MCxhbj1yZS5jZWxsWGZzW1F0XS5mb250SWQ7VWUud3JpdGVfc2hpZnQoMixhbjw0P2FuOmFuKzEpfX1yZXR1cm4gVihWZSl9ZnVuY3Rpb24gamMoSCxyZSxYKXtpZihYKXtpZihYLmJpZmY+PTImJlguYmlmZjw9NSlyZXR1cm4gSC5yZWFkX3NoaWZ0KHJlLCJjcHN0ciIpO2lmKFgu''@;'; put 'put ''YmlmZj49MTIpcmV0dXJuIEgucmVhZF9zaGlmdChyZSwiZGJjcy1jb250Iil9dmFyIHhlPUgucmVhZF9zaGlmdCgxKTtyZXR1cm4gSC5yZWFkX3NoaWZ0KHJlLDA9PT14ZT8ic2Jjcy1jb250IjoiZGJjcy1jb250Iil9ZnVuY3Rpb24gZmYoSCxyZSxYKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KFgm''@;'; put 'put ''JjI9PVguYmlmZj8xOjIpO3JldHVybiAwPT09d2U/KEgubCsrLCIiKTpqYyhILHdlLFgpfWZ1bmN0aW9uIGs0KEgscmUsWCl7aWYoWC5iaWZmPjUpcmV0dXJuIGZmKEgsMCxYKTt2YXIgd2U9SC5yZWFkX3NoaWZ0KDEpO3JldHVybiAwPT09d2U/KEgubCsrLCIiKTpILnJlYWRfc2hpZnQod2Us''@;'; put 'put ''WC5iaWZmPD00fHwhSC5sZW5zPyJjcHN0ciI6InNiY3MtY29udCIpfWZ1bmN0aW9uIEJyKEgscmUsWCl7cmV0dXJuIFh8fChYPXhpKDMrMipILmxlbmd0aCkpLFgud3JpdGVfc2hpZnQoMixILmxlbmd0aCksWC53cml0ZV9zaGlmdCgxLDEpLFgud3JpdGVfc2hpZnQoMzEsSCwidXRmMTZsZSIp''@;'; put 'put ''LFh9ZnVuY3Rpb24gUzQoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCg0KTtyZXR1cm4gcmU+MD9ILnJlYWRfc2hpZnQocmUsInV0ZjE2bGUiKS5yZXBsYWNlKFQsIiIpOiIifWZ1bmN0aW9uIF85KEgscmUpe3JlfHwocmU9eGkoNisyKkgubGVuZ3RoKSkscmUud3JpdGVfc2hpZnQoNCwxK0gubGVu''@;'; put 'put ''Z3RoKTtmb3IodmFyIFg9MDtYPEgubGVuZ3RoOysrWClyZS53cml0ZV9zaGlmdCgyLEguY2hhckNvZGVBdChYKSk7cmV0dXJuIHJlLndyaXRlX3NoaWZ0KDIsMCkscmV9ZnVuY3Rpb24gbWIoSCl7dmFyIHJlPXhpKDUxMiksWD0wLHdlPUguVGFyZ2V0OyJmaWxlOi8vIj09d2Uuc2xpY2UoMCw3''@;'; put 'put ''KSYmKHdlPXdlLnNsaWNlKDcpKTt2YXIgeGU9d2UuaW5kZXhPZigiIyIpLEZlPXhlPi0xPzMxOjIzO3N3aXRjaCh3ZS5jaGFyQXQoMCkpe2Nhc2UiIyI6RmU9Mjg7YnJlYWs7Y2FzZSIuIjpGZSY9LTN9cmUud3JpdGVfc2hpZnQoNCwyKSxyZS53cml0ZV9zaGlmdCg0LEZlKTt2YXIgWmU9Wzgs''@;'; put 'put ''NjgxNTgyNyw2NjE5MjM3LDQ4NDk3ODAsODNdO2ZvcihYPTA7WDxaZS5sZW5ndGg7KytYKXJlLndyaXRlX3NoaWZ0KDQsWmVbWF0pO2lmKDI4PT1GZSlfOSh3ZT13ZS5zbGljZSgxKSxyZSk7ZWxzZSBpZigyJkZlKXtmb3IoWmU9ImUwIGM5IGVhIDc5IGY5IGJhIGNlIDExIDhjIDgyIDAwIGFh''@;'; put 'put ''IDAwIDRiIGE5IDBiIi5zcGxpdCgiICIpLFg9MDtYPFplLmxlbmd0aDsrK1gpcmUud3JpdGVfc2hpZnQoMSxwYXJzZUludChaZVtYXSwxNikpO3ZhciBWZT14ZT4tMT93ZS5zbGljZSgwLHhlKTp3ZTtmb3IocmUud3JpdGVfc2hpZnQoNCwyKihWZS5sZW5ndGgrMSkpLFg9MDtYPFZlLmxlbmd0''@;'; put 'put ''aDsrK1gpcmUud3JpdGVfc2hpZnQoMixWZS5jaGFyQ29kZUF0KFgpKTtyZS53cml0ZV9zaGlmdCgyLDApLDgmRmUmJl85KHhlPi0xP3dlLnNsaWNlKHhlKzEpOiIiLHJlKX1lbHNle2ZvcihaZT0iMDMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgYzAgMDAgMDAgMDAgMDAgMDAgMDAgNDYiLnNwbGl0''@;'; put 'put ''KCIgIiksWD0wO1g8WmUubGVuZ3RoOysrWClyZS53cml0ZV9zaGlmdCgxLHBhcnNlSW50KFplW1hdLDE2KSk7Zm9yKHZhciBVZT0wOyIuLi8iPT13ZS5zbGljZSgzKlVlLDMqVWUrMyl8fCIuLlxcIj09d2Uuc2xpY2UoMypVZSwzKlVlKzMpOykrK1VlO2ZvcihyZS53cml0ZV9zaGlmdCgyLFVl''@;'; put 'put ''KSxyZS53cml0ZV9zaGlmdCg0LHdlLmxlbmd0aC0zKlVlKzEpLFg9MDtYPHdlLmxlbmd0aC0zKlVlOysrWClyZS53cml0ZV9zaGlmdCgxLDI1NSZ3ZS5jaGFyQ29kZUF0KFgrMypVZSkpO2ZvcihyZS53cml0ZV9zaGlmdCgxLDApLHJlLndyaXRlX3NoaWZ0KDIsNjU1MzUpLHJlLndyaXRlX3No''@;'; put 'put ''aWZ0KDIsNTcwMDUpLFg9MDtYPDY7KytYKXJlLndyaXRlX3NoaWZ0KDQsMCl9cmV0dXJuIHJlLnNsaWNlKDAscmUubCl9ZnVuY3Rpb24gbWQoSCl7cmV0dXJuW0gucmVhZF9zaGlmdCgxKSxILnJlYWRfc2hpZnQoMSksSC5yZWFkX3NoaWZ0KDEpLEgucmVhZF9zaGlmdCgxKV19ZnVuY3Rpb24g''@;'; put 'put ''STgoSCxyZSl7dmFyIFg9bWQoSCk7cmV0dXJuIFhbM109MCxYfWZ1bmN0aW9uIFpjKEgpe3JldHVybntyOkgucmVhZF9zaGlmdCgyKSxjOkgucmVhZF9zaGlmdCgyKSxpeGZlOkgucmVhZF9zaGlmdCgyKX19ZnVuY3Rpb24gemYoSCxyZSxYLHdlKXtyZXR1cm4gd2V8fCh3ZT14aSg2KSksd2Uu''@;'; put 'put ''d3JpdGVfc2hpZnQoMixIKSx3ZS53cml0ZV9zaGlmdCgyLHJlKSx3ZS53cml0ZV9zaGlmdCgyLFh8fDApLHdlfWZ1bmN0aW9uIEM5KEgscmUsWCl7dmFyIHdlPVguYmlmZj44PzQ6MjtyZXR1cm5bSC5yZWFkX3NoaWZ0KHdlKSxILnJlYWRfc2hpZnQod2UsImkiKSxILnJlYWRfc2hpZnQod2Us''@;'; put 'put ''ImkiKV19ZnVuY3Rpb24gaW0oSCl7cmV0dXJuW0gucmVhZF9zaGlmdCgyKSxRZyhIKV19ZnVuY3Rpb24gRTQoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCgyKSxYPUgucmVhZF9zaGlmdCgyKTtyZXR1cm57czp7YzpILnJlYWRfc2hpZnQoMikscjpyZX0sZTp7YzpILnJlYWRfc2hpZnQoMikscjpY''@;'; put 'put ''fX19ZnVuY3Rpb24gaGYoSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoOCkpLHJlLndyaXRlX3NoaWZ0KDIsSC5zLnIpLHJlLndyaXRlX3NoaWZ0KDIsSC5lLnIpLHJlLndyaXRlX3NoaWZ0KDIsSC5zLmMpLHJlLndyaXRlX3NoaWZ0KDIsSC5lLmMpLHJlfWZ1bmN0aW9uIEdwKEgpe3ZhciByZT1I''@;'; put 'put ''LnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6SC5yZWFkX3NoaWZ0KDEpLHI6cmV9LGU6e2M6SC5yZWFkX3NoaWZ0KDEpLHI6WH19fXZhciBLTT1HcDtmdW5jdGlvbiBrOShIKXtILmwrPTQ7dmFyIHJlPUgucmVhZF9zaGlmdCgyKSxYPUgucmVhZF9zaGlmdCgy''@;'; put 'put ''KSx3ZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIEgubCs9MTIsW1gscmUsd2VdfWZ1bmN0aW9uIFJ1KEgpe0gubCs9MixILmwrPUgucmVhZF9zaGlmdCgyKX12YXIgdDI9ezA6UnUsNDpSdSw1OlJ1LDY6UnUsNzpmdW5jdGlvbiBXcChIKXtyZXR1cm4gSC5sKz00LEguY2Y9SC5yZWFkX3NoaWZ0''@;'; put 'put ''KDIpLHt9fSw4OlJ1LDk6UnUsMTA6UnUsMTE6UnUsMTI6UnUsMTM6ZnVuY3Rpb24gUzkoSCl7dmFyIHJlPXt9O3JldHVybiBILmwrPTQsSC5sKz0xNixyZS5mU2hhcmVkTm90ZT1ILnJlYWRfc2hpZnQoMiksSC5sKz00LHJlfSwxNDpSdSwxNTpSdSwxNjpSdSwxNzpSdSwxODpSdSwxOTpSdSwy''@;'; put 'put ''MDpSdSwyMTprOX07ZnVuY3Rpb24gcXUoSCxyZSl7dmFyIFg9e0JJRkZWZXI6MCxkdDowfTtzd2l0Y2goWC5CSUZGVmVyPUgucmVhZF9zaGlmdCgyKSwocmUtPTIpPj0yJiYoWC5kdD1ILnJlYWRfc2hpZnQoMiksSC5sLT0yKSxYLkJJRkZWZXIpe2Nhc2UgMTUzNjpjYXNlIDEyODA6Y2FzZSAx''@;'; put 'put ''MDI0OmNhc2UgNzY4OmNhc2UgNTEyOmNhc2UgMjpjYXNlIDc6YnJlYWs7ZGVmYXVsdDppZihyZT42KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBCSUZGIFZlciAiK1guQklGRlZlcil9cmV0dXJuIEgucmVhZF9zaGlmdChyZSksWH1mdW5jdGlvbiBPOChILHJlLFgpe3ZhciB3ZT0xNTM2''@;'; put 'put ''LHhlPTE2O3N3aXRjaChYLmJvb2tUeXBlKXtjYXNlImJpZmY4IjpjYXNlInhsYSI6YnJlYWs7Y2FzZSJiaWZmNSI6d2U9MTI4MCx4ZT04O2JyZWFrO2Nhc2UiYmlmZjQiOndlPTQseGU9NjticmVhaztjYXNlImJpZmYzIjp3ZT0zLHhlPTY7YnJlYWs7Y2FzZSJiaWZmMiI6d2U9Mix4ZT00O2Jy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBCSUZGIHZlcnNpb24iKX12YXIgRmU9eGkoeGUpO3JldHVybiBGZS53cml0ZV9zaGlmdCgyLHdlKSxGZS53cml0ZV9zaGlmdCgyLHJlKSx4ZT40JiZGZS53cml0ZV9zaGlmdCgyLDI5MjgyKSx4ZT42JiZGZS53cml0ZV9z''@;'; put 'put ''aGlmdCgyLDE5OTcpLHhlPjgmJihGZS53cml0ZV9zaGlmdCgyLDQ5MTYxKSxGZS53cml0ZV9zaGlmdCgyLDEpLEZlLndyaXRlX3NoaWZ0KDIsMTc5OCksRmUud3JpdGVfc2hpZnQoMiwwKSksRmV9ZnVuY3Rpb24gdmQoSCxyZSl7dmFyIFg9IXJlfHxyZS5iaWZmPj04PzI6MSx3ZT14aSg4K1gq''@;'; put 'put ''SC5uYW1lLmxlbmd0aCk7d2Uud3JpdGVfc2hpZnQoNCxILnBvcyksd2Uud3JpdGVfc2hpZnQoMSxILmhzfHwwKSx3ZS53cml0ZV9zaGlmdCgxLEguZHQpLHdlLndyaXRlX3NoaWZ0KDEsSC5uYW1lLmxlbmd0aCkscmUuYmlmZj49OCYmd2Uud3JpdGVfc2hpZnQoMSwxKSx3ZS53cml0ZV9zaGlm''@;'; put 'put ''dChYKkgubmFtZS5sZW5ndGgsSC5uYW1lLHJlLmJpZmY8OD8ic2JjcyI6InV0ZjE2bGUiKTt2YXIgeGU9d2Uuc2xpY2UoMCx3ZS5sKTtyZXR1cm4geGUubD13ZS5sLHhlfWZ1bmN0aW9uIFFpKEgpe3JldHVybiBILnJlYWRfc2hpZnQoNCksYmgoSCl9ZnVuY3Rpb24gaWwoSCl7cmV0dXJuIEgu''@;'; put 'put ''cmVhZF9zaGlmdCg0KSxqTShIKX1mdW5jdGlvbiBlYyhILHJlLFgpe3JldHVybiBILnJlYWRfc2hpZnQoNCkscUIoSCwwLFgpfWZ1bmN0aW9uIEJzKEgscmUsWCl7dmFyIHdlPTA7WCYmMj09WC5iaWZmfHwod2U9SC5yZWFkX3NoaWZ0KDIpKTt2YXIgeGU9SC5yZWFkX3NoaWZ0KDIpO3JldHVy''@;'; put 'put ''biBYJiYyPT1YLmJpZmYmJih3ZT0xLSh4ZT4+MTUpLHhlJj0zMjc2NyksW3tVbnN5bmNlZDoxJndlLER5WmVybzooMiZ3ZSk+PjEsRXhBc2M6KDQmd2UpPj4yLEV4RHNjOig4JndlKT4+M30seGVdfWZ1bmN0aW9uIEJSKEgscmUsWCx3ZSl7dmFyIHhlPVgmJjU9PVguYmlmZjt3ZXx8KHdlPXhp''@;'; put 'put ''KHhlPzMrcmUubGVuZ3RoOjUrMipyZS5sZW5ndGgpKSx3ZS53cml0ZV9zaGlmdCgyLEgpLHdlLndyaXRlX3NoaWZ0KHhlPzE6MixyZS5sZW5ndGgpLHhlfHx3ZS53cml0ZV9zaGlmdCgxLDEpLHdlLndyaXRlX3NoaWZ0KCh4ZT8xOjIpKnJlLmxlbmd0aCxyZSx4ZT8ic2JjcyI6InV0ZjE2bGUi''@;'; put 'put ''KTt2YXIgRmU9d2UubGVuZ3RoPndlLmw/d2Uuc2xpY2UoMCx3ZS5sKTp3ZTtyZXR1cm4gbnVsbD09RmUubCYmKEZlLmw9RmUubGVuZ3RoKSxGZX12YXIgdmI9azQ7ZnVuY3Rpb24gd2MoSCxyZSxYKXt2YXIgd2U9SC5sK3JlLHhlPTghPVguYmlmZiYmWC5iaWZmPzI6NCxGZT1ILnJlYWRfc2hp''@;'; put 'put ''ZnQoeGUpLFplPUgucmVhZF9zaGlmdCh4ZSksVmU9SC5yZWFkX3NoaWZ0KDIpLFVlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gSC5sPXdlLHtzOntyOkZlLGM6VmV9LGU6e3I6WmUsYzpVZX19fWZ1bmN0aW9uIENoKEgscmUsWCx3ZSl7dmFyIEZlPSFYfHwhWC5iaWZmfHw4PT1YLmJpZmY7d2V8''@;'; put 'put ''fCh3ZT14aShYJiY1PT1YLmJpZmY/MTY6MjApKSx3ZS53cml0ZV9zaGlmdCgyLEZlJiZYLmNlbGxTdHlsZXMmJkguZm9udElkJiYoSC5mb250SWQ8ND9ILmZvbnRJZDpILmZvbnRJZCsxKXx8MCk7dmFyIFplPTE7SC5wcm90ZWN0aW9uJiYoSC5wcm90ZWN0aW9uLmVkaXRhYmxlJiYoWmUmPS0y''@;'; put 'put ''KSxILnByb3RlY3Rpb24uaGlkZGVuJiYoWmV8PTIpKSxILnN0eWxlPyh3ZS53cml0ZV9zaGlmdCgyLEgubnVtRm10SWR8fDApLHdlLndyaXRlX3NoaWZ0KDIsNjU1MjR8WmUpKTood2Uud3JpdGVfc2hpZnQoMixILm51bUZtdElkfHwwKSx3ZS53cml0ZV9zaGlmdCgyLHJlPDw0fFplKSk7dmFy''@;'; put 'put ''IFZlPUguYWxpZ25tZW50fHx7fTtpZihGZSl7dmFyIFVlPTAsU3Q9MDt3bS5pbmRleE9mKFZlLmhvcml6b250YWwpPi0xJiYoVWV8PXdtLmluZGV4T2YoVmUuaG9yaXpvbnRhbCkpLFZlLndyYXBUZXh0JiYoVWV8PTgpLFc4LmluZGV4T2YoVmUudmVydGljYWwpPi0xP1VlfD1XOC5pbmRleE9m''@;'; put 'put ''KFZlLnZlcnRpY2FsKTw8NDpudWxsPT1WZS52ZXJ0aWNhbCYmKFVlfD0zMiksd2Uud3JpdGVfc2hpZnQoMSxVZSksd2Uud3JpdGVfc2hpZnQoMSwwKSxWZS5zaHJpbmtUb0ZpdCYmKFN0fD0xNiksd2Uud3JpdGVfc2hpZnQoMixTdCk7dmFyIEl0PW51bGw7bnVsbCE9SC5ib3JkZXJJZCYmKEl0''@;'; put 'put ''PVguQm9yZGVycyYmWC5Cb3JkZXJzW0guYm9yZGVySWR8fDBdfHx7fSk7dmFyIFB0PTAsUXQ9MCxhbj0wO0l0JiYobnVsbCE9SXQubGVmdCYmSXQubGVmdC5zdHlsZSYmKFB0fD0oYW49azMuaW5kZXhPZihJdC5sZWZ0LnN0eWxlKSk+LTE/YW46MCksbnVsbCE9SXQucmlnaHQmJkl0LnJpZ2h0''@;'; put 'put ''LnN0eWxlJiYoUHR8PSgoYW49azMuaW5kZXhPZihJdC5yaWdodC5zdHlsZSkpPi0xP2FuOjApPDw0KSxudWxsIT1JdC50b3AmJkl0LnRvcC5zdHlsZSYmKFF0fD0oYW49azMuaW5kZXhPZihJdC50b3Auc3R5bGUpKT4tMT9hbjowKSxudWxsIT1JdC5ib3R0b20mJkl0LmJvdHRvbS5zdHlsZSYm''@;'; put 'put ''KFF0fD0oKGFuPWszLmluZGV4T2YoSXQuYm90dG9tLnN0eWxlKSk+LTE/YW46MCk8PDQpKSx3ZS53cml0ZV9zaGlmdCgxLFB0KSx3ZS53cml0ZV9zaGlmdCgxLFF0KSx3ZS53cml0ZV9zaGlmdCgyLDApLHdlLndyaXRlX3NoaWZ0KDIsMCksd2Uud3JpdGVfc2hpZnQoMSwwKTt2YXIgQ249MCxM''@;'; put 'put ''dD1YLkZpbGxzJiZYLkZpbGxzW0guZmlsbElkfHwwXXx8e307KEx0LmZnQ29sb3J8fEx0LmJnQ29sb3IpJiYoQ258PTQpLHdlLndyaXRlX3NoaWZ0KDEsQ24pO3ZhciB6dD0wO3p0fD0kYihMdC5mZ0NvbG9yLDY1KSx6dHw9JGIoTHQuYmdDb2xvciw2NSk8PDcsd2Uud3JpdGVfc2hpZnQoMix6''@;'; put 'put ''dCl9ZWxzZSB3ZS53cml0ZV9zaGlmdCg0LDApLHdlLndyaXRlX3NoaWZ0KDQsMCksd2Uud3JpdGVfc2hpZnQoMiwwKTtyZXR1cm4gd2V9ZnVuY3Rpb24gRTkoSCxyZSxYKXt2YXIgd2U9WmMoSCk7KDI9PVguYmlmZnx8OT09cmUpJiYrK0gubDt2YXIgeGU9ZnVuY3Rpb24gJGwoSCl7dmFyIHJl''@;'; put 'put ''PUgucmVhZF9zaGlmdCgxKTtyZXR1cm4gMT09PUgucmVhZF9zaGlmdCgxKT9yZToxPT09cmV9KEgpO3JldHVybiB3ZS52YWw9eGUsd2UudD0hMD09PXhlfHwhMT09PXhlPyJiIjoiZSIsd2V9dmFyIGU2PWZ1bmN0aW9uIE00KEgscmUsWCl7cmV0dXJuIDA9PT1yZT8iIjprNChILDAsWCl9O2Z1''@;'; put 'put ''bmN0aW9uIHJFKEgscmUsWCl7dmFyIHhlLHdlPUgucmVhZF9zaGlmdCgyKSxGZT17ZkJ1aWx0SW46MSZ3ZSxmV2FudEFkdmlzZTp3ZT4+PjEmMSxmV2FudFBpY3Q6d2U+Pj4yJjEsZk9sZTp3ZT4+PjMmMSxmT2xlTGluazp3ZT4+PjQmMSxjZjp3ZT4+PjUmMTAyMyxmSWNvbjp3ZT4+PjE1JjF9''@;'; put 'put ''O3JldHVybiAxNDg0OT09PVguc2JjY2gmJih4ZT1mdW5jdGlvbiBMOChILHJlLFgpe0gubCs9NDt2YXIgd2U9SC5sKyhyZS09NCkseGU9WmYoSCwwLFgpLEZlPUgucmVhZF9zaGlmdCgyKTtpZihGZSE9PSh3ZS09SC5sKSl0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBBZGRpblVkZjogcGFk''@;'; put 'put ''ZGluZyA9ICIrd2UrIiAhPSAiK0ZlKTtyZXR1cm4gSC5sKz1GZSx4ZX0oSCxyZS0yLFgpKSxGZS5ib2R5PXhlfHxILnJlYWRfc2hpZnQocmUtMiksInN0cmluZyI9PXR5cGVvZiB4ZSYmKEZlLk5hbWU9eGUpLEZlfXZhciBpRT1bIl94bG5tLkNvbnNvbGlkYXRlX0FyZWEiLCJfeGxubS5BdXRv''@;'; put 'put ''X09wZW4iLCJfeGxubS5BdXRvX0Nsb3NlIiwiX3hsbm0uRXh0cmFjdCIsIl94bG5tLkRhdGFiYXNlIiwiX3hsbm0uQ3JpdGVyaWEiLCJfeGxubS5QcmludF9BcmVhIiwiX3hsbm0uUHJpbnRfVGl0bGVzIiwiX3hsbm0uUmVjb3JkZXIiLCJfeGxubS5EYXRhX0Zvcm0iLCJfeGxubS5BdXRvX0Fj''@;'; put 'put ''dGl2YXRlIiwiX3hsbm0uQXV0b19EZWFjdGl2YXRlIiwiX3hsbm0uU2hlZXRfVGl0bGUiLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiXTtmdW5jdGlvbiBvRShILHJlLFgpe3ZhciB3ZT1ILmwrcmUseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgxKSxaZT1ILnJlYWRfc2hpZnQo''@;'; put 'put ''MSksVmU9SC5yZWFkX3NoaWZ0KFgmJjI9PVguYmlmZj8xOjIpLFVlPTA7KCFYfHxYLmJpZmY+PTUpJiYoNSE9WC5iaWZmJiYoSC5sKz0yKSxVZT1ILnJlYWRfc2hpZnQoMiksNT09WC5iaWZmJiYoSC5sKz0yKSxILmwrPTQpO3ZhciBTdD1qYyhILFplLFgpOzMyJnhlJiYoU3Q9aUVbU3QuY2hh''@;'; put 'put ''ckNvZGVBdCgwKV0pO3ZhciBJdD13ZS1ILmw7WCYmMj09WC5iaWZmJiYtLUl0O3ZhciBQdD13ZSE9SC5sJiYwIT09VmUmJkl0PjA/ZnVuY3Rpb24gSjgoSCxyZSxYLHdlKXt2YXIgWmUseGU9SC5sK3JlLEZlPUZtKEgsd2UsWCk7cmV0dXJuIHhlIT09SC5sJiYoWmU9U2QoSCx4ZS1ILmwsRmUs''@;'; put 'put ''WCkpLFtGZSxaZV19KEgsSXQsWCxWZSk6W107cmV0dXJue2NoS2V5OkZlLE5hbWU6U3QsaXRhYjpVZSxyZ2NlOlB0fX1mdW5jdGlvbiBiYihILHJlLFgpe2lmKFguYmlmZjw4KXJldHVybiBmdW5jdGlvbiB1bShILHJlLFgpezM9PUhbSC5sKzFdJiZIW0gubF0rKzt2YXIgd2U9WmYoSCwwLFgp''@;'; put 'put ''O3JldHVybiAzPT13ZS5jaGFyQ29kZUF0KDApP3dlLnNsaWNlKDEpOndlfShILDAsWCk7Zm9yKHZhciB3ZT1bXSx4ZT1ILmwrcmUsRmU9SC5yZWFkX3NoaWZ0KFguYmlmZj44PzQ6Mik7MCE9RmUtLTspd2UucHVzaChDOShILDAsWCkpO2lmKEgubCE9eGUpdGhyb3cgbmV3IEVycm9yKCJCYWQg''@;'; put 'put ''RXh0ZXJuU2hlZXQ6ICIrSC5sKyIgIT0gIit4ZSk7cmV0dXJuIHdlfWZ1bmN0aW9uIEVpKEgscmUsWCl7dmFyIHdlPUtNKEgsNik7c3dpdGNoKFguYmlmZil7Y2FzZSAyOkgubCsrLHJlLT03O2JyZWFrO2Nhc2UgMzpjYXNlIDQ6SC5sKz0yLHJlLT04O2JyZWFrO2RlZmF1bHQ6SC5sKz02LHJl''@;'; put 'put ''LT0xMn1yZXR1cm5bd2UsUkcoSCxyZSxYKV19dmFyIGFFPVtdO2Z1bmN0aW9uIHlkKEgpe3ZhciByZT14aSgyNCksWD1wbyhIWzBdKTtyZS53cml0ZV9zaGlmdCgyLFgucikscmUud3JpdGVfc2hpZnQoMixYLnIpLHJlLndyaXRlX3NoaWZ0KDIsWC5jKSxyZS53cml0ZV9zaGlmdCgyLFguYyk7''@;'; put 'put ''Zm9yKHZhciB3ZT0iZDAgYzkgZWEgNzkgZjkgYmEgY2UgMTEgOGMgODIgMDAgYWEgMDAgNGIgYTkgMGIiLnNwbGl0KCIgIikseGU9MDt4ZTwxNjsrK3hlKXJlLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQod2VbeGVdLDE2KSk7cmV0dXJuIFYoW3JlLG1iKEhbMV0pXSl9ZnVuY3Rpb24gc0UoSCl7''@;'; put 'put ''dmFyIHJlPUhbMV0uVG9vbHRpcCxYPXhpKDEwKzIqKHJlLmxlbmd0aCsxKSk7WC53cml0ZV9zaGlmdCgyLDIwNDgpO3ZhciB3ZT1wbyhIWzBdKTtYLndyaXRlX3NoaWZ0KDIsd2UuciksWC53cml0ZV9zaGlmdCgyLHdlLnIpLFgud3JpdGVfc2hpZnQoMix3ZS5jKSxYLndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''d2UuYyk7Zm9yKHZhciB4ZT0wO3hlPHJlLmxlbmd0aDsrK3hlKVgud3JpdGVfc2hpZnQoMixyZS5jaGFyQ29kZUF0KHhlKSk7cmV0dXJuIFgud3JpdGVfc2hpZnQoMiwwKSxYfWZ1bmN0aW9uIHpjKEgscmUsWCl7aWYoIVguY2VsbFN0eWxlcylyZXR1cm4gTDIoSCxyZSk7dmFyIHdlPVgmJlgu''@;'; put 'put ''YmlmZj49MTI/NDoyLHhlPUgucmVhZF9zaGlmdCh3ZSksRmU9SC5yZWFkX3NoaWZ0KHdlKSxaZT1ILnJlYWRfc2hpZnQod2UpLFZlPUgucmVhZF9zaGlmdCh3ZSksVWU9SC5yZWFkX3NoaWZ0KDIpOzI9PXdlJiYoSC5sKz0yKTt2YXIgU3Q9e3M6eGUsZTpGZSx3OlplLGl4ZmU6VmUsZmxhZ3M6''@;'; put 'put ''VWV9O3JldHVybihYLmJpZmY+PTV8fCFYLmJpZmYpJiYoU3QubGV2ZWw9VWU+PjgmNyksU3R9YUVbOF09ZnVuY3Rpb24oSCxyZSl7dmFyIFg9SC5sK3JlO0gubCs9MTA7dmFyIHdlPUgucmVhZF9zaGlmdCgyKTtILmwrPTQsSC5sKz0yLEgubCs9MixILmwrPTIsSC5sKz00O3ZhciB4ZT1ILnJl''@;'; put 'put ''YWRfc2hpZnQoMSk7cmV0dXJuIEgubCs9eGUsSC5sPVgse2ZtdDp3ZX19O3ZhciBaUj1aYyxJOT1tMyxrYj1mZjt2YXIgd2Q9ZnVuY3Rpb24oKXt2YXIgSD17MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEw''@;'; put 'put ''Njo3MzcsMTA3Ojg1NywxMjA6OTUwLDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyNyw4Ojg2NSw5OjQzNywxMDo4NTAs''@;'; put 'put ''MTE6NDM3LDEzOjQzNywxNDo4NTAsMTU6NDM3LDE2Ojg1MCwxNzo0MzcsMTg6ODUwLDE5OjkzMiwyMDo4NTAsMjE6NDM3LDIyOjg1MCwyMzo4NjUsMjQ6NDM3LDI1OjQzNywyNjo4NTAsMjc6NDM3LDI4Ojg2MywyOTo4NTAsMzE6ODUyLDM0Ojg1MiwzNTo4NTIsMzY6ODYwLDM3Ojg1MCwzODo4''@;'; put 'put ''NjYsNTU6ODUwLDY0Ojg1Miw3Nzo5MzYsNzg6OTQ5LDc5Ojk1MCw4MDo4NzQsODc6MTI1Miw4ODoxMjUyLDg5OjEyNTIsMTA4Ojg2MywxMzQ6NzM3LDEzNTo4NTIsMTM2Ojg1NywyMDQ6MTI1NywyNTU6MTY5Njl9LHJlPW50KHsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6''@;'; put 'put ''ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEyMDo5NTAsMTIxOjk0OSwxMjI6OTM2LDEyMzo5MzIsMTI0Ojg3NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1''@;'; put 'put ''NCwyMDM6MTI1MywwOjIwMTI3fSk7ZnVuY3Rpb24geGUoVWUsU3Qpe3ZhciBJdD1TdHx8e307cmV0dXJuIEl0LmRhdGVORnx8KEl0LmRhdGVORj0ieXl5eW1tZGQiKSxsZihmdW5jdGlvbiB3ZShVZSxTdCl7dmFyIEl0PVtdLFB0PWhlKDEpO3N3aXRjaChTdC50eXBlKXtjYXNlImJhc2U2NCI6''@;'; put 'put ''UHQ9eihTZS5kZWNvZGUoVWUpKTticmVhaztjYXNlImJpbmFyeSI6UHQ9eihVZSk7YnJlYWs7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOlB0PVVlfUtsKFB0LDApO3ZhciBRdD1QdC5yZWFkX3NoaWZ0KDEpLGFuPSEhKDEzNiZRdCksQ249ITEsTHQ9ITE7c3dpdGNoKFF0KXtjYXNlIDI6Y2Fz''@;'; put 'put ''ZSAzOmNhc2UgMTMxOmNhc2UgMTM5OmNhc2UgMjQ1OmJyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpDbj0hMCxhbj0hMDticmVhaztjYXNlIDE0MDpMdD0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVuc3VwcG9ydGVkIFZlcnNpb246ICIrUXQudG9TdHJpbmcoMTYpKX12YXIg''@;'; put 'put ''enQ9MCxmbj01MjE7Mj09UXQmJih6dD1QdC5yZWFkX3NoaWZ0KDIpKSxQdC5sKz0zLDIhPVF0JiYoenQ9UHQucmVhZF9zaGlmdCg0KSksenQ+MTA0ODU3NiYmKHp0PTFlNiksMiE9UXQmJihmbj1QdC5yZWFkX3NoaWZ0KDIpKTt2YXIgSW49UHQucmVhZF9zaGlmdCgyKSxSbj1TdC5jb2RlcGFn''@;'; put 'put ''ZXx8MTI1MjsyIT1RdCYmKFB0LmwrPTE2LFB0LnJlYWRfc2hpZnQoMSksMCE9PVB0W1B0LmxdJiYoUm49SFtQdFtQdC5sXV0pLFB0LmwrPTEsUHQubCs9MiksTHQmJihQdC5sKz0zNik7Zm9yKHZhciBWbj1bXSxJcj17fSxpaT1NYXRoLm1pbihQdC5sZW5ndGgsMj09UXQ/NTIxOmZuLTEwLShD''@;'; put 'put ''bj8yNjQ6MCkpLHlyPUx0PzMyOjExO1B0Lmw8aWkmJjEzIT1QdFtQdC5sXTspc3dpdGNoKElyPXt9LElyLm5hbWU9Y3B0YWJsZS51dGlscy5kZWNvZGUoUm4sUHQuc2xpY2UoUHQubCxQdC5sK3lyKSkucmVwbGFjZSgvW1x1MDAwMFxyXG5dLiokL2csIiIpLFB0LmwrPXlyLElyLnR5cGU9U3Ry''@;'; put 'put ''aW5nLmZyb21DaGFyQ29kZShQdC5yZWFkX3NoaWZ0KDEpKSwyIT1RdCYmIUx0JiYoSXIub2Zmc2V0PVB0LnJlYWRfc2hpZnQoNCkpLElyLmxlbj1QdC5yZWFkX3NoaWZ0KDEpLDI9PVF0JiYoSXIub2Zmc2V0PVB0LnJlYWRfc2hpZnQoMikpLElyLmRlYz1QdC5yZWFkX3NoaWZ0KDEpLElyLm5h''@;'; put 'put ''bWUubGVuZ3RoJiZWbi5wdXNoKElyKSwyIT1RdCYmKFB0LmwrPUx0PzEzOjE0KSxJci50eXBlKXtjYXNlIkIiOighQ258fDghPUlyLmxlbikmJlN0LldURiYmY29uc29sZS5sb2coIlNraXBwaW5nICIrSXIubmFtZSsiOiIrSXIudHlwZSk7YnJlYWs7Y2FzZSJHIjpjYXNlIlAiOlN0LldURiYm''@;'; put 'put ''Y29uc29sZS5sb2coIlNraXBwaW5nICIrSXIubmFtZSsiOiIrSXIudHlwZSk7YnJlYWs7Y2FzZSIrIjpjYXNlIjAiOmNhc2UiQCI6Y2FzZSJDIjpjYXNlIkQiOmNhc2UiRiI6Y2FzZSJJIjpjYXNlIkwiOmNhc2UiTSI6Y2FzZSJOIjpjYXNlIk8iOmNhc2UiVCI6Y2FzZSJZIjpicmVhaztkZWZh''@;'; put 'put ''dWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBGaWVsZCBUeXBlOiAiK0lyLnR5cGUpfWlmKDEzIT09UHRbUHQubF0mJihQdC5sPWZuLTEpLDEzIT09UHQucmVhZF9zaGlmdCgxKSl0aHJvdyBuZXcgRXJyb3IoIkRCRiBUZXJtaW5hdG9yIG5vdCBmb3VuZCAiK1B0LmwrIiAiK1B0W1B0Lmxd''@;'; put 'put ''KTtQdC5sPWZuO3ZhciBvaT0wLE1yPTA7Zm9yKEl0WzBdPVtdLE1yPTA7TXIhPVZuLmxlbmd0aDsrK01yKUl0WzBdW01yXT1WbltNcl0ubmFtZTtmb3IoO3p0LS0gPjA7KWlmKDQyIT09UHRbUHQubF0pZm9yKCsrUHQubCxJdFsrK29pXT1bXSxNcj0wLE1yPTA7TXIhPVZuLmxlbmd0aDsrK01y''@;'; put 'put ''KXt2YXIgV3I9UHQuc2xpY2UoUHQubCxQdC5sK1ZuW01yXS5sZW4pO1B0LmwrPVZuW01yXS5sZW4sS2woV3IsMCk7dmFyIGFpPWNwdGFibGUudXRpbHMuZGVjb2RlKFJuLFdyKTtzd2l0Y2goVm5bTXJdLnR5cGUpe2Nhc2UiQyI6YWkudHJpbSgpLmxlbmd0aCYmKEl0W29pXVtNcl09YWkucmVw''@;'; put 'put ''bGFjZSgvXHMrJC8sIiIpKTticmVhaztjYXNlIkQiOkl0W29pXVtNcl09OD09PWFpLmxlbmd0aD9uZXcgRGF0ZSgrYWkuc2xpY2UoMCw0KSwrYWkuc2xpY2UoNCw2KS0xLCthaS5zbGljZSg2LDgpKTphaTticmVhaztjYXNlIkYiOkl0W29pXVtNcl09cGFyc2VGbG9hdChhaS50cmltKCkpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiKyI6Y2FzZSJJIjpJdFtvaV1bTXJdPUx0PzIxNDc0ODM2NDheV3IucmVhZF9zaGlmdCgtNCwiaSIpOldyLnJlYWRfc2hpZnQoNCwiaSIpO2JyZWFrO2Nhc2UiTCI6c3dpdGNoKGFpLnRyaW0oKS50b1VwcGVyQ2FzZSgpKXtjYXNlIlkiOmNhc2UiVCI6SXRbb2ldW01yXT0hMDti''@;'; put 'put ''cmVhaztjYXNlIk4iOmNhc2UiRiI6SXRbb2ldW01yXT0hMTticmVhaztjYXNlIiI6Y2FzZSI/IjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVucmVjb2duaXplZCBMOnwiK2FpKyJ8Iil9YnJlYWs7Y2FzZSJNIjppZighYW4pdGhyb3cgbmV3IEVycm9yKCJEQkYgVW5leHBl''@;'; put 'put ''Y3RlZCBNRU1PIGZvciB0eXBlICIrUXQudG9TdHJpbmcoMTYpKTtJdFtvaV1bTXJdPSIjI01FTU8jIyIrKEx0P3BhcnNlSW50KGFpLnRyaW0oKSwxMCk6V3IucmVhZF9zaGlmdCg0KSk7YnJlYWs7Y2FzZSJOIjooYWk9YWkucmVwbGFjZSgvXHUwMDAwL2csIiIpLnRyaW0oKSkmJiIuIiE9YWkm''@;'; put 'put ''JihJdFtvaV1bTXJdPSthaXx8MCk7YnJlYWs7Y2FzZSJAIjpJdFtvaV1bTXJdPW5ldyBEYXRlKFdyLnJlYWRfc2hpZnQoLTgsImYiKS02MjEzNTY4MzJlNSk7YnJlYWs7Y2FzZSJUIjpJdFtvaV1bTXJdPW5ldyBEYXRlKDg2NGU1KihXci5yZWFkX3NoaWZ0KDQpLTI0NDA1ODgpK1dyLnJlYWRf''@;'; put 'put ''c2hpZnQoNCkpO2JyZWFrO2Nhc2UiWSI6SXRbb2ldW01yXT1Xci5yZWFkX3NoaWZ0KDQsImkiKS8xZTQ7YnJlYWs7Y2FzZSJPIjpJdFtvaV1bTXJdPS1Xci5yZWFkX3NoaWZ0KC04LCJmIik7YnJlYWs7Y2FzZSJCIjppZihDbiYmOD09Vm5bTXJdLmxlbil7SXRbb2ldW01yXT1Xci5yZWFkX3No''@;'; put 'put ''aWZ0KDgsImYiKTticmVha31jYXNlIkciOmNhc2UiUCI6V3IubCs9Vm5bTXJdLmxlbjticmVhaztjYXNlIjAiOmlmKCJfTnVsbEZsYWdzIj09PVZuW01yXS5uYW1lKWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgZGF0YSB0eXBlICIrVm5bTXJdLnR5cGUp''@;'; put 'put ''fX1lbHNlIFB0LmwrPUluO2lmKDIhPVF0JiZQdC5sPFB0Lmxlbmd0aCYmMjYhPVB0W1B0LmwrK10pdGhyb3cgbmV3IEVycm9yKCJEQkYgRU9GIE1hcmtlciBtaXNzaW5nICIrKFB0LmwtMSkrIiBvZiAiK1B0Lmxlbmd0aCsiICIrUHRbUHQubC0xXS50b1N0cmluZygxNikpO3JldHVybiBTdCYm''@;'; put 'put ''U3Quc2hlZXRSb3dzJiYoSXQ9SXQuc2xpY2UoMCxTdC5zaGVldFJvd3MpKSxJdH0oVWUsSXQpLEl0KX12YXIgWmU9e0I6OCxDOjI1MCxMOjEsRDo4LCI/IjowLCIiOjB9O3JldHVybnt2ZXJzaW9uczpbMiwzLDQ4LDQ5LDEzMSwxMzksMTQwLDI0NV0sdG9fd29ya2Jvb2s6ZnVuY3Rpb24gRmUo''@;'; put 'put ''VWUsU3Qpe3RyeXtyZXR1cm4gbWMoeGUoVWUsU3QpLFN0KX1jYXRjaChJdCl7aWYoU3QmJlN0LldURil0aHJvdyBJdH1yZXR1cm57U2hlZXROYW1lczpbXSxTaGVldHM6e319fSx0b19zaGVldDp4ZSxmcm9tX3NoZWV0OmZ1bmN0aW9uIFZlKFVlLFN0KXt2YXIgSXQ9U3R8fHt9O2lmKCtJdC5j''@;'; put 'put ''b2RlcGFnZT49MCYmZWUoK0l0LmNvZGVwYWdlKSwic3RyaW5nIj09SXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBEQkYgdG8gSlMgc3RyaW5nIik7dmFyIFB0PXYxKCksUXQ9aEMoVWUse2hlYWRlcjoxLHJhdzohMCxjZWxsRGF0ZXM6ITB9KSxhbj1RdFswXSxDbj1RdC5z''@;'; put 'put ''bGljZSgxKSxMdD0wLHp0PTAsZm49MCxJbj0xO2ZvcihMdD0wO0x0PGFuLmxlbmd0aDsrK0x0KWlmKG51bGwhPUx0KXtpZigrK2ZuLCJudW1iZXIiPT10eXBlb2YgYW5bTHRdJiYoYW5bTHRdPWFuW0x0XS50b1N0cmluZygxMCkpLCJzdHJpbmciIT10eXBlb2YgYW5bTHRdKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiREJGIEludmFsaWQgY29sdW1uIG5hbWUgIithbltMdF0rIiB8Iit0eXBlb2YgYW5bTHRdKyJ8Iik7aWYoYW4uaW5kZXhPZihhbltMdF0pIT09THQpZm9yKHp0PTA7enQ8MTAyNDsrK3p0KWlmKC0xPT1hbi5pbmRleE9mKGFuW0x0XSsiXyIrenQpKXthbltMdF0rPSJfIit6dDticmVh''@;'; put 'put ''a319dmFyIFJuPWVhKFVlWyIhcmVmIl0pLFZuPVtdO2ZvcihMdD0wO0x0PD1Sbi5lLmMtUm4ucy5jOysrTHQpe3ZhciBJcj1bXTtmb3IoenQ9MDt6dDxDbi5sZW5ndGg7Kyt6dCludWxsIT1Dblt6dF1bTHRdJiZJci5wdXNoKENuW3p0XVtMdF0pO2lmKDAhPUlyLmxlbmd0aCYmbnVsbCE9YW5b''@;'; put 'put ''THRdKXt2YXIgaWk9IiIseXI9IiI7Zm9yKHp0PTA7enQ8SXIubGVuZ3RoOysrenQpe3N3aXRjaCh0eXBlb2YgSXJbenRdKXtjYXNlIm51bWJlciI6eXI9IkIiO2JyZWFrO2Nhc2Uic3RyaW5nIjpkZWZhdWx0OnlyPSJDIjticmVhaztjYXNlImJvb2xlYW4iOnlyPSJMIjticmVhaztjYXNlIm9i''@;'; put 'put ''amVjdCI6eXI9SXJbenRdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyJ9aWYoIkMiPT0oaWk9aWkmJmlpIT15cj8iQyI6eXIpKWJyZWFrfUluKz1aZVtpaV18fDAsVm5bTHRdPWlpfWVsc2UgVm5bTHRdPSI/In12YXIgb2k9UHQubmV4dCgzMik7Zm9yKG9pLndyaXRlX3NoaWZ0KDQsMzE4OTAyNTc2''@;'; put 'put ''KSxvaS53cml0ZV9zaGlmdCg0LENuLmxlbmd0aCksb2kud3JpdGVfc2hpZnQoMiwyOTYrMzIqZm4pLG9pLndyaXRlX3NoaWZ0KDIsSW4pLEx0PTA7THQ8NDsrK0x0KW9pLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKG9pLndyaXRlX3NoaWZ0KDQsMHwoK3JlW1pdfHwzKTw8OCksTHQ9MCx6dD0wO0x0''@;'; put 'put ''PGFuLmxlbmd0aDsrK0x0KWlmKG51bGwhPWFuW0x0XSl7dmFyIE1yPVB0Lm5leHQoMzIpLFdyPShhbltMdF0uc2xpY2UoLTEwKSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIpLnNsaWNlKDAsMTEpO01yLndyaXRlX3NoaWZ0KDEsV3IsInNiY3MiKSxNci53cml0ZV9zaGlmdCgxLCI/Ij09Vm5b''@;'; put 'put ''THRdPyJDIjpWbltMdF0sInNiY3MiKSxNci53cml0ZV9zaGlmdCg0LHp0KSxNci53cml0ZV9zaGlmdCgxLFplW1ZuW0x0XV18fDApLE1yLndyaXRlX3NoaWZ0KDEsMCksTXIud3JpdGVfc2hpZnQoMSwyKSxNci53cml0ZV9zaGlmdCg0LDApLE1yLndyaXRlX3NoaWZ0KDEsMCksTXIud3JpdGVf''@;'; put 'put ''c2hpZnQoNCwwKSxNci53cml0ZV9zaGlmdCg0LDApLHp0Kz1aZVtWbltMdF1dfHwwfXZhciBhaT1QdC5uZXh0KDI2NCk7Zm9yKGFpLndyaXRlX3NoaWZ0KDQsMTMpLEx0PTA7THQ8NjU7KytMdClhaS53cml0ZV9zaGlmdCg0LDApO2ZvcihMdD0wO0x0PENuLmxlbmd0aDsrK0x0KXt2YXIgbmk9''@;'; put 'put ''UHQubmV4dChJbik7Zm9yKG5pLndyaXRlX3NoaWZ0KDEsMCksenQ9MDt6dDxhbi5sZW5ndGg7Kyt6dClpZihudWxsIT1hblt6dF0pc3dpdGNoKFZuW3p0XSl7Y2FzZSJMIjpuaS53cml0ZV9zaGlmdCgxLG51bGw9PUNuW0x0XVt6dF0/NjM6Q25bTHRdW3p0XT84NDo3MCk7YnJlYWs7Y2FzZSJC''@;'; put 'put ''IjpuaS53cml0ZV9zaGlmdCg4LENuW0x0XVt6dF18fDAsImYiKTticmVhaztjYXNlIkQiOkNuW0x0XVt6dF0/KG5pLndyaXRlX3NoaWZ0KDQsKCIwMDAwIitDbltMdF1benRdLmdldEZ1bGxZZWFyKCkpLnNsaWNlKC00KSwic2JjcyIpLG5pLndyaXRlX3NoaWZ0KDIsKCIwMCIrKENuW0x0XVt6''@;'; put 'put ''dF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksbmkud3JpdGVfc2hpZnQoMiwoIjAwIitDbltMdF1benRdLmdldERhdGUoKSkuc2xpY2UoLTIpLCJzYmNzIikpOm5pLndyaXRlX3NoaWZ0KDgsIjAwMDAwMDAwIiwic2JjcyIpO2JyZWFrO2Nhc2UiQyI6dmFyIGZyPVN0cmluZyhD''@;'; put 'put ''bltMdF1benRdfHwiIik7Zm9yKG5pLndyaXRlX3NoaWZ0KDEsZnIsInNiY3MiKSxmbj0wO2ZuPDI1MC1mci5sZW5ndGg7KytmbiluaS53cml0ZV9zaGlmdCgxLDMyKX19cmV0dXJuIFB0Lm5leHQoMSkud3JpdGVfc2hpZnQoMSwyNiksUHQuZW5kKCl9fX0oKSx3Mz1mdW5jdGlvbigpe3ZhciBI''@;'; put 'put ''PXtBQToiXHhjMCIsQkE6Ilx4YzEiLENBOiJceGMyIixEQToxOTUsSEE6Ilx4YzQiLEpBOjE5NyxBRToiXHhjOCIsQkU6Ilx4YzkiLENFOiJceGNhIixIRToiXHhjYiIsQUk6Ilx4Y2MiLEJJOiJceGNkIixDSToiXHhjZSIsSEk6Ilx4Y2YiLEFPOiJceGQyIixCTzoiXHhkMyIsQ086Ilx4ZDQi''@;'; put 'put ''LERPOjIxMyxITzoiXHhkNiIsQVU6Ilx4ZDkiLEJVOiJceGRhIixDVToiXHhkYiIsSFU6Ilx4ZGMiLEFhOiJceGUwIixCYToiXHhlMSIsQ2E6Ilx4ZTIiLERhOjIyNyxIYToiXHhlNCIsSmE6MjI5LEFlOiJceGU4IixCZToiXHhlOSIsQ2U6Ilx4ZWEiLEhlOiJceGViIixBaToiXHhlYyIsQmk6''@;'; put 'put ''Ilx4ZWQiLENpOiJceGVlIixIaToiXHhlZiIsQW86Ilx4ZjIiLEJvOiJceGYzIixDbzoiXHhmNCIsRG86MjQ1LEhvOiJceGY2IixBdToiXHhmOSIsQnU6Ilx4ZmEiLEN1OiJceGZiIixIdToiXHhmYyIsS0M6Ilx4YzciLEtjOiJceGU3IixxOiJceGU2Iix6OiJcdTAxNTMiLGE6Ilx4YzYiLGo6''@;'; put 'put ''Ilx1MDE1MiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYsMToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMs''@;'; put 'put ''IigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30scmU9bmV3IFJlZ0V4cCgiXHgxYk4oIitvbihIKS5qb2luKCJ8IikucmVwbGFjZSgvXHxcfFx8LywifFxcfHwiKS5yZXBsYWNlKC8o''@;'; put 'put ''Wz8oKStdKS9nLCJcXCQxIikrInxcXHwpIiwiZ20iKSxYPWZ1bmN0aW9uKFF0LGFuKXt2YXIgQ249SFthbl07cmV0dXJuIm51bWJlciI9PXR5cGVvZiBDbj92ZShDbik6Q259LHdlPWZ1bmN0aW9uKFF0LGFuLENuKXt2YXIgTHQ9YW4uY2hhckNvZGVBdCgwKS0zMjw8NHxDbi5jaGFyQ29kZUF0''@;'; put 'put ''KDApLTQ4O3JldHVybiA1OT09THQ/UXQ6dmUoTHQpfTtmdW5jdGlvbiBGZShRdCxhbil7dmFyIGFpLENuPVF0LnNwbGl0KC9bXG5ccl0rLyksTHQ9LTEsenQ9LTEsZm49MCxJbj0wLFJuPVtdLFZuPVtdLElyPW51bGwsaWk9e30seXI9W10sb2k9W10sTXI9W10sV3I9MDtmb3IoK2FuLmNvZGVw''@;'; put 'put ''YWdlPj0wJiZlZSgrYW4uY29kZXBhZ2UpO2ZuIT09Q24ubGVuZ3RoOysrZm4pe1dyPTA7dmFyIHcwLG5pPUNuW2ZuXS50cmltKCkucmVwbGFjZSgvXHgxQihbXHgyMC1ceDJGXSkoW1x4MzAtXHgzRl0pL2csd2UpLnJlcGxhY2UocmUsWCksZnI9bmkucmVwbGFjZSgvOzsvZywiXDAiKS5zcGxp''@;'; put 'put ''dCgiOyIpLm1hcChmdW5jdGlvbihaMCl7cmV0dXJuIFowLnJlcGxhY2UoL1x1MDAwMC9nLCI7Iil9KTtpZihuaS5sZW5ndGg+MClzd2l0Y2goZnJbMF0pe2Nhc2UiSUQiOmNhc2UiRSI6Y2FzZSJCIjpjYXNlIk8iOmNhc2UiVyI6YnJlYWs7Y2FzZSJQIjoiUCI9PWZyWzFdLmNoYXJBdCgwKSYm''@;'; put 'put ''Vm4ucHVzaChuaS5zbGljZSgzKS5yZXBsYWNlKC87Oy9nLCI7IikpO2JyZWFrO2Nhc2UiQyI6dmFyIEowPSExLGlvPSExLGIwPSExLGJpPSExLHpyPS0xLERpPS0xO2ZvcihJbj0xO0luPGZyLmxlbmd0aDsrK0luKXN3aXRjaChmcltJbl0uY2hhckF0KDApKXtjYXNlIkEiOmNhc2UiRyI6YnJl''@;'; put 'put ''YWs7Y2FzZSJYIjp6dD1wYXJzZUludChmcltJbl0uc2xpY2UoMSkpLTEsaW89ITA7YnJlYWs7Y2FzZSJZIjpmb3IoTHQ9cGFyc2VJbnQoZnJbSW5dLnNsaWNlKDEpKS0xLGlvfHwoenQ9MCksYWk9Um4ubGVuZ3RoO2FpPD1MdDsrK2FpKVJuW2FpXT1bXTticmVhaztjYXNlIksiOiciJz09PSh3''@;'; put 'put ''MD1mcltJbl0uc2xpY2UoMSkpLmNoYXJBdCgwKT93MD13MC5zbGljZSgxLHcwLmxlbmd0aC0xKToiVFJVRSI9PT13MD93MD0hMDoiRkFMU0UiPT09dzA/dzA9ITE6aXNOYU4odXIodzApKT9pc05hTihYbih3MCkuZ2V0RGF0ZSgpKXx8KHcwPXBuKHcwKSk6KHcwPXVyKHcwKSxudWxsIT09SXIm''@;'; put 'put ''JkYuaXNfZGF0ZShJcikmJih3MD1OdCh3MCkpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGUmJiJzdHJpbmciPT10eXBlb2YgdzAmJiJzdHJpbmciIT0oYW58fHt9KS50eXBlJiYoYW58fHt9KS5jb2RlcGFnZSYmKHcwPWNwdGFibGUudXRpbHMuZGVjb2RlKGFuLmNvZGVwYWdlLHcwKSks''@;'; put 'put ''SjA9ITA7YnJlYWs7Y2FzZSJFIjpiaT0hMDt2YXIgY2k9bTYoZnJbSW5dLnNsaWNlKDEpLHtyOkx0LGM6enR9KTtSbltMdF1benRdPVtSbltMdF1benRdLGNpXTticmVhaztjYXNlIlMiOmIwPSEwLFJuW0x0XVt6dF09W1JuW0x0XVt6dF0sIlM1UyJdO2JyZWFrO2Nhc2UiUiI6enI9cGFyc2VJ''@;'; put 'put ''bnQoZnJbSW5dLnNsaWNlKDEpKS0xO2JyZWFrO2Nhc2UiQyI6RGk9cGFyc2VJbnQoZnJbSW5dLnNsaWNlKDEpKS0xO2JyZWFrO2RlZmF1bHQ6aWYoYW4mJmFuLldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK25pKX1pZihKMCYmKFJuW0x0XVt6dF0mJjI9PVJuW0x0XVt6''@;'; put 'put ''dF0ubGVuZ3RoP1JuW0x0XVt6dF1bMF09dzA6Um5bTHRdW3p0XT13MCxJcj1udWxsKSxiMCl7aWYoYmkpdGhyb3cgbmV3IEVycm9yKCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhIik7dmFyIEhyPXpyPi0xJiZSblt6cl1bRGldO2lmKCFIcnx8IUhyWzFdKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlIik7Um5bTHRdW3p0XVsxXT1lQShIclsxXSx7cjpMdC16cixjOnp0LURpfSl9YnJlYWs7Y2FzZSJGIjp2YXIgTWk9MDtmb3IoSW49MTtJbjxmci5sZW5ndGg7KytJbilzd2l0Y2goZnJbSW5dLmNoYXJB''@;'; put 'put ''dCgwKSl7Y2FzZSJYIjp6dD1wYXJzZUludChmcltJbl0uc2xpY2UoMSkpLTEsKytNaTticmVhaztjYXNlIlkiOmZvcihMdD1wYXJzZUludChmcltJbl0uc2xpY2UoMSkpLTEsYWk9Um4ubGVuZ3RoO2FpPD1MdDsrK2FpKVJuW2FpXT1bXTticmVhaztjYXNlIk0iOldyPXBhcnNlSW50KGZyW0lu''@;'; put 'put ''XS5zbGljZSgxKSkvMjA7YnJlYWs7Y2FzZSJGIjpjYXNlIkciOmNhc2UiUyI6Y2FzZSJEIjpjYXNlIk4iOmJyZWFrO2Nhc2UiUCI6SXI9Vm5bcGFyc2VJbnQoZnJbSW5dLnNsaWNlKDEpKV07YnJlYWs7Y2FzZSJXIjpmb3IoTXI9ZnJbSW5dLnNsaWNlKDEpLnNwbGl0KCIgIiksYWk9cGFyc2VJ''@;'; put 'put ''bnQoTXJbMF0sMTApO2FpPD1wYXJzZUludChNclsxXSwxMCk7KythaSlXcj1wYXJzZUludChNclsyXSwxMCksb2lbYWktMV09MD09PVdyP3toaWRkZW46ITB9Ont3Y2g6V3J9LGJjKG9pW2FpLTFdKTticmVhaztjYXNlIkMiOm9pW3p0PXBhcnNlSW50KGZyW0luXS5zbGljZSgxKSktMV18fChv''@;'; put 'put ''aVt6dF09e30pO2JyZWFrO2Nhc2UiUiI6eXJbTHQ9cGFyc2VJbnQoZnJbSW5dLnNsaWNlKDEpKS0xXXx8KHlyW0x0XT17fSksV3I+MD8oeXJbTHRdLmhwdD1Xcix5cltMdF0uaHB4PW1mKFdyKSk6MD09PVdyJiYoeXJbTHRdLmhpZGRlbj0hMCk7YnJlYWs7ZGVmYXVsdDppZihhbiYmYW4uV1RG''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrbmkpfU1pPDEmJihJcj1udWxsKTticmVhaztkZWZhdWx0OmlmKGFuJiZhbi5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituaSl9fXJldHVybiB5ci5sZW5ndGg+MCYmKGlpWyIhcm93cyJdPXlyKSxvaS5s''@;'; put 'put ''ZW5ndGg+MCYmKGlpWyIhY29scyJdPW9pKSxhbiYmYW4uc2hlZXRSb3dzJiYoUm49Um4uc2xpY2UoMCxhbi5zaGVldFJvd3MpKSxbUm4saWldfWZ1bmN0aW9uIFplKFF0LGFuKXt2YXIgQ249ZnVuY3Rpb24geGUoUXQsYW4pe3N3aXRjaChhbi50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIEZl''@;'; put 'put ''KFNlLmRlY29kZShRdCksYW4pO2Nhc2UiYmluYXJ5IjpyZXR1cm4gRmUoUXQsYW4pO2Nhc2UiYnVmZmVyIjpyZXR1cm4gRmUoUXQudG9TdHJpbmcoImJpbmFyeSIpLGFuKTtjYXNlImFycmF5IjpyZXR1cm4gRmUoYm4oUXQpLGFuKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBl''@;'; put 'put ''ICIrYW4udHlwZSl9KFF0LGFuKSx6dD1DblsxXSxmbj1sZihDblswXSxhbik7cmV0dXJuIG9uKHp0KS5mb3JFYWNoKGZ1bmN0aW9uKEluKXtmbltJbl09enRbSW5dfSksZm59ZnVuY3Rpb24gVWUoUXQsYW4sQ24sTHQpe3ZhciB6dD0iQztZIisoQ24rMSkrIjtYIisoTHQrMSkrIjtLIjtzd2l0''@;'; put 'put ''Y2goUXQudCl7Y2FzZSJuIjp6dCs9UXQudnx8MCxRdC5mJiYhUXQuRiYmKHp0Kz0iO0UiK2NfKFF0LmYse3I6Q24sYzpMdH0pKTticmVhaztjYXNlImIiOnp0Kz1RdC52PyJUUlVFIjoiRkFMU0UiO2JyZWFrO2Nhc2UiZSI6enQrPVF0Lnd8fFF0LnY7YnJlYWs7Y2FzZSJkIjp6dCs9JyInKyhR''@;'; put 'put ''dC53fHxRdC52KSsnIic7YnJlYWs7Y2FzZSJzIjp6dCs9JyInK1F0LnYucmVwbGFjZSgvIi9nLCIiKSsnIid9cmV0dXJuIHp0fXJldHVybiBIWyJ8Il09MjU0LHt0b193b3JrYm9vazpmdW5jdGlvbiBWZShRdCxhbil7cmV0dXJuIG1jKFplKFF0LGFuKSxhbil9LHRvX3NoZWV0OlplLGZyb21f''@;'; put 'put ''c2hlZXQ6ZnVuY3Rpb24gUHQoUXQsYW4pe3ZhciBmbixDbj1bIklEO1BTaGVldEpTO047RSJdLEx0PVtdLHp0PWVhKFF0WyIhcmVmIl0pLEluPUFycmF5LmlzQXJyYXkoUXQpLFJuPSJcclxuIjtDbi5wdXNoKCJQO1BHZW5lcmFsIiksQ24ucHVzaCgiRjtQMDtERzBHODtNMjU1IiksUXRbIiFj''@;'; put 'put ''b2xzIl0mJmZ1bmN0aW9uIFN0KFF0LGFuKXthbi5mb3JFYWNoKGZ1bmN0aW9uKENuLEx0KXt2YXIgenQ9IkY7VyIrKEx0KzEpKyIgIisoTHQrMSkrIiAiO0NuLmhpZGRlbj96dCs9IjAiOigibnVtYmVyIj09dHlwZW9mIENuLndpZHRoJiYhQ24ud3B4JiYoQ24ud3B4PVA5KENuLndpZHRoKSks''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBDbi53cHgmJiFDbi53Y2gmJihDbi53Y2g9RjkoQ24ud3B4KSksIm51bWJlciI9PXR5cGVvZiBDbi53Y2gmJih6dCs9TWF0aC5yb3VuZChDbi53Y2gpKSksIiAiIT16dC5jaGFyQXQoenQubGVuZ3RoLTEpJiZRdC5wdXNoKHp0KX0pfShDbixRdFsiIWNvbHMiXSks''@;'; put 'put ''UXRbIiFyb3dzIl0mJmZ1bmN0aW9uIEl0KFF0LGFuKXthbi5mb3JFYWNoKGZ1bmN0aW9uKENuLEx0KXt2YXIgenQ9IkY7IjtDbi5oaWRkZW4/enQrPSJNMDsiOkNuLmhwdD96dCs9Ik0iKzIwKkNuLmhwdCsiOyI6Q24uaHB4JiYoenQrPSJNIisyMCpVZihDbi5ocHgpKyI7IiksenQubGVuZ3Ro''@;'; put 'put ''PjImJlF0LnB1c2goenQrIlIiKyhMdCsxKSl9KX0oQ24sUXRbIiFyb3dzIl0pLENuLnB1c2goIkI7WSIrKHp0LmUuci16dC5zLnIrMSkrIjtYIisoenQuZS5jLXp0LnMuYysxKSsiO0QiK1t6dC5zLmMsenQucy5yLHp0LmUuYyx6dC5lLnJdLmpvaW4oIiAiKSk7Zm9yKHZhciBWbj16dC5zLnI7''@;'; put 'put ''Vm48PXp0LmUucjsrK1ZuKWZvcih2YXIgSXI9enQucy5jO0lyPD16dC5lLmM7KytJcil7dmFyIGlpPVEwKHtyOlZuLGM6SXJ9KTsoZm49SW4/KFF0W1ZuXXx8W10pW0lyXTpRdFtpaV0pJiYobnVsbCE9Zm4udnx8Zm4uZiYmIWZuLkYpJiZMdC5wdXNoKFVlKGZuLDAsVm4sSXIpKX1yZXR1cm4g''@;'; put 'put ''Q24uam9pbihSbikrUm4rTHQuam9pbihSbikrUm4rIkUiK1JufX19KCksTWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByZShGZSxaZSl7Zm9yKHZhciBWZT1GZS5zcGxpdCgiXG4iKSxVZT0tMSxTdD0tMSxJdD0wLFB0PVtdO0l0IT09VmUubGVuZ3RoOysrSXQpaWYoIkJPVCIhPT1WZVtJdF0udHJp''@;'; put 'put ''bSgpKXtpZighKFVlPDApKXtmb3IodmFyIFF0PVZlW0l0XS50cmltKCkuc3BsaXQoIiwiKSxhbj1RdFswXSxDbj1RdFsxXSxMdD1WZVsrK0l0XXx8IiI7MSYoTHQubWF0Y2goL1siXS9nKXx8W10pLmxlbmd0aCYmSXQ8VmUubGVuZ3RoLTE7KUx0Kz0iXG4iK1ZlWysrSXRdO3N3aXRjaChMdD1M''@;'; put 'put ''dC50cmltKCksK2FuKXtjYXNlLTE6aWYoIkJPVCI9PT1MdCl7UHRbKytVZV09W10sU3Q9MDtjb250aW51ZX1pZigiRU9EIiE9PUx0KXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIERJRiBzcGVjaWFsIGNvbW1hbmQgIitMdCk7YnJlYWs7Y2FzZSAwOlB0W1VlXVtTdF09IlRSVUUiPT09''@;'; put 'put ''THR8fCJGQUxTRSIhPT1MdCYmKGlzTmFOKHVyKENuKSk/aXNOYU4oWG4oQ24pLmdldERhdGUoKSk/Q246cG4oQ24pOnVyKENuKSksKytTdDticmVhaztjYXNlIDE6KEx0PShMdD1MdC5zbGljZSgxLEx0Lmxlbmd0aC0xKSkucmVwbGFjZSgvIiIvZywnIicpKSYmTHQubWF0Y2goL149Ii4qIiQv''@;'; put 'put ''KSYmKEx0PUx0LnNsaWNlKDIsLTEpKSxQdFtVZV1bU3QrK109IiIhPT1MdD9MdDpudWxsfWlmKCJFT0QiPT09THQpYnJlYWt9fWVsc2UgUHRbKytVZV09W10sU3Q9MDtyZXR1cm4gWmUmJlplLnNoZWV0Um93cyYmKFB0PVB0LnNsaWNlKDAsWmUuc2hlZXRSb3dzKSksUHR9ZnVuY3Rpb24gWChG''@;'; put 'put ''ZSxaZSl7cmV0dXJuIGxmKGZ1bmN0aW9uIEgoRmUsWmUpe3N3aXRjaChaZS50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIHJlKFNlLmRlY29kZShGZSksWmUpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gcmUoRmUsWmUpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gcmUoRmUudG9TdHJpbmcoImJpbmFyeSIp''@;'; put 'put ''LFplKTtjYXNlImFycmF5IjpyZXR1cm4gcmUoYm4oRmUpLFplKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrWmUudHlwZSl9KEZlLFplKSxaZSl9dmFyIEZlLFplO3JldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiB3ZShGZSxaZSl7cmV0dXJuIG1jKFgoRmUsWmUpLFpl''@;'; put 'put ''KX0sdG9fc2hlZXQ6WCxmcm9tX3NoZWV0OihGZT1mdW5jdGlvbihVZSxTdCxJdCxQdCxRdCl7VWUucHVzaChTdCksVWUucHVzaChJdCsiLCIrUHQpLFVlLnB1c2goJyInK1F0LnJlcGxhY2UoLyIvZywnIiInKSsnIicpfSxaZT1mdW5jdGlvbihVZSxTdCxJdCxQdCl7VWUucHVzaChTdCsiLCIr''@;'; put 'put ''SXQpLFVlLnB1c2goMT09U3Q/JyInK1B0LnJlcGxhY2UoLyIvZywnIiInKSsnIic6UHQpfSxmdW5jdGlvbihVZSl7dmFyIFB0LFN0PVtdLEl0PWVhKFVlWyIhcmVmIl0pLFF0PUFycmF5LmlzQXJyYXkoVWUpO0ZlKFN0LCJUQUJMRSIsMCwxLCJzaGVldGpzIiksRmUoU3QsIlZFQ1RPUlMiLDAs''@;'; put 'put ''SXQuZS5yLUl0LnMucisxLCIiKSxGZShTdCwiVFVQTEVTIiwwLEl0LmUuYy1JdC5zLmMrMSwiIiksRmUoU3QsIkRBVEEiLDAsMCwiIik7Zm9yKHZhciBhbj1JdC5zLnI7YW48PUl0LmUucjsrK2FuKXtaZShTdCwtMSwwLCJCT1QiKTtmb3IodmFyIENuPUl0LnMuYztDbjw9SXQuZS5jOysrQ24p''@;'; put 'put ''e3ZhciBMdD1RMCh7cjphbixjOkNufSk7aWYoUHQ9UXQ/KFVlW2FuXXx8W10pW0NuXTpVZVtMdF0pc3dpdGNoKFB0LnQpe2Nhc2UibiI6dmFyIHp0PVB0Lnc7IXp0JiZudWxsIT1QdC52JiYoenQ9UHQudiksbnVsbD09enQ/WmUoU3QsMSwwLFB0LmYmJiFQdC5GPyI9IitQdC5mOiIiKTpaZShT''@;'; put 'put ''dCwwLHp0LCJWIik7YnJlYWs7Y2FzZSJiIjpaZShTdCwwLFB0LnY/MTowLFB0LnY/IlRSVUUiOiJGQUxTRSIpO2JyZWFrO2Nhc2UicyI6WmUoU3QsMSwwLGlzTmFOKFB0LnYpP1B0LnY6Jz0iJytQdC52KyciJyk7YnJlYWs7Y2FzZSJkIjpQdC53fHwoUHQudz1GLmZvcm1hdChQdC56fHxGLl90''@;'; put 'put ''YWJsZVsxNF0sY3QocG4oUHQudikpKSksWmUoU3QsMCxQdC53LCJWIik7YnJlYWs7ZGVmYXVsdDpaZShTdCwxLDAsIiIpfWVsc2UgWmUoU3QsMSwwLCIiKX19cmV0dXJuIFplKFN0LC0xLDAsIkVPRCIpLFN0LmpvaW4oIlxyXG4iKX0pfX0oKSxFYj1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoUHQp''@;'; put 'put ''e3JldHVybiBQdC5yZXBsYWNlKC9cXGIvZywiXFwiKS5yZXBsYWNlKC9cXGMvZywiOiIpLnJlcGxhY2UoL1xcbi9nLCJcbiIpfWZ1bmN0aW9uIHJlKFB0KXtyZXR1cm4gUHQucmVwbGFjZSgvXFwvZywiXFxiIikucmVwbGFjZSgvOi9nLCJcXGMiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKX1mdW5j''@;'; put 'put ''dGlvbiB3ZShQdCxRdCl7cmV0dXJuIGxmKGZ1bmN0aW9uIFgoUHQsUXQpe2Zvcih2YXIgYW49UHQuc3BsaXQoIlxuIiksQ249LTEsTHQ9LTEsenQ9MCxmbj1bXTt6dCE9PWFuLmxlbmd0aDsrK3p0KXt2YXIgSW49YW5benRdLnRyaW0oKS5zcGxpdCgiOiIpO2lmKCJjZWxsIj09PUluWzBdKXt2''@;'; put 'put ''YXIgUm49cG8oSW5bMV0pO2lmKGZuLmxlbmd0aDw9Um4ucilmb3IoQ249Zm4ubGVuZ3RoO0NuPD1Sbi5yOysrQ24pZm5bQ25dfHwoZm5bQ25dPVtdKTtzd2l0Y2goQ249Um4ucixMdD1Sbi5jLEluWzJdKXtjYXNlInQiOmZuW0NuXVtMdF09SChJblszXSk7YnJlYWs7Y2FzZSJ2IjpmbltDbl1b''@;'; put 'put ''THRdPStJblszXTticmVhaztjYXNlInZ0ZiI6dmFyIFZuPUluW0luLmxlbmd0aC0xXTtjYXNlInZ0YyI6Zm5bQ25dW0x0XT0ibmwiPT09SW5bM10/ISErSW5bNF06K0luWzRdLCJ2dGYiPT1JblsyXSYmKGZuW0NuXVtMdF09W2ZuW0NuXVtMdF0sVm5dKX19fXJldHVybiBRdCYmUXQuc2hlZXRS''@;'; put 'put ''b3dzJiYoZm49Zm4uc2xpY2UoMCxRdC5zaGVldFJvd3MpKSxmbn0oUHQsUXQpLFF0KX12YXIgRmU9WyJzb2NpYWxjYWxjOnZlcnNpb246MS41IiwiTUlNRS1WZXJzaW9uOiAxLjAiLCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9U29jaWFsQ2FsY1NwcmVhZHNoZWV0''@;'; put 'put ''Q29udHJvbFNhdmUiXS5qb2luKCJcbiIpLFplPVsiLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZSIsIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOCJdLmpvaW4oIlxuIikrIlxuIixWZT1bIiMgU29jaWFsQ2FsYyBTcHJlYWRzaGVldCBDb250cm9sIFNh''@;'; put 'put ''dmUiLCJwYXJ0OnNoZWV0Il0uam9pbigiXG4iKSxVZT0iLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZS0tIjtmdW5jdGlvbiBTdChQdCl7aWYoIVB0fHwhUHRbIiFyZWYiXSlyZXR1cm4iIjtmb3IodmFyIENuLFF0PVtdLGFuPVtdLEx0PSIiLHp0PW5zKFB0WyIhcmVmIl0pLGZu''@;'; put 'put ''PUFycmF5LmlzQXJyYXkoUHQpLEluPXp0LnMucjtJbjw9enQuZS5yOysrSW4pZm9yKHZhciBSbj16dC5zLmM7Um48PXp0LmUuYzsrK1JuKWlmKEx0PVEwKHtyOkluLGM6Um59KSwoQ249Zm4/KFB0W0luXXx8W10pW1JuXTpQdFtMdF0pJiZudWxsIT1Dbi52JiYieiIhPT1Dbi50KXtzd2l0Y2go''@;'; put 'put ''YW49WyJjZWxsIixMdCwidCJdLENuLnQpe2Nhc2UicyI6Y2FzZSJzdHIiOmFuLnB1c2gocmUoQ24udikpO2JyZWFrO2Nhc2UibiI6Q24uZj8oYW5bMl09InZ0ZiIsYW5bM109Im4iLGFuWzRdPUNuLnYsYW5bNV09cmUoQ24uZikpOihhblsyXT0idiIsYW5bM109Q24udik7YnJlYWs7Y2FzZSJi''@;'; put 'put ''IjphblsyXT0idnQiKyhDbi5mPyJmIjoiYyIpLGFuWzNdPSJubCIsYW5bNF09Q24udj8iMSI6IjAiLGFuWzVdPXJlKENuLmZ8fChDbi52PyJUUlVFIjoiRkFMU0UiKSk7YnJlYWs7Y2FzZSJkIjp2YXIgVm49Y3QocG4oQ24udikpO2FuWzJdPSJ2dGMiLGFuWzNdPSJuZCIsYW5bNF09IiIrVm4s''@;'; put 'put ''YW5bNV09Q24ud3x8Ri5mb3JtYXQoQ24uenx8Ri5fdGFibGVbMTRdLFZuKTticmVhaztjYXNlImUiOmNvbnRpbnVlfVF0LnB1c2goYW4uam9pbigiOiIpKX1yZXR1cm4gUXQucHVzaCgic2hlZXQ6YzoiKyh6dC5lLmMtenQucy5jKzEpKyI6cjoiKyh6dC5lLnItenQucy5yKzEpKyI6dHZmOjEi''@;'; put 'put ''KSxRdC5wdXNoKCJ2YWx1ZWZvcm1hdDoxOnRleHQtd2lraSIpLFF0LmpvaW4oIlxuIil9cmV0dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIHhlKFB0LFF0KXtyZXR1cm4gbWMod2UoUHQsUXQpLFF0KX0sdG9fc2hlZXQ6d2UsZnJvbV9zaGVldDpmdW5jdGlvbiBJdChQdCl7cmV0dXJuW0ZlLFpl''@;'; put 'put ''LFZlLFplLFN0KFB0KSxVZV0uam9pbigiXG4iKX19fSgpLEg4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSChJdCxQdCxRdCxhbixDbil7Q24ucmF3P1B0W1F0XVthbl09SXQ6IiI9PT1JdHx8KFB0W1F0XVthbl09RnIoSXQsQ24pP0ZyKEl0LENuKS52Okl0KX12YXIgWD17NDQ6IiwiLDk6Ilx0Iiw1''@;'; put 'put ''OToiOyJ9LHdlPXs0NDozLDk6Miw1OToxfTtmdW5jdGlvbiB4ZShJdCl7Zm9yKHZhciBQdD17fSxRdD0hMSxhbj0wLENuPTA7YW48SXQubGVuZ3RoOysrYW4pMzQ9PShDbj1JdC5jaGFyQ29kZUF0KGFuKSk/UXQ9IVF0OiFRdCYmQ24gaW4gWCYmKFB0W0NuXT0oUHRbQ25dfHwwKSsxKTtmb3Io''@;'; put 'put ''YW4gaW4gQ249W10sUHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFB0LGFuKSYmQ24ucHVzaChbUHRbYW5dLGFuXSk7aWYoIUNuLmxlbmd0aClmb3IoYW4gaW4gUHQ9d2UpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFB0LGFuKSYmQ24ucHVzaChb''@;'; put 'put ''UHRbYW5dLGFuXSk7cmV0dXJuIENuLnNvcnQoZnVuY3Rpb24oTHQsenQpe3JldHVybiBMdFswXS16dFswXXx8d2VbTHRbMV1dLXdlW3p0WzFdXX0pLFhbQ24ucG9wKClbMV1dfWZ1bmN0aW9uIFplKEl0LFB0KXtyZXR1cm4hUHR8fCFQdC5QUk58fCJzZXA9Ij09SXQuc2xpY2UoMCw0KXx8SXQu''@;'; put 'put ''aW5kZXhPZigiXHQiKT49MHx8SXQuaW5kZXhPZigiLCIpPj0wfHxJdC5pbmRleE9mKCI7Iik+PTA/ZnVuY3Rpb24gRmUoSXQsUHQpe3ZhciBRdD1QdHx8e30sYW49IiIsQ249UXQuZGVuc2U/W106e30sTHQ9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTsic2VwPSI9PUl0LnNsaWNlKDAsNCk/''@;'; put 'put ''MTM9PUl0LmNoYXJDb2RlQXQoNSkmJjEwPT1JdC5jaGFyQ29kZUF0KDYpPyhhbj1JdC5jaGFyQXQoNCksSXQ9SXQuc2xpY2UoNykpOjEzPT1JdC5jaGFyQ29kZUF0KDUpfHwxMD09SXQuY2hhckNvZGVBdCg1KT8oYW49SXQuY2hhckF0KDQpLEl0PUl0LnNsaWNlKDYpKTphbj14ZShJdC5zbGlj''@;'; put 'put ''ZSgwLDEwMjQpKTphbj14ZShJdC5zbGljZSgwLDEwMjQpKTt2YXIgenQ9MCxmbj0wLEluPTAsUm49MCxWbj0wLElyPWFuLmNoYXJDb2RlQXQoMCksaWk9ITEseXI9MCxvaT1JdC5jaGFyQ29kZUF0KDApO0l0PUl0LnJlcGxhY2UoL1xyXG4vZ20sIlxuIik7dmFyIE1yPW51bGwhPVF0LmRhdGVO''@;'; put 'put ''Rj9mdW5jdGlvbiBRZShIKXt2YXIgcmU9Im51bWJlciI9PXR5cGVvZiBIP0YuX3RhYmxlW0hdOkg7cmV0dXJuIHJlPXJlLnJlcGxhY2UoUGUsIihcXGQrKSIpLG5ldyBSZWdFeHAoIl4iK3JlKyIkIil9KFF0LmRhdGVORik6bnVsbDtmdW5jdGlvbiBXcigpe3ZhciBhaT1JdC5zbGljZShSbixW''@;'; put 'put ''biksbmk9e307aWYoJyInPT1haS5jaGFyQXQoMCkmJiciJz09YWkuY2hhckF0KGFpLmxlbmd0aC0xKSYmKGFpPWFpLnNsaWNlKDEsLTEpLnJlcGxhY2UoLyIiL2csJyInKSksMD09PWFpLmxlbmd0aCluaS50PSJ6IjtlbHNlIGlmKFF0LnJhdyluaS50PSJzIixuaS52PWFpO2Vsc2UgaWYoMD09''@;'; put 'put ''PWFpLnRyaW0oKS5sZW5ndGgpbmkudD0icyIsbmkudj1haTtlbHNlIGlmKDYxPT1haS5jaGFyQ29kZUF0KDApKTM0PT1haS5jaGFyQ29kZUF0KDEpJiYzND09YWkuY2hhckNvZGVBdChhaS5sZW5ndGgtMSk/KG5pLnQ9InMiLG5pLnY9YWkuc2xpY2UoMiwtMSkucmVwbGFjZSgvIiIvZywnIicp''@;'; put 'put ''KTpmdW5jdGlvbiBONChIKXtyZXR1cm4gMSE9SC5sZW5ndGh9KGFpKT8obmkudD0ibiIsbmkuZj1haS5zbGljZSgxKSk6KG5pLnQ9InMiLG5pLnY9YWkpO2Vsc2UgaWYoIlRSVUUiPT1haSluaS50PSJiIixuaS52PSEwO2Vsc2UgaWYoIkZBTFNFIj09YWkpbmkudD0iYiIsbmkudj0hMTtlbHNl''@;'; put 'put ''IGlmKGlzTmFOKEluPXVyKGFpKSkpaWYoIWlzTmFOKFhuKGFpKS5nZXREYXRlKCkpfHxNciYmYWkubWF0Y2goTXIpKXtuaS56PVF0LmRhdGVORnx8Ri5fdGFibGVbMTRdO3ZhciBmcj0wO01yJiZhaS5tYXRjaChNcikmJihhaT1mdW5jdGlvbiAkZShILHJlLFgpe3ZhciB3ZT0tMSx4ZT0tMSxG''@;'; put 'put ''ZT0tMSxaZT0tMSxWZT0tMSxVZT0tMTsocmUubWF0Y2goUGUpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihQdCxRdCl7dmFyIGFuPXBhcnNlSW50KFhbUXQrMV0sMTApO3N3aXRjaChQdC50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKSl7Y2FzZSJ5Ijp3ZT1hbjticmVhaztjYXNlImQiOkZlPWFuO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiaCI6WmU9YW47YnJlYWs7Y2FzZSJzIjpVZT1hbjticmVhaztjYXNlIm0iOlplPj0wP1ZlPWFuOnhlPWFufX0pLFVlPj0wJiYtMT09VmUmJnhlPj0wJiYoVmU9eGUseGU9LTEpO3ZhciBTdD0oIiIrKHdlPj0wP3dlOihuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSkpLnNsaWNlKC00''@;'; put 'put ''KSsiLSIrKCIwMCIrKHhlPj0xP3hlOjEpKS5zbGljZSgtMikrIi0iKygiMDAiKyhGZT49MT9GZToxKSkuc2xpY2UoLTIpOzc9PVN0Lmxlbmd0aCYmKFN0PSIwIitTdCksOD09U3QubGVuZ3RoJiYoU3Q9IjIwIitTdCk7dmFyIEl0PSgiMDAiKyhaZT49MD9aZTowKSkuc2xpY2UoLTIpKyI6Iiso''@;'; put 'put ''IjAwIisoVmU+PTA/VmU6MCkpLnNsaWNlKC0yKSsiOiIrKCIwMCIrKFVlPj0wP1VlOjApKS5zbGljZSgtMik7cmV0dXJuLTE9PVplJiYtMT09VmUmJi0xPT1VZT9TdDotMT09d2UmJi0xPT14ZSYmLTE9PUZlP0l0OlN0KyJUIitJdH0oMCxRdC5kYXRlTkYsYWkubWF0Y2goTXIpfHxbXSksZnI9''@;'; put 'put ''MSksUXQuY2VsbERhdGVzPyhuaS50PSJkIixuaS52PXBuKGFpLGZyKSk6KG5pLnQ9Im4iLG5pLnY9Y3QocG4oYWksZnIpKSksITEhPT1RdC5jZWxsVGV4dCYmKG5pLnc9Ri5mb3JtYXQobmkueixuaS52IGluc3RhbmNlb2YgRGF0ZT9jdChuaS52KTpuaS52KSksUXQuY2VsbE5GfHxkZWxldGUg''@;'; put 'put ''bmkuen1lbHNlIG5pLnQ9InMiLG5pLnY9YWk7ZWxzZSBuaS50PSJuIiwhMSE9PVF0LmNlbGxUZXh0JiYobmkudz1haSksbmkudj1JbjtpZigieiI9PW5pLnR8fChRdC5kZW5zZT8oQ25benRdfHwoQ25benRdPVtdKSxDblt6dF1bZm5dPW5pKTpDbltRMCh7YzpmbixyOnp0fSldPW5pKSxvaT1J''@;'; put 'put ''dC5jaGFyQ29kZUF0KFJuPVZuKzEpLEx0LmUuYzxmbiYmKEx0LmUuYz1mbiksTHQuZS5yPHp0JiYoTHQuZS5yPXp0KSx5cj09SXIpKytmbjtlbHNlIGlmKGZuPTAsKyt6dCxRdC5zaGVldFJvd3MmJlF0LnNoZWV0Um93czw9enQpcmV0dXJuITB9ZTpmb3IoO1ZuPEl0Lmxlbmd0aDsrK1ZuKXN3''@;'; put 'put ''aXRjaCh5cj1JdC5jaGFyQ29kZUF0KFZuKSl7Y2FzZSAzNDozND09PW9pJiYoaWk9IWlpKTticmVhaztjYXNlIElyOmNhc2UgMTA6Y2FzZSAxMzppZighaWkmJldyKCkpYnJlYWsgZX1yZXR1cm4gVm4tUm4+MCYmV3IoKSxDblsiIXJlZiJdPUFhKEx0KSxDbn0oSXQsUHQpOmxmKGZ1bmN0aW9u''@;'; put 'put ''IHJlKEl0LFB0KXt2YXIgUXQ9UHR8fHt9LGFuPVtdO2lmKCFJdHx8MD09PUl0Lmxlbmd0aClyZXR1cm4gYW47Zm9yKHZhciBDbj1JdC5zcGxpdCgvW1xyXG5dLyksTHQ9Q24ubGVuZ3RoLTE7THQ+PTAmJjA9PT1DbltMdF0ubGVuZ3RoOyktLUx0O2Zvcih2YXIgenQ9MTAsZm49MCxJbj0wO0lu''@;'; put 'put ''PD1MdDsrK0luKS0xPT0oZm49Q25bSW5dLmluZGV4T2YoIiAiKSk/Zm49Q25bSW5dLmxlbmd0aDpmbisrLHp0PU1hdGgubWF4KHp0LGZuKTtmb3IoSW49MDtJbjw9THQ7KytJbil7YW5bSW5dPVtdO3ZhciBSbj0wO2ZvcihIKENuW0luXS5zbGljZSgwLHp0KS50cmltKCksYW4sSW4sUm4sUXQp''@;'; put 'put ''LFJuPTE7Um48PShDbltJbl0ubGVuZ3RoLXp0KS8xMCsxOysrUm4pSChDbltJbl0uc2xpY2UoenQrMTAqKFJuLTEpLHp0KzEwKlJuKS50cmltKCksYW4sSW4sUm4sUXQpfXJldHVybiBRdC5zaGVldFJvd3MmJihhbj1hbi5zbGljZSgwLFF0LnNoZWV0Um93cykpLGFufShJdCxQdCksUHQpfWZ1''@;'; put 'put ''bmN0aW9uIFZlKEl0LFB0KXt2YXIgUXQ9IiIsYW49InN0cmluZyI9PVB0LnR5cGU/WzAsMCwwLDBdOnhUKEl0LFB0KTtzd2l0Y2goUHQudHlwZSl7Y2FzZSJiYXNlNjQiOlF0PVNlLmRlY29kZShJdCk7YnJlYWs7Y2FzZSJiaW5hcnkiOmNhc2Uic3RyaW5nIjpRdD1JdDticmVhaztjYXNlImJ1''@;'; put 'put ''ZmZlciI6UXQ9NjUwMDE9PVB0LmNvZGVwYWdlP0l0LnRvU3RyaW5nKCJ1dGY4Iik6UHQuY29kZXBhZ2UmJiJ1bmRlZmluZWQiIT10eXBlb2YgY3B0YWJsZT9jcHRhYmxlLnV0aWxzLmRlY29kZShQdC5jb2RlcGFnZSxJdCk6SXQudG9TdHJpbmcoImJpbmFyeSIpO2JyZWFrO2Nhc2UiYXJyYXki''@;'; put 'put ''OlF0PWJuKEl0KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitQdC50eXBlKX1yZXR1cm4gMjM5PT1hblswXSYmMTg3PT1hblsxXSYmMTkxPT1hblsyXT9RdD1qMChRdC5zbGljZSgzKSk6ImJpbmFyeSI9PVB0LnR5cGUmJiJ1bmRlZmluZWQiIT10''@;'; put 'put ''eXBlb2YgY3B0YWJsZSYmUHQuY29kZXBhZ2UmJihRdD1jcHRhYmxlLnV0aWxzLmRlY29kZShQdC5jb2RlcGFnZSxjcHRhYmxlLnV0aWxzLmVuY29kZSgyODU5MSxRdCkpKSwic29jaWFsY2FsYzp2ZXJzaW9uOiI9PVF0LnNsaWNlKDAsMTkpP0ViLnRvX3NoZWV0KCJzdHJpbmciPT1QdC50eXBl''@;'; put 'put ''P1F0OmowKFF0KSxQdCk6WmUoUXQsUHQpfXJldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiBVZShJdCxQdCl7cmV0dXJuIG1jKFZlKEl0LFB0KSxQdCl9LHRvX3NoZWV0OlZlLGZyb21fc2hlZXQ6ZnVuY3Rpb24gU3QoSXQpe2Zvcih2YXIgYW4sUHQ9W10sUXQ9ZWEoSXRbIiFyZWYiXSksQ249''@;'; put 'put ''QXJyYXkuaXNBcnJheShJdCksTHQ9UXQucy5yO0x0PD1RdC5lLnI7KytMdCl7Zm9yKHZhciB6dD1bXSxmbj1RdC5zLmM7Zm48PVF0LmUuYzsrK2ZuKXt2YXIgSW49UTAoe3I6THQsYzpmbn0pO2lmKChhbj1Dbj8oSXRbTHRdfHxbXSlbZm5dOkl0W0luXSkmJm51bGwhPWFuLnYpe2Zvcih2YXIg''@;'; put 'put ''Um49KGFuLnd8fChqMShhbiksYW4udyl8fCIiKS5zbGljZSgwLDEwKTtSbi5sZW5ndGg8MTA7KVJuKz0iICI7enQucHVzaChSbisoMD09PWZuPyIgIjoiIikpfWVsc2UgenQucHVzaCgiICAgICAgICAgICIpfVB0LnB1c2goenQuam9pbigiIikpfXJldHVybiBQdC5qb2luKCJcbiIpfX19KCks''@;'; put 'put ''dzE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKHpyLERpLGNpKXtpZih6cil7S2woenIsenIubHx8MCk7Zm9yKHZhciBIcj1jaS5FbnVtfHxiMDt6ci5sPHpyLmxlbmd0aDspe3ZhciBNaT16ci5yZWFkX3NoaWZ0KDIpLFowPUhyW01pXXx8SHJbNjU1MzVdLG4wPXpyLnJlYWRfc2hpZnQoMiksZm89''@;'; put 'put ''enIubCtuMCxpYT1aMC5mJiZaMC5mKHpyLG4wLGNpKTtpZih6ci5sPWZvLERpKGlhLFowLE1pKSlyZXR1cm59fX1mdW5jdGlvbiBYKHpyLERpKXtpZighenIpcmV0dXJuIHpyO3ZhciBjaT1EaXx8e30sSHI9Y2kuZGVuc2U/W106e30sTWk9IlNoZWV0MSIsWjA9MCxuMD17fSxmbz1bTWldLGlh''@;'; put 'put ''PVtdLFgwPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0semk9Y2kuc2hlZXRSb3dzfHwwO2lmKDI9PXpyWzJdKWNpLkVudW09YjAsSCh6cixmdW5jdGlvbih4MCxmMCxqcil7c3dpdGNoKGpyKXtjYXNlIDA6Y2kudmVycz14MCx4MD49NDA5NiYmKGNpLnFwcm89ITApO2JyZWFrO2Nhc2UgNjpY''@;'; put 'put ''MD14MDticmVhaztjYXNlIDE1OmNhc2UgNTE6Y2kucXByb3x8KHgwWzFdLnY9eDBbMV0udi5zbGljZSgxKSk7Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTY6MTQ9PWpyJiYxMTI9PSgxMTImeDBbMl0pJiYoMTUmeDBbMl0pPjEmJigxNSZ4MFsyXSk8MTUmJih4MFsxXS56PWNpLmRhdGVORnx8Ri5f''@;'; put 'put ''dGFibGVbMTRdLGNpLmNlbGxEYXRlcyYmKHgwWzFdLnQ9ImQiLHgwWzFdLnY9TnQoeDBbMV0udikpKTt2YXIgQ2E9Y2kuZGVuc2U/KEhyW3gwWzBdLnJdfHxbXSlbeDBbMF0uY106SHJbUTAoeDBbMF0pXTtpZihDYSl7Q2EudD14MFsxXS50LENhLnY9eDBbMV0udixudWxsIT14MFsxXS56JiYo''@;'; put 'put ''Q2Euej14MFsxXS56KSxudWxsIT14MFsxXS5mJiYoQ2EuZj14MFsxXS5mKTticmVha31jaS5kZW5zZT8oSHJbeDBbMF0ucl18fChIclt4MFswXS5yXT1bXSksSHJbeDBbMF0ucl1beDBbMF0uY109eDBbMV0pOkhyW1EwKHgwWzBdKV09eDBbMV19fSxjaSk7ZWxzZXtpZigyNiE9enJbMl0mJjE0''@;'; put 'put ''IT16clsyXSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBMT1RVUyBCT0YgIit6clsyXSk7Y2kuRW51bT1iaSwxND09enJbMl0mJihjaS5xcHJvPSEwLHpyLmw9MCksSCh6cixmdW5jdGlvbih4MCxmMCxqcil7c3dpdGNoKGpyKXtjYXNlIDIyOngwWzFdLnY9eDBbMV0udi5zbGljZSgx''@;'; put 'put ''KTtjYXNlIDIzOmNhc2UgMjQ6Y2FzZSAyNTpjYXNlIDM3OmNhc2UgMzk6Y2FzZSA0MDppZih4MFszXT5aMCYmKEhyWyIhcmVmIl09QWEoWDApLG4wW01pXT1IcixIcj1jaS5kZW5zZT9bXTp7fSxYMD17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LGZvLnB1c2goTWk9IlNoZWV0IisoKFowPXgw''@;'; put 'put ''WzNdKSsxKSkpLHppPjAmJngwWzBdLnI+PXppKWJyZWFrO2NpLmRlbnNlPyhIclt4MFswXS5yXXx8KEhyW3gwWzBdLnJdPVtdKSxIclt4MFswXS5yXVt4MFswXS5jXT14MFsxXSk6SHJbUTAoeDBbMF0pXT14MFsxXSxYMC5lLmM8eDBbMF0uYyYmKFgwLmUuYz14MFswXS5jKSxYMC5lLnI8eDBb''@;'; put 'put ''MF0uciYmKFgwLmUucj14MFswXS5yKTticmVhaztjYXNlIDI3OngwWzE0ZTNdJiYoaWFbeDBbMTRlM11bMF1dPXgwWzE0ZTNdWzFdKX19LGNpKX1pZihIclsiIXJlZiJdPUFhKFgwKSxuMFtNaV09SHIsIWlhLmxlbmd0aClyZXR1cm57U2hlZXROYW1lczpmbyxTaGVldHM6bjB9O2Zvcih2YXIg''@;'; put 'put ''ZzA9e30sUzA9W10sQWk9MDtBaTxpYS5sZW5ndGg7KytBaSluMFtmb1tBaV1dJiYoUzAucHVzaChpYVtBaV0pLGcwW2lhW0FpXV09bjBbZm9bQWldXSk7cmV0dXJue1NoZWV0TmFtZXM6UzAsU2hlZXRzOmcwfX1mdW5jdGlvbiBTdCh6cixEaSxjaSl7dmFyIEhyPVt7YzowLHI6MH0se3Q6Im4i''@;'; put 'put ''LHY6MH0sMF07cmV0dXJuIGNpLnFwcm8mJjIwNzY4IT1jaS52ZXJzPyhIclswXS5jPXpyLnJlYWRfc2hpZnQoMSksenIubCsrLEhyWzBdLnI9enIucmVhZF9zaGlmdCgyKSx6ci5sKz0yKTooSHJbMl09enIucmVhZF9zaGlmdCgxKSxIclswXS5jPXpyLnJlYWRfc2hpZnQoMiksSHJbMF0ucj16''@;'; put 'put ''ci5yZWFkX3NoaWZ0KDIpKSxIcn1mdW5jdGlvbiBJdCh6cixEaSxjaSl7dmFyIEhyPXpyLmwrRGksTWk9U3QoenIsMCxjaSk7aWYoTWlbMV0udD0icyIsMjA3Njg9PWNpLnZlcnMpe3pyLmwrKzt2YXIgWjA9enIucmVhZF9zaGlmdCgxKTtyZXR1cm4gTWlbMV0udj16ci5yZWFkX3NoaWZ0KFow''@;'; put 'put ''LCJ1dGY4IiksTWl9cmV0dXJuIGNpLnFwcm8mJnpyLmwrKyxNaVsxXS52PXpyLnJlYWRfc2hpZnQoSHItenIubCwiY3N0ciIpLE1pfWZ1bmN0aW9uIFB0KHpyLERpLGNpKXt2YXIgSHI9eGkoNytjaS5sZW5ndGgpO0hyLndyaXRlX3NoaWZ0KDEsMjU1KSxIci53cml0ZV9zaGlmdCgyLERpKSxI''@;'; put 'put ''ci53cml0ZV9zaGlmdCgyLHpyKSxIci53cml0ZV9zaGlmdCgxLDM5KTtmb3IodmFyIE1pPTA7TWk8SHIubGVuZ3RoOysrTWkpe3ZhciBaMD1jaS5jaGFyQ29kZUF0KE1pKTtIci53cml0ZV9zaGlmdCgxLFowPj0xMjg/OTU6WjApfXJldHVybiBIci53cml0ZV9zaGlmdCgxLDApLEhyfWZ1bmN0''@;'; put 'put ''aW9uIGFuKHpyLERpLGNpKXt2YXIgSHI9eGkoNyk7cmV0dXJuIEhyLndyaXRlX3NoaWZ0KDEsMjU1KSxIci53cml0ZV9zaGlmdCgyLERpKSxIci53cml0ZV9zaGlmdCgyLHpyKSxIci53cml0ZV9zaGlmdCgyLGNpLCJpIiksSHJ9ZnVuY3Rpb24gTHQoenIsRGksY2kpe3ZhciBIcj14aSgxMyk7''@;'; put 'put ''cmV0dXJuIEhyLndyaXRlX3NoaWZ0KDEsMjU1KSxIci53cml0ZV9zaGlmdCgyLERpKSxIci53cml0ZV9zaGlmdCgyLHpyKSxIci53cml0ZV9zaGlmdCg4LGNpLCJmIiksSHJ9ZnVuY3Rpb24gZm4oenIsRGksY2kpe3ZhciBIcj0zMjc2OCZEaTtyZXR1cm4gRGk9KEhyP3pyOjApKygoRGkmPS0z''@;'; put 'put ''Mjc2OSk+PTgxOTI/RGktMTYzODQ6RGkpLChIcj8iIjoiJCIpKyhjaT9MbChEaSk6aGEoRGkpKX12YXIgUm49ezUxOlsiRkFMU0UiLDBdLDUyOlsiVFJVRSIsMF0sNzA6WyJMRU4iLDFdLDgwOlsiU1VNIiw2OV0sODE6WyJBVkVSQUdFQSIsNjldLDgyOlsiQ09VTlRBIiw2OV0sODM6WyJNSU5B''@;'; put 'put ''Iiw2OV0sODQ6WyJNQVhBIiw2OV0sMTExOlsiVCIsMV19LFZuPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiKyIsIi0iLCIqIiwiLyIsIl4iLCI9IiwiPD4iLCI8PSIsIj49IiwiPCIsIj4iLCIiLCIiLCIiLCIiLCImIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl07ZnVuY3Rpb24gaWkoenIp''@;'; put 'put ''e3ZhciBEaT1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3JldHVybiBEaVswXS5yPXpyLnJlYWRfc2hpZnQoMiksRGlbM109enJbenIubCsrXSxEaVswXS5jPXpyW3pyLmwrK10sRGl9ZnVuY3Rpb24gb2koenIsRGksY2ksSHIpe3ZhciBNaT14aSg2K0hyLmxlbmd0aCk7TWkud3JpdGVfc2hp''@;'; put 'put ''ZnQoMix6ciksTWkud3JpdGVfc2hpZnQoMSxjaSksTWkud3JpdGVfc2hpZnQoMSxEaSksTWkud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciBaMD0wO1owPEhyLmxlbmd0aDsrK1owKXt2YXIgbjA9SHIuY2hhckNvZGVBdChaMCk7TWkud3JpdGVfc2hpZnQoMSxuMD49MTI4Pzk1Om4wKX1yZXR1''@;'; put 'put ''cm4gTWkud3JpdGVfc2hpZnQoMSwwKSxNaX1mdW5jdGlvbiBXcih6cixEaSl7dmFyIGNpPWlpKHpyKSxIcj16ci5yZWFkX3NoaWZ0KDQpLE1pPXpyLnJlYWRfc2hpZnQoNCksWjA9enIucmVhZF9zaGlmdCgyKTtpZig2NTUzNT09WjApcmV0dXJuIDA9PT1IciYmMzIyMTIyNTQ3Mj09PU1pPyhj''@;'; put 'put ''aVsxXS50PSJlIixjaVsxXS52PTE1KTowPT09SHImJjM0ODk2NjA5Mjg9PT1NaT8oY2lbMV0udD0iZSIsY2lbMV0udj00Mik6Y2lbMV0udj0wLGNpO3ZhciBuMD0zMjc2OCZaMDtyZXR1cm4gWjA9KDMyNzY3JlowKS0xNjQ0NixjaVsxXS52PSgxLTIqbjApKihNaSpNYXRoLnBvdygyLFowKzMy''@;'; put 'put ''KStIcipNYXRoLnBvdygyLFowKSksY2l9ZnVuY3Rpb24gYWkoenIsRGksY2ksSHIpe3ZhciBNaT14aSgxNCk7aWYoTWkud3JpdGVfc2hpZnQoMix6ciksTWkud3JpdGVfc2hpZnQoMSxjaSksTWkud3JpdGVfc2hpZnQoMSxEaSksMD09SHIpcmV0dXJuIE1pLndyaXRlX3NoaWZ0KDQsMCksTWku''@;'; put 'put ''d3JpdGVfc2hpZnQoNCwwKSxNaS53cml0ZV9zaGlmdCgyLDY1NTM1KSxNaTt2YXIgWjA9MCxuMD0wLGlhPTA7cmV0dXJuIEhyPDAmJihaMD0xLEhyPS1IciksbjA9MHxNYXRoLmxvZzIoSHIpLDA9PSgyMTQ3NDgzNjQ4JihpYT0oSHIvPU1hdGgucG93KDIsbjAtMzEpKT4+PjApKSYmKCsrbjAs''@;'; put 'put ''aWE9KEhyLz0yKT4+PjApLEhyLT1pYSxpYXw9MjE0NzQ4MzY0OCxpYT4+Pj0wLEhyKj1NYXRoLnBvdygyLDMyKSxNaS53cml0ZV9zaGlmdCg0LEhyPj4+MCksTWkud3JpdGVfc2hpZnQoNCxpYSksTWkud3JpdGVfc2hpZnQoMixuMCs9MTYzODMrKFowPzMyNzY4OjApKSxNaX1mdW5jdGlvbiBo''@;'; put 'put ''aSh6cixEaSl7dmFyIGNpPWlpKHpyKSxIcj16ci5yZWFkX3NoaWZ0KDgsImYiKTtyZXR1cm4gY2lbMV0udj1IcixjaX1mdW5jdGlvbiBpbyh6cixEaSl7dmFyIGNpPXhpKDUrenIubGVuZ3RoKTtjaS53cml0ZV9zaGlmdCgyLDE0ZTMpLGNpLndyaXRlX3NoaWZ0KDIsRGkpO2Zvcih2YXIgSHI9''@;'; put 'put ''MDtIcjx6ci5sZW5ndGg7KytIcil7dmFyIE1pPXpyLmNoYXJDb2RlQXQoSHIpO2NpW2NpLmwrK109TWk+MTI3Pzk1Ok1pfXJldHVybiBjaVtjaS5sKytdPTAsY2l9dmFyIGIwPXswOntuOiJCT0YiLGY6ZTF9LDE6e246IkVPRiJ9LDI6e246IkNBTENNT0RFIn0sMzp7bjoiQ0FMQ09SREVSIn0s''@;'; put 'put ''NDp7bjoiU1BMSVQifSw1OntuOiJTWU5DIn0sNjp7bjoiUkFOR0UiLGY6ZnVuY3Rpb24gVmUoenIpe3ZhciBEaT17czp7YzowLHI6MH0sZTp7YzowLHI6MH19O3JldHVybiBEaS5zLmM9enIucmVhZF9zaGlmdCgyKSxEaS5zLnI9enIucmVhZF9zaGlmdCgyKSxEaS5lLmM9enIucmVhZF9zaGlm''@;'; put 'put ''dCgyKSxEaS5lLnI9enIucmVhZF9zaGlmdCgyKSw2NTUzNT09RGkucy5jJiYoRGkucy5jPURpLmUuYz1EaS5zLnI9RGkuZS5yPTApLERpfX0sNzp7bjoiV0lORE9XMSJ9LDg6e246IkNPTFcxIn0sOTp7bjoiV0lOVFdPIn0sMTA6e246IkNPTFcyIn0sMTE6e246Ik5BTUUifSwxMjp7bjoiQkxB''@;'; put 'put ''TksifSwxMzp7bjoiSU5URUdFUiIsZjpmdW5jdGlvbiBRdCh6cixEaSxjaSl7dmFyIEhyPVN0KHpyLDAsY2kpO3JldHVybiBIclsxXS52PXpyLnJlYWRfc2hpZnQoMiwiaSIpLEhyfX0sMTQ6e246Ik5VTUJFUiIsZjpmdW5jdGlvbiBDbih6cixEaSxjaSl7dmFyIEhyPVN0KHpyLDAsY2kpO3Jl''@;'; put 'put ''dHVybiBIclsxXS52PXpyLnJlYWRfc2hpZnQoOCwiZiIpLEhyfX0sMTU6e246IkxBQkVMIixmOkl0fSwxNjp7bjoiRk9STVVMQSIsZjpmdW5jdGlvbiB6dCh6cixEaSxjaSl7dmFyIEhyPXpyLmwrRGksTWk9U3QoenIsMCxjaSk7aWYoTWlbMV0udj16ci5yZWFkX3NoaWZ0KDgsImYiKSxjaS5x''@;'; put 'put ''cHJvKXpyLmw9SHI7ZWxzZXt2YXIgWjA9enIucmVhZF9zaGlmdCgyKTsoZnVuY3Rpb24gSXIoenIsRGkpe0tsKHpyLDApO2Zvcih2YXIgY2k9W10sSHI9MCxNaT0iIixaMD0iIjt6ci5sPHpyLmxlbmd0aDspe3ZhciBuMD16clt6ci5sKytdO3N3aXRjaChuMCl7Y2FzZSAwOmNpLnB1c2goenIu''@;'; put 'put ''cmVhZF9zaGlmdCg4LCJmIikpO2JyZWFrO2Nhc2UgMTpaMD1mbihEaVswXS5jLHpyLnJlYWRfc2hpZnQoMiksITApLE1pPWZuKERpWzBdLnIsenIucmVhZF9zaGlmdCgyKSwhMSksY2kucHVzaChaMCtNaSk7YnJlYWs7Y2FzZSAyOnZhciBmbz1mbihEaVswXS5jLHpyLnJlYWRfc2hpZnQoMiks''@;'; put 'put ''ITApLGlhPWZuKERpWzBdLnIsenIucmVhZF9zaGlmdCgyKSwhMSk7WjA9Zm4oRGlbMF0uYyx6ci5yZWFkX3NoaWZ0KDIpLCEwKSxNaT1mbihEaVswXS5yLHpyLnJlYWRfc2hpZnQoMiksITEpLGNpLnB1c2goZm8raWErIjoiK1owK01pKTticmVhaztjYXNlIDM6aWYoenIubDx6ci5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiV0sxIHByZW1hdHVyZSBmb3JtdWxhIGVuZCIpO2JyZWFrO2Nhc2UgNDpjaS5wdXNoKCIoIitjaS5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgNTpjaS5wdXNoKHpyLnJlYWRfc2hpZnQoMikpO2JyZWFrO2Nhc2UgNjpmb3IodmFyIFgwPSIiO24wPXpy''@;'; put 'put ''W3pyLmwrK107KVgwKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4wKTtjaS5wdXNoKCciJytYMC5yZXBsYWNlKC8iL2csJyIiJykrJyInKTticmVhaztjYXNlIDg6Y2kucHVzaCgiLSIrY2kucG9wKCkpO2JyZWFrO2Nhc2UgMjM6Y2kucHVzaCgiKyIrY2kucG9wKCkpO2JyZWFrO2Nhc2UgMjI6Y2ku''@;'; put 'put ''cHVzaCgiTk9UKCIrY2kucG9wKCkrIikiKTticmVhaztjYXNlIDIwOmNhc2UgMjE6dmFyIHppPWNpLnBvcCgpLGcwPWNpLnBvcCgpO2NpLnB1c2goWyJBTkQiLCJPUiJdW24wLTIwXSsiKCIrZzArIiwiK3ppKyIpIik7YnJlYWs7ZGVmYXVsdDppZihuMDwzMiYmVm5bbjBdKXppPWNpLnBvcCgp''@;'; put 'put ''LGcwPWNpLnBvcCgpLGNpLnB1c2goZzArVm5bbjBdK3ppKTtlbHNle2lmKCFSbltuMF0pcmV0dXJuIG4wPD03P2NvbnNvbGUuZXJyb3IoIldLMSBpbnZhbGlkIG9wY29kZSAiK24wLnRvU3RyaW5nKDE2KSk6bjA8PTI0P2NvbnNvbGUuZXJyb3IoIldLMSB1bnN1cHBvcnRlZCBvcCAiK24wLnRv''@;'; put 'put ''U3RyaW5nKDE2KSk6bjA8PTMwP2NvbnNvbGUuZXJyb3IoIldLMSBpbnZhbGlkIG9wY29kZSAiK24wLnRvU3RyaW5nKDE2KSk6bjA8PTExNT9jb25zb2xlLmVycm9yKCJXSzEgdW5zdXBwb3J0ZWQgZnVuY3Rpb24gb3Bjb2RlICIrbjAudG9TdHJpbmcoMTYpKTpjb25zb2xlLmVycm9yKCJXSzEg''@;'; put 'put ''dW5yZWNvZ25pemVkIG9wY29kZSAiK24wLnRvU3RyaW5nKDE2KSk7aWYoNjk9PShIcj1SbltuMF1bMV0pJiYoSHI9enJbenIubCsrXSksSHI+Y2kubGVuZ3RoKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJzZSAweCIrbjAudG9TdHJpbmcoMTYpKyI6fCIr''@;'; put 'put ''Y2kuam9pbigifCIpKyJ8Iik7dmFyIFMwPWNpLnNsaWNlKC1Icik7Y2kubGVuZ3RoLT1IcixjaS5wdXNoKFJuW24wXVswXSsiKCIrUzAuam9pbigiLCIpKyIpIil9fX0xPT1jaS5sZW5ndGg/RGlbMV0uZj0iIitjaVswXTpjb25zb2xlLmVycm9yKCJXSzEgYmFkIGZvcm11bGEgcGFyc2UgfCIr''@;'; put 'put ''Y2kuam9pbigifCIpKyJ8Iil9KSh6ci5zbGljZSh6ci5sLHpyLmwrWjApLE1pKSx6ci5sKz1aMH1yZXR1cm4gTWl9fSwyNDp7bjoiVEFCTEUifSwyNTp7bjoiT1JBTkdFIn0sMjY6e246IlBSQU5HRSJ9LDI3OntuOiJTUkFOR0UifSwyODp7bjoiRlJBTkdFIn0sMjk6e246IktSQU5HRTEifSwz''@;'; put 'put ''Mjp7bjoiSFJBTkdFIn0sMzU6e246IktSQU5HRTIifSwzNjp7bjoiUFJPVEVDIn0sMzc6e246IkZPT1RFUiJ9LDM4OntuOiJIRUFERVIifSwzOTp7bjoiU0VUVVAifSw0MDp7bjoiTUFSR0lOUyJ9LDQxOntuOiJMQUJFTEZNVCJ9LDQyOntuOiJUSVRMRVMifSw0Mzp7bjoiU0hFRVRKUyJ9LDQ1''@;'; put 'put ''OntuOiJHUkFQSCJ9LDQ2OntuOiJOR1JBUEgifSw0Nzp7bjoiQ0FMQ0NPVU5UIn0sNDg6e246IlVORk9STUFUVEVEIn0sNDk6e246IkNVUlNPUlcxMiJ9LDUwOntuOiJXSU5ET1cifSw1MTp7bjoiU1RSSU5HIixmOkl0fSw1NTp7bjoiUEFTU1dPUkQifSw1Njp7bjoiTE9DS0VEIn0sNjA6e246''@;'; put 'put ''IlFVRVJZIn0sNjE6e246IlFVRVJZTkFNRSJ9LDYyOntuOiJQUklOVCJ9LDYzOntuOiJQUklOVE5BTUUifSw2NDp7bjoiR1JBUEgyIn0sNjU6e246IkdSQVBITkFNRSJ9LDY2OntuOiJaT09NIn0sNjc6e246IlNZTVNQTElUIn0sNjg6e246Ik5TUk9XUyJ9LDY5OntuOiJOU0NPTFMifSw3MDp7''@;'; put 'put ''bjoiUlVMRVIifSw3MTp7bjoiTk5BTUUifSw3Mjp7bjoiQUNPTU0ifSw3Mzp7bjoiQU1BQ1JPIn0sNzQ6e246IlBBUlNFIn0sMTAyOntuOiJQUkFOR0VTPz8ifSwxMDM6e246IlJSQU5HRVM/PyJ9LDEwNDp7bjoiRk5BTUU/PyJ9LDEwNTp7bjoiTVJBTkdFUz8/In0sNjU1MzU6e246IiJ9fSxi''@;'; put 'put ''aT17MDp7bjoiQk9GIn0sMTp7bjoiRU9GIn0sMjp7bjoiUEFTU1dPUkQifSwzOntuOiJDQUxDU0VUIn0sNDp7bjoiV0lORE9XU0VUIn0sNTp7bjoiU0hFRVRDRUxMUFRSIn0sNjp7bjoiU0hFRVRMQVlPVVQifSw3OntuOiJDT0xVTU5XSURUSCJ9LDg6e246IkhJRERFTkNPTFVNTiJ9LDk6e246''@;'; put 'put ''IlVTRVJSQU5HRSJ9LDEwOntuOiJTWVNURU1SQU5HRSJ9LDExOntuOiJaRVJPRk9SQ0UifSwxMjp7bjoiU09SVEtFWURJUiJ9LDEzOntuOiJGSUxFU0VBTCJ9LDE0OntuOiJEQVRBRklMTE5VTVMifSwxNTp7bjoiUFJJTlRNQUlOIn0sMTY6e246IlBSSU5UU1RSSU5HIn0sMTc6e246IkdSQVBI''@;'; put 'put ''TUFJTiJ9LDE4OntuOiJHUkFQSFNUUklORyJ9LDE5OntuOiI/PyJ9LDIwOntuOiJFUlJDRUxMIn0sMjE6e246Ik5BQ0VMTCJ9LDIyOntuOiJMQUJFTDE2IixmOmZ1bmN0aW9uIHlyKHpyLERpKXt2YXIgY2k9aWkoenIpO3JldHVybiBjaVsxXS50PSJzIixjaVsxXS52PXpyLnJlYWRfc2hpZnQo''@;'; put 'put ''RGktNCwiY3N0ciIpLGNpfX0sMjM6e246Ik5VTUJFUjE3IixmOldyfSwyNDp7bjoiTlVNQkVSMTgiLGY6ZnVuY3Rpb24gTXIoenIsRGkpe3ZhciBjaT1paSh6cik7Y2lbMV0udj16ci5yZWFkX3NoaWZ0KDIpO3ZhciBIcj1jaVsxXS52Pj4xO2lmKDEmY2lbMV0udilzd2l0Y2goNyZIcil7Y2Fz''@;'; put 'put ''ZSAwOkhyPTVlMyooSHI+PjMpO2JyZWFrO2Nhc2UgMTpIcj01MDAqKEhyPj4zKTticmVhaztjYXNlIDI6SHI9KEhyPj4zKS8yMDticmVhaztjYXNlIDM6SHI9KEhyPj4zKS8yMDA7YnJlYWs7Y2FzZSA0OkhyPShIcj4+MykvMmUzO2JyZWFrO2Nhc2UgNTpIcj0oSHI+PjMpLzJlNDticmVhaztj''@;'; put 'put ''YXNlIDY6SHI9KEhyPj4zKS8xNjticmVhaztjYXNlIDc6SHI9KEhyPj4zKS82NH1yZXR1cm4gY2lbMV0udj1IcixjaX19LDI1OntuOiJGT1JNVUxBMTkiLGY6ZnVuY3Rpb24gbmkoenIsRGkpe3ZhciBjaT1Xcih6cik7cmV0dXJuIHpyLmwrPURpLTE0LGNpfX0sMjY6e246IkZPUk1VTEExQSJ9''@;'; put 'put ''LDI3OntuOiJYRk9STUFUIixmOmZ1bmN0aW9uIEowKHpyLERpKXtmb3IodmFyIGNpPXt9LEhyPXpyLmwrRGk7enIubDxIcjspe3ZhciBNaT16ci5yZWFkX3NoaWZ0KDIpO2lmKDE0ZTM9PU1pKXtmb3IoY2lbTWldPVswLCIiXSxjaVtNaV1bMF09enIucmVhZF9zaGlmdCgyKTt6clt6ci5sXTsp''@;'; put 'put ''Y2lbTWldWzFdKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHpyW3pyLmxdKSx6ci5sKys7enIubCsrfX1yZXR1cm4gY2l9fSwyODp7bjoiRFRMQUJFTE1JU0MifSwyOTp7bjoiRFRMQUJFTENFTEwifSwzMDp7bjoiR1JBUEhXSU5ET1cifSwzMTp7bjoiQ1BBIn0sMzI6e246IkxQTEFVVE8ifSwzMzp7''@;'; put 'put ''bjoiUVVFUlkifSwzNDp7bjoiSElEREVOU0hFRVQifSwzNTp7bjoiPz8ifSwzNzp7bjoiTlVNQkVSMjUiLGY6ZnVuY3Rpb24gZnIoenIsRGkpe3ZhciBjaT1paSh6ciksSHI9enIucmVhZF9zaGlmdCg0KTtyZXR1cm4gY2lbMV0udj1Icj4+NixjaX19LDM4OntuOiI/PyJ9LDM5OntuOiJOVU1C''@;'; put 'put ''RVIyNyIsZjpoaX0sNDA6e246IkZPUk1VTEEyOCIsZjpmdW5jdGlvbiB3MCh6cixEaSl7dmFyIGNpPWhpKHpyKTtyZXR1cm4genIubCs9RGktMTAsY2l9fSwxNDI6e246Ij8/In0sMTQ3OntuOiI/PyJ9LDE1MDp7bjoiPz8ifSwxNTE6e246Ij8/In0sMTUyOntuOiI/PyJ9LDE1Mzp7bjoiPz8i''@;'; put 'put ''fSwxNTQ6e246Ij8/In0sMTU1OntuOiI/PyJ9LDE1Njp7bjoiPz8ifSwxNjM6e246Ij8/In0sMTc0OntuOiI/PyJ9LDE3NTp7bjoiPz8ifSwxNzY6e246Ij8/In0sMTc3OntuOiI/PyJ9LDE4NDp7bjoiPz8ifSwxODU6e246Ij8/In0sMTg2OntuOiI/PyJ9LDE4Nzp7bjoiPz8ifSwxODg6e246''@;'; put 'put ''Ij8/In0sMTk1OntuOiI/PyJ9LDIwMTp7bjoiPz8ifSwyMDU6e246Ij8/In0sMjA2OntuOiI/PyJ9LDIwNzp7bjoiPz8ifSwyMDg6e246Ij8/In0sMjU2OntuOiI/PyJ9LDI1OTp7bjoiPz8ifSwyNjA6e246Ij8/In0sMjYxOntuOiI/PyJ9LDI2Mjp7bjoiPz8ifSwyNjM6e246Ij8/In0sMjY1''@;'; put 'put ''OntuOiI/PyJ9LDI2Njp7bjoiPz8ifSwyNjc6e246Ij8/In0sMjY4OntuOiI/PyJ9LDI3MDp7bjoiPz8ifSwyNzE6e246Ij8/In0sMzg0OntuOiI/PyJ9LDM4OTp7bjoiPz8ifSwzOTA6e246Ij8/In0sMzkzOntuOiI/PyJ9LDM5Njp7bjoiPz8ifSw1MTI6e246Ij8/In0sNTE0OntuOiI/PyJ9''@;'; put 'put ''LDUxMzp7bjoiPz8ifSw1MTY6e246Ij8/In0sNTE3OntuOiI/PyJ9LDY0MDp7bjoiPz8ifSw2NDE6e246Ij8/In0sNjQyOntuOiI/PyJ9LDY0Mzp7bjoiPz8ifSw2NDQ6e246Ij8/In0sNjQ1OntuOiI/PyJ9LDY0Njp7bjoiPz8ifSw2NDc6e246Ij8/In0sNjQ4OntuOiI/PyJ9LDY1ODp7bjoi''@;'; put 'put ''Pz8ifSw2NTk6e246Ij8/In0sNjYwOntuOiI/PyJ9LDY2MTp7bjoiPz8ifSw2NjI6e246Ij8/In0sNjY1OntuOiI/PyJ9LDY2Njp7bjoiPz8ifSw3Njg6e246Ij8/In0sNzcyOntuOiI/PyJ9LDE2MDA6e246Ij8/In0sMTYwMjp7bjoiPz8ifSwxNzkzOntuOiI/PyJ9LDE3OTQ6e246Ij8/In0s''@;'; put 'put ''MTc5NTp7bjoiPz8ifSwxNzk2OntuOiI/PyJ9LDE5MjA6e246Ij8/In0sMjA0ODp7bjoiPz8ifSwyMDQ5OntuOiI/PyJ9LDIwNTI6e246Ij8/In0sMjY4ODp7bjoiPz8ifSwxMDk5ODp7bjoiPz8ifSwxMjg0OTp7bjoiPz8ifSwyODIzMzp7bjoiPz8ifSwyODQ4NDp7bjoiPz8ifSw2NTUzNTp7''@;'; put 'put ''bjoiIn19O3JldHVybntzaGVldF90b193azE6ZnVuY3Rpb24gd2UoenIsRGkpe3ZhciBjaT1EaXx8e307aWYoK2NpLmNvZGVwYWdlPj0wJiZlZSgrY2kuY29kZXBhZ2UpLCJzdHJpbmciPT1jaS50eXBlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmciKTt2''@;'; put 'put ''YXIgSHI9djEoKSxNaT1lYSh6clsiIXJlZiJdKSxaMD1BcnJheS5pc0FycmF5KHpyKSxuMD1bXTtvMChIciwwLGZ1bmN0aW9uIEZlKHpyKXt2YXIgRGk9eGkoMik7cmV0dXJuIERpLndyaXRlX3NoaWZ0KDIsenIpLERpfSgxMDMwKSksbzAoSHIsNixmdW5jdGlvbiBVZSh6cil7dmFyIERpPXhp''@;'; put 'put ''KDgpO3JldHVybiBEaS53cml0ZV9zaGlmdCgyLHpyLnMuYyksRGkud3JpdGVfc2hpZnQoMix6ci5zLnIpLERpLndyaXRlX3NoaWZ0KDIsenIuZS5jKSxEaS53cml0ZV9zaGlmdCgyLHpyLmUuciksRGl9KE1pKSk7Zm9yKHZhciBmbz1NaS5zLnI7Zm88PU1pLmUucjsrK2ZvKWZvcih2YXIgaWE9''@;'; put 'put ''aGEoZm8pLFgwPU1pLnMuYztYMDw9TWkuZS5jOysrWDApe2ZvPT09TWkucy5yJiYobjBbWDBdPUxsKFgwKSk7dmFyIGcwPVowPyh6cltmb118fFtdKVtYMF06enJbbjBbWDBdK2lhXTtnMCYmInoiIT1nMC50JiYoIm4iPT1nMC50PygwfGcwLnYpPT1nMC52JiZnMC52Pj0tMzI3NjgmJmcwLnY8''@;'; put 'put ''PTMyNzY3P28wKEhyLDEzLGFuKGZvLFgwLGcwLnYpKTpvMChIciwxNCxMdChmbyxYMCxnMC52KSk6bzAoSHIsMTUsUHQoZm8sWDAsajEoZzApLnNsaWNlKDAsMjM5KSkpKX1yZXR1cm4gbzAoSHIsMSksSHIuZW5kKCl9LGJvb2tfdG9fd2szOmZ1bmN0aW9uIHhlKHpyLERpKXt2YXIgY2k9RGl8''@;'; put 'put ''fHt9O2lmKCtjaS5jb2RlcGFnZT49MCYmZWUoK2NpLmNvZGVwYWdlKSwic3RyaW5nIj09Y2kudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFyIEhyPXYxKCk7bzAoSHIsMCxmdW5jdGlvbiBaZSh6cil7dmFyIERpPXhpKDI2KTtEaS53cml0''@;'; put 'put ''ZV9zaGlmdCgyLDQwOTYpLERpLndyaXRlX3NoaWZ0KDIsNCksRGkud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIGNpPTAsSHI9MCxNaT0wLFowPTA7WjA8enIuU2hlZXROYW1lcy5sZW5ndGg7KytaMCl7dmFyIGZvPXpyLlNoZWV0c1t6ci5TaGVldE5hbWVzW1owXV07aWYoZm8mJmZvWyIhcmVm''@;'; put 'put ''Il0peysrTWk7dmFyIGlhPW5zKGZvWyIhcmVmIl0pO2NpPGlhLmUuciYmKGNpPWlhLmUuciksSHI8aWEuZS5jJiYoSHI9aWEuZS5jKX19cmV0dXJuIERpLndyaXRlX3NoaWZ0KDIsY2kpLERpLndyaXRlX3NoaWZ0KDEsTWkpLERpLndyaXRlX3NoaWZ0KDEsSHIpLERpLndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''MCksRGkud3JpdGVfc2hpZnQoMiwwKSxEaS53cml0ZV9zaGlmdCgxLDEpLERpLndyaXRlX3NoaWZ0KDEsMiksRGkud3JpdGVfc2hpZnQoNCwwKSxEaS53cml0ZV9zaGlmdCg0LDApLERpfSh6cikpO2Zvcih2YXIgTWk9MCxaMD0wO01pPHpyLlNoZWV0TmFtZXMubGVuZ3RoOysrTWkpKHpyLlNo''@;'; put 'put ''ZWV0c1t6ci5TaGVldE5hbWVzW01pXV18fHt9KVsiIXJlZiJdJiZvMChIciwyNyxpbyh6ci5TaGVldE5hbWVzW01pXSxaMCsrKSk7dmFyIG4wPTA7Zm9yKE1pPTA7TWk8enIuU2hlZXROYW1lcy5sZW5ndGg7KytNaSl7dmFyIGZvPXpyLlNoZWV0c1t6ci5TaGVldE5hbWVzW01pXV07aWYoZm8m''@;'; put 'put ''JmZvWyIhcmVmIl0pe2Zvcih2YXIgaWE9ZWEoZm9bIiFyZWYiXSksWDA9QXJyYXkuaXNBcnJheShmbyksemk9W10sZzA9aWEucy5yO2cwPD1pYS5lLnI7KytnMClmb3IodmFyIFMwPWhhKGcwKSxBaT1pYS5zLmM7QWk8PWlhLmUuYzsrK0FpKXtnMD09PWlhLnMuciYmKHppW0FpXT1MbChBaSkp''@;'; put 'put ''O3ZhciBmMD1YMD8oZm9bZzBdfHxbXSlbQWldOmZvW3ppW0FpXStTMF07ZjAmJiJ6IiE9ZjAudCYmKCJuIj09ZjAudD9vMChIciwyMyxhaShnMCxBaSxuMCxmMC52KSk6bzAoSHIsMjIsb2koZzAsQWksbjAsajEoZjApLnNsaWNlKDAsMjM5KSkpKX0rK24wfX1yZXR1cm4gbzAoSHIsMSksSHIu''@;'; put 'put ''ZW5kKCl9LHRvX3dvcmtib29rOmZ1bmN0aW9uIHJlKHpyLERpKXtzd2l0Y2goRGkudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBYKHooU2UuZGVjb2RlKHpyKSksRGkpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gWCh6KHpyKSxEaSk7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVybiBYKHpy''@;'; put 'put ''LERpKX10aHJvdyJVbnN1cHBvcnRlZCB0eXBlICIrRGkudHlwZX19fSgpLE44PWZ1bmN0aW9uKCl7dmFyIEg9SmkoInQiKSxyZT1KaSgiclByIik7ZnVuY3Rpb24gWChGZSl7dmFyIFplPUZlLm1hdGNoKEgpO2lmKCFaZSlyZXR1cm57dDoicyIsdjoiIn07dmFyIFZlPXt0OiJzIix2OmdyKFpl''@;'; put 'put ''WzFdKX0sVWU9RmUubWF0Y2gocmUpO3JldHVybiBVZSYmKFZlLnM9ZnVuY3Rpb24ga2goSCl7dmFyIHJlPXt9LFg9SC5tYXRjaChHdCksd2U9MCx4ZT0hMTtpZihYKWZvcig7d2UhPVgubGVuZ3RoOysrd2Upe3ZhciBGZT1xdChYW3dlXSk7c3dpdGNoKEZlWzBdLnJlcGxhY2UoL1x3KjovZywi''@;'; put 'put ''Iikpe2Nhc2UiPGNvbmRlbnNlIjpjYXNlIjxleHRlbmQiOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aWYoIUZlLnZhbClicmVhaztjYXNlIjxzaGFkb3c+IjpjYXNlIjxzaGFkb3cvPiI6cmUuc2hhZG93PTE7YnJlYWs7Y2FzZSI8L3NoYWRvdz4iOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKCIxIj09''@;'; put 'put ''RmUudmFsKWJyZWFrO3JlLmNwPVlbcGFyc2VJbnQoRmUudmFsLDEwKV07YnJlYWs7Y2FzZSI8b3V0bGluZSI6aWYoIUZlLnZhbClicmVhaztjYXNlIjxvdXRsaW5lPiI6Y2FzZSI8b3V0bGluZS8+IjpyZS5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpicmVhaztjYXNlIjxyRm9u''@;'; put 'put ''dCI6cmUubmFtZT1GZS52YWw7YnJlYWs7Y2FzZSI8c3oiOnJlLnN6PUZlLnZhbDticmVhaztjYXNlIjxzdHJpa2UiOmlmKCFGZS52YWwpYnJlYWs7Y2FzZSI8c3RyaWtlPiI6Y2FzZSI8c3RyaWtlLz4iOnJlLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPC9zdHJpa2U+IjpicmVhaztjYXNlIjx1Ijpp''@;'; put 'put ''ZighRmUudmFsKWJyZWFrO3N3aXRjaChGZS52YWwpe2Nhc2UiZG91YmxlIjpyZS51bmRlcmxpbmU9MjticmVhaztjYXNlInNpbmdsZUFjY291bnRpbmciOnJlLnVuZGVybGluZT0zMzticmVhaztjYXNlImRvdWJsZUFjY291bnRpbmciOnJlLnVuZGVybGluZT0zNH1jYXNlIjx1PiI6Y2FzZSI8''@;'; put 'put ''dS8+IjpyZS51bmRlcmxpbmV8fChyZS51bmRlcmxpbmU9MSk7YnJlYWs7Y2FzZSI8L3U+IjpicmVhaztjYXNlIjxiIjppZigiMCI9PUZlLnZhbClicmVhaztjYXNlIjxiPiI6Y2FzZSI8Yi8+IjpyZS5ib2xkPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjppZigiMCI9PUZlLnZh''@;'; put 'put ''bClicmVhaztjYXNlIjxpPiI6Y2FzZSI8aS8+IjpyZS5pdGFsaWM9MTticmVhaztjYXNlIjwvaT4iOmJyZWFrO2Nhc2UiPGNvbG9yIjpGZS5yZ2ImJihyZS5jb2xvcj17cmdiOjg9PUZlLnJnYi5sZW5ndGg/RmUucmdiLnNsaWNlKDIsOCk6KCIwMDAwMDAiK0ZlLnJnYikuc2xpY2UoLTYpfSk7''@;'; put 'put ''YnJlYWs7Y2FzZSI8ZmFtaWx5IjpyZS5mYW1pbHk9RmUudmFsO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbiI6Im5vbmUiIT0oRmUudmFsfHwibm9uZSIpJiYocmUudmFsaWduPUZlLnZhbC5yZXBsYWNlKCJzY3JpcHQiLCIiKSk7YnJlYWs7Y2FzZSI8c2NoZW1lIjpjYXNlIjxleHRMc3QiOmNhc2Ui''@;'; put 'put ''PGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOnhlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp4ZT0hMTticmVhaztkZWZhdWx0OmlmKDQ3IT09RmVbMF0uY2hhckNvZGVBdCgxKSYmIXhlKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHJpY2ggZm9ybWF0ICIr''@;'; put 'put ''RmVbMF0pfX1yZXR1cm4gcmV9KFVlWzFdKSksVmV9dmFyIHdlPS88KD86XHcrOik/cj4vZyx4ZT0vPFwvKD86XHcrOik/cj4vO3JldHVybiBmdW5jdGlvbihaZSl7cmV0dXJuIFplLnJlcGxhY2Uod2UsIiIpLnNwbGl0KHhlKS5tYXAoWCkuZmlsdGVyKGZ1bmN0aW9uKFZlKXtyZXR1cm4gVmUu''@;'; put 'put ''dn0pfX0oKSx4Yj17MToic2luZ2xlIiwyOiJkb3VibGUiLDMzOiJzaW5nbGUtYWNjb3VudGluZyIsMzQ6ImRvdWJsZS1hY2NvdW50aW5nIn0sU2g9ZnVuY3Rpb24oKXt2YXIgcmU9LyhcclxufFxuKS9nO2Z1bmN0aW9uIHdlKHhlKXt2YXIgRmU9W1tdLHhlLnYsW11dO3JldHVybiB4ZS52Pyh4''@;'; put 'put ''ZS5zJiZmdW5jdGlvbiBYKHhlLEZlLFplKXt2YXIgVmU9W107eGUudW5kZXJsaW5lJiZWZS5wdXNoKCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiKSx4ZS51bmRlcmxpbmU+MSYmVmUucHVzaCgidGV4dC11bmRlcmxpbmUtc3R5bGU6Iit4Ylt4ZS51bmRlcmxpbmVdKyI7IikseGUuc3om''@;'; put 'put ''JlZlLnB1c2goImZvbnQtc2l6ZToiK3hlLnN6KyJwdDsiKSx4ZS5vdXRsaW5lJiZWZS5wdXNoKCJ0ZXh0LWVmZmVjdDogb3V0bGluZTsiKSx4ZS5zaGFkb3cmJlZlLnB1c2goInRleHQtc2hhZG93OiBhdXRvOyIpLHhlLmNvbG9yJiZ4ZS5jb2xvci5yZ2ImJlZlLnB1c2goImNvbG9yOiAjIitJ''@;'; put 'put ''byh4ZS5jb2xvci5yZ2IpKyI7IiksRmUucHVzaCgnPHNwYW4gc3R5bGU9IicrVmUuam9pbigiIikrJyI+JykseGUuYm9sZCYmKEZlLnB1c2goIjxiPiIpLFplLnB1c2goIjwvYj4iKSkseGUuaXRhbGljJiYoRmUucHVzaCgiPGk+IiksWmUucHVzaCgiPC9pPiIpKSx4ZS5zdHJpa2UmJihGZS5w''@;'; put 'put ''dXNoKCI8cz4iKSxaZS5wdXNoKCI8L3M+IikpO3ZhciBVZT14ZS52YWxpZ258fCIiOyJzdXBlcnNjcmlwdCI9PVVlfHwic3VwZXIiPT1VZT9VZT0ic3VwIjoic3Vic2NyaXB0Ij09VWUmJihVZT0ic3ViIiksIiIhPVVlJiYoRmUucHVzaCgiPCIrVWUrIj4iKSxaZS5wdXNoKCI8LyIrVWUrIj4i''@;'; put 'put ''KSksWmUucHVzaCgiPC9zcGFuPiIpfSh4ZS5zLEZlWzBdLEZlWzJdKSxGZVswXS5qb2luKCIiKStGZVsxXS5yZXBsYWNlKHJlLCI8YnIvPiIpK0ZlWzJdLmpvaW4oIiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oRmUpe3JldHVybiBGZS5tYXAod2UpLmpvaW4oIiIpfX0oKTtmdW5jdGlvbiB0NihI''@;'; put 'put ''KXtyZXR1cm4gSC5tYXAoZnVuY3Rpb24oWCl7cmV0dXJuIGZ1bmN0aW9uIGdhKEgpe3ZhciByZT0iIixYPVtdO3JldHVybiBILnMmJihILnMuYm9sZCYmWC5wdXNoKCI8Yi8+IiksSC5zLml0YWxpYyYmWC5wdXNoKCI8aS8+IiksSC5zLnN0cmlrZSYmWC5wdXNoKCI8c3RyaWtlLz4iKSxILnMu''@;'; put 'put ''dW5kZXJsaW5lJiZYLnB1c2goJzx1IHZhbD0iJysoejlbSC5zLnVuZGVybGluZV18fCJzaW5nbGUiKSsnIi8+JyksSC5zLmNvbG9yJiZYLnB1c2godnMoSC5zLmNvbG9yKSksSC5zLnN6JiZYLnB1c2goJzxzeiB2YWw9IicrSC5zLnN6KyciLz4nKSxILnMubmFtZSYmWC5wdXNoKCc8ckZvbnQg''@;'; put 'put ''dmFsPSInK0gucy5uYW1lKyciLz4nKSwoInN1cGVyIj09SC5zLnZhbGlnbnx8InN1YiI9PUgucy52YWxpZ24pJiZYLnB1c2goJzx2ZXJ0QWxpZ24gdmFsPSInK0gucy52YWxpZ24rJ3NjcmlwdCIvPicpKSxYLmxlbmd0aCYmKHJlKz0iPHJQcj4iK1guam9pbigiIikrIjwvclByPiIpLCI8cj4i''@;'; put 'put ''KyhyZSs9U2koInQiLE9yKEgudiksbnVsbCkpKyI8L3I+In0oWCl9KS5qb2luKCIiKX12YXIgb2w9LzwoPzpcdys6KT90W14+XSo+KFtePF0qKTxcLyg/Olx3KzopP3Q+L2csR2Y9LzwoPzpcdys6KT9yXGJbXj5dKj4vLEdjPS88KD86XHcrOik/clBoLio/PihbXHNcU10qPyk8XC8oPzpcdys6''@;'; put 'put ''KT9yUGg+L2c7ZnVuY3Rpb24gVTEoSCxyZSl7dmFyIFg9IXJlfHxyZS5jZWxsSFRNTCx3ZT17fTtyZXR1cm4gSD8oSC5tYXRjaCgvXlxzKjwoPzpcdys6KT90W14+XSo+Lyk/KHdlLnQ9Z3IoajAoSC5zbGljZShILmluZGV4T2YoIj4iKSsxKS5zcGxpdCgvPFwvKD86XHcrOik/dD4vKVswXXx8''@;'; put 'put ''IiIpKSx3ZS5yPWowKEgpLFgmJih3ZS5oPWUwKHdlLnQpKSk6SC5tYXRjaChHZikmJih3ZS5yPWowKEgpLHdlLnQ9Z3IoajAoKEgucmVwbGFjZShHYywiIikubWF0Y2gob2wpfHxbXSkuam9pbigiIikucmVwbGFjZShHdCwiIikpKSx3ZS5SPU44KHdlLnIpLFgmJih3ZS5oPVNoKHdlLlIpKSks''@;'; put 'put ''d2UpOnt0OiIifX12YXIgWG89LzwoPzpcdys6KT9zc3QoW14+XSopPihbXHNcU10qKTxcLyg/Olx3KzopP3NzdD4vLGIzPS88KD86XHcrOik/KD86c2l8c3N0SXRlbSk+L2csV2Y9LzxcLyg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi87ZHQuU1NUPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9y''@;'; put 'put ''bWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiO3ZhciBkbT0vXlxzfFxzJHxbXHRcblxyXS87ZnVuY3Rpb24gZ0UoSCxyZSl7aWYoIXJlLmJvb2tTU1QpcmV0dXJuIiI7dmFyIFg9W2NuXTtYW1gubGVuZ3RoXT1TaSgic3N0IixudWxsLHt4''@;'; put 'put ''bWxuczpXMC5tYWluWzBdLGNvdW50OkguQ291bnQsdW5pcXVlQ291bnQ6SC5VbmlxdWV9KTtmb3IodmFyIHdlPTA7d2UhPUgubGVuZ3RoOysrd2UpaWYobnVsbCE9SFt3ZV0pe3ZhciB4ZT1IW3dlXSxGZT0iPHNpPiI7eGUucj9GZSs9eGUucjooRmUrPSI8dCIseGUudHx8KHhlLnQ9IiIpLHhl''@;'; put 'put ''LnQubWF0Y2goZG0pJiYoRmUrPScgeG1sOnNwYWNlPSJwcmVzZXJ2ZSInKSxGZSs9Ij4iK09yKHhlLnQpKyI8L3Q+IiksWFtYLmxlbmd0aF09RmUrPSI8L3NpPiJ9cmV0dXJuIFgubGVuZ3RoPjImJihYW1gubGVuZ3RoXT0iPC9zc3Q+IixYWzFdPVhbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFgu''@;'; put 'put ''am9pbigiIil9dmFyIFlSPWZ1bmN0aW9uIFdnKEgscmUsWCl7dmFyIHdlPTEzKzQqSC50Lmxlbmd0aCx4ZT1ILlImJkguUi5sZW5ndGh8fEgucjtILnImJihILlI9TjgoSC5yKSkseGUmJih3ZSs9NCs0KkguUi5sZW5ndGgpO3ZhciBGZT0hMTtpZihudWxsPT1YJiYoRmU9ITAsWD14aSh3ZSkp''@;'; put 'put ''LFgud3JpdGVfc2hpZnQoMSx4ZT8xOjApLHN1KEgudCxYKSx4ZSl7WC53cml0ZV9zaGlmdCg0LEguUi5sZW5ndGgpO2Zvcih2YXIgWmU9MCxWZT0wO1ZlPEguUi5sZW5ndGg7KytWZSl7dmFyIFVlPUguUltWZV07WC53cml0ZV9zaGlmdCgyLFplKSxaZSs9KFVlLnZ8fCIiKS5sZW5ndGg7dmFy''@;'; put 'put ''IFN0PVVlLnM/cmMocmUuY2VsbFhmcyxyZS5jZWxsU3R5bGVYZnMse3Q6Im4iLHY6MCxzOlVlLnN9LHJlKTowO1gud3JpdGVfc2hpZnQoMixyZS5jZWxsWGZzW1N0XS5mb250SWQpfX1yZXR1cm4gRmU/WC5zbGljZSgwLFgubCk6WH07ZnVuY3Rpb24gVVIoSCxyZSl7dmFyIFg9djEoKTtDMChY''@;'; put 'put ''LCJCcnRCZWdpblNzdCIsZnVuY3Rpb24gbUUoSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoOCkpLHJlLndyaXRlX3NoaWZ0KDQsSC5Db3VudCkscmUud3JpdGVfc2hpZnQoNCxILlVuaXF1ZSkscmV9KEgpKTtmb3IodmFyIHdlPTA7d2U8SC5sZW5ndGg7Kyt3ZSlDMChYLCJCcnRTU1RJdGVtIixZ''@;'; put 'put ''UihIW3dlXSxyZSkpO3JldHVybiBDMChYLCJCcnRFbmRTc3QiKSxYLmVuZCgpfWZ1bmN0aW9uIFY4KEgpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3B0YWJsZSlyZXR1cm4gY3B0YWJsZS51dGlscy5lbmNvZGUoWixIKTtmb3IodmFyIHJlPVtdLFg9SC5zcGxpdCgiIiksd2U9MDt3ZTxYLmxl''@;'; put 'put ''bmd0aDsrK3dlKXJlW3dlXT1YW3dlXS5jaGFyQ29kZUF0KDApO3JldHVybiByZX1mdW5jdGlvbiBfMyhILHJlKXt2YXIgWD17fTtyZXR1cm4gWC5NYWpvcj1ILnJlYWRfc2hpZnQoMiksWC5NaW5vcj1ILnJlYWRfc2hpZnQoMikscmU+PTQmJihILmwrPXJlLTQpLFh9ZnVuY3Rpb24gcG0oSCl7''@;'; put 'put ''Zm9yKHZhciByZT1ILnJlYWRfc2hpZnQoNCksWD1ILmwrcmUtNCx3ZT17fSx4ZT1ILnJlYWRfc2hpZnQoNCksRmU9W107eGUtLSA+MDspRmUucHVzaCh7dDpILnJlYWRfc2hpZnQoNCksdjpILnJlYWRfc2hpZnQoMCwibHBwNCIpfSk7aWYod2UubmFtZT1ILnJlYWRfc2hpZnQoMCwibHBwNCIp''@;'; put 'put ''LHdlLmNvbXBzPUZlLEgubCE9WCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBEYXRhU3BhY2VNYXBFbnRyeTogIitILmwrIiAhPSAiK1gpO3JldHVybiB3ZX1mdW5jdGlvbiBKUihILHJlKXt2YXIgWD1ILmwrcmUsd2U9e307d2UuRmxhZ3M9NjMmSC5yZWFkX3NoaWZ0KDQpLEgubCs9NCx3ZS5BbGdJ''@;'; put 'put ''RD1ILnJlYWRfc2hpZnQoNCk7dmFyIHhlPSExO3N3aXRjaCh3ZS5BbGdJRCl7Y2FzZSAyNjEyNjpjYXNlIDI2MTI3OmNhc2UgMjYxMjg6eGU9MzY9PXdlLkZsYWdzO2JyZWFrO2Nhc2UgMjY2MjU6eGU9ND09KDUyJndlLkZsYWdzKTticmVhaztjYXNlIDA6eGU9MTY9PXdlLkZsYWdzfHw0PT13''@;'; put 'put ''ZS5GbGFnc3x8MzY9PXdlLkZsYWdzO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAiK3dlLkFsZ0lEfWlmKCF4ZSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gRmxhZ3MvQWxnSUQgbWlzbWF0Y2giKTtyZXR1cm4gd2UuQWxnSURIYXNo''@;'; put 'put ''PUgucmVhZF9zaGlmdCg0KSx3ZS5LZXlTaXplPUgucmVhZF9zaGlmdCg0KSx3ZS5Qcm92aWRlclR5cGU9SC5yZWFkX3NoaWZ0KDQpLEgubCs9OCx3ZS5DU1BOYW1lPUgucmVhZF9zaGlmdChYLUgubD4+MSwidXRmMTZsZSIpLEgubD1YLHdlfWZ1bmN0aW9uIFhSKEgscmUpe3ZhciBYPXt9LHdl''@;'; put 'put ''PUgubCtyZTtyZXR1cm4gSC5sKz00LFguU2FsdD1ILnNsaWNlKEgubCxILmwrMTYpLEgubCs9MTYsWC5WZXJpZmllcj1ILnNsaWNlKEgubCxILmwrMTYpLEgubCs9MTYsSC5yZWFkX3NoaWZ0KDQpLFguVmVyaWZpZXJIYXNoPUguc2xpY2UoSC5sLHdlKSxILmw9d2UsWH1mdW5jdGlvbiBJYihI''@;'; put 'put ''KXtpZigzNiE9KDYzJkgucmVhZF9zaGlmdCg0KSkpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uSW5mbyBtaXNtYXRjaCIpO3ZhciBYPUgucmVhZF9zaGlmdCg0KTtyZXR1cm57dDoiU3RkIixoOkpSKEgsWCksdjpYUihILEgubGVuZ3RoLUgubCl9fWZ1bmN0aW9uIERiKCl7dGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZSIpfWZ1bmN0aW9uIGJHKEgpe3ZhciByZT1bInNhbHRTaXplIiwiYmxvY2tTaXplIiwia2V5Qml0cyIsImhhc2hTaXplIiwiY2lwaGVyQWxnb3JpdGhtIiwiY2lwaGVyQ2hhaW5pbmciLCJoYXNo''@;'; put 'put ''QWxnb3JpdGhtIiwic2FsdFZhbHVlIl07SC5sKz00O3ZhciBYPUgucmVhZF9zaGlmdChILmxlbmd0aC1ILmwsInV0ZjgiKSx3ZT17fTtyZXR1cm4gWC5yZXBsYWNlKEd0LGZ1bmN0aW9uKEZlKXt2YXIgWmU9cXQoRmUpO3N3aXRjaChMbihaZVswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPGVuY3J5''@;'; put 'put ''cHRpb24iOmNhc2UiPC9lbmNyeXB0aW9uPiI6Y2FzZSI8L2tleUVuY3J5cHRvcnM+IjpjYXNlIjwva2V5RW5jcnlwdG9yPiI6YnJlYWs7Y2FzZSI8a2V5RGF0YSI6cmUuZm9yRWFjaChmdW5jdGlvbihWZSl7d2VbVmVdPVplW1ZlXX0pO2JyZWFrO2Nhc2UiPGRhdGFJbnRlZ3JpdHkiOndlLmVu''@;'; put 'put ''Y3J5cHRlZEhtYWNLZXk9WmUuZW5jcnlwdGVkSG1hY0tleSx3ZS5lbmNyeXB0ZWRIbWFjVmFsdWU9WmUuZW5jcnlwdGVkSG1hY1ZhbHVlO2JyZWFrO2Nhc2UiPGtleUVuY3J5cHRvcnM+IjpjYXNlIjxrZXlFbmNyeXB0b3JzIjp3ZS5lbmNzPVtdO2JyZWFrO2Nhc2UiPGtleUVuY3J5cHRvciI6''@;'; put 'put ''d2UudXJpPVplLnVyaTticmVhaztjYXNlIjxlbmNyeXB0ZWRLZXkiOndlLmVuY3MucHVzaChaZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBaZVswXX19KSx3ZX1mdW5jdGlvbiBMYihIKXt2YXIgWCxGZSxyZT0wLHdlPVY4KEgpLHhlPXdlLmxlbmd0aCsxO2ZvcigoWD1oZSh4ZSkpWzBdPXdlLmxl''@;'; put 'put ''bmd0aCxGZT0xO0ZlIT14ZTsrK0ZlKVhbRmVdPXdlW0ZlLTFdO2ZvcihGZT14ZS0xO0ZlPj0wOy0tRmUpcmU9KCgwPT0oMTYzODQmcmUpPzA6MSl8cmU8PDEmMzI3NjcpXlhbRmVdO3JldHVybiA1MjgxMV5yZX12YXIgTzk9ZnVuY3Rpb24oKXt2YXIgSD1bMTg3LDI1NSwyNTUsMTg2LDI1NSwy''@;'; put 'put ''NTUsMTg1LDEyOCwwLDE5MCwxNSwwLDE5MSwxNSwwXSxyZT1bNTc4NDAsNzQzOSw1MjM4MCwzMzk4NCw0MzY0LDM2MDAsNjE5MDIsMTI2MDYsNjI1OCw1NzY1Nyw1NDI4NywzNDA0MSwxMDI1Miw0MzM3MCwyMDE2M10sWD1bNDQ3OTYsMTk5MjksMzk4NTgsMTAwNTMsMjAxMDYsNDAyMTIsMTA3''@;'; put 'put ''NjEsMzE1ODUsNjMxNzAsNjQ5MzMsNjAyNjcsNTA5MzUsNDAzOTksMTExOTksMTc3NjMsMzU1MjYsMTQ1MywyOTA2LDU4MTIsMTE2MjQsMjMyNDgsODg1LDE3NzAsMzU0MCw3MDgwLDE0MTYwLDI4MzIwLDU2NjQwLDU1MzY5LDQxMTM5LDIwODA3LDQxNjE0LDIxODIxLDQzNjQyLDE3NjIxLDI4''@;'; put 'put ''NDg1LDU2OTcwLDQ0MzQxLDE5MDE5LDM4MDM4LDE0NjA1LDI5MjEwLDYwMTk1LDUwNzkxLDQwMTc1LDEwNzUxLDIxNTAyLDQzMDA0LDI0NTM3LDE4Mzg3LDM2Nzc0LDM5NDksNzg5OCwxNTc5NiwzMTU5Miw2MzE4NCw0NzIwMSwyNDgwMyw0OTYwNiwzNzgwNSwxNDIwMywyODQwNiw1NjgxMiwx''@;'; put 'put ''NzgyNCwzNTY0OCwxNjk3LDMzOTQsNjc4OCwxMzU3NiwyNzE1Miw0MzYwMSwxNzUzOSwzNTA3OCw1NTcsMTExNCwyMjI4LDQ0NTYsMzAzODgsNjA3NzYsNTE5NTMsMzQyNDMsNzA3OSwxNDE1OCwyODMxNiwxNDEyOCwyODI1Niw1NjUxMiw0MzQyNSwxNzI1MSwzNDUwMiw3NTk3LDEzMTA1LDI2''@;'; put 'put ''MjEwLDUyNDIwLDM1MjQxLDg4MywxNzY2LDM1MzIsNDEyOSw4MjU4LDE2NTE2LDMzMDMyLDQ2NTcsOTMxNCwxODYyOF0seGU9ZnVuY3Rpb24oWmUsVmUpe3JldHVybiBmdW5jdGlvbihaZSl7cmV0dXJuIDI1NSYoWmU+PjF8WmU8PDcpfShaZV5WZSl9O3JldHVybiBmdW5jdGlvbihWZSl7Zm9y''@;'; put 'put ''KHZhciBVZT1WOChWZSksU3Q9ZnVuY3Rpb24oWmUpe2Zvcih2YXIgVmU9cmVbWmUubGVuZ3RoLTFdLFVlPTEwNCxTdD1aZS5sZW5ndGgtMTtTdD49MDstLVN0KWZvcih2YXIgSXQ9WmVbU3RdLFB0PTA7NyE9UHQ7KytQdCk2NCZJdCYmKFZlXj1YW1VlXSksSXQqPTIsLS1VZTtyZXR1cm4gVmV9''@;'; put 'put ''KFVlKSxJdD1VZS5sZW5ndGgsUHQ9aGUoMTYpLFF0PTA7MTYhPVF0OysrUXQpUHRbUXRdPTA7dmFyIEx0O2ZvcigxPT0oMSZJdCkmJihQdFtJdF09eGUoSFswXSxTdD4+OCksUHRbLS1JdF09eGUoVWVbVWUubGVuZ3RoLTFdLDI1NSZTdCkpO0l0PjA7KVB0Wy0tSXRdPXhlKFVlW0l0XSxTdD4+''@;'; put 'put ''OCksUHRbLS1JdF09eGUoVWVbSXRdLDI1NSZTdCk7Zm9yKEl0PTE1LEx0PTE1LVVlLmxlbmd0aDtMdD4wOylQdFtJdF09eGUoSFtMdF0sU3Q+PjgpLC0tTHQsUHRbLS1JdF09eGUoVWVbSXRdLDI1NSZTdCksLS1JdCwtLUx0O3JldHVybiBQdH19KCk7dmFyIGdtPWZ1bmN0aW9uKCl7ZnVuY3Rp''@;'; put 'put ''b24gSCh4ZSxGZSl7c3dpdGNoKEZlLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gcmUoU2UuZGVjb2RlKHhlKSxGZSk7Y2FzZSJiaW5hcnkiOnJldHVybiByZSh4ZSxGZSk7Y2FzZSJidWZmZXIiOnJldHVybiByZSh4ZS50b1N0cmluZygiYmluYXJ5IiksRmUpO2Nhc2UiYXJyYXkiOnJldHVy''@;'; put 'put ''biByZShibih4ZSksRmUpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitGZS50eXBlKX1mdW5jdGlvbiByZSh4ZSxGZSl7dmFyIFZlPShGZXx8e30pLmRlbnNlP1tdOnt9O2lmKCF4ZS5tYXRjaCgvXFx0cm93ZC8pKXRocm93IG5ldyBFcnJvcigiUlRGIG1pc3NpbmcgdGFi''@;'; put 'put ''bGUiKTtyZXR1cm4gVmVbIiFyZWYiXT1BYSh7czp7YzowLHI6MH0sZTp7YzowLHI6MH19KSxWZX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gWCh4ZSxGZSl7cmV0dXJuIG1jKEgoeGUsRmUpLEZlKX0sdG9fc2hlZXQ6SCxmcm9tX3NoZWV0OmZ1bmN0aW9uIHdlKHhlKXtmb3IodmFyIFZl''@;'; put 'put ''LEZlPVsie1xccnRmMVxcYW5zaSJdLFplPWVhKHhlWyIhcmVmIl0pLFVlPUFycmF5LmlzQXJyYXkoeGUpLFN0PVplLnMucjtTdDw9WmUuZS5yOysrU3Qpe0ZlLnB1c2goIlxcdHJvd2RcXHRyYXV0b2ZpdDEiKTtmb3IodmFyIEl0PVplLnMuYztJdDw9WmUuZS5jOysrSXQpRmUucHVzaCgiXFxj''@;'; put 'put ''ZWxseCIrKEl0KzEpKTtmb3IoRmUucHVzaCgiXFxwYXJkXFxpbnRibCIpLEl0PVplLnMuYztJdDw9WmUuZS5jOysrSXQpe3ZhciBQdD1RMCh7cjpTdCxjOkl0fSk7KFZlPVVlPyh4ZVtTdF18fFtdKVtJdF06eGVbUHRdKSYmKG51bGwhPVZlLnZ8fFZlLmYmJiFWZS5GKSYmKEZlLnB1c2goIiAi''@;'; put 'put ''KyhWZS53fHwoajEoVmUpLFZlLncpKSksRmUucHVzaCgiXFxjZWxsIikpfUZlLnB1c2goIlxccGFyZFxcaW50YmxcXHJvdyIpfXJldHVybiBGZS5qb2luKCIiKSsifSJ9fX0oKTtmdW5jdGlvbiBCOShIKXt2YXIgcmU9SC5zbGljZSgiIyI9PT1IWzBdPzE6MCkuc2xpY2UoMCw2KTtyZXR1cm5b''@;'; put 'put ''cGFyc2VJbnQocmUuc2xpY2UoMCwyKSwxNikscGFyc2VJbnQocmUuc2xpY2UoMiw0KSwxNikscGFyc2VJbnQocmUuc2xpY2UoNCw2KSwxNildfWZ1bmN0aW9uIFdsKEgpe2Zvcih2YXIgcmU9MCxYPTE7MyE9cmU7KytyZSlYPTI1NipYKyhIW3JlXT4yNTU/MjU1OkhbcmVdPDA/MDpIW3JlXSk7''@;'; put 'put ''cmV0dXJuIFgudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSl9ZnVuY3Rpb24gZ2YoSCxyZSl7aWYobnVsbD09SClyZXR1cm4gbnVsbCE9cmU7aWYobnVsbD09cmUpcmV0dXJuITA7aWYoMT09SC5hdXRvJiYxPT1yZS5hdXRvKXJldHVybiExO2lmKCEhSC5hdXRvIT0hIXJlLmF1''@;'; put 'put ''dG98fG51bGw9PUgudGhlbWUhPShudWxsPT1yZS50aGVtZSkpcmV0dXJuITA7aWYobnVsbCE9SC50aGVtZSlyZXR1cm4gSC50aGVtZSE9cmUudGhlbWV8fEgudGludCE9cmUudGludDtpZihudWxsPT1ILnJnYiYmbnVsbD09cmUucmdiKXJldHVybiExO3ZhciBYPUgucmdiOyJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgWCYmKFg9WC50b1N0cmluZygxNikpLFg9WC5zbGljZSgtNik7dmFyIHdlPXJlLnJnYjtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHdlJiYod2U9d2UudG9TdHJpbmcoMTYpKSx3ZT13ZS5zbGljZSgtNiksWC50b0xvd2VyQ2FzZSgpIT13ZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIENF''@;'; put 'put ''KEgscmUpe3JldHVybiBudWxsPT1IP251bGwhPXJlOm51bGw9PXJlP251bGwhPUg6SC5zdHlsZSE9cmUuc3R5bGV8fGdmKEguY29sb3IscmUuY29sb3IpfWZ1bmN0aW9uIHZtKEgscmUpe2lmKDA9PT1yZSlyZXR1cm4gSDt2YXIgWD1mdW5jdGlvbiBtbShIKXt2YXIgcmU9SFswXS8yNTUsWD1I''@;'; put 'put ''WzFdLzI1NSx3ZT1IWzJdLzI1NSx4ZT1NYXRoLm1heChyZSxYLHdlKSxGZT1NYXRoLm1pbihyZSxYLHdlKSxaZT14ZS1GZTtpZigwPT09WmUpcmV0dXJuWzAsMCxyZV07dmFyIFVlLFZlPTAsU3Q9eGUrRmU7c3dpdGNoKFVlPVplLyhTdD4xPzItU3Q6U3QpLHhlKXtjYXNlIHJlOlZlPSgoWC13''@;'; put 'put ''ZSkvWmUrNiklNjticmVhaztjYXNlIFg6VmU9KHdlLXJlKS9aZSsyO2JyZWFrO2Nhc2Ugd2U6VmU9KHJlLVgpL1plKzR9cmV0dXJuW1ZlLzYsVWUsU3QvMl19KEI5KEgpKTtyZXR1cm4gWFsyXT1yZTwwP1hbMl0qKDErcmUpOjEtKDEtWFsyXSkqKDEtcmUpLFdsKGZ1bmN0aW9uIF9FKEgpe3Zh''@;'; put 'put ''ciBVZSxYPUhbMV0sd2U9SFsyXSx4ZT0yKlgqKHdlPC41P3dlOjEtd2UpLEZlPXdlLXhlLzIsWmU9W0ZlLEZlLEZlXSxWZT02KkhbMF07aWYoMCE9PVgpc3dpdGNoKDB8VmUpe2Nhc2UgMDpjYXNlIDY6VWU9eGUqVmUsWmVbMF0rPXhlLFplWzFdKz1VZTticmVhaztjYXNlIDE6WmVbMF0rPVVl''@;'; put 'put ''PXhlKigyLVZlKSxaZVsxXSs9eGU7YnJlYWs7Y2FzZSAyOlVlPXhlKihWZS0yKSxaZVsxXSs9eGUsWmVbMl0rPVVlO2JyZWFrO2Nhc2UgMzpaZVsxXSs9VWU9eGUqKDQtVmUpLFplWzJdKz14ZTticmVhaztjYXNlIDQ6VWU9eGUqKFZlLTQpLFplWzJdKz14ZSxaZVswXSs9VWU7YnJlYWs7Y2Fz''@;'; put 'put ''ZSA1OlplWzJdKz1VZT14ZSooNi1WZSksWmVbMF0rPXhlfWZvcih2YXIgU3Q9MDszIT1TdDsrK1N0KVplW1N0XT1NYXRoLnJvdW5kKDI1NSpaZVtTdF0pO3JldHVybiBaZX0oWCkpfXZhciB0MT02O2Z1bmN0aW9uIFA5KEgpe3JldHVybiBNYXRoLmZsb29yKChIK01hdGgucm91bmQoMTI4L3Qx''@;'; put 'put ''KS8yNTYpKnQxKX1mdW5jdGlvbiBGOShIKXtyZXR1cm4gTWF0aC5mbG9vcigoSC01KS90MSoxMDArLjUpLzEwMH1mdW5jdGlvbiBENChIKXtyZXR1cm4gTWF0aC5yb3VuZCgoSCp0MSs1KS90MSoyNTYpLzI1Nn1mdW5jdGlvbiBiYyhIKXtILmJlc3RGaXQmJmRlbGV0ZSBILmJlc3RGaXQsSC53''@;'; put 'put ''aWR0aD8oSC53cHg9UDkoSC53aWR0aCksSC53Y2g9RjkoSC53cHgpLEguTURXPXQxKTpILndweD8oSC53Y2g9RjkoSC53cHgpLEgud2lkdGg9RDQoSC53Y2gpLEguTURXPXQxKToibnVtYmVyIj09dHlwZW9mIEgud2NoJiYoSC53aWR0aD1ENChILndjaCksSC53cHg9UDkoSC53aWR0aCksSC5N''@;'; put 'put ''RFc9dDEpLEguY3VzdG9tV2lkdGgmJmRlbGV0ZSBILmN1c3RvbVdpZHRofXZhciBuNj05NjtmdW5jdGlvbiBVZihIKXtyZXR1cm4gNzIqSC9uNn1mdW5jdGlvbiBtZihIKXtyZXR1cm4gSCpuNi83Mn1mdW5jdGlvbiBNaChIKXtuNj1IPXtvc3g6NzIsd2luOjk2LHdpbjEwMDo5Nix3aW4xMjU6''@;'; put 'put ''MTIwLHdpbjE1MDoxNDR9W0hdfHxIfHw5Nix5bT1RZltIXX1mdW5jdGlvbiBSYihIKXtILmhweD9ILmhwdD1VZihILmhweCk6SC5ocHQmJihILmhweD1tZihILmhwdCkpfXZhciBTRT17Tm9uZToibm9uZSIsU29saWQ6InNvbGlkIixHcmF5NTA6Im1lZGl1bUdyYXkiLEdyYXk3NToiZGFya0dy''@;'; put 'put ''YXkiLEdyYXkyNToibGlnaHRHcmF5IixIb3J6U3RyaXBlOiJkYXJrSG9yaXpvbnRhbCIsVmVydFN0cmlwZToiZGFya1ZlcnRpY2FsIixSZXZlcnNlRGlhZ1N0cmlwZToiZGFya0Rvd24iLERpYWdTdHJpcGU6ImRhcmtVcCIsRGlhZ0Nyb3NzOiJkYXJrR3JpZCIsVGhpY2tEaWFnQ3Jvc3M6ImRh''@;'; put 'put ''cmtUcmVsbGlzIixUaGluSG9yelN0cmlwZToibGlnaHRIb3Jpem9udGFsIixUaGluVmVydFN0cmlwZToibGlnaHRWZXJ0aWNhbCIsVGhpblJldmVyc2VEaWFnU3RyaXBlOiJsaWdodERvd24iLFRoaW5Ib3J6Q3Jvc3M6ImxpZ2h0R3JpZCJ9LEg5PW50KFNFKSxCYj17b3JhbmdlOjE2NzUzOTIw''@;'; put 'put ''LGJsYWNrOjAsbmF2eToxMjgsYmx1ZToyNTUsZ3JlZW46MzI3NjgsdGVhbDozMjg5NixsaW1lOjY1MjgwLGFxdWE6NjU1MzUsc2lsdmVyOjEyNjMyMjU2LG1hcm9vbjo4Mzg4NjA4LHB1cnBsZTo4Mzg4NzM2LG9saXZlOjg0MjEzNzYsZ3JheTo4NDIxNTA0LHJlZDoxNjcxMTY4MCxmdWNoc2lh''@;'; put 'put ''OjE2NzExOTM1LHllbGxvdzoxNjc3Njk2MCx3aGl0ZToxNjc3NzIxNX07ZnVuY3Rpb24gajgoSCxyZSl7aWYoSC5yZXBsYWNlKCIjIiwiIikubWF0Y2goL15bMC05YS1mQS1GXXs2fSQvKSlyZXR1cm4gcGFyc2VJbnQoSC5yZXBsYWNlKCIjIiwiIiksMTYpO2lmKEJiW0hdKXJldHVybiBCYltI''@;'; put 'put ''XTt2YXIgWD1ILm1hdGNoKC9yZ2JcKFxzKihcZCopXHMqLFxzKihcZCopXHMqLFxzKihcZCopXHMqXCkvKTtpZihYKXJldHVybigrWFsxXTw8MTYpKygrWFsyXTw8OCkrICtYWzNdO2lmKFg9SC5tYXRjaCgvcmdiYVwoXHMqKFxkKilccyosXHMqKFxkKilccyosXHMqKFxkKilccyooXGQqKS8p''@;'; put 'put ''KXJldHVybiAwIT0oWFs0XSYmWFs0XS5sZW5ndGg+MCYmK1hbNF18fDApfHwrWFsxXT4wfHwrWFsyXT4wfHwrWFszXT4wPygrWFsxXTw8MTYpKygrWFsyXTw8OCkrICtYWzNdOnJlPy0xOjE2Nzc3MjE1O3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBIVE1MIGNvbG9yICIrSCl9dmFyIFFmPXt9''@;'; put 'put ''O2Z1bmN0aW9uIE45KEgpe0g9SHx8OTY7dmFyIHJlPXtDYWxpYnJpOltdLEFyaWFsOltdLCJTcGFya2Fzc2UgUmciOltdLFx1NWI4Ylx1NGY1MzpbXSxcdTZlMzhcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWY6W10sIkNlbnR1cnkgR290aGljIjpbXX07cmV0dXJuIHJlLkNhbGlicmlbMTFdPTcs''@;'; put 'put ''cmUuQ2FsaWJyaVsxMl09ezcyOjYsOTY6OCwxMjA6MTAsMTQ0OjEyfVtIXXx8OCxyZS5DYWxpYnJpWzEzXT0xMCxyZS5DYWxpYnJpWzE0XT0xMSxyZS5DYWxpYnJpWzE2XT0xMixyZS5DYWxpYnJpWzE4XT0xNCxyZS5DYWxpYnJpWzIwXT0xNixyZS5cdTViOGJcdTRmNTNbMTFdPTgscmUuXHU2''@;'; put 'put ''ZTM4XHUzMGI0XHUzMGI3XHUzMGMzXHUzMGFmWzExXT04LHJlWyJTcGFya2Fzc2UgUmciXVsxMV09NyxyZS5BcmlhbFsxMF09NyxyZVsiQ2VudHVyeSBHb3RoaWMiXVsxMl09OSxyZX1RZls3Ml09TjkoNzIpLFFmWzk2XT1OOSg5NiksUWZbMTIwXT1OOSgxMjApLFFmWzE0NF09TjkoMTQ0KTt2''@;'; put 'put ''YXIgeW09UWZbOTZdO2Z1bmN0aW9uIFo4KEgpe3JldHVybih5bVtILm5hbWV8fEguRm9udE5hbWVdfHxbXSlbSC5zenx8SC5TaXplXX1mdW5jdGlvbiByNihIKXtpZihIKXt2YXIgcmU9WjgoSCk7aWYocmUpcmV0dXJuIHQxPXJlfXJldHVybiB0MT02fWZ1bmN0aW9uIEw0KEgscmUsWCl7cmV0''@;'; put 'put ''dXJuIFdsKGZ1bmN0aW9uIFBiKEgscmUsWCl7cmV0dXJuW01hdGgucm91bmQocmVbMF0qWCtIWzBdKigxLVgpKSxNYXRoLnJvdW5kKHJlWzFdKlgrSFsxXSooMS1YKSksTWF0aC5yb3VuZChyZVsyXSpYK0hbMl0qKDEtWCkpXX0oQjkoIm51bWJlciI9PXR5cGVvZiBILnJnYj8oIjAwMDAwIitI''@;'; put 'put ''LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpOkgucmdiKSxCOSgibnVtYmVyIj09dHlwZW9mIHJlLnJnYj8oIjAwMDAwIityZS50b1N0cmluZygxNikpLnNsaWNlKC02KTpyZS5yZ2IpLFgpKX1mdW5jdGlvbiBXYyhILHJlLFgpe2lmKFgpc3dpdGNoKCtIKXtjYXNlIDY0Okg9NjU7YnJlYWs7Y2Fz''@;'; put 'put ''ZSA2NTpIPTY0fXZhciB3ZT1yZSYmcmVbK0hdfHxMdVsrSF18fGVtWytILTIwMF07aWYoODE9PStIJiYod2U9THVbMV0pLHdlfHwod2U9THVbMV0pLCF3ZSl0aHJvdyBuZXcgRXJyb3IoImJhZCBJQ1YgaW5kZXggIitIKTtyZXR1cm4gV2wod2UpfWZ1bmN0aW9uIFY5KEgscmUsWCl7dmFyIHdl''@;'; put 'put ''PXt9O3JldHVybiBudWxsIT1ILmluZGV4ZWQmJih3ZS5pbmRleD1wYXJzZUludChILmluZGV4ZWQsMTApLHdlLnJnYj1XYyh3ZS5pbmRleCxyZS5JbmRleGVkKSksbnVsbCE9SC50aGVtZSYmKHdlLnRoZW1lPXBhcnNlSW50KEgudGhlbWUsMTApKSxudWxsIT1ILnRpbnQmJih3ZS50aW50PXBh''@;'; put 'put ''cnNlRmxvYXQoSC50aW50KSksbnVsbCE9SC5yZ2ImJih3ZS5yZ2I9SC5yZ2Iuc2xpY2UoLTYpKSxudWxsIT13ZS50aGVtZSYmIXdlLnJnYiYmWC50aGVtZUVsZW1lbnRzJiYod2UucmdiPXZtKFgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbd2UudGhlbWVdLnJnYix3ZS50aW50fHwwKSx3ZS5y''@;'; put 'put ''YXdfcmdiPVgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbd2UudGhlbWVdLnJnYiksd2V9ZnVuY3Rpb24gajkoSCxyZSxYLHdlKXtyZS5Cb3JkZXJzPVtdO3ZhciB4ZT17fSxGZT17fSxaZT0hMTsoSFswXS5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFZlKXt2YXIgVWU9cXQoVmUp''@;'; put 'put ''O3N3aXRjaChMbihVZVswXSkpe2Nhc2UiPGJvcmRlcnMiOmNhc2UiPGJvcmRlcnM+IjpjYXNlIjwvYm9yZGVycz4iOmNhc2UiPC9ib3JkZXI+IjpjYXNlIjxsZWZ0Lz4iOmNhc2UiPC9sZWZ0PiI6Y2FzZSI8cmlnaHQvPiI6Y2FzZSI8L3JpZ2h0PiI6Y2FzZSI8dG9wLz4iOmNhc2UiPC90b3A+''@;'; put 'put ''IjpjYXNlIjxib3R0b20vPiI6Y2FzZSI8L2JvdHRvbT4iOmNhc2UiPGRpYWdvbmFsIjpjYXNlIjxkaWFnb25hbD4iOmNhc2UiPGRpYWdvbmFsLz4iOmNhc2UiPGhvcml6b250YWwiOmNhc2UiPGhvcml6b250YWw+IjpjYXNlIjxob3Jpem9udGFsLz4iOmNhc2UiPHZlcnRpY2FsIjpjYXNlIjx2''@;'; put 'put ''ZXJ0aWNhbD4iOmNhc2UiPHZlcnRpY2FsLz4iOmNhc2UiPHN0YXJ0IjpjYXNlIjxzdGFydD4iOmNhc2UiPHN0YXJ0Lz4iOmNhc2UiPC9zdGFydD4iOmNhc2UiPGVuZCI6Y2FzZSI8ZW5kPiI6Y2FzZSI8ZW5kLz4iOmNhc2UiPC9lbmQ+IjpjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+Ijpj''@;'; put 'put ''YXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxib3JkZXIiOmNhc2UiPGJvcmRlcj4iOmNhc2UiPGJvcmRlci8+Ijp4ZT17fSxVZS5kaWFnb25hbFVwJiYoeGUuZGlhZ29uYWxVcD1CaShVZS5kaWFnb25hbFVwKSksVWUuZGlhZ29uYWxEb3du''@;'; put 'put ''JiYoeGUuZGlhZ29uYWxEb3duPUJpKFVlLmRpYWdvbmFsRG93bikpLHJlLkJvcmRlcnMucHVzaCh4ZSk7YnJlYWs7Y2FzZSI8bGVmdCI6Y2FzZSI8bGVmdD4iOkZlPXhlLmxlZnQ9e30sVWUuc3R5bGUmJihGZS5zdHlsZT1VZS5zdHlsZSk7YnJlYWs7Y2FzZSI8cmlnaHQiOmNhc2UiPHJpZ2h0''@;'; put 'put ''PiI6RmU9eGUucmlnaHQ9e30sVWUuc3R5bGUmJihGZS5zdHlsZT1VZS5zdHlsZSk7YnJlYWs7Y2FzZSI8dG9wIjpjYXNlIjx0b3A+IjpGZT14ZS50b3A9e30sVWUuc3R5bGUmJihGZS5zdHlsZT1VZS5zdHlsZSk7YnJlYWs7Y2FzZSI8Ym90dG9tIjpjYXNlIjxib3R0b20+IjpGZT14ZS5ib3R0''@;'; put 'put ''b209e30sVWUuc3R5bGUmJihGZS5zdHlsZT1VZS5zdHlsZSk7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6eGUuZGlhZ29uYWw9RmUsRmU9e307YnJlYWs7Y2FzZSI8L2hvcml6b250YWw+Ijp4ZS5ob3Jpem9udGFsPUZlLEZlPXt9O2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOnhlLnZlcnRpY2Fs''@;'; put 'put ''PUZlLEZlPXt9O2JyZWFrO2Nhc2UiPGNvbG9yIjpjYXNlIjxjb2xvcj4iOkZlLmNvbG9yfHwoRmUuY29sb3I9e30pLFVlLmF1dG8mJihGZS5jb2xvci5hdXRvPUJpKFVlLmF1dG8pKSxudWxsIT1VZS5yZ2I/RmUuY29sb3IucmdiPVVlLnJnYi5zbGljZSgtNik6VWUuaW5kZXhlZD8oRmUuY29s''@;'; put 'put ''b3IuaW5kZXg9cGFyc2VJbnQoVWUuaW5kZXhlZCwxMCksRmUuY29sb3IucmdiPVdjKEZlLmNvbG9yLmluZGV4LHJlLkluZGV4ZWQsITEpKTpVZS50aGVtZSYmKEZlLmNvbG9yLnRoZW1lPXBhcnNlSW50KFVlLnRoZW1lLDEwKSxVZS50aW50JiYoRmUuY29sb3IudGludD1wYXJzZUZsb2F0KFVl''@;'; put 'put ''LnRpbnQpKSxVZS50aGVtZSYmWC50aGVtZUVsZW1lbnRzJiZYLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiYoRmUuY29sb3IucmdiPXZtKFgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbRmUuY29sb3IudGhlbWVdLnJnYixGZS5jb2xvci50aW50fHwwKSkpLCFVZS5hdXRvJiZudWxsPT1VZS5y''@;'; put 'put ''Z2ImJiFVZS5pbmRleGVkJiZkZWxldGUgRmUuY29sb3I7YnJlYWs7Y2FzZSI8ZXh0IjpaZT0hMDticmVhaztjYXNlIjwvZXh0PiI6WmU9ITE7YnJlYWs7ZGVmYXVsdDppZih3ZSYmd2UuV1RGJiYhWmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitVZVswXSsiIGluIGJvcmRlcnMi''@;'; put 'put ''KX19KX1mdW5jdGlvbiBpNihILHJlKXt2YXIgWD1bIjwiK3JlXTtyZXR1cm4gSCYmSC5zdHlsZT8oWC5wdXNoKCcgc3R5bGU9IicrSC5zdHlsZSsnIicpLEguY29sb3I/KFgucHVzaCgiPiIpLFgucHVzaCh2cyhILmNvbG9yLCEwKSksWC5qb2luKCIiKSsiPC8iK3JlKyI+Iik6WC5qb2luKCIi''@;'; put 'put ''KSsiLz4iKTpYWzBdKyIvPiJ9ZnVuY3Rpb24gRmIoSCxyZSxYLHdlKXtyZS5GaWxscz1bXTt2YXIgeGU9e30sRmU9e30sWmU9ITEsVmU9ITE7KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihVZSl7dmFyIFN0PXF0KFVlKTtzd2l0Y2goTG4oU3RbMF0pKXtjYXNlIjxmaWxs''@;'; put 'put ''cyI6Y2FzZSI8ZmlsbHM+IjpjYXNlIjwvZmlsbHM+IjpjYXNlIjwvZmlsbD4iOmNhc2UiPC9ncmFkaWVudEZpbGw+IjpjYXNlIjxiZ0NvbG9yLz4iOmNhc2UiPC9iZ0NvbG9yPiI6Y2FzZSI8ZmdDb2xvci8+IjpjYXNlIjwvZmdDb2xvcj4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4i''@;'; put 'put ''OmNhc2UiPHN0b3AvPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZmlsbD4iOmNhc2UiPGZpbGwiOmNhc2UiPGZpbGwvPiI6cmUuRmlsbHMucHVzaCh4ZT17fSk7YnJlYWs7Y2FzZSI8Z3JhZGllbnRGaWxsPiI6eGUuc3RvcHM9W107''@;'; put 'put ''YnJlYWs7Y2FzZSI8Z3JhZGllbnRGaWxsIjp4ZS5zdG9wcz1bXSxTdC5kZWdyZWUmJih4ZS5hbmdsZT0rU3QuZGVncmVlKTticmVhaztjYXNlIjxwYXR0ZXJuRmlsbCI6Y2FzZSI8cGF0dGVybkZpbGw+IjpTdC5wYXR0ZXJuVHlwZSYmKHhlLnBhdHRlcm5UeXBlPVN0LnBhdHRlcm5UeXBlKTti''@;'; put 'put ''cmVhaztjYXNlIjxwYXR0ZXJuRmlsbC8+IjpjYXNlIjwvcGF0dGVybkZpbGw+IjppZihaZSl0aHJvdyBuZXcgRXJyb3IoImJhZCBzdG9wIik7YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGJnQ29sb3IiOmNhc2UiPGZnQ29sb3IiOnZhciBJdD1MbihTdFswXSkuc2xpY2UoMSk7ImNvbG9yIiE9''@;'; put 'put ''SXQmJiF4ZVtJdF0mJih4ZVtJdF09e30pO3ZhciBQdD1aZT9GZTp4ZVtJdF07bnVsbCE9U3QuaW5kZXhlZCYmKFB0LmluZGV4PXBhcnNlSW50KFN0LmluZGV4ZWQsMTApLFB0LnJnYj1XYyhQdC5pbmRleCxyZS5JbmRleGVkKSksbnVsbCE9U3QudGhlbWUmJihQdC50aGVtZT1wYXJzZUludChT''@;'; put 'put ''dC50aGVtZSwxMCkpLG51bGwhPVN0LnRpbnQmJihQdC50aW50PXBhcnNlRmxvYXQoU3QudGludCkpLG51bGwhPVN0LnJnYiYmKFB0LnJnYj1TdC5yZ2Iuc2xpY2UoLTYpKSxudWxsIT1TdC5hdXRvJiZkZWxldGUgeGVbSXRdLG51bGwhPVB0LnRoZW1lJiYhUHQucmdiJiZYLnRoZW1lRWxlbWVu''@;'; put 'put ''dHMmJihQdC5yZ2I9dm0oWC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtQdC50aGVtZV0ucmdiLFB0LnRpbnR8fDApLHdlLldURiYmKFB0LnJhd19yZ2I9WC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtQdC50aGVtZV0ucmdiKSk7YnJlYWs7Y2FzZSI8c3RvcD4iOlplPSEwLEZlPXt9O2JyZWFr''@;'; put 'put ''O2Nhc2UiPHN0b3AiOlplPSEwLEZlPXt9LG51bGwhPVN0LnBvc2l0aW9uJiYoRmUudj1wYXJzZUZsb2F0KFN0LnBvc2l0aW9uKSk7YnJlYWs7Y2FzZSI8L3N0b3A+IjpaZT0hMSx4ZS5zdG9wcy5wdXNoKEZlKTticmVhaztjYXNlIjxleHQiOlZlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpWZT0h''@;'; put 'put ''MTticmVhaztkZWZhdWx0OmlmKHdlJiZ3ZS5XVEYmJiFWZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1N0WzBdKyIgaW4gZmlsbHMiKX19KX1mdW5jdGlvbiBNRShILHJlLFgsd2Upe3JlLkZvbnRzPVtdO3ZhciB4ZT17fSxGZT0hMTsoSFswXS5tYXRjaChHdCl8fFtdKS5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKFplKXt2YXIgVmU9cXQoWmUpO3N3aXRjaChMbihWZVswXSkpe2Nhc2UiPGZvbnRzIjpjYXNlIjxmb250cz4iOmNhc2UiPC9mb250cz4iOmJyZWFrO2Nhc2UiPGZvbnQiOmNhc2UiPGZvbnQ+IjppZigiLz4iIT1aZS5zbGljZSgtMikpYnJlYWs7Y2FzZSI8L2ZvbnQ+Ijpj''@;'; put 'put ''YXNlIjxmb250Lz4iOnJlLkZvbnRzLnB1c2goeGUpLHhlPXt9O2JyZWFrO2Nhc2UiPG5hbWUiOlZlLnZhbCYmKHhlLm5hbWU9ajAoVmUudmFsKSk7YnJlYWs7Y2FzZSI8bmFtZS8+IjpjYXNlIjwvbmFtZT4iOmJyZWFrO2Nhc2UiPGIiOnhlLmJvbGQ9VmUudmFsP0JpKFZlLnZhbCk6MTticmVh''@;'; put 'put ''aztjYXNlIjxiLz4iOmNhc2UiPGI+Ijp4ZS5ib2xkPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjp4ZS5pdGFsaWM9VmUudmFsP0JpKFZlLnZhbCk6MTticmVhaztjYXNlIjxpLz4iOmNhc2UiPGk+Ijp4ZS5pdGFsaWM9MTticmVhaztjYXNlIjwvaT4iOmJyZWFrO2Nhc2UiPHUi''@;'; put 'put ''OnN3aXRjaChWZS52YWwpe2Nhc2Uibm9uZSI6eGUudW5kZXJsaW5lPTA7YnJlYWs7Y2FzZSJzaW5nbGUiOnhlLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiZG91YmxlIjp4ZS51bmRlcmxpbmU9MjticmVhaztjYXNlInNpbmdsZUFjY291bnRpbmciOnhlLnVuZGVybGluZT0zMzticmVhaztjYXNl''@;'; put 'put ''ImRvdWJsZUFjY291bnRpbmciOnhlLnVuZGVybGluZT0zNH1icmVhaztjYXNlIjx1Lz4iOmNhc2UiPHU+Ijp4ZS51bmRlcmxpbmU9MTticmVhaztjYXNlIjwvdT4iOmJyZWFrO2Nhc2UiPHN0cmlrZSI6eGUuc3RyaWtlPVZlLnZhbD9CaShWZS52YWwpOjE7YnJlYWs7Y2FzZSI8c3RyaWtlLz4i''@;'; put 'put ''OnhlLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPG91dGxpbmUiOnhlLm91dGxpbmU9VmUudmFsP0JpKFZlLnZhbCk6MTticmVhaztjYXNlIjxvdXRsaW5lLz4iOnhlLm91dGxpbmU9MTticmVhaztjYXNlIjxzaGFkb3ciOnhlLnNoYWRvdz1WZS52YWw/QmkoVmUudmFsKToxO2JyZWFrO2Nhc2UiPHNo''@;'; put 'put ''YWRvdy8+Ijp4ZS5zaGFkb3c9MTticmVhaztjYXNlIjxjb25kZW5zZSI6eGUuY29uZGVuc2U9VmUudmFsP0JpKFZlLnZhbCk6MTticmVhaztjYXNlIjxjb25kZW5zZS8+Ijp4ZS5jb25kZW5zZT0xO2JyZWFrO2Nhc2UiPGV4dGVuZCI6eGUuZXh0ZW5kPVZlLnZhbD9CaShWZS52YWwpOjE7YnJl''@;'; put 'put ''YWs7Y2FzZSI8ZXh0ZW5kLz4iOnhlLmV4dGVuZD0xO2JyZWFrO2Nhc2UiPHN6IjpWZS52YWwmJih4ZS5zej0rVmUudmFsKTticmVhaztjYXNlIjxzei8+IjpjYXNlIjwvc3o+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOiJub25lIiE9KFZlLnZhbHx8Im5vbmUiKSYmKHhlLnZhbGlnbj1WZS52''@;'; put 'put ''YWwucmVwbGFjZSgic2NyaXB0IiwiIikpO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8ZmFtaWx5IjpWZS52YWwmJih4ZS5mYW1pbHk9cGFyc2VJbnQoVmUudmFsLDEwKSk7YnJlYWs7Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+''@;'; put 'put ''IjpicmVhaztjYXNlIjxzY2hlbWUiOlZlLnZhbCYmKHhlLnNjaGVtZT1WZS52YWwpO2JyZWFrO2Nhc2UiPHNjaGVtZS8+IjpjYXNlIjwvc2NoZW1lPiI6YnJlYWs7Y2FzZSI8Y2hhcnNldCI6aWYoIjEiPT1WZS52YWwpYnJlYWs7VmUuY29kZXBhZ2U9WVtwYXJzZUludChWZS52YWwsMTApXTti''@;'; put 'put ''cmVhaztjYXNlIjxjb2xvciI6eGUuY29sb3J8fCh4ZS5jb2xvcj17fSksVmUuYXV0byYmKHhlLmNvbG9yLmF1dG89QmkoVmUuYXV0bykpLFZlLnJnYj94ZS5jb2xvci5yZ2I9VmUucmdiLnNsaWNlKC02KTpWZS5pbmRleGVkPyh4ZS5jb2xvci5pbmRleD1wYXJzZUludChWZS5pbmRleGVkLDEw''@;'; put 'put ''KSx4ZS5jb2xvci5yZ2I9V2MoeGUuY29sb3IuaW5kZXgscmUuSW5kZXhlZCkpOlZlLnRoZW1lJiYoeGUuY29sb3IudGhlbWU9cGFyc2VJbnQoVmUudGhlbWUsMTApLFZlLnRpbnQmJih4ZS5jb2xvci50aW50PXBhcnNlRmxvYXQoVmUudGludCkpLFZlLnRoZW1lJiZYLnRoZW1lRWxlbWVudHMm''@;'; put 'put ''JlgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUmJih4ZS5jb2xvci5yZ2I9dm0oWC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVt4ZS5jb2xvci50aGVtZV0ucmdiLHhlLmNvbG9yLnRpbnR8fDApKSk7YnJlYWs7Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6YnJlYWs7Y2FzZSI8QWx0ZXJu''@;'; put 'put ''YXRlQ29udGVudCI6RmU9ITA7YnJlYWs7Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjpGZT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOkZlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpGZT0hMTticmVhaztkZWZh''@;'; put 'put ''dWx0OmlmKHdlJiZ3ZS5XVEYmJiFGZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1ZlWzBdKyIgaW4gZm9udHMiKX19KX12YXIgejk9ezA6Im5vbmUiLDE6InNpbmdsZSIsMjoiZG91YmxlIiwzMzoic2luZ2xlQWNjb3VudGluZyIsMzQ6ImRvdWJsZUFjY291bnRpbmcifSxPND1b''@;'; put 'put ''Im51bUZtdElkIiwiZmlsbElkIiwiZm9udElkIiwiYm9yZGVySWQiLCJ4ZklkIl0sYmQ9WyJhcHBseUFsaWdubWVudCIsImFwcGx5Qm9yZGVyIiwiYXBwbHlGaWxsIiwiYXBwbHlGb250IiwiYXBwbHlOdW1iZXJGb3JtYXQiLCJhcHBseVByb3RlY3Rpb24iLCJwaXZvdEJ1dHRvbiIsInF1b3Rl''@;'; put 'put ''UHJlZml4Il0sX289ZnVuY3Rpb24oKXt2YXIgSD0vPCg/Olx3KzopP2ZvbnQoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Zm9udD4vLHJlPS88KD86XHcrOik/bnVtRm10KFtePl0qKVwvPi8sWD0vPCg/Olx3KzopP2ZpbGwoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/ZmlsbD4vLHhl''@;'; put 'put ''PS88KD86XHcrOik/Ym9yZGVyKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2JvcmRlcj4vO3JldHVybiBmdW5jdGlvbihWZSxVZSxTdCxJdCl7dmFyIGFuLENuLFB0PXt9LFF0PXt9O3JldHVybihhbj1WZS5tYXRjaChIKSkmJihNRShhbixQdCxTdCxJdCksKFB0LkZvbnRzfHxbXSlbMF0m''@;'; put 'put ''JmtuKFF0LFB0LkZvbnRzWzBdKSksKGFuPVZlLm1hdGNoKHJlKSkmJihDbj1xdChqMChhblswXSkpLFF0Lno9Q24uZm9ybWF0Q29kZT9ncihDbi5mb3JtYXRDb2RlKTooVWUuTnVtYmVyRm10fHxbXSlbK0NuLm51bUZtdElkXXx8IkdlbmVyYWwiKSwoYW49VmUubWF0Y2goWCkpJiYoRmIoYW4s''@;'; put 'put ''UHQsU3QsSXQpLChQdC5GaWxsc3x8W10pWzBdJiZrbihRdCxQdC5GaWxsc1swXSkpLChhbj1WZS5tYXRjaCh4ZSkpJiYoajkoYW4sUHQsU3QsSXQpLChQdC5Cb3JkZXJzfHxbXSlbMF0mJmtuKFF0LFB0LkJvcmRlcnNbMF0pKSxRdH19KCksSUU9LzwoPzpcdys6KT9keGY+W1xTXHNdKj88XC8o''@;'; put 'put ''Pzpcdys6KT9keGY+L2csb0I9LzwoPzpcdys6KT90YWJsZVN0eWxlXGIuKj8+W1xTXHNdKj88XC8oPzpcdys6KT90YWJsZVN0eWxlPi9nO3ZhciBERT1mdW5jdGlvbigpe3ZhciByZT0vPCg/Olx3KzopP251bUZtdHMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/bnVtRm10cz4vLFg9Lzwo''@;'; put 'put ''Pzpcdys6KT9jZWxsU3R5bGVYZnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Y2VsbFN0eWxlWGZzPi8sd2U9LzwoPzpcdys6KT9jZWxsU3R5bGVzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2NlbGxTdHlsZXM+Lyx4ZT0vPCg/Olx3KzopP2NlbGxYZnMoW14+XSopPltcU1xzXSo/''@;'; put 'put ''PFwvKD86XHcrOik/Y2VsbFhmcz4vLEZlPS88KD86XHcrOik/ZmlsbHMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/ZmlsbHM+LyxaZT0vPCg/Olx3KzopP2ZvbnRzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZvbnRzPi8sVmU9LzwoPzpcdys6KT9ib3JkZXJzKFtePl0qKT5bXFNc''@;'; put 'put ''c10qPzxcLyg/Olx3KzopP2JvcmRlcnM+LyxVZT0vPCg/Olx3KzopP2luZGV4ZWRDb2xvcnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/aW5kZXhlZENvbG9ycz4vLFN0PS88KD86XHcrOik/dGFibGVTdHlsZXMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/dGFibGVTdHlsZXM+LyxJ''@;'; put 'put ''dD0vPCg/Olx3KzopP2R4ZnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/ZHhmcz4vO3JldHVybiBmdW5jdGlvbihRdCxhbixDbil7dmFyIHp0LEx0PXt9O3JldHVybiBRdD8oKHp0PShRdD1RdC5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwiIikucmVwbGFjZSgvPCFET0NUWVBF''@;'; put 'put ''W15cW10qXFtbXlxdXSpcXT4vZ20sIiIpKS5tYXRjaChVZSkpJiZmdW5jdGlvbiBvNihILHJlLFgpe3JlLkluZGV4ZWR8fChyZS5JbmRleGVkPVtdKTt2YXIgd2U9ITE7KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7dmFyIEZlPXF0KHhlKTtzd2l0Y2goTG4oRmVb''@;'; put 'put ''MF0pKXtjYXNlIjxpbmRleGVkQ29sb3JzPiI6Y2FzZSI8aW5kZXhlZENvbG9ycyI6Y2FzZSI8aW5kZXhlZENvbG9ycy8+IjpjYXNlIjwvaW5kZXhlZENvbG9ycz4iOmNhc2UiPC9yZ2JDb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nh''@;'; put 'put ''c2UiPHJnYkNvbG9yIjpkZWxldGUgRmVbMF07dmFyIFplPXBhcnNlSW50KEZlLnJnYi5zbGljZSgtNiksMTYpO3JlLkluZGV4ZWQucHVzaChbWmU+PjE2JjI1NSxaZT4+OCYyNTUsMjU1JlplXSk7YnJlYWs7Y2FzZSI8ZXh0Ijp3ZT0hMDticmVhaztjYXNlIjwvZXh0PiI6d2U9ITE7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDppZihYJiZYLldURiYmIXdlKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrRmVbMF0rIiBpbiBjZWxsU3R5bGVzIil9fSl9KHp0LEx0LENuKSwoenQ9UXQubWF0Y2gocmUpKSYmZnVuY3Rpb24gRUUoSCxyZSxYKXtyZS5OdW1iZXJGbXQ9W107Zm9yKHZhciB3ZT1vbihG''@;'; put 'put ''Ll90YWJsZSkseGU9MDt4ZTx3ZS5sZW5ndGg7Kyt4ZSlyZS5OdW1iZXJGbXRbd2VbeGVdXT1GLl90YWJsZVt3ZVt4ZV1dO3ZhciBGZT1IWzBdLm1hdGNoKEd0KTtpZihGZSlmb3IoeGU9MDt4ZTxGZS5sZW5ndGg7Kyt4ZSl7dmFyIFplPXF0KEZlW3hlXSk7c3dpdGNoKExuKFplWzBdKSl7Y2Fz''@;'; put 'put ''ZSI8bnVtRm10cyI6Y2FzZSI8L251bUZtdHM+IjpjYXNlIjxudW1GbXRzLz4iOmNhc2UiPG51bUZtdHM+IjpjYXNlIjwvbnVtRm10PiI6YnJlYWs7Y2FzZSI8bnVtRm10Ijp2YXIgVmU9Z3IoajAoWmUuZm9ybWF0Q29kZSkpLFVlPXBhcnNlSW50KFplLm51bUZtdElkLDEwKTtpZihyZS5OdW1i''@;'; put 'put ''ZXJGbXRbVWVdPVZlLFVlPjApe2lmKFVlPjM5Mil7Zm9yKFVlPTM5MjtVZT42MCYmbnVsbCE9cmUuTnVtYmVyRm10W1VlXTstLVVlKTtyZS5OdW1iZXJGbXRbVWVdPVZlfUYubG9hZChWZSxVZSl9YnJlYWs7ZGVmYXVsdDppZihYLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAi''@;'; put 'put ''K1plWzBdKyIgaW4gbnVtRm10cyIpfX19KHp0LEx0LENuKSwoenQ9UXQubWF0Y2goWmUpKSYmTUUoenQsTHQsYW4sQ24pLCh6dD1RdC5tYXRjaChGZSkpJiZGYih6dCxMdCxhbixDbiksKHp0PVF0Lm1hdGNoKFZlKSkmJmo5KHp0LEx0LGFuLENuKSwoenQ9UXQubWF0Y2goWCkpJiZmdW5jdGlv''@;'; put 'put ''biBDRyhILHJlLFgpe3JlLkNlbGxTdHlsZVhmPVtdO3ZhciB3ZSx4ZT0hMTsoSFswXS5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXt2YXIgWmU9cXQoRmUpLFZlPTA7c3dpdGNoKExuKFplWzBdKSl7Y2FzZSI8Y2VsbFN0eWxlWGZzIjpjYXNlIjxjZWxsU3R5bGVYZnM+Ijpj''@;'; put 'put ''YXNlIjxjZWxsU3R5bGVYZnMvPiI6Y2FzZSI8L2NlbGxTdHlsZVhmcz4iOmNhc2UiPC94Zj4iOmNhc2UiPC9hbGlnbm1lbnQ+IjpjYXNlIjwvcHJvdGVjdGlvbj4iOmNhc2UiPHByb3RlY3Rpb24vPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7''@;'; put 'put ''Y2FzZSI8eGYiOmNhc2UiPHhmLz4iOmZvcihkZWxldGUod2U9WmUpWzBdLFZlPTA7VmU8TzQubGVuZ3RoOysrVmUpd2VbTzRbVmVdXSYmKHdlW080W1ZlXV09cGFyc2VJbnQod2VbTzRbVmVdXSwxMCkpO2ZvcihWZT0wO1ZlPGJkLmxlbmd0aDsrK1ZlKXdlW2JkW1ZlXV0mJih3ZVtiZFtWZV1d''@;'; put 'put ''PUJpKHdlW2JkW1ZlXV0pKTtpZihyZS5OdW1iZXJGbXQmJndlLm51bUZtdElkPjM5Milmb3IoVmU9MzkyO1ZlPjYwOy0tVmUpaWYocmUuTnVtYmVyRm10W3dlLm51bUZtdElkXT09cmUuTnVtYmVyRm10W1ZlXSl7d2UubnVtRm10SWQ9VmU7YnJlYWt9cmUuQ2VsbFN0eWxlWGYucHVzaCh3ZSk7''@;'; put 'put ''YnJlYWs7Y2FzZSI8YWxpZ25tZW50IjpjYXNlIjxhbGlnbm1lbnQvPiI6dmFyIFVlPXt9O1plLnZlcnRpY2FsJiYoVWUudmVydGljYWw9WmUudmVydGljYWwpLFplLmhvcml6b250YWwmJihVZS5ob3Jpem9udGFsPVplLmhvcml6b250YWwpLG51bGwhPVplLnRleHRSb3RhdGlvbiYmKFVlLnRl''@;'; put 'put ''eHRSb3RhdGlvbj1aZS50ZXh0Um90YXRpb24pLFplLmluZGVudCYmKFVlLmluZGVudD1aZS5pbmRlbnQpLFplLndyYXBUZXh0JiYoVWUud3JhcFRleHQ9WmUud3JhcFRleHQpLFplLnNocmlua1RvRml0JiYoVWUuc2hyaW5rVG9GaXQ9QmkoWmUuc2hyaW5rVG9GaXQpKSx3ZS5hbGlnbm1lbnQ9''@;'; put 'put ''VWU7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6d2UucHJvdGVjdGlvbj17fSxCaShaZS5oaWRkZW4pJiYod2UucHJvdGVjdGlvbi5oaWRkZW49ITApLG51bGwhPVplLmxvY2tlZCYmKHdlLnByb3RlY3Rpb24uZWRpdGFibGU9IUJpKFplLmxvY2tlZCkpO2JyZWFrO2Nhc2UiPGV4dCI6eGU9ITA7''@;'; put 'put ''YnJlYWs7Y2FzZSI8L2V4dD4iOnhlPSExO2JyZWFrO2RlZmF1bHQ6aWYoWCYmWC5XVEYmJiF4ZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1plWzBdKyIgaW4gY2VsbFN0eWxlWGZzIil9fSl9KHp0LEx0LENuKSwoenQ9UXQubWF0Y2god2UpKSYmZnVuY3Rpb24gX2QoSCxyZSxY''@;'; put 'put ''KXtyZS5DZWxsU3R5bGVYZnx8KHJlLkNlbGxTdHlsZVhmPVtdKTt2YXIgd2U9ITE7KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7dmFyIEZlPXF0KHhlKTtzd2l0Y2goTG4oRmVbMF0pKXtjYXNlIjxjZWxsU3R5bGVzIjpjYXNlIjxjZWxsU3R5bGVzPiI6Y2FzZSI8''@;'; put 'put ''Y2VsbFN0eWxlcy8+IjpjYXNlIjwvY2VsbFN0eWxlcz4iOmNhc2UiPC94Zj4iOmNhc2UiPC9jZWxsU3R5bGU+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxjZWxsU3R5bGUiOmNhc2UiPGNlbGxTdHlsZS8+IjpkZWxldGUgRmVbMF07''@;'; put 'put ''dmFyIFplPStGZS54ZklkO2lmKHJlLkNlbGxTdHlsZVhmW1plXSlyZS5DZWxsU3R5bGVYZltaZV0uc3R5bGU9ajAoRmUubmFtZSk7ZWxzZSBpZighRmUuYnVpbHRpbklkKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgQ2VsbFN0eWxlICIrWmUpO2JyZWFrO2Nhc2UiPGV4dCI6d2U9''@;'; put 'put ''ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOndlPSExO2JyZWFrO2RlZmF1bHQ6aWYoWCYmWC5XVEYmJiF3ZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK0ZlWzBdKyIgaW4gY2VsbFN0eWxlcyIpfX0pfSh6dCxMdCxDbiksKHp0PVF0Lm1hdGNoKHhlKSkmJmZ1bmN0aW9uIHJCKEgscmUs''@;'; put 'put ''WCl7cmUuQ2VsbFhmPVtdO3ZhciB3ZSx4ZT0hMTsoSFswXS5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXt2YXIgWmU9cXQoRmUpLFZlPTA7c3dpdGNoKExuKFplWzBdKSl7Y2FzZSI8Y2VsbFhmcyI6Y2FzZSI8Y2VsbFhmcz4iOmNhc2UiPGNlbGxYZnMvPiI6Y2FzZSI8L2Nl''@;'; put 'put ''bGxYZnM+IjpjYXNlIjwveGY+IjpjYXNlIjwvYWxpZ25tZW50PiI6Y2FzZSI8L3Byb3RlY3Rpb24+IjpjYXNlIjxwcm90ZWN0aW9uLz4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPHhmIjpjYXNlIjx4Zi8+Ijpmb3IoZGVsZXRlKHdl''@;'; put 'put ''PVplKVswXSxWZT0wO1ZlPE80Lmxlbmd0aDsrK1ZlKXdlW080W1ZlXV0mJih3ZVtPNFtWZV1dPXBhcnNlSW50KHdlW080W1ZlXV0sMTApKTtmb3IoVmU9MDtWZTxiZC5sZW5ndGg7KytWZSl3ZVtiZFtWZV1dJiYod2VbYmRbVmVdXT1CaSh3ZVtiZFtWZV1dKSk7aWYocmUuTnVtYmVyRm10JiZ3''@;'; put 'put ''ZS5udW1GbXRJZD4zOTIpZm9yKFZlPTM5MjtWZT42MDstLVZlKWlmKHJlLk51bWJlckZtdFt3ZS5udW1GbXRJZF09PXJlLk51bWJlckZtdFtWZV0pe3dlLm51bUZtdElkPVZlO2JyZWFrfXJlLkNlbGxTdHlsZVhmJiZ3ZS54ZklkJiZyZS5DZWxsU3R5bGVYZlt3ZS54ZklkXSYmcmUuQ2VsbFN0''@;'; put 'put ''eWxlWGZbd2UueGZJZF0uc3R5bGUmJih3ZS5zdHlsZT1yZS5DZWxsU3R5bGVYZlt3ZS54ZklkXS5zdHlsZSkscmUuQ2VsbFhmLnB1c2god2UpO2JyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOnZhciBVZT17fTtaZS52ZXJ0aWNhbCYmKFVlLnZlcnRpY2FsPVplLnZl''@;'; put 'put ''cnRpY2FsKSxaZS5ob3Jpem9udGFsJiYoVWUuaG9yaXpvbnRhbD1aZS5ob3Jpem9udGFsKSxudWxsIT1aZS50ZXh0Um90YXRpb24mJihVZS50ZXh0Um90YXRpb249WmUudGV4dFJvdGF0aW9uKSxaZS5pbmRlbnQmJihVZS5pbmRlbnQ9WmUuaW5kZW50KSxaZS53cmFwVGV4dCYmKFVlLndyYXBU''@;'; put 'put ''ZXh0PUJpKFplLndyYXBUZXh0KSksWmUuc2hyaW5rVG9GaXQmJihVZS5zaHJpbmtUb0ZpdD1CaShaZS5zaHJpbmtUb0ZpdCkpLHdlLmFsaWdubWVudD1VZTticmVhaztjYXNlIjxwcm90ZWN0aW9uIjp3ZS5wcm90ZWN0aW9uPXt9LEJpKFplLmhpZGRlbikmJih3ZS5wcm90ZWN0aW9uLmhpZGRl''@;'; put 'put ''bj0hMCksbnVsbCE9WmUubG9ja2VkJiYod2UucHJvdGVjdGlvbi5lZGl0YWJsZT0hQmkoWmUubG9ja2VkKSk7YnJlYWs7Y2FzZSI8QWx0ZXJuYXRlQ29udGVudCI6Y2FzZSI8ZXh0Ijp4ZT0hMDticmVhaztjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOmNhc2UiPC9leHQ+Ijp4ZT0hMTticmVh''@;'; put 'put ''aztkZWZhdWx0OmlmKFgmJlguV1RGJiYheGUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitaZVswXSsiIGluIGNlbGxYZnMiKX19KX0oenQsTHQsQ24pLCh6dD1RdC5tYXRjaChJdCkpJiZmdW5jdGlvbiBIYihILHJlLFgsd2Upe3JlLkRYRnx8KHJlLkRYRj1bXSksKEhbMF0ubWF0''@;'; put 'put ''Y2goSUUpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7cmUuRFhGLnB1c2goX28oeGUscmUsWCx3ZSkpfSl9KHp0LEx0LGFuLENuKSwoenQ9UXQubWF0Y2goU3QpKSYmZnVuY3Rpb24gYUIoSCxyZSxYLHdlKXtyZS5UYWJsZXx8KHJlLlRhYmxlPVtdKSwoSFswXS5tYXRjaChvQil8fFtdKS5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKHhlKXtyZS5UYWJsZS5wdXNoKGZ1bmN0aW9uIGE2KEgscmUsWCx3ZSl7dmFyIHhlPSExLEZlPXt9O3JldHVybihILm1hdGNoKEd0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oWmUpe3ZhciBWZT1xdChaZSk7c3dpdGNoKExuKFZlWzBdKSl7Y2FzZSI8dGFibGVTdHls''@;'; put 'put ''ZT4iOmNhc2UiPHRhYmxlU3R5bGUiOkZlLm5hbWU9VmUubmFtZS5yZXBsYWNlKC9eKFRhYmxlfFBpdm90KVN0eWxlLywiIiksRmUucmF3bmFtZT1WZS5uYW1lLEZlLnBpdm90PSFWZS5waXZvdHx8QmkoVmUucGl2b3QpLEZlLnRhYmxlPSFWZS50YWJsZXx8QmkoVmUudGFibGUpO2JyZWFrO2Nh''@;'; put 'put ''c2UiPHRhYmxlU3R5bGUvPiI6Y2FzZSI8L3RhYmxlU3R5bGU+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjx0YWJsZVN0eWxlRWxlbWVudCI6aWYoVmUudHlwZSYmVmUuZHhmSWQpe2lmKCFyZS5EWEZ8fCFyZS5EWEZbK1ZlLmR4Zklk''@;'; put 'put ''XSl0aHJvdyBuZXcgRXJyb3IoWmUrIiBjYW5ub3QgZmluZCBEWEYiKTtGZVtWZS50eXBlXT1yZS5EWEZbK1ZlLmR4ZklkXX1icmVhaztjYXNlIjxleHQiOnhlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp4ZT0hMTticmVhaztkZWZhdWx0OmlmKHdlJiZ3ZS5XVEYmJiF4ZSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoInVucmVjb2duaXplZCAiK1ZlWzBdKyIgaW4gdGFibGVTdHlsZSIpfX0pLEZlfSh4ZSxyZSwwLHdlKSl9KX0oenQsTHQsMCxDbiksKEx0LkZvbnRzfHxbXSlbMF0mJnI2KEx0LkZvbnRzWzBdKSxMdCk6THR9fSgpLGxCPVNpKCJzdHlsZVNoZWV0IixudWxsLHt4bWxuczpXMC5tYWluWzBd''@;'; put 'put ''LCJ4bWxuczp2dCI6VzAudnR9KTtmdW5jdGlvbiBOYihILHJlKXt2YXIgd2UsWD1bY24sbEJdO0guU1NGJiZudWxsIT0od2U9ZnVuY3Rpb24gRzkoSCl7dmFyIHJlPVsiPG51bUZtdHM+Il07cmV0dXJuW1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbNTAsMzkyXV0uZm9yRWFjaChmdW5jdGlvbihY''@;'; put 'put ''KXtmb3IodmFyIHdlPVhbMF07d2U8PVhbMV07Kyt3ZSludWxsIT1IW3dlXSYmKHJlW3JlLmxlbmd0aF09U2koIm51bUZtdCIsbnVsbCx7bnVtRm10SWQ6d2UsZm9ybWF0Q29kZTpPcihIW3dlXSl9KSl9KSwxPT09cmUubGVuZ3RoPyIiOihyZVtyZS5sZW5ndGhdPSI8L251bUZtdHM+IixyZVsw''@;'; put 'put ''XT1TaSgibnVtRm10cyIsbnVsbCx7Y291bnQ6cmUubGVuZ3RoLTJ9KS5yZXBsYWNlKCIvPiIsIj4iKSxyZS5qb2luKCIiKSl9KEguU1NGKSkmJihYW1gubGVuZ3RoXT13ZSksWFtYLmxlbmd0aF09ZnVuY3Rpb24gbkIoSCl7dmFyIHJlPVtdO3JldHVybiBILmZvckVhY2goZnVuY3Rpb24oWCl7''@;'; put 'put ''dmFyIHdlPVsiPGZvbnQ+Il07WC5ib2xkJiZ3ZS5wdXNoKCI8Yi8+IiksWC5pdGFsaWMmJndlLnB1c2goIjxpLz4iKSxYLnN0cmlrZSYmd2UucHVzaCgiPHN0cmlrZS8+IiksWC5zaGFkb3cmJndlLnB1c2goIjxzaGFkb3cvPiIpLHo5WytYLnVuZGVybGluZV0mJndlLnB1c2goJzx1IHZhbD0i''@;'; put 'put ''Jyt6OVsrWC51bmRlcmxpbmVdKyciLz4nKSxYLnN6JiZ3ZS5wdXNoKCc8c3ogdmFsPSInK1guc3orJyIvPicpLFguY29sb3ImJndlLnB1c2godnMoWC5jb2xvciwhMCkpLFgubmFtZSYmd2UucHVzaCgnPG5hbWUgdmFsPSInK1gubmFtZSsnIi8+JyksWC5mYW1pbHkmJndlLnB1c2goJzxmYW1p''@;'; put 'put ''bHkgdmFsPSInK1guZmFtaWx5KyciLz4nKSxYLnNjaGVtZSYmd2UucHVzaCgnPHNjaGVtZSB2YWw9IicrWC5zY2hlbWUrJyIvPicpLFgudmFsaWduJiZ3ZS5wdXNoKCc8dmVydEFsaWduIHZhbD0iJytYLnZhbGlnbisoInN1YiI9PVgudmFsaWdufHwic3VwZXIiPT1YLnZhbGlnbj8ic2NyaXB0''@;'; put 'put ''IjoiIikrJyIvPicpLHJlLnB1c2god2Uuam9pbigiIikrIjwvZm9udD4iKX0pLCc8Zm9udHMgY291bnQ9IicrcmUubGVuZ3RoKyciPicrcmUuam9pbigiIikrIjwvZm9udHM+In0oKEguU3R5bGVzfHx7fSkuRm9udHN8fFtdKSxYW1gubGVuZ3RoXT1mdW5jdGlvbiB6OChIKXt2YXIgcmU9W107''@;'; put 'put ''cmV0dXJuIEguZm9yRWFjaChmdW5jdGlvbihYKXt2YXIgd2U9bnVsbDtpZihYLnN0b3BzJiZYLnN0b3BzLmxlbmd0aCl7dmFyIHhlPXt9O1guYW5nbGUmJih4ZS5kZWdyZWU9TWF0aC5yb3VuZChYLmFuZ2xlKSksd2U9WC5zdG9wcy5tYXAoZnVuY3Rpb24oRmUpe3JldHVybiBTaSgic3RvcCIs''@;'; put 'put ''dnMoRmUsImNvbG9yIiwhMCksbnVsbCE9RmUudj97cG9zaXRpb246RmUudn06e30pfSkscmUucHVzaCgiPGZpbGw+IitTaSgiZ3JhZGllbnRGaWxsIix3ZS5qb2luKCIiKSx4ZSkrIjwvZmlsbD4iKX1lbHNle2lmKFguZmdDb2xvcil7aWYod2U9KHdlfHwiIikrIjxmZ0NvbG9yICIsWC5mZ0Nv''@;'; put 'put ''bG9yLnRoZW1lKXdlKz0ndGhlbWU9IicrWC5mZ0NvbG9yLnRoZW1lKyciJysoWC5mZ0NvbG9yLnRpbnQ/JyB0aW50PSInK1guZmdDb2xvci50aW50KyciJzoiIikrIi8+IjtlbHNlIGlmKG51bGwhPVguZmdDb2xvci5pbmRleCYmbnVsbD09WC5mZ0NvbG9yLnJnYil3ZSs9J2luZGV4ZWQ9Iicr''@;'; put 'put ''WC5mZ0NvbG9yLmluZGV4KyciLz4nO2Vsc2UgaWYoWC5mZ0NvbG9yLmF1dG8pd2UrPSdhdXRvPSIxIi8+JztlbHNle2lmKG51bGw9PVguZmdDb2xvci5yZ2IpdGhyb3cgbmV3IEVycm9yKCJCYWQgY29sb3IgIitvbihYLmZnQ29sb3IpLmpvaW4oInwiKSk7d2UrPSdyZ2I9IkZGJytJbyhYLmZn''@;'; put 'put ''Q29sb3IucmdiKSsnIi8+J30ic29saWQiPT1YLnBhdHRlcm5UeXBlJiYhWC5iZ0NvbG9yJiYoWC5iZ0NvbG9yPXtpbmRleDo2NH0pfWlmKFguYmdDb2xvcilpZih3ZT0od2V8fCIiKSsiPGJnQ29sb3IgIixYLmJnQ29sb3IudGhlbWUpd2UrPSd0aGVtZT0iJytYLmJnQ29sb3IudGhlbWUrJyIv''@;'; put 'put ''Pic7ZWxzZSBpZihudWxsIT1YLmJnQ29sb3IuaW5kZXgmJm51bGw9PVguYmdDb2xvci5yZ2Ipd2UrPSdpbmRleGVkPSInK1guYmdDb2xvci5pbmRleCsnIi8+JztlbHNlIGlmKFguYmdDb2xvci5hdXRvKXdlKz0nYXV0bz0iMSIvPic7ZWxzZXtpZihudWxsPT1YLmJnQ29sb3IucmdiKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiQmFkIGNvbG9yICIrb24oWC5iZ0NvbG9yKS5qb2luKCJ8IikpO3dlKz0ncmdiPSJGRicrSW8oWC5iZ0NvbG9yLnJnYikrJyIvPid9cmUucHVzaCgiPGZpbGw+IitTaSgicGF0dGVybkZpbGwiLHdlLHtwYXR0ZXJuVHlwZTpYLnBhdHRlcm5UeXBlfSkrIjwvZmlsbD4iKX19''@;'; put 'put ''KSwnPGZpbGxzIGNvdW50PSInK3JlLmxlbmd0aCsnIj4nK3JlLmpvaW4oIiIpKyI8L2ZpbGxzPiJ9KChILlN0eWxlc3x8e30pLkZpbGxzfHxbXSksWFtYLmxlbmd0aF09ZnVuY3Rpb24gWjkoSCl7dmFyIHJlPVtdO3JldHVybiBILmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIHdlPVtdO3dlLnB1''@;'; put 'put ''c2goaTYoWC5sZWZ0LCJsZWZ0IikpLHdlLnB1c2goaTYoWC5yaWdodCwicmlnaHQiKSksd2UucHVzaChpNihYLnRvcCwidG9wIikpLHdlLnB1c2goaTYoWC5ib3R0b20sImJvdHRvbSIpKSx3ZS5wdXNoKGk2KFguZGlhZ29uYWwsImRpYWdvbmFsIikpLHJlLnB1c2goIjxib3JkZXI+Iit3ZS5q''@;'; put 'put ''b2luKCIiKSsiPC9ib3JkZXI+Iil9KSwnPGJvcmRlcnMgY291bnQ9IicrcmUubGVuZ3RoKyciPicrcmUuam9pbigiIikrIjwvYm9yZGVycz4ifSgoSC5TdHlsZXN8fHt9KS5Cb3JkZXJzfHxbXSksWFtYLmxlbmd0aF09ZnVuY3Rpb24gaUIoSCl7dmFyIHJlPVsnPHhmIG51bUZtdElkPSIwIiBm''@;'; put 'put ''b250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiLz4nXTtpZihIKWZvcih2YXIgWD0xO1g8SC5sZW5ndGg7KytYKXJlLnB1c2goU2koInhmIixudWxsLHtudW1GbXRJZDpIW1hdLm51bUZtdElkfHwwLGZvbnRJZDpIW1hdLmZvbnRJZHx8MCxmaWxsSWQ6SFtYXS5maWxsSWR8fDAsYm9y''@;'; put 'put ''ZGVySWQ6SFtYXS5ib3JkZXJJZHx8MH0pKTtyZXR1cm4nPGNlbGxTdHlsZVhmcyBjb3VudD0iJytyZS5sZW5ndGgrJyI+JytyZS5qb2luKCIiKSsiPC9jZWxsU3R5bGVYZnM+In0ocmUuY2VsbFN0eWxlWGZzKSwod2U9ZnVuY3Rpb24geEUoSCl7dmFyIHJlPVtdO3JldHVybiByZVtyZS5sZW5n''@;'; put 'put ''dGhdPVNpKCJjZWxsWGZzIixudWxsKSxILmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIHdlPVguYWxpZ25tZW50O2RlbGV0ZSBYLmFsaWdubWVudDt2YXIgeGU9WC5wcm90ZWN0aW9uO2RlbGV0ZSBYLnByb3RlY3Rpb247dmFyIEZlPXdlP1NpKCJhbGlnbm1lbnQiLG51bGwsd2UpOiIiO0ZlKz14''@;'; put 'put ''ZT9TaSgicHJvdGVjdGlvbiIsbnVsbCx7aGlkZGVuOnhlLmhpZGRlbj8xOjAsbG9ja2VkOnhlLmVkaXRhYmxlPzA6MX0pOiIiLHJlW3JlLmxlbmd0aF09U2koInhmIixGZXx8bnVsbCxYKSx3ZSYmKFguYWxpZ25tZW50PXdlKSx4ZSYmKFgucHJvdGVjdGlvbj14ZSl9KSxyZVtyZS5sZW5ndGhd''@;'; put 'put ''PSI8L2NlbGxYZnM+IiwyPT09cmUubGVuZ3RoPyIiOihyZVswXT1TaSgiY2VsbFhmcyIsbnVsbCx7Y291bnQ6cmUubGVuZ3RoLTJ9KS5yZXBsYWNlKCIvPiIsIj4iKSxyZS5qb2luKCIiKSl9KHJlLmNlbGxYZnMpKSYmKFhbWC5sZW5ndGhdPXdlKSxYW1gubGVuZ3RoXT1mdW5jdGlvbiBURShI''@;'; put 'put ''KXt2YXIgcmU9Wyc8Y2VsbFN0eWxlIG5hbWU9Ik5vcm1hbCIgeGZJZD0iMCIgYnVpbHRpbklkPSIwIi8+J107aWYoSClmb3IodmFyIFg9MTtYPEgubGVuZ3RoOysrWClyZS5wdXNoKFNpKCJjZWxsU3R5bGUiLG51bGwse25hbWU6SFtYXS5uYW1lLHhmSWQ6WH0pKTtyZXR1cm4nPGNlbGxTdHls''@;'; put 'put ''ZXMgY291bnQ9IicrcmUubGVuZ3RoKyciPicrcmUuam9pbigiIikrIjwvY2VsbFN0eWxlcz4ifShyZS5jZWxsU3R5bGVYZnMpLEguU3R5bGVzLkRYRnx8KEguU3R5bGVzLkRYRj1bXSk7dmFyIHhlPWZ1bmN0aW9uIEc4KEgscmUsWCl7dmFyIHdlPVsnPHRhYmxlU3R5bGVzIGNvdW50PSInKyhI''@;'; put 'put ''fHxbXSkubGVuZ3RoKyciIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtOSIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVNZWRpdW00IiddO3JldHVybiBIJiZILmxlbmd0aD8od2VbMF0rPSI+IixILmZvckVhY2goZnVuY3Rpb24oeGUpe3dlLnB1c2goZnVuY3Rpb24g''@;'; put 'put ''RGEoSCxyZSxYKXt2YXIgd2U9W107WyJ3aG9sZVRhYmxlIiwiaGVhZGVyUm93IiwidG90YWxSb3ciLCJmaXJzdENvbHVtbiIsImxhc3RDb2x1bW4iLCJmaXJzdFJvd1N0cmlwZSIsInNlY29uZFJvd1N0cmlwZSIsImZpcnN0Q29sdW1uU3RyaXBlIiwic2Vjb25kQ29sdW1uU3RyaXBlIiwiZmly''@;'; put 'put ''c3RIZWFkZXJDZWxsIiwibGFzdEhlYWRlckNlbGwiLCJmaXJzdFRvdGFsQ2VsbCIsImxhc3RUb3RhbENlbGwiLCJmaXJzdFN1YnRvdGFsQ29sdW1uIiwic2Vjb25kU3VidG90YWxDb2x1bW4iLCJ0aGlyZFN1YnRvdGFsQ29sdW1uIiwiZmlyc3RTdWJ0b3RhbFJvdyIsInNlY29uZFN1YnRvdGFs''@;'; put 'put ''Um93IiwidGhpcmRTdWJ0b3RhbFJvdyIsImJsYW5rUm93IiwiZmlyc3RDb2x1bW5TdWJoZWFkaW5nIiwic2Vjb25kQ29sdW1uU3ViaGVhZGluZyIsInRoaXJkQ29sdW1uU3ViaGVhZGluZyIsImZpcnN0Um93U3ViaGVhZGluZyIsInNlY29uZFJvd1N1YmhlYWRpbmciLCJ0aGlyZFJvd1N1Ymhl''@;'; put 'put ''YWRpbmciLCJwYWdlRmllbGRMYWJlbHMiLCJwYWdlRmllbGRWYWx1ZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXtpZihIW0ZlXSl7dmFyIFplPVg4KHJlLEhbRmVdKTt3ZS5wdXNoKCc8dGFibGVTdHlsZUVsZW1lbnQgZHhmSWQ9IicrWmUrJyIgdHlwZT0iJytGZSsnIi8+Jyl9fSk7dmFyIHhl''@;'; put 'put ''PSc8dGFibGVTdHlsZSBjb3VudD0iJyt3ZS5sZW5ndGgrJyIgcGl2b3Q9IicrICshIUgucGl2b3QrJyIgbmFtZT0iJytILm5hbWUrJyInO3JldHVybiB3ZS5sZW5ndGg/eGUrIj4iK3dlLmpvaW4oIiIpKyI8L3RhYmxlU3R5bGU+Ijp4ZSsiLz4ifSh4ZSxyZSkpfSksd2Uuam9pbigiIikrIjwv''@;'; put 'put ''dGFibGVTdHlsZXM+Iik6d2VbMF0rIi8+In0oKEguU3R5bGVzfHx7fSkuVGFibGV8fFtdLEguU3R5bGVzLkRYRik7cmV0dXJuIFhbWC5sZW5ndGhdPWZ1bmN0aW9uIFk5KEgscmUpe2lmKCFILmxlbmd0aClyZXR1cm4nPGR4ZnMgY291bnQ9IjAiLz4nO3ZhciBYPVsnPGR4ZnMgY291bnQ9Iicr''@;'; put 'put ''SC5sZW5ndGgrJyI+J107cmV0dXJuIEguZm9yRWFjaChmdW5jdGlvbih3ZSl7WC5wdXNoKGZ1bmN0aW9uIFc5KEgscmUpe3ZhciBYPXtib2xkOiJiIixpdGFsaWM6ImkiLHZhbGlnbjoidmVydEFsaWduIn0sd2U9WyI8ZHhmPiJdLHhlPVtdLEZlPVtdLFplPVtdLFVlPVtdO2lmKG9uKEgpLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oSXQpe3N3aXRjaChJdCl7Y2FzZSJib2xkIjpjYXNlIml0YWxpYyI6Y2FzZSJzdHJpa2UiOmNhc2UidW5kZXJsaW5lIjpjYXNlImNvbG9yIjpjYXNlInZhbGlnbiI6Y2FzZSJzeiI6Y2FzZSJuYW1lIjpjYXNlIm91dGxpbmUiOmNhc2Uic2hhZG93IjpjYXNlImNoYXJz''@;'; put 'put ''ZXQiOmNhc2UiZmFtaWx5IjpjYXNlImNvbmRlbnNlIjpjYXNlImV4dGVuZCI6Y2FzZSJzY2hlbWUiOnhlLnB1c2goSXQpO2JyZWFrO2Nhc2UiYmdDb2xvciI6Y2FzZSJmZ0NvbG9yIjpaZS5wdXNoKEl0KTticmVhaztjYXNlInoiOkZlLnB1c2goSXQpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJv''@;'; put 'put ''dHRvbSI6Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImRpYWdvbmFsIjpjYXNlInZlcnRpY2FsIjpjYXNlImhvcml6b250YWwiOlVlLnB1c2goSXQpO2JyZWFrO2Nhc2UicGF0dGVyblR5cGUiOmNhc2UiZGlhZ29uYWxEb3duIjpjYXNlImRpYWdvbmFsVXAiOmNhc2Uic3RvcHMiOmNhc2Ui''@;'; put 'put ''ZGVncmVlIjpicmVhaztkZWZhdWx0OnRocm93IlVucmVjb2duaXplZCAiK0l0KyIgaW4gRFhGIn19KSx4ZS5sZW5ndGg+MCYmKHdlLnB1c2goIjxmb250PiIpLHhlLmZvckVhY2goZnVuY3Rpb24oSXQpe3N3aXRjaChJdCl7Y2FzZSJib2xkIjpjYXNlIml0YWxpYyI6Y2FzZSJzdHJpa2UiOmNh''@;'; put 'put ''c2Uib3V0bGluZSI6Y2FzZSJzaGFkb3ciOmNhc2UiY29uZGVuc2UiOmNhc2UiZXh0ZW5kIjp3ZS5wdXNoKCI8IisoWFtJdF18fEl0KSsnIHZhbD0iJysoSFtJdF0/IjEiOiIwIikrJyIvPicpO2JyZWFrO2Nhc2UiY29sb3IiOndlLnB1c2godnMoSFtJdF0sSXQsITApKTticmVhaztjYXNlImZh''@;'; put 'put ''bWlseSI6Y2FzZSJuYW1lIjpjYXNlInN6IjpjYXNlInNjaGVtZSI6d2UucHVzaCgiPCIrKFhbSXRdfHxJdCkrJyB2YWw9IicrSFtJdF0rJyIvPicpO2JyZWFrO2Nhc2UidW5kZXJsaW5lIjp3ZS5wdXNoKCc8dSB2YWw9IicrejlbSFtJdF18fDBdKyciLz4nKTticmVhaztjYXNlInZhbGlnbiI6''@;'; put 'put ''d2UucHVzaCgnPHZlcnRBbGlnbiB2YWw9IicrSC52YWxpZ24rKCJzdWIiPT1ILnZhbGlnbnx8InN1cGVyIj09SC52YWxpZ24/InNjcmlwdCI6IiIpKyciLz4nKTticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkICIrSXQrIiA6IGZvbnQgRFhGIn19KSx3ZS5wdXNoKCI8L2ZvbnQ+Iikp''@;'; put 'put ''LEZlLmxlbmd0aD4wJiZ3ZS5wdXNoKCc8bnVtRm10IGZvcm1hdENvZGU9IicrT3IoSC56KSsnIiBudW1GbXRJZD0iJytmdW5jdGlvbiByUChILHJlKXtpZigibnVtYmVyIj09dHlwZW9mIEgpcmV0dXJuIEg7dmFyIFg9cmUucmV2c3NmW251bGwhPUg/SDoiR2VuZXJhbCJdLHdlPTYwO2lmKG51''@;'; put 'put ''bGw9PVgpZm9yKDt3ZTwzOTI7Kyt3ZSlpZihudWxsPT1yZS5zc2Zbd2VdKXJldHVybiBGLmxvYWQoSCx3ZSkscmUuc3NmW3dlXT1ILHJlLnJldnNzZltIXT13ZSx3ZTtyZXR1cm4gWH0oSC56LHJlKSsnIi8+JyksWmUubGVuZ3RoPjAmJih3ZS5wdXNoKCI8ZmlsbD4iKSx3ZS5wdXNoKCI8cGF0''@;'; put 'put ''dGVybkZpbGwiKyhILnBhdHRlcm5UeXBlPycgcGF0dGVyblR5cGU9IicrSC5wYXR0ZXJuVHlwZSsnIj4nOiI+IikpLFplLmZvckVhY2goZnVuY3Rpb24oSXQpe3N3aXRjaChJdCl7Y2FzZSJwYXR0ZXJuVHlwZSI6YnJlYWs7Y2FzZSJmZ0NvbG9yIjpjYXNlImJnQ29sb3IiOndlLnB1c2godnMo''@;'; put 'put ''SFtJdF0sSXQsITApKTticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkICIrSXQrIiA6IGZpbGwgRFhGIn19KSx3ZS5wdXNoKCI8L3BhdHRlcm5GaWxsPiIpLHdlLnB1c2goIjwvZmlsbD4iKSksW10ubGVuZ3RoPjApdGhyb3ciVW5zdXBwb3J0ZWQgYWxpZ24gLSBEWEYiO2lmKFVlLmxl''@;'; put 'put ''bmd0aD4wPyh3ZS5wdXNoKFsiPGJvcmRlciIsbnVsbCE9SC5kaWFnb25hbERvd24/JyBkaWFnb25hbERvd249IicrICshIUguZGlhZ29uYWxEb3duKyciJzoiIixudWxsIT1ILmRpYWdvbmFsVXA/JyBkaWFnb25hbFVwPSInKyArISFILmRpYWdvbmFsVXArJyInOiIiLCI+Il0uam9pbigiIikp''@;'; put 'put ''LFVlLmZvckVhY2goZnVuY3Rpb24oSXQpe3dlLnB1c2goaTYoSFtJdF0sSXQpKX0pLHdlLnB1c2goIjwvYm9yZGVyPiIpKToobnVsbCE9SC5kaWFnb25hbERvd258fG51bGwhPUguZGlhZ29uYWxVcCkmJndlLnB1c2goWyI8Ym9yZGVyIixudWxsIT1ILmRpYWdvbmFsRG93bj8nIGRpYWdvbmFs''@;'; put 'put ''RG93bj0iJysgKyEhSC5kaWFnb25hbERvd24rJyInOiIiLG51bGwhPUguZGlhZ29uYWxVcD8nIGRpYWdvbmFsVXA9IicrICshIUguZGlhZ29uYWxVcCsnIic6IiIsIi8+Il0uam9pbigiIikpLFtdLmxlbmd0aD4wKXRocm93IlVuc3VwcG9ydGVkIHByb3RlY3Rpb24gLSBEWEYiO3JldHVybiAx''@;'; put 'put ''PT13ZS5sZW5ndGg/IjxkeGYvPiI6d2Uuam9pbigiIikrIjwvZHhmPiJ9KHdlLHJlKSl9KSxYLmpvaW4oIiIpKyI8L2R4ZnM+In0oSC5TdHlsZXMuRFhGLHJlKSxYW1gubGVuZ3RoXT14ZSxYLmxlbmd0aD4yJiYoWFtYLmxlbmd0aF09Ijwvc3R5bGVTaGVldD4iLFhbMV09WFsxXS5yZXBsYWNl''@;'; put 'put ''KCIvPiIsIj4iKSksWC5qb2luKCIiKX1mdW5jdGlvbiBzQihILHJlLFgpe1h8fChYPXhpKDYrNCpyZS5sZW5ndGgpKSxYLndyaXRlX3NoaWZ0KDIsSCksc3UocmUsWCk7dmFyIHdlPVgubGVuZ3RoPlgubD9YLnNsaWNlKDAsWC5sKTpYO3JldHVybiBudWxsPT1YLmwmJihYLmw9WC5sZW5ndGgp''@;'; put 'put ''LHdlfWZ1bmN0aW9uIGtHKEgpe3JldHVybntjb2xvcjpYZyhIKSxwb3M6ZTIoSCl9fWR0LlNUWT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiO3ZhciB1Qj1bIm5vbmUiLCJzb2xpZCIsIm1lZGl1bUdy''@;'; put 'put ''YXkiLCJkYXJrR3JheSIsImxpZ2h0R3JheSIsImRhcmtIb3Jpem9udGFsIiwiZGFya1ZlcnRpY2FsIiwiZGFya0Rvd24iLCJkYXJrVXAiLCJkYXJrR3JpZCIsImRhcmtUcmVsbGlzIiwibGlnaHRIb3Jpem9udGFsIiwibGlnaHRWZXJ0aWNhbCIsImxpZ2h0RG93biIsImxpZ2h0VXAiLCJsaWdo''@;'; put 'put ''dEdyaWQiLCJsaWdodFRyZWxsaXMiLCJncmF5MTI1IiwiZ3JheTA2MjUiXSxTRz1udCh1Qiksd209WyJnZW5lcmFsIiwibGVmdCIsImNlbnRlciIsInJpZ2h0IiwiZmlsbCIsImp1c3RpZnkiLCJjZW50ZXJDb250aW51b3VzIiwiZGlzdHJpYnV0ZWQiXSxXOD1bInRvcCIsImNlbnRlciIsImJv''@;'; put 'put ''dHRvbSIsImp1c3RpZnkiLCJkaXN0cmlidXRlZCJdO2Z1bmN0aW9uIFU5KEgscmUsWCl7WHx8KFg9eGkoMTYpKSxYLndyaXRlX3NoaWZ0KDIscmV8fDApLFgud3JpdGVfc2hpZnQoMixILm51bUZtdElkfHwwKSxYLndyaXRlX3NoaWZ0KDIsSC5mb250SWR8fDApLFgud3JpdGVfc2hpZnQoMixI''@;'; put 'put ''LmZpbGxJZHx8MCksWC53cml0ZV9zaGlmdCgyLEguYm9yZGVySWR8fDApLFgud3JpdGVfc2hpZnQoMSxILmFsaWdubWVudCYmSC5hbGlnbm1lbnQudGV4dFJvdGF0aW9ufHwwKSxYLndyaXRlX3NoaWZ0KDEsSC5hbGlnbm1lbnQmJkguYWxpZ25tZW50LmluZGVudHx8MCk7dmFyIHdlPTAseGU9''@;'; put 'put ''MDtpZihILmFsaWdubWVudCl7aWYoSC5hbGlnbm1lbnQuaG9yaXpvbnRhbCl7dmFyIEZlPXdtLmluZGV4T2YoSC5hbGlnbm1lbnQuaG9yaXpvbnRhbCk7RmU8MCYmKEZlPTApLHdlfD1GZX1pZihILmFsaWdubWVudC52ZXJ0aWNhbCl7dmFyIFplPVc4LmluZGV4T2YoSC5hbGlnbm1lbnQudmVy''@;'; put 'put ''dGljYWwpO1plPDAmJihaZT0yKSx3ZXw9WmU8PDN9SC5hbGlnbm1lbnQud3JhcFRleHQmJih3ZXw9NjQpLEguYWxpZ25tZW50LnNocmlua1RvRml0JiYoeGV8PTEpfXJldHVybiBYLndyaXRlX3NoaWZ0KDEsd2UpLFgud3JpdGVfc2hpZnQoMSx4ZSksWC53cml0ZV9zaGlmdCgxLDApLFgud3Jp''@;'; put 'put ''dGVfc2hpZnQoMSwwKSxYfXZhciBrMz1bIm5vbmUiLCJ0aGluIiwibWVkaXVtIiwiZGFzaGVkIiwiZG90dGVkIiwidGhpY2siLCJkb3VibGUiLCJoYWlyIiwibWVkaXVtRGFzaGVkIiwiZGFzaERvdCIsIm1lZGl1bURhc2hEb3QiLCJkYXNoRG90RG90IiwibWVkaXVtRGFzaERvdERvdCIsInNs''@;'; put 'put ''YW50RGFzaERvdCJdO2Z1bmN0aW9uIFI0KEgpe3ZhciByZT1ILnJlYWRfc2hpZnQoMSk7SC5sKz0xO3ZhciBYPVhnKEgpO3JldHVybntzdHlsZTprM1tyZV0sY29sb3I6WH19ZnVuY3Rpb24gYm0oSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoMTApKSxIJiZILnN0eWxlJiYiIiE9SC5zdHlsZSYm''@;'; put 'put ''Im5vbmUiIT1ILnN0eWxlJiYtMSE9PWszLmluZGV4T2YoSC5zdHlsZSk/KHJlLndyaXRlX3NoaWZ0KDEsazMuaW5kZXhPZihILnN0eWxlKSkscmUud3JpdGVfc2hpZnQoMSwwKSxILmNvbG9yP0tnKEguY29sb3IscmUpOihyZS53cml0ZV9zaGlmdCg0LDApLHJlLndyaXRlX3NoaWZ0KDQsMCkp''@;'; put 'put ''KToocmUud3JpdGVfc2hpZnQoMSwwKSxyZS53cml0ZV9zaGlmdCgxLDApLHJlLndyaXRlX3NoaWZ0KDQsMCkscmUud3JpdGVfc2hpZnQoNCwwKSkscmV9ZnVuY3Rpb24gT0UoSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoNTIpKSxyZS53cml0ZV9zaGlmdCg0LEgueGZJZCkscmUud3JpdGVfc2hp''@;'; put 'put ''ZnQoMiwxKSxyZS53cml0ZV9zaGlmdCgxLCtILmJ1aWx0aW5JZCkscmUud3JpdGVfc2hpZnQoMSwwKSxQcChILm5hbWV8fCIiLHJlKSxyZS5sZW5ndGg+cmUubD9yZS5zbGljZSgwLHJlLmwpOnJlfWZ1bmN0aW9uIF9tKEgscmUpeyFyZXx8IXJlLnRoZW1lRWxlbWVudHN8fCFyZS50aGVtZUVs''@;'; put 'put ''ZW1lbnRzLmNsclNjaGVtZXx8bnVsbCE9SC50aGVtZSYmKEgucmdiPXZtKHJlLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW0gudGhlbWVdLnJnYixILnRpbnR8fDApKX1mdW5jdGlvbiBIRShILHJlKXt2YXIgWD12MSgpO3JldHVybiBDMChYLCJCcnRCZWdpblN0eWxlU2hlZXQiKSxmdW5jdGlv''@;'; put 'put ''biBSRShILHJlKXtpZihyZSl7dmFyIFg9MDtbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtmb3IodmFyIHhlPXdlWzBdO3hlPD13ZVsxXTsrK3hlKW51bGwhPXJlW3hlXSYmKytYfSksMCE9WCYmKEMwKEgsIkJydEJlZ2luRm10cyIseWgoWCkp''@;'; put 'put ''LFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWzUwLDM5Ml1dLmZvckVhY2goZnVuY3Rpb24od2Upe2Zvcih2YXIgeGU9d2VbMF07eGU8PXdlWzFdOysreGUpbnVsbCE9cmVbeGVdJiZDMChILCJCcnRGbXQiLHNCKHhlLHJlW3hlXSkpfSksQzAoSCwiQnJ0RW5kRm10cyIpKX19KFgsSC5TU0YpLGZ1''@;'; put 'put ''bmN0aW9uIEJFKEgscmUpe3ZhciBYPXJlLmxlbmd0aDswIT1YJiYoQzAoSCwiQnJ0QmVnaW5Gb250cyIseWgoWCkpLHJlLmZvckVhY2goZnVuY3Rpb24od2Upe0MwKEgsIkJydEZvbnQiLGZ1bmN0aW9uIExFKEgscmUpe3JlfHwocmU9eGkoMTUzKSkscmUud3JpdGVfc2hpZnQoMiwyMCpILnN6''@;'; put 'put ''KSxmdW5jdGlvbiBaTShILHJlKXtyZXx8KHJlPXhpKDIpKSxyZS53cml0ZV9zaGlmdCgxLChILml0YWxpYz8yOjApfChILnN0cmlrZT84OjApfChILm91dGxpbmU/MTY6MCl8KEguc2hhZG93PzMyOjApfChILmNvbmRlbnNlPzY0OjApfChILmV4dGVuZD8xMjg6MCkpLHJlLndyaXRlX3NoaWZ0''@;'; put 'put ''KDEsMCl9KEgscmUpLHJlLndyaXRlX3NoaWZ0KDIsSC5ib2xkPzcwMDo0MDApO3ZhciBYPTA7InN1cGVyIj09SC52YWxpZ24/WD0xOiJzdWIiPT1ILnZhbGlnbiYmKFg9MikscmUud3JpdGVfc2hpZnQoMixYKSxyZS53cml0ZV9zaGlmdCgxLEgudW5kZXJsaW5lfHwwKSxyZS53cml0ZV9zaGlm''@;'; put 'put ''dCgxLEguZmFtaWx5fHwwKSxyZS53cml0ZV9zaGlmdCgxLEguY2hhcnNldHx8MCkscmUud3JpdGVfc2hpZnQoMSwwKSxLZyhILmNvbG9yLHJlKTt2YXIgd2U9MDtyZXR1cm4ibWFqb3IiPT1ILnNjaGVtZSYmKHdlPTEpLCJtaW5vciI9PUguc2NoZW1lJiYod2U9MikscmUud3JpdGVfc2hpZnQo''@;'; put 'put ''MSx3ZSksc3UoSC5uYW1lLHJlKSxyZS5sZW5ndGg+cmUubD9yZS5zbGljZSgwLHJlLmwpOnJlfSh3ZSkpfSksQzAoSCwiQnJ0RW5kRm9udHMiKSl9KFgsKEguU3R5bGVzfHx7fSkuRm9udHN8fFtdKSxmdW5jdGlvbiBQRShILHJlKXt2YXIgWD1yZS5sZW5ndGg7MCE9WCYmKEMwKEgsIkJydEJl''@;'; put 'put ''Z2luRmlsbHMiLHloKFgpKSxyZS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtDMChILCJCcnRGaWxsIixmdW5jdGlvbiBmQihILHJlKXtyZXx8KHJlPXhpKDg0KSk7dmFyIFg9U0dbSC5wYXR0ZXJuVHlwZV07bnVsbD09WCYmKFg9NDApLHJlLndyaXRlX3NoaWZ0KDQsWD0rWCk7dmFyIHdlPTA7aWYo''@;'; put 'put ''NDAhPVgpZm9yKEtnKEguZmdDb2xvcnx8e2luZGV4OjY0fSxyZSksS2coSC5iZ0NvbG9yfHx7aW5kZXg6NjV9LHJlKTt3ZTwxMjsrK3dlKXJlLndyaXRlX3NoaWZ0KDQsMCk7ZWxzZXtmb3IoO3dlPDQ7Kyt3ZSlyZS53cml0ZV9zaGlmdCg0LDApO2Zvcig7d2U8MTI7Kyt3ZSlyZS53cml0ZV9z''@;'; put 'put ''aGlmdCg0LDApfXJldHVybiByZS5sZW5ndGg+cmUubD9yZS5zbGljZSgwLHJlLmwpOnJlfSh3ZSkpfSksQzAoSCwiQnJ0RW5kRmlsbHMiKSl9KFgsKEguU3R5bGVzfHx7fSkuRmlsbHN8fFtdKSxmdW5jdGlvbiBkQihILHJlKXt2YXIgWD1yZS5sZW5ndGg7MCE9WCYmKEMwKEgsIkJydEJlZ2lu''@;'; put 'put ''Qm9yZGVycyIseWgoWCkpLHJlLmZvckVhY2goZnVuY3Rpb24od2Upe0MwKEgsIkJydEJvcmRlciIsZnVuY3Rpb24gWTgoSCxyZSl7cmV0dXJuIHJlfHwocmU9eGkoNTEpKSxyZS53cml0ZV9zaGlmdCgxLDApLGJtKEgudG9wLHJlKSxibShILmJvdHRvbSxyZSksYm0oSC5sZWZ0LHJlKSxibShI''@;'; put 'put ''LnJpZ2h0LHJlKSxibShudWxsLHJlKSxyZS5sZW5ndGg+cmUubD9yZS5zbGljZSgwLHJlLmwpOnJlfSh3ZSkpfSksQzAoSCwiQnJ0RW5kQm9yZGVycyIpKX0oWCwoSC5TdHlsZXN8fHt9KS5Cb3JkZXJzfHxbXSksZnVuY3Rpb24gR2IoSCxyZSl7dmFyIFg9MTtpZihyZSYmKFg9cmUubGVuZ3Ro''@;'; put 'put ''KSxDMChILCJCcnRCZWdpbkNlbGxTdHlsZVhGcyIseWgoWCkpLEMwKEgsIkJydFhGIixVOSh7bnVtRm10SWQ6MCxmb250SWQ6MCxmaWxsSWQ6MCxib3JkZXJJZDowfSw2NTUzNSkpLHJlKWZvcih2YXIgd2U9MTt3ZTxyZS5sZW5ndGg7Kyt3ZSlDMChILCJCcnRYRiIsVTkoe251bUZtdElkOnJl''@;'; put 'put ''W3dlXS5udW1GbXRJZHx8MCxmb250SWQ6cmVbd2VdLmZvbnRJZHx8MCxmaWxsSWQ6cmVbd2VdLmZpbGxJZHx8MCxib3JkZXJJZDpyZVt3ZV0uYm9yZGVySWR8fDB9LDY1NTM1KSk7QzAoSCwiQnJ0RW5kQ2VsbFN0eWxlWEZzIil9KFgscmUuY2VsbFN0eWxlWGZzKSxmdW5jdGlvbiBwQihILHJl''@;'; put 'put ''KXtDMChILCJCcnRCZWdpbkNlbGxYRnMiLHloKHJlLmxlbmd0aCkpLHJlLmZvckVhY2goZnVuY3Rpb24oWCl7QzAoSCwiQnJ0WEYiLFU5KFgsMCkpfSksQzAoSCwiQnJ0RW5kQ2VsbFhGcyIpfShYLHJlLmNlbGxYZnMpLGZ1bmN0aW9uIGdCKEgscmUpe3ZhciBYPTE7aWYocmUmJihYPXJlLmxl''@;'; put 'put ''bmd0aCksQzAoSCwiQnJ0QmVnaW5TdHlsZXMiLHloKFgpKSxDMChILCJCcnRTdHlsZSIsT0Uoe3hmSWQ6MCxidWlsdGluSWQ6MCxuYW1lOiJOb3JtYWwifSkpLHJlKWZvcih2YXIgd2U9MTt3ZTxyZS5sZW5ndGg7Kyt3ZSlDMChILCJCcnRTdHlsZSIsT0Uoe3hmSWQ6d2UsYnVpbHRpbklkOjAs''@;'; put 'put ''bmFtZTpyZVt3ZV0ubmFtZX0pKTtDMChILCJCcnRFbmRTdHlsZXMiKX0oWCxyZS5jZWxsU3R5bGVYZnMpLGZ1bmN0aW9uIG1CKEgpe0MwKEgsIkJydEJlZ2luRFhGcyIseWgoMCkpLEMwKEgsIkJydEVuZERYRnMiKX0oWCksZnVuY3Rpb24gRkUoSCl7QzAoSCwiQnJ0QmVnaW5UYWJsZVN0eWxl''@;'; put 'put ''cyIsZnVuY3Rpb24gaEIoSCxyZSxYKXt2YXIgd2U9eGkoMjA1Mik7cmV0dXJuIHdlLndyaXRlX3NoaWZ0KDQsSCksUHAocmUsd2UpLFBwKFgsd2UpLHdlLmxlbmd0aD53ZS5sP3dlLnNsaWNlKDAsd2UubCk6d2V9KDAsIlRhYmxlU3R5bGVNZWRpdW05IiwiUGl2b3RTdHlsZU1lZGl1bTQiKSks''@;'; put 'put ''QzAoSCwiQnJ0RW5kVGFibGVTdHlsZXMiKX0oWCksQzAoWCwiQnJ0RW5kU3R5bGVTaGVldCIpLFguZW5kKCl9ZHQuVEhFTUU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdGhlbWUiO3ZhciBDYz1bIjwvYTpsdDE+''@;'; put 'put ''IiwiPC9hOmRrMT4iLCI8L2E6bHQyPiIsIjwvYTpkazI+IiwiPC9hOmFjY2VudDE+IiwiPC9hOmFjY2VudDI+IiwiPC9hOmFjY2VudDM+IiwiPC9hOmFjY2VudDQ+IiwiPC9hOmFjY2VudDU+IiwiPC9hOmFjY2VudDY+IiwiPC9hOmhsaW5rPiIsIjwvYTpmb2xIbGluaz4iXTtmdW5jdGlvbiBX''@;'; put 'put ''YihILHJlLFgpe3JlLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lPVtdO3ZhciB3ZT17fTsoSFswXS5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHhlKXt2YXIgRmU9cXQoeGUpO3N3aXRjaChGZVswXSl7Y2FzZSI8YTpjbHJTY2hlbWUiOmNhc2UiPC9hOmNsclNjaGVtZT4iOmNhc2Ui''@;'; put 'put ''PC9hOnNyZ2JDbHI+IjpjYXNlIjwvYTpzeXNDbHI+IjpicmVhaztjYXNlIjxhOnNyZ2JDbHIiOndlLnJnYj1GZS52YWw7YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOndlLnJnYj1GZS5sYXN0Q2xyO2JyZWFrO2Nhc2UiPGE6ZGsxPiI6Y2FzZSI8L2E6ZGsxPiI6Y2FzZSI8YTpsdDE+IjpjYXNlIjwv''@;'; put 'put ''YTpsdDE+IjpjYXNlIjxhOmRrMj4iOmNhc2UiPC9hOmRrMj4iOmNhc2UiPGE6bHQyPiI6Y2FzZSI8L2E6bHQyPiI6Y2FzZSI8YTphY2NlbnQxPiI6Y2FzZSI8L2E6YWNjZW50MT4iOmNhc2UiPGE6YWNjZW50Mj4iOmNhc2UiPC9hOmFjY2VudDI+IjpjYXNlIjxhOmFjY2VudDM+IjpjYXNlIjwv''@;'; put 'put ''YTphY2NlbnQzPiI6Y2FzZSI8YTphY2NlbnQ0PiI6Y2FzZSI8L2E6YWNjZW50ND4iOmNhc2UiPGE6YWNjZW50NT4iOmNhc2UiPC9hOmFjY2VudDU+IjpjYXNlIjxhOmFjY2VudDY+IjpjYXNlIjwvYTphY2NlbnQ2PiI6Y2FzZSI8YTpobGluaz4iOmNhc2UiPC9hOmhsaW5rPiI6Y2FzZSI8YTpm''@;'; put 'put ''b2xIbGluaz4iOmNhc2UiPC9hOmZvbEhsaW5rPiI6Ii8iPT09RmVbMF0uY2hhckF0KDEpPyhyZS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtDYy5pbmRleE9mKEZlWzBdKV09d2Usd2U9e30pOndlLm5hbWU9RmVbMF0uc2xpY2UoMyxGZVswXS5sZW5ndGgtMSk7YnJlYWs7ZGVmYXVsdDppZihY''@;'; put 'put ''JiZYLldURil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCAiK0ZlWzBdKyIgaW4gY2xyU2NoZW1lIil9fSl9ZnVuY3Rpb24gTkUoKXt9ZnVuY3Rpb24gWWIoKXt9dmFyIHRjPS88YTpjbHJTY2hlbWUoW14+XSopPltcc1xTXSo8XC9hOmNsclNjaGVtZT4vLENtPS88YTpmb250U2NoZW1l''@;'; put 'put ''KFtePl0qKT5bXHNcU10qPFwvYTpmb250U2NoZW1lPi8sVWI9LzxhOmZtdFNjaGVtZShbXj5dKik+W1xzXFNdKjxcL2E6Zm10U2NoZW1lPi8sUWI9LzxhOnRoZW1lRWxlbWVudHMoW14+XSopPltcc1xTXSo8XC9hOnRoZW1lRWxlbWVudHM+LztmdW5jdGlvbiBrbShILHJlKXtpZighSHx8MD09''@;'; put 'put ''PUgubGVuZ3RoKXJldHVybiBrbShKYigpKTt2YXIgWCx3ZT17fTtpZighKFg9SC5tYXRjaChRYikpKXRocm93IG5ldyBFcnJvcigidGhlbWVFbGVtZW50cyBub3QgZm91bmQgaW4gdGhlbWUiKTtyZXR1cm4gZnVuY3Rpb24gdkIoSCxyZSxYKXt2YXIgd2U7cmUudGhlbWVFbGVtZW50cz17fSxb''@;'; put 'put ''WyJjbHJTY2hlbWUiLHRjLFdiXSxbImZvbnRTY2hlbWUiLENtLE5FXSxbImZtdFNjaGVtZSIsVWIsWWJdXS5mb3JFYWNoKGZ1bmN0aW9uKHhlKXtpZighKHdlPUgubWF0Y2goeGVbMV0pKSl0aHJvdyBuZXcgRXJyb3IoeGVbMF0rIiBub3QgZm91bmQgaW4gdGhlbWVFbGVtZW50cyIpO3hlWzJd''@;'; put 'put ''KHdlLHJlLFgpfSl9KFhbMF0sd2UscmUpLHdlLnJhdz1ILHdlfWZ1bmN0aW9uIEpiKEgscmUpe2lmKHJlJiZyZS50aGVtZVhMU1gpcmV0dXJuIHJlLnRoZW1lWExTWDtpZihIJiYic3RyaW5nIj09dHlwZW9mIEgucmF3KXJldHVybiBILnJhdzt2YXIgWD1bY25dO3JldHVybiBYW1gubGVuZ3Ro''@;'; put 'put ''XT0nPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+JyxYW1gubGVuZ3RoXT0iPGE6dGhlbWVFbGVtZW50cz4iLFhbWC5sZW5ndGhdPSc8YTpjbHJTY2hlbWUgbmFtZT0iT2Zm''@;'; put 'put ''aWNlIj4nLFhbWC5sZW5ndGhdPSc8YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIgbGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT4nLFhbWC5sZW5ndGhdPSc8YTpsdDE+PGE6c3lzQ2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPicsWFtYLmxlbmd0aF09''@;'; put 'put ''JzxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iMUY0OTdEIi8+PC9hOmRrMj4nLFhbWC5sZW5ndGhdPSc8YTpsdDI+PGE6c3JnYkNsciB2YWw9IkVFRUNFMSIvPjwvYTpsdDI+JyxYW1gubGVuZ3RoXT0nPGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNEY4MUJEIi8+PC9hOmFjY2VudDE+JyxYW1gu''@;'; put 'put ''bGVuZ3RoXT0nPGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iQzA1MDREIi8+PC9hOmFjY2VudDI+JyxYW1gubGVuZ3RoXT0nPGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iOUJCQjU5Ii8+PC9hOmFjY2VudDM+JyxYW1gubGVuZ3RoXT0nPGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iODA2''@;'; put 'put ''NEEyIi8+PC9hOmFjY2VudDQ+JyxYW1gubGVuZ3RoXT0nPGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD0iNEJBQ0M2Ii8+PC9hOmFjY2VudDU+JyxYW1gubGVuZ3RoXT0nPGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD0iRjc5NjQ2Ii8+PC9hOmFjY2VudDY+JyxYW1gubGVuZ3RoXT0nPGE6aGxp''@;'; put 'put ''bms+PGE6c3JnYkNsciB2YWw9IjAwMDBGRiIvPjwvYTpobGluaz4nLFhbWC5sZW5ndGhdPSc8YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iODAwMDgwIi8+PC9hOmZvbEhsaW5rPicsWFtYLmxlbmd0aF09IjwvYTpjbHJTY2hlbWU+IixYW1gubGVuZ3RoXT0nPGE6Zm9udFNjaGVtZSBuYW1l''@;'; put 'put ''PSJPZmZpY2UiPicsWFtYLmxlbmd0aF09IjxhOm1ham9yRm9udD4iLFhbWC5sZW5ndGhdPSc8YTpsYXRpbiB0eXBlZmFjZT0iQ2FtYnJpYSIvPicsWFtYLmxlbmd0aF09JzxhOmVhIHR5cGVmYWNlPSIiLz4nLFhbWC5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxYW1gubGVuZ3RoXT0n''@;'; put 'put ''PGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSJcdWZmMmRcdWZmMzMgXHVmZjMwXHUzMGI0XHUzMGI3XHUzMGMzXHUzMGFmIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbmciIHR5cGVmYWNlPSJcdWI5ZDFcdWM3NDAgXHVhY2UwXHViNTE1Ii8+JyxYW1gubGVuZ3Ro''@;'; put 'put ''XT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSJcdTViOGJcdTRmNTMiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9Ilx1NjViMFx1N2QzMFx1NjYwZVx1OWFkNCIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBl''@;'; put 'put ''ZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhlYnIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPicsWFtYLmxlbmd0aF09JzxhOmZv''@;'; put 'put ''bnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+JyxYW1gubGVuZ3RoXT0nPGE6''@;'; put 'put ''Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJNb29sQm9yYW4iLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicsWFtYLmxlbmd0aF09''@;'; put 'put ''JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNy''@;'; put 'put ''b3NvZnQgWWkgQmFpdGkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQg''@;'; put 'put ''c2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0YW1pIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicsWFtYLmxlbmd0aF09JzxhOmZv''@;'; put 'put ''bnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIgdHlwZWZhY2U9IkthbGluZ2EiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLFhb''@;'; put 'put ''WC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29sYSBQb3RhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJN''@;'; put 'put ''b25nb2xpYW4gQmFpdGkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJVaWdoIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFVpZ2h1ciIvPicsWFtYLmxlbmd0aF09Jzxh''@;'; put 'put ''OmZvbnQgc2NyaXB0PSJHZW9yIiB0eXBlZmFjZT0iU3lsZmFlbiIvPicsWFtYLmxlbmd0aF09IjwvYTptYWpvckZvbnQ+IixYW1gubGVuZ3RoXT0iPGE6bWlub3JGb250PiIsWFtYLmxlbmd0aF09JzxhOmxhdGluIHR5cGVmYWNlPSJDYWxpYnJpIi8+JyxYW1gubGVuZ3RoXT0nPGE6ZWEgdHlw''@;'; put 'put ''ZWZhY2U9IiIvPicsWFtYLmxlbmd0aF09JzxhOmNzIHR5cGVmYWNlPSIiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSnBhbiIgdHlwZWZhY2U9Ilx1ZmYyZFx1ZmYzMyBcdWZmMzBcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWYiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlw''@;'; put 'put ''dD0iSGFuZyIgdHlwZWZhY2U9Ilx1YjlkMVx1Yzc0MCBcdWFjZTBcdWI1MTUiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Ilx1NWI4Ylx1NGY1MyIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0iXHU2NWIwXHU3''@;'; put 'put ''ZDMwXHU2NjBlXHU5YWQ0Ii8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iQXJpYWwiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhaSIg''@;'; put 'put ''dHlwZWZhY2U9IlRhaG9tYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdWpy''@;'; put 'put ''IiB0eXBlZmFjZT0iU2hydXRpIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0i''@;'; put 'put ''R3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz4nLFhbWC5sZW5ndGhd''@;'; put 'put ''PSc8YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVm''@;'; put 'put ''YWNlPSJNViBCb2xpIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGFtbCIg''@;'; put 'put ''dHlwZWZhY2U9IkxhdGhhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQg''@;'; put 'put ''c2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz4nLFhbWC5sZW5n''@;'; put 'put ''dGhdPSc8YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29m''@;'; put 'put ''dCBVaWdodXIiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz4nLFhbWC5sZW5ndGhdPSI8L2E6bWlub3JGb250PiIsWFtYLmxlbmd0aF09IjwvYTpmb250U2NoZW1lPiIsWFtYLmxlbmd0aF09JzxhOmZtdFNjaGVtZSBuYW1lPSJPZmZp''@;'; put 'put ''Y2UiPicsWFtYLmxlbmd0aF09IjxhOmZpbGxTdHlsZUxzdD4iLFhbWC5sZW5ndGhdPSc8YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPicsWFtYLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxYW1gubGVuZ3RoXT0iPGE6''@;'; put 'put ''Z3NMc3Q+IixYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjUwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIzNTAwMCI+PGE6c2No''@;'; put 'put ''ZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIzNzAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsWFtYLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjE1MDAwIi8+''@;'; put 'put ''PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0iPC9hOmdzTHN0PiIsWFtYLmxlbmd0aF09JzxhOmxpbiBhbmc9IjE2MjAwMDAwIiBzY2FsZWQ9IjEiLz4nLFhbWC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixYW1gubGVuZ3RoXT0nPGE6''@;'; put 'put ''Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLFhbWC5sZW5ndGhdPSI8YTpnc0xzdD4iLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMTAwMDAwIi8+PGE6c2hhZGUgdmFsPSIxMDAwMDAiLz48YTpzYXRNb2QgdmFsPSIx''@;'; put 'put ''MzAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVt''@;'; put 'put ''ZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0iPC9hOmdzTHN0PiIsWFtYLmxlbmd0aF09JzxhOmxpbiBhbmc9IjE2MjAwMDAwIiBzY2FsZWQ9IjAiLz4nLFhbWC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixYW1gubGVuZ3RoXT0iPC9hOmZpbGxTdHlsZUxzdD4iLFhbWC5sZW5ndGhdPSI8YTps''@;'; put 'put ''blN0eWxlTHN0PiIsWFtYLmxlbmd0aF09JzxhOmxuIHc9Ijk1MjUiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEwNTAwMCIvPjwvYTpzY2hl''@;'; put 'put ''bWVDbHI+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicsWFtYLmxlbmd0aF09JzxhOmxuIHc9IjI1NDAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRG''@;'; put 'put ''aWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxYW1gubGVuZ3RoXT0nPGE6bG4gdz0iMzgxMDAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2gg''@;'; put 'put ''dmFsPSJzb2xpZCIvPjwvYTpsbj4nLFhbWC5sZW5ndGhdPSI8L2E6bG5TdHlsZUxzdD4iLFhbWC5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZUxzdD4iLFhbWC5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLFhbWC5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixYW1gubGVuZ3RoXT0nPGE6b3V0ZXJT''@;'; put 'put ''aGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMDAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzgwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicsWFtYLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+''@;'; put 'put ''IixYW1gubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIsWFtYLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIsWFtYLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLFhbWC5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdp''@;'; put 'put ''dGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxYW1gubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLFhbWC5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixYW1gubGVuZ3RoXT0iPGE6ZWZm''@;'; put 'put ''ZWN0U3R5bGU+IixYW1gubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIsWFtYLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjMwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM1''@;'; put 'put ''MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLFhbWC5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIsWFtYLmxlbmd0aF09JzxhOnNjZW5lM2Q+PGE6Y2FtZXJhIHByc3Q9Im9ydGhvZ3JhcGhpY0Zyb250Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMCIvPjwvYTpjYW1lcmE+''@;'; put 'put ''PGE6bGlnaHRSaWcgcmlnPSJ0aHJlZVB0IiBkaXI9InQiPjxhOnJvdCBsYXQ9IjAiIGxvbj0iMCIgcmV2PSIxMjAwMDAwIi8+PC9hOmxpZ2h0UmlnPjwvYTpzY2VuZTNkPicsWFtYLmxlbmd0aF09JzxhOnNwM2Q+PGE6YmV2ZWxUIHc9IjYzNTAwIiBoPSIyNTQwMCIvPjwvYTpzcDNkPicsWFtY''@;'; put 'put ''Lmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLFhbWC5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGVMc3Q+IixYW1gubGVuZ3RoXT0iPGE6YmdGaWxsU3R5bGVMc3Q+IixYW1gubGVuZ3RoXT0nPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLFhb''@;'; put 'put ''WC5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicsWFtYLmxlbmd0aF09IjxhOmdzTHN0PiIsWFtYLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI0MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwv''@;'; put 'put ''YTpzY2hlbWVDbHI+PC9hOmdzPicsWFtYLmxlbmd0aF09JzxhOmdzIHBvcz0iNDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNDUwMDAiLz48YTpzaGFkZSB2YWw9Ijk5MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+''@;'; put 'put ''JyxYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9IjIwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjU1MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0iPC9hOmdzTHN0PiIsWFtYLmxlbmd0aF09''@;'; put 'put ''JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSItODAwMDAiIHI9IjUwMDAwIiBiPSIxODAwMDAiLz48L2E6cGF0aD4nLFhbWC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixYW1gubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLFhb''@;'; put 'put ''WC5sZW5ndGhdPSI8YTpnc0xzdD4iLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iODAwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9''@;'; put 'put ''IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iMzAwMDAiLz48YTpzYXRNb2QgdmFsPSIyMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLFhbWC5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixYW1gubGVuZ3RoXT0nPGE6cGF0aCBwYXRoPSJjaXJjbGUiPjxh''@;'; put 'put ''OmZpbGxUb1JlY3QgbD0iNTAwMDAiIHQ9IjUwMDAwIiByPSI1MDAwMCIgYj0iNTAwMDAiLz48L2E6cGF0aD4nLFhbWC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixYW1gubGVuZ3RoXT0iPC9hOmJnRmlsbFN0eWxlTHN0PiIsWFtYLmxlbmd0aF09IjwvYTpmbXRTY2hlbWU+IixYW1gubGVuZ3Ro''@;'; put 'put ''XT0iPC9hOnRoZW1lRWxlbWVudHM+IixYW1gubGVuZ3RoXT0iPGE6b2JqZWN0RGVmYXVsdHM+IixYW1gubGVuZ3RoXT0iPGE6c3BEZWY+IixYW1gubGVuZ3RoXT0nPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PSIxIj48YTpzY2hlbWVDbHIg''@;'; put 'put ''dmFsPSJhY2NlbnQxIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYgaWR4PSIzIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD0iMiI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9Im1p''@;'; put 'put ''bm9yIj48YTpzY2hlbWVDbHIgdmFsPSJsdDEiLz48L2E6Zm9udFJlZj48L2E6c3R5bGU+JyxYW1gubGVuZ3RoXT0iPC9hOnNwRGVmPiIsWFtYLmxlbmd0aF09IjxhOmxuRGVmPiIsWFtYLmxlbmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVm''@;'; put 'put ''IGlkeD0iMiI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9IjEiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZWZmZWN0''@;'; put 'put ''UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0idHgxIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPicsWFtYLmxlbmd0aF09IjwvYTpsbkRlZj4iLFhbWC5sZW5ndGhdPSI8L2E6b2JqZWN0RGVmYXVsdHM+IixYW1gubGVuZ3RoXT0iPGE6ZXh0cmFDbHJTY2hlbWVM''@;'; put 'put ''c3QvPiIsWFtYLmxlbmd0aF09IjwvYTp0aGVtZT4iLFguam9pbigiIil9ZnVuY3Rpb24gWGIoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCgyKSxYPUgucmVhZF9zaGlmdCgyKS00LHdlPVtyZV07c3dpdGNoKHJlKXtjYXNlIDQ6Y2FzZSA1OmNhc2UgNzpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6Y2Fz''@;'; put 'put ''ZSAxMTpjYXNlIDEzOndlWzFdPWZ1bmN0aW9uIGpFKEgpe3ZhciByZT17fTtzd2l0Y2gocmUueGNsclR5cGU9SC5yZWFkX3NoaWZ0KDIpLHJlLm5UaW50U2hhZGU9SC5yZWFkX3NoaWZ0KDIpLHJlLnhjbHJUeXBlKXtjYXNlIDA6Y2FzZSA0OkgubCs9NDticmVhaztjYXNlIDE6cmUueGNsclZh''@;'; put 'put ''bHVlPWZ1bmN0aW9uIHlCKEgscmUpe3JldHVybiBMMihILHJlKX0oSCw0KTticmVhaztjYXNlIDI6cmUueGNsclZhbHVlPW1kKEgpO2JyZWFrO2Nhc2UgMzpyZS54Y2xyVmFsdWU9ZnVuY3Rpb24gQUIoSCl7cmV0dXJuIEgucmVhZF9zaGlmdCg0KX0oSCl9cmV0dXJuIEgubCs9OCxyZX0oSCk7''@;'; put 'put ''YnJlYWs7Y2FzZSA2OndlWzFdPWZ1bmN0aW9uIFpFKEgscmUpe3JldHVybiBMMihILHJlKX0oSCxYKTticmVhaztjYXNlIDE0OmNhc2UgMTU6d2VbMV09SC5yZWFkX3NoaWZ0KDE9PT1YPzE6Mik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBFeHRQcm9wIHR5''@;'; put 'put ''cGU6ICIrcmUrIiAiK1gpfXJldHVybiB3ZX1mdW5jdGlvbiB6RShILHJlKXtyZS5mb3JFYWNoKGZ1bmN0aW9uKFgpe3N3aXRjaChYWzBdKXtjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmJyZWFrO2Nhc2Ug''@;'; put 'put ''MTM6SC5mb250JiZILmZvbnQuY29sb3ImJkFycmF5LmlzQXJyYXkoWFsxXS54Y2xyVmFsdWUpJiYoSC5mb250LmNvbG9yLnJnYj1XbChYWzFdLnhjbHJWYWx1ZSkpfX0pfWZ1bmN0aW9uIFlsKEgpe3JldHVybiBILzkxNDQwMCpuNn1mdW5jdGlvbiB3QihILHJlKXt2YXIgWD17fTtpZihILnBv''@;'; put 'put ''cylYLng9WWwoSC5wb3MueCksWC55PVlsKEgucG9zLnkpO2Vsc2V7aWYoIUguZnJvbSl0aHJvdyJiYWQgYW5jaG9yIHN0YXJ0IjtYLnI9SC5mcm9tLnJ8fDAsWC5jPUguZnJvbS5jfHwwLEguZnJvbS5jT2ZmJiYoWC54PVlsKEguZnJvbS5jT2ZmKSksSC5mcm9tLnJPZmYmJihYLnk9WWwoSC5m''@;'; put 'put ''cm9tLnJPZmYpKX1pZihILmV4dClYLnc9WWwoSC5leHQueCksWC5oPVlsKEguZXh0LnkpO2Vsc2V7aWYoIUgudG8pdGhyb3ciYmFkIGFuY2hvciBlbmQiO1guQz1ILnRvLmMsWC5SPUgudG8ucixILnRvLmNPZmYmJihYLlg9WWwoSC50by5jT2ZmKSksSC50by5yT2ZmJiYoWC5ZPVlsKEgudG8u''@;'; put 'put ''ck9mZikpfXJldHVybiBYfWZ1bmN0aW9uIFNtKEgscmUpe3ZhciBYPXt4Oi0xLHk6LTEsdzotMSxoOi0xfTtpZihILnBvcylYLng9WWwoSC5wb3MueCksWC55PVlsKEgucG9zLnkpO2Vsc2V7aWYoIUguZnJvbSl0aHJvdyJiYWQgYW5jaG9yIHN0YXJ0IjtYLng9YzYocmUsSC5mcm9tLmMsIkMi''@;'; put 'put ''KStZbChILmZyb20uY09mZiksWC55PWM2KHJlLEguZnJvbS5yLCJSIikrWWwoSC5mcm9tLnJPZmYpfWlmKEguZXh0KVgudz1ZbChILmV4dC54KSxYLmg9WWwoSC5leHQueSk7ZWxzZXtpZighSC50byl0aHJvdyJiYWQgYW5jaG9yIGVuZCI7WC53PWM2KHJlLEgudG8uYywiQyIpK1lsKEgudG8u''@;'; put 'put ''Y09mZiktWC54LFguaD1jNihyZSxILnRvLnIsIlIiKStZbChILnRvLnJPZmYpLVgueX1yZXR1cm4gWH1mdW5jdGlvbiBHRShILHJlKXt2YXIgWD17cjotMSxjOi0xLHg6LTEseTotMSxSOi0xLEM6LTEsWDotMSxZOi0xfTtzd2l0Y2goSC50eXBlKXtjYXNlInR3b0NlbGxBbmNob3IiOlgucj1I''@;'; put 'put ''LmZyb20ucixYLnk9WWwoSC5mcm9tLnJPZmYpLFguUj1ILnRvLnIsWC5ZPVlsKEgudG8uck9mZiksWC5jPUguZnJvbS5jLFgueD1ZbChILmZyb20uY09mZiksWC5DPUgudG8uYyxYLlg9WWwoSC50by5jT2ZmKTticmVhaztjYXNlIm9uZUNlbGxBbmNob3IiOlgucj1ILmZyb20ucixYLnk9WWwo''@;'; put 'put ''SC5mcm9tLnJPZmYpO3ZhciB3ZT1mNihyZSxYLnIsWC55K1lsKEguZXh0LnkpKTtYLlI9d2VbMF0sWC5ZPXdlWzFdLFguYz1ILmZyb20uYyxYLng9WWwoSC5mcm9tLmNPZmYpO3ZhciB4ZT1ROShyZSxYLmMsWC54K1lsKEguZXh0LngpKTtYLkM9eGVbMF0sWC5YPXhlWzFdO2JyZWFrO2Nhc2Ui''@;'; put 'put ''YWJzb2x1dGVBbmNob3IiOnZhciBGZT1mNihyZSwwLFlsKEgucG9zLnkpKTtYLnI9RmVbMF0sWC55PUZlWzFdO3ZhciBaZT1mNihyZSxYLnIsWC55K1lsKEguZXh0LnkpKTtYLlI9WmVbMF0sWC5ZPVplWzFdO3ZhciBWZT1mNihyZSwwLFlsKEgucG9zLngpKTtYLmM9VmVbMF0sWC54PVZlWzFd''@;'; put 'put ''O3ZhciBVZT1mNihyZSxYLmMsWC54K1lsKEguZXh0LngpKTtYLkM9VWVbMF0sWC5YPVVlWzFdO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGFuY2hvciB0eXBlICIrSC50eXBlfXJldHVybiBYfWZ1bmN0aW9uIGJCKEgscmUpe3ZhciBYPUgudHJpbSgpLnNwbGl0KC9ccyosXHMqLyk7cmVbIiFw''@;'; put 'put ''b3MiXT17YzorWFswXSx4OitYWzFdLHI6K1hbMl0seTorWFszXSxDOitYWzRdLFg6K1hbNV0sUjorWFs2XSxZOitYWzddfX1mdW5jdGlvbiBLYihILHJlLFgpe3ZhciB3ZT0tMTtpZihudWxsIT1ILlJ8fG51bGwhPUguQyl3ZT0wO2Vsc2V7aWYobnVsbD09SC54fHxudWxsPT1ILnl8fG51bGw9''@;'; put 'put ''PUgud3x8bnVsbD09SC5oKXRocm93ImNhbm5vdCBwYXJzZSBhbmNob3IgIitKU09OLnN0cmluZ2lmeShIKTt3ZT0xKzIqIShILmN8fEgucil9aWYod2UhPXJlKXtzd2l0Y2gocmUpe2Nhc2UgMDpjYXNlIDE6aWYoMyE9d2UpYnJlYWs7dmFyIHhlPVE5KFgsSC5jfHwwLEgueHx8MCk7SC5jPXhl''@;'; put 'put ''WzBdLEgueD14ZVsxXTt2YXIgRmU9ZjYoWCxILnJ8fDAsSC55fHwwKTtILnI9RmVbMF0sSC55PUZlWzFdO2JyZWFrO2Nhc2UgMzppZigzPT13ZSlicmVhazt2YXIgWmU9SC5jfHwwLFZlPUgueHx8MDtkZWxldGUgSC5jLGRlbGV0ZSBILngsSC54PShaZT91NihYLFplKTowKStWZTt2YXIgVWU9''@;'; put 'put ''SC5yfHwwLFN0PUgueXx8MDtkZWxldGUgSC5yLGRlbGV0ZSBILnksSC55PShVZT9jdShYLFVlKTowKStTdDticmVhaztkZWZhdWx0OnRocm93ImNvbnZlcnRfYW5jaG9yIHVucmVjb2duaXplZCB0eXBlICIrcmV9c3dpdGNoKHJlKXtjYXNlIDA6aWYoMD09d2UpYnJlYWs7dmFyIEl0PVE5KFgs''@;'; put 'put ''SC5jfHwwLChILnh8fDApK0gudyk7ZGVsZXRlIEgudyxILkM9SXRbMF0sSC5YPUl0WzFdO3ZhciBQdD1mNihYLEgucnx8MCwoSC55fHwwKStILmgpO2RlbGV0ZSBILmgsSC5SPVB0WzBdLEguWT1QdFsxXTticmVhaztjYXNlIDE6Y2FzZSAzOmlmKDAhPXdlKWJyZWFrO3ZhciBRdD1ILkN8fDAs''@;'; put 'put ''YW49SC5YfHwwO2RlbGV0ZSBILkMsZGVsZXRlIEguWCxILnc9dTYoWCxRdCkrYW4tKEguYz91NihYLEguYyk6MCktKEgueHx8MCk7dmFyIENuPUguUnx8MCxMdD1ILll8fDA7ZGVsZXRlIEguUixkZWxldGUgSC5ZLEguaD1jdShYLENuKStMdC0oSC5yP2N1KFgsSC5yKTowKS0oSC55fHwwKTti''@;'; put 'put ''cmVhaztkZWZhdWx0OnRocm93ImNvbnZlcnRfYW5jaG9yIHVucmVjb2duaXplZCB0eXBlICIrcmV9fX1mdW5jdGlvbiBfQihIKXt2YXIgcmU9W0guY3x8MCxNYXRoLnJvdW5kKEgueHx8MCksSC5yfHwwLE1hdGgucm91bmQoSC55fHwwKV07cmV0dXJuKHJlPXJlLmNvbmNhdChILmgmJkgudz9b''@;'; put 'put ''cmVbMF0sTWF0aC5yb3VuZChyZVsxXStILncpLHJlWzJdLE1hdGgucm91bmQocmVbM10rSC5oKV06W0guQ3x8MCxNYXRoLnJvdW5kKEguWHx8MCksSC5SfHwwLE1hdGgucm91bmQoSC5ZfHwwKV0pKS5qb2luKCIsICIpfWZ1bmN0aW9uIGN1KEgscmUpe2lmKCFIKXJldHVybiAwO2Zvcih2YXIg''@;'; put 'put ''WD0wOy0tcmU+PTA7KXt2YXIgd2U9KChIWyIhcm93cyJdfHxbXSlbcmVdfHx7fSkuaHB4O251bGw9PXdlJiYod2U9KChIWyIhc2hlZXRGb3JtYXQiXXx8e30pLnJvd3x8e30pLmhweCksbnVsbD09d2UmJih3ZT0yNCksWCs9d2V9cmV0dXJuIFh9ZnVuY3Rpb24gdTYoSCxyZSl7aWYoIUgpcmV0''@;'; put 'put ''dXJuIDA7Zm9yKHZhciBYPTA7LS1yZT49MDspe3ZhciB3ZT0oKEhbIiFjb2xzIl18fFtdKVtyZV18fHt9KS53cHg7aWYobnVsbD09d2UmJih3ZT0oKEhbIiFzaGVldEZvcm1hdCJdfHx7fSkuY29sfHx7fSkud3B4KSxudWxsPT13ZSl7dmFyIHhlPXt3Y2g6OC40M307YmMoeGUpLEhbIiFjb2xz''@;'; put 'put ''Il0mJihIWyIhY29scyJdW3JlXT14ZSksd2U9eGUud3B4fVgrPXdlfXJldHVybiBYfWZ1bmN0aW9uIGM2KEgscmUsWCl7cmV0dXJuIkMiPT1YP3U2KEgscmUpOmN1KEgscmUpfWZ1bmN0aW9uIGY2KEgscmUsWCl7dmFyIHdlPVtyZSxYXTtpZighSClyZXR1cm4gd2U7Zm9yKDs7KXt2YXIgeGU9''@;'; put 'put ''KEhbIiFyb3dzIl18fFtdKVt3ZVswXV18fHt9O2lmKHhlLmhpZGRlbikrK3dlWzBdO2Vsc2V7dmFyIEZlPXhlLmhweDtpZihudWxsPT1GZSYmKEZlPSgoSFsiIXNoZWV0Rm9ybWF0Il18fHt9KS5yb3d8fHt9KS5ocHgpLG51bGw9PUZlJiYoRmU9bWYoMTUpKSx3ZVsxXTxGZSlicmVhazt3ZVsw''@;'; put 'put ''XSsrLHdlWzFdLT1GZX19cmV0dXJuIHdlfWZ1bmN0aW9uIFE5KEgscmUsWCl7dmFyIHdlPVtyZSxYXTtpZighSClyZXR1cm4gd2U7Zm9yKDs7KXt2YXIgeGU9KEhbIiFjb2xzIl18fFtdKVt3ZVswXV18fHt9O2lmKHhlLmhpZGRlbnx8MD09PXhlLndweCkrK3dlWzBdO2Vsc2V7dmFyIEZlPXhl''@;'; put 'put ''LndweDtpZihudWxsPT1GZSYmKEZlPSgoSFsiIXNoZWV0Rm9ybWF0Il18fHt9KS5jb2x8fHt9KS53cHgpLG51bGw9PUZlKXt2YXIgWmU9e3djaDo4LjQzfTtiYyhaZSksSFsiIWNvbHMiXSYmKEhbIiFjb2xzIl1bd2VbMF1dPVplKSxGZT1aZS53cHh9aWYod2VbMV08RmUpYnJlYWs7d2VbMF0r''@;'; put 'put ''Kyx3ZVsxXS09RmV9fXJldHVybiB3ZX1mdW5jdGlvbiBJbyhIKXtyZXR1cm4oIjAwMDAwMCIrKCJudW1iZXIiPT10eXBlb2YgSD9ILnRvU3RyaW5nKDE2KTpIKSkuc2xpY2UoLTYpfWZ1bmN0aW9uIHZzKEgscmUsWCl7dmFyIHdlPSJzdHJpbmciPT10eXBlb2YgcmU/ISFYOiEhcmU7InN0cmlu''@;'; put 'put ''ZyIhPXR5cGVvZiByZSYmKHJlPSJjb2xvciIpO3ZhciB4ZT0iPCIrcmUrIiAiO3JldHVybiBILmF1dG8/eGUrJ2F1dG89IjEiLz4nOkguaW5kZXgmJm51bGw9PUgucmdiP3hlKydpbmRleGVkPSInK0guaW5kZXgrJyIvPic6bnVsbCE9SC50aGVtZT94ZSsndGhlbWU9IicrSC50aGVtZSsnIicr''@;'; put 'put ''KEgudGludD8nIHRpbnQ9IicrSC50aW50KyciJzoiIikrIi8+IjpudWxsIT1ILnJnYj94ZSsncmdiPSInKyh3ZT8iRkYiOiIiKStJbyhILnJnYikrJyIvPic6eGUrIi8+In1mdW5jdGlvbiAkYihILHJlKXtpZighSHx8bnVsbD09SC5yZ2IpcmV0dXJuIHJlO2Zvcih2YXIgWD0oIjAwMDAwMCIr''@;'; put 'put ''SC5yZ2IudG9TdHJpbmcoMTYpKS5zbGljZSgtNiksd2U9W1guc2xpY2UoMCwyKSxYLnNsaWNlKDIsNCksWC5zbGljZSg0LDYpXS5tYXAoZnVuY3Rpb24oWmUpe3JldHVybiBwYXJzZUludChaZSwxNil9KSx4ZT0wO3hlPEx1Lmxlbmd0aDsrK3hlKXt2YXIgRmU9THVbeGVdO2lmKEZlWzBdPT13''@;'; put 'put ''ZVswXSYmRmVbMV09PXdlWzFdJiZGZVsyXT09d2VbMl0pcmV0dXJuIHhlfXJldHVybiBMdS5sZW5ndGg8NjQ/KEx1LnB1c2goW3dlWzBdLHdlWzFdLHdlWzJdXSksTHUubGVuZ3RoLTEpOnJlfWZ1bmN0aW9uIEpmKEgpe3ZhciByZT1bIiIsIiIsIiJdO2lmKCFIKXJldHVybltdO3ZhciBYPSIi''@;'; put 'put ''LHdlPUgmJkgucz9mdW5jdGlvbiBXRShIKXt2YXIgcmU9WyIiLCIiXTtpZighSClyZXR1cm4gcmU7aWYoSC5zeiYmKHJlWzBdKz0iJiIrSC5zeixyZVsxXT0iJjEyIityZVsxXSksSC5uYW1lJiYocmVbMF0rPScmIicrSC5uYW1lKycsUmVndWxhciInLHJlWzFdPScmIi0sUmVndWxhciInK3Jl''@;'; put 'put ''WzFdKSxILmJvbGQmJihyZVswXSs9IiZCIixyZVsxXT0iJkIiK3JlWzFdKSxILnVuZGVybGluZSl7dmFyIFg9Mj09SC51bmRlcmxpbmU/IiZFIjoiJlUiO3JlWzBdKz1YLHJlWzFdPVgrcmVbMV19cmV0dXJuIEguaXRhbGljJiYocmVbMF0rPSImSSIscmVbMV09IiZJIityZVsxXSksSC5jb2xv''@;'; put 'put ''ciYmbnVsbCE9SC5jb2xvci5yZ2ImJihyZVswXSs9IiZLIitJbyhILmNvbG9yLnJnYikscmVbMV0rPSImSzAwMDAwMCIpLEguc3RyaWtlJiYocmVbMF0rPSImUyIscmVbMV09IiZTIityZVsxXSksInN1cGVyIj09SC52YWxpZ24mJihyZVswXSs9IiZYIixyZVsxXT0iJlgiK3JlWzFdKSwic3Vi''@;'; put 'put ''Ij09SC52YWxpZ24mJihyZVswXSs9IiZZIixyZVsxXT0iJlkiK3JlWzFdKSxyZX0oSC5zKTpbIiIsIiJdO3JldHVybiJzdHJpbmciPT10eXBlb2YgSD9bSCxILEhdOm51bGwhPUguZmlyc3R8fG51bGwhPUguZXZlbnx8bnVsbCE9SC5vZGQ/KG51bGwhPUgub2RkJiYocmVbMF09SmYoSC5vZGQp''@;'; put 'put ''WzBdKSx2b2lkIDA9PT1ILmZpcnN0JiZyZVswXSYmKHJlWzFdPXJlWzBdKSxudWxsIT1ILmZpcnN0JiYocmVbMV09SmYoSC5maXJzdClbMF0pLG51bGwhPUguZXZlbiYmKHJlWzJdPUpmKEguZXZlbilbMF0pLHJlKTpILmxlZnR8fEguY2VudGVyfHxILnJpZ2h0PyhILmxlZnQmJihYKz0iJkwi''@;'; put 'put ''K0pmKEgubGVmdClbMF0pLEguY2VudGVyJiYoWCs9IiZDIitKZihILmNlbnRlcilbMF0pLEgucmlnaHQmJihYKz0iJlIiK0pmKEgucmlnaHQpWzBdKSxbWCxYLFhdKTpudWxsIT1ILnY/W1g9d2VbMF0rSC52LnJlcGxhY2UoLyYvZywiJiYiKSt3ZVsxXSxYLFhdOm51bGwhPUgudz9bWD13ZVsw''@;'; put 'put ''XStILncrd2VbMV0sWCxYXTpBcnJheS5pc0FycmF5KEguUik/KEguUi5mb3JFYWNoKGZ1bmN0aW9uKHhlKXtYKz1KZih4ZSlbMF19KSxbWCxYLFhdKTpbXX12YXIgQ0I9ezE6IkxldHRlciIsMzoiVGFibG9pZCIsNToiTGVnYWwiLDc6IkV4ZWN1dGl2ZSIsODoiQTMiLDk6IkE0IiwxMToiQTUi''@;'; put 'put ''LDEyOiJCNCIsMTM6IkI1IiwxNDoiRm9saW8iLDIwOiJFbnZlbG9wZSIsMzc6Ik1vbmFyY2giLDcwOiJBNiJ9LGg2PW50KENCKTtkdC5DT05OPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2Nvbm5lY3Rpb25zIjt2''@;'; put 'put ''YXIgZDY9U2koImV4dGVybmFsTGluayIsbnVsbCx7eG1sbnM6VzAubWFpblswXX0pO2R0LklNRz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9pbWFnZSIsZHQuRFJBVz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZv''@;'; put 'put ''cm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kcmF3aW5nIjt2YXIgWUU9e3Q6InRvcCIsY3RyOiJjZW50ZXIiLGI6ImJvdHRvbSIsanVzdDoidG9wIixkaXN0OiJ0b3AifSxLOT17Y3RyOiJjZW50ZXIiLGRpc3Q6ImNlbnRlciIsanVzdDoiY2VudGVyIixqdXN0''@;'; put 'put ''TG93OiJjZW50ZXIiLGw6ImxlZnQiLHI6InJpZ2h0Iix0aGFpRGlzdDoiY2VudGVyIn07ZnVuY3Rpb24gdF8oKXt2YXIgSD1bY25dO3JldHVybiBILnB1c2goJzx4ZHI6d3NEciB4bWxuczp4ZHI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9zcHJl''@;'; put 'put ''YWRzaGVldERyYXdpbmciIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIi8+JyksSC5qb2luKCIiKX1mdW5jdGlvbiBTQihIKXt2YXIgWCxyZT1IWyIhZGF0YSJdO3JldHVybiJiYXNlNjQiPT09SFsiIWRhdGF0eXBlIl0/KChY''@;'; put 'put ''PXJlLm1hdGNoKC9eZGF0YTouKiwvKSkmJihyZT1yZS5zbGljZShYWzBdLmxlbmd0aCkpLFNlLmRlY29kZShyZSkpOnJlfWZ1bmN0aW9uIEpFKEgscmUsWCx3ZSx4ZSl7dmFyIEZlPXtzdHlsZTp7fSxoZWFkZXI6MH0sWmU9ITE7SC5yZXBsYWNlKEd0LGZ1bmN0aW9uKFZlKXt2YXIgVWU9cXQo''@;'; put 'put ''VmUpO3N3aXRjaChMbihVZVswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPC90YWJsZT4iOmNhc2UiPC9hdXRvRmlsdGVyPiI6Y2FzZSI8c29ydFN0YXRlIjpjYXNlIjxzb3J0U3RhdGU+IjpjYXNlIjwvc29ydFN0YXRlPiI6Y2FzZSI8L3RhYmxlQ29sdW1ucyI6Y2FzZSI8L3RhYmxlQ29sdW1ucz4i''@;'; put 'put ''OmNhc2UiPC90YWJsZUNvbHVtbj4iOmNhc2UiPGNhbGN1bGF0ZWRDb2x1bW5Gb3JtdWxhPiI6Y2FzZSI8Y2FsY3VsYXRlZENvbHVtbkZvcm11bGEiOmNhc2UiPC9jYWxjdWxhdGVkQ29sdW1uRm9ybXVsYT4iOmNhc2UiPHRvdGFsc1Jvd0Zvcm11bGE+IjpjYXNlIjx0b3RhbHNSb3dGb3JtdWxh''@;'; put 'put ''IjpjYXNlIjwvdG90YWxzUm93Rm9ybXVsYT4iOmNhc2UiPHhtbENvbHVtblByPiI6Y2FzZSI8eG1sQ29sdW1uUHIiOmNhc2UiPC94bWxDb2x1bW5Qcj4iOmNhc2UiPHNvcnRDb25kaXRpb24+IjpjYXNlIjxzb3J0Q29uZGl0aW9uIjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2Ui''@;'; put 'put ''PC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8dGFibGUiOlVlLnJlZiYmKEZlLnJlZj1VZS5yZWYpLFVlLm5hbWU/RmUubmFtZT1VZS5uYW1lOlVlLmRpc3BsYXlOYW1lJiYoRmUubmFtZT1VZS5kaXNwbGF5TmFtZSksbnVsbCE9VWUuaGVhZGVycm93Y291bnQmJjEhPStV''@;'; put 'put ''ZS5oZWFkZXJyb3djb3VudD9GZS5oZWFkZXI9K1VlLmhlYWRlcnJvd2NvdW50Om51bGw9PVVlLmhlYWRlcnJvd2NvdW50JiYoRmUuaGVhZGVyPTEpO2JyZWFrO2Nhc2UiPGF1dG9GaWx0ZXIiOmNhc2UiPGF1dG9GaWx0ZXI+IjpGZS5maWx0ZXI9ITA7YnJlYWs7Y2FzZSI8dGFibGVDb2x1bW5z''@;'; put 'put ''IjpjYXNlIjx0YWJsZUNvbHVtbnM+IjpGZS5jb2xzPVtdO2JyZWFrO2Nhc2UiPHRhYmxlU3R5bGVJbmZvIjpVZS5zaG93Um93U3RyaXBlcyYmKEZlLnN0eWxlLnJvd3N0cmlwZT1CaShVZS5zaG93Um93U3RyaXBlcykpLFVlLnNob3dDb2x1bW5TdHJpcGVzJiYoRmUuc3R5bGUuY29sc3RyaXBl''@;'; put 'put ''PUJpKFVlLnNob3dDb2x1bW5TdHJpcGVzKSksVWUuc2hvd0ZpcnN0Q29sdW1uJiYoRmUuc3R5bGUuY29sZmlyc3Q9QmkoVWUuc2hvd0ZpcnN0Q29sdW1uKSksVWUuc2hvd0xhc3RDb2x1bW4mJihGZS5zdHlsZS5jb2xsYXN0PUJpKFVlLnNob3dMYXN0Q29sdW1uKSksVWUubmFtZSYmKEZlLnN0''@;'; put 'put ''eWxlLm5hbWU9VWUubmFtZS5yZXBsYWNlKC9eVGFibGVTdHlsZS8sIiIpKTticmVhaztjYXNlIjx0YWJsZUNvbHVtbiI6Y2FzZSI8dGFibGVDb2x1bW4+IjpGZS5jb2xzLnB1c2goe2lkOitVZS5pZCxuYW1lOlVlLm5hbWV9KTticmVhaztjYXNlIjxmaWx0ZXJDb2x1bW4+IjpjYXNlIjxmaWx0''@;'; put 'put ''ZXJDb2x1bW4iOmNhc2UiPGN1c3RvbUZpbHRlcnMiOmNhc2UiPGN1c3RvbUZpbHRlcnM+IjpjYXNlIjxleHQiOlplPSEwO2JyZWFrO2Nhc2UiPC9maWx0ZXJDb2x1bW4+IjpjYXNlIjwvY3VzdG9tRmlsdGVycz4iOmNhc2UiPC9leHQ+IjpaZT0hMTticmVhaztkZWZhdWx0OmlmKCFaZSYmeGUu''@;'; put 'put ''V1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrVWVbMF0rIiBpbiB0YWJsZSIpfXJldHVybiBWZX0pLEZlLmZpbHRlcnx8KEZlLmZpbHRlcj0hMSksRmUuc3R5bGUubmFtZSYmIUZlLnN0eWxlLm5hbWUubWF0Y2goL14oTGlnaHR8TWVkaXVtfERhcmspXGQrJC8pJiZYLlRhYmxl''@;'; put 'put ''JiZYLlRhYmxlLmZvckVhY2goZnVuY3Rpb24oVmUpeyhWZS5uYW1lPT1GZS5zdHlsZS5uYW1lfHxWZS5yYXduYW1lPT1GZS5zdHlsZS5uYW1lKSYmKEZlLnN0eWxlLnJhdz1sbihWZSkpfSkscmVbIiF0YWJsZXMiXS5wdXNoKEZlKX1mdW5jdGlvbiAkOShILHJlLFgsd2Upe0guZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbih4ZSxGZSl7dmFyIFplPXJlLlNoZWV0c1tyZS5TaGVldE5hbWVzW3hlWzBdXV0sVmU9InhsL3RhYmxlcy90YWJsZSIrKHhlWzBdKzEpKyJfIit4ZVsxXSsiLnhtbCI7d2UudGFibGVzLnB1c2goVmUpO3ZhciBVZT14ZVsyXS5yZWZ8fFplWyIhcmVmIl07InN0cmluZyIhPXR5cGVv''@;'; put 'put ''ZiBVZSYmKFVlPUFhKFVlKSk7dmFyIFN0PWVhKFVlKSxJdD14ZVsyXS5uYW1lfHwic2pzdGJsXyIreGVbMF0rIl8iK3hlWzFdLFB0PVtjbl0sUXQ9IW5yKHhlWzJdLmhlYWRlciksYW49UXQmJiFucih4ZVsyXS5maWx0ZXIpO1B0LnB1c2goJzx0YWJsZSB4bWxucz0iaHR0cDovL3NjaGVtYXMu''@;'; put 'put ''b3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiBpZD0iJysoRmUrMSkrJyIgbmFtZT0iJytPcihJdCkrJyIgZGlzcGxheU5hbWU9IicrT3IoSXQpKyciIHJlZj0iJytVZSsnIiAnKyhudWxsIT14ZVsyXS5oZWFkZXImJjEhPXhlWzJdLmhlYWRlcj8naGVhZGVyUm93''@;'; put 'put ''Q291bnQ9IicrKHhlWzJdLmhlYWRlcnx8MCkrJyIgJzoiIikrIj4iKSxhbiYmUHQucHVzaCgnPGF1dG9GaWx0ZXIgcmVmPSInK1VlKyciLz4nKSxQdC5wdXNoKCc8dGFibGVDb2x1bW5zIGNvdW50PSInKyhTdC5lLmMtU3Qucy5jKzEpKyciPicpO2Zvcih2YXIgQ249W10sTHQ9U3Qucy5jO0x0''@;'; put 'put ''PD1TdC5lLmM7KytMdClpZihRdCl7Zm9yKHZhciB6dD1RMCh7cjpTdC5zLnIsYzpMdH0pLGZuPVplW3p0XSxJbj14ZVsyXS5jb2xzJiZ4ZVsyXS5jb2xzW0x0LVN0LnMuY10mJnhlWzJdLmNvbHNbTHQtU3Qucy5jXS5uYW1lfHxmbiYmKGZuLnd8fGZuLnYpfHwiQ29sdW1uICIrKEx0LVN0LnMu''@;'; put 'put ''YysxKSxSbj1JbixWbj0xO0NuLmluZGV4T2YoUm4pPi0xJiYrK1ZuPDE2Mzg0OylSbj1JbitWbjtpZihSbiE9SW4pdGhyb3cidGFibGUgY29sdW1ucyAiK0x0KyIgYW5kICIrKENuLmluZGV4T2YoSW4pK1N0LnMuYykrIiBoYXZlIHRoZSBzYW1lIGhlYWRlciAnIitJbisiJzsgdHJ5IHNldHRp''@;'; put 'put ''bmcgY2VsbCAiK3p0KyIgdG8gJyIrUm4rIiciO0NuLnB1c2goUm4pLFB0LnB1c2goJzx0YWJsZUNvbHVtbiBpZD0iJysoeGVbMl0uY29scyYmeGVbMl0uY29sc1tMdC1TdC5zLmNdJiZudWxsIT14ZVsyXS5jb2xzW0x0LVN0LnMuY10uaWQ/eGVbMl0uY29sc1tMdC1TdC5zLmNdLmlkOkx0LVN0''@;'; put 'put ''LnMuYysxKSsnIiBuYW1lPSInK09yKFJuKSsnIi8+Jyl9ZWxzZSBQdC5wdXNoKHhlWzJdLmNvbHMmJnhlWzJdLmNvbHNbTHQtU3Qucy5jXT8nPHRhYmxlQ29sdW1uIGlkPSInK3hlWzJdLmNvbHNbTHQtU3Qucy5jXS5pZCsnIiBuYW1lPSInK3hlWzJdLmNvbHNbTHQtU3Qucy5jXS5uYW1lKyci''@;'; put 'put ''Lz4nOic8dGFibGVDb2x1bW4gaWQ9IicrKEx0LVN0LnMuYysxKSsnIiB1bmlxdWVOYW1lPSInKyhMdC1TdC5zLmMrMSkrJyIgbmFtZT0iJysoTHQtU3Qucy5jKzEpKyciLz4nKTtQdC5wdXNoKCI8L3RhYmxlQ29sdW1ucz4iKTt2YXIgaWk9KyghMSE9PSh4ZVsyXS5zdHlsZXx8e30pLnJvd3N0''@;'; put 'put ''cmlwZSkseXI9KyEhKHhlWzJdLnN0eWxlfHx7fSkuY29sc3RyaXBlLG9pPSshISh4ZVsyXS5zdHlsZXx8e30pLmNvbGZpcnN0LE1yPSshISh4ZVsyXS5zdHlsZXx8e30pLmNvbGxhc3QsV3I9KHhlWzJdLnN0eWxlfHx7fSkubmFtZXx8Ik1lZGl1bTkiO1dyPVdyLm1hdGNoKC9eKExpZ2h0fE1l''@;'; put 'put ''ZGl1bXxEYXJrKVxkKyQvKT8iVGFibGVTdHlsZSIrV3I6V3IsUHQucHVzaCgnPHRhYmxlU3R5bGVJbmZvIG5hbWU9IicrV3IrJyIgc2hvd0ZpcnN0Q29sdW1uPSInK29pKyciIHNob3dMYXN0Q29sdW1uPSInK01yKyciIHNob3dSb3dTdHJpcGVzPSInK2lpKyciIHNob3dDb2x1bW5TdHJpcGVz''@;'; put 'put ''PSInK3lyKyciLz4nKSxQdC5wdXNoKCI8L3RhYmxlPiIpLEduKFgsVmUsUHQuam9pbigiIikpfSl9ZHQuVEFCTEU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdGFibGUiO3ZhciBYRT0vPCg/Olx3KzopP3NoYXBl''@;'; put 'put ''KD86W15cd11bXj5dKik/PihbXHNcU10qPyk8XC8oPzpcdys6KT9zaGFwZT4vZztmdW5jdGlvbiBuXyhILHJlLFgsd2Upe3ZhciB4ZT1bMjE2MDAsMjE2MDBdLEZlPVsibTAsMGwwIix4ZVsxXSx4ZVswXSx4ZVsxXSx4ZVswXSwiMHhlIl0uam9pbigiLCIpLFplPVtTaSgieG1sIixudWxsLHsi''@;'; put 'put ''eG1sbnM6diI6cW9fdiwieG1sbnM6byI6cW9fbywieG1sbnM6eCI6cW9feCwieG1sbnM6bXYiOiJodHRwOi8vbWFjVm1sU2NoZW1hVXJpIn0pLnJlcGxhY2UoL1wvPi8sIj4iKSxTaSgibzpzaGFwZWxheW91dCIsU2koIm86aWRtYXAiLG51bGwseyJ2OmV4dCI6ImVkaXQifSkseyJ2OmV4dCI6''@;'; put 'put ''ImVkaXQifSldLFZlPTEwMjQqSCxVZT1YfHxbXTtVZS5sZW5ndGg+MCYmWmUucHVzaChTaSgidjpzaGFwZXR5cGUiLFtTaSgidjpzdHJva2UiLG51bGwse2pvaW5zdHlsZToibWl0ZXIifSksU2koInY6cGF0aCIsbnVsbCx7c2hhZG93b2s6ImYiLGV4dHJ1c2lvbm9rOiJmIixzdHJva2Vvazoi''@;'; put 'put ''ZiIsZmlsbG9rOiJmIiwibzpjb25uZWN0dHlwZSI6InJlY3QifSksU2koIm86bG9jayIsbnVsbCx7InY6ZXh0IjoiZWRpdCIsc2hhcGV0eXBlOiJ0In0pXS5qb2luKCIiKSx7aWQ6Il94MDAwMF90MjAxIixjb29yZHNpemU6eGUuam9pbigiLCIpLCJvOnNwdCI6MjAxLHBhdGg6RmV9KSksdm9p''@;'; put 'put ''ZCAwIT09ZzYmJlVlLmZvckVhY2goZnVuY3Rpb24oSXQpeysrVmUsWmU9WmUuY29uY2F0KGc2KEl0LFZlKSl9KTt2YXIgU3Q9cmV8fFtdO3JldHVybiBTdC5sZW5ndGg+MCYmWmUucHVzaChTaSgidjpzaGFwZXR5cGUiLFtTaSgidjpzdHJva2UiLG51bGwse2pvaW5zdHlsZToibWl0ZXIifSks''@;'; put 'put ''U2koInY6cGF0aCIsbnVsbCx7Z3JhZGllbnRzaGFwZW9rOiJ0Iiwibzpjb25uZWN0dHlwZSI6InJlY3QifSldLmpvaW4oIiIpLHtpZDoiX3gwMDAwX3QyMDIiLGNvb3Jkc2l6ZTp4ZS5qb2luKCIsIiksIm86c3B0IjoyMDIscGF0aDpGZX0pKSxTdC5mb3JFYWNoKGZ1bmN0aW9uKEl0KXsrK1Zl''@;'; put 'put ''LFplPVplLmNvbmNhdChmdW5jdGlvbiAkRShILHJlLFgpe3ZhciB3ZT1wbyhIWzBdKSx4ZT1IWzFdLmZpbGx8fHt9O0hbMV0ucyYmKHhlPXt0eXBlOkhbMV0ucy5wYXR0ZXJuVHlwZXx8InNvbGlkIn0sSFsxXS5zLmZnQ29sb3ImJih4ZS5jb2xvcjI9eGUuY29sb3IxPSIjIitJbyhIWzFdLnMu''@;'; put 'put ''ZmdDb2xvci5yZ2IpKSxIWzFdLnMuYmdDb2xvciYmKHhlLmNvbG9yMj0iIyIrSW8oSFsxXS5zLmJnQ29sb3IucmdiKSkpO3ZhciBGZT17Y29sb3IyOnhlLmNvbG9yMnx8IiNCRUZGODIiLHR5cGU6eGUudHlwZXx8ImdyYWRpZW50In07ImdyYWRpZW50Ij09RmUudHlwZSYmKEZlLmFuZ2xlPSIt''@;'; put 'put ''MTgwIik7dmFyIFplPSJncmFkaWVudCI9PUZlLnR5cGU/U2koIm86ZmlsbCIsbnVsbCx7dHlwZToiZ3JhZGllbnRVbnNjYWxlZCIsInY6ZXh0IjoidmlldyJ9KTpudWxsLFZlPVNpKCJ2OmZpbGwiLFplLEZlKSxVZT17fTtIWzFdLnNoYWRvdyYmKEhbMV0uc2hhZG93LmNvbG9yJiYoVWUuY29s''@;'; put 'put ''b3I9SFsxXS5zaGFkb3cuY29sb3IpLEhbMV0uc2hhZG93Lm9uJiYoVWUub249SFsxXS5zaGFkb3cub24pKSxVZS5vYnNjdXJlZD0idCI7dmFyIFN0PSEwLEl0PSEwLFB0PUhbMV1bIiFwb3MiXT9sbihIWzFdWyIhcG9zIl0pOm51bGw7cmV0dXJuIFB0JiYoSXQ9bnVsbD09UHQuUiYmbnVsbD09''@;'; put 'put ''UHQuQyYmbnVsbD09UHQuWCYmbnVsbD09UHQuWSxTdD0hUHQuciYmIVB0LmMsS2IoUHQsMCxYKSksWyI8djpzaGFwZSIrYzIoe2lkOiJfeDAwMDBfcyIrcmUsdHlwZToiI194MDAwMF90MjAyIixzdHlsZToicG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbi1sZWZ0OjgwcHQ7bWFyZ2luLXRvcDo1''@;'; put 'put ''cHQ7d2lkdGg6MTA0cHQ7aGVpZ2h0OjY0cHQ7ei1pbmRleDoxMCIrKEhbMV0uaGlkZGVuPyI7dmlzaWJpbGl0eTpoaWRkZW4iOiIiKSxmaWxsY29sb3I6eGUuY29sb3IxfHwiI0VDRkFENCIsc3Ryb2tlY29sb3I6KEhbMV0uc3Ryb2tlfHx7fSkuY29sb3J8fCIjZWRlYWExIn0pKyI+IixWZSxT''@;'; put 'put ''aSgidjpzaGFkb3ciLG51bGwsVWUpLFNpKCJ2OnBhdGgiLG51bGwseyJvOmNvbm5lY3R0eXBlIjoibm9uZSJ9KSwnPHY6dGV4dGJveD48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQiPjwvZGl2Pjwvdjp0ZXh0Ym94PicsJzx4OkNsaWVudERhdGEgT2JqZWN0VHlwZT0iTm90ZSI+JyxTdD8i''@;'; put 'put ''PHg6TW92ZVdpdGhDZWxscy8+IjoiIixJdD8iPHg6U2l6ZVdpdGhDZWxscy8+IjoiIixHbygieDpBbmNob3IiLFB0P19CKFB0KTpIWzFdLnJhd2FuY2hvcnx8W3dlLmMrMSwwLHdlLnIrMSwwLHdlLmMrMywyMCx3ZS5yKzUsMjBdLmpvaW4oIiwiKSksR28oIng6QXV0b0ZpbGwiLCJGYWxzZSIp''@;'; put 'put ''LEdvKCJ4OlJvdyIsU3RyaW5nKHdlLnIpKSxHbygieDpDb2x1bW4iLFN0cmluZyh3ZS5jKSksSFsxXS5oaWRkZW4/IiI6Ijx4OlZpc2libGUvPiIsIjwveDpDbGllbnREYXRhPiIsIjwvdjpzaGFwZT4iXX0oSXQsVmUsd2UpKX0pLFplLnB1c2goIjwveG1sPiIpLFplLmpvaW4oIiIpfXZhciBy''@;'; put 'put ''Xz17QnV0dG9uOlsiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6VGV4dEhBbGlnbj5DZW50ZXI8L3g6VGV4dEhBbGlnbj4iLCI8eDpUZXh0VkFsaWduPkNlbnRlcjwveDpUZXh0VkFsaWduPiJdLEdCb3g6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvRmlsbD5GYWxz''@;'; put 'put ''ZTwveDpBdXRvRmlsbD4iLCI8eDpOb1RocmVlRC8+Il0sTGFiZWw6WyI8eDpBdXRvRmlsbD5GYWxzZTwveDpBdXRvRmlsbD4iLCI8eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iXSxSYWRpbzpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxs''@;'; put 'put ''PiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiIsIjx4OlRleHRWQWxpZ24+Q2VudGVyPC94OlRleHRWQWxpZ24+IiwiPHg6Tm9UaHJlZUQvPiJdLENoZWNrYm94OlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6QXV0b0xp''@;'; put 'put ''bmU+RmFsc2U8L3g6QXV0b0xpbmU+IiwiPHg6VGV4dFZBbGlnbj5DZW50ZXI8L3g6VGV4dFZBbGlnbj4iLCI8eDpOb1RocmVlRC8+Il0sRHJvcDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiIsIjx4Ok5vVGhyZWVEMi8+IiwiPHg6U2VsVHlw''@;'; put 'put ''ZT5TaW5nbGU8L3g6U2VsVHlwZT4iLCI8eDpEcm9wU3R5bGU+Q29tYm88L3g6RHJvcFN0eWxlPiIsIjx4OkxDVD5Ob3JtYWw8L3g6TENUPiIsIjx4OkRyb3BMaW5lcz40PC94OkRyb3BMaW5lcz4iXSxMaXN0OlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0xpbmU+RmFsc2U8L3g6QXV0''@;'; put 'put ''b0xpbmU+IiwiPHg6Tm9UaHJlZUQyLz4iLCI8eDpMQ1Q+Tm9ybWFsPC94OkxDVD4iLCI8eDpWYWw+MDwveDpWYWw+IiwiPHg6TWluPjA8L3g6TWluPiIsIjx4Ok1heD41PC94Ok1heD4iLCI8eDpJbmM+MTwveDpJbmM+IiwiPHg6UGFnZT40PC94OlBhZ2U+IiwiPHg6RHg+MTU8L3g6RHg+Il0s''@;'; put 'put ''U2Nyb2xsOlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6SG9yaXovPiIsIjx4OkR4PjE1PC94OkR4PiJdLFNwaW46WyI8eDpEeD4xNTwveDpEeD4iXX0sS0U9e0J1dHRvbjoiPHY6dGV4dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBz''@;'; put 'put ''dHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPjxmb250IGZhY2U9J0NhbGlicmknIHNpemU9JzI0MCcgY29sb3I9JyMwMDAwMDAnPiMjIyM8L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+IixHQm94OiI8djp0ZXh0Ym94IHN0eWxlPSdtc28tZGlyZWN0aW9uLWFsdDphdXRvJyBvOnNpbmdsZWNsaWNr''@;'; put 'put ''PSdmJz48ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPjxmb250IGZhY2U9J0x1Y2lkYSBHcmFuZGUnIHNpemU9JzI2MCcgY29sb3I9JyMwMDAwMDAnPiMjIyM8L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+IixSYWRpbzoiPHY6dGV4dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0''@;'; put 'put ''bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPSdhdXRvJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsTGFiZWw6Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJl''@;'; put 'put ''Y3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+PGZvbnQgZmFjZT0nTHVjaWRhIEdyYW5kZScgc2l6ZT0nMjYwJyBjb2xvcj0nIzAwMDAwMCc+IyMjIzwvZm9udD48L2Rpdj48L3Y6dGV4dGJveD4iLENoZWNrYm94OiI8djp0ZXh0''@;'; put 'put ''Ym94IHN0eWxlPSdtc28tZGlyZWN0aW9uLWFsdDphdXRvJyBvOnNpbmdsZWNsaWNrPSdmJz48ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPjxmb250IGZhY2U9J0x1Y2lkYSBHcmFuZGUnIHNpemU9JzI2MCcgY29sb3I9JyMwMDAwMDAnPiMjIyM8L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+''@;'; put 'put ''IixzaGVldGpzOiJkYWZ1cSJ9LE1CPXtCdXR0b246Wyc8djpmaWxsIGNvbG9yMj0iI2YwZjBmMCBbNjddIiBvOmRldGVjdG1vdXNlY2xpY2s9InQiLz4nLCc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIvPiddLEdCb3g6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0i''@;'; put 'put ''dCIvPiddLERyb3A6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIgdGV4dD0idCIvPiddLExpc3Q6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIgdGV4dD0idCIvPiddLFNwaW46Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIgdGV4dD0idCIv''@;'; put 'put ''PiddLFNjcm9sbDpbJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0IiB0ZXh0PSJ0Ii8+J10sTGFiZWw6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIvPiddLFJhZGlvOlsnPHY6cGF0aCBzaGFkb3dvaz0idCIgc3Ryb2tlb2s9InQiIGZpbGxvaz0idCIvPicsJzxv''@;'; put 'put ''OmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10sQ2hlY2tib3g6Wyc8djpwYXRoIHNoYWRvd29rPSJ0IiBzdHJva2Vvaz0idCIgZmlsbG9rPSJ0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxzaGVldGpzOltdfTtmdW5jdGlvbiBnNihILHJlKXt2''@;'; put 'put ''YXIgWD17aWQ6Il94MDAwMF9zIityZSx0eXBlOiIjX3gwMDAwX3QyMDEiLHN0eWxlOiJtc28td3JhcC1zdHlsZTp0aWdodCJ9OygiUmFkaW8iPT1IWyIhdHlwZSJdfHwiQ2hlY2tib3giPT1IWyIhdHlwZSJdfHwiTGlzdCI9PUhbIiF0eXBlIl18fCJEcm9wIj09SFsiIXR5cGUiXSkmJihYLnN0''@;'; put 'put ''cm9rZWQ9ImYiKSwiTGFiZWwiPT1IWyIhdHlwZSJdJiYoWC5maWxsZWQ9ImYiKTt2YXIgd2U9IiI7SC50JiZLRVtIWyIhdHlwZSJdXSYmKHdlPUtFW0hbIiF0eXBlIl1dLnJlcGxhY2UoLyMjIyMvLE9yKEgudCkpKTt2YXIgeGU9W107cmV0dXJuIEgubWFjcm8mJnhlLnB1c2goR28oIng6Rm1s''@;'; put 'put ''YU1hY3JvIixILm1hY3JvKSksSC5saW5rJiZ4ZS5wdXNoKEdvKCJ4OkZtbGFMaW5rIixILmxpbmspKSxILnZhbCYmeGUucHVzaChHbygiUmFkaW8iPT1IWyIhdHlwZSJdfHwiQ2hlY2tib3giPT1IWyIhdHlwZSJdPyJ4OkNoZWNrZWQiOiJ4OlZhbCIsU3RyaW5nKEgudmFsKSkpLEgucmVmJiZ4''@;'; put 'put ''ZS5wdXNoKEdvKCJ4OkZtbGFSYW5nZSIsSC5yZWYpKSxILnNlbCYmIkxpc3QiPT1IWyIhdHlwZSJdJiZ4ZS5wdXNoKEdvKCJ4OlNlbFR5cGUiLEguc2VsKSksSC5taW4mJnhlLnB1c2goR28oIng6TWluIixTdHJpbmcoSC5taW4pKSksSC5tYXgmJnhlLnB1c2goR28oIng6TWF4IixTdHJpbmco''@;'; put 'put ''SC5tYXgpKSksSC5zdGVwJiZ4ZS5wdXNoKEdvKCJ4OkluYyIsU3RyaW5nKEguc3RlcCkpKSxILnBhZ2UmJnhlLnB1c2goR28oIng6UGFnZSIsU3RyaW5nKEgucGFnZSkpKSxbXS5jb25jYXQoWyI8djpzaGFwZSIrYzIoWCkrIj4iXSkuY29uY2F0KE1CW0hbIiF0eXBlIl1dfHxbXSkuY29uY2F0''@;'; put 'put ''KFt3ZV0pLmNvbmNhdChbJzx4OkNsaWVudERhdGEgT2JqZWN0VHlwZT0iJytIWyIhdHlwZSJdKyciPicsR28oIng6QW5jaG9yIixfQihIWyIhcG9zIl0pKSxHbygieDpQcmludE9iamVjdCIsIkZhbHNlIildKS5jb25jYXQoeGUpLmNvbmNhdChyX1tIWyIhdHlwZSJdXXx8W10pLmNvbmNhdChb''@;'; put 'put ''IjwveDpDbGllbnREYXRhPiIsIjwvdjpzaGFwZT4iXSl9ZnVuY3Rpb24gaV8oSCxyZSxYLHdlKXt2YXIgeGU9eyIhaWQiOnt9fSxGZT1bU2koInhtbCIsbnVsbCx7InhtbG5zOnYiOnFvX3YsInhtbG5zOm8iOnFvX28sInhtbG5zOngiOnFvX3h9KS5yZXBsYWNlKC9cLz4vLCI+IiksU2koIm86''@;'; put 'put ''c2hhcGVsYXlvdXQiLFNpKCJvOmlkbWFwIixudWxsLHsidjpleHQiOiJlZGl0IixkYXRhOjF9KSx7InY6ZXh0IjoiZWRpdCJ9KSwnPHY6c2hhcGV0eXBlIGlkPSJfeDAwMDBfdDc1IiBjb29yZHNpemU9IjIxNjAwLDIxNjAwIiBvOnNwdD0iNzUiIG86cHJlZmVycmVsYXRpdmU9InQiIHBhdGg9''@;'; put 'put ''Im1ANEA1bEA0QDExQDlAMTFAOUA1eGUiIGZpbGxlZD0iZiIgc3Ryb2tlZD0iZiI+JywnPHY6c3Ryb2tlIGpvaW5zdHlsZT0ibWl0ZXIiLz4nLCI8djpmb3JtdWxhcz4iLCc8djpmIGVxbj0iaWYgbGluZURyYXduIHBpeGVsTGluZVdpZHRoIDAiLz4nLCc8djpmIGVxbj0ic3VtIEAwIDEgMCIv''@;'; put 'put ''PicsJzx2OmYgZXFuPSJzdW0gMCAwIEAxIi8+JywnPHY6ZiBlcW49InByb2QgQDIgMSAyIi8+JywnPHY6ZiBlcW49InByb2QgQDMgMjE2MDAgcGl4ZWxXaWR0aCIvPicsJzx2OmYgZXFuPSJwcm9kIEAzIDIxNjAwIHBpeGVsSGVpZ2h0Ii8+JywnPHY6ZiBlcW49InN1bSBAMCAwIDEiLz4nLCc8''@;'; put 'put ''djpmIGVxbj0icHJvZCBANiAxIDIiLz4nLCc8djpmIGVxbj0icHJvZCBANyAyMTYwMCBwaXhlbFdpZHRoIi8+JywnPHY6ZiBlcW49InN1bSBAOCAyMTYwMCAwIi8+JywnPHY6ZiBlcW49InByb2QgQDcgMjE2MDAgcGl4ZWxIZWlnaHQiLz4nLCc8djpmIGVxbj0ic3VtIEAxMCAyMTYwMCAwIi8+''@;'; put 'put ''JywiPC92OmZvcm11bGFzPiIsJzx2OnBhdGggbzpleHRydXNpb25vaz0iZiIgZ3JhZGllbnRzaGFwZW9rPSJ0IiBvOmNvbm5lY3R0eXBlPSJyZWN0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgYXNwZWN0cmF0aW89InQiLz4nLCI8L3Y6c2hhcGV0eXBlPiJdLFplPTE7WyJoZWFkZXIiLCJm''@;'; put 'put ''b290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKFZlKXshd2VbVmVdfHxbIm9kZCIsImV2ZW4iLCJmaXJzdCJdLmZvckVhY2goZnVuY3Rpb24oVWUpeyF3ZVtWZV1bVWVdfHxbImxlZnQiLCJyaWdodCIsImNlbnRlciJdLmZvckVhY2goZnVuY3Rpb24oU3Qpe2lmKEFycmF5LmlzQXJyYXkod2VbVmVd''@;'; put 'put ''W1VlXVtTdF0pKWZvcih2YXIgSXQ9MDtJdDx3ZVtWZV1bVWVdW1N0XS5sZW5ndGg7KytJdClpZih3ZVtWZV1bVWVdW1N0XVtJdF0pe3ZhciBQdD13ZVtWZV1bVWVdW1N0XVtJdF07aWYoInJlbW90ZSI9PVB0WyIhZGF0YXR5cGUiXSl0aHJvdyJDYW5ub3QgdXNlIGxpbmtlZCBpbWFnZSBpbiBo''@;'; put 'put ''ZWFkZXIgb3IgZm9vdGVyIjtmb3IoO0tuKEgsInhsL21lZGlhL2ltYWdlIitaZSsiLmpwZyIpOykrK1plO0guZmlsZSgieGwvbWVkaWEvaW1hZ2UiK1plKyIuanBnIixTQihQdCkse2JpbmFyeTohMH0pLGJ0KHhlLC0xLCIuLi9tZWRpYS9pbWFnZSIrWmUrIi5qcGciLGR0LklNRyk7dmFyIFF0''@;'; put 'put ''PSJfeDAwMDBfcyIrKDEwMjUrUHQuX2NudCksYW49InBvc2l0aW9uOmFic29sdXRlO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXRvcDowO3otaW5kZXg6IisoUHQuX2NudCsxKSsiOyI7YW4rPSJ3aWR0aDoiK1B0WyIhcG9zIl0udysicHg7Iixhbis9ImhlaWdodDoiK1B0WyIhcG9zIl0uaCsicHg7''@;'; put 'put ''Ijt2YXIgQ249U3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrVmUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7Im9kZCIhPT1VZSYmKENuKz1VZS50b1VwcGVyQ2FzZSgpKSx3ZVtWZV1bVWVdW1N0XS5sZW5ndGg+MSYmKENuKz1JdCksRmUucHVzaChTaSgidjpzaGFwZSIsWyc8djppbWFnZWRh''@;'; put 'put ''dGEgbzpyZWxpZD0icklkJysoUHQuX2NudCsxKSsnIiBvOnRpdGxlPSJzaGVldGpzIi8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXS5qb2luKCIiKSx7aWQ6Q24sIm86c3BpZCI6UXQsdHlwZToiI194MDAwMF90NzUiLHN0eWxlOmFufSkpfX0pfSl9KSxGZS5wdXNo''@;'; put 'put ''KCI8L3htbD4iKSxILmZpbGUoInhsL2RyYXdpbmdzL3ZtbERyYXdpbmciK1grIkhGLnZtbCIsRmUuam9pbigiIikpLEguZmlsZSgieGwvZHJhd2luZ3MvX3JlbHMvdm1sRHJhd2luZyIrWCsiSEYudm1sLnJlbHMiLFR0KHhlKSl9ZHQuQ01OVD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1h''@;'; put 'put ''dHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jb21tZW50cyI7dmFyIEY0PVNpKCJjb21tZW50cyIsbnVsbCx7eG1sbnM6VzAubWFpblswXX0pO2Z1bmN0aW9uIG9fKEgpe3ZhciByZT1bY24sRjRdLFg9W107cmV0dXJuIHJlLnB1c2goIjxhdXRob3JzPiIpLEguZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbih3ZSl7d2VbMV0uZm9yRWFjaChmdW5jdGlvbih4ZSl7dmFyIEZlPU9yKHhlLmEpO1guaW5kZXhPZihGZSk+LTF8fChYLnB1c2goRmUpLHJlLnB1c2goIjxhdXRob3I+IitGZSsiPC9hdXRob3I+IikpfSl9KSxyZS5wdXNoKCI8L2F1dGhvcnM+IikscmUucHVzaCgiPGNv''@;'; put 'put ''bW1lbnRMaXN0PiIpLEguZm9yRWFjaChmdW5jdGlvbih3ZSl7d2VbMV0uZm9yRWFjaChmdW5jdGlvbih4ZSl7cmUucHVzaCgnPGNvbW1lbnQgcmVmPSInK3dlWzBdKyciIGF1dGhvcklkPSInK1guaW5kZXhPZihPcih4ZS5hKSkrJyI+PHRleHQ+JykscmUucHVzaCh4ZS5SP3Q2KHhlLlIpOkdv''@;'; put 'put ''KCJ0IixudWxsPT14ZS50PyIiOk9yKHhlLnQpKSkscmUucHVzaCgiPC90ZXh0PjwvY29tbWVudD4iKX0pfSkscmUucHVzaCgiPC9jb21tZW50TGlzdD4iKSxyZS5sZW5ndGg+MiYmKHJlW3JlLmxlbmd0aF09IjwvY29tbWVudHM+IixyZVsxXT1yZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSkscmUu''@;'; put 'put ''am9pbigiIil9dmFyIEVoPW5sO2Z1bmN0aW9uIGxfKEgpe3ZhciByZT12MSgpLFg9W107cmV0dXJuIEMwKHJlLCJCcnRCZWdpbkNvbW1lbnRzIiksQzAocmUsIkJydEJlZ2luQ29tbWVudEF1dGhvcnMiKSxILmZvckVhY2goZnVuY3Rpb24od2Upe3dlWzFdLmZvckVhY2goZnVuY3Rpb24oeGUp''@;'; put 'put ''e1guaW5kZXhPZih4ZS5hKT4tMXx8KFgucHVzaCh4ZS5hLnNsaWNlKDAsNTQpKSxDMChyZSwiQnJ0Q29tbWVudEF1dGhvciIsZnVuY3Rpb24gUzMoSCl7cmV0dXJuIHN1KEguc2xpY2UoMCw1NCkpfSh4ZS5hKSkpfSl9KSxDMChyZSwiQnJ0RW5kQ29tbWVudEF1dGhvcnMiKSxDMChyZSwiQnJ0''@;'; put 'put ''QmVnaW5Db21tZW50TGlzdCIpLEguZm9yRWFjaChmdW5jdGlvbih3ZSl7d2VbMV0uZm9yRWFjaChmdW5jdGlvbih4ZSl7eGUuaWF1dGhvcj1YLmluZGV4T2YoeGUuYSk7dmFyIEZlPXtzOnBvKHdlWzBdKSxlOnBvKHdlWzBdKX07QzAocmUsIkJydEJlZ2luQ29tbWVudCIsZnVuY3Rpb24gcTko''@;'; put 'put ''SCxyZSl7cmV0dXJuIG51bGw9PXJlJiYocmU9eGkoMzYpKSxyZS53cml0ZV9zaGlmdCg0LEhbMV0uaWF1dGhvciksSHAoSFswXSxyZSkscmUud3JpdGVfc2hpZnQoNCwwKSxyZS53cml0ZV9zaGlmdCg0LDApLHJlLndyaXRlX3NoaWZ0KDQsMCkscmUud3JpdGVfc2hpZnQoNCwwKSxyZX0oW0Zl''@;'; put 'put ''LHhlXSkpLHhlLnQmJnhlLnQubGVuZ3RoPjAmJkMwKHJlLCJCcnRDb21tZW50VGV4dCIsZnVuY3Rpb24gc2YoSCxyZSl7dmFyIFg9ITE7cmV0dXJuIG51bGw9PXJlJiYoWD0hMCxyZT14aSgyMys0KkgudC5sZW5ndGgpKSxyZS53cml0ZV9zaGlmdCgxLDEpLHN1KEgudCxyZSkscmUud3JpdGVf''@;'; put 'put ''c2hpZnQoNCwxKSxmdW5jdGlvbiBUbyhILHJlKXtyZXx8KHJlPXhpKDQpKSxyZS53cml0ZV9zaGlmdCgyLEguaWNofHwwKSxyZS53cml0ZV9zaGlmdCgyLEguaWZudHx8MCl9KHtpY2g6MCxpZm50OjB9LHJlKSxYP3JlLnNsaWNlKDAscmUubCk6cmV9KHhlKSksQzAocmUsIkJydEVuZENvbW1l''@;'; put 'put ''bnQiKSxkZWxldGUgeGUuaWF1dGhvcn0pfSksQzAocmUsIkJydEVuZENvbW1lbnRMaXN0IiksQzAocmUsIkJydEVuZENvbW1lbnRzIikscmUuZW5kKCl9dmFyIHhCPVsieGxzYiIsInhsc20iLCJ4bGFtIiwiYmlmZjgiLCJ4bGEiXTtkdC5EUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1h''@;'; put 'put ''dHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kaWFsb2dzaGVldCIsZHQuTVM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bE1hY3Jvc2hlZXQiO3ZhciBtNj1mdW5jdGlvbigpe3ZhciBIPS8oXnxbXkEtWmEt''@;'; put 'put ''el9dKVIoXFs/LT9cZCtcXXxbMS05XVxkKnwpQyhcWz8tP1xkK1xdfFsxLTldXGQqfCkoPyFbQS1aYS16MC05X10pL2cscmU9e3I6MCxjOjB9O2Z1bmN0aW9uIFgod2UseGUsRmUsWmUpe3ZhciBWZT0hMSxVZT0hMTswPT1GZS5sZW5ndGg/VWU9ITA6IlsiPT1GZS5jaGFyQXQoMCkmJihVZT0h''@;'; put 'put ''MCxGZT1GZS5zbGljZSgxLC0xKSksMD09WmUubGVuZ3RoP1ZlPSEwOiJbIj09WmUuY2hhckF0KDApJiYoVmU9ITAsWmU9WmUuc2xpY2UoMSwtMSkpO3ZhciBTdD1GZS5sZW5ndGg+MD8wfHBhcnNlSW50KEZlLDEwKTowLEl0PVplLmxlbmd0aD4wPzB8cGFyc2VJbnQoWmUsMTApOjA7cmV0dXJu''@;'; put 'put ''IFZlP0l0Kz1yZS5jOi0tSXQsVWU/U3QrPXJlLnI6LS1TdCx4ZSsoVmU/IiI6IiQiKStMbChJdCkrKFVlPyIiOiIkIikraGEoU3QpfXJldHVybiBmdW5jdGlvbih4ZSxGZSl7cmV0dXJuIHJlPUZlLHhlLnJlcGxhY2UoSCxYKX19KCksRG09LyhefFteLl9BLVowLTldKShbJF0/KShbQS1aXXsx''@;'; put 'put ''LDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoWyRdPykoMTBbMC0zXVxkezR9fDEwNFswLTddXGR7M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkoPyFbXy5cKEEtWmEtejAtOV0pL2csY189ZnVuY3Rpb24ocmUsWCl7''@;'; put 'put ''cmV0dXJuIHJlLnJlcGxhY2UoRG0sZnVuY3Rpb24od2UseGUsRmUsWmUsVmUsVWUpe3ZhciBTdD1YMihaZSktKEZlPzA6WC5jKSxJdD1fYShVZSktKFZlPzA6WC5yKTtyZXR1cm4geGUrIlIiKygwPT1JdD8iIjpWZT9JdCsxOiJbIitJdCsiXSIpKyJDIisoMD09U3Q/IiI6RmU/U3QrMToiWyIr''@;'; put 'put ''U3QrIl0iKX0pfTtmdW5jdGlvbiBlQShILHJlKXtyZXR1cm4gSC5yZXBsYWNlKERtLGZ1bmN0aW9uKFgsd2UseGUsRmUsWmUsVmUpe3JldHVybiB3ZSsoIiQiPT14ZT94ZStGZTpMbChYMihGZSkrcmUuYykpKygiJCI9PVplP1plK1ZlOmhhKF9hKFZlKStyZS5yKSl9KS5yZXBsYWNlKC8oXGQr''@;'; put 'put ''KTooXGQrKS9nLGZ1bmN0aW9uKFgsd2UseGUpe3JldHVybiBoYShfYSh3ZSkrcmUucikrIjoiK2hhKF9hKHhlKStyZS5yKX0pfWZ1bmN0aW9uIEg0KEgscmUsWCl7dmFyIHhlPW5zKHJlKS5zLEZlPXBvKFgpO3JldHVybiBlQShILHtyOkZlLnIteGUucixjOkZlLmMteGUuY30pfWZ1bmN0aW9u''@;'; put 'put ''IEFmKEgpe3JldHVybiBILnJlcGxhY2UoL194bGZuXC4vZywiIil9ZnVuY3Rpb24gYjEoSCl7SC5sKz0xfWZ1bmN0aW9uIGtkKEgscmUpe3ZhciBYPUgucmVhZF9zaGlmdCgxPT1yZT8xOjIpO3JldHVyblsxNjM4MyZYLFg+PjE0JjEsWD4+MTUmMV19ZnVuY3Rpb24gTG0oSCxyZSxYKXt2YXIg''@;'; put 'put ''d2U9MjtpZihYKXtpZihYLmJpZmY+PTImJlguYmlmZjw9NSlyZXR1cm4gdHgoSCk7MTI9PVguYmlmZiYmKHdlPTQpfXZhciB4ZT1ILnJlYWRfc2hpZnQod2UpLEZlPUgucmVhZF9zaGlmdCh3ZSksWmU9a2QoSCwyKSxWZT1rZChILDIpO3JldHVybntzOntyOnhlLGM6WmVbMF0sY1JlbDpaZVsx''@;'; put 'put ''XSxyUmVsOlplWzJdfSxlOntyOkZlLGM6VmVbMF0sY1JlbDpWZVsxXSxyUmVsOlZlWzJdfX19ZnVuY3Rpb24gdHgoSCl7dmFyIHJlPWtkKEgsMiksWD1rZChILDIpLHdlPUgucmVhZF9zaGlmdCgxKSx4ZT1ILnJlYWRfc2hpZnQoMSk7cmV0dXJue3M6e3I6cmVbMF0sYzp3ZSxjUmVsOnJlWzFd''@;'; put 'put ''LHJSZWw6cmVbMl19LGU6e3I6WFswXSxjOnhlLGNSZWw6WFsxXSxyUmVsOlhbMl19fX1mdW5jdGlvbiBueChILHJlLFgpe2lmKFgmJlguYmlmZj49MiYmWC5iaWZmPD01KXJldHVybiBmdW5jdGlvbiBmXyhIKXt2YXIgcmU9a2QoSCwyKSxYPUgucmVhZF9zaGlmdCgxKTtyZXR1cm57cjpyZVsw''@;'; put 'put ''XSxjOlgsY1JlbDpyZVsxXSxyUmVsOnJlWzJdfX0oSCk7dmFyIHdlPUgucmVhZF9zaGlmdChYJiYxMj09WC5iaWZmPzQ6MikseGU9a2QoSCwyKTtyZXR1cm57cjp3ZSxjOnhlWzBdLGNSZWw6eGVbMV0sclJlbDp4ZVsyXX19ZnVuY3Rpb24gREIoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCgyKSxY''@;'; put 'put ''PUgucmVhZF9zaGlmdCgyKTtyZXR1cm57cjpyZSxjOjI1NSZYLGZRdW90ZWQ6ISEoMTYzODQmWCksY1JlbDpYPj4xNSxyUmVsOlg+PjE1fX1mdW5jdGlvbiBNMyhIKXtyZXR1cm5bSC5yZWFkX3NoaWZ0KDEpLEgucmVhZF9zaGlmdCgxKV19ZnVuY3Rpb24gc3goSCxyZSl7dmFyIFg9W0gucmVh''@;'; put 'put ''ZF9zaGlmdCgxKV07aWYoMTI9PXJlKXN3aXRjaChYWzBdKXtjYXNlIDI6WFswXT00O2JyZWFrO2Nhc2UgNDpYWzBdPTE2O2JyZWFrO2Nhc2UgMDpYWzBdPTE7YnJlYWs7Y2FzZSAxOlhbMF09Mn1zd2l0Y2goWFswXSl7Y2FzZSA0OlhbMV09Sm8oSCwxKT8iVFJVRSI6IkZBTFNFIiwxMiE9cmUm''@;'; put 'put ''JihILmwrPTcpO2JyZWFrO2Nhc2UgMzc6Y2FzZSAxNjpYWzFdPU5mW0hbSC5sXV0sSC5sKz0xMj09cmU/NDo4O2JyZWFrO2Nhc2UgMDpILmwrPTg7YnJlYWs7Y2FzZSAxOlhbMV09ZTIoSCk7YnJlYWs7Y2FzZSAyOlhbMV09azQoSCwwLHtiaWZmOnJlPjAmJnJlPDg/MjpyZX0pO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJCYWQgU2VyQXI6ICIrWFswXSl9cmV0dXJuIFh9ZnVuY3Rpb24gbkEoSCxyZSxYKXtmb3IodmFyIHdlPUgucmVhZF9zaGlmdCgxMj09WC5iaWZmPzQ6MikseGU9W10sRmU9MDtGZSE9d2U7KytGZSl4ZS5wdXNoKCgxMj09WC5iaWZmP2JoOkU0KShILDgp''@;'; put 'put ''KTtyZXR1cm4geGV9ZnVuY3Rpb24gakIoSCxyZSxYKXt2YXIgd2U9MCx4ZT0wOzEyPT1YLmJpZmY/KHdlPUgucmVhZF9zaGlmdCg0KSx4ZT1ILnJlYWRfc2hpZnQoNCkpOih4ZT0xK0gucmVhZF9zaGlmdCgxKSx3ZT0xK0gucmVhZF9zaGlmdCgyKSksWC5iaWZmPj0yJiZYLmJpZmY8OCYmKC0t''@;'; put 'put ''d2UsMD09LS14ZSYmKHhlPTI1NikpO2Zvcih2YXIgRmU9MCxaZT1bXTtGZSE9d2UmJihaZVtGZV09W10pOysrRmUpZm9yKHZhciBWZT0wO1ZlIT14ZTsrK1ZlKVplW0ZlXVtWZV09c3goSCxYLmJpZmYpO3JldHVybiBaZX1mdW5jdGlvbiB2NihILHJlLFgpe3JldHVybiBILmwrPTIsW0RCKEgp''@;'; put 'put ''XX1mdW5jdGlvbiBkeChIKXtyZXR1cm4gSC5sKz02LFtdfXZhciBwXz12NixRQj1keCxPRz1keCxLdD12NjtmdW5jdGlvbiBCbShIKXtyZXR1cm4gSC5sKz0yLFtlMShIKSwxJkgucmVhZF9zaGlmdCgyKV19dmFyIHB4PXY2LHJBPUJtLFRoPWR4LGd4PXY2LEpCPXY2LGlBPVsiRGF0YSIsIkFs''@;'; put 'put ''bCIsIkhlYWRlcnMiLCI/PyIsIj9EYXRhMiIsIj8/IiwiP0RhdGFIZWFkZXJzIiwiPz8iLCJUb3RhbHMiLCI/PyIsIj8/IiwiPz8iLCI/RGF0YVRvdGFscyIsIj8/IiwiPz8iLCI/PyIsIj9DdXJyZW50Il0sVjQ9ezE6e246IlB0Z0V4cCIsZjpmdW5jdGlvbiBIQihILHJlLFgpe3JldHVybiBI''@;'; put 'put ''LmwrKyxYJiYxMj09WC5iaWZmP1tILnJlYWRfc2hpZnQoNCwiaSIpLDBdOltILnJlYWRfc2hpZnQoMiksSC5yZWFkX3NoaWZ0KFgmJjI9PVguYmlmZj8xOjIpXX19LDI6e246IlB0Z1RibCIsZjpMMn0sMzp7bjoiUHRnQWRkIixmOmIxfSw0OntuOiJQdGdTdWIiLGY6YjF9LDU6e246IlB0Z011''@;'; put 'put ''bCIsZjpiMX0sNjp7bjoiUHRnRGl2IixmOmIxfSw3OntuOiJQdGdQb3dlciIsZjpiMX0sODp7bjoiUHRnQ29uY2F0IixmOmIxfSw5OntuOiJQdGdMdCIsZjpiMX0sMTA6e246IlB0Z0xlIixmOmIxfSwxMTp7bjoiUHRnRXEiLGY6YjF9LDEyOntuOiJQdGdHZSIsZjpiMX0sMTM6e246IlB0Z0d0''@;'; put 'put ''IixmOmIxfSwxNDp7bjoiUHRnTmUiLGY6YjF9LDE1OntuOiJQdGdJc2VjdCIsZjpiMX0sMTY6e246IlB0Z1VuaW9uIixmOmIxfSwxNzp7bjoiUHRnUmFuZ2UiLGY6YjF9LDE4OntuOiJQdGdVcGx1cyIsZjpiMX0sMTk6e246IlB0Z1VtaW51cyIsZjpiMX0sMjA6e246IlB0Z1BlcmNlbnQiLGY6''@;'; put 'put ''YjF9LDIxOntuOiJQdGdQYXJlbiIsZjpiMX0sMjI6e246IlB0Z01pc3NBcmciLGY6YjF9LDIzOntuOiJQdGdTdHIiLGY6ZnVuY3Rpb24gVkIoSCxyZSxYKXtyZXR1cm4gSC5sKyssWmYoSCwwLFgpfX0sMjY6e246IlB0Z1NoZWV0IixmOmZ1bmN0aW9uIG14KEgscmUsWCl7cmV0dXJuIEgubCs9''@;'; put 'put ''NSxILmwrPTIsSC5sKz0yPT1YLmJpZmY/MTo0LFsiUFRHU0hFRVQiXX19LDI3OntuOiJQdGdFbmRTaGVldCIsZjpmdW5jdGlvbiBBNihILHJlLFgpe3JldHVybiBILmwrPTI9PVguYmlmZj80OjUsWyJQVEdFTkRTSEVFVCJdfX0sMjg6e246IlB0Z0VyciIsZjpmdW5jdGlvbiB4aChIKXtyZXR1''@;'; put 'put ''cm4gSC5sKyssTmZbSC5yZWFkX3NoaWZ0KDEpXX19LDI5OntuOiJQdGdCb29sIixmOmZ1bmN0aW9uIE5CKEgpe3JldHVybiBILmwrKywwIT09SC5yZWFkX3NoaWZ0KDEpfX0sMzA6e246IlB0Z0ludCIsZjpmdW5jdGlvbiBMRyhIKXtyZXR1cm4gSC5sKyssSC5yZWFkX3NoaWZ0KDIpfX0sMzE6''@;'; put 'put ''e246IlB0Z051bSIsZjpmdW5jdGlvbiBVOChIKXtyZXR1cm4gSC5sKyssZTIoSCl9fSwzMjp7bjoiUHRnQXJyYXkiLGY6ZnVuY3Rpb24gUkIoSCxyZSxYKXt2YXIgd2U9KDk2JkhbSC5sKytdKT4+NTtyZXR1cm4gSC5sKz0yPT1YLmJpZmY/NjoxMj09WC5iaWZmPzE0OjcsW3dlXX19LDMzOntu''@;'; put 'put ''OiJQdGdGdW5jIixmOmZ1bmN0aW9uIEZCKEgscmUsWCl7dmFyIHdlPSg5NiZIW0gubF0pPj41O0gubCs9MTt2YXIgeGU9SC5yZWFkX3NoaWZ0KFgmJlguYmlmZjw9Mz8xOjIpO3JldHVybltaNFt4ZV0sam1beGVdLHdlXX19LDM0OntuOiJQdGdGdW5jVmFyIixmOmZ1bmN0aW9uIFRHKEgscmUs''@;'; put 'put ''WCl7dmFyIHdlPUhbSC5sKytdLHhlPUgucmVhZF9zaGlmdCgxKSxGZT1YJiZYLmJpZmY8PTM/Wzg4PT13ZT8tMTowLEgucmVhZF9zaGlmdCgxKV06ZnVuY3Rpb24gSUcoSCl7cmV0dXJuW0hbSC5sKzFdPj43LDMyNzY3JkgucmVhZF9zaGlmdCgyKV19KEgpO3JldHVyblt4ZSwoMD09PUZlWzBd''@;'; put 'put ''P2ptOl9fKVtGZVsxXV1dfX0sMzU6e246IlB0Z05hbWUiLGY6ZnVuY3Rpb24gdXgoSCxyZSxYKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KDEpPj4+NSYzLEZlPUgucmVhZF9zaGlmdCghWHx8WC5iaWZmPj04PzQ6Mik7c3dpdGNoKFguYmlmZil7Y2FzZSAyOkgubCs9NTticmVhaztjYXNlIDM6Y2Fz''@;'; put 'put ''ZSA0OkgubCs9ODticmVhaztjYXNlIDU6SC5sKz0xMn1yZXR1cm5bd2UsMCxGZV19fSwzNjp7bjoiUHRnUmVmIixmOmZ1bmN0aW9uIFJtKEgscmUsWCl7dmFyIHdlPSg5NiZIW0gubF0pPj41O3JldHVybiBILmwrPTEsW3dlLG54KEgsMCxYKV19fSwzNzp7bjoiUHRnQXJlYSIsZjpmdW5jdGlv''@;'; put 'put ''biBVYShILHJlLFgpe3JldHVyblsoOTYmSFtILmwrK10pPj41LExtKEgsMCxYKV19fSwzODp7bjoiUHRnTWVtQXJlYSIsZjpmdW5jdGlvbiBHQihILHJlLFgpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoMSk+Pj41JjM7cmV0dXJuIEgubCs9WCYmMj09WC5iaWZmPzM6NCxbd2UsSC5yZWFkX3NoaWZ0''@;'; put 'put ''KFgmJjI9PVguYmlmZj8xOjIpXX19LDM5OntuOiJQdGdNZW1FcnIiLGY6TDJ9LDQwOntuOiJQdGdNZW1Ob01lbSIsZjpMMn0sNDE6e246IlB0Z01lbUZ1bmMiLGY6ZnVuY3Rpb24gV0IoSCxyZSxYKXtyZXR1cm5bSC5yZWFkX3NoaWZ0KDEpPj4+NSYzLEgucmVhZF9zaGlmdChYJiYyPT1YLmJp''@;'; put 'put ''ZmY/MToyKV19fSw0Mjp7bjoiUHRnUmVmRXJyIixmOmZ1bmN0aW9uIFlCKEgscmUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdCgxKT4+PjUmMztyZXR1cm4gSC5sKz00LFguYmlmZjw4JiZILmwtLSwxMj09WC5iaWZmJiYoSC5sKz0yKSxbd2VdfX0sNDM6e246IlB0Z0FyZWFFcnIiLGY6ZnVuY3Rp''@;'; put 'put ''b24gT20oSCxyZSxYKXt2YXIgd2U9KDk2JkhbSC5sKytdKT4+NTtyZXR1cm4gSC5sKz1YJiZYLmJpZmY+OD8xMjpYLmJpZmY8OD82OjgsW3dlXX19LDQ0OntuOiJQdGdSZWZOIixmOmZ1bmN0aW9uIGhfKEgscmUsWCl7dmFyIHdlPSg5NiZIW0gubF0pPj41O0gubCs9MTt2YXIgeGU9ZnVuY3Rp''@;'; put 'put ''b24gTEIoSCxyZSxYKXt2YXIgd2U9WCYmWC5iaWZmP1guYmlmZjo4O2lmKHdlPj0yJiZ3ZTw9NSlyZXR1cm4gZnVuY3Rpb24gT0IoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCgyKSxYPUgucmVhZF9zaGlmdCgxKSx3ZT0oMzI3NjgmcmUpPj4xNSx4ZT0oMTYzODQmcmUpPj4xNDtyZXR1cm4gcmUm''@;'; put 'put ''PTE2MzgzLDE9PXdlJiZyZT49ODE5MiYmKHJlLT0xNjM4NCksMT09eGUmJlg+PTEyOCYmKFgtPTI1Nikse3I6cmUsYzpYLGNSZWw6eGUsclJlbDp3ZX19KEgpO3ZhciB4ZT1ILnJlYWRfc2hpZnQod2U+PTEyPzQ6MiksRmU9SC5yZWFkX3NoaWZ0KDIpLFplPSgxNjM4NCZGZSk+PjE0LFZlPSgz''@;'; put 'put ''Mjc2OCZGZSk+PjE1O2lmKEZlJj0xNjM4MywxPT1WZSlmb3IoO3hlPjUyNDI4NzspeGUtPTEwNDg1NzY7aWYoMT09WmUpZm9yKDtGZT44MTkxOylGZS09MTYzODQ7cmV0dXJue3I6eGUsYzpGZSxjUmVsOlplLHJSZWw6VmV9fShILDAsWCk7cmV0dXJuW3dlLHhlXX19LDQ1OntuOiJQdGdBcmVh''@;'; put 'put ''TiIsZjpmdW5jdGlvbiByeChILHJlLFgpe3ZhciB3ZT0oOTYmSFtILmwrK10pPj41LHhlPWZ1bmN0aW9uIElCKEgscmUsWCl7aWYoWC5iaWZmPDgpcmV0dXJuIHR4KEgpO3ZhciB3ZT1ILnJlYWRfc2hpZnQoMTI9PVguYmlmZj80OjIpLHhlPUgucmVhZF9zaGlmdCgxMj09WC5iaWZmPzQ6Miks''@;'; put 'put ''RmU9a2QoSCwyKSxaZT1rZChILDIpO3JldHVybntzOntyOndlLGM6RmVbMF0sY1JlbDpGZVsxXSxyUmVsOkZlWzJdfSxlOntyOnhlLGM6WmVbMF0sY1JlbDpaZVsxXSxyUmVsOlplWzJdfX19KEgsMCxYKTtyZXR1cm5bd2UseGVdfX0sNDY6e246IlB0Z01lbUFyZWFOIixmOmZ1bmN0aW9uIHZ4''@;'; put 'put ''KEgpe3JldHVybltILnJlYWRfc2hpZnQoMSk+Pj41JjMsSC5yZWFkX3NoaWZ0KDIpXX19LDQ3OntuOiJQdGdNZW1Ob01lbU4iLGY6ZnVuY3Rpb24gUG0oSCl7cmV0dXJuW0gucmVhZF9zaGlmdCgxKT4+PjUmMyxILnJlYWRfc2hpZnQoMildfX0sNTc6e246IlB0Z05hbWVYIixmOmZ1bmN0aW9u''@;'; put 'put ''IFpCKEgscmUsWCl7cmV0dXJuIDU9PVguYmlmZj9mdW5jdGlvbiB6QihIKXt2YXIgcmU9SC5yZWFkX3NoaWZ0KDEpPj4+NSYzLFg9SC5yZWFkX3NoaWZ0KDIsImkiKTtILmwrPTg7dmFyIHdlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gSC5sKz0xMixbcmUsWCx3ZV19KEgpOltILnJlYWRfc2hp''@;'; put 'put ''ZnQoMSk+Pj41JjMsSC5yZWFkX3NoaWZ0KDIpLEgucmVhZF9zaGlmdCg0KV19fSw1ODp7bjoiUHRnUmVmM2QiLGY6ZnVuY3Rpb24gZF8oSCxyZSxYKXt2YXIgd2U9KDk2JkhbSC5sXSk+PjU7SC5sKz0xO3ZhciB4ZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIFgmJjU9PVguYmlmZiYmKEgubCs9''@;'; put 'put ''MTIpLFt3ZSx4ZSxueChILDAsWCldfX0sNTk6e246IlB0Z0FyZWEzZCIsZjpmdW5jdGlvbiBzdChILHJlLFgpe3ZhciB3ZT0oOTYmSFtILmwrK10pPj41LHhlPUgucmVhZF9zaGlmdCgyLCJpIik7aWYoWCYmNT09PVguYmlmZilILmwrPTEyO3JldHVyblt3ZSx4ZSxMbShILDAsWCldfX0sNjA6''@;'; put 'put ''e246IlB0Z1JlZkVycjNkIixmOmZ1bmN0aW9uIGN4KEgscmUsWCl7dmFyIHdlPSg5NiZIW0gubCsrXSk+PjUseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPTQ7aWYoWClzd2l0Y2goWC5iaWZmKXtjYXNlIDU6RmU9MTU7YnJlYWs7Y2FzZSAxMjpGZT02fXJldHVybiBILmwrPUZlLFt3ZSx4ZV19fSw2''@;'; put 'put ''MTp7bjoiUHRnQXJlYUVycjNkIixmOmZ1bmN0aW9uIHRBKEgscmUsWCl7dmFyIHdlPSg5NiZIW0gubCsrXSk+PjUseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPTg7aWYoWClzd2l0Y2goWC5iaWZmKXtjYXNlIDU6SC5sKz0xMixGZT02O2JyZWFrO2Nhc2UgMTI6RmU9MTJ9cmV0dXJuIEgubCs9RmUs''@;'; put 'put ''W3dlLHhlXX19LDI1NTp7fX0seTY9ezY0OjMyLDk2OjMyLDY1OjMzLDk3OjMzLDY2OjM0LDk4OjM0LDY3OjM1LDk5OjM1LDY4OjM2LDEwMDozNiw2OTozNywxMDE6MzcsNzA6MzgsMTAyOjM4LDcxOjM5LDEwMzozOSw3Mjo0MCwxMDQ6NDAsNzM6NDEsMTA1OjQxLDc0OjQyLDEwNjo0Miw3NTo0''@;'; put 'put ''MywxMDc6NDMsNzY6NDQsMTA4OjQ0LDc3OjQ1LDEwOTo0NSw3ODo0NiwxMTA6NDYsNzk6NDcsMTExOjQ3LDg4OjM0LDEyMDozNCw4OTo1NywxMjE6NTcsOTA6NTgsMTIyOjU4LDkxOjU5LDEyMzo1OSw5Mjo2MCwxMjQ6NjAsOTM6NjEsMTI1OjYxfTshZnVuY3Rpb24oKXtmb3IodmFyIEggaW4g''@;'; put 'put ''eTYpVjRbSF09VjRbeTZbSF1dfSgpO3ZhciBvQT17MTp7bjoiUHRnRWxmTGVsIixmOkJtfSwyOntuOiJQdGdFbGZSdyIsZjpneH0sMzp7bjoiUHRnRWxmQ29sIixmOnBffSw2OntuOiJQdGdFbGZSd1YiLGY6SkJ9LDc6e246IlB0Z0VsZkNvbFYiLGY6S3R9LDEwOntuOiJQdGdFbGZSYWRpY2Fs''@;'; put 'put ''IixmOnB4fSwxMTp7bjoiUHRnRWxmUmFkaWNhbFMiLGY6VGh9LDEzOntuOiJQdGdFbGZDb2xTIixmOlFCfSwxNTp7bjoiUHRnRWxmQ29sU1YiLGY6T0d9LDE2OntuOiJQdGdFbGZSYWRpY2FsTGVsIixmOnJBfSwyNTp7bjoiUHRnTGlzdCIsZjpmdW5jdGlvbiBYZihIKXtILmwrPTI7dmFyIHJl''@;'; put 'put ''PUgucmVhZF9zaGlmdCgyKSxYPUgucmVhZF9zaGlmdCgyKSx3ZT1ILnJlYWRfc2hpZnQoNCkseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm57aXh0aTpyZSxjb2x0eXBlOjMmWCxydDppQVtYPj4yJjMxXSxpZHg6d2UsYzp4ZSxDOkZlfX19LDI5OntuOiJQdGdT''@;'; put 'put ''eE5hbWUiLGY6ZnVuY3Rpb24gZ18oSCl7cmV0dXJuIEgubCs9MixbSC5yZWFkX3NoaWZ0KDQpXX19LDI1NTp7fX0sS2Y9ezA6e246IlB0Z0F0dHJOb29wIixmOmZ1bmN0aW9uIEF4KEgpe3JldHVybiBILmwrPTQsWzAsMF19fSwxOntuOiJQdGdBdHRyU2VtaSIsZjpmdW5jdGlvbiB4RyhILHJl''@;'; put 'put ''LFgpe3ZhciB3ZT0yNTUmSFtILmwrMV0/MTowO3JldHVybiBILmwrPVgmJjI9PVguYmlmZj8zOjQsW3dlXX19LDI6e246IlB0Z0F0dHJJZiIsZjpmdW5jdGlvbiBheChILHJlLFgpe3ZhciB3ZT0yNTUmSFtILmwrMV0/MTowO3JldHVybiBILmwrPTIsW3dlLEgucmVhZF9zaGlmdChYJiYyPT1Y''@;'; put 'put ''LmJpZmY/MToyKV19fSw0OntuOiJQdGdBdHRyQ2hvb3NlIixmOmZ1bmN0aW9uIEJCKEgscmUsWCl7SC5sKz0yO2Zvcih2YXIgd2U9SC5yZWFkX3NoaWZ0KFgmJjI9PVguYmlmZj8xOjIpLHhlPVtdLEZlPTA7RmU8PXdlOysrRmUpeGUucHVzaChILnJlYWRfc2hpZnQoWCYmMj09WC5iaWZmPzE6''@;'; put 'put ''MikpO3JldHVybiB4ZX19LDg6e246IlB0Z0F0dHJHb3RvIixmOmZ1bmN0aW9uIG94KEgscmUsWCl7dmFyIHdlPTI1NSZIW0gubCsxXT8xOjA7cmV0dXJuIEgubCs9Mixbd2UsSC5yZWFkX3NoaWZ0KFgmJjI9PVguYmlmZj8xOjIpXX19LDE2OntuOiJQdGdBdHRyU3VtIixmOmZ1bmN0aW9uIERH''@;'; put 'put ''KEgscmUsWCl7SC5sKz1YJiYyPT1YLmJpZmY/Mzo0fX0sMzI6e246IlB0Z0F0dHJCYXhjZWwiLGY6ZnVuY3Rpb24gaXgoSCl7dmFyIHJlPTEmSFtILmwrMV07cmV0dXJuIEgubCs9NCxbcmUsMV19fSw2NDp7bjoiUHRnQXR0clNwYWNlIixmOmZ1bmN0aW9uIGx4KEgpe3JldHVybiBILnJlYWRf''@;'; put 'put ''c2hpZnQoMiksTTMoSCl9fSw2NTp7bjoiUHRnQXR0clNwYWNlU2VtaSIsZjpmdW5jdGlvbiB4cyhIKXtyZXR1cm4gSC5yZWFkX3NoaWZ0KDIpLE0zKEgpfX0sMTI4OntuOiJQdGdBdHRySWZFcnJvciIsZjpmdW5jdGlvbiBQQihIKXt2YXIgcmU9MjU1JkhbSC5sKzFdPzE6MDtyZXR1cm4gSC5s''@;'; put 'put ''Kz0yLFtyZSxILnJlYWRfc2hpZnQoMildfX0sMjU1Ont9fTtmdW5jdGlvbiBTZChILHJlLFgsd2UseGUpe2lmKHdlLmJpZmY8OClyZXR1cm4gTDIoSCxyZSk7Zm9yKHZhciBGZT1ILmwrcmUsWmU9W10sVmU9MDtWZSE9PVgubGVuZ3RoOysrVmUpc3dpdGNoKFhbVmVdWzBdKXtjYXNlIlB0Z0Fy''@;'; put 'put ''cmF5IjpYW1ZlXVsxXT1qQihILDAsd2UpLFplLnB1c2goWFtWZV1bMV0pO2JyZWFrO2Nhc2UiUHRnTWVtQXJlYSI6WFtWZV1bMl09bkEoSCwwLHdlKSxaZS5wdXNoKFhbVmVdWzJdKTticmVhaztjYXNlIlB0Z0V4cCI6d2UmJjEyPT13ZS5iaWZmJiYoWFtWZV1bMV1bMV09SC5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpLFplLnB1c2goWFtWZV1bMV0pKTticmVhaztjYXNlIlB0Z0xpc3QiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6dGhyb3ciVW5zdXBwb3J0ZWQgIitYW1ZlXVswXX1yZXR1cm4gcmU9RmUtSC5sLCF4ZSYmMCE9PXJlJiZaZS5wdXNo''@;'; put 'put ''KEwyKEgscmUpKSxaZX1mdW5jdGlvbiBGbShILHJlLFgpe2Zvcih2YXIgeGUsRmUsd2U9SC5sK3JlLFplPVtdO3dlIT1ILmw7KXJlPXdlLUgubCx4ZT1WNFtGZT1IW0gubF1dLCgyND09PUZlfHwyNT09PUZlKSYmKHhlPSgyND09PUZlP29BOktmKVtIW0gubCsxXV0pLHhlJiZ4ZS5mP1plLnB1''@;'; put 'put ''c2goW3hlLm4seGUuZihILHJlLFgpXSk6TDIoSCxyZSk7cmV0dXJuIFplfWZ1bmN0aW9uIFhCKEgpe2Zvcih2YXIgcmU9W10sWD0wO1g8SC5sZW5ndGg7KytYKXtmb3IodmFyIHdlPUhbWF0seGU9W10sRmU9MDtGZTx3ZS5sZW5ndGg7KytGZSl7dmFyIFplPXdlW0ZlXTt4ZS5wdXNoKFplPzI9''@;'; put 'put ''PT1aZVswXT8nIicrWmVbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJzpaZVsxXToiIil9cmUucHVzaCh4ZS5qb2luKCIsIikpfXJldHVybiByZS5qb2luKCI7Iil9S2ZbMzNdPUtmWzMyXTt2YXIgbV89e1B0Z0FkZDoiKyIsUHRnQ29uY2F0OiImIixQdGdEaXY6Ii8iLFB0Z0VxOiI9IixQdGdH''@;'; put 'put ''ZToiPj0iLFB0Z0d0OiI+IixQdGdMZToiPD0iLFB0Z0x0OiI8IixQdGdNdWw6IioiLFB0Z05lOiI8PiIsUHRnUG93ZXI6Il4iLFB0Z1N1YjoiLSJ9LGFBPW5ldyBSZWdFeHAoL1teXHdcdTRFMDAtXHU5RkZGXHUzMDQwLVx1MzBGRl0vKTtmdW5jdGlvbiB2XyhILHJlLFgpe2lmKCFIKXJldHVy''@;'; put 'put ''biJTSDMzVEpTRVJSMCI7aWYoWC5iaWZmPjgmJighSC5YVEl8fCFILlhUSVtyZV0pKXJldHVybiBILlNoZWV0TmFtZXNbcmVdO2lmKCFILlhUSSlyZXR1cm4iU0gzM1RKU0VSUjYiO3ZhciB3ZT1ILlhUSVtyZV07aWYoWC5iaWZmPDgpcmV0dXJuIHJlPjFlNCYmKHJlLT02NTUzNikscmU8MCYm''@;'; put 'put ''KHJlPS1yZSksMD09cmU/IiI6SC5YVElbcmUtMV07aWYoIXdlKXJldHVybiJTSDMzVEpTRVJSMSI7dmFyIHhlPSIiO2lmKFguYmlmZj44KXN3aXRjaChIW3dlWzBdXVswXSl7Y2FzZSAzNTc6cmV0dXJuIHhlPS0xPT13ZVsxXT8iI1JFRiI6SC5TaGVldE5hbWVzW3dlWzFdXSx3ZVsxXT09d2Vb''@;'; put 'put ''Ml0/eGU6eGUrIjoiK0guU2hlZXROYW1lc1t3ZVsyXV07Y2FzZSAzNTg6cmV0dXJuIG51bGwhPVguU0lEP0guU2hlZXROYW1lc1tYLlNJRF06IlNIMzNUSlNTQU1FIitIW3dlWzBdXVswXTtkZWZhdWx0OnJldHVybiJTSDMzVEpTU1JDIitIW3dlWzBdXVswXX1zd2l0Y2goSFt3ZVswXV1bMF1b''@;'; put 'put ''MF0pe2Nhc2UgMTAyNTpyZXR1cm4geGU9LTE9PXdlWzFdPyIjUkVGIjpILlNoZWV0TmFtZXNbd2VbMV1dfHwiU0gzM1RKU0VSUjMiLHdlWzFdPT13ZVsyXT94ZTp4ZSsiOiIrSC5TaGVldE5hbWVzW3dlWzJdXTtjYXNlIDE0ODQ5OnJldHVybiBIW3dlWzBdXS5zbGljZSgxKS5tYXAoZnVuY3Rp''@;'; put 'put ''b24oRmUpe3JldHVybiBGZS5OYW1lfSkuam9pbigiOzsiKTtkZWZhdWx0OnJldHVybiBIW3dlWzBdXVswXVszXT8oeGU9LTE9PXdlWzFdPyIjUkVGIjpIW3dlWzBdXVswXVszXVt3ZVsxXV18fCJTSDMzVEpTRVJSNCIsd2VbMV09PXdlWzJdP3hlOnhlKyI6IitIW3dlWzBdXVswXVszXVt3ZVsy''@;'; put 'put ''XV0pOiJTSDMzVEpTRVJSMiJ9fWZ1bmN0aW9uIHl4KEgscmUsWCl7cmV0dXJuIGZ1bmN0aW9uIEtCKEgscmUpe2lmKCEoSHx8cmUmJnJlLmJpZmY8PTUmJnJlLmJpZmY+PTIpKXRocm93IG5ldyBFcnJvcigiZW1wdHkgc2hlZXQgbmFtZSIpO3JldHVybi8jUkVGLy50ZXN0KEgpP0g6YUEudGVz''@;'; put 'put ''dChIKT8iJyIrSCsiJyI6SH0odl8oSCxyZSxYKSxYKX1mdW5jdGlvbiBmdShILHJlLFgsd2UseGUsRmUpe3ZhciBTdCxJdCxQdCxDbixaZT14ZSYmeGUuYmlmZnx8OCxWZT1GZSYmbnVsbCE9cmU/cmU6e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSxVZT1bXSxRdD0wLGFuPTAsTHQ9IiI7aWYo''@;'; put 'put ''IUhbMF18fCFIWzBdWzBdKXJldHVybiIiO2Zvcih2YXIgenQ9LTEsZm49IiIsSW49MCxSbj1IWzBdLmxlbmd0aDtJbjxSbjsrK0luKXt2YXIgVm49SFswXVtJbl07c3dpdGNoKFZuWzBdKXtjYXNlIlB0Z1VtaW51cyI6VWUucHVzaCgiLSIrVWUucG9wKCkpO2JyZWFrO2Nhc2UiUHRnVXBsdXMi''@;'; put 'put ''OlVlLnB1c2goIisiK1VlLnBvcCgpKTticmVhaztjYXNlIlB0Z1BlcmNlbnQiOlVlLnB1c2goVWUucG9wKCkrIiUiKTticmVhaztjYXNlIlB0Z0FkZCI6Y2FzZSJQdGdDb25jYXQiOmNhc2UiUHRnRGl2IjpjYXNlIlB0Z0VxIjpjYXNlIlB0Z0dlIjpjYXNlIlB0Z0d0IjpjYXNlIlB0Z0xlIjpj''@;'; put 'put ''YXNlIlB0Z0x0IjpjYXNlIlB0Z011bCI6Y2FzZSJQdGdOZSI6Y2FzZSJQdGdQb3dlciI6Y2FzZSJQdGdTdWIiOmlmKFN0PVVlLnBvcCgpLEl0PVVlLnBvcCgpLHp0Pj0wKXtzd2l0Y2goSFswXVt6dF1bMV1bMF0pe2Nhc2UgMDpmbj1lcigiICIsSFswXVt6dF1bMV1bMV0pO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTpmbj1lcigiXHIiLEhbMF1benRdWzFdWzFdKTticmVhaztkZWZhdWx0OmlmKGZuPSIiLHhlLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSAiK0hbMF1benRdWzFdWzBdKX1JdCs9Zm4senQ9LTF9VWUucHVzaChJdCttX1tWblswXV0rU3QpO2JyZWFr''@;'; put 'put ''O2Nhc2UiUHRnSXNlY3QiOlN0PVVlLnBvcCgpLEl0PVVlLnBvcCgpLFVlLnB1c2goSXQrIiAiK1N0KTticmVhaztjYXNlIlB0Z1VuaW9uIjpTdD1VZS5wb3AoKSxJdD1VZS5wb3AoKSxVZS5wdXNoKEl0KyIsIitTdCk7YnJlYWs7Y2FzZSJQdGdSYW5nZSI6U3Q9VWUucG9wKCksSXQ9VWUucG9w''@;'; put 'put ''KCksVWUucHVzaChJdCsiOiIrU3QpO2JyZWFrO2Nhc2UiUHRnQXR0ckNob29zZSI6Y2FzZSJQdGdBdHRyR290byI6Y2FzZSJQdGdBdHRySWYiOmNhc2UiUHRnQXR0cklmRXJyb3IiOmNhc2UiUHRnQXR0ckJheGNlbCI6Y2FzZSJQdGdBdHRyU2VtaSI6Y2FzZSJQdGdNZW1BcmVhIjpjYXNlIlB0''@;'; put 'put ''Z1RibCI6Y2FzZSJQdGdNZW1FcnIiOmNhc2UiUHRnTWVtQXJlYU4iOmNhc2UiUHRnTWVtTm9NZW1OIjpjYXNlIlB0Z0F0dHJOb29wIjpjYXNlIlB0Z1NoZWV0IjpjYXNlIlB0Z0VuZFNoZWV0IjpjYXNlIlB0Z01lbUZ1bmMiOmNhc2UiUHRnTWVtTm9NZW0iOmJyZWFrO2Nhc2UiUHRnUmVmIjpQ''@;'; put 'put ''dD1hdShWblsxXVsxXSxWZSx4ZSksVWUucHVzaChoMihQdCxaZSkpO2JyZWFrO2Nhc2UiUHRnUmVmTiI6UHQ9WD9hdShWblsxXVsxXSxYLHhlKTpWblsxXVsxXSxVZS5wdXNoKGgyKFB0LFplKSk7YnJlYWs7Y2FzZSJQdGdSZWYzZCI6UXQ9Vm5bMV1bMV0sUHQ9YXUoVm5bMV1bMl0sVmUseGUp''@;'; put 'put ''LEx0PXl4KHdlLFF0LHhlKSxVZS5wdXNoKEx0KyIhIitoMihQdCxaZSkpO2JyZWFrO2Nhc2UiUHRnRnVuYyI6Y2FzZSJQdGdGdW5jVmFyIjp2YXIgaWk9Vm5bMV1bMF0seXI9Vm5bMV1bMV07aWl8fChpaT0wKTt2YXIgb2k9MD09KGlpJj0xMjcpP1tdOlVlLnNsaWNlKC1paSk7VWUubGVuZ3Ro''@;'; put 'put ''LT1paSwiVXNlciI9PT15ciYmKHlyPW9pLnNoaWZ0KCkpLFVlLnB1c2goeXIrIigiK29pLmpvaW4oIiwiKSsiKSIpO2JyZWFrO2Nhc2UiUHRnQm9vbCI6VWUucHVzaChWblsxXT8iVFJVRSI6IkZBTFNFIik7YnJlYWs7Y2FzZSJQdGdJbnQiOmNhc2UiUHRnTnVtIjpVZS5wdXNoKFN0cmluZyhW''@;'; put 'put ''blsxXSkpO2JyZWFrO2Nhc2UiUHRnU3RyIjpVZS5wdXNoKCciJytWblsxXS5yZXBsYWNlKC8iL2csJyIiJykrJyInKTticmVhaztjYXNlIlB0Z0VyciI6VWUucHVzaChWblsxXSk7YnJlYWs7Y2FzZSJQdGdBcmVhTiI6Q249bXMoVm5bMV1bMV0sWD97czpYfTpWZSx4ZSksVWUucHVzaChHZyhD''@;'; put 'put ''bix4ZSkpO2JyZWFrO2Nhc2UiUHRnQXJlYSI6Q249bXMoVm5bMV1bMV0sVmUseGUpLFVlLnB1c2goR2coQ24seGUpKTticmVhaztjYXNlIlB0Z0FyZWEzZCI6UXQ9Vm5bMV1bMV0sQ249bXMoVm5bMV1bMl0sVmUseGUpLEx0PXl4KHdlLFF0LHhlKSxVZS5wdXNoKEx0KyIhIitHZyhDbix4ZSkp''@;'; put 'put ''O2JyZWFrO2Nhc2UiUHRnQXR0clN1bSI6VWUucHVzaCgiU1VNKCIrVWUucG9wKCkrIikiKTticmVhaztjYXNlIlB0Z05hbWUiOnZhciBNcj0od2UubmFtZXN8fFtdKVsoYW49Vm5bMV1bMl0pLTFdfHwod2VbMF18fFtdKVthbl0sV3I9TXI/TXIuTmFtZToiU0gzM1RKU05BTUUiK1N0cmluZyhh''@;'; put 'put ''bik7V3IgaW4gQ18mJihXcj1DX1tXcl0pLFVlLnB1c2goV3IpO2JyZWFrO2Nhc2UiUHRnTmFtZVgiOnZhciBuaSxhaT1WblsxXVsxXTtpZihhbj1WblsxXVsyXSwhKHhlLmJpZmY8PTUpKXt2YXIgZnI9IiI7aWYoMTQ4NDk9PSgod2VbYWldfHxbXSlbMF18fFtdKVswXXx8KDEwMjU9PSgod2Vb''@;'; put 'put ''YWldfHxbXSlbMF18fFtdKVswXT93ZVthaV1bYW5dJiZ3ZVthaV1bYW5dLml0YWI+MCYmKGZyPXdlLlNoZWV0TmFtZXNbd2VbYWldW2FuXS5pdGFiLTFdKyIhIik6ZnI9d2UuU2hlZXROYW1lc1thbi0xXSsiISIpLHdlW2FpXSYmd2VbYWldW2FuXSlmcis9d2VbYWldW2FuXS5OYW1lO2Vsc2Ug''@;'; put 'put ''aWYod2VbMF0mJndlWzBdW2FuXSlmcis9d2VbMF1bYW5dLk5hbWU7ZWxzZXt2YXIgdzA9KHZfKHdlLGFpLHhlKXx8IiIpLnNwbGl0KCI7OyIpO3cwW2FuLTFdP2ZyPXcwW2FuLTFdOmZyKz0iU0gzM1RKU0VSUlgifVVlLnB1c2goZnIpO2JyZWFrfWFpPDAmJihhaT0tYWkpLHdlW2FpXSYmKG5p''@;'; put 'put ''PXdlW2FpXVthbl0pLG5pfHwobmk9e05hbWU6IlNIMzNUSlNFUlJZIn0pLFVlLnB1c2gobmkuTmFtZSk7YnJlYWs7Y2FzZSJQdGdQYXJlbiI6dmFyIEowPSIoIixpbz0iKSI7aWYoenQ+PTApe3N3aXRjaChmbj0iIixIWzBdW3p0XVsxXVswXSl7Y2FzZSAyOkowPWVyKCIgIixIWzBdW3p0XVsx''@;'; put 'put ''XVsxXSkrSjA7YnJlYWs7Y2FzZSAzOkowPWVyKCJcciIsSFswXVt6dF1bMV1bMV0pK0owO2JyZWFrO2Nhc2UgNDppbz1lcigiICIsSFswXVt6dF1bMV1bMV0pK2lvO2JyZWFrO2Nhc2UgNTppbz1lcigiXHIiLEhbMF1benRdWzFdWzFdKStpbzticmVhaztkZWZhdWx0OmlmKHhlLldURil0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSAiK0hbMF1benRdWzFdWzBdKX16dD0tMX1VZS5wdXNoKEowK1VlLnBvcCgpK2lvKTticmVhaztjYXNlIlB0Z1JlZkVyciI6Y2FzZSJQdGdBcmVhRXJyIjpjYXNlIlB0Z0FyZWFFcnIzZCI6Y2FzZSJQdGdSZWZFcnIzZCI6''@;'; put 'put ''VWUucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z0V4cCI6dmFyIGJpPXtjOlguYyxyOlgucn07aWYod2Uuc2hhcmVkZltRMChQdD17YzpWblsxXVsxXSxyOlZuWzFdWzBdfSldKXt2YXIgenI9d2Uuc2hhcmVkZltRMChQdCldO1VlLnB1c2goZnUoenIsVmUsYmksd2UseGUpKX1lbHNle3Zh''@;'; put 'put ''ciBEaT0hMTtmb3IoU3Q9MDtTdCE9d2UuYXJyYXlmLmxlbmd0aDsrK1N0KWlmKCEoUHQuYzwoSXQ9d2UuYXJyYXlmW1N0XSlbMF0ucy5jfHxQdC5jPkl0WzBdLmUuY3x8UHQucjxJdFswXS5zLnJ8fFB0LnI+SXRbMF0uZS5yKSl7VWUucHVzaChmdShJdFsxXSxWZSxiaSx3ZSx4ZSkpLERpPSEw''@;'; put 'put ''O2JyZWFrfURpfHxVZS5wdXNoKFZuWzFdKX1icmVhaztjYXNlIlB0Z0FycmF5IjpVZS5wdXNoKCJ7IitYQihWblsxXSkrIn0iKTticmVhaztjYXNlIlB0Z0F0dHJTcGFjZSI6Y2FzZSJQdGdBdHRyU3BhY2VTZW1pIjp6dD1JbjticmVhaztjYXNlIlB0Z01pc3NBcmciOlVlLnB1c2goIiIpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiUHRnTGlzdCI6VWUucHVzaCgiVGFibGUiK1ZuWzFdLmlkeCsiWyMiK1ZuWzFdLnJ0KyJdIik7YnJlYWs7Y2FzZSJQdGdFbGZDb2wiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6Y2FzZSJQdGdFbGZDb2xWIjpjYXNlIlB0Z0VsZkxlbCI6Y2FzZSJQdGdFbGZS''@;'; put 'put ''YWRpY2FsIjpjYXNlIlB0Z0VsZlJhZGljYWxMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2UiUHRnRWxmUnciOmNhc2UiUHRnRWxmUndWIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVMRnMiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIEZvcm11bGEg''@;'; put 'put ''VG9rZW46ICIrU3RyaW5nKFZuKSl9aWYoMyE9eGUuYmlmZiYmenQ+PTAmJi0xPT1bIlB0Z0F0dHJTcGFjZSIsIlB0Z0F0dHJTcGFjZVNlbWkiLCJQdGdBdHRyR290byJdLmluZGV4T2YoSFswXVtJbl1bMF0pKXt2YXIgSHI9ITA7c3dpdGNoKChWbj1IWzBdW3p0XSlbMV1bMF0pe2Nhc2UgNDpI''@;'; put 'put ''cj0hMTtjYXNlIDA6Zm49ZXIoIiAiLFZuWzFdWzFdKTticmVhaztjYXNlIDU6SHI9ITE7Y2FzZSAxOmZuPWVyKCJcciIsVm5bMV1bMV0pO2JyZWFrO2RlZmF1bHQ6aWYoZm49IiIseGUuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrVm5bMV1bMF0p''@;'; put 'put ''fVVlLnB1c2goKEhyP2ZuOiIiKStVZS5wb3AoKSsoSHI/IiI6Zm4pKSx6dD0tMX19aWYoVWUubGVuZ3RoPjEmJnhlLldURil0aHJvdyBuZXcgRXJyb3IoImJhZCBmb3JtdWxhIHN0YWNrIik7cmV0dXJuIFVlWzBdfWZ1bmN0aW9uIFJHKEgscmUsWCl7dmFyIEZlLHdlPUgubCtyZSx4ZT0yPT1Y''@;'; put 'put ''LmJpZmY/MToyLFplPUgucmVhZF9zaGlmdCh4ZSk7aWYoNjU1MzU9PVplKXJldHVybltbXSxMMihILHJlLTIpXTt2YXIgVmU9Rm0oSCxaZSxYKTtyZXR1cm4gcmUhPT1aZSt4ZSYmKEZlPVNkKEgscmUtWmUteGUsVmUsWCkpLEgubD13ZSxbVmUsRmVdfWZ1bmN0aW9uIEhtKEgscmUsWCl7dmFy''@;'; put 'put ''IHhlLHdlPUgubCtyZSxGZT1ILnJlYWRfc2hpZnQoMiksWmU9Rm0oSCxGZSxYKTtyZXR1cm4gNjU1MzU9PUZlP1tbXSxMMihILHJlLTIpXToocmUhPT1GZSsyJiYoeGU9U2QoSCx3ZS1GZS0yLFplLFgpKSxbWmUseGVdKX1mdW5jdGlvbiB5XyhILHJlLFgpe3ZhciB3ZT1ILmwrcmUseGU9WmMo''@;'; put 'put ''SCk7Mj09WC5iaWZmJiYrK0gubDt2YXIgRmU9ZnVuY3Rpb24gQV8oSCl7dmFyIHJlO2lmKDY1NTM1IT09dmkoSCxILmwrNikpcmV0dXJuW2UyKEgpLCJuIl07c3dpdGNoKEhbSC5sXSl7Y2FzZSAwOnJldHVybiBILmwrPTgsWyJTdHJpbmciLCJzIl07Y2FzZSAxOnJldHVybiByZT0xPT09SFtI''@;'; put 'put ''LmwrMl0sSC5sKz04LFtyZSwiYiJdO2Nhc2UgMjpyZXR1cm4gcmU9SFtILmwrMl0sSC5sKz04LFtyZSwiZSJdO2Nhc2UgMzpyZXR1cm4gSC5sKz04LFsiIiwicyJdfXJldHVybltdfShIKSxaZT1ILnJlYWRfc2hpZnQoMSk7MiE9WC5iaWZmJiYoSC5yZWFkX3NoaWZ0KDEpLFguYmlmZj49NSYm''@;'; put 'put ''SC5yZWFkX3NoaWZ0KDQpKTt2YXIgVmU9ZnVuY3Rpb24gUTgoSCxyZSxYKXt2YXIgRmUsd2U9SC5sK3JlLHhlPTI9PVguYmlmZj8xOjIsWmU9SC5yZWFkX3NoaWZ0KHhlKTtpZig2NTUzNT09WmUpcmV0dXJuW1tdLEwyKEgscmUtMildO3ZhciBWZT1GbShILFplLFgpO3JldHVybiByZSE9PVpl''@;'; put 'put ''K3hlJiYoRmU9U2QoSCxyZS1aZS14ZSxWZSxYKSksSC5sPXdlLFtWZSxGZV19KEgsd2UtSC5sLFgpO3JldHVybntjZWxsOnhlLHZhbDpGZVswXSxmb3JtdWxhOlZlLHNoYXJlZDpaZT4+MyYxLHR0OkZlWzFdfX1mdW5jdGlvbiBsQShILHJlLFgpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoNCkseGU9''@;'; put 'put ''Rm0oSCx3ZSxYKSxGZT1ILnJlYWRfc2hpZnQoNCk7cmV0dXJuW3hlLEZlPjA/U2QoSCxGZSx4ZSxYLCEwKTpudWxsXX12YXIgRkc9bEEsd189bEEsJEI9bEEscUI9ZnVuY3Rpb24gJGYoSCxyZSxYKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KDQpLHhlPUgucmVhZF9zaGlmdCg0KSxGZT1GbShILHdl''@;'; put 'put ''LFgpO3JldHVybltGZSx4ZT4wP1NkKEgseGUsRmUsWCwhMCk6bnVsbF19LEhHPWxBLGo0PWxBO2Z1bmN0aW9uIE5tKEgpe2lmKCgwfEgpPT1IJiZIPE1hdGgucG93KDIsMTYpJiZIPj0wKXt2YXIgcmU9eGkoMTEpO3JldHVybiByZS53cml0ZV9zaGlmdCg0LDMpLHJlLndyaXRlX3NoaWZ0KDEs''@;'; put 'put ''MzApLHJlLndyaXRlX3NoaWZ0KDIsSCkscmUud3JpdGVfc2hpZnQoNCwwKSxyZX12YXIgWD14aSgxNyk7cmV0dXJuIFgud3JpdGVfc2hpZnQoNCwxMSksWC53cml0ZV9zaGlmdCgxLDMxKSxYLndyaXRlX3NoaWZ0KDgsSCksWC53cml0ZV9zaGlmdCg0LDApLFh9ZnVuY3Rpb24gYl8oSCl7dmFy''@;'; put 'put ''IHJlPXhpKDcpO3JlLndyaXRlX3NoaWZ0KDQsMysyKkgubGVuZ3RoKSxyZS53cml0ZV9zaGlmdCgxLDIzKSxyZS53cml0ZV9zaGlmdCgyLEgubGVuZ3RoKTt2YXIgWD14aSgyKkgubGVuZ3RoKTtYLndyaXRlX3NoaWZ0KDIqSC5sZW5ndGgsSCwidXRmMTZsZSIpO3ZhciB3ZT14aSg0KTtyZXR1''@;'; put 'put ''cm4gd2Uud3JpdGVfc2hpZnQoNCwwKSxWKFtyZSxYLHdlXSl9ZnVuY3Rpb24gVm0oSCl7aWYoSC5tYXRjaCgvXiMoRElWXC8wIXxHRVRUSU5HX0RBVEF8TlwvQXxOQU1FXD98TlVMTCF8TlVNIXxSRUYhfFZBTFVFISkkLykpcmV0dXJuIGZ1bmN0aW9uIGVQKEgpe3ZhciByZT14aSgxMCk7cmV0''@;'; put 'put ''dXJuIHJlLndyaXRlX3NoaWZ0KDQsMikscmUud3JpdGVfc2hpZnQoMSwyOCkscmUud3JpdGVfc2hpZnQoMSxIKSxyZS53cml0ZV9zaGlmdCg0LDApLHJlfSgrT3VbSF0pO2lmKEgubWF0Y2goL15cJD8oPzpbQS1XXVtBLVpdezJ9fFhbQS1FXVtBLVpdfFhGW0EtRF18W0EtWl17MSwyfSlcJD8o''@;'; put 'put ''PzoxMFswLTNdXGR7NH18MTA0WzAtN11cZHszfXwxMDQ4WzAtNF1cZHsyfXwxMDQ4NVswLTZdXGR8MTA0ODU3WzAtNl18WzEtOV1cZHswLDV9KSQvKSlyZXR1cm4gZnVuY3Rpb24gc0EoSCl7dmFyIHJlPXBvKEgpLFg9eGkoMTUpO3JldHVybiBYLndyaXRlX3NoaWZ0KDQsNyksWC53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDM2KSxYLndyaXRlX3NoaWZ0KDQscmUuciksWC53cml0ZV9zaGlmdCgyLHJlLmN8KCIkIj09SC5jaGFyQXQoMCk/MDoxKTw8MTR8KEgubWF0Y2goL1wkXGQvKT8wOjEpPDwxNSksWC53cml0ZV9zaGlmdCg0LDApLFh9KEgpO2lmKEgubWF0Y2goL14iLioiJC8pKXJldHVybiBiXyhI''@;'; put 'put ''KTt0aHJvdyJGb3JtdWxhIHwiK0grInwgbm90IHN1cHBvcnRlZCBmb3IgWExTQiJ9dmFyIF9fPXswOiJCRUVQIiwxOiJPUEVOIiwyOiJPUEVOLkxJTktTIiwzOiJDTE9TRS5BTEwiLDQ6IlNBVkUiLDU6IlNBVkUuQVMiLDY6IkZJTEUuREVMRVRFIiw3OiJQQUdFLlNFVFVQIiw4OiJQUklOVCIs''@;'; put 'put ''OToiUFJJTlRFUi5TRVRVUCIsMTA6IlFVSVQiLDExOiJORVcuV0lORE9XIiwxMjoiQVJSQU5HRS5BTEwiLDEzOiJXSU5ET1cuU0laRSIsMTQ6IldJTkRPVy5NT1ZFIiwxNToiRlVMTCIsMTY6IkNMT1NFIiwxNzoiUlVOIiwyMjoiU0VULlBSSU5ULkFSRUEiLDIzOiJTRVQuUFJJTlQuVElUTEVT''@;'; put 'put ''IiwyNDoiU0VULlBBR0UuQlJFQUsiLDI1OiJSRU1PVkUuUEFHRS5CUkVBSyIsMjY6IkZPTlQiLDI3OiJESVNQTEFZIiwyODoiUFJPVEVDVC5ET0NVTUVOVCIsMjk6IlBSRUNJU0lPTiIsMzA6IkExLlIxQzEiLDMxOiJDQUxDVUxBVEUuTk9XIiwzMjoiQ0FMQ1VMQVRJT04iLDM0OiJEQVRBLkZJ''@;'; put 'put ''TkQiLDM1OiJFWFRSQUNUIiwzNjoiREFUQS5ERUxFVEUiLDM3OiJTRVQuREFUQUJBU0UiLDM4OiJTRVQuQ1JJVEVSSUEiLDM5OiJTT1JUIiw0MDoiREFUQS5TRVJJRVMiLDQxOiJUQUJMRSIsNDI6IkZPUk1BVC5OVU1CRVIiLDQzOiJBTElHTk1FTlQiLDQ0OiJTVFlMRSIsNDU6IkJPUkRFUiIs''@;'; put 'put ''NDY6IkNFTEwuUFJPVEVDVElPTiIsNDc6IkNPTFVNTi5XSURUSCIsNDg6IlVORE8iLDQ5OiJDVVQiLDUwOiJDT1BZIiw1MToiUEFTVEUiLDUyOiJDTEVBUiIsNTM6IlBBU1RFLlNQRUNJQUwiLDU0OiJFRElULkRFTEVURSIsNTU6IklOU0VSVCIsNTY6IkZJTEwuUklHSFQiLDU3OiJGSUxMLkRP''@;'; put 'put ''V04iLDYxOiJERUZJTkUuTkFNRSIsNjI6IkNSRUFURS5OQU1FUyIsNjM6IkZPUk1VTEEuR09UTyIsNjQ6IkZPUk1VTEEuRklORCIsNjU6IlNFTEVDVC5MQVNULkNFTEwiLDY2OiJTSE9XLkFDVElWRS5DRUxMIiw2NzoiR0FMTEVSWS5BUkVBIiw2ODoiR0FMTEVSWS5CQVIiLDY5OiJHQUxMRVJZ''@;'; put 'put ''LkNPTFVNTiIsNzA6IkdBTExFUlkuTElORSIsNzE6IkdBTExFUlkuUElFIiw3MjoiR0FMTEVSWS5TQ0FUVEVSIiw3MzoiQ09NQklOQVRJT04iLDc0OiJQUkVGRVJSRUQiLDc1OiJBREQuT1ZFUkxBWSIsNzY6IkdSSURMSU5FUyIsNzc6IlNFVC5QUkVGRVJSRUQiLDc4OiJBWEVTIiw3OToiTEVH''@;'; put 'put ''RU5EIiw4MDoiQVRUQUNILlRFWFQiLDgxOiJBREQuQVJST1ciLDgyOiJTRUxFQ1QuQ0hBUlQiLDgzOiJTRUxFQ1QuUExPVC5BUkVBIiw4NDoiUEFUVEVSTlMiLDg1OiJNQUlOLkNIQVJUIiw4NjoiT1ZFUkxBWSIsODc6IlNDQUxFIiw4ODoiRk9STUFULkxFR0VORCIsODk6IkZPUk1BVC5URVhU''@;'; put 'put ''Iiw5MDoiRURJVC5SRVBFQVQiLDkxOiJQQVJTRSIsOTI6IkpVU1RJRlkiLDkzOiJISURFIiw5NDoiVU5ISURFIiw5NToiV09SS1NQQUNFIiw5NjoiRk9STVVMQSIsOTc6IkZPUk1VTEEuRklMTCIsOTg6IkZPUk1VTEEuQVJSQVkiLDk5OiJEQVRBLkZJTkQuTkVYVCIsMTAwOiJEQVRBLkZJTkQu''@;'; put 'put ''UFJFViIsMTAxOiJGT1JNVUxBLkZJTkQuTkVYVCIsMTAyOiJGT1JNVUxBLkZJTkQuUFJFViIsMTAzOiJBQ1RJVkFURSIsMTA0OiJBQ1RJVkFURS5ORVhUIiwxMDU6IkFDVElWQVRFLlBSRVYiLDEwNjoiVU5MT0NLRUQuTkVYVCIsMTA3OiJVTkxPQ0tFRC5QUkVWIiwxMDg6IkNPUFkuUElDVFVS''@;'; put 'put ''RSIsMTA5OiJTRUxFQ1QiLDExMDoiREVMRVRFLk5BTUUiLDExMToiREVMRVRFLkZPUk1BVCIsMTEyOiJWTElORSIsMTEzOiJITElORSIsMTE0OiJWUEFHRSIsMTE1OiJIUEFHRSIsMTE2OiJWU0NST0xMIiwxMTc6IkhTQ1JPTEwiLDExODoiQUxFUlQiLDExOToiTkVXIiwxMjA6IkNBTkNFTC5D''@;'; put 'put ''T1BZIiwxMjE6IlNIT1cuQ0xJUEJPQVJEIiwxMjI6Ik1FU1NBR0UiLDEyNDoiUEFTVEUuTElOSyIsMTI1OiJBUFAuQUNUSVZBVEUiLDEyNjoiREVMRVRFLkFSUk9XIiwxMjc6IlJPVy5IRUlHSFQiLDEyODoiRk9STUFULk1PVkUiLDEyOToiRk9STUFULlNJWkUiLDEzMDoiRk9STVVMQS5SRVBM''@;'; put 'put ''QUNFIiwxMzE6IlNFTkQuS0VZUyIsMTMyOiJTRUxFQ1QuU1BFQ0lBTCIsMTMzOiJBUFBMWS5OQU1FUyIsMTM0OiJSRVBMQUNFLkZPTlQiLDEzNToiRlJFRVpFLlBBTkVTIiwxMzY6IlNIT1cuSU5GTyIsMTM3OiJTUExJVCIsMTM4OiJPTi5XSU5ET1ciLDEzOToiT04uREFUQSIsMTQwOiJESVNB''@;'; put 'put ''QkxFLklOUFVUIiwxNDI6Ik9VVExJTkUiLDE0MzoiTElTVC5OQU1FUyIsMTQ0OiJGSUxFLkNMT1NFIiwxNDU6IlNBVkUuV09SS0JPT0siLDE0NjoiREFUQS5GT1JNIiwxNDc6IkNPUFkuQ0hBUlQiLDE0ODoiT04uVElNRSIsMTQ5OiJXQUlUIiwxNTA6IkZPUk1BVC5GT05UIiwxNTE6IkZJTEwu''@;'; put 'put ''VVAiLDE1MjoiRklMTC5MRUZUIiwxNTM6IkRFTEVURS5PVkVSTEFZIiwxNTU6IlNIT1JULk1FTlVTIiwxNTk6IlNFVC5VUERBVEUuU1RBVFVTIiwxNjE6IkNPTE9SLlBBTEVUVEUiLDE2MjoiREVMRVRFLlNUWUxFIiwxNjM6IldJTkRPVy5SRVNUT1JFIiwxNjQ6IldJTkRPVy5NQVhJTUlaRSIs''@;'; put 'put ''MTY2OiJDSEFOR0UuTElOSyIsMTY3OiJDQUxDVUxBVEUuRE9DVU1FTlQiLDE2ODoiT04uS0VZIiwxNjk6IkFQUC5SRVNUT1JFIiwxNzA6IkFQUC5NT1ZFIiwxNzE6IkFQUC5TSVpFIiwxNzI6IkFQUC5NSU5JTUlaRSIsMTczOiJBUFAuTUFYSU1JWkUiLDE3NDoiQlJJTkcuVE8uRlJPTlQiLDE3''@;'; put 'put ''NToiU0VORC5UTy5CQUNLIiwxODU6Ik1BSU4uQ0hBUlQuVFlQRSIsMTg2OiJPVkVSTEFZLkNIQVJULlRZUEUiLDE4NzoiU0VMRUNULkVORCIsMTg4OiJPUEVOLk1BSUwiLDE4OToiU0VORC5NQUlMIiwxOTA6IlNUQU5EQVJELkZPTlQiLDE5MToiQ09OU09MSURBVEUiLDE5MjoiU09SVC5TUEVD''@;'; put 'put ''SUFMIiwxOTM6IkdBTExFUlkuM0QuQVJFQSIsMTk0OiJHQUxMRVJZLjNELkNPTFVNTiIsMTk1OiJHQUxMRVJZLjNELkxJTkUiLDE5NjoiR0FMTEVSWS4zRC5QSUUiLDE5NzoiVklFVy4zRCIsMTk4OiJHT0FMLlNFRUsiLDE5OToiV09SS0dST1VQIiwyMDA6IkZJTEwuR1JPVVAiLDIwMToiVVBE''@;'; put 'put ''QVRFLkxJTksiLDIwMjoiUFJPTU9URSIsMjAzOiJERU1PVEUiLDIwNDoiU0hPVy5ERVRBSUwiLDIwNjoiVU5HUk9VUCIsMjA3OiJPQkpFQ1QuUFJPUEVSVElFUyIsMjA4OiJTQVZFLk5FVy5PQkpFQ1QiLDIwOToiU0hBUkUiLDIxMDoiU0hBUkUuTkFNRSIsMjExOiJEVVBMSUNBVEUiLDIxMjoi''@;'; put 'put ''QVBQTFkuU1RZTEUiLDIxMzoiQVNTSUdOLlRPLk9CSkVDVCIsMjE0OiJPQkpFQ1QuUFJPVEVDVElPTiIsMjE1OiJISURFLk9CSkVDVCIsMjE2OiJTRVQuRVhUUkFDVCIsMjE3OiJDUkVBVEUuUFVCTElTSEVSIiwyMTg6IlNVQlNDUklCRS5UTyIsMjE5OiJBVFRSSUJVVEVTIiwyMjA6IlNIT1cu''@;'; put 'put ''VE9PTEJBUiIsMjIyOiJQUklOVC5QUkVWSUVXIiwyMjM6IkVESVQuQ09MT1IiLDIyNDoiU0hPVy5MRVZFTFMiLDIyNToiRk9STUFULk1BSU4iLDIyNjoiRk9STUFULk9WRVJMQVkiLDIyNzoiT04uUkVDQUxDIiwyMjg6IkVESVQuU0VSSUVTIiwyMjk6IkRFRklORS5TVFlMRSIsMjQwOiJMSU5F''@;'; put 'put ''LlBSSU5UIiwyNDM6IkVOVEVSLkRBVEEiLDI0OToiR0FMTEVSWS5SQURBUiIsMjUwOiJNRVJHRS5TVFlMRVMiLDI1MToiRURJVElPTi5PUFRJT05TIiwyNTI6IlBBU1RFLlBJQ1RVUkUiLDI1MzoiUEFTVEUuUElDVFVSRS5MSU5LIiwyNTQ6IlNQRUxMSU5HIiwyNTY6IlpPT00iLDI1OToiSU5T''@;'; put 'put ''RVJULk9CSkVDVCIsMjYwOiJXSU5ET1cuTUlOSU1JWkUiLDI2NToiU09VTkQuTk9URSIsMjY2OiJTT1VORC5QTEFZIiwyNjc6IkZPUk1BVC5TSEFQRSIsMjY4OiJFWFRFTkQuUE9MWUdPTiIsMjY5OiJGT1JNQVQuQVVUTyIsMjcyOiJHQUxMRVJZLjNELkJBUiIsMjczOiJHQUxMRVJZLjNELlNV''@;'; put 'put ''UkZBQ0UiLDI3NDoiRklMTC5BVVRPIiwyNzY6IkNVU1RPTUlaRS5UT09MQkFSIiwyNzc6IkFERC5UT09MIiwyNzg6IkVESVQuT0JKRUNUIiwyNzk6Ik9OLkRPVUJMRUNMSUNLIiwyODA6Ik9OLkVOVFJZIiwyODE6IldPUktCT09LLkFERCIsMjgyOiJXT1JLQk9PSy5NT1ZFIiwyODM6IldPUktC''@;'; put 'put ''T09LLkNPUFkiLDI4NDoiV09SS0JPT0suT1BUSU9OUyIsMjg1OiJTQVZFLldPUktTUEFDRSIsMjg4OiJDSEFSVC5XSVpBUkQiLDI4OToiREVMRVRFLlRPT0wiLDI5MDoiTU9WRS5UT09MIiwyOTE6IldPUktCT09LLlNFTEVDVCIsMjkyOiJXT1JLQk9PSy5BQ1RJVkFURSIsMjkzOiJBU1NJR04u''@;'; put 'put ''VE8uVE9PTCIsMjk1OiJDT1BZLlRPT0wiLDI5NjoiUkVTRVQuVE9PTCIsMjk3OiJDT05TVFJBSU4uTlVNRVJJQyIsMjk4OiJQQVNURS5UT09MIiwzMDI6IldPUktCT09LLk5FVyIsMzA1OiJTQ0VOQVJJTy5DRUxMUyIsMzA2OiJTQ0VOQVJJTy5ERUxFVEUiLDMwNzoiU0NFTkFSSU8uQUREIiwz''@;'; put 'put ''MDg6IlNDRU5BUklPLkVESVQiLDMwOToiU0NFTkFSSU8uU0hPVyIsMzEwOiJTQ0VOQVJJTy5TSE9XLk5FWFQiLDMxMToiU0NFTkFSSU8uU1VNTUFSWSIsMzEyOiJQSVZPVC5UQUJMRS5XSVpBUkQiLDMxMzoiUElWT1QuRklFTEQuUFJPUEVSVElFUyIsMzE0OiJQSVZPVC5GSUVMRCIsMzE1OiJQ''@;'; put 'put ''SVZPVC5JVEVNIiwzMTY6IlBJVk9ULkFERC5GSUVMRFMiLDMxODoiT1BUSU9OUy5DQUxDVUxBVElPTiIsMzE5OiJPUFRJT05TLkVESVQiLDMyMDoiT1BUSU9OUy5WSUVXIiwzMjE6IkFERElOLk1BTkFHRVIiLDMyMjoiTUVOVS5FRElUT1IiLDMyMzoiQVRUQUNILlRPT0xCQVJTIiwzMjQ6IlZC''@;'; put 'put ''QUFjdGl2YXRlIiwzMjU6Ik9QVElPTlMuQ0hBUlQiLDMyODoiVkJBLklOU0VSVC5GSUxFIiwzMzA6IlZCQS5QUk9DRURVUkUuREVGSU5JVElPTiIsMzM2OiJST1VUSU5HLlNMSVAiLDMzODoiUk9VVEUuRE9DVU1FTlQiLDMzOToiTUFJTC5MT0dPTiIsMzQyOiJJTlNFUlQuUElDVFVSRSIsMzQz''@;'; put 'put ''OiJFRElULlRPT0wiLDM0NDoiR0FMTEVSWS5ET1VHSE5VVCIsMzUwOiJDSEFSVC5UUkVORCIsMzUyOiJQSVZPVC5JVEVNLlBST1BFUlRJRVMiLDM1NDoiV09SS0JPT0suSU5TRVJUIiwzNTU6Ik9QVElPTlMuVFJBTlNJVElPTiIsMzU2OiJPUFRJT05TLkdFTkVSQUwiLDM3MDoiRklMVEVSLkFE''@;'; put 'put ''VkFOQ0VEIiwzNzM6Ik1BSUwuQURELk1BSUxFUiIsMzc0OiJNQUlMLkRFTEVURS5NQUlMRVIiLDM3NToiTUFJTC5SRVBMWSIsMzc2OiJNQUlMLlJFUExZLkFMTCIsMzc3OiJNQUlMLkZPUldBUkQiLDM3ODoiTUFJTC5ORVhULkxFVFRFUiIsMzc5OiJEQVRBLkxBQkVMIiwzODA6IklOU0VSVC5U''@;'; put 'put ''SVRMRSIsMzgxOiJGT05ULlBST1BFUlRJRVMiLDM4MjoiTUFDUk8uT1BUSU9OUyIsMzgzOiJXT1JLQk9PSy5ISURFIiwzODQ6IldPUktCT09LLlVOSElERSIsMzg1OiJXT1JLQk9PSy5ERUxFVEUiLDM4NjoiV09SS0JPT0suTkFNRSIsMzg4OiJHQUxMRVJZLkNVU1RPTSIsMzkwOiJBREQuQ0hB''@;'; put 'put ''UlQuQVVUT0ZPUk1BVCIsMzkxOiJERUxFVEUuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkyOiJDSEFSVC5BREQuREFUQSIsMzkzOiJBVVRPLk9VVExJTkUiLDM5NDoiVEFCLk9SREVSIiwzOTU6IlNIT1cuRElBTE9HIiwzOTY6IlNFTEVDVC5BTEwiLDM5NzoiVU5HUk9VUC5TSEVFVFMiLDM5ODoiU1VC''@;'; put 'put ''VE9UQUwuQ1JFQVRFIiwzOTk6IlNVQlRPVEFMLlJFTU9WRSIsNDAwOiJSRU5BTUUuT0JKRUNUIiw0MTI6IldPUktCT09LLlNDUk9MTCIsNDEzOiJXT1JLQk9PSy5ORVhUIiw0MTQ6IldPUktCT09LLlBSRVYiLDQxNToiV09SS0JPT0suVEFCLlNQTElUIiw0MTY6IkZVTEwuU0NSRUVOIiw0MTc6''@;'; put 'put ''IldPUktCT09LLlBST1RFQ1QiLDQyMDoiU0NST0xMQkFSLlBST1BFUlRJRVMiLDQyMToiUElWT1QuU0hPVy5QQUdFUyIsNDIyOiJURVhULlRPLkNPTFVNTlMiLDQyMzoiRk9STUFULkNIQVJUVFlQRSIsNDI0OiJMSU5LLkZPUk1BVCIsNDI1OiJUUkFDRVIuRElTUExBWSIsNDMwOiJUUkFDRVIu''@;'; put 'put ''TkFWSUdBVEUiLDQzMToiVFJBQ0VSLkNMRUFSIiw0MzI6IlRSQUNFUi5FUlJPUiIsNDMzOiJQSVZPVC5GSUVMRC5HUk9VUCIsNDM0OiJQSVZPVC5GSUVMRC5VTkdST1VQIiw0MzU6IkNIRUNLQk9YLlBST1BFUlRJRVMiLDQzNjoiTEFCRUwuUFJPUEVSVElFUyIsNDM3OiJMSVNUQk9YLlBST1BF''@;'; put 'put ''UlRJRVMiLDQzODoiRURJVEJPWC5QUk9QRVJUSUVTIiw0Mzk6IlBJVk9ULlJFRlJFU0giLDQ0MDoiTElOSy5DT01CTyIsNDQxOiJPUEVOLlRFWFQiLDQ0MjoiSElERS5ESUFMT0ciLDQ0MzoiU0VULkRJQUxPRy5GT0NVUyIsNDQ0OiJFTkFCTEUuT0JKRUNUIiw0NDU6IlBVU0hCVVRUT04uUFJP''@;'; put 'put ''UEVSVElFUyIsNDQ2OiJTRVQuRElBTE9HLkRFRkFVTFQiLDQ0NzoiRklMVEVSIiw0NDg6IkZJTFRFUi5TSE9XLkFMTCIsNDQ5OiJDTEVBUi5PVVRMSU5FIiw0NTA6IkZVTkNUSU9OLldJWkFSRCIsNDUxOiJBREQuTElTVC5JVEVNIiw0NTI6IlNFVC5MSVNULklURU0iLDQ1MzoiUkVNT1ZFLkxJ''@;'; put 'put ''U1QuSVRFTSIsNDU0OiJTRUxFQ1QuTElTVC5JVEVNIiw0NTU6IlNFVC5DT05UUk9MLlZBTFVFIiw0NTY6IlNBVkUuQ09QWS5BUyIsNDU4OiJPUFRJT05TLkxJU1RTLkFERCIsNDU5OiJPUFRJT05TLkxJU1RTLkRFTEVURSIsNDYwOiJTRVJJRVMuQVhFUyIsNDYxOiJTRVJJRVMuWCIsNDYyOiJT''@;'; put 'put ''RVJJRVMuWSIsNDYzOiJFUlJPUkJBUi5YIiw0NjQ6IkVSUk9SQkFSLlkiLDQ2NToiRk9STUFULkNIQVJUIiw0NjY6IlNFUklFUy5PUkRFUiIsNDY3OiJNQUlMLkxPR09GRiIsNDY4OiJDTEVBUi5ST1VUSU5HLlNMSVAiLDQ2OToiQVBQLkFDVElWQVRFLk1JQ1JPU09GVCIsNDcwOiJNQUlMLkVE''@;'; put 'put ''SVQuTUFJTEVSIiw0NzE6Ik9OLlNIRUVUIiw0NzI6IlNUQU5EQVJELldJRFRIIiw0NzM6IlNDRU5BUklPLk1FUkdFIiw0NzQ6IlNVTU1BUlkuSU5GTyIsNDc1OiJGSU5ELkZJTEUiLDQ3NjoiQUNUSVZFLkNFTEwuRk9OVCIsNDc3OiJFTkFCTEUuVElQV0laQVJEIiw0Nzg6IlZCQS5NQUtFLkFE''@;'; put 'put ''RElOIiw0ODA6IklOU0VSVERBVEFUQUJMRSIsNDgxOiJXT1JLR1JPVVAuT1BUSU9OUyIsNDgyOiJNQUlMLlNFTkQuTUFJTEVSIiw0ODU6IkFVVE9DT1JSRUNUIiw0ODk6IlBPU1QuRE9DVU1FTlQiLDQ5MToiUElDS0xJU1QiLDQ5MzoiVklFVy5TSE9XIiw0OTQ6IlZJRVcuREVGSU5FIiw0OTU6''@;'; put 'put ''IlZJRVcuREVMRVRFIiw1MDk6IlNIRUVULkJBQ0tHUk9VTkQiLDUxMDoiSU5TRVJULk1BUC5PQkpFQ1QiLDUxMToiT1BUSU9OUy5NRU5PTk8iLDUxNzoiTVNPQ0hFQ0tTIiw1MTg6Ik5PUk1BTCIsNTE5OiJMQVlPVVQiLDUyMDoiUk0uUFJJTlQuQVJFQSIsNTIxOiJDTEVBUi5QUklOVC5BUkVB''@;'; put 'put ''Iiw1MjI6IkFERC5QUklOVC5BUkVBIiw1MjM6Ik1PVkUuQlJLIiw1NDU6IkhJREVDVVJSLk5PVEUiLDU0NjoiSElERUFMTC5OT1RFUyIsNTQ3OiJERUxFVEUuTk9URSIsNTQ4OiJUUkFWRVJTRS5OT1RFUyIsNTQ5OiJBQ1RJVkFURS5OT1RFUyIsNjIwOiJQUk9URUNULlJFVklTSU9OUyIsNjIx''@;'; put 'put ''OiJVTlBST1RFQ1QuUkVWSVNJT05TIiw2NDc6Ik9QVElPTlMuTUUiLDY1MzoiV0VCLlBVQkxJU0giLDY2NzoiTkVXV0VCUVVFUlkiLDY3MzoiUElWT1QuVEFCTEUuQ0hBUlQiLDc1MzoiT1BUSU9OUy5TQVZFIiw3NTU6Ik9QVElPTlMuU1BFTEwiLDgwODoiSElERUFMTC5JTktBTk5PVFMifSxq''@;'; put 'put ''bT17MDoiQ09VTlQiLDE6IklGIiwyOiJJU05BIiwzOiJJU0VSUk9SIiw0OiJTVU0iLDU6IkFWRVJBR0UiLDY6Ik1JTiIsNzoiTUFYIiw4OiJST1ciLDk6IkNPTFVNTiIsMTA6Ik5BIiwxMToiTlBWIiwxMjoiU1RERVYiLDEzOiJET0xMQVIiLDE0OiJGSVhFRCIsMTU6IlNJTiIsMTY6IkNPUyIs''@;'; put 'put ''MTc6IlRBTiIsMTg6IkFUQU4iLDE5OiJQSSIsMjA6IlNRUlQiLDIxOiJFWFAiLDIyOiJMTiIsMjM6IkxPRzEwIiwyNDoiQUJTIiwyNToiSU5UIiwyNjoiU0lHTiIsMjc6IlJPVU5EIiwyODoiTE9PS1VQIiwyOToiSU5ERVgiLDMwOiJSRVBUIiwzMToiTUlEIiwzMjoiTEVOIiwzMzoiVkFMVUUi''@;'; put 'put ''LDM0OiJUUlVFIiwzNToiRkFMU0UiLDM2OiJBTkQiLDM3OiJPUiIsMzg6Ik5PVCIsMzk6Ik1PRCIsNDA6IkRDT1VOVCIsNDE6IkRTVU0iLDQyOiJEQVZFUkFHRSIsNDM6IkRNSU4iLDQ0OiJETUFYIiw0NToiRFNUREVWIiw0NjoiVkFSIiw0NzoiRFZBUiIsNDg6IlRFWFQiLDQ5OiJMSU5FU1Qi''@;'; put 'put ''LDUwOiJUUkVORCIsNTE6IkxPR0VTVCIsNTI6IkdST1dUSCIsNTM6IkdPVE8iLDU0OiJIQUxUIiw1NToiUkVUVVJOIiw1NjoiUFYiLDU3OiJGViIsNTg6Ik5QRVIiLDU5OiJQTVQiLDYwOiJSQVRFIiw2MToiTUlSUiIsNjI6IklSUiIsNjM6IlJBTkQiLDY0OiJNQVRDSCIsNjU6IkRBVEUiLDY2''@;'; put 'put ''OiJUSU1FIiw2NzoiREFZIiw2ODoiTU9OVEgiLDY5OiJZRUFSIiw3MDoiV0VFS0RBWSIsNzE6IkhPVVIiLDcyOiJNSU5VVEUiLDczOiJTRUNPTkQiLDc0OiJOT1ciLDc1OiJBUkVBUyIsNzY6IlJPV1MiLDc3OiJDT0xVTU5TIiw3ODoiT0ZGU0VUIiw3OToiQUJTUkVGIiw4MDoiUkVMUkVGIiw4''@;'; put 'put ''MToiQVJHVU1FTlQiLDgyOiJTRUFSQ0giLDgzOiJUUkFOU1BPU0UiLDg0OiJFUlJPUiIsODU6IlNURVAiLDg2OiJUWVBFIiw4NzoiRUNITyIsODg6IlNFVC5OQU1FIiw4OToiQ0FMTEVSIiw5MDoiREVSRUYiLDkxOiJXSU5ET1dTIiw5MjoiU0VSSUVTIiw5MzoiRE9DVU1FTlRTIiw5NDoiQUNU''@;'; put 'put ''SVZFLkNFTEwiLDk1OiJTRUxFQ1RJT04iLDk2OiJSRVNVTFQiLDk3OiJBVEFOMiIsOTg6IkFTSU4iLDk5OiJBQ09TIiwxMDA6IkNIT09TRSIsMTAxOiJITE9PS1VQIiwxMDI6IlZMT09LVVAiLDEwMzoiTElOS1MiLDEwNDoiSU5QVVQiLDEwNToiSVNSRUYiLDEwNjoiR0VULkZPUk1VTEEiLDEw''@;'; put 'put ''NzoiR0VULk5BTUUiLDEwODoiU0VULlZBTFVFIiwxMDk6IkxPRyIsMTEwOiJFWEVDIiwxMTE6IkNIQVIiLDExMjoiTE9XRVIiLDExMzoiVVBQRVIiLDExNDoiUFJPUEVSIiwxMTU6IkxFRlQiLDExNjoiUklHSFQiLDExNzoiRVhBQ1QiLDExODoiVFJJTSIsMTE5OiJSRVBMQUNFIiwxMjA6IlNV''@;'; put 'put ''QlNUSVRVVEUiLDEyMToiQ09ERSIsMTIyOiJOQU1FUyIsMTIzOiJESVJFQ1RPUlkiLDEyNDoiRklORCIsMTI1OiJDRUxMIiwxMjY6IklTRVJSIiwxMjc6IklTVEVYVCIsMTI4OiJJU05VTUJFUiIsMTI5OiJJU0JMQU5LIiwxMzA6IlQiLDEzMToiTiIsMTMyOiJGT1BFTiIsMTMzOiJGQ0xPU0Ui''@;'; put 'put ''LDEzNDoiRlNJWkUiLDEzNToiRlJFQURMTiIsMTM2OiJGUkVBRCIsMTM3OiJGV1JJVEVMTiIsMTM4OiJGV1JJVEUiLDEzOToiRlBPUyIsMTQwOiJEQVRFVkFMVUUiLDE0MToiVElNRVZBTFVFIiwxNDI6IlNMTiIsMTQzOiJTWUQiLDE0NDoiRERCIiwxNDU6IkdFVC5ERUYiLDE0NjoiUkVGVEVY''@;'; put 'put ''VCIsMTQ3OiJURVhUUkVGIiwxNDg6IklORElSRUNUIiwxNDk6IlJFR0lTVEVSIiwxNTA6IkNBTEwiLDE1MToiQURELkJBUiIsMTUyOiJBREQuTUVOVSIsMTUzOiJBREQuQ09NTUFORCIsMTU0OiJFTkFCTEUuQ09NTUFORCIsMTU1OiJDSEVDSy5DT01NQU5EIiwxNTY6IlJFTkFNRS5DT01NQU5E''@;'; put 'put ''IiwxNTc6IlNIT1cuQkFSIiwxNTg6IkRFTEVURS5NRU5VIiwxNTk6IkRFTEVURS5DT01NQU5EIiwxNjA6IkdFVC5DSEFSVC5JVEVNIiwxNjE6IkRJQUxPRy5CT1giLDE2MjoiQ0xFQU4iLDE2MzoiTURFVEVSTSIsMTY0OiJNSU5WRVJTRSIsMTY1OiJNTVVMVCIsMTY2OiJGSUxFUyIsMTY3OiJJ''@;'; put 'put ''UE1UIiwxNjg6IlBQTVQiLDE2OToiQ09VTlRBIiwxNzA6IkNBTkNFTC5LRVkiLDE3MToiRk9SIiwxNzI6IldISUxFIiwxNzM6IkJSRUFLIiwxNzQ6Ik5FWFQiLDE3NToiSU5JVElBVEUiLDE3NjoiUkVRVUVTVCIsMTc3OiJQT0tFIiwxNzg6IkVYRUNVVEUiLDE3OToiVEVSTUlOQVRFIiwxODA6''@;'; put 'put ''IlJFU1RBUlQiLDE4MToiSEVMUCIsMTgyOiJHRVQuQkFSIiwxODM6IlBST0RVQ1QiLDE4NDoiRkFDVCIsMTg1OiJHRVQuQ0VMTCIsMTg2OiJHRVQuV09SS1NQQUNFIiwxODc6IkdFVC5XSU5ET1ciLDE4ODoiR0VULkRPQ1VNRU5UIiwxODk6IkRQUk9EVUNUIiwxOTA6IklTTk9OVEVYVCIsMTkx''@;'; put 'put ''OiJHRVQuTk9URSIsMTkyOiJOT1RFIiwxOTM6IlNUREVWUCIsMTk0OiJWQVJQIiwxOTU6IkRTVERFVlAiLDE5NjoiRFZBUlAiLDE5NzoiVFJVTkMiLDE5ODoiSVNMT0dJQ0FMIiwxOTk6IkRDT1VOVEEiLDIwMDoiREVMRVRFLkJBUiIsMjAxOiJVTlJFR0lTVEVSIiwyMDQ6IlVTRE9MTEFSIiwy''@;'; put 'put ''MDU6IkZJTkRCIiwyMDY6IlNFQVJDSEIiLDIwNzoiUkVQTEFDRUIiLDIwODoiTEVGVEIiLDIwOToiUklHSFRCIiwyMTA6Ik1JREIiLDIxMToiTEVOQiIsMjEyOiJST1VORFVQIiwyMTM6IlJPVU5ERE9XTiIsMjE0OiJBU0MiLDIxNToiREJDUyIsMjE2OiJSQU5LIiwyMTk6IkFERFJFU1MiLDIy''@;'; put 'put ''MDoiREFZUzM2MCIsMjIxOiJUT0RBWSIsMjIyOiJWREIiLDIyMzoiRUxTRSIsMjI0OiJFTFNFLklGIiwyMjU6IkVORC5JRiIsMjI2OiJGT1IuQ0VMTCIsMjI3OiJNRURJQU4iLDIyODoiU1VNUFJPRFVDVCIsMjI5OiJTSU5IIiwyMzA6IkNPU0giLDIzMToiVEFOSCIsMjMyOiJBU0lOSCIsMjMz''@;'; put 'put ''OiJBQ09TSCIsMjM0OiJBVEFOSCIsMjM1OiJER0VUIiwyMzY6IkNSRUFURS5PQkpFQ1QiLDIzNzoiVk9MQVRJTEUiLDIzODoiTEFTVC5FUlJPUiIsMjM5OiJDVVNUT00uVU5ETyIsMjQwOiJDVVNUT00uUkVQRUFUIiwyNDE6IkZPUk1VTEEuQ09OVkVSVCIsMjQyOiJHRVQuTElOSy5JTkZPIiwy''@;'; put 'put ''NDM6IlRFWFQuQk9YIiwyNDQ6IklORk8iLDI0NToiR1JPVVAiLDI0NjoiR0VULk9CSkVDVCIsMjQ3OiJEQiIsMjQ4OiJQQVVTRSIsMjUxOiJSRVNVTUUiLDI1MjoiRlJFUVVFTkNZIiwyNTM6IkFERC5UT09MQkFSIiwyNTQ6IkRFTEVURS5UT09MQkFSIiwyNTU6IlVzZXIiLDI1NjoiUkVTRVQu''@;'; put 'put ''VE9PTEJBUiIsMjU3OiJFVkFMVUFURSIsMjU4OiJHRVQuVE9PTEJBUiIsMjU5OiJHRVQuVE9PTCIsMjYwOiJTUEVMTElORy5DSEVDSyIsMjYxOiJFUlJPUi5UWVBFIiwyNjI6IkFQUC5USVRMRSIsMjYzOiJXSU5ET1cuVElUTEUiLDI2NDoiU0FWRS5UT09MQkFSIiwyNjU6IkVOQUJMRS5UT09M''@;'; put 'put ''IiwyNjY6IlBSRVNTLlRPT0wiLDI2NzoiUkVHSVNURVIuSUQiLDI2ODoiR0VULldPUktCT09LIiwyNjk6IkFWRURFViIsMjcwOiJCRVRBRElTVCIsMjcxOiJHQU1NQUxOIiwyNzI6IkJFVEFJTlYiLDI3MzoiQklOT01ESVNUIiwyNzQ6IkNISURJU1QiLDI3NToiQ0hJSU5WIiwyNzY6IkNPTUJJ''@;'; put 'put ''TiIsMjc3OiJDT05GSURFTkNFIiwyNzg6IkNSSVRCSU5PTSIsMjc5OiJFVkVOIiwyODA6IkVYUE9ORElTVCIsMjgxOiJGRElTVCIsMjgyOiJGSU5WIiwyODM6IkZJU0hFUiIsMjg0OiJGSVNIRVJJTlYiLDI4NToiRkxPT1IiLDI4NjoiR0FNTUFESVNUIiwyODc6IkdBTU1BSU5WIiwyODg6IkNF''@;'; put 'put ''SUxJTkciLDI4OToiSFlQR0VPTURJU1QiLDI5MDoiTE9HTk9STURJU1QiLDI5MToiTE9HSU5WIiwyOTI6Ik5FR0JJTk9NRElTVCIsMjkzOiJOT1JNRElTVCIsMjk0OiJOT1JNU0RJU1QiLDI5NToiTk9STUlOViIsMjk2OiJOT1JNU0lOViIsMjk3OiJTVEFOREFSRElaRSIsMjk4OiJPREQiLDI5''@;'; put 'put ''OToiUEVSTVVUIiwzMDA6IlBPSVNTT04iLDMwMToiVERJU1QiLDMwMjoiV0VJQlVMTCIsMzAzOiJTVU1YTVkyIiwzMDQ6IlNVTVgyTVkyIiwzMDU6IlNVTVgyUFkyIiwzMDY6IkNISVRFU1QiLDMwNzoiQ09SUkVMIiwzMDg6IkNPVkFSIiwzMDk6IkZPUkVDQVNUIiwzMTA6IkZURVNUIiwzMTE6''@;'; put 'put ''IklOVEVSQ0VQVCIsMzEyOiJQRUFSU09OIiwzMTM6IlJTUSIsMzE0OiJTVEVZWCIsMzE1OiJTTE9QRSIsMzE2OiJUVEVTVCIsMzE3OiJQUk9CIiwzMTg6IkRFVlNRIiwzMTk6IkdFT01FQU4iLDMyMDoiSEFSTUVBTiIsMzIxOiJTVU1TUSIsMzIyOiJLVVJUIiwzMjM6IlNLRVciLDMyNDoiWlRF''@;'; put 'put ''U1QiLDMyNToiTEFSR0UiLDMyNjoiU01BTEwiLDMyNzoiUVVBUlRJTEUiLDMyODoiUEVSQ0VOVElMRSIsMzI5OiJQRVJDRU5UUkFOSyIsMzMwOiJNT0RFIiwzMzE6IlRSSU1NRUFOIiwzMzI6IlRJTlYiLDMzNDoiTU9WSUUuQ09NTUFORCIsMzM1OiJHRVQuTU9WSUUiLDMzNjoiQ09OQ0FURU5B''@;'; put 'put ''VEUiLDMzNzoiUE9XRVIiLDMzODoiUElWT1QuQURELkRBVEEiLDMzOToiR0VULlBJVk9ULlRBQkxFIiwzNDA6IkdFVC5QSVZPVC5GSUVMRCIsMzQxOiJHRVQuUElWT1QuSVRFTSIsMzQyOiJSQURJQU5TIiwzNDM6IkRFR1JFRVMiLDM0NDoiU1VCVE9UQUwiLDM0NToiU1VNSUYiLDM0NjoiQ09V''@;'; put 'put ''TlRJRiIsMzQ3OiJDT1VOVEJMQU5LIiwzNDg6IlNDRU5BUklPLkdFVCIsMzQ5OiJPUFRJT05TLkxJU1RTLkdFVCIsMzUwOiJJU1BNVCIsMzUxOiJEQVRFRElGIiwzNTI6IkRBVEVTVFJJTkciLDM1MzoiTlVNQkVSU1RSSU5HIiwzNTQ6IlJPTUFOIiwzNTU6Ik9QRU4uRElBTE9HIiwzNTY6IlNB''@;'; put 'put ''VkUuRElBTE9HIiwzNTc6IlZJRVcuR0VUIiwzNTg6IkdFVFBJVk9UREFUQSIsMzU5OiJIWVBFUkxJTksiLDM2MDoiUEhPTkVUSUMiLDM2MToiQVZFUkFHRUEiLDM2MjoiTUFYQSIsMzYzOiJNSU5BIiwzNjQ6IlNUREVWUEEiLDM2NToiVkFSUEEiLDM2NjoiU1RERVZBIiwzNjc6IlZBUkEiLDM2''@;'; put 'put ''ODoiQkFIVFRFWFQiLDM2OToiVEhBSURBWU9GV0VFSyIsMzcwOiJUSEFJRElHSVQiLDM3MToiVEhBSU1PTlRIT0ZZRUFSIiwzNzI6IlRIQUlOVU1TT1VORCIsMzczOiJUSEFJTlVNU1RSSU5HIiwzNzQ6IlRIQUlTVFJJTkdMRU5HVEgiLDM3NToiSVNUSEFJRElHSVQiLDM3NjoiUk9VTkRCQUhU''@;'; put 'put ''RE9XTiIsMzc3OiJST1VOREJBSFRVUCIsMzc4OiJUSEFJWUVBUiIsMzc5OiJSVEQiLDM4MDoiQ1VCRVZBTFVFIiwzODE6IkNVQkVNRU1CRVIiLDM4MjoiQ1VCRU1FTUJFUlBST1BFUlRZIiwzODM6IkNVQkVSQU5LRURNRU1CRVIiLDM4NDoiSEVYMkJJTiIsMzg1OiJIRVgyREVDIiwzODY6IkhF''@;'; put 'put ''WDJPQ1QiLDM4NzoiREVDMkJJTiIsMzg4OiJERUMySEVYIiwzODk6IkRFQzJPQ1QiLDM5MDoiT0NUMkJJTiIsMzkxOiJPQ1QySEVYIiwzOTI6Ik9DVDJERUMiLDM5MzoiQklOMkRFQyIsMzk0OiJCSU4yT0NUIiwzOTU6IkJJTjJIRVgiLDM5NjoiSU1TVUIiLDM5NzoiSU1ESVYiLDM5ODoiSU1Q''@;'; put 'put ''T1dFUiIsMzk5OiJJTUFCUyIsNDAwOiJJTVNRUlQiLDQwMToiSU1MTiIsNDAyOiJJTUxPRzIiLDQwMzoiSU1MT0cxMCIsNDA0OiJJTVNJTiIsNDA1OiJJTUNPUyIsNDA2OiJJTUVYUCIsNDA3OiJJTUFSR1VNRU5UIiw0MDg6IklNQ09OSlVHQVRFIiw0MDk6IklNQUdJTkFSWSIsNDEwOiJJTVJF''@;'; put 'put ''QUwiLDQxMToiQ09NUExFWCIsNDEyOiJJTVNVTSIsNDEzOiJJTVBST0RVQ1QiLDQxNDoiU0VSSUVTU1VNIiw0MTU6IkZBQ1RET1VCTEUiLDQxNjoiU1FSVFBJIiw0MTc6IlFVT1RJRU5UIiw0MTg6IkRFTFRBIiw0MTk6IkdFU1RFUCIsNDIwOiJJU0VWRU4iLDQyMToiSVNPREQiLDQyMjoiTVJP''@;'; put 'put ''VU5EIiw0MjM6IkVSRiIsNDI0OiJFUkZDIiw0MjU6IkJFU1NFTEoiLDQyNjoiQkVTU0VMSyIsNDI3OiJCRVNTRUxZIiw0Mjg6IkJFU1NFTEkiLDQyOToiWElSUiIsNDMwOiJYTlBWIiw0MzE6IlBSSUNFTUFUIiw0MzI6IllJRUxETUFUIiw0MzM6IklOVFJBVEUiLDQzNDoiUkVDRUlWRUQiLDQz''@;'; put 'put ''NToiRElTQyIsNDM2OiJQUklDRURJU0MiLDQzNzoiWUlFTERESVNDIiw0Mzg6IlRCSUxMRVEiLDQzOToiVEJJTExQUklDRSIsNDQwOiJUQklMTFlJRUxEIiw0NDE6IlBSSUNFIiw0NDI6IllJRUxEIiw0NDM6IkRPTExBUkRFIiw0NDQ6IkRPTExBUkZSIiw0NDU6Ik5PTUlOQUwiLDQ0NjoiRUZG''@;'; put 'put ''RUNUIiw0NDc6IkNVTVBSSU5DIiw0NDg6IkNVTUlQTVQiLDQ0OToiRURBVEUiLDQ1MDoiRU9NT05USCIsNDUxOiJZRUFSRlJBQyIsNDUyOiJDT1VQREFZQlMiLDQ1MzoiQ09VUERBWVMiLDQ1NDoiQ09VUERBWVNOQyIsNDU1OiJDT1VQTkNEIiw0NTY6IkNPVVBOVU0iLDQ1NzoiQ09VUFBDRCIs''@;'; put 'put ''NDU4OiJEVVJBVElPTiIsNDU5OiJNRFVSQVRJT04iLDQ2MDoiT0RETFBSSUNFIiw0NjE6Ik9ERExZSUVMRCIsNDYyOiJPRERGUFJJQ0UiLDQ2MzoiT0RERllJRUxEIiw0NjQ6IlJBTkRCRVRXRUVOIiw0NjU6IldFRUtOVU0iLDQ2NjoiQU1PUkRFR1JDIiw0Njc6IkFNT1JMSU5DIiw0Njg6IkNP''@;'; put 'put ''TlZFUlQiLDcyNDoiU0hFRVRKUyIsNDY5OiJBQ0NSSU5UIiw0NzA6IkFDQ1JJTlRNIiw0NzE6IldPUktEQVkiLDQ3MjoiTkVUV09SS0RBWVMiLDQ3MzoiR0NEIiw0NzQ6Ik1VTFRJTk9NSUFMIiw0NzU6IkxDTSIsNDc2OiJGVlNDSEVEVUxFIiw0Nzc6IkNVQkVLUElNRU1CRVIiLDQ3ODoiQ1VC''@;'; put 'put ''RVNFVCIsNDc5OiJDVUJFU0VUQ09VTlQiLDQ4MDoiSUZFUlJPUiIsNDgxOiJDT1VOVElGUyIsNDgyOiJTVU1JRlMiLDQ4MzoiQVZFUkFHRUlGIiw0ODQ6IkFWRVJBR0VJRlMifSxaND17MjoxLDM6MSwxMDowLDE1OjEsMTY6MSwxNzoxLDE4OjEsMTk6MCwyMDoxLDIxOjEsMjI6MSwyMzoxLDI0''@;'; put 'put ''OjEsMjU6MSwyNjoxLDI3OjIsMzA6MiwzMTozLDMyOjEsMzM6MSwzNDowLDM1OjAsMzg6MSwzOToyLDQwOjMsNDE6Myw0MjozLDQzOjMsNDQ6Myw0NTozLDQ3OjMsNDg6Miw1MzoxLDYxOjMsNjM6MCw2NTozLDY2OjMsNjc6MSw2ODoxLDY5OjEsNzA6MSw3MToxLDcyOjEsNzM6MSw3NDowLDc1''@;'; put 'put ''OjEsNzY6MSw3NzoxLDc5OjIsODA6Miw4MzoxLDg1OjAsODY6MSw4OTowLDkwOjEsOTQ6MCw5NTowLDk3OjIsOTg6MSw5OToxLDEwMTozLDEwMjozLDEwNToxLDEwNjoxLDEwODoyLDExMToxLDExMjoxLDExMzoxLDExNDoxLDExNzoyLDExODoxLDExOTo0LDEyMToxLDEyNjoxLDEyNzoxLDEy''@;'; put 'put ''ODoxLDEyOToxLDEzMDoxLDEzMToxLDEzMzoxLDEzNDoxLDEzNToxLDEzNjoyLDEzNzoyLDEzODoyLDE0MDoxLDE0MToxLDE0MjozLDE0Mzo0LDE0NDo0LDE2MToxLDE2MjoxLDE2MzoxLDE2NDoxLDE2NToyLDE3MjoxLDE3NToyLDE3NjoyLDE3NzozLDE3ODoyLDE3OToxLDE4NDoxLDE4Njox''@;'; put 'put ''LDE4OTozLDE5MDoxLDE5NTozLDE5NjozLDE5NzoxLDE5ODoxLDE5OTozLDIwMToxLDIwNzo0LDIxMDozLDIxMToxLDIxMjoyLDIxMzoyLDIxNDoxLDIxNToxLDIyNTowLDIyOToxLDIzMDoxLDIzMToxLDIzMjoxLDIzMzoxLDIzNDoxLDIzNTozLDI0NDoxLDI0Nzo0LDI1MjoyLDI1NzoxLDI2''@;'; put 'put ''MToxLDI3MToxLDI3Mzo0LDI3NDoyLDI3NToyLDI3NjoyLDI3NzozLDI3ODozLDI3OToxLDI4MDozLDI4MTozLDI4MjozLDI4MzoxLDI4NDoxLDI4NToyLDI4Njo0LDI4NzozLDI4ODoyLDI4OTo0LDI5MDozLDI5MTozLDI5MjozLDI5Mzo0LDI5NDoxLDI5NTozLDI5NjoxLDI5NzozLDI5ODox''@;'; put 'put ''LDI5OToyLDMwMDozLDMwMTozLDMwMjo0LDMwMzoyLDMwNDoyLDMwNToyLDMwNjoyLDMwNzoyLDMwODoyLDMwOTozLDMxMDoyLDMxMToyLDMxMjoyLDMxMzoyLDMxNDoyLDMxNToyLDMxNjo0LDMyNToyLDMyNjoyLDMyNzoyLDMyODoyLDMzMToyLDMzMjoyLDMzNzoyLDM0MjoxLDM0MzoxLDM0''@;'; put 'put ''NjoyLDM0NzoxLDM1MDo0LDM1MTozLDM1MjoxLDM1MzoyLDM2MDoxLDM2ODoxLDM2OToxLDM3MDoxLDM3MToxLDM3MjoxLDM3MzoxLDM3NDoxLDM3NToxLDM3NjoxLDM3NzoxLDM3ODoxLDM4MjozLDM4NToxLDM5MjoxLDM5MzoxLDM5NjoyLDM5NzoyLDM5ODoyLDM5OToxLDQwMDoxLDQwMTox''@;'; put 'put ''LDQwMjoxLDQwMzoxLDQwNDoxLDQwNToxLDQwNjoxLDQwNzoxLDQwODoxLDQwOToxLDQxMDoxLDQxNDo0LDQxNToxLDQxNjoxLDQxNzoyLDQyMDoxLDQyMToxLDQyMjoyLDQyNDoxLDQyNToyLDQyNjoyLDQyNzoyLDQyODoyLDQzMDozLDQzODozLDQzOTozLDQ0MDozLDQ0MzoyLDQ0NDoyLDQ0''@;'; put 'put ''NToyLDQ0NjoyLDQ0Nzo2LDQ0ODo2LDQ0OToyLDQ1MDoyLDQ2NDoyLDQ2ODozLDQ3NjoyLDQ3OToxLDQ4MDoyLDY1NTM1OjB9LENfPXsiX3hsZm4uQUNPVCI6IkFDT1QiLCJfeGxmbi5BQ09USCI6IkFDT1RIIiwiX3hsZm4uQUdHUkVHQVRFIjoiQUdHUkVHQVRFIiwiX3hsZm4uQVJBQklDIjoi''@;'; put 'put ''QVJBQklDIiwiX3hsZm4uQVZFUkFHRUlGIjoiQVZFUkFHRUlGIiwiX3hsZm4uQVZFUkFHRUlGUyI6IkFWRVJBR0VJRlMiLCJfeGxmbi5CQVNFIjoiQkFTRSIsIl94bGZuLkJFVEEuRElTVCI6IkJFVEEuRElTVCIsIl94bGZuLkJFVEEuSU5WIjoiQkVUQS5JTlYiLCJfeGxmbi5CSU5PTS5ESVNU''@;'; put 'put ''IjoiQklOT00uRElTVCIsIl94bGZuLkJJTk9NLkRJU1QuUkFOR0UiOiJCSU5PTS5ESVNULlJBTkdFIiwiX3hsZm4uQklOT00uSU5WIjoiQklOT00uSU5WIiwiX3hsZm4uQklUQU5EIjoiQklUQU5EIiwiX3hsZm4uQklUTFNISUZUIjoiQklUTFNISUZUIiwiX3hsZm4uQklUT1IiOiJCSVRPUiIs''@;'; put 'put ''Il94bGZuLkJJVFJTSElGVCI6IkJJVFJTSElGVCIsIl94bGZuLkJJVFhPUiI6IkJJVFhPUiIsIl94bGZuLkNFSUxJTkcuTUFUSCI6IkNFSUxJTkcuTUFUSCIsIl94bGZuLkNFSUxJTkcuUFJFQ0lTRSI6IkNFSUxJTkcuUFJFQ0lTRSIsIl94bGZuLkNISVNRLkRJU1QiOiJDSElTUS5ESVNUIiwi''@;'; put 'put ''X3hsZm4uQ0hJU1EuRElTVC5SVCI6IkNISVNRLkRJU1QuUlQiLCJfeGxmbi5DSElTUS5JTlYiOiJDSElTUS5JTlYiLCJfeGxmbi5DSElTUS5JTlYuUlQiOiJDSElTUS5JTlYuUlQiLCJfeGxmbi5DSElTUS5URVNUIjoiQ0hJU1EuVEVTVCIsIl94bGZuLkNPTUJJTkEiOiJDT01CSU5BIiwiX3hs''@;'; put 'put ''Zm4uQ09OQ0FUIjoiQ09OQ0FUIiwiX3hsZm4uQ09ORklERU5DRS5OT1JNIjoiQ09ORklERU5DRS5OT1JNIiwiX3hsZm4uQ09ORklERU5DRS5UIjoiQ09ORklERU5DRS5UIiwiX3hsZm4uQ09UIjoiQ09UIiwiX3hsZm4uQ09USCI6IkNPVEgiLCJfeGxmbi5DT1VOVElGUyI6IkNPVU5USUZTIiwi''@;'; put 'put ''X3hsZm4uQ09WQVJJQU5DRS5QIjoiQ09WQVJJQU5DRS5QIiwiX3hsZm4uQ09WQVJJQU5DRS5TIjoiQ09WQVJJQU5DRS5TIiwiX3hsZm4uQ1NDIjoiQ1NDIiwiX3hsZm4uQ1NDSCI6IkNTQ0giLCJfeGxmbi5EQVlTIjoiREFZUyIsIl94bGZuLkRFQ0lNQUwiOiJERUNJTUFMIiwiX3hsZm4uRUNN''@;'; put 'put ''QS5DRUlMSU5HIjoiRUNNQS5DRUlMSU5HIiwiX3hsZm4uRVJGLlBSRUNJU0UiOiJFUkYuUFJFQ0lTRSIsIl94bGZuLkVSRkMuUFJFQ0lTRSI6IkVSRkMuUFJFQ0lTRSIsIl94bGZuLkVYUE9OLkRJU1QiOiJFWFBPTi5ESVNUIiwiX3hsZm4uRi5ESVNUIjoiRi5ESVNUIiwiX3hsZm4uRi5ESVNU''@;'; put 'put ''LlJUIjoiRi5ESVNULlJUIiwiX3hsZm4uRi5JTlYiOiJGLklOViIsIl94bGZuLkYuSU5WLlJUIjoiRi5JTlYuUlQiLCJfeGxmbi5GLlRFU1QiOiJGLlRFU1QiLCJfeGxmbi5GSUxURVJYTUwiOiJGSUxURVJYTUwiLCJfeGxmbi5GTE9PUi5NQVRIIjoiRkxPT1IuTUFUSCIsIl94bGZuLkZMT09S''@;'; put 'put ''LlBSRUNJU0UiOiJGTE9PUi5QUkVDSVNFIiwiX3hsZm4uRk9SRUNBU1QuRVRTIjoiRk9SRUNBU1QuRVRTIiwiX3hsZm4uRk9SRUNBU1QuRVRTLkNPTkZJTlQiOiJGT1JFQ0FTVC5FVFMuQ09ORklOVCIsIl94bGZuLkZPUkVDQVNULkVUUy5TRUFTT05BTElUWSI6IkZPUkVDQVNULkVUUy5TRUFT''@;'; put 'put ''T05BTElUWSIsIl94bGZuLkZPUkVDQVNULkVUUy5TVEFUIjoiRk9SRUNBU1QuRVRTLlNUQVQiLCJfeGxmbi5GT1JFQ0FTVC5MSU5FQVIiOiJGT1JFQ0FTVC5MSU5FQVIiLCJfeGxmbi5GT1JNVUxBVEVYVCI6IkZPUk1VTEFURVhUIiwiX3hsZm4uR0FNTUEiOiJHQU1NQSIsIl94bGZuLkdBTU1B''@;'; put 'put ''LkRJU1QiOiJHQU1NQS5ESVNUIiwiX3hsZm4uR0FNTUEuSU5WIjoiR0FNTUEuSU5WIiwiX3hsZm4uR0FNTUFMTi5QUkVDSVNFIjoiR0FNTUFMTi5QUkVDSVNFIiwiX3hsZm4uR0FVU1MiOiJHQVVTUyIsIl94bGZuLkhZUEdFT00uRElTVCI6IkhZUEdFT00uRElTVCIsIl94bGZuLklGRVJST1Ii''@;'; put 'put ''OiJJRkVSUk9SIiwiX3hsZm4uSUZOQSI6IklGTkEiLCJfeGxmbi5JRlMiOiJJRlMiLCJfeGxmbi5JTUNPU0giOiJJTUNPU0giLCJfeGxmbi5JTUNPVCI6IklNQ09UIiwiX3hsZm4uSU1DU0MiOiJJTUNTQyIsIl94bGZuLklNQ1NDSCI6IklNQ1NDSCIsIl94bGZuLklNU0VDIjoiSU1TRUMiLCJf''@;'; put 'put ''eGxmbi5JTVNFQ0giOiJJTVNFQ0giLCJfeGxmbi5JTVNJTkgiOiJJTVNJTkgiLCJfeGxmbi5JTVRBTiI6IklNVEFOIiwiX3hsZm4uSVNGT1JNVUxBIjoiSVNGT1JNVUxBIiwiX3hsZm4uSVNPLkNFSUxJTkciOiJJU08uQ0VJTElORyIsIl94bGZuLklTT1dFRUtOVU0iOiJJU09XRUVLTlVNIiwi''@;'; put 'put ''X3hsZm4uTE9HTk9STS5ESVNUIjoiTE9HTk9STS5ESVNUIiwiX3hsZm4uTE9HTk9STS5JTlYiOiJMT0dOT1JNLklOViIsIl94bGZuLk1BWElGUyI6Ik1BWElGUyIsIl94bGZuLk1JTklGUyI6Ik1JTklGUyIsIl94bGZuLk1PREUuTVVMVCI6Ik1PREUuTVVMVCIsIl94bGZuLk1PREUuU05HTCI6''@;'; put 'put ''Ik1PREUuU05HTCIsIl94bGZuLk1VTklUIjoiTVVOSVQiLCJfeGxmbi5ORUdCSU5PTS5ESVNUIjoiTkVHQklOT00uRElTVCIsIl94bGZuLk5FVFdPUktEQVlTLklOVEwiOiJORVRXT1JLREFZUy5JTlRMIiwiX3hsZm4uTklHQklOT00iOiJOSUdCSU5PTSIsIl94bGZuLk5PUk0uRElTVCI6Ik5P''@;'; put 'put ''Uk0uRElTVCIsIl94bGZuLk5PUk0uSU5WIjoiTk9STS5JTlYiLCJfeGxmbi5OT1JNLlMuRElTVCI6Ik5PUk0uUy5ESVNUIiwiX3hsZm4uTk9STS5TLklOViI6Ik5PUk0uUy5JTlYiLCJfeGxmbi5OVU1CRVJWQUxVRSI6Ik5VTUJFUlZBTFVFIiwiX3hsZm4uUERVUkFUSU9OIjoiUERVUkFUSU9O''@;'; put 'put ''IiwiX3hsZm4uUEVSQ0VOVElMRS5FWEMiOiJQRVJDRU5USUxFLkVYQyIsIl94bGZuLlBFUkNFTlRJTEUuSU5DIjoiUEVSQ0VOVElMRS5JTkMiLCJfeGxmbi5QRVJDRU5UUkFOSy5FWEMiOiJQRVJDRU5UUkFOSy5FWEMiLCJfeGxmbi5QRVJDRU5UUkFOSy5JTkMiOiJQRVJDRU5UUkFOSy5JTkMi''@;'; put 'put ''LCJfeGxmbi5QRVJNVVRBVElPTkEiOiJQRVJNVVRBVElPTkEiLCJfeGxmbi5QSEkiOiJQSEkiLCJfeGxmbi5QT0lTU09OLkRJU1QiOiJQT0lTU09OLkRJU1QiLCJfeGxmbi5RVUFSVElMRS5FWEMiOiJRVUFSVElMRS5FWEMiLCJfeGxmbi5RVUFSVElMRS5JTkMiOiJRVUFSVElMRS5JTkMiLCJf''@;'; put 'put ''eGxmbi5RVUVSWVNUUklORyI6IlFVRVJZU1RSSU5HIiwiX3hsZm4uUkFOSy5BVkciOiJSQU5LLkFWRyIsIl94bGZuLlJBTksuRVEiOiJSQU5LLkVRIiwiX3hsZm4uUlJJIjoiUlJJIiwiX3hsZm4uU0VDIjoiU0VDIiwiX3hsZm4uU0VDSCI6IlNFQ0giLCJfeGxmbi5TSEVFVCI6IlNIRUVUIiwi''@;'; put 'put ''X3hsZm4uU0hFRVRTIjoiU0hFRVRTIiwiX3hsZm4uU0tFVy5QIjoiU0tFVy5QIiwiX3hsZm4uU1RERVYuUCI6IlNUREVWLlAiLCJfeGxmbi5TVERFVi5TIjoiU1RERVYuUyIsIl94bGZuLlNVTUlGUyI6IlNVTUlGUyIsIl94bGZuLlNXSVRDSCI6IlNXSVRDSCIsIl94bGZuLlQuRElTVCI6IlQu''@;'; put 'put ''RElTVCIsIl94bGZuLlQuRElTVC4yVCI6IlQuRElTVC4yVCIsIl94bGZuLlQuRElTVC5SVCI6IlQuRElTVC5SVCIsIl94bGZuLlQuSU5WIjoiVC5JTlYiLCJfeGxmbi5ULklOVi4yVCI6IlQuSU5WLjJUIiwiX3hsZm4uVC5URVNUIjoiVC5URVNUIiwiX3hsZm4uVEVYVEpPSU4iOiJURVhUSk9J''@;'; put 'put ''TiIsIl94bGZuLlVOSUNIQVIiOiJVTklDSEFSIiwiX3hsZm4uVU5JQ09ERSI6IlVOSUNPREUiLCJfeGxmbi5WQVIuUCI6IlZBUi5QIiwiX3hsZm4uVkFSLlMiOiJWQVIuUyIsIl94bGZuLldFQlNFUlZJQ0UiOiJXRUJTRVJWSUNFIiwiX3hsZm4uV0VJQlVMTC5ESVNUIjoiV0VJQlVMTC5ESVNU''@;'; put 'put ''IiwiX3hsZm4uV09SS0RBWS5JTlRMIjoiV09SS0RBWS5JTlRMIiwiX3hsZm4uWE9SIjoiWE9SIiwiX3hsZm4uWi5URVNUIjoiWi5URVNUIn07ZnVuY3Rpb24gdUEoSCl7cmV0dXJuIm9mOiI9PUguc2xpY2UoMCwzKSYmKEg9SC5zbGljZSgzKSksNjE9PUguY2hhckNvZGVBdCgwKSYmNjE9PShI''@;'; put 'put ''PUguc2xpY2UoMSkpLmNoYXJDb2RlQXQoMCkmJihIPUguc2xpY2UoMSkpLChIPShIPShIPUgucmVwbGFjZSgvQ09NXC5NSUNST1NPRlRcLi9nLCIiKSkucmVwbGFjZSgvXFsoKD86XC5bQS1aXStbMC05XSspKD86OlwuW0EtWl0rWzAtOV0rKT8pXF0vZyxmdW5jdGlvbihyZSxYKXtyZXR1cm4g''@;'; put 'put ''WC5yZXBsYWNlKC9cLi9nLCIiKX0pKS5yZXBsYWNlKC9cWy4oI1tBLVpdKls/IV0pXF0vZywiJDEiKSkucmVwbGFjZSgvWzt+XS9nLCIsIikucmVwbGFjZSgvXHwvZywiOyIpfWZ1bmN0aW9uIHRQKEgpe3JldHVybigib2Y6PSIrSC5yZXBsYWNlKERtLCIkMVsuJDIkMyQ0JDVdIikucmVwbGFj''@;'; put 'put ''ZSgvXF06XFsvZywiOiIpKS5yZXBsYWNlKC87L2csInwiKS5yZXBsYWNlKC8sL2csIjsiKX1mdW5jdGlvbiBjQShIKXt2YXIgcmU9SC5zcGxpdCgiOiIpO3JldHVybltyZVswXS5zcGxpdCgiLiIpWzBdLHJlWzBdLnNwbGl0KCIuIilbMV0rKHJlLmxlbmd0aD4xPyI6IisocmVbMV0uc3BsaXQo''@;'; put 'put ''Ii4iKVsxXXx8cmVbMV0uc3BsaXQoIi4iKVswXSk6IiIpXX1mdW5jdGlvbiBuUChIKXtyZXR1cm4gSC5yZXBsYWNlKC9cLi8sIiEiKX12YXIgTWQ9e30sbmM9e307ZHQuV1M9WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNo''@;'; put 'put ''aXBzL3dvcmtzaGVldCIsImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL29mZmljZURvY3VtZW50L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0Il07dmFyIEloPSJ1bmRlZmluZWQiIT10eXBlb2YgTWFwO2Z1bmN0aW9uIEVkKEgscmUsWCx3ZSl7dmFyIHhlPTAsRmU9SC5sZW5ndGg7aWYod2Up''@;'; put 'put ''e2lmKEloP3dlLmhhcyhyZSk6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdlLHJlKSlmb3IodmFyIFplPUloP3dlLmdldChyZSk6d2VbcmVdO3hlPFplLmxlbmd0aDsrK3hlKWlmKEhbWmVbeGVdXS50PT09cmUmJighSFtaZVt4ZV1dLnImJiFYfHxIW1plW3hlXV0ucj09''@;'; put 'put ''WCkpcmV0dXJuIEguQ291bnQrKyxaZVt4ZV19ZWxzZSBmb3IoO3hlPEZlOysreGUpaWYoSFt4ZV0udD09PXJlJiYoIUhbeGVdLnImJiFYfHxIW3hlXS5yPT1YKSlyZXR1cm4gSC5Db3VudCsrLHhlO3JldHVybiBIW0ZlXT17dDpyZSxyOlh9LEguQ291bnQrKyxILlVuaXF1ZSsrLHdlJiYoSWg/''@;'; put 'put ''KHdlLmhhcyhyZSl8fHdlLnNldChyZSxbXSksd2UuZ2V0KHJlKS5wdXNoKEZlKSk6KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3ZSxyZSl8fCh3ZVtyZV09W10pLHdlW3JlXS5wdXNoKEZlKSkpLEZlfWZ1bmN0aW9uIHhkKEgscmUpe3ZhciBYPXttaW46SCsxLG1heDpI''@;'; put 'put ''KzF9LHdlPXQxO2lmKCFyZSlyZXR1cm4gcmU7dmFyIHhlPS0xO3JldHVybiByZS5hdXRvJiYoWC5iZXN0Rml0PTEscmUuYmVzdHdpZHRoJiYoeGU9cmUuYmVzdHdpZHRoKSxkZWxldGUgcmUuYmVzdHdpZHRoKSxudWxsIT1yZS53cHg/eGU9RjkocmUud3B4KTpudWxsIT1yZS53Y2g/eGU9cmUu''@;'; put 'put ''d2NoOm51bGwhPXJlLndpZHRoJiYoWC5jdXN0b21XaWR0aD0xKSx4ZT4tMT8oWC53aWR0aD1ENCh4ZSksWC5jdXN0b21XaWR0aD0xKTpudWxsIT1yZS53aWR0aCYmKFgud2lkdGg9cmUud2lkdGgpLHJlLmhpZGRlbiYmKFguaGlkZGVuPSEwKSxYLmJlc3RGaXQmJmRlbGV0ZSBYLmN1c3RvbVdp''@;'; put 'put ''ZHRoLHQxPXdlLG51bGwhPXJlLmxldmVsJiYoWC5vdXRsaW5lTGV2ZWw9WC5sZXZlbD1yZS5sZXZlbCksbnVsbCE9cmUuc3R5bGUmJihYLnN0eWxlPXJlLnN0eWxlKSxYfWZ1bmN0aW9uIFptKEgscmUsWCl7dmFyIHdlPW5zKEhbIiFyZWYiXSkseGU9MCxGZT1IWyIhbWVyZ2VzIl18fFtdLFpl''@;'; put 'put ''PUFycmF5LmlzQXJyYXkoSCk7ZTpmb3IodmFyIFZlPTA7VmU8PXdlLmUucjsrK1ZlKXtmb3IodmFyIFVlPTA7VWU8RmUubGVuZ3RoOysrVWUpaWYoRmVbVWVdLnMucjw9VmUmJlZlPD1GZVtVZV0uZS5yJiZGZVtVZV0ucy5jPD1YJiZYPD1GZVtVZV0uZS5jKWNvbnRpbnVlIGU7dmFyIFN0PVpl''@;'; put 'put ''PyhIW1ZlXXx8W10pW1hdOkhbUTAoe3I6VmUsYzpYfSldO2lmKFN0KXt2YXIgSXQ9MTtpZihTdC5zJiYoSXQ9WjgoU3QucykveW0uQ2FsaWJyaVsxMl18fDEpLFN0LncpeGU9TWF0aC5tYXgoeGUsU3Qudy5sZW5ndGgqSXQpO2Vsc2Ugc3dpdGNoKFN0LnQpe2Nhc2UiYiI6Y2FzZSJlIjp4ZT1N''@;'; put 'put ''YXRoLm1heCh4ZSw1Kkl0KTticmVhaztjYXNlInMiOnhlPU1hdGgubWF4KHhlLFN0LnYubGVuZ3RoKkl0KjEuMnwwKTticmVhaztjYXNlIm4iOkExKFN0LFN0LnYpLHhlPU1hdGgubWF4KHhlLFN0cmluZyhTdC53fHxTdC52KS5sZW5ndGgqSXQpO2JyZWFrO2Nhc2UiZCI6eGU9TWF0aC5tYXgo''@;'; put 'put ''eGUsOCpJdCl9fX14ZTwxJiYoeGU9MSkscmUuYmVzdHdpZHRoPXhlfWZ1bmN0aW9uIERoKEgscmUpe2lmKEgpe3ZhciBYPVsuNywuNywuNzUsLjc1LC4zLC4zXTsieGxtbCI9PXJlJiYoWD1bMSwxLDEsMSwuNSwuNV0pLG51bGw9PUgubGVmdCYmKEgubGVmdD1YWzBdKSxudWxsPT1ILnJpZ2h0''@;'; put 'put ''JiYoSC5yaWdodD1YWzFdKSxudWxsPT1ILnRvcCYmKEgudG9wPVhbMl0pLG51bGw9PUguYm90dG9tJiYoSC5ib3R0b209WFszXSksbnVsbD09SC5oZWFkZXImJihILmhlYWRlcj1YWzRdKSxudWxsPT1ILmZvb3RlciYmKEguZm9vdGVyPVhbNV0pfX1mdW5jdGlvbiBYOChILHJlKXtmb3IodmFy''@;'; put 'put ''IFg9b24ocmUpLHdlPTA7d2U8SC5sZW5ndGg7Kyt3ZSl7dmFyIHhlPSEwLEZlPUhbd2VdO2lmKEZlJiZYLmxlbmd0aD09b24oRmUpLmxlbmd0aCYmKFguZm9yRWFjaChmdW5jdGlvbihaZSl7aWYoeGUpe2lmKG51bGw9PT1yZVtaZV0hPShudWxsPT09RmVbWmVdKSlyZXR1cm4gdm9pZCh4ZT0h''@;'; put 'put ''MSk7aWYoIm9iamVjdCI9PXR5cGVvZiByZVtaZV0paWYoWyJjb2xvciIsImZnQ29sb3IiLCJiZ0NvbG9yIl0uaW5kZXhPZihaZSk+LTEpe2lmKGdmKHJlW1plXSxGZVtaZV0pKXJldHVybiB2b2lkKHhlPSExKX1lbHNle2lmKCEoWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXS5pbmRl''@;'; put 'put ''eE9mKFplKT4tMSkpcmV0dXJuIHZvaWQoeGU9ITEpO2lmKENFKHJlW1plXSxGZVtaZV0pKXJldHVybiB2b2lkKHhlPSExKX1pZihyZVtaZV0hPUZlW1plXSlyZXR1cm4gdm9pZCh4ZT0hMSl9fSkseGUpKXJldHVybiB3ZX1yZXR1cm4gSFtILmxlbmd0aF09bG4ocmUpLEgubGVuZ3RoLTF9ZnVu''@;'; put 'put ''Y3Rpb24gcmMoSCxyZSxYLHdlKXt2YXIgeGU9d2UucmV2c3NmW251bGwhPVguej9YLno6IkdlbmVyYWwiXSxGZT02MCxaZT1ILmxlbmd0aDtpZihudWxsPT14ZSYmd2Uuc3NmKWZvcig7RmU8MzkyOysrRmUpaWYobnVsbD09d2Uuc3NmW0ZlXSl7Ri5sb2FkKFgueixGZSksd2Uuc3NmW0ZlXT1Y''@;'; put 'put ''Lnosd2UucmV2c3NmW1guel09eGU9RmU7YnJlYWt9dmFyIFZlPTAsVWU9MCxTdD0wLEl0PTA7aWYod2UuY2VsbFN0eWxlcyl7aWYoWC5zKXtpZih3ZS5Gb250cyl7WC5zLmNvbG9yfHwoWC5zLmNvbG9yPXt0aGVtZToxLHJnYjoiMDAwMDAwIn0pO2Zvcih2YXIgUHQ9KFgucy5ib2xkPzE6MCl8''@;'; put 'put ''KFgucy5pdGFsaWM/MjowKXwoWC5zLnN0cmlrZT80OjApfChYLnMuc2hhZG93Pzg6MCk7VmU8d2UuRm9udHMubGVuZ3RoOysrVmUpe3ZhciBRdD13ZS5Gb250c1tWZV07aWYobnVsbD09UXQuZm9udGhhc2gmJihRdC5mb250aGFzaD0oUXQuYm9sZD8xOjApfChRdC5pdGFsaWM/MjowKXwoUXQu''@;'; put 'put ''c3RyaWtlPzQ6MCl8KFF0LnNoYWRvdz84OjApKSwhKFB0IT1RdC5mb250aGFzaHx8ISFYLnMuY29sb3IhPSEhUXQuY29sb3J8fFgucy52YWxpZ24hPVF0LnZhbGlnbnx8KFgucy5zenx8UXQuc3opJiYoWC5zLnN6fHwxMikhPShRdC5zenx8MTIpfHxYLnMubmFtZSYmWC5zLm5hbWUhPVF0Lm5h''@;'; put 'put ''bWV8fChYLnMudW5kZXJsaW5lfHwwKSE9KFF0LnVuZGVybGluZXx8MCl8fFgucy5jb2xvciYmZ2YoWC5zLmNvbG9yLFF0LmNvbG9yKSkpYnJlYWt9VmU9PXdlLkZvbnRzLmxlbmd0aCYmKHdlLkZvbnRzLnB1c2goe3N6Olgucy5zenx8MTIsY29sb3I6WC5zLmNvbG9yfHx7dGhlbWU6MSxyZ2I6''@;'; put 'put ''IjAwMDAwMCJ9LG5hbWU6WC5zLm5hbWV8fCJDYWxpYnJpIixmYW1pbHk6WC5zLmZhbWlseXx8MixzY2hlbWU6WC5zLnNjaGVtZSxib2xkOlgucy5ib2xkLGl0YWxpYzpYLnMuaXRhbGljLHN0cmlrZTpYLnMuc3RyaWtlLHNoYWRvdzpYLnMuc2hhZG93LHZhbGlnbjpYLnMudmFsaWduLHVuZGVy''@;'; put 'put ''bGluZTpYLnMudW5kZXJsaW5lfSksMT09d2UuRm9udHMubGVuZ3RoJiZyNih3ZS5Gb250c1swXSkpfWlmKHdlLkZpbGxzKXtmb3IoO1VlPHdlLkZpbGxzLmxlbmd0aDsrK1VlKXt2YXIgYW49d2UuRmlsbHNbVWVdO2lmKCEhWC5zLnN0b3BzPT0hIWFuLnN0b3BzKXtpZihYLnMuc3RvcHMpe2lm''@;'; put 'put ''KFgucy5hbmdsZSE9YW4uYW5nbGUpY29udGludWU7dmFyIENuPSEwO2lmKFgucy5zdG9wcy5mb3JFYWNoKGZ1bmN0aW9uKEluLFJuKXtnZihJbixhbi5zdG9wc1tSbl0pJiYoQ249ITEpLEluLnYhPWFuLnN0b3BzW1JuXS52JiYoQ249ITEpfSksIUNuKWNvbnRpbnVlfWVsc2V7aWYobnVsbD09''@;'; put 'put ''WC5zLnBhdHRlcm5UeXBlJiZYLnMuZmdDb2xvciYmKFgucy5wYXR0ZXJuVHlwZT0ic29saWQiKSxudWxsPT1YLnMucGF0dGVyblR5cGUpYnJlYWs7aWYoWC5zLnBhdHRlcm5UeXBlIT1hbi5wYXR0ZXJuVHlwZXx8Z2YoWC5zLmZnQ29sb3IsYW4uZmdDb2xvcil8fGdmKFgucy5iZ0NvbG9yLGFu''@;'; put 'put ''LmJnQ29sb3IpKWNvbnRpbnVlfWJyZWFrfX1pZihVZT09d2UuRmlsbHMubGVuZ3RoKXt2YXIgTHQ9e307WC5zLnN0b3BzPyhudWxsIT1YLnMuYW5nbGUmJihMdC5hbmdsZT1YLnMuYW5nbGUpLEx0LnN0b3BzPVtdLFgucy5zdG9wcy5mb3JFYWNoKGZ1bmN0aW9uKEluKXtMdC5zdG9wcy5wdXNo''@;'; put 'put ''KGxuKEluKSl9KSk6THQ9e3BhdHRlcm5UeXBlOlgucy5wYXR0ZXJuVHlwZSxmZ0NvbG9yOlgucy5mZ0NvbG9yLGJnQ29sb3I6WC5zLmJnQ29sb3J9LHdlLkZpbGxzLnB1c2goTHQpfX1pZih3ZS5Cb3JkZXJzKXtmb3IoO1N0PHdlLkJvcmRlcnMubGVuZ3RoOysrU3Qpe3ZhciB6dD13ZS5Cb3Jk''@;'; put 'put ''ZXJzW1N0XSxmbj0idG9wIjtpZihYLnNbZm5dKXtpZighenRbZm5dfHxYLnNbZm5dLnN0eWxlIT16dFtmbl0uc3R5bGV8fGdmKFguc1tmbl0uY29sb3IsenRbZm5dLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPXp0W2ZuXSljb250aW51ZTtpZihYLnNbZm49ImJvdHRvbSJdKXtpZigh''@;'; put 'put ''enRbZm5dfHxYLnNbZm5dLnN0eWxlIT16dFtmbl0uc3R5bGV8fGdmKFguc1tmbl0uY29sb3IsenRbZm5dLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPXp0W2ZuXSljb250aW51ZTtpZihYLnNbZm49ImxlZnQiXSl7aWYoIXp0W2ZuXXx8WC5zW2ZuXS5zdHlsZSE9enRbZm5dLnN0eWxl''@;'; put 'put ''fHxnZihYLnNbZm5dLmNvbG9yLHp0W2ZuXS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT16dFtmbl0pY29udGludWU7aWYoWC5zW2ZuPSJyaWdodCJdKXtpZighenRbZm5dfHxYLnNbZm5dLnN0eWxlIT16dFtmbl0uc3R5bGV8fGdmKFguc1tmbl0uY29sb3IsenRbZm5dLmNvbG9yKSlj''@;'; put 'put ''b250aW51ZX1lbHNlIGlmKG51bGwhPXp0W2ZuXSljb250aW51ZTticmVha31TdD09d2UuQm9yZGVycy5sZW5ndGgmJndlLkJvcmRlcnMucHVzaCh7dG9wOlgucy50b3AmJmxuKFgucy50b3ApfHx2b2lkIDAsYm90dG9tOlgucy5ib3R0b20mJmxuKFgucy5ib3R0b20pfHx2b2lkIDAsbGVmdDpY''@;'; put 'put ''LnMubGVmdCYmbG4oWC5zLmxlZnQpfHx2b2lkIDAscmlnaHQ6WC5zLnJpZ2h0JiZsbihYLnMucmlnaHQpfHx2b2lkIDB9KX1pZihyZSYmWC5zLnN0eWxlJiYiTm9ybWFsIiE9PVgucy5zdHlsZSl7Zm9yKEl0PTE7SXQ8cmUubGVuZ3RoJiZyZVtJdF0ubmFtZSE9WC5zLnN0eWxlOysrSXQpO0l0''@;'; put 'put ''PT1yZS5sZW5ndGgmJnJlLnB1c2goe25hbWU6WC5zLnN0eWxlLG51bUZtdElkOnhlLGZvbnRJZDpWZSxmaWxsSWQ6VWUsYm9yZGVySWQ6U3R9KX19Zm9yKEZlPTA7RmUhPVplOysrRmUpaWYoSFtGZV0ubnVtRm10SWQ9PXhlJiZIW0ZlXS5mb250SWQ9PVZlJiZIW0ZlXS5maWxsSWQ9PVVlJiZI''@;'; put 'put ''W0ZlXS5ib3JkZXJJZD09U3QmJkhbRmVdLnhmSWQ9PUl0KXtpZihYLnMmJlgucy5hbGlnbm1lbnQpe2lmKCFIW0ZlXS5hbGlnbm1lbnQpY29udGludWU7aWYoWC5zLmFsaWdubWVudC5ob3Jpem9udGFsIT1IW0ZlXS5hbGlnbm1lbnQuaG9yaXpvbnRhbHx8WC5zLmFsaWdubWVudC52ZXJ0aWNh''@;'; put 'put ''bCE9SFtGZV0uYWxpZ25tZW50LnZlcnRpY2FsfHxYLnMuYWxpZ25tZW50LndyYXBUZXh0IT1IW0ZlXS5hbGlnbm1lbnQud3JhcFRleHR8fFgucy5hbGlnbm1lbnQuc2hyaW5rVG9GaXQhPUhbRmVdLmFsaWdubWVudC5zaHJpbmtUb0ZpdHx8WC5zLmFsaWdubWVudC50ZXh0Um90YXRpb24hPUhb''@;'; put 'put ''RmVdLmFsaWdubWVudC50ZXh0Um90YXRpb258fFgucy5hbGlnbm1lbnQuaW5kZW50IT1IW0ZlXS5hbGlnbm1lbnQuaW5kZW50KWNvbnRpbnVlfWVsc2UgaWYoSFtGZV0uYWxpZ25tZW50KWNvbnRpbnVlO2lmKFgucyl7aWYoISFYLnMuaGlkZGVuPT0oIUhbRmVdLnByb3RlY3Rpb258fCFIW0Zl''@;'; put 'put ''XS5wcm90ZWN0aW9uLmhpZGRlbil8fCEhWC5zLmVkaXRhYmxlPT0oIUhbRmVdLnByb3RlY3Rpb258fCFIW0ZlXS5wcm90ZWN0aW9uLmVkaXRhYmxlKSljb250aW51ZX1lbHNlIGlmKEhbRmVdLnByb3RlY3Rpb24pY29udGludWU7cmV0dXJuIEZlfX1lbHNlIGZvcihGZT0wO0ZlIT1aZTsrK0Zl''@;'; put 'put ''KWlmKEhbRmVdLm51bUZtdElkPT09eGUpcmV0dXJuIEZlO3JldHVybiBIW1plXT17bnVtRm10SWQ6eGUsZm9udElkOlZlLGZpbGxJZDpVZSxib3JkZXJJZDpTdCx4ZklkOkl0LGFwcGx5TnVtYmVyRm9ybWF0OjF9LFZlPjAmJihIW1plXS5hcHBseUZvbnQ9MSksVWU+MCYmKEhbWmVdLmFwcGx5''@;'; put 'put ''RmlsbD0xKSxTdD4wJiYoSFtaZV0uYXBwbHlCb3JkZXI9MSksIXJlJiZYLnMmJlgucy5zdHlsZSYmIk5vcm1hbCIhPVgucy5zdHlsZSYmKEhbWmVdLnN0eWxlPVgucy5zdHlsZSksWC5zJiZYLnMuYWxpZ25tZW50JiYoSFtaZV0uYWxpZ25tZW50PXt9LFsiaG9yaXpvbnRhbCIsInZlcnRpY2Fs''@;'; put 'put ''Iiwid3JhcFRleHQiLCJzaHJpbmtUb0ZpdCIsImluZGVudCIsInRleHRSb3RhdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oSW4pe251bGwhPVgucy5hbGlnbm1lbnRbSW5dJiYoSFtaZV0uYWxpZ25tZW50W0luXT1YLnMuYWxpZ25tZW50W0luXSl9KSksWC5zJiZYLnMuaGlkZGVuJiYoSFtaZV0u''@;'; put 'put ''cHJvdGVjdGlvbnx8KEhbWmVdLnByb3RlY3Rpb249e30pLEhbWmVdLnByb3RlY3Rpb24uaGlkZGVuPSEwKSxYLnMmJlgucy5lZGl0YWJsZSYmKEhbWmVdLnByb3RlY3Rpb258fChIW1plXS5wcm90ZWN0aW9uPXt9KSxIW1plXS5wcm90ZWN0aW9uLmVkaXRhYmxlPSEwKSxaZX1mdW5jdGlvbiB6''@;'; put 'put ''NChILHJlLFgsd2UseGUsRmUsWmUsVmUpeyJkIj09PUgudCYmInN0cmluZyI9PXR5cGVvZiBILnYmJihILnY9cG4oSC52KSk7dHJ5e0ZlLmNlbGxORiYmKEguej1GLl90YWJsZVtyZV0pfWNhdGNoKFN0KXtpZihGZS5XVEYpdGhyb3cgU3R9aWYoKCFGZXx8ITEhPT1GZS5jZWxsVGV4dCkmJiJ6''@;'; put 'put ''IiE9SC50KXRyeXtpZihudWxsPT1GLl90YWJsZVtyZV0mJkYubG9hZChEZVtyZV18fCJHZW5lcmFsIixyZSksImUiPT09SC50KUgudz1ILnd8fE5mW0gudl07ZWxzZSBpZigwPT09cmUpaWYoIm4iPT09SC50KUgudz0oMHxILnYpPT09SC52P0YuX2dlbmVyYWxfaW50KEgudik6Ri5fZ2VuZXJh''@;'; put 'put ''bF9udW0oSC52KTtlbHNlIGlmKCJkIj09PUgudCl7dmFyIFVlPWN0KEgudik7SC53PSgwfFVlKT09PVVlP0YuX2dlbmVyYWxfaW50KFVlKTpGLl9nZW5lcmFsX251bShVZSl9ZWxzZXtpZih2b2lkIDA9PT1ILnYpcmV0dXJuIiI7SC53PUYuX2dlbmVyYWwoSC52LG5jKX1lbHNlIEgudz1GLmZv''@;'; put 'put ''cm1hdChyZSwiZCI9PT1ILnQ/Y3QoSC52KTpILnYsbmMpfWNhdGNoKFN0KXtpZihGZS5XVEYpdGhyb3cgU3R9aWYoRmUuY2VsbFN0eWxlcyYmVmUpe2lmKEgucz17fSxudWxsIT1YJiZWZS5GaWxscyl0cnl7a24oSC5zLFZlLkZpbGxzW1hdKX1jYXRjaChTdCl7aWYoRmUuV1RGKXRocm93IFN0''@;'; put 'put ''fWlmKG51bGwhPXdlJiZWZS5Gb250cyl0cnl7a24oSC5zLFZlLkZvbnRzW3dlXSl9Y2F0Y2goU3Qpe2lmKEZlLldURil0aHJvdyBTdH1pZihudWxsIT14ZSYmVmUuQm9yZGVycyl0cnl7a24oSC5zLFZlLkJvcmRlcnNbeGVdKX1jYXRjaChTdCl7aWYoRmUuV1RGKXRocm93IFN0fX19ZnVuY3Rp''@;'; put 'put ''b24gem0oSCxyZSxYKXtpZihIJiZIWyIhcmVmIl0pe3ZhciB3ZT1lYShIWyIhcmVmIl0pO2lmKHdlLmUuYzx3ZS5zLmN8fHdlLmUucjx3ZS5zLnIpdGhyb3cgbmV3IEVycm9yKCJCYWQgcmFuZ2UgKCIrWCsiKTogIitIWyIhcmVmIl0pfX12YXIgU189LzwoPzpcdzopP21lcmdlQ2VsbCByZWY9''@;'; put 'put ''IltBLVowLTk6XSsiXHMqW1wvXT8+L2csaVA9LzwoPzpcdys6KT9zaGVldERhdGFbXj5dKj4oW1xzXFNdKik8XC8oPzpcdys6KT9zaGVldERhdGE+LyxORz0vPCg/Olx3Oik/aHlwZXJsaW5rIFtePl0qPi9nbSxvUD0vIihcdyo6XHcqKSIvLHd4PS88KD86XHc6KT9jb2xcYltePl0qW1wvXT8+''@;'; put 'put ''L2csYVA9LzwoPzpcdzopP2NvbnRyb2xcYltePl0qW1wvXT8+L2csR209LzwoPzpcdzopP2F1dG9GaWx0ZXJbXj5dKihbXC9dfD4oW1xzXFNdKik8XC8oPzpcdzopP2F1dG9GaWx0ZXIpPi9nLE1fPS88KD86XHc6KT9wYWdlTWFyZ2luc1tePl0qXC8+L2csRV89LzwoPzpcdzopP3NoZWV0UHJc''@;'; put 'put ''Yig/OltePmEtel1bXj5dKik/XC8+LyxrYz0vPCg/Olx3Oik/c2hlZXRQcm90ZWN0aW9uXGIoPzpbXj5hLXpdW14+XSopP1wvPi8sV209LzwoPzpcdzopP3NoZWV0UHJbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/c2hlZXRQcik+LyxsUD0vPCg/Olx3Oik/c2hlZXRWaWV3c1te''@;'; put 'put ''Pl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9zaGVldFZpZXdzKT4vLHhfPS88KD86XHcrOik/ZGF0YVZhbGlkYXRpb25zW14+XSooPzpbXC9dfD4oW1xzXFNdKj8pPFwvKD86XHcrOik/ZGF0YVZhbGlkYXRpb25zKT4vLGZBPS88KD86XHcrOik/Y29uZGl0aW9uYWxGb3JtYXR0aW5n''@;'; put 'put ''XGJbXj5dKig/OltcL118PihbXHNcU10qPyk8XC8oPzpcdys6KT9jb25kaXRpb25hbEZvcm1hdHRpbmcpPi9nLHc2PS88KD86XHc6KT9zaGVldEZvcm1hdFByW14+XSpcLz4vLGJ4PS88KD86XHcrOik/dGFibGVQYXJ0cy4qPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/dGFibGVQYXJ0cz4vLHNQ''@;'; put 'put ''PS88KD86XHc6KT9wYWdlU2V0dXBbXj5dKlwvPi8sdVA9LzwoPzpcdzopP3Jvd0JyZWFrc1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9yb3dCcmVha3MpPi8sVF89LzwoPzpcdzopP2NvbEJyZWFrc1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9jb2xCcmVha3Mp''@;'; put 'put ''Pi8sWW09LzwoPzpcdzopP2hlYWRlckZvb3RlcltePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9oZWFkZXJGb290ZXIpPi8sX3g9LzwoPzpcdzopP3ByaW50T3B0aW9uc1xiW14+XC9dKlwvPi87dmFyIF8xPS88KD86XHc6KT90YWJsZVBhcnRcYlteXC8+XSpbXC9dPz4vZztmdW5j''@;'; put 'put ''dGlvbiBVbShILHJlLFgsd2Upe3ZhciB4ZT1xdChIKTtYLlNoZWV0c1t3ZV18fChYLlNoZWV0c1t3ZV09e30pLHhlLmNvZGVOYW1lJiYoWC5TaGVldHNbd2VdLkNvZGVOYW1lPXhlLmNvZGVOYW1lKX12YXIgTGg9LzwoPzpcdzopP3RhYkNvbG9yW14+XSpbXC9dPz4vLElfPS88KD86XHc6KT9w''@;'; put 'put ''YWdlU2V0VXBQcltePl0qW1wvXT8+LyxwQT0vPCg/Olx3Oik/b3V0bGluZVByW14+XSpbXC9dPz4vLGdBPXtkaXNwbGF5ZWQ6ImFzRGlzcGxheWVkIixlbmQ6ImF0RW5kIixub25lOiJub25lIn0sRF89bnQoZ0EpLHMyPXtkaXNwbGF5ZWQ6ImRpc3BsYXllZCIsbm9uZToiYmxhbmsiLGRhc2g6''@;'; put 'put ''ImRhc2giLCJuL2EiOiJOQSJ9LExfPW50KHMyKSxLOD0vPCg/Olx3Oik/YnJrW14+XSpcLz4vZyxjUD1bIm9iamVjdHMiLCJzY2VuYXJpb3MiLCJzZWxlY3RMb2NrZWRDZWxscyIsInNlbGVjdFVubG9ja2VkQ2VsbHMiXSx5QT1bImZvcm1hdENvbHVtbnMiLCJmb3JtYXRSb3dzIiwiZm9ybWF0''@;'; put 'put ''Q2VsbHMiLCJpbnNlcnRDb2x1bW5zIiwiaW5zZXJ0Um93cyIsImluc2VydEh5cGVybGlua3MiLCJkZWxldGVDb2x1bW5zIiwiZGVsZXRlUm93cyIsInNvcnQiLCJhdXRvRmlsdGVyIiwicGl2b3RUYWJsZXMiXTtmdW5jdGlvbiBiQShIKXt2YXIgcmU9e307cmV0dXJuWyJsZWZ0IiwicmlnaHQi''@;'; put 'put ''LCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKFgpe0hbWF0mJihyZVtYXT1wYXJzZUZsb2F0KEhbWF0pKX0pLHJlfXZhciBYbT17Q3VzdG9tOiJjdXN0b20iLERhdGU6ImRhdGUiLFRpbWU6InRpbWUiLExlbmd0aDoidGV4dExlbmd0aCIsTGlzdDoi''@;'; put 'put ''bGlzdCIsRGVjaW1hbDoiZGVjaW1hbCIsV2hvbGU6Indob2xlIixBbnk6Im5vbmUifSxDQT1udChYbSksS209e0lOOiJiZXR3ZWVuIixPVDoibm90QmV0d2VlbiIsRVE6ImVxdWFsIixORToibm90RXF1YWwiLEdUOiJncmVhdGVyVGhhbiIsTFQ6Imxlc3NUaGFuIixHRToiZ3JlYXRlclRoYW5P''@;'; put 'put ''ckVxdWFsIixMRToibGVzc1RoYW5PckVxdWFsIn0sRl89bnQoS20pO2Z1bmN0aW9uIEc0KEgscmUsWCl7dmFyIHdlPVtdLHhlPXt9LEZlPSIiLFplPSExLFZlPTAsVWU9MDtyZXR1cm4gSC5yZXBsYWNlKEd0LGZ1bmN0aW9uKFN0LEl0KXt2YXIgUHQ9cXQoU3QpO3N3aXRjaChMbihQdFswXSkp''@;'; put 'put ''e2Nhc2UiPGRhdGFWYWxpZGF0aW9ucyI6Y2FzZSI8ZGF0YVZhbGlkYXRpb25zPiI6Y2FzZSI8L2RhdGFWYWxpZGF0aW9ucz4iOmJyZWFrO2Nhc2UiPGRhdGFWYWxpZGF0aW9uIjp4ZT17dDpDQVtQdC50eXBlfHwibm9uZSJdLHJlZjooRmU9UHQuc3FyZWYpP0ZlLmluZGV4T2YoIiAiKT4tMT9G''@;'; put 'put ''ZTplYShGZSk6IiJ9LFB0Lm9wZXJhdG9yJiYoeGUub3A9Rl9bUHQub3BlcmF0b3JdKSx4ZS5ibGFuaz0hIVB0LmFsbG93QmxhbmsmJkJpKFB0LmFsbG93QmxhbmspLCghUHQuc2hvd0lucHV0TWVzc2FnZXx8IUJpKFB0LnNob3dJbnB1dE1lc3NhZ2UpKSYmKHhlLmlucHV0PSExKSxQdC5wcm9t''@;'; put 'put ''cHRUaXRsZSYmKCh4ZS5pbnB1dHx8KHhlLmlucHV0PXt9KSkudGl0bGU9Z3IoUHQucHJvbXB0VGl0bGUpKSxQdC5wcm9tcHQmJigoeGUuaW5wdXR8fCh4ZS5pbnB1dD17fSkpLm1lc3NhZ2U9Z3IoUHQucHJvbXB0KSksKCFQdC5zaG93RXJyb3JNZXNzYWdlfHwhQmkoUHQuc2hvd0Vycm9yTWVz''@;'; put 'put ''c2FnZSkpJiYoeGUuZXJyb3I9ITEpLFB0LmVycm9yVGl0bGUmJigoeGUuZXJyb3J8fCh4ZS5lcnJvcj17fSkpLnRpdGxlPWdyKFB0LmVycm9yVGl0bGUpKSxQdC5lcnJvciYmKCh4ZS5lcnJvcnx8KHhlLmVycm9yPXt9KSkubWVzc2FnZT1ncihQdC5lcnJvcikpLHhlLmVycm9yP3hlLmVycm9y''@;'; put 'put ''LnN0eWxlPVB0LmVycm9yU3R5bGV8fCJzdG9wIjpQdC5lcnJvclN0eWxlJiYoeGUuZXJyb3I9e3N0eWxlOlB0LmVycm9yU3R5bGV9KSx4ZS50JiZ3ZS5wdXNoKHhlKTticmVhaztjYXNlIjxkYXRhVmFsaWRhdGlvbi8+IjpjYXNlIjwvZGF0YVZhbGlkYXRpb24+IjpicmVhaztjYXNlIjxzcXJl''@;'; put 'put ''Zj4iOlVlPUl0K1N0Lmxlbmd0aDticmVhaztjYXNlIjwvc3FyZWY+IjpGZT1ILnNsaWNlKFVlLEl0KSx4ZS5yZWY9RmU/RmUuaW5kZXhPZigiICIpPi0xP0ZlOmVhKEZlKToiIjticmVhaztjYXNlIjxmPiI6Y2FzZSI8Zm9ybXVsYTEiOmNhc2UiPGZvcm11bGExPiI6Y2FzZSI8Zm9ybXVsYTIi''@;'; put 'put ''OmNhc2UiPGZvcm11bGEyPiI6VmU9SXQrU3QubGVuZ3RoO2JyZWFrO2Nhc2UiPC9mb3JtdWxhMT4iOmNhc2UiPC9mb3JtdWxhMj4iOmlmKFgpYnJlYWs7Y2FzZSI8L2Y+Ijp2YXIgUXQ9Z3IoajAoSC5zbGljZShWZSxJdCkpKTtzd2l0Y2goeGUudCl7Y2FzZSJMaXN0IjppZih4ZS5sfHx4ZS5m''@;'; put 'put ''KWJyZWFrO2lmKDM0PT1RdC5jaGFyQ29kZUF0KDApKXt4ZS5sPVF0LnNsaWNlKDEsLTEpLnNwbGl0KCIsIik7YnJlYWt9Y2FzZSJDdXN0b20iOm51bGw9PXhlLmYmJih4ZS5mPVF0KTticmVhaztjYXNlIkRhdGUiOmNhc2UiRGVjaW1hbCI6Y2FzZSJMZW5ndGgiOmNhc2UiVGltZSI6Y2FzZSJX''@;'; put 'put ''aG9sZSI6eGUub3B8fCh4ZS5vcD0iSU4iKSxudWxsPT14ZS52P3hlLnY9aXNOYU4oK1F0KT9RdDorUXQ6KHhlLm1pbj14ZS52LHhlLm1heD1pc05hTigrUXQpP1F0OitRdCxkZWxldGUgeGUudil9YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJl''@;'; put 'put ''YWs7Y2FzZSI8ZXh0IjpaZT0hMDticmVhaztjYXNlIjwvZXh0PiI6WmU9ITE7YnJlYWs7ZGVmYXVsdDppZihyZSYmcmUuV1RGJiYhWmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitQdFswXSsiIGluIGRhdGEgdmFsaWRhdGlvbiIpfXJldHVybiBTdH0pLHdlfXZhciB4eD17SU46''@;'; put 'put ''ImNvbnRhaW5zVGV4dCIsT1Q6Im5vdENvbnRhaW5zVGV4dCIsU1Q6ImJlZ2luc1dpdGgiLE5EOiJlbmRzV2l0aCJ9LEhfPW50KHh4KSxOXz17TE06Imxhc3RNb250aCIsTFM6Imxhc3Q3RGF5cyIsTFc6Imxhc3RXZWVrIixOTToibmV4dE1vbnRoIixOVzoibmV4dFdlZWsiLFRNOiJ0aGlzTW9u''@;'; put 'put ''dGgiLFRXOiJ0aGlzV2VlayIsVEQ6InRvZGF5IixUTzoidG9tb3Jyb3ciLFlTOiJ5ZXN0ZXJkYXkifSxkUD1udChOXyk7ZnVuY3Rpb24gJG0oSCl7dmFyIHJlPXt9O3JldHVybiBudWxsIT1ILnZhbCYmKGlzTmFOKCtILnZhbCk/cmUuZj1ILnZhbDpyZS52PStILnZhbCkscmUudD1ILnR5cGUs''@;'; put 'put ''cmV9ZnVuY3Rpb24geDMoSCl7cmV0dXJuIFNpKCJjZnZvIixudWxsLHt0eXBlOkgudCx2YWw6bnVsbCE9SC52P0gudjpPcihILmYpfSl9ZnVuY3Rpb24gVl8oSCxyZSxYLHdlKXt2YXIgeGU9JG0oSCk7cmV0dXJuIHhlLmNvbG9yPVY5KHJlLFgsd2UpLHhlfWZ1bmN0aW9uIFJvKEgscmUsWCx3''@;'; put 'put ''ZSx4ZSl7dmFyIEZlPShILm1hdGNoKC9zcXJlZj0iKFtcdzokIF0qKSIvKXx8W10pWzFdO3JldHVybiBmdW5jdGlvbiBUeChILHJlLFgsd2UseGUsRmUpe3ZhciBaZT0hMSxWZT1bXSxVZT17ZjpbXX0sU3Q9MCxJdD0wLFB0PXtjZnZvczpbXSxjb2xvcnM6W119LFF0PXt9LGFuPS0xLENuPTAs''@;'; put 'put ''THQ9IiI7cmV0dXJuIEgucmVwbGFjZShHdCxmdW5jdGlvbih6dCxmbil7dmFyIEluPXF0KHp0KTtzd2l0Y2goTG4oSW5bMF0pKXtjYXNlIjxjb25kaXRpb25hbEZvcm1hdHRpbmciOmNhc2UiPC9jb25kaXRpb25hbEZvcm1hdHRpbmc+IjpicmVhaztjYXNlIjxjZlJ1bGUiOmNhc2UiPGNmUnVs''@;'; put 'put ''ZT4iOmlmKEl0PWZuLFF0PUluLFVlPXtyZWY6cmUsZjpbXX0sIXp0Lm1hdGNoKC9cLz4vKSlicmVhaztjYXNlIjwvY2ZSdWxlPiI6c3dpdGNoKFF0LmR4ZklkJiZ4ZSYmeGUuRFhGJiYoVWUucz14ZS5EWEZbK1F0LmR4ZklkXSksUXQudHlwZSl7Y2FzZSJkdXBsaWNhdGVWYWx1ZXMiOlVlLnQ9''@;'; put 'put ''ImR1cCI7YnJlYWs7Y2FzZSJ1bmlxdWVWYWx1ZXMiOlVlLnQ9InVuaXF1ZSI7YnJlYWs7Y2FzZSJjb250YWluc0JsYW5rcyI6VWUudD0iYmxhbmsiLFVlLnY9ITA7YnJlYWs7Y2FzZSJub3RDb250YWluc0JsYW5rcyI6VWUudD0iYmxhbmsiLFVlLnY9ITE7YnJlYWs7Y2FzZSJjb250YWluc0Vy''@;'; put 'put ''cm9ycyI6VWUudD0iZXJyb3IiLFVlLnY9ITA7YnJlYWs7Y2FzZSJub3RDb250YWluc0Vycm9ycyI6VWUudD0iZXJyb3IiLFVlLnY9ITE7YnJlYWs7Y2FzZSJjZWxsSXMiOnN3aXRjaChRdC5vcGVyYXRvcil7Y2FzZSJjb250YWluc1RleHQiOmNhc2Uibm90Q29udGFpbnMiOmNhc2UiYmVnaW5z''@;'; put 'put ''V2l0aCI6Y2FzZSJlbmRzV2l0aCI6aWYoVWUudD0idGV4dCIsVWUub3A9SF9bUXQub3BlcmF0b3JdLG51bGw9PVF0LnRleHQpdGhyb3cgbmV3IEVycm9yKCJDRiBUZXh0IFJ1bGUgIitVZS5vcCsiIG1pc3NpbmcgdGV4dCIpO1VlLnY9UXQudGV4dCxVZS5mPVVlLmZbMF0sbnVsbD09VWUuZiYm''@;'; put 'put ''ZGVsZXRlIFVlLmY7YnJlYWs7ZGVmYXVsdDpVZS50PSJ2YWwiLFVlLm9wPUZfW1F0Lm9wZXJhdG9yXSwxPT1VZS5mLmxlbmd0aD9pc05hTigrVWUuZlswXSk/VWUuZj1VZS5mWzBdOihVZS52PStVZS5mWzBdLGRlbGV0ZSBVZS5mKTooVWUubWluPWlzTmFOKCtVZS5mWzBdKT9VZS5mWzBdOitV''@;'; put 'put ''ZS5mWzBdLFVlLm1heD1pc05hTigrVWUuZlsxXSk/VWUuZlsxXTorVWUuZlsxXSxkZWxldGUgVWUuZil9YnJlYWs7Y2FzZSJleHByZXNzaW9uIjpVZS50PSJmb3JtdWxhIixVZS5mPVVlLmZbMF07YnJlYWs7Y2FzZSJjb250YWluc1RleHQiOmNhc2Uibm90Q29udGFpbnNUZXh0IjpjYXNlImJl''@;'; put 'put ''Z2luc1dpdGgiOmNhc2UiZW5kc1dpdGgiOmlmKFVlLnQ9InRleHQiLFVlLm9wPUhfW1F0LnR5cGVdLG51bGw9PVF0LnRleHQmJlVlLmYubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCJDRiBUZXh0IFJ1bGUgIitVZS5vcCsiIG1pc3NpbmcgdGV4dCIpO1VlLnY9bnVsbCE9UXQudGV4dD9RdC50''@;'; put 'put ''ZXh0OlVlLmZbMV0ubWF0Y2goLyIuKiIvKT9VZS5mWzFdLnNsaWNlKDEsLTEpOlVlLmZbMV0sVWUuZj1VZS5mWzBdLG51bGw9PVVlLmYmJmRlbGV0ZSBVZS5mO2JyZWFrO2Nhc2UiY29sb3JTY2FsZSI6aWYoVWUudD0ic2NhbGUiLCFVZS5jb2xvclNjYWxlKXRocm93IG5ldyBFcnJvcigibWlz''@;'; put 'put ''c2luZyBjb2xvclNjYWxlIik7VWUuY21pbj1WXygoUHQ9VWUuY29sb3JTY2FsZSkuY2Z2b3NbMF0sUHQuY29sb3JzWzBdLHhlLHdlKSwzPT1QdC5jZnZvcy5sZW5ndGgmJihVZS5jbWlkPVZfKFB0LmNmdm9zWzFdLFB0LmNvbG9yc1sxXSx4ZSx3ZSkpLFVlLmNtYXg9Vl8oUHQuY2Z2b3NbUHQu''@;'; put 'put ''Y2Z2b3MubGVuZ3RoLTFdLFB0LmNvbG9yc1tQdC5jZnZvcy5sZW5ndGgtMV0seGUsd2UpO2JyZWFrO2Nhc2UiZGF0YUJhciI6aWYoVWUudD0iYmFyIiwhVWUuZGF0YUJhcil0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgZGF0YUJhciIpOyhQdD1VZS5kYXRhQmFyKS5jb2xvcnNbMF0mJihVZS5j''@;'; put 'put ''b2xvcj1WOShQdC5jb2xvcnNbMF0seGUsd2UpKSxVZS5jbWluPSRtKFB0LmNmdm9zWzBdKSxVZS5jbWF4PSRtKFB0LmNmdm9zWzFdKTticmVhaztjYXNlImljb25TZXQiOmlmKFVlLnQ9Imljb24iLCFVZS5pY29uU2V0KXRocm93IG5ldyBFcnJvcigibWlzc2luZyBpY29uU2V0Iik7VWUudGhy''@;'; put 'put ''ZXNoPShQdD1VZS5pY29uU2V0KS5jZnZvcy5tYXAoZnVuY3Rpb24oUm4pe3JldHVybiAkbShSbil9KSxVZS52PVB0LnRhZyYmUHQudGFnLmljb25TZXR8fCIzVHJhZmZpY0xpZ2h0czEiLFVlLnJldj1CaShQdC50YWcucmV2ZXJzZXx8ImZhbHNlIiksVWUucGN0PUJpKFB0LnRhZy5wZXJjZW50''@;'; put 'put ''fHwidHJ1ZSIpLFVlLmhpZGRlbj0hQmkoUHQudGFnLnNob3dWYWx1ZXx8InRydWUiKTticmVhaztjYXNlInRpbWVQZXJpb2QiOlVlLnQ9ImRhdGUiLFVlLm9wPWRQW1F0LnRpbWVQZXJpb2RdO2JyZWFrO2Nhc2UiYWJvdmVBdmVyYWdlIjpVZS50PSJhdmciLFVlLm9wPSIwIj09UXQuYWJvdmVB''@;'; put 'put ''dmVyYWdlPyJMIjoiRyIsVWUub3ArPVF0LnN0ZERldj9RdC5zdGREZXY6QmkoUXQuZXF1YWxBdmVyYWdlfHwiMCIpPyJFIjoiVCI7YnJlYWs7Y2FzZSJ0b3AxMCI6VWUudD0icmFuayIsVWUub3A9KEJpKFF0LmJvdHRvbXx8IjAiKT8iQiI6IlQiKSsoQmkoUXQucGVyY2VudHx8IjAiKT8iUCI6''@;'; put 'put ''IlYiKSxVZS52PStRdC5yYW5rO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgQ0YgVHlwZSAiK1F0LnR5cGV9aWYoZGVsZXRlIFVlLmNvbG9yU2NhbGUsZGVsZXRlIFVlLmRhdGFCYXIsZGVsZXRlIFVlLmljb25TZXQsIVVlLnQpdGhyb3cgY29uc29sZS5sb2coSC5zbGljZShJdCxm''@;'; put 'put ''bit6dC5sZW5ndGgpKSwiYmFkIENGIHJ1bGUiO251bGwhPVVlLmYmJiFVZS5mLmxlbmd0aCYmZGVsZXRlIFVlLmYsVWUuZGVsfHxWZS5wdXNoKFVlKTticmVhaztjYXNlIjxmb3JtdWxhIjpjYXNlIjxmb3JtdWxhPiI6U3Q9Zm4renQubGVuZ3RoO2JyZWFrO2Nhc2UiPC9mb3JtdWxhPiI6VWUu''@;'; put 'put ''Zi5wdXNoKGdyKEguc2xpY2UoU3QsZm4pKSk7YnJlYWs7Y2FzZSI8ZiI6Y2FzZSI8Zj4iOlN0PWZuK3p0Lmxlbmd0aDticmVhaztjYXNlIjwvZj4iOlVlLmYucHVzaChncihILnNsaWNlKFN0LGZuKSkpO2JyZWFrO2Nhc2UiPHNxcmVmPiI6Q249Zm4renQubGVuZ3RoO2JyZWFrO2Nhc2UiPC9z''@;'; put 'put ''cXJlZj4iOkx0PUguc2xpY2UoQ24sZm4pLHJlPUx0P0x0LmluZGV4T2YoIiAiKT4tMT9MdDplYShMdCk6IiIsVWUucmVmPXJlLFZlLmZvckVhY2goZnVuY3Rpb24oUm4pe1JuLnJlZj1yZX0pO2JyZWFrO2Nhc2UiPGNvbG9yU2NhbGUiOmNhc2UiPGNvbG9yU2NhbGU+IjpjYXNlIjxkYXRhQmFy''@;'; put 'put ''IjpjYXNlIjxkYXRhQmFyPiI6Y2FzZSI8aWNvblNldCI6Y2FzZSI8aWNvblNldD4iOlB0PXtjZnZvczpbXSxjb2xvcnM6W10sdGFnOklufSxTdD1mbit6dC5sZW5ndGg7YnJlYWs7Y2FzZSI8L2NvbG9yU2NhbGU+IjpVZS5jb2xvclNjYWxlPVB0O2JyZWFrO2Nhc2UiPC9kYXRhQmFyPiI6VWUu''@;'; put 'put ''ZGF0YUJhcj1QdDticmVhaztjYXNlIjwvaWNvblNldD4iOlVlLmljb25TZXQ9UHQ7YnJlYWs7Y2FzZSI8Y2Z2byI6Y2FzZSI8Y2Z2by8+IjpQdC5jZnZvcy5wdXNoKEluKTticmVhaztjYXNlIjwvY2Z2bz4iOmJyZWFrO2Nhc2UiPGNvbG9yIjpQdC5jb2xvcnMucHVzaChJbik7YnJlYWs7Y2Fz''@;'; put 'put ''ZSI8L2NvbG9yPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0IjpaZT0hMDticmVhaztjYXNlIjwvZXh0PiI6WmU9ITE7YnJlYWs7Y2FzZSI8bmVnYXRpdmVGaWxsQ29sb3IiOmNhc2UiPGF4aXNDb2xvciI6Y2FzZSI8Ym9yZGVy''@;'; put 'put ''Q29sb3IiOmNhc2UiPG5lZ2F0aXZlQm9yZGVyQ29sb3IiOmNhc2UiPGNmSWNvbiI6VWUuZGVsPSEwO2JyZWFrO2Nhc2UiPGR4Zj4iOlplPSEwLGFuPWZuO2JyZWFrO2Nhc2UiPC9keGY+IjpaZT0hMSxVZS5zPV9vKEguc2xpY2UoYW4sZm4renQubGVuZ3RoKSx4ZSx3ZSxYKTticmVhaztkZWZh''@;'; put 'put ''dWx0OmlmKFgmJlguV1RGKXtpZihGZSlicmVhaztpZighWmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitJblswXSsiIGluIGNvbmRmbXQiKX19cmV0dXJuIHp0fSksVmV9KEgsRmUscmUsWCx3ZSx4ZSl9dmFyIEl4PS88KD86XHc6KT9zaGVldFZpZXcoPzpbXj5hLXpdW14+XSop''@;'; put 'put ''P1wvPz4vZztmdW5jdGlvbiBTQShILHJlKXt2YXIgWD0wLHdlPTAseGU9MCxGZT0wO2lmKCFyZXx8IXJlLkNlbGxYZilyZXR1cm4gbnVsbDt2YXIgWmU9cmUuQ2VsbFhmW0hdO251bGwhPVplJiYobnVsbCE9WmUubnVtRm10SWQmJihYPVplLm51bUZtdElkKSxudWxsIT1aZS5maWxsSWQmJih3''@;'; put 'put ''ZT1aZS5maWxsSWQpLG51bGwhPVplLmZvbnRJZCYmKHhlPVplLmZvbnRJZCksbnVsbCE9WmUuYm9yZGVySWQmJihGZT1aZS5ib3JkZXJJZCkpO3ZhciBWZT17dDoieiJ9O3RyeXt6NChWZSxYLHdlLHhlLEZlLHtXVEY6MSxjZWxsU3R5bGVzOiEwfSwwLHJlKX1jYXRjaChVZSl7fXJldHVybiBW''@;'; put 'put ''ZS5zfWZ1bmN0aW9uIHZQKEgscmUsWCx3ZSl7aWYodm9pZCAwPT09SC52JiZ2b2lkIDA9PT1ILmYmJm51bGw9PUgucyYmIUguY3x8InoiPT09SC50JiYhSC5jJiYhd2Uuc2hlZXRTdHVicylyZXR1cm4iIjt2YXIgeGU9IiIsRmU9SC50LFplPUgudjtpZigieiIhPT1ILnQpc3dpdGNoKEgudCl7''@;'; put 'put ''Y2FzZSJiIjp4ZT1ILnY/IjEiOiIwIjticmVhaztjYXNlIm4iOnhlPSIiK0gudjticmVhaztjYXNlImUiOnhlPU5mW0gudl07YnJlYWs7Y2FzZSJkIjp3ZSYmd2UuY2VsbERhdGVzP3hlPXBuKEgudiwtMSkudG9JU09TdHJpbmcoKTooKEg9bG4oSCkpLnQ9Im4iLHhlPSIiKyhILnY9Y3QocG4o''@;'; put 'put ''SC52KSkpKSx2b2lkIDA9PT1ILnomJihILno9Ri5fdGFibGVbMTRdKTticmVhaztkZWZhdWx0OnhlPUgudn12YXIgVmU9InoiPT1ILnQ/IiI6R28oInYiLE9yKHhlKSksVWU9e3I6cmV9LFN0PXdlP3JjKHdlLmNlbGxYZnMsd2UuY2VsbFN0eWxlWGZzLEgsd2UpOjA7c3dpdGNoKDAhPT1TdCYm''@;'; put 'put ''KFVlLnM9U3QpLEgudCl7Y2FzZSJuIjpjYXNlInoiOmJyZWFrO2Nhc2UiZCI6VWUudD0iZCI7YnJlYWs7Y2FzZSJiIjpVZS50PSJiIjticmVhaztjYXNlImUiOlVlLnQ9ImUiO2JyZWFrO2RlZmF1bHQ6aWYobnVsbD09SC52KXtkZWxldGUgSC50O2JyZWFrfWlmKHdlJiZ3ZS5ib29rU1NUKXtW''@;'; put 'put ''ZT1HbygidiIsIiIrRWQod2UuU3RyaW5ncyxILnYsSC5SP0gucj10NihILlIpOm51bGwsd2UucmV2U3RyaW5ncykpLFVlLnQ9InMiO2JyZWFrfUFycmF5LmlzQXJyYXkoSC5SKT8oVmU9Ijxpcz4iK3Q2KEguUikrIjwvaXM+IixVZS50PSJpbmxpbmVTdHIiKTpVZS50PSJzdHIifWlmKEgudCE9''@;'; put 'put ''RmUmJihILnQ9RmUsSC52PVplKSxILmYpe3ZhciBJdD1ILkYmJkguRi5zbGljZSgwLHJlLmxlbmd0aCk9PXJlP3t0OiJhcnJheSIscmVmOkguRn06bnVsbDtWZT1TaSgiZiIsT3IoSC5mKSxJdCkrKG51bGwhPUgudj9WZToiIil9cmV0dXJuIEgubCYmWFsiIWxpbmtzIl0ucHVzaChbcmUsSC5s''@;'; put 'put ''XSksSC5jJiZYWyIhY29tbWVudHMiXS5wdXNoKFtyZSxILmNdKSxTaSgiYyIsVmUsVWUpfXZhciBBUD1mdW5jdGlvbigpe3ZhciBIPS88KD86XHcrOik/Y1sgXC8+XS8scmU9LzxcLyg/Olx3KzopP3Jvdz4vLFg9L3I9WyInXShbXiInXSopWyInXS8sd2U9LzwoPzpcdys6KT9pcz4oW1xTXHNd''@;'; put 'put ''Kj8pPFwvKD86XHcrOik/aXM+Lyx4ZT0vcmVmPVsiJ10oW14iJ10qKVsiJ10vLEZlPUppKCJ2IiksWmU9SmkoImYiKTtyZXR1cm4gZnVuY3Rpb24oVWUsU3QsSXQsUHQsUXQsYW4sQ24pe2Zvcih2YXIgeXIsb2ksYWksbmksYjAsTHQ9MCx6dD0iIixmbj1bXSxJbj1bXSxSbj0wLFZuPTAsSXI9''@;'; put 'put ''MCxpaT0iIixNcj0wLFdyPTAsZnI9MCxoaT0wLHcwPTAsSjA9MCxpbz1BcnJheS5pc0FycmF5KENuLkNlbGxYZiksYmk9W10senI9W10sRGk9QXJyYXkuaXNBcnJheShJdCksY2k9W10sSHI9e30sTWk9ITEsWjA9VWUuc3BsaXQocmUpLG4wPSEhUHQuc2hlZXRTdHVicyxmbz0hIVB0LmNlbGxI''@;'; put 'put ''VE1MLGlhPSEoITE9PT1QdC5jZWxsVGV4dCYmIVB0LmNlbGxORiYmIVB0LmNlbGxTdHlsZXMpLFgwPTAsemk9WjAubGVuZ3RoO1gwIT16aTsrK1gwKXt2YXIgZzA9KHp0PVowW1gwXS50cmltKCkpLmxlbmd0aDtpZigwIT09ZzApe3ZhciBTMD0wO2U6Zm9yKEx0PTA7THQ8ZzA7KytMdClzd2l0''@;'; put 'put ''Y2goenRbTHRdKXtjYXNlIj4iOmlmKCIvIiE9enRbTHQtMV0peysrTHQ7YnJlYWsgZX1QdC5jZWxsU3R5bGVzJiZudWxsIT0ob2k9cXQoenQuc2xpY2UoUzAsTHQpLCEwKSkuciYmcGFyc2VJbnQob2kuciwxMCkmJihNcj1wYXJzZUludChvaS5yLDEwKSxIcj17fSxNaT0hMSxvaS5odCYmKE1p''@;'; put 'put ''PSEwLEhyLmhwdD1wYXJzZUZsb2F0KG9pLmh0KSxIci5ocHg9bWYoSHIuaHB0KSksb2kuZHlEZXNjZW50JiYoTWk9ITAsSHIuZHlEZXNjZW50PW9pLmR5RGVzY2VudCksIjEiPT1vaS5oaWRkZW4mJihNaT0hMCxIci5oaWRkZW49ITApLG51bGwhPW9pLm91dGxpbmVMZXZlbCYmKE1pPSEwLEhy''@;'; put 'put ''LmxldmVsPStvaS5vdXRsaW5lTGV2ZWwpLG9pLnMmJkNuJiZDbi5DZWxsWGYmJihNaT0hMCxIci5zPVNBKG9pLnMsQ24pKSxNaSYmKGNpW01yLTFdPUhyKSk7YnJlYWs7Y2FzZSI8IjpTMD1MdH1pZihTMD49THQpYnJlYWs7aWYoTXI9bnVsbCE9KG9pPXF0KHp0LnNsaWNlKFMwLEx0KSwhMCkp''@;'; put 'put ''LnI/cGFyc2VJbnQob2kuciwxMCk6TXIrMSxXcj0tMSwhKFB0LnNoZWV0Um93cyYmUHQuc2hlZXRSb3dzPE1yKSl7UHQubm9kaW18fChRdC5zLnI+TXItMSYmKFF0LnMucj1Nci0xKSxRdC5lLnI8TXItMSYmKFF0LmUucj1Nci0xKSk7dmFyIEFpPXt0OiJyb3ciLHJvdzpbXSxSOk1yLTEsaWR4''@;'; put 'put ''OlN0fTtQdC5jZWxsU3R5bGVzJiYoSHI9e30sTWk9ITEsb2kuaHQmJihNaT0hMCxIci5ocHQ9cGFyc2VGbG9hdChvaS5odCksSHIuaHB4PW1mKEhyLmhwdCkpLG9pLmR5RGVzY2VudCYmKE1pPSEwLEhyLmR5RGVzY2VudD1vaS5keURlc2NlbnQpLCIxIj09b2kuaGlkZGVuJiYoTWk9ITAsSHIu''@;'; put 'put ''aGlkZGVuPSEwKSxudWxsIT1vaS5vdXRsaW5lTGV2ZWwmJihNaT0hMCxIci5sZXZlbD0rb2kub3V0bGluZUxldmVsKSxvaS5zJiYoTWk9ITAsSHIucz1TQShvaS5zLENuKSksTWkmJihQdC5jYWxsYmFjaz9BaS5wcm9wcz1IcjpjaVtNci0xXT1IcikpLGZuPXp0LnNsaWNlKEx0KS5zcGxpdChI''@;'; put 'put ''KTtmb3IodmFyIHgwPTA7eDAhPWZuLmxlbmd0aCYmIjwiPT1mblt4MF0udHJpbSgpLmNoYXJBdCgwKTsrK3gwKTtmb3IoZm49Zm4uc2xpY2UoeDApLEx0PTA7THQhPWZuLmxlbmd0aDsrK0x0KWlmKDAhPT0oenQ9Zm5bTHRdLnRyaW0oKSkubGVuZ3RoKXtpZihJbj16dC5tYXRjaChYKSxSbj1M''@;'; put 'put ''dCxWbj0wLElyPTAsenQ9IjxjICIrKCI8Ij09enQuc2xpY2UoMCwxKT8iPiI6IiIpK3p0LG51bGwhPUluJiYyPT09SW4ubGVuZ3RoKXtmb3IoUm49MCxpaT1JblsxXSxWbj0wO1ZuIT1paS5sZW5ndGgmJiEoKElyPWlpLmNoYXJDb2RlQXQoVm4pLTY0KTwxfHxJcj4yNik7KytWbilSbj0yNipS''@;'; put 'put ''bitJcjtXcj0tLVJufWVsc2UrK1dyO2ZvcihWbj0wO1ZuIT16dC5sZW5ndGgmJjYyIT09enQuY2hhckNvZGVBdChWbik7KytWbik7aWYoKytWbiwob2k9cXQoenQuc2xpY2UoMCxWbiksITApKS5yfHwob2kucj1RMCh7cjpNci0xLGM6V3J9KSkseXI9e3Q6IiJ9LG51bGwhPShJbj0oaWk9enQu''@;'; put 'put ''c2xpY2UoVm4pKS5tYXRjaChGZSkpJiYiIiE9PUluWzFdJiYoeXIudj1ncihJblsxXSkpLFB0LmNlbGxGb3JtdWxhKXtpZihudWxsIT0oSW49aWkubWF0Y2goWmUpKSYmIiIhPT1JblsxXSl7aWYoeXIuZj1ncihqMChJblsxXSkpLnJlcGxhY2UoL1xyXG4vZywiXG4iKSxQdC54bGZufHwoeXIu''@;'; put 'put ''Zj1BZih5ci5mKSksSW5bMF0uaW5kZXhPZigndD0iYXJyYXkiJyk+LTEpeXIuRj0oaWkubWF0Y2goeGUpfHxbXSlbMV0seXIuRi5pbmRleE9mKCI6Iik+LTEmJmJpLnB1c2goW2VhKHlyLkYpLHlyLkZdKTtlbHNlIGlmKEluWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSl7bmk9cXQoSW5b''@;'; put 'put ''MF0pO3ZhciBmMD1ncihqMChJblsxXSkpO1B0LnhsZm58fChmMD1BZihmMCkpLHpyW3BhcnNlSW50KG5pLnNpLDEwKV09W25pLGYwLG9pLnJdfX1lbHNlKEluPWlpLm1hdGNoKC88ZltePl0qXC8+LykpJiZ6clsobmk9cXQoSW5bMF0pKS5zaV0mJih5ci5mPUg0KHpyW25pLnNpXVsxXSx6cltu''@;'; put 'put ''aS5zaV1bMl0sb2kucikpO3ZhciBqcj1wbyhvaS5yKTtmb3IoVm49MDtWbjxiaS5sZW5ndGg7KytWbilqci5yPj1iaVtWbl1bMF0ucy5yJiZqci5yPD1iaVtWbl1bMF0uZS5yJiZqci5jPj1iaVtWbl1bMF0ucy5jJiZqci5jPD1iaVtWbl1bMF0uZS5jJiYoeXIuRj1iaVtWbl1bMV0pfWlmKG51''@;'; put 'put ''bGw9PW9pLnQmJnZvaWQgMD09PXlyLnYpaWYoeXIuZnx8eXIuRil5ci52PTAseXIudD0ibiI7ZWxzZXtpZighbjApY29udGludWU7eXIudD0ieiJ9ZWxzZSB5ci50PW9pLnR8fCJuIjtzd2l0Y2goUXQucy5jPldyJiYoUXQucy5jPVdyKSxRdC5lLmM8V3ImJihRdC5lLmM9V3IpLHlyLnQpe2Nh''@;'; put 'put ''c2UibiI6aWYoIiI9PXlyLnZ8fG51bGw9PXlyLnYpe2lmKCFuMCljb250aW51ZTt5ci50PSJ6In1lbHNlIHlyLnY9cGFyc2VGbG9hdCh5ci52KTticmVhaztjYXNlInMiOmlmKHZvaWQgMD09PXlyLnYpe2lmKCFuMCljb250aW51ZTt5ci50PSJ6In1lbHNlIGFpPU1kW3BhcnNlSW50KHlyLnYs''@;'; put 'put ''MTApXSx5ci52PWFpLnQseXIucj1haS5yLGFpLlImJih5ci5SPWFpLlIpLGZvJiYoeXIuaD1haS5oKTticmVhaztjYXNlInN0ciI6eXIudD0icyIseXIudj1udWxsIT15ci52P2owKHlyLnYpOiIiLGZvJiYoeXIuaD1lMCh5ci52KSk7YnJlYWs7Y2FzZSJpbmxpbmVTdHIiOkluPWlpLm1hdGNo''@;'; put 'put ''KHdlKSx5ci50PSJzIixudWxsIT1JbiYmKGFpPVUxKEluWzFdKSk/KHlyLnY9YWkudCxhaS5SJiYoeXIuUj1haS5SKSxmbyYmKHlyLmg9YWkuaCkpOnlyLnY9IiI7YnJlYWs7Y2FzZSJiIjp5ci52PUJpKHlyLnYpO2JyZWFrO2Nhc2UiZCI6UHQuY2VsbERhdGVzP3lyLnY9cG4oeXIudiwxKToo''@;'; put 'put ''eXIudj1jdChwbih5ci52LDEpKSx5ci50PSJuIik7YnJlYWs7Y2FzZSJlIjohMSE9PVB0LmNlbGxUZXh0JiYoeXIudz15ci52KSx5ci52PU91W3lyLnZdfWlmKGlhKXtmcj1oaT13MD1KMD0wLGIwPW51bGwsaW8mJnZvaWQgMCE9PW9pLnMmJm51bGwhPShiMD1Dbi5DZWxsWGZbb2kuc10pJiYo''@;'; put 'put ''bnVsbCE9YjAubnVtRm10SWQmJihmcj1iMC5udW1GbXRJZCksUHQuY2VsbFN0eWxlcyYmKG51bGwhPWIwLmZpbGxJZCYmKGhpPWIwLmZpbGxJZCksbnVsbCE9YjAuZm9udElkJiYodzA9YjAuZm9udElkKSxudWxsIT1iMC5ib3JkZXJJZCYmKEowPWIwLmJvcmRlcklkKSkpO3RyeXt6NCh5cixm''@;'; put 'put ''cixoaSx3MCxKMCxQdCwwLENuKX1jYXRjaChzcyl7fVB0LmNlbGxTdHlsZXMmJnlyLnMmJihiMCYmYjAuYWxpZ25tZW50JiYoeXIucy5hbGlnbm1lbnQ9bG4oYjAuYWxpZ25tZW50KSksYjAmJmIwLnByb3RlY3Rpb24mJihudWxsIT1iMC5wcm90ZWN0aW9uLmhpZGRlbiYmKHlyLnMuaGlkZGVu''@;'; put 'put ''PWIwLnByb3RlY3Rpb24uaGlkZGVuKSxudWxsIT1iMC5wcm90ZWN0aW9uLmVkaXRhYmxlJiYoeXIucy5lZGl0YWJsZT1iMC5wcm90ZWN0aW9uLmVkaXRhYmxlKSksYjAmJmIwLnN0eWxlJiYoeXIucy5zdHlsZT1iMC5zdHlsZSkpLFB0LmNlbGxEYXRlcyYmaW8mJiJuIj09eXIudCYmRi5pc19k''@;'; put 'put ''YXRlKEYuX3RhYmxlW2ZyXSkmJih5ci50PSJkIix5ci52PU50KHlyLnYpKX12YXIgQ2E7UHQubm9kaW0mJihDYT1wbyhvaS5yKSxRdC5zLnI+Q2EuciYmKFF0LnMucj1DYS5yKSxRdC5lLnI8Q2EuciYmKFF0LmUucj1DYS5yKSksUHQuY2FsbGJhY2s/KENhPXBvKG9pLnIpLEFpLnJvd1tDYS5j''@;'; put 'put ''XT15cik6RGk/KEl0WyhDYT1wbyhvaS5yKSkucl18fChJdFtDYS5yXT1bXSksSXRbQ2Eucl1bQ2EuY109eXIpOkl0W29pLnJdPXlyfVB0LmNhbGxiYWNrJiZQdC5jYWxsYmFjayhBaSl9fX1uMCYmIVB0LmNhbGxiYWNrJiZTQSgwLENuKSxjaS5sZW5ndGg+MCYmKEl0WyIhcm93cyJdPWNpKX19''@;'; put 'put ''KCksXzY9U2koIndvcmtzaGVldCIsbnVsbCx7eG1sbnM6VzAubWFpblswXSwieG1sbnM6ciI6VzAuciwieG1sbnM6eDE0YWMiOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyIsInhtbG5zOm1jIjoiaHR0cDovL3NjaGVtYXMub3Bl''@;'; put 'put ''bnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiLCJtYzpJZ25vcmFibGUiOiJ4MTRhYyJ9KTtmdW5jdGlvbiBWRyhILHJlLFgsd2Upe3ZhciBaZSx4ZT1bY24sXzZdLFZlPSIiLFVlPVguU2hlZXRzW1guU2hlZXROYW1lc1tIXV07bnVsbD09VWUmJihVZT17fSk7dmFy''@;'; put 'put ''IFN0PVVlWyIhcmVmIl18fCJBMSIsSXQ9ZWEoU3QpO2lmKEl0LmUuYz4xNjM4M3x8SXQuZS5yPjEwNDg1NzUpe2lmKHJlLldURil0aHJvdyBuZXcgRXJyb3IoIlJhbmdlICIrU3QrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2Iik7SXQuZS5jPU1hdGgubWluKEl0LmUuYywx''@;'; put 'put ''NjM4MyksSXQuZS5yPU1hdGgubWluKEl0LmUuYywxMDQ4NTc1KSxTdD1BYShJdCl9d2V8fCh3ZT17fSksVWVbIiFjb21tZW50cyJdPVtdO3ZhciBQdD1bXSxRdD1VZVsiIXByaW50Il07aWYoZnVuY3Rpb24gUmwoSCxyZSxYLHdlLHhlKXt2YXIgRmU9ITEsWmU9e30sVmU9bnVsbDtpZigieGxz''@;'; put 'put ''eCIhPT13ZS5ib29rVHlwZSYmcmUudmJhcmF3KXt2YXIgVWU9cmUuU2hlZXROYW1lc1tYXTt0cnl7cmUuV29ya2Jvb2smJihVZT1yZS5Xb3JrYm9vay5TaGVldHNbWF0uQ29kZU5hbWV8fFVlKX1jYXRjaChRdCl7fUZlPSEwLFplLmNvZGVOYW1lPU9yKFVlKX1IJiZIWyIhY29uZGZtdCJdJiYo''@;'; put 'put ''WmUuZW5hYmxlRm9ybWF0Q29uZGl0aW9uc0NhbGN1bGF0aW9uPSIxIiksSCYmSFsiIXRhYmNvbG9yIl0mJihWZT0oVmV8fCIiKSsnPHRhYkNvbG9yIHJnYj0iRkYnK0lvKEhbIiF0YWJjb2xvciJdLnJnYikrJyIvPicpO3ZhciBTdD0hMSxJdD17fTtpZigoKChIfHx7fSlbIiFwcmludCJdfHx7''@;'; put 'put ''fSkucHJvcHN8fHt9KS5maXQmJihTdD0hMCxJdC5maXRUb1BhZ2U9MSksU3QmJihWZT0oVmV8fCIiKStTaSgicGFnZVNldFVwUHIiLG51bGwsSXQpKSxIJiZIWyIhb3V0bGluZSJdKXt2YXIgUHQ9e3N1bW1hcnlCZWxvdzoxLHN1bW1hcnlSaWdodDoxfTtIWyIhb3V0bGluZSJdLmFib3ZlJiYo''@;'; put 'put ''UHQuc3VtbWFyeUJlbG93PTApLEhbIiFvdXRsaW5lIl0ubGVmdCYmKFB0LnN1bW1hcnlSaWdodD0wKSxWZT0oVmV8fCIiKStTaSgib3V0bGluZVByIixudWxsLFB0KX0hRmUmJiFWZXx8KHhlW3hlLmxlbmd0aF09U2koInNoZWV0UHIiLFZlLFplKSl9KFVlLFgsSCxyZSx4ZSkseGVbeGUubGVu''@;'; put 'put ''Z3RoXT1TaSgiZGltZW5zaW9uIixudWxsLHtyZWY6U3R9KSx4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIG1QKEgscmUsWCx3ZSl7dmFyIHhlPXt3b3JrYm9va1ZpZXdJZDoiMCJ9O2lmKCgoKHdlfHx7fSkuV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pLmxlbmd0aCl7dmFyIEZlPXdlLldvcmtib29r''@;'; put 'put ''LlZpZXdzLFplPUZlW1hdfHxGZVswXTt4ZS5yaWdodFRvTGVmdD1aZS5SVEw/IjEiOiIwIixaZS56b29tJiYoeGUuem9vbVNjYWxlPVplLnpvb20pLG51bGwhPVplLmdyaWQmJih4ZS5zaG93R3JpZExpbmVzPVplLmdyaWQpLFplLnZpZXcmJih4ZS52aWV3PVplLnZpZXcpfW51bGwhPUhbIiFn''@;'; put 'put ''cmlkbGluZXMiXSYmKHhlLnNob3dHcmlkTGluZXM9ISFIWyIhZ3JpZGxpbmVzIl0pO3ZhciBWZT0iIixVZT17cjowLGM6MH07aWYoSFsiIXNlbCJdKXtpZighKFVlPUhbIiFzZWwiXS5jZWxsKSl7aWYoIUhbIiFzZWwiXS5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIk11c3Qgc3BlY2lmeSBhIHNl''@;'; put 'put ''bGVjdGlvbiBjZWxsIG9yIHJhbmdlIik7VWU9bnMoSFsiIXNlbCJdLnJhbmdlLnJlcGxhY2UoL1xzLiokLywiIikpLnN9InN0cmluZyI9PXR5cGVvZiBVZSYmKFVlPXBvKFVlKSl9dmFyIEl0PUhbIiFmcmVlemUiXT8ic3RyaW5nIj09dHlwZW9mIEhbIiFmcmVlemUiXT9wbyhIWyIhZnJlZXpl''@;'; put 'put ''Il0pOkhbIiFmcmVlemUiXTp7YzowLHI6MH07aWYoSFsiIWZyZWV6ZSJdKXt2YXIgUHQ9UTAoSXQpLFF0PXtzdGF0ZToiZnJvemVuIix4U3BsaXQ6SXQuYyx5U3BsaXQ6SXQucix0b3BMZWZ0Q2VsbDpQdH07SFsiIXNlbCJdJiYoUXQuYWN0aXZlUGFuZT0oVWUucj49SXQuciYmSXQucj4wPyJi''@;'; put 'put ''b3R0b20iOiJ0b3AiKSsoVWUuYz49SXQuYyYmSXQuYz4wPyJSaWdodCI6IkxlZnQiKSksVmU9U2koInBhbmUiLG51bGwsUXQpfWlmKEhbIiFzZWwiXSl7dmFyIGFuPXthY3RpdmVDZWxsOiJzdHJpbmciPT10eXBlb2YgVWU/VWU6UTAoVWUpfTthbi5zcXJlZj1IWyIhc2VsIl0ucmFuZ2U/SFsi''@;'; put 'put ''IXNlbCJdLnJhbmdlOmFuLmFjdGl2ZUNlbGwrIjoiK2FuLmFjdGl2ZUNlbGwsVmUrPVNpKCJzZWxlY3Rpb24iLG51bGwsYW4pLEhbIiFmcmVlemUiXSYmKEl0LmM+MCYmKGFuLnBhbmU9InRvcFJpZ2h0IixWZSs9U2koInNlbGVjdGlvbiIsbnVsbCxhbikpLEl0LnI+MCYmKGFuLnBhbmU9ImJv''@;'; put 'put ''dHRvbUxlZnQiLFZlKz1TaSgic2VsZWN0aW9uIixudWxsLGFuKSksSXQuYz4wJiZJdC5yPjAmJihhbi5wYW5lPSJib3R0b21SaWdodCIsVmUrPVNpKCJzZWxlY3Rpb24iLG51bGwsYW4pKSl9cmV0dXJuIFNpKCJzaGVldFZpZXdzIixTaSgic2hlZXRWaWV3IixWZXx8bnVsbCx4ZSkse30pfShV''@;'; put 'put ''ZSwwLEgsWCkscmUuc2hlZXRGb3JtYXQpe3ZhciBhbj17ZGVmYXVsdFJvd0hlaWdodDpyZS5zaGVldEZvcm1hdC5kZWZhdWx0Um93SGVpZ2h0fHwiMTYiLGJhc2VDb2xXaWR0aDpyZS5zaGVldEZvcm1hdC5iYXNlQ29sV2lkdGh8fCIxMCJ9O251bGwhPXJlLnNoZWV0Rm9ybWF0Lm91dGxpbmVM''@;'; put 'put ''ZXZlbFJvdyYmKGFuLm91dGxpbmVMZXZlbFJvdz1yZS5zaGVldEZvcm1hdC5vdXRsaW5lTGV2ZWxSb3cpLHhlW3hlLmxlbmd0aF09U2koInNoZWV0Rm9ybWF0UHIiLG51bGwsYW4pfWVsc2UgaWYoVWVbIiFzaGVldEZvcm1hdCJdKXt2YXIgQ249e30sTHQ9ITE7VWVbIiFzaGVldEZvcm1hdCJd''@;'; put 'put ''LnJvdyYmKFVlWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB0PyhMdD0hMCxDbi5kZWZhdWx0Um93SGVpZ2h0PVVlWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB0LENuLmN1c3RvbUhlaWdodD0xKTpVZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhweD8oTHQ9ITAsQ24uZGVmYXVsdFJvd0hlaWdodD1VZihV''@;'; put 'put ''ZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhweCksQ24uY3VzdG9tSGVpZ2h0PTEpOigwPT09VWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHR8fDA9PT1VZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhweHx8VWVbIiFzaGVldEZvcm1hdCJdLnJvdy5oaWRkZW4pJiYoTHQ9ITAsQ24uZGVmYXVsdFJvd0hl''@;'; put 'put ''aWdodD1Dbi5kZWZhdWx0Um93SGVpZ2h0fHwxNixDbi5jdXN0b21IZWlnaHQ9MSxDbi56ZXJvSGVpZ2h0PTEpLFVlWyIhc2hlZXRGb3JtYXQiXS5keURlc2NlbnQmJihDblsieDE0YWM6ZHlEZXNjZW50Il09VWVbIiFzaGVldEZvcm1hdCJdLmR5RGVzY2VudCkpLFVlWyIhc2hlZXRGb3JtYXQi''@;'; put 'put ''XS5jb2wmJihVZVsiIXNoZWV0Rm9ybWF0Il0uY29sLndjaHx8YmMoVWVbIiFzaGVldEZvcm1hdCJdLmNvbCksQ24uZGVmYXVsdENvbFdpZHRoPVVlWyIhc2hlZXRGb3JtYXQiXS5jb2wud2NoKzUvdDF8fDAsTHQ9ITApLG51bGw9PUNuLmRlZmF1bHRSb3dIZWlnaHQmJihDbi5kZWZhdWx0Um93''@;'; put 'put ''SGVpZ2h0PTE2KSxudWxsPT1Dbi5kZWZhdWx0Q29sV2lkdGgmJihDbi5kZWZhdWx0Q29sV2lkdGg9MTApLENuLm91dGxpbmVMZXZlbFJvdz1Dbi5vdXRsaW5lTGV2ZWxSb3d8fDcsTHQmJih4ZVt4ZS5sZW5ndGhdPVNpKCJzaGVldEZvcm1hdFByIixudWxsLENuKSl9bnVsbCE9VWVbIiFjb2xz''@;'; put 'put ''Il0mJlVlWyIhY29scyJdLmxlbmd0aD4wJiYoeGVbeGUubGVuZ3RoXT1mdW5jdGlvbiBFMyhILHJlLFgpe2Zvcih2YXIgeGUsd2U9WyI8Y29scz4iXSxGZT0wO0ZlIT1yZS5sZW5ndGg7KytGZSlpZih4ZT1yZVtGZV0pe2lmKHhlLmF1dG8mJlptKEgseGUsRmUpLHhlLnN8fHhlLnope3ZhciBa''@;'; put 'put ''ZT17dDoieiJ9O251bGwhPXhlLnMmJihaZS5zPXhlLnMpLG51bGwhPXhlLnomJihaZS56PXhlLnopLHhlLnN0eWxlPXJjKFguY2VsbFhmcyxYLmNlbGxTdHlsZVhmcyxaZSxYKX13ZVt3ZS5sZW5ndGhdPVNpKCJjb2wiLG51bGwseGQoRmUseGUpKX1yZXR1cm4gd2Vbd2UubGVuZ3RoXT0iPC9j''@;'; put 'put ''b2xzPiIsd2Uuam9pbigiIil9KFVlLFVlWyIhY29scyJdLHJlKSkseGVbWmU9eGUubGVuZ3RoXT0iPHNoZWV0RGF0YS8+IixVZVsiIWxpbmtzIl09W10sbnVsbCE9VWVbIiFyZWYiXSYmKFZlPWZ1bmN0aW9uIHFtKEgscmUsWCx3ZSl7dmFyIFVlLHp0LHhlPVtdLEZlPVtdLFplPWVhKEhbIiFy''@;'; put 'put ''ZWYiXSksVmU9IiIsU3Q9IiIsSXQ9W10sUHQ9MCxRdD0wLGFuPUhbIiFyb3dzIl0sQ249QXJyYXkuaXNBcnJheShIKSxMdD17cjpTdH0sZm49LTE7Zm9yKFF0PVplLnMuYztRdDw9WmUuZS5jOysrUXQpSXRbUXRdPUxsKFF0KTtmb3IoUHQ9WmUucy5yO1B0PD1aZS5lLnI7KytQdCl7Zm9yKEZl''@;'; put 'put ''PVtdLFN0PWhhKFB0KSxRdD1aZS5zLmM7UXQ8PVplLmUuYzsrK1F0KXtVZT1JdFtRdF0rU3Q7dmFyIEluPUNuPyhIW1B0XXx8W10pW1F0XTpIW1VlXTt2b2lkIDAhPT1JbiYmbnVsbCE9KFZlPXZQKEluLFVlLEgscmUpKSYmRmUucHVzaChWZSl9KEZlLmxlbmd0aD4wfHxhbiYmYW5bUHRdKSYm''@;'; put 'put ''KEx0PXtyOlN0fSxhbiYmYW5bUHRdJiYoKHp0PWFuW1B0XSkuaGlkZGVuJiYoTHQuaGlkZGVuPTEpLGZuPS0xLHp0LmhweD9mbj1VZih6dC5ocHgpOnp0LmhwdCYmKGZuPXp0LmhwdCksZm4+LTEmJihMdC5odD1mbixMdC5jdXN0b21IZWlnaHQ9MSksenQubGV2ZWwmJihMdC5vdXRsaW5lTGV2''@;'; put 'put ''ZWw9enQubGV2ZWwpLHp0LmR5RGVzY2VudCYmKEx0WyJ4MTRhYzpkeURlc2NlbnQiXT16dC5keURlc2NlbnQpLHp0LnMmJihMdC5zPXJjKHJlLmNlbGxYZnMscmUuY2VsbFN0eWxlWGZzLHt0OiJ6IixzOnp0LnN9LHJlKSxMdC5jdXN0b21Gb3JtYXQ9MSkpLHhlW3hlLmxlbmd0aF09U2koInJv''@;'; put 'put ''dyIsRmUuam9pbigiIiksTHQpKX1pZihhbilmb3IoO1B0PGFuLmxlbmd0aDsrK1B0KWFuJiZhbltQdF0mJihMdD17cjpQdCsxfSwoenQ9YW5bUHRdKS5oaWRkZW4mJihMdC5oaWRkZW49MSksZm49LTEsenQuaHB4P2ZuPVVmKHp0LmhweCk6enQuaHB0JiYoZm49enQuaHB0KSxmbj4tMSYmKEx0''@;'; put 'put ''Lmh0PWZuLEx0LmN1c3RvbUhlaWdodD0xKSx6dC5sZXZlbCYmKEx0Lm91dGxpbmVMZXZlbD16dC5sZXZlbCkseGVbeGUubGVuZ3RoXT1TaSgicm93IiwiIixMdCkpO3JldHVybiB4ZS5qb2luKCIiKX0oVWUscmUpLFZlLmxlbmd0aD4wJiYoeGVbeGUubGVuZ3RoXT1WZSkpLHhlLmxlbmd0aD5a''@;'; put 'put ''ZSsxJiYoeGVbeGUubGVuZ3RoXT0iPC9zaGVldERhdGE+Iix4ZVtaZV09eGVbWmVdLnJlcGxhY2UoIi8+IiwiPiIpKSxVZVsiIXByb3RlY3QiXSYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24gZlAoSCl7dmFyIHJlPXtzaGVldDoxfTtyZXR1cm4gY1AuZm9yRWFjaChmdW5jdGlvbihYKXtudWxs''@;'; put 'put ''IT1IW1hdJiZIW1hdJiYocmVbWF09IjEiKX0pLHlBLmZvckVhY2goZnVuY3Rpb24oWCl7bnVsbCE9SFtYXSYmIUhbWF0mJihyZVtYXT0iMCIpfSksSC5wYXNzd29yZD9yZS5wYXNzd29yZD1MYihILnBhc3N3b3JkKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTpILmVuY3J5cHRpb24mJihy''@;'; put 'put ''ZS5hbGdvcml0aG1OYW1lPUguZW5jcnlwdGlvbi5hbGdvLHJlLmhhc2hWYWx1ZT1ILmVuY3J5cHRpb24uaGFzaCxyZS5zYWx0VmFsdWU9SC5lbmNyeXB0aW9uLnNhbHQscmUuc3BpbkNvdW50PUguZW5jcnlwdGlvbi5zcGluKSxTaSgic2hlZXRQcm90ZWN0aW9uIixudWxsLHJlKX0oVWVbIiFw''@;'; put 'put ''cm90ZWN0Il0pKSxudWxsIT1VZVsiIWF1dG9maWx0ZXIiXSYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24gSm0oSCxyZSxYLHdlKXt2YXIgeGU9InN0cmluZyI9PXR5cGVvZiBILnJlZj9ILnJlZjpBYShILnJlZik7WC5Xb3JrYm9va3x8KFguV29ya2Jvb2s9e1NoZWV0czpbXX0pLFguV29ya2Jv''@;'; put 'put ''b2suTmFtZXN8fChYLldvcmtib29rLk5hbWVzPVtdKTt2YXIgRmU9WC5Xb3JrYm9vay5OYW1lcyxaZT1ucyh4ZSk7WmUucy5yPT1aZS5lLnImJihaZS5lLnI9bnMocmVbIiFyZWYiXSkuZS5yLHhlPUFhKFplKSk7Zm9yKHZhciBWZT0wO1ZlPEZlLmxlbmd0aDsrK1ZlKXt2YXIgVWU9RmVbVmVd''@;'; put 'put ''O2lmKCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiPT1VZS5OYW1lJiZVZS5TaGVldD09d2Upe1VlLlJlZj0iJyIrWC5TaGVldE5hbWVzW3dlXSsiJyEiK3hlO2JyZWFrfX1yZXR1cm4gVmU9PUZlLmxlbmd0aCYmRmUucHVzaCh7TmFtZToiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIixTaGVldDp3ZSxS''@;'; put 'put ''ZWY6IiciK1guU2hlZXROYW1lc1t3ZV0rIichIit4ZX0pLFNpKCJhdXRvRmlsdGVyIixudWxsLHtyZWY6eGV9KX0oVWVbIiFhdXRvZmlsdGVyIl0sVWUsWCxIKSksbnVsbCE9VWVbIiFtZXJnZXMiXSYmVWVbIiFtZXJnZXMiXS5sZW5ndGg+MCYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24gZEEo''@;'; put 'put ''SCl7aWYoMD09PUgubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgcmU9JzxtZXJnZUNlbGxzIGNvdW50PSInK0gubGVuZ3RoKyciPicsWD0wO1ghPUgubGVuZ3RoOysrWClyZSs9JzxtZXJnZUNlbGwgcmVmPSInK0FhKEhbWF0pKyciLz4nO3JldHVybiByZSsiPC9tZXJnZUNlbGxzPiJ9KFVlWyIh''@;'; put 'put ''bWVyZ2VzIl0pKSxVZVsiIWNvbmRmbXQiXSYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24ga0EoSCxyZSl7cmV0dXJuIEgubWFwKGZ1bmN0aW9uKFgsd2Upe3JldHVybiBmdW5jdGlvbiBwUChILHJlLFgpe3ZhciB3ZT1ILnM/WDgoWC5EWEYsSC5zKTotMSx4ZT0ic3RyaW5nIj09dHlwZW9mIEgu''@;'; put 'put ''cmVmP0gucmVmOkFhKEgucmVmKSxaZT1lYSh4ZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zO1plLnI8MCYmKFplLnI9MCksWmUuYzwwJiYoWmUuYz0wKTt2YXIgVmU9IiIsVWU9e3ByaW9yaXR5OnJlKzF9O3N3aXRjaCh3ZT4tMSYmKFVlLmR4ZklkPXdlKSxILnQpe2Nhc2UidW5pcXVlIjpVZS50''@;'; put 'put ''eXBlPSJ1bmlxdWVWYWx1ZXMiO2JyZWFrO2Nhc2UiZHVwIjpVZS50eXBlPSJkdXBsaWNhdGVWYWx1ZXMiO2JyZWFrO2Nhc2UiYmxhbmsiOlVlLnR5cGU9KEgudj8iYyI6Im5vdEMiKSsib250YWluc0JsYW5rcyIsVmU9Ijxmb3JtdWxhPkxFTihUUklNKCIrUTAoWmUpKyIpKSIrKEgudj8iPSI6''@;'; put 'put ''IiZndDsiKSsiMDwvZm9ybXVsYT4iO2JyZWFrO2Nhc2UiZXJyb3IiOlVlLnR5cGU9KEgudj8iYyI6Im5vdEMiKSsib250YWluc0Vycm9ycyI7YnJlYWs7Y2FzZSJmb3JtdWxhIjpVZS50eXBlPSJleHByZXNzaW9uIixWZT1TaSgiZm9ybXVsYSIsT3IoSC5mKSx7fSk7YnJlYWs7Y2FzZSJkYXRl''@;'; put 'put ''IjpVZS50eXBlPSJ0aW1lUGVyaW9kIixVZS50aW1lUGVyaW9kPU5fW0gub3BdO2JyZWFrO2Nhc2UidGV4dCI6c3dpdGNoKFVlLnR5cGU9VWUub3BlcmF0b3I9eHhbSC5vcF0sVWUudGV4dD1ILnYsSC5vcCl7Y2FzZSJJTiI6VmU9Jzxmb3JtdWxhPk5PVChJU0VSUk9SKFNFQVJDSCgiJytPcihI''@;'; put 'put ''LnYpKyciLCcrUTAoWmUpKyIpKSk8L2Zvcm11bGE+IjticmVhaztjYXNlIk9UIjpWZT0nPGZvcm11bGE+SVNFUlJPUihTRUFSQ0goIicrT3IoSC52KSsnIiwnK1EwKFplKSsiKSk8L2Zvcm11bGE+IjticmVhaztjYXNlIlNUIjpWZT0iPGZvcm11bGE+TEVGVCgiK1EwKFplKSsnLExFTigiJytP''@;'; put 'put ''cihILnYpKyciKSk9IicrT3IoSC52KSsnIjwvZm9ybXVsYT4nO2JyZWFrO2Nhc2UiTkQiOlZlPSI8Zm9ybXVsYT5SSUdIVCgiK1EwKFplKSsnLExFTigiJytPcihILnYpKyciKSk9IicrT3IoSC52KSsnIjwvZm9ybXVsYT4nfWJyZWFrO2Nhc2UidmFsIjpVZS50eXBlPSJjZWxsSXMiLFVlLm9w''@;'; put 'put ''ZXJhdG9yPUttW0gub3BdLFZlPW51bGwhPUgubWluP1NpKCJmb3JtdWxhIixPcihTdHJpbmcoSC5taW4pKSx7fSkrU2koImZvcm11bGEiLE9yKFN0cmluZyhILm1heCkpLHt9KTpTaSgiZm9ybXVsYSIsT3IobnVsbCE9SC52P1N0cmluZygic3RyaW5nIj09dHlwZW9mIEgudj8nIicrSC52LnJl''@;'; put 'put ''cGxhY2UoLyIvZywnIiInKSsnIic6SC52KTpILmYpLHt9KTticmVhaztjYXNlImF2ZyI6c3dpdGNoKFVlLnR5cGU9ImFib3ZlQXZlcmFnZSIsVWUuYWJvdmVBdmVyYWdlPSJMIj09SC5vcC5jaGFyQXQoMCk/IjAiOiIxIixILm9wLmNoYXJBdCgxKSl7Y2FzZSJUIjpVZS5lcXVhbEF2ZXJhZ2U9''@;'; put 'put ''IjAiO2JyZWFrO2Nhc2UiRSI6VWUuZXF1YWxBdmVyYWdlPSIxIjticmVhaztkZWZhdWx0OlVlLnN0ZERldj1ILm9wLmNoYXJBdCgxKX1icmVhaztjYXNlInJhbmsiOlVlLnR5cGU9InRvcDEwIixVZS5ib3R0b209IkIiPT1ILm9wLmNoYXJBdCgwKT8iMSI6IjAiLFVlLnBlcmNlbnQ9IlAiPT1I''@;'; put 'put ''Lm9wLmNoYXJBdCgxKT8iMSI6IjAiLFVlLnJhbms9SC52O2JyZWFrO2Nhc2UiaWNvbiI6VWUudHlwZT0iaWNvblNldCI7dmFyIFN0PXtpY29uU2V0OkgudixwZXJjZW50OkgucGN0PyJ0cnVlIjoiZmFsc2UifTtILnJldiYmKFN0LnJldmVyc2U9InRydWUiKSxILmhpZGRlbiYmKFN0LnNob3dW''@;'; put 'put ''YWx1ZT0iZmFsc2UiKSxWZT1TaSgiaWNvblNldCIsSC50aHJlc2gubWFwKHgzKS5qb2luKCIiKSxTdCk7YnJlYWs7Y2FzZSJzY2FsZSI6VWUudHlwZT0iY29sb3JTY2FsZSIsVmUrPXgzKEguY21pbiksSC5jbWlkJiYoVmUrPXgzKEguY21pZCkpLFZlKz14MyhILmNtYXgpLFZlKz12cyhILmNt''@;'; put 'put ''aW4uY29sb3IpLEguY21pZCYmKFZlKz12cyhILmNtaWQuY29sb3IpKSxWZT1TaSgiY29sb3JTY2FsZSIsVmUrPXZzKEguY21heC5jb2xvcikse30pO2JyZWFrO2Nhc2UiYmFyIjpVZS50eXBlPSJkYXRhQmFyIixWZSs9eDMoSC5jbWluKSxWZSs9eDMoSC5jbWF4KSxWZT1TaSgiZGF0YUJhciIs''@;'; put 'put ''VmUrPXZzKEguY29sb3IpLHt9KTticmVhaztkZWZhdWx0OnRocm93IGNvbnNvbGUubG9nKEgpLCJDRiBtaXNzaW5nIHR5cGUgIitILnR9cmV0dXJuJzxjb25kaXRpb25hbEZvcm1hdHRpbmcgc3FyZWY9IicreGUrJyI+JytTaSgiY2ZSdWxlIiwiIj09VmU/bnVsbDpWZSxVZSkrIjwvY29uZGl0''@;'; put 'put ''aW9uYWxGb3JtYXR0aW5nPiJ9KFgsd2UscmUpfSkuam9pbigiIil9KFVlWyIhY29uZGZtdCJdLHJlKSksVWVbIiF2YWxpZGF0aW9ucyJdJiYoeGVbeGUubGVuZ3RoXT1mdW5jdGlvbiBoUChIKXtpZighSHx8MD09SC5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciByZT1bXSxYPTAsd2U9MDt3ZTxI''@;'; put 'put ''Lmxlbmd0aDsrK3dlKXt2YXIgeGU9SFt3ZV0sRmU9WG1beGUudF07aWYoeGUucmVmJiYoInN0cmluZyIhPXR5cGVvZiB4ZS5yZWZ8fC0xIT14ZS5yZWYuaW5kZXhPZigiICIpfHwoeGUucmVmPWVhKHhlLnJlZikseGUucmVmLnMmJiEoeGUucmVmLnMuYzwwKSkpKXsrK1g7dmFyIFplPXt0eXBl''@;'; put 'put ''OkZlLGFsbG93Qmxhbms6KygwIT14ZS5ibGFuayksc2hvd0lucHV0TWVzc2FnZTorKDAhPXhlLmlucHV0KSxzaG93RXJyb3JNZXNzYWdlOisoMCE9eGUuZXJyb3IpLHNxcmVmOiJzdHJpbmciPT10eXBlb2YgeGUucmVmP3hlLnJlZjpBYSh4ZS5yZWYpfTtpZih4ZS5pbnB1dCYmKHhlLmlucHV0''@;'; put 'put ''LnRpdGxlJiYoWmUucHJvbXB0VGl0bGU9bGkoeGUuaW5wdXQudGl0bGUpKSx4ZS5pbnB1dC5tZXNzYWdlJiYoWmUucHJvbXB0PWxpKHhlLmlucHV0Lm1lc3NhZ2UpKSkseGUuZXJyb3ImJih4ZS5lcnJvci50aXRsZSYmKFplLmVycm9yVGl0bGU9bGkoeGUuZXJyb3IudGl0bGUpKSx4ZS5lcnJv''@;'; put 'put ''ci5tZXNzYWdlJiYoWmUuZXJyb3I9bGkoeGUuZXJyb3IubWVzc2FnZSkpLHhlLmVycm9yLnN0eWxlJiYoWmUuZXJyb3JTdHlsZT14ZS5lcnJvci5zdHlsZSkpLCFGZSl0aHJvdyBuZXcgRXJyb3IoIkJhZCB2YWxpZGF0aW9uOiB1bnJlY29nbml6ZWQgdHlwZSAiK3hlLnQpO3ZhciBWZT0iIjtz''@;'; put 'put ''d2l0Y2goeGUudCl7Y2FzZSJBbnkiOmJyZWFrO2Nhc2UiTGlzdCI6Y2FzZSJDdXN0b20iOmlmKHhlLmwpe2lmKHhlLmwuam9pbigiLCIpLmxlbmd0aD4yNTApdGhyb3cgbmV3IEVycm9yKCJEViBsZW5ndGggPiAyNTAgdHJpZ2dlcnMgY29ycnVwdGlvbiBlcnJvcnMgaW4gRXhjZWwuICBVc2Ug''@;'; put 'put ''YSBsb29rdXAgdGFibGUiKTtWZT0nPGZvcm11bGExPiInK09yKHhlLmwuam9pbigiLCIpKSsnIjwvZm9ybXVsYTE+J31lbHNlIFZlPSI8Zm9ybXVsYTE+IitPcih4ZS5mKSsiPC9mb3JtdWxhMT4iO2JyZWFrO2Nhc2UiRGF0ZSI6Y2FzZSJUaW1lIjpjYXNlIkRlY2ltYWwiOmNhc2UiTGVuZ3Ro''@;'; put 'put ''IjpjYXNlIldob2xlIjppZighS21beGUub3BdKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGEgVmFsaWRhdGlvbiB0eXBlICIreGUub3ArIiBmb3IgIit4ZS50KTtpZihaZS5vcGVyYXRvcj1LbVt4ZS5vcF0sbnVsbCE9eGUudilWZT0iPGZvcm11bGExPiIrT3IoU3RyaW5nKHhlLnYgaW5zdGFu''@;'; put 'put ''Y2VvZiBEYXRlP2N0KHhlLnYpOnhlLnYpKSsiPC9mb3JtdWxhMT4iO2Vsc2V7aWYobnVsbD09eGUubWlufHxudWxsPT14ZS5tYXgpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0YSBWYWxpZGF0aW9uOiBgdmAgb3IgYG1pbmArYG1heGAgcmVxdWlyZWQgZm9yIFR5cGUgIit4ZS50KTtWZT0iPGZv''@;'; put 'put ''cm11bGExPiIrT3IoU3RyaW5nKHhlLm1pbiBpbnN0YW5jZW9mIERhdGU/Y3QoeGUubWluKTp4ZS5taW4pKSsiPC9mb3JtdWxhMT48Zm9ybXVsYTI+IitPcihTdHJpbmcoeGUubWF4IGluc3RhbmNlb2YgRGF0ZT9jdCh4ZS5tYXgpOnhlLm1heCkpKyI8L2Zvcm11bGEyPiJ9fXJlLnB1c2goU2ko''@;'; put 'put ''ImRhdGFWYWxpZGF0aW9uIixWZXx8bnVsbCxaZSkpfX1yZXR1cm4gWD4wPyc8ZGF0YVZhbGlkYXRpb25zIGNvdW50PSInK1grJyI+JytyZS5qb2luKCIiKSsiPC9kYXRhVmFsaWRhdGlvbnM+IjoiIn0oVWVbIiF2YWxpZGF0aW9ucyJdKSk7dmFyIGZuLHp0PS0xLEluPS0xO2lmKFVlWyIhbGlu''@;'; put 'put ''a3MiXS5sZW5ndGg+MCYmKHhlW3hlLmxlbmd0aF09IjxoeXBlcmxpbmtzPiIsVWVbIiFsaW5rcyJdLmZvckVhY2goZnVuY3Rpb24oeXIpeyF5clsxXS5UYXJnZXR8fChmbj17cmVmOnlyWzBdfSwiIyIhPXlyWzFdLlRhcmdldC5jaGFyQXQoMCkmJihJbj1idCh3ZSwtMSxPcih5clsxXS5UYXJn''@;'; put 'put ''ZXQpLnJlcGxhY2UoLyMuKiQvLCIiKSxkdC5ITElOSyksZm5bInI6aWQiXT0icklkIitJbiksKHp0PXlyWzFdLlRhcmdldC5pbmRleE9mKCIjIikpPi0xJiYoZm4ubG9jYXRpb249T3IoeXJbMV0uVGFyZ2V0LnNsaWNlKHp0KzEpKSkseXJbMV0uVG9vbHRpcCYmKGZuLnRvb2x0aXA9T3IoeXJb''@;'; put 'put ''MV0uVG9vbHRpcCkpLHhlW3hlLmxlbmd0aF09U2koImh5cGVybGluayIsbnVsbCxmbikpfSkseGVbeGUubGVuZ3RoXT0iPC9oeXBlcmxpbmtzPiIpLGRlbGV0ZSBVZVsiIWxpbmtzIl0sUXQpe3ZhciBSbj1mdW5jdGlvbiBtQShIKXtpZihILnByb3BzKXt2YXIgcmU9e30sWD1ILnByb3BzO3Jl''@;'; put 'put ''dHVybiBYLmdyaWRsaW5lcyYmKHJlLmdyaWRMaW5lcz1yZS5ncmlkTGluZXNTZXQ9MSksWC5oZWFkaW5ncyYmKHJlLmhlYWRpbmdzPTEpLFguY2VudGVyWCYmKHJlLmhvcml6b250YWxDZW50ZXJlZD0xKSxYLmNlbnRlclkmJihyZS52ZXJ0aWNhbENlbnRlcmVkPTEpLFNpKCJwcmludE9wdGlv''@;'; put 'put ''bnMiLG51bGwscmUpfXJldHVybiIifShRdCk7Um4ubGVuZ3RoJiYoeGVbeGUubGVuZ3RoXT1Sbil9aWYoKG51bGwhPVVlWyIhbWFyZ2lucyJdfHxRdCYmUXQubWFyZ2lucykmJih4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIE14KEgpe3JldHVybiBEaChIKSxTaSgicGFnZU1hcmdpbnMiLG51bGws''@;'; put 'put ''SCl9KFVlWyIhbWFyZ2lucyJdfHxRdC5tYXJnaW5zKSksUXQpe3ZhciBWbj1mdW5jdGlvbiBreChIKXtpZihILnByb3BzKXt2YXIgcmU9e30sWD1ILnByb3BzO2lmKFgub3JpZW50YXRpb24mJihyZS5vcmllbnRhdGlvbj1YLm9yaWVudGF0aW9uKSxYLnNjYWxlJiYocmUuc2NhbGU9WC5zY2Fs''@;'; put 'put ''ZSksWC5maXQmJihudWxsIT1YLmZpdC5oZWlnaHQmJihyZS5maXRUb0hlaWdodD1YLmZpdC5oZWlnaHQpLG51bGwhPVguZml0LndpZHRoJiYocmUuZml0VG9XaWR0aD1YLmZpdC53aWR0aCkpLFguZHBpJiYocmUuaG9yaXpvbnRhbERwaT1yZS52ZXJ0aWNhbERwaT1YLmRwaSksbnVsbCE9WC5m''@;'; put 'put ''aXJzdCYmKHJlLmZpcnN0UGFnZU51bWJlcj1YLmZpcnN0LHJlLnVzZUZpcnN0UGFnZU51bWJlcj0xKSxYLmJ3JiYocmUuYmxhY2tBbmRXaGl0ZT0xKSxYLmRyYWZ0JiYocmUuZHJhZnQ9MSksWC5jb21tZW50cyYmKHJlLmNlbGxDb21tZW50cz1nQVtYLmNvbW1lbnRzXXx8Im5vbmUiKSxYLmVy''@;'; put 'put ''cm9ycyYmKHJlLmVycm9ycz1zMltYLmVycm9yc118fCJub25lIiksWC5wYXBlcilzd2l0Y2godHlwZW9mIFgucGFwZXIpe2Nhc2UibnVtYmVyIjpyZS5wYXBlclNpemU9WC5wYXBlcjticmVhaztjYXNlInN0cmluZyI6aDZbWC5wYXBlcl0/cmUucGFwZXJTaXplPWg2W1gucGFwZXJdOitYLnBh''@;'; put 'put ''cGVyJiYocmUucGFwZXJTaXplPStYLnBhcGVyKTticmVhaztjYXNlIm9iamVjdCI6aWYoIVgucGFwZXIuaGVpZ2h0fHwhWC5wYXBlci53aWR0aCl0aHJvdyJDdXN0b20gUGFwZXIgU2l6ZSBtdXN0IGluY2x1ZGUgd2lkdGggYW5kIGhlaWdodCEiO3JlLnBhcGVySGVpZ2h0PVgucGFwZXIuaGVp''@;'; put 'put ''Z2h0LHJlLnBhcGVyV2lkdGg9WC5wYXBlci53aWR0aH1yZXR1cm5bMSwhMCwidHJ1ZSIsIm92ZXIiXS5pbmRleE9mKFgub3JkZXIpPi0xJiYocmUucGFnZU9yZGVyPSJvdmVyVGhlbkRvd24iKSxTaSgicGFnZVNldHVwIixudWxsLHJlKX1yZXR1cm4iIn0oUXQpO1ZuLmxlbmd0aCYmKHhlW3hl''@;'; put 'put ''Lmxlbmd0aF09Vm4pLFZuPWZ1bmN0aW9uIEV4KEgpe3ZhciByZT1bXSxYPSIiLHdlPSIiLHhlPSIiLEZlPSIiLFplPSIiLFZlPSIiLFVlPSIiLFN0PUpmKEguaGVhZGVyKTtTdC5sZW5ndGgmJih3ZT1TdFswXSxWZT1TdFsxXSxGZT1TdFsyXSk7dmFyIEl0PUpmKEguZm9vdGVyKTtyZXR1cm4g''@;'; put 'put ''SXQubGVuZ3RoJiYoeGU9SXRbMF0sVWU9SXRbMV0sWmU9SXRbMl0pLHdlJiZyZS5wdXNoKCI8b2RkSGVhZGVyPiIrT3Iod2UpKyI8L29kZEhlYWRlcj4iKSx4ZSYmcmUucHVzaCgiPG9kZEZvb3Rlcj4iK09yKHhlKSsiPC9vZGRGb290ZXI+IiksKFplIT14ZXx8RmUhPXdlKSYmKFgrPScgZGlm''@;'; put 'put ''ZmVyZW50T2RkRXZlbj0iMSInLHJlLnB1c2goIjxldmVuSGVhZGVyPiIrT3IoRmUpKyI8L2V2ZW5IZWFkZXI+IikscmUucHVzaCgiPGV2ZW5Gb290ZXI+IitPcihaZSkrIjwvZXZlbkZvb3Rlcj4iKSksKFVlIT14ZXx8VmUhPXdlKSYmKFgrPScgZGlmZmVyZW50Rmlyc3Q9IjEiJyxyZS5wdXNo''@;'; put 'put ''KCI8Zmlyc3RIZWFkZXI+IitPcihWZSkrIjwvZmlyc3RIZWFkZXI+IikscmUucHVzaCgiPGZpcnN0Rm9vdGVyPiIrT3IoVWUpKyI8L2ZpcnN0Rm9vdGVyPiIpKSxyZS5sZW5ndGg/IjxoZWFkZXJGb290ZXIiK1grIj4iK3JlLmpvaW4oIiIpKyI8L2hlYWRlckZvb3Rlcj4iOiIifShRdCksVm4u''@;'; put 'put ''bGVuZ3RoJiYoeGVbeGUubGVuZ3RoXT1Wbil9aWYoKG51bGwhPVVlWyIhcm93QnJlYWtzIl18fFF0JiZRdC5yb3dCcmVha3MpJiYoeGVbeGUubGVuZ3RoXT1mdW5jdGlvbiB2QShIKXtpZigwPT1ILmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIHJlPVsnPHJvd0JyZWFrcyBjb3VudD0iJytILmxl''@;'; put 'put ''bmd0aCsnIiBtYW51YWxCcmVha0NvdW50PSInK0gubGVuZ3RoKyciPiddLFg9MDtYPEgubGVuZ3RoOysrWClyZS5wdXNoKCc8YnJrIGlkPSInK0hbWF0uUisnIiBtYW49IjEiLz4nKTtyZXR1cm4gcmUuam9pbigiIikrIjwvcm93QnJlYWtzPiJ9KFVlWyIhcm93QnJlYWtzIl18fFF0LnJvd0Jy''@;'; put 'put ''ZWFrcykpLChudWxsIT1VZVsiIWNvbEJyZWFrcyJdfHxRdCYmUXQuY29sQnJlYWtzKSYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24gQUEoSCl7aWYoMD09SC5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciByZT1bJzxjb2xCcmVha3MgY291bnQ9IicrSC5sZW5ndGgrJyIgbWFudWFsQnJlYWtDb3Vu''@;'; put 'put ''dD0iJytILmxlbmd0aCsnIj4nXSxYPTA7WDxILmxlbmd0aDsrK1gpcmUucHVzaCgnPGJyayBpZD0iJytIW1hdLkMrJyIgbWFuPSIxIi8+Jyk7cmV0dXJuIHJlLmpvaW4oIiIpKyI8L2NvbEJyZWFrcz4ifShVZVsiIWNvbEJyZWFrcyJdfHxRdC5jb2xCcmVha3MpKSwoIXJlfHxyZS5pZ25vcmVF''@;'; put 'put ''Q3x8bnVsbD09cmUuaWdub3JlRUMpJiYoeGVbeGUubGVuZ3RoXT1HbygiaWdub3JlZEVycm9ycyIsU2koImlnbm9yZWRFcnJvciIsbnVsbCx7bnVtYmVyU3RvcmVkQXNUZXh0OjEsc3FyZWY6U3R9KSkpLFVlWyIhY2hhcnRzIl0mJlB0LnB1c2guYXBwbHkoUHQsVWVbIiFjaGFydHMiXSksVWVb''@;'; put 'put ''IiFpbWFnZXMiXSYmUHQucHVzaC5hcHBseShQdCxVZVsiIWltYWdlcyJdKSxVZVsiIXNoYXBlcyJdJiZQdC5wdXNoLmFwcGx5KFB0LFVlWyIhc2hhcGVzIl0pLFB0Lmxlbmd0aD4wJiYoSW49YnQod2UsLTEsIi4uL2RyYXdpbmdzL2RyYXdpbmciKyhIKzEpKyIueG1sIixkdC5EUkFXKSx4ZVt4''@;'; put 'put ''ZS5sZW5ndGhdPVNpKCJkcmF3aW5nIixudWxsLHsicjppZCI6InJJZCIrSW59KSxVZVsiIWRyYXdpbmciXT1QdCksKFVlWyIhY29tbWVudHMiXS5sZW5ndGg+MHx8KFVlWyIhY29udHJvbHMiXXx8W10pLmxlbmd0aD4wKSYmKEluPWJ0KHdlLC0xLCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nIiso''@;'; put 'put ''SCsxKSsiLnZtbCIsZHQuVk1MKSx4ZVt4ZS5sZW5ndGhdPVNpKCJsZWdhY3lEcmF3aW5nIixudWxsLHsicjppZCI6InJJZCIrSW59KSxVZVsiIWxlZ2FjeSJdPUluKSxVZVsiIXByaW50Il0mJlVlWyIhcHJpbnQiXS5pbWFnZXMpe3ZhciBJcj1VZVsiIXByaW50Il0uaW1hZ2VzLGlpPTA7WyJo''@;'; put 'put ''ZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKHlyKXshSXJbeXJdfHxbIm9kZCIsImV2ZW4iLCJmaXJzdCJdLmZvckVhY2goZnVuY3Rpb24ob2kpeyFJclt5cl1bb2ldfHxbImxlZnQiLCJyaWdodCIsImNlbnRlciJdLmZvckVhY2goZnVuY3Rpb24oTXIpe2lmKEFycmF5LmlzQXJy''@;'; put 'put ''YXkoSXJbeXJdW29pXVtNcl0pKWZvcih2YXIgV3I9MDtXcjxJclt5cl1bb2ldW01yXS5sZW5ndGg7KytXcilJclt5cl1bb2ldW01yXVtXcl0mJihJclt5cl1bb2ldW01yXVtXcl0uX2NudD1paSsrKX0pfSl9KSxpaT4wJiYoSW49YnQod2UsLTEsIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmciKyhI''@;'; put 'put ''KzEpKyJIRi52bWwiLGR0LlZNTCkseGVbeGUubGVuZ3RoXT1TaSgibGVnYWN5RHJhd2luZ0hGIixudWxsLHsicjppZCI6InJJZCIrSW59KSxVZVsiIWxlZ2FjeUhGIl09SW4pfXJldHVybihVZVsiIXRhYmxlcyJdfHxbXSkubGVuZ3RoPjAmJih4ZVt4ZS5sZW5ndGhdPSc8dGFibGVQYXJ0cyBj''@;'; put 'put ''b3VudD0iJytVZVsiIXRhYmxlcyJdLmxlbmd0aCsnIj4nLFVlWyIhdGFibGVzIl0uZm9yRWFjaChmdW5jdGlvbih5cixvaSl7SW49YnQod2UsLTEsIi4uL3RhYmxlcy90YWJsZSIrKEgrMSkrIl8iK29pKyIueG1sIixkdC5UQUJMRSkseGVbeGUubGVuZ3RoXT0nPHRhYmxlUGFydCByOmlkPSJy''@;'; put 'put ''SWQnK0luKyciLz4nfSkseGVbeGUubGVuZ3RoXT0iPC90YWJsZVBhcnRzPiIpLHhlLmxlbmd0aD4xJiYoeGVbeGUubGVuZ3RoXT0iPC93b3Jrc2hlZXQ+Iix4ZVsxXT14ZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSkseGUuam9pbigiIil9ZnVuY3Rpb24gd1AoSCxyZSxYLHdlKXt2YXIgeGU9ZnVu''@;'; put 'put ''Y3Rpb24geVAoSCxyZSxYKXt2YXIgd2U9eGkoMTQ1KSx4ZT0oWFsiIXJvd3MiXXx8W10pW0hdfHx7fTt3ZS53cml0ZV9zaGlmdCg0LEgpLHdlLndyaXRlX3NoaWZ0KDQsMCk7dmFyIEZlPTMyMDt4ZS5ocHg/RmU9MjAqVWYoeGUuaHB4KTp4ZS5ocHQmJihGZT0yMCp4ZS5ocHQpLHdlLndyaXRl''@;'; put 'put ''X3NoaWZ0KDIsRmUpLHdlLndyaXRlX3NoaWZ0KDEsMCk7dmFyIFplPTA7eGUubGV2ZWwmJihaZXw9eGUubGV2ZWwpLHhlLmhpZGRlbiYmKFplfD0xNiksKHhlLmhweHx8eGUuaHB0KSYmKFplfD0zMiksd2Uud3JpdGVfc2hpZnQoMSxaZSksd2Uud3JpdGVfc2hpZnQoMSwwKTt2YXIgVmU9MCxV''@;'; put 'put ''ZT13ZS5sO3dlLmwrPTQ7Zm9yKHZhciBTdD17cjpILGM6MH0sSXQ9MDtJdDwxNjsrK0l0KWlmKCEocmUucy5jPkl0KzE8PDEwfHxyZS5lLmM8SXQ8PDEwKSl7Zm9yKHZhciBQdD0tMSxRdD0tMSxhbj1JdDw8MTA7YW48SXQrMTw8MTA7KythbilTdC5jPWFuLChBcnJheS5pc0FycmF5KFgpPyhY''@;'; put 'put ''W1N0LnJdfHxbXSlbU3QuY106WFtRMChTdCldKSYmKFB0PDAmJihQdD1hbiksUXQ9YW4pO1B0PDB8fCgrK1ZlLHdlLndyaXRlX3NoaWZ0KDQsUHQpLHdlLndyaXRlX3NoaWZ0KDQsUXQpKX12YXIgTHQ9d2UubDtyZXR1cm4gd2UubD1VZSx3ZS53cml0ZV9zaGlmdCg0LFZlKSx3ZS5sPUx0LHdl''@;'; put 'put ''Lmxlbmd0aD53ZS5sP3dlLnNsaWNlKDAsd2UubCk6d2V9KHdlLFgscmUpOyh4ZS5sZW5ndGg+MTd8fChyZVsiIXJvd3MiXXx8W10pW3dlXSkmJkMwKEgsIkJydFJvd0hkciIseGUpfXZhciBDNj1iaCxiUD1IcDtmdW5jdGlvbiB4QShIKXtyZXR1cm5bXzQoSCksZTIoSCksIm4iXX12YXIgYnI9''@;'; put 'put ''YmgsQ1A9SHAsel89WyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXSxRND1bIkFueSIsIldob2xlIiwiRGVjaW1hbCIsIkxpc3QiLCJEYXRlIiwiVGltZSIsIkxlbmd0aCIsIkN1c3RvbSJdLFRBPVsiSU4iLCJPVCIsIkVRIiwiTkUiLCJHVCIsIkxUIiwi''@;'; put 'put ''R0UiLCJMRSJdO2Z1bmN0aW9uIEh4KEgpe3ZhciByZT14aSg0KSxYPVtyZV0sd2U9UTQuaW5kZXhPZihILnQpO2lmKHdlPDApdGhyb3cgbmV3IEVycm9yKCJCYWQgdmFsaWRhdGlvbjogdW5yZWNvZ25pemVkIHR5cGUgIitILnQpO3ZhciBGZT1UQS5pbmRleE9mKEgub3ApO3N3aXRjaCh3ZSl7''@;'; put 'put ''Y2FzZSAwOmNhc2UgMzpjYXNlIDc6RmU9MDticmVhaztkZWZhdWx0OmlmKC0xPT1GZSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBEYXRhIFZhbGlkYXRpb24gdHlwZSAiK0gub3ArIiBmb3IgIitILnQpfXJlLndyaXRlX3NoaWZ0KDEsMHx3ZSkscmUud3JpdGVfc2hpZnQoMSwxKSxyZS53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDEyfEZlPDw0KSxyZS53cml0ZV9zaGlmdCgxLDApLFgucHVzaChmdW5jdGlvbiB1YihIKXt2YXIgcmU9SC5zcGxpdCgvXHMqLFxzKi8pLFg9eGkoNCk7WC53cml0ZV9zaGlmdCg0LHJlLmxlbmd0aCk7dmFyIHdlPVtYXTtyZXR1cm4gcmUuZm9yRWFjaChmdW5jdGlvbih4ZSl7d2Uu''@;'; put 'put ''cHVzaChIcChlYSh4ZSkpKX0pLFYod2UpfSgic3RyaW5nIj09dHlwZW9mIEgucmVmP0gucmVmOkFhKEgucmVmKSkpO3ZhciBaZT14aSgxNik7WmUud3JpdGVfc2hpZnQoNCw0Mjk0OTY3Mjk1KSxaZS53cml0ZV9zaGlmdCg0LDQyOTQ5NjcyOTUpLFplLndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5''@;'; put 'put ''NSksWmUud3JpdGVfc2hpZnQoNCw0Mjk0OTY3Mjk1KSxYLnB1c2goWmUpO3ZhciBWZT14aSg4KTtWZS53cml0ZV9zaGlmdCg0LDApLFZlLndyaXRlX3NoaWZ0KDQsMCk7dmFyIFVlPTE7c3dpdGNoKEgudCl7Y2FzZSJBbnkiOlgucHVzaChWZSksWC5wdXNoKFZlKTticmVhaztjYXNlIkRlY2lt''@;'; put 'put ''YWwiOmNhc2UiTGVuZ3RoIjpjYXNlIldob2xlIjppZihudWxsIT1ILnZ8fG51bGwhPUguZilYLnB1c2goIm51bWJlciI9PXR5cGVvZiBILnY/Tm0oSC52KTpWbShudWxsPT1ILnY/SC5mOkgudikpO2Vsc2V7aWYobnVsbD09SC5taW58fG51bGw9PUgubWF4KXRocm93IlVuc3VwcG9ydGVkIERh''@;'; put 'put ''dGEgVmFsaWRhdGlvbjogYHZgIG9yIGBtaW5gK2BtYXhgIHJlcXVpcmVkIGZvciBUeXBlICIrSC50O1gucHVzaCgibnVtYmVyIj09dHlwZW9mIEgubWluP05tKEgubWluKTpWbShILm1pbikpLFgucHVzaCgibnVtYmVyIj09dHlwZW9mIEgubWF4P05tKEgubWF4KTpWbShILm1heCkpLFVlPTJ9''@;'; put 'put ''YnJlYWs7Y2FzZSJMaXN0IjppZihudWxsIT1ILmwpe1gucHVzaChiXyhILmwuam9pbigiLCIpKSk7YnJlYWt9Y2FzZSJDdXN0b20iOmlmKCJudWxsIiE9SC5mKXtYLnB1c2goVm0oSC5mKSk7YnJlYWt9dGhyb3ciVW5zdXBwb3J0ZWQgRGF0YSBWYWxpZGF0aW9uOiBgZmAiKygiTGlzdCI9PUgu''@;'; put 'put ''dD8iIG9yIGBsYCI6IiIpKyIgcmVxdWlyZWQgZm9yIFR5cGUgIitILnQ7ZGVmYXVsdDp0aHJvdyJYTFNCIGRvZXMgbm90IHN1cHBvcnQgRGF0YSBWYWxpZGF0aW9uIHR5cGUgIitILnR9cmV0dXJuIDE9PVVlJiZYLnB1c2goVmUpLFYoWCl9ZnVuY3Rpb24gVngoSCxyZSxYLHdlLHhlLEZlLFpl''@;'; put 'put ''KXtpZih2b2lkIDA9PT1yZS52JiZudWxsPT1yZS5zfHwieiI9PT1yZS50JiYheGUuc2hlZXRTdHVicylyZXR1cm4hMTt2YXIgVmU9IiI7c3dpdGNoKHJlLnQpe2Nhc2UiYiI6VmU9cmUudj8iMSI6IjAiO2JyZWFrO2Nhc2UiZCI6KHJlPWxuKHJlKSkuej1yZS56fHxGLl90YWJsZVsxNF0scmUu''@;'; put 'put ''dj1jdChwbihyZS52KSkscmUudD0ibiI7YnJlYWs7Y2FzZSJuIjpjYXNlImUiOlZlPSIiK3JlLnY7YnJlYWs7ZGVmYXVsdDpWZT1yZS52fXZhciBVZT17cjpYLGM6d2V9O3N3aXRjaChVZS5zPXJjKHhlLmNlbGxYZnMseGUuY2VsbFN0eWxlWGZzLHJlLHhlKSxyZS5sJiZGZVsiIWxpbmtzIl0u''@;'; put 'put ''cHVzaChbUTAoVWUpLHJlLmxdKSxyZS5jJiZGZVsiIWNvbW1lbnRzIl0ucHVzaChbUTAoVWUpLHJlLmNdKSxyZS50KXtjYXNlInMiOmNhc2Uic3RyIjppZih4ZS5ib29rU1NUKXtpZihWZT1FZCh4ZS5TdHJpbmdzLHJlLnYscmUuUj9yZS5yPXQ2KHJlLlIpOm51bGwseGUucmV2U3RyaW5ncyks''@;'; put 'put ''cmUuUilmb3IodmFyIFN0PTA7U3Q8cmUuUi5sZW5ndGg7KytTdClyZS5SW1N0XS5zJiZyYyh4ZS5jZWxsWGZzLHhlLmNlbGxTdHlsZVhmcyx7dDoibiIsdjowLHM6cmUuUltTdF0uc30seGUpO1VlLnQ9InMiLFVlLnY9VmUsWmU/QzAoSCwiQnJ0U2hvcnRJc3N0IixmdW5jdGlvbiBFQShILHJl''@;'; put 'put ''LFgpe3JldHVybiBudWxsPT1YJiYoWD14aSg4KSksRmYocmUsWCksWC53cml0ZV9zaGlmdCg0LHJlLnYpLFh9KDAsVWUpKTpDMChILCJCcnRDZWxsSXNzdCIsZnVuY3Rpb24gdDcoSCxyZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9eGkoMTIpKSxCcChyZSxYKSxYLndyaXRlX3NoaWZ0KDQscmUu''@;'; put 'put ''diksWH0oMCxVZSkpfWVsc2UgVWUudD0ic3RyIixaZT9DMChILCJCcnRTaG9ydFN0IixmdW5jdGlvbiB4dChILHJlLFgpe3JldHVybiBudWxsPT1YJiYoWD14aSg4KzQqSC52Lmxlbmd0aCkpLEZmKHJlLFgpLHN1KEgudixYKSxYLmxlbmd0aD5YLmw/WC5zbGljZSgwLFgubCk6WH0ocmUsVWUp''@;'; put 'put ''KTpDMChILCJCcnRDZWxsU3QiLGZ1bmN0aW9uIG43KEgscmUsWCl7cmV0dXJuIG51bGw9PVgmJihYPXhpKDEyKzQqSC52Lmxlbmd0aCkpLEJwKHJlLFgpLHN1KEgudixYKSxYLmxlbmd0aD5YLmw/WC5zbGljZSgwLFgubCk6WH0ocmUsVWUpKTtyZXR1cm4hMDtjYXNlIm4iOnJldHVybiByZS52''@;'; put 'put ''PT0oMHxyZS52KSYmcmUudj4tMWUzJiZyZS52PDFlMz9aZT9DMChILCJCcnRTaG9ydFJrIixmdW5jdGlvbiBXNChILHJlLFgpe3JldHVybiBudWxsPT1YJiYoWD14aSg4KSksRmYocmUsWCksVk0oSC52LFgpLFh9KHJlLFVlKSk6QzAoSCwiQnJ0Q2VsbFJrIixmdW5jdGlvbiBSaChILHJlLFgp''@;'; put 'put ''e3JldHVybiBudWxsPT1YJiYoWD14aSgxMikpLEJwKHJlLFgpLFZNKEgudixYKSxYfShyZSxVZSkpOlplP0MwKEgsIkJydFNob3J0UmVhbCIsZnVuY3Rpb24gbDUoSCxyZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9eGkoMTIpKSxGZihyZSxYKSx1ZihILnYsWCksWH0ocmUsVWUpKTpDMChILCJC''@;'; put 'put ''cnRDZWxsUmVhbCIsZnVuY3Rpb24gRHgoSCxyZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9eGkoMTYpKSxCcChyZSxYKSx1ZihILnYsWCksWH0ocmUsVWUpKSwhMDtjYXNlImIiOnJldHVybiBVZS50PSJiIixaZT9DMChILCJCcnRTaG9ydEJvb2wiLGZ1bmN0aW9uIHQ1KEgscmUsWCl7cmV0dXJu''@;'; put 'put ''IG51bGw9PVgmJihYPXhpKDUpKSxGZihyZSxYKSxYLndyaXRlX3NoaWZ0KDEsSC52PzE6MCksWH0ocmUsVWUpKTpDMChILCJCcnRDZWxsQm9vbCIsZnVuY3Rpb24gcTgoSCxyZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9eGkoOSkpLEJwKHJlLFgpLFgud3JpdGVfc2hpZnQoMSxILnY/MTowKSxY''@;'; put 'put ''fShyZSxVZSkpLCEwO2Nhc2UiZSI6cmV0dXJuIFVlLnQ9ImUiLFplP0MwKEgsIkJydFNob3J0RXJyb3IiLGZ1bmN0aW9uIG81KEgscmUsWCl7cmV0dXJuIG51bGw9PVgmJihYPXhpKDgpKSxGZihyZSxYKSxYLndyaXRlX3NoaWZ0KDEsSC52KSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDApLFh9KHJlLFVlKSk6QzAoSCwiQnJ0Q2VsbEVycm9yIixmdW5jdGlvbiBTNihILHJlLFgpe3JldHVybiBudWxsPT1YJiYoWD14aSg5KSksQnAocmUsWCksWC53cml0ZV9zaGlmdCgxLEgudiksWH0ocmUsVWUpKSwhMH1yZXR1cm4gWmU/QzAoSCwiQnJ0U2hvcnRCbGFuayIsZnVu''@;'; put 'put ''Y3Rpb24gR2koSCxyZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9eGkoNCkpLEZmKHJlLFgpfSgwLFVlKSk6QzAoSCwiQnJ0Q2VsbEJsYW5rIixmdW5jdGlvbiBNQShILHJlLFgpe3JldHVybiBudWxsPT1YJiYoWD14aSg4KSksQnAocmUsWCl9KDAsVWUpKSwhMH1mdW5jdGlvbiBUUChILHJlLFgs''@;'; put 'put ''d2Upe3ZhciB4ZT12MSgpLEZlPVguU2hlZXROYW1lc1tIXSxaZT1YLlNoZWV0c1tGZV18fHt9LFZlPUZlO3RyeXtYJiZYLldvcmtib29rJiYoVmU9WC5Xb3JrYm9vay5TaGVldHNbSF0uQ29kZU5hbWV8fFZlKX1jYXRjaChTdCl7fXZhciBVZT1lYShaZVsiIXJlZiJdfHwiQTEiKTtpZihVZS5l''@;'; put 'put ''LmM+MTYzODN8fFVlLmUucj4xMDQ4NTc1KXtpZihyZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJSYW5nZSAiKyhaZVsiIXJlZiJdfHwiQTEiKSsiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOlhGRDEwNDg1NzYiKTtVZS5lLmM9TWF0aC5taW4oVWUuZS5jLDE2MzgzKSxVZS5lLnI9TWF0aC5taW4o''@;'; put 'put ''VWUuZS5jLDEwNDg1NzUpfXJldHVybiBaZVsiIWxpbmtzIl09W10sWmVbIiFjb21tZW50cyJdPVtdLEMwKHhlLCJCcnRCZWdpblNoZWV0IiksKFgudmJhcmF3fHxaZVsiIW91dGxpbmUiXSkmJkMwKHhlLCJCcnRXc1Byb3AiLGZ1bmN0aW9uIGljKEgscmUsWCl7bnVsbD09WCYmKFg9eGkoODQr''@;'; put 'put ''NCpILmxlbmd0aCkpO3ZhciB3ZT0xOTI7cmUmJihyZS5hYm92ZSYmKHdlJj0tNjUpLHJlLmxlZnQmJih3ZSY9LTEyOSkpLFgud3JpdGVfc2hpZnQoMSx3ZSk7Zm9yKHZhciB4ZT0xO3hlPDM7Kyt4ZSlYLndyaXRlX3NoaWZ0KDEsMCk7cmV0dXJuIEtnKHthdXRvOjF9LFgpLFgud3JpdGVfc2hp''@;'; put 'put ''ZnQoLTQsLTEpLFgud3JpdGVfc2hpZnQoLTQsLTEpLE5NKEgsWCksWC5zbGljZSgwLFgubCl9KFZlLFplWyIhb3V0bGluZSJdKSksQzAoeGUsIkJydFdzRGltIixiUChVZSkpLGZ1bmN0aW9uIFp4KEgscmUsWCl7QzAoSCwiQnJ0QmVnaW5Xc1ZpZXdzIiksQzAoSCwiQnJ0QmVnaW5Xc1ZpZXci''@;'; put 'put ''LGZ1bmN0aW9uIFNQKEgscmUsWCl7bnVsbD09WCYmKFg9eGkoMzApKTt2YXIgd2U9OTI0O3JldHVybigoKHJlfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLlJUTCYmKHdlfD0zMiksbnIoSFsiIWdyaWRsaW5lcyJdKSYmKHdlJj0tNSksbnIoKCgocmV8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSku''@;'; put 'put ''Z3JpZCkmJih3ZSY9LTUpLFgud3JpdGVfc2hpZnQoMix3ZSksWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDQsMCksWC53cml0ZV9zaGlmdCgxLDApLFgud3JpdGVfc2hpZnQoMSwwKSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlmdCgy''@;'; put 'put ''LDEwMCksWC53cml0ZV9zaGlmdCgyLDApLFgud3JpdGVfc2hpZnQoMiwwKSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlmdCg0LDApLFh9KHJlLFgpKSxyZVsiIWZyZWV6ZSJdJiZDMChILCJCcnRQYW5lIixmdW5jdGlvbiBzNShIKXt2YXIgcmU9cG8oSFsiIWZyZWV6ZSJdKSxYPXhp''@;'; put 'put ''KDI5KTtyZXR1cm4gWC53cml0ZV9zaGlmdCg4LHJlLmMsImYiKSxYLndyaXRlX3NoaWZ0KDgscmUuciwiZiIpLFgud3JpdGVfc2hpZnQoNCxyZS5yKSxYLndyaXRlX3NoaWZ0KDQscmUuYyksWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoMSwzKSxYfShyZSkpLHJlWyIhc2VsIl0m''@;'; put 'put ''JkMwKEgsIkJydFNlbCIsZnVuY3Rpb24gWTQoSCxyZSl7dmFyIFg9eGkoMzYpLHdlPUguY2VsbDtpZighd2Upe2lmKCFILnJhbmdlKXRocm93IG5ldyBFcnJvcigiTXVzdCBzcGVjaWZ5IGEgc2VsZWN0aW9uIGNlbGwgb3IgcmFuZ2UiKTt3ZT1RMChucyhILnJhbmdlLnJlcGxhY2UoL1xzLiok''@;'; put 'put ''LywiIikpLnMpfXZhciB4ZT0ic3RyaW5nIj09dHlwZW9mIHdlP3BvKHdlKTp3ZTtpZihyZSl7dmFyIEZlPSJzdHJpbmciPT10eXBlb2YgcmU/cG8ocmUpOnJlO1gud3JpdGVfc2hpZnQoNCx4ZS5yPj1GZS5yJiZ4ZS5jPj1GZS5jPzA6eGUucj49RmUuciYmeGUuYzxGZS5jPzI6eGUucjxGZS5y''@;'; put 'put ''JiZ4ZS5jPj1GZS5jPzE6Myl9ZWxzZSBYLndyaXRlX3NoaWZ0KDQsMyk7cmV0dXJuIFgud3JpdGVfc2hpZnQoNCx4ZS5yKSxYLndyaXRlX3NoaWZ0KDQseGUuYyksWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoNCwxKSxYLndyaXRlX3NoaWZ0KDQseGUuciksWC53cml0ZV9zaGlm''@;'; put 'put ''dCg0LHhlLnIpLFgud3JpdGVfc2hpZnQoNCx4ZS5jKSxYLndyaXRlX3NoaWZ0KDQseGUuYyksWH0ocmVbIiFzZWwiXSxyZVsiIWZyZWV6ZSJdKSksQzAoSCwiQnJ0RW5kV3NWaWV3IiksQzAoSCwiQnJ0RW5kV3NWaWV3cyIpfSh4ZSxaZSxYLldvcmtib29rKSxmdW5jdGlvbiBNNihILHJlKXsh''@;'; put 'put ''cmV8fCFyZVsiIWNvbHMiXXx8KEMwKEgsIkJydEJlZ2luQ29sSW5mb3MiKSxyZVsiIWNvbHMiXS5mb3JFYWNoKGZ1bmN0aW9uKFgsd2Upe1gmJkMwKEgsIkJydENvbEluZm8iLGZ1bmN0aW9uIGtQKEgscmUsWCl7bnVsbD09WCYmKFg9eGkoMTgpKTt2YXIgd2U9eGQoSCxyZSk7WC53cml0ZV9z''@;'; put 'put ''aGlmdCgtNCxIKSxYLndyaXRlX3NoaWZ0KC00LEgpLFgud3JpdGVfc2hpZnQoNCwyNTYqKHdlLndpZHRofHwxMCkpLFgud3JpdGVfc2hpZnQoNCwwKTt2YXIgeGU9MDtyZXR1cm4gcmUuaGlkZGVuJiYoeGV8PTEpLCJudW1iZXIiPT10eXBlb2Ygd2Uud2lkdGgmJih4ZXw9MikscmUubGV2ZWwm''@;'; put 'put ''Jih4ZXw9cmUubGV2ZWw8PDgpLFgud3JpdGVfc2hpZnQoMix4ZSksWH0od2UsWCkpfSksQzAoSCwiQnJ0RW5kQ29sSW5mb3MiKSl9KHhlLFplKSxmdW5jdGlvbiBHXyhILHJlLFgsd2Upe3ZhciB4ZT1lYShyZVsiIXJlZiJdfHwiQTEiKSxaZT0iIixWZT1bXTtDMChILCJCcnRCZWdpblNoZWV0''@;'; put 'put ''RGF0YSIpO3ZhciBVZT1BcnJheS5pc0FycmF5KHJlKSxTdD14ZS5lLnI7cmVbIiFyb3dzIl0mJihTdD1NYXRoLm1heCh4ZS5lLnIscmVbIiFyb3dzIl0ubGVuZ3RoLTEpKTtmb3IodmFyIEl0PXhlLnMucjtJdDw9U3Q7KytJdCl7WmU9aGEoSXQpLHdQKEgscmUseGUsSXQpO3ZhciBQdD0hMTtp''@;'; put 'put ''ZihJdDw9eGUuZS5yKWZvcih2YXIgUXQ9eGUucy5jO1F0PD14ZS5lLmM7KytRdCl7SXQ9PT14ZS5zLnImJihWZVtRdF09TGwoUXQpKTt2YXIgYW49VWU/KHJlW0l0XXx8W10pW1F0XTpyZVtWZVtRdF0rWmVdO1B0PSEhYW4mJlZ4KEgsYW4sSXQsUXQsd2UscmUsUHQpfX1DMChILCJCcnRFbmRT''@;'; put 'put ''aGVldERhdGEiKX0oeGUsWmUsMCxyZSksZnVuY3Rpb24geFAoSCxyZSl7IXJlWyIhcHJvdGVjdCJdfHxDMChILCJCcnRTaGVldFByb3RlY3Rpb24iLGZ1bmN0aW9uIFZpKEgscmUpe3JldHVybiBudWxsPT1yZSYmKHJlPXhpKDY2KSkscmUud3JpdGVfc2hpZnQoMixILnBhc3N3b3JkP0xiKEgu''@;'; put 'put ''cGFzc3dvcmQpOjApLHJlLndyaXRlX3NoaWZ0KDQsMSksW1sib2JqZWN0cyIsITFdLFsic2NlbmFyaW9zIiwhMV0sWyJmb3JtYXRDZWxscyIsITBdLFsiZm9ybWF0Q29sdW1ucyIsITBdLFsiZm9ybWF0Um93cyIsITBdLFsiaW5zZXJ0Q29sdW1ucyIsITBdLFsiaW5zZXJ0Um93cyIsITBdLFsi''@;'; put 'put ''aW5zZXJ0SHlwZXJsaW5rcyIsITBdLFsiZGVsZXRlQ29sdW1ucyIsITBdLFsiZGVsZXRlUm93cyIsITBdLFsic2VsZWN0TG9ja2VkQ2VsbHMiLCExXSxbInNvcnQiLCEwXSxbImF1dG9GaWx0ZXIiLCEwXSxbInBpdm90VGFibGVzIiwhMF0sWyJzZWxlY3RVbmxvY2tlZENlbGxzIiwhMV1dLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oWCl7cmUud3JpdGVfc2hpZnQoNCxYWzFdP251bGw9PUhbWFswXV18fEhbWFswXV0/MDoxOm51bGwhPUhbWFswXV0mJkhbWFswXV0/MDoxKX0pLHJlfShyZVsiIXByb3RlY3QiXSkpfSh4ZSxaZSksZnVuY3Rpb24gbjEoSCxyZSxYLHdlKXtpZihyZVsiIWF1dG9maWx0''@;'; put 'put ''ZXIiXSl7dmFyIHhlPXJlWyIhYXV0b2ZpbHRlciJdLEZlPSJzdHJpbmciPT10eXBlb2YgeGUucmVmP3hlLnJlZjpBYSh4ZS5yZWYpO1guV29ya2Jvb2t8fChYLldvcmtib29rPXtTaGVldHM6W119KSxYLldvcmtib29rLk5hbWVzfHwoWC5Xb3JrYm9vay5OYW1lcz1bXSk7dmFyIFplPVguV29y''@;'; put 'put ''a2Jvb2suTmFtZXMsVmU9bnMoRmUpO1ZlLnMucj09VmUuZS5yJiYoVmUuZS5yPW5zKHJlWyIhcmVmIl0pLmUucixGZT1BYShWZSkpO2Zvcih2YXIgVWU9MDtVZTxaZS5sZW5ndGg7KytVZSl7dmFyIFN0PVplW1VlXTtpZigiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIj09U3QuTmFtZSYmU3QuU2hl''@;'; put 'put ''ZXQ9PXdlKXtTdC5SZWY9IiciK1guU2hlZXROYW1lc1t3ZV0rIichIitGZTticmVha319VWU9PVplLmxlbmd0aCYmWmUucHVzaCh7TmFtZToiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIixTaGVldDp3ZSxSZWY6IiciK1guU2hlZXROYW1lc1t3ZV0rIichIitGZX0pLEMwKEgsIkJydEJlZ2luQUZp''@;'; put 'put ''bHRlciIsSHAoZWEoRmUpKSksQzAoSCwiQnJ0RW5kQUZpbHRlciIpfX0oeGUsWmUsWCxIKSxmdW5jdGlvbiBqRyhILHJlKXshcmV8fCFyZVsiIW1lcmdlcyJdfHwoQzAoSCwiQnJ0QmVnaW5NZXJnZUNlbGxzIixmdW5jdGlvbiBMMChILHJlKXtyZXR1cm4gbnVsbD09cmUmJihyZT14aSg0KSks''@;'; put 'put ''cmUud3JpdGVfc2hpZnQoNCxIKSxyZX0ocmVbIiFtZXJnZXMiXS5sZW5ndGgpKSxyZVsiIW1lcmdlcyJdLmZvckVhY2goZnVuY3Rpb24oWCl7QzAoSCwiQnJ0TWVyZ2VDZWxsIixDUChYKSl9KSxDMChILCJCcnRFbmRNZXJnZUNlbGxzIikpfSh4ZSxaZSksZnVuY3Rpb24gengoSCxyZSl7aWYo''@;'; put 'put ''cmUpe0MwKEgsIkJydEJlZ2luRFZhbHMiLGZ1bmN0aW9uIFU0KEgscmUpe251bGw9PXJlJiYocmU9eGkoMTgpKSxyZS53cml0ZV9zaGlmdCgyLDApLHJlLndyaXRlX3NoaWZ0KDQsMCkscmUud3JpdGVfc2hpZnQoNCwwKSxyZS53cml0ZV9zaGlmdCg0LDApO2Zvcih2YXIgWD0wLHdlPTA7d2U8''@;'; put 'put ''SC5sZW5ndGg7Kyt3ZSkoKEhbd2VdfHx7fSkucmVmfHx7fSkucyYmSFt3ZV0ucmVmLnMuYzwwfHwrK1g7cmV0dXJuIHJlLndyaXRlX3NoaWZ0KDQsWCkscmV9KHJlKSk7Zm9yKHZhciBYPTA7WDxyZS5sZW5ndGg7KytYKSgocmVbWF18fHt9KS5yZWZ8fHt9KS5zJiZyZVtYXS5yZWYucy5jPDB8''@;'; put 'put ''fEMwKEgsIkJydERWYWwiLEh4KHJlW1hdKSk7QzAoSCwiQnJ0RW5kRFZhbHMiKX19KHhlLFplWyIhdmFsaWRhdGlvbnMiXSksZnVuY3Rpb24gangoSCxyZSxYKXtyZVsiIWxpbmtzIl0uZm9yRWFjaChmdW5jdGlvbih3ZSl7aWYod2VbMV0uVGFyZ2V0KXt2YXIgeGU9YnQoWCwtMSx3ZVsxXS5U''@;'; put 'put ''YXJnZXQucmVwbGFjZSgvIy4qJC8sIiIpLGR0LkhMSU5LKTtDMChILCJCcnRITGluayIsZnVuY3Rpb24gaDEoSCxyZSl7dmFyIFg9eGkoNTArNCooSFsxXS5UYXJnZXQubGVuZ3RoKyhIWzFdLlRvb2x0aXB8fCIiKS5sZW5ndGgpKTtIcCh7czpwbyhIWzBdKSxlOnBvKEhbMF0pfSxYKSxGcCgi''@;'; put 'put ''cklkIityZSxYKTt2YXIgd2U9SFsxXS5UYXJnZXQuaW5kZXhPZigiIyIpO3JldHVybiBzdSgoLTE9PXdlPyIiOkhbMV0uVGFyZ2V0LnNsaWNlKHdlKzEpKXx8IiIsWCksc3UoSFsxXS5Ub29sdGlwfHwiIixYKSxzdSgiIixYKSxYLnNsaWNlKDAsWC5sKX0od2UseGUpKX19KSxkZWxldGUgcmVb''@;'; put 'put ''IiFsaW5rcyJdfSh4ZSxaZSx3ZSksWmVbIiFtYXJnaW5zIl0mJkMwKHhlLCJCcnRNYXJnaW5zIixmdW5jdGlvbiBCeChILHJlKXtyZXR1cm4gbnVsbD09cmUmJihyZT14aSg0OCkpLERoKEgpLHpfLmZvckVhY2goZnVuY3Rpb24oWCl7dWYoSFtYXSxyZSl9KSxyZX0oWmVbIiFtYXJnaW5zIl0p''@;'; put 'put ''KSwoIXJlfHxyZS5pZ25vcmVFQ3x8bnVsbD09cmUuaWdub3JlRUMpJiZmdW5jdGlvbiBNUChILHJlKXshcmV8fCFyZVsiIXJlZiJdfHwoQzAoSCwiQnJ0QmVnaW5DZWxsSWdub3JlRUNzIiksQzAoSCwiQnJ0Q2VsbElnbm9yZUVDIixmdW5jdGlvbiAkMChIKXt2YXIgcmU9eGkoMjQpO3JldHVy''@;'; put 'put ''biByZS53cml0ZV9zaGlmdCg0LDQpLHJlLndyaXRlX3NoaWZ0KDQsMSksSHAoSCxyZSkscmV9KGVhKHJlWyIhcmVmIl0pKSksQzAoSCwiQnJ0RW5kQ2VsbElnbm9yZUVDcyIpKX0oeGUsWmUpLGZ1bmN0aW9uIEVQKEgscmUsWCx3ZSl7aWYocmVbIiFjb21tZW50cyJdLmxlbmd0aD4wKXt2YXIg''@;'; put 'put ''eGU9YnQod2UsLTEsIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmciKyhYKzEpKyIudm1sIixkdC5WTUwpO0MwKEgsIkJydExlZ2FjeURyYXdpbmciLEZwKCJySWQiK3hlKSkscmVbIiFsZWdhY3kiXT14ZX19KHhlLFplLEgsd2UpLEMwKHhlLCJCcnRFbmRTaGVldCIpLHhlLmVuZCgpfWZ1bmN0aW9u''@;'; put 'put ''IERBKEgpe3ZhciB3ZSxyZT1bXSxYPUgubWF0Y2goL148YzpudW1DYWNoZT4vKTsoSC5tYXRjaCgvPGM6cHQgaWR4PSIoXGQqKSI+KC4qPyk8XC9jOnB0Pi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXt2YXIgWmU9RmUubWF0Y2goLzxjOnB0IGlkeD0iKFxkKj8pIj48Yzp2PiguKik8''@;'; put 'put ''XC9jOnY+PFwvYzpwdD4vKTshWmV8fChyZVsrWmVbMV1dPVg/K1plWzJdOlplWzJdKX0pO3ZhciB4ZT1ncigoSC5tYXRjaCgvPGM6Zm9ybWF0Q29kZT4oW1xzXFNdKj8pPFwvYzpmb3JtYXRDb2RlPi8pfHxbIiIsIkdlbmVyYWwiXSlbMV0pO3JldHVybihILm1hdGNoKC88YzpmPiguKj8pPFwv''@;'; put 'put ''YzpmPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXt3ZT1GZS5yZXBsYWNlKC88Lio/Pi9nLCIiKX0pLFtyZSx4ZSx3ZV19ZHQuQ0hBUlQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnQiLGR0LkNI''@;'; put 'put ''QVJURVg9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTQvcmVsYXRpb25zaGlwcy9jaGFydEV4Ijt2YXIgV3g9LzwoPzpcdys6KT9jaGFydD4oW1xzXFNdKj8pPFwvKD86XHcrOik/Y2hhcnQ+LyxJUD0vPCg/Olx3KzopP3Bsb3RBcmVhPihbXHNcU10qPyk8XC8oPzpc''@;'; put 'put ''dys6KT9wbG90QXJlYT4vLFl4PS88KD86XHcrOik/bGVnZW5kPihbXHNcU10qPyk8XC8oPzpcdys6KT9sZWdlbmQ+LyxEUD0vPCg/Olx3KzopP3RpdGxlPihbXHNcU10qPyk8XC8oPzpcdys6KT90aXRsZT4vO2Z1bmN0aW9uIFV4KEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSl7dmFyIFVlPUZlfHx7''@;'; put 'put ''IiF0eXBlIjoiY2hhcnQifTtpZighSClyZXR1cm4gRmU7WmUmJlplLkFuY2hvciYmKFVlWyIhcG9zIl09U20oWmUuQW5jaG9yLFZlKSxVZVsiIXBvc1R5cGUiXT1aZS5BbmNob3IudHlwZS5yZXBsYWNlKC9BbmNob3IvLCIiKSxVZVsiIWFic3BvcyJdPVNtKFplLkFuY2hvcixWZSksVWVbIiFy''@;'; put 'put ''ZWxwb3MiXT1HRShaZS5BbmNob3IsVmUpKSxVZVsiIXBsb3QiXT1bXTt2YXIgU3Q9IiIsSXQ9IiIsUHQ9SC5tYXRjaChXeCk7UHQ/KFN0PUguc2xpY2UoMCxQdC5pbmRleCksSXQ9SC5zbGljZShQdC5pbmRleCtQdFswXS5sZW5ndGgpKTpTdD1JdD1IO3ZhciBRdD1bXSxhbj1TdC5tYXRjaCgv''@;'; put 'put ''PGM6bGFuZy4qPz4vKXx8SC5tYXRjaCgvPGM6bGFuZy4qPz4vKXx8SXQubWF0Y2goLzxjOmxhbmcuKj8+Lyk7cmV0dXJuIGFuJiYoVWVbIiFsYW5nIl09KHF0KGFuWzBdKXx8e30pLnZhbHx8ImVuLVVTIiksUHQmJigoUXQ9UHRbMV0ubWF0Y2goRFApKSYmZnVuY3Rpb24gdTUoSCxyZSl7dmFy''@;'; put 'put ''IFg9IiI7SC5tYXRjaCgvPGM6cmljaD4vKSYmSC5yZXBsYWNlKC88YTp0PihbXHNcU10qPyk8XC9hOnQ+L2csZnVuY3Rpb24od2UseGUpe1grPXhlfSkscmVbIiF0aXRsZSJdPVh8fCJDaGFydCBUaXRsZSJ9KFF0WzFdLFVlKSxmdW5jdGlvbiBIaShILHJlKXtpZihIKXt2YXIgWD0wLHdlPTAs''@;'; put 'put ''eGU9IkEiLEZlPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19O0gucmVwbGFjZSh6RyxmdW5jdGlvbihaZSxWZSl7dmFyIFVlPXt0OlZlLGM6WCx3OjAsc2VyOltdfSxTdD1bXSxJdD0oWmUubWF0Y2goLzxjOnNlci8pfHxbXSkuaW5kZXgsUHQ9SXQ/WmUuc2xpY2UoMCxJdCk6WmU7InNj''@;'; put 'put ''YXR0ZXIiPT1WZSYmKFN0PVplLm1hdGNoKC88YzpzY2F0dGVyU3R5bGUoW15cLz5dKilcLz4vbSkpJiZxdChTdFswXSksImJhciI9PVZlJiYoU3Q9WmUubWF0Y2goLzxjOmJhckRpcihbXlwvPl0qKVwvPi9tKSkmJihVZS5iYXJEaXI9ImJhciI9PXF0KFN0WzBdKS52YWw/ImgiOiJ2IiksKFN0''@;'; put 'put ''PVB0Lm1hdGNoKC88Yzpncm91cGluZyhbXlwvPl0qKVwvPi9tKSkmJihVZS5ncm91cGluZz1xdChTdFswXSkudmFsfHwic3RhbmRhcmQiKSwoWmUubWF0Y2goSWQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhbil7dmFyIENuPVtdLEx0PXt9LHp0PVtdO2lmKGFuLm1hdGNoKC88Yzp0eD4vKSl7''@;'; put 'put ''dmFyIGZuPURBKChhbi5tYXRjaCgvPGM6dHg+KFtcc1xTXSo/KTxcL2M6dHg+Lyl8fFtdKVsxXXx8IiIpfHxbXTtmblswXSYmZm5bMF1bMF0mJihMdC5uYW1lPWZuWzBdWzBdKSxmblsyXSYmKEx0Lm5hbWVyZWY9Zm5bMl0pfVsieFZhbCIsInlWYWwiLCJjYXQiLCJ2YWwiLCJidWJibGVTaXpl''@;'; put 'put ''Il0uZm9yRWFjaChmdW5jdGlvbihJbil7dmFyIFZuLFJuPWFuLm1hdGNoKG5ldyBSZWdFeHAoIjxjOiIrSW4rIj5bXFxzXFxTXSo/PFxcL2M6IitJbisiPiIsImdtIikpO1JuJiYoKFJuWzBdLm1hdGNoKC88YzpmPiguKj8pPFwvYzpmPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKElyKXtW''@;'; put 'put ''bj1Jci5yZXBsYWNlKC88Lio/Pi9nLCIiKX0pLChSblswXS5tYXRjaCgvPGM6KD86XHcqKUNhY2hlPltcc1xTXSo/PFwvYzooPzpcdyopQ2FjaGU+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24oSXIpe3ZhciBpaT1EQShJcik7RmUucy5yPUZlLnMuYz0wLEZlLmUuYz1YLHhlPUxsKFgpLGlp''@;'; put 'put ''WzBdLmZvckVhY2goZnVuY3Rpb24oeXIsb2kpe3JlW3hlK2hhKG9pKV09e3Q6Im51bWJlciI9PXR5cGVvZiB5cj8ibiI6InMiLHY6eXIsejppaVsxXX0sd2U9b2l9KSxGZS5lLnI8d2UmJihGZS5lLnI9d2UpLCsrWCxVZS53KyssQ24ucHVzaChJbiksKGlpWzJdfHxWbikmJnp0LnB1c2goaWlb''@;'; put 'put ''Ml18fFZuKSwidmFsIj09SW4mJihMdC56PWlpWzFdfHwiR2VuZXJhbCIpfSkpfSksKFN0PVplLm1hdGNoKC88YzpzbW9vdGgoW15cLz5dKilcLz4vbSkpJiYoTHQuc21vb3RoPW51bGw9PXF0KFN0WzBdKS52YWx8fEJpKHF0KFN0WzBdKS52YWwpKSxMdC5jb2xzPUNuLEx0LnJhbmdlcz16dCxV''@;'; put 'put ''ZS5zZXIucHVzaChMdCl9KSwiZG91Z2hudXQiPT1WZSYmKFN0PVplLm1hdGNoKC88Yzpob2xlU2l6ZShbXlwvPl0qKVwvPi9tKSkmJihVZS5ob2xlPShxdChTdFswXSkudmFsfHwxMCkvMTAwKSxyZVsiIXBsb3QiXS5wdXNoKFVlKX0pLFg+MCYmKHJlWyIhcmVmIl09QWEoRmUpKX19KChQdFsx''@;'; put 'put ''XS5tYXRjaChJUCl8fFtdKVsxXSxVZSksbnVsbCE9KFF0PVB0WzFdLm1hdGNoKFl4KSkmJmZ1bmN0aW9uIEd4KEgscmUpe3ZhciBYO3JlWyIhbGVnZW5kIl09e3BvczoiciJ9LChYPUgubWF0Y2goLzxjOmxlZ2VuZFBvcyhbXlwvPl0qKVwvPi9tKSkmJihyZVsiIWxlZ2VuZCJdLnBvcz1xdChY''@;'; put 'put ''WzBdKS52YWx8fCJyIil9KFF0WzBdLFVlKSksVWV9dmFyIHpHPS88YzooKD86YXJlYXxsaW5lfHN0b2NrfHJhZGFyfHNjYXR0ZXJ8cGllfGRvdWdobnV0fGJhcnxvZlBpZXxzdXJmYWNlfGJ1YmJsZSkoPzozRCk/KUNoYXJ0W14+XSo+KFtcc1xTXSo/KTxcL2M6KD86YXJlYXxsaW5lfHN0b2Nr''@;'; put 'put ''fHJhZGFyfHNjYXR0ZXJ8cGllfGRvdWdobnV0fGJhcnxvZlBpZXxzdXJmYWNlfGJ1YmJsZSkoPzozRCk/Q2hhcnQ+L2dtLElkPS88YzpzZXI+KFtcc1xTXSo/KTxcL2M6c2VyPi9nbTtkdC5DUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYv''@;'; put 'put ''cmVsYXRpb25zaGlwcy9jaGFydHNoZWV0Ijt2YXIgVDM9U2koImNoYXJ0c2hlZXQiLG51bGwse3htbG5zOlcwLm1haW5bMF0sInhtbG5zOnIiOlcwLnJ9KTtmdW5jdGlvbiBReChILHJlLFgsd2Upe3ZhciB4ZT1bY24sVDNdO3JldHVybiB4ZS5wdXNoKCI8c2hlZXRQci8+IikseGUucHVzaCgn''@;'; put 'put ''PHNoZWV0Vmlld3M+PHNoZWV0VmlldyB6b29tU2NhbGU9IjEwMCIgd29ya2Jvb2tWaWV3SWQ9IjAiIHpvb21Ub0ZpdD0iMSIvPjwvc2hlZXRWaWV3cz4nKSx4ZVt4ZS5sZW5ndGhdPVNpKCJkcmF3aW5nIixudWxsLHsicjppZCI6InJJZDEifSksYnQod2UsLTEsIi4uL2RyYXdpbmdzL2RyYXdp''@;'; put 'put ''bmciKyhIKzEpKyIueG1sIixkdC5EUkFXKSx4ZS5sZW5ndGg+MiYmKHhlW3hlLmxlbmd0aF09IjwvY2hhcnRzaGVldD4iLHhlWzFdPXhlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSx4ZS5qb2luKCIiKX1mdW5jdGlvbiBCaCgpe3ZhciBIPXYxKCk7cmV0dXJuIEMwKEgsIkJydEJlZ2luU2hlZXQi''@;'; put 'put ''KSxDMChILCJCcnRFbmRTaGVldCIpLEguZW5kKCl9dmFyIExBPVtbImFsbG93UmVmcmVzaFF1ZXJ5IiwhMSwiYm9vbCJdLFsiYXV0b0NvbXByZXNzUGljdHVyZXMiLCEwLCJib29sIl0sWyJiYWNrdXBGaWxlIiwhMSwiYm9vbCJdLFsiY2hlY2tDb21wYXRpYmlsaXR5IiwhMSwiYm9vbCJdLFsi''@;'; put 'put ''Q29kZU5hbWUiLCIiXSxbImRhdGUxOTA0IiwhMSwiYm9vbCJdLFsiZGVmYXVsdFRoZW1lVmVyc2lvbiIsMCwiaW50Il0sWyJmaWx0ZXJQcml2YWN5IiwhMSwiYm9vbCJdLFsiaGlkZVBpdm90RmllbGRMaXN0IiwhMSwiYm9vbCJdLFsicHJvbXB0ZWRTb2x1dGlvbnMiLCExLCJib29sIl0sWyJw''@;'; put 'put ''dWJsaXNoSXRlbXMiLCExLCJib29sIl0sWyJyZWZyZXNoQWxsQ29ubmVjdGlvbnMiLCExLCJib29sIl0sWyJzYXZlRXh0ZXJuYWxMaW5rVmFsdWVzIiwhMCwiYm9vbCJdLFsic2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMiLCEwLCJib29sIl0sWyJzaG93SW5rQW5ub3RhdGlvbiIsITAsImJv''@;'; put 'put ''b2wiXSxbInNob3dPYmplY3RzIiwiYWxsIl0sWyJzaG93UGl2b3RDaGFydEZpbHRlciIsITEsImJvb2wiXSxbInVwZGF0ZUxpbmtzIiwidXNlclNldCJdXSxKeD1bWyJhY3RpdmVUYWIiLDAsImludCJdLFsiYXV0b0ZpbHRlckRhdGVHcm91cGluZyIsITAsImJvb2wiXSxbImZpcnN0U2hlZXQi''@;'; put 'put ''LDAsImludCJdLFsibWluaW1pemVkIiwhMSwiYm9vbCJdLFsic2hvd0hvcml6b250YWxTY3JvbGwiLCEwLCJib29sIl0sWyJzaG93U2hlZXRUYWJzIiwhMCwiYm9vbCJdLFsic2hvd1ZlcnRpY2FsU2Nyb2xsIiwhMCwiYm9vbCJdLFsidGFiUmF0aW8iLDYwMCwiaW50Il0sWyJ2aXNpYmlsaXR5''@;'; put 'put ''IiwidmlzaWJsZSJdXSxPUD1bXSxSUD1bWyJjYWxjQ29tcGxldGVkIiwidHJ1ZSJdLFsiY2FsY01vZGUiLCJhdXRvIl0sWyJjYWxjT25TYXZlIiwidHJ1ZSJdLFsiY29uY3VycmVudENhbGMiLCJ0cnVlIl0sWyJmdWxsQ2FsY09uTG9hZCIsImZhbHNlIl0sWyJmdWxsUHJlY2lzaW9uIiwidHJ1''@;'; put 'put ''ZSJdLFsiaXRlcmF0ZSIsImZhbHNlIl0sWyJpdGVyYXRlQ291bnQiLCIxMDAiXSxbIml0ZXJhdGVEZWx0YSIsIjAuMDAxIl0sWyJyZWZNb2RlIiwiQTEiXV07ZnVuY3Rpb24gWHgoSCxyZSl7Zm9yKHZhciBYPTA7WCE9SC5sZW5ndGg7KytYKWZvcih2YXIgd2U9SFtYXSx4ZT0wO3hlIT1yZS5s''@;'; put 'put ''ZW5ndGg7Kyt4ZSl7dmFyIEZlPXJlW3hlXTtpZihudWxsPT13ZVtGZVswXV0pd2VbRmVbMF1dPUZlWzFdO2Vsc2Ugc3dpdGNoKEZlWzJdKXtjYXNlImJvb2wiOiJzdHJpbmciPT10eXBlb2Ygd2VbRmVbMF1dJiYod2VbRmVbMF1dPUJpKHdlW0ZlWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijoic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIHdlW0ZlWzBdXSYmKHdlW0ZlWzBdXT1wYXJzZUludCh3ZVtGZVswXV0sMTApKX19fWZ1bmN0aW9uIEt4KEgscmUpe2Zvcih2YXIgWD0wO1ghPXJlLmxlbmd0aDsrK1gpe3ZhciB3ZT1yZVtYXTtpZihudWxsPT1IW3dlWzBdXSlIW3dlWzBdXT13ZVsxXTtlbHNlIHN3aXRj''@;'; put 'put ''aCh3ZVsyXSl7Y2FzZSJib29sIjoic3RyaW5nIj09dHlwZW9mIEhbd2VbMF1dJiYoSFt3ZVswXV09QmkoSFt3ZVswXV0pKTticmVhaztjYXNlImludCI6InN0cmluZyI9PXR5cGVvZiBIW3dlWzBdXSYmKEhbd2VbMF1dPXBhcnNlSW50KEhbd2VbMF1dLDEwKSl9fX1mdW5jdGlvbiBPQShIKXtL''@;'; put 'put ''eChILldCUHJvcHMsTEEpLEt4KEguQ2FsY1ByLFJQKSxYeChILldCVmlldyxKeCksWHgoSC5TaGVldHMsT1ApLG5jLmRhdGUxOTA0PUJpKEguV0JQcm9wcy5kYXRlMTkwNCl9dmFyIEJQPSJdWyo/L1xcIi5zcGxpdCgiIik7ZnVuY3Rpb24gV18oSCxyZSl7aWYoSC5sZW5ndGg+MzEpe2lmKHJl''@;'; put 'put ''KXJldHVybiExO3Rocm93IG5ldyBFcnJvcigiU2hlZXQgbmFtZXMgY2Fubm90IGV4Y2VlZCAzMSBjaGFycyIpfXZhciBYPSEwO3JldHVybiBCUC5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtpZigtMSE9SC5pbmRleE9mKHdlKSl7aWYoIXJlKXRocm93IG5ldyBFcnJvcigiU2hlZXQgbmFtZSBjYW5u''@;'; put 'put ''b3QgY29udGFpbiA6IFxcIC8gPyAqIFsgXSIpO1g9ITF9fSksWH12YXIgWV89Lzxcdys6d29ya2Jvb2svLFd0PVNpKCJ3b3JrYm9vayIsbnVsbCx7eG1sbnM6VzAubWFpblswXSwieG1sbnM6ciI6VzAucn0pO2Z1bmN0aW9uIGppKEgscmUpe3ZhciBYPXJlfHx7fSx3ZT1bY25dO3dlW3dlLmxl''@;'; put 'put ''bmd0aF09V3Q7dmFyIHhlPUguV29ya2Jvb2smJihILldvcmtib29rLk5hbWVzfHxbXSkubGVuZ3RoPjA7SC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5Nb2RpZnkmJih3ZVt3ZS5sZW5ndGhdPWZ1bmN0aW9uIHF4KEgpe3ZhciByZT17fTtyZXR1cm4gSC53YXJuJiYocmUucmVhZE9ubHlSZWNvbW1l''@;'; put 'put ''bmRlZD0xKSxyZS51c2VyTmFtZT1ILnVzZXJ8fCJTaGVldCBKUyIsSC5lbmNyeXB0aW9uJiYoSC5lbmNyeXB0aW9uLmFsZ28mJihyZS5hbGdvcml0aG1OYW1lPUguZW5jcnlwdGlvbi5hbGdvKSxILmVuY3J5cHRpb24uaGFzaCYmKHJlLmhhc2hWYWx1ZT1ILmVuY3J5cHRpb24uaGFzaCksSC5l''@;'; put 'put ''bmNyeXB0aW9uLnNhbHQmJihyZS5zYWx0VmFsdWU9SC5lbmNyeXB0aW9uLnNhbHQpLEguZW5jcnlwdGlvbi5zcGluJiYocmUuc3BpbkNvdW50PUguZW5jcnlwdGlvbi5zcGluKSksU2koImZpbGVTaGFyaW5nIixudWxsLHJlKX0oSC5Xb3JrYm9vay5Nb2RpZnkpKTt2YXIgRmU9e2NvZGVOYW1l''@;'; put 'put ''OiJUaGlzV29ya2Jvb2sifTtILldvcmtib29rJiZILldvcmtib29rLldCUHJvcHMmJihMQS5mb3JFYWNoKGZ1bmN0aW9uKFN0KXtudWxsIT1ILldvcmtib29rLldCUHJvcHNbU3RbMF1dJiZILldvcmtib29rLldCUHJvcHNbU3RbMF1dIT1TdFsxXSYmKEZlW1N0WzBdXT1ILldvcmtib29rLldC''@;'; put 'put ''UHJvcHNbU3RbMF1dKX0pLEguV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZSYmKEZlLmNvZGVOYW1lPUguV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZSxkZWxldGUgRmUuQ29kZU5hbWUpKSx3ZVt3ZS5sZW5ndGhdPVNpKCJ3b3JrYm9va1ByIixudWxsLEZlKSxILldvcmtib29rJiZILldvcmti''@;'; put 'put ''b29rLlByb3RlY3Rpb24mJih3ZVt3ZS5sZW5ndGhdPWZ1bmN0aW9uIFVfKEgpe3ZhciByZT17fTtyZXR1cm4gSC5sb2NrU3RydWN0dXJlJiYocmUubG9ja1N0cnVjdHVyZT0xKSxILmxvY2tXaW5kb3dzJiYocmUubG9ja1dpbmRvd3M9MSksSC5lbmNyeXB0aW9uJiYoSC5lbmNyeXB0aW9uLmFs''@;'; put 'put ''Z28mJihyZS53b3JrYm9va0FsZ29yaXRobU5hbWU9SC5lbmNyeXB0aW9uLmFsZ28pLEguZW5jcnlwdGlvbi5oYXNoJiYocmUud29ya2Jvb2tIYXNoVmFsdWU9SC5lbmNyeXB0aW9uLmhhc2gpLEguZW5jcnlwdGlvbi5zYWx0JiYocmUud29ya2Jvb2tTYWx0VmFsdWU9SC5lbmNyeXB0aW9uLnNh''@;'; put 'put ''bHQpLEguZW5jcnlwdGlvbi5zcGluJiYocmUud29ya2Jvb2tTcGluQ291bnQ9SC5lbmNyeXB0aW9uLnNwaW4pKSxTaSgid29ya2Jvb2tQcm90ZWN0aW9uIixudWxsLHJlKX0oSC5Xb3JrYm9vay5Qcm90ZWN0aW9uKSk7dmFyIFplPUguV29ya2Jvb2smJkguV29ya2Jvb2suU2hlZXRzfHxbXSxW''@;'; put 'put ''ZT0wO2lmKFplJiZaZVswXSYmWmVbMF0uSGlkZGVuKXtmb3Iod2Vbd2UubGVuZ3RoXT0iPGJvb2tWaWV3cz4iLFZlPTA7VmUhPUguU2hlZXROYW1lcy5sZW5ndGgmJlplW1ZlXSYmWmVbVmVdLkhpZGRlbjsrK1ZlKTtWZT09SC5TaGVldE5hbWVzLmxlbmd0aCYmKFZlPTApLHdlW3dlLmxlbmd0''@;'; put 'put ''aF09Jzx3b3JrYm9va1ZpZXcgZmlyc3RTaGVldD0iJytWZSsnIiBhY3RpdmVUYWI9IicrVmUrJyIvPicsd2Vbd2UubGVuZ3RoXT0iPC9ib29rVmlld3M+In1mb3Iod2Vbd2UubGVuZ3RoXT0iPHNoZWV0cz4iLFZlPTA7VmUhPUguU2hlZXROYW1lcy5sZW5ndGg7KytWZSl7dmFyIFVlPXtuYW1l''@;'; put 'put ''Ok9yKEguU2hlZXROYW1lc1tWZV0uc2xpY2UoMCwzMSkpfTtpZihVZS5zaGVldElkPSIiKyhWZSsxKSxVZVsicjppZCJdPSJySWQiKyhWZSsxKSxaZVtWZV0pc3dpdGNoKFplW1ZlXS5IaWRkZW4pe2Nhc2UgMTpVZS5zdGF0ZT0iaGlkZGVuIjticmVhaztjYXNlIDI6VWUuc3RhdGU9InZlcnlI''@;'; put 'put ''aWRkZW4ifXdlW3dlLmxlbmd0aF09U2koInNoZWV0IixudWxsLFVlKX1yZXR1cm4gd2Vbd2UubGVuZ3RoXT0iPC9zaGVldHM+IixILkV4dGVybmFsV0ImJkguRXh0ZXJuYWxXQi5sZW5ndGgmJih3ZVt3ZS5sZW5ndGhdPSI8ZXh0ZXJuYWxSZWZlcmVuY2VzPiIsKEguRXh0ZXJuYWxXQnx8W10p''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oU3QsSXQpe3ZhciBQdD1idChYLndicmVscywtMSwiZXh0ZXJuYWxMaW5rcy9leHRlcm5hbExpbmsiKyhJdCsxKSsiLnhtbCIsZHQuWExJTkspO3dlW3dlLmxlbmd0aF09JzxleHRlcm5hbFJlZmVyZW5jZSByOmlkPSJySWQnK1B0KyciLz4nfSksd2Vbd2UubGVu''@;'; put 'put ''Z3RoXT0iPC9leHRlcm5hbFJlZmVyZW5jZXM+IikseGUmJih3ZVt3ZS5sZW5ndGhdPSI8ZGVmaW5lZE5hbWVzPiIsSC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5OYW1lcyYmSC5Xb3JrYm9vay5OYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKFN0KXt2YXIgSXQ9e25hbWU6U3QuTmFtZX07U3QuQ29tbWVu''@;'; put 'put ''dCYmKEl0LmNvbW1lbnQ9U3QuQ29tbWVudCksbnVsbCE9U3QuU2hlZXQmJihJdC5sb2NhbFNoZWV0SWQ9IiIrU3QuU2hlZXQpLFN0LkhpZGRlbiYmKEl0LmhpZGRlbj0iMSIpLFN0LlJlZiYmKHdlW3dlLmxlbmd0aF09U2koImRlZmluZWROYW1lIixPcihTdC5SZWYpLEl0KSl9KSx3ZVt3ZS5s''@;'; put 'put ''ZW5ndGhdPSI8L2RlZmluZWROYW1lcz4iKSxYJiZYLnBpdm90cyYmWC5waXZvdHMubGVuZ3RoPjAmJih3ZS5wdXNoKCI8cGl2b3RDYWNoZXM+IiksWC5waXZvdHMuZm9yRWFjaChmdW5jdGlvbihTdCxJdCl7d2UucHVzaCgnPHBpdm90Q2FjaGUgY2FjaGVJZD0iJysoSXQrMSkrJyIgcjppZD0i''@;'; put 'put ''cklkJytTdFsyXSsnIi8+Jyl9KSx3ZS5wdXNoKCI8L3Bpdm90Q2FjaGVzPiIpKSx3ZS5sZW5ndGg+MiYmKHdlW3dlLmxlbmd0aF09Ijwvd29ya2Jvb2s+Iix3ZVsxXT13ZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSksd2Uuam9pbigiIil9ZnVuY3Rpb24gcmgoSCxyZSl7cmV0dXJuIHJlfHwocmU9''@;'; put 'put ''eGkoMTI3KSkscmUud3JpdGVfc2hpZnQoNCxILkhpZGRlbikscmUud3JpdGVfc2hpZnQoNCxILmlUYWJJRCksRnAoSC5zdHJSZWxJRCxyZSksc3UoSC5uYW1lLnNsaWNlKDAsMzEpLHJlKSxyZS5sZW5ndGg+cmUubD9yZS5zbGljZSgwLHJlLmwpOnJlfWZ1bmN0aW9uIGk3KEgscmUpe3ZhciBY''@;'; put 'put ''PXt9O3JldHVybiBILnJlYWRfc2hpZnQoNCksWC5BcmNoSUQ9SC5yZWFkX3NoaWZ0KDQpLEgubCs9cmUtOCxYfWZ1bmN0aW9uIHJUKEgscmUpe3ZhciBYPXYxKCk7cmV0dXJuIEMwKFgsIkJydEJlZ2luQm9vayIpLEMwKFgsIkJydEZpbGVWZXJzaW9uIixmdW5jdGlvbiBuVChILHJlKXtyZXx8''@;'; put 'put ''KHJlPXhpKDEyNykpO2Zvcih2YXIgWD0wOzQhPVg7KytYKXJlLndyaXRlX3NoaWZ0KDQsMCk7cmV0dXJuIHN1KCJTaGVldEpTIixyZSksc3UoVS52ZXJzaW9uLHJlKSxzdShVLnZlcnNpb24scmUpLHN1KCI3MjYyIixyZSkscmUubGVuZ3RoPnJlLmw/cmUuc2xpY2UoMCxyZS5sKTpyZX0oKSks''@;'; put 'put ''QzAoWCwiQnJ0V2JQcm9wIixmdW5jdGlvbiBodShILHJlKXtyZXx8KHJlPXhpKDcyKSk7dmFyIFg9MDtyZXR1cm4gSCYmSC5maWx0ZXJQcml2YWN5JiYoWHw9OCkscmUud3JpdGVfc2hpZnQoNCxYKSxyZS53cml0ZV9zaGlmdCg0LDApLE5NKEgmJkguQ29kZU5hbWV8fCJUaGlzV29ya2Jvb2si''@;'; put 'put ''LHJlKSxyZS5zbGljZSgwLHJlLmwpfShILldvcmtib29rJiZILldvcmtib29rLldCUHJvcHN8fG51bGwpKSxmdW5jdGlvbiBYXyhILHJlKXtpZihyZS5Xb3JrYm9vayYmcmUuV29ya2Jvb2suU2hlZXRzKXtmb3IodmFyIFg9cmUuV29ya2Jvb2suU2hlZXRzLHdlPTAseGU9LTEsRmU9LTE7d2U8''@;'; put 'put ''WC5sZW5ndGg7Kyt3ZSkhWFt3ZV18fCFYW3dlXS5IaWRkZW4mJi0xPT14ZT94ZT13ZToxPT1YW3dlXS5IaWRkZW4mJi0xPT1GZSYmKEZlPXdlKTtGZT54ZXx8KEMwKEgsIkJydEJlZ2luQm9va1ZpZXdzIiksQzAoSCwiQnJ0Qm9va1ZpZXciLGZ1bmN0aW9uIEpfKEgscmUpe3JldHVybiByZXx8''@;'; put 'put ''KHJlPXhpKDI5KSkscmUud3JpdGVfc2hpZnQoLTQsMCkscmUud3JpdGVfc2hpZnQoLTQsNDYwKSxyZS53cml0ZV9zaGlmdCg0LDI4ODAwKSxyZS53cml0ZV9zaGlmdCg0LDE3NjAwKSxyZS53cml0ZV9zaGlmdCg0LDUwMCkscmUud3JpdGVfc2hpZnQoNCxIKSxyZS53cml0ZV9zaGlmdCg0LEgp''@;'; put 'put ''LHJlLndyaXRlX3NoaWZ0KDEsMTIwKSxyZS5sZW5ndGg+cmUubD9yZS5zbGljZSgwLHJlLmwpOnJlfSh4ZSkpLEMwKEgsIkJydEVuZEJvb2tWaWV3cyIpKX19KFgsSCksZnVuY3Rpb24gdFQoSCxyZSl7QzAoSCwiQnJ0QmVnaW5CdW5kbGVTaHMiKTtmb3IodmFyIFg9MDtYIT1yZS5TaGVldE5h''@;'; put 'put ''bWVzLmxlbmd0aDsrK1gpQzAoSCwiQnJ0QnVuZGxlU2giLHJoKHtIaWRkZW46cmUuV29ya2Jvb2smJnJlLldvcmtib29rLlNoZWV0cyYmcmUuV29ya2Jvb2suU2hlZXRzW1hdJiZyZS5Xb3JrYm9vay5TaGVldHNbWF0uSGlkZGVufHwwLGlUYWJJRDpYKzEsc3RyUmVsSUQ6InJJZCIrKFgrMSks''@;'; put 'put ''bmFtZTpyZS5TaGVldE5hbWVzW1hdfSkpO0MwKEgsIkJydEVuZEJ1bmRsZVNocyIpfShYLEgpLEMwKFgsIkJydEVuZEJvb2siKSxYLmVuZCgpfWZ1bmN0aW9uIHNUKEgscmUsWCx3ZSx4ZSl7cmV0dXJuKCIuYmluIj09PXJlLnNsaWNlKC00KT9UUDpWRykoSCxYLHdlLHhlKX1mdW5jdGlvbiBH''@;'; put 'put ''UChILHJlLFgsd2UseGUpe3JldHVybigiLmJpbiI9PT1yZS5zbGljZSgtNCk/Qmg6UXgpKEgsWCx3ZSx4ZSl9ZnVuY3Rpb24gY1QoSCxyZSxYKXtyZXR1cm4oIi5iaW4iPT09cmUuc2xpY2UoLTQpP1VSOmdFKShILFgpfWZ1bmN0aW9uIGZUKEgscmUsWCl7cmV0dXJuKCIuYmluIj09PXJlLnNs''@;'; put 'put ''aWNlKC00KT9sXzpvXykoSCxYKX12YXIgQkE9LyhbXHc6XSspPSgoPzoiKShbXiJdKikoPzoiKXwoPzonKShbXiddKikoPzonKSkvZywkXz0vKFtcdzpdKyk9KCg/OiIpKD86W14iXSopKD86Iil8KD86JykoPzpbXiddKikoPzonKSkvO2Z1bmN0aW9uIEJ1KEgscmUpe3ZhciBYPUguc3BsaXQo''@;'; put 'put ''L1xzKy8pLHdlPVtdO2lmKHJlfHwod2VbMF09WFswXSksMT09PVgubGVuZ3RoKXJldHVybiB3ZTt2YXIgRmUsWmUsVWUseGU9SC5tYXRjaChCQSk7aWYoeGUpZm9yKFVlPTA7VWUhPXhlLmxlbmd0aDsrK1VlKS0xPT09KFplPShGZT14ZVtVZV0ubWF0Y2goJF8pKVsxXS5pbmRleE9mKCI6Iikp''@;'; put 'put ''P3dlW0ZlWzFdXT1GZVsyXS5zbGljZSgxLEZlWzJdLmxlbmd0aC0xKTp3ZVsieG1sbnM6Ij09PUZlWzFdLnNsaWNlKDAsNik/InhtbG5zIitGZVsxXS5zbGljZSg2KTpGZVsxXS5zbGljZShaZSsxKV09RmVbMl0uc2xpY2UoMSxGZVsyXS5sZW5ndGgtMSk7cmV0dXJuIHdlfWZ1bmN0aW9uIHFf''@;'; put 'put ''KEgpe3ZhciBYPXt9O2lmKDE9PT1ILnNwbGl0KC9ccysvKS5sZW5ndGgpcmV0dXJuIFg7dmFyIHhlLEZlLFZlLHdlPUgubWF0Y2goQkEpO2lmKHdlKWZvcihWZT0wO1ZlIT13ZS5sZW5ndGg7KytWZSktMT09PShGZT0oeGU9d2VbVmVdLm1hdGNoKCRfKSlbMV0uaW5kZXhPZigiOiIpKT9YW3hl''@;'; put 'put ''WzFdXT14ZVsyXS5zbGljZSgxLHhlWzJdLmxlbmd0aC0xKTpYWyJ4bWxuczoiPT09eGVbMV0uc2xpY2UoMCw2KT8ieG1sbnMiK3hlWzFdLnNsaWNlKDYpOnhlWzFdLnNsaWNlKEZlKzEpXT14ZVsyXS5zbGljZSgxLHhlWzJdLmxlbmd0aC0xKTtyZXR1cm4gWH1mdW5jdGlvbiBjNShIKXt2YXIg''@;'; put 'put ''cmU9e307aWYoSC5EZWZhdWx0Um93SGVpZ2h0KXt2YXIgWD17aHB4OjQqcGFyc2VJbnQoSC5EZWZhdWx0Um93SGVpZ2h0KS8zfTtSYihYKSxyZS5yb3c9WH1pZihILkRlZmF1bHRDb2xXaWR0aCl7dmFyIHdlPXt3cHg6NCpwYXJzZUludChILkRlZmF1bHRDb2xXaWR0aCkvM307YmMod2UpLHJl''@;'; put 'put ''LmNvbD13ZX1yZXR1cm4gcmV9ZnVuY3Rpb24gRmgoSCxyZSxYLHdlKXt2YXIgeGU9d2U7c3dpdGNoKChYWzBdLm1hdGNoKC9kdDpkdD0iKFtcdy5dKykiLyl8fFsiIiwiIl0pWzFdKXtjYXNlImJvb2xlYW4iOnhlPUJpKHdlKTticmVhaztjYXNlImkyIjpjYXNlImludCI6eGU9cGFyc2VJbnQo''@;'; put 'put ''d2UsMTApO2JyZWFrO2Nhc2UicjQiOmNhc2UiZmxvYXQiOnhlPXBhcnNlRmxvYXQod2UpO2JyZWFrO2Nhc2UiZGF0ZSI6Y2FzZSJkYXRlVGltZS50eiI6eGU9cG4od2UpO2JyZWFrO2Nhc2UiaTgiOmNhc2Uic3RyaW5nIjpjYXNlImZpeGVkIjpjYXNlInV1aWQiOmNhc2UiYmluLmJhc2U2NCI6''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImJhZCBjdXN0cHJvcDoiK1hbMF0pfUhbZ3IocmUpXT14ZX12YXIgYTc9ezA6Ik5vbmUiLDE6IlNpbmdsZSIsMjoiRG91YmxlIiwzMzoiU2luZ2xlQWNjb3VudGluZyIsMzQ6IkRvdWJsZUFjY291bnRpbmcifSxFNj1xZShhNyk7ZnVuY3Rp''@;'; put 'put ''b24gV1AoSCxyZSxYLHdlKXtpZih3ZS5jZWxsU3R5bGVzKXtpZihYPVgucmVwbGFjZSgvXHMrL2csIiAiKSxyZS5JbnRlcmlvcil7dmFyIHhlPXJlLkludGVyaW9yO3hlLlBhdHRlcm4mJih4ZS5wYXR0ZXJuVHlwZT1TRVt4ZS5QYXR0ZXJuXXx8eGUuUGF0dGVybikseGUuQ29sb3ImJnhlLkNv''@;'; put 'put ''bG9yLm1hdGNoKC8jWzAtOUEtRmEtZl0qLykmJih4ZS5mZ0NvbG9yPXtyZ2I6eGUuQ29sb3Iuc2xpY2UoMSl9KX0hZnVuY3Rpb24gSGgoSCl7IUguQm9yZGVyc3x8KEguQm9yZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHJlKXt2YXIgWD1yZS5Qb3NpdGlvbi50b0xvd2VyQ2FzZSgpO0hbWF09e3N0''@;'; put 'put ''eWxlOllQKHJlLkxpbmVTdHlsZSwrcmUuV2VpZ2h0KSxjb2xvcjp7cmdiOihyZS5Db2xvcnx8IiMwMDAwMDAiKS5zbGljZSgxKX19fSksZGVsZXRlIEguQm9yZGVycyl9KHJlKTt2YXIgWmUsRmU9WC5tYXRjaCgvPCg/Olx3KzopP0ZvbnRcc1tePl0qPi8pO0ZlJiYoQmkoKFplPXF0KEZlWzBd''@;'; put 'put ''KSkuQm9sZCkmJihyZS5Cb2xkPSEwKSxCaShaZS5JdGFsaWMpJiYocmUuSXRhbGljPSEwKSxCaShaZS5TdHJpa2VUaHJvdWdoKSYmKHJlLlN0cmlrZT0hMCksWmUuU2l6ZSYmKHJlLlNpemU9K1plLlNpemUpLHJlLkZvbnROYW1lPVplLkZvbnROYW1lP1plLkZvbnROYW1lOiJBcmlhbCIsWmUu''@;'; put 'put ''VW5kZXJsaW5lJiYocmUuVW5kZXJsaW5lPUU2W1plLlVuZGVybGluZV0pLFplLkNvbG9yJiYocmUuUkdCPVplLkNvbG9yLnNsaWNlKC02KSkpLHJlLkFsaWdubWVudCYmKHJlLmFsaWdubWVudD17fSxyZS5BbGlnbm1lbnQuVmVydGljYWwmJihyZS5hbGlnbm1lbnQudmVydGljYWw9cmUuQWxp''@;'; put 'put ''Z25tZW50LlZlcnRpY2FsLnRvTG93ZXJDYXNlKCkpLHJlLkFsaWdubWVudC5Ib3Jpem9udGFsJiYocmUuYWxpZ25tZW50Lmhvcml6b250YWw9cmUuQWxpZ25tZW50Lkhvcml6b250YWwudG9Mb3dlckNhc2UoKSksQmkocmUuQWxpZ25tZW50LldyYXBUZXh0fHwiMCIpP3JlLmFsaWdubWVudC53''@;'; put 'put ''cmFwVGV4dD0hMDpudWxsPT1yZS5BbGlnbm1lbnQuV3JhcFRleHQmJmRlbGV0ZSByZS5hbGlnbm1lbnQud3JhcFRleHQsQmkocmUuQWxpZ25tZW50LlNocmlua1RvRml0fHwiMCIpJiYocmUuYWxpZ25tZW50LnNocmlua1RvRml0PSEwKSwrcmUuQWxpZ25tZW50LkluZGVudCYmKHJlLmFsaWdu''@;'; put 'put ''bWVudC5pbmRlbnQ9K3JlLkFsaWdubWVudC5JbmRlbnR8fDApLCtyZS5BbGlnbm1lbnQuUm90YXRlJiYocmUuYWxpZ25tZW50LnRleHRSb3RhdGlvbj0rcmUuQWxpZ25tZW50LlJvdGF0ZXx8MCkpfUhbcmUuSURdPXJlLCgiRGVmYXVsdCI9PXJlLklEfHwiTm9ybWFsIj09cmUuTmFtZSkmJnI2''@;'; put 'put ''KHJlKX1mdW5jdGlvbiBZUChILHJlKXtzd2l0Y2goSCl7Y2FzZSJOb25lIjpyZXR1cm4ibm9uZSI7Y2FzZSJEYXNoIjpyZXR1cm4iZGFzaGVkIjtjYXNlIkRvdCI6cmV0dXJuImRvdHRlZCI7Y2FzZSJEYXNoRG90IjpyZXR1cm4iZGFzaERvdCI7Y2FzZSJEYXNoRG90RG90IjpyZXR1cm4iZGFz''@;'; put 'put ''aERvdERvdCI7Y2FzZSJTbGFudERhc2hEb3QiOnJldHVybiJzbGFudERhc2hEb3QiO2Nhc2UiRG91YmxlIjpyZXR1cm4iZG91YmxlIjtjYXNlIkNvbnRpbnVvdXMiOnN3aXRjaCgrcmV8fDApe2Nhc2UgMDpyZXR1cm4iaGFpciI7Y2FzZSAxOnJldHVybiJ0aGluIjtjYXNlIDI6cmV0dXJuIm1l''@;'; put 'put ''ZGl1bSI7Y2FzZSAzOnJldHVybiJ0aGljayJ9cmV0dXJuInRoaW4ifXJldHVybiBIfWZ1bmN0aW9uIGhUKEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSxVZSxTdCl7dmFyIEl0PSJHZW5lcmFsIixQdD13ZS5TdHlsZUlELFF0PXt9O1N0PVN0fHx7fTt2YXIgYW49W10sQ249MDtmb3Iodm9pZCAwPT09''@;'; put 'put ''UHQmJlZlJiYoUHQ9VmUuU3R5bGVJRCksdm9pZCAwPT09UHQmJlplJiYoUHQ9WmUuU3R5bGVJRCk7dm9pZCAwIT09RmVbUHRdOyl7dmFyIEx0PUZlW1B0XTtpZigiR2VuZXJhbCI9PUl0JiZMdC5uZiYmKEl0PUZlW1B0XS5uZiksTHQuSW50ZXJpb3ImJmFuLnB1c2goRmVbUHRdLkludGVyaW9y''@;'; put 'put ''KSxMdC5hbGlnbm1lbnQmJihRdC5hbGlnbm1lbnR8fChRdC5hbGlnbm1lbnQ9bG4oTHQuYWxpZ25tZW50KSkpLG51bGw9PVF0LmJvbGQmJkx0LkJvbGQmJihRdC5ib2xkPSEwKSxudWxsPT1RdC5pdGFsaWMmJkx0Lkl0YWxpYyYmKFF0Lml0YWxpYz0hMCksbnVsbD09UXQuc3RyaWtlJiZMdC5T''@;'; put 'put ''dHJpa2UmJihRdC5zdHJpa2U9ITApLG51bGw9PVF0LnN6JiZMdC5TaXplJiYoUXQuc3o9THQuU2l6ZSksbnVsbD09UXQubmFtZSYmTHQuRm9udE5hbWUmJihRdC5uYW1lPUx0LkZvbnROYW1lKSxudWxsPT1RdC51bmRlcmxpbmUmJkx0LlVuZGVybGluZSYmKFF0LnVuZGVybGluZT1MdC5VbmRl''@;'; put 'put ''cmxpbmUpLG51bGw9PVF0LmNvbG9yJiZMdC5SR0ImJihRdC5jb2xvcj17cmdiOkx0LlJHQn0pLFsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbihSbil7bnVsbD09UXRbUm5dJiZMdFtSbl0mJihRdFtSbl09bG4oTHRbUm5dKSl9KSwiRGVmYXVsdCI9PVB0''@;'; put 'put ''KWJyZWFrO1B0PUx0LlBhcmVudHx8IkRlZmF1bHQifVF0Lm5hbWV8fChRdC5uYW1lPUZlLkRlZmF1bHQmJkZlLkRlZmF1bHQuRm9udE5hbWV8fCJBcmlhbCIpLFF0LnN6fHwoUXQuc3o9RmUuRGVmYXVsdCYmRmUuRGVmYXVsdC5TaXplfHwxMik7dmFyIHp0PSIiO2lmKEh8fHdlLkZvcm11bGF8''@;'; put 'put ''fCJTdHJpbmciPT1YLlR5cGV8fCJOdW1iZXIiPT1YLlR5cGUpc3dpdGNoKFguVHlwZSl7Y2FzZSJCb29sZWFuIjp3ZS50PSJiIix3ZS52PUJpKEgpO2JyZWFrO2Nhc2UiU3RyaW5nIjp3ZS50PSJzIix6dD1fMChncihIKSksd2Uudj1ILmluZGV4T2YoIjwiKT4tMT9ncihyZXx8SCkucmVwbGFj''@;'; put 'put ''ZSgvPFteXSo/Pi9nLCIiKTp6dCxILmluZGV4T2YoIjwiKT4tMSYmKHdlLlI9b3MuaHRtbF90b19ycyhncihIKSkpO2JyZWFrO2Nhc2UiRGF0ZVRpbWUiOiJaIiE9SC5zbGljZSgtMSkmJihIKz0iWiIpLHdlLnY9KHBuKEgpLW5ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzApKSkvODY0ZTUs''@;'; put 'put ''d2UudiE9d2Uudj93ZS52PWdyKEgpOndlLnY8NjAmJih3ZS52PXdlLnYtMSksKCFJdHx8IkdlbmVyYWwiPT1JdCkmJihJdD0ieXl5eS1tbS1kZCIpO2Nhc2UiTnVtYmVyIjp2b2lkIDA9PT13ZS52JiYod2Uudj0rSCksd2UudHx8KHdlLnQ9Im4iKTticmVhaztjYXNlIkVycm9yIjp3ZS50PSJl''@;'; put 'put ''Iix3ZS52PU91W0hdLCExIT09U3QuY2VsbFRleHQmJih3ZS53PUgpO2JyZWFrO2RlZmF1bHQ6IiI9PUgmJiIiPT1yZT93ZS50PSJ6Ijood2UudD0icyIsenQ9XzAoZ3IoSCkpLHdlLnY9SC5pbmRleE9mKCI8Iik+LTE/Z3IocmV8fEgpLnJlcGxhY2UoLzxbXl0qPz4vZywiIik6enQsSC5pbmRl''@;'; put 'put ''eE9mKCI8Iik+LTEmJih3ZS5SPW9zLmh0bWxfdG9fcnMoZ3IoSCkpKSl9ZWxzZSB3ZS50PSJ6IixkZWxldGUgd2UudjtpZihmdW5jdGlvbiBEMyhILHJlLFgpe2lmKCJ6IiE9PUgudCl7aWYoIVh8fCExIT09WC5jZWxsVGV4dCl0cnl7SC53PSJlIj09PUgudD9ILnd8fE5mW0gudl06IkdlbmVy''@;'; put 'put ''YWwiPT09cmU/Im4iPT09SC50PygwfEgudik9PT1ILnY/Ri5fZ2VuZXJhbF9pbnQoSC52KTpGLl9nZW5lcmFsX251bShILnYpOkYuX2dlbmVyYWwoSC52KTpmdW5jdGlvbiBvNyhILHJlKXt2YXIgWD1DZVtIXXx8Z3IoSCk7cmV0dXJuIkdlbmVyYWwiPT09WD9GLl9nZW5lcmFsKHJlKTpGLmZv''@;'; put 'put ''cm1hdChYLHJlKX0ocmV8fCJHZW5lcmFsIixILnYpfWNhdGNoKEZlKXtpZihYLldURil0aHJvdyBGZX10cnl7dmFyIHdlPUNlW3JlXXx8cmV8fCJHZW5lcmFsIjtpZihYLmNlbGxORiYmKEguej13ZSksWC5jZWxsRGF0ZXMmJiJuIj09SC50JiZGLmlzX2RhdGUod2UpKXt2YXIgeGU9Ri5wYXJz''@;'; put 'put ''ZV9kYXRlX2NvZGUoSC52KTt4ZSYmKEgudD0iZCIsSC52PW5ldyBEYXRlKHhlLnkseGUubS0xLHhlLmQseGUuSCx4ZS5NLHhlLlMseGUudSkpfX1jYXRjaChGZSl7aWYoWC5XVEYpdGhyb3cgRmV9fX0od2UsSXQsU3QpLCExIT09U3QuY2VsbEZvcm11bGEpaWYod2UuRm9ybXVsYSl7dmFyIGZu''@;'; put 'put ''PWdyKHdlLkZvcm11bGEpOzYxPT1mbi5jaGFyQ29kZUF0KDApJiYoZm49Zm4uc2xpY2UoMSkpLHdlLmY9bTYoZm4seGUpLGRlbGV0ZSB3ZS5Gb3JtdWxhLCJSQyI9PXdlLkFycmF5UmFuZ2U/d2UuRj1tNigiUkM6UkMiLHhlKTp3ZS5BcnJheVJhbmdlJiYod2UuRj1tNih3ZS5BcnJheVJhbmdl''@;'; put 'put ''LHhlKSxVZS5wdXNoKFtlYSh3ZS5GKSx3ZS5GXSkpfWVsc2UgZm9yKENuPTA7Q248VWUubGVuZ3RoOysrQ24peGUucj49VWVbQ25dWzBdLnMuciYmeGUucjw9VWVbQ25dWzBdLmUuciYmeGUuYz49VWVbQ25dWzBdLnMuYyYmeGUuYzw9VWVbQ25dWzBdLmUuYyYmKHdlLkY9VWVbQ25dWzFdKTtp''@;'; put 'put ''ZihTdC5jZWxsU3R5bGVzJiYoYW4uZm9yRWFjaChmdW5jdGlvbihSbil7IVF0LnBhdHRlcm5UeXBlJiZSbi5wYXR0ZXJuVHlwZSYmKFF0LnBhdHRlcm5UeXBlPVJuLnBhdHRlcm5UeXBlKSwhUXQuZmdDb2xvciYmUm4uZmdDb2xvciYmKFF0LmZnQ29sb3I9Um4uZmdDb2xvcil9KSx3ZS5zPVF0''@;'; put 'put ''KSx2b2lkIDAhPT13ZS5TdHlsZUlEJiYod2UuaXhmZT13ZS5TdHlsZUlEKSx3ZS5SJiZ3ZS5zKXt2YXIgSW49bG4od2Uucyk7ZGVsZXRlIEluLmJvbGQsZGVsZXRlIEluLml0YWxpYyxkZWxldGUgSW4udW5kZXJsaW5lLGRlbGV0ZSBJbi5zdHJpa2Usd2UuUi5mb3JFYWNoKGZ1bmN0aW9uKFJu''@;'; put 'put ''KXtSbi5zPWtuKGxuKEluKSxSbi5zKX0pfX1mdW5jdGlvbiBvYyhIKXtILnQ9SC52fHwiIixILnQ9SC50LnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLEgudj1ILnc9SC5peGZlPXZvaWQgMH1mdW5jdGlvbiBkVChIKXtpZihJZSYmQnVmZmVyLmlzQnVmZmVyKEgp''@;'; put 'put ''KXJldHVybiBILnRvU3RyaW5nKCJ1dGY4Iik7aWYoInN0cmluZyI9PXR5cGVvZiBIKXJldHVybiBIO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSYmSCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIGowKHRlKFAoSCkpKTt0aHJvdyBuZXcgRXJyb3IoIkJhZCBpbnB1dCBm''@;'; put 'put ''b3JtYXQ6IGV4cGVjdGVkIEJ1ZmZlciBvciBzdHJpbmciKX12YXIgZjU9LzwoXC8/KShbXlxzPz48IVwvOl0qOnwpKFteXHM/PD46XC9cW10rKSg/Oltccz86PFwvXVtePl0qKT8+L2dtO2Z1bmN0aW9uIFBBKEgscmUpe3ZhciBYPXJlfHx7fSx3ZT1mZShkVChIKSk7KCJiaW5hcnkiPT1YLnR5''@;'; put 'put ''cGV8fCJhcnJheSI9PVgudHlwZXx8ImJhc2U2NCI9PVgudHlwZSkmJih3ZT0idW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGU/Y3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsSih3ZSkpOmowKHdlKSk7dmFyIHhlPXdlLnNsaWNlKDAsMTAyNCkudG9Mb3dlckNhc2UoKSxGZT0hMTtpZigoMTAy''@;'; put 'put ''MyZ4ZS5pbmRleE9mKCI+IikpPk1hdGgubWluKDEwMjMmeGUuaW5kZXhPZigiLCIpLDEwMjMmeGUuaW5kZXhPZigiOyIpKSl7dmFyIFplPWxuKFgpO3JldHVybiBaZS50eXBlPSJzdHJpbmciLEg4LnRvX3dvcmtib29rKHdlLFplKX1pZigtMT09eGUuaW5kZXhPZigiPD94bWwiKSYmWyJodG1s''@;'; put 'put ''IiwidGFibGUiLCJoZWFkIiwibWV0YSIsInNjcmlwdCIsInN0eWxlIiwiZGl2Il0uZm9yRWFjaChmdW5jdGlvbihVYyl7eGUuaW5kZXhPZigiPCIrVWMpPj0wJiYoRmU9ITApfSksRmUpcmV0dXJuIG9zLnRvX3dvcmtib29rKHdlLFgpO3ZhciBWZSxTdCxiaSxVZT1bXSxJdD17fSxQdD1bXSxR''@;'; put 'put ''dD1YLmRlbnNlP1tdOnt9LGFuPSIiLENuPXt9LEx0PXt9LHp0PXt9LGZuPUJ1KCc8RGF0YSBzczpUeXBlPSJTdHJpbmciPicpLEluPTAsUm49MCxWbj0wLElyPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LGlpPXt9LHlyPXt9LG9pPSIiLE1yPTAsV3I9W10sYWk9e30sbmk9e30sZnI9''@;'; put 'put ''MCxoaT1bXSx3MD17fSxKMD1bXSxpbz17fSxiMD1bXSx6cj0hMSxEaT1bXSxjaT1bXSxIcj17fSxNaT0wLFowPTAsbjA9e1NoZWV0czpbXSxXQlByb3BzOntkYXRlMTkwNDohMX19LGZvPXt9O2Y1Lmxhc3RJbmRleD0wLHdlPXdlLnJlcGxhY2UoLzwhLS0oW1xzXFNdKj8pLS0+L2dtLCIiKTtm''@;'; put 'put ''b3IodmFyIGlhPSIiO1ZlPWY1LmV4ZWMod2UpOylzd2l0Y2goVmVbM109KGlhPVZlWzNdKS50b0xvd2VyQ2FzZSgpKXtjYXNlImRhdGEiOmlmKCJkYXRhIj09aWEpe2lmKCIvIj09PVZlWzFdKXtpZigoU3Q9VWUucG9wKCkpWzBdIT09VmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6''@;'; put 'put ''ICIrU3Quam9pbigifCIpKX1lbHNlIi8iIT09VmVbMF0uY2hhckF0KFZlWzBdLmxlbmd0aC0yKSYmVWUucHVzaChbVmVbM10sITBdKTticmVha31pZihVZVtVZS5sZW5ndGgtMV1bMV0pYnJlYWs7Ii8iPT09VmVbMV0/aFQod2Uuc2xpY2UoSW4sVmUuaW5kZXgpLG9pLGZuLCJjb21tZW50Ij09''@;'; put 'put ''VWVbVWUubGVuZ3RoLTFdWzBdP2lvOkx0LHtjOlJuLHI6Vm59LGlpLGIwW1JuXSx6dCxEaSxYKToob2k9IiIsZm49QnUoVmVbMF0pLEluPVZlLmluZGV4K1ZlWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJjZWxsIjppZigiLyI9PT1WZVsxXXx8Ii8+Ij09PVZlWzBdLnNsaWNlKC0yKSl7aWYoIi8+''@;'; put 'put ''Ij09PVZlWzBdLnNsaWNlKC0yKSl7aWYoKEx0PXFfKFZlWzBdKSkuSW5kZXgmJihSbj0rTHQuSW5kZXgtMSksUm48SXIucy5jJiYoSXIucy5jPVJuKSxSbj5Jci5lLmMmJihJci5lLmM9Um4pLEowPVtdLCFYLnNoZWV0U3R1YnMpeysrUm47YnJlYWt9aFQoIiIsIiIse30sImNvbW1lbnQiPT1V''@;'; put 'put ''ZVtVZS5sZW5ndGgtMV1bMF0/aW86THQse2M6Um4scjpWbn0saWksYjBbUm5dLHp0LERpLFgpfWlmKEowLmxlbmd0aD4wJiYoTHQuYz1KMCksKCFYLnNoZWV0Um93c3x8WC5zaGVldFJvd3M+Vm4pJiYodm9pZCAwIT09THQudnx8WC5zaGVldFN0dWJzKSYmKFguZGVuc2U/KFF0W1ZuXXx8KFF0''@;'; put 'put ''W1ZuXT1bXSksUXRbVm5dW1JuXT1MdCk6UXRbTGwoUm4pK2hhKFZuKV09THQpLEx0LkhSZWYmJihMdC5sPXtUYXJnZXQ6Z3IoTHQuSFJlZil9LEx0LkhSZWZTY3JlZW5UaXAmJihMdC5sLlRvb2x0aXA9THQuSFJlZlNjcmVlblRpcCksZGVsZXRlIEx0LkhSZWYsZGVsZXRlIEx0LkhSZWZTY3Jl''@;'; put 'put ''ZW5UaXApLChMdC5NZXJnZUFjcm9zc3x8THQuTWVyZ2VEb3duKSYmKE1pPVJuKygwfHBhcnNlSW50KEx0Lk1lcmdlQWNyb3NzLDEwKSksWjA9Vm4rKDB8cGFyc2VJbnQoTHQuTWVyZ2VEb3duLDEwKSksKE1pPlJufHxaMD5WbikmJldyLnB1c2goe3M6e2M6Um4scjpWbn0sZTp7YzpNaSxyOlow''@;'; put 'put ''fX0pKSxYLnNoZWV0U3R1YnMpaWYoTHQuTWVyZ2VBY3Jvc3N8fEx0Lk1lcmdlRG93bil7Zm9yKHZhciBYMD1SbjtYMDw9TWk7KytYMClmb3IodmFyIHppPVZuO3ppPD1aMDsrK3ppKShYMD5Sbnx8emk+Vm4pJiYoWC5kZW5zZT8oUXRbemldfHwoUXRbemldPVtdKSxRdFt6aV1bWDBdPXt0OiJ6''@;'; put 'put ''In0pOlF0W0xsKFgwKStoYSh6aSldPXt0OiJ6In0pO1JuPU1pKzF9ZWxzZSsrUm47ZWxzZSBMdC5NZXJnZUFjcm9zcz9Sbj1NaSsxOisrUm59ZWxzZShMdD1xXyhWZVswXSkpLkluZGV4JiYoUm49K0x0LkluZGV4LTEpLFJuPElyLnMuYyYmKElyLnMuYz1SbiksUm4+SXIuZS5jJiYoSXIuZS5j''@;'; put 'put ''PVJuKSwiLz4iPT09VmVbMF0uc2xpY2UoLTIpJiYrK1JuLEowPVtdO2JyZWFrO2Nhc2Uicm93IjoiLyI9PT1WZVsxXXx8Ii8+Ij09PVZlWzBdLnNsaWNlKC0yKT8oVm48SXIucy5yJiYoSXIucy5yPVZuKSxWbj5Jci5lLnImJihJci5lLnI9Vm4pLCIvPiI9PT1WZVswXS5zbGljZSgtMikmJih6''@;'; put 'put ''dD1CdShWZVswXSkpLkluZGV4JiYoVm49K3p0LkluZGV4LTEpLFJuPTAsKytWbik6KCh6dD1CdShWZVswXSkpLkluZGV4JiYoVm49K3p0LkluZGV4LTEpLEhyPXt9LCgiMCI9PXp0LkF1dG9GaXRIZWlnaHR8fHp0LkhlaWdodCkmJihIci5ocHQ9cGFyc2VGbG9hdCh6dC5IZWlnaHQpLEhyLmhw''@;'; put 'put ''eD1tZihIci5ocHQpLGNpW1ZuXT1IciksIjEiPT16dC5IaWRkZW4mJihIci5oaWRkZW49ITAsY2lbVm5dPUhyKSk7YnJlYWs7Y2FzZSJ3b3Jrc2hlZXQiOmlmKCIvIj09PVZlWzFdKXtpZigoU3Q9VWUucG9wKCkpWzBdIT09VmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrU3Qu''@;'; put 'put ''am9pbigifCIpKTtQdC5wdXNoKGFuKSxJci5zLnI8PUlyLmUuciYmSXIucy5jPD1Jci5lLmMmJihRdFsiIXJlZiJdPUFhKElyKSxYLnNoZWV0Um93cyYmWC5zaGVldFJvd3M8PUlyLmUuciYmKFF0WyIhZnVsbHJlZiJdPVF0WyIhcmVmIl0sSXIuZS5yPVguc2hlZXRSb3dzLTEsUXRbIiFyZWYi''@;'; put 'put ''XT1BYShJcikpKSxXci5sZW5ndGgmJihRdFsiIW1lcmdlcyJdPVdyKSxiMC5sZW5ndGg+MCYmKFF0WyIhY29scyJdPWIwKSxjaS5sZW5ndGg+MCYmKFF0WyIhcm93cyJdPWNpKSxDbiYmKFF0WyIhc2hlZXRGb3JtYXQiXT1jNShDbikpLEl0W2FuXT1RdH1lbHNlIElyPXtzOntyOjJlNixjOjJl''@;'; put 'put ''Nn0sZTp7cjowLGM6MH19LFZuPVJuPTAsVWUucHVzaChbVmVbM10sITFdKSxTdD1CdShWZVswXSksYW49Z3IoU3QuTmFtZSksUXQ9WC5kZW5zZT9bXTp7fSxXcj1bXSxEaT1bXSxjaT1bXSxuMC5TaGVldHMucHVzaChmbz17bmFtZTphbixIaWRkZW46MH0pO2JyZWFrO2Nhc2UidGFibGUiOmlm''@;'; put 'put ''KCIvIj09PVZlWzFdKXtpZigoU3Q9VWUucG9wKCkpWzBdIT09VmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrU3Quam9pbigifCIpKX1lbHNle2lmKCIvPiI9PVZlWzBdLnNsaWNlKC0yKSlicmVhaztDbj1CdShWZVswXSksVWUucHVzaChbVmVbM10sITFdKSxiMD1bXSx6cj0h''@;'; put 'put ''MX1icmVhaztjYXNlInN0eWxlIjoiLyI9PT1WZVsxXT9XUChpaSx5cixvaSxYKTooeXI9QnUoVmVbMF0pLG9pPSIiKTticmVhaztjYXNlIm51bWJlcmZvcm1hdCI6eXIubmY9Z3IoQnUoVmVbMF0pLkZvcm1hdHx8IkdlbmVyYWwiKSxDZVt5ci5uZl0mJih5ci5uZj1DZVt5ci5uZl0pO2Zvcih2''@;'; put 'put ''YXIgZzA9MDszOTIhPWcwJiZGLl90YWJsZVtnMF0hPXlyLm5mOysrZzApO2lmKDM5Mj09ZzApZm9yKGcwPTU3OzM5MiE9ZzA7KytnMClpZihudWxsPT1GLl90YWJsZVtnMF0pe0YubG9hZCh5ci5uZixnMCk7YnJlYWt9YnJlYWs7Y2FzZSJjb2x1bW4iOmlmKCJ0YWJsZSIhPT1VZVtVZS5sZW5n''@;'; put 'put ''dGgtMV1bMF18fCIvIj09PVZlWzFdKWJyZWFrO2lmKChiaT1CdShWZVswXSkpLkhpZGRlbiYmKGJpLmhpZGRlbj0hMCxkZWxldGUgYmkuSGlkZGVuKSxiaS5XaWR0aD9iaS53cHg9NCpwYXJzZUludChiaS5XaWR0aCwxMCkvMzorYmkuQXV0b0ZpdFdpZHRoJiYoYmkuYXV0bz0xKSwhenImJmJp''@;'; put 'put ''LndweD4xMCl7enI9ITAsdDE9Njtmb3IodmFyIFMwPTA7UzA8YjAubGVuZ3RoOysrUzApYjBbUzBdJiZiYyhiMFtTMF0pfXpyJiZiYyhiaSksYjBbYmkuSW5kZXgtMXx8YjAubGVuZ3RoXT1iaTtmb3IodmFyIEFpPTA7QWk8K2JpLlNwYW47KytBaSliMFtiMC5sZW5ndGhdPWxuKGJpKTticmVh''@;'; put 'put ''aztjYXNlIm5hbWVkcmFuZ2UiOmlmKCIvIj09PVZlWzFdKWJyZWFrO24wLk5hbWVzfHwobjAuTmFtZXM9W10pO3ZhciB4MD1xdChWZVswXSksZjA9e05hbWU6eDAuTmFtZSxSZWY6bTYoeDAuUmVmZXJzVG8uc2xpY2UoMSkse3I6MCxjOjB9KX07bjAuU2hlZXRzLmxlbmd0aD4wJiYoZjAuU2hl''@;'; put 'put ''ZXQ9bjAuU2hlZXRzLmxlbmd0aC0xKSxuMC5OYW1lcy5wdXNoKGYwKTticmVhaztjYXNlIm5hbWVkY2VsbCI6Y2FzZSJiIjpjYXNlImkiOmNhc2UidSI6Y2FzZSJzIjpjYXNlImVtIjpjYXNlImgyIjpjYXNlImgzIjpjYXNlInN1YiI6Y2FzZSJzdXAiOmNhc2Uic3BhbiI6Y2FzZSJwcm90ZWN0''@;'; put 'put ''aW9uIjpjYXNlInBhcmFncmFwaHMiOmNhc2UibmFtZSI6YnJlYWs7Y2FzZSJhbGlnbm1lbnQiOmlmKCFYLmNlbGxTdHlsZXN8fCIvIj09PVZlWzFdKWJyZWFrO3lyLkFsaWdubWVudD1CdShWZVswXSk7YnJlYWs7Y2FzZSJib3JkZXJzIjoiLyIhPT1WZVsxXSYmKHlyLkJvcmRlcnM9W10pO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiYm9yZGVyIjppZigiLyI9PT1WZVsxXSlicmVhazt5ci5Cb3JkZXJzfHwoeXIuQm9yZGVycz1bXSkseXIuQm9yZGVycy5wdXNoKEJ1KFZlWzBdKSk7YnJlYWs7Y2FzZSJmb250IjppZigiLz4iPT09VmVbMF0uc2xpY2UoLTIpKXtvaSs9VmVbMF07YnJlYWt9Ii8iPT09VmVbMV0/''@;'; put 'put ''b2krPXdlLnNsaWNlKE1yLFZlLmluZGV4K1ZlWzBdLmxlbmd0aCk6TXI9VmUuaW5kZXg7YnJlYWs7Y2FzZSJpbnRlcmlvciI6aWYoIVguY2VsbFN0eWxlc3x8Ii8iPT09VmVbMV0pYnJlYWs7eXIuSW50ZXJpb3I9QnUoVmVbMF0pO2JyZWFrO2Nhc2UiYXV0aG9yIjpjYXNlInRpdGxlIjpjYXNl''@;'; put 'put ''ImRlc2NyaXB0aW9uIjpjYXNlImNyZWF0ZWQiOmNhc2Uia2V5d29yZHMiOmNhc2Uic3ViamVjdCI6Y2FzZSJjYXRlZ29yeSI6Y2FzZSJjb21wYW55IjpjYXNlImxhc3RhdXRob3IiOmNhc2UibGFzdHNhdmVkIjpjYXNlImxhc3RwcmludGVkIjpjYXNlInZlcnNpb24iOmNhc2UicmV2aXNpb24i''@;'; put 'put ''OmNhc2UidG90YWx0aW1lIjpjYXNlImh5cGVybGlua2Jhc2UiOmNhc2UibWFuYWdlciI6Y2FzZSJjb250ZW50c3RhdHVzIjpjYXNlImlkZW50aWZpZXIiOmNhc2UibGFuZ3VhZ2UiOmNhc2UiYXBwbmFtZSI6aWYoIi8+Ij09PVZlWzBdLnNsaWNlKC0yKSlicmVhazsiLyI9PT1WZVsxXT9HbChh''@;'; put 'put ''aSxpYSx3ZS5zbGljZShmcixWZS5pbmRleCkpOmZyPVZlLmluZGV4K1ZlWzBdLmxlbmd0aDticmVhaztjYXNlInN0eWxlcyI6Y2FzZSJ3b3JrYm9vayI6aWYoIi8iPT09VmVbMV0pe2lmKChTdD1VZS5wb3AoKSlbMF0hPT1WZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitTdC5q''@;'; put 'put ''b2luKCJ8IikpfWVsc2UgVWUucHVzaChbVmVbM10sITFdKTticmVhaztjYXNlImNvbW1lbnQiOmlmKCIvIj09PVZlWzFdKXtpZigoU3Q9VWUucG9wKCkpWzBdIT09VmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrU3Quam9pbigifCIpKTtvYyhpbyksSjAucHVzaChpbyl9ZWxz''@;'; put 'put ''ZSBVZS5wdXNoKFtWZVszXSwhMV0pLGlvPXthOihTdD1CdShWZVswXSkpLkF1dGhvcn07YnJlYWs7Y2FzZSJhdXRvZmlsdGVyIjppZigiLyI9PT1WZVsxXSl7aWYoKFN0PVVlLnBvcCgpKVswXSE9PVZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK1N0LmpvaW4oInwiKSl9ZWxz''@;'; put 'put ''ZSBpZigiLyIhPT1WZVswXS5jaGFyQXQoVmVbMF0ubGVuZ3RoLTIpKXt2YXIganI9QnUoVmVbMF0pO1F0WyIhYXV0b2ZpbHRlciJdPXtyZWY6bTYoanIuUmFuZ2UpLnJlcGxhY2UoL1wkL2csIiIpfSxVZS5wdXNoKFtWZVszXSwhMF0pfWJyZWFrO2Nhc2UiZGF0YXZhbGlkYXRpb24iOmlmKFF0''@;'; put 'put ''WyIhdmFsaWRhdGlvbnMiXXx8KFF0WyIhdmFsaWRhdGlvbnMiXT1bXSksIi8iPT09VmVbMV0pe2lmKChTdD1VZS5wb3AoKSlbMF0hPT1WZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitTdC5qb2luKCJ8IikpfWVsc2UiLyIhPT1WZVswXS5jaGFyQXQoVmVbMF0ubGVuZ3RoLTIp''@;'; put 'put ''JiZVZS5wdXNoKFtWZVszXSwhMF0pLHcwPXt9O2JyZWFrO2Nhc2UicGl4ZWxzcGVyaW5jaCI6aWYoIi8iPT09VmVbMV0pe3ZhciBDYT0rd2Uuc2xpY2UoSW4sVmUuaW5kZXgpOyg3Mj09Q2F8fDk2PT1DYSkmJk1oKENhKX1lbHNlIEluPVZlLmluZGV4K1ZlWzBdLmxlbmd0aDticmVhaztjYXNl''@;'; put 'put ''ImNvbXBvbmVudG9wdGlvbnMiOmNhc2UiZG9jdW1lbnRwcm9wZXJ0aWVzIjpjYXNlImN1c3RvbWRvY3VtZW50cHJvcGVydGllcyI6Y2FzZSJvZmZpY2Vkb2N1bWVudHNldHRpbmdzIjpjYXNlInBpdm90dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6Y2FzZSJuYW1lcyI6Y2FzZSJtYXBpbmZvIjpj''@;'; put 'put ''YXNlInBhZ2VicmVha3MiOmNhc2UicXVlcnl0YWJsZSI6Y2FzZSJzb3J0aW5nIjpjYXNlInNjaGVtYSI6Y2FzZSJjb25kaXRpb25hbGZvcm1hdHRpbmciOmNhc2Uic21hcnR0YWd0eXBlIjpjYXNlInNtYXJ0dGFncyI6Y2FzZSJleGNlbHdvcmtib29rIjpjYXNlIndvcmtib29rb3B0aW9ucyI6''@;'; put 'put ''Y2FzZSJ3b3Jrc2hlZXRvcHRpb25zIjppZigiLyI9PT1WZVsxXSl7aWYoKFN0PVVlLnBvcCgpKVswXSE9PVZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK1N0LmpvaW4oInwiKSl9ZWxzZSIvIiE9PVZlWzBdLmNoYXJBdChWZVswXS5sZW5ndGgtMikmJlVlLnB1c2goW1ZlWzNd''@;'; put 'put ''LCEwXSk7YnJlYWs7ZGVmYXVsdDppZigwPT1VZS5sZW5ndGgmJiJkb2N1bWVudCI9PVZlWzNdfHwwPT1VZS5sZW5ndGgmJiJ1b2YiPT1WZVszXSlyZXR1cm4gYWMod2UsWCk7dmFyIHNzPSEwO3N3aXRjaChVZVtVZS5sZW5ndGgtMV1bMF0pe2Nhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0aW5ncyI6''@;'; put 'put ''c3dpdGNoKFZlWzNdKXtjYXNlImFsbG93cG5nIjpjYXNlInJlbW92ZXBlcnNvbmFsaW5mb3JtYXRpb24iOmNhc2UiZG93bmxvYWRjb21wb25lbnRzIjpjYXNlImxvY2F0aW9ub2Zjb21wb25lbnRzIjpjYXNlImNvbG9ycyI6Y2FzZSJjb2xvciI6Y2FzZSJpbmRleCI6Y2FzZSJyZ2IiOmNhc2Ui''@;'; put 'put ''dGFyZ2V0c2NyZWVuc2l6ZSI6Y2FzZSJyZWFkb25seXJlY29tbWVuZGVkIjpicmVhaztkZWZhdWx0OnNzPSExfWJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6c3dpdGNoKFZlWzNdKXtjYXNlInRvb2xiYXIiOmNhc2UiaGlkZW9mZmljZWxvZ28iOmNhc2Uic3ByZWFkc2hlZXRhdXRvZml0''@;'; put 'put ''IjpjYXNlImxhYmVsIjpjYXNlImNhcHRpb24iOmNhc2UibWF4aGVpZ2h0IjpjYXNlIm1heHdpZHRoIjpjYXNlIm5leHRzaGVldG51bWJlciI6YnJlYWs7ZGVmYXVsdDpzcz0hMX1icmVhaztjYXNlImV4Y2Vsd29ya2Jvb2siOnN3aXRjaChWZVszXSl7Y2FzZSJkYXRlMTkwNCI6bjAuV0JQcm9w''@;'; put 'put ''cy5kYXRlMTkwND0hMDticmVhaztjYXNlIndpbmRvd2hlaWdodCI6Y2FzZSJ3aW5kb3d3aWR0aCI6Y2FzZSJ3aW5kb3d0b3B4IjpjYXNlIndpbmRvd3RvcHkiOmNhc2UidGFicmF0aW8iOmNhc2UicHJvdGVjdHN0cnVjdHVyZSI6Y2FzZSJwcm90ZWN0d2luZG93IjpjYXNlInByb3RlY3R3aW5k''@;'; put 'put ''b3dzIjpjYXNlImFjdGl2ZXNoZWV0IjpjYXNlImRpc3BsYXlpbmtub3RlcyI6Y2FzZSJmaXJzdHZpc2libGVzaGVldCI6Y2FzZSJzdXBib29rIjpjYXNlInNoZWV0bmFtZSI6Y2FzZSJzaGVldGluZGV4IjpjYXNlInNoZWV0aW5kZXhmaXJzdCI6Y2FzZSJzaGVldGluZGV4bGFzdCI6Y2FzZSJk''@;'; put 'put ''bGwiOmNhc2UiYWNjZXB0bGFiZWxzaW5mb3JtdWxhcyI6Y2FzZSJkb25vdHNhdmVsaW5rdmFsdWVzIjpjYXNlIml0ZXJhdGlvbiI6Y2FzZSJtYXhpdGVyYXRpb25zIjpjYXNlIm1heGNoYW5nZSI6Y2FzZSJwYXRoIjpjYXNlInhjdCI6Y2FzZSJjb3VudCI6Y2FzZSJzZWxlY3RlZHNoZWV0cyI6''@;'; put 'put ''Y2FzZSJjYWxjdWxhdGlvbiI6Y2FzZSJ1bmNhbGNlZCI6Y2FzZSJzdGFydHVwcHJvbXB0IjpjYXNlImNybiI6Y2FzZSJleHRlcm5uYW1lIjpjYXNlImZvcm11bGEiOmNhc2UiY29sZmlyc3QiOmNhc2UiY29sbGFzdCI6Y2FzZSJ3YW50YWR2aXNlIjpjYXNlImJvb2xlYW4iOmNhc2UiZXJyb3Ii''@;'; put 'put ''OmNhc2UidGV4dCI6Y2FzZSJvbGUiOmNhc2Uibm9hdXRvcmVjb3ZlciI6Y2FzZSJwdWJsaXNob2JqZWN0cyI6Y2FzZSJkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUiOmNhc2UibnVtYmVyIjpjYXNlInJlZm1vZGVyMWMxIjpjYXNlImVtYmVkc2F2ZXNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpz''@;'; put 'put ''cz0hMX1icmVhaztjYXNlIndvcmtib29rb3B0aW9ucyI6c3dpdGNoKFZlWzNdKXtjYXNlIm93Y3ZlcnNpb24iOmNhc2UiaGVpZ2h0IjpjYXNlIndpZHRoIjpicmVhaztkZWZhdWx0OnNzPSExfWJyZWFrO2Nhc2Uid29ya3NoZWV0b3B0aW9ucyI6c3dpdGNoKFZlWzNdKXtjYXNlInZpc2libGUi''@;'; put 'put ''OmlmKCIvPiIhPT1WZVswXS5zbGljZSgtMikpaWYoIi8iPT09VmVbMV0pc3dpdGNoKHdlLnNsaWNlKGZyLFZlLmluZGV4KSl7Y2FzZSJTaGVldEhpZGRlbiI6Zm8uSGlkZGVuPTE7YnJlYWs7Y2FzZSJTaGVldFZlcnlIaWRkZW4iOmZvLkhpZGRlbj0yfWVsc2UgZnI9VmUuaW5kZXgrVmVbMF0u''@;'; put 'put ''bGVuZ3RoO2JyZWFrO2Nhc2UiaGVhZGVyIjpRdFsiIW1hcmdpbnMiXXx8RGgoUXRbIiFtYXJnaW5zIl09e30sInhsbWwiKSxRdFsiIW1hcmdpbnMiXS5oZWFkZXI9cXQoVmVbMF0pLk1hcmdpbjticmVhaztjYXNlImZvb3RlciI6UXRbIiFtYXJnaW5zIl18fERoKFF0WyIhbWFyZ2lucyJdPXt9''@;'; put 'put ''LCJ4bG1sIiksUXRbIiFtYXJnaW5zIl0uZm9vdGVyPXF0KFZlWzBdKS5NYXJnaW47YnJlYWs7Y2FzZSJwYWdlbWFyZ2lucyI6dmFyIF9sPXF0KFZlWzBdKTtRdFsiIW1hcmdpbnMiXXx8RGgoUXRbIiFtYXJnaW5zIl09e30sInhsbWwiKSxfbC5Ub3AmJihRdFsiIW1hcmdpbnMiXS50b3A9X2wu''@;'; put 'put ''VG9wKSxfbC5MZWZ0JiYoUXRbIiFtYXJnaW5zIl0ubGVmdD1fbC5MZWZ0KSxfbC5SaWdodCYmKFF0WyIhbWFyZ2lucyJdLnJpZ2h0PV9sLlJpZ2h0KSxfbC5Cb3R0b20mJihRdFsiIW1hcmdpbnMiXS5ib3R0b209X2wuQm90dG9tKTticmVhaztjYXNlImRpc3BsYXlyaWdodHRvbGVmdCI6bjAu''@;'; put 'put ''Vmlld3N8fChuMC5WaWV3cz1bXSksbjAuVmlld3NbMF18fChuMC5WaWV3c1swXT17fSksbjAuVmlld3NbMF0uUlRMPSEwO2JyZWFrO2Nhc2UiZnJlZXplcGFuZXMiOmNhc2UiZnJvemVubm9zcGxpdCI6Y2FzZSJhY3RpdmVyb3ciOmNhc2UiYWN0aXZlY29sIjpjYXNlInRvcHJvd2JvdHRvbXBh''@;'; put 'put ''bmUiOmNhc2UibGVmdGNvbHVtbnJpZ2h0cGFuZSI6Y2FzZSJ1bnN5bmNlZCI6Y2FzZSJwcmludCI6Y2FzZSJwcmludGVycm9ycyI6Y2FzZSJwYW5lcyI6Y2FzZSJzY2FsZSI6Y2FzZSJwYW5lIjpjYXNlIm51bWJlciI6Y2FzZSJsYXlvdXQiOmNhc2UicGFnZXNldHVwIjpjYXNlInNlbGVjdGVk''@;'; put 'put ''IjpjYXNlInByb3RlY3RvYmplY3RzIjpjYXNlImVuYWJsZXNlbGVjdGlvbiI6Y2FzZSJwcm90ZWN0c2NlbmFyaW9zIjpjYXNlInZhbGlkcHJpbnRlcmluZm8iOmNhc2UiaG9yaXpvbnRhbHJlc29sdXRpb24iOmNhc2UidmVydGljYWxyZXNvbHV0aW9uIjpjYXNlIm51bWJlcm9mY29waWVzIjpj''@;'; put 'put ''YXNlImFjdGl2ZXBhbmUiOmNhc2UidG9wcm93dmlzaWJsZSI6Y2FzZSJsZWZ0Y29sdW1udmlzaWJsZSI6Y2FzZSJmaXR0b3BhZ2UiOmNhc2UicmFuZ2VzZWxlY3Rpb24iOmNhc2UicGFwZXJzaXplaW5kZXgiOmNhc2UicGFnZWxheW91dHpvb20iOmNhc2UicGFnZWJyZWFrem9vbSI6Y2FzZSJm''@;'; put 'put ''aWx0ZXJvbiI6Y2FzZSJmaXR3aWR0aCI6Y2FzZSJmaXRoZWlnaHQiOmNhc2UiY29tbWVudHNsYXlvdXQiOmNhc2Uiem9vbSI6Y2FzZSJsZWZ0dG9yaWdodCI6Y2FzZSJncmlkbGluZXMiOmNhc2UiYWxsb3dzb3J0IjpjYXNlImFsbG93ZmlsdGVyIjpjYXNlImFsbG93aW5zZXJ0cm93cyI6Y2Fz''@;'; put 'put ''ZSJhbGxvd2RlbGV0ZXJvd3MiOmNhc2UiYWxsb3dpbnNlcnRjb2xzIjpjYXNlImFsbG93ZGVsZXRlY29scyI6Y2FzZSJhbGxvd2luc2VydGh5cGVybGlua3MiOmNhc2UiYWxsb3dmb3JtYXRjZWxscyI6Y2FzZSJhbGxvd3NpemVjb2xzIjpjYXNlImFsbG93c2l6ZXJvd3MiOmNhc2UidGFiY29s''@;'; put 'put ''b3JpbmRleCI6Y2FzZSJkb25vdGRpc3BsYXloZWFkaW5ncyI6Y2FzZSJzaG93cGFnZWxheW91dHpvb20iOmNhc2UiYmxhY2thbmR3aGl0ZSI6Y2FzZSJkb25vdGRpc3BsYXl6ZXJvcyI6Y2FzZSJkaXNwbGF5cGFnZWJyZWFrIjpjYXNlInJvd2NvbGhlYWRpbmdzIjpjYXNlImRvbm90ZGlzcGxh''@;'; put 'put ''eW91dGxpbmUiOmNhc2Uibm9vcmllbnRhdGlvbiI6Y2FzZSJhbGxvd3VzZXBpdm90dGFibGVzIjpjYXNlInplcm9oZWlnaHQiOmNhc2Uidmlld2FibGVyYW5nZSI6Y2FzZSJzZWxlY3Rpb24iOmNhc2UicHJvdGVjdGNvbnRlbnRzIjpicmVhaztjYXNlInNwbGl0aG9yaXpvbnRhbCI6Y2FzZSJz''@;'; put 'put ''cGxpdHZlcnRpY2FsIjppZigiLz4iIT09VmVbMF0uc2xpY2UoLTIpKWlmKCIvIj09VmVbMV0pe1F0WyIhZnJlZXplIl18fChRdFsiIWZyZWV6ZSJdPSJBMSIpO3ZhciBRYT1wbyhRdFsiIWZyZWV6ZSJdKTsic3BsaXRob3Jpem9udGFsIj09VmVbM10/UWEucj0rd2Uuc2xpY2UoZnIsVmUuaW5k''@;'; put 'put ''ZXgpOlFhLmM9K3dlLnNsaWNlKGZyLFZlLmluZGV4KSxRdFsiIWZyZWV6ZSJdPVEwKFFhKX1lbHNlIGZyPVZlLmluZGV4K1ZlWzBdLmxlbmd0aDticmVhaztjYXNlImRvbm90ZGlzcGxheWdyaWRsaW5lcyI6UXRbIiFncmlkbGluZXMiXT0hMTticmVhaztjYXNlIm5vc3VtbWFyeXJvd3NiZWxv''@;'; put 'put ''d2RldGFpbCI6UXRbIiFvdXRsaW5lIl18fChRdFsiIW91dGxpbmUiXT17fSksUXRbIiFvdXRsaW5lIl0uYWJvdmU9ITA7YnJlYWs7Y2FzZSJub3N1bW1hcnljb2x1bW5zcmlnaHRkZXRhaWwiOlF0WyIhb3V0bGluZSJdfHwoUXRbIiFvdXRsaW5lIl09e30pLFF0WyIhb3V0bGluZSJdLmxlZnQ9''@;'; put 'put ''ITA7YnJlYWs7ZGVmYXVsdDpzcz0hMX1icmVhaztjYXNlInBpdm90dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6c3dpdGNoKFZlWzNdKXtjYXNlImltbWVkaWF0ZWl0ZW1zb25kcm9wIjpjYXNlInNob3dwYWdlbXVsdGlwbGVpdGVtbGFiZWwiOmNhc2UiY29tcGFjdHJvd2luZGVudCI6Y2FzZSJs''@;'; put 'put ''b2NhdGlvbiI6Y2FzZSJwaXZvdGZpZWxkIjpjYXNlIm9yaWVudGF0aW9uIjpjYXNlImxheW91dGZvcm0iOmNhc2UibGF5b3V0c3VidG90YWxsb2NhdGlvbiI6Y2FzZSJsYXlvdXRjb21wYWN0cm93IjpjYXNlInBvc2l0aW9uIjpjYXNlInBpdm90aXRlbSI6Y2FzZSJkYXRhdHlwZSI6Y2FzZSJk''@;'; put 'put ''YXRhZmllbGQiOmNhc2Uic291cmNlbmFtZSI6Y2FzZSJwYXJlbnRmaWVsZCI6Y2FzZSJwdGxpbmVpdGVtcyI6Y2FzZSJwdGxpbmVpdGVtIjpjYXNlImNvdW50b2ZzYW1laXRlbXMiOmNhc2UiaXRlbSI6Y2FzZSJpdGVtdHlwZSI6Y2FzZSJwdHNvdXJjZSI6Y2FzZSJjYWNoZWluZGV4IjpjYXNl''@;'; put 'put ''ImNvbnNvbGlkYXRpb25yZWZlcmVuY2UiOmNhc2UiZmlsZW5hbWUiOmNhc2UicmVmZXJlbmNlIjpjYXNlIm5vY29sdW1uZ3JhbmQiOmNhc2Uibm9yb3dncmFuZCI6Y2FzZSJibGFua2xpbmVhZnRlcml0ZW1zIjpjYXNlImhpZGRlbiI6Y2FzZSJzdWJ0b3RhbCI6Y2FzZSJiYXNlZmllbGQiOmNh''@;'; put 'put ''c2UibWFwY2hpbGRpdGVtcyI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJyZWZyZXNob25maWxlb3BlbiI6Y2FzZSJwcmludHNldHRpdGxlcyI6Y2FzZSJtZXJnZWxhYmVscyI6Y2FzZSJkZWZhdWx0dmVyc2lvbiI6Y2FzZSJyZWZyZXNobmFtZSI6Y2FzZSJyZWZyZXNoZGF0ZSI6Y2FzZSJyZWZyZXNo''@;'; put 'put ''ZGF0ZWNvcHkiOmNhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpjYXNlInZlcnNpb25sYXN0dXBkYXRlIjpjYXNlInZlcnNpb251cGRhdGVhYmxlbWluIjpjYXNlInZlcnNpb25yZWZyZXNoYWJsZW1pbiI6Y2FzZSJjYWxjdWxhdGlvbiI6YnJlYWs7ZGVmYXVsdDpzcz0hMX1icmVhaztjYXNlInBh''@;'; put 'put ''Z2VicmVha3MiOnN3aXRjaChWZVszXSl7Y2FzZSJjb2xicmVha3MiOmNhc2UiY29sYnJlYWsiOmNhc2Uicm93YnJlYWtzIjpjYXNlInJvd2JyZWFrIjpjYXNlImNvbHN0YXJ0IjpjYXNlImNvbGVuZCI6Y2FzZSJyb3dlbmQiOmJyZWFrO2RlZmF1bHQ6c3M9ITF9YnJlYWs7Y2FzZSJhdXRvZmls''@;'; put 'put ''dGVyIjpzd2l0Y2goVmVbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6Y2FzZSJhdXRvZmlsdGVyY29uZGl0aW9uIjpjYXNlImF1dG9maWx0ZXJhbmQiOmNhc2UiYXV0b2ZpbHRlcm9yIjpicmVhaztkZWZhdWx0OnNzPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKFZlWzNdKXtj''@;'; put 'put ''YXNlImlkIjpjYXNlImF1dG9mb3JtYXRmb250IjpjYXNlImF1dG9mb3JtYXRwYXR0ZXJuIjpjYXNlInF1ZXJ5c291cmNlIjpjYXNlInF1ZXJ5dHlwZSI6Y2FzZSJlbmFibGVyZWRpcmVjdGlvbnMiOmNhc2UicmVmcmVzaGVkaW54bDkiOmNhc2UidXJsc3RyaW5nIjpjYXNlImh0bWx0YWJsZXMi''@;'; put 'put ''OmNhc2UiY29ubmVjdGlvbiI6Y2FzZSJjb21tYW5kdGV4dCI6Y2FzZSJyZWZyZXNoaW5mbyI6Y2FzZSJub3RpdGxlcyI6Y2FzZSJuZXh0aWQiOmNhc2UiY29sdW1uaW5mbyI6Y2FzZSJvdmVyd3JpdGVjZWxscyI6Y2FzZSJkb25vdHByb21wdGZvcmZpbGUiOmNhc2UidGV4dHdpemFyZHNldHRp''@;'; put 'put ''bmdzIjpjYXNlInNvdXJjZSI6Y2FzZSJudW1iZXIiOmNhc2UiZGVjaW1hbCI6Y2FzZSJ0aG91c2FuZHNlcGFyYXRvciI6Y2FzZSJ0cmFpbGluZ21pbnVzbnVtYmVycyI6Y2FzZSJmb3JtYXRzZXR0aW5ncyI6Y2FzZSJmaWVsZHR5cGUiOmNhc2UiZGVsaW1pdGVycyI6Y2FzZSJ0YWIiOmNhc2Ui''@;'; put 'put ''Y29tbWEiOmNhc2UiYXV0b2Zvcm1hdG5hbWUiOmNhc2UidmVyc2lvbmxhc3RlZGl0IjpjYXNlInZlcnNpb25sYXN0cmVmcmVzaCI6YnJlYWs7ZGVmYXVsdDpzcz0hMX1icmVhaztjYXNlImRhdGF2YWxpZGF0aW9uIjpzd2l0Y2goVmVbM10pe2Nhc2UicmFuZ2UiOncwLnJlZj1WZTticmVhaztj''@;'; put 'put ''YXNlInR5cGUiOmNhc2UibWluIjpjYXNlIm1heCI6Y2FzZSJzb3J0IjpjYXNlImRlc2NlbmRpbmciOmNhc2Uib3JkZXIiOmNhc2UiY2FzZXNlbnNpdGl2ZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJlcnJvcnN0eWxlIjpjYXNlImVycm9ybWVzc2FnZSI6Y2FzZSJlcnJvcnRpdGxlIjpjYXNlImlucHV0''@;'; put 'put ''bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJpbnB1dGhpZGUiOmNhc2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2VibGFuayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6Y2FzZSJjZWxscmFuZ2VsaXN0Ijpi''@;'; put 'put ''cmVhaztkZWZhdWx0OnNzPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25kaXRpb25hbGZvcm1hdHRpbmciOnN3aXRjaChWZVszXSl7Y2FzZSJyYW5nZSI6Y2FzZSJ0eXBlIjpjYXNlIm1pbiI6Y2FzZSJtYXgiOmNhc2Uic29ydCI6Y2FzZSJkZXNjZW5kaW5nIjpjYXNlIm9yZGVyIjpj''@;'; put 'put ''YXNlImNhc2VzZW5zaXRpdmUiOmNhc2UidmFsdWUiOmNhc2UiZXJyb3JzdHlsZSI6Y2FzZSJlcnJvcm1lc3NhZ2UiOmNhc2UiZXJyb3J0aXRsZSI6Y2FzZSJjZWxscmFuZ2VsaXN0IjpjYXNlImlucHV0bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJpbnB1''@;'; put 'put ''dGhpZGUiOmNhc2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2VibGFuayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6YnJlYWs7ZGVmYXVsdDpzcz0hMX1icmVhaztjYXNlIm1hcGluZm8iOmNhc2Uic2NoZW1hIjpjYXNlImRhdGEiOnN3aXRjaChW''@;'; put 'put ''ZVszXSl7Y2FzZSJtYXAiOmNhc2UiZW50cnkiOmNhc2UicmFuZ2UiOmNhc2UieHBhdGgiOmNhc2UiZmllbGQiOmNhc2UieHNkdHlwZSI6Y2FzZSJmaWx0ZXJvbiI6Y2FzZSJhZ2dyZWdhdGUiOmNhc2UiZWxlbWVudHR5cGUiOmNhc2UiYXR0cmlidXRldHlwZSI6Y2FzZSJzY2hlbWEiOmNhc2Ui''@;'; put 'put ''ZWxlbWVudCI6Y2FzZSJjb21wbGV4dHlwZSI6Y2FzZSJkYXRhdHlwZSI6Y2FzZSJhbGwiOmNhc2UiYXR0cmlidXRlIjpjYXNlImV4dGVuZHMiOmNhc2Uicm93IjpicmVhaztkZWZhdWx0OnNzPSExfWJyZWFrO2Nhc2Uic21hcnR0YWdzIjpicmVhaztkZWZhdWx0OnNzPSExfWlmKHNzfHxWZVsz''@;'; put 'put ''XS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZighVWVbVWUubGVuZ3RoLTFdWzFdKXRocm93IlVucmVjb2duaXplZCB0YWc6ICIrVmVbM10rInwiK1VlLmpvaW4oInwiKTtpZigiY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIj09PVVlW1VlLmxlbmd0aC0xXVswXSl7aWYoIi8+Ij09PVZlWzBd''@;'; put 'put ''LnNsaWNlKC0yKSlicmVhazsiLyI9PT1WZVsxXT9GaChuaSxpYSxoaSx3ZS5zbGljZShmcixWZS5pbmRleCkpOihoaT1WZSxmcj1WZS5pbmRleCtWZVswXS5sZW5ndGgpO2JyZWFrfWlmKFguV1RGKXRocm93IlVucmVjb2duaXplZCB0YWc6ICIrVmVbM10rInwiK1VlLmpvaW4oInwiKX12YXIg''@;'; put 'put ''aHM9e307cmV0dXJuIVguYm9va1NoZWV0cyYmIVguYm9va1Byb3BzJiYoaHMuU2hlZXRzPUl0KSxocy5TaGVldE5hbWVzPVB0LGhzLldvcmtib29rPW4wLGhzLlNTRj1GLmdldF90YWJsZSgpLGhzLlByb3BzPWFpLGhzLkN1c3Rwcm9wcz1uaSxocy5TaGVldHMmJmhzLlNoZWV0TmFtZXMuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihVYyl7dmFyIGcyPWhzLlNoZWV0c1tVY107ZzJbIiFtZXJnZXMiXSYmZzJbIiFtZXJnZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKHJyKXsic3RyaW5nIj09dHlwZW9mIHJyJiYocnI9VS51dGlscy5kZWNvZGVfcmFuZ2UocnIpKTt2YXIgRHI9VS51dGlscy5lbmNvZGVfY2Vs''@;'; put 'put ''bChyci5zKSxVcj1BcnJheS5pc0FycmF5KGcyKT8oZzJbcnIucy5yXXx8W10pW3JyLnMuY106ZzJbRHJdO1VyJiZVci5zJiYobnVsbCE9VXIucy50b3AmJmsxLnNoZWV0X3NldF9yYW5nZV9zdHlsZShnMixycix7dG9wOlVyLnMudG9wfSksbnVsbCE9VXIucy5ib3R0b20mJmsxLnNoZWV0X3Nl''@;'; put 'put ''dF9yYW5nZV9zdHlsZShnMixycix7Ym90dG9tOlVyLnMuYm90dG9tfSksbnVsbCE9VXIucy5sZWZ0JiZrMS5zaGVldF9zZXRfcmFuZ2Vfc3R5bGUoZzIscnIse2xlZnQ6VXIucy5sZWZ0fSksbnVsbCE9VXIucy5yaWdodCYmazEuc2hlZXRfc2V0X3JhbmdlX3N0eWxlKGcyLHJyLHtyaWdodDpV''@;'; put 'put ''ci5zLnJpZ2h0fSkpfSl9KSxoc31mdW5jdGlvbiBwVChILHJlKXtzd2l0Y2god2YocmU9cmV8fHt9KSxyZS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJiYXNlNjQiOnJldHVybiBQQShTZS5kZWNvZGUoSCkscmUpO2Nhc2UiYmluYXJ5IjpjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjpyZXR1cm4gUEEo''@;'; put 'put ''SCxyZSk7Y2FzZSJhcnJheSI6cmV0dXJuIFBBKHRlKEgpLHJlKX19ZnVuY3Rpb24gZ1QoSCl7cmV0dXJuIFNpKCJOYW1lZFJhbmdlIixudWxsLHsic3M6TmFtZSI6SC5OYW1lLCJzczpSZWZlcnNUbyI6Ij0iK2NfKEguUmVmLHtyOjAsYzowfSl9KX1mdW5jdGlvbiBHRyhILHJlLFgsd2UseGUs''@;'; put 'put ''RmUsWmUpe2lmKCFIfHxudWxsPT1ILnYmJm51bGw9PUguZiYmIXdlLnNoZWV0U3R1YnMpcmV0dXJuIiI7dmFyIFZlPXt9O2lmKEguZiYmKFZlWyJzczpGb3JtdWxhIl09Ij0iK09yKGNfKEguZixaZSkpKSxILkYmJkguRi5zbGljZSgwLHJlLmxlbmd0aCk9PXJlKXt2YXIgVWU9cG8oSC5GLnNs''@;'; put 'put ''aWNlKHJlLmxlbmd0aCsxKSk7VmVbInNzOkFycmF5UmFuZ2UiXT0iUkM6UiIrKFVlLnI9PVplLnI/IiI6IlsiKyhVZS5yLVplLnIpKyJdIikrIkMiKyhVZS5jPT1aZS5jPyIiOiJbIisoVWUuYy1aZS5jKSsiXSIpfWlmKEgubCYmSC5sLlRhcmdldCYmKFZlWyJzczpIUmVmIl09T3IoSC5sLlRh''@;'; put 'put ''cmdldCksSC5sLlRvb2x0aXAmJihWZVsieDpIUmVmU2NyZWVuVGlwIl09T3IoSC5sLlRvb2x0aXApKSksWFsiIW1lcmdlcyJdKWZvcih2YXIgU3Q9WFsiIW1lcmdlcyJdLEl0PTA7SXQhPVN0Lmxlbmd0aDsrK0l0KVN0W0l0XS5zLmMhPVplLmN8fFN0W0l0XS5zLnIhPVplLnJ8fChTdFtJdF0u''@;'; put 'put ''ZS5jPlN0W0l0XS5zLmMmJihWZVsic3M6TWVyZ2VBY3Jvc3MiXT1TdFtJdF0uZS5jLVN0W0l0XS5zLmMpLFN0W0l0XS5lLnI+U3RbSXRdLnMuciYmKFZlWyJzczpNZXJnZURvd24iXT1TdFtJdF0uZS5yLVN0W0l0XS5zLnIpKTt2YXIgUHQ9IiIsUXQ9IiI7c3dpdGNoKEgudCl7Y2FzZSJ6Ijpp''@;'; put 'put ''Zighd2Uuc2hlZXRTdHVicylyZXR1cm4iIjticmVhaztjYXNlIm4iOlB0PSJOdW1iZXIiLFF0PVN0cmluZyhILnYpO2JyZWFrO2Nhc2UiYiI6UHQ9IkJvb2xlYW4iLFF0PUgudj8iMSI6IjAiO2JyZWFrO2Nhc2UiZSI6UHQ9IkVycm9yIixRdD1OZltILnZdO2JyZWFrO2Nhc2UiZCI6UHQ9IkRh''@;'; put 'put ''dGVUaW1lIixRdD1uZXcgRGF0ZShILnYpLnRvSVNPU3RyaW5nKCksbnVsbD09SC56JiYoSC56PUguenx8Ri5fdGFibGVbMTRdKTticmVhaztjYXNlInMiOlB0PSJTdHJpbmciLFF0PWQwKEgudnx8IiIpfXZhciBhbj1yYyh3ZS5jZWxsWGZzLG51bGwsSCx3ZSk7VmVbInNzOlN0eWxlSUQiXT0i''@;'; put 'put ''cyIrKDIxK2FuKSxWZVsic3M6SW5kZXgiXT1aZS5jKzE7dmFyIENuPW51bGwhPUgudj9RdDoiIixMdD0ieiI9PUgudD8iIjpILlI/ZnVuY3Rpb24gQjIoSCl7cmV0dXJuJzxzczpEYXRhIHNzOlR5cGU9IlN0cmluZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPicr''@;'; put 'put ''SC5tYXAoZnVuY3Rpb24oWCl7dmFyIHdlPWQwKFgudik7cmV0dXJuIFgucyYmKFgucy5ib2xkJiYod2U9IjxCPiIrd2UrIjwvQj4iKSxYLnMuaXRhbGljJiYod2U9IjxJPiIrd2UrIjwvST4iKSxYLnMuc3RyaWtlJiYod2U9IjxTPiIrd2UrIjwvUz4iKSxYLnMudW5kZXJsaW5lJiYod2U9IjxV''@;'; put 'put ''PiIrd2UrIjwvVT4iKSwic3VwZXIiPT1YLnMudmFsaWduJiYod2U9IjxTdXA+Iit3ZSsiPC9TdXA+IiksInN1YiI9PVgucy52YWxpZ24mJih3ZT0iPFN1Yj4iK3dlKyI8L1N1Yj4iKSwoWC5zLm5hbWV8fFgucy5zenx8WC5zLmNvbG9yJiZudWxsIT1YLnMuY29sb3IucmdiKSYmKHdlPVsiPEZv''@;'; put 'put ''bnQiLFgucy5uYW1lPycgaHRtbDpGYWNlPSInK1gucy5uYW1lKyciJzoiIixYLnMuc3o/JyBodG1sOlNpemU9IicrWC5zLnN6KyciJzoiIixYLnMuY29sb3I/JyBodG1sOkNvbG9yPSIjJysoIjAwMDAwMCIrKCJudW1iZXIiPT10eXBlb2YgWC5zLmNvbG9yLnJnYj9YLnMuY29sb3IucmdiLnRv''@;'; put 'put ''U3RyaW5nKDE2KTpYLnMuY29sb3IucmdiKSkuc2xpY2UoLTYpKyciJzoiIiwiPiIsd2UsIjwvRm9udD4iXS5qb2luKCIiKSkpLHdlfSkuam9pbigiIikrIjwvRGF0YT4ifShILlIpOic8RGF0YSBzczpUeXBlPSInK1B0KyciPicrQ24rIjwvRGF0YT4iO3JldHVybihILmN8fFtdKS5sZW5ndGg+''@;'; put 'put ''MCYmKEx0Kz1mdW5jdGlvbiBIQShIKXtyZXR1cm4gSC5tYXAoZnVuY3Rpb24ocmUpe3ZhciB3ZT1TaSgic3M6RGF0YSIsZnVuY3Rpb24ocmUpe3JldHVybiByZS5yZXBsYWNlKC8oXHJcbnxbXHJcbl0pL2csIiYjMTA7Iil9KHJlLnR8fCIiKSx7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnL1RS''@;'; put 'put ''L1JFQy1odG1sNDAifSk7cmV0dXJuIFNpKCJDb21tZW50Iix3ZSx7InNzOkF1dGhvciI6cmUuYX0pfSkuam9pbigiIil9KEguYykpLFNpKCJDZWxsIixMdCxWZSl9ZnVuY3Rpb24gbVQoSCxyZSl7dmFyIFg9JzxSb3cgc3M6SW5kZXg9IicrKEgrMSkrJyInO3JldHVybiByZSYmKHJlLmhweCYm''@;'; put 'put ''IXJlLmhwdCYmKHJlLmhwdD1VZihyZS5ocHgpKSxyZS5ocHQmJihYKz0nIHNzOkF1dG9GaXRIZWlnaHQ9IjAiIHNzOkhlaWdodD0iJytyZS5ocHQrJyInKSxyZS5oaWRkZW4mJihYKz0nIHNzOkhpZGRlbj0iMSInKSksWCsiPiJ9ZnVuY3Rpb24gWFAoSCxyZSxYKXt2YXIgd2U9W10sRmU9WC5T''@;'; put 'put ''aGVldHNbWC5TaGVldE5hbWVzW0hdXSxaZT1GZT9mdW5jdGlvbiBKUChILHJlLFgsd2Upe2lmKCFIfHwhKCh3ZXx8e30pLldvcmtib29rfHx7fSkuTmFtZXMpcmV0dXJuIiI7Zm9yKHZhciB4ZT13ZS5Xb3JrYm9vay5OYW1lcyxGZT1bXSxaZT0wO1plPHhlLmxlbmd0aDsrK1plKXt2YXIgVmU9''@;'; put 'put ''eGVbWmVdO1ZlLlNoZWV0PT1YJiYoVmUuTmFtZS5tYXRjaCgvXl94bGZuXC4vKXx8RmUucHVzaChnVChWZSkpKX1yZXR1cm4gRmUuam9pbigiIil9KEZlLDAsSCxYKToiIjtyZXR1cm4gWmUubGVuZ3RoPjAmJndlLnB1c2goIjxOYW1lcz4iK1plKyI8L05hbWVzPiIpLFplPUZlP2Z1bmN0aW9u''@;'; put 'put ''IHZUKEgscmUsWCx3ZSl7aWYoIUhbIiFyZWYiXSlyZXR1cm4iIjt2YXIgeGU9ZWEoSFsiIXJlZiJdKSxGZT1IWyIhbWVyZ2VzIl18fFtdLFplPTAsVmU9W107SFsiIWNvbHMiXSYmSFsiIWNvbHMiXS5mb3JFYWNoKGZ1bmN0aW9uKHp0LGZuKXtiYyh6dCk7dmFyIEluPSEhenQud2lkdGgsUm49''@;'; put 'put ''eGQoZm4senQpLFZuPXsic3M6SW5kZXgiOmZuKzF9O0luJiYoVm5bInNzOldpZHRoIl09UDkoUm4ud2lkdGgpKSx6dC5oaWRkZW4mJihWblsic3M6SGlkZGVuIl09IjEiKSxWZS5wdXNoKFNpKCJDb2x1bW4iLG51bGwsVm4pKX0pO2Zvcih2YXIgVWU9QXJyYXkuaXNBcnJheShIKSxTdD14ZS5z''@;'; put 'put ''LnI7U3Q8PXhlLmUucjsrK1N0KXtmb3IodmFyIEl0PVttVChTdCwoSFsiIXJvd3MiXXx8W10pW1N0XSldLFB0PXhlLnMuYztQdDw9eGUuZS5jOysrUHQpe3ZhciBRdD0hMTtmb3IoWmU9MDtaZSE9RmUubGVuZ3RoOysrWmUpaWYoIShGZVtaZV0ucy5jPlB0fHxGZVtaZV0ucy5yPlN0fHxGZVta''@;'; put 'put ''ZV0uZS5jPFB0fHxGZVtaZV0uZS5yPFN0KSl7KEZlW1plXS5zLmMhPVB0fHxGZVtaZV0ucy5yIT1TdCkmJihRdD0hMCk7YnJlYWt9aWYoIVF0KXt2YXIgYW49e3I6U3QsYzpQdH0sQ249UTAoYW4pO0l0LnB1c2goR0coVWU/KEhbU3RdfHxbXSlbUHRdOkhbQ25dLENuLEgscmUsMCwwLGFuKSl9''@;'; put 'put ''fUl0LnB1c2goIjwvUm93PiIpLEl0Lmxlbmd0aD4yJiZWZS5wdXNoKEl0LmpvaW4oIiIpKX1yZXR1cm4gVmUuam9pbigiIil9KEZlLHJlKToiIixaZS5sZW5ndGg+MCYmd2UucHVzaCgiPFRhYmxlPiIrWmUrIjwvVGFibGU+Iiksd2UucHVzaChmdW5jdGlvbiBGQShILHJlLFgsd2Upe2lmKCFI''@;'; put 'put ''KXJldHVybiIiO3ZhciB4ZT1bXTtpZihIWyIhbWFyZ2lucyJdJiYoeGUucHVzaCgiPFBhZ2VTZXR1cD4iKSxIWyIhbWFyZ2lucyJdLmhlYWRlciYmeGUucHVzaChTaSgiSGVhZGVyIixudWxsLHsieDpNYXJnaW4iOkhbIiFtYXJnaW5zIl0uaGVhZGVyfSkpLEhbIiFtYXJnaW5zIl0uZm9vdGVy''@;'; put 'put ''JiZ4ZS5wdXNoKFNpKCJGb290ZXIiLG51bGwseyJ4Ok1hcmdpbiI6SFsiIW1hcmdpbnMiXS5mb290ZXJ9KSkseGUucHVzaChTaSgiUGFnZU1hcmdpbnMiLG51bGwseyJ4OkJvdHRvbSI6SFsiIW1hcmdpbnMiXS5ib3R0b218fCIwLjc1IiwieDpMZWZ0IjpIWyIhbWFyZ2lucyJdLmxlZnR8fCIw''@;'; put 'put ''LjciLCJ4OlJpZ2h0IjpIWyIhbWFyZ2lucyJdLnJpZ2h0fHwiMC43IiwieDpUb3AiOkhbIiFtYXJnaW5zIl0udG9wfHwiMC43NSJ9KSkseGUucHVzaCgiPC9QYWdlU2V0dXA+IikpLHdlJiZ3ZS5Xb3JrYm9vayYmd2UuV29ya2Jvb2suU2hlZXRzJiZ3ZS5Xb3JrYm9vay5TaGVldHNbWF0paWYo''@;'; put 'put ''d2UuV29ya2Jvb2suU2hlZXRzW1hdLkhpZGRlbil4ZS5wdXNoKFNpKCJWaXNpYmxlIiwxPT13ZS5Xb3JrYm9vay5TaGVldHNbWF0uSGlkZGVuPyJTaGVldEhpZGRlbiI6IlNoZWV0VmVyeUhpZGRlbiIse30pKTtlbHNle2Zvcih2YXIgRmU9MDtGZTxYJiYoIXdlLldvcmtib29rLlNoZWV0c1tG''@;'; put 'put ''ZV18fHdlLldvcmtib29rLlNoZWV0c1tGZV0uSGlkZGVuKTsrK0ZlKTtGZT09WCYmeGUucHVzaCgiPFNlbGVjdGVkLz4iKX1pZigoKCgod2V8fHt9KS5Xb3JrYm9va3x8e30pLlZpZXdzfHxbXSlbMF18fHt9KS5SVEwmJnhlLnB1c2goIjxEaXNwbGF5UmlnaHRUb0xlZnQvPiIpLG5yKEhbIiFn''@;'; put 'put ''cmlkbGluZXMiXSkmJnhlLnB1c2goIjxEb05vdERpc3BsYXlHcmlkbGluZXMvPiIpLEhbIiFmcmVlemUiXSl7eGUucHVzaCgiPEZyZWV6ZVBhbmVzLz4iKSx4ZS5wdXNoKCI8RnJvemVuTm9TcGxpdC8+Iik7dmFyIFplPXBvKEhbIiFmcmVlemUiXSk7WmUucj4wJiYoeGUucHVzaChHbygiU3Bs''@;'; put 'put ''aXRIb3Jpem9udGFsIiwiIitaZS5yKSkseGUucHVzaChHbygiVG9wUm93Qm90dG9tUGFuZSIsIiIrWmUucikpKSxaZS5jPjAmJih4ZS5wdXNoKEdvKCJTcGxpdFZlcnRpY2FsIiwiIitaZS5jKSkseGUucHVzaChHbygiTGVmdENvbHVtblJpZ2h0UGFuZSIsIiIrWmUuYykpKX1yZXR1cm4gSFsi''@;'; put 'put ''IXByb3RlY3QiXSYmKHhlLnB1c2goR28oIlByb3RlY3RDb250ZW50cyIsIlRydWUiKSksSFsiIXByb3RlY3QiXS5vYmplY3RzJiZ4ZS5wdXNoKEdvKCJQcm90ZWN0T2JqZWN0cyIsIlRydWUiKSksSFsiIXByb3RlY3QiXS5zY2VuYXJpb3MmJnhlLnB1c2goR28oIlByb3RlY3RTY2VuYXJpb3Mi''@;'; put 'put ''LCJUcnVlIikpLG51bGw9PUhbIiFwcm90ZWN0Il0uc2VsZWN0TG9ja2VkQ2VsbHN8fEhbIiFwcm90ZWN0Il0uc2VsZWN0TG9ja2VkQ2VsbHM/bnVsbCE9SFsiIXByb3RlY3QiXS5zZWxlY3RVbmxvY2tlZENlbGxzJiYhSFsiIXByb3RlY3QiXS5zZWxlY3RVbmxvY2tlZENlbGxzJiZ4ZS5wdXNo''@;'; put 'put ''KEdvKCJFbmFibGVTZWxlY3Rpb24iLCJVbmxvY2tlZENlbGxzIikpOnhlLnB1c2goR28oIkVuYWJsZVNlbGVjdGlvbiIsIk5vU2VsZWN0aW9uIikpLFtbImZvcm1hdENlbGxzIiwiQWxsb3dGb3JtYXRDZWxscyJdLFsiZm9ybWF0Q29sdW1ucyIsIkFsbG93U2l6ZUNvbHMiXSxbImZvcm1hdFJv''@;'; put 'put ''d3MiLCJBbGxvd1NpemVSb3dzIl0sWyJpbnNlcnRDb2x1bW5zIiwiQWxsb3dJbnNlcnRDb2xzIl0sWyJpbnNlcnRSb3dzIiwiQWxsb3dJbnNlcnRSb3dzIl0sWyJpbnNlcnRIeXBlcmxpbmtzIiwiQWxsb3dJbnNlcnRIeXBlcmxpbmtzIl0sWyJkZWxldGVDb2x1bW5zIiwiQWxsb3dEZWxldGVD''@;'; put 'put ''b2xzIl0sWyJkZWxldGVSb3dzIiwiQWxsb3dEZWxldGVSb3dzIl0sWyJzb3J0IiwiQWxsb3dTb3J0Il0sWyJhdXRvRmlsdGVyIiwiQWxsb3dGaWx0ZXIiXSxbInBpdm90VGFibGVzIiwiQWxsb3dVc2VQaXZvdFRhYmxlcyJdXS5mb3JFYWNoKGZ1bmN0aW9uKFZlKXtIWyIhcHJvdGVjdCJdW1Zl''@;'; put 'put ''WzBdXSYmeGUucHVzaCgiPCIrVmVbMV0rIi8+Iil9KSksMD09eGUubGVuZ3RoPyIiOlNpKCJXb3Jrc2hlZXRPcHRpb25zIix4ZS5qb2luKCIiKSx7eG1sbnM6cW9feH0pfShGZSwwLEgsWCkpLHdlLmpvaW4oIiIpfWZ1bmN0aW9uIEFUKEgscmUpe3JlfHwocmU9e30pLEguU1NGfHwoSC5TU0Y9''@;'; put 'put ''Ri5nZXRfdGFibGUoKSksSC5TU0YmJih5ZShGKSxGLmxvYWRfdGFibGUoSC5TU0YpLHJlLnJldnNzZj1xZShILlNTRikscmUucmV2c3NmW0guU1NGWzY1NTM1XV09MCxyZS5zc2Y9SC5TU0YsSC5TdHlsZXM9e0ZvbnRzOnJlLkZvbnRzPVt7c3o6MTIsY29sb3I6e3RoZW1lOjEscmdiOiIwMDAw''@;'; put 'put ''MDAifSxuYW1lOiJDYWxpYnJpIixmYW1pbHk6MixzY2hlbWU6Im1pbm9yIn1dLEZpbGxzOnJlLkZpbGxzPVt7cGF0dGVyblR5cGU6Im5vbmUifSx7cGF0dGVyblR5cGU6ImdyYXkxMjUifV0sQm9yZGVyczpyZS5Cb3JkZXJzPVt7fV19LHJlLmNlbGxYZnM9W10scmUuY2VsbFN0eWxlWGZzPVt7''@;'; put 'put ''bmFtZToiTm9ybWFsIn1dLHJjKHJlLmNlbGxYZnMsbnVsbCx7fSx7cmV2c3NmOntHZW5lcmFsOjB9fSkpO3ZhciBYPVtdO1gucHVzaChmdW5jdGlvbiBTbyhILHJlKXt2YXIgWD1bXTtyZXR1cm4gSC5Qcm9wcyYmWC5wdXNoKGZ1bmN0aW9uIGxhKEgscmUpe3ZhciBYPVtdO3JldHVybiBvbihl''@;'; put 'put ''bykubWFwKGZ1bmN0aW9uKHdlKXtmb3IodmFyIHhlPTA7eGU8b2UubGVuZ3RoOysreGUpaWYob2VbeGVdWzFdPT13ZSlyZXR1cm4gb2VbeGVdO2Zvcih4ZT0wO3hlPF8yLmxlbmd0aDsrK3hlKWlmKF8yW3hlXVsxXT09d2UpcmV0dXJuIF8yW3hlXTt0aHJvdyB3ZX0pLmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24od2Upe2lmKG51bGwhPUhbd2VbMV1dKXt2YXIgeGU9cmUmJnJlLlByb3BzJiZudWxsIT1yZS5Qcm9wc1t3ZVsxXV0/cmUuUHJvcHNbd2VbMV1dOkhbd2VbMV1dOyJkYXRlIj09PXdlWzJdJiYoeGU9bmV3IERhdGUoeGUpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCpaLywiWiIpKSwi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIHhlP3hlPVN0cmluZyh4ZSk6ITA9PT14ZXx8ITE9PT14ZT94ZT14ZT8iMSI6IjAiOnhlIGluc3RhbmNlb2YgRGF0ZSYmKHhlPW5ldyBEYXRlKHhlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuXGQqWi8sIiIpKSxYLnB1c2goR28oZW9bd2VbMV1dfHx3ZVsxXSx4''@;'; put 'put ''ZSkpfX0pLFNpKCJEb2N1bWVudFByb3BlcnRpZXMiLFguam9pbigiIikse3htbG5zOnFvX299KX0oSC5Qcm9wcyxyZSkpLEguQ3VzdHByb3BzJiZYLnB1c2goZnVuY3Rpb24gSWEoSCxyZSl7dmFyIFg9WyJXb3Jrc2hlZXRzIiwiU2hlZXROYW1lcyJdLHdlPSJDdXN0b21Eb2N1bWVudFByb3Bl''@;'; put 'put ''cnRpZXMiLHhlPVtdO3JldHVybiBIJiZvbihIKS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSCxGZSkpe2Zvcih2YXIgWmU9MDtaZTxvZS5sZW5ndGg7KytaZSlpZihGZT09b2VbWmVdWzFdKXJldHVybjtmb3IoWmU9MDtaZTxf''@;'; put 'put ''Mi5sZW5ndGg7KytaZSlpZihGZT09XzJbWmVdWzFdKXJldHVybjtmb3IoWmU9MDtaZTxYLmxlbmd0aDsrK1plKWlmKEZlPT1YW1plXSlyZXR1cm47dmFyIFZlPUhbRmVdLFVlPSJzdHJpbmciOyJudW1iZXIiPT10eXBlb2YgVmU/KFVlPSJmbG9hdCIsVmU9U3RyaW5nKFZlKSk6ITA9PT1WZXx8''@;'; put 'put ''ITE9PT1WZT8oVWU9ImJvb2xlYW4iLFZlPVZlPyIxIjoiMCIpOlZlPVN0cmluZyhWZSkseGUucHVzaChTaShJaShGZSksVmUseyJkdDpkdCI6VWV9KSl9fSkscmUmJm9uKHJlKS5mb3JFYWNoKGZ1bmN0aW9uKEZlKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmUs''@;'; put 'put ''RmUpJiYoIUh8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSCxGZSkpKXt2YXIgWmU9cmVbRmVdLFZlPSJzdHJpbmciOyJudW1iZXIiPT10eXBlb2YgWmU/KFZlPSJmbG9hdCIsWmU9U3RyaW5nKFplKSk6ITA9PT1aZXx8ITE9PT1aZT8oVmU9ImJvb2xlYW4iLFplPVpl''@;'; put 'put ''PyIxIjoiMCIpOlplIGluc3RhbmNlb2YgRGF0ZT8oVmU9ImRhdGVUaW1lLnR6IixaZT1aZS50b0lTT1N0cmluZygpKTpaZT1TdHJpbmcoWmUpLHhlLnB1c2goU2koSWkoRmUpLFplLHsiZHQ6ZHQiOlZlfSkpfX0pLCI8Iit3ZSsnIHhtbG5zPSInK3FvX28rJyI+Jyt4ZS5qb2luKCIiKSsiPC8i''@;'; put 'put ''K3dlKyI+In0oSC5Qcm9wcyxILkN1c3Rwcm9wcykpLFguam9pbigiIil9KEgscmUpKSxYLnB1c2goIiIpLFgucHVzaCgiIiksWC5wdXNoKCIiKTtmb3IodmFyIHdlPTA7d2U8SC5TaGVldE5hbWVzLmxlbmd0aDsrK3dlKVgucHVzaChTaSgiV29ya3NoZWV0IixYUCh3ZSxyZSxIKSx7InNzOk5h''@;'; put 'put ''bWUiOk9yKEguU2hlZXROYW1lc1t3ZV0pfSkpO3JldHVybiBYWzJdPWZ1bmN0aW9uIFFQKEgscmUpe3ZhciB3ZT1bWyc8U3R5bGUgc3M6SUQ9IkRlZmF1bHQiIHNzOk5hbWU9Ik5vcm1hbCI+JywnPEFsaWdubWVudCBzczpWZXJ0aWNhbD0iQm90dG9tIi8+JywiPEJvcmRlcnMvPiIsJzxGb250''@;'; put 'put ''IHNzOkZvbnROYW1lPSJDYWxpYnJpIiB4OkZhbWlseT0iU3dpc3MiIHNzOlNpemU9IjEyIiBzczpDb2xvcj0iIzAwMDAwMCIvPicsIjxJbnRlcmlvci8+IiwiPE51bWJlckZvcm1hdC8+IiwiPFByb3RlY3Rpb24vPiIsIjwvU3R5bGU+Il0uam9pbigiIildO3JldHVybiByZS5jZWxsWGZzLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oeGUsRmUpe3ZhciBaZT1bXTtpZih4ZS5hbGlnbm1lbnQpe3ZhciBWZT17fTt4ZS5hbGlnbm1lbnQuc2hyaW5rVG9GaXQmJihWZVsic3M6U2hyaW5rVG9GaXQiXT0iMSIpLHhlLmFsaWdubWVudC53cmFwVGV4dCYmKFZlWyJzczpXcmFwVGV4dCJdPSIxIikseGUuYWxp''@;'; put 'put ''Z25tZW50LnZlcnRpY2FsJiYoVmVbInNzOlZlcnRpY2FsIl09d24oeGUuYWxpZ25tZW50LnZlcnRpY2FsKSkseGUuYWxpZ25tZW50Lmhvcml6b250YWwmJihWZVsic3M6SG9yaXpvbnRhbCJdPXduKHhlLmFsaWdubWVudC5ob3Jpem9udGFsKSkseGUuYWxpZ25tZW50LmluZGVudCYmKFZlWyJz''@;'; put 'put ''czpJbmRlbnQiXT14ZS5hbGlnbm1lbnQuaW5kZW50KSx4ZS5hbGlnbm1lbnQudGV4dFJvdGF0aW9uJiYoVmVbInNzOlJvdGF0ZSJdPXhlLmFsaWdubWVudC50ZXh0Um90YXRpb24pLFplLnB1c2goU2koIkFsaWdubWVudCIsbnVsbCxWZSkpfWU6aWYobnVsbCE9eGUuZm9udElkKXt2YXIgVWU9''@;'; put 'put ''cmUuRm9udHNbeGUuZm9udElkXTtpZighVWUpYnJlYWsgZTt2YXIgU3Q9eyJzczpGb250TmFtZSI6IkNhbGlicmkiLCJzczpTaXplIjoiMTIifSxJdD0hMTtVZS5ib2xkJiYoSXQ9ITAsU3RbInNzOkJvbGQiXT0iMSIpLFVlLml0YWxpYyYmKEl0PSEwLFN0WyJzczpJdGFsaWMiXT0iMSIpLFVl''@;'; put 'put ''LnN0cmlrZSYmKEl0PSEwLFN0WyJzczpTdHJpa2VUaHJvdWdoIl09IjEiKSxudWxsIT1VZS51bmRlcmxpbmUmJihJdD0hMCxTdFsic3M6VW5kZXJsaW5lIl09YTdbVWUudW5kZXJsaW5lXXx8KFVlLnVuZGVybGluZT8iU2luZ2xlIjoiTm9uZSIpKSxudWxsIT1VZS5zeiYmKEl0PSEwLFN0WyJz''@;'; put 'put ''czpTaXplIl09VWUuc3opLG51bGwhPVVlLm5hbWUmJihJdD0hMCxTdFsic3M6Rm9udE5hbWUiXT1VZS5uYW1lKSxVZS5jb2xvciYmbnVsbCE9VWUuY29sb3IucmdiJiYoSXQ9ITAsU3RbInNzOkNvbG9yIl09IiMiKygibnVtYmVyIj09dHlwZW9mIFVlLmNvbG9yLnJnYj8iMDAwMDAwIitVZS5j''@;'; put 'put ''b2xvci5yZ2IudG9TdHJpbmcoMTYpOlVlLmNvbG9yLnJnYikuc2xpY2UoLTYpKSxbInN1YiIsInN1cGVyIl0uaW5kZXhPZihVZS52YWxpZ24pPi0xJiYoU3RbInNzOlZlcnRpY2FsQWxpZ24iXT13bihVZS52YWxpZ24pKyJzY3JpcHQiKSxJdCYmWmUucHVzaChTaSgiRm9udCIsbnVsbCxTdCkp''@;'; put 'put ''fWU6aWYoeGUuZmlsbElkPjApe3ZhciBQdD1yZS5GaWxsc1t4ZS5maWxsSWRdO2lmKCFQdHx8IVB0LmZnQ29sb3J8fG51bGw9PVB0LmZnQ29sb3IucmdiKWJyZWFrIGU7WmUucHVzaChTaSgiSW50ZXJpb3IiLG51bGwseyJzczpQYXR0ZXJuIjpIOVtQdC5wYXR0ZXJuVHlwZV18fCJTb2xpZCIs''@;'; put 'put ''InNzOkNvbG9yIjoiIyIrKCJudW1iZXIiPT10eXBlb2YgUHQuZmdDb2xvci5yZ2I/IjAwIitQdC5mZ0NvbG9yLnJnYi50b1N0cmluZygxNik6UHQuZmdDb2xvci5yZ2IpLnNsaWNlKC02KX0pKX1aZS5wdXNoKFNpKCJOdW1iZXJGb3JtYXQiLG51bGwseyJzczpGb3JtYXQiOk9yKEYuX3RhYmxl''@;'; put 'put ''W3hlLm51bUZtdElkXSl9KSk7dmFyIFF0PXsic3M6SUQiOiJzIisoMjErRmUpfTt4ZS5zdHlsZSYmKFF0WyJzczpOYW1lIl09eGUuc3R5bGUpLHdlLnB1c2goU2koIlN0eWxlIixaZS5qb2luKCIiKSxRdCkpfSksU2koIlN0eWxlcyIsd2Uuam9pbigiIikpfSgwLHJlKSxYWzNdPWZ1bmN0aW9u''@;'; put 'put ''IHg2KEgpe2lmKCEoKEh8fHt9KS5Xb3JrYm9va3x8e30pLk5hbWVzKXJldHVybiIiO2Zvcih2YXIgcmU9SC5Xb3JrYm9vay5OYW1lcyxYPVtdLHdlPTA7d2U8cmUubGVuZ3RoOysrd2Upe3ZhciB4ZT1yZVt3ZV07bnVsbD09eGUuU2hlZXQmJih4ZS5OYW1lLm1hdGNoKC9eX3hsZm5cLi8pfHxY''@;'; put 'put ''LnB1c2goZ1QoeGUpKSl9cmV0dXJuIFNpKCJOYW1lcyIsWC5qb2luKCIiKSl9KEgpLGNuK1NpKCJXb3JrYm9vayIsWC5qb2luKCIiKSx7eG1sbnM6cW9fc3MsInhtbG5zOm8iOnFvX28sInhtbG5zOngiOnFvX3gsInhtbG5zOnNzIjpxb19zcywieG1sbnM6ZHQiOiJ1dWlkOkMyRjQxMDEwLTY1''@;'; put 'put ''QjMtMTFkMS1BMjlGLTAwQUEwMEMxNDg4MiIsInhtbG5zOmh0bWwiOiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIn0pfWZ1bmN0aW9uIHdUKEgscmUsWCx3ZSl7dmFyIHhlPVgsRmU9W10sWmU9cmUuc2xpY2UocmUubCxyZS5sK3hlKTtpZih3ZSYmd2UuZW5jJiZ3ZS5lbmMuaW5z''@;'; put 'put ''aXR1JiZaZS5sZW5ndGg+MClzd2l0Y2goSC5uKXtjYXNlIkJPRiI6Y2FzZSJGaWxlUGFzcyI6Y2FzZSJGaWxlTG9jayI6Y2FzZSJJbnRlcmZhY2VIZHIiOmNhc2UiUlJESW5mbyI6Y2FzZSJSUkRIZWFkIjpjYXNlIlVzckV4Y2wiOmNhc2UiRU9GIjp3ZS5lbmMuaW5zaXR1KFRlKHtsZW5ndGg6''@;'; put 'put ''WmUubGVuZ3RofSksInNraXAiKTticmVhaztjYXNlIkJvdW5kU2hlZXQ4Ijp3ZS5lbmMuaW5zaXR1KFRlKHtsZW5ndGg6NH0pLCJza2lwIiksWmU9QnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oWmUuc2xpY2UoMCw0KSksQnVmZmVyLmZyb20od2UuZW5jLmluc2l0dShaZS5zbGljZSg0KSkp''@;'; put 'put ''XSk7YnJlYWs7ZGVmYXVsdDpaZT13ZS5lbmMuaW5zaXR1KFplKX1BcnJheS5pc0FycmF5KHJlKSYmIUFycmF5LmlzQXJyYXkoWmUpJiYoWmU9QXJyYXkuZnJvbShaZSkpLEZlLnB1c2goWmUpLHJlLmwrPXhlO2Zvcih2YXIgVmU9aXNbdmkocmUscmUubCldLFVlPTA7bnVsbCE9VmUmJiJDb250''@;'; put 'put ''aW51ZSI9PT1WZS5uLnNsaWNlKDAsOCk7KXhlPXZpKHJlLHJlLmwrMiksVWU9cmUubCs0LHdlJiZ3ZS5lbmMmJndlLmVuYy5pbnNpdHUmJndlLmVuYy5pbnNpdHUoVGUoe2xlbmd0aDo0fSksInNraXAiKSwiQ29udGludWVGcnQiPT1WZS5uP1VlKz00OiJDb250aW51ZUZydCI9PVZlLm4uc2xp''@;'; put 'put ''Y2UoMCwxMSkmJihVZSs9MTIsd2UmJndlLmVuYyYmd2UuZW5jLmluc2l0dSYmd2UuZW5jLmluc2l0dShUZSh7bGVuZ3RoOjh9KSwic2tpcCIpKSxaZT1yZS5zbGljZShVZSxyZS5sKzQreGUpLHdlJiZ3ZS5lbmMmJndlLmVuYy5pbnNpdHUmJlplLmxlbmd0aD4wJiYoWmU9d2UuZW5jLmluc2l0''@;'; put 'put ''dShaZSkpLEZlLnB1c2goWmUpLHJlLmwrPTQreGUsVmU9aXNbdmkocmUscmUubCldO3ZhciBTdD1WKEZlKTtLbChTdCwwKTt2YXIgSXQ9MDtTdC5sZW5zPVtdO2Zvcih2YXIgUHQ9MDtQdDxGZS5sZW5ndGg7KytQdClTdC5sZW5zLnB1c2goSXQpLEl0Kz1GZVtQdF0ubGVuZ3RoO2lmKFN0Lmxl''@;'; put 'put ''bmd0aDxYKXRocm93IlhMUyBSZWNvcmQgIisoSCYmSC5ufHwiPz8iKSsiIFRydW5jYXRlZDogIitTdC5sZW5ndGgrIiA8ICIrWDtyZXR1cm4gSC5mKFN0LFN0Lmxlbmd0aCx3ZSl9ZnVuY3Rpb24gTmgoSCxyZSxYKXtpZigieiIhPT1ILnQmJkguWEYpe3ZhciB3ZT0wO3RyeXt3ZT1ILnp8fEgu''@;'; put 'put ''WEYubnVtRm10SWR8fDAscmUuY2VsbE5GJiYoSC56PUYuX3RhYmxlW3dlXSl9Y2F0Y2goRmUpe2lmKHJlLldURil0aHJvdyBGZX1pZighcmV8fCExIT09cmUuY2VsbFRleHQpdHJ5e0gudz0iZSI9PT1ILnQ/SC53fHxOZltILnZdOjA9PT13ZXx8IkdlbmVyYWwiPT13ZT8ibiI9PT1ILnQ/KDB8''@;'; put 'put ''SC52KT09PUgudj9GLl9nZW5lcmFsX2ludChILnYpOkYuX2dlbmVyYWxfbnVtKEgudik6Ri5fZ2VuZXJhbChILnYpOkYuZm9ybWF0KHdlLEgudix7ZGF0ZTE5MDQ6ISFYLGRhdGVORjpyZSYmcmUuZGF0ZU5GfSl9Y2F0Y2goRmUpe2lmKHJlLldURil0aHJvdyBGZX1pZihyZS5jZWxsRGF0ZXMm''@;'; put 'put ''JndlJiYibiI9PUgudCYmRi5pc19kYXRlKEYuX3RhYmxlW3dlXXx8U3RyaW5nKHdlKSkpe3ZhciB4ZT1GLnBhcnNlX2RhdGVfY29kZShILnYpO3hlJiYoSC50PSJkIixILnY9bmV3IERhdGUoeGUueSx4ZS5tLTEseGUuZCx4ZS5ILHhlLk0seGUuUyx4ZS51KSl9fX1mdW5jdGlvbiBsNyhILHJl''@;'; put 'put ''LFgpe3JldHVybnt2OkgsaXhmZTpyZSx0Olh9fXZhciBLUD1mdW5jdGlvbihILHJlLFgpe3JlWyIhb2JqZWN0cyJdPUh9LERkX1NJPSJlMDg1OWZmMmY5NGY2ODEwYWI5MTA4MDAyYjI3YjNkOSIsRGRfRFNJPSIwMmQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZSI7ZnVuY3Rpb24gTkEo''@;'; put 'put ''SCxyZSl7dmFyIFgsd2UseGUsRmU7aWYocmV8fChyZT17fSksd2YocmUpLHEoKSxyZS5jb2RlcGFnZSYmVyhyZS5jb2RlcGFnZSksSC5GdWxsUGF0aHMpe2lmKHB0LmZpbmQoSCwiL2VuY3J5cHRpb24iKSl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7WD1w''@;'; put 'put ''dC5maW5kKEgsIiFDb21wT2JqIiksd2U9cHQuZmluZChILCIvV29ya2Jvb2siKXx8cHQuZmluZChILCIvQm9vayIpfWVsc2V7c3dpdGNoKHJlLnR5cGUpe2Nhc2UiYmFzZTY0IjpIPXooU2UuZGVjb2RlKEgpKTticmVhaztjYXNlImJpbmFyeSI6SD16KEgpO2JyZWFrO2Nhc2UiYnVmZmVyIjpi''@;'; put 'put ''cmVhaztjYXNlImFycmF5IjpBcnJheS5pc0FycmF5KEgpfHwoSD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChIKSl9S2woSCwwKSx3ZT17Y29udGVudDpIfX1pZihYJiZmdW5jdGlvbiB5VChIKXt2YXIgcmU9e30sWD1ILmNvbnRlbnQ7aWYoWC5sPTI4LHJlLkFuc2lVc2VyVHlwZT1YLnJl''@;'; put 'put ''YWRfc2hpZnQoMCwibHBzdHItYW5zaSIpLHJlLkFuc2lDbGlwYm9hcmRGb3JtYXQ9ZnVuY3Rpb24gZzkoSCl7cmV0dXJuIGQyKEgsMSl9KFgpLFgubGVuZ3RoLVgubDw9NClyZXR1cm4gcmU7dmFyIHdlPVgucmVhZF9zaGlmdCg0KTtpZigwPT13ZXx8d2U+NDB8fChYLmwtPTQscmUuUmVzZXJ2''@;'; put 'put ''ZWQxPVgucmVhZF9zaGlmdCgwLCJscHN0ci1hbnNpIiksWC5sZW5ndGgtWC5sPD00KXx8MTkwNzUwNTY1MiE9PSh3ZT1YLnJlYWRfc2hpZnQoNCkpfHwocmUuVW5pY29kZUNsaXBib2FyZEZvcm1hdD1mdW5jdGlvbiAkZyhIKXtyZXR1cm4gZDIoSCwyKX0oWCksMD09KHdlPVgucmVhZF9zaGlm''@;'; put 'put ''dCg0KSl8fHdlPjQwKSlyZXR1cm4gcmU7WC5sLT00LHJlLlJlc2VydmVkMj1YLnJlYWRfc2hpZnQoMCwibHB3c3RyIil9KFgpLHJlLmJvb2tQcm9wcyYmIXJlLmJvb2tTaGVldHMpeGU9e307ZWxzZXt2YXIgWmU9SWU/ImJ1ZmZlciI6ImFycmF5IjtpZih3ZSYmd2UuY29udGVudCl4ZT1mdW5j''@;'; put 'put ''dGlvbiAkUChILHJlKXt2YXIgUHQsYW4sTHQsenQsUm4sVm4sWD17b3B0czp7fX0sd2U9e30seGU9cmUuZGVuc2U/W106e30sRmU9e30sWmU9e30sVmU9bnVsbCxVZT1bXSxTdD0iIixJdD17fSxRdD0iIixmbj17fSxJbj1bXSxJcj1bXSxpaT1bXSx5cj17U2hlZXRzOltdLFdCUHJvcHM6e2Rh''@;'; put 'put ''dGUxOTA0OiExfSxWaWV3czpbe31dfSxvaT17fSxNcj17Rm9udHM6W119LFdyPWZ1bmN0aW9uKHYwKXtyZXR1cm4gdjA8OD9MdVt2MF06djA8NjQmJmlpW3YwLThdfHxMdVt2MF19LGFpPWZ1bmN0aW9uKHYwLENsKXt2YXIgRjIsaGw9djAuWEYuZGF0YTtobCYmKGhsLnBhdHRlcm5UeXBlfHxu''@;'; put 'put ''dWxsIT1obC5pY3ZGb3JlKSYmQ2wmJkNsLmNlbGxTdHlsZXMmJih2MC5zPXt9LHYwLnMucGF0dGVyblR5cGU9aGwucGF0dGVyblR5cGUsdjAuWEYuZm9udCYma24odjAucyx2MC5YRi5mb250KSxobC5mV3JhcCYmKCh2MC5zLmFsaWdubWVudHx8KHYwLnMuYWxpZ25tZW50PXt9KSkud3JhcFRl''@;'; put 'put ''eHQ9ITApLGhsLmZTaHJpbmtUb0ZpdCYmKCh2MC5zLmFsaWdubWVudHx8KHYwLnMuYWxpZ25tZW50PXt9KSkuc2hyaW5rVG9GaXQ9ITApLGhsLmhhbGlnbiYmKCh2MC5zLmFsaWdubWVudHx8KHYwLnMuYWxpZ25tZW50PXt9KSkuaG9yaXpvbnRhbD1obC5oYWxpZ24pLGhsLnZhbGlnbiYmKCh2''@;'; put 'put ''MC5zLmFsaWdubWVudHx8KHYwLnMuYWxpZ25tZW50PXt9KSkudmVydGljYWw9aGwudmFsaWduKSxobC5jSW5kZW50JiYoKHYwLnMuYWxpZ25tZW50fHwodjAucy5hbGlnbm1lbnQ9e30pKS5pbmRlbnQ9aGwuY0luZGVudCksNjQhPWhsLmljdkZvcmUmJjY1IT1obC5pY3ZCYWNrJiYoKEYyPVds''@;'; put 'put ''KFdyKGhsLmljdkZvcmUpKSkmJih2MC5zLmZnQ29sb3I9e3JnYjpGMn0pLChGMj1XbChXcihobC5pY3ZCYWNrKSkpJiYodjAucy5iZ0NvbG9yPXtyZ2I6RjJ9KSksWyJMZWZ0IiwiUmlnaHQiLCJUb3AiLCJCb3R0b20iXS5mb3JFYWNoKGZ1bmN0aW9uKE0yKXtobFsiZGciK00yXSYmKHYwLnNb''@;'; put 'put ''TTIudG9Mb3dlckNhc2UoKV09e3N0eWxlOmszW2hsWyJkZyIrTTJdXSxjb2xvcjp7cmdiOldsKFdyKGhsWyJpY3YiK00yXSkpfX0pfSkpfSxuaT1mdW5jdGlvbih2MCxDbCxobCl7aWYoIShaMD4xfHxobC5zaGVldFJvd3MmJnYwLnI+PWhsLnNoZWV0Um93cykpe2lmKGhsLmNlbGxTdHlsZXMm''@;'; put 'put ''JkNsLlhGJiZDbC5YRi5kYXRhJiZhaShDbCxobCksZGVsZXRlIENsLml4ZmUsZGVsZXRlIENsLlhGLFB0PXYwLFF0PVEwKHYwKSwoIVplfHwhWmUuc3x8IVplLmUpJiYoWmU9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSksdjAucjxaZS5zLnImJihaZS5zLnI9djAuciksdjAuYzxaZS5zLmMm''@;'; put 'put ''JihaZS5zLmM9djAuYyksdjAucisxPlplLmUuciYmKFplLmUucj12MC5yKzEpLHYwLmMrMT5aZS5lLmMmJihaZS5lLmM9djAuYysxKSxobC5jZWxsRm9ybXVsYSYmQ2wuZilmb3IodmFyIEYyPTA7RjI8SW4ubGVuZ3RoOysrRjIpaWYoIShJbltGMl1bMF0ucy5jPnYwLmN8fEluW0YyXVswXS5z''@;'; put 'put ''LnI+djAucnx8SW5bRjJdWzBdLmUuYzx2MC5jfHxJbltGMl1bMF0uZS5yPHYwLnIpKXtDbC5GPUFhKEluW0YyXVswXSksKEluW0YyXVswXS5zLmMhPXYwLmN8fEluW0YyXVswXS5zLnIhPXYwLnIpJiZkZWxldGUgQ2wuZixDbC5mJiYoQ2wuZj0iIitmdShJbltGMl1bMV0sWmUsdjAsSHIsZnIp''@;'; put 'put ''KTticmVha31obC5kZW5zZT8oeGVbdjAucl18fCh4ZVt2MC5yXT1bXSkseGVbdjAucl1bdjAuY109Q2wpOnhlW1F0XT1DbH19LGZyPXtlbmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjpmbixhcnJheWY6SW4scnJ0YWJpZDpbXSxsYXN0dXNlcjoiIixiaWZmOjgsY29kZXBhZ2U6MCx3''@;'; put 'put ''aW5sb2NrZWQ6MCxjZWxsU3R5bGVzOiEhcmUmJiEhcmUuY2VsbFN0eWxlcyxXVEY6ISFyZSYmISFyZS53dGZ9O2ZyLnBhc3N3b3JkPXJlLnBhc3N3b3JkP3JlLnBhc3N3b3JkOiJWZWx2ZXRTd2VhdHNob3AiO3ZhciB3MCxoaT1udWxsLEowPVtdLGlvPVtdLGIwPVtdLGJpPVtdLGNpPSExLEhy''@;'; put 'put ''PVtdO0hyLlNoZWV0TmFtZXM9ZnIuc25hbWVzLEhyLnNoYXJlZGY9ZnIuc2hhcmVkZixIci5hcnJheWY9ZnIuYXJyYXlmLEhyLm5hbWVzPVtdLEhyLlhUST1bXTt2YXIgWDAsTWk9IiIsWjA9MCxuMD0wLGZvPVtdLGlhPVtdO2ZyLmNvZGVwYWdlPTEyMDAsZWUoMTIwMCk7Zm9yKHZhciB6aT0h''@;'; put 'put ''MTtILmw8SC5sZW5ndGgtMTspe3ZhciBnMD1ILmwsUzA9SC5yZWFkX3NoaWZ0KDIpO2lmKGZyJiZmci5lbmMmJmZyLmVuYy5pbnNpdHUmJmZyLmVuYy5pbnNpdHUoVGUoWzAsMF0pLCJoZWFkZXItMCIpLDA9PT1TMCYmIkVPRiI9PT1NaSlicmVhazt2YXIgQWk9SC5sPT09SC5sZW5ndGg/MDpI''@;'; put 'put ''LnJlYWRfc2hpZnQoMik7ZnImJmZyLmVuYyYmZnIuZW5jLmluc2l0dSYmZnIuZW5jLmluc2l0dShUZShbMCwwXSksImxlbmd0aC0wIik7dmFyIHgwPWlzW1MwXTtpZih4MCYmeDAuZil7aWYocmUuYm9va1NoZWV0cyYmIkJvdW5kU2hlZXQ4Ij09PU1pJiYiQm91bmRTaGVldDgiIT09eDAubili''@;'; put 'put ''cmVhaztpZihNaT14MC5uLDI9PT14MC5yfHwxMj09eDAucil7dmFyIGYwPUgucmVhZF9zaGlmdCgyKTtpZihBaS09MixmciYmZnIuZW5jJiZmci5lbmMuaW5zaXR1JiZmci5lbmMuaW5zaXR1KFRlKFswLDBdKSksIWZyLmVuYyYmZjAhPT1TMCYmKCgyNTUmZjApPDw4fGYwPj44KSE9PVMwKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigicnQgbWlzbWF0Y2g6ICIrZjArIiE9IitTMCk7MTI9PXgwLnImJihILmwrPTEwLEFpLT0xMCxmciYmZnIuZW5jJiZmci5lbmMuaW5zaXR1JiZmci5lbmMuaW5zaXR1KFRlKFswLDAsMCwwLDAsMCwwLDAsMCwwXSkpKX12YXIganI9d1QoeDAsSCxBaSxmciksQ2E9eDAu''@;'; put 'put ''bjtpZigwPT1aMCYmIkJPRiIhPUNhKWNvbnRpbnVlO3N3aXRjaChDYSl7Y2FzZSJEYXRlMTkwNCI6WC5vcHRzLkRhdGUxOTA0PXlyLldCUHJvcHMuZGF0ZTE5MDQ9anI7YnJlYWs7Y2FzZSJXcml0ZVByb3RlY3QiOlgub3B0cy5Xcml0ZVByb3RlY3Q9ITA7YnJlYWs7Y2FzZSJGaWxlUGFzcyI6''@;'; put 'put ''aWYoZnIuZW5jfHwoSC5sPTAsWjA9MCksZnIuZW5jPWpyLCFyZS5wYXNzd29yZCYmbnVsbD09anIudmFsaWQpdGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpO2lmKG51bGw9PWpyLnZhbGlkKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBzY2hlbWUgdW5z''@;'; put 'put ''dXBwb3J0ZWQiKTtpZighanIudmFsaWQpdGhyb3cgbmV3IEVycm9yKCJQYXNzd29yZCBpcyBpbmNvcnJlY3QiKTticmVhaztjYXNlIldyaXRlQWNjZXNzIjpmci5sYXN0dXNlcj1qcjticmVhaztjYXNlIkZpbGVTaGFyaW5nIjpjYXNlIlRlbXBsYXRlIjpjYXNlIkJvb2tCb29sIjpjYXNlIlVz''@;'; put 'put ''ZXNFTEZzIjpjYXNlIk1UUlNldHRpbmdzIjpjYXNlIlVuY2FsY2VkIjpjYXNlIkV4dFNTVCI6Y2FzZSJCb29rRXh0IjpjYXNlIlJpY2hUZXh0U3RyZWFtIjpjYXNlIkJrSGltIjpjYXNlIkluZGV4IjpjYXNlIlByb3Q0UmV2IjpjYXNlIlByb3Q0UmV2UGFzcyI6YnJlYWs7Y2FzZSJDb2RlUGFn''@;'; put 'put ''ZSI6dmFyIHNzPU51bWJlcihqcik7c3dpdGNoKHNzKXtjYXNlIDIxMDEwOnNzPTEyMDA7YnJlYWs7Y2FzZSAzMjc2ODpzcz0xZTQ7YnJlYWs7Y2FzZSAzMjc2OTpzcz0xMjUyfWVlKGZyLmNvZGVwYWdlPXNzKSx6aT0hMDticmVhaztjYXNlIlJSVGFiSWQiOmZyLnJydGFiaWQ9anI7YnJlYWs7''@;'; put 'put ''Y2FzZSJXaW5Qcm90ZWN0Ijpmci53aW5sb2NrZWQ9anI7YnJlYWs7Y2FzZSJSZWZyZXNoQWxsIjpjYXNlIkNhbGNDb3VudCI6Y2FzZSJDYWxjRGVsdGEiOmNhc2UiQ2FsY0l0ZXIiOmNhc2UiQ2FsY01vZGUiOmNhc2UiQ2FsY1ByZWNpc2lvbiI6Y2FzZSJDYWxjU2F2ZVJlY2FsYyI6WC5vcHRz''@;'; put 'put ''W0NhXT1qcjticmVhaztjYXNlIkNhbGNSZWZNb2RlIjpmci5DYWxjUmVmTW9kZT1qcjticmVhaztjYXNlIkZvcmNlRnVsbENhbGN1bGF0aW9uIjpYLm9wdHMuRnVsbENhbGM9anI7YnJlYWs7Y2FzZSJXc0Jvb2wiOmpyLmZEaWFsb2cmJih4ZVsiIXR5cGUiXT0iZGlhbG9nIiksanIuZkJlbG93''@;'; put 'put ''fHwoKHhlWyIhb3V0bGluZSJdfHwoeGVbIiFvdXRsaW5lIl09e30pKS5hYm92ZT0hMCksanIuZlJpZ2h0fHwoKHhlWyIhb3V0bGluZSJdfHwoeGVbIiFvdXRsaW5lIl09e30pKS5sZWZ0PSEwKTticmVhaztjYXNlIlhGIjpqci5mb250PU1yLkZvbnRzW2pyLmlmbnQ8ND9qci5pZm50OmpyLmlm''@;'; put 'put ''bnQtMV0sSXIucHVzaChqcik7YnJlYWs7Y2FzZSJTdXBCb29rIjpIci5wdXNoKFtqcl0pLEhyW0hyLmxlbmd0aC0xXS5YVEk9W107YnJlYWs7Y2FzZSJFeHRlcm5OYW1lIjpIcltIci5sZW5ndGgtMV0ucHVzaChqcik7YnJlYWs7Y2FzZSJMYmwiOlgwPXtOYW1lOmpyLk5hbWUsUmVmOmZ1KGpy''@;'; put 'put ''LnJnY2UsWmUsbnVsbCxIcixmcil9LGpyLml0YWI+MCYmKFgwLlNoZWV0PWpyLml0YWItMSksSHIubmFtZXMucHVzaChYMCksSHJbMF18fChIclswXT1bXSxIclswXS5YVEk9W10pLEhyW0hyLmxlbmd0aC0xXS5wdXNoKGpyKSwiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIj09anIuTmFtZSYmanIu''@;'; put 'put ''aXRhYj4wJiZqci5yZ2NlJiZqci5yZ2NlWzBdJiZqci5yZ2NlWzBdWzBdJiYiUHRnQXJlYTNkIj09anIucmdjZVswXVswXVswXSYmKGlhW2pyLml0YWItMV09e3JlZjpBYShqci5yZ2NlWzBdWzBdWzFdWzJdKX0pO2JyZWFrO2Nhc2UiRXh0ZXJuQ291bnQiOmZyLkV4dGVybkNvdW50PWpyO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiRXh0ZXJuU2hlZXQiOjA9PUhyLmxlbmd0aCYmKEhyWzBdPVtdLEhyWzBdLlhUST1bXSksSHJbSHIubGVuZ3RoLTFdLlhUST1IcltIci5sZW5ndGgtMV0uWFRJLmNvbmNhdChqciksSHIuWFRJPUhyLlhUSS5jb25jYXQoanIpO2JyZWFrO2Nhc2UiTmFtZUNtdCI6aWYoZnIuYmlm''@;'; put 'put ''Zjw4KWJyZWFrO251bGwhPVgwJiYoWDAuQ29tbWVudD1qclsxXSk7YnJlYWs7Y2FzZSJQcm90ZWN0Ijp4ZVsiIXByb3RlY3QiXT1qcjticmVhaztjYXNlIlBhc3N3b3JkIjowIT09anImJmZyLldURiYmY29uc29sZS5lcnJvcigiUGFzc3dvcmQgdmVyaWZpZXI6ICIranIpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''Qm91bmRTaGVldDgiOkZlW2pyLnBvc109anIsZnIuc25hbWVzLnB1c2goanIubmFtZSk7YnJlYWs7Y2FzZSJFT0YiOmlmKHhlWyIhZ3JpZGxpbmVzIl09IWhpfHxoaS5ncmlkLGhpPW51bGwsLS1aMClicmVhaztpZihaZS5lKXtpZihaZS5lLnI+MCYmWmUuZS5jPjApe2lmKFplLmUuci0tLFpl''@;'; put 'put ''LmUuYy0tLHhlWyIhcmVmIl09QWEoWmUpLHJlLnNoZWV0Um93cyYmcmUuc2hlZXRSb3dzPD1aZS5lLnIpe3ZhciBfbD1aZS5lLnI7WmUuZS5yPXJlLnNoZWV0Um93cy0xLHhlWyIhZnVsbHJlZiJdPXhlWyIhcmVmIl0seGVbIiFyZWYiXT1BYShaZSksWmUuZS5yPV9sfVplLmUucisrLFplLmUu''@;'; put 'put ''YysrfUowLmxlbmd0aD4wJiYoeGVbIiFtZXJnZXMiXT1KMCksaW8ubGVuZ3RoPjAmJktQKGlvLHhlKSxiMC5sZW5ndGg+MCYmKHhlWyIhY29scyJdPWIwKSxiaS5sZW5ndGg+MCYmKHhlWyIhcm93cyJdPWJpKSx5ci5TaGVldHMucHVzaChvaSl9IiI9PT1TdD9JdD14ZTp3ZVtTdF09eGUseGU9''@;'; put 'put ''cmUuZGVuc2U/W106e307YnJlYWs7Y2FzZSJCT0YiOmlmKDg9PT1mci5iaWZmJiYoZnIuYmlmZj17OToyLDUyMTozLDEwMzM6NH1bUzBdfHx7NTEyOjIsNzY4OjMsMTAyNDo0LDEyODA6NSwxNTM2OjgsMjoyLDc6Mn1banIuQklGRlZlcl18fDgpLGZyLmJpZmZndWVzcz0wPT1qci5CSUZGVmVy''@;'; put 'put ''LDA9PWpyLkJJRkZWZXImJjQwOTY9PWpyLmR0JiYoZnIuYmlmZj01LHppPSEwLGVlKGZyLmNvZGVwYWdlPTI4NTkxKSksOD09ZnIuYmlmZiYmMD09anIuQklGRlZlciYmMTY9PWpyLmR0JiYoZnIuYmlmZj0yKSxaMCsrKWJyZWFrO2lmKHhlPXJlLmRlbnNlP1tdOnt9LGZyLmJpZmY8OCYmIXpp''@;'; put 'put ''JiYoemk9ITAsZWUoZnIuY29kZXBhZ2U9cmUuY29kZXBhZ2V8fDEyNTIpKSxmci5iaWZmPDV8fDA9PWpyLkJJRkZWZXImJjQwOTY9PWpyLmR0KXsiIj09PVN0JiYoU3Q9IlNoZWV0MSIpLFplPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX07dmFyIFFhPXtwb3M6SC5sLUFpLG5hbWU6U3R9O0Zl''@;'; put 'put ''W1FhLnBvc109UWEsZnIuc25hbWVzLnB1c2goU3QpfWVsc2UgU3Q9KEZlW2cwXXx8e25hbWU6IiJ9KS5uYW1lOzMyPT1qci5kdCYmKHhlWyIhdHlwZSJdPSJjaGFydCIpLDY0PT1qci5kdCYmKHhlWyIhdHlwZSJdPSJtYWNybyIpLEowPVtdLGlvPVtdLGZyLmFycmF5Zj1Jbj1bXSxiMD1bXSxi''@;'; put 'put ''aT1bXSxjaT0hMSxvaT17SGlkZGVuOihGZVtnMF18fHtoczowfSkuaHMsbmFtZTpTdH07YnJlYWs7Y2FzZSJOdW1iZXIiOmNhc2UiQklGRjJOVU0iOmNhc2UiQklGRjJJTlQiOiJjaGFydCI9PXhlWyIhdHlwZSJdJiYocmUuZGVuc2U/KHhlW2pyLnJdfHxbXSlbanIuY106eGVbUTAoe2M6anIu''@;'; put 'put ''YyxyOmpyLnJ9KV0pJiYrK2pyLmMsUm49e2l4ZmU6anIuaXhmZSxYRjpJcltqci5peGZlXXx8e30sdjpqci52YWwsdDoibiJ9LG4wPjAmJihSbi56PWZvW1JuLml4ZmU+PjgmNjNdKSxOaChSbixyZSxYLm9wdHMuRGF0ZTE5MDQpLG5pKHtjOmpyLmMscjpqci5yfSxSbixyZSk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJCb29sRXJyIjpSbj17aXhmZTpqci5peGZlLFhGOklyW2pyLml4ZmVdLHY6anIudmFsLHQ6anIudH0sbjA+MCYmKFJuLno9Zm9bUm4uaXhmZT4+OCY2M10pLE5oKFJuLHJlLFgub3B0cy5EYXRlMTkwNCksbmkoe2M6anIuYyxyOmpyLnJ9LFJuLHJlKTticmVhaztjYXNlIlJLIjpSbj17aXhm''@;'; put 'put ''ZTpqci5peGZlLFhGOklyW2pyLml4ZmVdLHY6anIucmtudW0sdDoibiJ9LG4wPjAmJihSbi56PWZvW1JuLml4ZmU+PjgmNjNdKSxOaChSbixyZSxYLm9wdHMuRGF0ZTE5MDQpLG5pKHtjOmpyLmMscjpqci5yfSxSbixyZSk7YnJlYWs7Y2FzZSJNdWxSayI6Zm9yKHZhciBocz1qci5jO2hzPD1q''@;'; put 'put ''ci5DOysraHMpe3ZhciBVYz1qci5ya3JlY1tocy1qci5jXVswXTtSbj17aXhmZTpVYyxYRjpJcltVY10sdjpqci5ya3JlY1tocy1qci5jXVsxXSx0OiJuIn0sbjA+MCYmKFJuLno9Zm9bUm4uaXhmZT4+OCY2M10pLE5oKFJuLHJlLFgub3B0cy5EYXRlMTkwNCksbmkoe2M6aHMscjpqci5yfSxS''@;'; put 'put ''bixyZSl9YnJlYWs7Y2FzZSJGb3JtdWxhIjppZigiU3RyaW5nIj09anIudmFsKXtWZT1qcjticmVha31pZigoUm49bDcoanIudmFsLGpyLmNlbGwuaXhmZSxqci50dCkpLlhGPUlyW1JuLml4ZmVdLHJlLmNlbGxGb3JtdWxhKXt2YXIgZzI9anIuZm9ybXVsYTtpZihnMiYmZzJbMF0mJmcyWzBd''@;'; put 'put ''WzBdJiYiUHRnRXhwIj09ZzJbMF1bMF1bMF0pe3ZhciBycj1nMlswXVswXVsxXVswXSxEcj1nMlswXVswXVsxXVsxXSxVcj1RMCh7cjpycixjOkRyfSk7Zm5bVXJdP1JuLmY9IiIrZnUoanIuZm9ybXVsYSxaZSxqci5jZWxsLEhyLGZyKTpSbi5GPSgocmUuZGVuc2U/KHhlW3JyXXx8W10pW0Ry''@;'; put 'put ''XTp4ZVtVcl0pfHx7fSkuRn1lbHNlIFJuLmY9IiIrZnUoanIuZm9ybXVsYSxaZSxqci5jZWxsLEhyLGZyKX1uMD4wJiYoUm4uej1mb1tSbi5peGZlPj44JjYzXSksTmgoUm4scmUsWC5vcHRzLkRhdGUxOTA0KSxuaShqci5jZWxsLFJuLHJlKSxWZT1qcjticmVhaztjYXNlIlN0cmluZyI6aWYo''@;'; put 'put ''IVZlKXRocm93IG5ldyBFcnJvcigiU3RyaW5nIHJlY29yZCBleHBlY3RzIEZvcm11bGEiKTtWZS52YWw9anIsKFJuPWw3KGpyLFZlLmNlbGwuaXhmZSwicyIpKS5YRj1JcltSbi5peGZlXSxyZS5jZWxsRm9ybXVsYSYmKFJuLmY9IiIrZnUoVmUuZm9ybXVsYSxaZSxWZS5jZWxsLEhyLGZyKSks''@;'; put 'put ''bjA+MCYmKFJuLno9Zm9bUm4uaXhmZT4+OCY2M10pLE5oKFJuLHJlLFgub3B0cy5EYXRlMTkwNCksbmkoVmUuY2VsbCxSbixyZSksVmU9bnVsbDticmVhaztjYXNlIkFycmF5IjpJbi5wdXNoKGpyKTt2YXIgaDA9UTAoanJbMF0ucyk7aWYoYW49cmUuZGVuc2U/KHhlW2pyWzBdLnMucl18fFtd''@;'; put 'put ''KVtqclswXS5zLmNdOnhlW2gwXSxyZS5jZWxsRm9ybXVsYSYmYW4pe2lmKCFWZXx8IWgwfHwhYW4pYnJlYWs7YW4uZj0iIitmdShqclsxXSxaZSxqclswXSxIcixmciksYW4uRj1BYShqclswXSl9YnJlYWs7Y2FzZSJTaHJGbWxhIjppZighcmUuY2VsbEZvcm11bGEpYnJlYWs7aWYoUXQpe2lm''@;'; put 'put ''KCFWZSlicmVhaztmbltRMChWZS5jZWxsKV09anJbMF0sKChhbj1yZS5kZW5zZT8oeGVbVmUuY2VsbC5yXXx8W10pW1ZlLmNlbGwuY106eGVbUTAoVmUuY2VsbCldKXx8e30pLmY9IiIrZnUoanJbMF0sWmUsUHQsSHIsZnIpfWJyZWFrO2Nhc2UiTGFiZWxTc3QiOlJuPWw3KFVlW2pyLmlzc3Rd''@;'; put 'put ''LnQsanIuaXhmZSwicyIpLFVlW2pyLmlzc3RdLmgmJihSbi5oPVVlW2pyLmlzc3RdLmgpLFJuLlhGPUlyW1JuLml4ZmVdLG4wPjAmJihSbi56PWZvW1JuLml4ZmU+PjgmNjNdKSxOaChSbixyZSxYLm9wdHMuRGF0ZTE5MDQpLG5pKHtjOmpyLmMscjpqci5yfSxSbixyZSksVWVbanIuaXNzdF0u''@;'; put 'put ''UiYmKFJuLlI9VWVbanIuaXNzdF0uUi5tYXAoZnVuY3Rpb24obW8pe3ZhciB2MD1sbihtbyk7cmV0dXJuIG1vLnM9PU1yLkZvbnRzWzBdJiYodjAucz1Sbi5zKSx2MH0pKTticmVhaztjYXNlIkJsYW5rIjpyZS5zaGVldFN0dWJzJiYoUm49e2l4ZmU6anIuaXhmZSxYRjpJcltqci5peGZlXSx0''@;'; put 'put ''OiJ6In0sbjA+MCYmKFJuLno9Zm9bUm4uaXhmZT4+OCY2M10pLE5oKFJuLHJlLFgub3B0cy5EYXRlMTkwNCksbmkoe2M6anIuYyxyOmpyLnJ9LFJuLHJlKSk7YnJlYWs7Y2FzZSJNdWxCbGFuayI6aWYocmUuc2hlZXRTdHVicylmb3IodmFyIGVpPWpyLmM7ZWk8PWpyLkM7KytlaSl7dmFyIHQw''@;'; put 'put ''PWpyLml4ZmVbZWktanIuY107Um49e2l4ZmU6dDAsWEY6SXJbdDBdLHQ6InoifSxuMD4wJiYoUm4uej1mb1tSbi5peGZlPj44JjYzXSksTmgoUm4scmUsWC5vcHRzLkRhdGUxOTA0KSxuaSh7YzplaSxyOmpyLnJ9LFJuLHJlKX1icmVhaztjYXNlIlJTdHJpbmciOmNhc2UiTGFiZWwiOmNhc2Ui''@;'; put 'put ''QklGRjJTVFIiOihSbj1sNyhqci52YWwsanIuaXhmZSwicyIpKS5YRj1JcltSbi5peGZlXSxuMD4wJiYoUm4uej1mb1tSbi5peGZlPj44JjYzXSksTmgoUm4scmUsWC5vcHRzLkRhdGUxOTA0KSxuaSh7Yzpqci5jLHI6anIucn0sUm4scmUpO2JyZWFrO2Nhc2UiRGltZW5zaW9ucyI6MT09PVow''@;'; put 'put ''JiYoWmU9anIpO2JyZWFrO2Nhc2UiU1NUIjooVWU9anIpLmZvckVhY2goZnVuY3Rpb24obW8pe21vLl9SPyhtby5fUlswXSYmbW8uX1JbMF0uaWR4PjAmJm1vLl9SLnVuc2hpZnQoe2lkeDowLGlmbnQ6MH0pLG1vLlI9bW8uX1IubWFwKGZ1bmN0aW9uKHYwLENsKXtyZXR1cm57dDoicyIsdjpt''@;'; put 'put ''by50LnNsaWNlKHYwLmlkeCwobW8uX1JbQ2wrMV18fHt9KS5pZHgpLHM6TXIuRm9udHNbdjAuaWZudDw0P3YwLmlmbnQ6djAuaWZudC0xXX19KSxyZS5jZWxsSFRNTCYmKG1vLmg9U2gobW8uUikpKTpyZS5jZWxsSFRNTCYmKG1vLmg9ZTAobW8udCkpLGRlbGV0ZSBtby5fUn0pO2JyZWFrO2Nh''@;'; put 'put ''c2UiRm9ybWF0IjppZig0PT1mci5iaWZmKXtmb1tuMCsrXT1qclsxXTtmb3IodmFyIGdpPTA7Z2k8bjArMTYzJiZGLl90YWJsZVtnaV0hPWpyWzFdOysrZ2kpO2dpPj0xNjMmJkYubG9hZChqclsxXSxuMCsxNjMpfWVsc2UgRi5sb2FkKGpyWzFdLGpyWzBdKTticmVhaztjYXNlIkJJRkYyRk9S''@;'; put 'put ''TUFUIjpmb1tuMCsrXT1qcjtmb3IodmFyICRpPTA7JGk8bjArMTYzJiZGLl90YWJsZVskaV0hPWpyOysrJGkpOyRpPj0xNjMmJkYubG9hZChqcixuMCsxNjMpO2JyZWFrO2Nhc2UiTWVyZ2VDZWxscyI6SjA9SjAuY29uY2F0KGpyKTticmVhaztjYXNlIk9iaiI6aW9banIuY21vWzBdXT1mci5s''@;'; put 'put ''YXN0b2JqPWpyO2JyZWFrO2Nhc2UiVHhPIjpmci5sYXN0b2JqLlR4Tz1qcjticmVhaztjYXNlIkltRGF0YSI6ZnIubGFzdG9iai5JbURhdGE9anI7YnJlYWs7Y2FzZSJITGluayI6Zm9yKHp0PWpyWzBdLnMucjt6dDw9anJbMF0uZS5yOysrenQpZm9yKEx0PWpyWzBdLnMuYztMdDw9anJbMF0u''@;'; put 'put ''ZS5jOysrTHQpKGFuPXJlLmRlbnNlPyh4ZVt6dF18fFtdKVtMdF06eGVbUTAoe2M6THQscjp6dH0pXSkmJihhbi5sPWpyWzFdKTticmVhaztjYXNlIkhMaW5rVG9vbHRpcCI6Zm9yKHp0PWpyWzBdLnMucjt6dDw9anJbMF0uZS5yOysrenQpZm9yKEx0PWpyWzBdLnMuYztMdDw9anJbMF0uZS5j''@;'; put 'put ''OysrTHQpKGFuPXJlLmRlbnNlPyh4ZVt6dF18fFtdKVtMdF06eGVbUTAoe2M6THQscjp6dH0pXSkmJmFuLmwmJihhbi5sLlRvb2x0aXA9anJbMV0pO2JyZWFrO2Nhc2UiTm90ZSI6aWYoZnIuYmlmZjw9NSYmZnIuYmlmZj49MilicmVhazthbj1yZS5kZW5zZT8oeGVbanJbMF0ucl18fFtdKVtq''@;'; put 'put ''clswXS5jXTp4ZVtRMChqclswXSldO3ZhciBNbz1pb1tqclsyXV07YW58fChyZS5kZW5zZT8oeGVbanJbMF0ucl18fCh4ZVtqclswXS5yXT1bXSksYW49eGVbanJbMF0ucl1banJbMF0uY109e3Q6InoifSk6YW49eGVbUTAoanJbMF0pXT17dDoieiJ9LFplLmUucj1NYXRoLm1heChaZS5lLnIs''@;'; put 'put ''anJbMF0uciksWmUucy5yPU1hdGgubWluKFplLnMucixqclswXS5yKSxaZS5lLmM9TWF0aC5tYXgoWmUuZS5jLGpyWzBdLmMpLFplLnMuYz1NYXRoLm1pbihaZS5zLmMsanJbMF0uYykpLGFuLmN8fChhbi5jPVtdKSxhbi5jLnB1c2goe2E6anJbMV0sdDpNby5UeE8udH0pO2JyZWFrO2RlZmF1''@;'; put 'put ''bHQ6c3dpdGNoKHgwLm4pe2Nhc2UiQ2xydENsaWVudCI6Y2FzZSJIZWFkZXIiOmNhc2UiRm9vdGVyIjpjYXNlIkhDZW50ZXIiOmNhc2UiVkNlbnRlciI6Y2FzZSJQbHMiOmNhc2UiR0NXIjpjYXNlIkxIUmVjb3JkIjpjYXNlIkRCQ2VsbCI6Y2FzZSJFbnRFeFUyIjpjYXNlIlN4VmlldyI6Y2Fz''@;'; put 'put ''ZSJTeHZkIjpjYXNlIlNYVkkiOmNhc2UiU1hWREV4IjpjYXNlIlN4SXZkIjpjYXNlIlNYU3RyaW5nIjpjYXNlIlN5bmMiOmNhc2UiQWRkaW4iOmNhc2UiU1hESSI6Y2FzZSJTWExJIjpjYXNlIlNYRXgiOmNhc2UiUXNpU1hUYWciOmNhc2UiRmVhdCI6Y2FzZSJGZWF0SGRyIjpjYXNlIkZlYXRI''@;'; put 'put ''ZHIxMSI6Y2FzZSJGZWF0dXJlMTEiOmNhc2UiRmVhdHVyZTEyIjpjYXNlIkxpc3QxMiI6Y2FzZSJSZWNhbGNJZCI6Y2FzZSJEeEdDb2wiOmNhc2UiRmJpIjpjYXNlIkZiaTIiOmNhc2UiR2VsRnJhbWUiOmNhc2UiWEZDUkMiOmNhc2UiU3R5bGUiOmNhc2UiU3R5bGVFeHQiOmNhc2UiU2NlbmFy''@;'; put 'put ''aW9Qcm90ZWN0IjpjYXNlIk9ialByb3RlY3QiOmNhc2UiQ29uZEZtdDEyIjpjYXNlIlRhYmxlIjpjYXNlIlRhYmxlU3R5bGVzIjpjYXNlIlRhYmxlU3R5bGUiOmNhc2UiVGFibGVTdHlsZUVsZW1lbnQiOmNhc2UiU1hTdHJlYW1JRCI6Y2FzZSJTWFZTIjpjYXNlIkRDb25SZWYiOmNhc2UiU1hB''@;'; put 'put ''ZGRsIjpjYXNlIkRDb25CaW4iOmNhc2UiRENvbk5hbWUiOmNhc2UiU1hQSSI6Y2FzZSJTeEZvcm1hdCI6Y2FzZSJTeFNlbGVjdCI6Y2FzZSJTeFJ1bGUiOmNhc2UiU3hGaWx0IjpjYXNlIlN4SXRtIjpjYXNlIlN4RFhGIjpjYXNlIlNjZW5NYW4iOmNhc2UiRENvbiI6Y2FzZSJDZWxsV2F0Y2gi''@;'; put 'put ''OmNhc2UiUHJpbnRSb3dDb2wiOmNhc2UiUHJpbnRHcmlkIjpjYXNlIlByaW50U2l6ZSI6Y2FzZSJYQ1QiOmNhc2UiQ1JOIjpjYXNlIlNjbCI6Y2FzZSJTaGVldEV4dCI6Y2FzZSJTaGVldEV4dE9wdGlvbmFsIjpjYXNlIk9iTm9NYWNyb3MiOmNhc2UiT2JQcm9qIjpjYXNlIkdVSURUeXBlTGli''@;'; put 'put ''IjpjYXNlIldPcHQiOmNhc2UiUGhvbmV0aWNJbmZvIjpjYXNlIk9sZU9iamVjdFNpemUiOmNhc2UiRFhGIjpjYXNlIkRYRk4iOmNhc2UiRFhGTjEyIjpjYXNlIkRYRk4xMkxpc3QiOmNhc2UiRFhGTjEyTm9DQiI6Y2FzZSJEdiI6Y2FzZSJEVmFsIjpjYXNlIkJSQUkiOmNhc2UiU2VyaWVzIjpj''@;'; put 'put ''YXNlIlNlcmllc1RleHQiOmNhc2UiRENvbm4iOmNhc2UiRGJPclBhcmFtUXJ5IjpjYXNlIkRCUXVlcnlFeHQiOmNhc2UiT2xlRGJDb25uIjpjYXNlIkV4dFN0cmluZyI6Y2FzZSJJRm10UmVjb3JkIjpjYXNlIkNvbmRGbXQiOmNhc2UiQ0YiOmNhc2UiQ0YxMiI6Y2FzZSJDRkV4IjpjYXNlIkV4''@;'; put 'put ''Y2VsOUZpbGUiOmNhc2UiVW5pdHMiOmNhc2UiSW50ZXJmYWNlSGRyIjpjYXNlIk1tcyI6Y2FzZSJJbnRlcmZhY2VFbmQiOmNhc2UiRFNGIjpjYXNlIkJ1aWx0SW5Gbkdyb3VwQ291bnQiOmNhc2UiV2luZG93MSI6Y2FzZSJIaWRlT2JqIjpjYXNlIkdyaWRTZXQiOmNhc2UiR3V0cyI6Y2FzZSJV''@;'; put 'put ''c2VyQlZpZXciOmNhc2UiVXNlclNWaWV3QmVnaW4iOmNhc2UiVXNlclNWaWV3RW5kIjpjYXNlIkRlZkNvbFdpZHRoIjpjYXNlIkRlZmF1bHRSb3dIZWlnaHQiOmJyZWFrO2Nhc2UiWEZFeHQiOnpFKElyW2pyLml4ZmVdLGpyLmV4dCk7YnJlYWs7Y2FzZSJDb2xJbmZvIjppZighZnIuY2VsbFN0''@;'; put 'put ''eWxlcylicmVhaztmb3IoO2pyLmU+PWpyLnM7KWIwW2pyLmUtLV09e3dpZHRoOmpyLncvMjU2LGxldmVsOmpyLmxldmVsfHwwLGhpZGRlbjohISgxJmpyLmZsYWdzKX0sY2l8fChjaT0hMCksYmMoYjBbanIuZSsxXSk7YnJlYWs7Y2FzZSJSb3ciOnZhciBNMD17fTtudWxsIT1qci5sZXZlbCYm''@;'; put 'put ''KGJpW2pyLnJdPU0wLE0wLmxldmVsPWpyLmxldmVsKSxqci5oaWRkZW4mJihiaVtqci5yXT1NMCxNMC5oaWRkZW49ITApLGpyLmhwdCYmKGJpW2pyLnJdPU0wLE0wLmhwdD1qci5ocHQsTTAuaHB4PW1mKGpyLmhwdCkpLGpyLml4ZmUmJihiaVtqci5yXT1NMCxhaShSbj17aXhmZTpqci5peGZl''@;'; put 'put ''LFhGOklyW2pyLml4ZmVdfHx7fSx2OjAsdDoibiJ9LHJlKSxNMC5zPVJuLnMpO2JyZWFrO2Nhc2UiTGVmdE1hcmdpbiI6Y2FzZSJSaWdodE1hcmdpbiI6Y2FzZSJUb3BNYXJnaW4iOmNhc2UiQm90dG9tTWFyZ2luIjp4ZVsiIW1hcmdpbnMiXXx8RGgoeGVbIiFtYXJnaW5zIl09e30pLHhlWyIh''@;'; put 'put ''bWFyZ2lucyJdW0NhLnNsaWNlKDAsLTYpLnRvTG93ZXJDYXNlKCldPWpyO2JyZWFrO2Nhc2UiU2VsZWN0aW9uIjp4ZVsiIXNlbCJdPWpyO2JyZWFrO2Nhc2UiU2V0dXAiOnhlWyIhbWFyZ2lucyJdfHxEaCh4ZVsiIW1hcmdpbnMiXT17fSkseGVbIiFtYXJnaW5zIl0uaGVhZGVyPWpyLmhlYWRl''@;'; put 'put ''cix4ZVsiIW1hcmdpbnMiXS5mb290ZXI9anIuZm9vdGVyO2JyZWFrO2Nhc2UiV2luZG93MiI6anIuUlRMJiYoeXIuVmlld3NbMF0uUlRMPSEwKSxoaT1qcjticmVhaztjYXNlIkNvdW50cnkiOlZuPWpyO2JyZWFrO2Nhc2UiRm9udCI6anIuaWN2JiZXcihqci5pY3YpJiYoanIuY29sb3I9e3Jn''@;'; put 'put ''YjpXbChXcihqci5pY3YpKX0pLGRlbGV0ZSBqci5pY3YsMD09TXIuRm9udHMubGVuZ3RoJiZyNihqciksTXIuRm9udHMucHVzaChqcik7YnJlYWs7Y2FzZSJQYWxldHRlIjppaT1qcjticmVhaztjYXNlIlRoZW1lIjp3MD1qcjticmVhaztjYXNlIkNvZGVOYW1lIjpTdD9vaS5Db2RlTmFtZT1q''@;'; put 'put ''cnx8b2kubmFtZTp5ci5XQlByb3BzLkNvZGVOYW1lPWpyfHwiVGhpc1dvcmtib29rIjticmVhaztjYXNlIlBhbmUiOihoaXx8e30pLmZyb3plbiYmKHhlWyIhZnJlZXplIl09UTAoe3I6anIueXx8MCxjOmpyLnh8fDB9KSk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2goeDAubil7Y2FzZSJEYXQiOmNh''@;'; put 'put ''c2UiQmVnaW4iOmNhc2UiRW5kIjpjYXNlIlN0YXJ0QmxvY2siOmNhc2UiRW5kQmxvY2siOmNhc2UiRnJhbWUiOmNhc2UiQXJlYSI6Y2FzZSJBeGlzIjpjYXNlIkF4aXNMaW5lIjpjYXNlIlRpY2siOmNhc2UiQXhlc1VzZWQiOmNhc2UiQ3J0TGF5b3V0MTIiOmNhc2UiQ3J0TGF5b3V0MTJBIjpj''@;'; put 'put ''YXNlIkNydExpbmsiOmNhc2UiQ3J0TGluZSI6Y2FzZSJDcnRNbEZydCI6Y2FzZSJDcnRNbEZydENvbnRpbnVlIjpjYXNlIkxpbmVGb3JtYXQiOmNhc2UiQXJlYUZvcm1hdCI6Y2FzZSJDaGFydCI6Y2FzZSJDaGFydDNkIjpjYXNlIkNoYXJ0M0RCYXJTaGFwZSI6Y2FzZSJDaGFydEZvcm1hdCI6''@;'; put 'put ''Y2FzZSJDaGFydEZydEluZm8iOmNhc2UiUGxvdEFyZWEiOmNhc2UiUGxvdEdyb3d0aCI6Y2FzZSJTZXJpZXNMaXN0IjpjYXNlIlNlclBhcmVudCI6Y2FzZSJTZXJBdXhUcmVuZCI6Y2FzZSJEYXRhRm9ybWF0IjpjYXNlIlNlclRvQ3J0IjpjYXNlIkZvbnRYIjpjYXNlIkNhdFNlclJhbmdlIjpj''@;'; put 'put ''YXNlIkF4Y0V4dCI6Y2FzZSJTZXJGbXQiOmNhc2UiU2h0UHJvcHMiOmNhc2UiRGVmYXVsdFRleHQiOmNhc2UiVGV4dCI6Y2FzZSJDYXRMYWIiOmNhc2UiRGF0YUxhYkV4dENvbnRlbnRzIjpjYXNlIkxlZ2VuZCI6Y2FzZSJMZWdlbmRFeGNlcHRpb24iOmNhc2UiUGllIjpjYXNlIlNjYXR0ZXIi''@;'; put 'put ''OmNhc2UiUGllRm9ybWF0IjpjYXNlIk1hcmtlckZvcm1hdCI6Y2FzZSJTdGFydE9iamVjdCI6Y2FzZSJFbmRPYmplY3QiOmNhc2UiQWxSdW5zIjpjYXNlIk9iamVjdExpbmsiOmNhc2UiU0lJbmRleCI6Y2FzZSJBdHRhY2hlZExhYmVsIjpjYXNlIllNdWx0IjpjYXNlIkxpbmUiOmNhc2UiQmFy''@;'; put 'put ''IjpjYXNlIlN1cmYiOmNhc2UiQXhpc1BhcmVudCI6Y2FzZSJQb3MiOmNhc2UiVmFsdWVSYW5nZSI6Y2FzZSJTWFZpZXdFeDkiOmNhc2UiU1hWaWV3TGluayI6Y2FzZSJQaXZvdENoYXJ0Qml0cyI6Y2FzZSJTQmFzZVJlZiI6Y2FzZSJUZXh0UHJvcHNTdHJlYW0iOmNhc2UiTG5FeHQiOmNhc2Ui''@;'; put 'put ''TWtyRXh0IjpjYXNlIkNydENvb3B0IjpjYXNlIlFzaSI6Y2FzZSJRc2lmIjpjYXNlIlFzaXIiOmNhc2UiUXNpU1hUYWciOmNhc2UiVHh0UXJ5IjpjYXNlIkZpbHRlck1vZGUiOmNhc2UiQXV0b0ZpbHRlciI6Y2FzZSJBdXRvRmlsdGVySW5mbyI6Y2FzZSJBdXRvRmlsdGVyMTIiOmNhc2UiRHJv''@;'; put 'put ''cERvd25PYmpJZHMiOmNhc2UiU29ydCI6Y2FzZSJTb3J0RGF0YSI6Y2FzZSJTaGFwZVByb3BzU3RyZWFtIjpjYXNlIk1zb0RyYXdpbmciOmNhc2UiTXNvRHJhd2luZ0dyb3VwIjpjYXNlIk1zb0RyYXdpbmdTZWxlY3Rpb24iOmNhc2UiV2ViUHViIjpjYXNlIkF1dG9XZWJQdWIiOmNhc2UiSGVh''@;'; put 'put ''ZGVyRm9vdGVyIjpjYXNlIkhGUGljdHVyZSI6Y2FzZSJQTFYiOmNhc2UiSG9yaXpvbnRhbFBhZ2VCcmVha3MiOmNhc2UiVmVydGljYWxQYWdlQnJlYWtzIjpjYXNlIkJhY2t1cCI6Y2FzZSJDb21wcmVzc1BpY3R1cmVzIjpjYXNlIkNvbXBhdDEyIjpjYXNlIkNvbnRpbnVlIjpjYXNlIkNvbnRp''@;'; put 'put ''bnVlRnJ0MTIiOmNhc2UiRnJ0Rm9udExpc3QiOmNhc2UiRnJ0V3JhcHBlciI6YnJlYWs7ZGVmYXVsdDpzd2l0Y2goeDAubil7Y2FzZSJUYWJJZENvbmYiOmNhc2UiUmFkYXIiOmNhc2UiUmFkYXJBcmVhIjpjYXNlIkRyb3BCYXIiOmNhc2UiSW50bCI6Y2FzZSJDb29yZExpc3QiOmNhc2UiU2Vy''@;'; put 'put ''QXV4RXJyQmFyIjpjYXNlIkJJRkYyRk9OVENMUiI6Y2FzZSJCSUZGMkZNVENOVCI6Y2FzZSJCSUZGMkZPTlRYVFJBIjpjYXNlIkJJRkYyWEYiOmNhc2UiQklGRjNYRiI6Y2FzZSJCSUZGNFhGIjpjYXNlIkJJRkYyWEZJTkRFWCI6Y2FzZSJCSUZGNEZNVENOVCI6Y2FzZSJCSUZGMlJPVyI6Y2Fz''@;'; put 'put ''ZSJCSUZGMldJTkRPVzIiOmNhc2UiU0NFTkFSSU8iOmNhc2UiRENvbkJpbiI6Y2FzZSJQaWNGIjpjYXNlIkRhdGFMYWJFeHQiOmNhc2UiTGVsIjpjYXNlIkJvcFBvcCI6Y2FzZSJCb3BQb3BDdXN0b20iOmNhc2UiUmVhbFRpbWVEYXRhIjpjYXNlIk5hbWUiOmNhc2UiTEhOR3JhcGgiOmNhc2Ui''@;'; put 'put ''Rm5Hcm91cE5hbWUiOmNhc2UiQWRkTWVudSI6Y2FzZSJMUHIiOmNhc2UiTGlzdE9iaiI6Y2FzZSJMaXN0RmllbGQiOmNhc2UiUlJTb3J0IjpjYXNlIkJpZ05hbWUiOmNhc2UiVG9vbGJhckhkciI6Y2FzZSJUb29sYmFyRW5kIjpjYXNlIkRERU9iak5hbWUiOmNhc2UiRlJUQXJjaElkJCI6YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDppZihyZS5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIFJlY29yZCAiK3gwLm59fX19fWVsc2UgSC5sKz1BaSxmciYmZnIuZW5jJiZmci5lbmMuaW5zaXR1JiZmci5lbmMuaW5zaXR1KFRlKHtsZW5ndGg6QWl9KSl9cmV0dXJuIFguU2hlZXROYW1lcz1vbihGZSkuc29ydChmdW5j''@;'; put 'put ''dGlvbihtbyx2MCl7cmV0dXJuIE51bWJlcihtbyktTnVtYmVyKHYwKX0pLm1hcChmdW5jdGlvbihtbyl7cmV0dXJuIEZlW21vXS5uYW1lfSkscmUuYm9va1NoZWV0c3x8KFguU2hlZXRzPXdlKSwhWC5TaGVldE5hbWVzLmxlbmd0aCYmSXRbIiFyZWYiXT8oWC5TaGVldE5hbWVzLnB1c2goIlNo''@;'; put 'put ''ZWV0MSIpLFguU2hlZXRzJiYoWC5TaGVldHMuU2hlZXQxPUl0KSk6WC5QcmVhbWJsZT1JdCxYLlNoZWV0cyYmaWEuZm9yRWFjaChmdW5jdGlvbihtbyx2MCl7WC5TaGVldHNbWC5TaGVldE5hbWVzW3YwXV1bIiFhdXRvZmlsdGVyIl09bW99KSxYLlN0cmluZ3M9VWUsWC5TU0Y9Ri5nZXRfdGFi''@;'; put 'put ''bGUoKSxmci5lbmMmJihYLkVuY3J5cHRpb249ZnIuZW5jKSx3MCYmKFguVGhlbWVzPXcwKSxYLk1ldGFkYXRhPXt9LHZvaWQgMCE9PVZuJiYoWC5NZXRhZGF0YS5Db3VudHJ5PVZuKSxIci5uYW1lcy5sZW5ndGg+MCYmKHlyLk5hbWVzPUhyLm5hbWVzKSxYLldvcmtib29rPXlyLFh9KHdlLmNv''@;'; put 'put ''bnRlbnQscmUpO2Vsc2UgaWYoKEZlPXB0LmZpbmQoSCwiUGVyZmVjdE9mZmljZV9NQUlOIikpJiZGZS5jb250ZW50KXhlPXcxLnRvX3dvcmtib29rKEZlLmNvbnRlbnQsKHJlLnR5cGU9WmUscmUpKTtlbHNle2lmKCEoRmU9cHQuZmluZChILCJOYXRpdmVDb250ZW50X01BSU4iKSl8fCFGZS5j''@;'; put 'put ''b250ZW50KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgV29ya2Jvb2sgc3RyZWFtIik7eGU9dzEudG9fd29ya2Jvb2soRmUuY29udGVudCwocmUudHlwZT1aZSxyZSkpfXJlLmJvb2tWQkEmJkguRnVsbFBhdGhzJiZwdC5maW5kKEgsIi9fVkJBX1BST0pFQ1RfQ1VSL1ZCQS9kaXIiKSYm''@;'; put 'put ''KHhlLnZiYXJhdz1mdW5jdGlvbiBFQihIKXt2YXIgcmU9cHQudXRpbHMuY2ZiX25ldyh7cm9vdDoiUiJ9KTtyZXR1cm4gSC5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihYLHdlKXtpZigiLyIhPT1YLnNsaWNlKC0xKSYmWC5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKXt2YXIgeGU9WC5y''@;'; put 'put ''ZXBsYWNlKC9eW15cL10qLywiUiIpLnJlcGxhY2UoL1wvX1ZCQV9QUk9KRUNUX0NVUlx1MDAwMCovLCIiKTtwdC51dGlscy5jZmJfYWRkKHJlLHhlLEguRmlsZUluZGV4W3dlXS5jb250ZW50KX19KSxwdC53cml0ZShyZSl9KEgpKX12YXIgVmU9e307cmV0dXJuIEguRnVsbFBhdGhzJiZmdW5j''@;'; put 'put ''dGlvbiBxUChILHJlLFgpe3ZhciB3ZT1wdC5maW5kKEgsIiFEb2N1bWVudFN1bW1hcnlJbmZvcm1hdGlvbiIpO2lmKHdlJiZ3ZS5zaXplPjApdHJ5e3ZhciB4ZT1qZih3ZSx2OSxEZF9EU0kpO2Zvcih2YXIgRmUgaW4geGUpcmVbRmVdPXhlW0ZlXX1jYXRjaChTdCl7aWYoWC5XVEYpdGhyb3cg''@;'; put 'put ''U3R9dmFyIFplPXB0LmZpbmQoSCwiIVN1bW1hcnlJbmZvcm1hdGlvbiIpO2lmKFplJiZaZS5zaXplPjApdHJ5e3ZhciBWZT1qZihaZSxmYixEZF9TSSk7Zm9yKHZhciBVZSBpbiBWZSludWxsPT1yZVtVZV0mJihyZVtVZV09VmVbVWVdKX1jYXRjaChTdCl7aWYoWC5XVEYpdGhyb3cgU3R9cmUu''@;'; put 'put ''SGVhZGluZ1BhaXJzJiZyZS5UaXRsZXNPZlBhcnRzJiYoTXMocmUuSGVhZGluZ1BhaXJzLHJlLlRpdGxlc09mUGFydHMscmUsWCksZGVsZXRlIHJlLkhlYWRpbmdQYWlycyxkZWxldGUgcmUuVGl0bGVzT2ZQYXJ0cyl9KEgsVmUscmUpLHhlLlByb3BzPXhlLkN1c3Rwcm9wcz1WZSxyZS5ib29r''@;'; put 'put ''RmlsZXMmJih4ZS5jZmI9SCkseGV9dmFyIFQ2PXswOntuOiJCcnRSb3dIZHIiLGY6ZnVuY3Rpb24gZTcoSCxyZSl7dmFyIFg9e30sd2U9SC5sK3JlO1gucj1ILnJlYWRfc2hpZnQoNCksSC5sKz00O3ZhciB4ZT1ILnJlYWRfc2hpZnQoMik7SC5sKz0xO3ZhciBGZT1ILnJlYWRfc2hpZnQoMSk7''@;'; put 'put ''cmV0dXJuIEgubD13ZSw3JkZlJiYoWC5sZXZlbD03JkZlKSwxNiZGZSYmKFguaGlkZGVuPSEwKSwzMiZGZSYmKFguaHB0PXhlLzIwKSxYfX0sMTp7bjoiQnJ0Q2VsbEJsYW5rIixmOmZ1bmN0aW9uIGs2KEgpe3JldHVybltQZihIKV19fSwyOntuOiJCcnRDZWxsUmsiLGY6ZnVuY3Rpb24gTHgo''@;'; put 'put ''SCl7cmV0dXJuW1BmKEgpLFFnKEgpLCJuIl19fSwzOntuOiJCcnRDZWxsRXJyb3IiLGY6ZnVuY3Rpb24gbjUoSCl7cmV0dXJuW1BmKEgpLEgucmVhZF9zaGlmdCgxKSwiZSJdfX0sNDp7bjoiQnJ0Q2VsbEJvb2wiLGY6ZnVuY3Rpb24gJDgoSCl7cmV0dXJuW1BmKEgpLEgucmVhZF9zaGlmdCgx''@;'; put 'put ''KSwiYiJdfX0sNTp7bjoiQnJ0Q2VsbFJlYWwiLGY6ZnVuY3Rpb24gYTUoSCl7cmV0dXJuW1BmKEgpLGUyKEgpLCJuIl19fSw2OntuOiJCcnRDZWxsU3QiLGY6ZnVuY3Rpb24gbm4oSCl7cmV0dXJuW1BmKEgpLG5sKEgpLCJzdHIiXX19LDc6e246IkJydENlbGxJc3N0IixmOmZ1bmN0aW9uIHRo''@;'; put 'put ''KEgpe3JldHVybltQZihIKSxILnJlYWRfc2hpZnQoNCksInMiXX19LDg6e246IkJydEZtbGFTdHJpbmciLGY6ZnVuY3Rpb24gaXQoSCxyZSxYKXt2YXIgd2U9SC5sK3JlLHhlPVBmKEgpO3hlLnI9WFsiIXJvdyJdO3ZhciBaZT1beGUsbmwoSCksInN0ciJdO2lmKFguY2VsbEZvcm11bGEpe0gu''@;'; put 'put ''bCs9Mjt2YXIgVmU9d18oSCx3ZS1ILmwsWCk7WmVbM109ZnUoVmUsbnVsbCx4ZSxYLnN1cGJvb2tzLFgpfWVsc2UgSC5sPXdlO3JldHVybiBaZX19LDk6e246IkJydEZtbGFOdW0iLGY6ZnVuY3Rpb24gdHQoSCxyZSxYKXt2YXIgd2U9SC5sK3JlLHhlPVBmKEgpO3hlLnI9WFsiIXJvdyJdO3Zh''@;'; put 'put ''ciBaZT1beGUsZTIoSCksIm4iXTtpZihYLmNlbGxGb3JtdWxhKXtILmwrPTI7dmFyIFZlPXdfKEgsd2UtSC5sLFgpO1plWzNdPWZ1KFZlLG51bGwseGUsWC5zdXBib29rcyxYKX1lbHNlIEgubD13ZTtyZXR1cm4gWmV9fSwxMDp7bjoiQnJ0Rm1sYUJvb2wiLGY6ZnVuY3Rpb24gQzEoSCxyZSxY''@;'; put 'put ''KXt2YXIgd2U9SC5sK3JlLHhlPVBmKEgpO3hlLnI9WFsiIXJvdyJdO3ZhciBaZT1beGUsSC5yZWFkX3NoaWZ0KDEpLCJiIl07aWYoWC5jZWxsRm9ybXVsYSl7SC5sKz0yO3ZhciBWZT13XyhILHdlLUgubCxYKTtaZVszXT1mdShWZSxudWxsLHhlLFguc3VwYm9va3MsWCl9ZWxzZSBILmw9d2U7''@;'; put 'put ''cmV0dXJuIFplfX0sMTE6e246IkJydEZtbGFFcnJvciIsZjpmdW5jdGlvbiBTYyhILHJlLFgpe3ZhciB3ZT1ILmwrcmUseGU9UGYoSCk7eGUucj1YWyIhcm93Il07dmFyIFplPVt4ZSxILnJlYWRfc2hpZnQoMSksImUiXTtpZihYLmNlbGxGb3JtdWxhKXtILmwrPTI7dmFyIFZlPXdfKEgsd2Ut''@;'; put 'put ''SC5sLFgpO1plWzNdPWZ1KFZlLG51bGwseGUsWC5zdXBib29rcyxYKX1lbHNlIEgubD13ZTtyZXR1cm4gWmV9fSwxMjp7bjoiQnJ0U2hvcnRCbGFuayIsZjpmdW5jdGlvbiBlaChIKXtyZXR1cm5bXzQoSCldfX0sMTM6e246IkJydFNob3J0UmsiLGY6ZnVuY3Rpb24gX1AoSCl7cmV0dXJuW180''@;'; put 'put ''KEgpLFFnKEgpLCJuIl19fSwxNDp7bjoiQnJ0U2hvcnRFcnJvciIsZjpmdW5jdGlvbiByNShIKXtyZXR1cm5bXzQoSCksSC5yZWFkX3NoaWZ0KDEpLCJlIl19fSwxNTp7bjoiQnJ0U2hvcnRCb29sIixmOmZ1bmN0aW9uIGU1KEgpe3JldHVybltfNChIKSxILnJlYWRfc2hpZnQoMSksImIiXX19''@;'; put 'put ''LDE2OntuOiJCcnRTaG9ydFJlYWwiLGY6eEF9LDE3OntuOiJCcnRTaG9ydFN0IixmOmZ1bmN0aW9uIHVhKEgpe3JldHVybltfNChIKSxubChIKSwic3RyIl19fSwxODp7bjoiQnJ0U2hvcnRJc3N0IixmOmZ1bmN0aW9uIGpfKEgpe3JldHVybltfNChIKSxILnJlYWRfc2hpZnQoNCksInMiXX19''@;'; put 'put ''LDE5OntuOiJCcnRTU1RJdGVtIixmOlJzfSwyMDp7bjoiQnJ0UENESU1pc3NpbmcifSwyMTp7bjoiQnJ0UENESU51bWJlciJ9LDIyOntuOiJCcnRQQ0RJQm9vbGVhbiJ9LDIzOntuOiJCcnRQQ0RJRXJyb3IifSwyNDp7bjoiQnJ0UENESVN0cmluZyJ9LDI1OntuOiJCcnRQQ0RJRGF0ZXRpbWUi''@;'; put 'put ''fSwyNjp7bjoiQnJ0UENESUluZGV4In0sMjc6e246IkJydFBDRElBTWlzc2luZyJ9LDI4OntuOiJCcnRQQ0RJQU51bWJlciJ9LDI5OntuOiJCcnRQQ0RJQUJvb2xlYW4ifSwzMDp7bjoiQnJ0UENESUFFcnJvciJ9LDMxOntuOiJCcnRQQ0RJQVN0cmluZyJ9LDMyOntuOiJCcnRQQ0RJQURhdGV0''@;'; put 'put ''aW1lIn0sMzM6e246IkJydFBDUlJlY29yZCJ9LDM0OntuOiJCcnRQQ1JSZWNvcmREdCJ9LDM1OntuOiJCcnRGUlRCZWdpbiJ9LDM2OntuOiJCcnRGUlRFbmQifSwzNzp7bjoiQnJ0QUNCZWdpbiJ9LDM4OntuOiJCcnRBQ0VuZCJ9LDM5OntuOiJCcnROYW1lIixmOmZ1bmN0aW9uIFFfKEgscmUs''@;'; put 'put ''WCl7dmFyIHdlPUgubCtyZTtILmwrPTQsSC5sKz0xO3ZhciB4ZT1ILnJlYWRfc2hpZnQoNCksRmU9ZDkoSCksWmU9SEcoSCwwLFgpLFZlPXdoKEgpO0gubD13ZTt2YXIgVWU9e05hbWU6RmUsUHRnOlplfTtyZXR1cm4geGU8MjY4NDM1NDU1JiYoVWUuU2hlZXQ9eGUpLFZlJiYoVWUuQ29tbWVu''@;'; put 'put ''dD1WZSksVWV9fSw0MDp7bjoiQnJ0SW5kZXhSb3dCbG9jayJ9LDQyOntuOiJCcnRJbmRleEJsb2NrIn0sNDM6e246IkJydEZvbnQiLGY6ZnVuY3Rpb24gamIoSCxyZSxYKXt2YXIgd2U9e307d2Uuc3o9SC5yZWFkX3NoaWZ0KDIpLzIwO3ZhciB4ZT1jZChIKTtzd2l0Y2goeGUuZkJvbGQmJih3''@;'; put 'put ''ZS5ib2xkPTEpLHhlLmZJdGFsaWMmJih3ZS5pdGFsaWM9MSkseGUuZlVuZGVybGluZSYmKHdlLnVuZGVybGluZT0xKSx4ZS5mQ29uZGVuc2UmJih3ZS5jb25kZW5zZT0xKSx4ZS5mRXh0ZW5kJiYod2UuZXh0ZW5kPTEpLHhlLmZTaGFkb3cmJih3ZS5zaGFkb3c9MSkseGUuZk91dGxpbmUmJih3''@;'; put 'put ''ZS5vdXRsaW5lPTEpLHhlLmZTdHJpa2VvdXQmJih3ZS5zdHJpa2U9MSksNzAwPT09SC5yZWFkX3NoaWZ0KDIpJiYod2UuYm9sZD0xKSxILnJlYWRfc2hpZnQoMikpe2Nhc2UgMTp3ZS52YWxpZ249InN1cGVyIjticmVhaztjYXNlIDI6d2UudmFsaWduPSJzdWIifXZhciBaZT1ILnJlYWRfc2hp''@;'; put 'put ''ZnQoMSk7MCE9WmUmJih3ZS51bmRlcmxpbmU9WmUpO3ZhciBWZT1ILnJlYWRfc2hpZnQoMSk7VmU+MCYmKHdlLmZhbWlseT1WZSk7dmFyIFVlPUgucmVhZF9zaGlmdCgxKTtzd2l0Y2goVWU+MCYmKHdlLmNoYXJzZXQ9VWUpLEgubCsrLHdlLmNvbG9yPVhnKEgpLEgucmVhZF9zaGlmdCgxKSl7''@;'; put 'put ''Y2FzZSAxOndlLnNjaGVtZT0ibWFqb3IiO2JyZWFrO2Nhc2UgMjp3ZS5zY2hlbWU9Im1pbm9yIn1yZXR1cm4gd2UubmFtZT1ubChIKSx3ZX19LDQ0OntuOiJCcnRGbXQiLGY6ZnVuY3Rpb24gVmIoSCxyZSl7cmV0dXJuW0gucmVhZF9zaGlmdCgyKSxubChIKV19fSw0NTp7bjoiQnJ0RmlsbCIs''@;'; put 'put ''ZjpmdW5jdGlvbiBjQihILHJlKXt2YXIgWD1ILmwrcmUsd2U9e30seGU9SC5yZWFkX3NoaWZ0KDQpO2lmKDQwIT14ZSl7d2UucGF0dGVyblR5cGU9dUJbeGVdO3ZhciBGZT1YZyhIKTs2NCE9RmUuaW5kZXgmJih3ZS5mZ0NvbG9yPUZlKTt2YXIgWmU9WGcoSCk7NjUhPVplLmluZGV4JiYod2Uu''@;'; put 'put ''YmdDb2xvcj1aZSl9ZWxzZXtILmwrPTE2LEgucmVhZF9zaGlmdCg0KSxlMihIKSxlMihIKSxlMihIKSxlMihIKSxlMihIKTtmb3IodmFyIFZlPUgucmVhZF9zaGlmdCg0KSxVZT1bXSxTdD0wO1N0PFZlOysrU3QpVWUucHVzaChrRyhIKSl9cmV0dXJuIEgubD1YLHdlfX0sNDY6e246IkJydEJv''@;'; put 'put ''cmRlciIsZjpmdW5jdGlvbiBaYihIKXt2YXIgcmU9e307SC5yZWFkX3NoaWZ0KDEpO3ZhciBYPVI0KEgpOyJub25lIiE9WC5zdHlsZSYmKHJlLnRvcD1YKTt2YXIgd2U9UjQoSCk7Im5vbmUiIT13ZS5zdHlsZSYmKHJlLmJvdHRvbT13ZSk7dmFyIHhlPVI0KEgpOyJub25lIiE9eGUuc3R5bGUm''@;'; put 'put ''JihyZS5sZWZ0PXhlKTt2YXIgRmU9UjQoSCk7Im5vbmUiIT1GZS5zdHlsZSYmKHJlLnJpZ2h0PUZlKTt2YXIgWmU9UjQoSCk7cmV0dXJuIm5vbmUiIT1aZS5zdHlsZSYmKHJlLmRpYWc9WmUpLHJlfX0sNDc6e246IkJydFhGIixmOmZ1bmN0aW9uIGw2KEgscmUpe3ZhciBYPUgubCtyZSx3ZT17''@;'; put 'put ''fSx4ZT1ILnJlYWRfc2hpZnQoMiksRmU9SC5yZWFkX3NoaWZ0KDIpLFplPUgucmVhZF9zaGlmdCgyKSxWZT1ILnJlYWRfc2hpZnQoMiksVWU9SC5yZWFkX3NoaWZ0KDIpLFN0PUgucmVhZF9zaGlmdCgxKTtILnJlYWRfc2hpZnQoMSk7dmFyIEl0PUgucmVhZF9zaGlmdCgyKSxQdD1ILnJlYWRf''@;'; put 'put ''c2hpZnQoMSk7SC5sPVgsd2UueGZJZD14ZSx3ZS5udW1GbXRJZD1GZSx3ZS5mb250SWQ9WmUsd2UuZmlsbElkPVZlLHdlLmJvcmRlcklkPVVlLDEmUHQmJjAhPXdlLm51bUZtdElkJiYod2UuYXBwbHlOdW1iZXJGb3JtYXQ9ITApLHdlLmFsaWdubWVudD17fSxTdD4wJiYod2UuYWxpZ25tZW50''@;'; put 'put ''LnRleHRSb3RhdGlvbj1TdCk7dmFyIFF0PSExO3JldHVybiA3Jkl0JiYoUXQ9ITAsd2UuYWxpZ25tZW50Lmhvcml6b250YWw9d21bNyZJdF0pLHdlLmFsaWdubWVudC52ZXJ0aWNhbD1XOFtJdD4+PjMmN10sd2UuYWxpZ25tZW50LnZlcnRpY2FsJiYoUXQ9ITApLEl0Pj4+NiYxJiYod2UuYWxp''@;'; put 'put ''Z25tZW50LndyYXBUZXh0PSEwKSxJdD4+PjgmMSYmKHdlLmFsaWdubWVudC5zaHJpbmtUb0ZpdD0hMCksUXR8fGRlbGV0ZSB3ZS5hbGlnbm1lbnQsNCZQdCYmUXQmJih3ZS5hcHBseUFsaWdubWVudD0hMCksd2V9fSw0ODp7bjoiQnJ0U3R5bGUifSw0OTp7bjoiQnJ0Q2VsbE1ldGEifSw1MDp7''@;'; put 'put ''bjoiQnJ0VmFsdWVNZXRhIn0sNTE6e246IkJydE1kYiJ9LDUyOntuOiJCcnRCZWdpbkZtZCJ9LDUzOntuOiJCcnRFbmRGbWQifSw1NDp7bjoiQnJ0QmVnaW5NZHgifSw1NTp7bjoiQnJ0RW5kTWR4In0sNTY6e246IkJydEJlZ2luTWR4VHVwbGUifSw1Nzp7bjoiQnJ0RW5kTWR4VHVwbGUifSw1''@;'; put 'put ''ODp7bjoiQnJ0TWR4TWJySXN0ciJ9LDU5OntuOiJCcnRTdHIifSw2MDp7bjoiQnJ0Q29sSW5mbyIsZjp6Y30sNjI6e246IkJydENlbGxSU3RyaW5nIn0sNjM6e246IkJydENhbGNDaGFpbkl0ZW0kIixmOmZ1bmN0aW9uIGVfKEgpe3ZhciByZT17fTtyZS5pPUgucmVhZF9zaGlmdCg0KTt2YXIg''@;'; put 'put ''WD17fTtYLnI9SC5yZWFkX3NoaWZ0KDQpLFguYz1ILnJlYWRfc2hpZnQoNCkscmUucj1RMChYKTt2YXIgd2U9SC5yZWFkX3NoaWZ0KDEpO3JldHVybiAyJndlJiYocmUubD0iMSIpLDgmd2UmJihyZS5hPSIxIikscmV9fSw2NDp7bjoiQnJ0RFZhbCIsZjpmdW5jdGlvbiBQeChILHJlLFgpe3Zh''@;'; put 'put ''ciB3ZT1ILmwrcmUseGU9SC5yZWFkX3NoaWZ0KDQpLEZlPWpNKEgpLFplPXdoKEgpLFZlPXdoKEgpLFVlPXdoKEgpLFN0PXdoKEgpLEl0PSRCKEgscmUsWCksUHQ9SC5sPHdlPyRCKEgscmUsWCk6bnVsbCxRdD0xNSZ4ZSxhbj17dDpRNFtRdF0sc3FyZng6RmUsczpbWmUsVmUsVWUsU3RdfTty''@;'; put 'put ''ZXR1cm4gSXQmJihhbi5mMT1JdCksUHQmJihhbi5mMj1QdCksMD09UXR8fDM9PVF0fHw3PT1RdHx8KGFuLm9wPVRBW3hlPj4yMCYxNV0pLGFufX0sNjU6e246IkJydFN4dmNlbGxOdW0ifSw2Njp7bjoiQnJ0U3h2Y2VsbFN0ciJ9LDY3OntuOiJCcnRTeHZjZWxsQm9vbCJ9LDY4OntuOiJCcnRT''@;'; put 'put ''eHZjZWxsRXJyIn0sNjk6e246IkJydFN4dmNlbGxEYXRlIn0sNzA6e246IkJydFN4dmNlbGxOaWwifSwxMjg6e246IkJydEZpbGVWZXJzaW9uIn0sMTI5OntuOiJCcnRCZWdpblNoZWV0In0sMTMwOntuOiJCcnRFbmRTaGVldCJ9LDEzMTp7bjoiQnJ0QmVnaW5Cb29rIixmOkwyLHA6MH0sMTMy''@;'; put 'put ''OntuOiJCcnRFbmRCb29rIn0sMTMzOntuOiJCcnRCZWdpbldzVmlld3MifSwxMzQ6e246IkJydEVuZFdzVmlld3MifSwxMzU6e246IkJydEJlZ2luQm9va1ZpZXdzIn0sMTM2OntuOiJCcnRFbmRCb29rVmlld3MifSwxMzc6e246IkJydEJlZ2luV3NWaWV3IixmOmZ1bmN0aW9uIFV0KEgpe3Zh''@;'; put 'put ''ciByZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIEgubCs9Mjgse1JUTDozMiZyZSxncmlkOiEhKDQmcmUpfX19LDEzODp7bjoiQnJ0RW5kV3NWaWV3In0sMTM5OntuOiJCcnRCZWdpbkNzVmlld3MifSwxNDA6e246IkJydEVuZENzVmlld3MifSwxNDE6e246IkJydEJlZ2luQ3NWaWV3In0sMTQy''@;'; put 'put ''OntuOiJCcnRFbmRDc1ZpZXcifSwxNDM6e246IkJydEJlZ2luQnVuZGxlU2hzIn0sMTQ0OntuOiJCcnRFbmRCdW5kbGVTaHMifSwxNDU6e246IkJydEJlZ2luU2hlZXREYXRhIn0sMTQ2OntuOiJCcnRFbmRTaGVldERhdGEifSwxNDc6e246IkJydFdzUHJvcCIsZjpmdW5jdGlvbiBUZChILHJl''@;'; put 'put ''KXt2YXIgWD17fSx3ZT1IW0gubF07cmV0dXJuKytILmwsWC5hYm92ZT0hKDY0JndlKSxYLmxlZnQ9ISgxMjgmd2UpLEgubCs9MTgsWC5uYW1lPXNiKEgscmUtMTkpLFh9fSwxNDg6e246IkJydFdzRGltIixmOkM2LHA6MTZ9LDE1MTp7bjoiQnJ0UGFuZSIsZjpmdW5jdGlvbiB5aShILHJlKXt2''@;'; put 'put ''YXIgWD1ILmwrcmU7ZTIoSCksZTIoSCk7dmFyIHdlPUgucmVhZF9zaGlmdCg0LCJpIikseGU9SC5yZWFkX3NoaWZ0KDQsImkiKTtpZihILnJlYWRfc2hpZnQoNCksSC5yZWFkX3NoaWZ0KDEpLFghPUgubCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBCcnRQYW5lOiAiK1grIiAhPSAiK0gubCk7cmV0''@;'; put 'put ''dXJuW1EwKHtyOndlLGM6eGV9KV19fSwxNTI6e246IkJydFNlbCIsZjpmdW5jdGlvbiBPeChILHJlKXtyZXR1cm4gSC5yZWFkX3NoaWZ0KDQpLHtjZWxsOlEwKHtyOkgucmVhZF9zaGlmdCg0KSxjOkgucmVhZF9zaGlmdCg0KX0pfX19LDE1Mzp7bjoiQnJ0V2JQcm9wIixmOmZ1bmN0aW9uIFBo''@;'; put 'put ''KEgscmUpe3ZhciBYPXt9LHdlPUgucmVhZF9zaGlmdCg0KTtYLmRlZmF1bHRUaGVtZVZlcnNpb249SC5yZWFkX3NoaWZ0KDQpO3ZhciB4ZT1yZT44P25sKEgpOiIiO3JldHVybiB4ZS5sZW5ndGg+MCYmKFguQ29kZU5hbWU9eGUpLFguYXV0b0NvbXByZXNzUGljdHVyZXM9ISEoNjU1MzYmd2Up''@;'; put 'put ''LFguYmFja3VwRmlsZT0hISg2NCZ3ZSksWC5jaGVja0NvbXBhdGliaWxpdHk9ISEoNDA5NiZ3ZSksWC5kYXRlMTkwND0hISgxJndlKSxYLmZpbHRlclByaXZhY3k9ISEoOCZ3ZSksWC5oaWRlUGl2b3RGaWVsZExpc3Q9ISEoMTAyNCZ3ZSksWC5wcm9tcHRlZFNvbHV0aW9ucz0hISgxNiZ3ZSks''@;'; put 'put ''WC5wdWJsaXNoSXRlbXM9ISEoMjA0OCZ3ZSksWC5yZWZyZXNoQWxsQ29ubmVjdGlvbnM9ISEoMjYyMTQ0JndlKSxYLnNhdmVFeHRlcm5hbExpbmtWYWx1ZXM9ISEoMTI4JndlKSxYLnNob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzPSEhKDQmd2UpLFguc2hvd0lua0Fubm90YXRpb249ISEoMzIm''@;'; put 'put ''d2UpLFguc2hvd09iamVjdHM9WyJhbGwiLCJwbGFjZWhvbGRlcnMiLCJub25lIl1bd2U+PjEzJjNdLFguc2hvd1Bpdm90Q2hhcnRGaWx0ZXI9ISEoMzI3Njgmd2UpLFgudXBkYXRlTGlua3M9WyJ1c2VyU2V0IiwibmV2ZXIiLCJhbHdheXMiXVt3ZT4+OCYzXSxYfX0sMTU0OntuOiJCcnRXYkZh''@;'; put 'put ''Y3RvaWQifSwxNTU6e246IkJydEZpbGVSZWNvdmVyIn0sMTU2OntuOiJCcnRCdW5kbGVTaCIsZjpmdW5jdGlvbiBVaShILHJlKXt2YXIgWD17fTtyZXR1cm4gWC5IaWRkZW49SC5yZWFkX3NoaWZ0KDQpLFguaVRhYklEPUgucmVhZF9zaGlmdCg0KSxYLnN0clJlbElEPVVnKEgscmUtOCksWC5u''@;'; put 'put ''YW1lPW5sKEgpLFh9fSwxNTc6e246IkJydENhbGNQcm9wIn0sMTU4OntuOiJCcnRCb29rVmlldyJ9LDE1OTp7bjoiQnJ0QmVnaW5Tc3QiLGY6ZnVuY3Rpb24gV1IoSCl7cmV0dXJuW0gucmVhZF9zaGlmdCg0KSxILnJlYWRfc2hpZnQoNCldfX0sMTYwOntuOiJCcnRFbmRTc3QifSwxNjE6e246''@;'; put 'put ''IkJydEJlZ2luQUZpbHRlciIsZjpiaH0sMTYyOntuOiJCcnRFbmRBRmlsdGVyIn0sMTYzOntuOiJCcnRCZWdpbkZpbHRlckNvbHVtbiJ9LDE2NDp7bjoiQnJ0RW5kRmlsdGVyQ29sdW1uIn0sMTY1OntuOiJCcnRCZWdpbkZpbHRlcnMifSwxNjY6e246IkJydEVuZEZpbHRlcnMifSwxNjc6e246''@;'; put 'put ''IkJydEZpbHRlciJ9LDE2ODp7bjoiQnJ0Q29sb3JGaWx0ZXIifSwxNjk6e246IkJydEljb25GaWx0ZXIifSwxNzA6e246IkJydFRvcDEwRmlsdGVyIn0sMTcxOntuOiJCcnREeW5hbWljRmlsdGVyIn0sMTcyOntuOiJCcnRCZWdpbkN1c3RvbUZpbHRlcnMifSwxNzM6e246IkJydEVuZEN1c3Rv''@;'; put 'put ''bUZpbHRlcnMifSwxNzQ6e246IkJydEN1c3RvbUZpbHRlciJ9LDE3NTp7bjoiQnJ0QUZpbHRlckRhdGVHcm91cEl0ZW0ifSwxNzY6e246IkJydE1lcmdlQ2VsbCIsZjpicn0sMTc3OntuOiJCcnRCZWdpbk1lcmdlQ2VsbHMifSwxNzg6e246IkJydEVuZE1lcmdlQ2VsbHMifSwxNzk6e246IkJy''@;'; put 'put ''dEJlZ2luUGl2b3RDYWNoZURlZiJ9LDE4MDp7bjoiQnJ0RW5kUGl2b3RDYWNoZURlZiJ9LDE4MTp7bjoiQnJ0QmVnaW5QQ0RGaWVsZHMifSwxODI6e246IkJydEVuZFBDREZpZWxkcyJ9LDE4Mzp7bjoiQnJ0QmVnaW5QQ0RGaWVsZCJ9LDE4NDp7bjoiQnJ0RW5kUENERmllbGQifSwxODU6e246''@;'; put 'put ''IkJydEJlZ2luUENEU291cmNlIn0sMTg2OntuOiJCcnRFbmRQQ0RTb3VyY2UifSwxODc6e246IkJydEJlZ2luUENEU1JhbmdlIn0sMTg4OntuOiJCcnRFbmRQQ0RTUmFuZ2UifSwxODk6e246IkJydEJlZ2luUENERkF0YmwifSwxOTA6e246IkJydEVuZFBDREZBdGJsIn0sMTkxOntuOiJCcnRC''@;'; put 'put ''ZWdpblBDRElSdW4ifSwxOTI6e246IkJydEVuZFBDRElSdW4ifSwxOTM6e246IkJydEJlZ2luUGl2b3RDYWNoZVJlY29yZHMifSwxOTQ6e246IkJydEVuZFBpdm90Q2FjaGVSZWNvcmRzIn0sMTk1OntuOiJCcnRCZWdpblBDREhpZXJhcmNoaWVzIn0sMTk2OntuOiJCcnRFbmRQQ0RIaWVyYXJj''@;'; put 'put ''aGllcyJ9LDE5Nzp7bjoiQnJ0QmVnaW5QQ0RIaWVyYXJjaHkifSwxOTg6e246IkJydEVuZFBDREhpZXJhcmNoeSJ9LDE5OTp7bjoiQnJ0QmVnaW5QQ0RIRmllbGRzVXNhZ2UifSwyMDA6e246IkJydEVuZFBDREhGaWVsZHNVc2FnZSJ9LDIwMTp7bjoiQnJ0QmVnaW5FeHRDb25uZWN0aW9uIn0s''@;'; put 'put ''MjAyOntuOiJCcnRFbmRFeHRDb25uZWN0aW9uIn0sMjAzOntuOiJCcnRCZWdpbkVDRGJQcm9wcyJ9LDIwNDp7bjoiQnJ0RW5kRUNEYlByb3BzIn0sMjA1OntuOiJCcnRCZWdpbkVDT2xhcFByb3BzIn0sMjA2OntuOiJCcnRFbmRFQ09sYXBQcm9wcyJ9LDIwNzp7bjoiQnJ0QmVnaW5QQ0RTQ29u''@;'; put 'put ''c29sIn0sMjA4OntuOiJCcnRFbmRQQ0RTQ29uc29sIn0sMjA5OntuOiJCcnRCZWdpblBDRFNDUGFnZXMifSwyMTA6e246IkJydEVuZFBDRFNDUGFnZXMifSwyMTE6e246IkJydEJlZ2luUENEU0NQYWdlIn0sMjEyOntuOiJCcnRFbmRQQ0RTQ1BhZ2UifSwyMTM6e246IkJydEJlZ2luUENEU0NQ''@;'; put 'put ''SXRlbSJ9LDIxNDp7bjoiQnJ0RW5kUENEU0NQSXRlbSJ9LDIxNTp7bjoiQnJ0QmVnaW5QQ0RTQ1NldHMifSwyMTY6e246IkJydEVuZFBDRFNDU2V0cyJ9LDIxNzp7bjoiQnJ0QmVnaW5QQ0RTQ1NldCJ9LDIxODp7bjoiQnJ0RW5kUENEU0NTZXQifSwyMTk6e246IkJydEJlZ2luUENERkdyb3Vw''@;'; put 'put ''In0sMjIwOntuOiJCcnRFbmRQQ0RGR3JvdXAifSwyMjE6e246IkJydEJlZ2luUENERkdJdGVtcyJ9LDIyMjp7bjoiQnJ0RW5kUENERkdJdGVtcyJ9LDIyMzp7bjoiQnJ0QmVnaW5QQ0RGR1JhbmdlIn0sMjI0OntuOiJCcnRFbmRQQ0RGR1JhbmdlIn0sMjI1OntuOiJCcnRCZWdpblBDREZHRGlz''@;'; put 'put ''Y3JldGUifSwyMjY6e246IkJydEVuZFBDREZHRGlzY3JldGUifSwyMjc6e246IkJydEJlZ2luUENEU0RUdXBsZUNhY2hlIn0sMjI4OntuOiJCcnRFbmRQQ0RTRFR1cGxlQ2FjaGUifSwyMjk6e246IkJydEJlZ2luUENEU0RUQ0VudHJpZXMifSwyMzA6e246IkJydEVuZFBDRFNEVENFbnRyaWVz''@;'; put 'put ''In0sMjMxOntuOiJCcnRCZWdpblBDRFNEVENFTWVtYmVycyJ9LDIzMjp7bjoiQnJ0RW5kUENEU0RUQ0VNZW1iZXJzIn0sMjMzOntuOiJCcnRCZWdpblBDRFNEVENFTWVtYmVyIn0sMjM0OntuOiJCcnRFbmRQQ0RTRFRDRU1lbWJlciJ9LDIzNTp7bjoiQnJ0QmVnaW5QQ0RTRFRDUXVlcmllcyJ9''@;'; put 'put ''LDIzNjp7bjoiQnJ0RW5kUENEU0RUQ1F1ZXJpZXMifSwyMzc6e246IkJydEJlZ2luUENEU0RUQ1F1ZXJ5In0sMjM4OntuOiJCcnRFbmRQQ0RTRFRDUXVlcnkifSwyMzk6e246IkJydEJlZ2luUENEU0RUQ1NldHMifSwyNDA6e246IkJydEVuZFBDRFNEVENTZXRzIn0sMjQxOntuOiJCcnRCZWdp''@;'; put 'put ''blBDRFNEVENTZXQifSwyNDI6e246IkJydEVuZFBDRFNEVENTZXQifSwyNDM6e246IkJydEJlZ2luUENEQ2FsY0l0ZW1zIn0sMjQ0OntuOiJCcnRFbmRQQ0RDYWxjSXRlbXMifSwyNDU6e246IkJydEJlZ2luUENEQ2FsY0l0ZW0ifSwyNDY6e246IkJydEVuZFBDRENhbGNJdGVtIn0sMjQ3Ontu''@;'; put 'put ''OiJCcnRCZWdpblBSdWxlIn0sMjQ4OntuOiJCcnRFbmRQUnVsZSJ9LDI0OTp7bjoiQnJ0QmVnaW5QUkZpbHRlcnMifSwyNTA6e246IkJydEVuZFBSRmlsdGVycyJ9LDI1MTp7bjoiQnJ0QmVnaW5QUkZpbHRlciJ9LDI1Mjp7bjoiQnJ0RW5kUFJGaWx0ZXIifSwyNTM6e246IkJydEJlZ2luUE5h''@;'; put 'put ''bWVzIn0sMjU0OntuOiJCcnRFbmRQTmFtZXMifSwyNTU6e246IkJydEJlZ2luUE5hbWUifSwyNTY6e246IkJydEVuZFBOYW1lIn0sMjU3OntuOiJCcnRCZWdpblBOUGFpcnMifSwyNTg6e246IkJydEVuZFBOUGFpcnMifSwyNTk6e246IkJydEJlZ2luUE5QYWlyIn0sMjYwOntuOiJCcnRFbmRQ''@;'; put 'put ''TlBhaXIifSwyNjE6e246IkJydEJlZ2luRUNXZWJQcm9wcyJ9LDI2Mjp7bjoiQnJ0RW5kRUNXZWJQcm9wcyJ9LDI2Mzp7bjoiQnJ0QmVnaW5FY1dwVGFibGVzIn0sMjY0OntuOiJCcnRFbmRFQ1dQVGFibGVzIn0sMjY1OntuOiJCcnRCZWdpbkVDUGFyYW1zIn0sMjY2OntuOiJCcnRFbmRFQ1Bh''@;'; put 'put ''cmFtcyJ9LDI2Nzp7bjoiQnJ0QmVnaW5FQ1BhcmFtIn0sMjY4OntuOiJCcnRFbmRFQ1BhcmFtIn0sMjY5OntuOiJCcnRCZWdpblBDREtQSXMifSwyNzA6e246IkJydEVuZFBDREtQSXMifSwyNzE6e246IkJydEJlZ2luUENES1BJIn0sMjcyOntuOiJCcnRFbmRQQ0RLUEkifSwyNzM6e246IkJy''@;'; put 'put ''dEJlZ2luRGltcyJ9LDI3NDp7bjoiQnJ0RW5kRGltcyJ9LDI3NTp7bjoiQnJ0QmVnaW5EaW0ifSwyNzY6e246IkJydEVuZERpbSJ9LDI3Nzp7bjoiQnJ0SW5kZXhQYXJ0RW5kIn0sMjc4OntuOiJCcnRCZWdpblN0eWxlU2hlZXQifSwyNzk6e246IkJydEVuZFN0eWxlU2hlZXQifSwyODA6e246''@;'; put 'put ''IkJydEJlZ2luU1hWaWV3In0sMjgxOntuOiJCcnRFbmRTWFZJIn0sMjgyOntuOiJCcnRCZWdpblNYVkkifSwyODM6e246IkJydEJlZ2luU1hWSXMifSwyODQ6e246IkJydEVuZFNYVklzIn0sMjg1OntuOiJCcnRCZWdpblNYVkQifSwyODY6e246IkJydEVuZFNYVkQifSwyODc6e246IkJydEJl''@;'; put 'put ''Z2luU1hWRHMifSwyODg6e246IkJydEVuZFNYVkRzIn0sMjg5OntuOiJCcnRCZWdpblNYUEkifSwyOTA6e246IkJydEVuZFNYUEkifSwyOTE6e246IkJydEJlZ2luU1hQSXMifSwyOTI6e246IkJydEVuZFNYUElzIn0sMjkzOntuOiJCcnRCZWdpblNYREkifSwyOTQ6e246IkJydEVuZFNYREki''@;'; put 'put ''fSwyOTU6e246IkJydEJlZ2luU1hESXMifSwyOTY6e246IkJydEVuZFNYRElzIn0sMjk3OntuOiJCcnRCZWdpblNYTEkifSwyOTg6e246IkJydEVuZFNYTEkifSwyOTk6e246IkJydEJlZ2luU1hMSVJ3cyJ9LDMwMDp7bjoiQnJ0RW5kU1hMSVJ3cyJ9LDMwMTp7bjoiQnJ0QmVnaW5TWExJQ29s''@;'; put 'put ''cyJ9LDMwMjp7bjoiQnJ0RW5kU1hMSUNvbHMifSwzMDM6e246IkJydEJlZ2luU1hGb3JtYXQifSwzMDQ6e246IkJydEVuZFNYRm9ybWF0In0sMzA1OntuOiJCcnRCZWdpblNYRm9ybWF0cyJ9LDMwNjp7bjoiQnJ0RW5kU3hGb3JtYXRzIn0sMzA3OntuOiJCcnRCZWdpblN4U2VsZWN0In0sMzA4''@;'; put 'put ''OntuOiJCcnRFbmRTeFNlbGVjdCJ9LDMwOTp7bjoiQnJ0QmVnaW5JU1hWRFJ3cyJ9LDMxMDp7bjoiQnJ0RW5kSVNYVkRSd3MifSwzMTE6e246IkJydEJlZ2luSVNYVkRDb2xzIn0sMzEyOntuOiJCcnRFbmRJU1hWRENvbHMifSwzMTM6e246IkJydEVuZFNYTG9jYXRpb24ifSwzMTQ6e246IkJy''@;'; put 'put ''dEJlZ2luU1hMb2NhdGlvbiJ9LDMxNTp7bjoiQnJ0RW5kU1hWaWV3In0sMzE2OntuOiJCcnRCZWdpblNYVEhzIn0sMzE3OntuOiJCcnRFbmRTWFRIcyJ9LDMxODp7bjoiQnJ0QmVnaW5TWFRIIn0sMzE5OntuOiJCcnRFbmRTWFRIIn0sMzIwOntuOiJCcnRCZWdpbklTWFRIUndzIn0sMzIxOntu''@;'; put 'put ''OiJCcnRFbmRJU1hUSFJ3cyJ9LDMyMjp7bjoiQnJ0QmVnaW5JU1hUSENvbHMifSwzMjM6e246IkJydEVuZElTWFRIQ29scyJ9LDMyNDp7bjoiQnJ0QmVnaW5TWFRETVBTIn0sMzI1OntuOiJCcnRFbmRTWFRETVBzIn0sMzI2OntuOiJCcnRCZWdpblNYVERNUCJ9LDMyNzp7bjoiQnJ0RW5kU1hU''@;'; put 'put ''RE1QIn0sMzI4OntuOiJCcnRCZWdpblNYVEhJdGVtcyJ9LDMyOTp7bjoiQnJ0RW5kU1hUSEl0ZW1zIn0sMzMwOntuOiJCcnRCZWdpblNYVEhJdGVtIn0sMzMxOntuOiJCcnRFbmRTWFRISXRlbSJ9LDMzMjp7bjoiQnJ0QmVnaW5NZXRhZGF0YSJ9LDMzMzp7bjoiQnJ0RW5kTWV0YWRhdGEifSwz''@;'; put 'put ''MzQ6e246IkJydEJlZ2luRXNtZHRpbmZvIn0sMzM1OntuOiJCcnRNZHRpbmZvIn0sMzM2OntuOiJCcnRFbmRFc21kdGluZm8ifSwzMzc6e246IkJydEJlZ2luRXNtZGIifSwzMzg6e246IkJydEVuZEVzbWRiIn0sMzM5OntuOiJCcnRCZWdpbkVzZm1kIn0sMzQwOntuOiJCcnRFbmRFc2ZtZCJ9''@;'; put 'put ''LDM0MTp7bjoiQnJ0QmVnaW5TaW5nbGVDZWxscyJ9LDM0Mjp7bjoiQnJ0RW5kU2luZ2xlQ2VsbHMifSwzNDM6e246IkJydEJlZ2luTGlzdCJ9LDM0NDp7bjoiQnJ0RW5kTGlzdCJ9LDM0NTp7bjoiQnJ0QmVnaW5MaXN0Q29scyJ9LDM0Njp7bjoiQnJ0RW5kTGlzdENvbHMifSwzNDc6e246IkJy''@;'; put 'put ''dEJlZ2luTGlzdENvbCJ9LDM0ODp7bjoiQnJ0RW5kTGlzdENvbCJ9LDM0OTp7bjoiQnJ0QmVnaW5MaXN0WG1sQ1ByIn0sMzUwOntuOiJCcnRFbmRMaXN0WG1sQ1ByIn0sMzUxOntuOiJCcnRMaXN0Q0NGbWxhIn0sMzUyOntuOiJCcnRMaXN0VHJGbWxhIn0sMzUzOntuOiJCcnRCZWdpbkV4dGVy''@;'; put 'put ''bmFscyJ9LDM1NDp7bjoiQnJ0RW5kRXh0ZXJuYWxzIn0sMzU1OntuOiJCcnRTdXBCb29rU3JjIixmOlVnfSwzNTc6e246IkJydFN1cFNlbGYifSwzNTg6e246IkJydFN1cFNhbWUifSwzNTk6e246IkJydFN1cFRhYnMifSwzNjA6e246IkJydEJlZ2luU3VwQm9vayJ9LDM2MTp7bjoiQnJ0UGxh''@;'; put 'put ''Y2Vob2xkZXJOYW1lIn0sMzYyOntuOiJCcnRFeHRlcm5TaGVldCIsZjpiYn0sMzYzOntuOiJCcnRFeHRlcm5UYWJsZVN0YXJ0In0sMzY0OntuOiJCcnRFeHRlcm5UYWJsZUVuZCJ9LDM2Njp7bjoiQnJ0RXh0ZXJuUm93SGRyIn0sMzY3OntuOiJCcnRFeHRlcm5DZWxsQmxhbmsifSwzNjg6e246''@;'; put 'put ''IkJydEV4dGVybkNlbGxSZWFsIn0sMzY5OntuOiJCcnRFeHRlcm5DZWxsQm9vbCJ9LDM3MDp7bjoiQnJ0RXh0ZXJuQ2VsbEVycm9yIn0sMzcxOntuOiJCcnRFeHRlcm5DZWxsU3RyaW5nIn0sMzcyOntuOiJCcnRCZWdpbkVzbWR4In0sMzczOntuOiJCcnRFbmRFc21keCJ9LDM3NDp7bjoiQnJ0''@;'; put 'put ''QmVnaW5NZHhTZXQifSwzNzU6e246IkJydEVuZE1keFNldCJ9LDM3Njp7bjoiQnJ0QmVnaW5NZHhNYnJQcm9wIn0sMzc3OntuOiJCcnRFbmRNZHhNYnJQcm9wIn0sMzc4OntuOiJCcnRCZWdpbk1keEtQSSJ9LDM3OTp7bjoiQnJ0RW5kTWR4S1BJIn0sMzgwOntuOiJCcnRCZWdpbkVzc3RyIn0s''@;'; put 'put ''MzgxOntuOiJCcnRFbmRFc3N0ciJ9LDM4Mjp7bjoiQnJ0QmVnaW5QUkZJdGVtIn0sMzgzOntuOiJCcnRFbmRQUkZJdGVtIn0sMzg0OntuOiJCcnRCZWdpblBpdm90Q2FjaGVJRHMifSwzODU6e246IkJydEVuZFBpdm90Q2FjaGVJRHMifSwzODY6e246IkJydEJlZ2luUGl2b3RDYWNoZUlEIn0s''@;'; put 'put ''Mzg3OntuOiJCcnRFbmRQaXZvdENhY2hlSUQifSwzODg6e246IkJydEJlZ2luSVNYVklzIn0sMzg5OntuOiJCcnRFbmRJU1hWSXMifSwzOTA6e246IkJydEJlZ2luQ29sSW5mb3MifSwzOTE6e246IkJydEVuZENvbEluZm9zIn0sMzkyOntuOiJCcnRCZWdpblJ3QnJrIn0sMzkzOntuOiJCcnRF''@;'; put 'put ''bmRSd0JyayJ9LDM5NDp7bjoiQnJ0QmVnaW5Db2xCcmsifSwzOTU6e246IkJydEVuZENvbEJyayJ9LDM5Njp7bjoiQnJ0QnJrIn0sMzk3OntuOiJCcnRVc2VyQm9va1ZpZXcifSwzOTg6e246IkJydEluZm8ifSwzOTk6e246IkJydENVc3IifSw0MDA6e246IkJydFVzciJ9LDQwMTp7bjoiQnJ0''@;'; put 'put ''QmVnaW5Vc2VycyJ9LDQwMzp7bjoiQnJ0RU9GIn0sNDA0OntuOiJCcnRVQ1IifSw0MDU6e246IkJydFJSSW5zRGVsIn0sNDA2OntuOiJCcnRSUkVuZEluc0RlbCJ9LDQwNzp7bjoiQnJ0UlJNb3ZlIn0sNDA4OntuOiJCcnRSUkVuZE1vdmUifSw0MDk6e246IkJydFJSQ2hnQ2VsbCJ9LDQxMDp7''@;'; put 'put ''bjoiQnJ0UlJFbmRDaGdDZWxsIn0sNDExOntuOiJCcnRSUkhlYWRlciJ9LDQxMjp7bjoiQnJ0UlJVc2VyVmlldyJ9LDQxMzp7bjoiQnJ0UlJSZW5TaGVldCJ9LDQxNDp7bjoiQnJ0UlJJbnNlcnRTaCJ9LDQxNTp7bjoiQnJ0UlJEZWZOYW1lIn0sNDE2OntuOiJCcnRSUk5vdGUifSw0MTc6e246''@;'; put 'put ''IkJydFJSQ29uZmxpY3QifSw0MTg6e246IkJydFJSVFFTSUYifSw0MTk6e246IkJydFJSRm9ybWF0In0sNDIwOntuOiJCcnRSUkVuZEZvcm1hdCJ9LDQyMTp7bjoiQnJ0UlJBdXRvRm10In0sNDIyOntuOiJCcnRCZWdpblVzZXJTaFZpZXdzIn0sNDIzOntuOiJCcnRCZWdpblVzZXJTaFZpZXci''@;'; put 'put ''fSw0MjQ6e246IkJydEVuZFVzZXJTaFZpZXcifSw0MjU6e246IkJydEVuZFVzZXJTaFZpZXdzIn0sNDI2OntuOiJCcnRBcnJGbWxhIixmOmZ1bmN0aW9uIFpuKEgscmUsWCl7dmFyIHdlPUgubCtyZSx4ZT1wOShIKSxGZT1ILnJlYWRfc2hpZnQoMSksWmU9W3hlXTtpZihaZVsyXT1GZSxYLmNl''@;'; put 'put ''bGxGb3JtdWxhKXt2YXIgVmU9RkcoSCx3ZS1ILmwsWCk7WmVbMV09VmV9ZWxzZSBILmw9d2U7cmV0dXJuIFplfX0sNDI3OntuOiJCcnRTaHJGbWxhIixmOmZ1bmN0aW9uIFpfKEgscmUsWCl7dmFyIHdlPUgubCtyZSxGZT1bYmgoSCwxNildO2lmKFguY2VsbEZvcm11bGEpe3ZhciBaZT1qNChI''@;'; put 'put ''LHdlLUgubCxYKTtGZVsxXT1aZSxILmw9d2V9ZWxzZSBILmw9d2U7cmV0dXJuIEZlfX0sNDI4OntuOiJCcnRUYWJsZSJ9LDQyOTp7bjoiQnJ0QmVnaW5FeHRDb25uZWN0aW9ucyJ9LDQzMDp7bjoiQnJ0RW5kRXh0Q29ubmVjdGlvbnMifSw0MzE6e246IkJydEJlZ2luUENEQ2FsY01lbXMifSw0''@;'; put 'put ''MzI6e246IkJydEVuZFBDRENhbGNNZW1zIn0sNDMzOntuOiJCcnRCZWdpblBDRENhbGNNZW0ifSw0MzQ6e246IkJydEVuZFBDRENhbGNNZW0ifSw0MzU6e246IkJydEJlZ2luUENESEdMZXZlbHMifSw0MzY6e246IkJydEVuZFBDREhHTGV2ZWxzIn0sNDM3OntuOiJCcnRCZWdpblBDREhHTGV2''@;'; put 'put ''ZWwifSw0Mzg6e246IkJydEVuZFBDREhHTGV2ZWwifSw0Mzk6e246IkJydEJlZ2luUENESEdMR3JvdXBzIn0sNDQwOntuOiJCcnRFbmRQQ0RIR0xHcm91cHMifSw0NDE6e246IkJydEJlZ2luUENESEdMR3JvdXAifSw0NDI6e246IkJydEVuZFBDREhHTEdyb3VwIn0sNDQzOntuOiJCcnRCZWdp''@;'; put 'put ''blBDREhHTEdNZW1iZXJzIn0sNDQ0OntuOiJCcnRFbmRQQ0RIR0xHTWVtYmVycyJ9LDQ0NTp7bjoiQnJ0QmVnaW5QQ0RIR0xHTWVtYmVyIn0sNDQ2OntuOiJCcnRFbmRQQ0RIR0xHTWVtYmVyIn0sNDQ3OntuOiJCcnRCZWdpblFTSSJ9LDQ0ODp7bjoiQnJ0RW5kUVNJIn0sNDQ5OntuOiJCcnRC''@;'; put 'put ''ZWdpblFTSVIifSw0NTA6e246IkJydEVuZFFTSVIifSw0NTE6e246IkJydEJlZ2luRGVsZXRlZE5hbWVzIn0sNDUyOntuOiJCcnRFbmREZWxldGVkTmFtZXMifSw0NTM6e246IkJydEJlZ2luRGVsZXRlZE5hbWUifSw0NTQ6e246IkJydEVuZERlbGV0ZWROYW1lIn0sNDU1OntuOiJCcnRCZWdp''@;'; put 'put ''blFTSUZzIn0sNDU2OntuOiJCcnRFbmRRU0lGcyJ9LDQ1Nzp7bjoiQnJ0QmVnaW5RU0lGIn0sNDU4OntuOiJCcnRFbmRRU0lGIn0sNDU5OntuOiJCcnRCZWdpbkF1dG9Tb3J0U2NvcGUifSw0NjA6e246IkJydEVuZEF1dG9Tb3J0U2NvcGUifSw0NjE6e246IkJydEJlZ2luQ29uZGl0aW9uYWxG''@;'; put 'put ''b3JtYXR0aW5nIn0sNDYyOntuOiJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmcifSw0NjM6e246IkJydEJlZ2luQ0ZSdWxlIn0sNDY0OntuOiJCcnRFbmRDRlJ1bGUifSw0NjU6e246IkJydEJlZ2luSWNvblNldCJ9LDQ2Njp7bjoiQnJ0RW5kSWNvblNldCJ9LDQ2Nzp7bjoiQnJ0QmVnaW5E''@;'; put 'put ''YXRhYmFyIn0sNDY4OntuOiJCcnRFbmREYXRhYmFyIn0sNDY5OntuOiJCcnRCZWdpbkNvbG9yU2NhbGUifSw0NzA6e246IkJydEVuZENvbG9yU2NhbGUifSw0NzE6e246IkJydENGVk8ifSw0NzI6e246IkJydEV4dGVyblZhbHVlTWV0YSJ9LDQ3Mzp7bjoiQnJ0QmVnaW5Db2xvclBhbGV0dGUi''@;'; put 'put ''fSw0NzQ6e246IkJydEVuZENvbG9yUGFsZXR0ZSJ9LDQ3NTp7bjoiQnJ0SW5kZXhlZENvbG9yIn0sNDc2OntuOiJCcnRNYXJnaW5zIixmOmZ1bmN0aW9uIFJ4KEgpe3ZhciByZT17fTtyZXR1cm4gel8uZm9yRWFjaChmdW5jdGlvbihYKXtyZVtYXT1lMihIKX0pLHJlfX0sNDc3OntuOiJCcnRQ''@;'; put 'put ''cmludE9wdGlvbnMifSw0Nzg6e246IkJydFBhZ2VTZXR1cCJ9LDQ3OTp7bjoiQnJ0QmVnaW5IZWFkZXJGb290ZXIifSw0ODA6e246IkJydEVuZEhlYWRlckZvb3RlciJ9LDQ4MTp7bjoiQnJ0QmVnaW5TWENydEZvcm1hdCJ9LDQ4Mjp7bjoiQnJ0RW5kU1hDcnRGb3JtYXQifSw0ODM6e246IkJy''@;'; put 'put ''dEJlZ2luU1hDcnRGb3JtYXRzIn0sNDg0OntuOiJCcnRFbmRTWENydEZvcm1hdHMifSw0ODU6e246IkJydFdzRm10SW5mbyIsZjpmdW5jdGlvbiBPaChIKXt2YXIgcmU9e30sWD17fSx3ZT17fSx4ZT1ILnJlYWRfc2hpZnQoNCksRmU9SC5yZWFkX3NoaWZ0KDIpO3dlLndjaD14ZTw9NjU1MzY/''@;'; put 'put ''eGUvMjU2OkZlO3ZhciBaZT1ILnJlYWRfc2hpZnQoMik7WC5ocHQ9WmUvMjA7dmFyIFZlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gMiZWZSYmKFguaGlkZGVuPSEwKSw0JlZlJiYocmUudG9wdGhpY2s9ITApLDgmVmUmJihyZS5ib3R0aGljaz0hMCkscmUucm93b3V0bGluZT1ILnJlYWRfc2hp''@;'; put 'put ''ZnQoMSkscmUuY29sb3V0bGluZT1ILnJlYWRfc2hpZnQoMSksUmIoWCkscmUucm93PVgsYmMod2UpLHJlLmNvbD13ZSxyZX19LDQ4Njp7bjoiQnJ0QmVnaW5NZ3MifSw0ODc6e246IkJydEVuZE1HcyJ9LDQ4ODp7bjoiQnJ0QmVnaW5NR01hcHMifSw0ODk6e246IkJydEVuZE1HTWFwcyJ9LDQ5''@;'; put 'put ''MDp7bjoiQnJ0QmVnaW5NRyJ9LDQ5MTp7bjoiQnJ0RW5kTUcifSw0OTI6e246IkJydEJlZ2luTWFwIn0sNDkzOntuOiJCcnRFbmRNYXAifSw0OTQ6e246IkJydEhMaW5rIixmOmZ1bmN0aW9uIE8wKEgscmUpe3ZhciBYPUgubCtyZSx3ZT1iaChILDE2KSx4ZT13aChIKSxGZT1ubChIKSxaZT1u''@;'; put 'put ''bChIKSxWZT1ubChIKTtILmw9WDt2YXIgVWU9e3JmeDp3ZSxyZWxJZDp4ZSxsb2M6RmUsZGlzcGxheTpWZX07cmV0dXJuIFplJiYoVWUuVG9vbHRpcD1aZSksVWV9fSw0OTU6e246IkJydEJlZ2luRENvbiJ9LDQ5Njp7bjoiQnJ0RW5kRENvbiJ9LDQ5Nzp7bjoiQnJ0QmVnaW5EUmVmcyJ9LDQ5''@;'; put 'put ''ODp7bjoiQnJ0RW5kRFJlZnMifSw0OTk6e246IkJydERSZWYifSw1MDA6e246IkJydEJlZ2luU2Nlbk1hbiJ9LDUwMTp7bjoiQnJ0RW5kU2Nlbk1hbiJ9LDUwMjp7bjoiQnJ0QmVnaW5TY3QifSw1MDM6e246IkJydEVuZFNjdCJ9LDUwNDp7bjoiQnJ0U2xjIn0sNTA1OntuOiJCcnRCZWdpbkRY''@;'; put 'put ''RnMifSw1MDY6e246IkJydEVuZERYRnMifSw1MDc6e246IkJydERYRiJ9LDUwODp7bjoiQnJ0QmVnaW5UYWJsZVN0eWxlcyJ9LDUwOTp7bjoiQnJ0RW5kVGFibGVTdHlsZXMifSw1MTA6e246IkJydEJlZ2luVGFibGVTdHlsZSJ9LDUxMTp7bjoiQnJ0RW5kVGFibGVTdHlsZSJ9LDUxMjp7bjoi''@;'; put 'put ''QnJ0VGFibGVTdHlsZUVsZW1lbnQifSw1MTM6e246IkJydFRhYmxlU3R5bGVDbGllbnQifSw1MTQ6e246IkJydEJlZ2luVm9sRGVwcyJ9LDUxNTp7bjoiQnJ0RW5kVm9sRGVwcyJ9LDUxNjp7bjoiQnJ0QmVnaW5Wb2xUeXBlIn0sNTE3OntuOiJCcnRFbmRWb2xUeXBlIn0sNTE4OntuOiJCcnRC''@;'; put 'put ''ZWdpblZvbE1haW4ifSw1MTk6e246IkJydEVuZFZvbE1haW4ifSw1MjA6e246IkJydEJlZ2luVm9sVG9waWMifSw1MjE6e246IkJydEVuZFZvbFRvcGljIn0sNTIyOntuOiJCcnRWb2xTdWJ0b3BpYyJ9LDUyMzp7bjoiQnJ0Vm9sUmVmIn0sNTI0OntuOiJCcnRWb2xOdW0ifSw1MjU6e246IkJy''@;'; put 'put ''dFZvbEVyciJ9LDUyNjp7bjoiQnJ0Vm9sU3RyIn0sNTI3OntuOiJCcnRWb2xCb29sIn0sNTI4OntuOiJCcnRCZWdpbkNhbGNDaGFpbiQifSw1Mjk6e246IkJydEVuZENhbGNDaGFpbiQifSw1MzA6e246IkJydEJlZ2luU29ydFN0YXRlIn0sNTMxOntuOiJCcnRFbmRTb3J0U3RhdGUifSw1MzI6''@;'; put 'put ''e246IkJydEJlZ2luU29ydENvbmQifSw1MzM6e246IkJydEVuZFNvcnRDb25kIn0sNTM0OntuOiJCcnRCb29rUHJvdGVjdGlvbiJ9LDUzNTp7bjoiQnJ0U2hlZXRQcm90ZWN0aW9uIn0sNTM2OntuOiJCcnRSYW5nZVByb3RlY3Rpb24ifSw1Mzc6e246IkJydFBob25ldGljSW5mbyJ9LDUzODp7''@;'; put 'put ''bjoiQnJ0QmVnaW5FQ1R4dFdpeiJ9LDUzOTp7bjoiQnJ0RW5kRUNUeHRXaXoifSw1NDA6e246IkJydEJlZ2luRUNUV0ZsZEluZm9Mc3QifSw1NDE6e246IkJydEVuZEVDVFdGbGRJbmZvTHN0In0sNTQyOntuOiJCcnRCZWdpbkVDVHdGbGRJbmZvIn0sNTQ4OntuOiJCcnRGaWxlU2hhcmluZyJ9''@;'; put 'put ''LDU0OTp7bjoiQnJ0T2xlU2l6ZSJ9LDU1MDp7bjoiQnJ0RHJhd2luZyIsZjpVZ30sNTUxOntuOiJCcnRMZWdhY3lEcmF3aW5nIn0sNTUyOntuOiJCcnRMZWdhY3lEcmF3aW5nSEYifSw1NTM6e246IkJydFdlYk9wdCJ9LDU1NDp7bjoiQnJ0QmVnaW5XZWJQdWJJdGVtcyJ9LDU1NTp7bjoiQnJ0''@;'; put 'put ''RW5kV2ViUHViSXRlbXMifSw1NTY6e246IkJydEJlZ2luV2ViUHViSXRlbSJ9LDU1Nzp7bjoiQnJ0RW5kV2ViUHViSXRlbSJ9LDU1ODp7bjoiQnJ0QmVnaW5TWENvbmRGbXQifSw1NTk6e246IkJydEVuZFNYQ29uZEZtdCJ9LDU2MDp7bjoiQnJ0QmVnaW5TWENvbmRGbXRzIn0sNTYxOntuOiJC''@;'; put 'put ''cnRFbmRTWENvbmRGbXRzIn0sNTYyOntuOiJCcnRCa0hpbSJ9LDU2NDp7bjoiQnJ0Q29sb3IifSw1NjU6e246IkJydEJlZ2luSW5kZXhlZENvbG9ycyJ9LDU2Njp7bjoiQnJ0RW5kSW5kZXhlZENvbG9ycyJ9LDU2OTp7bjoiQnJ0QmVnaW5NUlVDb2xvcnMifSw1NzA6e246IkJydEVuZE1SVUNv''@;'; put 'put ''bG9ycyJ9LDU3Mjp7bjoiQnJ0TVJVQ29sb3IifSw1NzM6e246IkJydEJlZ2luRFZhbHMifSw1NzQ6e246IkJydEVuZERWYWxzIn0sNTc3OntuOiJCcnRTdXBOYW1lU3RhcnQifSw1Nzg6e246IkJydFN1cE5hbWVWYWx1ZVN0YXJ0In0sNTc5OntuOiJCcnRTdXBOYW1lVmFsdWVFbmQifSw1ODA6''@;'; put 'put ''e246IkJydFN1cE5hbWVOdW0ifSw1ODE6e246IkJydFN1cE5hbWVFcnIifSw1ODI6e246IkJydFN1cE5hbWVTdCJ9LDU4Mzp7bjoiQnJ0U3VwTmFtZU5pbCJ9LDU4NDp7bjoiQnJ0U3VwTmFtZUJvb2wifSw1ODU6e246IkJydFN1cE5hbWVGbWxhIn0sNTg2OntuOiJCcnRTdXBOYW1lQml0cyJ9''@;'; put 'put ''LDU4Nzp7bjoiQnJ0U3VwTmFtZUVuZCJ9LDU4ODp7bjoiQnJ0RW5kU3VwQm9vayJ9LDU4OTp7bjoiQnJ0Q2VsbFNtYXJ0VGFnUHJvcGVydHkifSw1OTA6e246IkJydEJlZ2luQ2VsbFNtYXJ0VGFnIn0sNTkxOntuOiJCcnRFbmRDZWxsU21hcnRUYWcifSw1OTI6e246IkJydEJlZ2luQ2VsbFNt''@;'; put 'put ''YXJ0VGFncyJ9LDU5Mzp7bjoiQnJ0RW5kQ2VsbFNtYXJ0VGFncyJ9LDU5NDp7bjoiQnJ0QmVnaW5TbWFydFRhZ3MifSw1OTU6e246IkJydEVuZFNtYXJ0VGFncyJ9LDU5Njp7bjoiQnJ0U21hcnRUYWdUeXBlIn0sNTk3OntuOiJCcnRCZWdpblNtYXJ0VGFnVHlwZXMifSw1OTg6e246IkJydEVu''@;'; put 'put ''ZFNtYXJ0VGFnVHlwZXMifSw1OTk6e246IkJydEJlZ2luU1hGaWx0ZXJzIn0sNjAwOntuOiJCcnRFbmRTWEZpbHRlcnMifSw2MDE6e246IkJydEJlZ2luU1hGSUxURVIifSw2MDI6e246IkJydEVuZFNYRmlsdGVyIn0sNjAzOntuOiJCcnRCZWdpbkZpbGxzIn0sNjA0OntuOiJCcnRFbmRGaWxs''@;'; put 'put ''cyJ9LDYwNTp7bjoiQnJ0QmVnaW5DZWxsV2F0Y2hlcyJ9LDYwNjp7bjoiQnJ0RW5kQ2VsbFdhdGNoZXMifSw2MDc6e246IkJydENlbGxXYXRjaCJ9LDYwODp7bjoiQnJ0QmVnaW5DUkVycnMifSw2MDk6e246IkJydEVuZENSRXJycyJ9LDYxMDp7bjoiQnJ0Q3Jhc2hSZWNFcnIifSw2MTE6e246''@;'; put 'put ''IkJydEJlZ2luRm9udHMifSw2MTI6e246IkJydEVuZEZvbnRzIn0sNjEzOntuOiJCcnRCZWdpbkJvcmRlcnMifSw2MTQ6e246IkJydEVuZEJvcmRlcnMifSw2MTU6e246IkJydEJlZ2luRm10cyJ9LDYxNjp7bjoiQnJ0RW5kRm10cyJ9LDYxNzp7bjoiQnJ0QmVnaW5DZWxsWEZzIn0sNjE4Ontu''@;'; put 'put ''OiJCcnRFbmRDZWxsWEZzIn0sNjE5OntuOiJCcnRCZWdpblN0eWxlcyJ9LDYyMDp7bjoiQnJ0RW5kU3R5bGVzIn0sNjI1OntuOiJCcnRCaWdOYW1lIn0sNjI2OntuOiJCcnRCZWdpbkNlbGxTdHlsZVhGcyJ9LDYyNzp7bjoiQnJ0RW5kQ2VsbFN0eWxlWEZzIn0sNjI4OntuOiJCcnRCZWdpbkNv''@;'; put 'put ''bW1lbnRzIn0sNjI5OntuOiJCcnRFbmRDb21tZW50cyJ9LDYzMDp7bjoiQnJ0QmVnaW5Db21tZW50QXV0aG9ycyJ9LDYzMTp7bjoiQnJ0RW5kQ29tbWVudEF1dGhvcnMifSw2MzI6e246IkJydENvbW1lbnRBdXRob3IiLGY6RWh9LDYzMzp7bjoiQnJ0QmVnaW5Db21tZW50TGlzdCJ9LDYzNDp7''@;'; put 'put ''bjoiQnJ0RW5kQ29tbWVudExpc3QifSw2MzU6e246IkJydEJlZ2luQ29tbWVudCIsZjpmdW5jdGlvbiB4bShIKXt2YXIgcmU9e307cmUuaWF1dGhvcj1ILnJlYWRfc2hpZnQoNCk7dmFyIFg9YmgoSCwxNik7cmV0dXJuIHJlLnJmeD1YLnMscmUucmVmPVEwKFgucyksSC5sKz0xNixyZX19LDYz''@;'; put 'put ''Njp7bjoiQnJ0RW5kQ29tbWVudCJ9LDYzNzp7bjoiQnJ0Q29tbWVudFRleHQiLGY6WWd9LDYzODp7bjoiQnJ0QmVnaW5PbGVPYmplY3RzIn0sNjM5OntuOiJCcnRPbGVPYmplY3QifSw2NDA6e246IkJydEVuZE9sZU9iamVjdHMifSw2NDE6e246IkJydEJlZ2luU3hydWxlcyJ9LDY0Mjp7bjoi''@;'; put 'put ''QnJ0RW5kU3hSdWxlcyJ9LDY0Mzp7bjoiQnJ0QmVnaW5BY3RpdmVYQ29udHJvbHMifSw2NDQ6e246IkJydEFjdGl2ZVgifSw2NDU6e246IkJydEVuZEFjdGl2ZVhDb250cm9scyJ9LDY0Njp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnNTb3J0QnkifSw2NDg6e246IkJydEJlZ2luQ2VsbEln''@;'; put 'put ''bm9yZUVDcyJ9LDY0OTp7bjoiQnJ0Q2VsbElnbm9yZUVDIn0sNjUwOntuOiJCcnRFbmRDZWxsSWdub3JlRUNzIn0sNjUxOntuOiJCcnRDc1Byb3AiLGY6ZnVuY3Rpb24gSTMoSCxyZSl7cmV0dXJuIEgubCs9MTAse25hbWU6bmwoSCl9fX0sNjUyOntuOiJCcnRDc1BhZ2VTZXR1cCJ9LDY1Mzp7''@;'; put 'put ''bjoiQnJ0QmVnaW5Vc2VyQ3NWaWV3cyJ9LDY1NDp7bjoiQnJ0RW5kVXNlckNzVmlld3MifSw2NTU6e246IkJydEJlZ2luVXNlckNzVmlldyJ9LDY1Njp7bjoiQnJ0RW5kVXNlckNzVmlldyJ9LDY1Nzp7bjoiQnJ0QmVnaW5QY2RTRkNJRW50cmllcyJ9LDY1ODp7bjoiQnJ0RW5kUENEU0ZDSUVu''@;'; put 'put ''dHJpZXMifSw2NTk6e246IkJydFBDRFNGQ0lFbnRyeSJ9LDY2MDp7bjoiQnJ0QmVnaW5MaXN0UGFydHMifSw2NjE6e246IkJydExpc3RQYXJ0In0sNjYyOntuOiJCcnRFbmRMaXN0UGFydHMifSw2NjM6e246IkJydFNoZWV0Q2FsY1Byb3AifSw2NjQ6e246IkJydEJlZ2luRm5Hcm91cCJ9LDY2''@;'; put 'put ''NTp7bjoiQnJ0Rm5Hcm91cCJ9LDY2Njp7bjoiQnJ0RW5kRm5Hcm91cCJ9LDY2Nzp7bjoiQnJ0U3VwQWRkaW4ifSw2Njg6e246IkJydFNYVERNUE9yZGVyIn0sNjY5OntuOiJCcnRDc1Byb3RlY3Rpb24ifSw2NzE6e246IkJydEJlZ2luV3NTb3J0TWFwIn0sNjcyOntuOiJCcnRFbmRXc1NvcnRN''@;'; put 'put ''YXAifSw2NzM6e246IkJydEJlZ2luUlJTb3J0In0sNjc0OntuOiJCcnRFbmRSUlNvcnQifSw2NzU6e246IkJydFJSU29ydEl0ZW0ifSw2NzY6e246IkJydEZpbGVTaGFyaW5nSXNvIn0sNjc3OntuOiJCcnRCb29rUHJvdGVjdGlvbklzbyJ9LDY3ODp7bjoiQnJ0U2hlZXRQcm90ZWN0aW9uSXNv''@;'; put 'put ''In0sNjc5OntuOiJCcnRDc1Byb3RlY3Rpb25Jc28ifSw2ODA6e246IkJydFJhbmdlUHJvdGVjdGlvbklzbyJ9LDY4MTp7bjoiQnJ0RFZhbExpc3QifSwxMDI0OntuOiJCcnRSd0Rlc2NlbnQifSwxMDI1OntuOiJCcnRLbm93bkZvbnRzIn0sMTAyNjp7bjoiQnJ0QmVnaW5TWFR1cGxlU2V0In0s''@;'; put 'put ''MTAyNzp7bjoiQnJ0RW5kU1hUdXBsZVNldCJ9LDEwMjg6e246IkJydEJlZ2luU1hUdXBsZVNldEhlYWRlciJ9LDEwMjk6e246IkJydEVuZFNYVHVwbGVTZXRIZWFkZXIifSwxMDMwOntuOiJCcnRTWFR1cGxlU2V0SGVhZGVySXRlbSJ9LDEwMzE6e246IkJydEJlZ2luU1hUdXBsZVNldERhdGEi''@;'; put 'put ''fSwxMDMyOntuOiJCcnRFbmRTWFR1cGxlU2V0RGF0YSJ9LDEwMzM6e246IkJydEJlZ2luU1hUdXBsZVNldFJvdyJ9LDEwMzQ6e246IkJydEVuZFNYVHVwbGVTZXRSb3cifSwxMDM1OntuOiJCcnRTWFR1cGxlU2V0Um93SXRlbSJ9LDEwMzY6e246IkJydE5hbWVFeHQifSwxMDM3OntuOiJCcnRQ''@;'; put 'put ''Q0RIMTQifSwxMDM4OntuOiJCcnRCZWdpblBDRENhbGNNZW0xNCJ9LDEwMzk6e246IkJydEVuZFBDRENhbGNNZW0xNCJ9LDEwNDA6e246IkJydFNYVEgxNCJ9LDEwNDE6e246IkJydEJlZ2luU3BhcmtsaW5lR3JvdXAifSwxMDQyOntuOiJCcnRFbmRTcGFya2xpbmVHcm91cCJ9LDEwNDM6e246''@;'; put 'put ''IkJydFNwYXJrbGluZSJ9LDEwNDQ6e246IkJydFNYREkxNCJ9LDEwNDU6e246IkJydFdzRm10SW5mb0V4MTQifSwxMDQ2OntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZzE0In0sMTA0Nzp7bjoiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nMTQifSwxMDQ4OntuOiJCcnRCZWdp''@;'; put 'put ''bkNGUnVsZTE0In0sMTA0OTp7bjoiQnJ0RW5kQ0ZSdWxlMTQifSwxMDUwOntuOiJCcnRDRlZPMTQifSwxMDUxOntuOiJCcnRCZWdpbkRhdGFiYXIxNCJ9LDEwNTI6e246IkJydEJlZ2luSWNvblNldDE0In0sMTA1Mzp7bjoiQnJ0RFZhbDE0IixmOmZ1bmN0aW9uIEZ4KEgscmUsWCl7dmFyIHdl''@;'; put 'put ''PWZ1bmN0aW9uIHRyKEgscmUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdCg0KSx4ZT17fTtyZXR1cm4gMSZ3ZSYmKHhlLnJlZnM9ZnVuY3Rpb24gS3IoSCl7Zm9yKHZhciByZT1ILnJlYWRfc2hpZnQoNCksWD1bXTtyZS0tID4wOylYLnB1c2goUWkoSCkpO3JldHVybiBYfShIKSksMiZ3ZSYmKHhl''@;'; put 'put ''LnNxcmVmcz1mdW5jdGlvbiBzYShIKXtmb3IodmFyIHJlPUgucmVhZF9zaGlmdCg0KSxYPVtdO3JlLS0gPjA7KVgucHVzaChpbChIKSk7cmV0dXJuIFh9KEgpKSw0JndlJiYoeGUuZm9ybXVsYXM9ZnVuY3Rpb24gcnMoSCxyZSxYKXtmb3IodmFyIHdlPUgucmVhZF9zaGlmdCg0KSx4ZT1bXTt3''@;'; put 'put ''ZS0tID4wOyl4ZS5wdXNoKGVjKEgsMCxYKSk7cmV0dXJuIHhlfShILDAsWCkpLDgmd2UmJih4ZS5yZWxJRD1mdW5jdGlvbiBoOShIKXt2YXIgcmU9SC5yZWFkX3NoaWZ0KDIpO3JldHVybiAwPT09cmU/IiI6SC5yZWFkX3NoaWZ0KHJlLCJ1dGYxNmxlIil9KEgpKSx4ZX0oSCwwLFgpLHhlPUgu''@;'; put 'put ''cmVhZF9zaGlmdCg0KSxGZT13aChIKSxaZT13aChIKSxWZT13aChIKSxVZT13aChIKSxTdD0od2UuZm9ybXVsYXN8fFtdKVswXSxJdD0od2UuZm9ybXVsYXN8fFtdKVsxXSxQdD0xNSZ4ZSxRdD17dDpRNFtQdF0sc3FyZng6d2Uuc3FyZWZzWzBdLHM6W0ZlLFplLFZlLFVlXX07cmV0dXJuIFN0''@;'; put 'put ''JiYoUXQuZjE9U3QpLEl0JiYoUXQuZjI9SXQpLDA9PVB0fHwzPT1QdHx8Nz09UHR8fChRdC5vcD1UQVt4ZT4+MjAmMTVdKSxRdH19LDEwNTQ6e246IkJydEJlZ2luRFZhbHMxNCJ9LDEwNTU6e246IkJydENvbG9yMTQifSwxMDU2OntuOiJCcnRCZWdpblNwYXJrbGluZXMifSwxMDU3OntuOiJC''@;'; put 'put ''cnRFbmRTcGFya2xpbmVzIn0sMTA1ODp7bjoiQnJ0QmVnaW5TcGFya2xpbmVHcm91cHMifSwxMDU5OntuOiJCcnRFbmRTcGFya2xpbmVHcm91cHMifSwxMDYxOntuOiJCcnRTWFZEMTQifSwxMDYyOntuOiJCcnRCZWdpblNYVmlldzE0In0sMTA2Mzp7bjoiQnJ0RW5kU1hWaWV3MTQifSwxMDY0''@;'; put 'put ''OntuOiJCcnRCZWdpblNYVmlldzE2In0sMTA2NTp7bjoiQnJ0RW5kU1hWaWV3MTYifSwxMDY2OntuOiJCcnRCZWdpblBDRDE0In0sMTA2Nzp7bjoiQnJ0RW5kUENEMTQifSwxMDY4OntuOiJCcnRCZWdpbkV4dENvbm4xNCJ9LDEwNjk6e246IkJydEVuZEV4dENvbm4xNCJ9LDEwNzA6e246IkJy''@;'; put 'put ''dEJlZ2luU2xpY2VyQ2FjaGVJRHMifSwxMDcxOntuOiJCcnRFbmRTbGljZXJDYWNoZUlEcyJ9LDEwNzI6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVJRCJ9LDEwNzM6e246IkJydEVuZFNsaWNlckNhY2hlSUQifSwxMDc1OntuOiJCcnRCZWdpblNsaWNlckNhY2hlIn0sMTA3Njp7bjoiQnJ0RW5k''@;'; put 'put ''U2xpY2VyQ2FjaGUifSwxMDc3OntuOiJCcnRCZWdpblNsaWNlckNhY2hlRGVmIn0sMTA3ODp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVEZWYifSwxMDc5OntuOiJCcnRCZWdpblNsaWNlcnNFeCJ9LDEwODA6e246IkJydEVuZFNsaWNlcnNFeCJ9LDEwODE6e246IkJydEJlZ2luU2xpY2VyRXgifSwx''@;'; put 'put ''MDgyOntuOiJCcnRFbmRTbGljZXJFeCJ9LDEwODM6e246IkJydEJlZ2luU2xpY2VyIn0sMTA4NDp7bjoiQnJ0RW5kU2xpY2VyIn0sMTA4NTp7bjoiQnJ0U2xpY2VyQ2FjaGVQaXZvdFRhYmxlcyJ9LDEwODY6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVPbGFwSW1wbCJ9LDEwODc6e246IkJydEVu''@;'; put 'put ''ZFNsaWNlckNhY2hlT2xhcEltcGwifSwxMDg4OntuOiJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxzRGF0YSJ9LDEwODk6e246IkJydEVuZFNsaWNlckNhY2hlTGV2ZWxzRGF0YSJ9LDEwOTA6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVMZXZlbERhdGEifSwxMDkxOntuOiJCcnRFbmRTbGljZXJD''@;'; put 'put ''YWNoZUxldmVsRGF0YSJ9LDEwOTI6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVTaVJhbmdlcyJ9LDEwOTM6e246IkJydEVuZFNsaWNlckNhY2hlU2lSYW5nZXMifSwxMDk0OntuOiJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZSJ9LDEwOTU6e246IkJydEVuZFNsaWNlckNhY2hlU2lSYW5nZSJ9''@;'; put 'put ''LDEwOTY6e246IkJydFNsaWNlckNhY2hlT2xhcEl0ZW0ifSwxMDk3OntuOiJCcnRCZWdpblNsaWNlckNhY2hlU2VsZWN0aW9ucyJ9LDEwOTg6e246IkJydFNsaWNlckNhY2hlU2VsZWN0aW9uIn0sMTA5OTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVTZWxlY3Rpb25zIn0sMTEwMDp7bjoiQnJ0QmVn''@;'; put 'put ''aW5TbGljZXJDYWNoZU5hdGl2ZSJ9LDExMDE6e246IkJydEVuZFNsaWNlckNhY2hlTmF0aXZlIn0sMTEwMjp7bjoiQnJ0U2xpY2VyQ2FjaGVOYXRpdmVJdGVtIn0sMTEwMzp7bjoiQnJ0UmFuZ2VQcm90ZWN0aW9uMTQifSwxMTA0OntuOiJCcnRSYW5nZVByb3RlY3Rpb25Jc28xNCJ9LDExMDU6''@;'; put 'put ''e246IkJydENlbGxJZ25vcmVFQzE0In0sMTExMTp7bjoiQnJ0TGlzdDE0In0sMTExMjp7bjoiQnJ0Q0ZJY29uIn0sMTExMzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZXNQaXZvdENhY2hlSURzIn0sMTExNDp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEcyJ9LDExMTU6e246IkJy''@;'; put 'put ''dEJlZ2luU2xpY2VycyJ9LDExMTY6e246IkJydEVuZFNsaWNlcnMifSwxMTE3OntuOiJCcnRXYlByb3AxNCJ9LDExMTg6e246IkJydEJlZ2luU1hFZGl0In0sMTExOTp7bjoiQnJ0RW5kU1hFZGl0In0sMTEyMDp7bjoiQnJ0QmVnaW5TWEVkaXRzIn0sMTEyMTp7bjoiQnJ0RW5kU1hFZGl0cyJ9''@;'; put 'put ''LDExMjI6e246IkJydEJlZ2luU1hDaGFuZ2UifSwxMTIzOntuOiJCcnRFbmRTWENoYW5nZSJ9LDExMjQ6e246IkJydEJlZ2luU1hDaGFuZ2VzIn0sMTEyNTp7bjoiQnJ0RW5kU1hDaGFuZ2VzIn0sMTEyNjp7bjoiQnJ0U1hUdXBsZUl0ZW1zIn0sMTEyODp7bjoiQnJ0QmVnaW5TbGljZXJTdHls''@;'; put 'put ''ZSJ9LDExMjk6e246IkJydEVuZFNsaWNlclN0eWxlIn0sMTEzMDp7bjoiQnJ0U2xpY2VyU3R5bGVFbGVtZW50In0sMTEzMTp7bjoiQnJ0QmVnaW5TdHlsZVNoZWV0RXh0MTQifSwxMTMyOntuOiJCcnRFbmRTdHlsZVNoZWV0RXh0MTQifSwxMTMzOntuOiJCcnRCZWdpblNsaWNlckNhY2hlc1Bp''@;'; put 'put ''dm90Q2FjaGVJRCJ9LDExMzQ6e246IkJydEVuZFNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRCJ9LDExMzU6e246IkJydEJlZ2luQ29uZGl0aW9uYWxGb3JtYXR0aW5ncyJ9LDExMzY6e246IkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZ3MifSwxMTM3OntuOiJCcnRCZWdpblBDRENhbGNNZW1F''@;'; put 'put ''eHQifSwxMTM4OntuOiJCcnRFbmRQQ0RDYWxjTWVtRXh0In0sMTEzOTp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtc0V4dCJ9LDExNDA6e246IkJydEVuZFBDRENhbGNNZW1zRXh0In0sMTE0MTp7bjoiQnJ0UENERmllbGQxNCJ9LDExNDI6e246IkJydEJlZ2luU2xpY2VyU3R5bGVzIn0sMTE0Mzp7''@;'; put 'put ''bjoiQnJ0RW5kU2xpY2VyU3R5bGVzIn0sMTE0NDp7bjoiQnJ0QmVnaW5TbGljZXJTdHlsZUVsZW1lbnRzIn0sMTE0NTp7bjoiQnJ0RW5kU2xpY2VyU3R5bGVFbGVtZW50cyJ9LDExNDY6e246IkJydENGUnVsZUV4dCJ9LDExNDc6e246IkJydEJlZ2luU1hDb25kRm10MTQifSwxMTQ4OntuOiJC''@;'; put 'put ''cnRFbmRTWENvbmRGbXQxNCJ9LDExNDk6e246IkJydEJlZ2luU1hDb25kRm10czE0In0sMTE1MDp7bjoiQnJ0RW5kU1hDb25kRm10czE0In0sMTE1Mjp7bjoiQnJ0QmVnaW5Tb3J0Q29uZDE0In0sMTE1Mzp7bjoiQnJ0RW5kU29ydENvbmQxNCJ9LDExNTQ6e246IkJydEVuZERWYWxzMTQifSwx''@;'; put 'put ''MTU1OntuOiJCcnRFbmRJY29uU2V0MTQifSwxMTU2OntuOiJCcnRFbmREYXRhYmFyMTQifSwxMTU3OntuOiJCcnRCZWdpbkNvbG9yU2NhbGUxNCJ9LDExNTg6e246IkJydEVuZENvbG9yU2NhbGUxNCJ9LDExNTk6e246IkJydEJlZ2luU3hydWxlczE0In0sMTE2MDp7bjoiQnJ0RW5kU3hydWxl''@;'; put 'put ''czE0In0sMTE2MTp7bjoiQnJ0QmVnaW5QUnVsZTE0In0sMTE2Mjp7bjoiQnJ0RW5kUFJ1bGUxNCJ9LDExNjM6e246IkJydEJlZ2luUFJGaWx0ZXJzMTQifSwxMTY0OntuOiJCcnRFbmRQUkZpbHRlcnMxNCJ9LDExNjU6e246IkJydEJlZ2luUFJGaWx0ZXIxNCJ9LDExNjY6e246IkJydEVuZFBS''@;'; put 'put ''RmlsdGVyMTQifSwxMTY3OntuOiJCcnRCZWdpblBSRkl0ZW0xNCJ9LDExNjg6e246IkJydEVuZFBSRkl0ZW0xNCJ9LDExNjk6e246IkJydEJlZ2luQ2VsbElnbm9yZUVDczE0In0sMTE3MDp7bjoiQnJ0RW5kQ2VsbElnbm9yZUVDczE0In0sMTE3MTp7bjoiQnJ0RHhmMTQifSwxMTcyOntuOiJC''@;'; put 'put ''cnRCZWdpbkR4RjE0cyJ9LDExNzM6e246IkJydEVuZER4ZjE0cyJ9LDExNzc6e246IkJydEZpbHRlcjE0In0sMTE3ODp7bjoiQnJ0QmVnaW5DdXN0b21GaWx0ZXJzMTQifSwxMTgwOntuOiJCcnRDdXN0b21GaWx0ZXIxNCJ9LDExODE6e246IkJydEljb25GaWx0ZXIxNCJ9LDExODI6e246IkJy''@;'; put 'put ''dFBpdm90Q2FjaGVDb25uZWN0aW9uTmFtZSJ9LDIwNDg6e246IkJydEJlZ2luRGVjb3VwbGVkUGl2b3RDYWNoZUlEcyJ9LDIwNDk6e246IkJydEVuZERlY291cGxlZFBpdm90Q2FjaGVJRHMifSwyMDUwOntuOiJCcnREZWNvdXBsZWRQaXZvdENhY2hlSUQifSwyMDUxOntuOiJCcnRCZWdpblBp''@;'; put 'put ''dm90VGFibGVSZWZzIn0sMjA1Mjp7bjoiQnJ0RW5kUGl2b3RUYWJsZVJlZnMifSwyMDUzOntuOiJCcnRQaXZvdFRhYmxlUmVmIn0sMjA1NDp7bjoiQnJ0U2xpY2VyQ2FjaGVCb29rUGl2b3RUYWJsZXMifSwyMDU1OntuOiJCcnRCZWdpblN4dmNlbGxzIn0sMjA1Njp7bjoiQnJ0RW5kU3h2Y2Vs''@;'; put 'put ''bHMifSwyMDU3OntuOiJCcnRCZWdpblN4Um93In0sMjA1ODp7bjoiQnJ0RW5kU3hSb3cifSwyMDYwOntuOiJCcnRQY2RDYWxjTWVtMTUifSwyMDY3OntuOiJCcnRRc2kxNSJ9LDIwNjg6e246IkJydEJlZ2luV2ViRXh0ZW5zaW9ucyJ9LDIwNjk6e246IkJydEVuZFdlYkV4dGVuc2lvbnMifSwy''@;'; put 'put ''MDcwOntuOiJCcnRXZWJFeHRlbnNpb24ifSwyMDcxOntuOiJCcnRBYnNQYXRoMTUifSwyMDcyOntuOiJCcnRCZWdpblBpdm90VGFibGVVSVNldHRpbmdzIn0sMjA3Mzp7bjoiQnJ0RW5kUGl2b3RUYWJsZVVJU2V0dGluZ3MifSwyMDc1OntuOiJCcnRUYWJsZVNsaWNlckNhY2hlSURzIn0sMjA3''@;'; put 'put ''Njp7bjoiQnJ0VGFibGVTbGljZXJDYWNoZUlEIn0sMjA3Nzp7bjoiQnJ0QmVnaW5UYWJsZVNsaWNlckNhY2hlIn0sMjA3ODp7bjoiQnJ0RW5kVGFibGVTbGljZXJDYWNoZSJ9LDIwNzk6e246IkJydFN4RmlsdGVyMTUifSwyMDgwOntuOiJCcnRCZWdpblRpbWVsaW5lQ2FjaGVQaXZvdENhY2hl''@;'; put 'put ''SURzIn0sMjA4MTp7bjoiQnJ0RW5kVGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRHMifSwyMDgyOntuOiJCcnRUaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEIn0sMjA4Mzp7bjoiQnJ0QmVnaW5UaW1lbGluZUNhY2hlSURzIn0sMjA4NDp7bjoiQnJ0RW5kVGltZWxpbmVDYWNoZUlEcyJ9LDIwODU6''@;'; put 'put ''e246IkJydEJlZ2luVGltZWxpbmVDYWNoZUlEIn0sMjA4Njp7bjoiQnJ0RW5kVGltZWxpbmVDYWNoZUlEIn0sMjA4Nzp7bjoiQnJ0QmVnaW5UaW1lbGluZXNFeCJ9LDIwODg6e246IkJydEVuZFRpbWVsaW5lc0V4In0sMjA4OTp7bjoiQnJ0QmVnaW5UaW1lbGluZUV4In0sMjA5MDp7bjoiQnJ0''@;'; put 'put ''RW5kVGltZWxpbmVFeCJ9LDIwOTE6e246IkJydFdvcmtCb29rUHIxNSJ9LDIwOTI6e246IkJydFBDREgxNSJ9LDIwOTM6e246IkJydEJlZ2luVGltZWxpbmVTdHlsZSJ9LDIwOTQ6e246IkJydEVuZFRpbWVsaW5lU3R5bGUifSwyMDk1OntuOiJCcnRUaW1lbGluZVN0eWxlRWxlbWVudCJ9LDIw''@;'; put 'put ''OTY6e246IkJydEJlZ2luVGltZWxpbmVTdHlsZXNoZWV0RXh0MTUifSwyMDk3OntuOiJCcnRFbmRUaW1lbGluZVN0eWxlc2hlZXRFeHQxNSJ9LDIwOTg6e246IkJydEJlZ2luVGltZWxpbmVTdHlsZXMifSwyMDk5OntuOiJCcnRFbmRUaW1lbGluZVN0eWxlcyJ9LDIxMDA6e246IkJydEJlZ2lu''@;'; put 'put ''VGltZWxpbmVTdHlsZUVsZW1lbnRzIn0sMjEwMTp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZUVsZW1lbnRzIn0sMjEwMjp7bjoiQnJ0RHhmMTUifSwyMTAzOntuOiJCcnRCZWdpbkR4ZnMxNSJ9LDIxMDQ6e246ImJydEVuZER4ZnMxNSJ9LDIxMDU6e246IkJydFNsaWNlckNhY2hlSGlkZUl0ZW1z''@;'; put 'put ''V2l0aE5vRGF0YSJ9LDIxMDY6e246IkJydEJlZ2luSXRlbVVuaXF1ZU5hbWVzIn0sMjEwNzp7bjoiQnJ0RW5kSXRlbVVuaXF1ZU5hbWVzIn0sMjEwODp7bjoiQnJ0SXRlbVVuaXF1ZU5hbWUifSwyMTA5OntuOiJCcnRCZWdpbkV4dENvbm4xNSJ9LDIxMTA6e246IkJydEVuZEV4dENvbm4xNSJ9''@;'; put 'put ''LDIxMTE6e246IkJydEJlZ2luT2xlZGJQcjE1In0sMjExMjp7bjoiQnJ0RW5kT2xlZGJQcjE1In0sMjExMzp7bjoiQnJ0QmVnaW5EYXRhRmVlZFByMTUifSwyMTE0OntuOiJCcnRFbmREYXRhRmVlZFByMTUifSwyMTE1OntuOiJCcnRUZXh0UHIxNSJ9LDIxMTY6e246IkJydFJhbmdlUHIxNSJ9''@;'; put 'put ''LDIxMTc6e246IkJydERiQ29tbWFuZDE1In0sMjExODp7bjoiQnJ0QmVnaW5EYlRhYmxlczE1In0sMjExOTp7bjoiQnJ0RW5kRGJUYWJsZXMxNSJ9LDIxMjA6e246IkJydERiVGFibGUxNSJ9LDIxMjE6e246IkJydEJlZ2luRGF0YU1vZGVsIn0sMjEyMjp7bjoiQnJ0RW5kRGF0YU1vZGVsIn0s''@;'; put 'put ''MjEyMzp7bjoiQnJ0QmVnaW5Nb2RlbFRhYmxlcyJ9LDIxMjQ6e246IkJydEVuZE1vZGVsVGFibGVzIn0sMjEyNTp7bjoiQnJ0TW9kZWxUYWJsZSJ9LDIxMjY6e246IkJydEJlZ2luTW9kZWxSZWxhdGlvbnNoaXBzIn0sMjEyNzp7bjoiQnJ0RW5kTW9kZWxSZWxhdGlvbnNoaXBzIn0sMjEyODp7''@;'; put 'put ''bjoiQnJ0TW9kZWxSZWxhdGlvbnNoaXAifSwyMTI5OntuOiJCcnRCZWdpbkVDVHh0V2l6MTUifSwyMTMwOntuOiJCcnRFbmRFQ1R4dFdpejE1In0sMjEzMTp7bjoiQnJ0QmVnaW5FQ1RXRmxkSW5mb0xzdDE1In0sMjEzMjp7bjoiQnJ0RW5kRUNUV0ZsZEluZm9Mc3QxNSJ9LDIxMzM6e246IkJy''@;'; put 'put ''dEJlZ2luRUNUV0ZsZEluZm8xNSJ9LDIxMzQ6e246IkJydEZpZWxkTGlzdEFjdGl2ZUl0ZW0ifSwyMTM1OntuOiJCcnRQaXZvdENhY2hlSWRWZXJzaW9uIn0sMjEzNjp7bjoiQnJ0U1hESTE1In0sMjEzNzp7bjoiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZ3MifSwyMTM4OntuOiJCcnRFbmRN''@;'; put 'put ''b2RlbFRpbWVHcm91cGluZ3MifSwyMTM5OntuOiJCcnRCZWdpbk1vZGVsVGltZUdyb3VwaW5nIn0sMjE0MDp7bjoiQnJ0RW5kTW9kZWxUaW1lR3JvdXBpbmcifSwyMTQxOntuOiJCcnRNb2RlbFRpbWVHcm91cGluZ0NhbGNDb2wifSwzMDcyOntuOiJCcnRVaWQifSwzMDczOntuOiJCcnRSZXZp''@;'; put 'put ''c2lvblB0ciJ9LDUwOTU6e246IkJydEJlZ2luQ2FsY0ZlYXR1cmVzIn0sNTA5Njp7bjoiQnJ0RW5kQ2FsY0ZlYXR1cmVzIn0sNTA5Nzp7bjoiQnJ0Q2FsY0ZlYXR1cmUifSw2NTUzNTp7bjoiIn19LGVDPV90KFQ2LCJuIik7ZUMuQnJ0RlJUQXJjaElEJD0xNjt2YXIgaXM9ezY6e246IkZvcm11''@;'; put 'put ''bGEiLGY6eV99LDEwOntuOiJFT0YiLGY6T2x9LDEyOntuOiJDYWxjQ291bnQiLGY6ZTF9LDEzOntuOiJDYWxjTW9kZSIsZjplMX0sMTQ6e246IkNhbGNQcmVjaXNpb24iLGY6Sm99LDE1OntuOiJDYWxjUmVmTW9kZSIsZjpKb30sMTY6e246IkNhbGNEZWx0YSIsZjplMn0sMTc6e246IkNhbGNJ''@;'; put 'put ''dGVyIixmOkpvfSwxODp7bjoiUHJvdGVjdCIsZjpKb30sMTk6e246IlBhc3N3b3JkIixmOmUxfSwyMDp7bjoiSGVhZGVyIixmOmU2fSwyMTp7bjoiRm9vdGVyIixmOmU2fSwyMzp7bjoiRXh0ZXJuU2hlZXQiLGY6YmJ9LDI0OntuOiJMYmwiLGY6b0V9LDI1OntuOiJXaW5Qcm90ZWN0IixmOkpv''@;'; put 'put ''fSwyNjp7bjoiVmVydGljYWxQYWdlQnJlYWtzIn0sMjc6e246Ikhvcml6b250YWxQYWdlQnJlYWtzIn0sMjg6e246Ik5vdGUiLGY6ZnVuY3Rpb24gX2IoSCxyZSxYKXtyZXR1cm4gZnVuY3Rpb24gQzIoSCxyZSxYKXtpZighKFguYmlmZjw4KSl7dmFyIHdlPUgucmVhZF9zaGlmdCgyKSx4ZT1I''@;'; put 'put ''LnJlYWRfc2hpZnQoMiksRmU9SC5yZWFkX3NoaWZ0KDIpLFplPUgucmVhZF9zaGlmdCgyKSxWZT1rNChILDAsWCk7cmV0dXJuIFguYmlmZjw4JiZILnJlYWRfc2hpZnQoMSksW3tyOndlLGM6eGV9LFZlLFplLEZlXX19KEgsMCxYKX19LDI5OntuOiJTZWxlY3Rpb24iLGY6ZnVuY3Rpb24gcGYo''@;'; put 'put ''SCxyZSxYKXtyZXR1cm4gWCYmWC5iaWZmPDU/KEgubCs9cmUse2NlbGw6e3I6MCxjOjB9fSk6KEgucmVhZF9zaGlmdCgxKSx7Y2VsbDpRMCh7cjpILnJlYWRfc2hpZnQoMiksYzpILnJlYWRfc2hpZnQoMil9KX0pfX0sMzQ6e246IkRhdGUxOTA0IixmOkpvfSwzNTp7bjoiRXh0ZXJuTmFtZSIs''@;'; put 'put ''ZjpyRX0sMzg6e246IkxlZnRNYXJnaW4iLGY6ZTJ9LDM5OntuOiJSaWdodE1hcmdpbiIsZjplMn0sNDA6e246IlRvcE1hcmdpbiIsZjplMn0sNDE6e246IkJvdHRvbU1hcmdpbiIsZjplMn0sNDI6e246IlByaW50Um93Q29sIixmOkpvfSw0Mzp7bjoiUHJpbnRHcmlkIixmOkpvfSw0Nzp7bjoi''@;'; put 'put ''RmlsZVBhc3MiLGY6ZnVuY3Rpb24gT2IoSCxyZSxYKXtpZihYLmVuYylyZXR1cm4gWC5lbmM7dmFyIHdlPXtUeXBlOlguYmlmZj49OD9ILnJlYWRfc2hpZnQoMik6MH07cmV0dXJuIHdlLlR5cGU/ZnVuY3Rpb24gUjkoSCxyZSxYLHdlKXt2YXIgeGU9d2V8fHt9O2lmKHhlLkluZm89SC5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpLEgubC09MiwxPT09eGUuSW5mbyl7aWYoeGUuRGF0YT1mdW5jdGlvbiB3RShIKXt2YXIgcmU9e30sWD1yZS5FbmNyeXB0aW9uVmVyc2lvbkluZm89XzMoSCw0KTtpZigxIT1YLk1ham9yfHwxIT1YLk1pbm9yKXRocm93InVucmVjb2duaXplZCB2ZXJzaW9uIGNvZGUgIitYLk1h''@;'; put 'put ''am9yKyIgOiAiK1guTWlub3I7cmV0dXJuIHJlLlNhbHQ9SC5yZWFkX3NoaWZ0KDE2KSxyZS5FbmNyeXB0ZWRWZXJpZmllcj1ILnJlYWRfc2hpZnQoMTYpLHJlLkVuY3J5cHRlZFZlcmlmaWVySGFzaD1ILnJlYWRfc2hpZnQoMTYpLHJlfShIKSxYLnBhc3N3b3JkJiZ2b2lkIDAhPT1MNil7dmFy''@;'; put 'put ''IEZlPUw2KFgucGFzc3dvcmQseGUuRGF0YS5TYWx0LCIwMDAwMDAwMCIpLFplPVRlKHhlLkRhdGEuRW5jcnlwdGVkVmVyaWZpZXIreGUuRGF0YS5FbmNyeXB0ZWRWZXJpZmllckhhc2gsImhleCIpLFZlPVYxLnJjNChUZShGZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpLFplKTt3ZS52YWxp''@;'; put 'put ''ZD1WMS5tZDUoVmUuc2xpY2UoMCwxNikpPT1CdWZmZXIuZnJvbShWZS5zbGljZSgxNikpLnRvU3RyaW5nKCJoZXgiKSx4ZS5EYXRhLktleT1GZSx3ZS5pbnNpdHU9ZnVuY3Rpb24gTVQoSCxyZSl7dmFyIFg9bmV3IEFycmF5KDI1Niksd2U9MCx4ZT0wLEZlPTAsWmU9MDtmdW5jdGlvbiBWZShR''@;'; put 'put ''dCl7Zm9yKHdlPTAseGU9MCxGZT0wLFplPTAseGU9MDsyNTYhPXhlOysreGUpWFt4ZV09eGU7Zm9yKEZlPTAseGU9MDsyNTYhPXhlOysreGUpe3RyeXtGZT1GZStYW3hlXStRdFt4ZSVRdC5sZW5ndGhdLmNoYXJDb2RlQXQoMCkmMjU1fWNhdGNoKGFuKXt0aHJvdyBjb25zb2xlLmxvZyh4ZSxR''@;'; put 'put ''dFt4ZSVRdC5sZW5ndGhdKSxhbn1aZT1YW3hlXSxYW3hlXT1YW0ZlXSxYW0ZlXT1aZX14ZT1GZT0wfWZ1bmN0aW9uIFVlKFF0KXt2YXIgYW49aGUoUXQubGVuZ3RoKTtmb3Iod2U9MDt3ZSE9UXQubGVuZ3RoOysrd2UpWmU9WFt4ZT14ZSsxJjI1NV0sWFt4ZV09WFtGZT0oRmUrWFt4ZV0pJTI1''@;'; put 'put ''Nl0sWFtGZV09WmUsYW5bd2VdPVF0W3dlXV5YW1hbeGVdK1hbRmVdJjI1NV07cmV0dXJuIEJ1ZmZlci5mcm9tKGFuKX12YXIgU3Q9SC5LZXksSXQ9MDtWZShUZShTdCwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKTt2YXIgUHQ9MDtyZXR1cm4gZnVuY3Rpb24oUXQpe2lmKFB0K1F0Lmxlbmd0''@;'; put 'put ''aDwxMDI0KXJldHVybiBQdCs9UXQubGVuZ3RoLFVlKFF0KTt2YXIgTHQ9MCx6dD1UZShRdC5zbGljZShMdCxMdCsoQ249MTAyNC1QdCkpKTtMdCs9Q24sUHQ9MDt2YXIgZm49VWUoenQpO2ZvcihMdD09UXQubGVuZ3RoJiYoKytJdCxTdD1MNihyZSxILlNhbHQsZjcoSXQpKSxWZShUZShTdCwi''@;'; put 'put ''aGV4IikudG9TdHJpbmcoImJpbmFyeSIpKSk7THQ8UXQubGVuZ3RoOyl7KytJdCxTdD1MNihyZSxILlNhbHQsZjcoSXQpKSxWZShCdWZmZXIuZnJvbShTdCwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKTt2YXIgQ249TWF0aC5taW4oMTAyNCxRdC5sZW5ndGgtTHQpO3p0PVRlKFF0LnNsaWNl''@;'; put 'put ''KEx0LEx0K0NuKSksTHQrPUNuLFB0PUNuLGZuPUJ1ZmZlci5jb25jYXQoW2ZuLFVlKHp0KV0pfXJldHVybiBmbn19KHhlLkRhdGEsWC5wYXNzd29yZCl9fWVsc2UgaWYoeGUuRGF0YT1mdW5jdGlvbiBfRyhILHJlKXt2YXIgWD17fSx3ZT1YLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1fMyhILDQp''@;'; put 'put ''O2lmKHJlLT00LDIhPXdlLk1pbm9yKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogIit3ZS5NaW5vcik7aWYod2UuTWFqb3I+NHx8d2UuTWFqb3I8Mil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtYWpvciB2ZXJzaW9uIGNvZGU6ICIrd2Uu''@;'; put 'put ''TWFqb3IpO1guRmxhZ3M9SC5yZWFkX3NoaWZ0KDQpLHJlLT00O3ZhciB4ZT1ILnJlYWRfc2hpZnQoNCk7cmV0dXJuIHJlLT00LFguRW5jcnlwdGlvbkhlYWRlcj1KUihILHhlKSxYLkVuY3J5cHRpb25WZXJpZmllcj1YUihILHJlLT14ZSksWH0oSCxyZSkseGUuRGF0YSYmeGUuRGF0YS5FbmNy''@;'; put 'put ''eXB0aW9uSGVhZGVyJiYyNjYyNT09PXhlLkRhdGEuRW5jcnlwdGlvbkhlYWRlci5BbGdJRCYmWC5wYXNzd29yZCYmdm9pZCAwIT09aDcpe3ZhciBVZT1oNyhYLnBhc3N3b3JkLHhlLkRhdGEuRW5jcnlwdGlvblZlcmlmaWVyLlNhbHQudG9TdHJpbmcoImhleCIpLCIwMDAwMDAwMCIpLFN0PXhl''@;'; put 'put ''LkRhdGEuRW5jcnlwdGlvbkhlYWRlci5LZXlTaXplPj4+Mzs1PT1TdHx8U3Q8VWUubGVuZ3RoJiYoVWU9VWUuc2xpY2UoMCxTdCkpO3ZhciBJdD1UZSh4ZS5EYXRhLkVuY3J5cHRpb25WZXJpZmllci5WZXJpZmllci50b1N0cmluZygiaGV4IikreGUuRGF0YS5FbmNyeXB0aW9uVmVyaWZpZXIu''@;'; put 'put ''VmVyaWZpZXJIYXNoLnRvU3RyaW5nKCJoZXgiKSwiaGV4IiksUHQ9VjEucmM0KFVlLnRvU3RyaW5nKCJiaW5hcnkiKSxJdCk7d2UudmFsaWQ9UzIoUHQuc2xpY2UoMCxTdCksIlNIQTEiKS50b1N0cmluZygiaGV4Iik9PVB0LnNsaWNlKFN0KS50b1N0cmluZygiaGV4IikseGUuRGF0YS5LZXk9''@;'; put 'put ''VWUsd2UudmFsaWQmJih3ZS5pbnNpdHU9ZnVuY3Rpb24geTAoSCxyZSl7dmFyIFg9bmV3IEFycmF5KDI1Niksd2U9MCx4ZT0wLEZlPTAsWmU9MCxWZT1ILkVuY3J5cHRpb25IZWFkZXIuS2V5U2l6ZT4+PjM7ZnVuY3Rpb24gVWUoYW4pe2Zvcihhbj1CdWZmZXIuZnJvbShhbi5zbGljZSgwLFZl''@;'; put 'put ''KSksd2U9MCx4ZT0wLEZlPTAsWmU9MCx4ZT0wOzI1NiE9eGU7Kyt4ZSlYW3hlXT14ZTtmb3IoRmU9MCx4ZT0wOzI1NiE9eGU7Kyt4ZSl7dmFyIENuPWFuW3hlJWFuLmxlbmd0aF07RmU9RmUrWFt4ZV0rKCJzdHJpbmciPT10eXBlb2YgQ24/Q24uY2hhckNvZGVBdCgwKTpDbikmMjU1LFplPVhb''@;'; put 'put ''eGVdLFhbeGVdPVhbRmVdLFhbRmVdPVplfXhlPUZlPTB9ZnVuY3Rpb24gU3QoYW4pe3ZhciBDbj1oZShhbi5sZW5ndGgpO2Zvcih3ZT0wO3dlIT1hbi5sZW5ndGg7Kyt3ZSlaZT1YW3hlPXhlKzEmMjU1XSxYW3hlXT1YW0ZlPShGZStYW3hlXSklMjU2XSxYW0ZlXT1aZSxDblt3ZV09YW5bd2Vd''@;'; put 'put ''XlhbWFt4ZV0rWFtGZV0mMjU1XTtyZXR1cm4gQnVmZmVyLmZyb20oQ24pfXZhciBJdD1ILktleSxQdD0wO1VlKFRlKEl0LCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpO3ZhciBRdD0wO3JldHVybiBmdW5jdGlvbihhbil7aWYoUXQrYW4ubGVuZ3RoPDEwMjQpcmV0dXJuIFF0Kz1hbi5sZW5n''@;'; put 'put ''dGgsU3QoYW4pO3ZhciBMdD0xMDI0LVF0LHp0PTAsZm49QnVmZmVyLmZyb20oYW4uc2xpY2UoenQsenQrTHQpKTt6dCs9THQsUXQ9MDt2YXIgSW49U3QoZm4pO2Zvcih6dD09YW4ubGVuZ3RoJiYoKytQdCxJdD1oNyhyZSxILkVuY3J5cHRpb25WZXJpZmllci5TYWx0LGY3KFB0KSksVWUoQnVm''@;'; put 'put ''ZmVyLmZyb20oSXQsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpO3p0PGFuLmxlbmd0aDspKytQdCxJdD1oNyhyZSxILkVuY3J5cHRpb25WZXJpZmllci5TYWx0LGY3KFB0KSksVWUoQnVmZmVyLmZyb20oSXQsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSksTHQ9TWF0aC5taW4oMTAyNCxh''@;'; put 'put ''bi5sZW5ndGgtenQpLGZuPUJ1ZmZlci5mcm9tKGFuLnNsaWNlKHp0LHp0K0x0KSksenQrPUx0LEx0PDEwMjQmJihRdD1MdCksSW49QnVmZmVyLmNvbmNhdChbSW4sU3QoZm4pXSk7cmV0dXJuIElufX0oeGUuRGF0YSxYLnBhc3N3b3JkKSl9cmV0dXJuIHhlfShILHJlLTIsWCx3ZSk6ZnVuY3Rp''@;'; put 'put ''b24gYkUoSCxyZSxYLHdlKXt2YXIgeGU9e2tleTplMShIKSx2ZXJpZmljYXRpb25CeXRlczplMShIKX07WC5wYXNzd29yZCYmKHhlLnZlcmlmaWVyPUxiKFgucGFzc3dvcmQpKSx3ZS52YWxpZD14ZS52ZXJpZmljYXRpb25CeXRlcz09PXhlLnZlcmlmaWVyLHdlLnZhbGlkJiYod2UuaW5zaXR1''@;'; put 'put ''PWZ1bmN0aW9uKEgscmUpe3ZhciBYPXJlfHwwLHdlPU85KEgpO3JldHVybiBmdW5jdGlvbih4ZSl7dmFyIEZlPWZ1bmN0aW9uKEgscmUsWCx3ZSx4ZSl7dmFyIEZlLFplO2Zvcih4ZXx8KHhlPXJlKSx3ZXx8KHdlPU85KCIiKSksRmU9MDtGZSE9cmUubGVuZ3RoOysrRmUpWmU9MjU1JigoWmU9''@;'; put 'put ''cmVbRmVdKT4+NXxaZTw8MykseGVbRmVdPVplXj13ZVtYXSxYPVgrMSYxNTtyZXR1cm5beGUsWCx3ZV19KDAseGUsWCx3ZSk7cmV0dXJuIFg9RmVbMV0sRmVbMF19fShYLnBhc3N3b3JkLDApKX0oSCwwLFgsd2UpLHdlfX0sNDk6e246IkZvbnQiLGY6ZnVuY3Rpb24gWHAoSCxyZSxYKXt2YXIg''@;'; put 'put ''d2U9e3N6OkgucmVhZF9zaGlmdCgyKS8yMH0seGU9Y2QoSCk7eGUuZkJvbGQmJih3ZS5ib2xkPTEpLHhlLmZJdGFsaWMmJih3ZS5pdGFsaWM9MSkseGUuZlVuZGVybGluZSYmKHdlLnVuZGVybGluZT0xKSx4ZS5mQ29uZGVuc2UmJih3ZS5jb25kZW5zZT0xKSx4ZS5mRXh0ZW5kJiYod2UuZXh0''@;'; put 'put ''ZW5kPTEpLHhlLmZTaGFkb3cmJih3ZS5zaGFkb3c9MSkseGUuZk91dGxpbmUmJih3ZS5vdXRsaW5lPTEpLHhlLmZTdHJpa2VvdXQmJih3ZS5zdHJpa2U9MSk7dmFyIEZlPVgmJlguYmlmZnx8ODtpZigyIT1GZSYmKHdlLmljdj1ILnJlYWRfc2hpZnQoMiksMyE9RmUmJjQhPUZlKSl7c3dpdGNo''@;'; put 'put ''KDcwMD09PUgucmVhZF9zaGlmdCgyKSYmKHdlLmJvbGQ9MSksSC5yZWFkX3NoaWZ0KDIpKXtjYXNlIDE6d2UudmFsaWduPSJzdXBlciI7YnJlYWs7Y2FzZSAyOndlLnZhbGlnbj0ic3ViIn12YXIgVmU9SC5yZWFkX3NoaWZ0KDEpOzAhPVZlJiYod2UudW5kZXJsaW5lPVZlKTt2YXIgVWU9SC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDEpO1VlPjAmJih3ZS5mYW1pbHk9VWUpO3ZhciBTdD1ILnJlYWRfc2hpZnQoMSk7U3Q+MCYmKHdlLmNoYXJzZXQ9U3QpLEgubCs9MX1yZXR1cm4gd2UubmFtZT1aZihILDAsWCksd2V9fSw1MTp7bjoiUHJpbnRTaXplIixmOmUxfSw2MDp7bjoiQ29udGludWUifSw2MTp7bjoi''@;'; put 'put ''V2luZG93MSIsZjpmdW5jdGlvbiBNOShIKXtyZXR1cm57UG9zOltILnJlYWRfc2hpZnQoMiksSC5yZWFkX3NoaWZ0KDIpXSxEaW06W0gucmVhZF9zaGlmdCgyKSxILnJlYWRfc2hpZnQoMildLEZsYWdzOkgucmVhZF9zaGlmdCgyKSxDdXJUYWI6SC5yZWFkX3NoaWZ0KDIpLEZpcnN0VGFiOkgu''@;'; put 'put ''cmVhZF9zaGlmdCgyKSxTZWxlY3RlZDpILnJlYWRfc2hpZnQoMiksVGFiUmF0aW86SC5yZWFkX3NoaWZ0KDIpfX19LDY0OntuOiJCYWNrdXAiLGY6Sm99LDY1OntuOiJQYW5lIixmOmZ1bmN0aW9uIGRmKEgscmUsWCl7aWYoWCYmWC5iaWZmPDUpcmV0dXJue307dmFyIHdlPXt9O3JldHVybiB3''@;'; put 'put ''ZS54PUgucmVhZF9zaGlmdCgyKSx3ZS55PUgucmVhZF9zaGlmdCgyKSx3ZS5yd1RvcD1ILnJlYWRfc2hpZnQoMiksd2UuY29sTGVmdD1ILnJlYWRfc2hpZnQoMiksd2UucG5uQWNjdD1ILnJlYWRfc2hpZnQoMSksSC5yZWFkX3NoaWZ0KDEpLHdlfX0sNjY6e246IkNvZGVQYWdlIixmOmUxfSw3''@;'; put 'put ''Nzp7bjoiUGxzIixmOkwyfSw4MDp7bjoiRENvbiJ9LDgxOntuOiJEQ29uUmVmIn0sODI6e246IkRDb25OYW1lIn0sODU6e246IkRlZkNvbFdpZHRoIixmOmUxfSw4OTp7bjoiWENUIn0sOTA6e246IkNSTiJ9LDkxOntuOiJGaWxlU2hhcmluZyJ9LDkyOntuOiJXcml0ZUFjY2VzcyIsZjpmdW5j''@;'; put 'put ''dGlvbiBVcChILHJlLFgpe2lmKFguZW5jKXJldHVybiBILmwrPXJlLCIiO3ZhciB3ZT1ILmwseGU9azQoSCwwLFgpO3JldHVybiBILnJlYWRfc2hpZnQocmUrd2UtSC5sKSx4ZX19LDkzOntuOiJPYmoiLGY6ZnVuY3Rpb24gWTEoSCxyZSxYKXtpZihYJiZYLmJpZmY8OClyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gVDQoSCxyZSxYKXtILmwrPTQ7dmFyIHdlPUgucmVhZF9zaGlmdCgyKSx4ZT1ILnJlYWRfc2hpZnQoMiksRmU9SC5yZWFkX3NoaWZ0KDIpO0gubCs9MixILmwrPTIsSC5sKz0yLEgubCs9MixILmwrPTIsSC5sKz0yLEgubCs9MixILmwrPTIsSC5sKz0yLEgubCs9Njt2YXIgWmU9W107cmV0''@;'; put 'put ''dXJuIFplLnB1c2goKGFFW3dlXXx8TDIpKEgscmUtPTM2LFgpKSx7Y21vOlt4ZSx3ZSxGZV0sZnQ6WmV9fShILHJlLFgpO3ZhciB3ZT1rOShIKSx4ZT1mdW5jdGlvbiB1dShILHJlLFgpe2Zvcih2YXIgd2U9SC5sK3JlLHhlPVtdO0gubDx3ZTspe3ZhciBGZT1ILnJlYWRfc2hpZnQoMik7SC5s''@;'; put 'put ''LT0yO3RyeXt4ZVtGZV09dDJbRmVdKEgsd2UtSC5sKX1jYXRjaChaZSl7cmV0dXJuIEgubD13ZSx4ZX19cmV0dXJuIEgubCE9d2UmJihILmw9d2UpLHhlfShILHJlLTIyKTtyZXR1cm57Y21vOndlLGZ0OnhlfX19LDk0OntuOiJVbmNhbGNlZCJ9LDk1OntuOiJDYWxjU2F2ZVJlY2FsYyIsZjpK''@;'; put 'put ''b30sOTY6e246IlRlbXBsYXRlIn0sOTc6e246IkludGwifSw5OTp7bjoiT2JqUHJvdGVjdCIsZjpKb30sMTI1OntuOiJDb2xJbmZvIixmOnpjfSwxMjg6e246Ikd1dHMiLGY6ZnVuY3Rpb24gcXAoSCl7SC5sKz00O3ZhciByZT1bSC5yZWFkX3NoaWZ0KDIpLEgucmVhZF9zaGlmdCgyKV07aWYo''@;'; put 'put ''MCE9PXJlWzBdJiZyZVswXS0tLDAhPT1yZVsxXSYmcmVbMV0tLSxyZVswXT43fHxyZVsxXT43KXRocm93IG5ldyBFcnJvcigiQmFkIEd1dHRlcnM6ICIrcmUuam9pbigifCIpKTtyZXR1cm4gcmV9fSwxMjk6e246IldzQm9vbCIsZjpmdW5jdGlvbiBKcChILHJlLFgpe3ZhciB3ZT1YJiY4PT1Y''@;'; put 'put ''LmJpZmZ8fDI9PXJlP0gucmVhZF9zaGlmdCgyKTooSC5sKz1yZSwwKTtyZXR1cm57ZkRpYWxvZzoxNiZ3ZSxmQmVsb3c6NjQmd2UsZlJpZ2h0OjEyOCZ3ZX19fSwxMzA6e246IkdyaWRTZXQiLGY6ZTF9LDEzMTp7bjoiSENlbnRlciIsZjpKb30sMTMyOntuOiJWQ2VudGVyIixmOkpvfSwxMzM6''@;'; put 'put ''e246IkJvdW5kU2hlZXQ4IixmOmZ1bmN0aW9uIG9tKEgscmUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdCg0KSx4ZT0zJkgucmVhZF9zaGlmdCgxKSxGZT1ILnJlYWRfc2hpZnQoMSk7c3dpdGNoKEZlKXtjYXNlIDA6RmU9IldvcmtzaGVldCI7YnJlYWs7Y2FzZSAxOkZlPSJNYWNyb3NoZWV0Ijti''@;'; put 'put ''cmVhaztjYXNlIDI6RmU9IkNoYXJ0c2hlZXQiO2JyZWFrO2Nhc2UgNjpGZT0iVkJBTW9kdWxlIn12YXIgWmU9WmYoSCwwLFgpO3JldHVybiAwPT09WmUubGVuZ3RoJiYoWmU9IlNoZWV0MSIpLHtwb3M6d2UsaHM6eGUsZHQ6RmUsbmFtZTpaZX19fSwxMzQ6e246IldyaXRlUHJvdGVjdCJ9LDE0''@;'; put 'put ''MDp7bjoiQ291bnRyeSIsZjpmdW5jdGlvbiBobShIKXt2YXIgWCxyZT1bMCwwXTtyZXR1cm4gWD1ILnJlYWRfc2hpZnQoMikscmVbMF09aGJbWF18fFgsWD1ILnJlYWRfc2hpZnQoMikscmVbMV09aGJbWF18fFgscmV9fSwxNDE6e246IkhpZGVPYmoiLGY6ZTF9LDE0NDp7bjoiU29ydCJ9LDE0''@;'; put 'put ''Njp7bjoiUGFsZXR0ZSIsZjpmdW5jdGlvbiBOUihIKXtmb3IodmFyIHJlPUgucmVhZF9zaGlmdCgyKSxYPVtdO3JlLS0gPjA7KVgucHVzaChJOChIKSk7cmV0dXJuIFh9fSwxNTE6e246IlN5bmMifSwxNTI6e246IkxQciJ9LDE1Mzp7bjoiRHhHQ29sIn0sMTU0OntuOiJGbkdyb3VwTmFtZSJ9''@;'; put 'put ''LDE1NTp7bjoiRmlsdGVyTW9kZSJ9LDE1Njp7bjoiQnVpbHRJbkZuR3JvdXBDb3VudCIsZjplMX0sMTU3OntuOiJBdXRvRmlsdGVySW5mbyJ9LDE1ODp7bjoiQXV0b0ZpbHRlciJ9LDE2MDp7bjoiU2NsIixmOkk5fSwxNjE6e246IlNldHVwIixmOmZ1bmN0aW9uIHZHKEgscmUpe3ZhciBYPXt9''@;'; put 'put ''O3JldHVybiByZTwzMnx8KEgubCs9MTYsWC5oZWFkZXI9ZTIoSCksWC5mb290ZXI9ZTIoSCksSC5sKz0yKSxYfX0sMTc0OntuOiJTY2VuTWFuIn0sMTc1OntuOiJTQ0VOQVJJTyJ9LDE3Njp7bjoiU3hWaWV3In0sMTc3OntuOiJTeHZkIn0sMTc4OntuOiJTWFZJIn0sMTgwOntuOiJTeEl2ZCJ9''@;'; put 'put ''LDE4MTp7bjoiU1hMSSJ9LDE4Mjp7bjoiU1hQSSJ9LDE4NDp7bjoiRG9jUm91dGUifSwxODU6e246IlJlY2lwTmFtZSJ9LDE4OTp7bjoiTXVsUmsiLGY6ZnVuY3Rpb24geWIoSCxyZSl7Zm9yKHZhciBYPUgubCtyZS0yLHdlPUgucmVhZF9zaGlmdCgyKSx4ZT1ILnJlYWRfc2hpZnQoMiksRmU9''@;'; put 'put ''W107SC5sPFg7KUZlLnB1c2goaW0oSCkpO2lmKEgubCE9PVgpdGhyb3cgbmV3IEVycm9yKCJNdWxSSyByZWFkIGVycm9yIik7dmFyIFplPUgucmVhZF9zaGlmdCgyKTtpZihGZS5sZW5ndGghPVplLXhlKzEpdGhyb3cgbmV3IEVycm9yKCJNdWxSSyBsZW5ndGggbWlzbWF0Y2giKTtyZXR1cm57''@;'; put 'put ''cjp3ZSxjOnhlLEM6WmUscmtyZWM6RmV9fX0sMTkwOntuOiJNdWxCbGFuayIsZjpmdW5jdGlvbiBxTShILHJlKXtmb3IodmFyIFg9SC5sK3JlLTIsd2U9SC5yZWFkX3NoaWZ0KDIpLHhlPUgucmVhZF9zaGlmdCgyKSxGZT1bXTtILmw8WDspRmUucHVzaChILnJlYWRfc2hpZnQoMikpO2lmKEgu''@;'; put 'put ''bCE9PVgpdGhyb3cgbmV3IEVycm9yKCJNdWxCbGFuayByZWFkIGVycm9yIik7dmFyIFplPUgucmVhZF9zaGlmdCgyKTtpZihGZS5sZW5ndGghPVplLXhlKzEpdGhyb3cgbmV3IEVycm9yKCJNdWxCbGFuayBsZW5ndGggbWlzbWF0Y2giKTtyZXR1cm57cjp3ZSxjOnhlLEM6WmUsaXhmZTpGZX19''@;'; put 'put ''fSwxOTM6e246Ik1tcyIsZjpPbH0sMTk3OntuOiJTWERJIn0sMTk4OntuOiJTWERCIn0sMTk5OntuOiJTWEZEQiJ9LDIwMDp7bjoiU1hEQkIifSwyMDE6e246IlNYTnVtIn0sMjAyOntuOiJTeEJvb2wiLGY6Sm99LDIwMzp7bjoiU3hFcnIifSwyMDQ6e246IlNYSW50In0sMjA1OntuOiJTWFN0''@;'; put 'put ''cmluZyJ9LDIwNjp7bjoiU1hEdHIifSwyMDc6e246IlN4TmlsIn0sMjA4OntuOiJTWFRibCJ9LDIwOTp7bjoiU1hUQlJHSUlUTSJ9LDIxMDp7bjoiU3hUYnBnIn0sMjExOntuOiJPYlByb2oifSwyMTM6e246IlNYU3RyZWFtSUQifSwyMTU6e246IkRCQ2VsbCJ9LDIxNjp7bjoiU1hSbmcifSwy''@;'; put 'put ''MTc6e246IlN4SXN4b3BlciJ9LDIxODp7bjoiQm9va0Jvb2wiLGY6ZTF9LDIyMDp7bjoiRGJPclBhcmFtUXJ5In0sMjIxOntuOiJTY2VuYXJpb1Byb3RlY3QiLGY6Sm99LDIyMjp7bjoiT2xlT2JqZWN0U2l6ZSJ9LDIyNDp7bjoiWEYiLGY6ZnVuY3Rpb24gZUUoSCxyZSxYKXt2YXIgd2U9e307''@;'; put 'put ''cmV0dXJuIHdlLmlmbnQ9SC5yZWFkX3NoaWZ0KDIpLHdlLm51bUZtdElkPUgucmVhZF9zaGlmdCgyKSx3ZS5mbGFncz1ILnJlYWRfc2hpZnQoMiksd2UuZlN0eWxlPXdlLmZsYWdzPj4yJjEsd2UuZGF0YT1mdW5jdGlvbiB3YihILHJlLFgsd2Upe3ZhciB4ZT17fSxGZT1ILnJlYWRfc2hpZnQo''@;'; put 'put ''NCksWmU9SC5yZWFkX3NoaWZ0KDQpLFZlPUgucmVhZF9zaGlmdCg0KSxVZT1ILnJlYWRfc2hpZnQoMik7aWYoeGUucGF0dGVyblR5cGU9QTlbVmU+PjI2XSwhd2UuY2VsbFN0eWxlcylyZXR1cm4geGU7dmFyIFN0PTcmRmU7c3dpdGNoKFN0KXtjYXNlIDE6eGUuaGFsaWduPSJsZWZ0IjticmVh''@;'; put 'put ''aztjYXNlIDI6eGUuaGFsaWduPSJjZW50ZXIiO2JyZWFrO2Nhc2UgMzp4ZS5oYWxpZ249InJpZ2h0In1zd2l0Y2goeGUuZldyYXA9RmU+PjMmMSxTdD1GZT4+NCY3KXtjYXNlIDA6eGUudmFsaWduPSJ0b3AiO2JyZWFrO2Nhc2UgMTp4ZS52YWxpZ249ImNlbnRlciI7YnJlYWs7Y2FzZSAyOnhl''@;'; put 'put ''LnZhbGlnbj0iYm90dG9tIn1yZXR1cm4geGUuZkp1c3RMYXN0PUZlPj43JjEseGUudHJvdD1GZT4+OCYyNTUseGUuY0luZGVudD1GZT4+MTYmMTUseGUuZlNocmlua1RvRml0PUZlPj4yMCYxLHhlLmlSZWFkT3JkZXI9RmU+PjIyJjIseGUuZkF0ck51bT1GZT4+MjYmMSx4ZS5mQXRyRm50PUZl''@;'; put 'put ''Pj4yNyYxLHhlLmZBdHJBbGM9RmU+PjI4JjEseGUuZkF0ckJkcj1GZT4+MjkmMSx4ZS5mQXRyUGF0PUZlPj4zMCYxLHhlLmZBdHJQcm90PUZlPj4zMSYxLHhlLmRnTGVmdD0xNSZaZSx4ZS5kZ1JpZ2h0PVplPj40JjE1LHhlLmRnVG9wPVplPj44JjE1LHhlLmRnQm90dG9tPVplPj4xMiYxNSx4''@;'; put 'put ''ZS5pY3ZMZWZ0PVplPj4xNiYxMjcseGUuaWN2UmlnaHQ9WmU+PjIzJjEyNyx4ZS5ncmJpdERpYWc9WmU+PjMwJjMseGUuaWN2VG9wPTEyNyZWZSx4ZS5pY3ZCb3R0b209VmU+PjcmMTI3LHhlLmljdkRpYWc9VmU+PjE0JjEyNyx4ZS5kZ0RpYWc9VmU+PjIxJjE1LHhlLmljdkZvcmU9MTI3JlVl''@;'; put 'put ''LHhlLmljdkJhY2s9VWU+PjcmMTI3LHhlLmZzeEJ1dHRvbj1VZT4+MTQmMSx4ZX0oSCwwLDAsWCksd2V9fSwyMjU6e246IkludGVyZmFjZUhkciIsZjpmdW5jdGlvbiBZcChILHJlKXtyZXR1cm4gMD09PXJlfHxILnJlYWRfc2hpZnQoMiksMTIwMH19LDIyNjp7bjoiSW50ZXJmYWNlRW5kIixm''@;'; put 'put ''Ok9sfSwyMjc6e246IlNYVlMifSwyMjk6e246Ik1lcmdlQ2VsbHMiLGY6ZnVuY3Rpb24gZm0oSCxyZSl7Zm9yKHZhciBYPVtdLHdlPUgucmVhZF9zaGlmdCgyKTt3ZS0tOylYLnB1c2goRTQoSCkpO3JldHVybiBYfX0sMjMzOntuOiJCa0hpbSJ9LDIzNTp7bjoiTXNvRHJhd2luZ0dyb3VwIn0s''@;'; put 'put ''MjM2OntuOiJNc29EcmF3aW5nIn0sMjM3OntuOiJNc29EcmF3aW5nU2VsZWN0aW9uIn0sMjM5OntuOiJQaG9uZXRpY0luZm8ifSwyNDA6e246IlN4UnVsZSJ9LDI0MTp7bjoiU1hFeCJ9LDI0Mjp7bjoiU3hGaWx0In0sMjQ0OntuOiJTeERYRiJ9LDI0NTp7bjoiU3hJdG0ifSwyNDY6e246IlN4''@;'; put 'put ''TmFtZSJ9LDI0Nzp7bjoiU3hTZWxlY3QifSwyNDg6e246IlNYUGFpciJ9LDI0OTp7bjoiU3hGbWxhIn0sMjUxOntuOiJTeEZvcm1hdCJ9LDI1Mjp7bjoiU1NUIixmOmZ1bmN0aW9uIHYzKEgscmUpe2Zvcih2YXIgWD1ILmwrcmUsd2U9SC5yZWFkX3NoaWZ0KDQpLHhlPUgucmVhZF9zaGlmdCg0''@;'; put 'put ''KSxGZT1bXSxaZT0wO1plIT14ZSYmSC5sPFg7KytaZSlGZS5wdXNoKHRtKEgpKTtyZXR1cm4gRmUuQ291bnQ9d2UsRmUuVW5pcXVlPXhlLEZlfX0sMjUzOntuOiJMYWJlbFNzdCIsZjpmdW5jdGlvbiBsbShIKXt2YXIgcmU9WmMoSCk7cmV0dXJuIHJlLmlzc3Q9SC5yZWFkX3NoaWZ0KDQpLHJl''@;'; put 'put ''fX0sMjU1OntuOiJFeHRTU1QiLGY6ZnVuY3Rpb24gV2UoSCxyZSl7dmFyIFg9e307cmV0dXJuIFguZHNzdD1ILnJlYWRfc2hpZnQoMiksSC5sKz1yZS0yLFh9fSwyNTY6e246IlNYVkRFeCJ9LDI1OTp7bjoiU1hGb3JtdWxhIn0sMjkwOntuOiJTWERCRXgifSwzMTE6e246IlJSREluc0RlbCJ9''@;'; put 'put ''LDMxMjp7bjoiUlJESGVhZCJ9LDMxNTp7bjoiUlJEQ2hnQ2VsbCJ9LDMxNzp7bjoiUlJUYWJJZCIsZjptM30sMzE4OntuOiJSUkRSZW5TaGVldCJ9LDMxOTp7bjoiUlJTb3J0In0sMzIwOntuOiJSUkRNb3ZlIn0sMzMwOntuOiJSUkZvcm1hdCJ9LDMzMTp7bjoiUlJBdXRvRm10In0sMzMzOntu''@;'; put 'put ''OiJSUkluc2VydFNoIn0sMzM0OntuOiJSUkRNb3ZlQmVnaW4ifSwzMzU6e246IlJSRE1vdmVFbmQifSwzMzY6e246IlJSREluc0RlbEJlZ2luIn0sMzM3OntuOiJSUkRJbnNEZWxFbmQifSwzMzg6e246IlJSRENvbmZsaWN0In0sMzM5OntuOiJSUkREZWZOYW1lIn0sMzQwOntuOiJSUkRSc3RF''@;'; put 'put ''dHhwIn0sMzUxOntuOiJMUm5nIn0sMzUyOntuOiJVc2VzRUxGcyIsZjpKb30sMzUzOntuOiJEU0YiLGY6T2x9LDQwMTp7bjoiQ1VzciJ9LDQwMjp7bjoiQ2JVc3IifSw0MDM6e246IlVzckluZm8ifSw0MDQ6e246IlVzckV4Y2wifSw0MDU6e246IkZpbGVMb2NrIn0sNDA2OntuOiJSUkRJbmZv''@;'; put 'put ''In0sNDA3OntuOiJCQ1VzcnMifSw0MDg6e246IlVzckNoayJ9LDQyNTp7bjoiVXNlckJWaWV3In0sNDI2OntuOiJVc2VyU1ZpZXdCZWdpbiJ9LDQyNzp7bjoiVXNlclNWaWV3RW5kIn0sNDI4OntuOiJSUkRVc2VyVmlldyJ9LDQyOTp7bjoiUXNpIn0sNDMwOntuOiJTdXBCb29rIixmOmZ1bmN0''@;'; put 'put ''aW9uIHg5KEgscmUsWCl7dmFyIHdlPUgubCtyZSx4ZT1ILnJlYWRfc2hpZnQoMiksRmU9SC5yZWFkX3NoaWZ0KDIpO2lmKFguc2JjY2g9RmUsMTAyNT09RmV8fDE0ODQ5PT1GZSlyZXR1cm5bRmUseGVdO2lmKEZlPDF8fEZlPjI1NSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgU3VwQm9v''@;'; put 'put ''ayB0eXBlOiAiK0ZlKTtmb3IodmFyIFplPWpjKEgsRmUpLFZlPVtdO3dlPkgubDspVmUucHVzaChmZihIKSk7cmV0dXJuW0ZlLHhlLFplLFZlXX19LDQzMTp7bjoiUHJvdDRSZXYiLGY6Sm99LDQzMjp7bjoiQ29uZEZtdCJ9LDQzMzp7bjoiQ0YifSw0MzQ6e246IkRWYWwifSw0Mzc6e246IkRD''@;'; put 'put ''b25CaW4ifSw0Mzg6e246IlR4TyIsZjpmdW5jdGlvbiBJNChILHJlLFgpe3ZhciB3ZT1ILmwseGU9IiIsRmU9LTE7dHJ5e0gubCs9NCwtMT09WzAsNSw3LDExLDEyLDE0XS5pbmRleE9mKChYLmxhc3RvYmp8fHtjbW86WzAsMF19KS5jbW9bMV0pP0gubCs9NjpmdW5jdGlvbiBubShIKXt2YXIg''@;'; put 'put ''cmU9SC5yZWFkX3NoaWZ0KDEpO0gubCsrO3ZhciBYPUgucmVhZF9zaGlmdCgyKTtILmwrPTJ9KEgpO3ZhciBVZT1ILnJlYWRfc2hpZnQoMik7SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgyKTt2YXIgSXQ9SC5yZWFkX3NoaWZ0KDIpO0gubCs9SXQ7Zm9yKHZhciBQdD0xO1B0PEgu''@;'; put 'put ''bGVucy5sZW5ndGgtMTsrK1B0KXtpZihILmwtd2UhPUgubGVuc1tQdF0pdGhyb3cgbmV3IEVycm9yKCJUeE86IGJhZCBjb250aW51ZSByZWNvcmQiKTt2YXIgUXQ9SFtILmxdO2lmKCh4ZSs9amMoSCxILmxlbnNbUHQrMV0tSC5sZW5zW1B0XS0xKSkubGVuZ3RoPj0oUXQ/VWU6MipVZSkpYnJl''@;'; put 'put ''YWt9aWYoeGUubGVuZ3RoIT09VWUmJnhlLmxlbmd0aCE9PTIqVWUpdGhyb3cgbmV3IEVycm9yKCJjY2hUZXh0OiAiK1VlKyIgIT0gIit4ZS5sZW5ndGgpO3JldHVybiBILmw9d2UrcmUse3Q6eGUsaWZudDpGZX19Y2F0Y2goQ24pe3JldHVybiBILmw9d2UrcmUse3Q6eGUsaWZudDpGZX19fX0s''@;'; put 'put ''NDM5OntuOiJSZWZyZXNoQWxsIixmOkpvfSw0NDA6e246IkhMaW5rIixmOmZ1bmN0aW9uIGxFKEgscmUpe3ZhciBYPUU0KEgpO0gubCs9MTY7dmFyIHdlPWZ1bmN0aW9uIHkxKEgscmUpe3ZhciBYPUgubCtyZSx3ZT1ILnJlYWRfc2hpZnQoNCk7aWYoMiE9PXdlKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''VW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246ICIrd2UpO3ZhciB4ZT1ILnJlYWRfc2hpZnQoMik7SC5sKz0yO3ZhciBGZSxaZSxWZSxVZSxJdCxQdCxTdD0iIjsxNiZ4ZSYmKEZlPVM0KEgpKSwxMjgmeGUmJihaZT1TNChIKSksMjU3PT0oMjU3JnhlKSYmKFZlPVM0KEgpKSwxPT0oMjU3Jnhl''@;'; put 'put ''KSYmKFVlPWZ1bmN0aW9uIFQ4KEgscmUpe3ZhciBYPUgucmVhZF9zaGlmdCgxNik7c3dpdGNoKFgpe2Nhc2UiZTBjOWVhNzlmOWJhY2UxMThjODIwMGFhMDA0YmE5MGIiOnJldHVybiBmdW5jdGlvbiB4OChIKXt2YXIgcmU9SC5yZWFkX3NoaWZ0KDQpLFg9SC5sLHdlPSExO3JlPjI0JiYoSC5s''@;'; put 'put ''Kz1yZS0yNCwiNzk1ODgxZjQzYjFkN2Y0OGFmMmM4MjVkYzQ4NTI3NjMiPT09SC5yZWFkX3NoaWZ0KDE2KSYmKHdlPSEwKSxILmw9WCk7dmFyIHhlPUgucmVhZF9zaGlmdCgod2U/cmUtMjQ6cmUpPj4xLCJ1dGYxNmxlIikucmVwbGFjZShULCIiKTtyZXR1cm4gd2UmJihILmwrPTI0KSx4ZX0o''@;'; put 'put ''SCk7Y2FzZSIwMzAzMDAwMDAwMDAwMDAwYzAwMDAwMDAwMDAwMDA0NiI6cmV0dXJuIGZ1bmN0aW9uIHJtKEgpe2Zvcih2YXIgcmU9SC5yZWFkX3NoaWZ0KDIpLFg9IiI7cmUtLSA+MDspWCs9Ii4uLyI7dmFyIHdlPUgucmVhZF9zaGlmdCgwLCJscHN0ci1hbnNpIik7aWYoSC5sKz0yLDU3MDA1''@;'; put 'put ''IT1ILnJlYWRfc2hpZnQoMikpdGhyb3cgbmV3IEVycm9yKCJCYWQgRmlsZU1vbmlrZXIiKTtpZigwPT09SC5yZWFkX3NoaWZ0KDQpKXJldHVybiBYK3dlLnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgRmU9SC5yZWFkX3NoaWZ0KDQpO2lmKDMhPUgucmVhZF9zaGlmdCgyKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkJhZCBGaWxlTW9uaWtlciIpO3JldHVybiBYK0gucmVhZF9zaGlmdChGZT4+MSwidXRmMTZsZSIpLnJlcGxhY2UoVCwiIil9KEgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNb25pa2VyICIrWCl9fShIKSksOCZ4ZSYmKFN0PVM0KEgpKSwzMiZ4ZSYmKEl0PUgu''@;'; put 'put ''cmVhZF9zaGlmdCgxNikpLDY0JnhlJiYoUHQ9TTgoSCkpLEgubD1YO3ZhciBRdD1aZXx8VmV8fFVlfHwiIjtRdCYmU3QmJihRdCs9IiMiK1N0KSxRdHx8KFF0PSIjIitTdCksMiZ4ZSYmIi8iPT1RdC5jaGFyQXQoMCkmJiIvIiE9UXQuY2hhckF0KDEpJiYoUXQ9ImZpbGU6Ly8iK1F0KTt2YXIg''@;'; put 'put ''YW49e1RhcmdldDpRdH07cmV0dXJuIEl0JiYoYW4uZ3VpZD1JdCksUHQmJihhbi50aW1lPVB0KSxGZSYmKGFuLlRvb2x0aXA9RmUpLGFufShILHJlLTI0KTtyZXR1cm5bWCx3ZV19fSw0NDE6e246IkxlbCJ9LDQ0Mjp7bjoiQ29kZU5hbWUiLGY6ZmZ9LDQ0Mzp7bjoiU1hGREJUeXBlIn0sNDQ0''@;'; put 'put ''OntuOiJQcm90NFJldlBhc3MiLGY6ZTF9LDQ0NTp7bjoiT2JOb01hY3JvcyJ9LDQ0Njp7bjoiRHYifSw0NDg6e246IkV4Y2VsOUZpbGUiLGY6T2x9LDQ0OTp7bjoiUmVjYWxjSWQiLGY6ZnVuY3Rpb24gQTMoSCl7cmV0dXJuIEgucmVhZF9zaGlmdCgyKSxILnJlYWRfc2hpZnQoNCl9LHI6Mn0s''@;'; put 'put ''NDUwOntuOiJFbnRFeFUyIixmOk9sfSw1MTI6e246IkRpbWVuc2lvbnMiLGY6d2N9LDUxMzp7bjoiQmxhbmsiLGY6WlJ9LDUxNTp7bjoiTnVtYmVyIixmOmZ1bmN0aW9uIFBSKEgscmUsWCl7WC5iaWZmZ3Vlc3MmJjI9PVguYmlmZiYmKFguYmlmZj01KTt2YXIgd2U9WmMoSCkseGU9ZTIoSCk7''@;'; put 'put ''cmV0dXJuIHdlLnZhbD14ZSx3ZX19LDUxNjp7bjoiTGFiZWwiLGY6ZnVuY3Rpb24gS3AoSCxyZSxYKXtYLmJpZmZndWVzcyYmMj09WC5iaWZmJiYoWC5iaWZmPTUpO3ZhciB4ZT1aYyhIKTsyPT1YLmJpZmYmJkgubCsrO3ZhciBGZT1mZihILDAsWCk7cmV0dXJuIHhlLnZhbD1GZSx4ZX19LDUx''@;'; put 'put ''Nzp7bjoiQm9vbEVyciIsZjpFOX0sNTE5OntuOiJTdHJpbmciLGY6a2J9LDUyMDp7bjoiUm93IixmOmZ1bmN0aW9uIE90KEgpe3ZhciByZT17fTtyZS5yPUgucmVhZF9zaGlmdCgyKSxyZS5jPUgucmVhZF9zaGlmdCgyKSxyZS5jbnQ9SC5yZWFkX3NoaWZ0KDIpLXJlLmM7dmFyIFg9SC5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpO0gubCs9NDt2YXIgd2U9SC5yZWFkX3NoaWZ0KDEpO0gubCs9MTt2YXIgeGU9SC5yZWFkX3NoaWZ0KDIpO3JldHVybiByZS5peGZlPTQwOTUmeGUsNyZ3ZSYmKHJlLmxldmVsPTcmd2UpLDMyJndlJiYocmUuaGlkZGVuPSEwKSw2NCZ3ZSYmKHJlLmhwdD1YLzIwKSxyZX19LDUy''@;'; put 'put ''Mzp7bjoiSW5kZXgifSw1NDU6e246IkFycmF5IixmOkVpfSw1NDk6e246IkRlZmF1bHRSb3dIZWlnaHQiLGY6QnN9LDU2Njp7bjoiVGFibGUifSw1NzQ6e246IldpbmRvdzIiLGY6ZnVuY3Rpb24gbUcoSCxyZSxYKXtpZihYJiZYLmJpZmY+PTImJlguYmlmZjw1KXJldHVybnt9O3ZhciB3ZT1I''@;'; put 'put ''LnJlYWRfc2hpZnQoMik7cmV0dXJue1JUTDo2NCZ3ZSxncmlkOiEhKDImd2UpLGZyb3plbjohISg4JndlKX19fSw2Mzg6e246IlJLIixmOmZ1bmN0aW9uICRwKEgpe3ZhciByZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMiksd2U9aW0oSCk7cmV0dXJue3I6cmUsYzpYLGl4ZmU6''@;'; put 'put ''d2VbMF0scmtudW06d2VbMV19fX0sNjU5OntuOiJTdHlsZSIsZjpmdW5jdGlvbiB0RShILHJlLFgpe3JldHVybiBILmwrPXJlLHt9fX0sMTA0ODp7bjoiQmlnTmFtZSJ9LDEwNTQ6e246IkZvcm1hdCIsZjpmdW5jdGlvbiBSUihILHJlLFgpe3JldHVybltILnJlYWRfc2hpZnQoMiksazQoSCww''@;'; put 'put ''LFgpXX19LDEwODQ6e246IkNvbnRpbnVlQmlnTmFtZSJ9LDEyMTI6e246IlNockZtbGEiLGY6ZnVuY3Rpb24gQjgoSCxyZSxYKXt2YXIgd2U9R3AoSCk7SC5sKys7dmFyIHhlPUgucmVhZF9zaGlmdCgxKTtyZXR1cm5bSG0oSCxyZS09OCxYKSx4ZSx3ZV19fSwyMDQ4OntuOiJITGlua1Rvb2x0''@;'; put 'put ''aXAiLGY6ZnVuY3Rpb24gSFIoSCxyZSl7SC5yZWFkX3NoaWZ0KDIpO3ZhciBYPUU0KEgpLHdlPUgucmVhZF9zaGlmdCgocmUtMTApLzIsImRiY3MtY29udCIpO3JldHVybltYLHdlPXdlLnJlcGxhY2UoVCwiIildfX0sMjA0OTp7bjoiV2ViUHViIn0sMjA1MDp7bjoiUXNpU1hUYWcifSwyMDUx''@;'; put 'put ''OntuOiJEQlF1ZXJ5RXh0In0sMjA1Mjp7bjoiRXh0U3RyaW5nIn0sMjA1Mzp7bjoiVHh0UXJ5In0sMjA1NDp7bjoiUXNpciJ9LDIwNTU6e246IlFzaWYifSwyMDU2OntuOiJSUkRUUVNJRiJ9LDIwNTc6e246IkJPRiIsZjpxdX0sMjA1ODp7bjoiT2xlRGJDb25uIn0sMjA1OTp7bjoiV09wdCJ9''@;'; put 'put ''LDIwNjA6e246IlNYVmlld0V4In0sMjA2MTp7bjoiU1hUSCJ9LDIwNjI6e246IlNYUElFeCJ9LDIwNjM6e246IlNYVkRURXgifSwyMDY0OntuOiJTWFZpZXdFeDkifSwyMDY2OntuOiJDb250aW51ZUZydCJ9LDIwNjc6e246IlJlYWxUaW1lRGF0YSJ9LDIxMjg6e246IkNoYXJ0RnJ0SW5mbyJ9''@;'; put 'put ''LDIxMjk6e246IkZydFdyYXBwZXIifSwyMTMwOntuOiJTdGFydEJsb2NrIn0sMjEzMTp7bjoiRW5kQmxvY2sifSwyMTMyOntuOiJTdGFydE9iamVjdCJ9LDIxMzM6e246IkVuZE9iamVjdCJ9LDIxMzQ6e246IkNhdExhYiJ9LDIxMzU6e246IllNdWx0In0sMjEzNjp7bjoiU1hWaWV3TGluayJ9''@;'; put 'put ''LDIxMzc6e246IlBpdm90Q2hhcnRCaXRzIn0sMjEzODp7bjoiRnJ0Rm9udExpc3QifSwyMTQ2OntuOiJTaGVldEV4dCJ9LDIxNDc6e246IkJvb2tFeHQiLHI6MTJ9LDIxNDg6e246IlNYQWRkbCJ9LDIxNDk6e246IkNyRXJyIn0sMjE1MDp7bjoiSEZQaWN0dXJlIn0sMjE1MTp7bjoiRmVhdEhk''@;'; put 'put ''ciIsZjpPbH0sMjE1Mjp7bjoiRmVhdCJ9LDIxNTQ6e246IkRhdGFMYWJFeHQifSwyMTU1OntuOiJEYXRhTGFiRXh0Q29udGVudHMifSwyMTU2OntuOiJDZWxsV2F0Y2gifSwyMTYxOntuOiJGZWF0SGRyMTEifSwyMTYyOntuOiJGZWF0dXJlMTEifSwyMTY0OntuOiJEcm9wRG93bk9iaklkcyJ9''@;'; put 'put ''LDIxNjU6e246IkNvbnRpbnVlRnJ0MTEifSwyMTY2OntuOiJEQ29ubiJ9LDIxNjc6e246Ikxpc3QxMiJ9LDIxNjg6e246IkZlYXR1cmUxMiJ9LDIxNjk6e246IkNvbmRGbXQxMiJ9LDIxNzA6e246IkNGMTIifSwyMTcxOntuOiJDRkV4In0sMjE3Mjp7bjoiWEZDUkMiLGY6ZnVuY3Rpb24gUDgo''@;'; put 'put ''SCl7SC5sKz0yO3ZhciByZT17Y3hmczowLGNyYzowfTtyZXR1cm4gcmUuY3hmcz1ILnJlYWRfc2hpZnQoMikscmUuY3JjPUgucmVhZF9zaGlmdCg0KSxyZX0scjoxMn0sMjE3Mzp7bjoiWEZFeHQiLGY6ZnVuY3Rpb24gczYoSCxyZSl7SC5sKz0yO3ZhciB3ZT1ILnJlYWRfc2hpZnQoMik7SC5s''@;'; put 'put ''Kz0yO2Zvcih2YXIgeGU9SC5yZWFkX3NoaWZ0KDIpLEZlPVtdO3hlLS0gPjA7KUZlLnB1c2goWGIoSCkpO3JldHVybntpeGZlOndlLGV4dDpGZX19LHI6MTJ9LDIxNzQ6e246IkF1dG9GaWx0ZXIxMiJ9LDIxNzU6e246IkNvbnRpbnVlRnJ0MTIifSwyMTgwOntuOiJNRFRJbmZvIn0sMjE4MTp7''@;'; put 'put ''bjoiTURYU3RyIn0sMjE4Mjp7bjoiTURYVHVwbGUifSwyMTgzOntuOiJNRFhTZXQifSwyMTg0OntuOiJNRFhQcm9wIn0sMjE4NTp7bjoiTURYS1BJIn0sMjE4Njp7bjoiTURCIn0sMjE4Nzp7bjoiUExWIn0sMjE4ODp7bjoiQ29tcGF0MTIiLGY6Sm8scjoxMn0sMjE4OTp7bjoiRFhGIn0sMjE5''@;'; put 'put ''MDp7bjoiVGFibGVTdHlsZXMiLHI6MTJ9LDIxOTE6e246IlRhYmxlU3R5bGUifSwyMTkyOntuOiJUYWJsZVN0eWxlRWxlbWVudCJ9LDIxOTQ6e246IlN0eWxlRXh0In0sMjE5NTp7bjoiTmFtZVB1Ymxpc2gifSwyMTk2OntuOiJOYW1lQ210IixmOmZ1bmN0aW9uIFI4KEgscmUsWCl7aWYoIShY''@;'; put 'put ''LmJpZmY8OCkpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoMikseGU9SC5yZWFkX3NoaWZ0KDIpO3JldHVybltqYyhILHdlLFgpLGpjKEgseGUsWCldfUgubCs9cmV9LHI6MTJ9LDIxOTc6e246IlNvcnREYXRhIn0sMjE5ODp7bjoiVGhlbWUiLGY6ZnVuY3Rpb24gVkUoSCxyZSxYKXt2YXIgd2U9SC5s''@;'; put 'put ''K3JlO2lmKDEyNDIyNiE9PUgucmVhZF9zaGlmdCg0KSl7aWYoIVguY2VsbFN0eWxlcylyZXR1cm4gdm9pZChILmw9d2UpO3ZhciBaZSxGZT1ILnNsaWNlKEgubCk7SC5sPXdlO3RyeXtaZT12bihGZSx7dHlwZToiYXJyYXkifSl9Y2F0Y2goVWUpe3JldHVybn12YXIgVmU9VW4oWmUsInRoZW1l''@;'; put 'put ''L3RoZW1lL3RoZW1lMS54bWwiLCEwKTtpZihWZSlyZXR1cm4ga20oVmUsWCl9fSxyOjEyfSwyMTk5OntuOiJHVUlEVHlwZUxpYiJ9LDIyMDA6e246IkZuR3JwMTIifSwyMjAxOntuOiJOYW1lRm5HcnAxMiJ9LDIyMDI6e246Ik1UUlNldHRpbmdzIixmOmZ1bmN0aW9uIGNtKEgpe3JldHVyblsw''@;'; put 'put ''IT09SC5yZWFkX3NoaWZ0KDQpLDAhPT1ILnJlYWRfc2hpZnQoNCksSC5yZWFkX3NoaWZ0KDQpXX0scjoxMn0sMjIwMzp7bjoiQ29tcHJlc3NQaWN0dXJlcyIsZjpPbH0sMjIwNDp7bjoiSGVhZGVyRm9vdGVyIn0sMjIwNTp7bjoiQ3J0TGF5b3V0MTIifSwyMjA2OntuOiJDcnRNbEZydCJ9LDIy''@;'; put 'put ''MDc6e246IkNydE1sRnJ0Q29udGludWUifSwyMjExOntuOiJGb3JjZUZ1bGxDYWxjdWxhdGlvbiIsZjpmdW5jdGlvbiBCbihIKXt2YXIgcmU9ZnVuY3Rpb24gRDgoSCl7dmFyIHJlPUgucmVhZF9zaGlmdCgyKSxYPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gSC5sKz04LHt0eXBlOnJlLGZsYWdz''@;'; put 'put ''Olh9fShIKTtpZigyMjExIT1yZS50eXBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBGdXR1cmUgUmVjb3JkICIrcmUudHlwZSk7cmV0dXJuIDAhPT1ILnJlYWRfc2hpZnQoNCl9fSwyMjEyOntuOiJTaGFwZVByb3BzU3RyZWFtIn0sMjIxMzp7bjoiVGV4dFByb3BzU3RyZWFtIn0sMjIxNDp7''@;'; put 'put ''bjoiUmljaFRleHRTdHJlYW0ifSwyMjE1OntuOiJDcnRMYXlvdXQxMkEifSw0MDk3OntuOiJVbml0cyJ9LDQwOTg6e246IkNoYXJ0In0sNDA5OTp7bjoiU2VyaWVzIn0sNDEwMjp7bjoiRGF0YUZvcm1hdCJ9LDQxMDM6e246IkxpbmVGb3JtYXQifSw0MTA1OntuOiJNYXJrZXJGb3JtYXQifSw0''@;'; put 'put ''MTA2OntuOiJBcmVhRm9ybWF0In0sNDEwNzp7bjoiUGllRm9ybWF0In0sNDEwODp7bjoiQXR0YWNoZWRMYWJlbCJ9LDQxMDk6e246IlNlcmllc1RleHQifSw0MTE2OntuOiJDaGFydEZvcm1hdCJ9LDQxMTc6e246IkxlZ2VuZCJ9LDQxMTg6e246IlNlcmllc0xpc3QifSw0MTE5OntuOiJCYXIi''@;'; put 'put ''fSw0MTIwOntuOiJMaW5lIn0sNDEyMTp7bjoiUGllIn0sNDEyMjp7bjoiQXJlYSJ9LDQxMjM6e246IlNjYXR0ZXIifSw0MTI0OntuOiJDcnRMaW5lIn0sNDEyNTp7bjoiQXhpcyJ9LDQxMjY6e246IlRpY2sifSw0MTI3OntuOiJWYWx1ZVJhbmdlIn0sNDEyODp7bjoiQ2F0U2VyUmFuZ2UifSw0''@;'; put 'put ''MTI5OntuOiJBeGlzTGluZSJ9LDQxMzA6e246IkNydExpbmsifSw0MTMyOntuOiJEZWZhdWx0VGV4dCJ9LDQxMzM6e246IlRleHQifSw0MTM0OntuOiJGb250WCIsZjplMX0sNDEzNTp7bjoiT2JqZWN0TGluayJ9LDQxNDY6e246IkZyYW1lIn0sNDE0Nzp7bjoiQmVnaW4ifSw0MTQ4OntuOiJF''@;'; put 'put ''bmQifSw0MTQ5OntuOiJQbG90QXJlYSJ9LDQxNTQ6e246IkNoYXJ0M2QifSw0MTU2OntuOiJQaWNGIn0sNDE1Nzp7bjoiRHJvcEJhciJ9LDQxNTg6e246IlJhZGFyIn0sNDE1OTp7bjoiU3VyZiJ9LDQxNjA6e246IlJhZGFyQXJlYSJ9LDQxNjE6e246IkF4aXNQYXJlbnQifSw0MTYzOntuOiJM''@;'; put 'put ''ZWdlbmRFeGNlcHRpb24ifSw0MTY0OntuOiJTaHRQcm9wcyIsZjpmdW5jdGlvbiBqUihILHJlLFgpe3ZhciB3ZT17YXJlYTohMX07aWYoNSE9WC5iaWZmKXJldHVybiBILmwrPXJlLHdlO3ZhciB4ZT1ILnJlYWRfc2hpZnQoMSk7cmV0dXJuIEgubCs9MywxNiZ4ZSYmKHdlLmFyZWE9ITApLHdl''@;'; put 'put ''fX0sNDE2NTp7bjoiU2VyVG9DcnQifSw0MTY2OntuOiJBeGVzVXNlZCJ9LDQxNjg6e246IlNCYXNlUmVmIn0sNDE3MDp7bjoiU2VyUGFyZW50In0sNDE3MTp7bjoiU2VyQXV4VHJlbmQifSw0MTc0OntuOiJJRm10UmVjb3JkIn0sNDE3NTp7bjoiUG9zIn0sNDE3Njp7bjoiQWxSdW5zIn0sNDE3''@;'; put 'put ''Nzp7bjoiQlJBSSJ9LDQxODc6e246IlNlckF1eEVyckJhciJ9LDQxODg6e246IkNscnRDbGllbnQiLGY6ZnVuY3Rpb24gdUUoSCl7Zm9yKHZhciByZT1ILnJlYWRfc2hpZnQoMiksWD1bXTtyZS0tID4wOylYLnB1c2goSTgoSCkpO3JldHVybiBYfX0sNDE4OTp7bjoiU2VyRm10In0sNDE5MTp7''@;'; put 'put ''bjoiQ2hhcnQzREJhclNoYXBlIn0sNDE5Mjp7bjoiRmJpIn0sNDE5Mzp7bjoiQm9wUG9wIn0sNDE5NDp7bjoiQXhjRXh0In0sNDE5NTp7bjoiRGF0In0sNDE5Njp7bjoiUGxvdEdyb3d0aCJ9LDQxOTc6e246IlNJSW5kZXgifSw0MTk4OntuOiJHZWxGcmFtZSJ9LDQxOTk6e246IkJvcFBvcEN1''@;'; put 'put ''c3RvbSJ9LDQyMDA6e246IkZiaTIifSwwOntuOiJEaW1lbnNpb25zIixmOndjfSwxOntuOiJCSUZGMkJMQU5LIn0sMjp7bjoiQklGRjJJTlQiLGY6ZnVuY3Rpb24geUcoSCl7dmFyIHJlPVpjKEgpOysrSC5sO3ZhciBYPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gcmUudD0ibiIscmUudmFsPVgs''@;'; put 'put ''cmV9fSwzOntuOiJCSUZGMk5VTSIsZjpmdW5jdGlvbiBBRyhIKXt2YXIgcmU9WmMoSCk7KytILmw7dmFyIFg9ZTIoSCk7cmV0dXJuIHJlLnQ9Im4iLHJlLnZhbD1YLHJlfX0sNDp7bjoiQklGRjJTVFIiLGY6ZnVuY3Rpb24gZEUoSCxyZSxYKXtYLmJpZmZndWVzcyYmNT09WC5iaWZmJiYoWC5i''@;'; put 'put ''aWZmPTIpO3ZhciB3ZT1aYyhIKTsrK0gubDt2YXIgeGU9azQoSCwwLFgpO3JldHVybiB3ZS50PSJzdHIiLHdlLnZhbD14ZSx3ZX19LDU6e246IkJvb2xFcnIiLGY6RTl9LDc6e246IlN0cmluZyIsZjpmdW5jdGlvbiBHUihIKXt2YXIgcmU9SC5yZWFkX3NoaWZ0KDEpO3JldHVybiAwPT09cmU/''@;'; put 'put ''KEgubCsrLCIiKTpILnJlYWRfc2hpZnQocmUsInNiY3MtY29udCIpfX0sODp7bjoiQklGRjJST1cifSw5OntuOiJCT0YiLGY6cXV9LDExOntuOiJJbmRleCJ9LDIyOntuOiJFeHRlcm5Db3VudCIsZjplMX0sMzA6e246IkJJRkYyRk9STUFUIixmOnZifSwzMTp7bjoiQklGRjJGTVRDTlQifSwz''@;'; put 'put ''Mjp7bjoiQklGRjJDT0xJTkZPIn0sMzM6e246IkFycmF5IixmOkVpfSwzNjp7bjoiQ09MV0lEVEgifSwzNzp7bjoiRGVmYXVsdFJvd0hlaWdodCIsZjpCc30sNTA6e246IkJJRkYyRk9OVFhUUkEiLGY6ZnVuY3Rpb24gRDkoSCxyZSl7SC5sKz02LEgubCs9MixILmwrPTEsSC5sKz0zLEgubCs9''@;'; put 'put ''MSxILmwrPXJlLTEzfX0sNjI6e246IkJJRkYyV0lORE9XMiJ9LDUyOntuOiJEREVPYmpOYW1lIn0sNjc6e246IkJJRkYyWEYifSw2ODp7bjoiQklGRjJYRklOREVYIixmOmUxfSw2OTp7bjoiQklGRjJGT05UQ0xSIn0sODY6e246IkJJRkY0Rk1UQ05UIn0sMTI2OntuOiJSSyJ9LDEyNzp7bjoi''@;'; put 'put ''SW1EYXRhIixmOmZ1bmN0aW9uIHpSKEgpe3ZhciByZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMiksd2U9SC5yZWFkX3NoaWZ0KDQpLHhlPXtmbXQ6cmUsZW52OlgsbGVuOndlLGRhdGE6SC5zbGljZShILmwsSC5sK3dlKX07cmV0dXJuIEgubCs9d2UseGV9fSwxMzU6e246IkFk''@;'; put 'put ''ZGluIn0sMTM2OntuOiJFZGcifSwxMzc6e246IlB1YiJ9LDE0NTp7bjoiU3ViIn0sMTQ4OntuOiJMSFJlY29yZCJ9LDE0OTp7bjoiTEhOR3JhcGgifSwxNTA6e246IlNvdW5kIn0sMTY5OntuOiJDb29yZExpc3QifSwxNzE6e246IkdDVyJ9LDE4ODp7bjoiU2hyRm1sYSJ9LDE5MTp7bjoiVG9v''@;'; put 'put ''bGJhckhkciJ9LDE5Mjp7bjoiVG9vbGJhckVuZCJ9LDE5NDp7bjoiQWRkTWVudSJ9LDE5NTp7bjoiRGVsTWVudSJ9LDIxNDp7bjoiUlN0cmluZyIsZjpmdW5jdGlvbiBGOChILHJlLFgpe3ZhciB3ZT1ILmwrcmUseGU9WmMoSCksRmU9SC5yZWFkX3NoaWZ0KDIpLFplPWpjKEgsRmUsWCk7cmV0''@;'; put 'put ''dXJuIEgubD13ZSx4ZS50PSJzdHIiLHhlLnZhbD1aZSx4ZX19LDIyMzp7bjoiVUREZXNjIn0sMjM0OntuOiJUYWJJZENvbmYifSwzNTQ6e246IlhMNU1vZGlmeSJ9LDQyMTp7bjoiRmlsZVNoYXJpbmcyIn0sNTE4OntuOiJGb3JtdWxhIixmOnlffSw1MjE6e246IkJPRiIsZjpxdX0sNTM2Ontu''@;'; put 'put ''OiJMYmwiLGY6b0V9LDU0Nzp7bjoiRXh0ZXJuTmFtZSIsZjpyRX0sNTYxOntuOiJGb250In0sNTc5OntuOiJCSUZGM1hGIn0sMTAzMDp7bjoiRm9ybXVsYSIsZjp5X30sMTAzMzp7bjoiQk9GIixmOnF1fSwxMDkxOntuOiJCSUZGNFhGIn0sMjE1Nzp7bjoiRmVhdEluZm8ifSwyMTYzOntuOiJG''@;'; put 'put ''ZWF0SW5mbzExIn0sMjE3Nzp7bjoiU1hBZGRsMTIifSwyMjQwOntuOiJBdXRvV2ViUHViIn0sMjI0MTp7bjoiTGlzdE9iaiJ9LDIyNDI6e246Ikxpc3RGaWVsZCJ9LDIyNDM6e246Ikxpc3REViJ9LDIyNDQ6e246Ikxpc3RDb25kRm10In0sMjI0NTp7bjoiTGlzdENGIn0sMjI0Njp7bjoiRk1R''@;'; put 'put ''cnkifSwyMjQ3OntuOiJGTVNRcnkifSwyMjQ4OntuOiJQTFYifSwyMjQ5OntuOiJMbkV4dCJ9LDIyNTA6e246Ik1rckV4dCJ9LDIyNTE6e246IkNydENvb3B0In0sMjI2Mjp7bjoiRlJUQXJjaElkJCIscjoxMn0sMjkyODI6e319LEwzPV90KGlzLCJuIik7ZnVuY3Rpb24gbzAoSCxyZSxYLHdl''@;'; put 'put ''KXt2YXIgeGU9K3JlfHwrTDNbcmVdO2lmKCFpc05hTih4ZSkpe3ZhciBGZT13ZXx8KFh8fFtdKS5sZW5ndGh8fDAsWmU9SC5uZXh0KDQpO1plLndyaXRlX3NoaWZ0KDIseGUpLFplLndyaXRlX3NoaWZ0KDIsRmUpLEZlPjAmJmYyKFgpJiZILnB1c2goWCl9fWZ1bmN0aW9uIEFzKEgscmUsWCl7''@;'; put 'put ''cmV0dXJuIEh8fChIPXhpKDcpKSxILndyaXRlX3NoaWZ0KDIscmUpLEgud3JpdGVfc2hpZnQoMixYKSxILndyaXRlX3NoaWZ0KDIsMCksSC53cml0ZV9zaGlmdCgxLDApLEh9ZnVuY3Rpb24gakEoSCxyZSxYLHdlKXtpZihudWxsIT1yZS52KXN3aXRjaChyZS50KXtjYXNlImQiOmNhc2UibiI6''@;'; put 'put ''dmFyIHhlPSJkIj09cmUudD9jdChwbihyZS52KSk6cmUudjtyZXR1cm4gdm9pZCh4ZT09KDB8eGUpJiZ4ZT49MCYmeGU8NjU1MzY/bzAoSCwyLGZ1bmN0aW9uIFNiKEgscmUsWCl7dmFyIHdlPXhpKDkpO3JldHVybiBBcyh3ZSxILHJlKSx3ZS53cml0ZV9zaGlmdCgyLFgpLHdlfShYLHdlLHhl''@;'; put 'put ''KSk6bzAoSCwzLGZ1bmN0aW9uIHBFKEgscmUsWCl7dmFyIHdlPXhpKDE1KTtyZXR1cm4gQXMod2UsSCxyZSksd2Uud3JpdGVfc2hpZnQoOCxYLCJmIiksd2V9KFgsd2UseGUpKSk7Y2FzZSJiIjpjYXNlImUiOnJldHVybiB2b2lkIG8wKEgsNSxmdW5jdGlvbiBZYyhILHJlLFgsd2Upe3ZhciB4''@;'; put 'put ''ZT14aSg5KTtyZXR1cm4gQXMoeGUsSCxyZSksVzEoWCx3ZXx8ImIiLHhlKSx4ZX0oWCx3ZSxyZS52LHJlLnQpKTtjYXNlInMiOmNhc2Uic3RyIjpyZXR1cm4gdm9pZCBvMChILDQsZnVuY3Rpb24gUHUoSCxyZSxYKXt2YXIgd2U9eGkoOCsyKlgubGVuZ3RoKTtyZXR1cm4gQXMod2UsSCxyZSks''@;'; put 'put ''d2Uud3JpdGVfc2hpZnQoMSxYLmxlbmd0aCksd2Uud3JpdGVfc2hpZnQoWC5sZW5ndGgsWCwic2JjcyIpLHdlLmw8d2UubGVuZ3RoP3dlLnNsaWNlKDAsd2UubCk6d2V9KFgsd2UsKHJlLnZ8fCIiKS5zbGljZSgwLDI1NSkpKX1vMChILDEsQXMobnVsbCxYLHdlKSl9ZnVuY3Rpb24gVUcoSCxy''@;'; put 'put ''ZSxYLHdlLHhlKXt2YXIgRmU9MTYrcmMoeGUuY2VsbFhmcyx4ZS5jZWxsU3R5bGVYZnMscmUseGUpO2lmKG51bGwhPXJlLnZ8fHJlLmJmKWlmKHJlLmJmKW8wKEgsIkZvcm11bGEiLGZ1bmN0aW9uIFBHKEgscmUsWCx3ZSx4ZSl7dmFyIEZlPXpmKHJlLFgseGUpLFplPWZ1bmN0aW9uIEJHKEgp''@;'; put 'put ''e2lmKG51bGw9PUgpe3ZhciByZT14aSg4KTtyZXR1cm4gcmUud3JpdGVfc2hpZnQoMSwzKSxyZS53cml0ZV9zaGlmdCgxLDApLHJlLndyaXRlX3NoaWZ0KDIsMCkscmUud3JpdGVfc2hpZnQoMiwwKSxyZS53cml0ZV9zaGlmdCgyLDY1NTM1KSxyZX1yZXR1cm4gdWYoIm51bWJlciI9PXR5cGVv''@;'; put 'put ''ZiBIP0g6MCl9KEgudiksVmU9eGkoNik7VmUud3JpdGVfc2hpZnQoMiwzMyksVmUud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIFN0PXhpKEguYmYubGVuZ3RoKSxJdD0wO0l0PEguYmYubGVuZ3RoOysrSXQpU3RbSXRdPUguYmZbSXRdO3JldHVybiBWKFtGZSxaZSxWZSxTdF0pfShyZSxYLHdl''@;'; put 'put ''LDAsRmUpKTtlbHNlIHN3aXRjaChyZS50KXtjYXNlImQiOmNhc2UibiI6bzAoSCwiTnVtYmVyIixmdW5jdGlvbiB4NChILHJlLFgsd2Upe3ZhciB4ZT14aSgxNCk7cmV0dXJuIHpmKEgscmUsd2UseGUpLHVmKFgseGUpLHhlfShYLHdlLCJkIj09cmUudD9jdChwbihyZS52KSk6cmUudixGZSkp''@;'; put 'put ''O2JyZWFrO2Nhc2UiYiI6Y2FzZSJlIjpvMChILDUxNyxmdW5jdGlvbiBzbShILHJlLFgsd2UseGUsRmUpe3ZhciBaZT14aSg4KTtyZXR1cm4gemYoSCxyZSx3ZSxaZSksVzEoWCxGZSxaZSksWmV9KFgsd2UscmUudixGZSwwLHJlLnQpKTticmVhaztjYXNlInMiOmNhc2Uic3RyIjppZih4ZS5i''@;'; put 'put ''b29rU1NUKXt2YXIgVmU9RWQoeGUuU3RyaW5ncyxyZS52LHJlLlI/cmUucj10NihyZS5SKTpudWxsLHhlLnJldlN0cmluZ3MpO2lmKHJlLlIpZm9yKHZhciBVZT0wO1VlPHJlLlIubGVuZ3RoOysrVWUpcmUuUltVZV0ucyYmcmMoeGUuY2VsbFhmcyx4ZS5jZWxsU3R5bGVYZnMse3Q6Im4iLHY6''@;'; put 'put ''MCxzOnJlLlJbVWVdLnN9LHhlKTtvMChILCJMYWJlbFNzdCIsZnVuY3Rpb24gJE0oSCxyZSxYLHdlKXt2YXIgeGU9eGkoMTApO3JldHVybiB6ZihILHJlLHdlLHhlKSx4ZS53cml0ZV9zaGlmdCg0LFgpLHhlfShYLHdlLFZlLEZlKSl9ZWxzZSBvMChILCJMYWJlbCIsZnVuY3Rpb24gT1IoSCxy''@;'; put 'put ''ZSxYLHdlLHhlKXt2YXIgRmU9IXhlfHw4PT14ZS5iaWZmLFplPXhpKCtGZSs4KygxK0ZlKSpYLmxlbmd0aCk7cmV0dXJuIHpmKEgscmUsd2UsWmUpLFplLndyaXRlX3NoaWZ0KDIsWC5sZW5ndGgpLEZlJiZaZS53cml0ZV9zaGlmdCgxLDEpLFplLndyaXRlX3NoaWZ0KCgxK0ZlKSpYLmxlbmd0''@;'; put 'put ''aCxYLEZlPyJ1dGYxNmxlIjoic2JjcyIpLFplfShYLHdlLChyZS52fHwiIikuc2xpY2UoMCwyNTUpLEZlLHhlKSk7YnJlYWs7ZGVmYXVsdDpvMChILCJCbGFuayIsemYoWCx3ZSxGZSkpfWVsc2UgbzAoSCwiQmxhbmsiLHpmKFgsd2UsRmUpKX1mdW5jdGlvbiBYcihILHJlLFgpe3ZhciBJdCx3''@;'; put 'put ''ZT12MSgpLHhlPVguU2hlZXROYW1lc1tIXSxGZT1YLlNoZWV0c1t4ZV18fHt9LFplPShYfHx7fSkuV29ya2Jvb2t8fHt9LFZlPShaZS5TaGVldHN8fFtdKVtIXXx8e30sVWU9QXJyYXkuaXNBcnJheShGZSksU3Q9OD09cmUuYmlmZixQdD0iIixRdD1bXSxhbj1lYShGZVsiIXJlZiJdfHwiQTEi''@;'; put 'put ''KSxDbj1TdD82NTUzNjoxNjM4NDtpZihhbi5lLmM+MjU1fHxhbi5lLnI+PUNuKXtpZihyZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJSYW5nZSAiKyhGZVsiIXJlZiJdfHwiQTEiKSsiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOklWMTYzODQiKTthbi5lLmM9TWF0aC5taW4oYW4uZS5jLDI1NSks''@;'; put 'put ''YW4uZS5yPU1hdGgubWluKGFuLmUuYyxDbi0xKX1vMCh3ZSwyMDU3LE84KDAsMTYscmUpKSxvMCh3ZSwiQ2FsY01vZGUiLGNmKDEpKSxvMCh3ZSwiQ2FsY0NvdW50IixjZigxMDApKSxvMCh3ZSwiQ2FsY1JlZk1vZGUiLEcxKCEwKSksbzAod2UsIkNhbGNJdGVyIixHMSghMSkpLG8wKHdlLCJD''@;'; put 'put ''YWxjRGVsdGEiLHVmKC4wMDEpKSxvMCh3ZSwiQ2FsY1NhdmVSZWNhbGMiLEcxKCEwKSksbzAod2UsIlByaW50Um93Q29sIixHMSghMSkpLG8wKHdlLCJQcmludEdyaWQiLEcxKCExKSksbzAod2UsIkdyaWRTZXQiLGNmKDEpKSxvMCh3ZSwiR3V0cyIsZnVuY3Rpb24gbkUoSCl7dmFyIHJlPXhp''@;'; put 'put ''KDgpO3JldHVybiByZS53cml0ZV9zaGlmdCg0LDApLHJlLndyaXRlX3NoaWZ0KDIsSFswXT9IWzBdKzE6MCkscmUud3JpdGVfc2hpZnQoMixIWzFdP0hbMV0rMTowKSxyZX0oWzAsMF0pKSxvMCh3ZSwiSENlbnRlciIsRzEoITEpKSxvMCh3ZSwiVkNlbnRlciIsRzEoITEpKTt2YXIgTHQ9RmVb''@;'; put 'put ''IiFwcmludCJdJiZGZVsiIXByaW50Il0ubWFyZ2luc3x8RmVbIiFtYXJnaW5zIl07THQmJihudWxsIT1MdC5sZWZ0JiZvMCh3ZSwiTGVmdE1hcmdpbiIsdWYoTHQubGVmdCkpLG51bGwhPUx0LnJpZ2h0JiZvMCh3ZSwiUmlnaHRNYXJnaW4iLHVmKEx0LnJpZ2h0KSksbnVsbCE9THQudG9wJiZv''@;'; put 'put ''MCh3ZSwiVG9wTWFyZ2luIix1ZihMdC50b3ApKSxudWxsIT1MdC5ib3R0b20mJm8wKHdlLCJCb3R0b21NYXJnaW4iLHVmKEx0LmJvdHRvbSkpLChudWxsIT1MdC5oZWFkZXJ8fG51bGwhPUx0LmZvb3RlcikmJm8wKHdlLCJTZXR1cCIsZnVuY3Rpb24gZkUoSCxyZSl7dmFyIFg9eGkoMzQpLHdl''@;'; put 'put ''PSExLHhlPTcwO3JldHVybiJsYW5kc2NhcGUiPT0ocmUucHJvcHN8fHt9KS5vcmllbnRhdGlvbiYmKHdlPSEwLHhlJj0tNjcpLHdlJiYoeGUmPS01KSxYLndyaXRlX3NoaWZ0KDIsMSksWC53cml0ZV9zaGlmdCgyLDEwMCksWC53cml0ZV9zaGlmdCgyLDApLFgud3JpdGVfc2hpZnQoMiwwKSxY''@;'; put 'put ''LndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlmdCgxLHhlKSxYLndyaXRlX3NoaWZ0KDEsMCksWC53cml0ZV9zaGlmdCgyLDYwMCksWC53cml0ZV9zaGlmdCgyLDYwMCksdWYobnVsbD09SC5oZWFkZXI/LjU6SC5oZWFkZXIsWCksdWYobnVsbD09SC5mb290ZXI/LjU6SC5mb290ZXIsWCks''@;'; put 'put ''WC53cml0ZV9zaGlmdCgyLDEpLFh9KEx0LEZlWyIhcHJpbnQiXXx8e30pKSksU3QmJmZ1bmN0aW9uIFlHKEgscmUsWCl7aWYocmUpe3ZhciB3ZT0wO3JlLmZvckVhY2goZnVuY3Rpb24oeGUsRmUpeysrd2U8PTI1NiYmeGUmJih4ZS5hdXRvJiZabShYLHhlLEZlKSxvMChILCJDb2xJbmZvIixm''@;'; put 'put ''dW5jdGlvbiBjRShILHJlKXt2YXIgWD14aSgxMik7WC53cml0ZV9zaGlmdCgyLHJlKSxYLndyaXRlX3NoaWZ0KDIscmUpLFgud3JpdGVfc2hpZnQoMiwyNTYqSC53aWR0aCksWC53cml0ZV9zaGlmdCgyLDApO3ZhciB3ZT0wO3JldHVybiBILmhpZGRlbiYmKHdlfD0xKSxYLndyaXRlX3NoaWZ0''@;'; put 'put ''KDEsd2UpLFgud3JpdGVfc2hpZnQoMSx3ZT1ILmxldmVsfHwwKSxYLndyaXRlX3NoaWZ0KDIsMCksWH0oeGQoRmUseGUpLEZlKSkpfSl9fSh3ZSxGZVsiIWNvbHMiXSxGZSksbzAod2UsIkRpbWVuc2lvbnMiLGZ1bmN0aW9uIEFiKEgscmUpe3ZhciBYPTghPXJlLmJpZmYmJnJlLmJpZmY/Mjo0''@;'; put 'put ''LHdlPXhpKDIqWCs2KTtyZXR1cm4gd2Uud3JpdGVfc2hpZnQoWCxILnMuciksd2Uud3JpdGVfc2hpZnQoWCxILmUucisxKSx3ZS53cml0ZV9zaGlmdCgyLEgucy5jKSx3ZS53cml0ZV9zaGlmdCgyLEguZS5jKzEpLHdlLndyaXRlX3NoaWZ0KDIsMCksd2V9KGFuLHJlKSksU3QmJihGZVsiIWxp''@;'; put 'put ''bmtzIl09W10pLEZlWyIhcm93cyJdJiZTdCYmRmVbIiFyb3dzIl0uZm9yRWFjaChmdW5jdGlvbihWbixJcil7Zm9yKHZhciBpaT1oYShJcikseXI9MjU2LG9pPTAsTXI9Vm4ucz8xNityYyhyZS5jZWxsWGZzLHJlLmNlbGxTdHlsZVhmcyx7dDoibiIsdjowLHM6Vm4uc30scmUpOjAsV3I9YW4u''@;'; put 'put ''cy5jO1dyPD1hbi5lLmM7KytXcikhKFVlPyhGZVtJcl18fFtdKVtXcl06RmVbUXRbV3JdK2lpXSl8fChXcjx5ciYmKHlyPVdyKSxXcj5vaSYmKG9pPVdyKSk7b2k8eXImJih5cj1vaT0wKSxvMCh3ZSwiUm93IixmdW5jdGlvbiBkbihILHJlLFgpe3ZhciB3ZT14aSgxNik7d2Uud3JpdGVfc2hp''@;'; put 'put ''ZnQoMixyZSksd2Uud3JpdGVfc2hpZnQoMixYWzBdKSx3ZS53cml0ZV9zaGlmdCgyLFhbMV0rMSksd2Uud3JpdGVfc2hpZnQoMiwyMCpILmhwdHx8MjAqVWYoSC5ocHgpfHwzMzApLHdlLndyaXRlX3NoaWZ0KDQsMCk7dmFyIHhlPTA7cmV0dXJuIHhlfD0wfEgubGV2ZWwsSC5oaWRkZW4mJih4''@;'; put 'put ''ZXw9MzIpLHhlfD02NCxYWzJdJiYoeGV8PTEyOCksd2Uud3JpdGVfc2hpZnQoMSx4ZSksd2Uud3JpdGVfc2hpZnQoMSwxKSx3ZS53cml0ZV9zaGlmdCgyLFhbMl18fDApLHdlfShWbixJcixbeXIsb2ksTXJdKSl9KTtmb3IodmFyIHp0PWFuLnMucjt6dDw9YW4uZS5yOysrenQpe1B0PWhhKHp0''@;'; put 'put ''KTtmb3IodmFyIGZuPWFuLnMuYztmbjw9YW4uZS5jOysrZm4pe3p0PT09YW4ucy5yJiYoUXRbZm5dPUxsKGZuKSksSXQ9UXRbZm5dK1B0O3ZhciBJbj1VZT8oRmVbenRdfHxbXSlbZm5dOkZlW0l0XTshSW58fChVRyh3ZSxJbix6dCxmbixyZSksU3QmJkluLmwmJkZlWyIhbGlua3MiXS5wdXNo''@;'; put 'put ''KFtJdCxJbi5sXSkpfX12YXIgUm49VmUuQ29kZU5hbWV8fFZlLm5hbWV8fHhlO3JldHVybihTdHx8NT09cmUuYmlmZiYmRmVbIiFmcmVlemUiXSkmJm8wKHdlLCJXaW5kb3cyIixmdW5jdGlvbiBMUihILHJlLFgsd2Upe3ZhciB4ZT13ZSYmd2UuYmlmZnx8OCxGZT14aSg4PT14ZT8xODoxMCks''@;'; put 'put ''WmU9MTcxODtyZXR1cm4gWD4wJiYoWmUmPS01MTMpLG5yKHJlWyIhZ3JpZGxpbmVzIl0pJiYoWmUmPS0zKSxyZVsiIWZyZWV6ZSJdJiYoWmV8PTgpLEgmJkguUlRMJiYoWmV8PTY0KSw1PT14ZSYmKFplPTQ0NiksRmUud3JpdGVfc2hpZnQoMixaZSksOD09eGU/KEZlLndyaXRlX3NoaWZ0KDQs''@;'; put 'put ''MCksRmUud3JpdGVfc2hpZnQoNCw2NCksRmUud3JpdGVfc2hpZnQoNCwwKSxGZS53cml0ZV9zaGlmdCg0LDApKTooRmUud3JpdGVfc2hpZnQoNCwwKSxGZS53cml0ZV9zaGlmdCg0LDApKSxGZX0oKFplLlZpZXdzfHxbXSlbMF0sRmUsSCkpLChTdHx8NT09cmUuYmlmZikmJkZlWyIhZnJlZXpl''@;'; put 'put ''Il0mJm8wKHdlLCJQYW5lIixmdW5jdGlvbiB5MyhIKXsic3RyaW5nIj09dHlwZW9mIEgmJihIPXBvKEgpKTt2YXIgcmU9eGkoMTApO3JldHVybiByZS53cml0ZV9zaGlmdCgyLEguYykscmUud3JpdGVfc2hpZnQoMixILnIpLHJlLndyaXRlX3NoaWZ0KDIsSC5yKSxyZS53cml0ZV9zaGlmdCgy''@;'; put 'put ''LEguYykscmUud3JpdGVfc2hpZnQoMSwzKSxyZS53cml0ZV9zaGlmdCgxLDApLHJlfShGZVsiIWZyZWV6ZSJdKSksU3QmJkZlWyIhc2VsIl0mJm8wKHdlLCJTZWxlY3Rpb24iLGZ1bmN0aW9uIGhFKEgscmUpe3ZhciBYPXhpKDE1KSx3ZT1ILmNlbGw7aWYoIXdlKXtpZighSC5yYW5nZSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIk11c3Qgc3BlY2lmeSBhIHNlbGVjdGlvbiBjZWxsIG9yIHJhbmdlIik7d2U9UTAobnMoSC5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zKX12YXIgeGU9InN0cmluZyI9PXR5cGVvZiB3ZT9wbyh3ZSk6d2U7aWYocmUpe3ZhciBGZT0ic3RyaW5nIj09dHlwZW9mIHJl''@;'; put 'put ''P3BvKHJlKTpyZTtYLndyaXRlX3NoaWZ0KDEseGUucj49RmUuciYmeGUuYz49RmUuYz8wOnhlLnI+PUZlLnImJnhlLmM8RmUuYz8yOnhlLnI8RmUuciYmeGUuYz49RmUuYz8xOjMpfWVsc2UgWC53cml0ZV9zaGlmdCgxLDMpO3JldHVybiBYLndyaXRlX3NoaWZ0KDIseGUuciksWC53cml0ZV9z''@;'; put 'put ''aGlmdCgyLHhlLmMpLFgud3JpdGVfc2hpZnQoMiwwKSxYLndyaXRlX3NoaWZ0KDIsMSksZnVuY3Rpb24gX2goSCxyZSl7cmV8fChyZT14aSg2KSkscmUud3JpdGVfc2hpZnQoMixILnM/SC5zLnI6SC5yKSxyZS53cml0ZV9zaGlmdCgyLEguZT9ILmUucjpILnIpLHJlLndyaXRlX3NoaWZ0KDEs''@;'; put 'put ''SC5zP0gucy5jOkguYykscmUud3JpdGVfc2hpZnQoMSxILmU/SC5lLmM6SC5jKX0oe3M6eGUsZTp4ZX0sWCksWH0oRmVbIiFzZWwiXSxGZVsiIWZyZWV6ZSJdKSksU3QmJihGZVsiIW1lcmdlcyJdfHxbXSkubGVuZ3RoJiZvMCh3ZSwiTWVyZ2VDZWxscyIsZnVuY3Rpb24gRlIoSCl7dmFyIHJl''@;'; put 'put ''PXhpKDIrOCpILmxlbmd0aCk7cmUud3JpdGVfc2hpZnQoMixILmxlbmd0aCk7Zm9yKHZhciBYPTA7WDxILmxlbmd0aDsrK1gpaGYoSFtYXSxyZSk7cmV0dXJuIHJlfShGZVsiIW1lcmdlcyJdKSksU3QmJmZ1bmN0aW9uIFdHKEgscmUpe2Zvcih2YXIgWD0wO1g8cmVbIiFsaW5rcyJdLmxlbmd0''@;'; put 'put ''aDsrK1gpe3ZhciB3ZT1yZVsiIWxpbmtzIl1bWF07bzAoSCwiSExpbmsiLHlkKHdlKSksd2VbMV0uVG9vbHRpcCYmbzAoSCwiSExpbmtUb29sdGlwIixzRSh3ZSkpfWRlbGV0ZSByZVsiIWxpbmtzIl19KHdlLEZlKSxvMCh3ZSwiQ29kZU5hbWUiLEJyKFJuKSksU3QmJmZ1bmN0aW9uIHU3KEgs''@;'; put 'put ''cmUpe3ZhciBYPXhpKDE5KTtYLndyaXRlX3NoaWZ0KDQsMjE1MSksWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDIsMyksWC53cml0ZV9zaGlmdCgxLDEpLFgud3JpdGVfc2hpZnQoNCwwKSxvMChILCJGZWF0SGRyIixYKSwoWD14aSgzOSkpLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsMjE1MiksWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDIsMyksWC53cml0ZV9zaGlmdCgxLDApLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDIsMSksWC53cml0ZV9zaGlmdCg0LDQpLFgud3JpdGVfc2hpZnQo''@;'; put 'put ''MiwwKSxoZihlYShyZVsiIXJlZiJdfHwiQTEiKSxYKSxYLndyaXRlX3NoaWZ0KDQsNCksbzAoSCwiRmVhdCIsWCl9KHdlLEZlKSxvMCh3ZSwiRU9GIiksd2UuZW5kKCl9ZnVuY3Rpb24gdEMoSCxyZSxYKXt2YXIgd2U9djEoKSx4ZT0oSHx8e30pLldvcmtib29rfHx7fSxGZT14ZS5TaGVldHN8''@;'; put 'put ''fFtdLFplPXhlLldCUHJvcHN8fHt9LFZlPTg9PVguYmlmZixVZT01PT1YLmJpZmY7bzAod2UsMjA1NyxPOCgwLDUsWCkpLCJ4bGEiPT1YLmJvb2tUeXBlJiZvMCh3ZSwiQWRkaW4iKSxvMCh3ZSwiSW50ZXJmYWNlSGRyIixWZT9jZigxMjAwKTpudWxsKSxvMCh3ZSwiTW1zIixmdW5jdGlvbiBY''@;'; put 'put ''TShILHJlKXtyZXx8KHJlPXhpKEgpKTtmb3IodmFyIFg9MDtYPEg7KytYKXJlLndyaXRlX3NoaWZ0KDEsMCk7cmV0dXJuIHJlfSgyKSksVWUmJm8wKHdlLCJUb29sYmFySGRyIiksVWUmJm8wKHdlLCJUb29sYmFyRW5kIiksbzAod2UsIkludGVyZmFjZUVuZCIpLG8wKHdlLCJXcml0ZUFjY2Vz''@;'; put 'put ''cyIsZnVuY3Rpb24gUXAoSCxyZSl7dmFyIFg9IXJlfHw4PT1yZS5iaWZmLHdlPXhpKFg/MTEyOjU0KTtmb3Iod2Uud3JpdGVfc2hpZnQoOD09cmUuYmlmZj8yOjEsNyksWCYmd2Uud3JpdGVfc2hpZnQoMSwwKSx3ZS53cml0ZV9zaGlmdCg0LDg1OTAwNzA1OSksd2Uud3JpdGVfc2hpZnQoNCw1''@;'; put 'put ''NDU4NTQ4fChYPzA6NTM2ODcwOTEyKSk7d2UubDx3ZS5sZW5ndGg7KXdlLndyaXRlX3NoaWZ0KDEsWD8wOjMyKTtyZXR1cm4gd2V9KDAsWCkpLG8wKHdlLCJDb2RlUGFnZSIsY2YoVmU/MTIwMDoxMjUyKSksVmUmJm8wKHdlLCJEU0YiLGNmKDApKSxWZSYmbzAod2UsIkV4Y2VsOUZpbGUiKSxv''@;'; put 'put ''MCh3ZSwiUlJUYWJJZCIsZnVuY3Rpb24gQ2IoSCl7Zm9yKHZhciByZT14aSgyKkgpLFg9MDtYPEg7KytYKXJlLndyaXRlX3NoaWZ0KDIsWCsxKTtyZXR1cm4gcmV9KEguU2hlZXROYW1lcy5sZW5ndGgpKSxWZSYmSC52YmFyYXcmJm8wKHdlLCJPYlByb2oiKSxWZSYmSC52YmFyYXcmJm8wKHdl''@;'; put 'put ''LCJDb2RlTmFtZSIsQnIoWmUuQ29kZU5hbWV8fCJUaGlzV29ya2Jvb2siKSksbzAod2UsIkJ1aWx0SW5Gbkdyb3VwQ291bnQiLGNmKDE3KSksbzAod2UsIldpblByb3RlY3QiLEcxKCExKSksbzAod2UsIlByb3RlY3QiLEcxKCExKSksbzAod2UsIlBhc3N3b3JkIixjZigwKSksVmUmJm8wKHdl''@;'; put 'put ''LCJQcm90NFJldiIsRzEoITEpKSxWZSYmbzAod2UsIlByb3Q0UmV2UGFzcyIsY2YoMCkpLG8wKHdlLCJXaW5kb3cxIixmdW5jdGlvbiBhbSgpe3ZhciBIPXhpKDE4KTtyZXR1cm4gSC53cml0ZV9zaGlmdCgyLDApLEgud3JpdGVfc2hpZnQoMiwwKSxILndyaXRlX3NoaWZ0KDIsMjkyODApLEgu''@;'; put 'put ''d3JpdGVfc2hpZnQoMiwxNzYwMCksSC53cml0ZV9zaGlmdCgyLDU2KSxILndyaXRlX3NoaWZ0KDIsMCksSC53cml0ZV9zaGlmdCgyLDApLEgud3JpdGVfc2hpZnQoMiwxKSxILndyaXRlX3NoaWZ0KDIsNTAwKSxIfSgpKSxvMCh3ZSwiQmFja3VwIixHMSghMSkpLG8wKHdlLCJIaWRlT2JqIixj''@;'; put 'put ''ZigwKSksbzAod2UsIkRhdGUxOTA0IixHMSgidHJ1ZSI9PWZ1bmN0aW9uIHI3KEgpe3JldHVybiBILldvcmtib29rJiZILldvcmtib29rLldCUHJvcHMmJkJpKEguV29ya2Jvb2suV0JQcm9wcy5kYXRlMTkwNCk/InRydWUiOiJmYWxzZSJ9KEgpKSksbzAod2UsIkNhbGNQcmVjaXNpb24iLEcx''@;'; put 'put ''KCEwKSksVmUmJm8wKHdlLCJSZWZyZXNoQWxsIixHMSghMSkpLG8wKHdlLCJCb29rQm9vbCIsY2YoMCkpLEx1PWZkKFswLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcx''@;'; put 'put ''MTkzNSw2NTUzNV0pLGZ1bmN0aW9uIHRGKEgscmUsWCl7KCgocmV8fHt9KS5TdHlsZXN8fHt9KS5Gb250c3x8W3tzejoxMixjb2xvcjp7dGhlbWU6MX0sbmFtZToiQXJpYWwiLGZhbWlseToyLHNjaGVtZToibWlub3IifV0pLmZvckVhY2goZnVuY3Rpb24od2Upe28wKEgsIkZvbnQiLGZ1bmN0''@;'; put 'put ''aW9uIEFkKEgscmUpe3ZhciBYPUgubmFtZXx8IkFyaWFsIix3ZT1yZSYmNT09cmUuYmlmZixGZT14aSh3ZT8xNStYLmxlbmd0aDoxNisyKlgubGVuZ3RoKTtGZS53cml0ZV9zaGlmdCgyLDIwKihILnN6fHwxMikpO3ZhciBaZT0wO3JldHVybiBILmJvbGQmJihaZXw9MSksSC5pdGFsaWMmJiha''@;'; put 'put ''ZXw9MiksSC5zdHJpa2UmJihaZXw9OCksSC5zaGFkb3cmJihaZXw9MzIpLEZlLndyaXRlX3NoaWZ0KDEsWmUpLEZlLndyaXRlX3NoaWZ0KDEsMCksRmUud3JpdGVfc2hpZnQoMixILmNvbG9yPyRiKEguY29sb3IsNjQpOjY0KSxGZS53cml0ZV9zaGlmdCgyLEguYm9sZD83MDA6NDAwKSxGZS53''@;'; put 'put ''cml0ZV9zaGlmdCgyLCJzdXBlciI9PUgudmFsaWduPzE6InN1YiI9PUgudmFsaWduPzI6MCksRmUud3JpdGVfc2hpZnQoMSxILnVuZGVybGluZXx8MCksRmUud3JpdGVfc2hpZnQoMSxGZS5mYW1pbHl8fDApLEZlLndyaXRlX3NoaWZ0KDEsRmUuY2hhcnNldHx8MCksRmUud3JpdGVfc2hpZnQo''@;'; put 'put ''MSwwKSxGZS53cml0ZV9zaGlmdCgxLFgubGVuZ3RoKSx3ZXx8RmUud3JpdGVfc2hpZnQoMSwxKSxGZS53cml0ZV9zaGlmdCgod2U/MToyKSpYLmxlbmd0aCxYLHdlPyJzYmNzIjoidXRmMTZsZSIpLEZlfSh3ZSxYKSl9KX0od2UsSCxYKSxmdW5jdGlvbiBfVChILHJlLFgpeyFyZXx8W1s1LDhd''@;'; put 'put ''LFsyMywyNl0sWzQxLDQ0XSxbNTAsMzkyXV0uZm9yRWFjaChmdW5jdGlvbih3ZSl7Zm9yKHZhciB4ZT13ZVswXTt4ZTw9d2VbMV07Kyt4ZSludWxsIT1yZVt4ZV0mJm8wKEgsIkZvcm1hdCIsQlIoeGUscmVbeGVdLFgpKX0pfSh3ZSxILlNTRixYKSxmdW5jdGlvbiBuRihILHJlKXtmb3IodmFy''@;'; put 'put ''IFg9MDtYPDE2OysrWClvMChILCJYRiIsQ2goe251bUZtdElkOjAsc3R5bGU6ITB9LDAscmUpKTtyZS5jZWxsWGZzLmZvckVhY2goZnVuY3Rpb24od2Upe28wKEgsIlhGIixDaCh3ZSwwLHJlKSl9KX0od2UsWCksbzAod2UsIlBhbGV0dGUiLGZ1bmN0aW9uIFZSKEgpe3ZhciByZT14aSgyMjYp''@;'; put 'put ''O3JlLndyaXRlX3NoaWZ0KDIsNTYpO2Zvcih2YXIgWD0wO1g8NTY7KytYKXt2YXIgd2U9SFtYKzhdfHwkdVtYKzhdO3JlLndyaXRlX3NoaWZ0KDEsd2VbMF0pLHJlLndyaXRlX3NoaWZ0KDEsd2VbMV0pLHJlLndyaXRlX3NoaWZ0KDEsd2VbMl0pLHJlLndyaXRlX3NoaWZ0KDEsMCl9cmV0dXJu''@;'; put 'put ''IHJlfShMdSkpLEx1PWxuKCR1KSxWZSYmbzAod2UsIlVzZXNFTEZzIixHMSghMSkpO3ZhciBJdD13ZS5lbmQoKSxQdD12MSgpO1ZlJiZvMChQdCwiQ291bnRyeSIsZnVuY3Rpb24gVDkoSCl7cmV0dXJuIEh8fChIPXhpKDQpKSxILndyaXRlX3NoaWZ0KDIsMSksSC53cml0ZV9zaGlmdCgyLDEp''@;'; put 'put ''LEh9KCkpLFZlJiZYLlN0cmluZ3MmJmZ1bmN0aW9uIHM3KEgscmUsWCx3ZSl7dmFyIHhlPXdlfHwoWHx8W10pLmxlbmd0aHx8MDtpZih4ZTw9ODIyNClyZXR1cm4gbzAoSCxyZSxYLHhlKTt2YXIgRmU9K3JlfHwrTDNbcmVdO2lmKCFpc05hTihGZSkpe2Zvcih2YXIgWmU9WC5wYXJ0c3x8W10s''@;'; put 'put ''VmU9MCxVZT0wLFN0PTA7U3QrKFplW1ZlXXx8ODIyNCk8PTgyMjQ7KVN0Kz1aZVtWZV18fDgyMjQsVmUrKzt2YXIgSXQ9SC5uZXh0KDQpO2ZvcihJdC53cml0ZV9zaGlmdCgyLEZlKSxJdC53cml0ZV9zaGlmdCgyLFN0KSxILnB1c2goWC5zbGljZShVZSxVZStTdCkpLFVlKz1TdDtVZTx4ZTsp''@;'; put 'put ''e2ZvcigoSXQ9SC5uZXh0KDQpKS53cml0ZV9zaGlmdCgyLDYwKSxTdD0wO1N0KyhaZVtWZV18fDgyMjQpPD04MjI0OylTdCs9WmVbVmVdfHw4MjI0LFZlKys7SXQud3JpdGVfc2hpZnQoMixTdCksSC5wdXNoKFguc2xpY2UoVWUsVWUrU3QpKSxVZSs9U3R9fX0oUHQsIlNTVCIsZnVuY3Rpb24g''@;'; put 'put ''YmwoSCxyZSl7dmFyIFg9eGkoOCk7WC53cml0ZV9zaGlmdCg0LEguQ291bnQpLFgud3JpdGVfc2hpZnQoNCxILlVuaXF1ZSk7Zm9yKHZhciB3ZT1bXSx4ZT0wO3hlPEgubGVuZ3RoOysreGUpd2VbeGVdPVZjKEhbeGVdLHJlKTt2YXIgRmU9VihbWF0uY29uY2F0KHdlKSk7cmV0dXJuIEZlLnBh''@;'; put 'put ''cnRzPVtYLmxlbmd0aF0uY29uY2F0KHdlLm1hcChmdW5jdGlvbihaZSl7cmV0dXJuIFplLmxlbmd0aH0pKSxGZX0oWC5TdHJpbmdzLFgpKSxvMChQdCwiRU9GIik7dmFyIFF0PVB0LmVuZCgpLGFuPXYxKCksQ249MCxMdD0wO2ZvcihMdD0wO0x0PEguU2hlZXROYW1lcy5sZW5ndGg7KytMdClD''@;'; put 'put ''bis9KFZlPzEyOjExKSsoVmU/MjoxKSpILlNoZWV0TmFtZXNbTHRdLmxlbmd0aDt2YXIgenQ9SXQubGVuZ3RoK0NuK1F0Lmxlbmd0aDtmb3IoTHQ9MDtMdDxILlNoZWV0TmFtZXMubGVuZ3RoOysrTHQpbzAoYW4sIkJvdW5kU2hlZXQ4Iix2ZCh7cG9zOnp0LGhzOihGZVtMdF18fHt9KS5IaWRk''@;'; put 'put ''ZW58fDAsZHQ6MCxuYW1lOkguU2hlZXROYW1lc1tMdF19LFgpKSx6dCs9cmVbTHRdLmxlbmd0aDt2YXIgSW49YW4uZW5kKCk7aWYoQ24hPUluLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkJTOCAiK0NuKyIgIT0gIitJbi5sZW5ndGgpO3ZhciBSbj1bXTtyZXR1cm4gSXQubGVuZ3RoJiZSbi5w''@;'; put 'put ''dXNoKEl0KSxJbi5sZW5ndGgmJlJuLnB1c2goSW4pLFF0Lmxlbmd0aCYmUm4ucHVzaChRdCksQW4oW1JuXSl9ZnVuY3Rpb24gYzcoSCxyZSl7dmFyIFg9cmV8fHt9O3N3aXRjaChYLmJpZmZ8fDIpe2Nhc2UgODpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uIFpBKEgscmUpe3ZhciBYPXJlfHx7fSx3''@;'; put 'put ''ZT1bXTtNaChyZSYmcmUuUFBJfHw5NiksSCYmIUguU1NGJiYoSC5TU0Y9Ri5nZXRfdGFibGUoKSksSCYmSC5TU0YmJih5ZShGKSxGLmxvYWRfdGFibGUoSC5TU0YpLFgucmV2c3NmPXFlKEguU1NGKSxYLnJldnNzZltILlNTRls2NTUzNV1dPTAsWC5zc2Y9SC5TU0YpLEguU3R5bGVzPXtGb250''@;'; put 'put ''czpYLkZvbnRzPVt7c3o6MTIsY29sb3I6e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOiJDYWxpYnJpIixmYW1pbHk6MixzY2hlbWU6Im1pbm9yIn1dLEZpbGxzOlguRmlsbHM9W3twYXR0ZXJuVHlwZToibm9uZSJ9LHtwYXR0ZXJuVHlwZToiZ3JheTEyNSJ9XSxCb3JkZXJzOlguQm9yZGVy''@;'; put 'put ''cz1be31dLERYRjpYLkRYRj1ILlN0eWxlcyYmSC5TdHlsZXMuRFhGfHxbXX0scjYoWC5Gb250c1swXSksWC5TdHJpbmdzPVtdLFguU3RyaW5ncy5Db3VudD0wLFguU3RyaW5ncy5VbmlxdWU9MCxJaD9YLnJldlN0cmluZ3M9bmV3IE1hcDooWC5yZXZTdHJpbmdzPXt9LFgucmV2U3RyaW5ncy5m''@;'; put 'put ''b289W10sZGVsZXRlIFgucmV2U3RyaW5ncy5mb28pLE8zKFgpLFguY2VsbFhmcz1bXSxYLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxyYyhYLmNlbGxYZnMsWC5jZWxsU3R5bGVYZnMse30se3JldnNzZjp7R2VuZXJhbDowfX0pLEguUHJvcHN8fChILlByb3BzPXt9KTtmb3IodmFy''@;'; put 'put ''IHhlPTA7eGU8SC5TaGVldE5hbWVzLmxlbmd0aDsrK3hlKXdlW3dlLmxlbmd0aF09WHIoeGUsWCxIKTtyZXR1cm4gd2UudW5zaGlmdCh0QyhILHdlLFgpKSxBbihbd2VdKX0oSCxyZSk7Y2FzZSA0OmNhc2UgMzpjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uIExkKEgscmUpe2Zvcih2YXIgWD1yZXx8''@;'; put 'put ''e30sd2U9djEoKSx4ZT0wLEZlPTA7RmU8SC5TaGVldE5hbWVzLmxlbmd0aDsrK0ZlKUguU2hlZXROYW1lc1tGZV09PVguc2hlZXQmJih4ZT1GZSk7aWYoMD09eGUmJlguc2hlZXQmJkguU2hlZXROYW1lc1swXSE9WC5zaGVldCl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5vdCBmb3VuZDogIitY''@;'; put 'put ''LnNoZWV0KTtyZXR1cm4gbzAod2UsND09WC5iaWZmPzEwMzM6Mz09WC5iaWZmPzUyMTo5LE84KDAsMTYsWCkpLGZ1bmN0aW9uIGJUKEgscmUsWCx3ZSl7dmFyIFplLHhlPUFycmF5LmlzQXJyYXkocmUpLEZlPWVhKHJlWyIhcmVmIl18fCJBMSIpLFZlPSIiLFVlPVtdO2lmKEZlLmUuYz4yNTV8''@;'; put 'put ''fEZlLmUucj4xNjM4Myl7aWYod2UuV1RGKXRocm93IG5ldyBFcnJvcigiUmFuZ2UgIisocmVbIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0Iik7RmUuZS5jPU1hdGgubWluKEZlLmUuYywyNTUpLEZlLmUucj1NYXRoLm1pbihGZS5lLmMsMTYzODMpLFpl''@;'; put 'put ''PUFhKEZlKX1mb3IodmFyIFN0PUZlLnMucjtTdDw9RmUuZS5yOysrU3Qpe1ZlPWhhKFN0KTtmb3IodmFyIEl0PUZlLnMuYztJdDw9RmUuZS5jOysrSXQpe1N0PT09RmUucy5yJiYoVWVbSXRdPUxsKEl0KSksWmU9VWVbSXRdK1ZlO3ZhciBQdD14ZT8ocmVbU3RdfHxbXSlbSXRdOnJlW1plXTsh''@;'; put 'put ''UHR8fGpBKEgsUHQsU3QsSXQpfX19KHdlLEguU2hlZXRzW0guU2hlZXROYW1lc1t4ZV1dLDAsWCksbzAod2UsMTApLHdlLmVuZCgpfShILHJlKX10aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdHlwZSAiK1guYm9va1R5cGUrIiBmb3IgQklGRiIpfXZhciBvcz1mdW5jdGlvbigpe3ZhciBIPXtj''@;'; put 'put ''ZW50ZXJDb250aW51b3VzOiJjZW50ZXIiLGp1c3RpZnk6ImxlZnQifTtmdW5jdGlvbiBYKFB0LFF0KXt2YXIgYW49UXR8fHt9LENuPWFuLmRlbnNlP1tdOnt9LEx0PShQdD1QdC5yZXBsYWNlKC88IS0tLio/LS0+L2csIiIpKS5tYXRjaCgvPHRhYmxlL2kpO2lmKCFMdCl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkludmFsaWQgSFRNTDogY291bGQgbm90IGZpbmQgPHRhYmxlPiIpO3ZhciB6dD1QdC5tYXRjaCgvPFwvdGFibGUvaSksZm49THQuaW5kZXgsSW49enQmJnp0LmluZGV4fHxQdC5sZW5ndGgsUm49ZnVuY3Rpb24gZW4oSCxyZSxYKXtpZih4cnx8InN0cmluZyI9PXR5cGVvZiByZSlyZXR1''@;'; put 'put ''cm4gSC5zcGxpdChyZSk7Zm9yKHZhciB3ZT1ILnNwbGl0KHJlKSx4ZT1bd2VbMF1dLEZlPTE7RmU8d2UubGVuZ3RoOysrRmUpeGUucHVzaChYKSx4ZS5wdXNoKHdlW0ZlXSk7cmV0dXJuIHhlfShQdC5zbGljZShmbixJbiksLyg6Pzx0cltePl0qPikvaSwiPHRyPiIpLFZuPS0xLElyPTAsaWk9''@;'; put 'put ''MCx5cj0wLG9pPXtzOntyOjFlNyxjOjFlN30sZTp7cjowLGM6MH19LE1yPVtdO2Zvcihmbj0wO2ZuPFJuLmxlbmd0aDsrK2ZuKXt2YXIgV3I9Um5bZm5dLnRyaW0oKSxhaT1Xci5zbGljZSgwLDMpLnRvTG93ZXJDYXNlKCk7aWYoIjx0ciIhPWFpKXtpZigiPHRkIj09YWl8fCI8dGgiPT1haSl7''@;'; put 'put ''dmFyIG5pPVdyLnNwbGl0KC88XC90W2RoXT4vaSk7Zm9yKEluPTA7SW48bmkubGVuZ3RoOysrSW4pe3ZhciBmcj1uaVtJbl0udHJpbSgpO2lmKGZyLm1hdGNoKC88dFtkaF0vaSkpe2Zvcih2YXIgaGk9ZnIsdzA9MDsiPCI9PWhpLmNoYXJBdCgwKSYmKHcwPWhpLmluZGV4T2YoIj4iKSk+LTE7''@;'; put 'put ''KWhpPWhpLnNsaWNlKHcwKzEpO2Zvcih2YXIgSjA9MDtKMDxNci5sZW5ndGg7KytKMCl7dmFyIGlvPU1yW0owXTtpby5zLmM9PUlyJiZpby5zLnI8Vm4mJlZuPD1pby5lLnImJihJcj1pby5lLmMrMSxKMD0tMSl9dmFyIGIwPXF0KGZyLnNsaWNlKDAsZnIuaW5kZXhPZigiPiIpKSk7eXI9YjAu''@;'; put 'put ''Y29sc3Bhbj8rYjAuY29sc3BhbjoxLCgoaWk9K2IwLnJvd3NwYW4pPjF8fHlyPjEpJiZNci5wdXNoKHtzOntyOlZuLGM6SXJ9LGU6e3I6Vm4rKGlpfHwxKS0xLGM6SXIreXItMX19KTt2YXIgYmk9YjAudHx8YjBbImRhdGEtdCJdfHwiIjtpZighaGkubGVuZ3RoKXtJcis9eXI7Y29udGludWV9''@;'; put 'put ''aWYoaGk9TWEoaGkpLG9pLnMucj5WbiYmKG9pLnMucj1Wbiksb2kuZS5yPFZuJiYob2kuZS5yPVZuKSxvaS5zLmM+SXImJihvaS5zLmM9SXIpLG9pLmUuYzxJciYmKG9pLmUuYz1JciksaGkubGVuZ3RoKXt2YXIgenI9e3Q6InMiLHY6aGl9O2FuLnJhd3x8IWhpLnRyaW0oKS5sZW5ndGh8fCJz''@;'; put 'put ''Ij09Yml8fCh6cj1GcihoaSxhbikpLGFuLmRlbnNlPyhDbltWbl18fChDbltWbl09W10pLENuW1ZuXVtJcl09enIpOkNuW1EwKHtyOlZuLGM6SXJ9KV09enIsSXIrPXlyfX19fX1lbHNle2lmKCsrVm4sYW4uc2hlZXRSb3dzJiZhbi5zaGVldFJvd3M8PVZuKXstLVZuO2JyZWFrfUlyPTB9fXJl''@;'; put 'put ''dHVybiBDblsiIXJlZiJdPUFhKG9pKSxNci5sZW5ndGgmJihDblsiIW1lcmdlcyJdPU1yKSxDbn1mdW5jdGlvbiB4ZShQdCxRdCxhbixDbixMdCx6dCl7dmFyIFJuLGZuPVB0WyIhbWVyZ2VzIl18fFtdLEluPVtdLFZuPXtzdHlsZTpbXX0sSXI9ITE7ZnVuY3Rpb24gaWkoWDAsemksZzApe3Zh''@;'; put 'put ''ciBTMD0iIixBaT0wO2lmKFJuW1gwXSlzd2l0Y2goUm5bWDBdLnN0eWxlKXtjYXNlInRoaW4iOmNhc2UiaGFpciI6UzA9InNvbGlkIixBaT0xO2JyZWFrO2Nhc2UibWVkaXVtIjpTMD0ic29saWQiLEFpPTI7YnJlYWs7Y2FzZSJ0aGljayI6UzA9InNvbGlkIixBaT0zO2JyZWFrO2Nhc2UiZG91''@;'; put 'put ''YmxlIjpTMD0iZG91YmxlIixBaT0zO2JyZWFrO2Nhc2UiZG90dGVkIjpjYXNlImRhc2hEb3REb3QiOlMwPSJkb3R0ZWQiLEFpPTE7YnJlYWs7Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpTMD0iZG90dGVkIixBaT0yO2JyZWFrO2Nhc2UiZGFzaGVkIjpjYXNlImRhc2hEb3QiOmNhc2Uic2xhbnRE''@;'; put 'put ''YXNoRG90IjpTMD0iZGFzaGVkIixBaT0xO2JyZWFrO2Nhc2UibWVkaXVtRGFzaGVkIjpjYXNlIm1lZGl1bURhc2hEb3QiOlMwPSJkYXNoZWQiLEFpPTJ9ZTppZigwPT1BaSl7c3dpdGNoKFgwKXtjYXNlInRvcCI6LS16aTticmVhaztjYXNlImxlZnQiOi0tZzA7YnJlYWs7Y2FzZSJib3R0b20i''@;'; put 'put ''Oisremk7YnJlYWs7Y2FzZSJyaWdodCI6KytnMH12YXIgeDA9emk+PTAmJmcwPj0wP0NuLmRlbnNlPyhQdFt6aV18fFtdKVtnMF06UHRbUTAoe3I6emksYzpnMH0pXTpudWxsO2lmKHgwKXtpZih4MC5zJiZ4MC5zW3t0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3AiLGxlZnQ6InJpZ2h0IixyaWdo''@;'; put 'put ''dDoibGVmdCJ9W1gwXV0pYnJlYWsgZTt4MC5zJiZ4MC5zLmZnQ29sb3ImJihBaT0xKX1Sbi5mZ0NvbG9yJiYoQWk9MSksIXgwJiZJciYmMD09QWkmJihBaT0xKX0wIT1BaSYmQWkmJihWbi5zdHlsZS5wdXNoKCJib3JkZXItIitYMCsiLXN0eWxlOiIrKFMwfHwidHJhbnNwYXJlbnQiKSksVm4u''@;'; put 'put ''c3R5bGUucHVzaCgiYm9yZGVyLSIrWDArIi13aWR0aDoiK0FpKyJweCIpLCIiPT1TMD9Wbi5zdHlsZS5wdXNoKCJib3JkZXItIitYMCsiLWNvbG9yOiB0cmFuc3BhcmVudCIpOlJuW1gwXS5jb2xvciYmUm5bWDBdLmNvbG9yLnJnYiYmVm4uc3R5bGUucHVzaCgiYm9yZGVyLSIrWDArIi1jb2xv''@;'; put 'put ''cjojIitJbyhSbltYMF0uY29sb3IucmdiKSkpfWZvcih2YXIgeXI9UXQucy5jO3lyPD1RdC5lLmM7Kyt5cil7Zm9yKHZhciBvaT0wLE1yPTAsV3I9MDtXcjxmbi5sZW5ndGg7KytXcilpZighKGZuW1dyXS5zLnI+YW58fGZuW1dyXS5zLmM+eXJ8fGZuW1dyXS5lLnI8YW58fGZuW1dyXS5lLmM8''@;'; put 'put ''eXIpKXtpZihmbltXcl0ucy5yPGFufHxmbltXcl0ucy5jPHlyKXtvaT0tMTticmVha31vaT1mbltXcl0uZS5yLWZuW1dyXS5zLnIrMSxNcj1mbltXcl0uZS5jLWZuW1dyXS5zLmMrMTticmVha31pZighKG9pPDApKXt2YXIgYWk9UTAoe3I6YW4sYzp5cn0pLG5pPUNuLmRlbnNlPyhQdFthbl18''@;'; put 'put ''fFtdKVt5cl06UHRbYWldO25pP0lyPSExOihJcj0hMCxuaT17dDoieiIsczp7fX0pO3ZhciBmcj0ieiI9PW5pLnQ/IiI6bmkuaHx8ZTAobmkud3x8KGoxKG5pKSxuaS53KXx8IiIpO2lmKFZuPXtzdHlsZTpbXX0sUm49bmkucyl7dmFyIGhpPTE7aWYoKCJzdXBlciI9PVJuLnZhbGlnbnx8InN1''@;'; put 'put ''YiI9PVJuLnZhbGlnbikmJihoaT0uODMsZnI9U2koInNwYW4iLGZyLHtzdHlsZToidmVydGljYWwtYWxpZ246ICIrUm4udmFsaWdufSkpLFZuLnN0eWxlLnB1c2goImZvbnQtd2VpZ2h0OiIrKFJuLmJvbGQ/NzAwOjQwMCkpLFJuLml0YWxpYyYmVm4uc3R5bGUucHVzaCgiZm9udC1zdHlsZTog''@;'; put 'put ''aXRhbGljIiksKFJuLnVuZGVybGluZXx8Um4uc3RyaWtlKSYmVm4uc3R5bGUucHVzaCgidGV4dC1kZWNvcmF0aW9uOiIrKFJuLnVuZGVybGluZT8iIHVuZGVybGluZSI6IiIpKyhSbi5zdHJpa2U/IiBsaW5lLXRocm91Z2giOiIiKSksUm4uY29sb3ImJlJuLmNvbG9yLnJnYiYmVm4uc3R5bGUu''@;'; put 'put ''cHVzaCgiY29sb3I6ICMiK0lvKFJuLmNvbG9yLnJnYikpLFJuLm5hbWUmJlZuLnN0eWxlLnB1c2goImZvbnQtZmFtaWx5OiIrUm4ubmFtZSsiLCBzYW5zLXNlcmlmIiksUm4uc3omJlZuLnN0eWxlLnB1c2goImZvbnQtc2l6ZToiK1JuLnN6KmhpKyJwdCIpLG51bGwhPT1Sbi5wYXR0ZXJuVHlw''@;'; put 'put ''ZSYmUm4uZmdDb2xvciYmUm4uZmdDb2xvci5yZ2ImJlZuLnN0eWxlLnB1c2goImJhY2tncm91bmQtY29sb3I6ICMiK0lvKFJuLmZnQ29sb3IucmdiKSksWyJ0b3AiLCJsZWZ0Il0uZm9yRWFjaChmdW5jdGlvbihYMCl7aWkoWDAsYW4seXIpfSksb2k+MXx8TXI+MSl7dmFyIHcwPVEwKHtyOmFu''@;'; put 'put ''K29pLTEsYzp5citNci0xfSksSjA9Q24uZGVuc2U/KFB0W2FuK29pLTFdfHxbXSlbeXIrTXItMV06UHRbdzBdLGIwPVJuO1JuPUowJiZKMC5zfHxSbixbImJvdHRvbSIsInJpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbihYMCl7aWkoWDAsYW4seXIpfSksUm49YjB9ZWxzZVsiYm90dG9tIiwicmln''@;'; put 'put ''aHQiXS5mb3JFYWNoKGZ1bmN0aW9uKFgwKXtpaShYMCxhbix5cil9KTtpZihSbi5hbGlnbm1lbnQpe2lmKFJuLmFsaWdubWVudC5ob3Jpem9udGFsP1ZuLnN0eWxlLnB1c2goInRleHQtYWxpZ246ICIrKEhbUm4uYWxpZ25tZW50Lmhvcml6b250YWxdfHxSbi5hbGlnbm1lbnQuaG9yaXpvbnRh''@;'; put 'put ''bCkpOiJuIj09bmkudCYmVm4uc3R5bGUucHVzaCgidGV4dC1hbGlnbjogcmlnaHQiKSxSbi5hbGlnbm1lbnQudmVydGljYWwpe3ZhciBiaT1Sbi5hbGlnbm1lbnQudmVydGljYWw7Vm4uc3R5bGUucHVzaCgidmVydGljYWwtYWxpZ246ICIrKCJjZW50ZXIiPT1iaT8ibWlkZGxlIjpiaSkpfWlm''@;'; put 'put ''KFJuLmFsaWdubWVudC53cmFwVGV4dClWbi5zdHlsZS5wdXNoKCJ3aGl0ZS1zcGFjZTogcHJlLXdyYXAiKTtlbHNle3ZhciB6cj1Dbi5kZW5zZT8oUHRbYW5dfHxbXSlbeXIrMV06UHRbUTAoe3I6YW4sYzp5cisxfSldO3pyJiYieiIhPXpyLnQmJlZuLnN0eWxlLnB1c2goIndoaXRlLXNwYWNl''@;'; put 'put ''OiBwcmUtd3JhcCIpfX1lbHNlIm4iPT1uaS50JiZWbi5zdHlsZS5wdXNoKCJ0ZXh0LWFsaWduOiByaWdodCIpO3ZhciBEaT0oKFB0WyIhY29scyJdfHxbXSlbeXJdfHx7fSkud3B4O251bGw9PURpJiYoRGk9KChQdFsiIXNoZWV0Rm9ybWF0Il18fHt9KS5jb2x8fHt9KS53cHgpfXZhciBjaT0w''@;'; put 'put ''O2lmKE1yPD0xJiZvaTw9MSYmKGNpPSgoUHRbIiFjb2xzIl18fFtdKVt5cl18fHt9KS53cHgpJiZWbi5zdHlsZS5wdXNoKCJ3aWR0aDogIitjaSsicHgiKSxQdFsiIWNvbmRmbXQiXSYmRmUobmksYW4seXIsUHRbIiFjb25kZm10Il0sVm4uc3R5bGUsUHQpLDA9PVZuLnN0eWxlLmxlbmd0aD9k''@;'; put 'put ''ZWxldGUgVm4uc3R5bGU6Vm4uc3R5bGU9Vm4uc3R5bGUuam9pbigiOyIpLENuLmNzcyl7dmFyIEhyPUx0LmluZGV4T2YoVm4uc3R5bGUpOy0xPT1IciYmKEx0LnB1c2goVm4uc3R5bGUpLEhyPUx0Lmxlbmd0aC0xKSxkZWxldGUgVm4uc3R5bGUsVm4uY2xhc3M9InNqcyIrKHp0fHwiIikrIi0i''@;'; put 'put ''K0hyfW9pPjEmJihWbi5yb3dzcGFuPW9pKSxNcj4xJiYoVm4uY29sc3Bhbj1NciksQ24uZWRpdGFibGU/ZnI9JzxzcGFuIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+JytmcisiPC9zcGFuPiI6bmkmJihWblsiZGF0YS10Il09bmkmJm5pLnR8fCJ6IixudWxsIT1uaS52JiYoVm5bImRhdGEtdiJd''@;'; put 'put ''PW5pLnYpLG51bGwhPW5pLnomJihWblsiZGF0YS16Il09bmkueikpLFZuLmlkPShDbi5pZHx8InNqcyIpKyItIithaSxJbi5wdXNoKFNpKCJ0ZCIsZnIsVm4pKX19dmFyIFowLE1pPXtzdHlsZTpbXX07KFowPVB0WyIhc2hlZXRGb3JtYXQiXSkmJlowLnJvdyYmKFJiKFowLnJvdyksWjAucm93''@;'; put 'put ''LmhweCYmKE1pLnN0eWxlLnB1c2goWyJoZWlnaHQiLFowLnJvdy5ocHgrInB4Il0pLE1pLmhlaWdodD1NYXRoLnJvdW5kKFowLnJvdy5ocHgpKSk7dmFyIG4wPVB0WyIhcm93cyJdO2lmKG4wJiZuMFthbl0pe3ZhciBmbz1uMFthbl07Zm8uaHB4JiYoTWkuc3R5bGUucHVzaChbImhlaWdodCIs''@;'; put 'put ''K2ZvLmhweCsicHgiXSksTWkuaGVpZ2h0PU1hdGgucm91bmQoZm8uaHB4KSksZm8uaGlkZGVuJiZNaS5zdHlsZS5wdXNoKFsiZGlzcGxheSIsIm5vbmUiXSl9dmFyIGlhPVtdO3JldHVybiBNaS5zdHlsZT1NaS5zdHlsZS5yZXZlcnNlKCkuZmlsdGVyKGZ1bmN0aW9uKFgwKXtyZXR1cm4hKGlh''@;'; put 'put ''LmluZGV4T2YoWDBbMF0pPi0xfHwoaWEucHVzaChYMFswXSksMCkpfSkubWFwKGZ1bmN0aW9uKFgwKXtyZXR1cm4gWDBbMF0rIjoiK1gwWzFdfSksMD09TWkuc3R5bGUubGVuZ3RoP2RlbGV0ZSBNaS5zdHlsZTpNaS5zdHlsZT1NaS5zdHlsZS5qb2luKCI7IiksU2koInRyIixJbi5qb2luKCIi''@;'; put 'put ''KSxNaSl9ZnVuY3Rpb24gRmUoUHQsUXQsYW4sQ24sTHQsenQpe0NuLmZvckVhY2goZnVuY3Rpb24oZm4pe2lmKGZuLl9yZWZ8fChmbi5fcmVmPSJzdHJpbmciPT10eXBlb2YgZm4ucmVmP25zKGZuLnJlZik6Zm4ucmVmKSwhKGZuLl9yZWYucy5jPmFufHxmbi5fcmVmLmUuYzxhbnx8Zm4uX3Jl''@;'; put 'put ''Zi5zLnI+UXR8fGZuLl9yZWYuZS5yPFF0fHwic2NhbGUiIT09Zm4udCkpe2lmKCJuIiE9UHQudClyZXR1cm47dmFyIEluO2lmKG51bGw9PWZuLl9taW4pe2ZuLl92YWx1ZXM9W107Zm9yKHZhciBSbj1mbi5fcmVmLnMucjtSbjw9Zm4uX3JlZi5lLnI7KytSbilmb3IodmFyIFZuPWZuLl9yZWYu''@;'; put 'put ''cy5jO1ZuPD1mbi5fcmVmLmUuYzsrK1ZuKXt2YXIgSXI9QXJyYXkuaXNBcnJheSh6dCk/KHp0W1JuXXx8W10pW1ZuXTp6dFtRMCh7cjpSbixjOlZufSldO0lyJiYibiI9PUlyLnQmJmZuLl92YWx1ZXMucHVzaChJci52KX1pZihmbi5fdmFsdWVzLnNvcnQoZnVuY3Rpb24oaWkseXIpe3JldHVy''@;'; put 'put ''biBpaS15cn0pLGZuLl9taW49Zm4uX3ZhbHVlc1swXSxmbi5fbWF4PWZuLl92YWx1ZXMuc2xpY2UoLTEpWzBdLGZuLl9iYW5kPWZuLl9tYXgtZm4uX21pbixmbi5jbWlkKXtzd2l0Y2goZm4uY21pZC50KXtjYXNlIm51bSI6Zm4uX21pZD1mbi5jbWlkLnY7YnJlYWs7Y2FzZSJwZXJjZW50Ijpm''@;'; put 'put ''bi5fbWlkPWZuLmNtaWQudi8xMDAqZm4uX2JhbmQrZm4uX21pbjticmVhaztjYXNlInBlcmNlbnRpbGUiOmZuLl9taWQ9ZnVuY3Rpb24gZHIoSCxyZSl7aWYoMD09cmUpcmV0dXJuIEhbMF07aWYoMTAwPT1yZSlyZXR1cm4gSFtILmxlbmd0aC0xXTt2YXIgd2U9cmUvMTAwKihILmxlbmd0aC0x''@;'; put 'put ''KSx4ZT13ZS1NYXRoLmZsb29yKHdlKTtyZXR1cm4geGUqSFtNYXRoLmNlaWwod2UpXSsoMS14ZSkqSFtNYXRoLmZsb29yKHdlKV19KGZuLl92YWx1ZXMsZm4uY21pZC52KX1mbi5fYmFuZGg9Zm4uX21heC1mbi5fbWlkLGZuLl9iYW5kbD1mbi5fbWlkLWZuLl9taW59fShJbj1mbi5jbWlkP1B0''@;'; put 'put ''LnY+PWZuLl9taWQ/TDQoZm4uY21pZC5jb2xvcixmbi5jbWF4LmNvbG9yLChQdC52LWZuLl9taWQpL2ZuLl9iYW5kaCk6TDQoZm4uY21pbi5jb2xvcixmbi5jbWlkLmNvbG9yLChQdC52LWZuLl9taW4pL2ZuLl9iYW5kbCk6TDQoZm4uY21pbi5jb2xvcixmbi5jbWF4LmNvbG9yLChQdC52LWZu''@;'; put 'put ''Ll9taW4pL2ZuLl9iYW5kKSkmJkx0LnB1c2goImJhY2tncm91bmQtY29sb3I6ICMiK0luKX19KX1mdW5jdGlvbiBaZShQdCxRdCl7dmFyIGFuPXtzcGFuOlF0fHwxLHN0eWxlOiIifSxDbj1bXTtyZXR1cm4gUHQmJlB0LndweCYmKGFuLndpZHRoPU1hdGgucm91bmQoNCpQdC53cHgvMyksQ24u''@;'; put 'put ''cHVzaCgid2lkdGg6IisoUHQud3B4fHwwKSsicHgiKSksQ24ubGVuZ3RoPjAmJihhbi5zdHlsZT1Dbi5qb2luKCI7IikpLFNpKCJjb2wiLG51bGwsYW4pfWZ1bmN0aW9uIFZlKFB0LFF0LGFuKXt2YXIgQ249e2JvcmRlcjowLGNlbGxwYWRkaW5nOjAsY2VsbHNwYWNpbmc6MCxzdHlsZTpbImJv''@;'; put 'put ''cmRlci1jb2xsYXBzZTpjb2xsYXBzZSIsInRhYmxlLWxheW91dDpmaXhlZCJdLmpvaW4oIjsiKX07YW4mJmFuLmlkJiYoQ24uaWQ9YW4uaWQpO3ZhciBMdD1QdFsiIWNvbHMiXSx6dD1QdFsiIXNoZWV0Rm9ybWF0Il07aWYoUHQmJkx0KXtmb3IodmFyIGZuPTAsUm49UXQucy5jO1JuPD1RdC5l''@;'; put 'put ''LmM7KytSbil7dmFyIFZuPUx0W1JuXTtmbis9Vm4mJlZuLndweD9Wbi53cHg6enQmJnp0LmNvbCYmenQuY29sLndweD96dC5jb2wud3B4OjUzfUNuLnN0eWxlKz0iO3dpZHRoOiIrZm4rInB4In12YXIgaWksSXI9WyI8dGFibGUiK2MyKENuKSsiPiJdO2lmKElyLnB1c2goIjxzdHlsZT50ZCB7''@;'; put 'put ''IHBhZGRpbmctdG9wOiAxcHg7IHBhZGRpbmctcmlnaHQ6MXB4OyBwYWRkaW5nLWxlZnQ6MXB4OyB0ZXh0LWFsaWduOmdlbmVyYWw7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgYm9yZGVyOjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiIrKGFuJiZhbi5ncmlkY29sb3I/YW4uZ3JpZGNvbG9yOm5y''@;'; put 'put ''KFB0WyIhZ3JpZGxpbmVzIl0pPyJ0cmFuc3BhcmVudCI6ImJsYWNrIikrIjsgd2hpdGUtc3BhY2U6bm93cmFwOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfTwvc3R5bGU+IiksSXIucHVzaCgnPGNvbGdyb3VwIHNwYW49IicrKFF0LmUuYy1RdC5zLmMrMSkrJyI+JyksTHQpe2Zvcih2YXIgeXI9''@;'; put 'put ''UXQucy5jO3lyPE1hdGgubWluKEx0Lmxlbmd0aCxRdC5lLmMrMSk7Kyt5cikhKGlpPUx0W3lyXSkmJnp0JiZ6dC5jb2wmJihpaT16dC5jb2wpLGlpfHwoaWk9e3dweDo1M30pLElyLnB1c2goWmUoaWksMSkpO1F0LmUuYy1RdC5zLmMrMT5MdC5sZW5ndGgmJihpaT1udWxsLHp0JiZ6dC5jb2wm''@;'; put 'put ''JihpaT16dC5jb2wpLGlpfHwoaWk9e3dweDo1M30pLElyLnB1c2goWmUoaWksUXQuZS5jLVF0LnMuYysxLUx0Lmxlbmd0aCkpKX1lbHNlIGlpPW51bGwsenQmJnp0LmNvbCYmKGlpPXp0LmNvbCksaWl8fChpaT17d3B4OjUzfSksSXIucHVzaChaZShpaSxRdC5lLmMtUXQucy5jKzEpKTtyZXR1''@;'; put 'put ''cm4gSXIucHVzaCgiPC9jb2xncm91cD4iKSxJci5qb2luKCIiKX12YXIgVWU9JzxodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+PHRpdGxlPlNoZWV0SlMgVGFibGUgRXhwb3J0PC90aXRsZT48L2hlYWQ+PGJvZHk+JyxTdD0iPC9ib2R5PjwvaHRtbD4iO3JldHVybnt0b193b3Jr''@;'; put 'put ''Ym9vazpmdW5jdGlvbiB3ZShQdCxRdCl7cmV0dXJuIG1jKFgoUHQsUXQpLFF0KX0sdG9fc2hlZXQ6WCxfcm93OnhlLEJFR0lOOlVlLEVORDpTdCxfcHJlYW1ibGU6VmUsaHRtbF90b19yczpmdW5jdGlvbiByZShQdCl7dmFyIFF0PVtdLGFuPXt9LENuPTA7cmV0dXJuIFB0LnJlcGxhY2UoLzwo''@;'; put 'put ''XC8/KShbXlxzPz4hXC86XSo6fCkoW15ccz8+OlwvXSspW14+XSo+L2dtLGZ1bmN0aW9uKEx0LHp0LGZuLEluLFJuKXt2YXIgSXI9TG4ocXQoTHQpWzBdKS5yZXBsYWNlKC9bPFwvPl0vZywiIiksaWk9UHQuc2xpY2UoQ24sUm4pLnJlcGxhY2UoL1xzL2csIiAiKTtzd2l0Y2goaWkubGVuZ3Ro''@;'; put 'put ''PjAmJihRdC5wdXNoKHt0OiJzIix2OmlpLHM6YW59KSxhbj1sbihhbikpLElyLnRvTG93ZXJDYXNlKCkpe2Nhc2UiYiI6Ii8iIT16dD9hbi5ib2xkPSEwOmRlbGV0ZSBhbi5ib2xkO2JyZWFrO2Nhc2UiaSI6Ii8iIT16dD9hbi5pdGFsaWM9ITA6ZGVsZXRlIGFuLml0YWxpYzticmVhaztjYXNl''@;'; put 'put ''InUiOiIvIiE9enQ/YW4udW5kZXJsaW5lPTE6ZGVsZXRlIGFuLnVuZGVybGluZTticmVhaztjYXNlInMiOiIvIiE9enQ/YW4uc3RyaWtlPSEwOmRlbGV0ZSBhbi5zdHJpa2V9cmV0dXJuIENuPVJuK0x0Lmxlbmd0aCxMdH0pLFF0fSxmcm9tX3NoZWV0OmZ1bmN0aW9uIEl0KFB0LFF0KXt2YXIg''@;'; put 'put ''YW49UXR8fHt9LEx0PW51bGwhPWFuLmZvb3Rlcj9hbi5mb290ZXI6U3QsenQ9W251bGwhPWFuLmhlYWRlcj9hbi5oZWFkZXI6VWUsIiJdLGZuPVtdLEluPShuZXcgRGF0ZSkudmFsdWVPZigpO1B0fHwoUHQ9e30pLFB0WyIhcmVmIl18fChQdFsiIXJlZiJdPSJBMTpBMSIpO3ZhciBSbj1ucyhQ''@;'; put 'put ''dFsiIXJlZiJdKTtpZihhbi5kZW5zZT1BcnJheS5pc0FycmF5KFB0KSxhbi5za2lwZW5kKXt2YXIgVm49Um4uZS5yO2U6Zm9yKDtWbj49Um4ucy5yOy0tVm4pZm9yKHZhciBJcj1Sbi5lLmM7SXI+PVJuLnMuYzstLUlyKWlmKG51bGwhPSgoYW4uZGVuc2U/KFB0W1ZuXXx8W10pW0lyXTpQdFtR''@;'; put 'put ''MCh7cjpWbixjOklyfSldKXx8e30pLnYpYnJlYWsgZTtSbi5lLnI9Vm47dmFyIGlpPVJuLmUuYztlOmZvcig7aWk+PVJuLnMuYzstLWlpKWZvcih2YXIgeXI9Um4uZS5yO3lyPj1Sbi5zLnI7LS15cilpZihudWxsIT0oKGFuLmRlbnNlPyhQdFt5cl18fFtdKVtpaV06UHRbUTAoe3I6eXIsYzpp''@;'; put 'put ''aX0pXSl8fHt9KS52KWJyZWFrIGU7Um4uZS5jPWlpfXp0LnB1c2goVmUoUHQsUm4sYW4pKTtmb3IodmFyIG9pPVJuLnMucjtvaTw9Um4uZS5yOysrb2kpenQucHVzaCh4ZShQdCxSbixvaSxhbixmbixJbikpO3JldHVybiB6dC5wdXNoKCI8L3RhYmxlPiIrTHQpLGFuLmNzcyYmKHp0WzFdPSI8''@;'; put 'put ''c3R5bGU+XG4iK2ZuLm1hcChmdW5jdGlvbihNcixXcil7cmV0dXJuIi5zanMiK0luKyItIitXcisiIHsiK01yKyJ9In0pLmpvaW4oIlxuIikrIjwvc3R5bGU+IiksenQuam9pbigiIil9fX0oKTtmdW5jdGlvbiBHMChILHJlLFgpe3ZhciB3ZT17fTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGdl''@;'; put 'put ''dENvbXB1dGVkU3R5bGUpcmV0dXJuIHdlO3ZhciB4ZT1nZXRDb21wdXRlZFN0eWxlKEgpO2lmKCg3MDA9PXhlWyJmb250LXdlaWdodCJdfHwiYm9sZCI9PXhlWyJmb250LXdlaWdodCJdKSYmKHdlLmJvbGQ9ITApLCh4ZVsiZm9udC1zdHlsZSJdfHwiIikubWF0Y2goL2l0YWxpYy8pJiYod2Uu''@;'; put 'put ''aXRhbGljPSEwKSwoeGVbInRleHQtZGVjb3JhdGlvbiJdfHwiIikubWF0Y2goL3VuZGVybGluZS8pJiYod2UudW5kZXJsaW5lPTEpLCh4ZVsidGV4dC1kZWNvcmF0aW9uIl18fCIiKS5tYXRjaCgvbGluZS10aHJvdWdoLykmJih3ZS5zdHJpa2U9MSkscGFyc2VJbnQoeGVbImZvbnQtc2l6ZSJd''@;'; put 'put ''KSYmKHdlLnN6PXBhcnNlRmxvYXQoeGVbImZvbnQtc2l6ZSJdKSooeGVbImZvbnQtc2l6ZSJdLm1hdGNoKC9weC8pPzMvNDoxKSkseGVbImZvbnQtZmFtaWx5Il0mJih3ZS5uYW1lPXhlWyJmb250LWZhbWlseSJdLnNwbGl0KCIsIilbMF0ucmVwbGFjZSgvXHMqIlxzKi9nLCIiKSkseGUuY29s''@;'; put 'put ''b3Ipe3ZhciBGZT1qOCh4ZS5jb2xvci50b0xvd2VyQ2FzZSgpLCEwKTtGZT49MCYmKHdlLmNvbG9yPXtyZ2I6RmV9KX1zd2l0Y2goeGVbInRleHQtdHJhbnNmb3JtIl0mJih3ZS50ZXh0X3RyYW5zZm9ybT14ZVsidGV4dC10cmFuc2Zvcm0iXS50b0xvd2VyQ2FzZSgpKSwibm9uZSIhPSh4ZVsi''@;'; put 'put ''dGV4dC1zaGFkb3ciXXx8Im5vbmUiKSYmKHdlLnNoYWRvdz0hMCkseGVbInRleHQtYWxpZ24iXSl7Y2FzZSJjZW50ZXIiOndlLmFsaWdubWVudD17aG9yaXpvbnRhbDoiY2VudGVyIn07YnJlYWs7Y2FzZSJyaWdodCI6d2UuYWxpZ25tZW50PXtob3Jpem9udGFsOiJyaWdodCJ9O2JyZWFrO2Nh''@;'; put 'put ''c2UibGVmdCI6d2UuYWxpZ25tZW50PXtob3Jpem9udGFsOiJsZWZ0In07YnJlYWs7Y2FzZSJqdXN0aWZ5Ijp3ZS5hbGlnbm1lbnQ9e2hvcml6b250YWw6Imp1c3RpZnkifX1zd2l0Y2goeGVbInZlcnRpY2FsLWFsaWduIl0pe2Nhc2UidG9wIjpjYXNlIm1pZGRsZSI6Y2FzZSJib3R0b20iOndl''@;'; put 'put ''LmFsaWdubWVudHx8KHdlLmFsaWdubWVudD17fSksd2UuYWxpZ25tZW50LnZlcnRpY2FsPXhlWyJ2ZXJ0aWNhbC1hbGlnbiJdLCJtaWRkbGUiPT13ZS5hbGlnbm1lbnQudmVydGljYWwmJih3ZS5hbGlnbm1lbnQudmVydGljYWw9ImNlbnRlciIpO2JyZWFrO2Nhc2Uic3ViIjpjYXNlInN1cGVy''@;'; put 'put ''Ijp3ZS52YWxpZ249eGVbInZlcnRpY2FsLWFsaWduIl0sd2Uuc3omJih3ZS5zei89LjgzKX12YXIgWmU9cmUmJmdldENvbXB1dGVkU3R5bGUocmUpO3JldHVybiBaZSYmWCYmcmUmJlsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl0uZm9yRWFjaChmdW5jdGlvbihWZSl7dmFyIFVlPVZl''@;'; put 'put ''LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK1ZlLnNsaWNlKDEpLFN0PVplWyJib3JkZXItIitWZSsiLXN0eWxlIl07aWYoKCJub25lIj09U3R8fCFTdCkmJihTdD1aZVsiYm9yZGVyIitVZSsiU3R5bGUiXSksIm5vbmUiIT1TdCYmU3Qpe3ZhciBJdD1wYXJzZUludChaZVsiYm9yZGVyLSIrVmUr''@;'; put 'put ''Ii13aWR0aCJdfHxaZVsiYm9yZGVyIitVZSsiV2lkdGgiXSwxMCksUHQ9InRoaW4iO2lmKEl0PjApe3N3aXRjaChTdCl7Y2FzZSJkb3VibGUiOlB0PSJkb3VibGUiO2JyZWFrO2Nhc2UiZGFzaGVkIjpQdD1JdD49Mj8ibWVkaXVtRGFzaGVkIjoiZGFzaGVkIjticmVhaztjYXNlImRvdHRlZCI6''@;'; put 'put ''UHQ9SXQ+PTI/Im1lZGl1bURhc2hEb3REb3QiOiJkb3R0ZWQiO2JyZWFrO2Nhc2Uic29saWQiOlB0PUl0Pj0zPyJ0aGljayI6SXQ+PTI/Im1lZGl1bSI6InRoaW4ifWlmKHdlW1ZlXT17c3R5bGU6UHR9LFplWyJib3JkZXItIitWZSsiLWNvbG9yIl18fFplWyJib3JkZXIiK1VlKyJDb2xvciJd''@;'; put 'put ''KXt2YXIgUXQ9ajgoKFplWyJib3JkZXItIitWZSsiLWNvbG9yIl18fFplWyJib3JkZXIiK1VlKyJDb2xvciJdKS50b0xvd2VyQ2FzZSgpLCEwKTtRdD49MCYmKHdlW1ZlXS5jb2xvcj17cmdiOlF0fSl9fX19KSx3ZX1mdW5jdGlvbiBrMihILHJlLFgpe3ZhciB3ZT1ILmNoaWxkTm9kZXM7aWYo''@;'; put 'put ''MT09SC5ub2RlVHlwZSlzd2l0Y2goSC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe2Nhc2UicCI6cmUubGVuZ3RoPjAmJnJlLnB1c2goe3Q6InQiLHY6IlxuIixzOlh9KTticmVhaztjYXNlInNlbGVjdCI6cmV0dXJuIGZ1bmN0aW9uIGNvKEgscmUsWCl7cmUucHVzaCh7dDoidCIsdjpILmNoaWxk''@;'; put 'put ''cmVuW0guc2VsZWN0ZWRJbmRleF0uaW5uZXJUZXh0LHM6WH0pfShILHJlLFgpfWlmKHdlLmxlbmd0aD4wKXt2YXIgeGU9RzAoSCxudWxsLCExKTtYJiYoWC51bmRlcmxpbmUmJih4ZS51bmRlcmxpbmU9WC51bmRlcmxpbmUpLFguc3RyaWtlJiYoeGUuc3RyaWtlPVguc3RyaWtlKSk7Zm9yKHZh''@;'; put 'put ''ciBGZT0wO0ZlPHdlLmxlbmd0aDsrK0ZlKXt0cnl7aWYod2VbRmVdLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSljb250aW51ZX1jYXRjaChWZSl7fWsyKHdlW0ZlXSxyZSx4ZSl9ZGVsZXRlIHhlLnRleHRfdHJhbnNmb3JtfWVsc2UgaWYoMz09SC5ub2RlVHlwZSl7dmFyIFplPXt0OiJ0''@;'; put 'put ''Iix2Okgubm9kZVZhbHVlLnJlcGxhY2UoL15bXG4gXSsvLCIgIikucmVwbGFjZSgvW1xuIF0rJC8sIiAiKSxzOlh9O3N3aXRjaChYLnRleHRfdHJhbnNmb3JtKXtjYXNlInVwcGVyY2FzZSI6WmUudj1aZS52LnRvVXBwZXJDYXNlKCk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOlplLnY9WmUudi50''@;'; put 'put ''b0xvd2VyQ2FzZSgpfShyZS5sZW5ndGg+MHx8WmUudiYmIiAiIT1aZS52KSYmcmUucHVzaChaZSl9ZWxzZSAxPT1ILm5vZGVUeXBlJiYiYnIiPT09SC50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJnJlLnB1c2goe3Q6InQiLHY6IlxuIixzOlh9KX1mdW5jdGlvbiB6QShILHJlLFgsd2UseGUpe3Zh''@;'; put 'put ''ciBaZSxGZT1ILmlubmVySFRNTDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdldENvbXB1dGVkU3R5bGUpc3dpdGNoKFplPWdldENvbXB1dGVkU3R5bGUoSCksKFplWyJ3aGl0ZS1zcGFjZSJdfHwiIikubWF0Y2goL3ByZS8pJiYoRmU9RmUucmVwbGFjZSgvXG4vZywiPGJyLz4iKSksKFplWyJ0''@;'; put 'put ''ZXh0LXRyYW5zZm9ybSJdfHwiIikudG9Mb3dlckNhc2UoKSl7Y2FzZSJ1cHBlcmNhc2UiOkZlPUZlLnRvVXBwZXJDYXNlKCk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOkZlPUZlLnRvTG93ZXJDYXNlKCl9dmFyIFZlPWZ1bmN0aW9uIEk2KEgscmUsWCx3ZSl7dmFyIHhlPXt0OiJzIix2OnJlfSxG''@;'; put 'put ''ZT0iIjtpZihIKXtYPUguZ2V0QXR0cmlidXRlKCJkYXRhLXQiKXx8SC5nZXRBdHRyaWJ1dGUoInQiKTt2YXIgWmU9SC5nZXRBdHRyaWJ1dGUoImRhdGEtdiIpfHxILmdldEF0dHJpYnV0ZSgidiIpO2lmKG51bGwhPShGZT1ILmdldEF0dHJpYnV0ZSgiZGF0YS16Iil8fEguZ2V0QXR0cmlidXRl''@;'; put 'put ''KCJ6IikpJiYoeGUuej1GZSksbnVsbCE9WCYmbnVsbCE9WmUpcmV0dXJuIHhlLnQ9WCx4ZS52PVplLHhlfXJldHVybiBudWxsIT1yZSYmKDA9PXJlLmxlbmd0aD94ZS50PVh8fCJ6Ijp3ZS5yYXd8fCFyZS50cmltKCkubGVuZ3RofHwicyI9PVh8fCh4ZT1GcihyZSx3ZSkpKSxGZSYmKHhlLno9''@;'; put 'put ''RmUpLHhlfShILE1hKEZlKSxYLHhlKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdldENvbXB1dGVkU3R5bGUmJihWZS5zPUcwKEgscmUseGUuYm9yZGVycyksZGVsZXRlIFZlLnMudGV4dF90cmFuc2Zvcm0sSC5jaGlsZE5vZGVzLmxlbmd0aD4xfHwxPT1ILmNoaWxkTm9kZXMubGVuZ3RoJiYz''@;'; put 'put ''IT1ILmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpKXN3aXRjaChrMihILFZlLlI9W10sbnVsbCksVmUuUiYmVmUuUltWZS5SLmxlbmd0aC0xXSYmIlxuIj09VmUuUltWZS5SLmxlbmd0aC0xXS52JiZWZS5SLmxlbmd0aC0tLChaZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJDYXNlKCkp''@;'; put 'put ''e2Nhc2UidXBwZXJjYXNlIjpWZS5SLmZvckVhY2goZnVuY3Rpb24oUXQpe1F0LnY9UXQudi50b1VwcGVyQ2FzZSgpfSk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOlZlLlIuZm9yRWFjaChmdW5jdGlvbihRdCl7UXQudj1RdC52LnRvTG93ZXJDYXNlKCl9KX1pZigicyI9PVZlLnQpe3ZhciBVZT1W''@;'; put 'put ''ZS52Lm1hdGNoKC9cbi8pOyFVZSYmVmUuUiYmVmUuUi5mb3JFYWNoKGZ1bmN0aW9uKFF0KXsic3RyaW5nIj09dHlwZW9mIFF0LnYmJlF0LnYubWF0Y2goL1xuLykmJihVZT0hMCl9KSwicyI9PVZlLnQmJlVlJiYoVmUuc3x8KFZlLnM9e30pLFZlLnMuYWxpZ25tZW50fHwoVmUucy5hbGlnbm1l''@;'; put 'put ''bnQ9e30pLFZlLnMuYWxpZ25tZW50LndyYXBUZXh0PSEwKX1pZihyZSl7dmFyIFN0PSIiLEl0PXJlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJBIik7aWYoSXQmJkl0Lmxlbmd0aClmb3IodmFyIFB0PTA7UHQ8SXQubGVuZ3RoJiYoIUl0W1B0XS5oYXNBdHRyaWJ1dGUoImhyZWYiKXx8IiMiPT0o''@;'; put 'put ''U3Q9SXRbUHRdLmdldEF0dHJpYnV0ZSgiaHJlZiIpKS5jaGFyQXQoMCkpOysrUHQpO1N0JiYiIyIhPVN0LmNoYXJBdCgwKSYmKFZlLmw9e1RhcmdldDpTdH0pfXJldHVybiBWZX1mdW5jdGlvbiBWaChILHJlLFgpe3ZhciB4ZSx3ZT1yZS5yb3dzO2lmKCF3ZSl7aWYoWCYmbnVsbCE9WC5vcmln''@;'; put 'put ''aW4pdGhyb3ciVW5zdXBwb3J0ZWQgb3JpZ2luIHdoZW4gIityZS50YWdOYW1lKyIgaXMgbm90IGEgVEFCTEUiO3JldHVybiBmdW5jdGlvbiByRihILHJlLFgpe1g9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShYfHx7fSkpO3ZhciBGZT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19O0hbIiFt''@;'; put 'put ''ZXJnZXMiXXx8KEhbIiFtZXJnZXMiXT1bXSk7Zm9yKHZhciBWZSxaZT1yZS5jaGlsZHJlbixVZT0wLFN0PTA7U3Q8WmUubGVuZ3RoOysrU3Qpe3ZhciBRdCxJdD1aZVtTdF0sUHQ9IiI7dHJ5eyJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZT9RdD1nZXRDb21wdXRlZFN0eWxl''@;'; put 'put ''Okl0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcmJiJmdW5jdGlvbiI9PXR5cGVvZiBJdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihRdD1JdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUpfWNhdGNoKGFuKXt9aWYoIVF0''@;'; put 'put ''fHwibm9uZSIhPVF0KEl0KS5kaXNwbGF5KXN3aXRjaChJdC50YWdOYW1lLnRvVXBwZXJDYXNlKCkpe2Nhc2UiVEFCTEUiOlVlPS0xLEhbIiFyZWYiXSYmKFgub3JpZ2luPS0xKSxWaChILEl0LFgpO2JyZWFrO2Nhc2UiQlIiOmNhc2UiSFIiOlVlPS0xLEhbIiFyZWYiXT8oKysoRmU9bnMoSFsi''@;'; put 'put ''IXJlZiJdKSkuZS5yLEhbIiFyZWYiXT1BYShGZSkpOkhbIiFyZWYiXT0iQTE6QTEiO2JyZWFrO2Nhc2UiRElWIjpjYXNlIlAiOmNhc2UiSDEiOmNhc2UiSDIiOmNhc2UiSDMiOmNhc2UiSDQiOmNhc2UiSDUiOmNhc2UiSDYiOlVlPS0xLFZlPXpBKEl0LG51bGwsIiIsMCxYKSxIWyIhcmVmIl0/''@;'; put 'put ''KFgub3JpZ2luPS0xLGx1KEgsW1tWZV1dLFgpKTooSFsiIXJlZiJdPSJBMSIsQXJyYXkuaXNBcnJheShIKT8oSFswXXx8KEhbMF09W10pLEhbMF1bMF09VmUpOkguQTE9VmUpLEhbIiFyb3dzIl18fChIWyIhcm93cyJdPVtdKSxRdCYmKEZlPW5zKEhbIiFyZWYiXSksKFB0PVF0KEl0KS5oZWln''@;'; put 'put ''aHQpJiYiYXV0byIhPVB0JiYoSFsiIXJvd3MiXVtGZS5lLnJdPXtocHQ6cGFyc2VJbnQoUHQsMTApfSkpO2JyZWFrO2Nhc2UiU1BBTiI6Y2FzZSJBIjpjYXNlIkIiOmNhc2UiRU0iOmNhc2UiSSI6Y2FzZSJGT05UIjpjYXNlIlMiOmNhc2UiU1VCIjpjYXNlIlNVUCI6Y2FzZSJVIjpWZT16QShJ''@;'; put 'put ''dCxudWxsLCIiLDAsWCksSFsiIXJlZiJdfHwoSFsiIXJlZiJdPSJBMTpBMSIpLGx1KEgsW1tWZV1dLHtvcmlnaW46UTAoe3I6KFVlPDA/MTowKSsoRmU9bnMoSFsiIXJlZiJdKSkuZS5yLGM6KytVZX0pfSk7YnJlYWs7Y2FzZSJETCI6Y2FzZSJVTCI6Y2FzZSJPTCI6VWU9LTEsY29uc29sZS5l''@;'; put 'put ''cnJvcigiSFRNTCBDb252ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgbGlzdCBlbGVtZW50ICIrSXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpKTticmVhaztkZWZhdWx0OlVlPS0xLGNvbnNvbGUuZXJyb3IoIlNraXBwaW5nICIrSXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpKX19cmV0dXJuIEh9KEgs''@;'; put 'put ''cmUsWCl9dHJ5eyJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZT94ZT1nZXRDb21wdXRlZFN0eWxlOnJlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcmJiJmdW5jdGlvbiI9PXR5cGVvZiByZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJih4''@;'; put 'put ''ZT1yZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUpfWNhdGNoKFgwKXt9dmFyIEZlPVh8fHt9LFplPTAsVmU9MDtpZihudWxsIT1GZS5vcmlnaW4paWYoIm51bWJlciI9PXR5cGVvZiBGZS5vcmlnaW4pWmU9RmUub3JpZ2luO2Vsc2V7dmFyIFVlPSJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgRmUub3JpZ2luP3BvKEZlLm9yaWdpbik6RmUub3JpZ2luO1plPVVlLnIsVmU9VWUuY312YXIgU3Q9TWF0aC5taW4oRmUuc2hlZXRSb3dzfHwxZTcsd2UubGVuZ3RoKSxJdD17czp7cjowLGM6MH0sZTp7cjpaZSxjOlZlfX07aWYoSFsiIXJlZiJdKXt2YXIgUHQ9bnMoSFsiIXJl''@;'; put 'put ''ZiJdKTtJdC5zLnI9TWF0aC5taW4oSXQucy5yLFB0LnMuciksSXQucy5jPU1hdGgubWluKEl0LnMuYyxQdC5zLmMpLEl0LmUucj1NYXRoLm1heChJdC5lLnIsUHQuZS5yKSxJdC5lLmM9TWF0aC5tYXgoSXQuZS5jLFB0LmUuYyksLTE9PVplJiYoSXQuZS5yPVplPVB0LmUucisxKX12YXIgUXQ9''@;'; put 'put ''W10sYW49MCxDbj1IWyIhcm93cyJdfHwoSFsiIXJvd3MiXT1bXSksTHQ9MCx6dD0wLGZuPTAsSW49MCxSbj0wLFZuPTA7Zm9yKEhbIiFjb2xzIl18fChIWyIhY29scyJdPVtdKTtMdDx3ZS5sZW5ndGgmJnp0PFN0OysrTHQpe2Zvcih2YXIgSXI9d2VbTHRdLGlpPUlyLnBhcmVudEVsZW1lbnQ7''@;'; put 'put ''IlRBQkxFIiE9aWkudGFnTmFtZS50b1VwcGVyQ2FzZSgpOylpaT1paS5wYXJlbnRFbGVtZW50O2lmKGlpPT1yZSl7ZTppZih2b2lkIDAhPT14ZSl7dmFyIHlyPXhlKElyKTtpZihudWxsPT15cilicmVhayBlO2lmKHlyLnN0eWxlfHwoeXIuc3R5bGU9e30pLEZlLmRpc3BsYXkmJiJub25lIj09''@;'; put 'put ''KHlyLmRpc3BsYXl8fHlyLnN0eWxlLmRpc3BsYXkpKWNvbnRpbnVlOyJub25lIj09KHlyLmRpc3BsYXl8fHlyLnN0eWxlLmRpc3BsYXkpJiYoKENuW3p0XXx8KENuW3p0XT17fSkpLmhpZGRlbj0hMCl9dmFyIG9pPUlyLmNlbGxzO2Zvcihmbj1Jbj0wO2ZuPG9pLmxlbmd0aDsrK2ZuKXt2YXIg''@;'; put 'put ''TXI9b2lbZm5dLFdyPW51bGw7aWYodm9pZCAwPT09eGV8fChudWxsPT1XciYmKFdyPXhlKE1yKSksV3Iuc3R5bGV8fChXci5zdHlsZT17fSksIUZlLmRpc3BsYXl8fG51bGw9PVdyfHwibm9uZSIhPShXci5kaXNwbGF5fHxXci5zdHlsZS5kaXNwbGF5KSkpe2ZvcihWbj0rTXIuZ2V0QXR0cmli''@;'; put 'put ''dXRlKCJjb2xzcGFuIil8fDEsYW49MDthbjxRdC5sZW5ndGg7Kythbil7dmFyIGFpPVF0W2FuXTthaS5zLmM9PUluK1ZlJiZhaS5zLnI8enQrWmUmJnp0K1plPD1haS5lLnImJihJbj1haS5lLmMrMS1WZSxhbj0tMSl9KChSbj0rTXIuZ2V0QXR0cmlidXRlKCJyb3dzcGFuIil8fDEpPjF8fFZu''@;'; put 'put ''PjEpJiZRdC5wdXNoKHtzOntyOnp0K1plLGM6SW4rVmV9LGU6e3I6enQrWmUrKFJufHwxKS0xLGM6SW4rVmUrKFZufHwxKS0xfX0pO3ZhciBuaT1Nci5nZXRBdHRyaWJ1dGUoInQiKXx8IiIsZnI9TXIuZ2V0QXR0cmlidXRlKCJiZ2NvbG9yIik7ZTppZih2b2lkIDAhPT14ZSl7aWYobnVsbD09''@;'; put 'put ''V3ImJihXcj14ZShNcikpLG51bGw9PVdyKWJyZWFrIGU7aWYoV3Iuc3R5bGV8fChXci5zdHlsZT17fSksMT09Vm4mJldyLndpZHRoJiYoSFsiIWNvbHMiXVtJbitWZV09SFsiIWNvbHMiXVtJbitWZV18fHt9LFdyLndpZHRoLm1hdGNoKC9weC8pP0hbIiFjb2xzIl1bSW4rVmVdLndweD1NYXRo''@;'; put 'put ''Lm1heChwYXJzZUludChXci53aWR0aCwxMCkrNSxIWyIhY29scyJdW0luK1ZlXS53cHh8fDApOldyLndpZHRoLm1hdGNoKC9wdC8pJiYoSFsiIWNvbHMiXVtJbitWZV0ud3B4PU1hdGgubWF4KDQqcGFyc2VJbnQoV3Iud2lkdGgsMTApLzMrNSxIWyIhY29scyJdW0luK1ZlXS53cHh8fDApKSks''@;'; put 'put ''Um48PTEpe0NuW3p0K1plXXx8KENuW3p0K1plXT17fSk7dmFyIGhpPVdyLmhlaWdodDsoaGk9aGkubWF0Y2goL3B0Lyk/bWYocGFyc2VJbnQoaGksMTApKTpwYXJzZUludChoaSwxMCkpPihDblt6dCtaZV0uaHB4fHxtZihDblt6dCtaZV0uaHB0KXx8MCkmJihkZWxldGUgQ25benQrWmVdLmhw''@;'; put 'put ''dCxDblt6dCtaZV0uaHB4PWhpKX19dmFyIHcwPU1yO2lmKE1yLmZpcnN0RWxlbWVudENoaWxkJiYxPT1Nci5jaGlsZHJlbi5sZW5ndGgmJiJzcGFuIj09TXIuZmlyc3RFbGVtZW50Q2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Zm9yKHZhciBKMD0wLGlvPU1yLmNoaWxkTm9kZXMsYjA9''@;'; put 'put ''MDtiMDxpby5sZW5ndGg7KytiMCkzPT1pb1tiMF0ubm9kZVR5cGUmJisrSjA7MD09SjAmJihNcj1Nci5maXJzdEVsZW1lbnRDaGlsZCl9dmFyIGJpPXpBKE1yLHcwLG5pLDAsRmUpO2lmKFdyKXt2YXIgenI9eGUoTXIpO2lmKHpyJiYhenIuc3R5bGUmJih6ci5zdHlsZT17fSksKHpyJiZ6clsi''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvciJdfHxXclsiYmFja2dyb3VuZC1jb2xvciJdKSYmKGJpLnN8fChiaS5zPXt9KSwhYmkucy5mZ0NvbG9yKSl0cnl7dmFyIERpPXpyJiZ6clsiYmFja2dyb3VuZC1jb2xvciJdfHxXclsiYmFja2dyb3VuZC1jb2xvciJdO0RpLm1hdGNoKC9yZ2JhWyhdXHMqMC4qWyld''@;'; put 'put ''L2kpJiYoRGk9V3JbImJhY2tncm91bmQtY29sb3IiXSk7dmFyIGNpPWo4KERpLnRvTG93ZXJDYXNlKCksITApO2NpPj0wJiYoYmkucy5mZ0NvbG9yPXtyZ2I6Y2l9KX1jYXRjaChYMCl7fXN3aXRjaChXclsidmVydGljYWwtYWxpZ24iXSl7Y2FzZSJtaWRkbGUiOmNhc2UiYmFzZWxpbmUiOmJp''@;'; put 'put ''LnN8fChiaS5zPXt9KSxiaS5zLmFsaWdubWVudHx8KGJpLnMuYWxpZ25tZW50PXt9KSxiaS5zLmFsaWdubWVudC52ZXJ0aWNhbD0iY2VudGVyIn19aWYoZnImJihiaS5zfHwoYmkucz17fSksIWJpLnMuZmdDb2xvcikpdHJ5e3ZhciBIcj1qOChmci50b0xvd2VyQ2FzZSgpLCEwKTtIcj49MCYm''@;'; put 'put ''KGJpLnMuZmdDb2xvcj17cmdiOkhyfSl9Y2F0Y2goWDApe31pZihGZS5kZW5zZT8oSFt6dCtaZV18fChIW3p0K1plXT1bXSksSFt6dCtaZV1bSW4rVmVdPWJpKTpIW1EwKHtjOkluK1ZlLHI6enQrWmV9KV09YmksUm4+MXx8Vm4+MSlmb3IodmFyIE1pPXp0O01pPHp0K1JuOysrTWkpZm9yKHZh''@;'; put 'put ''ciBaMD1JbjtaMDxJbitWbjsrK1owKXp0PT1NaSYmSW49PVowfHwoRmUuZGVuc2U/KEhbTWkrWmVdfHwoSFtNaStaZV09W10pLEhbTWkrWmVdW1owK1ZlXT17dDoieiIsczpsbihiaS5zfHx7fSl9KTpIW1EwKHtjOlowK1ZlLHI6TWkrWmV9KV09e3Q6InoiLHM6bG4oYmkuc3x8e30pfSk7SXQu''@;'; put 'put ''ZS5jPEluK1ZlJiYoSXQuZS5jPUluK1ZlKSxJbis9Vm59fSsrenR9fWlmKFF0Lmxlbmd0aCYmKEhbIiFtZXJnZXMiXT0oSFsiIW1lcmdlcyJdfHxbXSkuY29uY2F0KFF0KSksSXQuZS5yPU1hdGgubWF4KEl0LmUucix6dC0xK1plKSxIWyIhcmVmIl09QWEoSXQpLHp0Pj1TdCYmKEhbIiFmdWxs''@;'; put 'put ''cmVmIl09QWEoKEl0LmUucj13ZS5sZW5ndGgtTHQrenQtMStaZSxJdCkpKSxGZS5ib3JkZXJzKWZvcih6dD1JdC5zLnI7enQ8PUl0LmUucjsrK3p0KWZvcihJbj1JdC5zLmM7SW48PUl0LmUuYzsrK0luKWlmKCFGZS5kZW5zZSl7dmFyIG4wPUhbUTAoe3I6enQsYzpJbn0pXTtpZighbjB8fCFu''@;'; put 'put ''MC5zKWNvbnRpbnVlO2lmKHp0PjApe3ZhciBmbz1IW1EwKHtyOnp0LTEsYzpJbn0pXTtmbyYmZm8ucyYmZm8ucy5ib3R0b20mJmRlbGV0ZSBuMC5zLnRvcH1pZihJbj4wKXt2YXIgaWE9SFtRMCh7cjp6dCxjOkluLTF9KV07aWEmJmlhLnMmJmlhLnMuYm90dG9tJiZkZWxldGUgbjAucy5sZWZ0''@;'; put 'put ''fX1yZXR1cm4gSH1mdW5jdGlvbiBuQyhILHJlKXtyZXR1cm4gVmgoKHJlfHx7fSkuZGVuc2U/W106e30sSCxyZSl9dmFyIHJDPWZ1bmN0aW9uKCl7dmFyIEg9ZnVuY3Rpb24od2UseGUsRmUpe3ZhciBaZT13ZS5yZXBsYWNlKC9bXHRcclxuXS9nLCIgIikudHJpbSgpLnJlcGxhY2UoLyArL2cs''@;'; put 'put ''IiAiKS5yZXBsYWNlKC88dGV4dDpzXC8+L2csIiAiKS5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz0iKFxkKykiXC8+L2csZnVuY3Rpb24oSXQsUHQpe3JldHVybiBBcnJheShwYXJzZUludChQdCwxMCkrMSkuam9pbigiICIpfSkucmVwbGFjZSgvPHRleHQ6dGFiW14+XSpcLz4vZywiXHQiKS5y''@;'; put 'put ''ZXBsYWNlKC88dGV4dDpsaW5lLWJyZWFrXC8+L2csIlxuIiksVmU9Z3IoWmUucmVwbGFjZSgvPFtePl0qPi9nLCIiKSksVWU9W10sU3Q9MDtyZXR1cm4gWmUucmVwbGFjZSgvKDx0ZXh0OnNwYW4uKj8+KSguKj8pPFtcL110ZXh0OnNwYW4+L2csZnVuY3Rpb24oSXQsUHQsUXQsYW4pe2FuIT1T''@;'; put 'put ''dCYmVWUucHVzaCh7dDoicyIsdjpncihaZS5zbGljZShTdCxhbikpfSk7dmFyIENuPXt0OiJzIix2OmdyKFF0KX0sTHQ9cXQoUHQpWyJzdHlsZS1uYW1lIl07cmV0dXJuIEx0JiZGZVtMdF0mJihDbi5zPWxuKEZlW0x0XSkpLFVlLnB1c2goQ24pLFN0PWFuK0l0Lmxlbmd0aCwiIn0pLFN0PFpl''@;'; put 'put ''Lmxlbmd0aCYmVWUucHVzaCh7dDoicyIsdjpncihaZS5zbGljZShTdCkpfSksW1ZlLFVlXX0scmU9e2RheTpbImQiLCJkZCJdLG1vbnRoOlsibSIsIm1tIl0seWVhcjpbInkiLCJ5eSJdLGhvdXJzOlsiaCIsImhoIl0sbWludXRlczpbIm0iLCJtbSJdLHNlY29uZHM6WyJzIiwic3MiXSwiYW0t''@;'; put 'put ''cG0iOlsiQS9QIiwiQU0vUE0iXSwiZGF5LW9mLXdlZWsiOlsiZGRkIiwiZGRkZCJdLGVyYTpbImUiLCJlZSJdLHF1YXJ0ZXI6WyJcXFFtIiwnbVxcInRoIHF1YXJ0ZXIiJ119LFg9ZnVuY3Rpb24od2UseGUpe3ZhciBGZT1xdCh3ZS5zbGljZSgwLHdlLmluZGV4T2YoIj4iKSkpLFplPXdlLnNs''@;'; put 'put ''aWNlKHdlLmluZGV4T2YoIj4iKSsxKSxWZT17bmFtZTpGZS5uYW1lLGZhbWlseTpGZS5mYW1pbHl9O1tbInBhcmVudCIsInBhcmVudC1zdHlsZS1uYW1lIl0sWyJkYXRhbmFtZSIsImRhdGEtc3R5bGUtbmFtZSJdLFsibXBuYW1lIiwibWFzdGVyLXBhZ2UtbmFtZSJdXS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKFN0KXtGZVtTdFsxXV0mJihWZVtTdFswXV09RmVbU3RbMV1dKX0pO3ZhciBVZT17fTtaZS5yZXBsYWNlKEd0LGZ1bmN0aW9uKFN0KXt2YXIgSXQ9cXQoU3QpO2lmKCI8c3R5bGU6dGV4dC1wcm9wZXJ0aWVzIj09PUl0WzBdKXtpZihJdFsiZm9udC13ZWlnaHQiXSYmKFVlLmJvbGQ9Kygi''@;'; put 'put ''Ym9sZCI9PUl0WyJmb250LXdlaWdodCJdfHwiNzAwIj09SXRbImZvbnQtd2VpZ2h0Il0pKSwoIml0YWxpYyI9PUl0WyJmb250LXN0eWxlIl18fCJvYmxpcXVlIj09SXRbImZvbnQtc3R5bGUiXSkmJihVZS5pdGFsaWM9MSksIm5vbmUiIT0oSXRbInRleHQtdW5kZXJsaW5lLXN0eWxlIl18fCJu''@;'; put 'put ''b25lIik/VWUudW5kZXJsaW5lPSJkb3VibGUiPT1JdFsidGV4dC11bmRlcmxpbmUtdHlwZSJdPzI6MTooSXRbInRleHQtdW5kZXJsaW5lLXN0eWxlIl18fCJub25lIj09SXRbInRleHQtdW5kZXJsaW5lLXR5cGUiXSkmJihVZS51bmRlcmxpbmU9MCksKEl0WyJmb250LXNpemUiXXx8IiIpLm1h''@;'; put 'put ''dGNoKC9wdCQvKSYmKFVlLnN6PStJdFsiZm9udC1zaXplIl0ucmVwbGFjZSgicHQiLCIiKSksIm5vbmUiIT0oSXRbInRleHQtbGluZS10aHJvdWdoLXN0eWxlIl18fCJub25lIikmJihVZS5zdHJpa2U9MSksSXRbImZvbnQtbmFtZSJdJiYoVWUubmFtZT1JdFsiZm9udC1uYW1lIl0pLEl0LmNv''@;'; put 'put ''bG9yKXt2YXIgUHQ9ajgoSXQuY29sb3IsITApO1B0Pj0wJiYoVWUuY29sb3I9UHQpfXN3aXRjaChJdFsidGV4dC1wb3NpdGlvbiJdKXtjYXNlInN1cGVyIjpVZS52YWxpZ249InN1cGVyIjticmVhaztjYXNlInN1YiI6VWUudmFsaWduPSJzdWIiO2JyZWFrO2RlZmF1bHQ6KEl0WyJ0ZXh0LXBv''@;'; put 'put ''c2l0aW9uIl18fCIiKS5tYXRjaCgvJS8pJiYoVWUudmFsaWduPSItIj09SXRbInRleHQtcG9zaXRpb24iXS5jaGFyQXQoMCk/InN1YiI6InN1cGVyIil9Im5vbmUiIT0oSXRbInRleHQtc2hhZG93Il18fCJub25lIikmJihVZS5zaGFkb3c9MSl9cmV0dXJuIiJ9KSx4ZVtGZS5uYW1lXT1VZX07''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKHhlLEZlKXt2YXIgU3QsSXQsQ24sTHQsUm4sVm4sWmU9RmV8fHt9LFZlPWRUKHhlKSxVZT1bXSxQdD17bmFtZToiIn0sUXQ9IiIsYW49MCx6dD17fSxmbj1bXSxJbj1aZS5kZW5zZT9bXTp7fSxJcj17dmFsdWU6IiJ9LGlpPSIiLHlyPTAsTXI9W10sV3I9LTEsYWk9''@;'; put 'put ''LTEsbmk9e3M6e3I6MWU2LGM6MWU3fSxlOntyOjAsYzowfX0sZnI9MCxoaT17fSx3MD1bXSxKMD17fSxpbz0wLGIwPTAsYmk9W10senI9MSxEaT0xLGNpPVtdLEhyPXtOYW1lczpbXX0sTWk9e30sWjA9WyIiLCIiXSxuMD1bXSxmbz17fSxpYT17fSxYMD0wLHppPSIiLGcwPTAsUzA9ITEsQWk9''@;'; put 'put ''ITEseDA9MDtmb3IoZjUubGFzdEluZGV4PTAsVmU9VmUucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZ20sIiIpLnJlcGxhY2UoLzwhRE9DVFlQRVteXFtdKlxbW15cXV0qXF0+L2dtLCIiKTtSbj1mNS5leGVjKFZlKTspc3dpdGNoKFJuWzNdPVJuWzNdLnJlcGxhY2UoL18uKiQvLCIiKSl7''@;'; put 'put ''Y2FzZSJ0YWJsZSI6Y2FzZSJcdTVkZTVcdTRmNWNcdTg4NjgiOiIvIj09PVJuWzFdPyhJblsiIXJlZiJdPW5pLmUuYz49bmkucy5jJiZuaS5lLnI+PW5pLnMucj9BYShuaSk6IkExOkExIixaZS5zaGVldFJvd3M+MCYmWmUuc2hlZXRSb3dzPD1uaS5lLnImJihJblsiIWZ1bGxyZWYiXT1Jblsi''@;'; put 'put ''IXJlZiJdLG5pLmUucj1aZS5zaGVldFJvd3MtMSxJblsiIXJlZiJdPUFhKG5pKSksdzAubGVuZ3RoJiYoSW5bIiFtZXJnZXMiXT13MCksYmkubGVuZ3RoJiYoSW5bIiFyb3dzIl09YmkpLENuLm5hbWU9Q24uXHU1NDBkXHU3OWYwfHxDbi5uYW1lLCJ1bmRlZmluZWQiIT10eXBlb2YgSlNPTiYm''@;'; put 'put ''SlNPTi5zdHJpbmdpZnkoQ24pLGZuLnB1c2goQ24ubmFtZSksenRbQ24ubmFtZV09SW4sQWk9ITEpOiIvIiE9PVJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikmJihDbj1xdChSblswXSwhMSksV3I9YWk9LTEsbmkucy5yPW5pLnMuYz0xZTcsbmkuZS5yPW5pLmUuYz0wLEluPVplLmRlbnNl''@;'; put 'put ''P1tdOnt9LHcwPVtdLGJpPVtdLEFpPSEwKTticmVhaztjYXNlInRhYmxlLXJvdy1ncm91cCI6Ii8iPT09Um5bMV0/LS1mcjorK2ZyO2JyZWFrO2Nhc2UidGFibGUtcm93IjpjYXNlIlx1ODg0YyI6aWYoIi8iPT09Um5bMV0pe1dyKz16cix6cj0xO2JyZWFrfWlmKChMdD1xdChSblswXSwhMSkp''@;'; put 'put ''Llx1ODg0Y1x1NTNmNz9Xcj1MdC5cdTg4NGNcdTUzZjctMTotMT09V3ImJihXcj0wKSwoenI9K0x0WyJudW1iZXItcm93cy1yZXBlYXRlZCJdfHwxKTwxMClmb3IoeDA9MDt4MDx6cjsrK3gwKWZyPjAmJihiaVtXcit4MF09e2xldmVsOmZyfSk7YWk9LTE7YnJlYWs7Y2FzZSJjb3ZlcmVkLXRh''@;'; put 'put ''YmxlLWNlbGwiOiIvIiE9PVJuWzFdJiYrK2FpLFplLnNoZWV0U3R1YnMmJihaZS5kZW5zZT8oSW5bV3JdfHwoSW5bV3JdPVtdKSxJbltXcl1bYWldPXt0OiJ6In0pOkluW1EwKHtyOldyLGM6YWl9KV09e3Q6InoifSksaWk9IiIsTXI9W107YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsIjpjYXNlIlx1''@;'; put 'put ''NjU3MFx1NjM2ZSI6aWYoIi8iPT09Um5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSkrK2FpLElyPXF0KFJuWzBdLCExKSxEaT1wYXJzZUludChJclsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxWbj17dDoieiIsdjpudWxsfSxJci5mb3JtdWxhJiYwIT1aZS5jZWxsRm9y''@;'; put 'put ''bXVsYSYmKFZuLmY9dUEoZ3IoSXIuZm9ybXVsYSkpKSwic3RyaW5nIj09KElyLlx1NjU3MFx1NjM2ZVx1N2M3Ylx1NTc4Ynx8SXJbInZhbHVlLXR5cGUiXSkmJihWbi50PSJzIixWbi52PWdyKElyWyJzdHJpbmctdmFsdWUiXXx8IiIpLFplLmRlbnNlPyhJbltXcl18fChJbltXcl09W10pLElu''@;'; put 'put ''W1dyXVthaV09Vm4pOkluW1EwKHtyOldyLGM6YWl9KV09Vm4pLGFpKz1EaS0xO2Vsc2UgaWYoIi8iIT09Um5bMV0pe0RpPTE7dmFyIGYwPXpyP1dyK3pyLTE6V3I7aWYoKythaT5uaS5lLmMmJihuaS5lLmM9YWkpLGFpPG5pLnMuYyYmKG5pLnMuYz1haSksV3I8bmkucy5yJiYobmkucy5yPVdy''@;'; put 'put ''KSxmMD5uaS5lLnImJihuaS5lLnI9ZjApLG4wPVtdLGZvPXt9LFZuPXt0OihJcj1xdChSblswXSwhMSkpLlx1NjU3MFx1NjM2ZVx1N2M3Ylx1NTc4Ynx8SXJbInZhbHVlLXR5cGUiXSx2Om51bGx9LFplLmNlbGxGb3JtdWxhKWlmKElyLmZvcm11bGEmJihJci5mb3JtdWxhPWdyKElyLmZvcm11''@;'; put 'put ''bGEpKSxJclsibnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQiXSYmSXJbIm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkIl0mJihpbz1wYXJzZUludChJclsibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsYjA9cGFyc2VJbnQoSXJbIm51bWJlci1tYXRyaXgtY29sdW1u''@;'; put 'put ''cy1zcGFubmVkIl0sMTApfHwwLFZuLkY9QWEoSjA9e3M6e3I6V3IsYzphaX0sZTp7cjpXcitpby0xLGM6YWkrYjAtMX19KSxjaS5wdXNoKFtKMCxWbi5GXSkpLElyLmZvcm11bGEpVm4uZj11QShJci5mb3JtdWxhKTtlbHNlIGZvcih4MD0wO3gwPGNpLmxlbmd0aDsrK3gwKVdyPj1jaVt4MF1b''@;'; put 'put ''MF0ucy5yJiZXcjw9Y2lbeDBdWzBdLmUuciYmYWk+PWNpW3gwXVswXS5zLmMmJmFpPD1jaVt4MF1bMF0uZS5jJiYoVm4uRj1jaVt4MF1bMV0pO3N3aXRjaCgoSXJbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8SXJbIm51bWJlci1yb3dzLXNwYW5uZWQiXSkmJihpbz1wYXJzZUludChJclsi''@;'; put 'put ''bnVtYmVyLXJvd3Mtc3Bhbm5lZCJdLDEwKXx8MCxiMD1wYXJzZUludChJclsibnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCx3MC5wdXNoKEowPXtzOntyOldyLGM6YWl9LGU6e3I6V3IraW8tMSxjOmFpK2IwLTF9fSkpLElyWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdJiYoRGk9''@;'; put 'put ''cGFyc2VJbnQoSXJbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl0sMTApKSxWbi50KXtjYXNlImJvb2xlYW4iOlZuLnQ9ImIiLFZuLnY9QmkoSXJbImJvb2xlYW4tdmFsdWUiXSk7YnJlYWs7Y2FzZSJmbG9hdCI6Y2FzZSJwZXJjZW50YWdlIjpjYXNlImN1cnJlbmN5IjpWbi50PSJuIixWbi52''@;'; put 'put ''PXBhcnNlRmxvYXQoSXIudmFsdWUpO2JyZWFrO2Nhc2UiZGF0ZSI6Vm4udD0iZCIsVm4udj1wbihJclsiZGF0ZS12YWx1ZSJdKSxaZS5jZWxsRGF0ZXN8fChWbi50PSJuIixWbi52PWN0KFZuLnYpKSxWbi56PSJtL2QveXkiO2JyZWFrO2Nhc2UidGltZSI6Vm4udD0ibiIsVm4udj1qdChJclsi''@;'; put 'put ''dGltZS12YWx1ZSJdKS84NjQwMCxaZS5jZWxsRGF0ZXMmJihWbi50PSJkIixWbi52PU50KFZuLnYpKSxWbi56PSJISDpNTTpTUyI7YnJlYWs7Y2FzZSJudW1iZXIiOlZuLnQ9Im4iLFZuLnY9cGFyc2VGbG9hdChJci5cdTY1NzBcdTYzNmVcdTY1NzBcdTUwM2MpO2JyZWFrO2RlZmF1bHQ6aWYo''@;'; put 'put ''InN0cmluZyIhPT1Wbi50JiYidGV4dCIhPT1Wbi50JiZWbi50KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdmFsdWUgdHlwZSAiK1ZuLnQpO1ZuLnQ9InMiLG51bGwhPUlyWyJzdHJpbmctdmFsdWUiXSYmKGlpPWdyKElyWyJzdHJpbmctdmFsdWUiXSksTXI9W10pfX1lbHNle2lmKFMw''@;'; put 'put ''PSExLCJzIj09PVZuLnQmJihWbi52PWlpfHwiIixNci5sZW5ndGgmJihWbi5SPU1yKSxTMD0wPT15ciksTWkuVGFyZ2V0JiYoVm4ubD1NaSksbjAubGVuZ3RoPjAmJihWbi5jPW4wLG4wPVtdKSxpaSYmITEhPT1aZS5jZWxsVGV4dCYmKFZuLnc9aWkpLFMwJiYoVm4udD0ieiIsZGVsZXRlIFZu''@;'; put 'put ''LnYpLFplLmNlbGxIVE1MJiYoVm4uaD1Wbi5SP1NoKFZuLlIpOmUwKCIiK1ZuLnYpKSwoIVMwfHxaZS5zaGVldFN0dWJzKSYmIShaZS5zaGVldFJvd3MmJlplLnNoZWV0Um93czw9V3IpKWZvcih2YXIganI9MDtqcjx6cjsrK2pyKXtpZihEaT1wYXJzZUludChJclsibnVtYmVyLWNvbHVtbnMt''@;'; put 'put ''cmVwZWF0ZWQiXXx8IjEiLDEwKSxaZS5kZW5zZSlmb3IoSW5bV3IranJdfHwoSW5bV3IranJdPVtdKSxJbltXcitqcl1bYWldPTA9PWpyP1ZuOmxuKFZuKTstLURpPjA7KUluW1dyK2pyXVthaStEaV09bG4oVm4pO2Vsc2UgZm9yKEluW1EwKHtyOldyK2pyLGM6YWl9KV09Vm47LS1EaT4wOylJ''@;'; put 'put ''bltRMCh7cjpXcitqcixjOmFpK0RpfSldPWxuKFZuKTtuaS5lLmM8PWFpJiYobmkuZS5jPWFpKX1haSs9KERpPXBhcnNlSW50KElyWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdfHwiMSIsMTApKS0xLERpPTAsVm49e30saWk9IiIsTXI9W119TWk9e307YnJlYWs7Y2FzZSJkb2N1bWVudCI6''@;'; put 'put ''Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIlx1NzUzNVx1NWI1MFx1ODg2OFx1NjgzY1x1NjU4N1x1Njg2MyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSJcdTRlM2JcdTRmNTMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xzIjpjYXNlIm1hc3Rlci1z''@;'; put 'put ''dHlsZXMiOmlmKCIvIj09PVJuWzFdKXtpZigoU3Q9VWUucG9wKCkpWzBdIT09Um5bM10pdGhyb3ciQmFkIHN0YXRlOiAiK1N0fWVsc2UiLyIhPT1SblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpJiZVZS5wdXNoKFtSblszXSwhMF0pO2JyZWFrO2Nhc2UiYW5ub3RhdGlvbiI6aWYoIi8iPT09''@;'; put 'put ''Um5bMV0pe2lmKChTdD1VZS5wb3AoKSlbMF0hPT1SblszXSl0aHJvdyJCYWQgc3RhdGU6ICIrU3Q7Zm8udD1paSxNci5sZW5ndGgmJihmby5SPU1yKSxmby5hPXppLG4wLnB1c2goZm8pfWVsc2UiLyIhPT1SblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpJiZVZS5wdXNoKFtSblszXSwhMV0p''@;'; put 'put ''O3ppPSIiLGcwPTAsaWk9IiIseXI9MCxNcj1bXTticmVhaztjYXNlImNyZWF0b3IiOiIvIj09PVJuWzFdP3ppPVZlLnNsaWNlKGcwLFJuLmluZGV4KTpnMD1Sbi5pbmRleCtSblswXS5sZW5ndGg7YnJlYWs7Y2FzZSJtZXRhIjpjYXNlIlx1NTE0M1x1NjU3MFx1NjM2ZSI6Y2FzZSJzZXR0aW5n''@;'; put 'put ''cyI6Y2FzZSJjb25maWctaXRlbS1zZXQiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLWluZGV4ZWQiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLWVudHJ5IjpjYXNlImNvbmZpZy1pdGVtLW1hcC1uYW1lZCI6Y2FzZSJzaGFwZXMiOmNhc2UiZnJhbWUiOmNhc2UidGV4dC1ib3giOmNhc2UiaW1hZ2UiOmNh''@;'; put 'put ''c2UiZGF0YS1waWxvdC10YWJsZXMiOmNhc2UibGlzdC1zdHlsZSI6Y2FzZSJmb3JtIjpjYXNlImRkZS1saW5rcyI6Y2FzZSJldmVudC1saXN0ZW5lcnMiOmNhc2UiY2hhcnQiOmlmKCIvIj09PVJuWzFdKXtpZigoU3Q9VWUucG9wKCkpWzBdIT09Um5bM10pdGhyb3ciQmFkIHN0YXRlOiAiK1N0''@;'; put 'put ''fWVsc2UiLyIhPT1SblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpJiZVZS5wdXNoKFtSblszXSwhMV0pO2lpPSIiLHlyPTAsTXI9W107YnJlYWs7Y2FzZSJzY2llbnRpZmljLW51bWJlciI6Y2FzZSJjdXJyZW5jeS1zeW1ib2wiOmNhc2UiY3VycmVuY3ktc3R5bGUiOmNhc2Uic2NyaXB0Ijpj''@;'; put 'put ''YXNlImxpYnJhcmllcyI6Y2FzZSJhdXRvbWF0aWMtc3R5bGVzIjpjYXNlImRlZmF1bHQtc3R5bGUiOmNhc2UicGFnZS1sYXlvdXQiOmNhc2UibWFwIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJwYXJhZ3JhcGgtcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLWNv''@;'; put 'put ''bHVtbi1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLXJvdy1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLWNlbGwtcHJvcGVydGllcyI6Y2FzZSJmcmFjdGlvbiI6Y2FzZSJib29sZWFuLXN0eWxlIjpjYXNlImJvb2xlYW4iOmNhc2UidGV4dC1zdHlsZSI6Y2FzZSJ0ZXh0LWNvbnRlbnQiOmNhc2UidGV4''@;'; put 'put ''dC1wcm9wZXJ0aWVzIjpjYXNlImVtYmVkZGVkLXRleHQiOmNhc2UiYm9keSI6Y2FzZSJcdTc1MzVcdTViNTBcdTg4NjhcdTY4M2MiOmNhc2UiZm9ybXMiOmNhc2UidGFibGUtY29sdW1uIjpjYXNlInRhYmxlLWhlYWRlci1yb3dzIjpjYXNlInRhYmxlLXJvd3MiOmNhc2UidGFibGUtY29sdW1u''@;'; put 'put ''LWdyb3VwIjpjYXNlInRhYmxlLWhlYWRlci1jb2x1bW5zIjpjYXNlInRhYmxlLWNvbHVtbnMiOmNhc2UibnVsbC1kYXRlIjpjYXNlImdyYXBoaWMtcHJvcGVydGllcyI6Y2FzZSJjYWxjdWxhdGlvbi1zZXR0aW5ncyI6Y2FzZSJuYW1lZC1leHByZXNzaW9ucyI6Y2FzZSJsYWJlbC1yYW5nZSI6''@;'; put 'put ''Y2FzZSJsYWJlbC1yYW5nZXMiOmNhc2UibmFtZWQtZXhwcmVzc2lvbiI6Y2FzZSJzb3J0IjpjYXNlInNvcnQtYnkiOmNhc2Uic29ydC1ncm91cHMiOmNhc2UidGFiIjpjYXNlImxpbmUtYnJlYWsiOmNhc2Uic3BhbiI6Y2FzZSJzIjpjYXNlImRhdGUiOmNhc2Uib2JqZWN0IjpjYXNlInRpdGxl''@;'; put 'put ''IjpjYXNlIlx1NjgwN1x1OTg5OCI6Y2FzZSJkZXNjIjpjYXNlImJpbmFyeS1kYXRhIjpjYXNlInRhYmxlLXNvdXJjZSI6Y2FzZSJzY2VuYXJpbyI6Y2FzZSJpdGVyYXRpb24iOmNhc2UiY29udGVudC12YWxpZGF0aW9ucyI6Y2FzZSJjb250ZW50LXZhbGlkYXRpb24iOmNhc2UiaGVscC1tZXNz''@;'; put 'put ''YWdlIjpjYXNlImVycm9yLW1lc3NhZ2UiOmNhc2UiZGF0YWJhc2UtcmFuZ2VzIjpjYXNlImZpbHRlciI6Y2FzZSJmaWx0ZXItYW5kIjpjYXNlImZpbHRlci1vciI6Y2FzZSJmaWx0ZXItY29uZGl0aW9uIjpjYXNlImxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0IjpjYXNlImxpc3QtbGV2ZWwtc3R5''@;'; put 'put ''bGUtbnVtYmVyIjpjYXNlImxpc3QtbGV2ZWwtcHJvcGVydGllcyI6Y2FzZSJzZW5kZXItZmlyc3RuYW1lIjpjYXNlInNlbmRlci1sYXN0bmFtZSI6Y2FzZSJzZW5kZXItaW5pdGlhbHMiOmNhc2Uic2VuZGVyLXRpdGxlIjpjYXNlInNlbmRlci1wb3NpdGlvbiI6Y2FzZSJzZW5kZXItZW1haWwi''@;'; put 'put ''OmNhc2Uic2VuZGVyLXBob25lLXByaXZhdGUiOmNhc2Uic2VuZGVyLWZheCI6Y2FzZSJzZW5kZXItY29tcGFueSI6Y2FzZSJzZW5kZXItcGhvbmUtd29yayI6Y2FzZSJzZW5kZXItc3RyZWV0IjpjYXNlInNlbmRlci1jaXR5IjpjYXNlInNlbmRlci1wb3N0YWwtY29kZSI6Y2FzZSJzZW5kZXIt''@;'; put 'put ''Y291bnRyeSI6Y2FzZSJzZW5kZXItc3RhdGUtb3ItcHJvdmluY2UiOmNhc2UiYXV0aG9yLW5hbWUiOmNhc2UiYXV0aG9yLWluaXRpYWxzIjpjYXNlImNoYXB0ZXIiOmNhc2UiZmlsZS1uYW1lIjpjYXNlInRlbXBsYXRlLW5hbWUiOmNhc2Uic2hlZXQtbmFtZSI6Y2FzZSJldmVudC1saXN0ZW5l''@;'; put 'put ''ciI6Y2FzZSJpbml0aWFsLWNyZWF0b3IiOmNhc2UiY3JlYXRpb24tZGF0ZSI6Y2FzZSJwcmludC1kYXRlIjpjYXNlImdlbmVyYXRvciI6Y2FzZSJkb2N1bWVudC1zdGF0aXN0aWMiOmNhc2UidXNlci1kZWZpbmVkIjpjYXNlImVkaXRpbmctZHVyYXRpb24iOmNhc2UiZWRpdGluZy1jeWNsZXMi''@;'; put 'put ''OmNhc2UiY29uZmlnLWl0ZW0iOmNhc2UicGFnZS1udW1iZXIiOmNhc2UicGFnZS1jb3VudCI6Y2FzZSJ0aW1lIjpjYXNlImNlbGwtcmFuZ2Utc291cmNlIjpjYXNlImRldGVjdGl2ZSI6Y2FzZSJvcGVyYXRpb24iOmNhc2UiaGlnaGxpZ2h0ZWQtcmFuZ2UiOmNhc2UiZGF0YS1waWxvdC10YWJs''@;'; put 'put ''ZSI6Y2FzZSJzb3VyY2UtY2VsbC1yYW5nZSI6Y2FzZSJzb3VyY2Utc2VydmljZSI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkIjpjYXNlImRhdGEtcGlsb3QtbGV2ZWwiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbHMiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbCI6Y2FzZSJkYXRhLXBpbG90LW1l''@;'; put 'put ''bWJlcnMiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXIiOmNhc2UiZGF0YS1waWxvdC1kaXNwbGF5LWluZm8iOmNhc2UiZGF0YS1waWxvdC1zb3J0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1sYXlvdXQtaW5mbyI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSI6Y2FzZSJkYXRhLXBpbG90''@;'; put 'put ''LWdyb3VwcyI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXAtbWVtYmVyIjpjYXNlInJlY3QiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbHMiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbCI6Y2FzZSJkZGUtbGluayI6Y2FzZSJkZGUtc291cmNlIjpjYXNlInBy''@;'; put 'put ''b3BlcnRpZXMiOmNhc2UicHJvcGVydHkiOmNhc2UidGFibGUtcHJvdGVjdGlvbiI6Y2FzZSJkYXRhLXBpbG90LWdyYW5kLXRvdGFsIjpjYXNlIm9mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMiOmJyZWFrO2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlInBlcmNlbnRhZ2Utc3R5bGUiOmNhc2Ui''@;'; put 'put ''ZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjppZigiLyI9PT1SblsxXSl7aWYoaGlbUHQubmFtZV09UXQsKFN0PVVlLnBvcCgpKVswXSE9PVJuWzNdKXRocm93IkJhZCBzdGF0ZTogIitTdH1lbHNlIi8iIT09Um5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSYmKFF0PSIiLFB0PXF0KFJu''@;'; put 'put ''WzBdLCExKSxVZS5wdXNoKFtSblszXSwhMF0pKTticmVhaztjYXNlInN0eWxlIjoiLz4iPT09Um5bMF0uc2xpY2UoLTIpP1goUm5bMF0saWEpOiIvIj09Um5bMV0/WChWZS5zbGljZShYMCxSbi5pbmRleCtSblswXS5sZW5ndGgpLGlhKTpYMD1Sbi5pbmRleDticmVhaztjYXNlIm51bWJlciI6''@;'; put 'put ''Y2FzZSJkYXkiOmNhc2UibW9udGgiOmNhc2UieWVhciI6Y2FzZSJlcmEiOmNhc2UiZGF5LW9mLXdlZWsiOmNhc2Uid2Vlay1vZi15ZWFyIjpjYXNlInF1YXJ0ZXIiOmNhc2UiaG91cnMiOmNhc2UibWludXRlcyI6Y2FzZSJzZWNvbmRzIjpjYXNlImFtLXBtIjpzd2l0Y2goVWVbVWUubGVuZ3Ro''@;'; put 'put ''LTFdWzBdKXtjYXNlInRpbWUtc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6SXQ9cXQoUm5bMF0sITEpLFF0Kz1yZVtSblszXV1bImxvbmciPT09SXQuc3R5bGU/MTowXX1icmVhaztjYXNlInRleHQiOmlmKCIvPiI9PT1SblswXS5zbGljZSgtMikpYnJlYWs7aWYoIi8iPT09Um5bMV0pc3dpdGNo''@;'; put 'put ''KFVlW1VlLmxlbmd0aC0xXVswXSl7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpRdCs9VmUuc2xpY2UoYW4sUm4uaW5kZXgpfWVsc2UgYW49Um4uaW5kZXgrUm5bMF0ubGVuZ3RoO2JyZWFrO2Nhc2UibmFtZWQtcmFuZ2UiOlowPWNBKChJdD1x''@;'; put 'put ''dChSblswXSwhMSkpWyJjZWxsLXJhbmdlLWFkZHJlc3MiXSk7dmFyIENhPXtOYW1lOkl0Lm5hbWUsUmVmOlowWzBdKyIhIitaMFsxXX07QWkmJihDYS5TaGVldD1mbi5sZW5ndGgpLEhyLk5hbWVzLnB1c2goQ2EpO2JyZWFrO2Nhc2UicCI6Y2FzZSJcdTY1ODdcdTY3MmNcdTRlMzIiOmlmKFsi''@;'; put 'put ''bWFzdGVyLXN0eWxlcyJdLmluZGV4T2YoVWVbVWUubGVuZ3RoLTFdWzBdKT4tMSlicmVhaztpZigiLyIhPT1SblsxXXx8SXImJklyWyJzdHJpbmctdmFsdWUiXSlxdChSblswXSwhMSkseXI9Um4uaW5kZXgrUm5bMF0ubGVuZ3RoO2Vsc2V7dmFyIHNzPUgoVmUuc2xpY2UoeXIsUm4uaW5kZXgp''@;'; put 'put ''LDAsaWEpO2lpPShpaS5sZW5ndGg+MD9paSsiXG4iOiIiKStzc1swXSxNcj1zc1sxXX1icmVhaztjYXNlImRhdGFiYXNlLXJhbmdlIjppZigiLyI9PT1SblsxXSlicmVhazt0cnl7enRbKFowPWNBKHF0KFJuWzBdKVsidGFyZ2V0LXJhbmdlLWFkZHJlc3MiXSkpWzBdXVsiIWF1dG9maWx0ZXIi''@;'; put 'put ''XT17cmVmOlowWzFdfX1jYXRjaChRYSl7fWJyZWFrO2Nhc2UiYSI6aWYoIi8iIT09Um5bMV0pe2lmKCEoTWk9cXQoUm5bMF0sITEpKS5ocmVmKWJyZWFrO01pLlRhcmdldD1ncihNaS5ocmVmKSxkZWxldGUgTWkuaHJlZiwiIyI9PU1pLlRhcmdldC5jaGFyQXQoMCkmJk1pLlRhcmdldC5pbmRl''@;'; put 'put ''eE9mKCIuIik+LTE/KFowPWNBKE1pLlRhcmdldC5zbGljZSgxKSksTWkuVGFyZ2V0PSIjIitaMFswXSsiISIrWjBbMV0pOk1pLlRhcmdldC5tYXRjaCgvXlwuXC5bXFxcL10vKSYmKE1pLlRhcmdldD1NaS5UYXJnZXQuc2xpY2UoMykpfWJyZWFrO2RlZmF1bHQ6c3dpdGNoKFJuWzJdKXtjYXNl''@;'; put 'put ''ImRjOiI6Y2FzZSJjYWxjZXh0OiI6Y2FzZSJsb2V4dDoiOmNhc2Uib29vOiI6Y2FzZSJjaGFydG9vbzoiOmNhc2UiZHJhdzoiOmNhc2Uic3R5bGU6IjpjYXNlImNoYXJ0OiI6Y2FzZSJmb3JtOiI6Y2FzZSJ1b2Y6IjpjYXNlIlx1ODg2ODoiOmNhc2UiXHU1YjU3OiI6YnJlYWs7ZGVmYXVsdDpp''@;'; put 'put ''ZihaZS5XVEYpdGhyb3cgbmV3IEVycm9yKFJuKX19dmFyIF9sPXtTaGVldHM6enQsU2hlZXROYW1lczpmbixXb3JrYm9vazpIcn07cmV0dXJuIFplLmJvb2tTaGVldHMmJmRlbGV0ZSBfbC5TaGVldHMsX2x9fSgpO2Z1bmN0aW9uIGFjKEgscmUpe3JldHVybiByQyhILHJlKX12YXIgR0E9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgSD1bIiAgPG9mZmljZTptYXN0ZXItc3R5bGVzPiIsJyAgICA8c3R5bGU6bWFzdGVyLXBhZ2Ugc3R5bGU6bmFtZT0ibXAxIiBzdHlsZTpwYWdlLWxheW91dC1uYW1lPSJtcDEiPicsIiAgICAgIDxzdHlsZTpoZWFkZXIvPiIsJyAgICAgIDxzdHlsZTpoZWFkZXItbGVmdCBz''@;'; put 'put ''dHlsZTpkaXNwbGF5PSJmYWxzZSIvPicsIiAgICAgIDxzdHlsZTpmb290ZXIvPiIsJyAgICAgIDxzdHlsZTpmb290ZXItbGVmdCBzdHlsZTpkaXNwbGF5PSJmYWxzZSIvPicsIiAgICA8L3N0eWxlOm1hc3Rlci1wYWdlPiIsIiAgPC9vZmZpY2U6bWFzdGVyLXN0eWxlcz4iXS5qb2luKCJcbiIp''@;'; put 'put ''LHJlPSI8b2ZmaWNlOmRvY3VtZW50LXN0eWxlcyAiK2MyKHsieG1sbnM6b2ZmaWNlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwieG1sbnM6dGFibGUiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIs''@;'; put 'put ''InhtbG5zOnN0eWxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdHlsZToxLjAiLCJ4bWxuczp0ZXh0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMCIsInhtbG5zOmRyYXciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRv''@;'; put 'put ''Y3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wIiwieG1sbnM6Zm8iOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCIsInhtbG5zOnhsaW5rIjoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhtbG5zOmRjIjoiaHR0cDovL3B1''@;'; put 'put ''cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLCJ4bWxuczpudW1iZXIiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjAiLCJ4bWxuczpzdmciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMCIs''@;'; put 'put ''InhtbG5zOm9mIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZjoxLjIiLCJvZmZpY2U6dmVyc2lvbiI6IjEuMiJ9KSsiPlxuIitIKyJcbjwvb2ZmaWNlOmRvY3VtZW50LXN0eWxlcz4iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBjbityZX19KCksWDQ9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgSD1mdW5jdGlvbihWZSxVZSl7cmV0dXJuIE9yKFZlKS5yZXBsYWNlKC8gICsvZyxmdW5jdGlvbihTdCl7cmV0dXJuJzx0ZXh0OnMgdGV4dDpjPSInK1N0Lmxlbmd0aCsnIi8+J30pLnJlcGxhY2UoL1x0L2csIjx0ZXh0OnRhYi8+IikucmVwbGFjZSgvXG4vZyxVZT8iPHRleHQ6''@;'; put 'put ''bGluZS1icmVhay8+IjoiPC90ZXh0OnA+PHRleHQ6cD4iKS5yZXBsYWNlKC9eIC8sIjx0ZXh0OnMvPiIpLnJlcGxhY2UoLyAkLywiPHRleHQ6cy8+Iil9LHJlPWZ1bmN0aW9uKFZlKXtyZXR1cm4gVmUubWFwKGZ1bmN0aW9uKFVlKXt2YXIgU3Q9IiI7cmV0dXJuIG51bGwhPVVlLm9kcyYmKFN0''@;'; put 'put ''Kz0nIHRleHQ6c3R5bGUtbmFtZT0iVCcrVWUub2RzKyciJyksVWUudj8iPHRleHQ6c3BhbiIrU3QrIj4iK0goVWUudiwhMCkrIjwvdGV4dDpzcGFuPiI6IiJ9KS5qb2luKCIiKX0sWD0iICAgICAgICAgIDx0YWJsZTp0YWJsZS1jZWxsIC8+XG4iLHhlPWZ1bmN0aW9uKFZlLFVlLFN0KXt2YXIg''@;'; put 'put ''SXQ9W107SXQucHVzaCgnICAgICAgPHRhYmxlOnRhYmxlIHRhYmxlOm5hbWU9IicrT3IoVWUuU2hlZXROYW1lc1tTdF0pKyciIHRhYmxlOnN0eWxlLW5hbWU9InRhMSI+XG4nKTt2YXIgUHQ9MCxRdD0wLGFuPW5zKFZlWyIhcmVmIl18fCJBMSIpLENuPVZlWyIhbWVyZ2VzIl18fFtdLEx0PTAs''@;'; put 'put ''enQ9QXJyYXkuaXNBcnJheShWZSk7aWYoVmVbIiFjb2xzIl0pZm9yKFF0PTA7UXQ8PWFuLmUuYzsrK1F0KUl0LnB1c2goIiAgICAgICAgPHRhYmxlOnRhYmxlLWNvbHVtbiIrKFZlWyIhY29scyJdW1F0XT8nIHRhYmxlOnN0eWxlLW5hbWU9ImNvJytWZVsiIWNvbHMiXVtRdF0ub2RzKyciJzoi''@;'; put 'put ''IikrIj48L3RhYmxlOnRhYmxlLWNvbHVtbj5cbiIpO3ZhciBJbj1WZVsiIXJvd3MiXXx8W107Zm9yKFB0PTA7UHQ8YW4ucy5yOysrUHQpSXQucHVzaCgiICAgICAgICA8dGFibGU6dGFibGUtcm93IisoSW5bUHRdPycgdGFibGU6c3R5bGUtbmFtZT0icm8nK0luW1B0XS5vZHMrJyInOiIiKSsi''@;'; put 'put ''PjwvdGFibGU6dGFibGUtcm93PlxuIik7Zm9yKDtQdDw9YW4uZS5yOysrUHQpe2ZvcihJdC5wdXNoKCIgICAgICAgIDx0YWJsZTp0YWJsZS1yb3ciKyhJbltQdF0/JyB0YWJsZTpzdHlsZS1uYW1lPSJybycrSW5bUHRdLm9kcysnIic6IiIpKyI+XG4iKSxRdD0wO1F0PGFuLnMuYzsrK1F0KUl0''@;'; put 'put ''LnB1c2goWCk7Zm9yKDtRdDw9YW4uZS5jOysrUXQpe3ZhciBSbj0hMSxWbj17fSxJcj0iIjtmb3IoTHQ9MDtMdCE9Q24ubGVuZ3RoOysrTHQpaWYoIShDbltMdF0ucy5jPlF0fHxDbltMdF0ucy5yPlB0fHxDbltMdF0uZS5jPFF0fHxDbltMdF0uZS5yPFB0KSl7KENuW0x0XS5zLmMhPVF0fHxD''@;'; put 'put ''bltMdF0ucy5yIT1QdCkmJihSbj0hMCksVm5bInRhYmxlOm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXT1DbltMdF0uZS5jLUNuW0x0XS5zLmMrMSxWblsidGFibGU6bnVtYmVyLXJvd3Mtc3Bhbm5lZCJdPUNuW0x0XS5lLnItQ25bTHRdLnMucisxO2JyZWFrfWlmKFJuKUl0LnB1c2goIiAgICAg''@;'; put 'put ''ICAgICA8dGFibGU6Y292ZXJlZC10YWJsZS1jZWxsLz5cbiIpO2Vsc2V7dmFyIGlpPVEwKHtyOlB0LGM6UXR9KSx5cj16dD8oVmVbUHRdfHxbXSlbUXRdOlZlW2lpXTtpZih5ciYmeXIuZiYmKFZuWyJ0YWJsZTpmb3JtdWxhIl09T3IodFAoeXIuZikpLHlyLkYmJnlyLkYuc2xpY2UoMCxpaS5s''@;'; put 'put ''ZW5ndGgpPT1paSkpe3ZhciBvaT1ucyh5ci5GKTtWblsidGFibGU6bnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQiXT1vaS5lLmMtb2kucy5jKzEsVm5bInRhYmxlOm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkIl09b2kuZS5yLW9pLnMucisxfWlmKHlyKXtzd2l0Y2goeXIudCl7Y2Fz''@;'; put 'put ''ZSJiIjpJcj15ci52PyJUUlVFIjoiRkFMU0UiLFZuWyJvZmZpY2U6dmFsdWUtdHlwZSJdPSJib29sZWFuIixWblsib2ZmaWNlOmJvb2xlYW4tdmFsdWUiXT15ci52PyJ0cnVlIjoiZmFsc2UiO2JyZWFrO2Nhc2UibiI6SXI9eXIud3x8U3RyaW5nKHlyLnZ8fDApLFZuWyJvZmZpY2U6dmFsdWUt''@;'; put 'put ''dHlwZSJdPSJmbG9hdCIsVm5bIm9mZmljZTp2YWx1ZSJdPXlyLnZ8fDA7YnJlYWs7Y2FzZSJzIjpjYXNlInN0ciI6SXI9eXIudixWblsib2ZmaWNlOnZhbHVlLXR5cGUiXT0ic3RyaW5nIjticmVhaztjYXNlImQiOklyPXlyLnd8fHBuKHlyLnYpLnRvSVNPU3RyaW5nKCksVm5bIm9mZmljZTp2''@;'; put 'put ''YWx1ZS10eXBlIl09ImRhdGUiLFZuWyJvZmZpY2U6ZGF0ZS12YWx1ZSJdPXBuKHlyLnYpLnRvSVNPU3RyaW5nKCksVm5bInRhYmxlOnN0eWxlLW5hbWUiXT0iY2UxIjticmVhaztkZWZhdWx0Okl0LnB1c2goWCk7Y29udGludWV9bnVsbCE9eXIub2RzJiYhVm5bInRhYmxlOnN0eWxlLW5hbWUi''@;'; put 'put ''XSYmKFZuWyJ0YWJsZTpzdHlsZS1uYW1lIl09ImNlIit5ci5vZHMpO3ZhciBNcj0heXIuUnx8eXIubCYmeXIubC5UYXJnZXQ/SChJcik6cmUoeXIuUik7aWYoeXIubCYmeXIubC5UYXJnZXQpe3ZhciBXcj15ci5sLlRhcmdldDsiIyIhPShXcj0iIyI9PVdyLmNoYXJBdCgwKT8iIyIrblAoV3Iu''@;'; put 'put ''c2xpY2UoMSkpOldyKS5jaGFyQXQoMCkmJiFXci5tYXRjaCgvXlx3KzovKSYmKFdyPSIuLi8iK1dyKSxNcj1TaSgidGV4dDphIixNcix7InhsaW5rOmhyZWYiOldyLnJlcGxhY2UoLyYvZywiJmFtcDsiKX0pfUl0LnB1c2goIiAgICAgICAgICAiK1NpKCJ0YWJsZTp0YWJsZS1jZWxsIixTaSgi''@;'; put 'put ''dGV4dDpwIixNcix7fSksVm4pKyJcbiIpfWVsc2UgSXQucHVzaChYKX19SXQucHVzaCgiICAgICAgICA8L3RhYmxlOnRhYmxlLXJvdz5cbiIpfXJldHVybiBJdC5wdXNoKCIgICAgICA8L3RhYmxlOnRhYmxlPlxuIiksSXQuam9pbigiIil9LEZlPXtjZW50ZXI6ImNlbnRlciIsbGVmdDoic3Rh''@;'; put 'put ''cnQiLHJpZ2h0OiJlbmQifTtyZXR1cm4gZnVuY3Rpb24oVWUsU3Qpe3ZhciBJdD1bY25dLFB0PWMyKHsieG1sbnM6b2ZmaWNlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwieG1sbnM6dGFibGUiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRv''@;'; put 'put ''Y3VtZW50OnhtbG5zOnRhYmxlOjEuMCIsInhtbG5zOnN0eWxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdHlsZToxLjAiLCJ4bWxuczp0ZXh0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMCIsInhtbG5zOmRyYXciOiJ1''@;'; put 'put ''cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wIiwieG1sbnM6Zm8iOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCIsInhtbG5zOnhsaW5rIjoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu''@;'; put 'put ''ayIsInhtbG5zOmRjIjoiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLCJ4bWxuczptZXRhIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIsInhtbG5zOm51bWJlciI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6''@;'; put 'put ''ZGF0YXN0eWxlOjEuMCIsInhtbG5zOnByZXNlbnRhdGlvbiI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6cHJlc2VudGF0aW9uOjEuMCIsInhtbG5zOnN2ZyI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3ZnLWNvbXBhdGlibGU6MS4wIiwi''@;'; put 'put ''eG1sbnM6Y2hhcnQiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNoYXJ0OjEuMCIsInhtbG5zOmRyM2QiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyM2Q6MS4wIiwieG1sbnM6bWF0aCI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0''@;'; put 'put ''aC9NYXRoTUwiLCJ4bWxuczpmb3JtIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpmb3JtOjEuMCIsInhtbG5zOnNjcmlwdCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c2NyaXB0OjEuMCIsInhtbG5zOm9vbyI6Imh0dHA6Ly9vcGVub2Zm''@;'; put 'put ''aWNlLm9yZy8yMDA0L29mZmljZSIsInhtbG5zOm9vb3ciOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC93cml0ZXIiLCJ4bWxuczpvb29jIjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvY2FsYyIsInhtbG5zOmRvbSI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyIs''@;'; put 'put ''InhtbG5zOnhmb3JtcyI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDIveGZvcm1zIiwieG1sbnM6eHNkIjoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiLCJ4bWxuczp4c2kiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIsInhtbG5zOnNoZWV0Ijoi''@;'; put 'put ''dXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDpzaDMzdGpzOjEuMCIsInhtbG5zOnJwdCI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA1L3JlcG9ydCIsInhtbG5zOm9mIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZjoxLjIiLCJ4bWxuczp4aHRtbCI6''@;'; put 'put ''Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJ4bWxuczpncmRkbCI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvZy9kYXRhLXZpZXcjIiwieG1sbnM6dGFibGVvb28iOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwOS90YWJsZSIsInhtbG5zOmRyYXdvb28iOiJodHRwOi8vb3Blbm9m''@;'; put 'put ''ZmljZS5vcmcvMjAxMC9kcmF3IiwieG1sbnM6Y2FsY2V4dCI6InVybjpvcmc6ZG9jdW1lbnRmb3VuZGF0aW9uOm5hbWVzOmV4cGVyaW1lbnRhbDpjYWxjOnhtbG5zOmNhbGNleHQ6MS4wIiwieG1sbnM6bG9leHQiOiJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50''@;'; put 'put ''YWw6b2ZmaWNlOnhtbG5zOmxvZXh0OjEuMCIsInhtbG5zOmZpZWxkIjoidXJuOm9wZW5vZmZpY2U6bmFtZXM6ZXhwZXJpbWVudGFsOm9vby1tcy1pbnRlcm9wOnhtbG5zOmZpZWxkOjEuMCIsInhtbG5zOmZvcm14IjoidXJuOm9wZW5vZmZpY2U6bmFtZXM6ZXhwZXJpbWVudGFsOm9veG1sLW9k''@;'; put 'put ''Zi1pbnRlcm9wOnhtbG5zOmZvcm06MS4wIiwieG1sbnM6Y3NzM3QiOiJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXRleHQvIiwib2ZmaWNlOnZlcnNpb24iOiIxLjIifSksUXQ9YzIoeyJ4bWxuczpjb25maWciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNvbmZp''@;'; put 'put ''ZzoxLjAiLCJvZmZpY2U6bWltZXR5cGUiOiJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0In0pOyJmb2RzIj09U3QuYm9va1R5cGU/KEl0LnB1c2goIjxvZmZpY2U6ZG9jdW1lbnQiK1B0K1F0KyI+XG4iKSxJdC5wdXNoKCRvKCkucmVwbGFjZSgvb2ZmaWNl''@;'; put 'put ''OmRvY3VtZW50LW1ldGEvZywib2ZmaWNlOm1ldGEiKSkpOkl0LnB1c2goIjxvZmZpY2U6ZG9jdW1lbnQtY29udGVudCIrUHQrIj5cbiIpLGZ1bmN0aW9uKFZlLFVlKXt2YXIgU3Q9W10sSXQ9e307U3QucHVzaCgiIDxvZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cbiIpLFN0LnB1c2goJyAgPG51''@;'; put 'put ''bWJlcjpkYXRlLXN0eWxlIHN0eWxlOm5hbWU9Ik4zNyIgbnVtYmVyOmF1dG9tYXRpYy1vcmRlcj0idHJ1ZSI+XG4nKSxTdC5wdXNoKCcgICA8bnVtYmVyOm1vbnRoIG51bWJlcjpzdHlsZT0ibG9uZyIvPlxuJyksU3QucHVzaCgiICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxuIiks''@;'; put 'put ''U3QucHVzaCgnICAgPG51bWJlcjpkYXkgbnVtYmVyOnN0eWxlPSJsb25nIi8+XG4nKSxTdC5wdXNoKCIgICA8bnVtYmVyOnRleHQ+LzwvbnVtYmVyOnRleHQ+XG4iKSxTdC5wdXNoKCIgICA8bnVtYmVyOnllYXIvPlxuIiksU3QucHVzaCgiICA8L251bWJlcjpkYXRlLXN0eWxlPlxuIik7dmFy''@;'; put 'put ''IFB0PTA7VWUuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24oTHQpe3JldHVybiBVZS5TaGVldHNbTHRdfSkuZm9yRWFjaChmdW5jdGlvbihMdCl7aWYoTHQmJkx0WyIhY29scyJdKWZvcih2YXIgenQ9MDt6dDxMdFsiIWNvbHMiXS5sZW5ndGg7Kyt6dClpZihMdFsiIWNvbHMiXVt6dF0pe3ZhciBm''@;'; put 'put ''bj1MdFsiIWNvbHMiXVt6dF07aWYobnVsbD09Zm4ud2lkdGgmJm51bGw9PWZuLndweCYmbnVsbD09Zm4ud2NoKWNvbnRpbnVlO2JjKGZuKSxmbi5vZHM9UHQ7dmFyIEluPUx0WyIhY29scyJdW3p0XS53cHgrInB4IjtTdC5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJjbycrUHQr''@;'; put 'put ''JyIgc3R5bGU6ZmFtaWx5PSJ0YWJsZS1jb2x1bW4iPlxuJyksU3QucHVzaCgnICAgPHN0eWxlOnRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzIGZvOmJyZWFrLWJlZm9yZT0iYXV0byIgc3R5bGU6Y29sdW1uLXdpZHRoPSInK0luKyciLz5cbicpLFN0LnB1c2goIiAgPC9zdHlsZTpzdHlsZT5cbiIp''@;'; put 'put ''LCsrUHR9fSk7dmFyIFF0PTA7VWUuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24oTHQpe3JldHVybiBVZS5TaGVldHNbTHRdfSkuZm9yRWFjaChmdW5jdGlvbihMdCl7aWYoTHQmJkx0WyIhcm93cyJdKWZvcih2YXIgenQ9MDt6dDxMdFsiIXJvd3MiXS5sZW5ndGg7Kyt6dClpZihMdFsiIXJvd3Mi''@;'; put 'put ''XVt6dF0pe0x0WyIhcm93cyJdW3p0XS5vZHM9UXQ7dmFyIGZuPUx0WyIhcm93cyJdW3p0XS5ocHgrInB4IjtTdC5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJybycrUXQrJyIgc3R5bGU6ZmFtaWx5PSJ0YWJsZS1yb3ciPlxuJyksU3QucHVzaCgnICAgPHN0eWxlOnRhYmxlLXJv''@;'; put 'put ''dy1wcm9wZXJ0aWVzIGZvOmJyZWFrLWJlZm9yZT0iYXV0byIgc3R5bGU6cm93LWhlaWdodD0iJytmbisnIi8+XG4nKSxTdC5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+XG4iKSwrK1F0fX0pLFN0LnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9InRhMSIgc3R5bGU6ZmFtaWx5PSJ0YWJs''@;'; put 'put ''ZSIgc3R5bGU6bWFzdGVyLXBhZ2UtbmFtZT0ibXAxIj5cbicpLFN0LnB1c2goJyAgIDxzdHlsZTp0YWJsZS1wcm9wZXJ0aWVzIHRhYmxlOmRpc3BsYXk9InRydWUiIHN0eWxlOndyaXRpbmctbW9kZT0ibHItdGIiLz5cbicpLFN0LnB1c2goIiAgPC9zdHlsZTpzdHlsZT5cbiIpLFN0LnB1c2go''@;'; put 'put ''JyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9ImNlMSIgc3R5bGU6ZmFtaWx5PSJ0YWJsZS1jZWxsIiBzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZT0iRGVmYXVsdCIgc3R5bGU6ZGF0YS1zdHlsZS1uYW1lPSJOMzciLz5cbicpO3ZhciBhbj0yO1F0PTAsVWUuU2hlZXROYW1lcy5tYXAoZnVuY3Rp''@;'; put 'put ''b24oTHQpe3JldHVybiBVZS5TaGVldHNbTHRdfSkuZm9yRWFjaChmdW5jdGlvbihMdCl7aWYoTHQpZm9yKHZhciB6dD0wLGZuPTAsSW49bnMoTHRbIiFyZWYiXSksUm49QXJyYXkuaXNBcnJheShMdCk7enQ8PUluLmUucjsrK3p0KWZvcihmbj0wO2ZuPD1Jbi5lLmM7Kytmbil7dmFyIFZuPVEw''@;'; put 'put ''KHtyOnp0LGM6Zm59KSxJcj1Sbj8oTHRbenRdfHxbXSlbZm5dOkx0W1ZuXTtpZihJciYmKElyLnN8fElyLlIpKXt2YXIgaWk9W107SXIucyYmaWkucHVzaChbSXIsITBdKSxJci5SJiZJci5SLmZvckVhY2goZnVuY3Rpb24oeXIpe3lyJiZ5ci5zJiZpaS5wdXNoKFt5ciwhMV0pfSksaWkuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbih5cil7dmFyIG9pPXlyWzBdLE1yPW9pLnMsV3I9IiIsYWk9eyJzdHlsZTpuYW1lIjooeXJbMV0/ImNlIjoiVCIpK2FuLCJzdHlsZTpmYW1pbHkiOnlyWzFdPyJ0YWJsZS1jZWxsIjoidGV4dCJ9O3lyWzFdJiYoYWlbInN0eWxlOnBhcmVudC1zdHlsZS1uYW1lIl09IkRl''@;'; put 'put ''ZmF1bHQiLGFpWyJzdHlsZTpkYXRhLXN0eWxlLW5hbWUiXT0iTjAiKTt2YXIgbmk9e30sZnI9ITEsaGk9e30sdzA9ITEsSjA9e30saW89ITE7aWYoTXIuY29sb3ImJihoaVsiZm86Y29sb3IiXT0iIyIrSW8oTXIuY29sb3IucmdiKSx3MD0hMCksTXIuc3omJihoaVsiZm86Zm9udC1zaXplIl09''@;'; put 'put ''TXIuc3orInB0Iix3MD0hMCksTXIuYm9sZCYmKGhpWyJmbzpmb250LXdlaWdodCJdPSJib2xkIix3MD0hMCksTXIuaXRhbGljJiYoaGlbImZvOmZvbnQtc3R5bGUiXT0iaXRhbGljIix3MD0hMCksTXIubmFtZSYmKEl0W01yLm5hbWVdfHwoSXRbTXIubmFtZV09TXIubmFtZS5tYXRjaCgvIC8p''@;'; put 'put ''PyImYXBvczsiK01yLm5hbWUrIiZhcG9zOyI6TXIubmFtZSksaGlbInN0eWxlOmZvbnQtbmFtZSJdPU1yLm5hbWUsdzA9ITApLE1yLnN0cmlrZSYmKGhpWyJzdHlsZTp0ZXh0LWxpbmUtdGhyb3VnaC1zdHlsZSJdPSJzb2xpZCIsaGlbInN0eWxlOnRleHQtbGluZS10aHJvdWdoLXR5cGUiXT0i''@;'; put 'put ''c2luZ2xlIix3MD0hMCksTXIudW5kZXJsaW5lJiYoaGlbInN0eWxlOnRleHQtdW5kZXJsaW5lLXN0eWxlIl09InNvbGlkIixoaVsic3R5bGU6dGV4dC11bmRlcmxpbmUtd2lkdGgiXT0iYXV0byIsaGlbInN0eWxlOnRleHQtdW5kZXJsaW5lLWNvbG9yIl09ImZvbnQtY29sb3IiLHcwPSEwKSx5''@;'; put 'put ''clsxXSl7aWYoTXIuYWxpZ25tZW50KXt2YXIgYjA9TXIuYWxpZ25tZW50O2IwLndyYXBUZXh0JiYobmlbImZvOndyYXAtb3B0aW9uIl09IndyYXAiLGZyPSEwKSxiMC52ZXJ0aWNhbCYmKG5pWyJzdHlsZTp2ZXJ0aWNhbC1hbGlnbiJdPSJjZW50ZXIiPT1iMC52ZXJ0aWNhbD8ibWlkZGxlIjpi''@;'; put 'put ''MC52ZXJ0aWNhbCxmcj0hMCksRmVbYjAuaG9yaXpvbnRhbF0mJihKMFsiZm86dGV4dC1hbGlnbiJdPUZlW2IwLmhvcml6b250YWxdLGlvPSEwKX1Nci5mZ0NvbG9yJiYobmlbImZvOmJhY2tncm91bmQtY29sb3IiXT0iIyIrSW8oTXIuZmdDb2xvci5yZ2IpLGZyPSEwKX1mciYmKFdyKz1TaSgi''@;'; put 'put ''c3R5bGU6dGFibGUtY2VsbC1wcm9wZXJ0aWVzIixudWxsLG5pKSksdzAmJihXcis9U2koInN0eWxlOnRleHQtcHJvcGVydGllcyIsbnVsbCxoaSkpLGlvJiYoV3IrPVNpKCJzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyIsbnVsbCxKMCkpLFN0LnB1c2goIiAgIitTaSgic3R5bGU6c3R5bGUi''@;'; put 'put ''LFdyLGFpKSsiXG4iKSxvaS5vZHM9YW4sKythbn0pfX19KSxTdC5wdXNoKCIgPC9vZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cbiIpO3ZhciBDbj0iIDxvZmZpY2U6Zm9udC1mYWNlLWRlY2xzPlxuIitvbihJdCkubWFwKGZ1bmN0aW9uKEx0KXtyZXR1cm4nICA8c3R5bGU6Zm9udC1mYWNlIHN0''@;'; put 'put ''eWxlOm5hbWU9IicrTHQrJyIgc3ZnOmZvbnQtZmFtaWx5PSInK0l0W0x0XSsnIi8+XG4nfSkuam9pbigiIikrIiA8L29mZmljZTpmb250LWZhY2UtZGVjbHM+XG4iO1ZlLnB1c2goQ24pLFZlLnB1c2goU3Quam9pbigiIikpfShJdCxVZSksSXQucHVzaCgiICA8b2ZmaWNlOmJvZHk+XG4iKSxJ''@;'; put 'put ''dC5wdXNoKCIgICAgPG9mZmljZTpzcHJlYWRzaGVldD5cbiIpO2Zvcih2YXIgYW49MDthbiE9VWUuU2hlZXROYW1lcy5sZW5ndGg7KythbilJdC5wdXNoKHhlKFVlLlNoZWV0c1tVZS5TaGVldE5hbWVzW2FuXV0sVWUsYW4pKTtyZXR1cm4gSXQucHVzaCgiICAgIDwvb2ZmaWNlOnNwcmVhZHNo''@;'; put 'put ''ZWV0PlxuIiksSXQucHVzaCgiICA8L29mZmljZTpib2R5PlxuIiksSXQucHVzaCgiZm9kcyI9PVN0LmJvb2tUeXBlPyI8L29mZmljZTpkb2N1bWVudD4iOiI8L29mZmljZTpkb2N1bWVudC1jb250ZW50PiIpLEl0LmpvaW4oIiIpfX0oKTtmdW5jdGlvbiBXQShILHJlKXtpZigiZm9kcyI9PXJl''@;'; put 'put ''LmJvb2tUeXBlKXJldHVybiBYNChILHJlKTt2YXIgWD1TcigpLHdlPSIiLHhlPVtdLEZlPVtdO3JldHVybiBHbihYLHdlPSJtaW1ldHlwZSIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQiKSxHbihYLHdlPSJjb250ZW50LnhtbCIsWDQoSCxyZSkpLHhl''@;'; put 'put ''LnB1c2goW3dlLCJ0ZXh0L3htbCJdKSxGZS5wdXNoKFt3ZSwiQ29udGVudEZpbGUiXSksR24oWCx3ZT0ic3R5bGVzLnhtbCIsR0EoSCxyZSkpLHhlLnB1c2goW3dlLCJ0ZXh0L3htbCJdKSxGZS5wdXNoKFt3ZSwiU3R5bGVzRmlsZSJdKSxHbihYLHdlPSJtZXRhLnhtbCIsY24rJG8oKSkseGUu''@;'; put 'put ''cHVzaChbd2UsInRleHQveG1sIl0pLEZlLnB1c2goW3dlLCJNZXRhZGF0YUZpbGUiXSksR24oWCx3ZT0ibWFuaWZlc3QucmRmIixmdW5jdGlvbiBraShIKXt2YXIgcmU9W2NuXTtyZS5wdXNoKCc8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5''@;'; put 'put ''bnRheC1ucyMiPlxuJyk7Zm9yKHZhciBYPTA7WCE9SC5sZW5ndGg7KytYKXJlLnB1c2goXyhIW1hdWzBdLEhbWF1bMV0pKSxyZS5wdXNoKHdvKCIiLEhbWF1bMF0pKTtyZXR1cm4gcmUucHVzaChfKCIiLCJEb2N1bWVudCIsInBrZyIpKSxyZS5wdXNoKCI8L3JkZjpSREY+IikscmUuam9pbigi''@;'; put 'put ''Iil9KEZlKSkseGUucHVzaChbd2UsImFwcGxpY2F0aW9uL3JkZit4bWwiXSksR24oWCx3ZT0iTUVUQS1JTkYvbWFuaWZlc3QueG1sIixmdW5jdGlvbiBXbihIKXt2YXIgcmU9W2NuXTtyZS5wdXNoKCc8bWFuaWZlc3Q6bWFuaWZlc3QgeG1sbnM6bWFuaWZlc3Q9InVybjpvYXNpczpuYW1lczp0''@;'; put 'put ''YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wIiBtYW5pZmVzdDp2ZXJzaW9uPSIxLjIiPlxuJykscmUucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9Ii8iIG1hbmlmZXN0OnZlcnNpb249IjEuMiIgbWFuaWZlc3Q6bWVkaWEtdHlwZT0iYXBw''@;'; put 'put ''bGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCIvPlxuJyk7Zm9yKHZhciBYPTA7WDxILmxlbmd0aDsrK1gpcmUucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9IicrSFtYXVswXSsnIiBtYW5pZmVzdDptZWRpYS10eXBlPSIn''@;'; put 'put ''K0hbWF1bMV0rJyIvPlxuJyk7cmV0dXJuIHJlLnB1c2goIjwvbWFuaWZlc3Q6bWFuaWZlc3Q+IikscmUuam9pbigiIil9KHhlKSksWH1mdW5jdGlvbiBpaChIKXtyZXR1cm4gZnVuY3Rpb24oWCx3ZSl7dmFyIHhlPWZ1bmN0aW9uIGlGKEgscmUpe2lmKCFyZSlyZXR1cm4gMDt2YXIgWD1ILlNo''@;'; put 'put ''ZWV0TmFtZXMuaW5kZXhPZihyZSk7aWYoLTE9PVgpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBub3QgZm91bmQ6ICIrcmUpO3JldHVybiBYfShYLHdlLnNoZWV0KTtyZXR1cm4gSC5mcm9tX3NoZWV0KFguU2hlZXRzW1guU2hlZXROYW1lc1t4ZV1dLHdlLFgpfX12YXIgWUE9aWgob3MpLGg1PWlo''@;'; put 'put ''KHtmcm9tX3NoZWV0OlI2fSksa1Q9aWgodm9pZCAwIT09dzM/dzM6e30pLFVBPWloKHZvaWQgMCE9PU1iP01iOnt9KSxzaT1paCh2b2lkIDAhPT1IOD9IODp7fSksb0Y9aWgodm9pZCAwIT09Z20/Z206e30pLGFGPWloKHtmcm9tX3NoZWV0OmxzfSksaUM9aWgodm9pZCAwIT09d2Q/d2Q6e30p''@;'; put 'put ''LEJsPWloKHZvaWQgMCE9PUViP0ViOnt9KSxQcz1MKDQxMzQ4KXx8InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5jcnlwdG9Ccm93c2VyaWZ5O2lmKCFQcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGNyeXB0byBleHRlbnNpb25zISIpO3ZhciBvQz17U0hBNTEyOiJz''@;'; put 'put ''aGE1MTIiLFNIQTI1Njoic2hhMjU2IixTSEEzODQ6InNoYTM4NCIsU0hBMToic2hhMSIsTUQ1OiJtZDUiLE1ENDoibWQ0IixNRDI6Im1kMiJ9O2Z1bmN0aW9uIFMyKEgscmUpe3N3aXRjaChyZT0ocmV8fCIiKS5yZXBsYWNlKC8tL2csIiIpKXtjYXNlIlNIQS01MTIiOmNhc2UiU0hBNTEyIjpy''@;'; put 'put ''ZXR1cm4gbmV3IFBzLmNyZWF0ZUhhc2goInNoYTUxMiIpLnVwZGF0ZShIKS5kaWdlc3QoKTtjYXNlIlNIQS0xIjpjYXNlIlNIQTEiOnJldHVybiBuZXcgUHMuY3JlYXRlSGFzaCgic2hhMSIpLnVwZGF0ZShIKS5kaWdlc3QoKTtjYXNlIk1EMiI6cmV0dXJuIG5ldyBQcy5jcmVhdGVIYXNoKCJt''@;'; put 'put ''ZDIiKS51cGRhdGUoSCkuZGlnZXN0KCk7ZGVmYXVsdDppZihvQ1tyZV0pcmV0dXJuIG5ldyBQcy5jcmVhdGVIYXNoKG9DW3JlXSkudXBkYXRlKEgpLmRpZ2VzdCgpO3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgaGFzaCBhbGdvcml0aG0gIityZSl9fWZ1bmN0aW9uIEQ2KEgscmUsWCl7''@;'; put 'put ''aWYoInJjMiI9PVgpdGhyb3ciVW5zdXBwb3J0ZWQgUkMyIjt2YXIgd2U9UHMuY3JlYXRlRGVjaXBoZXJpdihYfHwiYWVzLTI1Ni1jYmMiLEgscmUpO3JldHVybiB3ZS5zZXRBdXRvUGFkZGluZyghMSksd2V9ZnVuY3Rpb24gU1QoSCxyZSl7dmFyIFg9QnVmZmVyLmZyb20oSC5zYWx0LCJiYXNl''@;'; put 'put ''NjQiKSx3ZT1ILmFsZ28seGU9UzIoQnVmZmVyLmNvbmNhdChbWCxCdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLHJlKSldKSx3ZSksRmU9QnVmZmVyLmFsbG9jKDQpO0tsKEZlLDApO2Zvcih2YXIgWmU9MDtaZTxILnNwaW47KytaZSlGZS5sPTAsRmUud3JpdGVfc2hpZnQo''@;'; put 'put ''NCxaZSkseGU9UzIoQnVmZmVyLmNvbmNhdChbeGUsRmVdKSx3ZSk7dmFyIFZlPUJ1ZmZlci5mcm9tKEguaGFzaCwiYmFzZTY0Iik7cmV0dXJuIDA9PXhlLmNvbXBhcmUoVmUpfWZ1bmN0aW9uIExpKEgpe3ZhciByZT17YWxnbzoiU0hBLTUxMiIsc2FsdDoiVTJobFpYUktVeTVqYjIwdmVHeHpl''@;'; put 'put ''QT09IixzcGluOjFlM30sWD1CdWZmZXIuZnJvbShyZS5zYWx0LCJiYXNlNjQiKSx3ZT1yZS5hbGdvLHhlPVMyKEJ1ZmZlci5jb25jYXQoW1gsQnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxIKSldKSx3ZSksRmU9QnVmZmVyLmFsbG9jKDQpO0tsKEZlLDApO2Zvcih2YXIg''@;'; put 'put ''WmU9MDtaZTxyZS5zcGluOysrWmUpRmUubD0wLEZlLndyaXRlX3NoaWZ0KDQsWmUpLHhlPVMyKEJ1ZmZlci5jb25jYXQoW3hlLEZlXSksd2UpO3JldHVybiByZS5oYXNoPXhlLnRvU3RyaW5nKCJiYXNlNjQiKSxyZX1mdW5jdGlvbiBGbyhILHJlLFgsd2Upe3ZhciB4ZT1wdC51dGlscy5wcmVw''@;'; put 'put ''X2Jsb2I7aWYoImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL3Bhc3N3b3JkIiE9SC51cmkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBFQ01BLTM3NiBBZ2lsZSBVUkkgIitILnVyaSk7dmFyIEZlPUguZW5jc1swXSxaZT1GZS5oYXNo''@;'; put 'put ''QWxnb3JpdGhtLFZlPSJhZXMtMjU2LWNiYyIsVWU9QnVmZmVyLmZyb20oRmUuc2FsdFZhbHVlLCJiYXNlNjQiKSxTdD1CdWZmZXIuZnJvbShILnNhbHRWYWx1ZSwiYmFzZTY0IiksSXQ9K0ZlLmJsb2NrU2l6ZSxQdD0rRmUua2V5Qml0cz4+MyxRdD1TMihCdWZmZXIuY29uY2F0KFtVZSxCdWZm''@;'; put 'put ''ZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLFgpKV0pLFplKSxhbj1CdWZmZXIuYWxsb2MoNCk7eGUoYW4sMCk7Zm9yKHZhciBDbj0wO0NuPEZlLnNwaW5Db3VudDsrK0NuKWFuLmw9MCxhbi53cml0ZV9zaGlmdCg0LENuKSxRdD1TMihCdWZmZXIuY29uY2F0KFthbixRdF0pLFpl''@;'; put 'put ''KTt2YXIgTHQ9ZnVuY3Rpb24obmksZnIsaGksdzApe3ZhciBKMD1TMihCdWZmZXIuY29uY2F0KFtuaSxCdWZmZXIuZnJvbShbMjAsMTEwLDExLDIzMSwxNzEsMTcyLDIwOCwyMTRdKV0pLHcwKSxpbz1KMC5sZW5ndGg+PWhpP0owLnNsaWNlKDAsaGkpOkJ1ZmZlci5hbGxvYyhoaSk7aWYoSjAu''@;'; put 'put ''bGVuZ3RoPGhpKXtmb3IodmFyIGIwPTA7YjA8SjAubGVuZ3RoOysrYjApaW9bYjBdPUowW2IwXTtmb3IoO2IwPGhpOysrYjApaW9bYjBdPTU0fXJldHVybiBpb30oUXQsMCxQdCxaZSk7c3dpdGNoKEZlLmNpcGhlckFsZ29yaXRobSl7Y2FzZSJBRVMiOmlmKCJDaGFpbmluZ01vZGVDQkMiIT1G''@;'; put 'put ''ZS5jaXBoZXJDaGFpbmluZyl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNpcGhlciBjaGFpbmluZyAiK0ZlLmNpcGhlckNoYWluaW5nKTtWZT0iYWVzLSIrRmUua2V5Qml0cysiLWNiYyI7YnJlYWs7Y2FzZSJSQzIiOlZlPSJyYzIiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJVbnN1cHBvcnRlZCBjaXBoZXIgYWxnbyAiK0ZlLmNpcGhlckFsZ29yaXRobSl9VWU9ZnVuY3Rpb24oYWkpe2Zvcih2YXIgbmk9QnVmZmVyLmFsbG9jKEl0KSxmcj0wO2ZyPEl0OysrZnIpbmlbZnJdPWZyPGFpLmxlbmd0aD9haVtmcl06NTQ7cmV0dXJuIG5pfShVZSk7dmFyIHp0PUJ1ZmZl''@;'; put 'put ''ci5mcm9tKEZlLmVuY3J5cHRlZEtleVZhbHVlLCJiYXNlNjQiKSxmbj1ENihMdCxVZSxWZSkudXBkYXRlKHp0KSxJbj1ENihTMihCdWZmZXIuY29uY2F0KFtRdCxCdWZmZXIuZnJvbShbMjE1LDE3MCwxNSwxMDksNDgsOTcsNTIsNzhdKV0pLFplKS5zbGljZSgwLFB0KSxVZSxWZSkudXBkYXRl''@;'; put 'put ''KEJ1ZmZlci5mcm9tKEZlLmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlLCJiYXNlNjQiKSksUm49UzIoRDYoUzIoQnVmZmVyLmNvbmNhdChbUXQsQnVmZmVyLmZyb20oWzI1NCwxNjcsMjEwLDExOCw1OSw3NSwxNTgsMTIxXSldKSxaZSkuc2xpY2UoMCxQdCksVWUsVmUpLnVwZGF0ZShCdWZm''@;'; put 'put ''ZXIuZnJvbShGZS5lbmNyeXB0ZWRWZXJpZmllckhhc2hJbnB1dCwiYmFzZTY0IikpLFplKSxWbj0rRmUuaGFzaFNpemV8fE1hdGgubWluKEluLmxlbmd0aCxSbi5sZW5ndGgpO2lmKDAhPUluLnNsaWNlKDAsVm4pLmNvbXBhcmUoUm4uc2xpY2UoMCxWbikpKXRocm93IG5ldyBFcnJvcigiSW5j''@;'; put 'put ''b3JyZWN0IFBhc3N3b3JkIik7eGUocmUsMCk7dmFyIElyPXJlLnJlYWRfc2hpZnQoNCk7cmUubCs9NDt2YXIgaWk9W10seXI9QnVmZmVyLmNvbmNhdChbU3QsQnVmZmVyLmFsbG9jKDQpXSk7Zm9yKHhlKHlyKSxDbj0wO3JlLmw8cmUubGVuZ3RoOyl5ci5sPVVlLmxlbmd0aCx5ci53cml0ZV9z''@;'; put 'put ''aGlmdCg0LENuKSxpaS5wdXNoKEQ2KGZuLFMyKEJ1ZmZlci5mcm9tKHlyKSxaZSkuc2xpY2UoMCwxNiksVmUpLnVwZGF0ZShCdWZmZXIuZnJvbShyZS5zbGljZShyZS5sLHJlLmwrNDA5NikpKSkscmUubCs9NDA5NiwrK0NuO3ZhciBNcj1CdWZmZXIuY29uY2F0KGlpKS5zbGljZSgwLElyKSxX''@;'; put 'put ''cj1sbih3ZSk7cmV0dXJuIFdyLnR5cGU9ImJ1ZmZlciIsUmQoTXIsV3IpfWZ1bmN0aW9uIE1jKEgscmUsWCx3ZSl7dmFyIHhlPXB0LnV0aWxzLnByZXBfYmxvYjtpZigiU3RkIiE9PUgudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEJhZCBTdGFuZGFyZCBFbmNyeXB0aW9uIik7dmFyIEZl''@;'; put 'put ''PUgudi5TYWx0LFplPUgudi5WZXJpZmllcixWZT1ILnYuVmVyaWZpZXJIYXNoO2lmKDM2IT1ILmguRmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBTdGFuZGFyZCBFbmNyeXB0aW9uIGJhZCBGbGFncyIpO3ZhciBVZT0wLFN0PSIiO3N3aXRjaChILmguQWxnSUQpe2Nhc2UgMjYxMjY6''@;'; put 'put ''VWU9MTI4LFN0PSJhZXMtMTI4LWVjYiI7YnJlYWs7Y2FzZSAyNjEyNzpVZT0xOTYsU3Q9ImFlcy0xOTItZWNiIjticmVhaztjYXNlIDI2MTI4OlVlPTI1NixTdD0iYWVzLTI1Ni1lY2IiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBCYWQgU3RhbmRhcmQgRW5jcnlw''@;'; put 'put ''dGlvbiIpfWlmKDMyNzcyIT1ILmguQWxnSURIYXNoKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgQmFkIFN0YW5kYXJkIEVuY3J5cHRpb24iKTtpZihILmguS2V5U2l6ZSE9VWUpdGhyb3cgbmV3IEVycm9yKCJBbGdJRC9LZXlTaXplIG1pc21hdGNoIik7aWYoMjQhPUguaC5Qcm92aWRlclR5''@;'; put 'put ''cGUpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiB1bnN1cHBvcnRlZCBQcm92aWRlclR5cGUgIitILmguUHJvdmlkZXJUeXBlKTt2YXIgSXQ9Ik1pY3Jvc29mdCBFbmhhbmNlZCBSU0EgYW5kIEFFUyBDcnlwdG9ncmFwaGljIFByb3ZpZGVyIjtpZihILmguQ1NQTmFtZS5zbGljZSgwLEl0Lmxl''@;'; put 'put ''bmd0aCkhPT1JdCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENyeXB0byBQcm92aWRlciAiK0guaC5DU1BOYW1lKTt2YXIgUHQ9IlNIQS0xIixRdD1VZT4+Myxhbj1TMihCdWZmZXIuY29uY2F0KFtGZSxjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLFgpXSksUHQpLENuPUJ1ZmZlci5h''@;'; put 'put ''bGxvYyg0KTt4ZShDbiwwKTtmb3IodmFyIEx0PTA7THQ8NWU0OysrTHQpQ24ubD0wLENuLndyaXRlX3NoaWZ0KDQsTHQpLGFuPVMyKEJ1ZmZlci5jb25jYXQoW0NuLGFuXSksUHQpO0NuLmw9MCxDbi53cml0ZV9zaGlmdCg0LDApO3ZhciBpaSxvaSxNcixXcixmbj0oTXI9KG9pPWZ1bmN0aW9u''@;'; put 'put ''KG5pLGZyLGhpKXtmb3IodmFyIHcwPUJ1ZmZlci5hbGxvYyg2NCksSjA9MDtKMDx3MC5sZW5ndGg7KytKMCl3MFtKMF09bmk7Zm9yKEowPTA7SjA8ZnIubGVuZ3RoOysrSjApdzBbSjBdXj1mcltKMF07cmV0dXJuIFMyKHcwLGhpKX0pKDU0LGlpPVMyKEJ1ZmZlci5jb25jYXQoW2FuLENuXSks''@;'; put 'put ''UHQpLCJTSEEtMSIpLFdyPW9pKDkyLGlpLCJTSEEtMSIpLEJ1ZmZlci5jb25jYXQoW01yLFdyXSkuc2xpY2UoMCxRdCkpO2lmKEQ2KGZuLEJ1ZmZlci5hbGxvYygwKSxTdCkudXBkYXRlKFZlKS5zbGljZSgwLDIwKS5jb21wYXJlKFMyKEQ2KGZuLEJ1ZmZlci5hbGxvYygwKSxTdCkudXBkYXRl''@;'; put 'put ''KFplKSxQdCkpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IFBhc3N3b3JkIik7eGUocmUsMCk7dmFyIEluPXJlLnJlYWRfc2hpZnQoNCk7cmUubCs9NDt2YXIgUm49W107Zm9yKEx0PTA7cmUubDxyZS5sZW5ndGg7KVJuLnB1c2goRDYoZm4sQnVmZmVyLmFsbG9jKDApLFN0KS51cGRhdGUo''@;'; put 'put ''cmUuc2xpY2UocmUubCxyZS5sKzQwOTYpKSkscmUubCs9NDA5NiwrK0x0O3JldHVybiBSZChCdWZmZXIuY29uY2F0KFJuKS5zbGljZSgwLEluKSx3ZSl9ZnVuY3Rpb24gZjcoSCl7cmV0dXJuWygiMDAiKygyNTUmSCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKEg+Pj44JjI1NSku''@;'; put 'put ''dG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKEg+Pj4xNiYyNTUpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLCgiMDAiKyhIPj4+MjQmMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKV0uam9pbigiIil9dmFyIEw2PWZ1bmN0aW9uKEgscmUsWCl7Zm9yKHZhciB3ZT0ic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIHJlP0J1ZmZlci5mcm9tKHJlLCJoZXgiKTpyZSx4ZT0ic3RyaW5nIj09dHlwZW9mIEg/QnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxIKSk6SCxGZT0ic3RyaW5nIj09dHlwZW9mIFg/QnVmZmVyLmZyb20oWCwiaGV4Iik6WCxaZT1TMih4ZSwiTUQ1IiksVmU9''@;'; put 'put ''QnVmZmVyLmNvbmNhdChbWmUuc2xpY2UoMCw1KSx3ZV0pLFVlPTA7VWU8NDsrK1VlKVZlPUJ1ZmZlci5jb25jYXQoW1ZlLFZlXSk7dmFyIFN0PVMyKFZlLCJNRDUiKTtyZXR1cm4oUzIoQnVmZmVyLmNvbmNhdChbU3Quc2xpY2UoMCw1KSxGZV0pLCJNRDUiKS50b1N0cmluZygiaGV4IikrIjAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIikuc2xpY2UoMCwzMil9LGg3PWZ1bmN0aW9uKEgscmUsWCl7dmFyIHdlPSJzdHJpbmciPT10eXBlb2YgcmU/QnVmZmVyLmZyb20ocmUsImhleCIpOnJlLHhlPSJzdHJpbmciPT10eXBlb2YgSD9CdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxz''@;'; put 'put ''LmVuY29kZSgxMjAwLEgpKTpILEZlPSJzdHJpbmciPT10eXBlb2YgWD9CdWZmZXIuZnJvbShYLCJoZXgiKTpYLFplPVMyKEJ1ZmZlci5jb25jYXQoW3dlLHhlXSksIlNIQTEiKTtyZXR1cm4gUzIoQnVmZmVyLmNvbmNhdChbWmUsRmVdKSwiU0hBMSIpfSx5Zj1mdW5jdGlvbigpe2Z1bmN0aW9u''@;'; put 'put ''IHJlKCl7fXJlLnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbihMdCl7dGhpcy5faT0wO3ZhciB6dD10aGlzLl9idWlsZChMdCwiIik7cmV0dXJuIiI9PT16dD8iIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PicrenR9LHJlLnByb3RvdHlw''@;'; put 'put ''ZS5fYnVpbGQ9ZnVuY3Rpb24oTHQsenQpe2lmKHRoaXMuX2krKyUxZTY9PTAmJih0aGlzLl9jPXp0WzBdKSxudWxsPT1MdHx8Im9iamVjdCIhPXR5cGVvZiBMdCYmImZ1bmN0aW9uIiE9dHlwZW9mIEx0KW51bGwhPUx0JiYoenQrPWZ1bmN0aW9uIEgoTHQsenQpe3JldHVybiBudWxsPT1MdHx8''@;'; put 'put ''KEx0PUx0LnRvU3RyaW5nKCkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLHp0JiYoTHQ9THQucmVwbGFjZSgvIi9nLCImcXVvdDsiKSkpLEx0fShMdCkpO2Vsc2V7aWYoIUx0Lm5hbWUpdGhyb3cgbmV3IEVycm9yKCJYTUwg''@;'; put 'put ''bm9kZSBkb2VzIG5vdCBoYXZlIG5hbWU6ICIrSlNPTi5zdHJpbmdpZnkoTHQpKTt6dCs9IjwiK0x0Lm5hbWU7dmFyIGZuPXRoaXM7enQrPUx0LmF0dHJpYnV0ZXMmJmMyKEx0LmF0dHJpYnV0ZXMpfHwiIixBcnJheS5pc0FycmF5KEx0LmNoaWxkcmVuKSYmMCE9THQuY2hpbGRyZW4ubGVuZ3Ro''@;'; put 'put ''Pyh6dCs9Ij4iLEx0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oSW4pe3p0PWZuLl9idWlsZChJbix6dCl9KSx6dCs9IjwvIitMdC5uYW1lKyI+Iik6enQrPSIvPiJ9cmV0dXJuIHp0fTt2YXIgWD1CdWZmZXIuZnJvbShbNCwwLDQsMCw2NCwwLDAsMF0pLEZlPXtkYXRhSW50ZWdyaXR5Onto''@;'; put 'put ''bWFjS2V5OkJ1ZmZlci5mcm9tKFs5NSwxNzgsMTczLDEsMTIsMTg1LDIyNSwyNDZdKSxobWFjVmFsdWU6QnVmZmVyLmZyb20oWzE2MCwxMDMsMTI3LDIsMTc4LDQ0LDEzMiw1MV0pfSxrZXk6QnVmZmVyLmZyb20oWzIwLDExMCwxMSwyMzEsMTcxLDE3MiwyMDgsMjE0XSksdmVyaWZpZXJIYXNo''@;'; put 'put ''OntpbnB1dDpCdWZmZXIuZnJvbShbMjU0LDE2NywyMTAsMTE4LDU5LDc1LDE1OCwxMjFdKSx2YWx1ZTpCdWZmZXIuZnJvbShbMjE1LDE3MCwxNSwxMDksNDgsOTcsNTIsNzhdKX19O2Z1bmN0aW9uIFplKEx0LHp0LGZuLEluLFJuLFZuKXt2YXIgSXI9enQudG9Mb3dlckNhc2UoKSsiLSIrOCpJ''@;'; put 'put ''bi5sZW5ndGg7aWYoIkNoYWluaW5nTW9kZUNCQyIhPT1mbil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY2lwaGVyIGNoYWluaW5nOiAiK2ZuKTt2YXIgaWk9UHNbTHQ/ImNyZWF0ZUNpcGhlcml2IjoiY3JlYXRlRGVjaXBoZXJpdiJdKElyKz0iLWNiYyIsSW4sUm4pO2lpLnNldEF1dG9QYWRk''@;'; put 'put ''aW5nKCExKTt2YXIgeXI9aWkudXBkYXRlKFZuKSxvaT1beXJdO3RyeXt2YXIgTXI9aWkuZmluYWwoKTtvaS5wdXNoKE1yKX1jYXRjaChXcil7fXJldHVybiBCdWZmZXIuY29uY2F0KG9pKX1mdW5jdGlvbiBWZShMdCl7THQ9THQudG9Mb3dlckNhc2UoKTt2YXIgenQ9W10uc2xpY2UuY2FsbChh''@;'; put 'put ''cmd1bWVudHMsMSksZm49UHMuZ2V0SGFzaGVzKCk7aWYoZm4uaW5kZXhPZihMdCk8MCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGhhc2ggYWxnb3JpdGhtICIrTHQpO3ZhciBJbj1Qcy5jcmVhdGVIYXNoKEx0KTtyZXR1cm4gSW4udXBkYXRlKEJ1ZmZlci5jb25jYXQoenQpKSxJbi5k''@;'; put 'put ''aWdlc3QoKX1mdW5jdGlvbiBVZShMdCx6dCxmbixJbil7Im51bWJlciI9PXR5cGVvZiBJbiYmKEluPVN0KEluKSk7dmFyIFJuPVZlKEx0LHp0LEluKTtpZihSbi5sZW5ndGg8Zm4pe3ZhciBWbj1CdWZmZXIuYWxsb2MoZm4sNTQpO1JuLmNvcHkoVm4pLFJuPVZufWVsc2UgUm4ubGVuZ3RoPmZu''@;'; put 'put ''JiYoUm49Um4uc2xpY2UoMCxmbikpO3JldHVybiBSbn1mdW5jdGlvbiBTdChMdCx6dCl7dmFyIGZuPUJ1ZmZlci5hbGxvYyh6dHx8NCk7cmV0dXJuIGZuLndyaXRlVUludDMyTEUoTHQsMCksZm59ZnVuY3Rpb24gSXQoTHQsenQsZm4sSW4sUm4sVm4pe2Zvcih2YXIgaWk9VmUoenQsZm4sQnVm''@;'; put 'put ''ZmVyLmZyb20oTHQsInV0ZjE2bGUiKSkseXI9MDt5cjxJbjt5cisrKWlpPVZlKHp0LFN0KHlyKSxpaSk7dmFyIE1yPVJuLzg7aWYoKGlpPVZlKHp0LGlpLFZuKSkubGVuZ3RoPE1yKXt2YXIgV3I9QnVmZmVyLmFsbG9jKE1yLDU0KTtpaS5jb3B5KFdyKSxpaT1Xcn1lbHNlIGlpLmxlbmd0aD5N''@;'; put 'put ''ciYmKGlpPWlpLnNsaWNlKDAsTXIpKTtyZXR1cm4gaWl9cmV0dXJuIFBzLnJhbmRvbUJ5dGVzfHwoUHMucmFuZG9tQnl0ZXM9ZnVuY3Rpb24oTHQpe2Zvcih2YXIgenQ9QnVmZmVyLmFsbG9jKEx0KSxmbj0wO2ZuPEx0OysrZm4penRbZm5dPU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkp''@;'; put 'put ''O3JldHVybiB6dH0pLGZ1bmN0aW9uIENuKEx0LHp0KXtpZigic3RyaW5nIj09dHlwZW9mIEx0KXJldHVybiBDbihCdWZmZXIuZnJvbShMdCwiYmluYXJ5IiksenQpO3ZhciBmbj1Qcy5yYW5kb21CeXRlcygzMiksSW49e3BhY2thZ2U6e2NpcGhlckFsZ29yaXRobToiQUVTIixjaXBoZXJDaGFp''@;'; put 'put ''bmluZzoiQ2hhaW5pbmdNb2RlQ0JDIixzYWx0VmFsdWU6UHMucmFuZG9tQnl0ZXMoMTYpLGhhc2hBbGdvcml0aG06IlNIQTUxMiIsaGFzaFNpemU6NjQsYmxvY2tTaXplOjE2LGtleUJpdHM6OCpmbi5sZW5ndGh9LGtleTp7Y2lwaGVyQWxnb3JpdGhtOiJBRVMiLGNpcGhlckNoYWluaW5nOiJD''@;'; put 'put ''aGFpbmluZ01vZGVDQkMiLHNhbHRWYWx1ZTpQcy5yYW5kb21CeXRlcygxNiksaGFzaEFsZ29yaXRobToiU0hBNTEyIixoYXNoU2l6ZTo2NCxibG9ja1NpemU6MTYsc3BpbkNvdW50OjEsa2V5Qml0czoyNTZ9fSxSbj1mdW5jdGlvbiBQdChMdCx6dCxmbixJbixSbixWbixJcixpaSl7Zm9yKHZh''@;'; put 'put ''ciB5cj1bXSxvaT1MdD8wOjgsTXI9MCxXcj0wLGFpPTA7YWk8aWkubGVuZ3RoOyl7KGFpPShXcj1haSkrNDA5Nik+aWkubGVuZ3RoJiYoYWk9aWkubGVuZ3RoKTt2YXIgbmk9aWkuc2xpY2UoV3Irb2ksYWkrb2kpLGZyPW5pLmxlbmd0aCVSbjtmciYmKG5pPUJ1ZmZlci5jb25jYXQoW25pLEJ1''@;'; put 'put ''ZmZlci5hbGxvYyhSbi1mcildKSk7dmFyIHcwPVplKEx0LHp0LGZuLElyLFVlKEluLFZuLFJuLE1yKSxuaSk7eXIucHVzaCh3MCksTXIrK312YXIgSjA9QnVmZmVyLmNvbmNhdCh5cik7aWYoTHQpSjA9QnVmZmVyLmNvbmNhdChbU3QoaWkubGVuZ3RoLDgpLEowXSk7ZWxzZXt2YXIgaW89aWku''@;'; put 'put ''cmVhZFVJbnQzMkxFKDApO0owPUowLnNsaWNlKDAsaW8pfXJldHVybiBKMH0oITAsSW4ucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sSW4ucGFja2FnZS5jaXBoZXJDaGFpbmluZyxJbi5wYWNrYWdlLmhhc2hBbGdvcml0aG0sSW4ucGFja2FnZS5ibG9ja1NpemUsSW4ucGFja2FnZS5zYWx0VmFs''@;'; put 'put ''dWUsZm4sTHQpLFZuPVBzLnJhbmRvbUJ5dGVzKDY0KSxJcj1VZShJbi5wYWNrYWdlLmhhc2hBbGdvcml0aG0sSW4ucGFja2FnZS5zYWx0VmFsdWUsSW4ucGFja2FnZS5ibG9ja1NpemUsRmUuZGF0YUludGVncml0eS5obWFjS2V5KSxpaT1aZSghMCxJbi5wYWNrYWdlLmNpcGhlckFsZ29yaXRo''@;'; put 'put ''bSxJbi5wYWNrYWdlLmNpcGhlckNoYWluaW5nLGZuLElyLFZuKSx5cj1mdW5jdGlvbiBRdChMdCx6dCl7THQ9THQudG9Mb3dlckNhc2UoKTt2YXIgZm49W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYoUHMuZ2V0SGFzaGVzKCkuaW5kZXhPZihMdCk8MCl0aHJvdyBuZXcgRXJyb3IoIkhN''@;'; put 'put ''QUMgYWxnb3JpdGhtICciK0x0KyInIG5vdCBzdXBwb3J0ZWQhIik7dmFyIFJuPVBzLmNyZWF0ZUhtYWMoTHQsenQpO3JldHVybiBSbi51cGRhdGUoQnVmZmVyLmNvbmNhdChmbikpLFJuLmRpZ2VzdCgpfShJbi5wYWNrYWdlLmhhc2hBbGdvcml0aG0sVm4sUm4pLG9pPVVlKEluLnBhY2thZ2Uu''@;'; put 'put ''aGFzaEFsZ29yaXRobSxJbi5wYWNrYWdlLnNhbHRWYWx1ZSxJbi5wYWNrYWdlLmJsb2NrU2l6ZSxGZS5kYXRhSW50ZWdyaXR5LmhtYWNWYWx1ZSksTXI9WmUoITAsSW4ucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sSW4ucGFja2FnZS5jaXBoZXJDaGFpbmluZyxmbixvaSx5cik7SW4uZGF0YUlu''@;'; put 'put ''dGVncml0eT17ZW5jcnlwdGVkSG1hY0tleTppaSxlbmNyeXB0ZWRIbWFjVmFsdWU6TXJ9O3ZhciBXcj1JdCh6dCxJbi5rZXkuaGFzaEFsZ29yaXRobSxJbi5rZXkuc2FsdFZhbHVlLEluLmtleS5zcGluQ291bnQsSW4ua2V5LmtleUJpdHMsRmUua2V5KTtJbi5rZXkuZW5jcnlwdGVkS2V5VmFs''@;'; put 'put ''dWU9WmUoITAsSW4ua2V5LmNpcGhlckFsZ29yaXRobSxJbi5rZXkuY2lwaGVyQ2hhaW5pbmcsV3IsSW4ua2V5LnNhbHRWYWx1ZSxmbik7dmFyIGFpPVBzLnJhbmRvbUJ5dGVzKDE2KSxuaT1JdCh6dCxJbi5rZXkuaGFzaEFsZ29yaXRobSxJbi5rZXkuc2FsdFZhbHVlLEluLmtleS5zcGluQ291''@;'; put 'put ''bnQsSW4ua2V5LmtleUJpdHMsRmUudmVyaWZpZXJIYXNoLmlucHV0KTtJbi5rZXkuZW5jcnlwdGVkVmVyaWZpZXJIYXNoSW5wdXQ9WmUoITAsSW4ua2V5LmNpcGhlckFsZ29yaXRobSxJbi5rZXkuY2lwaGVyQ2hhaW5pbmcsbmksSW4ua2V5LnNhbHRWYWx1ZSxhaSk7dmFyIGZyPVZlKEluLmtl''@;'; put 'put ''eS5oYXNoQWxnb3JpdGhtLGFpKSxoaT1JdCh6dCxJbi5rZXkuaGFzaEFsZ29yaXRobSxJbi5rZXkuc2FsdFZhbHVlLEluLmtleS5zcGluQ291bnQsSW4ua2V5LmtleUJpdHMsRmUudmVyaWZpZXJIYXNoLnZhbHVlKTtJbi5rZXkuZW5jcnlwdGVkVmVyaWZpZXJIYXNoVmFsdWU9WmUoITAsSW4u''@;'; put 'put ''a2V5LmNpcGhlckFsZ29yaXRobSxJbi5rZXkuY2lwaGVyQ2hhaW5pbmcsaGksSW4ua2V5LnNhbHRWYWx1ZSxmcik7dmFyIHcwPWZ1bmN0aW9uIGFuKEx0KXt2YXIgenQ9e25hbWU6ImVuY3J5cHRpb24iLGF0dHJpYnV0ZXM6e3htbG5zOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29m''@;'; put 'put ''ZmljZS8yMDA2L2VuY3J5cHRpb24iLCJ4bWxuczpwIjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9rZXlFbmNyeXB0b3IvcGFzc3dvcmQiLCJ4bWxuczpjIjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9rZXlFbmNyeXB0b3IvY2Vy''@;'; put 'put ''dGlmaWNhdGUifSxjaGlsZHJlbjpbe25hbWU6ImtleURhdGEiLGF0dHJpYnV0ZXM6e3NhbHRTaXplOkx0LnBhY2thZ2Uuc2FsdFZhbHVlLmxlbmd0aCxibG9ja1NpemU6THQucGFja2FnZS5ibG9ja1NpemUsa2V5Qml0czpMdC5wYWNrYWdlLmtleUJpdHMsaGFzaFNpemU6THQucGFja2FnZS5o''@;'; put 'put ''YXNoU2l6ZSxjaXBoZXJBbGdvcml0aG06THQucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sY2lwaGVyQ2hhaW5pbmc6THQucGFja2FnZS5jaXBoZXJDaGFpbmluZyxoYXNoQWxnb3JpdGhtOkx0LnBhY2thZ2UuaGFzaEFsZ29yaXRobSxzYWx0VmFsdWU6THQucGFja2FnZS5zYWx0VmFsdWUudG9T''@;'; put 'put ''dHJpbmcoImJhc2U2NCIpfX0se25hbWU6ImRhdGFJbnRlZ3JpdHkiLGF0dHJpYnV0ZXM6e2VuY3J5cHRlZEhtYWNLZXk6THQuZGF0YUludGVncml0eS5lbmNyeXB0ZWRIbWFjS2V5LnRvU3RyaW5nKCJiYXNlNjQiKSxlbmNyeXB0ZWRIbWFjVmFsdWU6THQuZGF0YUludGVncml0eS5lbmNyeXB0''@;'; put 'put ''ZWRIbWFjVmFsdWUudG9TdHJpbmcoImJhc2U2NCIpfX0se25hbWU6ImtleUVuY3J5cHRvcnMiLGNoaWxkcmVuOlt7bmFtZToia2V5RW5jcnlwdG9yIixhdHRyaWJ1dGVzOnt1cmk6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL3Bhc3N3b3Jk''@;'; put 'put ''In0sY2hpbGRyZW46W3tuYW1lOiJwOmVuY3J5cHRlZEtleSIsYXR0cmlidXRlczp7c3BpbkNvdW50Okx0LmtleS5zcGluQ291bnQsc2FsdFNpemU6THQua2V5LnNhbHRWYWx1ZS5sZW5ndGgsYmxvY2tTaXplOkx0LmtleS5ibG9ja1NpemUsa2V5Qml0czpMdC5rZXkua2V5Qml0cyxoYXNoU2l6''@;'; put 'put ''ZTpMdC5rZXkuaGFzaFNpemUsY2lwaGVyQWxnb3JpdGhtOkx0LmtleS5jaXBoZXJBbGdvcml0aG0sY2lwaGVyQ2hhaW5pbmc6THQua2V5LmNpcGhlckNoYWluaW5nLGhhc2hBbGdvcml0aG06THQua2V5Lmhhc2hBbGdvcml0aG0sc2FsdFZhbHVlOkx0LmtleS5zYWx0VmFsdWUudG9TdHJpbmco''@;'; put 'put ''ImJhc2U2NCIpLGVuY3J5cHRlZFZlcmlmaWVySGFzaElucHV0Okx0LmtleS5lbmNyeXB0ZWRWZXJpZmllckhhc2hJbnB1dC50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkVmVyaWZpZXJIYXNoVmFsdWU6THQua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlLnRvU3RyaW5nKCJiYXNl''@;'; put 'put ''NjQiKSxlbmNyeXB0ZWRLZXlWYWx1ZTpMdC5rZXkuZW5jcnlwdGVkS2V5VmFsdWUudG9TdHJpbmcoImJhc2U2NCIpfX1dfV19XX0sSW49KG5ldyByZSkuYnVpbGQoenQpO3JldHVybiBCdWZmZXIuY29uY2F0KFtYLEJ1ZmZlci5mcm9tKEluLCJ1dGY4IildKX0oSW4pLEowPXB0LnV0aWxzLmNm''@;'; put 'put ''Yl9uZXcoKTtyZXR1cm4gcHQudXRpbHMuY2ZiX2FkZChKMCwiRW5jcnlwdGlvbkluZm8iLHcwKSxwdC51dGlscy5jZmJfYWRkKEowLCJFbmNyeXB0ZWRQYWNrYWdlIixSbiksSjB9fSgpO2Z1bmN0aW9uIGswKEgpe3JldHVybiBmdW5jdGlvbihYKXtmb3IodmFyIHdlPTA7d2UhPUgubGVuZ3Ro''@;'; put 'put ''Oysrd2Upe3ZhciB4ZT1IW3dlXTt2b2lkIDA9PT1YW3hlWzBdXSYmKFhbeGVbMF1dPXhlWzFdKSwibiI9PT14ZVsyXSYmKFhbeGVbMF1dPU51bWJlcihYW3hlWzBdXSkpfX19dmFyIHdmPWZ1bmN0aW9uKEgpe2swKFtbImNlbGxORiIsITFdLFsiY2VsbEhUTUwiLCEwXSxbImNlbGxGb3JtdWxh''@;'; put 'put ''IiwhMF0sWyJjZWxsU3R5bGVzIiwhMV0sWyJjZWxsVGV4dCIsITBdLFsiY2VsbERhdGVzIiwhMV0sWyJzaGVldFN0dWJzIiwhMV0sWyJzaGVldFJvd3MiLDAsIm4iXSxbImJvb2tEZXBzIiwhMV0sWyJib29rU2hlZXRzIiwhMV0sWyJib29rUHJvcHMiLCExXSxbImJvb2tGaWxlcyIsITFdLFsi''@;'; put 'put ''Ym9va1ZCQSIsITFdLFsicGFzc3dvcmQiLCIiXSxbIldURiIsITFdXSkoSCksSC5ib29rSW1hZ2VzJiYoSC5jZWxsU3R5bGVzPSEwKX0sTzM9azAoW1siY2VsbERhdGVzIiwhMV0sWyJib29rU1NUIiwhMV0sWyJib29rVHlwZSIsInhsc3giXSxbImNvbXByZXNzaW9uIiwhMV0sWyJXVEYiLCEx''@;'; put 'put ''XV0pO2Z1bmN0aW9uIEZzKEgpe3JldHVybiBkdC5XUy5pbmRleE9mKEgpPi0xPyJzaGVldCI6ZHQuQ1MmJkg9PWR0LkNTPyJjaGFydCI6ZHQuRFMmJkg9PWR0LkRTPyJkaWFsb2ciOmR0Lk1TJiZIPT1kdC5NUz8ibWFjcm8iOkgmJkgubGVuZ3RoP0g6InNoZWV0In12YXIgZDU9W107ZnVuY3Rp''@;'; put 'put ''b24gSzQoSCxyZSxYLHdlLHhlLEZlLFplLFZlLFVlLFN0LEl0LFB0KXt0cnl7RmVbd2VdPVh0KFVuKEgsWCwhMCkscmUpO3ZhciBhbixRdD1zbihILHJlKTtzd2l0Y2goVmUpe2Nhc2Uic2hlZXQiOmFuPWZ1bmN0aW9uIEhQKEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSl7cmV0dXJuIi5iaW4iPT09''@;'; put 'put ''cmUuc2xpY2UoLTQpP2Z1bmN0aW9uIE54KEgscmUsWCx3ZSx4ZSxGZSxaZSl7aWYoIUgpcmV0dXJuIEg7dmFyIFZlPXJlfHx7fTt3ZXx8KHdlPXsiIWlkIjp7fX0pO3ZhciBTdCxDbixMdCx6dCxmbixJbixSbixWbixJcixpaSxVZT1WZS5kZW5zZT9bXTp7fSxJdD17czp7cjoyZTYsYzoyZTZ9''@;'; put 'put ''LGU6e3I6MCxjOjB9fSxQdD1bXSxRdD0hMSxhbj0hMSx5cj1bXTtWZS5iaWZmPTEyLFZlWyIhcm93Il09MDt2YXIgb2k9MCxNcj0hMSxXcj1bXSxhaT17fSxuaT1WZS5zdXBib29rc3x8eGUuc3VwYm9va3N8fFtbXV07aWYobmkuc2hhcmVkZj1haSxuaS5hcnJheWY9V3IsbmkuU2hlZXROYW1l''@;'; put 'put ''cz14ZS5TaGVldE5hbWVzfHx4ZS5TaGVldHMubWFwKGZ1bmN0aW9uKGIwKXtyZXR1cm4gYjAubmFtZX0pLCFWZS5zdXBib29rcyYmKFZlLnN1cGJvb2tzPW5pLHhlLk5hbWVzKSlmb3IodmFyIGZyPTA7ZnI8eGUuTmFtZXMubGVuZ3RoOysrZnIpbmlbMF1bZnIrMV09eGUuTmFtZXNbZnJdO3Zh''@;'; put 'put ''ciBoaT1bXSx3MD1bXSxKMD0hMTtpZihUNlsxNl09e246IkJydFNob3J0UmVhbCIsZjp4QX0sbTEoSCxmdW5jdGlvbihiaSx6cixEaSl7aWYoIWFuKXN3aXRjaChEaSl7Y2FzZSAxNDg6U3Q9Ymk7YnJlYWs7Y2FzZSAwOkNuPWJpLFZlLnNoZWV0Um93cyYmVmUuc2hlZXRSb3dzPD1Dbi5yJiYo''@;'; put 'put ''YW49ITApLElyPWhhKGZuPUNuLnIpLFZlWyIhcm93Il09Q24uciwoYmkuaGlkZGVufHxiaS5ocHR8fG51bGwhPWJpLmxldmVsKSYmKGJpLmhwdCYmKGJpLmhweD1tZihiaS5ocHQpKSx3MFtiaS5yXT1iaSk7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDc6''@;'; put 'put ''Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6c3dpdGNoKEx0PXt0OmJpWzJdfSxiaVsyXSl7Y2FzZSJuIjpMdC52PWJpWzFdO2JyZWFrO2Nhc2UicyI6THQudj0oVm49TWRbYmlbMV1dKS50LFZlLmNl''@;'; put 'put ''bGxTdHlsZXMmJihMdC5SPWZ1bmN0aW9uIFFSKEgscmUpe2lmKEguUilyZXR1cm4gSC5SO2lmKHJlJiZyZS5Gb250cyYmKDEhPUguci5sZW5ndGh8fDAhPUguclswXS5pY2gpKXtILlI9W107dmFyIFg9MCx3ZT1ILnJbWF0seGU9SC5yW1grMV07Zm9yKHdlLmljaD4wJiZILlIucHVzaCh7dDoi''@;'; put 'put ''cyIsdjpILnQuc2xpY2UoMCx3ZS5pY2gpfSk7WDxILnIubGVuZ3RoLTE7KytYKUguUi5wdXNoKHt0OiJzIix2OkgudC5zbGljZSgod2U9SC5yW1hdKS5pY2gsKHhlPUgucltYKzFdKS5pY2gpLHM6cmUuRm9udHNbd2UuaWZudF19KTtyZXR1cm4gSC5SLnB1c2goe3Q6InMiLHY6SC50LnNsaWNl''@;'; put 'put ''KCh4ZXx8d2UpLmljaCksczpyZS5Gb250c1soeGV8fHdlKS5pZm50XX0pLEguUn19KFZuLFplKSk7YnJlYWs7Y2FzZSJiIjpMdC52PSEhYmlbMV07YnJlYWs7Y2FzZSJlIjpMdC52PWJpWzFdLCExIT09VmUuY2VsbFRleHQmJihMdC53PU5mW0x0LnZdKTticmVhaztjYXNlInN0ciI6THQudD0i''@;'; put 'put ''cyIsTHQudj1iaVsxXX1pZigoenQ9WmUuQ2VsbFhmW2JpWzBdLmlTdHlsZVJlZl0pJiZ6NChMdCx6dC5udW1GbXRJZCx6dC5maWxsSWQsenQuZm9udElkLHp0LmJvcmRlcklkLFZlLDAsWmUpLFZlLmNlbGxTdHlsZXMmJkx0LnMmJnp0LmFsaWdubWVudCYmKEx0LnMuYWxpZ25tZW50PWxuKHp0''@;'; put 'put ''LmFsaWdubWVudCkpLEluPS0xPT1iaVswXS5jP0luKzE6YmlbMF0uYyxWZS5kZW5zZT8oVWVbZm5dfHwoVWVbZm5dPVtdKSxVZVtmbl1bSW5dPUx0KTpVZVtMbChJbikrSXJdPUx0LFZlLmNlbGxGb3JtdWxhKXtmb3IoTXI9ITEsb2k9MDtvaTxXci5sZW5ndGg7KytvaSl7dmFyIGNpPVdyW29p''@;'; put 'put ''XTtDbi5yPj1jaVswXS5zLnImJkNuLnI8PWNpWzBdLmUuciYmSW4+PWNpWzBdLnMuYyYmSW48PWNpWzBdLmUuYyYmKEx0LkY9QWEoY2lbMF0pLE1yPSEwKX0hTXImJmJpLmxlbmd0aD4zJiYoTHQuZj1iaVszXSl9aWYoSXQucy5yPkNuLnImJihJdC5zLnI9Q24uciksSXQucy5jPkluJiYoSXQu''@;'; put 'put ''cy5jPUluKSxJdC5lLnI8Q24uciYmKEl0LmUucj1Dbi5yKSxJdC5lLmM8SW4mJihJdC5lLmM9SW4pLFZlLmNlbGxEYXRlcyYmenQmJiJuIj09THQudCYmRi5pc19kYXRlKEYuX3RhYmxlW3p0Lm51bUZtdElkXSkpe3ZhciBIcj1GLnBhcnNlX2RhdGVfY29kZShMdC52KTtIciYmKEx0LnQ9ImQi''@;'; put 'put ''LEx0LnY9bmV3IERhdGUoSHIueSxIci5tLTEsSHIuZCxIci5ILEhyLk0sSHIuUyxIci51KSl9YnJlYWs7Y2FzZSAxOmNhc2UgMTI6aWYoIVZlLnNoZWV0U3R1YnN8fFF0KWJyZWFrO0x0PXt0OiJ6Iix2OnZvaWQgMH0sSW49LTE9PWJpWzBdLmM/SW4rMTpiaVswXS5jLCh6dD1aZS5DZWxsWGZb''@;'; put 'put ''YmlbMF0uaVN0eWxlUmVmXSkmJno0KEx0LHp0Lm51bUZtdElkLHp0LmZpbGxJZCx6dC5mb250SWQsenQuYm9yZGVySWQsVmUsMCxaZSksVmUuY2VsbFN0eWxlcyYmTHQucyYmenQuYWxpZ25tZW50JiYoTHQucy5hbGlnbm1lbnQ9bG4oenQuYWxpZ25tZW50KSksVmUuZGVuc2U/KFVlW2ZuXXx8''@;'; put 'put ''KFVlW2ZuXT1bXSksVWVbZm5dW0luXT1MdCk6VWVbTGwoSW4pK0lyXT1MdCxJdC5zLnI+Q24uciYmKEl0LnMucj1Dbi5yKSxJdC5zLmM+SW4mJihJdC5zLmM9SW4pLEl0LmUucjxDbi5yJiYoSXQuZS5yPUNuLnIpLEl0LmUuYzxJbiYmKEl0LmUuYz1Jbik7YnJlYWs7Y2FzZSAxNzY6eXIucHVz''@;'; put 'put ''aChiaSk7YnJlYWs7Y2FzZSA0OTQ6dmFyIE1pPXdlWyIhaWQiXVtiaS5yZWxJZF07Zm9yKE1pPyhiaS5UYXJnZXQ9TWkuVGFyZ2V0LGJpLmxvYyYmKGJpLlRhcmdldCs9IiMiK2JpLmxvYyksYmkuUmVsPU1pKToiIj09YmkucmVsSWQmJihiaS5UYXJnZXQ9IiMiK2JpLmxvYyksZm49YmkucmZ4''@;'; put 'put ''LnMucjtmbjw9YmkucmZ4LmUucjsrK2ZuKWZvcihJbj1iaS5yZngucy5jO0luPD1iaS5yZnguZS5jOysrSW4pVmUuZGVuc2U/KFVlW2ZuXXx8KFVlW2ZuXT1bXSksVWVbZm5dW0luXXx8KFVlW2ZuXVtJbl09e3Q6InoiLHY6dm9pZCAwfSksVWVbZm5dW0luXS5sPWJpKTooUm49UTAoe2M6SW4s''@;'; put 'put ''cjpmbn0pLFVlW1JuXXx8KFVlW1JuXT17dDoieiIsdjp2b2lkIDB9KSxVZVtSbl0ubD1iaSk7YnJlYWs7Y2FzZSA0MjY6aWYoIVZlLmNlbGxGb3JtdWxhKWJyZWFrO1dyLnB1c2goYmkpLChpaT1WZS5kZW5zZT9VZVtmbl1bSW5dOlVlW0xsKEluKStJcl0pLmY9ZnUoYmlbMV0sSXQse3I6Q24u''@;'; put 'put ''cixjOklufSxuaSxWZSksaWkuRj1BYShiaVswXSk7YnJlYWs7Y2FzZSA0Mjc6aWYoIVZlLmNlbGxGb3JtdWxhKWJyZWFrO2FpW1EwKGJpWzBdLnMpXT1iaVsxXSwoaWk9VmUuZGVuc2U/VWVbZm5dW0luXTpVZVtMbChJbikrSXJdKS5mPWZ1KGJpWzFdLEl0LHtyOkNuLnIsYzpJbn0sbmksVmUp''@;'; put 'put ''O2JyZWFrO2Nhc2UgNjA6aWYoIVZlLmNlbGxTdHlsZXMpYnJlYWs7Zm9yKDtiaS5lPj1iaS5zOyloaVtiaS5lLS1dPXt3aWR0aDpiaS53LzI1NixoaWRkZW46ISEoMSZiaS5mbGFncyksbGV2ZWw6YmkubGV2ZWx9LEowfHwoSjA9ITApLGJjKGhpW2JpLmUrMV0pO2JyZWFrO2Nhc2UgMTYxOlVl''@;'; put 'put ''WyIhYXV0b2ZpbHRlciJdPXtyZWY6QWEoYmkpfTticmVhaztjYXNlIDQ3NjpVZVsiIW1hcmdpbnMiXT1iaTticmVhaztjYXNlIDE0Nzp4ZS5TaGVldHNbWF18fCh4ZS5TaGVldHNbWF09e30pLGJpLm5hbWUmJih4ZS5TaGVldHNbWF0uQ29kZU5hbWU9YmkubmFtZSksKGJpLmFib3ZlfHxiaS5s''@;'; put 'put ''ZWZ0KSYmKFVlWyIhb3V0bGluZSJdPXthYm92ZTpiaS5hYm92ZSxsZWZ0OmJpLmxlZnR9KTticmVhaztjYXNlIDEzNzp4ZS5WaWV3c3x8KHhlLlZpZXdzPVt7fV0pLHhlLlZpZXdzWzBdfHwoeGUuVmlld3NbMF09e30pLGJpLlJUTCYmKHhlLlZpZXdzWzBdLlJUTD0hMCksYmkuZ3JpZHx8KHhl''@;'; put 'put ''LlZpZXdzWzBdLmdyaWQ9ITEsVWVbIiFncmlkbGluZXMiXT0hMSk7YnJlYWs7Y2FzZSA0ODU6VWVbIiFzaGVldEZvcm1hdCJdPWJpO2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMDUzOiFmdW5jdGlvbiBJQShILHJlLFgsd2Upe2lmKHJlKXt2YXIgeGU9e3JlZjpyZS5zcXJmeCx0OnJlLnR9O3JlLm9w''@;'; put 'put ''JiYoeGUub3A9cmUub3ApO3ZhciBGZT0iIixaZT0iIixWZT1yZS5zcXJmeD8ic3RyaW5nIj09dHlwZW9mIHJlLnNxcmZ4P2VhKHJlLnNxcmZ4LnNwbGl0KCIsIilbMF0pOnJlLnNxcmZ4Om51bGw7aWYocmUuZjEmJihGZT1mdShyZS5mMSxWZSxudWxsLFgsd2UsITApKSxyZS5mMiYmKFplPWZ1''@;'; put 'put ''KHJlLmYyLFZlLG51bGwsWCx3ZSwhMCkpLHJlLm9wJiZbIklOIiwiT1QiXS5pbmRleE9mKHJlLm9wKT49LTEpeGUubWluPUZlLHhlLm1heD1aZTtlbHNlIGlmKHJlLm9wKXhlLnY9RmU7ZWxzZSB0cnl7c3dpdGNoKHJlLnQpe2Nhc2UiTGlzdCI6aWYoIlB0Z1N0ciI9PT1yZS5mMVswXVswXVsw''@;'; put 'put ''XSYmMT09cmUuZjFbMF0ubGVuZ3RoKXt4ZS5sPXJlLmYxWzBdWzBdWzFdLnNwbGl0KCIsIik7YnJlYWt9Y2FzZSJDdXN0b20iOnhlLmY9RmV9fWNhdGNoKFVlKXt9SFsiIXZhbGlkYXRpb25zIl18fChIWyIhdmFsaWRhdGlvbnMiXT1bXSksSFsiIXZhbGlkYXRpb25zIl0ucHVzaCh4ZSl9fShV''@;'; put 'put ''ZSxiaSxuaSxWZSk7YnJlYWs7Y2FzZSAxNTE6VWVbIiFmcmVlemUiXT1iaVswXTticmVhaztjYXNlIDE1MjpVZVsiIXNlbCJdPWJpO2JyZWFrO2Nhc2UgMTc1OmNhc2UgNjQ0OmNhc2UgNjI1OmNhc2UgNTYyOmNhc2UgMzk2OmNhc2UgMTExMjpjYXNlIDExNDY6Y2FzZSA0NzE6Y2FzZSAxMDUw''@;'; put 'put ''OmNhc2UgNjQ5OmNhc2UgMTEwNTpjYXNlIDQ5OmNhc2UgNTg5OmNhc2UgNjA3OmNhc2UgNTY0OmNhc2UgMTA1NTpjYXNlIDE2ODpjYXNlIDE3NDpjYXNlIDExODA6Y2FzZSA0OTk6Y2FzZSA1MDc6Y2FzZSA1NTA6Y2FzZSAxNzE6Y2FzZSAxNjc6Y2FzZSAxMTc3OmNhc2UgMTY5OmNhc2UgMTE4''@;'; put 'put ''MTpjYXNlIDU1MTpjYXNlIDU1MjpjYXNlIDY2MTpjYXNlIDYzOTpjYXNlIDQ3ODpjYXNlIDUzNzpjYXNlIDQ3NzpjYXNlIDUzNjpjYXNlIDExMDM6Y2FzZSA2ODA6Y2FzZSAxMTA0OmNhc2UgMTAyNDpjYXNlIDY2MzpjYXNlIDUzNTpjYXNlIDY3ODpjYXNlIDUwNDpjYXNlIDEwNDM6Y2FzZSA0''@;'; put 'put ''Mjg6Y2FzZSAxNzA6Y2FzZSAzMDcyOmNhc2UgNTA6Y2FzZSAyMDcwOmNhc2UgMTA0NTpicmVhaztjYXNlIDM1OlF0PSEwO2JyZWFrO2Nhc2UgMzY6UXQ9ITE7YnJlYWs7Y2FzZSAzNzpQdC5wdXNoKHpyKSxRdD0hMDticmVhaztjYXNlIDM4OlB0LnBvcCgpLFF0PSExO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''aWYoISgoenJ8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApJiYhKCh6cnx8IiIpLmluZGV4T2YoIkVuZCIpPjApJiYoIVF0fHxWZS5XVEYmJiJCcnRBQ0JlZ2luIiE9UHRbUHQubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrRGkrIiAiK3pyKX19LFZlKSxk''@;'; put 'put ''ZWxldGUgVmUuc3VwYm9va3MsZGVsZXRlIFZlWyIhcm93Il0sIVVlWyIhcmVmIl0mJihJdC5zLnI8MmU2fHxTdCYmKFN0LmUucj4wfHxTdC5lLmM+MHx8U3Qucy5yPjB8fFN0LnMuYz4wKSkmJihVZVsiIXJlZiJdPUFhKFN0fHxJdCkpLFZlLnNoZWV0Um93cyYmVWVbIiFyZWYiXSl7dmFyIGlv''@;'; put 'put ''PWVhKFVlWyIhcmVmIl0pO1ZlLnNoZWV0Um93czw9K2lvLmUuciYmKGlvLmUucj1WZS5zaGVldFJvd3MtMSxpby5lLnI+SXQuZS5yJiYoaW8uZS5yPUl0LmUuciksaW8uZS5yPGlvLnMuciYmKGlvLnMucj1pby5lLnIpLGlvLmUuYz5JdC5lLmMmJihpby5lLmM9SXQuZS5jKSxpby5lLmM8aW8u''@;'; put 'put ''cy5jJiYoaW8ucy5jPWlvLmUuYyksVWVbIiFmdWxscmVmIl09VWVbIiFyZWYiXSxVZVsiIXJlZiJdPUFhKGlvKSl9cmV0dXJuIHlyLmxlbmd0aD4wJiYoVWVbIiFtZXJnZXMiXT15ciksaGkubGVuZ3RoPjAmJihVZVsiIWNvbHMiXT1oaSksdzAubGVuZ3RoPjAmJihVZVsiIXJvd3MiXT13MCks''@;'; put 'put ''VWV9KEgsd2UsWCx4ZSxGZSwwLFZlKTpmdW5jdGlvbiBsMihILHJlLFgsd2UseGUsRmUsWmUpe2lmKCFIKXJldHVybiBIO3dlfHwod2U9eyIhaWQiOnt9fSk7dmFyIFZlPXJlLmRlbnNlP1tdOnt9LFVlPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LFN0PSIiLEl0PSIiLFB0PUgubWF0''@;'; put 'put ''Y2goaVApO1B0PyhTdD1ILnNsaWNlKDAsUHQuaW5kZXgpLEl0PUguc2xpY2UoUHQuaW5kZXgrUHRbMF0ubGVuZ3RoKSk6U3Q9SXQ9SDt2YXIgUXQ9SXQubGFzdEluZGV4T2YoImV4dExzdCIpLENuPSgtMT09UXR8fEl0LnNsaWNlKFF0KSxTdC5tYXRjaChFXykpO0NuP1VtKENuWzBdLDAseGUs''@;'; put 'put ''WCk6KENuPVN0Lm1hdGNoKFdtKSkmJmZ1bmN0aW9uIEN4KEgscmUsWCx3ZSx4ZSxGZSxaZSl7VW0oSC5zbGljZSgwLEguaW5kZXhPZigiPiIpKSwwLHdlLHhlKTt2YXIgVmU9cmUubWF0Y2goTGgpO2lmKFZlKXt2YXIgU3Q9VjkocXQoVmVbMF0pLEZlLFplKTtYWyIhdGFiY29sb3IiXT1TdH1p''@;'; put 'put ''ZigoVmU9cmUubWF0Y2goSV8pKSYmcXQoVmVbMF0pLmZpdFRvUGFnZSYmKFhbIiFwcmludCJdfHwoWFsiIXByaW50Il09e30pLFhbIiFwcmludCJdLnByb3BzfHwoWFsiIXByaW50Il0ucHJvcHM9e30pLFhbIiFwcmludCJdLnByb3BzLmZpdHx8KFhbIiFwcmludCJdLnByb3BzLmZpdD17fSks''@;'; put 'put ''bnVsbD09WFsiIXByaW50Il0ucHJvcHMuZml0LmhlaWdodCYmKFhbIiFwcmludCJdLnByb3BzLmZpdC5oZWlnaHQ9MSksbnVsbD09WFsiIXByaW50Il0ucHJvcHMuZml0LndpZHRoJiYoWFsiIXByaW50Il0ucHJvcHMuZml0LndpZHRoPTEpKSxWZT1yZS5tYXRjaChwQSkpe1hbIiFvdXRsaW5l''@;'; put 'put ''Il09e307dmFyIFB0PXF0KFZlWzBdKTtQdC5zdW1tYXJ5QmVsb3cmJihYWyIhb3V0bGluZSJdLmFib3ZlPSFCaShQdC5zdW1tYXJ5QmVsb3cpKSxQdC5zdW1tYXJ5UmlnaHQmJihYWyIhb3V0bGluZSJdLmxlZnQ9IUJpKFB0LnN1bW1hcnlSaWdodCkpfX0oQ25bMF0sQ25bMV18fCIiLFZlLHhl''@;'; put 'put ''LFgsWmUsRmUpO3ZhciBMdD0oU3QubWF0Y2goLzwoPzpcdyo6KT9kaW1lbnNpb24vKXx8e2luZGV4Oi0xfSkuaW5kZXg7aWYoTHQ+MCl7dmFyIHp0PVN0LnNsaWNlKEx0LEx0KzUwKS5tYXRjaChvUCk7enQmJighcmV8fCFyZS5ub2RpbSkmJmZ1bmN0aW9uIGtfKEgscmUpe3ZhciBYPWVhKHJl''@;'; put 'put ''KTtYLnMucjw9WC5lLnImJlgucy5jPD1YLmUuYyYmWC5zLnI+PTAmJlgucy5jPj0wJiYoSFsiIXJlZiJdPUFhKFgpKX0oVmUsenRbMV0pfXZhciBmbj1TdC5tYXRjaChsUCk7Zm4mJmZuWzFdJiZmdW5jdGlvbiBnUChILHJlLFgsd2Upe1guVmlld3N8fChYLlZpZXdzPVt7fV0pO3ZhciB4ZT0w''@;'; put 'put ''O0gucmVwbGFjZShJeCxmdW5jdGlvbihGZSxaZSl7dmFyIFZlPXF0KEZlKTtpZihYLlZpZXdzW3dlXXx8KFguVmlld3Nbd2VdPXt9KSxCaShWZS5yaWdodFRvTGVmdCkmJihYLlZpZXdzW3dlXS5SVEw9ITApLFZlLnNob3dHcmlkTGluZXMmJihYLlZpZXdzW3dlXS5ncmlkPUJpKFZlLnNob3dH''@;'; put 'put ''cmlkTGluZXMpLG51bGw9PXJlWyIhZ3JpZGxpbmVzIl0mJihyZVsiIWdyaWRsaW5lcyJdPUJpKFZlLnNob3dHcmlkTGluZXMpKSksK1ZlLnpvb21TY2FsZSYmKFguVmlld3Nbd2VdLnpvb209K1ZlLnpvb21TY2FsZSksVmUudmlldyYmKFguVmlld3Nbd2VdLnZpZXc9VmUudmlldyksMT09Kyt4''@;'; put 'put ''ZSYmIi8+IiE9RmUuc2xpY2UoLTIpKXt2YXIgVWU9SC5zbGljZShaZStGZS5sZW5ndGgpLFN0PVVlLm1hdGNoKC88XC8oPzpcdzopP3NoZWV0Vmlldyg/OltePmEtel1bXj5dKik/XC8/Pi8pO2lmKCFTdClyZXR1cm4iIjt2YXIgSXQ9KFVlPVVlLnNsaWNlKDAsU3QuaW5kZXgpKS5tYXRjaCgv''@;'; put 'put ''PCg/Olx3Oik/cGFuZSg/OltePmEtel1bXj5dKik/XC8/Pi8pO2lmKEl0KXt2YXIgUHQ9cXQoSXRbMF0pOyJmcm96ZW4iPT1QdC5zdGF0ZT9yZVsiIWZyZWV6ZSJdPUxsKCtQdC54U3BsaXR8fDApK2hhKCtQdC55U3BsaXR8fDApOlB0LnRvcExlZnRDZWxsJiYocmVbIiFmcmVlemUiXT1QdC50''@;'; put 'put ''b3BMZWZ0Q2VsbCl9dmFyIFF0PVVlLm1hdGNoKC88KD86XHc6KT9zZWxlY3Rpb24oPzpbXj5hLXpdW14+XSopP1wvPz4vKTtpZihRdCl7dmFyIGFuPXF0KFF0WzBdKTtpZihhbi5hY3RpdmVDZWxsJiYocmVbIiFzZWwiXT17Y2VsbDphbi5hY3RpdmVDZWxsfSksYW4uc3FyZWYpe3ZhciBDbj1h''@;'; put 'put ''bi5zcXJlZi5yZXBsYWNlKC9ccy4qJC8sIiIpO3JlWyIhc2VsIl18fChyZVsiIXNlbCJdPXtjZWxsOlEwKG5zKENuKS5zKX0pLHJlWyIhc2VsIl0ucmFuZ2U9YW4uc3FyZWZ9fX1yZXR1cm4iIn0pfShmblsxXSxWZSx4ZSxYKTt2YXIgSW49U3QubWF0Y2godzYpLFJuPVtdO2lmKHJlLmNlbGxT''@;'; put 'put ''dHlsZXMpe3ZhciBWbj1TdC5tYXRjaCh3eCk7Vm4mJmZ1bmN0aW9uIF9BKEgscmUsWCl7Zm9yKHZhciB3ZT0hMSx4ZT0wO3hlIT1yZS5sZW5ndGg7Kyt4ZSl7dmFyIEZlPXF0KHJlW3hlXSwhMCk7RmUuaGlkZGVuJiYoRmUuaGlkZGVuPUJpKEZlLmhpZGRlbikpO3ZhciBaZT1wYXJzZUludChG''@;'; put 'put ''ZS5taW4sMTApLTEsVmU9cGFyc2VJbnQoRmUubWF4LDEwKS0xO2ZvcihGZS5vdXRsaW5lTGV2ZWwmJihGZS5sZXZlbD0rRmUub3V0bGluZUxldmVsfHwwKSxkZWxldGUgRmUubWluLGRlbGV0ZSBGZS5tYXgsRmUud2lkdGg9K0ZlLndpZHRoLCF3ZSYmRmUud2lkdGgmJih3ZT0hMCksYmMoRmUp''@;'; put 'put ''LEZlLnN0eWxlJiYoRmUucz1TQShGZS5zdHlsZSxYKSk7WmU8PVZlOylIW1plKytdPWxuKEZlKX19KFJuLFZuLFplKX1pZihQdCYmQVAoUHRbMV0sWCxWZSxyZSxVZSxGZSxaZSkscmUuY2FsbGJhY2spcmV0dXJuIFZlO3ZhciBJcj1JdC5tYXRjaChrYyk7SXImJihWZVsiIXByb3RlY3QiXT1m''@;'; put 'put ''dW5jdGlvbiBQXyhIKXt2YXIgcmU9cXQoSCwhMCwhMCksWD17fTtpZihCaShyZS5zaGVldCkpcmV0dXJuIGNQLmZvckVhY2goZnVuY3Rpb24od2Upe1hbd2VdPW51bGwhPXJlW3dlXSYmQmkocmVbd2VdKX0pLHlBLmZvckVhY2goZnVuY3Rpb24od2Upe1hbd2VdPW51bGw9PXJlW3dlXXx8Qmko''@;'; put 'put ''cmVbd2VdKX0pLHJlLmFsZ29yaXRobU5hbWUmJihYLmVuY3J5cHRpb249e2FsZ286cmUuYWxnb3JpdGhtTmFtZSxoYXNoOnJlLmhhc2hWYWx1ZSxzYWx0OnJlLnNhbHRWYWx1ZSxzcGluOityZS5zcGluQ291bnR8fDFlNX0pLFh9KElyWzBdKSk7dmFyIGlpPUl0Lm1hdGNoKEdtKTtpaSYmKFZl''@;'; put 'put ''WyIhYXV0b2ZpbHRlciJdPWZ1bmN0aW9uIFFtKEgpe3JldHVybntyZWY6KEgubWF0Y2goL3JlZj0iKFteIl0qKSIvKXx8W10pWzFdfX0oaWlbMF0pKTt2YXIgeXI9W10sb2k9SXQubWF0Y2goU18pO2lmKG9pKWZvcihMdD0wO0x0IT1vaS5sZW5ndGg7KytMdCl5cltMdF09ZWEob2lbTHRdLnNs''@;'; put 'put ''aWNlKG9pW0x0XS5pbmRleE9mKCciJykrMSkpO3ZhciBNcj0oLTE9PVF0P0l0Okl0LnNsaWNlKDAsUXQpKS5tYXRjaChmQSk7TXImJihWZVsiIWNvbmRmbXQiXT1bXS5jb25jYXQuYXBwbHkoW10sTXIubWFwKGZ1bmN0aW9uKHpyKXtyZXR1cm4gUm8oenIscmUsRmUsWmUpfSkpKSxRdD4tMSYm''@;'; put 'put ''KE1yPUl0LnNsaWNlKFF0KS5tYXRjaChmQSkpJiYoVmVbIiFjb25kZm10Il18fChWZVsiIWNvbmRmbXQiXT1bXSksVmVbIiFjb25kZm10Il09VmVbIiFjb25kZm10Il0uY29uY2F0LmFwcGx5KFZlWyIhY29uZGZtdCJdLE1yLm1hcChmdW5jdGlvbih6cil7cmV0dXJuIFJvKHpyLHJlLEZlLFpl''@;'; put 'put ''LCEwKX0pKSk7dmFyIFdyPSgtMT09UXQ/SXQ6SXQuc2xpY2UoMCxRdCkpLm1hdGNoKHhfKTtXciYmKFZlWyIhdmFsaWRhdGlvbnMiXT1HNChXclswXSxyZSkpLFF0Pi0xJiYoV3I9SXQuc2xpY2UoUXQpLm1hdGNoKHhfKSkmJihWZVsiIXZhbGlkYXRpb25zIl18fChWZVsiIXZhbGlkYXRpb25z''@;'; put 'put ''Il09W10pLFZlWyIhdmFsaWRhdGlvbnMiXT1WZVsiIXZhbGlkYXRpb25zIl0uY29uY2F0KEc0KFdyWzBdLHJlLCEwKSkpO3ZhciBhaT1JdC5tYXRjaChORyk7YWkmJmZ1bmN0aW9uIHdBKEgscmUsWCl7Zm9yKHZhciB3ZT1BcnJheS5pc0FycmF5KEgpLHhlPTA7eGUhPXJlLmxlbmd0aDsrK3hl''@;'; put 'put ''KXt2YXIgRmU9cXQoajAocmVbeGVdKSwhMCk7aWYoIUZlLnJlZilyZXR1cm47dmFyIFplPSgoWHx8e30pWyIhaWQiXXx8W10pW0ZlLmlkXTtaZT8oRmUuVGFyZ2V0PVplLlRhcmdldCxGZS5sb2NhdGlvbiYmKEZlLlRhcmdldCs9IiMiK2dyKEZlLmxvY2F0aW9uKSkpOihGZS5UYXJnZXQ9IiMi''@;'; put 'put ''K2dyKEZlLmxvY2F0aW9uKSxaZT17VGFyZ2V0OkZlLlRhcmdldCxUYXJnZXRNb2RlOiJJbnRlcm5hbCJ9KSxGZS5SZWw9WmUsRmUudG9vbHRpcCYmKEZlLlRvb2x0aXA9RmUudG9vbHRpcCxkZWxldGUgRmUudG9vbHRpcCk7Zm9yKHZhciBWZT1lYShGZS5yZWYpLFVlPVZlLnMucjtVZTw9VmUu''@;'; put 'put ''ZS5yOysrVWUpZm9yKHZhciBTdD1WZS5zLmM7U3Q8PVZlLmUuYzsrK1N0KXt2YXIgSXQ9UTAoe2M6U3QscjpVZX0pO3dlPyhIW1VlXXx8KEhbVWVdPVtdKSxIW1VlXVtTdF18fChIW1VlXVtTdF09e3Q6InoiLHY6dm9pZCAwfSksSFtVZV1bU3RdLmw9RmUpOihIW0l0XXx8KEhbSXRdPXt0OiJ6''@;'; put 'put ''Iix2OnZvaWQgMH0pLEhbSXRdLmw9RmUpfX19KFZlLGFpLHdlKTt2YXIgbmk9SXQubWF0Y2goX3gpO25pJiZmdW5jdGlvbiBTeChILHJlKXt2YXIgWD1xdChILCExLCEwKTtyZVsiIXByaW50Il18fChyZVsiIXByaW50Il09e30pLHJlWyIhcHJpbnQiXS5wcm9wc3x8KHJlWyIhcHJpbnQiXS5w''@;'; put 'put ''cm9wcz17fSk7dmFyIHdlPXJlWyIhcHJpbnQiXS5wcm9wcztYLmdyaWRMaW5lcyYmKHdlLmdyaWRsaW5lcz1CaShYLmdyaWRMaW5lcykpLG51bGwhPVguaG9yaXpvbnRhbENlbnRlcmVkJiYod2UuY2VudGVyWD1CaShYLmhvcml6b250YWxDZW50ZXJlZCkpLG51bGwhPVgudmVydGljYWxDZW50''@;'; put 'put ''ZXJlZCYmKHdlLmNlbnRlclk9QmkoWC52ZXJ0aWNhbENlbnRlcmVkKSl9KG5pWzBdLFZlKTt2YXIgZnI9SXQubWF0Y2goTV8pO2ZyJiYoKFZlWyIhcHJpbnQiXXx8KFZlWyIhcHJpbnQiXT17fSkpLm1hcmdpbnM9VmVbIiFtYXJnaW5zIl09YkEocXQoZnJbMF0pKSk7dmFyIGhpPUl0Lm1hdGNo''@;'; put 'put ''KHNQKTtoaSYmZnVuY3Rpb24gT18oSCxyZSl7dmFyIFg9cXQoSCwhMSwhMCk7ZGVsZXRlIFguaWQsZGVsZXRlIFhbMF0scmVbIiFwcmludCJdfHwocmVbIiFwcmludCJdPXt9KSxyZVsiIXByaW50Il0ucHJvcHN8fChyZVsiIXByaW50Il0ucHJvcHM9e30pO3ZhciB3ZT1yZVsiIXByaW50Il0u''@;'; put 'put ''cHJvcHM7WC5vcmllbnRhdGlvbiYmKHdlLm9yaWVudGF0aW9uPVgub3JpZW50YXRpb24pLFguc2NhbGUmJih3ZS5zY2FsZT0rWC5zY2FsZSksK1guZml0VG9IZWlnaHQ+PTAmJigod2UuZml0fHwod2UuZml0PXt9KSkuaGVpZ2h0PStYLmZpdFRvSGVpZ2h0KSwrWC5maXRUb1dpZHRoPj0wJiYo''@;'; put 'put ''KHdlLmZpdHx8KHdlLmZpdD17fSkpLndpZHRoPStYLmZpdFRvV2lkdGgpLFgucGFwZXJIZWlnaHQmJlgucGFwZXJXaWR0aD93ZS5wYXBlcj17d2lkdGg6WC5wYXBlcldpZHRoLGhlaWdodDpYLnBhcGVySGVpZ2h0fTpYLnBhcGVyU2l6ZSYmKHdlLnBhcGVyPUNCW3dlLnBhcGVyPStYLnBhcGVy''@;'; put 'put ''U2l6ZV18fHdlLnBhcGVyKSxYLmhvcml6b250YWxEcGk/d2UuZHBpPStYLmhvcml6b250YWxEcGk6WC52ZXJ0aWNhbERwaSYmKHdlLmRwaT0rWC52ZXJ0aWNhbERwaSksImF1dG9tYXRpYyIhPShYLmZpcnN0UGFnZU51bWJlcnx8ImF1dG9tYXRpYyIpJiYod2UuZmlyc3Q9K1guZmlyc3RQYWdl''@;'; put 'put ''TnVtYmVyKSxCaShYLmJsYWNrQW5kV2hpdGUpJiYod2UuYnc9ITApLEJpKFguZHJhZnQpJiYod2UuZHJhZnQ9ITApLCJvdmVyVGhlbkRvd24iPT1YLnBhZ2VPcmRlciYmKHdlLm9yZGVyPSJvdmVyIiksRF9bWC5jZWxsQ29tbWVudHNdJiYod2UuY29tbWVudHM9RF9bWC5jZWxsQ29tbWVudHNd''@;'; put 'put ''KSxMX1tYLmVycm9yc10mJih3ZS5lcnJvcnM9TF9bWC5lcnJvcnNdKX0oaGlbMF0sVmUpO3ZhciB3MD1JdC5tYXRjaChZbSk7dzAmJmZ1bmN0aW9uIGI2KEgscmUpe2lmKHJlWyIhcHJpbnQiXXx8KHJlWyIhcHJpbnQiXT17fSksSFsxXSl7dmFyIFg9IiIsd2U9MDtIWzFdLnJlcGxhY2UoR3Qs''@;'; put 'put ''ZnVuY3Rpb24oeGUsRmUpe2lmKCIvIiE9eGUuY2hhckF0KDEpKVg9eGUuc2xpY2UoMSwtMSksd2U9RmUreGUubGVuZ3RoO2Vsc2UgaWYoWCl7dmFyIFplPVgubWF0Y2goL0hlYWRlci8pPyJoZWFkZXIiOiJmb290ZXIiLFZlPVgucmVwbGFjZSgvSGVhZGVyfEZvb3Rlci8sIiIpO1g9IiIscmVb''@;'; put 'put ''IiFwcmludCJdW1plXXx8KHJlWyIhcHJpbnQiXVtaZV09e30pLHJlWyIhcHJpbnQiXVtaZV1bVmVdPWdyKGowKEhbMV0uc2xpY2Uod2UsRmUpKSl9fSl9fSh3MCxWZSk7dmFyIEowPUl0Lm1hdGNoKHVQKTtKMCYmKChWZVsiIXByaW50Il18fChWZVsiIXByaW50Il09e30pKS5yb3dCcmVha3M9''@;'; put 'put ''VmVbIiFyb3dCcmVha3MiXT1mdW5jdGlvbiBSXyhIKXt2YXIgcmU9W107cmV0dXJuKEgubWF0Y2goSzgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihYKXt2YXIgd2U9cXQoWCk7cmUucHVzaCh7Ujord2UuaWR9KX0pLHJlfShKMFswXSkpO3ZhciBpbz1JdC5tYXRjaChUXyk7aW8mJigoVmVbIiFw''@;'; put 'put ''cmludCJdfHwoVmVbIiFwcmludCJdPXt9KSkuY29sQnJlYWtzPVZlWyIhY29sQnJlYWtzIl09ZnVuY3Rpb24gQl8oSCl7dmFyIHJlPVtdO3JldHVybihILm1hdGNoKEs4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIHdlPXF0KFgpO3JlLnB1c2goe0M6K3dlLmlkfSl9KSxyZX0oaW9b''@;'; put 'put ''MF0pKTt2YXIgYjA9W107aWYoKGIwPUl0Lm1hdGNoKC9kcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKFZlWyIhcmVsIl09YjBbMV0pLChiMD1JdC5tYXRjaCgvbGVnYWN5RHJhd2luZyByOmlkPSIoLio/KSIvKSkmJihWZVsiIWxlZ3JlbCJdPWIwWzFdKSwoYjA9SXQubWF0Y2goYVApKSYmKFZl''@;'; put 'put ''WyIhY3RybGlkIl09YjAubWFwKGZ1bmN0aW9uKHpyKXtyZXR1cm4gcXQoenIpfSkpLChiMD1JdC5tYXRjaChieCkpJiZmdW5jdGlvbiBoQShILHJlKXtIWyIhdGFibGVyZWZzIl18fChIWyIhdGFibGVyZWZzIl09W10pLChyZS5tYXRjaChfMSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFgpe0hb''@;'; put 'put ''IiF0YWJsZXJlZnMiXS5wdXNoKHF0KFgpLmlkKX0pfShWZSxiMFsxXSkscmUmJnJlLm5vZGltJiYoVWUucy5jPVVlLnMucj0wKSwhVmVbIiFyZWYiXSYmVWUuZS5jPj1VZS5zLmMmJlVlLmUucj49VWUucy5yJiYoVmVbIiFyZWYiXT1BYShVZSkpLHJlLnNoZWV0Um93cz4wJiZWZVsiIXJlZiJd''@;'; put 'put ''KXt2YXIgYmk9ZWEoVmVbIiFyZWYiXSk7cmUuc2hlZXRSb3dzPD0rYmkuZS5yJiYoYmkuZS5yPXJlLnNoZWV0Um93cy0xLGJpLmUucj5VZS5lLnImJihiaS5lLnI9VWUuZS5yKSxiaS5lLnI8Ymkucy5yJiYoYmkucy5yPWJpLmUuciksYmkuZS5jPlVlLmUuYyYmKGJpLmUuYz1VZS5lLmMpLGJp''@;'; put 'put ''LmUuYzxiaS5zLmMmJihiaS5zLmM9YmkuZS5jKSxWZVsiIWZ1bGxyZWYiXT1WZVsiIXJlZiJdLFZlWyIhcmVmIl09QWEoYmkpKX1yZXR1cm4gSW4mJihWZVsiIXNoZWV0Rm9ybWF0Il09ZnVuY3Rpb24gcWYoSCl7dmFyIHJlPXt9LFg9e30sd2U9ITEseGU9e30sRmU9ITE7cmV0dXJuIEguZGVm''@;'; put 'put ''YXVsdFJvd0hlaWdodCYmKHdlPSEwLFguaHB0PXBhcnNlRmxvYXQoSC5kZWZhdWx0Um93SGVpZ2h0KSksSC56ZXJvSGVpZ2h0JiYod2U9ITAsWC5oaWRkZW49QmkoSC56ZXJvSGVpZ2h0KSksSC5iYXNlQ29sV2lkdGg/KEZlPSEwLHhlLndjaD1wYXJzZUZsb2F0KEguYmFzZUNvbFdpZHRoKSk6''@;'; put 'put ''SC5kZWZhdWx0Q29sV2lkdGgmJihGZT0hMCx4ZS53Y2g9cGFyc2VGbG9hdChILmRlZmF1bHRDb2xXaWR0aCktNS90MSksSC5vdXRsaW5lTGV2ZWxDb2wmJihyZS5jb2xvdXRsaW5lPXBhcnNlSW50KEgub3V0bGluZUxldmVsQ29sKSksSC5vdXRsaW5lTGV2ZWxSb3cmJihyZS5yb3dvdXRsaW5l''@;'; put 'put ''PXBhcnNlSW50KEgub3V0bGluZUxldmVsUm93KSksSC50aGlja0JvdHRvbSYmKHJlLmJvdHRoaWNrPUJpKEgudGhpY2tCb3R0b20pKSxILnRoaWNrVG9wJiYocmUudG9wdGhpY2s9QmkoSC50aGlja1RvcCkpLEguZHlEZXNjZW50JiYocmUuZHlEZXNjZW50PXBhcnNlRmxvYXQoSC5keURlc2Nl''@;'; put 'put ''bnQpKSx3ZSYmKFJiKFgpLHJlLnJvdz1YKSxGZSYmKGJjKHhlKSxyZS5jb2w9eGUpLHJlfShxdChJblswXSkpKSxSbi5sZW5ndGg+MCYmKFZlWyIhY29scyJdPVJuKSx5ci5sZW5ndGg+MCYmKFZlWyIhbWVyZ2VzIl09eXIpLHdlWyIhaWQiXVtWZVsiIXJlbCJdXSYmKFZlWyIhZHJhd2VsIl09''@;'; put 'put ''d2VbIiFpZCJdW1ZlWyIhcmVsIl1dKSx3ZVsiIWlkIl1bVmVbIiFsZWdyZWwiXV0mJihWZVsiIWxlZ2RyYXdlbCJdPXdlWyIhaWQiXVtWZVsiIWxlZ3JlbCJdXSksKFZlWyIhY3RybGlkIl18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHpyKXt6ci5yZWw9d2VbIiFpZCJdW3pyLmlkXX0pLG51bGw9''@;'; put 'put ''PVZlWyIhZ3JpZGxpbmVzIl0mJihWZVsiIWdyaWRsaW5lcyJdPSEwKSxWZX0oSCx3ZSxYLHhlLEZlLFplLFZlKX0oUXQscmUseGUsVWUsRmVbd2VdLFN0LEl0LFB0KTticmVhaztjYXNlImNoYXJ0Ijphbj1mdW5jdGlvbiBpVChILHJlLFgsd2UseGUsRmUsWmUsVmUpe3JldHVybiIuYmluIj09''@;'; put 'put ''PXJlLnNsaWNlKC00KT9mdW5jdGlvbiBuaChILHJlLFgsd2UseGUpe2lmKCFIKXJldHVybiBIO3dlfHwod2U9eyIhaWQiOnt9fSk7dmFyIEZlPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwiOm51bGwsIiFyZWwiOiIifSxaZT1bXSxWZT0hMTtyZXR1cm4gbTEoSCxmdW5jdGlvbihTdCxJdCxQ''@;'; put 'put ''dCl7c3dpdGNoKFB0KXtjYXNlIDU1MDpGZVsiIXJlbCJdPVN0O2JyZWFrO2Nhc2UgNjUxOnhlLlNoZWV0c1tYXXx8KHhlLlNoZWV0c1tYXT17fSksU3QubmFtZSYmKHhlLlNoZWV0c1tYXS5Db2RlTmFtZT1TdC5uYW1lKTticmVhaztjYXNlIDU2MjpjYXNlIDY1MjpjYXNlIDY2OTpjYXNlIDY3''@;'; put 'put ''OTpjYXNlIDU1MTpjYXNlIDU1MjpjYXNlIDQ3NjpjYXNlIDMwNzI6YnJlYWs7Y2FzZSAzNTpWZT0hMDticmVhaztjYXNlIDM2OlZlPSExO2JyZWFrO2Nhc2UgMzc6WmUucHVzaChJdCk7YnJlYWs7Y2FzZSAzODpaZS5wb3AoKTticmVhaztkZWZhdWx0OmlmKChJdHx8IiIpLmluZGV4T2YoIkJl''@;'; put 'put ''Z2luIik+MClaZS5wdXNoKEl0KTtlbHNlIGlmKChJdHx8IiIpLmluZGV4T2YoIkVuZCIpPjApWmUucG9wKCk7ZWxzZSBpZighVmV8fHJlLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrUHQrIiAiK0l0KX19LHJlKSx3ZVsiIWlkIl1bRmVbIiFyZWwiXV0mJihGZVsi''@;'; put 'put ''IWRyYXdlbCJdPXdlWyIhaWQiXVtGZVsiIXJlbCJdXSksRmV9KEgsd2UsWCx4ZSxGZSk6ZnVuY3Rpb24gTFAoSCxyZSxYLHdlLHhlKXtpZighSClyZXR1cm4gSDt3ZXx8KHdlPXsiIWlkIjp7fX0pO3ZhciBaZSxGZT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0s''@;'; put 'put ''VmU9SC5tYXRjaChFXyk7VmUmJlVtKFZlWzBdLDAseGUsWCk7dmFyIFVlPUgubWF0Y2goTV8pO3JldHVybiBVZSYmKEZlWyIhbWFyZ2lucyJdPWJBKHF0KFVlWzBdKSkpLChaZT1ILm1hdGNoKC9kcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKEZlWyIhcmVsIl09WmVbMV0pLHdlWyIhaWQiXVtG''@;'; put 'put ''ZVsiIXJlbCJdXSYmKEZlWyIhZHJhd2VsIl09d2VbIiFpZCJdW0ZlWyIhcmVsIl1dKSxGZX0oSCwwLFgseGUsRmUpfShRdCxyZSx4ZSxVZSxGZVt3ZV0sU3QpO2JyZWFrO2Nhc2UibWFjcm8iOmFuPWZ1bmN0aW9uIG9UKEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSl7cmV0dXJuIHJlLnNsaWNlKC00''@;'; put 'put ''KSx7IiF0eXBlIjoibWFjcm8ifX0oMCxyZSk7YnJlYWs7Y2FzZSJkaWFsb2ciOmFuPWZ1bmN0aW9uIE5QKEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSl7cmV0dXJuIHJlLnNsaWNlKC00KSx7IiF0eXBlIjoiZGlhbG9nIn19KDAscmUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJl''@;'; put 'put ''Y29nbml6ZWQgc2hlZXQgdHlwZSAiK1ZlKX1pZihVZS5jYWxsYmFjaylyZXR1cm47WmVbd2VdPWFuLGZ1bmN0aW9uIGFDKEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSl7aWYoSCYmSFsiIWRyYXdlbCJdKXt2YXIgVWU9dW4oSFsiIWRyYXdlbCJdLlRhcmdldCx3ZSksU3Q9RHQoVWUpLEl0PWZ1bmN0''@;'; put 'put ''aW9uIFFFKEgscmUsWCx3ZSx4ZSl7dmFyIEZlPXtjaGFydHM6W10saW1hZ2VzOltdLHNoYXBlczpbXX07aWYoIUgpcmV0dXJuIEZlO3ZhciBaZT14ZXx8e307cmV0dXJuKEgubWF0Y2goLzxbXjxdKj8oYWJzb2x1dGVBbmNob3J8b25lQ2VsbEFuY2hvcnx0d29DZWxsQW5jaG9yKS4qPyhhYnNv''@;'; put 'put ''bHV0ZUFuY2hvcnxvbmVDZWxsQW5jaG9yfHR3b0NlbGxBbmNob3IpLio/Pi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24oVmUpe3ZhciBVZT0iIixTdD17dHlwZToiIn0sSXQ9e30sUHQ9ITAsUXQ9ITEsYW49ITEsQ249ITEsTHQ9e3M6e319LHp0PS0xLGZuPVtdLEluPVtdLFJuPXtzOnthbGln''@;'; put 'put ''bm1lbnQ6e2hvcml6b250YWw6ImNlbnRlciIsdmVydGljYWw6ImNlbnRlciJ9fX0sVm49IiIsSXI9LTEseXI9e307VmUucmVwbGFjZShHdCxmdW5jdGlvbihvaSxNcil7Zm49bnVsbDt2YXIgV3I9cXQob2kpLGFpPUxuKFdyWzBdKS5yZXBsYWNlKC9bXC9dPz4kLywiIik7c3dpdGNoKGFpKXtj''@;'; put 'put ''YXNlIjxjbGllbnREYXRhIjpicmVhaztjYXNlIjxhYnNvbHV0ZUFuY2hvciI6Y2FzZSI8b25lQ2VsbEFuY2hvciI6Y2FzZSI8dHdvQ2VsbEFuY2hvciI6U3QudHlwZT1MbihXclswXSkucmVwbGFjZSgvWzw+XS9nLCIiKTticmVhaztjYXNlIjwvYWJzb2x1dGVBbmNob3IiOmNhc2UiPC9vbmVD''@;'; put 'put ''ZWxsQW5jaG9yIjpjYXNlIjwvdHdvQ2VsbEFuY2hvciI6YnJlYWs7Y2FzZSI8cG9zIjpTdC5wb3M9e3g6K1dyLngseTorV3IueX07YnJlYWs7Y2FzZSI8ZXh0IjpQdCYmKFN0LmV4dD17eDorV3IuY3gseTorV3IuY3l9KTticmVhaztjYXNlIjxmcm9tIjpjYXNlIjx0byI6SXQ9e307YnJlYWs7''@;'; put 'put ''Y2FzZSI8L2Zyb20iOlB0JiYoU3QuZnJvbT1JdCk7YnJlYWs7Y2FzZSI8L3RvIjpQdCYmKFN0LnRvPUl0KTticmVhaztjYXNlIjxjb2wiOmNhc2UiPGNvbE9mZiI6Y2FzZSI8cm93IjpjYXNlIjxyb3dPZmYiOnp0PU1yK29pLmxlbmd0aDticmVhaztjYXNlIjwvY29sIjpJdC5jPStWZS5zbGlj''@;'; put 'put ''ZSh6dCxNcik7YnJlYWs7Y2FzZSI8L2NvbE9mZiI6SXQuY09mZj0rVmUuc2xpY2UoenQsTXIpO2JyZWFrO2Nhc2UiPC9yb3ciOkl0LnI9K1ZlLnNsaWNlKHp0LE1yKTticmVhaztjYXNlIjwvcm93T2ZmIjpJdC5yT2ZmPStWZS5zbGljZSh6dCxNcik7YnJlYWs7Y2FzZSI8c3AiOlVlPSJzaGFw''@;'; put 'put ''ZSIsUm4uQW5jaG9yPVN0LEZlLnNoYXBlcy5wdXNoKFJuKSxQdD0hMTticmVhaztjYXNlIjwvc3AiOlB0PSEwO2JyZWFrO2Nhc2UiPGdyYXBoaWNGcmFtZSI6VWU9ImdyYXBoaWMiLFB0PSExO2JyZWFrO2Nhc2UiPC9ncmFwaGljRnJhbWUiOlB0PSEwO2JyZWFrO2Nhc2UiPHBpYyI6VWU9InBp''@;'; put 'put ''Y3R1cmUiLFB0PSExO2JyZWFrO2Nhc2UiPC9waWMiOlB0PSEwO2JyZWFrO2Nhc2UiPGdycFNwIjpVZT0iZ3JvdXBzaGFwZSIsUHQ9ITE7YnJlYWs7Y2FzZSI8L2dycFNwIjpQdD0hMDticmVhaztjYXNlIjxncmFwaGljIjpjYXNlIjwvZ3JhcGhpYyI6Y2FzZSI8eGZybSI6Y2FzZSI8L3hmcm0i''@;'; put 'put ''OmNhc2UiPG9mZiI6YnJlYWs7Y2FzZSI8Z3JhcGhpY0RhdGEiOlF0PSEwO2JyZWFrO2Nhc2UiPC9ncmFwaGljRGF0YSI6UXQ9ITE7YnJlYWs7Y2FzZSI8YmxpcEZpbGwiOlF0PSEwO2JyZWFrO2Nhc2UiPC9ibGlwRmlsbCI6UXQ9ITE7YnJlYWs7Y2FzZSI8L2JsaXAiOmJyZWFrO2Nhc2UiPHNy''@;'; put 'put ''Y1JlY3QiOlF0PSEwO2JyZWFrO2Nhc2UiPC9zcmNSZWN0IjpRdD0hMTticmVhaztjYXNlIjxub0ZpbGwiOmlmKGFuKWJyZWFrOyI8c3BQciI9PUluLnNsaWNlKC0xKVswXSYmKFJuLnMuZmdDb2xvcj1udWxsKTticmVhaztjYXNlIjwvc29saWRGaWxsIjppZihhbnx8Q24pYnJlYWs7IjxzcFBy''@;'; put 'put ''Ij09SW4uc2xpY2UoLTIpWzBdP1JuLnMuZmdDb2xvcj15cjoiPHJQciI9PUluLnNsaWNlKC0yKVswXSYmSW4uaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYoTHQucy5jb2xvcj15cikseXI9e30sQ249ITE7YnJlYWs7Y2FzZSI8cHJzdEdlb20iOiJzaGFwZSI9PVVlJiYoUm5bIiFzaGFwZSJdPVdy''@;'; put 'put ''LnByc3QpO2JyZWFrO2Nhc2UiPC9wcnN0R2VvbSI6Y2FzZSI8YXZMc3QiOmJyZWFrO2Nhc2UiPHR4Qm9keSI6UXQ9ITAsUm4uUj1bXTticmVhaztjYXNlIjwvdHhCb2R5IjpRdD0hMTticmVhaztjYXNlIjxib2R5UHIiOlJuLnMuYWxpZ25tZW50LnZlcnRpY2FsPVlFW1dyLmFuY2hvcnx8InQi''@;'; put 'put ''XXx8InRvcCI7YnJlYWs7Y2FzZSI8bHN0U3R5bGUiOmJyZWFrO2Nhc2UiPHQiOklyPU1yK29pLmxlbmd0aDticmVhaztjYXNlIjxiciI6Y2FzZSI8YnIvPiI6Vm4rPSJcbiI7YnJlYWs7Y2FzZSI8L3QiOlZuKz1WZS5zbGljZShJcixNcik7YnJlYWs7Y2FzZSI8cFByIjpSbi5zLmFsaWdubWVu''@;'; put 'put ''dC5ob3Jpem9udGFsfHwoUm4ucy5hbGlnbm1lbnQuaG9yaXpvbnRhbD1LOVtXci5hbGdufHwibCJdfHwibGVmdCIpLEluLmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKEx0LnMuYWxpZ25tZW50Lmhvcml6b250YWw9SzlbV3IuYWxnbnx8ImwiXXx8ImxlZnQiKTticmVhaztjYXNlIjxyUHIiOldy''@;'; put 'put ''LnN6JiZJbi5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihSbi5zLnN6PUx0LnMuc3o9K1dyLnN6LzEwMCk7YnJlYWs7Y2FzZSI8cCI6Vm49IiIsTHQ9e3Q6InMiLHY6IiIsczp7YWxpZ25tZW50Ont9fX07YnJlYWs7Y2FzZSI8L3AiOiJzaGFwZSI9PVVlJiZJbi5pbmRleE9mKCI8dHhCb2R5Iik+''@;'; put 'put ''LTEmJihSbi52PShSbi52fHwiIikrVm4sTHQudj1WbixSbi5SLnB1c2goTHQpKTticmVhaztjYXNlIjxsYXRpbiI6V3IudHlwZWZhY2UmJkluLmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKEx0LnMubmFtZT1Xci50eXBlZmFjZSk7YnJlYWs7Y2FzZSI8c3R5bGUiOlF0PSEwLGFuPSEwO2JyZWFr''@;'; put 'put ''O2Nhc2UiPC9zdHlsZSI6UXQ9ITEsYW49ITE7YnJlYWs7Y2FzZSI8bG5SZWYiOmNhc2UiPGZpbGxSZWYiOmNhc2UiPGVmZmVjdFJlZiI6Y2FzZSI8Zm9udFJlZiI6YnJlYWs7Y2FzZSI8L2ZpbGxSZWYiOiFhbiYmInNoYXBlIj09VWUmJihSbi5zLmZnQ29sb3I9eXIpLHlyPXt9O2JyZWFrO2Nh''@;'; put 'put ''c2UiPC9mb250UmVmIjohYW4mJiJzaGFwZSI9PVVlJiYoUm4ucy5jb2xvcj15cikseXI9e307YnJlYWs7Y2FzZSI8c2NoZW1lQ2xyIjp2YXIgbmk9e2JnMToibHQxIixiZzI6Imx0MiIsdHgxOiJkazEiLHR4MjoiZGsyIn1bV3IudmFsXXx8V3IudmFsLGZyPSgod2UudGhlbWVFbGVtZW50c3x8''@;'; put 'put ''e30pLmNsclNjaGVtZXx8W10pLmZpbmQoZnVuY3Rpb24odzApe3JldHVybiB3MC5uYW1lPT1uaX0pO2ZyP3lyLnJnYj1mci5yZ2I6Q249ITA7YnJlYWs7Y2FzZSI8c2NyZ2JDbHIiOkNuPSEwO2JyZWFrO2Nhc2UiPHNyZ2JDbHIiOnlyLnJnYj1Xci52YWwuc2xpY2UoLTYpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGhzbENsciI6Y2FzZSI8c3lzQ2xyIjpjYXNlIjxwcnN0Q2xyIjpDbj0hMDticmVhaztjYXNlIjxjaGFydCI6Zm49RmUuY2hhcnRzO3ZhciBoaT1Xci5pZDtjYXNlIjxibGlwIjpmbnx8KGZuPUZlLmltYWdlcyxoaT1Xci5lbWJlZCksZm4ucHVzaCh7QW5jaG9yOlN0LFRhcmdldDoocmVbIiFp''@;'; put 'put ''ZCJdW2hpXXx8e30pLlRhcmdldH0pLFdyLmxpbmsmJihmbltmbi5sZW5ndGgtMV0uTGluaz0ocmVbIiFpZCJdW1dyLmxpbmtdfHx7fSkuVGFyZ2V0KTticmVhaztjYXNlIjxncnBTcFByIjpRdD0hMDticmVhaztjYXNlIjwvZ3JwU3BQciI6UXQ9ITE7YnJlYWs7Y2FzZSI8bnZHcnBTcFByIjpR''@;'; put 'put ''dD0hMDticmVhaztjYXNlIjwvbnZHcnBTcFByIjpRdD0hMTticmVhaztjYXNlIjxzcFByIjpRdD0hMDticmVhaztjYXNlIjwvc3BQciI6UXQ9ITE7YnJlYWs7Y2FzZSI8c3RyZXRjaCI6Y2FzZSI8L3N0cmV0Y2giOmNhc2UiPGZpbGxSZWN0IjpjYXNlIjxudkdyYXBoaWNGcmFtZVByIjpjYXNl''@;'; put 'put ''IjwvbnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8Y052R3JhcGhpY0ZyYW1lUHIiOmNhc2UiPC9jTnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8Z3JhcGhpY0ZyYW1lTG9ja3MiOmNhc2UiPG52UGljUHIiOmNhc2UiPC9udlBpY1ByIjpjYXNlIjxjTnZQaWNQciI6Y2FzZSI8L2NOdlBpY1ByIjpjYXNl''@;'; put 'put ''IjxwaWNMb2NrcyI6Y2FzZSI8Y052R3JwU3BQciI6Y2FzZSI8L2NOdkdycFNwUHIiOmNhc2UiPGdycFNwTG9ja3MiOmNhc2UiPG52U3BQciI6Y2FzZSI8L252U3BQciI6Y2FzZSI8Y052U3BQciI6Y2FzZSI8L2NOdlNwUHIiOmNhc2UiPHNwTG9ja3MiOmJyZWFrO2Nhc2UiPGNOdlByIjpRdD0h''@;'; put 'put ''MDticmVhaztjYXNlIjwvY052UHIiOlF0PSExO2JyZWFrO2Nhc2UiPGN4blNwIjpRdD0hMDticmVhaztjYXNlIjwvY3huU3AiOlF0PSExO2JyZWFrO2Nhc2UiPGNOdkN4blNwUHIiOlF0PSEwO2JyZWFrO2Nhc2UiPC9jTnZDeG5TcFByIjpRdD0hMTticmVhaztjYXNlIjxudkN4blNwUHIiOmNh''@;'; put 'put ''c2UiPC9udkN4blNwUHIiOmJyZWFrO2Nhc2UiPGV4dExzdCI6UXQ9ITAsYW49ITA7YnJlYWs7Y2FzZSI8L2V4dExzdCI6UXQ9ITEsYW49ITE7YnJlYWs7Y2FzZSI8L2V4dCI6YnJlYWs7ZGVmYXVsdDppZihaZSYmWmUuV1RGJiYhUXQpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitX''@;'; put 'put ''clswXSsiIGluIGRyYXdpbmciKX1yZXR1cm4iPC8iPT1haS5zbGljZSgwLDIpP0luLnBvcCgpOiIvPiIhPW9pLnNsaWNlKG9pLmxlbmd0aC0yKSYmSW4ucHVzaChhaSksIiJ9KX0pLEZlfShVbihYLFVlLCEwKSxYdChVbihYLFN0LCEwKSxVZSksMCxWZSx4ZSk7aWYoSXQpe2lmKEl0LmNoYXJ0''@;'; put 'put ''cylmb3IodmFyIFB0PTA7UHQ8SXQuY2hhcnRzLmxlbmd0aDsrK1B0KXt2YXIgUXQ9SXQuY2hhcnRzW1B0XSxhbj11bihRdC5UYXJnZXQsVWUpLENuPUR0KGFuKSxMdD0iY2hhcnQiPT1yZSYmMD09UHQsenQ9VXgoVW4oWCxhbiwhMCksMCwwLFh0KFVuKFgsQ24sITApLGFuKSwwLEx0P0g6bnVs''@;'; put 'put ''bCxRdCxMdD9udWxsOkgpO0x0fHwoSFsiIWNoYXJ0cyJdfHwoSFsiIWNoYXJ0cyJdPVtdKSxIWyIhY2hhcnRzIl0ucHVzaCh6dCkpfWlmKHhlLmJvb2tJbWFnZXMmJkl0LmltYWdlcylmb3IodmFyIGZuPTA7Zm48SXQuaW1hZ2VzLmxlbmd0aDsrK2ZuKXt2YXIgSW49SXQuaW1hZ2VzW2ZuXSxS''@;'; put 'put ''bj17IiF0eXBlIjoiaW1hZ2UiLCIhcG9zIjp3QihJbi5BbmNob3IpLCIhcG9zVHlwZSI6SW4uQW5jaG9yLnR5cGUucmVwbGFjZSgvQW5jaG9yLywiIiksIiFhYnNwb3MiOlNtKEluLkFuY2hvcixIKSwiIXJlbHBvcyI6R0UoSW4uQW5jaG9yLEgpfTtpZihJbi5UYXJnZXQmJihSblsiIXBhdGgi''@;'; put 'put ''XT11bihJbi5UYXJnZXQsVWUpLFJuWyIhZGF0YSJdPXNuKFgsUm5bIiFwYXRoIl0pLFJuWyIhZGF0YXR5cGUiXT0ic3RyaW5nIj09dHlwZW9mIFJuWyIhZGF0YSJdPyJiaW5hcnkiOiJidWZmZXIiKSxJbi5MaW5rJiYoUm5bIiFkYXRhdHlwZSJdfHwoUm5bIiFkYXRhdHlwZSJdPSJyZW1vdGUi''@;'; put 'put ''KSxSblsiIWxpbmsiXT1Jbi5MaW5rKSwhUm5bIiFkYXRhdHlwZSJdKXRocm93IkltYWdlIGRhdGEgY2Fubm90IGJlIGZvdW5kIjtIWyIhaW1hZ2VzIl18fChIWyIhaW1hZ2VzIl09W10pLEhbIiFpbWFnZXMiXS5wdXNoKFJuKX12YXIgVm4sSXI7aWYoSXQuc2hhcGVzKWZvcih2YXIgeXI9MDt5''@;'; put 'put ''cjxJdC5zaGFwZXMubGVuZ3RoOysreXIpSXI9eyIhdHlwZSI6InNoYXBlIiwiIXBvcyI6U20oKFZuPUl0LnNoYXBlc1t5cl0pLkFuY2hvcixIKSwiIXBvc1R5cGUiOlZuLkFuY2hvci50eXBlLnJlcGxhY2UoL0FuY2hvci8sIiIpLCIhYWJzcG9zIjpTbShWbi5BbmNob3IsSCksIiFyZWxwb3Mi''@;'; put 'put ''OkdFKFZuLkFuY2hvcixIKX0sWyJ2IiwiIXNoYXBlIiwicyIsIlIiXS5mb3JFYWNoKGlpKSxIWyIhc2hhcGVzIl18fChIWyIhc2hhcGVzIl09W10pLEhbIiFzaGFwZXMiXS5wdXNoKElyKX19ZnVuY3Rpb24gaWkob2kpe1ZuW29pXSYmKElyW29pXT1WbltvaV0pfX0oYW4sVmUsSCxyZSxVZSww''@;'; put 'put ''LDAsSXQpO3ZhciBDbj1bXTtyZXR1cm4gRmUmJkZlW3dlXSYmb24oRmVbd2VdKS5mb3JFYWNoKGZ1bmN0aW9uKEx0KXtpZihGZVt3ZV1bTHRdLlR5cGU9PWR0LkNNTlQpe3ZhciB6dD11bihGZVt3ZV1bTHRdLlRhcmdldCxyZSk7aWYoIShDbj1mdW5jdGlvbiBaUChILHJlLFgpe3JldHVybiIu''@;'; put 'put ''YmluIj09PXJlLnNsaWNlKC00KT9mdW5jdGlvbiBhXyhILHJlKXt2YXIgWD1bXSx3ZT1bXSx4ZT17fSxGZT0hMTtyZXR1cm4gbTEoSCxmdW5jdGlvbihWZSxVZSxTdCl7c3dpdGNoKFN0KXtjYXNlIDYzMjp3ZS5wdXNoKFZlKTticmVhaztjYXNlIDYzNTp4ZT1WZTticmVhaztjYXNlIDYzNzp4''@;'; put 'put ''ZS50PVZlLnQseGUuaD1WZS5oLHhlLnI9VmUucjticmVhaztjYXNlIDYzNjppZih4ZS5hdXRob3I9d2VbeGUuaWF1dGhvcl0sZGVsZXRlIHhlLmlhdXRob3IscmUuc2hlZXRSb3dzJiZ4ZS5yZngmJnJlLnNoZWV0Um93czw9eGUucmZ4LnIpYnJlYWs7eGUudHx8KHhlLnQ9IiIpLGRlbGV0ZSB4''@;'; put 'put ''ZS5yZngsWC5wdXNoKHhlKTticmVhaztjYXNlIDMwNzI6Y2FzZSAzNzpjYXNlIDM4OmJyZWFrO2Nhc2UgMzU6RmU9ITA7YnJlYWs7Y2FzZSAzNjpGZT0hMTticmVhaztkZWZhdWx0OmlmKCEoKFVlfHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKSYmISgoVWV8fCIiKS5pbmRleE9mKCJFbmQiKT4w''@;'; put 'put ''KSYmKCFGZXx8cmUuV1RGKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrU3QrIiAiK1VlKX19KSxYfShILFgpOmZ1bmN0aW9uIHFFKEgscmUpe2lmKEgubWF0Y2goLzwoPzpcdys6KT9jb21tZW50cyAqXC8+LykpcmV0dXJuW107dmFyIFg9W10sd2U9W10seGU9SC5tYXRj''@;'; put 'put ''aCgvPCg/Olx3KzopP2F1dGhvcnM+KFtcc1xTXSopPFwvKD86XHcrOik/YXV0aG9ycz4vKTt4ZSYmeGVbMV0mJnhlWzFdLnNwbGl0KC88XC9cdyo6P2F1dGhvcj4vKS5mb3JFYWNoKGZ1bmN0aW9uKFplKXtpZigiIiE9PVplJiYiIiE9PVplLnRyaW0oKSl7dmFyIFZlPVplLm1hdGNoKC88KD86''@;'; put 'put ''XHcrOik/YXV0aG9yW14+XSo+KC4qKS8pO1ZlJiZYLnB1c2goVmVbMV0pfX0pO3ZhciBGZT1ILm1hdGNoKC88KD86XHcrOik/Y29tbWVudExpc3Q+KFtcc1xTXSopPFwvKD86XHcrOik/Y29tbWVudExpc3Q+Lyk7cmV0dXJuIEZlJiZGZVsxXSYmRmVbMV0uc3BsaXQoLzxcL1x3Kjo/Y29tbWVu''@;'; put 'put ''dD4vKS5mb3JFYWNoKGZ1bmN0aW9uKFplKXtpZigiIiE9PVplJiYiIiE9PVplLnRyaW0oKSl7dmFyIFZlPVplLm1hdGNoKC88KD86XHcrOik/Y29tbWVudFtePl0qPi8pO2lmKFZlKXt2YXIgVWU9cXQoVmVbMF0pLFN0PXthdXRob3I6VWUuYXV0aG9ySWQmJlhbVWUuYXV0aG9ySWRdfHwic2hl''@;'; put 'put ''ZXRqc2dob3N0IixyZWY6VWUucmVmLGd1aWQ6VWUuZ3VpZH0sSXQ9cG8oVWUucmVmKTtpZighKHJlLnNoZWV0Um93cyYmcmUuc2hlZXRSb3dzPD1JdC5yKSl7dmFyIFB0PVplLm1hdGNoKC88KD86XHcrOik/dGV4dD4oW1xzXFNdKik8XC8oPzpcdys6KT90ZXh0Pi8pLFF0PSEhUHQmJiEhUHRb''@;'; put 'put ''MV0mJlUxKFB0WzFdKXx8e3I6IiIsdDoiIixoOiIifTtTdC5yPVF0LnIsIjx0PjwvdD4iPT1RdC5yJiYoUXQudD1RdC5oPSIiKSxTdC50PShRdC50fHwiIikucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UoL1xyL2csIlxuIikscmUuY2VsbEhUTUwmJihTdC5oPVF0LmgpLHdlLnB1c2go''@;'; put 'put ''U3QpfX19fSksd2V9KEgsWCl9KHNuKEgsenQsITApLHp0LFVlKSl8fCFDbi5sZW5ndGgpcmV0dXJuOyFmdW5jdGlvbiBFbShILHJlKXt2YXIgd2UsWD1BcnJheS5pc0FycmF5KEgpO3JlLmZvckVhY2goZnVuY3Rpb24oeGUpe3ZhciBGZT1wbyh4ZS5yZWYpO2lmKFg/KEhbRmUucl18fChIW0Zl''@;'; put 'put ''LnJdPVtdKSx3ZT1IW0ZlLnJdW0ZlLmNdKTp3ZT1IW3hlLnJlZl0sIXdlKXt3ZT17dDoieiJ9LFg/SFtGZS5yXVtGZS5jXT13ZTpIW3hlLnJlZl09d2U7dmFyIFplPWVhKEhbIiFyZWYiXXx8IkJEV0dPMTAwMDAwMTpBMSIpO1plLnMucj5GZS5yJiYoWmUucy5yPUZlLnIpLFplLmUucjxGZS5y''@;'; put 'put ''JiYoWmUuZS5yPUZlLnIpLFplLnMuYz5GZS5jJiYoWmUucy5jPUZlLmMpLFplLmUuYzxGZS5jJiYoWmUuZS5jPUZlLmMpO3ZhciBWZT1BYShaZSk7VmUhPT1IWyIhcmVmIl0mJihIWyIhcmVmIl09VmUpfXdlLmN8fCh3ZS5jPVtdKTt2YXIgVWU9e2E6eGUuYXV0aG9yLHQ6eGUudCxyOnhlLnJ9''@;'; put 'put ''O1VlLnImJiJzdHJpbmciPT10eXBlb2YgVWUuciYmKFVlLlI9TjgoVWUucikpLHhlLmgmJihVZS5oPXhlLmgpLHdlLmMucHVzaChVZSl9KX0oYW4sQ24pfX0pLGZ1bmN0aW9uIGxDKEgscmUsWCx3ZSx4ZSxGZSxaZSl7IUh8fCFIWyIhdGFibGVyZWZzIl18fCFYfHwhWFsiIWlkIl18fChIWyIh''@;'; put 'put ''dGFibGVzIl09W10sSFsiIXRhYmxlcmVmcyJdLmZvckVhY2goZnVuY3Rpb24oVmUpe3ZhciBVZT1YWyIhaWQiXVtWZV07aWYoVWUmJlVlLlRhcmdldCl7dmFyIFN0PXVuKFVlLlRhcmdldCx3ZSk7dm9pZCAwIT09SkUmJkpFKHNuKHJlLFN0LCEwKSxILHhlLDAsWmUpfX0pLGRlbGV0ZSBIWyIh''@;'; put 'put ''dGFibGVyZWZzIl0pfShhbixILEZlW3dlXSxyZSxQdCwwLFVlKSwidW5kZWZpbmVkIiE9dHlwZW9mIHBhcnNlX3NoZWV0X3Bpdm90JiZkNS5wdXNoKFthbixILEZlW3dlXSxyZSx7U2hlZXRzOlplfSxQdCxVZV0pLGZ1bmN0aW9uIEVUKEgscmUsWCx3ZSx4ZSxGZSxaZSxWZSl7aWYoSCYmSFsi''@;'; put 'put ''IWxlZ2RyYXdlbCJdKXt2YXIgVWU9dW4oSFsiIWxlZ2RyYXdlbCJdLlRhcmdldCx3ZSksU3Q9VW4oWCxVZSwhMCk7U3QmJmZ1bmN0aW9uIFA0KEgscmUsWCl7dmFyIHdlPTA7KEgubWF0Y2goWEUpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7dmFyIGZuLEluLFJuLFZuLElyLGlpLHlyLG9p''@;'; put 'put ''LEZlPSIiLFplPSEwLFZlPSIiLFVlPS0xLFN0PXt9LEl0PXt9LFB0PXt9LFF0PS0xLGFuPS0xLENuPSIiLEx0PSIiLHp0PSIiLE1yPSExLFdyPSExO3N3aXRjaCh4ZS5yZXBsYWNlKEd0LGZ1bmN0aW9uKGZyLGhpKXt2YXIgdzA9cXQoZnIpO3N3aXRjaChMbih3MFswXSkpe2Nhc2UiPHNoYXBl''@;'; put 'put ''Ijp3MC5maWxsY29sb3ImJihTdC5jb2xvcjE9dzAuZmlsbGNvbG9yKSx3MC5zdHJva2Vjb2xvciYmKFB0LmNvbG9yPXcwLnN0cm9rZWNvbG9yKTticmVhaztjYXNlIjxmaWxsIjpjYXNlIjxmaWxsPiI6Ijx2OmZpbGwiPT13MFswXSYmKHcwLmNvbG9yMiYmKFN0LmNvbG9yMj13MC5jb2xvcjIp''@;'; put 'put ''LHcwLnR5cGUmJihTdC50eXBlPXcwLnR5cGUpKTticmVhaztjYXNlIjwvZmlsbD4iOmNhc2UiPGxvY2siOmNhc2UiPGxvY2svPiI6YnJlYWs7Y2FzZSI8c2hhZG93Ijp3MC5jb2xvciYmKEl0LmNvbG9yPXcwLmNvbG9yKSx3MC5vbiYmKEl0Lm9uPXcwLm9uKTticmVhaztjYXNlIjxDbGllbnRE''@;'; put 'put ''YXRhIjp3MC5PYmplY3RUeXBlJiYoRmU9dzAuT2JqZWN0VHlwZSk7YnJlYWs7Y2FzZSI8VmlzaWJsZSI6Y2FzZSI8VmlzaWJsZS8+IjpaZT0hMTticmVhaztjYXNlIjxBbmNob3IiOmNhc2UiPEFuY2hvcj4iOmNhc2UiPFJvdyI6Y2FzZSI8Um93PiI6Y2FzZSI8Q29sdW1uIjpjYXNlIjxDb2x1''@;'; put 'put ''bW4+IjpjYXNlIjxGbWxhTWFjcm8iOmNhc2UiPEZtbGFNYWNybz4iOmNhc2UiPEZtbGFMaW5rIjpjYXNlIjxGbWxhTGluaz4iOmNhc2UiPEZtbGFSYW5nZSI6Y2FzZSI8Rm1sYVJhbmdlPiI6Y2FzZSI8U2VsVHlwZSI6Y2FzZSI8U2VsVHlwZT4iOmNhc2UiPFZhbCI6Y2FzZSI8VmFsPiI6Y2Fz''@;'; put 'put ''ZSI8TWluIjpjYXNlIjxNaW4+IjpjYXNlIjxNYXgiOmNhc2UiPE1heD4iOmNhc2UiPEluYyI6Y2FzZSI8SW5jPiI6Y2FzZSI8UGFnZSI6Y2FzZSI8UGFnZT4iOmNhc2UiPENoZWNrZWQiOmNhc2UiPENoZWNrZWQ+IjpjYXNlIjx0ZXh0Ym94IjpjYXNlIjx0ZXh0Ym94PiI6VWU9aGkrZnIubGVu''@;'; put 'put ''Z3RoO2JyZWFrO2Nhc2UiPC9BbmNob3I+IjpWZT14ZS5zbGljZShVZSxoaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9Sb3c+IjpRdD0reGUuc2xpY2UoVWUsaGkpLnRyaW0oKTticmVhaztjYXNlIjwvQ29sdW1uPiI6YW49K3hlLnNsaWNlKFVlLGhpKS50cmltKCk7YnJlYWs7Y2FzZSI8L0ZtbGFN''@;'; put 'put ''YWNybz4iOkNuPXhlLnNsaWNlKFVlLGhpKS50cmltKCk7YnJlYWs7Y2FzZSI8L0ZtbGFMaW5rPiI6THQ9eGUuc2xpY2UoVWUsaGkpLnRyaW0oKTticmVhaztjYXNlIjwvRm1sYVJhbmdlPiI6eXI9eGUuc2xpY2UoVWUsaGkpLnRyaW0oKTticmVhaztjYXNlIjwvU2VsVHlwZT4iOm9pPXhlLnNs''@;'; put 'put ''aWNlKFVlLGhpKS50cmltKCk7YnJlYWs7Y2FzZSI8L1ZhbD4iOmZuPSt4ZS5zbGljZShVZSxoaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9NaW4+IjpJbj0reGUuc2xpY2UoVWUsaGkpLnRyaW0oKTticmVhaztjYXNlIjwvTWF4PiI6Um49K3hlLnNsaWNlKFVlLGhpKS50cmltKCk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSI8L0luYz4iOlZuPSt4ZS5zbGljZShVZSxoaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9QYWdlPiI6SXI9K3hlLnNsaWNlKFVlLGhpKS50cmltKCk7YnJlYWs7Y2FzZSI8L0NoZWNrZWQ+IjppaT0reGUuc2xpY2UoVWUsaGkpLnRyaW0oKTticmVhaztjYXNlIjwvdGV4dGJveD4iOnp0PXhlLnNs''@;'; put 'put ''aWNlKFVlLGhpKS50cmltKCk7YnJlYWs7Y2FzZSI8TW92ZVdpdGhDZWxscy8+IjpjYXNlIjxNb3ZlV2l0aENlbGxzPiI6TXI9ITA7YnJlYWs7Y2FzZSI8U2l6ZVdpdGhDZWxscy8+IjpjYXNlIjxTaXplV2l0aENlbGxzPiI6V3I9ITB9cmV0dXJuIiJ9KSxGZSl7Y2FzZSJOb3RlIjp2YXIgYWk9''@;'; put 'put ''azEuc2hlZXRfZ2V0X2NlbGwocmUsUXQ+PTAmJmFuPj0wP1EwKHtyOlF0LGM6YW59KTpYW3dlXS5yZWYpO2FpLmMmJihhaS5jLmhpZGRlbj1aZSxWZSYmKGFpLmMucmF3YW5jaG9yPVZlLGJCKFZlLGFpLmMpLEtiKGFpLmNbIiFwb3MiXSwyKiEhTXIrISFXcixyZSkpLFN0LmNvbG9yMSYmKGFp''@;'; put 'put ''LmMuZmlsbD1TdCksSXQuY29sb3ImJihhaS5jLnNoYWRvdz1JdCksUHQuY29sb3ImJihhaS5jLnN0cm9rZT1QdCkpLCsrd2U7YnJlYWs7Y2FzZSJCdXR0b24iOmNhc2UiR0JveCI6Y2FzZSJEcm9wIjpjYXNlIkxhYmVsIjpjYXNlIkNoZWNrYm94IjpjYXNlIlNjcm9sbCI6Y2FzZSJMaXN0Ijpj''@;'; put 'put ''YXNlIlJhZGlvIjpjYXNlIlNwaW4iOmNhc2UiRWRpdCI6cmVbIiFjb250cm9scyJdfHwocmVbIiFjb250cm9scyJdPVtdKTt2YXIgbmk9eyIhdHlwZSI6RmV9O1ZlJiZiQihWZSxuaSksQ24mJihuaS5tYWNybz1Dbi5yZXBsYWNlKCJbMF0hIiwiIikpLEx0JiYobmkubGluaz1MdCksIlNjcm9s''@;'; put 'put ''bCI9PUZlfHwiU3BpbiI9PUZlPyhudWxsPT1mbiYmKGZuPTApLG51bGw9PUluJiYoSW49MCksbnVsbD09Um4mJihSbj0zZTQpLG51bGw9PVZuJiYoVm49MSksIlNjcm9sbCI9PUZlJiZudWxsPT1JciYmKElyPTEwKSk6IlJhZGlvIj09RmV8fCJDaGVja2JveCI9PUZlPyhudWxsPT1paSYmKGlp''@;'; put 'put ''PTApLGZuPWlpKTooIkxpc3QiPT1GZXx8IkRyb3AiPT1GZSkmJihudWxsIT15ciYmKG5pLnJlZj15ciksbnVsbD09b2kmJihvaT0iU2luZ2xlIiksIkxpc3QiPT1GZSYmKG5pLnNlbD1vaSkpLG51bGwhPWZuJiYobmkudmFsPWZuKSxudWxsIT1JbiYmKG5pLm1pbj1JbiksbnVsbCE9Um4mJihu''@;'; put 'put ''aS5tYXg9Um4pLG51bGwhPVZuJiYobmkuc3RlcD1WbiksbnVsbCE9SXImJihuaS5wYWdlPUlyKSx6dCYmKG5pLnQ9enQucmVwbGFjZSgvXHMqPFtcc1xTXSo/PlxzKi9nLCIiKSkscmVbIiFjb250cm9scyJdLnB1c2gobmkpfX0pfShqMChTdCksSCxWZXx8W10pLEhbIiFMRFAiXT1VZSxIWyIh''@;'; put 'put ''Y3RybGlkIl0mJkhbIiFjdHJsaWQiXS5mb3JFYWNoKGZ1bmN0aW9uKEl0KXtpZihJdC5yZWwmJkl0LnJlbC5UYXJnZXQpe3ZhciBQdD11bihJdC5yZWwuVGFyZ2V0LHdlKTtJdC5wYXRoPVB0LGRlbGV0ZSBJdC5yZWx9fSl9fShhbiwwLEgscmUsMCwwLDAsQ24pLGFufWNhdGNoKEx0KXtpZihV''@;'; put 'put ''ZS5XVEYpdGhyb3cgTHR9fWZ1bmN0aW9uIFAyKEgpe3JldHVybiIvIj09SC5jaGFyQXQoMCk/SC5zbGljZSgxKTpIfWZ1bmN0aW9uIGdvKEgscmUpe2lmKGQ1PVtdLHdmKHJlPXJlfHx7fSksS24oSCwiTUVUQS1JTkYvbWFuaWZlc3QueG1sIil8fEtuKEgsIm9iamVjdGRhdGEueG1sIikpcmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIEo0KEgscmUpe3JlPXJlfHx7fSxLbihILCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSYmZnVuY3Rpb24gTmkoSCxyZSl7Zm9yKHZhciB3ZSx4ZSxYPWRUKEgpO3dlPWY1LmV4ZWMoWCk7KXN3aXRjaCh3ZVszXSl7Y2FzZSJtYW5pZmVzdCI6YnJlYWs7Y2FzZSJmaWxlLWVu''@;'; put 'put ''dHJ5IjppZigiLyI9PSh4ZT1xdCh3ZVswXSwhMSkpLnBhdGgmJiJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IiE9PXhlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJUaGlzIE9wZW5Eb2N1bWVudCBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''ZW5jcnlwdGlvbi1kYXRhIjpjYXNlImFsZ29yaXRobSI6Y2FzZSJzdGFydC1rZXktZ2VuZXJhdGlvbiI6Y2FzZSJrZXktZGVyaXZhdGlvbiI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBPRFMgRW5jcnlwdGlvbiIpO2RlZmF1bHQ6aWYocmUmJnJlLldURil0aHJvdyB3ZX19KHNuKEgs''@;'; put 'put ''Ik1FVEEtSU5GL21hbmlmZXN0LnhtbCIpLHJlKTt2YXIgWD1VbihILCJjb250ZW50LnhtbCIpO2lmKCFYKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBjb250ZW50LnhtbCBpbiBPRFMgLyBVT0YgZmlsZSIpO3ZhciB3ZT1yQyhqMChYKSxyZSk7cmV0dXJuIEtuKEgsIm1ldGEueG1sIikmJih3''@;'; put 'put ''ZS5Qcm9wcz1LMihzbihILCJtZXRhLnhtbCIpKSksd2V9KEgscmUpO2lmKEtuKEgsIkluZGV4L0RvY3VtZW50Lml3YSIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTlVNQkVSUyBmaWxlIik7dmFyIEZlLFplLFg9ZnVuY3Rpb24gdG4oSCl7Zm9yKHZhciByZT1ILkZ1bGxQYXRoc3x8''@;'; put 'put ''b24oSC5maWxlcyksWD1bXSx3ZT0wO3dlPHJlLmxlbmd0aDsrK3dlKSIvIiE9cmVbd2VdLnNsaWNlKC0xKSYmWC5wdXNoKHJlW3dlXSk7cmV0dXJuIFguc29ydCgpfShIKSx3ZT1mdW5jdGlvbiBXTShIKXt2YXIgcmU9e3dvcmtib29rczpbXSxzaGVldHM6W10sY2hhcnRzOltdLGRpYWxvZ3M6''@;'; put 'put ''W10sbWFjcm9zOltdLHJlbHM6W10sc3RyczpbXSxjb21tZW50czpbXSxsaW5rczpbXSxjb3JlcHJvcHM6W10sZXh0cHJvcHM6W10sY3VzdHByb3BzOltdLHRoZW1lczpbXSxzdHlsZXM6W10sY2FsY2NoYWluczpbXSx2YmE6W10sZHJhd2luZ3M6W10scGl2b3RzOltdLHBpdm90Y2FjaGVzOltd''@;'; put 'put ''LHBpdm90cmVjb3JkczpbXSxkYXRhbW9kZWxzOltdLGNoYXJ0b2JqczpbXSxjaGFydHN0eWxlczpbXSxjaGFydGNvbG9yczpbXSxjaGFydGV4czpbXSx0YWJsZXM6W10sY29ubnM6W10sY3RybHByb3BzOltdLGN1c3RvbXhtbHByb3BzOltdLFRPRE86W10seG1sbnM6IiJ9O2lmKCFIfHwhSC5t''@;'; put 'put ''YXRjaClyZXR1cm4gcmU7dmFyIFg9e307aWYoKEgubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih3ZSl7dmFyIHhlPXF0KHdlKTtzd2l0Y2goeGVbMF0ucmVwbGFjZShFbiwiPCIpKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxUeXBlcyI6cmUueG1sbnM9eGVbInhtbG5zIisoeGVb''@;'; put 'put ''MF0ubWF0Y2goLzwoXHcrKTovKXx8WyIiLCIiXSlbMV1dO2JyZWFrO2Nhc2UiPERlZmF1bHQiOlhbeGUuRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCldPXhlLkNvbnRlbnRUeXBlO2JyZWFrO2Nhc2UiPE92ZXJyaWRlIjp2b2lkIDAhPT1yZVtDNFt4ZS5Db250ZW50VHlwZV1dJiZyZVtDNFt4ZS5D''@;'; put 'put ''b250ZW50VHlwZV1dLnB1c2goeGUuUGFydE5hbWUpfX0pLHJlLnhtbG5zIT09VzAuQ1QpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIityZS54bWxucyk7cmV0dXJuIHJlLmNhbGNjaGFpbj1yZS5jYWxjY2hhaW5zLmxlbmd0aD4wP3JlLmNhbGNjaGFpbnNbMF06IiIscmUu''@;'; put 'put ''c3N0PXJlLnN0cnMubGVuZ3RoPjA/cmUuc3Ryc1swXToiIixyZS5zdHlsZT1yZS5zdHlsZXMubGVuZ3RoPjA/cmUuc3R5bGVzWzBdOiIiLHJlLmNvbm49cmUuY29ubnMubGVuZ3RoPjA/cmUuY29ubnNbMF06IiIscmUuZGVmYXVsdHM9WCxkZWxldGUgcmUuY2FsY2NoYWlucyxyZX0oVW4oSCwi''@;'; put 'put ''W0NvbnRlbnRfVHlwZXNdLnhtbCIpKSx4ZT0hMTtpZigwPT09d2Uud29ya2Jvb2tzLmxlbmd0aCYmc24oSCxaZT0ieGwvd29ya2Jvb2sueG1sIiwhMCkmJndlLndvcmtib29rcy5wdXNoKFplKSwwPT09d2Uud29ya2Jvb2tzLmxlbmd0aCl7aWYoIXNuKEgsWmU9InhsL3dvcmtib29rLmJpbiIs''@;'; put 'put ''ITApKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgd29ya2Jvb2siKTt3ZS53b3JrYm9va3MucHVzaChaZSkseGU9ITB9ImJpbiI9PXdlLndvcmtib29rc1swXS5zbGljZSgtMykmJih4ZT0hMCk7dmFyIFZlPXt9LFVlPXt9O2lmKCFyZS5ib29rU2hlZXRzJiYhcmUuYm9va1Byb3Bz''@;'; put 'put ''KXtpZihNZD1bXSx3ZS5zc3QpdHJ5e01kPWZ1bmN0aW9uIGpQKEgscmUsWCl7cmV0dXJuIi5iaW4iPT09cmUuc2xpY2UoLTQpP2Z1bmN0aW9uIFlmKEgscmUpe3ZhciBYPVtdLHdlPSExO3JldHVybiBtMShILGZ1bmN0aW9uKEZlLFplLFZlKXtzd2l0Y2goVmUpe2Nhc2UgMTU5OlguQ291bnQ9''@;'; put 'put ''RmVbMF0sWC5VbmlxdWU9RmVbMV07YnJlYWs7Y2FzZSAxOTpYLnB1c2goRmUpO2JyZWFrO2Nhc2UgMTYwOnJldHVybiEwO2Nhc2UgMzU6d2U9ITA7YnJlYWs7Y2FzZSAzNjp3ZT0hMTticmVhaztkZWZhdWx0OmlmKFplLmluZGV4T2YoIkJlZ2luIik+MHx8WmUuaW5kZXhPZigiRW5kIiksIXdl''@;'; put 'put ''fHxyZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK1ZlKyIgIitaZSl9fSksWH0oSCxYKTpmdW5jdGlvbiBXbyhILHJlKXt2YXIgWD1bXSx3ZT0iIjtpZighSClyZXR1cm4gWDt2YXIgeGU9SC5tYXRjaChYbyk7aWYoeGUpe3dlPXhlWzJdLnJlcGxhY2UoYjMsIiIp''@;'; put 'put ''LnNwbGl0KFdmKTtmb3IodmFyIEZlPTA7RmUhPXdlLmxlbmd0aDsrK0ZlKXt2YXIgWmU9VTEod2VbRmVdLnRyaW0oKSxyZSk7bnVsbCE9WmUmJihYW1gubGVuZ3RoXT1aZSl9eGU9cXQoeGVbMV0pLFguQ291bnQ9eGUuY291bnQsWC5VbmlxdWU9eGUudW5pcXVlQ291bnR9cmV0dXJuIFh9KEgs''@;'; put 'put ''WCl9KHNuKEgsUDIod2Uuc3N0KSksd2Uuc3N0LHJlKX1jYXRjaChjaSl7aWYocmUuV1RGKXRocm93IGNpfXJlLmNlbGxTdHlsZXMmJndlLnRoZW1lcy5sZW5ndGgmJihWZT1mdW5jdGlvbiBhVChILHJlLFgpe3JldHVybiBrbShILFgpfShVbihILHdlLnRoZW1lc1swXS5yZXBsYWNlKC9eXC8v''@;'; put 'put ''LCIiKSwhMCl8fCIiLDAscmUpKSx3ZS5zdHlsZSYmKFVlPWZ1bmN0aW9uIFZQKEgscmUsWCx3ZSl7cmV0dXJuIi5iaW4iPT09cmUuc2xpY2UoLTQpP2Z1bmN0aW9uIHpiKEgscmUsWCl7dmFyIHdlPXtOdW1iZXJGbXQ6W119O2Zvcih2YXIgeGUgaW4gRi5fdGFibGUpd2UuTnVtYmVyRm10W3hl''@;'; put 'put ''XT1GLl90YWJsZVt4ZV07d2UuQ2VsbFhmPVtdLHdlLkZvbnRzPVtdLHdlLkZpbGxzPVtdLHdlLkJvcmRlcnM9W107dmFyIEZlPVtdLFplPSExO3JldHVybiBtMShILGZ1bmN0aW9uKFVlLFN0LEl0KXtzd2l0Y2goSXQpe2Nhc2UgNDQ6d2UuTnVtYmVyRm10W1VlWzBdXT1VZVsxXSxGLmxvYWQo''@;'; put 'put ''VWVbMV0sVWVbMF0pO2JyZWFrO2Nhc2UgNDM6X20oVWUuY29sb3IscmUpLHdlLkZvbnRzLnB1c2goVWUpO2JyZWFrO2Nhc2UgMTAyNTpjYXNlIDQ4OmNhc2UgNTA3OmNhc2UgNTcyOmNhc2UgNDc1OmNhc2UgMTE3MTpjYXNlIDIxMDI6Y2FzZSAxMTMwOmNhc2UgNTEyOmNhc2UgMjA5NTpjYXNl''@;'; put 'put ''IDMwNzI6YnJlYWs7Y2FzZSA0NTpVZS5mZ0NvbG9yJiZfbShVZS5mZ0NvbG9yLHJlKSxVZS5iZ0NvbG9yJiZfbShVZS5iZ0NvbG9yLHJlKSx3ZS5GaWxscy5wdXNoKFVlKTticmVhaztjYXNlIDQ2OlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiZGlhZyJdLmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24oUHQpe1VlW1B0XSYmVWVbUHRdLmNvbG9yJiZfbShVZVtQdF0uY29sb3IscmUpfSksd2UuQm9yZGVycy5wdXNoKFVlKTticmVhaztjYXNlIDQ3OiJCcnRCZWdpbkNlbGxYRnMiPT1GZVtGZS5sZW5ndGgtMV0mJndlLkNlbGxYZi5wdXNoKFVlKTticmVhaztjYXNlIDM1OlplPSEwO2JyZWFr''@;'; put 'put ''O2Nhc2UgMzY6WmU9ITE7YnJlYWs7Y2FzZSAzNzpGZS5wdXNoKFN0KSxaZT0hMDticmVhaztjYXNlIDM4OkZlLnBvcCgpLFplPSExO2JyZWFrO2RlZmF1bHQ6aWYoKFN0fHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKUZlLnB1c2goU3QpO2Vsc2UgaWYoKFN0fHwiIikuaW5kZXhPZigiRW5kIik+''@;'; put 'put ''MClGZS5wb3AoKTtlbHNlIGlmKCFaZXx8WC5XVEYmJiJCcnRBQ0JlZ2luIiE9RmVbRmUubGVuZ3RoLTFdKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitJdCsiICIrU3QpfX0pLCh3ZS5Gb250c3x8W10pWzBdJiZyNih3ZS5Gb250c1swXSksd2V9KEgsWCx3ZSk6REUoSCxY''@;'; put 'put ''LHdlKX0oc24oSCxQMih3ZS5zdHlsZSkpLHdlLnN0eWxlLFZlLHJlKSl9dmFyIFN0PXdlLmxpbmtzLm1hcChmdW5jdGlvbihjaSl7dHJ5e3ZhciBIcj1YdChVbihILER0KFAyKGNpKSkpLGNpKTtyZXR1cm4gZnVuY3Rpb24gS18oSCxyZSxYLHdlKXtyZXR1cm4iLmJpbiI9PT1YLnNsaWNlKC00''@;'; put 'put ''KT9mdW5jdGlvbiB2ZihILHJlLFgsd2Upe2lmKCFIKXJldHVybiBIO3ZhciB4ZT13ZXx8e30sRmU9ITE7bTEoSCxmdW5jdGlvbihVZSxTdCxJdCl7c3dpdGNoKEl0KXtjYXNlIDM1OTpjYXNlIDM2MzpjYXNlIDM2NDpjYXNlIDM2NjpjYXNlIDM2NzpjYXNlIDM2ODpjYXNlIDM2OTpjYXNlIDM3''@;'; put 'put ''MDpjYXNlIDM3MTpjYXNlIDQ3MjpjYXNlIDU3NzpjYXNlIDU3ODpjYXNlIDU3OTpjYXNlIDU4MDpjYXNlIDU4MTpjYXNlIDU4MjpjYXNlIDU4MzpjYXNlIDU4NDpjYXNlIDU4NTpjYXNlIDU4NjpjYXNlIDU4NzpicmVhaztjYXNlIDM1OkZlPSEwO2JyZWFrO2Nhc2UgMzY6RmU9ITE7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDppZighKChTdHx8IiIpLmluZGV4T2YoIkJlZ2luIik+MCkmJiEoKFN0fHwiIikuaW5kZXhPZigiRW5kIik+MCkmJighRmV8fHhlLldURikpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK0l0LnRvU3RyaW5nKDE2KSsiICIrU3QpfX0seGUpfShILDAsMCx3ZSk6''@;'; put 'put ''ZnVuY3Rpb24gQ2QoSCxyZSxYLHdlKXt2YXIgeGU9d2V8fHt9LEZlPXtTaGVldE5hbWVzOltdLFNoZWV0czp7fX0sVmU9ITEsVWU9e30sU3Q9LTEsSXQ9LTEsUHQ9e3M6e3I6MCxjOjB9LGU6e3I6LTEsYzotMX19LFF0PXt9LGFuPTA7cmV0dXJuKEh8fCIiKS5yZXBsYWNlKEd0LGZ1bmN0aW9u''@;'; put 'put ''KENuLEx0KXt2YXIgenQ9cXQoQ24pO3N3aXRjaChMbih6dFswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPGV4dGVybmFsTGluayI6Y2FzZSI8L2V4dGVybmFsTGluaz4iOmNhc2UiPC9leHRlcm5hbEJvb2s+IjpjYXNlIjxzaGVldE5hbWVzIjpjYXNlIjxzaGVldE5hbWVzPiI6Y2FzZSI8L3NoZWV0''@;'; put 'put ''TmFtZXM+IjpjYXNlIjxzaGVldERhdGFTZXQ+IjpjYXNlIjxzaGVldERhdGFTZXQvPiI6Y2FzZSI8L3NoZWV0RGF0YVNldD4iOmNhc2UiPC9yb3c+IjpicmVhaztjYXNlIjxleHRlcm5hbEJvb2siOmNhc2UiPGV4dGVybmFsQm9vaz4iOkZlLlRhcmdldD1yZVsiIWlkIl1benQuaWRdLlRhcmdl''@;'; put 'put ''dCxGZS5NaXNzaW5nPXJlWyIhaWQiXVt6dC5pZF0uVHlwZT09ZHQuWE1JU1M7YnJlYWs7Y2FzZSI8c2hlZXROYW1lIjpGZS5TaGVldE5hbWVzLnB1c2goZ3IoajAoenQudmFsKSkpO2JyZWFrO2Nhc2UiPHNoZWV0RGF0YSI6VWU9e30sRmUuU2hlZXRzW0ZlLlNoZWV0TmFtZXNbenQuc2hlZXRJ''@;'; put 'put ''ZF1dPUJpKHp0LnJlZnJlc2hFcnJvcnx8IjAiKT9udWxsOlVlO2JyZWFrO2Nhc2UiPC9zaGVldERhdGE+IjpQdC5lLmM+PTAmJihVZVsiIXJlZiJdPUFhKFB0KSk7YnJlYWs7Y2FzZSI8cm93IjpjYXNlIjxyb3c+Ijp6dC5yP1N0PXBhcnNlSW50KHp0LnIsMTApLTE6U3QrKyxJdD0tMTticmVh''@;'; put 'put ''aztjYXNlIjxjZWxsIjpjYXNlIjxjZWxsPiI6enQucj9JdD1wbyh6dC5yKS5jOisrSXQsUXQudD16dC50fHwibiIsInN0ciI9PVF0LnQmJihRdC50PSJzIik7YnJlYWs7Y2FzZSI8L2NlbGw+IjpQdC5lLnI8U3QmJihQdC5lLnI9U3QpLFB0LmUuYzxJdCYmKFB0LmUuYz1JdCksVWVbUTAoe3I6''@;'; put 'put ''U3QsYzpJdH0pXT1RdCxRdD17fTticmVhaztjYXNlIjx2IjpjYXNlIjx2PiI6YW49Q24ubGVuZ3RoK0x0O2JyZWFrO2Nhc2UiPC92PiI6dmFyIGZuPWdyKEguc2xpY2UoYW4sTHQpKTtRdC52PSJuIj09UXQudD9wYXJzZUZsb2F0KGZuKTpmbjticmVhaztjYXNlIjx2Lz4iOlF0LnY9IiI7YnJl''@;'; put 'put ''YWs7Y2FzZSI8ZGVmaW5lZE5hbWVzPiI6VmU9ITA7YnJlYWs7Y2FzZSI8L2RlZmluZWROYW1lcz4iOlZlPSExO2JyZWFrO2RlZmF1bHQ6aWYoIVZlJiZ4ZS5XVEYpdGhyb3cidW5yZWNvZ25pemVkICIrenRbMF0rIiBpbiBleHRlcm5hbCBsaW5rIn19KSxGZX0oSCxyZSwwLHdlKX0oc24oSCxQ''@;'; put 'put ''MihjaSkpLEhyLGNpLHJlKX1jYXRjaChNaSl7fX0pLEl0PWZ1bmN0aW9uIEZQKEgscmUsWCl7cmV0dXJuIi5iaW4iPT09cmUuc2xpY2UoLTQpP2Z1bmN0aW9uIGVUKEgscmUpe3ZhciBYPXtBcHBWZXJzaW9uOnt9LFdCUHJvcHM6e30sV0JWaWV3OltdLFNoZWV0czpbXSxDYWxjUHI6e30seG1s''@;'; put 'put ''bnM6IiJ9LHdlPVtdLHhlPSExO3JlfHwocmU9e30pLHJlLmJpZmY9MTI7dmFyIEZlPVtdLFplPVtbXV07cmV0dXJuIFplLlNoZWV0TmFtZXM9W10sWmUuWFRJPVtdLFQ2WzE2XT17bjoiQnJ0RlJUQXJjaElEJCIsZjppN30sbTEoSCxmdW5jdGlvbihVZSxTdCxJdCl7c3dpdGNoKEl0KXtjYXNl''@;'; put 'put ''IDE1NjpaZS5TaGVldE5hbWVzLnB1c2goVWUubmFtZSksWC5TaGVldHMucHVzaChVZSk7YnJlYWs7Y2FzZSAxNTM6WC5XQlByb3BzPVVlO2JyZWFrO2Nhc2UgMzk6bnVsbCE9VWUuU2hlZXQmJihyZS5TSUQ9VWUuU2hlZXQpLFVlLlJlZj1mdShVZS5QdGcsbnVsbCxudWxsLFplLHJlKSxkZWxl''@;'; put 'put ''dGUgcmUuU0lELGRlbGV0ZSBVZS5QdGcsRmUucHVzaChVZSk7YnJlYWs7Y2FzZSAxMDM2OmNhc2UgMzYxOmNhc2UgMjA3MTpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDY2NDpjYXNlIDM1MzpjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgNTM0OmNhc2UgNjc3OmNhc2UgMTU3OmNhc2UgNjEwOmNh''@;'; put 'put ''c2UgMjA1MDpjYXNlIDE1NTpjYXNlIDU0ODpjYXNlIDY3NjpjYXNlIDEyODpjYXNlIDY2NTpjYXNlIDIxMjg6Y2FzZSAyMTI1OmNhc2UgNTQ5OmNhc2UgMjA1MzpjYXNlIDU5NjpjYXNlIDIwNzY6Y2FzZSAyMDc1OmNhc2UgMjA4MjpjYXNlIDM5NzpjYXNlIDE1NDpjYXNlIDExMTc6Y2FzZSA1''@;'; put 'put ''NTM6Y2FzZSAyMDkxOmNhc2UgMTY6YnJlYWs7Y2FzZSAzNTc6Y2FzZSAzNTg6Y2FzZSAzNTU6Y2FzZSA2Njc6WmVbMF0ubGVuZ3RoP1plLnB1c2goW0l0LFVlXSk6WmVbMF09W0l0LFVlXSxaZVtaZS5sZW5ndGgtMV0uWFRJPVtdO2JyZWFrO2Nhc2UgMzYyOjA9PT1aZS5sZW5ndGgmJihaZVsw''@;'; put 'put ''XT1bXSxaZVswXS5YVEk9W10pLFplW1plLmxlbmd0aC0xXS5YVEk9WmVbWmUubGVuZ3RoLTFdLlhUSS5jb25jYXQoVWUpLFplLlhUST1aZS5YVEkuY29uY2F0KFVlKTticmVhaztjYXNlIDM1OmNhc2UgMzc6d2UucHVzaChTdCkseGU9ITA7YnJlYWs7Y2FzZSAzNjpjYXNlIDM4OndlLnBvcCgp''@;'; put 'put ''LHhlPSExO2JyZWFrO2RlZmF1bHQ6aWYoISgoU3R8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApJiYhKChTdHx8IiIpLmluZGV4T2YoIkVuZCIpPjApJiYoIXhlfHxyZS5XVEYmJiJCcnRBQ0JlZ2luIiE9d2Vbd2UubGVuZ3RoLTFdJiYiQnJ0RlJUQmVnaW4iIT13ZVt3ZS5sZW5ndGgtMV0pKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitJdCsiICIrU3QpfX0scmUpLE9BKFgpLFguTmFtZXM9RmUsWC5zdXBib29rcz1aZSxYfShILFgpOmZ1bmN0aW9uIFJBKEgscmUpe2lmKCFIKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgZmlsZSIpO3ZhciBYPXtBcHBW''@;'; put 'put ''ZXJzaW9uOnt9LFdCUHJvcHM6e30sV0JWaWV3OltdLFNoZWV0czpbXSxDYWxjUHI6e30sTmFtZXM6W10sRXh0ZXJuOltdLHhtbG5zOiIifSx3ZT0hMSx4ZT0ieG1sbnMiLEZlPXt9LFplPTA7aWYoSC5yZXBsYWNlKEd0LGZ1bmN0aW9uKFVlLFN0KXt2YXIgSXQ9cXQoVWUpO3N3aXRjaChMbihJ''@;'; put 'put ''dFswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPC93b3JrYm9vaz4iOmNhc2UiPGZpbGVWZXJzaW9uLz4iOmNhc2UiPC9maWxlVmVyc2lvbj4iOmNhc2UiPGZpbGVTaGFyaW5nLz4iOmNhc2UiPC93b3JrYm9va1ByPiI6Y2FzZSI8d29ya2Jvb2tQcm90ZWN0aW9uLz4iOmNhc2UiPGJvb2tWaWV3cyI6''@;'; put 'put ''Y2FzZSI8Ym9va1ZpZXdzPiI6Y2FzZSI8L2Jvb2tWaWV3cz4iOmNhc2UiPC93b3JrYm9va1ZpZXc+IjpjYXNlIjxzaGVldHMiOmNhc2UiPHNoZWV0cz4iOmNhc2UiPC9zaGVldHM+IjpjYXNlIjwvc2hlZXQ+IjpjYXNlIjxmdW5jdGlvbkdyb3VwcyI6Y2FzZSI8ZnVuY3Rpb25Hcm91cHMvPiI6''@;'; put 'put ''Y2FzZSI8ZnVuY3Rpb25Hcm91cCI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2VzIjpjYXNlIjwvZXh0ZXJuYWxSZWZlcmVuY2VzPiI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2VzPiI6Y2FzZSI8ZGVmaW5lZE5hbWVzLz4iOmNhc2UiPGRlZmluZWROYW1lLz4iOmNhc2UiPC9jYWxjUHI+IjpjYXNl''@;'; put 'put ''IjxvbGVTaXplIjpjYXNlIjxjdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8L2N1c3RvbVdvcmtib29rVmlld3M+IjpjYXNlIjxjdXN0b21Xb3JrYm9va1ZpZXdzIjpjYXNlIjxjdXN0b21Xb3JrYm9va1ZpZXciOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXc+IjpjYXNlIjxwaXZvdENhY2hl''@;'; put 'put ''cz4iOmNhc2UiPC9waXZvdENhY2hlcz4iOmNhc2UiPHBpdm90Q2FjaGVzIjpjYXNlIjxwaXZvdENhY2hlIjpjYXNlIjxzbWFydFRhZ1ByIjpjYXNlIjxzbWFydFRhZ1ByLz4iOmNhc2UiPHNtYXJ0VGFnVHlwZXMiOmNhc2UiPHNtYXJ0VGFnVHlwZXM+IjpjYXNlIjwvc21hcnRUYWdUeXBlcz4i''@;'; put 'put ''OmNhc2UiPHNtYXJ0VGFnVHlwZSI6Y2FzZSI8d2ViUHVibGlzaGluZyI6Y2FzZSI8d2ViUHVibGlzaGluZy8+IjpjYXNlIjxmaWxlUmVjb3ZlcnlQciI6Y2FzZSI8ZmlsZVJlY292ZXJ5UHIvPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHM+IjpjYXNlIjx3ZWJQdWJsaXNoT2JqZWN0cyI6Y2Fz''@;'; put 'put ''ZSI8L3dlYlB1Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdCI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmNhc2UiPEFyY2hJRCI6Y2FzZSI8cmV2aXNpb25QdHIiOmJyZWFrO2Nhc2UiPHdvcmtib29rIjpV''@;'; put 'put ''ZS5tYXRjaChZXykmJih4ZT0ieG1sbnMiK1VlLm1hdGNoKC88KFx3Kyk6LylbMV0pLFgueG1sbnM9SXRbeGVdO2JyZWFrO2Nhc2UiPGZpbGVWZXJzaW9uIjpkZWxldGUgSXRbMF0sWC5BcHBWZXJzaW9uPUl0O2JyZWFrO2Nhc2UiPGZpbGVTaGFyaW5nIjpYLk1vZGlmeT17dXNlcjpJdC51c2Vy''@;'; put 'put ''TmFtZSx3YXJuOkJpKEl0LnJlYWRPbmx5UmVjb21tZW5kZWR8fCJmYWxzZSIpfSwoSXQuYWxnb3JpdGhtTmFtZXx8SXQuaGFzaFZhbHVlfHxJdC5zYWx0VmFsdWV8fEl0LnNwaW5Db3VudCkmJihYLk1vZGlmeS5lbmNyeXB0aW9uPXthbGdvOkl0LmFsZ29yaXRobU5hbWUsaGFzaDpJdC5oYXNo''@;'; put 'put ''VmFsdWUsc2FsdDpJdC5zYWx0VmFsdWUsc3BpbjorSXQuc3BpbkNvdW50fHwxZTV9KTticmVhaztjYXNlIjx3b3JrYm9va1ByIjpjYXNlIjx3b3JrYm9va1ByLz4iOkxBLmZvckVhY2goZnVuY3Rpb24oUXQpe2lmKG51bGwhPUl0W1F0WzBdXSlzd2l0Y2goUXRbMl0pe2Nhc2UiYm9vbCI6WC5X''@;'; put 'put ''QlByb3BzW1F0WzBdXT1CaShJdFtRdFswXV0pO2JyZWFrO2Nhc2UiaW50IjpYLldCUHJvcHNbUXRbMF1dPXBhcnNlSW50KEl0W1F0WzBdXSwxMCk7YnJlYWs7ZGVmYXVsdDpYLldCUHJvcHNbUXRbMF1dPUl0W1F0WzBdXX19KSxJdC5jb2RlTmFtZSYmKFguV0JQcm9wcy5Db2RlTmFtZT1qMChJ''@;'; put 'put ''dC5jb2RlTmFtZSkpO2JyZWFrO2Nhc2UiPHdvcmtib29rUHJvdGVjdGlvbiI6dmFyIFB0PVguUHJvdGVjdGlvbnx8e307UHQubG9ja1N0cnVjdHVyZT1CaShJdC5sb2NrU3RydWN0dXJlfHwiZmFsc2UiKSxQdC5sb2NrV2luZG93cz1CaShJdC5sb2NrV2luZG93c3x8ImZhbHNlIiksSXQud29y''@;'; put 'put ''a2Jvb2tBbGdvcml0aG1OYW1lJiYoUHQuZW5jcnlwdGlvbj17YWxnbzpJdC53b3JrYm9va0FsZ29yaXRobU5hbWUsaGFzaDpJdC53b3JrYm9va0hhc2hWYWx1ZSxzYWx0Okl0Lndvcmtib29rU2FsdFZhbHVlLHNwaW46K0l0Lndvcmtib29rU3BpbkNvdW50fHwxZTV9KSxYLlByb3RlY3Rpb249''@;'; put 'put ''UHQ7YnJlYWs7Y2FzZSI8d29ya2Jvb2tWaWV3IjpjYXNlIjx3b3JrYm9va1ZpZXcvPiI6ZGVsZXRlIEl0WzBdLFguV0JWaWV3LnB1c2goSXQpO2JyZWFrO2Nhc2UiPHNoZWV0Ijpzd2l0Y2goSXQuc3RhdGUpe2Nhc2UiaGlkZGVuIjpJdC5IaWRkZW49MTticmVhaztjYXNlInZlcnlIaWRkZW4i''@;'; put 'put ''Okl0LkhpZGRlbj0yO2JyZWFrO2RlZmF1bHQ6SXQuSGlkZGVuPTB9ZGVsZXRlIEl0LnN0YXRlLEl0Lm5hbWU9Z3IoajAoSXQubmFtZSkpLGRlbGV0ZSBJdFswXSxYLlNoZWV0cy5wdXNoKEl0KTticmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZSI6WC5FeHRlcm4ucHVzaChJdC5pZCk7YnJl''@;'; put 'put ''YWs7Y2FzZSI8ZGVmaW5lZE5hbWVzPiI6Y2FzZSI8ZGVmaW5lZE5hbWVzIjpjYXNlIjxleHQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQ+Ijp3ZT0hMDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWVzPiI6Y2FzZSI8L2V4dD4iOmNhc2UiPC9BbHRlcm5h''@;'; put 'put ''dGVDb250ZW50PiI6d2U9ITE7YnJlYWs7Y2FzZSI8ZGVmaW5lZE5hbWUiOihGZT17fSkuTmFtZT1qMChJdC5uYW1lKSxJdC5jb21tZW50JiYoRmUuQ29tbWVudD1JdC5jb21tZW50KSxJdC5sb2NhbFNoZWV0SWQmJihGZS5TaGVldD0rSXQubG9jYWxTaGVldElkKSxCaShJdC5oaWRkZW58fCIw''@;'; put 'put ''IikmJihGZS5IaWRkZW49ITApLFplPVN0K1VlLmxlbmd0aDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWU+IjpGZS5SZWY9Z3IoajAoSC5zbGljZShaZSxTdCkpKSxYLk5hbWVzLnB1c2goRmUpO2JyZWFrO2Nhc2UiPGNhbGNQciI6Y2FzZSI8Y2FsY1ByLz4iOmRlbGV0ZSBJdFswXSxYLkNhbGNQ''@;'; put 'put ''cj1JdDticmVhaztkZWZhdWx0OmlmKCF3ZSYmcmUuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrSXRbMF0rIiBpbiB3b3JrYm9vayIpfXJldHVybiBVZX0pLC0xPT09VzAubWFpbi5pbmRleE9mKFgueG1sbnMpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6''@;'; put 'put ''ICIrWC54bWxucyk7cmV0dXJuIE9BKFgpLFh9KEgsWCl9KHNuKEgsUDIod2Uud29ya2Jvb2tzWzBdKSksd2Uud29ya2Jvb2tzWzBdLHJlKSxQdD17fSxRdD0iIjt3ZS5jb3JlcHJvcHMubGVuZ3RoJiYoKFF0PXNuKEgsUDIod2UuY29yZXByb3BzWzBdKSwhMCkpJiYoUHQ9SzIoUXQpKSwwIT09''@;'; put 'put ''d2UuZXh0cHJvcHMubGVuZ3RoJiYoUXQ9c24oSCxQMih3ZS5leHRwcm9wc1swXSksITApKSYmZnVuY3Rpb24gZGIoSCxyZSxYKXt2YXIgd2U9e307cmV8fChyZT17fSksSD1qMChIKSxfMi5mb3JFYWNoKGZ1bmN0aW9uKHhlKXt2YXIgRmU9KEgubWF0Y2goSmkoeGVbMF0pKXx8W10pWzFdO3N3''@;'; put 'put ''aXRjaCh4ZVsyXSl7Y2FzZSJzdHJpbmciOkZlJiYocmVbeGVbMV1dPWdyKEZlKSk7YnJlYWs7Y2FzZSJib29sIjpyZVt4ZVsxXV09InRydWUiPT09RmU7YnJlYWs7Y2FzZSJyYXciOnZhciBaZT1ILm1hdGNoKG5ldyBSZWdFeHAoIjwiK3hlWzBdKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIreGVb''@;'; put 'put ''MF0rIj4iKSk7WmUmJlplLmxlbmd0aD4wJiYod2VbeGVbMV1dPVplWzFdKX19KSx3ZS5IZWFkaW5nUGFpcnMmJndlLlRpdGxlc09mUGFydHMmJk1zKHdlLkhlYWRpbmdQYWlycyx3ZS5UaXRsZXNPZlBhcnRzLHJlLFgpfShRdCxQdCxyZSkpO3ZhciBhbj17fTsoIXJlLmJvb2tTaGVldHN8fHJl''@;'; put 'put ''LmJvb2tQcm9wcykmJjAhPT13ZS5jdXN0cHJvcHMubGVuZ3RoJiYoUXQ9VW4oSCxQMih3ZS5jdXN0cHJvcHNbMF0pLCEwKSkmJihhbj1mdW5jdGlvbiB3OShILHJlKXt2YXIgWD17fSx3ZT0iIix4ZT1ILm1hdGNoKHk5KTtpZih4ZSlmb3IodmFyIEZlPTA7RmUhPXhlLmxlbmd0aDsrK0ZlKXt2''@;'; put 'put ''YXIgWmU9eGVbRmVdLFZlPXF0KFplKTtzd2l0Y2goVmVbMF0pe2Nhc2UiPD94bWwiOmNhc2UiPFByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiPHByb3BlcnR5Ijp3ZT1ncihWZS5uYW1lKTticmVhaztjYXNlIjwvcHJvcGVydHk+Ijp3ZT1udWxsO2JyZWFrO2RlZmF1bHQ6aWYoMD09PVplLmluZGV4''@;'; put 'put ''T2YoIjx2dDoiKSl7dmFyIFVlPVplLnNwbGl0KCI+IiksU3Q9VWVbMF0uc2xpY2UoNCksSXQ9VWVbMV07c3dpdGNoKFN0KXtjYXNlImxwc3RyIjpjYXNlImJzdHIiOmNhc2UibHB3c3RyIjpjYXNlImN5IjpjYXNlImVycm9yIjpYW3dlXT1ncihJdCk7YnJlYWs7Y2FzZSJib29sIjpYW3dlXT1C''@;'; put 'put ''aShJdCk7YnJlYWs7Y2FzZSJpMSI6Y2FzZSJpMiI6Y2FzZSJpNCI6Y2FzZSJpOCI6Y2FzZSJpbnQiOmNhc2UidWludCI6WFt3ZV09cGFyc2VJbnQoSXQsMTApO2JyZWFrO2Nhc2UicjQiOmNhc2UicjgiOmNhc2UiZGVjaW1hbCI6WFt3ZV09cGFyc2VGbG9hdChJdCk7YnJlYWs7Y2FzZSJmaWxl''@;'; put 'put ''dGltZSI6Y2FzZSJkYXRlIjpYW3dlXT1wbihJdCk7YnJlYWs7ZGVmYXVsdDppZigiLyI9PVN0LnNsaWNlKC0xKSlicmVhaztyZS5XVEYmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKCJVbmV4cGVjdGVkIixaZSxTdCxVZSl9fWVsc2UgaWYoIjwvIiE9PVplLnNs''@;'; put 'put ''aWNlKDAsMikmJnJlLldURil0aHJvdyBuZXcgRXJyb3IoWmUpfX1yZXR1cm4gWH0oUXQscmUpKTt2YXIgQ249e307aWYoKHJlLmJvb2tTaGVldHN8fHJlLmJvb2tQcm9wcykmJihJdC5TaGVldHM/RmU9SXQuU2hlZXRzLm1hcChmdW5jdGlvbihIcil7cmV0dXJuIEhyLm5hbWV9KTpQdC5Xb3Jr''@;'; put 'put ''c2hlZXRzJiZQdC5TaGVldE5hbWVzLmxlbmd0aD4wJiYoRmU9UHQuU2hlZXROYW1lcykscmUuYm9va1Byb3BzJiYoQ24uUHJvcHM9UHQsQ24uQ3VzdHByb3BzPWFuKSxyZS5ib29rU2hlZXRzJiZ2b2lkIDAhPT1GZSYmKENuLlNoZWV0TmFtZXM9RmUpLHJlLmJvb2tTaGVldHM/Q24uU2hlZXRO''@;'; put 'put ''YW1lczpyZS5ib29rUHJvcHMpKXJldHVybiBDbjtGZT17fTt2YXIgTHQ9e307cmUuYm9va0RlcHMmJndlLmNhbGNjaGFpbiYmKEx0PWZ1bmN0aW9uIGxUKEgscmUsWCl7cmV0dXJuIi5iaW4iPT09cmUuc2xpY2UoLTQpP2Z1bmN0aW9uIGtCKEgscmUsWCl7dmFyIHdlPVtdO3JldHVybiBtMShI''@;'; put 'put ''LGZ1bmN0aW9uKFplLFZlLFVlKXtpZig2Mz09PVVlKXdlLnB1c2goWmUpO2Vsc2UgaWYoISgoVmV8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjB8fChWZXx8IiIpLmluZGV4T2YoIkVuZCIpPjApKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitVZSsiICIrVmUpfSksd2V9KEgp''@;'; put 'put ''OmZ1bmN0aW9uIE1tKEgpe3ZhciByZT1bXTtpZighSClyZXR1cm4gcmU7dmFyIFg9MTtyZXR1cm4oSC5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXt2YXIgeGU9cXQod2UpO3N3aXRjaCh4ZVswXSl7Y2FzZSI8P3htbCI6Y2FzZSI8Y2FsY0NoYWluIjpjYXNlIjxjYWxjQ2hh''@;'; put 'put ''aW4+IjpjYXNlIjwvY2FsY0NoYWluPiI6YnJlYWs7Y2FzZSI8YyI6ZGVsZXRlIHhlWzBdLHhlLmk/WD14ZS5pOnhlLmk9WCxyZS5wdXNoKHhlKX19KSxyZX0oSCl9KHNuKEgsUDIod2UuY2FsY2NoYWluKSksd2UuY2FsY2NoYWluKSk7dmFyIEluLFJuLHp0PTAsZm49e30sVm49SXQuU2hlZXRz''@;'; put 'put ''O1B0LldvcmtzaGVldHM9Vm4ubGVuZ3RoLFB0LlNoZWV0TmFtZXM9W107Zm9yKHZhciBJcj0wO0lyIT1Wbi5sZW5ndGg7KytJcilQdC5TaGVldE5hbWVzW0lyXT1WbltJcl0ubmFtZTt2YXIgaWk9eGU/ImJpbiI6InhtbCIseXI9d2Uud29ya2Jvb2tzWzBdLmxhc3RJbmRleE9mKCIvIiksb2k9''@;'; put 'put ''KHdlLndvcmtib29rc1swXS5zbGljZSgwLHlyKzEpKyJfcmVscy8iK3dlLndvcmtib29rc1swXS5zbGljZSh5cisxKSsiLnJlbHMiKS5yZXBsYWNlKC9eXC8vLCIiKTtLbihILG9pKXx8KG9pPSJ4bC9fcmVscy93b3JrYm9vay4iK2lpKyIucmVscyIpO3ZhciBNcj1YdChVbihILG9pLCEwKSxv''@;'; put 'put ''aSksV3I9TXIsYWk9W107TXImJihJdCYmSXQuRXh0ZXJuJiZJdC5FeHRlcm4ubGVuZ3RoJiZJdC5FeHRlcm4uZm9yRWFjaChmdW5jdGlvbihjaSxIcil7dmFyIFowPSgiL3hsLyIrTXJbIiFpZCJdW2NpXS5UYXJnZXQpLnJlcGxhY2UoL1tcL11bXC9dL2csIi8iKSxuMD13ZS5saW5rcy5pbmRl''@;'; put 'put ''eE9mKFowKTtuMD4tMSYmKGFpW0hyXT1TdFtuMF0pfSksSXQmJmRlbGV0ZSBJdC5FeHRlcm4pLE1yJiYoTXI9ZnVuY3Rpb24gVHMoSCxyZSl7aWYoIUgpcmV0dXJuIDA7dHJ5e0g9cmUubWFwKGZ1bmN0aW9uKHdlKXtyZXR1cm4gd2UuaWR8fCh3ZS5pZD13ZS5zdHJSZWxJRCksW3dlLm5hbWUs''@;'; put 'put ''SFsiIWlkIl1bd2UuaWRdLlRhcmdldCxGcyhIWyIhaWQiXVt3ZS5pZF0uVHlwZSldfSl9Y2F0Y2goWCl7cmV0dXJuIG51bGx9cmV0dXJuIEgmJjAhPT1ILmxlbmd0aD9IOm51bGx9KE1yLEl0LlNoZWV0cykpO3ZhciBuaT1LbihILCJ4bC93b3Jrc2hlZXRzL3NoZWV0LnhtbCIpPzE6MCxmcj1b''@;'; put 'put ''XSxoaT1bXTtlOmZvcih6dD0wO3p0IT1QdC5Xb3Jrc2hlZXRzOysrenQpe3ZhciB3MD0ic2hlZXQiO2lmKE1yJiZNclt6dF0/KEluPSJ4bC8iK01yW3p0XVsxXS5yZXBsYWNlKC9bXC9dP3hsXC8vLCIiKSxLbihILEluKXx8KEluPU1yW3p0XVsxXSksS24oSCxJbil8fChJbj1vaS5yZXBsYWNl''@;'; put 'put ''KC9fcmVsc1wvLiokLywiIikrTXJbenRdWzFdKSx3MD1Nclt6dF1bMl0pOkluPShJbj0ieGwvd29ya3NoZWV0cy9zaGVldCIrKHp0KzEtbmkpKyIuIitpaSkucmVwbGFjZSgvc2hlZXQwXC4vLCJzaGVldC4iKSxSbj1Jbi5yZXBsYWNlKC9eKC4qKShcLykoW15cL10qKSQvLCIkMS9fcmVscy8k''@;'; put 'put ''My5yZWxzIiksZnIucHVzaChJbikscmUmJm51bGwhPXJlLnNoZWV0cylzd2l0Y2godHlwZW9mIHJlLnNoZWV0cyl7Y2FzZSJudW1iZXIiOmlmKHp0IT1yZS5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoUHQuU2hlZXROYW1lc1t6dF0udG9Mb3dlckNhc2UoKSE9cmUu''@;'; put 'put ''c2hlZXRzLnRvTG93ZXJDYXNlKCkpY29udGludWUgZTticmVhaztkZWZhdWx0OmlmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkocmUuc2hlZXRzKSl7Zm9yKHZhciBKMD0wLGlvPTA7aW8hPXJlLnNoZWV0cy5sZW5ndGg7KytpbykibnVtYmVyIj09dHlwZW9mIHJlLnNoZWV0c1tpb10m''@;'; put 'put ''JnJlLnNoZWV0c1tpb109PXp0JiYoSjA9MSksInN0cmluZyI9PXR5cGVvZiByZS5zaGVldHNbaW9dJiZyZS5zaGVldHNbaW9dLnRvTG93ZXJDYXNlKCk9PVB0LlNoZWV0TmFtZXNbenRdLnRvTG93ZXJDYXNlKCkmJihKMD0xKTtpZighSjApY29udGludWUgZX19aWYoIXJlLnNraXBQYXJzZSl7''@;'; put 'put ''dmFyIGIwPUs0KEgsSW4sUm4sUHQuU2hlZXROYW1lc1t6dF0senQsZm4sRmUsdzAscmUsSXQsVmUsVWUpO2IwJiZiMFsiIUxEUCJdJiYoaGlbenRdPWIwWyIhTERQIl0sZGVsZXRlIGIwWyIhTERQIl0pfX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIHBhcnNlX3NoZWV0X3Bpdm90KWZvcih6dD0w''@;'; put 'put ''O3p0PGQ1Lmxlbmd0aDsrK3p0KXBhcnNlX3NoZWV0X3Bpdm90LmFwcGx5KG51bGwsZDVbenRdKTtpZihDbj17RGlyZWN0b3J5OndlLFdvcmtib29rOkl0LFByb3BzOlB0LEN1c3Rwcm9wczphbixEZXBzOkx0LFNoZWV0czpGZSxTaGVldE5hbWVzOlB0LlNoZWV0TmFtZXMsU3RyaW5nczpNZCxT''@;'; put 'put ''dHlsZXM6VWUsVGhlbWVzOlZlLFNTRjpGLmdldF90YWJsZSgpfSwhcmUuc2tpcFBhcnNlKXtpZihmdW5jdGlvbiBKOShIKXshSHx8IUguV29ya2Jvb2t8fCFILldvcmtib29rLk5hbWVzfHxILldvcmtib29rLk5hbWVzLmZvckVhY2goZnVuY3Rpb24ocmUpe2lmKHJlLk5hbWUmJiJfeGxubS4i''@;'; put 'put ''PT1yZS5OYW1lLnNsaWNlKDAsNikmJigiX3hsbm0uUHJpbnRfQXJlYSI9PXJlLk5hbWV8fCJfeGxubS5QcmludF9UaXRsZXMiPT1yZS5OYW1lKSl7dmFyIFg9SC5TaGVldHNbSC5TaGVldE5hbWVzW3JlLlNoZWV0XV07aWYoWCl7WFsiIXByaW50Il18fChYWyIhcHJpbnQiXT17fSksWFsiIXBy''@;'; put 'put ''aW50Il0ucHJvcHN8fChYWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIHdlPVhbIiFwcmludCJdLHhlPXJlLlJlZjtpZigiX3hsbm0uUHJpbnRfQXJlYSI9PXJlLk5hbWUpe3hlLmluZGV4T2YoIiEiKT4tMSYmKHhlPXhlLnNsaWNlKHhlLmluZGV4T2YoIiEiKSsxKSk7dmFyIEZlPWVhKHhlPXhl''@;'; put 'put ''LnJlcGxhY2UoL1skXS9nLCIiKSk7d2UuYXJlYT1GZX1lbHNlIl94bG5tLlByaW50X1RpdGxlcyI9PXJlLk5hbWUmJih3ZS50aXRsZXM9e3M6e3I6LTEsYzotMX0sZTp7cjotMSxjOi0xfX0seGUuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKFplKXt2YXIgVWU9bnMoWmUuc2xpY2UoWmUu''@;'; put 'put ''aW5kZXhPZigiISIpKzEpLnJlcGxhY2UoL1skXS9nLCIiKSk7VWUucy5jPi0xJiYod2UudGl0bGVzLnMuYz1VZS5zLmMpLFVlLmUuYz4tMSYmKHdlLnRpdGxlcy5lLmM9VWUuZS5jKSxVZS5zLnI+LTEmJih3ZS50aXRsZXMucy5yPVVlLnMuciksVWUuZS5yPi0xJiYod2UudGl0bGVzLmUucj1V''@;'; put 'put ''ZS5lLnIpfSkpfX19KX0oQ24pLHJlJiZyZS5ib29rRmlsZXMmJihDbi5rZXlzPVgsQ24uZmlsZXM9SC5maWxlcykscmUmJnJlLmJvb2tWQkEmJih3ZS52YmEubGVuZ3RoPjA/Q24udmJhcmF3PXNuKEgsUDIod2UudmJhWzBdKSwhMCk6d2UuZGVmYXVsdHMmJiJhcHBsaWNhdGlvbi92bmQubXMt''@;'; put 'put ''b2ZmaWNlLnZiYVByb2plY3QiPT09d2UuZGVmYXVsdHMuYmluJiYoQ24udmJhcmF3PXNuKEgsInhsL3ZiYVByb2plY3QuYmluIiwhMCkpKSxXciYmV3JbIiFpZCJdKXtmb3IodmFyIGJpPVtdLHpyPTE7enI8PTEwMjQ7Kyt6cikhV3JbIiFpZCJdWyJySWQiK3pyXXx8IVdyWyIhaWQiXVsicklk''@;'; put 'put ''Iit6cl0uVHlwZXx8L2N1c3RvbVhtbCQvLnRlc3QoV3JbIiFpZCJdWyJySWQiK3pyXS5UeXBlKSYmYmkucHVzaCh1bihXclsiIWlkIl1bInJJZCIrenJdLlRhcmdldCx3ZS53b3JrYm9va3NbMF0pKTtiaS5sZW5ndGg+MCYmKENuLkN1c3RvbVhNTD1bXSxiaS5mb3JFYWNoKGZ1bmN0aW9uKGNp''@;'; put 'put ''KXt2YXIgSHI9e2RhdGE6VW4oSCxQMihjaSkpfSxNaT1EdChjaSk7dHJ5e3ZhciBaMD1YdChVbihILFAyKE1pKSwhMCksTWkpO2lmKFowKWZvcih2YXIgbjA9MTtuMDw9MTAyNDsrK24wKSFaMFsiIWlkIl1bInJJZCIrbjBdfHwhWjBbIiFpZCJdWyJySWQiK24wXS5UeXBlfHwvY3VzdG9tWG1s''@;'; put 'put ''UHJvcHMkLy50ZXN0KFowWyIhaWQiXVsicklkIituMF0uVHlwZSkmJihIci5wcm9wcz1VbihILFAyKHVuKFowWyIhaWQiXVsicklkIituMF0uVGFyZ2V0LGNpKSkpKX1jYXRjaChmbyl7fUNuLkN1c3RvbVhNTC5wdXNoKEhyKX0pKX12YXIgRGk9X24oSCwieGwvbW9kZWwvaXRlbS5kYXRhIiwh''@;'; put 'put ''MCk7RGkmJihDbi5tb2RlbD1EaSksd2UuY29ubiYmKENuLmNvbm49c24oSCxQMih3ZS5jb25uKSwhMCkpLGFpLmxlbmd0aCYmKENuLkV4dGVybmFsV0I9YWkpLEl0JiYoSXQuUFBJPW42KX1yZXR1cm4gcmUudGVtcGxhdGUmJihDbi5fd3NwYXRocz1mcixDbi5fc3R5cGF0aD1QMih3ZS5zdHls''@;'; put 'put ''ZXx8IiIpLENuLl93YnBhdGg9UDIod2Uud29ya2Jvb2tzWzBdfHwieGwvd29ya2Jvb2sueG1sIiksQ24uX3ZtbHBhdGhzPWhpLENuLl93YnJlbHNwYXRoPW9pLENuLl9jdD1VbihILCJbQ29udGVudF9UeXBlc10ueG1sIiksQ24uZmlsZXM9SC5maWxlcyksQ259ZnVuY3Rpb24gUjMoSCxyZSl7''@;'; put 'put ''dmFyIFg9cmV8fHt9O1gucGFzc3dvcmR8fChYLnBhc3N3b3JkPSJWZWx2ZXRTd2VhdHNob3AiKTt2YXIgd2U9Ildvcmtib29rIix4ZT1wdC5maW5kKEgsd2UpO3RyeXtpZighKHhlPXB0LmZpbmQoSCx3ZT0iLyFEYXRhU3BhY2VzL1ZlcnNpb24iKSl8fCF4ZS5jb250ZW50KXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3dlKTtpZihmdW5jdGlvbiBDMyhIKXt2YXIgcmU9e307cmUuaWQ9SC5yZWFkX3NoaWZ0KDAsImxwcDQiKSxyZS5SPV8zKEgsNCkscmUuVT1fMyhILDQpLHJlLlc9XzMoSCw0KX0oeGUuY29udGVudCksISh4ZT1wdC5maW5k''@;'; put 'put ''KEgsd2U9Ii8hRGF0YVNwYWNlcy9EYXRhU3BhY2VNYXAiKSl8fCF4ZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3dlKTt2YXIgRmU9ZnVuY3Rpb24gdkUoSCl7dmFyIHJlPVtdO0gubCs9NDtmb3IodmFyIFg9SC5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpO1gtLSA+MDspcmUucHVzaChwbShIKSk7cmV0dXJuIHJlfSh4ZS5jb250ZW50KTtpZigxIT09RmUubGVuZ3RofHwxIT09RmVbMF0uY29tcHMubGVuZ3RofHwwIT09RmVbMF0uY29tcHNbMF0udHx8IlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UiIT09RmVbMF0ubmFtZXx8IkVuY3J5cHRl''@;'; put 'put ''ZFBhY2thZ2UiIT09RmVbMF0uY29tcHNbMF0udil0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCAiK3dlKTtpZighKHhlPXB0LmZpbmQoSCx3ZT0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZUluZm8vU3Ryb25nRW5jcnlwdGlvbkRhdGFTcGFjZSIpKXx8IXhlLmNv''@;'; put 'put ''bnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrd2UpO3ZhciBaZT1mdW5jdGlvbiBBRShIKXt2YXIgcmU9W107SC5sKz00O2Zvcih2YXIgWD1ILnJlYWRfc2hpZnQoNCk7WC0tID4wOylyZS5wdXNoKEgucmVhZF9zaGlmdCgwLCJscHA0Iikp''@;'; put 'put ''O3JldHVybiByZX0oeGUuY29udGVudCk7aWYoMSE9WmUubGVuZ3RofHwiU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIhPVplWzBdKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgYmFkICIrd2UpO2lmKCEoeGU9cHQuZmluZChILHdlPSIvIURhdGFTcGFjZXMvVHJh''@;'; put 'put ''bnNmb3JtSW5mby9TdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5IikpfHwheGUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit3ZSk7IWZ1bmN0aW9uIHdHKEgpe3ZhciByZT1mdW5jdGlvbiB5RShIKXt2YXIgcmU9e307''@;'; put 'put ''cmV0dXJuIEgucmVhZF9zaGlmdCg0KSxILmwrPTQscmUuaWQ9SC5yZWFkX3NoaWZ0KDAsImxwcDQiKSxyZS5uYW1lPUgucmVhZF9zaGlmdCgwLCJscHA0IikscmUuUj1fMyhILDQpLHJlLlU9XzMoSCw0KSxyZS5XPV8zKEgsNCkscmV9KEgpO2lmKHJlLmVuYW1lPUgucmVhZF9zaGlmdCgwLCI4''@;'; put 'put ''bHBwNCIpLHJlLmJsa3N6PUgucmVhZF9zaGlmdCg0KSxyZS5jbW9kZT1ILnJlYWRfc2hpZnQoNCksNCE9SC5yZWFkX3NoaWZ0KDQpKXRocm93IG5ldyBFcnJvcigiQmFkICFQcmltYXJ5IHJlY29yZCIpO3JldHVybiByZX0oeGUuY29udGVudCl9Y2F0Y2goVWUpe31pZighKHhlPXB0LmZpbmQo''@;'; put 'put ''SCx3ZT0iL0VuY3J5cHRpb25JbmZvIikpfHwheGUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit3ZSk7dmFyIFZlPWZ1bmN0aW9uIFRiKEgpe3ZhciByZT1fMyhIKTtzd2l0Y2gocmUuTWlub3Ipe2Nhc2UgMjpyZXR1cm5bcmUuTWlu''@;'; put 'put ''b3IsSWIoSCldO2Nhc2UgMzpyZXR1cm5bcmUuTWlub3IsRGIoKV07Y2FzZSA0OnJldHVybltyZS5NaW5vcixiRyhIKV19dGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSB1bnJlY29nbml6ZWQgVmVyc2lvbjogIityZS5NaW5vcil9KHhlLmNvbnRlbnQpO2lmKCEoeGU9''@;'; put 'put ''cHQuZmluZChILHdlPSIvRW5jcnlwdGVkUGFja2FnZSIpKXx8IXhlLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrd2UpO2lmKDQ9PVZlWzBdJiZ2b2lkIDAhPT1GbylyZXR1cm4gRm8oVmVbMV0seGUuY29udGVudCxYLnBhc3N3b3Jk''@;'; put 'put ''fHwiIixYKTtpZigyPT1WZVswXSYmdm9pZCAwIT09TWMpcmV0dXJuIE1jKFZlWzFdLHhlLmNvbnRlbnQsWC5wYXNzd29yZHx8IiIsWCk7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpfWZ1bmN0aW9uIE9kKEgscmUpe2lmKCFyZS50ZW1wbGF0ZSl7aWYoIm9k''@;'; put 'put ''cyI9PXJlLmJvb2tUeXBlKXJldHVybiBXQShILHJlKTtNaChyZSYmcmUuUFBJfHw5NiksSCYmIUguU1NGJiYoSC5TU0Y9Ri5nZXRfdGFibGUoKSksSCYmSC5TU0YmJih5ZShGKSxGLmxvYWRfdGFibGUoSC5TU0YpLHJlLnJldnNzZj1xZShILlNTRikscmUucmV2c3NmW0guU1NGWzY1NTM1XV09''@;'; put 'put ''MCxyZS5zc2Y9SC5TU0YpLEguU3R5bGVzPXtGb250czpyZS5Gb250cz1be3N6OjEyLGNvbG9yOnt0aGVtZToxLHJnYjoiMDAwMDAwIn0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9XSxGaWxsczpyZS5GaWxscz1be3BhdHRlcm5UeXBlOiJub25lIn0se3BhdHRlcm5U''@;'; put 'put ''eXBlOiJncmF5MTI1In1dLEJvcmRlcnM6cmUuQm9yZGVycz1be31dLERYRjpyZS5EWEY9SC5TdHlsZXMmJkguU3R5bGVzLkRYRnx8W10sVGFibGU6cmUuVGFibGU9SC5TdHlsZXMmJkguU3R5bGVzLlRhYmxlfHxbXX0scmUub3ZlcnJpZGVNRFc/dDE9cmUub3ZlcnJpZGVNRFc6cjYocmUuRm9u''@;'; put 'put ''dHNbMF0pLHJlLnJlbHM9e30scmUud2JyZWxzPXt9LHJlLlN0cmluZ3M9W10scmUuU3RyaW5ncy5Db3VudD0wLHJlLlN0cmluZ3MuVW5pcXVlPTAsSWg/cmUucmV2U3RyaW5ncz1uZXcgTWFwOihyZS5yZXZTdHJpbmdzPXt9LHJlLnJldlN0cmluZ3MuZm9vPVtdLGRlbGV0ZSByZS5yZXZTdHJp''@;'; put 'put ''bmdzLmZvbyk7dmFyIFg9Inhsc2IiPT1yZS5ib29rVHlwZT8iYmluIjoieG1sIix3ZT14Qi5pbmRleE9mKHJlLmJvb2tUeXBlKT4tMSx4ZT17d29ya2Jvb2tzOltdLHNoZWV0czpbXSxjaGFydHM6W10sZGlhbG9nczpbXSxtYWNyb3M6W10scmVsczpbXSxzdHJzOltdLGNvbW1lbnRzOltdLGxp''@;'; put 'put ''bmtzOltdLGNvcmVwcm9wczpbXSxleHRwcm9wczpbXSxjdXN0cHJvcHM6W10sdGhlbWVzOltdLHN0eWxlczpbXSxjYWxjY2hhaW5zOltdLHZiYTpbXSxkcmF3aW5nczpbXSxwaXZvdHM6W10scGl2b3RjYWNoZXM6W10scGl2b3RyZWNvcmRzOltdLGRhdGFtb2RlbHM6W10sY2hhcnRvYmpzOltd''@;'; put 'put ''LGNoYXJ0c3R5bGVzOltdLGNoYXJ0Y29sb3JzOltdLGNoYXJ0ZXhzOltdLHRhYmxlczpbXSxjb25uczpbXSxjdHJscHJvcHM6W10sY3VzdG9teG1scHJvcHM6W10sVE9ETzpbXSx4bWxuczoiIn07TzMocmU9cmV8fHt9KTt2YXIgRmU9U3IoKSxaZT0iIixWZT0wO2lmKHJlLmNlbGxYZnM9W10s''@;'; put 'put ''cmUuY2VsbFN0eWxlWGZzPVt7bmFtZToiTm9ybWFsIn1dLHJjKHJlLmNlbGxYZnMscmUuY2VsbFN0eWxlWGZzLHt9LHtyZXZzc2Y6e0dlbmVyYWw6MH19KSxILlByb3BzfHwoSC5Qcm9wcz17fSksR24oRmUsWmU9ImRvY1Byb3BzL2NvcmUueG1sIixmdW5jdGlvbiBSMihILHJlKXt2YXIgWD1y''@;'; put 'put ''ZXx8e30sd2U9W2NuLE1uXSx4ZT17fTtpZighSCYmIVguUHJvcHMpcmV0dXJuIHdlLmpvaW4oIiIpO0gmJihudWxsIT1ILkNyZWF0ZWREYXRlJiZ4bigiZGN0ZXJtczpjcmVhdGVkIiwic3RyaW5nIj09dHlwZW9mIEguQ3JlYXRlZERhdGU/SC5DcmVhdGVkRGF0ZTpxMChILkNyZWF0ZWREYXRl''@;'; put 'put ''LFguV1RGKSx7InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSx3ZSx4ZSksbnVsbCE9SC5Nb2RpZmllZERhdGUmJnhuKCJkY3Rlcm1zOm1vZGlmaWVkIiwic3RyaW5nIj09dHlwZW9mIEguTW9kaWZpZWREYXRlP0guTW9kaWZpZWREYXRlOnEwKEguTW9kaWZpZWREYXRlLFguV1RGKSx7Inhz''@;'; put 'put ''aTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSx3ZSx4ZSkpO2Zvcih2YXIgRmU9MDtGZSE9b2UubGVuZ3RoOysrRmUpe3ZhciBaZT1vZVtGZV0sVmU9WC5Qcm9wcyYmbnVsbCE9WC5Qcm9wc1taZVsxXV0/WC5Qcm9wc1taZVsxXV06SD9IW1plWzFdXTpudWxsOyEwPT09VmU/VmU9IjEiOiExPT09''@;'; put 'put ''VmU/VmU9IjAiOiJudW1iZXIiPT10eXBlb2YgVmUmJihWZT1TdHJpbmcoVmUpKSxudWxsIT1WZSYmeG4oWmVbMF0sVmUsbnVsbCx3ZSx4ZSl9cmV0dXJuIHdlLmxlbmd0aD4yJiYod2Vbd2UubGVuZ3RoXT0iPC9jcDpjb3JlUHJvcGVydGllcz4iLHdlWzFdPXdlWzFdLnJlcGxhY2UoIi8+Iiwi''@;'; put 'put ''PiIpKSx3ZS5qb2luKCIiKX0oSC5Qcm9wcyxyZSkpLHhlLmNvcmVwcm9wcy5wdXNoKFplKSxidChyZS5yZWxzLDIsWmUsZHQuQ09SRV9QUk9QUyksWmU9ImRvY1Byb3BzL2FwcC54bWwiLCFILlByb3BzfHwhSC5Qcm9wcy5TaGVldE5hbWVzKWlmKEguV29ya2Jvb2smJkguV29ya2Jvb2suU2hl''@;'; put 'put ''ZXRzKXtmb3IodmFyIFVlPVtdLFN0PTA7U3Q8SC5TaGVldE5hbWVzLmxlbmd0aDsrK1N0KTIhPShILldvcmtib29rLlNoZWV0c1tTdF18fHt9KS5IaWRkZW4mJlVlLnB1c2goSC5TaGVldE5hbWVzW1N0XSk7SC5Qcm9wcy5TaGVldE5hbWVzPVVlfWVsc2UgSC5Qcm9wcy5TaGVldE5hbWVzPUgu''@;'; put 'put ''U2hlZXROYW1lcztILlByb3BzLldvcmtzaGVldHM9SC5Qcm9wcy5TaGVldE5hbWVzLmxlbmd0aCxHbihGZSxaZSxmdW5jdGlvbiBVTShIKXt2YXIgcmU9W10sWD1TaTtyZXR1cm4gSHx8KEg9e30pLEguQXBwbGljYXRpb249IlNoZWV0SlMiLHJlW3JlLmxlbmd0aF09Y24scmVbcmUubGVuZ3Ro''@;'; put 'put ''XT1ZTSxfMi5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtpZih2b2lkIDAhPT1IW3dlWzFdXSl7dmFyIHhlO3N3aXRjaCh3ZVsyXSl7Y2FzZSJzdHJpbmciOnhlPU9yKFN0cmluZyhIW3dlWzFdXSkpO2JyZWFrO2Nhc2UiYm9vbCI6eGU9SFt3ZVsxXV0/InRydWUiOiJmYWxzZSJ9dm9pZCAwIT09eGUm''@;'; put 'put ''JihyZVtyZS5sZW5ndGhdPVgod2VbMF0seGUpKX19KSxyZVtyZS5sZW5ndGhdPVgoIkhlYWRpbmdQYWlycyIsWCgidnQ6dmVjdG9yIixYKCJ2dDp2YXJpYW50IiwiPHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPiIpK1goInZ0OnZhcmlhbnQiLFgoInZ0Omk0IixTdHJpbmcoSC5Xb3Jr''@;'; put 'put ''c2hlZXRzKSkpLHtzaXplOjIsYmFzZVR5cGU6InZhcmlhbnQifSkpLHJlW3JlLmxlbmd0aF09WCgiVGl0bGVzT2ZQYXJ0cyIsWCgidnQ6dmVjdG9yIixILlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKHdlKXtyZXR1cm4iPHZ0Omxwc3RyPiIrT3Iod2UpKyI8L3Z0Omxwc3RyPiJ9KS5qb2luKCIi''@;'; put 'put ''KSx7c2l6ZTpILldvcmtzaGVldHMsYmFzZVR5cGU6Imxwc3RyIn0pKSxyZS5sZW5ndGg+MiYmKHJlW3JlLmxlbmd0aF09IjwvUHJvcGVydGllcz4iLHJlWzFdPXJlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxyZS5qb2luKCIiKX0oSC5Qcm9wcykpLHhlLmV4dHByb3BzLnB1c2goWmUpLGJ0KHJl''@;'; put 'put ''LnJlbHMsMyxaZSxkdC5FWFRfUFJPUFMpLEguQ3VzdHByb3BzIT09SC5Qcm9wcyYmb24oSC5DdXN0cHJvcHN8fHt9KS5sZW5ndGg+MCYmKEduKEZlLFplPSJkb2NQcm9wcy9jdXN0b20ueG1sIixmdW5jdGlvbiB5YyhIKXt2YXIgcmU9W2NuLE9uXTtpZighSClyZXR1cm4gcmUuam9pbigiIik7''@;'; put 'put ''dmFyIFg9MTtyZXR1cm4gb24oSCkuZm9yRWFjaChmdW5jdGlvbih4ZSl7KytYLHJlW3JlLmxlbmd0aF09U2koInByb3BlcnR5IixmdW5jdGlvbiBTcyhILHJlKXtzd2l0Y2godHlwZW9mIEgpe2Nhc2Uic3RyaW5nIjp2YXIgWD1TaSgidnQ6bHB3c3RyIixPcihIKSk7cmV0dXJuIHJlJiYoWD1Y''@;'; put 'put ''LnJlcGxhY2UoLyZxdW90Oy9nLCJfeDAwMjJfIikpLFg7Y2FzZSJudW1iZXIiOnJldHVybiBTaSgoMHxIKT09SD8idnQ6aTQiOiJ2dDpyOCIsT3IoU3RyaW5nKEgpKSk7Y2FzZSJib29sZWFuIjpyZXR1cm4gU2koInZ0OmJvb2wiLEg/InRydWUiOiJmYWxzZSIpfWlmKEggaW5zdGFuY2VvZiBE''@;'; put 'put ''YXRlKXJldHVybiBTaSgidnQ6ZmlsZXRpbWUiLHEwKEgpKTt0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBzZXJpYWxpemUgIitIKX0oSFt4ZV0sITApLHtmbXRpZDoie0Q1Q0RENTA1LTJFOUMtMTAxQi05Mzk3LTA4MDAyQjJDRjlBRX0iLHBpZDpYLG5hbWU6T3IoeGUpfSl9KSxyZS5sZW5n''@;'; put 'put ''dGg+MiYmKHJlW3JlLmxlbmd0aF09IjwvUHJvcGVydGllcz4iLHJlWzFdPXJlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxyZS5qb2luKCIiKX0oSC5DdXN0cHJvcHMpKSx4ZS5jdXN0cHJvcHMucHVzaChaZSksYnQocmUucmVscyw0LFplLGR0LkNVU1RfUFJPUFMpKTt2YXIgSXQ9W10sUHQ9W107''@;'; put 'put ''Zm9yKFZlPTE7VmU8PUguU2hlZXROYW1lcy5sZW5ndGg7KytWZSl7dmFyIENuPXsiIWlkIjp7fX0sTHQ9SC5TaGVldHNbSC5TaGVldE5hbWVzW1ZlLTFdXSx6dD0oTHR8fHt9KVsiIXR5cGUiXXx8InNoZWV0Ijtzd2l0Y2goenQpe2Nhc2UiY2hhcnQiOmlmKCJ1bmRlZmluZWQiIT10eXBlb2Yg''@;'; put 'put ''d3JpdGVfZHJhd2luZ18pe0duKEZlLFplPSJ4bC9jaGFydHNoZWV0cy9zaGVldCIrVmUrIi4iK1gsR1AoVmUtMSxaZSxyZSxILENuKSkseGUuY2hhcnRzLnB1c2goWmUpLGJ0KHJlLndicmVscywtMSwiY2hhcnRzaGVldHMvc2hlZXQiK1ZlKyIuIitYLGR0LkNTKTticmVha31kZWZhdWx0Okdu''@;'; put 'put ''KEZlLFplPSJ4bC93b3Jrc2hlZXRzL3NoZWV0IitWZSsiLiIrWCxzVChWZS0xLFplLHJlLEgsQ24pKSx4ZS5zaGVldHMucHVzaChaZSksYnQocmUud2JyZWxzLC0xLCJ3b3Jrc2hlZXRzL3NoZWV0IitWZSsiLiIrWCxkdC5XU1swXSl9aWYoTHQpeyJjaGFydCI9PXp0JiYhTHRbIiFwb3MiXSYm''@;'; put 'put ''KEx0WyIhcG9zIl09e3g6MCx5OjAsdzo5MDAsaDo2MDB9KTt2YXIgZm49THRbIiFjb21tZW50cyJdLEluPSExO2lmKGZuJiZmbi5sZW5ndGg+MCl7dmFyIFJuPSJ4bC9jb21tZW50cyIrVmUrIi4iK1g7R24oRmUsUm4sZlQoZm4sUm4scmUpKSx4ZS5jb21tZW50cy5wdXNoKFJuKSxidChDbiwt''@;'; put 'put ''MSwiLi4vY29tbWVudHMiK1ZlKyIuIitYLGR0LkNNTlQpLEluPSEwfShMdFsiIWNvbnRyb2xzIl18fFtdKS5sZW5ndGg+MCYmKEluPSEwKSxMdFsiIWxlZ2FjeSJdJiZJbiYmR24oRmUsInhsL2RyYXdpbmdzL3ZtbERyYXdpbmciK1ZlKyIudm1sIixuXyhWZSxMdFsiIWNvbW1lbnRzIl0sTHRb''@;'; put 'put ''IiFjb250cm9scyJdLEx0KSksTHRbIiFsZWdhY3lIRiJdJiZpXyhGZSwwLFZlLEx0WyIhcHJpbnQiXS5pbWFnZXMpO3ZhciBWbj0oImNoYXJ0Ij09THRbIiF0eXBlIl0/W0x0XTpMdFsiIWNoYXJ0cyJdfHxbXSkuY29uY2F0KChMdFsiIWltYWdlcyJdfHxbXSkubWFwKGZ1bmN0aW9uKElyKXty''@;'; put 'put ''ZXR1cm4gSXJbIiF0eXBlIl18fChJclsiIXR5cGUiXT0iaW1hZ2UiKSxJcn0pKS5jb25jYXQoKEx0WyIhc2hhcGVzIl18fFtdKS5tYXAoZnVuY3Rpb24oSXIpe3JldHVybiBJclsiIXR5cGUiXXx8KElyWyIhdHlwZSJdPSJzaGFwZSIpLElyfSkpO1ZuJiZWbi5sZW5ndGgmJigidW5kZWZpbmVk''@;'; put 'put ''IiE9dHlwZW9mIHdyaXRlX2RyYXdpbmdfP3dyaXRlX2RyYXdpbmdfKEZlLHhlLFZlLEx0LFZuKTooR24oRmUsInhsL2RyYXdpbmdzL2RyYXdpbmciK1ZlKyIueG1sIix0XygpKSx4ZS5kcmF3aW5ncy5wdXNoKCJ4bC9kcmF3aW5ncy9kcmF3aW5nIitWZSsiLnhtbCIpKSksZGVsZXRlIEx0WyIh''@;'; put 'put ''Y29tbWVudHMiXSxkZWxldGUgTHRbIiFsZWdhY3kiXSxkZWxldGUgTHRbIiFsZWdhY3lIRiJdfUx0JiZMdFsiIXBpdm90cyJdJiYieG1sIj09WCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3cml0ZV9waXZvdF94bWwmJkx0WyIhcGl2b3RzIl0uZm9yRWFjaChhbiksQ25bIiFpZCJdLnJJZDEmJkdu''@;'; put 'put ''KEZlLER0KFplKSxUdChDbikpLEx0JiZMdFsiIXRhYmxlcyJdJiYieG1sIj09WCYmdm9pZCAwIT09JDkmJkx0WyIhdGFibGVzIl0uZm9yRWFjaChRdCl9cmV0dXJuIG51bGwhPXJlLlN0cmluZ3MmJnJlLlN0cmluZ3MubGVuZ3RoPjAmJihHbihGZSxaZT0ieGwvc2hhcmVkU3RyaW5ncy4iK1gs''@;'; put 'put ''Y1QocmUuU3RyaW5ncyxaZSxyZSkpLHhlLnN0cnMucHVzaChaZSksYnQocmUud2JyZWxzLC0xLCJzaGFyZWRTdHJpbmdzLiIrWCxkdC5TU1QpKSwieG1sIj09WCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3cml0ZV9waXZvdF94bWwmJndyaXRlX3Bpdm90X3htbChJdCxILEZlLHhlLHJlKSwieG1s''@;'; put 'put ''Ij09WCYmdm9pZCAwIT09JDkmJiQ5KFB0LEgsRmUseGUpLCJ4bWwiPT1YJiYoSC5FeHRlcm5hbFdCfHxbXSkubGVuZ3RoJiZmdW5jdGlvbiBwNihILHJlLFgpe1gubGlua3N8fChYLmxpbmtzPVtdKSxILkV4dGVybmFsV0ImJkguRXh0ZXJuYWxXQi5mb3JFYWNoKGZ1bmN0aW9uKHdlLHhlKXt2''@;'; put 'put ''YXIgRmU9Ii94bC9leHRlcm5hbExpbmtzL19yZWxzL2V4dGVybmFsTGluayIrKHhlKzEpKyIueG1sLnJlbHMiLFplPXt9O2J0KFplLC0xLHdlLlRhcmdldCx3ZS5NaXNzaW5nP2R0LlhNSVNTOmR0LlhQQVRIKSxHbihyZSxQMihGZSksVHQoWmUpKTt2YXIgVmU9Ii94bC9leHRlcm5hbExpbmtz''@;'; put 'put ''L2V4dGVybmFsTGluayIrKHhlKzEpKyIueG1sIjtYLmxpbmtzLnB1c2goVmUpLEduKHJlLFAyKFZlKSxmdW5jdGlvbiBYOShIKXt2YXIgcmU9W2NuLGQ2XTtyZXR1cm4oSC5TaGVldE5hbWVzfHxbXSkubGVuZ3RoJiYocmUucHVzaCgnPGV4dGVybmFsQm9vayB4bWxuczpyPSJodHRwOi8vc2No''@;'; put 'put ''ZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiByOmlkPSJySWQxIj4nKSxyZS5wdXNoKCI8c2hlZXROYW1lcz4iKSxILlNoZWV0TmFtZXMuZm9yRWFjaChmdW5jdGlvbihYKXtyZS5wdXNoKCc8c2hlZXROYW1lIHZhbD0iJytPcihYKSsn''@;'; put 'put ''Ii8+Jyl9KSxyZS5wdXNoKCI8L3NoZWV0TmFtZXM+IikscmUucHVzaCgiPHNoZWV0RGF0YVNldD4iKSxILlNoZWV0TmFtZXMuZm9yRWFjaChmdW5jdGlvbihYLHdlKXt2YXIgeGU9SC5TaGVldHNbWF0sRmU9e3NoZWV0SWQ6d2V9LFplPW51bGw7aWYobnVsbD09eGUpRmUucmVmcmVzaEVycm9y''@;'; put 'put ''PTE7ZWxzZSBpZih4ZVsiIXJlZiJdKXt2YXIgVmU9bnMoeGVbIiFyZWYiXSk7WmU9IiI7Zm9yKHZhciBVZT1WZS5zLnI7VWU8PVZlLmUucjsrK1VlKXtmb3IodmFyIFN0PSIiLEl0PVZlLnMuYztJdDw9VmUuZS5jOysrSXQpe3ZhciBQdD1RMCh7cjpVZSxjOkl0fSk7IXhlW1B0XXx8KFN0fHwo''@;'; put 'put ''U3Q9Jzxyb3cgcj0iJysoVWUrMSkrJyI+JyksU3QrPSc8Y2VsbCByPSInK1B0KyciJysoeGVbUHRdLnQ/JyB0PSInK3hlW1B0XS50KyciJzoiIikrIj48dj4iK09yKHhlW1B0XS52KSsiPC92PjwvY2VsbD4iKX1TdCYmKFplKz1TdCsiPC9yb3c+Iil9fXJlLnB1c2goU2koInNoZWV0RGF0YSIs''@;'; put 'put ''WmUsRmUpKX0pLHJlLnB1c2goIjwvc2hlZXREYXRhU2V0PiIpLHJlLnB1c2goIjwvZXh0ZXJuYWxCb29rPiIpKSxyZS5sZW5ndGg+MiYmKHJlW3JlLmxlbmd0aF09IjwvZXh0ZXJuYWxMaW5rPiIscmVbMV09cmVbMV0ucmVwbGFjZSgiLz4iLCI+IikpLHJlLmpvaW4oIiIpfSh3ZSkpfSl9KEgs''@;'; put 'put ''RmUseGUpLCJ4bWwiPT1YJiZmdW5jdGlvbiBxYihIKXt2YXIgcmUsWDtILldvcmtib29rfHwoSC5Xb3JrYm9vaz17TmFtZXM6W119KSxILldvcmtib29rLk5hbWVzfHwoSC5Xb3JrYm9vay5OYW1lcz1bXSk7Zm9yKHZhciB3ZT1ILldvcmtib29rLk5hbWVzLHhlPTA7eGU8SC5TaGVldE5hbWVz''@;'; put 'put ''Lmxlbmd0aDsrK3hlKXt2YXIgRmU9SC5TaGVldE5hbWVzW3hlXSxaZT1ILlNoZWV0c1tGZV07aWYoWmUmJlplWyIhcHJpbnQiXSl7dmFyIFZlPSInIitGZSsiJyEiLFVlPVplWyIhcHJpbnQiXTtpZihVZSl7dmFyIFN0PSEocmU9VWUuYXJlYSksSXQ9IShYPVVlLnRpdGxlcyksUHQ9cmU/InN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiByZT9yZTpBYShyZSk6IiI7aWYocmUmJih3ZS5mb3JFYWNoKGZ1bmN0aW9uKGFuKXthbi5TaGVldD09eGUmJiFTdCYmIl94bG5tLlByaW50X0FyZWEiPT1hbi5OYW1lJiYoU3Q9ITAsYW4uUmVmPVZlK1B0KX0pLFN0fHx3ZS5wdXNoKHtOYW1lOiJfeGxubS5QcmludF9B''@;'; put 'put ''cmVhIixSZWY6VmUrUHQsU2hlZXQ6eGV9KSksWCl7dmFyIFF0PSIiO1gucy5jPi0xJiZYLmUuYz4tMSYmKFF0Kz1WZStMbChYLnMuYykrIjoiK0xsKFguZS5jKSsiLCIpLFgucy5yPi0xJiZYLmUucj4tMSYmKFF0Kz1WZStoYShYLnMucikrIjoiK2hhKFguZS5yKSsiLCIpLFF0PVF0LnNsaWNl''@;'; put 'put ''KDAsLTEpLHdlLmZvckVhY2goZnVuY3Rpb24oYW4pe2FuLlNoZWV0PT14ZSYmIUl0JiYiX3hsbm0uUHJpbnRfVGl0bGVzIj09YW4uTmFtZSYmKFN0PSEwLGFuLlJlZj1RdCl9KSxJdHx8d2UucHVzaCh7TmFtZToiX3hsbm0uUHJpbnRfVGl0bGVzIixSZWY6UXQsU2hlZXQ6eGV9KX19fX19KEgp''@;'; put 'put ''LEduKEZlLFplPSJ4bC93b3JrYm9vay4iK1gsZnVuY3Rpb24gelAoSCxyZSxYKXtyZXR1cm4oIi5iaW4iPT09cmUuc2xpY2UoLTQpP3JUOmppKShILFgpfShILFplLHJlKSkseGUud29ya2Jvb2tzLnB1c2goWmUpLGJ0KHJlLnJlbHMsMSxaZSxkdC5XQiksR24oRmUsWmU9InhsL3RoZW1lL3Ro''@;'; put 'put ''ZW1lMS54bWwiLEpiKEguVGhlbWVzLHJlKSkseGUudGhlbWVzLnB1c2goWmUpLGJ0KHJlLndicmVscywtMSwidGhlbWUvdGhlbWUxLnhtbCIsZHQuVEhFTUUpLEduKEZlLFplPSJ4bC9zdHlsZXMuIitYLGZ1bmN0aW9uIHVUKEgscmUsWCl7cmV0dXJuKCIuYmluIj09PXJlLnNsaWNlKC00KT9I''@;'; put 'put ''RTpOYikoSCxYKX0oSCxaZSxyZSkpLHhlLnN0eWxlcy5wdXNoKFplKSxidChyZS53YnJlbHMsLTEsInN0eWxlcy4iK1gsZHQuU1RZKSxILnZiYXJhdyYmd2UmJihHbihGZSxaZT0ieGwvdmJhUHJvamVjdC5iaW4iLEgudmJhcmF3KSx4ZS52YmEucHVzaChaZSksYnQocmUud2JyZWxzLC0xLCJ2''@;'; put 'put ''YmFQcm9qZWN0LmJpbiIsZHQuVkJBKSksSC5tb2RlbCYmSC5tb2RlbC5sZW5ndGgmJihHbihGZSwieGwvbW9kZWwvaXRlbS5kYXRhIixILm1vZGVsKSxidChyZS53YnJlbHMsLTEsIm1vZGVsL2l0ZW0uZGF0YSIsZHQuUFdSUEQpKSxILmNvbm4mJihHbihGZSwieGwvY29ubmVjdGlvbnMueG1s''@;'; put 'put ''IixILmNvbm4pLHhlLmNvbm5zLnB1c2goIi94bC9jb25uZWN0aW9ucy54bWwiKSxidChyZS53YnJlbHMsLTEsImNvbm5lY3Rpb25zLnhtbCIsZHQuQ09OTikpLEguQ3VzdG9tWE1MJiZILkN1c3RvbVhNTC5mb3JFYWNoKGZ1bmN0aW9uKElyLGlpKXtpZihHbihGZSwiY3VzdG9tWG1sL2l0ZW0i''@;'; put 'put ''KyhpaSsxKSsiLnhtbCIsSXIuZGF0YSksYnQocmUud2JyZWxzLC0xLCIuLi9jdXN0b21YbWwvaXRlbSIrKGlpKzEpKyIueG1sIixkdC5DWE1MKSxJci5wcm9wcyl7R24oRmUsImN1c3RvbVhtbC9pdGVtUHJvcHMiKyhpaSsxKSsiLnhtbCIsSXIucHJvcHMpLHhlLmN1c3RvbXhtbHByb3BzLnB1''@;'; put 'put ''c2goIi9jdXN0b21YbWwvaXRlbVByb3BzIisoaWkrMSkrIi54bWwiKTt2YXIgeXI9e307YnQoeXIsLTEsIml0ZW1Qcm9wcyIrKGlpKzEpKyIueG1sIixkdC5DWE1MUCksR24oRmUsImN1c3RvbVhtbC9fcmVscy9pdGVtIisoaWkrMSkrIi54bWwucmVscyIsVHQoeXIpKX19KSxHbihGZSwiW0Nv''@;'; put 'put ''bnRlbnRfVHlwZXNdLnhtbCIsZnVuY3Rpb24gRFIoSCxyZSxYKXt2YXIgeGUsd2U9W107WHx8KHdlW3dlLmxlbmd0aF09Y24sd2Vbd2UubGVuZ3RoXT1hMix3ZT13ZS5jb25jYXQoSVIpKTt2YXIgRmU9ZnVuY3Rpb24oVWUpe0hbVWVdJiZIW1VlXS5sZW5ndGg+MCYmKHdlW3dlLmxlbmd0aF09''@;'; put 'put ''U2koIk92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT0oeGU9SFtVZV1bMF0pWzBdPyIiOiIvIikreGUsQ29udGVudFR5cGU6ZzNbVWVdW3JlLmJvb2tUeXBlfHwieGxzeCJdfSkpfSxaZT1mdW5jdGlvbihVZSl7KEhbVWVdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihTdCl7d2Vbd2UubGVu''@;'; put 'put ''Z3RoXT1TaSgiT3ZlcnJpZGUiLG51bGwse1BhcnROYW1lOigiLyI9PVN0WzBdPyIiOiIvIikrU3QsQ29udGVudFR5cGU6ZzNbVWVdW3JlLmJvb2tUeXBlfHwieGxzeCJdfSl9KX0sVmU9ZnVuY3Rpb24oVWUpeyhIW1VlXXx8W10pLmZvckVhY2goZnVuY3Rpb24oU3Qpe3dlW3dlLmxlbmd0aF09''@;'; put 'put ''U2koIk92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT1TdFswXT8iIjoiLyIpK1N0LENvbnRlbnRUeXBlOkxhW1VlXVswXX0pfSl9O3JldHVybiBGZSgid29ya2Jvb2tzIiksWmUoInNoZWV0cyIpLFplKCJjaGFydHMiKSxWZSgidGhlbWVzIiksWyJzdHJzIiwic3R5bGVzIiwiY29ubnMi''@;'; put 'put ''XS5mb3JFYWNoKEZlKSxbImNvcmVwcm9wcyIsImV4dHByb3BzIiwiY3VzdHByb3BzIl0uZm9yRWFjaChWZSksVmUoInZiYSIpLFZlKCJjb21tZW50cyIpLFZlKCJkcmF3aW5ncyIpLFplKCJ0YWJsZXMiKSxaZSgicGl2b3RzIiksWmUoInBpdm90Y2FjaGVzIiksWmUoInBpdm90cmVjb3JkcyIp''@;'; put 'put ''LFZlKCJkYXRhbW9kZWxzIiksVmUoImN0cmxwcm9wcyIpLFZlKCJjaGFydG9ianMiKSxWZSgiY2hhcnRzdHlsZXMiKSxWZSgiY2hhcnRjb2xvcnMiKSxWZSgiY2hhcnRleHMiKSxaZSgibGlua3MiKSxWZSgiY3VzdG9teG1scHJvcHMiKSwhWCYmd2UubGVuZ3RoPjImJih3ZVt3ZS5sZW5ndGhd''@;'; put 'put ''PSI8L1R5cGVzPiIsd2VbMV09d2VbMV0ucmVwbGFjZSgiLz4iLCI+IikpLHdlLmpvaW4oIiIpfSh4ZSxyZSkpLEduKEZlLCJfcmVscy8ucmVscyIsVHQocmUucmVscykpLEduKEZlLCJ4bC9fcmVscy93b3JrYm9vay4iK1grIi5yZWxzIixUdChyZS53YnJlbHMpKSxkZWxldGUgcmUuRm9udHMs''@;'; put 'put ''ZGVsZXRlIHJlLkZpbGxzLGRlbGV0ZSByZS5Cb3JkZXJzLGRlbGV0ZSByZS5yZXZzc2YsZGVsZXRlIHJlLnNzZixGZX1mdW5jdGlvbiBRdChJcixpaSl7UHQucHVzaChbVmUtMSxpaSxJcl0pfWZ1bmN0aW9uIGFuKElyKXtJdC5wdXNoKFtWZS0xLElyXSksYnQoQ24sLTEsIi4uL3Bpdm90VGFi''@;'; put 'put ''bGVzL3Bpdm90VGFibGUiK0l0Lmxlbmd0aCsiLiIrWCxkdC5QSVZPVCl9fWZ1bmN0aW9uIHhUKEgscmUpe3ZhciBYPSIiO3N3aXRjaCgocmV8fHt9KS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVybltIWzBdLEhbMV0sSFsyXSxIWzNdLEhbNF0sSFs1XSxI''@;'; put 'put ''WzZdLEhbN11dO2Nhc2UiYmFzZTY0IjpYPVNlLmRlY29kZShILnNsaWNlKDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6WD1IO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyhyZSYmcmUudHlwZXx8InVuZGVmaW5lZCIpKX1yZXR1cm5bWC5jaGFy''@;'; put 'put ''Q29kZUF0KDApLFguY2hhckNvZGVBdCgxKSxYLmNoYXJDb2RlQXQoMiksWC5jaGFyQ29kZUF0KDMpLFguY2hhckNvZGVBdCg0KSxYLmNoYXJDb2RlQXQoNSksWC5jaGFyQ29kZUF0KDYpLFguY2hhckNvZGVBdCg3KV19ZnVuY3Rpb24gdUMoSCxyZSl7dmFyIFg9MDtlOmZvcig7WDxILmxlbmd0''@;'; put 'put ''aDspc3dpdGNoKEguY2hhckNvZGVBdChYKSl7Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6KytYO2JyZWFrO2Nhc2UgNjA6cmV0dXJuIHBUKEguc2xpY2UoWCkscmUpO2RlZmF1bHQ6YnJlYWsgZX1yZXR1cm4gSDgudG9fd29ya2Jvb2soSCxyZSl9ZnVuY3Rpb24gYmYoSCxyZSxYLHdlKXtyZXR1''@;'; put 'put ''cm4gd2U/KFgudHlwZT0ic3RyaW5nIixIOC50b193b3JrYm9vayhILFgpKTpIOC50b193b3JrYm9vayhyZSxYKX1mdW5jdGlvbiBSZChILHJlKXt2YXIgWD1GLmdldGxvY2FsZSgpO3llKEYpLEYuc2V0bG9jYWxlKFgpLHEoKTt2YXIgd2U9cmV8fHt9O2lmKCJ1bmRlZmluZWQiIT10eXBlb2Yg''@;'; put 'put ''QXJyYXlCdWZmZXImJkggaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gUmQobmV3IFVpbnQ4QXJyYXkoSCksKCh3ZT1sbih3ZSkpLnR5cGU9ImFycmF5Iix3ZSkpO3ZhciBGZSx4ZT1ILFplPSExO2lmKE1oKG42PXdlLlBQSXx8OTYpLHdlLmNlbGxTdHlsZXMmJih3ZS5jZWxsTkY9ITAs''@;'; put 'put ''d2Uuc2hlZXRTdHVicz0hMCksbmM9e30sd2UuZGF0ZU5GJiYobmMuZGF0ZU5GPXdlLmRhdGVORiksd2UudHlwZXx8KHdlLnR5cGU9SWUmJkJ1ZmZlci5pc0J1ZmZlcihIKT8iYnVmZmVyIjoiYmFzZTY0IiksImZpbGUiPT13ZS50eXBlJiYod2UudHlwZT1JZT8iYnVmZmVyIjoiYmluYXJ5Iix4''@;'; put 'put ''ZT1mdW5jdGlvbiBGdChIKXtpZih2b2lkIDAhPT1tdClyZXR1cm4gbXQucmVhZEZpbGVTeW5jKEgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCYmInVuZGVmaW5lZCIhPXR5cGVvZiBGaWxlJiYidW5kZWZpbmVkIiE9dHlwZW9mIEZvbGRlcil0cnl7dmFyIHJlPUZpbGUoSCk7cmUub3Blbigi''@;'; put 'put ''ciIpLHJlLmVuY29kaW5nPSJiaW5hcnkiO3ZhciBYPXJlLnJlYWQoKTtyZXR1cm4gcmUuY2xvc2UoKSxYfWNhdGNoKHdlKXtpZighd2UubWVzc2FnZXx8IXdlLm1lc3NhZ2UubWF0Y2goL29uc3RydWN0LykpdGhyb3cgd2V9dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYWNjZXNzIGZpbGUgIitI''@;'; put 'put ''KX0oSCkpLCJzdHJpbmciPT13ZS50eXBlJiYoWmU9ITAsd2UudHlwZT0iYmluYXJ5Iix3ZS5jb2RlcGFnZT02NTAwMSx4ZT1mdW5jdGlvbiBObyhIKXtyZXR1cm4gSC5tYXRjaCgvW15ceDAwLVx4N0ZdLyk/QW8oSCk6SH0oSCkpLCJhcnJheSI9PXdlLnR5cGUmJiJ1bmRlZmluZWQiIT10eXBl''@;'; put 'put ''b2YgVWludDhBcnJheSYmSCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciBWZT1uZXcgQXJyYXlCdWZmZXIoMyksVWU9bmV3IFVpbnQ4QXJyYXkoVmUpO2lmKFVlLmZvbz0iYmFyIiwhVWUuZm9vKXJldHVybih3ZT1sbih3ZSkpLnR5''@;'; put 'put ''cGU9ImFycmF5IixSZChQKHhlKSx3ZSl9c3dpdGNoKChGZT14VCh4ZSx3ZSkpWzBdKXtjYXNlIDIwODppZigyMDc9PT1GZVsxXSYmMTc9PT1GZVsyXSYmMjI0PT09RmVbM10mJjE2MT09PUZlWzRdJiYxNzc9PT1GZVs1XSYmMjY9PT1GZVs2XSYmMjI1PT09RmVbN10pcmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IEVjKEgscmUpe3JldHVybiBwdC5maW5kKEgsIkVuY3J5cHRlZFBhY2thZ2UiKT9SMyhILHJlKTpOQShILHJlKX0ocHQucmVhZCh4ZSx3ZSksd2UpO2JyZWFrO2Nhc2UgOTppZihGZVsxXTw9OClyZXR1cm4gTkEoeGUsd2UpO2JyZWFrO2Nhc2UgNjA6cmV0dXJuIHBUKHhlLHdlKTtjYXNlIDcz''@;'; put 'put ''OmlmKDczPT09RmVbMV0mJjQyPT09RmVbMl0mJjA9PT1GZVszXSl0aHJvdyBuZXcgRXJyb3IoIlRJRkYgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2lmKDY4PT09RmVbMV0pcmV0dXJuIGZ1bmN0aW9uIEw5KEgscmUpe3ZhciBYPXJlfHx7fSx3ZT0hIVguV1RGO1guV1RGPSEw''@;'; put 'put ''O3RyeXt2YXIgeGU9dzMudG9fd29ya2Jvb2soSCxYKTtyZXR1cm4gWC5XVEY9d2UseGV9Y2F0Y2goRmUpe2lmKFguV1RGPXdlLCFGZS5tZXNzYWdlLm1hdGNoKC9TWUxLIGJhZCByZWNvcmQgSUQvKSYmd2UpdGhyb3cgRmU7cmV0dXJuIEg4LnRvX3dvcmtib29rKEgscmUpfX0oeGUsd2UpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgODQ6aWYoNjU9PT1GZVsxXSYmNjY9PT1GZVsyXSYmNzY9PT1GZVszXSlyZXR1cm4gTWIudG9fd29ya2Jvb2soeGUsd2UpO2JyZWFrO2Nhc2UgODA6cmV0dXJuIDc1PT09RmVbMV0mJkZlWzJdPDkmJkZlWzNdPDk/ZnVuY3Rpb24gc0MoSCxyZSl7dmFyIHdlPUgseGU9cmV8fHt9''@;'; put 'put ''O3JldHVybiB4ZS50eXBlfHwoeGUudHlwZT1JZSYmQnVmZmVyLmlzQnVmZmVyKEgpPyJidWZmZXIiOiJiYXNlNjQiKSxnbyh2bih3ZSx4ZSkseGUpfSh4ZSx3ZSk6YmYoSCx4ZSx3ZSxaZSk7Y2FzZSAyMzk6cmV0dXJuIDYwPT09RmVbM10/cFQoeGUsd2UpOmJmKEgseGUsd2UsWmUpO2Nhc2Ug''@;'; put 'put ''MjU1OmlmKDI1ND09PUZlWzFdKXJldHVybiBmdW5jdGlvbiBRMShILHJlKXt2YXIgWD1IO3JldHVybiJiYXNlNjQiPT1yZS50eXBlJiYoWD1TZS5kZWNvZGUoWCkpLFg9Y3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCxYLnNsaWNlKDIpLCJzdHIiKSxyZS50eXBlPSJiaW5hcnkiLHVDKFgscmUp''@;'; put 'put ''fSh4ZSx3ZSk7YnJlYWs7Y2FzZSAwOmlmKDA9PT1GZVsxXSYmRmVbMl0+PTImJjA9PT1GZVszXSlyZXR1cm4gdzEudG9fd29ya2Jvb2soeGUsd2UpO2JyZWFrO2Nhc2UgMzpjYXNlIDEzMTpjYXNlIDEzOTpjYXNlIDE0MDpyZXR1cm4gd2QudG9fd29ya2Jvb2soeGUsd2UpO2Nhc2UgMTIzOmlm''@;'; put 'put ''KDkyPT09RmVbMV0mJjExND09PUZlWzJdJiYxMTY9PT1GZVszXSlyZXR1cm4gZ20udG9fd29ya2Jvb2soeGUsd2UpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBmdW5jdGlvbiBPNihILHJlKXt2YXIgWD0iIix3ZT14VChILHJlKTtzd2l0Y2gocmUudHlwZSl7Y2FzZSJi''@;'; put 'put ''YXNlNjQiOlg9U2UuZGVjb2RlKEgpO2JyZWFrO2Nhc2UiYmluYXJ5IjpYPUg7YnJlYWs7Y2FzZSJidWZmZXIiOlg9SC50b1N0cmluZygiYmluYXJ5Iik7YnJlYWs7Y2FzZSJhcnJheSI6WD1ibihIKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIity''@;'; put 'put ''ZS50eXBlKX1yZXR1cm4gMjM5PT13ZVswXSYmMTg3PT13ZVsxXSYmMTkxPT13ZVsyXSYmKFg9ajAoWCkpLHVDKFgscmUpfSh4ZSx3ZSl9cmV0dXJuIHdkLnZlcnNpb25zLmluZGV4T2YoRmVbMF0pPi0xJiZGZVsyXTw9MTImJkZlWzNdPD0zMT93ZC50b193b3JrYm9vayh4ZSx3ZSk6YmYoSCx4''@;'; put 'put ''ZSx3ZSxaZSl9ZnVuY3Rpb24gSkEoSCxyZSl7dmFyIFg9cmV8fHt9O3JldHVybiBYLnR5cGU9ImZpbGUiLFJkKEgsWCl9ZnVuY3Rpb24gbGMoSCxyZSl7c3dpdGNoKHJlLnR5cGUpe2Nhc2UiYmFzZTY0IjpjYXNlImJpbmFyeSI6YnJlYWs7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJlLnR5''@;'; put 'put ''cGU9IiI7YnJlYWs7Y2FzZSJmaWxlIjpyZXR1cm4gZnQocmUuZmlsZSxwdC53cml0ZShILHt0eXBlOkllPyJidWZmZXIiOiIifSkpO2Nhc2Uic3RyaW5nIjp0aHJvdyBuZXcgRXJyb3IoIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICciK3JlLmJvb2tUeXBlKyInIGZpbGVzIik7''@;'; put 'put ''ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrcmUudHlwZSl9cmV0dXJuIHB0LndyaXRlKEgscmUpfWZ1bmN0aW9uIEIzKEgscmUsWCl7WHx8KFg9IiIpO3ZhciB3ZT1YK0g7c3dpdGNoKHJlLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gU2UuZW5jb2RlKEFv''@;'; put 'put ''KHdlKSk7Y2FzZSJiaW5hcnkiOnJldHVybiBBbyh3ZSk7Y2FzZSJzdHJpbmciOnJldHVybiBIO2Nhc2UiZmlsZSI6cmV0dXJuIGZ0KHJlLmZpbGUsd2UsInV0ZjgiKTtjYXNlImJ1ZmZlciI6cmV0dXJuIEllP1RlKHdlLCJ1dGY4Iik6QjMod2Use3R5cGU6ImJpbmFyeSJ9KS5zcGxpdCgiIiku''@;'; put 'put ''bWFwKGZ1bmN0aW9uKHhlKXtyZXR1cm4geGUuY2hhckNvZGVBdCgwKX0pfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIityZS50eXBlKX1mdW5jdGlvbiBUVChILHJlKXtzd2l0Y2gocmUudHlwZSl7Y2FzZSJzdHJpbmciOmNhc2UiYmFzZTY0IjpjYXNlImJpbmFyeSI6Zm9y''@;'; put 'put ''KHZhciBYPSIiLHdlPTA7d2U8SC5sZW5ndGg7Kyt3ZSlYKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEhbd2VdKTtyZXR1cm4iYmFzZTY0Ij09cmUudHlwZT9TZS5lbmNvZGUoWCk6InN0cmluZyI9PXJlLnR5cGU/ajAoWCk6WDtjYXNlImZpbGUiOnJldHVybiBmdChyZS5maWxlLEgpO2Nhc2UiYnVm''@;'; put 'put ''ZmVyIjpyZXR1cm4gSDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIityZS50eXBlKX19ZnVuY3Rpb24gZDcoSCxyZSl7cSgpLGZ1bmN0aW9uICR4KEgpe2lmKCFIfHwhSC5TaGVldE5hbWVzfHwhSC5TaGVldHMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFdv''@;'; put 'put ''cmtib29rIik7aWYoIUguU2hlZXROYW1lcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJXb3JrYm9vayBpcyBlbXB0eSIpOyFmdW5jdGlvbiBQUChILHJlLFgpe0guZm9yRWFjaChmdW5jdGlvbih3ZSx4ZSl7V18od2UpO2Zvcih2YXIgRmU9MDtGZTx4ZTsrK0ZlKWlmKHdlPT1IW0ZlXSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIkR1cGxpY2F0ZSBTaGVldCBOYW1lOiAiK3dlKTtpZihYKXt2YXIgWmU9cmUmJnJlW3hlXSYmcmVbeGVdLkNvZGVOYW1lfHx3ZTtpZig5NT09WmUuY2hhckNvZGVBdCgwKSYmWmUubGVuZ3RoPjIyKXRocm93IG5ldyBFcnJvcigiQmFkIENvZGUgTmFtZTogV29ya3NoZWV0''@;'; put 'put ''IitaZSl9fSl9KEguU2hlZXROYW1lcyxILldvcmtib29rJiZILldvcmtib29rLlNoZWV0c3x8W10sISFILnZiYXJhdyk7Zm9yKHZhciBYPTA7WDxILlNoZWV0TmFtZXMubGVuZ3RoOysrWCl6bShILlNoZWV0c1tILlNoZWV0TmFtZXNbWF1dLDAsWCl9KEgpO3ZhciBYPXJlfHx7fTtpZihYLmNl''@;'; put 'put ''bGxTdHlsZXMmJihYLmNlbGxORj0hMCxYLnNoZWV0U3R1YnM9ITApLCJhcnJheSI9PVgudHlwZSl7WC50eXBlPSJiaW5hcnkiO3ZhciB3ZT1kNyhILFgpO3JldHVybiBYLnR5cGU9ImFycmF5IixuZSh3ZSl9c3dpdGNoKFguYm9va1R5cGV8fCJ4bHNiIil7Y2FzZSJ4bWwiOmNhc2UieGxtbCI6''@;'; put 'put ''cmV0dXJuIEIzKEFUKEgsWCksWCk7Y2FzZSJzbGsiOmNhc2Uic3lsayI6cmV0dXJuIEIzKGtUKEgsWCksWCk7Y2FzZSJodG0iOmNhc2UiaHRtbCI6cmV0dXJuIEIzKFlBKEgsWCksWCk7Y2FzZSJ0eHQiOnJldHVybiBmdW5jdGlvbiBsRihILHJlKXtzd2l0Y2gocmUudHlwZSl7Y2FzZSJiYXNl''@;'; put 'put ''NjQiOnJldHVybiBTZS5lbmNvZGUoSCk7Y2FzZSJiaW5hcnkiOmNhc2Uic3RyaW5nIjpyZXR1cm4gSDtjYXNlImZpbGUiOnJldHVybiBmdChyZS5maWxlLEgsImJpbmFyeSIpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gSWU/VGUoSCwiYmluYXJ5Iik6SC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKFgp''@;'; put 'put ''e3JldHVybiBYLmNoYXJDb2RlQXQoMCl9KX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrcmUudHlwZSl9KGFGKEgsWCksWCk7Y2FzZSJjc3YiOnJldHVybiBCMyhoNShILFgpLFgsIlx1ZmVmZiIpO2Nhc2UiZGlmIjpyZXR1cm4gQjMoVUEoSCxYKSxYKTtjYXNlImRiZiI6''@;'; put 'put ''cmV0dXJuIFRUKGlDKEgsWCksWCk7Y2FzZSJwcm4iOnJldHVybiBCMyhzaShILFgpLFgpO2Nhc2UicnRmIjpyZXR1cm4gQjMob0YoSCxYKSxYKTtjYXNlImV0aCI6cmV0dXJuIEIzKEJsKEgsWCksWCk7Y2FzZSJmb2RzIjpyZXR1cm4gQjMoV0EoSCxYKSxYKTtjYXNlImJpZmYyIjpYLmJpZmZ8''@;'; put 'put ''fChYLmJpZmY9Mik7Y2FzZSJiaWZmMyI6WC5iaWZmfHwoWC5iaWZmPTMpO2Nhc2UiYmlmZjQiOnJldHVybiBYLmJpZmZ8fChYLmJpZmY9NCksVFQoYzcoSCxYKSxYKTtjYXNlImJpZmY1IjpYLmJpZmZ8fChYLmJpZmY9NSk7Y2FzZSJiaWZmOCI6Y2FzZSJ4bGEiOmNhc2UieGxzIjpyZXR1cm4g''@;'; put 'put ''WC5iaWZmfHwoWC5iaWZmPTgpLGZ1bmN0aW9uIFhBKEgscmUpe3ZhciBYPXJlfHx7fTtyZXR1cm4gbGMoZnVuY3Rpb24gVkEoSCxyZSl7dmFyIFg9cmV8fHt9LHdlPXB0LnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSkseGU9Ii9Xb3JrYm9vayI7c3dpdGNoKFguYm9va1R5cGV8fCJ4bHMiKXtj''@;'; put 'put ''YXNlInhscyI6WC5ib29rVHlwZT0iYmlmZjgiO2Nhc2UieGxhIjpYLmJvb2tUeXBlfHwoWC5ib29rVHlwZT0ieGxhIik7Y2FzZSJiaWZmOCI6eGU9Ii9Xb3JrYm9vayIsWC5iaWZmPTg7YnJlYWs7Y2FzZSJiaWZmNSI6eGU9Ii9Cb29rIixYLmJpZmY9NTticmVhaztkZWZhdWx0OnRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiaW52YWxpZCB0eXBlICIrWC5ib29rVHlwZSsiIGZvciBYTFMgQ0ZCIil9cmV0dXJuIHB0LnV0aWxzLmNmYl9hZGQod2UseGUsYzcoSCxYKSksOD09WC5iaWZmJiYoSC5Qcm9wc3x8SC5DdXN0cHJvcHMpJiZmdW5jdGlvbiBlRihILHJlKXt2YXIgWmUsWD1bXSx3ZT1bXSx4ZT1b''@;'; put 'put ''XSxGZT0wO2lmKEguUHJvcHMpZm9yKFplPW9uKEguUHJvcHMpLEZlPTA7RmU8WmUubGVuZ3RoOysrRmUpKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChWcCxaZVtGZV0pP1g6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZjLFplW0ZlXSk/d2U6eGUp''@;'; put 'put ''LnB1c2goW1plW0ZlXSxILlByb3BzW1plW0ZlXV1dKTtpZihILkN1c3Rwcm9wcylmb3IoWmU9b24oSC5DdXN0cHJvcHMpLEZlPTA7RmU8WmUubGVuZ3RoOysrRmUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEguUHJvcHN8fHt9LFplW0ZlXSl8fChPYmplY3QucHJvdG90''@;'; put 'put ''eXBlLmhhc093blByb3BlcnR5LmNhbGwoVnAsWmVbRmVdKT9YOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YyxaZVtGZV0pP3dlOnhlKS5wdXNoKFtaZVtGZV0sSC5DdXN0cHJvcHNbWmVbRmVdXV0pO3ZhciBWZT1bXTtmb3IoRmU9MDtGZTx4ZS5sZW5ndGg7KytGZSl6''@;'; put 'put ''cC5pbmRleE9mKHhlW0ZlXVswXSk+LTF8fG51bGwhPXhlW0ZlXVsxXSYmVmUucHVzaCh4ZVtGZV0pO3dlLmxlbmd0aCYmcHQudXRpbHMuY2ZiX2FkZChyZSwiL1x4MDVTdW1tYXJ5SW5mb3JtYXRpb24iLHFpKHdlLERkX1NJLHZjLGZiKSksKFgubGVuZ3RofHxWZS5sZW5ndGgpJiZwdC51dGls''@;'; put 'put ''cy5jZmJfYWRkKHJlLCIvXHgwNURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIixxaShYLERkX0RTSSxWcCx2OSxWZS5sZW5ndGg/VmU6bnVsbCwiMDVkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUiKSl9KEgsd2UpLDg9PVguYmlmZiYmSC52YmFyYXcmJmZ1bmN0aW9uIGV4KEgscmUp''@;'; put 'put ''e3JlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKFgsd2Upe2lmKDAhPXdlKXt2YXIgeGU9WC5yZXBsYWNlKC9bXlwvXSpbXC9dLywiL19WQkFfUFJPSkVDVF9DVVIvIik7Ii8iIT09eGUuc2xpY2UoLTEpJiZwdC51dGlscy5jZmJfYWRkKEgseGUscmUuRmlsZUluZGV4W3dlXS5jb250ZW50''@;'; put 'put ''KX19KX0od2UscHQucmVhZChILnZiYXJhdyx7dHlwZToic3RyaW5nIj09dHlwZW9mIEgudmJhcmF3PyJiaW5hcnkiOiJidWZmZXIifSkpLHdlfShILFgpLFgpfShILFgpO2Nhc2UieGxzeCI6Y2FzZSJ4bHNtIjpjYXNlInhsYW0iOmNhc2UieGxzYiI6Y2FzZSJvZHMiOnJldHVybiBmdW5jdGlv''@;'; put 'put ''biBjQyhILHJlKXt2YXIgWD1yZXx8e30sd2U9T2QoSCxYKSx4ZT17fTtpZihYLmNvbXByZXNzaW9uJiYoeGUuY29tcHJlc3Npb249IkRFRkxBVEUiKSxYLnBhc3N3b3JkKXhlLnR5cGU9SWU/Im5vZGVidWZmZXIiOiJzdHJpbmciO2Vsc2Ugc3dpdGNoKFgudHlwZSl7Y2FzZSJiYXNlNjQiOnhl''@;'; put 'put ''LnR5cGU9ImJhc2U2NCI7YnJlYWs7Y2FzZSJiaW5hcnkiOnhlLnR5cGU9InN0cmluZyI7YnJlYWs7Y2FzZSJzdHJpbmciOnRocm93IG5ldyBFcnJvcigiJ3N0cmluZycgb3V0cHV0IHR5cGUgaW52YWxpZCBmb3IgJyIrWC5ib29rVHlwZSsiJyBmaWxlcyIpO2Nhc2UiYnVmZmVyIjpjYXNlImZp''@;'; put 'put ''bGUiOnhlLnR5cGU9SWU/Im5vZGVidWZmZXIiOiJzdHJpbmciO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK1gudHlwZSl9dmFyIEZlPXdlLkZ1bGxQYXRocz9wdC53cml0ZSh3ZSx7ZmlsZVR5cGU6InppcCIsdHlwZTp7bm9kZWJ1ZmZlcjoiYnVm''@;'; put 'put ''ZmVyIixzdHJpbmc6ImJpbmFyeSJ9W3hlLnR5cGVdfHx4ZS50eXBlfSk6d2UuZ2VuZXJhdGUoeGUpO3JldHVybiBYLnBhc3N3b3JkJiZ2b2lkIDAhPT15Zj9sYyh5ZihGZSxYLnBhc3N3b3JkKSxYKToiZmlsZSI9PT1YLnR5cGU/ZnQoWC5maWxlLEZlKToic3RyaW5nIj09WC50eXBlP2owKEZl''@;'; put 'put ''KTpGZX0oSCxYKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIGJvb2tUeXBlIHwiK1guYm9va1R5cGUrInwiKX19ZnVuY3Rpb24gc0YoSCl7aWYoIUguYm9va1R5cGUpe3ZhciBYPUguZmlsZS5zbGljZShILmZpbGUubGFzdEluZGV4T2YoIi4iKSkudG9Mb3dlckNhc2Uo''@;'; put 'put ''KTtYLm1hdGNoKC9eXC5bYS16XSskLykmJihILmJvb2tUeXBlPVguc2xpY2UoMSkpLEguYm9va1R5cGU9e3hsczoiYmlmZjgiLGh0bToiaHRtbCIsc2xrOiJzeWxrIixzb2NpYWxjYWxjOiJldGgiLFNoMzN0SlM6IldURiJ9W0guYm9va1R5cGVdfHxILmJvb2tUeXBlfX1mdW5jdGlvbiBmQyhI''@;'; put 'put ''LHJlLFgpe3ZhciB3ZT1YfHx7fTtyZXR1cm4gd2UudHlwZT0iZmlsZSIsd2UuZmlsZT1yZSxzRih3ZSksZDcoSCx3ZSl9ZnVuY3Rpb24gJDQoSCxyZSxYLHdlLHhlLEZlLFplLFZlKXt2YXIgVWU9aGEoWCksU3Q9VmUuZGVmdmFsLEl0PVZlLnJhdyxQdD0hMCxRdD0xPT09eGU/W106e307aWYo''@;'; put 'put ''MSE9PXhlKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFF0LCJfX3Jvd051bV9fIix7dmFsdWU6WCxlbnVtZXJhYmxlOiExfSl9Y2F0Y2goenQpe1F0Ll9fcm93TnVtX189WH1lbHNlIFF0Ll9fcm93TnVtX189WDtpZighWmV8fEhbWF0pZm9yKHZh''@;'; put 'put ''ciBhbj1yZS5zLmM7YW48PXJlLmUuYzsrK2FuKXt2YXIgQ249WmU/SFtYXVthbl06SFt3ZVthbl0rVWVdO2lmKHZvaWQgMCE9PUNuJiZ2b2lkIDAhPT1Dbi50KXt2YXIgTHQ9Q24udjtzd2l0Y2goQ24udCl7Y2FzZSJ6IjppZihudWxsPT1MdClicmVhaztjb250aW51ZTtjYXNlImUiOkx0PTA9''@;'; put 'put ''PUx0P251bGw6dm9pZCAwO2JyZWFrO2Nhc2UicyI6Y2FzZSJkIjpjYXNlImIiOmNhc2UibiI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCB0eXBlICIrQ24udCl9aWYobnVsbCE9RmVbYW5dKXtpZihudWxsPT1MdClpZigiZSI9PUNuLnQmJm51bGw9PT1MdClR''@;'; put 'put ''dFtGZVthbl1dPW51bGw7ZWxzZSBpZih2b2lkIDAhPT1TdClRdFtGZVthbl1dPVN0O2Vsc2V7aWYoIUl0fHxudWxsIT09THQpY29udGludWU7UXRbRmVbYW5dXT1udWxsfWVsc2UgUXRbRmVbYW5dXT1JdD9MdDpqMShDbixMdCxWZSk7bnVsbCE9THQmJihQdD0hMSl9fWVsc2V7aWYodm9pZCAw''@;'; put 'put ''PT09U3QpY29udGludWU7bnVsbCE9RmVbYW5dJiYoUXRbRmVbYW5dXT1TdCl9fXJldHVybntyb3c6UXQsaXNlbXB0eTpQdH19ZnVuY3Rpb24gaEMoSCxyZSl7aWYobnVsbD09SHx8bnVsbD09SFsiIXJlZiJdKXJldHVybltdO3ZhciBYPXt0OiJuIix2OjB9LHdlPTAseGU9MSxGZT1bXSxaZT0w''@;'; put 'put ''LFZlPSIiLFVlPUpTT04ucGFyc2UoJ3sicyI6eyJyIjowLCJjIjowfSwiZSI6eyJyIjowLCJjIjowfX0nKSxTdD1yZXx8e30sSXQ9bnVsbCE9U3QucmFuZ2U/U3QucmFuZ2U6SFsiIXJlZiJdO3N3aXRjaCgxPT09U3QuaGVhZGVyP3dlPTE6IkEiPT09U3QuaGVhZGVyP3dlPTI6QXJyYXkuaXNB''@;'; put 'put ''cnJheShTdC5oZWFkZXIpP3dlPTM6bnVsbD09U3QuaGVhZGVyJiYod2U9MCksdHlwZW9mIEl0KXtjYXNlInN0cmluZyI6VWU9ZWEoSXQpO2JyZWFrO2Nhc2UibnVtYmVyIjooVWU9ZWEoSFsiIXJlZiJdKSkucy5yPUl0O2JyZWFrO2RlZmF1bHQ6VWU9SXR9d2U+MCYmKHhlPTApO3ZhciBQdD1o''@;'; put 'put ''YShVZS5zLnIpLFF0PVtdLGFuPVtdLENuPTAsTHQ9MCx6dD1BcnJheS5pc0FycmF5KEgpLGZuPVVlLnMucixJbj0wLFJuPTA7Zm9yKHp0JiYhSFtmbl0mJihIW2ZuXT1bXSksSW49VWUucy5jO0luPD1VZS5lLmM7KytJbilzd2l0Y2goUXRbSW5dPUxsKEluKSxYPXp0P0hbZm5dW0luXTpIW1F0''@;'; put 'put ''W0luXStQdF0sd2Upe2Nhc2UgMTpGZVtJbl09SW4tVWUucy5jO2JyZWFrO2Nhc2UgMjpGZVtJbl09UXRbSW5dO2JyZWFrO2Nhc2UgMzpGZVtJbl09U3QuaGVhZGVyW0luLVVlLnMuY107YnJlYWs7ZGVmYXVsdDpmb3IobnVsbD09WCYmKFg9SlNPTi5wYXJzZSgneyJ3IjogIl9fRU1QVFkiLCAi''@;'; put 'put ''dCI6ICJzIn0nKSksVmU9WmU9ajEoWCxudWxsLFN0KSxMdD0wLFJuPTA7Um48RmUubGVuZ3RoOysrUm4pRmVbUm5dPT1WZSYmKFZlPVplKyJfIisgKytMdCk7RmVbSW5dPVZlfWZvcihmbj1VZS5zLnIreGU7Zm48PVVlLmUucjsrK2ZuKXt2YXIgVm49JDQoSCxVZSxmbixRdCx3ZSxGZSx6dCxT''@;'; put 'put ''dCk7KCExPT09Vm4uaXNlbXB0eXx8KDE9PT13ZT8hMSE9PVN0LmJsYW5rcm93czpTdC5ibGFua3Jvd3MpKSYmKGFuW0NuKytdPVZuLnJvdyl9cmV0dXJuIGFuLmxlbmd0aD1Dbixhbn12YXIgcDU9LyIvZztmdW5jdGlvbiAkcihILHJlLFgsd2UseGUsRmUsWmUsVmUpe2Zvcih2YXIgVWU9ITAs''@;'; put 'put ''U3Q9W10sSXQ9IiIsUHQ9aGEoWCksUXQ9cmUucy5jO1F0PD1yZS5lLmM7KytRdClpZih3ZVtRdF0pe3ZhciBhbj1WZS5kZW5zZT8oSFtYXXx8W10pW1F0XTpIW3dlW1F0XStQdF07aWYobnVsbD09YW4pSXQ9IiI7ZWxzZSBpZihudWxsIT1hbi52KXtVZT0hMSxJdD0iIitqMShhbixudWxsLFZl''@;'; put 'put ''KTtmb3IodmFyIENuPTAsTHQ9MDtDbiE9PUl0Lmxlbmd0aDsrK0NuKWlmKChMdD1JdC5jaGFyQ29kZUF0KENuKSk9PT14ZXx8THQ9PT1GZXx8MzQ9PT1MdCl7SXQ9JyInK0l0LnJlcGxhY2UocDUsJyIiJykrJyInO2JyZWFrfSJJRCI9PUl0JiYoSXQ9JyJJRCInKX1lbHNlIG51bGw9PWFuLmZ8''@;'; put 'put ''fGFuLkY/SXQ9IiI6KFVlPSExLChJdD0iPSIrYW4uZikuaW5kZXhPZigiLCIpPj0wJiYoSXQ9JyInK0l0LnJlcGxhY2UocDUsJyIiJykrJyInKSk7U3QucHVzaChJdCl9cmV0dXJuITE9PT1WZS5ibGFua3Jvd3MmJlVlP251bGw6U3Quam9pbihaZSl9ZnVuY3Rpb24gUjYoSCxyZSl7dmFyIFg9''@;'; put 'put ''W10sd2U9bnVsbD09cmU/e306cmU7aWYobnVsbD09SHx8bnVsbD09SFsiIXJlZiJdKXJldHVybiIiO3ZhciB4ZT1lYShIWyIhcmVmIl0pLEZlPXZvaWQgMCE9PXdlLkZTP3dlLkZTOiIsIixaZT1GZS5jaGFyQ29kZUF0KDApLFZlPXZvaWQgMCE9PXdlLlJTP3dlLlJTOiJcbiIsVWU9VmUuY2hh''@;'; put 'put ''ckNvZGVBdCgwKSxTdD1uZXcgUmVnRXhwKCgifCI9PUZlPyJcXHwiOkZlKSsiKyQiKSxJdD0iIixQdD1bXTt3ZS5kZW5zZT1BcnJheS5pc0FycmF5KEgpO2Zvcih2YXIgUXQ9d2Uuc2tpcEhpZGRlbiYmSFsiIWNvbHMiXXx8W10sYW49d2Uuc2tpcEhpZGRlbiYmSFsiIXJvd3MiXXx8W10sQ249''@;'; put 'put ''eGUucy5jO0NuPD14ZS5lLmM7KytDbikoUXRbQ25dfHx7fSkuaGlkZGVufHwoUHRbQ25dPUxsKENuKSk7Zm9yKHZhciBMdD14ZS5zLnI7THQ8PXhlLmUucjsrK0x0KShhbltMdF18fHt9KS5oaWRkZW58fG51bGwhPShJdD0kcihILHhlLEx0LFB0LFplLFVlLEZlLHdlKSkmJih3ZS5zdHJpcCYm''@;'; put 'put ''KEl0PUl0LnJlcGxhY2UoU3QsIiIpKSxYLnB1c2goSXQrVmUpKTtyZXR1cm4gZGVsZXRlIHdlLmRlbnNlLFguam9pbigiIil9ZnVuY3Rpb24gbHMoSCxyZSl7cmV8fChyZT17fSkscmUuRlM9Ilx0IixyZS5SUz0iXG4iO3ZhciBYPVI2KEgscmUpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3B0''@;'; put 'put ''YWJsZXx8InN0cmluZyI9PXJlLnR5cGUpcmV0dXJuIFg7dmFyIHdlPWNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsWCwic3RyIik7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1KStTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NCkrd2V9ZnVuY3Rpb24gamgoSCl7dmFyIFgscmU9IiIsd2U9''@;'; put 'put ''IiI7aWYobnVsbD09SHx8bnVsbD09SFsiIXJlZiJdKXJldHVybltdO3ZhciBWZSx4ZT1lYShIWyIhcmVmIl0pLEZlPSIiLFplPVtdLFVlPVtdLFN0PUFycmF5LmlzQXJyYXkoSCk7Zm9yKFZlPXhlLnMuYztWZTw9eGUuZS5jOysrVmUpWmVbVmVdPUxsKFZlKTtmb3IodmFyIEl0PXhlLnMucjtJ''@;'; put 'put ''dDw9eGUuZS5yOysrSXQpZm9yKEZlPWhhKEl0KSxWZT14ZS5zLmM7VmU8PXhlLmUuYzsrK1ZlKWlmKHJlPVplW1ZlXStGZSx3ZT0iIix2b2lkIDAhPT0oWD1TdD8oSFtJdF18fFtdKVtWZV06SFtyZV0pKXtpZihudWxsIT1YLkYpe2lmKHJlPVguRiwhWC5mKWNvbnRpbnVlO3dlPVguZiwtMT09''@;'; put 'put ''cmUuaW5kZXhPZigiOiIpJiYocmU9cmUrIjoiK3JlKX1pZihudWxsIT1YLmYpd2U9WC5mO2Vsc2V7aWYoInoiPT1YLnQpY29udGludWU7aWYoIm4iPT1YLnQmJm51bGwhPVgudil3ZT0iIitYLnY7ZWxzZSBpZigiYiI9PVgudCl3ZT1YLnY/IlRSVUUiOiJGQUxTRSI7ZWxzZSBpZih2b2lkIDAh''@;'; put 'put ''PT1YLncpd2U9IiciK1gudztlbHNle2lmKHZvaWQgMD09PVgudiljb250aW51ZTt3ZT0icyI9PVgudD8iJyIrWC52OiIiK1gudn19VWVbVWUubGVuZ3RoXT1yZSsiPSIrd2V9cmV0dXJuIFVlfWZ1bmN0aW9uIEJkKEgscmUsWCl7dmFyIHdlPVh8fHt9LHhlPSshd2Uuc2tpcEhlYWRlcixGZT1I''@;'; put 'put ''fHx7fSxaZT0wLFZlPTA7aWYoRmUmJm51bGwhPXdlLm9yaWdpbilpZigibnVtYmVyIj09dHlwZW9mIHdlLm9yaWdpbilaZT13ZS5vcmlnaW47ZWxzZXt2YXIgVWU9InN0cmluZyI9PXR5cGVvZiB3ZS5vcmlnaW4/cG8od2Uub3JpZ2luKTp3ZS5vcmlnaW47WmU9VWUucixWZT1VZS5jfXZhciBT''@;'; put 'put ''dCxJdD1KU09OLnBhcnNlKCd7InMiOiB7ImMiOjAsICJyIjowfSwgImUiOiB7ImMiOjAsICJyIjowfX0nKTtpZihJdC5lLmM9VmUsSXQuZS5yPVplK3JlLmxlbmd0aC0xK3hlLEZlWyIhcmVmIl0pe3ZhciBQdD1lYShGZVsiIXJlZiJdKTtJdC5lLmM9TWF0aC5tYXgoSXQuZS5jLFB0LmUuYyks''@;'; put 'put ''SXQuZS5yPU1hdGgubWF4KEl0LmUucixQdC5lLnIpLC0xPT1aZSYmKEl0LmUucj0oWmU9UHQuZS5yKzEpK3JlLmxlbmd0aC0xK3hlKX1lbHNlLTE9PVplJiYoWmU9MCxJdC5lLnI9cmUubGVuZ3RoLTEreGUpO3ZhciBRdD13ZS5oZWFkZXJ8fFtdLGFuPTA7cmUuZm9yRWFjaChmdW5jdGlvbihM''@;'; put 'put ''dCx6dCl7b24oTHQpLmZvckVhY2goZnVuY3Rpb24oZm4pey0xPT0oYW49UXQuaW5kZXhPZihmbikpJiYoUXRbYW49UXQubGVuZ3RoXT1mbik7dmFyIEluPUx0W2ZuXSxSbj0ieiIsVm49IiIsSXI9UTAoe2M6VmUrYW4scjpaZSt6dCt4ZX0pO2lmKFN0PWsxLnNoZWV0X2dldF9jZWxsKEZlLEly''@;'; put 'put ''KSwhSW58fCJvYmplY3QiIT10eXBlb2YgSW58fEluIGluc3RhbmNlb2YgRGF0ZSl7aWYoIm51bWJlciI9PXR5cGVvZiBJbj9Sbj0ibiI6ImJvb2xlYW4iPT10eXBlb2YgSW4/Um49ImIiOiJzdHJpbmciPT10eXBlb2YgSW4/Um49InMiOkluIGluc3RhbmNlb2YgRGF0ZT8oUm49ImQiLHdlLmNl''@;'; put 'put ''bGxEYXRlc3x8KFJuPSJuIixJbj1jdChJbikpLFZuPVN0LnomJkYuaXNfZGF0ZShTdC56KT9TdC56OndlLmRhdGVORnx8Ri5fdGFibGVbMTRdKTpudWxsPT09SW4mJndlLm51bGxFcnJvciYmKFJuPSJlIixJbj0wKSxTdD8oU3QudD1SbixTdC52PUluLGRlbGV0ZSBTdC53LGRlbGV0ZSBTdC5S''@;'; put 'put ''LFZuJiYoU3Quej1WbikpOkZlW0lyXT1TdD17dDpSbix2OklufSxWbiYmKFN0Lno9Vm4pLFN0JiZTdC5oKXRyeXtpZihTdC5SPW9zLmh0bWxfdG9fcnMoU3QuaCksIVN0LnYpe1N0LnY9IiI7Zm9yKHZhciBpaT0wO2lpPFN0LlIubGVuZ3RoOysraWkpU3Qudis9U3QuUltpaV0udnx8IiJ9fWNh''@;'; put 'put ''dGNoKHlyKXt9fWVsc2UgRmVbSXJdPUlufSl9KSxJdC5lLmM9TWF0aC5tYXgoSXQuZS5jLFZlK1F0Lmxlbmd0aC0xKTt2YXIgQ249aGEoWmUpO2lmKHhlKWZvcihhbj0wO2FuPFF0Lmxlbmd0aDsrK2FuKUZlW0xsKGFuK1ZlKStDbl09e3Q6InMiLHY6UXRbYW5dfTtyZXR1cm4gRmVbIiFyZWYi''@;'; put 'put ''XT1BYShJdCksRmV9dmFyIGsxPXtlbmNvZGVfY29sOkxsLGVuY29kZV9yb3c6aGEsZW5jb2RlX2NlbGw6UTAsZW5jb2RlX3JhbmdlOkFhLGRlY29kZV9jb2w6WDIsZGVjb2RlX3JvdzpfYSxzcGxpdF9jZWxsOmZ1bmN0aW9uIGI0KEgpe3JldHVybiBILnJlcGxhY2UoLyhcJD9bQS1aXSopKFwk''@;'; put 'put ''P1xkKikvLCIkMSwkMiIpLnNwbGl0KCIsIil9LGRlY29kZV9jZWxsOnBvLGRlY29kZV9yYW5nZTpucyxmb3JtYXRfY2VsbDpqMSxnZXRfZm9ybXVsYWU6amgsbWFrZV9jc3Y6UjYsbWFrZV9qc29uOmhDLG1ha2VfZm9ybXVsYWU6amgsaHRtbF90b19yczpvcy5odG1sX3RvX3JzLHNoZWV0X2Fk''@;'; put 'put ''ZF9hb2E6bHUsc2hlZXRfYWRkX2pzb246QmQsc2hlZXRfYWRkX2RvbTpWaCxhb2FfdG9fc2hlZXQ6bGYsanNvbl90b19zaGVldDpmdW5jdGlvbiBLQShILHJlKXtyZXR1cm4gQmQobnVsbCxILHJlKX0sdGFibGVfdG9fc2hlZXQ6bkMsdGFibGVfdG9fYm9vazpmdW5jdGlvbiBDVChILHJlKXty''@;'; put 'put ''ZXR1cm4gbWMobkMoSCxyZSkscmUpfSxzaGVldF90b19jc3Y6UjYsc2hlZXRfdG9fdHh0OmxzLHNoZWV0X3RvX2pzb246aEMsc2hlZXRfdG9faHRtbDpvcy5mcm9tX3NoZWV0LHNoZWV0X3RvX2Zvcm11bGFlOmpoLHNoZWV0X3RvX3Jvd19vYmplY3RfYXJyYXk6aEN9O2Z1bmN0aW9uIExUKEgs''@;'; put 'put ''cmUsWCx3ZSx4ZSl7dmFyIEZlO2lmKEguc3R5bGUmJiEoSC5fcmFuZ2UmJihGZT0ic3RyaW5nIj09dHlwZW9mIEguX3JhbmdlP1UudXRpbHMuZGVjb2RlX3JhbmdlKEguX3JhbmdlKTpILl9yYW5nZSxYLmM+RmUuZS5jfHxYLmM8RmUucy5jfHxYLnI+RmUuZS5yfHxYLnI8RmUucy5yKSkmJkZl''@;'; put 'put ''KXt2YXIgWmU9SC5zdHlsZS5zdHlsZTtpZihaZSl7WmUud2hvbGVUYWJsZSYmazEuYXBwbHlfc3R5bGVfZGVsdGEod2UsWmUud2hvbGVUYWJsZSk7ZTppZihaZS5oZWFkZXJSb3cpaWYoeGUpe2lmKFguciE9RmUucy5yKWJyZWFrIGU7bnIoSC5zdHlsZS5jb2xoZWFkKXx8azEuYXBwbHlfc3R5''@;'; put 'put ''bGVfZGVsdGEod2UsWmUuaGVhZGVyUm93KX1lbHNle2lmKFguciE9RmUucy5yKWJyZWFrIGU7bnIoSC5oZWFkZXIpfHxrMS5hcHBseV9zdHlsZV9kZWx0YSh3ZSxaZS5oZWFkZXJSb3cpfX19fXZvaWQgMCE9PVNUJiYoazEudGVzdF9wYXNzd29yZD1TVCksdm9pZCAwIT09TGkmJihrMS5oYXNo''@;'; put 'put ''X3Bhc3N3b3JkPUxpKSxrMS5zaGVldF9zZXRfcmFuZ2Vfc3R5bGU9ZnVuY3Rpb24oSCxyZSxYKXtpZihYKXt2YXIgd2U9InN0cmluZyI9PXR5cGVvZiByZT9lYShyZSk6cmU7bnVsbCE9d2UuciYmbnVsbCE9d2UuYyYmKHdlPXtzOndlLGU6d2V9KTt2YXIgVmUseGU9d2Uucy5yLEZlPTAsWmU9''@;'; put 'put ''IiIsVWU9bnMoSFsiIXJlZiJdfHwiQTEiKTtVZS5zLnI+d2Uucy5yJiYoVWUucy5yPXdlLnMuciksVWUucy5jPndlLnMuYyYmKFVlLnMuYz13ZS5zLmMpLFVlLmUucjx3ZS5lLnImJihVZS5lLnI9d2UuZS5yKSxVZS5lLmM8d2UuZS5jJiYoVWUuZS5jPXdlLmUuYyksSFsiIXJlZiJdPUFhKFVl''@;'; put 'put ''KTtmb3IodmFyIEl0PUFycmF5LmlzQXJyYXkoSCk7eGU8PXdlLmUucjsrK3hlKWZvcihGZT13ZS5zLmM7RmU8PXdlLmUuYzsrK0ZlKUl0PyhIW3hlXXx8KEhbeGVdPVtdKSxIW3hlXVtGZV18fChIW3hlXVtGZV09e3Q6InoifSksVmU9SFt4ZV1bRmVdKTooSFtaZT1RMCh7cjp4ZSxjOkZlfSld''@;'; put 'put ''fHwoSFtaZV09e3Q6InoifSksVmU9SFtaZV0pLFZlLnN8fChWZS5zPXt9KSxPYmplY3Qua2V5cyhYKS5mb3JFYWNoKFN0KSxWZS5zLnBhdHRlcm5UeXBlJiYhVmUucy5mZ0NvbG9yJiYoZGVsZXRlIFZlLnMucGF0dGVyblR5cGUsZGVsZXRlIFZlLnMuYmdDb2xvciksKFZlLnMuZmdDb2xvcnx8''@;'; put 'put ''VmUucy5iZ0NvbG9yKSYmIm5vbmUiPT0oVmUucy5wYXR0ZXJuVHlwZXx8Im5vbmUiKSYmKFZlLnMucGF0dGVyblR5cGU9InNvbGlkIik7aWYoeGU9d2Uucy5yLFgudG9wfHxudWxsPT09WC50b3ApZm9yKEZlPXdlLnMuYztGZTw9d2UuZS5jOysrRmUpe2lmKEl0KXtpZighSFt4ZV0pY29udGlu''@;'; put 'put ''dWU7VmU9SFt4ZV1bRmVdfWVsc2UgWmU9UTAoe3I6eGUsYzpGZX0pLFZlPUhbWmVdOyFWZXx8KG51bGw9PT1YLnRvcD9kZWxldGUgVmUucy50b3A6VmUucy50b3A9bG4oWC50b3ApKX1pZih4ZT13ZS5lLnIsWC5ib3R0b218fG51bGw9PT1YLmJvdHRvbSlmb3IoRmU9d2Uucy5jO0ZlPD13ZS5l''@;'; put 'put ''LmM7KytGZSl7aWYoSXQpe2lmKCFIW3hlXSljb250aW51ZTtWZT1IW3hlXVtGZV19ZWxzZSBaZT1RMCh7cjp4ZSxjOkZlfSksVmU9SFtaZV07IVZlfHwobnVsbD09PVguYm90dG9tP2RlbGV0ZSBWZS5zLmJvdHRvbTpWZS5zLmJvdHRvbT1sbihYLmJvdHRvbSkpfWlmKEZlPXdlLnMuYyxYLmxl''@;'; put 'put ''ZnR8fG51bGw9PT1YLmxlZnQpZm9yKHhlPXdlLnMucjt4ZTw9d2UuZS5yOysreGUpe2lmKEl0KXtpZighSFt4ZV0pY29udGludWU7VmU9SFt4ZV1bRmVdfWVsc2UgWmU9UTAoe3I6eGUsYzpGZX0pLFZlPUhbWmVdOyFWZXx8KG51bGw9PT1YLmxlZnQ/ZGVsZXRlIFZlLnMubGVmdDpWZS5zLmxl''@;'; put 'put ''ZnQ9bG4oWC5sZWZ0KSl9aWYoRmU9d2UuZS5jLFgucmlnaHR8fG51bGw9PT1YLnJpZ2h0KWZvcih4ZT13ZS5zLnI7eGU8PXdlLmUucjsrK3hlKXtpZihJdCl7aWYoIUhbeGVdKWNvbnRpbnVlO1ZlPUhbeGVdW0ZlXX1lbHNlIFplPVEwKHtyOnhlLGM6RmV9KSxWZT1IW1plXTshVmV8fChudWxs''@;'; put 'put ''PT09WC5yaWdodD9kZWxldGUgVmUucy5yaWdodDpWZS5zLnJpZ2h0PWxuKFgucmlnaHQpKX19ZnVuY3Rpb24gU3QoUHQpe2lmKCJ0b3AiIT1QdCYmImJvdHRvbSIhPVB0JiYibGVmdCIhPVB0JiYicmlnaHQiIT1QdCl7aWYoInoiPT1QdClyZXR1cm4gdm9pZChWZS56PVgueik7aWYoImFsaWdu''@;'; put 'put ''bWVudCI9PVB0KXJldHVybiB2b2lkKFZlLnNbUHRdP09iamVjdC5rZXlzKFhbUHRdKS5mb3JFYWNoKGZ1bmN0aW9uKFF0KXtWZS5zW1B0XVtRdF09WFtQdF1bUXRdfSk6VmUuc1tQdF09bG4oWFtQdF0pKTtpZigiaW5jb2wiPT1QdClyZXR1cm4gRmU+d2Uucy5jJiYobnVsbD09PVgubGVmdD9k''@;'; put 'put ''ZWxldGUgVmUucy5sZWZ0OlZlLnMubGVmdD0ib2JqZWN0Ij09dHlwZW9mIFhbUHRdP2xuKFhbUHRdKTpYW1B0XSksdm9pZChGZTx3ZS5lLmMmJihudWxsPT09WC5yaWdodD9kZWxldGUgVmUucy5yaWdodDpWZS5zLnJpZ2h0PSJvYmplY3QiPT10eXBlb2YgWFtQdF0/bG4oWFtQdF0pOlhbUHRd''@;'; put 'put ''KSk7aWYoImlucm93Ij09UHQpcmV0dXJuIHhlPndlLnMuciYmKG51bGw9PT1YLnRvcD9kZWxldGUgVmUucy50b3A6VmUucy50b3A9Im9iamVjdCI9PXR5cGVvZiBYW1B0XT9sbihYW1B0XSk6WFtQdF0pLHZvaWQoeGU8d2UuZS5yJiYobnVsbD09PVguYm90dG9tP2RlbGV0ZSBWZS5zLmJvdHRv''@;'; put 'put ''bTpWZS5zLmJvdHRvbT0ib2JqZWN0Ij09dHlwZW9mIFhbUHRdP2xuKFhbUHRdKTpYW1B0XSkpO251bGw9PT1YW1B0XT9kZWxldGUgVmUuc1tQdF06VmUuc1tQdF09WFtQdF0mJkFycmF5LmlzQXJyYXkoWFtQdF0pP1hbUHRdLnNsaWNlKCkubWFwKGZ1bmN0aW9uKFF0KXtyZXR1cm4ib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIFF0P2xuKFF0KTpRdH0pOiJvYmplY3QiPT10eXBlb2YgWFtQdF0/bG4oWFtQdF0pOlhbUHRdfX19LGsxLmFwcGx5X3N0eWxlX2RlbHRhPWZ1bmN0aW9uKEgscmUpe1sic3oiLCJib2xkIiwiaXRhbGljIiwidW5kZXJsaW5lIiwic3RyaWtlIiwibmFtZSIsInZhbGlnbiJdLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oWCl7dmFyIHdlPVg7ImJnQ29sb3IiPT1YP3dlPSJmZ0NvbG9yIjoiZmdDb2xvciI9PVgmJih3ZT0iYmdDb2xvciIpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZSxYKSYmKG51bGw9PT1yZVtYXT9kZWxldGUgSFt3ZV06bnVsbCE9cmVbWF0m''@;'; put 'put ''JihIW3dlXT1yZVtYXSkpfSksWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJhbGlnbm1lbnQiLCJwcm90ZWN0aW9uIiwiY29sb3IiLCJmZ0NvbG9yIiwiYmdDb2xvciJdLmZvckVhY2goZnVuY3Rpb24oWCl7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlLFgp''@;'; put 'put ''JiYobnVsbD09PXJlW1hdP2RlbGV0ZSBIW1hdOm51bGwhPXJlW1hdJiYoSFtYXT1sbihyZVtYXSkpKX0pfSxrMS5nZXRfY29tcHV0ZWRfc3R5bGU9ZnVuY3Rpb24oSCxyZSl7InN0cmluZyI9PXR5cGVvZiByZSYmKHJlPVUudXRpbHMuZGVjb2RlX2NlbGwocmUpKTt2YXIgWD1BcnJheS5pc0Fy''@;'; put 'put ''cmF5KEgpPyhIW3JlLnJdfHxbXSlbcmUuY106SFtVLnV0aWxzLmVuY29kZV9jZWxsKHJlKV0sd2U9bG4oWCYmWC5zfHx7fSk7cmV0dXJuIEhbIiF0YWJsZXMiXSYmSFsiIXRhYmxlcyJdLmZvckVhY2goZnVuY3Rpb24oeGUpe0xUKHhlLDAscmUsd2UpfSksSFsiIXBpdm90cyJdJiZIWyIhcGl2''@;'; put 'put ''b3RzIl0uZm9yRWFjaChmdW5jdGlvbih4ZSl7TFQoeGUsMCxyZSx3ZSwhMCl9KSx3ZX07dmFyIGRDPXt9O2sxLmNlbGxfYXJyYXlfdG9fY3N2X3Jvdz1mdW5jdGlvbihILHJlKXt2YXIgWD1udWxsPT1yZT97fTpyZSx3ZT12b2lkIDAhPT1YLkZTP1guRlM6IiwiLHhlPXdlLmNoYXJDb2RlQXQo''@;'; put 'put ''MCksRmU9dm9pZCAwIT09WC5SUz9YLlJTOiJcbiIsWmU9RmUuY2hhckNvZGVBdCgwKSxWZT1kQ1t3ZV18fChkQ1t3ZV09bmV3IFJlZ0V4cCgoInwiPT13ZT8iXFx8Ijp3ZSkrIiskIikpLFVlPWZ1bmN0aW9uIGNGKEgscmUsWCx3ZSx4ZSl7Zm9yKHZhciBGZT0hMCxaZT1bXSxWZT0iIixVZT0w''@;'; put 'put ''O1VlPD1ILmxlbmd0aC0xOysrVWUpe3ZhciBTdD1IW1VlXTtpZihudWxsPT1TdClWZT0iIjtlbHNlIGlmKG51bGwhPVN0LnYpe0ZlPSExLFZlPSIiK2oxKFN0LG51bGwseGUpO2Zvcih2YXIgSXQ9MCxQdD0wO0l0IT09VmUubGVuZ3RoOysrSXQpaWYoKFB0PVZlLmNoYXJDb2RlQXQoSXQpKT09''@;'; put 'put ''PXJlfHxQdD09PVh8fDM0PT09UHQpe1ZlPSciJytWZS5yZXBsYWNlKHA1LCciIicpKyciJzticmVha30iSUQiPT1WZSYmKFZlPSciSUQiJyl9ZWxzZSBudWxsPT1TdC5mfHxTdC5GP1ZlPSIiOihGZT0hMSwoVmU9Ij0iK1N0LmYpLmluZGV4T2YoIiwiKT49MCYmKFZlPSciJytWZS5yZXBsYWNl''@;'; put 'put ''KHA1LCciIicpKyciJykpO1plLnB1c2goVmUpfXJldHVybiExPT09eGUuYmxhbmtyb3dzJiZGZT9udWxsOlplLmpvaW4od2UpfShILHhlLFplLHdlLFgpO3JldHVybiBYLnN0cmlwJiYoVWU9VWUucmVwbGFjZShWZSwiIikpLFVlK0ZlfSxmdW5jdGlvbihIKXtmdW5jdGlvbiBYKEZlLFplLFZl''@;'; put 'put ''KXtyZXR1cm4gbnVsbCE9RmVbWmVdP0ZlW1plXTpGZVtaZV09VmV9ZnVuY3Rpb24gd2UoRmUsWmUsVmUpe2lmKCJzdHJpbmciPT10eXBlb2YgWmUpe2lmKEFycmF5LmlzQXJyYXkoRmUpKXt2YXIgVWU9cG8oWmUpO3JldHVybiBGZVtVZS5yXXx8KEZlW1VlLnJdPVtdKSxGZVtVZS5yXVtVZS5j''@;'; put 'put ''XXx8KEZlW1VlLnJdW1VlLmNdPXt0OiJ6In0pfXJldHVybiBGZVtaZV18fChGZVtaZV09e3Q6InoifSl9cmV0dXJuIHdlKEZlLFEwKCJudW1iZXIiIT10eXBlb2YgWmU/WmU6e3I6WmUsYzpWZXx8MH0pKX1ILmNvbnN0cz1ILmNvbnN0c3x8e30sSC5zaGVldF9nZXRfY2VsbD13ZSxILmJvb2tf''@;'; put 'put ''bmV3PWZ1bmN0aW9uKCl7cmV0dXJue1NoZWV0TmFtZXM6W10sU2hlZXRzOnt9fX0sSC5ib29rX2FwcGVuZF9zaGVldD1mdW5jdGlvbihGZSxaZSxWZSl7aWYoIVZlKWZvcih2YXIgVWU9MTtVZTw9NjU1MzUmJi0xIT1GZS5TaGVldE5hbWVzLmluZGV4T2YoVmU9IlNoZWV0IitVZSk7KytVZSk7''@;'; put 'put ''aWYoV18oVmUpLEZlLlNoZWV0TmFtZXMuaW5kZXhPZihWZSk+PTApdGhyb3cgbmV3IEVycm9yKCJXb3Jrc2hlZXQgd2l0aCBuYW1lIHwiK1ZlKyJ8IGFscmVhZHkgZXhpc3RzISIpO0ZlLlNoZWV0TmFtZXMucHVzaChWZSksRmUuU2hlZXRzW1ZlXT1aZX0sSC5ib29rX3NldF9zaGVldF92aXNp''@;'; put 'put ''YmlsaXR5PWZ1bmN0aW9uKEZlLFplLFZlKXtYKEZlLCJXb3JrYm9vayIse30pLFgoRmUuV29ya2Jvb2ssIlNoZWV0cyIsW10pO3ZhciBVZT1mdW5jdGlvbiB4ZShGZSxaZSl7aWYoIm51bWJlciI9PXR5cGVvZiBaZSl7aWYoWmU+PTAmJkZlLlNoZWV0TmFtZXMubGVuZ3RoPlplKXJldHVybiBa''@;'; put 'put ''ZTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0ICMgIitaZSl9aWYoInN0cmluZyI9PXR5cGVvZiBaZSl7dmFyIFZlPUZlLlNoZWV0TmFtZXMuaW5kZXhPZihaZSk7aWYoVmU+LTEpcmV0dXJuIFZlO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgbmFtZSB8Iita''@;'; put 'put ''ZSsifCIpfXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgfCIrWmUrInwiKX0oRmUsWmUpO3N3aXRjaChYKEZlLldvcmtib29rLlNoZWV0cyxVZSx7fSksVmUpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJCYWQgc2hlZXQgdmlz''@;'; put 'put ''aWJpbGl0eSBzZXR0aW5nICIrVmUpfUZlLldvcmtib29rLlNoZWV0c1tVZV0uSGlkZGVuPVZlfSxmdW5jdGlvbiByZShGZSl7RmUuZm9yRWFjaChmdW5jdGlvbihaZSl7SC5jb25zdHNbWmVbMF1dPVplWzFdfSl9KFtbIlNIRUVUX1ZJU0lCTEUiLDBdLFsiU0hFRVRfSElEREVOIiwxXSxbIlNI''@;'; put 'put ''RUVUX1ZFUllfSElEREVOIiwyXV0pLEguY2VsbF9zZXRfbnVtYmVyX2Zvcm1hdD1mdW5jdGlvbihGZSxaZSl7cmV0dXJuIEZlLno9WmUsRmV9LEguY2VsbF9zZXRfaHlwZXJsaW5rPWZ1bmN0aW9uKEZlLFplLFZlKXtyZXR1cm4gWmU/KEZlLmw9e1RhcmdldDpaZX0sVmUmJihGZS5sLlRvb2x0''@;'; put 'put ''aXA9VmUpLEZlLnN8fChGZS5zPXt9KSxGZS5zLmNvbG9yPXt0aGVtZToxMH0pOihkZWxldGUgRmUubCxGZS5zJiZGZS5zLmNvbG9yJiYxMD09RmUucy5jb2xvci50aGVtZSYmZGVsZXRlIEZlLnMuY29sb3IpLEZlfSxILmNlbGxfc2V0X2ludGVybmFsX2xpbms9ZnVuY3Rpb24oRmUsWmUsVmUp''@;'; put 'put ''e3JldHVybiBILmNlbGxfc2V0X2h5cGVybGluayhGZSwiIyIrWmUsVmUpfSxILmNlbGxfYWRkX2NvbW1lbnQ9ZnVuY3Rpb24oRmUsWmUsVmUpe0ZlLmN8fChGZS5jPVtdKSxGZS5jLnB1c2goe3Q6WmUsYTpWZXx8IlNoZWV0SlMifSl9LEguc2hlZXRfc2V0X2FycmF5X2Zvcm11bGE9ZnVuY3Rp''@;'; put 'put ''b24oRmUsWmUsVmUpe2Zvcih2YXIgVWU9InN0cmluZyIhPXR5cGVvZiBaZT9aZTplYShaZSksU3Q9InN0cmluZyI9PXR5cGVvZiBaZT9aZTpBYShaZSksSXQ9VWUucy5yO0l0PD1VZS5lLnI7KytJdClmb3IodmFyIFB0PVVlLnMuYztQdDw9VWUuZS5jOysrUHQpe3ZhciBRdD13ZShGZSxJdCxQ''@;'; put 'put ''dCk7UXQudD0ibiIsUXQuRj1TdCxkZWxldGUgUXQudixJdD09VWUucy5yJiZQdD09VWUucy5jJiYoUXQuZj1WZSl9cmV0dXJuIEZlfX0oazEpLEllJiZmdW5jdGlvbigpe3ZhciBIPUwoMjk1KS5SZWFkYWJsZTtVLnN0cmVhbT17dG9fanNvbjpmdW5jdGlvbih4ZSxGZSl7dmFyIFplPUgoe29i''@;'; put 'put ''amVjdE1vZGU6ITB9KTtpZihudWxsPT14ZXx8bnVsbD09eGVbIiFyZWYiXSlyZXR1cm4gWmUucHVzaChudWxsKSxaZTt2YXIgVmU9e3Q6Im4iLHY6MH0sVWU9MCxTdD0xLEl0PVtdLFB0PTAsUXQ9IiIsYW49e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSxDbj1GZXx8e30sTHQ9bnVsbCE9Q24u''@;'; put 'put ''cmFuZ2U/Q24ucmFuZ2U6eGVbIiFyZWYiXTtzd2l0Y2goMT09PUNuLmhlYWRlcj9VZT0xOiJBIj09PUNuLmhlYWRlcj9VZT0yOkFycmF5LmlzQXJyYXkoQ24uaGVhZGVyKSYmKFVlPTMpLHR5cGVvZiBMdCl7Y2FzZSJzdHJpbmciOmFuPWVhKEx0KTticmVhaztjYXNlIm51bWJlciI6KGFuPWVh''@;'; put 'put ''KHhlWyIhcmVmIl0pKS5zLnI9THQ7YnJlYWs7ZGVmYXVsdDphbj1MdH1VZT4wJiYoU3Q9MCk7dmFyIHp0PWhhKGFuLnMuciksZm49W10sSW49MCxSbj1BcnJheS5pc0FycmF5KHhlKSxWbj1hbi5zLnIsSXI9MCxpaT0wO2ZvcihSbiYmIXhlW1ZuXSYmKHhlW1ZuXT1bXSksSXI9YW4ucy5jO0ly''@;'; put 'put ''PD1hbi5lLmM7KytJcilzd2l0Y2goZm5bSXJdPUxsKElyKSxWZT1Sbj94ZVtWbl1bSXJdOnhlW2ZuW0lyXSt6dF0sVWUpe2Nhc2UgMTpJdFtJcl09SXItYW4ucy5jO2JyZWFrO2Nhc2UgMjpJdFtJcl09Zm5bSXJdO2JyZWFrO2Nhc2UgMzpJdFtJcl09Q24uaGVhZGVyW0lyLWFuLnMuY107YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDpmb3IobnVsbD09VmUmJihWZT17dzoiX19FTVBUWSIsdDoicyJ9KSxRdD1QdD1qMShWZSxudWxsLENuKSxJbj0wLGlpPTA7aWk8SXQubGVuZ3RoOysraWkpSXRbaWldPT1RdCYmKFF0PVB0KyJfIisgKytJbik7SXRbSXJdPVF0fXJldHVybiBWbj1hbi5zLnIrU3QsWmUuX3Jl''@;'; put 'put ''YWQ9ZnVuY3Rpb24oKXtpZihWbj5hbi5lLnIpcmV0dXJuIFplLnB1c2gobnVsbCk7Zm9yKDtWbjw9YW4uZS5yOyl7dmFyIHlyPSQ0KHhlLGFuLFZuLGZuLFVlLEl0LFJuLENuKTtpZigrK1ZuLCExPT09eXIuaXNlbXB0eXx8KDE9PT1VZT8hMSE9PUNuLmJsYW5rcm93czpDbi5ibGFua3Jvd3Mp''@;'; put 'put ''KXtaZS5wdXNoKHlyLnJvdyk7YnJlYWt9fX0sWmV9LHRvX2h0bWw6ZnVuY3Rpb24oeGUsRmUpe3ZhciBaZT1IKCksVmU9RmV8fHt9LFN0PW51bGwhPVZlLmZvb3Rlcj9WZS5mb290ZXI6b3MuRU5EO1plLnB1c2gobnVsbCE9VmUuaGVhZGVyP1ZlLmhlYWRlcjpvcy5CRUdJTik7dmFyIEl0PW5z''@;'; put 'put ''KHhlWyIhcmVmIl0pO1ZlLmRlbnNlPUFycmF5LmlzQXJyYXkoeGUpLFplLnB1c2gob3MuX3ByZWFtYmxlKHhlLEl0LFZlKSk7dmFyIFB0PUl0LnMucixRdD0hMSxhbj1bXTtyZXR1cm4gWmUuX3JlYWQ9ZnVuY3Rpb24oKXtpZihQdD5JdC5lLnIpcmV0dXJuIFF0fHwoUXQ9ITAsWmUucHVzaCgi''@;'; put 'put ''PC90YWJsZT4iK1N0KSksWmUucHVzaChudWxsKTtmb3IoO1B0PD1JdC5lLnI7KXtaZS5wdXNoKG9zLl9yb3coeGUsSXQsUHQsVmUsYW4sIiIpKSwrK1B0O2JyZWFrfX0sWmV9LHRvX2NzdjpmdW5jdGlvbih4ZSxGZSl7dmFyIFplPUgoKSxWZT1udWxsPT1GZT97fTpGZTtpZihudWxsPT14ZXx8''@;'; put 'put ''bnVsbD09eGVbIiFyZWYiXSlyZXR1cm4gWmUucHVzaChudWxsKSxaZTt2YXIgVWU9ZWEoeGVbIiFyZWYiXSksU3Q9dm9pZCAwIT09VmUuRlM/VmUuRlM6IiwiLEl0PVN0LmNoYXJDb2RlQXQoMCksUHQ9dm9pZCAwIT09VmUuUlM/VmUuUlM6IlxuIixRdD1QdC5jaGFyQ29kZUF0KDApLGFuPW5l''@;'; put 'put ''dyBSZWdFeHAoKCJ8Ij09U3Q/IlxcfCI6U3QpKyIrJCIpLENuPSIiLEx0PVtdO1ZlLmRlbnNlPUFycmF5LmlzQXJyYXkoeGUpO2Zvcih2YXIgenQ9VmUuc2tpcEhpZGRlbiYmeGVbIiFjb2xzIl18fFtdLGZuPVZlLnNraXBIaWRkZW4mJnhlWyIhcm93cyJdfHxbXSxJbj1VZS5zLmM7SW48PVVl''@;'; put 'put ''LmUuYzsrK0luKSh6dFtJbl18fHt9KS5oaWRkZW58fChMdFtJbl09TGwoSW4pKTt2YXIgUm49VWUucy5yLFZuPSExO3JldHVybiBaZS5fcmVhZD1mdW5jdGlvbigpe2lmKCFWbilyZXR1cm4gVm49ITAsWmUucHVzaCgiXHVmZWZmIik7Zm9yKDtSbjw9VWUuZS5yOylpZigrK1JuLCEoZm5bUm4t''@;'; put 'put ''MV18fHt9KS5oaWRkZW4mJm51bGwhPShDbj0kcih4ZSxVZSxSbi0xLEx0LEl0LFF0LFN0LFZlKSkpe1ZlLnN0cmlwJiYoQ249Q24ucmVwbGFjZShhbiwiIikpLFplLnB1c2goQ24rUHQpO2JyZWFrfXJldHVybiBSbj5VZS5lLnI/WmUucHVzaChudWxsKTp2b2lkIDB9LFplfX19KCksdm9pZCAw''@;'; put 'put ''IT09TkEmJihVLnBhcnNlX3hsc2NmYj1OQSksVS5wYXJzZV96aXA9Z28sVS5yZWFkPVJkLFUucmVhZEZpbGU9SkEsVS5yZWFkRmlsZVN5bmM9SkEsVS53cml0ZT1kNyxVLndyaXRlRmlsZT1mQyxVLndyaXRlRmlsZVN5bmM9ZkMsVS53cml0ZUZpbGVBc3luYz1mdW5jdGlvbiB1RihILHJlLFgs''@;'; put 'put ''d2Upe3ZhciB4ZT1YfHx7fTt4ZS50eXBlPSJmaWxlIix4ZS5maWxlPUgsc0YoeGUpLHhlLnR5cGU9ImJ1ZmZlciI7dmFyIEZlPXdlO3JldHVybiBGZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwoRmU9WCksbXQud3JpdGVGaWxlKEgsZDcocmUseGUpLEZlKX0sVS5zZXRfZGF0ZV9zdHlsZT1mdW5j''@;'; put 'put ''dGlvbiBBdChIKXtzd2l0Y2goSCl7Y2FzZSAwOnplKCk7YnJlYWs7Y2FzZSAxOiFmdW5jdGlvbiBZZSgpe3ZhciBIPW5ldyBEYXRlO0N0PVJ0LmdldFRpbWUoKSs2ZTQqKEguZ2V0VGltZXpvbmVPZmZzZXQoKS1SdC5nZXRUaW1lem9uZU9mZnNldCgpKTt2YXIgcmU9SC5nZXRUaW1lem9uZU9m''@;'; put 'put ''ZnNldCgpO2N0PWZ1bmN0aW9uKHdlLHhlKXt2YXIgRmU9d2UuZ2V0VGltZSgpO3JldHVybiB4ZSYmKEZlLT0xMjYzMTY4ZTUpLChGZS0oUnQuZ2V0VGltZSgpKzZlNCood2UuZ2V0VGltZXpvbmVPZmZzZXQoKS1SdC5nZXRUaW1lem9uZU9mZnNldCgpKSkpLzg2NGU1fSxOdD1mdW5jdGlvbih3''@;'; put 'put ''ZSl7dmFyIHhlPW5ldyBEYXRlO3JldHVybiB4ZS5zZXRUaW1lKDI0KndlKjYwKjYwKjFlMytDdCkseGUuZ2V0VGltZXpvbmVPZmZzZXQoKSE9PXJlJiZ4ZS5zZXRUaW1lKHhlLmdldFRpbWUoKSs2ZTQqKHhlLmdldFRpbWV6b25lT2Zmc2V0KCktcmUpKSx4ZX19KCl9fSxVLnV0aWxzPWsxLFUu''@;'; put 'put ''U1NGPUYsdm9pZCAwIT09cHQmJihVLkNGQj1wdCl9KEplKX0sODc5Nzc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IGdlPUplO2dlLmJpZ251bT1MKDEzODU0KSxnZS5kZWZpbmU9TCgzOTUxNikuZGVmaW5lLGdlLmJhc2U9TCg4NzgxMyksZ2UuY29uc3RhbnRzPUwoNTQ1OSksZ2Uu''@;'; put 'put ''ZGVjb2RlcnM9TCg3MDE5NiksZ2UuZW5jb2RlcnM9TCgyMTEzMSl9LDM5NTE2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBnZT1MKDIxMTMxKSxCPUwoNzAxOTYpLEU9TCg4Mzg5NCk7ZnVuY3Rpb24gVShRLFope3RoaXMubmFtZT1RLHRoaXMuYm9keT1aLHRoaXMuZGVjb2RlcnM9''@;'; put 'put ''e30sdGhpcy5lbmNvZGVycz17fX1KZS5kZWZpbmU9ZnVuY3Rpb24oWixpZSl7cmV0dXJuIG5ldyBVKFosaWUpfSxVLnByb3RvdHlwZS5fY3JlYXRlTmFtZWQ9ZnVuY3Rpb24oWil7Y29uc3QgaWU9dGhpcy5uYW1lO2Z1bmN0aW9uIGxlKFkpe3RoaXMuX2luaXROYW1lZChZLGllKX1yZXR1cm4g''@;'; put 'put ''RShsZSxaKSxsZS5wcm90b3R5cGUuX2luaXROYW1lZD1mdW5jdGlvbihXLE4pe1ouY2FsbCh0aGlzLFcsTil9LG5ldyBsZSh0aGlzKX0sVS5wcm90b3R5cGUuX2dldERlY29kZXI9ZnVuY3Rpb24oWil7cmV0dXJuIHRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoWj1afHwiZGVyIil8fCh0''@;'; put 'put ''aGlzLmRlY29kZXJzW1pdPXRoaXMuX2NyZWF0ZU5hbWVkKEJbWl0pKSx0aGlzLmRlY29kZXJzW1pdfSxVLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oWixpZSxsZSl7cmV0dXJuIHRoaXMuX2dldERlY29kZXIoaWUpLmRlY29kZShaLGxlKX0sVS5wcm90b3R5cGUuX2dldEVuY29kZXI9ZnVu''@;'; put 'put ''Y3Rpb24oWil7cmV0dXJuIHRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoWj1afHwiZGVyIil8fCh0aGlzLmVuY29kZXJzW1pdPXRoaXMuX2NyZWF0ZU5hbWVkKGdlW1pdKSksdGhpcy5lbmNvZGVyc1taXX0sVS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKFosaWUsbGUpe3JldHVybiB0''@;'; put 'put ''aGlzLl9nZXRFbmNvZGVyKGllKS5lbmNvZGUoWixsZSl9fSwxMjc2OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgZ2U9TCg4Mzg5NCksQj1MKDQ5MTkpLmIsRT1MKDYyMDM4KS5CdWZmZXI7ZnVuY3Rpb24gTWUoUSxaKXtCLmNhbGwodGhpcyxaKSxFLmlzQnVmZmVyKFEpPyh0aGlz''@;'; put 'put ''LmJhc2U9USx0aGlzLm9mZnNldD0wLHRoaXMubGVuZ3RoPVEubGVuZ3RoKTp0aGlzLmVycm9yKCJJbnB1dCBub3QgQnVmZmVyIil9ZnVuY3Rpb24gVShRLFope2lmKEFycmF5LmlzQXJyYXkoUSkpdGhpcy5sZW5ndGg9MCx0aGlzLnZhbHVlPVEubWFwKGZ1bmN0aW9uKGllKXtyZXR1cm4gVS5p''@;'; put 'put ''c0VuY29kZXJCdWZmZXIoaWUpfHwoaWU9bmV3IFUoaWUsWikpLHRoaXMubGVuZ3RoKz1pZS5sZW5ndGgsaWV9LHRoaXMpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBRKXtpZighKDA8PVEmJlE8PTI1NSkpcmV0dXJuIFouZXJyb3IoIm5vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUiKTt0''@;'; put 'put ''aGlzLnZhbHVlPVEsdGhpcy5sZW5ndGg9MX1lbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgUSl0aGlzLnZhbHVlPVEsdGhpcy5sZW5ndGg9RS5ieXRlTGVuZ3RoKFEpO2Vsc2V7aWYoIUUuaXNCdWZmZXIoUSkpcmV0dXJuIFouZXJyb3IoIlVuc3VwcG9ydGVkIHR5cGU6ICIrdHlwZW9mIFEpO3Ro''@;'; put 'put ''aXMudmFsdWU9USx0aGlzLmxlbmd0aD1RLmxlbmd0aH19Z2UoTWUsQiksSmUuQz1NZSxNZS5pc0RlY29kZXJCdWZmZXI9ZnVuY3Rpb24oWil7cmV0dXJuIFogaW5zdGFuY2VvZiBNZXx8Im9iamVjdCI9PXR5cGVvZiBaJiZFLmlzQnVmZmVyKFouYmFzZSkmJiJEZWNvZGVyQnVmZmVyIj09PVou''@;'; put 'put ''Y29uc3RydWN0b3IubmFtZSYmIm51bWJlciI9PXR5cGVvZiBaLm9mZnNldCYmIm51bWJlciI9PXR5cGVvZiBaLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIFouc2F2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIFoucmVzdG9yZSYmImZ1bmN0aW9uIj09dHlwZW9mIFouaXNFbXB0eSYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFoucmVhZFVJbnQ4JiYiZnVuY3Rpb24iPT10eXBlb2YgWi5za2lwJiYiZnVuY3Rpb24iPT10eXBlb2YgWi5yYXd9LE1lLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7cmV0dXJue29mZnNldDp0aGlzLm9mZnNldCxyZXBvcnRlcjpCLnByb3RvdHlwZS5zYXZlLmNhbGwo''@;'; put 'put ''dGhpcyl9fSxNZS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihaKXtjb25zdCBpZT1uZXcgTWUodGhpcy5iYXNlKTtyZXR1cm4gaWUub2Zmc2V0PVoub2Zmc2V0LGllLmxlbmd0aD10aGlzLm9mZnNldCx0aGlzLm9mZnNldD1aLm9mZnNldCxCLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhp''@;'; put 'put ''cyxaLnJlcG9ydGVyKSxpZX0sTWUucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQ9PT10aGlzLmxlbmd0aH0sTWUucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihaKXtyZXR1cm4gdGhpcy5vZmZzZXQrMTw9dGhpcy5sZW5ndGg/dGhpcy5iYXNlLnJl''@;'; put 'put ''YWRVSW50OCh0aGlzLm9mZnNldCsrLCEwKTp0aGlzLmVycm9yKFp8fCJEZWNvZGVyQnVmZmVyIG92ZXJydW4iKX0sTWUucHJvdG90eXBlLnNraXA9ZnVuY3Rpb24oWixpZSl7aWYoISh0aGlzLm9mZnNldCtaPD10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXMuZXJyb3IoaWV8fCJEZWNvZGVyQnVm''@;'; put 'put ''ZmVyIG92ZXJydW4iKTtjb25zdCBsZT1uZXcgTWUodGhpcy5iYXNlKTtyZXR1cm4gbGUuX3JlcG9ydGVyU3RhdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxsZS5vZmZzZXQ9dGhpcy5vZmZzZXQsbGUubGVuZ3RoPXRoaXMub2Zmc2V0K1osdGhpcy5vZmZzZXQrPVosbGV9LE1lLnByb3RvdHlwZS5y''@;'; put 'put ''YXc9ZnVuY3Rpb24oWil7cmV0dXJuIHRoaXMuYmFzZS5zbGljZShaP1oub2Zmc2V0OnRoaXMub2Zmc2V0LHRoaXMubGVuZ3RoKX0sSmUuUj1VLFUuaXNFbmNvZGVyQnVmZmVyPWZ1bmN0aW9uKFope3JldHVybiBaIGluc3RhbmNlb2YgVXx8Im9iamVjdCI9PXR5cGVvZiBaJiYiRW5jb2RlckJ1''@;'; put 'put ''ZmZlciI9PT1aLmNvbnN0cnVjdG9yLm5hbWUmJiJudW1iZXIiPT10eXBlb2YgWi5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBaLmpvaW59LFUucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24oWixpZSl7cmV0dXJuIFp8fChaPUUuYWxsb2ModGhpcy5sZW5ndGgpKSxpZXx8KGllPTApLDA9PT10''@;'; put 'put ''aGlzLmxlbmd0aHx8KEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk/dGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGxlKXtsZS5qb2luKFosaWUpLGllKz1sZS5sZW5ndGh9KTooIm51bWJlciI9PXR5cGVvZiB0aGlzLnZhbHVlP1pbaWVdPXRoaXMudmFsdWU6InN0cmluZyI9PXR5cGVvZiB0''@;'; put 'put ''aGlzLnZhbHVlP1oud3JpdGUodGhpcy52YWx1ZSxpZSk6RS5pc0J1ZmZlcih0aGlzLnZhbHVlKSYmdGhpcy52YWx1ZS5jb3B5KFosaWUpLGllKz10aGlzLmxlbmd0aCkpLFp9fSw4NzgxMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgZ2U9SmU7Z2UuUmVwb3J0ZXI9TCg0OTE5KS5i''@;'; put 'put ''LGdlLkRlY29kZXJCdWZmZXI9TCgxMjc2OSkuQyxnZS5FbmNvZGVyQnVmZmVyPUwoMTI3NjkpLlIsZ2UuTm9kZT1MKDMxNDMwKX0sMzE0MzA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IGdlPUwoNDkxOSkuYixCPUwoMTI3NjkpLlIsRT1MKDEyNzY5KS5DLE1lPUwoMzIzOTEpLFU9''@;'; put 'put ''WyJzZXEiLCJzZXFvZiIsInNldCIsInNldG9mIiwib2JqaWQiLCJib29sIiwiZ2VudGltZSIsInV0Y3RpbWUiLCJudWxsXyIsImVudW0iLCJpbnQiLCJvYmpEZXNjIiwiYml0c3RyIiwiYm1wc3RyIiwiY2hhcnN0ciIsImdlbnN0ciIsImdyYXBoc3RyIiwiaWE1c3RyIiwiaXNvNjQ2c3RyIiwi''@;'; put 'put ''bnVtc3RyIiwib2N0c3RyIiwicHJpbnRzdHIiLCJ0NjFzdHIiLCJ1bmlzdHIiLCJ1dGY4c3RyIiwidmlkZW9zdHIiXSxRPVsia2V5Iiwib2JqIiwidXNlIiwib3B0aW9uYWwiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiZGVmIiwiY2hvaWNlIiwiYW55IiwiY29udGFpbnMiXS5jb25jYXQoVSk7''@;'; put 'put ''ZnVuY3Rpb24gaWUoWSxXLE4pe2NvbnN0IGVlPXt9O3RoaXMuX2Jhc2VTdGF0ZT1lZSxlZS5uYW1lPU4sZWUuZW5jPVksZWUucGFyZW50PVd8fG51bGwsZWUuY2hpbGRyZW49bnVsbCxlZS50YWc9bnVsbCxlZS5hcmdzPW51bGwsZWUucmV2ZXJzZUFyZ3M9bnVsbCxlZS5jaG9pY2U9bnVsbCxl''@;'; put 'put ''ZS5vcHRpb25hbD0hMSxlZS5hbnk9ITEsZWUub2JqPSExLGVlLnVzZT1udWxsLGVlLnVzZURlY29kZXI9bnVsbCxlZS5rZXk9bnVsbCxlZS5kZWZhdWx0PW51bGwsZWUuZXhwbGljaXQ9bnVsbCxlZS5pbXBsaWNpdD1udWxsLGVlLmNvbnRhaW5zPW51bGwsZWUucGFyZW50fHwoZWUuY2hpbGRy''@;'; put 'put ''ZW49W10sdGhpcy5fd3JhcCgpKX1YZS5leHBvcnRzPWllO2NvbnN0IGxlPVsiZW5jIiwicGFyZW50IiwiY2hpbGRyZW4iLCJ0YWciLCJhcmdzIiwicmV2ZXJzZUFyZ3MiLCJjaG9pY2UiLCJvcHRpb25hbCIsImFueSIsIm9iaiIsInVzZSIsImFsdGVyZWRVc2UiLCJrZXkiLCJkZWZhdWx0Iiwi''@;'; put 'put ''ZXhwbGljaXQiLCJpbXBsaWNpdCIsImNvbnRhaW5zIl07aWUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGUsTj17fTtsZS5mb3JFYWNoKGZ1bmN0aW9uKHEpe05bcV09V1txXX0pO2NvbnN0IGVlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKE4ucGFyZW50''@;'; put 'put ''KTtyZXR1cm4gZWUuX2Jhc2VTdGF0ZT1OLGVlfSxpZS5wcm90b3R5cGUuX3dyYXA9ZnVuY3Rpb24oKXtjb25zdCBXPXRoaXMuX2Jhc2VTdGF0ZTtRLmZvckVhY2goZnVuY3Rpb24oTil7dGhpc1tOXT1mdW5jdGlvbigpe2NvbnN0IHE9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJu''@;'; put 'put ''IFcuY2hpbGRyZW4ucHVzaChxKSxxW05dLmFwcGx5KHEsYXJndW1lbnRzKX19LHRoaXMpfSxpZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGU7TWUobnVsbD09PU4ucGFyZW50KSxXLmNhbGwodGhpcyksTi5jaGlsZHJlbj1OLmNoaWxkcmVuLmZp''@;'; put 'put ''bHRlcihmdW5jdGlvbihlZSl7cmV0dXJuIGVlLl9iYXNlU3RhdGUucGFyZW50PT09dGhpc30sdGhpcyksTWUuZXF1YWwoTi5jaGlsZHJlbi5sZW5ndGgsMSwiUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkIil9LGllLnByb3RvdHlwZS5fdXNlQXJncz1mdW5jdGlvbihXKXtjb25z''@;'; put 'put ''dCBOPXRoaXMuX2Jhc2VTdGF0ZSxlZT1XLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3J9LHRoaXMpO1c9Vy5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIShxIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcil9LHRoaXMpLDAhPT1lZS5s''@;'; put 'put ''ZW5ndGgmJihNZShudWxsPT09Ti5jaGlsZHJlbiksTi5jaGlsZHJlbj1lZSxlZS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3EuX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30sdGhpcykpLDAhPT1XLmxlbmd0aCYmKE1lKG51bGw9PT1OLmFyZ3MpLE4uYXJncz1XLE4ucmV2ZXJzZUFyZ3M9Vy5tYXAoZnVu''@;'; put 'put ''Y3Rpb24ocSl7aWYoIm9iamVjdCIhPXR5cGVvZiBxfHxxLmNvbnN0cnVjdG9yIT09T2JqZWN0KXJldHVybiBxO2NvbnN0IEo9e307cmV0dXJuIE9iamVjdC5rZXlzKHEpLmZvckVhY2goZnVuY3Rpb24oc2Upe3NlPT0oMHxzZSkmJihzZXw9MCksSltxW3NlXV09c2V9KSxKfSkpfSxbIl9wZWVr''@;'; put 'put ''VGFnIiwiX2RlY29kZVRhZyIsIl91c2UiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJfZGVjb2RlTnVsbCIsIl9kZWNvZGVJbnQiLCJfZGVjb2RlQm9vbCIsIl9kZWNvZGVMaXN0IiwiX2VuY29kZUNvbXBvc2l0ZSIsIl9lbmNvZGVTdHIiLCJfZW5jb2RlT2Jq''@;'; put 'put ''aWQiLCJfZW5jb2RlVGltZSIsIl9lbmNvZGVOdWxsIiwiX2VuY29kZUludCIsIl9lbmNvZGVCb29sIl0uZm9yRWFjaChmdW5jdGlvbihZKXtpZS5wcm90b3R5cGVbWV09ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoWSsiIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICIrdGhpcy5f''@;'; put 'put ''YmFzZVN0YXRlLmVuYyl9fSksVS5mb3JFYWNoKGZ1bmN0aW9uKFkpe2llLnByb3RvdHlwZVtZXT1mdW5jdGlvbigpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlLGVlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIE1lKG51bGw9PT1OLnRhZyksTi50YWc9WSx0''@;'; put 'put ''aGlzLl91c2VBcmdzKGVlKSx0aGlzfX0pLGllLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oVyl7TWUoVyk7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIE1lKG51bGw9PT1OLnVzZSksTi51c2U9Vyx0aGlzfSxpZS5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fYmFzZVN0YXRlLm9wdGlvbmFsPSEwLHRoaXN9LGllLnByb3RvdHlwZS5kZWY9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIE1lKG51bGw9PT1OLmRlZmF1bHQpLE4uZGVmYXVsdD1XLE4ub3B0aW9uYWw9ITAsdGhpc30saWUucHJvdG90eXBlLmV4cGxpY2l0''@;'; put 'put ''PWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO3JldHVybiBNZShudWxsPT09Ti5leHBsaWNpdCYmbnVsbD09PU4uaW1wbGljaXQpLE4uZXhwbGljaXQ9Vyx0aGlzfSxpZS5wcm90b3R5cGUuaW1wbGljaXQ9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGU7cmV0''@;'; put 'put ''dXJuIE1lKG51bGw9PT1OLmV4cGxpY2l0JiZudWxsPT09Ti5pbXBsaWNpdCksTi5pbXBsaWNpdD1XLHRoaXN9LGllLnByb3RvdHlwZS5vYmo9ZnVuY3Rpb24oKXtjb25zdCBXPXRoaXMuX2Jhc2VTdGF0ZSxOPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFcu''@;'; put 'put ''b2JqPSEwLDAhPT1OLmxlbmd0aCYmdGhpcy5fdXNlQXJncyhOKSx0aGlzfSxpZS5wcm90b3R5cGUua2V5PWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO3JldHVybiBNZShudWxsPT09Ti5rZXkpLE4ua2V5PVcsdGhpc30saWUucHJvdG90eXBlLmFueT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9iYXNlU3RhdGUuYW55PSEwLHRoaXN9LGllLnByb3RvdHlwZS5jaG9pY2U9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIE1lKG51bGw9PT1OLmNob2ljZSksTi5jaG9pY2U9Vyx0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKFcpLm1hcChmdW5j''@;'; put 'put ''dGlvbihlZSl7cmV0dXJuIFdbZWVdfSkpLHRoaXN9LGllLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihXKXtjb25zdCBOPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gTWUobnVsbD09PU4udXNlKSxOLmNvbnRhaW5zPVcsdGhpc30saWUucHJvdG90eXBlLl9kZWNvZGU9ZnVuY3Rpb24oVyxO''@;'; put 'put ''KXtjb25zdCBlZT10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PWVlLnBhcmVudClyZXR1cm4gVy53cmFwUmVzdWx0KGVlLmNoaWxkcmVuWzBdLl9kZWNvZGUoVyxOKSk7bGV0IGFlLHE9ZWUuZGVmYXVsdCxKPSEwLHNlPW51bGw7aWYobnVsbCE9PWVlLmtleSYmKHNlPVcuZW50ZXJLZXkoZWUu''@;'; put 'put ''a2V5KSksZWUub3B0aW9uYWwpe2xldCBmZT1udWxsO2lmKG51bGwhPT1lZS5leHBsaWNpdD9mZT1lZS5leHBsaWNpdDpudWxsIT09ZWUuaW1wbGljaXQ/ZmU9ZWUuaW1wbGljaXQ6bnVsbCE9PWVlLnRhZyYmKGZlPWVlLnRhZyksbnVsbCE9PWZlfHxlZS5hbnkpe2lmKEo9dGhpcy5fcGVla1Rh''@;'; put 'put ''ZyhXLGZlLGVlLmFueSksVy5pc0Vycm9yKEopKXJldHVybiBKfWVsc2V7Y29uc3QgZGU9Vy5zYXZlKCk7dHJ5e251bGw9PT1lZS5jaG9pY2U/dGhpcy5fZGVjb2RlR2VuZXJpYyhlZS50YWcsVyxOKTp0aGlzLl9kZWNvZGVDaG9pY2UoVyxOKSxKPSEwfWNhdGNoKHZlKXtKPSExfVcucmVzdG9y''@;'; put 'put ''ZShkZSl9fWlmKGVlLm9iaiYmSiYmKGFlPVcuZW50ZXJPYmplY3QoKSksSil7aWYobnVsbCE9PWVlLmV4cGxpY2l0KXtjb25zdCBkZT10aGlzLl9kZWNvZGVUYWcoVyxlZS5leHBsaWNpdCk7aWYoVy5pc0Vycm9yKGRlKSlyZXR1cm4gZGU7Vz1kZX1jb25zdCBmZT1XLm9mZnNldDtpZihudWxs''@;'; put 'put ''PT09ZWUudXNlJiZudWxsPT09ZWUuY2hvaWNlKXtsZXQgZGU7ZWUuYW55JiYoZGU9Vy5zYXZlKCkpO2NvbnN0IHZlPXRoaXMuX2RlY29kZVRhZyhXLG51bGwhPT1lZS5pbXBsaWNpdD9lZS5pbXBsaWNpdDplZS50YWcsZWUuYW55KTtpZihXLmlzRXJyb3IodmUpKXJldHVybiB2ZTtlZS5hbnk/''@;'; put 'put ''cT1XLnJhdyhkZSk6Vz12ZX1pZihOJiZOLnRyYWNrJiZudWxsIT09ZWUudGFnJiZOLnRyYWNrKFcucGF0aCgpLGZlLFcubGVuZ3RoLCJ0YWdnZWQiKSxOJiZOLnRyYWNrJiZudWxsIT09ZWUudGFnJiZOLnRyYWNrKFcucGF0aCgpLFcub2Zmc2V0LFcubGVuZ3RoLCJjb250ZW50IiksZWUuYW55''@;'; put 'put ''fHwocT1udWxsPT09ZWUuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoZWUudGFnLFcsTik6dGhpcy5fZGVjb2RlQ2hvaWNlKFcsTikpLFcuaXNFcnJvcihxKSlyZXR1cm4gcTtpZighZWUuYW55JiZudWxsPT09ZWUuY2hvaWNlJiZudWxsIT09ZWUuY2hpbGRyZW4mJmVlLmNoaWxkcmVuLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24odmUpe3ZlLl9kZWNvZGUoVyxOKX0pLGVlLmNvbnRhaW5zJiYoIm9jdHN0ciI9PT1lZS50YWd8fCJiaXRzdHIiPT09ZWUudGFnKSl7Y29uc3QgZGU9bmV3IEUocSk7cT10aGlzLl9nZXRVc2UoZWUuY29udGFpbnMsVy5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUo''@;'; put 'put ''ZGUsTil9fXJldHVybiBlZS5vYmomJkomJihxPVcubGVhdmVPYmplY3QoYWUpKSxudWxsPT09ZWUua2V5fHxudWxsPT09cSYmITAhPT1KP251bGwhPT1zZSYmVy5leGl0S2V5KHNlKTpXLmxlYXZlS2V5KHNlLGVlLmtleSxxKSxxfSxpZS5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWM9ZnVuY3Rp''@;'; put 'put ''b24oVyxOLGVlKXtjb25zdCBxPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4ic2VxIj09PVd8fCJzZXQiPT09Vz9udWxsOiJzZXFvZiI9PT1XfHwic2V0b2YiPT09Vz90aGlzLl9kZWNvZGVMaXN0KE4sVyxxLmFyZ3NbMF0sZWUpOi9zdHIkLy50ZXN0KFcpP3RoaXMuX2RlY29kZVN0cihOLFcsZWUp''@;'; put 'put ''OiJvYmppZCI9PT1XJiZxLmFyZ3M/dGhpcy5fZGVjb2RlT2JqaWQoTixxLmFyZ3NbMF0scS5hcmdzWzFdLGVlKToib2JqaWQiPT09Vz90aGlzLl9kZWNvZGVPYmppZChOLG51bGwsbnVsbCxlZSk6ImdlbnRpbWUiPT09V3x8InV0Y3RpbWUiPT09Vz90aGlzLl9kZWNvZGVUaW1lKE4sVyxlZSk6''@;'; put 'put ''Im51bGxfIj09PVc/dGhpcy5fZGVjb2RlTnVsbChOLGVlKToiYm9vbCI9PT1XP3RoaXMuX2RlY29kZUJvb2woTixlZSk6Im9iakRlc2MiPT09Vz90aGlzLl9kZWNvZGVTdHIoTixXLGVlKToiaW50Ij09PVd8fCJlbnVtIj09PVc/dGhpcy5fZGVjb2RlSW50KE4scS5hcmdzJiZxLmFyZ3NbMF0s''@;'; put 'put ''ZWUpOm51bGwhPT1xLnVzZT90aGlzLl9nZXRVc2UocS51c2UsTi5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoTixlZSk6Ti5lcnJvcigidW5rbm93biB0YWc6ICIrVyl9LGllLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKFcsTil7Y29uc3QgZWU9dGhpcy5fYmFzZVN0YXRlO3JldHVy''@;'; put 'put ''biBlZS51c2VEZWNvZGVyPXRoaXMuX3VzZShXLE4pLE1lKG51bGw9PT1lZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUucGFyZW50KSxlZS51c2VEZWNvZGVyPWVlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5jaGlsZHJlblswXSxlZS5pbXBsaWNpdCE9PWVlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5p''@;'; put 'put ''bXBsaWNpdCYmKGVlLnVzZURlY29kZXI9ZWUudXNlRGVjb2Rlci5jbG9uZSgpLGVlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdD1lZS5pbXBsaWNpdCksZWUudXNlRGVjb2Rlcn0saWUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2U9ZnVuY3Rpb24oVyxOKXtjb25zdCBlZT10aGlzLl9i''@;'; put 'put ''YXNlU3RhdGU7bGV0IHE9bnVsbCxKPSExO3JldHVybiBPYmplY3Qua2V5cyhlZS5jaG9pY2UpLnNvbWUoZnVuY3Rpb24oc2Upe2NvbnN0IGFlPVcuc2F2ZSgpLGZlPWVlLmNob2ljZVtzZV07dHJ5e2NvbnN0IGRlPWZlLl9kZWNvZGUoVyxOKTtpZihXLmlzRXJyb3IoZGUpKXJldHVybiExO3E9''@;'; put 'put ''e3R5cGU6c2UsdmFsdWU6ZGV9LEo9ITB9Y2F0Y2goZGUpe3JldHVybiBXLnJlc3RvcmUoYWUpLCExfXJldHVybiEwfSx0aGlzKSxKP3E6Vy5lcnJvcigiQ2hvaWNlIG5vdCBtYXRjaGVkIil9LGllLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbihXKXtyZXR1cm4gbmV3''@;'; put 'put ''IEIoVyx0aGlzLnJlcG9ydGVyKX0saWUucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24oVyxOLGVlKXtjb25zdCBxPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsIT09cS5kZWZhdWx0JiZxLmRlZmF1bHQ9PT1XKXJldHVybjtjb25zdCBKPXRoaXMuX2VuY29kZVZhbHVlKFcsTixlZSk7cmV0dXJu''@;'; put 'put ''IHZvaWQgMD09PUp8fHRoaXMuX3NraXBEZWZhdWx0KEosTixlZSk/dm9pZCAwOkp9LGllLnByb3RvdHlwZS5fZW5jb2RlVmFsdWU9ZnVuY3Rpb24oVyxOLGVlKXtjb25zdCBxPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09cS5wYXJlbnQpcmV0dXJuIHEuY2hpbGRyZW5bMF0uX2VuY29kZShX''@;'; put 'put ''LE58fG5ldyBnZSk7bGV0IEo9bnVsbDtpZih0aGlzLnJlcG9ydGVyPU4scS5vcHRpb25hbCYmdm9pZCAwPT09Vyl7aWYobnVsbD09PXEuZGVmYXVsdClyZXR1cm47Vz1xLmRlZmF1bHR9bGV0IHNlPW51bGwsYWU9ITE7aWYocS5hbnkpSj10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFcpO2Vs''@;'; put 'put ''c2UgaWYocS5jaG9pY2UpSj10aGlzLl9lbmNvZGVDaG9pY2UoVyxOKTtlbHNlIGlmKHEuY29udGFpbnMpc2U9dGhpcy5fZ2V0VXNlKHEuY29udGFpbnMsZWUpLl9lbmNvZGUoVyxOKSxhZT0hMDtlbHNlIGlmKHEuY2hpbGRyZW4pc2U9cS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oZmUpe2lmKCJu''@;'; put 'put ''dWxsXyI9PT1mZS5fYmFzZVN0YXRlLnRhZylyZXR1cm4gZmUuX2VuY29kZShudWxsLE4sVyk7aWYobnVsbD09PWZlLl9iYXNlU3RhdGUua2V5KXJldHVybiBOLmVycm9yKCJDaGlsZCBzaG91bGQgaGF2ZSBhIGtleSIpO2NvbnN0IGRlPU4uZW50ZXJLZXkoZmUuX2Jhc2VTdGF0ZS5rZXkpO2lm''@;'; put 'put ''KCJvYmplY3QiIT10eXBlb2YgVylyZXR1cm4gTi5lcnJvcigiQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Iik7Y29uc3QgdmU9ZmUuX2VuY29kZShXW2ZlLl9iYXNlU3RhdGUua2V5XSxOLFcpO3JldHVybiBOLmxlYXZlS2V5KGRlKSx2ZX0sdGhpcykuZmlsdGVyKGZ1''@;'; put 'put ''bmN0aW9uKGZlKXtyZXR1cm4gZmV9KSxzZT10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHNlKTtlbHNlIGlmKCJzZXFvZiI9PT1xLnRhZ3x8InNldG9mIj09PXEudGFnKXtpZighcS5hcmdzfHwxIT09cS5hcmdzLmxlbmd0aClyZXR1cm4gTi5lcnJvcigiVG9vIG1hbnkgYXJncyBmb3IgOiAi''@;'; put 'put ''K3EudGFnKTtpZighQXJyYXkuaXNBcnJheShXKSlyZXR1cm4gTi5lcnJvcigic2Vxb2Yvc2V0b2YsIGJ1dCBkYXRhIGlzIG5vdCBBcnJheSIpO2NvbnN0IGZlPXRoaXMuY2xvbmUoKTtmZS5fYmFzZVN0YXRlLmltcGxpY2l0PW51bGwsc2U9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihXLm1h''@;'; put 'put ''cChmdW5jdGlvbihkZSl7cmV0dXJuIHRoaXMuX2dldFVzZSh0aGlzLl9iYXNlU3RhdGUuYXJnc1swXSxXKS5fZW5jb2RlKGRlLE4pfSxmZSkpfWVsc2UgbnVsbCE9PXEudXNlP0o9dGhpcy5fZ2V0VXNlKHEudXNlLGVlKS5fZW5jb2RlKFcsTik6KHNlPXRoaXMuX2VuY29kZVByaW1pdGl2ZShx''@;'; put 'put ''LnRhZyxXKSxhZT0hMCk7aWYoIXEuYW55JiZudWxsPT09cS5jaG9pY2Upe2NvbnN0IGZlPW51bGwhPT1xLmltcGxpY2l0P3EuaW1wbGljaXQ6cS50YWcsZGU9bnVsbD09PXEuaW1wbGljaXQ/InVuaXZlcnNhbCI6ImNvbnRleHQiO251bGw9PT1mZT9udWxsPT09cS51c2UmJk4uZXJyb3IoIlRh''@;'; put 'put ''ZyBjb3VsZCBiZSBvbWl0dGVkIG9ubHkgZm9yIC51c2UoKSIpOm51bGw9PT1xLnVzZSYmKEo9dGhpcy5fZW5jb2RlQ29tcG9zaXRlKGZlLGFlLGRlLHNlKSl9cmV0dXJuIG51bGwhPT1xLmV4cGxpY2l0JiYoSj10aGlzLl9lbmNvZGVDb21wb3NpdGUocS5leHBsaWNpdCwhMSwiY29udGV4dCIs''@;'; put 'put ''SikpLEp9LGllLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlPWZ1bmN0aW9uKFcsTil7Y29uc3QgZWU9dGhpcy5fYmFzZVN0YXRlLHE9ZWUuY2hvaWNlW1cudHlwZV07cmV0dXJuIHF8fE1lKCExLFcudHlwZSsiIG5vdCBmb3VuZCBpbiAiK0pTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKGVlLmNo''@;'; put 'put ''b2ljZSkpKSxxLl9lbmNvZGUoVy52YWx1ZSxOKX0saWUucHJvdG90eXBlLl9lbmNvZGVQcmltaXRpdmU9ZnVuY3Rpb24oVyxOKXtjb25zdCBlZT10aGlzLl9iYXNlU3RhdGU7aWYoL3N0ciQvLnRlc3QoVykpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihOLFcpO2lmKCJvYmppZCI9PT1XJiZlZS5h''@;'; put 'put ''cmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChOLGVlLnJldmVyc2VBcmdzWzBdLGVlLmFyZ3NbMV0pO2lmKCJvYmppZCI9PT1XKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChOLG51bGwsbnVsbCk7aWYoImdlbnRpbWUiPT09V3x8InV0Y3RpbWUiPT09VylyZXR1cm4gdGhpcy5fZW5jb2Rl''@;'; put 'put ''VGltZShOLFcpO2lmKCJudWxsXyI9PT1XKXJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7aWYoImludCI9PT1XfHwiZW51bSI9PT1XKXJldHVybiB0aGlzLl9lbmNvZGVJbnQoTixlZS5hcmdzJiZlZS5yZXZlcnNlQXJnc1swXSk7aWYoImJvb2wiPT09VylyZXR1cm4gdGhpcy5fZW5jb2RlQm9v''@;'; put 'put ''bChOKTtpZigib2JqRGVzYyI9PT1XKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoTixXKTt0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHRhZzogIitXKX0saWUucHJvdG90eXBlLl9pc051bXN0cj1mdW5jdGlvbihXKXtyZXR1cm4vXlswLTkgXSokLy50ZXN0KFcpfSxpZS5wcm90b3R5cGUu''@;'; put 'put ''X2lzUHJpbnRzdHI9ZnVuY3Rpb24oVyl7cmV0dXJuL15bQS1aYS16MC05ICcoKSssLS4vOj0/XSokLy50ZXN0KFcpfX0sNDkxOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgZ2U9TCg4Mzg5NCk7ZnVuY3Rpb24gQihNZSl7dGhpcy5fcmVwb3J0ZXJTdGF0ZT17b2JqOm51bGwscGF0''@;'; put 'put ''aDpbXSxvcHRpb25zOk1lfHx7fSxlcnJvcnM6W119fWZ1bmN0aW9uIEUoTWUsVSl7dGhpcy5wYXRoPU1lLHRoaXMucmV0aHJvdyhVKX1KZS5iPUIsQi5wcm90b3R5cGUuaXNFcnJvcj1mdW5jdGlvbihVKXtyZXR1cm4gVSBpbnN0YW5jZW9mIEV9LEIucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24o''@;'; put 'put ''KXtjb25zdCBVPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJue29iajpVLm9iaixwYXRoTGVuOlUucGF0aC5sZW5ndGh9fSxCLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKFUpe2NvbnN0IFE9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtRLm9iaj1VLm9iaixRLnBhdGg9US5wYXRoLnNsaWNlKDAs''@;'; put 'put ''VS5wYXRoTGVuKX0sQi5wcm90b3R5cGUuZW50ZXJLZXk9ZnVuY3Rpb24oVSl7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKFUpfSxCLnByb3RvdHlwZS5leGl0S2V5PWZ1bmN0aW9uKFUpe2NvbnN0IFE9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtRLnBhdGg9US5wYXRoLnNsaWNl''@;'; put 'put ''KDAsVS0xKX0sQi5wcm90b3R5cGUubGVhdmVLZXk9ZnVuY3Rpb24oVSxRLFope2NvbnN0IGllPXRoaXMuX3JlcG9ydGVyU3RhdGU7dGhpcy5leGl0S2V5KFUpLG51bGwhPT1pZS5vYmomJihpZS5vYmpbUV09Wil9LEIucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVw''@;'; put 'put ''b3J0ZXJTdGF0ZS5wYXRoLmpvaW4oIi8iKX0sQi5wcm90b3R5cGUuZW50ZXJPYmplY3Q9ZnVuY3Rpb24oKXtjb25zdCBVPXRoaXMuX3JlcG9ydGVyU3RhdGUsUT1VLm9iajtyZXR1cm4gVS5vYmo9e30sUX0sQi5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24oVSl7Y29uc3QgUT10aGlz''@;'; put 'put ''Ll9yZXBvcnRlclN0YXRlLFo9US5vYmo7cmV0dXJuIFEub2JqPVUsWn0sQi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oVSl7bGV0IFE7Y29uc3QgWj10aGlzLl9yZXBvcnRlclN0YXRlLGllPVUgaW5zdGFuY2VvZiBFO2lmKFE9aWU/VTpuZXcgRShaLnBhdGgubWFwKGZ1bmN0aW9uKGxlKXty''@;'; put 'put ''ZXR1cm4iWyIrSlNPTi5zdHJpbmdpZnkobGUpKyJdIn0pLmpvaW4oIiIpLFUubWVzc2FnZXx8VSxVLnN0YWNrKSwhWi5vcHRpb25zLnBhcnRpYWwpdGhyb3cgUTtyZXR1cm4gaWV8fFouZXJyb3JzLnB1c2goUSksUX0sQi5wcm90b3R5cGUud3JhcFJlc3VsdD1mdW5jdGlvbihVKXtjb25zdCBR''@;'; put 'put ''PXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJuIFEub3B0aW9ucy5wYXJ0aWFsP3tyZXN1bHQ6dGhpcy5pc0Vycm9yKFUpP251bGw6VSxlcnJvcnM6US5lcnJvcnN9OlV9LGdlKEUsRXJyb3IpLEUucHJvdG90eXBlLnJldGhyb3c9ZnVuY3Rpb24oVSl7aWYodGhpcy5tZXNzYWdlPVUrIiBhdDog''@;'; put 'put ''IisodGhpcy5wYXRofHwiKHNoYWxsb3cpIiksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsRSksIXRoaXMuc3RhY2spdHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKFEpe3RoaXMuc3RhY2s9US5zdGFja31yZXR1cm4g''@;'; put 'put ''dGhpc319LDI1NDk2OihYZSxKZSk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gTChnZSl7Y29uc3QgQj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZ2UpLmZvckVhY2goZnVuY3Rpb24oRSl7KDB8RSk9PUUmJihFfD0wKSxCW2dlW0VdXT1FfSksQn1KZS50YWdDbGFzcz17MDoidW5pdmVyc2FsIiwx''@;'; put 'put ''OiJhcHBsaWNhdGlvbiIsMjoiY29udGV4dCIsMzoicHJpdmF0ZSJ9LEplLnRhZ0NsYXNzQnlOYW1lPUwoSmUudGFnQ2xhc3MpLEplLnRhZz17MDoiZW5kIiwxOiJib29sIiwyOiJpbnQiLDM6ImJpdHN0ciIsNDoib2N0c3RyIiw1OiJudWxsXyIsNjoib2JqaWQiLDc6Im9iakRlc2MiLDg6ImV4''@;'; put 'put ''dGVybmFsIiw5OiJyZWFsIiwxMDoiZW51bSIsMTE6ImVtYmVkIiwxMjoidXRmOHN0ciIsMTM6InJlbGF0aXZlT2lkIiwxNjoic2VxIiwxNzoic2V0IiwxODoibnVtc3RyIiwxOToicHJpbnRzdHIiLDIwOiJ0NjFzdHIiLDIxOiJ2aWRlb3N0ciIsMjI6ImlhNXN0ciIsMjM6InV0Y3RpbWUiLDI0''@;'; put 'put ''OiJnZW50aW1lIiwyNToiZ3JhcGhzdHIiLDI2OiJpc282NDZzdHIiLDI3OiJnZW5zdHIiLDI4OiJ1bmlzdHIiLDI5OiJjaGFyc3RyIiwzMDoiYm1wc3RyIn0sSmUudGFnQnlOYW1lPUwoSmUudGFnKX0sNTQ1OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgZ2U9SmU7Z2UuX3JldmVy''@;'; put 'put ''c2U9ZnVuY3Rpb24oRSl7Y29uc3QgTWU9e307cmV0dXJuIE9iamVjdC5rZXlzKEUpLmZvckVhY2goZnVuY3Rpb24oVSl7KDB8VSk9PVUmJihVfD0wKSxNZVtFW1VdXT1VfSksTWV9LGdlLmRlcj1MKDI1NDk2KX0sODcxMjc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IGdlPUwoODM4''@;'; put 'put ''OTQpLEI9TCgxMzg1NCksRT1MKDEyNzY5KS5DLE1lPUwoMzE0MzApLFU9TCgyNTQ5Nik7ZnVuY3Rpb24gUShZKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9WS5uYW1lLHRoaXMuZW50aXR5PVksdGhpcy50cmVlPW5ldyBaLHRoaXMudHJlZS5faW5pdChZLmJvZHkpfWZ1bmN0aW9uIFooWSl7''@;'; put 'put ''TWUuY2FsbCh0aGlzLCJkZXIiLFkpfWZ1bmN0aW9uIGllKFksVyl7bGV0IE49WS5yZWFkVUludDgoVyk7aWYoWS5pc0Vycm9yKE4pKXJldHVybiBOO2NvbnN0IGVlPVUudGFnQ2xhc3NbTj4+Nl0scT0wPT0oMzImTik7aWYoMzE9PSgzMSZOKSl7bGV0IHNlPU47Zm9yKE49MDsxMjg9PSgxMjgm''@;'; put 'put ''c2UpOyl7aWYoc2U9WS5yZWFkVUludDgoVyksWS5pc0Vycm9yKHNlKSlyZXR1cm4gc2U7Tjw8PTcsTnw9MTI3JnNlfX1lbHNlIE4mPTMxO3JldHVybntjbHM6ZWUscHJpbWl0aXZlOnEsdGFnOk4sdGFnU3RyOlUudGFnW05dfX1mdW5jdGlvbiBsZShZLFcsTil7bGV0IGVlPVkucmVhZFVJbnQ4''@;'; put 'put ''KE4pO2lmKFkuaXNFcnJvcihlZSkpcmV0dXJuIGVlO2lmKCFXJiYxMjg9PT1lZSlyZXR1cm4gbnVsbDtpZigwPT0oMTI4JmVlKSlyZXR1cm4gZWU7Y29uc3QgcT0xMjcmZWU7aWYocT40KXJldHVybiBZLmVycm9yKCJsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nIik7ZWU9MDtmb3IobGV0IEo9''@;'; put 'put ''MDtKPHE7SisrKXtlZTw8PTg7Y29uc3Qgc2U9WS5yZWFkVUludDgoTik7aWYoWS5pc0Vycm9yKHNlKSlyZXR1cm4gc2U7ZWV8PXNlfXJldHVybiBlZX1YZS5leHBvcnRzPVEsUS5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKFcsTil7cmV0dXJuIEUuaXNEZWNvZGVyQnVmZmVyKFcpfHwoVz1u''@;'; put 'put ''ZXcgRShXLE4pKSx0aGlzLnRyZWUuX2RlY29kZShXLE4pfSxnZShaLE1lKSxaLnByb3RvdHlwZS5fcGVla1RhZz1mdW5jdGlvbihXLE4sZWUpe2lmKFcuaXNFbXB0eSgpKXJldHVybiExO2NvbnN0IHE9Vy5zYXZlKCksSj1pZShXLCdGYWlsZWQgdG8gcGVlayB0YWc6ICInK04rJyInKTtyZXR1''@;'; put 'put ''cm4gVy5pc0Vycm9yKEopP0o6KFcucmVzdG9yZShxKSxKLnRhZz09PU58fEoudGFnU3RyPT09Tnx8Si50YWdTdHIrIm9mIj09PU58fGVlKX0sWi5wcm90b3R5cGUuX2RlY29kZVRhZz1mdW5jdGlvbihXLE4sZWUpe2NvbnN0IHE9aWUoVywnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgIicrTisn''@;'; put 'put ''IicpO2lmKFcuaXNFcnJvcihxKSlyZXR1cm4gcTtsZXQgSj1sZShXLHEucHJpbWl0aXZlLCdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiAiJytOKyciJyk7aWYoVy5pc0Vycm9yKEopKXJldHVybiBKO2lmKCFlZSYmcS50YWchPT1OJiZxLnRhZ1N0ciE9PU4mJnEudGFnU3RyKyJvZiIhPT1OKXJl''@;'; put 'put ''dHVybiBXLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiAiJytOKyciJyk7aWYocS5wcmltaXRpdmV8fG51bGwhPT1KKXJldHVybiBXLnNraXAoSiwnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6ICInK04rJyInKTtjb25zdCBzZT1XLnNhdmUoKSxhZT10aGlzLl9za2lwVW50aWxFbmQoVywn''@;'; put 'put ''RmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogIicrdGhpcy50YWcrJyInKTtyZXR1cm4gVy5pc0Vycm9yKGFlKT9hZTooSj1XLm9mZnNldC1zZS5vZmZzZXQsVy5yZXN0b3JlKHNlKSxXLnNraXAoSiwnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6ICInK04rJyInKSl9LFou''@;'; put 'put ''cHJvdG90eXBlLl9za2lwVW50aWxFbmQ9ZnVuY3Rpb24oVyxOKXtmb3IoOzspe2NvbnN0IGVlPWllKFcsTik7aWYoVy5pc0Vycm9yKGVlKSlyZXR1cm4gZWU7Y29uc3QgcT1sZShXLGVlLnByaW1pdGl2ZSxOKTtpZihXLmlzRXJyb3IocSkpcmV0dXJuIHE7bGV0IEo7aWYoSj1lZS5wcmltaXRp''@;'; put 'put ''dmV8fG51bGwhPT1xP1cuc2tpcChxKTp0aGlzLl9za2lwVW50aWxFbmQoVyxOKSxXLmlzRXJyb3IoSikpcmV0dXJuIEo7aWYoImVuZCI9PT1lZS50YWdTdHIpYnJlYWt9fSxaLnByb3RvdHlwZS5fZGVjb2RlTGlzdD1mdW5jdGlvbihXLE4sZWUscSl7Y29uc3QgSj1bXTtmb3IoOyFXLmlzRW1w''@;'; put 'put ''dHkoKTspe2NvbnN0IHNlPXRoaXMuX3BlZWtUYWcoVywiZW5kIik7aWYoVy5pc0Vycm9yKHNlKSlyZXR1cm4gc2U7Y29uc3QgYWU9ZWUuZGVjb2RlKFcsImRlciIscSk7aWYoVy5pc0Vycm9yKGFlKSYmc2UpYnJlYWs7Si5wdXNoKGFlKX1yZXR1cm4gSn0sWi5wcm90b3R5cGUuX2RlY29kZVN0''@;'; put 'put ''cj1mdW5jdGlvbihXLE4pe2lmKCJiaXRzdHIiPT09Til7Y29uc3QgZWU9Vy5yZWFkVUludDgoKTtyZXR1cm4gVy5pc0Vycm9yKGVlKT9lZTp7dW51c2VkOmVlLGRhdGE6Vy5yYXcoKX19aWYoImJtcHN0ciI9PT1OKXtjb25zdCBlZT1XLnJhdygpO2lmKGVlLmxlbmd0aCUyPT0xKXJldHVybiBX''@;'; put 'put ''LmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCIpO2xldCBxPSIiO2ZvcihsZXQgSj0wO0o8ZWUubGVuZ3RoLzI7SisrKXErPVN0cmluZy5mcm9tQ2hhckNvZGUoZWUucmVhZFVJbnQxNkJFKDIqSikpO3JldHVybiBxfWlmKCJudW1zdHIiPT09''@;'; put 'put ''Til7Y29uc3QgZWU9Vy5yYXcoKS50b1N0cmluZygiYXNjaWkiKTtyZXR1cm4gdGhpcy5faXNOdW1zdHIoZWUpP2VlOlcuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfWlmKCJvY3RzdHIiPT09TilyZXR1cm4gVy5yYXcoKTtp''@;'; put 'put ''Zigib2JqRGVzYyI9PT1OKXJldHVybiBXLnJhdygpO2lmKCJwcmludHN0ciI9PT1OKXtjb25zdCBlZT1XLnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc1ByaW50c3RyKGVlKT9lZTpXLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgdW5zdXBw''@;'; put 'put ''b3J0ZWQgY2hhcmFjdGVycyIpfXJldHVybi9zdHIkLy50ZXN0KE4pP1cucmF3KCkudG9TdHJpbmcoKTpXLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogIitOKyIgdW5zdXBwb3J0ZWQiKX0sWi5wcm90b3R5cGUuX2RlY29kZU9iamlkPWZ1bmN0aW9uKFcsTixlZSl7bGV0IHE7Y29u''@;'; put 'put ''c3QgSj1bXTtsZXQgc2U9MCxhZT0wO2Zvcig7IVcuaXNFbXB0eSgpOylhZT1XLnJlYWRVSW50OCgpLHNlPDw9NyxzZXw9MTI3JmFlLDA9PSgxMjgmYWUpJiYoSi5wdXNoKHNlKSxzZT0wKTtpZigxMjgmYWUmJkoucHVzaChzZSkscT1lZT9KOltKWzBdLzQwfDAsSlswXSU0MF0uY29uY2F0KEou''@;'; put 'put ''c2xpY2UoMSkpLE4pe2xldCB2ZT1OW3Euam9pbigiICIpXTt2b2lkIDA9PT12ZSYmKHZlPU5bcS5qb2luKCIuIildKSx2b2lkIDAhPT12ZSYmKHE9dmUpfXJldHVybiBxfSxaLnByb3RvdHlwZS5fZGVjb2RlVGltZT1mdW5jdGlvbihXLE4pe2NvbnN0IGVlPVcucmF3KCkudG9TdHJpbmcoKTts''@;'; put 'put ''ZXQgcSxKLHNlLGFlLGZlLGRlO2lmKCJnZW50aW1lIj09PU4pcT0wfGVlLnNsaWNlKDAsNCksSj0wfGVlLnNsaWNlKDQsNiksc2U9MHxlZS5zbGljZSg2LDgpLGFlPTB8ZWUuc2xpY2UoOCwxMCksZmU9MHxlZS5zbGljZSgxMCwxMiksZGU9MHxlZS5zbGljZSgxMiwxNCk7ZWxzZXtpZigidXRj''@;'; put 'put ''dGltZSIhPT1OKXJldHVybiBXLmVycm9yKCJEZWNvZGluZyAiK04rIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7cT0wfGVlLnNsaWNlKDAsMiksSj0wfGVlLnNsaWNlKDIsNCksc2U9MHxlZS5zbGljZSg0LDYpLGFlPTB8ZWUuc2xpY2UoNiw4KSxmZT0wfGVlLnNsaWNlKDgsMTApLGRl''@;'; put 'put ''PTB8ZWUuc2xpY2UoMTAsMTIpLHE9cTw3MD8yZTMrcToxOTAwK3F9cmV0dXJuIERhdGUuVVRDKHEsSi0xLHNlLGFlLGZlLGRlLDApfSxaLnByb3RvdHlwZS5fZGVjb2RlTnVsbD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxaLnByb3RvdHlwZS5fZGVjb2RlQm9vbD1mdW5jdGlvbihXKXtjb25z''@;'; put 'put ''dCBOPVcucmVhZFVJbnQ4KCk7cmV0dXJuIFcuaXNFcnJvcihOKT9OOjAhPT1OfSxaLnByb3RvdHlwZS5fZGVjb2RlSW50PWZ1bmN0aW9uKFcsTil7Y29uc3QgZWU9Vy5yYXcoKTtsZXQgcT1uZXcgQihlZSk7cmV0dXJuIE4mJihxPU5bcS50b1N0cmluZygxMCldfHxxKSxxfSxaLnByb3RvdHlw''@;'; put 'put ''ZS5fdXNlPWZ1bmN0aW9uKFcsTil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFcmJihXPVcoTikpLFcuX2dldERlY29kZXIoImRlciIpLnRyZWV9fSw3MDE5NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgZ2U9SmU7Z2UuZGVyPUwoODcxMjcpLGdlLnBlbT1MKDk5NjE3KX0sOTk2''@;'; put 'put ''MTc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IGdlPUwoODM4OTQpLEI9TCg2MjAzOCkuQnVmZmVyLEU9TCg4NzEyNyk7ZnVuY3Rpb24gTWUoVSl7RS5jYWxsKHRoaXMsVSksdGhpcy5lbmM9InBlbSJ9Z2UoTWUsRSksWGUuZXhwb3J0cz1NZSxNZS5wcm90b3R5cGUuZGVjb2RlPWZ1''@;'; put 'put ''bmN0aW9uKFEsWil7Y29uc3QgaWU9US50b1N0cmluZygpLnNwbGl0KC9bXHJcbl0rL2cpLGxlPVoubGFiZWwudG9VcHBlckNhc2UoKSxZPS9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztsZXQgVz0tMSxOPS0xO2ZvcihsZXQgSj0wO0o8aWUubGVuZ3RoO0orKyl7Y29uc3Qgc2U9''@;'; put 'put ''aWVbSl0ubWF0Y2goWSk7aWYobnVsbCE9PXNlJiZzZVsyXT09PWxlKXtpZigtMSE9PVcpe2lmKCJFTkQiIT09c2VbMV0pYnJlYWs7Tj1KO2JyZWFrfWlmKCJCRUdJTiIhPT1zZVsxXSlicmVhaztXPUp9fWlmKC0xPT09V3x8LTE9PT1OKXRocm93IG5ldyBFcnJvcigiUEVNIHNlY3Rpb24gbm90''@;'; put 'put ''IGZvdW5kIGZvcjogIitsZSk7Y29uc3QgZWU9aWUuc2xpY2UoVysxLE4pLmpvaW4oIiIpO2VlLnJlcGxhY2UoL1teYS16MC05Ky89XSsvZ2ksIiIpO2NvbnN0IHE9Qi5mcm9tKGVlLCJiYXNlNjQiKTtyZXR1cm4gRS5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcyxxLFopfX0sMTYzNzQ6KFhl''@;'; put 'put ''LEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IGdlPUwoODM4OTQpLEI9TCg2MjAzOCkuQnVmZmVyLEU9TCgzMTQzMCksTWU9TCgyNTQ5Nik7ZnVuY3Rpb24gVShsZSl7dGhpcy5lbmM9ImRlciIsdGhpcy5uYW1lPWxlLm5hbWUsdGhpcy5lbnRpdHk9bGUsdGhpcy50cmVlPW5ldyBRLHRoaXMu''@;'; put 'put ''dHJlZS5faW5pdChsZS5ib2R5KX1mdW5jdGlvbiBRKGxlKXtFLmNhbGwodGhpcywiZGVyIixsZSl9ZnVuY3Rpb24gWihsZSl7cmV0dXJuIGxlPDEwPyIwIitsZTpsZX1YZS5leHBvcnRzPVUsVS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKFksVyl7cmV0dXJuIHRoaXMudHJlZS5fZW5jb2Rl''@;'; put 'put ''KFksVykuam9pbigpfSxnZShRLEUpLFEucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGU9ZnVuY3Rpb24oWSxXLE4sZWUpe2NvbnN0IHE9ZnVuY3Rpb24gaWUobGUsWSxXLE4pe2xldCBlZTtpZigic2Vxb2YiPT09bGU/bGU9InNlcSI6InNldG9mIj09PWxlJiYobGU9InNldCIpLE1lLnRhZ0J5''@;'; put 'put ''TmFtZS5oYXNPd25Qcm9wZXJ0eShsZSkpZWU9TWUudGFnQnlOYW1lW2xlXTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgbGV8fCgwfGxlKSE9PWxlKXJldHVybiBOLmVycm9yKCJVbmtub3duIHRhZzogIitsZSk7ZWU9bGV9cmV0dXJuIGVlPj0zMT9OLmVycm9yKCJNdWx0aS1vY3RldCB0YWcg''@;'; put 'put ''ZW5jb2RpbmcgdW5zdXBwb3J0ZWQiKTooWXx8KGVlfD0zMiksZWV8PU1lLnRhZ0NsYXNzQnlOYW1lW1d8fCJ1bml2ZXJzYWwiXTw8NixlZSl9KFksVyxOLHRoaXMucmVwb3J0ZXIpO2lmKGVlLmxlbmd0aDwxMjgpe2NvbnN0IGFlPUIuYWxsb2MoMik7cmV0dXJuIGFlWzBdPXEsYWVbMV09ZWUu''@;'; put 'put ''bGVuZ3RoLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW2FlLGVlXSl9bGV0IEo9MTtmb3IobGV0IGFlPWVlLmxlbmd0aDthZT49MjU2O2FlPj49OClKKys7Y29uc3Qgc2U9Qi5hbGxvYygyK0opO3NlWzBdPXEsc2VbMV09MTI4fEo7Zm9yKGxldCBhZT0xK0osZmU9ZWUubGVuZ3RoO2ZlPjA7''@;'; put 'put ''YWUtLSxmZT4+PTgpc2VbYWVdPTI1NSZmZTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbc2UsZWVdKX0sUS5wcm90b3R5cGUuX2VuY29kZVN0cj1mdW5jdGlvbihZLFcpe2lmKCJiaXRzdHIiPT09VylyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMHxZLnVudXNl''@;'; put 'put ''ZCxZLmRhdGFdKTtpZigiYm1wc3RyIj09PVcpe2NvbnN0IE49Qi5hbGxvYygyKlkubGVuZ3RoKTtmb3IobGV0IGVlPTA7ZWU8WS5sZW5ndGg7ZWUrKylOLndyaXRlVUludDE2QkUoWS5jaGFyQ29kZUF0KGVlKSwyKmVlKTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihOKX1yZXR1''@;'; put 'put ''cm4ibnVtc3RyIj09PVc/dGhpcy5faXNOdW1zdHIoWSk/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihZKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzIG9ubHkgZGlnaXRzIGFuZCBzcGFjZSIpOiJwcmludHN0ciI9PT1XP3Ro''@;'; put 'put ''aXMuX2lzUHJpbnRzdHIoWSk/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihZKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHNwYWNl''@;'; put 'put ''LCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCBwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCBkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgcXVlc3Rpb24gbWFyayIpOi9zdHIkLy50ZXN0KFcpfHwib2JqRGVzYyI9PT1XP3RoaXMuX2NyZWF0ZUVuY29kZXJC''@;'; put 'put ''dWZmZXIoWSk6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrVysiIHVuc3VwcG9ydGVkIil9LFEucHJvdG90eXBlLl9lbmNvZGVPYmppZD1mdW5jdGlvbihZLFcsTil7aWYoInN0cmluZyI9PXR5cGVvZiBZKXtpZighVylyZXR1cm4gdGhpcy5yZXBvcnRl''@;'; put 'put ''ci5lcnJvcigic3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCIpO2lmKCFXLmhhc093blByb3BlcnR5KFkpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCIpO1k9V1tZXS5zcGxpdCgvW1xzLl0rL2cpO2Zv''@;'; put 'put ''cihsZXQgc2U9MDtzZTxZLmxlbmd0aDtzZSsrKVlbc2VdfD0wfWVsc2UgaWYoQXJyYXkuaXNBcnJheShZKSl7WT1ZLnNsaWNlKCk7Zm9yKGxldCBzZT0wO3NlPFkubGVuZ3RoO3NlKyspWVtzZV18PTB9aWYoIUFycmF5LmlzQXJyYXkoWSkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9i''@;'; put 'put ''amlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBzdHJpbmcsIGdvdDogIitKU09OLnN0cmluZ2lmeShZKSk7aWYoIU4pe2lmKFlbMV0+PTQwKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0IiKTtZLnNwbGljZSgwLDIsNDAqWVswXStZ''@;'; put 'put ''WzFdKX1sZXQgZWU9MDtmb3IobGV0IHNlPTA7c2U8WS5sZW5ndGg7c2UrKyl7bGV0IGFlPVlbc2VdO2ZvcihlZSsrO2FlPj0xMjg7YWU+Pj03KWVlKyt9Y29uc3QgcT1CLmFsbG9jKGVlKTtsZXQgSj1xLmxlbmd0aC0xO2ZvcihsZXQgc2U9WS5sZW5ndGgtMTtzZT49MDtzZS0tKXtsZXQgYWU9''@;'; put 'put ''WVtzZV07Zm9yKHFbSi0tXT0xMjcmYWU7KGFlPj49Nyk+MDspcVtKLS1dPTEyOHwxMjcmYWV9cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIocSl9LFEucHJvdG90eXBlLl9lbmNvZGVUaW1lPWZ1bmN0aW9uKFksVyl7bGV0IE47Y29uc3QgZWU9bmV3IERhdGUoWSk7cmV0dXJuImdl''@;'; put 'put ''bnRpbWUiPT09Vz9OPVtaKGVlLmdldFVUQ0Z1bGxZZWFyKCkpLFooZWUuZ2V0VVRDTW9udGgoKSsxKSxaKGVlLmdldFVUQ0RhdGUoKSksWihlZS5nZXRVVENIb3VycygpKSxaKGVlLmdldFVUQ01pbnV0ZXMoKSksWihlZS5nZXRVVENTZWNvbmRzKCkpLCJaIl0uam9pbigiIik6InV0Y3RpbWUi''@;'; put 'put ''PT09Vz9OPVtaKGVlLmdldFVUQ0Z1bGxZZWFyKCklMTAwKSxaKGVlLmdldFVUQ01vbnRoKCkrMSksWihlZS5nZXRVVENEYXRlKCkpLFooZWUuZ2V0VVRDSG91cnMoKSksWihlZS5nZXRVVENNaW51dGVzKCkpLFooZWUuZ2V0VVRDU2Vjb25kcygpKSwiWiJdLmpvaW4oIiIpOnRoaXMucmVwb3J0''@;'; put 'put ''ZXIuZXJyb3IoIkVuY29kaW5nICIrVysiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQiKSx0aGlzLl9lbmNvZGVTdHIoTiwib2N0c3RyIil9LFEucHJvdG90eXBlLl9lbmNvZGVOdWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoIiIpfSxRLnByb3RvdHlw''@;'; put 'put ''ZS5fZW5jb2RlSW50PWZ1bmN0aW9uKFksVyl7aWYoInN0cmluZyI9PXR5cGVvZiBZKXtpZighVylyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCIpO2lmKCFXLmhhc093blByb3BlcnR5KFkpKXJldHVybiB0aGlz''@;'; put 'put ''LnJlcG9ydGVyLmVycm9yKCJWYWx1ZXMgbWFwIGRvZXNuJ3QgY29udGFpbjogIitKU09OLnN0cmluZ2lmeShZKSk7WT1XW1ldfWlmKCJudW1iZXIiIT10eXBlb2YgWSYmIUIuaXNCdWZmZXIoWSkpe2NvbnN0IHE9WS50b0FycmF5KCk7IVkuc2lnbiYmMTI4JnFbMF0mJnEudW5zaGlmdCgwKSxZ''@;'; put 'put ''PUIuZnJvbShxKX1pZihCLmlzQnVmZmVyKFkpKXtsZXQgcT1ZLmxlbmd0aDswPT09WS5sZW5ndGgmJnErKztjb25zdCBKPUIuYWxsb2MocSk7cmV0dXJuIFkuY29weShKKSwwPT09WS5sZW5ndGgmJihKWzBdPTApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoSil9aWYoWTwxMjgpcmV0dXJu''@;'; put 'put ''IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWSk7aWYoWTwyNTYpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsWV0pO2xldCBOPTE7Zm9yKGxldCBxPVk7cT49MjU2O3E+Pj04KU4rKztjb25zdCBlZT1uZXcgQXJyYXkoTik7Zm9yKGxldCBxPWVlLmxlbmd0aC0xO3E+PTA7''@;'; put 'put ''cS0tKWVlW3FdPTI1NSZZLFk+Pj04O3JldHVybiAxMjgmZWVbMF0mJmVlLnVuc2hpZnQoMCksdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihCLmZyb20oZWUpKX0sUS5wcm90b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24oWSl7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWT8y''@;'; put 'put ''NTU6MCl9LFEucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oWSxXKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgWSYmKFk9WShXKSksWS5fZ2V0RW5jb2RlcigiZGVyIikudHJlZX0sUS5wcm90b3R5cGUuX3NraXBEZWZhdWx0PWZ1bmN0aW9uKFksVyxOKXtjb25zdCBlZT10aGlzLl9iYXNlU3Rh''@;'; put 'put ''dGU7bGV0IHE7aWYobnVsbD09PWVlLmRlZmF1bHQpcmV0dXJuITE7Y29uc3QgSj1ZLmpvaW4oKTtpZih2b2lkIDA9PT1lZS5kZWZhdWx0QnVmZmVyJiYoZWUuZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZShlZS5kZWZhdWx0LFcsTikuam9pbigpKSxKLmxlbmd0aCE9PWVlLmRlZmF1''@;'; put 'put ''bHRCdWZmZXIubGVuZ3RoKXJldHVybiExO2ZvcihxPTA7cTxKLmxlbmd0aDtxKyspaWYoSltxXSE9PWVlLmRlZmF1bHRCdWZmZXJbcV0pcmV0dXJuITE7cmV0dXJuITB9fSwyMTEzMTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgZ2U9SmU7Z2UuZGVyPUwoMTYzNzQpLGdlLnBlbT1M''@;'; put 'put ''KDM1MzApfSwzNTMwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBnZT1MKDgzODk0KSxCPUwoMTYzNzQpO2Z1bmN0aW9uIEUoTWUpe0IuY2FsbCh0aGlzLE1lKSx0aGlzLmVuYz0icGVtIn1nZShFLEIpLFhlLmV4cG9ydHM9RSxFLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oVSxR''@;'; put 'put ''KXtjb25zdCBpZT1CLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLFUpLnRvU3RyaW5nKCJiYXNlNjQiKSxsZT1bIi0tLS0tQkVHSU4gIitRLmxhYmVsKyItLS0tLSJdO2ZvcihsZXQgWT0wO1k8aWUubGVuZ3RoO1krPTY0KWxlLnB1c2goaWUuc2xpY2UoWSxZKzY0KSk7cmV0dXJuIGxlLnB1''@;'; put 'put ''c2goIi0tLS0tRU5EICIrUS5sYWJlbCsiLS0tLS0iKSxsZS5qb2luKCJcbiIpfX0sMTM4NTQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlLEIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKGhlLE8pe2lmKCFoZSl0aHJvdyBuZXcgRXJyb3IoT3x8IkFzc2VydGlvbiBmYWlsZWQiKX1m''@;'; put 'put ''dW5jdGlvbiBNZShoZSxPKXtoZS5zdXBlcl89Tzt2YXIgej1mdW5jdGlvbigpe307ei5wcm90b3R5cGU9Ty5wcm90b3R5cGUsaGUucHJvdG90eXBlPW5ldyB6LGhlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1oZX1mdW5jdGlvbiBVKGhlLE8seil7aWYoVS5pc0JOKGhlKSlyZXR1cm4gaGU7dGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWhlJiYoKCJsZSI9PT1PfHwiYmUiPT09TykmJih6PU8sTz0xMCksdGhpcy5faW5pdChoZXx8MCxPfHwxMCx6fHwiYmUiKSl9dmFyIFE7Im9iamVjdCI9PXR5cGVvZiBnZT9nZS5l''@;'; put 'put ''eHBvcnRzPVU6Qi5CTj1VLFUuQk49VSxVLndvcmRTaXplPTI2O3RyeXtRPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6TCg4MDk1MCkuQnVmZmVyfWNhdGNoKGhlKXt9ZnVuY3Rpb24gWihoZSxPKXt2YXIgej1oZS5jaGFy''@;'; put 'put ''Q29kZUF0KE8pO3JldHVybiB6Pj02NSYmejw9NzA/ei01NTp6Pj05NyYmejw9MTAyP3otODc6ei00OCYxNX1mdW5jdGlvbiBpZShoZSxPLHope3ZhciBuZT1aKGhlLHopO3JldHVybiB6LTE+PU8mJihuZXw9WihoZSx6LTEpPDw0KSxuZX1mdW5jdGlvbiBsZShoZSxPLHosbmUpe2Zvcih2YXIg''@;'; put 'put ''dGU9MCx4PU1hdGgubWluKGhlLmxlbmd0aCx6KSxQPU87UDx4O1ArKyl7dmFyIFY9aGUuY2hhckNvZGVBdChQKS00ODt0ZSo9bmUsdGUrPVY+PTQ5P1YtNDkrMTA6Vj49MTc/Vi0xNysxMDpWfXJldHVybiB0ZX1VLmlzQk49ZnVuY3Rpb24oTyl7cmV0dXJuIE8gaW5zdGFuY2VvZiBVfHxudWxs''@;'; put 'put ''IT09TyYmIm9iamVjdCI9PXR5cGVvZiBPJiZPLmNvbnN0cnVjdG9yLndvcmRTaXplPT09VS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShPLndvcmRzKX0sVS5tYXg9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik+MD9POnp9LFUubWluPWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHop''@;'; put 'put ''PDA/Tzp6fSxVLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihPLHosbmUpe2lmKCJudW1iZXIiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihPLHosbmUpO2lmKCJvYmplY3QiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdEFycmF5KE8seixuZSk7ImhleCI9PT16JiYoej0x''@;'; put 'put ''NiksRSh6PT09KDB8eikmJno+PTImJno8PTM2KTt2YXIgdGU9MDsiLSI9PT0oTz1PLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKHRlKyssdGhpcy5uZWdhdGl2ZT0xKSx0ZTxPLmxlbmd0aCYmKDE2PT09ej90aGlzLl9wYXJzZUhleChPLHRlLG5lKToodGhpcy5fcGFyc2VC''@;'; put 'put ''YXNlKE8seix0ZSksImxlIj09PW5lJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixuZSkpKX0sVS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oTyx6LG5lKXtPPDAmJih0aGlzLm5lZ2F0aXZlPTEsTz0tTyksTzw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMm''@;'; put 'put ''T10sdGhpcy5sZW5ndGg9MSk6Tzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihFKE88OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzLDFd''@;'; put 'put ''LHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1uZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosbmUpfSxVLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKE8seixuZSl7aWYoRSgibnVtYmVyIj09dHlwZW9mIE8ubGVuZ3RoKSxPLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jk''@;'; put 'put ''cz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChPLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB0ZT0wO3RlPHRoaXMubGVuZ3RoO3RlKyspdGhpcy53b3Jkc1t0ZV09MDt2YXIgeCxQLFY9MDtpZigiYmUiPT09''@;'; put 'put ''bmUpZm9yKHRlPU8ubGVuZ3RoLTEseD0wO3RlPj0wO3RlLT0zKXRoaXMud29yZHNbeF18PShQPU9bdGVdfE9bdGUtMV08PDh8T1t0ZS0yXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7ZWxzZSBpZigi''@;'; put 'put ''bGUiPT09bmUpZm9yKHRlPTAseD0wO3RlPE8ubGVuZ3RoO3RlKz0zKXRoaXMud29yZHNbeF18PShQPU9bdGVdfE9bdGUrMV08PDh8T1t0ZSsyXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7cmV0dXJu''@;'; put 'put ''IHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKE8seixuZSl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChPLmxlbmd0aC16KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB0ZT0wO3RlPHRoaXMubGVuZ3RoO3RlKyspdGhpcy53''@;'; put 'put ''b3Jkc1t0ZV09MDt2YXIgVix4PTAsUD0wO2lmKCJiZSI9PT1uZSlmb3IodGU9Ty5sZW5ndGgtMTt0ZT49ejt0ZS09MilWPWllKE8seix0ZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O2Vsc2UgZm9yKHRl''@;'; put 'put ''PShPLmxlbmd0aC16KSUyPT0wP3orMTp6O3RlPE8ubGVuZ3RoO3RlKz0yKVY9aWUoTyx6LHRlKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VCYXNl''@;'; put 'put ''PWZ1bmN0aW9uKE8seixuZSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHRlPTAseD0xO3g8PTY3MTA4ODYzO3gqPXopdGUrKzt0ZS0tLHg9eC96fDA7Zm9yKHZhciBQPU8ubGVuZ3RoLW5lLFY9UCV0ZSxUPU1hdGgubWluKFAsUC1WKStuZSxTPTAsRj1uZTtGPFQ7Ris9''@;'; put 'put ''dGUpUz1sZShPLEYsRit0ZSx6KSx0aGlzLmltdWxuKHgpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpO2lmKDAhPT1WKXt2YXIgeWU9MTtmb3IoUz1sZShPLEYsTy5sZW5ndGgseiksRj0wO0Y8VjtGKyspeWUqPXo7dGhpcy5pbXVsbih5''@;'; put 'put ''ZSksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyl9dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKE8pe08ud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoO3orKylP''@;'; put 'put ''LndvcmRzW3pdPXRoaXMud29yZHNbel07Ty5sZW5ndGg9dGhpcy5sZW5ndGgsTy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLE8ucmVkPXRoaXMucmVkfSxVLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiB0aGlzLmNvcHkoTyksT30sVS5wcm90b3R5''@;'; put 'put ''cGUuX2V4cGFuZD1mdW5jdGlvbihPKXtmb3IoO3RoaXMubGVuZ3RoPE87KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0''@;'; put 'put ''aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxVLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sVS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgWT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxXPVswLDAsMjUsMTYsMTIsMTEsMTAs''@;'; put 'put ''OSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLE49WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3''@;'; put 'put ''NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwz''@;'; put 'put ''OTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gcShoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZTt2YXIgbmU9aGUubGVuZ3RoK08ubGVuZ3RofDA7ei5sZW5ndGg9bmUsbmU9bmUtMXwwO3ZhciB0ZT0wfGhlLndvcmRzWzBdLHg9MHxP''@;'; put 'put ''LndvcmRzWzBdLFA9dGUqeCxUPVAvNjcxMDg4NjR8MDt6LndvcmRzWzBdPTY3MTA4ODYzJlA7Zm9yKHZhciBTPTE7UzxuZTtTKyspe2Zvcih2YXIgRj1UPj4+MjYseWU9NjcxMDg4NjMmVCxDZT1NYXRoLm1pbihTLE8ubGVuZ3RoLTEpLERlPU1hdGgubWF4KDAsUy1oZS5sZW5ndGgrMSk7RGU8''@;'; put 'put ''PUNlO0RlKyspRis9KFA9KHRlPTB8aGUud29yZHNbUy1EZXwwXSkqKHg9MHxPLndvcmRzW0RlXSkreWUpLzY3MTA4ODY0fDAseWU9NjcxMDg4NjMmUDt6LndvcmRzW1NdPTB8eWUsVD0wfEZ9cmV0dXJuIDAhPT1UP3oud29yZHNbU109MHxUOnoubGVuZ3RoLS0sei5zdHJpcCgpfVUucHJvdG90''@;'; put 'put ''eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKE8seil7dmFyIG5lO2lmKHo9MHx6fHwxLDE2PT09KE89T3x8MTApfHwiaGV4Ij09PU8pe25lPSIiO2Zvcih2YXIgdGU9MCx4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLndvcmRzW1BdLFQ9KDE2Nzc3MjE1JihWPDx0ZXx4KSkudG9T''@;'; put 'put ''dHJpbmcoMTYpO25lPTAhPSh4PVY+Pj4yNC10ZSYxNjc3NzIxNSl8fFAhPT10aGlzLmxlbmd0aC0xP1lbNi1ULmxlbmd0aF0rVCtuZTpUK25lLCh0ZSs9Mik+PTI2JiYodGUtPTI2LFAtLSl9Zm9yKDAhPT14JiYobmU9eC50b1N0cmluZygxNikrbmUpO25lLmxlbmd0aCV6IT0wOyluZT0iMCIr''@;'; put 'put ''bmU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYobmU9Ii0iK25lKSxuZX1pZihPPT09KDB8TykmJk8+PTImJk88PTM2KXt2YXIgUz1XW09dLEY9TltPXTtuZT0iIjt2YXIgeWU9dGhpcy5jbG9uZSgpO2Zvcih5ZS5uZWdhdGl2ZT0wOyF5ZS5pc1plcm8oKTspe3ZhciBDZT15ZS5tb2RuKEYp''@;'; put 'put ''LnRvU3RyaW5nKE8pO25lPSh5ZT15ZS5pZGl2bihGKSkuaXNaZXJvKCk/Q2UrbmU6WVtTLUNlLmxlbmd0aF0rQ2UrbmV9Zm9yKHRoaXMuaXNaZXJvKCkmJihuZT0iMCIrbmUpO25lLmxlbmd0aCV6IT0wOyluZT0iMCIrbmU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYobmU9Ii0iK25lKSxu''@;'; put 'put ''ZX1FKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LFUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIE89dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP08rPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09''@;'; put 'put ''dGhpcy53b3Jkc1syXT9PKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmRSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LU86T30sVS5wcm90b3R5cGUudG9KU09O''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxVLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihPLHope3JldHVybiBFKHZvaWQgMCE9PVEpLHRoaXMudG9BcnJheUxpa2UoUSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMu''@;'; put 'put ''dG9BcnJheUxpa2UoQXJyYXksTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oTyx6LG5lKXt2YXIgdGU9dGhpcy5ieXRlTGVuZ3RoKCkseD1uZXx8TWF0aC5tYXgoMSx0ZSk7RSh0ZTw9eCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEUoeD4w''@;'; put 'put ''LCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIFQsUyxQPSJsZSI9PT16LFY9bmV3IE8oeCksRj10aGlzLmNsb25lKCk7aWYoUCl7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVltTXT1UO2Zvcig7Uzx4O1Mr''@;'; put 'put ''KylWW1NdPTB9ZWxzZXtmb3IoUz0wO1M8eC10ZTtTKyspVltTXT0wO2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbeC1TLTFdPVR9cmV0dXJuIFZ9LFUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihPKXtyZXR1cm4g''@;'; put 'put ''MzItTWF0aC5jbHozMihPKX06ZnVuY3Rpb24oTyl7dmFyIHo9TyxuZT0wO3JldHVybiB6Pj00MDk2JiYobmUrPTEzLHo+Pj49MTMpLHo+PTY0JiYobmUrPTcsej4+Pj03KSx6Pj04JiYobmUrPTQsej4+Pj00KSx6Pj0yJiYobmUrPTIsej4+Pj0yKSxuZSt6fSxVLnByb3RvdHlwZS5femVyb0Jp''@;'; put 'put ''dHM9ZnVuY3Rpb24oTyl7aWYoMD09PU8pcmV0dXJuIDI2O3ZhciB6PU8sbmU9MDtyZXR1cm4gMD09KDgxOTEmeikmJihuZSs9MTMsej4+Pj0xMyksMD09KDEyNyZ6KSYmKG5lKz03LHo+Pj49NyksMD09KDE1JnopJiYobmUrPTQsej4+Pj00KSwwPT0oMyZ6KSYmKG5lKz0yLHo+Pj49MiksMD09''@;'; put 'put ''KDEmeikmJm5lKyssbmV9LFUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3p9LFUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhp''@;'; put 'put ''cy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIE89MCx6PTA7ejx0aGlzLmxlbmd0aDt6Kyspe3ZhciBuZT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3pdKTtpZihPKz1uZSwyNiE9PW5lKWJyZWFrfXJldHVybiBPfSxVLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxVLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oTykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gdGhpcy50ZXN0bihPLTEpP3RoaXMubm90bihPKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sVS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pbmVnKCl9LFUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LFUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsr''@;'; put 'put ''XT0wO2Zvcih2YXIgej0wO3o8Ty5sZW5ndGg7eisrKXRoaXMud29yZHNbel09dGhpcy53b3Jkc1t6XXxPLndvcmRzW3pdO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5p''@;'; put 'put ''dW9yKE8pfSxVLnByb3RvdHlwZS5vcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihPKTpPLmNsb25lKCkuaW9yKHRoaXMpfSxVLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMu''@;'; put 'put ''Y2xvbmUoKS5pdW9yKE8pOk8uY2xvbmUoKS5pdW9yKHRoaXMpfSxVLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihPKXt2YXIgejt6PXRoaXMubGVuZ3RoPk8ubGVuZ3RoP086dGhpcztmb3IodmFyIG5lPTA7bmU8ei5sZW5ndGg7bmUrKyl0aGlzLndvcmRzW25lXT10aGlzLndvcmRzW25lXSZP''@;'; put 'put ''LndvcmRzW25lXTtyZXR1cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1YW5kKE8pfSxVLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKE8pOk8uY2xvbmUoKS5pYW5kKHRoaXMpfSxVLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoTyk6Ty5jbG9uZSgpLml1YW5k''@;'; put 'put ''KHRoaXMpfSxVLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihPKXt2YXIgeixuZTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oej10aGlzLG5lPU8pOih6PU8sbmU9dGhpcyk7Zm9yKHZhciB0ZT0wO3RlPG5lLmxlbmd0aDt0ZSsrKXRoaXMud29yZHNbdGVdPXoud29yZHNbdGVdXm5lLndvcmRzW3Rl''@;'; put 'put ''XTtpZih0aGlzIT09eilmb3IoO3RlPHoubGVuZ3RoO3RlKyspdGhpcy53b3Jkc1t0ZV09ei53b3Jkc1t0ZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5l''@;'; put 'put ''Z2F0aXZlKSksdGhpcy5pdXhvcihPKX0sVS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihPKTpPLmNsb25lKCkuaXhvcih0aGlzKX0sVS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5s''@;'; put 'put ''ZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKE8pOk8uY2xvbmUoKS5pdXhvcih0aGlzKX0sVS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PTB8TWF0aC5jZWlsKE8vMjYpLG5lPU8lMjY7dGhpcy5fZXhwYW5kKHop''@;'; put 'put ''LG5lPjAmJnotLTtmb3IodmFyIHRlPTA7dGU8ejt0ZSsrKXRoaXMud29yZHNbdGVdPTY3MTA4ODYzJn50aGlzLndvcmRzW3RlXTtyZXR1cm4gbmU+MCYmKHRoaXMud29yZHNbdGVdPX50aGlzLndvcmRzW3RlXSY2NzEwODg2Mz4+MjYtbmUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUubm90''@;'; put 'put ''bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKE8pfSxVLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKE8seil7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciBuZT1PLzI2fDAsdGU9TyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKG5lKzEpLHRoaXMud29yZHNbbmVd''@;'; put 'put ''PXo/dGhpcy53b3Jkc1tuZV18MTw8dGU6dGhpcy53b3Jkc1tuZV0mfigxPDx0ZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8pe3ZhciB6LG5lLHRlO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHo9''@;'; put 'put ''dGhpcy5pc3ViKE8pLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIE8ubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSxPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5PLmxlbmd0''@;'; put 'put ''aD8obmU9dGhpcyx0ZT1PKToobmU9Tyx0ZT10aGlzKTtmb3IodmFyIHg9MCxQPTA7UDx0ZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8bmUud29yZHNbUF0pKygwfHRlLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtmb3IoOzAhPT14JiZQPG5lLmxlbmd0aDtQKyspdGhp''@;'; put 'put ''cy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxuZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7aWYodGhpcy5sZW5ndGg9bmUubGVuZ3RoLDAhPT14KXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXgsdGhpcy5sZW5ndGgrKztlbHNlIGlmKG5lIT09dGhpcylmb3IoO1A8bmUubGVuZ3RoO1ArKyl0aGlz''@;'; put 'put ''LndvcmRzW1BdPW5lLndvcmRzW1BdO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyl7dmFyIHo7cmV0dXJuIDAhPT1PLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oTy5uZWdhdGl2ZT0wLHo9dGhpcy5zdWIoTyksTy5uZWdhdGl2ZV49MSx6KTowPT09Ty5uZWdh''@;'; put 'put ''dGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx6PU8uc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx6KTp0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChPKTpPLmNsb25lKCkuaWFkZCh0aGlzKX0sVS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihP''@;'; put 'put ''KXtpZigwIT09Ty5uZWdhdGl2ZSl7Ty5uZWdhdGl2ZT0wO3ZhciB6PXRoaXMuaWFkZChPKTtyZXR1cm4gTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMu''@;'; put 'put ''X25vcm1TaWduKCk7dmFyIHRlLHgsbmU9dGhpcy5jbXAoTyk7aWYoMD09PW5lKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztuZT4wPyh0ZT10aGlzLHg9Tyk6KHRlPU8seD10aGlzKTtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtW''@;'; put 'put ''KyspUD0oej0oMHx0ZS53b3Jkc1tWXSktKDB8eC53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtmb3IoOzAhPT1QJiZWPHRlLmxlbmd0aDtWKyspUD0oej0oMHx0ZS53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtpZigwPT09UCYmVjx0''@;'; put 'put ''ZS5sZW5ndGgmJnRlIT09dGhpcylmb3IoO1Y8dGUubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXRlLndvcmRzW1ZdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxWKSx0ZSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUu''@;'; put 'put ''c3ViPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihPKX07dmFyIEo9ZnVuY3Rpb24oTyx6LG5lKXt2YXIgVCxTLEYsdGU9Ty53b3Jkcyx4PXoud29yZHMsUD1uZS53b3JkcyxWPTAseWU9MHx0ZVswXSxDZT04MTkxJnllLERlPXllPj4+MTMsUGU9MHx0ZVsxXSxRZT04MTkx''@;'; put 'put ''JlBlLCRlPVBlPj4+MTMsZ3Q9MHx0ZVsyXSx5dD04MTkxJmd0LHB0PWd0Pj4+MTMsbXQ9MHx0ZVszXSx2dD04MTkxJm10LGZ0PW10Pj4+MTMsRnQ9MHx0ZVs0XSxvbj04MTkxJkZ0LF90PUZ0Pj4+MTMsbnQ9MHx0ZVs1XSxxZT04MTkxJm50LG90PW50Pj4+MTMsUnQ9MHx0ZVs2XSxDdD04MTkx''@;'; put 'put ''JlJ0LGN0PVJ0Pj4+MTMsTnQ9MHx0ZVs3XSx6ZT04MTkxJk50LFllPU50Pj4+MTMsQXQ9MHx0ZVs4XSxqdD04MTkxJkF0LEp0PUF0Pj4+MTMsbW49MHx0ZVs5XSxwbj04MTkxJm1uLGJuPW1uPj4+MTMsbG49MHx4WzBdLE5uPTgxOTEmbG4sa249bG4+Pj4xMyxlcj0wfHhbMV0sdXI9ODE5MSZl''@;'; put 'put ''cixYbj1lcj4+PjEzLEZyPTB8eFsyXSx4cj04MTkxJkZyLGVuPUZyPj4+MTMsZHI9MHx4WzNdLG5yPTgxOTEmZHIsd249ZHI+Pj4xMywkbj0wfHhbNF0sWXQ9ODE5MSYkbixnbj0kbj4+PjEzLEtuPTB8eFs1XSxWdD04MTkxJktuLHNuPUtuPj4+MTMsVW49MHx4WzZdLF9uPTgxOTEmVW4sdG49''@;'; put 'put ''VW4+Pj4xMyxHbj0wfHhbN10sVHI9ODE5MSZHbixQbj1Hbj4+PjEzLFNyPTB8eFs4XSx2bj04MTkxJlNyLHVuPVNyPj4+MTMsY249MHx4WzldLFNuPTgxOTEmY24sR3Q9Y24+Pj4xMztuZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsbmUubGVuZ3RoPTE5O3ZhciBFbj0oVisoVD1N''@;'; put 'put ''YXRoLmltdWwoQ2UsTm4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKENlLGtuKSkrTWF0aC5pbXVsKERlLE5uKXwwKSk8PDEzKXwwO1Y9KChGPU1hdGguaW11bChEZSxrbikpKyhTPj4+MTMpfDApKyhFbj4+PjI2KXwwLEVuJj02NzEwODg2MyxUPU1hdGguaW11bChRZSxObiksUz0oUz1N''@;'; put 'put ''YXRoLmltdWwoUWUsa24pKStNYXRoLmltdWwoJGUsTm4pfDAsRj1NYXRoLmltdWwoJGUsa24pO3ZhciBqbj0oVisoVD1UK01hdGguaW11bChDZSx1cil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLFhuKXwwKStNYXRoLmltdWwoRGUsdXIpfDApKTw8MTMpfDA7Vj0oKEY9RitN''@;'; put 'put ''YXRoLmltdWwoRGUsWG4pfDApKyhTPj4+MTMpfDApKyhqbj4+PjI2KXwwLGpuJj02NzEwODg2MyxUPU1hdGguaW11bCh5dCxObiksUz0oUz1NYXRoLmltdWwoeXQsa24pKStNYXRoLmltdWwocHQsTm4pfDAsRj1NYXRoLmltdWwocHQsa24pLFQ9VCtNYXRoLmltdWwoUWUsdXIpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChRZSxYbil8MCkrTWF0aC5pbXVsKCRlLHVyKXwwLEY9RitNYXRoLmltdWwoJGUsWG4pfDA7dmFyIHF0PShWKyhUPVQrTWF0aC5pbXVsKENlLHhyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsZW4pfDApK01hdGguaW11bChEZSx4cil8MCkpPDwxMyl8MDtW''@;'; put 'put ''PSgoRj1GK01hdGguaW11bChEZSxlbil8MCkrKFM+Pj4xMyl8MCkrKHF0Pj4+MjYpfDAscXQmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHZ0LE5uKSxTPShTPU1hdGguaW11bCh2dCxrbikpK01hdGguaW11bChmdCxObil8MCxGPU1hdGguaW11bChmdCxrbiksVD1UK01hdGguaW11bCh5dCx1cil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKHl0LFhuKXwwKStNYXRoLmltdWwocHQsdXIpfDAsRj1GK01hdGguaW11bChwdCxYbil8MCxUPVQrTWF0aC5pbXVsKFFlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsZW4pfDApK01hdGguaW11bCgkZSx4cil8MCxGPUYrTWF0aC5pbXVsKCRlLGVuKXwwO3Zh''@;'; put 'put ''ciBMbj0oVisoVD1UK01hdGguaW11bChDZSxucil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHduKXwwKStNYXRoLmltdWwoRGUsbnIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsd24pfDApKyhTPj4+MTMpfDApKyhMbj4+PjI2KXwwLExuJj02NzEwODg2MyxU''@;'; put 'put ''PU1hdGguaW11bChvbixObiksUz0oUz1NYXRoLmltdWwob24sa24pKStNYXRoLmltdWwoX3QsTm4pfDAsRj1NYXRoLmltdWwoX3Qsa24pLFQ9VCtNYXRoLmltdWwodnQsdXIpfDAsUz0oUz1TK01hdGguaW11bCh2dCxYbil8MCkrTWF0aC5pbXVsKGZ0LHVyKXwwLEY9RitNYXRoLmltdWwoZnQs''@;'; put 'put ''WG4pfDAsVD1UK01hdGguaW11bCh5dCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LGVuKXwwKStNYXRoLmltdWwocHQseHIpfDAsRj1GK01hdGguaW11bChwdCxlbil8MCxUPVQrTWF0aC5pbXVsKFFlLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsd24pfDApK01hdGguaW11bCgkZSxucil8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKCRlLHduKXwwO3ZhciBKbj0oVisoVD1UK01hdGguaW11bChDZSxZdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLGduKXwwKStNYXRoLmltdWwoRGUsWXQpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsZ24pfDApKyhTPj4+MTMpfDAp''@;'; put 'put ''KyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxUPU1hdGguaW11bChxZSxObiksUz0oUz1NYXRoLmltdWwocWUsa24pKStNYXRoLmltdWwob3QsTm4pfDAsRj1NYXRoLmltdWwob3Qsa24pLFQ9VCtNYXRoLmltdWwob24sdXIpfDAsUz0oUz1TK01hdGguaW11bChvbixYbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KF90LHVyKXwwLEY9RitNYXRoLmltdWwoX3QsWG4pfDAsVD1UK01hdGguaW11bCh2dCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LGVuKXwwKStNYXRoLmltdWwoZnQseHIpfDAsRj1GK01hdGguaW11bChmdCxlbil8MCxUPVQrTWF0aC5pbXVsKHl0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''eXQsd24pfDApK01hdGguaW11bChwdCxucil8MCxGPUYrTWF0aC5pbXVsKHB0LHduKXwwLFQ9VCtNYXRoLmltdWwoUWUsWXQpfDAsUz0oUz1TK01hdGguaW11bChRZSxnbil8MCkrTWF0aC5pbXVsKCRlLFl0KXwwLEY9RitNYXRoLmltdWwoJGUsZ24pfDA7dmFyIG9yPShWKyhUPVQrTWF0aC5p''@;'; put 'put ''bXVsKENlLFZ0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usc24pfDApK01hdGguaW11bChEZSxWdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxzbil8MCkrKFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEN0LE5uKSxT''@;'; put 'put ''PShTPU1hdGguaW11bChDdCxrbikpK01hdGguaW11bChjdCxObil8MCxGPU1hdGguaW11bChjdCxrbiksVD1UK01hdGguaW11bChxZSx1cil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLFhuKXwwKStNYXRoLmltdWwob3QsdXIpfDAsRj1GK01hdGguaW11bChvdCxYbil8MCxUPVQrTWF0aC5pbXVs''@;'; put 'put ''KG9uLHhyKXwwLFM9KFM9UytNYXRoLmltdWwob24sZW4pfDApK01hdGguaW11bChfdCx4cil8MCxGPUYrTWF0aC5pbXVsKF90LGVuKXwwLFQ9VCtNYXRoLmltdWwodnQsbnIpfDAsUz0oUz1TK01hdGguaW11bCh2dCx3bil8MCkrTWF0aC5pbXVsKGZ0LG5yKXwwLEY9RitNYXRoLmltdWwoZnQs''@;'; put 'put ''d24pfDAsVD1UK01hdGguaW11bCh5dCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKHl0LGduKXwwKStNYXRoLmltdWwocHQsWXQpfDAsRj1GK01hdGguaW11bChwdCxnbil8MCxUPVQrTWF0aC5pbXVsKFFlLFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsc24pfDApK01hdGguaW11bCgkZSxWdCl8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKCRlLHNuKXwwO3ZhciBncj0oVisoVD1UK01hdGguaW11bChDZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHRuKXwwKStNYXRoLmltdWwoRGUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdG4pfDApKyhTPj4+MTMpfDAp''@;'; put 'put ''Kyhncj4+PjI2KXwwLGdyJj02NzEwODg2MyxUPU1hdGguaW11bCh6ZSxObiksUz0oUz1NYXRoLmltdWwoemUsa24pKStNYXRoLmltdWwoWWUsTm4pfDAsRj1NYXRoLmltdWwoWWUsa24pLFQ9VCtNYXRoLmltdWwoQ3QsdXIpfDAsUz0oUz1TK01hdGguaW11bChDdCxYbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KGN0LHVyKXwwLEY9RitNYXRoLmltdWwoY3QsWG4pfDAsVD1UK01hdGguaW11bChxZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLGVuKXwwKStNYXRoLmltdWwob3QseHIpfDAsRj1GK01hdGguaW11bChvdCxlbil8MCxUPVQrTWF0aC5pbXVsKG9uLG5yKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''b24sd24pfDApK01hdGguaW11bChfdCxucil8MCxGPUYrTWF0aC5pbXVsKF90LHduKXwwLFQ9VCtNYXRoLmltdWwodnQsWXQpfDAsUz0oUz1TK01hdGguaW11bCh2dCxnbil8MCkrTWF0aC5pbXVsKGZ0LFl0KXwwLEY9RitNYXRoLmltdWwoZnQsZ24pfDAsVD1UK01hdGguaW11bCh5dCxWdCl8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKHl0LHNuKXwwKStNYXRoLmltdWwocHQsVnQpfDAsRj1GK01hdGguaW11bChwdCxzbil8MCxUPVQrTWF0aC5pbXVsKFFlLF9uKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdG4pfDApK01hdGguaW11bCgkZSxfbil8MCxGPUYrTWF0aC5pbXVsKCRlLHRuKXwwO3Zh''@;'; put 'put ''ciBKcj0oVisoVD1UK01hdGguaW11bChDZSxUcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLFBuKXwwKStNYXRoLmltdWwoRGUsVHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsUG4pfDApKyhTPj4+MTMpfDApKyhKcj4+PjI2KXwwLEpyJj02NzEwODg2MyxU''@;'; put 'put ''PU1hdGguaW11bChqdCxObiksUz0oUz1NYXRoLmltdWwoanQsa24pKStNYXRoLmltdWwoSnQsTm4pfDAsRj1NYXRoLmltdWwoSnQsa24pLFQ9VCtNYXRoLmltdWwoemUsdXIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxYbil8MCkrTWF0aC5pbXVsKFllLHVyKXwwLEY9RitNYXRoLmltdWwoWWUs''@;'; put 'put ''WG4pfDAsVD1UK01hdGguaW11bChDdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LGVuKXwwKStNYXRoLmltdWwoY3QseHIpfDAsRj1GK01hdGguaW11bChjdCxlbil8MCxUPVQrTWF0aC5pbXVsKHFlLG5yKXwwLFM9KFM9UytNYXRoLmltdWwocWUsd24pfDApK01hdGguaW11bChvdCxucil8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKG90LHduKXwwLFQ9VCtNYXRoLmltdWwob24sWXQpfDAsUz0oUz1TK01hdGguaW11bChvbixnbil8MCkrTWF0aC5pbXVsKF90LFl0KXwwLEY9RitNYXRoLmltdWwoX3QsZ24pfDAsVD1UK01hdGguaW11bCh2dCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHNuKXww''@;'; put 'put ''KStNYXRoLmltdWwoZnQsVnQpfDAsRj1GK01hdGguaW11bChmdCxzbil8MCxUPVQrTWF0aC5pbXVsKHl0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsdG4pfDApK01hdGguaW11bChwdCxfbil8MCxGPUYrTWF0aC5pbXVsKHB0LHRuKXwwLFQ9VCtNYXRoLmltdWwoUWUsVHIpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChRZSxQbil8MCkrTWF0aC5pbXVsKCRlLFRyKXwwLEY9RitNYXRoLmltdWwoJGUsUG4pfDA7dmFyIFZyPShWKyhUPVQrTWF0aC5pbXVsKENlLHZuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdW4pfDApK01hdGguaW11bChEZSx2bil8MCkpPDwxMyl8MDtW''@;'; put 'put ''PSgoRj1GK01hdGguaW11bChEZSx1bil8MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLE5uKSxTPShTPU1hdGguaW11bChwbixrbikpK01hdGguaW11bChibixObil8MCxGPU1hdGguaW11bChibixrbiksVD1UK01hdGguaW11bChqdCx1cil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKGp0LFhuKXwwKStNYXRoLmltdWwoSnQsdXIpfDAsRj1GK01hdGguaW11bChKdCxYbil8MCxUPVQrTWF0aC5pbXVsKHplLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoemUsZW4pfDApK01hdGguaW11bChZZSx4cil8MCxGPUYrTWF0aC5pbXVsKFllLGVuKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoQ3QsbnIpfDAsUz0oUz1TK01hdGguaW11bChDdCx3bil8MCkrTWF0aC5pbXVsKGN0LG5yKXwwLEY9RitNYXRoLmltdWwoY3Qsd24pfDAsVD1UK01hdGguaW11bChxZSxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKHFlLGduKXwwKStNYXRoLmltdWwob3QsWXQpfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChvdCxnbil8MCxUPVQrTWF0aC5pbXVsKG9uLFZ0KXwwLFM9KFM9UytNYXRoLmltdWwob24sc24pfDApK01hdGguaW11bChfdCxWdCl8MCxGPUYrTWF0aC5pbXVsKF90LHNuKXwwLFQ9VCtNYXRoLmltdWwodnQsX24pfDAsUz0oUz1TK01hdGguaW11bCh2dCx0bil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGZ0LF9uKXwwLEY9RitNYXRoLmltdWwoZnQsdG4pfDAsVD1UK01hdGguaW11bCh5dCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LFBuKXwwKStNYXRoLmltdWwocHQsVHIpfDAsRj1GK01hdGguaW11bChwdCxQbil8MCxUPVQrTWF0aC5pbXVsKFFlLHZuKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoUWUsdW4pfDApK01hdGguaW11bCgkZSx2bil8MCxGPUYrTWF0aC5pbXVsKCRlLHVuKXwwO3ZhciB0aT0oVisoVD1UK01hdGguaW11bChDZSxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEd0KXwwKStNYXRoLmltdWwoRGUsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitN''@;'; put 'put ''YXRoLmltdWwoRGUsR3QpfDApKyhTPj4+MTMpfDApKyh0aT4+PjI2KXwwLHRpJj02NzEwODg2MyxUPU1hdGguaW11bChwbix1ciksUz0oUz1NYXRoLmltdWwocG4sWG4pKStNYXRoLmltdWwoYm4sdXIpfDAsRj1NYXRoLmltdWwoYm4sWG4pLFQ9VCtNYXRoLmltdWwoanQseHIpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChqdCxlbil8MCkrTWF0aC5pbXVsKEp0LHhyKXwwLEY9RitNYXRoLmltdWwoSnQsZW4pfDAsVD1UK01hdGguaW11bCh6ZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKHplLHduKXwwKStNYXRoLmltdWwoWWUsbnIpfDAsRj1GK01hdGguaW11bChZZSx3bil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKEN0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsZ24pfDApK01hdGguaW11bChjdCxZdCl8MCxGPUYrTWF0aC5pbXVsKGN0LGduKXwwLFQ9VCtNYXRoLmltdWwocWUsVnQpfDAsUz0oUz1TK01hdGguaW11bChxZSxzbil8MCkrTWF0aC5pbXVsKG90LFZ0KXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''b3Qsc24pfDAsVD1UK01hdGguaW11bChvbixfbil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHRuKXwwKStNYXRoLmltdWwoX3QsX24pfDAsRj1GK01hdGguaW11bChfdCx0bil8MCxUPVQrTWF0aC5pbXVsKHZ0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwodnQsUG4pfDApK01hdGguaW11bChmdCxU''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKGZ0LFBuKXwwLFQ9VCtNYXRoLmltdWwoeXQsdm4pfDAsUz0oUz1TK01hdGguaW11bCh5dCx1bil8MCkrTWF0aC5pbXVsKHB0LHZuKXwwLEY9RitNYXRoLmltdWwocHQsdW4pfDA7dmFyIE9yPShWKyhUPVQrTWF0aC5pbXVsKFFlLFNuKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoUWUsR3QpfDApK01hdGguaW11bCgkZSxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bCgkZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKE9yPj4+MjYpfDAsT3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLHhyKSxTPShTPU1hdGguaW11bChwbixlbikpK01h''@;'; put 'put ''dGguaW11bChibix4cil8MCxGPU1hdGguaW11bChibixlbiksVD1UK01hdGguaW11bChqdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHduKXwwKStNYXRoLmltdWwoSnQsbnIpfDAsRj1GK01hdGguaW11bChKdCx3bil8MCxUPVQrTWF0aC5pbXVsKHplLFl0KXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoemUsZ24pfDApK01hdGguaW11bChZZSxZdCl8MCxGPUYrTWF0aC5pbXVsKFllLGduKXwwLFQ9VCtNYXRoLmltdWwoQ3QsVnQpfDAsUz0oUz1TK01hdGguaW11bChDdCxzbil8MCkrTWF0aC5pbXVsKGN0LFZ0KXwwLEY9RitNYXRoLmltdWwoY3Qsc24pfDAsVD1UK01hdGguaW11bChxZSxf''@;'; put 'put ''bil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHRuKXwwKStNYXRoLmltdWwob3QsX24pfDAsRj1GK01hdGguaW11bChvdCx0bil8MCxUPVQrTWF0aC5pbXVsKG9uLFRyKXwwLFM9KFM9UytNYXRoLmltdWwob24sUG4pfDApK01hdGguaW11bChfdCxUcil8MCxGPUYrTWF0aC5pbXVsKF90LFBuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwodnQsdm4pfDAsUz0oUz1TK01hdGguaW11bCh2dCx1bil8MCkrTWF0aC5pbXVsKGZ0LHZuKXwwLEY9RitNYXRoLmltdWwoZnQsdW4pfDA7dmFyIGxpPShWKyhUPVQrTWF0aC5pbXVsKHl0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoeXQsR3QpfDAp''@;'; put 'put ''K01hdGguaW11bChwdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChwdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLG5yKSxTPShTPU1hdGguaW11bChwbix3bikpK01hdGguaW11bChibixucil8MCxGPU1hdGguaW11''@;'; put 'put ''bChibix3biksVD1UK01hdGguaW11bChqdCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LGduKXwwKStNYXRoLmltdWwoSnQsWXQpfDAsRj1GK01hdGguaW11bChKdCxnbil8MCxUPVQrTWF0aC5pbXVsKHplLFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoemUsc24pfDApK01hdGguaW11bChZZSxW''@;'; put 'put ''dCl8MCxGPUYrTWF0aC5pbXVsKFllLHNuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsX24pfDAsUz0oUz1TK01hdGguaW11bChDdCx0bil8MCkrTWF0aC5pbXVsKGN0LF9uKXwwLEY9RitNYXRoLmltdWwoY3QsdG4pfDAsVD1UK01hdGguaW11bChxZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLFBu''@;'; put 'put ''KXwwKStNYXRoLmltdWwob3QsVHIpfDAsRj1GK01hdGguaW11bChvdCxQbil8MCxUPVQrTWF0aC5pbXVsKG9uLHZuKXwwLFM9KFM9UytNYXRoLmltdWwob24sdW4pfDApK01hdGguaW11bChfdCx2bil8MCxGPUYrTWF0aC5pbXVsKF90LHVuKXwwO3ZhciBJaT0oVisoVD1UK01hdGguaW11bCh2''@;'; put 'put ''dCxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHZ0LEd0KXwwKStNYXRoLmltdWwoZnQsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoZnQsR3QpfDApKyhTPj4+MTMpfDApKyhJaT4+PjI2KXwwLElpJj02NzEwODg2MyxUPU1hdGguaW11bChwbixZdCksUz0oUz1N''@;'; put 'put ''YXRoLmltdWwocG4sZ24pKStNYXRoLmltdWwoYm4sWXQpfDAsRj1NYXRoLmltdWwoYm4sZ24pLFQ9VCtNYXRoLmltdWwoanQsVnQpfDAsUz0oUz1TK01hdGguaW11bChqdCxzbil8MCkrTWF0aC5pbXVsKEp0LFZ0KXwwLEY9RitNYXRoLmltdWwoSnQsc24pfDAsVD1UK01hdGguaW11bCh6ZSxf''@;'; put 'put ''bil8MCxTPShTPVMrTWF0aC5pbXVsKHplLHRuKXwwKStNYXRoLmltdWwoWWUsX24pfDAsRj1GK01hdGguaW11bChZZSx0bil8MCxUPVQrTWF0aC5pbXVsKEN0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsUG4pfDApK01hdGguaW11bChjdCxUcil8MCxGPUYrTWF0aC5pbXVsKGN0LFBuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwocWUsdm4pfDAsUz0oUz1TK01hdGguaW11bChxZSx1bil8MCkrTWF0aC5pbXVsKG90LHZuKXwwLEY9RitNYXRoLmltdWwob3QsdW4pfDA7dmFyIHIwPShWKyhUPVQrTWF0aC5pbXVsKG9uLFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob24sR3QpfDAp''@;'; put 'put ''K01hdGguaW11bChfdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChfdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKHIwPj4+MjYpfDAscjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLFZ0KSxTPShTPU1hdGguaW11bChwbixzbikpK01hdGguaW11bChibixWdCl8MCxGPU1hdGguaW11''@;'; put 'put ''bChibixzbiksVD1UK01hdGguaW11bChqdCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHRuKXwwKStNYXRoLmltdWwoSnQsX24pfDAsRj1GK01hdGguaW11bChKdCx0bil8MCxUPVQrTWF0aC5pbXVsKHplLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoemUsUG4pfDApK01hdGguaW11bChZZSxU''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKFllLFBuKXwwLFQ9VCtNYXRoLmltdWwoQ3Qsdm4pfDAsUz0oUz1TK01hdGguaW11bChDdCx1bil8MCkrTWF0aC5pbXVsKGN0LHZuKXwwLEY9RitNYXRoLmltdWwoY3QsdW4pfDA7dmFyIGUwPShWKyhUPVQrTWF0aC5pbXVsKHFlLFNuKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwocWUsR3QpfDApK01hdGguaW11bChvdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChvdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGUwPj4+MjYpfDAsZTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLF9uKSxTPShTPU1hdGguaW11bChwbix0bikpK01h''@;'; put 'put ''dGguaW11bChibixfbil8MCxGPU1hdGguaW11bChibix0biksVD1UK01hdGguaW11bChqdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LFBuKXwwKStNYXRoLmltdWwoSnQsVHIpfDAsRj1GK01hdGguaW11bChKdCxQbil8MCxUPVQrTWF0aC5pbXVsKHplLHZuKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoemUsdW4pfDApK01hdGguaW11bChZZSx2bil8MCxGPUYrTWF0aC5pbXVsKFllLHVuKXwwO3ZhciBkMD0oVisoVD1UK01hdGguaW11bChDdCxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEN0LEd0KXwwKStNYXRoLmltdWwoY3QsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitN''@;'; put 'put ''YXRoLmltdWwoY3QsR3QpfDApKyhTPj4+MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGguaW11bChwbixUciksUz0oUz1NYXRoLmltdWwocG4sUG4pKStNYXRoLmltdWwoYm4sVHIpfDAsRj1NYXRoLmltdWwoYm4sUG4pLFQ9VCtNYXRoLmltdWwoanQsdm4pfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChqdCx1bil8MCkrTWF0aC5pbXVsKEp0LHZuKXwwLEY9RitNYXRoLmltdWwoSnQsdW4pfDA7dmFyIF8wPShWKyhUPVQrTWF0aC5pbXVsKHplLFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoemUsR3QpfDApK01hdGguaW11bChZZSxTbil8MCkpPDwxMyl8MDtW''@;'; put 'put ''PSgoRj1GK01hdGguaW11bChZZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKF8wPj4+MjYpfDAsXzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLHZuKSxTPShTPU1hdGguaW11bChwbix1bikpK01hdGguaW11bChibix2bil8MCxGPU1hdGguaW11bChibix1bik7dmFyIFUwPShWKyhUPVQrTWF0aC5p''@;'; put 'put ''bXVsKGp0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoanQsR3QpfDApK01hdGguaW11bChKdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChKdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKFUwPj4+MjYpfDAsVTAmPTY3MTA4ODYzO3ZhciBCaT0oVisoVD1NYXRoLmlt''@;'; put 'put ''dWwocG4sU24pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKHBuLEd0KSkrTWF0aC5pbXVsKGJuLFNuKXwwKSk8PDEzKXwwO3JldHVybiBWPSgoRj1NYXRoLmltdWwoYm4sR3QpKSsoUz4+PjEzKXwwKSsoQmk+Pj4yNil8MCxCaSY9NjcxMDg4NjMsUFswXT1FbixQWzFdPWpuLFBbMl09cXQs''@;'; put 'put ''UFszXT1MbixQWzRdPUpuLFBbNV09b3IsUFs2XT1ncixQWzddPUpyLFBbOF09VnIsUFs5XT10aSxQWzEwXT1PcixQWzExXT1saSxQWzEyXT1JaSxQWzEzXT1yMCxQWzE0XT1lMCxQWzE1XT1kMCxQWzE2XT1fMCxQWzE3XT1VMCxQWzE4XT1CaSwwIT09ViYmKFBbMTldPVYsbmUubGVuZ3RoKysp''@;'; put 'put ''LG5lfTtmdW5jdGlvbiBhZShoZSxPLHope3JldHVybihuZXcgZmUpLm11bHAoaGUsTyx6KX1mdW5jdGlvbiBmZShoZSxPKXt0aGlzLng9aGUsdGhpcy55PU99TWF0aC5pbXVsfHwoSj1xKSxVLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihPLHope3ZhciBuZSx0ZT10aGlzLmxlbmd0aCtPLmxl''@;'; put 'put ''bmd0aDtyZXR1cm4gbmU9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1PLmxlbmd0aD9KKHRoaXMsTyx6KTp0ZTw2Mz9xKHRoaXMsTyx6KTp0ZTwxMDI0P2Z1bmN0aW9uIHNlKGhlLE8seil7ei5uZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlLHoubGVuZ3RoPWhlLmxlbmd0aCtPLmxlbmd0''@;'; put 'put ''aDtmb3IodmFyIG5lPTAsdGU9MCx4PTA7eDx6Lmxlbmd0aC0xO3grKyl7dmFyIFA9dGU7dGU9MDtmb3IodmFyIFY9NjcxMDg4NjMmbmUsVD1NYXRoLm1pbih4LE8ubGVuZ3RoLTEpLFM9TWF0aC5tYXgoMCx4LWhlLmxlbmd0aCsxKTtTPD1UO1MrKyl7dmFyIERlPSgwfGhlLndvcmRzW3gtU10p''@;'; put 'put ''KigwfE8ud29yZHNbU10pLFBlPTY3MTA4ODYzJkRlO1Y9NjcxMDg4NjMmKFBlPVBlK1Z8MCksdGUrPShQPShQPVArKERlLzY3MTA4ODY0fDApfDApKyhQZT4+PjI2KXwwKT4+PjI2LFAmPTY3MTA4ODYzfXoud29yZHNbeF09VixuZT1QLFA9dGV9cmV0dXJuIDAhPT1uZT96LndvcmRzW3hdPW5l''@;'; put 'put ''OnoubGVuZ3RoLS0sei5zdHJpcCgpfSh0aGlzLE8seik6YWUodGhpcyxPLHopLG5lfSxmZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLG5lPVUucHJvdG90eXBlLl9jb3VudEJpdHMoTyktMSx0ZT0wO3RlPE87dGUrKyl6W3RlXT10aGlzLnJl''@;'; put 'put ''dkJpbih0ZSxuZSxPKTtyZXR1cm4gen0sZmUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihPLHosbmUpe2lmKDA9PT1PfHxPPT09bmUtMSlyZXR1cm4gTztmb3IodmFyIHRlPTAseD0wO3g8ejt4KyspdGV8PSgxJk8pPDx6LXgtMSxPPj49MTtyZXR1cm4gdGV9LGZlLnByb3RvdHlwZS5wZXJt''@;'; put 'put ''dXRlPWZ1bmN0aW9uKE8seixuZSx0ZSx4LFApe2Zvcih2YXIgVj0wO1Y8UDtWKyspdGVbVl09eltPW1ZdXSx4W1ZdPW5lW09bVl1dfSxmZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKE8seixuZSx0ZSx4LFApe3RoaXMucGVybXV0ZShQLE8seixuZSx0ZSx4KTtmb3IodmFyIFY9MTtW''@;'; put 'put ''PHg7Vjw8PTEpZm9yKHZhciBUPVY8PDEsUz1NYXRoLmNvcygyKk1hdGguUEkvVCksRj1NYXRoLnNpbigyKk1hdGguUEkvVCkseWU9MDt5ZTx4O3llKz1UKWZvcih2YXIgQ2U9UyxEZT1GLFBlPTA7UGU8VjtQZSsrKXt2YXIgUWU9bmVbeWUrUGVdLCRlPXRlW3llK1BlXSxndD1uZVt5ZStQZStW''@;'; put 'put ''XSx5dD10ZVt5ZStQZStWXSxwdD1DZSpndC1EZSp5dDt5dD1DZSp5dCtEZSpndCxuZVt5ZStQZV09UWUrKGd0PXB0KSx0ZVt5ZStQZV09JGUreXQsbmVbeWUrUGUrVl09UWUtZ3QsdGVbeWUrUGUrVl09JGUteXQsUGUhPT1UJiYocHQ9UypDZS1GKkRlLERlPVMqRGUrRipDZSxDZT1wdCl9fSxm''@;'; put 'put ''ZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oTyx6KXt2YXIgbmU9MXxNYXRoLm1heCh6LE8pLHRlPTEmbmUseD0wO2ZvcihuZT1uZS8yfDA7bmU7bmU+Pj49MSl4Kys7cmV0dXJuIDE8PHgrMSt0ZX0sZmUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihPLHosbmUpe2lmKCEo''@;'; put 'put ''bmU8PTEpKWZvcih2YXIgdGU9MDt0ZTxuZS8yO3RlKyspe3ZhciB4PU9bdGVdO09bdGVdPU9bbmUtdGUtMV0sT1tuZS10ZS0xXT14LHg9elt0ZV0selt0ZV09LXpbbmUtdGUtMV0seltuZS10ZS0xXT0teH19LGZlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oTyx6KXtmb3IodmFy''@;'; put 'put ''IG5lPTAsdGU9MDt0ZTx6LzI7dGUrKyl7dmFyIHg9ODE5MipNYXRoLnJvdW5kKE9bMip0ZSsxXS96KStNYXRoLnJvdW5kKE9bMip0ZV0veikrbmU7T1t0ZV09NjcxMDg4NjMmeCxuZT14PDY3MTA4ODY0PzA6eC82NzEwODg2NHwwfXJldHVybiBPfSxmZS5wcm90b3R5cGUuY29udmVydDEzYj1m''@;'; put 'put ''dW5jdGlvbihPLHosbmUsdGUpe2Zvcih2YXIgeD0wLFA9MDtQPHo7UCsrKW5lWzIqUF09ODE5MSYoeCs9MHxPW1BdKSxuZVsyKlArMV09ODE5MSYoeD4+Pj0xMykseD4+Pj0xMztmb3IoUD0yKno7UDx0ZTsrK1ApbmVbUF09MDtFKDA9PT14KSxFKDA9PSgtODE5MiZ4KSl9LGZlLnByb3RvdHlw''@;'; put 'put ''ZS5zdHViPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyksbmU9MDtuZTxPO25lKyspeltuZV09MDtyZXR1cm4gen0sZmUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oTyx6LG5lKXt2YXIgdGU9Mip0aGlzLmd1ZXNzTGVuMTNiKE8ubGVuZ3RoLHoubGVuZ3RoKSx4PXRoaXMubWFr''@;'; put 'put ''ZVJCVCh0ZSksUD10aGlzLnN0dWIodGUpLFY9bmV3IEFycmF5KHRlKSxUPW5ldyBBcnJheSh0ZSksUz1uZXcgQXJyYXkodGUpLEY9bmV3IEFycmF5KHRlKSx5ZT1uZXcgQXJyYXkodGUpLENlPW5ldyBBcnJheSh0ZSksRGU9bmUud29yZHM7RGUubGVuZ3RoPXRlLHRoaXMuY29udmVydDEzYihP''@;'; put 'put ''LndvcmRzLE8ubGVuZ3RoLFYsdGUpLHRoaXMuY29udmVydDEzYih6LndvcmRzLHoubGVuZ3RoLEYsdGUpLHRoaXMudHJhbnNmb3JtKFYsUCxULFMsdGUseCksdGhpcy50cmFuc2Zvcm0oRixQLHllLENlLHRlLHgpO2Zvcih2YXIgUGU9MDtQZTx0ZTtQZSsrKXt2YXIgUWU9VFtQZV0qeWVbUGVd''@;'; put 'put ''LVNbUGVdKkNlW1BlXTtTW1BlXT1UW1BlXSpDZVtQZV0rU1tQZV0qeWVbUGVdLFRbUGVdPVFlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShULFMsdGUpLHRoaXMudHJhbnNmb3JtKFQsUyxEZSxQLHRlLHgpLHRoaXMuY29uanVnYXRlKERlLFAsdGUpLHRoaXMubm9ybWFsaXplMTNiKERlLHRlKSxu''@;'; put 'put ''ZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsbmUubGVuZ3RoPU8ubGVuZ3RoK3oubGVuZ3RoLG5lLnN0cmlwKCl9LFUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgp''@;'; put 'put ''LHRoaXMubXVsVG8oTyx6KX0sVS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLGFlKHRoaXMsTyx6KX0sVS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLm11bFRvKE8sdGhpcyl9LFUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpO2Zvcih2YXIgej0wLG5lPTA7bmU8dGhpcy5sZW5ndGg7bmUrKyl7dmFyIHRlPSgwfHRoaXMud29yZHNbbmVdKSpPLHg9KDY3MTA4''@;'; put 'put ''ODYzJnRlKSsoNjcxMDg4NjMmeik7ej4+PTI2LHorPXRlLzY3MTA4ODY0fDAseis9eD4+PjI2LHRoaXMud29yZHNbbmVdPTY3MTA4ODYzJnh9cmV0dXJuIDAhPT16JiYodGhpcy53b3Jkc1tuZV09eix0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiB0aGlzLmNsb25lKCkuaW11bG4oTyl9LFUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sVS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sVS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8p''@;'; put 'put ''e3ZhciB6PWZ1bmN0aW9uIGVlKGhlKXtmb3IodmFyIE89bmV3IEFycmF5KGhlLmJpdExlbmd0aCgpKSx6PTA7ejxPLmxlbmd0aDt6Kyspe3ZhciB0ZT16JTI2O09bel09KGhlLndvcmRzW3ovMjZ8MF0mMTw8dGUpPj4+dGV9cmV0dXJuIE99KE8pO2lmKDA9PT16Lmxlbmd0aClyZXR1cm4gbmV3''@;'; put 'put ''IFUoMSk7Zm9yKHZhciBuZT10aGlzLHRlPTA7dGU8ei5sZW5ndGgmJjA9PT16W3RlXTt0ZSsrLG5lPW5lLnNxcigpKTtpZigrK3RlPHoubGVuZ3RoKWZvcih2YXIgeD1uZS5zcXIoKTt0ZTx6Lmxlbmd0aDt0ZSsrLHg9eC5zcXIoKSkwIT09elt0ZV0mJihuZT1uZS5tdWwoeCkpO3JldHVybiBu''@;'; put 'put ''ZX0sVS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgeCx6PU8lMjYsbmU9KE8teikvMjYsdGU9NjcxMDg4NjM+Pj4yNi16PDwyNi16O2lmKDAhPT16KXt2YXIgUD0wO2Zvcih4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBWPXRo''@;'; put 'put ''aXMud29yZHNbeF0mdGU7dGhpcy53b3Jkc1t4XT0oMHx0aGlzLndvcmRzW3hdKS1WPDx6fFAsUD1WPj4+MjYten1QJiYodGhpcy53b3Jkc1t4XT1QLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1uZSl7Zm9yKHg9dGhpcy5sZW5ndGgtMTt4Pj0wO3gtLSl0aGlzLndvcmRzW3grbmVdPXRoaXMud29y''@;'; put 'put ''ZHNbeF07Zm9yKHg9MDt4PG5lO3grKyl0aGlzLndvcmRzW3hdPTA7dGhpcy5sZW5ndGgrPW5lfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihPKX0sVS5wcm90b3R5cGUuaXVz''@;'; put 'put ''aHJuPWZ1bmN0aW9uKE8seixuZSl7dmFyIHRlO0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKSx0ZT16Pyh6LXolMjYpLzI2OjA7dmFyIHg9TyUyNixQPU1hdGgubWluKChPLXgpLzI2LHRoaXMubGVuZ3RoKSxWPTY3MTA4ODYzXjY3MTA4ODYzPj4+eDw8eCxUPW5lO2lmKHRlLT1QLHRlPU1h''@;'; put 'put ''dGgubWF4KDAsdGUpLFQpe2Zvcih2YXIgUz0wO1M8UDtTKyspVC53b3Jkc1tTXT10aGlzLndvcmRzW1NdO1QubGVuZ3RoPVB9aWYoMCE9PVApaWYodGhpcy5sZW5ndGg+UClmb3IodGhpcy5sZW5ndGgtPVAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXRoaXMud29yZHNbU109dGhpcy53b3Jkc1tT''@;'; put 'put ''K1BdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEY9MDtmb3IoUz10aGlzLmxlbmd0aC0xO1M+PTAmJigwIT09Rnx8Uz49dGUpO1MtLSl7dmFyIHllPTB8dGhpcy53b3Jkc1tTXTt0aGlzLndvcmRzW1NdPUY8PDI2LXh8eWU+Pj54LEY9eWUmVn1yZXR1cm4gVCYmMCE9''@;'; put 'put ''PUYmJihULndvcmRzW1QubGVuZ3RoKytdPUYpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKE8seixuZSl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJu''@;'; put 'put ''KE8seixuZSl9LFUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihPKX0sVS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oTyl9LFUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oTyl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2xvbmUoKS5pc2hybihPKX0sVS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oTyl9LFUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LG5lPShPLXopLzI2''@;'; put 'put ''O3JldHVybiEodGhpcy5sZW5ndGg8PW5lfHwhKHRoaXMud29yZHNbbmVdJjE8PHopKX0sVS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LG5lPShPLXopLzI2O3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFz''@;'; put 'put ''a24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9bmU/dGhpczooMCE9PXomJm5lKyssdGhpcy5sZW5ndGg9TWF0aC5taW4obmUsdGhpcy5sZW5ndGgpLDAhPT16JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj56''@;'; put 'put ''PDx6KSx0aGlzLnN0cmlwKCkpfSxVLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihPKX0sVS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MD90aGlzLmlz''@;'; put 'put ''dWJuKC1PKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPE8/KHRoaXMud29yZHNbMF09Ty0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKE8pLHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MSx0aGlzKTp0aGlzLl9pYWRkbihPKX0sVS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKE8pe3RoaXMud29yZHNbMF0rPU87Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XT49NjcxMDg4NjQ7eisrKXRoaXMud29yZHNbel0tPTY3MTA4ODY0LHo9PT10aGlzLmxlbmd0''@;'; put 'put ''aC0xP3RoaXMud29yZHNbeisxXT0xOnRoaXMud29yZHNbeisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx6KzEpLHRoaXN9LFUucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKE8pe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MCly''@;'; put 'put ''ZXR1cm4gdGhpcy5pYWRkbigtTyk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPU8sMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1sw''@;'; put 'put ''XT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3pdPDA7eisrKXRoaXMud29yZHNbel0rPTY3MTA4ODY0LHRoaXMud29yZHNbeisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5hZGRu''@;'; put 'put ''PWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oTyl9LFUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihPKX0sVS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sVS5wcm90''@;'; put 'put ''b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LFUucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihPLHosbmUpe3ZhciB4O3RoaXMuX2V4cGFuZChPLmxlbmd0aCtuZSk7dmFyIFAsVj0wO2Zvcih4PTA7eDxPLmxlbmd0aDt4Kyspe1A9KDB8dGhp''@;'; put 'put ''cy53b3Jkc1t4K25lXSkrVjt2YXIgVD0oMHxPLndvcmRzW3hdKSp6O1Y9KChQLT02NzEwODg2MyZUKT4+MjYpLShULzY3MTA4ODY0fDApLHRoaXMud29yZHNbeCtuZV09NjcxMDg4NjMmUH1mb3IoO3g8dGhpcy5sZW5ndGgtbmU7eCsrKVY9KFA9KDB8dGhpcy53b3Jkc1t4K25lXSkrVik+PjI2''@;'; put 'put ''LHRoaXMud29yZHNbeCtuZV09NjcxMDg4NjMmUDtpZigwPT09VilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihFKC0xPT09ViksVj0wLHg9MDt4PHRoaXMubGVuZ3RoO3grKylWPShQPS0oMHx0aGlzLndvcmRzW3hdKStWKT4+MjYsdGhpcy53b3Jkc1t4XT02NzEwODg2MyZQO3JldHVybiB0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihPLHope3ZhciBuZSx0ZT10aGlzLmNsb25lKCkseD1PLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdOzAhPShuZT0yNi10aGlzLl9jb3VudEJpdHMoUCkpJiYoeD14LnVzaGxuKG5lKSx0ZS5pdXNo''@;'; put 'put ''bG4obmUpLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdKTt2YXIgUyxUPXRlLmxlbmd0aC14Lmxlbmd0aDtpZigibW9kIiE9PXopeyhTPW5ldyBVKG51bGwpKS5sZW5ndGg9VCsxLFMud29yZHM9bmV3IEFycmF5KFMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPFMubGVuZ3RoO0YrKylTLndvcmRzW0Zd''@;'; put 'put ''PTB9dmFyIHllPXRlLmNsb25lKCkuX2lzaGxuc3VibXVsKHgsMSxUKTswPT09eWUubmVnYXRpdmUmJih0ZT15ZSxTJiYoUy53b3Jkc1tUXT0xKSk7Zm9yKHZhciBDZT1ULTE7Q2U+PTA7Q2UtLSl7dmFyIERlPTY3MTA4ODY0KigwfHRlLndvcmRzW3gubGVuZ3RoK0NlXSkrKDB8dGUud29yZHNb''@;'; put 'put ''eC5sZW5ndGgrQ2UtMV0pO2ZvcihEZT1NYXRoLm1pbihEZS9QfDAsNjcxMDg4NjMpLHRlLl9pc2hsbnN1Ym11bCh4LERlLENlKTswIT09dGUubmVnYXRpdmU7KURlLS0sdGUubmVnYXRpdmU9MCx0ZS5faXNobG5zdWJtdWwoeCwxLENlKSx0ZS5pc1plcm8oKXx8KHRlLm5lZ2F0aXZlXj0xKTtT''@;'; put 'put ''JiYoUy53b3Jkc1tDZV09RGUpfXJldHVybiBTJiZTLnN0cmlwKCksdGUuc3RyaXAoKSwiZGl2IiE9PXomJjAhPT1uZSYmdGUuaXVzaHJuKG5lKSx7ZGl2OlN8fG51bGwsbW9kOnRlfX0sVS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKE8seixuZSl7cmV0dXJuIEUoIU8uaXNaZXJvKCkpLHRo''@;'; put 'put ''aXMuaXNaZXJvKCk/e2RpdjpuZXcgVSgwKSxtb2Q6bmV3IFUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZT8oUD10aGlzLm5lZygpLmRpdm1vZChPLHopLCJtb2QiIT09eiYmKHRlPVAuZGl2Lm5lZygpKSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLG5lJiYwIT09eC5u''@;'; put 'put ''ZWdhdGl2ZSYmeC5pYWRkKE8pKSx7ZGl2OnRlLG1vZDp4fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlPyhQPXRoaXMuZGl2bW9kKE8ubmVnKCkseiksIm1vZCIhPT16JiYodGU9UC5kaXYubmVnKCkpLHtkaXY6dGUsbW9kOlAubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmTy5u''@;'; put 'put ''ZWdhdGl2ZSk/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTy5uZWcoKSx6KSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLG5lJiYwIT09eC5uZWdhdGl2ZSYmeC5pc3ViKE8pKSx7ZGl2OlAuZGl2LG1vZDp4fSk6Ty5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKE8pPDA/e2RpdjpuZXcgVSgw''@;'; put 'put ''KSxtb2Q6dGhpc306MT09PU8ubGVuZ3RoPyJkaXYiPT09ej97ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT16P3tkaXY6bnVsbCxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm5ldyBVKHRo''@;'; put 'put ''aXMubW9kbihPLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoTyx6KTt2YXIgdGUseCxQfSxVLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sImRpdiIsITEpLmRpdn0sVS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChP''@;'; put 'put ''LCJtb2QiLCExKS5tb2R9LFUucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITApLm1vZH0sVS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5kaXZtb2QoTyk7aWYoei5tb2QuaXNaZXJvKCkpcmV0dXJuIHouZGl2''@;'; put 'put ''O3ZhciBuZT0wIT09ei5kaXYubmVnYXRpdmU/ei5tb2QuaXN1YihPKTp6Lm1vZCx0ZT1PLnVzaHJuKDEpLHg9Ty5hbmRsbigxKSxQPW5lLmNtcCh0ZSk7cmV0dXJuIFA8MHx8MT09PXgmJjA9PT1QP3ouZGl2OjAhPT16LmRpdi5uZWdhdGl2ZT96LmRpdi5pc3VibigxKTp6LmRpdi5pYWRkbigx''@;'; put 'put ''KX0sVS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9KDE8PDI2KSVPLG5lPTAsdGU9dGhpcy5sZW5ndGgtMTt0ZT49MDt0ZS0tKW5lPSh6Km5lKygwfHRoaXMud29yZHNbdGVdKSklTztyZXR1cm4gbmV9LFUucHJvdG90eXBlLmlkaXZuPWZ1bmN0''@;'; put 'put ''aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0wLG5lPXRoaXMubGVuZ3RoLTE7bmU+PTA7bmUtLSl7dmFyIHRlPSgwfHRoaXMud29yZHNbbmVdKSs2NzEwODg2NCp6O3RoaXMud29yZHNbbmVdPXRlL098MCx6PXRlJU99cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuZGl2''@;'; put 'put ''bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKE8pfSxVLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB6PXRoaXMsbmU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUo''@;'; put 'put ''KTtmb3IodmFyIHRlPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1uZXcgVSgwKSxWPW5ldyBVKDEpLFQ9MDt6LmlzRXZlbigpJiZuZS5pc0V2ZW4oKTspei5pdXNocm4oMSksbmUuaXVzaHJuKDEpLCsrVDtmb3IodmFyIFM9bmUuY2xvbmUoKSxGPXouY2xvbmUoKTshei5pc1plcm8oKTspe2Zvcih2''@;'; put 'put ''YXIgeWU9MCxDZT0xOzA9PSh6LndvcmRzWzBdJkNlKSYmeWU8MjY7Kyt5ZSxDZTw8PTEpO2lmKHllPjApZm9yKHouaXVzaHJuKHllKTt5ZS0tID4wOykodGUuaXNPZGQoKXx8eC5pc09kZCgpKSYmKHRlLmlhZGQoUykseC5pc3ViKEYpKSx0ZS5pdXNocm4oMSkseC5pdXNocm4oMSk7Zm9yKHZh''@;'; put 'put ''ciBEZT0wLFBlPTE7MD09KG5lLndvcmRzWzBdJlBlKSYmRGU8MjY7KytEZSxQZTw8PTEpO2lmKERlPjApZm9yKG5lLml1c2hybihEZSk7RGUtLSA+MDspKFAuaXNPZGQoKXx8Vi5pc09kZCgpKSYmKFAuaWFkZChTKSxWLmlzdWIoRikpLFAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO3ouY21wKG5l''@;'; put 'put ''KT49MD8oei5pc3ViKG5lKSx0ZS5pc3ViKFApLHguaXN1YihWKSk6KG5lLmlzdWIoeiksUC5pc3ViKHRlKSxWLmlzdWIoeCkpfXJldHVybnthOlAsYjpWLGdjZDpuZS5pdXNobG4oVCl9fSxVLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1pl''@;'; put 'put ''cm8oKSk7dmFyIHllLHo9dGhpcyxuZT1PLmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgdGU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPW5lLmNsb25lKCk7ei5jbXBuKDEpPjAmJm5lLmNtcG4oMSk+MDspe2Zvcih2YXIgVj0wLFQ9MTswPT0oei53''@;'; put 'put ''b3Jkc1swXSZUKSYmVjwyNjsrK1YsVDw8PTEpO2lmKFY+MClmb3Ioei5pdXNocm4oVik7Vi0tID4wOyl0ZS5pc09kZCgpJiZ0ZS5pYWRkKFApLHRlLml1c2hybigxKTtmb3IodmFyIFM9MCxGPTE7MD09KG5lLndvcmRzWzBdJkYpJiZTPDI2OysrUyxGPDw9MSk7aWYoUz4wKWZvcihuZS5pdXNo''@;'; put 'put ''cm4oUyk7Uy0tID4wOyl4LmlzT2RkKCkmJnguaWFkZChQKSx4Lml1c2hybigxKTt6LmNtcChuZSk+PTA/KHouaXN1YihuZSksdGUuaXN1Yih4KSk6KG5lLmlzdWIoeikseC5pc3ViKHRlKSl9cmV0dXJuKHllPTA9PT16LmNtcG4oMSk/dGU6eCkuY21wbigwKTwwJiZ5ZS5pYWRkKE8pLHllfSxV''@;'; put 'put ''LnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oTyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gTy5hYnMoKTtpZihPLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB6PXRoaXMuY2xvbmUoKSxuZT1PLmNsb25lKCk7ei5uZWdhdGl2ZT0wLG5lLm5lZ2F0aXZlPTA7Zm9yKHZhciB0ZT0wO3ou''@;'; put 'put ''aXNFdmVuKCkmJm5lLmlzRXZlbigpO3RlKyspei5pdXNocm4oMSksbmUuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt6LmlzRXZlbigpOyl6Lml1c2hybigxKTtmb3IoO25lLmlzRXZlbigpOyluZS5pdXNocm4oMSk7dmFyIHg9ei5jbXAobmUpO2lmKHg8MCl7dmFyIFA9ejt6PW5lLG5lPVB9ZWxz''@;'; put 'put ''ZSBpZigwPT09eHx8MD09PW5lLmNtcG4oMSkpYnJlYWs7ei5pc3ViKG5lKX1yZXR1cm4gbmUuaXVzaGxuKHRlKX0sVS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5lZ2NkKE8pLmEudW1vZChPKX0sVS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9''@;'; put 'put ''PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMud29yZHNbMF0mT30sVS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oTyl7RSgi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIE8pO3ZhciB6PU8lMjYsbmU9KE8teikvMjYsdGU9MTw8ejtpZih0aGlzLmxlbmd0aDw9bmUpcmV0dXJuIHRoaXMuX2V4cGFuZChuZSsxKSx0aGlzLndvcmRzW25lXXw9dGUsdGhpcztmb3IodmFyIHg9dGUsUD1uZTswIT09eCYmUDx0aGlzLmxlbmd0aDtQKyspe3Zh''@;'; put 'put ''ciBWPTB8dGhpcy53b3Jkc1tQXTt4PShWKz14KT4+PjI2LHRoaXMud29yZHNbUF09ViY9NjcxMDg4NjN9cmV0dXJuIDAhPT14JiYodGhpcy53b3Jkc1tQXT14LHRoaXMubGVuZ3RoKyspLHRoaXN9LFUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgm''@;'; put 'put ''JjA9PT10aGlzLndvcmRzWzBdfSxVLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKE8pe3ZhciBuZSx6PU88MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXopcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJnopcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpbmU9MTtl''@;'; put 'put ''bHNle3omJihPPS1PKSxFKE88PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciB0ZT0wfHRoaXMud29yZHNbMF07bmU9dGU9PT1PPzA6dGU8Tz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1uZTpuZX0sVS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKE8pe2lmKDAhPT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHo9dGhpcy51Y21wKE8pO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC16Onp9LFUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oTyl7''@;'; put 'put ''aWYodGhpcy5sZW5ndGg+Ty5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Ty5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB6PTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKXt2YXIgdGU9MHx0aGlzLndvcmRzW25lXSx4PTB8Ty53b3Jkc1tuZV07aWYodGUhPT14KXt0ZTx4P3o9''@;'; put 'put ''LTE6dGU+eCYmKHo9MSk7YnJlYWt9fXJldHVybiB6fSxVLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oTyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIHRoaXMuY21wbihPKT49MH0sVS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcChPKT49MH0sVS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5sdD1mdW5jdGlvbihPKXtyZXR1cm4tMT09''@;'; put 'put ''PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk8PTB9LFUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk8PTB9LFUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21w''@;'; put 'put ''bihPKX0sVS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcChPKX0sVS5yZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBUZShPKX0sVS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJl''@;'; put 'put ''ZHVjdGlvbiBjb250ZXh0IiksRSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxPLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwiZnJvbVJlZCB3b3Jr''@;'; put 'put ''cyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxVLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucmVkPU8sdGhpc30sVS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRo''@;'; put 'put ''aXMucmVkLmFkZCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiBFKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiks''@;'; put 'put ''dGhpcy5yZWQuaXN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5tdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQuaW11bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMu''@;'; put 'put ''cmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIo''@;'; put 'put ''dGhpcyl9LFUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sVS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE5lZyB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LFUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCYmIU8ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJp''@;'; put 'put ''ZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLE8pfTt2YXIgZGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB2ZShoZSxPKXt0aGlzLm5hbWU9aGUsdGhpcy5wPW5ldyBVKE8sMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5r''@;'; put 'put ''PW5ldyBVKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBBZSgpe3ZlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJm''@;'; put 'put ''Iil9ZnVuY3Rpb24ga2UoKXt2ZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIFNlKCl7dmUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBJZSgpe3ZlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gVGUoaGUpe2lmKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgaGUpe3ZhciBPPVUuX3ByaW1lKGhlKTt0aGlzLm09Ty5wLHRoaXMucHJpbWU9T31lbHNlIEUoaGUuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09aGUsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIEVlKGhlKXtUZS5jYWxsKHRoaXMsaGUpLHRo''@;'; put 'put ''aXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IFUoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52''@;'; put 'put ''bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9dmUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgTz1u''@;'; put 'put ''ZXcgVShudWxsKTtyZXR1cm4gTy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLE99LHZlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKE8pe3ZhciBuZSx6PU87ZG97dGhpcy5zcGxpdCh6LHRoaXMudG1wKSxuZT0oej0oej10aGlzLmltdWxLKHopKS5pYWRkKHRoaXMu''@;'; put 'put ''dG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUobmU+dGhpcy5uKTt2YXIgdGU9bmU8dGhpcy5uPy0xOnoudWNtcCh0aGlzLnApO3JldHVybiAwPT09dGU/KHoud29yZHNbMF09MCx6Lmxlbmd0aD0xKTp0ZT4wP3ouaXN1Yih0aGlzLnApOnZvaWQgMCE9PXouc3RyaXA/ei5zdHJpcCgpOnouX3N0cmlw''@;'; put 'put ''KCksen0sdmUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Ty5pdXNocm4odGhpcy5uLDAseil9LHZlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pbXVsKHRoaXMuayl9LE1lKEFlLHZlKSxBZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtmb3IodmFy''@;'; put 'put ''IHRlPU1hdGgubWluKE8ubGVuZ3RoLDkpLHg9MDt4PHRlO3grKyl6LndvcmRzW3hdPU8ud29yZHNbeF07aWYoei5sZW5ndGg9dGUsTy5sZW5ndGg8PTkpcmV0dXJuIE8ud29yZHNbMF09MCx2b2lkKE8ubGVuZ3RoPTEpO3ZhciBQPU8ud29yZHNbOV07Zm9yKHoud29yZHNbei5sZW5ndGgrK109''@;'; put 'put ''NDE5NDMwMyZQLHg9MTA7eDxPLmxlbmd0aDt4Kyspe3ZhciBWPTB8Ty53b3Jkc1t4XTtPLndvcmRzW3gtMTBdPSg0MTk0MzAzJlYpPDw0fFA+Pj4yMixQPVZ9Ty53b3Jkc1t4LTEwXT1QPj4+PTIyLE8ubGVuZ3RoLT0wPT09UCYmTy5sZW5ndGg+MTA/MTA6OX0sQWUucHJvdG90eXBlLmltdWxL''@;'; put 'put ''PWZ1bmN0aW9uKE8pe08ud29yZHNbTy5sZW5ndGhdPTAsTy53b3Jkc1tPLmxlbmd0aCsxXT0wLE8ubGVuZ3RoKz0yO2Zvcih2YXIgej0wLG5lPTA7bmU8Ty5sZW5ndGg7bmUrKyl7dmFyIHRlPTB8Ty53b3Jkc1tuZV07Ty53b3Jkc1tuZV09NjcxMDg4NjMmKHorPTk3Nyp0ZSksej02NCp0ZSso''@;'; put 'put ''ei82NzEwODg2NHwwKX1yZXR1cm4gMD09PU8ud29yZHNbTy5sZW5ndGgtMV0mJihPLmxlbmd0aC0tLDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiZPLmxlbmd0aC0tKSxPfSxNZShrZSx2ZSksTWUoU2UsdmUpLE1lKEllLHZlKSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Zm9yKHZh''@;'; put 'put ''ciB6PTAsbmU9MDtuZTxPLmxlbmd0aDtuZSsrKXt2YXIgdGU9MTkqKDB8Ty53b3Jkc1tuZV0pK3oseD02NzEwODg2MyZ0ZTt0ZT4+Pj0yNixPLndvcmRzW25lXT14LHo9dGV9cmV0dXJuIDAhPT16JiYoTy53b3Jkc1tPLmxlbmd0aCsrXT16KSxPfSxVLl9wcmltZT1mdW5jdGlvbihPKXtpZihk''@;'; put 'put ''ZVtPXSlyZXR1cm4gZGVbT107dmFyIHo7aWYoImsyNTYiPT09Tyl6PW5ldyBBZTtlbHNlIGlmKCJwMjI0Ij09PU8pej1uZXcga2U7ZWxzZSBpZigicDE5MiI9PT1PKXo9bmV3IFNlO2Vsc2V7aWYoInAyNTUxOSIhPT1PKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK08pO3o9bmV3''@;'; put 'put ''IEllfXJldHVybiBkZVtPXT16LHp9LFRlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLl92''@;'; put 'put ''ZXJpZnkyPWZ1bmN0aW9uKE8seil7RSgwPT0oTy5uZWdhdGl2ZXx6Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkJiZPLnJlZD09PXoucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5pbW9kPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShPKS5fZm9yY2VSZWQodGhpcyk6Ty51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKE8pe3JldHVybiBPLmlzWmVybygpP08uY2xvbmUoKTp0aGlzLm0uc3ViKE8p''@;'; put 'put ''Ll9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgbmU9Ty5hZGQoeik7cmV0dXJuIG5lLmNtcCh0aGlzLm0pPj0wJiZuZS5pc3ViKHRoaXMubSksbmUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaWFkZD1m''@;'; put 'put ''dW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgbmU9Ty5pYWRkKHopO3JldHVybiBuZS5jbXAodGhpcy5tKT49MCYmbmUuaXN1Yih0aGlzLm0pLG5lfSxUZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLnN1Yih6KTtyZXR1''@;'; put 'put ''cm4gbmUuY21wbigwKTwwJiZuZS5pYWRkKHRoaXMubSksbmUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgbmU9Ty5pc3ViKHopO3JldHVybiBuZS5jbXBuKDApPDAmJm5lLmlhZGQodGhpcy5tKSxuZX0sVGUu''@;'; put 'put ''cHJvdG90eXBlLnNobD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkxKE8pLHRoaXMuaW1vZChPLnVzaGxuKHopKX0sVGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLmltdWwoeikpfSxUZS5wcm90b3R5''@;'; put 'put ''cGUubXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5tdWwoeikpfSxUZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbXVsKE8sTy5jbG9uZSgpKX0sVGUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihPKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5tdWwoTyxPKX0sVGUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oTyl7aWYoTy5pc1plcm8oKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciB6PXRoaXMubS5hbmRsbigzKTtpZihFKHolMj09MSksMz09PXope3ZhciBuZT10aGlzLm0uYWRkKG5ldyBVKDEpKS5pdXNocm4oMik7cmV0dXJuIHRo''@;'; put 'put ''aXMucG93KE8sbmUpfWZvcih2YXIgdGU9dGhpcy5tLnN1Ym4oMSkseD0wOyF0ZS5pc1plcm8oKSYmMD09PXRlLmFuZGxuKDEpOyl4KyssdGUuaXVzaHJuKDEpO0UoIXRlLmlzWmVybygpKTt2YXIgUD1uZXcgVSgxKS50b1JlZCh0aGlzKSxWPVAucmVkTmVnKCksVD10aGlzLm0uc3VibigxKS5p''@;'; put 'put ''dXNocm4oMSksUz10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKFM9bmV3IFUoMipTKlMpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhTLFQpLmNtcChWKTspUy5yZWRJQWRkKFYpO2Zvcih2YXIgRj10aGlzLnBvdyhTLHRlKSx5ZT10aGlzLnBvdyhPLHRlLmFkZG4oMSkuaXVzaHJuKDEpKSxDZT10''@;'; put 'put ''aGlzLnBvdyhPLHRlKSxEZT14OzAhPT1DZS5jbXAoUCk7KXtmb3IodmFyIFBlPUNlLFFlPTA7MCE9PVBlLmNtcChQKTtRZSsrKVBlPVBlLnJlZFNxcigpO0UoUWU8RGUpO3ZhciAkZT10aGlzLnBvdyhGLG5ldyBVKDEpLml1c2hsbihEZS1RZS0xKSk7eWU9eWUucmVkTXVsKCRlKSxGPSRlLnJl''@;'; put 'put ''ZFNxcigpLENlPUNlLnJlZE11bChGKSxEZT1RZX1yZXR1cm4geWV9LFRlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3ZhciB6PU8uX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT16Lm5lZ2F0aXZlPyh6Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHopLnJlZE5lZygpKTp0aGlzLmltb2Qoeil9''@;'; put 'put ''LFRlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyx6KXtpZih6LmlzWmVybygpKXJldHVybiBuZXcgVSgxKS50b1JlZCh0aGlzKTtpZigwPT09ei5jbXBuKDEpKXJldHVybiBPLmNsb25lKCk7dmFyIHRlPW5ldyBBcnJheSgxNik7dGVbMF09bmV3IFUoMSkudG9SZWQodGhpcyksdGVbMV09Tztm''@;'; put 'put ''b3IodmFyIHg9Mjt4PHRlLmxlbmd0aDt4KyspdGVbeF09dGhpcy5tdWwodGVbeC0xXSxPKTt2YXIgUD10ZVswXSxWPTAsVD0wLFM9ei5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PVMmJihTPTI2KSx4PXoubGVuZ3RoLTE7eD49MDt4LS0pe2Zvcih2YXIgRj16LndvcmRzW3hdLHllPVMtMTt5ZT49''@;'; put 'put ''MDt5ZS0tKXt2YXIgQ2U9Rj4+eWUmMTtQIT09dGVbMF0mJihQPXRoaXMuc3FyKFApKSwwIT09Q2V8fDAhPT1WPyhWPDw9MSxWfD1DZSwoND09KytUfHwwPT09eCYmMD09PXllKSYmKFA9dGhpcy5tdWwoUCx0ZVtWXSksVD0wLFY9MCkpOlQ9MH1TPTI2fXJldHVybiBQfSxUZS5wcm90b3R5cGUu''@;'; put 'put ''Y29udmVydFRvPWZ1bmN0aW9uKE8pe3ZhciB6PU8udW1vZCh0aGlzLm0pO3JldHVybiB6PT09Tz96LmNsb25lKCk6en0sVGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PU8uY2xvbmUoKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxVLm1vbnQ9ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuIG5ldyBFZShPKX0sTWUoRWUsVGUpLEVlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLnVzaGxuKHRoaXMuc2hpZnQpKX0sRWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuaW1vZChPLm11bCh0aGlzLnJp''@;'; put 'put ''bnYpKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxFZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIE8ud29yZHNbMF09MCxPLmxlbmd0aD0xLE87dmFyIG5lPU8uaW11bCh6KSx0ZT1uZS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhp''@;'; put 'put ''cy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1uZS5pc3ViKHRlKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQLl9mb3JjZVJlZCh0aGlz''@;'; put 'put ''KX0sRWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgbmU9Ty5tdWwoeiksdGU9bmUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQp''@;'; put 'put ''Lm11bCh0aGlzLm0pLHg9bmUuaXN1Yih0ZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LEVlLnByb3RvdHlwZS5pbnZtPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFhlPUwubm1kKFhlKSx0aGlzKX0sNDAzOTA6KFhlLEplKT0+eyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIEw9IkFCQ0RFRkdISUpLTE1OT1BRUlNU''@;'; put 'put ''VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLGdlPW5ldyBVaW50OEFycmF5KDI1NiksQj0wO0I8TC5sZW5ndGg7QisrKWdlW0wuY2hhckNvZGVBdChCKV09QjtKZS5jPWZ1bmN0aW9uKEUpe3ZhciBVLE1lPW5ldyBVaW50OEFycmF5KEUpLFE9TWUubGVuZ3Ro''@;'; put 'put ''LFo9IiI7Zm9yKFU9MDtVPFE7VSs9MylaKz1MW01lW1VdPj4yXSxaKz1MWygzJk1lW1VdKTw8NHxNZVtVKzFdPj40XSxaKz1MWygxNSZNZVtVKzFdKTw8MnxNZVtVKzJdPj42XSxaKz1MWzYzJk1lW1UrMl1dO3JldHVybiBRJTM9PTI/Wj1aLnN1YnN0cmluZygwLFoubGVuZ3RoLTEpKyI9IjpR''@;'; put 'put ''JTM9PTEmJihaPVouc3Vic3RyaW5nKDAsWi5sZW5ndGgtMikrIj09IiksWn0sSmUuSj1mdW5jdGlvbihFKXt2YXIgUSxpZSxsZSxZLFcsTWU9Ljc1KkUubGVuZ3RoLFU9RS5sZW5ndGgsWj0wOyI9Ij09PUVbRS5sZW5ndGgtMV0mJihNZS0tLCI9Ij09PUVbRS5sZW5ndGgtMl0mJk1lLS0pO3Zh''@;'; put 'put ''ciBOPW5ldyBBcnJheUJ1ZmZlcihNZSksZWU9bmV3IFVpbnQ4QXJyYXkoTik7Zm9yKFE9MDtRPFU7USs9NClpZT1nZVtFLmNoYXJDb2RlQXQoUSldLGxlPWdlW0UuY2hhckNvZGVBdChRKzEpXSxZPWdlW0UuY2hhckNvZGVBdChRKzIpXSxXPWdlW0UuY2hhckNvZGVBdChRKzMpXSxlZVtaKytd''@;'; put 'put ''PWllPDwyfGxlPj40LGVlW1orK109KDE1JmxlKTw8NHxZPj4yLGVlW1orK109KDMmWSk8PDZ8NjMmVztyZXR1cm4gTn19KCl9LDUzNDM6KFhlLEplKT0+eyJ1c2Ugc3RyaWN0IjtKZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uIFooZWUpe3ZhciBxPVEoZWUpLHNlPXFbMV07cmV0dXJuIDMqKHFbMF0r''@;'; put 'put ''c2UpLzQtc2V9LEplLnRvQnl0ZUFycmF5PWZ1bmN0aW9uIGxlKGVlKXt2YXIgcSxBZSxKPVEoZWUpLHNlPUpbMF0sYWU9SlsxXSxmZT1uZXcgQihmdW5jdGlvbiBpZShlZSxxLEope3JldHVybiAzKihxK0opLzQtSn0oMCxzZSxhZSkpLGRlPTAsdmU9YWU+MD9zZS00OnNlO2ZvcihBZT0wO0Fl''@;'; put 'put ''PHZlO0FlKz00KXE9Z2VbZWUuY2hhckNvZGVBdChBZSldPDwxOHxnZVtlZS5jaGFyQ29kZUF0KEFlKzEpXTw8MTJ8Z2VbZWUuY2hhckNvZGVBdChBZSsyKV08PDZ8Z2VbZWUuY2hhckNvZGVBdChBZSszKV0sZmVbZGUrK109cT4+MTYmMjU1LGZlW2RlKytdPXE+PjgmMjU1LGZlW2RlKytdPTI1''@;'; put 'put ''NSZxO3JldHVybiAyPT09YWUmJihxPWdlW2VlLmNoYXJDb2RlQXQoQWUpXTw8MnxnZVtlZS5jaGFyQ29kZUF0KEFlKzEpXT4+NCxmZVtkZSsrXT0yNTUmcSksMT09PWFlJiYocT1nZVtlZS5jaGFyQ29kZUF0KEFlKV08PDEwfGdlW2VlLmNoYXJDb2RlQXQoQWUrMSldPDw0fGdlW2VlLmNoYXJD''@;'; put 'put ''b2RlQXQoQWUrMildPj4yLGZlW2RlKytdPXE+PjgmMjU1LGZlW2RlKytdPTI1NSZxKSxmZX0sSmUuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbiBOKGVlKXtmb3IodmFyIHEsSj1lZS5sZW5ndGgsc2U9SiUzLGFlPVtdLGRlPTAsdmU9Si1zZTtkZTx2ZTtkZSs9MTYzODMpYWUucHVzaChXKGVlLGRl''@;'; put 'put ''LGRlKzE2MzgzPnZlP3ZlOmRlKzE2MzgzKSk7cmV0dXJuIDE9PT1zZT9hZS5wdXNoKExbKHE9ZWVbSi0xXSk+PjJdK0xbcTw8NCY2M10rIj09Iik6Mj09PXNlJiZhZS5wdXNoKExbKHE9KGVlW0otMl08PDgpK2VlW0otMV0pPj4xMF0rTFtxPj40JjYzXStMW3E8PDImNjNdKyI9IiksYWUuam9p''@;'; put 'put ''bigiIil9O2Zvcih2YXIgTD1bXSxnZT1bXSxCPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LEU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLE1lPTAsVT1FLmxlbmd0aDtNZTxV''@;'; put 'put ''OysrTWUpTFtNZV09RVtNZV0sZ2VbRS5jaGFyQ29kZUF0KE1lKV09TWU7ZnVuY3Rpb24gUShlZSl7dmFyIHE9ZWUubGVuZ3RoO2lmKHElND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO3ZhciBKPWVlLmluZGV4T2Yo''@;'; put 'put ''Ij0iKTtyZXR1cm4tMT09PUomJihKPXEpLFtKLEo9PT1xPzA6NC1KJTRdfWZ1bmN0aW9uIFkoZWUpe3JldHVybiBMW2VlPj4xOCY2M10rTFtlZT4+MTImNjNdK0xbZWU+PjYmNjNdK0xbNjMmZWVdfWZ1bmN0aW9uIFcoZWUscSxKKXtmb3IodmFyIGFlPVtdLGZlPXE7ZmU8SjtmZSs9MylhZS5w''@;'; put 'put ''dXNoKFkoKGVlW2ZlXTw8MTYmMTY3MTE2ODApKyhlZVtmZSsxXTw8OCY2NTI4MCkrKDI1NSZlZVtmZSsyXSkpKTtyZXR1cm4gYWUuam9pbigiIil9Z2VbIi0iLmNoYXJDb2RlQXQoMCldPTYyLGdlWyJfIi5jaGFyQ29kZUF0KDApXT02M30sOTg1Mzg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0''@;'; put 'put ''aW9uKGdlLEIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKG5lLHRlKXtpZighbmUpdGhyb3cgbmV3IEVycm9yKHRlfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIE1lKG5lLHRlKXtuZS5zdXBlcl89dGU7dmFyIHg9ZnVuY3Rpb24oKXt9O3gucHJvdG90eXBlPXRlLnByb3RvdHlwZSxu''@;'; put 'put ''ZS5wcm90b3R5cGU9bmV3IHgsbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yPW5lfWZ1bmN0aW9uIFUobmUsdGUseCl7aWYoVS5pc0JOKG5lKSlyZXR1cm4gbmU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PW5lJiYoKCJs''@;'; put 'put ''ZSI9PT10ZXx8ImJlIj09PXRlKSYmKHg9dGUsdGU9MTApLHRoaXMuX2luaXQobmV8fDAsdGV8fDEwLHh8fCJiZSIpKX12YXIgUTsib2JqZWN0Ij09dHlwZW9mIGdlP2dlLmV4cG9ydHM9VTpCLkJOPVUsVS5CTj1VLFUud29yZFNpemU9MjY7dHJ5e1E9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5k''@;'; put 'put ''b3cmJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpMKDQ2NjAxKS5CdWZmZXJ9Y2F0Y2gobmUpe31mdW5jdGlvbiBaKG5lLHRlKXt2YXIgeD1uZS5jaGFyQ29kZUF0KHRlKTtyZXR1cm4geD49NDgmJng8PTU3P3gtNDg6eD49NjUmJng8PTcwP3gtNTU6eD49OTcmJng8PTEw''@;'; put 'put ''Mj94LTg3OnZvaWQgRSghMSwiSW52YWxpZCBjaGFyYWN0ZXIgaW4gIituZSl9ZnVuY3Rpb24gaWUobmUsdGUseCl7dmFyIFA9WihuZSx4KTtyZXR1cm4geC0xPj10ZSYmKFB8PVoobmUseC0xKTw8NCksUH1mdW5jdGlvbiBsZShuZSx0ZSx4LFApe2Zvcih2YXIgVj0wLFQ9MCxTPU1hdGgubWlu''@;'; put 'put ''KG5lLmxlbmd0aCx4KSxGPXRlO0Y8UztGKyspe3ZhciB5ZT1uZS5jaGFyQ29kZUF0KEYpLTQ4O1YqPVAsVD15ZT49NDk/eWUtNDkrMTA6eWU+PTE3P3llLTE3KzEwOnllLEUoeWU+PTAmJlQ8UCwiSW52YWxpZCBjaGFyYWN0ZXIiKSxWKz1UfXJldHVybiBWfWZ1bmN0aW9uIFkobmUsdGUpe25l''@;'; put 'put ''LndvcmRzPXRlLndvcmRzLG5lLmxlbmd0aD10ZS5sZW5ndGgsbmUubmVnYXRpdmU9dGUubmVnYXRpdmUsbmUucmVkPXRlLnJlZH1pZihVLmlzQk49ZnVuY3Rpb24odGUpe3JldHVybiB0ZSBpbnN0YW5jZW9mIFV8fG51bGwhPT10ZSYmIm9iamVjdCI9PXR5cGVvZiB0ZSYmdGUuY29uc3RydWN0''@;'; put 'put ''b3Iud29yZFNpemU9PT1VLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHRlLndvcmRzKX0sVS5tYXg9ZnVuY3Rpb24odGUseCl7cmV0dXJuIHRlLmNtcCh4KT4wP3RlOnh9LFUubWluPWZ1bmN0aW9uKHRlLHgpe3JldHVybiB0ZS5jbXAoeCk8MD90ZTp4fSxVLnByb3RvdHlwZS5faW5pdD1mdW5j''@;'; put 'put ''dGlvbih0ZSx4LFApe2lmKCJudW1iZXIiPT10eXBlb2YgdGUpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIodGUseCxQKTtpZigib2JqZWN0Ij09dHlwZW9mIHRlKXJldHVybiB0aGlzLl9pbml0QXJyYXkodGUseCxQKTsiaGV4Ij09PXgmJih4PTE2KSxFKHg9PT0oMHx4KSYmeD49MiYmeDw9MzYp''@;'; put 'put ''O3ZhciBWPTA7Ii0iPT09KHRlPXRlLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKFYrKyx0aGlzLm5lZ2F0aXZlPTEpLFY8dGUubGVuZ3RoJiYoMTY9PT14P3RoaXMuX3BhcnNlSGV4KHRlLFYsUCk6KHRoaXMuX3BhcnNlQmFzZSh0ZSx4LFYpLCJsZSI9PT1QJiZ0aGlzLl9p''@;'; put 'put ''bml0QXJyYXkodGhpcy50b0FycmF5KCkseCxQKSkpfSxVLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbih0ZSx4LFApe3RlPDAmJih0aGlzLm5lZ2F0aXZlPTEsdGU9LXRlKSx0ZTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmdGVdLHRoaXMubGVuZ3RoPTEpOnRlPDQ1MDM1''@;'; put 'put ''OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJnRlLHRlLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRSh0ZTw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ0ZSx0ZS82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUi''@;'; put 'put ''PT09UCYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHgsUCl9LFUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24odGUseCxQKXtpZihFKCJudW1iZXIiPT10eXBlb2YgdGUubGVuZ3RoKSx0ZS5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEs''@;'; put 'put ''dGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwodGUubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFY9MDtWPHRoaXMubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPTA7dmFyIFQsUyxGPTA7aWYoImJlIj09PVApZm9yKFY9dGUubGVuZ3RoLTEsVD0w''@;'; put 'put ''O1Y+PTA7Vi09Myl0aGlzLndvcmRzW1RdfD0oUz10ZVtWXXx0ZVtWLTFdPDw4fHRlW1YtMl08PDE2KTw8RiY2NzEwODg2Myx0aGlzLndvcmRzW1QrMV09Uz4+PjI2LUYmNjcxMDg4NjMsKEYrPTI0KT49MjYmJihGLT0yNixUKyspO2Vsc2UgaWYoImxlIj09PVApZm9yKFY9MCxUPTA7Vjx0ZS5s''@;'; put 'put ''ZW5ndGg7Vis9Myl0aGlzLndvcmRzW1RdfD0oUz10ZVtWXXx0ZVtWKzFdPDw4fHRlW1YrMl08PDE2KTw8RiY2NzEwODg2Myx0aGlzLndvcmRzW1QrMV09Uz4+PjI2LUYmNjcxMDg4NjMsKEYrPTI0KT49MjYmJihGLT0yNixUKyspO3JldHVybiB0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5f''@;'; put 'put ''cGFyc2VIZXg9ZnVuY3Rpb24odGUseCxQKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHRlLmxlbmd0aC14KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBWPTA7Vjx0aGlzLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT0wO3ZhciBGLFQ9MCxTPTA7aWYoImJl''@;'; put 'put ''Ij09PVApZm9yKFY9dGUubGVuZ3RoLTE7Vj49eDtWLT0yKUY9aWUodGUseCxWKTw8VCx0aGlzLndvcmRzW1NdfD02NzEwODg2MyZGLFQ+PTE4PyhULT0xOCx0aGlzLndvcmRzW1MrPTFdfD1GPj4+MjYpOlQrPTg7ZWxzZSBmb3IoVj0odGUubGVuZ3RoLXgpJTI9PTA/eCsxOng7Vjx0ZS5sZW5n''@;'; put 'put ''dGg7Vis9MilGPWllKHRlLHgsVik8PFQsdGhpcy53b3Jkc1tTXXw9NjcxMDg4NjMmRixUPj0xOD8oVC09MTgsdGhpcy53b3Jkc1tTKz0xXXw9Rj4+PjI2KTpUKz04O3RoaXMuX3N0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24odGUseCxQKXt0aGlzLndvcmRzPVswXSx0''@;'; put 'put ''aGlzLmxlbmd0aD0xO2Zvcih2YXIgVj0wLFQ9MTtUPD02NzEwODg2MztUKj14KVYrKztWLS0sVD1UL3h8MDtmb3IodmFyIFM9dGUubGVuZ3RoLVAsRj1TJVYseWU9TWF0aC5taW4oUyxTLUYpK1AsQ2U9MCxEZT1QO0RlPHllO0RlKz1WKUNlPWxlKHRlLERlLERlK1YseCksdGhpcy5pbXVsbihU''@;'; put 'put ''KSx0aGlzLndvcmRzWzBdK0NlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPUNlOnRoaXMuX2lhZGRuKENlKTtpZigwIT09Ril7dmFyIFBlPTE7Zm9yKENlPWxlKHRlLERlLHRlLmxlbmd0aCx4KSxEZT0wO0RlPEY7RGUrKylQZSo9eDt0aGlzLmltdWxuKFBlKSx0aGlzLndvcmRzWzBdK0NlPDY3''@;'; put 'put ''MTA4ODY0P3RoaXMud29yZHNbMF0rPUNlOnRoaXMuX2lhZGRuKENlKX10aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHRlKXt0ZS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeD0wO3g8dGhpcy5sZW5ndGg7eCsrKXRlLndvcmRzW3hdPXRoaXMu''@;'; put 'put ''d29yZHNbeF07dGUubGVuZ3RoPXRoaXMubGVuZ3RoLHRlLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsdGUucmVkPXRoaXMucmVkfSxVLnByb3RvdHlwZS5fbW92ZT1mdW5jdGlvbih0ZSl7WSh0ZSx0aGlzKX0sVS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdGU9bmV3IFUobnVsbCk7''@;'; put 'put ''cmV0dXJuIHRoaXMuY29weSh0ZSksdGV9LFUucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24odGUpe2Zvcig7dGhpcy5sZW5ndGg8dGU7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuX3N0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0''@;'; put 'put ''aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sVS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTApLHRoaXN9LCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcil0cnl7VS5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09V31jYXRjaChuZSl7VS5wcm90b3R5cGUuaW5zcGVjdD1XfWVsc2Ug''@;'; put 'put ''VS5wcm90b3R5cGUuaW5zcGVjdD1XO2Z1bmN0aW9uIFcoKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In12YXIgTj1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAiXSxlZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxxPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMw''@;'; put 'put ''NDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1''@;'; put 'put ''MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIGFlKG5lLHRlLHgpe3gubmVnYXRpdmU9dGUubmVnYXRpdmVebmUubmVnYXRpdmU7dmFyIFA9bmUubGVuZ3RoK3RlLmxlbmd0aHwwO3gubGVuZ3RoPVAsUD1Q''@;'; put 'put ''LTF8MDt2YXIgVj0wfG5lLndvcmRzWzBdLFQ9MHx0ZS53b3Jkc1swXSxTPVYqVCx5ZT1TLzY3MTA4ODY0fDA7eC53b3Jkc1swXT02NzEwODg2MyZTO2Zvcih2YXIgQ2U9MTtDZTxQO0NlKyspe2Zvcih2YXIgRGU9eWU+Pj4yNixQZT02NzEwODg2MyZ5ZSxRZT1NYXRoLm1pbihDZSx0ZS5sZW5n''@;'; put 'put ''dGgtMSksJGU9TWF0aC5tYXgoMCxDZS1uZS5sZW5ndGgrMSk7JGU8PVFlOyRlKyspRGUrPShTPShWPTB8bmUud29yZHNbQ2UtJGV8MF0pKihUPTB8dGUud29yZHNbJGVdKStQZSkvNjcxMDg4NjR8MCxQZT02NzEwODg2MyZTO3gud29yZHNbQ2VdPTB8UGUseWU9MHxEZX1yZXR1cm4gMCE9PXll''@;'; put 'put ''P3gud29yZHNbQ2VdPTB8eWU6eC5sZW5ndGgtLSx4Ll9zdHJpcCgpfVUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHRlLHgpe3ZhciBQO2lmKHg9MHx4fHwxLDE2PT09KHRlPXRlfHwxMCl8fCJoZXgiPT09dGUpe1A9IiI7Zm9yKHZhciBWPTAsVD0wLFM9MDtTPHRoaXMubGVuZ3RoO1Mr''@;'; put 'put ''Kyl7dmFyIEY9dGhpcy53b3Jkc1tTXSx5ZT0oMTY3NzcyMTUmKEY8PFZ8VCkpLnRvU3RyaW5nKDE2KTtUPUY+Pj4yNC1WJjE2Nzc3MjE1LChWKz0yKT49MjYmJihWLT0yNixTLS0pLFA9MCE9PVR8fFMhPT10aGlzLmxlbmd0aC0xP05bNi15ZS5sZW5ndGhdK3llK1A6eWUrUH1mb3IoMCE9PVQm''@;'; put 'put ''JihQPVQudG9TdHJpbmcoMTYpK1ApO1AubGVuZ3RoJXghPTA7KVA9IjAiK1A7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoUD0iLSIrUCksUH1pZih0ZT09PSgwfHRlKSYmdGU+PTImJnRlPD0zNil7dmFyIENlPWVlW3RlXSxEZT1xW3RlXTtQPSIiO3ZhciBQZT10aGlzLmNsb25lKCk7Zm9y''@;'; put 'put ''KFBlLm5lZ2F0aXZlPTA7IVBlLmlzWmVybygpOyl7dmFyIFFlPVBlLm1vZHJuKERlKS50b1N0cmluZyh0ZSk7UD0oUGU9UGUuaWRpdm4oRGUpKS5pc1plcm8oKT9RZStQOk5bQ2UtUWUubGVuZ3RoXStRZStQfWZvcih0aGlzLmlzWmVybygpJiYoUD0iMCIrUCk7UC5sZW5ndGgleCE9MDspUD0i''@;'; put 'put ''MCIrUDtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihQPSItIitQKSxQfUUoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sVS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgdGU9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP3RlKz02''@;'; put 'put ''NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/dGUrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZFKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMi''@;'; put 'put ''KSwwIT09dGhpcy5uZWdhdGl2ZT8tdGU6dGV9LFUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2LDIpfSxRJiYoVS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24odGUseCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoUSx0ZSx4KX0pLFUucHJv''@;'; put 'put ''dG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24odGUseCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksdGUseCl9LFUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKHRlLHgsUCl7dGhpcy5fc3RyaXAoKTt2YXIgVj10aGlzLmJ5dGVMZW5ndGgoKSxUPVB8fE1hdGgubWF4KDEsVik7''@;'; put 'put ''RShWPD1ULCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRShUPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpO3ZhciBTPWZ1bmN0aW9uKHRlLHgpe3JldHVybiB0ZS5hbGxvY1Vuc2FmZT90ZS5hbGxvY1Vuc2FmZSh4KTpuZXcgdGUoeCl9KHRlLFQpO3Jl''@;'; put 'put ''dHVybiB0aGlzWyJfdG9BcnJheUxpa2UiKygibGUiPT09eD8iTEUiOiJCRSIpXShTLFYpLFN9LFUucHJvdG90eXBlLl90b0FycmF5TGlrZUxFPWZ1bmN0aW9uKHRlLHgpe2Zvcih2YXIgUD0wLFY9MCxUPTAsUz0wO1Q8dGhpcy5sZW5ndGg7VCsrKXt2YXIgRj10aGlzLndvcmRzW1RdPDxTfFY7''@;'; put 'put ''dGVbUCsrXT0yNTUmRixQPHRlLmxlbmd0aCYmKHRlW1ArK109Rj4+OCYyNTUpLFA8dGUubGVuZ3RoJiYodGVbUCsrXT1GPj4xNiYyNTUpLDY9PT1TPyhQPHRlLmxlbmd0aCYmKHRlW1ArK109Rj4+MjQmMjU1KSxWPTAsUz0wKTooVj1GPj4+MjQsUys9Mil9aWYoUDx0ZS5sZW5ndGgpZm9yKHRl''@;'; put 'put ''W1ArK109VjtQPHRlLmxlbmd0aDspdGVbUCsrXT0wfSxVLnByb3RvdHlwZS5fdG9BcnJheUxpa2VCRT1mdW5jdGlvbih0ZSx4KXtmb3IodmFyIFA9dGUubGVuZ3RoLTEsVj0wLFQ9MCxTPTA7VDx0aGlzLmxlbmd0aDtUKyspe3ZhciBGPXRoaXMud29yZHNbVF08PFN8Vjt0ZVtQLS1dPTI1NSZG''@;'; put 'put ''LFA+PTAmJih0ZVtQLS1dPUY+PjgmMjU1KSxQPj0wJiYodGVbUC0tXT1GPj4xNiYyNTUpLDY9PT1TPyhQPj0wJiYodGVbUC0tXT1GPj4yNCYyNTUpLFY9MCxTPTApOihWPUY+Pj4yNCxTKz0yKX1pZihQPj0wKWZvcih0ZVtQLS1dPVY7UD49MDspdGVbUC0tXT0wfSxVLnByb3RvdHlwZS5fY291''@;'; put 'put ''bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24odGUpe3JldHVybiAzMi1NYXRoLmNsejMyKHRlKX06ZnVuY3Rpb24odGUpe3ZhciB4PXRlLFA9MDtyZXR1cm4geD49NDA5NiYmKFArPTEzLHg+Pj49MTMpLHg+PTY0JiYoUCs9Nyx4Pj4+PTcpLHg+PTgmJihQKz00LHg+Pj49NCkseD49MiYmKFAr''@;'; put 'put ''PTIseD4+Pj0yKSxQK3h9LFUucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbih0ZSl7aWYoMD09PXRlKXJldHVybiAyNjt2YXIgeD10ZSxQPTA7cmV0dXJuIDA9PSg4MTkxJngpJiYoUCs9MTMseD4+Pj0xMyksMD09KDEyNyZ4KSYmKFArPTcseD4+Pj03KSwwPT0oMTUmeCkmJihQKz00LHg+''@;'; put 'put ''Pj49NCksMD09KDMmeCkmJihQKz0yLHg+Pj49MiksMD09KDEmeCkmJlArKyxQfSxVLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKSt4fSxVLnByb3Rv''@;'; put 'put ''dHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB0ZT0wLHg9MDt4PHRoaXMubGVuZ3RoO3grKyl7dmFyIFA9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t4XSk7aWYodGUrPVAsMjYhPT1QKWJyZWFrfXJldHVybiB0ZX0sVS5wcm90b3R5''@;'; put 'put ''cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sVS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHRlKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bih0ZSkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxV''@;'; put 'put ''LnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMudGVzdG4odGUtMSk/dGhpcy5ub3RuKHRlKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sVS5wcm90b3R5''@;'; put 'put ''cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LFUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LFUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24odGUpe2Zvcig7dGhpcy5sZW5n''@;'; put 'put ''dGg8dGUubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB4PTA7eDx0ZS5sZW5ndGg7eCsrKXRoaXMud29yZHNbeF09dGhpcy53b3Jkc1t4XXx0ZS53b3Jkc1t4XTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKHRlKXtyZXR1''@;'; put 'put ''cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXx0ZS5uZWdhdGl2ZSkpLHRoaXMuaXVvcih0ZSl9LFUucHJvdG90eXBlLm9yPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5sZW5ndGg+dGUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IodGUpOnRlLmNsb25lKCkuaW9yKHRoaXMpfSxVLnByb3RvdHlwZS51''@;'; put 'put ''b3I9ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLmxlbmd0aD50ZS5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IodGUpOnRlLmNsb25lKCkuaXVvcih0aGlzKX0sVS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24odGUpe3ZhciB4O3g9dGhpcy5sZW5ndGg+dGUubGVuZ3RoP3RlOnRoaXM7Zm9yKHZh''@;'; put 'put ''ciBQPTA7UDx4Lmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT10aGlzLndvcmRzW1BdJnRlLndvcmRzW1BdO3JldHVybiB0aGlzLmxlbmd0aD14Lmxlbmd0aCx0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHRlKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXx0ZS5u''@;'; put 'put ''ZWdhdGl2ZSkpLHRoaXMuaXVhbmQodGUpfSxVLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLmxlbmd0aD50ZS5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQodGUpOnRlLmNsb25lKCkuaWFuZCh0aGlzKX0sVS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih0ZSl7cmV0dXJu''@;'; put 'put ''IHRoaXMubGVuZ3RoPnRlLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQodGUpOnRlLmNsb25lKCkuaXVhbmQodGhpcyl9LFUucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKHRlKXt2YXIgeCxQO3RoaXMubGVuZ3RoPnRlLmxlbmd0aD8oeD10aGlzLFA9dGUpOih4PXRlLFA9dGhpcyk7Zm9yKHZh''@;'; put 'put ''ciBWPTA7VjxQLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT14LndvcmRzW1ZdXlAud29yZHNbVl07aWYodGhpcyE9PXgpZm9yKDtWPHgubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXgud29yZHNbVl07cmV0dXJuIHRoaXMubGVuZ3RoPXgubGVuZ3RoLHRoaXMuX3N0cmlwKCl9LFUucHJvdG90''@;'; put 'put ''eXBlLml4b3I9ZnVuY3Rpb24odGUpe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfHRlLm5lZ2F0aXZlKSksdGhpcy5pdXhvcih0ZSl9LFUucHJvdG90eXBlLnhvcj1mdW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMubGVuZ3RoPnRlLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih0ZSk6dGUuY2xv''@;'; put 'put ''bmUoKS5peG9yKHRoaXMpfSxVLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5sZW5ndGg+dGUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcih0ZSk6dGUuY2xvbmUoKS5pdXhvcih0aGlzKX0sVS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24odGUpe0UoIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiB0ZSYmdGU+PTApO3ZhciB4PTB8TWF0aC5jZWlsKHRlLzI2KSxQPXRlJTI2O3RoaXMuX2V4cGFuZCh4KSxQPjAmJngtLTtmb3IodmFyIFY9MDtWPHg7VisrKXRoaXMud29yZHNbVl09NjcxMDg4NjMmfnRoaXMud29yZHNbVl07cmV0dXJuIFA+MCYmKHRoaXMud29yZHNbVl09fnRo''@;'; put 'put ''aXMud29yZHNbVl0mNjcxMDg4NjM+PjI2LVApLHRoaXMuX3N0cmlwKCl9LFUucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4odGUpfSxVLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHRlLHgpe0UoIm51bWJlciI9PXR5cGVvZiB0ZSYmdGU+PTAp''@;'; put 'put ''O3ZhciBQPXRlLzI2fDAsVj10ZSUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFArMSksdGhpcy53b3Jkc1tQXT14P3RoaXMud29yZHNbUF18MTw8Vjp0aGlzLndvcmRzW1BdJn4oMTw8ViksdGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih0ZSl7dmFyIHgsUCxWO2lmKDAh''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlJiYwPT09dGUubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx4PXRoaXMuaXN1Yih0ZSksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dGUubmVnYXRpdmUpcmV0dXJuIHRlLm5lZ2F0aXZlPTAs''@;'; put 'put ''eD10aGlzLmlzdWIodGUpLHRlLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD50ZS5sZW5ndGg/KFA9dGhpcyxWPXRlKTooUD10ZSxWPXRoaXMpO2Zvcih2YXIgVD0wLFM9MDtTPFYubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJih4PSgwfFAud29yZHNbU10p''@;'; put 'put ''KygwfFYud29yZHNbU10pK1QpLFQ9eD4+PjI2O2Zvcig7MCE9PVQmJlM8UC5sZW5ndGg7UysrKXRoaXMud29yZHNbU109NjcxMDg4NjMmKHg9KDB8UC53b3Jkc1tTXSkrVCksVD14Pj4+MjY7aWYodGhpcy5sZW5ndGg9UC5sZW5ndGgsMCE9PVQpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09VCx0''@;'; put 'put ''aGlzLmxlbmd0aCsrO2Vsc2UgaWYoUCE9PXRoaXMpZm9yKDtTPFAubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPVAud29yZHNbU107cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0ZSl7dmFyIHg7cmV0dXJuIDAhPT10ZS5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/''@;'; put 'put ''KHRlLm5lZ2F0aXZlPTAseD10aGlzLnN1Yih0ZSksdGUubmVnYXRpdmVePTEseCk6MD09PXRlLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHg9dGUuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx4KTp0aGlzLmxlbmd0aD50ZS5sZW5ndGg/dGhpcy5jbG9u''@;'; put 'put ''ZSgpLmlhZGQodGUpOnRlLmNsb25lKCkuaWFkZCh0aGlzKX0sVS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0ZSl7aWYoMCE9PXRlLm5lZ2F0aXZlKXt0ZS5uZWdhdGl2ZT0wO3ZhciB4PXRoaXMuaWFkZCh0ZSk7cmV0dXJuIHRlLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKX1pZigwIT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh0ZSksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIFYsVCxQPXRoaXMuY21wKHRlKTtpZigwPT09UClyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0w''@;'; put 'put ''LHRoaXM7UD4wPyhWPXRoaXMsVD10ZSk6KFY9dGUsVD10aGlzKTtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0aDtGKyspUz0oeD0oMHxWLndvcmRzW0ZdKS0oMHxULndvcmRzW0ZdKStTKT4+MjYsdGhpcy53b3Jkc1tGXT02NzEwODg2MyZ4O2Zvcig7MCE9PVMmJkY8Vi5sZW5ndGg7RisrKVM9''@;'; put 'put ''KHg9KDB8Vi53b3Jkc1tGXSkrUyk+PjI2LHRoaXMud29yZHNbRl09NjcxMDg4NjMmeDtpZigwPT09UyYmRjxWLmxlbmd0aCYmViE9PXRoaXMpZm9yKDtGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPVYud29yZHNbRl07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3Ro''@;'; put 'put ''LEYpLFYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Yih0ZSl9O3ZhciBmZT1mdW5jdGlvbih0ZSx4LFApe3ZhciB5ZSxDZSxEZSxWPXRlLndvcmRzLFQ9eC53b3JkcyxT''@;'; put 'put ''PVAud29yZHMsRj0wLFBlPTB8VlswXSxRZT04MTkxJlBlLCRlPVBlPj4+MTMsZ3Q9MHxWWzFdLHl0PTgxOTEmZ3QscHQ9Z3Q+Pj4xMyxtdD0wfFZbMl0sdnQ9ODE5MSZtdCxmdD1tdD4+PjEzLEZ0PTB8VlszXSxvbj04MTkxJkZ0LF90PUZ0Pj4+MTMsbnQ9MHxWWzRdLHFlPTgxOTEmbnQsb3Q9''@;'; put 'put ''bnQ+Pj4xMyxSdD0wfFZbNV0sQ3Q9ODE5MSZSdCxjdD1SdD4+PjEzLE50PTB8Vls2XSx6ZT04MTkxJk50LFllPU50Pj4+MTMsQXQ9MHxWWzddLGp0PTgxOTEmQXQsSnQ9QXQ+Pj4xMyxtbj0wfFZbOF0scG49ODE5MSZtbixibj1tbj4+PjEzLGxuPTB8Vls5XSxObj04MTkxJmxuLGtuPWxuPj4+''@;'; put 'put ''MTMsZXI9MHxUWzBdLHVyPTgxOTEmZXIsWG49ZXI+Pj4xMyxGcj0wfFRbMV0seHI9ODE5MSZGcixlbj1Gcj4+PjEzLGRyPTB8VFsyXSxucj04MTkxJmRyLHduPWRyPj4+MTMsJG49MHxUWzNdLFl0PTgxOTEmJG4sZ249JG4+Pj4xMyxLbj0wfFRbNF0sVnQ9ODE5MSZLbixzbj1Lbj4+PjEzLFVu''@;'; put 'put ''PTB8VFs1XSxfbj04MTkxJlVuLHRuPVVuPj4+MTMsR249MHxUWzZdLFRyPTgxOTEmR24sUG49R24+Pj4xMyxTcj0wfFRbN10sdm49ODE5MSZTcix1bj1Tcj4+PjEzLGNuPTB8VFs4XSxTbj04MTkxJmNuLEd0PWNuPj4+MTMsRW49MHxUWzldLGpuPTgxOTEmRW4scXQ9RW4+Pj4xMztQLm5lZ2F0''@;'; put 'put ''aXZlPXRlLm5lZ2F0aXZlXngubmVnYXRpdmUsUC5sZW5ndGg9MTk7dmFyIExuPShGKyh5ZT1NYXRoLmltdWwoUWUsdXIpKXwwKSsoKDgxOTEmKENlPShDZT1NYXRoLmltdWwoUWUsWG4pKStNYXRoLmltdWwoJGUsdXIpfDApKTw8MTMpfDA7Rj0oKERlPU1hdGguaW11bCgkZSxYbikpKyhDZT4+''@;'; put 'put ''PjEzKXwwKSsoTG4+Pj4yNil8MCxMbiY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKHl0LHVyKSxDZT0oQ2U9TWF0aC5pbXVsKHl0LFhuKSkrTWF0aC5pbXVsKHB0LHVyKXwwLERlPU1hdGguaW11bChwdCxYbik7dmFyIEpuPShGKyh5ZT15ZStNYXRoLmltdWwoUWUseHIpfDApfDApKygoODE5MSYo''@;'; put 'put ''Q2U9KENlPUNlK01hdGguaW11bChRZSxlbil8MCkrTWF0aC5pbXVsKCRlLHhyKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsZW4pfDApKyhDZT4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKHZ0LHVyKSxDZT0oQ2U9TWF0aC5pbXVsKHZ0''@;'; put 'put ''LFhuKSkrTWF0aC5pbXVsKGZ0LHVyKXwwLERlPU1hdGguaW11bChmdCxYbikseWU9eWUrTWF0aC5pbXVsKHl0LHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsZW4pfDApK01hdGguaW11bChwdCx4cil8MCxEZT1EZStNYXRoLmltdWwocHQsZW4pfDA7dmFyIG9yPShGKyh5ZT15ZStNYXRo''@;'; put 'put ''LmltdWwoUWUsbnIpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChRZSx3bil8MCkrTWF0aC5pbXVsKCRlLG5yKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsd24pfDApKyhDZT4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9NjcxMDg4NjMseWU9TWF0aC5pbXVs''@;'; put 'put ''KG9uLHVyKSxDZT0oQ2U9TWF0aC5pbXVsKG9uLFhuKSkrTWF0aC5pbXVsKF90LHVyKXwwLERlPU1hdGguaW11bChfdCxYbikseWU9eWUrTWF0aC5pbXVsKHZ0LHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwodnQsZW4pfDApK01hdGguaW11bChmdCx4cil8MCxEZT1EZStNYXRoLmltdWwoZnQs''@;'; put 'put ''ZW4pfDAseWU9eWUrTWF0aC5pbXVsKHl0LG5yKXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsd24pfDApK01hdGguaW11bChwdCxucil8MCxEZT1EZStNYXRoLmltdWwocHQsd24pfDA7dmFyIGdyPShGKyh5ZT15ZStNYXRoLmltdWwoUWUsWXQpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01h''@;'; put 'put ''dGguaW11bChRZSxnbil8MCkrTWF0aC5pbXVsKCRlLFl0KXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsZ24pfDApKyhDZT4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKHFlLHVyKSxDZT0oQ2U9TWF0aC5pbXVsKHFlLFhuKSkrTWF0aC5p''@;'; put 'put ''bXVsKG90LHVyKXwwLERlPU1hdGguaW11bChvdCxYbikseWU9eWUrTWF0aC5pbXVsKG9uLHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwob24sZW4pfDApK01hdGguaW11bChfdCx4cil8MCxEZT1EZStNYXRoLmltdWwoX3QsZW4pfDAseWU9eWUrTWF0aC5pbXVsKHZ0LG5yKXwwLENlPShDZT1D''@;'; put 'put ''ZStNYXRoLmltdWwodnQsd24pfDApK01hdGguaW11bChmdCxucil8MCxEZT1EZStNYXRoLmltdWwoZnQsd24pfDAseWU9eWUrTWF0aC5pbXVsKHl0LFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsZ24pfDApK01hdGguaW11bChwdCxZdCl8MCxEZT1EZStNYXRoLmltdWwocHQsZ24pfDA7''@;'; put 'put ''dmFyIEpyPShGKyh5ZT15ZStNYXRoLmltdWwoUWUsVnQpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChRZSxzbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsc24pfDApKyhDZT4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9''@;'; put 'put ''NjcxMDg4NjMseWU9TWF0aC5pbXVsKEN0LHVyKSxDZT0oQ2U9TWF0aC5pbXVsKEN0LFhuKSkrTWF0aC5pbXVsKGN0LHVyKXwwLERlPU1hdGguaW11bChjdCxYbikseWU9eWUrTWF0aC5pbXVsKHFlLHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChvdCx4cil8''@;'; put 'put ''MCxEZT1EZStNYXRoLmltdWwob3QsZW4pfDAseWU9eWUrTWF0aC5pbXVsKG9uLG5yKXwwLENlPShDZT1DZStNYXRoLmltdWwob24sd24pfDApK01hdGguaW11bChfdCxucil8MCxEZT1EZStNYXRoLmltdWwoX3Qsd24pfDAseWU9eWUrTWF0aC5pbXVsKHZ0LFl0KXwwLENlPShDZT1DZStNYXRo''@;'; put 'put ''LmltdWwodnQsZ24pfDApK01hdGguaW11bChmdCxZdCl8MCxEZT1EZStNYXRoLmltdWwoZnQsZ24pfDAseWU9eWUrTWF0aC5pbXVsKHl0LFZ0KXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsc24pfDApK01hdGguaW11bChwdCxWdCl8MCxEZT1EZStNYXRoLmltdWwocHQsc24pfDA7dmFyIFZy''@;'; put 'put ''PShGKyh5ZT15ZStNYXRoLmltdWwoUWUsX24pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChRZSx0bil8MCkrTWF0aC5pbXVsKCRlLF9uKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsdG4pfDApKyhDZT4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4''@;'; put 'put ''NjMseWU9TWF0aC5pbXVsKHplLHVyKSxDZT0oQ2U9TWF0aC5pbXVsKHplLFhuKSkrTWF0aC5pbXVsKFllLHVyKXwwLERlPU1hdGguaW11bChZZSxYbikseWU9eWUrTWF0aC5pbXVsKEN0LHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3QsZW4pfDApK01hdGguaW11bChjdCx4cil8MCxEZT1E''@;'; put 'put ''ZStNYXRoLmltdWwoY3QsZW4pfDAseWU9eWUrTWF0aC5pbXVsKHFlLG5yKXwwLENlPShDZT1DZStNYXRoLmltdWwocWUsd24pfDApK01hdGguaW11bChvdCxucil8MCxEZT1EZStNYXRoLmltdWwob3Qsd24pfDAseWU9eWUrTWF0aC5pbXVsKG9uLFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwo''@;'; put 'put ''b24sZ24pfDApK01hdGguaW11bChfdCxZdCl8MCxEZT1EZStNYXRoLmltdWwoX3QsZ24pfDAseWU9eWUrTWF0aC5pbXVsKHZ0LFZ0KXwwLENlPShDZT1DZStNYXRoLmltdWwodnQsc24pfDApK01hdGguaW11bChmdCxWdCl8MCxEZT1EZStNYXRoLmltdWwoZnQsc24pfDAseWU9eWUrTWF0aC5p''@;'; put 'put ''bXVsKHl0LF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsdG4pfDApK01hdGguaW11bChwdCxfbil8MCxEZT1EZStNYXRoLmltdWwocHQsdG4pfDA7dmFyIHRpPShGKyh5ZT15ZStNYXRoLmltdWwoUWUsVHIpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChRZSxQbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKCRlLFRyKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsUG4pfDApKyhDZT4+PjEzKXwwKSsodGk+Pj4yNil8MCx0aSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKGp0LHVyKSxDZT0oQ2U9TWF0aC5pbXVsKGp0LFhuKSkrTWF0aC5pbXVsKEp0LHVyKXwwLERlPU1h''@;'; put 'put ''dGguaW11bChKdCxYbikseWU9eWUrTWF0aC5pbXVsKHplLHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsZW4pfDApK01hdGguaW11bChZZSx4cil8MCxEZT1EZStNYXRoLmltdWwoWWUsZW4pfDAseWU9eWUrTWF0aC5pbXVsKEN0LG5yKXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3Qsd24p''@;'; put 'put ''fDApK01hdGguaW11bChjdCxucil8MCxEZT1EZStNYXRoLmltdWwoY3Qsd24pfDAseWU9eWUrTWF0aC5pbXVsKHFlLFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwocWUsZ24pfDApK01hdGguaW11bChvdCxZdCl8MCxEZT1EZStNYXRoLmltdWwob3QsZ24pfDAseWU9eWUrTWF0aC5pbXVsKG9u''@;'; put 'put ''LFZ0KXwwLENlPShDZT1DZStNYXRoLmltdWwob24sc24pfDApK01hdGguaW11bChfdCxWdCl8MCxEZT1EZStNYXRoLmltdWwoX3Qsc24pfDAseWU9eWUrTWF0aC5pbXVsKHZ0LF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwodnQsdG4pfDApK01hdGguaW11bChmdCxfbil8MCxEZT1EZStNYXRo''@;'; put 'put ''LmltdWwoZnQsdG4pfDAseWU9eWUrTWF0aC5pbXVsKHl0LFRyKXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsUG4pfDApK01hdGguaW11bChwdCxUcil8MCxEZT1EZStNYXRoLmltdWwocHQsUG4pfDA7dmFyIE9yPShGKyh5ZT15ZStNYXRoLmltdWwoUWUsdm4pfDApfDApKygoODE5MSYoQ2U9''@;'; put 'put ''KENlPUNlK01hdGguaW11bChRZSx1bil8MCkrTWF0aC5pbXVsKCRlLHZuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsdW4pfDApKyhDZT4+PjEzKXwwKSsoT3I+Pj4yNil8MCxPciY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKHBuLHVyKSxDZT0oQ2U9TWF0aC5pbXVsKHBuLFhu''@;'; put 'put ''KSkrTWF0aC5pbXVsKGJuLHVyKXwwLERlPU1hdGguaW11bChibixYbikseWU9eWUrTWF0aC5pbXVsKGp0LHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwoanQsZW4pfDApK01hdGguaW11bChKdCx4cil8MCxEZT1EZStNYXRoLmltdWwoSnQsZW4pfDAseWU9eWUrTWF0aC5pbXVsKHplLG5yKXww''@;'; put 'put ''LENlPShDZT1DZStNYXRoLmltdWwoemUsd24pfDApK01hdGguaW11bChZZSxucil8MCxEZT1EZStNYXRoLmltdWwoWWUsd24pfDAseWU9eWUrTWF0aC5pbXVsKEN0LFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3QsZ24pfDApK01hdGguaW11bChjdCxZdCl8MCxEZT1EZStNYXRoLmltdWwo''@;'; put 'put ''Y3QsZ24pfDAseWU9eWUrTWF0aC5pbXVsKHFlLFZ0KXwwLENlPShDZT1DZStNYXRoLmltdWwocWUsc24pfDApK01hdGguaW11bChvdCxWdCl8MCxEZT1EZStNYXRoLmltdWwob3Qsc24pfDAseWU9eWUrTWF0aC5pbXVsKG9uLF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwob24sdG4pfDApK01h''@;'; put 'put ''dGguaW11bChfdCxfbil8MCxEZT1EZStNYXRoLmltdWwoX3QsdG4pfDAseWU9eWUrTWF0aC5pbXVsKHZ0LFRyKXwwLENlPShDZT1DZStNYXRoLmltdWwodnQsUG4pfDApK01hdGguaW11bChmdCxUcil8MCxEZT1EZStNYXRoLmltdWwoZnQsUG4pfDAseWU9eWUrTWF0aC5pbXVsKHl0LHZuKXww''@;'; put 'put ''LENlPShDZT1DZStNYXRoLmltdWwoeXQsdW4pfDApK01hdGguaW11bChwdCx2bil8MCxEZT1EZStNYXRoLmltdWwocHQsdW4pfDA7dmFyIGxpPShGKyh5ZT15ZStNYXRoLmltdWwoUWUsU24pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChRZSxHdCl8MCkrTWF0aC5pbXVsKCRl''@;'; put 'put ''LFNuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUsR3QpfDApKyhDZT4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLHVyKSxDZT0oQ2U9TWF0aC5pbXVsKE5uLFhuKSkrTWF0aC5pbXVsKGtuLHVyKXwwLERlPU1hdGguaW11bChrbixY''@;'; put 'put ''bikseWU9eWUrTWF0aC5pbXVsKHBuLHhyKXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sZW4pfDApK01hdGguaW11bChibix4cil8MCxEZT1EZStNYXRoLmltdWwoYm4sZW4pfDAseWU9eWUrTWF0aC5pbXVsKGp0LG5yKXwwLENlPShDZT1DZStNYXRoLmltdWwoanQsd24pfDApK01hdGguaW11''@;'; put 'put ''bChKdCxucil8MCxEZT1EZStNYXRoLmltdWwoSnQsd24pfDAseWU9eWUrTWF0aC5pbXVsKHplLFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsZ24pfDApK01hdGguaW11bChZZSxZdCl8MCxEZT1EZStNYXRoLmltdWwoWWUsZ24pfDAseWU9eWUrTWF0aC5pbXVsKEN0LFZ0KXwwLENlPShD''@;'; put 'put ''ZT1DZStNYXRoLmltdWwoQ3Qsc24pfDApK01hdGguaW11bChjdCxWdCl8MCxEZT1EZStNYXRoLmltdWwoY3Qsc24pfDAseWU9eWUrTWF0aC5pbXVsKHFlLF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwocWUsdG4pfDApK01hdGguaW11bChvdCxfbil8MCxEZT1EZStNYXRoLmltdWwob3QsdG4p''@;'; put 'put ''fDAseWU9eWUrTWF0aC5pbXVsKG9uLFRyKXwwLENlPShDZT1DZStNYXRoLmltdWwob24sUG4pfDApK01hdGguaW11bChfdCxUcil8MCxEZT1EZStNYXRoLmltdWwoX3QsUG4pfDAseWU9eWUrTWF0aC5pbXVsKHZ0LHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwodnQsdW4pfDApK01hdGguaW11''@;'; put 'put ''bChmdCx2bil8MCxEZT1EZStNYXRoLmltdWwoZnQsdW4pfDAseWU9eWUrTWF0aC5pbXVsKHl0LFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoeXQsR3QpfDApK01hdGguaW11bChwdCxTbil8MCxEZT1EZStNYXRoLmltdWwocHQsR3QpfDA7dmFyIElpPShGKyh5ZT15ZStNYXRoLmltdWwoUWUs''@;'; put 'put ''am4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChRZSxxdCl8MCkrTWF0aC5pbXVsKCRlLGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoJGUscXQpfDApKyhDZT4+PjEzKXwwKSsoSWk+Pj4yNil8MCxJaSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLHhyKSxD''@;'; put 'put ''ZT0oQ2U9TWF0aC5pbXVsKE5uLGVuKSkrTWF0aC5pbXVsKGtuLHhyKXwwLERlPU1hdGguaW11bChrbixlbikseWU9eWUrTWF0aC5pbXVsKHBuLG5yKXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sd24pfDApK01hdGguaW11bChibixucil8MCxEZT1EZStNYXRoLmltdWwoYm4sd24pfDAseWU9''@;'; put 'put ''eWUrTWF0aC5pbXVsKGp0LFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwoanQsZ24pfDApK01hdGguaW11bChKdCxZdCl8MCxEZT1EZStNYXRoLmltdWwoSnQsZ24pfDAseWU9eWUrTWF0aC5pbXVsKHplLFZ0KXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsc24pfDApK01hdGguaW11bChZZSxW''@;'; put 'put ''dCl8MCxEZT1EZStNYXRoLmltdWwoWWUsc24pfDAseWU9eWUrTWF0aC5pbXVsKEN0LF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3QsdG4pfDApK01hdGguaW11bChjdCxfbil8MCxEZT1EZStNYXRoLmltdWwoY3QsdG4pfDAseWU9eWUrTWF0aC5pbXVsKHFlLFRyKXwwLENlPShDZT1DZStN''@;'; put 'put ''YXRoLmltdWwocWUsUG4pfDApK01hdGguaW11bChvdCxUcil8MCxEZT1EZStNYXRoLmltdWwob3QsUG4pfDAseWU9eWUrTWF0aC5pbXVsKG9uLHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwob24sdW4pfDApK01hdGguaW11bChfdCx2bil8MCxEZT1EZStNYXRoLmltdWwoX3QsdW4pfDAseWU9''@;'; put 'put ''eWUrTWF0aC5pbXVsKHZ0LFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwodnQsR3QpfDApK01hdGguaW11bChmdCxTbil8MCxEZT1EZStNYXRoLmltdWwoZnQsR3QpfDA7dmFyIHIwPShGKyh5ZT15ZStNYXRoLmltdWwoeXQsam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bCh5''@;'; put 'put ''dCxxdCl8MCkrTWF0aC5pbXVsKHB0LGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwocHQscXQpfDApKyhDZT4+PjEzKXwwKSsocjA+Pj4yNil8MCxyMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLG5yKSxDZT0oQ2U9TWF0aC5pbXVsKE5uLHduKSkrTWF0aC5pbXVsKGtuLG5y''@;'; put 'put ''KXwwLERlPU1hdGguaW11bChrbix3bikseWU9eWUrTWF0aC5pbXVsKHBuLFl0KXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sZ24pfDApK01hdGguaW11bChibixZdCl8MCxEZT1EZStNYXRoLmltdWwoYm4sZ24pfDAseWU9eWUrTWF0aC5pbXVsKGp0LFZ0KXwwLENlPShDZT1DZStNYXRoLmlt''@;'; put 'put ''dWwoanQsc24pfDApK01hdGguaW11bChKdCxWdCl8MCxEZT1EZStNYXRoLmltdWwoSnQsc24pfDAseWU9eWUrTWF0aC5pbXVsKHplLF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsdG4pfDApK01hdGguaW11bChZZSxfbil8MCxEZT1EZStNYXRoLmltdWwoWWUsdG4pfDAseWU9eWUrTWF0''@;'; put 'put ''aC5pbXVsKEN0LFRyKXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3QsUG4pfDApK01hdGguaW11bChjdCxUcil8MCxEZT1EZStNYXRoLmltdWwoY3QsUG4pfDAseWU9eWUrTWF0aC5pbXVsKHFlLHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwocWUsdW4pfDApK01hdGguaW11bChvdCx2bil8MCxE''@;'; put 'put ''ZT1EZStNYXRoLmltdWwob3QsdW4pfDAseWU9eWUrTWF0aC5pbXVsKG9uLFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwob24sR3QpfDApK01hdGguaW11bChfdCxTbil8MCxEZT1EZStNYXRoLmltdWwoX3QsR3QpfDA7dmFyIGUwPShGKyh5ZT15ZStNYXRoLmltdWwodnQsam4pfDApfDApKygo''@;'; put 'put ''ODE5MSYoQ2U9KENlPUNlK01hdGguaW11bCh2dCxxdCl8MCkrTWF0aC5pbXVsKGZ0LGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoZnQscXQpfDApKyhDZT4+PjEzKXwwKSsoZTA+Pj4yNil8MCxlMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLFl0KSxDZT0oQ2U9TWF0aC5p''@;'; put 'put ''bXVsKE5uLGduKSkrTWF0aC5pbXVsKGtuLFl0KXwwLERlPU1hdGguaW11bChrbixnbikseWU9eWUrTWF0aC5pbXVsKHBuLFZ0KXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sc24pfDApK01hdGguaW11bChibixWdCl8MCxEZT1EZStNYXRoLmltdWwoYm4sc24pfDAseWU9eWUrTWF0aC5pbXVs''@;'; put 'put ''KGp0LF9uKXwwLENlPShDZT1DZStNYXRoLmltdWwoanQsdG4pfDApK01hdGguaW11bChKdCxfbil8MCxEZT1EZStNYXRoLmltdWwoSnQsdG4pfDAseWU9eWUrTWF0aC5pbXVsKHplLFRyKXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsUG4pfDApK01hdGguaW11bChZZSxUcil8MCxEZT1EZStN''@;'; put 'put ''YXRoLmltdWwoWWUsUG4pfDAseWU9eWUrTWF0aC5pbXVsKEN0LHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3QsdW4pfDApK01hdGguaW11bChjdCx2bil8MCxEZT1EZStNYXRoLmltdWwoY3QsdW4pfDAseWU9eWUrTWF0aC5pbXVsKHFlLFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwocWUs''@;'; put 'put ''R3QpfDApK01hdGguaW11bChvdCxTbil8MCxEZT1EZStNYXRoLmltdWwob3QsR3QpfDA7dmFyIGQwPShGKyh5ZT15ZStNYXRoLmltdWwob24sam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChvbixxdCl8MCkrTWF0aC5pbXVsKF90LGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1E''@;'; put 'put ''ZStNYXRoLmltdWwoX3QscXQpfDApKyhDZT4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLFZ0KSxDZT0oQ2U9TWF0aC5pbXVsKE5uLHNuKSkrTWF0aC5pbXVsKGtuLFZ0KXwwLERlPU1hdGguaW11bChrbixzbikseWU9eWUrTWF0aC5pbXVsKHBuLF9u''@;'; put 'put ''KXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sdG4pfDApK01hdGguaW11bChibixfbil8MCxEZT1EZStNYXRoLmltdWwoYm4sdG4pfDAseWU9eWUrTWF0aC5pbXVsKGp0LFRyKXwwLENlPShDZT1DZStNYXRoLmltdWwoanQsUG4pfDApK01hdGguaW11bChKdCxUcil8MCxEZT1EZStNYXRoLmlt''@;'; put 'put ''dWwoSnQsUG4pfDAseWU9eWUrTWF0aC5pbXVsKHplLHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsdW4pfDApK01hdGguaW11bChZZSx2bil8MCxEZT1EZStNYXRoLmltdWwoWWUsdW4pfDAseWU9eWUrTWF0aC5pbXVsKEN0LFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoQ3QsR3QpfDAp''@;'; put 'put ''K01hdGguaW11bChjdCxTbil8MCxEZT1EZStNYXRoLmltdWwoY3QsR3QpfDA7dmFyIF8wPShGKyh5ZT15ZStNYXRoLmltdWwocWUsam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChxZSxxdCl8MCkrTWF0aC5pbXVsKG90LGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRo''@;'; put 'put ''LmltdWwob3QscXQpfDApKyhDZT4+PjEzKXwwKSsoXzA+Pj4yNil8MCxfMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLF9uKSxDZT0oQ2U9TWF0aC5pbXVsKE5uLHRuKSkrTWF0aC5pbXVsKGtuLF9uKXwwLERlPU1hdGguaW11bChrbix0bikseWU9eWUrTWF0aC5pbXVsKHBuLFRyKXwwLENl''@;'; put 'put ''PShDZT1DZStNYXRoLmltdWwocG4sUG4pfDApK01hdGguaW11bChibixUcil8MCxEZT1EZStNYXRoLmltdWwoYm4sUG4pfDAseWU9eWUrTWF0aC5pbXVsKGp0LHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwoanQsdW4pfDApK01hdGguaW11bChKdCx2bil8MCxEZT1EZStNYXRoLmltdWwoSnQs''@;'; put 'put ''dW4pfDAseWU9eWUrTWF0aC5pbXVsKHplLFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoemUsR3QpfDApK01hdGguaW11bChZZSxTbil8MCxEZT1EZStNYXRoLmltdWwoWWUsR3QpfDA7dmFyIFUwPShGKyh5ZT15ZStNYXRoLmltdWwoQ3Qsam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01h''@;'; put 'put ''dGguaW11bChDdCxxdCl8MCkrTWF0aC5pbXVsKGN0LGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoY3QscXQpfDApKyhDZT4+PjEzKXwwKSsoVTA+Pj4yNil8MCxVMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLFRyKSxDZT0oQ2U9TWF0aC5pbXVsKE5uLFBuKSkrTWF0aC5p''@;'; put 'put ''bXVsKGtuLFRyKXwwLERlPU1hdGguaW11bChrbixQbikseWU9eWUrTWF0aC5pbXVsKHBuLHZuKXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sdW4pfDApK01hdGguaW11bChibix2bil8MCxEZT1EZStNYXRoLmltdWwoYm4sdW4pfDAseWU9eWUrTWF0aC5pbXVsKGp0LFNuKXwwLENlPShDZT1D''@;'; put 'put ''ZStNYXRoLmltdWwoanQsR3QpfDApK01hdGguaW11bChKdCxTbil8MCxEZT1EZStNYXRoLmltdWwoSnQsR3QpfDA7dmFyIEJpPShGKyh5ZT15ZStNYXRoLmltdWwoemUsam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bCh6ZSxxdCl8MCkrTWF0aC5pbXVsKFllLGpuKXwwKSk8''@;'; put 'put ''PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoWWUscXQpfDApKyhDZT4+PjEzKXwwKSsoQmk+Pj4yNil8MCxCaSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLHZuKSxDZT0oQ2U9TWF0aC5pbXVsKE5uLHVuKSkrTWF0aC5pbXVsKGtuLHZuKXwwLERlPU1hdGguaW11bChrbix1bikseWU9eWUr''@;'; put 'put ''TWF0aC5pbXVsKHBuLFNuKXwwLENlPShDZT1DZStNYXRoLmltdWwocG4sR3QpfDApK01hdGguaW11bChibixTbil8MCxEZT1EZStNYXRoLmltdWwoYm4sR3QpfDA7dmFyIGowPShGKyh5ZT15ZStNYXRoLmltdWwoanQsam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChqdCxx''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKEp0LGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoSnQscXQpfDApKyhDZT4+PjEzKXwwKSsoajA+Pj4yNil8MCxqMCY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKE5uLFNuKSxDZT0oQ2U9TWF0aC5pbXVsKE5uLEd0KSkrTWF0aC5pbXVsKGtuLFNuKXww''@;'; put 'put ''LERlPU1hdGguaW11bChrbixHdCk7dmFyIEFvPShGKyh5ZT15ZStNYXRoLmltdWwocG4sam4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChwbixxdCl8MCkrTWF0aC5pbXVsKGJuLGpuKXwwKSk8PDEzKXwwO0Y9KChEZT1EZStNYXRoLmltdWwoYm4scXQpfDApKyhDZT4+PjEz''@;'; put 'put ''KXwwKSsoQW8+Pj4yNil8MCxBbyY9NjcxMDg4NjM7dmFyIEtvPShGKyh5ZT1NYXRoLmltdWwoTm4sam4pKXwwKSsoKDgxOTEmKENlPShDZT1NYXRoLmltdWwoTm4scXQpKStNYXRoLmltdWwoa24sam4pfDApKTw8MTMpfDA7cmV0dXJuIEY9KChEZT1NYXRoLmltdWwoa24scXQpKSsoQ2U+Pj4x''@;'; put 'put ''Myl8MCkrKEtvPj4+MjYpfDAsS28mPTY3MTA4ODYzLFNbMF09TG4sU1sxXT1KbixTWzJdPW9yLFNbM109Z3IsU1s0XT1KcixTWzVdPVZyLFNbNl09dGksU1s3XT1PcixTWzhdPWxpLFNbOV09SWksU1sxMF09cjAsU1sxMV09ZTAsU1sxMl09ZDAsU1sxM109XzAsU1sxNF09VTAsU1sxNV09Qmks''@;'; put 'put ''U1sxNl09ajAsU1sxN109QW8sU1sxOF09S28sMCE9PUYmJihTWzE5XT1GLFAubGVuZ3RoKyspLFB9O2Z1bmN0aW9uIGRlKG5lLHRlLHgpe3gubmVnYXRpdmU9dGUubmVnYXRpdmVebmUubmVnYXRpdmUseC5sZW5ndGg9bmUubGVuZ3RoK3RlLmxlbmd0aDtmb3IodmFyIFA9MCxWPTAsVD0wO1Q8''@;'; put 'put ''eC5sZW5ndGgtMTtUKyspe3ZhciBTPVY7Vj0wO2Zvcih2YXIgRj02NzEwODg2MyZQLHllPU1hdGgubWluKFQsdGUubGVuZ3RoLTEpLENlPU1hdGgubWF4KDAsVC1uZS5sZW5ndGgrMSk7Q2U8PXllO0NlKyspe3ZhciAkZT0oMHxuZS53b3Jkc1tULUNlXSkqKDB8dGUud29yZHNbQ2VdKSxndD02''@;'; put 'put ''NzEwODg2MyYkZTtGPTY3MTA4ODYzJihndD1ndCtGfDApLFYrPShTPShTPVMrKCRlLzY3MTA4ODY0fDApfDApKyhndD4+PjI2KXwwKT4+PjI2LFMmPTY3MTA4ODYzfXgud29yZHNbVF09RixQPVMsUz1WfXJldHVybiAwIT09UD94LndvcmRzW1RdPVA6eC5sZW5ndGgtLSx4Ll9zdHJpcCgpfWZ1''@;'; put 'put ''bmN0aW9uIHZlKG5lLHRlLHgpe3JldHVybiBkZShuZSx0ZSx4KX1mdW5jdGlvbiBBZShuZSx0ZSl7dGhpcy54PW5lLHRoaXMueT10ZX1NYXRoLmltdWx8fChmZT1hZSksVS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24odGUseCl7dmFyIFY9dGhpcy5sZW5ndGgrdGUubGVuZ3RoO3JldHVybiAx''@;'; put 'put ''MD09PXRoaXMubGVuZ3RoJiYxMD09PXRlLmxlbmd0aD9mZSh0aGlzLHRlLHgpOlY8NjM/YWUodGhpcyx0ZSx4KTpWPDEwMjQ/ZGUodGhpcyx0ZSx4KTp2ZSh0aGlzLHRlLHgpfSxBZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih0ZSl7Zm9yKHZhciB4PW5ldyBBcnJheSh0ZSksUD1VLnBy''@;'; put 'put ''b3RvdHlwZS5fY291bnRCaXRzKHRlKS0xLFY9MDtWPHRlO1YrKyl4W1ZdPXRoaXMucmV2QmluKFYsUCx0ZSk7cmV0dXJuIHh9LEFlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24odGUseCxQKXtpZigwPT09dGV8fHRlPT09UC0xKXJldHVybiB0ZTtmb3IodmFyIFY9MCxUPTA7VDx4O1QrKylW''@;'; put 'put ''fD0oMSZ0ZSk8PHgtVC0xLHRlPj49MTtyZXR1cm4gVn0sQWUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24odGUseCxQLFYsVCxTKXtmb3IodmFyIEY9MDtGPFM7RisrKVZbRl09eFt0ZVtGXV0sVFtGXT1QW3RlW0ZdXX0sQWUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0ZSx4LFAs''@;'; put 'put ''VixULFMpe3RoaXMucGVybXV0ZShTLHRlLHgsUCxWLFQpO2Zvcih2YXIgRj0xO0Y8VDtGPDw9MSlmb3IodmFyIHllPUY8PDEsQ2U9TWF0aC5jb3MoMipNYXRoLlBJL3llKSxEZT1NYXRoLnNpbigyKk1hdGguUEkveWUpLFBlPTA7UGU8VDtQZSs9eWUpZm9yKHZhciBRZT1DZSwkZT1EZSxndD0w''@;'; put 'put ''O2d0PEY7Z3QrKyl7dmFyIHl0PVBbUGUrZ3RdLHB0PVZbUGUrZ3RdLG10PVBbUGUrZ3QrRl0sdnQ9VltQZStndCtGXSxmdD1RZSptdC0kZSp2dDt2dD1RZSp2dCskZSptdCxQW1BlK2d0XT15dCsobXQ9ZnQpLFZbUGUrZ3RdPXB0K3Z0LFBbUGUrZ3QrRl09eXQtbXQsVltQZStndCtGXT1wdC12''@;'; put 'put ''dCxndCE9PXllJiYoZnQ9Q2UqUWUtRGUqJGUsJGU9Q2UqJGUrRGUqUWUsUWU9ZnQpfX0sQWUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHRlLHgpe3ZhciBQPTF8TWF0aC5tYXgoeCx0ZSksVj0xJlAsVD0wO2ZvcihQPVAvMnwwO1A7UD4+Pj0xKVQrKztyZXR1cm4gMTw8VCsxK1Z9''@;'; put 'put ''LEFlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24odGUseCxQKXtpZighKFA8PTEpKWZvcih2YXIgVj0wO1Y8UC8yO1YrKyl7dmFyIFQ9dGVbVl07dGVbVl09dGVbUC1WLTFdLHRlW1AtVi0xXT1ULFQ9eFtWXSx4W1ZdPS14W1AtVi0xXSx4W1AtVi0xXT0tVH19LEFlLnByb3RvdHlwZS5u''@;'; put 'put ''b3JtYWxpemUxM2I9ZnVuY3Rpb24odGUseCl7Zm9yKHZhciBQPTAsVj0wO1Y8eC8yO1YrKyl7dmFyIFQ9ODE5MipNYXRoLnJvdW5kKHRlWzIqVisxXS94KStNYXRoLnJvdW5kKHRlWzIqVl0veCkrUDt0ZVtWXT02NzEwODg2MyZULFA9VDw2NzEwODg2ND8wOlQvNjcxMDg4NjR8MH1yZXR1cm4g''@;'; put 'put ''dGV9LEFlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHRlLHgsUCxWKXtmb3IodmFyIFQ9MCxTPTA7Uzx4O1MrKylQWzIqU109ODE5MSYoVCs9MHx0ZVtTXSksUFsyKlMrMV09ODE5MSYoVD4+Pj0xMyksVD4+Pj0xMztmb3IoUz0yKng7UzxWOysrUylQW1NdPTA7RSgwPT09VCksRSgw''@;'; put 'put ''PT0oLTgxOTImVCkpfSxBZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih0ZSl7Zm9yKHZhciB4PW5ldyBBcnJheSh0ZSksUD0wO1A8dGU7UCsrKXhbUF09MDtyZXR1cm4geH0sQWUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24odGUseCxQKXt2YXIgVj0yKnRoaXMuZ3Vlc3NMZW4xM2IodGUubGVu''@;'; put 'put ''Z3RoLHgubGVuZ3RoKSxUPXRoaXMubWFrZVJCVChWKSxTPXRoaXMuc3R1YihWKSxGPW5ldyBBcnJheShWKSx5ZT1uZXcgQXJyYXkoViksQ2U9bmV3IEFycmF5KFYpLERlPW5ldyBBcnJheShWKSxQZT1uZXcgQXJyYXkoViksUWU9bmV3IEFycmF5KFYpLCRlPVAud29yZHM7JGUubGVuZ3RoPVYs''@;'; put 'put ''dGhpcy5jb252ZXJ0MTNiKHRlLndvcmRzLHRlLmxlbmd0aCxGLFYpLHRoaXMuY29udmVydDEzYih4LndvcmRzLHgubGVuZ3RoLERlLFYpLHRoaXMudHJhbnNmb3JtKEYsUyx5ZSxDZSxWLFQpLHRoaXMudHJhbnNmb3JtKERlLFMsUGUsUWUsVixUKTtmb3IodmFyIGd0PTA7Z3Q8VjtndCsrKXt2''@;'; put 'put ''YXIgeXQ9eWVbZ3RdKlBlW2d0XS1DZVtndF0qUWVbZ3RdO0NlW2d0XT15ZVtndF0qUWVbZ3RdK0NlW2d0XSpQZVtndF0seWVbZ3RdPXl0fXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh5ZSxDZSxWKSx0aGlzLnRyYW5zZm9ybSh5ZSxDZSwkZSxTLFYsVCksdGhpcy5jb25qdWdhdGUoJGUsUyxWKSx0''@;'; put 'put ''aGlzLm5vcm1hbGl6ZTEzYigkZSxWKSxQLm5lZ2F0aXZlPXRlLm5lZ2F0aXZlXngubmVnYXRpdmUsUC5sZW5ndGg9dGUubGVuZ3RoK3gubGVuZ3RoLFAuX3N0cmlwKCl9LFUucHJvdG90eXBlLm11bD1mdW5jdGlvbih0ZSl7dmFyIHg9bmV3IFUobnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFy''@;'; put 'put ''cmF5KHRoaXMubGVuZ3RoK3RlLmxlbmd0aCksdGhpcy5tdWxUbyh0ZSx4KX0sVS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbih0ZSl7dmFyIHg9bmV3IFUobnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3RlLmxlbmd0aCksdmUodGhpcyx0ZSx4KX0sVS5wcm90b3R5''@;'; put 'put ''cGUuaW11bD1mdW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyh0ZSx0aGlzKX0sVS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24odGUpe3ZhciB4PXRlPDA7eCYmKHRlPS10ZSksRSgibnVtYmVyIj09dHlwZW9mIHRlKSxFKHRlPDY3MTA4ODY0KTtmb3IodmFyIFA9MCxWPTA7''@;'; put 'put ''Vjx0aGlzLmxlbmd0aDtWKyspe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKnRlLFM9KDY3MTA4ODYzJlQpKyg2NzEwODg2MyZQKTtQPj49MjYsUCs9VC82NzEwODg2NHwwLFArPVM+Pj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJlN9cmV0dXJuIDAhPT1QJiYodGhpcy53b3Jkc1tWXT1QLHRo''@;'; put 'put ''aXMubGVuZ3RoKyspLHg/dGhpcy5pbmVnKCk6dGhpc30sVS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih0ZSl9LFUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sVS5wcm90b3R5cGUuaXNxcj1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sVS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHRlKXt2YXIgeD1mdW5jdGlvbiBzZShuZSl7Zm9yKHZhciB0ZT1uZXcgQXJyYXkobmUuYml0TGVuZ3RoKCkpLHg9MDt4PHRlLmxlbmd0aDt4KyspdGVbeF09bmUud29yZHNbeC8y''@;'; put 'put ''NnwwXT4+PnglMjYmMTtyZXR1cm4gdGV9KHRlKTtpZigwPT09eC5sZW5ndGgpcmV0dXJuIG5ldyBVKDEpO2Zvcih2YXIgUD10aGlzLFY9MDtWPHgubGVuZ3RoJiYwPT09eFtWXTtWKyssUD1QLnNxcigpKTtpZigrK1Y8eC5sZW5ndGgpZm9yKHZhciBUPVAuc3FyKCk7Vjx4Lmxlbmd0aDtWKyss''@;'; put 'put ''VD1ULnNxcigpKTAhPT14W1ZdJiYoUD1QLm11bChUKSk7cmV0dXJuIFB9LFUucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih0ZSl7RSgibnVtYmVyIj09dHlwZW9mIHRlJiZ0ZT49MCk7dmFyIFQseD10ZSUyNixQPSh0ZS14KS8yNixWPTY3MTA4ODYzPj4+MjYteDw8MjYteDtpZigwIT09eCl7''@;'; put 'put ''dmFyIFM9MDtmb3IoVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXt2YXIgRj10aGlzLndvcmRzW1RdJlY7dGhpcy53b3Jkc1tUXT0oMHx0aGlzLndvcmRzW1RdKS1GPDx4fFMsUz1GPj4+MjYteH1TJiYodGhpcy53b3Jkc1tUXT1TLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1QKXtmb3IoVD10aGlzLmxl''@;'; put 'put ''bmd0aC0xO1Q+PTA7VC0tKXRoaXMud29yZHNbVCtQXT10aGlzLndvcmRzW1RdO2ZvcihUPTA7VDxQO1QrKyl0aGlzLndvcmRzW1RdPTA7dGhpcy5sZW5ndGgrPVB9cmV0dXJuIHRoaXMuX3N0cmlwKCl9LFUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gRSgwPT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSksdGhpcy5pdXNobG4odGUpfSxVLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24odGUseCxQKXt2YXIgVjtFKCJudW1iZXIiPT10eXBlb2YgdGUmJnRlPj0wKSxWPXg/KHgteCUyNikvMjY6MDt2YXIgVD10ZSUyNixTPU1hdGgubWluKCh0ZS1UKS8yNix0aGlzLmxlbmd0aCksRj02''@;'; put 'put ''NzEwODg2M142NzEwODg2Mz4+PlQ8PFQseWU9UDtpZihWLT1TLFY9TWF0aC5tYXgoMCxWKSx5ZSl7Zm9yKHZhciBDZT0wO0NlPFM7Q2UrKyl5ZS53b3Jkc1tDZV09dGhpcy53b3Jkc1tDZV07eWUubGVuZ3RoPVN9aWYoMCE9PVMpaWYodGhpcy5sZW5ndGg+Uylmb3IodGhpcy5sZW5ndGgtPVMs''@;'; put 'put ''Q2U9MDtDZTx0aGlzLmxlbmd0aDtDZSsrKXRoaXMud29yZHNbQ2VdPXRoaXMud29yZHNbQ2UrU107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgRGU9MDtmb3IoQ2U9dGhpcy5sZW5ndGgtMTtDZT49MCYmKDAhPT1EZXx8Q2U+PVYpO0NlLS0pe3ZhciBQZT0wfHRoaXMu''@;'; put 'put ''d29yZHNbQ2VdO3RoaXMud29yZHNbQ2VdPURlPDwyNi1UfFBlPj4+VCxEZT1QZSZGfXJldHVybiB5ZSYmMCE9PURlJiYoeWUud29yZHNbeWUubGVuZ3RoKytdPURlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5fc3RyaXAoKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuaXNocm49ZnVuY3Rpb24odGUseCxQKXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4odGUseCxQKX0sVS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih0ZSl9LFUucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9u''@;'; put 'put ''KHRlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbih0ZSl9LFUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4odGUpfSxVLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4odGUpfSxVLnBy''@;'; put 'put ''b3RvdHlwZS50ZXN0bj1mdW5jdGlvbih0ZSl7RSgibnVtYmVyIj09dHlwZW9mIHRlJiZ0ZT49MCk7dmFyIHg9dGUlMjYsUD0odGUteCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9UHx8ISh0aGlzLndvcmRzW1BdJjE8PHgpKX0sVS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHRlKXtFKCJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgdGUmJnRlPj0wKTt2YXIgeD10ZSUyNixQPSh0ZS14KS8yNjtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PVA/dGhpczooMCE9PXgmJlArKyx0aGlzLmxlbmd0aD1N''@;'; put 'put ''YXRoLm1pbihQLHRoaXMubGVuZ3RoKSwwIT09eCYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+eDw8eCksdGhpcy5fc3RyaXAoKSl9LFUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih0ZSl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gRSgibnVtYmVyIj09dHlwZW9mIHRlKSxFKHRlPDY3MTA4ODY0KSx0ZTwwP3RoaXMuaXN1Ym4oLXRlKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPD10ZT8odGhpcy53b3Jkc1sw''@;'; put 'put ''XT10ZS0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKHRlKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4odGUpfSxVLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24odGUpe3RoaXMud29yZHNbMF0rPXRl''@;'; put 'put ''O2Zvcih2YXIgeD0wO3g8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbeF0+PTY3MTA4ODY0O3grKyl0aGlzLndvcmRzW3hdLT02NzEwODg2NCx4PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3grMV09MTp0aGlzLndvcmRzW3grMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhp''@;'; put 'put ''cy5sZW5ndGgseCsxKSx0aGlzfSxVLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih0ZSl7aWYoRSgibnVtYmVyIj09dHlwZW9mIHRlKSxFKHRlPDY3MTA4ODY0KSx0ZTwwKXJldHVybiB0aGlzLmlhZGRuKC10ZSk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0''@;'; put 'put ''aGlzLmlhZGRuKHRlKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT10ZSwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgeD0wO3g8dGhpcy5sZW5ndGgm''@;'; put 'put ''JnRoaXMud29yZHNbeF08MDt4KyspdGhpcy53b3Jkc1t4XSs9NjcxMDg4NjQsdGhpcy53b3Jkc1t4KzFdLT0xO3JldHVybiB0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKHRlKX0sVS5wcm90b3R5cGUuc3Vibj1m''@;'; put 'put ''dW5jdGlvbih0ZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih0ZSl9LFUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LFUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24odGUseCxQKXt2YXIgVDt0aGlzLl9leHBhbmQodGUubGVuZ3RoK1ApO3ZhciBTLEY9MDtmb3IoVD0wO1Q8dGUubGVuZ3RoO1QrKyl7Uz0oMHx0aGlzLndvcmRzW1QrUF0pK0Y7dmFyIHllPSgwfHRlLndvcmRzW1RdKSp4O0Y9KChTLT02NzEwODg2MyZ5''@;'; put 'put ''ZSk+PjI2KS0oeWUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tUK1BdPTY3MTA4ODYzJlN9Zm9yKDtUPHRoaXMubGVuZ3RoLVA7VCsrKUY9KFM9KDB8dGhpcy53b3Jkc1tUK1BdKStGKT4+MjYsdGhpcy53b3Jkc1tUK1BdPTY3MTA4ODYzJlM7aWYoMD09PUYpcmV0dXJuIHRoaXMuX3N0cmlwKCk7''@;'; put 'put ''Zm9yKEUoLTE9PT1GKSxGPTAsVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKUY9KFM9LSgwfHRoaXMud29yZHNbVF0pK0YpPj4yNix0aGlzLndvcmRzW1RdPTY3MTA4ODYzJlM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0''@;'; put 'put ''ZSx4KXt2YXIgUCxWPXRoaXMuY2xvbmUoKSxUPXRlLFM9MHxULndvcmRzW1QubGVuZ3RoLTFdOzAhPShQPTI2LXRoaXMuX2NvdW50Qml0cyhTKSkmJihUPVQudXNobG4oUCksVi5pdXNobG4oUCksUz0wfFQud29yZHNbVC5sZW5ndGgtMV0pO3ZhciBDZSx5ZT1WLmxlbmd0aC1ULmxlbmd0aDtp''@;'; put 'put ''ZigibW9kIiE9PXgpeyhDZT1uZXcgVShudWxsKSkubGVuZ3RoPXllKzEsQ2Uud29yZHM9bmV3IEFycmF5KENlLmxlbmd0aCk7Zm9yKHZhciBEZT0wO0RlPENlLmxlbmd0aDtEZSsrKUNlLndvcmRzW0RlXT0wfXZhciBQZT1WLmNsb25lKCkuX2lzaGxuc3VibXVsKFQsMSx5ZSk7MD09PVBlLm5l''@;'; put 'put ''Z2F0aXZlJiYoVj1QZSxDZSYmKENlLndvcmRzW3llXT0xKSk7Zm9yKHZhciBRZT15ZS0xO1FlPj0wO1FlLS0pe3ZhciAkZT02NzEwODg2NCooMHxWLndvcmRzW1QubGVuZ3RoK1FlXSkrKDB8Vi53b3Jkc1tULmxlbmd0aCtRZS0xXSk7Zm9yKCRlPU1hdGgubWluKCRlL1N8MCw2NzEwODg2Myks''@;'; put 'put ''Vi5faXNobG5zdWJtdWwoVCwkZSxRZSk7MCE9PVYubmVnYXRpdmU7KSRlLS0sVi5uZWdhdGl2ZT0wLFYuX2lzaGxuc3VibXVsKFQsMSxRZSksVi5pc1plcm8oKXx8KFYubmVnYXRpdmVePTEpO0NlJiYoQ2Uud29yZHNbUWVdPSRlKX1yZXR1cm4gQ2UmJkNlLl9zdHJpcCgpLFYuX3N0cmlwKCks''@;'; put 'put ''ImRpdiIhPT14JiYwIT09UCYmVi5pdXNocm4oUCkse2RpdjpDZXx8bnVsbCxtb2Q6Vn19LFUucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbih0ZSx4LFApe3JldHVybiBFKCF0ZS5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBVKDApLG1vZDpuZXcgVSgwKX06MCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmUmJjA9PT10ZS5uZWdhdGl2ZT8oUz10aGlzLm5lZygpLmRpdm1vZCh0ZSx4KSwibW9kIiE9PXgmJihWPVMuZGl2Lm5lZygpKSwiZGl2IiE9PXgmJihUPVMubW9kLm5lZygpLFAmJjAhPT1ULm5lZ2F0aXZlJiZULmlhZGQodGUpKSx7ZGl2OlYsbW9kOlR9KTowPT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSYmMCE9PXRlLm5lZ2F0aXZlPyhTPXRoaXMuZGl2bW9kKHRlLm5lZygpLHgpLCJtb2QiIT09eCYmKFY9Uy5kaXYubmVnKCkpLHtkaXY6Vixtb2Q6Uy5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZ0ZS5uZWdhdGl2ZSk/KFM9dGhpcy5uZWcoKS5kaXZtb2QodGUubmVnKCkseCksImRpdiIhPT14''@;'; put 'put ''JiYoVD1TLm1vZC5uZWcoKSxQJiYwIT09VC5uZWdhdGl2ZSYmVC5pc3ViKHRlKSkse2RpdjpTLmRpdixtb2Q6VH0pOnRlLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAodGUpPDA/e2RpdjpuZXcgVSgwKSxtb2Q6dGhpc306MT09PXRlLmxlbmd0aD8iZGl2Ij09PXg/e2Rpdjp0aGlzLmRp''@;'; put 'put ''dm4odGUud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PXg/e2RpdjpudWxsLG1vZDpuZXcgVSh0aGlzLm1vZHJuKHRlLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHRlLndvcmRzWzBdKSxtb2Q6bmV3IFUodGhpcy5tb2Rybih0ZS53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHRlLHgp''@;'; put 'put ''O3ZhciBWLFQsU30sVS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5kaXZtb2QodGUsImRpdiIsITEpLmRpdn0sVS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5kaXZtb2QodGUsIm1vZCIsITEpLm1vZH0sVS5wcm90b3R5cGUudW1vZD1mdW5j''@;'; put 'put ''dGlvbih0ZSl7cmV0dXJuIHRoaXMuZGl2bW9kKHRlLCJtb2QiLCEwKS5tb2R9LFUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKHRlKXt2YXIgeD10aGlzLmRpdm1vZCh0ZSk7aWYoeC5tb2QuaXNaZXJvKCkpcmV0dXJuIHguZGl2O3ZhciBQPTAhPT14LmRpdi5uZWdhdGl2ZT94Lm1vZC5p''@;'; put 'put ''c3ViKHRlKTp4Lm1vZCxWPXRlLnVzaHJuKDEpLFQ9dGUuYW5kbG4oMSksUz1QLmNtcChWKTtyZXR1cm4gUzwwfHwxPT09VCYmMD09PVM/eC5kaXY6MCE9PXguZGl2Lm5lZ2F0aXZlP3guZGl2LmlzdWJuKDEpOnguZGl2LmlhZGRuKDEpfSxVLnByb3RvdHlwZS5tb2Rybj1mdW5jdGlvbih0ZSl7''@;'; put 'put ''dmFyIHg9dGU8MDt4JiYodGU9LXRlKSxFKHRlPD02NzEwODg2Myk7Zm9yKHZhciBQPSgxPDwyNikldGUsVj0wLFQ9dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSlWPShQKlYrKDB8dGhpcy53b3Jkc1tUXSkpJXRlO3JldHVybiB4Py1WOlZ9LFUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24odGUpe3Jl''@;'; put 'put ''dHVybiB0aGlzLm1vZHJuKHRlKX0sVS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24odGUpe3ZhciB4PXRlPDA7eCYmKHRlPS10ZSksRSh0ZTw9NjcxMDg4NjMpO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkrNjcxMDg4NjQqUDt0''@;'; put 'put ''aGlzLndvcmRzW1ZdPVQvdGV8MCxQPVQldGV9cmV0dXJuIHRoaXMuX3N0cmlwKCkseD90aGlzLmluZWcoKTp0aGlzfSxVLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHRlKX0sVS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbih0ZSl7RSgwPT09''@;'; put 'put ''dGUubmVnYXRpdmUpLEUoIXRlLmlzWmVybygpKTt2YXIgeD10aGlzLFA9dGUuY2xvbmUoKTt4PTAhPT14Lm5lZ2F0aXZlP3gudW1vZCh0ZSk6eC5jbG9uZSgpO2Zvcih2YXIgVj1uZXcgVSgxKSxUPW5ldyBVKDApLFM9bmV3IFUoMCksRj1uZXcgVSgxKSx5ZT0wO3guaXNFdmVuKCkmJlAuaXNF''@;'; put 'put ''dmVuKCk7KXguaXVzaHJuKDEpLFAuaXVzaHJuKDEpLCsreWU7Zm9yKHZhciBDZT1QLmNsb25lKCksRGU9eC5jbG9uZSgpOyF4LmlzWmVybygpOyl7Zm9yKHZhciBQZT0wLFFlPTE7MD09KHgud29yZHNbMF0mUWUpJiZQZTwyNjsrK1BlLFFlPDw9MSk7aWYoUGU+MClmb3IoeC5pdXNocm4oUGUp''@;'; put 'put ''O1BlLS0gPjA7KShWLmlzT2RkKCl8fFQuaXNPZGQoKSkmJihWLmlhZGQoQ2UpLFQuaXN1YihEZSkpLFYuaXVzaHJuKDEpLFQuaXVzaHJuKDEpO2Zvcih2YXIgJGU9MCxndD0xOzA9PShQLndvcmRzWzBdJmd0KSYmJGU8MjY7KyskZSxndDw8PTEpO2lmKCRlPjApZm9yKFAuaXVzaHJuKCRlKTsk''@;'; put 'put ''ZS0tID4wOykoUy5pc09kZCgpfHxGLmlzT2RkKCkpJiYoUy5pYWRkKENlKSxGLmlzdWIoRGUpKSxTLml1c2hybigxKSxGLml1c2hybigxKTt4LmNtcChQKT49MD8oeC5pc3ViKFApLFYuaXN1YihTKSxULmlzdWIoRikpOihQLmlzdWIoeCksUy5pc3ViKFYpLEYuaXN1YihUKSl9cmV0dXJue2E6''@;'; put 'put ''UyxiOkYsZ2NkOlAuaXVzaGxuKHllKX19LFUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbih0ZSl7RSgwPT09dGUubmVnYXRpdmUpLEUoIXRlLmlzWmVybygpKTt2YXIgUGUseD10aGlzLFA9dGUuY2xvbmUoKTt4PTAhPT14Lm5lZ2F0aXZlP3gudW1vZCh0ZSk6eC5jbG9uZSgpO2Zvcih2YXIg''@;'; put 'put ''Vj1uZXcgVSgxKSxUPW5ldyBVKDApLFM9UC5jbG9uZSgpO3guY21wbigxKT4wJiZQLmNtcG4oMSk+MDspe2Zvcih2YXIgRj0wLHllPTE7MD09KHgud29yZHNbMF0meWUpJiZGPDI2OysrRix5ZTw8PTEpO2lmKEY+MClmb3IoeC5pdXNocm4oRik7Ri0tID4wOylWLmlzT2RkKCkmJlYuaWFkZChT''@;'; put 'put ''KSxWLml1c2hybigxKTtmb3IodmFyIENlPTAsRGU9MTswPT0oUC53b3Jkc1swXSZEZSkmJkNlPDI2OysrQ2UsRGU8PD0xKTtpZihDZT4wKWZvcihQLml1c2hybihDZSk7Q2UtLSA+MDspVC5pc09kZCgpJiZULmlhZGQoUyksVC5pdXNocm4oMSk7eC5jbXAoUCk+PTA/KHguaXN1YihQKSxWLmlz''@;'; put 'put ''dWIoVCkpOihQLmlzdWIoeCksVC5pc3ViKFYpKX1yZXR1cm4oUGU9MD09PXguY21wbigxKT9WOlQpLmNtcG4oMCk8MCYmUGUuaWFkZCh0ZSksUGV9LFUucHJvdG90eXBlLmdjZD1mdW5jdGlvbih0ZSl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gdGUuYWJzKCk7aWYodGUuaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIHRoaXMuYWJzKCk7dmFyIHg9dGhpcy5jbG9uZSgpLFA9dGUuY2xvbmUoKTt4Lm5lZ2F0aXZlPTAsUC5uZWdhdGl2ZT0wO2Zvcih2YXIgVj0wO3guaXNFdmVuKCkmJlAuaXNFdmVuKCk7VisrKXguaXVzaHJuKDEpLFAuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt4LmlzRXZlbigpOyl4Lml1''@;'; put 'put ''c2hybigxKTtmb3IoO1AuaXNFdmVuKCk7KVAuaXVzaHJuKDEpO3ZhciBUPXguY21wKFApO2lmKFQ8MCl7dmFyIFM9eDt4PVAsUD1TfWVsc2UgaWYoMD09PVR8fDA9PT1QLmNtcG4oMSkpYnJlYWs7eC5pc3ViKFApfXJldHVybiBQLml1c2hsbihWKX0sVS5wcm90b3R5cGUuaW52bT1mdW5jdGlv''@;'; put 'put ''bih0ZSl7cmV0dXJuIHRoaXMuZWdjZCh0ZSkuYS51bW9kKHRlKX0sVS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5''@;'; put 'put ''cGUuYW5kbG49ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLndvcmRzWzBdJnRlfSxVLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbih0ZSl7RSgibnVtYmVyIj09dHlwZW9mIHRlKTt2YXIgeD10ZSUyNixQPSh0ZS14KS8yNixWPTE8PHg7aWYodGhpcy5sZW5ndGg8PVApcmV0dXJuIHRoaXMuX2V4''@;'; put 'put ''cGFuZChQKzEpLHRoaXMud29yZHNbUF18PVYsdGhpcztmb3IodmFyIFQ9VixTPVA7MCE9PVQmJlM8dGhpcy5sZW5ndGg7UysrKXt2YXIgRj0wfHRoaXMud29yZHNbU107VD0oRis9VCk+Pj4yNix0aGlzLndvcmRzW1NdPUYmPTY3MTA4ODYzfXJldHVybiAwIT09VCYmKHRoaXMud29yZHNbU109''@;'; put 'put ''VCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sVS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih0ZSl7dmFyIFAseD10ZTwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYheCly''@;'; put 'put ''ZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmeClyZXR1cm4gMTtpZih0aGlzLl9zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUD0xO2Vsc2V7eCYmKHRlPS10ZSksRSh0ZTw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFY9MHx0aGlzLndvcmRzWzBdO1A9Vj09PXRlPzA6Vjx0''@;'; put 'put ''ZT8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LFUucHJvdG90eXBlLmNtcD1mdW5jdGlvbih0ZSl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT10ZS5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXRlLm5lZ2F0aXZlKXJldHVybiAxO3Zh''@;'; put 'put ''ciB4PXRoaXMudWNtcCh0ZSk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXg6eH0sVS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih0ZSl7aWYodGhpcy5sZW5ndGg+dGUubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPHRlLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHg9MCxQPXRo''@;'; put 'put ''aXMubGVuZ3RoLTE7UD49MDtQLS0pe3ZhciBWPTB8dGhpcy53b3Jkc1tQXSxUPTB8dGUud29yZHNbUF07aWYoViE9PVQpe1Y8VD94PS0xOlY+VCYmKHg9MSk7YnJlYWt9fXJldHVybiB4fSxVLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24odGUpe3JldHVybiAxPT09dGhpcy5jbXBuKHRlKX0sVS5w''@;'; put 'put ''cm90b3R5cGUuZ3Q9ZnVuY3Rpb24odGUpe3JldHVybiAxPT09dGhpcy5jbXAodGUpfSxVLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbXBuKHRlKT49MH0sVS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbXAodGUpPj0wfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5sdG49ZnVuY3Rpb24odGUpe3JldHVybi0xPT09dGhpcy5jbXBuKHRlKX0sVS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24odGUpe3JldHVybi0xPT09dGhpcy5jbXAodGUpfSxVLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbXBuKHRlKTw9MH0sVS5wcm90b3R5''@;'; put 'put ''cGUubHRlPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5jbXAodGUpPD0wfSxVLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24odGUpe3JldHVybiAwPT09dGhpcy5jbXBuKHRlKX0sVS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24odGUpe3JldHVybiAwPT09dGhpcy5jbXAodGUpfSxVLnJlZD1mdW5jdGlv''@;'; put 'put ''bih0ZSl7cmV0dXJuIG5ldyBPKHRlKX0sVS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24odGUpe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEUoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVz''@;'; put 'put ''IiksdGUuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh0ZSl9LFUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRo''@;'; put 'put ''aXMpfSxVLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24odGUpe3JldHVybiB0aGlzLnJlZD10ZSx0aGlzfSxVLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih0ZSl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5f''@;'; put 'put ''Zm9yY2VSZWQodGUpfSxVLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24odGUpe3JldHVybiBFKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsdGUpfSxVLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHRlKXtyZXR1cm4g''@;'; put 'put ''RSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsdGUpfSxVLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24odGUpe3JldHVybiBFKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhp''@;'; put 'put ''cy5yZWQuc3ViKHRoaXMsdGUpfSxVLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKHRlKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsdGUpfSxVLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24odGUp''@;'; put 'put ''e3JldHVybiBFKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsdGUpfSxVLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24odGUpe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0ZSksdGhpcy5yZWQubXVsKHRoaXMsdGUpfSxVLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKHRlKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMs''@;'; put 'put ''dGUpLHRoaXMucmVkLmltdWwodGhpcyx0ZSl9LFUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBF''@;'; put 'put ''KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LFUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxVLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkx''@;'; put 'put ''KHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sVS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHRlKXtyZXR1cm4gRSh0aGlzLnJlZCYmIXRlLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyx0ZSl9O3ZhciBrZT17azI1''@;'; put 'put ''NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIFNlKG5lLHRlKXt0aGlzLm5hbWU9bmUsdGhpcy5wPW5ldyBVKHRlLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgVSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhp''@;'; put 'put ''cy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gSWUoKXtTZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIFRlKCl7U2UuY2FsbCh0aGlzLCJwMjI0IiwiZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBFZSgpe1NlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gaGUo''@;'; put 'put ''KXtTZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIE8obmUpe2lmKCJzdHJpbmciPT10eXBlb2YgbmUpe3ZhciB0ZT1VLl9wcmltZShuZSk7dGhpcy5tPXRlLnAs''@;'; put 'put ''dGhpcy5wcmltZT10ZX1lbHNlIEUobmUuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09bmUsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIHoobmUpe08uY2FsbCh0aGlzLG5lKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2''@;'; put 'put ''IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBVKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5y''@;'; put 'put ''KS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVNlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHRlPW5ldyBVKG51bGwpO3JldHVybiB0ZS53b3Jkcz1uZXcgQXJyYXkoTWF0''@;'; put 'put ''aC5jZWlsKHRoaXMubi8xMykpLHRlfSxTZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih0ZSl7dmFyIFAseD10ZTtkb3t0aGlzLnNwbGl0KHgsdGhpcy50bXApLFA9KHg9KHg9dGhpcy5pbXVsSyh4KSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFA+dGhpcy5uKTt2YXIg''@;'; put 'put ''Vj1QPHRoaXMubj8tMTp4LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PVY/KHgud29yZHNbMF09MCx4Lmxlbmd0aD0xKTpWPjA/eC5pc3ViKHRoaXMucCk6dm9pZCAwIT09eC5zdHJpcD94LnN0cmlwKCk6eC5fc3RyaXAoKSx4fSxTZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odGUseCl7dGUu''@;'; put 'put ''aXVzaHJuKHRoaXMubiwwLHgpfSxTZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odGUpe3JldHVybiB0ZS5pbXVsKHRoaXMuayl9LE1lKEllLFNlKSxJZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odGUseCl7Zm9yKHZhciBQPTQxOTQzMDMsVj1NYXRoLm1pbih0ZS5sZW5ndGgsOSksVD0w''@;'; put 'put ''O1Q8VjtUKyspeC53b3Jkc1tUXT10ZS53b3Jkc1tUXTtpZih4Lmxlbmd0aD1WLHRlLmxlbmd0aDw9OSlyZXR1cm4gdGUud29yZHNbMF09MCx2b2lkKHRlLmxlbmd0aD0xKTt2YXIgUz10ZS53b3Jkc1s5XTtmb3IoeC53b3Jkc1t4Lmxlbmd0aCsrXT1TJlAsVD0xMDtUPHRlLmxlbmd0aDtUKysp''@;'; put 'put ''e3ZhciBGPTB8dGUud29yZHNbVF07dGUud29yZHNbVC0xMF09KEYmUCk8PDR8Uz4+PjIyLFM9Rn10ZS53b3Jkc1tULTEwXT1TPj4+PTIyLHRlLmxlbmd0aC09MD09PVMmJnRlLmxlbmd0aD4xMD8xMDo5fSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odGUpe3RlLndvcmRzW3RlLmxlbmd0''@;'; put 'put ''aF09MCx0ZS53b3Jkc1t0ZS5sZW5ndGgrMV09MCx0ZS5sZW5ndGgrPTI7Zm9yKHZhciB4PTAsUD0wO1A8dGUubGVuZ3RoO1ArKyl7dmFyIFY9MHx0ZS53b3Jkc1tQXTt0ZS53b3Jkc1tQXT02NzEwODg2MyYoeCs9OTc3KlYpLHg9NjQqVisoeC82NzEwODg2NHwwKX1yZXR1cm4gMD09PXRlLndv''@;'; put 'put ''cmRzW3RlLmxlbmd0aC0xXSYmKHRlLmxlbmd0aC0tLDA9PT10ZS53b3Jkc1t0ZS5sZW5ndGgtMV0mJnRlLmxlbmd0aC0tKSx0ZX0sTWUoVGUsU2UpLE1lKEVlLFNlKSxNZShoZSxTZSksaGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHRlKXtmb3IodmFyIHg9MCxQPTA7UDx0ZS5sZW5ndGg7''@;'; put 'put ''UCsrKXt2YXIgVj0xOSooMHx0ZS53b3Jkc1tQXSkreCxUPTY3MTA4ODYzJlY7Vj4+Pj0yNix0ZS53b3Jkc1tQXT1ULHg9Vn1yZXR1cm4gMCE9PXgmJih0ZS53b3Jkc1t0ZS5sZW5ndGgrK109eCksdGV9LFUuX3ByaW1lPWZ1bmN0aW9uKHRlKXtpZihrZVt0ZV0pcmV0dXJuIGtlW3RlXTt2YXIg''@;'; put 'put ''eDtpZigiazI1NiI9PT10ZSl4PW5ldyBJZTtlbHNlIGlmKCJwMjI0Ij09PXRlKXg9bmV3IFRlO2Vsc2UgaWYoInAxOTIiPT09dGUpeD1uZXcgRWU7ZWxzZXtpZigicDI1NTE5IiE9PXRlKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK3RlKTt4PW5ldyBoZX1yZXR1cm4ga2VbdGVd''@;'; put 'put ''PXgseH0sTy5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24odGUpe0UoMD09PXRlLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUodGUucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LE8ucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9u''@;'; put 'put ''KHRlLHgpe0UoMD09KHRlLm5lZ2F0aXZlfHgubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUodGUucmVkJiZ0ZS5yZWQ9PT14LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxPLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKHRlKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UodGUpLl9mb3JjZVJlZCh0aGlzKTooWSh0ZSx0ZS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKSx0ZSl9LE8ucHJvdG90eXBlLm5lZz1mdW5jdGlvbih0ZSl7cmV0dXJuIHRlLmlzWmVybygpP3RlLmNsb25lKCk6dGhpcy5tLnN1''@;'; put 'put ''Yih0ZSkuX2ZvcmNlUmVkKHRoaXMpfSxPLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odGUseCl7dGhpcy5fdmVyaWZ5Mih0ZSx4KTt2YXIgUD10ZS5hZGQoeCk7cmV0dXJuIFAuY21wKHRoaXMubSk+PTAmJlAuaXN1Yih0aGlzLm0pLFAuX2ZvcmNlUmVkKHRoaXMpfSxPLnByb3RvdHlwZS5pYWRk''@;'; put 'put ''PWZ1bmN0aW9uKHRlLHgpe3RoaXMuX3ZlcmlmeTIodGUseCk7dmFyIFA9dGUuaWFkZCh4KTtyZXR1cm4gUC5jbXAodGhpcy5tKT49MCYmUC5pc3ViKHRoaXMubSksUH0sTy5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHRlLHgpe3RoaXMuX3ZlcmlmeTIodGUseCk7dmFyIFA9dGUuc3ViKHgpO3Jl''@;'; put 'put ''dHVybiBQLmNtcG4oMCk8MCYmUC5pYWRkKHRoaXMubSksUC5fZm9yY2VSZWQodGhpcyl9LE8ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24odGUseCl7dGhpcy5fdmVyaWZ5Mih0ZSx4KTt2YXIgUD10ZS5pc3ViKHgpO3JldHVybiBQLmNtcG4oMCk8MCYmUC5pYWRkKHRoaXMubSksUH0sTy5wcm90''@;'; put 'put ''b3R5cGUuc2hsPWZ1bmN0aW9uKHRlLHgpe3JldHVybiB0aGlzLl92ZXJpZnkxKHRlKSx0aGlzLmltb2QodGUudXNobG4oeCkpfSxPLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHRlLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKHRlLHgpLHRoaXMuaW1vZCh0ZS5pbXVsKHgpKX0sTy5wcm90b3R5''@;'; put 'put ''cGUubXVsPWZ1bmN0aW9uKHRlLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKHRlLHgpLHRoaXMuaW1vZCh0ZS5tdWwoeCkpfSxPLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5pbXVsKHRlLHRlLmNsb25lKCkpfSxPLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24odGUpe3Jl''@;'; put 'put ''dHVybiB0aGlzLm11bCh0ZSx0ZSl9LE8ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24odGUpe2lmKHRlLmlzWmVybygpKXJldHVybiB0ZS5jbG9uZSgpO3ZhciB4PXRoaXMubS5hbmRsbigzKTtpZihFKHglMj09MSksMz09PXgpe3ZhciBQPXRoaXMubS5hZGQobmV3IFUoMSkpLml1c2hybigyKTty''@;'; put 'put ''ZXR1cm4gdGhpcy5wb3codGUsUCl9Zm9yKHZhciBWPXRoaXMubS5zdWJuKDEpLFQ9MDshVi5pc1plcm8oKSYmMD09PVYuYW5kbG4oMSk7KVQrKyxWLml1c2hybigxKTtFKCFWLmlzWmVybygpKTt2YXIgUz1uZXcgVSgxKS50b1JlZCh0aGlzKSxGPVMucmVkTmVnKCkseWU9dGhpcy5tLnN1Ym4o''@;'; put 'put ''MSkuaXVzaHJuKDEpLENlPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoQ2U9bmV3IFUoMipDZSpDZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KENlLHllKS5jbXAoRik7KUNlLnJlZElBZGQoRik7Zm9yKHZhciBEZT10aGlzLnBvdyhDZSxWKSxQZT10aGlzLnBvdyh0ZSxWLmFkZG4oMSkuaXVz''@;'; put 'put ''aHJuKDEpKSxRZT10aGlzLnBvdyh0ZSxWKSwkZT1UOzAhPT1RZS5jbXAoUyk7KXtmb3IodmFyIGd0PVFlLHl0PTA7MCE9PWd0LmNtcChTKTt5dCsrKWd0PWd0LnJlZFNxcigpO0UoeXQ8JGUpO3ZhciBwdD10aGlzLnBvdyhEZSxuZXcgVSgxKS5pdXNobG4oJGUteXQtMSkpO1BlPVBlLnJlZE11''@;'; put 'put ''bChwdCksRGU9cHQucmVkU3FyKCksUWU9UWUucmVkTXVsKERlKSwkZT15dH1yZXR1cm4gUGV9LE8ucHJvdG90eXBlLmludm09ZnVuY3Rpb24odGUpe3ZhciB4PXRlLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09eC5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLHRoaXMuaW1vZCh4KS5yZWROZWco''@;'; put 'put ''KSk6dGhpcy5pbW9kKHgpfSxPLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24odGUseCl7aWYoeC5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMSkudG9SZWQodGhpcyk7aWYoMD09PXguY21wbigxKSlyZXR1cm4gdGUuY2xvbmUoKTt2YXIgVj1uZXcgQXJyYXkoMTYpO1ZbMF09bmV3IFUoMSkudG9SZWQo''@;'; put 'put ''dGhpcyksVlsxXT10ZTtmb3IodmFyIFQ9MjtUPFYubGVuZ3RoO1QrKylWW1RdPXRoaXMubXVsKFZbVC0xXSx0ZSk7dmFyIFM9VlswXSxGPTAseWU9MCxDZT14LmJpdExlbmd0aCgpJTI2O2ZvcigwPT09Q2UmJihDZT0yNiksVD14Lmxlbmd0aC0xO1Q+PTA7VC0tKXtmb3IodmFyIERlPXgud29y''@;'; put 'put ''ZHNbVF0sUGU9Q2UtMTtQZT49MDtQZS0tKXt2YXIgUWU9RGU+PlBlJjE7UyE9PVZbMF0mJihTPXRoaXMuc3FyKFMpKSwwIT09UWV8fDAhPT1GPyhGPDw9MSxGfD1RZSwoND09Kyt5ZXx8MD09PVQmJjA9PT1QZSkmJihTPXRoaXMubXVsKFMsVltGXSkseWU9MCxGPTApKTp5ZT0wfUNlPTI2fXJl''@;'; put 'put ''dHVybiBTfSxPLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24odGUpe3ZhciB4PXRlLnVtb2QodGhpcy5tKTtyZXR1cm4geD09PXRlP3guY2xvbmUoKTp4fSxPLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih0ZSl7dmFyIHg9dGUuY2xvbmUoKTtyZXR1cm4geC5yZWQ9bnVsbCx4''@;'; put 'put ''fSxVLm1vbnQ9ZnVuY3Rpb24odGUpe3JldHVybiBuZXcgeih0ZSl9LE1lKHosTyksei5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5pbW9kKHRlLnVzaGxuKHRoaXMuc2hpZnQpKX0sei5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24odGUpe3ZhciB4''@;'; put 'put ''PXRoaXMuaW1vZCh0ZS5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHgucmVkPW51bGwseH0sei5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0ZSx4KXtpZih0ZS5pc1plcm8oKXx8eC5pc1plcm8oKSlyZXR1cm4gdGUud29yZHNbMF09MCx0ZS5sZW5ndGg9MSx0ZTt2YXIgUD10ZS5pbXVsKHgpLFY9''@;'; put 'put ''UC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksVD1QLmlzdWIoVikuaXVzaHJuKHRoaXMuc2hpZnQpLFM9VDtyZXR1cm4gVC5jbXAodGhpcy5tKT49MD9TPVQuaXN1Yih0aGlzLm0pOlQuY21wbigwKTwwJiYoUz1ULmlhZGQo''@;'; put 'put ''dGhpcy5tKSksUy5fZm9yY2VSZWQodGhpcyl9LHoucHJvdG90eXBlLm11bD1mdW5jdGlvbih0ZSx4KXtpZih0ZS5pc1plcm8oKXx8eC5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBQPXRlLm11bCh4KSxWPVAubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMu''@;'; put 'put ''bWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFQ9UC5pc3ViKFYpLml1c2hybih0aGlzLnNoaWZ0KSxTPVQ7cmV0dXJuIFQuY21wKHRoaXMubSk+PTA/Uz1ULmlzdWIodGhpcy5tKTpULmNtcG4oMCk8MCYmKFM9VC5pYWRkKHRoaXMubSkpLFMuX2ZvcmNlUmVkKHRoaXMpfSx6''@;'; put 'put ''LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5pbW9kKHRlLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oWGU9TC5ubWQoWGUpLHRoaXMpfSwzNzk1MDooWGUsSmUsTCk9Pnt2YXIgZ2U7ZnVuY3Rpb24gQihNZSl7dGhpcy5yYW5k''@;'; put 'put ''PU1lfWlmKFhlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7cmV0dXJuIGdlfHwoZ2U9bmV3IEIobnVsbCkpLGdlLmdlbmVyYXRlKFUpfSxYZS5leHBvcnRzLlJhbmQ9QixCLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbihVKXtyZXR1cm4gdGhpcy5fcmFuZChVKX0sQi5wcm90b3R5cGUuX3JhbmQ9''@;'; put 'put ''ZnVuY3Rpb24oVSl7aWYodGhpcy5yYW5kLmdldEJ5dGVzKXJldHVybiB0aGlzLnJhbmQuZ2V0Qnl0ZXMoVSk7Zm9yKHZhciBRPW5ldyBVaW50OEFycmF5KFUpLFo9MDtaPFEubGVuZ3RoO1orKylRW1pdPXRoaXMucmFuZC5nZXRCeXRlKCk7cmV0dXJuIFF9LCJvYmplY3QiPT10eXBlb2Ygc2Vs''@;'; put 'put ''ZilzZWxmLmNyeXB0byYmc2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP0IucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFUpe3ZhciBRPW5ldyBVaW50OEFycmF5KFUpO3JldHVybiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoUSksUX06c2VsZi5tc0NyeXB0byYmc2VsZi5tc0NyeXB0''@;'; put 'put ''by5nZXRSYW5kb21WYWx1ZXM/Qi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oVSl7dmFyIFE9bmV3IFVpbnQ4QXJyYXkoVSk7cmV0dXJuIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKFEpLFF9OiJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYoQi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rp''@;'; put 'put ''b24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCB5ZXQiKX0pO2Vsc2UgdHJ5e3ZhciBFPUwoNDEzNDgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBFLnJhbmRvbUJ5dGVzKXRocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCIpO0IucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9u''@;'; put 'put ''KFUpe3JldHVybiBFLnJhbmRvbUJ5dGVzKFUpfX1jYXRjaChNZSl7fX0sNDE4OTk6KFhlLEplLEwpPT57dmFyIGdlPUwoNzM1MDIpLkJ1ZmZlcjtmdW5jdGlvbiBCKGllKXtnZS5pc0J1ZmZlcihpZSl8fChpZT1nZS5mcm9tKGllKSk7Zm9yKHZhciBsZT1pZS5sZW5ndGgvNHwwLFk9bmV3IEFy''@;'; put 'put ''cmF5KGxlKSxXPTA7VzxsZTtXKyspWVtXXT1pZS5yZWFkVUludDMyQkUoNCpXKTtyZXR1cm4gWX1mdW5jdGlvbiBFKGllKXtmb3IoOzA8aWUubGVuZ3RoO2llKyspaWVbMF09MH1mdW5jdGlvbiBNZShpZSxsZSxZLFcsTil7Zm9yKHZhciBBZSxrZSxTZSxJZSxlZT1ZWzBdLHE9WVsxXSxKPVlb''@;'; put 'put ''Ml0sc2U9WVszXSxhZT1pZVswXV5sZVswXSxmZT1pZVsxXV5sZVsxXSxkZT1pZVsyXV5sZVsyXSx2ZT1pZVszXV5sZVszXSxUZT00LEVlPTE7RWU8TjtFZSsrKUFlPWVlW2FlPj4+MjRdXnFbZmU+Pj4xNiYyNTVdXkpbZGU+Pj44JjI1NV1ec2VbMjU1JnZlXV5sZVtUZSsrXSxrZT1lZVtmZT4+''@;'; put 'put ''PjI0XV5xW2RlPj4+MTYmMjU1XV5KW3ZlPj4+OCYyNTVdXnNlWzI1NSZhZV1ebGVbVGUrK10sU2U9ZWVbZGU+Pj4yNF1ecVt2ZT4+PjE2JjI1NV1eSlthZT4+PjgmMjU1XV5zZVsyNTUmZmVdXmxlW1RlKytdLEllPWVlW3ZlPj4+MjRdXnFbYWU+Pj4xNiYyNTVdXkpbZmU+Pj44JjI1NV1ec2Vb''@;'; put 'put ''MjU1JmRlXV5sZVtUZSsrXSxhZT1BZSxmZT1rZSxkZT1TZSx2ZT1JZTtyZXR1cm4gQWU9KFdbYWU+Pj4yNF08PDI0fFdbZmU+Pj4xNiYyNTVdPDwxNnxXW2RlPj4+OCYyNTVdPDw4fFdbMjU1JnZlXSlebGVbVGUrK10sa2U9KFdbZmU+Pj4yNF08PDI0fFdbZGU+Pj4xNiYyNTVdPDwxNnxXW3Zl''@;'; put 'put ''Pj4+OCYyNTVdPDw4fFdbMjU1JmFlXSlebGVbVGUrK10sU2U9KFdbZGU+Pj4yNF08PDI0fFdbdmU+Pj4xNiYyNTVdPDwxNnxXW2FlPj4+OCYyNTVdPDw4fFdbMjU1JmZlXSlebGVbVGUrK10sSWU9KFdbdmU+Pj4yNF08PDI0fFdbYWU+Pj4xNiYyNTVdPDwxNnxXW2ZlPj4+OCYyNTVdPDw4fFdb''@;'; put 'put ''MjU1JmRlXSlebGVbVGUrK10sW0FlPj4+PTAsa2U+Pj49MCxTZT4+Pj0wLEllPj4+PTBdfXZhciBVPVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxRPWZ1bmN0aW9uKCl7Zm9yKHZhciBpZT1uZXcgQXJyYXkoMjU2KSxsZT0wO2xlPDI1NjtsZSsrKWllW2xlXT1sZTwxMjg/bGU8PDE6''@;'; put 'put ''bGU8PDFeMjgzO2Zvcih2YXIgWT1bXSxXPVtdLE49W1tdLFtdLFtdLFtdXSxlZT1bW10sW10sW10sW11dLHE9MCxKPTAsc2U9MDtzZTwyNTY7KytzZSl7dmFyIGFlPUpeSjw8MV5KPDwyXko8PDNeSjw8NDtZW3FdPWFlPWFlPj4+OF4yNTUmYWVeOTksV1thZV09cTt2YXIgZmU9aWVbcV0sZGU9''@;'; put 'put ''aWVbZmVdLHZlPWllW2RlXSxBZT0yNTcqaWVbYWVdXjE2ODQzMDA4KmFlO05bMF1bcV09QWU8PDI0fEFlPj4+OCxOWzFdW3FdPUFlPDwxNnxBZT4+PjE2LE5bMl1bcV09QWU8PDh8QWU+Pj4yNCxOWzNdW3FdPUFlLGVlWzBdW2FlXT0oQWU9MTY4NDMwMDkqdmVeNjU1MzcqZGVeMjU3KmZlXjE2''@;'; put 'put ''ODQzMDA4KnEpPDwyNHxBZT4+PjgsZWVbMV1bYWVdPUFlPDwxNnxBZT4+PjE2LGVlWzJdW2FlXT1BZTw8OHxBZT4+PjI0LGVlWzNdW2FlXT1BZSwwPT09cT9xPUo9MToocT1mZV5pZVtpZVtpZVt2ZV5mZV1dXSxKXj1pZVtpZVtKXV0pfXJldHVybntTQk9YOlksSU5WX1NCT1g6VyxTVUJfTUlY''@;'; put 'put ''Ok4sSU5WX1NVQl9NSVg6ZWV9fSgpO2Z1bmN0aW9uIFooaWUpe3RoaXMuX2tleT1CKGllKSx0aGlzLl9yZXNldCgpfVouYmxvY2tTaXplPTE2LFoua2V5U2l6ZT0zMixaLnByb3RvdHlwZS5ibG9ja1NpemU9Wi5ibG9ja1NpemUsWi5wcm90b3R5cGUua2V5U2l6ZT1aLmtleVNpemUsWi5wcm90''@;'; put 'put ''b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciBpZT10aGlzLl9rZXksbGU9aWUubGVuZ3RoLFk9bGUrNixXPTQqKFkrMSksTj1bXSxlZT0wO2VlPGxlO2VlKyspTltlZV09aWVbZWVdO2ZvcihlZT1sZTtlZTxXO2VlKyspe3ZhciBxPU5bZWUtMV07ZWUlbGU9PTA/KHE9US5TQk9YWyhx''@;'; put 'put ''PXE8PDh8cT4+PjI0KT4+PjI0XTw8MjR8US5TQk9YW3E+Pj4xNiYyNTVdPDwxNnxRLlNCT1hbcT4+PjgmMjU1XTw8OHxRLlNCT1hbMjU1JnFdLHFePVVbZWUvbGV8MF08PDI0KTpsZT42JiZlZSVsZT09NCYmKHE9US5TQk9YW3E+Pj4yNF08PDI0fFEuU0JPWFtxPj4+MTYmMjU1XTw8MTZ8US5T''@;'; put 'put ''Qk9YW3E+Pj44JjI1NV08PDh8US5TQk9YWzI1NSZxXSksTltlZV09TltlZS1sZV1ecX1mb3IodmFyIEo9W10sc2U9MDtzZTxXO3NlKyspe3ZhciBhZT1XLXNlLGZlPU5bYWUtKHNlJTQ/MDo0KV07SltzZV09c2U8NHx8YWU8PTQ/ZmU6US5JTlZfU1VCX01JWFswXVtRLlNCT1hbZmU+Pj4yNF1d''@;'; put 'put ''XlEuSU5WX1NVQl9NSVhbMV1bUS5TQk9YW2ZlPj4+MTYmMjU1XV1eUS5JTlZfU1VCX01JWFsyXVtRLlNCT1hbZmU+Pj44JjI1NV1dXlEuSU5WX1NVQl9NSVhbM11bUS5TQk9YWzI1NSZmZV1dfXRoaXMuX25Sb3VuZHM9WSx0aGlzLl9rZXlTY2hlZHVsZT1OLHRoaXMuX2ludktleVNjaGVkdWxl''@;'; put 'put ''PUp9LFoucHJvdG90eXBlLmVuY3J5cHRCbG9ja1Jhdz1mdW5jdGlvbihpZSl7cmV0dXJuIE1lKGllPUIoaWUpLHRoaXMuX2tleVNjaGVkdWxlLFEuU1VCX01JWCxRLlNCT1gsdGhpcy5fblJvdW5kcyl9LFoucHJvdG90eXBlLmVuY3J5cHRCbG9jaz1mdW5jdGlvbihpZSl7dmFyIGxlPXRoaXMu''@;'; put 'put ''ZW5jcnlwdEJsb2NrUmF3KGllKSxZPWdlLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gWS53cml0ZVVJbnQzMkJFKGxlWzBdLDApLFkud3JpdGVVSW50MzJCRShsZVsxXSw0KSxZLndyaXRlVUludDMyQkUobGVbMl0sOCksWS53cml0ZVVJbnQzMkJFKGxlWzNdLDEyKSxZfSxaLnByb3RvdHlwZS5k''@;'; put 'put ''ZWNyeXB0QmxvY2s9ZnVuY3Rpb24oaWUpe3ZhciBsZT0oaWU9QihpZSkpWzFdO2llWzFdPWllWzNdLGllWzNdPWxlO3ZhciBZPU1lKGllLHRoaXMuX2ludktleVNjaGVkdWxlLFEuSU5WX1NVQl9NSVgsUS5JTlZfU0JPWCx0aGlzLl9uUm91bmRzKSxXPWdlLmFsbG9jVW5zYWZlKDE2KTtyZXR1''@;'; put 'put ''cm4gVy53cml0ZVVJbnQzMkJFKFlbMF0sMCksVy53cml0ZVVJbnQzMkJFKFlbM10sNCksVy53cml0ZVVJbnQzMkJFKFlbMl0sOCksVy53cml0ZVVJbnQzMkJFKFlbMV0sMTIpLFd9LFoucHJvdG90eXBlLnNjcnViPWZ1bmN0aW9uKCl7RSh0aGlzLl9rZXlTY2hlZHVsZSksRSh0aGlzLl9pbnZL''@;'; put 'put ''ZXlTY2hlZHVsZSksRSh0aGlzLl9rZXkpfSxYZS5leHBvcnRzLkFFUz1afSw2OTM4MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0MTg5OSksQj1MKDczNTAyKS5CdWZmZXIsRT1MKDYxMDUyKSxNZT1MKDgzODk0KSxVPUwoNjg4NTcpLFE9TCg1ODc4OSksWj1MKDc5NjgpO2Z1bmN0aW9uIFkoVyxO''@;'; put 'put ''LGVlLHEpe0UuY2FsbCh0aGlzKTt2YXIgSj1CLmFsbG9jKDQsMCk7dGhpcy5fY2lwaGVyPW5ldyBnZS5BRVMoTik7dmFyIHNlPXRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2soSik7dGhpcy5fZ2hhc2g9bmV3IFUoc2UpLGVlPWZ1bmN0aW9uIGxlKFcsTixlZSl7aWYoMTI9PT1OLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gVy5fZmluSUQ9Qi5jb25jYXQoW04sQi5mcm9tKFswLDAsMCwxXSldKSxCLmNvbmNhdChbTixCLmZyb20oWzAsMCwwLDJdKV0pO3ZhciBxPW5ldyBVKGVlKSxKPU4ubGVuZ3RoLHNlPUolMTY7cS51cGRhdGUoTiksc2UmJnEudXBkYXRlKEIuYWxsb2Moc2U9MTYtc2UsMCkpLHEudXBk''@;'; put 'put ''YXRlKEIuYWxsb2MoOCwwKSk7dmFyIGFlPTgqSixmZT1CLmFsbG9jKDgpO2ZlLndyaXRlVUludEJFKGFlLDAsOCkscS51cGRhdGUoZmUpLFcuX2ZpbklEPXEuc3RhdGU7dmFyIGRlPUIuZnJvbShXLl9maW5JRCk7cmV0dXJuIFooZGUpLGRlfSh0aGlzLGVlLHNlKSx0aGlzLl9wcmV2PUIuZnJv''@;'; put 'put ''bShlZSksdGhpcy5fY2FjaGU9Qi5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9zZWNDYWNoZT1CLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9cSx0aGlzLl9hbGVuPTAsdGhpcy5fbGVuPTAsdGhpcy5fbW9kZT1XLHRoaXMuX2F1dGhUYWc9bnVsbCx0aGlzLl9jYWxsZWQ9ITF9TWUoWSxFKSxZ''@;'; put 'put ''LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFcpe2lmKCF0aGlzLl9jYWxsZWQmJnRoaXMuX2FsZW4pe3ZhciBOPTE2LXRoaXMuX2FsZW4lMTY7TjwxNiYmKE49Qi5hbGxvYyhOLDApLHRoaXMuX2doYXNoLnVwZGF0ZShOKSl9dGhpcy5fY2FsbGVkPSEwO3ZhciBlZT10aGlzLl9tb2RlLmVu''@;'; put 'put ''Y3J5cHQodGhpcyxXKTtyZXR1cm4gdGhpcy5fZ2hhc2gudXBkYXRlKHRoaXMuX2RlY3J5cHQ/VzplZSksdGhpcy5fbGVuKz1XLmxlbmd0aCxlZX0sWS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdCYmIXRoaXMuX2F1dGhUYWcpdGhyb3cgbmV3IEVycm9yKCJV''@;'; put 'put ''bnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEiKTt2YXIgVz1RKHRoaXMuX2doYXNoLmZpbmFsKDgqdGhpcy5fYWxlbiw4KnRoaXMuX2xlbiksdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpO2lmKHRoaXMuX2RlY3J5cHQmJmZ1bmN0''@;'; put 'put ''aW9uIGllKFcsTil7dmFyIGVlPTA7Vy5sZW5ndGghPT1OLmxlbmd0aCYmZWUrKztmb3IodmFyIHE9TWF0aC5taW4oVy5sZW5ndGgsTi5sZW5ndGgpLEo9MDtKPHE7KytKKWVlKz1XW0pdXk5bSl07cmV0dXJuIGVlfShXLHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0''@;'; put 'put ''ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dGhpcy5fYXV0aFRhZz1XLHRoaXMuX2NpcGhlci5zY3J1YigpfSxZLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdHx8IUIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3JldHVybiB0aGlzLl9hdXRoVGFnfSxZLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKE4pe2lmKCF0aGlzLl9kZWNyeXB0KXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0''@;'; put 'put ''byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9hdXRoVGFnPU59LFkucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbihOKXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBBQUQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0''@;'; put 'put ''aGlzLl9naGFzaC51cGRhdGUoTiksdGhpcy5fYWxlbis9Ti5sZW5ndGh9LFhlLmV4cG9ydHM9WX0sODQzMzA6KFhlLEplLEwpPT57dmFyIGdlPUwoOTY5MDApLEI9TCgzNDQ0MiksRT1MKDQ0OTQ2KTtKZS5jcmVhdGVDaXBoZXI9SmUuQ2lwaGVyPWdlLmNyZWF0ZUNpcGhlcixKZS5jcmVhdGVD''@;'; put 'put ''aXBoZXJpdj1KZS5DaXBoZXJpdj1nZS5jcmVhdGVDaXBoZXJpdixKZS5jcmVhdGVEZWNpcGhlcj1KZS5EZWNpcGhlcj1CLmNyZWF0ZURlY2lwaGVyLEplLmNyZWF0ZURlY2lwaGVyaXY9SmUuRGVjaXBoZXJpdj1CLmNyZWF0ZURlY2lwaGVyaXYsSmUubGlzdENpcGhlcnM9SmUuZ2V0Q2lwaGVy''@;'; put 'put ''cz1mdW5jdGlvbiBNZSgpe3JldHVybiBPYmplY3Qua2V5cyhFKX19LDM0NDQyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDY5MzgyKSxCPUwoNzM1MDIpLkJ1ZmZlcixFPUwoMjkxNzEpLE1lPUwoMzg0NDEpLFU9TCg2MTA1MiksUT1MKDQxODk5KSxaPUwoNDAzNDcpO2Z1bmN0aW9uIGxlKHEsSixz''@;'; put 'put ''ZSl7VS5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBZLHRoaXMuX2xhc3Q9dm9pZCAwLHRoaXMuX2NpcGhlcj1uZXcgUS5BRVMoSiksdGhpcy5fcHJldj1CLmZyb20oc2UpLHRoaXMuX21vZGU9cSx0aGlzLl9hdXRvcGFkZGluZz0hMH1mdW5jdGlvbiBZKCl7dGhpcy5jYWNoZT1CLmFsbG9j''@;'; put 'put ''VW5zYWZlKDApfWZ1bmN0aW9uIE4ocSxKLHNlKXt2YXIgYWU9RVtxLnRvTG93ZXJDYXNlKCldO2lmKCFhZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtpZigic3RyaW5nIj09dHlwZW9mIHNlJiYoc2U9Qi5mcm9tKHNlKSksIkdDTSIhPT1hZS5tb2RlJiZzZS5s''@;'; put 'put ''ZW5ndGghPT1hZS5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK3NlLmxlbmd0aCk7aWYoInN0cmluZyI9PXR5cGVvZiBKJiYoSj1CLmZyb20oSikpLEoubGVuZ3RoIT09YWUua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIr''@;'; put 'put ''Si5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09YWUudHlwZT9uZXcgTWUoYWUubW9kdWxlLEosc2UsITApOiJhdXRoIj09PWFlLnR5cGU/bmV3IGdlKGFlLm1vZHVsZSxKLHNlLCEwKTpuZXcgbGUoYWUubW9kdWxlLEosc2UpfUwoODM4OTQpKGxlLFUpLGxlLnByb3RvdHlwZS5fdXBkYXRlPWZ1''@;'; put 'put ''bmN0aW9uKHEpe3RoaXMuX2NhY2hlLmFkZChxKTtmb3IodmFyIEosc2UsYWU9W107Sj10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpOylzZT10aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxKKSxhZS5wdXNoKHNlKTtyZXR1cm4gQi5jb25jYXQoYWUpfSxsZS5wcm90b3R5cGUuX2Zp''@;'; put 'put ''bmFsPWZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gZnVuY3Rpb24gVyhxKXt2YXIgSj1xWzE1XTtpZihKPDF8fEo+MTYpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7Zm9yKHZhciBzZT0tMTsr''@;'; put 'put ''K3NlPEo7KWlmKHFbc2UrKDE2LUopXSE9PUopdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTYhPT1KKXJldHVybiBxLnNsaWNlKDAsMTYtSil9KHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLHEpKTtpZihxKXRocm93IG5ldyBFcnJvcigiZGF0YSBub3QgbXVs''@;'; put 'put ''dGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LGxlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihxKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFxLHRoaXN9LFkucHJvdG90eXBlLmFkZD1mdW5jdGlvbihxKXt0aGlzLmNhY2hlPUIuY29uY2F0KFt0aGlzLmNhY2hlLHFdKX0s''@;'; put 'put ''WS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHEpe3ZhciBKO2lmKHEpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXJldHVybiBKPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxKfWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVy''@;'; put 'put ''biBKPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxKO3JldHVybiBudWxsfSxZLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfSxKZS5jcmVhdGVEZWNpcGhlcj1mdW5j''@;'; put 'put ''dGlvbiBlZShxLEope3ZhciBzZT1FW3EudG9Mb3dlckNhc2UoKV07aWYoIXNlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBhZT1aKEosITEsc2Uua2V5LHNlLml2KTtyZXR1cm4gTihxLGFlLmtleSxhZS5pdil9LEplLmNyZWF0ZURlY2lwaGVyaXY9Tn0s''@;'; put 'put ''OTY5MDA6KFhlLEplLEwpPT57dmFyIGdlPUwoMjkxNzEpLEI9TCg2OTM4MiksRT1MKDczNTAyKS5CdWZmZXIsTWU9TCgzODQ0MSksVT1MKDYxMDUyKSxRPUwoNDE4OTkpLFo9TCg0MDM0Nyk7ZnVuY3Rpb24gbGUocSxKLHNlKXtVLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IFcsdGhpcy5f''@;'; put 'put ''Y2lwaGVyPW5ldyBRLkFFUyhKKSx0aGlzLl9wcmV2PUUuZnJvbShzZSksdGhpcy5fbW9kZT1xLHRoaXMuX2F1dG9wYWRkaW5nPSEwfUwoODM4OTQpKGxlLFUpLGxlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHEpe3RoaXMuX2NhY2hlLmFkZChxKTtmb3IodmFyIEosc2UsYWU9W107Sj10''@;'; put 'put ''aGlzLl9jYWNoZS5nZXQoKTspc2U9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsSiksYWUucHVzaChzZSk7cmV0dXJuIEUuY29uY2F0KGFlKX07dmFyIFk9RS5hbGxvYygxNiwxNik7ZnVuY3Rpb24gVygpe3RoaXMuY2FjaGU9RS5hbGxvY1Vuc2FmZSgwKX1mdW5jdGlvbiBOKHEsSixzZSl7dmFy''@;'; put 'put ''IGFlPWdlW3EudG9Mb3dlckNhc2UoKV07aWYoIWFlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgSiYmKEo9RS5mcm9tKEopKSxKLmxlbmd0aCE9PWFlLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxl''@;'; put 'put ''bmd0aCAiK0oubGVuZ3RoKTtpZigic3RyaW5nIj09dHlwZW9mIHNlJiYoc2U9RS5mcm9tKHNlKSksIkdDTSIhPT1hZS5tb2RlJiZzZS5sZW5ndGghPT1hZS5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK3NlLmxlbmd0aCk7cmV0dXJuInN0cmVhbSI9PT1hZS50''@;'; put 'put ''eXBlP25ldyBNZShhZS5tb2R1bGUsSixzZSk6ImF1dGgiPT09YWUudHlwZT9uZXcgQihhZS5tb2R1bGUsSixzZSk6bmV3IGxlKGFlLm1vZHVsZSxKLHNlKX1sZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGlu''@;'; put 'put ''ZylyZXR1cm4gcT10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxxKSx0aGlzLl9jaXBoZXIuc2NydWIoKSxxO2lmKCFxLmVxdWFscyhZKSl0aHJvdyB0aGlzLl9jaXBoZXIuc2NydWIoKSxuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxsZS5wcm90b3R5cGUu''@;'; put 'put ''c2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24ocSl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhcSx0aGlzfSxXLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24ocSl7dGhpcy5jYWNoZT1FLmNvbmNhdChbdGhpcy5jYWNoZSxxXSl9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKHRoaXMuY2Fj''@;'; put 'put ''aGUubGVuZ3RoPjE1KXt2YXIgcT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHF9cmV0dXJuIG51bGx9LFcucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBxPTE2LXRoaXMuY2FjaGUubGVuZ3RoLEo9RS5hbGxv''@;'; put 'put ''Y1Vuc2FmZShxKSxzZT0tMTsrK3NlPHE7KUoud3JpdGVVSW50OChxLHNlKTtyZXR1cm4gRS5jb25jYXQoW3RoaXMuY2FjaGUsSl0pfSxKZS5jcmVhdGVDaXBoZXJpdj1OLEplLmNyZWF0ZUNpcGhlcj1mdW5jdGlvbiBlZShxLEope3ZhciBzZT1nZVtxLnRvTG93ZXJDYXNlKCldO2lmKCFzZSl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt2YXIgYWU9WihKLCExLHNlLmtleSxzZS5pdik7cmV0dXJuIE4ocSxhZS5rZXksYWUuaXYpfX0sNjg4NTc6KFhlLEplLEwpPT57dmFyIGdlPUwoNzM1MDIpLkJ1ZmZlcixCPWdlLmFsbG9jKDE2LDApO2Z1bmN0aW9uIE1l''@;'; put 'put ''KFEpe3ZhciBaPWdlLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gWi53cml0ZVVJbnQzMkJFKFFbMF0+Pj4wLDApLFoud3JpdGVVSW50MzJCRShRWzFdPj4+MCw0KSxaLndyaXRlVUludDMyQkUoUVsyXT4+PjAsOCksWi53cml0ZVVJbnQzMkJFKFFbM10+Pj4wLDEyKSxafWZ1bmN0aW9uIFUoUSl7''@;'; put 'put ''dGhpcy5oPVEsdGhpcy5zdGF0ZT1nZS5hbGxvYygxNiwwKSx0aGlzLmNhY2hlPWdlLmFsbG9jVW5zYWZlKDApfVUucHJvdG90eXBlLmdoYXNoPWZ1bmN0aW9uKFEpe2Zvcih2YXIgWj0tMTsrK1o8US5sZW5ndGg7KXRoaXMuc3RhdGVbWl1ePVFbWl07dGhpcy5fbXVsdGlwbHkoKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuX211bHRpcGx5PWZ1bmN0aW9uKCl7Zm9yKHZhciBpZSxZLFE9ZnVuY3Rpb24gRShRKXtyZXR1cm5bUS5yZWFkVUludDMyQkUoMCksUS5yZWFkVUludDMyQkUoNCksUS5yZWFkVUludDMyQkUoOCksUS5yZWFkVUludDMyQkUoMTIpXX0odGhpcy5oKSxaPVswLDAsMCwwXSxXPS0xOysr''@;'; put 'put ''VzwxMjg7KXtmb3IoMCE9KHRoaXMuc3RhdGVbfn4oVy84KV0mMTw8Ny1XJTgpJiYoWlswXV49UVswXSxaWzFdXj1RWzFdLFpbMl1ePVFbMl0sWlszXV49UVszXSksWT0wIT0oMSZRWzNdKSxpZT0zO2llPjA7aWUtLSlRW2llXT1RW2llXT4+PjF8KDEmUVtpZS0xXSk8PDMxO1FbMF09UVswXT4+''@;'; put 'put ''PjEsWSYmKFFbMF09UVswXV4yMjU8PDI0KX10aGlzLnN0YXRlPU1lKFopfSxVLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oUSl7dGhpcy5jYWNoZT1nZS5jb25jYXQoW3RoaXMuY2FjaGUsUV0pO2Zvcih2YXIgWjt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KVo9dGhpcy5jYWNoZS5zbGljZSgw''@;'; put 'put ''LDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2goWil9LFUucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKFEsWil7cmV0dXJuIHRoaXMuY2FjaGUubGVuZ3RoJiZ0aGlzLmdoYXNoKGdlLmNvbmNhdChbdGhpcy5jYWNoZSxCXSwxNikpLHRoaXMuZ2hhc2goTWUo''@;'; put 'put ''WzAsUSwwLFpdKSksdGhpcy5zdGF0ZX0sWGUuZXhwb3J0cz1VfSw3OTY4OlhlPT57WGUuZXhwb3J0cz1mdW5jdGlvbiBKZShMKXtmb3IodmFyIEIsZ2U9TC5sZW5ndGg7Z2UtLTspe2lmKDI1NSE9PShCPUwucmVhZFVJbnQ4KGdlKSkpe0IrKyxMLndyaXRlVUludDgoQixnZSk7YnJlYWt9TC53''@;'; put 'put ''cml0ZVVJbnQ4KDAsZ2UpfX19LDY0OTAzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDU4Nzg5KTtKZS5lbmNyeXB0PWZ1bmN0aW9uKEIsRSl7dmFyIE1lPWdlKEUsQi5fcHJldik7cmV0dXJuIEIuX3ByZXY9Qi5fY2lwaGVyLmVuY3J5cHRCbG9jayhNZSksQi5fcHJldn0sSmUuZGVjcnlwdD1mdW5j''@;'; put 'put ''dGlvbihCLEUpe3ZhciBNZT1CLl9wcmV2O0IuX3ByZXY9RTt2YXIgVT1CLl9jaXBoZXIuZGVjcnlwdEJsb2NrKEUpO3JldHVybiBnZShVLE1lKX19LDU5ODg1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDczNTAyKS5CdWZmZXIsQj1MKDU4Nzg5KTtmdW5jdGlvbiBFKE1lLFUsUSl7dmFyIFo9VS5s''@;'; put 'put ''ZW5ndGgsaWU9QihVLE1lLl9jYWNoZSk7cmV0dXJuIE1lLl9jYWNoZT1NZS5fY2FjaGUuc2xpY2UoWiksTWUuX3ByZXY9Z2UuY29uY2F0KFtNZS5fcHJldixRP1U6aWVdKSxpZX1KZS5lbmNyeXB0PWZ1bmN0aW9uKE1lLFUsUSl7Zm9yKHZhciBpZSxaPWdlLmFsbG9jVW5zYWZlKDApO1UubGVu''@;'; put 'put ''Z3RoOyl7aWYoMD09PU1lLl9jYWNoZS5sZW5ndGgmJihNZS5fY2FjaGU9TWUuX2NpcGhlci5lbmNyeXB0QmxvY2soTWUuX3ByZXYpLE1lLl9wcmV2PWdlLmFsbG9jVW5zYWZlKDApKSwhKE1lLl9jYWNoZS5sZW5ndGg8PVUubGVuZ3RoKSl7Wj1nZS5jb25jYXQoW1osRShNZSxVLFEpXSk7YnJl''@;'; put 'put ''YWt9Wj1nZS5jb25jYXQoW1osRShNZSxVLnNsaWNlKDAsaWU9TWUuX2NhY2hlLmxlbmd0aCksUSldKSxVPVUuc2xpY2UoaWUpfXJldHVybiBafX0sODY1MzE6KFhlLEplLEwpPT57dmFyIGdlPUwoNzM1MDIpLkJ1ZmZlcjtmdW5jdGlvbiBCKE1lLFUsUSl7Zm9yKHZhciBXLE4saWU9LTEsWT0w''@;'; put 'put ''OysraWU8ODspWSs9KDEyOCYoTj1NZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhNZS5fcHJldilbMF1eKFc9VSYxPDw3LWllPzEyODowKSkpPj5pZSU4LE1lLl9wcmV2PUUoTWUuX3ByZXYsUT9XOk4pO3JldHVybiBZfWZ1bmN0aW9uIEUoTWUsVSl7dmFyIFE9TWUubGVuZ3RoLFo9LTEsaWU9Z2Uu''@;'; put 'put ''YWxsb2NVbnNhZmUoTWUubGVuZ3RoKTtmb3IoTWU9Z2UuY29uY2F0KFtNZSxnZS5mcm9tKFtVXSldKTsrK1o8UTspaWVbWl09TWVbWl08PDF8TWVbWisxXT4+NztyZXR1cm4gaWV9SmUuZW5jcnlwdD1mdW5jdGlvbihNZSxVLFEpe2Zvcih2YXIgWj1VLmxlbmd0aCxpZT1nZS5hbGxvY1Vuc2Fm''@;'; put 'put ''ZShaKSxsZT0tMTsrK2xlPFo7KWllW2xlXT1CKE1lLFVbbGVdLFEpO3JldHVybiBpZX19LDIxNjQxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDczNTAyKS5CdWZmZXI7ZnVuY3Rpb24gQihFLE1lLFUpe3ZhciBaPUUuX2NpcGhlci5lbmNyeXB0QmxvY2soRS5fcHJldilbMF1eTWU7cmV0dXJuIEUu''@;'; put 'put ''X3ByZXY9Z2UuY29uY2F0KFtFLl9wcmV2LnNsaWNlKDEpLGdlLmZyb20oW1U/TWU6Wl0pXSksWn1KZS5lbmNyeXB0PWZ1bmN0aW9uKEUsTWUsVSl7Zm9yKHZhciBRPU1lLmxlbmd0aCxaPWdlLmFsbG9jVW5zYWZlKFEpLGllPS0xOysraWU8UTspWltpZV09QihFLE1lW2llXSxVKTtyZXR1cm4g''@;'; put 'put ''Wn19LDExMTUwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDU4Nzg5KSxCPUwoNzM1MDIpLkJ1ZmZlcixFPUwoNzk2OCk7ZnVuY3Rpb24gTWUoUSl7dmFyIFo9US5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhRLl9wcmV2KTtyZXR1cm4gRShRLl9wcmV2KSxafUplLmVuY3J5cHQ9ZnVuY3Rpb24oUSxa''@;'; put 'put ''KXt2YXIgaWU9TWF0aC5jZWlsKFoubGVuZ3RoLzE2KSxsZT1RLl9jYWNoZS5sZW5ndGg7US5fY2FjaGU9Qi5jb25jYXQoW1EuX2NhY2hlLEIuYWxsb2NVbnNhZmUoMTYqaWUpXSk7Zm9yKHZhciBZPTA7WTxpZTtZKyspe3ZhciBXPU1lKFEpLE49bGUrMTYqWTtRLl9jYWNoZS53cml0ZVVJbnQz''@;'; put 'put ''MkJFKFdbMF0sTiswKSxRLl9jYWNoZS53cml0ZVVJbnQzMkJFKFdbMV0sTis0KSxRLl9jYWNoZS53cml0ZVVJbnQzMkJFKFdbMl0sTis4KSxRLl9jYWNoZS53cml0ZVVJbnQzMkJFKFdbM10sTisxMil9dmFyIGVlPVEuX2NhY2hlLnNsaWNlKDAsWi5sZW5ndGgpO3JldHVybiBRLl9jYWNoZT1R''@;'; put 'put ''Ll9jYWNoZS5zbGljZShaLmxlbmd0aCksZ2UoWixlZSl9fSwyMTcwNDooWGUsSmUpPT57SmUuZW5jcnlwdD1mdW5jdGlvbihMLGdlKXtyZXR1cm4gTC5fY2lwaGVyLmVuY3J5cHRCbG9jayhnZSl9LEplLmRlY3J5cHQ9ZnVuY3Rpb24oTCxnZSl7cmV0dXJuIEwuX2NpcGhlci5kZWNyeXB0Qmxv''@;'; put 'put ''Y2soZ2UpfX0sMjkxNzE6KFhlLEplLEwpPT57dmFyIGdlPXtFQ0I6TCgyMTcwNCksQ0JDOkwoNjQ5MDMpLENGQjpMKDU5ODg1KSxDRkI4OkwoMjE2NDEpLENGQjE6TCg4NjUzMSksT0ZCOkwoODY4MTYpLENUUjpMKDExMTUwKSxHQ006TCgxMTE1MCl9LEI9TCg0NDk0Nik7Zm9yKHZhciBFIGlu''@;'; put 'put ''IEIpQltFXS5tb2R1bGU9Z2VbQltFXS5tb2RlXTtYZS5leHBvcnRzPUJ9LDg2ODE2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDU4Nzg5KTtmdW5jdGlvbiBCKEUpe3JldHVybiBFLl9wcmV2PUUuX2NpcGhlci5lbmNyeXB0QmxvY2soRS5fcHJldiksRS5fcHJldn1KZS5lbmNyeXB0PWZ1bmN0aW9u''@;'; put 'put ''KEUsTWUpe2Zvcig7RS5fY2FjaGUubGVuZ3RoPE1lLmxlbmd0aDspRS5fY2FjaGU9QnVmZmVyLmNvbmNhdChbRS5fY2FjaGUsQihFKV0pO3ZhciBVPUUuX2NhY2hlLnNsaWNlKDAsTWUubGVuZ3RoKTtyZXR1cm4gRS5fY2FjaGU9RS5fY2FjaGUuc2xpY2UoTWUubGVuZ3RoKSxnZShNZSxVKX19''@;'; put 'put ''LDM4NDQxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDQxODk5KSxCPUwoNzM1MDIpLkJ1ZmZlcixFPUwoNjEwNTIpO2Z1bmN0aW9uIFUoUSxaLGllLGxlKXtFLmNhbGwodGhpcyksdGhpcy5fY2lwaGVyPW5ldyBnZS5BRVMoWiksdGhpcy5fcHJldj1CLmZyb20oaWUpLHRoaXMuX2NhY2hlPUIuYWxs''@;'; put 'put ''b2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9Qi5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PWxlLHRoaXMuX21vZGU9UX1MKDgzODk0KShVLEUpLFUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oUSl7cmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLFEsdGhpcy5fZGVjcnlw''@;'; put 'put ''dCl9LFUucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3RoaXMuX2NpcGhlci5zY3J1YigpfSxYZS5leHBvcnRzPVV9LDU1MjU1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDkwMDQpLEI9TCg4NDMzMCksRT1MKDI5MTcxKSxNZT1MKDUxMTE1KSxVPUwoNDAzNDcpO2Z1bmN0aW9uIGllKFcsTixl''@;'; put 'put ''ZSl7aWYoVz1XLnRvTG93ZXJDYXNlKCksRVtXXSlyZXR1cm4gQi5jcmVhdGVDaXBoZXJpdihXLE4sZWUpO2lmKE1lW1ddKXJldHVybiBuZXcgZ2Uoe2tleTpOLGl2OmVlLG1vZGU6V30pO3Rocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpfWZ1bmN0aW9uIGxlKFcsTixl''@;'; put 'put ''ZSl7aWYoVz1XLnRvTG93ZXJDYXNlKCksRVtXXSlyZXR1cm4gQi5jcmVhdGVEZWNpcGhlcml2KFcsTixlZSk7aWYoTWVbV10pcmV0dXJuIG5ldyBnZSh7a2V5Ok4saXY6ZWUsbW9kZTpXLGRlY3J5cHQ6ITB9KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKX1KZS5j''@;'; put 'put ''cmVhdGVDaXBoZXI9SmUuQ2lwaGVyPWZ1bmN0aW9uIFEoVyxOKXt2YXIgZWUscTtpZihXPVcudG9Mb3dlckNhc2UoKSxFW1ddKWVlPUVbV10ua2V5LHE9RVtXXS5pdjtlbHNle2lmKCFNZVtXXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtlZT04Kk1lW1ddLmtl''@;'; put 'put ''eSxxPU1lW1ddLml2fXZhciBKPVUoTiwhMSxlZSxxKTtyZXR1cm4gaWUoVyxKLmtleSxKLml2KX0sSmUuY3JlYXRlQ2lwaGVyaXY9SmUuQ2lwaGVyaXY9aWUsSmUuY3JlYXRlRGVjaXBoZXI9SmUuRGVjaXBoZXI9ZnVuY3Rpb24gWihXLE4pe3ZhciBlZSxxO2lmKFc9Vy50b0xvd2VyQ2FzZSgp''@;'; put 'put ''LEVbV10pZWU9RVtXXS5rZXkscT1FW1ddLml2O2Vsc2V7aWYoIU1lW1ddKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2VlPTgqTWVbV10ua2V5LHE9TWVbV10uaXZ9dmFyIEo9VShOLCExLGVlLHEpO3JldHVybiBsZShXLEoua2V5LEouaXYpfSxKZS5jcmVhdGVE''@;'; put 'put ''ZWNpcGhlcml2PUplLkRlY2lwaGVyaXY9bGUsSmUubGlzdENpcGhlcnM9SmUuZ2V0Q2lwaGVycz1mdW5jdGlvbiBZKCl7cmV0dXJuIE9iamVjdC5rZXlzKE1lKS5jb25jYXQoQi5nZXRDaXBoZXJzKCkpfX0sOTAwNDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2MTA1MiksQj1MKDczNjg0KSxFPUwo''@;'; put 'put ''ODM4OTQpLE1lPUwoNzM1MDIpLkJ1ZmZlcixVPXsiZGVzLWVkZTMtY2JjIjpCLkNCQy5pbnN0YW50aWF0ZShCLkVERSksImRlcy1lZGUzIjpCLkVERSwiZGVzLWVkZS1jYmMiOkIuQ0JDLmluc3RhbnRpYXRlKEIuRURFKSwiZGVzLWVkZSI6Qi5FREUsImRlcy1jYmMiOkIuQ0JDLmluc3RhbnRp''@;'; put 'put ''YXRlKEIuREVTKSwiZGVzLWVjYiI6Qi5ERVN9O2Z1bmN0aW9uIFEoWil7Z2UuY2FsbCh0aGlzKTt2YXIgWSxpZT1aLm1vZGUudG9Mb3dlckNhc2UoKSxsZT1VW2llXTtZPVouZGVjcnlwdD8iZGVjcnlwdCI6ImVuY3J5cHQiO3ZhciBXPVoua2V5O01lLmlzQnVmZmVyKFcpfHwoVz1NZS5mcm9t''@;'; put 'put ''KFcpKSwoImRlcy1lZGUiPT09aWV8fCJkZXMtZWRlLWNiYyI9PT1pZSkmJihXPU1lLmNvbmNhdChbVyxXLnNsaWNlKDAsOCldKSk7dmFyIE49Wi5pdjtNZS5pc0J1ZmZlcihOKXx8KE49TWUuZnJvbShOKSksdGhpcy5fZGVzPWxlLmNyZWF0ZSh7a2V5OlcsaXY6Tix0eXBlOll9KX1VLmRlcz1V''@;'; put 'put ''WyJkZXMtY2JjIl0sVS5kZXMzPVVbImRlcy1lZGUzLWNiYyJdLFhlLmV4cG9ydHM9USxFKFEsZ2UpLFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oWil7cmV0dXJuIE1lLmZyb20odGhpcy5fZGVzLnVwZGF0ZShaKSl9LFEucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3JldHVybiBN''@;'; put 'put ''ZS5mcm9tKHRoaXMuX2Rlcy5maW5hbCgpKX19LDUxMTE1OihYZSxKZSk9PntKZVsiZGVzLWVjYiJdPXtrZXk6OCxpdjowfSxKZVsiZGVzLWNiYyJdPUplLmRlcz17a2V5OjgsaXY6OH0sSmVbImRlcy1lZGUzLWNiYyJdPUplLmRlczM9e2tleToyNCxpdjo4fSxKZVsiZGVzLWVkZTMiXT17a2V5''@;'; put 'put ''OjI0LGl2OjB9LEplWyJkZXMtZWRlLWNiYyJdPXtrZXk6MTYsaXY6OH0sSmVbImRlcy1lZGUiXT17a2V5OjE2LGl2OjB9fSw4NDY2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDk4NTM4KSxCPUwoNTM3NTMpO2Z1bmN0aW9uIE1lKFEpe3ZhciBpZSxaPVEubW9kdWx1cy5ieXRlTGVuZ3RoKCk7ZG97''@;'; put 'put ''aWU9bmV3IGdlKEIoWikpfXdoaWxlKGllLmNtcChRLm1vZHVsdXMpPj0wfHwhaWUudW1vZChRLnByaW1lMSl8fCFpZS51bW9kKFEucHJpbWUyKSk7cmV0dXJuIGllfWZ1bmN0aW9uIFUoUSxaKXt2YXIgaWU9ZnVuY3Rpb24gRShRKXt2YXIgWj1NZShRKTtyZXR1cm57YmxpbmRlcjpaLnRvUmVk''@;'; put 'put ''KGdlLm1vbnQoUS5tb2R1bHVzKSkucmVkUG93KG5ldyBnZShRLnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpLHVuYmxpbmRlcjpaLmludm0oUS5tb2R1bHVzKX19KFopLGxlPVoubW9kdWx1cy5ieXRlTGVuZ3RoKCksWT1uZXcgZ2UoUSkubXVsKGllLmJsaW5kZXIpLnVtb2QoWi5tb2R1bHVz''@;'; put 'put ''KSxXPVkudG9SZWQoZ2UubW9udChaLnByaW1lMSkpLE49WS50b1JlZChnZS5tb250KFoucHJpbWUyKSksZWU9Wi5jb2VmZmljaWVudCxxPVoucHJpbWUxLEo9Wi5wcmltZTIsc2U9Vy5yZWRQb3coWi5leHBvbmVudDEpLmZyb21SZWQoKSxhZT1OLnJlZFBvdyhaLmV4cG9uZW50MikuZnJvbVJl''@;'; put 'put ''ZCgpLGZlPXNlLmlzdWIoYWUpLmltdWwoZWUpLnVtb2QocSkuaW11bChKKTtyZXR1cm4gYWUuaWFkZChmZSkuaW11bChpZS51bmJsaW5kZXIpLnVtb2QoWi5tb2R1bHVzKS50b0FycmF5TGlrZShCdWZmZXIsImJlIixsZSl9VS5nZXRyPU1lLFhlLmV4cG9ydHM9VX0sODc3OTM6KFhlLEplLEwp''@;'; put 'put ''PT57WGUuZXhwb3J0cz1MKDc1MjA3KX0sMzkyMzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NDQ2KS5CdWZmZXIsQj1MKDk2Mzg2KSxFPUwoNjU2ODUpLE1lPUwoODM4OTQpLFU9TCg3OTk0NyksUT1MKDM5NDYpLFo9TCg3NTIwNyk7ZnVuY3Rpb24gaWUoTil7RS5Xcml0YWJsZS5jYWxsKHRoaXMp''@;'; put 'put ''O3ZhciBlZT1aW05dO2lmKCFlZSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWVzc2FnZSBkaWdlc3QiKTt0aGlzLl9oYXNoVHlwZT1lZS5oYXNoLHRoaXMuX2hhc2g9QihlZS5oYXNoKSx0aGlzLl90YWc9ZWUuaWQsdGhpcy5fc2lnblR5cGU9ZWUuc2lnbn1mdW5jdGlvbiBsZShOKXtFLldy''@;'; put 'put ''aXRhYmxlLmNhbGwodGhpcyk7dmFyIGVlPVpbTl07aWYoIWVlKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2VzdCIpO3RoaXMuX2hhc2g9QihlZS5oYXNoKSx0aGlzLl90YWc9ZWUuaWQsdGhpcy5fc2lnblR5cGU9ZWUuc2lnbn1mdW5jdGlvbiBZKE4pe3JldHVybiBuZXcg''@;'; put 'put ''aWUoTil9ZnVuY3Rpb24gVyhOKXtyZXR1cm4gbmV3IGxlKE4pfU9iamVjdC5rZXlzKFopLmZvckVhY2goZnVuY3Rpb24oTil7WltOXS5pZD1nZS5mcm9tKFpbTl0uaWQsImhleCIpLFpbTi50b0xvd2VyQ2FzZSgpXT1aW05dfSksTWUoaWUsRS5Xcml0YWJsZSksaWUucHJvdG90eXBlLl93cml0''@;'; put 'put ''ZT1mdW5jdGlvbihlZSxxLEope3RoaXMuX2hhc2gudXBkYXRlKGVlKSxKKCl9LGllLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZWUscSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlZSYmKGVlPWdlLmZyb20oZWUscSkpLHRoaXMuX2hhc2gudXBkYXRlKGVlKSx0aGlzfSxpZS5wcm90b3R5''@;'; put 'put ''cGUuc2lnbj1mdW5jdGlvbihlZSxxKXt0aGlzLmVuZCgpO3ZhciBKPXRoaXMuX2hhc2guZGlnZXN0KCksc2U9VShKLGVlLHRoaXMuX2hhc2hUeXBlLHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyk7cmV0dXJuIHE/c2UudG9TdHJpbmcocSk6c2V9LE1lKGxlLEUuV3JpdGFibGUpLGxlLnByb3Rv''@;'; put 'put ''dHlwZS5fd3JpdGU9ZnVuY3Rpb24oZWUscSxKKXt0aGlzLl9oYXNoLnVwZGF0ZShlZSksSigpfSxsZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGVlLHEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZWUmJihlZT1nZS5mcm9tKGVlLHEpKSx0aGlzLl9oYXNoLnVwZGF0ZShlZSksdGhpc30s''@;'; put 'put ''bGUucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihlZSxxLEopeyJzdHJpbmciPT10eXBlb2YgcSYmKHE9Z2UuZnJvbShxLEopKSx0aGlzLmVuZCgpO3ZhciBzZT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybiBRKHEsc2UsZWUsdGhpcy5fc2lnblR5cGUsdGhpcy5fdGFnKX0sWGUuZXhwb3J0''@;'; put 'put ''cz17U2lnbjpZLFZlcmlmeTpXLGNyZWF0ZVNpZ246WSxjcmVhdGVWZXJpZnk6V319LDc5OTQ3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg0NDYpLkJ1ZmZlcixCPUwoNzQ1MjkpLEU9TCg4NDY2KSxNZT1MKDU3NzE1KS5lYyxVPUwoOTg1MzgpLFE9TCgyMjc3MiksWj1MKDEzMDgpO2Z1bmN0aW9u''@;'; put 'put ''IE4oYWUsZmUsZGUsdmUpe2lmKChhZT1nZS5mcm9tKGFlLnRvQXJyYXkoKSkpLmxlbmd0aDxmZS5ieXRlTGVuZ3RoKCkpe3ZhciBBZT1nZS5hbGxvYyhmZS5ieXRlTGVuZ3RoKCktYWUubGVuZ3RoKTthZT1nZS5jb25jYXQoW0FlLGFlXSl9dmFyIGtlPWRlLmxlbmd0aCxTZT1mdW5jdGlvbiBx''@;'; put 'put ''KGFlLGZlKXthZT0oYWU9ZWUoYWUsZmUpKS5tb2QoZmUpO3ZhciBkZT1nZS5mcm9tKGFlLnRvQXJyYXkoKSk7aWYoZGUubGVuZ3RoPGZlLmJ5dGVMZW5ndGgoKSl7dmFyIHZlPWdlLmFsbG9jKGZlLmJ5dGVMZW5ndGgoKS1kZS5sZW5ndGgpO2RlPWdlLmNvbmNhdChbdmUsZGVdKX1yZXR1cm4g''@;'; put 'put ''ZGV9KGRlLGZlKSxJZT1nZS5hbGxvYyhrZSk7SWUuZmlsbCgxKTt2YXIgVGU9Z2UuYWxsb2Moa2UpO3JldHVybiBUZT1CKHZlLFRlKS51cGRhdGUoSWUpLnVwZGF0ZShnZS5mcm9tKFswXSkpLnVwZGF0ZShhZSkudXBkYXRlKFNlKS5kaWdlc3QoKSxJZT1CKHZlLFRlKS51cGRhdGUoSWUpLmRp''@;'; put 'put ''Z2VzdCgpLHtrOlRlPUIodmUsVGUpLnVwZGF0ZShJZSkudXBkYXRlKGdlLmZyb20oWzFdKSkudXBkYXRlKGFlKS51cGRhdGUoU2UpLmRpZ2VzdCgpLHY6SWU9Qih2ZSxUZSkudXBkYXRlKEllKS5kaWdlc3QoKX19ZnVuY3Rpb24gZWUoYWUsZmUpe3ZhciBkZT1uZXcgVShhZSksdmU9KGFlLmxl''@;'; put 'put ''bmd0aDw8MyktZmUuYml0TGVuZ3RoKCk7cmV0dXJuIHZlPjAmJmRlLmlzaHJuKHZlKSxkZX1mdW5jdGlvbiBKKGFlLGZlLGRlKXt2YXIgdmUsQWU7ZG97Zm9yKHZlPWdlLmFsbG9jKDApOzgqdmUubGVuZ3RoPGFlLmJpdExlbmd0aCgpOylmZS52PUIoZGUsZmUuaykudXBkYXRlKGZlLnYpLmRp''@;'; put 'put ''Z2VzdCgpLHZlPWdlLmNvbmNhdChbdmUsZmUudl0pO0FlPWVlKHZlLGFlKSxmZS5rPUIoZGUsZmUuaykudXBkYXRlKGZlLnYpLnVwZGF0ZShnZS5mcm9tKFswXSkpLmRpZ2VzdCgpLGZlLnY9QihkZSxmZS5rKS51cGRhdGUoZmUudikuZGlnZXN0KCl9d2hpbGUoLTEhPT1BZS5jbXAoYWUpKTty''@;'; put 'put ''ZXR1cm4gQWV9ZnVuY3Rpb24gc2UoYWUsZmUsZGUsdmUpe3JldHVybiBhZS50b1JlZChVLm1vbnQoZGUpKS5yZWRQb3coZmUpLmZyb21SZWQoKS5tb2QodmUpfVhlLmV4cG9ydHM9ZnVuY3Rpb24gaWUoYWUsZmUsZGUsdmUsQWUpe3ZhciBrZT1RKGZlKTtpZihrZS5jdXJ2ZSl7aWYoImVjZHNh''@;'; put 'put ''IiE9PXZlJiYiZWNkc2EvcnNhIiE9PXZlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBsZShhZSxmZSl7dmFyIGRlPVpbZmUuY3VydmUuam9pbigiLiIpXTtpZighZGUpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGN1cnZlICIrZmUu''@;'; put 'put ''Y3VydmUuam9pbigiLiIpKTt2YXIga2U9bmV3IE1lKGRlKS5rZXlGcm9tUHJpdmF0ZShmZS5wcml2YXRlS2V5KS5zaWduKGFlKTtyZXR1cm4gZ2UuZnJvbShrZS50b0RFUigpKX0oYWUsa2UpfWlmKCJkc2EiPT09a2UudHlwZSl7aWYoImRzYSIhPT12ZSl0aHJvdyBuZXcgRXJyb3IoIndyb25n''@;'; put 'put ''IHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gWShhZSxmZSxkZSl7Zm9yKHZhciBUZSx2ZT1mZS5wYXJhbXMucHJpdl9rZXksQWU9ZmUucGFyYW1zLnAsa2U9ZmUucGFyYW1zLnEsU2U9ZmUucGFyYW1zLmcsSWU9bmV3IFUoMCksRWU9ZWUoYWUsa2UpLm1vZChrZSksaGU9ITEs''@;'; put 'put ''Tz1OKHZlLGtlLGFlLGRlKTshMT09PWhlOylJZT1zZShTZSxUZT1KKGtlLE8sZGUpLEFlLGtlKSwwPT09KGhlPVRlLmludm0oa2UpLmltdWwoRWUuYWRkKHZlLm11bChJZSkpKS5tb2Qoa2UpKS5jbXBuKDApJiYoaGU9ITEsSWU9bmV3IFUoMCkpO3JldHVybiBmdW5jdGlvbiBXKGFlLGZlKXth''@;'; put 'put ''ZT1hZS50b0FycmF5KCksZmU9ZmUudG9BcnJheSgpLDEyOCZhZVswXSYmKGFlPVswXS5jb25jYXQoYWUpKSwxMjgmZmVbMF0mJihmZT1bMF0uY29uY2F0KGZlKSk7dmFyIHZlPVs0OCxhZS5sZW5ndGgrZmUubGVuZ3RoKzQsMixhZS5sZW5ndGhdO3JldHVybiB2ZT12ZS5jb25jYXQoYWUsWzIs''@;'; put 'put ''ZmUubGVuZ3RoXSxmZSksZ2UuZnJvbSh2ZSl9KEllLGhlKX0oYWUsa2UsZGUpfWlmKCJyc2EiIT09dmUmJiJlY2RzYS9yc2EiIT09dmUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlIik7YWU9Z2UuY29uY2F0KFtBZSxhZV0pO2Zvcih2YXIgU2U9a2UubW9kdWx1cy5i''@;'; put 'put ''eXRlTGVuZ3RoKCksSWU9WzAsMV07YWUubGVuZ3RoK0llLmxlbmd0aCsxPFNlOylJZS5wdXNoKDI1NSk7SWUucHVzaCgwKTtmb3IodmFyIFRlPS0xOysrVGU8YWUubGVuZ3RoOylJZS5wdXNoKGFlW1RlXSk7cmV0dXJuIEUoSWUsa2UpfSxYZS5leHBvcnRzLmdldEtleT1OLFhlLmV4cG9ydHMu''@;'; put 'put ''bWFrZUtleT1KfSwzOTQ2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg0NDYpLkJ1ZmZlcixCPUwoOTg1MzgpLEU9TCg1NzcxNSkuZWMsTWU9TCgyMjc3MiksVT1MKDEzMDgpO2Z1bmN0aW9uIGxlKFksVyl7aWYoWS5jbXBuKDApPD0wKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKTtpZihZ''@;'; put 'put ''LmNtcChXKT49Vyl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIil9WGUuZXhwb3J0cz1mdW5jdGlvbiBRKFksVyxOLGVlLHEpe3ZhciBKPU1lKE4pO2lmKCJlYyI9PT1KLnR5cGUpe2lmKCJlY2RzYSIhPT1lZSYmImVjZHNhL3JzYSIhPT1lZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1''@;'; put 'put ''YmxpYyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBaKFksVyxOKXt2YXIgZWU9VVtOLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKV07aWYoIWVlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK04uZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpKTtyZXR1cm4g''@;'; put 'put ''bmV3IEUoZWUpLnZlcmlmeShXLFksTi5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGEpfShZLFcsSil9aWYoImRzYSI9PT1KLnR5cGUpe2lmKCJkc2EiIT09ZWUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gaWUoWSxXLE4pe3ZhciBl''@;'; put 'put ''ZT1OLmRhdGEucCxxPU4uZGF0YS5xLEo9Ti5kYXRhLmcsc2U9Ti5kYXRhLnB1Yl9rZXksYWU9TWUuc2lnbmF0dXJlLmRlY29kZShZLCJkZXIiKSxmZT1hZS5zLGRlPWFlLnI7bGUoZmUscSksbGUoZGUscSk7dmFyIHZlPUIubW9udChlZSksQWU9ZmUuaW52bShxKTtyZXR1cm4gMD09PUoudG9S''@;'; put 'put ''ZWQodmUpLnJlZFBvdyhuZXcgQihXKS5tdWwoQWUpLm1vZChxKSkuZnJvbVJlZCgpLm11bChzZS50b1JlZCh2ZSkucmVkUG93KGRlLm11bChBZSkubW9kKHEpKS5mcm9tUmVkKCkpLm1vZChlZSkubW9kKHEpLmNtcChkZSl9KFksVyxKKX1pZigicnNhIiE9PWVlJiYiZWNkc2EvcnNhIiE9PWVl''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7Vz1nZS5jb25jYXQoW3EsV10pO2Zvcih2YXIgc2U9Si5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxhZT1bMV0sZmU9MDtXLmxlbmd0aCthZS5sZW5ndGgrMjxzZTspYWUucHVzaCgyNTUpLGZlKys7YWUucHVzaCgwKTtmb3Io''@;'; put 'put ''dmFyIGRlPS0xOysrZGU8Vy5sZW5ndGg7KWFlLnB1c2goV1tkZV0pO2FlPWdlLmZyb20oYWUpO3ZhciB2ZT1CLm1vbnQoSi5tb2R1bHVzKTtZPShZPW5ldyBCKFkpLnRvUmVkKHZlKSkucmVkUG93KG5ldyBCKEoucHVibGljRXhwb25lbnQpKSxZPWdlLmZyb20oWS5mcm9tUmVkKCkudG9BcnJh''@;'; put 'put ''eSgpKTt2YXIgQWU9ZmU8OD8xOjA7Zm9yKHNlPU1hdGgubWluKFkubGVuZ3RoLGFlLmxlbmd0aCksWS5sZW5ndGghPT1hZS5sZW5ndGgmJihBZT0xKSxkZT0tMTsrK2RlPHNlOylBZXw9WVtkZV1eYWVbZGVdO3JldHVybiAwPT09QWV9fSw4NDQ2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDkzMTcy''@;'; put 'put ''KSxCPWdlLkJ1ZmZlcjtmdW5jdGlvbiBFKFUsUSl7Zm9yKHZhciBaIGluIFUpUVtaXT1VW1pdfWZ1bmN0aW9uIE1lKFUsUSxaKXtyZXR1cm4gQihVLFEsWil9Qi5mcm9tJiZCLmFsbG9jJiZCLmFsbG9jVW5zYWZlJiZCLmFsbG9jVW5zYWZlU2xvdz9YZS5leHBvcnRzPWdlOihFKGdlLEplKSxK''@;'; put 'put ''ZS5CdWZmZXI9TWUpLE1lLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEIucHJvdG90eXBlKSxFKEIsTWUpLE1lLmZyb209ZnVuY3Rpb24oVSxRLFope2lmKCJudW1iZXIiPT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVy''@;'; put 'put ''biBCKFUsUSxaKX0sTWUuYWxsb2M9ZnVuY3Rpb24oVSxRLFope2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIGllPUIoVSk7cmV0dXJuIHZvaWQgMCE9PVE/InN0cmluZyI9PXR5cGVvZiBaP2llLmZpbGwo''@;'; put 'put ''USxaKTppZS5maWxsKFEpOmllLmZpbGwoMCksaWV9LE1lLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKFUpe2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIEIoVSl9LE1lLmFsbG9jVW5zYWZlU2xvdz1mdW5j''@;'; put 'put ''dGlvbihVKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBnZS5TbG93QnVmZmVyKFUpfX0sNTg3ODk6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEwsZ2Upe2Zvcih2YXIgQj1NYXRoLm1pbihMLmxl''@;'; put 'put ''bmd0aCxnZS5sZW5ndGgpLEU9bmV3IEJ1ZmZlcihCKSxNZT0wO01lPEI7KytNZSlFW01lXT1MW01lXV5nZVtNZV07cmV0dXJuIEV9fSw5MzE3MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNTM0MyksQj1MKDQ4NDYxKSxFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6bnVsbDtKZS5CdWZmZXI9WixKZS5TbG93QnVmZmVyPWZ1bmN0aW9uIGZlKF90KXtyZXR1cm4rX3QhPV90JiYoX3Q9MCksWi5hbGxvYygrX3QpfSxKZS5JTlNQRUNUX01B''@;'; put 'put ''WF9CWVRFUz01MDt2YXIgTWU9MjE0NzQ4MzY0NztmdW5jdGlvbiBRKF90KXtpZihfdD5NZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK190KyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgbnQ9bmV3IFVpbnQ4QXJyYXkoX3QpO3JldHVybiBPYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2YobnQsWi5wcm90b3R5cGUpLG50fWZ1bmN0aW9uIFooX3QsbnQscWUpe2lmKCJudW1iZXIiPT10eXBlb2YgX3Qpe2lmKCJzdHJpbmciPT10eXBlb2YgbnQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJp''@;'; put 'put ''bmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIFcoX3QpfXJldHVybiBpZShfdCxudCxxZSl9ZnVuY3Rpb24gaWUoX3QsbnQscWUpe2lmKCJzdHJpbmciPT10eXBlb2YgX3QpcmV0dXJuIGZ1bmN0aW9uIE4oX3QsbnQpe2lmKCgic3RyaW5nIiE9dHlwZW9mIG50fHwiIj09PW50KSYm''@;'; put 'put ''KG50PSJ1dGY4IiksIVouaXNFbmNvZGluZyhudCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitudCk7dmFyIHFlPTB8ZGUoX3QsbnQpLG90PVEocWUpLFJ0PW90LndyaXRlKF90LG50KTtyZXR1cm4gUnQhPT1xZSYmKG90PW90LnNsaWNlKDAsUnQpKSxvdH0oX3Qs''@;'; put 'put ''bnQpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhfdCkpcmV0dXJuIGZ1bmN0aW9uIHEoX3Qpe2lmKGZ0KF90LFVpbnQ4QXJyYXkpKXt2YXIgbnQ9bmV3IFVpbnQ4QXJyYXkoX3QpO3JldHVybiBKKG50LmJ1ZmZlcixudC5ieXRlT2Zmc2V0LG50LmJ5dGVMZW5ndGgpfXJldHVybiBlZShfdCl9KF90''@;'; put 'put ''KTtpZihudWxsPT1fdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBfdCk7aWYoZnQo''@;'; put 'put ''X3QsQXJyYXlCdWZmZXIpfHxfdCYmZnQoX3QuYnVmZmVyLEFycmF5QnVmZmVyKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciYmKGZ0KF90LFNoYXJlZEFycmF5QnVmZmVyKXx8X3QmJmZ0KF90LmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXJldHVybiBKKF90LG50''@;'; put 'put ''LHFlKTtpZigibnVtYmVyIj09dHlwZW9mIF90KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3ZhciBvdD1fdC52YWx1ZU9mJiZfdC52YWx1ZU9mKCk7aWYobnVsbCE9b3Qm''@;'; put 'put ''Jm90IT09X3QpcmV0dXJuIFouZnJvbShvdCxudCxxZSk7dmFyIFJ0PWZ1bmN0aW9uIHNlKF90KXtpZihaLmlzQnVmZmVyKF90KSl7dmFyIG50PTB8YWUoX3QubGVuZ3RoKSxxZT1RKG50KTtyZXR1cm4gMD09PXFlLmxlbmd0aHx8X3QuY29weShxZSwwLDAsbnQpLHFlfXJldHVybiB2b2lkIDAh''@;'; put 'put ''PT1fdC5sZW5ndGg/Im51bWJlciIhPXR5cGVvZiBfdC5sZW5ndGh8fEZ0KF90Lmxlbmd0aCk/USgwKTplZShfdCk6IkJ1ZmZlciI9PT1fdC50eXBlJiZBcnJheS5pc0FycmF5KF90LmRhdGEpP2VlKF90LmRhdGEpOnZvaWQgMH0oX3QpO2lmKFJ0KXJldHVybiBSdDtpZigidW5kZWZpbmVkIiE9''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmbnVsbCE9U3ltYm9sLnRvUHJpbWl0aXZlJiYiZnVuY3Rpb24iPT10eXBlb2YgX3RbU3ltYm9sLnRvUHJpbWl0aXZlXSlyZXR1cm4gWi5mcm9tKF90W1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLG50LHFlKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmly''@;'; put 'put ''c3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBfdCl9ZnVuY3Rpb24gbGUoX3Qpe2lmKCJudW1iZXIiIT10eXBlb2YgX3QpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihfdDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicrX3QrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpfWZ1bmN0aW9uIFcoX3Qpe3JldHVybiBsZShfdCksUShf''@;'; put 'put ''dDwwPzA6MHxhZShfdCkpfWZ1bmN0aW9uIGVlKF90KXtmb3IodmFyIG50PV90Lmxlbmd0aDwwPzA6MHxhZShfdC5sZW5ndGgpLHFlPVEobnQpLG90PTA7b3Q8bnQ7b3QrPTEpcWVbb3RdPTI1NSZfdFtvdF07cmV0dXJuIHFlfWZ1bmN0aW9uIEooX3QsbnQscWUpe2lmKG50PDB8fF90LmJ5dGVM''@;'; put 'put ''ZW5ndGg8bnQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJvZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKF90LmJ5dGVMZW5ndGg8bnQrKHFlfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7dmFyIG90''@;'; put 'put ''O3JldHVybiBvdD12b2lkIDA9PT1udCYmdm9pZCAwPT09cWU/bmV3IFVpbnQ4QXJyYXkoX3QpOnZvaWQgMD09PXFlP25ldyBVaW50OEFycmF5KF90LG50KTpuZXcgVWludDhBcnJheShfdCxudCxxZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKG90LFoucHJvdG90eXBlKSxvdH1mdW5jdGlvbiBh''@;'; put 'put ''ZShfdCl7aWYoX3Q+PU1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitNZS50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfF90fWZ1bmN0aW9uIGRlKF90LG50KXtpZihaLmlzQnVmZmVy''@;'; put 'put ''KF90KSlyZXR1cm4gX3QubGVuZ3RoO2lmKEFycmF5QnVmZmVyLmlzVmlldyhfdCl8fGZ0KF90LEFycmF5QnVmZmVyKSlyZXR1cm4gX3QuYnl0ZUxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIF90KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9u''@;'; put 'put ''ZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBfdCk7dmFyIHFlPV90Lmxlbmd0aCxvdD1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFvdCYmMD09PXFlKXJldHVybiAwO2Zvcih2YXIgUnQ9ITE7''@;'; put 'put ''Oylzd2l0Y2gobnQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHFlO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGd0KF90KS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAy''@;'; put 'put ''KnFlO2Nhc2UiaGV4IjpyZXR1cm4gcWU+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gbXQoX3QpLmxlbmd0aDtkZWZhdWx0OmlmKFJ0KXJldHVybiBvdD8tMTpndChfdCkubGVuZ3RoO250PSgiIitudCkudG9Mb3dlckNhc2UoKSxSdD0hMH19ZnVuY3Rpb24gdmUoX3QsbnQscWUpe3ZhciBvdD0h''@;'; put 'put ''MTtpZigodm9pZCAwPT09bnR8fG50PDApJiYobnQ9MCksbnQ+dGhpcy5sZW5ndGh8fCgodm9pZCAwPT09cWV8fHFlPnRoaXMubGVuZ3RoKSYmKHFlPXRoaXMubGVuZ3RoKSxxZTw9MCl8fChxZT4+Pj0wKTw9KG50Pj4+PTApKXJldHVybiIiO2ZvcihfdHx8KF90PSJ1dGY4Iik7Oylzd2l0Y2go''@;'; put 'put ''X3Qpe2Nhc2UiaGV4IjpyZXR1cm4gVCh0aGlzLG50LHFlKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBuZSh0aGlzLG50LHFlKTtjYXNlImFzY2lpIjpyZXR1cm4gUCh0aGlzLG50LHFlKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBWKHRoaXMsbnQscWUpO2Nhc2Ui''@;'; put 'put ''YmFzZTY0IjpyZXR1cm4geih0aGlzLG50LHFlKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIFModGhpcyxudCxxZSk7ZGVmYXVsdDppZihvdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK190KTtfdD0o''@;'; put 'put ''X3QrIiIpLnRvTG93ZXJDYXNlKCksb3Q9ITB9fWZ1bmN0aW9uIEFlKF90LG50LHFlKXt2YXIgb3Q9X3RbbnRdO190W250XT1fdFtxZV0sX3RbcWVdPW90fWZ1bmN0aW9uIGtlKF90LG50LHFlLG90LFJ0KXtpZigwPT09X3QubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgcWU/''@;'; put 'put ''KG90PXFlLHFlPTApOnFlPjIxNDc0ODM2NDc/cWU9MjE0NzQ4MzY0NzpxZTwtMjE0NzQ4MzY0OCYmKHFlPS0yMTQ3NDgzNjQ4KSxGdChxZT0rcWUpJiYocWU9UnQ/MDpfdC5sZW5ndGgtMSkscWU8MCYmKHFlPV90Lmxlbmd0aCtxZSkscWU+PV90Lmxlbmd0aCl7aWYoUnQpcmV0dXJuLTE7cWU9''@;'; put 'put ''X3QubGVuZ3RoLTF9ZWxzZSBpZihxZTwwKXtpZighUnQpcmV0dXJuLTE7cWU9MH1pZigic3RyaW5nIj09dHlwZW9mIG50JiYobnQ9Wi5mcm9tKG50LG90KSksWi5pc0J1ZmZlcihudCkpcmV0dXJuIDA9PT1udC5sZW5ndGg/LTE6U2UoX3QsbnQscWUsb3QsUnQpO2lmKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgbnQpcmV0dXJuIG50Jj0yNTUsImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/UnQ/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKF90LG50LHFlKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKF90LG50LHFlKTpT''@;'; put 'put ''ZShfdCxbbnRdLHFlLG90LFJ0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBTZShfdCxudCxxZSxvdCxSdCl7dmFyIFllLEN0PTEsY3Q9X3QubGVuZ3RoLE50PW50Lmxlbmd0aDtpZih2b2lkIDAhPT1vdCYmKCJ1''@;'; put 'put ''Y3MyIj09PShvdD1TdHJpbmcob3QpLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09b3R8fCJ1dGYxNmxlIj09PW90fHwidXRmLTE2bGUiPT09b3QpKXtpZihfdC5sZW5ndGg8Mnx8bnQubGVuZ3RoPDIpcmV0dXJuLTE7Q3Q9MixjdC89MixOdC89MixxZS89Mn1mdW5jdGlvbiB6ZShtbixwbil7''@;'; put 'put ''cmV0dXJuIDE9PT1DdD9tbltwbl06bW4ucmVhZFVJbnQxNkJFKHBuKkN0KX1pZihSdCl7dmFyIEF0PS0xO2ZvcihZZT1xZTtZZTxjdDtZZSsrKWlmKHplKF90LFllKT09PXplKG50LC0xPT09QXQ/MDpZZS1BdCkpe2lmKC0xPT09QXQmJihBdD1ZZSksWWUtQXQrMT09PU50KXJldHVybiBBdCpD''@;'; put 'put ''dH1lbHNlLTEhPT1BdCYmKFllLT1ZZS1BdCksQXQ9LTF9ZWxzZSBmb3IocWUrTnQ+Y3QmJihxZT1jdC1OdCksWWU9cWU7WWU+PTA7WWUtLSl7Zm9yKHZhciBqdD0hMCxKdD0wO0p0PE50O0p0KyspaWYoemUoX3QsWWUrSnQpIT09emUobnQsSnQpKXtqdD0hMTticmVha31pZihqdClyZXR1cm4g''@;'; put 'put ''WWV9cmV0dXJuLTF9ZnVuY3Rpb24gSWUoX3QsbnQscWUsb3Qpe3FlPU51bWJlcihxZSl8fDA7dmFyIFJ0PV90Lmxlbmd0aC1xZTtvdD8ob3Q9TnVtYmVyKG90KSk+UnQmJihvdD1SdCk6b3Q9UnQ7dmFyIEN0PW50Lmxlbmd0aDtvdD5DdC8yJiYob3Q9Q3QvMik7Zm9yKHZhciBjdD0wO2N0PG90''@;'; put 'put ''OysrY3Qpe3ZhciBOdD1wYXJzZUludChudC5zdWJzdHIoMipjdCwyKSwxNik7aWYoRnQoTnQpKXJldHVybiBjdDtfdFtxZStjdF09TnR9cmV0dXJuIGN0fWZ1bmN0aW9uIFRlKF90LG50LHFlLG90KXtyZXR1cm4gdnQoZ3QobnQsX3QubGVuZ3RoLXFlKSxfdCxxZSxvdCl9ZnVuY3Rpb24gRWUo''@;'; put 'put ''X3QsbnQscWUsb3Qpe3JldHVybiB2dChmdW5jdGlvbiB5dChfdCl7Zm9yKHZhciBudD1bXSxxZT0wO3FlPF90Lmxlbmd0aDsrK3FlKW50LnB1c2goMjU1Jl90LmNoYXJDb2RlQXQocWUpKTtyZXR1cm4gbnR9KG50KSxfdCxxZSxvdCl9ZnVuY3Rpb24gaGUoX3QsbnQscWUsb3Qpe3JldHVybiB2''@;'; put 'put ''dChtdChudCksX3QscWUsb3QpfWZ1bmN0aW9uIE8oX3QsbnQscWUsb3Qpe3JldHVybiB2dChmdW5jdGlvbiBwdChfdCxudCl7Zm9yKHZhciBxZSxvdCxDdD1bXSxjdD0wO2N0PF90Lmxlbmd0aCYmISgobnQtPTIpPDApOysrY3Qpb3Q9KHFlPV90LmNoYXJDb2RlQXQoY3QpKT4+OCxDdC5wdXNo''@;'; put 'put ''KHFlJTI1NiksQ3QucHVzaChvdCk7cmV0dXJuIEN0fShudCxfdC5sZW5ndGgtcWUpLF90LHFlLG90KX1mdW5jdGlvbiB6KF90LG50LHFlKXtyZXR1cm4gZ2UuZnJvbUJ5dGVBcnJheSgwPT09bnQmJnFlPT09X3QubGVuZ3RoP190Ol90LnNsaWNlKG50LHFlKSl9ZnVuY3Rpb24gbmUoX3QsbnQs''@;'; put 'put ''cWUpe3FlPU1hdGgubWluKF90Lmxlbmd0aCxxZSk7Zm9yKHZhciBvdD1bXSxSdD1udDtSdDxxZTspe3ZhciB6ZSxZZSxBdCxqdCxDdD1fdFtSdF0sY3Q9bnVsbCxOdD1DdD4yMzk/NDpDdD4yMjM/MzpDdD4xOTE/MjoxO2lmKFJ0K050PD1xZSlzd2l0Y2goTnQpe2Nhc2UgMTpDdDwxMjgmJihj''@;'; put 'put ''dD1DdCk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoemU9X3RbUnQrMV0pKSYmKGp0PSgzMSZDdCk8PDZ8NjMmemUpPjEyNyYmKGN0PWp0KTticmVhaztjYXNlIDM6WWU9X3RbUnQrMl0sMTI4PT0oMTkyJih6ZT1fdFtSdCsxXSkpJiYxMjg9PSgxOTImWWUpJiYoanQ9KDE1JkN0KTw8MTJ8KDYz''@;'; put 'put ''JnplKTw8Nnw2MyZZZSk+MjA0NyYmKGp0PDU1Mjk2fHxqdD41NzM0MykmJihjdD1qdCk7YnJlYWs7Y2FzZSA0OlllPV90W1J0KzJdLEF0PV90W1J0KzNdLDEyOD09KDE5MiYoemU9X3RbUnQrMV0pKSYmMTI4PT0oMTkyJlllKSYmMTI4PT0oMTkyJkF0KSYmKGp0PSgxNSZDdCk8PDE4fCg2MyZ6''@;'; put 'put ''ZSk8PDEyfCg2MyZZZSk8PDZ8NjMmQXQpPjY1NTM1JiZqdDwxMTE0MTEyJiYoY3Q9anQpfW51bGw9PT1jdD8oY3Q9NjU1MzMsTnQ9MSk6Y3Q+NjU1MzUmJihvdC5wdXNoKChjdC09NjU1MzYpPj4+MTAmMTAyM3w1NTI5NiksY3Q9NTYzMjB8MTAyMyZjdCksb3QucHVzaChjdCksUnQrPU50fXJl''@;'; put 'put ''dHVybiBmdW5jdGlvbiB4KF90KXt2YXIgbnQ9X3QubGVuZ3RoO2lmKG50PD00MDk2KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxfdCk7Zm9yKHZhciBxZT0iIixvdD0wO290PG50OylxZSs9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsX3Quc2xpY2Uo''@;'; put 'put ''b3Qsb3QrPTQwOTYpKTtyZXR1cm4gcWV9KG90KX1mdW5jdGlvbiBQKF90LG50LHFlKXt2YXIgb3Q9IiI7cWU9TWF0aC5taW4oX3QubGVuZ3RoLHFlKTtmb3IodmFyIFJ0PW50O1J0PHFlOysrUnQpb3QrPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3Jl90W1J0XSk7cmV0dXJuIG90fWZ1bmN0aW9u''@;'; put 'put ''IFYoX3QsbnQscWUpe3ZhciBvdD0iIjtxZT1NYXRoLm1pbihfdC5sZW5ndGgscWUpO2Zvcih2YXIgUnQ9bnQ7UnQ8cWU7KytSdClvdCs9U3RyaW5nLmZyb21DaGFyQ29kZShfdFtSdF0pO3JldHVybiBvdH1mdW5jdGlvbiBUKF90LG50LHFlKXt2YXIgb3Q9X3QubGVuZ3RoOyghbnR8fG50PDAp''@;'; put 'put ''JiYobnQ9MCksKCFxZXx8cWU8MHx8cWU+b3QpJiYocWU9b3QpO2Zvcih2YXIgUnQ9IiIsQ3Q9bnQ7Q3Q8cWU7KytDdClSdCs9b25bX3RbQ3RdXTtyZXR1cm4gUnR9ZnVuY3Rpb24gUyhfdCxudCxxZSl7Zm9yKHZhciBvdD1fdC5zbGljZShudCxxZSksUnQ9IiIsQ3Q9MDtDdDxvdC5sZW5ndGgt''@;'; put 'put ''MTtDdCs9MilSdCs9U3RyaW5nLmZyb21DaGFyQ29kZShvdFtDdF0rMjU2Km90W0N0KzFdKTtyZXR1cm4gUnR9ZnVuY3Rpb24gRihfdCxudCxxZSl7aWYoX3QlMSE9MHx8X3Q8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoX3QrbnQ+cWUpdGhyb3cgbmV3''@;'; put 'put ''IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiB5ZShfdCxudCxxZSxvdCxSdCxDdCl7aWYoIVouaXNCdWZmZXIoX3QpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFu''@;'; put 'put ''Y2UnKTtpZihudD5SdHx8bnQ8Q3QpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHFlK290Pl90Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gQ2UoX3QsbnQscWUsb3Qs''@;'; put 'put ''UnQsQ3Qpe2lmKHFlK290Pl90Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gRGUoX3QsbnQscWUsb3QsUnQpe3JldHVybiBudD0rbnQscWU+''@;'; put 'put ''Pj49MCxSdHx8Q2UoX3QsMCxxZSw0KSxCLndyaXRlKF90LG50LHFlLG90LDIzLDQpLHFlKzR9ZnVuY3Rpb24gUGUoX3QsbnQscWUsb3QsUnQpe3JldHVybiBudD0rbnQscWU+Pj49MCxSdHx8Q2UoX3QsMCxxZSw4KSxCLndyaXRlKF90LG50LHFlLG90LDUyLDgpLHFlKzh9SmUua01heExlbmd0''@;'; put 'put ''aD1NZSwhKFouVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbiBVKCl7dHJ5e3ZhciBfdD1uZXcgVWludDhBcnJheSgxKSxudD17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihudCxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNl''@;'; put 'put ''dFByb3RvdHlwZU9mKF90LG50KSw0Mj09PV90LmZvbygpfWNhdGNoKHFlKXtyZXR1cm4hMX19KCkpJiYidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJy''@;'; put 'put ''YXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC4iKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWi5wcm90b3R5cGUsInBhcmVudCIse2VudW1l''@;'; put 'put ''cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoWi5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCJvZmZzZXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKFouaXNCdWZmZXIodGhpcykpcmV0dXJu''@;'; put 'put ''IHRoaXMuYnl0ZU9mZnNldH19KSxaLnBvb2xTaXplPTgxOTIsWi5mcm9tPWZ1bmN0aW9uKF90LG50LHFlKXtyZXR1cm4gaWUoX3QsbnQscWUpfSxPYmplY3Quc2V0UHJvdG90eXBlT2YoWi5wcm90b3R5cGUsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihaLFVp''@;'; put 'put ''bnQ4QXJyYXkpLFouYWxsb2M9ZnVuY3Rpb24oX3QsbnQscWUpe3JldHVybiBmdW5jdGlvbiBZKF90LG50LHFlKXtyZXR1cm4gbGUoX3QpLF90PD0wP1EoX3QpOnZvaWQgMCE9PW50PyJzdHJpbmciPT10eXBlb2YgcWU/UShfdCkuZmlsbChudCxxZSk6UShfdCkuZmlsbChudCk6UShfdCl9KF90''@;'; put 'put ''LG50LHFlKX0sWi5hbGxvY1Vuc2FmZT1mdW5jdGlvbihfdCl7cmV0dXJuIFcoX3QpfSxaLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihfdCl7cmV0dXJuIFcoX3QpfSxaLmlzQnVmZmVyPWZ1bmN0aW9uKG50KXtyZXR1cm4gbnVsbCE9bnQmJiEwPT09bnQuX2lzQnVmZmVyJiZudCE9PVoucHJv''@;'; put 'put ''dG90eXBlfSxaLmNvbXBhcmU9ZnVuY3Rpb24obnQscWUpe2lmKGZ0KG50LFVpbnQ4QXJyYXkpJiYobnQ9Wi5mcm9tKG50LG50Lm9mZnNldCxudC5ieXRlTGVuZ3RoKSksZnQocWUsVWludDhBcnJheSkmJihxZT1aLmZyb20ocWUscWUub2Zmc2V0LHFlLmJ5dGVMZW5ndGgpKSwhWi5pc0J1ZmZl''@;'; put 'put ''cihudCl8fCFaLmlzQnVmZmVyKHFlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZihudD09PXFlKXJldHVybiAwO2Zvcih2YXIgb3Q9bnQubGVuZ3RoLFJ0PXFlLmxl''@;'; put 'put ''bmd0aCxDdD0wLGN0PU1hdGgubWluKG90LFJ0KTtDdDxjdDsrK0N0KWlmKG50W0N0XSE9PXFlW0N0XSl7b3Q9bnRbQ3RdLFJ0PXFlW0N0XTticmVha31yZXR1cm4gb3Q8UnQ/LTE6UnQ8b3Q/MTowfSxaLmlzRW5jb2Rpbmc9ZnVuY3Rpb24obnQpe3N3aXRjaChTdHJpbmcobnQpLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVy''@;'; put 'put ''biExfX0sWi5jb25jYXQ9ZnVuY3Rpb24obnQscWUpe2lmKCFBcnJheS5pc0FycmF5KG50KSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PW50Lmxlbmd0aClyZXR1cm4gWi5hbGxvYygwKTt2YXIgb3Q7aWYo''@;'; put 'put ''dm9pZCAwPT09cWUpZm9yKHFlPTAsb3Q9MDtvdDxudC5sZW5ndGg7KytvdClxZSs9bnRbb3RdLmxlbmd0aDt2YXIgUnQ9Wi5hbGxvY1Vuc2FmZShxZSksQ3Q9MDtmb3Iob3Q9MDtvdDxudC5sZW5ndGg7KytvdCl7dmFyIGN0PW50W290XTtpZihmdChjdCxVaW50OEFycmF5KSlDdCtjdC5sZW5n''@;'; put 'put ''dGg+UnQubGVuZ3RoP1ouZnJvbShjdCkuY29weShSdCxDdCk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoUnQsY3QsQ3QpO2Vsc2V7aWYoIVouaXNCdWZmZXIoY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMn''@;'; put 'put ''KTtjdC5jb3B5KFJ0LEN0KX1DdCs9Y3QubGVuZ3RofXJldHVybiBSdH0sWi5ieXRlTGVuZ3RoPWRlLFoucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxaLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgbnQ9dGhpcy5sZW5ndGg7aWYobnQlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigi''@;'; put 'put ''QnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHFlPTA7cWU8bnQ7cWUrPTIpQWUodGhpcyxxZSxxZSsxKTtyZXR1cm4gdGhpc30sWi5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIG50PXRoaXMubGVuZ3RoO2lmKG50JTQhPTApdGhyb3cg''@;'; put 'put ''bmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciBxZT0wO3FlPG50O3FlKz00KUFlKHRoaXMscWUscWUrMyksQWUodGhpcyxxZSsxLHFlKzIpO3JldHVybiB0aGlzfSxaLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgbnQ9dGhpcy5sZW5ndGg7aWYobnQlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHFlPTA7cWU8bnQ7cWUrPTgpQWUodGhpcyxxZSxxZSs3KSxBZSh0aGlzLHFlKzEscWUrNiksQWUodGhpcyxx''@;'; put 'put ''ZSsyLHFlKzUpLEFlKHRoaXMscWUrMyxxZSs0KTtyZXR1cm4gdGhpc30sWi5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9Wi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgbnQ9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1udD8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9uZSh0aGlz''@;'; put 'put ''LDAsbnQpOnZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sWi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKG50KXtpZighWi5pc0J1ZmZlcihudCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09bnR8fDA9PT1aLmNvbXBhcmUo''@;'; put 'put ''dGhpcyxudCl9LFoucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgbnQ9IiIscWU9SmUuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIG50PXRoaXMudG9TdHJpbmcoImhleCIsMCxxZSkucmVwbGFjZSgvKC57Mn0pL2csIiQxICIpLnRyaW0oKSx0aGlzLmxlbmd0aD5xZSYmKG50Kz0i''@;'; put 'put ''IC4uLiAiKSwiPEJ1ZmZlciAiK250KyI+In0sRSYmKFoucHJvdG90eXBlW0VdPVoucHJvdG90eXBlLmluc3BlY3QpLFoucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24obnQscWUsb3QsUnQsQ3Qpe2lmKGZ0KG50LFVpbnQ4QXJyYXkpJiYobnQ9Wi5mcm9tKG50LG50Lm9mZnNldCxudC5ieXRl''@;'; put 'put ''TGVuZ3RoKSksIVouaXNCdWZmZXIobnQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidGFyZ2V0IiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIG50KTtpZih2b2lkIDA9PT1xZSYmKHFlPTApLHZvaWQg''@;'; put 'put ''MD09PW90JiYob3Q9bnQ/bnQubGVuZ3RoOjApLHZvaWQgMD09PVJ0JiYoUnQ9MCksdm9pZCAwPT09Q3QmJihDdD10aGlzLmxlbmd0aCkscWU8MHx8b3Q+bnQubGVuZ3RofHxSdDwwfHxDdD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYo''@;'; put 'put ''UnQ+PUN0JiZxZT49b3QpcmV0dXJuIDA7aWYoUnQ+PUN0KXJldHVybi0xO2lmKHFlPj1vdClyZXR1cm4gMTtpZih0aGlzPT09bnQpcmV0dXJuIDA7Zm9yKHZhciBjdD0oQ3Q+Pj49MCktKFJ0Pj4+PTApLE50PShvdD4+Pj0wKS0ocWU+Pj49MCksemU9TWF0aC5taW4oY3QsTnQpLFllPXRoaXMu''@;'; put 'put ''c2xpY2UoUnQsQ3QpLEF0PW50LnNsaWNlKHFlLG90KSxqdD0wO2p0PHplOysranQpaWYoWWVbanRdIT09QXRbanRdKXtjdD1ZZVtqdF0sTnQ9QXRbanRdO2JyZWFrfXJldHVybiBjdDxOdD8tMTpOdDxjdD8xOjB9LFoucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKG50LHFlLG90KXtyZXR1''@;'; put 'put ''cm4tMSE9PXRoaXMuaW5kZXhPZihudCxxZSxvdCl9LFoucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24obnQscWUsb3Qpe3JldHVybiBrZSh0aGlzLG50LHFlLG90LCEwKX0sWi5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24obnQscWUsb3Qpe3JldHVybiBrZSh0aGlzLG50LHFlLG90''@;'; put 'put ''LCExKX0sWi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24obnQscWUsb3QsUnQpe2lmKHZvaWQgMD09PXFlKVJ0PSJ1dGY4IixvdD10aGlzLmxlbmd0aCxxZT0wO2Vsc2UgaWYodm9pZCAwPT09b3QmJiJzdHJpbmciPT10eXBlb2YgcWUpUnQ9cWUsb3Q9dGhpcy5sZW5ndGgscWU9MDtlbHNle2lm''@;'; put 'put ''KCFpc0Zpbml0ZShxZSkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3FlPj4+PTAsaXNGaW5pdGUob3QpPyhvdD4+Pj0wLHZvaWQgMD09PVJ0JiYoUnQ9InV0ZjgiKSk6KFJ0''@;'; put 'put ''PW90LG90PXZvaWQgMCl9dmFyIEN0PXRoaXMubGVuZ3RoLXFlO2lmKCh2b2lkIDA9PT1vdHx8b3Q+Q3QpJiYob3Q9Q3QpLG50Lmxlbmd0aD4wJiYob3Q8MHx8cWU8MCl8fHFlPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVy''@;'; put 'put ''IGJvdW5kcyIpO1J0fHwoUnQ9InV0ZjgiKTtmb3IodmFyIGN0PSExOzspc3dpdGNoKFJ0KXtjYXNlImhleCI6cmV0dXJuIEllKHRoaXMsbnQscWUsb3QpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIFRlKHRoaXMsbnQscWUsb3QpO2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNl''@;'; put 'put ''ImJpbmFyeSI6cmV0dXJuIEVlKHRoaXMsbnQscWUsb3QpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gaGUodGhpcyxudCxxZSxvdCk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBPKHRoaXMsbnQscWUsb3QpO2RlZmF1bHQ6aWYoY3QpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitSdCk7UnQ9KCIiK1J0KS50b0xvd2VyQ2FzZSgpLGN0PSEwfX0sWi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9h''@;'; put 'put ''cnJ8fHRoaXMsMCl9fSxaLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihudCxxZSl7dmFyIG90PXRoaXMubGVuZ3RoOyhudD1+fm50KTwwPyhudCs9b3QpPDAmJihudD0wKTpudD5vdCYmKG50PW90KSwocWU9dm9pZCAwPT09cWU/b3Q6fn5xZSk8MD8ocWUrPW90KTwwJiYocWU9MCk6cWU+b3Qm''@;'; put 'put ''JihxZT1vdCkscWU8bnQmJihxZT1udCk7dmFyIFJ0PXRoaXMuc3ViYXJyYXkobnQscWUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoUnQsWi5wcm90b3R5cGUpLFJ0fSxaLnByb3RvdHlwZS5yZWFkVWludExFPVoucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24obnQscWUsb3Qp''@;'; put 'put ''e250Pj4+PTAscWU+Pj49MCxvdHx8RihudCxxZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBSdD10aGlzW250XSxDdD0xLGN0PTA7KytjdDxxZSYmKEN0Kj0yNTYpOylSdCs9dGhpc1tudCtjdF0qQ3Q7cmV0dXJuIFJ0fSxaLnByb3RvdHlwZS5yZWFkVWludEJFPVoucHJvdG90eXBlLnJlYWRVSW50''@;'; put 'put ''QkU9ZnVuY3Rpb24obnQscWUsb3Qpe250Pj4+PTAscWU+Pj49MCxvdHx8RihudCxxZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBSdD10aGlzW250Ky0tcWVdLEN0PTE7cWU+MCYmKEN0Kj0yNTYpOylSdCs9dGhpc1tudCstLXFlXSpDdDtyZXR1cm4gUnR9LFoucHJvdG90eXBlLnJlYWRVaW50OD1a''@;'; put 'put ''LnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24obnQscWUpe3JldHVybiBudD4+Pj0wLHFlfHxGKG50LDEsdGhpcy5sZW5ndGgpLHRoaXNbbnRdfSxaLnByb3RvdHlwZS5yZWFkVWludDE2TEU9Wi5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gbnQ+Pj49''@;'; put 'put ''MCxxZXx8RihudCwyLHRoaXMubGVuZ3RoKSx0aGlzW250XXx0aGlzW250KzFdPDw4fSxaLnByb3RvdHlwZS5yZWFkVWludDE2QkU9Wi5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gbnQ+Pj49MCxxZXx8RihudCwyLHRoaXMubGVuZ3RoKSx0aGlzW250XTw8''@;'; put 'put ''OHx0aGlzW250KzFdfSxaLnByb3RvdHlwZS5yZWFkVWludDMyTEU9Wi5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gbnQ+Pj49MCxxZXx8RihudCw0LHRoaXMubGVuZ3RoKSwodGhpc1tudF18dGhpc1tudCsxXTw8OHx0aGlzW250KzJdPDwxNikrMTY3Nzcy''@;'; put 'put ''MTYqdGhpc1tudCszXX0sWi5wcm90b3R5cGUucmVhZFVpbnQzMkJFPVoucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihudCxxZSl7cmV0dXJuIG50Pj4+PTAscWV8fEYobnQsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tudF0rKHRoaXNbbnQrMV08PDE2fHRoaXNbbnQrMl08''@;'; put 'put ''PDh8dGhpc1tudCszXSl9LFoucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihudCxxZSxvdCl7bnQ+Pj49MCxxZT4+Pj0wLG90fHxGKG50LHFlLHRoaXMubGVuZ3RoKTtmb3IodmFyIFJ0PXRoaXNbbnRdLEN0PTEsY3Q9MDsrK2N0PHFlJiYoQ3QqPTI1Nik7KVJ0Kz10aGlzW250K2N0XSpD''@;'; put 'put ''dDtyZXR1cm4gUnQ+PShDdCo9MTI4KSYmKFJ0LT1NYXRoLnBvdygyLDgqcWUpKSxSdH0sWi5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKG50LHFlLG90KXtudD4+Pj0wLHFlPj4+PTAsb3R8fEYobnQscWUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgUnQ9cWUsQ3Q9MSxjdD10aGlzW250Ky0t''@;'; put 'put ''UnRdO1J0PjAmJihDdCo9MjU2KTspY3QrPXRoaXNbbnQrLS1SdF0qQ3Q7cmV0dXJuIGN0Pj0oQ3QqPTEyOCkmJihjdC09TWF0aC5wb3coMiw4KnFlKSksY3R9LFoucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gbnQ+Pj49MCxxZXx8RihudCwxLHRoaXMubGVuZ3Ro''@;'; put 'put ''KSwxMjgmdGhpc1tudF0/LTEqKDI1NS10aGlzW250XSsxKTp0aGlzW250XX0sWi5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24obnQscWUpe250Pj4+PTAscWV8fEYobnQsMix0aGlzLmxlbmd0aCk7dmFyIG90PXRoaXNbbnRdfHRoaXNbbnQrMV08PDg7cmV0dXJuIDMyNzY4Jm90PzQy''@;'; put 'put ''OTQ5MDE3NjB8b3Q6b3R9LFoucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKG50LHFlKXtudD4+Pj0wLHFlfHxGKG50LDIsdGhpcy5sZW5ndGgpO3ZhciBvdD10aGlzW250KzFdfHRoaXNbbnRdPDw4O3JldHVybiAzMjc2OCZvdD80Mjk0OTAxNzYwfG90Om90fSxaLnByb3RvdHlwZS5y''@;'; put 'put ''ZWFkSW50MzJMRT1mdW5jdGlvbihudCxxZSl7cmV0dXJuIG50Pj4+PTAscWV8fEYobnQsNCx0aGlzLmxlbmd0aCksdGhpc1tudF18dGhpc1tudCsxXTw8OHx0aGlzW250KzJdPDwxNnx0aGlzW250KzNdPDwyNH0sWi5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24obnQscWUpe3JldHVy''@;'; put 'put ''biBudD4+Pj0wLHFlfHxGKG50LDQsdGhpcy5sZW5ndGgpLHRoaXNbbnRdPDwyNHx0aGlzW250KzFdPDwxNnx0aGlzW250KzJdPDw4fHRoaXNbbnQrM119LFoucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gbnQ+Pj49MCxxZXx8RihudCw0LHRoaXMubGVuZ3Ro''@;'; put 'put ''KSxCLnJlYWQodGhpcyxudCwhMCwyMyw0KX0sWi5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24obnQscWUpe3JldHVybiBudD4+Pj0wLHFlfHxGKG50LDQsdGhpcy5sZW5ndGgpLEIucmVhZCh0aGlzLG50LCExLDIzLDQpfSxaLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24o''@;'; put 'put ''bnQscWUpe3JldHVybiBudD4+Pj0wLHFlfHxGKG50LDgsdGhpcy5sZW5ndGgpLEIucmVhZCh0aGlzLG50LCEwLDUyLDgpfSxaLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24obnQscWUpe3JldHVybiBudD4+Pj0wLHFlfHxGKG50LDgsdGhpcy5sZW5ndGgpLEIucmVhZCh0aGlzLG50''@;'; put 'put ''LCExLDUyLDgpfSxaLnByb3RvdHlwZS53cml0ZVVpbnRMRT1aLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihudCxxZSxvdCxSdCl7bnQ9K250LHFlPj4+PTAsb3Q+Pj49MCxSdHx8eWUodGhpcyxudCxxZSxvdCxNYXRoLnBvdygyLDgqb3QpLTEsMCk7dmFyIGN0PTEsTnQ9MDtmb3Io''@;'; put 'put ''dGhpc1txZV09MjU1Jm50OysrTnQ8b3QmJihjdCo9MjU2KTspdGhpc1txZStOdF09bnQvY3QmMjU1O3JldHVybiBxZStvdH0sWi5wcm90b3R5cGUud3JpdGVVaW50QkU9Wi5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24obnQscWUsb3QsUnQpe250PStudCxxZT4+Pj0wLG90Pj4+PTAs''@;'; put 'put ''UnR8fHllKHRoaXMsbnQscWUsb3QsTWF0aC5wb3coMiw4Km90KS0xLDApO3ZhciBjdD1vdC0xLE50PTE7Zm9yKHRoaXNbcWUrY3RdPTI1NSZudDstLWN0Pj0wJiYoTnQqPTI1Nik7KXRoaXNbcWUrY3RdPW50L050JjI1NTtyZXR1cm4gcWUrb3R9LFoucHJvdG90eXBlLndyaXRlVWludDg9Wi5w''@;'; put 'put ''cm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihudCxxZSxvdCl7cmV0dXJuIG50PStudCxxZT4+Pj0wLG90fHx5ZSh0aGlzLG50LHFlLDEsMjU1LDApLHRoaXNbcWVdPTI1NSZudCxxZSsxfSxaLnByb3RvdHlwZS53cml0ZVVpbnQxNkxFPVoucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVu''@;'; put 'put ''Y3Rpb24obnQscWUsb3Qpe3JldHVybiBudD0rbnQscWU+Pj49MCxvdHx8eWUodGhpcyxudCxxZSwyLDY1NTM1LDApLHRoaXNbcWVdPTI1NSZudCx0aGlzW3FlKzFdPW50Pj4+OCxxZSsyfSxaLnByb3RvdHlwZS53cml0ZVVpbnQxNkJFPVoucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rp''@;'; put 'put ''b24obnQscWUsb3Qpe3JldHVybiBudD0rbnQscWU+Pj49MCxvdHx8eWUodGhpcyxudCxxZSwyLDY1NTM1LDApLHRoaXNbcWVdPW50Pj4+OCx0aGlzW3FlKzFdPTI1NSZudCxxZSsyfSxaLnByb3RvdHlwZS53cml0ZVVpbnQzMkxFPVoucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24o''@;'; put 'put ''bnQscWUsb3Qpe3JldHVybiBudD0rbnQscWU+Pj49MCxvdHx8eWUodGhpcyxudCxxZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1txZSszXT1udD4+PjI0LHRoaXNbcWUrMl09bnQ+Pj4xNix0aGlzW3FlKzFdPW50Pj4+OCx0aGlzW3FlXT0yNTUmbnQscWUrNH0sWi5wcm90b3R5cGUud3JpdGVVaW50''@;'; put 'put ''MzJCRT1aLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKG50LHFlLG90KXtyZXR1cm4gbnQ9K250LHFlPj4+PTAsb3R8fHllKHRoaXMsbnQscWUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbcWVdPW50Pj4+MjQsdGhpc1txZSsxXT1udD4+PjE2LHRoaXNbcWUrMl09bnQ+Pj44LHRoaXNb''@;'; put 'put ''cWUrM109MjU1Jm50LHFlKzR9LFoucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24obnQscWUsb3QsUnQpe2lmKG50PStudCxxZT4+Pj0wLCFSdCl7dmFyIEN0PU1hdGgucG93KDIsOCpvdC0xKTt5ZSh0aGlzLG50LHFlLG90LEN0LTEsLUN0KX12YXIgY3Q9MCxOdD0xLHplPTA7Zm9yKHRo''@;'; put 'put ''aXNbcWVdPTI1NSZudDsrK2N0PG90JiYoTnQqPTI1Nik7KW50PDAmJjA9PT16ZSYmMCE9PXRoaXNbcWUrY3QtMV0mJih6ZT0xKSx0aGlzW3FlK2N0XT0obnQvTnQ+PjApLXplJjI1NTtyZXR1cm4gcWUrb3R9LFoucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24obnQscWUsb3QsUnQpe2lm''@;'; put 'put ''KG50PStudCxxZT4+Pj0wLCFSdCl7dmFyIEN0PU1hdGgucG93KDIsOCpvdC0xKTt5ZSh0aGlzLG50LHFlLG90LEN0LTEsLUN0KX12YXIgY3Q9b3QtMSxOdD0xLHplPTA7Zm9yKHRoaXNbcWUrY3RdPTI1NSZudDstLWN0Pj0wJiYoTnQqPTI1Nik7KW50PDAmJjA9PT16ZSYmMCE9PXRoaXNbcWUr''@;'; put 'put ''Y3QrMV0mJih6ZT0xKSx0aGlzW3FlK2N0XT0obnQvTnQ+PjApLXplJjI1NTtyZXR1cm4gcWUrb3R9LFoucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihudCxxZSxvdCl7cmV0dXJuIG50PStudCxxZT4+Pj0wLG90fHx5ZSh0aGlzLG50LHFlLDEsMTI3LC0xMjgpLG50PDAmJihudD0yNTUr''@;'; put 'put ''bnQrMSksdGhpc1txZV09MjU1Jm50LHFlKzF9LFoucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihudCxxZSxvdCl7cmV0dXJuIG50PStudCxxZT4+Pj0wLG90fHx5ZSh0aGlzLG50LHFlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW3FlXT0yNTUmbnQsdGhpc1txZSsxXT1udD4+PjgscWUr''@;'; put 'put ''Mn0sWi5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKG50LHFlLG90KXtyZXR1cm4gbnQ9K250LHFlPj4+PTAsb3R8fHllKHRoaXMsbnQscWUsMiwzMjc2NywtMzI3NjgpLHRoaXNbcWVdPW50Pj4+OCx0aGlzW3FlKzFdPTI1NSZudCxxZSsyfSxaLnByb3RvdHlwZS53cml0ZUludDMy''@;'; put 'put ''TEU9ZnVuY3Rpb24obnQscWUsb3Qpe3JldHVybiBudD0rbnQscWU+Pj49MCxvdHx8eWUodGhpcyxudCxxZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbcWVdPTI1NSZudCx0aGlzW3FlKzFdPW50Pj4+OCx0aGlzW3FlKzJdPW50Pj4+MTYsdGhpc1txZSszXT1udD4+PjI0LHFlKzR9''@;'; put 'put ''LFoucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihudCxxZSxvdCl7cmV0dXJuIG50PStudCxxZT4+Pj0wLG90fHx5ZSh0aGlzLG50LHFlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksbnQ8MCYmKG50PTQyOTQ5NjcyOTUrbnQrMSksdGhpc1txZV09bnQ+Pj4yNCx0aGlzW3FlKzFd''@;'; put 'put ''PW50Pj4+MTYsdGhpc1txZSsyXT1udD4+PjgsdGhpc1txZSszXT0yNTUmbnQscWUrNH0sWi5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKG50LHFlLG90KXtyZXR1cm4gRGUodGhpcyxudCxxZSwhMCxvdCl9LFoucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihudCxxZSxv''@;'; put 'put ''dCl7cmV0dXJuIERlKHRoaXMsbnQscWUsITEsb3QpfSxaLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKG50LHFlLG90KXtyZXR1cm4gUGUodGhpcyxudCxxZSwhMCxvdCl9LFoucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24obnQscWUsb3Qpe3JldHVybiBQZSh0aGlz''@;'; put 'put ''LG50LHFlLCExLG90KX0sWi5wcm90b3R5cGUuY29weT1mdW5jdGlvbihudCxxZSxvdCxSdCl7aWYoIVouaXNCdWZmZXIobnQpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlciIpO2lmKG90fHwob3Q9MCksIVJ0JiYwIT09UnQmJihSdD10aGlzLmxlbmd0''@;'; put 'put ''aCkscWU+PW50Lmxlbmd0aCYmKHFlPW50Lmxlbmd0aCkscWV8fChxZT0wKSxSdD4wJiZSdDxvdCYmKFJ0PW90KSxSdD09PW90fHwwPT09bnQubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYocWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJv''@;'; put 'put ''dW5kcyIpO2lmKG90PDB8fG90Pj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoUnQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtSdD50aGlzLmxlbmd0aCYmKFJ0PXRoaXMubGVuZ3RoKSxu''@;'; put 'put ''dC5sZW5ndGgtcWU8UnQtb3QmJihSdD1udC5sZW5ndGgtcWUrb3QpO3ZhciBDdD1SdC1vdDtyZXR1cm4gdGhpcz09PW50JiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbj90aGlzLmNvcHlXaXRoaW4ocWUsb3QsUnQpOlVpbnQ4QXJyYXkucHJvdG90''@;'; put 'put ''eXBlLnNldC5jYWxsKG50LHRoaXMuc3ViYXJyYXkob3QsUnQpLHFlKSxDdH0sWi5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihudCxxZSxvdCxSdCl7aWYoInN0cmluZyI9PXR5cGVvZiBudCl7aWYoInN0cmluZyI9PXR5cGVvZiBxZT8oUnQ9cWUscWU9MCxvdD10aGlzLmxlbmd0aCk6InN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiBvdCYmKFJ0PW90LG90PXRoaXMubGVuZ3RoKSx2b2lkIDAhPT1SdCYmInN0cmluZyIhPXR5cGVvZiBSdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBSdCYmIVouaXNFbmNvZGluZyhSdCkpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitSdCk7aWYoMT09PW50Lmxlbmd0aCl7dmFyIEN0PW50LmNoYXJDb2RlQXQoMCk7KCJ1dGY4Ij09PVJ0JiZDdDwxMjh8fCJsYXRpbjEiPT09UnQpJiYobnQ9Q3QpfX1lbHNlIm51bWJlciI9PXR5cGVvZiBudD9udCY9MjU1OiJi''@;'; put 'put ''b29sZWFuIj09dHlwZW9mIG50JiYobnQ9TnVtYmVyKG50KSk7aWYocWU8MHx8dGhpcy5sZW5ndGg8cWV8fHRoaXMubGVuZ3RoPG90KXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihvdDw9cWUpcmV0dXJuIHRoaXM7dmFyIGN0O2lmKHFlPj4+PTAsb3Q9dm9p''@;'; put 'put ''ZCAwPT09b3Q/dGhpcy5sZW5ndGg6b3Q+Pj4wLG50fHwobnQ9MCksIm51bWJlciI9PXR5cGVvZiBudClmb3IoY3Q9cWU7Y3Q8b3Q7KytjdCl0aGlzW2N0XT1udDtlbHNle3ZhciBOdD1aLmlzQnVmZmVyKG50KT9udDpaLmZyb20obnQsUnQpLHplPU50Lmxlbmd0aDtpZigwPT09emUpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcignVGhlIHZhbHVlICInK250KyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3IoY3Q9MDtjdDxvdC1xZTsrK2N0KXRoaXNbY3QrcWVdPU50W2N0JXplXX1yZXR1cm4gdGhpc307dmFyIFFlPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gZ3Qo''@;'; put 'put ''X3QsbnQpe250PW50fHwxLzA7Zm9yKHZhciBxZSxvdD1fdC5sZW5ndGgsUnQ9bnVsbCxDdD1bXSxjdD0wO2N0PG90OysrY3Qpe2lmKChxZT1fdC5jaGFyQ29kZUF0KGN0KSk+NTUyOTUmJnFlPDU3MzQ0KXtpZighUnQpe2lmKHFlPjU2MzE5KXsobnQtPTMpPi0xJiZDdC5wdXNoKDIzOSwxOTEs''@;'; put 'put ''MTg5KTtjb250aW51ZX1pZihjdCsxPT09b3QpeyhudC09Myk+LTEmJkN0LnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfVJ0PXFlO2NvbnRpbnVlfWlmKHFlPDU2MzIwKXsobnQtPTMpPi0xJiZDdC5wdXNoKDIzOSwxOTEsMTg5KSxSdD1xZTtjb250aW51ZX1xZT02NTUzNisoUnQtNTUyOTY8''@;'; put 'put ''PDEwfHFlLTU2MzIwKX1lbHNlIFJ0JiYobnQtPTMpPi0xJiZDdC5wdXNoKDIzOSwxOTEsMTg5KTtpZihSdD1udWxsLHFlPDEyOCl7aWYoKG50LT0xKTwwKWJyZWFrO0N0LnB1c2gocWUpfWVsc2UgaWYocWU8MjA0OCl7aWYoKG50LT0yKTwwKWJyZWFrO0N0LnB1c2gocWU+PjZ8MTkyLDYzJnFl''@;'; put 'put ''fDEyOCl9ZWxzZSBpZihxZTw2NTUzNil7aWYoKG50LT0zKTwwKWJyZWFrO0N0LnB1c2gocWU+PjEyfDIyNCxxZT4+NiY2M3wxMjgsNjMmcWV8MTI4KX1lbHNle2lmKCEocWU8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigobnQtPTQpPDApYnJlYWs7''@;'; put 'put ''Q3QucHVzaChxZT4+MTh8MjQwLHFlPj4xMiY2M3wxMjgscWU+PjYmNjN8MTI4LDYzJnFlfDEyOCl9fXJldHVybiBDdH1mdW5jdGlvbiBtdChfdCl7cmV0dXJuIGdlLnRvQnl0ZUFycmF5KGZ1bmN0aW9uICRlKF90KXtpZigoX3Q9KF90PV90LnNwbGl0KCI9IilbMF0pLnRyaW0oKS5yZXBsYWNl''@;'; put 'put ''KFFlLCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtfdC5sZW5ndGglNCE9MDspX3QrPSI9IjtyZXR1cm4gX3R9KF90KSl9ZnVuY3Rpb24gdnQoX3QsbnQscWUsb3Qpe2Zvcih2YXIgUnQ9MDtSdDxvdCYmIShSdCtxZT49bnQubGVuZ3RofHxSdD49X3QubGVuZ3RoKTsrK1J0KW50W1J0K3Fl''@;'; put 'put ''XT1fdFtSdF07cmV0dXJuIFJ0fWZ1bmN0aW9uIGZ0KF90LG50KXtyZXR1cm4gX3QgaW5zdGFuY2VvZiBudHx8bnVsbCE9X3QmJm51bGwhPV90LmNvbnN0cnVjdG9yJiZudWxsIT1fdC5jb25zdHJ1Y3Rvci5uYW1lJiZfdC5jb25zdHJ1Y3Rvci5uYW1lPT09bnQubmFtZX1mdW5jdGlvbiBGdChf''@;'; put 'put ''dCl7cmV0dXJuIF90IT1fdH12YXIgb249ZnVuY3Rpb24oKXtmb3IodmFyIF90PSIwMTIzNDU2Nzg5YWJjZGVmIixudD1uZXcgQXJyYXkoMjU2KSxxZT0wO3FlPDE2OysrcWUpZm9yKHZhciBvdD0xNipxZSxSdD0wO1J0PDE2OysrUnQpbnRbb3QrUnRdPV90W3FlXStfdFtSdF07cmV0dXJuIG50''@;'; put 'put ''fSgpfSw2MTA1MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3MzUwMikuQnVmZmVyLEI9TCgyOTUpLlRyYW5zZm9ybSxFPUwoNzMwNTQpLnM7ZnVuY3Rpb24gVShRKXtCLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT0ic3RyaW5nIj09dHlwZW9mIFEsdGhpcy5oYXNoTW9kZT90aGlzW1FdPXRoaXMu''@;'; put 'put ''X2ZpbmFsT3JEaWdlc3Q6dGhpcy5maW5hbD10aGlzLl9maW5hbE9yRGlnZXN0LHRoaXMuX2ZpbmFsJiYodGhpcy5fX2ZpbmFsPXRoaXMuX2ZpbmFsLHRoaXMuX2ZpbmFsPW51bGwpLHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9lbmNvZGluZz1udWxsfUwoODM4OTQpKFUsQiksVS5wcm90b3R5''@;'; put 'put ''cGUudXBkYXRlPWZ1bmN0aW9uKFEsWixpZSl7InN0cmluZyI9PXR5cGVvZiBRJiYoUT1nZS5mcm9tKFEsWikpO3ZhciBsZT10aGlzLl91cGRhdGUoUSk7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczooaWUmJihsZT10aGlzLl90b1N0cmluZyhsZSxpZSkpLGxlKX0sVS5wcm90b3R5cGUuc2V0''@;'; put 'put ''QXV0b1BhZGRpbmc9ZnVuY3Rpb24oKXt9LFUucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sVS5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5l''@;'; put 'put ''dyBFcnJvcigidHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxVLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LFUucHJvdG90eXBlLl90cmFuc2Zv''@;'; put 'put ''cm09ZnVuY3Rpb24oUSxaLGllKXt2YXIgbGU7dHJ5e3RoaXMuaGFzaE1vZGU/dGhpcy5fdXBkYXRlKFEpOnRoaXMucHVzaCh0aGlzLl91cGRhdGUoUSkpfWNhdGNoKFkpe2xlPVl9ZmluYWxseXtpZShsZSl9fSxVLnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oUSl7dmFyIFo7dHJ5e3RoaXMu''@;'; put 'put ''cHVzaCh0aGlzLl9fZmluYWwoKSl9Y2F0Y2goaWUpe1o9aWV9UShaKX0sVS5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3Q9ZnVuY3Rpb24oUSl7dmFyIFo9dGhpcy5fX2ZpbmFsKCl8fGdlLmFsbG9jKDApO3JldHVybiBRJiYoWj10aGlzLl90b1N0cmluZyhaLFEsITApKSxafSxVLnByb3RvdHlw''@;'; put 'put ''ZS5fdG9TdHJpbmc9ZnVuY3Rpb24oUSxaLGllKXtpZih0aGlzLl9kZWNvZGVyfHwodGhpcy5fZGVjb2Rlcj1uZXcgRShaKSx0aGlzLl9lbmNvZGluZz1aKSx0aGlzLl9lbmNvZGluZyE9PVopdGhyb3cgbmV3IEVycm9yKCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzIik7dmFyIGxlPXRoaXMuX2Rl''@;'; put 'put ''Y29kZXIud3JpdGUoUSk7cmV0dXJuIGllJiYobGUrPXRoaXMuX2RlY29kZXIuZW5kKCkpLGxlfSxYZS5leHBvcnRzPVV9LDc0NzQ2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDU3NzE1KSxCPUwoNDY0MjIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oWil7cmV0dXJuIG5ldyBNZShaKX07dmFyIEU9e3Nl''@;'; put 'put ''Y3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6''@;'; put 'put ''e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gTWUoUSl7dGhpcy5jdXJ2ZVR5cGU9RVtRXSx0aGlzLmN1cnZlVHlwZXx8KHRoaXMu''@;'; put 'put ''Y3VydmVUeXBlPXtuYW1lOlF9KSx0aGlzLmN1cnZlPW5ldyBnZS5lYyh0aGlzLmN1cnZlVHlwZS5uYW1lKSx0aGlzLmtleXM9dm9pZCAwfWZ1bmN0aW9uIFUoUSxaLGllKXtBcnJheS5pc0FycmF5KFEpfHwoUT1RLnRvQXJyYXkoKSk7dmFyIGxlPW5ldyBCdWZmZXIoUSk7aWYoaWUmJmxlLmxl''@;'; put 'put ''bmd0aDxpZSl7dmFyIFk9bmV3IEJ1ZmZlcihpZS1sZS5sZW5ndGgpO1kuZmlsbCgwKSxsZT1CdWZmZXIuY29uY2F0KFtZLGxlXSl9cmV0dXJuIFo/bGUudG9TdHJpbmcoWik6bGV9RS5wMjI0PUUuc2VjcDIyNHIxLEUucDI1Nj1FLnNlY3AyNTZyMT1FLnByaW1lMjU2djEsRS5wMTkyPUUuc2Vj''@;'; put 'put ''cDE5MnIxPUUucHJpbWUxOTJ2MSxFLnAzODQ9RS5zZWNwMzg0cjEsRS5wNTIxPUUuc2VjcDUyMXIxLE1lLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24oUSxaKXtyZXR1cm4gdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMuZ2V0UHVibGljS2V5KFEsWil9LE1l''@;'; put 'put ''LnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKFEsWixpZSl7cmV0dXJuIFo9Wnx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihRKXx8KFE9bmV3IEJ1ZmZlcihRLFopKSxVKHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhRKS5nZXRQdWJsaWMoKS5tdWwodGhpcy5rZXlzLmdldFByaXZh''@;'; put 'put ''dGUoKSkuZ2V0WCgpLGllLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSxNZS5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKFEsWil7dmFyIGllPXRoaXMua2V5cy5nZXRQdWJsaWMoImNvbXByZXNzZWQiPT09WiwhMCk7cmV0dXJuImh5YnJpZCI9PT1aJiYoaWVbMF09aWVbaWUu''@;'; put 'put ''bGVuZ3RoLTFdJTI/Nzo2KSxVKGllLFEpfSxNZS5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihRKXtyZXR1cm4gVSh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpLFEpfSxNZS5wcm90b3R5cGUuc2V0UHVibGljS2V5PWZ1bmN0aW9uKFEsWil7cmV0dXJuIFo9Wnx8InV0ZjgiLEJ1ZmZl''@;'; put 'put ''ci5pc0J1ZmZlcihRKXx8KFE9bmV3IEJ1ZmZlcihRLFopKSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhRKSx0aGlzfSxNZS5wcm90b3R5cGUuc2V0UHJpdmF0ZUtleT1mdW5jdGlvbihRLFope1o9Wnx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihRKXx8KFE9bmV3IEJ1ZmZlcihRLFopKTt2YXIg''@;'; put 'put ''aWU9bmV3IEIoUSk7cmV0dXJuIGllPWllLnRvU3RyaW5nKDE2KSx0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKGllKSx0aGlzfX0sNDY0MjI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlLEIpeyJ1c2Ugc3RyaWN0IjtmdW5j''@;'; put 'put ''dGlvbiBFKGhlLE8pe2lmKCFoZSl0aHJvdyBuZXcgRXJyb3IoT3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBNZShoZSxPKXtoZS5zdXBlcl89Tzt2YXIgej1mdW5jdGlvbigpe307ei5wcm90b3R5cGU9Ty5wcm90b3R5cGUsaGUucHJvdG90eXBlPW5ldyB6LGhlLnByb3RvdHlwZS5j''@;'; put 'put ''b25zdHJ1Y3Rvcj1oZX1mdW5jdGlvbiBVKGhlLE8seil7aWYoVS5pc0JOKGhlKSlyZXR1cm4gaGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWhlJiYoKCJsZSI9PT1PfHwiYmUiPT09TykmJih6PU8sTz0xMCksdGhp''@;'; put 'put ''cy5faW5pdChoZXx8MCxPfHwxMCx6fHwiYmUiKSl9dmFyIFE7Im9iamVjdCI9PXR5cGVvZiBnZT9nZS5leHBvcnRzPVU6Qi5CTj1VLFUuQk49VSxVLndvcmRTaXplPTI2O3RyeXtRPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZm''@;'; put 'put ''ZXI6TCg4NjIzKS5CdWZmZXJ9Y2F0Y2goaGUpe31mdW5jdGlvbiBaKGhlLE8pe3ZhciB6PWhlLmNoYXJDb2RlQXQoTyk7cmV0dXJuIHo+PTY1JiZ6PD03MD96LTU1Ono+PTk3JiZ6PD0xMDI/ei04Nzp6LTQ4JjE1fWZ1bmN0aW9uIGllKGhlLE8seil7dmFyIG5lPVooaGUseik7cmV0dXJuIHot''@;'; put 'put ''MT49TyYmKG5lfD1aKGhlLHotMSk8PDQpLG5lfWZ1bmN0aW9uIGxlKGhlLE8seixuZSl7Zm9yKHZhciB0ZT0wLHg9TWF0aC5taW4oaGUubGVuZ3RoLHopLFA9TztQPHg7UCsrKXt2YXIgVj1oZS5jaGFyQ29kZUF0KFApLTQ4O3RlKj1uZSx0ZSs9Vj49NDk/Vi00OSsxMDpWPj0xNz9WLTE3KzEw''@;'; put 'put ''OlZ9cmV0dXJuIHRlfVUuaXNCTj1mdW5jdGlvbihPKXtyZXR1cm4gTyBpbnN0YW5jZW9mIFV8fG51bGwhPT1PJiYib2JqZWN0Ij09dHlwZW9mIE8mJk8uY29uc3RydWN0b3Iud29yZFNpemU9PT1VLndvcmRTaXplJiZBcnJheS5pc0FycmF5KE8ud29yZHMpfSxVLm1heD1mdW5jdGlvbihPLHop''@;'; put 'put ''e3JldHVybiBPLmNtcCh6KT4wP086en0sVS5taW49ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik8MD9POnp9LFUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKE8seixuZSl7aWYoIm51bWJlciI9PXR5cGVvZiBPKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKE8seixuZSk7aWYoIm9iamVj''@;'; put 'put ''dCI9PXR5cGVvZiBPKXJldHVybiB0aGlzLl9pbml0QXJyYXkoTyx6LG5lKTsiaGV4Ij09PXomJih6PTE2KSxFKHo9PT0oMHx6KSYmej49MiYmejw9MzYpO3ZhciB0ZT0wOyItIj09PShPPU8udG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYodGUrKyx0aGlzLm5lZ2F0aXZlPTEp''@;'; put 'put ''LHRlPE8ubGVuZ3RoJiYoMTY9PT16P3RoaXMuX3BhcnNlSGV4KE8sdGUsbmUpOih0aGlzLl9wYXJzZUJhc2UoTyx6LHRlKSwibGUiPT09bmUmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LG5lKSkpfSxVLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihPLHosbmUpe088''@;'; put 'put ''MCYmKHRoaXMubmVnYXRpdmU9MSxPPS1PKSxPPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPXSx0aGlzLmxlbmd0aD0xKTpPPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEUoTzw5MDA3''@;'; put 'put ''MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PW5lJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixuZSl9LFUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oTyx6LG5lKXtp''@;'; put 'put ''ZihFKCJudW1iZXIiPT10eXBlb2YgTy5sZW5ndGgpLE8ubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKE8ubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHRlPTA7''@;'; put 'put ''dGU8dGhpcy5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT0wO3ZhciB4LFAsVj0wO2lmKCJiZSI9PT1uZSlmb3IodGU9Ty5sZW5ndGgtMSx4PTA7dGU+PTA7dGUtPTMpdGhpcy53b3Jkc1t4XXw9KFA9T1t0ZV18T1t0ZS0xXTw8OHxPW3RlLTJdPDwxNik8PFYmNjcxMDg4NjMsdGhpcy53b3Jk''@;'; put 'put ''c1t4KzFdPVA+Pj4yNi1WJjY3MTA4ODYzLChWKz0yNCk+PTI2JiYoVi09MjYseCsrKTtlbHNlIGlmKCJsZSI9PT1uZSlmb3IodGU9MCx4PTA7dGU8Ty5sZW5ndGg7dGUrPTMpdGhpcy53b3Jkc1t4XXw9KFA9T1t0ZV18T1t0ZSsxXTw8OHxPW3RlKzJdPDwxNik8PFYmNjcxMDg4NjMsdGhpcy53''@;'; put 'put ''b3Jkc1t4KzFdPVA+Pj4yNi1WJjY3MTA4ODYzLChWKz0yNCk+PTI2JiYoVi09MjYseCsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oTyx6LG5lKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKE8ubGVuZ3RoLXopLzYpLHRoaXMud29yZHM9bmV3''@;'; put 'put ''IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHRlPTA7dGU8dGhpcy5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT0wO3ZhciBWLHg9MCxQPTA7aWYoImJlIj09PW5lKWZvcih0ZT1PLmxlbmd0aC0xO3RlPj16O3RlLT0yKVY9aWUoTyx6LHRlKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2''@;'; put 'put ''MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7ZWxzZSBmb3IodGU9KE8ubGVuZ3RoLXopJTI9PTA/eisxOno7dGU8Ty5sZW5ndGg7dGUrPTIpVj1pZShPLHosdGUpPDx4LHRoaXMud29yZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4LHRoaXMud29y''@;'; put 'put ''ZHNbUCs9MV18PVY+Pj4yNik6eCs9ODt0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oTyx6LG5lKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgdGU9MCx4PTE7eDw9NjcxMDg4NjM7eCo9eil0ZSsrO3RlLS0seD14L3p8MDtmb3IodmFy''@;'; put 'put ''IFA9Ty5sZW5ndGgtbmUsVj1QJXRlLFQ9TWF0aC5taW4oUCxQLVYpK25lLFM9MCxGPW5lO0Y8VDtGKz10ZSlTPWxlKE8sRixGK3RlLHopLHRoaXMuaW11bG4oeCksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyk7aWYoMCE9PVYpe3ZhciB5''@;'; put 'put ''ZT0xO2ZvcihTPWxlKE8sRixPLmxlbmd0aCx6KSxGPTA7RjxWO0YrKyl5ZSo9ejt0aGlzLmltdWxuKHllKSx0aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlzLl9pYWRkbihTKX10aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oTyl7Ty53''@;'; put 'put ''b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgej0wO3o8dGhpcy5sZW5ndGg7eisrKU8ud29yZHNbel09dGhpcy53b3Jkc1t6XTtPLmxlbmd0aD10aGlzLmxlbmd0aCxPLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsTy5yZWQ9dGhpcy5yZWR9LFUucHJvdG90eXBlLmNsb25lPWZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIE89bmV3IFUobnVsbCk7cmV0dXJuIHRoaXMuY29weShPKSxPfSxVLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKE8pe2Zvcig7dGhpcy5sZW5ndGg8TzspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5zdHJpcD1mdW5j''@;'; put 'put ''dGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LFUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndv''@;'; put 'put ''cmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxVLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBZPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLFc9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sTj1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYw''@;'; put 'put ''NDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDEx''@;'; put 'put ''ODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBxKGhlLE8seil7ei5uZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlO3ZhciBuZT1oZS5sZW5ndGgr''@;'; put 'put ''Ty5sZW5ndGh8MDt6Lmxlbmd0aD1uZSxuZT1uZS0xfDA7dmFyIHRlPTB8aGUud29yZHNbMF0seD0wfE8ud29yZHNbMF0sUD10ZSp4LFQ9UC82NzEwODg2NHwwO3oud29yZHNbMF09NjcxMDg4NjMmUDtmb3IodmFyIFM9MTtTPG5lO1MrKyl7Zm9yKHZhciBGPVQ+Pj4yNix5ZT02NzEwODg2MyZU''@;'; put 'put ''LENlPU1hdGgubWluKFMsTy5sZW5ndGgtMSksRGU9TWF0aC5tYXgoMCxTLWhlLmxlbmd0aCsxKTtEZTw9Q2U7RGUrKylGKz0oUD0odGU9MHxoZS53b3Jkc1tTLURlfDBdKSooeD0wfE8ud29yZHNbRGVdKSt5ZSkvNjcxMDg4NjR8MCx5ZT02NzEwODg2MyZQO3oud29yZHNbU109MHx5ZSxUPTB8''@;'; put 'put ''Rn1yZXR1cm4gMCE9PVQ/ei53b3Jkc1tTXT0wfFQ6ei5sZW5ndGgtLSx6LnN0cmlwKCl9VS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oTyx6KXt2YXIgbmU7aWYoej0wfHp8fDEsMTY9PT0oTz1PfHwxMCl8fCJoZXgiPT09Tyl7bmU9IiI7Zm9yKHZhciB0ZT0wLHg9MCxQPTA7UDx0aGlz''@;'; put 'put ''Lmxlbmd0aDtQKyspe3ZhciBWPXRoaXMud29yZHNbUF0sVD0oMTY3NzcyMTUmKFY8PHRlfHgpKS50b1N0cmluZygxNik7bmU9MCE9KHg9Vj4+PjI0LXRlJjE2Nzc3MjE1KXx8UCE9PXRoaXMubGVuZ3RoLTE/WVs2LVQubGVuZ3RoXStUK25lOlQrbmUsKHRlKz0yKT49MjYmJih0ZS09MjYsUC0t''@;'; put 'put ''KX1mb3IoMCE9PXgmJihuZT14LnRvU3RyaW5nKDE2KStuZSk7bmUubGVuZ3RoJXohPTA7KW5lPSIwIituZTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihuZT0iLSIrbmUpLG5lfWlmKE89PT0oMHxPKSYmTz49MiYmTzw9MzYpe3ZhciBTPVdbT10sRj1OW09dO25lPSIiO3ZhciB5ZT10aGlz''@;'; put 'put ''LmNsb25lKCk7Zm9yKHllLm5lZ2F0aXZlPTA7IXllLmlzWmVybygpOyl7dmFyIENlPXllLm1vZG4oRikudG9TdHJpbmcoTyk7bmU9KHllPXllLmlkaXZuKEYpKS5pc1plcm8oKT9DZStuZTpZW1MtQ2UubGVuZ3RoXStDZStuZX1mb3IodGhpcy5pc1plcm8oKSYmKG5lPSIwIituZSk7bmUubGVu''@;'; put 'put ''Z3RoJXohPTA7KW5lPSIwIituZTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihuZT0iLSIrbmUpLG5lfUUoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sVS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgTz10aGlzLndvcmRzWzBdO3JldHVybiAyPT09''@;'; put 'put ''dGhpcy5sZW5ndGg/Tys9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP08rPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZFKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3Jl''@;'; put 'put ''IHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tTzpPfSxVLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LFUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKE8seil7cmV0dXJuIEUodm9pZCAwIT09USksdGhpcy50b0FycmF5''@;'; put 'put ''TGlrZShRLE8seil9LFUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZT10aGlzLmJ5dGVMZW5ndGgoKSx4PW5lfHxNYXRoLm1heCgx''@;'; put 'put ''LHRlKTtFKHRlPD14LCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRSh4PjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgVCxTLFA9ImxlIj09PXosVj1uZXcgTyh4KSxGPXRoaXMuY2xvbmUoKTtpZihQKXtmb3IoUz0wOyFG''@;'; put 'put ''LmlzWmVybygpO1MrKylUPUYuYW5kbG4oMjU1KSxGLml1c2hybig4KSxWW1NdPVQ7Zm9yKDtTPHg7UysrKVZbU109MH1lbHNle2ZvcihTPTA7Uzx4LXRlO1MrKylWW1NdPTA7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVlt4LVMtMV09VH1yZXR1''@;'; put 'put ''cm4gVn0sVS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKE8pe3JldHVybiAzMi1NYXRoLmNsejMyKE8pfTpmdW5jdGlvbihPKXt2YXIgej1PLG5lPTA7cmV0dXJuIHo+PTQwOTYmJihuZSs9MTMsej4+Pj0xMyksej49NjQmJihuZSs9Nyx6Pj4+PTcpLHo+PTgmJihu''@;'; put 'put ''ZSs9NCx6Pj4+PTQpLHo+PTImJihuZSs9Mix6Pj4+PTIpLG5lK3p9LFUucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihPKXtpZigwPT09TylyZXR1cm4gMjY7dmFyIHo9TyxuZT0wO3JldHVybiAwPT0oODE5MSZ6KSYmKG5lKz0xMyx6Pj4+PTEzKSwwPT0oMTI3JnopJiYobmUrPTcsej4+''@;'; put 'put ''Pj03KSwwPT0oMTUmeikmJihuZSs9NCx6Pj4+PTQpLDA9PSgzJnopJiYobmUrPTIsej4+Pj0yKSwwPT0oMSZ6KSYmbmUrKyxuZX0sVS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIHo9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAy''@;'; put 'put ''NioodGhpcy5sZW5ndGgtMSkren0sVS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgTz0wLHo9MDt6PHRoaXMubGVuZ3RoO3orKyl7dmFyIG5lPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbel0pO2lmKE8rPW5lLDI2IT09''@;'; put 'put ''bmUpYnJlYWt9cmV0dXJuIE99LFUucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LFUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihPKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihP''@;'; put 'put ''KS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LFUucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnRlc3RuKE8tMSk/dGhpcy5ub3RuKE8pLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LFUucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlfSxVLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sVS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sVS5wcm90b3R5cGUuaXVvcj1mdW5j''@;'; put 'put ''dGlvbihPKXtmb3IoO3RoaXMubGVuZ3RoPE8ubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB6PTA7ejxPLmxlbmd0aDt6KyspdGhpcy53b3Jkc1t6XT10aGlzLndvcmRzW3pdfE8ud29yZHNbel07cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaW9y''@;'; put 'put ''PWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1b3IoTyl9LFUucHJvdG90eXBlLm9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKE8pOk8uY2xvbmUoKS5pb3IodGhpcyl9LFUu''@;'; put 'put ''cHJvdG90eXBlLnVvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoTyk6Ty5jbG9uZSgpLml1b3IodGhpcyl9LFUucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKE8pe3ZhciB6O3o9dGhpcy5sZW5ndGg+Ty5sZW5ndGg/Tzp0aGlzO2Zv''@;'; put 'put ''cih2YXIgbmU9MDtuZTx6Lmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXRoaXMud29yZHNbbmVdJk8ud29yZHNbbmVdO3JldHVybiB0aGlzLmxlbmd0aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRp''@;'; put 'put ''dmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoTyl9LFUucHJvdG90eXBlLmFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoTyk6Ty5jbG9uZSgpLmlhbmQodGhpcyl9LFUucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oTyl7cmV0dXJu''@;'; put 'put ''IHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChPKTpPLmNsb25lKCkuaXVhbmQodGhpcyl9LFUucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKE8pe3ZhciB6LG5lO3RoaXMubGVuZ3RoPk8ubGVuZ3RoPyh6PXRoaXMsbmU9Tyk6KHo9TyxuZT10aGlzKTtmb3IodmFyIHRl''@;'; put 'put ''PTA7dGU8bmUubGVuZ3RoO3RlKyspdGhpcy53b3Jkc1t0ZV09ei53b3Jkc1t0ZV1ebmUud29yZHNbdGVdO2lmKHRoaXMhPT16KWZvcig7dGU8ei5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT16LndvcmRzW3RlXTtyZXR1cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxV''@;'; put 'put ''LnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1eG9yKE8pfSxVLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKE8pOk8uY2xv''@;'; put 'put ''bmUoKS5peG9yKHRoaXMpfSxVLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoTyk6Ty5jbG9uZSgpLml1eG9yKHRoaXMpfSxVLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgTyYmTz49MCk7dmFyIHo9MHxNYXRoLmNlaWwoTy8yNiksbmU9TyUyNjt0aGlzLl9leHBhbmQoeiksbmU+MCYmei0tO2Zvcih2YXIgdGU9MDt0ZTx6O3RlKyspdGhpcy53b3Jkc1t0ZV09NjcxMDg4NjMmfnRoaXMud29yZHNbdGVdO3JldHVybiBuZT4wJiYodGhpcy53b3Jkc1t0ZV09fnRo''@;'; put 'put ''aXMud29yZHNbdGVdJjY3MTA4ODYzPj4yNi1uZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oTyl9LFUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oTyx6KXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFy''@;'; put 'put ''IG5lPU8vMjZ8MCx0ZT1PJTI2O3JldHVybiB0aGlzLl9leHBhbmQobmUrMSksdGhpcy53b3Jkc1tuZV09ej90aGlzLndvcmRzW25lXXwxPDx0ZTp0aGlzLndvcmRzW25lXSZ+KDE8PHRlKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyl7dmFyIHosbmUsdGU7aWYo''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZSlyZXR1cm4gTy5uZWdhdGl2ZT0wLHo9''@;'; put 'put ''dGhpcy5pc3ViKE8pLE8ubmVnYXRpdmU9MSx6Ll9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPk8ubGVuZ3RoPyhuZT10aGlzLHRlPU8pOihuZT1PLHRlPXRoaXMpO2Zvcih2YXIgeD0wLFA9MDtQPHRlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxuZS53b3Jkc1tQXSkr''@;'; put 'put ''KDB8dGUud29yZHNbUF0pK3gpLHg9ej4+PjI2O2Zvcig7MCE9PXgmJlA8bmUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3MTA4ODYzJih6PSgwfG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtpZih0aGlzLmxlbmd0aD1uZS5sZW5ndGgsMCE9PXgpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09''@;'; put 'put ''eCx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYobmUhPT10aGlzKWZvcig7UDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09bmUud29yZHNbUF07cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPKXt2YXIgejtyZXR1cm4gMCE9PU8ubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlPyhPLm5lZ2F0aXZlPTAsej10aGlzLnN1YihPKSxPLm5lZ2F0aXZlXj0xLHopOjA9PT1PLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHo9Ty5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHopOnRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUo''@;'; put 'put ''KS5pYWRkKE8pOk8uY2xvbmUoKS5pYWRkKHRoaXMpfSxVLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKE8pe2lmKDAhPT1PLm5lZ2F0aXZlKXtPLm5lZ2F0aXZlPTA7dmFyIHo9dGhpcy5pYWRkKE8pO3JldHVybiBPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgdGUseCxuZT10aGlzLmNtcChPKTtpZigwPT09bmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO25l''@;'; put 'put ''PjA/KHRlPXRoaXMseD1PKToodGU9Tyx4PXRoaXMpO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKylQPSh6PSgwfHRlLndvcmRzW1ZdKS0oMHx4LndvcmRzW1ZdKStQKT4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZ6O2Zvcig7MCE9PVAmJlY8dGUubGVuZ3RoO1YrKylQPSh6PSgw''@;'; put 'put ''fHRlLndvcmRzW1ZdKStQKT4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZ6O2lmKDA9PT1QJiZWPHRlLmxlbmd0aCYmdGUhPT10aGlzKWZvcig7Vjx0ZS5sZW5ndGg7VisrKXRoaXMud29yZHNbVl09dGUud29yZHNbVl07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3Ro''@;'; put 'put ''LFYpLHRlIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKE8pfTt2YXIgSj1mdW5jdGlvbihPLHosbmUpe3ZhciBULFMsRix0ZT1PLndvcmRzLHg9ei53b3JkcyxQPW5lLndv''@;'; put 'put ''cmRzLFY9MCx5ZT0wfHRlWzBdLENlPTgxOTEmeWUsRGU9eWU+Pj4xMyxQZT0wfHRlWzFdLFFlPTgxOTEmUGUsJGU9UGU+Pj4xMyxndD0wfHRlWzJdLHl0PTgxOTEmZ3QscHQ9Z3Q+Pj4xMyxtdD0wfHRlWzNdLHZ0PTgxOTEmbXQsZnQ9bXQ+Pj4xMyxGdD0wfHRlWzRdLG9uPTgxOTEmRnQsX3Q9''@;'; put 'put ''RnQ+Pj4xMyxudD0wfHRlWzVdLHFlPTgxOTEmbnQsb3Q9bnQ+Pj4xMyxSdD0wfHRlWzZdLEN0PTgxOTEmUnQsY3Q9UnQ+Pj4xMyxOdD0wfHRlWzddLHplPTgxOTEmTnQsWWU9TnQ+Pj4xMyxBdD0wfHRlWzhdLGp0PTgxOTEmQXQsSnQ9QXQ+Pj4xMyxtbj0wfHRlWzldLHBuPTgxOTEmbW4sYm49''@;'; put 'put ''bW4+Pj4xMyxsbj0wfHhbMF0sTm49ODE5MSZsbixrbj1sbj4+PjEzLGVyPTB8eFsxXSx1cj04MTkxJmVyLFhuPWVyPj4+MTMsRnI9MHx4WzJdLHhyPTgxOTEmRnIsZW49RnI+Pj4xMyxkcj0wfHhbM10sbnI9ODE5MSZkcix3bj1kcj4+PjEzLCRuPTB8eFs0XSxZdD04MTkxJiRuLGduPSRuPj4+''@;'; put 'put ''MTMsS249MHx4WzVdLFZ0PTgxOTEmS24sc249S24+Pj4xMyxVbj0wfHhbNl0sX249ODE5MSZVbix0bj1Vbj4+PjEzLEduPTB8eFs3XSxUcj04MTkxJkduLFBuPUduPj4+MTMsU3I9MHx4WzhdLHZuPTgxOTEmU3IsdW49U3I+Pj4xMyxjbj0wfHhbOV0sU249ODE5MSZjbixHdD1jbj4+PjEzO25l''@;'; put 'put ''Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeei5uZWdhdGl2ZSxuZS5sZW5ndGg9MTk7dmFyIEVuPShWKyhUPU1hdGguaW11bChDZSxObikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoQ2Usa24pKStNYXRoLmltdWwoRGUsTm4pfDApKTw8MTMpfDA7Vj0oKEY9TWF0aC5pbXVsKERlLGtuKSkrKFM+''@;'; put 'put ''Pj4xMyl8MCkrKEVuPj4+MjYpfDAsRW4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFFlLE5uKSxTPShTPU1hdGguaW11bChRZSxrbikpK01hdGguaW11bCgkZSxObil8MCxGPU1hdGguaW11bCgkZSxrbik7dmFyIGpuPShWKyhUPVQrTWF0aC5pbXVsKENlLHVyKXwwKXwwKSsoKDgxOTEmKFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoQ2UsWG4pfDApK01hdGguaW11bChEZSx1cil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxYbil8MCkrKFM+Pj4xMyl8MCkrKGpuPj4+MjYpfDAsam4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHl0LE5uKSxTPShTPU1hdGguaW11bCh5dCxrbikpK01hdGguaW11''@;'; put 'put ''bChwdCxObil8MCxGPU1hdGguaW11bChwdCxrbiksVD1UK01hdGguaW11bChRZSx1cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLFhuKXwwKStNYXRoLmltdWwoJGUsdXIpfDAsRj1GK01hdGguaW11bCgkZSxYbil8MDt2YXIgcXQ9KFYrKFQ9VCtNYXRoLmltdWwoQ2UseHIpfDApfDApKygoODE5''@;'; put 'put ''MSYoUz0oUz1TK01hdGguaW11bChDZSxlbil8MCkrTWF0aC5pbXVsKERlLHhyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLGVuKXwwKSsoUz4+PjEzKXwwKSsocXQ+Pj4yNil8MCxxdCY9NjcxMDg4NjMsVD1NYXRoLmltdWwodnQsTm4pLFM9KFM9TWF0aC5pbXVsKHZ0LGtuKSkr''@;'; put 'put ''TWF0aC5pbXVsKGZ0LE5uKXwwLEY9TWF0aC5pbXVsKGZ0LGtuKSxUPVQrTWF0aC5pbXVsKHl0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsWG4pfDApK01hdGguaW11bChwdCx1cil8MCxGPUYrTWF0aC5pbXVsKHB0LFhuKXwwLFQ9VCtNYXRoLmltdWwoUWUseHIpfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChRZSxlbil8MCkrTWF0aC5pbXVsKCRlLHhyKXwwLEY9RitNYXRoLmltdWwoJGUsZW4pfDA7dmFyIExuPShWKyhUPVQrTWF0aC5pbXVsKENlLG5yKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usd24pfDApK01hdGguaW11bChEZSxucil8MCkpPDwxMyl8MDtWPSgoRj1G''@;'; put 'put ''K01hdGguaW11bChEZSx3bil8MCkrKFM+Pj4xMyl8MCkrKExuPj4+MjYpfDAsTG4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG9uLE5uKSxTPShTPU1hdGguaW11bChvbixrbikpK01hdGguaW11bChfdCxObil8MCxGPU1hdGguaW11bChfdCxrbiksVD1UK01hdGguaW11bCh2dCx1cil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKHZ0LFhuKXwwKStNYXRoLmltdWwoZnQsdXIpfDAsRj1GK01hdGguaW11bChmdCxYbil8MCxUPVQrTWF0aC5pbXVsKHl0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsZW4pfDApK01hdGguaW11bChwdCx4cil8MCxGPUYrTWF0aC5pbXVsKHB0LGVuKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoUWUsbnIpfDAsUz0oUz1TK01hdGguaW11bChRZSx3bil8MCkrTWF0aC5pbXVsKCRlLG5yKXwwLEY9RitNYXRoLmltdWwoJGUsd24pfDA7dmFyIEpuPShWKyhUPVQrTWF0aC5pbXVsKENlLFl0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsZ24pfDApK01hdGguaW11''@;'; put 'put ''bChEZSxZdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxnbil8MCkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHFlLE5uKSxTPShTPU1hdGguaW11bChxZSxrbikpK01hdGguaW11bChvdCxObil8MCxGPU1hdGguaW11bChvdCxrbiks''@;'; put 'put ''VD1UK01hdGguaW11bChvbix1cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLFhuKXwwKStNYXRoLmltdWwoX3QsdXIpfDAsRj1GK01hdGguaW11bChfdCxYbil8MCxUPVQrTWF0aC5pbXVsKHZ0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwodnQsZW4pfDApK01hdGguaW11bChmdCx4cil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKGZ0LGVuKXwwLFQ9VCtNYXRoLmltdWwoeXQsbnIpfDAsUz0oUz1TK01hdGguaW11bCh5dCx3bil8MCkrTWF0aC5pbXVsKHB0LG5yKXwwLEY9RitNYXRoLmltdWwocHQsd24pfDAsVD1UK01hdGguaW11bChRZSxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKFFlLGduKXwwKStNYXRo''@;'; put 'put ''LmltdWwoJGUsWXQpfDAsRj1GK01hdGguaW11bCgkZSxnbil8MDt2YXIgb3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVnQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxzbil8MCkrTWF0aC5pbXVsKERlLFZ0KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHNuKXww''@;'; put 'put ''KSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoQ3QsTm4pLFM9KFM9TWF0aC5pbXVsKEN0LGtuKSkrTWF0aC5pbXVsKGN0LE5uKXwwLEY9TWF0aC5pbXVsKGN0LGtuKSxUPVQrTWF0aC5pbXVsKHFlLHVyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsWG4p''@;'; put 'put ''fDApK01hdGguaW11bChvdCx1cil8MCxGPUYrTWF0aC5pbXVsKG90LFhuKXwwLFQ9VCtNYXRoLmltdWwob24seHIpfDAsUz0oUz1TK01hdGguaW11bChvbixlbil8MCkrTWF0aC5pbXVsKF90LHhyKXwwLEY9RitNYXRoLmltdWwoX3QsZW4pfDAsVD1UK01hdGguaW11bCh2dCxucil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKHZ0LHduKXwwKStNYXRoLmltdWwoZnQsbnIpfDAsRj1GK01hdGguaW11bChmdCx3bil8MCxUPVQrTWF0aC5pbXVsKHl0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoeXQsZ24pfDApK01hdGguaW11bChwdCxZdCl8MCxGPUYrTWF0aC5pbXVsKHB0LGduKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoUWUsVnQpfDAsUz0oUz1TK01hdGguaW11bChRZSxzbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwLEY9RitNYXRoLmltdWwoJGUsc24pfDA7dmFyIGdyPShWKyhUPVQrTWF0aC5pbXVsKENlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdG4pfDApK01hdGguaW11''@;'; put 'put ''bChEZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx0bil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHplLE5uKSxTPShTPU1hdGguaW11bCh6ZSxrbikpK01hdGguaW11bChZZSxObil8MCxGPU1hdGguaW11bChZZSxrbiks''@;'; put 'put ''VD1UK01hdGguaW11bChDdCx1cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LFhuKXwwKStNYXRoLmltdWwoY3QsdXIpfDAsRj1GK01hdGguaW11bChjdCxYbil8MCxUPVQrTWF0aC5pbXVsKHFlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChvdCx4cil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKG90LGVuKXwwLFQ9VCtNYXRoLmltdWwob24sbnIpfDAsUz0oUz1TK01hdGguaW11bChvbix3bil8MCkrTWF0aC5pbXVsKF90LG5yKXwwLEY9RitNYXRoLmltdWwoX3Qsd24pfDAsVD1UK01hdGguaW11bCh2dCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LGduKXwwKStNYXRo''@;'; put 'put ''LmltdWwoZnQsWXQpfDAsRj1GK01hdGguaW11bChmdCxnbil8MCxUPVQrTWF0aC5pbXVsKHl0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoeXQsc24pfDApK01hdGguaW11bChwdCxWdCl8MCxGPUYrTWF0aC5pbXVsKHB0LHNuKXwwLFQ9VCtNYXRoLmltdWwoUWUsX24pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChRZSx0bil8MCkrTWF0aC5pbXVsKCRlLF9uKXwwLEY9RitNYXRoLmltdWwoJGUsdG4pfDA7dmFyIEpyPShWKyhUPVQrTWF0aC5pbXVsKENlLFRyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsUG4pfDApK01hdGguaW11bChEZSxUcil8MCkpPDwxMyl8MDtWPSgoRj1G''@;'; put 'put ''K01hdGguaW11bChEZSxQbil8MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGp0LE5uKSxTPShTPU1hdGguaW11bChqdCxrbikpK01hdGguaW11bChKdCxObil8MCxGPU1hdGguaW11bChKdCxrbiksVD1UK01hdGguaW11bCh6ZSx1cil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKHplLFhuKXwwKStNYXRoLmltdWwoWWUsdXIpfDAsRj1GK01hdGguaW11bChZZSxYbil8MCxUPVQrTWF0aC5pbXVsKEN0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsZW4pfDApK01hdGguaW11bChjdCx4cil8MCxGPUYrTWF0aC5pbXVsKGN0LGVuKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwocWUsbnIpfDAsUz0oUz1TK01hdGguaW11bChxZSx3bil8MCkrTWF0aC5pbXVsKG90LG5yKXwwLEY9RitNYXRoLmltdWwob3Qsd24pfDAsVD1UK01hdGguaW11bChvbixZdCl8MCxTPShTPVMrTWF0aC5pbXVsKG9uLGduKXwwKStNYXRoLmltdWwoX3QsWXQpfDAsRj1GK01hdGguaW11''@;'; put 'put ''bChfdCxnbil8MCxUPVQrTWF0aC5pbXVsKHZ0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwodnQsc24pfDApK01hdGguaW11bChmdCxWdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHNuKXwwLFQ9VCtNYXRoLmltdWwoeXQsX24pfDAsUz0oUz1TK01hdGguaW11bCh5dCx0bil8MCkrTWF0aC5pbXVsKHB0''@;'; put 'put ''LF9uKXwwLEY9RitNYXRoLmltdWwocHQsdG4pfDAsVD1UK01hdGguaW11bChRZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLFBuKXwwKStNYXRoLmltdWwoJGUsVHIpfDAsRj1GK01hdGguaW11bCgkZSxQbil8MDt2YXIgVnI9KFYrKFQ9VCtNYXRoLmltdWwoQ2Usdm4pfDApfDApKygoODE5''@;'; put 'put ''MSYoUz0oUz1TK01hdGguaW11bChDZSx1bil8MCkrTWF0aC5pbXVsKERlLHZuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sTm4pLFM9KFM9TWF0aC5pbXVsKHBuLGtuKSkr''@;'; put 'put ''TWF0aC5pbXVsKGJuLE5uKXwwLEY9TWF0aC5pbXVsKGJuLGtuKSxUPVQrTWF0aC5pbXVsKGp0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsWG4pfDApK01hdGguaW11bChKdCx1cil8MCxGPUYrTWF0aC5pbXVsKEp0LFhuKXwwLFQ9VCtNYXRoLmltdWwoemUseHIpfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bCh6ZSxlbil8MCkrTWF0aC5pbXVsKFllLHhyKXwwLEY9RitNYXRoLmltdWwoWWUsZW4pfDAsVD1UK01hdGguaW11bChDdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHduKXwwKStNYXRoLmltdWwoY3QsbnIpfDAsRj1GK01hdGguaW11bChjdCx3bil8MCxUPVQrTWF0aC5pbXVsKHFl''@;'; put 'put ''LFl0KXwwLFM9KFM9UytNYXRoLmltdWwocWUsZ24pfDApK01hdGguaW11bChvdCxZdCl8MCxGPUYrTWF0aC5pbXVsKG90LGduKXwwLFQ9VCtNYXRoLmltdWwob24sVnQpfDAsUz0oUz1TK01hdGguaW11bChvbixzbil8MCkrTWF0aC5pbXVsKF90LFZ0KXwwLEY9RitNYXRoLmltdWwoX3Qsc24p''@;'; put 'put ''fDAsVD1UK01hdGguaW11bCh2dCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHRuKXwwKStNYXRoLmltdWwoZnQsX24pfDAsRj1GK01hdGguaW11bChmdCx0bil8MCxUPVQrTWF0aC5pbXVsKHl0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsUG4pfDApK01hdGguaW11bChwdCxUcil8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKHB0LFBuKXwwLFQ9VCtNYXRoLmltdWwoUWUsdm4pfDAsUz0oUz1TK01hdGguaW11bChRZSx1bil8MCkrTWF0aC5pbXVsKCRlLHZuKXwwLEY9RitNYXRoLmltdWwoJGUsdW4pfDA7dmFyIHRpPShWKyhUPVQrTWF0aC5pbXVsKENlLFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoQ2UsR3QpfDApK01hdGguaW11bChEZSxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLHVyKSxTPShTPU1hdGguaW11bChwbixYbikpK01hdGguaW11''@;'; put 'put ''bChibix1cil8MCxGPU1hdGguaW11bChibixYbiksVD1UK01hdGguaW11bChqdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LGVuKXwwKStNYXRoLmltdWwoSnQseHIpfDAsRj1GK01hdGguaW11bChKdCxlbil8MCxUPVQrTWF0aC5pbXVsKHplLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoemUs''@;'; put 'put ''d24pfDApK01hdGguaW11bChZZSxucil8MCxGPUYrTWF0aC5pbXVsKFllLHduKXwwLFQ9VCtNYXRoLmltdWwoQ3QsWXQpfDAsUz0oUz1TK01hdGguaW11bChDdCxnbil8MCkrTWF0aC5pbXVsKGN0LFl0KXwwLEY9RitNYXRoLmltdWwoY3QsZ24pfDAsVD1UK01hdGguaW11bChxZSxWdCl8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKHFlLHNuKXwwKStNYXRoLmltdWwob3QsVnQpfDAsRj1GK01hdGguaW11bChvdCxzbil8MCxUPVQrTWF0aC5pbXVsKG9uLF9uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdG4pfDApK01hdGguaW11bChfdCxfbil8MCxGPUYrTWF0aC5pbXVsKF90LHRuKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwodnQsVHIpfDAsUz0oUz1TK01hdGguaW11bCh2dCxQbil8MCkrTWF0aC5pbXVsKGZ0LFRyKXwwLEY9RitNYXRoLmltdWwoZnQsUG4pfDAsVD1UK01hdGguaW11bCh5dCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LHVuKXwwKStNYXRoLmltdWwocHQsdm4pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChwdCx1bil8MDt2YXIgT3I9KFYrKFQ9VCtNYXRoLmltdWwoUWUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChRZSxHdCl8MCkrTWF0aC5pbXVsKCRlLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKCRlLEd0KXwwKSsoUz4+PjEzKXwwKSsoT3I+Pj4yNil8''@;'; put 'put ''MCxPciY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4seHIpLFM9KFM9TWF0aC5pbXVsKHBuLGVuKSkrTWF0aC5pbXVsKGJuLHhyKXwwLEY9TWF0aC5pbXVsKGJuLGVuKSxUPVQrTWF0aC5pbXVsKGp0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoanQsd24pfDApK01hdGguaW11bChKdCxucil8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKEp0LHduKXwwLFQ9VCtNYXRoLmltdWwoemUsWXQpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxnbil8MCkrTWF0aC5pbXVsKFllLFl0KXwwLEY9RitNYXRoLmltdWwoWWUsZ24pfDAsVD1UK01hdGguaW11bChDdCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHNuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoY3QsVnQpfDAsRj1GK01hdGguaW11bChjdCxzbil8MCxUPVQrTWF0aC5pbXVsKHFlLF9uKXwwLFM9KFM9UytNYXRoLmltdWwocWUsdG4pfDApK01hdGguaW11bChvdCxfbil8MCxGPUYrTWF0aC5pbXVsKG90LHRuKXwwLFQ9VCtNYXRoLmltdWwob24sVHIpfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChvbixQbil8MCkrTWF0aC5pbXVsKF90LFRyKXwwLEY9RitNYXRoLmltdWwoX3QsUG4pfDAsVD1UK01hdGguaW11bCh2dCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHVuKXwwKStNYXRoLmltdWwoZnQsdm4pfDAsRj1GK01hdGguaW11bChmdCx1bil8MDt2YXIgbGk9KFYrKFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoeXQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCh5dCxHdCl8MCkrTWF0aC5pbXVsKHB0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKHB0LEd0KXwwKSsoUz4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwo''@;'; put 'put ''cG4sbnIpLFM9KFM9TWF0aC5pbXVsKHBuLHduKSkrTWF0aC5pbXVsKGJuLG5yKXwwLEY9TWF0aC5pbXVsKGJuLHduKSxUPVQrTWF0aC5pbXVsKGp0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoanQsZ24pfDApK01hdGguaW11bChKdCxZdCl8MCxGPUYrTWF0aC5pbXVsKEp0LGduKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoemUsVnQpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxzbil8MCkrTWF0aC5pbXVsKFllLFZ0KXwwLEY9RitNYXRoLmltdWwoWWUsc24pfDAsVD1UK01hdGguaW11bChDdCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHRuKXwwKStNYXRoLmltdWwoY3QsX24pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChjdCx0bil8MCxUPVQrTWF0aC5pbXVsKHFlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsUG4pfDApK01hdGguaW11bChvdCxUcil8MCxGPUYrTWF0aC5pbXVsKG90LFBuKXwwLFQ9VCtNYXRoLmltdWwob24sdm4pfDAsUz0oUz1TK01hdGguaW11bChvbix1bil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KF90LHZuKXwwLEY9RitNYXRoLmltdWwoX3QsdW4pfDA7dmFyIElpPShWKyhUPVQrTWF0aC5pbXVsKHZ0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwodnQsR3QpfDApK01hdGguaW11bChmdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChmdCxHdCl8MCkrKFM+''@;'; put 'put ''Pj4xMyl8MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLFl0KSxTPShTPU1hdGguaW11bChwbixnbikpK01hdGguaW11bChibixZdCl8MCxGPU1hdGguaW11bChibixnbiksVD1UK01hdGguaW11bChqdCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHNuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoSnQsVnQpfDAsRj1GK01hdGguaW11bChKdCxzbil8MCxUPVQrTWF0aC5pbXVsKHplLF9uKXwwLFM9KFM9UytNYXRoLmltdWwoemUsdG4pfDApK01hdGguaW11bChZZSxfbil8MCxGPUYrTWF0aC5pbXVsKFllLHRuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsVHIpfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChDdCxQbil8MCkrTWF0aC5pbXVsKGN0LFRyKXwwLEY9RitNYXRoLmltdWwoY3QsUG4pfDAsVD1UK01hdGguaW11bChxZSx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHVuKXwwKStNYXRoLmltdWwob3Qsdm4pfDAsRj1GK01hdGguaW11bChvdCx1bil8MDt2YXIgcjA9KFYrKFQ9''@;'; put 'put ''VCtNYXRoLmltdWwob24sU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChvbixHdCl8MCkrTWF0aC5pbXVsKF90LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKF90LEd0KXwwKSsoUz4+PjEzKXwwKSsocjA+Pj4yNil8MCxyMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwo''@;'; put 'put ''cG4sVnQpLFM9KFM9TWF0aC5pbXVsKHBuLHNuKSkrTWF0aC5pbXVsKGJuLFZ0KXwwLEY9TWF0aC5pbXVsKGJuLHNuKSxUPVQrTWF0aC5pbXVsKGp0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdG4pfDApK01hdGguaW11bChKdCxfbil8MCxGPUYrTWF0aC5pbXVsKEp0LHRuKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoemUsVHIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxQbil8MCkrTWF0aC5pbXVsKFllLFRyKXwwLEY9RitNYXRoLmltdWwoWWUsUG4pfDAsVD1UK01hdGguaW11bChDdCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHVuKXwwKStNYXRoLmltdWwoY3Qsdm4pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChjdCx1bil8MDt2YXIgZTA9KFYrKFQ9VCtNYXRoLmltdWwocWUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChxZSxHdCl8MCkrTWF0aC5pbXVsKG90LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKG90LEd0KXwwKSsoUz4+PjEzKXwwKSsoZTA+Pj4yNil8''@;'; put 'put ''MCxlMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sX24pLFM9KFM9TWF0aC5pbXVsKHBuLHRuKSkrTWF0aC5pbXVsKGJuLF9uKXwwLEY9TWF0aC5pbXVsKGJuLHRuKSxUPVQrTWF0aC5pbXVsKGp0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsUG4pfDApK01hdGguaW11bChKdCxUcil8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKEp0LFBuKXwwLFQ9VCtNYXRoLmltdWwoemUsdm4pfDAsUz0oUz1TK01hdGguaW11bCh6ZSx1bil8MCkrTWF0aC5pbXVsKFllLHZuKXwwLEY9RitNYXRoLmltdWwoWWUsdW4pfDA7dmFyIGQwPShWKyhUPVQrTWF0aC5pbXVsKEN0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoQ3QsR3QpfDApK01hdGguaW11bChjdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChjdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLFRyKSxTPShTPU1hdGguaW11bChwbixQbikpK01hdGguaW11''@;'; put 'put ''bChibixUcil8MCxGPU1hdGguaW11bChibixQbiksVD1UK01hdGguaW11bChqdCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHVuKXwwKStNYXRoLmltdWwoSnQsdm4pfDAsRj1GK01hdGguaW11bChKdCx1bil8MDt2YXIgXzA9KFYrKFQ9VCtNYXRoLmltdWwoemUsU24pfDApfDApKygoODE5''@;'; put 'put ''MSYoUz0oUz1TK01hdGguaW11bCh6ZSxHdCl8MCkrTWF0aC5pbXVsKFllLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKFllLEd0KXwwKSsoUz4+PjEzKXwwKSsoXzA+Pj4yNil8MCxfMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sdm4pLFM9KFM9TWF0aC5pbXVsKHBuLHVuKSkr''@;'; put 'put ''TWF0aC5pbXVsKGJuLHZuKXwwLEY9TWF0aC5pbXVsKGJuLHVuKTt2YXIgVTA9KFYrKFQ9VCtNYXRoLmltdWwoanQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChqdCxHdCl8MCkrTWF0aC5pbXVsKEp0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKEp0LEd0KXww''@;'; put 'put ''KSsoUz4+PjEzKXwwKSsoVTA+Pj4yNil8MCxVMCY9NjcxMDg4NjM7dmFyIEJpPShWKyhUPU1hdGguaW11bChwbixTbikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwocG4sR3QpKStNYXRoLmltdWwoYm4sU24pfDApKTw8MTMpfDA7cmV0dXJuIFY9KChGPU1hdGguaW11bChibixHdCkpKyhT''@;'; put 'put ''Pj4+MTMpfDApKyhCaT4+PjI2KXwwLEJpJj02NzEwODg2MyxQWzBdPUVuLFBbMV09am4sUFsyXT1xdCxQWzNdPUxuLFBbNF09Sm4sUFs1XT1vcixQWzZdPWdyLFBbN109SnIsUFs4XT1WcixQWzldPXRpLFBbMTBdPU9yLFBbMTFdPWxpLFBbMTJdPUlpLFBbMTNdPXIwLFBbMTRdPWUwLFBbMTVd''@;'; put 'put ''PWQwLFBbMTZdPV8wLFBbMTddPVUwLFBbMThdPUJpLDAhPT1WJiYoUFsxOV09VixuZS5sZW5ndGgrKyksbmV9O2Z1bmN0aW9uIGFlKGhlLE8seil7cmV0dXJuKG5ldyBmZSkubXVscChoZSxPLHopfWZ1bmN0aW9uIGZlKGhlLE8pe3RoaXMueD1oZSx0aGlzLnk9T31NYXRoLmltdWx8fChKPXEp''@;'; put 'put ''LFUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKE8seil7dmFyIG5lLHRlPXRoaXMubGVuZ3RoK08ubGVuZ3RoO3JldHVybiBuZT0xMD09PXRoaXMubGVuZ3RoJiYxMD09PU8ubGVuZ3RoP0oodGhpcyxPLHopOnRlPDYzP3EodGhpcyxPLHopOnRlPDEwMjQ/ZnVuY3Rpb24gc2UoaGUsTyx6KXt6''@;'; put 'put ''Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeaGUubmVnYXRpdmUsei5sZW5ndGg9aGUubGVuZ3RoK08ubGVuZ3RoO2Zvcih2YXIgbmU9MCx0ZT0wLHg9MDt4PHoubGVuZ3RoLTE7eCsrKXt2YXIgUD10ZTt0ZT0wO2Zvcih2YXIgVj02NzEwODg2MyZuZSxUPU1hdGgubWluKHgsTy5sZW5ndGgtMSksUz1N''@;'; put 'put ''YXRoLm1heCgwLHgtaGUubGVuZ3RoKzEpO1M8PVQ7UysrKXt2YXIgRGU9KDB8aGUud29yZHNbeC1TXSkqKDB8Ty53b3Jkc1tTXSksUGU9NjcxMDg4NjMmRGU7Vj02NzEwODg2MyYoUGU9UGUrVnwwKSx0ZSs9KFA9KFA9UCsoRGUvNjcxMDg4NjR8MCl8MCkrKFBlPj4+MjYpfDApPj4+MjYsUCY9''@;'; put 'put ''NjcxMDg4NjN9ei53b3Jkc1t4XT1WLG5lPVAsUD10ZX1yZXR1cm4gMCE9PW5lP3oud29yZHNbeF09bmU6ei5sZW5ndGgtLSx6LnN0cmlwKCl9KHRoaXMsTyx6KTphZSh0aGlzLE8seiksbmV9LGZlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyks''@;'; put 'put ''bmU9VS5wcm90b3R5cGUuX2NvdW50Qml0cyhPKS0xLHRlPTA7dGU8Tzt0ZSsrKXpbdGVdPXRoaXMucmV2QmluKHRlLG5lLE8pO3JldHVybiB6fSxmZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKE8seixuZSl7aWYoMD09PU98fE89PT1uZS0xKXJldHVybiBPO2Zvcih2YXIgdGU9MCx4PTA7''@;'; put 'put ''eDx6O3grKyl0ZXw9KDEmTyk8PHoteC0xLE8+Pj0xO3JldHVybiB0ZX0sZmUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCl7Zm9yKHZhciBWPTA7VjxQO1YrKyl0ZVtWXT16W09bVl1dLHhbVl09bmVbT1tWXV19LGZlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rp''@;'; put 'put ''b24oTyx6LG5lLHRlLHgsUCl7dGhpcy5wZXJtdXRlKFAsTyx6LG5lLHRlLHgpO2Zvcih2YXIgVj0xO1Y8eDtWPDw9MSlmb3IodmFyIFQ9Vjw8MSxTPU1hdGguY29zKDIqTWF0aC5QSS9UKSxGPU1hdGguc2luKDIqTWF0aC5QSS9UKSx5ZT0wO3llPHg7eWUrPVQpZm9yKHZhciBDZT1TLERlPUYs''@;'; put 'put ''UGU9MDtQZTxWO1BlKyspe3ZhciBRZT1uZVt5ZStQZV0sJGU9dGVbeWUrUGVdLGd0PW5lW3llK1BlK1ZdLHl0PXRlW3llK1BlK1ZdLHB0PUNlKmd0LURlKnl0O3l0PUNlKnl0K0RlKmd0LG5lW3llK1BlXT1RZSsoZ3Q9cHQpLHRlW3llK1BlXT0kZSt5dCxuZVt5ZStQZStWXT1RZS1ndCx0ZVt5''@;'; put 'put ''ZStQZStWXT0kZS15dCxQZSE9PVQmJihwdD1TKkNlLUYqRGUsRGU9UypEZStGKkNlLENlPXB0KX19LGZlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihPLHope3ZhciBuZT0xfE1hdGgubWF4KHosTyksdGU9MSZuZSx4PTA7Zm9yKG5lPW5lLzJ8MDtuZTtuZT4+Pj0xKXgrKztyZXR1''@;'; put 'put ''cm4gMTw8eCsxK3RlfSxmZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKE8seixuZSl7aWYoIShuZTw9MSkpZm9yKHZhciB0ZT0wO3RlPG5lLzI7dGUrKyl7dmFyIHg9T1t0ZV07T1t0ZV09T1tuZS10ZS0xXSxPW25lLXRlLTFdPXgseD16W3RlXSx6W3RlXT0teltuZS10ZS0xXSx6W25l''@;'; put 'put ''LXRlLTFdPS14fX0sZmUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihPLHope2Zvcih2YXIgbmU9MCx0ZT0wO3RlPHovMjt0ZSsrKXt2YXIgeD04MTkyKk1hdGgucm91bmQoT1syKnRlKzFdL3opK01hdGgucm91bmQoT1syKnRlXS96KStuZTtPW3RlXT02NzEwODg2MyZ4LG5lPXg8''@;'; put 'put ''NjcxMDg4NjQ/MDp4LzY3MTA4ODY0fDB9cmV0dXJuIE99LGZlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKE8seixuZSx0ZSl7Zm9yKHZhciB4PTAsUD0wO1A8ejtQKyspbmVbMipQXT04MTkxJih4Kz0wfE9bUF0pLG5lWzIqUCsxXT04MTkxJih4Pj4+PTEzKSx4Pj4+PTEzO2ZvcihQ''@;'; put 'put ''PTIqejtQPHRlOysrUCluZVtQXT0wO0UoMD09PXgpLEUoMD09KC04MTkyJngpKX0sZmUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxuZT0wO25lPE87bmUrKyl6W25lXT0wO3JldHVybiB6fSxmZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihPLHos''@;'; put 'put ''bmUpe3ZhciB0ZT0yKnRoaXMuZ3Vlc3NMZW4xM2IoTy5sZW5ndGgsei5sZW5ndGgpLHg9dGhpcy5tYWtlUkJUKHRlKSxQPXRoaXMuc3R1Yih0ZSksVj1uZXcgQXJyYXkodGUpLFQ9bmV3IEFycmF5KHRlKSxTPW5ldyBBcnJheSh0ZSksRj1uZXcgQXJyYXkodGUpLHllPW5ldyBBcnJheSh0ZSks''@;'; put 'put ''Q2U9bmV3IEFycmF5KHRlKSxEZT1uZS53b3JkcztEZS5sZW5ndGg9dGUsdGhpcy5jb252ZXJ0MTNiKE8ud29yZHMsTy5sZW5ndGgsVix0ZSksdGhpcy5jb252ZXJ0MTNiKHoud29yZHMsei5sZW5ndGgsRix0ZSksdGhpcy50cmFuc2Zvcm0oVixQLFQsUyx0ZSx4KSx0aGlzLnRyYW5zZm9ybShG''@;'; put 'put ''LFAseWUsQ2UsdGUseCk7Zm9yKHZhciBQZT0wO1BlPHRlO1BlKyspe3ZhciBRZT1UW1BlXSp5ZVtQZV0tU1tQZV0qQ2VbUGVdO1NbUGVdPVRbUGVdKkNlW1BlXStTW1BlXSp5ZVtQZV0sVFtQZV09UWV9cmV0dXJuIHRoaXMuY29uanVnYXRlKFQsUyx0ZSksdGhpcy50cmFuc2Zvcm0oVCxTLERl''@;'; put 'put ''LFAsdGUseCksdGhpcy5jb25qdWdhdGUoRGUsUCx0ZSksdGhpcy5ub3JtYWxpemUxM2IoRGUsdGUpLG5lLm5lZ2F0aXZlPU8ubmVnYXRpdmVeei5uZWdhdGl2ZSxuZS5sZW5ndGg9Ty5sZW5ndGgrei5sZW5ndGgsbmUuc3RyaXAoKX0sVS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8pe3ZhciB6''@;'; put 'put ''PW5ldyBVKG51bGwpO3JldHVybiB6LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtPLmxlbmd0aCksdGhpcy5tdWxUbyhPLHopfSxVLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKE8pe3ZhciB6PW5ldyBVKG51bGwpO3JldHVybiB6LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtPLmxl''@;'; put 'put ''bmd0aCksYWUodGhpcyxPLHopfSxVLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oTyx0aGlzKX0sVS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCk7Zm9yKHZhciB6PTAsbmU9''@;'; put 'put ''MDtuZTx0aGlzLmxlbmd0aDtuZSsrKXt2YXIgdGU9KDB8dGhpcy53b3Jkc1tuZV0pKk8seD0oNjcxMDg4NjMmdGUpKyg2NzEwODg2MyZ6KTt6Pj49MjYseis9dGUvNjcxMDg4NjR8MCx6Kz14Pj4+MjYsdGhpcy53b3Jkc1tuZV09NjcxMDg4NjMmeH1yZXR1cm4gMCE9PXomJih0aGlzLndvcmRz''@;'; put 'put ''W25lXT16LHRoaXMubGVuZ3RoKyspLHRoaXN9LFUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihPKX0sVS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxVLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxVLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyl7dmFyIHo9ZnVuY3Rpb24gZWUoaGUpe2Zvcih2YXIgTz1uZXcgQXJyYXkoaGUuYml0TGVuZ3RoKCkpLHo9MDt6PE8ubGVuZ3RoO3orKyl7dmFyIHRlPXolMjY7T1t6XT0oaGUud29yZHNb''@;'; put 'put ''ei8yNnwwXSYxPDx0ZSk+Pj50ZX1yZXR1cm4gT30oTyk7aWYoMD09PXoubGVuZ3RoKXJldHVybiBuZXcgVSgxKTtmb3IodmFyIG5lPXRoaXMsdGU9MDt0ZTx6Lmxlbmd0aCYmMD09PXpbdGVdO3RlKyssbmU9bmUuc3FyKCkpO2lmKCsrdGU8ei5sZW5ndGgpZm9yKHZhciB4PW5lLnNxcigpO3Rl''@;'; put 'put ''PHoubGVuZ3RoO3RlKysseD14LnNxcigpKTAhPT16W3RlXSYmKG5lPW5lLm11bCh4KSk7cmV0dXJuIG5lfSxVLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB4LHo9TyUyNixuZT0oTy16KS8yNix0ZT02NzEwODg2Mz4+PjI2LXo8''@;'; put 'put ''PDI2LXo7aWYoMCE9PXope3ZhciBQPTA7Zm9yKHg9MDt4PHRoaXMubGVuZ3RoO3grKyl7dmFyIFY9dGhpcy53b3Jkc1t4XSZ0ZTt0aGlzLndvcmRzW3hdPSgwfHRoaXMud29yZHNbeF0pLVY8PHp8UCxQPVY+Pj4yNi16fVAmJih0aGlzLndvcmRzW3hdPVAsdGhpcy5sZW5ndGgrKyl9aWYoMCE9''@;'; put 'put ''PW5lKXtmb3IoeD10aGlzLmxlbmd0aC0xO3g+PTA7eC0tKXRoaXMud29yZHNbeCtuZV09dGhpcy53b3Jkc1t4XTtmb3IoeD0wO3g8bmU7eCsrKXRoaXMud29yZHNbeF09MDt0aGlzLmxlbmd0aCs9bmV9cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKE8pfSxVLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oTyx6LG5lKXt2YXIgdGU7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApLHRlPXo/KHoteiUyNikvMjY6MDt2YXIgeD1PJTI2LFA9TWF0aC5taW4oKE8teCkvMjYs''@;'; put 'put ''dGhpcy5sZW5ndGgpLFY9NjcxMDg4NjNeNjcxMDg4NjM+Pj54PDx4LFQ9bmU7aWYodGUtPVAsdGU9TWF0aC5tYXgoMCx0ZSksVCl7Zm9yKHZhciBTPTA7UzxQO1MrKylULndvcmRzW1NdPXRoaXMud29yZHNbU107VC5sZW5ndGg9UH1pZigwIT09UClpZih0aGlzLmxlbmd0aD5QKWZvcih0aGlz''@;'; put 'put ''Lmxlbmd0aC09UCxTPTA7Uzx0aGlzLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT10aGlzLndvcmRzW1MrUF07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgRj0wO2ZvcihTPXRoaXMubGVuZ3RoLTE7Uz49MCYmKDAhPT1GfHxTPj10ZSk7Uy0tKXt2YXIgeWU9MHx0aGlz''@;'; put 'put ''LndvcmRzW1NdO3RoaXMud29yZHNbU109Rjw8MjYteHx5ZT4+PngsRj15ZSZWfXJldHVybiBUJiYwIT09RiYmKFQud29yZHNbVC5sZW5ndGgrK109RiksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXNo''@;'; put 'put ''cm49ZnVuY3Rpb24oTyx6LG5lKXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oTyx6LG5lKX0sVS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKE8pfSxVLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihPKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5jbG9uZSgpLml1c2hsbihPKX0sVS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKE8pfSxVLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihPKX0sVS5wcm90b3R5cGUudGVzdG49ZnVu''@;'; put 'put ''Y3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PU8lMjYsbmU9KE8teikvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9bmV8fCEodGhpcy53b3Jkc1tuZV0mMTw8eikpfSxVLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+''@;'; put 'put ''PTApO3ZhciB6PU8lMjYsbmU9KE8teikvMjY7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1uZT90aGlzOigwIT09eiYmbmUrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihuZSx0aGlzLmxlbmd0''@;'; put 'put ''aCksMCE9PXomJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+Pno8PHopLHRoaXMuc3RyaXAoKSl9LFUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKE8pfSxVLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlv''@;'; put 'put ''bihPKXtyZXR1cm4gRSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCksTzwwP3RoaXMuaXN1Ym4oLU8pOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Tz8odGhpcy53b3Jkc1swXT1PLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKE8pfSxVLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oTyl7dGhpcy53b3Jkc1swXSs9Tztmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndv''@;'; put 'put ''cmRzW3pdPj02NzEwODg2NDt6KyspdGhpcy53b3Jkc1t6XS09NjcxMDg4NjQsej09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1t6KzFdPTE6dGhpcy53b3Jkc1t6KzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHorMSksdGhpc30sVS5wcm90b3R5cGUuaXN1''@;'; put 'put ''Ym49ZnVuY3Rpb24oTyl7aWYoRSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCksTzwwKXJldHVybiB0aGlzLmlhZGRuKC1PKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhp''@;'; put 'put ''cy53b3Jkc1swXS09TywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgej0wO3o8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbel08MDt6KyspdGhpcy53b3Jkc1t6XSs9NjcxMDg4''@;'; put 'put ''NjQsdGhpcy53b3Jkc1t6KzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihPKX0sVS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKE8pfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxVLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sVS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKE8seixuZSl7dmFyIHg7dGhpcy5fZXhw''@;'; put 'put ''YW5kKE8ubGVuZ3RoK25lKTt2YXIgUCxWPTA7Zm9yKHg9MDt4PE8ubGVuZ3RoO3grKyl7UD0oMHx0aGlzLndvcmRzW3grbmVdKStWO3ZhciBUPSgwfE8ud29yZHNbeF0pKno7Vj0oKFAtPTY3MTA4ODYzJlQpPj4yNiktKFQvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t4K25lXT02NzEwODg2MyZQ''@;'; put 'put ''fWZvcig7eDx0aGlzLmxlbmd0aC1uZTt4KyspVj0oUD0oMHx0aGlzLndvcmRzW3grbmVdKStWKT4+MjYsdGhpcy53b3Jkc1t4K25lXT02NzEwODg2MyZQO2lmKDA9PT1WKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKEUoLTE9PT1WKSxWPTAseD0wO3g8dGhpcy5sZW5ndGg7eCsrKVY9KFA9LSgw''@;'; put 'put ''fHRoaXMud29yZHNbeF0pK1YpPj4yNix0aGlzLndvcmRzW3hdPTY3MTA4ODYzJlA7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKE8seil7dmFyIG5lLHRlPXRoaXMuY2xvbmUoKSx4PU8sUD0wfHgud29yZHNbeC5sZW5n''@;'; put 'put ''dGgtMV07MCE9KG5lPTI2LXRoaXMuX2NvdW50Qml0cyhQKSkmJih4PXgudXNobG4obmUpLHRlLml1c2hsbihuZSksUD0wfHgud29yZHNbeC5sZW5ndGgtMV0pO3ZhciBTLFQ9dGUubGVuZ3RoLXgubGVuZ3RoO2lmKCJtb2QiIT09eil7KFM9bmV3IFUobnVsbCkpLmxlbmd0aD1UKzEsUy53b3Jk''@;'; put 'put ''cz1uZXcgQXJyYXkoUy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8Uy5sZW5ndGg7RisrKVMud29yZHNbRl09MH12YXIgeWU9dGUuY2xvbmUoKS5faXNobG5zdWJtdWwoeCwxLFQpOzA9PT15ZS5uZWdhdGl2ZSYmKHRlPXllLFMmJihTLndvcmRzW1RdPTEpKTtmb3IodmFyIENlPVQtMTtDZT49MDtD''@;'; put 'put ''ZS0tKXt2YXIgRGU9NjcxMDg4NjQqKDB8dGUud29yZHNbeC5sZW5ndGgrQ2VdKSsoMHx0ZS53b3Jkc1t4Lmxlbmd0aCtDZS0xXSk7Zm9yKERlPU1hdGgubWluKERlL1B8MCw2NzEwODg2MyksdGUuX2lzaGxuc3VibXVsKHgsRGUsQ2UpOzAhPT10ZS5uZWdhdGl2ZTspRGUtLSx0ZS5uZWdhdGl2''@;'; put 'put ''ZT0wLHRlLl9pc2hsbnN1Ym11bCh4LDEsQ2UpLHRlLmlzWmVybygpfHwodGUubmVnYXRpdmVePTEpO1MmJihTLndvcmRzW0NlXT1EZSl9cmV0dXJuIFMmJlMuc3RyaXAoKSx0ZS5zdHJpcCgpLCJkaXYiIT09eiYmMCE9PW5lJiZ0ZS5pdXNocm4obmUpLHtkaXY6U3x8bnVsbCxtb2Q6dGV9fSxV''@;'; put 'put ''LnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oTyx6LG5lKXtyZXR1cm4gRSghTy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBVKDApLG1vZDpuZXcgVSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8seiksIm1vZCIh''@;'; put 'put ''PT16JiYodGU9UC5kaXYubmVnKCkpLCJkaXYiIT09eiYmKHg9UC5tb2QubmVnKCksbmUmJjAhPT14Lm5lZ2F0aXZlJiZ4LmlhZGQoTykpLHtkaXY6dGUsbW9kOnh9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmU/KFA9dGhpcy5kaXZtb2QoTy5uZWcoKSx6KSwibW9kIiE9PXom''@;'; put 'put ''Jih0ZT1QLmRpdi5uZWcoKSkse2Rpdjp0ZSxtb2Q6UC5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZPLm5lZ2F0aXZlKT8oUD10aGlzLm5lZygpLmRpdm1vZChPLm5lZygpLHopLCJkaXYiIT09eiYmKHg9UC5tb2QubmVnKCksbmUmJjAhPT14Lm5lZ2F0aXZlJiZ4LmlzdWIoTykpLHtkaXY6UC5k''@;'; put 'put ''aXYsbW9kOnh9KTpPLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoTyk8MD97ZGl2Om5ldyBVKDApLG1vZDp0aGlzfToxPT09Ty5sZW5ndGg/ImRpdiI9PT16P3tkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PXo/e2RpdjpudWxsLG1vZDpuZXcgVSh0aGlz''@;'; put 'put ''Lm1vZG4oTy53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihPLHopO3ZhciB0ZSx4LFB9LFUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywiZGl2''@;'; put 'put ''IiwhMSkuZGl2fSxVLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITEpLm1vZH0sVS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywibW9kIiwhMCkubW9kfSxVLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5j''@;'; put 'put ''dGlvbihPKXt2YXIgej10aGlzLmRpdm1vZChPKTtpZih6Lm1vZC5pc1plcm8oKSlyZXR1cm4gei5kaXY7dmFyIG5lPTAhPT16LmRpdi5uZWdhdGl2ZT96Lm1vZC5pc3ViKE8pOnoubW9kLHRlPU8udXNocm4oMSkseD1PLmFuZGxuKDEpLFA9bmUuY21wKHRlKTtyZXR1cm4gUDwwfHwxPT09eCYm''@;'; put 'put ''MD09PVA/ei5kaXY6MCE9PXouZGl2Lm5lZ2F0aXZlP3ouZGl2LmlzdWJuKDEpOnouZGl2LmlhZGRuKDEpfSxVLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0oMTw8MjYpJU8sbmU9MCx0ZT10aGlzLmxlbmd0aC0xO3RlPj0wO3RlLS0pbmU9KHoq''@;'; put 'put ''bmUrKDB8dGhpcy53b3Jkc1t0ZV0pKSVPO3JldHVybiBuZX0sVS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oTyl7RShPPD02NzEwODg2Myk7Zm9yKHZhciB6PTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKXt2YXIgdGU9KDB8dGhpcy53b3Jkc1tuZV0pKzY3MTA4ODY0Kno7dGhpcy53''@;'; put 'put ''b3Jkc1tuZV09dGUvT3wwLHo9dGUlT31yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oTyl9LFUucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1plcm8oKSk7''@;'; put 'put ''dmFyIHo9dGhpcyxuZT1PLmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgdGU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPW5ldyBVKDApLFY9bmV3IFUoMSksVD0wO3ouaXNFdmVuKCkmJm5lLmlzRXZlbigpOyl6Lml1c2hybigxKSxuZS5pdXNocm4o''@;'; put 'put ''MSksKytUO2Zvcih2YXIgUz1uZS5jbG9uZSgpLEY9ei5jbG9uZSgpOyF6LmlzWmVybygpOyl7Zm9yKHZhciB5ZT0wLENlPTE7MD09KHoud29yZHNbMF0mQ2UpJiZ5ZTwyNjsrK3llLENlPDw9MSk7aWYoeWU+MClmb3Ioei5pdXNocm4oeWUpO3llLS0gPjA7KSh0ZS5pc09kZCgpfHx4LmlzT2Rk''@;'; put 'put ''KCkpJiYodGUuaWFkZChTKSx4LmlzdWIoRikpLHRlLml1c2hybigxKSx4Lml1c2hybigxKTtmb3IodmFyIERlPTAsUGU9MTswPT0obmUud29yZHNbMF0mUGUpJiZEZTwyNjsrK0RlLFBlPDw9MSk7aWYoRGU+MClmb3IobmUuaXVzaHJuKERlKTtEZS0tID4wOykoUC5pc09kZCgpfHxWLmlzT2Rk''@;'; put 'put ''KCkpJiYoUC5pYWRkKFMpLFYuaXN1YihGKSksUC5pdXNocm4oMSksVi5pdXNocm4oMSk7ei5jbXAobmUpPj0wPyh6LmlzdWIobmUpLHRlLmlzdWIoUCkseC5pc3ViKFYpKToobmUuaXN1Yih6KSxQLmlzdWIodGUpLFYuaXN1Yih4KSl9cmV0dXJue2E6UCxiOlYsZ2NkOm5lLml1c2hsbihUKX19''@;'; put 'put ''LFUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgeWUsej10aGlzLG5lPU8uY2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1vZChPKTp6LmNsb25lKCk7Zm9yKHZhciB0ZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9bmUu''@;'; put 'put ''Y2xvbmUoKTt6LmNtcG4oMSk+MCYmbmUuY21wbigxKT4wOyl7Zm9yKHZhciBWPTAsVD0xOzA9PSh6LndvcmRzWzBdJlQpJiZWPDI2OysrVixUPDw9MSk7aWYoVj4wKWZvcih6Lml1c2hybihWKTtWLS0gPjA7KXRlLmlzT2RkKCkmJnRlLmlhZGQoUCksdGUuaXVzaHJuKDEpO2Zvcih2YXIgUz0w''@;'; put 'put ''LEY9MTswPT0obmUud29yZHNbMF0mRikmJlM8MjY7KytTLEY8PD0xKTtpZihTPjApZm9yKG5lLml1c2hybihTKTtTLS0gPjA7KXguaXNPZGQoKSYmeC5pYWRkKFApLHguaXVzaHJuKDEpO3ouY21wKG5lKT49MD8oei5pc3ViKG5lKSx0ZS5pc3ViKHgpKToobmUuaXN1Yih6KSx4LmlzdWIodGUp''@;'; put 'put ''KX1yZXR1cm4oeWU9MD09PXouY21wbigxKT90ZTp4KS5jbXBuKDApPDAmJnllLmlhZGQoTykseWV9LFUucHJvdG90eXBlLmdjZD1mdW5jdGlvbihPKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBPLmFicygpO2lmKE8uaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIHo9dGhpcy5jbG9u''@;'; put 'put ''ZSgpLG5lPU8uY2xvbmUoKTt6Lm5lZ2F0aXZlPTAsbmUubmVnYXRpdmU9MDtmb3IodmFyIHRlPTA7ei5pc0V2ZW4oKSYmbmUuaXNFdmVuKCk7dGUrKyl6Lml1c2hybigxKSxuZS5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO3ouaXNFdmVuKCk7KXouaXVzaHJuKDEpO2Zvcig7bmUuaXNFdmVuKCk7''@;'; put 'put ''KW5lLml1c2hybigxKTt2YXIgeD16LmNtcChuZSk7aWYoeDwwKXt2YXIgUD16O3o9bmUsbmU9UH1lbHNlIGlmKDA9PT14fHwwPT09bmUuY21wbigxKSlicmVhazt6LmlzdWIobmUpfXJldHVybiBuZS5pdXNobG4odGUpfSxVLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlz''@;'; put 'put ''LmVnY2QoTykuYS51bW9kKE8pfSxVLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4gdGhpcy53b3Jkc1swXSZPfSxVLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyk7dmFyIHo9TyUyNixuZT0oTy16KS8yNix0ZT0xPDx6O2lmKHRoaXMubGVuZ3RoPD1uZSlyZXR1cm4gdGhpcy5fZXhwYW5kKG5lKzEpLHRoaXMud29yZHNb''@;'; put 'put ''bmVdfD10ZSx0aGlzO2Zvcih2YXIgeD10ZSxQPW5lOzAhPT14JiZQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9MHx0aGlzLndvcmRzW1BdO3g9KFYrPXgpPj4+MjYsdGhpcy53b3Jkc1tQXT1WJj02NzEwODg2M31yZXR1cm4gMCE9PXgmJih0aGlzLndvcmRzW1BdPXgsdGhpcy5sZW5ndGgrKyks''@;'; put 'put ''dGhpc30sVS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LFUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oTyl7dmFyIG5lLHo9TzwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYheilyZXR1cm4tMTtpZigwPT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZSYmeilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSluZT0xO2Vsc2V7eiYmKE89LU8pLEUoTzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHRlPTB8dGhpcy53b3Jkc1swXTtuZT10ZT09PU8/MDp0ZTxPPy0xOjF9cmV0dXJuIDAhPT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlPzB8LW5lOm5lfSxVLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oTyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgej10aGlzLnVjbXAoTyk7cmV0''@;'; put 'put ''dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXo6en0sVS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihPKXtpZih0aGlzLmxlbmd0aD5PLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxPLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHo9MCxuZT10aGlzLmxlbmd0aC0xO25lPj0wO25lLS0p''@;'; put 'put ''e3ZhciB0ZT0wfHRoaXMud29yZHNbbmVdLHg9MHxPLndvcmRzW25lXTtpZih0ZSE9PXgpe3RlPHg/ej0tMTp0ZT54JiYoej0xKTticmVha319cmV0dXJuIHp9LFUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihPKXtyZXR1cm4gMT09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZ3Q9ZnVuY3Rp''@;'; put 'put ''b24oTyl7cmV0dXJuIDE9PT10aGlzLmNtcChPKX0sVS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPj0wfSxVLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wKE8pPj0wfSxVLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuLTE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKTw9MH0sVS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlz''@;'; put 'put ''LmNtcChPKTw9MH0sVS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKE8pe3JldHVybiAwPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5lcT1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21wKE8pfSxVLnJlZD1mdW5jdGlvbihPKXtyZXR1cm4gbmV3IFRlKE8pfSxVLnByb3RvdHlwZS50''@;'; put 'put ''b1JlZD1mdW5jdGlvbihPKXtyZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxFKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLE8uY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChPKX0sVS5w''@;'; put 'put ''cm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LFUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5yZWQ9Tyx0aGlzfSxVLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihPKXtyZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChPKX0sVS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKE8p''@;'; put 'put ''e3JldHVybiBFKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5yZWQuaWFkZCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy''@;'; put 'put ''cyIpLHRoaXMucmVkLnNobCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLE8pLHRoaXMucmVkLm11bCh0aGlzLE8pfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5pbXVsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBFKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92''@;'; put 'put ''ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LFUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMp''@;'; put 'put ''fSxVLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sVS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiBFKHRoaXMucmVkJiYhTy5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsTyl9O3ZhciBkZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHZlKGhlLE8pe3RoaXMu''@;'; put 'put ''bmFtZT1oZSx0aGlzLnA9bmV3IFUoTywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IFUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIEFlKCl7dmUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBrZSgpe3ZlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVu''@;'; put 'put ''Y3Rpb24gU2UoKXt2ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7dmUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBUZShoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBoZSl7dmFyIE89VS5fcHJpbWUoaGUpO3RoaXMubT1PLnAsdGhpcy5wcmltZT1PfWVsc2UgRShoZS5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRo''@;'; put 'put ''aXMubT1oZSx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRWUoaGUpe1RlLmNhbGwodGhpcyxoZSksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgVSgxKS5pdXNobG4odGhpcy5z''@;'; put 'put ''aGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52''@;'; put 'put ''PXRoaXMuci5zdWIodGhpcy5taW52KX12ZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiBPLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksT30sdmUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oTyl7dmFyIG5lLHo9Tztk''@;'; put 'put ''b3t0aGlzLnNwbGl0KHosdGhpcy50bXApLG5lPSh6PSh6PXRoaXMuaW11bEsoeikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShuZT50aGlzLm4pO3ZhciB0ZT1uZTx0aGlzLm4/LTE6ei51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT10ZT8oei53b3Jkc1swXT0wLHoubGVuZ3Ro''@;'; put 'put ''PTEpOnRlPjA/ei5pc3ViKHRoaXMucCk6dm9pZCAwIT09ei5zdHJpcD96LnN0cmlwKCk6ei5fc3RyaXAoKSx6fSx2ZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtPLml1c2hybih0aGlzLm4sMCx6KX0sdmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe3JldHVybiBPLmltdWwo''@;'; put 'put ''dGhpcy5rKX0sTWUoQWUsdmUpLEFlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihPLHope2Zvcih2YXIgdGU9TWF0aC5taW4oTy5sZW5ndGgsOSkseD0wO3g8dGU7eCsrKXoud29yZHNbeF09Ty53b3Jkc1t4XTtpZih6Lmxlbmd0aD10ZSxPLmxlbmd0aDw9OSlyZXR1cm4gTy53b3Jkc1swXT0w''@;'; put 'put ''LHZvaWQoTy5sZW5ndGg9MSk7dmFyIFA9Ty53b3Jkc1s5XTtmb3Ioei53b3Jkc1t6Lmxlbmd0aCsrXT00MTk0MzAzJlAseD0xMDt4PE8ubGVuZ3RoO3grKyl7dmFyIFY9MHxPLndvcmRzW3hdO08ud29yZHNbeC0xMF09KDQxOTQzMDMmVik8PDR8UD4+PjIyLFA9Vn1PLndvcmRzW3gtMTBdPVA+''@;'; put 'put ''Pj49MjIsTy5sZW5ndGgtPTA9PT1QJiZPLmxlbmd0aD4xMD8xMDo5fSxBZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Ty53b3Jkc1tPLmxlbmd0aF09MCxPLndvcmRzW08ubGVuZ3RoKzFdPTAsTy5sZW5ndGgrPTI7Zm9yKHZhciB6PTAsbmU9MDtuZTxPLmxlbmd0aDtuZSsrKXt2YXIg''@;'; put 'put ''dGU9MHxPLndvcmRzW25lXTtPLndvcmRzW25lXT02NzEwODg2MyYoeis9OTc3KnRlKSx6PTY0KnRlKyh6LzY3MTA4ODY0fDApfXJldHVybiAwPT09Ty53b3Jkc1tPLmxlbmd0aC0xXSYmKE8ubGVuZ3RoLS0sMD09PU8ud29yZHNbTy5sZW5ndGgtMV0mJk8ubGVuZ3RoLS0pLE99LE1lKGtlLHZl''@;'; put 'put ''KSxNZShTZSx2ZSksTWUoSWUsdmUpLEllLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtmb3IodmFyIHo9MCxuZT0wO25lPE8ubGVuZ3RoO25lKyspe3ZhciB0ZT0xOSooMHxPLndvcmRzW25lXSkreix4PTY3MTA4ODYzJnRlO3RlPj4+PTI2LE8ud29yZHNbbmVdPXgsej10ZX1yZXR1cm4g''@;'; put 'put ''MCE9PXomJihPLndvcmRzW08ubGVuZ3RoKytdPXopLE99LFUuX3ByaW1lPWZ1bmN0aW9uKE8pe2lmKGRlW09dKXJldHVybiBkZVtPXTt2YXIgejtpZigiazI1NiI9PT1PKXo9bmV3IEFlO2Vsc2UgaWYoInAyMjQiPT09Tyl6PW5ldyBrZTtlbHNlIGlmKCJwMTkyIj09PU8pej1uZXcgU2U7ZWxz''@;'; put 'put ''ZXtpZigicDI1NTE5IiE9PU8pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrTyk7ej1uZXcgSWV9cmV0dXJuIGRlW09dPXosen0sVGUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiks''@;'; put 'put ''RShPLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oTyx6KXtFKDA9PShPLm5lZ2F0aXZlfHoubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQmJk8ucmVkPT09ei5yZWQs''@;'; put 'put ''InJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKE8pLl9mb3JjZVJlZCh0aGlzKTpPLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlw''@;'; put 'put ''ZS5uZWc9ZnVuY3Rpb24oTyl7cmV0dXJuIE8uaXNaZXJvKCk/Ty5jbG9uZSgpOnRoaXMubS5zdWIoTykuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmFkZCh6KTtyZXR1cm4gbmUuY21wKHRoaXMubSk+''@;'; put 'put ''PTAmJm5lLmlzdWIodGhpcy5tKSxuZS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmlhZGQoeik7cmV0dXJuIG5lLmNtcCh0aGlzLm0pPj0wJiZuZS5pc3ViKHRoaXMubSksbmV9LFRlLnByb3RvdHlw''@;'; put 'put ''ZS5zdWI9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uc3ViKHopO3JldHVybiBuZS5jbXBuKDApPDAmJm5lLmlhZGQodGhpcy5tKSxuZS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3Zh''@;'; put 'put ''ciBuZT1PLmlzdWIoeik7cmV0dXJuIG5lLmNtcG4oMCk8MCYmbmUuaWFkZCh0aGlzLm0pLG5lfSxUZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoTyksdGhpcy5pbW9kKE8udXNobG4oeikpfSxUZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHop''@;'; put 'put ''e3JldHVybiB0aGlzLl92ZXJpZnkyKE8seiksdGhpcy5pbW9kKE8uaW11bCh6KSl9LFRlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLm11bCh6KSl9LFRlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKE8pe3JldHVybiB0''@;'; put 'put ''aGlzLmltdWwoTyxPLmNsb25lKCkpfSxUZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLm11bChPLE8pfSxUZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihPKXtpZihPLmlzWmVybygpKXJldHVybiBPLmNsb25lKCk7dmFyIHo9dGhpcy5tLmFuZGxuKDMpO2lmKEUoeiUy''@;'; put 'put ''PT0xKSwzPT09eil7dmFyIG5lPXRoaXMubS5hZGQobmV3IFUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coTyxuZSl9Zm9yKHZhciB0ZT10aGlzLm0uc3VibigxKSx4PTA7IXRlLmlzWmVybygpJiYwPT09dGUuYW5kbG4oMSk7KXgrKyx0ZS5pdXNocm4oMSk7RSghdGUuaXNaZXJvKCkp''@;'; put 'put ''O3ZhciBQPW5ldyBVKDEpLnRvUmVkKHRoaXMpLFY9UC5yZWROZWcoKSxUPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxTPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoUz1uZXcgVSgyKlMqUykudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KFMsVCkuY21wKFYpOylTLnJlZElBZGQoVik7Zm9yKHZh''@;'; put 'put ''ciBGPXRoaXMucG93KFMsdGUpLHllPXRoaXMucG93KE8sdGUuYWRkbigxKS5pdXNocm4oMSkpLENlPXRoaXMucG93KE8sdGUpLERlPXg7MCE9PUNlLmNtcChQKTspe2Zvcih2YXIgUGU9Q2UsUWU9MDswIT09UGUuY21wKFApO1FlKyspUGU9UGUucmVkU3FyKCk7RShRZTxEZSk7dmFyICRlPXRo''@;'; put 'put ''aXMucG93KEYsbmV3IFUoMSkuaXVzaGxuKERlLVFlLTEpKTt5ZT15ZS5yZWRNdWwoJGUpLEY9JGUucmVkU3FyKCksQ2U9Q2UucmVkTXVsKEYpLERlPVFlfXJldHVybiB5ZX0sVGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7dmFyIHo9Ty5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXou''@;'; put 'put ''bmVnYXRpdmU/KHoubmVnYXRpdmU9MCx0aGlzLmltb2QoeikucmVkTmVnKCkpOnRoaXMuaW1vZCh6KX0sVGUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihPLHope2lmKHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT16LmNtcG4oMSkpcmV0dXJuIE8uY2xvbmUo''@;'; put 'put ''KTt2YXIgdGU9bmV3IEFycmF5KDE2KTt0ZVswXT1uZXcgVSgxKS50b1JlZCh0aGlzKSx0ZVsxXT1PO2Zvcih2YXIgeD0yO3g8dGUubGVuZ3RoO3grKyl0ZVt4XT10aGlzLm11bCh0ZVt4LTFdLE8pO3ZhciBQPXRlWzBdLFY9MCxUPTAsUz16LmJpdExlbmd0aCgpJTI2O2ZvcigwPT09UyYmKFM9''@;'; put 'put ''MjYpLHg9ei5sZW5ndGgtMTt4Pj0wO3gtLSl7Zm9yKHZhciBGPXoud29yZHNbeF0seWU9Uy0xO3llPj0wO3llLS0pe3ZhciBDZT1GPj55ZSYxO1AhPT10ZVswXSYmKFA9dGhpcy5zcXIoUCkpLDAhPT1DZXx8MCE9PVY/KFY8PD0xLFZ8PUNlLCg0PT0rK1R8fDA9PT14JiYwPT09eWUpJiYoUD10''@;'; put 'put ''aGlzLm11bChQLHRlW1ZdKSxUPTAsVj0wKSk6VD0wfVM9MjZ9cmV0dXJuIFB9LFRlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7dmFyIHo9Ty51bW9kKHRoaXMubSk7cmV0dXJuIHo9PT1PP3ouY2xvbmUoKTp6fSxUZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTyl7''@;'; put 'put ''dmFyIHo9Ty5jbG9uZSgpO3JldHVybiB6LnJlZD1udWxsLHp9LFUubW9udD1mdW5jdGlvbihPKXtyZXR1cm4gbmV3IEVlKE8pfSxNZShFZSxUZSksRWUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbW9kKE8udXNobG4odGhpcy5zaGlmdCkpfSxFZS5wcm90''@;'; put 'put ''b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5pbW9kKE8ubXVsKHRoaXMucmludikpO3JldHVybiB6LnJlZD1udWxsLHp9LEVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7aWYoTy5pc1plcm8oKXx8ei5pc1plcm8oKSlyZXR1cm4gTy53b3Jkc1swXT0wLE8u''@;'; put 'put ''bGVuZ3RoPTEsTzt2YXIgbmU9Ty5pbXVsKHopLHRlPW5lLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PW5lLmlzdWIodGUpLml1c2hybih0aGlzLnNoaWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14Lmlz''@;'; put 'put ''dWIodGhpcy5tKTp4LmNtcG4oMCk8MCYmKFA9eC5pYWRkKHRoaXMubSkpLFAuX2ZvcmNlUmVkKHRoaXMpfSxFZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7aWYoTy5pc1plcm8oKXx8ei5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBuZT1PLm11bCh6''@;'; put 'put ''KSx0ZT1uZS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1uZS5pc3ViKHRlKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQ''@;'; put 'put ''PXguaWFkZCh0aGlzLm0pKSxQLl9mb3JjZVJlZCh0aGlzKX0sRWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oWGU9TC5ubWQoWGUpLHRoaXMpfSw5NjM4NjooWGUsSmUs''@;'; put 'put ''TCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODM4OTQpLEI9TCg4MDk1KSxFPUwoNzU2MzQpLE1lPUwoOTUyNDQpLFU9TCg2MTA1Mik7ZnVuY3Rpb24gUShaKXtVLmNhbGwodGhpcywiZGlnZXN0IiksdGhpcy5faGFzaD1afWdlKFEsVSksUS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbiha''@;'; put 'put ''KXt0aGlzLl9oYXNoLnVwZGF0ZShaKX0sUS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9LFhlLmV4cG9ydHM9ZnVuY3Rpb24oaWUpe3JldHVybiJtZDUiPT09KGllPWllLnRvTG93ZXJDYXNlKCkpP25ldyBCOiJybWQxNjAiPT09aWV8fCJy''@;'; put 'put ''aXBlbWQxNjAiPT09aWU/bmV3IEU6bmV3IFEoTWUoaWUpKX19LDU1NjQwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDgwOTUpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQil7cmV0dXJuKG5ldyBnZSkudXBkYXRlKEIpLmRpZ2VzdCgpfX0sNzQ1Mjk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBn''@;'; put 'put ''ZT1MKDgzODk0KSxCPUwoNzMwOSksRT1MKDYxMDUyKSxNZT1MKDczNTAyKS5CdWZmZXIsVT1MKDU1NjQwKSxRPUwoNzU2MzQpLFo9TCg5NTI0NCksaWU9TWUuYWxsb2MoMTI4KTtmdW5jdGlvbiBsZShZLFcpe0UuY2FsbCh0aGlzLCJkaWdlc3QiKSwic3RyaW5nIj09dHlwZW9mIFcmJihXPU1l''@;'; put 'put ''LmZyb20oVykpO3ZhciBOPSJzaGE1MTIiPT09WXx8InNoYTM4NCI9PT1ZPzEyODo2NDt0aGlzLl9hbGc9WSx0aGlzLl9rZXk9VyxXLmxlbmd0aD5OP1c9KCJybWQxNjAiPT09WT9uZXcgUTpaKFkpKS51cGRhdGUoVykuZGlnZXN0KCk6Vy5sZW5ndGg8TiYmKFc9TWUuY29uY2F0KFtXLGllXSxO''@;'; put 'put ''KSk7Zm9yKHZhciBxPXRoaXMuX2lwYWQ9TWUuYWxsb2NVbnNhZmUoTiksSj10aGlzLl9vcGFkPU1lLmFsbG9jVW5zYWZlKE4pLHNlPTA7c2U8TjtzZSsrKXFbc2VdPTU0Xldbc2VdLEpbc2VdPTkyXldbc2VdO3RoaXMuX2hhc2g9InJtZDE2MCI9PT1ZP25ldyBROlooWSksdGhpcy5faGFzaC51''@;'; put 'put ''cGRhdGUocSl9Z2UobGUsRSksbGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oWSl7dGhpcy5faGFzaC51cGRhdGUoWSl9LGxlLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgWT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybigicm1kMTYwIj09PXRoaXMuX2FsZz9uZXcgUTpa''@;'; put 'put ''KHRoaXMuX2FsZykpLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoWSkuZGlnZXN0KCl9LFhlLmV4cG9ydHM9ZnVuY3Rpb24oVyxOKXtyZXR1cm4icm1kMTYwIj09PShXPVcudG9Mb3dlckNhc2UoKSl8fCJyaXBlbWQxNjAiPT09Vz9uZXcgbGUoInJtZDE2MCIsTik6Im1kNSI9PT1XP25ldyBC''@;'; put 'put ''KFUsTik6bmV3IGxlKFcsTil9fSw3MzA5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4Mzg5NCksQj1MKDczNTAyKS5CdWZmZXIsRT1MKDYxMDUyKSxNZT1CLmFsbG9jKDEyOCksVT02NDtmdW5jdGlvbiBRKFosaWUpe0UuY2FsbCh0aGlzLCJkaWdlc3QiKSwic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGllJiYoaWU9Qi5mcm9tKGllKSksdGhpcy5fYWxnPVosdGhpcy5fa2V5PWllLGllLmxlbmd0aD5VP2llPVooaWUpOmllLmxlbmd0aDxVJiYoaWU9Qi5jb25jYXQoW2llLE1lXSxVKSk7Zm9yKHZhciBsZT10aGlzLl9pcGFkPUIuYWxsb2NVbnNhZmUoVSksWT10aGlzLl9vcGFkPUIu''@;'; put 'put ''YWxsb2NVbnNhZmUoVSksVz0wO1c8VTtXKyspbGVbV109NTReaWVbV10sWVtXXT05Ml5pZVtXXTt0aGlzLl9oYXNoPVtsZV19Z2UoUSxFKSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFope3RoaXMuX2hhc2gucHVzaChaKX0sUS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IFo9dGhpcy5fYWxnKEIuY29uY2F0KHRoaXMuX2hhc2gpKTtyZXR1cm4gdGhpcy5fYWxnKEIuY29uY2F0KFt0aGlzLl9vcGFkLFpdKSl9LFhlLmV4cG9ydHM9UX0sNDEzNDg6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0plLnJhbmRvbUJ5dGVzPUplLnJuZz1KZS5wc2V1ZG9SYW5kb21CeXRl''@;'; put 'put ''cz1KZS5wcm5nPUwoNTM3NTMpLEplLmNyZWF0ZUhhc2g9SmUuSGFzaD1MKDk2Mzg2KSxKZS5jcmVhdGVIbWFjPUplLkhtYWM9TCg3NDUyOSk7dmFyIGdlPUwoODc3OTMpLEI9T2JqZWN0LmtleXMoZ2UpLEU9WyJzaGExIiwic2hhMjI0Iiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEyIiwibWQ1''@;'; put 'put ''Iiwicm1kMTYwIl0uY29uY2F0KEIpO0plLmdldEhhc2hlcz1mdW5jdGlvbigpe3JldHVybiBFfTt2YXIgTWU9TCg5OTM1Nyk7SmUucGJrZGYyPU1lLnBia2RmMixKZS5wYmtkZjJTeW5jPU1lLnBia2RmMlN5bmM7dmFyIFU9TCg1NTI1NSk7SmUuQ2lwaGVyPVUuQ2lwaGVyLEplLmNyZWF0ZUNp''@;'; put 'put ''cGhlcj1VLmNyZWF0ZUNpcGhlcixKZS5DaXBoZXJpdj1VLkNpcGhlcml2LEplLmNyZWF0ZUNpcGhlcml2PVUuY3JlYXRlQ2lwaGVyaXYsSmUuRGVjaXBoZXI9VS5EZWNpcGhlcixKZS5jcmVhdGVEZWNpcGhlcj1VLmNyZWF0ZURlY2lwaGVyLEplLkRlY2lwaGVyaXY9VS5EZWNpcGhlcml2LEpl''@;'; put 'put ''LmNyZWF0ZURlY2lwaGVyaXY9VS5jcmVhdGVEZWNpcGhlcml2LEplLmdldENpcGhlcnM9VS5nZXRDaXBoZXJzLEplLmxpc3RDaXBoZXJzPVUubGlzdENpcGhlcnM7dmFyIFE9TCg5ODgyOSk7SmUuRGlmZmllSGVsbG1hbkdyb3VwPVEuRGlmZmllSGVsbG1hbkdyb3VwLEplLmNyZWF0ZURpZmZp''@;'; put 'put ''ZUhlbGxtYW5Hcm91cD1RLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCxKZS5nZXREaWZmaWVIZWxsbWFuPVEuZ2V0RGlmZmllSGVsbG1hbixKZS5jcmVhdGVEaWZmaWVIZWxsbWFuPVEuY3JlYXRlRGlmZmllSGVsbG1hbixKZS5EaWZmaWVIZWxsbWFuPVEuRGlmZmllSGVsbG1hbjt2YXIgWj1M''@;'; put 'put ''KDM5MjMpO0plLmNyZWF0ZVNpZ249Wi5jcmVhdGVTaWduLEplLlNpZ249Wi5TaWduLEplLmNyZWF0ZVZlcmlmeT1aLmNyZWF0ZVZlcmlmeSxKZS5WZXJpZnk9Wi5WZXJpZnksSmUuY3JlYXRlRUNESD1MKDc0NzQ2KTt2YXIgaWU9TCg2MzcwMSk7SmUucHVibGljRW5jcnlwdD1pZS5wdWJsaWNF''@;'; put 'put ''bmNyeXB0LEplLnByaXZhdGVFbmNyeXB0PWllLnByaXZhdGVFbmNyeXB0LEplLnB1YmxpY0RlY3J5cHQ9aWUucHVibGljRGVjcnlwdCxKZS5wcml2YXRlRGVjcnlwdD1pZS5wcml2YXRlRGVjcnlwdDt2YXIgbGU9TCgxNDI3NSk7SmUucmFuZG9tRmlsbD1sZS5yYW5kb21GaWxsLEplLnJhbmRv''@;'; put 'put ''bUZpbGxTeW5jPWxlLnJhbmRvbUZpbGxTeW5jLEplLmNyZWF0ZUNyZWRlbnRpYWxzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFsic29ycnksIGNyZWF0ZUNyZWRlbnRpYWxzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCJ3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cyIsImh0dHBzOi8vZ2l0''@;'; put 'put ''aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSJdLmpvaW4oIlxuIikpfSxKZS5jb25zdGFudHM9e0RIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUU6MixESF9DSEVDS19QX05PVF9QUklNRToxLERIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1I6NCxESF9OT1RfU1VJ''@;'; put 'put ''VEFCTEVfR0VORVJBVE9SOjgsTlBOX0VOQUJMRUQ6MSxBTFBOX0VOQUJMRUQ6MSxSU0FfUEtDUzFfUEFERElORzoxLFJTQV9TU0xWMjNfUEFERElORzoyLFJTQV9OT19QQURESU5HOjMsUlNBX1BLQ1MxX09BRVBfUEFERElORzo0LFJTQV9YOTMxX1BBRERJTkc6NSxSU0FfUEtDUzFfUFNTX1BB''@;'; put 'put ''RERJTkc6NixQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQ6MixQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRDo0LFBPSU5UX0NPTlZFUlNJT05fSFlCUklEOjZ9fSw2NzU4NTpmdW5jdGlvbihYZSxKZSl7dmFyIGdlLEUsTWUsVSxRLFosaWUsbGUsWSxXLE4scSxMO1hlLmV4cG9ydHM9''@;'; put 'put ''KEw9THx8KGdlPU1hdGgsRT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbigpe2Z1bmN0aW9uIEooKXt9cmV0dXJuIGZ1bmN0aW9uKHNlKXt2YXIgYWU7cmV0dXJuIEoucHJvdG90eXBlPXNlLGFlPW5ldyBKLEoucHJvdG90eXBlPW51bGwsYWV9fSgpLFU9KE1lPXt9KS5saWI9e30sUT1VLkJhc2U9''@;'; put 'put ''e2V4dGVuZDpmdW5jdGlvbihKKXt2YXIgc2U9RSh0aGlzKTtyZXR1cm4gSiYmc2UubWl4SW4oSiksKCFzZS5oYXNPd25Qcm9wZXJ0eSgiaW5pdCIpfHx0aGlzLmluaXQ9PT1zZS5pbml0KSYmKHNlLmluaXQ9ZnVuY3Rpb24oKXtzZS4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9''@;'; put 'put ''KSxzZS5pbml0LnByb3RvdHlwZT1zZSxzZS4kc3VwZXI9dGhpcyxzZX0sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIEo9dGhpcy5leHRlbmQoKTtyZXR1cm4gSi5pbml0LmFwcGx5KEosYXJndW1lbnRzKSxKfSxpbml0OmZ1bmN0aW9uKCl7fSxtaXhJbjpmdW5jdGlvbihKKXtmb3IodmFyIHNlIGlu''@;'; put 'put ''IEopSi5oYXNPd25Qcm9wZXJ0eShzZSkmJih0aGlzW3NlXT1KW3NlXSk7Si5oYXNPd25Qcm9wZXJ0eSgidG9TdHJpbmciKSYmKHRoaXMudG9TdHJpbmc9Si50b1N0cmluZyl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdC5wcm90b3R5cGUuZXh0ZW5kKHRoaXMpfX0sWj1VLldv''@;'; put 'put ''cmRBcnJheT1RLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihKLHNlKXtKPXRoaXMud29yZHM9Snx8W10sdGhpcy5zaWdCeXRlcz1udWxsIT1zZT9zZTo0KkoubGVuZ3RofSx0b1N0cmluZzpmdW5jdGlvbihKKXtyZXR1cm4oSnx8bGUpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKEop''@;'; put 'put ''e3ZhciBzZT10aGlzLndvcmRzLGFlPUoud29yZHMsZmU9dGhpcy5zaWdCeXRlcyxkZT1KLnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxmZSU0KWZvcih2YXIgdmU9MDt2ZTxkZTt2ZSsrKXNlW2ZlK3ZlPj4+Ml18PShhZVt2ZT4+PjJdPj4+MjQtdmUlNCo4JjI1NSk8PDI0LShmZSt2ZSklNCo4''@;'; put 'put ''O2Vsc2UgZm9yKHZlPTA7dmU8ZGU7dmUrPTQpc2VbZmUrdmU+Pj4yXT1hZVt2ZT4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1kZSx0aGlzfSxjbGFtcDpmdW5jdGlvbigpe3ZhciBKPXRoaXMud29yZHMsc2U9dGhpcy5zaWdCeXRlcztKW3NlPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLXNlJTQq''@;'; put 'put ''OCxKLmxlbmd0aD1nZS5jZWlsKHNlLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBKPVEuY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gSi53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLEp9LHJhbmRvbTpmdW5jdGlvbihKKXtmb3IodmFyIGRlLHNlPVtdLGFlPWZ1bmN0aW9uKGtlKXt2YXIgU2U9''@;'; put 'put ''OTg3NjU0MzIxLEllPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFRlPSgoU2U9MzY5NjkqKDY1NTM1JlNlKSsoU2U+PjE2KSZJZSk8PDE2KSsoa2U9MThlMyooNjU1MzUma2UpKyhrZT4+MTYpJkllKSZJZTtyZXR1cm4gVGUvPTQyOTQ5NjcyOTYsKFRlKz0uNSkqKGdlLnJhbmRv''@;'; put 'put ''bSgpPi41PzE6LTEpfX0sZmU9MDtmZTxKO2ZlKz00KXt2YXIgdmU9YWUoNDI5NDk2NzI5NiooZGV8fGdlLnJhbmRvbSgpKSk7ZGU9OTg3NjU0MDcxKnZlKCksc2UucHVzaCg0Mjk0OTY3Mjk2KnZlKCl8MCl9cmV0dXJuIG5ldyBaLmluaXQoc2UsSil9fSksaWU9TWUuZW5jPXt9LGxlPWllLkhl''@;'; put 'put ''eD17c3RyaW5naWZ5OmZ1bmN0aW9uKEope2Zvcih2YXIgc2U9Si53b3JkcyxhZT1KLnNpZ0J5dGVzLGZlPVtdLGRlPTA7ZGU8YWU7ZGUrKyl7dmFyIHZlPXNlW2RlPj4+Ml0+Pj4yNC1kZSU0KjgmMjU1O2ZlLnB1c2goKHZlPj4+NCkudG9TdHJpbmcoMTYpKSxmZS5wdXNoKCgxNSZ2ZSkudG9T''@;'; put 'put ''dHJpbmcoMTYpKX1yZXR1cm4gZmUuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKEope2Zvcih2YXIgc2U9Si5sZW5ndGgsYWU9W10sZmU9MDtmZTxzZTtmZSs9MilhZVtmZT4+PjNdfD1wYXJzZUludChKLnN1YnN0cihmZSwyKSwxNik8PDI0LWZlJTgqNDtyZXR1cm4gbmV3IFouaW5pdChhZSxz''@;'; put 'put ''ZS8yKX19LFk9aWUuTGF0aW4xPXtzdHJpbmdpZnk6ZnVuY3Rpb24oSil7Zm9yKHZhciBzZT1KLndvcmRzLGFlPUouc2lnQnl0ZXMsZmU9W10sZGU9MDtkZTxhZTtkZSsrKWZlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShzZVtkZT4+PjJdPj4+MjQtZGUlNCo4JjI1NSkpO3JldHVybiBmZS5q''@;'; put 'put ''b2luKCIiKX0scGFyc2U6ZnVuY3Rpb24oSil7Zm9yKHZhciBzZT1KLmxlbmd0aCxhZT1bXSxmZT0wO2ZlPHNlO2ZlKyspYWVbZmU+Pj4yXXw9KDI1NSZKLmNoYXJDb2RlQXQoZmUpKTw8MjQtZmUlNCo4O3JldHVybiBuZXcgWi5pbml0KGFlLHNlKX19LFc9aWUuVXRmOD17c3RyaW5naWZ5OmZ1''@;'; put 'put ''bmN0aW9uKEope3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShZLnN0cmluZ2lmeShKKSkpfWNhdGNoKHNlKXt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBVVEYtOCBkYXRhIil9fSxwYXJzZTpmdW5jdGlvbihKKXtyZXR1cm4gWS5wYXJzZSh1bmVzY2FwZShlbmNvZGVV''@;'; put 'put ''UklDb21wb25lbnQoSikpKX19LE49VS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPVEuZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IFouaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24oSil7InN0cmluZyI9PXR5cGVvZiBKJiYoSj1XLnBhcnNl''@;'; put 'put ''KEopKSx0aGlzLl9kYXRhLmNvbmNhdChKKSx0aGlzLl9uRGF0YUJ5dGVzKz1KLnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihKKXt2YXIgc2U9dGhpcy5fZGF0YSxhZT1zZS53b3JkcyxmZT1zZS5zaWdCeXRlcyxkZT10aGlzLmJsb2NrU2l6ZSxBZT1mZS8oNCpkZSksa2U9KEFlPUo/Z2Uu''@;'; put 'put ''Y2VpbChBZSk6Z2UubWF4KCgwfEFlKS10aGlzLl9taW5CdWZmZXJTaXplLDApKSpkZSxTZT1nZS5taW4oNCprZSxmZSk7aWYoa2Upe2Zvcih2YXIgSWU9MDtJZTxrZTtJZSs9ZGUpdGhpcy5fZG9Qcm9jZXNzQmxvY2soYWUsSWUpO3ZhciBUZT1hZS5zcGxpY2UoMCxrZSk7c2Uuc2lnQnl0ZXMt''@;'; put 'put ''PVNlfXJldHVybiBuZXcgWi5pbml0KFRlLFNlKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgSj1RLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIEouX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLEp9LF9taW5CdWZmZXJTaXplOjB9KSxVLkhhc2hlcj1OLmV4dGVuZCh7Y2ZnOlEuZXh0ZW5kKCksaW5p''@;'; put 'put ''dDpmdW5jdGlvbihKKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoSiksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe04ucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5fYXBwZW5kKEopLHRoaXMuX3Byb2Nlc3Mo''@;'; put 'put ''KSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbihKKXtyZXR1cm4gSiYmdGhpcy5fYXBwZW5kKEopLHRoaXMuX2RvRmluYWxpemUoKX0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oSil7cmV0dXJuIGZ1bmN0aW9uKHNlLGFlKXtyZXR1cm4gbmV3IEouaW5pdChhZSkuZmluYWxp''@;'; put 'put ''emUoc2UpfX0sX2NyZWF0ZUhtYWNIZWxwZXI6ZnVuY3Rpb24oSil7cmV0dXJuIGZ1bmN0aW9uKHNlLGFlKXtyZXR1cm4gbmV3IHEuSE1BQy5pbml0KEosYWUpLmZpbmFsaXplKHNlKX19fSkscT1NZS5hbGdvPXt9LE1lKSxMKX0sOTQ5MzpmdW5jdGlvbihYZSxKZSxMKXt2YXIgZ2U7WGUuZXhw''@;'; put 'put ''b3J0cz0oZ2U9TCg2NzU4NSksZnVuY3Rpb24oQil7dmFyIEU9Z2UsTWU9RS5saWIsVT1NZS5Xb3JkQXJyYXksUT1NZS5IYXNoZXIsWj1FLmFsZ28saWU9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciBxPTA7cTw2NDtxKyspaWVbcV09NDI5NDk2NzI5NipCLmFicyhCLnNpbihxKzEpKXwwfSgpO3Zh''@;'; put 'put ''ciBsZT1aLk1ENT1RLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBVLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocSxKKXtmb3IodmFyIHNlPTA7c2U8MTY7c2UrKyl7''@;'; put 'put ''dmFyIGFlPUorc2UsZmU9cVthZV07cVthZV09MTY3MTE5MzUmKGZlPDw4fGZlPj4+MjQpfDQyNzgyNTUzNjAmKGZlPDwyNHxmZT4+PjgpfXZhciBkZT10aGlzLl9oYXNoLndvcmRzLHZlPXFbSiswXSxBZT1xW0orMV0sa2U9cVtKKzJdLFNlPXFbSiszXSxJZT1xW0orNF0sVGU9cVtKKzVdLEVl''@;'; put 'put ''PXFbSis2XSxoZT1xW0orN10sTz1xW0orOF0sej1xW0orOV0sbmU9cVtKKzEwXSx0ZT1xW0orMTFdLHg9cVtKKzEyXSxQPXFbSisxM10sVj1xW0orMTRdLFQ9cVtKKzE1XSxTPWRlWzBdLEY9ZGVbMV0seWU9ZGVbMl0sQ2U9ZGVbM107Uz1ZKFMsRix5ZSxDZSx2ZSw3LGllWzBdKSxDZT1ZKENl''@;'; put 'put ''LFMsRix5ZSxBZSwxMixpZVsxXSkseWU9WSh5ZSxDZSxTLEYsa2UsMTcsaWVbMl0pLEY9WShGLHllLENlLFMsU2UsMjIsaWVbM10pLFM9WShTLEYseWUsQ2UsSWUsNyxpZVs0XSksQ2U9WShDZSxTLEYseWUsVGUsMTIsaWVbNV0pLHllPVkoeWUsQ2UsUyxGLEVlLDE3LGllWzZdKSxGPVkoRix5''@;'; put 'put ''ZSxDZSxTLGhlLDIyLGllWzddKSxTPVkoUyxGLHllLENlLE8sNyxpZVs4XSksQ2U9WShDZSxTLEYseWUseiwxMixpZVs5XSkseWU9WSh5ZSxDZSxTLEYsbmUsMTcsaWVbMTBdKSxGPVkoRix5ZSxDZSxTLHRlLDIyLGllWzExXSksUz1ZKFMsRix5ZSxDZSx4LDcsaWVbMTJdKSxDZT1ZKENlLFMs''@;'; put 'put ''Rix5ZSxQLDEyLGllWzEzXSkseWU9WSh5ZSxDZSxTLEYsViwxNyxpZVsxNF0pLFM9VyhTLEY9WShGLHllLENlLFMsVCwyMixpZVsxNV0pLHllLENlLEFlLDUsaWVbMTZdKSxDZT1XKENlLFMsRix5ZSxFZSw5LGllWzE3XSkseWU9Vyh5ZSxDZSxTLEYsdGUsMTQsaWVbMThdKSxGPVcoRix5ZSxD''@;'; put 'put ''ZSxTLHZlLDIwLGllWzE5XSksUz1XKFMsRix5ZSxDZSxUZSw1LGllWzIwXSksQ2U9VyhDZSxTLEYseWUsbmUsOSxpZVsyMV0pLHllPVcoeWUsQ2UsUyxGLFQsMTQsaWVbMjJdKSxGPVcoRix5ZSxDZSxTLEllLDIwLGllWzIzXSksUz1XKFMsRix5ZSxDZSx6LDUsaWVbMjRdKSxDZT1XKENlLFMs''@;'; put 'put ''Rix5ZSxWLDksaWVbMjVdKSx5ZT1XKHllLENlLFMsRixTZSwxNCxpZVsyNl0pLEY9VyhGLHllLENlLFMsTywyMCxpZVsyN10pLFM9VyhTLEYseWUsQ2UsUCw1LGllWzI4XSksQ2U9VyhDZSxTLEYseWUsa2UsOSxpZVsyOV0pLHllPVcoeWUsQ2UsUyxGLGhlLDE0LGllWzMwXSksUz1OKFMsRj1X''@;'; put 'put ''KEYseWUsQ2UsUyx4LDIwLGllWzMxXSkseWUsQ2UsVGUsNCxpZVszMl0pLENlPU4oQ2UsUyxGLHllLE8sMTEsaWVbMzNdKSx5ZT1OKHllLENlLFMsRix0ZSwxNixpZVszNF0pLEY9TihGLHllLENlLFMsViwyMyxpZVszNV0pLFM9TihTLEYseWUsQ2UsQWUsNCxpZVszNl0pLENlPU4oQ2UsUyxG''@;'; put 'put ''LHllLEllLDExLGllWzM3XSkseWU9Tih5ZSxDZSxTLEYsaGUsMTYsaWVbMzhdKSxGPU4oRix5ZSxDZSxTLG5lLDIzLGllWzM5XSksUz1OKFMsRix5ZSxDZSxQLDQsaWVbNDBdKSxDZT1OKENlLFMsRix5ZSx2ZSwxMSxpZVs0MV0pLHllPU4oeWUsQ2UsUyxGLFNlLDE2LGllWzQyXSksRj1OKEYs''@;'; put 'put ''eWUsQ2UsUyxFZSwyMyxpZVs0M10pLFM9TihTLEYseWUsQ2Useiw0LGllWzQ0XSksQ2U9TihDZSxTLEYseWUseCwxMSxpZVs0NV0pLHllPU4oeWUsQ2UsUyxGLFQsMTYsaWVbNDZdKSxTPWVlKFMsRj1OKEYseWUsQ2UsUyxrZSwyMyxpZVs0N10pLHllLENlLHZlLDYsaWVbNDhdKSxDZT1lZShD''@;'; put 'put ''ZSxTLEYseWUsaGUsMTAsaWVbNDldKSx5ZT1lZSh5ZSxDZSxTLEYsViwxNSxpZVs1MF0pLEY9ZWUoRix5ZSxDZSxTLFRlLDIxLGllWzUxXSksUz1lZShTLEYseWUsQ2UseCw2LGllWzUyXSksQ2U9ZWUoQ2UsUyxGLHllLFNlLDEwLGllWzUzXSkseWU9ZWUoeWUsQ2UsUyxGLG5lLDE1LGllWzU0''@;'; put 'put ''XSksRj1lZShGLHllLENlLFMsQWUsMjEsaWVbNTVdKSxTPWVlKFMsRix5ZSxDZSxPLDYsaWVbNTZdKSxDZT1lZShDZSxTLEYseWUsVCwxMCxpZVs1N10pLHllPWVlKHllLENlLFMsRixFZSwxNSxpZVs1OF0pLEY9ZWUoRix5ZSxDZSxTLFAsMjEsaWVbNTldKSxTPWVlKFMsRix5ZSxDZSxJZSw2''@;'; put 'put ''LGllWzYwXSksQ2U9ZWUoQ2UsUyxGLHllLHRlLDEwLGllWzYxXSkseWU9ZWUoeWUsQ2UsUyxGLGtlLDE1LGllWzYyXSksRj1lZShGLHllLENlLFMseiwyMSxpZVs2M10pLGRlWzBdPWRlWzBdK1N8MCxkZVsxXT1kZVsxXStGfDAsZGVbMl09ZGVbMl0reWV8MCxkZVszXT1kZVszXStDZXwwfSxf''@;'; put 'put ''ZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBxPXRoaXMuX2RhdGEsSj1xLndvcmRzLHNlPTgqdGhpcy5fbkRhdGFCeXRlcyxhZT04KnEuc2lnQnl0ZXM7SlthZT4+PjVdfD0xMjg8PDI0LWFlJTMyO3ZhciBmZT1CLmZsb29yKHNlLzQyOTQ5NjcyOTYpLGRlPXNlO0pbMTUrKGFlKzY0Pj4+OTw8''@;'; put 'put ''NCldPTE2NzExOTM1JihmZTw8OHxmZT4+PjI0KXw0Mjc4MjU1MzYwJihmZTw8MjR8ZmU+Pj44KSxKWzE0KyhhZSs2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoZGU8PDh8ZGU+Pj4yNCl8NDI3ODI1NTM2MCYoZGU8PDI0fGRlPj4+OCkscS5zaWdCeXRlcz00KihKLmxlbmd0aCsxKSx0aGlzLl9wcm9j''@;'; put 'put ''ZXNzKCk7Zm9yKHZhciB2ZT10aGlzLl9oYXNoLEFlPXZlLndvcmRzLGtlPTA7a2U8NDtrZSsrKXt2YXIgU2U9QWVba2VdO0FlW2tlXT0xNjcxMTkzNSYoU2U8PDh8U2U+Pj4yNCl8NDI3ODI1NTM2MCYoU2U8PDI0fFNlPj4+OCl9cmV0dXJuIHZlfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBxPVEu''@;'; put 'put ''Y2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gcS5faGFzaD10aGlzLl9oYXNoLmNsb25lKCkscX19KTtmdW5jdGlvbiBZKHEsSixzZSxhZSxmZSxkZSx2ZSl7dmFyIEFlPXErKEomc2V8fkomYWUpK2ZlK3ZlO3JldHVybihBZTw8ZGV8QWU+Pj4zMi1kZSkrSn1mdW5jdGlvbiBXKHEsSixzZSxhZSxm''@;'; put 'put ''ZSxkZSx2ZSl7dmFyIEFlPXErKEomYWV8c2UmfmFlKStmZSt2ZTtyZXR1cm4oQWU8PGRlfEFlPj4+MzItZGUpK0p9ZnVuY3Rpb24gTihxLEosc2UsYWUsZmUsZGUsdmUpe3ZhciBBZT1xKyhKXnNlXmFlKStmZSt2ZTtyZXR1cm4oQWU8PGRlfEFlPj4+MzItZGUpK0p9ZnVuY3Rpb24gZWUocSxK''@;'; put 'put ''LHNlLGFlLGZlLGRlLHZlKXt2YXIgQWU9cSsoc2VeKEp8fmFlKSkrZmUrdmU7cmV0dXJuKEFlPDxkZXxBZT4+PjMyLWRlKStKfUUuTUQ1PVEuX2NyZWF0ZUhlbHBlcihsZSksRS5IbWFjTUQ1PVEuX2NyZWF0ZUhtYWNIZWxwZXIobGUpfShNYXRoKSxnZS5NRDUpfSw1Mjc4NjooWGUsSmUsTCk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7TC5kKEplLHtCODooKT0+U2UsSWw6KCk9PkIsSjU6KCk9Pk1lLFNVOigpPT5rZSxTczooKT0+SWUsWW06KCk9Pm5lLFpQOigpPT5kZSx4VjooKT0+RX0pO3ZhciBnZT1MKDY4ODg0KTtmdW5jdGlvbiBCKCl7fXZhciBFPS43LE1lPTEvRSxVPSJcXHMqKFsrLV0/XFxk''@;'; put 'put ''KylcXHMqIixRPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLFo9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGllPS9eIyhbMC05YS1mXXszLDh9KSQvLGxlPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tVLFUsVV0r''@;'; put 'put ''IlxcKSQiKSxZPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1taLFosWl0rIlxcKSQiKSxXPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbVSxVLFUsUV0rIlxcKSQiKSxOPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbWixaLFosUV0rIlxcKSQiKSxlZT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbUSxaLFpdKyJc''@;'; put 'put ''XCkkIikscT1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW1EsWixaLFFdKyJcXCkkIiksSj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAy''@;'; put 'put ''NDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQy''@;'; put 'put ''NzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5''@;'; put 'put ''OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5''@;'; put 'put ''OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1n''@;'; put 'put ''cmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xk''@;'; put 'put ''ZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraTox''@;'; put 'put ''NTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxs''@;'; put 'put ''b3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3Jh''@;'; put 'put ''eTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFt''@;'; put 'put ''YXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMw''@;'; put 'put ''MCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYs''@;'; put 'put ''b2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdo''@;'; put 'put ''aXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95''@;'; put 'put ''YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2''@;'; put 'put ''OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4''@;'; put 'put ''NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBzZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIGZlKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gZGUoUCl7dmFyIFYsVDtyZXR1cm4gUD0oUCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKFY9aWUuZXhlYyhQKSk/KFQ9VlsxXS5sZW5ndGgsVj1wYXJzZUludChWWzFdLDE2KSw2PT09VD92ZShWKTozPT09VD9uZXcgSWUo''@;'; put 'put ''Vj4+OCYxNXxWPj40JjI0MCxWPj40JjE1fDI0MCZWLCgxNSZWKTw8NHwxNSZWLDEpOjg9PT1UP0FlKFY+PjI0JjI1NSxWPj4xNiYyNTUsVj4+OCYyNTUsKDI1NSZWKS8yNTUpOjQ9PT1UP0FlKFY+PjEyJjE1fFY+PjgmMjQwLFY+PjgmMTV8Vj4+NCYyNDAsVj4+NCYxNXwyNDAmViwoKDE1JlYp''@;'; put 'put ''PDw0fDE1JlYpLzI1NSk6bnVsbCk6KFY9bGUuZXhlYyhQKSk/bmV3IEllKFZbMV0sVlsyXSxWWzNdLDEpOihWPVkuZXhlYyhQKSk/bmV3IEllKDI1NSpWWzFdLzEwMCwyNTUqVlsyXS8xMDAsMjU1KlZbM10vMTAwLDEpOihWPVcuZXhlYyhQKSk/QWUoVlsxXSxWWzJdLFZbM10sVls0XSk6KFY9''@;'; put 'put ''Ti5leGVjKFApKT9BZSgyNTUqVlsxXS8xMDAsMjU1KlZbMl0vMTAwLDI1NSpWWzNdLzEwMCxWWzRdKTooVj1lZS5leGVjKFApKT9PKFZbMV0sVlsyXS8xMDAsVlszXS8xMDAsMSk6KFY9cS5leGVjKFApKT9PKFZbMV0sVlsyXS8xMDAsVlszXS8xMDAsVls0XSk6Si5oYXNPd25Qcm9wZXJ0eShQ''@;'; put 'put ''KT92ZShKW1BdKToidHJhbnNwYXJlbnQiPT09UD9uZXcgSWUoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiB2ZShQKXtyZXR1cm4gbmV3IEllKFA+PjE2JjI1NSxQPj44JjI1NSwyNTUmUCwxKX1mdW5jdGlvbiBBZShQLFYsVCxTKXtyZXR1cm4gUzw9MCYmKFA9Vj1UPU5hTiksbmV3IEll''@;'; put 'put ''KFAsVixULFMpfWZ1bmN0aW9uIGtlKFApe3JldHVybiBQIGluc3RhbmNlb2YgQnx8KFA9ZGUoUCkpLFA/bmV3IEllKChQPVAucmdiKCkpLnIsUC5nLFAuYixQLm9wYWNpdHkpOm5ldyBJZX1mdW5jdGlvbiBTZShQLFYsVCxTKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/a2UoUCk6bmV3''@;'; put 'put ''IEllKFAsVixULG51bGw9PVM/MTpTKX1mdW5jdGlvbiBJZShQLFYsVCxTKXt0aGlzLnI9K1AsdGhpcy5nPStWLHRoaXMuYj0rVCx0aGlzLm9wYWNpdHk9K1N9ZnVuY3Rpb24gVGUoKXtyZXR1cm4iIyIraGUodGhpcy5yKStoZSh0aGlzLmcpK2hlKHRoaXMuYil9ZnVuY3Rpb24gRWUoKXt2YXIg''@;'; put 'put ''UD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oUD1pc05hTihQKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxQKSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgu''@;'; put 'put ''cm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT1QPyIpIjoiLCAiK1ArIikiKX1mdW5jdGlvbiBoZShQKXtyZXR1cm4oKFA9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChQKXx8MCkpKTwx''@;'; put 'put ''Nj8iMCI6IiIpK1AudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIE8oUCxWLFQsUyl7cmV0dXJuIFM8PTA/UD1WPVQ9TmFOOlQ8PTB8fFQ+PTE/UD1WPU5hTjpWPD0wJiYoUD1OYU4pLG5ldyB0ZShQLFYsVCxTKX1mdW5jdGlvbiB6KFApe2lmKFAgaW5zdGFuY2VvZiB0ZSlyZXR1cm4gbmV3IHRlKFAu''@;'; put 'put ''aCxQLnMsUC5sLFAub3BhY2l0eSk7aWYoUCBpbnN0YW5jZW9mIEJ8fChQPWRlKFApKSwhUClyZXR1cm4gbmV3IHRlO2lmKFAgaW5zdGFuY2VvZiB0ZSlyZXR1cm4gUDt2YXIgVj0oUD1QLnJnYigpKS5yLzI1NSxUPVAuZy8yNTUsUz1QLmIvMjU1LEY9TWF0aC5taW4oVixULFMpLHllPU1hdGgu''@;'; put 'put ''bWF4KFYsVCxTKSxDZT1OYU4sRGU9eWUtRixQZT0oeWUrRikvMjtyZXR1cm4gRGU/KENlPVY9PT15ZT8oVC1TKS9EZSs2KihUPFMpOlQ9PT15ZT8oUy1WKS9EZSsyOihWLVQpL0RlKzQsRGUvPVBlPC41P3llK0Y6Mi15ZS1GLENlKj02MCk6RGU9UGU+MCYmUGU8MT8wOkNlLG5ldyB0ZShDZSxE''@;'; put 'put ''ZSxQZSxQLm9wYWNpdHkpfWZ1bmN0aW9uIG5lKFAsVixULFMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD96KFApOm5ldyB0ZShQLFYsVCxudWxsPT1TPzE6Uyl9ZnVuY3Rpb24gdGUoUCxWLFQsUyl7dGhpcy5oPStQLHRoaXMucz0rVix0aGlzLmw9K1QsdGhpcy5vcGFjaXR5PStTfWZ1''@;'; put 'put ''bmN0aW9uIHgoUCxWLFQpe3JldHVybiAyNTUqKFA8NjA/VisoVC1WKSpQLzYwOlA8MTgwP1Q6UDwyNDA/VisoVC1WKSooMjQwLVApLzYwOlYpfSgwLGdlLlopKEIsZGUse2NvcHk6ZnVuY3Rpb24oUCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyxQKX0s''@;'; put 'put ''ZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6c2UsZm9ybWF0SGV4OnNlLGZvcm1hdEhzbDpmdW5jdGlvbiBhZSgpe3JldHVybiB6KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6ZmUsdG9TdHJpbmc6ZmV9KSwoMCxnZS5aKShJ''@;'; put 'put ''ZSxTZSwoMCxnZS5sKShCLHticmlnaHRlcjpmdW5jdGlvbihQKXtyZXR1cm4gUD1udWxsPT1QP01lOk1hdGgucG93KE1lLFApLG5ldyBJZSh0aGlzLnIqUCx0aGlzLmcqUCx0aGlzLmIqUCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oUCl7cmV0dXJuIFA9bnVsbD09UD9FOk1hdGgu''@;'; put 'put ''cG93KEUsUCksbmV3IEllKHRoaXMucipQLHRoaXMuZypQLHRoaXMuYipQLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1''@;'; put 'put ''LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6VGUsZm9ybWF0SGV4OlRlLGZvcm1hdFJnYjpFZSx0b1N0cmluZzpFZX0pKSwoMCxnZS5aKSh0ZSxuZSwoMCxnZS5sKShCLHticmlnaHRlcjpmdW5jdGlvbihQKXtyZXR1''@;'; put 'put ''cm4gUD1udWxsPT1QP01lOk1hdGgucG93KE1lLFApLG5ldyB0ZSh0aGlzLmgsdGhpcy5zLHRoaXMubCpQLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihQKXtyZXR1cm4gUD1udWxsPT1QP0U6TWF0aC5wb3coRSxQKSxuZXcgdGUodGhpcy5oLHRoaXMucyx0aGlzLmwqUCx0aGlzLm9w''@;'; put 'put ''YWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgUD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLFY9aXNOYU4oUCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsVD10aGlzLmwsUz1UKyhUPC41P1Q6MS1UKSpWLEY9MipULVM7cmV0dXJuIG5ldyBJZSh4KFA+PTI0MD9QLTI0MDpQKzEyMCxGLFMp''@;'; put 'put ''LHgoUCxGLFMpLHgoUDwxMjA/UCsyNDA6UC0xMjAsRixTKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3Bh''@;'; put 'put ''Y2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIFA9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KFA9aXNOYU4oUCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsUCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlz''@;'; put 'put ''Lmx8fDApKyIlIisoMT09PVA/IikiOiIsICIrUCsiKSIpfX0pKX0sNjg4ODQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGdlKEUsTWUsVSl7RS5wcm90b3R5cGU9TWUucHJvdG90eXBlPVUsVS5jb25zdHJ1Y3Rvcj1FfWZ1bmN0aW9uIEIoRSxNZSl7dmFyIFU9T2JqZWN0LmNy''@;'; put 'put ''ZWF0ZShFLnByb3RvdHlwZSk7Zm9yKHZhciBRIGluIE1lKVVbUV09TWVbUV07cmV0dXJuIFV9TC5kKEplLHtaOigpPT5nZSxsOigpPT5CfSl9LDI1OTIyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9Plp9KTt2YXIgZ2U9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rp''@;'; put 'put ''b24gQigpe2Zvcih2YXIgVyxpZT0wLGxlPWFyZ3VtZW50cy5sZW5ndGgsWT17fTtpZTxsZTsrK2llKXtpZighKFc9YXJndW1lbnRzW2llXSsiIil8fFcgaW4gWXx8L1tccy5dLy50ZXN0KFcpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK1cpO1lbV109W119cmV0dXJuIG5ldyBF''@;'; put 'put ''KFkpfWZ1bmN0aW9uIEUoaWUpe3RoaXMuXz1pZX1mdW5jdGlvbiBNZShpZSxsZSl7cmV0dXJuIGllLnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24oWSl7dmFyIFc9IiIsTj1ZLmluZGV4T2YoIi4iKTtpZihOPj0wJiYoVz1ZLnNsaWNlKE4rMSksWT1ZLnNsaWNlKDAsTikpLFkm''@;'; put 'put ''JiFsZS5oYXNPd25Qcm9wZXJ0eShZKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitZKTtyZXR1cm57dHlwZTpZLG5hbWU6V319KX1mdW5jdGlvbiBVKGllLGxlKXtmb3IodmFyIE4sWT0wLFc9aWUubGVuZ3RoO1k8VzsrK1kpaWYoKE49aWVbWV0pLm5hbWU9PT1sZSlyZXR1cm4g''@;'; put 'put ''Ti52YWx1ZX1mdW5jdGlvbiBRKGllLGxlLFkpe2Zvcih2YXIgVz0wLE49aWUubGVuZ3RoO1c8TjsrK1cpaWYoaWVbV10ubmFtZT09PWxlKXtpZVtXXT1nZSxpZT1pZS5zbGljZSgwLFcpLmNvbmNhdChpZS5zbGljZShXKzEpKTticmVha31yZXR1cm4gbnVsbCE9WSYmaWUucHVzaCh7bmFtZTps''@;'; put 'put ''ZSx2YWx1ZTpZfSksaWV9RS5wcm90b3R5cGU9Qi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkUsb246ZnVuY3Rpb24oaWUsbGUpe3ZhciBOLFk9dGhpcy5fLFc9TWUoaWUrIiIsWSksZWU9LTEscT1XLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWxlJiYiZnVuY3Rp''@;'; put 'put ''b24iIT10eXBlb2YgbGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2xlKTtmb3IoOysrZWU8cTspaWYoTj0oaWU9V1tlZV0pLnR5cGUpWVtOXT1RKFlbTl0saWUubmFtZSxsZSk7ZWxzZSBpZihudWxsPT1sZSlmb3IoTiBpbiBZKVlbTl09UShZW05dLGllLm5hbWUsbnVs''@;'; put 'put ''bCk7cmV0dXJuIHRoaXN9Zm9yKDsrK2VlPHE7KWlmKChOPShpZT1XW2VlXSkudHlwZSkmJihOPVUoWVtOXSxpZS5uYW1lKSkpcmV0dXJuIE59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgaWU9e30sbGU9dGhpcy5fO2Zvcih2YXIgWSBpbiBsZSlpZVtZXT1sZVtZXS5zbGljZSgpO3JldHVybiBuZXcg''@;'; put 'put ''RShpZSl9LGNhbGw6ZnVuY3Rpb24oaWUsbGUpe2lmKChOPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIE4sZWUsWT1uZXcgQXJyYXkoTiksVz0wO1c8TjsrK1cpWVtXXT1hcmd1bWVudHNbVysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGllKSl0aHJvdyBuZXcgRXJyb3IoInVu''@;'; put 'put ''a25vd24gdHlwZTogIitpZSk7Zm9yKFc9MCxOPShlZT10aGlzLl9baWVdKS5sZW5ndGg7VzxOOysrVyllZVtXXS52YWx1ZS5hcHBseShsZSxZKX0sYXBwbHk6ZnVuY3Rpb24oaWUsbGUsWSl7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShpZSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5''@;'; put 'put ''cGU6ICIraWUpO2Zvcih2YXIgVz10aGlzLl9baWVdLE49MCxlZT1XLmxlbmd0aDtOPGVlOysrTilXW05dLnZhbHVlLmFwcGx5KGxlLFkpfX07Y29uc3QgWj1CfSw4NTEwNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5yKEplKSxMLmQoSmUse2Rpc3BhdGNoOigpPT5nZS5afSk7dmFyIGdl''@;'; put 'put ''PUwoMjU5MjIpfSw2NTk5MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihUZSxFZSl7aWYoKGhlPShUZT1FZT9UZS50b0V4cG9uZW50aWFsKEVlLTEpOlRlLnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBoZSxPPVRlLnNsaWNlKDAs''@;'; put 'put ''aGUpO3JldHVybltPLmxlbmd0aD4xP09bMF0rTy5zbGljZSgyKTpPLCtUZS5zbGljZShoZSsxKV19ZnVuY3Rpb24gRShUZSl7cmV0dXJuKFRlPUIoTWF0aC5hYnMoVGUpKSk/VGVbMV06TmFOfUwucihKZSksTC5kKEplLHtGb3JtYXRTcGVjaWZpZXI6KCk9PmllLGZvcm1hdDooKT0+ZGUsZm9y''@;'; put 'put ''bWF0RGVmYXVsdExvY2FsZTooKT0+QWUsZm9ybWF0TG9jYWxlOigpPT5hZSxmb3JtYXRQcmVmaXg6KCk9PnZlLGZvcm1hdFNwZWNpZmllcjooKT0+WixwcmVjaXNpb25GaXhlZDooKT0+a2UscHJlY2lzaW9uUHJlZml4OigpPT5TZSxwcmVjaXNpb25Sb3VuZDooKT0+SWV9KTt2YXIgWSxRPS9e''@;'; put 'put ''KD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIFooVGUpe2lmKCEoRWU9US5leGVjKFRlKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIitUZSk7dmFyIEVlO3JldHVybiBuZXcg''@;'; put 'put ''aWUoe2ZpbGw6RWVbMV0sYWxpZ246RWVbMl0sc2lnbjpFZVszXSxzeW1ib2w6RWVbNF0semVybzpFZVs1XSx3aWR0aDpFZVs2XSxjb21tYTpFZVs3XSxwcmVjaXNpb246RWVbOF0mJkVlWzhdLnNsaWNlKDEpLHRyaW06RWVbOV0sdHlwZTpFZVsxMF19KX1mdW5jdGlvbiBpZShUZSl7dGhpcy5m''@;'; put 'put ''aWxsPXZvaWQgMD09PVRlLmZpbGw/IiAiOlRlLmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT1UZS5hbGlnbj8iPiI6VGUuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PVRlLnNpZ24/Ii0iOlRlLnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09VGUuc3ltYm9sPyIiOlRlLnN5bWJv''@;'; put 'put ''bCsiIix0aGlzLnplcm89ISFUZS56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09VGUud2lkdGg/dm9pZCAwOitUZS53aWR0aCx0aGlzLmNvbW1hPSEhVGUuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09VGUucHJlY2lzaW9uP3ZvaWQgMDorVGUucHJlY2lzaW9uLHRoaXMudHJpbT0hIVRl''@;'; put 'put ''LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PVRlLnR5cGU/IiI6VGUudHlwZSsiIn1mdW5jdGlvbiBOKFRlLEVlKXt2YXIgaGU9QihUZSxFZSk7aWYoIWhlKXJldHVybiBUZSsiIjt2YXIgTz1oZVswXSx6PWhlWzFdO3JldHVybiB6PDA/IjAuIituZXcgQXJyYXkoLXopLmpvaW4oIjAiKStPOk8u''@;'; put 'put ''bGVuZ3RoPnorMT9PLnNsaWNlKDAseisxKSsiLiIrTy5zbGljZSh6KzEpOk8rbmV3IEFycmF5KHotTy5sZW5ndGgrMikuam9pbigiMCIpfVoucHJvdG90eXBlPWllLnByb3RvdHlwZSxpZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24r''@;'; put 'put ''dGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodm9pZCAwPT09dGhpcy53aWR0aD8iIjpNYXRoLm1heCgxLDB8dGhpcy53aWR0aCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHZvaWQgMD09PXRoaXMucHJlY2lzaW9uPyIiOiIuIitNYXRoLm1heCgwLDB8dGhpcy5wcmVj''@;'; put 'put ''aXNpb24pKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTtjb25zdCBlZT17IiUiOmZ1bmN0aW9uKFRlLEVlKXtyZXR1cm4oMTAwKlRlKS50b0ZpeGVkKEVlKX0sYjpmdW5jdGlvbihUZSl7cmV0dXJuIE1hdGgucm91bmQoVGUpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKFRlKXtyZXR1''@;'; put 'put ''cm4gVGUrIiJ9LGQ6ZnVuY3Rpb24gZ2UoVGUpe3JldHVybiBNYXRoLmFicyhUZT1NYXRoLnJvdW5kKFRlKSk+PTFlMjE/VGUudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTpUZS50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24oVGUsRWUpe3JldHVybiBUZS50b0V4cG9uZW50''@;'; put 'put ''aWFsKEVlKX0sZjpmdW5jdGlvbihUZSxFZSl7cmV0dXJuIFRlLnRvRml4ZWQoRWUpfSxnOmZ1bmN0aW9uKFRlLEVlKXtyZXR1cm4gVGUudG9QcmVjaXNpb24oRWUpfSxvOmZ1bmN0aW9uKFRlKXtyZXR1cm4gTWF0aC5yb3VuZChUZSkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24oVGUsRWUpe3Jl''@;'; put 'put ''dHVybiBOKDEwMCpUZSxFZSl9LHI6TixzOmZ1bmN0aW9uIFcoVGUsRWUpe3ZhciBoZT1CKFRlLEVlKTtpZighaGUpcmV0dXJuIFRlKyIiO3ZhciBPPWhlWzBdLHo9aGVbMV0sbmU9ei0oWT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcih6LzMpKSkpKzEsdGU9Ty5sZW5ndGg7''@;'; put 'put ''cmV0dXJuIG5lPT09dGU/TzpuZT50ZT9PK25ldyBBcnJheShuZS10ZSsxKS5qb2luKCIwIik6bmU+MD9PLnNsaWNlKDAsbmUpKyIuIitPLnNsaWNlKG5lKToiMC4iK25ldyBBcnJheSgxLW5lKS5qb2luKCIwIikrQihUZSxNYXRoLm1heCgwLEVlK25lLTEpKVswXX0sWDpmdW5jdGlvbihUZSl7''@;'; put 'put ''cmV0dXJuIE1hdGgucm91bmQoVGUpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKFRlKXtyZXR1cm4gTWF0aC5yb3VuZChUZSkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gcShUZSl7cmV0dXJuIFRlfXZhciBmZSxkZSx2ZSxKPUFycmF5LnByb3RvdHlwZS5tYXAsc2U9''@;'; put 'put ''WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceGI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gYWUoVGUpe3ZhciBFZT12b2lkIDA9PT1UZS5ncm91cGluZ3x8dm9pZCAwPT09VGUudGhvdXNhbmRzP3E6ZnVuY3Rpb24gTWUoVGUsRWUpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbihoZSxPKXtmb3IodmFyIHo9aGUubGVuZ3RoLG5lPVtdLHRlPTAseD1UZVswXSxQPTA7ej4wJiZ4PjAmJihQK3grMT5PJiYoeD1NYXRoLm1heCgxLE8tUCkpLG5lLnB1c2goaGUuc3Vic3RyaW5nKHotPXgseit4KSksISgoUCs9eCsxKT5PKSk7KXg9VGVbdGU9KHRlKzEpJVRl''@;'; put 'put ''Lmxlbmd0aF07cmV0dXJuIG5lLnJldmVyc2UoKS5qb2luKEVlKX19KEouY2FsbChUZS5ncm91cGluZyxOdW1iZXIpLFRlLnRob3VzYW5kcysiIiksaGU9dm9pZCAwPT09VGUuY3VycmVuY3k/IiI6VGUuY3VycmVuY3lbMF0rIiIsTz12b2lkIDA9PT1UZS5jdXJyZW5jeT8iIjpUZS5jdXJyZW5j''@;'; put 'put ''eVsxXSsiIix6PXZvaWQgMD09PVRlLmRlY2ltYWw/Ii4iOlRlLmRlY2ltYWwrIiIsbmU9dm9pZCAwPT09VGUubnVtZXJhbHM/cTpmdW5jdGlvbiBVKFRlKXtyZXR1cm4gZnVuY3Rpb24oRWUpe3JldHVybiBFZS5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKGhlKXtyZXR1cm4gVGVbK2hlXX0p''@;'; put 'put ''fX0oSi5jYWxsKFRlLm51bWVyYWxzLFN0cmluZykpLHRlPXZvaWQgMD09PVRlLnBlcmNlbnQ/IiUiOlRlLnBlcmNlbnQrIiIseD12b2lkIDA9PT1UZS5taW51cz8iLSI6VGUubWludXMrIiIsUD12b2lkIDA9PT1UZS5uYW4/Ik5hTiI6VGUubmFuKyIiO2Z1bmN0aW9uIFYoUyl7dmFyIEY9KFM9''@;'; put 'put ''WihTKSkuZmlsbCx5ZT1TLmFsaWduLENlPVMuc2lnbixEZT1TLnN5bWJvbCxQZT1TLnplcm8sUWU9Uy53aWR0aCwkZT1TLmNvbW1hLGd0PVMucHJlY2lzaW9uLHl0PVMudHJpbSxwdD1TLnR5cGU7Im4iPT09cHQ/KCRlPSEwLHB0PSJnIik6ZWVbcHRdfHwodm9pZCAwPT09Z3QmJihndD0xMiks''@;'; put 'put ''eXQ9ITAscHQ9ImciKSwoUGV8fCIwIj09PUYmJiI9Ij09PXllKSYmKFBlPSEwLEY9IjAiLHllPSI9Iik7dmFyIG10PSIkIj09PURlP2hlOiIjIj09PURlJiYvW2JveFhdLy50ZXN0KHB0KT8iMCIrcHQudG9Mb3dlckNhc2UoKToiIix2dD0iJCI9PT1EZT9POi9bJXBdLy50ZXN0KHB0KT90ZToi''@;'; put 'put ''IixmdD1lZVtwdF0sRnQ9L1tkZWZncHJzJV0vLnRlc3QocHQpO2Z1bmN0aW9uIG9uKF90KXt2YXIgb3QsUnQsQ3QsbnQ9bXQscWU9dnQ7aWYoImMiPT09cHQpcWU9ZnQoX3QpK3FlLF90PSIiO2Vsc2V7dmFyIGN0PShfdD0rX3QpPDB8fDEvX3Q8MDtpZihfdD1pc05hTihfdCk/UDpmdChNYXRo''@;'; put 'put ''LmFicyhfdCksZ3QpLHl0JiYoX3Q9ZnVuY3Rpb24gbGUoVGUpe2U6Zm9yKHZhciB6LEVlPVRlLmxlbmd0aCxoZT0xLE89LTE7aGU8RWU7KytoZSlzd2l0Y2goVGVbaGVdKXtjYXNlIi4iOk89ej1oZTticmVhaztjYXNlIjAiOjA9PT1PJiYoTz1oZSksej1oZTticmVhaztkZWZhdWx0OmlmKCEr''@;'; put 'put ''VGVbaGVdKWJyZWFrIGU7Tz4wJiYoTz0wKX1yZXR1cm4gTz4wP1RlLnNsaWNlKDAsTykrVGUuc2xpY2UoeisxKTpUZX0oX3QpKSxjdCYmMD09K190JiYiKyIhPT1DZSYmKGN0PSExKSxudD0oY3Q/IigiPT09Q2U/Q2U6eDoiLSI9PT1DZXx8IigiPT09Q2U/IiI6Q2UpK250LHFlPSgicyI9PT1w''@;'; put 'put ''dD9zZVs4K1kvM106IiIpK3FlKyhjdCYmIigiPT09Q2U/IikiOiIiKSxGdClmb3Iob3Q9LTEsUnQ9X3QubGVuZ3RoOysrb3Q8UnQ7KWlmKDQ4PihDdD1fdC5jaGFyQ29kZUF0KG90KSl8fEN0PjU3KXtxZT0oNDY9PT1DdD96K190LnNsaWNlKG90KzEpOl90LnNsaWNlKG90KSkrcWUsX3Q9X3Qu''@;'; put 'put ''c2xpY2UoMCxvdCk7YnJlYWt9fSRlJiYhUGUmJihfdD1FZShfdCwxLzApKTt2YXIgTnQ9bnQubGVuZ3RoK190Lmxlbmd0aCtxZS5sZW5ndGgsemU9TnQ8UWU/bmV3IEFycmF5KFFlLU50KzEpLmpvaW4oRik6IiI7c3dpdGNoKCRlJiZQZSYmKF90PUVlKHplK190LHplLmxlbmd0aD9RZS1xZS5s''@;'; put 'put ''ZW5ndGg6MS8wKSx6ZT0iIikseWUpe2Nhc2UiPCI6X3Q9bnQrX3QrcWUremU7YnJlYWs7Y2FzZSI9IjpfdD1udCt6ZStfdCtxZTticmVhaztjYXNlIl4iOl90PXplLnNsaWNlKDAsTnQ9emUubGVuZ3RoPj4xKStudCtfdCtxZSt6ZS5zbGljZShOdCk7YnJlYWs7ZGVmYXVsdDpfdD16ZStudCtf''@;'; put 'put ''dCtxZX1yZXR1cm4gbmUoX3QpfXJldHVybiBndD12b2lkIDA9PT1ndD82Oi9bZ3Byc10vLnRlc3QocHQpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsZ3QpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGd0KSksb24udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gUysiIn0sb259cmV0dXJue2Zv''@;'; put 'put ''cm1hdDpWLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBUKFMsRil7dmFyIHllPVYoKChTPVooUykpLnR5cGU9ImYiLFMpKSxDZT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihFKEYpLzMpKSksRGU9TWF0aC5wb3coMTAsLUNlKSxQZT1zZVs4K0NlLzNdO3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihRZSl7cmV0dXJuIHllKERlKlFlKStQZX19fX1mdW5jdGlvbiBBZShUZSl7cmV0dXJuIGZlPWFlKFRlKSxkZT1mZS5mb3JtYXQsdmU9ZmUuZm9ybWF0UHJlZml4LGZlfWZ1bmN0aW9uIGtlKFRlKXtyZXR1cm4gTWF0aC5tYXgoMCwtRShNYXRoLmFicyhUZSkpKX1mdW5jdGlvbiBTZShUZSxF''@;'; put 'put ''ZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoRShFZSkvMykpKS1FKE1hdGguYWJzKFRlKSkpfWZ1bmN0aW9uIEllKFRlLEVlKXtyZXR1cm4gVGU9TWF0aC5hYnMoVGUpLEVlPU1hdGguYWJzKEVlKS1UZSxNYXRoLm1heCgwLEUoRWUpLUUo''@;'; put 'put ''VGUpKSsxfUFlKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KX0sOTkyMTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UsQixFLE1lLFUsUSxaLGllLGxlLFkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBXKHZu''@;'; put 'put ''KXt2YXIgdW49e30sY249dm4ubm9kZSgpLm5vZGVOYW1lO3VuLnRhZz1jbiwiI3RleHQiPT1jbj91bi50ZXh0PXZuLnRleHQoKToiI2NvbW1lbnQiPT1jbiYmKHVuLmNvbW1lbnQ9dm4udGV4dCgpKSx1bi5hdHRyaWJ1dGVzPXt9O3ZhciBTbj12bi5ub2RlKCkuYXR0cmlidXRlcztpZihTbilm''@;'; put 'put ''b3IodmFyIEd0PTA7R3Q8U24ubGVuZ3RoO0d0Kyspe3ZhciBFbj1TbltHdF07dW4uYXR0cmlidXRlc1tFbi5uYW1lXT1Fbi52YWx1ZX12YXIgb3IsTG49dm4ubm9kZSgpLnRyYW5zZm9ybTtpZihMbiYmMCE9TG4uYmFzZVZhbC5udW1iZXJPZkl0ZW1zKXt2YXIgSm49TG4uYmFzZVZhbC5jb25z''@;'; put 'put ''b2xpZGF0ZSgpLm1hdHJpeDt1bi50cmFuc2xhdGlvbj17eDpKbi5lLHk6Sm4uZn0sdW4uc2NhbGU9Sm4uYX1pZigiZWxsaXBzZSI9PWNuJiYodW4uY2VudGVyPXt4OnVuLmF0dHJpYnV0ZXMuY3gseTp1bi5hdHRyaWJ1dGVzLmN5fSksInBvbHlnb24iPT1jbil7dmFyIGdyPShvcj12bi5hdHRy''@;'; put 'put ''KCJwb2ludHMiKS5zcGxpdCgiICIpKS5tYXAoZnVuY3Rpb24oZTApe3JldHVybiBlMC5zcGxpdCgiLCIpWzBdfSksSnI9b3IubWFwKGZ1bmN0aW9uKGUwKXtyZXR1cm4gZTAuc3BsaXQoIiwiKVsxXX0pLFZyPU1hdGgubWluLmFwcGx5KG51bGwsZ3IpLHRpPU1hdGgubWF4LmFwcGx5KG51bGws''@;'; put 'put ''Z3IpLE9yPU1hdGgubWluLmFwcGx5KG51bGwsSnIpLGxpPU1hdGgubWF4LmFwcGx5KG51bGwsSnIpO3VuLmJib3g9e3g6VnIseTpPcix3aWR0aDp0aS1WcixoZWlnaHQ6bGktT3J9LHVuLmNlbnRlcj17eDooVnIrdGkpLzIseTooT3IrbGkpLzJ9fXJldHVybiJwYXRoIj09Y24mJigob3I9dm4u''@;'; put 'put ''YXR0cigiZCIpLnNwbGl0KC9bQS1aIF0vKSkuc2hpZnQoKSxncj1vci5tYXAoZnVuY3Rpb24oZmEpe3JldHVybitmYS5zcGxpdCgiLCIpWzBdfSksSnI9b3IubWFwKGZ1bmN0aW9uKGZhKXtyZXR1cm4rZmEuc3BsaXQoIiwiKVsxXX0pLFZyPU1hdGgubWluLmFwcGx5KG51bGwsZ3IpLHRpPU1h''@;'; put 'put ''dGgubWF4LmFwcGx5KG51bGwsZ3IpLE9yPU1hdGgubWluLmFwcGx5KG51bGwsSnIpLGxpPU1hdGgubWF4LmFwcGx5KG51bGwsSnIpLHVuLmJib3g9e3g6VnIseTpPcix3aWR0aDp0aS1WcixoZWlnaHQ6bGktT3J9LHVuLmNlbnRlcj17eDooVnIrdGkpLzIseTooT3IrbGkpLzJ9LHVuLnRvdGFs''@;'; put 'put ''TGVuZ3RoPXZuLm5vZGUoKS5nZXRUb3RhbExlbmd0aCgpKSwidGV4dCI9PWNuJiYodW4uY2VudGVyPXt4OnZuLmF0dHIoIngiKSx5OnZuLmF0dHIoInkiKX0pLCIjdGV4dCI9PWNuP3VuLnRleHQ9dm4udGV4dCgpOiIjY29tbWVudCI9PWNuJiYodW4uY29tbWVudD12bi50ZXh0KCkpLHVufWZ1''@;'; put 'put ''bmN0aW9uIE4odm4pe3ZhciB1bj1XKHZuKTtyZXR1cm4gdW4uY2hpbGRyZW49W10sQi5zZWxlY3RBbGwodm4ubm9kZSgpLmNoaWxkTm9kZXMpLmVhY2goZnVuY3Rpb24oKXt2YXIgU249TihCLnNlbGVjdCh0aGlzKSk7U24ucGFyZW50PXVuLHVuLmNoaWxkcmVuLnB1c2goU24pfSksdW59ZnVu''@;'; put 'put ''Y3Rpb24gZWUodm4pe3JldHVybiIjdGV4dCI9PXZuLnRhZz9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik6IiNjb21tZW50Ij09dm4udGFnP2RvY3VtZW50LmNyZWF0ZUNvbW1lbnQodm4uY29tbWVudCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw''@;'; put 'put ''L3N2ZyIsdm4udGFnKX1mdW5jdGlvbiBxKHZuKXt2YXIgdW49ZWUodm4pLGNuPUIuc2VsZWN0KHVuKSxTbj12bi5hdHRyaWJ1dGVzLEd0PSEwLEVuPSExLGpuPXZvaWQgMDt0cnl7Zm9yKHZhciBMbixxdD1PYmplY3Qua2V5cyhTbilbU3ltYm9sLml0ZXJhdG9yXSgpOyEoR3Q9KExuPXF0Lm5l''@;'; put 'put ''eHQoKSkuZG9uZSk7R3Q9ITApe3ZhciBKbj1Mbi52YWx1ZTtjbi5hdHRyKEpuLFNuW0puXSl9fWNhdGNoKGdyKXtFbj0hMCxqbj1ncn1maW5hbGx5e3RyeXshR3QmJnF0LnJldHVybiYmcXQucmV0dXJuKCl9ZmluYWxseXtpZihFbil0aHJvdyBqbn19cmV0dXJuIHVufWZ1bmN0aW9uIEoodm4s''@;'; put 'put ''dW4pe3ZhciBjbj1CLnNlbGVjdCh2bi5ub2RlKCkucGFyZW50Tm9kZSksU249cSh1biksR3Q9Y24uaW5zZXJ0KGZ1bmN0aW9uKCl7cmV0dXJuIFNufSxmdW5jdGlvbigpe3JldHVybiB2bi5ub2RlKCl9KTtyZXR1cm4gdm4ucmVtb3ZlKCksR3R9ZnVuY3Rpb24gYWUodm4sdW4peyhmdW5jdGlv''@;'; put 'put ''biBzZSh2bix1bil7dm4uZGF0dW0odW4pLHZuLmRhdGEoW3VuXSxmdW5jdGlvbihjbil7cmV0dXJuIGNuLmtleX0pfSkodm4sdW4pLEIuc2VsZWN0QWxsKHZuLm5vZGUoKS5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKFNuLEd0KXthZShCLnNlbGVjdCh0aGlzKSx1bi5jaGlsZHJlbltHdF0p''@;'; put 'put ''fSl9ZnVuY3Rpb24gZmUodm4sdW4pe3ZhciBjbj12bi5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1cm4gdm4ubm9kZSgpLmNoaWxkTm9kZXN9KSxTbj0oY249Y24uZGF0YShmdW5jdGlvbihqbil7cmV0dXJuIGpuLmNoaWxkcmVufSxmdW5jdGlvbihqbil7cmV0dXJuIGpuLnRhZysiLSIrdW59''@;'; put 'put ''KSkuZW50ZXIoKS5hcHBlbmQoZnVuY3Rpb24oam4pe3JldHVybiBlZShqbil9KSxHdD1jbi5leGl0KCk7R3Q9R3QucmVtb3ZlKCksY249U24ubWVyZ2UoY24pO3ZhciBFbj17fTtjbi5lYWNoKGZ1bmN0aW9uKGpuKXt2YXIgcXQ9am4udGFnO251bGw9PUVuW3F0XSYmKEVuW3F0XT0wKTt2YXIg''@;'; put 'put ''TG49RW5bcXRdKys7ZGUuY2FsbCh0aGlzLGpuLExuKX0pfWZ1bmN0aW9uIGRlKHZuKXt2YXIgdW49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsY249Qi5zZWxlY3QodGhpcyksR3Q9dm4uYXR0cmlidXRlcyxFbj1jbi5ub2RlKCkuYXR0''@;'; put 'put ''cmlidXRlcztpZihFbilmb3IodmFyIGpuPTA7am48RW4ubGVuZ3RoO2puKyspe3ZhciBxdD1Fbltqbl0sTG49cXQubmFtZTtpZigieG1sbnMiIT1Mbi5zcGxpdCgiOiIpWzBdJiZxdC5uYW1lc3BhY2VVUkkpe3ZhciBKbj1xdC5uYW1lc3BhY2VVUkkuc3BsaXQoIi8iKTtMbj1KbltKbi5sZW5n''@;'; put 'put ''dGgtMV0rIjoiK0xufUxuIGluIEd0fHwoR3RbTG5dPW51bGwpfXZhciBncj0hMCxKcj0hMSxWcj12b2lkIDA7dHJ5e2Zvcih2YXIgT3IsdGk9T2JqZWN0LmtleXMoR3QpW1N5bWJvbC5pdGVyYXRvcl0oKTshKGdyPShPcj10aS5uZXh0KCkpLmRvbmUpO2dyPSEwKXt2YXIgbGk9T3IudmFsdWU7''@;'; put 'put ''Y24uYXR0cihsaSxHdFtsaV0pfX1jYXRjaChJaSl7SnI9ITAsVnI9SWl9ZmluYWxseXt0cnl7IWdyJiZ0aS5yZXR1cm4mJnRpLnJldHVybigpfWZpbmFsbHl7aWYoSnIpdGhyb3cgVnJ9fXZuLnRleHQmJmNuLnRleHQodm4udGV4dCksZmUoY24sdW4pfWZ1bmN0aW9uIHZlKHZuKXtyZXR1cm4g''@;'; put 'put ''T2JqZWN0LmFzc2lnbih7fSx2bil9ZnVuY3Rpb24gQWUodm4pe3JldHVybiBNYXRoLnJvdW5kKDFlNCp2bikvMWU0fWZ1bmN0aW9uIFNlKCl7dmFyIGNuPUIuc2VsZWN0KHRoaXMuX3NlbGVjdGlvbi5ub2RlKCkucXVlcnlTZWxlY3Rvcigic3ZnIikpO2lmKDA9PWNuLnNpemUoKSlyZXR1cm4g''@;'; put 'put ''dGhpczt0aGlzLl96b29tU2VsZWN0aW9uPWNuO3ZhciBTbj1aLnpvb20oKS5zY2FsZUV4dGVudCh0aGlzLl9vcHRpb25zLnpvb21TY2FsZUV4dGVudCkudHJhbnNsYXRlRXh0ZW50KHRoaXMuX29wdGlvbnMuem9vbVRyYW5zbGF0ZUV4dGVudCkuaW50ZXJwb2xhdGUoUS5pbnRlcnBvbGF0ZSku''@;'; put 'put ''b24oInpvb20iLGZ1bmN0aW9uIHZuKCl7Qi5zZWxlY3QoY24ubm9kZSgpLnF1ZXJ5U2VsZWN0b3IoImciKSkuYXR0cigidHJhbnNmb3JtIixCLmV2ZW50LnRyYW5zZm9ybSl9KTt0aGlzLl96b29tQmVoYXZpb3I9U247dmFyIEd0PUIuc2VsZWN0KGNuLm5vZGUoKS5xdWVyeVNlbGVjdG9yKCJn''@;'; put 'put ''IikpO3JldHVybiBjbi5jYWxsKFNuKSx0aGlzLl9hY3RpdmV8fFRlLmNhbGwodGhpcyxHdCksdGhpcy5fb3JpZ2luYWxUcmFuc2Zvcm09Wi56b29tVHJhbnNmb3JtKGNuLm5vZGUoKSksdGhpc31mdW5jdGlvbiBJZSh2bil7dmFyIHVuPXRoaXMuX3RyYW5zbGF0aW9uLGNuPXRoaXMuX3NjYWxl''@;'; put 'put ''LFNuPXZuLmRhdHVtKCkudHJhbnNsYXRpb24sR3Q9dm4uZGF0dW0oKS5zY2FsZSxFbj1aLnpvb21UcmFuc2Zvcm0odGhpcy5fem9vbVNlbGVjdGlvbi5ub2RlKCkpO3JldHVybiB1biYmKEVuPShFbj1Fbi5zY2FsZSgxL2NuKSkudHJhbnNsYXRlKC11bi54LC11bi55KSksKEVuPUVuLnRyYW5z''@;'; put 'put ''bGF0ZShTbi54LFNuLnkpKS5zY2FsZShHdCl9ZnVuY3Rpb24gVGUodm4pe3RoaXMuX3pvb21CZWhhdmlvci50cmFuc2Zvcm0odGhpcy5fem9vbVNlbGVjdGlvbixJZS5jYWxsKHRoaXMsdm4pKSx0aGlzLl90cmFuc2xhdGlvbj12bi5kYXR1bSgpLnRyYW5zbGF0aW9uLHRoaXMuX3NjYWxlPXZu''@;'; put 'put ''LmRhdHVtKCkuc2NhbGUsdGhpcy5fb3JpZ2luYWxUcmFuc2Zvcm09Wi56b29tSWRlbnRpdHkudHJhbnNsYXRlKHZuLmRhdHVtKCkudHJhbnNsYXRpb24ueCx2bi5kYXR1bSgpLnRyYW5zbGF0aW9uLnkpLnNjYWxlKHZuLmRhdHVtKCkuc2NhbGUpfWZ1bmN0aW9uIHRlKHZuLHVuKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgY249dm4ubWFwKGZ1bmN0aW9uKFNuKXtyZXR1cm4gUS5pbnRlcnBvbGF0ZShbU25bMF1bMF0sU25bMF1bMV1dLFtTblsxXVswXSxTblsxXVsxXV0pfSk7cmV0dXJuIGZ1bmN0aW9uKFNuKXtyZXR1cm4gU248MT8iTSIrY24ubWFwKGZ1bmN0aW9uKEd0KXtyZXR1cm4g''@;'; put 'put ''R3QoU24pfSkuam9pbigiTCIpOnVufX19ZnVuY3Rpb24gVih2bil7cmV0dXJuImVkZ2UiPT12bi5hdHRyaWJ1dGVzLmNsYXNzfHwiYSI9PXZuLnRhZyYmImciPT12bi5wYXJlbnQudGFnJiYiZWRnZSI9PXZuLnBhcmVudC5wYXJlbnQuYXR0cmlidXRlcy5jbGFzc31mdW5jdGlvbiBUKHZuKXty''@;'; put 'put ''ZXR1cm4gdm4ucGFyZW50JiZWKHZuLnBhcmVudCl9ZnVuY3Rpb24gQ2Uodm4pe3ZhciB1bj10aGlzLl90cmFuc2l0aW9uLGNuPXRoaXMuX29wdGlvbnMuZmFkZSYmbnVsbCE9dW4sU249dGhpcy5fb3B0aW9ucy50d2VlblBhdGhzLEd0PXRoaXMuX29wdGlvbnMudHdlZW5TaGFwZXMsRW49dGhp''@;'; put 'put ''cy5fb3B0aW9ucy5jb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zLGpuPXRoaXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXMmJm51bGwhPXVuLHF0PXRoaXMuX2F0dHJpYnV0ZXIsTG49dGhpcztmdW5jdGlvbiBvcihPcil7dmFyIGxpPUIuc2VsZWN0KHRoaXMpO2lmKCJzdmciPT1Pci50YWcp''@;'; put 'put ''e3ZhciBJaT1Mbi5fb3B0aW9ucztpZihudWxsIT1JaS53aWR0aHx8bnVsbCE9SWkuaGVpZ2h0KXt2YXIgcjA9SWkud2lkdGgsZTA9SWkuaGVpZ2h0O251bGw9PXIwP3IwPTQqT3IuYXR0cmlidXRlcy53aWR0aC5yZXBsYWNlKCJwdCIsIiIpLzM6KGxpLmF0dHIoIndpZHRoIixyMCksT3IuYXR0''@;'; put 'put ''cmlidXRlcy53aWR0aD1yMCksbnVsbD09ZTA/ZTA9NCpPci5hdHRyaWJ1dGVzLmhlaWdodC5yZXBsYWNlKCJwdCIsIiIpLzM6KGxpLmF0dHIoImhlaWdodCIsZTApLE9yLmF0dHJpYnV0ZXMuaGVpZ2h0PWUwKSxJaS5maXR8fChsaS5hdHRyKCJ2aWV3Qm94IiwiMCAwICIrMypyMC80L0lpLnNj''@;'; put 'put ''YWxlKyIgIiszKmUwLzQvSWkuc2NhbGUpLE9yLmF0dHJpYnV0ZXMudmlld0JveD0iMCAwICIrMypyMC80L0lpLnNjYWxlKyIgIiszKmUwLzQvSWkuc2NhbGUpfTEhPUlpLnNjYWxlJiYoSWkuZml0fHxudWxsPT1JaS53aWR0aCYmbnVsbD09SWkuaGVpZ2h0KSYmKHIwPU9yLmF0dHJpYnV0ZXMu''@;'; put 'put ''dmlld0JveC5zcGxpdCgiICIpWzJdLGUwPU9yLmF0dHJpYnV0ZXMudmlld0JveC5zcGxpdCgiICIpWzNdLGxpLmF0dHIoInZpZXdCb3giLCIwIDAgIityMC9JaS5zY2FsZSsiICIrZTAvSWkuc2NhbGUpLE9yLmF0dHJpYnV0ZXMudmlld0JveD0iMCAwICIrcjAvSWkuc2NhbGUrIiAiK2UwL0lp''@;'; put 'put ''LnNjYWxlKX1xdCYmbGkuZWFjaChxdCk7dmFyIGQwPU9yLnRhZyxfMD1Pci5hdHRyaWJ1dGVzLFUwPWxpLm5vZGUoKS5hdHRyaWJ1dGVzO2lmKFUwKWZvcih2YXIgQmk9MDtCaTxVMC5sZW5ndGg7QmkrKyl7dmFyIGowPVUwW0JpXSxBbz1qMC5uYW1lO2lmKCJ4bWxucyIhPUFvLnNwbGl0KCI6''@;'; put 'put ''IilbMF0mJmowLm5hbWVzcGFjZVVSSSl7dmFyIEtvPWowLm5hbWVzcGFjZVVSSS5zcGxpdCgiLyIpO0FvPUtvW0tvLmxlbmd0aC0xXSsiOiIrQW99QW8gaW4gXzB8fChfMFtBb109bnVsbCl9dmFyIGVsPSExLEppPSExO2lmKEd0JiZ1bil7aWYoKCJwb2x5Z29uIj09dGhpcy5ub2RlTmFtZXx8''@;'; put 'put ''ImVsbGlwc2UiPT10aGlzLm5vZGVOYW1lKSYmT3IuYWx0ZXJuYXRpdmVPbGQmJihKaT0hMCksKCJwb2x5Z29uIj09ZDB8fCJlbGxpcHNlIj09ZDApJiZPci5hbHRlcm5hdGl2ZU5ldyYmKGVsPSEwKSwicG9seWdvbiI9PXRoaXMubm9kZU5hbWUmJiJwb2x5Z29uIj09ZDApe3ZhciBNYT1XKGxp''@;'; put 'put ''KTtpZighRW4pe3ZhciBmbD1NYS5hdHRyaWJ1dGVzLnBvaW50cy5zcGxpdCgiICIpLmxlbmd0aDsocGk9T3IuYXR0cmlidXRlcy5wb2ludHMpLnNwbGl0KCIgIikubGVuZ3RoPT1mbCYmKGVsPSExLEppPSExKX19aWYoSmkpe3ZhciBHbz1KKGxpLE9yLmFsdGVybmF0aXZlT2xkKTtHby5kYXRh''@;'; put 'put ''KFtPcl0sZnVuY3Rpb24oKXtyZXR1cm4gT3Iua2V5fSksbGk9R299ZWwmJihkMD0icGF0aCIsXzA9T3IuYWx0ZXJuYXRpdmVOZXcuYXR0cmlidXRlcyl9dmFyIFNpPWxpO2lmKHVuJiYoU2k9U2kudHJhbnNpdGlvbih1biksY24mJlNpLmZpbHRlcihmdW5jdGlvbihRMil7cmV0dXJuIiMiPT1R''@;'; put 'put ''Mi50YWdbMF0/bnVsbDp0aGlzfSkuc3R5bGUoIm9wYWNpdHkiLDEpLFNpLmZpbHRlcihmdW5jdGlvbihRMil7cmV0dXJuIiMiPT1RMi50YWdbMF0/bnVsbDp0aGlzfSkub24oImVuZCIsZnVuY3Rpb24oKXtCLnNlbGVjdCh0aGlzKS5hdHRyKCJzdHlsZSIsbnVsbCl9KSksam4mJiJwYXRoIj09''@;'; put 'put ''ZDAmJk9yLm9mZnNldCl7dmFyIEl1PU9yLnRvdGFsTGVuZ3RoO2xpLmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLEl1KyIgIitJdSkuYXR0cigic3Ryb2tlLWRhc2hvZmZzZXQiLEl1KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitPci5vZmZzZXQueCsiLCIrT3Iub2Zmc2V0LnkrIiki''@;'; put 'put ''KSxfMFsic3Ryb2tlLWRhc2hvZmZzZXQiXT0wLF8wLnRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMCkiLFNpLmF0dHIoInN0cm9rZS1kYXNob2Zmc2V0IixfMFsic3Ryb2tlLWRhc2hvZmZzZXQiXSkuYXR0cigidHJhbnNmb3JtIixfMC50cmFuc2Zvcm0pLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtC''@;'; put 'put ''LnNlbGVjdCh0aGlzKS5zdHlsZSgib3BhY2l0eSIsbnVsbCl9KS5vbigiZW5kIixmdW5jdGlvbigpe0Iuc2VsZWN0KHRoaXMpLmF0dHIoInN0cm9rZS1kYXNob2Zmc2V0IixudWxsKS5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixudWxsKS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpfSl9aWYoam4m''@;'; put 'put ''JiJwb2x5Z29uIj09ZDAmJlQoT3IpJiZPci5vZmZzZXQpe3ZhciBTcz1CLnNlbGVjdChsaS5ub2RlKCkucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCJwYXRoIikpLFcwPVNzLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKDApLHFvPVNzLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKE9yLnRvdGFs''@;'; put 'put ''TGVuZ3RoKSxLYT1Tcy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChPci50b3RhbExlbmd0aC0xKSxzbz0xODAqTWF0aC5hdGFuMihxby55LUthLnkscW8ueC1LYS54KS9NYXRoLlBJLEFuPVcwLngtcW8ueCtPci5vZmZzZXQueCxLMD1XMC55LXFvLnkrT3Iub2Zmc2V0Lnk7bGkuYXR0cigidHJh''@;'; put 'put ''bnNmb3JtIiwidHJhbnNsYXRlKCIrQW4rIiwiK0swKyIpIiksU2kuYXR0clR3ZWVuKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKFEyKXt2YXIgWHU9U3Mubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoT3IudG90YWxMZW5ndGgqUTIpLGdjPVNzLm5vZGUoKS5nZXRQb2lu''@;'; put 'put ''dEF0TGVuZ3RoKE9yLnRvdGFsTGVuZ3RoKlEyKzEpLHRsPTE4MCpNYXRoLmF0YW4yKGdjLnktWHUueSxnYy54LVh1LngpL01hdGguUEktc287cmV0dXJuInRyYW5zbGF0ZSgiKyhBbj1YdS54LXFvLngrT3Iub2Zmc2V0LngqKDEtUTIpKSsiLCIrKEswPVh1LnktcW8ueStPci5vZmZzZXQueSoo''@;'; put 'put ''MS1RMikpKyIpIHJvdGF0ZSgiK3RsKyIgIitxby54KyIgIitxby55KyIpIn19KS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7Qi5zZWxlY3QodGhpcykuc3R5bGUoIm9wYWNpdHkiLG51bGwpfSkub24oImVuZCIsZnVuY3Rpb24oKXtCLnNlbGVjdCh0aGlzKS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwp''@;'; put 'put ''fSl9dmFyIGIyPVNuJiZ1biYmInBhdGgiPT1kMCYmbnVsbCE9bGkuYXR0cigiZCIpLGl1PSEwLFJmPSExLFF1PXZvaWQgMDt0cnl7Zm9yKHZhciBPcCxLcz1PYmplY3Qua2V5cyhfMClbU3ltYm9sLml0ZXJhdG9yXSgpOyEoaXU9KE9wPUtzLm5leHQoKSkuZG9uZSk7aXU9ITApe3ZhciBKdT1P''@;'; put 'put ''cC52YWx1ZSwkcz1fMFtKdV07aWYoYjImJiJkIj09SnUpe3ZhciBwaTsocGk9KE9yLmFsdGVybmF0aXZlT2xkfHxPcikucG9pbnRzKSYmU2kuYXR0clR3ZWVuKCJkIix0ZShwaSwkcykpfWVsc2V7aWYoInRyYW5zZm9ybSI9PUp1JiZPci50cmFuc2xhdGlvbilpZih1bil7dmFyIERsPVNpLm9u''@;'; put 'put ''KCJlbmQiKTtTaS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7TG4uX3pvb21CZWhhdmlvciYmU2kudHdlZW4oImF0dHIudHJhbnNmb3JtIixmdW5jdGlvbigpe3ZhciBRMj10aGlzO3JldHVybiBmdW5jdGlvbihYdSl7UTIuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLFEuaW50ZXJwb2xhdGVUcmFu''@;'; put 'put ''c2Zvcm1TdmcoWi56b29tVHJhbnNmb3JtKExuLl96b29tU2VsZWN0aW9uLm5vZGUoKSkudG9TdHJpbmcoKSxJZS5jYWxsKExuLGxpKS50b1N0cmluZygpKShYdSkpfX0pfSkub24oImVuZCIsZnVuY3Rpb24oKXtEbC5jYWxsKHRoaXMpLExuLl96b29tQmVoYXZpb3ImJlRlLmNhbGwoTG4sbGkp''@;'; put 'put ''fSl9ZWxzZSBMbi5fem9vbUJlaGF2aW9yJiYoJHM9SWUuY2FsbChMbixsaSkudG9TdHJpbmcoKSk7U2kuYXR0cihKdSwkcyl9fX1jYXRjaChRMil7UmY9ITAsUXU9UTJ9ZmluYWxseXt0cnl7IWl1JiZLcy5yZXR1cm4mJktzLnJldHVybigpfWZpbmFsbHl7aWYoUmYpdGhyb3cgUXV9fWVsJiZT''@;'; put 'put ''aS5vbigiZW5kIixmdW5jdGlvbihRMixYdSxnYyl7SihHbz1CLnNlbGVjdCh0aGlzKSxRMikuZGF0YShbUTJdLGZ1bmN0aW9uKCl7cmV0dXJuIFEyLmtleX0pfSksT3IudGV4dCYmU2kudGV4dChPci50ZXh0KSxmdW5jdGlvbiBKbihPcil7dmFyIGxpPU9yLnNlbGVjdEFsbChmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBPci5ub2RlKCkuY2hpbGROb2Rlc30pLElpPShsaT1saS5kYXRhKGZ1bmN0aW9uKGQwKXtyZXR1cm4gZDAuY2hpbGRyZW59LGZ1bmN0aW9uKGQwKXtyZXR1cm4gZDAua2V5fSkpLmVudGVyKCkuYXBwZW5kKGZ1bmN0aW9uKGQwKXt2YXIgXzA9ZWUoZDApO3JldHVybiIjdGV4dCI9''@;'; put 'put ''PWQwLnRhZyYmY24mJihfMC5ub2RlVmFsdWU9ZDAudGV4dCksXzB9KTsoY258fGpuJiZWKE9yLmRhdHVtKCkpKSYmSWkuZmlsdGVyKGZ1bmN0aW9uKGQwKXtyZXR1cm4iIyI9PWQwLnRhZ1swXT9udWxsOnRoaXN9KS5lYWNoKGZ1bmN0aW9uKGQwKXt2YXIgXzA9Qi5zZWxlY3QodGhpcyksVTA9''@;'; put 'put ''ITAsQmk9ITEsajA9dm9pZCAwO3RyeXtmb3IodmFyIEtvLEFvPU9iamVjdC5rZXlzKGQwLmF0dHJpYnV0ZXMpW1N5bWJvbC5pdGVyYXRvcl0oKTshKFUwPShLbz1Bby5uZXh0KCkpLmRvbmUpO1UwPSEwKXt2YXIgZmE9S28udmFsdWU7XzAuYXR0cihmYSxkMC5hdHRyaWJ1dGVzW2ZhXSl9fWNh''@;'; put 'put ''dGNoKEppKXtCaT0hMCxqMD1KaX1maW5hbGx5e3RyeXshVTAmJkFvLnJldHVybiYmQW8ucmV0dXJuKCl9ZmluYWxseXtpZihCaSl0aHJvdyBqMH19fSkuZmlsdGVyKGZ1bmN0aW9uKGQwKXtyZXR1cm4ic3ZnIj09ZDAudGFnfHwiZyI9PWQwLnRhZz9udWxsOnRoaXN9KS5zdHlsZSgib3BhY2l0''@;'; put 'put ''eSIsMCk7dmFyIGUwPWxpLmV4aXQoKTtxdCYmZTAuZWFjaChxdCksdW4mJihlMD1lMC50cmFuc2l0aW9uKHVuKSxjbiYmZTAuZmlsdGVyKGZ1bmN0aW9uKGQwKXtyZXR1cm4iIyI9PWQwLnRhZ1swXT9udWxsOnRoaXN9KS5zdHlsZSgib3BhY2l0eSIsMCkpLGUwPWUwLnJlbW92ZSgpLChsaT1J''@;'; put 'put ''aS5tZXJnZShsaSkpLmVhY2gob3IpfShsaSl9dmFyIGdyPXRoaXMuX3NlbGVjdGlvbjtpZihudWxsIT11bil7dmFyIEpyPXRoaXMuX2pvYnM7aWYoTG4uX2FjdGl2ZSlyZXR1cm4gSnIucHVzaChudWxsKSx0aGlzO2dyLnRyYW5zaXRpb24odW4pLnRyYW5zaXRpb24oKS5kdXJhdGlvbigwKS5v''@;'; put 'put ''bigiZW5kIixmdW5jdGlvbigpe0xuLl9hY3RpdmU9ITEsMCE9SnIubGVuZ3RoJiYoSnIuc2hpZnQoKSxMbi5yZW5kZXIoKSl9KSx0aGlzLl9hY3RpdmU9ITB9bnVsbCE9dW4mJmdyLnRyYW5zaXRpb24odW4pLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtMbi5fZGlzcGF0Y2guY2FsbCgidHJhbnNp''@;'; put 'put ''dGlvblN0YXJ0IixMbil9KS5vbigiZW5kIixmdW5jdGlvbigpe0xuLl9kaXNwYXRjaC5jYWxsKCJ0cmFuc2l0aW9uRW5kIixMbil9KS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMCkub24oInN0YXJ0IixmdW5jdGlvbigpe0xuLl9kaXNwYXRjaC5jYWxsKCJyZXN0b3JlRW5kIixMbiksTG4uX2Rp''@;'; put 'put ''c3BhdGNoLmNhbGwoImVuZCIsTG4pLHZuJiZ2bi5jYWxsKExuKX0pO3ZhciBWcj10aGlzLl9kYXRhLHRpPWdyLnNlbGVjdEFsbCgic3ZnIikuZGF0YShbVnJdLGZ1bmN0aW9uKE9yKXtyZXR1cm4gT3Iua2V5fSk7cmV0dXJuIHRpPXRpLmVudGVyKCkuYXBwZW5kKCJzdmciKS5tZXJnZSh0aSks''@;'; put 'put ''b3IuY2FsbCh0aS5ub2RlKCksVnIpLHRoaXMuX29wdGlvbnMuem9vbSYmIXRoaXMuX3pvb21CZWhhdmlvciYmU2UuY2FsbCh0aGlzKSxMbi5fZGlzcGF0Y2guY2FsbCgicmVuZGVyRW5kIixMbiksbnVsbD09dW4mJih0aGlzLl9kaXNwYXRjaC5jYWxsKCJlbmQiLHRoaXMpLHZuJiZ2bi5jYWxs''@;'; put 'put ''KHRoaXMpKSx0aGlzfWZ1bmN0aW9uIERlKHZuLHVuKXtpZigicG9seWdvbiI9PXZuLnRhZyl7KGNuPXZlKHZuKSkudGFnPSJwYXRoIjt2YXIgR3Q9dmUoU249dm4uYXR0cmlidXRlcyksRW49U24ucG9pbnRzO2lmKCJwb2x5Z29uIj09dW4udGFnKXsoam49dm4uYmJveCkuY3g9am4ueCtqbi53''@;'; put 'put ''aWR0aC8yLGpuLmN5PWpuLnkram4uaGVpZ2h0LzI7Zm9yKHZhciBMbj1Tbi5wb2ludHMuc3BsaXQoIiAiKSxKbj1Mbi5tYXAoZnVuY3Rpb24oTWEpe3ZhciB5bD1NYS5zcGxpdCgiLCIpO3JldHVyblt5bFswXS1qbi5jeCx5bFsxXS1qbi5jeV19KSxvcj1KbltKbi5sZW5ndGgtMV1bMF0sZ3I9''@;'; put 'put ''Sm5bSm4ubGVuZ3RoLTFdWzFdLEpyPTA7SnI8Sm4ubGVuZ3RoO0pyKyssb3I9VnIsZ3I9dGkpe3ZhciBPcj0oVnI9Sm5bSnJdWzBdKS1vcjtpZigwIT0obGk9KHRpPUpuW0pyXVsxXSktZ3IpJiYwPD0oSWk9b3ItZ3IqT3IvbGkpJiZJaTwxLzAmJihvcjw9SWkmJklpPD1Wcnx8VnI8PUlpJiZJ''@;'; put 'put ''aTw9b3IpKWJyZWFrfXZhciByMD1bW2puLmN4K0lpLGpuLmN5KzBdLmpvaW4oIiwiKV07RW49KHIwPShyMD1yMC5jb25jYXQoTG4uc2xpY2UoSnIpKSkuY29uY2F0KExuLnNsaWNlKDAsSnIpKSkuam9pbigiICIpfUd0LmQ9Ik0iK0VuKyJ6IixkZWxldGUgR3QucG9pbnRzLGNuLmF0dHJpYnV0''@;'; put 'put ''ZXM9R3R9ZWxzZXt2YXIgY247KGNuPXZlKHZuKSkudGFnPSJwYXRoIixHdD12ZShTbj12bi5hdHRyaWJ1dGVzKTt2YXIgU24sVnIsdGksSWksZTA9U24uY3gsZDA9U24uY3ksXzA9U24ucngsVTA9U24ucnk7aWYoInBvbHlnb24iPT11bi50YWcpe3ZhciBqbjsoam49dW4uYmJveCkuY3g9am4u''@;'; put 'put ''eCtqbi53aWR0aC8yLGpuLmN5PWpuLnkram4uaGVpZ2h0LzI7dmFyIEJpPXVuLmF0dHJpYnV0ZXMucG9pbnRzLnNwbGl0KCIgIilbMF0uc3BsaXQoIiwiKSxsaT0oT3I9QmlbMF0tam4uY3gsQmlbMV0tam4uY3kpLEtvPU1hdGguc3FydChNYXRoLnBvdyhPciwyKStNYXRoLnBvdyhsaSwyKSks''@;'; put 'put ''ZmE9T3IvS28sZWw9LWxpL0tvfWVsc2UgZmE9MSxlbD0wO0d0LmQ9Ik0gIitlMCsiICIrZDArIiBtICIrKFZyPV8wKmZhKSsiLCIrKHRpPS1VMCplbCkrIiBhICIrXzArIiwiK1UwKyIgMCAxLDAgIisoT3I9KElpPV8wKi1mYSktVnIpKyIsIisobGk9LVUwKi1lbC10aSkrIiBhICIrXzArIiwi''@;'; put 'put ''K1UwKyIgMCAxLDAgIistT3IrIiwiKy1saSsieiIsZGVsZXRlIEd0LmN4LGRlbGV0ZSBHdC5jeSxkZWxldGUgR3QucngsZGVsZXRlIEd0LnJ5LGNuLmF0dHJpYnV0ZXM9R3R9cmV0dXJuIGNufWZ1bmN0aW9uICRlKCl7aWYobnVsbD09dGhpcy5fd29ya2VyKWllKCIiKSx0aGlzLl9kaXNwYXRj''@;'; put 'put ''aC5jYWxsKCJpbml0RW5kIix0aGlzKTtlbHNle3ZhciB2bj10aGlzLl92aXpVUkwsdW49dGhpczt0aGlzLl93b3JrZXIub25tZXNzYWdlPWZ1bmN0aW9uKGNuKXt1bi5fZGlzcGF0Y2guY2FsbCgiaW5pdEVuZCIsdGhpcyl9LHZuLm1hdGNoKC9eaHR0cHM/OlwvXC98XlwvXC8vaSl8fCh2bj1u''@;'; put 'put ''ZXcgd2luZG93LlVSTCh2bixkb2N1bWVudC5sb2NhdGlvbi5ocmVmKS5ocmVmKSx0aGlzLl93b3JrZXIucG9zdE1lc3NhZ2Uoe2RvdDoiIix2aXpVUkw6dm59KX19aWU9aWUmJmllLmhhc093blByb3BlcnR5KCJkZWZhdWx0Iik/aWUuZGVmYXVsdDppZTt2YXIgdG4scG49ZnVuY3Rpb24odm4s''@;'; put 'put ''dW4sY24pe3JldHVybiB1biBpbiB2bj9PYmplY3QuZGVmaW5lUHJvcGVydHkodm4sdW4se3ZhbHVlOmNuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dm5bdW5dPWNuLHZufSxibj1mdW5jdGlvbih2bil7aWYoQXJyYXkuaXNBcnJheSh2bikpe2Zvcih2YXIg''@;'; put 'put ''dW49MCxjbj1BcnJheSh2bi5sZW5ndGgpO3VuPHZuLmxlbmd0aDt1bisrKWNuW3VuXT12blt1bl07cmV0dXJuIGNufXJldHVybiBBcnJheS5mcm9tKHZuKX07ZnVuY3Rpb24gTm4odm4sdW4sY24sU24pe3ZhciBHdD1bdm4qY24tKHVuPS11bikqKFNuPS1Tbiksdm4qU24rdW4qY25dO3JldHVy''@;'; put 'put ''blt2bj1HdFswXSx1bj0tKHVuPUd0WzFdKV19ZnVuY3Rpb24gdXIodm4sdW4sY24sU24sR3QsRW4sam4pe3ZhciBMbj1OKG5yKEVuKSk7dm4uZGF0YShbTG5dKSxkZS5jYWxsKHZuLm5vZGUoKSxMbiksWG4odm4sdW4sY24sU24sR3QsRW4sam4pfWZ1bmN0aW9uIFhuKHZuLHVuLGNuLFNuLEd0''@;'; put 'put ''LEVuLGpuKXt2YXIgcXQ9am4uc2hvcnRlbmluZ3x8MCxncj1bWzAsLTMuNV0sWzEwLDBdLFswLDMuNV0sWzAsLTMuNV1dLEpyPVNuLXVuLFZyPUd0LWNuLHRpPU1hdGguc3FydChKcipKcitWcipWcik7aWYoMD09dGkpdmFyIE9yPTEsbGk9MDtlbHNlIE9yPUpyL3RpLGxpPVZyL3RpO2lmKFNu''@;'; put 'put ''PXVuKyh0aS1xdC0xMC0uMTc0KSpPcixHdD1jbisodGktcXQtMTAtLjE3NCkqbGksRW4uVVJMfHxFbi50b29sdGlwKXZhciBJaT12bi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiYSIpLHIwPUlpLnNlbGVjdFdpdGhvdXRE''@;'; put 'put ''YXRhUHJvcGFnYXRpb24oInBhdGgiKSxlMD1JaS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwb2x5Z29uIik7ZWxzZSByMD12bi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwYXRoIiksZTA9dm4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicG9seWdvbiIpO3Zh''@;'; put 'put ''ciBkMD1ZLnBhdGgoKTtkMC5tb3ZlVG8odW4sY24pLGQwLmxpbmVUbyhTbixHdCkscjAuYXR0cigiZCIsZDApLFNuPXVuKyh0aS1xdC0xMCkqT3IsR3Q9Y24rKHRpLXF0LTEwKSpsaTtmb3IodmFyIF8wPTA7XzA8Z3IubGVuZ3RoO18wKyspZ3JbXzBdPU5uKChVMD1ncltfMF0pWzBdLFUwWzFd''@;'; put 'put ''LE9yLGxpKTtmb3IoXzA9MDtfMDxnci5sZW5ndGg7XzArKylncltfMF09W1NuKyhVMD1ncltfMF0pWzBdLEd0K1UwWzFdXTt2YXIgQmk9W107Zm9yKF8wPTA7XzA8Z3IubGVuZ3RoO18wKyspe3ZhciBVMDtCaS5wdXNoKChVMD1ncltfMF0pLmpvaW4oIiwiKSl9dmFyIGowPUJpLmpvaW4oIiAi''@;'; put 'put ''KTtyZXR1cm4gZTAuYXR0cigicG9pbnRzIixqMCksdGhpc31mdW5jdGlvbiB4cigpe3JldHVybiB0aGlzLl9kcmF3bkVkZ2U/KHRoaXMuX2RyYXduRWRnZS5nLnJlbW92ZSgpLHRoaXMuX2RyYXduRWRnZT1udWxsLHRoaXMpOnRoaXN9ZnVuY3Rpb24gZHIoKXtyZXR1cm4gdGhpcy5fZHJhd25F''@;'; put 'put ''ZGdlP3RoaXMuX2RyYXduRWRnZS5nOkIuc2VsZWN0KG51bGwpfWZ1bmN0aW9uIG5yKHZuKXt2YXIgdW49IiIsY249ITAsU249ITEsR3Q9dm9pZCAwO3RyeXtmb3IodmFyIGpuLEVuPU9iamVjdC5rZXlzKHZuKVtTeW1ib2wuaXRlcmF0b3JdKCk7IShjbj0oam49RW4ubmV4dCgpKS5kb25lKTtj''@;'; put 'put ''bj0hMCl7dmFyIHF0PWpuLnZhbHVlO251bGwhPXZuW3F0XSYmKHVuKz0nICInK3F0KyciPSInK3ZuW3F0XSsnIicpfX1jYXRjaCh0aSl7U249ITAsR3Q9dGl9ZmluYWxseXt0cnl7IWNuJiZFbi5yZXR1cm4mJkVuLnJldHVybigpfWZpbmFsbHl7aWYoU24pdGhyb3cgR3R9fXZhciBKbj1pZSgi''@;'; put 'put ''ZGlncmFwaCB7YSAtPiBiIFsiK3VuKyJdfSIse2Zvcm1hdDoic3ZnIn0pLGdyPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKEpuLCJpbWFnZS9zdmcreG1sIik7cmV0dXJuIEIuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kKGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGdyLmRvY3VtZW50RWxlbWVudH0pLnNlbGVjdCgiLmVkZ2UiKX1mdW5jdGlvbiBZdCh2bix1bixjbixTbixHdCxFbil7dmFyIHF0PU4oX24oU24sR3QpKTtyZXR1cm4gdm4uZGF0YShbcXRdKSxkZS5jYWxsKHZuLm5vZGUoKSxxdCksZ24odm4sdW4sY24sR3QpLHRo''@;'; put 'put ''aXN9ZnVuY3Rpb24gZ24odm4sdW4sY24sU24sR3Qpe2lmKFNuLlVSTHx8U24udG9vbHRpcCl2YXIgRW49dm4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImEiKTtlbHNlIEVuPXZuO3ZhciBqbj1Fbi5zZWxlY3RBbGwoImVs''@;'; put 'put ''bGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIikscXQ9dm4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGV4dCIpO2lmKDAhPWpuLnNpemUoKSl7dmFyIExuPWpuLm5vZGUoKS5nZXRCQm94KCk7TG4uY3g9TG4ueCtMbi53aWR0aC8yLExuLmN5PUxuLnkrTG4uaGVpZ2h0LzJ9ZWxz''@;'; put 'put ''ZSAwIT1xdC5zaXplKCkmJihMbj17eDorcXQuYXR0cigieCIpLHk6K3F0LmF0dHIoInkiKSx3aWR0aDowLGhlaWdodDowLGN4OitxdC5hdHRyKCJ4IiksY3k6K3F0LmF0dHIoInkiKX0pO3JldHVybiBqbi5lYWNoKGZ1bmN0aW9uKEpuLG9yKXt2YXIgZ3I9Qi5zZWxlY3QodGhpcyk7aWYoZ3Iu''@;'; put 'put ''YXR0cigiY3giKSlnci5hdHRyKCJjeCIsQWUodW4pKS5hdHRyKCJjeSIsQWUoY24pKTtlbHNlIGlmKGdyLmF0dHIoInBvaW50cyIpKXt2YXIgSnI9Z3IuYXR0cigicG9pbnRzIikudHJpbSgpO2dyLmF0dHIoInBvaW50cyIsZnVuY3Rpb24gUGUoRW4sdW4sY24pe3ZhciBHdCxTbj0oR3Q9RW4u''@;'; put 'put ''c3BsaXQoIiAiKSkubWFwKGZ1bmN0aW9uKGpuKXtyZXR1cm4gam4uc3BsaXQoIiwiKX0pO3JldHVybiBTbj1HdC5tYXAoZnVuY3Rpb24oam4pe3JldHVybltBZSgrdW4rICtqbi5zcGxpdCgiLCIpWzBdKSxBZSgrY24rICtqbi5zcGxpdCgiLCIpWzFdKV19KSwoRW49KEd0PVNuLm1hcChmdW5j''@;'; put 'put ''dGlvbihqbil7cmV0dXJuIGpuLmpvaW4oIiwiKX0pKS5qb2luKCIgIikpLnJlcGxhY2UoLy0wXC4vZywiLS4iKS5yZXBsYWNlKC8gMFwuL2csIiAuIil9KEpyLHVuLUxuLmN4LGNuLUxuLmN5KSl9ZWxzZXt2YXIgVnI9Z3IuYXR0cigiZCIpO2dyLmF0dHIoImQiLGZ1bmN0aW9uIFFlKHZuLHVu''@;'; put 'put ''LGNuKXsoRW49dm4uc3BsaXQoL1tBLVogXS8pKS5zaGlmdCgpO3ZhciBTbj12bi5zcGxpdCgvW15bQS1aIF0rLyksRW49KEVuLm1hcChmdW5jdGlvbihqbil7cmV0dXJuIGpuLnNwbGl0KCIsIil9KSxFbi5tYXAoZnVuY3Rpb24oam4pe3JldHVybltBZSgrdW4rICtqbi5zcGxpdCgiLCIpWzBd''@;'; put 'put ''KSxBZSgrY24rICtqbi5zcGxpdCgiLCIpWzFdKV19KS5tYXAoZnVuY3Rpb24oam4pe3JldHVybiBqbi5qb2luKCIsIil9KSk7cmV0dXJuKHZuPVNuLnJlZHVjZShmdW5jdGlvbihqbixxdCxMbil7cmV0dXJuIGpuLmNvbmNhdChxdCxFbltMbl0pfSxbXSkuam9pbigiIikpLnJlcGxhY2UoLy0w''@;'; put 'put ''XC4vZywiLS4iKS5yZXBsYWNlKC8gMFwuL2csIiAuIil9KFZyLHVuLUxuLmN4LGNuLUxuLmN5KSl9fSksMCE9cXQuc2l6ZSgpJiZxdC5hdHRyKCJ4IixBZSgrcXQuYXR0cigieCIpK3VuLUxuLmN4KSkuYXR0cigieSIsQWUoK3F0LmF0dHIoInkiKStjbi1Mbi5jeSkpLHRoaXN9ZnVuY3Rpb24g''@;'; put 'put ''VnQoKXtpZighdGhpcy5fZHJhd25Ob2RlKXJldHVybiB0aGlzO3ZhciB2bj10aGlzLl9kcmF3bk5vZGUuZztyZXR1cm4gdm4uZW1wdHkoKXx8dm4ucmVtb3ZlKCksdGhpcy5fZHJhd25Ob2RlPW51bGwsdGhpc31mdW5jdGlvbiBVbigpe3JldHVybiB0aGlzLl9kcmF3bk5vZGU/dGhpcy5fZHJh''@;'; put 'put ''d25Ob2RlLmc6Qi5zZWxlY3QobnVsbCl9ZnVuY3Rpb24gX24odm4sdW4pe3ZhciBjbj0iIixTbj0hMCxHdD0hMSxFbj12b2lkIDA7dHJ5e2Zvcih2YXIgcXQsam49T2JqZWN0LmtleXModW4pW1N5bWJvbC5pdGVyYXRvcl0oKTshKFNuPShxdD1qbi5uZXh0KCkpLmRvbmUpO1NuPSEwKXt2YXIg''@;'; put 'put ''TG49cXQudmFsdWU7bnVsbCE9dW5bTG5dJiYoY24rPScgIicrTG4rJyI9IicrdW5bTG5dKyciJyl9fWNhdGNoKE9yKXtHdD0hMCxFbj1Pcn1maW5hbGx5e3RyeXshU24mJmpuLnJldHVybiYmam4ucmV0dXJuKCl9ZmluYWxseXtpZihHdCl0aHJvdyBFbn19dmFyIG9yPWllKCdncmFwaCB7Iicr''@;'; put 'put ''dm4rJyIgWycrY24rIl19Iix7Zm9ybWF0OiJzdmcifSksSnI9KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcob3IsImltYWdlL3N2Zyt4bWwiKTtyZXR1cm4gQi5zZWxlY3QoZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmQoZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gSnIuZG9jdW1lbnRFbGVtZW50fSkuc2VsZWN0KCIubm9kZSIpfWZ1bmN0aW9uIEduKHZuLHVuKXtpZih0aGlzLl9vcHRpb25zPXt1c2VXb3JrZXI6ITAsZW5naW5lOiJkb3QiLHRvdGFsTWVtb3J5OnZvaWQgMCxrZXlNb2RlOiJ0aXRsZSIsZmFkZTohMCx0d2VlblBhdGhzOiEwLHR3''@;'; put 'put ''ZWVuU2hhcGVzOiEwLGNvbnZlcnRFcXVhbFNpZGVkUG9seWdvbnM6ITAsdHdlZW5QcmVjaXNpb246MSxncm93RW50ZXJpbmdFZGdlczohMCx6b29tOiEwLHpvb21TY2FsZUV4dGVudDpbLjEsMTBdLHpvb21UcmFuc2xhdGVFeHRlbnQ6W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0sd2lkdGg6bnVs''@;'; put 'put ''bCxoZWlnaHQ6bnVsbCxzY2FsZToxLGZpdDohMX0sdW4gaW5zdGFuY2VvZiBPYmplY3Qpe3ZhciBjbj0hMCxTbj0hMSxHdD12b2lkIDA7dHJ5e2Zvcih2YXIgam4sRW49T2JqZWN0LmtleXModW4pW1N5bWJvbC5pdGVyYXRvcl0oKTshKGNuPShqbj1Fbi5uZXh0KCkpLmRvbmUpO2NuPSEwKXt2''@;'; put 'put ''YXIgcXQ9am4udmFsdWU7dGhpcy5fb3B0aW9uc1txdF09dW5bcXRdfX1jYXRjaCh0aSl7U249ITAsR3Q9dGl9ZmluYWxseXt0cnl7IWNuJiZFbi5yZXR1cm4mJkVuLnJldHVybigpfWZpbmFsbHl7aWYoU24pdGhyb3cgR3R9fX1lbHNlImJvb2xlYW4iPT10eXBlb2YgdW4mJih0aGlzLl9vcHRp''@;'; put 'put ''b25zLnVzZVdvcmtlcj11bik7dmFyIExuPXRoaXMuX29wdGlvbnMudXNlV29ya2VyO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgV29ya2VyJiYoTG49ITEpLExuKXt2YXIgb3I9Qi5zZWxlY3RBbGwoInNjcmlwdCIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiJqYXZhc2NyaXB0L3dvcmtlciI9''@;'; put 'put ''PUIuc2VsZWN0KHRoaXMpLmF0dHIoInR5cGUiKXx8Qi5zZWxlY3QodGhpcykuYXR0cigic3JjIikmJkIuc2VsZWN0KHRoaXMpLmF0dHIoInNyYyIpLm1hdGNoKC8uKlwvdml6LmpzJC8pfSk7MD09b3Iuc2l6ZSgpPyhjb25zb2xlLndhcm4oJ05vIHNjcmlwdCB0YWcgb2YgdHlwZSAiamF2YXNj''@;'; put 'put ''cmlwdC93b3JrZXIiIHdhcyBmb3VuZCBhbmQgInVzZVdvcmtlciIgaXMgdHJ1ZS4gTm90IHVzaW5nIHdlYiB3b3JrZXIuJyksTG49ITEpOih0aGlzLl92aXpVUkw9b3IuYXR0cigic3JjIiksdGhpcy5fdml6VVJMfHwoY29uc29sZS53YXJuKCdObyAic3JjIiBhdHRyaWJ1dGUgb2Ygd2FzIGZv''@;'; put 'put ''dW5kIG9uIHRoZSAiamF2YXNjcmlwdC93b3JrZXIiIHNjcmlwdCB0YWcgYW5kICJ1c2VXb3JrZXIiIGlzIHRydWUuIE5vdCB1c2luZyB3ZWIgd29ya2VyLicpLExuPSExKSl9aWYoTG4pe3ZhciBKcj1uZXcgQmxvYihbJ1xuICAgICAgICAgICAgb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQp''@;'; put 'put ''IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS52aXpVUkwpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0U2NyaXB0cyhldmVudC5kYXRhLnZpelVSTCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZh''@;'; put 'put ''ciBzdmcgPSBWaXooZXZlbnQuZGF0YS5kb3QsIGV2ZW50LmRhdGEub3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6''@;'; put 'put ''ICJlcnJvciIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN2Zykge1xuICAgICAg''@;'; put 'put ''ICAgICAgICAgICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZG9uZSIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdmc6IHN2ZyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAg''@;'; put 'put ''ICAgICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInNraXAiLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICddKSxWcj13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChK''@;'; put 'put ''cik7dGhpcy5fd29ya2VyPW5ldyBXb3JrZXIoVnIpfXRoaXMuX3NlbGVjdGlvbj12bix0aGlzLl9hY3RpdmU9ITEsdGhpcy5fYnVzeT0hMSx0aGlzLl9qb2JzPVtdLHRoaXMuX3F1ZXVlPVtdLHRoaXMuX2tleU1vZGVzPW5ldyBTZXQoWyJ0aXRsZSIsImlkIiwidGFnLWluZGV4IiwiaW5kZXgi''@;'; put 'put ''XSksdGhpcy5faW1hZ2VzPVtdLHRoaXMuX3RyYW5zbGF0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fZXZlbnRUeXBlcz1bImluaXRFbmQiLCJzdGFydCIsImxheW91dFN0YXJ0IiwibGF5b3V0RW5kIiwiZGF0YUV4dHJhY3RFbmQiLCJkYXRhUHJvY2Vzc1Bhc3MxRW5kIiwi''@;'; put 'put ''ZGF0YVByb2Nlc3NQYXNzMkVuZCIsImRhdGFQcm9jZXNzRW5kIiwicmVuZGVyU3RhcnQiLCJyZW5kZXJFbmQiLCJ0cmFuc2l0aW9uU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwicmVzdG9yZUVuZCIsImVuZCJdLHRoaXMuX2Rpc3BhdGNoPUUuZGlzcGF0Y2guYXBwbHkodm9pZCAwLGJuKHRoaXMu''@;'; put 'put ''X2V2ZW50VHlwZXMpKSwkZS5jYWxsKHRoaXMpLHZuLm5vZGUoKS5fX2dyYXBodml6X189dGhpc31mdW5jdGlvbiBUcih2bix1bil7cmV0dXJuIEIuc2VsZWN0KHZuKS5ncmFwaHZpeih1bil9R24ucHJvdG90eXBlPVRyLnByb3RvdHlwZT0ocG4odG49e2NvbnN0cnVjdG9yOkduLGVuZ2luZTpm''@;'; put 'put ''dW5jdGlvbih2bil7cmV0dXJuIHRoaXMuX29wdGlvbnMuZW5naW5lPXZuLHRoaXN9LGFkZEltYWdlOmZ1bmN0aW9uKHZuLHVuLGNuKXtyZXR1cm4gdGhpcy5faW1hZ2VzLnB1c2goe3BhdGg6dm4sd2lkdGg6dW4saGVpZ2h0OmNufSksdGhpc30sdG90YWxNZW1vcnk6ZnVuY3Rpb24odm4pe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9vcHRpb25zLnRvdGFsTWVtb3J5PXZuLHRoaXN9LGtleU1vZGU6ZnVuY3Rpb24odm4pe2lmKCF0aGlzLl9rZXlNb2Rlcy5oYXModm4pKXRocm93IEVycm9yKCJJbGxlZ2FsIGtleU1vZGU6ICIrdm4pO2lmKHZuIT10aGlzLl9vcHRpb25zLmtleU1vZGUmJm51bGwhPXRoaXMu''@;'; put 'put ''X2RhdGEpdGhyb3cgRXJyb3IoIlRvbyBsYXRlIHRvIGNoYW5nZSBrZXlNb2RlIik7cmV0dXJuIHRoaXMuX29wdGlvbnMua2V5TW9kZT12bix0aGlzfSxmYWRlOmZ1bmN0aW9uKHZuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5mYWRlPXZuLHRoaXN9LHR3ZWVuUGF0aHM6ZnVuY3Rpb24odm4pe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9vcHRpb25zLnR3ZWVuUGF0aHM9dm4sdGhpc30sdHdlZW5TaGFwZXM6ZnVuY3Rpb24odm4pe3JldHVybiB0aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzPXZuLHZuJiYodGhpcy5fb3B0aW9ucy50d2VlblBhdGhzPSEwKSx0aGlzfSxjb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25z''@;'; put 'put ''OmZ1bmN0aW9uKHZuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5jb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zPXZuLHRoaXN9LHR3ZWVuUHJlY2lzaW9uOmZ1bmN0aW9uKHZuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbj12bix0aGlzfSxncm93RW50ZXJpbmdFZGdlczpmdW5j''@;'; put 'put ''dGlvbih2bil7cmV0dXJuIHRoaXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXM9dm4sdGhpc30sem9vbTpmdW5jdGlvbih2bil7cmV0dXJuIHRoaXMuX29wdGlvbnMuem9vbT12bix0aGlzLl9vcHRpb25zLnpvb20mJiF0aGlzLl96b29tQmVoYXZpb3ImJlNlLmNhbGwodGhpcyksdGhpc30s''@;'; put 'put ''cmVzZXRab29tOmZ1bmN0aW9uIEVlKHZuKXt2YXIgdW49dGhpcy5fem9vbVNlbGVjdGlvbjtyZXR1cm4gdm4mJih1bj11bi50cmFuc2l0aW9uKHZuKSksdW4uY2FsbCh0aGlzLl96b29tQmVoYXZpb3IudHJhbnNmb3JtLHRoaXMuX29yaWdpbmFsVHJhbnNmb3JtKSx0aGlzfSx6b29tQmVoYXZp''@;'; put 'put ''b3I6ZnVuY3Rpb24geigpe3JldHVybiB0aGlzLl96b29tQmVoYXZpb3J8fG51bGx9LHpvb21TZWxlY3Rpb246ZnVuY3Rpb24gbmUoKXtyZXR1cm4gdGhpcy5fem9vbVNlbGVjdGlvbnx8bnVsbH0sem9vbVNjYWxlRXh0ZW50OmZ1bmN0aW9uIGhlKHZuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy56''@;'; put 'put ''b29tU2NhbGVFeHRlbnQ9dm4sdGhpc30sem9vbVRyYW5zbGF0ZUV4dGVudDpmdW5jdGlvbiBPKHZuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy56b29tVHJhbnNsYXRlRXh0ZW50PXZuLHRoaXN9LHJlbmRlcjpmdW5jdGlvbih2bil7cmV0dXJuIHRoaXMuX2J1c3k/KHRoaXMuX3F1ZXVlLnB1c2go''@;'; put 'put ''dGhpcy5yZW5kZXIuYmluZCh0aGlzLHZuKSksdGhpcyk6KHRoaXMuX2Rpc3BhdGNoLmNhbGwoInJlbmRlclN0YXJ0Iix0aGlzKSx0aGlzLl90cmFuc2l0aW9uRmFjdG9yeT9VLnRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uPU1lLnRyYW5zaXRpb24odGhpcy5fdHJhbnNpdGlv''@;'; put 'put ''bkZhY3RvcnkoKSksQ2UuY2FsbCh0aGlzLHZuKX0uYmluZCh0aGlzKSwwKTpDZS5jYWxsKHRoaXMsdm4pLHRoaXMpfSxkb3Q6ZnVuY3Rpb24odm4sdW4pe3ZhciBjbj10aGlzLFNuPXRoaXMuX3dvcmtlcixHdD10aGlzLl9vcHRpb25zLmVuZ2luZSxFbj10aGlzLl9pbWFnZXMsam49dGhpcy5f''@;'; put 'put ''b3B0aW9ucy50b3RhbE1lbW9yeSxxdD10aGlzLl9vcHRpb25zLmtleU1vZGUsTG49dGhpcy5fb3B0aW9ucy50d2VlblBhdGhzLEpuPXRoaXMuX29wdGlvbnMudHdlZW5TaGFwZXM7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uJiZ0aGlzLl9vcHRpb25z''@;'; put 'put ''LnR3ZWVuUHJlY2lzaW9uLmluY2x1ZGVzKCIlIikpdmFyIG9yPSt0aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uLnNwbGl0KCIlIilbMF0vMTAwLGdyPXRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb24uaW5jbHVkZXMoIiUiKTtlbHNlIG9yPXRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNp''@;'; put 'put ''b24sZ3I9ITE7dmFyIEpyPXRoaXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXMsVnI9e30sdGk9dGhpcy5fZGljdGlvbmFyeXx8e30sT3I9e30sbGk9dGhpcy5fbm9kZURpY3Rpb25hcnl8fHt9O2Z1bmN0aW9uIElpKEppLE1hKXt2YXIgeWw9SmkudGFnO2lmKCJpbmRleCI9PXF0KUppLmtl''@;'; put 'put ''eT1NYTtlbHNlIGlmKCIjIiE9eWxbMF0paWYoImlkIj09cXQpSmkua2V5PUppLmF0dHJpYnV0ZXMuaWQ7ZWxzZSBpZigidGl0bGUiPT1xdCl7dmFyIGZsPUppLmNoaWxkcmVuLmZpbmQoZnVuY3Rpb24ocGkpe3JldHVybiJ0aXRsZSI9PXBpLnRhZ30pO2ZsJiYoSmkua2V5PWZsLmNoaWxkcmVu''@;'; put 'put ''Lmxlbmd0aD4wP2ZsLmNoaWxkcmVuWzBdLnRleHQ6IiIpfW51bGw9PUppLmtleSYmKEpuJiYoImVsbGlwc2UiPT15bHx8InBvbHlnb24iPT15bCkmJih5bD0icGF0aCIpLEppLmtleT15bCsiLSIrTWEpfWZ1bmN0aW9uIHIwKEppLE1hKXtKaS5pZD0oTWE/TWEuaWQrIi4iOiIiKStKaS5rZXl9''@;'; put 'put ''ZnVuY3Rpb24gZTAoSmkpe1ZyW0ppLmlkXT1KaX1mdW5jdGlvbiBkMChKaSxNYSl7Sm4mJkppLmlkIGluIHRpJiYoInBvbHlnb24iPT1NYS50YWd8fCJlbGxpcHNlIj09TWEudGFnfHwicGF0aCI9PU1hLnRhZykmJihNYS50YWchPUppLnRhZ3x8InBvbHlnb24iPT1KaS50YWcpJiYoInBhdGgi''@;'; put 'put ''IT1NYS50YWcmJihKaS5hbHRlcm5hdGl2ZU9sZD1EZShNYSxKaSkpLCJwYXRoIiE9SmkudGFnJiYoSmkuYWx0ZXJuYXRpdmVOZXc9RGUoSmksTWEpKSl9ZnVuY3Rpb24gXzAoSmksTWEpe2lmKExuJiZNYSYmKCJwYXRoIj09TWEudGFnfHxKaS5hbHRlcm5hdGl2ZU9sZCYmInBhdGgiPT1KaS5h''@;'; put 'put ''bHRlcm5hdGl2ZU9sZC50YWcpKXt2YXIgeWw9KEppLmFsdGVybmF0aXZlTmV3fHxKaSkuYXR0cmlidXRlcy5kO2lmKEppLmFsdGVybmF0aXZlT2xkKXZhciBmbD1xKEppLmFsdGVybmF0aXZlT2xkKTtlbHNlIGZsPXEoTWEpOyhKaS5hbHRlcm5hdGl2ZU9sZHx8KEppLmFsdGVybmF0aXZlT2xk''@;'; put 'put ''PXt9KSkucG9pbnRzPWZ1bmN0aW9uIHgodm4sdW4sY24sU24pe2Zvcih2YXIgR3Q9dm4sRW49R3QuY2xvbmVOb2RlKCksam49R3QuZ2V0VG90YWxMZW5ndGgoKSxxdD0oRW4uc2V0QXR0cmlidXRlKCJkIix1biksRW4pLmdldFRvdGFsTGVuZ3RoKCksTG49WzBdLEpuPTAsb3I9U24/Y246Y24v''@;'; put 'put ''TWF0aC5tYXgoam4scXQpOyhKbis9b3IpPDE7KUxuLnB1c2goSm4pO3JldHVybiBMbi5wdXNoKDEpLExuLm1hcChmdW5jdGlvbihKcil7dmFyIFZyPUd0LmdldFBvaW50QXRMZW5ndGgoSnIqam4pLHRpPUVuLmdldFBvaW50QXRMZW5ndGgoSnIqcXQpO3JldHVybltbVnIueCxWci55XSxbdGku''@;'; put 'put ''eCx0aS55XV19KX0oZmwseWwsb3IsZ3IpfX1mdW5jdGlvbiBVMChKaSl7dmFyIHlsPWFyZ3VtZW50c1syXTtJaShKaSxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCkscjAoSmkseWwpO3ZhciBwaT10aVtKaS5pZF07ZTAoSmkpLGQwKEpp''@;'; put 'put ''LHBpKSxfMChKaSxwaSk7dmFyIHdpPXt9O0ppLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24obTApe3ZhciBHbz1tMC50YWc7KCJlbGxpcHNlIj09R298fCJwb2x5Z29uIj09R28pJiYoR289InBhdGgiKSxudWxsPT13aVtHb10mJih3aVtHb109MCksVTAobTAsd2lbR29dKyssSmkpfSl9ZnVu''@;'; put 'put ''Y3Rpb24gQW8oSmkpeyhmdW5jdGlvbiBCaShKaSl7aWYoSnImJkppLnBhcmVudCYmIm5vZGUiPT1KaS5wYXJlbnQuYXR0cmlidXRlcy5jbGFzcyYmInRpdGxlIj09SmkudGFnKXtpZihKaS5jaGlsZHJlbi5sZW5ndGg+MCl2YXIgZmw9SmkuY2hpbGRyZW5bMF0udGV4dDtlbHNlIGZsPSIiO09y''@;'; put 'put ''W2ZsXT1KaS5wYXJlbnR9fSkoSmkpLGZ1bmN0aW9uIGowKEppKXt2YXIgeWw9SmkudGFnO2lmKEpyJiYhdGlbSmkuaWRdJiZKaS5wYXJlbnQmJlQoSmkpJiYoInBhdGgiPT15bHx8InBvbHlnb24iPT15bCkpe2lmKCJwb2x5Z29uIj09eWwpe3ZhciBwaT1KaS5wYXJlbnQuY2hpbGRyZW4uZmlu''@;'; put 'put ''ZChmdW5jdGlvbihzbyl7cmV0dXJuInBhdGgiPT1zby50YWd9KTtKaS50b3RhbExlbmd0aD1waS50b3RhbExlbmd0aH12YXIgbTA9ZnVuY3Rpb24gRih2bil7cmV0dXJuIGZ1bmN0aW9uIFModm4pe3JldHVybiJlZGdlIj09dm4ucGFyZW50LmF0dHJpYnV0ZXMuY2xhc3M/dm4ucGFyZW50OnZu''@;'; put 'put ''LnBhcmVudC5wYXJlbnQucGFyZW50fSh2bikuY2hpbGRyZW4uZmluZChmdW5jdGlvbih1bil7cmV0dXJuInRpdGxlIj09dW4udGFnfSl9KEppKS5jaGlsZHJlblswXSxHbz1tMC50ZXh0LnNwbGl0KCItPiIpOzIhPUdvLmxlbmd0aCYmKEdvPW0wLnRleHQuc3BsaXQoIi0tIikpO3ZhciBjMj1H''@;'; put 'put ''b1swXSxTaT1PcltjMl0sWGw9bGlbYzJdO2lmKFhsKXtpZigocTA9U2kuY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKHNvLEFuKXtyZXR1cm4iZyI9PXNvLnRhZ30pKT49MCl7dmFyIEl1PVNpLmNoaWxkcmVuW3EwXS5jaGlsZHJlbi5maW5kSW5kZXgoZnVuY3Rpb24oc28sQW4pe3JldHVy''@;'; put 'put ''biJhIj09c28udGFnfSk7U2k9U2kuY2hpbGRyZW5bcTBdLmNoaWxkcmVuW0l1XX0ocTA9WGwuY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKHNvLEFuKXtyZXR1cm4iZyI9PXNvLnRhZ30pKT49MCYmKEl1PVhsLmNoaWxkcmVuW3EwXS5jaGlsZHJlbi5maW5kSW5kZXgoZnVuY3Rpb24oQW4s''@;'; put 'put ''SzApe3JldHVybiJhIj09QW4udGFnfSksWGw9WGwuY2hpbGRyZW5bcTBdLmNoaWxkcmVuW0l1XSk7Zm9yKHZhciBTcz1TaS5jaGlsZHJlbixxMD0wO3EwPFNzLmxlbmd0aDtxMCsrKWlmKCJwb2x5Z29uIj09U3NbcTBdLnRhZ3x8ImVsbGlwc2UiPT1Tc1txMF0udGFnfHwicGF0aCI9PVNzW3Ew''@;'; put 'put ''XS50YWd8fCJ0ZXh0Ij09U3NbcTBdLnRhZyl7dmFyIFcwPVNzW3EwXTticmVha312YXIgcW89WGwuY2hpbGRyZW47Zm9yKHEwPTA7cTA8cW8ubGVuZ3RoO3EwKyspaWYoInBvbHlnb24iPT1xb1txMF0udGFnfHwiZWxsaXBzZSI9PXFvW3EwXS50YWd8fCJwYXRoIj09cW9bcTBdLnRhZ3x8InRl''@;'; put 'put ''eHQiPT1xb1txMF0udGFnKXt2YXIgS2E9cW9bcTBdO2JyZWFrfUppLm9mZnNldD1LYSYmVzA/e3g6S2EuY2VudGVyLngtVzAuY2VudGVyLngseTpLYS5jZW50ZXIueS1XMC5jZW50ZXIueX06e3g6MCx5OjB9fX19KEppKSxKaS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKE1hKXtBbyhNYSl9''@;'; put 'put ''KX10aGlzLl9kaXNwYXRjaC5jYWxsKCJzdGFydCIsdGhpcyksdGhpcy5fYnVzeT0hMCx0aGlzLl9kaXNwYXRjaC5jYWxsKCJsYXlvdXRTdGFydCIsdGhpcyk7dmFyIEtvPXtmb3JtYXQ6InN2ZyIsZW5naW5lOkd0LGltYWdlczpFbix0b3RhbE1lbW9yeTpqbn07aWYodGhpcy5fd29ya2VyKVNu''@;'; put 'put ''LnBvc3RNZXNzYWdlKHtkb3Q6dm4sb3B0aW9uczpLb30pLFNuLm9ubWVzc2FnZT1mdW5jdGlvbihKaSl7c3dpdGNoKEppLmRhdGEudHlwZSl7Y2FzZSJkb25lIjpyZXR1cm4gZWwuY2FsbChjbixKaS5kYXRhLnN2Zyk7Y2FzZSJlcnJvciI6aWYoIWNuLl9vbmVycm9yKXRocm93IEppLmRhdGEu''@;'; put 'put ''ZXJyb3I7Y24uX29uZXJyb3IoSmkuZGF0YS5lcnJvcil9fTtlbHNle3RyeXt2YXIgZmE9aWUodm4sS28pfWNhdGNoKEppKXtpZihjbi5fb25lcnJvcilyZXR1cm4gY24uX29uZXJyb3IoSmkubWVzc2FnZSksdGhpczt0aHJvdyBKaS5tZXNzYWdlfWVsLmNhbGwodGhpcyxmYSl9ZnVuY3Rpb24g''@;'; put 'put ''ZWwoSmkpe3RoaXMuX2Rpc3BhdGNoLmNhbGwoImxheW91dEVuZCIsdGhpcyk7dmFyIE1hPUIuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kKCJkaXYiKSxmbD0obmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhKaSwiaW1hZ2Uvc3Zn''@;'; put 'put ''K3htbCIpO01hLmFwcGVuZChmdW5jdGlvbigpe3JldHVybiBmbC5kb2N1bWVudEVsZW1lbnR9KTt2YXIgd2k9TihNYS5zZWxlY3QoInN2ZyIpKTt0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRhRXh0cmFjdEVuZCIsdGhpcyksVTAod2kpLHRoaXMuX2Rpc3BhdGNoLmNhbGwoImRhdGFQcm9jZXNz''@;'; put 'put ''UGFzczFFbmQiLHRoaXMpLEFvKHdpKSx0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRhUHJvY2Vzc1Bhc3MyRW5kIix0aGlzKSx0aGlzLl9kYXRhPXdpLHRoaXMuX2RpY3Rpb25hcnk9VnIsdGhpcy5fbm9kZURpY3Rpb25hcnk9T3IsdGhpcy5fZXh0cmFjdERhdGE9ZnVuY3Rpb24oR28sYzIsU2kp''@;'; put 'put ''e3ZhciBYbD1OKEdvKTtyZXR1cm4gVTAoWGwsYzIsU2kpLEFvKFhsKSxYbH0sdGhpcy5fYnVzeT0hMSx0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRhUHJvY2Vzc0VuZCIsdGhpcyksdW4mJnVuLmNhbGwodGhpcyksdGhpcy5fcXVldWUubGVuZ3RoPjAmJnRoaXMuX3F1ZXVlLnNoaWZ0KCkuY2Fs''@;'; put 'put ''bCh0aGlzKX1yZXR1cm4gdGhpc30sZGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfHxudWxsfSxyZW5kZXJEb3Q6ZnVuY3Rpb24odm4sdW4pe3ZhciBjbj10aGlzO3JldHVybiB0aGlzLmRvdCh2bixmdW5jdGlvbiBTbigpe2NuLnJlbmRlcih1bil9KSx0aGlzfSx0cmFuc2l0aW9u''@;'; put 'put ''OmZ1bmN0aW9uKHZuKXtyZXR1cm4gdm4gaW5zdGFuY2VvZiBGdW5jdGlvbj90aGlzLl90cmFuc2l0aW9uRmFjdG9yeT12bjp0aGlzLl90cmFuc2l0aW9uPU1lLnRyYW5zaXRpb24odm4pLHRoaXN9LGFjdGl2ZTpmdW5jdGlvbiBtdCh2bil7dmFyIGNuPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RX''@;'; put 'put ''aXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKTtyZXR1cm4gMCE9Y24uc2l6ZSgpP01lLmFjdGl2ZShjbi5ub2RlKCksdm4pOm51bGx9LG9wdGlvbnM6ZnVuY3Rpb24odm4pe2lmKHZvaWQgMD09PXZuKXJldHVybiBPYmplY3QuYXNzaWduKHt9LHRoaXMuX29wdGlvbnMpO3ZhciB1bj0hMCxj''@;'; put 'put ''bj0hMSxTbj12b2lkIDA7dHJ5e2Zvcih2YXIgRW4sR3Q9T2JqZWN0LmtleXModm4pW1N5bWJvbC5pdGVyYXRvcl0oKTshKHVuPShFbj1HdC5uZXh0KCkpLmRvbmUpO3VuPSEwKXt2YXIgam49RW4udmFsdWU7dGhpcy5fb3B0aW9uc1tqbl09dm5bam5dfX1jYXRjaChxdCl7Y249ITAsU249cXR9''@;'; put 'put ''ZmluYWxseXt0cnl7IXVuJiZHdC5yZXR1cm4mJkd0LnJldHVybigpfWZpbmFsbHl7aWYoY24pdGhyb3cgU259fXJldHVybiB0aGlzfSx3aWR0aDpmdW5jdGlvbih2bil7cmV0dXJuIHRoaXMuX29wdGlvbnMud2lkdGg9dm4sdGhpc30saGVpZ2h0OmZ1bmN0aW9uKHZuKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''b3B0aW9ucy5oZWlnaHQ9dm4sdGhpc30sc2NhbGU6ZnVuY3Rpb24odm4pe3JldHVybiB0aGlzLl9vcHRpb25zLnNjYWxlPXZuLHRoaXN9LGZpdDpmdW5jdGlvbih2bil7cmV0dXJuIHRoaXMuX29wdGlvbnMuZml0PXZuLHRoaXN9LGF0dHJpYnV0ZXI6ZnVuY3Rpb24odm4pe3JldHVybiB0aGlz''@;'; put 'put ''Ll9hdHRyaWJ1dGVyPXZuLHRoaXN9LG9uOmZ1bmN0aW9uKHZuLHVuKXtyZXR1cm4gdGhpcy5fZGlzcGF0Y2gub24odm4sdW4pLHRoaXN9LG9uZXJyb3I6ZnVuY3Rpb24odm4pe3JldHVybiB0aGlzLl9vbmVycm9yPXZuLHRoaXN9LGxvZ0V2ZW50czpmdW5jdGlvbih2bil7dmFyIHVuPXRoaXMs''@;'; put 'put ''Y249RGF0ZS5ub3coKSxTbj17fSxHdD10aGlzLl9ldmVudFR5cGVzLEVuPU1hdGgubWF4LmFwcGx5KE1hdGgsYm4oR3QubWFwKGZ1bmN0aW9uKGdyKXtyZXR1cm4gZ3IubGVuZ3RofSkpKSxqbj1mdW5jdGlvbihKcil7dmFyIFZyPUd0W0pyXTtTbltWcl09W10sTG49dW4sdW4ub24oVnIrIi5s''@;'; put 'put ''b2ciLHZuP2Z1bmN0aW9uKCl7dmFyIHRpPURhdGUubm93KCksT3I9U25bVnJdLmxlbmd0aDtTbltWcl0ucHVzaCh0aSk7dmFyIGxpPSIiO2lmKGxpKz0iRXZlbnQgIixsaSs9bGUuZm9ybWF0KCIgPjIiKShKcikrIiAiLGxpKz1WcisiICIucmVwZWF0KEVuLVZyLmxlbmd0aCksbGkrPWxlLmZv''@;'; put 'put ''cm1hdCgiID41IikodGktY24pKyIgIiwiaW5pdEVuZCIhPVZyJiYobGkrPWxlLmZvcm1hdCgiID41IikodGktU24uc3RhcnRbT3JdKSksImRhdGFQcm9jZXNzRW5kIj09VnImJihsaSs9IiBwcmVwYXJlICAgICAgICAgICAgICAgICAiK2xlLmZvcm1hdCgiID41IikodGktU24ubGF5b3V0RW5k''@;'; put 'put ''W09yXSkpLCJyZW5kZXJFbmQiPT1WciYmTG4uX3RyYW5zaXRpb24mJihsaSs9IiB0cmFuc2l0aW9uIHN0YXJ0IG1hcmdpbiAiK2xlLmZvcm1hdCgiID41IikoTG4uX3RyYW5zaXRpb24uZGVsYXkoKS0odGktU24ucmVuZGVyU3RhcnRbT3JdKSksSm49TG4uX3RyYW5zaXRpb24uZGVsYXkoKSxv''@;'; put 'put ''cj1Mbi5fdHJhbnNpdGlvbi5kdXJhdGlvbigpKSwidHJhbnNpdGlvblN0YXJ0Ij09VnIpe3ZhciBJaT10aS1Tbi5yZW5kZXJTdGFydFtPcl07bGkrPSIgdHJhbnNpdGlvbiBkZWxheSAgICAgICAgIitsZS5mb3JtYXQoIiA+NSIpKHRpLVNuLnJlbmRlclN0YXJ0W09yXSksbGkrPSIgZXhwZWN0''@;'; put 'put ''ZWQgIitsZS5mb3JtYXQoIiA+NSIpKEpuKSxsaSs9IiBkaWZmICIrbGUuZm9ybWF0KCIgPjUiKShJaS1Kbil9aWYoInRyYW5zaXRpb25FbmQiPT1Wcil7dmFyIHIwPXRpLVNuLnRyYW5zaXRpb25TdGFydFtPcl07bGkrPSIgdHJhbnNpdGlvbiBkdXJhdGlvbiAgICAgIitsZS5mb3JtYXQoIiA+''@;'; put 'put ''NSIpKHIwKSxsaSs9IiBleHBlY3RlZCAiK2xlLmZvcm1hdCgiID41Iikob3IpLGxpKz0iIGRpZmYgIitsZS5mb3JtYXQoIiA+NSIpKHIwLW9yKX1jb25zb2xlLmxvZyhsaSksY249dGl9Om51bGwpfTtmb3IodmFyIHF0IGluIEd0KXt2YXIgTG4sSm4sb3I7am4ocXQpfXJldHVybiB0aGlzfSxk''@;'; put 'put ''cmF3RWRnZTpmdW5jdGlvbiBrbih2bix1bixjbixTbixHdCl7dmFyIEVuPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTp7fTtpZigoR3Q9T2JqZWN0LmFzc2lnbih7fSxHdCkpLnN0eWxlJiZHdC5zdHlsZS5pbmNsdWRlcygiaW52aXMiKSl2''@;'; put 'put ''YXIgam49Qi5zZWxlY3QobnVsbCk7ZWxzZXt2YXIgSm49dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKSxncj1OKG5yKEd0KSk7am49Sm4uYXBwZW5kKCJnIikuZGF0YShbZ3JdKSxkZS5j''@;'; put 'put ''YWxsKGpuLm5vZGUoKSxnciksdXIoam4sdm4sdW4sY24sU24sR3QsRW4pfXJldHVybiB0aGlzLl9kcmF3bkVkZ2U9e2c6am4seDE6dm4seTE6dW4seDI6Y24seTI6U24sYXR0cmlidXRlczpHdH0sdGhpc30sdXBkYXRlRHJhd25FZGdlOmZ1bmN0aW9uIGVyKHZuLHVuLGNuLFNuKXt2YXIgR3Q9''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOnt9LEVuPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTp7fTtpZighdGhpcy5fZHJhd25FZGdlKXRocm93IEVycm9yKCJObyBlZGdlIGhhcyBi''@;'; put 'put ''ZWVuIGRyYXduIik7dmFyIGpuPXRoaXMuX2RyYXduRWRnZS5nO3JldHVybiBHdD1PYmplY3QuYXNzaWduKHRoaXMuX2RyYXduRWRnZS5hdHRyaWJ1dGVzLEd0KSx0aGlzLl9kcmF3bkVkZ2UueDE9dm4sdGhpcy5fZHJhd25FZGdlLnkxPXVuLHRoaXMuX2RyYXduRWRnZS54Mj1jbix0aGlzLl9k''@;'; put 'put ''cmF3bkVkZ2UueTI9U24sIWpuLmVtcHR5KCl8fEd0LnN0eWxlJiZHdC5zdHlsZS5pbmNsdWRlcygiaW52aXMiKXx8KGpuPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuYXBwZW5kKCJn''@;'; put 'put ''IiksdGhpcy5fZHJhd25FZGdlLmc9am4pLGpuLmVtcHR5KCl8fHVyKGpuLHZuLHVuLGNuLFNuLEd0LEVuKSx0aGlzfSxtb3ZlRHJhd25FZGdlRW5kUG9pbnQ6ZnVuY3Rpb24gRnIodm4sdW4pe3ZhciBjbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVu''@;'; put 'put ''dHNbMl06e307aWYoIXRoaXMuX2RyYXduRWRnZSl0aHJvdyBFcnJvcigiTm8gZWRnZSBoYXMgYmVlbiBkcmF3biIpO3ZhciBTbj10aGlzLl9kcmF3bkVkZ2UuZyxHdD10aGlzLl9kcmF3bkVkZ2UueDEsRW49dGhpcy5fZHJhd25FZGdlLnkxLGpuPXRoaXMuX2RyYXduRWRnZS5hdHRyaWJ1dGVz''@;'; put 'put ''O3JldHVybiB0aGlzLl9kcmF3bkVkZ2UueDI9dm4sdGhpcy5fZHJhd25FZGdlLnkyPXVuLFhuKFNuLEd0LEVuLHZuLHVuLGpuLGNuKSx0aGlzfSxpbnNlcnREcmF3bkVkZ2U6ZnVuY3Rpb24gZW4odm4pe2lmKCF0aGlzLl9kcmF3bkVkZ2UpdGhyb3cgRXJyb3IoIk5vIGVkZ2UgaGFzIGJlZW4g''@;'; put 'put ''ZHJhd24iKTt2YXIgdW49dGhpcy5fZHJhd25FZGdlLmc7aWYodW4uZW1wdHkoKSlyZXR1cm4gdGhpczt1bi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0aXRsZSIpLnRleHQodm4pO3ZhciBqbj10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3Zn''@;'; put 'put ''Iikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLHF0PWpuLmRhdHVtKCksTG49dGhpcy5fZXh0cmFjdERhdGEodW4scXQuY2hpbGRyZW4ubGVuZ3RoLGpuLmRhdHVtKCkpO3JldHVybiBxdC5jaGlsZHJlbi5wdXNoKExuKSxhZSh1bixMbiksdGhpcy5fZHJhd25FZGdlPW51bGws''@;'; put 'put ''dGhpc30scmVtb3ZlRHJhd25FZGdlOnhyfSwicmVtb3ZlRHJhd25FZGdlIix4cikscG4odG4sImRyYXduRWRnZVNlbGVjdGlvbiIsZHIpLHBuKHRuLCJkcmF3bkVkZ2VTZWxlY3Rpb24iLGRyKSxwbih0biwiZHJhd05vZGUiLGZ1bmN0aW9uIHduKHZuLHVuLGNuKXt2YXIgU249YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LEd0PWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTp7fTtpZigoU249T2JqZWN0LmFzc2lnbih7fSxTbikpLnN0eWxlJiZTbi5zdHlsZS5pbmNsdWRlcygi''@;'; put 'put ''aW52aXMiKSl2YXIgRW49Qi5zZWxlY3QobnVsbCk7ZWxzZXt2YXIgTG49dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKSxvcj1OKF9uKGNuLFNuKSk7RW49TG4uYXBwZW5kKCJnIikuZGF0''@;'; put 'put ''YShbb3JdKSxkZS5jYWxsKEVuLm5vZGUoKSxvciksWXQoRW4sdm4sdW4sY24sU24sR3QpfXJldHVybiB0aGlzLl9kcmF3bk5vZGU9e2c6RW4sbm9kZUlkOmNuLHg6dm4seTp1bixhdHRyaWJ1dGVzOlNufSx0aGlzfSkscG4odG4sInVwZGF0ZURyYXduTm9kZSIsZnVuY3Rpb24gJG4odm4sdW4s''@;'; put 'put ''Y24pe3ZhciBTbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e30sR3Q9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOnt9O2lmKCF0aGlzLl9kcmF3bk5vZGUpdGhyb3cgRXJyb3IoIk5v''@;'; put 'put ''IG5vZGUgaGFzIGJlZW4gZHJhd24iKTt2YXIgRW49dGhpcy5fZHJhd25Ob2RlLmc7cmV0dXJuIG51bGw9PWNuJiYoY249dGhpcy5fZHJhd25Ob2RlLm5vZGVJZCksU249T2JqZWN0LmFzc2lnbih0aGlzLl9kcmF3bk5vZGUuYXR0cmlidXRlcyxTbiksdGhpcy5fZHJhd25Ob2RlLm5vZGVJZD1j''@;'; put 'put ''bix0aGlzLl9kcmF3bk5vZGUueD12bix0aGlzLl9kcmF3bk5vZGUueT11biwhRW4uZW1wdHkoKXx8U24uc3R5bGUmJlNuLnN0eWxlLmluY2x1ZGVzKCJpbnZpcyIpfHwoRW49dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXRE''@;'; put 'put ''YXRhUHJvcGFnYXRpb24oImciKS5hcHBlbmQoImciKSx0aGlzLl9kcmF3bk5vZGUuZz1FbiksRW4uZW1wdHkoKXx8WXQoRW4sdm4sdW4sY24sU24sR3QpLHRoaXN9KSxwbih0biwibW92ZURyYXduTm9kZSIsZnVuY3Rpb24gS24odm4sdW4pe2lmKCF0aGlzLl9kcmF3bk5vZGUpdGhyb3cgRXJy''@;'; put 'put ''b3IoIk5vIG5vZGUgaGFzIGJlZW4gZHJhd24iKTt2YXIgU249dGhpcy5fZHJhd25Ob2RlLmcsR3Q9dGhpcy5fZHJhd25Ob2RlLmF0dHJpYnV0ZXM7cmV0dXJuIHRoaXMuX2RyYXduTm9kZS54PXZuLHRoaXMuX2RyYXduTm9kZS55PXVuLFNuLmVtcHR5KCl8fGduKFNuLHZuLHVuLEd0KSx0aGlz''@;'; put 'put ''fSkscG4odG4sImluc2VydERyYXduTm9kZSIsZnVuY3Rpb24gc24odm4pe2lmKCF0aGlzLl9kcmF3bk5vZGUpdGhyb3cgRXJyb3IoIk5vIG5vZGUgaGFzIGJlZW4gZHJhd24iKTtudWxsPT12biYmKHZuPXRoaXMuX2RyYXduTm9kZS5ub2RlSWQpO3ZhciB1bj10aGlzLl9kcmF3bk5vZGUuZztp''@;'; put 'put ''Zih1bi5lbXB0eSgpKXJldHVybiB0aGlzO3ZhciBjbj10aGlzLl9kcmF3bk5vZGUuYXR0cmlidXRlcztpZih1bi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0aXRsZSIpLnRleHQodm4pLGNuLlVSTHx8Y24udG9vbHRpcCl2YXIgRW49dW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdh''@;'; put 'put ''dGlvbigiZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImEiKSxxdD0oRW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZWxsaXBzZSxwb2x5Z29uLHBhdGgscG9seWxpbmUiKSxFbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0IikpO2Vsc2UgdW4uc2Vs''@;'; put 'put ''ZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZWxsaXBzZSxwb2x5Z29uLHBhdGgscG9seWxpbmUiKSxxdD11bi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0Iik7cXQudGV4dChjbi5sYWJlbHx8dm4pO3ZhciBvcj10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQ''@;'; put 'put ''cm9wYWdhdGlvbigic3ZnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLGdyPW9yLmRhdHVtKCksSnI9dGhpcy5fZXh0cmFjdERhdGEodW4sZ3IuY2hpbGRyZW4ubGVuZ3RoLG9yLmRhdHVtKCkpO3JldHVybiBnci5jaGlsZHJlbi5wdXNoKEpyKSxhZSh1bixKciksdGhpcy5f''@;'; put 'put ''ZHJhd25Ob2RlPW51bGwsdGhpc30pLHBuKHRuLCJyZW1vdmVEcmF3bk5vZGUiLFZ0KSxwbih0biwicmVtb3ZlRHJhd25Ob2RlIixWdCkscG4odG4sImRyYXduTm9kZVNlbGVjdGlvbiIsVW4pLHBuKHRuLCJkcmF3bk5vZGVTZWxlY3Rpb24iLFVuKSx0bik7Qi5zZWxlY3Rpb24ucHJvdG90eXBl''@;'; put 'put ''LmdyYXBodml6PWZ1bmN0aW9uKHZuKXt2YXIgdW49dGhpcy5ub2RlKCkuX19ncmFwaHZpel9fO3JldHVybiB1bj8odW4ub3B0aW9ucyh2biksdW4uX2Rpc3BhdGNoLmNhbGwoImluaXRFbmQiLHRoaXMpKTp1bj1uZXcgR24odGhpcyx2biksdW59LEIuc2VsZWN0aW9uLnByb3RvdHlwZS5zZWxl''@;'; put 'put ''Y3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uPWZ1bmN0aW9uKHZuKXtyZXR1cm4gQi5zZWxlY3QodGhpcy5zaXplKCk+MD90aGlzLm5vZGUoKS5xdWVyeVNlbGVjdG9yKHZuKTpudWxsKX0sZ2UuZ3JhcGh2aXo9VHIsT2JqZWN0LmRlZmluZVByb3BlcnR5KGdlLCJfX2VzTW9kdWxlIix7dmFsdWU6''@;'; put 'put ''ITB9KX0oSmUsTCg2OTQxNSksTCg4NTEwNiksTCg0MDgyMiksTCg1Njg0MiksTCgyMTc1OSksTCg3NTgyNyksTCgyOTAzNSksTCg2NTk5MCksTCgzODE4NCkpfSwxNjcxMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZ2UoRSxNZSxVLFEsWil7dmFyIGllPUUqRSxsZT1pZSpF''@;'; put 'put ''O3JldHVybigoMS0zKkUrMyppZS1sZSkqTWUrKDQtNippZSszKmxlKSpVKygxKzMqRSszKmllLTMqbGUpKlErbGUqWikvNn1mdW5jdGlvbiBCKEUpe3ZhciBNZT1FLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihVKXt2YXIgUT1VPD0wP1U9MDpVPj0xPyhVPTEsTWUtMSk6TWF0aC5mbG9vcihV''@;'; put 'put ''Kk1lKSxaPUVbUV0saWU9RVtRKzFdO3JldHVybiBnZSgoVS1RL01lKSpNZSxRPjA/RVtRLTFdOjIqWi1pZSxaLGllLFE8TWUtMT9FW1ErMl06MippZS1aKX19TC5kKEplLHtaOigpPT5CLHQ6KCk9PmdlfSl9LDY4NTIzOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9PkJ9''@;'; put 'put ''KTt2YXIgZ2U9TCgxNjcxMik7ZnVuY3Rpb24gQihFKXt2YXIgTWU9RS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKFUpe3ZhciBRPU1hdGguZmxvb3IoKChVJT0xKTwwPysrVTpVKSpNZSk7cmV0dXJuKDAsZ2UudCkoKFUtUS9NZSkqTWUsRVsoUStNZS0xKSVNZV0sRVtRJU1lXSxFWyhRKzEpJU1l''@;'; put 'put ''XSxFWyhRKzIpJU1lXSl9fX0sMzUxNDc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WlA6KCk9PlEsd3g6KCk9Pk1lLHlpOigpPT5VfSk7dmFyIGdlPUwoNDc5MjcpO2Z1bmN0aW9uIEIoWixpZSl7cmV0dXJuIGZ1bmN0aW9uKGxlKXtyZXR1cm4gWitsZSppZX19ZnVuY3Rpb24g''@;'; put 'put ''TWUoWixpZSl7dmFyIGxlPWllLVo7cmV0dXJuIGxlP0IoWixsZT4xODB8fGxlPC0xODA/bGUtMzYwKk1hdGgucm91bmQobGUvMzYwKTpsZSk6KDAsZ2UuWikoaXNOYU4oWik/aWU6Wil9ZnVuY3Rpb24gVShaKXtyZXR1cm4gMT09KFo9K1opP1E6ZnVuY3Rpb24oaWUsbGUpe3JldHVybiBsZS1p''@;'; put 'put ''ZT9mdW5jdGlvbiBFKFosaWUsbGUpe3JldHVybiBaPU1hdGgucG93KFosbGUpLGllPU1hdGgucG93KGllLGxlKS1aLGxlPTEvbGUsZnVuY3Rpb24oWSl7cmV0dXJuIE1hdGgucG93KForWSppZSxsZSl9fShpZSxsZSxaKTooMCxnZS5aKShpc05hTihpZSk/bGU6aWUpfX1mdW5jdGlvbiBRKFos''@;'; put 'put ''aWUpe3ZhciBsZT1pZS1aO3JldHVybiBsZT9CKFosbGUpOigwLGdlLlopKGlzTmFOKFopP2llOlopfX0sNDc5Mjc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGdlKEIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBCfX1MLmQoSmUse1o6KCk9PmdlfSl9LDIxNzU5OihYZSxK''@;'; put 'put ''ZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLnIoSmUpLEwuZChKZSx7aW50ZXJwb2xhdGU6KCk9Pk4saW50ZXJwb2xhdGVBcnJheTooKT0+VSxpbnRlcnBvbGF0ZUJhc2lzOigpPT5lZS5aLGludGVycG9sYXRlQmFzaXNDbG9zZWQ6KCk9PnEuWixpbnRlcnBvbGF0ZUN1YmVoZWxpeDooKT0+SnQsaW50''@;'; put 'put ''ZXJwb2xhdGVDdWJlaGVsaXhMb25nOigpPT5tbixpbnRlcnBvbGF0ZURhdGU6KCk9PlosaW50ZXJwb2xhdGVEaXNjcmV0ZTooKT0+SixpbnRlcnBvbGF0ZUhjbDooKT0+RnQsaW50ZXJwb2xhdGVIY2xMb25nOigpPT5vbixpbnRlcnBvbGF0ZUhzbDooKT0+a2UsaW50ZXJwb2xhdGVIc2xMb25n''@;'; put 'put ''OigpPT5TZSxpbnRlcnBvbGF0ZUh1ZTooKT0+YWUsaW50ZXJwb2xhdGVMYWI6KCk9PnZ0LGludGVycG9sYXRlTnVtYmVyOigpPT5pZS5aLGludGVycG9sYXRlTnVtYmVyQXJyYXk6KCk9PkUsaW50ZXJwb2xhdGVPYmplY3Q6KCk9PmxlLGludGVycG9sYXRlUmdiOigpPT5CLlpQLGludGVycG9s''@;'; put 'put ''YXRlUmdiQmFzaXM6KCk9PkIuaEQsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDooKT0+Qi5ZRCxpbnRlcnBvbGF0ZVJvdW5kOigpPT5mZSxpbnRlcnBvbGF0ZVN0cmluZzooKT0+WS5aLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOigpPT5kZS5ZLGludGVycG9sYXRlVHJhbnNmb3JtU3ZnOigp''@;'; put 'put ''PT5kZS53LGludGVycG9sYXRlWm9vbTooKT0+dmUuWixwaWVjZXdpc2U6KCk9PnBuLHF1YW50aXplOigpPT5ibn0pO3ZhciBnZT1MKDUyNzg2KSxCPUwoODY4MTEpO2Z1bmN0aW9uIEUobG4sTm4pe05ufHwoTm49W10pO3ZhciB1cixrbj1sbj9NYXRoLm1pbihObi5sZW5ndGgsbG4ubGVuZ3Ro''@;'; put 'put ''KTowLGVyPU5uLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9uKFhuKXtmb3IodXI9MDt1cjxrbjsrK3VyKWVyW3VyXT1sblt1cl0qKDEtWG4pK05uW3VyXSpYbjtyZXR1cm4gZXJ9fWZ1bmN0aW9uIE1lKGxuKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGxuKSYmIShsbiBpbnN0YW5jZW9mIERh''@;'; put 'put ''dGFWaWV3KX1mdW5jdGlvbiBVKGxuLE5uKXtyZXR1cm4oTWUoTm4pP0U6USkobG4sTm4pfWZ1bmN0aW9uIFEobG4sTm4pe3ZhciBGcixrbj1Obj9Obi5sZW5ndGg6MCxlcj1sbj9NYXRoLm1pbihrbixsbi5sZW5ndGgpOjAsdXI9bmV3IEFycmF5KGVyKSxYbj1uZXcgQXJyYXkoa24pO2ZvcihG''@;'; put 'put ''cj0wO0ZyPGVyOysrRnIpdXJbRnJdPU4obG5bRnJdLE5uW0ZyXSk7Zm9yKDtGcjxrbjsrK0ZyKVhuW0ZyXT1ObltGcl07cmV0dXJuIGZ1bmN0aW9uKHhyKXtmb3IoRnI9MDtGcjxlcjsrK0ZyKVhuW0ZyXT11cltGcl0oeHIpO3JldHVybiBYbn19ZnVuY3Rpb24gWihsbixObil7dmFyIGtuPW5l''@;'; put 'put ''dyBEYXRlO3JldHVybiBsbj0rbG4sTm49K05uLGZ1bmN0aW9uKGVyKXtyZXR1cm4ga24uc2V0VGltZShsbiooMS1lcikrTm4qZXIpLGtufX12YXIgaWU9TCg2NzM4KTtmdW5jdGlvbiBsZShsbixObil7dmFyIHVyLGtuPXt9LGVyPXt9O2Zvcih1ciBpbihudWxsPT09bG58fCJvYmplY3QiIT10''@;'; put 'put ''eXBlb2YgbG4pJiYobG49e30pLChudWxsPT09Tm58fCJvYmplY3QiIT10eXBlb2YgTm4pJiYoTm49e30pLE5uKXVyIGluIGxuP2tuW3VyXT1OKGxuW3VyXSxOblt1cl0pOmVyW3VyXT1Oblt1cl07cmV0dXJuIGZ1bmN0aW9uKFhuKXtmb3IodXIgaW4ga24pZXJbdXJdPWtuW3VyXShYbik7cmV0''@;'; put 'put ''dXJuIGVyfX12YXIgWT1MKDIzMDk2KSxXPUwoNDc5MjcpO2Z1bmN0aW9uIE4obG4sTm4pe3ZhciBlcixrbj10eXBlb2YgTm47cmV0dXJuIG51bGw9PU5ufHwiYm9vbGVhbiI9PT1rbj8oMCxXLlopKE5uKTooIm51bWJlciI9PT1rbj9pZS5aOiJzdHJpbmciPT09a24/KGVyPSgwLGdlLlpQKShO''@;'; put 'put ''bikpPyhObj1lcixCLlpQKTpZLlo6Tm4gaW5zdGFuY2VvZiBnZS5aUD9CLlpQOk5uIGluc3RhbmNlb2YgRGF0ZT9aOk1lKE5uKT9FOkFycmF5LmlzQXJyYXkoTm4pP1E6ImZ1bmN0aW9uIiE9dHlwZW9mIE5uLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBObi50b1N0cmluZ3x8aXNOYU4o''@;'; put 'put ''Tm4pP2xlOmllLlopKGxuLE5uKX12YXIgZWU9TCgxNjcxMikscT1MKDY4NTIzKTtmdW5jdGlvbiBKKGxuKXt2YXIgTm49bG4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbihrbil7cmV0dXJuIGxuW01hdGgubWF4KDAsTWF0aC5taW4oTm4tMSxNYXRoLmZsb29yKGtuKk5uKSkpXX19dmFyIHNlPUwo''@;'; put 'put ''MzUxNDcpO2Z1bmN0aW9uIGFlKGxuLE5uKXt2YXIga249KDAsc2Uud3gpKCtsbiwrTm4pO3JldHVybiBmdW5jdGlvbihlcil7dmFyIHVyPWtuKGVyKTtyZXR1cm4gdXItMzYwKk1hdGguZmxvb3IodXIvMzYwKX19ZnVuY3Rpb24gZmUobG4sTm4pe3JldHVybiBsbj0rbG4sTm49K05uLGZ1bmN0''@;'; put 'put ''aW9uKGtuKXtyZXR1cm4gTWF0aC5yb3VuZChsbiooMS1rbikrTm4qa24pfX12YXIgZGU9TCg3NTM0OSksdmU9TCg3NjI1Nyk7ZnVuY3Rpb24gQWUobG4pe3JldHVybiBmdW5jdGlvbihObixrbil7dmFyIGVyPWxuKChObj0oMCxnZS5ZbSkoTm4pKS5oLChrbj0oMCxnZS5ZbSkoa24pKS5oKSx1''@;'; put 'put ''cj0oMCxzZS5aUCkoTm4ucyxrbi5zKSxYbj0oMCxzZS5aUCkoTm4ubCxrbi5sKSxGcj0oMCxzZS5aUCkoTm4ub3BhY2l0eSxrbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oeHIpe3JldHVybiBObi5oPWVyKHhyKSxObi5zPXVyKHhyKSxObi5sPVhuKHhyKSxObi5vcGFjaXR5PUZyKHhyKSxO''@;'; put 'put ''bisiIn19fWNvbnN0IGtlPUFlKHNlLnd4KTt2YXIgU2U9QWUoc2UuWlApLEllPUwoNjg4ODQpLFRlPU1hdGguUEkvMTgwLEVlPTE4MC9NYXRoLlBJLE89Ljk2NDIyLHRlPTQvMjkseD02LzI5LFA9Myp4Kng7ZnVuY3Rpb24gVChsbil7aWYobG4gaW5zdGFuY2VvZiB5ZSlyZXR1cm4gbmV3IHll''@;'; put 'put ''KGxuLmwsbG4uYSxsbi5iLGxuLm9wYWNpdHkpO2lmKGxuIGluc3RhbmNlb2YgcHQpcmV0dXJuIG10KGxuKTtsbiBpbnN0YW5jZW9mIGdlLlNzfHwobG49KDAsZ2UuU1UpKGxuKSk7dmFyIFhuLEZyLE5uPVFlKGxuLnIpLGtuPVFlKGxuLmcpLGVyPVFlKGxuLmIpLHVyPUNlKCguMjIyNTA0NSpO''@;'; put 'put ''bisuNzE2ODc4NiprbisuMDYwNjE2OSplcikvMSk7cmV0dXJuIE5uPT09a24mJmtuPT09ZXI/WG49RnI9dXI6KFhuPUNlKCguNDM2MDc0NypObisuMzg1MDY0OSprbisuMTQzMDgwNCplcikvTyksRnI9Q2UoKC4wMTM5MzIyKk5uKy4wOTcxMDQ1KmtuKy43MTQxNzMzKmVyKS8uODI1MjEpKSxu''@;'; put 'put ''ZXcgeWUoMTE2KnVyLTE2LDUwMCooWG4tdXIpLDIwMCoodXItRnIpLGxuLm9wYWNpdHkpfWZ1bmN0aW9uIEYobG4sTm4sa24sZXIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9UKGxuKTpuZXcgeWUobG4sTm4sa24sbnVsbD09ZXI/MTplcil9ZnVuY3Rpb24geWUobG4sTm4sa24sZXIp''@;'; put 'put ''e3RoaXMubD0rbG4sdGhpcy5hPStObix0aGlzLmI9K2tuLHRoaXMub3BhY2l0eT0rZXJ9ZnVuY3Rpb24gQ2UobG4pe3JldHVybiBsbj4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KGxuLDEvMyk6bG4vUCt0ZX1mdW5jdGlvbiBEZShsbil7cmV0dXJuIGxuPng/bG4qbG4qbG46UCoobG4t''@;'; put 'put ''dGUpfWZ1bmN0aW9uIFBlKGxuKXtyZXR1cm4gMjU1Kihsbjw9LjAwMzEzMDg/MTIuOTIqbG46MS4wNTUqTWF0aC5wb3cobG4sMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIFFlKGxuKXtyZXR1cm4obG4vPTI1NSk8PS4wNDA0NT9sbi8xMi45MjpNYXRoLnBvdygobG4rLjA1NSkvMS4wNTUsMi40KX1m''@;'; put 'put ''dW5jdGlvbiAkZShsbil7aWYobG4gaW5zdGFuY2VvZiBwdClyZXR1cm4gbmV3IHB0KGxuLmgsbG4uYyxsbi5sLGxuLm9wYWNpdHkpO2lmKGxuIGluc3RhbmNlb2YgeWV8fChsbj1UKGxuKSksMD09PWxuLmEmJjA9PT1sbi5iKXJldHVybiBuZXcgcHQoTmFOLDA8bG4ubCYmbG4ubDwxMDA/MDpO''@;'; put 'put ''YU4sbG4ubCxsbi5vcGFjaXR5KTt2YXIgTm49TWF0aC5hdGFuMihsbi5iLGxuLmEpKkVlO3JldHVybiBuZXcgcHQoTm48MD9ObiszNjA6Tm4sTWF0aC5zcXJ0KGxuLmEqbG4uYStsbi5iKmxuLmIpLGxuLmwsbG4ub3BhY2l0eSl9ZnVuY3Rpb24geXQobG4sTm4sa24sZXIpe3JldHVybiAxPT09''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD8kZShsbik6bmV3IHB0KGxuLE5uLGtuLG51bGw9PWVyPzE6ZXIpfWZ1bmN0aW9uIHB0KGxuLE5uLGtuLGVyKXt0aGlzLmg9K2xuLHRoaXMuYz0rTm4sdGhpcy5sPStrbix0aGlzLm9wYWNpdHk9K2VyfWZ1bmN0aW9uIG10KGxuKXtpZihpc05hTihsbi5oKSlyZXR1''@;'; put 'put ''cm4gbmV3IHllKGxuLmwsMCwwLGxuLm9wYWNpdHkpO3ZhciBObj1sbi5oKlRlO3JldHVybiBuZXcgeWUobG4ubCxNYXRoLmNvcyhObikqbG4uYyxNYXRoLnNpbihObikqbG4uYyxsbi5vcGFjaXR5KX1mdW5jdGlvbiB2dChsbixObil7dmFyIGtuPSgwLHNlLlpQKSgobG49RihsbikpLmwsKE5u''@;'; put 'put ''PUYoTm4pKS5sKSxlcj0oMCxzZS5aUCkobG4uYSxObi5hKSx1cj0oMCxzZS5aUCkobG4uYixObi5iKSxYbj0oMCxzZS5aUCkobG4ub3BhY2l0eSxObi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oRnIpe3JldHVybiBsbi5sPWtuKEZyKSxsbi5hPWVyKEZyKSxsbi5iPXVyKEZyKSxsbi5vcGFj''@;'; put 'put ''aXR5PVhuKEZyKSxsbisiIn19ZnVuY3Rpb24gZnQobG4pe3JldHVybiBmdW5jdGlvbihObixrbil7dmFyIGVyPWxuKChObj15dChObikpLmgsKGtuPXl0KGtuKSkuaCksdXI9KDAsc2UuWlApKE5uLmMsa24uYyksWG49KDAsc2UuWlApKE5uLmwsa24ubCksRnI9KDAsc2UuWlApKE5uLm9wYWNp''@;'; put 'put ''dHksa24ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHhyKXtyZXR1cm4gTm4uaD1lcih4ciksTm4uYz11cih4ciksTm4ubD1Ybih4ciksTm4ub3BhY2l0eT1Gcih4ciksTm4rIiJ9fX0oMCxJZS5aKSh5ZSxGLCgwLEllLmwpKGdlLklsLHticmlnaHRlcjpmdW5jdGlvbihsbil7cmV0dXJuIG5l''@;'; put 'put ''dyB5ZSh0aGlzLmwrMTgqKG51bGw9PWxuPzE6bG4pLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGxuKXtyZXR1cm4gbmV3IHllKHRoaXMubC0xOCoobnVsbD09bG4/MTpsbiksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgbG49KHRoaXMubCsxNikvMTE2LE5uPWlzTmFOKHRoaXMuYSk/bG46bG4rdGhpcy5hLzUwMCxrbj1pc05hTih0aGlzLmIpP2xuOmxuLXRoaXMuYi8yMDA7cmV0dXJuIE5uPU8qRGUoTm4pLGxuPTEqRGUobG4pLGtuPS44MjUyMSpEZShrbiksbmV3IGdlLlNzKFBlKDMuMTMzODU2MSpObi0x''@;'; put 'put ''LjYxNjg2NjcqbG4tLjQ5MDYxNDYqa24pLFBlKC0uOTc4NzY4NCpObisxLjkxNjE0MTUqbG4rLjAzMzQ1NCprbiksUGUoLjA3MTk0NTMqTm4tLjIyODk5MTQqbG4rMS40MDUyNDI3KmtuKSx0aGlzLm9wYWNpdHkpfX0pKSwoMCxJZS5aKShwdCx5dCwoMCxJZS5sKShnZS5JbCx7YnJpZ2h0ZXI6''@;'; put 'put ''ZnVuY3Rpb24obG4pe3JldHVybiBuZXcgcHQodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PWxuPzE6bG4pLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihsbil7cmV0dXJuIG5ldyBwdCh0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09bG4/MTpsbiksdGhpcy5vcGFj''@;'; put 'put ''aXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIG10KHRoaXMpLnJnYigpfX0pKTtjb25zdCBGdD1mdChzZS53eCk7dmFyIG9uPWZ0KHNlLlpQKSxudD0xLjc4Mjc3LHFlPS0uMjkyMjcsb3Q9LS45MDY0OSxSdD0xLjk3Mjk0LEN0PVJ0Km90LGN0PVJ0Km50LE50PW50KnFlLSAtLjE0ODYxKm90''@;'; put 'put ''O2Z1bmN0aW9uIHplKGxuKXtpZihsbiBpbnN0YW5jZW9mIEF0KXJldHVybiBuZXcgQXQobG4uaCxsbi5zLGxuLmwsbG4ub3BhY2l0eSk7bG4gaW5zdGFuY2VvZiBnZS5Tc3x8KGxuPSgwLGdlLlNVKShsbikpO3ZhciBrbj1sbi5nLzI1NSxlcj1sbi5iLzI1NSx1cj0oTnQqZXIrQ3QqKGxuLnIv''@;'; put 'put ''MjU1KS1jdCprbikvKE50K0N0LWN0KSxYbj1lci11cixGcj0oUnQqKGtuLXVyKS1xZSpYbikvb3QseHI9TWF0aC5zcXJ0KEZyKkZyK1huKlhuKS8oUnQqdXIqKDEtdXIpKSxlbj14cj9NYXRoLmF0YW4yKEZyLFhuKSpFZS0xMjA6TmFOO3JldHVybiBuZXcgQXQoZW48MD9lbiszNjA6ZW4seHIs''@;'; put 'put ''dXIsbG4ub3BhY2l0eSl9ZnVuY3Rpb24gWWUobG4sTm4sa24sZXIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD96ZShsbik6bmV3IEF0KGxuLE5uLGtuLG51bGw9PWVyPzE6ZXIpfWZ1bmN0aW9uIEF0KGxuLE5uLGtuLGVyKXt0aGlzLmg9K2xuLHRoaXMucz0rTm4sdGhpcy5sPStrbix0''@;'; put 'put ''aGlzLm9wYWNpdHk9K2VyfWZ1bmN0aW9uIGp0KGxuKXtyZXR1cm4gZnVuY3Rpb24gTm4oa24pe2Z1bmN0aW9uIGVyKHVyLFhuKXt2YXIgRnI9bG4oKHVyPVllKHVyKSkuaCwoWG49WWUoWG4pKS5oKSx4cj0oMCxzZS5aUCkodXIucyxYbi5zKSxlbj0oMCxzZS5aUCkodXIubCxYbi5sKSxkcj0o''@;'; put 'put ''MCxzZS5aUCkodXIub3BhY2l0eSxYbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obnIpe3JldHVybiB1ci5oPUZyKG5yKSx1ci5zPXhyKG5yKSx1ci5sPWVuKE1hdGgucG93KG5yLGtuKSksdXIub3BhY2l0eT1kcihuciksdXIrIiJ9fXJldHVybiBrbj0ra24sZXIuZ2FtbWE9Tm4sZXJ9KDEp''@;'; put 'put ''fSgwLEllLlopKEF0LFllLCgwLEllLmwpKGdlLklsLHticmlnaHRlcjpmdW5jdGlvbihsbil7cmV0dXJuIGxuPW51bGw9PWxuP2dlLko1Ok1hdGgucG93KGdlLko1LGxuKSxuZXcgQXQodGhpcy5oLHRoaXMucyx0aGlzLmwqbG4sdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGxuKXty''@;'; put 'put ''ZXR1cm4gbG49bnVsbD09bG4/Z2UueFY6TWF0aC5wb3coZ2UueFYsbG4pLG5ldyBBdCh0aGlzLmgsdGhpcy5zLHRoaXMubCpsbix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgbG49aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpUZSxObj0rdGhpcy5sLGtuPWlzTmFOKHRo''@;'; put 'put ''aXMucyk/MDp0aGlzLnMqTm4qKDEtTm4pLGVyPU1hdGguY29zKGxuKSx1cj1NYXRoLnNpbihsbik7cmV0dXJuIG5ldyBnZS5TcygyNTUqKE5uK2tuKigtLjE0ODYxKmVyK250KnVyKSksMjU1KihObitrbioocWUqZXIrb3QqdXIpKSwyNTUqKE5uK2tuKihSdCplcikpLHRoaXMub3BhY2l0eSl9''@;'; put 'put ''fSkpO2NvbnN0IEp0PWp0KHNlLnd4KTt2YXIgbW49anQoc2UuWlApO2Z1bmN0aW9uIHBuKGxuLE5uKXtmb3IodmFyIGtuPTAsZXI9Tm4ubGVuZ3RoLTEsdXI9Tm5bMF0sWG49bmV3IEFycmF5KGVyPDA/MDplcik7a248ZXI7KVhuW2tuXT1sbih1cix1cj1OblsrK2tuXSk7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uKEZyKXt2YXIgeHI9TWF0aC5tYXgoMCxNYXRoLm1pbihlci0xLE1hdGguZmxvb3IoRnIqPWVyKSkpO3JldHVybiBYblt4cl0oRnIteHIpfX1mdW5jdGlvbiBibihsbixObil7Zm9yKHZhciBrbj1uZXcgQXJyYXkoTm4pLGVyPTA7ZXI8Tm47Kytlcilrbltlcl09bG4oZXIvKE5uLTEpKTty''@;'; put 'put ''ZXR1cm4ga259fSw2NzM4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBnZShCLEUpe3JldHVybiBCPStCLEU9K0UsZnVuY3Rpb24oTWUpe3JldHVybiBCKigxLU1lKStFKk1lfX1MLmQoSmUse1o6KCk9PmdlfSl9LDg2ODExOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQo''@;'; put 'put ''SmUse1lEOigpPT5pZSxaUDooKT0+VSxoRDooKT0+Wn0pO3ZhciBnZT1MKDUyNzg2KSxCPUwoMTY3MTIpLEU9TCg2ODUyMyksTWU9TCgzNTE0Nyk7Y29uc3QgVT1mdW5jdGlvbiBsZShZKXt2YXIgVz0oMCxNZS55aSkoWSk7ZnVuY3Rpb24gTihlZSxxKXt2YXIgSj1XKChlZT0oMCxnZS5COCko''@;'; put 'put ''ZWUpKS5yLChxPSgwLGdlLkI4KShxKSkuciksc2U9VyhlZS5nLHEuZyksYWU9VyhlZS5iLHEuYiksZmU9KDAsTWUuWlApKGVlLm9wYWNpdHkscS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZGUpe3JldHVybiBlZS5yPUooZGUpLGVlLmc9c2UoZGUpLGVlLmI9YWUoZGUpLGVlLm9wYWNpdHk9''@;'; put 'put ''ZmUoZGUpLGVlKyIifX1yZXR1cm4gTi5nYW1tYT1sZSxOfSgxKTtmdW5jdGlvbiBRKGxlKXtyZXR1cm4gZnVuY3Rpb24oWSl7dmFyIEosc2UsVz1ZLmxlbmd0aCxOPW5ldyBBcnJheShXKSxlZT1uZXcgQXJyYXkoVykscT1uZXcgQXJyYXkoVyk7Zm9yKEo9MDtKPFc7KytKKXNlPSgwLGdlLkI4''@;'; put 'put ''KShZW0pdKSxOW0pdPXNlLnJ8fDAsZWVbSl09c2UuZ3x8MCxxW0pdPXNlLmJ8fDA7cmV0dXJuIE49bGUoTiksZWU9bGUoZWUpLHE9bGUocSksc2Uub3BhY2l0eT0xLGZ1bmN0aW9uKGFlKXtyZXR1cm4gc2Uucj1OKGFlKSxzZS5nPWVlKGFlKSxzZS5iPXEoYWUpLHNlKyIifX19dmFyIFo9UShC''@;'; put 'put ''LlopLGllPVEoRS5aKX0sMjMwOTY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+UX0pO3ZhciBnZT1MKDY3MzgpLEI9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLEU9bmV3IFJlZ0V4cChCLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFEo''@;'; put 'put ''WixpZSl7dmFyIFksVyxOLGxlPUIubGFzdEluZGV4PUUubGFzdEluZGV4PTAsZWU9LTEscT1bXSxKPVtdO2ZvcihaKz0iIixpZSs9IiI7KFk9Qi5leGVjKFopKSYmKFc9RS5leGVjKGllKSk7KShOPVcuaW5kZXgpPmxlJiYoTj1pZS5zbGljZShsZSxOKSxxW2VlXT9xW2VlXSs9TjpxWysrZWVd''@;'; put 'put ''PU4pLChZPVlbMF0pPT09KFc9V1swXSk/cVtlZV0/cVtlZV0rPVc6cVsrK2VlXT1XOihxWysrZWVdPW51bGwsSi5wdXNoKHtpOmVlLHg6KDAsZ2UuWikoWSxXKX0pKSxsZT1FLmxhc3RJbmRleDtyZXR1cm4gbGU8aWUubGVuZ3RoJiYoTj1pZS5zbGljZShsZSkscVtlZV0/cVtlZV0rPU46cVsr''@;'; put 'put ''K2VlXT1OKSxxLmxlbmd0aDwyP0pbMF0/ZnVuY3Rpb24gVShaKXtyZXR1cm4gZnVuY3Rpb24oaWUpe3JldHVybiBaKGllKSsiIn19KEpbMF0ueCk6ZnVuY3Rpb24gTWUoWil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFp9fShpZSk6KGllPUoubGVuZ3RoLGZ1bmN0aW9uKHNlKXtmb3IodmFy''@;'; put 'put ''IGZlLGFlPTA7YWU8aWU7KythZSlxWyhmZT1KW2FlXSkuaV09ZmUueChzZSk7cmV0dXJuIHEuam9pbigiIil9KX19LDc1MzQ5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1k6KCk9Pk4sdzooKT0+ZWV9KTt2YXIgVSxRLFosaWUsZ2U9TCg2NzM4KSxCPTE4MC9NYXRoLlBJLEU9''@;'; put 'put ''e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gTWUocSxKLHNlLGFlLGZlLGRlKXt2YXIgdmUsQWUsa2U7cmV0dXJuKHZlPU1hdGguc3FydChxKnErSipKKSkmJihxLz12ZSxKLz12ZSksKGtlPXEqc2UrSiphZSkm''@;'; put 'put ''JihzZS09cSprZSxhZS09SiprZSksKEFlPU1hdGguc3FydChzZSpzZSthZSphZSkpJiYoc2UvPUFlLGFlLz1BZSxrZS89QWUpLHEqYWU8SipzZSYmKHE9LXEsSj0tSixrZT0ta2UsdmU9LXZlKSx7dHJhbnNsYXRlWDpmZSx0cmFuc2xhdGVZOmRlLHJvdGF0ZTpNYXRoLmF0YW4yKEoscSkqQixz''@;'; put 'put ''a2V3WDpNYXRoLmF0YW4oa2UpKkIsc2NhbGVYOnZlLHNjYWxlWTpBZX19ZnVuY3Rpb24gVyhxLEosc2UsYWUpe2Z1bmN0aW9uIGZlKFNlKXtyZXR1cm4gU2UubGVuZ3RoP1NlLnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24oU2UsSWUpe3ZhciBUZT1bXSxFZT1bXTtyZXR1cm4gU2U9cShT''@;'; put 'put ''ZSksSWU9cShJZSksZnVuY3Rpb24gZGUoU2UsSWUsVGUsRWUsaGUsTyl7aWYoU2UhPT1UZXx8SWUhPT1FZSl7dmFyIHo9aGUucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxKLG51bGwsc2UpO08ucHVzaCh7aTp6LTQseDooMCxnZS5aKShTZSxUZSl9LHtpOnotMix4OigwLGdlLlopKEllLEVlKX0p''@;'; put 'put ''fWVsc2UoVGV8fEVlKSYmaGUucHVzaCgidHJhbnNsYXRlKCIrVGUrSitFZStzZSl9KFNlLnRyYW5zbGF0ZVgsU2UudHJhbnNsYXRlWSxJZS50cmFuc2xhdGVYLEllLnRyYW5zbGF0ZVksVGUsRWUpLGZ1bmN0aW9uIHZlKFNlLEllLFRlLEVlKXtTZSE9PUllPyhTZS1JZT4xODA/SWUrPTM2MDpJ''@;'; put 'put ''ZS1TZT4xODAmJihTZSs9MzYwKSxFZS5wdXNoKHtpOlRlLnB1c2goZmUoVGUpKyJyb3RhdGUoIixudWxsLGFlKS0yLHg6KDAsZ2UuWikoU2UsSWUpfSkpOkllJiZUZS5wdXNoKGZlKFRlKSsicm90YXRlKCIrSWUrYWUpfShTZS5yb3RhdGUsSWUucm90YXRlLFRlLEVlKSxmdW5jdGlvbiBBZShT''@;'; put 'put ''ZSxJZSxUZSxFZSl7U2UhPT1JZT9FZS5wdXNoKHtpOlRlLnB1c2goZmUoVGUpKyJza2V3WCgiLG51bGwsYWUpLTIseDooMCxnZS5aKShTZSxJZSl9KTpJZSYmVGUucHVzaChmZShUZSkrInNrZXdYKCIrSWUrYWUpfShTZS5za2V3WCxJZS5za2V3WCxUZSxFZSksZnVuY3Rpb24ga2UoU2UsSWUs''@;'; put 'put ''VGUsRWUsaGUsTyl7aWYoU2UhPT1UZXx8SWUhPT1FZSl7dmFyIHo9aGUucHVzaChmZShoZSkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO08ucHVzaCh7aTp6LTQseDooMCxnZS5aKShTZSxUZSl9LHtpOnotMix4OigwLGdlLlopKEllLEVlKX0pfWVsc2UoMSE9PVRlfHwxIT09RWUpJiZo''@;'; put 'put ''ZS5wdXNoKGZlKGhlKSsic2NhbGUoIitUZSsiLCIrRWUrIikiKX0oU2Uuc2NhbGVYLFNlLnNjYWxlWSxJZS5zY2FsZVgsSWUuc2NhbGVZLFRlLEVlKSxTZT1JZT1udWxsLGZ1bmN0aW9uKGhlKXtmb3IodmFyIG5lLE89LTEsej1FZS5sZW5ndGg7KytPPHo7KVRlWyhuZT1FZVtPXSkuaV09bmUu''@;'; put 'put ''eChoZSk7cmV0dXJuIFRlLmpvaW4oIiIpfX19dmFyIE49VyhmdW5jdGlvbiBsZShxKXtyZXR1cm4ibm9uZSI9PT1xP0U6KFV8fChVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFo9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFUuc3R5bGUu''@;'; put 'put ''dHJhbnNmb3JtPXEscT1aLmdldENvbXB1dGVkU3R5bGUoUS5hcHBlbmRDaGlsZChVKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxRLnJlbW92ZUNoaWxkKFUpLE1lKCsocT1xLnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCtxWzFdLCtxWzJdLCtxWzNdLCtxWzRdLCtx''@;'; put 'put ''WzVdKSl9LCJweCwgIiwicHgpIiwiZGVnKSIpLGVlPVcoZnVuY3Rpb24gWShxKXtyZXR1cm4gbnVsbCE9cSYmKGllfHwoaWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksaWUuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHEpLHE9''@;'; put 'put ''aWUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/TWUoKHE9cS5tYXRyaXgpLmEscS5iLHEuYyxxLmQscS5lLHEuZik6RX0sIiwgIiwiKSIsIikiKX0sNzYyNTc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+aWV9KTt2YXIgZ2U9TWF0aC5TUVJUMjtmdW5j''@;'; put 'put ''dGlvbiBVKGxlKXtyZXR1cm4oKGxlPU1hdGguZXhwKGxlKSkrMS9sZSkvMn1mdW5jdGlvbiBpZShsZSxZKXt2YXIgdmUsQWUsVz1sZVswXSxOPWxlWzFdLGVlPWxlWzJdLHNlPVlbMl0sYWU9WVswXS1XLGZlPVlbMV0tTixkZT1hZSphZStmZSpmZTtpZihkZTwxZS0xMilBZT1NYXRoLmxvZyhz''@;'; put 'put ''ZS9lZSkvZ2UsdmU9ZnVuY3Rpb24oaGUpe3JldHVybltXK2hlKmFlLE4raGUqZmUsZWUqTWF0aC5leHAoZ2UqaGUqQWUpXX07ZWxzZXt2YXIga2U9TWF0aC5zcXJ0KGRlKSxTZT0oc2Uqc2UtZWUqZWUrNCpkZSkvKDIqZWUqMiprZSksSWU9KHNlKnNlLWVlKmVlLTQqZGUpLygyKnNlKjIqa2Up''@;'; put 'put ''LFRlPU1hdGgubG9nKE1hdGguc3FydChTZSpTZSsxKS1TZSksRWU9TWF0aC5sb2coTWF0aC5zcXJ0KEllKkllKzEpLUllKTtBZT0oRWUtVGUpL2dlLHZlPWZ1bmN0aW9uKGhlKXt2YXIgTz1oZSpBZSx6PVUoVGUpLG5lPWVlLygyKmtlKSooeipmdW5jdGlvbiBaKGxlKXtyZXR1cm4oKGxlPU1h''@;'; put 'put ''dGguZXhwKDIqbGUpKS0xKS8obGUrMSl9KGdlKk8rVGUpLWZ1bmN0aW9uIFEobGUpe3JldHVybigobGU9TWF0aC5leHAobGUpKS0xL2xlKS8yfShUZSkpO3JldHVybltXK25lKmFlLE4rbmUqZmUsZWUqei9VKGdlKk8rVGUpXX19cmV0dXJuIHZlLmR1cmF0aW9uPTFlMypBZSx2ZX19LDM4MTg0''@;'; put 'put ''OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLnIoSmUpLEwuZChKZSx7cGF0aDooKT0+Wn0pO3ZhciBnZT1NYXRoLlBJLEI9MipnZSxFPTFlLTYsTWU9Qi1FO2Z1bmN0aW9uIFUoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBR''@;'; put 'put ''KCl7cmV0dXJuIG5ldyBVfVUucHJvdG90eXBlPVEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpVLG1vdmVUbzpmdW5jdGlvbihpZSxsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStpZSkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rbGUpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtu''@;'; put 'put ''dWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbihpZSxsZSl7dGhpcy5fKz0iTCIrKHRoaXMuX3gxPStpZSkrIiwiKyh0aGlzLl95MT0rbGUpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKGll''@;'; put 'put ''LGxlLFksVyl7dGhpcy5fKz0iUSIrICtpZSsiLCIrICtsZSsiLCIrKHRoaXMuX3gxPStZKSsiLCIrKHRoaXMuX3kxPStXKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbihpZSxsZSxZLFcsTixlZSl7dGhpcy5fKz0iQyIrICtpZSsiLCIrICtsZSsiLCIrICtZKyIsIisgK1crIiwiKyh0aGlzLl94''@;'; put 'put ''MT0rTikrIiwiKyh0aGlzLl95MT0rZWUpfSxhcmNUbzpmdW5jdGlvbihpZSxsZSxZLFcsTil7dmFyIGVlPXRoaXMuX3gxLHE9dGhpcy5feTEsSj0oWT0rWSktKGllPStpZSksc2U9KFc9K1cpLShsZT0rbGUpLGFlPWVlLWllLGZlPXEtbGUsZGU9YWUqYWUrZmUqZmU7aWYoKE49K04pPDApdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrTik7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXys9Ik0iKyh0aGlzLl94MT1pZSkrIiwiKyh0aGlzLl95MT1sZSk7ZWxzZSBpZihkZT5FKWlmKE1hdGguYWJzKGZlKkotc2UqYWUpPkUmJk4pe3ZhciB2ZT1ZLWVlLEFlPVctcSxrZT1K''@;'; put 'put ''Kkorc2Uqc2UsU2U9dmUqdmUrQWUqQWUsSWU9TWF0aC5zcXJ0KGtlKSxUZT1NYXRoLnNxcnQoZGUpLEVlPU4qTWF0aC50YW4oKGdlLU1hdGguYWNvcygoa2UrZGUtU2UpLygyKkllKlRlKSkpLzIpLGhlPUVlL1RlLE89RWUvSWU7TWF0aC5hYnMoaGUtMSk+RSYmKHRoaXMuXys9IkwiKyhpZSto''@;'; put 'put ''ZSphZSkrIiwiKyhsZStoZSpmZSkpLHRoaXMuXys9IkEiK04rIiwiK04rIiwwLDAsIisgKyhmZSp2ZT5hZSpBZSkrIiwiKyh0aGlzLl94MT1pZStPKkopKyIsIisodGhpcy5feTE9bGUrTypzZSl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9aWUpKyIsIisodGhpcy5feTE9bGUpfSxhcmM6''@;'; put 'put ''ZnVuY3Rpb24oaWUsbGUsWSxXLE4sZWUpe2llPStpZSxsZT0rbGUsZWU9ISFlZTt2YXIgcT0oWT0rWSkqTWF0aC5jb3MoVyksSj1ZKk1hdGguc2luKFcpLHNlPWllK3EsYWU9bGUrSixmZT0xXmVlLGRlPWVlP1ctTjpOLVc7aWYoWTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVz''@;'; put 'put ''OiAiK1kpO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitzZSsiLCIrYWU6KE1hdGguYWJzKHRoaXMuX3gxLXNlKT5FfHxNYXRoLmFicyh0aGlzLl95MS1hZSk+RSkmJih0aGlzLl8rPSJMIitzZSsiLCIrYWUpLFkmJihkZTwwJiYoZGU9ZGUlQitCKSxkZT5NZT90aGlzLl8rPSJBIitZKyIs''@;'; put 'put ''IitZKyIsMCwxLCIrZmUrIiwiKyhpZS1xKSsiLCIrKGxlLUopKyJBIitZKyIsIitZKyIsMCwxLCIrZmUrIiwiKyh0aGlzLl94MT1zZSkrIiwiKyh0aGlzLl95MT1hZSk6ZGU+RSYmKHRoaXMuXys9IkEiK1krIiwiK1krIiwwLCIrICsoZGU+PWdlKSsiLCIrZmUrIiwiKyh0aGlzLl94MT1pZStZ''@;'; put 'put ''Kk1hdGguY29zKE4pKSsiLCIrKHRoaXMuX3kxPWxlK1kqTWF0aC5zaW4oTikpKSl9LHJlY3Q6ZnVuY3Rpb24oaWUsbGUsWSxXKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K2llKSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStsZSkrImgiKyArWSsidiIrICtXKyJoIistWSsiWiJ9''@;'; put 'put ''LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O2NvbnN0IFo9UX0sNzUwMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtaOigpPT5VfSk7dmFyIGdlPUwoMzYxNzUpLEI9TCg1MzUxNyk7ZnVuY3Rpb24gRShRKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgWj10aGlz''@;'; put 'put ''Lm93bmVyRG9jdW1lbnQsaWU9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIGllPT09Qi5QJiZaLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1CLlA/Wi5jcmVhdGVFbGVtZW50KFEpOlouY3JlYXRlRWxlbWVudE5TKGllLFEpfX1mdW5jdGlvbiBNZShRKXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhRLnNwYWNlLFEubG9jYWwpfX1mdW5jdGlvbiBVKFEpe3ZhciBaPSgwLGdlLlopKFEpO3JldHVybihaLmxvY2FsP01lOkUpKFopfX0sNjk0MTU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wucihKZSksTC5kKEpl''@;'; put 'put ''LHtjbGllbnRQb2ludDooKT0+Vy5aLGNyZWF0ZTooKT0+RSxjcmVhdG9yOigpPT5nZS5aLGN1c3RvbUV2ZW50OigpPT5BZS5fSCxldmVudDooKT0+QWUuQixsb2NhbDooKT0+VSxtYXRjaGVyOigpPT5aLlosbW91c2U6KCk9PmllLlosbmFtZXNwYWNlOigpPT5sZS5aLG5hbWVzcGFjZXM6KCk9''@;'; put 'put ''PlkuWixzZWxlY3Q6KCk9PkIuWixzZWxlY3RBbGw6KCk9PmVlLHNlbGVjdGlvbjooKT0+Ti5aUCxzZWxlY3RvcjooKT0+cS5aLHNlbGVjdG9yQWxsOigpPT5KLlosc3R5bGU6KCk9PnNlLlMsdG91Y2g6KCk9PmFlLlosdG91Y2hlczooKT0+ZGUsd2luZG93OigpPT52ZS5afSk7dmFyIGdlPUwo''@;'; put 'put ''NzUwMCksQj1MKDUyMDE2KTtmdW5jdGlvbiBFKGtlKXtyZXR1cm4oMCxCLlopKCgwLGdlLlopKGtlKS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfXZhciBNZT0wO2Z1bmN0aW9uIFUoKXtyZXR1cm4gbmV3IFF9ZnVuY3Rpb24gUSgpe3RoaXMuXz0iQCIrKCsrTWUpLnRvU3RyaW5n''@;'; put 'put ''KDM2KX1RLnByb3RvdHlwZT1VLnByb3RvdHlwZT17Y29uc3RydWN0b3I6USxnZXQ6ZnVuY3Rpb24oa2Upe2Zvcih2YXIgU2U9dGhpcy5fOyEoU2UgaW4ga2UpOylpZighKGtlPWtlLnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4ga2VbU2VdfSxzZXQ6ZnVuY3Rpb24oa2UsU2Upe3JldHVybiBr''@;'; put 'put ''ZVt0aGlzLl9dPVNlfSxyZW1vdmU6ZnVuY3Rpb24oa2Upe3JldHVybiB0aGlzLl8gaW4ga2UmJmRlbGV0ZSBrZVt0aGlzLl9dfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgWj1MKDk3OTA1KSxpZT1MKDY2MDczKSxsZT1MKDM2MTc1KSxZPUwoNTM1MTcpLFc9TCgy''@;'; put 'put ''NTk0MSksTj1MKDgyNzAwKTtmdW5jdGlvbiBlZShrZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBrZT9uZXcgTi5ZMShbZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChrZSldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgTi5ZMShbbnVsbD09a2U/W106a2VdLE4uSnopfXZhciBx''@;'; put 'put ''PUwoMjk3NDIpLEo9TCgzMjAzNyksc2U9TCgyNDQ3NiksYWU9TCgzMDI1NiksZmU9TCg3NTgxOSk7ZnVuY3Rpb24gZGUoa2UsU2Upe251bGw9PVNlJiYoU2U9KDAsZmUuWikoKS50b3VjaGVzKTtmb3IodmFyIEllPTAsVGU9U2U/U2UubGVuZ3RoOjAsRWU9bmV3IEFycmF5KFRlKTtJZTxUZTsr''@;'; put 'put ''K0llKUVlW0llXT0oMCxXLlopKGtlLFNlW0llXSk7cmV0dXJuIEVlfXZhciB2ZT1MKDI0NDIpLEFlPUwoNjE3NDYpfSw5NzkwNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZ2UoQil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyhCKX19TC5kKEplLHta''@;'; put 'put ''OigpPT5nZX0pfSw2NjA3MzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtaOigpPT5FfSk7dmFyIGdlPUwoNzU4MTkpLEI9TCgyNTk0MSk7ZnVuY3Rpb24gRShNZSl7dmFyIFU9KDAsZ2UuWikoKTtyZXR1cm4gVS5jaGFuZ2VkVG91Y2hlcyYmKFU9VS5jaGFuZ2VkVG91Y2hlc1sw''@;'; put 'put ''XSksKDAsQi5aKShNZSxVKX19LDM2MTc1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9PkJ9KTt2YXIgZ2U9TCg1MzUxNyk7ZnVuY3Rpb24gQihFKXt2YXIgTWU9RSs9IiIsVT1NZS5pbmRleE9mKCI6Iik7cmV0dXJuIFU+PTAmJiJ4bWxucyIhPT0oTWU9RS5zbGljZSgw''@;'; put 'put ''LFUpKSYmKEU9RS5zbGljZShVKzEpKSxnZS5aLmhhc093blByb3BlcnR5KE1lKT97c3BhY2U6Z2UuWltNZV0sbG9jYWw6RX06RX19LDUzNTE3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1A6KCk9PmdlLFo6KCk9PkJ9KTt2YXIgZ2U9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv''@;'; put 'put ''eGh0bWwiO2NvbnN0IEI9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOmdlLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIw''@;'; put 'put ''MDAveG1sbnMvIn19LDI1OTQxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBnZShCLEUpe3ZhciBNZT1CLm93bmVyU1ZHRWxlbWVudHx8QjtpZihNZS5jcmVhdGVTVkdQb2ludCl7dmFyIFU9TWUuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gVS54PUUuY2xpZW50WCxVLnk9RS5j''@;'; put 'put ''bGllbnRZLFsoVT1VLm1hdHJpeFRyYW5zZm9ybShCLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsVS55XX12YXIgUT1CLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltFLmNsaWVudFgtUS5sZWZ0LUIuY2xpZW50TGVmdCxFLmNsaWVudFktUS50b3AtQi5jbGllbnRUb3BdfUwu''@;'; put 'put ''ZChKZSx7WjooKT0+Z2V9KX0sNTIwMTY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+Qn0pO3ZhciBnZT1MKDgyNzAwKTtmdW5jdGlvbiBCKEUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgRT9uZXcgZ2UuWTEoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKEUpXV0sW2Rv''@;'; put 'put ''Y3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBnZS5ZMShbW0VdXSxnZS5Keil9fSw4MjcwMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtZMTooKT0+bnIsWlA6KCk9PiRuLEp6OigpPT5kcn0pO3ZhciBnZT1MKDI5NzQyKSxFPUwoMzIwMzcpLFU9TCg5NzkwNSk7ZnVuY3Rp''@;'; put 'put ''b24gWihZdCl7cmV0dXJuIG5ldyBBcnJheShZdC5sZW5ndGgpfWZ1bmN0aW9uIGxlKFl0LGduKXt0aGlzLm93bmVyRG9jdW1lbnQ9WXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1ZdC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD1ZdCx0aGlzLl9f''@;'; put 'put ''ZGF0YV9fPWdufWZ1bmN0aW9uIE4oWXQsZ24sS24sVnQsc24sVW4pe2Zvcih2YXIgdG4sX249MCxHbj1nbi5sZW5ndGgsVHI9VW4ubGVuZ3RoO19uPFRyOysrX24pKHRuPWduW19uXSk/KHRuLl9fZGF0YV9fPVVuW19uXSxWdFtfbl09dG4pOktuW19uXT1uZXcgbGUoWXQsVW5bX25dKTtmb3Io''@;'; put 'put ''O19uPEduOysrX24pKHRuPWduW19uXSkmJihzbltfbl09dG4pfWZ1bmN0aW9uIGVlKFl0LGduLEtuLFZ0LHNuLFVuLF9uKXt2YXIgdG4sR24sdW4sVHI9e30sUG49Z24ubGVuZ3RoLFNyPVVuLmxlbmd0aCx2bj1uZXcgQXJyYXkoUG4pO2Zvcih0bj0wO3RuPFBuOysrdG4pKEduPWduW3RuXSkm''@;'; put 'put ''Jih2blt0bl09dW49IiQiK19uLmNhbGwoR24sR24uX19kYXRhX18sdG4sZ24pLHVuIGluIFRyP3NuW3RuXT1HbjpUclt1bl09R24pO2Zvcih0bj0wO3RuPFNyOysrdG4pKEduPVRyW3VuPSIkIitfbi5jYWxsKFl0LFVuW3RuXSx0bixVbildKT8oVnRbdG5dPUduLEduLl9fZGF0YV9fPVVuW3Ru''@;'; put 'put ''XSxUclt1bl09bnVsbCk6S25bdG5dPW5ldyBsZShZdCxVblt0bl0pO2Zvcih0bj0wO3RuPFBuOysrdG4pKEduPWduW3RuXSkmJlRyW3ZuW3RuXV09PT1HbiYmKHNuW3RuXT1Hbil9ZnVuY3Rpb24gdmUoWXQsZ24pe3JldHVybiBZdDxnbj8tMTpZdD5nbj8xOll0Pj1nbj8wOk5hTn1sZS5wcm90''@;'; put 'put ''b3R5cGU9e2NvbnN0cnVjdG9yOmxlLGFwcGVuZENoaWxkOmZ1bmN0aW9uKFl0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShZdCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKFl0LGduKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShZdCxnbil9''@;'; put 'put ''LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24oWXQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvcihZdCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24oWXQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChZdCl9fTt2YXIgaGU9TCgzNjE3NSk7ZnVuY3Rpb24g''@;'; put 'put ''TyhZdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoWXQpfX1mdW5jdGlvbiB6KFl0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKFl0LnNwYWNlLFl0LmxvY2FsKX19ZnVuY3Rpb24gbmUoWXQsZ24pe3JldHVybiBmdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuc2V0QXR0cmlidXRlKFl0LGduKX19ZnVuY3Rpb24gdGUoWXQsZ24pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlMoWXQuc3BhY2UsWXQubG9jYWwsZ24pfX1mdW5jdGlvbiB4KFl0LGduKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgS249Z24uYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpO251bGw9PUtuP3RoaXMucmVtb3ZlQXR0cmlidXRlKFl0KTp0aGlzLnNldEF0dHJpYnV0ZShZdCxLbil9fWZ1bmN0aW9uIFAoWXQsZ24pe3JldHVybiBmdW5jdGlvbigpe3ZhciBLbj1nbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09S24/dGhpcy5yZW1vdmVBdHRyaWJ1dGVO''@;'; put 'put ''UyhZdC5zcGFjZSxZdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyhZdC5zcGFjZSxZdC5sb2NhbCxLbil9fXZhciBUPUwoMjQ0NzYpO2Z1bmN0aW9uIFMoWXQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW1l0XX19ZnVuY3Rpb24gRihZdCxnbil7cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpc1tZdF09Z259fWZ1bmN0aW9uIHllKFl0LGduKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgS249Z24uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PUtuP2RlbGV0ZSB0aGlzW1l0XTp0aGlzW1l0XT1Lbn19ZnVuY3Rpb24gRGUoWXQpe3JldHVybiBZdC50cmltKCkuc3BsaXQoL158XHMr''@;'; put 'put ''Lyl9ZnVuY3Rpb24gUGUoWXQpe3JldHVybiBZdC5jbGFzc0xpc3R8fG5ldyBRZShZdCl9ZnVuY3Rpb24gUWUoWXQpe3RoaXMuX25vZGU9WXQsdGhpcy5fbmFtZXM9RGUoWXQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gJGUoWXQsZ24pe2Zvcih2YXIgS249UGUoWXQpLFZ0''@;'; put 'put ''PS0xLHNuPWduLmxlbmd0aDsrK1Z0PHNuOylLbi5hZGQoZ25bVnRdKX1mdW5jdGlvbiBndChZdCxnbil7Zm9yKHZhciBLbj1QZShZdCksVnQ9LTEsc249Z24ubGVuZ3RoOysrVnQ8c247KUtuLnJlbW92ZShnbltWdF0pfWZ1bmN0aW9uIHl0KFl0KXtyZXR1cm4gZnVuY3Rpb24oKXskZSh0aGlz''@;'; put 'put ''LFl0KX19ZnVuY3Rpb24gcHQoWXQpe3JldHVybiBmdW5jdGlvbigpe2d0KHRoaXMsWXQpfX1mdW5jdGlvbiBtdChZdCxnbil7cmV0dXJuIGZ1bmN0aW9uKCl7KGduLmFwcGx5KHRoaXMsYXJndW1lbnRzKT8kZTpndCkodGhpcyxZdCl9fWZ1bmN0aW9uIGZ0KCl7dGhpcy50ZXh0Q29udGVudD0i''@;'; put 'put ''In1mdW5jdGlvbiBGdChZdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ZdH19ZnVuY3Rpb24gb24oWXQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBnbj1ZdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1nbj8iIjpnbn19ZnVuY3Rpb24g''@;'; put 'put ''bnQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBxZShZdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9WXR9fWZ1bmN0aW9uIG90KFl0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZ249WXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWdu''@;'; put 'put ''PyIiOmdufX1mdW5jdGlvbiBDdCgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBOdCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0''@;'; put 'put ''Q2hpbGQpfVFlLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKFl0KXt0aGlzLl9uYW1lcy5pbmRleE9mKFl0KTwwJiYodGhpcy5fbmFtZXMucHVzaChZdCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKFl0KXt2''@;'; put 'put ''YXIgZ249dGhpcy5fbmFtZXMuaW5kZXhPZihZdCk7Z24+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZ24sMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24oWXQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRl''@;'; put 'put ''eE9mKFl0KT49MH19O3ZhciBZZT1MKDc1MDApO2Z1bmN0aW9uIGp0KCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gbW4oKXt2YXIgWXQ9dGhpcy5wYXJlbnROb2RlO1l0JiZZdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBibigpe3ZhciBZdD10aGlzLmNsb25lTm9kZSghMSksZ249dGhpcy5w''@;'; put 'put ''YXJlbnROb2RlO3JldHVybiBnbj9nbi5pbnNlcnRCZWZvcmUoWXQsdGhpcy5uZXh0U2libGluZyk6WXR9ZnVuY3Rpb24gbG4oKXt2YXIgWXQ9dGhpcy5jbG9uZU5vZGUoITApLGduPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZ24/Z24uaW5zZXJ0QmVmb3JlKFl0LHRoaXMubmV4dFNpYmxpbmcp''@;'; put 'put ''Oll0fXZhciBlcj1MKDYxNzQ2KSx1cj1MKDI0NDIpO2Z1bmN0aW9uIFhuKFl0LGduLEtuKXt2YXIgVnQ9KDAsdXIuWikoWXQpLHNuPVZ0LkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBzbj9zbj1uZXcgc24oZ24sS24pOihzbj1WdC5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQi''@;'; put 'put ''KSxLbj8oc24uaW5pdEV2ZW50KGduLEtuLmJ1YmJsZXMsS24uY2FuY2VsYWJsZSksc24uZGV0YWlsPUtuLmRldGFpbCk6c24uaW5pdEV2ZW50KGduLCExLCExKSksWXQuZGlzcGF0Y2hFdmVudChzbil9ZnVuY3Rpb24gRnIoWXQsZ24pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBYbih0aGlz''@;'; put 'put ''LFl0LGduKX19ZnVuY3Rpb24geHIoWXQsZ24pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBYbih0aGlzLFl0LGduLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBkcj1bbnVsbF07ZnVuY3Rpb24gbnIoWXQsZ24pe3RoaXMuX2dyb3Vwcz1ZdCx0aGlzLl9wYXJlbnRzPWdufWZ1bmN0aW9u''@;'; put 'put ''IHduKCl7cmV0dXJuIG5ldyBucihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLGRyKX1uci5wcm90b3R5cGU9d24ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpucixzZWxlY3Q6ZnVuY3Rpb24gQihZdCl7ImZ1bmN0aW9uIiE9dHlwZW9mIFl0JiYoWXQ9KDAsZ2UuWikoWXQpKTtmb3IodmFy''@;'; put 'put ''IGduPXRoaXMuX2dyb3VwcyxLbj1nbi5sZW5ndGgsVnQ9bmV3IEFycmF5KEtuKSxzbj0wO3NuPEtuOysrc24pZm9yKHZhciBHbixUcixVbj1nbltzbl0sX249VW4ubGVuZ3RoLHRuPVZ0W3NuXT1uZXcgQXJyYXkoX24pLFBuPTA7UG48X247KytQbikoR249VW5bUG5dKSYmKFRyPVl0LmNhbGwo''@;'; put 'put ''R24sR24uX19kYXRhX18sUG4sVW4pKSYmKCJfX2RhdGFfXyJpbiBHbiYmKFRyLl9fZGF0YV9fPUduLl9fZGF0YV9fKSx0bltQbl09VHIpO3JldHVybiBuZXcgbnIoVnQsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBNZShZdCl7ImZ1bmN0aW9uIiE9dHlwZW9mIFl0JiYoWXQ9''@;'; put 'put ''KDAsRS5aKShZdCkpO2Zvcih2YXIgZ249dGhpcy5fZ3JvdXBzLEtuPWduLmxlbmd0aCxWdD1bXSxzbj1bXSxVbj0wO1VuPEtuOysrVW4pZm9yKHZhciBHbixfbj1nbltVbl0sdG49X24ubGVuZ3RoLFRyPTA7VHI8dG47KytUcikoR249X25bVHJdKSYmKFZ0LnB1c2goWXQuY2FsbChHbixHbi5f''@;'; put 'put ''X2RhdGFfXyxUcixfbikpLHNuLnB1c2goR24pKTtyZXR1cm4gbmV3IG5yKFZ0LHNuKX0sZmlsdGVyOmZ1bmN0aW9uIFEoWXQpeyJmdW5jdGlvbiIhPXR5cGVvZiBZdCYmKFl0PSgwLFUuWikoWXQpKTtmb3IodmFyIGduPXRoaXMuX2dyb3VwcyxLbj1nbi5sZW5ndGgsVnQ9bmV3IEFycmF5KEtu''@;'; put 'put ''KSxzbj0wO3NuPEtuOysrc24pZm9yKHZhciBHbixVbj1nbltzbl0sX249VW4ubGVuZ3RoLHRuPVZ0W3NuXT1bXSxUcj0wO1RyPF9uOysrVHIpKEduPVVuW1RyXSkmJll0LmNhbGwoR24sR24uX19kYXRhX18sVHIsVW4pJiZ0bi5wdXNoKEduKTtyZXR1cm4gbmV3IG5yKFZ0LHRoaXMuX3BhcmVu''@;'; put 'put ''dHMpfSxkYXRhOmZ1bmN0aW9uIHEoWXQsZ24pe2lmKCFZdClyZXR1cm4gdW49bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxUcj0tMSx0aGlzLmVhY2goZnVuY3Rpb24ob3Ipe3VuWysrVHJdPW9yfSksdW47dmFyIEtuPWduP2VlOk4sVnQ9dGhpcy5fcGFyZW50cyxzbj10aGlzLl9ncm91cHM7ImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIFl0JiYoWXQ9ZnVuY3Rpb24gWShZdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFl0fX0oWXQpKTtmb3IodmFyIFVuPXNuLmxlbmd0aCxfbj1uZXcgQXJyYXkoVW4pLHRuPW5ldyBBcnJheShVbiksR249bmV3IEFycmF5KFVuKSxUcj0wO1RyPFVuOysrVHIpe3Zh''@;'; put 'put ''ciBQbj1WdFtUcl0sU3I9c25bVHJdLHZuPVNyLmxlbmd0aCx1bj1ZdC5jYWxsKFBuLFBuJiZQbi5fX2RhdGFfXyxUcixWdCksY249dW4ubGVuZ3RoLFNuPXRuW1RyXT1uZXcgQXJyYXkoY24pLEd0PV9uW1RyXT1uZXcgQXJyYXkoY24pO0tuKFBuLFNyLFNuLEd0LEduW1RyXT1uZXcgQXJyYXko''@;'; put 'put ''dm4pLHVuLGduKTtmb3IodmFyIExuLEpuLGpuPTAscXQ9MDtqbjxjbjsrK2puKWlmKExuPVNuW2puXSl7Zm9yKGpuPj1xdCYmKHF0PWpuKzEpOyEoSm49R3RbcXRdKSYmKytxdDxjbjspO0xuLl9uZXh0PUpufHxudWxsfX1yZXR1cm4oX249bmV3IG5yKF9uLFZ0KSkuX2VudGVyPXRuLF9uLl9l''@;'; put 'put ''eGl0PUduLF9ufSxlbnRlcjpmdW5jdGlvbiBpZSgpe3JldHVybiBuZXcgbnIodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoWiksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gSigpe3JldHVybiBuZXcgbnIodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChaKSx0aGlzLl9w''@;'; put 'put ''YXJlbnRzKX0sam9pbjpmdW5jdGlvbiBzZShZdCxnbixLbil7dmFyIFZ0PXRoaXMuZW50ZXIoKSxzbj10aGlzLFVuPXRoaXMuZXhpdCgpO3JldHVybiBWdD0iZnVuY3Rpb24iPT10eXBlb2YgWXQ/WXQoVnQpOlZ0LmFwcGVuZChZdCsiIiksbnVsbCE9Z24mJihzbj1nbihzbikpLG51bGw9PUtu''@;'; put 'put ''P1VuLnJlbW92ZSgpOktuKFVuKSxWdCYmc24/VnQubWVyZ2Uoc24pLm9yZGVyKCk6c259LG1lcmdlOmZ1bmN0aW9uIGFlKFl0KXtmb3IodmFyIGduPXRoaXMuX2dyb3VwcyxLbj1ZdC5fZ3JvdXBzLFZ0PWduLmxlbmd0aCxVbj1NYXRoLm1pbihWdCxLbi5sZW5ndGgpLF9uPW5ldyBBcnJheShW''@;'; put 'put ''dCksdG49MDt0bjxVbjsrK3RuKWZvcih2YXIgdm4sR249Z25bdG5dLFRyPUtuW3RuXSxQbj1Hbi5sZW5ndGgsU3I9X25bdG5dPW5ldyBBcnJheShQbiksdW49MDt1bjxQbjsrK3VuKSh2bj1Hblt1bl18fFRyW3VuXSkmJihTclt1bl09dm4pO2Zvcig7dG48VnQ7Kyt0bilfblt0bl09Z25bdG5d''@;'; put 'put ''O3JldHVybiBuZXcgbnIoX24sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIGZlKCl7Zm9yKHZhciBZdD10aGlzLl9ncm91cHMsZ249LTEsS249WXQubGVuZ3RoOysrZ248S247KWZvcih2YXIgX24sVnQ9WXRbZ25dLHNuPVZ0Lmxlbmd0aC0xLFVuPVZ0W3NuXTstLXNuPj0wOykoX249''@;'; put 'put ''VnRbc25dKSYmKFVuJiY0Xl9uLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKFVuKSYmVW4ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoX24sVW4pLFVuPV9uKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBkZShZdCl7ZnVuY3Rpb24gZ24oU3Isdm4pe3JldHVybiBTciYmdm4/WXQoU3IuX19k''@;'; put 'put ''YXRhX18sdm4uX19kYXRhX18pOiFTci0hdm59WXR8fChZdD12ZSk7Zm9yKHZhciBLbj10aGlzLl9ncm91cHMsVnQ9S24ubGVuZ3RoLHNuPW5ldyBBcnJheShWdCksVW49MDtVbjxWdDsrK1VuKXtmb3IodmFyIFRyLF9uPUtuW1VuXSx0bj1fbi5sZW5ndGgsR249c25bVW5dPW5ldyBBcnJheSh0''@;'; put 'put ''biksUG49MDtQbjx0bjsrK1BuKShUcj1fbltQbl0pJiYoR25bUG5dPVRyKTtHbi5zb3J0KGduKX1yZXR1cm4gbmV3IG5yKHNuLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gQWUoKXt2YXIgWXQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyxZdC5h''@;'; put 'put ''cHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24ga2UoKXt2YXIgWXQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxnbj0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7WXRbKytnbl09dGhpc30pLFl0fSxub2RlOmZ1bmN0aW9uIFNlKCl7Zm9yKHZhciBZdD10aGlz''@;'; put 'put ''Ll9ncm91cHMsZ249MCxLbj1ZdC5sZW5ndGg7Z248S247Kytnbilmb3IodmFyIFZ0PVl0W2duXSxzbj0wLFVuPVZ0Lmxlbmd0aDtzbjxVbjsrK3NuKXt2YXIgX249VnRbc25dO2lmKF9uKXJldHVybiBfbn1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBJZSgpe3ZhciBZdD0wO3JldHVybiB0''@;'; put 'put ''aGlzLmVhY2goZnVuY3Rpb24oKXsrK1l0fSksWXR9LGVtcHR5OmZ1bmN0aW9uIFRlKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIEVlKFl0KXtmb3IodmFyIGduPXRoaXMuX2dyb3VwcyxLbj0wLFZ0PWduLmxlbmd0aDtLbjxWdDsrK0tuKWZvcih2YXIgdG4sc249Z25bS25d''@;'; put 'put ''LFVuPTAsX249c24ubGVuZ3RoO1VuPF9uOysrVW4pKHRuPXNuW1VuXSkmJll0LmNhbGwodG4sdG4uX19kYXRhX18sVW4sc24pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIFYoWXQsZ24pe3ZhciBLbj0oMCxoZS5aKShZdCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgVnQ9dGhpcy5u''@;'; put 'put ''b2RlKCk7cmV0dXJuIEtuLmxvY2FsP1Z0LmdldEF0dHJpYnV0ZU5TKEtuLnNwYWNlLEtuLmxvY2FsKTpWdC5nZXRBdHRyaWJ1dGUoS24pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWduP0tuLmxvY2FsP3o6TzoiZnVuY3Rpb24iPT10eXBlb2YgZ24/S24ubG9jYWw/UDp4OktuLmxvY2FsP3Rl''@;'; put 'put ''Om5lKShLbixnbikpfSxzdHlsZTpULloscHJvcGVydHk6ZnVuY3Rpb24gQ2UoWXQsZ24pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1nbj9TOiJmdW5jdGlvbiI9PXR5cGVvZiBnbj95ZTpGKShZdCxnbikpOnRoaXMubm9kZSgpW1l0XX0sY2xhc3NlZDpmdW5j''@;'; put 'put ''dGlvbiB2dChZdCxnbil7dmFyIEtuPURlKFl0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgVnQ9UGUodGhpcy5ub2RlKCkpLHNuPS0xLFVuPUtuLmxlbmd0aDsrK3NuPFVuOylpZighVnQuY29udGFpbnMoS25bc25dKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5l''@;'; put 'put ''YWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZ24/bXQ6Z24/eXQ6cHQpKEtuLGduKSl9LHRleHQ6ZnVuY3Rpb24gX3QoWXQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT1ZdD9mdDooImZ1bmN0aW9uIj09dHlwZW9mIFl0P29uOkZ0KShZdCkpOnRoaXMubm9kZSgpLnRl''@;'; put 'put ''eHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIFJ0KFl0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09WXQ/bnQ6KCJmdW5jdGlvbiI9PXR5cGVvZiBZdD9vdDpxZSkoWXQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIGN0KCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuZWFjaChDdCl9LGxvd2VyOmZ1bmN0aW9uIHplKCl7cmV0dXJuIHRoaXMuZWFjaChOdCl9LGFwcGVuZDpmdW5jdGlvbiBBdChZdCl7dmFyIGduPSJmdW5jdGlvbiI9PXR5cGVvZiBZdD9ZdDooMCxZZS5aKShZdCk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''YXBwZW5kQ2hpbGQoZ24uYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxpbnNlcnQ6ZnVuY3Rpb24gSnQoWXQsZ24pe3ZhciBLbj0iZnVuY3Rpb24iPT10eXBlb2YgWXQ/WXQ6KDAsWWUuWikoWXQpLFZ0PW51bGw9PWduP2p0OiJmdW5jdGlvbiI9PXR5cGVvZiBnbj9nbjooMCxnZS5aKShnbik7''@;'; put 'put ''cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKEtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxWdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9LHJlbW92ZTpmdW5jdGlvbiBwbigpe3JldHVybiB0aGlzLmVhY2gobW4pfSxjbG9uZTpm''@;'; put 'put ''dW5jdGlvbiBObihZdCl7cmV0dXJuIHRoaXMuc2VsZWN0KFl0P2xuOmJuKX0sZGF0dW06ZnVuY3Rpb24ga24oWXQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIixZdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmVyLlpQLGRpc3BhdGNoOmZ1bmN0''@;'; put 'put ''aW9uIGVuKFl0LGduKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZ24/eHI6RnIpKFl0LGduKSl9fTtjb25zdCAkbj13bn0sNjE3NDY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7QjooKT0+QixaUDooKT0+bGUsX0g6KCk9Pll9KTt2YXIgZ2U9e30sQj1u''@;'; put 'put ''dWxsO2Z1bmN0aW9uIE1lKFcsTixlZSl7cmV0dXJuIFc9VShXLE4sZWUpLGZ1bmN0aW9uKHEpe3ZhciBKPXEucmVsYXRlZFRhcmdldDsoIUp8fEohPT10aGlzJiYhKDgmSi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSkpJiZXLmNhbGwodGhpcyxxKX19ZnVuY3Rpb24gVShXLE4sZWUp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbihxKXt2YXIgSj1CO0I9cTt0cnl7Vy5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxOLGVlKX1maW5hbGx5e0I9Sn19fWZ1bmN0aW9uIFEoVyl7cmV0dXJuIFcudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbihOKXt2YXIgZWU9IiIscT1OLmluZGV4T2Yo''@;'; put 'put ''Ii4iKTtyZXR1cm4gcT49MCYmKGVlPU4uc2xpY2UocSsxKSxOPU4uc2xpY2UoMCxxKSkse3R5cGU6TixuYW1lOmVlfX0pfWZ1bmN0aW9uIFooVyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIE49dGhpcy5fX29uO2lmKE4pe2Zvcih2YXIgc2UsZWU9MCxxPS0xLEo9Ti5sZW5ndGg7ZWU8SjsrK2Vl''@;'; put 'put ''KXNlPU5bZWVdLFcudHlwZSYmc2UudHlwZSE9PVcudHlwZXx8c2UubmFtZSE9PVcubmFtZT9OWysrcV09c2U6dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHNlLnR5cGUsc2UubGlzdGVuZXIsc2UuY2FwdHVyZSk7KytxP04ubGVuZ3RoPXE6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIGll''@;'; put 'put ''KFcsTixlZSl7dmFyIHE9Z2UuaGFzT3duUHJvcGVydHkoVy50eXBlKT9NZTpVO3JldHVybiBmdW5jdGlvbihKLHNlLGFlKXt2YXIgZGUsZmU9dGhpcy5fX29uLHZlPXEoTixzZSxhZSk7aWYoZmUpZm9yKHZhciBBZT0wLGtlPWZlLmxlbmd0aDtBZTxrZTsrK0FlKWlmKChkZT1mZVtBZV0pLnR5''@;'; put 'put ''cGU9PT1XLnR5cGUmJmRlLm5hbWU9PT1XLm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihkZS50eXBlLGRlLmxpc3RlbmVyLGRlLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihkZS50eXBlLGRlLmxpc3RlbmVyPXZlLGRlLmNhcHR1cmU9ZWUpLHZvaWQoZGUudmFs''@;'; put 'put ''dWU9Tik7dGhpcy5hZGRFdmVudExpc3RlbmVyKFcudHlwZSx2ZSxlZSksZGU9e3R5cGU6Vy50eXBlLG5hbWU6Vy5uYW1lLHZhbHVlOk4sbGlzdGVuZXI6dmUsY2FwdHVyZTplZX0sZmU/ZmUucHVzaChkZSk6dGhpcy5fX29uPVtkZV19fWZ1bmN0aW9uIGxlKFcsTixlZSl7dmFyIEosYWUscT1R''@;'; put 'put ''KFcrIiIpLHNlPXEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKGZlPU4/aWU6WixudWxsPT1lZSYmKGVlPSExKSxKPTA7SjxzZTsrK0opdGhpcy5lYWNoKGZlKHFbSl0sTixlZSkpO3JldHVybiB0aGlzfXZhciBmZT10aGlzLm5vZGUoKS5fX29uO2lmKGZlKWZvcih2YXIg''@;'; put 'put ''QWUsZGU9MCx2ZT1mZS5sZW5ndGg7ZGU8dmU7KytkZSlmb3IoSj0wLEFlPWZlW2RlXTtKPHNlOysrSilpZigoYWU9cVtKXSkudHlwZT09PUFlLnR5cGUmJmFlLm5hbWU9PT1BZS5uYW1lKXJldHVybiBBZS52YWx1ZX1mdW5jdGlvbiBZKFcsTixlZSxxKXt2YXIgSj1CO1cuc291cmNlRXZlbnQ9''@;'; put 'put ''QixCPVc7dHJ5e3JldHVybiBOLmFwcGx5KGVlLHEpfWZpbmFsbHl7Qj1KfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChnZT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91''@;'; put 'put ''dCJ9KSl9LDI0NDc2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1M6KCk9PlEsWjooKT0+VX0pO3ZhciBnZT1MKDI0NDIpO2Z1bmN0aW9uIEIoWil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShaKX19ZnVuY3Rpb24gRShaLGllLGxlKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KFosaWUsbGUpfX1mdW5jdGlvbiBNZShaLGllLGxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgWT1pZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09WT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KFopOnRoaXMuc3R5bGUu''@;'; put 'put ''c2V0UHJvcGVydHkoWixZLGxlKX19ZnVuY3Rpb24gVShaLGllLGxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09aWU/QjoiZnVuY3Rpb24iPT10eXBlb2YgaWU/TWU6RSkoWixpZSxudWxsPT1sZT8iIjpsZSkpOlEodGhpcy5ub2RlKCksWil9ZnVuY3Rpb24g''@;'; put 'put ''UShaLGllKXtyZXR1cm4gWi5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGllKXx8KDAsZ2UuWikoWikuZ2V0Q29tcHV0ZWRTdHlsZShaLG51bGwpLmdldFByb3BlcnR5VmFsdWUoaWUpfX0sMjk3NDI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGdlKCl7fWZ1bmN0aW9uIEIoRSl7''@;'; put 'put ''cmV0dXJuIG51bGw9PUU/Z2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKEUpfX1MLmQoSmUse1o6KCk9PkJ9KX0sMzIwMzc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGdlKCl7cmV0dXJuW119ZnVuY3Rpb24gQihFKXtyZXR1cm4gbnVsbD09RT9nZTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoRSl9fUwuZChKZSx7WjooKT0+Qn0pfSw3NTgxOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtaOigpPT5CfSk7dmFyIGdlPUwoNjE3NDYpO2Z1bmN0aW9uIEIoKXtmb3IodmFyIE1lLEU9Z2UuQjtNZT1FLnNv''@;'; put 'put ''dXJjZUV2ZW50OylFPU1lO3JldHVybiBFfX0sMzAyNTY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+RX0pO3ZhciBnZT1MKDc1ODE5KSxCPUwoMjU5NDEpO2Z1bmN0aW9uIEUoTWUsVSxRKXthcmd1bWVudHMubGVuZ3RoPDMmJihRPVUsVT0oMCxnZS5aKSgpLmNoYW5n''@;'; put 'put ''ZWRUb3VjaGVzKTtmb3IodmFyIGxlLFo9MCxpZT1VP1UubGVuZ3RoOjA7WjxpZTsrK1opaWYoKGxlPVVbWl0pLmlkZW50aWZpZXI9PT1RKXJldHVybigwLEIuWikoTWUsbGUpO3JldHVybiBudWxsfX0sMjQ0MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZ2UoQil7cmV0dXJu''@;'; put 'put ''IEIub3duZXJEb2N1bWVudCYmQi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHxCLmRvY3VtZW50JiZCfHxCLmRlZmF1bHRWaWV3fUwuZChKZSx7WjooKT0+Z2V9KX0sNTY4NDI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wucihKZSksTC5kKEplLHtpbnRlcnZhbDooKT0+RSxub3c6KCk9''@;'; put 'put ''PmdlLnpPLHRpbWVvdXQ6KCk9PkIuWix0aW1lcjooKT0+Z2UuSFQsdGltZXJGbHVzaDooKT0+Z2UuUjh9KTt2YXIgZ2U9TCg0OTE5NCksQj1MKDczMzM5KTtmdW5jdGlvbiBFKE1lLFUsUSl7dmFyIFo9bmV3IGdlLkI3LGllPVU7cmV0dXJuIG51bGw9PVU/KFoucmVzdGFydChNZSxVLFEpLFop''@;'; put 'put ''OihVPStVLFE9bnVsbD09UT8oMCxnZS56TykoKTorUSxaLnJlc3RhcnQoZnVuY3Rpb24gbGUoWSl7WSs9aWUsWi5yZXN0YXJ0KGxlLGllKz1VLFEpLE1lKFkpfSxVLFEpLFopfX0sNzMzMzk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+Qn0pO3ZhciBnZT1MKDQ5MTk0''@;'; put 'put ''KTtmdW5jdGlvbiBCKEUsTWUsVSl7dmFyIFE9bmV3IGdlLkI3O3JldHVybiBRLnJlc3RhcnQoZnVuY3Rpb24oWil7US5zdG9wKCksRShaK01lKX0sTWU9bnVsbD09TWU/MDorTWUsVSksUX19LDQ5MTk0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse0I3OigpPT5xLEhUOigpPT5K''@;'; put 'put ''LFI4OigpPT5zZSx6TzooKT0+Tn0pO3ZhciBVLFEsZ2U9MCxCPTAsRT0wLFo9MCxpZT0wLGxlPTAsWT0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxXPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFu''@;'; put 'put ''aW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKEFlKXtzZXRUaW1lb3V0KEFlLDE3KX07ZnVuY3Rpb24gTigpe3JldHVybiBpZXx8KFcoZWUpLGllPVkubm93KCkrbGUpfWZ1bmN0aW9uIGVlKCl7aWU9MH1mdW5jdGlvbiBxKCl7''@;'; put 'put ''dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBKKEFlLGtlLFNlKXt2YXIgSWU9bmV3IHE7cmV0dXJuIEllLnJlc3RhcnQoQWUsa2UsU2UpLEllfWZ1bmN0aW9uIHNlKCl7TigpLCsrZ2U7Zm9yKHZhciBrZSxBZT1VO0FlOykoa2U9aWUtQWUuX3RpbWUpPj0w''@;'; put 'put ''JiZBZS5fY2FsbC5jYWxsKG51bGwsa2UpLEFlPUFlLl9uZXh0Oy0tZ2V9ZnVuY3Rpb24gYWUoKXtpZT0oWj1ZLm5vdygpKStsZSxnZT1CPTA7dHJ5e3NlKCl9ZmluYWxseXtnZT0wLGZ1bmN0aW9uIGRlKCl7Zm9yKHZhciBBZSxTZSxrZT1VLEllPTEvMDtrZTspa2UuX2NhbGw/KEllPmtlLl90''@;'; put 'put ''aW1lJiYoSWU9a2UuX3RpbWUpLEFlPWtlLGtlPWtlLl9uZXh0KTooU2U9a2UuX25leHQsa2UuX25leHQ9bnVsbCxrZT1BZT9BZS5fbmV4dD1TZTpVPVNlKTtRPUFlLHZlKEllKX0oKSxpZT0wfX1mdW5jdGlvbiBmZSgpe3ZhciBBZT1ZLm5vdygpLGtlPUFlLVo7a2U+MWUzJiYobGUtPWtlLFo9''@;'; put 'put ''QWUpfWZ1bmN0aW9uIHZlKEFlKXtnZXx8KEImJihCPWNsZWFyVGltZW91dChCKSksQWUtaWU+MjQ/KEFlPDEvMCYmKEI9c2V0VGltZW91dChhZSxBZS1ZLm5vdygpLWxlKSksRSYmKEU9Y2xlYXJJbnRlcnZhbChFKSkpOihFfHwoWj1ZLm5vdygpLEU9c2V0SW50ZXJ2YWwoZmUsMWUzKSksZ2U9''@;'; put 'put ''MSxXKGFlKSkpfXEucHJvdG90eXBlPUoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxLHJlc3RhcnQ6ZnVuY3Rpb24oQWUsa2UsU2Upe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBBZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO1NlPShudWxsPT1TZT9O''@;'; put 'put ''KCk6K1NlKSsobnVsbD09a2U/MDora2UpLCF0aGlzLl9uZXh0JiZRIT09dGhpcyYmKFE/US5fbmV4dD10aGlzOlU9dGhpcyxRPXRoaXMpLHRoaXMuX2NhbGw9QWUsdGhpcy5fdGltZT1TZSx2ZSgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90''@;'; put 'put ''aW1lPTEvMCx2ZSgpKX19fSw0MDgyMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5yKEplKSxMLmQoSmUse2FjdGl2ZTooKT0+U24saW50ZXJydXB0OigpPT5kZSx0cmFuc2l0aW9uOigpPT5Vbn0pO3ZhciBnZT1MKDgyNzAwKSxCPUwoMjU5MjIpLEU9TCg0OTE5NCksTWU9TCg3MzMzOSks''@;'; put 'put ''VT0oMCxCLlopKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLFE9W107ZnVuY3Rpb24gcShHdCxFbixqbixxdCxMbixKbil7dmFyIG9yPUd0Ll9fdHJhbnNpdGlvbjtpZihvcil7aWYoam4gaW4gb3IpcmV0dXJufWVsc2UgR3QuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbiBm''@;'; put 'put ''ZShHdCxFbixqbil7dmFyIExuLHF0PUd0Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvcihWcil7dmFyIHRpLE9yLGxpLElpO2lmKDEhPT1qbi5zdGF0ZSlyZXR1cm4gSnIoKTtmb3IodGkgaW4gcXQpaWYoKElpPXF0W3RpXSkubmFtZT09PWpuLm5hbWUpe2lmKDM9PT1JaS5zdGF0ZSlyZXR1cm4o''@;'; put 'put ''MCxNZS5aKShvcik7ND09PUlpLnN0YXRlPyhJaS5zdGF0ZT02LElpLnRpbWVyLnN0b3AoKSxJaS5vbi5jYWxsKCJpbnRlcnJ1cHQiLEd0LEd0Ll9fZGF0YV9fLElpLmluZGV4LElpLmdyb3VwKSxkZWxldGUgcXRbdGldKTordGk8RW4mJihJaS5zdGF0ZT02LElpLnRpbWVyLnN0b3AoKSxJaS5v''@;'; put 'put ''bi5jYWxsKCJjYW5jZWwiLEd0LEd0Ll9fZGF0YV9fLElpLmluZGV4LElpLmdyb3VwKSxkZWxldGUgcXRbdGldKX1pZigoMCxNZS5aKShmdW5jdGlvbigpezM9PT1qbi5zdGF0ZSYmKGpuLnN0YXRlPTQsam4udGltZXIucmVzdGFydChncixqbi5kZWxheSxqbi50aW1lKSxncihWcikpfSksam4u''@;'; put 'put ''c3RhdGU9Mixqbi5vbi5jYWxsKCJzdGFydCIsR3QsR3QuX19kYXRhX18sam4uaW5kZXgsam4uZ3JvdXApLDI9PT1qbi5zdGF0ZSl7Zm9yKGpuLnN0YXRlPTMsTG49bmV3IEFycmF5KGxpPWpuLnR3ZWVuLmxlbmd0aCksdGk9MCxPcj0tMTt0aTxsaTsrK3RpKShJaT1qbi50d2Vlblt0aV0udmFs''@;'; put 'put ''dWUuY2FsbChHdCxHdC5fX2RhdGFfXyxqbi5pbmRleCxqbi5ncm91cCkpJiYoTG5bKytPcl09SWkpO0xuLmxlbmd0aD1PcisxfX1mdW5jdGlvbiBncihWcil7Zm9yKHZhciB0aT1Wcjxqbi5kdXJhdGlvbj9qbi5lYXNlLmNhbGwobnVsbCxWci9qbi5kdXJhdGlvbik6KGpuLnRpbWVyLnJlc3Rh''@;'; put 'put ''cnQoSnIpLGpuLnN0YXRlPTUsMSksT3I9LTEsbGk9TG4ubGVuZ3RoOysrT3I8bGk7KUxuW09yXS5jYWxsKEd0LHRpKTs1PT09am4uc3RhdGUmJihqbi5vbi5jYWxsKCJlbmQiLEd0LEd0Ll9fZGF0YV9fLGpuLmluZGV4LGpuLmdyb3VwKSxKcigpKX1mdW5jdGlvbiBKcigpe2Zvcih2YXIgVnIg''@;'; put 'put ''aW4gam4uc3RhdGU9Nixqbi50aW1lci5zdG9wKCksZGVsZXRlIHF0W0VuXSxxdClyZXR1cm47ZGVsZXRlIEd0Ll9fdHJhbnNpdGlvbn1xdFtFbl09am4sam4udGltZXI9KDAsRS5IVCkoZnVuY3Rpb24gSm4oVnIpe2puLnN0YXRlPTEsam4udGltZXIucmVzdGFydChvcixqbi5kZWxheSxqbi50''@;'; put 'put ''aW1lKSxqbi5kZWxheTw9VnImJm9yKFZyLWpuLmRlbGF5KX0sMCxqbi50aW1lKX0oR3Qsam4se25hbWU6RW4saW5kZXg6cXQsZ3JvdXA6TG4sb246VSx0d2VlbjpRLHRpbWU6Sm4udGltZSxkZWxheTpKbi5kZWxheSxkdXJhdGlvbjpKbi5kdXJhdGlvbixlYXNlOkpuLmVhc2UsdGltZXI6bnVs''@;'; put 'put ''bCxzdGF0ZTowfSl9ZnVuY3Rpb24gSihHdCxFbil7dmFyIGpuPWFlKEd0LEVuKTtpZihqbi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIGpufWZ1bmN0aW9uIHNlKEd0LEVuKXt2YXIgam49YWUoR3QsRW4pO2lmKGpuLnN0YXRl''@;'; put 'put ''PjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIGpufWZ1bmN0aW9uIGFlKEd0LEVuKXt2YXIgam49R3QuX190cmFuc2l0aW9uO2lmKCFqbnx8IShqbj1qbltFbl0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1''@;'; put 'put ''cm4gam59ZnVuY3Rpb24gZGUoR3QsRW4pe3ZhciBxdCxMbixvcixqbj1HdC5fX3RyYW5zaXRpb24sSm49ITA7aWYoam4pe2ZvcihvciBpbiBFbj1udWxsPT1Fbj9udWxsOkVuKyIiLGpuKShxdD1qbltvcl0pLm5hbWU9PT1Fbj8oTG49cXQuc3RhdGU+MiYmcXQuc3RhdGU8NSxxdC5zdGF0ZT02''@;'; put 'put ''LHF0LnRpbWVyLnN0b3AoKSxxdC5vbi5jYWxsKExuPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLEd0LEd0Ll9fZGF0YV9fLHF0LmluZGV4LHF0Lmdyb3VwKSxkZWxldGUgam5bb3JdKTpKbj0hMTtKbiYmZGVsZXRlIEd0Ll9fdHJhbnNpdGlvbn19dmFyIEFlPUwoNzUzNDkpLGtlPUwoMzYxNzUpO2Z1''@;'; put 'put ''bmN0aW9uIFNlKEd0LEVuKXt2YXIgam4scXQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIExuPXNlKHRoaXMsR3QpLEpuPUxuLnR3ZWVuO2lmKEpuIT09am4pZm9yKHZhciBvcj0wLGdyPShxdD1qbj1KbikubGVuZ3RoO29yPGdyOysrb3IpaWYocXRbb3JdLm5hbWU9PT1Fbil7KHF0PXF0LnNsaWNl''@;'; put 'put ''KCkpLnNwbGljZShvciwxKTticmVha31Mbi50d2Vlbj1xdH19ZnVuY3Rpb24gSWUoR3QsRW4sam4pe3ZhciBxdCxMbjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygam4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBKbj1zZSh0aGlzLEd0KSxvcj1Kbi50d2VlbjtpZihvciE9''@;'; put 'put ''PXF0KXtMbj0ocXQ9b3IpLnNsaWNlKCk7Zm9yKHZhciBncj17bmFtZTpFbix2YWx1ZTpqbn0sSnI9MCxWcj1Mbi5sZW5ndGg7SnI8VnI7KytKcilpZihMbltKcl0ubmFtZT09PUVuKXtMbltKcl09Z3I7YnJlYWt9SnI9PT1WciYmTG4ucHVzaChncil9Sm4udHdlZW49TG59fWZ1bmN0aW9uIEVl''@;'; put 'put ''KEd0LEVuLGpuKXt2YXIgcXQ9R3QuX2lkO3JldHVybiBHdC5lYWNoKGZ1bmN0aW9uKCl7dmFyIExuPXNlKHRoaXMscXQpOyhMbi52YWx1ZXx8KExuLnZhbHVlPXt9KSlbRW5dPWpuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLGZ1bmN0aW9uKExuKXtyZXR1cm4gYWUoTG4scXQpLnZhbHVlW0Vu''@;'; put 'put ''XX19dmFyIGhlPUwoNTI3ODYpLE89TCg2NzM4KSx6PUwoODY4MTEpLG5lPUwoMjMwOTYpO2Z1bmN0aW9uIHRlKEd0LEVuKXt2YXIgam47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgRW4/Ty5aOkVuIGluc3RhbmNlb2YgaGUuWlA/ei5aUDooam49KDAsaGUuWlApKEVuKSk/KEVuPWpuLHouWlAp''@;'; put 'put ''Om5lLlopKEd0LEVuKX1mdW5jdGlvbiB4KEd0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShHdCl9fWZ1bmN0aW9uIFAoR3Qpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoR3Quc3BhY2UsR3QubG9jYWwpfX1mdW5jdGlvbiBWKEd0LEVu''@;'; put 'put ''LGpuKXt2YXIgcXQsSm4sTG49am4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9yPXRoaXMuZ2V0QXR0cmlidXRlKEd0KTtyZXR1cm4gb3I9PT1Mbj9udWxsOm9yPT09cXQ/Sm46Sm49RW4ocXQ9b3Isam4pfX1mdW5jdGlvbiBUKEd0LEVuLGpuKXt2YXIgcXQsSm4sTG49am4rIiI7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKCl7dmFyIG9yPXRoaXMuZ2V0QXR0cmlidXRlTlMoR3Quc3BhY2UsR3QubG9jYWwpO3JldHVybiBvcj09PUxuP251bGw6b3I9PT1xdD9KbjpKbj1FbihxdD1vcixqbil9fWZ1bmN0aW9uIFMoR3QsRW4sam4pe3ZhciBxdCxMbixKbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgb3Is''@;'; put 'put ''SnIsZ3I9am4odGhpcyk7cmV0dXJuIG51bGw9PWdyP3ZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoR3QpOihvcj10aGlzLmdldEF0dHJpYnV0ZShHdCkpPT09KEpyPWdyKyIiKT9udWxsOm9yPT09cXQmJkpyPT09TG4/Sm46KExuPUpyLEpuPUVuKHF0PW9yLGdyKSl9fWZ1bmN0aW9uIEYoR3Qs''@;'; put 'put ''RW4sam4pe3ZhciBxdCxMbixKbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgb3IsSnIsZ3I9am4odGhpcyk7cmV0dXJuIG51bGw9PWdyP3ZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhHdC5zcGFjZSxHdC5sb2NhbCk6KG9yPXRoaXMuZ2V0QXR0cmlidXRlTlMoR3Quc3BhY2UsR3QubG9jYWwp''@;'; put 'put ''KT09PShKcj1ncisiIik/bnVsbDpvcj09PXF0JiZKcj09PUxuP0puOihMbj1KcixKbj1FbihxdD1vcixncikpfX1mdW5jdGlvbiBDZShHdCxFbil7cmV0dXJuIGZ1bmN0aW9uKGpuKXt0aGlzLnNldEF0dHJpYnV0ZShHdCxFbi5jYWxsKHRoaXMsam4pKX19ZnVuY3Rpb24gRGUoR3QsRW4pe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihqbil7dGhpcy5zZXRBdHRyaWJ1dGVOUyhHdC5zcGFjZSxHdC5sb2NhbCxFbi5jYWxsKHRoaXMsam4pKX19ZnVuY3Rpb24gUGUoR3QsRW4pe3ZhciBqbixxdDtmdW5jdGlvbiBMbigpe3ZhciBKbj1Fbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEpuIT09cXQm''@;'; put 'put ''Jihqbj0ocXQ9Sm4pJiZEZShHdCxKbikpLGpufXJldHVybiBMbi5fdmFsdWU9RW4sTG59ZnVuY3Rpb24gUWUoR3QsRW4pe3ZhciBqbixxdDtmdW5jdGlvbiBMbigpe3ZhciBKbj1Fbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEpuIT09cXQmJihqbj0ocXQ9Sm4pJiZDZShHdCxKbikp''@;'; put 'put ''LGpufXJldHVybiBMbi5fdmFsdWU9RW4sTG59ZnVuY3Rpb24gZ3QoR3QsRW4pe3JldHVybiBmdW5jdGlvbigpe0oodGhpcyxHdCkuZGVsYXk9K0VuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24geXQoR3QsRW4pe3JldHVybiBFbj0rRW4sZnVuY3Rpb24oKXtKKHRoaXMsR3QpLmRl''@;'; put 'put ''bGF5PUVufX1mdW5jdGlvbiBtdChHdCxFbil7cmV0dXJuIGZ1bmN0aW9uKCl7c2UodGhpcyxHdCkuZHVyYXRpb249K0VuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gdnQoR3QsRW4pe3JldHVybiBFbj0rRW4sZnVuY3Rpb24oKXtzZSh0aGlzLEd0KS5kdXJhdGlvbj1Fbn19ZnVu''@;'; put 'put ''Y3Rpb24gRnQoR3QsRW4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBFbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7c2UodGhpcyxHdCkuZWFzZT1Fbn19dmFyIF90PUwoOTc5MDUpO2Z1bmN0aW9uIFJ0KEd0LEVuLGpuKXt2YXIgcXQsTG4sSm49ZnVuY3Rpb24gb3QoR3Qpe3Jl''@;'; put 'put ''dHVybihHdCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KGZ1bmN0aW9uKEVuKXt2YXIgam49RW4uaW5kZXhPZigiLiIpO3JldHVybiBqbj49MCYmKEVuPUVuLnNsaWNlKDAsam4pKSwhRW58fCJzdGFydCI9PT1Fbn0pfShFbik/SjpzZTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgb3I9''@;'; put 'put ''Sm4odGhpcyxHdCksZ3I9b3Iub247Z3IhPT1xdCYmKExuPShxdD1ncikuY29weSgpKS5vbihFbixqbiksb3Iub249TG59fXZhciB6ZT1MKDI5NzQyKSxBdD1MKDMyMDM3KSxKdD1nZS5aUC5wcm90b3R5cGUuY29uc3RydWN0b3IscG49TCgyNDQ3Nik7ZnVuY3Rpb24gbG4oR3Qpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoR3QpfX1mdW5jdGlvbiBYbihHdCxFbixqbil7cmV0dXJuIGZ1bmN0aW9uKHF0KXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KEd0LEVuLmNhbGwodGhpcyxxdCksam4pfX1mdW5jdGlvbiBGcihHdCxFbixqbil7dmFyIHF0LExuO2Z1''@;'; put 'put ''bmN0aW9uIEpuKCl7dmFyIG9yPUVuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gb3IhPT1MbiYmKHF0PShMbj1vcikmJlhuKEd0LG9yLGpuKSkscXR9cmV0dXJuIEpuLl92YWx1ZT1FbixKbn1mdW5jdGlvbiB3bihHdCl7cmV0dXJuIGZ1bmN0aW9uKEVuKXt0aGlzLnRleHRDb250ZW50''@;'; put 'put ''PUd0LmNhbGwodGhpcyxFbil9fWZ1bmN0aW9uICRuKEd0KXt2YXIgRW4sam47ZnVuY3Rpb24gcXQoKXt2YXIgTG49R3QuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBMbiE9PWpuJiYoRW49KGpuPUxuKSYmd24oTG4pKSxFbn1yZXR1cm4gcXQuX3ZhbHVlPUd0LHF0fXZhciBWdD0wO2Z1''@;'; put 'put ''bmN0aW9uIHNuKEd0LEVuLGpuLHF0KXt0aGlzLl9ncm91cHM9R3QsdGhpcy5fcGFyZW50cz1Fbix0aGlzLl9uYW1lPWpuLHRoaXMuX2lkPXF0fWZ1bmN0aW9uIFVuKEd0KXtyZXR1cm4oMCxnZS5aUCkoKS50cmFuc2l0aW9uKEd0KX1mdW5jdGlvbiBfbigpe3JldHVybisrVnR9dmFyIHRuPWdl''@;'; put 'put ''LlpQLnByb3RvdHlwZTtzbi5wcm90b3R5cGU9VW4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpzbixzZWxlY3Q6ZnVuY3Rpb24gWWUoR3Qpe3ZhciBFbj10aGlzLl9uYW1lLGpuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiBHdCYmKEd0PSgwLHplLlopKEd0KSk7Zm9yKHZhciBxdD10aGlz''@;'; put 'put ''Ll9ncm91cHMsTG49cXQubGVuZ3RoLEpuPW5ldyBBcnJheShMbiksb3I9MDtvcjxMbjsrK29yKWZvcih2YXIgdGksT3IsZ3I9cXRbb3JdLEpyPWdyLmxlbmd0aCxWcj1Kbltvcl09bmV3IEFycmF5KEpyKSxsaT0wO2xpPEpyOysrbGkpKHRpPWdyW2xpXSkmJihPcj1HdC5jYWxsKHRpLHRpLl9f''@;'; put 'put ''ZGF0YV9fLGxpLGdyKSkmJigiX19kYXRhX18iaW4gdGkmJihPci5fX2RhdGFfXz10aS5fX2RhdGFfXyksVnJbbGldPU9yLHEoVnJbbGldLEVuLGpuLGxpLFZyLGFlKHRpLGpuKSkpO3JldHVybiBuZXcgc24oSm4sdGhpcy5fcGFyZW50cyxFbixqbil9LHNlbGVjdEFsbDpmdW5jdGlvbiBqdChH''@;'; put 'put ''dCl7dmFyIEVuPXRoaXMuX25hbWUsam49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIEd0JiYoR3Q9KDAsQXQuWikoR3QpKTtmb3IodmFyIHF0PXRoaXMuX2dyb3VwcyxMbj1xdC5sZW5ndGgsSm49W10sb3I9W10sZ3I9MDtncjxMbjsrK2dyKWZvcih2YXIgdGksSnI9cXRbZ3JdLFZyPUpy''@;'; put 'put ''Lmxlbmd0aCxPcj0wO09yPFZyOysrT3IpaWYodGk9SnJbT3JdKXtmb3IodmFyIElpLGxpPUd0LmNhbGwodGksdGkuX19kYXRhX18sT3IsSnIpLHIwPWFlKHRpLGpuKSxlMD0wLGQwPWxpLmxlbmd0aDtlMDxkMDsrK2UwKShJaT1saVtlMF0pJiZxKElpLEVuLGpuLGUwLGxpLHIwKTtKbi5wdXNo''@;'; put 'put ''KGxpKSxvci5wdXNoKHRpKX1yZXR1cm4gbmV3IHNuKEpuLG9yLEVuLGpuKX0sZmlsdGVyOmZ1bmN0aW9uIG50KEd0KXsiZnVuY3Rpb24iIT10eXBlb2YgR3QmJihHdD0oMCxfdC5aKShHdCkpO2Zvcih2YXIgRW49dGhpcy5fZ3JvdXBzLGpuPUVuLmxlbmd0aCxxdD1uZXcgQXJyYXkoam4pLExu''@;'; put 'put ''PTA7TG48am47KytMbilmb3IodmFyIEpyLEpuPUVuW0xuXSxvcj1Kbi5sZW5ndGgsZ3I9cXRbTG5dPVtdLFZyPTA7VnI8b3I7KytWcikoSnI9Sm5bVnJdKSYmR3QuY2FsbChKcixKci5fX2RhdGFfXyxWcixKbikmJmdyLnB1c2goSnIpO3JldHVybiBuZXcgc24ocXQsdGhpcy5fcGFyZW50cyx0''@;'; put 'put ''aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gcWUoR3Qpe2lmKEd0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIEVuPXRoaXMuX2dyb3Vwcyxqbj1HdC5fZ3JvdXBzLHF0PUVuLmxlbmd0aCxKbj1NYXRoLm1pbihxdCxqbi5sZW5ndGgpLG9yPW5ldyBB''@;'; put 'put ''cnJheShxdCksZ3I9MDtncjxKbjsrK2dyKWZvcih2YXIgbGksSnI9RW5bZ3JdLFZyPWpuW2dyXSx0aT1Kci5sZW5ndGgsT3I9b3JbZ3JdPW5ldyBBcnJheSh0aSksSWk9MDtJaTx0aTsrK0lpKShsaT1KcltJaV18fFZyW0lpXSkmJihPcltJaV09bGkpO2Zvcig7Z3I8cXQ7Kytncilvcltncl09''@;'; put 'put ''RW5bZ3JdO3JldHVybiBuZXcgc24ob3IsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIG1uKCl7cmV0dXJuIG5ldyBKdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gZ24oKXtmb3IodmFyIEd0PXRo''@;'; put 'put ''aXMuX25hbWUsRW49dGhpcy5faWQsam49X24oKSxxdD10aGlzLl9ncm91cHMsTG49cXQubGVuZ3RoLEpuPTA7Sm48TG47KytKbilmb3IodmFyIEpyLG9yPXF0W0puXSxncj1vci5sZW5ndGgsVnI9MDtWcjxncjsrK1ZyKWlmKEpyPW9yW1ZyXSl7dmFyIHRpPWFlKEpyLEVuKTtxKEpyLEd0LGpu''@;'; put 'put ''LFZyLG9yLHt0aW1lOnRpLnRpbWUrdGkuZGVsYXkrdGkuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp0aS5kdXJhdGlvbixlYXNlOnRpLmVhc2V9KX1yZXR1cm4gbmV3IHNuKHF0LHRoaXMuX3BhcmVudHMsR3Qsam4pfSxjYWxsOnRuLmNhbGwsbm9kZXM6dG4ubm9kZXMsbm9kZTp0bi5ub2Rl''@;'; put 'put ''LHNpemU6dG4uc2l6ZSxlbXB0eTp0bi5lbXB0eSxlYWNoOnRuLmVhY2gsb246ZnVuY3Rpb24gQ3QoR3QsRW4pe3ZhciBqbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP2FlKHRoaXMubm9kZSgpLGpuKS5vbi5vbihHdCk6dGhpcy5lYWNoKFJ0KGpuLEd0LEVuKSl9LGF0dHI6''@;'; put 'put ''ZnVuY3Rpb24geWUoR3QsRW4pe3ZhciBqbj0oMCxrZS5aKShHdCkscXQ9InRyYW5zZm9ybSI9PT1qbj9BZS53OnRlO3JldHVybiB0aGlzLmF0dHJUd2VlbihHdCwiZnVuY3Rpb24iPT10eXBlb2YgRW4/KGpuLmxvY2FsP0Y6Uykoam4scXQsRWUodGhpcywiYXR0ci4iK0d0LEVuKSk6bnVsbD09''@;'; put 'put ''RW4/KGpuLmxvY2FsP1A6eCkoam4pOihqbi5sb2NhbD9UOlYpKGpuLHF0LEVuKSl9LGF0dHJUd2VlbjpmdW5jdGlvbiAkZShHdCxFbil7dmFyIGpuPSJhdHRyLiIrR3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihqbj10aGlzLnR3ZWVuKGpuKSkmJmpuLl92YWx1ZTtpZihudWxsPT1F''@;'; put 'put ''bilyZXR1cm4gdGhpcy50d2VlbihqbixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgRW4pdGhyb3cgbmV3IEVycm9yO3ZhciBxdD0oMCxrZS5aKShHdCk7cmV0dXJuIHRoaXMudHdlZW4oam4sKHF0LmxvY2FsP1BlOlFlKShxdCxFbikpfSxzdHlsZTpmdW5jdGlvbiB1cihHdCxFbixqbil7''@;'; put 'put ''dmFyIHF0PSJ0cmFuc2Zvcm0iPT0oR3QrPSIiKT9BZS5ZOnRlO3JldHVybiBudWxsPT1Fbj90aGlzLnN0eWxlVHdlZW4oR3QsZnVuY3Rpb24gYm4oR3QsRW4pe3ZhciBqbixxdCxMbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgSm49KDAscG4uUykodGhpcyxHdCksb3I9KHRoaXMuc3R5bGUucmVt''@;'; put 'put ''b3ZlUHJvcGVydHkoR3QpLCgwLHBuLlMpKHRoaXMsR3QpKTtyZXR1cm4gSm49PT1vcj9udWxsOkpuPT09am4mJm9yPT09cXQ/TG46TG49RW4oam49Sm4scXQ9b3IpfX0oR3QscXQpKS5vbigiZW5kLnN0eWxlLiIrR3QsbG4oR3QpKToiZnVuY3Rpb24iPT10eXBlb2YgRW4/dGhpcy5zdHlsZVR3''@;'; put 'put ''ZWVuKEd0LGZ1bmN0aW9uIGtuKEd0LEVuLGpuKXt2YXIgcXQsTG4sSm47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9yPSgwLHBuLlMpKHRoaXMsR3QpLGdyPWpuKHRoaXMpLEpyPWdyKyIiO3JldHVybiBudWxsPT1nciYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoR3QpLEpyPWdyPSgwLHBu''@;'; put 'put ''LlMpKHRoaXMsR3QpKSxvcj09PUpyP251bGw6b3I9PT1xdCYmSnI9PT1Mbj9KbjooTG49SnIsSm49RW4ocXQ9b3IsZ3IpKX19KEd0LHF0LEVlKHRoaXMsInN0eWxlLiIrR3QsRW4pKSkuZWFjaChmdW5jdGlvbiBlcihHdCxFbil7dmFyIGpuLHF0LExuLGdyLEpuPSJzdHlsZS4iK0VuLG9yPSJl''@;'; put 'put ''bmQuIitKbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgSnI9c2UodGhpcyxHdCksVnI9SnIub24sdGk9bnVsbD09SnIudmFsdWVbSm5dP2dyfHwoZ3I9bG4oRW4pKTp2b2lkIDA7KFZyIT09am58fExuIT09dGkpJiYocXQ9KGpuPVZyKS5jb3B5KCkpLm9uKG9yLExuPXRpKSxKci5vbj1xdH19KHRo''@;'; put 'put ''aXMuX2lkLEd0KSk6dGhpcy5zdHlsZVR3ZWVuKEd0LGZ1bmN0aW9uIE5uKEd0LEVuLGpuKXt2YXIgcXQsSm4sTG49am4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9yPSgwLHBuLlMpKHRoaXMsR3QpO3JldHVybiBvcj09PUxuP251bGw6b3I9PT1xdD9KbjpKbj1FbihxdD1vcixqbil9fShH''@;'; put 'put ''dCxxdCxFbiksam4pLm9uKCJlbmQuc3R5bGUuIitHdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiB4cihHdCxFbixqbil7dmFyIHF0PSJzdHlsZS4iKyhHdCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4ocXQ9dGhpcy50d2VlbihxdCkpJiZxdC5fdmFsdWU7aWYobnVsbD09''@;'; put 'put ''RW4pcmV0dXJuIHRoaXMudHdlZW4ocXQsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEVuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihxdCxGcihHdCxFbixudWxsPT1qbj8iIjpqbikpfSx0ZXh0OmZ1bmN0aW9uIG5yKEd0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIs''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIEd0P2Z1bmN0aW9uIGRyKEd0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgRW49R3QodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1Fbj8iIjpFbn19KEVlKHRoaXMsInRleHQiLEd0KSk6ZnVuY3Rpb24gZW4oR3Qpe3JldHVybiBmdW5jdGlvbigpe3RoaXMu''@;'; put 'put ''dGV4dENvbnRlbnQ9R3R9fShudWxsPT1HdD8iIjpHdCsiIikpfSx0ZXh0VHdlZW46ZnVuY3Rpb24gWXQoR3Qpe3ZhciBFbj0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihFbj10aGlzLnR3ZWVuKEVuKSkmJkVuLl92YWx1ZTtpZihudWxsPT1HdClyZXR1cm4gdGhpcy50d2Vl''@;'; put 'put ''bihFbixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgR3QpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKEVuLCRuKEd0KSl9LHJlbW92ZTpmdW5jdGlvbiBOdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIixmdW5jdGlvbiBjdChHdCl7cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIEVuPXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIGpuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtqbiE9PUd0KXJldHVybjtFbiYmRW4ucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBUZShHdCxFbil7dmFyIGpuPXRoaXMuX2lkO2lmKEd0Kz0iIixh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgb3IscXQ9YWUodGhpcy5ub2RlKCksam4pLnR3ZWVuLExuPTAsSm49cXQubGVuZ3RoO0xuPEpuOysrTG4paWYoKG9yPXF0W0xuXSkubmFtZT09PUd0KXJldHVybiBvci52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1F''@;'; put 'put ''bj9TZTpJZSkoam4sR3QsRW4pKX0sZGVsYXk6ZnVuY3Rpb24gcHQoR3Qpe3ZhciBFbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBHdD9ndDp5dCkoRW4sR3QpKTphZSh0aGlzLm5vZGUoKSxFbikuZGVsYXl9LGR1cmF0aW9u''@;'; put 'put ''OmZ1bmN0aW9uIGZ0KEd0KXt2YXIgRW49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgR3Q/bXQ6dnQpKEVuLEd0KSk6YWUodGhpcy5ub2RlKCksRW4pLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIG9uKEd0KXt2YXIgRW49dGhp''@;'; put 'put ''cy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKEZ0KEVuLEd0KSk6YWUodGhpcy5ub2RlKCksRW4pLmVhc2V9LGVuZDpmdW5jdGlvbiBLbigpe3ZhciBHdCxFbixqbj10aGlzLHF0PWpuLl9pZCxMbj1qbi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEpu''@;'; put 'put ''LG9yKXt2YXIgZ3I9e3ZhbHVlOm9yfSxKcj17dmFsdWU6ZnVuY3Rpb24oKXswPT0tLUxuJiZKbigpfX07am4uZWFjaChmdW5jdGlvbigpe3ZhciBWcj1zZSh0aGlzLHF0KSx0aT1Wci5vbjt0aSE9PUd0JiYoKEVuPShHdD10aSkuY29weSgpKS5fLmNhbmNlbC5wdXNoKGdyKSxFbi5fLmludGVy''@;'; put 'put ''cnVwdC5wdXNoKGdyKSxFbi5fLmVuZC5wdXNoKEpyKSksVnIub249RW59KX0pfX07dmFyIFNyPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbiBQbihHdCl7cmV0dXJuKChHdCo9Mik8PTE/R3QqR3QqR3Q6KEd0LT0yKSpHdCpHdCsyKS8yfX07ZnVuY3Rpb24g''@;'; put 'put ''dm4oR3QsRW4pe2Zvcih2YXIgam47IShqbj1HdC5fX3RyYW5zaXRpb24pfHwhKGpuPWpuW0VuXSk7KWlmKCEoR3Q9R3QucGFyZW50Tm9kZSkpcmV0dXJuIFNyLnRpbWU9KDAsRS56TykoKSxTcjtyZXR1cm4gam59Z2UuWlAucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiB2ZShHdCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlKHRoaXMsR3QpfSl9LGdlLlpQLnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIHVuKEd0KXt2YXIgRW4sam47R3QgaW5zdGFuY2VvZiBzbj8oRW49R3QuX2lkLEd0PUd0Ll9uYW1lKTooRW49X24oKSwoam49U3IpLnRpbWU9KDAsRS56Tyko''@;'; put 'put ''KSxHdD1udWxsPT1HdD9udWxsOkd0KyIiKTtmb3IodmFyIHF0PXRoaXMuX2dyb3VwcyxMbj1xdC5sZW5ndGgsSm49MDtKbjxMbjsrK0puKWZvcih2YXIgSnIsb3I9cXRbSm5dLGdyPW9yLmxlbmd0aCxWcj0wO1ZyPGdyOysrVnIpKEpyPW9yW1ZyXSkmJnEoSnIsR3QsRW4sVnIsb3Isam58fHZu''@;'; put 'put ''KEpyLEVuKSk7cmV0dXJuIG5ldyBzbihxdCx0aGlzLl9wYXJlbnRzLEd0LEVuKX07dmFyIGNuPVtudWxsXTtmdW5jdGlvbiBTbihHdCxFbil7dmFyIHF0LExuLGpuPUd0Ll9fdHJhbnNpdGlvbjtpZihqbilmb3IoTG4gaW4gRW49bnVsbD09RW4/bnVsbDpFbisiIixqbilpZigocXQ9am5bTG5d''@;'; put 'put ''KS5zdGF0ZT4xJiZxdC5uYW1lPT09RW4pcmV0dXJuIG5ldyBzbihbW0d0XV0sY24sRW4sK0xuKTtyZXR1cm4gbnVsbH19LDc1ODI3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLnIoSmUpLEwuZChKZSx7em9vbTooKT0+VGUsem9vbUlkZW50aXR5OigpPT5KLHpvb21UcmFuc2Zvcm06KCk9''@;'; put 'put ''PnNlfSk7dmFyIGdlPUwoMjU5MjIpLEI9TCg1MjAxNiksRT1MKDYxNzQ2KTtmdW5jdGlvbiBVKCl7RS5CLnByZXZlbnREZWZhdWx0KCksRS5CLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIFEoRWUpe3ZhciBoZT1FZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsTz0oMCxC''@;'; put 'put ''LlopKEVlKS5vbigiZHJhZ3N0YXJ0LmRyYWciLFUsITApOyJvbnNlbGVjdHN0YXJ0ImluIGhlP08ub24oInNlbGVjdHN0YXJ0LmRyYWciLFUsITApOihoZS5fX25vc2VsZWN0PWhlLnN0eWxlLk1velVzZXJTZWxlY3QsaGUuc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIFoo''@;'; put 'put ''RWUsaGUpe3ZhciBPPUVlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx6PSgwLEIuWikoRWUpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7aGUmJih6Lm9uKCJjbGljay5kcmFnIixVLCEwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ei5vbigiY2xpY2suZHJhZyIsbnVsbCl9LDApKSwib25z''@;'; put 'put ''ZWxlY3RzdGFydCJpbiBPP3oub24oInNlbGVjdHN0YXJ0LmRyYWciLG51bGwpOihPLnN0eWxlLk1velVzZXJTZWxlY3Q9Ty5fX25vc2VsZWN0LGRlbGV0ZSBPLl9fbm9zZWxlY3QpfXZhciBpZT1MKDc2MjU3KSxsZT1MKDY2MDczKSxZPUwoMzAyNTYpLFc9TCg0MDgyMik7ZnVuY3Rpb24gTihF''@;'; put 'put ''ZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEVlfX1mdW5jdGlvbiBlZShFZSxoZSxPKXt0aGlzLnRhcmdldD1FZSx0aGlzLnR5cGU9aGUsdGhpcy50cmFuc2Zvcm09T31mdW5jdGlvbiBxKEVlLGhlLE8pe3RoaXMuaz1FZSx0aGlzLng9aGUsdGhpcy55PU99cS5wcm90b3R5cGU9e2NvbnN0''@;'; put 'put ''cnVjdG9yOnEsc2NhbGU6ZnVuY3Rpb24oRWUpe3JldHVybiAxPT09RWU/dGhpczpuZXcgcSh0aGlzLmsqRWUsdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihFZSxoZSl7cmV0dXJuIDA9PT1FZSYwPT09aGU/dGhpczpuZXcgcSh0aGlzLmssdGhpcy54K3RoaXMuaypFZSx0aGlz''@;'; put 'put ''LnkrdGhpcy5rKmhlKX0sYXBwbHk6ZnVuY3Rpb24oRWUpe3JldHVybltFZVswXSp0aGlzLmsrdGhpcy54LEVlWzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24oRWUpe3JldHVybiBFZSp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24oRWUpe3JldHVybiBFZSp0aGlzLmsr''@;'; put 'put ''dGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24oRWUpe3JldHVyblsoRWVbMF0tdGhpcy54KS90aGlzLmssKEVlWzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbihFZSl7cmV0dXJuKEVlLXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKEVlKXtyZXR1cm4oRWUtdGhpcy55''@;'; put 'put ''KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKEVlKXtyZXR1cm4gRWUuY29weSgpLmRvbWFpbihFZS5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKEVlLmludmVydCxFZSkpfSxyZXNjYWxlWTpmdW5jdGlvbihFZSl7cmV0dXJuIEVlLmNvcHkoKS5kb21haW4oRWUucmFuZ2Uo''@;'; put 'put ''KS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcChFZS5pbnZlcnQsRWUpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIEo9bmV3IHEoMSwwLDApO2Z1bmN0aW9uIHNlKEVlKXtmb3Io''@;'; put 'put ''OyFFZS5fX3pvb207KWlmKCEoRWU9RWUucGFyZW50Tm9kZSkpcmV0dXJuIEo7cmV0dXJuIEVlLl9fem9vbX1mdW5jdGlvbiBhZSgpe0UuQi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBmZSgpe0UuQi5wcmV2ZW50RGVmYXVsdCgpLEUuQi5zdG9wSW1tZWRpYXRlUHJvcGFn''@;'; put 'put ''YXRpb24oKX1mdW5jdGlvbiBkZSgpe3JldHVybiFFLkIuY3RybEtleSYmIUUuQi5idXR0b259ZnVuY3Rpb24gdmUoKXt2YXIgRWU9dGhpcztyZXR1cm4gRWUgaW5zdGFuY2VvZiBTVkdFbGVtZW50PyhFZT1FZS5vd25lclNWR0VsZW1lbnR8fEVlKS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9b''@;'; put 'put ''WyhFZT1FZS52aWV3Qm94LmJhc2VWYWwpLngsRWUueV0sW0VlLngrRWUud2lkdGgsRWUueStFZS5oZWlnaHRdXTpbWzAsMF0sW0VlLndpZHRoLmJhc2VWYWwudmFsdWUsRWUuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTpbWzAsMF0sW0VlLmNsaWVudFdpZHRoLEVlLmNsaWVudEhlaWdodF1dfWZ1''@;'; put 'put ''bmN0aW9uIEFlKCl7cmV0dXJuIHRoaXMuX196b29tfHxKfWZ1bmN0aW9uIGtlKCl7cmV0dXJuLUUuQi5kZWx0YVkqKDE9PT1FLkIuZGVsdGFNb2RlPy4wNTpFLkIuZGVsdGFNb2RlPzE6LjAwMil9ZnVuY3Rpb24gU2UoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3Vj''@;'; put 'put ''aHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gSWUoRWUsaGUsTyl7dmFyIHo9RWUuaW52ZXJ0WChoZVswXVswXSktT1swXVswXSxuZT1FZS5pbnZlcnRYKGhlWzFdWzBdKS1PWzFdWzBdLHRlPUVlLmludmVydFkoaGVbMF1bMV0pLU9bMF1bMV0seD1FZS5pbnZlcnRZKGhlWzFdWzFdKS1PWzFdWzFd''@;'; put 'put ''O3JldHVybiBFZS50cmFuc2xhdGUobmU+ej8oeituZSkvMjpNYXRoLm1pbigwLHopfHxNYXRoLm1heCgwLG5lKSx4PnRlPyh0ZSt4KS8yOk1hdGgubWluKDAsdGUpfHxNYXRoLm1heCgwLHgpKX1mdW5jdGlvbiBUZSgpe3ZhciBTLEYsRWU9ZGUsaGU9dmUsTz1JZSx6PWtlLG5lPVNlLHRlPVsw''@;'; put 'put ''LDEvMF0seD1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSxQPTI1MCxWPWllLlosVD0oMCxnZS5aKSgic3RhcnQiLCJ6b29tIiwiZW5kIiksRGU9MDtmdW5jdGlvbiBQZShxZSl7cWUucHJvcGVydHkoIl9fem9vbSIsQWUpLm9uKCJ3aGVlbC56b29tIix2dCkub24oIm1vdXNlZG93bi56b29tIixm''@;'; put 'put ''dCkub24oImRibGNsaWNrLnpvb20iLEZ0KS5maWx0ZXIobmUpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLG9uKS5vbigidG91Y2htb3ZlLnpvb20iLF90KS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixudCkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdl''@;'; put 'put ''YmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIFFlKHFlLG90KXtyZXR1cm4ob3Q9TWF0aC5tYXgodGVbMF0sTWF0aC5taW4odGVbMV0sb3QpKSk9PT1xZS5rP3FlOm5ldyBxKG90LHFlLngscWUueSl9ZnVuY3Rpb24gJGUocWUsb3QsUnQpe3ZhciBD''@;'; put 'put ''dD1vdFswXS1SdFswXSpxZS5rLGN0PW90WzFdLVJ0WzFdKnFlLms7cmV0dXJuIEN0PT09cWUueCYmY3Q9PT1xZS55P3FlOm5ldyBxKHFlLmssQ3QsY3QpfWZ1bmN0aW9uIGd0KHFlKXtyZXR1cm5bKCtxZVswXVswXSsgK3FlWzFdWzBdKS8yLCgrcWVbMF1bMV0rICtxZVsxXVsxXSkvMl19ZnVu''@;'; put 'put ''Y3Rpb24geXQocWUsb3QsUnQpe3FlLm9uKCJzdGFydC56b29tIixmdW5jdGlvbigpe3B0KHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIixmdW5jdGlvbigpe3B0KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pLnR3ZWVuKCJ6b29tIixmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBDdD10aGlzLGN0PWFyZ3VtZW50cyxOdD1wdChDdCxjdCksemU9aGUuYXBwbHkoQ3QsY3QpLFllPW51bGw9PVJ0P2d0KHplKToiZnVuY3Rpb24iPT10eXBlb2YgUnQ/UnQuYXBwbHkoQ3QsY3QpOlJ0LEF0PU1hdGgubWF4KHplWzFdWzBdLXplWzBdWzBdLHplWzFdWzFdLXplWzBd''@;'; put 'put ''WzFdKSxqdD1DdC5fX3pvb20sSnQ9ImZ1bmN0aW9uIj09dHlwZW9mIG90P290LmFwcGx5KEN0LGN0KTpvdCxtbj1WKGp0LmludmVydChZZSkuY29uY2F0KEF0L2p0LmspLEp0LmludmVydChZZSkuY29uY2F0KEF0L0p0LmspKTtyZXR1cm4gZnVuY3Rpb24ocG4pe2lmKDE9PT1wbilwbj1KdDtl''@;'; put 'put ''bHNle3ZhciBibj1tbihwbiksbG49QXQvYm5bMl07cG49bmV3IHEobG4sWWVbMF0tYm5bMF0qbG4sWWVbMV0tYm5bMV0qbG4pfU50Lnpvb20obnVsbCxwbil9fSl9ZnVuY3Rpb24gcHQocWUsb3QsUnQpe3JldHVybiFSdCYmcWUuX196b29taW5nfHxuZXcgbXQocWUsb3QpfWZ1bmN0aW9uIG10''@;'; put 'put ''KHFlLG90KXt0aGlzLnRoYXQ9cWUsdGhpcy5hcmdzPW90LHRoaXMuYWN0aXZlPTAsdGhpcy5leHRlbnQ9aGUuYXBwbHkocWUsb3QpLHRoaXMudGFwcz0wfWZ1bmN0aW9uIHZ0KCl7aWYoRWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgcWU9cHQodGhpcyxhcmd1bWVudHMpLG90PXRoaXMu''@;'; put 'put ''X196b29tLFJ0PU1hdGgubWF4KHRlWzBdLE1hdGgubWluKHRlWzFdLG90LmsqTWF0aC5wb3coMix6LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSxDdD0oMCxsZS5aKSh0aGlzKTtpZihxZS53aGVlbCkocWUubW91c2VbMF1bMF0hPT1DdFswXXx8cWUubW91c2VbMF1bMV0hPT1DdFsxXSkmJihx''@;'; put 'put ''ZS5tb3VzZVsxXT1vdC5pbnZlcnQocWUubW91c2VbMF09Q3QpKSxjbGVhclRpbWVvdXQocWUud2hlZWwpO2Vsc2V7aWYob3Quaz09PVJ0KXJldHVybjtxZS5tb3VzZT1bQ3Qsb3QuaW52ZXJ0KEN0KV0sKDAsVy5pbnRlcnJ1cHQpKHRoaXMpLHFlLnN0YXJ0KCl9ZmUoKSxxZS53aGVlbD1zZXRU''@;'; put 'put ''aW1lb3V0KGN0LDE1MCkscWUuem9vbSgibW91c2UiLE8oJGUoUWUob3QsUnQpLHFlLm1vdXNlWzBdLHFlLm1vdXNlWzFdKSxxZS5leHRlbnQseCkpfWZ1bmN0aW9uIGN0KCl7cWUud2hlZWw9bnVsbCxxZS5lbmQoKX19ZnVuY3Rpb24gZnQoKXtpZighRiYmRWUuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpKXt2YXIgcWU9cHQodGhpcyxhcmd1bWVudHMsITApLG90PSgwLEIuWikoRS5CLnZpZXcpLm9uKCJtb3VzZW1vdmUuem9vbSIsTnQsITApLm9uKCJtb3VzZXVwLnpvb20iLHplLCEwKSxSdD0oMCxsZS5aKSh0aGlzKSxDdD1FLkIuY2xpZW50WCxjdD1FLkIuY2xpZW50WTtRKEUuQi52aWV3''@;'; put 'put ''KSxhZSgpLHFlLm1vdXNlPVtSdCx0aGlzLl9fem9vbS5pbnZlcnQoUnQpXSwoMCxXLmludGVycnVwdCkodGhpcykscWUuc3RhcnQoKX1mdW5jdGlvbiBOdCgpe2lmKGZlKCksIXFlLm1vdmVkKXt2YXIgWWU9RS5CLmNsaWVudFgtQ3QsQXQ9RS5CLmNsaWVudFktY3Q7cWUubW92ZWQ9WWUqWWUr''@;'; put 'put ''QXQqQXQ+RGV9cWUuem9vbSgibW91c2UiLE8oJGUocWUudGhhdC5fX3pvb20scWUubW91c2VbMF09KDAsbGUuWikocWUudGhhdCkscWUubW91c2VbMV0pLHFlLmV4dGVudCx4KSl9ZnVuY3Rpb24gemUoKXtvdC5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxaKEUuQi52''@;'; put 'put ''aWV3LHFlLm1vdmVkKSxmZSgpLHFlLmVuZCgpfX1mdW5jdGlvbiBGdCgpe2lmKEVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHFlPXRoaXMuX196b29tLG90PSgwLGxlLlopKHRoaXMpLFJ0PXFlLmludmVydChvdCksQ3Q9cWUuayooRS5CLnNoaWZ0S2V5Py41OjIpLGN0PU8oJGUoUWUo''@;'; put 'put ''cWUsQ3QpLG90LFJ0KSxoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykseCk7ZmUoKSxQPjA/KDAsQi5aKSh0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oUCkuY2FsbCh5dCxjdCxvdCk6KDAsQi5aKSh0aGlzKS5jYWxsKFBlLnRyYW5zZm9ybSxjdCl9fWZ1bmN0aW9uIG9uKCl7aWYoRWUuYXBw''@;'; put 'put ''bHkodGhpcyxhcmd1bWVudHMpKXt2YXIgQ3QsY3QsTnQsemUscWU9RS5CLnRvdWNoZXMsb3Q9cWUubGVuZ3RoLFJ0PXB0KHRoaXMsYXJndW1lbnRzLEUuQi5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1vdCk7Zm9yKGFlKCksY3Q9MDtjdDxvdDsrK2N0KXplPVt6ZT0oMCxZLlopKHRoaXMscWUs''@;'; put 'put ''KE50PXFlW2N0XSkuaWRlbnRpZmllciksdGhpcy5fX3pvb20uaW52ZXJ0KHplKSxOdC5pZGVudGlmaWVyXSxSdC50b3VjaDA/IVJ0LnRvdWNoMSYmUnQudG91Y2gwWzJdIT09emVbMl0mJihSdC50b3VjaDE9emUsUnQudGFwcz0wKTooUnQudG91Y2gwPXplLEN0PSEwLFJ0LnRhcHM9MSshIVMp''@;'; put 'put ''O1MmJihTPWNsZWFyVGltZW91dChTKSksQ3QmJihSdC50YXBzPDImJihTPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtTPW51bGx9LDUwMCkpLCgwLFcuaW50ZXJydXB0KSh0aGlzKSxSdC5zdGFydCgpKX19ZnVuY3Rpb24gX3QoKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIEN0LGN0LE50LHplLHFl''@;'; put 'put ''PXB0KHRoaXMsYXJndW1lbnRzKSxvdD1FLkIuY2hhbmdlZFRvdWNoZXMsUnQ9b3QubGVuZ3RoO2ZvcihmZSgpLFMmJihTPWNsZWFyVGltZW91dChTKSkscWUudGFwcz0wLEN0PTA7Q3Q8UnQ7KytDdClOdD0oMCxZLlopKHRoaXMsb3QsKGN0PW90W0N0XSkuaWRlbnRpZmllcikscWUudG91Y2gw''@;'; put 'put ''JiZxZS50b3VjaDBbMl09PT1jdC5pZGVudGlmaWVyP3FlLnRvdWNoMFswXT1OdDpxZS50b3VjaDEmJnFlLnRvdWNoMVsyXT09PWN0LmlkZW50aWZpZXImJihxZS50b3VjaDFbMF09TnQpO2lmKGN0PXFlLnRoYXQuX196b29tLHFlLnRvdWNoMSl7dmFyIFllPXFlLnRvdWNoMFswXSxBdD1xZS50''@;'; put 'put ''b3VjaDBbMV0sanQ9cWUudG91Y2gxWzBdLEp0PXFlLnRvdWNoMVsxXSxtbj0obW49anRbMF0tWWVbMF0pKm1uKyhtbj1qdFsxXS1ZZVsxXSkqbW4scG49KHBuPUp0WzBdLUF0WzBdKSpwbisocG49SnRbMV0tQXRbMV0pKnBuO2N0PVFlKGN0LE1hdGguc3FydChtbi9wbikpLE50PVsoWWVbMF0r''@;'; put 'put ''anRbMF0pLzIsKFllWzFdK2p0WzFdKS8yXSx6ZT1bKEF0WzBdK0p0WzBdKS8yLChBdFsxXStKdFsxXSkvMl19ZWxzZXtpZighcWUudG91Y2gwKXJldHVybjtOdD1xZS50b3VjaDBbMF0semU9cWUudG91Y2gwWzFdfXFlLnpvb20oInRvdWNoIixPKCRlKGN0LE50LHplKSxxZS5leHRlbnQseCkp''@;'; put 'put ''fX1mdW5jdGlvbiBudCgpe2lmKHRoaXMuX196b29taW5nKXt2YXIgQ3QsY3QscWU9cHQodGhpcyxhcmd1bWVudHMpLG90PUUuQi5jaGFuZ2VkVG91Y2hlcyxSdD1vdC5sZW5ndGg7Zm9yKGFlKCksRiYmY2xlYXJUaW1lb3V0KEYpLEY9c2V0VGltZW91dChmdW5jdGlvbigpe0Y9bnVsbH0sNTAw''@;'; put 'put ''KSxDdD0wO0N0PFJ0OysrQ3QpY3Q9b3RbQ3RdLHFlLnRvdWNoMCYmcWUudG91Y2gwWzJdPT09Y3QuaWRlbnRpZmllcj9kZWxldGUgcWUudG91Y2gwOnFlLnRvdWNoMSYmcWUudG91Y2gxWzJdPT09Y3QuaWRlbnRpZmllciYmZGVsZXRlIHFlLnRvdWNoMTtpZihxZS50b3VjaDEmJiFxZS50b3Vj''@;'; put 'put ''aDAmJihxZS50b3VjaDA9cWUudG91Y2gxLGRlbGV0ZSBxZS50b3VjaDEpLHFlLnRvdWNoMClxZS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KHFlLnRvdWNoMFswXSk7ZWxzZSBpZihxZS5lbmQoKSwyPT09cWUudGFwcyl7dmFyIE50PSgwLEIuWikodGhpcykub24oImRibGNsaWNrLnpv''@;'; put 'put ''b20iKTtOdCYmTnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19cmV0dXJuIFBlLnRyYW5zZm9ybT1mdW5jdGlvbihxZSxvdCxSdCl7dmFyIEN0PXFlLnNlbGVjdGlvbj9xZS5zZWxlY3Rpb24oKTpxZTtDdC5wcm9wZXJ0eSgiX196b29tIixBZSkscWUhPT1DdD95dChxZSxvdCxSdCk6Q3QuaW50''@;'; put 'put ''ZXJydXB0KCkuZWFjaChmdW5jdGlvbigpe3B0KHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2Ygb3Q/b3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm90KS5lbmQoKX0pfSxQZS5zY2FsZUJ5PWZ1bmN0aW9uKHFlLG90LFJ0KXtQZS5zY2FsZVRvKHFl''@;'; put 'put ''LGZ1bmN0aW9uKCl7dmFyIEN0PXRoaXMuX196b29tLmssY3Q9ImZ1bmN0aW9uIj09dHlwZW9mIG90P290LmFwcGx5KHRoaXMsYXJndW1lbnRzKTpvdDtyZXR1cm4gQ3QqY3R9LFJ0KX0sUGUuc2NhbGVUbz1mdW5jdGlvbihxZSxvdCxSdCl7UGUudHJhbnNmb3JtKHFlLGZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IEN0PWhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjdD10aGlzLl9fem9vbSxOdD1udWxsPT1SdD9ndChDdCk6ImZ1bmN0aW9uIj09dHlwZW9mIFJ0P1J0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTpSdCx6ZT1jdC5pbnZlcnQoTnQpLFllPSJmdW5jdGlvbiI9PXR5cGVvZiBvdD9vdC5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cyk6b3Q7cmV0dXJuIE8oJGUoUWUoY3QsWWUpLE50LHplKSxDdCx4KX0sUnQpfSxQZS50cmFuc2xhdGVCeT1mdW5jdGlvbihxZSxvdCxSdCl7UGUudHJhbnNmb3JtKHFlLGZ1bmN0aW9uKCl7cmV0dXJuIE8odGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBvdD9vdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6b3QsImZ1bmN0aW9uIj09dHlwZW9mIFJ0P1J0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTpSdCksaGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHgpfSl9LFBlLnRyYW5zbGF0ZVRvPWZ1bmN0aW9uKHFlLG90LFJ0LEN0KXtQZS50cmFuc2Zv''@;'; put 'put ''cm0ocWUsZnVuY3Rpb24oKXt2YXIgY3Q9aGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLE50PXRoaXMuX196b29tLHplPW51bGw9PUN0P2d0KGN0KToiZnVuY3Rpb24iPT10eXBlb2YgQ3Q/Q3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOkN0O3JldHVybiBPKEoudHJhbnNsYXRlKHplWzBdLHplWzFd''@;'; put 'put ''KS5zY2FsZShOdC5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIG90Py1vdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LW90LCJmdW5jdGlvbiI9PXR5cGVvZiBSdD8tUnQuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1SdCksY3QseCl9LEN0KX0sbXQucHJvdG90eXBlPXtzdGFydDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy50aGF0Ll9fem9vbWluZz10aGlzLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbihxZSxvdCl7cmV0dXJuIHRoaXMubW91c2UmJiJtb3VzZSIhPT1xZSYmKHRoaXMubW91c2VbMV09b3QuaW52ZXJ0KHRo''@;'; put 'put ''aXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXFlJiYodGhpcy50b3VjaDBbMV09b3QuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT1xZSYmKHRoaXMudG91Y2gxWzFdPW90LmludmVydCh0aGlzLnRvdWNoMVswXSkpLHRoaXMudGhhdC5f''@;'; put 'put ''X3pvb209b3QsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZyx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHFlKXsoMCxFLl9IKShuZXcgZWUoUGUscWUs''@;'; put 'put ''dGhpcy50aGF0Ll9fem9vbSksVC5hcHBseSxULFtxZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxQZS53aGVlbERlbHRhPWZ1bmN0aW9uKHFlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oej0iZnVuY3Rpb24iPT10eXBlb2YgcWU/cWU6TigrcWUpLFBlKTp6fSxQZS5maWx0ZXI9ZnVuY3Rp''@;'; put 'put ''b24ocWUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFZT0iZnVuY3Rpb24iPT10eXBlb2YgcWU/cWU6TighIXFlKSxQZSk6RWV9LFBlLnRvdWNoYWJsZT1mdW5jdGlvbihxZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG5lPSJmdW5jdGlvbiI9PXR5cGVvZiBxZT9xZTpOKCEhcWUpLFBl''@;'; put 'put ''KTpuZX0sUGUuZXh0ZW50PWZ1bmN0aW9uKHFlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaGU9ImZ1bmN0aW9uIj09dHlwZW9mIHFlP3FlOk4oW1srcWVbMF1bMF0sK3FlWzBdWzFdXSxbK3FlWzFdWzBdLCtxZVsxXVsxXV1dKSxQZSk6aGV9LFBlLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHFl''@;'; put 'put ''KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGVbMF09K3FlWzBdLHRlWzFdPStxZVsxXSxQZSk6W3RlWzBdLHRlWzFdXX0sUGUudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHFlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeFswXVswXT0rcWVbMF1bMF0seFsxXVswXT0rcWVbMV1bMF0s''@;'; put 'put ''eFswXVsxXT0rcWVbMF1bMV0seFsxXVsxXT0rcWVbMV1bMV0sUGUpOltbeFswXVswXSx4WzBdWzFdXSxbeFsxXVswXSx4WzFdWzFdXV19LFBlLmNvbnN0cmFpbj1mdW5jdGlvbihxZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89cWUsUGUpOk99LFBlLmR1cmF0aW9uPWZ1bmN0aW9uKHFl''@;'; put 'put ''KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUD0rcWUsUGUpOlB9LFBlLmludGVycG9sYXRlPWZ1bmN0aW9uKHFlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVj1xZSxQZSk6Vn0sUGUub249ZnVuY3Rpb24oKXt2YXIgcWU9VC5vbi5hcHBseShULGFyZ3VtZW50cyk7cmV0dXJuIHFlPT09''@;'; put 'put ''VD9QZTpxZX0sUGUuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbihxZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KERlPShxZT0rcWUpKnFlLFBlKTpNYXRoLnNxcnQoRGUpfSxQZX1zZS5wcm90b3R5cGU9cS5wcm90b3R5cGV9LDczNjg0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtKZS51dGls''@;'; put 'put ''cz1MKDc3NDUxKSxKZS5DaXBoZXI9TCgzODE3MCksSmUuREVTPUwoNDYzMSksSmUuQ0JDPUwoNzk0NTQpLEplLkVERT1MKDIxODYyKX0sNzk0NTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDMyMzkxKSxCPUwoODM4OTQpLEU9e307ZnVuY3Rpb24gTWUoUSl7Z2UuZXF1YWwo''@;'; put 'put ''US5sZW5ndGgsOCwiSW52YWxpZCBJViBsZW5ndGgiKSx0aGlzLml2PW5ldyBBcnJheSg4KTtmb3IodmFyIFo9MDtaPHRoaXMuaXYubGVuZ3RoO1orKyl0aGlzLml2W1pdPVFbWl19SmUuaW5zdGFudGlhdGU9ZnVuY3Rpb24gVShRKXtmdW5jdGlvbiBaKFcpe1EuY2FsbCh0aGlzLFcpLHRoaXMu''@;'; put 'put ''X2NiY0luaXQoKX1CKFosUSk7Zm9yKHZhciBpZT1PYmplY3Qua2V5cyhFKSxsZT0wO2xlPGllLmxlbmd0aDtsZSsrKXt2YXIgWT1pZVtsZV07Wi5wcm90b3R5cGVbWV09RVtZXX1yZXR1cm4gWi5jcmVhdGU9ZnVuY3Rpb24oTil7cmV0dXJuIG5ldyBaKE4pfSxafSxFLl9jYmNJbml0PWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIFo9bmV3IE1lKHRoaXMub3B0aW9ucy5pdik7dGhpcy5fY2JjU3RhdGU9Wn0sRS5fdXBkYXRlPWZ1bmN0aW9uKFosaWUsbGUsWSl7dmFyIE49dGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlLGVlPXRoaXMuX2NiY1N0YXRlLml2O2lmKCJlbmNyeXB0Ij09PXRoaXMu''@;'; put 'put ''dHlwZSl7Zm9yKHZhciBxPTA7cTx0aGlzLmJsb2NrU2l6ZTtxKyspZWVbcV1ePVpbaWUrcV07Zm9yKE4uX3VwZGF0ZS5jYWxsKHRoaXMsZWUsMCxsZSxZKSxxPTA7cTx0aGlzLmJsb2NrU2l6ZTtxKyspZWVbcV09bGVbWStxXX1lbHNle2ZvcihOLl91cGRhdGUuY2FsbCh0aGlzLFosaWUsbGUs''@;'; put 'put ''WSkscT0wO3E8dGhpcy5ibG9ja1NpemU7cSsrKWxlW1krcV1ePWVlW3FdO2ZvcihxPTA7cTx0aGlzLmJsb2NrU2l6ZTtxKyspZWVbcV09WltpZStxXX19fSwzODE3MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMzIzOTEpO2Z1bmN0aW9uIEIoRSl7dGhpcy5vcHRpb25zPUUs''@;'; put 'put ''dGhpcy50eXBlPXRoaXMub3B0aW9ucy50eXBlLHRoaXMuYmxvY2tTaXplPTgsdGhpcy5faW5pdCgpLHRoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSksdGhpcy5idWZmZXJPZmY9MH1YZS5leHBvcnRzPUIsQi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oKXt9LEIucHJvdG90''@;'; put 'put ''eXBlLnVwZGF0ZT1mdW5jdGlvbihNZSl7cmV0dXJuIDA9PT1NZS5sZW5ndGg/W106ImRlY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX3VwZGF0ZURlY3J5cHQoTWUpOnRoaXMuX3VwZGF0ZUVuY3J5cHQoTWUpfSxCLnByb3RvdHlwZS5fYnVmZmVyPWZ1bmN0aW9uKE1lLFUpe2Zvcih2YXIgUT1N''@;'; put 'put ''YXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGgtdGhpcy5idWZmZXJPZmYsTWUubGVuZ3RoLVUpLFo9MDtaPFE7WisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmK1pdPU1lW1UrWl07cmV0dXJuIHRoaXMuYnVmZmVyT2ZmKz1RLFF9LEIucHJvdG90eXBlLl9mbHVzaEJ1ZmZlcj1mdW5jdGlv''@;'; put 'put ''bihNZSxVKXtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsTWUsVSksdGhpcy5idWZmZXJPZmY9MCx0aGlzLmJsb2NrU2l6ZX0sQi5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQ9ZnVuY3Rpb24oTWUpe3ZhciBVPTAsUT0wLGllPW5ldyBBcnJheSgoKHRoaXMuYnVmZmVyT2ZmK01l''@;'; put 'put ''Lmxlbmd0aCkvdGhpcy5ibG9ja1NpemV8MCkqdGhpcy5ibG9ja1NpemUpOzAhPT10aGlzLmJ1ZmZlck9mZiYmKFUrPXRoaXMuX2J1ZmZlcihNZSxVKSx0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKFErPXRoaXMuX2ZsdXNoQnVmZmVyKGllLFEpKSk7Zm9yKHZhciBsZT1N''@;'; put 'put ''ZS5sZW5ndGgtKE1lLmxlbmd0aC1VKSV0aGlzLmJsb2NrU2l6ZTtVPGxlO1UrPXRoaXMuYmxvY2tTaXplKXRoaXMuX3VwZGF0ZShNZSxVLGllLFEpLFErPXRoaXMuYmxvY2tTaXplO2Zvcig7VTxNZS5sZW5ndGg7VSsrLHRoaXMuYnVmZmVyT2ZmKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJP''@;'; put 'put ''ZmZdPU1lW1VdO3JldHVybiBpZX0sQi5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQ9ZnVuY3Rpb24oTWUpe2Zvcih2YXIgVT0wLFE9MCxaPU1hdGguY2VpbCgodGhpcy5idWZmZXJPZmYrTWUubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxpZT1uZXcgQXJyYXkoWip0aGlzLmJsb2NrU2l6ZSk7''@;'; put 'put ''Wj4wO1otLSlVKz10aGlzLl9idWZmZXIoTWUsVSksUSs9dGhpcy5fZmx1c2hCdWZmZXIoaWUsUSk7cmV0dXJuIFUrPXRoaXMuX2J1ZmZlcihNZSxVKSxpZX0sQi5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oTWUpe3ZhciBVLFE7cmV0dXJuIE1lJiYoVT10aGlzLnVwZGF0ZShNZSkpLFE9ImVu''@;'; put 'put ''Y3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2ZpbmFsRW5jcnlwdCgpOnRoaXMuX2ZpbmFsRGVjcnlwdCgpLFU/VS5jb25jYXQoUSk6UX0sQi5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbihNZSxVKXtpZigwPT09VSlyZXR1cm4hMTtmb3IoO1U8TWUubGVuZ3RoOylNZVtVKytdPTA7cmV0dXJuITB9''@;'; put 'put ''LEIucHJvdG90eXBlLl9maW5hbEVuY3J5cHQ9ZnVuY3Rpb24oKXtpZighdGhpcy5fcGFkKHRoaXMuYnVmZmVyLHRoaXMuYnVmZmVyT2ZmKSlyZXR1cm5bXTt2YXIgTWU9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsTWUsMCksTWV9''@;'; put 'put ''LEIucHJvdG90eXBlLl91bnBhZD1mdW5jdGlvbihNZSl7cmV0dXJuIE1lfSxCLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0PWZ1bmN0aW9uKCl7Z2UuZXF1YWwodGhpcy5idWZmZXJPZmYsdGhpcy5ibG9ja1NpemUsIk5vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Iik7dmFyIE1lPW5ldyBBcnJh''@;'; put 'put ''eSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKE1lLDApLHRoaXMuX3VucGFkKE1lKX19LDQ2MzE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDMyMzkxKSxCPUwoODM4OTQpLEU9TCg3NzQ1MSksTWU9TCgzODE3MCk7ZnVuY3Rpb24gVSgpe3RoaXMu''@;'; put 'put ''dG1wPW5ldyBBcnJheSgyKSx0aGlzLmtleXM9bnVsbH1mdW5jdGlvbiBRKGllKXtNZS5jYWxsKHRoaXMsaWUpO3ZhciBsZT1uZXcgVTt0aGlzLl9kZXNTdGF0ZT1sZSx0aGlzLmRlcml2ZUtleXMobGUsaWUua2V5KX1CKFEsTWUpLFhlLmV4cG9ydHM9USxRLmNyZWF0ZT1mdW5jdGlvbihsZSl7''@;'; put 'put ''cmV0dXJuIG5ldyBRKGxlKX07dmFyIFo9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO1EucHJvdG90eXBlLmRlcml2ZUtleXM9ZnVuY3Rpb24obGUsWSl7bGUua2V5cz1uZXcgQXJyYXkoMzIpLGdlLmVxdWFsKFkubGVuZ3RoLHRoaXMuYmxvY2tTaXplLCJJbnZhbGlkIGtleSBs''@;'; put 'put ''ZW5ndGgiKTt2YXIgVz1FLnJlYWRVSW50MzJCRShZLDApLE49RS5yZWFkVUludDMyQkUoWSw0KTtFLnBjMShXLE4sbGUudG1wLDApLFc9bGUudG1wWzBdLE49bGUudG1wWzFdO2Zvcih2YXIgZWU9MDtlZTxsZS5rZXlzLmxlbmd0aDtlZSs9Mil7dmFyIHE9WltlZT4+PjFdO1c9RS5yMjhzaGwo''@;'; put 'put ''VyxxKSxOPUUucjI4c2hsKE4scSksRS5wYzIoVyxOLGxlLmtleXMsZWUpfX0sUS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihsZSxZLFcsTil7dmFyIGVlPXRoaXMuX2Rlc1N0YXRlLHE9RS5yZWFkVUludDMyQkUobGUsWSksSj1FLnJlYWRVSW50MzJCRShsZSxZKzQpO0UuaXAocSxKLGVl''@;'; put 'put ''LnRtcCwwKSxxPWVlLnRtcFswXSxKPWVlLnRtcFsxXSwiZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fZW5jcnlwdChlZSxxLEosZWUudG1wLDApOnRoaXMuX2RlY3J5cHQoZWUscSxKLGVlLnRtcCwwKSxKPWVlLnRtcFsxXSxFLndyaXRlVUludDMyQkUoVyxxPWVlLnRtcFswXSxOKSxFLndy''@;'; put 'put ''aXRlVUludDMyQkUoVyxKLE4rNCl9LFEucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24obGUsWSl7Zm9yKHZhciBXPWxlLmxlbmd0aC1ZLE49WTtOPGxlLmxlbmd0aDtOKyspbGVbTl09VztyZXR1cm4hMH0sUS5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKGxlKXtmb3IodmFyIFk9bGVbbGUubGVu''@;'; put 'put ''Z3RoLTFdLFc9bGUubGVuZ3RoLVk7VzxsZS5sZW5ndGg7VysrKWdlLmVxdWFsKGxlW1ddLFkpO3JldHVybiBsZS5zbGljZSgwLGxlLmxlbmd0aC1ZKX0sUS5wcm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24obGUsWSxXLE4sZWUpe2Zvcih2YXIgcT1ZLEo9VyxzZT0wO3NlPGxlLmtleXMubGVu''@;'; put 'put ''Z3RoO3NlKz0yKXt2YXIgYWU9bGUua2V5c1tzZV0sZmU9bGUua2V5c1tzZSsxXTtFLmV4cGFuZChKLGxlLnRtcCwwKTt2YXIgZGU9RS5zdWJzdGl0dXRlKGFlXj1sZS50bXBbMF0sZmVePWxlLnRtcFsxXSksQWU9SjtKPShxXkUucGVybXV0ZShkZSkpPj4+MCxxPUFlfUUucmlwKEoscSxOLGVl''@;'; put 'put ''KX0sUS5wcm90b3R5cGUuX2RlY3J5cHQ9ZnVuY3Rpb24obGUsWSxXLE4sZWUpe2Zvcih2YXIgcT1XLEo9WSxzZT1sZS5rZXlzLmxlbmd0aC0yO3NlPj0wO3NlLT0yKXt2YXIgYWU9bGUua2V5c1tzZV0sZmU9bGUua2V5c1tzZSsxXTtFLmV4cGFuZChxLGxlLnRtcCwwKTt2YXIgZGU9RS5zdWJz''@;'; put 'put ''dGl0dXRlKGFlXj1sZS50bXBbMF0sZmVePWxlLnRtcFsxXSksQWU9cTtxPShKXkUucGVybXV0ZShkZSkpPj4+MCxKPUFlfUUucmlwKHEsSixOLGVlKX19LDIxODYyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgzMjM5MSksQj1MKDgzODk0KSxFPUwoMzgxNzApLE1lPUwoNDYz''@;'; put 'put ''MSk7ZnVuY3Rpb24gVShaLGllKXtnZS5lcXVhbChpZS5sZW5ndGgsMjQsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBsZT1pZS5zbGljZSgwLDgpLFk9aWUuc2xpY2UoOCwxNiksVz1pZS5zbGljZSgxNiwyNCk7dGhpcy5jaXBoZXJzPSJlbmNyeXB0Ij09PVo/W01lLmNyZWF0ZSh7dHlwZToi''@;'; put 'put ''ZW5jcnlwdCIsa2V5OmxlfSksTWUuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6WX0pLE1lLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Old9KV06W01lLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Old9KSxNZS5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpZfSksTWUuY3JlYXRl''@;'; put 'put ''KHt0eXBlOiJkZWNyeXB0IixrZXk6bGV9KV19ZnVuY3Rpb24gUShaKXtFLmNhbGwodGhpcyxaKTt2YXIgaWU9bmV3IFUodGhpcy50eXBlLHRoaXMub3B0aW9ucy5rZXkpO3RoaXMuX2VkZVN0YXRlPWllfUIoUSxFKSxYZS5leHBvcnRzPVEsUS5jcmVhdGU9ZnVuY3Rpb24oaWUpe3JldHVybiBu''@;'; put 'put ''ZXcgUShpZSl9LFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oaWUsbGUsWSxXKXt2YXIgTj10aGlzLl9lZGVTdGF0ZTtOLmNpcGhlcnNbMF0uX3VwZGF0ZShpZSxsZSxZLFcpLE4uY2lwaGVyc1sxXS5fdXBkYXRlKFksVyxZLFcpLE4uY2lwaGVyc1syXS5fdXBkYXRlKFksVyxZLFcpfSxR''@;'; put 'put ''LnByb3RvdHlwZS5fcGFkPU1lLnByb3RvdHlwZS5fcGFkLFEucHJvdG90eXBlLl91bnBhZD1NZS5wcm90b3R5cGUuX3VucGFkfSw3NzQ1MTooWGUsSmUpPT57InVzZSBzdHJpY3QiO0plLnJlYWRVSW50MzJCRT1mdW5jdGlvbihNZSxVKXtyZXR1cm4oTWVbMCtVXTw8MjR8TWVbMStVXTw8MTZ8''@;'; put 'put ''TWVbMitVXTw8OHxNZVszK1VdKT4+PjB9LEplLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oTWUsVSxRKXtNZVswK1FdPVU+Pj4yNCxNZVsxK1FdPVU+Pj4xNiYyNTUsTWVbMitRXT1VPj4+OCYyNTUsTWVbMytRXT0yNTUmVX0sSmUuaXA9ZnVuY3Rpb24oTWUsVSxRLFope2Zvcih2YXIgaWU9MCxs''@;'; put 'put ''ZT0wLFk9NjtZPj0wO1ktPTIpe2Zvcih2YXIgVz0wO1c8PTI0O1crPTgpaWU8PD0xLGllfD1VPj4+VytZJjE7Zm9yKFc9MDtXPD0yNDtXKz04KWllPDw9MSxpZXw9TWU+Pj5XK1kmMX1mb3IoWT02O1k+PTA7WS09Mil7Zm9yKFc9MTtXPD0yNTtXKz04KWxlPDw9MSxsZXw9VT4+PlcrWSYxO2Zv''@;'; put 'put ''cihXPTE7Vzw9MjU7Vys9OClsZTw8PTEsbGV8PU1lPj4+VytZJjF9UVtaKzBdPWllPj4+MCxRW1orMV09bGU+Pj4wfSxKZS5yaXA9ZnVuY3Rpb24oTWUsVSxRLFope2Zvcih2YXIgaWU9MCxsZT0wLFk9MDtZPDQ7WSsrKWZvcih2YXIgVz0yNDtXPj0wO1ctPTgpaWU8PD0xLGllfD1VPj4+VytZ''@;'; put 'put ''JjEsaWU8PD0xLGllfD1NZT4+PlcrWSYxO2ZvcihZPTQ7WTw4O1krKylmb3IoVz0yNDtXPj0wO1ctPTgpbGU8PD0xLGxlfD1VPj4+VytZJjEsbGU8PD0xLGxlfD1NZT4+PlcrWSYxO1FbWiswXT1pZT4+PjAsUVtaKzFdPWxlPj4+MH0sSmUucGMxPWZ1bmN0aW9uKE1lLFUsUSxaKXtmb3IodmFy''@;'; put 'put ''IGllPTAsbGU9MCxZPTc7WT49NTtZLS0pe2Zvcih2YXIgVz0wO1c8PTI0O1crPTgpaWU8PD0xLGllfD1VPj5XK1kmMTtmb3IoVz0wO1c8PTI0O1crPTgpaWU8PD0xLGllfD1NZT4+VytZJjF9Zm9yKFc9MDtXPD0yNDtXKz04KWllPDw9MSxpZXw9VT4+VytZJjE7Zm9yKFk9MTtZPD0zO1krKyl7''@;'; put 'put ''Zm9yKFc9MDtXPD0yNDtXKz04KWxlPDw9MSxsZXw9VT4+VytZJjE7Zm9yKFc9MDtXPD0yNDtXKz04KWxlPDw9MSxsZXw9TWU+PlcrWSYxfWZvcihXPTA7Vzw9MjQ7Vys9OClsZTw8PTEsbGV8PU1lPj5XK1kmMTtRW1orMF09aWU+Pj4wLFFbWisxXT1sZT4+PjB9LEplLnIyOHNobD1mdW5jdGlv''@;'; put 'put ''bihNZSxVKXtyZXR1cm4gTWU8PFUmMjY4NDM1NDU1fE1lPj4+MjgtVX07dmFyIEw9WzE0LDExLDE3LDQsMjcsMjMsMjUsMCwxMywyMiw3LDE4LDUsOSwxNiwyNCwyLDIwLDEyLDIxLDEsOCwxNSwyNiwxNSw0LDI1LDE5LDksMSwyNiwxNiw1LDExLDIzLDgsMTIsNywxNywwLDIyLDMsMTAsMTQs''@;'; put 'put ''NiwyMCwyNywyNF07SmUucGMyPWZ1bmN0aW9uKE1lLFUsUSxaKXtmb3IodmFyIGllPTAsbGU9MCxZPUwubGVuZ3RoPj4+MSxXPTA7VzxZO1crKylpZTw8PTEsaWV8PU1lPj4+TFtXXSYxO2ZvcihXPVk7VzxMLmxlbmd0aDtXKyspbGU8PD0xLGxlfD1VPj4+TFtXXSYxO1FbWiswXT1pZT4+PjAs''@;'; put 'put ''UVtaKzFdPWxlPj4+MH0sSmUuZXhwYW5kPWZ1bmN0aW9uKE1lLFUsUSl7dmFyIFo9MCxpZT0wO1o9KDEmTWUpPDw1fE1lPj4+Mjc7Zm9yKHZhciBsZT0yMztsZT49MTU7bGUtPTQpWjw8PTYsWnw9TWU+Pj5sZSY2Mztmb3IobGU9MTE7bGU+PTM7bGUtPTQpaWV8PU1lPj4+bGUmNjMsaWU8PD02''@;'; put 'put ''O2llfD0oMzEmTWUpPDwxfE1lPj4+MzEsVVtRKzBdPVo+Pj4wLFVbUSsxXT1pZT4+PjB9O3ZhciBnZT1bMTQsMCw0LDE1LDEzLDcsMSw0LDIsMTQsMTUsMiwxMSwxMyw4LDEsMywxMCwxMCw2LDYsMTIsMTIsMTEsNSw5LDksNSwwLDMsNyw4LDQsMTUsMSwxMiwxNCw4LDgsMiwxMyw0LDYsOSwy''@;'; put 'put ''LDEsMTEsNywxNSw1LDEyLDExLDksMyw3LDE0LDMsMTAsMTAsMCw1LDYsMCwxMywxNSwzLDEsMTMsOCw0LDE0LDcsNiwxNSwxMSwyLDMsOCw0LDE0LDksMTIsNywwLDIsMSwxMywxMCwxMiw2LDAsOSw1LDExLDEwLDUsMCwxMywxNCw4LDcsMTAsMTEsMSwxMCwzLDQsMTUsMTMsNCwxLDIsNSwx''@;'; put 'put ''MSw4LDYsMTIsNyw2LDEyLDksMCwzLDUsMiwxNCwxNSw5LDEwLDEzLDAsNyw5LDAsMTQsOSw2LDMsMyw0LDE1LDYsNSwxMCwxLDIsMTMsOCwxMiw1LDcsMTQsMTEsMTIsNCwxMSwyLDE1LDgsMSwxMywxLDYsMTAsNCwxMyw5LDAsOCw2LDE1LDksMyw4LDAsNywxMSw0LDEsMTUsMiwxNCwxMiwz''@;'; put 'put ''LDUsMTEsMTAsNSwxNCwyLDcsMTIsNywxMywxMyw4LDE0LDExLDMsNSwwLDYsNiwxNSw5LDAsMTAsMywxLDQsMiw3LDgsMiw1LDEyLDExLDEsMTIsMTAsNCwxNCwxNSw5LDEwLDMsNiwxNSw5LDAsMCw2LDEyLDEwLDExLDEsNywxMywxMyw4LDE1LDksMSw0LDMsNSwxNCwxMSw1LDEyLDIsNyw4''@;'; put 'put ''LDIsNCwxNCwyLDE0LDEyLDExLDQsMiwxLDEyLDcsNCwxMCw3LDExLDEzLDYsMSw4LDUsNSwwLDMsMTUsMTUsMTAsMTMsMywwLDksMTQsOCw5LDYsNCwxMSwyLDgsMSwxMiwxMSw3LDEwLDEsMTMsMTQsNywyLDgsMTMsMTUsNiw5LDE1LDEyLDAsNSw5LDYsMTAsMyw0LDAsNSwxNCwzLDEyLDEw''@;'; put 'put ''LDEsMTUsMTAsNCwxNSwyLDksNywyLDEyLDYsOSw4LDUsMCw2LDEzLDEsMywxMyw0LDE0LDE0LDAsNywxMSw1LDMsMTEsOCw5LDQsMTQsMywxNSwyLDUsMTIsMiw5LDgsNSwxMiwxNSwzLDEwLDcsMTEsMCwxNCw0LDEsMTAsNywxLDYsMTMsMCwxMSw4LDYsMTMsNCwxMywxMSwwLDIsMTEsMTQs''@;'; put 'put ''NywxNSw0LDAsOSw4LDEsMTMsMTAsMywxNCwxMiwzLDksNSw3LDEyLDUsMiwxMCwxNSw2LDgsMSw2LDEsNiw0LDExLDExLDEzLDEzLDgsMTIsMSwzLDQsNywxMCwxNCw3LDEwLDksMTUsNSw2LDAsOCwxNSwwLDE0LDUsMiw5LDMsMiwxMiwxMywxLDIsMTUsOCwxMyw0LDgsNiwxMCwxNSwzLDEx''@;'; put 'put ''LDcsMSw0LDEwLDEyLDksNSwzLDYsMTQsMTEsNSwwLDAsMTQsMTIsOSw3LDIsNywyLDExLDEsNCwxNCwxLDcsOSw0LDEyLDEwLDE0LDgsMiwxMywwLDE1LDYsMTIsMTAsOSwxMywwLDE1LDMsMyw1LDUsNiw4LDExXTtKZS5zdWJzdGl0dXRlPWZ1bmN0aW9uKE1lLFUpe2Zvcih2YXIgUT0wLFo9''@;'; put 'put ''MDtaPDQ7WisrKVE8PD00LFF8PWdlWzY0KlorKE1lPj4+MTgtNipaJjYzKV07Zm9yKFo9MDtaPDQ7WisrKVE8PD00LFF8PWdlWzI1Nis2NCpaKyhVPj4+MTgtNipaJjYzKV07cmV0dXJuIFE+Pj4wfTt2YXIgQj1bMTYsMjUsMTIsMTEsMywyMCw0LDE1LDMxLDE3LDksNiwyNywxNCwxLDIyLDMw''@;'; put 'put ''LDI0LDgsMTgsMCw1LDI5LDIzLDEzLDE5LDIsMjYsMTAsMjEsMjgsN107SmUucGVybXV0ZT1mdW5jdGlvbihNZSl7Zm9yKHZhciBVPTAsUT0wO1E8Qi5sZW5ndGg7USsrKVU8PD0xLFV8PU1lPj4+QltRXSYxO3JldHVybiBVPj4+MH0sSmUucGFkU3BsaXQ9ZnVuY3Rpb24oTWUsVSxRKXtmb3Io''@;'; put 'put ''dmFyIFo9TWUudG9TdHJpbmcoMik7Wi5sZW5ndGg8VTspWj0iMCIrWjtmb3IodmFyIGllPVtdLGxlPTA7bGU8VTtsZSs9USlpZS5wdXNoKFouc2xpY2UobGUsbGUrUSkpO3JldHVybiBpZS5qb2luKCIgIil9fSw5ODgyOTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTU2MyksQj1MKDI5Nzk5KSxF''@;'; put 'put ''PUwoMjE0MTkpLFU9e2JpbmFyeTohMCxoZXg6ITAsYmFzZTY0OiEwfTtKZS5EaWZmaWVIZWxsbWFuR3JvdXA9SmUuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwPUplLmdldERpZmZpZUhlbGxtYW49ZnVuY3Rpb24gTWUoWil7dmFyIGllPW5ldyBCdWZmZXIoQltaXS5wcmltZSwiaGV4IiksbGU9''@;'; put 'put ''bmV3IEJ1ZmZlcihCW1pdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyBFKGllLGxlKX0sSmUuY3JlYXRlRGlmZmllSGVsbG1hbj1KZS5EaWZmaWVIZWxsbWFuPWZ1bmN0aW9uIFEoWixpZSxsZSxZKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGllKXx8dm9pZCAwPT09VVtpZV0/UShaLCJiaW5hcnki''@;'; put 'put ''LGllLGxlKTooaWU9aWV8fCJiaW5hcnkiLFk9WXx8ImJpbmFyeSIsbGU9bGV8fG5ldyBCdWZmZXIoWzJdKSxCdWZmZXIuaXNCdWZmZXIobGUpfHwobGU9bmV3IEJ1ZmZlcihsZSxZKSksIm51bWJlciI9PXR5cGVvZiBaP25ldyBFKGdlKFosbGUpLGxlLCEwKTooQnVmZmVyLmlzQnVmZmVyKFop''@;'; put 'put ''fHwoWj1uZXcgQnVmZmVyKFosaWUpKSxuZXcgRShaLGxlLCEwKSkpfX0sMjE0MTk6KFhlLEplLEwpPT57dmFyIGdlPUwoODgzMTMpLEU9bmV3KEwoMTcwNzkpKSxNZT1uZXcgZ2UoMjQpLFU9bmV3IGdlKDExKSxRPW5ldyBnZSgxMCksWj1uZXcgZ2UoMyksaWU9bmV3IGdlKDcpLGxlPUwoODU1''@;'; put 'put ''NjMpLFk9TCg1Mzc1Myk7ZnVuY3Rpb24gVyhhZSxmZSl7cmV0dXJuIGZlPWZlfHwidXRmOCIsQnVmZmVyLmlzQnVmZmVyKGFlKXx8KGFlPW5ldyBCdWZmZXIoYWUsZmUpKSx0aGlzLl9wdWI9bmV3IGdlKGFlKSx0aGlzfWZ1bmN0aW9uIE4oYWUsZmUpe3JldHVybiBmZT1mZXx8InV0ZjgiLEJ1''@;'; put 'put ''ZmZlci5pc0J1ZmZlcihhZSl8fChhZT1uZXcgQnVmZmVyKGFlLGZlKSksdGhpcy5fcHJpdj1uZXcgZ2UoYWUpLHRoaXN9WGUuZXhwb3J0cz1KO3ZhciBlZT17fTtmdW5jdGlvbiBKKGFlLGZlLGRlKXt0aGlzLnNldEdlbmVyYXRvcihmZSksdGhpcy5fX3ByaW1lPW5ldyBnZShhZSksdGhpcy5f''@;'; put 'put ''cHJpbWU9Z2UubW9udCh0aGlzLl9fcHJpbWUpLHRoaXMuX3ByaW1lTGVuPWFlLmxlbmd0aCx0aGlzLl9wdWI9dm9pZCAwLHRoaXMuX3ByaXY9dm9pZCAwLHRoaXMuX3ByaW1lQ29kZT12b2lkIDAsZGU/KHRoaXMuc2V0UHVibGljS2V5PVcsdGhpcy5zZXRQcml2YXRlS2V5PU4pOnRoaXMuX3By''@;'; put 'put ''aW1lQ29kZT04fWZ1bmN0aW9uIHNlKGFlLGZlKXt2YXIgZGU9bmV3IEJ1ZmZlcihhZS50b0FycmF5KCkpO3JldHVybiBmZT9kZS50b1N0cmluZyhmZSk6ZGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KEoucHJvdG90eXBlLCJ2ZXJpZnlFcnJvciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0aGlzLl9wcmltZUNvZGUmJih0aGlzLl9wcmltZUNvZGU9ZnVuY3Rpb24gcShhZSxmZSl7dmFyIGRlPWZlLnRvU3RyaW5nKCJoZXgiKSx2ZT1bZGUsYWUudG9TdHJpbmcoMTYpXS5qb2luKCJfIik7aWYodmUgaW4gZWUpcmV0dXJuIGVlW3ZlXTt2''@;'; put 'put ''YXIga2UsQWU9MDtpZihhZS5pc0V2ZW4oKXx8IWxlLnNpbXBsZVNpZXZlfHwhbGUuZmVybWF0VGVzdChhZSl8fCFFLnRlc3QoYWUpKXJldHVybiBBZSs9MSxlZVt2ZV09QWUrPSIwMiI9PT1kZXx8IjA1Ij09PWRlPzg6NCxBZTtzd2l0Y2goRS50ZXN0KGFlLnNocm4oMSkpfHwoQWUrPTIpLGRl''@;'; put 'put ''KXtjYXNlIjAyIjphZS5tb2QoTWUpLmNtcChVKSYmKEFlKz04KTticmVhaztjYXNlIjA1Ijooa2U9YWUubW9kKFEpKS5jbXAoWikmJmtlLmNtcChpZSkmJihBZSs9OCk7YnJlYWs7ZGVmYXVsdDpBZSs9NH1yZXR1cm4gZWVbdmVdPUFlLEFlfSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRo''@;'; put 'put ''aXMuX3ByaW1lQ29kZX19KSxKLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpdnx8KHRoaXMuX3ByaXY9bmV3IGdlKFkodGhpcy5fcHJpbWVMZW4pKSksdGhpcy5fcHViPXRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3By''@;'; put 'put ''aXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tleSgpfSxKLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGFlKXt2YXIgZmU9KGFlPShhZT1uZXcgZ2UoYWUpKS50b1JlZCh0aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksZGU9bmV3IEJ1ZmZlcihm''@;'; put 'put ''ZS50b0FycmF5KCkpLHZlPXRoaXMuZ2V0UHJpbWUoKTtpZihkZS5sZW5ndGg8dmUubGVuZ3RoKXt2YXIgQWU9bmV3IEJ1ZmZlcih2ZS5sZW5ndGgtZGUubGVuZ3RoKTtBZS5maWxsKDApLGRlPUJ1ZmZlci5jb25jYXQoW0FlLGRlXSl9cmV0dXJuIGRlfSxKLnByb3RvdHlwZS5nZXRQdWJsaWNL''@;'; put 'put ''ZXk9ZnVuY3Rpb24oZmUpe3JldHVybiBzZSh0aGlzLl9wdWIsZmUpfSxKLnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKGZlKXtyZXR1cm4gc2UodGhpcy5fcHJpdixmZSl9LEoucHJvdG90eXBlLmdldFByaW1lPWZ1bmN0aW9uKGFlKXtyZXR1cm4gc2UodGhpcy5fX3ByaW1lLGFl''@;'; put 'put ''KX0sSi5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yPWZ1bmN0aW9uKGFlKXtyZXR1cm4gc2UodGhpcy5fZ2VuLGFlKX0sSi5wcm90b3R5cGUuc2V0R2VuZXJhdG9yPWZ1bmN0aW9uKGFlLGZlKXtyZXR1cm4gZmU9ZmV8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIoYWUpfHwoYWU9bmV3IEJ1ZmZlcihh''@;'; put 'put ''ZSxmZSkpLHRoaXMuX19nZW49YWUsdGhpcy5fZ2VuPW5ldyBnZShhZSksdGhpc319LDg1NTYzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDUzNzUzKTtYZS5leHBvcnRzPUFlLEFlLnNpbXBsZVNpZXZlPWRlLEFlLmZlcm1hdFRlc3Q9dmU7dmFyIEI9TCg4ODMxMyksRT1uZXcgQigyNCksVT1uZXco''@;'; put 'put ''TCgxNzA3OSkpLFE9bmV3IEIoMSksWj1uZXcgQigyKSxpZT1uZXcgQig1KSxXPShuZXcgQigxNiksbmV3IEIoOCksbmV3IEIoMTApKSxOPW5ldyBCKDMpLHE9KG5ldyBCKDcpLG5ldyBCKDExKSksSj1uZXcgQig0KSxhZT0obmV3IEIoMTIpLG51bGwpO2Z1bmN0aW9uIGRlKGtlKXtmb3IodmFy''@;'; put 'put ''IFNlPWZ1bmN0aW9uIGZlKCl7aWYobnVsbCE9PWFlKXJldHVybiBhZTt2YXIgU2U9W107U2VbMF09Mjtmb3IodmFyIEllPTEsVGU9MztUZTwxMDQ4NTc2O1RlKz0yKXtmb3IodmFyIEVlPU1hdGguY2VpbChNYXRoLnNxcnQoVGUpKSxoZT0wO2hlPEllJiZTZVtoZV08PUVlJiZUZSVTZVtoZV0h''@;'; put 'put ''PTA7aGUrKyk7SWUhPT1oZSYmU2VbaGVdPD1FZXx8KFNlW0llKytdPVRlKX1yZXR1cm4gYWU9U2UsU2V9KCksSWU9MDtJZTxTZS5sZW5ndGg7SWUrKylpZigwPT09a2UubW9kbihTZVtJZV0pKXJldHVybiAwPT09a2UuY21wbihTZVtJZV0pO3JldHVybiEwfWZ1bmN0aW9uIHZlKGtlKXt2YXIg''@;'; put 'put ''U2U9Qi5tb250KGtlKTtyZXR1cm4gMD09PVoudG9SZWQoU2UpLnJlZFBvdyhrZS5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKX1mdW5jdGlvbiBBZShrZSxTZSl7aWYoa2U8MTYpcmV0dXJuIG5ldyBCKDI9PT1TZXx8NT09PVNlP1sxNDAsMTIzXTpbMTQwLDM5XSk7U2U9bmV3IEIoU2UpO2Zv''@;'; put 'put ''cih2YXIgSWUsVGU7Oyl7Zm9yKEllPW5ldyBCKGdlKE1hdGguY2VpbChrZS84KSkpO0llLmJpdExlbmd0aCgpPmtlOylJZS5pc2hybigxKTtpZihJZS5pc0V2ZW4oKSYmSWUuaWFkZChRKSxJZS50ZXN0bigxKXx8SWUuaWFkZChaKSxTZS5jbXAoWikpe2lmKCFTZS5jbXAoaWUpKWZvcig7SWUu''@;'; put 'put ''bW9kKFcpLmNtcChOKTspSWUuaWFkZChKKX1lbHNlIGZvcig7SWUubW9kKEUpLmNtcChxKTspSWUuaWFkZChKKTtpZihkZShUZT1JZS5zaHJuKDEpKSYmZGUoSWUpJiZ2ZShUZSkmJnZlKEllKSYmVS50ZXN0KFRlKSYmVS50ZXN0KEllKSlyZXR1cm4gSWV9fX0sODgzMTM6ZnVuY3Rpb24oWGUs''@;'; put 'put ''SmUsTCl7IWZ1bmN0aW9uKGdlLEIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKGhlLE8pe2lmKCFoZSl0aHJvdyBuZXcgRXJyb3IoT3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBNZShoZSxPKXtoZS5zdXBlcl89Tzt2YXIgej1mdW5jdGlvbigpe307ei5wcm90b3R5cGU9Ty5wcm90''@;'; put 'put ''b3R5cGUsaGUucHJvdG90eXBlPW5ldyB6LGhlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1oZX1mdW5jdGlvbiBVKGhlLE8seil7aWYoVS5pc0JOKGhlKSlyZXR1cm4gaGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWhl''@;'; put 'put ''JiYoKCJsZSI9PT1PfHwiYmUiPT09TykmJih6PU8sTz0xMCksdGhpcy5faW5pdChoZXx8MCxPfHwxMCx6fHwiYmUiKSl9dmFyIFE7Im9iamVjdCI9PXR5cGVvZiBnZT9nZS5leHBvcnRzPVU6Qi5CTj1VLFUuQk49VSxVLndvcmRTaXplPTI2O3RyeXtRPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2lu''@;'; put 'put ''ZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6TCg3NzQ4KS5CdWZmZXJ9Y2F0Y2goaGUpe31mdW5jdGlvbiBaKGhlLE8pe3ZhciB6PWhlLmNoYXJDb2RlQXQoTyk7cmV0dXJuIHo+PTY1JiZ6PD03MD96LTU1Ono+PTk3JiZ6PD0xMDI/ei04Nzp6LTQ4JjE1fWZ1bmN0''@;'; put 'put ''aW9uIGllKGhlLE8seil7dmFyIG5lPVooaGUseik7cmV0dXJuIHotMT49TyYmKG5lfD1aKGhlLHotMSk8PDQpLG5lfWZ1bmN0aW9uIGxlKGhlLE8seixuZSl7Zm9yKHZhciB0ZT0wLHg9TWF0aC5taW4oaGUubGVuZ3RoLHopLFA9TztQPHg7UCsrKXt2YXIgVj1oZS5jaGFyQ29kZUF0KFApLTQ4''@;'; put 'put ''O3RlKj1uZSx0ZSs9Vj49NDk/Vi00OSsxMDpWPj0xNz9WLTE3KzEwOlZ9cmV0dXJuIHRlfVUuaXNCTj1mdW5jdGlvbihPKXtyZXR1cm4gTyBpbnN0YW5jZW9mIFV8fG51bGwhPT1PJiYib2JqZWN0Ij09dHlwZW9mIE8mJk8uY29uc3RydWN0b3Iud29yZFNpemU9PT1VLndvcmRTaXplJiZBcnJh''@;'; put 'put ''eS5pc0FycmF5KE8ud29yZHMpfSxVLm1heD1mdW5jdGlvbihPLHope3JldHVybiBPLmNtcCh6KT4wP086en0sVS5taW49ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik8MD9POnp9LFUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKE8seixuZSl7aWYoIm51bWJlciI9PXR5cGVvZiBPKXJl''@;'; put 'put ''dHVybiB0aGlzLl9pbml0TnVtYmVyKE8seixuZSk7aWYoIm9iamVjdCI9PXR5cGVvZiBPKXJldHVybiB0aGlzLl9pbml0QXJyYXkoTyx6LG5lKTsiaGV4Ij09PXomJih6PTE2KSxFKHo9PT0oMHx6KSYmej49MiYmejw9MzYpO3ZhciB0ZT0wOyItIj09PShPPU8udG9TdHJpbmcoKS5yZXBsYWNl''@;'; put 'put ''KC9ccysvZywiIikpWzBdJiYodGUrKyx0aGlzLm5lZ2F0aXZlPTEpLHRlPE8ubGVuZ3RoJiYoMTY9PT16P3RoaXMuX3BhcnNlSGV4KE8sdGUsbmUpOih0aGlzLl9wYXJzZUJhc2UoTyx6LHRlKSwibGUiPT09bmUmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LG5lKSkpfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihPLHosbmUpe088MCYmKHRoaXMubmVnYXRpdmU9MSxPPS1PKSxPPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPXSx0aGlzLmxlbmd0aD0xKTpPPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEw''@;'; put 'put ''ODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEUoTzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PW5lJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixuZSl9LFUu''@;'; put 'put ''cHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oTyx6LG5lKXtpZihFKCJudW1iZXIiPT10eXBlb2YgTy5sZW5ndGgpLE8ubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKE8ubGVuZ3RoLzMpLHRoaXMud29y''@;'; put 'put ''ZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHRlPTA7dGU8dGhpcy5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT0wO3ZhciB4LFAsVj0wO2lmKCJiZSI9PT1uZSlmb3IodGU9Ty5sZW5ndGgtMSx4PTA7dGU+PTA7dGUtPTMpdGhpcy53b3Jkc1t4XXw9KFA9T1t0ZV18T1t0ZS0x''@;'; put 'put ''XTw8OHxPW3RlLTJdPDwxNik8PFYmNjcxMDg4NjMsdGhpcy53b3Jkc1t4KzFdPVA+Pj4yNi1WJjY3MTA4ODYzLChWKz0yNCk+PTI2JiYoVi09MjYseCsrKTtlbHNlIGlmKCJsZSI9PT1uZSlmb3IodGU9MCx4PTA7dGU8Ty5sZW5ndGg7dGUrPTMpdGhpcy53b3Jkc1t4XXw9KFA9T1t0ZV18T1t0''@;'; put 'put ''ZSsxXTw8OHxPW3RlKzJdPDwxNik8PFYmNjcxMDg4NjMsdGhpcy53b3Jkc1t4KzFdPVA+Pj4yNi1WJjY3MTA4ODYzLChWKz0yNCk+PTI2JiYoVi09MjYseCsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oTyx6LG5lKXt0aGlzLmxlbmd0aD1N''@;'; put 'put ''YXRoLmNlaWwoKE8ubGVuZ3RoLXopLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHRlPTA7dGU8dGhpcy5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT0wO3ZhciBWLHg9MCxQPTA7aWYoImJlIj09PW5lKWZvcih0ZT1PLmxlbmd0aC0xO3RlPj16O3RlLT0y''@;'; put 'put ''KVY9aWUoTyx6LHRlKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7ZWxzZSBmb3IodGU9KE8ubGVuZ3RoLXopJTI9PTA/eisxOno7dGU8Ty5sZW5ndGg7dGUrPTIpVj1pZShPLHosdGUpPDx4LHRoaXMud29y''@;'; put 'put ''ZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4LHRoaXMud29yZHNbUCs9MV18PVY+Pj4yNik6eCs9ODt0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oTyx6LG5lKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgdGU9MCx4PTE7eDw9''@;'; put 'put ''NjcxMDg4NjM7eCo9eil0ZSsrO3RlLS0seD14L3p8MDtmb3IodmFyIFA9Ty5sZW5ndGgtbmUsVj1QJXRlLFQ9TWF0aC5taW4oUCxQLVYpK25lLFM9MCxGPW5lO0Y8VDtGKz10ZSlTPWxlKE8sRixGK3RlLHopLHRoaXMuaW11bG4oeCksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29y''@;'; put 'put ''ZHNbMF0rPVM6dGhpcy5faWFkZG4oUyk7aWYoMCE9PVYpe3ZhciB5ZT0xO2ZvcihTPWxlKE8sRixPLmxlbmd0aCx6KSxGPTA7RjxWO0YrKyl5ZSo9ejt0aGlzLmltdWxuKHllKSx0aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlzLl9pYWRkbihTKX10aGlzLnN0''@;'; put 'put ''cmlwKCl9LFUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oTyl7Ty53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgej0wO3o8dGhpcy5sZW5ndGg7eisrKU8ud29yZHNbel09dGhpcy53b3Jkc1t6XTtPLmxlbmd0aD10aGlzLmxlbmd0aCxPLm5lZ2F0aXZlPXRoaXMubmVnYXRp''@;'; put 'put ''dmUsTy5yZWQ9dGhpcy5yZWR9LFUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIE89bmV3IFUobnVsbCk7cmV0dXJuIHRoaXMuY29weShPKSxPfSxVLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKE8pe2Zvcig7dGhpcy5sZW5ndGg8TzspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsr''@;'; put 'put ''XT0wO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LFUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxVLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBZ''@;'; put 'put ''PVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLFc9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sTj1bMCww''@;'; put 'put ''LDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4''@;'; put 'put ''NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBxKGhlLE8seil7ei5uZWdhdGl2ZT1P''@;'; put 'put ''Lm5lZ2F0aXZlXmhlLm5lZ2F0aXZlO3ZhciBuZT1oZS5sZW5ndGgrTy5sZW5ndGh8MDt6Lmxlbmd0aD1uZSxuZT1uZS0xfDA7dmFyIHRlPTB8aGUud29yZHNbMF0seD0wfE8ud29yZHNbMF0sUD10ZSp4LFQ9UC82NzEwODg2NHwwO3oud29yZHNbMF09NjcxMDg4NjMmUDtmb3IodmFyIFM9MTtT''@;'; put 'put ''PG5lO1MrKyl7Zm9yKHZhciBGPVQ+Pj4yNix5ZT02NzEwODg2MyZULENlPU1hdGgubWluKFMsTy5sZW5ndGgtMSksRGU9TWF0aC5tYXgoMCxTLWhlLmxlbmd0aCsxKTtEZTw9Q2U7RGUrKylGKz0oUD0odGU9MHxoZS53b3Jkc1tTLURlfDBdKSooeD0wfE8ud29yZHNbRGVdKSt5ZSkvNjcxMDg4''@;'; put 'put ''NjR8MCx5ZT02NzEwODg2MyZQO3oud29yZHNbU109MHx5ZSxUPTB8Rn1yZXR1cm4gMCE9PVQ/ei53b3Jkc1tTXT0wfFQ6ei5sZW5ndGgtLSx6LnN0cmlwKCl9VS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oTyx6KXt2YXIgbmU7aWYoej0wfHp8fDEsMTY9PT0oTz1PfHwxMCl8fCJoZXgi''@;'; put 'put ''PT09Tyl7bmU9IiI7Zm9yKHZhciB0ZT0wLHg9MCxQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPXRoaXMud29yZHNbUF0sVD0oMTY3NzcyMTUmKFY8PHRlfHgpKS50b1N0cmluZygxNik7bmU9MCE9KHg9Vj4+PjI0LXRlJjE2Nzc3MjE1KXx8UCE9PXRoaXMubGVuZ3RoLTE/WVs2LVQubGVu''@;'; put 'put ''Z3RoXStUK25lOlQrbmUsKHRlKz0yKT49MjYmJih0ZS09MjYsUC0tKX1mb3IoMCE9PXgmJihuZT14LnRvU3RyaW5nKDE2KStuZSk7bmUubGVuZ3RoJXohPTA7KW5lPSIwIituZTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihuZT0iLSIrbmUpLG5lfWlmKE89PT0oMHxPKSYmTz49MiYmTzw9''@;'; put 'put ''MzYpe3ZhciBTPVdbT10sRj1OW09dO25lPSIiO3ZhciB5ZT10aGlzLmNsb25lKCk7Zm9yKHllLm5lZ2F0aXZlPTA7IXllLmlzWmVybygpOyl7dmFyIENlPXllLm1vZG4oRikudG9TdHJpbmcoTyk7bmU9KHllPXllLmlkaXZuKEYpKS5pc1plcm8oKT9DZStuZTpZW1MtQ2UubGVuZ3RoXStDZStu''@;'; put 'put ''ZX1mb3IodGhpcy5pc1plcm8oKSYmKG5lPSIwIituZSk7bmUubGVuZ3RoJXohPTA7KW5lPSIwIituZTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihuZT0iLSIrbmUpLG5lfUUoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sVS5wcm90b3R5cGUudG9OdW1iZXI9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgTz10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Tys9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP08rPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0''@;'; put 'put ''aD4yJiZFKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tTzpPfSxVLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LFUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9u''@;'; put 'put ''KE8seil7cmV0dXJuIEUodm9pZCAwIT09USksdGhpcy50b0FycmF5TGlrZShRLE8seil9LFUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihPLHosbmUpe3Zh''@;'; put 'put ''ciB0ZT10aGlzLmJ5dGVMZW5ndGgoKSx4PW5lfHxNYXRoLm1heCgxLHRlKTtFKHRlPD14LCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRSh4PjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgVCxTLFA9ImxlIj09PXosVj1u''@;'; put 'put ''ZXcgTyh4KSxGPXRoaXMuY2xvbmUoKTtpZihQKXtmb3IoUz0wOyFGLmlzWmVybygpO1MrKylUPUYuYW5kbG4oMjU1KSxGLml1c2hybig4KSxWW1NdPVQ7Zm9yKDtTPHg7UysrKVZbU109MH1lbHNle2ZvcihTPTA7Uzx4LXRlO1MrKylWW1NdPTA7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1G''@;'; put 'put ''LmFuZGxuKDI1NSksRi5pdXNocm4oOCksVlt4LVMtMV09VH1yZXR1cm4gVn0sVS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKE8pe3JldHVybiAzMi1NYXRoLmNsejMyKE8pfTpmdW5jdGlvbihPKXt2YXIgej1PLG5lPTA7cmV0dXJuIHo+PTQwOTYmJihuZSs9MTMs''@;'; put 'put ''ej4+Pj0xMyksej49NjQmJihuZSs9Nyx6Pj4+PTcpLHo+PTgmJihuZSs9NCx6Pj4+PTQpLHo+PTImJihuZSs9Mix6Pj4+PTIpLG5lK3p9LFUucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihPKXtpZigwPT09TylyZXR1cm4gMjY7dmFyIHo9TyxuZT0wO3JldHVybiAwPT0oODE5MSZ6KSYm''@;'; put 'put ''KG5lKz0xMyx6Pj4+PTEzKSwwPT0oMTI3JnopJiYobmUrPTcsej4+Pj03KSwwPT0oMTUmeikmJihuZSs9NCx6Pj4+PTQpLDA9PSgzJnopJiYobmUrPTIsej4+Pj0yKSwwPT0oMSZ6KSYmbmUrKyxuZX0sVS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIHo9dGhpcy5fY291bnRC''@;'; put 'put ''aXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkren0sVS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgTz0wLHo9MDt6PHRoaXMubGVuZ3RoO3orKyl7dmFyIG5lPXRoaXMu''@;'; put 'put ''X3plcm9CaXRzKHRoaXMud29yZHNbel0pO2lmKE8rPW5lLDI2IT09bmUpYnJlYWt9cmV0dXJuIE99LFUucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LFUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihPKXtyZXR1''@;'; put 'put ''cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihPKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LFUucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnRlc3RuKE8tMSk/dGhpcy5ub3RuKE8pLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxVLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sVS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5u''@;'; put 'put ''ZWdhdGl2ZV49MSksdGhpc30sVS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihPKXtmb3IoO3RoaXMubGVuZ3RoPE8ubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB6PTA7ejxPLmxlbmd0aDt6KyspdGhpcy53b3Jkc1t6XT10aGlzLndvcmRzW3pdfE8ud29yZHNb''@;'; put 'put ''el07cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1b3IoTyl9LFUucHJvdG90eXBlLm9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlz''@;'; put 'put ''LmNsb25lKCkuaW9yKE8pOk8uY2xvbmUoKS5pb3IodGhpcyl9LFUucHJvdG90eXBlLnVvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoTyk6Ty5jbG9uZSgpLml1b3IodGhpcyl9LFUucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKE8p''@;'; put 'put ''e3ZhciB6O3o9dGhpcy5sZW5ndGg+Ty5sZW5ndGg/Tzp0aGlzO2Zvcih2YXIgbmU9MDtuZTx6Lmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXRoaXMud29yZHNbbmVdJk8ud29yZHNbbmVdO3JldHVybiB0aGlzLmxlbmd0aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlh''@;'; put 'put ''bmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoTyl9LFUucHJvdG90eXBlLmFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoTyk6Ty5jbG9uZSgpLmlhbmQodGhp''@;'; put 'put ''cyl9LFUucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChPKTpPLmNsb25lKCkuaXVhbmQodGhpcyl9LFUucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKE8pe3ZhciB6LG5lO3RoaXMubGVuZ3RoPk8ubGVuZ3Ro''@;'; put 'put ''Pyh6PXRoaXMsbmU9Tyk6KHo9TyxuZT10aGlzKTtmb3IodmFyIHRlPTA7dGU8bmUubGVuZ3RoO3RlKyspdGhpcy53b3Jkc1t0ZV09ei53b3Jkc1t0ZV1ebmUud29yZHNbdGVdO2lmKHRoaXMhPT16KWZvcig7dGU8ei5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT16LndvcmRzW3RlXTtyZXR1''@;'; put 'put ''cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1eG9yKE8pfSxVLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVu''@;'; put 'put ''Z3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKE8pOk8uY2xvbmUoKS5peG9yKHRoaXMpfSxVLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoTyk6Ty5jbG9uZSgpLml1eG9yKHRoaXMpfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5pbm90bj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9MHxNYXRoLmNlaWwoTy8yNiksbmU9TyUyNjt0aGlzLl9leHBhbmQoeiksbmU+MCYmei0tO2Zvcih2YXIgdGU9MDt0ZTx6O3RlKyspdGhpcy53b3Jkc1t0ZV09NjcxMDg4NjMmfnRoaXMud29y''@;'; put 'put ''ZHNbdGVdO3JldHVybiBuZT4wJiYodGhpcy53b3Jkc1t0ZV09fnRoaXMud29yZHNbdGVdJjY3MTA4ODYzPj4yNi1uZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oTyl9LFUucHJvdG90eXBlLnNldG49ZnVuY3Rp''@;'; put 'put ''b24oTyx6KXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIG5lPU8vMjZ8MCx0ZT1PJTI2O3JldHVybiB0aGlzLl9leHBhbmQobmUrMSksdGhpcy53b3Jkc1tuZV09ej90aGlzLndvcmRzW25lXXwxPDx0ZTp0aGlzLndvcmRzW25lXSZ+KDE8PHRlKSx0aGlzLnN0cmlwKCl9LFUucHJv''@;'; put 'put ''dG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyl7dmFyIHosbmUsdGU7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''JiYwIT09Ty5uZWdhdGl2ZSlyZXR1cm4gTy5uZWdhdGl2ZT0wLHo9dGhpcy5pc3ViKE8pLE8ubmVnYXRpdmU9MSx6Ll9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPk8ubGVuZ3RoPyhuZT10aGlzLHRlPU8pOihuZT1PLHRlPXRoaXMpO2Zvcih2YXIgeD0wLFA9MDtQPHRlLmxlbmd0aDtQKyspdGhp''@;'; put 'put ''cy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxuZS53b3Jkc1tQXSkrKDB8dGUud29yZHNbUF0pK3gpLHg9ej4+PjI2O2Zvcig7MCE9PXgmJlA8bmUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3MTA4ODYzJih6PSgwfG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtpZih0aGlzLmxlbmd0aD1u''@;'; put 'put ''ZS5sZW5ndGgsMCE9PXgpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09eCx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYobmUhPT10aGlzKWZvcig7UDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09bmUud29yZHNbUF07cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPKXt2YXIg''@;'; put 'put ''ejtyZXR1cm4gMCE9PU8ubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhPLm5lZ2F0aXZlPTAsej10aGlzLnN1YihPKSxPLm5lZ2F0aXZlXj0xLHopOjA9PT1PLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHo9Ty5zdWIodGhpcyksdGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0xLHopOnRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKE8pOk8uY2xvbmUoKS5pYWRkKHRoaXMpfSxVLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKE8pe2lmKDAhPT1PLm5lZ2F0aXZlKXtPLm5lZ2F0aXZlPTA7dmFyIHo9dGhpcy5pYWRkKE8pO3JldHVybiBPLm5lZ2F0''@;'; put 'put ''aXZlPTEsei5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgdGUseCxuZT10aGlzLmNtcChPKTtpZigwPT09bmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO25lPjA/KHRlPXRoaXMseD1PKToodGU9Tyx4PXRoaXMpO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKylQPSh6PSgwfHRlLndvcmRzW1ZdKS0oMHx4LndvcmRzW1ZdKStQKT4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2''@;'; put 'put ''MyZ6O2Zvcig7MCE9PVAmJlY8dGUubGVuZ3RoO1YrKylQPSh6PSgwfHRlLndvcmRzW1ZdKStQKT4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZ6O2lmKDA9PT1QJiZWPHRlLmxlbmd0aCYmdGUhPT10aGlzKWZvcig7Vjx0ZS5sZW5ndGg7VisrKXRoaXMud29yZHNbVl09dGUud29yZHNbVl07''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFYpLHRlIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKE8pfTt2YXIgSj1mdW5jdGlvbihPLHosbmUp''@;'; put 'put ''e3ZhciBULFMsRix0ZT1PLndvcmRzLHg9ei53b3JkcyxQPW5lLndvcmRzLFY9MCx5ZT0wfHRlWzBdLENlPTgxOTEmeWUsRGU9eWU+Pj4xMyxQZT0wfHRlWzFdLFFlPTgxOTEmUGUsJGU9UGU+Pj4xMyxndD0wfHRlWzJdLHl0PTgxOTEmZ3QscHQ9Z3Q+Pj4xMyxtdD0wfHRlWzNdLHZ0PTgxOTEm''@;'; put 'put ''bXQsZnQ9bXQ+Pj4xMyxGdD0wfHRlWzRdLG9uPTgxOTEmRnQsX3Q9RnQ+Pj4xMyxudD0wfHRlWzVdLHFlPTgxOTEmbnQsb3Q9bnQ+Pj4xMyxSdD0wfHRlWzZdLEN0PTgxOTEmUnQsY3Q9UnQ+Pj4xMyxOdD0wfHRlWzddLHplPTgxOTEmTnQsWWU9TnQ+Pj4xMyxBdD0wfHRlWzhdLGp0PTgxOTEm''@;'; put 'put ''QXQsSnQ9QXQ+Pj4xMyxtbj0wfHRlWzldLHBuPTgxOTEmbW4sYm49bW4+Pj4xMyxsbj0wfHhbMF0sTm49ODE5MSZsbixrbj1sbj4+PjEzLGVyPTB8eFsxXSx1cj04MTkxJmVyLFhuPWVyPj4+MTMsRnI9MHx4WzJdLHhyPTgxOTEmRnIsZW49RnI+Pj4xMyxkcj0wfHhbM10sbnI9ODE5MSZkcix3''@;'; put 'put ''bj1kcj4+PjEzLCRuPTB8eFs0XSxZdD04MTkxJiRuLGduPSRuPj4+MTMsS249MHx4WzVdLFZ0PTgxOTEmS24sc249S24+Pj4xMyxVbj0wfHhbNl0sX249ODE5MSZVbix0bj1Vbj4+PjEzLEduPTB8eFs3XSxUcj04MTkxJkduLFBuPUduPj4+MTMsU3I9MHx4WzhdLHZuPTgxOTEmU3IsdW49U3I+''@;'; put 'put ''Pj4xMyxjbj0wfHhbOV0sU249ODE5MSZjbixHdD1jbj4+PjEzO25lLm5lZ2F0aXZlPU8ubmVnYXRpdmVeei5uZWdhdGl2ZSxuZS5sZW5ndGg9MTk7dmFyIEVuPShWKyhUPU1hdGguaW11bChDZSxObikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoQ2Usa24pKStNYXRoLmltdWwoRGUsTm4p''@;'; put 'put ''fDApKTw8MTMpfDA7Vj0oKEY9TWF0aC5pbXVsKERlLGtuKSkrKFM+Pj4xMyl8MCkrKEVuPj4+MjYpfDAsRW4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFFlLE5uKSxTPShTPU1hdGguaW11bChRZSxrbikpK01hdGguaW11bCgkZSxObil8MCxGPU1hdGguaW11bCgkZSxrbik7dmFyIGpuPShWKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKENlLHVyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsWG4pfDApK01hdGguaW11bChEZSx1cil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxYbil8MCkrKFM+Pj4xMyl8MCkrKGpuPj4+MjYpfDAsam4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVs''@;'; put 'put ''KHl0LE5uKSxTPShTPU1hdGguaW11bCh5dCxrbikpK01hdGguaW11bChwdCxObil8MCxGPU1hdGguaW11bChwdCxrbiksVD1UK01hdGguaW11bChRZSx1cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLFhuKXwwKStNYXRoLmltdWwoJGUsdXIpfDAsRj1GK01hdGguaW11bCgkZSxYbil8MDt2YXIg''@;'; put 'put ''cXQ9KFYrKFQ9VCtNYXRoLmltdWwoQ2UseHIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxlbil8MCkrTWF0aC5pbXVsKERlLHhyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLGVuKXwwKSsoUz4+PjEzKXwwKSsocXQ+Pj4yNil8MCxxdCY9NjcxMDg4NjMsVD1N''@;'; put 'put ''YXRoLmltdWwodnQsTm4pLFM9KFM9TWF0aC5pbXVsKHZ0LGtuKSkrTWF0aC5pbXVsKGZ0LE5uKXwwLEY9TWF0aC5pbXVsKGZ0LGtuKSxUPVQrTWF0aC5pbXVsKHl0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsWG4pfDApK01hdGguaW11bChwdCx1cil8MCxGPUYrTWF0aC5pbXVsKHB0LFhu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoUWUseHIpfDAsUz0oUz1TK01hdGguaW11bChRZSxlbil8MCkrTWF0aC5pbXVsKCRlLHhyKXwwLEY9RitNYXRoLmltdWwoJGUsZW4pfDA7dmFyIExuPShWKyhUPVQrTWF0aC5pbXVsKENlLG5yKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usd24p''@;'; put 'put ''fDApK01hdGguaW11bChEZSxucil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx3bil8MCkrKFM+Pj4xMyl8MCkrKExuPj4+MjYpfDAsTG4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG9uLE5uKSxTPShTPU1hdGguaW11bChvbixrbikpK01hdGguaW11bChfdCxObil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChfdCxrbiksVD1UK01hdGguaW11bCh2dCx1cil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LFhuKXwwKStNYXRoLmltdWwoZnQsdXIpfDAsRj1GK01hdGguaW11bChmdCxYbil8MCxUPVQrTWF0aC5pbXVsKHl0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsZW4pfDApK01hdGguaW11bChw''@;'; put 'put ''dCx4cil8MCxGPUYrTWF0aC5pbXVsKHB0LGVuKXwwLFQ9VCtNYXRoLmltdWwoUWUsbnIpfDAsUz0oUz1TK01hdGguaW11bChRZSx3bil8MCkrTWF0aC5pbXVsKCRlLG5yKXwwLEY9RitNYXRoLmltdWwoJGUsd24pfDA7dmFyIEpuPShWKyhUPVQrTWF0aC5pbXVsKENlLFl0KXwwKXwwKSsoKDgx''@;'; put 'put ''OTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsZ24pfDApK01hdGguaW11bChEZSxZdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxnbil8MCkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHFlLE5uKSxTPShTPU1hdGguaW11bChxZSxrbikp''@;'; put 'put ''K01hdGguaW11bChvdCxObil8MCxGPU1hdGguaW11bChvdCxrbiksVD1UK01hdGguaW11bChvbix1cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLFhuKXwwKStNYXRoLmltdWwoX3QsdXIpfDAsRj1GK01hdGguaW11bChfdCxYbil8MCxUPVQrTWF0aC5pbXVsKHZ0LHhyKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwodnQsZW4pfDApK01hdGguaW11bChmdCx4cil8MCxGPUYrTWF0aC5pbXVsKGZ0LGVuKXwwLFQ9VCtNYXRoLmltdWwoeXQsbnIpfDAsUz0oUz1TK01hdGguaW11bCh5dCx3bil8MCkrTWF0aC5pbXVsKHB0LG5yKXwwLEY9RitNYXRoLmltdWwocHQsd24pfDAsVD1UK01hdGguaW11bChR''@;'; put 'put ''ZSxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKFFlLGduKXwwKStNYXRoLmltdWwoJGUsWXQpfDAsRj1GK01hdGguaW11bCgkZSxnbil8MDt2YXIgb3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVnQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxzbil8MCkrTWF0aC5pbXVsKERlLFZ0''@;'; put 'put ''KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHNuKXwwKSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoQ3QsTm4pLFM9KFM9TWF0aC5pbXVsKEN0LGtuKSkrTWF0aC5pbXVsKGN0LE5uKXwwLEY9TWF0aC5pbXVsKGN0LGtuKSxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKHFlLHVyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsWG4pfDApK01hdGguaW11bChvdCx1cil8MCxGPUYrTWF0aC5pbXVsKG90LFhuKXwwLFQ9VCtNYXRoLmltdWwob24seHIpfDAsUz0oUz1TK01hdGguaW11bChvbixlbil8MCkrTWF0aC5pbXVsKF90LHhyKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwoX3QsZW4pfDAsVD1UK01hdGguaW11bCh2dCxucil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHduKXwwKStNYXRoLmltdWwoZnQsbnIpfDAsRj1GK01hdGguaW11bChmdCx3bil8MCxUPVQrTWF0aC5pbXVsKHl0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoeXQsZ24pfDApK01hdGguaW11bChw''@;'; put 'put ''dCxZdCl8MCxGPUYrTWF0aC5pbXVsKHB0LGduKXwwLFQ9VCtNYXRoLmltdWwoUWUsVnQpfDAsUz0oUz1TK01hdGguaW11bChRZSxzbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwLEY9RitNYXRoLmltdWwoJGUsc24pfDA7dmFyIGdyPShWKyhUPVQrTWF0aC5pbXVsKENlLF9uKXwwKXwwKSsoKDgx''@;'; put 'put ''OTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdG4pfDApK01hdGguaW11bChEZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx0bil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHplLE5uKSxTPShTPU1hdGguaW11bCh6ZSxrbikp''@;'; put 'put ''K01hdGguaW11bChZZSxObil8MCxGPU1hdGguaW11bChZZSxrbiksVD1UK01hdGguaW11bChDdCx1cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LFhuKXwwKStNYXRoLmltdWwoY3QsdXIpfDAsRj1GK01hdGguaW11bChjdCxYbil8MCxUPVQrTWF0aC5pbXVsKHFlLHhyKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwocWUsZW4pfDApK01hdGguaW11bChvdCx4cil8MCxGPUYrTWF0aC5pbXVsKG90LGVuKXwwLFQ9VCtNYXRoLmltdWwob24sbnIpfDAsUz0oUz1TK01hdGguaW11bChvbix3bil8MCkrTWF0aC5pbXVsKF90LG5yKXwwLEY9RitNYXRoLmltdWwoX3Qsd24pfDAsVD1UK01hdGguaW11bCh2''@;'; put 'put ''dCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LGduKXwwKStNYXRoLmltdWwoZnQsWXQpfDAsRj1GK01hdGguaW11bChmdCxnbil8MCxUPVQrTWF0aC5pbXVsKHl0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoeXQsc24pfDApK01hdGguaW11bChwdCxWdCl8MCxGPUYrTWF0aC5pbXVsKHB0LHNu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoUWUsX24pfDAsUz0oUz1TK01hdGguaW11bChRZSx0bil8MCkrTWF0aC5pbXVsKCRlLF9uKXwwLEY9RitNYXRoLmltdWwoJGUsdG4pfDA7dmFyIEpyPShWKyhUPVQrTWF0aC5pbXVsKENlLFRyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsUG4p''@;'; put 'put ''fDApK01hdGguaW11bChEZSxUcil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxQbil8MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGp0LE5uKSxTPShTPU1hdGguaW11bChqdCxrbikpK01hdGguaW11bChKdCxObil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChKdCxrbiksVD1UK01hdGguaW11bCh6ZSx1cil8MCxTPShTPVMrTWF0aC5pbXVsKHplLFhuKXwwKStNYXRoLmltdWwoWWUsdXIpfDAsRj1GK01hdGguaW11bChZZSxYbil8MCxUPVQrTWF0aC5pbXVsKEN0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsZW4pfDApK01hdGguaW11bChj''@;'; put 'put ''dCx4cil8MCxGPUYrTWF0aC5pbXVsKGN0LGVuKXwwLFQ9VCtNYXRoLmltdWwocWUsbnIpfDAsUz0oUz1TK01hdGguaW11bChxZSx3bil8MCkrTWF0aC5pbXVsKG90LG5yKXwwLEY9RitNYXRoLmltdWwob3Qsd24pfDAsVD1UK01hdGguaW11bChvbixZdCl8MCxTPShTPVMrTWF0aC5pbXVsKG9u''@;'; put 'put ''LGduKXwwKStNYXRoLmltdWwoX3QsWXQpfDAsRj1GK01hdGguaW11bChfdCxnbil8MCxUPVQrTWF0aC5pbXVsKHZ0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwodnQsc24pfDApK01hdGguaW11bChmdCxWdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHNuKXwwLFQ9VCtNYXRoLmltdWwoeXQsX24pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bCh5dCx0bil8MCkrTWF0aC5pbXVsKHB0LF9uKXwwLEY9RitNYXRoLmltdWwocHQsdG4pfDAsVD1UK01hdGguaW11bChRZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLFBuKXwwKStNYXRoLmltdWwoJGUsVHIpfDAsRj1GK01hdGguaW11bCgkZSxQbil8MDt2YXIg''@;'; put 'put ''VnI9KFYrKFQ9VCtNYXRoLmltdWwoQ2Usdm4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSx1bil8MCkrTWF0aC5pbXVsKERlLHZuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1N''@;'; put 'put ''YXRoLmltdWwocG4sTm4pLFM9KFM9TWF0aC5pbXVsKHBuLGtuKSkrTWF0aC5pbXVsKGJuLE5uKXwwLEY9TWF0aC5pbXVsKGJuLGtuKSxUPVQrTWF0aC5pbXVsKGp0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsWG4pfDApK01hdGguaW11bChKdCx1cil8MCxGPUYrTWF0aC5pbXVsKEp0LFhu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoemUseHIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxlbil8MCkrTWF0aC5pbXVsKFllLHhyKXwwLEY9RitNYXRoLmltdWwoWWUsZW4pfDAsVD1UK01hdGguaW11bChDdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHduKXwwKStNYXRoLmltdWwoY3QsbnIpfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChjdCx3bil8MCxUPVQrTWF0aC5pbXVsKHFlLFl0KXwwLFM9KFM9UytNYXRoLmltdWwocWUsZ24pfDApK01hdGguaW11bChvdCxZdCl8MCxGPUYrTWF0aC5pbXVsKG90LGduKXwwLFQ9VCtNYXRoLmltdWwob24sVnQpfDAsUz0oUz1TK01hdGguaW11bChvbixzbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKF90LFZ0KXwwLEY9RitNYXRoLmltdWwoX3Qsc24pfDAsVD1UK01hdGguaW11bCh2dCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHRuKXwwKStNYXRoLmltdWwoZnQsX24pfDAsRj1GK01hdGguaW11bChmdCx0bil8MCxUPVQrTWF0aC5pbXVsKHl0LFRyKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoeXQsUG4pfDApK01hdGguaW11bChwdCxUcil8MCxGPUYrTWF0aC5pbXVsKHB0LFBuKXwwLFQ9VCtNYXRoLmltdWwoUWUsdm4pfDAsUz0oUz1TK01hdGguaW11bChRZSx1bil8MCkrTWF0aC5pbXVsKCRlLHZuKXwwLEY9RitNYXRoLmltdWwoJGUsdW4pfDA7dmFyIHRpPShWKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKENlLFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsR3QpfDApK01hdGguaW11bChEZSxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVs''@;'; put 'put ''KHBuLHVyKSxTPShTPU1hdGguaW11bChwbixYbikpK01hdGguaW11bChibix1cil8MCxGPU1hdGguaW11bChibixYbiksVD1UK01hdGguaW11bChqdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LGVuKXwwKStNYXRoLmltdWwoSnQseHIpfDAsRj1GK01hdGguaW11bChKdCxlbil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKHplLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoemUsd24pfDApK01hdGguaW11bChZZSxucil8MCxGPUYrTWF0aC5pbXVsKFllLHduKXwwLFQ9VCtNYXRoLmltdWwoQ3QsWXQpfDAsUz0oUz1TK01hdGguaW11bChDdCxnbil8MCkrTWF0aC5pbXVsKGN0LFl0KXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoY3QsZ24pfDAsVD1UK01hdGguaW11bChxZSxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHNuKXwwKStNYXRoLmltdWwob3QsVnQpfDAsRj1GK01hdGguaW11bChvdCxzbil8MCxUPVQrTWF0aC5pbXVsKG9uLF9uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdG4pfDApK01hdGguaW11''@;'; put 'put ''bChfdCxfbil8MCxGPUYrTWF0aC5pbXVsKF90LHRuKXwwLFQ9VCtNYXRoLmltdWwodnQsVHIpfDAsUz0oUz1TK01hdGguaW11bCh2dCxQbil8MCkrTWF0aC5pbXVsKGZ0LFRyKXwwLEY9RitNYXRoLmltdWwoZnQsUG4pfDAsVD1UK01hdGguaW11bCh5dCx2bil8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KHl0LHVuKXwwKStNYXRoLmltdWwocHQsdm4pfDAsRj1GK01hdGguaW11bChwdCx1bil8MDt2YXIgT3I9KFYrKFQ9VCtNYXRoLmltdWwoUWUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChRZSxHdCl8MCkrTWF0aC5pbXVsKCRlLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0''@;'; put 'put ''aC5pbXVsKCRlLEd0KXwwKSsoUz4+PjEzKXwwKSsoT3I+Pj4yNil8MCxPciY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4seHIpLFM9KFM9TWF0aC5pbXVsKHBuLGVuKSkrTWF0aC5pbXVsKGJuLHhyKXwwLEY9TWF0aC5pbXVsKGJuLGVuKSxUPVQrTWF0aC5pbXVsKGp0LG5yKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoanQsd24pfDApK01hdGguaW11bChKdCxucil8MCxGPUYrTWF0aC5pbXVsKEp0LHduKXwwLFQ9VCtNYXRoLmltdWwoemUsWXQpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxnbil8MCkrTWF0aC5pbXVsKFllLFl0KXwwLEY9RitNYXRoLmltdWwoWWUsZ24pfDAsVD1UK01hdGguaW11''@;'; put 'put ''bChDdCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHNuKXwwKStNYXRoLmltdWwoY3QsVnQpfDAsRj1GK01hdGguaW11bChjdCxzbil8MCxUPVQrTWF0aC5pbXVsKHFlLF9uKXwwLFM9KFM9UytNYXRoLmltdWwocWUsdG4pfDApK01hdGguaW11bChvdCxfbil8MCxGPUYrTWF0aC5pbXVsKG90''@;'; put 'put ''LHRuKXwwLFQ9VCtNYXRoLmltdWwob24sVHIpfDAsUz0oUz1TK01hdGguaW11bChvbixQbil8MCkrTWF0aC5pbXVsKF90LFRyKXwwLEY9RitNYXRoLmltdWwoX3QsUG4pfDAsVD1UK01hdGguaW11bCh2dCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHVuKXwwKStNYXRoLmltdWwoZnQsdm4p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChmdCx1bil8MDt2YXIgbGk9KFYrKFQ9VCtNYXRoLmltdWwoeXQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCh5dCxHdCl8MCkrTWF0aC5pbXVsKHB0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKHB0LEd0KXwwKSsoUz4+PjEzKXww''@;'; put 'put ''KSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sbnIpLFM9KFM9TWF0aC5pbXVsKHBuLHduKSkrTWF0aC5pbXVsKGJuLG5yKXwwLEY9TWF0aC5pbXVsKGJuLHduKSxUPVQrTWF0aC5pbXVsKGp0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoanQsZ24pfDApK01hdGguaW11''@;'; put 'put ''bChKdCxZdCl8MCxGPUYrTWF0aC5pbXVsKEp0LGduKXwwLFQ9VCtNYXRoLmltdWwoemUsVnQpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxzbil8MCkrTWF0aC5pbXVsKFllLFZ0KXwwLEY9RitNYXRoLmltdWwoWWUsc24pfDAsVD1UK01hdGguaW11bChDdCxfbil8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KEN0LHRuKXwwKStNYXRoLmltdWwoY3QsX24pfDAsRj1GK01hdGguaW11bChjdCx0bil8MCxUPVQrTWF0aC5pbXVsKHFlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsUG4pfDApK01hdGguaW11bChvdCxUcil8MCxGPUYrTWF0aC5pbXVsKG90LFBuKXwwLFQ9VCtNYXRoLmltdWwob24sdm4p''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChvbix1bil8MCkrTWF0aC5pbXVsKF90LHZuKXwwLEY9RitNYXRoLmltdWwoX3QsdW4pfDA7dmFyIElpPShWKyhUPVQrTWF0aC5pbXVsKHZ0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwodnQsR3QpfDApK01hdGguaW11bChmdCxTbil8MCkp''@;'; put 'put ''PDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChmdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKElpPj4+MjYpfDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLFl0KSxTPShTPU1hdGguaW11bChwbixnbikpK01hdGguaW11bChibixZdCl8MCxGPU1hdGguaW11bChibixnbiksVD1UK01hdGguaW11''@;'; put 'put ''bChqdCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHNuKXwwKStNYXRoLmltdWwoSnQsVnQpfDAsRj1GK01hdGguaW11bChKdCxzbil8MCxUPVQrTWF0aC5pbXVsKHplLF9uKXwwLFM9KFM9UytNYXRoLmltdWwoemUsdG4pfDApK01hdGguaW11bChZZSxfbil8MCxGPUYrTWF0aC5pbXVsKFll''@;'; put 'put ''LHRuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsVHIpfDAsUz0oUz1TK01hdGguaW11bChDdCxQbil8MCkrTWF0aC5pbXVsKGN0LFRyKXwwLEY9RitNYXRoLmltdWwoY3QsUG4pfDAsVD1UK01hdGguaW11bChxZSx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHVuKXwwKStNYXRoLmltdWwob3Qsdm4p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChvdCx1bil8MDt2YXIgcjA9KFYrKFQ9VCtNYXRoLmltdWwob24sU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChvbixHdCl8MCkrTWF0aC5pbXVsKF90LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKF90LEd0KXwwKSsoUz4+PjEzKXww''@;'; put 'put ''KSsocjA+Pj4yNil8MCxyMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sVnQpLFM9KFM9TWF0aC5pbXVsKHBuLHNuKSkrTWF0aC5pbXVsKGJuLFZ0KXwwLEY9TWF0aC5pbXVsKGJuLHNuKSxUPVQrTWF0aC5pbXVsKGp0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdG4pfDApK01hdGguaW11''@;'; put 'put ''bChKdCxfbil8MCxGPUYrTWF0aC5pbXVsKEp0LHRuKXwwLFQ9VCtNYXRoLmltdWwoemUsVHIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxQbil8MCkrTWF0aC5pbXVsKFllLFRyKXwwLEY9RitNYXRoLmltdWwoWWUsUG4pfDAsVD1UK01hdGguaW11bChDdCx2bil8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KEN0LHVuKXwwKStNYXRoLmltdWwoY3Qsdm4pfDAsRj1GK01hdGguaW11bChjdCx1bil8MDt2YXIgZTA9KFYrKFQ9VCtNYXRoLmltdWwocWUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChxZSxHdCl8MCkrTWF0aC5pbXVsKG90LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0''@;'; put 'put ''aC5pbXVsKG90LEd0KXwwKSsoUz4+PjEzKXwwKSsoZTA+Pj4yNil8MCxlMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sX24pLFM9KFM9TWF0aC5pbXVsKHBuLHRuKSkrTWF0aC5pbXVsKGJuLF9uKXwwLEY9TWF0aC5pbXVsKGJuLHRuKSxUPVQrTWF0aC5pbXVsKGp0LFRyKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoanQsUG4pfDApK01hdGguaW11bChKdCxUcil8MCxGPUYrTWF0aC5pbXVsKEp0LFBuKXwwLFQ9VCtNYXRoLmltdWwoemUsdm4pfDAsUz0oUz1TK01hdGguaW11bCh6ZSx1bil8MCkrTWF0aC5pbXVsKFllLHZuKXwwLEY9RitNYXRoLmltdWwoWWUsdW4pfDA7dmFyIGQwPShWKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKEN0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ3QsR3QpfDApK01hdGguaW11bChjdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChjdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVs''@;'; put 'put ''KHBuLFRyKSxTPShTPU1hdGguaW11bChwbixQbikpK01hdGguaW11bChibixUcil8MCxGPU1hdGguaW11bChibixQbiksVD1UK01hdGguaW11bChqdCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHVuKXwwKStNYXRoLmltdWwoSnQsdm4pfDAsRj1GK01hdGguaW11bChKdCx1bil8MDt2YXIg''@;'; put 'put ''XzA9KFYrKFQ9VCtNYXRoLmltdWwoemUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCh6ZSxHdCl8MCkrTWF0aC5pbXVsKFllLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKFllLEd0KXwwKSsoUz4+PjEzKXwwKSsoXzA+Pj4yNil8MCxfMCY9NjcxMDg4NjMsVD1N''@;'; put 'put ''YXRoLmltdWwocG4sdm4pLFM9KFM9TWF0aC5pbXVsKHBuLHVuKSkrTWF0aC5pbXVsKGJuLHZuKXwwLEY9TWF0aC5pbXVsKGJuLHVuKTt2YXIgVTA9KFYrKFQ9VCtNYXRoLmltdWwoanQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChqdCxHdCl8MCkrTWF0aC5pbXVsKEp0LFNu''@;'; put 'put ''KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKEp0LEd0KXwwKSsoUz4+PjEzKXwwKSsoVTA+Pj4yNil8MCxVMCY9NjcxMDg4NjM7dmFyIEJpPShWKyhUPU1hdGguaW11bChwbixTbikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwocG4sR3QpKStNYXRoLmltdWwoYm4sU24pfDApKTw8''@;'; put 'put ''MTMpfDA7cmV0dXJuIFY9KChGPU1hdGguaW11bChibixHdCkpKyhTPj4+MTMpfDApKyhCaT4+PjI2KXwwLEJpJj02NzEwODg2MyxQWzBdPUVuLFBbMV09am4sUFsyXT1xdCxQWzNdPUxuLFBbNF09Sm4sUFs1XT1vcixQWzZdPWdyLFBbN109SnIsUFs4XT1WcixQWzldPXRpLFBbMTBdPU9yLFBb''@;'; put 'put ''MTFdPWxpLFBbMTJdPUlpLFBbMTNdPXIwLFBbMTRdPWUwLFBbMTVdPWQwLFBbMTZdPV8wLFBbMTddPVUwLFBbMThdPUJpLDAhPT1WJiYoUFsxOV09VixuZS5sZW5ndGgrKyksbmV9O2Z1bmN0aW9uIGFlKGhlLE8seil7cmV0dXJuKG5ldyBmZSkubXVscChoZSxPLHopfWZ1bmN0aW9uIGZlKGhl''@;'; put 'put ''LE8pe3RoaXMueD1oZSx0aGlzLnk9T31NYXRoLmltdWx8fChKPXEpLFUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKE8seil7dmFyIG5lLHRlPXRoaXMubGVuZ3RoK08ubGVuZ3RoO3JldHVybiBuZT0xMD09PXRoaXMubGVuZ3RoJiYxMD09PU8ubGVuZ3RoP0oodGhpcyxPLHopOnRlPDYzP3Eo''@;'; put 'put ''dGhpcyxPLHopOnRlPDEwMjQ/ZnVuY3Rpb24gc2UoaGUsTyx6KXt6Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeaGUubmVnYXRpdmUsei5sZW5ndGg9aGUubGVuZ3RoK08ubGVuZ3RoO2Zvcih2YXIgbmU9MCx0ZT0wLHg9MDt4PHoubGVuZ3RoLTE7eCsrKXt2YXIgUD10ZTt0ZT0wO2Zvcih2YXIgVj02''@;'; put 'put ''NzEwODg2MyZuZSxUPU1hdGgubWluKHgsTy5sZW5ndGgtMSksUz1NYXRoLm1heCgwLHgtaGUubGVuZ3RoKzEpO1M8PVQ7UysrKXt2YXIgRGU9KDB8aGUud29yZHNbeC1TXSkqKDB8Ty53b3Jkc1tTXSksUGU9NjcxMDg4NjMmRGU7Vj02NzEwODg2MyYoUGU9UGUrVnwwKSx0ZSs9KFA9KFA9UCso''@;'; put 'put ''RGUvNjcxMDg4NjR8MCl8MCkrKFBlPj4+MjYpfDApPj4+MjYsUCY9NjcxMDg4NjN9ei53b3Jkc1t4XT1WLG5lPVAsUD10ZX1yZXR1cm4gMCE9PW5lP3oud29yZHNbeF09bmU6ei5sZW5ndGgtLSx6LnN0cmlwKCl9KHRoaXMsTyx6KTphZSh0aGlzLE8seiksbmV9LGZlLnByb3RvdHlwZS5tYWtl''@;'; put 'put ''UkJUPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyksbmU9VS5wcm90b3R5cGUuX2NvdW50Qml0cyhPKS0xLHRlPTA7dGU8Tzt0ZSsrKXpbdGVdPXRoaXMucmV2QmluKHRlLG5lLE8pO3JldHVybiB6fSxmZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKE8seixuZSl7aWYoMD09''@;'; put 'put ''PU98fE89PT1uZS0xKXJldHVybiBPO2Zvcih2YXIgdGU9MCx4PTA7eDx6O3grKyl0ZXw9KDEmTyk8PHoteC0xLE8+Pj0xO3JldHVybiB0ZX0sZmUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCl7Zm9yKHZhciBWPTA7VjxQO1YrKyl0ZVtWXT16W09bVl1dLHhbVl09''@;'; put 'put ''bmVbT1tWXV19LGZlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCl7dGhpcy5wZXJtdXRlKFAsTyx6LG5lLHRlLHgpO2Zvcih2YXIgVj0xO1Y8eDtWPDw9MSlmb3IodmFyIFQ9Vjw8MSxTPU1hdGguY29zKDIqTWF0aC5QSS9UKSxGPU1hdGguc2luKDIqTWF0aC5Q''@;'; put 'put ''SS9UKSx5ZT0wO3llPHg7eWUrPVQpZm9yKHZhciBDZT1TLERlPUYsUGU9MDtQZTxWO1BlKyspe3ZhciBRZT1uZVt5ZStQZV0sJGU9dGVbeWUrUGVdLGd0PW5lW3llK1BlK1ZdLHl0PXRlW3llK1BlK1ZdLHB0PUNlKmd0LURlKnl0O3l0PUNlKnl0K0RlKmd0LG5lW3llK1BlXT1RZSsoZ3Q9cHQp''@;'; put 'put ''LHRlW3llK1BlXT0kZSt5dCxuZVt5ZStQZStWXT1RZS1ndCx0ZVt5ZStQZStWXT0kZS15dCxQZSE9PVQmJihwdD1TKkNlLUYqRGUsRGU9UypEZStGKkNlLENlPXB0KX19LGZlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihPLHope3ZhciBuZT0xfE1hdGgubWF4KHosTyksdGU9MSZu''@;'; put 'put ''ZSx4PTA7Zm9yKG5lPW5lLzJ8MDtuZTtuZT4+Pj0xKXgrKztyZXR1cm4gMTw8eCsxK3RlfSxmZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKE8seixuZSl7aWYoIShuZTw9MSkpZm9yKHZhciB0ZT0wO3RlPG5lLzI7dGUrKyl7dmFyIHg9T1t0ZV07T1t0ZV09T1tuZS10ZS0xXSxPW25l''@;'; put 'put ''LXRlLTFdPXgseD16W3RlXSx6W3RlXT0teltuZS10ZS0xXSx6W25lLXRlLTFdPS14fX0sZmUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihPLHope2Zvcih2YXIgbmU9MCx0ZT0wO3RlPHovMjt0ZSsrKXt2YXIgeD04MTkyKk1hdGgucm91bmQoT1syKnRlKzFdL3opK01hdGgucm91''@;'; put 'put ''bmQoT1syKnRlXS96KStuZTtPW3RlXT02NzEwODg2MyZ4LG5lPXg8NjcxMDg4NjQ/MDp4LzY3MTA4ODY0fDB9cmV0dXJuIE99LGZlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKE8seixuZSx0ZSl7Zm9yKHZhciB4PTAsUD0wO1A8ejtQKyspbmVbMipQXT04MTkxJih4Kz0wfE9bUF0p''@;'; put 'put ''LG5lWzIqUCsxXT04MTkxJih4Pj4+PTEzKSx4Pj4+PTEzO2ZvcihQPTIqejtQPHRlOysrUCluZVtQXT0wO0UoMD09PXgpLEUoMD09KC04MTkyJngpKX0sZmUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxuZT0wO25lPE87bmUrKyl6W25lXT0wO3Jl''@;'; put 'put ''dHVybiB6fSxmZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZT0yKnRoaXMuZ3Vlc3NMZW4xM2IoTy5sZW5ndGgsei5sZW5ndGgpLHg9dGhpcy5tYWtlUkJUKHRlKSxQPXRoaXMuc3R1Yih0ZSksVj1uZXcgQXJyYXkodGUpLFQ9bmV3IEFycmF5KHRlKSxTPW5ldyBBcnJh''@;'; put 'put ''eSh0ZSksRj1uZXcgQXJyYXkodGUpLHllPW5ldyBBcnJheSh0ZSksQ2U9bmV3IEFycmF5KHRlKSxEZT1uZS53b3JkcztEZS5sZW5ndGg9dGUsdGhpcy5jb252ZXJ0MTNiKE8ud29yZHMsTy5sZW5ndGgsVix0ZSksdGhpcy5jb252ZXJ0MTNiKHoud29yZHMsei5sZW5ndGgsRix0ZSksdGhpcy50''@;'; put 'put ''cmFuc2Zvcm0oVixQLFQsUyx0ZSx4KSx0aGlzLnRyYW5zZm9ybShGLFAseWUsQ2UsdGUseCk7Zm9yKHZhciBQZT0wO1BlPHRlO1BlKyspe3ZhciBRZT1UW1BlXSp5ZVtQZV0tU1tQZV0qQ2VbUGVdO1NbUGVdPVRbUGVdKkNlW1BlXStTW1BlXSp5ZVtQZV0sVFtQZV09UWV9cmV0dXJuIHRoaXMu''@;'; put 'put ''Y29uanVnYXRlKFQsUyx0ZSksdGhpcy50cmFuc2Zvcm0oVCxTLERlLFAsdGUseCksdGhpcy5jb25qdWdhdGUoRGUsUCx0ZSksdGhpcy5ub3JtYWxpemUxM2IoRGUsdGUpLG5lLm5lZ2F0aXZlPU8ubmVnYXRpdmVeei5uZWdhdGl2ZSxuZS5sZW5ndGg9Ty5sZW5ndGgrei5sZW5ndGgsbmUuc3Ry''@;'; put 'put ''aXAoKX0sVS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8pe3ZhciB6PW5ldyBVKG51bGwpO3JldHVybiB6LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtPLmxlbmd0aCksdGhpcy5tdWxUbyhPLHopfSxVLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKE8pe3ZhciB6PW5ldyBVKG51bGwpO3Jl''@;'; put 'put ''dHVybiB6LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtPLmxlbmd0aCksYWUodGhpcyxPLHopfSxVLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oTyx0aGlzKX0sVS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIE8pLEUoTzw2NzEwODg2NCk7Zm9yKHZhciB6PTAsbmU9MDtuZTx0aGlzLmxlbmd0aDtuZSsrKXt2YXIgdGU9KDB8dGhpcy53b3Jkc1tuZV0pKk8seD0oNjcxMDg4NjMmdGUpKyg2NzEwODg2MyZ6KTt6Pj49MjYseis9dGUvNjcxMDg4NjR8MCx6Kz14Pj4+MjYsdGhpcy53b3Jkc1tu''@;'; put 'put ''ZV09NjcxMDg4NjMmeH1yZXR1cm4gMCE9PXomJih0aGlzLndvcmRzW25lXT16LHRoaXMubGVuZ3RoKyspLHRoaXN9LFUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihPKX0sVS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''bXVsKHRoaXMpfSxVLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxVLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyl7dmFyIHo9ZnVuY3Rpb24gZWUoaGUpe2Zvcih2YXIgTz1uZXcgQXJyYXkoaGUuYml0TGVuZ3RoKCkpLHo9MDt6PE8u''@;'; put 'put ''bGVuZ3RoO3orKyl7dmFyIHRlPXolMjY7T1t6XT0oaGUud29yZHNbei8yNnwwXSYxPDx0ZSk+Pj50ZX1yZXR1cm4gT30oTyk7aWYoMD09PXoubGVuZ3RoKXJldHVybiBuZXcgVSgxKTtmb3IodmFyIG5lPXRoaXMsdGU9MDt0ZTx6Lmxlbmd0aCYmMD09PXpbdGVdO3RlKyssbmU9bmUuc3FyKCkp''@;'; put 'put ''O2lmKCsrdGU8ei5sZW5ndGgpZm9yKHZhciB4PW5lLnNxcigpO3RlPHoubGVuZ3RoO3RlKysseD14LnNxcigpKTAhPT16W3RlXSYmKG5lPW5lLm11bCh4KSk7cmV0dXJuIG5lfSxVLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB4''@;'; put 'put ''LHo9TyUyNixuZT0oTy16KS8yNix0ZT02NzEwODg2Mz4+PjI2LXo8PDI2LXo7aWYoMCE9PXope3ZhciBQPTA7Zm9yKHg9MDt4PHRoaXMubGVuZ3RoO3grKyl7dmFyIFY9dGhpcy53b3Jkc1t4XSZ0ZTt0aGlzLndvcmRzW3hdPSgwfHRoaXMud29yZHNbeF0pLVY8PHp8UCxQPVY+Pj4yNi16fVAm''@;'; put 'put ''Jih0aGlzLndvcmRzW3hdPVAsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PW5lKXtmb3IoeD10aGlzLmxlbmd0aC0xO3g+PTA7eC0tKXRoaXMud29yZHNbeCtuZV09dGhpcy53b3Jkc1t4XTtmb3IoeD0wO3g8bmU7eCsrKXRoaXMud29yZHNbeF09MDt0aGlzLmxlbmd0aCs9bmV9cmV0dXJuIHRoaXMu''@;'; put 'put ''c3RyaXAoKX0sVS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKE8pfSxVLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oTyx6LG5lKXt2YXIgdGU7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApLHRlPXo/KHoteiUy''@;'; put 'put ''NikvMjY6MDt2YXIgeD1PJTI2LFA9TWF0aC5taW4oKE8teCkvMjYsdGhpcy5sZW5ndGgpLFY9NjcxMDg4NjNeNjcxMDg4NjM+Pj54PDx4LFQ9bmU7aWYodGUtPVAsdGU9TWF0aC5tYXgoMCx0ZSksVCl7Zm9yKHZhciBTPTA7UzxQO1MrKylULndvcmRzW1NdPXRoaXMud29yZHNbU107VC5sZW5n''@;'; put 'put ''dGg9UH1pZigwIT09UClpZih0aGlzLmxlbmd0aD5QKWZvcih0aGlzLmxlbmd0aC09UCxTPTA7Uzx0aGlzLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT10aGlzLndvcmRzW1MrUF07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgRj0wO2ZvcihTPXRoaXMubGVuZ3RoLTE7''@;'; put 'put ''Uz49MCYmKDAhPT1GfHxTPj10ZSk7Uy0tKXt2YXIgeWU9MHx0aGlzLndvcmRzW1NdO3RoaXMud29yZHNbU109Rjw8MjYteHx5ZT4+PngsRj15ZSZWfXJldHVybiBUJiYwIT09RiYmKFQud29yZHNbVC5sZW5ndGgrK109RiksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMu''@;'; put 'put ''bGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oTyx6LG5lKXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oTyx6LG5lKX0sVS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKE8p''@;'; put 'put ''fSxVLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihPKX0sVS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKE8pfSxVLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''bG9uZSgpLml1c2hybihPKX0sVS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PU8lMjYsbmU9KE8teikvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9bmV8fCEodGhpcy53b3Jkc1tuZV0mMTw8eikpfSxVLnByb3RvdHlwZS5pbWFz''@;'; put 'put ''a249ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PU8lMjYsbmU9KE8teikvMjY7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1uZT90aGlzOigwIT09eiYm''@;'; put 'put ''bmUrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihuZSx0aGlzLmxlbmd0aCksMCE9PXomJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+Pno8PHopLHRoaXMuc3RyaXAoKSl9LFUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25l''@;'; put 'put ''KCkuaW1hc2tuKE8pfSxVLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihPKXtyZXR1cm4gRSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCksTzwwP3RoaXMuaXN1Ym4oLU8pOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Tz8odGhp''@;'; put 'put ''cy53b3Jkc1swXT1PLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKE8pfSxVLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oTyl7dGhpcy53b3Jkc1sw''@;'; put 'put ''XSs9Tztmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3pdPj02NzEwODg2NDt6KyspdGhpcy53b3Jkc1t6XS09NjcxMDg4NjQsej09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1t6KzFdPTE6dGhpcy53b3Jkc1t6KzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4''@;'; put 'put ''KHRoaXMubGVuZ3RoLHorMSksdGhpc30sVS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oTyl7aWYoRSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCksTzwwKXJldHVybiB0aGlzLmlhZGRuKC1PKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRo''@;'; put 'put ''aXMuaWFkZG4oTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09TywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgej0wO3o8dGhpcy5sZW5ndGgmJnRo''@;'; put 'put ''aXMud29yZHNbel08MDt6KyspdGhpcy53b3Jkc1t6XSs9NjcxMDg4NjQsdGhpcy53b3Jkc1t6KzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihPKX0sVS5wcm90b3R5cGUuc3Vibj1mdW5jdGlv''@;'; put 'put ''bihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKE8pfSxVLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxVLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sVS5wcm90b3R5cGUuX2lzaGxu''@;'; put 'put ''c3VibXVsPWZ1bmN0aW9uKE8seixuZSl7dmFyIHg7dGhpcy5fZXhwYW5kKE8ubGVuZ3RoK25lKTt2YXIgUCxWPTA7Zm9yKHg9MDt4PE8ubGVuZ3RoO3grKyl7UD0oMHx0aGlzLndvcmRzW3grbmVdKStWO3ZhciBUPSgwfE8ud29yZHNbeF0pKno7Vj0oKFAtPTY3MTA4ODYzJlQpPj4yNiktKFQv''@;'; put 'put ''NjcxMDg4NjR8MCksdGhpcy53b3Jkc1t4K25lXT02NzEwODg2MyZQfWZvcig7eDx0aGlzLmxlbmd0aC1uZTt4KyspVj0oUD0oMHx0aGlzLndvcmRzW3grbmVdKStWKT4+MjYsdGhpcy53b3Jkc1t4K25lXT02NzEwODg2MyZQO2lmKDA9PT1WKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKEUoLTE9''@;'; put 'put ''PT1WKSxWPTAseD0wO3g8dGhpcy5sZW5ndGg7eCsrKVY9KFA9LSgwfHRoaXMud29yZHNbeF0pK1YpPj4yNix0aGlzLndvcmRzW3hdPTY3MTA4ODYzJlA7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKE8seil7dmFyIG5l''@;'; put 'put ''LHRlPXRoaXMuY2xvbmUoKSx4PU8sUD0wfHgud29yZHNbeC5sZW5ndGgtMV07MCE9KG5lPTI2LXRoaXMuX2NvdW50Qml0cyhQKSkmJih4PXgudXNobG4obmUpLHRlLml1c2hsbihuZSksUD0wfHgud29yZHNbeC5sZW5ndGgtMV0pO3ZhciBTLFQ9dGUubGVuZ3RoLXgubGVuZ3RoO2lmKCJtb2Qi''@;'; put 'put ''IT09eil7KFM9bmV3IFUobnVsbCkpLmxlbmd0aD1UKzEsUy53b3Jkcz1uZXcgQXJyYXkoUy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8Uy5sZW5ndGg7RisrKVMud29yZHNbRl09MH12YXIgeWU9dGUuY2xvbmUoKS5faXNobG5zdWJtdWwoeCwxLFQpOzA9PT15ZS5uZWdhdGl2ZSYmKHRlPXllLFMm''@;'; put 'put ''JihTLndvcmRzW1RdPTEpKTtmb3IodmFyIENlPVQtMTtDZT49MDtDZS0tKXt2YXIgRGU9NjcxMDg4NjQqKDB8dGUud29yZHNbeC5sZW5ndGgrQ2VdKSsoMHx0ZS53b3Jkc1t4Lmxlbmd0aCtDZS0xXSk7Zm9yKERlPU1hdGgubWluKERlL1B8MCw2NzEwODg2MyksdGUuX2lzaGxuc3VibXVsKHgs''@;'; put 'put ''RGUsQ2UpOzAhPT10ZS5uZWdhdGl2ZTspRGUtLSx0ZS5uZWdhdGl2ZT0wLHRlLl9pc2hsbnN1Ym11bCh4LDEsQ2UpLHRlLmlzWmVybygpfHwodGUubmVnYXRpdmVePTEpO1MmJihTLndvcmRzW0NlXT1EZSl9cmV0dXJuIFMmJlMuc3RyaXAoKSx0ZS5zdHJpcCgpLCJkaXYiIT09eiYmMCE9PW5l''@;'; put 'put ''JiZ0ZS5pdXNocm4obmUpLHtkaXY6U3x8bnVsbCxtb2Q6dGV9fSxVLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oTyx6LG5lKXtyZXR1cm4gRSghTy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBVKDApLG1vZDpuZXcgVSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5l''@;'; put 'put ''Z2F0aXZlPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8seiksIm1vZCIhPT16JiYodGU9UC5kaXYubmVnKCkpLCJkaXYiIT09eiYmKHg9UC5tb2QubmVnKCksbmUmJjAhPT14Lm5lZ2F0aXZlJiZ4LmlhZGQoTykpLHtkaXY6dGUsbW9kOnh9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRp''@;'; put 'put ''dmU/KFA9dGhpcy5kaXZtb2QoTy5uZWcoKSx6KSwibW9kIiE9PXomJih0ZT1QLmRpdi5uZWcoKSkse2Rpdjp0ZSxtb2Q6UC5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZPLm5lZ2F0aXZlKT8oUD10aGlzLm5lZygpLmRpdm1vZChPLm5lZygpLHopLCJkaXYiIT09eiYmKHg9UC5tb2QubmVnKCks''@;'; put 'put ''bmUmJjAhPT14Lm5lZ2F0aXZlJiZ4LmlzdWIoTykpLHtkaXY6UC5kaXYsbW9kOnh9KTpPLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoTyk8MD97ZGl2Om5ldyBVKDApLG1vZDp0aGlzfToxPT09Ty5sZW5ndGg/ImRpdiI9PT16P3tkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0pLG1vZDpu''@;'; put 'put ''dWxsfToibW9kIj09PXo/e2RpdjpudWxsLG1vZDpuZXcgVSh0aGlzLm1vZG4oTy53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihPLHopO3ZhciB0ZSx4LFB9LFUucHJvdG90eXBlLmRp''@;'; put 'put ''dj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywiZGl2IiwhMSkuZGl2fSxVLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITEpLm1vZH0sVS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywi''@;'; put 'put ''bW9kIiwhMCkubW9kfSxVLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihPKXt2YXIgej10aGlzLmRpdm1vZChPKTtpZih6Lm1vZC5pc1plcm8oKSlyZXR1cm4gei5kaXY7dmFyIG5lPTAhPT16LmRpdi5uZWdhdGl2ZT96Lm1vZC5pc3ViKE8pOnoubW9kLHRlPU8udXNocm4oMSkseD1PLmFu''@;'; put 'put ''ZGxuKDEpLFA9bmUuY21wKHRlKTtyZXR1cm4gUDwwfHwxPT09eCYmMD09PVA/ei5kaXY6MCE9PXouZGl2Lm5lZ2F0aXZlP3ouZGl2LmlzdWJuKDEpOnouZGl2LmlhZGRuKDEpfSxVLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0oMTw8MjYpJU8s''@;'; put 'put ''bmU9MCx0ZT10aGlzLmxlbmd0aC0xO3RlPj0wO3RlLS0pbmU9KHoqbmUrKDB8dGhpcy53b3Jkc1t0ZV0pKSVPO3JldHVybiBuZX0sVS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oTyl7RShPPD02NzEwODg2Myk7Zm9yKHZhciB6PTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKXt2YXIg''@;'; put 'put ''dGU9KDB8dGhpcy53b3Jkc1tuZV0pKzY3MTA4ODY0Kno7dGhpcy53b3Jkc1tuZV09dGUvT3wwLHo9dGUlT31yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oTyl9LFUucHJvdG90eXBlLmVnY2Q9ZnVuY3Rp''@;'; put 'put ''b24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1plcm8oKSk7dmFyIHo9dGhpcyxuZT1PLmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgdGU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPW5ldyBVKDApLFY9bmV3IFUoMSksVD0wO3ouaXNFdmVu''@;'; put 'put ''KCkmJm5lLmlzRXZlbigpOyl6Lml1c2hybigxKSxuZS5pdXNocm4oMSksKytUO2Zvcih2YXIgUz1uZS5jbG9uZSgpLEY9ei5jbG9uZSgpOyF6LmlzWmVybygpOyl7Zm9yKHZhciB5ZT0wLENlPTE7MD09KHoud29yZHNbMF0mQ2UpJiZ5ZTwyNjsrK3llLENlPDw9MSk7aWYoeWU+MClmb3Ioei5p''@;'; put 'put ''dXNocm4oeWUpO3llLS0gPjA7KSh0ZS5pc09kZCgpfHx4LmlzT2RkKCkpJiYodGUuaWFkZChTKSx4LmlzdWIoRikpLHRlLml1c2hybigxKSx4Lml1c2hybigxKTtmb3IodmFyIERlPTAsUGU9MTswPT0obmUud29yZHNbMF0mUGUpJiZEZTwyNjsrK0RlLFBlPDw9MSk7aWYoRGU+MClmb3IobmUu''@;'; put 'put ''aXVzaHJuKERlKTtEZS0tID4wOykoUC5pc09kZCgpfHxWLmlzT2RkKCkpJiYoUC5pYWRkKFMpLFYuaXN1YihGKSksUC5pdXNocm4oMSksVi5pdXNocm4oMSk7ei5jbXAobmUpPj0wPyh6LmlzdWIobmUpLHRlLmlzdWIoUCkseC5pc3ViKFYpKToobmUuaXN1Yih6KSxQLmlzdWIodGUpLFYuaXN1''@;'; put 'put ''Yih4KSl9cmV0dXJue2E6UCxiOlYsZ2NkOm5lLml1c2hsbihUKX19LFUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgeWUsej10aGlzLG5lPU8uY2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1vZChPKTp6LmNsb25l''@;'; put 'put ''KCk7Zm9yKHZhciB0ZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9bmUuY2xvbmUoKTt6LmNtcG4oMSk+MCYmbmUuY21wbigxKT4wOyl7Zm9yKHZhciBWPTAsVD0xOzA9PSh6LndvcmRzWzBdJlQpJiZWPDI2OysrVixUPDw9MSk7aWYoVj4wKWZvcih6Lml1c2hybihWKTtWLS0gPjA7KXRlLmlzT2Rk''@;'; put 'put ''KCkmJnRlLmlhZGQoUCksdGUuaXVzaHJuKDEpO2Zvcih2YXIgUz0wLEY9MTswPT0obmUud29yZHNbMF0mRikmJlM8MjY7KytTLEY8PD0xKTtpZihTPjApZm9yKG5lLml1c2hybihTKTtTLS0gPjA7KXguaXNPZGQoKSYmeC5pYWRkKFApLHguaXVzaHJuKDEpO3ouY21wKG5lKT49MD8oei5pc3Vi''@;'; put 'put ''KG5lKSx0ZS5pc3ViKHgpKToobmUuaXN1Yih6KSx4LmlzdWIodGUpKX1yZXR1cm4oeWU9MD09PXouY21wbigxKT90ZTp4KS5jbXBuKDApPDAmJnllLmlhZGQoTykseWV9LFUucHJvdG90eXBlLmdjZD1mdW5jdGlvbihPKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBPLmFicygpO2lmKE8uaXNa''@;'; put 'put ''ZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIHo9dGhpcy5jbG9uZSgpLG5lPU8uY2xvbmUoKTt6Lm5lZ2F0aXZlPTAsbmUubmVnYXRpdmU9MDtmb3IodmFyIHRlPTA7ei5pc0V2ZW4oKSYmbmUuaXNFdmVuKCk7dGUrKyl6Lml1c2hybigxKSxuZS5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO3ou''@;'; put 'put ''aXNFdmVuKCk7KXouaXVzaHJuKDEpO2Zvcig7bmUuaXNFdmVuKCk7KW5lLml1c2hybigxKTt2YXIgeD16LmNtcChuZSk7aWYoeDwwKXt2YXIgUD16O3o9bmUsbmU9UH1lbHNlIGlmKDA9PT14fHwwPT09bmUuY21wbigxKSlicmVhazt6LmlzdWIobmUpfXJldHVybiBuZS5pdXNobG4odGUpfSxV''@;'; put 'put ''LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmVnY2QoTykuYS51bW9kKE8pfSxVLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMu''@;'; put 'put ''d29yZHNbMF0pfSxVLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZPfSxVLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyk7dmFyIHo9TyUyNixuZT0oTy16KS8yNix0ZT0xPDx6O2lmKHRoaXMubGVuZ3RoPD1u''@;'; put 'put ''ZSlyZXR1cm4gdGhpcy5fZXhwYW5kKG5lKzEpLHRoaXMud29yZHNbbmVdfD10ZSx0aGlzO2Zvcih2YXIgeD10ZSxQPW5lOzAhPT14JiZQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9MHx0aGlzLndvcmRzW1BdO3g9KFYrPXgpPj4+MjYsdGhpcy53b3Jkc1tQXT1WJj02NzEwODg2M31yZXR1cm4g''@;'; put 'put ''MCE9PXgmJih0aGlzLndvcmRzW1BdPXgsdGhpcy5sZW5ndGgrKyksdGhpc30sVS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LFUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oTyl7dmFyIG5lLHo9TzwwO2lmKDAh''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlJiYheilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmeilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSluZT0xO2Vsc2V7eiYmKE89LU8pLEUoTzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHRlPTB8dGhpcy53b3Jk''@;'; put 'put ''c1swXTtuZT10ZT09PU8/MDp0ZTxPPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LW5lOm5lfSxVLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oTyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5u''@;'; put 'put ''ZWdhdGl2ZSlyZXR1cm4gMTt2YXIgej10aGlzLnVjbXAoTyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXo6en0sVS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihPKXtpZih0aGlzLmxlbmd0aD5PLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxPLmxlbmd0aClyZXR1cm4tMTtm''@;'; put 'put ''b3IodmFyIHo9MCxuZT10aGlzLmxlbmd0aC0xO25lPj0wO25lLS0pe3ZhciB0ZT0wfHRoaXMud29yZHNbbmVdLHg9MHxPLndvcmRzW25lXTtpZih0ZSE9PXgpe3RlPHg/ej0tMTp0ZT54JiYoej0xKTticmVha319cmV0dXJuIHp9LFUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihPKXtyZXR1cm4g''@;'; put 'put ''MT09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oTyl7cmV0dXJuIDE9PT10aGlzLmNtcChPKX0sVS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPj0wfSxVLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21w''@;'; put 'put ''KE8pPj0wfSxVLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oTyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKTw9MH0s''@;'; put 'put ''VS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcChPKTw9MH0sVS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKE8pe3JldHVybiAwPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5lcT1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21wKE8pfSxVLnJlZD1mdW5j''@;'; put 'put ''dGlvbihPKXtyZXR1cm4gbmV3IFRlKE8pfSxVLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihPKXtyZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxFKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZl''@;'; put 'put ''cyIpLE8uY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChPKX0sVS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhp''@;'; put 'put ''cyl9LFUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5yZWQ9Tyx0aGlzfSxVLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihPKXtyZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3Jj''@;'; put 'put ''ZVJlZChPKX0sVS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5y''@;'; put 'put ''ZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIo''@;'; put 'put ''dGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlz''@;'; put 'put ''LnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVy''@;'; put 'put ''aWZ5Mih0aGlzLE8pLHRoaXMucmVkLm11bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5pbXVsKHRo''@;'; put 'put ''aXMsTyl9LFUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRTcXJ0IHdv''@;'; put 'put ''cmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LFUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz''@;'; put 'put ''LnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxVLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0''@;'; put 'put ''aGlzKX0sVS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkJiYhTy5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsTyl9O3ZhciBkZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51''@;'; put 'put ''bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHZlKGhlLE8pe3RoaXMubmFtZT1oZSx0aGlzLnA9bmV3IFUoTywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IFUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9u''@;'; put 'put ''IEFlKCl7dmUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBrZSgpe3ZlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gU2UoKXt2ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7dmUuY2FsbCh0aGlzLCIyNTUxOSIsIjdm''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBUZShoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBoZSl7dmFyIE89VS5fcHJpbWUoaGUpO3RoaXMubT1PLnAsdGhpcy5wcmltZT1PfWVsc2UgRShoZS5ndG4o''@;'; put 'put ''MSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1oZSx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRWUoaGUpe1RlLmNhbGwodGhpcyxoZSksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMu''@;'; put 'put ''c2hpZnQlMjYpLHRoaXMucj1uZXcgVSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhp''@;'; put 'put ''cy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX12ZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiBPLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksT30sdmUucHJv''@;'; put 'put ''dG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oTyl7dmFyIG5lLHo9Tztkb3t0aGlzLnNwbGl0KHosdGhpcy50bXApLG5lPSh6PSh6PXRoaXMuaW11bEsoeikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShuZT50aGlzLm4pO3ZhciB0ZT1uZTx0aGlzLm4/LTE6ei51Y21wKHRoaXMu''@;'; put 'put ''cCk7cmV0dXJuIDA9PT10ZT8oei53b3Jkc1swXT0wLHoubGVuZ3RoPTEpOnRlPjA/ei5pc3ViKHRoaXMucCk6dm9pZCAwIT09ei5zdHJpcD96LnN0cmlwKCk6ei5fc3RyaXAoKSx6fSx2ZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtPLml1c2hybih0aGlzLm4sMCx6KX0sdmUucHJv''@;'; put 'put ''dG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe3JldHVybiBPLmltdWwodGhpcy5rKX0sTWUoQWUsdmUpLEFlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihPLHope2Zvcih2YXIgdGU9TWF0aC5taW4oTy5sZW5ndGgsOSkseD0wO3g8dGU7eCsrKXoud29yZHNbeF09Ty53b3Jkc1t4XTtpZih6Lmxl''@;'; put 'put ''bmd0aD10ZSxPLmxlbmd0aDw9OSlyZXR1cm4gTy53b3Jkc1swXT0wLHZvaWQoTy5sZW5ndGg9MSk7dmFyIFA9Ty53b3Jkc1s5XTtmb3Ioei53b3Jkc1t6Lmxlbmd0aCsrXT00MTk0MzAzJlAseD0xMDt4PE8ubGVuZ3RoO3grKyl7dmFyIFY9MHxPLndvcmRzW3hdO08ud29yZHNbeC0xMF09KDQx''@;'; put 'put ''OTQzMDMmVik8PDR8UD4+PjIyLFA9Vn1PLndvcmRzW3gtMTBdPVA+Pj49MjIsTy5sZW5ndGgtPTA9PT1QJiZPLmxlbmd0aD4xMD8xMDo5fSxBZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Ty53b3Jkc1tPLmxlbmd0aF09MCxPLndvcmRzW08ubGVuZ3RoKzFdPTAsTy5sZW5ndGgrPTI7''@;'; put 'put ''Zm9yKHZhciB6PTAsbmU9MDtuZTxPLmxlbmd0aDtuZSsrKXt2YXIgdGU9MHxPLndvcmRzW25lXTtPLndvcmRzW25lXT02NzEwODg2MyYoeis9OTc3KnRlKSx6PTY0KnRlKyh6LzY3MTA4ODY0fDApfXJldHVybiAwPT09Ty53b3Jkc1tPLmxlbmd0aC0xXSYmKE8ubGVuZ3RoLS0sMD09PU8ud29y''@;'; put 'put ''ZHNbTy5sZW5ndGgtMV0mJk8ubGVuZ3RoLS0pLE99LE1lKGtlLHZlKSxNZShTZSx2ZSksTWUoSWUsdmUpLEllLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtmb3IodmFyIHo9MCxuZT0wO25lPE8ubGVuZ3RoO25lKyspe3ZhciB0ZT0xOSooMHxPLndvcmRzW25lXSkreix4PTY3MTA4ODYz''@;'; put 'put ''JnRlO3RlPj4+PTI2LE8ud29yZHNbbmVdPXgsej10ZX1yZXR1cm4gMCE9PXomJihPLndvcmRzW08ubGVuZ3RoKytdPXopLE99LFUuX3ByaW1lPWZ1bmN0aW9uKE8pe2lmKGRlW09dKXJldHVybiBkZVtPXTt2YXIgejtpZigiazI1NiI9PT1PKXo9bmV3IEFlO2Vsc2UgaWYoInAyMjQiPT09Tyl6''@;'; put 'put ''PW5ldyBrZTtlbHNlIGlmKCJwMTkyIj09PU8pej1uZXcgU2U7ZWxzZXtpZigicDI1NTE5IiE9PU8pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrTyk7ej1uZXcgSWV9cmV0dXJuIGRlW09dPXosen0sVGUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVn''@;'; put 'put ''YXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRShPLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oTyx6KXtFKDA9PShPLm5lZ2F0aXZlfHoubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3''@;'; put 'put ''aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQmJk8ucmVkPT09ei5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKE8pLl9mb3JjZVJlZCh0aGlzKTpPLnVt''@;'; put 'put ''b2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oTyl7cmV0dXJuIE8uaXNaZXJvKCk/Ty5jbG9uZSgpOnRoaXMubS5zdWIoTykuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHop''@;'; put 'put ''O3ZhciBuZT1PLmFkZCh6KTtyZXR1cm4gbmUuY21wKHRoaXMubSk+PTAmJm5lLmlzdWIodGhpcy5tKSxuZS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmlhZGQoeik7cmV0dXJuIG5lLmNtcCh0aGlz''@;'; put 'put ''Lm0pPj0wJiZuZS5pc3ViKHRoaXMubSksbmV9LFRlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uc3ViKHopO3JldHVybiBuZS5jbXBuKDApPDAmJm5lLmlhZGQodGhpcy5tKSxuZS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5p''@;'; put 'put ''c3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmlzdWIoeik7cmV0dXJuIG5lLmNtcG4oMCk8MCYmbmUuaWFkZCh0aGlzLm0pLG5lfSxUZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoTyksdGhpcy5pbW9kKE8udXNo''@;'; put 'put ''bG4oeikpfSxUZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkyKE8seiksdGhpcy5pbW9kKE8uaW11bCh6KSl9LFRlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLm11bCh6KSl9''@;'; put 'put ''LFRlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltdWwoTyxPLmNsb25lKCkpfSxUZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLm11bChPLE8pfSxUZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihPKXtpZihPLmlzWmVybygpKXJldHVybiBP''@;'; put 'put ''LmNsb25lKCk7dmFyIHo9dGhpcy5tLmFuZGxuKDMpO2lmKEUoeiUyPT0xKSwzPT09eil7dmFyIG5lPXRoaXMubS5hZGQobmV3IFUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coTyxuZSl9Zm9yKHZhciB0ZT10aGlzLm0uc3VibigxKSx4PTA7IXRlLmlzWmVybygpJiYwPT09dGUuYW5k''@;'; put 'put ''bG4oMSk7KXgrKyx0ZS5pdXNocm4oMSk7RSghdGUuaXNaZXJvKCkpO3ZhciBQPW5ldyBVKDEpLnRvUmVkKHRoaXMpLFY9UC5yZWROZWcoKSxUPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxTPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoUz1uZXcgVSgyKlMqUykudG9SZWQodGhpcyk7MCE9PXRo''@;'; put 'put ''aXMucG93KFMsVCkuY21wKFYpOylTLnJlZElBZGQoVik7Zm9yKHZhciBGPXRoaXMucG93KFMsdGUpLHllPXRoaXMucG93KE8sdGUuYWRkbigxKS5pdXNocm4oMSkpLENlPXRoaXMucG93KE8sdGUpLERlPXg7MCE9PUNlLmNtcChQKTspe2Zvcih2YXIgUGU9Q2UsUWU9MDswIT09UGUuY21wKFAp''@;'; put 'put ''O1FlKyspUGU9UGUucmVkU3FyKCk7RShRZTxEZSk7dmFyICRlPXRoaXMucG93KEYsbmV3IFUoMSkuaXVzaGxuKERlLVFlLTEpKTt5ZT15ZS5yZWRNdWwoJGUpLEY9JGUucmVkU3FyKCksQ2U9Q2UucmVkTXVsKEYpLERlPVFlfXJldHVybiB5ZX0sVGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24o''@;'; put 'put ''Tyl7dmFyIHo9Ty5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXoubmVnYXRpdmU/KHoubmVnYXRpdmU9MCx0aGlzLmltb2QoeikucmVkTmVnKCkpOnRoaXMuaW1vZCh6KX0sVGUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihPLHope2lmKHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDEpLnRvUmVk''@;'; put 'put ''KHRoaXMpO2lmKDA9PT16LmNtcG4oMSkpcmV0dXJuIE8uY2xvbmUoKTt2YXIgdGU9bmV3IEFycmF5KDE2KTt0ZVswXT1uZXcgVSgxKS50b1JlZCh0aGlzKSx0ZVsxXT1PO2Zvcih2YXIgeD0yO3g8dGUubGVuZ3RoO3grKyl0ZVt4XT10aGlzLm11bCh0ZVt4LTFdLE8pO3ZhciBQPXRlWzBdLFY9''@;'; put 'put ''MCxUPTAsUz16LmJpdExlbmd0aCgpJTI2O2ZvcigwPT09UyYmKFM9MjYpLHg9ei5sZW5ndGgtMTt4Pj0wO3gtLSl7Zm9yKHZhciBGPXoud29yZHNbeF0seWU9Uy0xO3llPj0wO3llLS0pe3ZhciBDZT1GPj55ZSYxO1AhPT10ZVswXSYmKFA9dGhpcy5zcXIoUCkpLDAhPT1DZXx8MCE9PVY/KFY8''@;'; put 'put ''PD0xLFZ8PUNlLCg0PT0rK1R8fDA9PT14JiYwPT09eWUpJiYoUD10aGlzLm11bChQLHRlW1ZdKSxUPTAsVj0wKSk6VD0wfVM9MjZ9cmV0dXJuIFB9LFRlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7dmFyIHo9Ty51bW9kKHRoaXMubSk7cmV0dXJuIHo9PT1PP3ouY2xvbmUoKTp6''@;'; put 'put ''fSxUZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTyl7dmFyIHo9Ty5jbG9uZSgpO3JldHVybiB6LnJlZD1udWxsLHp9LFUubW9udD1mdW5jdGlvbihPKXtyZXR1cm4gbmV3IEVlKE8pfSxNZShFZSxUZSksRWUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5pbW9kKE8udXNobG4odGhpcy5zaGlmdCkpfSxFZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5pbW9kKE8ubXVsKHRoaXMucmludikpO3JldHVybiB6LnJlZD1udWxsLHp9LEVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7aWYoTy5pc1pl''@;'; put 'put ''cm8oKXx8ei5pc1plcm8oKSlyZXR1cm4gTy53b3Jkc1swXT0wLE8ubGVuZ3RoPTEsTzt2YXIgbmU9Ty5pbXVsKHopLHRlPW5lLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PW5lLmlzdWIodGUpLml1c2hybih0aGlzLnNo''@;'; put 'put ''aWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14LmlzdWIodGhpcy5tKTp4LmNtcG4oMCk8MCYmKFA9eC5pYWRkKHRoaXMubSkpLFAuX2ZvcmNlUmVkKHRoaXMpfSxFZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7aWYoTy5pc1plcm8oKXx8ei5pc1plcm8oKSlyZXR1cm4g''@;'; put 'put ''bmV3IFUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBuZT1PLm11bCh6KSx0ZT1uZS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1uZS5pc3ViKHRlKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlz''@;'; put 'put ''Lm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQLl9mb3JjZVJlZCh0aGlzKX0sRWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRo''@;'; put 'put ''aXMpfX0oWGU9TC5ubWQoWGUpLHRoaXMpfSw5MjczNTpmdW5jdGlvbihYZSl7WGUuZXhwb3J0cz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBKZShjdCl7cmV0dXJuKEplPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9y''@;'; put 'put ''P2Z1bmN0aW9uKE50KXtyZXR1cm4gdHlwZW9mIE50fTpmdW5jdGlvbihOdCl7cmV0dXJuIE50JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZOdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBOdH0pKGN0KX1mdW5jdGlvbiBM''@;'; put 'put ''KGN0LE50KXtyZXR1cm4oTD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKFllLEF0KXtyZXR1cm4gWWUuX19wcm90b19fPUF0LFllfSkoY3QsTnQpfWZ1bmN0aW9uIGdlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goY3Qpe3JldHVy''@;'; put 'put ''biExfX1mdW5jdGlvbiBCKGN0LE50LHplKXtyZXR1cm4oQj1nZSgpP1JlZmxlY3QuY29uc3RydWN0OmZ1bmN0aW9uKEF0LGp0LEp0KXt2YXIgbW49W251bGxdO21uLnB1c2guYXBwbHkobW4sanQpO3ZhciBibj1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShBdCxtbikpO3JldHVybiBKdCYmTChi''@;'; put 'put ''bixKdC5wcm90b3R5cGUpLGJufSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIEUoY3Qpe3JldHVybiBmdW5jdGlvbiBNZShjdCl7aWYoQXJyYXkuaXNBcnJheShjdCkpcmV0dXJuIFooY3QpfShjdCl8fGZ1bmN0aW9uIFUoY3Qpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiZudWxsIT1jdFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1jdFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGN0KX0oY3QpfHxmdW5jdGlvbiBRKGN0LE50KXtpZihjdCl7aWYoInN0cmluZyI9PXR5cGVvZiBjdClyZXR1cm4gWihjdCxOdCk7dmFyIHplPU9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUudG9TdHJpbmcuY2FsbChjdCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT16ZSYmY3QuY29uc3RydWN0b3ImJih6ZT1jdC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXplfHwiU2V0Ij09PXplKXJldHVybiBBcnJheS5mcm9tKGN0KTtpZigiQXJndW1lbnRzIj09PXplfHwvXig/OlVp''@;'; put 'put ''fEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh6ZSkpcmV0dXJuIFooY3QsTnQpfX0oY3QpfHxmdW5jdGlvbiBpZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8g''@;'; put 'put ''YmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFooY3QsTnQpeyhudWxsPT1OdHx8TnQ+Y3QubGVuZ3RoKSYmKE50PWN0Lmxlbmd0aCk7Zm9yKHZhciB6ZT0wLFllPW5ldyBBcnJheShOdCk7''@;'; put 'put ''emU8TnQ7emUrKylZZVt6ZV09Y3RbemVdO3JldHVybiBZZX12YXIgbGU9T2JqZWN0Lmhhc093blByb3BlcnR5LFk9T2JqZWN0LnNldFByb3RvdHlwZU9mLFc9T2JqZWN0LmlzRnJvemVuLE49T2JqZWN0LmdldFByb3RvdHlwZU9mLGVlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Is''@;'; put 'put ''cT1PYmplY3QuZnJlZXplLEo9T2JqZWN0LnNlYWwsc2U9T2JqZWN0LmNyZWF0ZSxhZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QsZmU9YWUuYXBwbHksZGU9YWUuY29uc3RydWN0O2ZlfHwoZmU9ZnVuY3Rpb24oTnQsemUsWWUpe3JldHVybiBOdC5hcHBseSh6ZSxZZSl9''@;'; put 'put ''KSxxfHwocT1mdW5jdGlvbihOdCl7cmV0dXJuIE50fSksSnx8KEo9ZnVuY3Rpb24oTnQpe3JldHVybiBOdH0pLGRlfHwoZGU9ZnVuY3Rpb24oTnQsemUpe3JldHVybiBCKE50LEUoemUpKX0pO3ZhciB2ZT1uZShBcnJheS5wcm90b3R5cGUuZm9yRWFjaCksQWU9bmUoQXJyYXkucHJvdG90eXBl''@;'; put 'put ''LnBvcCksa2U9bmUoQXJyYXkucHJvdG90eXBlLnB1c2gpLFNlPW5lKFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLEllPW5lKFN0cmluZy5wcm90b3R5cGUubWF0Y2gpLFRlPW5lKFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksRWU9bmUoU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mKSxo''@;'; put 'put ''ZT1uZShTdHJpbmcucHJvdG90eXBlLnRyaW0pLE89bmUoUmVnRXhwLnByb3RvdHlwZS50ZXN0KSx6PWZ1bmN0aW9uIHRlKGN0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIE50PWFyZ3VtZW50cy5sZW5ndGgsemU9bmV3IEFycmF5KE50KSxZZT0wO1llPE50O1llKyspemVbWWVdPWFyZ3Vt''@;'; put 'put ''ZW50c1tZZV07cmV0dXJuIGRlKGN0LHplKX19KFR5cGVFcnJvcik7ZnVuY3Rpb24gbmUoY3Qpe3JldHVybiBmdW5jdGlvbihOdCl7Zm9yKHZhciB6ZT1hcmd1bWVudHMubGVuZ3RoLFllPW5ldyBBcnJheSh6ZT4xP3plLTE6MCksQXQ9MTtBdDx6ZTtBdCsrKVllW0F0LTFdPWFyZ3VtZW50c1tB''@;'; put 'put ''dF07cmV0dXJuIGZlKGN0LE50LFllKX19ZnVuY3Rpb24geChjdCxOdCx6ZSl7emU9emV8fFNlLFkmJlkoY3QsbnVsbCk7Zm9yKHZhciBZZT1OdC5sZW5ndGg7WWUtLTspe3ZhciBBdD1OdFtZZV07aWYoInN0cmluZyI9PXR5cGVvZiBBdCl7dmFyIGp0PXplKEF0KTtqdCE9PUF0JiYoVyhOdCl8''@;'; put 'put ''fChOdFtZZV09anQpLEF0PWp0KX1jdFtBdF09ITB9cmV0dXJuIGN0fWZ1bmN0aW9uIFAoY3Qpe3ZhciB6ZSxOdD1zZShudWxsKTtmb3IoemUgaW4gY3QpZmUobGUsY3QsW3plXSkmJihOdFt6ZV09Y3RbemVdKTtyZXR1cm4gTnR9ZnVuY3Rpb24gVihjdCxOdCl7Zm9yKDtudWxsIT09Y3Q7KXt2''@;'; put 'put ''YXIgemU9ZWUoY3QsTnQpO2lmKHplKXtpZih6ZS5nZXQpcmV0dXJuIG5lKHplLmdldCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHplLnZhbHVlKXJldHVybiBuZSh6ZS52YWx1ZSl9Y3Q9TihjdCl9cmV0dXJuIGZ1bmN0aW9uIFllKEF0KXtyZXR1cm4gY29uc29sZS53YXJuKCJmYWxsYmFjayB2''@;'; put 'put ''YWx1ZSBmb3IiLEF0KSxudWxsfX12YXIgVD1xKFsiYSIsImFiYnIiLCJhY3JvbnltIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiaWciLCJibGluayIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMi''@;'; put 'put ''LCJjYXB0aW9uIiwiY2VudGVyIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImNvbnRlbnQiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlY29yYXRvciIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZWxlbWVudCIsImVtIiwi''@;'; put 'put ''ZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwibGFiZWwiLCJsZWdl''@;'; put 'put ''bmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGVyIiwibmF2Iiwibm9iciIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJwIiwicnQiLCJydWJ5Iiwi''@;'; put 'put ''cyIsInNhbXAiLCJzZWN0aW9uIiwic2VsZWN0Iiwic2hhZG93Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFjZXIiLCJzcGFuIiwic3RyaWtlIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRm''@;'; put 'put ''b290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidHQiLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciJdKSxTPXEoWyJzdmciLCJhIiwiYWx0Z2x5cGgiLCJhbHRnbHlwaGRlZiIsImFsdGdseXBoaXRlbSIsImFuaW1hdGVjb2xvciIsImFuaW1hdGVtb3Rpb24iLCJhbmlt''@;'; put 'put ''YXRldHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcHBhdGgiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZyIsImdseXBoIiwiZ2x5cGhyZWYiLCJoa2VybiIsImltYWdlIiwibGluZSIsImxpbmVhcmdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwi''@;'; put 'put ''bXBhdGgiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdHlsZSIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0cGF0aCIsInRpdGxlIiwidHJlZiIsInRzcGFuIiwidmlldyIsInZrZXJuIl0pLEY9cShb''@;'; put 'put ''ImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZURpc3RhbnRMaWdodCIsImZlRmxvb2QiLCJmZUZ1bmNBIiwiZmVGdW5j''@;'; put 'put ''QiIsImZlRnVuY0ciLCJmZUZ1bmNSIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTWVyZ2VOb2RlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVBvaW50TGlnaHQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVNwb3RMaWdodCIsImZlVGlsZSIsImZlVHVy''@;'; put 'put ''YnVsZW5jZSJdKSx5ZT1xKFsiYW5pbWF0ZSIsImNvbG9yLXByb2ZpbGUiLCJjdXJzb3IiLCJkaXNjYXJkIiwiZmVkcm9wc2hhZG93IiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXNyYyIsImZvbnQtZmFjZS11cmkiLCJmb3JlaWdu''@;'; put 'put ''b2JqZWN0IiwiaGF0Y2giLCJoYXRjaHBhdGgiLCJtZXNoIiwibWVzaGdyYWRpZW50IiwibWVzaHBhdGNoIiwibWVzaHJvdyIsIm1pc3NpbmctZ2x5cGgiLCJzY3JpcHQiLCJzZXQiLCJzb2xpZGNvbG9yIiwidW5rbm93biIsInVzZSJdKSxDZT1xKFsibWF0aCIsIm1lbmNsb3NlIiwibWVycm9y''@;'; put 'put ''IiwibWZlbmNlZCIsIm1mcmFjIiwibWdseXBoIiwibWkiLCJtbGFiZWxlZHRyIiwibW11bHRpc2NyaXB0cyIsIm1uIiwibW8iLCJtb3ZlciIsIm1wYWRkZWQiLCJtcGhhbnRvbSIsIm1yb290IiwibXJvdyIsIm1zIiwibXNwYWNlIiwibXNxcnQiLCJtc3R5bGUiLCJtc3ViIiwibXN1cCIsIm1z''@;'; put 'put ''dWJzdXAiLCJtdGFibGUiLCJtdGQiLCJtdGV4dCIsIm10ciIsIm11bmRlciIsIm11bmRlcm92ZXIiXSksRGU9cShbIm1hY3Rpb24iLCJtYWxpZ25ncm91cCIsIm1hbGlnbm1hcmsiLCJtbG9uZ2RpdiIsIm1zY2FycmllcyIsIm1zY2FycnkiLCJtc2dyb3VwIiwibXN0YWNrIiwibXNsaW5lIiwi''@;'; put 'put ''bXNyb3ciLCJzZW1hbnRpY3MiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvbi14bWwiLCJtcHJlc2NyaXB0cyIsIm5vbmUiXSksUGU9cShbIiN0ZXh0Il0pLFFlPXEoWyJhY2NlcHQiLCJhY3Rpb24iLCJhbGlnbiIsImFsdCIsImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvbXBsZXRlIiwiYXV0b3Bp''@;'; put 'put ''Y3R1cmVpbnBpY3R1cmUiLCJhdXRvcGxheSIsImJhY2tncm91bmQiLCJiZ2NvbG9yIiwiYm9yZGVyIiwiY2FwdHVyZSIsImNlbGxwYWRkaW5nIiwiY2VsbHNwYWNpbmciLCJjaGVja2VkIiwiY2l0ZSIsImNsYXNzIiwiY2xlYXIiLCJjb2xvciIsImNvbHMiLCJjb2xzcGFuIiwiY29udHJvbHMi''@;'; put 'put ''LCJjb250cm9sc2xpc3QiLCJjb29yZHMiLCJjcm9zc29yaWdpbiIsImRhdGV0aW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGlyIiwiZGlzYWJsZWQiLCJkaXNhYmxlcGljdHVyZWlucGljdHVyZSIsImRpc2FibGVyZW1vdGVwbGF5YmFjayIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZW5j''@;'; put 'put ''dHlwZSIsImVudGVya2V5aGludCIsImZhY2UiLCJmb3IiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaGlnaCIsImhyZWYiLCJocmVmbGFuZyIsImlkIiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJs''@;'; put 'put ''b29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhdHRlcm4iLCJwbGFjZWhv''@;'; put 'put ''bGRlciIsInBsYXlzaW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInB1YmRhdGUiLCJyYWRpb2dyb3VwIiwicmVhZG9ubHkiLCJyZWwiLCJyZXF1aXJlZCIsInJldiIsInJldmVyc2VkIiwicm9sZSIsInJvd3MiLCJyb3dzcGFuIiwic3BlbGxjaGVjayIsInNjb3BlIiwic2VsZWN0ZWQiLCJz''@;'; put 'put ''aGFwZSIsInNpemUiLCJzaXplcyIsInNwYW4iLCJzcmNsYW5nIiwic3RhcnQiLCJzcmMiLCJzcmNzZXQiLCJzdGVwIiwic3R5bGUiLCJzdW1tYXJ5IiwidGFiaW5kZXgiLCJ0aXRsZSIsInRyYW5zbGF0ZSIsInR5cGUiLCJ1c2VtYXAiLCJ2YWxpZ24iLCJ2YWx1ZSIsIndpZHRoIiwieG1sbnMi''@;'; put 'put ''LCJzbG90Il0pLCRlPXEoWyJhY2NlbnQtaGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0aXZlIiwiYWxpZ25tZW50LWJhc2VsaW5lIiwiYXNjZW50IiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJhemltdXRoIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2VsaW5lLXNoaWZ0IiwiYmVn''@;'; put 'put ''aW4iLCJiaWFzIiwiYnkiLCJjbGFzcyIsImNsaXAiLCJjbGlwcGF0aHVuaXRzIiwiY2xpcC1wYXRoIiwiY2xpcC1ydWxlIiwiY29sb3IiLCJjb2xvci1pbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwiY29sb3ItcHJvZmlsZSIsImNvbG9yLXJlbmRlcmluZyIs''@;'; put 'put ''ImN4IiwiY3kiLCJkIiwiZHgiLCJkeSIsImRpZmZ1c2Vjb25zdGFudCIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwiZHVyIiwiZWRnZW1vZGUiLCJlbGV2YXRpb24iLCJlbmQiLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiZmlsdGVyIiwiZmlsdGVydW5pdHMi''@;'; put 'put ''LCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc2l6ZS1hZGp1c3QiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC12YXJpYW50IiwiZm9udC13ZWlnaHQiLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoLW5hbWUi''@;'; put 'put ''LCJnbHlwaHJlZiIsImdyYWRpZW50dW5pdHMiLCJncmFkaWVudHRyYW5zZm9ybSIsImhlaWdodCIsImhyZWYiLCJpZCIsImltYWdlLXJlbmRlcmluZyIsImluIiwiaW4yIiwiayIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmluZyIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1l''@;'; put 'put ''cyIsImxhbmciLCJsZW5ndGhhZGp1c3QiLCJsZXR0ZXItc3BhY2luZyIsImtlcm5lbG1hdHJpeCIsImtlcm5lbHVuaXRsZW5ndGgiLCJsaWdodGluZy1jb2xvciIsImxvY2FsIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1''@;'; put 'put ''bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm1heCIsIm1hc2siLCJtZWRpYSIsIm1ldGhvZCIsIm1vZGUiLCJtaW4iLCJuYW1lIiwibnVtb2N0YXZlcyIsIm9mZnNldCIsIm9wZXJhdG9yIiwib3BhY2l0eSIsIm9yZGVyIiwib3JpZW50Iiwib3Jp''@;'; put 'put ''ZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsInBhaW50LW9yZGVyIiwicGF0aCIsInBhdGhsZW5ndGgiLCJwYXR0ZXJuY29udGVudHVuaXRzIiwicGF0dGVybnRyYW5zZm9ybSIsInBhdHRlcm51bml0cyIsInBvaW50cyIsInByZXNlcnZlYWxwaGEiLCJwcmVzZXJ2ZWFzcGVjdHJhdGlv''@;'; put 'put ''IiwicHJpbWl0aXZldW5pdHMiLCJyIiwicngiLCJyeSIsInJhZGl1cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwic2NhbGUiLCJzZWVkIiwic2hhcGUtcmVuZGVyaW5nIiwic3BlY3VsYXJjb25zdGFudCIsInNw''@;'; put 'put ''ZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwic3RvcC1jb2xvciIsInN0b3Atb3BhY2l0eSIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1saW5lY2FwIiwic3Ryb2tl''@;'; put 'put ''LWxpbmVqb2luIiwic3Ryb2tlLW1pdGVybGltaXQiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZS13aWR0aCIsInN0eWxlIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJpbmRleCIsInRhcmdldHgiLCJ0YXJnZXR5IiwidHJhbnNmb3JtIiwidHJhbnNmb3Jt''@;'; put 'put ''LW9yaWdpbiIsInRleHQtYW5jaG9yIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1yZW5kZXJpbmciLCJ0ZXh0bGVuZ3RoIiwidHlwZSIsInUxIiwidTIiLCJ1bmljb2RlIiwidmFsdWVzIiwidmlld2JveCIsInZpc2liaWxpdHkiLCJ2ZXJzaW9uIiwidmVydC1hZHYteSIsInZlcnQtb3JpZ2lu''@;'; put 'put ''LXgiLCJ2ZXJ0LW9yaWdpbi15Iiwid2lkdGgiLCJ3b3JkLXNwYWNpbmciLCJ3cmFwIiwid3JpdGluZy1tb2RlIiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ4IiwieDEiLCJ4MiIsInhtbG5zIiwieSIsInkxIiwieTIiLCJ6Iiwiem9vbWFuZHBhbiJdKSxndD1xKFsi''@;'; put 'put ''YWNjZW50IiwiYWNjZW50dW5kZXIiLCJhbGlnbiIsImJldmVsbGVkIiwiY2xvc2UiLCJjb2x1bW5zYWxpZ24iLCJjb2x1bW5saW5lcyIsImNvbHVtbnNwYW4iLCJkZW5vbWFsaWduIiwiZGVwdGgiLCJkaXIiLCJkaXNwbGF5IiwiZGlzcGxheXN0eWxlIiwiZW5jb2RpbmciLCJmZW5jZSIsImZy''@;'; put 'put ''YW1lIiwiaGVpZ2h0IiwiaHJlZiIsImlkIiwibGFyZ2VvcCIsImxlbmd0aCIsImxpbmV0aGlja25lc3MiLCJsc3BhY2UiLCJscXVvdGUiLCJtYXRoYmFja2dyb3VuZCIsIm1hdGhjb2xvciIsIm1hdGhzaXplIiwibWF0aHZhcmlhbnQiLCJtYXhzaXplIiwibWluc2l6ZSIsIm1vdmFibGVsaW1p''@;'; put 'put ''dHMiLCJub3RhdGlvbiIsIm51bWFsaWduIiwib3BlbiIsInJvd2FsaWduIiwicm93bGluZXMiLCJyb3dzcGFjaW5nIiwicm93c3BhbiIsInJzcGFjZSIsInJxdW90ZSIsInNjcmlwdGxldmVsIiwic2NyaXB0bWluc2l6ZSIsInNjcmlwdHNpemVtdWx0aXBsaWVyIiwic2VsZWN0aW9uIiwic2Vw''@;'; put 'put ''YXJhdG9yIiwic2VwYXJhdG9ycyIsInN0cmV0Y2h5Iiwic3Vic2NyaXB0c2hpZnQiLCJzdXBzY3JpcHRzaGlmdCIsInN5bW1ldHJpYyIsInZvZmZzZXQiLCJ3aWR0aCIsInhtbG5zIl0pLHl0PXEoWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxu''@;'; put 'put ''czp4bGluayJdKSxwdD1KKC9ce1x7W1x3XFddKnxbXHdcV10qXH1cfS9nbSksbXQ9SigvPCVbXHdcV10qfFtcd1xXXSolPi9nbSksdnQ9SigvXmRhdGEtW1wtXHcuXHUwMEI3LVx1RkZGRl0vKSxmdD1KKC9eYXJpYS1bXC1cd10rJC8pLEZ0PUooL14oPzooPzooPzpmfGh0KXRwcz98bWFpbHRv''@;'; put 'put ''fHRlbHxjYWxsdG98Y2lkfHhtcHApOnxbXmEtel18W2EteisuXC1dKyg/OlteYS16Ky5cLTpdfCQpKS9pKSxvbj1KKC9eKD86XHcrc2NyaXB0fGRhdGEpOi9pKSxfdD1KKC9bXHUwMDAwLVx1MDAyMFx1MDBBMFx1MTY4MFx1MTgwRVx1MjAwMC1cdTIwMjlcdTIwNUZcdTMwMDBdL2cpLG50PUoo''@;'; put 'put ''L15odG1sJC9pKSxxZT1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93P251bGw6d2luZG93fSxvdD1mdW5jdGlvbihOdCx6ZSl7aWYoIm9iamVjdCIhPT1KZShOdCl8fCJmdW5jdGlvbiIhPXR5cGVvZiBOdC5jcmVhdGVQb2xpY3kpcmV0dXJuIG51bGw7dmFyIFll''@;'; put 'put ''PW51bGwsQXQ9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7emUuY3VycmVudFNjcmlwdCYmemUuY3VycmVudFNjcmlwdC5oYXNBdHRyaWJ1dGUoQXQpJiYoWWU9emUuY3VycmVudFNjcmlwdC5nZXRBdHRyaWJ1dGUoQXQpKTt2YXIganQ9ImRvbXB1cmlmeSIrKFllPyIjIitZZToiIik7dHJ5e3Jl''@;'; put 'put ''dHVybiBOdC5jcmVhdGVQb2xpY3koanQse2NyZWF0ZUhUTUw6ZnVuY3Rpb24obW4pe3JldHVybiBtbn0sY3JlYXRlU2NyaXB0VVJMOmZ1bmN0aW9uKG1uKXtyZXR1cm4gbW59fSl9Y2F0Y2goSnQpe3JldHVybiBjb25zb2xlLndhcm4oIlRydXN0ZWRUeXBlcyBwb2xpY3kgIitqdCsiIGNvdWxk''@;'; put 'put ''IG5vdCBiZSBjcmVhdGVkLiIpLG51bGx9fTtyZXR1cm4gZnVuY3Rpb24gUnQoKXt2YXIgY3Q9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnFlKCksTnQ9ZnVuY3Rpb24oZGkpe3JldHVybiBSdChkaSl9O2lmKE50LnZlcnNpb249IjIuNC4w''@;'; put 'put ''IixOdC5yZW1vdmVkPVtdLCFjdHx8IWN0LmRvY3VtZW50fHw5IT09Y3QuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIE50LmlzU3VwcG9ydGVkPSExLE50O3ZhciB6ZT1jdC5kb2N1bWVudCxZZT1jdC5kb2N1bWVudCxBdD1jdC5Eb2N1bWVudEZyYWdtZW50LGp0PWN0LkhUTUxUZW1wbGF0ZUVs''@;'; put 'put ''ZW1lbnQsSnQ9Y3QuTm9kZSxtbj1jdC5FbGVtZW50LHBuPWN0Lk5vZGVGaWx0ZXIsYm49Y3QuTmFtZWROb2RlTWFwLGxuPXZvaWQgMD09PWJuP2N0Lk5hbWVkTm9kZU1hcHx8Y3QuTW96TmFtZWRBdHRyTWFwOmJuLE5uPWN0LkhUTUxGb3JtRWxlbWVudCxrbj1jdC5ET01QYXJzZXIsZXI9Y3Qu''@;'; put 'put ''dHJ1c3RlZFR5cGVzLHVyPW1uLnByb3RvdHlwZSxYbj1WKHVyLCJjbG9uZU5vZGUiKSxGcj1WKHVyLCJuZXh0U2libGluZyIpLHhyPVYodXIsImNoaWxkTm9kZXMiKSxlbj1WKHVyLCJwYXJlbnROb2RlIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGp0KXt2YXIgZHI9WWUuY3JlYXRlRWxlbWVu''@;'; put 'put ''dCgidGVtcGxhdGUiKTtkci5jb250ZW50JiZkci5jb250ZW50Lm93bmVyRG9jdW1lbnQmJihZZT1kci5jb250ZW50Lm93bmVyRG9jdW1lbnQpfXZhciBucj1vdChlcix6ZSksd249bnI/bnIuY3JlYXRlSFRNTCgiIik6IiIsWXQ9WWUuaW1wbGVtZW50YXRpb24sZ249WWUuY3JlYXRlTm9kZUl0''@;'; put 'put ''ZXJhdG9yLEtuPVllLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQsVnQ9WWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUsc249emUuaW1wb3J0Tm9kZSxVbj17fTt0cnl7VW49UChZZSkuZG9jdW1lbnRNb2RlP1llLmRvY3VtZW50TW9kZTp7fX1jYXRjaChqbyl7fXZhciBfbj17fTtOdC5pc1N1cHBvcnRl''@;'; put 'put ''ZD0iZnVuY3Rpb24iPT10eXBlb2YgZW4mJll0JiZ2b2lkIDAhPT1ZdC5jcmVhdGVIVE1MRG9jdW1lbnQmJjkhPT1Vbjt2YXIgR28sWGwsdG49cHQsR249bXQsVHI9dnQsUG49ZnQsU3I9b24sdm49X3QsdW49RnQsY249bnVsbCxTbj14KHt9LFtdLmNvbmNhdChFKFQpLEUoUyksRShGKSxFKENl''@;'; put 'put ''KSxFKFBlKSkpLEd0PW51bGwsRW49eCh7fSxbXS5jb25jYXQoRShRZSksRSgkZSksRShndCksRSh5dCkpKSxqbj1PYmplY3Quc2VhbChPYmplY3QuY3JlYXRlKG51bGwse3RhZ05hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0s''@;'; put 'put ''YXR0cmlidXRlTmFtZUNoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfSxhbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOiExfX0pKSxxdD1u''@;'; put 'put ''dWxsLExuPW51bGwsSm49ITAsb3I9ITAsZ3I9ITEsSnI9ITEsVnI9ITEsdGk9ITEsT3I9ITEsbGk9ITEsSWk9ITEscjA9ITEsZTA9ITAsZDA9ITEsXzA9InVzZXItY29udGVudC0iLFUwPSEwLEJpPSExLGowPXt9LEFvPW51bGwsS289eCh7fSxbImFubm90YXRpb24teG1sIiwiYXVkaW8iLCJj''@;'; put 'put ''b2xncm91cCIsImRlc2MiLCJmb3JlaWdub2JqZWN0IiwiaGVhZCIsImlmcmFtZSIsIm1hdGgiLCJtaSIsIm1uIiwibW8iLCJtcyIsIm10ZXh0Iiwibm9lbWJlZCIsIm5vZnJhbWVzIiwibm9zY3JpcHQiLCJwbGFpbnRleHQiLCJzY3JpcHQiLCJzdHlsZSIsInN2ZyIsInRlbXBsYXRlIiwidGhl''@;'; put 'put ''YWQiLCJ0aXRsZSIsInZpZGVvIiwieG1wIl0pLGZhPW51bGwsZWw9eCh7fSxbImF1ZGlvIiwidmlkZW8iLCJpbWciLCJzb3VyY2UiLCJpbWFnZSIsInRyYWNrIl0pLEppPW51bGwsTWE9eCh7fSxbImFsdCIsImNsYXNzIiwiZm9yIiwiaWQiLCJsYWJlbCIsIm5hbWUiLCJwYXR0ZXJuIiwicGxh''@;'; put 'put ''Y2Vob2xkZXIiLCJyb2xlIiwic3VtbWFyeSIsInRpdGxlIiwidmFsdWUiLCJzdHlsZSIsInhtbG5zIl0pLHlsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixmbD0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHBpPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s''@;'; put 'put ''Iix3aT1waSxtMD0hMSxjMj1bImFwcGxpY2F0aW9uL3hodG1sK3htbCIsInRleHQvaHRtbCJdLFNpPSJ0ZXh0L2h0bWwiLEl1PW51bGwscTA9WWUuY3JlYXRlRWxlbWVudCgiZm9ybSIpLFNzPWZ1bmN0aW9uKGRpKXtyZXR1cm4gZGkgaW5zdGFuY2VvZiBSZWdFeHB8fGRpIGluc3RhbmNlb2Yg''@;'; put 'put ''RnVuY3Rpb259LFcwPWZ1bmN0aW9uKGRpKXtJdSYmSXU9PT1kaXx8KCghZGl8fCJvYmplY3QiIT09SmUoZGkpKSYmKGRpPXt9KSxkaT1QKGRpKSxHbz1Hbz0tMT09PWMyLmluZGV4T2YoZGkuUEFSU0VSX01FRElBX1RZUEUpP1NpOmRpLlBBUlNFUl9NRURJQV9UWVBFLFhsPSJhcHBsaWNhdGlv''@;'; put 'put ''bi94aHRtbCt4bWwiPT09R28/ZnVuY3Rpb24oTjApe3JldHVybiBOMH06U2UsY249IkFMTE9XRURfVEFHUyJpbiBkaT94KHt9LGRpLkFMTE9XRURfVEFHUyxYbCk6U24sR3Q9IkFMTE9XRURfQVRUUiJpbiBkaT94KHt9LGRpLkFMTE9XRURfQVRUUixYbCk6RW4sSmk9IkFERF9VUklfU0FGRV9B''@;'; put 'put ''VFRSImluIGRpP3goUChNYSksZGkuQUREX1VSSV9TQUZFX0FUVFIsWGwpOk1hLGZhPSJBRERfREFUQV9VUklfVEFHUyJpbiBkaT94KFAoZWwpLGRpLkFERF9EQVRBX1VSSV9UQUdTLFhsKTplbCxBbz0iRk9SQklEX0NPTlRFTlRTImluIGRpP3goe30sZGkuRk9SQklEX0NPTlRFTlRTLFhsKTpL''@;'; put 'put ''byxxdD0iRk9SQklEX1RBR1MiaW4gZGk/eCh7fSxkaS5GT1JCSURfVEFHUyxYbCk6e30sTG49IkZPUkJJRF9BVFRSImluIGRpP3goe30sZGkuRk9SQklEX0FUVFIsWGwpOnt9LGowPSJVU0VfUFJPRklMRVMiaW4gZGkmJmRpLlVTRV9QUk9GSUxFUyxKbj0hMSE9PWRpLkFMTE9XX0FSSUFfQVRU''@;'; put 'put ''Uixvcj0hMSE9PWRpLkFMTE9XX0RBVEFfQVRUUixncj1kaS5BTExPV19VTktOT1dOX1BST1RPQ09MU3x8ITEsSnI9ZGkuU0FGRV9GT1JfVEVNUExBVEVTfHwhMSxWcj1kaS5XSE9MRV9ET0NVTUVOVHx8ITEsbGk9ZGkuUkVUVVJOX0RPTXx8ITEsSWk9ZGkuUkVUVVJOX0RPTV9GUkFHTUVOVHx8''@;'; put 'put ''ITEscjA9ZGkuUkVUVVJOX1RSVVNURURfVFlQRXx8ITEsT3I9ZGkuRk9SQ0VfQk9EWXx8ITEsZTA9ITEhPT1kaS5TQU5JVElaRV9ET00sZDA9ZGkuU0FOSVRJWkVfTkFNRURfUFJPUFN8fCExLFUwPSExIT09ZGkuS0VFUF9DT05URU5ULEJpPWRpLklOX1BMQUNFfHwhMSx1bj1kaS5BTExPV0VE''@;'; put 'put ''X1VSSV9SRUdFWFB8fHVuLHdpPWRpLk5BTUVTUEFDRXx8cGksZGkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJlNzKGRpLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjaykmJihqbi50YWdOYW1lQ2hlY2s9ZGkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNr''@;'; put 'put ''KSxkaS5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmU3MoZGkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYXR0cmlidXRlTmFtZUNoZWNrKSYmKGpuLmF0dHJpYnV0ZU5hbWVDaGVjaz1kaS5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2spLGRpLkNVU1RPTV9FTEVN''@;'; put 'put ''RU5UX0hBTkRMSU5HJiYiYm9vbGVhbiI9PXR5cGVvZiBkaS5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMmJihqbi5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM9ZGkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYWxsb3dDdXN0b21p''@;'; put 'put ''emVkQnVpbHRJbkVsZW1lbnRzKSxKciYmKG9yPSExKSxJaSYmKGxpPSEwKSxqMCYmKGNuPXgoe30sRShQZSkpLEd0PVtdLCEwPT09ajAuaHRtbCYmKHgoY24sVCkseChHdCxRZSkpLCEwPT09ajAuc3ZnJiYoeChjbixTKSx4KEd0LCRlKSx4KEd0LHl0KSksITA9PT1qMC5zdmdGaWx0ZXJzJiYo''@;'; put 'put ''eChjbixGKSx4KEd0LCRlKSx4KEd0LHl0KSksITA9PT1qMC5tYXRoTWwmJih4KGNuLENlKSx4KEd0LGd0KSx4KEd0LHl0KSkpLGRpLkFERF9UQUdTJiYoY249PT1TbiYmKGNuPVAoY24pKSx4KGNuLGRpLkFERF9UQUdTLFhsKSksZGkuQUREX0FUVFImJihHdD09PUVuJiYoR3Q9UChHdCkpLHgo''@;'; put 'put ''R3QsZGkuQUREX0FUVFIsWGwpKSxkaS5BRERfVVJJX1NBRkVfQVRUUiYmeChKaSxkaS5BRERfVVJJX1NBRkVfQVRUUixYbCksZGkuRk9SQklEX0NPTlRFTlRTJiYoQW89PT1LbyYmKEFvPVAoQW8pKSx4KEFvLGRpLkZPUkJJRF9DT05URU5UUyxYbCkpLFUwJiYoY25bIiN0ZXh0Il09ITApLFZy''@;'; put 'put ''JiZ4KGNuLFsiaHRtbCIsImhlYWQiLCJib2R5Il0pLGNuLnRhYmxlJiYoeChjbixbInRib2R5Il0pLGRlbGV0ZSBxdC50Ym9keSkscSYmcShkaSksSXU9ZGkpfSxxbz14KHt9LFsibWkiLCJtbyIsIm1uIiwibXMiLCJtdGV4dCJdKSxLYT14KHt9LFsiZm9yZWlnbm9iamVjdCIsImRlc2MiLCJ0''@;'; put 'put ''aXRsZSIsImFubm90YXRpb24teG1sIl0pLHNvPXgoe30sWyJ0aXRsZSIsInN0eWxlIiwiZm9udCIsImEiLCJzY3JpcHQiXSksQW49eCh7fSxTKTt4KEFuLEYpLHgoQW4seWUpO3ZhciBLMD14KHt9LENlKTt4KEswLERlKTt2YXIgYjI9ZnVuY3Rpb24oZGkpe3ZhciBOMD1lbihkaSk7KCFOMHx8''@;'; put 'put ''IU4wLnRhZ05hbWUpJiYoTjA9e25hbWVzcGFjZVVSSTpwaSx0YWdOYW1lOiJ0ZW1wbGF0ZSJ9KTt2YXIgdW89U2UoZGkudGFnTmFtZSksTmE9U2UoTjAudGFnTmFtZSk7cmV0dXJuIGRpLm5hbWVzcGFjZVVSST09PWZsP04wLm5hbWVzcGFjZVVSST09PXBpPyJzdmciPT09dW86TjAubmFtZXNw''@;'; put 'put ''YWNlVVJJPT09eWw/InN2ZyI9PT11byYmKCJhbm5vdGF0aW9uLXhtbCI9PT1OYXx8cW9bTmFdKTpCb29sZWFuKEFuW3VvXSk6ZGkubmFtZXNwYWNlVVJJPT09eWw/TjAubmFtZXNwYWNlVVJJPT09cGk/Im1hdGgiPT09dW86TjAubmFtZXNwYWNlVVJJPT09Zmw/Im1hdGgiPT09dW8mJkthW05h''@;'; put 'put ''XTpCb29sZWFuKEswW3VvXSk6ZGkubmFtZXNwYWNlVVJJPT09cGkmJiEoTjAubmFtZXNwYWNlVVJJPT09ZmwmJiFLYVtOYV18fE4wLm5hbWVzcGFjZVVSST09PXlsJiYhcW9bTmFdKSYmIUswW3VvXSYmKHNvW3VvXXx8IUFuW3VvXSl9LGl1PWZ1bmN0aW9uKGRpKXtrZShOdC5yZW1vdmVkLHtl''@;'; put 'put ''bGVtZW50OmRpfSk7dHJ5e2RpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGkpfWNhdGNoKE4wKXt0cnl7ZGkub3V0ZXJIVE1MPXdufWNhdGNoKHVvKXtkaS5yZW1vdmUoKX19fSxSZj1mdW5jdGlvbihkaSxOMCl7dHJ5e2tlKE50LnJlbW92ZWQse2F0dHJpYnV0ZTpOMC5nZXRBdHRyaWJ1dGVO''@;'; put 'put ''b2RlKGRpKSxmcm9tOk4wfSl9Y2F0Y2godW8pe2tlKE50LnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206TjB9KX1pZihOMC5yZW1vdmVBdHRyaWJ1dGUoZGkpLCJpcyI9PT1kaSYmIUd0W2RpXSlpZihsaXx8SWkpdHJ5e2l1KE4wKX1jYXRjaCh1byl7fWVsc2UgdHJ5e04wLnNldEF0dHJp''@;'; put 'put ''YnV0ZShkaSwiIil9Y2F0Y2godW8pe319LFF1PWZ1bmN0aW9uKGRpKXt2YXIgTjAsdW87aWYoT3IpZGk9IjxyZW1vdmU+PC9yZW1vdmU+IitkaTtlbHNle3ZhciBOYT1JZShkaSwvXltcclxuXHQgXSsvKTt1bz1OYSYmTmFbMF19ImFwcGxpY2F0aW9uL3hodG1sK3htbCI9PT1HbyYmKGRpPSc8''@;'; put 'put ''aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+PC9oZWFkPjxib2R5PicrZGkrIjwvYm9keT48L2h0bWw+Iik7dmFyIGYyPW5yP25yLmNyZWF0ZUhUTUwoZGkpOmRpO2lmKHdpPT09cGkpdHJ5e04wPShuZXcga24pLnBhcnNlRnJvbVN0cmluZyhmMixHbyl9''@;'; put 'put ''Y2F0Y2godmkpe31pZighTjB8fCFOMC5kb2N1bWVudEVsZW1lbnQpe04wPVl0LmNyZWF0ZURvY3VtZW50KHdpLCJ0ZW1wbGF0ZSIsbnVsbCk7dHJ5e04wLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9bTA/IiI6ZjJ9Y2F0Y2godmkpe319dmFyIG8yPU4wLmJvZHl8fE4wLmRvY3VtZW50RWxl''@;'; put 'put ''bWVudDtyZXR1cm4gZGkmJnVvJiZvMi5pbnNlcnRCZWZvcmUoWWUuY3JlYXRlVGV4dE5vZGUodW8pLG8yLmNoaWxkTm9kZXNbMF18fG51bGwpLHdpPT09cGk/VnQuY2FsbChOMCxWcj8iaHRtbCI6ImJvZHkiKVswXTpWcj9OMC5kb2N1bWVudEVsZW1lbnQ6bzJ9LEtzPWZ1bmN0aW9uKGRpKXty''@;'; put 'put ''ZXR1cm4gZ24uY2FsbChkaS5vd25lckRvY3VtZW50fHxkaSxkaSxwbi5TSE9XX0VMRU1FTlR8cG4uU0hPV19DT01NRU5UfHBuLlNIT1dfVEVYVCxudWxsLCExKX0sT3A9ZnVuY3Rpb24oZGkpe3JldHVybiBkaSBpbnN0YW5jZW9mIE5uJiYoInN0cmluZyIhPXR5cGVvZiBkaS5ub2RlTmFtZXx8''@;'; put 'put ''InN0cmluZyIhPXR5cGVvZiBkaS50ZXh0Q29udGVudHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGRpLnJlbW92ZUNoaWxkfHwhKGRpLmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiBsbil8fCJmdW5jdGlvbiIhPXR5cGVvZiBkaS5yZW1vdmVBdHRyaWJ1dGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBkaS5zZXRB''@;'; put 'put ''dHRyaWJ1dGV8fCJzdHJpbmciIT10eXBlb2YgZGkubmFtZXNwYWNlVVJJfHwiZnVuY3Rpb24iIT10eXBlb2YgZGkuaW5zZXJ0QmVmb3JlKX0sSnU9ZnVuY3Rpb24oZGkpe3JldHVybiJvYmplY3QiPT09SmUoSnQpP2RpIGluc3RhbmNlb2YgSnQ6ZGkmJiJvYmplY3QiPT09SmUoZGkpJiYibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIGRpLm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIGRpLm5vZGVOYW1lfSwkcz1mdW5jdGlvbihkaSxOMCx1byl7IV9uW2RpXXx8dmUoX25bZGldLGZ1bmN0aW9uKE5hKXtOYS5jYWxsKE50LE4wLHVvLEl1KX0pfSxEbD1mdW5jdGlvbihkaSl7dmFyIE4wO2lmKCRzKCJi''@;'; put 'put ''ZWZvcmVTYW5pdGl6ZUVsZW1lbnRzIixkaSxudWxsKSxPcChkaSl8fE8oL1tcdTAwODAtXHVGRkZGXS8sZGkubm9kZU5hbWUpKXJldHVybiBpdShkaSksITA7dmFyIHVvPVhsKGRpLm5vZGVOYW1lKTtpZigkcygidXBvblNhbml0aXplRWxlbWVudCIsZGkse3RhZ05hbWU6dW8sYWxsb3dlZFRh''@;'; put 'put ''Z3M6Y259KSxkaS5oYXNDaGlsZE5vZGVzKCkmJiFKdShkaS5maXJzdEVsZW1lbnRDaGlsZCkmJighSnUoZGkuY29udGVudCl8fCFKdShkaS5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKSkmJk8oLzxbL1x3XS9nLGRpLmlubmVySFRNTCkmJk8oLzxbL1x3XS9nLGRpLnRleHRDb250ZW50KXx8''@;'; put 'put ''InNlbGVjdCI9PT11byYmTygvPHRlbXBsYXRlL2ksZGkuaW5uZXJIVE1MKSlyZXR1cm4gaXUoZGkpLCEwO2lmKCFjblt1b118fHF0W3VvXSl7aWYoIXF0W3VvXSYmWHUodW8pJiYoam4udGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZPKGpuLnRhZ05hbWVDaGVjayx1byl8fGpuLnRh''@;'; put 'put ''Z05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZqbi50YWdOYW1lQ2hlY2sodW8pKSlyZXR1cm4hMTtpZihVMCYmIUFvW3VvXSl7dmFyIE5hPWVuKGRpKXx8ZGkucGFyZW50Tm9kZSxmMj14cihkaSl8fGRpLmNoaWxkTm9kZXM7aWYoZjImJk5hKWZvcih2YXIgdmk9ZjIubGVuZ3RoLTE7''@;'; put 'put ''dmk+PTA7LS12aSlOYS5pbnNlcnRCZWZvcmUoWG4oZjJbdmldLCEwKSxGcihkaSkpfXJldHVybiBpdShkaSksITB9cmV0dXJuIGRpIGluc3RhbmNlb2YgbW4mJiFiMihkaSl8fCgibm9zY3JpcHQiPT09dW98fCJub2VtYmVkIj09PXVvKSYmTygvPFwvbm8oc2NyaXB0fGVtYmVkKS9pLGRpLmlu''@;'; put 'put ''bmVySFRNTCk/KGl1KGRpKSwhMCk6KEpyJiYzPT09ZGkubm9kZVR5cGUmJihOMD1UZShOMD1kaS50ZXh0Q29udGVudCx0biwiICIpLE4wPVRlKE4wLEduLCIgIiksZGkudGV4dENvbnRlbnQhPT1OMCYmKGtlKE50LnJlbW92ZWQse2VsZW1lbnQ6ZGkuY2xvbmVOb2RlKCl9KSxkaS50ZXh0Q29u''@;'; put 'put ''dGVudD1OMCkpLCRzKCJhZnRlclNhbml0aXplRWxlbWVudHMiLGRpLG51bGwpLCExKX0sUTI9ZnVuY3Rpb24oZGksTjAsdW8pe2lmKGUwJiYoImlkIj09PU4wfHwibmFtZSI9PT1OMCkmJih1byBpbiBZZXx8dW8gaW4gcTApKXJldHVybiExO2lmKCghb3J8fExuW04wXXx8IU8oVHIsTjApKSYm''@;'; put 'put ''KCFKbnx8IU8oUG4sTjApKSlpZighR3RbTjBdfHxMbltOMF0pe2lmKCEoWHUoZGkpJiYoam4udGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZPKGpuLnRhZ05hbWVDaGVjayxkaSl8fGpuLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZqbi50YWdOYW1lQ2hlY2soZGkp''@;'; put 'put ''KSYmKGpuLmF0dHJpYnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmTyhqbi5hdHRyaWJ1dGVOYW1lQ2hlY2ssTjApfHxqbi5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmam4uYXR0cmlidXRlTmFtZUNoZWNrKE4wKSl8fCJpcyI9PT1OMCYmam4uYWxsb3dD''@;'; put 'put ''dXN0b21pemVkQnVpbHRJbkVsZW1lbnRzJiYoam4udGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZPKGpuLnRhZ05hbWVDaGVjayx1byl8fGpuLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZqbi50YWdOYW1lQ2hlY2sodW8pKSkpcmV0dXJuITF9ZWxzZSBpZighSmlb''@;'; put 'put ''TjBdJiYhTyh1bixUZSh1byx2biwiIikpJiYoInNyYyIhPT1OMCYmInhsaW5rOmhyZWYiIT09TjAmJiJocmVmIiE9PU4wfHwic2NyaXB0Ij09PWRpfHwwIT09RWUodW8sImRhdGE6Iil8fCFmYVtkaV0pJiYoIWdyfHxPKFNyLFRlKHVvLHZuLCIiKSkpJiZ1bylyZXR1cm4hMTtyZXR1cm4hMH0s''@;'; put 'put ''WHU9ZnVuY3Rpb24oZGkpe3JldHVybiBkaS5pbmRleE9mKCItIik+MH0sZ2M9ZnVuY3Rpb24oZGkpe3ZhciBOMCx1byxOYSxmMjskcygiYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzIixkaSxudWxsKTt2YXIgbzI9ZGkuYXR0cmlidXRlcztpZihvMil7dmFyIHZpPXthdHRyTmFtZToiIixhdHRy''@;'; put 'put ''VmFsdWU6IiIsa2VlcEF0dHI6ITAsYWxsb3dlZEF0dHJpYnV0ZXM6R3R9O2ZvcihmMj1vMi5sZW5ndGg7ZjItLTspe3ZhciBFYT0oTjA9bzJbZjJdKS5uYW1lLG91PU4wLm5hbWVzcGFjZVVSSTtpZih1bz0idmFsdWUiPT09RWE/TjAudmFsdWU6aGUoTjAudmFsdWUpLE5hPVhsKEVhKSx2aS5h''@;'; put 'put ''dHRyTmFtZT1OYSx2aS5hdHRyVmFsdWU9dW8sdmkua2VlcEF0dHI9ITAsdmkuZm9yY2VLZWVwQXR0cj12b2lkIDAsJHMoInVwb25TYW5pdGl6ZUF0dHJpYnV0ZSIsZGksdmkpLHVvPXZpLmF0dHJWYWx1ZSwhdmkuZm9yY2VLZWVwQXR0ciYmKFJmKEVhLGRpKSx2aS5rZWVwQXR0cikpe2lmKE8o''@;'; put 'put ''L1wvPi9pLHVvKSl7UmYoRWEsZGkpO2NvbnRpbnVlfUpyJiYodW89VGUodW8sdG4sIiAiKSx1bz1UZSh1byxHbiwiICIpKTt2YXIgcm89WGwoZGkubm9kZU5hbWUpO2lmKFEyKHJvLE5hLHVvKSl7aWYoZDAmJigiaWQiPT09TmF8fCJuYW1lIj09PU5hKSYmKFJmKEVhLGRpKSx1bz1fMCt1byks''@;'; put 'put ''bnImJiJvYmplY3QiPT09SmUoZXIpJiYiZnVuY3Rpb24iPT10eXBlb2YgZXIuZ2V0QXR0cmlidXRlVHlwZSYmIW91KXN3aXRjaChlci5nZXRBdHRyaWJ1dGVUeXBlKHJvLE5hKSl7Y2FzZSJUcnVzdGVkSFRNTCI6dW89bnIuY3JlYXRlSFRNTCh1byk7YnJlYWs7Y2FzZSJUcnVzdGVkU2NyaXB0''@;'; put 'put ''VVJMIjp1bz1uci5jcmVhdGVTY3JpcHRVUkwodW8pfXRyeXtvdT9kaS5zZXRBdHRyaWJ1dGVOUyhvdSxFYSx1byk6ZGkuc2V0QXR0cmlidXRlKEVhLHVvKSxBZShOdC5yZW1vdmVkKX1jYXRjaChzZCl7fX19fSRzKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsZGksbnVsbCl9fSx0bD1mdW5j''@;'; put 'put ''dGlvbiBqbyhkaSl7dmFyIE4wLHVvPUtzKGRpKTtmb3IoJHMoImJlZm9yZVNhbml0aXplU2hhZG93RE9NIixkaSxudWxsKTtOMD11by5uZXh0Tm9kZSgpOykkcygidXBvblNhbml0aXplU2hhZG93Tm9kZSIsTjAsbnVsbCksIURsKE4wKSYmKE4wLmNvbnRlbnQgaW5zdGFuY2VvZiBBdCYmam8o''@;'; put 'put ''TjAuY29udGVudCksZ2MoTjApKTskcygiYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTSIsZGksbnVsbCl9O3JldHVybiBOdC5zYW5pdGl6ZT1mdW5jdGlvbihqbyl7dmFyIE4wLHVvLE5hLGYyLG8yLGRpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sx''@;'; put 'put ''XTp7fTtpZigobTA9IWpvKSYmKGpvPSJceDNjIS0tXHgzZSIpLCJzdHJpbmciIT10eXBlb2Ygam8mJiFKdShqbykpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBqby50b1N0cmluZyl0aHJvdyB6KCJ0b1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpO2lmKCJzdHJpbmciIT10eXBlb2Yoam89am8u''@;'; put 'put ''dG9TdHJpbmcoKSkpdGhyb3cgeigiZGlydHkgaXMgbm90IGEgc3RyaW5nLCBhYm9ydGluZyIpfWlmKCFOdC5pc1N1cHBvcnRlZCl7aWYoIm9iamVjdCI9PT1KZShjdC50b1N0YXRpY0hUTUwpfHwiZnVuY3Rpb24iPT10eXBlb2YgY3QudG9TdGF0aWNIVE1MKXtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IGpvKXJldHVybiBjdC50b1N0YXRpY0hUTUwoam8pO2lmKEp1KGpvKSlyZXR1cm4gY3QudG9TdGF0aWNIVE1MKGpvLm91dGVySFRNTCl9cmV0dXJuIGpvfWlmKHRpfHxXMChkaSksTnQucmVtb3ZlZD1bXSwic3RyaW5nIj09dHlwZW9mIGpvJiYoQmk9ITEpLEJpKXtpZihqby5ub2RlTmFtZSl7''@;'; put 'put ''dmFyIHZpPVhsKGpvLm5vZGVOYW1lKTtpZighY25bdmldfHxxdFt2aV0pdGhyb3cgeigicm9vdCBub2RlIGlzIGZvcmJpZGRlbiBhbmQgY2Fubm90IGJlIHNhbml0aXplZCBpbi1wbGFjZSIpfX1lbHNlIGlmKGpvIGluc3RhbmNlb2YgSnQpMT09PSh1bz0oTjA9UXUoIlx4M2MhLS0tLVx4M2Ui''@;'; put 'put ''KSkub3duZXJEb2N1bWVudC5pbXBvcnROb2RlKGpvLCEwKSkubm9kZVR5cGUmJiJCT0RZIj09PXVvLm5vZGVOYW1lfHwiSFRNTCI9PT11by5ub2RlTmFtZT9OMD11bzpOMC5hcHBlbmRDaGlsZCh1byk7ZWxzZXtpZighbGkmJiFKciYmIVZyJiYtMT09PWpvLmluZGV4T2YoIjwiKSlyZXR1cm4g''@;'; put 'put ''bnImJnIwP25yLmNyZWF0ZUhUTUwoam8pOmpvO2lmKCEoTjA9UXUoam8pKSlyZXR1cm4gbGk/bnVsbDpyMD93bjoiIn1OMCYmT3ImJml1KE4wLmZpcnN0Q2hpbGQpO2Zvcih2YXIgQmY9S3MoQmk/am86TjApO05hPUJmLm5leHROb2RlKCk7KTM9PT1OYS5ub2RlVHlwZSYmTmE9PT1mMnx8RGwo''@;'; put 'put ''TmEpfHwoTmEuY29udGVudCBpbnN0YW5jZW9mIEF0JiZ0bChOYS5jb250ZW50KSxnYyhOYSksZjI9TmEpO2lmKGYyPW51bGwsQmkpcmV0dXJuIGpvO2lmKGxpKXtpZihJaSlmb3IobzI9S24uY2FsbChOMC5vd25lckRvY3VtZW50KTtOMC5maXJzdENoaWxkOylvMi5hcHBlbmRDaGlsZChOMC5m''@;'; put 'put ''aXJzdENoaWxkKTtlbHNlIG8yPU4wO3JldHVybiBHdC5zaGFkb3dyb290JiYobzI9c24uY2FsbCh6ZSxvMiwhMCkpLG8yfXZhciBFYT1Wcj9OMC5vdXRlckhUTUw6TjAuaW5uZXJIVE1MO3JldHVybiBWciYmY25bIiFkb2N0eXBlIl0mJk4wLm93bmVyRG9jdW1lbnQmJk4wLm93bmVyRG9jdW1l''@;'; put 'put ''bnQuZG9jdHlwZSYmTjAub3duZXJEb2N1bWVudC5kb2N0eXBlLm5hbWUmJk8obnQsTjAub3duZXJEb2N1bWVudC5kb2N0eXBlLm5hbWUpJiYoRWE9IjwhRE9DVFlQRSAiK04wLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKyI+XG4iK0VhKSxKciYmKEVhPVRlKEVhLHRuLCIgIiksRWE9VGUo''@;'; put 'put ''RWEsR24sIiAiKSksbnImJnIwP25yLmNyZWF0ZUhUTUwoRWEpOkVhfSxOdC5zZXRDb25maWc9ZnVuY3Rpb24oam8pe1cwKGpvKSx0aT0hMH0sTnQuY2xlYXJDb25maWc9ZnVuY3Rpb24oKXtJdT1udWxsLHRpPSExfSxOdC5pc1ZhbGlkQXR0cmlidXRlPWZ1bmN0aW9uKGpvLGRpLE4wKXtJdXx8''@;'; put 'put ''VzAoe30pO3ZhciB1bz1YbChqbyksTmE9WGwoZGkpO3JldHVybiBRMih1byxOYSxOMCl9LE50LmFkZEhvb2s9ZnVuY3Rpb24oam8sZGkpeyJmdW5jdGlvbiI9PXR5cGVvZiBkaSYmKF9uW2pvXT1fbltqb118fFtdLGtlKF9uW2pvXSxkaSkpfSxOdC5yZW1vdmVIb29rPWZ1bmN0aW9uKGpvKXtp''@;'; put 'put ''Zihfbltqb10pcmV0dXJuIEFlKF9uW2pvXSl9LE50LnJlbW92ZUhvb2tzPWZ1bmN0aW9uKGpvKXtfbltqb10mJihfbltqb109W10pfSxOdC5yZW1vdmVBbGxIb29rcz1mdW5jdGlvbigpe19uPXt9fSxOdH0oKX0oKX0sNTc3MTU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1KZTtn''@;'; put 'put ''ZS52ZXJzaW9uPUwoMTg1OTcpLmk4LGdlLnV0aWxzPUwoNjE5NzApLGdlLnJhbmQ9TCgzNzk1MCksZ2UuY3VydmU9TCg0NjI3MCksZ2UuY3VydmVzPUwoNTI5MTYpLGdlLmVjPUwoNjc2MjYpLGdlLmVkZHNhPUwoODE4ODUpfSw5NzkwMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdl''@;'; put 'put ''PUwoMTc0MzMpLEI9TCg2MTk3MCksRT1CLmdldE5BRixNZT1CLmdldEpTRixVPUIuYXNzZXJ0O2Z1bmN0aW9uIFEoaWUsbGUpe3RoaXMudHlwZT1pZSx0aGlzLnA9bmV3IGdlKGxlLnAsMTYpLHRoaXMucmVkPWxlLnByaW1lP2dlLnJlZChsZS5wcmltZSk6Z2UubW9udCh0aGlzLnApLHRoaXMu''@;'; put 'put ''emVybz1uZXcgZ2UoMCkudG9SZWQodGhpcy5yZWQpLHRoaXMub25lPW5ldyBnZSgxKS50b1JlZCh0aGlzLnJlZCksdGhpcy50d289bmV3IGdlKDIpLnRvUmVkKHRoaXMucmVkKSx0aGlzLm49bGUubiYmbmV3IGdlKGxlLm4sMTYpLHRoaXMuZz1sZS5nJiZ0aGlzLnBvaW50RnJvbUpTT04obGUu''@;'; put 'put ''ZyxsZS5nUmVkKSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpLHRoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIFk9''@;'; put 'put ''dGhpcy5uJiZ0aGlzLnAuZGl2KHRoaXMubik7IVl8fFkuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21heHdlbGxUcmljaz0hMCx0aGlzLnJlZE49dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gWihpZSxsZSl7dGhpcy5jdXJ2ZT1pZSx0aGlzLnR5cGU9bGUsdGhp''@;'; put 'put ''cy5wcmVjb21wdXRlZD1udWxsfVhlLmV4cG9ydHM9USxRLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9LFEucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0s''@;'; put 'put ''US5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsPWZ1bmN0aW9uKGxlLFkpe1UobGUucHJlY29tcHV0ZWQpO3ZhciBXPWxlLl9nZXREb3VibGVzKCksTj1FKFksMSx0aGlzLl9iaXRMZW5ndGgpLGVlPSgxPDxXLnN0ZXArMSktKFcuc3RlcCUyPT0wPzI6MSk7ZWUvPTM7dmFyIEosc2UscT1bXTtmb3Io''@;'; put 'put ''Sj0wO0o8Ti5sZW5ndGg7Sis9Vy5zdGVwKXtzZT0wO2Zvcih2YXIgYWU9SitXLnN0ZXAtMTthZT49SjthZS0tKXNlPShzZTw8MSkrTlthZV07cS5wdXNoKHNlKX1mb3IodmFyIGZlPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxkZT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksdmU9''@;'; put 'put ''ZWU7dmU+MDt2ZS0tKXtmb3IoSj0wO0o8cS5sZW5ndGg7SisrKShzZT1xW0pdKT09PXZlP2RlPWRlLm1peGVkQWRkKFcucG9pbnRzW0pdKTpzZT09PS12ZSYmKGRlPWRlLm1peGVkQWRkKFcucG9pbnRzW0pdLm5lZygpKSk7ZmU9ZmUuYWRkKGRlKX1yZXR1cm4gZmUudG9QKCl9LFEucHJvdG90''@;'; put 'put ''eXBlLl93bmFmTXVsPWZ1bmN0aW9uKGxlLFkpe2Zvcih2YXIgVz00LE49bGUuX2dldE5BRlBvaW50cyhXKSxlZT1OLnBvaW50cyxxPUUoWSxXPU4ud25kLHRoaXMuX2JpdExlbmd0aCksSj10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksc2U9cS5sZW5ndGgtMTtzZT49MDtzZS0tKXtmb3Io''@;'; put 'put ''dmFyIGFlPTA7c2U+PTAmJjA9PT1xW3NlXTtzZS0tKWFlKys7aWYoc2U+PTAmJmFlKyssSj1KLmRibHAoYWUpLHNlPDApYnJlYWs7dmFyIGZlPXFbc2VdO1UoMCE9PWZlKSxKPSJhZmZpbmUiPT09bGUudHlwZT9KLm1peGVkQWRkKGZlPjA/ZWVbZmUtMT4+MV06ZWVbLWZlLTE+PjFdLm5lZygp''@;'; put 'put ''KTpKLmFkZChmZT4wP2VlW2ZlLTE+PjFdOmVlWy1mZS0xPj4xXS5uZWcoKSl9cmV0dXJuImFmZmluZSI9PT1sZS50eXBlP0oudG9QKCk6Sn0sUS5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24obGUsWSxXLE4sZWUpe3ZhciBmZSxkZSx2ZSxxPXRoaXMuX3duYWZUMSxKPXRoaXMuX3du''@;'; put 'put ''YWZUMixzZT10aGlzLl93bmFmVDMsYWU9MDtmb3IoZmU9MDtmZTxOO2ZlKyspe3ZhciBBZT0odmU9WVtmZV0pLl9nZXROQUZQb2ludHMobGUpO3FbZmVdPUFlLnduZCxKW2ZlXT1BZS5wb2ludHN9Zm9yKGZlPU4tMTtmZT49MTtmZS09Mil7dmFyIGtlPWZlLTEsU2U9ZmU7aWYoMT09PXFba2Vd''@;'; put 'put ''JiYxPT09cVtTZV0pe3ZhciBJZT1bWVtrZV0sbnVsbCxudWxsLFlbU2VdXTswPT09WVtrZV0ueS5jbXAoWVtTZV0ueSk/KEllWzFdPVlba2VdLmFkZChZW1NlXSksSWVbMl09WVtrZV0udG9KKCkubWl4ZWRBZGQoWVtTZV0ubmVnKCkpKTowPT09WVtrZV0ueS5jbXAoWVtTZV0ueS5yZWROZWco''@;'; put 'put ''KSk/KEllWzFdPVlba2VdLnRvSigpLm1peGVkQWRkKFlbU2VdKSxJZVsyXT1ZW2tlXS5hZGQoWVtTZV0ubmVnKCkpKTooSWVbMV09WVtrZV0udG9KKCkubWl4ZWRBZGQoWVtTZV0pLEllWzJdPVlba2VdLnRvSigpLm1peGVkQWRkKFlbU2VdLm5lZygpKSk7dmFyIFRlPVstMywtMSwtNSwtNyww''@;'; put 'put ''LDcsNSwxLDNdLEVlPU1lKFdba2VdLFdbU2VdKTtmb3IoYWU9TWF0aC5tYXgoRWVbMF0ubGVuZ3RoLGFlKSxzZVtrZV09bmV3IEFycmF5KGFlKSxzZVtTZV09bmV3IEFycmF5KGFlKSxkZT0wO2RlPGFlO2RlKyspc2Vba2VdW2RlXT1UZVszKigxKygwfEVlWzBdW2RlXSkpKygxKygwfEVlWzFd''@;'; put 'put ''W2RlXSkpXSxzZVtTZV1bZGVdPTAsSltrZV09SWV9ZWxzZSBzZVtrZV09RShXW2tlXSxxW2tlXSx0aGlzLl9iaXRMZW5ndGgpLHNlW1NlXT1FKFdbU2VdLHFbU2VdLHRoaXMuX2JpdExlbmd0aCksYWU9TWF0aC5tYXgoc2Vba2VdLmxlbmd0aCxhZSksYWU9TWF0aC5tYXgoc2VbU2VdLmxlbmd0''@;'; put 'put ''aCxhZSl9dmFyIHo9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLG5lPXRoaXMuX3duYWZUNDtmb3IoZmU9YWU7ZmU+PTA7ZmUtLSl7Zm9yKHZhciB0ZT0wO2ZlPj0wOyl7dmFyIHg9ITA7Zm9yKGRlPTA7ZGU8TjtkZSsrKW5lW2RlXT0wfHNlW2RlXVtmZV0sMCE9PW5lW2RlXSYmKHg9ITEp''@;'; put 'put ''O2lmKCF4KWJyZWFrO3RlKyssZmUtLX1pZihmZT49MCYmdGUrKyx6PXouZGJscCh0ZSksZmU8MClicmVhaztmb3IoZGU9MDtkZTxOO2RlKyspe3ZhciBQPW5lW2RlXTswIT09UCYmKFA+MD92ZT1KW2RlXVtQLTE+PjFdOlA8MCYmKHZlPUpbZGVdWy1QLTE+PjFdLm5lZygpKSx6PSJhZmZpbmUi''@;'; put 'put ''PT09dmUudHlwZT96Lm1peGVkQWRkKHZlKTp6LmFkZCh2ZSkpfX1mb3IoZmU9MDtmZTxOO2ZlKyspSltmZV09bnVsbDtyZXR1cm4gZWU/ejp6LnRvUCgpfSxRLkJhc2VQb2ludD1aLFoucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0s''@;'; put 'put ''Wi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0sUS5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24obGUsWSl7bGU9Qi50b0FycmF5KGxlLFkpO3ZhciBXPXRoaXMucC5ieXRlTGVuZ3RoKCk7aWYoKDQ9PT1sZVswXXx8''@;'; put 'put ''Nj09PWxlWzBdfHw3PT09bGVbMF0pJiZsZS5sZW5ndGgtMT09MipXKXJldHVybiA2PT09bGVbMF0/VShsZVtsZS5sZW5ndGgtMV0lMj09MCk6Nz09PWxlWzBdJiZVKGxlW2xlLmxlbmd0aC0xXSUyPT0xKSx0aGlzLnBvaW50KGxlLnNsaWNlKDEsMStXKSxsZS5zbGljZSgxK1csMSsyKlcpKTtp''@;'; put 'put ''ZigoMj09PWxlWzBdfHwzPT09bGVbMF0pJiZsZS5sZW5ndGgtMT09PVcpcmV0dXJuIHRoaXMucG9pbnRGcm9tWChsZS5zbGljZSgxLDErVyksMz09PWxlWzBdKTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcG9pbnQgZm9ybWF0Iil9LFoucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQ9ZnVu''@;'; put 'put ''Y3Rpb24obGUpe3JldHVybiB0aGlzLmVuY29kZShsZSwhMCl9LFoucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24obGUpe3ZhciBZPXRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCksVz10aGlzLmdldFgoKS50b0FycmF5KCJiZSIsWSk7cmV0dXJuIGxlP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8y''@;'; put 'put ''OjNdLmNvbmNhdChXKTpbNF0uY29uY2F0KFcsdGhpcy5nZXRZKCkudG9BcnJheSgiYmUiLFkpKX0sWi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGxlLFkpe3JldHVybiBCLmVuY29kZSh0aGlzLl9lbmNvZGUoWSksbGUpfSxaLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKGxlKXtp''@;'; put 'put ''Zih0aGlzLnByZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciBZPXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtyZXR1cm4gWS5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpLFkuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsbGUpLFkuYmV0YT10aGlzLl9nZXRCZXRhKCksdGhp''@;'; put 'put ''cy5wcmVjb21wdXRlZD1ZLHRoaXN9LFoucHJvdG90eXBlLl9oYXNEb3VibGVzPWZ1bmN0aW9uKGxlKXtpZighdGhpcy5wcmVjb21wdXRlZClyZXR1cm4hMTt2YXIgWT10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7cmV0dXJuISFZJiZZLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgobGUuYml0''@;'; put 'put ''TGVuZ3RoKCkrMSkvWS5zdGVwKX0sWi5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24obGUsWSl7aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzKXJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7Zm9yKHZhciBXPVt0aGlzXSxOPXRoaXMsZWU9''@;'; put 'put ''MDtlZTxZO2VlKz1sZSl7Zm9yKHZhciBxPTA7cTxsZTtxKyspTj1OLmRibCgpO1cucHVzaChOKX1yZXR1cm57c3RlcDpsZSxwb2ludHM6V319LFoucHJvdG90eXBlLl9nZXROQUZQb2ludHM9ZnVuY3Rpb24obGUpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQubmFmKXJl''@;'; put 'put ''dHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtmb3IodmFyIFk9W3RoaXNdLFc9KDE8PGxlKS0xLE49MT09PVc/bnVsbDp0aGlzLmRibCgpLGVlPTE7ZWU8VztlZSsrKVlbZWVdPVlbZWUtMV0uYWRkKE4pO3JldHVybnt3bmQ6bGUscG9pbnRzOll9fSxaLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBudWxsfSxaLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKGxlKXtmb3IodmFyIFk9dGhpcyxXPTA7VzxsZTtXKyspWT1ZLmRibCgpO3JldHVybiBZfX0sMTM4MzU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDYxOTcwKSxCPUwoMTc0MzMpLEU9TCg4Mzg5''@;'; put 'put ''NCksTWU9TCg5NzkwMiksVT1nZS5hc3NlcnQ7ZnVuY3Rpb24gUShpZSl7dGhpcy50d2lzdGVkPTEhPSgwfGllLmEpLHRoaXMubU9uZUE9dGhpcy50d2lzdGVkJiYtMT09KDB8aWUuYSksdGhpcy5leHRlbmRlZD10aGlzLm1PbmVBLE1lLmNhbGwodGhpcywiZWR3YXJkcyIsaWUpLHRoaXMuYT1u''@;'; put 'put ''ZXcgQihpZS5hLDE2KS51bW9kKHRoaXMucmVkLm0pLHRoaXMuYT10aGlzLmEudG9SZWQodGhpcy5yZWQpLHRoaXMuYz1uZXcgQihpZS5jLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5jMj10aGlzLmMucmVkU3FyKCksdGhpcy5kPW5ldyBCKGllLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlz''@;'; put 'put ''LmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSxVKCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT0oMHxpZS5jKX1mdW5jdGlvbiBaKGllLGxlLFksVyxOKXtNZS5CYXNlUG9pbnQuY2FsbCh0aGlzLGllLCJwcm9qZWN0aXZlIiksbnVsbD09''@;'; put 'put ''PWxlJiZudWxsPT09WSYmbnVsbD09PVc/KHRoaXMueD10aGlzLmN1cnZlLnplcm8sdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnQ9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMuek9uZT0hMCk6KHRoaXMueD1uZXcgQihsZSwxNiksdGhpcy55PW5ldyBCKFks''@;'; put 'put ''MTYpLHRoaXMuej1XP25ldyBCKFcsMTYpOnRoaXMuY3VydmUub25lLHRoaXMudD1OJiZuZXcgQihOLDE2KSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhp''@;'; put 'put ''cy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnQmJiF0aGlzLnQucmVkJiYodGhpcy50PXRoaXMudC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZSx0aGlzLmN1cnZlLmV4dGVuZGVkJiYhdGhp''@;'; put 'put ''cy50JiYodGhpcy50PXRoaXMueC5yZWRNdWwodGhpcy55KSx0aGlzLnpPbmV8fCh0aGlzLnQ9dGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKSkpKX1FKFEsTWUpLFhlLmV4cG9ydHM9USxRLnByb3RvdHlwZS5fbXVsQT1mdW5jdGlvbihsZSl7cmV0dXJuIHRoaXMubU9uZUE/bGUucmVk''@;'; put 'put ''TmVnKCk6dGhpcy5hLnJlZE11bChsZSl9LFEucHJvdG90eXBlLl9tdWxDPWZ1bmN0aW9uKGxlKXtyZXR1cm4gdGhpcy5vbmVDP2xlOnRoaXMuYy5yZWRNdWwobGUpfSxRLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24obGUsWSxXLE4pe3JldHVybiB0aGlzLnBvaW50KGxlLFksVyxOKX0sUS5w''@;'; put 'put ''cm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihsZSxZKXsobGU9bmV3IEIobGUsMTYpKS5yZWR8fChsZT1sZS50b1JlZCh0aGlzLnJlZCkpO3ZhciBXPWxlLnJlZFNxcigpLE49dGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bChXKSksZWU9dGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVk''@;'; put 'put ''TXVsKHRoaXMuZCkucmVkTXVsKFcpKSxxPU4ucmVkTXVsKGVlLnJlZEludm0oKSksSj1xLnJlZFNxcnQoKTtpZigwIT09Si5yZWRTcXIoKS5yZWRTdWIocSkuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIHNlPUouZnJvbVJlZCgpLmlzT2RkKCk7''@;'; put 'put ''cmV0dXJuKFkmJiFzZXx8IVkmJnNlKSYmKEo9Si5yZWROZWcoKSksdGhpcy5wb2ludChsZSxKKX0sUS5wcm90b3R5cGUucG9pbnRGcm9tWT1mdW5jdGlvbihsZSxZKXsobGU9bmV3IEIobGUsMTYpKS5yZWR8fChsZT1sZS50b1JlZCh0aGlzLnJlZCkpO3ZhciBXPWxlLnJlZFNxcigpLE49Vy5y''@;'; put 'put ''ZWRTdWIodGhpcy5jMiksZWU9Vy5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSkscT1OLnJlZE11bChlZS5yZWRJbnZtKCkpO2lmKDA9PT1xLmNtcCh0aGlzLnplcm8pKXtpZihZKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiB0aGlz''@;'; put 'put ''LnBvaW50KHRoaXMuemVybyxsZSl9dmFyIEo9cS5yZWRTcXJ0KCk7aWYoMCE9PUoucmVkU3FyKCkucmVkU3ViKHEpLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiBKLmZyb21SZWQoKS5pc09kZCgpIT09WSYmKEo9Si5yZWROZWcoKSksdGhp''@;'; put 'put ''cy5wb2ludChKLGxlKX0sUS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24obGUpe2lmKGxlLmlzSW5maW5pdHkoKSlyZXR1cm4hMDtsZS5ub3JtYWxpemUoKTt2YXIgWT1sZS54LnJlZFNxcigpLFc9bGUueS5yZWRTcXIoKSxOPVkucmVkTXVsKHRoaXMuYSkucmVkQWRkKFcpLGVlPXRoaXMu''@;'; put 'put ''YzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKFkpLnJlZE11bChXKSkpO3JldHVybiAwPT09Ti5jbXAoZWUpfSxFKFosTWUuQmFzZVBvaW50KSxRLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKGxlKXtyZXR1cm4gWi5mcm9tSlNPTih0aGlzLGxlKX0sUS5w''@;'; put 'put ''cm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24obGUsWSxXLE4pe3JldHVybiBuZXcgWih0aGlzLGxlLFksVyxOKX0sWi5mcm9tSlNPTj1mdW5jdGlvbihsZSxZKXtyZXR1cm4gbmV3IFoobGUsWVswXSxZWzFdLFlbMl0pfSxaLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''aXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9''@;'; put 'put ''LFoucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMueC5jbXBuKDApJiYoMD09PXRoaXMueS5jbXAodGhpcy56KXx8dGhpcy56T25lJiYwPT09dGhpcy55LmNtcCh0aGlzLmN1cnZlLmMpKX0sWi5wcm90b3R5cGUuX2V4dERibD1mdW5jdGlvbigpe3ZhciBs''@;'; put 'put ''ZT10aGlzLngucmVkU3FyKCksWT10aGlzLnkucmVkU3FyKCksVz10aGlzLnoucmVkU3FyKCk7Vz1XLnJlZElBZGQoVyk7dmFyIE49dGhpcy5jdXJ2ZS5fbXVsQShsZSksZWU9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLnJlZElTdWIobGUpLnJlZElTdWIoWSkscT1OLnJlZEFkZChZ''@;'; put 'put ''KSxKPXEucmVkU3ViKFcpLHNlPU4ucmVkU3ViKFkpLGFlPWVlLnJlZE11bChKKSxmZT1xLnJlZE11bChzZSksZGU9ZWUucmVkTXVsKHNlKSx2ZT1KLnJlZE11bChxKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChhZSxmZSx2ZSxkZSl9LFoucHJvdG90eXBlLl9wcm9qRGJsPWZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIE4sZWUscSxKLHNlLGFlLGxlPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKSxZPXRoaXMueC5yZWRTcXIoKSxXPXRoaXMueS5yZWRTcXIoKTtpZih0aGlzLmN1cnZlLnR3aXN0ZWQpe3ZhciBmZT0oSj10aGlzLmN1cnZlLl9tdWxBKFkpKS5yZWRBZGQoVyk7dGhpcy56T25lPyhO''@;'; put 'put ''PWxlLnJlZFN1YihZKS5yZWRTdWIoVykucmVkTXVsKGZlLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpLGVlPWZlLnJlZE11bChKLnJlZFN1YihXKSkscT1mZS5yZWRTcXIoKS5yZWRTdWIoZmUpLnJlZFN1YihmZSkpOihzZT10aGlzLnoucmVkU3FyKCksYWU9ZmUucmVkU3ViKHNlKS5yZWRJU3Vi''@;'; put 'put ''KHNlKSxOPWxlLnJlZFN1YihZKS5yZWRJU3ViKFcpLnJlZE11bChhZSksZWU9ZmUucmVkTXVsKEoucmVkU3ViKFcpKSxxPWZlLnJlZE11bChhZSkpfWVsc2UgSj1ZLnJlZEFkZChXKSxzZT10aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCksYWU9Si5yZWRTdWIoc2UpLnJlZFN1Yihz''@;'; put 'put ''ZSksTj10aGlzLmN1cnZlLl9tdWxDKGxlLnJlZElTdWIoSikpLnJlZE11bChhZSksZWU9dGhpcy5jdXJ2ZS5fbXVsQyhKKS5yZWRNdWwoWS5yZWRJU3ViKFcpKSxxPUoucmVkTXVsKGFlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChOLGVlLHEpfSxaLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLmV4dGVuZGVkP3RoaXMuX2V4dERibCgpOnRoaXMuX3Byb2pEYmwoKX0sWi5wcm90b3R5cGUuX2V4dEFkZD1mdW5jdGlvbihsZSl7dmFyIFk9dGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChsZS55LnJlZFN1Yihs''@;'; put 'put ''ZS54KSksVz10aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKGxlLnkucmVkQWRkKGxlLngpKSxOPXRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKGxlLnQpLGVlPXRoaXMuei5yZWRNdWwobGUuei5yZWRBZGQobGUueikpLHE9Vy5yZWRTdWIoWSksSj1lZS5yZWRTdWIoTiks''@;'; put 'put ''c2U9ZWUucmVkQWRkKE4pLGFlPVcucmVkQWRkKFkpLGZlPXEucmVkTXVsKEopLGRlPXNlLnJlZE11bChhZSksdmU9cS5yZWRNdWwoYWUpLEFlPUoucmVkTXVsKHNlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChmZSxkZSxBZSx2ZSl9LFoucHJvdG90eXBlLl9wcm9qQWRkPWZ1bmN0aW9uKGxl''@;'; put 'put ''KXt2YXIgZGUsdmUsWT10aGlzLnoucmVkTXVsKGxlLnopLFc9WS5yZWRTcXIoKSxOPXRoaXMueC5yZWRNdWwobGUueCksZWU9dGhpcy55LnJlZE11bChsZS55KSxxPXRoaXMuY3VydmUuZC5yZWRNdWwoTikucmVkTXVsKGVlKSxKPVcucmVkU3ViKHEpLHNlPVcucmVkQWRkKHEpLGFlPXRoaXMu''@;'; put 'put ''eC5yZWRBZGQodGhpcy55KS5yZWRNdWwobGUueC5yZWRBZGQobGUueSkpLnJlZElTdWIoTikucmVkSVN1YihlZSksZmU9WS5yZWRNdWwoSikucmVkTXVsKGFlKTtyZXR1cm4gdGhpcy5jdXJ2ZS50d2lzdGVkPyhkZT1ZLnJlZE11bChzZSkucmVkTXVsKGVlLnJlZFN1Yih0aGlzLmN1cnZlLl9t''@;'; put 'put ''dWxBKE4pKSksdmU9Si5yZWRNdWwoc2UpKTooZGU9WS5yZWRNdWwoc2UpLnJlZE11bChlZS5yZWRTdWIoTikpLHZlPXRoaXMuY3VydmUuX211bEMoSikucmVkTXVsKHNlKSksdGhpcy5jdXJ2ZS5wb2ludChmZSxkZSx2ZSl9LFoucHJvdG90eXBlLmFkZD1mdW5jdGlvbihsZSl7cmV0dXJuIHRo''@;'; put 'put ''aXMuaXNJbmZpbml0eSgpP2xlOmxlLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0QWRkKGxlKTp0aGlzLl9wcm9qQWRkKGxlKX0sWi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGxlKXtyZXR1cm4gdGhpcy5faGFzRG91YmxlcyhsZSk/dGhpcy5jdXJ2ZS5f''@;'; put 'put ''Zml4ZWROYWZNdWwodGhpcyxsZSk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGxlKX0sWi5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKGxlLFksVyl7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxZXSxbbGUsV10sMiwhMSl9LFoucHJvdG90eXBlLmptdWxBZGQ9ZnVu''@;'; put 'put ''Y3Rpb24obGUsWSxXKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLFldLFtsZSxXXSwyLCEwKX0sWi5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7aWYodGhpcy56T25lKXJldHVybiB0aGlzO3ZhciBsZT10aGlzLnoucmVkSW52bSgpO3JldHVybiB0aGlzLng9''@;'; put 'put ''dGhpcy54LnJlZE11bChsZSksdGhpcy55PXRoaXMueS5yZWRNdWwobGUpLHRoaXMudCYmKHRoaXMudD10aGlzLnQucmVkTXVsKGxlKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMuek9uZT0hMCx0aGlzfSxaLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5w''@;'; put 'put ''b2ludCh0aGlzLngucmVkTmVnKCksdGhpcy55LHRoaXMueix0aGlzLnQmJnRoaXMudC5yZWROZWcoKSl9LFoucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfSxaLnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMubm9ybWFsaXplKCksdGhpcy55LmZyb21SZWQoKX0sWi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzPT09bGV8fDA9PT10aGlzLmdldFgoKS5jbXAobGUuZ2V0WCgpKSYmMD09PXRoaXMuZ2V0WSgpLmNtcChsZS5nZXRZKCkpfSxaLnByb3RvdHlwZS5lcVhUb1A9''@;'; put 'put ''ZnVuY3Rpb24obGUpe3ZhciBZPWxlLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtpZigwPT09dGhpcy54LmNtcChZKSlyZXR1cm4hMDtmb3IodmFyIFc9bGUuY2xvbmUoKSxOPXRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTs7KXtpZihXLmlhZGQodGhpcy5jdXJ2''@;'; put 'put ''ZS5uKSxXLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKFkucmVkSUFkZChOKSwwPT09dGhpcy54LmNtcChZKSlyZXR1cm4hMH19LFoucHJvdG90eXBlLnRvUD1aLnByb3RvdHlwZS5ub3JtYWxpemUsWi5wcm90b3R5cGUubWl4ZWRBZGQ9Wi5wcm90b3R5cGUuYWRkfSw0NjI3MDoo''@;'; put 'put ''WGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUplO2dlLmJhc2U9TCg5NzkwMiksZ2Uuc2hvcnQ9TCg0MTc4MSksZ2UubW9udD1MKDk3MDY0KSxnZS5lZHdhcmRzPUwoMTM4MzUpfSw5NzA2NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMTc0MzMpLEI9TCg4Mzg5NCks''@;'; put 'put ''RT1MKDk3OTAyKSxNZT1MKDYxOTcwKTtmdW5jdGlvbiBVKFope0UuY2FsbCh0aGlzLCJtb250IixaKSx0aGlzLmE9bmV3IGdlKFouYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgZ2UoWi5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5pND1uZXcgZ2UoNCkudG9SZWQodGhpcy5y''@;'; put 'put ''ZWQpLnJlZEludm0oKSx0aGlzLnR3bz1uZXcgZ2UoMikudG9SZWQodGhpcy5yZWQpLHRoaXMuYTI0PXRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKX1mdW5jdGlvbiBRKFosaWUsbGUpe0UuQmFzZVBvaW50LmNhbGwodGhpcyxaLCJwcm9qZWN0aXZlIiksbnVsbD09PWll''@;'; put 'put ''JiZudWxsPT09bGU/KHRoaXMueD10aGlzLmN1cnZlLm9uZSx0aGlzLno9dGhpcy5jdXJ2ZS56ZXJvKToodGhpcy54PW5ldyBnZShpZSwxNiksdGhpcy56PW5ldyBnZShsZSwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwo''@;'; put 'put ''dGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpKX1CKFUsRSksWGUuZXhwb3J0cz1VLFUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKGllKXt2YXIgbGU9aWUubm9ybWFsaXplKCkueCxZPWxlLnJlZFNxcigpLFc9WS5yZWRNdWwobGUpLnJlZEFkZChZLnJlZE11bCh0aGlz''@;'; put 'put ''LmEpKS5yZWRBZGQobGUpO3JldHVybiAwPT09Vy5yZWRTcXJ0KCkucmVkU3FyKCkuY21wKFcpfSxCKFEsRS5CYXNlUG9pbnQpLFUucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKGllLGxlKXtyZXR1cm4gdGhpcy5wb2ludChNZS50b0FycmF5KGllLGxlKSwxKX0sVS5wcm90b3R5cGUu''@;'; put 'put ''cG9pbnQ9ZnVuY3Rpb24oaWUsbGUpe3JldHVybiBuZXcgUSh0aGlzLGllLGxlKX0sVS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihpZSl7cmV0dXJuIFEuZnJvbUpTT04odGhpcyxpZSl9LFEucHJvdG90eXBlLnByZWNvbXB1dGU9ZnVuY3Rpb24oKXt9LFEucHJvdG90eXBlLl9l''@;'; put 'put ''bmNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCkpfSxRLmZyb21KU09OPWZ1bmN0aW9uKGllLGxlKXtyZXR1cm4gbmV3IFEoaWUsbGVbMF0sbGVbMV18fGllLm9uZSl9LFEucHJvdG90eXBlLmluc3BlY3Q9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sUS5wcm90b3R5cGUuaXNJbmZp''@;'; put 'put ''bml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LFEucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3ZhciBsZT10aGlzLngucmVkQWRkKHRoaXMueikucmVkU3FyKCksVz10aGlzLngucmVkU3ViKHRoaXMueikucmVkU3FyKCksTj1sZS5yZWRTdWIoVyksZWU9bGUucmVk''@;'; put 'put ''TXVsKFcpLHE9Ti5yZWRNdWwoVy5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKE4pKSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZWUscSl9LFEucHJvdG90eXBlLmFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9''@;'; put 'put ''LFEucHJvdG90eXBlLmRpZmZBZGQ9ZnVuY3Rpb24oaWUsbGUpe3ZhciBZPXRoaXMueC5yZWRBZGQodGhpcy56KSxXPXRoaXMueC5yZWRTdWIodGhpcy56KSxOPWllLngucmVkQWRkKGllLnopLHE9aWUueC5yZWRTdWIoaWUueikucmVkTXVsKFkpLEo9Ti5yZWRNdWwoVyksc2U9bGUuei5yZWRN''@;'; put 'put ''dWwocS5yZWRBZGQoSikucmVkU3FyKCkpLGFlPWxlLngucmVkTXVsKHEucmVkSVN1YihKKS5yZWRTcXIoKSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoc2UsYWUpfSxRLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oaWUpe2Zvcih2YXIgbGU9aWUuY2xvbmUoKSxZPXRoaXMsVz10aGlzLmN1cnZl''@;'; put 'put ''LnBvaW50KG51bGwsbnVsbCksZWU9W107MCE9PWxlLmNtcG4oMCk7bGUuaXVzaHJuKDEpKWVlLnB1c2gobGUuYW5kbG4oMSkpO2Zvcih2YXIgcT1lZS5sZW5ndGgtMTtxPj0wO3EtLSkwPT09ZWVbcV0/KFk9WS5kaWZmQWRkKFcsdGhpcyksVz1XLmRibCgpKTooVz1ZLmRpZmZBZGQoVyx0aGlz''@;'; put 'put ''KSxZPVkuZGJsKCkpO3JldHVybiBXfSxRLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxRLnByb3RvdHlwZS5qdW1sQWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9y''@;'; put 'put ''dGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sUS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oaWUpe3JldHVybiAwPT09dGhpcy5nZXRYKCkuY21wKGllLmdldFgoKSl9LFEucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLng9dGhpcy54LnJlZE11bCh0aGlzLnoucmVk''@;'; put 'put ''SW52bSgpKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpc30sUS5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9fSw0MTc4MTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNjE5NzApLEI9TCgxNzQzMyks''@;'; put 'put ''RT1MKDgzODk0KSxNZT1MKDk3OTAyKSxVPWdlLmFzc2VydDtmdW5jdGlvbiBRKGxlKXtNZS5jYWxsKHRoaXMsInNob3J0IixsZSksdGhpcy5hPW5ldyBCKGxlLmEsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmI9bmV3IEIobGUuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlz''@;'; put 'put ''LnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20obGUpLHRoaXMuX2VuZG9XbmFmVDE9bmV3''@;'; put 'put ''IEFycmF5KDQpLHRoaXMuX2VuZG9XbmFmVDI9bmV3IEFycmF5KDQpfWZ1bmN0aW9uIFoobGUsWSxXLE4pe01lLkJhc2VQb2ludC5jYWxsKHRoaXMsbGUsImFmZmluZSIpLG51bGw9PT1ZJiZudWxsPT09Vz8odGhpcy54PW51bGwsdGhpcy55PW51bGwsdGhpcy5pbmY9ITApOih0aGlzLng9bmV3''@;'; put 'put ''IEIoWSwxNiksdGhpcy55PW5ldyBCKFcsMTYpLE4mJih0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpLHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMu''@;'; put 'put ''eT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLmluZj0hMSl9ZnVuY3Rpb24gaWUobGUsWSxXLE4pe01lLkJhc2VQb2ludC5jYWxsKHRoaXMsbGUsImphY29iaWFuIiksbnVsbD09PVkmJm51bGw9PT1XJiZudWxsPT09Tj8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMueT10''@;'; put 'put ''aGlzLmN1cnZlLm9uZSx0aGlzLno9bmV3IEIoMCkpOih0aGlzLng9bmV3IEIoWSwxNiksdGhpcy55PW5ldyBCKFcsMTYpLHRoaXMuej1uZXcgQihOLDE2KSksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMu''@;'; put 'put ''eS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUub25lfUUoUSxNZSksWGUuZXhwb3J0cz1RLFEucHJvdG90eXBlLl9nZXRFbmRvbW9ycGhpc209ZnVuY3Rp''@;'; put 'put ''b24oWSl7aWYodGhpcy56ZXJvQSYmdGhpcy5nJiZ0aGlzLm4mJjE9PT10aGlzLnAubW9kbigzKSl7dmFyIFcsTjtpZihZLmJldGEpVz1uZXcgQihZLmJldGEsMTYpLnRvUmVkKHRoaXMucmVkKTtlbHNle3ZhciBlZT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtXPShXPWVlWzBdLmNtcChl''@;'; put 'put ''ZVsxXSk8MD9lZVswXTplZVsxXSkudG9SZWQodGhpcy5yZWQpfWlmKFkubGFtYmRhKU49bmV3IEIoWS5sYW1iZGEsMTYpO2Vsc2V7dmFyIHE9dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7MD09PXRoaXMuZy5tdWwocVswXSkueC5jbXAodGhpcy5nLngucmVkTXVsKFcpKT9OPXFbMF06VSgw''@;'; put 'put ''PT09dGhpcy5nLm11bChOPXFbMV0pLnguY21wKHRoaXMuZy54LnJlZE11bChXKSkpfXJldHVybntiZXRhOlcsbGFtYmRhOk4sYmFzaXM6WS5iYXNpcz9ZLmJhc2lzLm1hcChmdW5jdGlvbihzZSl7cmV0dXJue2E6bmV3IEIoc2UuYSwxNiksYjpuZXcgQihzZS5iLDE2KX19KTp0aGlzLl9nZXRF''@;'; put 'put ''bmRvQmFzaXMoTil9fX0sUS5wcm90b3R5cGUuX2dldEVuZG9Sb290cz1mdW5jdGlvbihZKXt2YXIgVz1ZPT09dGhpcy5wP3RoaXMucmVkOkIubW9udChZKSxOPW5ldyBCKDIpLnRvUmVkKFcpLnJlZEludm0oKSxlZT1OLnJlZE5lZygpLHE9bmV3IEIoMykudG9SZWQoVykucmVkTmVnKCkucmVk''@;'; put 'put ''U3FydCgpLnJlZE11bChOKTtyZXR1cm5bZWUucmVkQWRkKHEpLmZyb21SZWQoKSxlZS5yZWRTdWIocSkuZnJvbVJlZCgpXX0sUS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcz1mdW5jdGlvbihZKXtmb3IodmFyIGZlLGRlLHZlLEFlLGtlLFNlLEllLEVlLGhlLFc9dGhpcy5uLnVzaHJuKE1hdGgu''@;'; put 'put ''Zmxvb3IodGhpcy5uLmJpdExlbmd0aCgpLzIpKSxOPVksZWU9dGhpcy5uLmNsb25lKCkscT1uZXcgQigxKSxKPW5ldyBCKDApLHNlPW5ldyBCKDApLGFlPW5ldyBCKDEpLFRlPTA7MCE9PU4uY21wbigwKTspe3ZhciBPPWVlLmRpdihOKTtFZT1lZS5zdWIoTy5tdWwoTikpLGhlPXNlLnN1YihP''@;'; put 'put ''Lm11bChxKSk7dmFyIHo9YWUuc3ViKE8ubXVsKEopKTtpZighdmUmJkVlLmNtcChXKTwwKWZlPUllLm5lZygpLGRlPXEsdmU9RWUubmVnKCksQWU9aGU7ZWxzZSBpZih2ZSYmMj09KytUZSlicmVhaztJZT1FZSxlZT1OLE49RWUsc2U9cSxxPWhlLGFlPUosSj16fWtlPUVlLm5lZygpLFNlPWhl''@;'; put 'put ''O3ZhciBuZT12ZS5zcXIoKS5hZGQoQWUuc3FyKCkpO3JldHVybiBrZS5zcXIoKS5hZGQoU2Uuc3FyKCkpLmNtcChuZSk+PTAmJihrZT1mZSxTZT1kZSksdmUubmVnYXRpdmUmJih2ZT12ZS5uZWcoKSxBZT1BZS5uZWcoKSksa2UubmVnYXRpdmUmJihrZT1rZS5uZWcoKSxTZT1TZS5uZWcoKSks''@;'; put 'put ''W3thOnZlLGI6QWV9LHthOmtlLGI6U2V9XX0sUS5wcm90b3R5cGUuX2VuZG9TcGxpdD1mdW5jdGlvbihZKXt2YXIgVz10aGlzLmVuZG8uYmFzaXMsTj1XWzBdLGVlPVdbMV0scT1lZS5iLm11bChZKS5kaXZSb3VuZCh0aGlzLm4pLEo9Ti5iLm5lZygpLm11bChZKS5kaXZSb3VuZCh0aGlzLm4p''@;'; put 'put ''LHNlPXEubXVsKE4uYSksYWU9Si5tdWwoZWUuYSksZmU9cS5tdWwoTi5iKSxkZT1KLm11bChlZS5iKTtyZXR1cm57azE6WS5zdWIoc2UpLnN1YihhZSksazI6ZmUuYWRkKGRlKS5uZWcoKX19LFEucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oWSxXKXsoWT1uZXcgQihZLDE2KSkucmVk''@;'; put 'put ''fHwoWT1ZLnRvUmVkKHRoaXMucmVkKSk7dmFyIE49WS5yZWRTcXIoKS5yZWRNdWwoWSkucmVkSUFkZChZLnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYiksZWU9Ti5yZWRTcXJ0KCk7aWYoMCE9PWVlLnJlZFNxcigpLnJlZFN1YihOKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoImludmFsaWQgcG9pbnQiKTt2YXIgcT1lZS5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oVyYmIXF8fCFXJiZxKSYmKGVlPWVlLnJlZE5lZygpKSx0aGlzLnBvaW50KFksZWUpfSxRLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihZKXtpZihZLmluZilyZXR1cm4hMDt2YXIgVz1ZLngs''@;'; put 'put ''Tj1ZLnksZWU9dGhpcy5hLnJlZE11bChXKSxxPVcucmVkU3FyKCkucmVkTXVsKFcpLnJlZElBZGQoZWUpLnJlZElBZGQodGhpcy5iKTtyZXR1cm4gMD09PU4ucmVkU3FyKCkucmVkSVN1YihxKS5jbXBuKDApfSxRLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQ9ZnVuY3Rpb24oWSxXLE4pe2Zv''@;'; put 'put ''cih2YXIgZWU9dGhpcy5fZW5kb1duYWZUMSxxPXRoaXMuX2VuZG9XbmFmVDIsSj0wO0o8WS5sZW5ndGg7SisrKXt2YXIgc2U9dGhpcy5fZW5kb1NwbGl0KFdbSl0pLGFlPVlbSl0sZmU9YWUuX2dldEJldGEoKTtzZS5rMS5uZWdhdGl2ZSYmKHNlLmsxLmluZWcoKSxhZT1hZS5uZWcoITApKSxz''@;'; put 'put ''ZS5rMi5uZWdhdGl2ZSYmKHNlLmsyLmluZWcoKSxmZT1mZS5uZWcoITApKSxlZVsyKkpdPWFlLGVlWzIqSisxXT1mZSxxWzIqSl09c2UuazEscVsyKkorMV09c2UuazJ9Zm9yKHZhciBkZT10aGlzLl93bmFmTXVsQWRkKDEsZWUscSwyKkosTiksdmU9MDt2ZTwyKko7dmUrKyllZVt2ZV09bnVs''@;'; put 'put ''bCxxW3ZlXT1udWxsO3JldHVybiBkZX0sRShaLE1lLkJhc2VQb2ludCksUS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oWSxXLE4pe3JldHVybiBuZXcgWih0aGlzLFksVyxOKX0sUS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihZLFcpe3JldHVybiBaLmZyb21KU09OKHRoaXMs''@;'; put 'put ''WSxXKX0sWi5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24oKXtpZih0aGlzLmN1cnZlLmVuZG8pe3ZhciBZPXRoaXMucHJlY29tcHV0ZWQ7aWYoWSYmWS5iZXRhKXJldHVybiBZLmJldGE7dmFyIFc9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRh''@;'; put 'put ''KSx0aGlzLnkpO2lmKFkpe3ZhciBOPXRoaXMuY3VydmUsZWU9ZnVuY3Rpb24ocSl7cmV0dXJuIE4ucG9pbnQocS54LnJlZE11bChOLmVuZG8uYmV0YSkscS55KX07WS5iZXRhPVcsVy5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjpZLm5hZiYme3duZDpZLm5hZi53bmQscG9pbnRzOlkubmFm''@;'; put 'put ''LnBvaW50cy5tYXAoZWUpfSxkb3VibGVzOlkuZG91YmxlcyYme3N0ZXA6WS5kb3VibGVzLnN0ZXAscG9pbnRzOlkuZG91Ymxlcy5wb2ludHMubWFwKGVlKX19fXJldHVybiBXfX0sWi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJlY29tcHV0ZWQ/W3RoaXMueCx0''@;'; put 'put ''aGlzLnksdGhpcy5wcmVjb21wdXRlZCYme2RvdWJsZXM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzJiZ7c3RlcDp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMuc3RlcCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnBvaW50cy5zbGljZSgxKX0sbmFmOnRoaXMucHJlY29tcHV0ZWQu''@;'; put 'put ''bmFmJiZ7d25kOnRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNsaWNlKDEpfX1dOlt0aGlzLngsdGhpcy55XX0sWi5mcm9tSlNPTj1mdW5jdGlvbihZLFcsTil7InN0cmluZyI9PXR5cGVvZiBXJiYoVz1KU09OLnBhcnNlKFcpKTt2''@;'; put 'put ''YXIgZWU9WS5wb2ludChXWzBdLFdbMV0sTik7aWYoIVdbMl0pcmV0dXJuIGVlO2Z1bmN0aW9uIHEoc2Upe3JldHVybiBZLnBvaW50KHNlWzBdLHNlWzFdLE4pfXZhciBKPVdbMl07cmV0dXJuIGVlLnByZWNvbXB1dGVkPXtiZXRhOm51bGwsZG91YmxlczpKLmRvdWJsZXMmJntzdGVwOkouZG91''@;'; put 'put ''Ymxlcy5zdGVwLHBvaW50czpbZWVdLmNvbmNhdChKLmRvdWJsZXMucG9pbnRzLm1hcChxKSl9LG5hZjpKLm5hZiYme3duZDpKLm5hZi53bmQscG9pbnRzOltlZV0uY29uY2F0KEoubmFmLnBvaW50cy5tYXAocSkpfX0sZWV9LFoucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sWi5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLmluZn0sWi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFkpe2lmKHRoaXMuaW5mKXJldHVybiBZO2lmKFkuaW5mKXJldHVybiB0aGlzO2lmKHRoaXMuZXEoWSkpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5uZWcoKS5lcShZKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChu''@;'; put 'put ''dWxsLG51bGwpO2lmKDA9PT10aGlzLnguY21wKFkueCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgVz10aGlzLnkucmVkU3ViKFkueSk7MCE9PVcuY21wbigwKSYmKFc9Vy5yZWRNdWwodGhpcy54LnJlZFN1YihZLngpLnJlZEludm0oKSkpO3ZhciBOPVcucmVkU3Fy''@;'; put 'put ''KCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIoWS54KSxlZT1XLnJlZE11bCh0aGlzLngucmVkU3ViKE4pKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoTixlZSl9LFoucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBZ''@;'; put 'put ''PXRoaXMueS5yZWRBZGQodGhpcy55KTtpZigwPT09WS5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIFc9dGhpcy5jdXJ2ZS5hLE49dGhpcy54LnJlZFNxcigpLGVlPVkucmVkSW52bSgpLHE9Ti5yZWRBZGQoTikucmVkSUFkZChOKS5yZWRJQWRkKFcpLnJl''@;'; put 'put ''ZE11bChlZSksSj1xLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKSxzZT1xLnJlZE11bCh0aGlzLngucmVkU3ViKEopKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoSixzZSl9LFoucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy54LmZyb21SZWQoKX0sWi5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnkuZnJvbVJlZCgpfSxaLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oWSl7cmV0dXJuIFk9bmV3IEIoWSwxNiksdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLl9oYXNEb3VibGVzKFkpP3Ro''@;'; put 'put ''aXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsWSk6dGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFt0aGlzXSxbWV0pOnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxZKX0sWi5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKFksVyxOKXt2YXIgZWU9W3RoaXMsV10s''@;'; put 'put ''cT1bWSxOXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKGVlLHEpOnRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxlZSxxLDIpfSxaLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKFksVyxOKXt2YXIgZWU9W3RoaXMsV10scT1bWSxOXTtyZXR1cm4g''@;'; put 'put ''dGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKGVlLHEsITApOnRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxlZSxxLDIsITApfSxaLnByb3RvdHlwZS5lcT1mdW5jdGlvbihZKXtyZXR1cm4gdGhpcz09PVl8fHRoaXMuaW5mPT09WS5pbmYmJih0aGlzLmluZnx8MD09''@;'; put 'put ''PXRoaXMueC5jbXAoWS54KSYmMD09PXRoaXMueS5jbXAoWS55KSl9LFoucHJvdG90eXBlLm5lZz1mdW5jdGlvbihZKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgVz10aGlzLmN1cnZlLnBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCkpO2lmKFkmJnRoaXMucHJlY29tcHV0ZWQpe3Zh''@;'; put 'put ''ciBOPXRoaXMucHJlY29tcHV0ZWQsZWU9ZnVuY3Rpb24ocSl7cmV0dXJuIHEubmVnKCl9O1cucHJlY29tcHV0ZWQ9e25hZjpOLm5hZiYme3duZDpOLm5hZi53bmQscG9pbnRzOk4ubmFmLnBvaW50cy5tYXAoZWUpfSxkb3VibGVzOk4uZG91YmxlcyYme3N0ZXA6Ti5kb3VibGVzLnN0ZXAscG9p''@;'; put 'put ''bnRzOk4uZG91Ymxlcy5wb2ludHMubWFwKGVlKX19fXJldHVybiBXfSxaLnByb3RvdHlwZS50b0o9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmY/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpOnRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUp''@;'; put 'put ''fSxFKGllLE1lLkJhc2VQb2ludCksUS5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uKFksVyxOKXtyZXR1cm4gbmV3IGllKHRoaXMsWSxXLE4pfSxpZS5wcm90b3R5cGUudG9QPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxs''@;'; put 'put ''KTt2YXIgWT10aGlzLnoucmVkSW52bSgpLFc9WS5yZWRTcXIoKSxOPXRoaXMueC5yZWRNdWwoVyksZWU9dGhpcy55LnJlZE11bChXKS5yZWRNdWwoWSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoTixlZSl9LGllLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5q''@;'; put 'put ''cG9pbnQodGhpcy54LHRoaXMueS5yZWROZWcoKSx0aGlzLnopfSxpZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFkpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBZO2lmKFkuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBXPVkuei5yZWRTcXIoKSxOPXRoaXMuei5yZWRTcXIoKSxl''@;'; put 'put ''ZT10aGlzLngucmVkTXVsKFcpLHE9WS54LnJlZE11bChOKSxKPXRoaXMueS5yZWRNdWwoVy5yZWRNdWwoWS56KSksc2U9WS55LnJlZE11bChOLnJlZE11bCh0aGlzLnopKSxhZT1lZS5yZWRTdWIocSksZmU9Si5yZWRTdWIoc2UpO2lmKDA9PT1hZS5jbXBuKDApKXJldHVybiAwIT09ZmUuY21w''@;'; put 'put ''bigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgZGU9YWUucmVkU3FyKCksdmU9ZGUucmVkTXVsKGFlKSxBZT1lZS5yZWRNdWwoZGUpLGtlPWZlLnJlZFNxcigpLnJlZElBZGQodmUpLnJlZElTdWIoQWUpLnJlZElTdWIoQWUpLFNlPWZlLnJlZE11''@;'; put 'put ''bChBZS5yZWRJU3ViKGtlKSkucmVkSVN1YihKLnJlZE11bCh2ZSkpLEllPXRoaXMuei5yZWRNdWwoWS56KS5yZWRNdWwoYWUpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChrZSxTZSxJZSl9LGllLnByb3RvdHlwZS5taXhlZEFkZD1mdW5jdGlvbihZKXtpZih0aGlzLmlzSW5maW5pdHkoKSly''@;'; put 'put ''ZXR1cm4gWS50b0ooKTtpZihZLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgVz10aGlzLnoucmVkU3FyKCksTj10aGlzLngsZWU9WS54LnJlZE11bChXKSxxPXRoaXMueSxKPVkueS5yZWRNdWwoVykucmVkTXVsKHRoaXMueiksc2U9Ti5yZWRTdWIoZWUpLGFlPXEucmVkU3ViKEopO2lm''@;'; put 'put ''KDA9PT1zZS5jbXBuKDApKXJldHVybiAwIT09YWUuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgZmU9c2UucmVkU3FyKCksZGU9ZmUucmVkTXVsKHNlKSx2ZT1OLnJlZE11bChmZSksQWU9YWUucmVkU3FyKCkucmVkSUFkZChkZSkucmVk''@;'; put 'put ''SVN1Yih2ZSkucmVkSVN1Yih2ZSksa2U9YWUucmVkTXVsKHZlLnJlZElTdWIoQWUpKS5yZWRJU3ViKHEucmVkTXVsKGRlKSksU2U9dGhpcy56LnJlZE11bChzZSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KEFlLGtlLFNlKX0saWUucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oWSl7aWYoMD09''@;'; put 'put ''PVkpcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIVkpcmV0dXJuIHRoaXMuZGJsKCk7dmFyIFc7aWYodGhpcy5jdXJ2ZS56ZXJvQXx8dGhpcy5jdXJ2ZS50aHJlZUEpe3ZhciBOPXRoaXM7Zm9yKFc9MDtXPFk7VysrKU49Ti5kYmwoKTtyZXR1cm4gTn12''@;'; put 'put ''YXIgZWU9dGhpcy5jdXJ2ZS5hLHE9dGhpcy5jdXJ2ZS50aW52LEo9dGhpcy54LHNlPXRoaXMueSxhZT10aGlzLnosZmU9YWUucmVkU3FyKCkucmVkU3FyKCksZGU9c2UucmVkQWRkKHNlKTtmb3IoVz0wO1c8WTtXKyspe3ZhciB2ZT1KLnJlZFNxcigpLEFlPWRlLnJlZFNxcigpLGtlPUFlLnJl''@;'; put 'put ''ZFNxcigpLFNlPXZlLnJlZEFkZCh2ZSkucmVkSUFkZCh2ZSkucmVkSUFkZChlZS5yZWRNdWwoZmUpKSxJZT1KLnJlZE11bChBZSksVGU9U2UucmVkU3FyKCkucmVkSVN1YihJZS5yZWRBZGQoSWUpKSxFZT1JZS5yZWRJU3ViKFRlKSxoZT1TZS5yZWRNdWwoRWUpO2hlPWhlLnJlZElBZGQoaGUp''@;'; put 'put ''LnJlZElTdWIoa2UpO3ZhciBPPWRlLnJlZE11bChhZSk7VysxPFkmJihmZT1mZS5yZWRNdWwoa2UpKSxKPVRlLGFlPU8sZGU9aGV9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KEosZGUucmVkTXVsKHEpLGFlKX0saWUucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5m''@;'; put 'put ''aW5pdHkoKT90aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRoaXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LGllLnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbigpe3ZhciBZLFcsTjtpZih0aGlzLnpPbmUpe3ZhciBlZT10aGlzLngu''@;'; put 'put ''cmVkU3FyKCkscT10aGlzLnkucmVkU3FyKCksSj1xLnJlZFNxcigpLHNlPXRoaXMueC5yZWRBZGQocSkucmVkU3FyKCkucmVkSVN1YihlZSkucmVkSVN1YihKKTtzZT1zZS5yZWRJQWRkKHNlKTt2YXIgYWU9ZWUucmVkQWRkKGVlKS5yZWRJQWRkKGVlKSxmZT1hZS5yZWRTcXIoKS5yZWRJU3Vi''@;'; put 'put ''KHNlKS5yZWRJU3ViKHNlKSxkZT1KLnJlZElBZGQoSik7ZGU9KGRlPWRlLnJlZElBZGQoZGUpKS5yZWRJQWRkKGRlKSxZPWZlLFc9YWUucmVkTXVsKHNlLnJlZElTdWIoZmUpKS5yZWRJU3ViKGRlKSxOPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciB2ZT10aGlzLngucmVkU3FyKCks''@;'; put 'put ''QWU9dGhpcy55LnJlZFNxcigpLGtlPUFlLnJlZFNxcigpLFNlPXRoaXMueC5yZWRBZGQoQWUpLnJlZFNxcigpLnJlZElTdWIodmUpLnJlZElTdWIoa2UpO1NlPVNlLnJlZElBZGQoU2UpO3ZhciBJZT12ZS5yZWRBZGQodmUpLnJlZElBZGQodmUpLFRlPUllLnJlZFNxcigpLEVlPWtlLnJlZElB''@;'; put 'put ''ZGQoa2UpO0VlPShFZT1FZS5yZWRJQWRkKEVlKSkucmVkSUFkZChFZSksWT1UZS5yZWRJU3ViKFNlKS5yZWRJU3ViKFNlKSxXPUllLnJlZE11bChTZS5yZWRJU3ViKFkpKS5yZWRJU3ViKEVlKSxOPShOPXRoaXMueS5yZWRNdWwodGhpcy56KSkucmVkSUFkZChOKX1yZXR1cm4gdGhpcy5jdXJ2''@;'; put 'put ''ZS5qcG9pbnQoWSxXLE4pfSxpZS5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uKCl7dmFyIFksVyxOO2lmKHRoaXMuek9uZSl7dmFyIGVlPXRoaXMueC5yZWRTcXIoKSxxPXRoaXMueS5yZWRTcXIoKSxKPXEucmVkU3FyKCksc2U9dGhpcy54LnJlZEFkZChxKS5yZWRTcXIoKS5yZWRJU3Vi''@;'; put 'put ''KGVlKS5yZWRJU3ViKEopO3NlPXNlLnJlZElBZGQoc2UpO3ZhciBhZT1lZS5yZWRBZGQoZWUpLnJlZElBZGQoZWUpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKSxmZT1hZS5yZWRTcXIoKS5yZWRJU3ViKHNlKS5yZWRJU3ViKHNlKTtZPWZlO3ZhciBkZT1KLnJlZElBZGQoSik7ZGU9KGRlPWRlLnJl''@;'; put 'put ''ZElBZGQoZGUpKS5yZWRJQWRkKGRlKSxXPWFlLnJlZE11bChzZS5yZWRJU3ViKGZlKSkucmVkSVN1YihkZSksTj10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgdmU9dGhpcy56LnJlZFNxcigpLEFlPXRoaXMueS5yZWRTcXIoKSxrZT10aGlzLngucmVkTXVsKEFlKSxTZT10aGlzLngu''@;'; put 'put ''cmVkU3ViKHZlKS5yZWRNdWwodGhpcy54LnJlZEFkZCh2ZSkpO1NlPVNlLnJlZEFkZChTZSkucmVkSUFkZChTZSk7dmFyIEllPWtlLnJlZElBZGQoa2UpLFRlPShJZT1JZS5yZWRJQWRkKEllKSkucmVkQWRkKEllKTtZPVNlLnJlZFNxcigpLnJlZElTdWIoVGUpLE49dGhpcy55LnJlZEFkZCh0''@;'; put 'put ''aGlzLnopLnJlZFNxcigpLnJlZElTdWIoQWUpLnJlZElTdWIodmUpO3ZhciBFZT1BZS5yZWRTcXIoKTtFZT0oRWU9KEVlPUVlLnJlZElBZGQoRWUpKS5yZWRJQWRkKEVlKSkucmVkSUFkZChFZSksVz1TZS5yZWRNdWwoSWUucmVkSVN1YihZKSkucmVkSVN1YihFZSl9cmV0dXJuIHRoaXMuY3Vy''@;'; put 'put ''dmUuanBvaW50KFksVyxOKX0saWUucHJvdG90eXBlLl9kYmw9ZnVuY3Rpb24oKXt2YXIgWT10aGlzLmN1cnZlLmEsVz10aGlzLngsTj10aGlzLnksZWU9dGhpcy56LHE9ZWUucmVkU3FyKCkucmVkU3FyKCksSj1XLnJlZFNxcigpLHNlPU4ucmVkU3FyKCksYWU9Si5yZWRBZGQoSikucmVkSUFk''@;'; put 'put ''ZChKKS5yZWRJQWRkKFkucmVkTXVsKHEpKSxmZT1XLnJlZEFkZChXKSxkZT0oZmU9ZmUucmVkSUFkZChmZSkpLnJlZE11bChzZSksdmU9YWUucmVkU3FyKCkucmVkSVN1YihkZS5yZWRBZGQoZGUpKSxBZT1kZS5yZWRJU3ViKHZlKSxrZT1zZS5yZWRTcXIoKTtrZT0oa2U9KGtlPWtlLnJlZElB''@;'; put 'put ''ZGQoa2UpKS5yZWRJQWRkKGtlKSkucmVkSUFkZChrZSk7dmFyIFNlPWFlLnJlZE11bChBZSkucmVkSVN1YihrZSksSWU9Ti5yZWRBZGQoTikucmVkTXVsKGVlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQodmUsU2UsSWUpfSxpZS5wcm90b3R5cGUudHJwbD1mdW5jdGlvbigpe2lmKCF0aGlz''@;'; put 'put ''LmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgWT10aGlzLngucmVkU3FyKCksVz10aGlzLnkucmVkU3FyKCksTj10aGlzLnoucmVkU3FyKCksZWU9Vy5yZWRTcXIoKSxxPVkucmVkQWRkKFkpLnJlZElBZGQoWSksSj1xLnJlZFNxcigpLHNlPXRoaXMueC5yZWRB''@;'; put 'put ''ZGQoVykucmVkU3FyKCkucmVkSVN1YihZKS5yZWRJU3ViKGVlKSxhZT0oc2U9KHNlPShzZT1zZS5yZWRJQWRkKHNlKSkucmVkQWRkKHNlKS5yZWRJQWRkKHNlKSkucmVkSVN1YihKKSkucmVkU3FyKCksZmU9ZWUucmVkSUFkZChlZSk7ZmU9KGZlPShmZT1mZS5yZWRJQWRkKGZlKSkucmVkSUFk''@;'; put 'put ''ZChmZSkpLnJlZElBZGQoZmUpO3ZhciBkZT1xLnJlZElBZGQoc2UpLnJlZFNxcigpLnJlZElTdWIoSikucmVkSVN1YihhZSkucmVkSVN1YihmZSksdmU9Vy5yZWRNdWwoZGUpO3ZlPSh2ZT12ZS5yZWRJQWRkKHZlKSkucmVkSUFkZCh2ZSk7dmFyIEFlPXRoaXMueC5yZWRNdWwoYWUpLnJlZElT''@;'; put 'put ''dWIodmUpO0FlPShBZT1BZS5yZWRJQWRkKEFlKSkucmVkSUFkZChBZSk7dmFyIGtlPXRoaXMueS5yZWRNdWwoZGUucmVkTXVsKGZlLnJlZElTdWIoZGUpKS5yZWRJU3ViKHNlLnJlZE11bChhZSkpKTtrZT0oa2U9KGtlPWtlLnJlZElBZGQoa2UpKS5yZWRJQWRkKGtlKSkucmVkSUFkZChrZSk7''@;'; put 'put ''dmFyIFNlPXRoaXMuei5yZWRBZGQoc2UpLnJlZFNxcigpLnJlZElTdWIoTikucmVkSVN1YihhZSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KEFlLGtlLFNlKX0saWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihZLFcpe3JldHVybiBZPW5ldyBCKFksVyksdGhpcy5jdXJ2ZS5fd25hZk11bCh0''@;'; put 'put ''aGlzLFkpfSxpZS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oWSl7aWYoImFmZmluZSI9PT1ZLnR5cGUpcmV0dXJuIHRoaXMuZXEoWS50b0ooKSk7aWYodGhpcz09PVkpcmV0dXJuITA7dmFyIFc9dGhpcy56LnJlZFNxcigpLE49WS56LnJlZFNxcigpO2lmKDAhPT10aGlzLngucmVkTXVsKE4pLnJl''@;'; put 'put ''ZElTdWIoWS54LnJlZE11bChXKSkuY21wbigwKSlyZXR1cm4hMTt2YXIgZWU9Vy5yZWRNdWwodGhpcy56KSxxPU4ucmVkTXVsKFkueik7cmV0dXJuIDA9PT10aGlzLnkucmVkTXVsKHEpLnJlZElTdWIoWS55LnJlZE11bChlZSkpLmNtcG4oMCl9LGllLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rp''@;'; put 'put ''b24oWSl7dmFyIFc9dGhpcy56LnJlZFNxcigpLE49WS50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKFcpO2lmKDA9PT10aGlzLnguY21wKE4pKXJldHVybiEwO2Zvcih2YXIgZWU9WS5jbG9uZSgpLHE9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bChXKTs7KXtpZihlZS5pYWRkKHRoaXMuY3Vy''@;'; put 'put ''dmUubiksZWUuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoTi5yZWRJQWRkKHEpLDA9PT10aGlzLnguY21wKE4pKXJldHVybiEwfX0saWUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBKUG9pbnQgSW5maW5pdHk+Ijoi''@;'; put 'put ''PEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnoudG9TdHJpbmcoMTYsMikrIj4ifSxpZS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9fSw1''@;'; put 'put ''MjkxNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGllLGdlPUplLEI9TCgzNzA4NCksRT1MKDQ2MjcwKSxVPUwoNjE5NzApLmFzc2VydDtmdW5jdGlvbiBRKGxlKXt0aGlzLmN1cnZlPSJzaG9ydCI9PT1sZS50eXBlP25ldyBFLnNob3J0KGxlKToiZWR3YXJkcyI9PT1sZS50eXBlP25l''@;'; put 'put ''dyBFLmVkd2FyZHMobGUpOm5ldyBFLm1vbnQobGUpLHRoaXMuZz10aGlzLmN1cnZlLmcsdGhpcy5uPXRoaXMuY3VydmUubix0aGlzLmhhc2g9bGUuaGFzaCxVKHRoaXMuZy52YWxpZGF0ZSgpLCJJbnZhbGlkIGN1cnZlIiksVSh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCJJbnZh''@;'; put 'put ''bGlkIGN1cnZlLCBHKk4gIT0gTyIpfWZ1bmN0aW9uIFoobGUsWSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGdlLGxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgVz1uZXcgUShZKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGdlLGxlLHtj''@;'; put 'put ''b25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpXfSksV319KX1nZS5QcmVzZXRDdXJ2ZT1RLFooInAxOTIiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAxOTIiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxIixo''@;'; put 'put ''YXNoOkIuc2hhMjU2LGdSZWQ6ITEsZzpbIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyIiwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTEiXX0pLFooInAyMjQiLHt0eXBlOiJzaG9ydCIscHJp''@;'; put 'put ''bWU6InAyMjQiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSIsYjoiYjQwNTBhODUgMGMwNGIzYWIg''@;'; put 'put ''ZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkIixoYXNoOkIuc2hhMjU2LGdSZWQ6ITEsZzpbImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5''@;'; put 'put ''IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxIiwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQiXX0pLFooInAyNTYiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAw''@;'; put 'put ''MDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJj''@;'; put 'put ''IDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiIixuOiJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MSIsaGFzaDpCLnNoYTI1NixnUmVkOiExLGc6WyI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZl''@;'; put 'put ''NSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NiIsIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1Il19KSxaKCJwMzg0Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjIixiOiJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiA1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZiIs''@;'; put 'put ''bjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMiLGhhc2g6Qi5zaGEzODQsZ1JlZDohMSxnOlsiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUg''@;'; put 'put ''ZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjciLCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAwYTYwYjFjZSAx''@;'; put 'put ''ZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZiJdfSksWigicDUyMSIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgM2JiMWJm''@;'; put 'put ''MDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAiLG46IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4IGY3MDlhNWQwIDNiYjVj''@;'; put 'put ''OWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5IixoYXNoOkIuc2hhNTEyLGdSZWQ6ITEsZzpbIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5IDA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3''@;'; put 'put ''IGEyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2IiwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgM2ZhZDA3NjEg''@;'; put 'put ''MzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAiXX0pLFooImN1cnZlMjU1MTkiLHt0eXBlOiJtb250IixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiI3NmQwNiIs''@;'; put 'put ''YjoiMSIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpCLnNoYTI1NixnUmVkOiExLGc6WyI5Il19KSxaKCJlZDI1NTE5Iix7dHlwZToiZWR3YXJkcyIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiLTEiLGM6IjEiLGQ6IjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMiLG46IjEwMDAwMDAwMDAwMDAwMDAg''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6Qi5zaGEyNTYsZ1JlZDohMSxnOlsiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYSIsIjY2NjY2NjY2NjY2NjY2NjY2NjY2''@;'; put 'put ''NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgiXX0pO3RyeXtpZT1MKDI1MTUwKX1jYXRjaChsZSl7aWU9dm9pZCAwfVooInNlY3AyNTZrMSIse3R5cGU6InNob3J0IixwcmltZToiazI1NiIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiLGE6IjAiLGI6IjciLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxIixoOiIxIixoYXNoOkIuc2hhMjU2LGJldGE6IjdhZTk2YTJiNjU3YzA3''@;'; put 'put ''MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiLGxhbWJkYToiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MiIsYmFzaXM6W3thOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0''@;'; put 'put ''ZWIxNSIsYjoiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIn0se2E6IjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIsYjoiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUifV0sZ1JlZDohMSxnOlsiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBi''@;'; put 'put ''MDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgiLGllXX0pfSw2NzYyNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMTc0MzMpLEI9TCg1MjQz''@;'; put 'put ''OCksRT1MKDYxOTcwKSxNZT1MKDUyOTE2KSxVPUwoMzc5NTApLFE9RS5hc3NlcnQsWj1MKDkxMjU5KSxpZT1MKDY1OTU3KTtmdW5jdGlvbiBsZShZKXtpZighKHRoaXMgaW5zdGFuY2VvZiBsZSkpcmV0dXJuIG5ldyBsZShZKTsic3RyaW5nIj09dHlwZW9mIFkmJihRKE9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUuaGFzT3duUHJvcGVydHkuY2FsbChNZSxZKSwiVW5rbm93biBjdXJ2ZSAiK1kpLFk9TWVbWV0pLFkgaW5zdGFuY2VvZiBNZS5QcmVzZXRDdXJ2ZSYmKFk9e2N1cnZlOll9KSx0aGlzLmN1cnZlPVkuY3VydmUuY3VydmUsdGhpcy5uPXRoaXMuY3VydmUubix0aGlzLm5oPXRoaXMubi51c2hy''@;'; put 'put ''bigxKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMuZz1ZLmN1cnZlLmcsdGhpcy5nLnByZWNvbXB1dGUoWS5jdXJ2ZS5uLmJpdExlbmd0aCgpKzEpLHRoaXMuaGFzaD1ZLmhhc2h8fFkuY3VydmUuaGFzaH1YZS5leHBvcnRzPWxlLGxlLnByb3RvdHlwZS5rZXlQYWlyPWZ1bmN0aW9uKFcpe3Jl''@;'; put 'put ''dHVybiBuZXcgWih0aGlzLFcpfSxsZS5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gWi5mcm9tUHJpdmF0ZSh0aGlzLFcsTil9LGxlLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKFcsTil7cmV0dXJuIFouZnJvbVB1YmxpYyh0aGlzLFcsTil9''@;'; put 'put ''LGxlLnByb3RvdHlwZS5nZW5LZXlQYWlyPWZ1bmN0aW9uKFcpe1d8fChXPXt9KTtmb3IodmFyIE49bmV3IEIoe2hhc2g6dGhpcy5oYXNoLHBlcnM6Vy5wZXJzLHBlcnNFbmM6Vy5wZXJzRW5jfHwidXRmOCIsZW50cm9weTpXLmVudHJvcHl8fFUodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksZW50''@;'; put 'put ''cm9weUVuYzpXLmVudHJvcHkmJlcuZW50cm9weUVuY3x8InV0ZjgiLG5vbmNlOnRoaXMubi50b0FycmF5KCl9KSxlZT10aGlzLm4uYnl0ZUxlbmd0aCgpLHE9dGhpcy5uLnN1YihuZXcgZ2UoMikpOzspe3ZhciBKPW5ldyBnZShOLmdlbmVyYXRlKGVlKSk7aWYoIShKLmNtcChxKT4wKSlyZXR1''@;'; put 'put ''cm4gSi5pYWRkbigxKSx0aGlzLmtleUZyb21Qcml2YXRlKEopfX0sbGUucHJvdG90eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbihXLE4pe3ZhciBlZT04KlcuYnl0ZUxlbmd0aCgpLXRoaXMubi5iaXRMZW5ndGgoKTtyZXR1cm4gZWU+MCYmKFc9Vy51c2hybihlZSkpLCFOJiZXLmNtcCh0aGlz''@;'; put 'put ''Lm4pPj0wP1cuc3ViKHRoaXMubik6V30sbGUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oVyxOLGVlLHEpeyJvYmplY3QiPT10eXBlb2YgZWUmJihxPWVlLGVlPW51bGwpLHF8fChxPXt9KSxOPXRoaXMua2V5RnJvbVByaXZhdGUoTixlZSksVz10aGlzLl90cnVuY2F0ZVRvTihuZXcgZ2UoVywx''@;'; put 'put ''NikpO2Zvcih2YXIgSj10aGlzLm4uYnl0ZUxlbmd0aCgpLHNlPU4uZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoImJlIixKKSxhZT1XLnRvQXJyYXkoImJlIixKKSxmZT1uZXcgQih7aGFzaDp0aGlzLmhhc2gsZW50cm9weTpzZSxub25jZTphZSxwZXJzOnEucGVycyxwZXJzRW5jOnEucGVyc0VuY3x8''@;'; put 'put ''InV0ZjgifSksZGU9dGhpcy5uLnN1YihuZXcgZ2UoMSkpLHZlPTA7O3ZlKyspe3ZhciBBZT1xLms/cS5rKHZlKTpuZXcgZ2UoZmUuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO2lmKCEoKEFlPXRoaXMuX3RydW5jYXRlVG9OKEFlLCEwKSkuY21wbigxKTw9MHx8QWUuY21wKGRlKT49''@;'; put 'put ''MCkpe3ZhciBrZT10aGlzLmcubXVsKEFlKTtpZigha2UuaXNJbmZpbml0eSgpKXt2YXIgU2U9a2UuZ2V0WCgpLEllPVNlLnVtb2QodGhpcy5uKTtpZigwIT09SWUuY21wbigwKSl7dmFyIFRlPUFlLmludm0odGhpcy5uKS5tdWwoSWUubXVsKE4uZ2V0UHJpdmF0ZSgpKS5pYWRkKFcpKTtpZigw''@;'; put 'put ''IT09KFRlPVRlLnVtb2QodGhpcy5uKSkuY21wbigwKSl7dmFyIEVlPShrZS5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09U2UuY21wKEllKT8yOjApO3JldHVybiBxLmNhbm9uaWNhbCYmVGUuY21wKHRoaXMubmgpPjAmJihUZT10aGlzLm4uc3ViKFRlKSxFZV49MSksbmV3IGllKHtyOkllLHM6''@;'; put 'put ''VGUscmVjb3ZlcnlQYXJhbTpFZX0pfX19fX19LGxlLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oVyxOLGVlLHEpe1c9dGhpcy5fdHJ1bmNhdGVUb04obmV3IGdlKFcsMTYpKSxlZT10aGlzLmtleUZyb21QdWJsaWMoZWUscSk7dmFyIEo9KE49bmV3IGllKE4sImhleCIpKS5yLHNlPU4ucztp''@;'; put 'put ''ZihKLmNtcG4oMSk8MHx8Si5jbXAodGhpcy5uKT49MHx8c2UuY21wbigxKTwwfHxzZS5jbXAodGhpcy5uKT49MClyZXR1cm4hMTt2YXIgdmUsYWU9c2UuaW52bSh0aGlzLm4pLGZlPWFlLm11bChXKS51bW9kKHRoaXMubiksZGU9YWUubXVsKEopLnVtb2QodGhpcy5uKTtyZXR1cm4gdGhpcy5j''@;'; put 'put ''dXJ2ZS5fbWF4d2VsbFRyaWNrPyEodmU9dGhpcy5nLmptdWxBZGQoZmUsZWUuZ2V0UHVibGljKCksZGUpKS5pc0luZmluaXR5KCkmJnZlLmVxWFRvUChKKTohKHZlPXRoaXMuZy5tdWxBZGQoZmUsZWUuZ2V0UHVibGljKCksZGUpKS5pc0luZmluaXR5KCkmJjA9PT12ZS5nZXRYKCkudW1vZCh0''@;'; put 'put ''aGlzLm4pLmNtcChKKX0sbGUucHJvdG90eXBlLnJlY292ZXJQdWJLZXk9ZnVuY3Rpb24oWSxXLE4sZWUpe1EoKDMmTik9PT1OLCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIiksVz1uZXcgaWUoVyxlZSk7dmFyIHE9dGhpcy5uLEo9bmV3IGdlKFkpLHNlPVcucixh''@;'; put 'put ''ZT1XLnMsZmU9MSZOLGRlPU4+PjE7aWYoc2UuY21wKHRoaXMuY3VydmUucC51bW9kKHRoaXMuY3VydmUubikpPj0wJiZkZSl0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZSIpO3NlPXRoaXMuY3VydmUucG9pbnRGcm9tWChkZT9zZS5hZGQodGhp''@;'; put 'put ''cy5jdXJ2ZS5uKTpzZSxmZSk7dmFyIHZlPVcuci5pbnZtKHEpLEFlPXEuc3ViKEopLm11bCh2ZSkudW1vZChxKSxrZT1hZS5tdWwodmUpLnVtb2QocSk7cmV0dXJuIHRoaXMuZy5tdWxBZGQoQWUsc2Usa2UpfSxsZS5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbT1mdW5jdGlvbihZLFcs''@;'; put 'put ''TixlZSl7aWYobnVsbCE9PShXPW5ldyBpZShXLGVlKSkucmVjb3ZlcnlQYXJhbSlyZXR1cm4gVy5yZWNvdmVyeVBhcmFtO2Zvcih2YXIgcT0wO3E8NDtxKyspe3ZhciBKO3RyeXtKPXRoaXMucmVjb3ZlclB1YktleShZLFcscSl9Y2F0Y2goc2Upe2NvbnRpbnVlfWlmKEouZXEoTikpcmV0dXJu''@;'; put 'put ''IHF9dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3IiKX19LDkxMjU5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgxNzQzMyksRT1MKDYxOTcwKS5hc3NlcnQ7ZnVuY3Rpb24gTWUoVSxRKXt0aGlzLmVjPVUsdGhpcy5wcml2PW51''@;'; put 'put ''bGwsdGhpcy5wdWI9bnVsbCxRLnByaXYmJnRoaXMuX2ltcG9ydFByaXZhdGUoUS5wcml2LFEucHJpdkVuYyksUS5wdWImJnRoaXMuX2ltcG9ydFB1YmxpYyhRLnB1YixRLnB1YkVuYyl9WGUuZXhwb3J0cz1NZSxNZS5mcm9tUHVibGljPWZ1bmN0aW9uKFEsWixpZSl7cmV0dXJuIFogaW5zdGFu''@;'; put 'put ''Y2VvZiBNZT9aOm5ldyBNZShRLHtwdWI6WixwdWJFbmM6aWV9KX0sTWUuZnJvbVByaXZhdGU9ZnVuY3Rpb24oUSxaLGllKXtyZXR1cm4gWiBpbnN0YW5jZW9mIE1lP1o6bmV3IE1lKFEse3ByaXY6Wixwcml2RW5jOmllfSl9LE1lLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBR''@;'; put 'put ''PXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIFEuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVhc29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTpRLnZhbGlkYXRlKCk/US5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDohMSxy''@;'; put 'put ''ZWFzb246IlB1YmxpYyBrZXkgKiBOICE9IE8ifTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSBpcyBub3QgYSBwb2ludCJ9fSxNZS5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKFEsWil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBRJiYoWj1RLFE9bnVsbCksdGhpcy5wdWJ8fCh0''@;'; put 'put ''aGlzLnB1Yj10aGlzLmVjLmcubXVsKHRoaXMucHJpdikpLFo/dGhpcy5wdWIuZW5jb2RlKFosUSk6dGhpcy5wdWJ9LE1lLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKFEpe3JldHVybiJoZXgiPT09UT90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxNZS5wcm90b3R5''@;'; put 'put ''cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24oUSxaKXt0aGlzLnByaXY9bmV3IGdlKFEsWnx8MTYpLHRoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfSxNZS5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbihRLFope2lmKFEueHx8US55KXJldHVybiJtb250''@;'; put 'put ''Ij09PXRoaXMuZWMuY3VydmUudHlwZT9FKFEueCwiTmVlZCB4IGNvb3JkaW5hdGUiKTooInNob3J0Ij09PXRoaXMuZWMuY3VydmUudHlwZXx8ImVkd2FyZHMiPT09dGhpcy5lYy5jdXJ2ZS50eXBlKSYmRShRLngmJlEueSwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRpbmF0ZSIpLHZvaWQodGhp''@;'; put 'put ''cy5wdWI9dGhpcy5lYy5jdXJ2ZS5wb2ludChRLngsUS55KSk7dGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChRLFopfSxNZS5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKFEpe3JldHVybiBRLnZhbGlkYXRlKCl8fEUoUS52YWxpZGF0ZSgpLCJwdWJsaWMgcG9pbnQgbm90IHZh''@;'; put 'put ''bGlkYXRlZCIpLFEubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxNZS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihRLFosaWUpe3JldHVybiB0aGlzLmVjLnNpZ24oUSx0aGlzLFosaWUpfSxNZS5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKFEsWil7cmV0dXJuIHRoaXMuZWMudmVyaWZ5KFEsWix0''@;'; put 'put ''aGlzKX0sTWUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4iPEtleSBwcml2OiAiKyh0aGlzLnByaXYmJnRoaXMucHJpdi50b1N0cmluZygxNiwyKSkrIiBwdWI6ICIrKHRoaXMucHViJiZ0aGlzLnB1Yi5pbnNwZWN0KCkpKyIgPiJ9fSw2NTk1NzooWGUsSmUsTCk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIGdlPUwoMTc0MzMpLEI9TCg2MTk3MCksRT1CLmFzc2VydDtmdW5jdGlvbiBNZShsZSxZKXtpZihsZSBpbnN0YW5jZW9mIE1lKXJldHVybiBsZTt0aGlzLl9pbXBvcnRERVIobGUsWSl8fChFKGxlLnImJmxlLnMsIlNpZ25hdHVyZSB3aXRob3V0IHIgb3IgcyIpLHRoaXMu''@;'; put 'put ''cj1uZXcgZ2UobGUuciwxNiksdGhpcy5zPW5ldyBnZShsZS5zLDE2KSx0aGlzLnJlY292ZXJ5UGFyYW09dm9pZCAwPT09bGUucmVjb3ZlcnlQYXJhbT9udWxsOmxlLnJlY292ZXJ5UGFyYW0pfWZ1bmN0aW9uIFUoKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gUShsZSxZKXt2YXIgVz1sZVtZLnBs''@;'; put 'put ''YWNlKytdO2lmKCEoMTI4JlcpKXJldHVybiBXO3ZhciBOPTE1Jlc7aWYoMD09PU58fE4+NClyZXR1cm4hMTtmb3IodmFyIGVlPTAscT0wLEo9WS5wbGFjZTtxPE47cSsrLEorKyllZTw8PTgsZWV8PWxlW0pdLGVlPj4+PTA7cmV0dXJuIShlZTw9MTI3KSYmKFkucGxhY2U9SixlZSl9ZnVuY3Rp''@;'; put 'put ''b24gWihsZSl7Zm9yKHZhciBZPTAsVz1sZS5sZW5ndGgtMTshbGVbWV0mJiEoMTI4JmxlW1krMV0pJiZZPFc7KVkrKztyZXR1cm4gMD09PVk/bGU6bGUuc2xpY2UoWSl9ZnVuY3Rpb24gaWUobGUsWSl7aWYoWTwxMjgpbGUucHVzaChZKTtlbHNle3ZhciBXPTErKE1hdGgubG9nKFkpL01hdGgu''@;'; put 'put ''TE4yPj4+Myk7Zm9yKGxlLnB1c2goMTI4fFcpOy0tVzspbGUucHVzaChZPj4+KFc8PDMpJjI1NSk7bGUucHVzaChZKX19WGUuZXhwb3J0cz1NZSxNZS5wcm90b3R5cGUuX2ltcG9ydERFUj1mdW5jdGlvbihZLFcpe1k9Qi50b0FycmF5KFksVyk7dmFyIE49bmV3IFU7aWYoNDghPT1ZW04ucGxh''@;'; put 'put ''Y2UrK10pcmV0dXJuITE7dmFyIGVlPVEoWSxOKTtpZighMT09PWVlfHxlZStOLnBsYWNlIT09WS5sZW5ndGh8fDIhPT1ZW04ucGxhY2UrK10pcmV0dXJuITE7dmFyIHE9UShZLE4pO2lmKCExPT09cSlyZXR1cm4hMTt2YXIgSj1ZLnNsaWNlKE4ucGxhY2UscStOLnBsYWNlKTtpZihOLnBsYWNl''@;'; put 'put ''Kz1xLDIhPT1ZW04ucGxhY2UrK10pcmV0dXJuITE7dmFyIHNlPVEoWSxOKTtpZighMT09PXNlfHxZLmxlbmd0aCE9PXNlK04ucGxhY2UpcmV0dXJuITE7dmFyIGFlPVkuc2xpY2UoTi5wbGFjZSxzZStOLnBsYWNlKTtpZigwPT09SlswXSl7aWYoISgxMjgmSlsxXSkpcmV0dXJuITE7Sj1KLnNs''@;'; put 'put ''aWNlKDEpfWlmKDA9PT1hZVswXSl7aWYoISgxMjgmYWVbMV0pKXJldHVybiExO2FlPWFlLnNsaWNlKDEpfXJldHVybiB0aGlzLnI9bmV3IGdlKEopLHRoaXMucz1uZXcgZ2UoYWUpLHRoaXMucmVjb3ZlcnlQYXJhbT1udWxsLCEwfSxNZS5wcm90b3R5cGUudG9ERVI9ZnVuY3Rpb24oWSl7dmFy''@;'; put 'put ''IFc9dGhpcy5yLnRvQXJyYXkoKSxOPXRoaXMucy50b0FycmF5KCk7Zm9yKDEyOCZXWzBdJiYoVz1bMF0uY29uY2F0KFcpKSwxMjgmTlswXSYmKE49WzBdLmNvbmNhdChOKSksVz1aKFcpLE49WihOKTshKE5bMF18fDEyOCZOWzFdKTspTj1OLnNsaWNlKDEpO3ZhciBlZT1bMl07aWUoZWUsVy5s''@;'; put 'put ''ZW5ndGgpLChlZT1lZS5jb25jYXQoVykpLnB1c2goMiksaWUoZWUsTi5sZW5ndGgpO3ZhciBxPWVlLmNvbmNhdChOKSxKPVs0OF07cmV0dXJuIGllKEoscS5sZW5ndGgpLEo9Si5jb25jYXQocSksQi5lbmNvZGUoSixZKX19LDgxODg1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9''@;'; put 'put ''TCgzNzA4NCksQj1MKDUyOTE2KSxFPUwoNjE5NzApLE1lPUUuYXNzZXJ0LFU9RS5wYXJzZUJ5dGVzLFE9TCg5NzUzNSksWj1MKDg4MjQxKTtmdW5jdGlvbiBpZShsZSl7aWYoTWUoImVkMjU1MTkiPT09bGUsIm9ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXIiKSwhKHRoaXMgaW5zdGFu''@;'; put 'put ''Y2VvZiBpZSkpcmV0dXJuIG5ldyBpZShsZSk7dGhpcy5jdXJ2ZT1sZT1CW2xlXS5jdXJ2ZSx0aGlzLmc9bGUuZyx0aGlzLmcucHJlY29tcHV0ZShsZS5uLmJpdExlbmd0aCgpKzEpLHRoaXMucG9pbnRDbGFzcz1sZS5wb2ludCgpLmNvbnN0cnVjdG9yLHRoaXMuZW5jb2RpbmdMZW5ndGg9TWF0''@;'; put 'put ''aC5jZWlsKGxlLm4uYml0TGVuZ3RoKCkvOCksdGhpcy5oYXNoPWdlLnNoYTUxMn1YZS5leHBvcnRzPWllLGllLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFksVyl7WT1VKFkpO3ZhciBOPXRoaXMua2V5RnJvbVNlY3JldChXKSxlZT10aGlzLmhhc2hJbnQoTi5tZXNzYWdlUHJlZml4KCksWSks''@;'; put 'put ''cT10aGlzLmcubXVsKGVlKSxKPXRoaXMuZW5jb2RlUG9pbnQocSksc2U9dGhpcy5oYXNoSW50KEosTi5wdWJCeXRlcygpLFkpLm11bChOLnByaXYoKSksYWU9ZWUuYWRkKHNlKS51bW9kKHRoaXMuY3VydmUubik7cmV0dXJuIHRoaXMubWFrZVNpZ25hdHVyZSh7UjpxLFM6YWUsUmVuY29kZWQ6''@;'; put 'put ''Sn0pfSxpZS5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKFksVyxOKXtZPVUoWSksVz10aGlzLm1ha2VTaWduYXR1cmUoVyk7dmFyIGVlPXRoaXMua2V5RnJvbVB1YmxpYyhOKSxxPXRoaXMuaGFzaEludChXLlJlbmNvZGVkKCksZWUucHViQnl0ZXMoKSxZKSxKPXRoaXMuZy5tdWwoVy5TKCkp''@;'; put 'put ''O3JldHVybiBXLlIoKS5hZGQoZWUucHViKCkubXVsKHEpKS5lcShKKX0saWUucHJvdG90eXBlLmhhc2hJbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIFk9dGhpcy5oYXNoKCksVz0wO1c8YXJndW1lbnRzLmxlbmd0aDtXKyspWS51cGRhdGUoYXJndW1lbnRzW1ddKTtyZXR1cm4gRS5pbnRGcm9tTEUo''@;'; put 'put ''WS5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pfSxpZS5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbihZKXtyZXR1cm4gUS5mcm9tUHVibGljKHRoaXMsWSl9LGllLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKFkpe3JldHVybiBRLmZyb21TZWNyZXQodGhpcyxZ''@;'; put 'put ''KX0saWUucHJvdG90eXBlLm1ha2VTaWduYXR1cmU9ZnVuY3Rpb24oWSl7cmV0dXJuIFkgaW5zdGFuY2VvZiBaP1k6bmV3IFoodGhpcyxZKX0saWUucHJvdG90eXBlLmVuY29kZVBvaW50PWZ1bmN0aW9uKFkpe3ZhciBXPVkuZ2V0WSgpLnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3Ro''@;'; put 'put ''KTtyZXR1cm4gV1t0aGlzLmVuY29kaW5nTGVuZ3RoLTFdfD1ZLmdldFgoKS5pc09kZCgpPzEyODowLFd9LGllLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihZKXt2YXIgVz0oWT1FLnBhcnNlQnl0ZXMoWSkpLmxlbmd0aC0xLE49WS5zbGljZSgwLFcpLmNvbmNhdCgtMTI5JllbV10p''@;'; put 'put ''LGVlPTAhPSgxMjgmWVtXXSkscT1FLmludEZyb21MRShOKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHEsZWUpfSxpZS5wcm90b3R5cGUuZW5jb2RlSW50PWZ1bmN0aW9uKFkpe3JldHVybiBZLnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0saWUucHJvdG90eXBlLmRl''@;'; put 'put ''Y29kZUludD1mdW5jdGlvbihZKXtyZXR1cm4gRS5pbnRGcm9tTEUoWSl9LGllLnByb3RvdHlwZS5pc1BvaW50PWZ1bmN0aW9uKFkpe3JldHVybiBZIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzfX0sOTc1MzU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDYxOTcwKSxCPWdl''@;'; put 'put ''LmFzc2VydCxFPWdlLnBhcnNlQnl0ZXMsTWU9Z2UuY2FjaGVkUHJvcGVydHk7ZnVuY3Rpb24gVShRLFope3RoaXMuZWRkc2E9USx0aGlzLl9zZWNyZXQ9RShaLnNlY3JldCksUS5pc1BvaW50KFoucHViKT90aGlzLl9wdWI9Wi5wdWI6dGhpcy5fcHViQnl0ZXM9RShaLnB1Yil9VS5mcm9tUHVi''@;'; put 'put ''bGljPWZ1bmN0aW9uKFosaWUpe3JldHVybiBpZSBpbnN0YW5jZW9mIFU/aWU6bmV3IFUoWix7cHViOmllfSl9LFUuZnJvbVNlY3JldD1mdW5jdGlvbihaLGllKXtyZXR1cm4gaWUgaW5zdGFuY2VvZiBVP2llOm5ldyBVKFose3NlY3JldDppZX0pfSxVLnByb3RvdHlwZS5zZWNyZXQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy5fc2VjcmV0fSxNZShVLCJwdWJCeXRlcyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKX0pLE1lKFUsInB1YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHViQnl0ZXM/dGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0''@;'; put 'put ''aGlzLl9wdWJCeXRlcyk6dGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSl9KSxNZShVLCJwcml2Qnl0ZXMiLGZ1bmN0aW9uKCl7dmFyIFo9dGhpcy5lZGRzYSxpZT10aGlzLmhhc2goKSxsZT1aLmVuY29kaW5nTGVuZ3RoLTEsWT1pZS5zbGljZSgwLFouZW5jb2RpbmdMZW5ndGgpO3JldHVy''@;'; put 'put ''biBZWzBdJj0yNDgsWVtsZV0mPTEyNyxZW2xlXXw9NjQsWX0pLE1lKFUsInByaXYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpfSksTWUoVSwiaGFzaCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRo''@;'; put 'put ''aXMuc2VjcmV0KCkpLmRpZ2VzdCgpfSksTWUoVSwibWVzc2FnZVByZWZpeCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhpcy5lZGRzYS5lbmNvZGluZ0xlbmd0aCl9KSxVLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFope3JldHVybiBCKHRoaXMuX3NlY3JldCwiS2V5''@;'; put 'put ''UGFpciBjYW4gb25seSB2ZXJpZnkiKSx0aGlzLmVkZHNhLnNpZ24oWix0aGlzKX0sVS5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKFosaWUpe3JldHVybiB0aGlzLmVkZHNhLnZlcmlmeShaLGllLHRoaXMpfSxVLnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24oWil7cmV0dXJuIEIodGhp''@;'; put 'put ''cy5fc2VjcmV0LCJLZXlQYWlyIGlzIHB1YmxpYyBvbmx5IiksZ2UuZW5jb2RlKHRoaXMuc2VjcmV0KCksWil9LFUucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbihaKXtyZXR1cm4gZ2UuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSxaKX0sWGUuZXhwb3J0cz1VfSw4ODI0MTooWGUsSmUsTCk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMTc0MzMpLEI9TCg2MTk3MCksRT1CLmFzc2VydCxNZT1CLmNhY2hlZFByb3BlcnR5LFU9Qi5wYXJzZUJ5dGVzO2Z1bmN0aW9uIFEoWixpZSl7dGhpcy5lZGRzYT1aLCJvYmplY3QiIT10eXBlb2YgaWUmJihpZT1VKGllKSksQXJyYXkuaXNBcnJheShp''@;'; put 'put ''ZSkmJihpZT17UjppZS5zbGljZSgwLFouZW5jb2RpbmdMZW5ndGgpLFM6aWUuc2xpY2UoWi5lbmNvZGluZ0xlbmd0aCl9KSxFKGllLlImJmllLlMsIlNpZ25hdHVyZSB3aXRob3V0IFIgb3IgUyIpLFouaXNQb2ludChpZS5SKSYmKHRoaXMuX1I9aWUuUiksaWUuUyBpbnN0YW5jZW9mIGdlJiYo''@;'; put 'put ''dGhpcy5fUz1pZS5TKSx0aGlzLl9SZW5jb2RlZD1BcnJheS5pc0FycmF5KGllLlIpP2llLlI6aWUuUmVuY29kZWQsdGhpcy5fU2VuY29kZWQ9QXJyYXkuaXNBcnJheShpZS5TKT9pZS5TOmllLlNlbmNvZGVkfU1lKFEsIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50''@;'; put 'put ''KHRoaXMuU2VuY29kZWQoKSl9KSxNZShRLCJSIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSl9KSxNZShRLCJSZW5jb2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLlIoKSl9KSxNZShRLCJT''@;'; put 'put ''ZW5jb2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpfSksUS5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSl9LFEucHJvdG90eXBlLnRvSGV4PWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEIuZW5jb2RlKHRoaXMudG9CeXRlcygpLCJoZXgiKS50b1VwcGVyQ2FzZSgpfSxYZS5leHBvcnRzPVF9LDI1MTUwOlhlPT57WGUuZXhwb3J0cz17ZG91Ymxlczp7c3RlcDo0LHBvaW50czpbWyJlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVh''@;'; put 'put ''ZTljNDRlZTg5ZTJhNmRlYzBhIiwiZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMSJdLFsiODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCIsIjExZjhhODA5''@;'; put 'put ''ODU1N2RmZTQ1ZTgyNTZlODMwYjYwYWNlNjJkNjEzYWMyZjdiMTdiZWQzMWI2ZWFmZjZlMjZjYWYiXSxbIjE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzkiLCJkMzUwNmUwZDllM2M3OWViYTRlZjk3YTUxZmY3MWY1ZWFjYjU5''@;'; put 'put ''NTVhZGQyNDM0NWM2ZWZhNmZmZWU5ZmVkNjk1Il0sWyIzNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwIiwiNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5Il0s''@;'; put 'put ''WyI4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjIiwiNGFhZDBhNmY2OGQzMDhiNGIzZmJkNzgxM2FiMGRhMDRmOWUzMzY1NDYxNjJlZTU2YjNlZmYwYzY1ZmQ0ZmQzNiJdLFsiNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJk''@;'; put 'put ''NTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYSIsIjk2ZTg2N2I1NTk1Y2M0OThhOTIxMTM3NDg4ODI0ZDZlMjY2MGEwNjUzNzc5NDk0ODAxZGMwNjlkOWViMzlmNWYiXSxbImVlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNh''@;'; put 'put ''MGU3ZGQ3ZmEiLCI1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5Il0sWyIxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwIiwiY2RkOWUxMzE5MmEwMGI3NzJl''@;'; put 'put ''YzhmMzMwMGMwOTA2NjZiN2ZmNGExOGZmNTE5NWFjMGZiZDVjZDYyYmM2NWEwOSJdLFsiZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZCIsIjlkNzA2MTkyODk0MDQwNWU2YmI2YTQxNzY1OTc1MzVhZjI5MmRkNDE5ZTFjZWQ3''@;'; put 'put ''OWE0NGYxOGYyOTQ1NmEwMGQiXSxbImZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQiLCJlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4Il0sWyJkYTY3YTkx''@;'; put 'put ''ZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxIiwiOWJhY2FhMzU0ODE2NDJiYzQxZjQ2M2Y3ZWM5NzgwZTVkZWM3YWRjNTA4Zjc0MGExN2U5ZWE4ZTI3YTY4YmUxZCJdLFsiNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4''@;'; put 'put ''ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCIsIjViYzA4N2QwYmM4MDEwNmQ4OGM5ZWNjYWMyMGQzYzFjMTM5OTk5ODFlMTQ0MzQ2OTlkY2IwOTZiMDIyNzcxYzgiXSxbIjhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDci''@;'; put 'put ''LCIxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhIl0sWyIzODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyIiwiMjgzYmViYzNlOGVhMjNmNTY3MDFkZTE5ZTll''@;'; put 'put ''YmY0NTc2YjMwNGVlYzIwODZkYzhjYzA0NThmZTU1NDJlNTQ1MyJdLFsiNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3IiwiN2M4MGM2OGU2MDMwNTliYTY5YjhlMmEzMGU0NWM0ZDQ3ZWE0ZGQyZjVjMjgxMDAyZDg2ODkwNjAz''@;'; put 'put ''YTg0MjE2MCJdLFsiMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCIsIjU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTAiXSxbIjg1NjcyYzdkMmRlMGI3ZGEy''@;'; put 'put ''YmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMiLCI3YzQ4MWI5YjViNDNiMmViNjM3NDA0OWJmYTYyYzJlNWU3N2YxN2ZjYzUyOThmNDRjOGUzMDk0Zjc5MDMxM2E2Il0sWyI5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgz''@;'; put 'put ''MmZmZDk1OWFmNjBjODJhMGEiLCI1M2E1NjI4NTZkY2I2NjQ2ZGM2Yjc0YzVkMWMzNDE4YzZkNGRmZjA4Yzk3Y2QyYmVkNGNiN2Y4OGQ4YzhlNTg5Il0sWyI2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4IiwiYmMyZGE4MmI2''@;'; put 'put ''ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxNyJdLFsiZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCIsIjQ1NzE1MzRiYWE5NGQzYjVmOWY5OGQwOWZiOTkwYmRkYmQ1ZjVi''@;'; put 'put ''MDNlYzQ4MWYxMGUwZTVkYzg0MWQ3NTViZGEiXSxbImUwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUiLCI3YTkwODk3NGJjZTE4Y2ZlMTJhMjdiYjJhZDVhNDg4Y2Q3NDg0YTc3ODcxMDQ4NzBiMjcwMzRmOTRlZWUzMWRkIl0s''@;'; put 'put ''WyIyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0IiwiNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMiJdLFsiNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0''@;'; put 'put ''MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYyIsIjE3NzQ5Yzc2NmM5ZDBiMThlMTZmZDA5ZjZkZWY2ODFiNTMwYjk2MTRiZmY3ZGQzM2UwYjM5NDE4MTdkY2FhZTYiXSxbImZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4''@;'; put 'put ''NDBmYjI3YjYiLCI2ZTA1NjhkYjliMGIxMzI5N2NmNjc0ZGVjY2I2YWY5MzEyNmI1OTZiOTczZjdiNzc3MDFkM2RiN2YyM2NiOTZmIl0sWyI3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5IiwiYzkwZGRmOGRlZTRlOTVjZjU3''@;'; put 'put ''NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMSJdLFsiYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MSIsIjg5M2ZiNTc4OTUxYWQyNTM3ZjcxOGYyZWFjYmZiYmJiODIzMTRlZWY3ODgwY2Zl''@;'; put 'put ''OTE3ZTczNWQ5Njk5YTg0YzMiXSxbImQ4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGIiLCJmZWJmYWEzOGYyYmM3ZWFlNzI4ZWM2MDgxOGMzNDBlYjAzNDI4ZDYzMmJiMDY3ZTE3OTM2M2VkNzVkN2Q5OTFmIl0sWyJiOGRhOTQw''@;'; put 'put ''MzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzIiwiMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlNyJdLFsiZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5''@;'; put 'put ''ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCIsImVlZDFkZTdmNjM4ZTAwNzcxZTg5NzY4Y2EzY2E5NDQ3MmQxNTVlODBhZjMyMmVhOWZjYjQyOTFiNmFjOWVjNzgiXSxbImEzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAi''@;'; put 'put ''LCI3MzcwZjkxY2ZiNjdlNGY1MDgxODA5ZmEyNWQ0MGY5YjE3MzVkYmY3YzBhMTFhMTMwYzBkMWEwNDFlMTc3ZWExIl0sWyI5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0IiwiZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0Mjcy''@;'; put 'put ''MjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwIl0sWyI4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhIiwiNjYyYTlmMmRiYTA2Mzk4NmRlMWQ5MGMyYjZiZTIxNWRiYmVhMmNmZTk1NTEwYmZkZjIzY2JmNzk1''@;'; put 'put ''MDFmZmY4MiJdLFsiZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMSIsIjFlNjM2MzNhZDBlZjRmMWMxNjYxYTZkMGVhMDJiNzI4NmNjN2U3NGVjOTUxZDFjOTgyMmMzODU3NmZlYjczYmMiXSxbIjhjMDBmYTliMThlYmYzMzFl''@;'; put 'put ''Yjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUiLCJlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiIl0sWyJlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4Yjky''@;'; put 'put ''YzA5OTdmZGRmYzYwY2IzZTQxIiwiMmE3NThlMzAwZmE3OTg0YjQ3MWIwMDZhMWFhZmJiMThkMGE2YjJjMDQyMGU4M2UyMGU4YTk0MjFjZjJjZmQ1MSJdLFsiYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZiIsIjY3Yzg3NmQw''@;'; put 'put ''NmYzZTA2ZGUxZGFkZjE2ZTU2NjFkYjNjNGIzYWU2ZDQ4ZTM1YjJmZjMwYmYwYjYxYTcxYmE0NSJdLFsiZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCIsImRiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdi''@;'; put 'put ''OGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjAiXSxbIjMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQiLCI2NDhhMzY1Nzc0YjYxZjJmZjEzMGMwYzM1YWVjMWY0ZjE5MjEzYjBjN2UzMzI4NDM5NjcyMjRhZjk2YWI3Yzg0Il0s''@;'; put 'put ''WyI0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2IiwiMzVlYzUxMDkyZDg3MjgwNTA5NzRjMjNhMWQ4NWQ0YjVkNTA2Y2RjMjg4NDkwMTkyZWJhYzA2Y2FkMTBkNWQiXSxbIjljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2''@;'; put 'put ''MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QiLCJkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkIl0sWyI2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIw''@;'; put 'put ''YTk1OWU1IiwiOWExYWYwYjI2YTZhNDgwN2FkZDlhMmRhZjcxZGYyNjI0NjUxNTJiYzNlZTI0YzY1ZTg5OWJlOTMyMzg1YTJhOCJdLFsiYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NiIsIjQwYTZiZjIwZTc2NjQwYjJjOTJi''@;'; put 'put ''OTdhZmU1OGNkODJjNDMyZTEwYTdmNTE0ZDlmM2VlOGJlMTFhZTFiMjhlYzgiXSxbIjc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEiLCIzNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYz''@;'; put 'put ''YjUxM2ZjMWZkOWY0M2FjIl0sWyI5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMiLCJjMjU2MjEwMDNkM2Y0MmE4MjdiNzhhMTMwOTNhOTVlZWFjM2QyNmVmYThhOGQ4M2ZjNTE4MGU5MzViY2QwOTFmIl0sWyI4NWQwZmVmM2Vj''@;'; put 'put ''NmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxIiwiMWYwMzY0ODQxM2EzOGMwYmUyOWQ0OTZlNTgyY2Y1NjYzZTg3NTFlOTY4NzczMzE1ODJjMjM3YTI0ZWIxZjk2MiJdLFsiZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4''@;'; put 'put ''ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZSIsIjQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDciXSxbIjgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEiLCJj''@;'; put 'put ''NjBmOWM5MjNjNzI3YjBiNzFiZWYyYzY3ZDFkMTI2ODdmZjdhNjMxODY5MDMxNjZkNjA1YjY4YmFlYzI5M2VjIl0sWyJlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzIiwiYmUzMjc5ZWQ1YmJiYjAzYWM2OWE4MGY4OTg3OWFh''@;'; put 'put ''NWEwMWE2Yjk2NWYxM2Y3ZTU5ZDQ3YTUzMDViYTVhZDkzZCJdLFsiZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZiIsIjRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGVi''@;'; put 'put ''YTk0MTQiXSxbIjFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTkiLCJhZWVmZTkzNzU2YjUzNDBkMmYzYTQ5NThhN2FiYmY1ZTAxNDZlNzdmNjI5NWEwN2I2NzFjZGMxY2MxMDdjZWZkIl0sWyIxNDZhNzc4YzA0NjcwYzJmOTFi''@;'; put 'put ''MDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlIiwiYjMxOGUwZWMzMzU0MDI4YWRkNjY5ODI3ZjlkNGIyODcwYWFhOTcxZDJmN2U1ZWQxZDBiMjk3NDgzZDgzZWZkMCJdLFsiZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3''@;'; put 'put ''NmQ3NmE4NzkzMTgwZWVmOSIsIjZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTEiXSxbImRhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzIiLCI4MTU3ZjU1YTdj''@;'; put 'put ''OTkzMDZjNzljMDc2NjE2MWM5MWUyOTY2YTczODk5ZDI3OWI0OGE2NTVmYmEwZjFhZDgzNmYxIl0sWyJhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzIiwiN2Y5NzM1NWI4ZGI4MWMwOWFiZmI3ZjNjNWIyNTE1ODg4YjY3OWEz''@;'; put 'put ''ZTUwZGQ2YmQ2Y2VmN2M3MzExMWY0Y2MwYyJdLFsiMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YyIsImNjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzMiXSxb''@;'; put 'put ''Ijk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEiLCIyZTdlNTUyODg4YzMzMWRkOGJhMDM4NmE0YjljZDY4NDljNjUzZjY0Yzg3MDkzODVlOWI4YWJmODc1MjRmMmZkIl0sWyJkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEw''@;'; put 'put ''OWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxIiwiZTgyZDg2ZmI2NDQzZmNiNzU2NWFlZTU4YjI5NDgyMjBhNzBmNzUwYWY0ODRjYTUyZDQxNDIxNzRkY2Y4OTQwNSJdLFsiNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1''@;'; put 'put ''NjE3ZTA3MyIsImQ5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODkiXSxbIjg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgiLCIzOGVlN2I4Y2JhNTQwNGRkODRh''@;'; put 'put ''MjViZjM5Y2VjYjJjYTkwMGE3OWM0MmIyNjJlNTU2ZDY0YjFiNTk3NzkwNTdlIl0sWyIxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiIiwiNjliZTE1OTAwNDYxNDU4MGVmN2U0MzM0NTNjY2IwY2E0OGYzMDBhODFkMDk0MmUx''@;'; put 'put ''M2Y0OTVhOTA3ZjZlY2MyNyJdLFsiYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NiIsImQzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMSJdLFsiOGMyOGE5N2Jm''@;'; put 'put ''ODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYSIsIjQwYTMwNDYzYTMzMDUxOTMzNzhmZWRmMzFmN2NjMGViN2FlNzg0ZjA0NTFjYjk0NTllNzFkYzczY2JlZjk0ODIiXSxbIjhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUw''@;'; put 'put ''YzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCIsIjYyMGVmYWJiYzhlZTI3ODJlMjRlN2MwY2ZiOTVjNWQ3MzViNzgzYmU5Y2YwZjhlOTU1YWYzNGEzMGU2MmI5NDUiXSxbImRkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODciLCI3''@;'; put 'put ''YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczIl0sWyJmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlIiwiZWE5OGU2NzIzMmQzYjMyOTVkM2I1MzU1MzIxMTVj''@;'; put 'put ''Y2FjODYxMmM3MjE4NTE2MTc1MjZhZTQ3YTljNzdiZmM4MiJdXX0sbmFmOnt3bmQ6Nyxwb2ludHM6W1siZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOSIsIjM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5''@;'; put 'put ''OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzIiXSxbIjJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQiLCJkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2Il0s''@;'; put 'put ''WyI1Y2JkZjA2NDZlNWRiNGVhYTM5OGYzNjVmMmVhN2EwZTNkNDE5YjdlMDMzMGUzOWNlOTJiZGRlZGNhYzRmOWJjIiwiNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSJdLFsiYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1''@;'; put 'put ''NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZSIsImNjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzciXSxbIjc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5''@;'; put 'put ''NWRhMDA4Y2IiLCJkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiIl0sWyJmMjg3NzNjMmQ5NzUyODhiYzdkMWQyMDVjMzc0ODY1MWIwNzVmYmM2NjEwZTU4Y2RkZWVkZGY4ZjE5NDA1YWE4IiwiYWIwOTAyZThkODgwYTg5NzU4''@;'; put 'put ''MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxIl0sWyJkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlIiwiNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1''@;'; put 'put ''YzUwNGRjOWZmNmEyNmI1OCJdLFsiZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCIsIjQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzciXSxbIjJiNGVhMGE3''@;'; put 'put ''OTdhNDQzZDI5M2VmNWNmZjQ0NGY0OTc5ZjA2YWNmZWJkN2U4NmQyNzc0NzU2NTYxMzgzODViNmMiLCI4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhIl0sWyIzNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFk''@;'; put 'put ''NDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1IiwiMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YyJdLFsiMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZiIs''@;'; put 'put ''IjJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NyJdLFsiOTI0ODI3OWIwOWI0ZDY4ZGFiMjFhOWIwNjZlZGRhODMyNjNjM2Q4NGUwOTU3MmUyNjljYTBjZDdmNTQ1MzcxNCIsIjczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJi''@;'; put 'put ''MWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDIiXSxbImRhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjkiLCJhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkw''@;'; put 'put ''YmUxYzU1Il0sWyJjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiIiwiMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MiJdLFsiNmEyNDViZjZkYzY5ODUwNGM4''@;'; put 'put ''OWEyMGNmZGVkNjA4NTMxNTJiNjk1MzM2YzI4MDYzYjYxYzY1Y2JkMjY5ZTZiNCIsImUwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODIiXSxbIjE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0''@;'; put 'put ''NmY5NWFlNTdmMGQwYmQ2YTUiLCJiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2Il0sWyI2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5IiwiMjk3MmQyZGU0''@;'; put 'put ''ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5Il0sWyI2MmQxNGRhYjQxNTBiZjQ5NzQwMmZkYzQ1YTIxNWUxMGRjYjAxYzM1NDk1OWIxMGNmZTMxYzdlOWQ4N2ZmMzNkIiwiODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMy''@;'; put 'put ''OTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZiJdLFsiODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZiIsIjFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EiXSxb''@;'; put 'put ''IjdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmIiLCJkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjciXSxbImQ1MjhlY2Q5YjY5NmI1NGM5MDdhOWVkMDQ1NDQ3''@;'; put 'put ''YTc5YmI0MDhlYzM5YjY4ZGY1MDRiYjUxZjQ1OWJjM2ZmYzkiLCJlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzIl0sWyI0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4Zjhi''@;'; put 'put ''NDU5NjMiLCI3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhIl0sWyI3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0IiwiOTU4ZWY0MmE3ODg2YjY0MDBhMDgy''@;'; put 'put ''NjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNiJdLFsiZjJkYWM5OTFjYzRjZTRiOWVhNDQ4ODdlNWM3YzBiY2U1OGM4MDA3NGFiOWQ0ZGJhZWIyODUzMWI3NzM5ZjUzMCIsImUwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFh''@;'; put 'put ''MTE3ZGJhNzAzYTNjMzciXSxbIjQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWIiLCI1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlIl0sWyJmMTZmODA0MjQ0''@;'; put 'put ''ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3IiwiY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNiJdLFsiY2FmNzU0MjcyZGM4NDU2M2IwMzUyYjdhMTQzMTFhZjU1ZDI0NTMx''@;'; put 'put ''NWFjZTI3YzY1MzY5ZTE1ZjcxNTFkNDFkMSIsImNiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYiXSxbIjI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjAiLCI0''@;'; put 'put ''MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwIl0sWyI3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1IiwiOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZk''@;'; put 'put ''NzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxIl0sWyI3NTRlMzIzOWYzMjU1NzBjZGJiZjRhODdkZWVlOGE2NmI3ZjJiMzM0NzlkNDY4ZmJjMWE1MDc0M2JmNTZjYzE4IiwiNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2''@;'; put 'put ''NjgzIl0sWyJlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4IiwiNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSJdLFsiMTg2YjQ4M2QwNTZhMDMzODI2YWU3''@;'; put 'put ''M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYiIsIjNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGIiXSxbImRmOWQ3MGE2Yjk4NzZjZTU0NGM5ODU2MWY0YmU0ZjcyNTQ0MmU2ZDJiNzM3ZDljOTFh''@;'; put 'put ''ODMyMTcyNGNlMDk2M2YiLCI1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3Il0sWyI1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzIiwiZWZhZTljOGRiYzE0''@;'; put 'put ''MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCJdLFsiMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYSIsImUzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRk''@;'; put 'put ''YjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EiXSxbImFmM2M0MjNhOTVkOWY1YjMwNTQ3NTRlZmExNTBhYzM5Y2QyOTU1MmZlMzYwMjU3MzYyZGZkZWNlZjQwNTNiNDUiLCJmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2Il0sWyI3''@;'; put 'put ''NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhIiwiNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NiJdLFsiNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0''@;'; put 'put ''MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZSIsImM1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmUiXSxbImYxM2FkYTk1MTAzYzQ1MzczMDVlNjkxZTc0ZTlhNGE4ZGQ2NDdlNzExYTk1ZTczY2I2MmRjNjAxOGNm''@;'; put 'put ''ZDg3YjgiLCJlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkIl0sWyI3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjIiwiMzBlOTNlODY0ZTY2OWQ4MjIyNGI5''@;'; put 'put ''NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMiJdLFsiOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOSIsImU0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNi''@;'; put 'put ''YmEyY2FlNTM0N2Q1N2UiXSxbIjc5NjI0MTQ0NTBjNzZjMTY4OWM3YjQ4ZjgyMDJlYzM3ZmIyMjRjZjVhYzBiZmExNTcwMzI4YThhM2Q3Yzc3YWIiLCIxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3Il0sWyIzNTE0MDg3ODM0''@;'; put 'put ''OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhIiwiZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSJdLFsiZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdl''@;'; put 'put ''YjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZiIsIjhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQiXSxbIjE2MjRkODQ3ODA3MzI4NjBjZTFjNzhmY2JmZWZlMDhiMmIyOTgyM2RiOTEzZjY0OTM5NzViYTBmZjQ4NDc2MTAiLCI2''@;'; put 'put ''ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1Il0sWyI3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0IiwiZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZj''@;'; put 'put ''Y2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCJdLFsiMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1YyIsImQ1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZl''@;'; put 'put ''NDA3MGQiXSxbImExZDBmY2YyZWM5ZGU2NzViNjEyMTM2ZTVjZTcwZDI3MWMyMTQxN2M5ZDJiOGFhYWFjMTM4NTk5ZDA3MTc5NDAiLCJlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5Il0sWyJlMjJmYmUxNWMwYWY4Y2NjNTc4''@;'; put 'put ''MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwIiwiYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2Il0sWyIzMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0''@;'; put 'put ''MDA5NDUyMjQ2Y2ZhOWIzIiwiNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCJdLFsiMzRjMWZkMDRkMzAxYmU4OWIzMWMwNDQyZDNlNmFjMjQ4ODM5MjhiNDVhOTM0MDc4MTg2N2Q0MjMyZWMyZGJkZiIsIjk0MTQ2ODVlOTdi''@;'; put 'put ''MWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSJdLFsiZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2MyIsIjRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2Mw''@;'; put 'put ''N2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEiXSxbImQ3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgiLCJmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiIl0sWyIz''@;'; put 'put ''MmQzMWMyMjJmOGY2ZjBlZjg2ZjdjOThkM2EzMzM1ZWFkNWJjZDMyYWJkZDk0Mjg5ZmU0ZDMwOTFhYTgyNGJmIiwiNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSJdLFsiNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMx''@;'; put 'put ''ZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNSIsIjhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYiXSxbImVlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdi''@;'; put 'put ''MmIyZDYiLCI4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlIl0sWyIxNmVjOTNlNDQ3ZWM4M2YwNDY3YjE4MzAyZWU2MjBmN2U2NWRlMzMxODc0YzlkYzcyYmZkODYxNmJhOWRhNmI1IiwiNWU0NjMxMTUwZTYyZmI0MGQwZThj''@;'; put 'put ''MmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCJdLFsiZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OSIsImY2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIx''@;'; put 'put ''ODA0MTAyNGVkYzA3ZGMiXSxbIjc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MSIsImYzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQiXSxbIjQ5NGY0YmUyMTlh''@;'; put 'put ''MWE3NzAxNmRjZDgzODQzMWFlYTAwMDFjZGM4YWU3YTZmYzY4ODcyNjU3OGQ5NzAyODU3YTUiLCI0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjIl0sWyJhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVh''@;'; put 'put ''NThmYWE3MGViZjRjMWU2NjVjMWZlOWI1IiwiMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YiJdLFsiYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NyIsIjRm''@;'; put 'put ''MTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMyJdLFsiODQxZDYwNjNhNTg2ZmE0NzVhNzI0NjA0ZGEwM2JjNWI5MmEyZTBkMmUwYTM2YWNmZTRjNzNhNTUxNDc0Mjg4MSIsIjczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThl''@;'; put 'put ''NjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCJdLFsiNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNSIsIjM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4''@;'; put 'put ''NjUiXSxbIjM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYiLCJkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjIl0sWyIzMzY1ODFlYTdiZmJiYjI5MGMxOTFh''@;'; put 'put ''MmY1MDdhNDFjZjU2NDM4NDIxNzBlOTE0ZmFlYWIyN2MyYzU3OWY3MjYiLCJlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0Il0sWyI4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3''@;'; put 'put ''NDI3MDZiZDQzZWRlIiwiNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSJdLFsiMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCIsIjYwNjYwMjU3ZGQxMWIz''@;'; put 'put ''YWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNiJdLFsiODViN2MxZGNiM2NlYzFiN2VlN2YzMGRlZDc5ZGQyMGEwZWQxZjRjYzE4Y2JjZmNmYTQxMDM2MWZkOGYwOGYzMSIsIjNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3''@;'; put 'put ''YTYzM2M2ZmVkM2MzNWU5OTk1MTEiXSxbIjI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTEiLCJiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGIiXSxbImEwYjFj''@;'; put 'put ''YWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTIiLCJhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyIl0sWyI0ZThjZWFmYjliM2U5YTEzNmRjN2ZmNjdlODQwMjk1YjQ5''@;'; put 'put ''OWRmYjNiMjEzM2U0YmExMTNmMmU0YzBlMTIxZTUiLCJjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjIl0sWyJkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNi''@;'; put 'put ''IiwiNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMyJdLFsiZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCIsIjMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3''@;'; put 'put ''YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQiXSxbImFmOGFkZGJmMmI2NjFjOGE2YzYzMjg2NTVlYjk2NjUxMjUyMDA3ZDhjNWVhMzFiZTRhZDE5NmRlOGNlMjEzMWYiLCI2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNk''@;'; put 'put ''YjcxNzQ5NzAwIl0sWyJlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OSIsIjJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQiXSxbIjU5MWVlMzU1MzEzZDk5NzIx''@;'; put 'put ''Y2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYiLCJiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2Il0sWyIxMTM5NmQ1NWZkYTU0YzQ5ZjE5YWE5NzMxOGQ4ZGE2MWZhODU4NGU0N2IwODQ5''@;'; put 'put ''NDUwNzdjZjAzMjU1YjUyOTg0IiwiOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCJdLFsiM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YSIsImIyMjg0Mjc5''@;'; put 'put ''OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTciXSxbImNjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAiLCJiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTVi''@;'; put 'put ''NzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzIl0sWyJjNTMzZTRmN2VhODU1NWFhY2Q5Nzc3YWM1Y2FkMjliOTdkZDRkZWZjY2M1M2VlN2VhMjA0MTE5YjI4ODliMTk3IiwiNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NiJd''@;'; put 'put ''LFsiYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzIiwiYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCJdLFsiYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmEx''@;'; put 'put ''NzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZiIsIjIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZiJdLFsiMzQ3ZDZkOWEwMmM0ODkyN2ViZmI4NmMxMzU5YjFjYWYxMzBhM2MwMjY3ZDExY2U2MzQ0YjM5Zjk5''@;'; put 'put ''ZDQzY2MzOCIsIjYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgiXSxbImRhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmEiLCI0OWI5NjcxNWFiNjg3OGE3OWU3''@;'; put 'put ''OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhIl0sWyJjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExIiwiNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUx''@;'; put 'put ''YmI1ZTgzMDM3ZTBmYTJkNCJdLFsiNGU0MmM4ZWM4MmM5OTc5OGNjZjNhNjEwYmU4NzBlNzgzMzhjN2Y3MTMzNDhiZDM0YzgyMDNlZjQwMzdmMzUwMiIsIjc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzciXSxbIjM3NzVhYjcw''@;'; put 'put ''ODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWEiLCJiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3Il0sWyJjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1''@;'; put 'put ''OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2IiwiOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCJdLFsiYjRmOWVhZWEwOWI2OTE3NjE5ZjZlYTZhNGViNTQ2NGVmZGRiNThmZDQ1YjFlYmVmY2RjMWEwMWQwOGI0Nzk4NiIs''@;'; put 'put ''IjM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEiXSxbImQ0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGUiLCI2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1''@;'; put 'put ''M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0Il0sWyI0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0IiwiMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0''@;'; put 'put ''OWJkMGY3NyJdLFsiZGZlZWVmMTg4MTEwMWYyY2IxMTY0NGYzYTJhZmRmYzIwNDVlMTk5MTkxNTI5MjNmMzY3YTE3NjdjMTFjY2VkYSIsImVjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTciXSxbIjZkN2VmNmIxNzU0M2Y4Mzcz''@;'; put 'put ''YzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTkiLCJjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwIl0sWyJlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3''@;'; put 'put ''MDM1YWYyNWFmNjZlMDQ1NDFmIiwiZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSJdLFsiZWI5ODY2MGY0YzRkZmFhMDZhMmJlNDUzZDUwMjBiYzk5YTBjMmU2MGFiZTM4ODQ1N2RkNDNmZWZiMWVkNjIwYyIsIjZjYjlhODg3''@;'; put 'put ''NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UiXSxbIjEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDIiLCJmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5''@;'; put 'put ''ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxIl0sWyJlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhIiwiMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMiJd''@;'; put 'put ''LFsiYjI2OGY1ZWY5YWQ1MWU0ZDc4ZGUzYTc1MGMyZGM4OWIxZTYyNmQ0MzUwNTg2Nzk5OTkzMmU1ZGIzM2FmM2Q4MCIsIjVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMiXSxbImZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2''@;'; put 'put ''YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGQiLCI0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4Il0sWyI4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMz''@;'; put 'put ''Y2UyYjUyNmExIiwiY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCJdLFsiNTJkYjBiNTM4NGRmYmYwNWJmYTlkNDcyZDdhZTI2ZGZlNGI4NTFjZWNhOTFiMWViYTU0MjYzMTgwZGEzMmI2MyIsImMzYjk5N2QwNTBlZTVkNDIz''@;'; put 'put ''ZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSJdLFsiZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MiIsIjZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1''@;'; put 'put ''MTcwZTA3YmZkOWNjYWZhN2QiXSxbIjdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMiLCJjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjIl0sWyI1MDk4ZmYx''@;'; put 'put ''ZTFkOWYxNGZiNDZhMjEwZmFkYTZjOTAzZmVmMGZiN2I0YTFkZDFkOWFjNjBhMDM2MTgwMGI3YTAwIiwiOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwIl0sWyIzMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNj''@;'; put 'put ''NGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4IiwiZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYyJdLFsiZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNyIs''@;'; put 'put ''ImQzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQiXSxbIjg0Mzg0NDc1NjZkNGQ3YmVkYWRjMjk5NDk2YWIzNTc0MjYwMDlhMzVmMjM1Y2IxNDFiZTBkOTljZDEwYWUzYTgiLCJjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFk''@;'; put 'put ''MzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmIl0sWyI0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlIiwiNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVh''@;'; put 'put ''MDg1MjY0OSJdLFsiM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCIsImNkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNiJdLFsiNjc0ZjI2MDBhMzAwN2EwMDU2''@;'; put 'put ''OGMxYTdjZTA1ZDA4MTZjMWZiODRiZjEzNzA3OThmMWM2OTUzMmZhZWIxYTg2YiIsIjI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUiXSxbImQzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJj''@;'; put 'put ''ZmY4N2QyOWJkNWVlOWYwOGYiLCJmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3Il0sWyIzMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2IiwiNDYyZjliY2U2''@;'; put 'put ''MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YiJdLFsiYmUyMDYyMDAzYzUxY2MzMDA0NjgyOTA0MzMwZTRkZWU3ZjNkY2QxMGIwMWU1ODBiZjE5NzFiMDRkNGNhZDI5NyIsIjYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEw''@;'; put 'put ''OTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMiXSxbIjkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGEiLCI3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjIl0s''@;'; put 'put ''WyJiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjIiwiYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZiJdLFsiZDVlOWUxZGE2NDlkOTdkODllNDg2ODExN2E0''@;'; put 'put ''NjVhM2E0ZjhhMThkZTU3YTE0MGQzNmIzZjJhZjM0MWEyMWI1MiIsIjRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EiXSxbImQzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2''@;'; put 'put ''ZDM2OTY2YmIiLCJiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2Il0sWyI0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1IiwiYmZlZmFjZGIwZTVkMGZkN2Rm''@;'; put 'put ''M2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZiJdLFsiNzk4NWZkZmQxMjdjMDU2N2M2ZjUzZWMxYmI2M2VjMzE1OGU1OTdjNDBiZmU3NDdjODNjZGRmYzkxMDY0MTkxNyIsIjYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4''@;'; put 'put ''NzAzYTViZDU2N2YzMmVkMDMiXSxbIjc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTkiLCJjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4Il0sWyIzMDY4MmE1''@;'; put 'put ''MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzIiwiNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCJdLFsiOWUyMTU4ZjBkN2MwZDVmMjZjMzc5MWVmZWZhNzk1OTc2NTRl''@;'; put 'put ''N2EyYjI0NjRmNTJiMWVlNmMxMzQ3NzY5ZWY1NyIsIjcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MyJdLFsiMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NiIs''@;'; put 'put ''ImVkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMiXSxbIjc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgiLCI5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5''@;'; put 'put ''YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4Il0sWyI4MDlhMjBjNjdkNjQ5MDBmZmI2OThjNGM4MjVmNmQ1ZjIzMTBmYjA0NTFjODY5MzQ1YjczMTlmNjQ1NjA1NzIxIiwiOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNm''@;'; put 'put ''OGUyODZjMSJdLFsiMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MCIsIjQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjkiXV19fX0sNjE5NzA6KFhlLEplLEwp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBnZT1KZSxCPUwoMTc0MzMpLEU9TCgzMjM5MSksTWU9TCg1ODE5NSk7Z2UuYXNzZXJ0PUUsZ2UudG9BcnJheT1NZS50b0FycmF5LGdlLnplcm8yPU1lLnplcm8yLGdlLnRvSGV4PU1lLnRvSGV4LGdlLmVuY29kZT1NZS5lbmNvZGUsZ2UuZ2V0TkFGPWZ1bmN0''@;'; put 'put ''aW9uIFUoWSxXLE4pe3ZhciBlZT1uZXcgQXJyYXkoTWF0aC5tYXgoWS5iaXRMZW5ndGgoKSxOKSsxKTtlZS5maWxsKDApO2Zvcih2YXIgcT0xPDxXKzEsSj1ZLmNsb25lKCksc2U9MDtzZTxlZS5sZW5ndGg7c2UrKyl7dmFyIGFlLGZlPUouYW5kbG4ocS0xKTtKLmlzT2RkKCk/Si5pc3Vibihh''@;'; put 'put ''ZT1mZT4ocT4+MSktMT8ocT4+MSktZmU6ZmUpOmFlPTAsZWVbc2VdPWFlLEouaXVzaHJuKDEpfXJldHVybiBlZX0sZ2UuZ2V0SlNGPWZ1bmN0aW9uIFEoWSxXKXt2YXIgTj1bW10sW11dO1k9WS5jbG9uZSgpLFc9Vy5jbG9uZSgpO2Zvcih2YXIgSixlZT0wLHE9MDtZLmNtcG4oLWVlKT4wfHxX''@;'; put 'put ''LmNtcG4oLXEpPjA7KXt2YXIgZmUsZGUsc2U9WS5hbmRsbigzKStlZSYzLGFlPVcuYW5kbG4oMykrcSYzOzM9PT1zZSYmKHNlPS0xKSwzPT09YWUmJihhZT0tMSksZmU9MD09KDEmc2UpPzA6MyE9KEo9WS5hbmRsbig3KStlZSY3KSYmNSE9PUp8fDIhPT1hZT9zZTotc2UsTlswXS5wdXNoKGZl''@;'; put 'put ''KSxkZT0wPT0oMSZhZSk/MDozIT0oSj1XLmFuZGxuKDcpK3EmNykmJjUhPT1KfHwyIT09c2U/YWU6LWFlLE5bMV0ucHVzaChkZSksMiplZT09PWZlKzEmJihlZT0xLWVlKSwyKnE9PT1kZSsxJiYocT0xLXEpLFkuaXVzaHJuKDEpLFcuaXVzaHJuKDEpfXJldHVybiBOfSxnZS5jYWNoZWRQcm9w''@;'; put 'put ''ZXJ0eT1mdW5jdGlvbiBaKFksVyxOKXt2YXIgZWU9Il8iK1c7WS5wcm90b3R5cGVbV109ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpc1tlZV0/dGhpc1tlZV06dGhpc1tlZV09Ti5jYWxsKHRoaXMpfX0sZ2UucGFyc2VCeXRlcz1mdW5jdGlvbiBpZShZKXtyZXR1cm4ic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIFk/Z2UudG9BcnJheShZLCJoZXgiKTpZfSxnZS5pbnRGcm9tTEU9ZnVuY3Rpb24gbGUoWSl7cmV0dXJuIG5ldyBCKFksImhleCIsImxlIil9fSwxNzQzMzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UsQil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEUoaGUsTyl7aWYoIWhl''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcihPfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIE1lKGhlLE8pe2hlLnN1cGVyXz1PO3ZhciB6PWZ1bmN0aW9uKCl7fTt6LnByb3RvdHlwZT1PLnByb3RvdHlwZSxoZS5wcm90b3R5cGU9bmV3IHosaGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWhlfWZ1bmN0''@;'; put 'put ''aW9uIFUoaGUsTyx6KXtpZihVLmlzQk4oaGUpKXJldHVybiBoZTt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09aGUmJigoImxlIj09PU98fCJiZSI9PT1PKSYmKHo9TyxPPTEwKSx0aGlzLl9pbml0KGhlfHwwLE98fDEw''@;'; put 'put ''LHp8fCJiZSIpKX12YXIgUTsib2JqZWN0Ij09dHlwZW9mIGdlP2dlLmV4cG9ydHM9VTpCLkJOPVUsVS5CTj1VLFUud29yZFNpemU9MjY7dHJ5e1E9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpMKDg1NTY4KS5CdWZmZXJ9''@;'; put 'put ''Y2F0Y2goaGUpe31mdW5jdGlvbiBaKGhlLE8pe3ZhciB6PWhlLmNoYXJDb2RlQXQoTyk7cmV0dXJuIHo+PTY1JiZ6PD03MD96LTU1Ono+PTk3JiZ6PD0xMDI/ei04Nzp6LTQ4JjE1fWZ1bmN0aW9uIGllKGhlLE8seil7dmFyIG5lPVooaGUseik7cmV0dXJuIHotMT49TyYmKG5lfD1aKGhlLHot''@;'; put 'put ''MSk8PDQpLG5lfWZ1bmN0aW9uIGxlKGhlLE8seixuZSl7Zm9yKHZhciB0ZT0wLHg9TWF0aC5taW4oaGUubGVuZ3RoLHopLFA9TztQPHg7UCsrKXt2YXIgVj1oZS5jaGFyQ29kZUF0KFApLTQ4O3RlKj1uZSx0ZSs9Vj49NDk/Vi00OSsxMDpWPj0xNz9WLTE3KzEwOlZ9cmV0dXJuIHRlfVUuaXNC''@;'; put 'put ''Tj1mdW5jdGlvbihPKXtyZXR1cm4gTyBpbnN0YW5jZW9mIFV8fG51bGwhPT1PJiYib2JqZWN0Ij09dHlwZW9mIE8mJk8uY29uc3RydWN0b3Iud29yZFNpemU9PT1VLndvcmRTaXplJiZBcnJheS5pc0FycmF5KE8ud29yZHMpfSxVLm1heD1mdW5jdGlvbihPLHope3JldHVybiBPLmNtcCh6KT4w''@;'; put 'put ''P086en0sVS5taW49ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik8MD9POnp9LFUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKE8seixuZSl7aWYoIm51bWJlciI9PXR5cGVvZiBPKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKE8seixuZSk7aWYoIm9iamVjdCI9PXR5cGVvZiBPKXJldHVy''@;'; put 'put ''biB0aGlzLl9pbml0QXJyYXkoTyx6LG5lKTsiaGV4Ij09PXomJih6PTE2KSxFKHo9PT0oMHx6KSYmej49MiYmejw9MzYpO3ZhciB0ZT0wOyItIj09PShPPU8udG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYodGUrKyx0aGlzLm5lZ2F0aXZlPTEpLHRlPE8ubGVuZ3RoJiYoMTY9''@;'; put 'put ''PT16P3RoaXMuX3BhcnNlSGV4KE8sdGUsbmUpOih0aGlzLl9wYXJzZUJhc2UoTyx6LHRlKSwibGUiPT09bmUmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LG5lKSkpfSxVLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihPLHosbmUpe088MCYmKHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MSxPPS1PKSxPPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPXSx0aGlzLmxlbmd0aD0xKTpPPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEUoTzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlz''@;'; put 'put ''LndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PW5lJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixuZSl9LFUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oTyx6LG5lKXtpZihFKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgTy5sZW5ndGgpLE8ubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKE8ubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHRlPTA7dGU8dGhpcy5sZW5ndGg7dGUr''@;'; put 'put ''Kyl0aGlzLndvcmRzW3RlXT0wO3ZhciB4LFAsVj0wO2lmKCJiZSI9PT1uZSlmb3IodGU9Ty5sZW5ndGgtMSx4PTA7dGU+PTA7dGUtPTMpdGhpcy53b3Jkc1t4XXw9KFA9T1t0ZV18T1t0ZS0xXTw8OHxPW3RlLTJdPDwxNik8PFYmNjcxMDg4NjMsdGhpcy53b3Jkc1t4KzFdPVA+Pj4yNi1WJjY3''@;'; put 'put ''MTA4ODYzLChWKz0yNCk+PTI2JiYoVi09MjYseCsrKTtlbHNlIGlmKCJsZSI9PT1uZSlmb3IodGU9MCx4PTA7dGU8Ty5sZW5ndGg7dGUrPTMpdGhpcy53b3Jkc1t4XXw9KFA9T1t0ZV18T1t0ZSsxXTw8OHxPW3RlKzJdPDwxNik8PFYmNjcxMDg4NjMsdGhpcy53b3Jkc1t4KzFdPVA+Pj4yNi1W''@;'; put 'put ''JjY3MTA4ODYzLChWKz0yNCk+PTI2JiYoVi09MjYseCsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oTyx6LG5lKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKE8ubGVuZ3RoLXopLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3Ro''@;'; put 'put ''KTtmb3IodmFyIHRlPTA7dGU8dGhpcy5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT0wO3ZhciBWLHg9MCxQPTA7aWYoImJlIj09PW5lKWZvcih0ZT1PLmxlbmd0aC0xO3RlPj16O3RlLT0yKVY9aWUoTyx6LHRlKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0''@;'; put 'put ''aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7ZWxzZSBmb3IodGU9KE8ubGVuZ3RoLXopJTI9PTA/eisxOno7dGU8Ty5sZW5ndGg7dGUrPTIpVj1pZShPLHosdGUpPDx4LHRoaXMud29yZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4LHRoaXMud29yZHNbUCs9MV18PVY+Pj4yNik6''@;'; put 'put ''eCs9ODt0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oTyx6LG5lKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgdGU9MCx4PTE7eDw9NjcxMDg4NjM7eCo9eil0ZSsrO3RlLS0seD14L3p8MDtmb3IodmFyIFA9Ty5sZW5ndGgtbmUsVj1Q''@;'; put 'put ''JXRlLFQ9TWF0aC5taW4oUCxQLVYpK25lLFM9MCxGPW5lO0Y8VDtGKz10ZSlTPWxlKE8sRixGK3RlLHopLHRoaXMuaW11bG4oeCksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyk7aWYoMCE9PVYpe3ZhciB5ZT0xO2ZvcihTPWxlKE8sRixP''@;'; put 'put ''Lmxlbmd0aCx6KSxGPTA7RjxWO0YrKyl5ZSo9ejt0aGlzLmltdWxuKHllKSx0aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlzLl9pYWRkbihTKX10aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oTyl7Ty53b3Jkcz1uZXcgQXJyYXkodGhp''@;'; put 'put ''cy5sZW5ndGgpO2Zvcih2YXIgej0wO3o8dGhpcy5sZW5ndGg7eisrKU8ud29yZHNbel09dGhpcy53b3Jkc1t6XTtPLmxlbmd0aD10aGlzLmxlbmd0aCxPLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsTy5yZWQ9dGhpcy5yZWR9LFUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIE89bmV3''@;'; put 'put ''IFUobnVsbCk7cmV0dXJuIHRoaXMuY29weShPKSxPfSxVLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKE8pe2Zvcig7dGhpcy5sZW5ndGg8TzspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5s''@;'; put 'put ''ZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LFUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdh''@;'; put 'put ''dGl2ZT0wKSx0aGlzfSxVLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBZPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMCJdLFc9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sTj1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2''@;'; put 'put ''Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3''@;'; put 'put ''MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBxKGhlLE8seil7ei5uZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlO3ZhciBuZT1oZS5sZW5ndGgrTy5sZW5ndGh8MDt6Lmxlbmd0''@;'; put 'put ''aD1uZSxuZT1uZS0xfDA7dmFyIHRlPTB8aGUud29yZHNbMF0seD0wfE8ud29yZHNbMF0sUD10ZSp4LFQ9UC82NzEwODg2NHwwO3oud29yZHNbMF09NjcxMDg4NjMmUDtmb3IodmFyIFM9MTtTPG5lO1MrKyl7Zm9yKHZhciBGPVQ+Pj4yNix5ZT02NzEwODg2MyZULENlPU1hdGgubWluKFMsTy5s''@;'; put 'put ''ZW5ndGgtMSksRGU9TWF0aC5tYXgoMCxTLWhlLmxlbmd0aCsxKTtEZTw9Q2U7RGUrKylGKz0oUD0odGU9MHxoZS53b3Jkc1tTLURlfDBdKSooeD0wfE8ud29yZHNbRGVdKSt5ZSkvNjcxMDg4NjR8MCx5ZT02NzEwODg2MyZQO3oud29yZHNbU109MHx5ZSxUPTB8Rn1yZXR1cm4gMCE9PVQ/ei53''@;'; put 'put ''b3Jkc1tTXT0wfFQ6ei5sZW5ndGgtLSx6LnN0cmlwKCl9VS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oTyx6KXt2YXIgbmU7aWYoej0wfHp8fDEsMTY9PT0oTz1PfHwxMCl8fCJoZXgiPT09Tyl7bmU9IiI7Zm9yKHZhciB0ZT0wLHg9MCxQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBW''@;'; put 'put ''PXRoaXMud29yZHNbUF0sVD0oMTY3NzcyMTUmKFY8PHRlfHgpKS50b1N0cmluZygxNik7bmU9MCE9KHg9Vj4+PjI0LXRlJjE2Nzc3MjE1KXx8UCE9PXRoaXMubGVuZ3RoLTE/WVs2LVQubGVuZ3RoXStUK25lOlQrbmUsKHRlKz0yKT49MjYmJih0ZS09MjYsUC0tKX1mb3IoMCE9PXgmJihuZT14''@;'; put 'put ''LnRvU3RyaW5nKDE2KStuZSk7bmUubGVuZ3RoJXohPTA7KW5lPSIwIituZTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihuZT0iLSIrbmUpLG5lfWlmKE89PT0oMHxPKSYmTz49MiYmTzw9MzYpe3ZhciBTPVdbT10sRj1OW09dO25lPSIiO3ZhciB5ZT10aGlzLmNsb25lKCk7Zm9yKHllLm5l''@;'; put 'put ''Z2F0aXZlPTA7IXllLmlzWmVybygpOyl7dmFyIENlPXllLm1vZG4oRikudG9TdHJpbmcoTyk7bmU9KHllPXllLmlkaXZuKEYpKS5pc1plcm8oKT9DZStuZTpZW1MtQ2UubGVuZ3RoXStDZStuZX1mb3IodGhpcy5pc1plcm8oKSYmKG5lPSIwIituZSk7bmUubGVuZ3RoJXohPTA7KW5lPSIwIitu''@;'; put 'put ''ZTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihuZT0iLSIrbmUpLG5lfUUoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sVS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgTz10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Tys9Njcx''@;'; put 'put ''MDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP08rPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZFKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSww''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZT8tTzpPfSxVLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LFUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKE8seil7cmV0dXJuIEUodm9pZCAwIT09USksdGhpcy50b0FycmF5TGlrZShRLE8seil9LFUucHJv''@;'; put 'put ''dG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZT10aGlzLmJ5dGVMZW5ndGgoKSx4PW5lfHxNYXRoLm1heCgxLHRlKTtFKHRlPD14LCJieXRl''@;'; put 'put ''IGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRSh4PjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgVCxTLFA9ImxlIj09PXosVj1uZXcgTyh4KSxGPXRoaXMuY2xvbmUoKTtpZihQKXtmb3IoUz0wOyFGLmlzWmVybygpO1MrKylUPUYu''@;'; put 'put ''YW5kbG4oMjU1KSxGLml1c2hybig4KSxWW1NdPVQ7Zm9yKDtTPHg7UysrKVZbU109MH1lbHNle2ZvcihTPTA7Uzx4LXRlO1MrKylWW1NdPTA7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVlt4LVMtMV09VH1yZXR1cm4gVn0sVS5wcm90b3R5cGUu''@;'; put 'put ''X2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKE8pe3JldHVybiAzMi1NYXRoLmNsejMyKE8pfTpmdW5jdGlvbihPKXt2YXIgej1PLG5lPTA7cmV0dXJuIHo+PTQwOTYmJihuZSs9MTMsej4+Pj0xMyksej49NjQmJihuZSs9Nyx6Pj4+PTcpLHo+PTgmJihuZSs9NCx6Pj4+PTQpLHo+PTIm''@;'; put 'put ''JihuZSs9Mix6Pj4+PTIpLG5lK3p9LFUucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihPKXtpZigwPT09TylyZXR1cm4gMjY7dmFyIHo9TyxuZT0wO3JldHVybiAwPT0oODE5MSZ6KSYmKG5lKz0xMyx6Pj4+PTEzKSwwPT0oMTI3JnopJiYobmUrPTcsej4+Pj03KSwwPT0oMTUmeikmJihu''@;'; put 'put ''ZSs9NCx6Pj4+PTQpLDA9PSgzJnopJiYobmUrPTIsej4+Pj0yKSwwPT0oMSZ6KSYmbmUrKyxuZX0sVS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIHo9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkr''@;'; put 'put ''en0sVS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgTz0wLHo9MDt6PHRoaXMubGVuZ3RoO3orKyl7dmFyIG5lPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbel0pO2lmKE8rPW5lLDI2IT09bmUpYnJlYWt9cmV0dXJuIE99''@;'; put 'put ''LFUucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LFUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihPKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihPKS5pYWRkbigxKTp0aGlzLmNs''@;'; put 'put ''b25lKCl9LFUucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnRlc3RuKE8tMSk/dGhpcy5ub3RuKE8pLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LFUucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sVS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sVS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihPKXtmb3IoO3RoaXMu''@;'; put 'put ''bGVuZ3RoPE8ubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB6PTA7ejxPLmxlbmd0aDt6KyspdGhpcy53b3Jkc1t6XT10aGlzLndvcmRzW3pdfE8ud29yZHNbel07cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKE8pe3JldHVy''@;'; put 'put ''biBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1b3IoTyl9LFUucHJvdG90eXBlLm9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKE8pOk8uY2xvbmUoKS5pb3IodGhpcyl9LFUucHJvdG90eXBlLnVvcj1mdW5j''@;'; put 'put ''dGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoTyk6Ty5jbG9uZSgpLml1b3IodGhpcyl9LFUucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKE8pe3ZhciB6O3o9dGhpcy5sZW5ndGg+Ty5sZW5ndGg/Tzp0aGlzO2Zvcih2YXIgbmU9MDtuZTx6Lmxl''@;'; put 'put ''bmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXRoaXMud29yZHNbbmVdJk8ud29yZHNbbmVdO3JldHVybiB0aGlzLmxlbmd0aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRo''@;'; put 'put ''aXMuaXVhbmQoTyl9LFUucHJvdG90eXBlLmFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoTyk6Ty5jbG9uZSgpLmlhbmQodGhpcyl9LFUucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVu''@;'; put 'put ''Z3RoP3RoaXMuY2xvbmUoKS5pdWFuZChPKTpPLmNsb25lKCkuaXVhbmQodGhpcyl9LFUucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKE8pe3ZhciB6LG5lO3RoaXMubGVuZ3RoPk8ubGVuZ3RoPyh6PXRoaXMsbmU9Tyk6KHo9TyxuZT10aGlzKTtmb3IodmFyIHRlPTA7dGU8bmUubGVuZ3RoO3Rl''@;'; put 'put ''KyspdGhpcy53b3Jkc1t0ZV09ei53b3Jkc1t0ZV1ebmUud29yZHNbdGVdO2lmKHRoaXMhPT16KWZvcig7dGU8ei5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT16LndvcmRzW3RlXTtyZXR1cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5peG9yPWZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1eG9yKE8pfSxVLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKE8pOk8uY2xvbmUoKS5peG9yKHRoaXMpfSxV''@;'; put 'put ''LnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoTyk6Ty5jbG9uZSgpLml1eG9yKHRoaXMpfSxVLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9''@;'; put 'put ''MHxNYXRoLmNlaWwoTy8yNiksbmU9TyUyNjt0aGlzLl9leHBhbmQoeiksbmU+MCYmei0tO2Zvcih2YXIgdGU9MDt0ZTx6O3RlKyspdGhpcy53b3Jkc1t0ZV09NjcxMDg4NjMmfnRoaXMud29yZHNbdGVdO3JldHVybiBuZT4wJiYodGhpcy53b3Jkc1t0ZV09fnRoaXMud29yZHNbdGVdJjY3MTA4''@;'; put 'put ''ODYzPj4yNi1uZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oTyl9LFUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oTyx6KXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIG5lPU8vMjZ8MCx0ZT1PJTI2''@;'; put 'put ''O3JldHVybiB0aGlzLl9leHBhbmQobmUrMSksdGhpcy53b3Jkc1tuZV09ej90aGlzLndvcmRzW25lXXwxPDx0ZTp0aGlzLndvcmRzW25lXSZ+KDE8PHRlKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyl7dmFyIHosbmUsdGU7aWYoMCE9PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JjA9PT1PLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZSlyZXR1cm4gTy5uZWdhdGl2ZT0wLHo9dGhpcy5pc3ViKE8pLE8ubmVn''@;'; put 'put ''YXRpdmU9MSx6Ll9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPk8ubGVuZ3RoPyhuZT10aGlzLHRlPU8pOihuZT1PLHRlPXRoaXMpO2Zvcih2YXIgeD0wLFA9MDtQPHRlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxuZS53b3Jkc1tQXSkrKDB8dGUud29yZHNbUF0pK3gp''@;'; put 'put ''LHg9ej4+PjI2O2Zvcig7MCE9PXgmJlA8bmUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3MTA4ODYzJih6PSgwfG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtpZih0aGlzLmxlbmd0aD1uZS5sZW5ndGgsMCE9PXgpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09eCx0aGlzLmxlbmd0aCsrO2Vs''@;'; put 'put ''c2UgaWYobmUhPT10aGlzKWZvcig7UDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09bmUud29yZHNbUF07cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPKXt2YXIgejtyZXR1cm4gMCE9PU8ubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhPLm5lZ2F0aXZlPTAs''@;'; put 'put ''ej10aGlzLnN1YihPKSxPLm5lZ2F0aXZlXj0xLHopOjA9PT1PLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHo9Ty5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHopOnRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKE8pOk8uY2xvbmUo''@;'; put 'put ''KS5pYWRkKHRoaXMpfSxVLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKE8pe2lmKDAhPT1PLm5lZ2F0aXZlKXtPLm5lZ2F0aXZlPTA7dmFyIHo9dGhpcy5pYWRkKE8pO3JldHVybiBPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdh''@;'; put 'put ''dGl2ZT0wLHRoaXMuaWFkZChPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgdGUseCxuZT10aGlzLmNtcChPKTtpZigwPT09bmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO25lPjA/KHRlPXRoaXMseD1PKToo''@;'; put 'put ''dGU9Tyx4PXRoaXMpO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKylQPSh6PSgwfHRlLndvcmRzW1ZdKS0oMHx4LndvcmRzW1ZdKStQKT4+MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZ6O2Zvcig7MCE9PVAmJlY8dGUubGVuZ3RoO1YrKylQPSh6PSgwfHRlLndvcmRzW1ZdKStQKT4+''@;'; put 'put ''MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZ6O2lmKDA9PT1QJiZWPHRlLmxlbmd0aCYmdGUhPT10aGlzKWZvcig7Vjx0ZS5sZW5ndGg7VisrKXRoaXMud29yZHNbVl09dGUud29yZHNbVl07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFYpLHRlIT09dGhpcyYmKHRo''@;'; put 'put ''aXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKE8pfTt2YXIgSj1mdW5jdGlvbihPLHosbmUpe3ZhciBULFMsRix0ZT1PLndvcmRzLHg9ei53b3JkcyxQPW5lLndvcmRzLFY9MCx5ZT0wfHRlWzBd''@;'; put 'put ''LENlPTgxOTEmeWUsRGU9eWU+Pj4xMyxQZT0wfHRlWzFdLFFlPTgxOTEmUGUsJGU9UGU+Pj4xMyxndD0wfHRlWzJdLHl0PTgxOTEmZ3QscHQ9Z3Q+Pj4xMyxtdD0wfHRlWzNdLHZ0PTgxOTEmbXQsZnQ9bXQ+Pj4xMyxGdD0wfHRlWzRdLG9uPTgxOTEmRnQsX3Q9RnQ+Pj4xMyxudD0wfHRlWzVd''@;'; put 'put ''LHFlPTgxOTEmbnQsb3Q9bnQ+Pj4xMyxSdD0wfHRlWzZdLEN0PTgxOTEmUnQsY3Q9UnQ+Pj4xMyxOdD0wfHRlWzddLHplPTgxOTEmTnQsWWU9TnQ+Pj4xMyxBdD0wfHRlWzhdLGp0PTgxOTEmQXQsSnQ9QXQ+Pj4xMyxtbj0wfHRlWzldLHBuPTgxOTEmbW4sYm49bW4+Pj4xMyxsbj0wfHhbMF0s''@;'; put 'put ''Tm49ODE5MSZsbixrbj1sbj4+PjEzLGVyPTB8eFsxXSx1cj04MTkxJmVyLFhuPWVyPj4+MTMsRnI9MHx4WzJdLHhyPTgxOTEmRnIsZW49RnI+Pj4xMyxkcj0wfHhbM10sbnI9ODE5MSZkcix3bj1kcj4+PjEzLCRuPTB8eFs0XSxZdD04MTkxJiRuLGduPSRuPj4+MTMsS249MHx4WzVdLFZ0PTgx''@;'; put 'put ''OTEmS24sc249S24+Pj4xMyxVbj0wfHhbNl0sX249ODE5MSZVbix0bj1Vbj4+PjEzLEduPTB8eFs3XSxUcj04MTkxJkduLFBuPUduPj4+MTMsU3I9MHx4WzhdLHZuPTgxOTEmU3IsdW49U3I+Pj4xMyxjbj0wfHhbOV0sU249ODE5MSZjbixHdD1jbj4+PjEzO25lLm5lZ2F0aXZlPU8ubmVnYXRp''@;'; put 'put ''dmVeei5uZWdhdGl2ZSxuZS5sZW5ndGg9MTk7dmFyIEVuPShWKyhUPU1hdGguaW11bChDZSxObikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoQ2Usa24pKStNYXRoLmltdWwoRGUsTm4pfDApKTw8MTMpfDA7Vj0oKEY9TWF0aC5pbXVsKERlLGtuKSkrKFM+Pj4xMyl8MCkrKEVuPj4+MjYp''@;'; put 'put ''fDAsRW4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFFlLE5uKSxTPShTPU1hdGguaW11bChRZSxrbikpK01hdGguaW11bCgkZSxObil8MCxGPU1hdGguaW11bCgkZSxrbik7dmFyIGpuPShWKyhUPVQrTWF0aC5pbXVsKENlLHVyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsWG4p''@;'; put 'put ''fDApK01hdGguaW11bChEZSx1cil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxYbil8MCkrKFM+Pj4xMyl8MCkrKGpuPj4+MjYpfDAsam4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHl0LE5uKSxTPShTPU1hdGguaW11bCh5dCxrbikpK01hdGguaW11bChwdCxObil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChwdCxrbiksVD1UK01hdGguaW11bChRZSx1cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLFhuKXwwKStNYXRoLmltdWwoJGUsdXIpfDAsRj1GK01hdGguaW11bCgkZSxYbil8MDt2YXIgcXQ9KFYrKFQ9VCtNYXRoLmltdWwoQ2UseHIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11''@;'; put 'put ''bChDZSxlbil8MCkrTWF0aC5pbXVsKERlLHhyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLGVuKXwwKSsoUz4+PjEzKXwwKSsocXQ+Pj4yNil8MCxxdCY9NjcxMDg4NjMsVD1NYXRoLmltdWwodnQsTm4pLFM9KFM9TWF0aC5pbXVsKHZ0LGtuKSkrTWF0aC5pbXVsKGZ0LE5uKXww''@;'; put 'put ''LEY9TWF0aC5pbXVsKGZ0LGtuKSxUPVQrTWF0aC5pbXVsKHl0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsWG4pfDApK01hdGguaW11bChwdCx1cil8MCxGPUYrTWF0aC5pbXVsKHB0LFhuKXwwLFQ9VCtNYXRoLmltdWwoUWUseHIpfDAsUz0oUz1TK01hdGguaW11bChRZSxlbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKCRlLHhyKXwwLEY9RitNYXRoLmltdWwoJGUsZW4pfDA7dmFyIExuPShWKyhUPVQrTWF0aC5pbXVsKENlLG5yKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usd24pfDApK01hdGguaW11bChEZSxucil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx3bil8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKExuPj4+MjYpfDAsTG4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG9uLE5uKSxTPShTPU1hdGguaW11bChvbixrbikpK01hdGguaW11bChfdCxObil8MCxGPU1hdGguaW11bChfdCxrbiksVD1UK01hdGguaW11bCh2dCx1cil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LFhu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoZnQsdXIpfDAsRj1GK01hdGguaW11bChmdCxYbil8MCxUPVQrTWF0aC5pbXVsKHl0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsZW4pfDApK01hdGguaW11bChwdCx4cil8MCxGPUYrTWF0aC5pbXVsKHB0LGVuKXwwLFQ9VCtNYXRoLmltdWwoUWUsbnIpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChRZSx3bil8MCkrTWF0aC5pbXVsKCRlLG5yKXwwLEY9RitNYXRoLmltdWwoJGUsd24pfDA7dmFyIEpuPShWKyhUPVQrTWF0aC5pbXVsKENlLFl0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsZ24pfDApK01hdGguaW11bChEZSxZdCl8MCkpPDwxMyl8''@;'; put 'put ''MDtWPSgoRj1GK01hdGguaW11bChEZSxnbil8MCkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHFlLE5uKSxTPShTPU1hdGguaW11bChxZSxrbikpK01hdGguaW11bChvdCxObil8MCxGPU1hdGguaW11bChvdCxrbiksVD1UK01hdGguaW11bChvbix1''@;'; put 'put ''cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLFhuKXwwKStNYXRoLmltdWwoX3QsdXIpfDAsRj1GK01hdGguaW11bChfdCxYbil8MCxUPVQrTWF0aC5pbXVsKHZ0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwodnQsZW4pfDApK01hdGguaW11bChmdCx4cil8MCxGPUYrTWF0aC5pbXVsKGZ0LGVuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoeXQsbnIpfDAsUz0oUz1TK01hdGguaW11bCh5dCx3bil8MCkrTWF0aC5pbXVsKHB0LG5yKXwwLEY9RitNYXRoLmltdWwocHQsd24pfDAsVD1UK01hdGguaW11bChRZSxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKFFlLGduKXwwKStNYXRoLmltdWwoJGUsWXQpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bCgkZSxnbil8MDt2YXIgb3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVnQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxzbil8MCkrTWF0aC5pbXVsKERlLFZ0KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHNuKXwwKSsoUz4+PjEzKXwwKSsob3I+''@;'; put 'put ''Pj4yNil8MCxvciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoQ3QsTm4pLFM9KFM9TWF0aC5pbXVsKEN0LGtuKSkrTWF0aC5pbXVsKGN0LE5uKXwwLEY9TWF0aC5pbXVsKGN0LGtuKSxUPVQrTWF0aC5pbXVsKHFlLHVyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsWG4pfDApK01hdGguaW11bChvdCx1''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKG90LFhuKXwwLFQ9VCtNYXRoLmltdWwob24seHIpfDAsUz0oUz1TK01hdGguaW11bChvbixlbil8MCkrTWF0aC5pbXVsKF90LHhyKXwwLEY9RitNYXRoLmltdWwoX3QsZW4pfDAsVD1UK01hdGguaW11bCh2dCxucil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHdu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoZnQsbnIpfDAsRj1GK01hdGguaW11bChmdCx3bil8MCxUPVQrTWF0aC5pbXVsKHl0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoeXQsZ24pfDApK01hdGguaW11bChwdCxZdCl8MCxGPUYrTWF0aC5pbXVsKHB0LGduKXwwLFQ9VCtNYXRoLmltdWwoUWUsVnQpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChRZSxzbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwLEY9RitNYXRoLmltdWwoJGUsc24pfDA7dmFyIGdyPShWKyhUPVQrTWF0aC5pbXVsKENlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdG4pfDApK01hdGguaW11bChEZSxfbil8MCkpPDwxMyl8''@;'; put 'put ''MDtWPSgoRj1GK01hdGguaW11bChEZSx0bil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHplLE5uKSxTPShTPU1hdGguaW11bCh6ZSxrbikpK01hdGguaW11bChZZSxObil8MCxGPU1hdGguaW11bChZZSxrbiksVD1UK01hdGguaW11bChDdCx1''@;'; put 'put ''cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LFhuKXwwKStNYXRoLmltdWwoY3QsdXIpfDAsRj1GK01hdGguaW11bChjdCxYbil8MCxUPVQrTWF0aC5pbXVsKHFlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChvdCx4cil8MCxGPUYrTWF0aC5pbXVsKG90LGVuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwob24sbnIpfDAsUz0oUz1TK01hdGguaW11bChvbix3bil8MCkrTWF0aC5pbXVsKF90LG5yKXwwLEY9RitNYXRoLmltdWwoX3Qsd24pfDAsVD1UK01hdGguaW11bCh2dCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LGduKXwwKStNYXRoLmltdWwoZnQsWXQpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChmdCxnbil8MCxUPVQrTWF0aC5pbXVsKHl0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoeXQsc24pfDApK01hdGguaW11bChwdCxWdCl8MCxGPUYrTWF0aC5pbXVsKHB0LHNuKXwwLFQ9VCtNYXRoLmltdWwoUWUsX24pfDAsUz0oUz1TK01hdGguaW11bChRZSx0bil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKCRlLF9uKXwwLEY9RitNYXRoLmltdWwoJGUsdG4pfDA7dmFyIEpyPShWKyhUPVQrTWF0aC5pbXVsKENlLFRyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsUG4pfDApK01hdGguaW11bChEZSxUcil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxQbil8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGp0LE5uKSxTPShTPU1hdGguaW11bChqdCxrbikpK01hdGguaW11bChKdCxObil8MCxGPU1hdGguaW11bChKdCxrbiksVD1UK01hdGguaW11bCh6ZSx1cil8MCxTPShTPVMrTWF0aC5pbXVsKHplLFhu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoWWUsdXIpfDAsRj1GK01hdGguaW11bChZZSxYbil8MCxUPVQrTWF0aC5pbXVsKEN0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsZW4pfDApK01hdGguaW11bChjdCx4cil8MCxGPUYrTWF0aC5pbXVsKGN0LGVuKXwwLFQ9VCtNYXRoLmltdWwocWUsbnIpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChxZSx3bil8MCkrTWF0aC5pbXVsKG90LG5yKXwwLEY9RitNYXRoLmltdWwob3Qsd24pfDAsVD1UK01hdGguaW11bChvbixZdCl8MCxTPShTPVMrTWF0aC5pbXVsKG9uLGduKXwwKStNYXRoLmltdWwoX3QsWXQpfDAsRj1GK01hdGguaW11bChfdCxnbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKHZ0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwodnQsc24pfDApK01hdGguaW11bChmdCxWdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHNuKXwwLFQ9VCtNYXRoLmltdWwoeXQsX24pfDAsUz0oUz1TK01hdGguaW11bCh5dCx0bil8MCkrTWF0aC5pbXVsKHB0LF9uKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwocHQsdG4pfDAsVD1UK01hdGguaW11bChRZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLFBuKXwwKStNYXRoLmltdWwoJGUsVHIpfDAsRj1GK01hdGguaW11bCgkZSxQbil8MDt2YXIgVnI9KFYrKFQ9VCtNYXRoLmltdWwoQ2Usdm4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11''@;'; put 'put ''bChDZSx1bil8MCkrTWF0aC5pbXVsKERlLHZuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sTm4pLFM9KFM9TWF0aC5pbXVsKHBuLGtuKSkrTWF0aC5pbXVsKGJuLE5uKXww''@;'; put 'put ''LEY9TWF0aC5pbXVsKGJuLGtuKSxUPVQrTWF0aC5pbXVsKGp0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsWG4pfDApK01hdGguaW11bChKdCx1cil8MCxGPUYrTWF0aC5pbXVsKEp0LFhuKXwwLFQ9VCtNYXRoLmltdWwoemUseHIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxlbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKFllLHhyKXwwLEY9RitNYXRoLmltdWwoWWUsZW4pfDAsVD1UK01hdGguaW11bChDdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHduKXwwKStNYXRoLmltdWwoY3QsbnIpfDAsRj1GK01hdGguaW11bChjdCx3bil8MCxUPVQrTWF0aC5pbXVsKHFlLFl0KXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwocWUsZ24pfDApK01hdGguaW11bChvdCxZdCl8MCxGPUYrTWF0aC5pbXVsKG90LGduKXwwLFQ9VCtNYXRoLmltdWwob24sVnQpfDAsUz0oUz1TK01hdGguaW11bChvbixzbil8MCkrTWF0aC5pbXVsKF90LFZ0KXwwLEY9RitNYXRoLmltdWwoX3Qsc24pfDAsVD1UK01hdGguaW11bCh2''@;'; put 'put ''dCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHRuKXwwKStNYXRoLmltdWwoZnQsX24pfDAsRj1GK01hdGguaW11bChmdCx0bil8MCxUPVQrTWF0aC5pbXVsKHl0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsUG4pfDApK01hdGguaW11bChwdCxUcil8MCxGPUYrTWF0aC5pbXVsKHB0LFBu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoUWUsdm4pfDAsUz0oUz1TK01hdGguaW11bChRZSx1bil8MCkrTWF0aC5pbXVsKCRlLHZuKXwwLEY9RitNYXRoLmltdWwoJGUsdW4pfDA7dmFyIHRpPShWKyhUPVQrTWF0aC5pbXVsKENlLFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsR3Qp''@;'; put 'put ''fDApK01hdGguaW11bChEZSxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKHRpPj4+MjYpfDAsdGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLHVyKSxTPShTPU1hdGguaW11bChwbixYbikpK01hdGguaW11bChibix1cil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChibixYbiksVD1UK01hdGguaW11bChqdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LGVuKXwwKStNYXRoLmltdWwoSnQseHIpfDAsRj1GK01hdGguaW11bChKdCxlbil8MCxUPVQrTWF0aC5pbXVsKHplLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoemUsd24pfDApK01hdGguaW11bChZ''@;'; put 'put ''ZSxucil8MCxGPUYrTWF0aC5pbXVsKFllLHduKXwwLFQ9VCtNYXRoLmltdWwoQ3QsWXQpfDAsUz0oUz1TK01hdGguaW11bChDdCxnbil8MCkrTWF0aC5pbXVsKGN0LFl0KXwwLEY9RitNYXRoLmltdWwoY3QsZ24pfDAsVD1UK01hdGguaW11bChxZSxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKHFl''@;'; put 'put ''LHNuKXwwKStNYXRoLmltdWwob3QsVnQpfDAsRj1GK01hdGguaW11bChvdCxzbil8MCxUPVQrTWF0aC5pbXVsKG9uLF9uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdG4pfDApK01hdGguaW11bChfdCxfbil8MCxGPUYrTWF0aC5pbXVsKF90LHRuKXwwLFQ9VCtNYXRoLmltdWwodnQsVHIpfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bCh2dCxQbil8MCkrTWF0aC5pbXVsKGZ0LFRyKXwwLEY9RitNYXRoLmltdWwoZnQsUG4pfDAsVD1UK01hdGguaW11bCh5dCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LHVuKXwwKStNYXRoLmltdWwocHQsdm4pfDAsRj1GK01hdGguaW11bChwdCx1bil8MDt2YXIg''@;'; put 'put ''T3I9KFYrKFQ9VCtNYXRoLmltdWwoUWUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChRZSxHdCl8MCkrTWF0aC5pbXVsKCRlLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKCRlLEd0KXwwKSsoUz4+PjEzKXwwKSsoT3I+Pj4yNil8MCxPciY9NjcxMDg4NjMsVD1N''@;'; put 'put ''YXRoLmltdWwocG4seHIpLFM9KFM9TWF0aC5pbXVsKHBuLGVuKSkrTWF0aC5pbXVsKGJuLHhyKXwwLEY9TWF0aC5pbXVsKGJuLGVuKSxUPVQrTWF0aC5pbXVsKGp0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoanQsd24pfDApK01hdGguaW11bChKdCxucil8MCxGPUYrTWF0aC5pbXVsKEp0LHdu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoemUsWXQpfDAsUz0oUz1TK01hdGguaW11bCh6ZSxnbil8MCkrTWF0aC5pbXVsKFllLFl0KXwwLEY9RitNYXRoLmltdWwoWWUsZ24pfDAsVD1UK01hdGguaW11bChDdCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHNuKXwwKStNYXRoLmltdWwoY3QsVnQpfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChjdCxzbil8MCxUPVQrTWF0aC5pbXVsKHFlLF9uKXwwLFM9KFM9UytNYXRoLmltdWwocWUsdG4pfDApK01hdGguaW11bChvdCxfbil8MCxGPUYrTWF0aC5pbXVsKG90LHRuKXwwLFQ9VCtNYXRoLmltdWwob24sVHIpfDAsUz0oUz1TK01hdGguaW11bChvbixQbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKF90LFRyKXwwLEY9RitNYXRoLmltdWwoX3QsUG4pfDAsVD1UK01hdGguaW11bCh2dCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LHVuKXwwKStNYXRoLmltdWwoZnQsdm4pfDAsRj1GK01hdGguaW11bChmdCx1bil8MDt2YXIgbGk9KFYrKFQ9VCtNYXRoLmltdWwoeXQsU24p''@;'; put 'put ''fDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCh5dCxHdCl8MCkrTWF0aC5pbXVsKHB0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKHB0LEd0KXwwKSsoUz4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sbnIpLFM9KFM9TWF0aC5p''@;'; put 'put ''bXVsKHBuLHduKSkrTWF0aC5pbXVsKGJuLG5yKXwwLEY9TWF0aC5pbXVsKGJuLHduKSxUPVQrTWF0aC5pbXVsKGp0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwoanQsZ24pfDApK01hdGguaW11bChKdCxZdCl8MCxGPUYrTWF0aC5pbXVsKEp0LGduKXwwLFQ9VCtNYXRoLmltdWwoemUsVnQpfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bCh6ZSxzbil8MCkrTWF0aC5pbXVsKFllLFZ0KXwwLEY9RitNYXRoLmltdWwoWWUsc24pfDAsVD1UK01hdGguaW11bChDdCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHRuKXwwKStNYXRoLmltdWwoY3QsX24pfDAsRj1GK01hdGguaW11bChjdCx0bil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKHFlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwocWUsUG4pfDApK01hdGguaW11bChvdCxUcil8MCxGPUYrTWF0aC5pbXVsKG90LFBuKXwwLFQ9VCtNYXRoLmltdWwob24sdm4pfDAsUz0oUz1TK01hdGguaW11bChvbix1bil8MCkrTWF0aC5pbXVsKF90LHZuKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoX3QsdW4pfDA7dmFyIElpPShWKyhUPVQrTWF0aC5pbXVsKHZ0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwodnQsR3QpfDApK01hdGguaW11bChmdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChmdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKElpPj4+MjYp''@;'; put 'put ''fDAsSWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLFl0KSxTPShTPU1hdGguaW11bChwbixnbikpK01hdGguaW11bChibixZdCl8MCxGPU1hdGguaW11bChibixnbiksVD1UK01hdGguaW11bChqdCxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHNuKXwwKStNYXRoLmltdWwoSnQsVnQpfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChKdCxzbil8MCxUPVQrTWF0aC5pbXVsKHplLF9uKXwwLFM9KFM9UytNYXRoLmltdWwoemUsdG4pfDApK01hdGguaW11bChZZSxfbil8MCxGPUYrTWF0aC5pbXVsKFllLHRuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsVHIpfDAsUz0oUz1TK01hdGguaW11bChDdCxQbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKGN0LFRyKXwwLEY9RitNYXRoLmltdWwoY3QsUG4pfDAsVD1UK01hdGguaW11bChxZSx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHVuKXwwKStNYXRoLmltdWwob3Qsdm4pfDAsRj1GK01hdGguaW11bChvdCx1bil8MDt2YXIgcjA9KFYrKFQ9VCtNYXRoLmltdWwob24sU24p''@;'; put 'put ''fDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChvbixHdCl8MCkrTWF0aC5pbXVsKF90LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKF90LEd0KXwwKSsoUz4+PjEzKXwwKSsocjA+Pj4yNil8MCxyMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sVnQpLFM9KFM9TWF0aC5p''@;'; put 'put ''bXVsKHBuLHNuKSkrTWF0aC5pbXVsKGJuLFZ0KXwwLEY9TWF0aC5pbXVsKGJuLHNuKSxUPVQrTWF0aC5pbXVsKGp0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdG4pfDApK01hdGguaW11bChKdCxfbil8MCxGPUYrTWF0aC5pbXVsKEp0LHRuKXwwLFQ9VCtNYXRoLmltdWwoemUsVHIpfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bCh6ZSxQbil8MCkrTWF0aC5pbXVsKFllLFRyKXwwLEY9RitNYXRoLmltdWwoWWUsUG4pfDAsVD1UK01hdGguaW11bChDdCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHVuKXwwKStNYXRoLmltdWwoY3Qsdm4pfDAsRj1GK01hdGguaW11bChjdCx1bil8MDt2YXIg''@;'; put 'put ''ZTA9KFYrKFQ9VCtNYXRoLmltdWwocWUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChxZSxHdCl8MCkrTWF0aC5pbXVsKG90LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKG90LEd0KXwwKSsoUz4+PjEzKXwwKSsoZTA+Pj4yNil8MCxlMCY9NjcxMDg4NjMsVD1N''@;'; put 'put ''YXRoLmltdWwocG4sX24pLFM9KFM9TWF0aC5pbXVsKHBuLHRuKSkrTWF0aC5pbXVsKGJuLF9uKXwwLEY9TWF0aC5pbXVsKGJuLHRuKSxUPVQrTWF0aC5pbXVsKGp0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsUG4pfDApK01hdGguaW11bChKdCxUcil8MCxGPUYrTWF0aC5pbXVsKEp0LFBu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoemUsdm4pfDAsUz0oUz1TK01hdGguaW11bCh6ZSx1bil8MCkrTWF0aC5pbXVsKFllLHZuKXwwLEY9RitNYXRoLmltdWwoWWUsdW4pfDA7dmFyIGQwPShWKyhUPVQrTWF0aC5pbXVsKEN0LFNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ3QsR3Qp''@;'; put 'put ''fDApK01hdGguaW11bChjdCxTbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChjdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHBuLFRyKSxTPShTPU1hdGguaW11bChwbixQbikpK01hdGguaW11bChibixUcil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChibixQbiksVD1UK01hdGguaW11bChqdCx2bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHVuKXwwKStNYXRoLmltdWwoSnQsdm4pfDAsRj1GK01hdGguaW11bChKdCx1bil8MDt2YXIgXzA9KFYrKFQ9VCtNYXRoLmltdWwoemUsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11''@;'; put 'put ''bCh6ZSxHdCl8MCkrTWF0aC5pbXVsKFllLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKFllLEd0KXwwKSsoUz4+PjEzKXwwKSsoXzA+Pj4yNil8MCxfMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sdm4pLFM9KFM9TWF0aC5pbXVsKHBuLHVuKSkrTWF0aC5pbXVsKGJuLHZuKXww''@;'; put 'put ''LEY9TWF0aC5pbXVsKGJuLHVuKTt2YXIgVTA9KFYrKFQ9VCtNYXRoLmltdWwoanQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChqdCxHdCl8MCkrTWF0aC5pbXVsKEp0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKEp0LEd0KXwwKSsoUz4+PjEzKXwwKSsoVTA+''@;'; put 'put ''Pj4yNil8MCxVMCY9NjcxMDg4NjM7dmFyIEJpPShWKyhUPU1hdGguaW11bChwbixTbikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwocG4sR3QpKStNYXRoLmltdWwoYm4sU24pfDApKTw8MTMpfDA7cmV0dXJuIFY9KChGPU1hdGguaW11bChibixHdCkpKyhTPj4+MTMpfDApKyhCaT4+PjI2''@;'; put 'put ''KXwwLEJpJj02NzEwODg2MyxQWzBdPUVuLFBbMV09am4sUFsyXT1xdCxQWzNdPUxuLFBbNF09Sm4sUFs1XT1vcixQWzZdPWdyLFBbN109SnIsUFs4XT1WcixQWzldPXRpLFBbMTBdPU9yLFBbMTFdPWxpLFBbMTJdPUlpLFBbMTNdPXIwLFBbMTRdPWUwLFBbMTVdPWQwLFBbMTZdPV8wLFBbMTdd''@;'; put 'put ''PVUwLFBbMThdPUJpLDAhPT1WJiYoUFsxOV09VixuZS5sZW5ndGgrKyksbmV9O2Z1bmN0aW9uIGFlKGhlLE8seil7cmV0dXJuKG5ldyBmZSkubXVscChoZSxPLHopfWZ1bmN0aW9uIGZlKGhlLE8pe3RoaXMueD1oZSx0aGlzLnk9T31NYXRoLmltdWx8fChKPXEpLFUucHJvdG90eXBlLm11bFRv''@;'; put 'put ''PWZ1bmN0aW9uKE8seil7dmFyIG5lLHRlPXRoaXMubGVuZ3RoK08ubGVuZ3RoO3JldHVybiBuZT0xMD09PXRoaXMubGVuZ3RoJiYxMD09PU8ubGVuZ3RoP0oodGhpcyxPLHopOnRlPDYzP3EodGhpcyxPLHopOnRlPDEwMjQ/ZnVuY3Rpb24gc2UoaGUsTyx6KXt6Lm5lZ2F0aXZlPU8ubmVnYXRp''@;'; put 'put ''dmVeaGUubmVnYXRpdmUsei5sZW5ndGg9aGUubGVuZ3RoK08ubGVuZ3RoO2Zvcih2YXIgbmU9MCx0ZT0wLHg9MDt4PHoubGVuZ3RoLTE7eCsrKXt2YXIgUD10ZTt0ZT0wO2Zvcih2YXIgVj02NzEwODg2MyZuZSxUPU1hdGgubWluKHgsTy5sZW5ndGgtMSksUz1NYXRoLm1heCgwLHgtaGUubGVu''@;'; put 'put ''Z3RoKzEpO1M8PVQ7UysrKXt2YXIgRGU9KDB8aGUud29yZHNbeC1TXSkqKDB8Ty53b3Jkc1tTXSksUGU9NjcxMDg4NjMmRGU7Vj02NzEwODg2MyYoUGU9UGUrVnwwKSx0ZSs9KFA9KFA9UCsoRGUvNjcxMDg4NjR8MCl8MCkrKFBlPj4+MjYpfDApPj4+MjYsUCY9NjcxMDg4NjN9ei53b3Jkc1t4''@;'; put 'put ''XT1WLG5lPVAsUD10ZX1yZXR1cm4gMCE9PW5lP3oud29yZHNbeF09bmU6ei5sZW5ndGgtLSx6LnN0cmlwKCl9KHRoaXMsTyx6KTphZSh0aGlzLE8seiksbmV9LGZlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyksbmU9VS5wcm90b3R5cGUuX2Nv''@;'; put 'put ''dW50Qml0cyhPKS0xLHRlPTA7dGU8Tzt0ZSsrKXpbdGVdPXRoaXMucmV2QmluKHRlLG5lLE8pO3JldHVybiB6fSxmZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKE8seixuZSl7aWYoMD09PU98fE89PT1uZS0xKXJldHVybiBPO2Zvcih2YXIgdGU9MCx4PTA7eDx6O3grKyl0ZXw9KDEmTyk8''@;'; put 'put ''PHoteC0xLE8+Pj0xO3JldHVybiB0ZX0sZmUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCl7Zm9yKHZhciBWPTA7VjxQO1YrKyl0ZVtWXT16W09bVl1dLHhbVl09bmVbT1tWXV19LGZlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oTyx6LG5lLHRlLHgsUCl7''@;'; put 'put ''dGhpcy5wZXJtdXRlKFAsTyx6LG5lLHRlLHgpO2Zvcih2YXIgVj0xO1Y8eDtWPDw9MSlmb3IodmFyIFQ9Vjw8MSxTPU1hdGguY29zKDIqTWF0aC5QSS9UKSxGPU1hdGguc2luKDIqTWF0aC5QSS9UKSx5ZT0wO3llPHg7eWUrPVQpZm9yKHZhciBDZT1TLERlPUYsUGU9MDtQZTxWO1BlKyspe3Zh''@;'; put 'put ''ciBRZT1uZVt5ZStQZV0sJGU9dGVbeWUrUGVdLGd0PW5lW3llK1BlK1ZdLHl0PXRlW3llK1BlK1ZdLHB0PUNlKmd0LURlKnl0O3l0PUNlKnl0K0RlKmd0LG5lW3llK1BlXT1RZSsoZ3Q9cHQpLHRlW3llK1BlXT0kZSt5dCxuZVt5ZStQZStWXT1RZS1ndCx0ZVt5ZStQZStWXT0kZS15dCxQZSE9''@;'; put 'put ''PVQmJihwdD1TKkNlLUYqRGUsRGU9UypEZStGKkNlLENlPXB0KX19LGZlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihPLHope3ZhciBuZT0xfE1hdGgubWF4KHosTyksdGU9MSZuZSx4PTA7Zm9yKG5lPW5lLzJ8MDtuZTtuZT4+Pj0xKXgrKztyZXR1cm4gMTw8eCsxK3RlfSxmZS5w''@;'; put 'put ''cm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKE8seixuZSl7aWYoIShuZTw9MSkpZm9yKHZhciB0ZT0wO3RlPG5lLzI7dGUrKyl7dmFyIHg9T1t0ZV07T1t0ZV09T1tuZS10ZS0xXSxPW25lLXRlLTFdPXgseD16W3RlXSx6W3RlXT0teltuZS10ZS0xXSx6W25lLXRlLTFdPS14fX0sZmUucHJv''@;'; put 'put ''dG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihPLHope2Zvcih2YXIgbmU9MCx0ZT0wO3RlPHovMjt0ZSsrKXt2YXIgeD04MTkyKk1hdGgucm91bmQoT1syKnRlKzFdL3opK01hdGgucm91bmQoT1syKnRlXS96KStuZTtPW3RlXT02NzEwODg2MyZ4LG5lPXg8NjcxMDg4NjQ/MDp4LzY3MTA4''@;'; put 'put ''ODY0fDB9cmV0dXJuIE99LGZlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKE8seixuZSx0ZSl7Zm9yKHZhciB4PTAsUD0wO1A8ejtQKyspbmVbMipQXT04MTkxJih4Kz0wfE9bUF0pLG5lWzIqUCsxXT04MTkxJih4Pj4+PTEzKSx4Pj4+PTEzO2ZvcihQPTIqejtQPHRlOysrUCluZVtQ''@;'; put 'put ''XT0wO0UoMD09PXgpLEUoMD09KC04MTkyJngpKX0sZmUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxuZT0wO25lPE87bmUrKyl6W25lXT0wO3JldHVybiB6fSxmZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZT0yKnRoaXMu''@;'; put 'put ''Z3Vlc3NMZW4xM2IoTy5sZW5ndGgsei5sZW5ndGgpLHg9dGhpcy5tYWtlUkJUKHRlKSxQPXRoaXMuc3R1Yih0ZSksVj1uZXcgQXJyYXkodGUpLFQ9bmV3IEFycmF5KHRlKSxTPW5ldyBBcnJheSh0ZSksRj1uZXcgQXJyYXkodGUpLHllPW5ldyBBcnJheSh0ZSksQ2U9bmV3IEFycmF5KHRlKSxE''@;'; put 'put ''ZT1uZS53b3JkcztEZS5sZW5ndGg9dGUsdGhpcy5jb252ZXJ0MTNiKE8ud29yZHMsTy5sZW5ndGgsVix0ZSksdGhpcy5jb252ZXJ0MTNiKHoud29yZHMsei5sZW5ndGgsRix0ZSksdGhpcy50cmFuc2Zvcm0oVixQLFQsUyx0ZSx4KSx0aGlzLnRyYW5zZm9ybShGLFAseWUsQ2UsdGUseCk7Zm9y''@;'; put 'put ''KHZhciBQZT0wO1BlPHRlO1BlKyspe3ZhciBRZT1UW1BlXSp5ZVtQZV0tU1tQZV0qQ2VbUGVdO1NbUGVdPVRbUGVdKkNlW1BlXStTW1BlXSp5ZVtQZV0sVFtQZV09UWV9cmV0dXJuIHRoaXMuY29uanVnYXRlKFQsUyx0ZSksdGhpcy50cmFuc2Zvcm0oVCxTLERlLFAsdGUseCksdGhpcy5jb25q''@;'; put 'put ''dWdhdGUoRGUsUCx0ZSksdGhpcy5ub3JtYWxpemUxM2IoRGUsdGUpLG5lLm5lZ2F0aXZlPU8ubmVnYXRpdmVeei5uZWdhdGl2ZSxuZS5sZW5ndGg9Ty5sZW5ndGgrei5sZW5ndGgsbmUuc3RyaXAoKX0sVS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8pe3ZhciB6PW5ldyBVKG51bGwpO3JldHVy''@;'; put 'put ''biB6LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtPLmxlbmd0aCksdGhpcy5tdWxUbyhPLHopfSxVLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKE8pe3ZhciB6PW5ldyBVKG51bGwpO3JldHVybiB6LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtPLmxlbmd0aCksYWUodGhpcyxPLHop''@;'; put 'put ''fSxVLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oTyx0aGlzKX0sVS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCk7Zm9yKHZhciB6PTAsbmU9MDtuZTx0aGlzLmxlbmd0aDtu''@;'; put 'put ''ZSsrKXt2YXIgdGU9KDB8dGhpcy53b3Jkc1tuZV0pKk8seD0oNjcxMDg4NjMmdGUpKyg2NzEwODg2MyZ6KTt6Pj49MjYseis9dGUvNjcxMDg4NjR8MCx6Kz14Pj4+MjYsdGhpcy53b3Jkc1tuZV09NjcxMDg4NjMmeH1yZXR1cm4gMCE9PXomJih0aGlzLndvcmRzW25lXT16LHRoaXMubGVuZ3Ro''@;'; put 'put ''KyspLHRoaXN9LFUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihPKX0sVS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxVLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0''@;'; put 'put ''aGlzLmNsb25lKCkpfSxVLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyl7dmFyIHo9ZnVuY3Rpb24gZWUoaGUpe2Zvcih2YXIgTz1uZXcgQXJyYXkoaGUuYml0TGVuZ3RoKCkpLHo9MDt6PE8ubGVuZ3RoO3orKyl7dmFyIHRlPXolMjY7T1t6XT0oaGUud29yZHNbei8yNnwwXSYxPDx0ZSk+Pj50''@;'; put 'put ''ZX1yZXR1cm4gT30oTyk7aWYoMD09PXoubGVuZ3RoKXJldHVybiBuZXcgVSgxKTtmb3IodmFyIG5lPXRoaXMsdGU9MDt0ZTx6Lmxlbmd0aCYmMD09PXpbdGVdO3RlKyssbmU9bmUuc3FyKCkpO2lmKCsrdGU8ei5sZW5ndGgpZm9yKHZhciB4PW5lLnNxcigpO3RlPHoubGVuZ3RoO3RlKysseD14''@;'; put 'put ''LnNxcigpKTAhPT16W3RlXSYmKG5lPW5lLm11bCh4KSk7cmV0dXJuIG5lfSxVLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB4LHo9TyUyNixuZT0oTy16KS8yNix0ZT02NzEwODg2Mz4+PjI2LXo8PDI2LXo7aWYoMCE9PXope3Zh''@;'; put 'put ''ciBQPTA7Zm9yKHg9MDt4PHRoaXMubGVuZ3RoO3grKyl7dmFyIFY9dGhpcy53b3Jkc1t4XSZ0ZTt0aGlzLndvcmRzW3hdPSgwfHRoaXMud29yZHNbeF0pLVY8PHp8UCxQPVY+Pj4yNi16fVAmJih0aGlzLndvcmRzW3hdPVAsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PW5lKXtmb3IoeD10aGlzLmxl''@;'; put 'put ''bmd0aC0xO3g+PTA7eC0tKXRoaXMud29yZHNbeCtuZV09dGhpcy53b3Jkc1t4XTtmb3IoeD0wO3g8bmU7eCsrKXRoaXMud29yZHNbeF09MDt0aGlzLmxlbmd0aCs9bmV9cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09PXRoaXMu''@;'; put 'put ''bmVnYXRpdmUpLHRoaXMuaXVzaGxuKE8pfSxVLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oTyx6LG5lKXt2YXIgdGU7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApLHRlPXo/KHoteiUyNikvMjY6MDt2YXIgeD1PJTI2LFA9TWF0aC5taW4oKE8teCkvMjYsdGhpcy5sZW5ndGgpLFY9Njcx''@;'; put 'put ''MDg4NjNeNjcxMDg4NjM+Pj54PDx4LFQ9bmU7aWYodGUtPVAsdGU9TWF0aC5tYXgoMCx0ZSksVCl7Zm9yKHZhciBTPTA7UzxQO1MrKylULndvcmRzW1NdPXRoaXMud29yZHNbU107VC5sZW5ndGg9UH1pZigwIT09UClpZih0aGlzLmxlbmd0aD5QKWZvcih0aGlzLmxlbmd0aC09UCxTPTA7Uzx0''@;'; put 'put ''aGlzLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT10aGlzLndvcmRzW1MrUF07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgRj0wO2ZvcihTPXRoaXMubGVuZ3RoLTE7Uz49MCYmKDAhPT1GfHxTPj10ZSk7Uy0tKXt2YXIgeWU9MHx0aGlzLndvcmRzW1NdO3RoaXMud29y''@;'; put 'put ''ZHNbU109Rjw8MjYteHx5ZT4+PngsRj15ZSZWfXJldHVybiBUJiYwIT09RiYmKFQud29yZHNbVC5sZW5ndGgrK109RiksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oTyx6LG5l''@;'; put 'put ''KXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oTyx6LG5lKX0sVS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKE8pfSxVLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hs''@;'; put 'put ''bihPKX0sVS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKE8pfSxVLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihPKX0sVS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIE8mJk8+PTApO3ZhciB6PU8lMjYsbmU9KE8teikvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9bmV8fCEodGhpcy53b3Jkc1tuZV0mMTw8eikpfSxVLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PU8lMjYsbmU9''@;'; put 'put ''KE8teikvMjY7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1uZT90aGlzOigwIT09eiYmbmUrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihuZSx0aGlzLmxlbmd0aCksMCE9PXomJih0aGlzLndv''@;'; put 'put ''cmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+Pno8PHopLHRoaXMuc3RyaXAoKSl9LFUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKE8pfSxVLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihPKXtyZXR1cm4gRSgibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCksTzwwP3RoaXMuaXN1Ym4oLU8pOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Tz8odGhpcy53b3Jkc1swXT1PLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKE8pfSxVLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oTyl7dGhpcy53b3Jkc1swXSs9Tztmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3pdPj02NzEwODg2NDt6''@;'; put 'put ''KyspdGhpcy53b3Jkc1t6XS09NjcxMDg4NjQsej09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1t6KzFdPTE6dGhpcy53b3Jkc1t6KzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHorMSksdGhpc30sVS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oTyl7aWYo''@;'; put 'put ''RSgibnVtYmVyIj09dHlwZW9mIE8pLEUoTzw2NzEwODg2NCksTzwwKXJldHVybiB0aGlzLmlhZGRuKC1PKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09TywxPT09''@;'; put 'put ''dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgej0wO3o8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbel08MDt6KyspdGhpcy53b3Jkc1t6XSs9NjcxMDg4NjQsdGhpcy53b3Jkc1t6KzFd''@;'; put 'put ''LT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihPKX0sVS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKE8pfSxVLnByb3RvdHlwZS5pYWJzPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxVLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sVS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKE8seixuZSl7dmFyIHg7dGhpcy5fZXhwYW5kKE8ubGVuZ3RoK25lKTt2''@;'; put 'put ''YXIgUCxWPTA7Zm9yKHg9MDt4PE8ubGVuZ3RoO3grKyl7UD0oMHx0aGlzLndvcmRzW3grbmVdKStWO3ZhciBUPSgwfE8ud29yZHNbeF0pKno7Vj0oKFAtPTY3MTA4ODYzJlQpPj4yNiktKFQvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t4K25lXT02NzEwODg2MyZQfWZvcig7eDx0aGlzLmxlbmd0''@;'; put 'put ''aC1uZTt4KyspVj0oUD0oMHx0aGlzLndvcmRzW3grbmVdKStWKT4+MjYsdGhpcy53b3Jkc1t4K25lXT02NzEwODg2MyZQO2lmKDA9PT1WKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKEUoLTE9PT1WKSxWPTAseD0wO3g8dGhpcy5sZW5ndGg7eCsrKVY9KFA9LSgwfHRoaXMud29yZHNbeF0pK1Yp''@;'; put 'put ''Pj4yNix0aGlzLndvcmRzW3hdPTY3MTA4ODYzJlA7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKE8seil7dmFyIG5lLHRlPXRoaXMuY2xvbmUoKSx4PU8sUD0wfHgud29yZHNbeC5sZW5ndGgtMV07MCE9KG5lPTI2LXRo''@;'; put 'put ''aXMuX2NvdW50Qml0cyhQKSkmJih4PXgudXNobG4obmUpLHRlLml1c2hsbihuZSksUD0wfHgud29yZHNbeC5sZW5ndGgtMV0pO3ZhciBTLFQ9dGUubGVuZ3RoLXgubGVuZ3RoO2lmKCJtb2QiIT09eil7KFM9bmV3IFUobnVsbCkpLmxlbmd0aD1UKzEsUy53b3Jkcz1uZXcgQXJyYXkoUy5sZW5n''@;'; put 'put ''dGgpO2Zvcih2YXIgRj0wO0Y8Uy5sZW5ndGg7RisrKVMud29yZHNbRl09MH12YXIgeWU9dGUuY2xvbmUoKS5faXNobG5zdWJtdWwoeCwxLFQpOzA9PT15ZS5uZWdhdGl2ZSYmKHRlPXllLFMmJihTLndvcmRzW1RdPTEpKTtmb3IodmFyIENlPVQtMTtDZT49MDtDZS0tKXt2YXIgRGU9NjcxMDg4''@;'; put 'put ''NjQqKDB8dGUud29yZHNbeC5sZW5ndGgrQ2VdKSsoMHx0ZS53b3Jkc1t4Lmxlbmd0aCtDZS0xXSk7Zm9yKERlPU1hdGgubWluKERlL1B8MCw2NzEwODg2MyksdGUuX2lzaGxuc3VibXVsKHgsRGUsQ2UpOzAhPT10ZS5uZWdhdGl2ZTspRGUtLSx0ZS5uZWdhdGl2ZT0wLHRlLl9pc2hsbnN1Ym11''@;'; put 'put ''bCh4LDEsQ2UpLHRlLmlzWmVybygpfHwodGUubmVnYXRpdmVePTEpO1MmJihTLndvcmRzW0NlXT1EZSl9cmV0dXJuIFMmJlMuc3RyaXAoKSx0ZS5zdHJpcCgpLCJkaXYiIT09eiYmMCE9PW5lJiZ0ZS5pdXNocm4obmUpLHtkaXY6U3x8bnVsbCxtb2Q6dGV9fSxVLnByb3RvdHlwZS5kaXZtb2Q9''@;'; put 'put ''ZnVuY3Rpb24oTyx6LG5lKXtyZXR1cm4gRSghTy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBVKDApLG1vZDpuZXcgVSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8seiksIm1vZCIhPT16JiYodGU9UC5kaXYubmVn''@;'; put 'put ''KCkpLCJkaXYiIT09eiYmKHg9UC5tb2QubmVnKCksbmUmJjAhPT14Lm5lZ2F0aXZlJiZ4LmlhZGQoTykpLHtkaXY6dGUsbW9kOnh9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmU/KFA9dGhpcy5kaXZtb2QoTy5uZWcoKSx6KSwibW9kIiE9PXomJih0ZT1QLmRpdi5uZWcoKSks''@;'; put 'put ''e2Rpdjp0ZSxtb2Q6UC5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZPLm5lZ2F0aXZlKT8oUD10aGlzLm5lZygpLmRpdm1vZChPLm5lZygpLHopLCJkaXYiIT09eiYmKHg9UC5tb2QubmVnKCksbmUmJjAhPT14Lm5lZ2F0aXZlJiZ4LmlzdWIoTykpLHtkaXY6UC5kaXYsbW9kOnh9KTpPLmxlbmd0''@;'; put 'put ''aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoTyk8MD97ZGl2Om5ldyBVKDApLG1vZDp0aGlzfToxPT09Ty5sZW5ndGg/ImRpdiI9PT16P3tkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PXo/e2RpdjpudWxsLG1vZDpuZXcgVSh0aGlzLm1vZG4oTy53b3Jkc1swXSkp''@;'; put 'put ''fTp7ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihPLHopO3ZhciB0ZSx4LFB9LFUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywiZGl2IiwhMSkuZGl2fSxVLnByb3Rv''@;'; put 'put ''dHlwZS5tb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITEpLm1vZH0sVS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywibW9kIiwhMCkubW9kfSxVLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihPKXt2YXIgej10aGlz''@;'; put 'put ''LmRpdm1vZChPKTtpZih6Lm1vZC5pc1plcm8oKSlyZXR1cm4gei5kaXY7dmFyIG5lPTAhPT16LmRpdi5uZWdhdGl2ZT96Lm1vZC5pc3ViKE8pOnoubW9kLHRlPU8udXNocm4oMSkseD1PLmFuZGxuKDEpLFA9bmUuY21wKHRlKTtyZXR1cm4gUDwwfHwxPT09eCYmMD09PVA/ei5kaXY6MCE9PXou''@;'; put 'put ''ZGl2Lm5lZ2F0aXZlP3ouZGl2LmlzdWJuKDEpOnouZGl2LmlhZGRuKDEpfSxVLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0oMTw8MjYpJU8sbmU9MCx0ZT10aGlzLmxlbmd0aC0xO3RlPj0wO3RlLS0pbmU9KHoqbmUrKDB8dGhpcy53b3Jkc1t0''@;'; put 'put ''ZV0pKSVPO3JldHVybiBuZX0sVS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oTyl7RShPPD02NzEwODg2Myk7Zm9yKHZhciB6PTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKXt2YXIgdGU9KDB8dGhpcy53b3Jkc1tuZV0pKzY3MTA4ODY0Kno7dGhpcy53b3Jkc1tuZV09dGUvT3wwLHo9''@;'; put 'put ''dGUlT31yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oTyl9LFUucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1plcm8oKSk7dmFyIHo9dGhpcyxuZT1PLmNs''@;'; put 'put ''b25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgdGU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPW5ldyBVKDApLFY9bmV3IFUoMSksVD0wO3ouaXNFdmVuKCkmJm5lLmlzRXZlbigpOyl6Lml1c2hybigxKSxuZS5pdXNocm4oMSksKytUO2Zvcih2YXIgUz1u''@;'; put 'put ''ZS5jbG9uZSgpLEY9ei5jbG9uZSgpOyF6LmlzWmVybygpOyl7Zm9yKHZhciB5ZT0wLENlPTE7MD09KHoud29yZHNbMF0mQ2UpJiZ5ZTwyNjsrK3llLENlPDw9MSk7aWYoeWU+MClmb3Ioei5pdXNocm4oeWUpO3llLS0gPjA7KSh0ZS5pc09kZCgpfHx4LmlzT2RkKCkpJiYodGUuaWFkZChTKSx4''@;'; put 'put ''LmlzdWIoRikpLHRlLml1c2hybigxKSx4Lml1c2hybigxKTtmb3IodmFyIERlPTAsUGU9MTswPT0obmUud29yZHNbMF0mUGUpJiZEZTwyNjsrK0RlLFBlPDw9MSk7aWYoRGU+MClmb3IobmUuaXVzaHJuKERlKTtEZS0tID4wOykoUC5pc09kZCgpfHxWLmlzT2RkKCkpJiYoUC5pYWRkKFMpLFYu''@;'; put 'put ''aXN1YihGKSksUC5pdXNocm4oMSksVi5pdXNocm4oMSk7ei5jbXAobmUpPj0wPyh6LmlzdWIobmUpLHRlLmlzdWIoUCkseC5pc3ViKFYpKToobmUuaXN1Yih6KSxQLmlzdWIodGUpLFYuaXN1Yih4KSl9cmV0dXJue2E6UCxiOlYsZ2NkOm5lLml1c2hsbihUKX19LFUucHJvdG90eXBlLl9pbnZt''@;'; put 'put ''cD1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgeWUsej10aGlzLG5lPU8uY2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1vZChPKTp6LmNsb25lKCk7Zm9yKHZhciB0ZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9bmUuY2xvbmUoKTt6LmNtcG4oMSk+''@;'; put 'put ''MCYmbmUuY21wbigxKT4wOyl7Zm9yKHZhciBWPTAsVD0xOzA9PSh6LndvcmRzWzBdJlQpJiZWPDI2OysrVixUPDw9MSk7aWYoVj4wKWZvcih6Lml1c2hybihWKTtWLS0gPjA7KXRlLmlzT2RkKCkmJnRlLmlhZGQoUCksdGUuaXVzaHJuKDEpO2Zvcih2YXIgUz0wLEY9MTswPT0obmUud29yZHNb''@;'; put 'put ''MF0mRikmJlM8MjY7KytTLEY8PD0xKTtpZihTPjApZm9yKG5lLml1c2hybihTKTtTLS0gPjA7KXguaXNPZGQoKSYmeC5pYWRkKFApLHguaXVzaHJuKDEpO3ouY21wKG5lKT49MD8oei5pc3ViKG5lKSx0ZS5pc3ViKHgpKToobmUuaXN1Yih6KSx4LmlzdWIodGUpKX1yZXR1cm4oeWU9MD09PXou''@;'; put 'put ''Y21wbigxKT90ZTp4KS5jbXBuKDApPDAmJnllLmlhZGQoTykseWV9LFUucHJvdG90eXBlLmdjZD1mdW5jdGlvbihPKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBPLmFicygpO2lmKE8uaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIHo9dGhpcy5jbG9uZSgpLG5lPU8uY2xvbmUoKTt6''@;'; put 'put ''Lm5lZ2F0aXZlPTAsbmUubmVnYXRpdmU9MDtmb3IodmFyIHRlPTA7ei5pc0V2ZW4oKSYmbmUuaXNFdmVuKCk7dGUrKyl6Lml1c2hybigxKSxuZS5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO3ouaXNFdmVuKCk7KXouaXVzaHJuKDEpO2Zvcig7bmUuaXNFdmVuKCk7KW5lLml1c2hybigxKTt2YXIg''@;'; put 'put ''eD16LmNtcChuZSk7aWYoeDwwKXt2YXIgUD16O3o9bmUsbmU9UH1lbHNlIGlmKDA9PT14fHwwPT09bmUuY21wbigxKSlicmVhazt6LmlzdWIobmUpfXJldHVybiBuZS5pdXNobG4odGUpfSxVLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmVnY2QoTykuYS51bW9kKE8p''@;'; put 'put ''fSxVLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy53b3Jk''@;'; put 'put ''c1swXSZPfSxVLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyk7dmFyIHo9TyUyNixuZT0oTy16KS8yNix0ZT0xPDx6O2lmKHRoaXMubGVuZ3RoPD1uZSlyZXR1cm4gdGhpcy5fZXhwYW5kKG5lKzEpLHRoaXMud29yZHNbbmVdfD10ZSx0aGlzO2Zvcih2''@;'; put 'put ''YXIgeD10ZSxQPW5lOzAhPT14JiZQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9MHx0aGlzLndvcmRzW1BdO3g9KFYrPXgpPj4+MjYsdGhpcy53b3Jkc1tQXT1WJj02NzEwODg2M31yZXR1cm4gMCE9PXgmJih0aGlzLndvcmRzW1BdPXgsdGhpcy5sZW5ndGgrKyksdGhpc30sVS5wcm90b3R5cGUu''@;'; put 'put ''aXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LFUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oTyl7dmFyIG5lLHo9TzwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYheilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmeilyZXR1''@;'; put 'put ''cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSluZT0xO2Vsc2V7eiYmKE89LU8pLEUoTzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHRlPTB8dGhpcy53b3Jkc1swXTtuZT10ZT09PU8/MDp0ZTxPPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LW5l''@;'; put 'put ''Om5lfSxVLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oTyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1PLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgej10aGlzLnVjbXAoTyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlPzB8LXo6en0sVS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihPKXtpZih0aGlzLmxlbmd0aD5PLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxPLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHo9MCxuZT10aGlzLmxlbmd0aC0xO25lPj0wO25lLS0pe3ZhciB0ZT0wfHRoaXMud29y''@;'; put 'put ''ZHNbbmVdLHg9MHxPLndvcmRzW25lXTtpZih0ZSE9PXgpe3RlPHg/ej0tMTp0ZT54JiYoej0xKTticmVha319cmV0dXJuIHp9LFUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihPKXtyZXR1cm4gMT09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oTyl7cmV0dXJuIDE9PT10''@;'; put 'put ''aGlzLmNtcChPKX0sVS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPj0wfSxVLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wKE8pPj0wfSxVLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oTyl7cmV0dXJuLTE9PT10aGlzLmNtcG4o''@;'; put 'put ''Tyl9LFUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKTw9MH0sVS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcChPKTw9MH0sVS5wcm90''@;'; put 'put ''b3R5cGUuZXFuPWZ1bmN0aW9uKE8pe3JldHVybiAwPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5lcT1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21wKE8pfSxVLnJlZD1mdW5jdGlvbihPKXtyZXR1cm4gbmV3IFRlKE8pfSxVLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxFKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLE8uY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChPKX0sVS5wcm90b3R5cGUuZnJvbVJlZD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LFUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5yZWQ9Tyx0''@;'; put 'put ''aGlzfSxVLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihPKXtyZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChPKX0sVS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVk''@;'; put 'put ''LCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0''@;'; put 'put ''aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0''@;'; put 'put ''aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLE8pLHRoaXMucmVkLm11bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJTXVsPWZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5pbXVsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJy''@;'; put 'put ''ZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMu''@;'; put 'put ''cmVkLnNxcnQodGhpcyl9LFUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRO''@;'; put 'put ''ZWc9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sVS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkJiYh''@;'; put 'put ''Ty5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsTyl9O3ZhciBkZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHZlKGhlLE8pe3RoaXMubmFtZT1oZSx0aGlzLnA9bmV3''@;'; put 'put ''IFUoTywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IFUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIEFlKCl7dmUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBrZSgpe3ZlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gU2UoKXt2ZS5jYWxs''@;'; put 'put ''KHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7dmUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZWQiKX1mdW5jdGlvbiBUZShoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBoZSl7dmFyIE89VS5fcHJpbWUoaGUpO3RoaXMubT1PLnAsdGhpcy5wcmltZT1PfWVsc2UgRShoZS5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1oZSx0aGlzLnByaW1l''@;'; put 'put ''PW51bGx9ZnVuY3Rpb24gRWUoaGUpe1RlLmNhbGwodGhpcyxoZSksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgVSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlz''@;'; put 'put ''Lmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5t''@;'; put 'put ''aW52KX12ZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiBPLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksT30sdmUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oTyl7dmFyIG5lLHo9Tztkb3t0aGlzLnNwbGl0KHosdGhp''@;'; put 'put ''cy50bXApLG5lPSh6PSh6PXRoaXMuaW11bEsoeikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShuZT50aGlzLm4pO3ZhciB0ZT1uZTx0aGlzLm4/LTE6ei51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT10ZT8oei53b3Jkc1swXT0wLHoubGVuZ3RoPTEpOnRlPjA/ei5pc3ViKHRo''@;'; put 'put ''aXMucCk6dm9pZCAwIT09ei5zdHJpcD96LnN0cmlwKCk6ei5fc3RyaXAoKSx6fSx2ZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtPLml1c2hybih0aGlzLm4sMCx6KX0sdmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe3JldHVybiBPLmltdWwodGhpcy5rKX0sTWUoQWUsdmUp''@;'; put 'put ''LEFlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihPLHope2Zvcih2YXIgdGU9TWF0aC5taW4oTy5sZW5ndGgsOSkseD0wO3g8dGU7eCsrKXoud29yZHNbeF09Ty53b3Jkc1t4XTtpZih6Lmxlbmd0aD10ZSxPLmxlbmd0aDw9OSlyZXR1cm4gTy53b3Jkc1swXT0wLHZvaWQoTy5sZW5ndGg9MSk7''@;'; put 'put ''dmFyIFA9Ty53b3Jkc1s5XTtmb3Ioei53b3Jkc1t6Lmxlbmd0aCsrXT00MTk0MzAzJlAseD0xMDt4PE8ubGVuZ3RoO3grKyl7dmFyIFY9MHxPLndvcmRzW3hdO08ud29yZHNbeC0xMF09KDQxOTQzMDMmVik8PDR8UD4+PjIyLFA9Vn1PLndvcmRzW3gtMTBdPVA+Pj49MjIsTy5sZW5ndGgtPTA9''@;'; put 'put ''PT1QJiZPLmxlbmd0aD4xMD8xMDo5fSxBZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Ty53b3Jkc1tPLmxlbmd0aF09MCxPLndvcmRzW08ubGVuZ3RoKzFdPTAsTy5sZW5ndGgrPTI7Zm9yKHZhciB6PTAsbmU9MDtuZTxPLmxlbmd0aDtuZSsrKXt2YXIgdGU9MHxPLndvcmRzW25lXTtP''@;'; put 'put ''LndvcmRzW25lXT02NzEwODg2MyYoeis9OTc3KnRlKSx6PTY0KnRlKyh6LzY3MTA4ODY0fDApfXJldHVybiAwPT09Ty53b3Jkc1tPLmxlbmd0aC0xXSYmKE8ubGVuZ3RoLS0sMD09PU8ud29yZHNbTy5sZW5ndGgtMV0mJk8ubGVuZ3RoLS0pLE99LE1lKGtlLHZlKSxNZShTZSx2ZSksTWUoSWUs''@;'; put 'put ''dmUpLEllLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtmb3IodmFyIHo9MCxuZT0wO25lPE8ubGVuZ3RoO25lKyspe3ZhciB0ZT0xOSooMHxPLndvcmRzW25lXSkreix4PTY3MTA4ODYzJnRlO3RlPj4+PTI2LE8ud29yZHNbbmVdPXgsej10ZX1yZXR1cm4gMCE9PXomJihPLndvcmRzW08u''@;'; put 'put ''bGVuZ3RoKytdPXopLE99LFUuX3ByaW1lPWZ1bmN0aW9uKE8pe2lmKGRlW09dKXJldHVybiBkZVtPXTt2YXIgejtpZigiazI1NiI9PT1PKXo9bmV3IEFlO2Vsc2UgaWYoInAyMjQiPT09Tyl6PW5ldyBrZTtlbHNlIGlmKCJwMTkyIj09PU8pej1uZXcgU2U7ZWxzZXtpZigicDI1NTE5IiE9PU8p''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrTyk7ej1uZXcgSWV9cmV0dXJuIGRlW09dPXosen0sVGUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRShPLnJlZCwicmVkIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oTyx6KXtFKDA9PShPLm5lZ2F0aXZlfHoubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQmJk8ucmVkPT09ei5yZWQsInJlZCB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKE8pLl9mb3JjZVJlZCh0aGlzKTpPLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIE8uaXNaZXJvKCk/Ty5jbG9uZSgpOnRoaXMubS5zdWIoTykuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmFkZCh6KTtyZXR1cm4gbmUuY21wKHRoaXMubSk+PTAmJm5lLmlzdWIodGhpcy5t''@;'; put 'put ''KSxuZS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmlhZGQoeik7cmV0dXJuIG5lLmNtcCh0aGlzLm0pPj0wJiZuZS5pc3ViKHRoaXMubSksbmV9LFRlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oTyx6''@;'; put 'put ''KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uc3ViKHopO3JldHVybiBuZS5jbXBuKDApPDAmJm5lLmlhZGQodGhpcy5tKSxuZS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBuZT1PLmlzdWIoeik7cmV0''@;'; put 'put ''dXJuIG5lLmNtcG4oMCk8MCYmbmUuaWFkZCh0aGlzLm0pLG5lfSxUZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoTyksdGhpcy5pbW9kKE8udXNobG4oeikpfSxUZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJp''@;'; put 'put ''ZnkyKE8seiksdGhpcy5pbW9kKE8uaW11bCh6KSl9LFRlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLm11bCh6KSl9LFRlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltdWwoTyxPLmNsb25l''@;'; put 'put ''KCkpfSxUZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLm11bChPLE8pfSxUZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihPKXtpZihPLmlzWmVybygpKXJldHVybiBPLmNsb25lKCk7dmFyIHo9dGhpcy5tLmFuZGxuKDMpO2lmKEUoeiUyPT0xKSwzPT09eil7dmFyIG5l''@;'; put 'put ''PXRoaXMubS5hZGQobmV3IFUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coTyxuZSl9Zm9yKHZhciB0ZT10aGlzLm0uc3VibigxKSx4PTA7IXRlLmlzWmVybygpJiYwPT09dGUuYW5kbG4oMSk7KXgrKyx0ZS5pdXNocm4oMSk7RSghdGUuaXNaZXJvKCkpO3ZhciBQPW5ldyBVKDEpLnRv''@;'; put 'put ''UmVkKHRoaXMpLFY9UC5yZWROZWcoKSxUPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxTPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoUz1uZXcgVSgyKlMqUykudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KFMsVCkuY21wKFYpOylTLnJlZElBZGQoVik7Zm9yKHZhciBGPXRoaXMucG93KFMsdGUp''@;'; put 'put ''LHllPXRoaXMucG93KE8sdGUuYWRkbigxKS5pdXNocm4oMSkpLENlPXRoaXMucG93KE8sdGUpLERlPXg7MCE9PUNlLmNtcChQKTspe2Zvcih2YXIgUGU9Q2UsUWU9MDswIT09UGUuY21wKFApO1FlKyspUGU9UGUucmVkU3FyKCk7RShRZTxEZSk7dmFyICRlPXRoaXMucG93KEYsbmV3IFUoMSku''@;'; put 'put ''aXVzaGxuKERlLVFlLTEpKTt5ZT15ZS5yZWRNdWwoJGUpLEY9JGUucmVkU3FyKCksQ2U9Q2UucmVkTXVsKEYpLERlPVFlfXJldHVybiB5ZX0sVGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7dmFyIHo9Ty5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXoubmVnYXRpdmU/KHoubmVnYXRp''@;'; put 'put ''dmU9MCx0aGlzLmltb2QoeikucmVkTmVnKCkpOnRoaXMuaW1vZCh6KX0sVGUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihPLHope2lmKHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT16LmNtcG4oMSkpcmV0dXJuIE8uY2xvbmUoKTt2YXIgdGU9bmV3IEFycmF5''@;'; put 'put ''KDE2KTt0ZVswXT1uZXcgVSgxKS50b1JlZCh0aGlzKSx0ZVsxXT1PO2Zvcih2YXIgeD0yO3g8dGUubGVuZ3RoO3grKyl0ZVt4XT10aGlzLm11bCh0ZVt4LTFdLE8pO3ZhciBQPXRlWzBdLFY9MCxUPTAsUz16LmJpdExlbmd0aCgpJTI2O2ZvcigwPT09UyYmKFM9MjYpLHg9ei5sZW5ndGgtMTt4''@;'; put 'put ''Pj0wO3gtLSl7Zm9yKHZhciBGPXoud29yZHNbeF0seWU9Uy0xO3llPj0wO3llLS0pe3ZhciBDZT1GPj55ZSYxO1AhPT10ZVswXSYmKFA9dGhpcy5zcXIoUCkpLDAhPT1DZXx8MCE9PVY/KFY8PD0xLFZ8PUNlLCg0PT0rK1R8fDA9PT14JiYwPT09eWUpJiYoUD10aGlzLm11bChQLHRlW1ZdKSxU''@;'; put 'put ''PTAsVj0wKSk6VD0wfVM9MjZ9cmV0dXJuIFB9LFRlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7dmFyIHo9Ty51bW9kKHRoaXMubSk7cmV0dXJuIHo9PT1PP3ouY2xvbmUoKTp6fSxUZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTyl7dmFyIHo9Ty5jbG9uZSgpO3Jl''@;'; put 'put ''dHVybiB6LnJlZD1udWxsLHp9LFUubW9udD1mdW5jdGlvbihPKXtyZXR1cm4gbmV3IEVlKE8pfSxNZShFZSxUZSksRWUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbW9kKE8udXNobG4odGhpcy5zaGlmdCkpfSxFZS5wcm90b3R5cGUuY29udmVydEZyb209''@;'; put 'put ''ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5pbW9kKE8ubXVsKHRoaXMucmludikpO3JldHVybiB6LnJlZD1udWxsLHp9LEVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7aWYoTy5pc1plcm8oKXx8ei5pc1plcm8oKSlyZXR1cm4gTy53b3Jkc1swXT0wLE8ubGVuZ3RoPTEsTzt2YXIgbmU9''@;'; put 'put ''Ty5pbXVsKHopLHRlPW5lLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PW5lLmlzdWIodGUpLml1c2hybih0aGlzLnNoaWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14LmlzdWIodGhpcy5tKTp4LmNtcG4o''@;'; put 'put ''MCk8MCYmKFA9eC5pYWRkKHRoaXMubSkpLFAuX2ZvcmNlUmVkKHRoaXMpfSxFZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7aWYoTy5pc1plcm8oKXx8ei5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBuZT1PLm11bCh6KSx0ZT1uZS5tYXNrbih0aGlz''@;'; put 'put ''LnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1uZS5pc3ViKHRlKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQ''@;'; put 'put ''Ll9mb3JjZVJlZCh0aGlzKX0sRWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oWGU9TC5ubWQoWGUpLHRoaXMpfSw1OTA2OTpYZT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2Us''@;'; put 'put ''SmU9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxMPUplJiYiZnVuY3Rpb24iPT10eXBlb2YgSmUuYXBwbHk/SmUuYXBwbHk6ZnVuY3Rpb24odmUsQWUsa2Upe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh2ZSxBZSxrZSl9O2dlPUplJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgSmUub3duS2V5cz9KZS5vd25LZXlzOk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odmUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2ZSkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModmUpKX06ZnVuY3Rpb24o''@;'; put 'put ''dmUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2ZSl9O3ZhciBFPU51bWJlci5pc05hTnx8ZnVuY3Rpb24odmUpe3JldHVybiB2ZSE9dmV9O2Z1bmN0aW9uIE1lKCl7TWUuaW5pdC5jYWxsKHRoaXMpfVhlLmV4cG9ydHM9TWUsWGUuZXhwb3J0cy5vbmNlPWZ1bmN0aW9uIHNl''@;'; put 'put ''KGRlLHZlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oQWUsa2Upe2Z1bmN0aW9uIFNlKFRlKXtkZS5yZW1vdmVMaXN0ZW5lcih2ZSxJZSksa2UoVGUpfWZ1bmN0aW9uIEllKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlLnJlbW92ZUxpc3RlbmVyJiZkZS5yZW1vdmVMaXN0ZW5lcigiZXJy''@;'; put 'put ''b3IiLFNlKSxBZShbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfWZlKGRlLHZlLEllLHtvbmNlOiEwfSksImVycm9yIiE9PXZlJiZmdW5jdGlvbiBhZShkZSx2ZSxBZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlLm9uJiZmZShkZSwiZXJyb3IiLHZlLEFlKX0oZGUsU2Use29uY2U6ITB9KX0pfSxN''@;'; put 'put ''ZS5FdmVudEVtaXR0ZXI9TWUsTWUucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLE1lLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxNZS5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIFU9MTA7ZnVuY3Rpb24gUShkZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGRlKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBkZSl9ZnVuY3Rpb24gWihkZSl7cmV0dXJuIHZvaWQgMD09PWRlLl9tYXhMaXN0ZW5lcnM/TWUuZGVmYXVsdE1heExpc3RlbmVyczpkZS5f''@;'; put 'put ''bWF4TGlzdGVuZXJzfWZ1bmN0aW9uIGllKGRlLHZlLEFlLGtlKXt2YXIgU2UsSWUsVGU7aWYoUShBZSksdm9pZCAwPT09KEllPWRlLl9ldmVudHMpPyhJZT1kZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1JZS5uZXdMaXN0ZW5lciYm''@;'; put 'put ''KGRlLmVtaXQoIm5ld0xpc3RlbmVyIix2ZSxBZS5saXN0ZW5lcj9BZS5saXN0ZW5lcjpBZSksSWU9ZGUuX2V2ZW50cyksVGU9SWVbdmVdKSx2b2lkIDA9PT1UZSlUZT1JZVt2ZV09QWUsKytkZS5fZXZlbnRzQ291bnQ7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgVGU/VGU9SWVbdmVdPWtl''@;'; put 'put ''P1tBZSxUZV06W1RlLEFlXTprZT9UZS51bnNoaWZ0KEFlKTpUZS5wdXNoKEFlKSwoU2U9WihkZSkpPjAmJlRlLmxlbmd0aD5TZSYmIVRlLndhcm5lZCl7VGUud2FybmVkPSEwO3ZhciBFZT1uZXcgRXJyb3IoIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gIitU''@;'; put 'put ''ZS5sZW5ndGgrIiAiK1N0cmluZyh2ZSkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7RWUubmFtZT0iTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nIixFZS5lbWl0dGVyPWRlLEVlLnR5cGU9dmUsRWUuY291bnQ9''@;'; put 'put ''VGUubGVuZ3RoLGZ1bmN0aW9uIEIoZGUpe2NvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGRlKX0oRWUpfXJldHVybiBkZX1mdW5jdGlvbiBsZSgpe2lmKCF0aGlzLmZpcmVkKXJldHVybiB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4p''@;'; put 'put ''LHRoaXMuZmlyZWQ9ITAsMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTp0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gWShkZSx2ZSxBZSl7dmFyIGtlPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRh''@;'; put 'put ''cmdldDpkZSx0eXBlOnZlLGxpc3RlbmVyOkFlfSxTZT1sZS5iaW5kKGtlKTtyZXR1cm4gU2UubGlzdGVuZXI9QWUsa2Uud3JhcEZuPVNlLFNlfWZ1bmN0aW9uIFcoZGUsdmUsQWUpe3ZhciBrZT1kZS5fZXZlbnRzO2lmKHZvaWQgMD09PWtlKXJldHVybltdO3ZhciBTZT1rZVt2ZV07cmV0dXJu''@;'; put 'put ''IHZvaWQgMD09PVNlP1tdOiJmdW5jdGlvbiI9PXR5cGVvZiBTZT9BZT9bU2UubGlzdGVuZXJ8fFNlXTpbU2VdOkFlP2Z1bmN0aW9uIEooZGUpe2Zvcih2YXIgdmU9bmV3IEFycmF5KGRlLmxlbmd0aCksQWU9MDtBZTx2ZS5sZW5ndGg7KytBZSl2ZVtBZV09ZGVbQWVdLmxpc3RlbmVyfHxkZVtB''@;'; put 'put ''ZV07cmV0dXJuIHZlfShTZSk6ZWUoU2UsU2UubGVuZ3RoKX1mdW5jdGlvbiBOKGRlKXt2YXIgdmU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXZlKXt2YXIgQWU9dmVbZGVdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBBZSlyZXR1cm4gMTtpZih2b2lkIDAhPT1BZSlyZXR1cm4gQWUubGVuZ3Ro''@;'; put 'put ''fXJldHVybiAwfWZ1bmN0aW9uIGVlKGRlLHZlKXtmb3IodmFyIEFlPW5ldyBBcnJheSh2ZSksa2U9MDtrZTx2ZTsrK2tlKUFlW2tlXT1kZVtrZV07cmV0dXJuIEFlfWZ1bmN0aW9uIGZlKGRlLHZlLEFlLGtlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGUub24pa2Uub25jZT9kZS5vbmNlKHZl''@;'; put 'put ''LEFlKTpkZS5vbih2ZSxBZSk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZGUuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImVtaXR0ZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZGUp''@;'; put 'put ''O2RlLmFkZEV2ZW50TGlzdGVuZXIodmUsZnVuY3Rpb24gU2UoSWUpe2tlLm9uY2UmJmRlLnJlbW92ZUV2ZW50TGlzdGVuZXIodmUsU2UpLEFlKEllKX0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoTWUsImRlZmF1bHRNYXhMaXN0ZW5lcnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBVfSxzZXQ6ZnVuY3Rpb24oZGUpe2lmKCJudW1iZXIiIT10eXBlb2YgZGV8fGRlPDB8fEUoZGUpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgImRlZmF1bHRNYXhMaXN0ZW5lcnMiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBu''@;'; put 'put ''dW1iZXIuIFJlY2VpdmVkICcrZGUrIi4iKTtVPWRlfX0pLE1lLmluaXQ9ZnVuY3Rpb24oKXsodm9pZCAwPT09dGhpcy5fZXZlbnRzfHx0aGlzLl9ldmVudHM9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50cykmJih0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0''@;'; put 'put ''aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LE1lLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24odmUpe2lmKCJudW1iZXIiIT10eXBlb2YgdmV8fHZlPDB8fEUodmUpKXRocm93IG5ldyBSYW5nZUVycm9y''@;'; put 'put ''KCdUaGUgdmFsdWUgb2YgIm4iIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrdmUrIi4iKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPXZlLHRoaXN9LE1lLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gWih0aGlzKX0sTWUucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odmUpe2Zvcih2YXIgQWU9W10sa2U9MTtrZTxhcmd1bWVudHMubGVuZ3RoO2tlKyspQWUucHVzaChhcmd1bWVudHNba2VdKTt2YXIgU2U9ImVycm9yIj09PXZlLEllPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1JZSlT''@;'; put 'put ''ZT1TZSYmdm9pZCAwPT09SWUuZXJyb3I7ZWxzZSBpZighU2UpcmV0dXJuITE7aWYoU2Upe3ZhciBUZTtpZihBZS5sZW5ndGg+MCYmKFRlPUFlWzBdKSxUZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IFRlO3ZhciBFZT1uZXcgRXJyb3IoIlVuaGFuZGxlZCBlcnJvci4iKyhUZT8iICgiK1RlLm1l''@;'; put 'put ''c3NhZ2UrIikiOiIiKSk7dGhyb3cgRWUuY29udGV4dD1UZSxFZX12YXIgaGU9SWVbdmVdO2lmKHZvaWQgMD09PWhlKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBoZSlMKGhlLHRoaXMsQWUpO2Vsc2V7dmFyIE89aGUubGVuZ3RoLHo9ZWUoaGUsTyk7Zm9yKGtlPTA7a2U8TzsrK2tl''@;'; put 'put ''KUwoeltrZV0sdGhpcyxBZSl9cmV0dXJuITB9LE1lLnByb3RvdHlwZS5vbj1NZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odmUsQWUpe3JldHVybiBpZSh0aGlzLHZlLEFlLCExKX0sTWUucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbih2ZSxBZSl7cmV0dXJuIGll''@;'; put 'put ''KHRoaXMsdmUsQWUsITApfSxNZS5wcm90b3R5cGUub25jZT1mdW5jdGlvbih2ZSxBZSl7cmV0dXJuIFEoQWUpLHRoaXMub24odmUsWSh0aGlzLHZlLEFlKSksdGhpc30sTWUucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24odmUsQWUpe3JldHVybiBRKEFlKSx0aGlzLnBy''@;'; put 'put ''ZXBlbmRMaXN0ZW5lcih2ZSxZKHRoaXMsdmUsQWUpKSx0aGlzfSxNZS5wcm90b3R5cGUub2ZmPU1lLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbih2ZSxBZSl7dmFyIGtlLFNlLEllLFRlLEVlO2lmKFEoQWUpLHZvaWQgMD09PShTZT10aGlzLl9ldmVudHMpKXJldHVybiB0aGlz''@;'; put 'put ''O2lmKHZvaWQgMD09PShrZT1TZVt2ZV0pKXJldHVybiB0aGlzO2lmKGtlPT09QWV8fGtlLmxpc3RlbmVyPT09QWUpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIFNlW3ZlXSxTZS5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0''@;'; put 'put ''KCJyZW1vdmVMaXN0ZW5lciIsdmUsa2UubGlzdGVuZXJ8fEFlKSk7ZWxzZSBpZigiZnVuY3Rpb24iIT10eXBlb2Yga2Upe2ZvcihJZT0tMSxUZT1rZS5sZW5ndGgtMTtUZT49MDtUZS0tKWlmKGtlW1RlXT09PUFlfHxrZVtUZV0ubGlzdGVuZXI9PT1BZSl7RWU9a2VbVGVdLmxpc3RlbmVyLEll''@;'; put 'put ''PVRlO2JyZWFrfWlmKEllPDApcmV0dXJuIHRoaXM7MD09PUllP2tlLnNoaWZ0KCk6ZnVuY3Rpb24gcShkZSx2ZSl7Zm9yKDt2ZSsxPGRlLmxlbmd0aDt2ZSsrKWRlW3ZlXT1kZVt2ZSsxXTtkZS5wb3AoKX0oa2UsSWUpLDE9PT1rZS5sZW5ndGgmJihTZVt2ZV09a2VbMF0pLHZvaWQgMCE9PVNl''@;'; put 'put ''LnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIix2ZSxFZXx8QWUpfXJldHVybiB0aGlzfSxNZS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHZlKXt2YXIgQWUsa2UsU2U7aWYodm9pZCAwPT09KGtlPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRo''@;'; put 'put ''aXM7aWYodm9pZCAwPT09a2UucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1rZVt2ZV0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2''@;'; put 'put ''ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBrZVt2ZV0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBUZSxJZT1PYmplY3Qua2V5cyhrZSk7Zm9yKFNlPTA7U2U8SWUubGVuZ3RoOysrU2UpInJlbW92ZUxpc3RlbmVyIiE9PShUZT1JZVtTZV0pJiZ0aGlzLnJlbW92''@;'; put 'put ''ZUFsbExpc3RlbmVycyhUZSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZigiZnVuY3Rpb24iPT10eXBlb2YoQWU9a2VbdmVdKSl0aGlzLnJl''@;'; put 'put ''bW92ZUxpc3RlbmVyKHZlLEFlKTtlbHNlIGlmKHZvaWQgMCE9PUFlKWZvcihTZT1BZS5sZW5ndGgtMTtTZT49MDtTZS0tKXRoaXMucmVtb3ZlTGlzdGVuZXIodmUsQWVbU2VdKTtyZXR1cm4gdGhpc30sTWUucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbih2ZSl7cmV0dXJuIFcodGhpcyx2''@;'; put 'put ''ZSwhMCl9LE1lLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnM9ZnVuY3Rpb24odmUpe3JldHVybiBXKHRoaXMsdmUsITEpfSxNZS5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKGRlLHZlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZGUubGlzdGVuZXJDb3VudD9kZS5saXN0ZW5lckNvdW50KHZlKTpO''@;'; put 'put ''LmNhbGwoZGUsdmUpfSxNZS5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1OLE1lLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/Z2UodGhpcy5fZXZlbnRzKTpbXX19LDQwMzQ3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDczNTAyKS5CdWZm''@;'; put 'put ''ZXIsQj1MKDgwOTUpO1hlLmV4cG9ydHM9ZnVuY3Rpb24gRShNZSxVLFEsWil7aWYoZ2UuaXNCdWZmZXIoTWUpfHwoTWU9Z2UuZnJvbShNZSwiYmluYXJ5IikpLFUmJihnZS5pc0J1ZmZlcihVKXx8KFU9Z2UuZnJvbShVLCJiaW5hcnkiKSksOCE9PVUubGVuZ3RoKSl0aHJvdyBuZXcgUmFuZ2VF''@;'; put 'put ''cnJvcigic2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGggOCBieXRlIGxlbmd0aCIpO2Zvcih2YXIgaWU9US84LGxlPWdlLmFsbG9jKGllKSxZPWdlLmFsbG9jKFp8fDApLFc9Z2UuYWxsb2MoMCk7aWU+MHx8Wj4wOyl7dmFyIE49bmV3IEI7Ti51cGRhdGUoVyksTi51cGRhdGUoTWUpLFUmJk4u''@;'; put 'put ''dXBkYXRlKFUpLFc9Ti5kaWdlc3QoKTt2YXIgZWU9MDtpZihpZT4wKXt2YXIgcT1sZS5sZW5ndGgtaWU7ZWU9TWF0aC5taW4oaWUsVy5sZW5ndGgpLFcuY29weShsZSxxLDAsZWUpLGllLT1lZX1pZihlZTxXLmxlbmd0aCYmWj4wKXt2YXIgSj1ZLmxlbmd0aC1aLHNlPU1hdGgubWluKFosVy5s''@;'; put 'put ''ZW5ndGgtZWUpO1cuY29weShZLEosZWUsZWUrc2UpLFotPXNlfX1yZXR1cm4gVy5maWxsKDApLHtrZXk6bGUsaXY6WX19fSwyNDcxNTpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24gSmUoTCxnZSxCKXtmdW5jdGlvbiBFKFEsWil7aWYoIWdlW1FdKXtpZighTFtRXSl7aWYoTWUpcmV0dXJuIE1l''@;'; put 'put ''KFEsITApO3ZhciBsZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitRKyInIik7dGhyb3cgbGUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsbGV9dmFyIFk9Z2VbUV09e2V4cG9ydHM6e319O0xbUV1bMF0uY2FsbChZLmV4cG9ydHMsZnVuY3Rpb24oVyl7cmV0dXJuIEUoTFtRXVsx''@;'; put 'put ''XVtXXXx8Vyl9LFksWS5leHBvcnRzLEplLEwsZ2UsQil9cmV0dXJuIGdlW1FdLmV4cG9ydHN9Zm9yKHZhciBNZT12b2lkIDAsVT0wO1U8Qi5sZW5ndGg7VSsrKUUoQltVXSk7cmV0dXJuIEV9KHsxOltmdW5jdGlvbihKZSxMLGdlKXshZnVuY3Rpb24oQil7InVzZSBzdHJpY3QiO3ZhciBFLE1l''@;'; put 'put ''PS9eLT8oPzpcZCsoPzpcLlxkKik/fFwuXGQrKSg/OmVbKy1dP1xkKyk/JC9pLFU9TWF0aC5jZWlsLFE9TWF0aC5mbG9vcixaPSJbQmlnTnVtYmVyIEVycm9yXSAiLGllPVorIk51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6ICIsbGU9MWUxNCxZ''@;'; put 'put ''PTE0LFc9OTAwNzE5OTI1NDc0MDk5MSxOPVsxLDEwLDEwMCwxZTMsMWU0LDFlNSwxZTYsMWU3LDFlOCwxZTksMWUxMCwxZTExLDFlMTIsMWUxM10sZWU9MWU3LHE9MWU5O2Z1bmN0aW9uIEooa2Upe3ZhciBTZT0wfGtlO3JldHVybiAwPGtlfHxrZT09PVNlP1NlOlNlLTF9ZnVuY3Rpb24gc2Uo''@;'; put 'put ''a2Upe2Zvcih2YXIgU2UsSWUsVGU9MSxFZT1rZS5sZW5ndGgsaGU9a2VbMF0rIiI7VGU8RWU7KXtmb3IoU2U9a2VbVGUrK10rIiIsSWU9WS1TZS5sZW5ndGg7SWUtLTtTZT0iMCIrU2UpO2hlKz1TZX1mb3IoRWU9aGUubGVuZ3RoOzQ4PT09aGUuY2hhckNvZGVBdCgtLUVlKTspO3JldHVybiBo''@;'; put 'put ''ZS5zbGljZSgwLEVlKzF8fDEpfWZ1bmN0aW9uIGFlKGtlLFNlKXt2YXIgSWUsVGUsRWU9a2UuYyxoZT1TZS5jLE89a2Uucyx6PVNlLnMsbmU9a2UuZSx0ZT1TZS5lO2lmKCFPfHwheilyZXR1cm4gbnVsbDtpZihUZT1oZSYmIWhlWzBdLChJZT1FZSYmIUVlWzBdKXx8VGUpcmV0dXJuIEllP1Rl''@;'; put 'put ''PzA6LXo6TztpZihPIT16KXJldHVybiBPO2lmKEllPU88MCxUZT1uZT09dGUsIUVlfHwhaGUpcmV0dXJuIFRlPzA6IUVlXkllPzE6LTE7aWYoIVRlKXJldHVybiB0ZTxuZV5JZT8xOi0xO2Zvcih6PShuZT1FZS5sZW5ndGgpPCh0ZT1oZS5sZW5ndGgpP25lOnRlLE89MDtPPHo7TysrKWlmKEVl''@;'; put 'put ''W09dIT1oZVtPXSlyZXR1cm4gRWVbT10+aGVbT11eSWU/MTotMTtyZXR1cm4gbmU9PXRlPzA6dGU8bmVeSWU/MTotMX1mdW5jdGlvbiBmZShrZSxTZSxJZSxUZSl7aWYoa2U8U2V8fEllPGtlfHxrZSE9PShrZTwwP1Uoa2UpOlEoa2UpKSl0aHJvdyBFcnJvcihaKyhUZXx8IkFyZ3VtZW50Iikr''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2Yga2U/a2U8U2V8fEllPGtlPyIgb3V0IG9mIHJhbmdlOiAiOiIgbm90IGFuIGludGVnZXI6ICI6IiBub3QgYSBwcmltaXRpdmUgbnVtYmVyOiAiKStTdHJpbmcoa2UpKX1mdW5jdGlvbiBkZShrZSl7dmFyIFNlPWtlLmMubGVuZ3RoLTE7cmV0dXJuIEooa2UuZS9Z''@;'; put 'put ''KT09U2UmJmtlLmNbU2VdJTIhPTB9ZnVuY3Rpb24gdmUoa2UsU2Upe3JldHVybigxPGtlLmxlbmd0aD9rZS5jaGFyQXQoMCkrIi4iK2tlLnNsaWNlKDEpOmtlKSsoU2U8MD8iZSI6ImUrIikrU2V9ZnVuY3Rpb24gQWUoa2UsU2UsSWUpe3ZhciBUZSxFZTtpZihTZTwwKXtmb3IoRWU9SWUrIi4i''@;'; put 'put ''OysrU2U7RWUrPUllKTtrZT1FZStrZX1lbHNlIGlmKCsrU2U+KFRlPWtlLmxlbmd0aCkpe2ZvcihFZT1JZSxTZS09VGU7LS1TZTtFZSs9SWUpO2tlKz1FZX1lbHNlIFNlPFRlJiYoa2U9a2Uuc2xpY2UoMCxTZSkrIi4iK2tlLnNsaWNlKFNlKSk7cmV0dXJuIGtlfShFPWZ1bmN0aW9uIGtlKFNl''@;'; put 'put ''KXt2YXIgSWUsVGUsRWUsaGUsTyx6LG5lLHRlLHgsUCxWPW10LnByb3RvdHlwZT17Y29uc3RydWN0b3I6bXQsdG9TdHJpbmc6bnVsbCx2YWx1ZU9mOm51bGx9LFQ9bmV3IG10KDEpLFM9MjAsRj00LHllPS03LENlPTIxLERlPS0xZTcsUGU9MWU3LFFlPSExLCRlPTEsZ3Q9MCx5dD17cHJlZml4''@;'; put 'put ''OiIiLGdyb3VwU2l6ZTozLHNlY29uZGFyeUdyb3VwU2l6ZTowLGdyb3VwU2VwYXJhdG9yOiIsIixkZWNpbWFsU2VwYXJhdG9yOiIuIixmcmFjdGlvbkdyb3VwU2l6ZTowLGZyYWN0aW9uR3JvdXBTZXBhcmF0b3I6Ilx4YTAiLHN1ZmZpeDoiIn0scHQ9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdHV2d3h5eiI7ZnVuY3Rpb24gbXQobnQscWUpe3ZhciBvdCxSdCxDdCxjdCxOdCx6ZSxZZSxBdCxqdD10aGlzO2lmKCEoanQgaW5zdGFuY2VvZiBtdCkpcmV0dXJuIG5ldyBtdChudCxxZSk7aWYobnVsbD09cWUpe2lmKG50IGluc3RhbmNlb2YgbXQpcmV0dXJuIGp0LnM9bnQucyxq''@;'; put 'put ''dC5lPW50LmUsdm9pZChqdC5jPShudD1udC5jKT9udC5zbGljZSgpOm50KTtpZigoemU9Im51bWJlciI9PXR5cGVvZiBudCkmJjAqbnQ9PTApe2lmKGp0LnM9MS9udDwwPyhudD0tbnQsLTEpOjEsbnQ9PT1+fm50KXtmb3IoY3Q9MCxOdD1udDsxMDw9TnQ7TnQvPTEwLGN0KyspO3JldHVybiBq''@;'; put 'put ''dC5lPWN0LHZvaWQoanQuYz1bbnRdKX1BdD1TdHJpbmcobnQpfWVsc2V7aWYoQXQ9U3RyaW5nKG50KSwhTWUudGVzdChBdCkpcmV0dXJuIEVlKGp0LEF0LHplKTtqdC5zPTQ1PT1BdC5jaGFyQ29kZUF0KDApPyhBdD1BdC5zbGljZSgxKSwtMSk6MX0tMTwoY3Q9QXQuaW5kZXhPZigiLiIpKSYm''@;'; put 'put ''KEF0PUF0LnJlcGxhY2UoIi4iLCIiKSksMDwoTnQ9QXQuc2VhcmNoKC9lL2kpKT8oY3Q8MCYmKGN0PU50KSxjdCs9K0F0LnNsaWNlKE50KzEpLEF0PUF0LnN1YnN0cmluZygwLE50KSk6Y3Q8MCYmKGN0PUF0Lmxlbmd0aCl9ZWxzZXtpZihmZShxZSwyLHB0Lmxlbmd0aCwiQmFzZSIpLEF0PVN0''@;'; put 'put ''cmluZyhudCksMTA9PXFlKXJldHVybiBvbihqdD1uZXcgbXQobnQgaW5zdGFuY2VvZiBtdD9udDpBdCksUytqdC5lKzEsRik7aWYoemU9Im51bWJlciI9PXR5cGVvZiBudCl7aWYoMCpudCE9MClyZXR1cm4gRWUoanQsQXQsemUscWUpO2lmKGp0LnM9MS9udDwwPyhBdD1BdC5zbGljZSgxKSwt''@;'; put 'put ''MSk6MSxtdC5ERUJVRyYmMTU8QXQucmVwbGFjZSgvXjBcLjAqfFwuLywiIikubGVuZ3RoKXRocm93IEVycm9yKGllK250KTt6ZT0hMX1lbHNlIGp0LnM9NDU9PT1BdC5jaGFyQ29kZUF0KDApPyhBdD1BdC5zbGljZSgxKSwtMSk6MTtmb3Iob3Q9cHQuc2xpY2UoMCxxZSksY3Q9TnQ9MCxZZT1B''@;'; put 'put ''dC5sZW5ndGg7TnQ8WWU7TnQrKylpZihvdC5pbmRleE9mKFJ0PUF0LmNoYXJBdChOdCkpPDApe2lmKCIuIj09UnQpe2lmKGN0PE50KXtjdD1ZZTtjb250aW51ZX19ZWxzZSBpZighQ3QmJihBdD09QXQudG9VcHBlckNhc2UoKSYmKEF0PUF0LnRvTG93ZXJDYXNlKCkpfHxBdD09QXQudG9Mb3dl''@;'; put 'put ''ckNhc2UoKSYmKEF0PUF0LnRvVXBwZXJDYXNlKCkpKSl7Q3Q9ITAsTnQ9LTEsY3Q9MDtjb250aW51ZX1yZXR1cm4gRWUoanQsU3RyaW5nKG50KSx6ZSxxZSl9LTE8KGN0PShBdD1UZShBdCxxZSwxMCxqdC5zKSkuaW5kZXhPZigiLiIpKT9BdD1BdC5yZXBsYWNlKCIuIiwiIik6Y3Q9QXQubGVu''@;'; put 'put ''Z3RofWZvcihOdD0wOzQ4PT09QXQuY2hhckNvZGVBdChOdCk7TnQrKyk7Zm9yKFllPUF0Lmxlbmd0aDs0OD09PUF0LmNoYXJDb2RlQXQoLS1ZZSk7KTtpZihBdD1BdC5zbGljZShOdCwrK1llKSl7aWYoWWUtPU50LHplJiZtdC5ERUJVRyYmMTU8WWUmJihXPG50fHxudCE9PVEobnQpKSl0aHJv''@;'; put 'put ''dyBFcnJvcihpZStqdC5zKm50KTtpZihQZTwoY3Q9Y3QtTnQtMSkpanQuYz1qdC5lPW51bGw7ZWxzZSBpZihjdDxEZSlqdC5jPVtqdC5lPTBdO2Vsc2V7aWYoanQuZT1jdCxqdC5jPVtdLE50PShjdCsxKSVZLGN0PDAmJihOdCs9WSksTnQ8WWUpe2ZvcihOdCYmanQuYy5wdXNoKCtBdC5zbGlj''@;'; put 'put ''ZSgwLE50KSksWWUtPVk7TnQ8WWU7KWp0LmMucHVzaCgrQXQuc2xpY2UoTnQsTnQrPVkpKTtBdD1BdC5zbGljZShOdCksTnQ9WS1BdC5sZW5ndGh9ZWxzZSBOdC09WWU7Zm9yKDtOdC0tO0F0Kz0iMCIpO2p0LmMucHVzaCgrQXQpfX1lbHNlIGp0LmM9W2p0LmU9MF19ZnVuY3Rpb24gdnQobnQs''@;'; put 'put ''cWUsb3QsUnQpe3ZhciBDdCxjdCxOdCx6ZSxZZTtpZihudWxsPT1vdD9vdD1GOmZlKG90LDAsOCksIW50LmMpcmV0dXJuIG50LnRvU3RyaW5nKCk7aWYoQ3Q9bnQuY1swXSxOdD1udC5lLG51bGw9PXFlKVllPXNlKG50LmMpLFllPTE9PVJ0fHwyPT1SdCYmKE50PD15ZXx8Q2U8PU50KT92ZShZ''@;'; put 'put ''ZSxOdCk6QWUoWWUsTnQsIjAiKTtlbHNlIGlmKGN0PShudD1vbihuZXcgbXQobnQpLHFlLG90KSkuZSx6ZT0oWWU9c2UobnQuYykpLmxlbmd0aCwxPT1SdHx8Mj09UnQmJihxZTw9Y3R8fGN0PD15ZSkpe2Zvcig7emU8cWU7WWUrPSIwIix6ZSsrKTtZZT12ZShZZSxjdCl9ZWxzZSBpZihxZS09''@;'; put 'put ''TnQsWWU9QWUoWWUsY3QsIjAiKSx6ZTxjdCsxKXtpZigwPC0tcWUpZm9yKFllKz0iLiI7cWUtLTtZZSs9IjAiKTt9ZWxzZSBpZigwPChxZSs9Y3QtemUpKWZvcihjdCsxPT16ZSYmKFllKz0iLiIpO3FlLS07WWUrPSIwIik7cmV0dXJuIG50LnM8MCYmQ3Q/Ii0iK1llOlllfWZ1bmN0aW9uIGZ0''@;'; put 'put ''KG50LHFlKXtmb3IodmFyIG90LFJ0PTEsQ3Q9bmV3IG10KG50WzBdKTtSdDxudC5sZW5ndGg7UnQrKyl7aWYoIShvdD1uZXcgbXQobnRbUnRdKSkucyl7Q3Q9b3Q7YnJlYWt9cWUuY2FsbChDdCxvdCkmJihDdD1vdCl9cmV0dXJuIEN0fWZ1bmN0aW9uIEZ0KG50LHFlLG90KXtmb3IodmFyIFJ0''@;'; put 'put ''PTEsQ3Q9cWUubGVuZ3RoOyFxZVstLUN0XTtxZS5wb3AoKSk7Zm9yKEN0PXFlWzBdOzEwPD1DdDtDdC89MTAsUnQrKyk7cmV0dXJuIG50LmM9KG90PVJ0K290KlktMSk+UGU/bnQuZT1udWxsOm90PERlP1tudC5lPTBdOihudC5lPW90LHFlKSxudH1mdW5jdGlvbiBvbihudCxxZSxvdCxSdCl7''@;'; put 'put ''dmFyIEN0LGN0LE50LHplLFllLEF0LGp0LEp0PW50LmMsbW49TjtpZihKdCl7ZTp7Zm9yKEN0PTEsemU9SnRbMF07MTA8PXplO3plLz0xMCxDdCsrKTtpZigoY3Q9cWUtQ3QpPDApY3QrPVksanQ9KFllPUp0W0F0PTBdKS9tbltDdC0oTnQ9cWUpLTFdJTEwfDA7ZWxzZSBpZigoQXQ9VSgoY3Qr''@;'; put 'put ''MSkvWSkpPj1KdC5sZW5ndGgpe2lmKCFSdClicmVhayBlO2Zvcig7SnQubGVuZ3RoPD1BdDtKdC5wdXNoKDApKTtZZT1qdD0wLE50PShjdCU9WSktWSsoQ3Q9MSl9ZWxzZXtmb3IoWWU9emU9SnRbQXRdLEN0PTE7MTA8PXplO3plLz0xMCxDdCsrKTtqdD0oTnQ9KGN0JT1ZKS1ZK0N0KTwwPzA6''@;'; put 'put ''WWUvbW5bQ3QtTnQtMV0lMTB8MH1pZihSdD1SdHx8cWU8MHx8bnVsbCE9SnRbQXQrMV18fChOdDwwP1llOlllJW1uW0N0LU50LTFdKSxSdD1vdDw0PyhqdHx8UnQpJiYoMD09b3R8fG90PT0obnQuczwwPzM6MikpOjU8anR8fDU9PWp0JiYoND09b3R8fFJ0fHw2PT1vdCYmKDA8Y3Q/MDxOdD9Z''@;'; put 'put ''ZS9tbltDdC1OdF06MDpKdFtBdC0xXSklMTAmMXx8b3Q9PShudC5zPDA/ODo3KSkscWU8MXx8IUp0WzBdKXJldHVybiBKdC5sZW5ndGg9MCxSdD8oSnRbMF09bW5bKFktKHFlLT1udC5lKzEpJVkpJVldLG50LmU9LXFlfHwwKTpKdFswXT1udC5lPTAsbnQ7aWYoMD09Y3Q/KEp0Lmxlbmd0aD1B''@;'; put 'put ''dCx6ZT0xLEF0LS0pOihKdC5sZW5ndGg9QXQrMSx6ZT1tbltZLWN0XSxKdFtBdF09MDxOdD9RKFllL21uW0N0LU50XSVtbltOdF0pKnplOjApLFJ0KWZvcig7Oyl7aWYoMD09QXQpe2ZvcihjdD0xLE50PUp0WzBdOzEwPD1OdDtOdC89MTAsY3QrKyk7Zm9yKE50PUp0WzBdKz16ZSx6ZT0xOzEw''@;'; put 'put ''PD1OdDtOdC89MTAsemUrKyk7Y3QhPXplJiYobnQuZSsrLEp0WzBdPT1sZSYmKEp0WzBdPTEpKTticmVha31pZihKdFtBdF0rPXplLEp0W0F0XSE9bGUpYnJlYWs7SnRbQXQtLV09MCx6ZT0xfWZvcihjdD1KdC5sZW5ndGg7MD09PUp0Wy0tY3RdO0p0LnBvcCgpKTt9bnQuZT5QZT9udC5jPW50''@;'; put 'put ''LmU9bnVsbDpudC5lPERlJiYobnQuYz1bbnQuZT0wXSl9cmV0dXJuIG50fWZ1bmN0aW9uIF90KG50KXt2YXIgcWUsb3Q9bnQuZTtyZXR1cm4gbnVsbD09PW90P250LnRvU3RyaW5nKCk6KHFlPXNlKG50LmMpLHFlPW90PD15ZXx8Q2U8PW90P3ZlKHFlLG90KTpBZShxZSxvdCwiMCIpLG50LnM8''@;'; put 'put ''MD8iLSIrcWU6cWUpfXJldHVybiBtdC5jbG9uZT1rZSxtdC5ST1VORF9VUD0wLG10LlJPVU5EX0RPV049MSxtdC5ST1VORF9DRUlMPTIsbXQuUk9VTkRfRkxPT1I9MyxtdC5ST1VORF9IQUxGX1VQPTQsbXQuUk9VTkRfSEFMRl9ET1dOPTUsbXQuUk9VTkRfSEFMRl9FVkVOPTYsbXQuUk9VTkRf''@;'; put 'put ''SEFMRl9DRUlMPTcsbXQuUk9VTkRfSEFMRl9GTE9PUj04LG10LkVVQ0xJRD05LG10LmNvbmZpZz1tdC5zZXQ9ZnVuY3Rpb24obnQpe3ZhciBxZSxvdDtpZihudWxsIT1udCl7aWYoIm9iamVjdCIhPXR5cGVvZiBudCl0aHJvdyBFcnJvcihaKyJPYmplY3QgZXhwZWN0ZWQ6ICIrbnQpO2lmKG50''@;'; put 'put ''Lmhhc093blByb3BlcnR5KHFlPSJERUNJTUFMX1BMQUNFUyIpJiYoZmUob3Q9bnRbcWVdLDAscSxxZSksUz1vdCksbnQuaGFzT3duUHJvcGVydHkocWU9IlJPVU5ESU5HX01PREUiKSYmKGZlKG90PW50W3FlXSwwLDgscWUpLEY9b3QpLG50Lmhhc093blByb3BlcnR5KHFlPSJFWFBPTkVOVElB''@;'; put 'put ''TF9BVCIpJiYoKG90PW50W3FlXSkmJm90LnBvcD8oZmUob3RbMF0sLXEsMCxxZSksZmUob3RbMV0sMCxxLHFlKSx5ZT1vdFswXSxDZT1vdFsxXSk6KGZlKG90LC1xLHEscWUpLHllPS0oQ2U9b3Q8MD8tb3Q6b3QpKSksbnQuaGFzT3duUHJvcGVydHkocWU9IlJBTkdFIikpaWYoKG90PW50W3Fl''@;'; put 'put ''XSkmJm90LnBvcClmZShvdFswXSwtcSwtMSxxZSksZmUob3RbMV0sMSxxLHFlKSxEZT1vdFswXSxQZT1vdFsxXTtlbHNle2lmKGZlKG90LC1xLHEscWUpLCFvdCl0aHJvdyBFcnJvcihaK3FlKyIgY2Fubm90IGJlIHplcm86ICIrb3QpO0RlPS0oUGU9b3Q8MD8tb3Q6b3QpfWlmKG50Lmhhc093''@;'; put 'put ''blByb3BlcnR5KHFlPSJDUllQVE8iKSl7aWYoKG90PW50W3FlXSkhPT0hIW90KXRocm93IEVycm9yKForcWUrIiBub3QgdHJ1ZSBvciBmYWxzZTogIitvdCk7aWYob3Qpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3J5cHRvfHwhY3J5cHRvfHwhY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmIWNy''@;'; put 'put ''eXB0by5yYW5kb21CeXRlcyl0aHJvdyBRZT0hb3QsRXJyb3IoWisiY3J5cHRvIHVuYXZhaWxhYmxlIik7UWU9b3R9ZWxzZSBRZT1vdH1pZihudC5oYXNPd25Qcm9wZXJ0eShxZT0iTU9EVUxPX01PREUiKSYmKGZlKG90PW50W3FlXSwwLDkscWUpLCRlPW90KSxudC5oYXNPd25Qcm9wZXJ0eShx''@;'; put 'put ''ZT0iUE9XX1BSRUNJU0lPTiIpJiYoZmUob3Q9bnRbcWVdLDAscSxxZSksZ3Q9b3QpLG50Lmhhc093blByb3BlcnR5KHFlPSJGT1JNQVQiKSl7aWYoIm9iamVjdCIhPXR5cGVvZihvdD1udFtxZV0pKXRocm93IEVycm9yKForcWUrIiBub3QgYW4gb2JqZWN0OiAiK290KTt5dD1vdH1pZihudC5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eShxZT0iQUxQSEFCRVQiKSl7aWYoInN0cmluZyIhPXR5cGVvZihvdD1udFtxZV0pfHwvXi4kfFsrLS5cc118KC4pLipcMS8udGVzdChvdCkpdGhyb3cgRXJyb3IoWitxZSsiIGludmFsaWQ6ICIrb3QpO3B0PW90fX1yZXR1cm57REVDSU1BTF9QTEFDRVM6UyxST1VORElO''@;'; put 'put ''R19NT0RFOkYsRVhQT05FTlRJQUxfQVQ6W3llLENlXSxSQU5HRTpbRGUsUGVdLENSWVBUTzpRZSxNT0RVTE9fTU9ERTokZSxQT1dfUFJFQ0lTSU9OOmd0LEZPUk1BVDp5dCxBTFBIQUJFVDpwdH19LG10LmlzQmlnTnVtYmVyPWZ1bmN0aW9uKG50KXtyZXR1cm4gbnQgaW5zdGFuY2VvZiBtdHx8''@;'; put 'put ''bnQmJiEwPT09bnQuX2lzQmlnTnVtYmVyfHwhMX0sbXQubWF4aW11bT1tdC5tYXg9ZnVuY3Rpb24oKXtyZXR1cm4gZnQoYXJndW1lbnRzLFYubHQpfSxtdC5taW5pbXVtPW10Lm1pbj1mdW5jdGlvbigpe3JldHVybiBmdChhcmd1bWVudHMsVi5ndCl9LG10LnJhbmRvbT0oaGU9OTAwNzE5OTI1''@;'; put 'put ''NDc0MDk5MixPPU1hdGgucmFuZG9tKCkqaGUmMjA5NzE1MT9mdW5jdGlvbigpe3JldHVybiBRKE1hdGgucmFuZG9tKCkqaGUpfTpmdW5jdGlvbigpe3JldHVybiA4Mzg4NjA4KigxMDczNzQxODI0Kk1hdGgucmFuZG9tKCl8MCkrKDgzODg2MDgqTWF0aC5yYW5kb20oKXwwKX0sZnVuY3Rpb24o''@;'; put 'put ''bnQpe3ZhciBxZSxvdCxSdCxDdCxjdCxOdD0wLHplPVtdLFllPW5ldyBtdChUKTtpZihudWxsPT1udD9udD1TOmZlKG50LDAscSksQ3Q9VShudC9ZKSxRZSlpZihjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKXtmb3IocWU9Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoQ3Qq''@;'; put 'put ''PTIpKTtOdDxDdDspOWUxNTw9KGN0PTEzMTA3MipxZVtOdF0rKHFlW050KzFdPj4+MTEpKT8ob3Q9Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMikpLHFlW050XT1vdFswXSxxZVtOdCsxXT1vdFsxXSk6KHplLnB1c2goY3QlMWUxNCksTnQrPTIpO050PUN0LzJ9ZWxz''@;'; put 'put ''ZXtpZighY3J5cHRvLnJhbmRvbUJ5dGVzKXRocm93IFFlPSExLEVycm9yKForImNyeXB0byB1bmF2YWlsYWJsZSIpO2ZvcihxZT1jcnlwdG8ucmFuZG9tQnl0ZXMoQ3QqPTcpO050PEN0Oyk5ZTE1PD0oY3Q9MjgxNDc0OTc2NzEwNjU2KigzMSZxZVtOdF0pKzEwOTk1MTE2Mjc3NzYqcWVbTnQr''@;'; put 'put ''MV0rNDI5NDk2NzI5NipxZVtOdCsyXSsxNjc3NzIxNipxZVtOdCszXSsocWVbTnQrNF08PDE2KSsocWVbTnQrNV08PDgpK3FlW050KzZdKT9jcnlwdG8ucmFuZG9tQnl0ZXMoNykuY29weShxZSxOdCk6KHplLnB1c2goY3QlMWUxNCksTnQrPTcpO050PUN0Lzd9aWYoIVFlKWZvcig7TnQ8Q3Q7''@;'; put 'put ''KShjdD1PKCkpPDllMTUmJih6ZVtOdCsrXT1jdCUxZTE0KTtmb3IoQ3Q9emVbLS1OdF0sbnQlPVksQ3QmJm50JiYoemVbTnRdPVEoQ3QvKGN0PU5bWS1udF0pKSpjdCk7MD09PXplW050XTt6ZS5wb3AoKSxOdC0tKTtpZihOdDwwKXplPVtSdD0wXTtlbHNle2ZvcihSdD0tMTswPT09emVbMF07''@;'; put 'put ''emUuc3BsaWNlKDAsMSksUnQtPVkpO2ZvcihOdD0xLGN0PXplWzBdOzEwPD1jdDtjdC89MTAsTnQrKyk7TnQ8WSYmKFJ0LT1ZLU50KX1yZXR1cm4gWWUuZT1SdCxZZS5jPXplLFllfSksbXQuc3VtPWZ1bmN0aW9uKCl7Zm9yKHZhciBudD0xLHFlPWFyZ3VtZW50cyxvdD1uZXcgbXQocWVbMF0p''@;'; put 'put ''O250PHFlLmxlbmd0aDspb3Q9b3QucGx1cyhxZVtudCsrXSk7cmV0dXJuIG90fSxUZT1mdW5jdGlvbigpe3ZhciBudD0iMDEyMzQ1Njc4OSI7ZnVuY3Rpb24gcWUob3QsUnQsQ3QsY3Qpe2Zvcih2YXIgTnQsemUsWWU9WzBdLEF0PTAsanQ9b3QubGVuZ3RoO0F0PGp0Oyl7Zm9yKHplPVllLmxl''@;'; put 'put ''bmd0aDt6ZS0tO1llW3plXSo9UnQpO2ZvcihZZVswXSs9Y3QuaW5kZXhPZihvdC5jaGFyQXQoQXQrKykpLE50PTA7TnQ8WWUubGVuZ3RoO050KyspWWVbTnRdPkN0LTEmJihudWxsPT1ZZVtOdCsxXSYmKFllW050KzFdPTApLFllW050KzFdKz1ZZVtOdF0vQ3R8MCxZZVtOdF0lPUN0KX1yZXR1''@;'; put 'put ''cm4gWWUucmV2ZXJzZSgpfXJldHVybiBmdW5jdGlvbihvdCxSdCxDdCxjdCxOdCl7dmFyIHplLFllLEF0LGp0LEp0LG1uLHBuLGJuLGxuPW90LmluZGV4T2YoIi4iKSxObj1TLGtuPUY7Zm9yKDA8PWxuJiYoanQ9Z3QsZ3Q9MCxvdD1vdC5yZXBsYWNlKCIuIiwiIiksbW49KGJuPW5ldyBtdChS''@;'; put 'put ''dCkpLnBvdyhvdC5sZW5ndGgtbG4pLGd0PWp0LGJuLmM9cWUoQWUoc2UobW4uYyksbW4uZSwiMCIpLDEwLEN0LG50KSxibi5lPWJuLmMubGVuZ3RoKSxBdD1qdD0ocG49cWUob3QsUnQsQ3QsTnQ/KHplPXB0LG50KTooemU9bnQscHQpKSkubGVuZ3RoOzA9PXBuWy0tanRdO3BuLnBvcCgpKTtp''@;'; put 'put ''ZighcG5bMF0pcmV0dXJuIHplLmNoYXJBdCgwKTtpZihsbjwwPy0tQXQ6KG1uLmM9cG4sbW4uZT1BdCxtbi5zPWN0LHBuPShtbj1JZShtbixibixObixrbixDdCkpLmMsSnQ9bW4ucixBdD1tbi5lKSxsbj1wbltZZT1BdCtObisxXSxqdD1DdC8yLEp0PUp0fHxZZTwwfHxudWxsIT1wbltZZSsx''@;'; put 'put ''XSxKdD1rbjw0PyhudWxsIT1sbnx8SnQpJiYoMD09a258fGtuPT0obW4uczwwPzM6MikpOmp0PGxufHxsbj09anQmJig0PT1rbnx8SnR8fDY9PWtuJiYxJnBuW1llLTFdfHxrbj09KG1uLnM8MD84OjcpKSxZZTwxfHwhcG5bMF0pb3Q9SnQ/QWUoemUuY2hhckF0KDEpLC1Obix6ZS5jaGFyQXQo''@;'; put 'put ''MCkpOnplLmNoYXJBdCgwKTtlbHNle2lmKHBuLmxlbmd0aD1ZZSxKdClmb3IoLS1DdDsrK3BuWy0tWWVdPkN0OylwbltZZV09MCxZZXx8KCsrQXQscG49WzFdLmNvbmNhdChwbikpO2ZvcihqdD1wbi5sZW5ndGg7IXBuWy0tanRdOyk7Zm9yKGxuPTAsb3Q9IiI7bG48PWp0O290Kz16ZS5jaGFy''@;'; put 'put ''QXQocG5bbG4rK10pKTtvdD1BZShvdCxBdCx6ZS5jaGFyQXQoMCkpfXJldHVybiBvdH19KCksSWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBudChSdCxDdCxjdCl7dmFyIE50LHplLFllLEF0LGp0PTAsSnQ9UnQubGVuZ3RoLG1uPUN0JWVlLHBuPUN0L2VlfDA7Zm9yKFJ0PVJ0LnNsaWNlKCk7SnQt''@;'; put 'put ''LTspanQ9KCh6ZT1tbiooWWU9UnRbSnRdJWVlKSsoTnQ9cG4qWWUrKEF0PVJ0W0p0XS9lZXwwKSptbiklZWUqZWUranQpL2N0fDApKyhOdC9lZXwwKStwbipBdCxSdFtKdF09emUlY3Q7cmV0dXJuIGp0JiYoUnQ9W2p0XS5jb25jYXQoUnQpKSxSdH1mdW5jdGlvbiBxZShSdCxDdCxjdCxOdCl7''@;'; put 'put ''dmFyIHplLFllO2lmKGN0IT1OdClZZT1OdDxjdD8xOi0xO2Vsc2UgZm9yKHplPVllPTA7emU8Y3Q7emUrKylpZihSdFt6ZV0hPUN0W3plXSl7WWU9UnRbemVdPkN0W3plXT8xOi0xO2JyZWFrfXJldHVybiBZZX1mdW5jdGlvbiBvdChSdCxDdCxjdCxOdCl7Zm9yKHZhciB6ZT0wO2N0LS07KVJ0''@;'; put 'put ''W2N0XS09emUsUnRbY3RdPSh6ZT1SdFtjdF08Q3RbY3RdPzE6MCkqTnQrUnRbY3RdLUN0W2N0XTtmb3IoOyFSdFswXSYmMTxSdC5sZW5ndGg7UnQuc3BsaWNlKDAsMSkpO31yZXR1cm4gZnVuY3Rpb24oUnQsQ3QsY3QsTnQsemUpe3ZhciBZZSxBdCxqdCxKdCxtbixwbixibixsbixObixrbixl''@;'; put 'put ''cix1cixYbixGcix4cixlbixkcixucj1SdC5zPT1DdC5zPzE6LTEsd249UnQuYywkbj1DdC5jO2lmKCEod24mJnduWzBdJiYkbiYmJG5bMF0pKXJldHVybiBuZXcgbXQoUnQucyYmQ3QucyYmKHduPyEkbnx8d25bMF0hPSRuWzBdOiRuKT93biYmMD09d25bMF18fCEkbj8wKm5yOm5yLzA6TmFO''@;'; put 'put ''KTtmb3IoTm49KGxuPW5ldyBtdChucikpLmM9W10sbnI9Y3QrKEF0PVJ0LmUtQ3QuZSkrMSx6ZXx8KHplPWxlLEF0PUooUnQuZS9ZKS1KKEN0LmUvWSksbnI9bnIvWXwwKSxqdD0wOyRuW2p0XT09KHduW2p0XXx8MCk7anQrKyk7aWYoJG5banRdPih3bltqdF18fDApJiZBdC0tLG5yPDApTm4u''@;'; put 'put ''cHVzaCgxKSxKdD0hMDtlbHNle2ZvcihGcj13bi5sZW5ndGgsZW49JG4ubGVuZ3RoLG5yKz0yLDE8KG1uPVEoemUvKCRuW2p0PTBdKzEpKSkmJigkbj1udCgkbixtbix6ZSksd249bnQod24sbW4semUpLGVuPSRuLmxlbmd0aCxGcj13bi5sZW5ndGgpLFhuPWVuLGVyPShrbj13bi5zbGljZSgw''@;'; put 'put ''LGVuKSkubGVuZ3RoO2VyPGVuO2tuW2VyKytdPTApO2RyPSRuLnNsaWNlKCksZHI9WzBdLmNvbmNhdChkcikseHI9JG5bMF0sJG5bMV0+PXplLzImJnhyKys7ZG97aWYobW49MCwoWWU9cWUoJG4sa24sZW4sZXIpKTwwKXtpZih1cj1rblswXSxlbiE9ZXImJih1cj11cip6ZSsoa25bMV18fDAp''@;'; put 'put ''KSwxPChtbj1RKHVyL3hyKSkpZm9yKHplPD1tbiYmKG1uPXplLTEpLGJuPShwbj1udCgkbixtbix6ZSkpLmxlbmd0aCxlcj1rbi5sZW5ndGg7MT09cWUocG4sa24sYm4sZXIpOyltbi0tLG90KHBuLGVuPGJuP2RyOiRuLGJuLHplKSxibj1wbi5sZW5ndGgsWWU9MTtlbHNlIDA9PW1uJiYoWWU9''@;'; put 'put ''bW49MSksYm49KHBuPSRuLnNsaWNlKCkpLmxlbmd0aDtpZihibjxlciYmKHBuPVswXS5jb25jYXQocG4pKSxvdChrbixwbixlcix6ZSksZXI9a24ubGVuZ3RoLC0xPT1ZZSlmb3IoO3FlKCRuLGtuLGVuLGVyKTwxOyltbisrLG90KGtuLGVuPGVyP2RyOiRuLGVyLHplKSxlcj1rbi5sZW5ndGh9''@;'; put 'put ''ZWxzZSAwPT09WWUmJihtbisrLGtuPVswXSk7Tm5banQrK109bW4sa25bMF0/a25bZXIrK109d25bWG5dfHwwOihrbj1bd25bWG5dXSxlcj0xKX13aGlsZSgoWG4rKzxGcnx8bnVsbCE9a25bMF0pJiZuci0tKTtKdD1udWxsIT1rblswXSxOblswXXx8Tm4uc3BsaWNlKDAsMSl9aWYoemU9PWxl''@;'; put 'put ''KXtmb3IoanQ9MSxucj1OblswXTsxMDw9bnI7bnIvPTEwLGp0KyspO29uKGxuLGN0Kyhsbi5lPWp0K0F0KlktMSkrMSxOdCxKdCl9ZWxzZSBsbi5lPUF0LGxuLnI9K0p0O3JldHVybiBsbn19KCksej0vXigtPykwKFt4Ym9dKSg/PVx3W1x3Ll0qJCkvaSxuZT0vXihbXi5dKylcLiQvLHRlPS9e''@;'; put 'put ''XC4oW14uXSspJC8seD0vXi0/KEluZmluaXR5fE5hTikkLyxQPS9eXHMqXCsoPz1bXHcuXSl8XlxzK3xccyskL2csRWU9ZnVuY3Rpb24obnQscWUsb3QsUnQpe3ZhciBDdCxjdD1vdD9xZTpxZS5yZXBsYWNlKFAsIiIpO2lmKHgudGVzdChjdCkpbnQucz1pc05hTihjdCk/bnVsbDpjdDwwPy0x''@;'; put 'put ''OjEsbnQuYz1udC5lPW51bGw7ZWxzZXtpZighb3QmJihjdD1jdC5yZXBsYWNlKHosZnVuY3Rpb24oTnQsemUsWWUpe3JldHVybiBDdD0ieCI9PShZZT1ZZS50b0xvd2VyQ2FzZSgpKT8xNjoiYiI9PVllPzI6OCxSdCYmUnQhPUN0P050OnplfSksUnQmJihDdD1SdCxjdD1jdC5yZXBsYWNlKG5l''@;'; put 'put ''LCIkMSIpLnJlcGxhY2UodGUsIjAuJDEiKSkscWUhPWN0KSlyZXR1cm4gbmV3IG10KGN0LEN0KTtpZihtdC5ERUJVRyl0aHJvdyBFcnJvcihaKyJOb3QgYSIrKFJ0PyIgYmFzZSAiK1J0OiIiKSsiIG51bWJlcjogIitxZSk7bnQuYz1udC5lPW50LnM9bnVsbH19LFYuYWJzb2x1dGVWYWx1ZT1W''@;'; put 'put ''LmFicz1mdW5jdGlvbigpe3ZhciBudD1uZXcgbXQodGhpcyk7cmV0dXJuIG50LnM8MCYmKG50LnM9MSksbnR9LFYuY29tcGFyZWRUbz1mdW5jdGlvbihudCxxZSl7cmV0dXJuIGFlKHRoaXMsbmV3IG10KG50LHFlKSl9LFYuZGVjaW1hbFBsYWNlcz1WLmRwPWZ1bmN0aW9uKG50LHFlKXt2YXIg''@;'; put 'put ''b3QsUnQsQ3Q7aWYobnVsbCE9bnQpcmV0dXJuIGZlKG50LDAscSksbnVsbD09cWU/cWU9RjpmZShxZSwwLDgpLG9uKG5ldyBtdCh0aGlzKSxudCt0aGlzLmUrMSxxZSk7aWYoIShvdD10aGlzLmMpKXJldHVybiBudWxsO2lmKFJ0PSgoQ3Q9b3QubGVuZ3RoLTEpLUoodGhpcy5lL1kpKSpZLEN0''@;'; put 'put ''PW90W0N0XSlmb3IoO0N0JTEwPT0wO0N0Lz0xMCxSdC0tKTtyZXR1cm4gUnQ8MCYmKFJ0PTApLFJ0fSxWLmRpdmlkZWRCeT1WLmRpdj1mdW5jdGlvbihudCxxZSl7cmV0dXJuIEllKHRoaXMsbmV3IG10KG50LHFlKSxTLEYpfSxWLmRpdmlkZWRUb0ludGVnZXJCeT1WLmlkaXY9ZnVuY3Rpb24o''@;'; put 'put ''bnQscWUpe3JldHVybiBJZSh0aGlzLG5ldyBtdChudCxxZSksMCwxKX0sVi5leHBvbmVudGlhdGVkQnk9Vi5wb3c9ZnVuY3Rpb24obnQscWUpe3ZhciBvdCxSdCxDdCxjdCxOdCx6ZSxZZSxBdCxqdD10aGlzO2lmKChudD1uZXcgbXQobnQpKS5jJiYhbnQuaXNJbnRlZ2VyKCkpdGhyb3cgRXJy''@;'; put 'put ''b3IoWisiRXhwb25lbnQgbm90IGFuIGludGVnZXI6ICIrX3QobnQpKTtpZihudWxsIT1xZSYmKHFlPW5ldyBtdChxZSkpLE50PTE0PG50LmUsIWp0LmN8fCFqdC5jWzBdfHwxPT1qdC5jWzBdJiYhanQuZSYmMT09anQuYy5sZW5ndGh8fCFudC5jfHwhbnQuY1swXSlyZXR1cm4gQXQ9bmV3IG10''@;'; put 'put ''KE1hdGgucG93KCtfdChqdCksTnQ/Mi1kZShudCk6K190KG50KSkpLHFlP0F0Lm1vZChxZSk6QXQ7aWYoemU9bnQuczwwLHFlKXtpZihxZS5jPyFxZS5jWzBdOiFxZS5zKXJldHVybiBuZXcgbXQoTmFOKTsoUnQ9IXplJiZqdC5pc0ludGVnZXIoKSYmcWUuaXNJbnRlZ2VyKCkpJiYoanQ9anQu''@;'; put 'put ''bW9kKHFlKSl9ZWxzZXtpZig5PG50LmUmJigwPGp0LmV8fGp0LmU8LTF8fCgwPT1qdC5lPzE8anQuY1swXXx8TnQmJjI0ZTc8PWp0LmNbMV06anQuY1swXTw4ZTEzfHxOdCYmanQuY1swXTw9OTk5OTk3NWU3KSkpcmV0dXJuIGN0PWp0LnM8MCYmZGUobnQpPy0wOjAsLTE8anQuZSYmKGN0PTEv''@;'; put 'put ''Y3QpLG5ldyBtdCh6ZT8xL2N0OmN0KTtndCYmKGN0PVUoZ3QvWSsyKSl9Zm9yKFllPU50PyhvdD1uZXcgbXQoLjUpLHplJiYobnQucz0xKSxkZShudCkpOihDdD1NYXRoLmFicygrX3QobnQpKSklMixBdD1uZXcgbXQoVCk7Oyl7aWYoWWUpe2lmKCEoQXQ9QXQudGltZXMoanQpKS5jKWJyZWFr''@;'; put 'put ''O2N0P0F0LmMubGVuZ3RoPmN0JiYoQXQuYy5sZW5ndGg9Y3QpOlJ0JiYoQXQ9QXQubW9kKHFlKSl9aWYoQ3Qpe2lmKDA9PT0oQ3Q9UShDdC8yKSkpYnJlYWs7WWU9Q3QlMn1lbHNlIGlmKG9uKG50PW50LnRpbWVzKG90KSxudC5lKzEsMSksMTQ8bnQuZSlZZT1kZShudCk7ZWxzZXtpZigwPT0o''@;'; put 'put ''Q3Q9K190KG50KSkpYnJlYWs7WWU9Q3QlMn1qdD1qdC50aW1lcyhqdCksY3Q/anQuYyYmanQuYy5sZW5ndGg+Y3QmJihqdC5jLmxlbmd0aD1jdCk6UnQmJihqdD1qdC5tb2QocWUpKX1yZXR1cm4gUnQ/QXQ6KHplJiYoQXQ9VC5kaXYoQXQpKSxxZT9BdC5tb2QocWUpOmN0P29uKEF0LGd0LEYs''@;'; put 'put ''dm9pZCAwKTpBdCl9LFYuaW50ZWdlclZhbHVlPWZ1bmN0aW9uKG50KXt2YXIgcWU9bmV3IG10KHRoaXMpO3JldHVybiBudWxsPT1udD9udD1GOmZlKG50LDAsOCksb24ocWUscWUuZSsxLG50KX0sVi5pc0VxdWFsVG89Vi5lcT1mdW5jdGlvbihudCxxZSl7cmV0dXJuIDA9PT1hZSh0aGlzLG5l''@;'; put 'put ''dyBtdChudCxxZSkpfSxWLmlzRmluaXRlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmN9LFYuaXNHcmVhdGVyVGhhbj1WLmd0PWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gMDxhZSh0aGlzLG5ldyBtdChudCxxZSkpfSxWLmlzR3JlYXRlclRoYW5PckVxdWFsVG89Vi5ndGU9ZnVuY3Rpb24obnQs''@;'; put 'put ''cWUpe3JldHVybiAxPT09KHFlPWFlKHRoaXMsbmV3IG10KG50LHFlKSkpfHwwPT09cWV9LFYuaXNJbnRlZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmMmJkoodGhpcy5lL1kpPnRoaXMuYy5sZW5ndGgtMn0sVi5pc0xlc3NUaGFuPVYubHQ9ZnVuY3Rpb24obnQscWUpe3JldHVybiBhZSh0''@;'; put 'put ''aGlzLG5ldyBtdChudCxxZSkpPDB9LFYuaXNMZXNzVGhhbk9yRXF1YWxUbz1WLmx0ZT1mdW5jdGlvbihudCxxZSl7cmV0dXJuLTE9PT0ocWU9YWUodGhpcyxuZXcgbXQobnQscWUpKSl8fDA9PT1xZX0sVi5pc05hTj1mdW5jdGlvbigpe3JldHVybiF0aGlzLnN9LFYuaXNOZWdhdGl2ZT1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLnM8MH0sVi5pc1Bvc2l0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5zfSxWLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jJiYwPT10aGlzLmNbMF19LFYubWludXM9ZnVuY3Rpb24obnQscWUpe3ZhciBvdCxSdCxDdCxjdCxOdD10aGlzLHpl''@;'; put 'put ''PU50LnM7aWYocWU9KG50PW5ldyBtdChudCxxZSkpLnMsIXplfHwhcWUpcmV0dXJuIG5ldyBtdChOYU4pO2lmKHplIT1xZSlyZXR1cm4gbnQucz0tcWUsTnQucGx1cyhudCk7dmFyIFllPU50LmUvWSxBdD1udC5lL1ksanQ9TnQuYyxKdD1udC5jO2lmKCFZZXx8IUF0KXtpZighanR8fCFKdCly''@;'; put 'put ''ZXR1cm4ganQ/KG50LnM9LXFlLG50KTpuZXcgbXQoSnQ/TnQ6TmFOKTtpZighanRbMF18fCFKdFswXSlyZXR1cm4gSnRbMF0/KG50LnM9LXFlLG50KTpuZXcgbXQoanRbMF0/TnQ6Mz09Rj8tMDowKX1pZihZZT1KKFllKSxBdD1KKEF0KSxqdD1qdC5zbGljZSgpLHplPVllLUF0KXtmb3IoKEN0''@;'; put 'put ''PShjdD16ZTwwKT8oemU9LXplLGp0KTooQXQ9WWUsSnQpKS5yZXZlcnNlKCkscWU9emU7cWUtLTtDdC5wdXNoKDApKTtDdC5yZXZlcnNlKCl9ZWxzZSBmb3IoUnQ9KGN0PSh6ZT1qdC5sZW5ndGgpPChxZT1KdC5sZW5ndGgpKT96ZTpxZSx6ZT1xZT0wO3FlPFJ0O3FlKyspaWYoanRbcWVdIT1K''@;'; put 'put ''dFtxZV0pe2N0PWp0W3FlXTxKdFtxZV07YnJlYWt9aWYoY3QmJihDdD1qdCxqdD1KdCxKdD1DdCxudC5zPS1udC5zKSwwPChxZT0oUnQ9SnQubGVuZ3RoKS0ob3Q9anQubGVuZ3RoKSkpZm9yKDtxZS0tO2p0W290KytdPTApO2ZvcihxZT1sZS0xO3plPFJ0Oyl7aWYoanRbLS1SdF08SnRbUnRd''@;'; put 'put ''KXtmb3Iob3Q9UnQ7b3QmJiFqdFstLW90XTtqdFtvdF09cWUpOy0tanRbb3RdLGp0W1J0XSs9bGV9anRbUnRdLT1KdFtSdF19Zm9yKDswPT1qdFswXTtqdC5zcGxpY2UoMCwxKSwtLUF0KTtyZXR1cm4ganRbMF0/RnQobnQsanQsQXQpOihudC5zPTM9PUY/LTE6MSxudC5jPVtudC5lPTBdLG50''@;'; put 'put ''KX0sVi5tb2R1bG89Vi5tb2Q9ZnVuY3Rpb24obnQscWUpe3ZhciBvdCxSdCxDdD10aGlzO3JldHVybiBudD1uZXcgbXQobnQscWUpLCFDdC5jfHwhbnQuc3x8bnQuYyYmIW50LmNbMF0/bmV3IG10KE5hTik6IW50LmN8fEN0LmMmJiFDdC5jWzBdP25ldyBtdChDdCk6KDk9PSRlPyhSdD1udC5z''@;'; put 'put ''LG50LnM9MSxvdD1JZShDdCxudCwwLDMpLG50LnM9UnQsb3Qucyo9UnQpOm90PUllKEN0LG50LDAsJGUpLChudD1DdC5taW51cyhvdC50aW1lcyhudCkpKS5jWzBdfHwxIT0kZXx8KG50LnM9Q3QucyksbnQpfSxWLm11bHRpcGxpZWRCeT1WLnRpbWVzPWZ1bmN0aW9uKG50LHFlKXt2YXIgb3Qs''@;'; put 'put ''UnQsQ3QsY3QsTnQsemUsWWUsQXQsanQsSnQsbW4scG4sYm4sbG4sTm4sa249dGhpcyxlcj1rbi5jLHVyPShudD1uZXcgbXQobnQscWUpKS5jO2lmKCEoZXImJnVyJiZlclswXSYmdXJbMF0pKXJldHVybiFrbi5zfHwhbnQuc3x8ZXImJiFlclswXSYmIXVyfHx1ciYmIXVyWzBdJiYhZXI/bnQu''@;'; put 'put ''Yz1udC5lPW50LnM9bnVsbDoobnQucyo9a24ucyxlciYmdXI/KG50LmM9WzBdLG50LmU9MCk6bnQuYz1udC5lPW51bGwpLG50O2ZvcihSdD1KKGtuLmUvWSkrSihudC5lL1kpLG50LnMqPWtuLnMsKFllPWVyLmxlbmd0aCk8KEp0PXVyLmxlbmd0aCkmJihibj1lcixlcj11cix1cj1ibixDdD1Z''@;'; put 'put ''ZSxZZT1KdCxKdD1DdCksQ3Q9WWUrSnQsYm49W107Q3QtLTtibi5wdXNoKDApKTtmb3IobG49bGUsTm49ZWUsQ3Q9SnQ7MDw9LS1DdDspe2ZvcihvdD0wLG1uPXVyW0N0XSVObixwbj11cltDdF0vTm58MCxjdD1DdCsoTnQ9WWUpO0N0PGN0OylvdD0oKEF0PW1uKihBdD1lclstLU50XSVObikr''@;'; put 'put ''KHplPXBuKkF0KyhqdD1lcltOdF0vTm58MCkqbW4pJU5uKk5uK2JuW2N0XStvdCkvbG58MCkrKHplL05ufDApK3BuKmp0LGJuW2N0LS1dPUF0JWxuO2JuW2N0XT1vdH1yZXR1cm4gb3Q/KytSdDpibi5zcGxpY2UoMCwxKSxGdChudCxibixSdCl9LFYubmVnYXRlZD1mdW5jdGlvbigpe3ZhciBu''@;'; put 'put ''dD1uZXcgbXQodGhpcyk7cmV0dXJuIG50LnM9LW50LnN8fG51bGwsbnR9LFYucGx1cz1mdW5jdGlvbihudCxxZSl7dmFyIG90LFJ0PXRoaXMsQ3Q9UnQucztpZihxZT0obnQ9bmV3IG10KG50LHFlKSkucywhQ3R8fCFxZSlyZXR1cm4gbmV3IG10KE5hTik7aWYoQ3QhPXFlKXJldHVybiBudC5z''@;'; put 'put ''PS1xZSxSdC5taW51cyhudCk7dmFyIGN0PVJ0LmUvWSxOdD1udC5lL1ksemU9UnQuYyxZZT1udC5jO2lmKCFjdHx8IU50KXtpZighemV8fCFZZSlyZXR1cm4gbmV3IG10KEN0LzApO2lmKCF6ZVswXXx8IVllWzBdKXJldHVybiBZZVswXT9udDpuZXcgbXQoemVbMF0/UnQ6MCpDdCl9aWYoY3Q9''@;'; put 'put ''SihjdCksTnQ9SihOdCksemU9emUuc2xpY2UoKSxDdD1jdC1OdCl7Zm9yKChvdD0wPEN0PyhOdD1jdCxZZSk6KEN0PS1DdCx6ZSkpLnJldmVyc2UoKTtDdC0tO290LnB1c2goMCkpO290LnJldmVyc2UoKX1mb3IoKEN0PXplLmxlbmd0aCktKHFlPVllLmxlbmd0aCk8MCYmKG90PVllLFllPXpl''@;'; put 'put ''LHplPW90LHFlPUN0KSxDdD0wO3FlOylDdD0oemVbLS1xZV09emVbcWVdK1llW3FlXStDdCkvbGV8MCx6ZVtxZV09bGU9PT16ZVtxZV0/MDp6ZVtxZV0lbGU7cmV0dXJuIEN0JiYoemU9W0N0XS5jb25jYXQoemUpLCsrTnQpLEZ0KG50LHplLE50KX0sVi5wcmVjaXNpb249Vi5zZD1mdW5jdGlv''@;'; put 'put ''bihudCxxZSl7dmFyIG90LFJ0LEN0O2lmKG51bGwhPW50JiZudCE9PSEhbnQpcmV0dXJuIGZlKG50LDEscSksbnVsbD09cWU/cWU9RjpmZShxZSwwLDgpLG9uKG5ldyBtdCh0aGlzKSxudCxxZSk7aWYoIShvdD10aGlzLmMpKXJldHVybiBudWxsO2lmKFJ0PShDdD1vdC5sZW5ndGgtMSkqWSsx''@;'; put 'put ''LEN0PW90W0N0XSl7Zm9yKDtDdCUxMD09MDtDdC89MTAsUnQtLSk7Zm9yKEN0PW90WzBdOzEwPD1DdDtDdC89MTAsUnQrKyk7fXJldHVybiBudCYmdGhpcy5lKzE+UnQmJihSdD10aGlzLmUrMSksUnR9LFYuc2hpZnRlZEJ5PWZ1bmN0aW9uKG50KXtyZXR1cm4gZmUobnQsLVcsVyksdGhpcy50''@;'; put 'put ''aW1lcygiMWUiK250KX0sVi5zcXVhcmVSb290PVYuc3FydD1mdW5jdGlvbigpe3ZhciBudCxxZSxvdCxSdCxDdCxjdD10aGlzLE50PWN0LmMsemU9Y3QucyxZZT1jdC5lLEF0PVMrNCxqdD1uZXcgbXQoIjAuNSIpO2lmKDEhPT16ZXx8IU50fHwhTnRbMF0pcmV0dXJuIG5ldyBtdCghemV8fHpl''@;'; put 'put ''PDAmJighTnR8fE50WzBdKT9OYU46TnQ/Y3Q6MS8wKTtpZigob3Q9MD09KHplPU1hdGguc3FydCgrX3QoY3QpKSl8fHplPT0xLzA/KCgocWU9c2UoTnQpKS5sZW5ndGgrWWUpJTI9PTAmJihxZSs9IjAiKSx6ZT1NYXRoLnNxcnQoK3FlKSxZZT1KKChZZSsxKS8yKS0oWWU8MHx8WWUlMiksbmV3''@;'; put 'put ''IG10KHFlPXplPT0xLzA/IjFlIitZZToocWU9emUudG9FeHBvbmVudGlhbCgpKS5zbGljZSgwLHFlLmluZGV4T2YoImUiKSsxKStZZSkpOm5ldyBtdCh6ZSsiIikpLmNbMF0pZm9yKCh6ZT0oWWU9b3QuZSkrQXQpPDMmJih6ZT0wKTs7KWlmKG90PWp0LnRpbWVzKChDdD1vdCkucGx1cyhJZShj''@;'; put 'put ''dCxDdCxBdCwxKSkpLHNlKEN0LmMpLnNsaWNlKDAsemUpPT09KHFlPXNlKG90LmMpKS5zbGljZSgwLHplKSl7aWYob3QuZTxZZSYmLS16ZSwiOTk5OSIhPShxZT1xZS5zbGljZSh6ZS0zLHplKzEpKSYmKFJ0fHwiNDk5OSIhPXFlKSl7K3FlJiYoK3FlLnNsaWNlKDEpfHwiNSIhPXFlLmNoYXJB''@;'; put 'put ''dCgwKSl8fChvbihvdCxvdC5lK1MrMiwxKSxudD0hb3QudGltZXMob3QpLmVxKGN0KSk7YnJlYWt9aWYoIVJ0JiYob24oQ3QsQ3QuZStTKzIsMCksQ3QudGltZXMoQ3QpLmVxKGN0KSkpe290PUN0O2JyZWFrfUF0Kz00LHplKz00LFJ0PTF9cmV0dXJuIG9uKG90LG90LmUrUysxLEYsbnQpfSxW''@;'; put 'put ''LnRvRXhwb25lbnRpYWw9ZnVuY3Rpb24obnQscWUpe3JldHVybiBudWxsIT1udCYmKGZlKG50LDAscSksbnQrKyksdnQodGhpcyxudCxxZSwxKX0sVi50b0ZpeGVkPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gbnVsbCE9bnQmJihmZShudCwwLHEpLG50PW50K3RoaXMuZSsxKSx2dCh0aGlzLG50''@;'; put 'put ''LHFlKX0sVi50b0Zvcm1hdD1mdW5jdGlvbihudCxxZSxvdCl7dmFyIFJ0O2lmKG51bGw9PW90KW51bGwhPW50JiZxZSYmIm9iamVjdCI9PXR5cGVvZiBxZT8ob3Q9cWUscWU9bnVsbCk6bnQmJiJvYmplY3QiPT10eXBlb2YgbnQ/KG90PW50LG50PXFlPW51bGwpOm90PXl0O2Vsc2UgaWYoIm9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiBvdCl0aHJvdyBFcnJvcihaKyJBcmd1bWVudCBub3QgYW4gb2JqZWN0OiAiK290KTtpZihSdD10aGlzLnRvRml4ZWQobnQscWUpLHRoaXMuYyl7dmFyIEN0LGN0PVJ0LnNwbGl0KCIuIiksTnQ9K290Lmdyb3VwU2l6ZSx6ZT0rb3Quc2Vjb25kYXJ5R3JvdXBTaXplLFll''@;'; put 'put ''PW90Lmdyb3VwU2VwYXJhdG9yfHwiIixBdD1jdFswXSxqdD1jdFsxXSxKdD10aGlzLnM8MCxtbj1KdD9BdC5zbGljZSgxKTpBdCxwbj1tbi5sZW5ndGg7aWYoemUmJihDdD1OdCxOdD16ZSxwbi09emU9Q3QpLDA8TnQmJjA8cG4pe2ZvcihBdD1tbi5zdWJzdHIoMCxDdD1wbiVOdHx8TnQpO0N0''@;'; put 'put ''PHBuO0N0Kz1OdClBdCs9WWUrbW4uc3Vic3RyKEN0LE50KTswPHplJiYoQXQrPVllK21uLnNsaWNlKEN0KSksSnQmJihBdD0iLSIrQXQpfVJ0PWp0P0F0KyhvdC5kZWNpbWFsU2VwYXJhdG9yfHwiIikrKCh6ZT0rb3QuZnJhY3Rpb25Hcm91cFNpemUpP2p0LnJlcGxhY2UobmV3IFJlZ0V4cCgi''@;'; put 'put ''XFxkeyIremUrIn1cXEIiLCJnIiksIiQmIisob3QuZnJhY3Rpb25Hcm91cFNlcGFyYXRvcnx8IiIpKTpqdCk6QXR9cmV0dXJuKG90LnByZWZpeHx8IiIpK1J0KyhvdC5zdWZmaXh8fCIiKX0sVi50b0ZyYWN0aW9uPWZ1bmN0aW9uKG50KXt2YXIgcWUsb3QsUnQsQ3QsY3QsTnQsemUsWWUsQXQs''@;'; put 'put ''anQsSnQsbW4scG49dGhpcyxibj1wbi5jO2lmKG51bGwhPW50JiYoISh6ZT1uZXcgbXQobnQpKS5pc0ludGVnZXIoKSYmKHplLmN8fDEhPT16ZS5zKXx8emUubHQoVCkpKXRocm93IEVycm9yKForIkFyZ3VtZW50ICIrKHplLmlzSW50ZWdlcigpPyJvdXQgb2YgcmFuZ2U6ICI6Im5vdCBhbiBp''@;'; put 'put ''bnRlZ2VyOiAiKStfdCh6ZSkpO2lmKCFibilyZXR1cm4gbmV3IG10KHBuKTtmb3IocWU9bmV3IG10KFQpLEF0PW90PW5ldyBtdChUKSxSdD1ZZT1uZXcgbXQoVCksbW49c2UoYm4pLGN0PXFlLmU9bW4ubGVuZ3RoLXBuLmUtMSxxZS5jWzBdPU5bKE50PWN0JVkpPDA/WStOdDpOdF0sbnQ9IW50''@;'; put 'put ''fHwwPHplLmNvbXBhcmVkVG8ocWUpPzA8Y3Q/cWU6QXQ6emUsTnQ9UGUsUGU9MS8wLHplPW5ldyBtdChtbiksWWUuY1swXT0wO2p0PUllKHplLHFlLDAsMSksMSE9KEN0PW90LnBsdXMoanQudGltZXMoUnQpKSkuY29tcGFyZWRUbyhudCk7KW90PVJ0LFJ0PUN0LEF0PVllLnBsdXMoanQudGlt''@;'; put 'put ''ZXMoQ3Q9QXQpKSxZZT1DdCxxZT16ZS5taW51cyhqdC50aW1lcyhDdD1xZSkpLHplPUN0O3JldHVybiBDdD1JZShudC5taW51cyhvdCksUnQsMCwxKSxZZT1ZZS5wbHVzKEN0LnRpbWVzKEF0KSksb3Q9b3QucGx1cyhDdC50aW1lcyhSdCkpLFllLnM9QXQucz1wbi5zLEp0PUllKEF0LFJ0LGN0''@;'; put 'put ''Kj0yLEYpLm1pbnVzKHBuKS5hYnMoKS5jb21wYXJlZFRvKEllKFllLG90LGN0LEYpLm1pbnVzKHBuKS5hYnMoKSk8MT9bQXQsUnRdOltZZSxvdF0sUGU9TnQsSnR9LFYudG9OdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4rX3QodGhpcyl9LFYudG9QcmVjaXNpb249ZnVuY3Rpb24obnQscWUpe3Jl''@;'; put 'put ''dHVybiBudWxsIT1udCYmZmUobnQsMSxxKSx2dCh0aGlzLG50LHFlLDIpfSxWLnRvU3RyaW5nPWZ1bmN0aW9uKG50KXt2YXIgcWUsb3Q9dGhpcyxSdD1vdC5zLEN0PW90LmU7cmV0dXJuIG51bGw9PT1DdD9SdD8ocWU9IkluZmluaXR5IixSdDwwJiYocWU9Ii0iK3FlKSk6cWU9Ik5hTiI6KHFl''@;'; put 'put ''PW51bGw9PW50P0N0PD15ZXx8Q2U8PUN0P3ZlKHNlKG90LmMpLEN0KTpBZShzZShvdC5jKSxDdCwiMCIpOjEwPT09bnQ/QWUoc2UoKG90PW9uKG5ldyBtdChvdCksUytDdCsxLEYpKS5jKSxvdC5lLCIwIik6KGZlKG50LDIscHQubGVuZ3RoLCJCYXNlIiksVGUoQWUoc2Uob3QuYyksQ3QsIjAi''@;'; put 'put ''KSwxMCxudCxSdCwhMCkpLFJ0PDAmJm90LmNbMF0mJihxZT0iLSIrcWUpKSxxZX0sVi52YWx1ZU9mPVYudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIF90KHRoaXMpfSxWLl9pc0JpZ051bWJlcj0hMCwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5p''@;'; put 'put ''dGVyYXRvciYmKFZbU3ltYm9sLnRvU3RyaW5nVGFnXT0iQmlnTnVtYmVyIixWW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPVYudmFsdWVPZiksbnVsbCE9U2UmJm10LnNldChTZSksbXR9KCkpLmRlZmF1bHQ9RS5CaWdOdW1iZXI9RSx2b2lkIDAhPT1MJiZMLmV4''@;'; put 'put ''cG9ydHM/TC5leHBvcnRzPUU6KEJ8fChCPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZj9zZWxmOndpbmRvdyksQi5CaWdOdW1iZXI9RSl9KHRoaXMpfSx7fV0sMjpbZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO0wuZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVuLVVTIixkZWxp''@;'; put 'put ''bWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4ifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxzcGFjZVNlcGFyYXRlZDohMSxvcmRpbmFsOmZ1bmN0aW9uKEIpe3ZhciBFPUIlMTA7cmV0dXJuIDE9PX5+KEIl''@;'; put 'put ''MTAwLzEwKT8idGgiOjE9PT1FPyJzdCI6Mj09PUU/Im5kIjozPT09RT8icmQiOiJ0aCJ9LGN1cnJlbmN5OntzeW1ib2w6IiQiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IlVTRCJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJh''@;'; put 'put ''dGVkOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5Iix0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYToyfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7''@;'; put 'put ''dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6Mn0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5Iix0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV0sMzpbZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoSixzZSl7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKGFlKXtpZihBcnJheS5pc0FycmF5KGFlKSlyZXR1cm4gYWV9KEopfHxmdW5jdGlvbihhZSxmZSl7dmFyIGRlPVtdLHZlPSEwLEFlPSExLGtlPXZvaWQgMDt0cnl7Zm9yKHZhciBTZSxJZT1hZVtTeW1ib2wuaXRlcmF0b3JdKCk7ISh2ZT0oU2U9SWUubmV4dCgpKS5kb25l''@;'; put 'put ''KSYmKGRlLnB1c2goU2UudmFsdWUpLCFmZXx8ZGUubGVuZ3RoIT09ZmUpO3ZlPSEwKTt9Y2F0Y2goVGUpe0FlPSEwLGtlPVRlfWZpbmFsbHl7dHJ5e3ZlfHxudWxsPT1JZS5yZXR1cm58fEllLnJldHVybigpfWZpbmFsbHl7aWYoQWUpdGhyb3cga2V9fXJldHVybiBkZX0oSixzZSl8fGZ1bmN0''@;'; put 'put ''aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfXZhciBFPUplKCIuL2dsb2JhbFN0YXRlIiksTWU9SmUoIi4vdmFsaWRhdGluZyIpLFU9SmUoIi4vcGFyc2luZyIpLFE9WyJCIiwiS0IiLCJN''@;'; put 'put ''QiIsIkdCIiwiVEIiLCJQQiIsIkVCIiwiWkIiLCJZQiJdLFo9e2dlbmVyYWw6e3NjYWxlOjEwMjQsc3VmZml4ZXM6USxtYXJrZXI6ImJkIn0sYmluYXJ5OntzY2FsZToxMDI0LHN1ZmZpeGVzOlsiQiIsIktpQiIsIk1pQiIsIkdpQiIsIlRpQiIsIlBpQiIsIkVpQiIsIlppQiIsIllpQiJdLG1h''@;'; put 'put ''cmtlcjoiYiJ9LGRlY2ltYWw6e3NjYWxlOjFlMyxzdWZmaXhlczpRLG1hcmtlcjoiZCJ9fSxpZT17dG90YWxMZW5ndGg6MCxjaGFyYWN0ZXJpc3RpYzowLGZvcmNlQXZlcmFnZTohMSxhdmVyYWdlOiExLG1hbnRpc3NhOi0xLG9wdGlvbmFsTWFudGlzc2E6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6''@;'; put 'put ''ITEsc3BhY2VTZXBhcmF0ZWQ6ITEsbmVnYXRpdmU6InNpZ24iLGZvcmNlU2lnbjohMX07ZnVuY3Rpb24gbGUoSil7dmFyIHNlPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxhZT0yPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzJd''@;'; put 'put ''OnZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIHNlJiYoc2U9VS5wYXJzZUZvcm1hdChzZSkpLCFNZS52YWxpZGF0ZUZvcm1hdChzZSkpcmV0dXJuIkVSUk9SOiBpbnZhbGlkIGZvcm1hdCI7dmFyIGZlPXNlLnByZWZpeHx8IiIsZGU9c2UucG9zdGZpeHx8IiIsdmU9ZnVuY3Rpb24oQWUsa2Us''@;'; put 'put ''U2Upe3N3aXRjaChrZS5vdXRwdXQpe2Nhc2UiY3VycmVuY3kiOnJldHVybiBmdW5jdGlvbihwdCxtdCx2dCl7dmFyIGZ0PXZ0LmN1cnJlbnRDdXJyZW5jeSgpLEZ0PU9iamVjdC5hc3NpZ24oe30saWUsbXQpLG9uPXZvaWQgMCxfdD0iIixudD0hIUZ0LnRvdGFsTGVuZ3RofHwhIUZ0LmZvcmNl''@;'; put 'put ''QXZlcmFnZXx8RnQuYXZlcmFnZSxxZT1tdC5jdXJyZW5jeVBvc2l0aW9ufHxmdC5wb3NpdGlvbixvdD1tdC5jdXJyZW5jeVN5bWJvbHx8ZnQuc3ltYm9sO0Z0LnNwYWNlU2VwYXJhdGVkJiYoX3Q9IiAiKSwiaW5maXgiPT09cWUmJihvbj1fdCtvdCtfdCk7dmFyIFJ0PWVlKHtpbnN0YW5jZTpw''@;'; put 'put ''dCxwcm92aWRlZEZvcm1hdDptdCxzdGF0ZTp2dCxkZWNpbWFsU2VwYXJhdG9yOm9ufSk7cmV0dXJuInByZWZpeCI9PT1xZSYmKFJ0PXB0Ll92YWx1ZTwwJiYic2lnbiI9PT1GdC5uZWdhdGl2ZT8iLSIuY29uY2F0KF90KS5jb25jYXQob3QpLmNvbmNhdChSdC5zbGljZSgxKSk6b3QrX3QrUnQp''@;'; put 'put ''LHFlJiYicG9zdGZpeCIhPT1xZXx8KFJ0PVJ0KyhfdD1udD8iIjpfdCkrb3QpLFJ0fShBZSxrZT1xKGtlLEUuY3VycmVudEN1cnJlbmN5RGVmYXVsdEZvcm1hdCgpKSxFKTtjYXNlInBlcmNlbnQiOnJldHVybiBrZT1xKGtlLEUuY3VycmVudFBlcmNlbnRhZ2VEZWZhdWx0Rm9ybWF0KCkpLHZ0''@;'; put 'put ''PUUsRnQ9KG10PWtlKS5wcmVmaXhTeW1ib2wsb249ZWUoe2luc3RhbmNlOlNlKDEwMCpBZS5fdmFsdWUpLHByb3ZpZGVkRm9ybWF0Om10LHN0YXRlOnZ0fSksX3Q9T2JqZWN0LmFzc2lnbih7fSxpZSxtdCksRnQ/IiUiLmNvbmNhdChfdC5zcGFjZVNlcGFyYXRlZD8iICI6IiIpLmNvbmNhdChv''@;'; put 'put ''bik6IiIuY29uY2F0KG9uKS5jb25jYXQoX3Quc3BhY2VTZXBhcmF0ZWQ/IiAiOiIiLCIlIik7Y2FzZSJieXRlIjpyZXR1cm4ga2U9cShrZSxFLmN1cnJlbnRCeXRlRGVmYXVsdEZvcm1hdCgpKSxGPUUseWU9U2UsQ2U9KFM9a2UpLmJhc2V8fCJiaW5hcnkiLCRlPShQZT1ZKEFlLl92YWx1ZSwo''@;'; put 'put ''RGU9WltDZV0pLnN1ZmZpeGVzLERlLnNjYWxlKSkuc3VmZml4LGd0PWVlKHtpbnN0YW5jZTp5ZShQZS52YWx1ZSkscHJvdmlkZWRGb3JtYXQ6UyxzdGF0ZTpGLGRlZmF1bHRzOkYuY3VycmVudEJ5dGVEZWZhdWx0Rm9ybWF0KCl9KSx5dD1GLmN1cnJlbnRBYmJyZXZpYXRpb25zKCksIiIuY29u''@;'; put 'put ''Y2F0KGd0KS5jb25jYXQoeXQuc3BhY2VkPyIgIjoiIikuY29uY2F0KCRlKTtjYXNlInRpbWUiOnJldHVybiBrZT1xKGtlLEUuY3VycmVudFRpbWVEZWZhdWx0Rm9ybWF0KCkpLHRlPUFlLHg9TWF0aC5mbG9vcih0ZS5fdmFsdWUvNjAvNjApLFA9TWF0aC5mbG9vcigodGUuX3ZhbHVlLTYwKngq''@;'; put 'put ''NjApLzYwKSxWPU1hdGgucm91bmQodGUuX3ZhbHVlLTYwKngqNjAtNjAqUCksIiIuY29uY2F0KHgsIjoiKS5jb25jYXQoUDwxMD8iMCI6IiIpLmNvbmNhdChQLCI6IikuY29uY2F0KFY8MTA/IjAiOiIiKS5jb25jYXQoVik7Y2FzZSJvcmRpbmFsIjpyZXR1cm4gSWU9QWUsVGU9a2U9cShrZSxF''@;'; put 'put ''LmN1cnJlbnRPcmRpbmFsRGVmYXVsdEZvcm1hdCgpKSxoZT0oRWU9RSkuY3VycmVudE9yZGluYWwoKSxPPU9iamVjdC5hc3NpZ24oe30saWUsVGUpLHo9ZWUoe2luc3RhbmNlOkllLHByb3ZpZGVkRm9ybWF0OlRlLHN0YXRlOkVlfSksbmU9aGUoSWUuX3ZhbHVlKSwiIi5jb25jYXQoeikuY29u''@;'; put 'put ''Y2F0KE8uc3BhY2VTZXBhcmF0ZWQ/IiAiOiIiKS5jb25jYXQobmUpO2RlZmF1bHQ6cmV0dXJuIGVlKHtpbnN0YW5jZTpBZSxwcm92aWRlZEZvcm1hdDprZSxudW1icm86U2V9KX12YXIgbXQsdnQsRnQsb24sX3QsSWUsVGUsRWUsaGUsTyx6LG5lLHRlLHgsUCxWLFMsRix5ZSxDZSxEZSxQZSwk''@;'; put 'put ''ZSxndCx5dH0oSixzZSxhZSk7cmV0dXJuKHZlPWZlK3ZlKStkZX1mdW5jdGlvbiBZKEosc2UsYWUpe3ZhciBmZT1zZVswXSxkZT1NYXRoLmFicyhKKTtpZihhZTw9ZGUpe2Zvcih2YXIgdmU9MTt2ZTxzZS5sZW5ndGg7Kyt2ZSl7dmFyIEFlPU1hdGgucG93KGFlLHZlKSxrZT1NYXRoLnBvdyhh''@;'; put 'put ''ZSx2ZSsxKTtpZihBZTw9ZGUmJmRlPGtlKXtmZT1zZVt2ZV0sSi89QWU7YnJlYWt9fWZlPT09c2VbMF0mJihKLz1NYXRoLnBvdyhhZSxzZS5sZW5ndGgtMSksZmU9c2Vbc2UubGVuZ3RoLTFdKX1yZXR1cm57dmFsdWU6SixzdWZmaXg6ZmV9fWZ1bmN0aW9uIFcoSil7Zm9yKHZhciBzZT0iIixh''@;'; put 'put ''ZT0wO2FlPEo7YWUrKylzZSs9IjAiO3JldHVybiBzZX1mdW5jdGlvbiBlZShKKXt2YXIgc2U9Si5pbnN0YW5jZSxhZT1KLnByb3ZpZGVkRm9ybWF0LGZlPUouc3RhdGUsZGU9dm9pZCAwPT09ZmU/RTpmZSx2ZT1KLmRlY2ltYWxTZXBhcmF0b3IsQWU9Si5kZWZhdWx0cyxrZT12b2lkIDA9PT1B''@;'; put 'put ''ZT9kZS5jdXJyZW50RGVmYXVsdHMoKTpBZSxTZT1zZS5fdmFsdWU7aWYoMD09PVNlJiZkZS5oYXNaZXJvRm9ybWF0KCkpcmV0dXJuIGRlLmdldFplcm9Gb3JtYXQoKTtpZighaXNGaW5pdGUoU2UpKXJldHVybiBTZS50b1N0cmluZygpO3ZhciBJZSxUZSxFZSxoZSxPLG5lLHRlLHg9T2JqZWN0''@;'; put 'put ''LmFzc2lnbih7fSxpZSxrZSxhZSksUD14LnRvdGFsTGVuZ3RoLFY9UD8wOnguY2hhcmFjdGVyaXN0aWMsVD14Lm9wdGlvbmFsQ2hhcmFjdGVyaXN0aWMsUz14LmZvcmNlQXZlcmFnZSxGPSEhUHx8ISFTfHx4LmF2ZXJhZ2UseWU9UD8tMTpGJiZ2b2lkIDA9PT1hZS5tYW50aXNzYT8wOngubWFu''@;'; put 'put ''dGlzc2EsQ2U9IVAmJih2b2lkIDA9PT1hZS5vcHRpb25hbE1hbnRpc3NhPy0xPT09eWU6eC5vcHRpb25hbE1hbnRpc3NhKSxEZT14LnRyaW1NYW50aXNzYSxQZT14LnRob3VzYW5kU2VwYXJhdGVkLFFlPXguc3BhY2VTZXBhcmF0ZWQsJGU9eC5uZWdhdGl2ZSxndD14LmZvcmNlU2lnbix5dD14''@;'; put 'put ''LmV4cG9uZW50aWFsLHB0PSIiO2lmKEYpe3ZhciBtdD1mdW5jdGlvbihudCl7dmFyIHFlPW50LnZhbHVlLG90PW50LmZvcmNlQXZlcmFnZSxSdD1udC5hYmJyZXZpYXRpb25zLEN0PW50LnNwYWNlU2VwYXJhdGVkLGN0PXZvaWQgMCE9PUN0JiZDdCxOdD1udC50b3RhbExlbmd0aCx6ZT12b2lk''@;'; put 'put ''IDA9PT1OdD8wOk50LFllPSIiLEF0PU1hdGguYWJzKHFlKSxqdD0tMTtpZihBdD49TWF0aC5wb3coMTAsMTIpJiYhb3R8fCJ0cmlsbGlvbiI9PT1vdD8oWWU9UnQudHJpbGxpb24scWUvPU1hdGgucG93KDEwLDEyKSk6QXQ8TWF0aC5wb3coMTAsMTIpJiZBdD49TWF0aC5wb3coMTAsOSkmJiFv''@;'; put 'put ''dHx8ImJpbGxpb24iPT09b3Q/KFllPVJ0LmJpbGxpb24scWUvPU1hdGgucG93KDEwLDkpKTpBdDxNYXRoLnBvdygxMCw5KSYmQXQ+PU1hdGgucG93KDEwLDYpJiYhb3R8fCJtaWxsaW9uIj09PW90PyhZZT1SdC5taWxsaW9uLHFlLz1NYXRoLnBvdygxMCw2KSk6KEF0PE1hdGgucG93KDEwLDYp''@;'; put 'put ''JiZBdD49TWF0aC5wb3coMTAsMykmJiFvdHx8InRob3VzYW5kIj09PW90KSYmKFllPVJ0LnRob3VzYW5kLHFlLz1NYXRoLnBvdygxMCwzKSksWWUmJihZZT0oY3Q/IiAiOiIiKStZZSksemUpe3ZhciBKdD1xZS50b1N0cmluZygpLnNwbGl0KCIuIilbMF07anQ9TWF0aC5tYXgoemUtSnQubGVu''@;'; put 'put ''Z3RoLDApfXJldHVybnt2YWx1ZTpxZSxhYmJyZXZpYXRpb246WWUsbWFudGlzc2FQcmVjaXNpb246anR9fSh7dmFsdWU6U2UsZm9yY2VBdmVyYWdlOlMsYWJicmV2aWF0aW9uczpkZS5jdXJyZW50QWJicmV2aWF0aW9ucygpLHNwYWNlU2VwYXJhdGVkOlFlLHRvdGFsTGVuZ3RoOlB9KTtTZT1t''@;'; put 'put ''dC52YWx1ZSxwdCs9bXQuYWJicmV2aWF0aW9uLFAmJih5ZT1tdC5tYW50aXNzYVByZWNpc2lvbil9aWYoeXQpe3ZhciB2dD0oVGU9KEllPXt2YWx1ZTpTZSxjaGFyYWN0ZXJpc3RpY1ByZWNpc2lvbjpWfSkudmFsdWUsaGU9dm9pZCAwPT09KEVlPUllLmNoYXJhY3RlcmlzdGljUHJlY2lzaW9u''@;'; put 'put ''KT8wOkVlLG5lPShPPUIoVGUudG9FeHBvbmVudGlhbCgpLnNwbGl0KCJlIiksMikpWzFdLHRlPStPWzBdLGhlJiYxPGhlJiYodGUqPU1hdGgucG93KDEwLGhlLTEpLG5lPTA8PShuZT0rbmUtKGhlLTEpKT8iKyIuY29uY2F0KG5lKTpuZSkse3ZhbHVlOnRlLGFiYnJldmlhdGlvbjoiZSIuY29u''@;'; put 'put ''Y2F0KG5lKX0pO1NlPXZ0LnZhbHVlLHB0PXZ0LmFiYnJldmlhdGlvbitwdH12YXIgZnQsRnQsb24sX3Q9ZnVuY3Rpb24obnQscWUsb3QsUnQsQ3Qpe2lmKC0xPT09UnQpcmV0dXJuIG50O3ZhciBjdD1mdW5jdGlvbiBOKEosc2Upe3JldHVybi0xIT09Si50b1N0cmluZygpLmluZGV4T2YoImUi''@;'; put 'put ''KT9mdW5jdGlvbihhZSxmZSl7dmFyIGRlPWFlLnRvU3RyaW5nKCksdmU9QihkZS5zcGxpdCgiZSIpLDIpLGtlPXZlWzFdLFNlPUIodmVbMF0uc3BsaXQoIi4iKSwyKSxJZT1TZVswXSxUZT1TZVsxXSxFZT12b2lkIDA9PT1UZT8iIjpUZTtpZigwPCtrZSlkZT1JZStFZStXKGtlLUVlLmxlbmd0''@;'; put 'put ''aCk7ZWxzZXt2YXIgaGU9Ii4iO2hlPStJZTwwPyItMCIuY29uY2F0KGhlKToiMCIuY29uY2F0KGhlKTt2YXIgTz0oVygta2UtMSkrTWF0aC5hYnMoSWUpK0VlKS5zdWJzdHIoMCxmZSk7Ty5sZW5ndGg8ZmUmJihPKz1XKGZlLU8ubGVuZ3RoKSksZGU9aGUrT31yZXR1cm4gMDwra2UmJjA8ZmUm''@;'; put 'put ''JihkZSs9Ii4iLmNvbmNhdChXKGZlKSkpLGRlfShKLHNlKTooTWF0aC5yb3VuZCgrIiIuY29uY2F0KEosImUrIikuY29uY2F0KHNlKSkvTWF0aC5wb3coMTAsc2UpKS50b0ZpeGVkKHNlKX0ocWUsUnQpLE50PUIoY3QudG9TdHJpbmcoKS5zcGxpdCgiLiIpLDIpLHplPU50WzBdLFllPU50WzFd''@;'; put 'put ''LEF0PXZvaWQgMD09PVllPyIiOlllO2lmKEF0Lm1hdGNoKC9eMCskLykmJihvdHx8Q3QpKXJldHVybiB6ZTt2YXIganQ9QXQubWF0Y2goLzArJC8pO3JldHVybiBDdCYmanQ/IiIuY29uY2F0KHplLCIuIikuY29uY2F0KEF0LnRvU3RyaW5nKCkuc2xpY2UoMCxqdC5pbmRleCkpOmN0LnRvU3Ry''@;'; put 'put ''aW5nKCl9KFNlLnRvU3RyaW5nKCksU2UsQ2UseWUsRGUpO3JldHVybiBfdD1mdW5jdGlvbihudCxxZSxvdCxSdCxDdCl7dmFyIGN0PVJ0LmN1cnJlbnREZWxpbWl0ZXJzKCksTnQ9Y3QudGhvdXNhbmRzO0N0PUN0fHxjdC5kZWNpbWFsO3ZhciB6ZT1jdC50aG91c2FuZHNTaXplfHwzLFllPW50''@;'; put 'put ''LnRvU3RyaW5nKCksQXQ9WWUuc3BsaXQoIi4iKVswXSxqdD1ZZS5zcGxpdCgiLiIpWzFdO3JldHVybiBvdCYmKHFlPDAmJihBdD1BdC5zbGljZSgxKSksZnVuY3Rpb24oSnQsbW4pe2Zvcih2YXIgcG49W10sYm49MCxsbj1KdDswPGxuO2xuLS0pYm49PT1tbiYmKHBuLnVuc2hpZnQobG4pLGJu''@;'; put 'put ''PTApLGJuKys7cmV0dXJuIHBufShBdC5sZW5ndGgsemUpLmZvckVhY2goZnVuY3Rpb24oSnQsbW4pe0F0PUF0LnNsaWNlKDAsSnQrbW4pK050K0F0LnNsaWNlKEp0K21uKX0pLHFlPDAmJihBdD0iLSIuY29uY2F0KEF0KSkpLGp0P0F0K0N0K2p0OkF0fShfdD1mdW5jdGlvbihudCxxZSxvdCxS''@;'; put 'put ''dCl7dmFyIEN0PW50LGN0PUIoQ3QudG9TdHJpbmcoKS5zcGxpdCgiLiIpLDIpLE50PWN0WzBdLHplPWN0WzFdO2lmKE50Lm1hdGNoKC9eLT8wJC8pJiZvdClyZXR1cm4gemU/IiIuY29uY2F0KE50LnJlcGxhY2UoIjAiLCIiKSwiLiIpLmNvbmNhdCh6ZSk6TnQucmVwbGFjZSgiMCIsIiIpO2lm''@;'; put 'put ''KE50Lmxlbmd0aDxSdClmb3IodmFyIFllPVJ0LU50Lmxlbmd0aCxBdD0wO0F0PFllO0F0KyspQ3Q9IjAiLmNvbmNhdChDdCk7cmV0dXJuIEN0LnRvU3RyaW5nKCl9KF90LDAsVCxWKSxTZSxQZSxkZSx2ZSksKEZ8fHl0KSYmKF90Kz1wdCksKGd0fHxTZTwwKSYmKGZ0PV90LG9uPSRlLF90PTA9''@;'; put 'put ''PT0oRnQ9U2UpP2Z0OjA9PStmdD9mdC5yZXBsYWNlKCItIiwiIik6MDxGdD8iKyIuY29uY2F0KGZ0KToic2lnbiI9PT1vbj9mdDoiKCIuY29uY2F0KGZ0LnJlcGxhY2UoIi0iLCIiKSwiKSIpKSxfdH1mdW5jdGlvbiBxKEosc2Upe2lmKCFKKXJldHVybiBzZTt2YXIgYWU9T2JqZWN0LmtleXMo''@;'; put 'put ''Sik7cmV0dXJuIDE9PT1hZS5sZW5ndGgmJiJvdXRwdXQiPT09YWVbMF0/c2U6Sn1MLmV4cG9ydHM9ZnVuY3Rpb24oSil7cmV0dXJue2Zvcm1hdDpmdW5jdGlvbigpe2Zvcih2YXIgc2U9YXJndW1lbnRzLmxlbmd0aCxhZT1uZXcgQXJyYXkoc2UpLGZlPTA7ZmU8c2U7ZmUrKylhZVtmZV09YXJn''@;'; put 'put ''dW1lbnRzW2ZlXTtyZXR1cm4gbGUuYXBwbHkodm9pZCAwLGFlLmNvbmNhdChbSl0pKX0sZ2V0Qnl0ZVVuaXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHNlPWFyZ3VtZW50cy5sZW5ndGgsYWU9bmV3IEFycmF5KHNlKSxmZT0wO2ZlPHNlO2ZlKyspYWVbZmVdPWFyZ3VtZW50c1tmZV07cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKGRlKXt2YXIgdmU9Wi5nZW5lcmFsO3JldHVybiBZKGRlLl92YWx1ZSx2ZS5zdWZmaXhlcyx2ZS5zY2FsZSkuc3VmZml4fS5hcHBseSh2b2lkIDAsYWUuY29uY2F0KFtKXSkpfSxnZXRCaW5hcnlCeXRlVW5pdDpmdW5jdGlvbigpe2Zvcih2YXIgc2U9YXJndW1lbnRzLmxlbmd0aCxh''@;'; put 'put ''ZT1uZXcgQXJyYXkoc2UpLGZlPTA7ZmU8c2U7ZmUrKylhZVtmZV09YXJndW1lbnRzW2ZlXTtyZXR1cm4gZnVuY3Rpb24oZGUpe3ZhciB2ZT1aLmJpbmFyeTtyZXR1cm4gWShkZS5fdmFsdWUsdmUuc3VmZml4ZXMsdmUuc2NhbGUpLnN1ZmZpeH0uYXBwbHkodm9pZCAwLGFlLmNvbmNhdChbSl0p''@;'; put 'put ''KX0sZ2V0RGVjaW1hbEJ5dGVVbml0OmZ1bmN0aW9uKCl7Zm9yKHZhciBzZT1hcmd1bWVudHMubGVuZ3RoLGFlPW5ldyBBcnJheShzZSksZmU9MDtmZTxzZTtmZSsrKWFlW2ZlXT1hcmd1bWVudHNbZmVdO3JldHVybiBmdW5jdGlvbihkZSl7dmFyIHZlPVouZGVjaW1hbDtyZXR1cm4gWShkZS5f''@;'; put 'put ''dmFsdWUsdmUuc3VmZml4ZXMsdmUuc2NhbGUpLnN1ZmZpeH0uYXBwbHkodm9pZCAwLGFlLmNvbmNhdChbSl0pKX0sZm9ybWF0T3JEZWZhdWx0OnF9fX0seyIuL2dsb2JhbFN0YXRlIjo0LCIuL3BhcnNpbmciOjgsIi4vdmFsaWRhdGluZyI6MTB9XSw0OltmdW5jdGlvbihKZSxMLGdlKXsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIEI9SmUoIi4vZW4tVVMiKSxFPUplKCIuL3ZhbGlkYXRpbmciKSxNZT1KZSgiLi9wYXJzaW5nIiksVT17fSxRPXZvaWQgMCxaPXt9LGllPW51bGwsbGU9e307ZnVuY3Rpb24gWShOKXtRPU59ZnVuY3Rpb24gVygpe3JldHVybiBaW1FdfVUubGFuZ3VhZ2VzPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sWil9LFUuY3VycmVudExhbmd1YWdlPWZ1bmN0aW9uKCl7cmV0dXJuIFF9LFUuY3VycmVudEN1cnJlbmN5PWZ1bmN0aW9uKCl7cmV0dXJuIFcoKS5jdXJyZW5jeX0sVS5jdXJyZW50QWJicmV2aWF0aW9ucz1mdW5jdGlvbigpe3JldHVybiBXKCku''@;'; put 'put ''YWJicmV2aWF0aW9uc30sVS5jdXJyZW50RGVsaW1pdGVycz1mdW5jdGlvbigpe3JldHVybiBXKCkuZGVsaW1pdGVyc30sVS5jdXJyZW50T3JkaW5hbD1mdW5jdGlvbigpe3JldHVybiBXKCkub3JkaW5hbH0sVS5jdXJyZW50RGVmYXVsdHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2ln''@;'; put 'put ''bih7fSxXKCkuZGVmYXVsdHMsbGUpfSxVLmN1cnJlbnRPcmRpbmFsRGVmYXVsdEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LFUuY3VycmVudERlZmF1bHRzKCksVygpLm9yZGluYWxGb3JtYXQpfSxVLmN1cnJlbnRCeXRlRGVmYXVsdEZvcm1hdD1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBPYmplY3QuYXNzaWduKHt9LFUuY3VycmVudERlZmF1bHRzKCksVygpLmJ5dGVGb3JtYXQpfSxVLmN1cnJlbnRQZXJjZW50YWdlRGVmYXVsdEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LFUuY3VycmVudERlZmF1bHRzKCksVygpLnBlcmNlbnRhZ2VG''@;'; put 'put ''b3JtYXQpfSxVLmN1cnJlbnRDdXJyZW5jeURlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxVLmN1cnJlbnREZWZhdWx0cygpLFcoKS5jdXJyZW5jeUZvcm1hdCl9LFUuY3VycmVudFRpbWVEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVj''@;'; put 'put ''dC5hc3NpZ24oe30sVS5jdXJyZW50RGVmYXVsdHMoKSxXKCkudGltZUZvcm1hdCl9LFUuc2V0RGVmYXVsdHM9ZnVuY3Rpb24oTil7Tj1NZS5wYXJzZUZvcm1hdChOKSxFLnZhbGlkYXRlRm9ybWF0KE4pJiYobGU9Til9LFUuZ2V0WmVyb0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBpZX0sVS5z''@;'; put 'put ''ZXRaZXJvRm9ybWF0PWZ1bmN0aW9uKE4pe3JldHVybiBpZT0ic3RyaW5nIj09dHlwZW9mIE4/TjpudWxsfSxVLmhhc1plcm9Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PWllfSxVLmxhbmd1YWdlRGF0YT1mdW5jdGlvbihOKXtpZihOKXtpZihaW05dKXJldHVybiBaW05dO3Rocm93''@;'; put 'put ''IG5ldyBFcnJvcignVW5rbm93biB0YWcgIicuY29uY2F0KE4sJyInKSl9cmV0dXJuIFcoKX0sVS5yZWdpc3Rlckxhbmd1YWdlPWZ1bmN0aW9uKE4pe3ZhciBlZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKCFFLnZhbGlkYXRlTGFu''@;'; put 'put ''Z3VhZ2UoTikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxhbmd1YWdlIGRhdGEiKTtaW04ubGFuZ3VhZ2VUYWddPU4sZWUmJlkoTi5sYW5ndWFnZVRhZyl9LFUuc2V0TGFuZ3VhZ2U9ZnVuY3Rpb24oTil7dmFyIGVlPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFd''@;'; put 'put ''P2FyZ3VtZW50c1sxXTpCLmxhbmd1YWdlVGFnO2lmKCFaW05dKXt2YXIgcT1OLnNwbGl0KCItIilbMF0sSj1PYmplY3Qua2V5cyhaKS5maW5kKGZ1bmN0aW9uKHNlKXtyZXR1cm4gc2Uuc3BsaXQoIi0iKVswXT09PXF9KTtyZXR1cm4gWltKXT92b2lkIFkoSik6dm9pZCBZKGVlKX1ZKE4pfSxV''@;'; put 'put ''LnJlZ2lzdGVyTGFuZ3VhZ2UoQiksUT1CLmxhbmd1YWdlVGFnLEwuZXhwb3J0cz1VfSx7Ii4vZW4tVVMiOjIsIi4vcGFyc2luZyI6OCwiLi92YWxpZGF0aW5nIjoxMH1dLDU6W2Z1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtMLmV4cG9ydHM9ZnVuY3Rpb24oQil7cmV0dXJue2xvYWRM''@;'; put 'put ''YW5ndWFnZXNJbk5vZGU6ZnVuY3Rpb24oRSl7cmV0dXJuIE1lPUIsdm9pZCBFLmZvckVhY2goZnVuY3Rpb24oVSl7dmFyIFE9dm9pZCAwO3RyeXtRPUplKCIuLi9sYW5ndWFnZXMvIi5jb25jYXQoVSkpfWNhdGNoKFope2NvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBsb2FkICInLmNvbmNhdChV''@;'; put 'put ''LCciLiBObyBtYXRjaGluZyBsYW5ndWFnZSBmaWxlIGZvdW5kLicpKX1RJiZNZS5yZWdpc3Rlckxhbmd1YWdlKFEpfSk7dmFyIE1lfX19fSx7fV0sNjpbZnVuY3Rpb24oSmUsTCxnZSl7InVzZSBzdHJpY3QiO3ZhciBCPUplKCJiaWdudW1iZXIuanMiKTtmdW5jdGlvbiBFKE1lLFUsUSl7dmFy''@;'; put 'put ''IFo9bmV3IEIoTWUuX3ZhbHVlKSxpZT1VO3JldHVybiBRLmlzTnVtYnJvKFUpJiYoaWU9VS5fdmFsdWUpLGllPW5ldyBCKGllKSxNZS5fdmFsdWU9Wi5taW51cyhpZSkudG9OdW1iZXIoKSxNZX1MLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe3JldHVybnthZGQ6ZnVuY3Rpb24oVSxRKXtyZXR1cm4g''@;'; put 'put ''aWU9USxsZT1NZSxZPW5ldyBCKChaPVUpLl92YWx1ZSksVz1pZSxsZS5pc051bWJybyhpZSkmJihXPWllLl92YWx1ZSksVz1uZXcgQihXKSxaLl92YWx1ZT1ZLnBsdXMoVykudG9OdW1iZXIoKSxaO3ZhciBaLGllLGxlLFksV30sc3VidHJhY3Q6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gRShVLFEs''@;'; put 'put ''TWUpfSxtdWx0aXBseTpmdW5jdGlvbihVLFEpe3JldHVybiBpZT1RLGxlPU1lLFk9bmV3IEIoKFo9VSkuX3ZhbHVlKSxXPWllLGxlLmlzTnVtYnJvKGllKSYmKFc9aWUuX3ZhbHVlKSxXPW5ldyBCKFcpLFouX3ZhbHVlPVkudGltZXMoVykudG9OdW1iZXIoKSxaO3ZhciBaLGllLGxlLFksV30s''@;'; put 'put ''ZGl2aWRlOmZ1bmN0aW9uKFUsUSl7cmV0dXJuIGllPVEsbGU9TWUsWT1uZXcgQigoWj1VKS5fdmFsdWUpLFc9aWUsbGUuaXNOdW1icm8oaWUpJiYoVz1pZS5fdmFsdWUpLFc9bmV3IEIoVyksWi5fdmFsdWU9WS5kaXZpZGVkQnkoVykudG9OdW1iZXIoKSxaO3ZhciBaLGllLGxlLFksV30sc2V0''@;'; put 'put ''OmZ1bmN0aW9uKFUsUSl7cmV0dXJuIFo9VSxsZT1pZT1RLE1lLmlzTnVtYnJvKGllKSYmKGxlPWllLl92YWx1ZSksWi5fdmFsdWU9bGUsWjt2YXIgWixpZSxsZX0sZGlmZmVyZW5jZTpmdW5jdGlvbihVLFEpe3JldHVybiBaPVEsRShsZT0oaWU9TWUpKFUuX3ZhbHVlKSxaLGllKSxNYXRoLmFi''@;'; put 'put ''cyhsZS5fdmFsdWUpO3ZhciBaLGllLGxlfX19fSx7ImJpZ251bWJlci5qcyI6MX1dLDc6W2Z1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKGVlLHEpe2Zvcih2YXIgSj0wO0o8cS5sZW5ndGg7SisrKXt2YXIgc2U9cVtKXTtzZS5lbnVtZXJhYmxlPXNlLmVudW1lcmFi''@;'; put 'put ''bGV8fCExLHNlLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gc2UmJihzZS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLHNlLmtleSxzZSl9fXZhciBFPUplKCIuL2dsb2JhbFN0YXRlIiksTWU9SmUoIi4vdmFsaWRhdGluZyIpLFU9SmUoIi4vbG9hZGluZyIpKE4pLFE9''@;'; put 'put ''SmUoIi4vdW5mb3JtYXR0aW5nIiksWj1KZSgiLi9mb3JtYXR0aW5nIikoTiksaWU9SmUoIi4vbWFuaXB1bGF0aW5nIikoTiksbGU9SmUoIi4vcGFyc2luZyIpLFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlZShhZSl7KGZ1bmN0aW9uKGZlLGRlKXtpZighKGZlIGluc3RhbmNlb2YgZGUpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxlZSksdGhpcy5fdmFsdWU9YWV9dmFyIHEsSjtyZXR1cm4gcT1lZSwoSj1be2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcy5fdmFsdWUpfX0se2tleToiZm9y''@;'; put 'put ''bWF0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBaLmZvcm1hdCh0aGlzLDA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSl9fSx7a2V5OiJmb3JtYXRDdXJyZW5jeSIsdmFsdWU6ZnVuY3Rpb24oYWUpe3JldHVybiJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgYWUmJihhZT1sZS5wYXJzZUZvcm1hdChhZSkpLChhZT1aLmZvcm1hdE9yRGVmYXVsdChhZSxFLmN1cnJlbnRDdXJyZW5jeURlZmF1bHRGb3JtYXQoKSkpLm91dHB1dD0iY3VycmVuY3kiLFouZm9ybWF0KHRoaXMsYWUpfX0se2tleToiZm9ybWF0VGltZSIsdmFsdWU6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgYWU9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiBhZS5vdXRwdXQ9InRpbWUiLFouZm9ybWF0KHRoaXMsYWUpfX0se2tleToiYmluYXJ5Qnl0ZVVuaXRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBaLmdldEJpbmFy''@;'; put 'put ''eUJ5dGVVbml0KHRoaXMpfX0se2tleToiZGVjaW1hbEJ5dGVVbml0cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gWi5nZXREZWNpbWFsQnl0ZVVuaXQodGhpcyl9fSx7a2V5OiJieXRlVW5pdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFouZ2V0Qnl0ZVVuaXQodGhpcyl9fSx7a2V5OiJk''@;'; put 'put ''aWZmZXJlbmNlIix2YWx1ZTpmdW5jdGlvbihhZSl7cmV0dXJuIGllLmRpZmZlcmVuY2UodGhpcyxhZSl9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKGFlKXtyZXR1cm4gaWUuYWRkKHRoaXMsYWUpfX0se2tleToic3VidHJhY3QiLHZhbHVlOmZ1bmN0aW9uKGFlKXtyZXR1cm4gaWUuc3Vi''@;'; put 'put ''dHJhY3QodGhpcyxhZSl9fSx7a2V5OiJtdWx0aXBseSIsdmFsdWU6ZnVuY3Rpb24oYWUpe3JldHVybiBpZS5tdWx0aXBseSh0aGlzLGFlKX19LHtrZXk6ImRpdmlkZSIsdmFsdWU6ZnVuY3Rpb24oYWUpe3JldHVybiBpZS5kaXZpZGUodGhpcyxhZSl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGFlKXtyZXR1cm4gaWUuc2V0KHRoaXMsVyhhZSkpfX0se2tleToidmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToidmFsdWVPZiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWV9fV0pJiZCKHEucHJvdG90eXBlLEopLGVlfSgp''@;'; put 'put ''O2Z1bmN0aW9uIFcoZWUpe3ZhciBxPWVlO3JldHVybiBOLmlzTnVtYnJvKGVlKT9xPWVlLl92YWx1ZToic3RyaW5nIj09dHlwZW9mIGVlP3E9Ti51bmZvcm1hdChlZSk6aXNOYU4oZWUpJiYocT1OYU4pLHF9ZnVuY3Rpb24gTihlZSl7cmV0dXJuIG5ldyBZKFcoZWUpKX1OLnZlcnNpb249IjIu''@;'; put 'put ''MS4yIixOLmlzTnVtYnJvPWZ1bmN0aW9uKGVlKXtyZXR1cm4gZWUgaW5zdGFuY2VvZiBZfSxOLmxhbmd1YWdlPUUuY3VycmVudExhbmd1YWdlLE4ucmVnaXN0ZXJMYW5ndWFnZT1FLnJlZ2lzdGVyTGFuZ3VhZ2UsTi5zZXRMYW5ndWFnZT1FLnNldExhbmd1YWdlLE4ubGFuZ3VhZ2VzPUUubGFu''@;'; put 'put ''Z3VhZ2VzLE4ubGFuZ3VhZ2VEYXRhPUUubGFuZ3VhZ2VEYXRhLE4uemVyb0Zvcm1hdD1FLnNldFplcm9Gb3JtYXQsTi5kZWZhdWx0Rm9ybWF0PUUuY3VycmVudERlZmF1bHRzLE4uc2V0RGVmYXVsdHM9RS5zZXREZWZhdWx0cyxOLmRlZmF1bHRDdXJyZW5jeUZvcm1hdD1FLmN1cnJlbnRDdXJy''@;'; put 'put ''ZW5jeURlZmF1bHRGb3JtYXQsTi52YWxpZGF0ZT1NZS52YWxpZGF0ZSxOLmxvYWRMYW5ndWFnZXNJbk5vZGU9VS5sb2FkTGFuZ3VhZ2VzSW5Ob2RlLE4udW5mb3JtYXQ9US51bmZvcm1hdCxMLmV4cG9ydHM9Tn0seyIuL2Zvcm1hdHRpbmciOjMsIi4vZ2xvYmFsU3RhdGUiOjQsIi4vbG9hZGlu''@;'; put 'put ''ZyI6NSwiLi9tYW5pcHVsYXRpbmciOjYsIi4vcGFyc2luZyI6OCwiLi91bmZvcm1hdHRpbmciOjksIi4vdmFsaWRhdGluZyI6MTB9XSw4OltmdW5jdGlvbihKZSxMLGdlKXsidXNlIHN0cmljdCI7TC5leHBvcnRzPXtwYXJzZUZvcm1hdDpmdW5jdGlvbihCKXt2YXIgRSxNZSxVLFEsWixpZSxs''@;'; put 'put ''ZSxZLFcsTixlZSxxLEosc2UsYWUsZmUsZGUsdmUsQWUsa2UsU2U9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiJzdHJpbmciIT10eXBlb2YgQj9COihNZT1TZSxaPVNlLGZ1bmN0aW9uKEllLFRlKXtpZigtMT09PUllLmlu''@;'; put 'put ''ZGV4T2YoIiQiKSl7aWYoLTE9PT1JZS5pbmRleE9mKCIlIikpcmV0dXJuLTEhPT1JZS5pbmRleE9mKCJiZCIpPyhUZS5vdXRwdXQ9ImJ5dGUiLFRlLmJhc2U9ImdlbmVyYWwiKTotMSE9PUllLmluZGV4T2YoImIiKT8oVGUub3V0cHV0PSJieXRlIixUZS5iYXNlPSJiaW5hcnkiKTotMSE9PUll''@;'; put 'put ''LmluZGV4T2YoImQiKT8oVGUub3V0cHV0PSJieXRlIixUZS5iYXNlPSJkZWNpbWFsIik6LTE9PT1JZS5pbmRleE9mKCI6Iik/LTEhPT1JZS5pbmRleE9mKCJvIikmJihUZS5vdXRwdXQ9Im9yZGluYWwiKTpUZS5vdXRwdXQ9InRpbWUiO1RlLm91dHB1dD0icGVyY2VudCJ9ZWxzZSBUZS5vdXRw''@;'; put 'put ''dXQ9ImN1cnJlbmN5In0oQj0oaWU9KFE9Qj0oVT0oRT1CKS5tYXRjaCgvXnsoW159XSopfS8pKT8oTWUucHJlZml4PVVbMV0sRS5zbGljZShVWzBdLmxlbmd0aCkpOkUpLm1hdGNoKC97KFtefV0qKX0kLykpPyhaLnBvc3RmaXg9aWVbMV0sUS5zbGljZSgwLC1pZVswXS5sZW5ndGgpKTpRLFNl''@;'; put 'put ''KSxsZT1TZSwoWT1CLm1hdGNoKC9bMS05XStbMC05XSovKSkmJihsZS50b3RhbExlbmd0aD0rWVswXSksVz1TZSwoTj1CLnNwbGl0KCIuIilbMF0ubWF0Y2goLzArLykpJiYoVy5jaGFyYWN0ZXJpc3RpYz1OWzBdLmxlbmd0aCksZnVuY3Rpb24oSWUsVGUpe2lmKC0xIT09SWUuaW5kZXhPZigi''@;'; put 'put ''LiIpKXt2YXIgRWU9SWUuc3BsaXQoIi4iKVswXTtUZS5vcHRpb25hbENoYXJhY3RlcmlzdGljPS0xPT09RWUuaW5kZXhPZigiMCIpfX0oQixTZSksZWU9U2UsLTEhPT1CLmluZGV4T2YoImEiKSYmKGVlLmF2ZXJhZ2U9ITApLEo9U2UsLTEhPT0ocT1CKS5pbmRleE9mKCJLIik/Si5mb3JjZUF2''@;'; put 'put ''ZXJhZ2U9InRob3VzYW5kIjotMSE9PXEuaW5kZXhPZigiTSIpP0ouZm9yY2VBdmVyYWdlPSJtaWxsaW9uIjotMSE9PXEuaW5kZXhPZigiQiIpP0ouZm9yY2VBdmVyYWdlPSJiaWxsaW9uIjotMSE9PXEuaW5kZXhPZigiVCIpJiYoSi5mb3JjZUF2ZXJhZ2U9InRyaWxsaW9uIiksZnVuY3Rpb24o''@;'; put 'put ''SWUsVGUpe3ZhciBFZT1JZS5zcGxpdCgiLiIpWzFdO2lmKEVlKXt2YXIgaGU9RWUubWF0Y2goLzArLyk7aGUmJihUZS5tYW50aXNzYT1oZVswXS5sZW5ndGgpfX0oQixTZSksYWU9U2UsKHNlPUIpLm1hdGNoKC9cW1wuXS8pP2FlLm9wdGlvbmFsTWFudGlzc2E9ITA6c2UubWF0Y2goL1wuLykm''@;'; put 'put ''JihhZS5vcHRpb25hbE1hbnRpc3NhPSExKSxmZT1TZSwtMSE9PUIuaW5kZXhPZigiLCIpJiYoZmUudGhvdXNhbmRTZXBhcmF0ZWQ9ITApLGRlPVNlLC0xIT09Qi5pbmRleE9mKCIgIikmJihkZS5zcGFjZVNlcGFyYXRlZD0hMCksQWU9U2UsKHZlPUIpLm1hdGNoKC9eXCs/XChbXildKlwpJC8p''@;'; put 'put ''JiYoQWUubmVnYXRpdmU9InBhcmVudGhlc2lzIiksdmUubWF0Y2goL15cKz8tLykmJihBZS5uZWdhdGl2ZT0ic2lnbiIpLGtlPVNlLEIubWF0Y2goL15cKy8pJiYoa2UuZm9yY2VTaWduPSEwKSxTZSl9fX0se31dLDk6W2Z1bmN0aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj1be2tl''@;'; put 'put ''eToiWmlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw3KX0se2tleToiWkIiLGZhY3RvcjpNYXRoLnBvdygxZTMsNyl9LHtrZXk6IllpQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsOCl9LHtrZXk6IllCIixmYWN0b3I6TWF0aC5wb3coMWUzLDgpfSx7a2V5OiJUaUIiLGZhY3RvcjpNYXRoLnBvdygx''@;'; put 'put ''MDI0LDQpfSx7a2V5OiJUQiIsZmFjdG9yOk1hdGgucG93KDFlMyw0KX0se2tleToiUGlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw1KX0se2tleToiUEIiLGZhY3RvcjpNYXRoLnBvdygxZTMsNSl9LHtrZXk6Ik1pQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsMil9LHtrZXk6Ik1CIixmYWN0b3I6''@;'; put 'put ''TWF0aC5wb3coMWUzLDIpfSx7a2V5OiJLaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDEpfSx7a2V5OiJLQiIsZmFjdG9yOk1hdGgucG93KDFlMywxKX0se2tleToiR2lCIixmYWN0b3I6TWF0aC5wb3coMTAyNCwzKX0se2tleToiR0IiLGZhY3RvcjpNYXRoLnBvdygxZTMsMyl9LHtrZXk6IkVp''@;'; put 'put ''QiIsZmFjdG9yOk1hdGgucG93KDEwMjQsNil9LHtrZXk6IkVCIixmYWN0b3I6TWF0aC5wb3coMWUzLDYpfSx7a2V5OiJCIixmYWN0b3I6MX1dO2Z1bmN0aW9uIEUoVSl7cmV0dXJuIFUucmVwbGFjZSgvWy0vXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfUwuZXhwb3J0cz17dW5mb3JtYXQ6''@;'; put 'put ''ZnVuY3Rpb24oVSxRKXt2YXIgWixZPUplKCIuL2dsb2JhbFN0YXRlIiksVz1ZLmN1cnJlbnREZWxpbWl0ZXJzKCksTj1ZLmN1cnJlbnRDdXJyZW5jeSgpLnN5bWJvbCxlZT1ZLmN1cnJlbnRPcmRpbmFsKCkscT1ZLmdldFplcm9Gb3JtYXQoKSxKPVkuY3VycmVudEFiYnJldmlhdGlvbnMoKSxz''@;'; put 'put ''ZT12b2lkIDA7aWYoInN0cmluZyI9PXR5cGVvZiBVKXNlPWZ1bmN0aW9uKGFlLGZlKXtpZighYWUuaW5kZXhPZigiOiIpfHwiOiI9PT1mZS50aG91c2FuZHMpcmV0dXJuITE7dmFyIGRlPWFlLnNwbGl0KCI6Iik7aWYoMyE9PWRlLmxlbmd0aClyZXR1cm4hMTt2YXIgQWU9K2RlWzFdLGtlPStk''@;'; put 'put ''ZVsyXTtyZXR1cm4haXNOYU4oK2RlWzBdKSYmIWlzTmFOKEFlKSYmIWlzTmFOKGtlKX0oVSxXKT8rKFo9VS5zcGxpdCgiOiIpKVsyXSs2MCorWlsxXSszNjAwKitaWzBdOmZ1bmN0aW9uIE1lKFUsUSl7dmFyIFo9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJn''@;'; put 'put ''dW1lbnRzWzJdOiIiLGllPTM8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbM106dm9pZCAwLGxlPTQ8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNF06dm9pZCAwLFk9NTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s1XTp2b2lkIDAsVz02PGFyZ3VtZW50cy5sZW5ndGg/YXJndW1l''@;'; put 'put ''bnRzWzZdOnZvaWQgMDtpZigiIiE9PVUpcmV0dXJuIFU9PT1sZT8wOmZ1bmN0aW9uIE4oZWUscSl7dmFyIEo9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiIiLHNlPTM8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbM106dm9pZCAwLGFl''@;'; put 'put ''PTQ8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNF06dm9pZCAwLGZlPTU8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNV06dm9pZCAwLGRlPTY8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNl06dm9pZCAwO2lmKCFpc05hTigrZWUpKXJldHVybitlZTt2YXIgdmU9IiIsQWU9ZWUu''@;'; put 'put ''cmVwbGFjZSgvKF5bXihdKilcKCguKilcKShbXildKiQpLywiJDEkMiQzIik7aWYoQWUhPT1lZSlyZXR1cm4tMSpOKEFlLHEsSixzZSxhZSxmZSxkZSk7Zm9yKHZhciBrZT0wO2tlPEIubGVuZ3RoO2tlKyspe3ZhciBTZT1CW2tlXTtpZigodmU9ZWUucmVwbGFjZShTZS5rZXksIiIpKSE9PWVl''@;'; put 'put ''KXJldHVybiBOKHZlLHEsSixzZSxhZSxmZSxkZSkqU2UuZmFjdG9yfWlmKCh2ZT1lZS5yZXBsYWNlKCIlIiwiIikpIT09ZWUpcmV0dXJuIE4odmUscSxKLHNlLGFlLGZlLGRlKS8xMDA7dmFyIEllPXBhcnNlRmxvYXQoZWUpO2lmKCFpc05hTihJZSkpe3ZhciBUZT1zZShJZSk7aWYoVGUmJiIu''@;'; put 'put ''IiE9PVRlJiYodmU9ZWUucmVwbGFjZShuZXcgUmVnRXhwKCIiLmNvbmNhdChFKFRlKSwiJCIpKSwiIikpIT09ZWUpcmV0dXJuIE4odmUscSxKLHNlLGFlLGZlLGRlKTt2YXIgRWU9e307T2JqZWN0LmtleXMoZmUpLmZvckVhY2goZnVuY3Rpb24oUCl7RWVbZmVbUF1dPVB9KTtmb3IodmFyIGhl''@;'; put 'put ''PU9iamVjdC5rZXlzKEVlKS5zb3J0KCkucmV2ZXJzZSgpLE89aGUubGVuZ3RoLHo9MDt6PE87eisrKXt2YXIgbmU9aGVbel0sdGU9RWVbbmVdO2lmKCh2ZT1lZS5yZXBsYWNlKG5lLCIiKSkhPT1lZSl7dmFyIHg9dm9pZCAwO3N3aXRjaCh0ZSl7Y2FzZSJ0aG91c2FuZCI6eD1NYXRoLnBvdygx''@;'; put 'put ''MCwzKTticmVhaztjYXNlIm1pbGxpb24iOng9TWF0aC5wb3coMTAsNik7YnJlYWs7Y2FzZSJiaWxsaW9uIjp4PU1hdGgucG93KDEwLDkpO2JyZWFrO2Nhc2UidHJpbGxpb24iOng9TWF0aC5wb3coMTAsMTIpfXJldHVybiBOKHZlLHEsSixzZSxhZSxmZSxkZSkqeH19fX0oZnVuY3Rpb24oTixl''@;'; put 'put ''ZSl7dmFyIEo9Ti5yZXBsYWNlKDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiIiwiIik7cmV0dXJuKEo9Si5yZXBsYWNlKG5ldyBSZWdFeHAoIihbMC05XSkiLmNvbmNhdChFKGVlLnRob3VzYW5kcyksIihbMC05XSkiKSwiZyIpLCIkMSQy''@;'; put 'put ''IikpLnJlcGxhY2UoZWUuZGVjaW1hbCwiLiIpfShVLFEsWiksUSxaLGllLGxlLFksVyl9KFUsVyxOLGVlLHEsSixRKTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgVSlyZXR1cm47c2U9VX1pZih2b2lkIDAhPT1zZSlyZXR1cm4gc2V9fX0seyIuL2dsb2JhbFN0YXRlIjo0fV0sMTA6W2Z1bmN0''@;'; put 'put ''aW9uKEplLEwsZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKFcpe3JldHVybiBmdW5jdGlvbihOKXtpZihBcnJheS5pc0FycmF5KE4pKXtmb3IodmFyIGVlPTAscT1uZXcgQXJyYXkoTi5sZW5ndGgpO2VlPE4ubGVuZ3RoO2VlKyspcVtlZV09TltlZV07cmV0dXJuIHF9fShXKXx8ZnVuY3Rp''@;'; put 'put ''b24oTil7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChOKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTikpcmV0dXJuIEFycmF5LmZyb20oTil9KFcpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0''@;'; put 'put ''ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gRShXKXtyZXR1cm4oRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihOKXtyZXR1cm4gdHlwZW9mIE59OmZ1bmN0aW9uKE4p''@;'; put 'put ''e3JldHVybiBOJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZOLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZOIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTn0pKFcpfXZhciBNZT1KZSgiLi91bmZvcm1hdHRpbmciKSxVPS9eW2Etel17MiwzfSgtW2EtekEtWl17NH0pPygt''@;'; put 'put ''KFtBLVpdezJ9fFswLTldezN9KSk/JC8sUT17b3V0cHV0Ont0eXBlOiJzdHJpbmciLHZhbGlkVmFsdWVzOlsiY3VycmVuY3kiLCJwZXJjZW50IiwiYnl0ZSIsInRpbWUiLCJvcmRpbmFsIiwibnVtYmVyIl19LGJhc2U6e3R5cGU6InN0cmluZyIsdmFsaWRWYWx1ZXM6WyJkZWNpbWFsIiwiYmlu''@;'; put 'put ''YXJ5IiwiZ2VuZXJhbCJdLHJlc3RyaWN0aW9uOmZ1bmN0aW9uKFcsTil7cmV0dXJuImJ5dGUiPT09Ti5vdXRwdXR9LG1lc3NhZ2U6ImBiYXNlYCBtdXN0IGJlIHByb3ZpZGVkIG9ubHkgd2hlbiB0aGUgb3V0cHV0IGlzIGBieXRlYCIsbWFuZGF0b3J5OmZ1bmN0aW9uKFcpe3JldHVybiJieXRl''@;'; put 'put ''Ij09PVcub3V0cHV0fX0sY2hhcmFjdGVyaXN0aWM6e3R5cGU6Im51bWJlciIscmVzdHJpY3Rpb246ZnVuY3Rpb24oVyl7cmV0dXJuIDA8PVd9LG1lc3NhZ2U6InZhbHVlIG11c3QgYmUgcG9zaXRpdmUifSxwcmVmaXg6InN0cmluZyIscG9zdGZpeDoic3RyaW5nIixmb3JjZUF2ZXJhZ2U6e3R5''@;'; put 'put ''cGU6InN0cmluZyIsdmFsaWRWYWx1ZXM6WyJ0cmlsbGlvbiIsImJpbGxpb24iLCJtaWxsaW9uIiwidGhvdXNhbmQiXX0sYXZlcmFnZToiYm9vbGVhbiIsY3VycmVuY3lQb3NpdGlvbjp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbInByZWZpeCIsImluZml4IiwicG9zdGZpeCJdfSxjdXJy''@;'; put 'put ''ZW5jeVN5bWJvbDoic3RyaW5nIix0b3RhbExlbmd0aDp7dHlwZToibnVtYmVyIixyZXN0cmljdGlvbnM6W3tyZXN0cmljdGlvbjpmdW5jdGlvbihXKXtyZXR1cm4gMDw9V30sbWVzc2FnZToidmFsdWUgbXVzdCBiZSBwb3NpdGl2ZSJ9LHtyZXN0cmljdGlvbjpmdW5jdGlvbihXLE4pe3JldHVy''@;'; put 'put ''biFOLmV4cG9uZW50aWFsfSxtZXNzYWdlOiJgdG90YWxMZW5ndGhgIGlzIGluY29tcGF0aWJsZSB3aXRoIGBleHBvbmVudGlhbGAifV19LG1hbnRpc3NhOnt0eXBlOiJudW1iZXIiLHJlc3RyaWN0aW9uOmZ1bmN0aW9uKFcpe3JldHVybiAwPD1XfSxtZXNzYWdlOiJ2YWx1ZSBtdXN0IGJlIHBv''@;'; put 'put ''c2l0aXZlIn0sb3B0aW9uYWxNYW50aXNzYToiYm9vbGVhbiIsdHJpbU1hbnRpc3NhOiJib29sZWFuIixvcHRpb25hbENoYXJhY3RlcmlzdGljOiJib29sZWFuIix0aG91c2FuZFNlcGFyYXRlZDoiYm9vbGVhbiIsc3BhY2VTZXBhcmF0ZWQ6ImJvb2xlYW4iLGFiYnJldmlhdGlvbnM6e3R5cGU6''@;'; put 'put ''Im9iamVjdCIsY2hpbGRyZW46e3Rob3VzYW5kOiJzdHJpbmciLG1pbGxpb246InN0cmluZyIsYmlsbGlvbjoic3RyaW5nIix0cmlsbGlvbjoic3RyaW5nIn19LG5lZ2F0aXZlOnt0eXBlOiJzdHJpbmciLHZhbGlkVmFsdWVzOlsic2lnbiIsInBhcmVudGhlc2lzIl19LGZvcmNlU2lnbjoiYm9v''@;'; put 'put ''bGVhbiIsZXhwb25lbnRpYWw6e3R5cGU6ImJvb2xlYW4ifSxwcmVmaXhTeW1ib2w6e3R5cGU6ImJvb2xlYW4iLHJlc3RyaWN0aW9uOmZ1bmN0aW9uKFcsTil7cmV0dXJuInBlcmNlbnQiPT09Ti5vdXRwdXR9LG1lc3NhZ2U6ImBwcmVmaXhTeW1ib2xgIGNhbiBiZSBwcm92aWRlZCBvbmx5IHdo''@;'; put 'put ''ZW4gdGhlIG91dHB1dCBpcyBgcGVyY2VudGAifX0sWj17bGFuZ3VhZ2VUYWc6e3R5cGU6InN0cmluZyIsbWFuZGF0b3J5OiEwLHJlc3RyaWN0aW9uOmZ1bmN0aW9uKFcpe3JldHVybiBXLm1hdGNoKFUpfSxtZXNzYWdlOiJ0aGUgbGFuZ3VhZ2UgdGFnIG11c3QgZm9sbG93IHRoZSBCQ1AgNDcg''@;'; put 'put ''c3BlY2lmaWNhdGlvbiAoc2VlIGh0dHBzOi8vdG9vbHMuaWVmdC5vcmcvaHRtbC9iY3A0NykifSxkZWxpbWl0ZXJzOnt0eXBlOiJvYmplY3QiLGNoaWxkcmVuOnt0aG91c2FuZHM6InN0cmluZyIsZGVjaW1hbDoic3RyaW5nIix0aG91c2FuZHNTaXplOiJudW1iZXIifSxtYW5kYXRvcnk6ITB9''@;'; put 'put ''LGFiYnJldmlhdGlvbnM6e3R5cGU6Im9iamVjdCIsY2hpbGRyZW46e3Rob3VzYW5kOnt0eXBlOiJzdHJpbmciLG1hbmRhdG9yeTohMH0sbWlsbGlvbjp7dHlwZToic3RyaW5nIixtYW5kYXRvcnk6ITB9LGJpbGxpb246e3R5cGU6InN0cmluZyIsbWFuZGF0b3J5OiEwfSx0cmlsbGlvbjp7dHlw''@;'; put 'put ''ZToic3RyaW5nIixtYW5kYXRvcnk6ITB9fSxtYW5kYXRvcnk6ITB9LHNwYWNlU2VwYXJhdGVkOiJib29sZWFuIixvcmRpbmFsOnt0eXBlOiJmdW5jdGlvbiIsbWFuZGF0b3J5OiEwfSxjdXJyZW5jeTp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7c3ltYm9sOiJzdHJpbmciLHBvc2l0aW9uOiJz''@;'; put 'put ''dHJpbmciLGNvZGU6InN0cmluZyJ9LG1hbmRhdG9yeTohMH0sZGVmYXVsdHM6ImZvcm1hdCIsb3JkaW5hbEZvcm1hdDoiZm9ybWF0IixieXRlRm9ybWF0OiJmb3JtYXQiLHBlcmNlbnRhZ2VGb3JtYXQ6ImZvcm1hdCIsY3VycmVuY3lGb3JtYXQ6ImZvcm1hdCIsdGltZURlZmF1bHRzOiJmb3Jt''@;'; put 'put ''YXQiLGZvcm1hdHM6e3R5cGU6Im9iamVjdCIsY2hpbGRyZW46e2ZvdXJEaWdpdHM6e3R5cGU6ImZvcm1hdCIsbWFuZGF0b3J5OiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOnt0eXBlOiJmb3JtYXQiLG1hbmRhdG9yeTohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e3R5cGU6ImZv''@;'; put 'put ''cm1hdCIsbWFuZGF0b3J5OiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e3R5cGU6ImZvcm1hdCIsbWFuZGF0b3J5OiEwfX19fTtmdW5jdGlvbiBpZShXKXtyZXR1cm4hIU1lLnVuZm9ybWF0KFcpfWZ1bmN0aW9uIGxlKFcsTixlZSl7dmFyIHE9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbM10mJmFyZ3VtZW50c1szXSxKPU9iamVjdC5rZXlzKFcpLm1hcChmdW5jdGlvbihzZSl7aWYoIU5bc2VdKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdChlZSwiIEludmFsaWQga2V5OiAiKS5jb25jYXQoc2UpKSwhMTt2YXIgYWU9V1tzZV0sZmU9TltzZV07aWYoInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBmZSYmKGZlPXt0eXBlOmZlfSksImZvcm1hdCI9PT1mZS50eXBlKXtpZighbGUoYWUsUSwiW1ZhbGlkYXRlICIuY29uY2F0KHNlLCJdIiksITApKXJldHVybiExfWVsc2UgaWYoRShhZSkhPT1mZS50eXBlKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdChlZSwi''@;'; put 'put ''ICIpLmNvbmNhdChzZSwnIHR5cGUgbWlzbWF0Y2hlZDogIicpLmNvbmNhdChmZS50eXBlLCciIGV4cGVjdGVkLCAiJykuY29uY2F0KEUoYWUpLCciIHByb3ZpZGVkJykpLCExO2lmKGZlLnJlc3RyaWN0aW9ucyYmZmUucmVzdHJpY3Rpb25zLmxlbmd0aClmb3IodmFyIGRlPWZlLnJlc3RyaWN0''@;'; put 'put ''aW9ucy5sZW5ndGgsdmU9MDt2ZTxkZTt2ZSsrKXt2YXIgQWU9ZmUucmVzdHJpY3Rpb25zW3ZlXSxTZT1BZS5tZXNzYWdlO2lmKCEoMCxBZS5yZXN0cmljdGlvbikoYWUsVykpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KGVlLCIgIikuY29uY2F0KHNlLCIgaW52YWxpZCB2YWx1ZTog''@;'; put 'put ''IikuY29uY2F0KFNlKSksITF9cmV0dXJuIGZlLnJlc3RyaWN0aW9uJiYhZmUucmVzdHJpY3Rpb24oYWUsVyk/KGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KGVlLCIgIikuY29uY2F0KHNlLCIgaW52YWxpZCB2YWx1ZTogIikuY29uY2F0KGZlLm1lc3NhZ2UpKSwhMSk6ZmUudmFsaWRWYWx1ZXMm''@;'; put 'put ''Ji0xPT09ZmUudmFsaWRWYWx1ZXMuaW5kZXhPZihhZSk/KGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KGVlLCIgIikuY29uY2F0KHNlLCIgaW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhbW9uZyAiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoZmUudmFsaWRWYWx1ZXMpLCcsICInKS5jb25jYXQoYWUs''@;'; put 'put ''JyIgcHJvdmlkZWQnKSksITEpOiEoZmUuY2hpbGRyZW4mJiFsZShhZSxmZS5jaGlsZHJlbiwiW1ZhbGlkYXRlICIuY29uY2F0KHNlLCJdIikpKX0pO3JldHVybiBxfHxKLnB1c2guYXBwbHkoSixCKE9iamVjdC5rZXlzKE4pLm1hcChmdW5jdGlvbihzZSl7dmFyIGFlPU5bc2VdO2lmKCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgYWUmJihhZT17dHlwZTphZX0pLGFlLm1hbmRhdG9yeSl7dmFyIGZlPWFlLm1hbmRhdG9yeTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZmUmJihmZT1mZShXKSksZmUmJnZvaWQgMD09PVdbc2VdKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdChlZSwnIE1pc3Npbmcg''@;'; put 'put ''bWFuZGF0b3J5IGtleSAiJykuY29uY2F0KHNlLCciJykpLCExfXJldHVybiEwfSkpKSxKLnJlZHVjZShmdW5jdGlvbihzZSxhZSl7cmV0dXJuIHNlJiZhZX0sITApfWZ1bmN0aW9uIFkoVyl7cmV0dXJuIGxlKFcsUSwiW1ZhbGlkYXRlIGZvcm1hdF0iKX1MLmV4cG9ydHM9e3ZhbGlkYXRlOmZ1''@;'; put 'put ''bmN0aW9uKFcsTil7dmFyIGVlPWllKFcpLHE9WShOKTtyZXR1cm4gZWUmJnF9LHZhbGlkYXRlRm9ybWF0OlksdmFsaWRhdGVJbnB1dDppZSx2YWxpZGF0ZUxhbmd1YWdlOmZ1bmN0aW9uKFcpe3JldHVybiBsZShXLFosIltWYWxpZGF0ZSBsYW5ndWFnZV0iKX19fSx7Ii4vdW5mb3JtYXR0aW5n''@;'; put 'put ''Ijo5fV19LHt9LFs3XSkoNyl9LDM5NjUwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgxODQ0NCkuQnVmZmVyLEI9TCg2NTY4NSkuVHJhbnNmb3JtO2Z1bmN0aW9uIFUoUSl7Qi5jYWxsKHRoaXMpLHRoaXMuX2Jsb2NrPWdlLmFsbG9jVW5zYWZlKFEpLHRoaXMuX2Jsb2NrU2l6''@;'; put 'put ''ZT1RLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9TCg4Mzg5NCkoVSxCKSxVLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKFEsWixpZSl7dmFyIGxlPW51bGw7dHJ5e3RoaXMudXBkYXRlKFEsWil9Y2F0Y2goWSl7bGU9''@;'; put 'put ''WX1pZShsZSl9LFUucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihRKXt2YXIgWj1udWxsO3RyeXt0aGlzLnB1c2godGhpcy5kaWdlc3QoKSl9Y2F0Y2goaWUpe1o9aWV9UShaKX0sVS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFEsWil7aWYoZnVuY3Rpb24gTWUoUSxaKXtpZighZ2UuaXNC''@;'; put 'put ''dWZmZXIoUSkmJiJzdHJpbmciIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKForIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyIil9KFEsIkRhdGEiKSx0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTtnZS5pc0J1ZmZlcihR''@;'; put 'put ''KXx8KFE9Z2UuZnJvbShRLFopKTtmb3IodmFyIGllPXRoaXMuX2Jsb2NrLGxlPTA7dGhpcy5fYmxvY2tPZmZzZXQrUS5sZW5ndGgtbGU+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgWT10aGlzLl9ibG9ja09mZnNldDtZPHRoaXMuX2Jsb2NrU2l6ZTspaWVbWSsrXT1RW2xlKytdO3RoaXMu''@;'; put 'put ''X3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTB9Zm9yKDtsZTxRLmxlbmd0aDspaWVbdGhpcy5fYmxvY2tPZmZzZXQrK109UVtsZSsrXTtmb3IodmFyIFc9MCxOPTgqUS5sZW5ndGg7Tj4wOysrVyl0aGlzLl9sZW5ndGhbV10rPU4sKE49dGhpcy5fbGVuZ3RoW1ddLzQyOTQ5NjcyOTZ8MCk+''@;'; put 'put ''MCYmKHRoaXMuX2xlbmd0aFtXXS09NDI5NDk2NzI5NipOKTtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sVS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFEpe2lmKHRoaXMu''@;'; put 'put ''X2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3RoaXMuX2ZpbmFsaXplZD0hMDt2YXIgWj10aGlzLl9kaWdlc3QoKTt2b2lkIDAhPT1RJiYoWj1aLnRvU3RyaW5nKFEpKSx0aGlzLl9ibG9jay5maWxsKDApLHRoaXMuX2Jsb2NrT2Zmc2V0PTA7Zm9y''@;'; put 'put ''KHZhciBpZT0wO2llPDQ7KytpZSl0aGlzLl9sZW5ndGhbaWVdPTA7cmV0dXJuIFp9LFUucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl9kaWdlc3QgaXMgbm90IGltcGxlbWVudGVkIil9LFhlLmV4cG9ydHM9VX0sMTg0NDQ6KFhlLEplLEwpPT57dmFyIGdl''@;'; put 'put ''PUwoOTMxNzIpLEI9Z2UuQnVmZmVyO2Z1bmN0aW9uIEUoVSxRKXtmb3IodmFyIFogaW4gVSlRW1pdPVVbWl19ZnVuY3Rpb24gTWUoVSxRLFope3JldHVybiBCKFUsUSxaKX1CLmZyb20mJkIuYWxsb2MmJkIuYWxsb2NVbnNhZmUmJkIuYWxsb2NVbnNhZmVTbG93P1hlLmV4cG9ydHM9Z2U6KEUo''@;'; put 'put ''Z2UsSmUpLEplLkJ1ZmZlcj1NZSksTWUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQi5wcm90b3R5cGUpLEUoQixNZSksTWUuZnJvbT1mdW5jdGlvbihVLFEsWil7aWYoIm51bWJlciI9PXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVy''@;'; put 'put ''Iik7cmV0dXJuIEIoVSxRLFopfSxNZS5hbGxvYz1mdW5jdGlvbihVLFEsWil7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgaWU9QihVKTtyZXR1cm4gdm9pZCAwIT09UT8ic3RyaW5nIj09dHlwZW9mIFo/''@;'; put 'put ''aWUuZmlsbChRLFopOmllLmZpbGwoUSk6aWUuZmlsbCgwKSxpZX0sTWUuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oVSl7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gQihVKX0sTWUuYWxsb2NVbnNhZmVT''@;'; put 'put ''bG93PWZ1bmN0aW9uKFUpe2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGdlLlNsb3dCdWZmZXIoVSl9fSwzNzA4NDooWGUsSmUsTCk9Pnt2YXIgZ2U9SmU7Z2UudXRpbHM9TCgyOTI5OSksZ2UuY29t''@;'; put 'put ''bW9uPUwoMzM4MDApLGdlLnNoYT1MKDU0OTYyKSxnZS5yaXBlbWQ9TCg5OTQ1OCksZ2UuaG1hYz1MKDEyMTk0KSxnZS5zaGExPWdlLnNoYS5zaGExLGdlLnNoYTI1Nj1nZS5zaGEuc2hhMjU2LGdlLnNoYTIyND1nZS5zaGEuc2hhMjI0LGdlLnNoYTM4ND1nZS5zaGEuc2hhMzg0LGdlLnNoYTUx''@;'; put 'put ''Mj1nZS5zaGEuc2hhNTEyLGdlLnJpcGVtZDE2MD1nZS5yaXBlbWQucmlwZW1kMTYwfSwzMzgwMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjkyOTkpLEI9TCgzMjM5MSk7ZnVuY3Rpb24gRSgpe3RoaXMucGVuZGluZz1udWxsLHRoaXMucGVuZGluZ1RvdGFsPTAsdGhpcy5i''@;'; put 'put ''bG9ja1NpemU9dGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemUsdGhpcy5vdXRTaXplPXRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZSx0aGlzLmhtYWNTdHJlbmd0aD10aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aCx0aGlzLnBhZExlbmd0aD10aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aC84''@;'; put 'put ''LHRoaXMuZW5kaWFuPSJiaWciLHRoaXMuX2RlbHRhOD10aGlzLmJsb2NrU2l6ZS84LHRoaXMuX2RlbHRhMzI9dGhpcy5ibG9ja1NpemUvMzJ9SmUuQmxvY2tIYXNoPUUsRS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFUsUSl7aWYoVT1nZS50b0FycmF5KFUsUSksdGhpcy5wZW5kaW5nPXRo''@;'; put 'put ''aXMucGVuZGluZz90aGlzLnBlbmRpbmcuY29uY2F0KFUpOlUsdGhpcy5wZW5kaW5nVG90YWwrPVUubGVuZ3RoLHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7dmFyIFo9KFU9dGhpcy5wZW5kaW5nKS5sZW5ndGgldGhpcy5fZGVsdGE4O3RoaXMucGVuZGluZz1VLnNsaWNlKFUu''@;'; put 'put ''bGVuZ3RoLVosVS5sZW5ndGgpLDA9PT10aGlzLnBlbmRpbmcubGVuZ3RoJiYodGhpcy5wZW5kaW5nPW51bGwpLFU9Z2Uuam9pbjMyKFUsMCxVLmxlbmd0aC1aLHRoaXMuZW5kaWFuKTtmb3IodmFyIGllPTA7aWU8VS5sZW5ndGg7aWUrPXRoaXMuX2RlbHRhMzIpdGhpcy5fdXBkYXRlKFUsaWUs''@;'; put 'put ''aWUrdGhpcy5fZGVsdGEzMil9cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihVKXtyZXR1cm4gdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpLEIobnVsbD09PXRoaXMucGVuZGluZyksdGhpcy5fZGlnZXN0KFUpfSxFLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IFU9dGhpcy5wZW5kaW5nVG90YWwsUT10aGlzLl9kZWx0YTgsWj1RLShVK3RoaXMucGFkTGVuZ3RoKSVRLGllPW5ldyBBcnJheShaK3RoaXMucGFkTGVuZ3RoKTtpZVswXT0xMjg7Zm9yKHZhciBsZT0xO2xlPFo7bGUrKylpZVtsZV09MDtpZihVPDw9MywiYmlnIj09PXRoaXMuZW5kaWFuKXtm''@;'; put 'put ''b3IodmFyIFk9ODtZPHRoaXMucGFkTGVuZ3RoO1krKylpZVtsZSsrXT0wO2llW2xlKytdPTAsaWVbbGUrK109MCxpZVtsZSsrXT0wLGllW2xlKytdPTAsaWVbbGUrK109VT4+PjI0JjI1NSxpZVtsZSsrXT1VPj4+MTYmMjU1LGllW2xlKytdPVU+Pj44JjI1NSxpZVtsZSsrXT0yNTUmVX1lbHNl''@;'; put 'put ''IGZvcihpZVtsZSsrXT0yNTUmVSxpZVtsZSsrXT1VPj4+OCYyNTUsaWVbbGUrK109VT4+PjE2JjI1NSxpZVtsZSsrXT1VPj4+MjQmMjU1LGllW2xlKytdPTAsaWVbbGUrK109MCxpZVtsZSsrXT0wLGllW2xlKytdPTAsWT04O1k8dGhpcy5wYWRMZW5ndGg7WSsrKWllW2xlKytdPTA7cmV0dXJu''@;'; put 'put ''IGllfX0sMTIxOTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDI5Mjk5KSxCPUwoMzIzOTEpO2Z1bmN0aW9uIEUoTWUsVSxRKXtpZighKHRoaXMgaW5zdGFuY2VvZiBFKSlyZXR1cm4gbmV3IEUoTWUsVSxRKTt0aGlzLkhhc2g9TWUsdGhpcy5ibG9ja1NpemU9TWUuYmxvY2tT''@;'; put 'put ''aXplLzgsdGhpcy5vdXRTaXplPU1lLm91dFNpemUvOCx0aGlzLmlubmVyPW51bGwsdGhpcy5vdXRlcj1udWxsLHRoaXMuX2luaXQoZ2UudG9BcnJheShVLFEpKX1YZS5leHBvcnRzPUUsRS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oVSl7VS5sZW5ndGg+dGhpcy5ibG9ja1NpemUmJihVPShu''@;'; put 'put ''ZXcgdGhpcy5IYXNoKS51cGRhdGUoVSkuZGlnZXN0KCkpLEIoVS5sZW5ndGg8PXRoaXMuYmxvY2tTaXplKTtmb3IodmFyIFE9VS5sZW5ndGg7UTx0aGlzLmJsb2NrU2l6ZTtRKyspVS5wdXNoKDApO2ZvcihRPTA7UTxVLmxlbmd0aDtRKyspVVtRXV49NTQ7Zm9yKHRoaXMuaW5uZXI9KG5ldyB0''@;'; put 'put ''aGlzLkhhc2gpLnVwZGF0ZShVKSxRPTA7UTxVLmxlbmd0aDtRKyspVVtRXV49MTA2O3RoaXMub3V0ZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShVKX0sRS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFUsUSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKFUsUSksdGhpc30sRS5wcm90b3R5''@;'; put 'put ''cGUuZGlnZXN0PWZ1bmN0aW9uKFUpe3JldHVybiB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKSx0aGlzLm91dGVyLmRpZ2VzdChVKX19LDk5NDU4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgyOTI5OSksQj1MKDMzODAwKSxFPWdlLnJvdGwzMixNZT1n''@;'; put 'put ''ZS5zdW0zMixVPWdlLnN1bTMyXzMsUT1nZS5zdW0zMl80LFo9Qi5CbG9ja0hhc2g7ZnVuY3Rpb24gaWUoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBpZSkpcmV0dXJuIG5ldyBpZTtaLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4Nzgs''@;'; put 'put ''MzI4NTM3NzUyMF0sdGhpcy5lbmRpYW49ImxpdHRsZSJ9ZnVuY3Rpb24gbGUoc2UsYWUsZmUsZGUpe3JldHVybiBzZTw9MTU/YWVeZmVeZGU6c2U8PTMxP2FlJmZlfH5hZSZkZTpzZTw9NDc/KGFlfH5mZSleZGU6c2U8PTYzP2FlJmRlfGZlJn5kZTphZV4oZmV8fmRlKX1mdW5jdGlvbiBXKHNl''@;'; put 'put ''KXtyZXR1cm4gc2U8PTE1PzEzNTI4Mjk5MjY6c2U8PTMxPzE1NDg2MDM2ODQ6c2U8PTQ3PzE4MzYwNzI2OTE6c2U8PTYzPzIwNTM5OTQyMTc6MH1nZS5pbmhlcml0cyhpZSxaKSxKZS5yaXBlbWQxNjA9aWUsaWUuYmxvY2tTaXplPTUxMixpZS5vdXRTaXplPTE2MCxpZS5obWFjU3RyZW5ndGg9''@;'; put 'put ''MTkyLGllLnBhZExlbmd0aD02NCxpZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihhZSxmZSl7Zm9yKHZhciBkZT10aGlzLmhbMF0sdmU9dGhpcy5oWzFdLEFlPXRoaXMuaFsyXSxrZT10aGlzLmhbM10sU2U9dGhpcy5oWzRdLEllPWRlLFRlPXZlLEVlPUFlLGhlPWtlLE89U2Usej0wO3o8''@;'; put 'put ''ODA7eisrKXt2YXIgbmU9TWUoRShRKGRlLGxlKHosdmUsQWUsa2UpLGFlW05bel0rZmVdLChzZT16KTw9MTU/MDpzZTw9MzE/MTUxODUwMDI0OTpzZTw9NDc/MTg1OTc3NTM5MzpzZTw9NjM/MjQwMDk1OTcwODoyODQwODUzODM4KSxxW3pdKSxTZSk7ZGU9U2UsU2U9a2Usa2U9RShBZSwxMCks''@;'; put 'put ''QWU9dmUsdmU9bmUsbmU9TWUoRShRKEllLGxlKDc5LXosVGUsRWUsaGUpLGFlW2VlW3pdK2ZlXSxXKHopKSxKW3pdKSxPKSxJZT1PLE89aGUsaGU9RShFZSwxMCksRWU9VGUsVGU9bmV9dmFyIHNlO25lPVUodGhpcy5oWzFdLEFlLGhlKSx0aGlzLmhbMV09VSh0aGlzLmhbMl0sa2UsTyksdGhp''@;'; put 'put ''cy5oWzJdPVUodGhpcy5oWzNdLFNlLEllKSx0aGlzLmhbM109VSh0aGlzLmhbNF0sZGUsVGUpLHRoaXMuaFs0XT1VKHRoaXMuaFswXSx2ZSxFZSksdGhpcy5oWzBdPW5lfSxpZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihhZSl7cmV0dXJuImhleCI9PT1hZT9nZS50b0hleDMyKHRoaXMu''@;'; put 'put ''aCwibGl0dGxlIik6Z2Uuc3BsaXQzMih0aGlzLmgsImxpdHRsZSIpfTt2YXIgTj1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5''@;'; put 'put ''LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxlZT1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcs''@;'; put 'put ''MTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxxPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1''@;'; put 'put ''LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxKPVs4LDksOSwxMSwxMywxNSwxNSw1''@;'; put 'put ''LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMs''@;'; put 'put ''Niw1LDE1LDEzLDExLDExXX0sNTQ5NjI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0plLnNoYTE9TCg1OTAwNyksSmUuc2hhMjI0PUwoMTAwNTUpLEplLnNoYTI1Nj1MKDE5MzQyKSxKZS5zaGEzODQ9TCg4ODYzNCksSmUuc2hhNTEyPUwoNzAwMzkpfSw1OTAwNzooWGUsSmUsTCk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIGdlPUwoMjkyOTkpLEI9TCgzMzgwMCksRT1MKDMzMTEzKSxNZT1nZS5yb3RsMzIsVT1nZS5zdW0zMixRPWdlLnN1bTMyXzUsWj1FLmZ0XzEsaWU9Qi5CbG9ja0hhc2gsbGU9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJdO2Z1bmN0aW9u''@;'; put 'put ''IFkoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFk7aWUuY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx0aGlzLlc9bmV3IEFycmF5KDgwKX1nZS5pbmhlcml0cyhZLGllKSxYZS5leHBv''@;'; put 'put ''cnRzPVksWS5ibG9ja1NpemU9NTEyLFkub3V0U2l6ZT0xNjAsWS5obWFjU3RyZW5ndGg9ODAsWS5wYWRMZW5ndGg9NjQsWS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihOLGVlKXtmb3IodmFyIHE9dGhpcy5XLEo9MDtKPDE2O0orKylxW0pdPU5bZWUrSl07Zm9yKDtKPHEubGVuZ3RoO0or''@;'; put 'put ''KylxW0pdPU1lKHFbSi0zXV5xW0otOF1ecVtKLTE0XV5xW0otMTZdLDEpO3ZhciBzZT10aGlzLmhbMF0sYWU9dGhpcy5oWzFdLGZlPXRoaXMuaFsyXSxkZT10aGlzLmhbM10sdmU9dGhpcy5oWzRdO2ZvcihKPTA7SjxxLmxlbmd0aDtKKyspe3ZhciBBZT1+fihKLzIwKSxrZT1RKE1lKHNlLDUp''@;'; put 'put ''LFooQWUsYWUsZmUsZGUpLHZlLHFbSl0sbGVbQWVdKTt2ZT1kZSxkZT1mZSxmZT1NZShhZSwzMCksYWU9c2Usc2U9a2V9dGhpcy5oWzBdPVUodGhpcy5oWzBdLHNlKSx0aGlzLmhbMV09VSh0aGlzLmhbMV0sYWUpLHRoaXMuaFsyXT1VKHRoaXMuaFsyXSxmZSksdGhpcy5oWzNdPVUodGhpcy5o''@;'; put 'put ''WzNdLGRlKSx0aGlzLmhbNF09VSh0aGlzLmhbNF0sdmUpfSxZLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKE4pe3JldHVybiJoZXgiPT09Tj9nZS50b0hleDMyKHRoaXMuaCwiYmlnIik6Z2Uuc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sMTAwNTU6KFhlLEplLEwpPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciBnZT1MKDI5Mjk5KSxCPUwoMTkzNDIpO2Z1bmN0aW9uIEUoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBFKSlyZXR1cm4gbmV3IEU7Qi5jYWxsKHRoaXMpLHRoaXMuaD1bMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2''@;'; put 'put ''OTQwNzY4MzksMzIwNDA3NTQyOF19Z2UuaW5oZXJpdHMoRSxCKSxYZS5leHBvcnRzPUUsRS5ibG9ja1NpemU9NTEyLEUub3V0U2l6ZT0yMjQsRS5obWFjU3RyZW5ndGg9MTkyLEUucGFkTGVuZ3RoPTY0LEUucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVSl7cmV0dXJuImhleCI9PT1VP2dl''@;'; put 'put ''LnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpOmdlLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpfX0sMTkzNDI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDI5Mjk5KSxCPUwoMzM4MDApLEU9TCgzMzExMyksTWU9TCgzMjM5MSksVT1nZS5zdW0zMixR''@;'; put 'put ''PWdlLnN1bTMyXzQsWj1nZS5zdW0zMl81LGllPUUuY2gzMixsZT1FLm1hajMyLFk9RS5zMF8yNTYsVz1FLnMxXzI1NixOPUUuZzBfMjU2LGVlPUUuZzFfMjU2LHE9Qi5CbG9ja0hhc2gsSj1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUw''@;'; put 'put ''ODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5''@;'; put 'put ''ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwx''@;'; put 'put ''Njk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5''@;'; put 'put ''Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtmdW5jdGlvbiBzZSgpe2lmKCEodGhpcyBpbnN0''@;'; put 'put ''YW5jZW9mIHNlKSlyZXR1cm4gbmV3IHNlO3EuY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3MDMsMzE0NDEzNDI3NywxMDEzOTA0MjQyLDI3NzM0ODA3NjIsMTM1OTg5MzExOSwyNjAwODIyOTI0LDUyODczNDYzNSwxNTQxNDU5MjI1XSx0aGlzLms9Six0aGlzLlc9bmV3IEFycmF5KDY0KX1n''@;'; put 'put ''ZS5pbmhlcml0cyhzZSxxKSxYZS5leHBvcnRzPXNlLHNlLmJsb2NrU2l6ZT01MTIsc2Uub3V0U2l6ZT0yNTYsc2UuaG1hY1N0cmVuZ3RoPTE5MixzZS5wYWRMZW5ndGg9NjQsc2UucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZmUsZGUpe2Zvcih2YXIgdmU9dGhpcy5XLEFlPTA7QWU8MTY7''@;'; put 'put ''QWUrKyl2ZVtBZV09ZmVbZGUrQWVdO2Zvcig7QWU8dmUubGVuZ3RoO0FlKyspdmVbQWVdPVEoZWUodmVbQWUtMl0pLHZlW0FlLTddLE4odmVbQWUtMTVdKSx2ZVtBZS0xNl0pO3ZhciBrZT10aGlzLmhbMF0sU2U9dGhpcy5oWzFdLEllPXRoaXMuaFsyXSxUZT10aGlzLmhbM10sRWU9dGhpcy5o''@;'; put 'put ''WzRdLGhlPXRoaXMuaFs1XSxPPXRoaXMuaFs2XSx6PXRoaXMuaFs3XTtmb3IoTWUodGhpcy5rLmxlbmd0aD09PXZlLmxlbmd0aCksQWU9MDtBZTx2ZS5sZW5ndGg7QWUrKyl7dmFyIG5lPVooeixXKEVlKSxpZShFZSxoZSxPKSx0aGlzLmtbQWVdLHZlW0FlXSksdGU9VShZKGtlKSxsZShrZSxT''@;'; put 'put ''ZSxJZSkpO3o9TyxPPWhlLGhlPUVlLEVlPVUoVGUsbmUpLFRlPUllLEllPVNlLFNlPWtlLGtlPVUobmUsdGUpfXRoaXMuaFswXT1VKHRoaXMuaFswXSxrZSksdGhpcy5oWzFdPVUodGhpcy5oWzFdLFNlKSx0aGlzLmhbMl09VSh0aGlzLmhbMl0sSWUpLHRoaXMuaFszXT1VKHRoaXMuaFszXSxU''@;'; put 'put ''ZSksdGhpcy5oWzRdPVUodGhpcy5oWzRdLEVlKSx0aGlzLmhbNV09VSh0aGlzLmhbNV0saGUpLHRoaXMuaFs2XT1VKHRoaXMuaFs2XSxPKSx0aGlzLmhbN109VSh0aGlzLmhbN10seil9LHNlLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGZlKXtyZXR1cm4iaGV4Ij09PWZlP2dlLnRvSGV4''@;'; put 'put ''MzIodGhpcy5oLCJiaWciKTpnZS5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw4ODYzNDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjkyOTkpLEI9TCg3MDAzOSk7ZnVuY3Rpb24gRSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEUpKXJldHVybiBuZXcgRTtCLmNhbGwodGhpcyks''@;'; put 'put ''dGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2''@;'; put 'put ''MjgxMywzMjA0MDc1NDI4XX1nZS5pbmhlcml0cyhFLEIpLFhlLmV4cG9ydHM9RSxFLmJsb2NrU2l6ZT0xMDI0LEUub3V0U2l6ZT0zODQsRS5obWFjU3RyZW5ndGg9MTkyLEUucGFkTGVuZ3RoPTEyOCxFLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKFUpe3JldHVybiJoZXgiPT09VT9nZS50''@;'; put 'put ''b0hleDMyKHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIik6Z2Uuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpfX0sNzAwMzk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDI5Mjk5KSxCPUwoMzM4MDApLEU9TCgzMjM5MSksTWU9Z2Uucm90cjY0X2hpLFU9Z2Uucm90''@;'; put 'put ''cjY0X2xvLFE9Z2Uuc2hyNjRfaGksWj1nZS5zaHI2NF9sbyxpZT1nZS5zdW02NCxsZT1nZS5zdW02NF9oaSxZPWdlLnN1bTY0X2xvLFc9Z2Uuc3VtNjRfNF9oaSxOPWdlLnN1bTY0XzRfbG8sZWU9Z2Uuc3VtNjRfNV9oaSxxPWdlLnN1bTY0XzVfbG8sSj1CLkJsb2NrSGFzaCxzZT1bMTExNjM1''@;'; put 'put ''MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1''@;'; put 'put ''NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwz''@;'; put 'put ''NDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYw''@;'; put 'put ''NjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2''@;'; put 'put ''MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAs''@;'; put 'put ''MTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQw''@;'; put 'put ''OTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQw''@;'; put 'put ''MywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcs''@;'; put 'put ''MzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3''@;'; put 'put ''NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4''@;'; put 'put ''LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdO2Z1bmN0aW9uIGFlKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYWUpKXJldHVybiBuZXcgYWU7Si5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMx''@;'; put 'put ''NDQxMzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0NywxNTQxNDU5MjI1LDMyNzAzMzIwOV0sdGhpcy5rPXNlLHRoaXMu''@;'; put 'put ''Vz1uZXcgQXJyYXkoMTYwKX1mdW5jdGlvbiBmZShuZSx0ZSx4LFAsVil7dmFyIFQ9bmUmeF5+bmUmVjtyZXR1cm4gVDwwJiYoVCs9NDI5NDk2NzI5NiksVH1mdW5jdGlvbiBkZShuZSx0ZSx4LFAsVixUKXt2YXIgUz10ZSZQXn50ZSZUO3JldHVybiBTPDAmJihTKz00Mjk0OTY3Mjk2KSxTfWZ1''@;'; put 'put ''bmN0aW9uIHZlKG5lLHRlLHgsUCxWKXt2YXIgVD1uZSZ4Xm5lJlZeeCZWO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIEFlKG5lLHRlLHgsUCxWLFQpe3ZhciBTPXRlJlBedGUmVF5QJlQ7cmV0dXJuIFM8MCYmKFMrPTQyOTQ5NjcyOTYpLFN9ZnVuY3Rpb24ga2UobmUs''@;'; put 'put ''dGUpe3ZhciBUPU1lKG5lLHRlLDI4KV5NZSh0ZSxuZSwyKV5NZSh0ZSxuZSw3KTtyZXR1cm4gVDwwJiYoVCs9NDI5NDk2NzI5NiksVH1mdW5jdGlvbiBTZShuZSx0ZSl7dmFyIFQ9VShuZSx0ZSwyOCleVSh0ZSxuZSwyKV5VKHRlLG5lLDcpO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxU''@;'; put 'put ''fWZ1bmN0aW9uIEllKG5lLHRlKXt2YXIgVD1NZShuZSx0ZSwxNCleTWUobmUsdGUsMTgpXk1lKHRlLG5lLDkpO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIFRlKG5lLHRlKXt2YXIgVD1VKG5lLHRlLDE0KV5VKG5lLHRlLDE4KV5VKHRlLG5lLDkpO3JldHVybiBUPDAm''@;'; put 'put ''JihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIEVlKG5lLHRlKXt2YXIgVD1NZShuZSx0ZSwxKV5NZShuZSx0ZSw4KV5RKG5lLHRlLDcpO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIGhlKG5lLHRlKXt2YXIgVD1VKG5lLHRlLDEpXlUobmUsdGUsOCleWihuZSx0ZSw3''@;'; put 'put ''KTtyZXR1cm4gVDwwJiYoVCs9NDI5NDk2NzI5NiksVH1mdW5jdGlvbiBPKG5lLHRlKXt2YXIgVD1NZShuZSx0ZSwxOSleTWUodGUsbmUsMjkpXlEobmUsdGUsNik7cmV0dXJuIFQ8MCYmKFQrPTQyOTQ5NjcyOTYpLFR9ZnVuY3Rpb24geihuZSx0ZSl7dmFyIFQ9VShuZSx0ZSwxOSleVSh0ZSxu''@;'; put 'put ''ZSwyOSleWihuZSx0ZSw2KTtyZXR1cm4gVDwwJiYoVCs9NDI5NDk2NzI5NiksVH1nZS5pbmhlcml0cyhhZSxKKSxYZS5leHBvcnRzPWFlLGFlLmJsb2NrU2l6ZT0xMDI0LGFlLm91dFNpemU9NTEyLGFlLmhtYWNTdHJlbmd0aD0xOTIsYWUucGFkTGVuZ3RoPTEyOCxhZS5wcm90b3R5cGUuX3By''@;'; put 'put ''ZXBhcmVCbG9jaz1mdW5jdGlvbih0ZSx4KXtmb3IodmFyIFA9dGhpcy5XLFY9MDtWPDMyO1YrKylQW1ZdPXRlW3grVl07Zm9yKDtWPFAubGVuZ3RoO1YrPTIpe3ZhciBUPU8oUFtWLTRdLFBbVi0zXSksUz16KFBbVi00XSxQW1YtM10pLEY9UFtWLTE0XSx5ZT1QW1YtMTNdLENlPUVlKFBbVi0z''@;'; put 'put ''MF0sUFtWLTI5XSksRGU9aGUoUFtWLTMwXSxQW1YtMjldKSxQZT1QW1YtMzJdLFFlPVBbVi0zMV07UFtWXT1XKFQsUyxGLHllLENlLERlLFBlLFFlKSxQW1YrMV09TihULFMsRix5ZSxDZSxEZSxQZSxRZSl9fSxhZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0ZSx4KXt0aGlzLl9wcmVw''@;'; put 'put ''YXJlQmxvY2sodGUseCk7dmFyIFA9dGhpcy5XLFY9dGhpcy5oWzBdLFQ9dGhpcy5oWzFdLFM9dGhpcy5oWzJdLEY9dGhpcy5oWzNdLHllPXRoaXMuaFs0XSxDZT10aGlzLmhbNV0sRGU9dGhpcy5oWzZdLFBlPXRoaXMuaFs3XSxRZT10aGlzLmhbOF0sJGU9dGhpcy5oWzldLGd0PXRoaXMuaFsx''@;'; put 'put ''MF0seXQ9dGhpcy5oWzExXSxwdD10aGlzLmhbMTJdLG10PXRoaXMuaFsxM10sdnQ9dGhpcy5oWzE0XSxmdD10aGlzLmhbMTVdO0UodGhpcy5rLmxlbmd0aD09PVAubGVuZ3RoKTtmb3IodmFyIEZ0PTA7RnQ8UC5sZW5ndGg7RnQrPTIpe3ZhciBvbj12dCxfdD1mdCxudD1JZShRZSwkZSkscWU9''@;'; put 'put ''VGUoUWUsJGUpLG90PWZlKFFlLDAsZ3QsMCxwdCksUnQ9ZGUoMCwkZSwwLHl0LDAsbXQpLEN0PXRoaXMua1tGdF0sY3Q9dGhpcy5rW0Z0KzFdLE50PVBbRnRdLHplPVBbRnQrMV0sWWU9ZWUob24sX3QsbnQscWUsb3QsUnQsQ3QsY3QsTnQsemUpLEF0PXEob24sX3QsbnQscWUsb3QsUnQsQ3Qs''@;'; put 'put ''Y3QsTnQsemUpO29uPWtlKFYsVCksX3Q9U2UoVixUKSxudD12ZShWLDAsUywwLHllKSxxZT1BZSgwLFQsMCxGLDAsQ2UpO3ZhciBqdD1sZShvbixfdCxudCxxZSksSnQ9WShvbixfdCxudCxxZSk7dnQ9cHQsZnQ9bXQscHQ9Z3QsbXQ9eXQsZ3Q9UWUseXQ9JGUsUWU9bGUoRGUsUGUsWWUsQXQp''@;'; put 'put ''LCRlPVkoUGUsUGUsWWUsQXQpLERlPXllLFBlPUNlLHllPVMsQ2U9RixTPVYsRj1ULFY9bGUoWWUsQXQsanQsSnQpLFQ9WShZZSxBdCxqdCxKdCl9aWUodGhpcy5oLDAsVixUKSxpZSh0aGlzLmgsMixTLEYpLGllKHRoaXMuaCw0LHllLENlKSxpZSh0aGlzLmgsNixEZSxQZSksaWUodGhpcy5o''@;'; put 'put ''LDgsUWUsJGUpLGllKHRoaXMuaCwxMCxndCx5dCksaWUodGhpcy5oLDEyLHB0LG10KSxpZSh0aGlzLmgsMTQsdnQsZnQpfSxhZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbih0ZSl7cmV0dXJuImhleCI9PT10ZT9nZS50b0hleDMyKHRoaXMuaCwiYmlnIik6Z2Uuc3BsaXQzMih0aGlzLmgs''@;'; put 'put ''ImJpZyIpfX0sMzMxMTM6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBCPUwoMjkyOTkpLnJvdHIzMjtmdW5jdGlvbiBNZShXLE4sZWUpe3JldHVybiBXJk5eflcmZWV9ZnVuY3Rpb24gVShXLE4sZWUpe3JldHVybiBXJk5eVyZlZV5OJmVlfWZ1bmN0aW9uIFEoVyxOLGVlKXtyZXR1cm4g''@;'; put 'put ''V15OXmVlfUplLmZ0XzE9ZnVuY3Rpb24gRShXLE4sZWUscSl7cmV0dXJuIDA9PT1XP01lKE4sZWUscSk6MT09PVd8fDM9PT1XP1EoTixlZSxxKToyPT09Vz9VKE4sZWUscSk6dm9pZCAwfSxKZS5jaDMyPU1lLEplLm1hajMyPVUsSmUucDMyPVEsSmUuczBfMjU2PWZ1bmN0aW9uIFooVyl7cmV0''@;'; put 'put ''dXJuIEIoVywyKV5CKFcsMTMpXkIoVywyMil9LEplLnMxXzI1Nj1mdW5jdGlvbiBpZShXKXtyZXR1cm4gQihXLDYpXkIoVywxMSleQihXLDI1KX0sSmUuZzBfMjU2PWZ1bmN0aW9uIGxlKFcpe3JldHVybiBCKFcsNyleQihXLDE4KV5XPj4+M30sSmUuZzFfMjU2PWZ1bmN0aW9uIFkoVyl7cmV0''@;'; put 'put ''dXJuIEIoVywxNyleQihXLDE5KV5XPj4+MTB9fSwyOTI5OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMzIzOTEpLEI9TCg4Mzg5NCk7ZnVuY3Rpb24gRSh6LG5lKXtyZXR1cm4hKDU1Mjk2IT0oNjQ1MTImei5jaGFyQ29kZUF0KG5lKSl8fG5lPDB8fG5lKzE+PXoubGVuZ3Ro''@;'; put 'put ''KSYmNTYzMjA9PSg2NDUxMiZ6LmNoYXJDb2RlQXQobmUrMSkpfWZ1bmN0aW9uIFEoeil7cmV0dXJuKHo+Pj4yNHx6Pj4+OCY2NTI4MHx6PDw4JjE2NzExNjgwfCgyNTUmeik8PDI0KT4+PjB9ZnVuY3Rpb24gaWUoeil7cmV0dXJuIDE9PT16Lmxlbmd0aD8iMCIrejp6fWZ1bmN0aW9uIGxlKHop''@;'; put 'put ''e3JldHVybiA3PT09ei5sZW5ndGg/IjAiK3o6Nj09PXoubGVuZ3RoPyIwMCIrejo1PT09ei5sZW5ndGg/IjAwMCIrejo0PT09ei5sZW5ndGg/IjAwMDAiK3o6Mz09PXoubGVuZ3RoPyIwMDAwMCIrejoyPT09ei5sZW5ndGg/IjAwMDAwMCIrejoxPT09ei5sZW5ndGg/IjAwMDAwMDAiK3o6en1K''@;'; put 'put ''ZS5pbmhlcml0cz1CLEplLnRvQXJyYXk9ZnVuY3Rpb24gTWUoeixuZSl7aWYoQXJyYXkuaXNBcnJheSh6KSlyZXR1cm4gei5zbGljZSgpO2lmKCF6KXJldHVybltdO3ZhciB0ZT1bXTtpZigic3RyaW5nIj09dHlwZW9mIHopaWYobmUpe2lmKCJoZXgiPT09bmUpZm9yKCh6PXoucmVwbGFjZSgv''@;'; put 'put ''W15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYoej0iMCIreiksUD0wO1A8ei5sZW5ndGg7UCs9Mil0ZS5wdXNoKHBhcnNlSW50KHpbUF0reltQKzFdLDE2KSl9ZWxzZSBmb3IodmFyIHg9MCxQPTA7UDx6Lmxlbmd0aDtQKyspe3ZhciBWPXouY2hhckNvZGVBdChQKTtWPDEyOD90ZVt4''@;'; put 'put ''KytdPVY6VjwyMDQ4Pyh0ZVt4KytdPVY+PjZ8MTkyLHRlW3grK109NjMmVnwxMjgpOkUoeixQKT8oVj02NTUzNisoKDEwMjMmVik8PDEwKSsoMTAyMyZ6LmNoYXJDb2RlQXQoKytQKSksdGVbeCsrXT1WPj4xOHwyNDAsdGVbeCsrXT1WPj4xMiY2M3wxMjgsdGVbeCsrXT1WPj42JjYzfDEyOCx0''@;'; put 'put ''ZVt4KytdPTYzJlZ8MTI4KToodGVbeCsrXT1WPj4xMnwyMjQsdGVbeCsrXT1WPj42JjYzfDEyOCx0ZVt4KytdPTYzJlZ8MTI4KX1lbHNlIGZvcihQPTA7UDx6Lmxlbmd0aDtQKyspdGVbUF09MHx6W1BdO3JldHVybiB0ZX0sSmUudG9IZXg9ZnVuY3Rpb24gVSh6KXtmb3IodmFyIG5lPSIiLHRl''@;'; put 'put ''PTA7dGU8ei5sZW5ndGg7dGUrKyluZSs9aWUoelt0ZV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gbmV9LEplLmh0b25sPVEsSmUudG9IZXgzMj1mdW5jdGlvbiBaKHosbmUpe2Zvcih2YXIgdGU9IiIseD0wO3g8ei5sZW5ndGg7eCsrKXt2YXIgUD16W3hdOyJsaXR0bGUiPT09bmUmJihQPVEoUCkp''@;'; put 'put ''LHRlKz1sZShQLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHRlfSxKZS56ZXJvMj1pZSxKZS56ZXJvOD1sZSxKZS5qb2luMzI9ZnVuY3Rpb24gWSh6LG5lLHRlLHgpe3ZhciBQPXRlLW5lO2dlKFAlND09MCk7Zm9yKHZhciBWPW5ldyBBcnJheShQLzQpLFQ9MCxTPW5lO1Q8Vi5sZW5ndGg7VCsrLFMr''@;'; put 'put ''PTQpVltUXT0oImJpZyI9PT14P3pbU108PDI0fHpbUysxXTw8MTZ8eltTKzJdPDw4fHpbUyszXTp6W1MrM108PDI0fHpbUysyXTw8MTZ8eltTKzFdPDw4fHpbU10pPj4+MDtyZXR1cm4gVn0sSmUuc3BsaXQzMj1mdW5jdGlvbiBXKHosbmUpe2Zvcih2YXIgdGU9bmV3IEFycmF5KDQqei5sZW5n''@;'; put 'put ''dGgpLHg9MCxQPTA7eDx6Lmxlbmd0aDt4KyssUCs9NCl7dmFyIFY9elt4XTsiYmlnIj09PW5lPyh0ZVtQXT1WPj4+MjQsdGVbUCsxXT1WPj4+MTYmMjU1LHRlW1ArMl09Vj4+PjgmMjU1LHRlW1ArM109MjU1JlYpOih0ZVtQKzNdPVY+Pj4yNCx0ZVtQKzJdPVY+Pj4xNiYyNTUsdGVbUCsxXT1W''@;'; put 'put ''Pj4+OCYyNTUsdGVbUF09MjU1JlYpfXJldHVybiB0ZX0sSmUucm90cjMyPWZ1bmN0aW9uIE4oeixuZSl7cmV0dXJuIHo+Pj5uZXx6PDwzMi1uZX0sSmUucm90bDMyPWZ1bmN0aW9uIGVlKHosbmUpe3JldHVybiB6PDxuZXx6Pj4+MzItbmV9LEplLnN1bTMyPWZ1bmN0aW9uIHEoeixuZSl7cmV0''@;'; put 'put ''dXJuIHorbmU+Pj4wfSxKZS5zdW0zMl8zPWZ1bmN0aW9uIEooeixuZSx0ZSl7cmV0dXJuIHorbmUrdGU+Pj4wfSxKZS5zdW0zMl80PWZ1bmN0aW9uIHNlKHosbmUsdGUseCl7cmV0dXJuIHorbmUrdGUreD4+PjB9LEplLnN1bTMyXzU9ZnVuY3Rpb24gYWUoeixuZSx0ZSx4LFApe3JldHVybiB6''@;'; put 'put ''K25lK3RlK3grUD4+PjB9LEplLnN1bTY0PWZ1bmN0aW9uIGZlKHosbmUsdGUseCl7dmFyIFQ9eCt6W25lKzFdPj4+MDt6W25lXT0oVDx4PzE6MCkrdGUreltuZV0+Pj4wLHpbbmUrMV09VH0sSmUuc3VtNjRfaGk9ZnVuY3Rpb24gZGUoeixuZSx0ZSx4KXtyZXR1cm4obmUreD4+PjA8bmU/MTow''@;'; put 'put ''KSt6K3RlPj4+MH0sSmUuc3VtNjRfbG89ZnVuY3Rpb24gdmUoeixuZSx0ZSx4KXtyZXR1cm4gbmUreD4+PjB9LEplLnN1bTY0XzRfaGk9ZnVuY3Rpb24gQWUoeixuZSx0ZSx4LFAsVixULFMpe3ZhciBGPTAseWU9bmU7cmV0dXJuIEYrPSh5ZT15ZSt4Pj4+MCk8bmU/MTowLEYrPSh5ZT15ZStW''@;'; put 'put ''Pj4+MCk8Vj8xOjAseit0ZStQK1QrKEYrPSh5ZT15ZStTPj4+MCk8Uz8xOjApPj4+MH0sSmUuc3VtNjRfNF9sbz1mdW5jdGlvbiBrZSh6LG5lLHRlLHgsUCxWLFQsUyl7cmV0dXJuIG5lK3grVitTPj4+MH0sSmUuc3VtNjRfNV9oaT1mdW5jdGlvbiBTZSh6LG5lLHRlLHgsUCxWLFQsUyxGLHll''@;'; put 'put ''KXt2YXIgQ2U9MCxEZT1uZTtyZXR1cm4gQ2UrPShEZT1EZSt4Pj4+MCk8bmU/MTowLENlKz0oRGU9RGUrVj4+PjApPFY/MTowLENlKz0oRGU9RGUrUz4+PjApPFM/MTowLHordGUrUCtUK0YrKENlKz0oRGU9RGUreWU+Pj4wKTx5ZT8xOjApPj4+MH0sSmUuc3VtNjRfNV9sbz1mdW5jdGlvbiBJ''@;'; put 'put ''ZSh6LG5lLHRlLHgsUCxWLFQsUyxGLHllKXtyZXR1cm4gbmUreCtWK1MreWU+Pj4wfSxKZS5yb3RyNjRfaGk9ZnVuY3Rpb24gVGUoeixuZSx0ZSl7cmV0dXJuKG5lPDwzMi10ZXx6Pj4+dGUpPj4+MH0sSmUucm90cjY0X2xvPWZ1bmN0aW9uIEVlKHosbmUsdGUpe3JldHVybih6PDwzMi10ZXxu''@;'; put 'put ''ZT4+PnRlKT4+PjB9LEplLnNocjY0X2hpPWZ1bmN0aW9uIGhlKHosbmUsdGUpe3JldHVybiB6Pj4+dGV9LEplLnNocjY0X2xvPWZ1bmN0aW9uIE8oeixuZSx0ZSl7cmV0dXJuKHo8PDMyLXRlfG5lPj4+dGUpPj4+MH19LDUyNDM4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgz''@;'; put 'put ''NzA4NCksQj1MKDU4MTk1KSxFPUwoMzIzOTEpO2Z1bmN0aW9uIE1lKFUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE1lKSlyZXR1cm4gbmV3IE1lKFUpO3RoaXMuaGFzaD1VLmhhc2gsdGhpcy5wcmVkUmVzaXN0PSEhVS5wcmVkUmVzaXN0LHRoaXMub3V0TGVuPXRoaXMuaGFzaC5vdXRTaXplLHRo''@;'; put 'put ''aXMubWluRW50cm9weT1VLm1pbkVudHJvcHl8fHRoaXMuaGFzaC5obWFjU3RyZW5ndGgsdGhpcy5fcmVzZWVkPW51bGwsdGhpcy5yZXNlZWRJbnRlcnZhbD1udWxsLHRoaXMuSz1udWxsLHRoaXMuVj1udWxsO3ZhciBRPUIudG9BcnJheShVLmVudHJvcHksVS5lbnRyb3B5RW5jfHwiaGV4Iiks''@;'; put 'put ''Wj1CLnRvQXJyYXkoVS5ub25jZSxVLm5vbmNlRW5jfHwiaGV4IiksaWU9Qi50b0FycmF5KFUucGVycyxVLnBlcnNFbmN8fCJoZXgiKTtFKFEubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMubWluRW50cm9weSsiIGJpdHMi''@;'; put 'put ''KSx0aGlzLl9pbml0KFEsWixpZSl9WGUuZXhwb3J0cz1NZSxNZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oUSxaLGllKXt2YXIgbGU9US5jb25jYXQoWikuY29uY2F0KGllKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7''@;'; put 'put ''Zm9yKHZhciBZPTA7WTx0aGlzLlYubGVuZ3RoO1krKyl0aGlzLktbWV09MCx0aGlzLlZbWV09MTt0aGlzLl91cGRhdGUobGUpLHRoaXMuX3Jlc2VlZD0xLHRoaXMucmVzZWVkSW50ZXJ2YWw9MjgxNDc0OTc2NzEwNjU2fSxNZS5wcm90b3R5cGUuX2htYWM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3''@;'; put 'put ''IGdlLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9LE1lLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFEpe3ZhciBaPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzBdKTtRJiYoWj1aLnVwZGF0ZShRKSksdGhpcy5LPVouZGlnZXN0KCksdGhpcy5WPXRoaXMuX2htYWMoKS51''@;'; put 'put ''cGRhdGUodGhpcy5WKS5kaWdlc3QoKSxRJiYodGhpcy5LPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzFdKS51cGRhdGUoUSkuZGlnZXN0KCksdGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKSl9LE1lLnByb3RvdHlwZS5yZXNlZWQ9ZnVuY3Rp''@;'; put 'put ''b24oUSxaLGllLGxlKXsic3RyaW5nIiE9dHlwZW9mIFomJihsZT1pZSxpZT1aLFo9bnVsbCksUT1CLnRvQXJyYXkoUSxaKSxpZT1CLnRvQXJyYXkoaWUsbGUpLEUoUS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5F''@;'; put 'put ''bnRyb3B5KyIgYml0cyIpLHRoaXMuX3VwZGF0ZShRLmNvbmNhdChpZXx8W10pKSx0aGlzLl9yZXNlZWQ9MX0sTWUucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKFEsWixpZSxsZSl7aWYodGhpcy5fcmVzZWVkPnRoaXMucmVzZWVkSW50ZXJ2YWwpdGhyb3cgbmV3IEVycm9yKCJSZXNlZWQg''@;'; put 'put ''aXMgcmVxdWlyZWQiKTsic3RyaW5nIiE9dHlwZW9mIFomJihsZT1pZSxpZT1aLFo9bnVsbCksaWUmJihpZT1CLnRvQXJyYXkoaWUsbGV8fCJoZXgiKSx0aGlzLl91cGRhdGUoaWUpKTtmb3IodmFyIFk9W107WS5sZW5ndGg8UTspdGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5k''@;'; put 'put ''aWdlc3QoKSxZPVkuY29uY2F0KHRoaXMuVik7dmFyIFc9WS5zbGljZSgwLFEpO3JldHVybiB0aGlzLl91cGRhdGUoaWUpLHRoaXMuX3Jlc2VlZCsrLEIuZW5jb2RlKFcsWil9fSw0Njk3ODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNjIwMzgpLkJ1ZmZlcjtKZS5fZGJjcz1s''@;'; put 'put ''ZTtmb3IodmFyIEI9LTEsTWU9LTEwLFU9LTFlMyxRPW5ldyBBcnJheSgyNTYpLGllPTA7aWU8MjU2O2llKyspUVtpZV09QjtmdW5jdGlvbiBsZShlZSxxKXtpZih0aGlzLmVuY29kaW5nTmFtZT1lZS5lbmNvZGluZ05hbWUsIWVlKXRocm93IG5ldyBFcnJvcigiREJDUyBjb2RlYyBpcyBjYWxs''@;'; put 'put ''ZWQgd2l0aG91dCB0aGUgZGF0YS4iKTtpZighZWUudGFibGUpdGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyAnIit0aGlzLmVuY29kaW5nTmFtZSsiJyBoYXMgbm8gZGF0YS4iKTt2YXIgSj1lZS50YWJsZSgpO3RoaXMuZGVjb2RlVGFibGVzPVtdLHRoaXMuZGVjb2RlVGFibGVzWzBdPVEuc2xp''@;'; put 'put ''Y2UoMCksdGhpcy5kZWNvZGVUYWJsZVNlcT1bXTtmb3IodmFyIHNlPTA7c2U8Si5sZW5ndGg7c2UrKyl0aGlzLl9hZGREZWNvZGVDaHVuayhKW3NlXSk7dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU9cS5kZWZhdWx0Q2hhclVuaWNvZGUsdGhpcy5lbmNvZGVUYWJsZT1bXSx0aGlzLmVuY29kZVRh''@;'; put 'put ''YmxlU2VxPVtdO3ZhciBhZT17fTtpZihlZS5lbmNvZGVTa2lwVmFscylmb3Ioc2U9MDtzZTxlZS5lbmNvZGVTa2lwVmFscy5sZW5ndGg7c2UrKyl7dmFyIGZlPWVlLmVuY29kZVNraXBWYWxzW3NlXTtpZigibnVtYmVyIj09dHlwZW9mIGZlKWFlW2ZlXT0hMDtlbHNlIGZvcih2YXIgZGU9ZmUu''@;'; put 'put ''ZnJvbTtkZTw9ZmUudG87ZGUrKylhZVtkZV09ITB9aWYodGhpcy5fZmlsbEVuY29kZVRhYmxlKDAsMCxhZSksZWUuZW5jb2RlQWRkKWZvcih2YXIgdmUgaW4gZWUuZW5jb2RlQWRkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZS5lbmNvZGVBZGQsdmUpJiZ0aGlzLl9z''@;'; put 'put ''ZXRFbmNvZGVDaGFyKHZlLmNoYXJDb2RlQXQoMCksZWUuZW5jb2RlQWRkW3ZlXSk7aWYodGhpcy5kZWZDaGFyU0I9dGhpcy5lbmNvZGVUYWJsZVswXVtxLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZS5jaGFyQ29kZUF0KDApXSx0aGlzLmRlZkNoYXJTQj09PUImJih0aGlzLmRlZkNoYXJTQj10aGlz''@;'; put 'put ''LmVuY29kZVRhYmxlWzBdWyI/Il0pLHRoaXMuZGVmQ2hhclNCPT09QiYmKHRoaXMuZGVmQ2hhclNCPSI/Ii5jaGFyQ29kZUF0KDApKSwiZnVuY3Rpb24iPT10eXBlb2YgZWUuZ2IxODAzMCl7dGhpcy5nYjE4MDMwPWVlLmdiMTgwMzAoKTt2YXIgQWU9dGhpcy5kZWNvZGVUYWJsZXMubGVuZ3Ro''@;'; put 'put ''LGtlPXRoaXMuZGVjb2RlVGFibGVzW0FlXT1RLnNsaWNlKDApLFNlPXRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aCxJZT10aGlzLmRlY29kZVRhYmxlc1tTZV09US5zbGljZSgwKTtmb3Ioc2U9MTI5O3NlPD0yNTQ7c2UrKyl7dmFyIEVlPXRoaXMuZGVjb2RlVGFibGVzW1UtdGhpcy5kZWNvZGVU''@;'; put 'put ''YWJsZXNbMF1bc2VdXTtmb3IoZGU9NDg7ZGU8PTU3O2RlKyspRWVbZGVdPVUtQWV9Zm9yKHNlPTEyOTtzZTw9MjU0O3NlKyspa2Vbc2VdPVUtU2U7Zm9yKHNlPTQ4O3NlPD01NztzZSsrKUllW3NlXT0tMn19ZnVuY3Rpb24gWShlZSxxKXt0aGlzLmxlYWRTdXJyb2dhdGU9LTEsdGhpcy5zZXFP''@;'; put 'put ''Ymo9dm9pZCAwLHRoaXMuZW5jb2RlVGFibGU9cS5lbmNvZGVUYWJsZSx0aGlzLmVuY29kZVRhYmxlU2VxPXEuZW5jb2RlVGFibGVTZXEsdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGU9cS5kZWZDaGFyU0IsdGhpcy5nYjE4MDMwPXEuZ2IxODAzMH1mdW5jdGlvbiBXKGVlLHEpe3RoaXMubm9k''@;'; put 'put ''ZUlkeD0wLHRoaXMucHJldkJ1Zj1nZS5hbGxvYygwKSx0aGlzLmRlY29kZVRhYmxlcz1xLmRlY29kZVRhYmxlcyx0aGlzLmRlY29kZVRhYmxlU2VxPXEuZGVjb2RlVGFibGVTZXEsdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU9cS5kZWZhdWx0Q2hhclVuaWNvZGUsdGhpcy5nYjE4MDMwPXEuZ2Ix''@;'; put 'put ''ODAzMH1mdW5jdGlvbiBOKGVlLHEpe2lmKGVlWzBdPnEpcmV0dXJuLTE7Zm9yKHZhciBKPTAsc2U9ZWUubGVuZ3RoO0o8c2UtMTspe3ZhciBhZT1KK01hdGguZmxvb3IoKHNlLUorMSkvMik7ZWVbYWVdPD1xP0o9YWU6c2U9YWV9cmV0dXJuIEp9bGUucHJvdG90eXBlLmVuY29kZXI9WSxsZS5w''@;'; put 'put ''cm90b3R5cGUuZGVjb2Rlcj1XLGxlLnByb3RvdHlwZS5fZ2V0RGVjb2RlVHJpZU5vZGU9ZnVuY3Rpb24oZWUpe2Zvcih2YXIgcT1bXTtlZT4wO2VlPj49OClxLnB1c2goMjU1JmVlKTswPT1xLmxlbmd0aCYmcS5wdXNoKDApO2Zvcih2YXIgSj10aGlzLmRlY29kZVRhYmxlc1swXSxzZT1xLmxl''@;'; put 'put ''bmd0aC0xO3NlPjA7c2UtLSl7dmFyIGFlPUpbcVtzZV1dO2lmKGFlPT1CKUpbcVtzZV1dPVUtdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoLHRoaXMuZGVjb2RlVGFibGVzLnB1c2goSj1RLnNsaWNlKDApKTtlbHNle2lmKCEoYWU8PVUpKXRocm93IG5ldyBFcnJvcigiT3ZlcndyaXRlIGJ5dGUg''@;'; put 'put ''aW4gIit0aGlzLmVuY29kaW5nTmFtZSsiLCBhZGRyOiAiK2VlLnRvU3RyaW5nKDE2KSk7Sj10aGlzLmRlY29kZVRhYmxlc1tVLWFlXX19cmV0dXJuIEp9LGxlLnByb3RvdHlwZS5fYWRkRGVjb2RlQ2h1bms9ZnVuY3Rpb24oZWUpe3ZhciBxPXBhcnNlSW50KGVlWzBdLDE2KSxKPXRoaXMuX2dl''@;'; put 'put ''dERlY29kZVRyaWVOb2RlKHEpO3EmPTI1NTtmb3IodmFyIHNlPTE7c2U8ZWUubGVuZ3RoO3NlKyspe3ZhciBhZT1lZVtzZV07aWYoInN0cmluZyI9PXR5cGVvZiBhZSlmb3IodmFyIGZlPTA7ZmU8YWUubGVuZ3RoOyl7dmFyIGRlPWFlLmNoYXJDb2RlQXQoZmUrKyk7aWYoNTUyOTY8PWRlJiZk''@;'; put 'put ''ZTw1NjMyMCl7dmFyIHZlPWFlLmNoYXJDb2RlQXQoZmUrKyk7aWYoISg1NjMyMDw9dmUmJnZlPDU3MzQ0KSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBzdXJyb2dhdGUgcGFpciBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIgYXQgY2h1bmsgIitlZVswXSk7SltxKytdPTY1NTM2KzEwMjQq''@;'; put 'put ''KGRlLTU1Mjk2KSsodmUtNTYzMjApfWVsc2UgaWYoNDA4MDxkZSYmZGU8PTQwOTUpe2Zvcih2YXIgQWU9NDA5NS1kZSsyLGtlPVtdLFNlPTA7U2U8QWU7U2UrKylrZS5wdXNoKGFlLmNoYXJDb2RlQXQoZmUrKykpO0pbcSsrXT1NZS10aGlzLmRlY29kZVRhYmxlU2VxLmxlbmd0aCx0aGlzLmRl''@;'; put 'put ''Y29kZVRhYmxlU2VxLnB1c2goa2UpfWVsc2UgSltxKytdPWRlfWVsc2V7aWYoIm51bWJlciIhPXR5cGVvZiBhZSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB0eXBlICciK3R5cGVvZiBhZSsiJyBnaXZlbiBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIgYXQgY2h1bmsgIitlZVswXSk7dmFy''@;'; put 'put ''IEllPUpbcS0xXSsxO2ZvcihmZT0wO2ZlPGFlO2ZlKyspSltxKytdPUllKyt9fWlmKHE+MjU1KXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IGNodW5rIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBhZGRyICIrZWVbMF0rIjogdG9vIGxvbmciK3EpfSxsZS5wcm90b3R5cGUuX2dldEVu''@;'; put 'put ''Y29kZUJ1Y2tldD1mdW5jdGlvbihlZSl7dmFyIHE9ZWU+Pjg7cmV0dXJuIHZvaWQgMD09PXRoaXMuZW5jb2RlVGFibGVbcV0mJih0aGlzLmVuY29kZVRhYmxlW3FdPVEuc2xpY2UoMCkpLHRoaXMuZW5jb2RlVGFibGVbcV19LGxlLnByb3RvdHlwZS5fc2V0RW5jb2RlQ2hhcj1mdW5jdGlvbihl''@;'; put 'put ''ZSxxKXt2YXIgSj10aGlzLl9nZXRFbmNvZGVCdWNrZXQoZWUpLHNlPTI1NSZlZTtKW3NlXTw9TWU/dGhpcy5lbmNvZGVUYWJsZVNlcVtNZS1KW3NlXV1bLTFdPXE6SltzZV09PUImJihKW3NlXT1xKX0sbGUucHJvdG90eXBlLl9zZXRFbmNvZGVTZXF1ZW5jZT1mdW5jdGlvbihlZSxxKXt2YXIg''@;'; put 'put ''ZmUsSj1lZVswXSxzZT10aGlzLl9nZXRFbmNvZGVCdWNrZXQoSiksYWU9MjU1Jko7c2VbYWVdPD1NZT9mZT10aGlzLmVuY29kZVRhYmxlU2VxW01lLXNlW2FlXV06KGZlPXt9LHNlW2FlXSE9PUImJihmZVstMV09c2VbYWVdKSxzZVthZV09TWUtdGhpcy5lbmNvZGVUYWJsZVNlcS5sZW5ndGgs''@;'; put 'put ''dGhpcy5lbmNvZGVUYWJsZVNlcS5wdXNoKGZlKSk7Zm9yKHZhciBkZT0xO2RlPGVlLmxlbmd0aC0xO2RlKyspe3ZhciB2ZT1mZVtKXTsib2JqZWN0Ij09dHlwZW9mIHZlP2ZlPXZlOihmZT1mZVtKXT17fSx2b2lkIDAhPT12ZSYmKGZlWy0xXT12ZSkpfWZlW0o9ZWVbZWUubGVuZ3RoLTFdXT1x''@;'; put 'put ''fSxsZS5wcm90b3R5cGUuX2ZpbGxFbmNvZGVUYWJsZT1mdW5jdGlvbihlZSxxLEope2Zvcih2YXIgc2U9dGhpcy5kZWNvZGVUYWJsZXNbZWVdLGFlPTA7YWU8MjU2O2FlKyspe3ZhciBmZT1zZVthZV0sZGU9cSthZTtKW2RlXXx8KGZlPj0wP3RoaXMuX3NldEVuY29kZUNoYXIoZmUsZGUpOmZl''@;'; put 'put ''PD1VP3RoaXMuX2ZpbGxFbmNvZGVUYWJsZShVLWZlLGRlPDw4LEopOmZlPD1NZSYmdGhpcy5fc2V0RW5jb2RlU2VxdWVuY2UodGhpcy5kZWNvZGVUYWJsZVNlcVtNZS1mZV0sZGUpKX19LFkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGVlKXtmb3IodmFyIHE9Z2UuYWxsb2MoZWUubGVuZ3Ro''@;'; put 'put ''Kih0aGlzLmdiMTgwMzA/NDozKSksSj10aGlzLmxlYWRTdXJyb2dhdGUsc2U9dGhpcy5zZXFPYmosYWU9LTEsZmU9MCxkZT0wOzspe2lmKC0xPT09YWUpe2lmKGZlPT1lZS5sZW5ndGgpYnJlYWs7dmFyIHZlPWVlLmNoYXJDb2RlQXQoZmUrKyl9ZWxzZSB2ZT1hZSxhZT0tMTtpZig1NTI5Njw9''@;'; put 'put ''dmUmJnZlPDU3MzQ0KWlmKHZlPDU2MzIwKXtpZigtMT09PUope0o9dmU7Y29udGludWV9Sj12ZSx2ZT1CfWVsc2UtMSE9PUo/KHZlPTY1NTM2KzEwMjQqKEotNTUyOTYpKyh2ZS01NjMyMCksSj0tMSk6dmU9QjtlbHNlLTEhPT1KJiYoYWU9dmUsdmU9QixKPS0xKTt2YXIgQWU9QjtpZih2b2lk''@;'; put 'put ''IDAhPT1zZSYmdmUhPUIpe3ZhciBrZT1zZVt2ZV07aWYoIm9iamVjdCI9PXR5cGVvZiBrZSl7c2U9a2U7Y29udGludWV9Im51bWJlciI9PXR5cGVvZiBrZT9BZT1rZTpudWxsPT1rZSYmdm9pZCAwIT09KGtlPXNlWy0xXSkmJihBZT1rZSxhZT12ZSksc2U9dm9pZCAwfWVsc2UgaWYodmU+PTAp''@;'; put 'put ''e3ZhciBTZT10aGlzLmVuY29kZVRhYmxlW3ZlPj44XTtpZih2b2lkIDAhPT1TZSYmKEFlPVNlWzI1NSZ2ZV0pLEFlPD1NZSl7c2U9dGhpcy5lbmNvZGVUYWJsZVNlcVtNZS1BZV07Y29udGludWV9aWYoQWU9PUImJnRoaXMuZ2IxODAzMCl7dmFyIEllPU4odGhpcy5nYjE4MDMwLnVDaGFycyx2''@;'; put 'put ''ZSk7aWYoLTEhPUllKXtBZT10aGlzLmdiMTgwMzAuZ2JDaGFyc1tJZV0rKHZlLXRoaXMuZ2IxODAzMC51Q2hhcnNbSWVdKSxxW2RlKytdPTEyOStNYXRoLmZsb29yKEFlLzEyNjAwKSxBZSU9MTI2MDAscVtkZSsrXT00OCtNYXRoLmZsb29yKEFlLzEyNjApLEFlJT0xMjYwLHFbZGUrK109MTI5''@;'; put 'put ''K01hdGguZmxvb3IoQWUvMTApLHFbZGUrK109NDgrKEFlJT0xMCk7Y29udGludWV9fX1BZT09PUImJihBZT10aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZSksQWU8MjU2P3FbZGUrK109QWU6QWU8NjU1MzY/KHFbZGUrK109QWU+PjgscVtkZSsrXT0yNTUmQWUpOihxW2RlKytdPUFlPj4xNixx''@;'; put 'put ''W2RlKytdPUFlPj44JjI1NSxxW2RlKytdPTI1NSZBZSl9cmV0dXJuIHRoaXMuc2VxT2JqPXNlLHRoaXMubGVhZFN1cnJvZ2F0ZT1KLHEuc2xpY2UoMCxkZSl9LFkucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2lmKC0xIT09dGhpcy5sZWFkU3Vycm9nYXRlfHx2b2lkIDAhPT10aGlzLnNlcU9i''@;'; put 'put ''ail7dmFyIGVlPWdlLmFsbG9jKDEwKSxxPTA7aWYodGhpcy5zZXFPYmope3ZhciBKPXRoaXMuc2VxT2JqWy0xXTt2b2lkIDAhPT1KJiYoSjwyNTY/ZWVbcSsrXT1KOihlZVtxKytdPUo+PjgsZWVbcSsrXT0yNTUmSikpLHRoaXMuc2VxT2JqPXZvaWQgMH1yZXR1cm4tMSE9PXRoaXMubGVhZFN1''@;'; put 'put ''cnJvZ2F0ZSYmKGVlW3ErK109dGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUsdGhpcy5sZWFkU3Vycm9nYXRlPS0xKSxlZS5zbGljZSgwLHEpfX0sWS5wcm90b3R5cGUuZmluZElkeD1OLFcucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGVlKXt2YXIgcT1nZS5hbGxvYygyKmVlLmxlbmd0aCks''@;'; put 'put ''Sj10aGlzLm5vZGVJZHgsc2U9dGhpcy5wcmV2QnVmLGFlPXRoaXMucHJldkJ1Zi5sZW5ndGgsZmU9LXRoaXMucHJldkJ1Zi5sZW5ndGg7YWU+MCYmKHNlPWdlLmNvbmNhdChbc2UsZWUuc2xpY2UoMCwxMCldKSk7Zm9yKHZhciB2ZT0wLEFlPTA7dmU8ZWUubGVuZ3RoO3ZlKyspe3ZhciBkZSxr''@;'; put 'put ''ZT12ZT49MD9lZVt2ZV06c2VbdmUrYWVdO2lmKCEoKGRlPXRoaXMuZGVjb2RlVGFibGVzW0pdW2tlXSk+PTApKWlmKGRlPT09Qil2ZT1mZSxkZT10aGlzLmRlZmF1bHRDaGFyVW5pY29kZS5jaGFyQ29kZUF0KDApO2Vsc2UgaWYoLTI9PT1kZSl7dmFyIFNlPWZlPj0wP2VlLnNsaWNlKGZlLHZl''@;'; put 'put ''KzEpOnNlLnNsaWNlKGZlK2FlLHZlKzErYWUpLEllPTEyNjAwKihTZVswXS0xMjkpKzEyNjAqKFNlWzFdLTQ4KSsxMCooU2VbMl0tMTI5KSsoU2VbM10tNDgpLFRlPU4odGhpcy5nYjE4MDMwLmdiQ2hhcnMsSWUpO2RlPXRoaXMuZ2IxODAzMC51Q2hhcnNbVGVdK0llLXRoaXMuZ2IxODAzMC5n''@;'; put 'put ''YkNoYXJzW1RlXX1lbHNle2lmKGRlPD1VKXtKPVUtZGU7Y29udGludWV9aWYoIShkZTw9TWUpKXRocm93IG5ldyBFcnJvcigiaWNvbnYtbGl0ZSBpbnRlcm5hbCBlcnJvcjogaW52YWxpZCBkZWNvZGluZyB0YWJsZSB2YWx1ZSAiK2RlKyIgYXQgIitKKyIvIitrZSk7Zm9yKHZhciBFZT10aGlz''@;'; put 'put ''LmRlY29kZVRhYmxlU2VxW01lLWRlXSxoZT0wO2hlPEVlLmxlbmd0aC0xO2hlKyspcVtBZSsrXT0yNTUmKGRlPUVlW2hlXSkscVtBZSsrXT1kZT4+ODtkZT1FZVtFZS5sZW5ndGgtMV19aWYoZGU+NjU1MzUpe2RlLT02NTUzNjt2YXIgTz01NTI5NitNYXRoLmZsb29yKGRlLzEwMjQpO3FbQWUr''@;'; put 'put ''K109MjU1Jk8scVtBZSsrXT1PPj44LGRlPTU2MzIwK2RlJTEwMjR9cVtBZSsrXT0yNTUmZGUscVtBZSsrXT1kZT4+OCxKPTAsZmU9dmUrMX1yZXR1cm4gdGhpcy5ub2RlSWR4PUosdGhpcy5wcmV2QnVmPWZlPj0wP2VlLnNsaWNlKGZlKTpzZS5zbGljZShmZSthZSkscS5zbGljZSgwLEFlKS50''@;'; put 'put ''b1N0cmluZygidWNzMiIpfSxXLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIGVlPSIiO3RoaXMucHJldkJ1Zi5sZW5ndGg+MDspe2VlKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZTt2YXIgcT10aGlzLnByZXZCdWYuc2xpY2UoMSk7dGhpcy5wcmV2QnVmPWdlLmFsbG9jKDApLHRo''@;'; put 'put ''aXMubm9kZUlkeD0wLHEubGVuZ3RoPjAmJihlZSs9dGhpcy53cml0ZShxKSl9cmV0dXJuIHRoaXMubm9kZUlkeD0wLGVlfX0sNDk1MDQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9e3NoaWZ0amlzOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gTCgy''@;'; put 'put ''NzAxNCl9LGVuY29kZUFkZDp7Ilx4YTUiOjkyLCJcdTIwM2UiOjEyNn0sZW5jb2RlU2tpcFZhbHM6W3tmcm9tOjYwNzM2LHRvOjYzODA4fV19LGNzc2hpZnRqaXM6InNoaWZ0amlzIixtc2thbmppOiJzaGlmdGppcyIsc2ppczoic2hpZnRqaXMiLHdpbmRvd3MzMWo6InNoaWZ0amlzIixtczMx''@;'; put 'put ''ajoic2hpZnRqaXMiLHhzamlzOiJzaGlmdGppcyIsd2luZG93czkzMjoic2hpZnRqaXMiLG1zOTMyOiJzaGlmdGppcyIsOTMyOiJzaGlmdGppcyIsY3A5MzI6InNoaWZ0amlzIixldWNqcDp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIEwoMzE1MzIpfSxlbmNvZGVBZGQ6''@;'; put 'put ''eyJceGE1Ijo5MiwiXHUyMDNlIjoxMjZ9fSxnYjIzMTI6ImNwOTM2IixnYjIzMTI4MDoiY3A5MzYiLGdiMjMxMjE5ODA6ImNwOTM2Iixjc2diMjMxMjoiY3A5MzYiLGNzaXNvNThnYjIzMTI4MDoiY3A5MzYiLGV1Y2NuOiJjcDkzNiIsd2luZG93czkzNjoiY3A5MzYiLG1zOTM2OiJjcDkzNiIs''@;'; put 'put ''OTM2OiJjcDkzNiIsY3A5MzY6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBMKDEzMzM2KX19LGdiazp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIEwoMTMzMzYpLmNvbmNhdChMKDQ0MzQ2KSl9fSx4Z2JrOiJnYmsiLGlzb2lyNTg6ImdiayIsZ2Ix''@;'; put 'put ''ODAzMDp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIEwoMTMzMzYpLmNvbmNhdChMKDQ0MzQ2KSl9LGdiMTgwMzA6ZnVuY3Rpb24oKXtyZXR1cm4gTCgzNjI1OCl9LGVuY29kZVNraXBWYWxzOlsxMjhdLGVuY29kZUFkZDp7Ilx1MjBhYyI6NDE2OTl9fSxjaGluZXNlOiJn''@;'; put 'put ''YjE4MDMwIix3aW5kb3dzOTQ5OiJjcDk0OSIsbXM5NDk6ImNwOTQ5Iiw5NDk6ImNwOTQ5IixjcDk0OTp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIEwoNzczNDgpfX0sY3NldWNrcjoiY3A5NDkiLGNza3NjNTYwMTE5ODc6ImNwOTQ5IixldWNrcjoiY3A5NDkiLGlzb2ly''@;'; put 'put ''MTQ5OiJjcDk0OSIsa29yZWFuOiJjcDk0OSIsa3NjNTYwMTE5ODc6ImNwOTQ5Iixrc2M1NjAxMTk4OToiY3A5NDkiLGtzYzU2MDE6ImNwOTQ5Iix3aW5kb3dzOTUwOiJjcDk1MCIsbXM5NTA6ImNwOTUwIiw5NTA6ImNwOTUwIixjcDk1MDp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIEwoNzQyODQpfX0sYmlnNToiYmlnNWhrc2NzIixiaWc1aGtzY3M6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBMKDc0Mjg0KS5jb25jYXQoTCg2MzQ4MCkpfSxlbmNvZGVTa2lwVmFsczpbNDE2NzZdfSxjbmJpZzU6ImJpZzVoa3NjcyIsY3NiaWc1OiJiaWc1''@;'; put 'put ''aGtzY3MiLHh4YmlnNToiYmlnNWhrc2NzIn19LDc5NzE0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIGdlPVtMKDU2OTE3KSxMKDgyNjA2KSxMKDkzNzYwKSxMKDI4Nzc4KSxMKDQxMzEzKSxMKDY4NjE5KSxMKDc0MTE0KSxMKDQ2OTc4KSxMKDQ5NTA0KV0sQj0wO0I8Z2UubGVu''@;'; put 'put ''Z3RoO0IrKyl7dmFyIEU9Z2VbQl07Zm9yKHZhciBNZSBpbiBFKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChFLE1lKSYmKEplW01lXT1FW01lXSl9fSw1NjkxNzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNjIwMzgpLkJ1ZmZlcjtmdW5jdGlvbiBCKGxl''@;'; put 'put ''LFkpe3RoaXMuZW5jPWxlLmVuY29kaW5nTmFtZSx0aGlzLmJvbUF3YXJlPWxlLmJvbUF3YXJlLCJiYXNlNjQiPT09dGhpcy5lbmM/dGhpcy5lbmNvZGVyPVE6ImNlc3U4Ij09PXRoaXMuZW5jJiYodGhpcy5lbmM9InV0ZjgiLHRoaXMuZW5jb2Rlcj1aLCJcdXsxZjRhOX0iIT09Z2UuZnJvbSgi''@;'; put 'put ''ZWRhMGJkZWRiMmE5IiwiaGV4IikudG9TdHJpbmcoKSYmKHRoaXMuZGVjb2Rlcj1pZSx0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1ZLmRlZmF1bHRDaGFyVW5pY29kZSkpfVhlLmV4cG9ydHM9e3V0Zjg6e3R5cGU6Il9pbnRlcm5hbCIsYm9tQXdhcmU6ITB9LGNlc3U4Ont0eXBlOiJfaW50ZXJu''@;'; put 'put ''YWwiLGJvbUF3YXJlOiEwfSx1bmljb2RlMTF1dGY4OiJ1dGY4Iix1Y3MyOnt0eXBlOiJfaW50ZXJuYWwiLGJvbUF3YXJlOiEwfSx1dGYxNmxlOiJ1Y3MyIixiaW5hcnk6e3R5cGU6Il9pbnRlcm5hbCJ9LGJhc2U2NDp7dHlwZToiX2ludGVybmFsIn0saGV4Ont0eXBlOiJfaW50ZXJuYWwifSxf''@;'; put 'put ''aW50ZXJuYWw6Qn0sQi5wcm90b3R5cGUuZW5jb2Rlcj1VLEIucHJvdG90eXBlLmRlY29kZXI9TWU7dmFyIEU9TCg3MzA1NCkucztmdW5jdGlvbiBNZShsZSxZKXtFLmNhbGwodGhpcyxZLmVuYyl9ZnVuY3Rpb24gVShsZSxZKXt0aGlzLmVuYz1ZLmVuY31mdW5jdGlvbiBRKGxlLFkpe3RoaXMu''@;'; put 'put ''cHJldlN0cj0iIn1mdW5jdGlvbiBaKGxlLFkpe31mdW5jdGlvbiBpZShsZSxZKXt0aGlzLmFjYz0wLHRoaXMuY29udEJ5dGVzPTAsdGhpcy5hY2NCeXRlcz0wLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPVkuZGVmYXVsdENoYXJVbmljb2RlfUUucHJvdG90eXBlLmVuZHx8KEUucHJvdG90eXBl''@;'; put 'put ''LmVuZD1mdW5jdGlvbigpe30pLE1lLnByb3RvdHlwZT1FLnByb3RvdHlwZSxVLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihsZSl7cmV0dXJuIGdlLmZyb20obGUsdGhpcy5lbmMpfSxVLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LFEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGxlKXt2''@;'; put 'put ''YXIgWT0obGU9dGhpcy5wcmV2U3RyK2xlKS5sZW5ndGgtbGUubGVuZ3RoJTQ7cmV0dXJuIHRoaXMucHJldlN0cj1sZS5zbGljZShZKSxsZT1sZS5zbGljZSgwLFkpLGdlLmZyb20obGUsImJhc2U2NCIpfSxRLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ2UuZnJvbSh0aGlzLnBy''@;'; put 'put ''ZXZTdHIsImJhc2U2NCIpfSxaLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihsZSl7Zm9yKHZhciBZPWdlLmFsbG9jKDMqbGUubGVuZ3RoKSxXPTAsTj0wO048bGUubGVuZ3RoO04rKyl7dmFyIGVlPWxlLmNoYXJDb2RlQXQoTik7ZWU8MTI4P1lbVysrXT1lZTplZTwyMDQ4PyhZW1crK109MTky''@;'; put 'put ''KyhlZT4+PjYpLFlbVysrXT0xMjgrKDYzJmVlKSk6KFlbVysrXT0yMjQrKGVlPj4+MTIpLFlbVysrXT0xMjgrKGVlPj4+NiY2MyksWVtXKytdPTEyOCsoNjMmZWUpKX1yZXR1cm4gWS5zbGljZSgwLFcpfSxaLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LGllLnByb3RvdHlwZS53cml0ZT1m''@;'; put 'put ''dW5jdGlvbihsZSl7Zm9yKHZhciBZPXRoaXMuYWNjLFc9dGhpcy5jb250Qnl0ZXMsTj10aGlzLmFjY0J5dGVzLGVlPSIiLHE9MDtxPGxlLmxlbmd0aDtxKyspe3ZhciBKPWxlW3FdOzEyOCE9KDE5MiZKKT8oVz4wJiYoZWUrPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlLFc9MCksSjwxMjg/ZWUr''@;'; put 'put ''PVN0cmluZy5mcm9tQ2hhckNvZGUoSik6SjwyMjQ/KFk9MzEmSixXPTEsTj0xKTpKPDI0MD8oWT0xNSZKLFc9MixOPTEpOmVlKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZSk6Vz4wPyhZPVk8PDZ8NjMmSixOKyssMD09LS1XJiYoZWUrPTI9PT1OJiZZPDEyOCYmWT4wfHwzPT09TiYmWTwyMDQ4''@;'; put 'put ''P3RoaXMuZGVmYXVsdENoYXJVbmljb2RlOlN0cmluZy5mcm9tQ2hhckNvZGUoWSkpKTplZSs9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGV9cmV0dXJuIHRoaXMuYWNjPVksdGhpcy5jb250Qnl0ZXM9Vyx0aGlzLmFjY0J5dGVzPU4sZWV9LGllLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''bGU9MDtyZXR1cm4gdGhpcy5jb250Qnl0ZXM+MCYmKGxlKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZSksbGV9fSw0MTMxMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNjIwMzgpLkJ1ZmZlcjtmdW5jdGlvbiBCKFUsUSl7aWYoIVUpdGhyb3cgbmV3IEVycm9yKCJTQkNTIGNv''@;'; put 'put ''ZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLiIpO2lmKCFVLmNoYXJzfHwxMjghPT1VLmNoYXJzLmxlbmd0aCYmMjU2IT09VS5jaGFycy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyAnIitVLnR5cGUrIicgaGFzIGluY29ycmVjdCAnY2hhcnMnIChtdXN0IGJlIG9mIGxl''@;'; put 'put ''biAxMjggb3IgMjU2KSIpO2lmKDEyOD09PVUuY2hhcnMubGVuZ3RoKXtmb3IodmFyIFo9IiIsaWU9MDtpZTwxMjg7aWUrKylaKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGllKTtVLmNoYXJzPVorVS5jaGFyc310aGlzLmRlY29kZUJ1Zj1nZS5mcm9tKFUuY2hhcnMsInVjczIiKTt2YXIgbGU9Z2Uu''@;'; put 'put ''YWxsb2MoNjU1MzYsUS5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVBdCgwKSk7Zm9yKGllPTA7aWU8VS5jaGFycy5sZW5ndGg7aWUrKylsZVtVLmNoYXJzLmNoYXJDb2RlQXQoaWUpXT1pZTt0aGlzLmVuY29kZUJ1Zj1sZX1mdW5jdGlvbiBFKFUsUSl7dGhpcy5lbmNvZGVCdWY9US5l''@;'; put 'put ''bmNvZGVCdWZ9ZnVuY3Rpb24gTWUoVSxRKXt0aGlzLmRlY29kZUJ1Zj1RLmRlY29kZUJ1Zn1KZS5fc2Jjcz1CLEIucHJvdG90eXBlLmVuY29kZXI9RSxCLnByb3RvdHlwZS5kZWNvZGVyPU1lLEUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKFUpe2Zvcih2YXIgUT1nZS5hbGxvYyhVLmxlbmd0''@;'; put 'put ''aCksWj0wO1o8VS5sZW5ndGg7WisrKVFbWl09dGhpcy5lbmNvZGVCdWZbVS5jaGFyQ29kZUF0KFopXTtyZXR1cm4gUX0sRS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fSxNZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oVSl7Zm9yKHZhciBRPXRoaXMuZGVjb2RlQnVmLFo9Z2UuYWxsb2Mo''@;'; put 'put ''MipVLmxlbmd0aCksaWU9MCxsZT0wLFk9MDtZPFUubGVuZ3RoO1krKylaW2xlPTIqWV09UVtpZT0yKlVbWV1dLFpbbGUrMV09UVtpZSsxXTtyZXR1cm4gWi50b1N0cmluZygidWNzMiIpfSxNZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fX0sNzQxMTQ6WGU9PnsidXNlIHN0cmljdCI7WGUu''@;'; put 'put ''ZXhwb3J0cz17NDM3OiJjcDQzNyIsNzM3OiJjcDczNyIsNzc1OiJjcDc3NSIsODUwOiJjcDg1MCIsODUyOiJjcDg1MiIsODU1OiJjcDg1NSIsODU2OiJjcDg1NiIsODU3OiJjcDg1NyIsODU4OiJjcDg1OCIsODYwOiJjcDg2MCIsODYxOiJjcDg2MSIsODYyOiJjcDg2MiIsODYzOiJjcDg2MyIs''@;'; put 'put ''ODY0OiJjcDg2NCIsODY1OiJjcDg2NSIsODY2OiJjcDg2NiIsODY5OiJjcDg2OSIsODc0OiJ3aW5kb3dzODc0Iiw5MjI6ImNwOTIyIiwxMDQ2OiJjcDEwNDYiLDExMjQ6ImNwMTEyNCIsMTEyNToiY3AxMTI1IiwxMTI5OiJjcDExMjkiLDExMzM6ImNwMTEzMyIsMTE2MToiY3AxMTYxIiwxMTYy''@;'; put 'put ''OiJjcDExNjIiLDExNjM6ImNwMTE2MyIsMTI1MDoid2luZG93czEyNTAiLDEyNTE6IndpbmRvd3MxMjUxIiwxMjUyOiJ3aW5kb3dzMTI1MiIsMTI1Mzoid2luZG93czEyNTMiLDEyNTQ6IndpbmRvd3MxMjU0IiwxMjU1OiJ3aW5kb3dzMTI1NSIsMTI1Njoid2luZG93czEyNTYiLDEyNTc6Indp''@;'; put 'put ''bmRvd3MxMjU3IiwxMjU4OiJ3aW5kb3dzMTI1OCIsMjg1OTE6Imlzbzg4NTkxIiwyODU5MjoiaXNvODg1OTIiLDI4NTkzOiJpc284ODU5MyIsMjg1OTQ6Imlzbzg4NTk0IiwyODU5NToiaXNvODg1OTUiLDI4NTk2OiJpc284ODU5NiIsMjg1OTc6Imlzbzg4NTk3IiwyODU5ODoiaXNvODg1OTgi''@;'; put 'put ''LDI4NTk5OiJpc284ODU5OSIsMjg2MDA6Imlzbzg4NTkxMCIsMjg2MDE6Imlzbzg4NTkxMSIsMjg2MDM6Imlzbzg4NTkxMyIsMjg2MDQ6Imlzbzg4NTkxNCIsMjg2MDU6Imlzbzg4NTkxNSIsMjg2MDY6Imlzbzg4NTkxNiIsd2luZG93czg3NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUw''@;'; put 'put ''ZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMz''@;'; put 'put ''XHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUw''@;'; put 'put ''ZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sd2luODc0OiJ3aW5kb3dzODc0IixjcDg3NDoid2luZG93czg3NCIsd2luZG93czEyNTA6e3R5cGU6Il9zYmNz''@;'; put 'put ''IixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHVmZmZkXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHUwMTYwXHUyMDM5XHUwMTVhXHUwMTY0XHUwMTdkXHUwMTc5XHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIy''@;'; put 'put ''XHUwMTYxXHUyMDNhXHUwMTViXHUwMTY1XHUwMTdlXHUwMTdhXHhhMFx1MDJjN1x1MDJkOFx1MDE0MVx4YTRcdTAxMDRceGE2XHhhN1x4YThceGE5XHUwMTVlXHhhYlx4YWNceGFkXHhhZVx1MDE3Ylx4YjBceGIxXHUwMmRiXHUwMTQyXHhiNFx4YjVceGI2XHhiN1x4YjhcdTAxMDVcdTAxNWZc''@;'; put 'put ''eGJiXHUwMTNkXHUwMmRkXHUwMTNlXHUwMTdjXHUwMTU0XHhjMVx4YzJcdTAxMDJceGM0XHUwMTM5XHUwMTA2XHhjN1x1MDEwY1x4YzlcdTAxMThceGNiXHUwMTFhXHhjZFx4Y2VcdTAxMGVcdTAxMTBcdTAxNDNcdTAxNDdceGQzXHhkNFx1MDE1MFx4ZDZceGQ3XHUwMTU4XHUwMTZlXHhkYVx1''@;'; put 'put ''MDE3MFx4ZGNceGRkXHUwMTYyXHhkZlx1MDE1NVx4ZTFceGUyXHUwMTAzXHhlNFx1MDEzYVx1MDEwN1x4ZTdcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExYlx4ZWRceGVlXHUwMTBmXHUwMTExXHUwMTQ0XHUwMTQ4XHhmM1x4ZjRcdTAxNTFceGY2XHhmN1x1MDE1OVx1MDE2Zlx4ZmFcdTAxNzFc''@;'; put 'put ''eGZjXHhmZFx1MDE2M1x1MDJkOSJ9LHdpbjEyNTA6IndpbmRvd3MxMjUwIixjcDEyNTA6IndpbmRvd3MxMjUwIix3aW5kb3dzMTI1MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MDJcdTA0MDNcdTIwMWFcdTA0NTNcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTIwYWNcdTIwMzBcdTA0MDlc''@;'; put 'put ''dTIwMzlcdTA0MGFcdTA0MGNcdTA0MGJcdTA0MGZcdTA0NTJcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTA0NTlcdTIwM2FcdTA0NWFcdTA0NWNcdTA0NWJcdTA0NWZceGEwXHUwNDBlXHUwNDVlXHUwNDA4XHhhNFx1MDQ5MFx4YTZceGE3''@;'; put 'put ''XHUwNDAxXHhhOVx1MDQwNFx4YWJceGFjXHhhZFx4YWVcdTA0MDdceGIwXHhiMVx1MDQwNlx1MDQ1Nlx1MDQ5MVx4YjVceGI2XHhiN1x1MDQ1MVx1MjExNlx1MDQ1NFx4YmJcdTA0NThcdTA0MDVcdTA0NTVcdTA0NTdcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZc''@;'; put 'put ''dTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0''@;'; put 'put ''MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRc''@;'; put 'put ''dTA0NGVcdTA0NGYifSx3aW4xMjUxOiJ3aW5kb3dzMTI1MSIsY3AxMjUxOiJ3aW5kb3dzMTI1MSIsd2luZG93czEyNTI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUw''@;'; put 'put ''MTUyXHVmZmZkXHUwMTdkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHUwMTdlXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFi''@;'; put 'put ''XHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRc''@;'; put 'put ''eGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4''@;'; put 'put ''ZmVceGZmIn0sd2luMTI1Mjoid2luZG93czEyNTIiLGNwMTI1Mjoid2luZG93czEyNTIiLHdpbmRvd3MxMjUzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTBcdTAzODVcdTAzODZceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHVmZmZkXHhh''@;'; put 'put ''Ylx4YWNceGFkXHhhZVx1MjAxNVx4YjBceGIxXHhiMlx4YjNcdTAzODRceGI1XHhiNlx4YjdcdTAzODhcdTAzODlcdTAzOGFceGJiXHUwMzhjXHhiZFx1MDM4ZVx1MDM4Zlx1MDM5MFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1''@;'; put 'put ''MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1ZmZmZFx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNhYVx1MDNhYlx1MDNhY1x1MDNhZFx1MDNhZVx1MDNhZlx1MDNiMFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNi''@;'; put 'put ''Nlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjMlx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1MDNjYVx1MDNjYlx1MDNjY1x1MDNjZFx1MDNjZVx1ZmZmZCJ9LHdpbjEyNTM6Indp''@;'; put 'put ''bmRvd3MxMjUzIixjcDEyNTM6IndpbmRvd3MxMjUzIix3aW5kb3dzMTI1NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFc''@;'; put 'put ''eGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxMWVceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRh''@;'; put 'put ''XHhkYlx4ZGNcdTAxMzBcdTAxNWVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDExZlx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDEzMVx1MDE1Zlx4ZmYifSx3aW4x''@;'; put 'put ''MjU0OiJ3aW5kb3dzMTI1NCIsY3AxMjU0OiJ3aW5kb3dzMTI1NCIsd2luZG93czEyNTU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx4YTFceGEyXHhhM1x1MjBhYVx4YTVceGE2XHhhN1x4YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFm''@;'; put 'put ''XHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhiY1x4YmRceGJlXHhiZlx1MDViMFx1MDViMVx1MDViMlx1MDViM1x1MDViNFx1MDViNVx1MDViNlx1MDViN1x1MDViOFx1MDViOVx1MDViYVx1MDViYlx1MDViY1x1MDViZFx1MDViZVx1MDViZlx1MDVj''@;'; put 'put ''MFx1MDVjMVx1MDVjMlx1MDVjM1x1MDVmMFx1MDVmMVx1MDVmMlx1MDVmM1x1MDVmNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1''@;'; put 'put ''MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCJ9LHdpbjEyNTU6IndpbmRvd3MxMjU1IixjcDEyNTU6IndpbmRvd3MxMjU1Iix3''@;'; put 'put ''aW5kb3dzMTI1Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdTA2N2VcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTA2NzlcdTIwMzlcdTAxNTJcdTA2ODZcdTA2OThcdTA2ODhcdTA2YWZcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJc''@;'; put 'put ''dTIwMTNcdTIwMTRcdTA2YTlcdTIxMjJcdTA2OTFcdTIwM2FcdTAxNTNcdTIwMGNcdTIwMGRcdTA2YmFceGEwXHUwNjBjXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdTA2YmVceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4''@;'; put 'put ''YjlcdTA2MWJceGJiXHhiY1x4YmRceGJlXHUwNjFmXHUwNmMxXHUwNjIxXHUwNjIyXHUwNjIzXHUwNjI0XHUwNjI1XHUwNjI2XHUwNjI3XHUwNjI4XHUwNjI5XHUwNjJhXHUwNjJiXHUwNjJjXHUwNjJkXHUwNjJlXHUwNjJmXHUwNjMwXHUwNjMxXHUwNjMyXHUwNjMzXHUwNjM0XHUwNjM1XHUw''@;'; put 'put ''NjM2XHhkN1x1MDYzN1x1MDYzOFx1MDYzOVx1MDYzYVx1MDY0MFx1MDY0MVx1MDY0Mlx1MDY0M1x4ZTBcdTA2NDRceGUyXHUwNjQ1XHUwNjQ2XHUwNjQ3XHUwNjQ4XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTA2NDlcdTA2NGFceGVlXHhlZlx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx4ZjRcdTA2''@;'; put 'put ''NGZcdTA2NTBceGY3XHUwNjUxXHhmOVx1MDY1Mlx4ZmJceGZjXHUyMDBlXHUyMDBmXHUwNmQyIn0sd2luMTI1Njoid2luZG93czEyNTYiLGNwMTI1Njoid2luZG93czEyNTYiLHdpbmRvd3MxMjU3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1ZmZmZFx1MjAxZVx1''@;'; put 'put ''MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx4YThcdTAyYzdceGI4XHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHhhZlx1MDJkYlx1ZmZmZFx4YTBcdWZmZmRc''@;'; put 'put ''eGEyXHhhM1x4YTRcdWZmZmRceGE2XHhhN1x4ZDhceGE5XHUwMTU2XHhhYlx4YWNceGFkXHhhZVx4YzZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4ZjhceGI5XHUwMTU3XHhiYlx4YmNceGJkXHhiZVx4ZTZcdTAxMDRcdTAxMmVcdTAxMDBcdTAxMDZceGM0XHhjNVx1MDExOFx1''@;'; put 'put ''MDExMlx1MDEwY1x4YzlcdTAxNzlcdTAxMTZcdTAxMjJcdTAxMzZcdTAxMmFcdTAxM2JcdTAxNjBcdTAxNDNcdTAxNDVceGQzXHUwMTRjXHhkNVx4ZDZceGQ3XHUwMTcyXHUwMTQxXHUwMTVhXHUwMTZhXHhkY1x1MDE3Ylx1MDE3ZFx4ZGZcdTAxMDVcdTAxMmZcdTAxMDFcdTAxMDdceGU0XHhl''@;'; put 'put ''NVx1MDExOVx1MDExM1x1MDEwZFx4ZTlcdTAxN2FcdTAxMTdcdTAxMjNcdTAxMzdcdTAxMmJcdTAxM2NcdTAxNjFcdTAxNDRcdTAxNDZceGYzXHUwMTRkXHhmNVx4ZjZceGY3XHUwMTczXHUwMTQyXHUwMTViXHUwMTZiXHhmY1x1MDE3Y1x1MDE3ZVx1MDJkOSJ9LHdpbjEyNTc6IndpbmRvd3Mx''@;'; put 'put ''MjU3IixjcDEyNTc6IndpbmRvd3MxMjU3Iix3aW5kb3dzMTI1ODp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdWZmZmRcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIw''@;'; put 'put ''MThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhi''@;'; put 'put ''M1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4''@;'; put 'put ''ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJc''@;'; put 'put ''eGZmIn0sd2luMTI1ODoid2luZG93czEyNTgiLGNwMTI1ODoid2luZG93czEyNTgiLGlzbzg4NTkxOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4''@;'; put 'put ''OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhi''@;'; put 'put ''ZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3''@;'; put 'put ''XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0sY3AyODU5MToiaXNvODg1OTEiLGlzbzg4NTkyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNc''@;'; put 'put ''eDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDJkOFx1MDE0MVx4YTRcdTAxM2RcdTAxNWFceGE3XHhhOFx1MDE2MFx1''@;'; put 'put ''MDE1ZVx1MDE2NFx1MDE3OVx4YWRcdTAxN2RcdTAxN2JceGIwXHUwMTA1XHUwMmRiXHUwMTQyXHhiNFx1MDEzZVx1MDE1Ylx1MDJjN1x4YjhcdTAxNjFcdTAxNWZcdTAxNjVcdTAxN2FcdTAyZGRcdTAxN2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEwMlx4YzRcdTAxMzlcdTAxMDZceGM3XHUw''@;'; put 'put ''MTBjXHhjOVx1MDExOFx4Y2JcdTAxMWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1MDE0N1x4ZDNceGQ0XHUwMTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4''@;'; put 'put ''ZTlcdTAxMTlceGViXHUwMTFiXHhlZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhceGYzXHhmNFx1MDE1MVx4ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5In0sY3AyODU5MjoiaXNvODg1OTIiLGlzbzg4NTkzOnt0eXBlOiJfc2JjcyIsY2hhcnM6''@;'; put 'put ''Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEyNlx1MDJkOFx4YTNceGE0XHVmZmZkXHUwMTI0''@;'; put 'put ''XHhhN1x4YThcdTAxMzBcdTAxNWVcdTAxMWVcdTAxMzRceGFkXHVmZmZkXHUwMTdiXHhiMFx1MDEyN1x4YjJceGIzXHhiNFx4YjVcdTAxMjVceGI3XHhiOFx1MDEzMVx1MDE1Zlx1MDExZlx1MDEzNVx4YmRcdWZmZmRcdTAxN2NceGMwXHhjMVx4YzJcdWZmZmRceGM0XHUwMTBhXHUwMTA4XHhj''@;'; put 'put ''N1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHVmZmZkXHhkMVx4ZDJceGQzXHhkNFx1MDEyMFx4ZDZceGQ3XHUwMTFjXHhkOVx4ZGFceGRiXHhkY1x1MDE2Y1x1MDE1Y1x4ZGZceGUwXHhlMVx4ZTJcdWZmZmRceGU0XHUwMTBiXHUwMTA5XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVj''@;'; put 'put ''XHhlZFx4ZWVceGVmXHVmZmZkXHhmMVx4ZjJceGYzXHhmNFx1MDEyMVx4ZjZceGY3XHUwMTFkXHhmOVx4ZmFceGZiXHhmY1x1MDE2ZFx1MDE1ZFx1MDJkOSJ9LGNwMjg1OTM6Imlzbzg4NTkzIixpc284ODU5NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVc''@;'; put 'put ''eDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAxMzhcdTAxNTZceGE0XHUwMTI4XHUwMTNiXHhhN1x4YThcdTAxNjBcdTAxMTJcdTAx''@;'; put 'put ''MjJcdTAxNjZceGFkXHUwMTdkXHhhZlx4YjBcdTAxMDVcdTAyZGJcdTAxNTdceGI0XHUwMTI5XHUwMTNjXHUwMmM3XHhiOFx1MDE2MVx1MDExM1x1MDEyM1x1MDE2N1x1MDE0YVx1MDE3ZVx1MDE0Ylx1MDEwMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx1MDEyZVx1MDEwY1x4YzlcdTAxMThc''@;'; put 'put ''eGNiXHUwMTE2XHhjZFx4Y2VcdTAxMmFcdTAxMTBcdTAxNDVcdTAxNGNcdTAxMzZceGQ0XHhkNVx4ZDZceGQ3XHhkOFx1MDE3Mlx4ZGFceGRiXHhkY1x1MDE2OFx1MDE2YVx4ZGZcdTAxMDFceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZcdTAxMmZcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExN1x4''@;'; put 'put ''ZWRceGVlXHUwMTJiXHUwMTExXHUwMTQ2XHUwMTRkXHUwMTM3XHhmNFx4ZjVceGY2XHhmN1x4ZjhcdTAxNzNceGZhXHhmYlx4ZmNcdTAxNjlcdTAxNmJcdTAyZDkifSxjcDI4NTk0OiJpc284ODU5NCIsaXNvODg1OTU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRc''@;'; put 'put ''eDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwNDAxXHUwNDAyXHUwNDAzXHUwNDA0XHUwNDA1XHUwNDA2XHUwNDA3XHUwNDA4XHUwNDA5''@;'; put 'put ''XHUwNDBhXHUwNDBiXHUwNDBjXHhhZFx1MDQwZVx1MDQwZlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQy''@;'; put 'put ''NVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1''@;'; put 'put ''MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MjExNlx1MDQ1MVx1MDQ1Mlx1MDQ1M1x1MDQ1NFx1MDQ1NVx1MDQ1Nlx1MDQ1N1x1MDQ1OFx1MDQ1OVx1MDQ1YVx1MDQ1Ylx1MDQ1''@;'; put 'put ''Y1x4YTdcdTA0NWVcdTA0NWYifSxjcDI4NTk1OiJpc284ODU5NSIsaXNvODg1OTY6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3''@;'; put 'put ''XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHVmZmZkXHVmZmZkXHVmZmZkXHhhNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDYwY1x4YWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA2MWJcdWZmZmRcdWZmZmRcdWZmZmRcdTA2MWZcdWZmZmRcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2''@;'; put 'put ''MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZcdTA2MzdcdTA2MzhcdTA2MzlcdTA2M2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA2NDBcdTA2NDFcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTA2NGJcdTA2NGNcdTA2NGRc''@;'; put 'put ''dTA2NGVcdTA2NGZcdTA2NTBcdTA2NTFcdTA2NTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxjcDI4NTk2OiJpc284ODU5NiIsaXNvODg1OTc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4''@;'; put 'put ''ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUyMDE4XHUyMDE5XHhhM1x1MjBhY1x1MjBhZlx4YTZceGE3XHhh''@;'; put 'put ''OFx4YTlcdTAzN2FceGFiXHhhY1x4YWRcdWZmZmRcdTIwMTVceGIwXHhiMVx4YjJceGIzXHUwMzg0XHUwMzg1XHUwMzg2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhlXHUwMzhmXHUwMzkwXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3''@;'; put 'put ''XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2FhXHUwM2FiXHUwM2FjXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUw''@;'; put 'put ''M2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUwM2NhXHUwM2NiXHUwM2NjXHUwM2NkXHUwM2Nl''@;'; put 'put ''XHVmZmZkIn0sY3AyODU5NzoiaXNvODg1OTciLGlzbzg4NTk4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5''@;'; put 'put ''YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1ZmZmZFx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhiY1x4YmRceGJlXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUyMDE3XHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1XHUwNWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4''@;'; put 'put ''XHUwNWU5XHUwNWVhXHVmZmZkXHVmZmZkXHUyMDBlXHUyMDBmXHVmZmZkIn0sY3AyODU5ODoiaXNvODg1OTgiLGlzbzg4NTk5Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5''@;'; put 'put ''MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJh''@;'; put 'put ''XHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTFlXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMTMwXHUwMTVlXHhkZlx4ZTBceGUxXHhl''@;'; put 'put ''Mlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxMWZceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxMzFcdTAxNWZceGZmIn0sY3AyODU5OToiaXNvODg1OTkiLGlzbzg4NTkxMDp7dHlwZToiX3Ni''@;'; put 'put ''Y3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAxMTJcdTAxMjJcdTAx''@;'; put 'put ''MmFcdTAxMjhcdTAxMzZceGE3XHUwMTNiXHUwMTEwXHUwMTYwXHUwMTY2XHUwMTdkXHhhZFx1MDE2YVx1MDE0YVx4YjBcdTAxMDVcdTAxMTNcdTAxMjNcdTAxMmJcdTAxMjlcdTAxMzdceGI3XHUwMTNjXHUwMTExXHUwMTYxXHUwMTY3XHUwMTdlXHUyMDE1XHUwMTZiXHUwMTRiXHUwMTAwXHhj''@;'; put 'put ''MVx4YzJceGMzXHhjNFx4YzVceGM2XHUwMTJlXHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMTZceGNkXHhjZVx4Y2ZceGQwXHUwMTQ1XHUwMTRjXHhkM1x4ZDRceGQ1XHhkNlx1MDE2OFx4ZDhcdTAxNzJceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZcdTAxMDFceGUxXHhlMlx4ZTNceGU0XHhlNVx4''@;'; put 'put ''ZTZcdTAxMmZcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExN1x4ZWRceGVlXHhlZlx4ZjBcdTAxNDZcdTAxNGRceGYzXHhmNFx4ZjVceGY2XHUwMTY5XHhmOFx1MDE3M1x4ZmFceGZiXHhmY1x4ZmRceGZlXHUwMTM4In0sY3AyODYwMDoiaXNvODg1OTEwIixpc284ODU5MTE6e3R5cGU6Il9zYmNz''@;'; put 'put ''IixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0''@;'; put 'put ''XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUw''@;'; put 'put ''ZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUw''@;'; put 'put ''ZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sY3AyODYwMToiaXNvODg1OTExIixpc284ODU5MTM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhl''@;'; put 'put ''XHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUyMDFkXHhhMlx4YTNceGE0XHUyMDFlXHhhNlx4YTdceGQ4XHhhOVx1MDE1Nlx4YWJceGFjXHhhZFx4YWVceGM2XHhiMFx4YjFceGIyXHhiM1x1MjAxY1x4YjVc''@;'; put 'put ''eGI2XHhiN1x4ZjhceGI5XHUwMTU3XHhiYlx4YmNceGJkXHhiZVx4ZTZcdTAxMDRcdTAxMmVcdTAxMDBcdTAxMDZceGM0XHhjNVx1MDExOFx1MDExMlx1MDEwY1x4YzlcdTAxNzlcdTAxMTZcdTAxMjJcdTAxMzZcdTAxMmFcdTAxM2JcdTAxNjBcdTAxNDNcdTAxNDVceGQzXHUwMTRjXHhkNVx4''@;'; put 'put ''ZDZceGQ3XHUwMTcyXHUwMTQxXHUwMTVhXHUwMTZhXHhkY1x1MDE3Ylx1MDE3ZFx4ZGZcdTAxMDVcdTAxMmZcdTAxMDFcdTAxMDdceGU0XHhlNVx1MDExOVx1MDExM1x1MDEwZFx4ZTlcdTAxN2FcdTAxMTdcdTAxMjNcdTAxMzdcdTAxMmJcdTAxM2NcdTAxNjFcdTAxNDRcdTAxNDZceGYzXHUw''@;'; put 'put ''MTRkXHhmNVx4ZjZceGY3XHUwMTczXHUwMTQyXHUwMTViXHUwMTZiXHhmY1x1MDE3Y1x1MDE3ZVx1MjAxOSJ9LGNwMjg2MDM6Imlzbzg4NTkxMyIsaXNvODg1OTE0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4''@;'; put 'put ''OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MWUwMlx1MWUwM1x4YTNcdTAxMGFcdTAxMGJcdTFlMGFceGE3XHUxZTgwXHhhOVx1MWU4Mlx1MWUwYlx1MWVmMlx4YWRceGFlXHUwMTc4XHUx''@;'; put 'put ''ZTFlXHUxZTFmXHUwMTIwXHUwMTIxXHUxZTQwXHUxZTQxXHhiNlx1MWU1Nlx1MWU4MVx1MWU1N1x1MWU4M1x1MWU2MFx1MWVmM1x1MWU4NFx1MWU4NVx1MWU2MVx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxNzRceGQx''@;'; put 'put ''XHhkMlx4ZDNceGQ0XHhkNVx4ZDZcdTFlNmFceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRcdTAxNzZceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDE3NVx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx1MWU2Ylx4Zjhc''@;'; put 'put ''eGY5XHhmYVx4ZmJceGZjXHhmZFx1MDE3N1x4ZmYifSxjcDI4NjA0OiJpc284ODU5MTQiLGlzbzg4NTkxNTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4''@;'; put 'put ''OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNcdTIwYWNceGE1XHUwMTYwXHhhN1x1MDE2MVx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHUwMTdkXHhiNVx4YjZceGI3XHUwMTdlXHhiOVx4YmFc''@;'; put 'put ''eGJiXHUwMTUyXHUwMTUzXHUwMTc4XHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUy''@;'; put 'put ''XHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSxjcDI4NjA1OiJpc284ODU5MTUiLGlzbzg4NTkxNjp7dHlwZToiX3NiY3MiLGNo''@;'; put 'put ''YXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAxMDVcdTAxNDFcdTIwYWNcdTIw''@;'; put 'put ''MWVcdTAxNjBceGE3XHUwMTYxXHhhOVx1MDIxOFx4YWJcdTAxNzlceGFkXHUwMTdhXHUwMTdiXHhiMFx4YjFcdTAxMGNcdTAxNDJcdTAxN2RcdTIwMWRceGI2XHhiN1x1MDE3ZVx1MDEwZFx1MDIxOVx4YmJcdTAxNTJcdTAxNTNcdTAxNzhcdTAxN2NceGMwXHhjMVx4YzJcdTAxMDJceGM0XHUw''@;'; put 'put ''MTA2XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDExMFx1MDE0M1x4ZDJceGQzXHhkNFx1MDE1MFx4ZDZcdTAxNWFcdTAxNzBceGQ5XHhkYVx4ZGJceGRjXHUwMTE4XHUwMjFhXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRcdTAxMDdceGU2XHhlN1x4ZThceGU5''@;'; put 'put ''XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTExXHUwMTQ0XHhmMlx4ZjNceGY0XHUwMTUxXHhmNlx1MDE1Ylx1MDE3MVx4ZjlceGZhXHhmYlx4ZmNcdTAxMTlcdTAyMWJceGZmIn0sY3AyODYwNjoiaXNvODg1OTE2IixjcDQzNzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlc''@;'; put 'put ''eGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGEyXHhhM1x4YTVcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFj''@;'; put 'put ''XHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZc''@;'; put 'put ''dTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2Mw''@;'; put 'put ''XHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTQzNzoi''@;'; put 'put ''Y3A0MzciLGNzaWJtNDM3OiJjcDQzNyIsY3A3Mzc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0''@;'; put 'put ''XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2MyXHUwM2M0XHUwM2M1XHUwM2M2XHUw''@;'; put 'put ''M2M3XHUwM2M4XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0''@;'; put 'put ''XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2M5XHUwM2FjXHUwM2FkXHUwM2FlXHUwM2NhXHUw''@;'; put 'put ''M2FmXHUwM2NjXHUwM2NkXHUwM2NiXHUwM2NlXHUwMzg2XHUwMzg4XHUwMzg5XHUwMzhhXHUwMzhjXHUwMzhlXHUwMzhmXHhiMVx1MjI2NVx1MjI2NFx1MDNhYVx1MDNhYlx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtNzM3OiJjcDczNyIs''@;'; put 'put ''Y3NpYm03Mzc6ImNwNzM3IixjcDc3NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTAxMDZceGZjXHhlOVx1MDEwMVx4ZTRcdTAxMjNceGU1XHUwMTA3XHUwMTQyXHUwMTEzXHUwMTU2XHUwMTU3XHUwMTJiXHUwMTc5XHhjNFx4YzVceGM5XHhlNlx4YzZcdTAxNGRceGY2XHUwMTIyXHhhMlx1MDE1''@;'; put 'put ''YVx1MDE1Ylx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x4YTRcdTAxMDBcdTAxMmFceGYzXHUwMTdiXHUwMTdjXHUwMTdhXHUyMDFkXHhhNlx4YTlceGFlXHhhY1x4YmRceGJjXHUwMTQxXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTAxMDRcdTAxMGNcdTAxMThcdTAx''@;'; put 'put ''MTZcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxMmVcdTAxNjBcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxNzJcdTAxNmFcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTAxN2RcdTAxMDVcdTAxMGRcdTAxMTlcdTAxMTdc''@;'; put 'put ''dTAxMmZcdTAxNjFcdTAxNzNcdTAxNmJcdTAxN2VcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBceGQzXHhkZlx1MDE0Y1x1MDE0M1x4ZjVceGQ1XHhiNVx1MDE0NFx1MDEzNlx1MDEzN1x1MDEzYlx1MDEzY1x1MDE0Nlx1MDExMlx1MDE0NVx1MjAxOVx4YWRceGIx''@;'; put 'put ''XHUyMDFjXHhiZVx4YjZceGE3XHhmN1x1MjAxZVx4YjBcdTIyMTlceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCJ9LGlibTc3NToiY3A3NzUiLGNzaWJtNzc1OiJjcDc3NSIsY3A4NTA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhl''@;'; put 'put ''Ylx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1''@;'; put 'put ''OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRc''@;'; put 'put ''eGYwXHhkMFx4Y2FceGNiXHhjOFx1MDEzMVx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5XHhmZFx4ZGRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3''@;'; put 'put ''XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtODUwOiJjcDg1MCIsY3NpYm04NTA6ImNwODUwIixjcDg1Mjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx1MDE2Zlx1MDEwN1x4ZTdcdTAxNDJceGViXHUwMTUwXHUwMTUxXHhl''@;'; put 'put ''ZVx1MDE3OVx4YzRcdTAxMDZceGM5XHUwMTM5XHUwMTNhXHhmNFx4ZjZcdTAxM2RcdTAxM2VcdTAxNWFcdTAxNWJceGQ2XHhkY1x1MDE2NFx1MDE2NVx1MDE0MVx4ZDdcdTAxMGRceGUxXHhlZFx4ZjNceGZhXHUwMTA0XHUwMTA1XHUwMTdkXHUwMTdlXHUwMTE4XHUwMTE5XHhhY1x1MDE3YVx1''@;'; put 'put ''MDEwY1x1MDE1Zlx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJcdTAxMWFcdTAxNWVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxN2JcdTAxN2NcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxMDJcdTAxMDNcdTI1NWFc''@;'; put 'put ''dTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHUwMTExXHUwMTEwXHUwMTBlXHhjYlx1MDEwZlx1MDE0N1x4Y2RceGNlXHUwMTFiXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwMTYyXHUwMTZlXHUyNTgwXHhkM1x4ZGZceGQ0XHUwMTQzXHUwMTQ0XHUwMTQ4XHUwMTYw''@;'; put 'put ''XHUwMTYxXHUwMTU0XHhkYVx1MDE1NVx1MDE3MFx4ZmRceGRkXHUwMTYzXHhiNFx4YWRcdTAyZGRcdTAyZGJcdTAyYzdcdTAyZDhceGE3XHhmN1x4YjhceGIwXHhhOFx1MDJkOVx1MDE3MVx1MDE1OFx1MDE1OVx1MjVhMFx4YTAifSxpYm04NTI6ImNwODUyIixjc2libTg1MjoiY3A4NTIiLGNw''@;'; put 'put ''ODU1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQ1Mlx1MDQwMlx1MDQ1M1x1MDQwM1x1MDQ1MVx1MDQwMVx1MDQ1NFx1MDQwNFx1MDQ1NVx1MDQwNVx1MDQ1Nlx1MDQwNlx1MDQ1N1x1MDQwN1x1MDQ1OFx1MDQwOFx1MDQ1OVx1MDQwOVx1MDQ1YVx1MDQwYVx1MDQ1Ylx1MDQwYlx1MDQ1Y1x1''@;'; put 'put ''MDQwY1x1MDQ1ZVx1MDQwZVx1MDQ1Zlx1MDQwZlx1MDQ0ZVx1MDQyZVx1MDQ0YVx1MDQyYVx1MDQzMFx1MDQxMFx1MDQzMVx1MDQxMVx1MDQ0Nlx1MDQyNlx1MDQzNFx1MDQxNFx1MDQzNVx1MDQxNVx1MDQ0NFx1MDQyNFx1MDQzM1x1MDQxM1x4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUy''@;'; put 'put ''NTAyXHUyNTI0XHUwNDQ1XHUwNDI1XHUwNDM4XHUwNDE4XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUwNDM5XHUwNDE5XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUwNDNhXHUwNDFhXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZj''@;'; put 'put ''XHhhNFx1MDQzYlx1MDQxYlx1MDQzY1x1MDQxY1x1MDQzZFx1MDQxZFx1MDQzZVx1MDQxZVx1MDQzZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MDQxZlx1MDQ0Zlx1MjU4MFx1MDQyZlx1MDQ0MFx1MDQyMFx1MDQ0MVx1MDQyMVx1MDQ0Mlx1MDQyMlx1MDQ0M1x1MDQyM1x1MDQzNlx1MDQx''@;'; put 'put ''Nlx1MDQzMlx1MDQxMlx1MDQ0Y1x1MDQyY1x1MjExNlx4YWRcdTA0NGJcdTA0MmJcdTA0MzdcdTA0MTdcdTA0NDhcdTA0MjhcdTA0NGRcdTA0MmRcdTA0NDlcdTA0MjlcdTA0NDdcdTA0MjdceGE3XHUyNWEwXHhhMCJ9LGlibTg1NToiY3A4NTUiLGNzaWJtODU1OiJjcDg1NSIsY3A4NTY6e3R5''@;'; put 'put ''cGU6Il9zYmNzIixjaGFyczoiXHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1XHUwNWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUw''@;'; put 'put ''NWU4XHUwNWU5XHUwNWVhXHVmZmZkXHhhM1x1ZmZmZFx4ZDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGFlXHhhY1x4YmRceGJjXHVmZmZkXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdWZmZmRcdWZmZmRcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx1ZmZmZFx1MjU4MFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YjVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGFmXHhiNFx4''@;'; put 'put ''YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtODU2OiJjcDg1NiIsY3NpYm04NTY6ImNwODU2IixjcDg1Nzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFc''@;'; put 'put ''eGViXHhlOFx4ZWZceGVlXHUwMTMxXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx1MDEzMFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUwMTVlXHUwMTVmXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHUwMTFlXHUwMTFmXHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4''@;'; put 'put ''YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1''@;'; put 'put ''MFx1MjU2Y1x4YTRceGJhXHhhYVx4Y2FceGNiXHhjOFx1ZmZmZFx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx1ZmZmZFx4ZDdceGRhXHhkYlx4ZDlceGVjXHhmZlx4YWZceGI0XHhhZFx4YjFcdWZm''@;'; put 'put ''ZmRceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAifSxpYm04NTc6ImNwODU3Iixjc2libTg1NzoiY3A4NTciLGNwODU4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhl''@;'; put 'put ''Zlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx4ZDdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZceGFlXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkz''@;'; put 'put ''XHUyNTAyXHUyNTI0XHhjMVx4YzJceGMwXHhhOVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx4YTJceGE1XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHhlM1x4YzNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHhmMFx4ZDBc''@;'; put 'put ''eGNhXHhjYlx4YzhcdTIwYWNceGNkXHhjZVx4Y2ZcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2XHhjY1x1MjU4MFx4ZDNceGRmXHhkNFx4ZDJceGY1XHhkNVx4YjVceGZlXHhkZVx4ZGFceGRiXHhkOVx4ZmRceGRkXHhhZlx4YjRceGFkXHhiMVx1MjAxN1x4YmVceGI2XHhhN1x4ZjdceGI4''@;'; put 'put ''XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCJ9LGlibTg1ODoiY3A4NTgiLGNzaWJtODU4OiJjcDg1OCIsY3A4NjA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTNceGUwXHhjMVx4ZTdceGVhXHhjYVx4ZThceGNkXHhkNFx4ZWNceGMzXHhjMlx4Yzlc''@;'; put 'put ''eGMwXHhjOFx4ZjRceGY1XHhmMlx4ZGFceGY5XHhjY1x4ZDVceGRjXHhhMlx4YTNceGQ5XHUyMGE3XHhkM1x4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4ZDJceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1''@;'; put 'put ''NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRc''@;'; put 'put ''dTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1''@;'; put 'put ''MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2MDoiY3A4NjAiLGNzaWJtODYwOiJjcDg2MCIsY3A4NjE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNc''@;'; put 'put ''eGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGQwXHhmMFx4ZGVceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmZVx4ZmJceGRkXHhmZFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4YzFceGNkXHhkM1x4ZGFceGJmXHUyMzEw''@;'; put 'put ''XHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUy''@;'; put 'put ''NTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1''@;'; put 'put ''MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04''@;'; put 'put ''NjE6ImNwODYxIixjc2libTg2MToiY3A4NjEiLGNwODYyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1''@;'; put 'put ''MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx4YTJceGEzXHhhNVx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUw''@;'; put 'put ''Mlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1''@;'; put 'put ''MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUw''@;'; put 'put ''M2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODYyOiJjcDg2MiIsY3NpYm04NjI6ImNwODYyIixjcDg2Mzp7dHlwZToiX3NiY3Mi''@;'; put 'put ''LGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhjMlx4ZTBceGI2XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHUyMDE3XHhjMFx4YTdceGM5XHhjOFx4Y2FceGY0XHhjYlx4Y2ZceGZiXHhmOVx4YTRceGQ0XHhkY1x4YTJceGEzXHhkOVx4ZGJcdTAxOTJceGE2XHhiNFx4ZjNceGZhXHhhOFx4Yjhc''@;'; put 'put ''eGIzXHhhZlx4Y2VcdTIzMTBceGFjXHhiZFx4YmNceGJlXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1''@;'; put 'put ''MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBc''@;'; put 'put ''dTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIy''@;'; put 'put ''XHUyNWEwXHhhMCJ9LGlibTg2MzoiY3A4NjMiLGNzaWJtODYzOiJjcDg2MyIsY3A4NjQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgx''@;'; put 'put ''YVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkXHUwNjZhJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YjBceGI3XHUyMjE5XHUyMjFhXHUyNTkyXHUyNTAwXHUyNTAy''@;'; put 'put ''XHUyNTNjXHUyNTI0XHUyNTJjXHUyNTFjXHUyNTM0XHUyNTEwXHUyNTBjXHUyNTE0XHUyNTE4XHUwM2IyXHUyMjFlXHUwM2M2XHhiMVx4YmRceGJjXHUyMjQ4XHhhYlx4YmJcdWZlZjdcdWZlZjhcdWZmZmRcdWZmZmRcdWZlZmJcdWZlZmNcdWZmZmRceGEwXHhhZFx1ZmU4Mlx4YTNceGE0XHVm''@;'; put 'put ''ZTg0XHVmZmZkXHVmZmZkXHVmZThlXHVmZThmXHVmZTk1XHVmZTk5XHUwNjBjXHVmZTlkXHVmZWExXHVmZWE1XHUwNjYwXHUwNjYxXHUwNjYyXHUwNjYzXHUwNjY0XHUwNjY1XHUwNjY2XHUwNjY3XHUwNjY4XHUwNjY5XHVmZWQxXHUwNjFiXHVmZWIxXHVmZWI1XHVmZWI5XHUwNjFmXHhhMlx1''@;'; put 'put ''ZmU4MFx1ZmU4MVx1ZmU4M1x1ZmU4NVx1ZmVjYVx1ZmU4Ylx1ZmU4ZFx1ZmU5MVx1ZmU5M1x1ZmU5N1x1ZmU5Ylx1ZmU5Zlx1ZmVhM1x1ZmVhN1x1ZmVhOVx1ZmVhYlx1ZmVhZFx1ZmVhZlx1ZmViM1x1ZmViN1x1ZmViYlx1ZmViZlx1ZmVjMVx1ZmVjNVx1ZmVjYlx1ZmVjZlx4YTZceGFjXHhm''@;'; put 'put ''N1x4ZDdcdWZlYzlcdTA2NDBcdWZlZDNcdWZlZDdcdWZlZGJcdWZlZGZcdWZlZTNcdWZlZTdcdWZlZWJcdWZlZWRcdWZlZWZcdWZlZjNcdWZlYmRcdWZlY2NcdWZlY2VcdWZlY2RcdWZlZTFcdWZlN2RcdTA2NTFcdWZlZTVcdWZlZTlcdWZlZWNcdWZlZjBcdWZlZjJcdWZlZDBcdWZlZDVcdWZl''@;'; put 'put ''ZjVcdWZlZjZcdWZlZGRcdWZlZDlcdWZlZjFcdTI1YTBcdWZmZmQifSxpYm04NjQ6ImNwODY0Iixjc2libTg2NDoiY3A4NjQiLGNwODY1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVc''@;'; put 'put ''eGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhhNFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1''@;'; put 'put ''MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2''@;'; put 'put ''OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFl''@;'; put 'put ''XHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODY1OiJjcDg2NSIsY3NpYm04NjU6ImNwODY1IixjcDg2Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJc''@;'; put 'put ''dTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0''@;'; put 'put ''MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJc''@;'; put 'put ''dTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1''@;'; put 'put ''NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRc''@;'; put 'put ''dTA0NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MGVcdTA0NWVceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIn0saWJtODY2OiJjcDg2NiIsY3NpYm04NjY6ImNwODY2IixjcDg2OTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzODZcdWZmZmRceGI3XHhhY1x4YTZcdTIwMThcdTIwMTlcdTAzODhcdTIwMTVcdTAzODlcdTAzOGFcdTAzYWFcdTAzOGNcdWZmZmRcdWZmZmRcdTAzOGVcdTAzYWJceGE5XHUwMzhmXHhiMlx4YjNcdTAzYWNceGEzXHUwM2FkXHUw''@;'; put 'put ''M2FlXHUwM2FmXHUwM2NhXHUwMzkwXHUwM2NjXHUwM2NkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHhiZFx1MDM5OFx1MDM5OVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUyNTYzXHUyNTUx''@;'; put 'put ''XHUyNTU3XHUyNTVkXHUwMzllXHUwMzlmXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUwM2EwXHUwM2ExXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUw''@;'; put 'put ''M2IxXHUwM2IyXHUwM2IzXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwM2I0XHUwM2I1XHUyNTgwXHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2MyXHUwM2M0XHUwMzg0XHhhZFx4YjFcdTAz''@;'; put 'put ''YzVcdTAzYzZcdTAzYzdceGE3XHUwM2M4XHUwMzg1XHhiMFx4YThcdTAzYzlcdTAzY2JcdTAzYjBcdTAzY2VcdTI1YTBceGEwIn0saWJtODY5OiJjcDg2OSIsY3NpYm04Njk6ImNwODY5IixjcDkyMjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4''@;'; put 'put ''N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx1MjAzZVx4''@;'; put 'put ''YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTYwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhc''@;'; put 'put ''eGQ5XHhkYVx4ZGJceGRjXHhkZFx1MDE3ZFx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTYxXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx1MDE3ZVx4ZmYifSxp''@;'; put 'put ''Ym05MjI6ImNwOTIyIixjc2libTkyMjoiY3A5MjIiLGNwMTA0Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZlODhceGQ3XHhmN1x1ZjhmNlx1ZjhmNVx1ZjhmNFx1ZjhmN1x1ZmU3MVx4ODhcdTI1YTBcdTI1MDJcdTI1MDBcdTI1MTBcdTI1MGNcdTI1MTRcdTI1MThcdWZlNzlcdWZlN2JcdWZl''@;'; put 'put ''N2RcdWZlN2ZcdWZlNzdcdWZlOGFcdWZlZjBcdWZlZjNcdWZlZjJcdWZlY2VcdWZlY2ZcdWZlZDBcdWZlZjZcdWZlZjhcdWZlZmFcdWZlZmNceGEwXHVmOGZhXHVmOGY5XHVmOGY4XHhhNFx1ZjhmYlx1ZmU4Ylx1ZmU5MVx1ZmU5N1x1ZmU5Ylx1ZmU5Zlx1ZmVhM1x1MDYwY1x4YWRcdWZlYTdc''@;'; put 'put ''dWZlYjNcdTA2NjBcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2NjlcdWZlYjdcdTA2MWJcdWZlYmJcdWZlYmZcdWZlY2FcdTA2MWZcdWZlY2JcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2''@;'; put 'put ''MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZcdTA2MzdcdWZlYzdcdTA2MzlcdTA2M2FcdWZlY2NcdWZlODJcdWZlODRcdWZlOGVcdWZlZDNcdTA2NDBcdTA2NDFcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVc''@;'; put 'put ''dTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVcdTA2NGZcdTA2NTBcdTA2NTFcdTA2NTJcdWZlZDdcdWZlZGJcdWZlZGZcdWY4ZmNcdWZlZjVcdWZlZjdcdWZlZjlcdWZlZmJcdWZlZTNcdWZlZTdcdWZlZWNcdWZlZTlcdWZmZmQifSxpYm0xMDQ2''@;'; put 'put ''OiJjcDEwNDYiLGNzaWJtMTA0NjoiY3AxMDQ2IixjcDExMjQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlh''@;'; put 'put ''XHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwNDAxXHUwNDAyXHUwNDkwXHUwNDA0XHUwNDA1XHUwNDA2XHUwNDA3XHUwNDA4XHUwNDA5XHUwNDBhXHUwNDBiXHUwNDBjXHhhZFx1MDQwZVx1MDQwZlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQx''@;'; put 'put ''OFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1''@;'; put 'put ''MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0''@;'; put 'put ''Zlx1MjExNlx1MDQ1MVx1MDQ1Mlx1MDQ5MVx1MDQ1NFx1MDQ1NVx1MDQ1Nlx1MDQ1N1x1MDQ1OFx1MDQ1OVx1MDQ1YVx1MDQ1Ylx1MDQ1Y1x4YTdcdTA0NWVcdTA0NWYifSxpYm0xMTI0OiJjcDExMjQiLGNzaWJtMTEyNDoiY3AxMTI0IixjcDExMjU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUw''@;'; put 'put ''NDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJi''@;'; put 'put ''XHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUy''@;'; put 'put ''NTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1''@;'; put 'put ''XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUw''@;'; put 'put ''NDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDkwXHUwNDkxXHUwNDA0XHUwNDU0XHUwNDA2XHUwNDU2XHUwNDA3XHUwNDU3XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIn0saWJtMTEyNToiY3AxMTI1Iixjc2libTExMjU6ImNwMTEyNSIsY3AxMTI5Ont0eXBlOiJfc2JjcyIsY2hhcnM6''@;'; put 'put ''Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdcdTAx''@;'; put 'put ''NTNceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x1MDE3OFx4YjVceGI2XHhiN1x1MDE1Mlx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJcdTAxMDJceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx1MDMwMFx4Y2RceGNlXHhj''@;'; put 'put ''Zlx1MDExMFx4ZDFcdTAzMDlceGQzXHhkNFx1MDFhMFx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxYWZcdTAzMDNceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTAzMDFceGVkXHhlZVx4ZWZcdTAxMTFceGYxXHUwMzIzXHhmM1x4''@;'; put 'put ''ZjRcdTAxYTFceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMWIwXHUyMGFiXHhmZiJ9LGlibTExMjk6ImNwMTEyOSIsY3NpYm0xMTI5OiJjcDExMjkiLGNwMTEzMzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4''@;'; put 'put ''OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTBlODFcdTBlODJcdTBlODRcdTBlODdcdTBlODhcdTBlYWFcdTBlOGFcdTBlOGRcdTBlOTRcdTBlOTVcdTBlOTZcdTBlOTdcdTBlOTlc''@;'; put 'put ''dTBlOWFcdTBlOWJcdTBlOWNcdTBlOWRcdTBlOWVcdTBlOWZcdTBlYTFcdTBlYTJcdTBlYTNcdTBlYTVcdTBlYTdcdTBlYWJcdTBlYWRcdTBlYWVcdWZmZmRcdWZmZmRcdWZmZmRcdTBlYWZcdTBlYjBcdTBlYjJcdTBlYjNcdTBlYjRcdTBlYjVcdTBlYjZcdTBlYjdcdTBlYjhcdTBlYjlcdTBl''@;'; put 'put ''YmNcdTBlYjFcdTBlYmJcdTBlYmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlYzBcdTBlYzFcdTBlYzJcdTBlYzNcdTBlYzRcdTBlYzhcdTBlYzlcdTBlY2FcdTBlY2JcdTBlY2NcdTBlY2RcdTBlYzZcdWZmZmRcdTBlZGNcdTBlZGRcdTIwYWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlZDBcdTBlZDFcdTBlZDJcdTBlZDNcdTBlZDRcdTBlZDVcdTBlZDZcdTBlZDdcdTBlZDhcdTBlZDlcdWZmZmRcdWZmZmRceGEyXHhhY1x4YTZcdWZmZmQifSxpYm0xMTMz''@;'; put 'put ''OiJjcDExMzMiLGNzaWJtMTEzMzoiY3AxMTMzIixjcDExNjE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTQ4XHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUw''@;'; put 'put ''ZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4''@;'; put 'put ''XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHUwZTQ5XHUwZTRhXHUwZTRiXHUyMGFjXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUw''@;'; put 'put ''ZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHhhMlx4YWNceGE2XHhhMCJ9LGlibTEx''@;'; put 'put ''NjE6ImNwMTE2MSIsY3NpYm0xMTYxOiJjcDExNjEiLGNwMTE2Mjp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNceDgxXHg4Mlx4ODNceDg0XHUyMDI2XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIw''@;'; put 'put ''MTNcdTIwMTRceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRc''@;'; put 'put ''dTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBl''@;'; put 'put ''MzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJc''@;'; put 'put ''dTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxpYm0xMTYyOiJjcDExNjIiLGNzaWJtMTE2MjoiY3AxMTYyIixjcDExNjM6''@;'; put 'put ''e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEz''@;'; put 'put ''XHUyMGFjXHhhNVx4YTZceGE3XHUwMTUzXHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNcdTAxNzhceGI1XHhiNlx4YjdcdTAxNTJceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHUwMTAyXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhj''@;'; put 'put ''YVx4Y2JcdTAzMDBceGNkXHhjZVx4Y2ZcdTAxMTBceGQxXHUwMzA5XHhkM1x4ZDRcdTAxYTBceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMWFmXHUwMzAzXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHUwMzAxXHhlZFx4ZWVceGVm''@;'; put 'put ''XHUwMTExXHhmMVx1MDMyM1x4ZjNceGY0XHUwMWExXHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDFiMFx1MjBhYlx4ZmYifSxpYm0xMTYzOiJjcDExNjMiLGNzaWJtMTE2MzoiY3AxMTYzIixtYWNjcm9hdGlhbjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhk''@;'; put 'put ''MVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVcdTAxNjBcdTIxMjJceGI0''@;'; put 'put ''XHhhOFx1MjI2MFx1MDE3ZFx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHUyMjA2XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDE2MVx1MjIyYlx4YWFceGJhXHUyMTI2XHUwMTdlXHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MDEwNlx4YWJcdTAxMGNcdTIwMjZceGEwXHhj''@;'; put 'put ''MFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUwMTEwXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx1ZmZmZFx4YTlcdTIwNDRceGE0XHUyMDM5XHUyMDNhXHhjNlx4YmJcdTIwMTNceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx1MDEwN1x4YzFcdTAxMGRceGM4XHhjZFx4''@;'; put 'put ''Y2VceGNmXHhjY1x4ZDNceGQ0XHUwMTExXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJkY1x4YWZcdTAzYzBceGNiXHUwMmRhXHhiOFx4Y2FceGU2XHUwMmM3In0sbWFjY3lyaWxsaWM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUw''@;'; put 'put ''NDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUyMDIw''@;'; put 'put ''XHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZcdTA0MDZceGFlXHhhOVx1MjEyMlx1MDQwMlx1MDQ1Mlx1MjI2MFx1MDQwM1x1MDQ1M1x1MjIxZVx4YjFcdTIyNjRcdTIyNjVcdTA0NTZceGI1XHUyMjAyXHUwNDA4XHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDA5XHUwNDU5XHUwNDBhXHUw''@;'; put 'put ''NDVhXHUwNDU4XHUwNDA1XHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDQwYlx1MDQ1Ylx1MDQwY1x1MDQ1Y1x1MDQ1NVx1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTIwMWVcdTA0MGVcdTA0NWVcdTA0MGZcdTA0NWZcdTIx''@;'; put 'put ''MTZcdTA0MDFcdTA0NTFcdTA0NGZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdc''@;'; put 'put ''dTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVceGE0In0sbWFjZ3JlZWs6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YjlceGIyXHhjOVx4YjNceGQ2XHhkY1x1MDM4NVx4ZTBceGUyXHhlNFx1MDM4NFx4YThceGU3XHhlOVx4ZThceGVhXHhlYlx4YTNcdTIxMjJc''@;'; put 'put ''eGVlXHhlZlx1MjAyMlx4YmRcdTIwMzBceGY0XHhmNlx4YTZceGFkXHhmOVx4ZmJceGZjXHUyMDIwXHUwMzkzXHUwMzk0XHUwMzk4XHUwMzliXHUwMzllXHUwM2EwXHhkZlx4YWVceGE5XHUwM2EzXHUwM2FhXHhhN1x1MjI2MFx4YjBcdTAzODdcdTAzOTFceGIxXHUyMjY0XHUyMjY1XHhhNVx1''@;'; put 'put ''MDM5Mlx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OVx1MDM5YVx1MDM5Y1x1MDNhNlx1MDNhYlx1MDNhOFx1MDNhOVx1MDNhY1x1MDM5ZFx4YWNcdTAzOWZcdTAzYTFcdTIyNDhcdTAzYTRceGFiXHhiYlx1MjAyNlx4YTBcdTAzYTVcdTAzYTdcdTAzODZcdTAzODhcdTAxNTNcdTIwMTNcdTIwMTVc''@;'; put 'put ''dTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUwMzg5XHUwMzhhXHUwMzhjXHUwMzhlXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2NjXHUwMzhmXHUwM2NkXHUwM2IxXHUwM2IyXHUwM2M4XHUwM2I0XHUwM2I1XHUwM2M2XHUwM2IzXHUwM2I3XHUwM2I5XHUwM2JlXHUwM2JhXHUwM2JiXHUwM2Jj''@;'; put 'put ''XHUwM2JkXHUwM2JmXHUwM2MwXHUwM2NlXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2I4XHUwM2M5XHUwM2MyXHUwM2M3XHUwM2M1XHUwM2I2XHUwM2NhXHUwM2NiXHUwMzkwXHUwM2IwXHVmZmZkIn0sbWFjaWNlbGFuZDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4''@;'; put 'put ''ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x4ZGRceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUy''@;'; put 'put ''MjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUy''@;'; put 'put ''XHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIwNDRceGE0XHhkMFx4ZjBceGRlXHhmZVx4ZmRceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRc''@;'; put 'put ''eGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWNyb21hbjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhl''@;'; put 'put ''N1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIy''@;'; put 'put ''NjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRc''@;'; put 'put ''dTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdWZiMDFcdWZiMDJcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMx''@;'; put 'put ''XHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWNyb21hbmlhOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4''@;'; put 'put ''ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx1MDEwMlx1MDE1ZVx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIw''@;'; put 'put ''Mlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHUwMTAzXHUwMTVmXHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5''@;'; put 'put ''XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIwNDRceGE0XHUyMDM5XHUyMDNhXHUwMTYyXHUwMTYzXHUyMDIxXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJk''@;'; put 'put ''Y1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3In0sbWFjdGhhaTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGFiXHhiYlx1MjAyNlx1Zjg4Y1x1Zjg4Zlx1Zjg5Mlx1Zjg5NVx1Zjg5OFx1Zjg4Ylx1Zjg4ZVx1Zjg5MVx1Zjg5NFx1Zjg5N1x1MjAxY1x1MjAxZFx1''@;'; put 'put ''Zjg5OVx1ZmZmZFx1MjAyMlx1Zjg4NFx1Zjg4OVx1Zjg4NVx1Zjg4Nlx1Zjg4N1x1Zjg4OFx1Zjg4YVx1Zjg4ZFx1Zjg5MFx1Zjg5M1x1Zjg5Nlx1MjAxOFx1MjAxOVx1ZmZmZFx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFc''@;'; put 'put ''dTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBl''@;'; put 'put ''MjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZlZmZcdTIwMGJcdTIwMTNcdTIwMTRcdTBlM2ZcdTBlNDBcdTBlNDFc''@;'; put 'put ''dTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTIxMjJcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlceGFlXHhhOVx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZCJ9LG1hY3R1cmtpc2g6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5''@;'; put 'put ''XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhi''@;'; put 'put ''Zlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTAxMWVcdTAxMWZcdTAxMzBcdTAxMzFcdTAxNWVcdTAx''@;'; put 'put ''NWZcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHVmZmZkXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWN1''@;'; put 'put ''a3JhaW5lOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQy''@;'; put 'put ''Nlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MjAyMFx4YjBcdTA0OTBceGEzXHhhN1x1MjAyMlx4YjZcdTA0MDZceGFlXHhhOVx1MjEyMlx1MDQwMlx1MDQ1Mlx1MjI2MFx1MDQwM1x1MDQ1M1x1MjIxZVx4YjFcdTIyNjRcdTIyNjVcdTA0''@;'; put 'put ''NTZceGI1XHUwNDkxXHUwNDA4XHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDA5XHUwNDU5XHUwNDBhXHUwNDVhXHUwNDU4XHUwNDA1XHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDQwYlx1MDQ1Ylx1MDQwY1x1MDQ1Y1x1MDQ1NVx1MjAxM1x1MjAx''@;'; put 'put ''NFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTIwMWVcdTA0MGVcdTA0NWVcdTA0MGZcdTA0NWZcdTIxMTZcdTA0MDFcdTA0NTFcdTA0NGZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0''@;'; put 'put ''M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVceGE0In0sa29pOHI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUy''@;'; put 'put ''NTE0XHUyNTE4XHUyNTFjXHUyNTI0XHUyNTJjXHUyNTM0XHUyNTNjXHUyNTgwXHUyNTg0XHUyNTg4XHUyNThjXHUyNTkwXHUyNTkxXHUyNTkyXHUyNTkzXHUyMzIwXHUyNWEwXHUyMjE5XHUyMjFhXHUyMjQ4XHUyMjY0XHUyMjY1XHhhMFx1MjMyMVx4YjBceGIyXHhiN1x4ZjdcdTI1NTBcdTI1''@;'; put 'put ''NTFcdTI1NTJcdTA0NTFcdTI1NTNcdTI1NTRcdTI1NTVcdTI1NTZcdTI1NTdcdTI1NThcdTI1NTlcdTI1NWFcdTI1NWJcdTI1NWNcdTI1NWRcdTI1NWVcdTI1NWZcdTI1NjBcdTI1NjFcdTA0MDFcdTI1NjJcdTI1NjNcdTI1NjRcdTI1NjVcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFc''@;'; put 'put ''dTI1NmJcdTI1NmNceGE5XHUwNDRlXHUwNDMwXHUwNDMxXHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRj''@;'; put 'put ''XHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUwNDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUw''@;'; put 'put ''NDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJiXHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sa29pOHU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTFjXHUyNTI0XHUyNTJjXHUyNTM0XHUyNTNj''@;'; put 'put ''XHUyNTgwXHUyNTg0XHUyNTg4XHUyNThjXHUyNTkwXHUyNTkxXHUyNTkyXHUyNTkzXHUyMzIwXHUyNWEwXHUyMjE5XHUyMjFhXHUyMjQ4XHUyMjY0XHUyMjY1XHhhMFx1MjMyMVx4YjBceGIyXHhiN1x4ZjdcdTI1NTBcdTI1NTFcdTI1NTJcdTA0NTFcdTA0NTRcdTI1NTRcdTA0NTZcdTA0NTdc''@;'; put 'put ''dTI1NTdcdTI1NThcdTI1NTlcdTI1NWFcdTI1NWJcdTA0OTFcdTI1NWRcdTI1NWVcdTI1NWZcdTI1NjBcdTI1NjFcdTA0MDFcdTA0MDRcdTI1NjNcdTA0MDZcdTA0MDdcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFcdTA0OTBcdTI1NmNceGE5XHUwNDRlXHUwNDMwXHUwNDMxXHUwNDQ2''@;'; put 'put ''XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUwNDQ3XHUw''@;'; put 'put ''NDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJiXHUwNDE3''@;'; put 'put ''XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sa29pOHJ1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxNFx1MjUxOFx1MjUxY1x1MjUyNFx1MjUyY1x1MjUzNFx1MjUzY1x1MjU4MFx1MjU4NFx1MjU4OFx1MjU4Y1x1MjU5MFx1MjU5MVx1''@;'; put 'put ''MjU5Mlx1MjU5M1x1MjMyMFx1MjVhMFx1MjIxOVx1MjIxYVx1MjI0OFx1MjI2NFx1MjI2NVx4YTBcdTIzMjFceGIwXHhiMlx4YjdceGY3XHUyNTUwXHUyNTUxXHUyNTUyXHUwNDUxXHUwNDU0XHUyNTU0XHUwNDU2XHUwNDU3XHUyNTU3XHUyNTU4XHUyNTU5XHUyNTVhXHUyNTViXHUwNDkxXHUw''@;'; put 'put ''NDVlXHUyNTVlXHUyNTVmXHUyNTYwXHUyNTYxXHUwNDAxXHUwNDA0XHUyNTYzXHUwNDA2XHUwNDA3XHUyNTY2XHUyNTY3XHUyNTY4XHUyNTY5XHUyNTZhXHUwNDkwXHUwNDBlXHhhOVx1MDQ0ZVx1MDQzMFx1MDQzMVx1MDQ0Nlx1MDQzNFx1MDQzNVx1MDQ0NFx1MDQzM1x1MDQ0NVx1MDQzOFx1''@;'; put 'put ''MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0Zlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzNlx1MDQzMlx1MDQ0Y1x1MDQ0Ylx1MDQzN1x1MDQ0OFx1MDQ0ZFx1MDQ0OVx1MDQ0N1x1MDQ0YVx1MDQyZVx1MDQxMFx1MDQxMVx1MDQyNlx1MDQxNFx1MDQx''@;'; put 'put ''NVx1MDQyNFx1MDQxM1x1MDQyNVx1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQxNlx1MDQxMlx1MDQyY1x1MDQyYlx1MDQxN1x1MDQyOFx1MDQyZFx1MDQyOVx1MDQyN1x1MDQyYSJ9LGtvaTh0''@;'; put 'put ''Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQ5Ylx1MDQ5M1x1MjAxYVx1MDQ5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1MDRiM1x1MjAzOVx1MDRiMlx1MDRiN1x1MDRiNlx1ZmZmZFx1MDQ5YVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAx''@;'; put 'put ''NFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDRlZlx1MDRlZVx1MDQ1MVx4YTRcdTA0ZTNceGE2XHhhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx4YWJceGFjXHhhZFx4YWVcdWZmZmRceGIwXHhiMVx4YjJcdTA0MDFcdWZmZmRcdTA0ZTJceGI2''@;'; put 'put ''XHhiN1x1ZmZmZFx1MjExNlx1ZmZmZFx4YmJcdWZmZmRcdWZmZmRcdWZmZmRceGE5XHUwNDRlXHUwNDMwXHUwNDMxXHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUw''@;'; put 'put ''NDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUwNDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFk''@;'; put 'put ''XHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJiXHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sYXJtc2NpaTg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4''@;'; put 'put ''ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHVmZmZkXHUwNTg3XHUwNTg5KShceGJiXHhhYlx1MjAxNC5cdTA1NWQsLVx1MDU4YVx1MjAyNlx1MDU1Y1x1''@;'; put 'put ''MDU1Ylx1MDU1ZVx1MDUzMVx1MDU2MVx1MDUzMlx1MDU2Mlx1MDUzM1x1MDU2M1x1MDUzNFx1MDU2NFx1MDUzNVx1MDU2NVx1MDUzNlx1MDU2Nlx1MDUzN1x1MDU2N1x1MDUzOFx1MDU2OFx1MDUzOVx1MDU2OVx1MDUzYVx1MDU2YVx1MDUzYlx1MDU2Ylx1MDUzY1x1MDU2Y1x1MDUzZFx1MDU2''@;'; put 'put ''ZFx1MDUzZVx1MDU2ZVx1MDUzZlx1MDU2Zlx1MDU0MFx1MDU3MFx1MDU0MVx1MDU3MVx1MDU0Mlx1MDU3Mlx1MDU0M1x1MDU3M1x1MDU0NFx1MDU3NFx1MDU0NVx1MDU3NVx1MDU0Nlx1MDU3Nlx1MDU0N1x1MDU3N1x1MDU0OFx1MDU3OFx1MDU0OVx1MDU3OVx1MDU0YVx1MDU3YVx1MDU0Ylx1''@;'; put 'put ''MDU3Ylx1MDU0Y1x1MDU3Y1x1MDU0ZFx1MDU3ZFx1MDU0ZVx1MDU3ZVx1MDU0Zlx1MDU3Zlx1MDU1MFx1MDU4MFx1MDU1MVx1MDU4MVx1MDU1Mlx1MDU4Mlx1MDU1M1x1MDU4M1x1MDU1NFx1MDU4NFx1MDU1NVx1MDU4NVx1MDU1Nlx1MDU4Nlx1MDU1YVx1ZmZmZCJ9LHJrMTA0ODp7dHlwZToi''@;'; put 'put ''X3NiY3MiLGNoYXJzOiJcdTA0MDJcdTA0MDNcdTIwMWFcdTA0NTNcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTIwYWNcdTIwMzBcdTA0MDlcdTIwMzlcdTA0MGFcdTA0OWFcdTA0YmFcdTA0MGZcdTA0NTJcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRc''@;'; put 'put ''dTIxMjJcdTA0NTlcdTIwM2FcdTA0NWFcdTA0OWJcdTA0YmJcdTA0NWZceGEwXHUwNGIwXHUwNGIxXHUwNGQ4XHhhNFx1MDRlOFx4YTZceGE3XHUwNDAxXHhhOVx1MDQ5Mlx4YWJceGFjXHhhZFx4YWVcdTA0YWVceGIwXHhiMVx1MDQwNlx1MDQ1Nlx1MDRlOVx4YjVceGI2XHhiN1x1MDQ1MVx1''@;'; put 'put ''MjExNlx1MDQ5M1x4YmJcdTA0ZDlcdTA0YTJcdTA0YTNcdTA0YWZcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRc''@;'; put 'put ''dTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0''@;'; put 'put ''NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGYifSx0Y3ZuOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHhkYVx1MWVlNFx4MDNcdTFlZWFcdTFlZWNcdTFlZWVceDA3XGJcdFxu''@;'; put 'put ''XHZcZlxyXHgwZVx4MGZceDEwXHUxZWU4XHUxZWYwXHUxZWYyXHUxZWY2XHUxZWY4XHhkZFx1MWVmNFx4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdo''@;'; put 'put ''aWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGMwXHUxZWEyXHhjM1x4YzFcdTFlYTBcdTFlYjZcdTFlYWNceGM4XHUxZWJhXHUxZWJjXHhjOVx1MWViOFx1MWVjNlx4Y2NcdTFlYzhcdTAxMjhceGNkXHUxZWNhXHhkMlx1MWVjZVx4ZDVceGQzXHUxZWNjXHUxZWQ4XHUxZWRjXHUxZWRlXHUx''@;'; put 'put ''ZWUwXHUxZWRhXHUxZWUyXHhkOVx1MWVlNlx1MDE2OFx4YTBcdTAxMDJceGMyXHhjYVx4ZDRcdTAxYTBcdTAxYWZcdTAxMTBcdTAxMDNceGUyXHhlYVx4ZjRcdTAxYTFcdTAxYjBcdTAxMTFcdTFlYjBcdTAzMDBcdTAzMDlcdTAzMDNcdTAzMDFcdTAzMjNceGUwXHUxZWEzXHhlM1x4ZTFcdTFl''@;'; put 'put ''YTFcdTFlYjJcdTFlYjFcdTFlYjNcdTFlYjVcdTFlYWZcdTFlYjRcdTFlYWVcdTFlYTZcdTFlYThcdTFlYWFcdTFlYTRcdTFlYzBcdTFlYjdcdTFlYTdcdTFlYTlcdTFlYWJcdTFlYTVcdTFlYWRceGU4XHUxZWMyXHUxZWJiXHUxZWJkXHhlOVx1MWViOVx1MWVjMVx1MWVjM1x1MWVjNVx1MWVi''@;'; put 'put ''Zlx1MWVjN1x4ZWNcdTFlYzlcdTFlYzRcdTFlYmVcdTFlZDJcdTAxMjlceGVkXHUxZWNiXHhmMlx1MWVkNFx1MWVjZlx4ZjVceGYzXHUxZWNkXHUxZWQzXHUxZWQ1XHUxZWQ3XHUxZWQxXHUxZWQ5XHUxZWRkXHUxZWRmXHUxZWUxXHUxZWRiXHUxZWUzXHhmOVx1MWVkNlx1MWVlN1x1MDE2OVx4''@;'; put 'put ''ZmFcdTFlZTVcdTFlZWJcdTFlZWRcdTFlZWZcdTFlZTlcdTFlZjFcdTFlZjNcdTFlZjdcdTFlZjlceGZkXHUxZWY1XHUxZWQwIn0sZ2VvcmdpYW5hY2FkZW15Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUy''@;'; put 'put ''MDMwXHUwMTYwXHUyMDM5XHUwMTUyXHg4ZFx4OGVceDhmXHg5MFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x4OWRceDllXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4''@;'; put 'put ''YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZcdTEwZDBcdTEwZDFcdTEwZDJcdTEwZDNcdTEwZDRcdTEwZDVcdTEwZDZcdTEwZDdcdTEwZDhcdTEwZDlcdTEwZGFcdTEwZGJcdTEwZGNc''@;'; put 'put ''dTEwZGRcdTEwZGVcdTEwZGZcdTEwZTBcdTEwZTFcdTEwZTJcdTEwZTNcdTEwZTRcdTEwZTVcdTEwZTZcdTEwZTdcdTEwZThcdTEwZTlcdTEwZWFcdTEwZWJcdTEwZWNcdTEwZWRcdTEwZWVcdTEwZWZcdTEwZjBcdTEwZjFcdTEwZjJcdTEwZjNcdTEwZjRcdTEwZjVcdTEwZjZceGU3XHhlOFx4''@;'; put 'put ''ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0sZ2VvcmdpYW5wczp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1''@;'; put 'put ''MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx4OGRceDhlXHg4Zlx4OTBcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNTNceDlkXHg5ZVx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZc''@;'; put 'put ''eGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHUxMGQwXHUxMGQxXHUxMGQyXHUxMGQzXHUxMGQ0XHUxMGQ1XHUxMGQ2XHUxMGYxXHUxMGQ3XHUxMGQ4XHUxMGQ5''@;'; put 'put ''XHUxMGRhXHUxMGRiXHUxMGRjXHUxMGYyXHUxMGRkXHUxMGRlXHUxMGRmXHUxMGUwXHUxMGUxXHUxMGUyXHUxMGYzXHUxMGUzXHUxMGU0XHUxMGU1XHUxMGU2XHUxMGU3XHUxMGU4XHUxMGU5XHUxMGVhXHUxMGViXHUxMGVjXHUxMGVkXHUxMGVlXHUxMGY0XHUxMGVmXHUxMGYwXHUxMGY1XHhl''@;'; put 'put ''Nlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSxwdDE1NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0OTZcdTA0OTJcdTA0ZWVcdTA0OTNcdTIwMWVcdTIw''@;'; put 'put ''MjZcdTA0YjZcdTA0YWVcdTA0YjJcdTA0YWZcdTA0YTBcdTA0ZTJcdTA0YTJcdTA0OWFcdTA0YmFcdTA0YjhcdTA0OTdcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTA0YjNcdTA0YjdcdTA0YTFcdTA0ZTNcdTA0YTNcdTA0OWJcdTA0YmJcdTA0YjlceGEwXHUw''@;'; put 'put ''NDBlXHUwNDVlXHUwNDA4XHUwNGU4XHUwNDk4XHUwNGIwXHhhN1x1MDQwMVx4YTlcdTA0ZDhceGFiXHhhY1x1MDRlZlx4YWVcdTA0OWNceGIwXHUwNGIxXHUwNDA2XHUwNDU2XHUwNDk5XHUwNGU5XHhiNlx4YjdcdTA0NTFcdTIxMTZcdTA0ZDlceGJiXHUwNDU4XHUwNGFhXHUwNGFiXHUwNDlk''@;'; put 'put ''XHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUw''@;'; put 'put ''NDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2''@;'; put 'put ''XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmIn0sdmlzY2lpOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHgwMVx1MWViMlx4MDNceDA0XHUxZWI0XHUxZWFhXHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x1MWVmNlx4''@;'; put 'put ''MTVceDE2XHgxN1x4MThcdTFlZjhceDFhXHgxYlx4MWNceDFkXHUxZWY0XHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUxZWEwXHUxZWFlXHUxZWIw''@;'; put 'put ''XHUxZWI2XHUxZWE0XHUxZWE2XHUxZWE4XHUxZWFjXHUxZWJjXHUxZWI4XHUxZWJlXHUxZWMwXHUxZWMyXHUxZWM0XHUxZWM2XHUxZWQwXHUxZWQyXHUxZWQ0XHUxZWQ2XHUxZWQ4XHUxZWUyXHUxZWRhXHUxZWRjXHUxZWRlXHUxZWNhXHUxZWNlXHUxZWNjXHUxZWM4XHUxZWU2XHUwMTY4XHUx''@;'; put 'put ''ZWU0XHUxZWYyXHhkNVx1MWVhZlx1MWViMVx1MWViN1x1MWVhNVx1MWVhN1x1MWVhOVx1MWVhZFx1MWViZFx1MWViOVx1MWViZlx1MWVjMVx1MWVjM1x1MWVjNVx1MWVjN1x1MWVkMVx1MWVkM1x1MWVkNVx1MWVkN1x1MWVlMFx1MDFhMFx1MWVkOVx1MWVkZFx1MWVkZlx1MWVjYlx1MWVmMFx1''@;'; put 'put ''MWVlOFx1MWVlYVx1MWVlY1x1MDFhMVx1MWVkYlx1MDFhZlx4YzBceGMxXHhjMlx4YzNcdTFlYTJcdTAxMDJcdTFlYjNcdTFlYjVceGM4XHhjOVx4Y2FcdTFlYmFceGNjXHhjZFx1MDEyOFx1MWVmM1x1MDExMFx1MWVlOVx4ZDJceGQzXHhkNFx1MWVhMVx1MWVmN1x1MWVlYlx1MWVlZFx4ZDlc''@;'; put 'put ''eGRhXHUxZWY5XHUxZWY1XHhkZFx1MWVlMVx1MDFiMFx4ZTBceGUxXHhlMlx4ZTNcdTFlYTNcdTAxMDNcdTFlZWZcdTFlYWJceGU4XHhlOVx4ZWFcdTFlYmJceGVjXHhlZFx1MDEyOVx1MWVjOVx1MDExMVx1MWVmMVx4ZjJceGYzXHhmNFx4ZjVcdTFlY2ZcdTFlY2RcdTFlZTVceGY5XHhmYVx1''@;'; put 'put ''MDE2OVx1MWVlN1x4ZmRcdTFlZTNcdTFlZWUifSxpc282NDZjbjp7dHlwZToiX3NiY3MiLGNoYXJzOiJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFk''@;'; put 'put ''XHgxZVx4MWYgIVwiI1x4YTUlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1cdTIwM2VceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0saXNvNjQ2anA6e3R5cGU6Il9zYmNzIixjaGFyczoiXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4''@;'; put 'put ''MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1x4YTVdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1cdTIwM2VceDdmXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0saHByb21hbjg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4''@;'; put 'put ''OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhjMFx4YzJceGM4XHhjYVx4Y2JceGNlXHhjZlx4YjRcdTAyY2JcdTAyYzZceGE4XHUwMmRjXHhkOVx4ZGJcdTIwYTRceGFm''@;'; put 'put ''XHhkZFx4ZmRceGIwXHhjN1x4ZTdceGQxXHhmMVx4YTFceGJmXHhhNFx4YTNceGE1XHhhN1x1MDE5Mlx4YTJceGUyXHhlYVx4ZjRceGZiXHhlMVx4ZTlceGYzXHhmYVx4ZTBceGU4XHhmMlx4ZjlceGU0XHhlYlx4ZjZceGZjXHhjNVx4ZWVceGQ4XHhjNlx4ZTVceGVkXHhmOFx4ZTZceGM0XHhl''@;'; put 'put ''Y1x4ZDZceGRjXHhjOVx4ZWZceGRmXHhkNFx4YzFceGMzXHhlM1x4ZDBceGYwXHhjZFx4Y2NceGQzXHhkMlx4ZDVceGY1XHUwMTYwXHUwMTYxXHhkYVx1MDE3OFx4ZmZceGRlXHhmZVx4YjdceGI1XHhiNlx4YmVcdTIwMTRceGJjXHhiZFx4YWFceGJhXHhhYlx1MjVhMFx4YmJceGIxXHVmZmZk''@;'; put 'put ''In0sbWFjaW50b3NoOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUy''@;'; put 'put ''MDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1''@;'; put 'put ''MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx1ZmIwMVx1ZmIwMlx1MjAyMVx4Yjdc''@;'; put 'put ''dTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LGFzY2lpOnt0eXBlOiJfc2Jj''@;'; put 'put ''cyIsY2hhcnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LHRpczYyMDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBl''@;'; put 'put ''MTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRc''@;'; put 'put ''dTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBl''@;'; put 'put ''NTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifX19LDY4NjE5OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9ezEwMDI5OiJtYWNjZW50ZXVybyIsbWFjY2VudGV1cm86''@;'; put 'put ''e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx1MDEwMFx1MDEwMVx4YzlcdTAxMDRceGQ2XHhkY1x4ZTFcdTAxMDVcdTAxMGNceGU0XHUwMTBkXHUwMTA2XHUwMTA3XHhlOVx1MDE3OVx1MDE3YVx1MDEwZVx4ZWRcdTAxMGZcdTAxMTJcdTAxMTNcdTAxMTZceGYzXHUwMTE3XHhmNFx4ZjZceGY1''@;'; put 'put ''XHhmYVx1MDExYVx1MDExYlx4ZmNcdTIwMjBceGIwXHUwMTE4XHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHUwMTE5XHhhOFx1MjI2MFx1MDEyM1x1MDEyZVx1MDEyZlx1MDEyYVx1MjI2NFx1MjI2NVx1MDEyYlx1MDEzNlx1MjIwMlx1MjIxMVx1MDE0Mlx1MDEzYlx1MDEz''@;'; put 'put ''Y1x1MDEzZFx1MDEzZVx1MDEzOVx1MDEzYVx1MDE0NVx1MDE0Nlx1MDE0M1x4YWNcdTIyMWFcdTAxNDRcdTAxNDdcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTAxNDhcdTAxNTBceGQ1XHUwMTUxXHUwMTRjXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx1''@;'; put 'put ''MDE0ZFx1MDE1NFx1MDE1NVx1MDE1OFx1MjAzOVx1MjAzYVx1MDE1OVx1MDE1Nlx1MDE1N1x1MDE2MFx1MjAxYVx1MjAxZVx1MDE2MVx1MDE1YVx1MDE1Ylx4YzFcdTAxNjRcdTAxNjVceGNkXHUwMTdkXHUwMTdlXHUwMTZhXHhkM1x4ZDRcdTAxNmJcdTAxNmVceGRhXHUwMTZmXHUwMTcwXHUw''@;'; put 'put ''MTcxXHUwMTcyXHUwMTczXHhkZFx4ZmRcdTAxMzdcdTAxN2JcdTAxNDFcdTAxN2NcdTAxMjJcdTAyYzcifSw4MDg6ImNwODA4IixpYm04MDg6ImNwODA4IixjcDgwODp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdc''@;'; put 'put ''dTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0''@;'; put 'put ''MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJc''@;'; put 'put ''dTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1''@;'; put 'put ''MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdc''@;'; put 'put ''dTA0MGVcdTA0NWVceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjExNlx1MjBhY1x1MjVhMFx4YTAifSxtaWs6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFk''@;'; put 'put ''XHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUw''@;'; put 'put ''NDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAw''@;'; put 'put ''XHUyNTNjXHUyNTYzXHUyNTUxXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTEwXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyMTE2XHhhN1x1MjU1N1x1MjU1ZFx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNi''@;'; put 'put ''MVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1''@;'; put 'put ''YTBceGEwIn0sY3A3MjA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceGU5XHhlMlx4ODRceGUwXHg4Nlx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4OGRceDhlXHg4Zlx4OTBcdTA2NTFcdTA2NTJceGY0XHhhNFx1MDY0MFx4ZmJceGY5XHUwNjIxXHUwNjIyXHUwNjIzXHUwNjI0XHhh''@;'; put 'put ''M1x1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1''@;'; put 'put ''XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUy''@;'; put 'put ''NTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNjM2XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHUwNjQxXHhiNVx1MDY0Mlx1MDY0M1x1MDY0NFx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx1MDY0OVx1MDY0YVx1''@;'; put 'put ''MjI2MVx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx1MDY0Zlx1MDY1MFx1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxhc2NpaThiaXQ6ImFzY2lpIix1c2FzY2lpOiJhc2NpaSIsYW5zaXgzNDoiYXNjaWkiLGFuc2l4MzQxOTY4OiJhc2NpaSIsYW5zaXgz''@;'; put 'put ''NDE5ODY6ImFzY2lpIixjc2FzY2lpOiJhc2NpaSIsY3AzNjc6ImFzY2lpIixpYm0zNjc6ImFzY2lpIixpc29pcjY6ImFzY2lpIixpc282NDZ1czoiYXNjaWkiLGlzbzY0NmlydjoiYXNjaWkiLHVzOiJhc2NpaSIsbGF0aW4xOiJpc284ODU5MSIsbGF0aW4yOiJpc284ODU5MiIsbGF0aW4zOiJp''@;'; put 'put ''c284ODU5MyIsbGF0aW40OiJpc284ODU5NCIsbGF0aW41OiJpc284ODU5OSIsbGF0aW42OiJpc284ODU5MTAiLGxhdGluNzoiaXNvODg1OTEzIixsYXRpbjg6Imlzbzg4NTkxNCIsbGF0aW45OiJpc284ODU5MTUiLGxhdGluMTA6Imlzbzg4NTkxNiIsY3Npc29sYXRpbjE6Imlzbzg4NTkxIixj''@;'; put 'put ''c2lzb2xhdGluMjoiaXNvODg1OTIiLGNzaXNvbGF0aW4zOiJpc284ODU5MyIsY3Npc29sYXRpbjQ6Imlzbzg4NTk0Iixjc2lzb2xhdGluY3lyaWxsaWM6Imlzbzg4NTk1Iixjc2lzb2xhdGluYXJhYmljOiJpc284ODU5NiIsY3Npc29sYXRpbmdyZWVrOiJpc284ODU5NyIsY3Npc29sYXRpbmhl''@;'; put 'put ''YnJldzoiaXNvODg1OTgiLGNzaXNvbGF0aW41OiJpc284ODU5OSIsY3Npc29sYXRpbjY6Imlzbzg4NTkxMCIsbDE6Imlzbzg4NTkxIixsMjoiaXNvODg1OTIiLGwzOiJpc284ODU5MyIsbDQ6Imlzbzg4NTk0IixsNToiaXNvODg1OTkiLGw2OiJpc284ODU5MTAiLGw3OiJpc284ODU5MTMiLGw4''@;'; put 'put ''OiJpc284ODU5MTQiLGw5OiJpc284ODU5MTUiLGwxMDoiaXNvODg1OTE2Iixpc29pcjE0OiJpc282NDZqcCIsaXNvaXI1NzoiaXNvNjQ2Y24iLGlzb2lyMTAwOiJpc284ODU5MSIsaXNvaXIxMDE6Imlzbzg4NTkyIixpc29pcjEwOToiaXNvODg1OTMiLGlzb2lyMTEwOiJpc284ODU5NCIsaXNv''@;'; put 'put ''aXIxNDQ6Imlzbzg4NTk1Iixpc29pcjEyNzoiaXNvODg1OTYiLGlzb2lyMTI2OiJpc284ODU5NyIsaXNvaXIxMzg6Imlzbzg4NTk4Iixpc29pcjE0ODoiaXNvODg1OTkiLGlzb2lyMTU3OiJpc284ODU5MTAiLGlzb2lyMTY2OiJ0aXM2MjAiLGlzb2lyMTc5OiJpc284ODU5MTMiLGlzb2lyMTk5''@;'; put 'put ''OiJpc284ODU5MTQiLGlzb2lyMjAzOiJpc284ODU5MTUiLGlzb2lyMjI2OiJpc284ODU5MTYiLGNwODE5OiJpc284ODU5MSIsaWJtODE5OiJpc284ODU5MSIsY3lyaWxsaWM6Imlzbzg4NTk1IixhcmFiaWM6Imlzbzg4NTk2IixhcmFiaWM4OiJpc284ODU5NiIsZWNtYTExNDoiaXNvODg1OTYi''@;'; put 'put ''LGFzbW83MDg6Imlzbzg4NTk2IixncmVlazoiaXNvODg1OTciLGdyZWVrODoiaXNvODg1OTciLGVjbWExMTg6Imlzbzg4NTk3IixlbG90OTI4OiJpc284ODU5NyIsaGVicmV3OiJpc284ODU5OCIsaGVicmV3ODoiaXNvODg1OTgiLHR1cmtpc2g6Imlzbzg4NTk5Iix0dXJraXNoODoiaXNvODg1''@;'; put 'put ''OTkiLHRoYWk6Imlzbzg4NTkxMSIsdGhhaTg6Imlzbzg4NTkxMSIsY2VsdGljOiJpc284ODU5MTQiLGNlbHRpYzg6Imlzbzg4NTkxNCIsaXNvY2VsdGljOiJpc284ODU5MTQiLHRpczYyMDA6InRpczYyMCIsdGlzNjIwMjUyOTE6InRpczYyMCIsdGlzNjIwMjUzMzA6InRpczYyMCIsMWU0OiJt''@;'; put 'put ''YWNyb21hbiIsMTAwMDY6Im1hY2dyZWVrIiwxMDAwNzoibWFjY3lyaWxsaWMiLDEwMDc5OiJtYWNpY2VsYW5kIiwxMDA4MToibWFjdHVya2lzaCIsY3NwYzhjb2RlcGFnZTQzNzoiY3A0MzciLGNzcGM3NzViYWx0aWM6ImNwNzc1Iixjc3BjODUwbXVsdGlsaW5ndWFsOiJjcDg1MCIsY3NwY3A4''@;'; put 'put ''NTI6ImNwODUyIixjc3BjODYybGF0aW5oZWJyZXc6ImNwODYyIixjcGdyOiJjcDg2OSIsbXNlZToiY3AxMjUwIixtc2N5cmw6ImNwMTI1MSIsbXNhbnNpOiJjcDEyNTIiLG1zZ3JlZWs6ImNwMTI1MyIsbXN0dXJrOiJjcDEyNTQiLG1zaGVicjoiY3AxMjU1Iixtc2FyYWI6ImNwMTI1NiIsd2lu''@;'; put 'put ''YmFsdHJpbToiY3AxMjU3IixjcDIwODY2OiJrb2k4ciIsMjA4NjY6ImtvaThyIixpYm04Nzg6ImtvaThyIixjc2tvaThyOiJrb2k4ciIsY3AyMTg2Njoia29pOHUiLDIxODY2OiJrb2k4dSIsaWJtMTE2ODoia29pOHUiLHN0cmsxMDQ4MjAwMjoicmsxMDQ4Iix0Y3ZuNTcxMjoidGN2biIsdGN2''@;'; put 'put ''bjU3MTIxOiJ0Y3ZuIixnYjE5ODg4MDoiaXNvNjQ2Y24iLGNuOiJpc282NDZjbiIsY3Npc28xNGppc2M2MjIwcm86ImlzbzY0NmpwIixqaXNjNjIyMDE5NjlybzoiaXNvNjQ2anAiLGpwOiJpc282NDZqcCIsY3NocHJvbWFuODoiaHByb21hbjgiLHI4OiJocHJvbWFuOCIscm9tYW44OiJocHJv''@;'; put 'put ''bWFuOCIseHJvbWFuODoiaHByb21hbjgiLGlibTEwNTE6Imhwcm9tYW44IixtYWM6Im1hY2ludG9zaCIsY3NtYWNpbnRvc2g6Im1hY2ludG9zaCJ9fSw5Mzc2MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNjIwMzgpLkJ1ZmZlcjtmdW5jdGlvbiBCKCl7fWZ1bmN0aW9uIEUo''@;'; put 'put ''KXt9ZnVuY3Rpb24gTWUoKXt0aGlzLm92ZXJmbG93Qnl0ZT0tMX1mdW5jdGlvbiBVKGxlLFkpe3RoaXMuaWNvbnY9WX1mdW5jdGlvbiBRKGxlLFkpe3ZvaWQgMD09PShsZT1sZXx8e30pLmFkZEJPTSYmKGxlLmFkZEJPTT0hMCksdGhpcy5lbmNvZGVyPVkuaWNvbnYuZ2V0RW5jb2RlcigidXRm''@;'; put 'put ''LTE2bGUiLGxlKX1mdW5jdGlvbiBaKGxlLFkpe3RoaXMuZGVjb2Rlcj1udWxsLHRoaXMuaW5pdGlhbEJ5dGVzPVtdLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPTAsdGhpcy5vcHRpb25zPWxlfHx7fSx0aGlzLmljb252PVkuaWNvbnZ9ZnVuY3Rpb24gaWUobGUsWSl7dmFyIFc9WXx8InV0Zi0xNmxl''@;'; put 'put ''IjtpZihsZS5sZW5ndGg+PTIpaWYoMjU0PT1sZVswXSYmMjU1PT1sZVsxXSlXPSJ1dGYtMTZiZSI7ZWxzZSBpZigyNTU9PWxlWzBdJiYyNTQ9PWxlWzFdKVc9InV0Zi0xNmxlIjtlbHNle2Zvcih2YXIgTj0wLGVlPTAscT1NYXRoLm1pbihsZS5sZW5ndGgtbGUubGVuZ3RoJTIsNjQpLEo9MDtK''@;'; put 'put ''PHE7Sis9MikwPT09bGVbSl0mJjAhPT1sZVtKKzFdJiZlZSsrLDAhPT1sZVtKXSYmMD09PWxlW0orMV0mJk4rKztlZT5OP1c9InV0Zi0xNmJlIjplZTxOJiYoVz0idXRmLTE2bGUiKX1yZXR1cm4gV31KZS51dGYxNmJlPUIsQi5wcm90b3R5cGUuZW5jb2Rlcj1FLEIucHJvdG90eXBlLmRlY29k''@;'; put 'put ''ZXI9TWUsQi5wcm90b3R5cGUuYm9tQXdhcmU9ITAsRS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24obGUpe2Zvcih2YXIgWT1nZS5mcm9tKGxlLCJ1Y3MyIiksVz0wO1c8WS5sZW5ndGg7Vys9Mil7dmFyIE49WVtXXTtZW1ddPVlbVysxXSxZW1crMV09Tn1yZXR1cm4gWX0sRS5wcm90b3R5cGUu''@;'; put 'put ''ZW5kPWZ1bmN0aW9uKCl7fSxNZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24obGUpe2lmKDA9PWxlLmxlbmd0aClyZXR1cm4iIjt2YXIgWT1nZS5hbGxvYyhsZS5sZW5ndGgrMSksVz0wLE49MDtmb3IoLTEhPT10aGlzLm92ZXJmbG93Qnl0ZSYmKFlbMF09bGVbMF0sWVsxXT10aGlzLm92ZXJm''@;'; put 'put ''bG93Qnl0ZSxXPTEsTj0yKTtXPGxlLmxlbmd0aC0xO1crPTIsTis9MilZW05dPWxlW1crMV0sWVtOKzFdPWxlW1ddO3JldHVybiB0aGlzLm92ZXJmbG93Qnl0ZT1XPT1sZS5sZW5ndGgtMT9sZVtsZS5sZW5ndGgtMV06LTEsWS5zbGljZSgwLE4pLnRvU3RyaW5nKCJ1Y3MyIil9LE1lLnByb3Rv''@;'; put 'put ''dHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LEplLnV0ZjE2PVUsVS5wcm90b3R5cGUuZW5jb2Rlcj1RLFUucHJvdG90eXBlLmRlY29kZXI9WixRLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihsZSl7cmV0dXJuIHRoaXMuZW5jb2Rlci53cml0ZShsZSl9LFEucHJvdG90eXBlLmVuZD1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLmVuY29kZXIuZW5kKCl9LFoucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGxlKXtpZighdGhpcy5kZWNvZGVyKXtpZih0aGlzLmluaXRpYWxCeXRlcy5wdXNoKGxlKSx0aGlzLmluaXRpYWxCeXRlc0xlbis9bGUubGVuZ3RoLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPDE2KXJl''@;'; put 'put ''dHVybiIiO3ZhciBZPWllKGxlPWdlLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihZLHRoaXMub3B0aW9ucyksdGhpcy5pbml0aWFsQnl0ZXMubGVuZ3RoPXRoaXMuaW5pdGlh''@;'; put 'put ''bEJ5dGVzTGVuPTB9cmV0dXJuIHRoaXMuZGVjb2Rlci53cml0ZShsZSl9LFoucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2lmKCF0aGlzLmRlY29kZXIpe3ZhciBsZT1nZS5jb25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLFk9aWUobGUsdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhp''@;'; put 'put ''cy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihZLHRoaXMub3B0aW9ucyk7dmFyIFc9dGhpcy5kZWNvZGVyLndyaXRlKGxlKSxOPXRoaXMuZGVjb2Rlci5lbmQoKTtyZXR1cm4gTj9XK046V31yZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpfX0sODI2MDY6KFhlLEplLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBnZT1MKDYyMDM4KS5CdWZmZXI7ZnVuY3Rpb24gQihsZSxZKXt0aGlzLmljb252PVksdGhpcy5ib21Bd2FyZT0hMCx0aGlzLmlzTEU9bGUuaXNMRX1mdW5jdGlvbiBFKGxlLFkpe3RoaXMuaXNMRT1ZLmlzTEUsdGhpcy5oaWdoU3Vycm9nYXRlPTB9ZnVuY3Rpb24gTWUobGUs''@;'; put 'put ''WSl7dGhpcy5pc0xFPVkuaXNMRSx0aGlzLmJhZENoYXI9WS5pY29udi5kZWZhdWx0Q2hhclVuaWNvZGUuY2hhckNvZGVBdCgwKSx0aGlzLm92ZXJmbG93PW51bGx9ZnVuY3Rpb24gVShsZSxZKXt0aGlzLmljb252PVl9ZnVuY3Rpb24gUShsZSxZKXt2b2lkIDA9PT0obGU9bGV8fHt9KS5hZGRC''@;'; put 'put ''T00mJihsZS5hZGRCT009ITApLHRoaXMuZW5jb2Rlcj1ZLmljb252LmdldEVuY29kZXIobGUuZGVmYXVsdEVuY29kaW5nfHwidXRmLTMybGUiLGxlKX1mdW5jdGlvbiBaKGxlLFkpe3RoaXMuZGVjb2Rlcj1udWxsLHRoaXMuaW5pdGlhbEJ5dGVzPVtdLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPTAs''@;'; put 'put ''dGhpcy5vcHRpb25zPWxlfHx7fSx0aGlzLmljb252PVkuaWNvbnZ9ZnVuY3Rpb24gaWUobGUsWSl7dmFyIFc9WXx8InV0Zi0zMmxlIjtpZihsZS5sZW5ndGg+PTQpaWYoNjUyNzk9PT1sZS5yZWFkVUludDMyQkUoMCkpVz0idXRmLTMyYmUiO2Vsc2UgaWYoNjUyNzk9PT1sZS5yZWFkVUludDMy''@;'; put 'put ''TEUoMCkpVz0idXRmLTMybGUiO2Vsc2V7Zm9yKHZhciBOPTAsZWU9MCxxPTAsSj0wLHNlPU1hdGgubWluKGxlLmxlbmd0aC1sZS5sZW5ndGglNCwxMjgpLGFlPTA7YWU8c2U7YWUrPTQpe3ZhciBmZT1sZVthZV0sZGU9bGVbYWUrMV0sdmU9bGVbYWUrMl0sQWU9bGVbYWUrM107KDAhPT1mZXx8''@;'; put 'put ''ZGU+MTYpJiYrK2VlLCgwIT09QWV8fHZlPjE2KSYmKytOLDA9PT1mZSYmMD09PWRlJiYwPT09dmUmJjAhPT1BZSYmSisrLDAhPT1mZSYmMD09PWRlJiYwPT09dmUmJjA9PT1BZSYmcSsrfWVlPE4/Vz0idXRmLTMyYmUiOk48ZWUmJihXPSJ1dGYtMzJsZSIpLEo+cT9XPSJ1dGYtMzJiZSI6Sjxx''@;'; put 'put ''JiYoVz0idXRmLTMybGUiKX1yZXR1cm4gV31KZS5fdXRmMzI9QixKZS51dGYzMmxlPXt0eXBlOiJfdXRmMzIiLGlzTEU6ITB9LEplLnV0ZjMyYmU9e3R5cGU6Il91dGYzMiIsaXNMRTohMX0sSmUudWNzNGxlPSJ1dGYzMmxlIixKZS51Y3M0YmU9InV0ZjMyYmUiLEIucHJvdG90eXBlLmVuY29k''@;'; put 'put ''ZXI9RSxCLnByb3RvdHlwZS5kZWNvZGVyPU1lLEUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGxlKXtmb3IodmFyIFk9Z2UuZnJvbShsZSwidWNzMiIpLFc9Z2UuYWxsb2MoMipZLmxlbmd0aCksTj10aGlzLmlzTEU/Vy53cml0ZVVJbnQzMkxFOlcud3JpdGVVSW50MzJCRSxlZT0wLHE9MDtx''@;'; put 'put ''PFkubGVuZ3RoO3ErPTIpe3ZhciBKPVkucmVhZFVJbnQxNkxFKHEpLHNlPTU1Mjk2PD1KJiZKPDU2MzIwO2lmKHRoaXMuaGlnaFN1cnJvZ2F0ZSl7aWYoIXNlJiY1NjMyMDw9SiYmSjw1NzM0NCl7Ti5jYWxsKFcsNjU1MzYrKHRoaXMuaGlnaFN1cnJvZ2F0ZS01NTI5Njw8MTB8Si01NjMyMCks''@;'; put 'put ''ZWUpLGVlKz00LHRoaXMuaGlnaFN1cnJvZ2F0ZT0wO2NvbnRpbnVlfU4uY2FsbChXLHRoaXMuaGlnaFN1cnJvZ2F0ZSxlZSksZWUrPTR9c2U/dGhpcy5oaWdoU3Vycm9nYXRlPUo6KE4uY2FsbChXLEosZWUpLGVlKz00LHRoaXMuaGlnaFN1cnJvZ2F0ZT0wKX1yZXR1cm4gZWU8Vy5sZW5ndGgm''@;'; put 'put ''JihXPVcuc2xpY2UoMCxlZSkpLFd9LEUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2lmKHRoaXMuaGlnaFN1cnJvZ2F0ZSl7dmFyIGxlPWdlLmFsbG9jKDQpO3JldHVybiB0aGlzLmlzTEU/bGUud3JpdGVVSW50MzJMRSh0aGlzLmhpZ2hTdXJyb2dhdGUsMCk6bGUud3JpdGVVSW50MzJCRSh0''@;'; put 'put ''aGlzLmhpZ2hTdXJyb2dhdGUsMCksdGhpcy5oaWdoU3Vycm9nYXRlPTAsbGV9fSxNZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24obGUpe2lmKDA9PT1sZS5sZW5ndGgpcmV0dXJuIiI7dGhpcy5vdmVyZmxvdyYmKGxlPWdlLmNvbmNhdChbdGhpcy5vdmVyZmxvdyxsZV0pKTt2YXIgWT1sZS5s''@;'; put 'put ''ZW5ndGgtbGUubGVuZ3RoJTQ7bGUubGVuZ3RoIT09WT8odGhpcy5vdmVyZmxvdz1sZS5zbGljZShZKSxsZT1sZS5zbGljZSgwLFkpKTp0aGlzLm92ZXJmbG93PW51bGw7Zm9yKHZhciBXPWdlLmFsbG9jKFkpLE49MCxlZT0wO2VlPFk7ZWUrPTQpe3ZhciBxPXRoaXMuaXNMRT9sZS5yZWFkVUlu''@;'; put 'put ''dDMyTEUoZWUpOmxlLnJlYWRVSW50MzJCRShlZSk7aWYocTw2NTUzNilXLndyaXRlVUludDE2TEUocSxOKSxOKz0yO2Vsc2UgaWYocT4xMTE0MTExKVcud3JpdGVVSW50MTZMRSh0aGlzLmJhZENoYXIsTiksTis9MjtlbHNle3ZhciBzZT01NjMyMCsoMTAyMyYocS09NjU1MzYpKTtXLndyaXRl''@;'; put 'put ''VUludDE2TEUoNTUyOTZ8cT4+MTAsTiksVy53cml0ZVVJbnQxNkxFKHNlLE4rPTIpLE4rPTJ9fXJldHVybiBXLnNsaWNlKDAsTikudG9TdHJpbmcoInVjczIiKX0sTWUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3RoaXMub3ZlcmZsb3c9bnVsbH0sSmUudXRmMzI9VSxKZS51Y3M0PVUsVS5w''@;'; put 'put ''cm90b3R5cGUuZW5jb2Rlcj1RLFUucHJvdG90eXBlLmRlY29kZXI9WixRLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihsZSl7cmV0dXJuIHRoaXMuZW5jb2Rlci53cml0ZShsZSl9LFEucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuY29kZXIuZW5kKCl9LFoucHJvdG90''@;'; put 'put ''eXBlLndyaXRlPWZ1bmN0aW9uKGxlKXtpZighdGhpcy5kZWNvZGVyKXtpZih0aGlzLmluaXRpYWxCeXRlcy5wdXNoKGxlKSx0aGlzLmluaXRpYWxCeXRlc0xlbis9bGUubGVuZ3RoLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPDMyKXJldHVybiIiO3ZhciBXPWllKGdlLmNvbmNhdCh0aGlzLmluaXRp''@;'; put 'put ''YWxCeXRlcyksdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihXLHRoaXMub3B0aW9ucyksdGhpcy5pbml0aWFsQnl0ZXMubGVuZ3RoPXRoaXMuaW5pdGlhbEJ5dGVzTGVuPTB9cmV0dXJuIHRoaXMuZGVjb2Rlci53cml0ZShs''@;'; put 'put ''ZSl9LFoucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2lmKCF0aGlzLmRlY29kZXIpe3ZhciBsZT1nZS5jb25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLFk9aWUobGUsdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihZLHRoaXMu''@;'; put 'put ''b3B0aW9ucyk7dmFyIFc9dGhpcy5kZWNvZGVyLndyaXRlKGxlKSxOPXRoaXMuZGVjb2Rlci5lbmQoKTtyZXR1cm4gTj9XK046V31yZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpfX0sMjg3Nzg6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDYyMDM4KS5CdWZmZXI7ZnVuY3Rpb24g''@;'; put 'put ''QihzZSxhZSl7dGhpcy5pY29udj1hZX1KZS51dGY3PUIsSmUudW5pY29kZTExdXRmNz0idXRmNyIsQi5wcm90b3R5cGUuZW5jb2Rlcj1NZSxCLnByb3RvdHlwZS5kZWNvZGVyPVUsQi5wcm90b3R5cGUuYm9tQXdhcmU9ITA7dmFyIEU9L1teQS1aYS16MC05J1woXCksLVwuXC86XD8gXG5cclx0''@;'; put 'put ''XSsvZztmdW5jdGlvbiBNZShzZSxhZSl7dGhpcy5pY29udj1hZS5pY29udn1mdW5jdGlvbiBVKHNlLGFlKXt0aGlzLmljb252PWFlLmljb252LHRoaXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIn1NZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oc2Upe3JldHVybiBnZS5mcm9t''@;'; put 'put ''KHNlLnJlcGxhY2UoRSxmdW5jdGlvbihhZSl7cmV0dXJuIisiKygiKyI9PT1hZT8iIjp0aGlzLmljb252LmVuY29kZShhZSwidXRmMTYtYmUiKS50b1N0cmluZygiYmFzZTY0IikucmVwbGFjZSgvPSskLywiIikpKyItIn0uYmluZCh0aGlzKSkpfSxNZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9u''@;'; put 'put ''KCl7fTtmb3IodmFyIFE9L1tBLVphLXowLTlcLytdLyxaPVtdLGllPTA7aWU8MjU2O2llKyspWltpZV09US50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoaWUpKTt2YXIgbGU9IisiLmNoYXJDb2RlQXQoMCksWT0iLSIuY2hhckNvZGVBdCgwKSxXPSImIi5jaGFyQ29kZUF0KDApO2Z1bmN0aW9u''@;'; put 'put ''IE4oc2UsYWUpe3RoaXMuaWNvbnY9YWV9ZnVuY3Rpb24gZWUoc2UsYWUpe3RoaXMuaWNvbnY9YWUuaWNvbnYsdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPWdlLmFsbG9jKDYpLHRoaXMuYmFzZTY0QWNjdW1JZHg9MH1mdW5jdGlvbiBxKHNlLGFlKXt0aGlzLmljb252PWFlLmlj''@;'; put 'put ''b252LHRoaXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIn1VLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihzZSl7Zm9yKHZhciBhZT0iIixmZT0wLGRlPXRoaXMuaW5CYXNlNjQsdmU9dGhpcy5iYXNlNjRBY2N1bSxBZT0wO0FlPHNlLmxlbmd0aDtBZSsrKWlmKGRlKXtpZighWltz''@;'; put 'put ''ZVtBZV1dKXtpZihBZT09ZmUmJnNlW0FlXT09WSlhZSs9IisiO2Vsc2V7dmFyIGtlPXZlK3NlLnNsaWNlKGZlLEFlKS50b1N0cmluZygpO2FlKz10aGlzLmljb252LmRlY29kZShnZS5mcm9tKGtlLCJiYXNlNjQiKSwidXRmMTYtYmUiKX1zZVtBZV0hPVkmJkFlLS0sZmU9QWUrMSxkZT0hMSx2''@;'; put 'put ''ZT0iIn19ZWxzZSBzZVtBZV09PWxlJiYoYWUrPXRoaXMuaWNvbnYuZGVjb2RlKHNlLnNsaWNlKGZlLEFlKSwiYXNjaWkiKSxmZT1BZSsxLGRlPSEwKTtpZihkZSl7dmFyIFNlPShrZT12ZStzZS5zbGljZShmZSkudG9TdHJpbmcoKSkubGVuZ3RoLWtlLmxlbmd0aCU4O3ZlPWtlLnNsaWNlKFNl''@;'; put 'put ''KSxrZT1rZS5zbGljZSgwLFNlKSxhZSs9dGhpcy5pY29udi5kZWNvZGUoZ2UuZnJvbShrZSwiYmFzZTY0IiksInV0ZjE2LWJlIil9ZWxzZSBhZSs9dGhpcy5pY29udi5kZWNvZGUoc2Uuc2xpY2UoZmUpLCJhc2NpaSIpO3JldHVybiB0aGlzLmluQmFzZTY0PWRlLHRoaXMuYmFzZTY0QWNjdW09''@;'; put 'put ''dmUsYWV9LFUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3ZhciBzZT0iIjtyZXR1cm4gdGhpcy5pbkJhc2U2NCYmdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGg+MCYmKHNlPXRoaXMuaWNvbnYuZGVjb2RlKGdlLmZyb20odGhpcy5iYXNlNjRBY2N1bSwiYmFzZTY0IiksInV0ZjE2LWJlIikpLHRo''@;'; put 'put ''aXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIixzZX0sSmUudXRmN2ltYXA9TixOLnByb3RvdHlwZS5lbmNvZGVyPWVlLE4ucHJvdG90eXBlLmRlY29kZXI9cSxOLnByb3RvdHlwZS5ib21Bd2FyZT0hMCxlZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oc2Upe2Zvcih2YXIgYWU9''@;'; put 'put ''dGhpcy5pbkJhc2U2NCxmZT10aGlzLmJhc2U2NEFjY3VtLGRlPXRoaXMuYmFzZTY0QWNjdW1JZHgsdmU9Z2UuYWxsb2MoNSpzZS5sZW5ndGgrMTApLEFlPTAsa2U9MDtrZTxzZS5sZW5ndGg7a2UrKyl7dmFyIFNlPXNlLmNoYXJDb2RlQXQoa2UpOzMyPD1TZSYmU2U8PTEyNj8oYWUmJihkZT4w''@;'; put 'put ''JiYoQWUrPXZlLndyaXRlKGZlLnNsaWNlKDAsZGUpLnRvU3RyaW5nKCJiYXNlNjQiKS5yZXBsYWNlKC9cLy9nLCIsIikucmVwbGFjZSgvPSskLywiIiksQWUpLGRlPTApLHZlW0FlKytdPVksYWU9ITEpLGFlfHwodmVbQWUrK109U2UsU2U9PT1XJiYodmVbQWUrK109WSkpKTooYWV8fCh2ZVtB''@;'; put 'put ''ZSsrXT1XLGFlPSEwKSxhZSYmKGZlW2RlKytdPVNlPj44LGZlW2RlKytdPTI1NSZTZSxkZT09ZmUubGVuZ3RoJiYoQWUrPXZlLndyaXRlKGZlLnRvU3RyaW5nKCJiYXNlNjQiKS5yZXBsYWNlKC9cLy9nLCIsIiksQWUpLGRlPTApKSl9cmV0dXJuIHRoaXMuaW5CYXNlNjQ9YWUsdGhpcy5iYXNl''@;'; put 'put ''NjRBY2N1bUlkeD1kZSx2ZS5zbGljZSgwLEFlKX0sZWUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3ZhciBzZT1nZS5hbGxvYygxMCksYWU9MDtyZXR1cm4gdGhpcy5pbkJhc2U2NCYmKHRoaXMuYmFzZTY0QWNjdW1JZHg+MCYmKGFlKz1zZS53cml0ZSh0aGlzLmJhc2U2NEFjY3VtLnNsaWNl''@;'; put 'put ''KDAsdGhpcy5iYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKS5yZXBsYWNlKC89KyQvLCIiKSxhZSksdGhpcy5iYXNlNjRBY2N1bUlkeD0wKSxzZVthZSsrXT1ZLHRoaXMuaW5CYXNlNjQ9ITEpLHNlLnNsaWNlKDAsYWUpfTt2YXIgSj1aLnNsaWNl''@;'; put 'put ''KCk7SlsiLCIuY2hhckNvZGVBdCgwKV09ITAscS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oc2Upe2Zvcih2YXIgYWU9IiIsZmU9MCxkZT10aGlzLmluQmFzZTY0LHZlPXRoaXMuYmFzZTY0QWNjdW0sQWU9MDtBZTxzZS5sZW5ndGg7QWUrKylpZihkZSl7aWYoIUpbc2VbQWVdXSl7aWYoQWU9''@;'; put 'put ''PWZlJiZzZVtBZV09PVkpYWUrPSImIjtlbHNle3ZhciBrZT12ZStzZS5zbGljZShmZSxBZSkudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csIi8iKTthZSs9dGhpcy5pY29udi5kZWNvZGUoZ2UuZnJvbShrZSwiYmFzZTY0IiksInV0ZjE2LWJlIil9c2VbQWVdIT1ZJiZBZS0tLGZlPUFlKzEsZGU9''@;'; put 'put ''ITEsdmU9IiJ9fWVsc2Ugc2VbQWVdPT1XJiYoYWUrPXRoaXMuaWNvbnYuZGVjb2RlKHNlLnNsaWNlKGZlLEFlKSwiYXNjaWkiKSxmZT1BZSsxLGRlPSEwKTtpZihkZSl7dmFyIFNlPShrZT12ZStzZS5zbGljZShmZSkudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csIi8iKSkubGVuZ3RoLWtlLmxl''@;'; put 'put ''bmd0aCU4O3ZlPWtlLnNsaWNlKFNlKSxrZT1rZS5zbGljZSgwLFNlKSxhZSs9dGhpcy5pY29udi5kZWNvZGUoZ2UuZnJvbShrZSwiYmFzZTY0IiksInV0ZjE2LWJlIil9ZWxzZSBhZSs9dGhpcy5pY29udi5kZWNvZGUoc2Uuc2xpY2UoZmUpLCJhc2NpaSIpO3JldHVybiB0aGlzLmluQmFzZTY0''@;'; put 'put ''PWRlLHRoaXMuYmFzZTY0QWNjdW09dmUsYWV9LHEucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3ZhciBzZT0iIjtyZXR1cm4gdGhpcy5pbkJhc2U2NCYmdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGg+MCYmKHNlPXRoaXMuaWNvbnYuZGVjb2RlKGdlLmZyb20odGhpcy5iYXNlNjRBY2N1bSwiYmFz''@;'; put 'put ''ZTY0IiksInV0ZjE2LWJlIikpLHRoaXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIixzZX19LDQ2MDk5OihYZSxKZSk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZ2UoRSxNZSl7dGhpcy5lbmNvZGVyPUUsdGhpcy5hZGRCT009ITB9ZnVuY3Rpb24gQihFLE1lKXt0aGlzLmRlY29k''@;'; put 'put ''ZXI9RSx0aGlzLnBhc3M9ITEsdGhpcy5vcHRpb25zPU1lfHx7fX1KZS5QcmVwZW5kQk9NPWdlLGdlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5hZGRCT00mJihFPSJcdWZlZmYiK0UsdGhpcy5hZGRCT009ITEpLHRoaXMuZW5jb2Rlci53cml0ZShFKX0sZ2UucHJv''@;'; put 'put ''dG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuY29kZXIuZW5kKCl9LEplLlN0cmlwQk9NPUIsQi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRSl7dmFyIE1lPXRoaXMuZGVjb2Rlci53cml0ZShFKTtyZXR1cm4gdGhpcy5wYXNzfHwhTWV8fCgiXHVmZWZmIj09PU1lWzBdJiYo''@;'; put 'put ''TWU9TWUuc2xpY2UoMSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5zdHJpcEJPTSYmdGhpcy5vcHRpb25zLnN0cmlwQk9NKCkpLHRoaXMucGFzcz0hMCksTWV9LEIucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY29kZXIuZW5kKCl9fSw0MTkyNTooWGUs''@;'; put 'put ''SmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNjIwMzgpLkJ1ZmZlcixCPUwoNDYwOTkpLEU9WGUuZXhwb3J0cztFLmVuY29kaW5ncz1udWxsLEUuZGVmYXVsdENoYXJVbmljb2RlPSJcdWZmZmQiLEUuZGVmYXVsdENoYXJTaW5nbGVCeXRlPSI/IixFLmVuY29kZT1mdW5jdGlvbihaLGll''@;'; put 'put ''LGxlKXtaPSIiKyhafHwiIik7dmFyIFk9RS5nZXRFbmNvZGVyKGllLGxlKSxXPVkud3JpdGUoWiksTj1ZLmVuZCgpO3JldHVybiBOJiZOLmxlbmd0aD4wP2dlLmNvbmNhdChbVyxOXSk6V30sRS5kZWNvZGU9ZnVuY3Rpb24oWixpZSxsZSl7InN0cmluZyI9PXR5cGVvZiBaJiYoRS5za2lwRGVj''@;'; put 'put ''b2RlV2FybmluZ3x8KGNvbnNvbGUuZXJyb3IoIkljb252LWxpdGUgd2FybmluZzogZGVjb2RlKCktaW5nIHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gUmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL2FzaHR1Y2hraW4vaWNvbnYtbGl0ZS93aWtpL1VzZS1CdWZmZXJzLXdoZW4tZGVjb2Rpbmci''@;'; put 'put ''KSxFLnNraXBEZWNvZGVXYXJuaW5nPSEwKSxaPWdlLmZyb20oIiIrKFp8fCIiKSwiYmluYXJ5IikpO3ZhciBZPUUuZ2V0RGVjb2RlcihpZSxsZSksVz1ZLndyaXRlKFopLE49WS5lbmQoKTtyZXR1cm4gTj9XK046V30sRS5lbmNvZGluZ0V4aXN0cz1mdW5jdGlvbihaKXt0cnl7cmV0dXJuIEUu''@;'; put 'put ''Z2V0Q29kZWMoWiksITB9Y2F0Y2goaWUpe3JldHVybiExfX0sRS50b0VuY29kaW5nPUUuZW5jb2RlLEUuZnJvbUVuY29kaW5nPUUuZGVjb2RlLEUuX2NvZGVjRGF0YUNhY2hlPXt9LEUuZ2V0Q29kZWM9ZnVuY3Rpb24oWil7RS5lbmNvZGluZ3N8fChFLmVuY29kaW5ncz1MKDc5NzE0KSk7Zm9y''@;'; put 'put ''KHZhciBpZT1FLl9jYW5vbmljYWxpemVFbmNvZGluZyhaKSxsZT17fTs7KXt2YXIgWT1FLl9jb2RlY0RhdGFDYWNoZVtpZV07aWYoWSlyZXR1cm4gWTt2YXIgVz1FLmVuY29kaW5nc1tpZV07c3dpdGNoKHR5cGVvZiBXKXtjYXNlInN0cmluZyI6aWU9VzticmVhaztjYXNlIm9iamVjdCI6Zm9y''@;'; put 'put ''KHZhciBOIGluIFcpbGVbTl09V1tOXTtsZS5lbmNvZGluZ05hbWV8fChsZS5lbmNvZGluZ05hbWU9aWUpLGllPVcudHlwZTticmVhaztjYXNlImZ1bmN0aW9uIjpyZXR1cm4gbGUuZW5jb2RpbmdOYW1lfHwobGUuZW5jb2RpbmdOYW1lPWllKSxZPW5ldyBXKGxlLEUpLEUuX2NvZGVjRGF0YUNh''@;'; put 'put ''Y2hlW2xlLmVuY29kaW5nTmFtZV09WSxZO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyBub3QgcmVjb2duaXplZDogJyIrWisiJyAoc2VhcmNoZWQgYXM6ICciK2llKyInKSIpfX19LEUuX2Nhbm9uaWNhbGl6ZUVuY29kaW5nPWZ1bmN0aW9uKFEpe3JldHVybigiIitRKS50b0xv''@;'; put 'put ''d2VyQ2FzZSgpLnJlcGxhY2UoLzpcZHs0fSR8W14wLTlhLXpdL2csIiIpfSxFLmdldEVuY29kZXI9ZnVuY3Rpb24oWixpZSl7dmFyIGxlPUUuZ2V0Q29kZWMoWiksWT1uZXcgbGUuZW5jb2RlcihpZSxsZSk7cmV0dXJuIGxlLmJvbUF3YXJlJiZpZSYmaWUuYWRkQk9NJiYoWT1uZXcgQi5QcmVw''@;'; put 'put ''ZW5kQk9NKFksaWUpKSxZfSxFLmdldERlY29kZXI9ZnVuY3Rpb24oWixpZSl7dmFyIGxlPUUuZ2V0Q29kZWMoWiksWT1uZXcgbGUuZGVjb2RlcihpZSxsZSk7cmV0dXJuIGxlLmJvbUF3YXJlJiYhKGllJiYhMT09PWllLnN0cmlwQk9NKSYmKFk9bmV3IEIuU3RyaXBCT00oWSxpZSkpLFl9O3Zh''@;'; put 'put ''ciBNZT0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJnByb2Nlc3MudmVyc2lvbnMmJnByb2Nlc3MudmVyc2lvbnMubm9kZTtpZihNZSl7dmFyIFU9TWUuc3BsaXQoIi4iKS5tYXAoTnVtYmVyKTsoVVswXT4wfHxVWzFdPj0xMCkmJkwoNjkzMzEpKEUpLEwoMTk1MjcpKEUpfX0sNDg0NjE6''@;'; put 'put ''KFhlLEplKT0+e0plLnJlYWQ9ZnVuY3Rpb24oTCxnZSxCLEUsTWUpe3ZhciBVLFEsWj04Kk1lLUUtMSxpZT0oMTw8WiktMSxsZT1pZT4+MSxZPS03LFc9Qj9NZS0xOjAsTj1CPy0xOjEsZWU9TFtnZStXXTtmb3IoVys9TixVPWVlJigxPDwtWSktMSxlZT4+PS1ZLFkrPVo7WT4wO1U9MjU2KlUr''@;'; put 'put ''TFtnZStXXSxXKz1OLFktPTgpO2ZvcihRPVUmKDE8PC1ZKS0xLFU+Pj0tWSxZKz1FO1k+MDtRPTI1NipRK0xbZ2UrV10sVys9TixZLT04KTtpZigwPT09VSlVPTEtbGU7ZWxzZXtpZihVPT09aWUpcmV0dXJuIFE/TmFOOjEvMCooZWU/LTE6MSk7USs9TWF0aC5wb3coMixFKSxVLT1sZX1yZXR1''@;'; put 'put ''cm4oZWU/LTE6MSkqUSpNYXRoLnBvdygyLFUtRSl9LEplLndyaXRlPWZ1bmN0aW9uKEwsZ2UsQixFLE1lLFUpe3ZhciBRLFosaWUsbGU9OCpVLU1lLTEsWT0oMTw8bGUpLTEsVz1ZPj4xLE49MjM9PT1NZT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAsZWU9RT8wOlUtMSxxPUU/''@;'; put 'put ''MTotMSxKPWdlPDB8fDA9PT1nZSYmMS9nZTwwPzE6MDtmb3IoZ2U9TWF0aC5hYnMoZ2UpLGlzTmFOKGdlKXx8Z2U9PT0xLzA/KFo9aXNOYU4oZ2UpPzE6MCxRPVkpOihRPU1hdGguZmxvb3IoTWF0aC5sb2coZ2UpL01hdGguTE4yKSxnZSooaWU9TWF0aC5wb3coMiwtUSkpPDEmJihRLS0saWUq''@;'; put 'put ''PTIpLChnZSs9UStXPj0xP04vaWU6TipNYXRoLnBvdygyLDEtVykpKmllPj0yJiYoUSsrLGllLz0yKSxRK1c+PVk/KFo9MCxRPVkpOlErVz49MT8oWj0oZ2UqaWUtMSkqTWF0aC5wb3coMixNZSksUSs9Vyk6KFo9Z2UqTWF0aC5wb3coMixXLTEpKk1hdGgucG93KDIsTWUpLFE9MCkpO01lPj04''@;'; put 'put ''O0xbQitlZV09MjU1JlosZWUrPXEsWi89MjU2LE1lLT04KTtmb3IoUT1RPDxNZXxaLGxlKz1NZTtsZT4wO0xbQitlZV09MjU1JlEsZWUrPXEsUS89MjU2LGxlLT04KTtMW0IrZWUtcV18PTEyOCpKfX0sODM4OTQ6WGU9PntYZS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3Jl''@;'; put 'put ''YXRlP2Z1bmN0aW9uKEwsZ2Upe2dlJiYoTC5zdXBlcl89Z2UsTC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpMLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pKX06ZnVuY3Rpb24oTCxnZSl7aWYoZ2Up''@;'; put 'put ''e0wuc3VwZXJfPWdlO3ZhciBCPWZ1bmN0aW9uKCl7fTtCLnByb3RvdHlwZT1nZS5wcm90b3R5cGUsTC5wcm90b3R5cGU9bmV3IEIsTC5wcm90b3R5cGUuY29uc3RydWN0b3I9TH19fSw4MDk1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4Mzg5NCksQj1MKDM5NjUwKSxFPUwo''@;'; put 'put ''NzM1MDIpLkJ1ZmZlcixNZT1uZXcgQXJyYXkoMTYpO2Z1bmN0aW9uIFUoKXtCLmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4Nzh9ZnVuY3Rpb24gUShXLE4pe3JldHVybiBXPDxOfFc+''@;'; put 'put ''Pj4zMi1OfWZ1bmN0aW9uIFooVyxOLGVlLHEsSixzZSxhZSl7cmV0dXJuIFEoVysoTiZlZXx+TiZxKStKK3NlfDAsYWUpK058MH1mdW5jdGlvbiBpZShXLE4sZWUscSxKLHNlLGFlKXtyZXR1cm4gUShXKyhOJnF8ZWUmfnEpK0orc2V8MCxhZSkrTnwwfWZ1bmN0aW9uIGxlKFcsTixlZSxxLEos''@;'; put 'put ''c2UsYWUpe3JldHVybiBRKFcrKE5eZWVecSkrSitzZXwwLGFlKStOfDB9ZnVuY3Rpb24gWShXLE4sZWUscSxKLHNlLGFlKXtyZXR1cm4gUShXKyhlZV4oTnx+cSkpK0orc2V8MCxhZSkrTnwwfWdlKFUsQiksVS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgVz1NZSxOPTA7''@;'; put 'put ''TjwxNjsrK04pV1tOXT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0Kk4pO3ZhciBlZT10aGlzLl9hLHE9dGhpcy5fYixKPXRoaXMuX2Msc2U9dGhpcy5fZDtlZT1aKGVlLHEsSixzZSxXWzBdLDM2MTQwOTAzNjAsNyksc2U9WihzZSxlZSxxLEosV1sxXSwzOTA1NDAyNzEwLDEyKSxKPVooSixz''@;'; put 'put ''ZSxlZSxxLFdbMl0sNjA2MTA1ODE5LDE3KSxxPVoocSxKLHNlLGVlLFdbM10sMzI1MDQ0MTk2NiwyMiksZWU9WihlZSxxLEosc2UsV1s0XSw0MTE4NTQ4Mzk5LDcpLHNlPVooc2UsZWUscSxKLFdbNV0sMTIwMDA4MDQyNiwxMiksSj1aKEosc2UsZWUscSxXWzZdLDI4MjE3MzU5NTUsMTcpLHE9''@;'; put 'put ''WihxLEosc2UsZWUsV1s3XSw0MjQ5MjYxMzEzLDIyKSxlZT1aKGVlLHEsSixzZSxXWzhdLDE3NzAwMzU0MTYsNyksc2U9WihzZSxlZSxxLEosV1s5XSwyMzM2NTUyODc5LDEyKSxKPVooSixzZSxlZSxxLFdbMTBdLDQyOTQ5MjUyMzMsMTcpLHE9WihxLEosc2UsZWUsV1sxMV0sMjMwNDU2MzEz''@;'; put 'put ''NCwyMiksZWU9WihlZSxxLEosc2UsV1sxMl0sMTgwNDYwMzY4Miw3KSxzZT1aKHNlLGVlLHEsSixXWzEzXSw0MjU0NjI2MTk1LDEyKSxKPVooSixzZSxlZSxxLFdbMTRdLDI3OTI5NjUwMDYsMTcpLGVlPWllKGVlLHE9WihxLEosc2UsZWUsV1sxNV0sMTIzNjUzNTMyOSwyMiksSixzZSxXWzFd''@;'; put 'put ''LDQxMjkxNzA3ODYsNSksc2U9aWUoc2UsZWUscSxKLFdbNl0sMzIyNTQ2NTY2NCw5KSxKPWllKEosc2UsZWUscSxXWzExXSw2NDM3MTc3MTMsMTQpLHE9aWUocSxKLHNlLGVlLFdbMF0sMzkyMTA2OTk5NCwyMCksZWU9aWUoZWUscSxKLHNlLFdbNV0sMzU5MzQwODYwNSw1KSxzZT1pZShzZSxl''@;'; put 'put ''ZSxxLEosV1sxMF0sMzgwMTYwODMsOSksSj1pZShKLHNlLGVlLHEsV1sxNV0sMzYzNDQ4ODk2MSwxNCkscT1pZShxLEosc2UsZWUsV1s0XSwzODg5NDI5NDQ4LDIwKSxlZT1pZShlZSxxLEosc2UsV1s5XSw1Njg0NDY0MzgsNSksc2U9aWUoc2UsZWUscSxKLFdbMTRdLDMyNzUxNjM2MDYsOSks''@;'; put 'put ''Sj1pZShKLHNlLGVlLHEsV1szXSw0MTA3NjAzMzM1LDE0KSxxPWllKHEsSixzZSxlZSxXWzhdLDExNjM1MzE1MDEsMjApLGVlPWllKGVlLHEsSixzZSxXWzEzXSwyODUwMjg1ODI5LDUpLHNlPWllKHNlLGVlLHEsSixXWzJdLDQyNDM1NjM1MTIsOSksSj1pZShKLHNlLGVlLHEsV1s3XSwxNzM1''@;'; put 'put ''MzI4NDczLDE0KSxlZT1sZShlZSxxPWllKHEsSixzZSxlZSxXWzEyXSwyMzY4MzU5NTYyLDIwKSxKLHNlLFdbNV0sNDI5NDU4ODczOCw0KSxzZT1sZShzZSxlZSxxLEosV1s4XSwyMjcyMzkyODMzLDExKSxKPWxlKEosc2UsZWUscSxXWzExXSwxODM5MDMwNTYyLDE2KSxxPWxlKHEsSixzZSxl''@;'; put 'put ''ZSxXWzE0XSw0MjU5NjU3NzQwLDIzKSxlZT1sZShlZSxxLEosc2UsV1sxXSwyNzYzOTc1MjM2LDQpLHNlPWxlKHNlLGVlLHEsSixXWzRdLDEyNzI4OTMzNTMsMTEpLEo9bGUoSixzZSxlZSxxLFdbN10sNDEzOTQ2OTY2NCwxNikscT1sZShxLEosc2UsZWUsV1sxMF0sMzIwMDIzNjY1NiwyMyks''@;'; put 'put ''ZWU9bGUoZWUscSxKLHNlLFdbMTNdLDY4MTI3OTE3NCw0KSxzZT1sZShzZSxlZSxxLEosV1swXSwzOTM2NDMwMDc0LDExKSxKPWxlKEosc2UsZWUscSxXWzNdLDM1NzI0NDUzMTcsMTYpLHE9bGUocSxKLHNlLGVlLFdbNl0sNzYwMjkxODksMjMpLGVlPWxlKGVlLHEsSixzZSxXWzldLDM2NTQ2''@;'; put 'put ''MDI4MDksNCksc2U9bGUoc2UsZWUscSxKLFdbMTJdLDM4NzMxNTE0NjEsMTEpLEo9bGUoSixzZSxlZSxxLFdbMTVdLDUzMDc0MjUyMCwxNiksZWU9WShlZSxxPWxlKHEsSixzZSxlZSxXWzJdLDMyOTk2Mjg2NDUsMjMpLEosc2UsV1swXSw0MDk2MzM2NDUyLDYpLHNlPVkoc2UsZWUscSxKLFdb''@;'; put 'put ''N10sMTEyNjg5MTQxNSwxMCksSj1ZKEosc2UsZWUscSxXWzE0XSwyODc4NjEyMzkxLDE1KSxxPVkocSxKLHNlLGVlLFdbNV0sNDIzNzUzMzI0MSwyMSksZWU9WShlZSxxLEosc2UsV1sxMl0sMTcwMDQ4NTU3MSw2KSxzZT1ZKHNlLGVlLHEsSixXWzNdLDIzOTk5ODA2OTAsMTApLEo9WShKLHNl''@;'; put 'put ''LGVlLHEsV1sxMF0sNDI5MzkxNTc3MywxNSkscT1ZKHEsSixzZSxlZSxXWzFdLDIyNDAwNDQ0OTcsMjEpLGVlPVkoZWUscSxKLHNlLFdbOF0sMTg3MzMxMzM1OSw2KSxzZT1ZKHNlLGVlLHEsSixXWzE1XSw0MjY0MzU1NTUyLDEwKSxKPVkoSixzZSxlZSxxLFdbNl0sMjczNDc2ODkxNiwxNSks''@;'; put 'put ''cT1ZKHEsSixzZSxlZSxXWzEzXSwxMzA5MTUxNjQ5LDIxKSxlZT1ZKGVlLHEsSixzZSxXWzRdLDQxNDk0NDQyMjYsNiksc2U9WShzZSxlZSxxLEosV1sxMV0sMzE3NDc1NjkxNywxMCksSj1ZKEosc2UsZWUscSxXWzJdLDcxODc4NzI1OSwxNSkscT1ZKHEsSixzZSxlZSxXWzldLDM5NTE0ODE3''@;'; put 'put ''NDUsMjEpLHRoaXMuX2E9dGhpcy5fYStlZXwwLHRoaXMuX2I9dGhpcy5fYitxfDAsdGhpcy5fYz10aGlzLl9jK0p8MCx0aGlzLl9kPXRoaXMuX2Qrc2V8MH0sVS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9i''@;'; put 'put ''bG9ja09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMu''@;'; put 'put ''X2xlbmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBXPUUuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBXLndyaXRlSW50MzJMRSh0aGlzLl9hLDApLFcud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCksVy53cml0''@;'; put 'put ''ZUludDMyTEUodGhpcy5fYyw4KSxXLndyaXRlSW50MzJMRSh0aGlzLl9kLDEyKSxXfSxYZS5leHBvcnRzPVV9LDE3MDc5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDEzNzgpLEI9TCgzNzk1MCk7ZnVuY3Rpb24gRShNZSl7dGhpcy5yYW5kPU1lfHxuZXcgQi5SYW5kfVhlLmV4cG9ydHM9RSxFLmNy''@;'; put 'put ''ZWF0ZT1mdW5jdGlvbihVKXtyZXR1cm4gbmV3IEUoVSl9LEUucHJvdG90eXBlLl9yYW5kYmVsb3c9ZnVuY3Rpb24oVSl7dmFyIFE9VS5iaXRMZW5ndGgoKSxaPU1hdGguY2VpbChRLzgpO2Rve3ZhciBpZT1uZXcgZ2UodGhpcy5yYW5kLmdlbmVyYXRlKFopKX13aGlsZShpZS5jbXAoVSk+PTAp''@;'; put 'put ''O3JldHVybiBpZX0sRS5wcm90b3R5cGUuX3JhbmRyYW5nZT1mdW5jdGlvbihVLFEpe3ZhciBaPVEuc3ViKFUpO3JldHVybiBVLmFkZCh0aGlzLl9yYW5kYmVsb3coWikpfSxFLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKFUsUSxaKXt2YXIgaWU9VS5iaXRMZW5ndGgoKSxsZT1nZS5tb250KFUp''@;'; put 'put ''LFk9bmV3IGdlKDEpLnRvUmVkKGxlKTtRfHwoUT1NYXRoLm1heCgxLGllLzQ4fDApKTtmb3IodmFyIFc9VS5zdWJuKDEpLE49MDshVy50ZXN0bihOKTtOKyspO2Zvcih2YXIgZWU9VS5zaHJuKE4pLHE9Vy50b1JlZChsZSk7UT4wO1EtLSl7dmFyIHNlPXRoaXMuX3JhbmRyYW5nZShuZXcgZ2Uo''@;'; put 'put ''MiksVyk7WiYmWihzZSk7dmFyIGFlPXNlLnRvUmVkKGxlKS5yZWRQb3coZWUpO2lmKDAhPT1hZS5jbXAoWSkmJjAhPT1hZS5jbXAocSkpe2Zvcih2YXIgZmU9MTtmZTxOO2ZlKyspe2lmKDA9PT0oYWU9YWUucmVkU3FyKCkpLmNtcChZKSlyZXR1cm4hMTtpZigwPT09YWUuY21wKHEpKWJyZWFr''@;'; put 'put ''fWlmKGZlPT09TilyZXR1cm4hMX19cmV0dXJuITB9LEUucHJvdG90eXBlLmdldERpdmlzb3I9ZnVuY3Rpb24oVSxRKXt2YXIgWj1VLmJpdExlbmd0aCgpLGllPWdlLm1vbnQoVSksbGU9bmV3IGdlKDEpLnRvUmVkKGllKTtRfHwoUT1NYXRoLm1heCgxLFovNDh8MCkpO2Zvcih2YXIgWT1VLnN1''@;'; put 'put ''Ym4oMSksVz0wOyFZLnRlc3RuKFcpO1crKyk7Zm9yKHZhciBOPVUuc2hybihXKSxlZT1ZLnRvUmVkKGllKTtRPjA7US0tKXt2YXIgcT10aGlzLl9yYW5kcmFuZ2UobmV3IGdlKDIpLFkpLEo9VS5nY2QocSk7aWYoMCE9PUouY21wbigxKSlyZXR1cm4gSjt2YXIgc2U9cS50b1JlZChpZSkucmVk''@;'; put 'put ''UG93KE4pO2lmKDAhPT1zZS5jbXAobGUpJiYwIT09c2UuY21wKGVlKSl7Zm9yKHZhciBhZT0xO2FlPFc7YWUrKyl7aWYoMD09PShzZT1zZS5yZWRTcXIoKSkuY21wKGxlKSlyZXR1cm4gc2UuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKFUpO2lmKDA9PT1zZS5jbXAoZWUpKWJyZWFrfWlmKGFlPT09''@;'; put 'put ''VylyZXR1cm4oc2U9c2UucmVkU3FyKCkpLmZyb21SZWQoKS5zdWJuKDEpLmdjZChVKX19cmV0dXJuITF9fSwxMzc4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShoZSxPKXtpZighaGUpdGhyb3cgbmV3IEVycm9yKE98fCJBc3NlcnRp''@;'; put 'put ''b24gZmFpbGVkIil9ZnVuY3Rpb24gTWUoaGUsTyl7aGUuc3VwZXJfPU87dmFyIHo9ZnVuY3Rpb24oKXt9O3oucHJvdG90eXBlPU8ucHJvdG90eXBlLGhlLnByb3RvdHlwZT1uZXcgeixoZS5wcm90b3R5cGUuY29uc3RydWN0b3I9aGV9ZnVuY3Rpb24gVShoZSxPLHope2lmKFUuaXNCTihoZSkp''@;'; put 'put ''cmV0dXJuIGhlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1oZSYmKCgibGUiPT09T3x8ImJlIj09PU8pJiYoej1PLE89MTApLHRoaXMuX2luaXQoaGV8fDAsT3x8MTAsenx8ImJlIikpfXZhciBROyJvYmplY3QiPT10''@;'; put 'put ''eXBlb2YgZ2U/Z2UuZXhwb3J0cz1VOkIuQk49VSxVLkJOPVUsVS53b3JkU2l6ZT0yNjt0cnl7UT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoNTY2MTkpLkJ1ZmZlcn1jYXRjaChoZSl7fWZ1bmN0aW9uIFooaGUsTyl7''@;'; put 'put ''dmFyIHo9aGUuY2hhckNvZGVBdChPKTtyZXR1cm4gej49NjUmJno8PTcwP3otNTU6ej49OTcmJno8PTEwMj96LTg3OnotNDgmMTV9ZnVuY3Rpb24gaWUoaGUsTyx6KXt2YXIgbmU9WihoZSx6KTtyZXR1cm4gei0xPj1PJiYobmV8PVooaGUsei0xKTw8NCksbmV9ZnVuY3Rpb24gbGUoaGUsTyx6''@;'; put 'put ''LG5lKXtmb3IodmFyIHRlPTAseD1NYXRoLm1pbihoZS5sZW5ndGgseiksUD1PO1A8eDtQKyspe3ZhciBWPWhlLmNoYXJDb2RlQXQoUCktNDg7dGUqPW5lLHRlKz1WPj00OT9WLTQ5KzEwOlY+PTE3P1YtMTcrMTA6Vn1yZXR1cm4gdGV9VS5pc0JOPWZ1bmN0aW9uKE8pe3JldHVybiBPIGluc3Rh''@;'; put 'put ''bmNlb2YgVXx8bnVsbCE9PU8mJiJvYmplY3QiPT10eXBlb2YgTyYmTy5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PVUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoTy53b3Jkcyl9LFUubWF4PWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHopPjA/Tzp6fSxVLm1pbj1mdW5jdGlvbihPLHope3Jl''@;'; put 'put ''dHVybiBPLmNtcCh6KTwwP086en0sVS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oTyx6LG5lKXtpZigibnVtYmVyIj09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoTyx6LG5lKTtpZigib2JqZWN0Ij09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2luaXRBcnJheShPLHosbmUpOyJo''@;'; put 'put ''ZXgiPT09eiYmKHo9MTYpLEUoej09PSgwfHopJiZ6Pj0yJiZ6PD0zNik7dmFyIHRlPTA7Ii0iPT09KE89Ty50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih0ZSsrLHRoaXMubmVnYXRpdmU9MSksdGU8Ty5sZW5ndGgmJigxNj09PXo/dGhpcy5fcGFyc2VIZXgoTyx0ZSxuZSk6''@;'; put 'put ''KHRoaXMuX3BhcnNlQmFzZShPLHosdGUpLCJsZSI9PT1uZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosbmUpKSl9LFUucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKE8seixuZSl7TzwwJiYodGhpcy5uZWdhdGl2ZT0xLE89LU8pLE88NjcxMDg4NjQ/KHRoaXMud29y''@;'; put 'put ''ZHM9WzY3MTA4ODYzJk9dLHRoaXMubGVuZ3RoPTEpOk88NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRShPPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEwODg2''@;'; put 'put ''NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09bmUmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LG5lKX0sVS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihPLHosbmUpe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPLmxlbmd0aCksTy5sZW5ndGg8PTApcmV0''@;'; put 'put ''dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoTy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdGU9MDt0ZTx0aGlzLmxlbmd0aDt0ZSsrKXRoaXMud29yZHNbdGVdPTA7dmFyIHgsUCxW''@;'; put 'put ''PTA7aWYoImJlIj09PW5lKWZvcih0ZT1PLmxlbmd0aC0xLHg9MDt0ZT49MDt0ZS09Myl0aGlzLndvcmRzW3hdfD0oUD1PW3RlXXxPW3RlLTFdPDw4fE9bdGUtMl08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4''@;'; put 'put ''KyspO2Vsc2UgaWYoImxlIj09PW5lKWZvcih0ZT0wLHg9MDt0ZTxPLmxlbmd0aDt0ZSs9Myl0aGlzLndvcmRzW3hdfD0oUD1PW3RlXXxPW3RlKzFdPDw4fE9bdGUrMl08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0y''@;'; put 'put ''Nix4KyspO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihPLHosbmUpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoTy5sZW5ndGgteikvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdGU9MDt0ZTx0aGlzLmxlbmd0''@;'; put 'put ''aDt0ZSsrKXRoaXMud29yZHNbdGVdPTA7dmFyIFYseD0wLFA9MDtpZigiYmUiPT09bmUpZm9yKHRlPU8ubGVuZ3RoLTE7dGU+PXo7dGUtPTIpVj1pZShPLHosdGUpPDx4LHRoaXMud29yZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4LHRoaXMud29yZHNbUCs9MV18PVY+Pj4yNik6eCs9''@;'; put 'put ''ODtlbHNlIGZvcih0ZT0oTy5sZW5ndGgteiklMj09MD96KzE6ejt0ZTxPLmxlbmd0aDt0ZSs9MilWPWllKE8seix0ZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O3RoaXMuc3RyaXAoKX0sVS5wcm90b3R5''@;'; put 'put ''cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihPLHosbmUpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciB0ZT0wLHg9MTt4PD02NzEwODg2Mzt4Kj16KXRlKys7dGUtLSx4PXgvenwwO2Zvcih2YXIgUD1PLmxlbmd0aC1uZSxWPVAldGUsVD1NYXRoLm1pbihQLFAtVikrbmUsUz0w''@;'; put 'put ''LEY9bmU7RjxUO0YrPXRlKVM9bGUoTyxGLEYrdGUseiksdGhpcy5pbXVsbih4KSx0aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlzLl9pYWRkbihTKTtpZigwIT09Vil7dmFyIHllPTE7Zm9yKFM9bGUoTyxGLE8ubGVuZ3RoLHopLEY9MDtGPFY7RisrKXllKj16''@;'; put 'put ''O3RoaXMuaW11bG4oeWUpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpfXRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihPKXtPLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB6PTA7ejx0aGlz''@;'; put 'put ''Lmxlbmd0aDt6KyspTy53b3Jkc1t6XT10aGlzLndvcmRzW3pdO08ubGVuZ3RoPXRoaXMubGVuZ3RoLE8ubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxPLnJlZD10aGlzLnJlZH0sVS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KE8p''@;'; put 'put ''LE99LFUucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlz''@;'; put 'put ''Lmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sVS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LFUucHJvdG90eXBlLmlu''@;'; put 'put ''c3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIFk9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVz1bMCwwLDI1''@;'; put 'put ''LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxOPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcx''@;'; put 'put ''LDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2Mjkx''@;'; put 'put ''NTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIHEoaGUsTyx6KXt6Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeaGUubmVnYXRpdmU7dmFyIG5lPWhlLmxlbmd0aCtPLmxlbmd0aHwwO3oubGVuZ3RoPW5lLG5lPW5lLTF8MDt2YXIgdGU9MHxoZS53''@;'; put 'put ''b3Jkc1swXSx4PTB8Ty53b3Jkc1swXSxQPXRlKngsVD1QLzY3MTA4ODY0fDA7ei53b3Jkc1swXT02NzEwODg2MyZQO2Zvcih2YXIgUz0xO1M8bmU7UysrKXtmb3IodmFyIEY9VD4+PjI2LHllPTY3MTA4ODYzJlQsQ2U9TWF0aC5taW4oUyxPLmxlbmd0aC0xKSxEZT1NYXRoLm1heCgwLFMtaGUu''@;'; put 'put ''bGVuZ3RoKzEpO0RlPD1DZTtEZSsrKUYrPShQPSh0ZT0wfGhlLndvcmRzW1MtRGV8MF0pKih4PTB8Ty53b3Jkc1tEZV0pK3llKS82NzEwODg2NHwwLHllPTY3MTA4ODYzJlA7ei53b3Jkc1tTXT0wfHllLFQ9MHxGfXJldHVybiAwIT09VD96LndvcmRzW1NdPTB8VDp6Lmxlbmd0aC0tLHouc3Ry''@;'; put 'put ''aXAoKX1VLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihPLHope3ZhciBuZTtpZih6PTB8enx8MSwxNj09PShPPU98fDEwKXx8ImhleCI9PT1PKXtuZT0iIjtmb3IodmFyIHRlPTAseD0wLFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9dGhpcy53b3Jkc1tQXSxUPSgxNjc3NzIxNSYo''@;'; put 'put ''Vjw8dGV8eCkpLnRvU3RyaW5nKDE2KTtuZT0wIT0oeD1WPj4+MjQtdGUmMTY3NzcyMTUpfHxQIT09dGhpcy5sZW5ndGgtMT9ZWzYtVC5sZW5ndGhdK1QrbmU6VCtuZSwodGUrPTIpPj0yNiYmKHRlLT0yNixQLS0pfWZvcigwIT09eCYmKG5lPXgudG9TdHJpbmcoMTYpK25lKTtuZS5sZW5ndGgl''@;'; put 'put ''eiE9MDspbmU9IjAiK25lO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKG5lPSItIituZSksbmV9aWYoTz09PSgwfE8pJiZPPj0yJiZPPD0zNil7dmFyIFM9V1tPXSxGPU5bT107bmU9IiI7dmFyIHllPXRoaXMuY2xvbmUoKTtmb3IoeWUubmVnYXRpdmU9MDsheWUuaXNaZXJvKCk7KXt2YXIg''@;'; put 'put ''Q2U9eWUubW9kbihGKS50b1N0cmluZyhPKTtuZT0oeWU9eWUuaWRpdm4oRikpLmlzWmVybygpP0NlK25lOllbUy1DZS5sZW5ndGhdK0NlK25lfWZvcih0aGlzLmlzWmVybygpJiYobmU9IjAiK25lKTtuZS5sZW5ndGgleiE9MDspbmU9IjAiK25lO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYm''@;'; put 'put ''KG5lPSItIituZSksbmV9RSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxVLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBPPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9PKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlz''@;'; put 'put ''Lmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Tys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkUoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1POk99LFUucHJv''@;'; put 'put ''dG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sVS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gRSh2b2lkIDAhPT1RKSx0aGlzLnRvQXJyYXlMaWtlKFEsTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihPLHop''@;'; put 'put ''e3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LE8seil9LFUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKE8seixuZSl7dmFyIHRlPXRoaXMuYnl0ZUxlbmd0aCgpLHg9bmV8fE1hdGgubWF4KDEsdGUpO0UodGU8PXgsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBs''@;'; put 'put ''ZW5ndGgiKSxFKHg+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBULFMsUD0ibGUiPT09eixWPW5ldyBPKHgpLEY9dGhpcy5jbG9uZSgpO2lmKFApe2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbU109''@;'; put 'put ''VDtmb3IoO1M8eDtTKyspVltTXT0wfWVsc2V7Zm9yKFM9MDtTPHgtdGU7UysrKVZbU109MDtmb3IoUz0wOyFGLmlzWmVybygpO1MrKylUPUYuYW5kbG4oMjU1KSxGLml1c2hybig4KSxWW3gtUy0xXT1UfXJldHVybiBWfSxVLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rp''@;'; put 'put ''b24oTyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoTyl9OmZ1bmN0aW9uKE8pe3ZhciB6PU8sbmU9MDtyZXR1cm4gej49NDA5NiYmKG5lKz0xMyx6Pj4+PTEzKSx6Pj02NCYmKG5lKz03LHo+Pj49Nyksej49OCYmKG5lKz00LHo+Pj49NCksej49MiYmKG5lKz0yLHo+Pj49MiksbmUren0sVS5wcm90''@;'; put 'put ''b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKE8pe2lmKDA9PT1PKXJldHVybiAyNjt2YXIgej1PLG5lPTA7cmV0dXJuIDA9PSg4MTkxJnopJiYobmUrPTEzLHo+Pj49MTMpLDA9PSgxMjcmeikmJihuZSs9Nyx6Pj4+PTcpLDA9PSgxNSZ6KSYmKG5lKz00LHo+Pj49NCksMD09KDMmeikmJihuZSs9''@;'; put 'put ''Mix6Pj4+PTIpLDA9PSgxJnopJiZuZSsrLG5lfSxVLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgej10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKSt6fSxVLnByb3RvdHlwZS56ZXJvQml0cz1mdW5j''@;'; put 'put ''dGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBPPTAsej0wO3o8dGhpcy5sZW5ndGg7eisrKXt2YXIgbmU9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t6XSk7aWYoTys9bmUsMjYhPT1uZSlicmVha31yZXR1cm4gT30sVS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sVS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKE8pLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuZnJvbVR3b3M9''@;'; put 'put ''ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMudGVzdG4oTy0xKT90aGlzLm5vdG4oTykuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LFUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmNsb25lKCkuaW5lZygpfSxVLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxVLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKE8pe2Zvcig7dGhpcy5sZW5ndGg8Ty5sZW5ndGg7KXRoaXMud29yZHNb''@;'; put 'put ''dGhpcy5sZW5ndGgrK109MDtmb3IodmFyIHo9MDt6PE8ubGVuZ3RoO3orKyl0aGlzLndvcmRzW3pdPXRoaXMud29yZHNbel18Ty53b3Jkc1t6XTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdh''@;'; put 'put ''dGl2ZSkpLHRoaXMuaXVvcihPKX0sVS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoTyk6Ty5jbG9uZSgpLmlvcih0aGlzKX0sVS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5P''@;'; put 'put ''Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihPKTpPLmNsb25lKCkuaXVvcih0aGlzKX0sVS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oTyl7dmFyIHo7ej10aGlzLmxlbmd0aD5PLmxlbmd0aD9POnRoaXM7Zm9yKHZhciBuZT0wO25lPHoubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09dGhp''@;'; put 'put ''cy53b3Jkc1tuZV0mTy53b3Jkc1tuZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChPKX0sVS5wcm90b3R5cGUuYW5k''@;'; put 'put ''PWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChPKTpPLmNsb25lKCkuaWFuZCh0aGlzKX0sVS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKE8pOk8u''@;'; put 'put ''Y2xvbmUoKS5pdWFuZCh0aGlzKX0sVS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oTyl7dmFyIHosbmU7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KHo9dGhpcyxuZT1PKTooej1PLG5lPXRoaXMpO2Zvcih2YXIgdGU9MDt0ZTxuZS5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT16LndvcmRzW3Rl''@;'; put 'put ''XV5uZS53b3Jkc1t0ZV07aWYodGhpcyE9PXopZm9yKDt0ZTx6Lmxlbmd0aDt0ZSsrKXRoaXMud29yZHNbdGVdPXoud29yZHNbdGVdO3JldHVybiB0aGlzLmxlbmd0aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMu''@;'; put 'put ''bmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoTyl9LFUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoTyk6Ty5jbG9uZSgpLml4b3IodGhpcyl9LFUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihPKTpPLmNsb25lKCkuaXV4b3IodGhpcyl9LFUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej0wfE1hdGguY2VpbChPLzI2KSxuZT1PJTI2O3Ro''@;'; put 'put ''aXMuX2V4cGFuZCh6KSxuZT4wJiZ6LS07Zm9yKHZhciB0ZT0wO3RlPHo7dGUrKyl0aGlzLndvcmRzW3RlXT02NzEwODg2MyZ+dGhpcy53b3Jkc1t0ZV07cmV0dXJuIG5lPjAmJih0aGlzLndvcmRzW3RlXT1+dGhpcy53b3Jkc1t0ZV0mNjcxMDg4NjM+PjI2LW5lKSx0aGlzLnN0cmlwKCl9LFUu''@;'; put 'put ''cHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihPKX0sVS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihPLHope0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgbmU9Ty8yNnwwLHRlPU8lMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChuZSsxKSx0''@;'; put 'put ''aGlzLndvcmRzW25lXT16P3RoaXMud29yZHNbbmVdfDE8PHRlOnRoaXMud29yZHNbbmVdJn4oMTw8dGUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihPKXt2YXIgeixuZSx0ZTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuIHRoaXMu''@;'; put 'put ''bmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVybiBPLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCk7dGhpcy5s''@;'; put 'put ''ZW5ndGg+Ty5sZW5ndGg/KG5lPXRoaXMsdGU9Tyk6KG5lPU8sdGU9dGhpcyk7Zm9yKHZhciB4PTAsUD0wO1A8dGUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3MTA4ODYzJih6PSgwfG5lLndvcmRzW1BdKSsoMHx0ZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7Zm9yKDswIT09eCYmUDxuZS5s''@;'; put 'put ''ZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8bmUud29yZHNbUF0pK3gpLHg9ej4+PjI2O2lmKHRoaXMubGVuZ3RoPW5lLmxlbmd0aCwwIT09eCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT14LHRoaXMubGVuZ3RoKys7ZWxzZSBpZihuZSE9PXRoaXMpZm9yKDtQPG5lLmxl''@;'; put 'put ''bmd0aDtQKyspdGhpcy53b3Jkc1tQXT1uZS53b3Jkc1tQXTtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8pe3ZhciB6O3JldHVybiAwIT09Ty5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KE8ubmVnYXRpdmU9MCx6PXRoaXMuc3ViKE8pLE8ubmVnYXRpdmVePTEs''@;'; put 'put ''eik6MD09PU8ubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsej1PLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEseik6dGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoTyk6Ty5jbG9uZSgpLmlhZGQodGhpcyl9LFUucHJvdG90eXBlLmlz''@;'; put 'put ''dWI9ZnVuY3Rpb24oTyl7aWYoMCE9PU8ubmVnYXRpdmUpe08ubmVnYXRpdmU9MDt2YXIgej10aGlzLmlhZGQoTyk7cmV0dXJuIE8ubmVnYXRpdmU9MSx6Ll9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKE8pLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciB0ZSx4LG5lPXRoaXMuY21wKE8pO2lmKDA9PT1uZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7bmU+MD8odGU9dGhpcyx4PU8pOih0ZT1PLHg9dGhpcyk7Zm9yKHZhciBQPTAsVj0w''@;'; put 'put ''O1Y8eC5sZW5ndGg7VisrKVA9KHo9KDB8dGUud29yZHNbVl0pLSgwfHgud29yZHNbVl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7Zm9yKDswIT09UCYmVjx0ZS5sZW5ndGg7VisrKVA9KHo9KDB8dGUud29yZHNbVl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7''@;'; put 'put ''aWYoMD09PVAmJlY8dGUubGVuZ3RoJiZ0ZSE9PXRoaXMpZm9yKDtWPHRlLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT10ZS53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsViksdGUhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9''@;'; put 'put ''LFUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoTyl9O3ZhciBKPWZ1bmN0aW9uKE8seixuZSl7dmFyIFQsUyxGLHRlPU8ud29yZHMseD16LndvcmRzLFA9bmUud29yZHMsVj0wLHllPTB8dGVbMF0sQ2U9ODE5MSZ5ZSxEZT15ZT4+PjEzLFBlPTB8''@;'; put 'put ''dGVbMV0sUWU9ODE5MSZQZSwkZT1QZT4+PjEzLGd0PTB8dGVbMl0seXQ9ODE5MSZndCxwdD1ndD4+PjEzLG10PTB8dGVbM10sdnQ9ODE5MSZtdCxmdD1tdD4+PjEzLEZ0PTB8dGVbNF0sb249ODE5MSZGdCxfdD1GdD4+PjEzLG50PTB8dGVbNV0scWU9ODE5MSZudCxvdD1udD4+PjEzLFJ0PTB8''@;'; put 'put ''dGVbNl0sQ3Q9ODE5MSZSdCxjdD1SdD4+PjEzLE50PTB8dGVbN10semU9ODE5MSZOdCxZZT1OdD4+PjEzLEF0PTB8dGVbOF0sanQ9ODE5MSZBdCxKdD1BdD4+PjEzLG1uPTB8dGVbOV0scG49ODE5MSZtbixibj1tbj4+PjEzLGxuPTB8eFswXSxObj04MTkxJmxuLGtuPWxuPj4+MTMsZXI9MHx4''@;'; put 'put ''WzFdLHVyPTgxOTEmZXIsWG49ZXI+Pj4xMyxGcj0wfHhbMl0seHI9ODE5MSZGcixlbj1Gcj4+PjEzLGRyPTB8eFszXSxucj04MTkxJmRyLHduPWRyPj4+MTMsJG49MHx4WzRdLFl0PTgxOTEmJG4sZ249JG4+Pj4xMyxLbj0wfHhbNV0sVnQ9ODE5MSZLbixzbj1Lbj4+PjEzLFVuPTB8eFs2XSxf''@;'; put 'put ''bj04MTkxJlVuLHRuPVVuPj4+MTMsR249MHx4WzddLFRyPTgxOTEmR24sUG49R24+Pj4xMyxTcj0wfHhbOF0sdm49ODE5MSZTcix1bj1Tcj4+PjEzLGNuPTB8eFs5XSxTbj04MTkxJmNuLEd0PWNuPj4+MTM7bmUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLG5lLmxlbmd0aD0xOTt2''@;'; put 'put ''YXIgRW49KFYrKFQ9TWF0aC5pbXVsKENlLE5uKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChDZSxrbikpK01hdGguaW11bChEZSxObil8MCkpPDwxMyl8MDtWPSgoRj1NYXRoLmltdWwoRGUsa24pKSsoUz4+PjEzKXwwKSsoRW4+Pj4yNil8MCxFbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwo''@;'; put 'put ''UWUsTm4pLFM9KFM9TWF0aC5pbXVsKFFlLGtuKSkrTWF0aC5pbXVsKCRlLE5uKXwwLEY9TWF0aC5pbXVsKCRlLGtuKTt2YXIgam49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsdXIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxYbil8MCkrTWF0aC5pbXVsKERlLHVyKXwwKSk8PDEz''@;'; put 'put ''KXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLFhuKXwwKSsoUz4+PjEzKXwwKSsoam4+Pj4yNil8MCxqbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoeXQsTm4pLFM9KFM9TWF0aC5pbXVsKHl0LGtuKSkrTWF0aC5pbXVsKHB0LE5uKXwwLEY9TWF0aC5pbXVsKHB0LGtuKSxUPVQrTWF0aC5pbXVsKFFl''@;'; put 'put ''LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsWG4pfDApK01hdGguaW11bCgkZSx1cil8MCxGPUYrTWF0aC5pbXVsKCRlLFhuKXwwO3ZhciBxdD0oVisoVD1UK01hdGguaW11bChDZSx4cil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLGVuKXwwKStNYXRoLmltdWwoRGUseHIp''@;'; put 'put ''fDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsZW4pfDApKyhTPj4+MTMpfDApKyhxdD4+PjI2KXwwLHF0Jj02NzEwODg2MyxUPU1hdGguaW11bCh2dCxObiksUz0oUz1NYXRoLmltdWwodnQsa24pKStNYXRoLmltdWwoZnQsTm4pfDAsRj1NYXRoLmltdWwoZnQsa24pLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoeXQsdXIpfDAsUz0oUz1TK01hdGguaW11bCh5dCxYbil8MCkrTWF0aC5pbXVsKHB0LHVyKXwwLEY9RitNYXRoLmltdWwocHQsWG4pfDAsVD1UK01hdGguaW11bChRZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLGVuKXwwKStNYXRoLmltdWwoJGUseHIpfDAsRj1GK01hdGguaW11''@;'; put 'put ''bCgkZSxlbil8MDt2YXIgTG49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsbnIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSx3bil8MCkrTWF0aC5pbXVsKERlLG5yKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHduKXwwKSsoUz4+PjEzKXwwKSsoTG4+Pj4yNil8MCxM''@;'; put 'put ''biY9NjcxMDg4NjMsVD1NYXRoLmltdWwob24sTm4pLFM9KFM9TWF0aC5pbXVsKG9uLGtuKSkrTWF0aC5pbXVsKF90LE5uKXwwLEY9TWF0aC5pbXVsKF90LGtuKSxUPVQrTWF0aC5pbXVsKHZ0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwodnQsWG4pfDApK01hdGguaW11bChmdCx1cil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKGZ0LFhuKXwwLFQ9VCtNYXRoLmltdWwoeXQseHIpfDAsUz0oUz1TK01hdGguaW11bCh5dCxlbil8MCkrTWF0aC5pbXVsKHB0LHhyKXwwLEY9RitNYXRoLmltdWwocHQsZW4pfDAsVD1UK01hdGguaW11bChRZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHduKXwwKStNYXRo''@;'; put 'put ''LmltdWwoJGUsbnIpfDAsRj1GK01hdGguaW11bCgkZSx3bil8MDt2YXIgSm49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsWXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxnbil8MCkrTWF0aC5pbXVsKERlLFl0KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLGduKXww''@;'; put 'put ''KSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwocWUsTm4pLFM9KFM9TWF0aC5pbXVsKHFlLGtuKSkrTWF0aC5pbXVsKG90LE5uKXwwLEY9TWF0aC5pbXVsKG90LGtuKSxUPVQrTWF0aC5pbXVsKG9uLHVyKXwwLFM9KFM9UytNYXRoLmltdWwob24sWG4p''@;'; put 'put ''fDApK01hdGguaW11bChfdCx1cil8MCxGPUYrTWF0aC5pbXVsKF90LFhuKXwwLFQ9VCtNYXRoLmltdWwodnQseHIpfDAsUz0oUz1TK01hdGguaW11bCh2dCxlbil8MCkrTWF0aC5pbXVsKGZ0LHhyKXwwLEY9RitNYXRoLmltdWwoZnQsZW4pfDAsVD1UK01hdGguaW11bCh5dCxucil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKHl0LHduKXwwKStNYXRoLmltdWwocHQsbnIpfDAsRj1GK01hdGguaW11bChwdCx3bil8MCxUPVQrTWF0aC5pbXVsKFFlLFl0KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsZ24pfDApK01hdGguaW11bCgkZSxZdCl8MCxGPUYrTWF0aC5pbXVsKCRlLGduKXwwO3ZhciBvcj0o''@;'; put 'put ''VisoVD1UK01hdGguaW11bChDZSxWdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHNuKXwwKStNYXRoLmltdWwoRGUsVnQpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsc24pfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGgu''@;'; put 'put ''aW11bChDdCxObiksUz0oUz1NYXRoLmltdWwoQ3Qsa24pKStNYXRoLmltdWwoY3QsTm4pfDAsRj1NYXRoLmltdWwoY3Qsa24pLFQ9VCtNYXRoLmltdWwocWUsdXIpfDAsUz0oUz1TK01hdGguaW11bChxZSxYbil8MCkrTWF0aC5pbXVsKG90LHVyKXwwLEY9RitNYXRoLmltdWwob3QsWG4pfDAs''@;'; put 'put ''VD1UK01hdGguaW11bChvbix4cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLGVuKXwwKStNYXRoLmltdWwoX3QseHIpfDAsRj1GK01hdGguaW11bChfdCxlbil8MCxUPVQrTWF0aC5pbXVsKHZ0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwodnQsd24pfDApK01hdGguaW11bChmdCxucil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKGZ0LHduKXwwLFQ9VCtNYXRoLmltdWwoeXQsWXQpfDAsUz0oUz1TK01hdGguaW11bCh5dCxnbil8MCkrTWF0aC5pbXVsKHB0LFl0KXwwLEY9RitNYXRoLmltdWwocHQsZ24pfDAsVD1UK01hdGguaW11bChRZSxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHNuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoJGUsVnQpfDAsRj1GK01hdGguaW11bCgkZSxzbil8MDt2YXIgZ3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSx0bil8MCkrTWF0aC5pbXVsKERlLF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHRuKXww''@;'; put 'put ''KSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoemUsTm4pLFM9KFM9TWF0aC5pbXVsKHplLGtuKSkrTWF0aC5pbXVsKFllLE5uKXwwLEY9TWF0aC5pbXVsKFllLGtuKSxUPVQrTWF0aC5pbXVsKEN0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsWG4p''@;'; put 'put ''fDApK01hdGguaW11bChjdCx1cil8MCxGPUYrTWF0aC5pbXVsKGN0LFhuKXwwLFQ9VCtNYXRoLmltdWwocWUseHIpfDAsUz0oUz1TK01hdGguaW11bChxZSxlbil8MCkrTWF0aC5pbXVsKG90LHhyKXwwLEY9RitNYXRoLmltdWwob3QsZW4pfDAsVD1UK01hdGguaW11bChvbixucil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKG9uLHduKXwwKStNYXRoLmltdWwoX3QsbnIpfDAsRj1GK01hdGguaW11bChfdCx3bil8MCxUPVQrTWF0aC5pbXVsKHZ0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwodnQsZ24pfDApK01hdGguaW11bChmdCxZdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LGduKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoeXQsVnQpfDAsUz0oUz1TK01hdGguaW11bCh5dCxzbil8MCkrTWF0aC5pbXVsKHB0LFZ0KXwwLEY9RitNYXRoLmltdWwocHQsc24pfDAsVD1UK01hdGguaW11bChRZSxfbil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHRuKXwwKStNYXRoLmltdWwoJGUsX24pfDAsRj1GK01hdGguaW11''@;'; put 'put ''bCgkZSx0bil8MDt2YXIgSnI9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVHIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxQbil8MCkrTWF0aC5pbXVsKERlLFRyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLFBuKXwwKSsoUz4+PjEzKXwwKSsoSnI+Pj4yNil8MCxK''@;'; put 'put ''ciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoanQsTm4pLFM9KFM9TWF0aC5pbXVsKGp0LGtuKSkrTWF0aC5pbXVsKEp0LE5uKXwwLEY9TWF0aC5pbXVsKEp0LGtuKSxUPVQrTWF0aC5pbXVsKHplLHVyKXwwLFM9KFM9UytNYXRoLmltdWwoemUsWG4pfDApK01hdGguaW11bChZZSx1cil8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKFllLFhuKXwwLFQ9VCtNYXRoLmltdWwoQ3QseHIpfDAsUz0oUz1TK01hdGguaW11bChDdCxlbil8MCkrTWF0aC5pbXVsKGN0LHhyKXwwLEY9RitNYXRoLmltdWwoY3QsZW4pfDAsVD1UK01hdGguaW11bChxZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHduKXwwKStNYXRo''@;'; put 'put ''LmltdWwob3QsbnIpfDAsRj1GK01hdGguaW11bChvdCx3bil8MCxUPVQrTWF0aC5pbXVsKG9uLFl0KXwwLFM9KFM9UytNYXRoLmltdWwob24sZ24pfDApK01hdGguaW11bChfdCxZdCl8MCxGPUYrTWF0aC5pbXVsKF90LGduKXwwLFQ9VCtNYXRoLmltdWwodnQsVnQpfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bCh2dCxzbil8MCkrTWF0aC5pbXVsKGZ0LFZ0KXwwLEY9RitNYXRoLmltdWwoZnQsc24pfDAsVD1UK01hdGguaW11bCh5dCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LHRuKXwwKStNYXRoLmltdWwocHQsX24pfDAsRj1GK01hdGguaW11bChwdCx0bil8MCxUPVQrTWF0aC5pbXVsKFFl''@;'; put 'put ''LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsUG4pfDApK01hdGguaW11bCgkZSxUcil8MCxGPUYrTWF0aC5pbXVsKCRlLFBuKXwwO3ZhciBWcj0oVisoVD1UK01hdGguaW11bChDZSx2bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHVuKXwwKStNYXRoLmltdWwoRGUsdm4p''@;'; put 'put ''fDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChwbixObiksUz0oUz1NYXRoLmltdWwocG4sa24pKStNYXRoLmltdWwoYm4sTm4pfDAsRj1NYXRoLmltdWwoYm4sa24pLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoanQsdXIpfDAsUz0oUz1TK01hdGguaW11bChqdCxYbil8MCkrTWF0aC5pbXVsKEp0LHVyKXwwLEY9RitNYXRoLmltdWwoSnQsWG4pfDAsVD1UK01hdGguaW11bCh6ZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHplLGVuKXwwKStNYXRoLmltdWwoWWUseHIpfDAsRj1GK01hdGguaW11''@;'; put 'put ''bChZZSxlbil8MCxUPVQrTWF0aC5pbXVsKEN0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoQ3Qsd24pfDApK01hdGguaW11bChjdCxucil8MCxGPUYrTWF0aC5pbXVsKGN0LHduKXwwLFQ9VCtNYXRoLmltdWwocWUsWXQpfDAsUz0oUz1TK01hdGguaW11bChxZSxnbil8MCkrTWF0aC5pbXVsKG90''@;'; put 'put ''LFl0KXwwLEY9RitNYXRoLmltdWwob3QsZ24pfDAsVD1UK01hdGguaW11bChvbixWdCl8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHNuKXwwKStNYXRoLmltdWwoX3QsVnQpfDAsRj1GK01hdGguaW11bChfdCxzbil8MCxUPVQrTWF0aC5pbXVsKHZ0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwodnQs''@;'; put 'put ''dG4pfDApK01hdGguaW11bChmdCxfbil8MCxGPUYrTWF0aC5pbXVsKGZ0LHRuKXwwLFQ9VCtNYXRoLmltdWwoeXQsVHIpfDAsUz0oUz1TK01hdGguaW11bCh5dCxQbil8MCkrTWF0aC5pbXVsKHB0LFRyKXwwLEY9RitNYXRoLmltdWwocHQsUG4pfDAsVD1UK01hdGguaW11bChRZSx2bil8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKFFlLHVuKXwwKStNYXRoLmltdWwoJGUsdm4pfDAsRj1GK01hdGguaW11bCgkZSx1bil8MDt2YXIgdGk9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxHdCl8MCkrTWF0aC5pbXVsKERlLFNuKXwwKSk8PDEz''@;'; put 'put ''KXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEd0KXwwKSsoUz4+PjEzKXwwKSsodGk+Pj4yNil8MCx0aSY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sdXIpLFM9KFM9TWF0aC5pbXVsKHBuLFhuKSkrTWF0aC5pbXVsKGJuLHVyKXwwLEY9TWF0aC5pbXVsKGJuLFhuKSxUPVQrTWF0aC5pbXVsKGp0''@;'; put 'put ''LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsZW4pfDApK01hdGguaW11bChKdCx4cil8MCxGPUYrTWF0aC5pbXVsKEp0LGVuKXwwLFQ9VCtNYXRoLmltdWwoemUsbnIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSx3bil8MCkrTWF0aC5pbXVsKFllLG5yKXwwLEY9RitNYXRoLmltdWwoWWUsd24p''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChDdCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LGduKXwwKStNYXRoLmltdWwoY3QsWXQpfDAsRj1GK01hdGguaW11bChjdCxnbil8MCxUPVQrTWF0aC5pbXVsKHFlLFZ0KXwwLFM9KFM9UytNYXRoLmltdWwocWUsc24pfDApK01hdGguaW11bChvdCxWdCl8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKG90LHNuKXwwLFQ9VCtNYXRoLmltdWwob24sX24pfDAsUz0oUz1TK01hdGguaW11bChvbix0bil8MCkrTWF0aC5pbXVsKF90LF9uKXwwLEY9RitNYXRoLmltdWwoX3QsdG4pfDAsVD1UK01hdGguaW11bCh2dCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LFBuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoZnQsVHIpfDAsRj1GK01hdGguaW11bChmdCxQbil8MCxUPVQrTWF0aC5pbXVsKHl0LHZuKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsdW4pfDApK01hdGguaW11bChwdCx2bil8MCxGPUYrTWF0aC5pbXVsKHB0LHVuKXwwO3ZhciBPcj0oVisoVD1UK01hdGguaW11bChRZSxTbil8''@;'; put 'put ''MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFFlLEd0KXwwKStNYXRoLmltdWwoJGUsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoJGUsR3QpfDApKyhTPj4+MTMpfDApKyhPcj4+PjI2KXwwLE9yJj02NzEwODg2MyxUPU1hdGguaW11bChwbix4ciksUz0oUz1NYXRoLmlt''@;'; put 'put ''dWwocG4sZW4pKStNYXRoLmltdWwoYm4seHIpfDAsRj1NYXRoLmltdWwoYm4sZW4pLFQ9VCtNYXRoLmltdWwoanQsbnIpfDAsUz0oUz1TK01hdGguaW11bChqdCx3bil8MCkrTWF0aC5pbXVsKEp0LG5yKXwwLEY9RitNYXRoLmltdWwoSnQsd24pfDAsVD1UK01hdGguaW11bCh6ZSxZdCl8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKHplLGduKXwwKStNYXRoLmltdWwoWWUsWXQpfDAsRj1GK01hdGguaW11bChZZSxnbil8MCxUPVQrTWF0aC5pbXVsKEN0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoQ3Qsc24pfDApK01hdGguaW11bChjdCxWdCl8MCxGPUYrTWF0aC5pbXVsKGN0LHNuKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwocWUsX24pfDAsUz0oUz1TK01hdGguaW11bChxZSx0bil8MCkrTWF0aC5pbXVsKG90LF9uKXwwLEY9RitNYXRoLmltdWwob3QsdG4pfDAsVD1UK01hdGguaW11bChvbixUcil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLFBuKXwwKStNYXRoLmltdWwoX3QsVHIpfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChfdCxQbil8MCxUPVQrTWF0aC5pbXVsKHZ0LHZuKXwwLFM9KFM9UytNYXRoLmltdWwodnQsdW4pfDApK01hdGguaW11bChmdCx2bil8MCxGPUYrTWF0aC5pbXVsKGZ0LHVuKXwwO3ZhciBsaT0oVisoVD1UK01hdGguaW11bCh5dCxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKHl0LEd0KXwwKStNYXRoLmltdWwocHQsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwocHQsR3QpfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bChwbixuciksUz0oUz1NYXRoLmltdWwocG4sd24pKStNYXRoLmltdWwoYm4sbnIp''@;'; put 'put ''fDAsRj1NYXRoLmltdWwoYm4sd24pLFQ9VCtNYXRoLmltdWwoanQsWXQpfDAsUz0oUz1TK01hdGguaW11bChqdCxnbil8MCkrTWF0aC5pbXVsKEp0LFl0KXwwLEY9RitNYXRoLmltdWwoSnQsZ24pfDAsVD1UK01hdGguaW11bCh6ZSxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKHplLHNuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoWWUsVnQpfDAsRj1GK01hdGguaW11bChZZSxzbil8MCxUPVQrTWF0aC5pbXVsKEN0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdG4pfDApK01hdGguaW11bChjdCxfbil8MCxGPUYrTWF0aC5pbXVsKGN0LHRuKXwwLFQ9VCtNYXRoLmltdWwocWUsVHIpfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChxZSxQbil8MCkrTWF0aC5pbXVsKG90LFRyKXwwLEY9RitNYXRoLmltdWwob3QsUG4pfDAsVD1UK01hdGguaW11bChvbix2bil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHVuKXwwKStNYXRoLmltdWwoX3Qsdm4pfDAsRj1GK01hdGguaW11bChfdCx1bil8MDt2YXIgSWk9KFYrKFQ9''@;'; put 'put ''VCtNYXRoLmltdWwodnQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCh2dCxHdCl8MCkrTWF0aC5pbXVsKGZ0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKGZ0LEd0KXwwKSsoUz4+PjEzKXwwKSsoSWk+Pj4yNil8MCxJaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwo''@;'; put 'put ''cG4sWXQpLFM9KFM9TWF0aC5pbXVsKHBuLGduKSkrTWF0aC5pbXVsKGJuLFl0KXwwLEY9TWF0aC5pbXVsKGJuLGduKSxUPVQrTWF0aC5pbXVsKGp0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoanQsc24pfDApK01hdGguaW11bChKdCxWdCl8MCxGPUYrTWF0aC5pbXVsKEp0LHNuKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoemUsX24pfDAsUz0oUz1TK01hdGguaW11bCh6ZSx0bil8MCkrTWF0aC5pbXVsKFllLF9uKXwwLEY9RitNYXRoLmltdWwoWWUsdG4pfDAsVD1UK01hdGguaW11bChDdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LFBuKXwwKStNYXRoLmltdWwoY3QsVHIpfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChjdCxQbil8MCxUPVQrTWF0aC5pbXVsKHFlLHZuKXwwLFM9KFM9UytNYXRoLmltdWwocWUsdW4pfDApK01hdGguaW11bChvdCx2bil8MCxGPUYrTWF0aC5pbXVsKG90LHVuKXwwO3ZhciByMD0oVisoVD1UK01hdGguaW11bChvbixTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKG9uLEd0KXwwKStNYXRoLmltdWwoX3QsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoX3QsR3QpfDApKyhTPj4+MTMpfDApKyhyMD4+PjI2KXwwLHIwJj02NzEwODg2MyxUPU1hdGguaW11bChwbixWdCksUz0oUz1NYXRoLmltdWwocG4sc24pKStNYXRoLmltdWwoYm4sVnQp''@;'; put 'put ''fDAsRj1NYXRoLmltdWwoYm4sc24pLFQ9VCtNYXRoLmltdWwoanQsX24pfDAsUz0oUz1TK01hdGguaW11bChqdCx0bil8MCkrTWF0aC5pbXVsKEp0LF9uKXwwLEY9RitNYXRoLmltdWwoSnQsdG4pfDAsVD1UK01hdGguaW11bCh6ZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHplLFBuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoWWUsVHIpfDAsRj1GK01hdGguaW11bChZZSxQbil8MCxUPVQrTWF0aC5pbXVsKEN0LHZuKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdW4pfDApK01hdGguaW11bChjdCx2bil8MCxGPUYrTWF0aC5pbXVsKGN0LHVuKXwwO3ZhciBlMD0oVisoVD1UK01hdGguaW11bChxZSxTbil8''@;'; put 'put ''MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwob3QsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwob3QsR3QpfDApKyhTPj4+MTMpfDApKyhlMD4+PjI2KXwwLGUwJj02NzEwODg2MyxUPU1hdGguaW11bChwbixfbiksUz0oUz1NYXRoLmlt''@;'; put 'put ''dWwocG4sdG4pKStNYXRoLmltdWwoYm4sX24pfDAsRj1NYXRoLmltdWwoYm4sdG4pLFQ9VCtNYXRoLmltdWwoanQsVHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxQbil8MCkrTWF0aC5pbXVsKEp0LFRyKXwwLEY9RitNYXRoLmltdWwoSnQsUG4pfDAsVD1UK01hdGguaW11bCh6ZSx2bil8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKHplLHVuKXwwKStNYXRoLmltdWwoWWUsdm4pfDAsRj1GK01hdGguaW11bChZZSx1bil8MDt2YXIgZDA9KFYrKFQ9VCtNYXRoLmltdWwoQ3QsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDdCxHdCl8MCkrTWF0aC5pbXVsKGN0LFNuKXwwKSk8PDEz''@;'; put 'put ''KXwwO1Y9KChGPUYrTWF0aC5pbXVsKGN0LEd0KXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sVHIpLFM9KFM9TWF0aC5pbXVsKHBuLFBuKSkrTWF0aC5pbXVsKGJuLFRyKXwwLEY9TWF0aC5pbXVsKGJuLFBuKSxUPVQrTWF0aC5pbXVsKGp0''@;'; put 'put ''LHZuKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdW4pfDApK01hdGguaW11bChKdCx2bil8MCxGPUYrTWF0aC5pbXVsKEp0LHVuKXwwO3ZhciBfMD0oVisoVD1UK01hdGguaW11bCh6ZSxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHplLEd0KXwwKStNYXRoLmltdWwoWWUsU24p''@;'; put 'put ''fDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoWWUsR3QpfDApKyhTPj4+MTMpfDApKyhfMD4+PjI2KXwwLF8wJj02NzEwODg2MyxUPU1hdGguaW11bChwbix2biksUz0oUz1NYXRoLmltdWwocG4sdW4pKStNYXRoLmltdWwoYm4sdm4pfDAsRj1NYXRoLmltdWwoYm4sdW4pO3ZhciBVMD0o''@;'; put 'put ''VisoVD1UK01hdGguaW11bChqdCxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGp0LEd0KXwwKStNYXRoLmltdWwoSnQsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoSnQsR3QpfDApKyhTPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2Mzt2YXIgQmk9''@;'; put 'put ''KFYrKFQ9TWF0aC5pbXVsKHBuLFNuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChwbixHdCkpK01hdGguaW11bChibixTbil8MCkpPDwxMyl8MDtyZXR1cm4gVj0oKEY9TWF0aC5pbXVsKGJuLEd0KSkrKFM+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLFBbMF09RW4sUFsx''@;'; put 'put ''XT1qbixQWzJdPXF0LFBbM109TG4sUFs0XT1KbixQWzVdPW9yLFBbNl09Z3IsUFs3XT1KcixQWzhdPVZyLFBbOV09dGksUFsxMF09T3IsUFsxMV09bGksUFsxMl09SWksUFsxM109cjAsUFsxNF09ZTAsUFsxNV09ZDAsUFsxNl09XzAsUFsxN109VTAsUFsxOF09QmksMCE9PVYmJihQWzE5XT1W''@;'; put 'put ''LG5lLmxlbmd0aCsrKSxuZX07ZnVuY3Rpb24gYWUoaGUsTyx6KXtyZXR1cm4obmV3IGZlKS5tdWxwKGhlLE8seil9ZnVuY3Rpb24gZmUoaGUsTyl7dGhpcy54PWhlLHRoaXMueT1PfU1hdGguaW11bHx8KEo9cSksVS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oTyx6KXt2YXIgbmUsdGU9dGhp''@;'; put 'put ''cy5sZW5ndGgrTy5sZW5ndGg7cmV0dXJuIG5lPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Ty5sZW5ndGg/Sih0aGlzLE8seik6dGU8NjM/cSh0aGlzLE8seik6dGU8MTAyND9mdW5jdGlvbiBzZShoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZSx6Lmxlbmd0aD1oZS5s''@;'; put 'put ''ZW5ndGgrTy5sZW5ndGg7Zm9yKHZhciBuZT0wLHRlPTAseD0wO3g8ei5sZW5ndGgtMTt4Kyspe3ZhciBQPXRlO3RlPTA7Zm9yKHZhciBWPTY3MTA4ODYzJm5lLFQ9TWF0aC5taW4oeCxPLmxlbmd0aC0xKSxTPU1hdGgubWF4KDAseC1oZS5sZW5ndGgrMSk7Uzw9VDtTKyspe3ZhciBEZT0oMHxo''@;'; put 'put ''ZS53b3Jkc1t4LVNdKSooMHxPLndvcmRzW1NdKSxQZT02NzEwODg2MyZEZTtWPTY3MTA4ODYzJihQZT1QZStWfDApLHRlKz0oUD0oUD1QKyhEZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixQJj02NzEwODg2M316LndvcmRzW3hdPVYsbmU9UCxQPXRlfXJldHVybiAwIT09bmU/''@;'; put 'put ''ei53b3Jkc1t4XT1uZTp6Lmxlbmd0aC0tLHouc3RyaXAoKX0odGhpcyxPLHopOmFlKHRoaXMsTyx6KSxuZX0sZmUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxuZT1VLnByb3RvdHlwZS5fY291bnRCaXRzKE8pLTEsdGU9MDt0ZTxPO3RlKysp''@;'; put 'put ''elt0ZV09dGhpcy5yZXZCaW4odGUsbmUsTyk7cmV0dXJuIHp9LGZlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oTyx6LG5lKXtpZigwPT09T3x8Tz09PW5lLTEpcmV0dXJuIE87Zm9yKHZhciB0ZT0wLHg9MDt4PHo7eCsrKXRlfD0oMSZPKTw8ei14LTEsTz4+PTE7cmV0dXJuIHRlfSxmZS5w''@;'; put 'put ''cm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihPLHosbmUsdGUseCxQKXtmb3IodmFyIFY9MDtWPFA7VisrKXRlW1ZdPXpbT1tWXV0seFtWXT1uZVtPW1ZdXX0sZmUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihPLHosbmUsdGUseCxQKXt0aGlzLnBlcm11dGUoUCxPLHosbmUsdGUseCk7''@;'; put 'put ''Zm9yKHZhciBWPTE7Vjx4O1Y8PD0xKWZvcih2YXIgVD1WPDwxLFM9TWF0aC5jb3MoMipNYXRoLlBJL1QpLEY9TWF0aC5zaW4oMipNYXRoLlBJL1QpLHllPTA7eWU8eDt5ZSs9VClmb3IodmFyIENlPVMsRGU9RixQZT0wO1BlPFY7UGUrKyl7dmFyIFFlPW5lW3llK1BlXSwkZT10ZVt5ZStQZV0s''@;'; put 'put ''Z3Q9bmVbeWUrUGUrVl0seXQ9dGVbeWUrUGUrVl0scHQ9Q2UqZ3QtRGUqeXQ7eXQ9Q2UqeXQrRGUqZ3QsbmVbeWUrUGVdPVFlKyhndD1wdCksdGVbeWUrUGVdPSRlK3l0LG5lW3llK1BlK1ZdPVFlLWd0LHRlW3llK1BlK1ZdPSRlLXl0LFBlIT09VCYmKHB0PVMqQ2UtRipEZSxEZT1TKkRlK0Yq''@;'; put 'put ''Q2UsQ2U9cHQpfX0sZmUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKE8seil7dmFyIG5lPTF8TWF0aC5tYXgoeixPKSx0ZT0xJm5lLHg9MDtmb3IobmU9bmUvMnwwO25lO25lPj4+PTEpeCsrO3JldHVybiAxPDx4KzErdGV9LGZlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24o''@;'; put 'put ''Tyx6LG5lKXtpZighKG5lPD0xKSlmb3IodmFyIHRlPTA7dGU8bmUvMjt0ZSsrKXt2YXIgeD1PW3RlXTtPW3RlXT1PW25lLXRlLTFdLE9bbmUtdGUtMV09eCx4PXpbdGVdLHpbdGVdPS16W25lLXRlLTFdLHpbbmUtdGUtMV09LXh9fSxmZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9u''@;'; put 'put ''KE8seil7Zm9yKHZhciBuZT0wLHRlPTA7dGU8ei8yO3RlKyspe3ZhciB4PTgxOTIqTWF0aC5yb3VuZChPWzIqdGUrMV0veikrTWF0aC5yb3VuZChPWzIqdGVdL3opK25lO09bdGVdPTY3MTA4ODYzJngsbmU9eDw2NzEwODg2ND8wOngvNjcxMDg4NjR8MH1yZXR1cm4gT30sZmUucHJvdG90eXBl''@;'; put 'put ''LmNvbnZlcnQxM2I9ZnVuY3Rpb24oTyx6LG5lLHRlKXtmb3IodmFyIHg9MCxQPTA7UDx6O1ArKyluZVsyKlBdPTgxOTEmKHgrPTB8T1tQXSksbmVbMipQKzFdPTgxOTEmKHg+Pj49MTMpLHg+Pj49MTM7Zm9yKFA9Mip6O1A8dGU7KytQKW5lW1BdPTA7RSgwPT09eCksRSgwPT0oLTgxOTImeCkp''@;'; put 'put ''fSxmZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLG5lPTA7bmU8TztuZSsrKXpbbmVdPTA7cmV0dXJuIHp9LGZlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKE8seixuZSl7dmFyIHRlPTIqdGhpcy5ndWVzc0xlbjEzYihPLmxlbmd0aCx6Lmxlbmd0''@;'; put 'put ''aCkseD10aGlzLm1ha2VSQlQodGUpLFA9dGhpcy5zdHViKHRlKSxWPW5ldyBBcnJheSh0ZSksVD1uZXcgQXJyYXkodGUpLFM9bmV3IEFycmF5KHRlKSxGPW5ldyBBcnJheSh0ZSkseWU9bmV3IEFycmF5KHRlKSxDZT1uZXcgQXJyYXkodGUpLERlPW5lLndvcmRzO0RlLmxlbmd0aD10ZSx0aGlz''@;'; put 'put ''LmNvbnZlcnQxM2IoTy53b3JkcyxPLmxlbmd0aCxWLHRlKSx0aGlzLmNvbnZlcnQxM2Ioei53b3Jkcyx6Lmxlbmd0aCxGLHRlKSx0aGlzLnRyYW5zZm9ybShWLFAsVCxTLHRlLHgpLHRoaXMudHJhbnNmb3JtKEYsUCx5ZSxDZSx0ZSx4KTtmb3IodmFyIFBlPTA7UGU8dGU7UGUrKyl7dmFyIFFl''@;'; put 'put ''PVRbUGVdKnllW1BlXS1TW1BlXSpDZVtQZV07U1tQZV09VFtQZV0qQ2VbUGVdK1NbUGVdKnllW1BlXSxUW1BlXT1RZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoVCxTLHRlKSx0aGlzLnRyYW5zZm9ybShULFMsRGUsUCx0ZSx4KSx0aGlzLmNvbmp1Z2F0ZShEZSxQLHRlKSx0aGlzLm5vcm1hbGl6''@;'; put 'put ''ZTEzYihEZSx0ZSksbmUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLG5lLmxlbmd0aD1PLmxlbmd0aCt6Lmxlbmd0aCxuZS5zdHJpcCgpfSxVLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVu''@;'; put 'put ''Z3RoK08ubGVuZ3RoKSx0aGlzLm11bFRvKE8seil9LFUucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSxhZSh0aGlzLE8seil9LFUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24o''@;'; put 'put ''Tyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhPLHRoaXMpfSxVLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KTtmb3IodmFyIHo9MCxuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspe3ZhciB0ZT0oMHx0aGlzLndvcmRzW25l''@;'; put 'put ''XSkqTyx4PSg2NzEwODg2MyZ0ZSkrKDY3MTA4ODYzJnopO3o+Pj0yNix6Kz10ZS82NzEwODg2NHwwLHorPXg+Pj4yNix0aGlzLndvcmRzW25lXT02NzEwODg2MyZ4fXJldHVybiAwIT09eiYmKHRoaXMud29yZHNbbmVdPXosdGhpcy5sZW5ndGgrKyksdGhpc30sVS5wcm90b3R5cGUubXVsbj1m''@;'; put 'put ''dW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKE8pfSxVLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LFUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LFUucHJvdG90eXBlLnBv''@;'; put 'put ''dz1mdW5jdGlvbihPKXt2YXIgej1mdW5jdGlvbiBlZShoZSl7Zm9yKHZhciBPPW5ldyBBcnJheShoZS5iaXRMZW5ndGgoKSksej0wO3o8Ty5sZW5ndGg7eisrKXt2YXIgdGU9eiUyNjtPW3pdPShoZS53b3Jkc1t6LzI2fDBdJjE8PHRlKT4+PnRlfXJldHVybiBPfShPKTtpZigwPT09ei5sZW5n''@;'; put 'put ''dGgpcmV0dXJuIG5ldyBVKDEpO2Zvcih2YXIgbmU9dGhpcyx0ZT0wO3RlPHoubGVuZ3RoJiYwPT09elt0ZV07dGUrKyxuZT1uZS5zcXIoKSk7aWYoKyt0ZTx6Lmxlbmd0aClmb3IodmFyIHg9bmUuc3FyKCk7dGU8ei5sZW5ndGg7dGUrKyx4PXguc3FyKCkpMCE9PXpbdGVdJiYobmU9bmUubXVs''@;'; put 'put ''KHgpKTtyZXR1cm4gbmV9LFUucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHgsej1PJTI2LG5lPShPLXopLzI2LHRlPTY3MTA4ODYzPj4+MjYtejw8MjYtejtpZigwIT09eil7dmFyIFA9MDtmb3IoeD0wO3g8dGhpcy5sZW5ndGg7''@;'; put 'put ''eCsrKXt2YXIgVj10aGlzLndvcmRzW3hdJnRlO3RoaXMud29yZHNbeF09KDB8dGhpcy53b3Jkc1t4XSktVjw8enxQLFA9Vj4+PjI2LXp9UCYmKHRoaXMud29yZHNbeF09UCx0aGlzLmxlbmd0aCsrKX1pZigwIT09bmUpe2Zvcih4PXRoaXMubGVuZ3RoLTE7eD49MDt4LS0pdGhpcy53b3Jkc1t4''@;'; put 'put ''K25lXT10aGlzLndvcmRzW3hdO2Zvcih4PTA7eDxuZTt4KyspdGhpcy53b3Jkc1t4XT0wO3RoaXMubGVuZ3RoKz1uZX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oTyl9LFUu''@;'; put 'put ''cHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZTtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCksdGU9ej8oei16JTI2KS8yNjowO3ZhciB4PU8lMjYsUD1NYXRoLm1pbigoTy14KS8yNix0aGlzLmxlbmd0aCksVj02NzEwODg2M142NzEwODg2Mz4+Png8PHgsVD1uZTtp''@;'; put 'put ''Zih0ZS09UCx0ZT1NYXRoLm1heCgwLHRlKSxUKXtmb3IodmFyIFM9MDtTPFA7UysrKVQud29yZHNbU109dGhpcy53b3Jkc1tTXTtULmxlbmd0aD1QfWlmKDAhPT1QKWlmKHRoaXMubGVuZ3RoPlApZm9yKHRoaXMubGVuZ3RoLT1QLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1Nd''@;'; put 'put ''PXRoaXMud29yZHNbUytQXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBGPTA7Zm9yKFM9dGhpcy5sZW5ndGgtMTtTPj0wJiYoMCE9PUZ8fFM+PXRlKTtTLS0pe3ZhciB5ZT0wfHRoaXMud29yZHNbU107dGhpcy53b3Jkc1tTXT1GPDwyNi14fHllPj4+eCxGPXllJlZ9''@;'; put 'put ''cmV0dXJuIFQmJjAhPT1GJiYoVC53b3Jkc1tULmxlbmd0aCsrXT1GKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihPLHosbmUpe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''KSx0aGlzLml1c2hybihPLHosbmUpfSxVLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oTyl9LFUucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKE8pfSxVLnByb3RvdHlwZS5zaHJuPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oTyl9LFUucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKE8pfSxVLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUy''@;'; put 'put ''NixuZT0oTy16KS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1uZXx8ISh0aGlzLndvcmRzW25lXSYxPDx6KSl9LFUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixuZT0oTy16KS8yNjtyZXR1cm4gRSgwPT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PW5lP3RoaXM6KDAhPT16JiZuZSsrLHRoaXMubGVuZ3RoPU1hdGgubWluKG5lLHRoaXMubGVuZ3RoKSwwIT09eiYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYz''@;'; put 'put ''XjY3MTA4ODYzPj4+ejw8eiksdGhpcy5zdHJpcCgpKX0sVS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oTyl9LFUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKE8pe3JldHVybiBFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0''@;'; put 'put ''KSxPPDA/dGhpcy5pc3VibigtTyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxPPyh0aGlzLndvcmRzWzBdPU8tKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihPKSx0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oTyl9LFUucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihPKXt0aGlzLndvcmRzWzBdKz1PO2Zvcih2YXIgej0wO3o8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbel0+PTY3MTA4ODY0O3orKyl0aGlzLndvcmRzW3pdLT02NzEwODg2NCx6''@;'; put 'put ''PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3orMV09MTp0aGlzLndvcmRzW3orMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseisxKSx0aGlzfSxVLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihPKXtpZihFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3''@;'; put 'put ''MTA4ODY0KSxPPDApcmV0dXJuIHRoaXMuaWFkZG4oLU8pO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1PLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTww''@;'; put 'put ''KXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XTwwO3orKyl0aGlzLndvcmRzW3pdKz02NzEwODg2NCx0aGlzLndvcmRzW3orMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5w''@;'; put 'put ''cm90b3R5cGUuYWRkbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKE8pfSxVLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oTyl9LFUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0w''@;'; put 'put ''LHRoaXN9LFUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxVLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oTyx6LG5lKXt2YXIgeDt0aGlzLl9leHBhbmQoTy5sZW5ndGgrbmUpO3ZhciBQLFY9MDtmb3IoeD0wO3g8Ty5sZW5ndGg7''@;'; put 'put ''eCsrKXtQPSgwfHRoaXMud29yZHNbeCtuZV0pK1Y7dmFyIFQ9KDB8Ty53b3Jkc1t4XSkqejtWPSgoUC09NjcxMDg4NjMmVCk+PjI2KS0oVC82NzEwODg2NHwwKSx0aGlzLndvcmRzW3grbmVdPTY3MTA4ODYzJlB9Zm9yKDt4PHRoaXMubGVuZ3RoLW5lO3grKylWPShQPSgwfHRoaXMud29yZHNb''@;'; put 'put ''eCtuZV0pK1YpPj4yNix0aGlzLndvcmRzW3grbmVdPTY3MTA4ODYzJlA7aWYoMD09PVYpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRSgtMT09PVYpLFY9MCx4PTA7eDx0aGlzLmxlbmd0aDt4KyspVj0oUD0tKDB8dGhpcy53b3Jkc1t4XSkrVik+PjI2LHRoaXMud29yZHNbeF09NjcxMDg4NjMm''@;'; put 'put ''UDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oTyx6KXt2YXIgbmUsdGU9dGhpcy5jbG9uZSgpLHg9TyxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXTswIT0obmU9MjYtdGhpcy5fY291bnRCaXRzKFApKSYmKHg9eC51c2hs''@;'; put 'put ''bihuZSksdGUuaXVzaGxuKG5lKSxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXSk7dmFyIFMsVD10ZS5sZW5ndGgteC5sZW5ndGg7aWYoIm1vZCIhPT16KXsoUz1uZXcgVShudWxsKSkubGVuZ3RoPVQrMSxTLndvcmRzPW5ldyBBcnJheShTLmxlbmd0aCk7Zm9yKHZhciBGPTA7RjxTLmxlbmd0aDtG''@;'; put 'put ''KyspUy53b3Jkc1tGXT0wfXZhciB5ZT10ZS5jbG9uZSgpLl9pc2hsbnN1Ym11bCh4LDEsVCk7MD09PXllLm5lZ2F0aXZlJiYodGU9eWUsUyYmKFMud29yZHNbVF09MSkpO2Zvcih2YXIgQ2U9VC0xO0NlPj0wO0NlLS0pe3ZhciBEZT02NzEwODg2NCooMHx0ZS53b3Jkc1t4Lmxlbmd0aCtDZV0p''@;'; put 'put ''KygwfHRlLndvcmRzW3gubGVuZ3RoK0NlLTFdKTtmb3IoRGU9TWF0aC5taW4oRGUvUHwwLDY3MTA4ODYzKSx0ZS5faXNobG5zdWJtdWwoeCxEZSxDZSk7MCE9PXRlLm5lZ2F0aXZlOylEZS0tLHRlLm5lZ2F0aXZlPTAsdGUuX2lzaGxuc3VibXVsKHgsMSxDZSksdGUuaXNaZXJvKCl8fCh0ZS5u''@;'; put 'put ''ZWdhdGl2ZV49MSk7UyYmKFMud29yZHNbQ2VdPURlKX1yZXR1cm4gUyYmUy5zdHJpcCgpLHRlLnN0cmlwKCksImRpdiIhPT16JiYwIT09bmUmJnRlLml1c2hybihuZSkse2RpdjpTfHxudWxsLG1vZDp0ZX19LFUucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihPLHosbmUpe3JldHVybiBFKCFP''@;'; put 'put ''LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IFUoMCksbW9kOm5ldyBVKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmU/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTyx6KSwibW9kIiE9PXomJih0ZT1QLmRpdi5uZWcoKSksImRpdiIhPT16JiYoeD1QLm1vZC5uZWco''@;'; put 'put ''KSxuZSYmMCE9PXgubmVnYXRpdmUmJnguaWFkZChPKSkse2Rpdjp0ZSxtb2Q6eH0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZT8oUD10aGlzLmRpdm1vZChPLm5lZygpLHopLCJtb2QiIT09eiYmKHRlPVAuZGl2Lm5lZygpKSx7ZGl2OnRlLG1vZDpQLm1vZH0pOjAhPSh0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlJk8ubmVnYXRpdmUpPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8ubmVnKCkseiksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxuZSYmMCE9PXgubmVnYXRpdmUmJnguaXN1YihPKSkse2RpdjpQLmRpdixtb2Q6eH0pOk8ubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChPKTww''@;'; put 'put ''P3tkaXY6bmV3IFUoMCksbW9kOnRoaXN9OjE9PT1PLmxlbmd0aD8iZGl2Ij09PXo/e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09ej97ZGl2Om51bGwsbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0p''@;'; put 'put ''LG1vZDpuZXcgVSh0aGlzLm1vZG4oTy53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KE8seik7dmFyIHRlLHgsUH0sVS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJkaXYiLCExKS5kaXZ9LFUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihPKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5kaXZtb2QoTywibW9kIiwhMSkubW9kfSxVLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCEwKS5tb2R9LFUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuZGl2bW9kKE8pO2lmKHoubW9kLmlzWmVybygp''@;'; put 'put ''KXJldHVybiB6LmRpdjt2YXIgbmU9MCE9PXouZGl2Lm5lZ2F0aXZlP3oubW9kLmlzdWIoTyk6ei5tb2QsdGU9Ty51c2hybigxKSx4PU8uYW5kbG4oMSksUD1uZS5jbXAodGUpO3JldHVybiBQPDB8fDE9PT14JiYwPT09UD96LmRpdjowIT09ei5kaXYubmVnYXRpdmU/ei5kaXYuaXN1Ym4oMSk6''@;'; put 'put ''ei5kaXYuaWFkZG4oMSl9LFUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oTyl7RShPPD02NzEwODg2Myk7Zm9yKHZhciB6PSgxPDwyNiklTyxuZT0wLHRlPXRoaXMubGVuZ3RoLTE7dGU+PTA7dGUtLSluZT0oeipuZSsoMHx0aGlzLndvcmRzW3RlXSkpJU87cmV0dXJuIG5lfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5pZGl2bj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9MCxuZT10aGlzLmxlbmd0aC0xO25lPj0wO25lLS0pe3ZhciB0ZT0oMHx0aGlzLndvcmRzW25lXSkrNjcxMDg4NjQqejt0aGlzLndvcmRzW25lXT10ZS9PfDAsej10ZSVPfXJldHVybiB0aGlzLnN0cmlwKCl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihPKX0sVS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgej10aGlzLG5lPU8uY2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1v''@;'; put 'put ''ZChPKTp6LmNsb25lKCk7Zm9yKHZhciB0ZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9bmV3IFUoMCksVj1uZXcgVSgxKSxUPTA7ei5pc0V2ZW4oKSYmbmUuaXNFdmVuKCk7KXouaXVzaHJuKDEpLG5lLml1c2hybigxKSwrK1Q7Zm9yKHZhciBTPW5lLmNsb25lKCksRj16LmNsb25lKCk7IXouaXNa''@;'; put 'put ''ZXJvKCk7KXtmb3IodmFyIHllPTAsQ2U9MTswPT0oei53b3Jkc1swXSZDZSkmJnllPDI2OysreWUsQ2U8PD0xKTtpZih5ZT4wKWZvcih6Lml1c2hybih5ZSk7eWUtLSA+MDspKHRlLmlzT2RkKCl8fHguaXNPZGQoKSkmJih0ZS5pYWRkKFMpLHguaXN1YihGKSksdGUuaXVzaHJuKDEpLHguaXVz''@;'; put 'put ''aHJuKDEpO2Zvcih2YXIgRGU9MCxQZT0xOzA9PShuZS53b3Jkc1swXSZQZSkmJkRlPDI2OysrRGUsUGU8PD0xKTtpZihEZT4wKWZvcihuZS5pdXNocm4oRGUpO0RlLS0gPjA7KShQLmlzT2RkKCl8fFYuaXNPZGQoKSkmJihQLmlhZGQoUyksVi5pc3ViKEYpKSxQLml1c2hybigxKSxWLml1c2hy''@;'; put 'put ''bigxKTt6LmNtcChuZSk+PTA/KHouaXN1YihuZSksdGUuaXN1YihQKSx4LmlzdWIoVikpOihuZS5pc3ViKHopLFAuaXN1Yih0ZSksVi5pc3ViKHgpKX1yZXR1cm57YTpQLGI6VixnY2Q6bmUuaXVzaGxuKFQpfX0sVS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRp''@;'; put 'put ''dmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB5ZSx6PXRoaXMsbmU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIHRlPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1uZS5jbG9uZSgpO3ouY21wbigxKT4wJiZuZS5jbXBuKDEpPjA7KXtmb3IodmFyIFY9''@;'; put 'put ''MCxUPTE7MD09KHoud29yZHNbMF0mVCkmJlY8MjY7KytWLFQ8PD0xKTtpZihWPjApZm9yKHouaXVzaHJuKFYpO1YtLSA+MDspdGUuaXNPZGQoKSYmdGUuaWFkZChQKSx0ZS5pdXNocm4oMSk7Zm9yKHZhciBTPTAsRj0xOzA9PShuZS53b3Jkc1swXSZGKSYmUzwyNjsrK1MsRjw8PTEpO2lmKFM+''@;'; put 'put ''MClmb3IobmUuaXVzaHJuKFMpO1MtLSA+MDspeC5pc09kZCgpJiZ4LmlhZGQoUCkseC5pdXNocm4oMSk7ei5jbXAobmUpPj0wPyh6LmlzdWIobmUpLHRlLmlzdWIoeCkpOihuZS5pc3ViKHopLHguaXN1Yih0ZSkpfXJldHVybih5ZT0wPT09ei5jbXBuKDEpP3RlOngpLmNtcG4oMCk8MCYmeWUu''@;'; put 'put ''aWFkZChPKSx5ZX0sVS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKE8pe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIE8uYWJzKCk7aWYoTy5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgej10aGlzLmNsb25lKCksbmU9Ty5jbG9uZSgpO3oubmVnYXRpdmU9MCxuZS5uZWdhdGl2ZT0wO2Zv''@;'; put 'put ''cih2YXIgdGU9MDt6LmlzRXZlbigpJiZuZS5pc0V2ZW4oKTt0ZSsrKXouaXVzaHJuKDEpLG5lLml1c2hybigxKTtmb3IoOzspe2Zvcig7ei5pc0V2ZW4oKTspei5pdXNocm4oMSk7Zm9yKDtuZS5pc0V2ZW4oKTspbmUuaXVzaHJuKDEpO3ZhciB4PXouY21wKG5lKTtpZih4PDApe3ZhciBQPXo7''@;'; put 'put ''ej1uZSxuZT1QfWVsc2UgaWYoMD09PXh8fDA9PT1uZS5jbXBuKDEpKWJyZWFrO3ouaXN1YihuZSl9cmV0dXJuIG5lLml1c2hsbih0ZSl9LFUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZWdjZChPKS5hLnVtb2QoTyl9LFUucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLndvcmRzWzBdJk99LFUucHJvdG90eXBlLmJpbmNuPWZ1''@;'; put 'put ''bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKTt2YXIgej1PJTI2LG5lPShPLXopLzI2LHRlPTE8PHo7aWYodGhpcy5sZW5ndGg8PW5lKXJldHVybiB0aGlzLl9leHBhbmQobmUrMSksdGhpcy53b3Jkc1tuZV18PXRlLHRoaXM7Zm9yKHZhciB4PXRlLFA9bmU7MCE9PXgmJlA8dGhpcy5s''@;'; put 'put ''ZW5ndGg7UCsrKXt2YXIgVj0wfHRoaXMud29yZHNbUF07eD0oVis9eCk+Pj4yNix0aGlzLndvcmRzW1BdPVYmPTY3MTA4ODYzfXJldHVybiAwIT09eCYmKHRoaXMud29yZHNbUF09eCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09''@;'; put 'put ''PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sVS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihPKXt2YXIgbmUsej1PPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiF6KXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZ6KXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxl''@;'; put 'put ''bmd0aD4xKW5lPTE7ZWxzZXt6JiYoTz0tTyksRShPPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgdGU9MHx0aGlzLndvcmRzWzBdO25lPXRlPT09Tz8wOnRlPE8/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtbmU6bmV9LFUucHJvdG90eXBlLmNtcD1mdW5jdGlv''@;'; put 'put ''bihPKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVybiAxO3ZhciB6PXRoaXMudWNtcChPKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtejp6fSxVLnByb3RvdHlwZS51Y21w''@;'; put 'put ''PWZ1bmN0aW9uKE8pe2lmKHRoaXMubGVuZ3RoPk8ubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPE8ubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgej0wLG5lPXRoaXMubGVuZ3RoLTE7bmU+PTA7bmUtLSl7dmFyIHRlPTB8dGhpcy53b3Jkc1tuZV0seD0wfE8ud29yZHNbbmVdO2lmKHRl''@;'; put 'put ''IT09eCl7dGU8eD96PS0xOnRlPngmJih6PTEpO2JyZWFrfX1yZXR1cm4gen0sVS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5ndD1mdW5jdGlvbihPKXtyZXR1cm4gMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5ndGVu''@;'; put 'put ''PWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk+PTB9LFUucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk+PTB9LFUucHJvdG90eXBlLmx0bj1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24o''@;'; put 'put ''Tyl7cmV0dXJuLTE9PT10aGlzLmNtcChPKX0sVS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPD0wfSxVLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wKE8pPD0wfSxVLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oTyl7cmV0dXJu''@;'; put 'put ''IDA9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmVxPWZ1bmN0aW9uKE8pe3JldHVybiAwPT09dGhpcy5jbXAoTyl9LFUucmVkPWZ1bmN0aW9uKE8pe3JldHVybiBuZXcgVGUoTyl9LFUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBh''@;'; put 'put ''IG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEUoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksTy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQs''@;'; put 'put ''ImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sVS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnJlZD1PLHRoaXN9LFUucHJvdG90eXBlLmZvcmNlUmVkPWZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVk''@;'; put 'put ''IG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFN1Yj1m''@;'; put 'put ''dW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZE11bD1m''@;'; put 'put ''dW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQubXVsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQs''@;'; put 'put ''InJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLE8pLHRoaXMucmVkLmltdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51''@;'; put 'put ''bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0''@;'; put 'put ''aGlzLnJlZC5pc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sVS5wcm90b3R5cGUu''@;'; put 'put ''cmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LFUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMu''@;'; put 'put ''cmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQmJiFPLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0''@;'; put 'put ''aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxPKX07dmFyIGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdmUoaGUsTyl7dGhpcy5uYW1lPWhlLHRoaXMucD1uZXcgVShPLDE2KSx0aGlzLm49dGhpcy5wLmJpdExl''@;'; put 'put ''bmd0aCgpLHRoaXMuaz1uZXcgVSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gQWUoKXt2ZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGtlKCl7dmUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBTZSgpe3ZlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gSWUoKXt2ZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIFRlKGhlKXtp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIGhlKXt2YXIgTz1VLl9wcmltZShoZSk7dGhpcy5tPU8ucCx0aGlzLnByaW1lPU99ZWxzZSBFKGhlLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWhlLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBFZShoZSl7VGUuY2Fs''@;'; put 'put ''bCh0aGlzLGhlKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBVKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmlu''@;'; put 'put ''dj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXZlLnByb3RvdHlwZS5fdG1wPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIE89bmV3IFUobnVsbCk7cmV0dXJuIE8ud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxPfSx2ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihPKXt2YXIgbmUsej1PO2Rve3RoaXMuc3BsaXQoeix0aGlzLnRtcCksbmU9KHo9KHo9dGhpcy5pbXVsSyh6''@;'; put 'put ''KSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKG5lPnRoaXMubik7dmFyIHRlPW5lPHRoaXMubj8tMTp6LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PXRlPyh6LndvcmRzWzBdPTAsei5sZW5ndGg9MSk6dGU+MD96LmlzdWIodGhpcy5wKTp2b2lkIDAhPT16LnN0cmlwP3ouc3Ry''@;'; put 'put ''aXAoKTp6Ll9zdHJpcCgpLHp9LHZlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihPLHope08uaXVzaHJuKHRoaXMubiwwLHopfSx2ZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7cmV0dXJuIE8uaW11bCh0aGlzLmspfSxNZShBZSx2ZSksQWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9u''@;'; put 'put ''KE8seil7Zm9yKHZhciB0ZT1NYXRoLm1pbihPLmxlbmd0aCw5KSx4PTA7eDx0ZTt4Kyspei53b3Jkc1t4XT1PLndvcmRzW3hdO2lmKHoubGVuZ3RoPXRlLE8ubGVuZ3RoPD05KXJldHVybiBPLndvcmRzWzBdPTAsdm9pZChPLmxlbmd0aD0xKTt2YXIgUD1PLndvcmRzWzldO2Zvcih6LndvcmRz''@;'; put 'put ''W3oubGVuZ3RoKytdPTQxOTQzMDMmUCx4PTEwO3g8Ty5sZW5ndGg7eCsrKXt2YXIgVj0wfE8ud29yZHNbeF07Ty53b3Jkc1t4LTEwXT0oNDE5NDMwMyZWKTw8NHxQPj4+MjIsUD1WfU8ud29yZHNbeC0xMF09UD4+Pj0yMixPLmxlbmd0aC09MD09PVAmJk8ubGVuZ3RoPjEwPzEwOjl9LEFlLnBy''@;'; put 'put ''b3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtPLndvcmRzW08ubGVuZ3RoXT0wLE8ud29yZHNbTy5sZW5ndGgrMV09MCxPLmxlbmd0aCs9Mjtmb3IodmFyIHo9MCxuZT0wO25lPE8ubGVuZ3RoO25lKyspe3ZhciB0ZT0wfE8ud29yZHNbbmVdO08ud29yZHNbbmVdPTY3MTA4ODYzJih6Kz05Nzcq''@;'; put 'put ''dGUpLHo9NjQqdGUrKHovNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiYoTy5sZW5ndGgtLSwwPT09Ty53b3Jkc1tPLmxlbmd0aC0xXSYmTy5sZW5ndGgtLSksT30sTWUoa2UsdmUpLE1lKFNlLHZlKSxNZShJZSx2ZSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0''@;'; put 'put ''aW9uKE8pe2Zvcih2YXIgej0wLG5lPTA7bmU8Ty5sZW5ndGg7bmUrKyl7dmFyIHRlPTE5KigwfE8ud29yZHNbbmVdKSt6LHg9NjcxMDg4NjMmdGU7dGU+Pj49MjYsTy53b3Jkc1tuZV09eCx6PXRlfXJldHVybiAwIT09eiYmKE8ud29yZHNbTy5sZW5ndGgrK109eiksT30sVS5fcHJpbWU9ZnVu''@;'; put 'put ''Y3Rpb24oTyl7aWYoZGVbT10pcmV0dXJuIGRlW09dO3ZhciB6O2lmKCJrMjU2Ij09PU8pej1uZXcgQWU7ZWxzZSBpZigicDIyNCI9PT1PKXo9bmV3IGtlO2Vsc2UgaWYoInAxOTIiPT09Tyl6PW5ldyBTZTtlbHNle2lmKCJwMjU1MTkiIT09Tyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJp''@;'; put 'put ''bWUgIitPKTt6PW5ldyBJZX1yZXR1cm4gZGVbT109eix6fSxUZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRl''@;'; put 'put ''LnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihPLHope0UoMD09KE8ubmVnYXRpdmV8ei5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRShPLnJlZCYmTy5yZWQ9PT16LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5''@;'; put 'put ''cGUuaW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoTykuX2ZvcmNlUmVkKHRoaXMpOk8udW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pc1plcm8oKT9PLmNsb25lKCk6''@;'; put 'put ''dGhpcy5tLnN1YihPKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uYWRkKHopO3JldHVybiBuZS5jbXAodGhpcy5tKT49MCYmbmUuaXN1Yih0aGlzLm0pLG5lLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJv''@;'; put 'put ''dG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uaWFkZCh6KTtyZXR1cm4gbmUuY21wKHRoaXMubSk+PTAmJm5lLmlzdWIodGhpcy5tKSxuZX0sVGUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgbmU9''@;'; put 'put ''Ty5zdWIoeik7cmV0dXJuIG5lLmNtcG4oMCk8MCYmbmUuaWFkZCh0aGlzLm0pLG5lLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uaXN1Yih6KTtyZXR1cm4gbmUuY21wbigwKTwwJiZuZS5pYWRkKHRo''@;'; put 'put ''aXMubSksbmV9LFRlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShPKSx0aGlzLmltb2QoTy51c2hsbih6KSl9LFRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5pbXVsKHop''@;'; put 'put ''KX0sVGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkyKE8seiksdGhpcy5pbW9kKE8ubXVsKHopKX0sVGUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW11bChPLE8uY2xvbmUoKSl9LFRlLnByb3RvdHlwZS5zcXI9ZnVuY3Rp''@;'; put 'put ''b24oTyl7cmV0dXJuIHRoaXMubXVsKE8sTyl9LFRlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKE8pe2lmKE8uaXNaZXJvKCkpcmV0dXJuIE8uY2xvbmUoKTt2YXIgej10aGlzLm0uYW5kbG4oMyk7aWYoRSh6JTI9PTEpLDM9PT16KXt2YXIgbmU9dGhpcy5tLmFkZChuZXcgVSgxKSkuaXVzaHJu''@;'; put 'put ''KDIpO3JldHVybiB0aGlzLnBvdyhPLG5lKX1mb3IodmFyIHRlPXRoaXMubS5zdWJuKDEpLHg9MDshdGUuaXNaZXJvKCkmJjA9PT10ZS5hbmRsbigxKTspeCsrLHRlLml1c2hybigxKTtFKCF0ZS5pc1plcm8oKSk7dmFyIFA9bmV3IFUoMSkudG9SZWQodGhpcyksVj1QLnJlZE5lZygpLFQ9dGhp''@;'; put 'put ''cy5tLnN1Ym4oMSkuaXVzaHJuKDEpLFM9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihTPW5ldyBVKDIqUypTKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coUyxUKS5jbXAoVik7KVMucmVkSUFkZChWKTtmb3IodmFyIEY9dGhpcy5wb3coUyx0ZSkseWU9dGhpcy5wb3coTyx0ZS5hZGRuKDEpLml1''@;'; put 'put ''c2hybigxKSksQ2U9dGhpcy5wb3coTyx0ZSksRGU9eDswIT09Q2UuY21wKFApOyl7Zm9yKHZhciBQZT1DZSxRZT0wOzAhPT1QZS5jbXAoUCk7UWUrKylQZT1QZS5yZWRTcXIoKTtFKFFlPERlKTt2YXIgJGU9dGhpcy5wb3coRixuZXcgVSgxKS5pdXNobG4oRGUtUWUtMSkpO3llPXllLnJlZE11''@;'; put 'put ''bCgkZSksRj0kZS5yZWRTcXIoKSxDZT1DZS5yZWRNdWwoRiksRGU9UWV9cmV0dXJuIHllfSxUZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXt2YXIgej1PLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09ei5uZWdhdGl2ZT8oei5uZWdhdGl2ZT0wLHRoaXMuaW1vZCh6KS5yZWROZWcoKSk6''@;'; put 'put ''dGhpcy5pbW9kKHopfSxUZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8seil7aWYoei5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMSkudG9SZWQodGhpcyk7aWYoMD09PXouY21wbigxKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciB0ZT1uZXcgQXJyYXkoMTYpO3RlWzBdPW5ldyBVKDEpLnRvUmVkKHRo''@;'; put 'put ''aXMpLHRlWzFdPU87Zm9yKHZhciB4PTI7eDx0ZS5sZW5ndGg7eCsrKXRlW3hdPXRoaXMubXVsKHRlW3gtMV0sTyk7dmFyIFA9dGVbMF0sVj0wLFQ9MCxTPXouYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1TJiYoUz0yNikseD16Lmxlbmd0aC0xO3g+PTA7eC0tKXtmb3IodmFyIEY9ei53b3Jkc1t4''@;'; put 'put ''XSx5ZT1TLTE7eWU+PTA7eWUtLSl7dmFyIENlPUY+PnllJjE7UCE9PXRlWzBdJiYoUD10aGlzLnNxcihQKSksMCE9PUNlfHwwIT09Vj8oVjw8PTEsVnw9Q2UsKDQ9PSsrVHx8MD09PXgmJjA9PT15ZSkmJihQPXRoaXMubXVsKFAsdGVbVl0pLFQ9MCxWPTApKTpUPTB9Uz0yNn1yZXR1cm4gUH0s''@;'; put 'put ''VGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXt2YXIgej1PLnVtb2QodGhpcy5tKTtyZXR1cm4gej09PU8/ei5jbG9uZSgpOnp9LFRlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej1PLmNsb25lKCk7cmV0dXJuIHoucmVkPW51bGwsen0sVS5tb250PWZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiBuZXcgRWUoTyl9LE1lKEVlLFRlKSxFZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy51c2hsbih0aGlzLnNoaWZ0KSl9LEVlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej10aGlzLmltb2Qo''@;'; put 'put ''Ty5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHoucmVkPW51bGwsen0sRWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBPLndvcmRzWzBdPTAsTy5sZW5ndGg9MSxPO3ZhciBuZT1PLmltdWwoeiksdGU9bmUubWFza24odGhpcy5z''@;'; put 'put ''aGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9bmUuaXN1Yih0ZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5f''@;'; put 'put ''Zm9yY2VSZWQodGhpcyl9LEVlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBuZXcgVSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIG5lPU8ubXVsKHopLHRlPW5lLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNr''@;'; put 'put ''bih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PW5lLmlzdWIodGUpLml1c2hybih0aGlzLnNoaWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14LmlzdWIodGhpcy5tKTp4LmNtcG4oMCk8MCYmKFA9eC5pYWRkKHRoaXMubSkpLFAuX2ZvcmNlUmVkKHRoaXMpfSxFZS5wcm90b3R5''@;'; put 'put ''cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbW9kKE8uX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShYZT1MLm5tZChYZSksdGhpcyl9LDMyMzkxOlhlPT57ZnVuY3Rpb24gSmUoTCxnZSl7aWYoIUwpdGhyb3cgbmV3IEVycm9yKGdlfHwiQXNz''@;'; put 'put ''ZXJ0aW9uIGZhaWxlZCIpfVhlLmV4cG9ydHM9SmUsSmUuZXF1YWw9ZnVuY3Rpb24oZ2UsQixFKXtpZihnZSE9Qil0aHJvdyBuZXcgRXJyb3IoRXx8IkFzc2VydGlvbiBmYWlsZWQ6ICIrZ2UrIiAhPSAiK0IpfX0sNTgxOTU6KFhlLEplKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTD1KZTtmdW5jdGlv''@;'; put 'put ''biBCKE1lKXtyZXR1cm4gMT09PU1lLmxlbmd0aD8iMCIrTWU6TWV9ZnVuY3Rpb24gRShNZSl7Zm9yKHZhciBVPSIiLFE9MDtRPE1lLmxlbmd0aDtRKyspVSs9QihNZVtRXS50b1N0cmluZygxNikpO3JldHVybiBVfUwudG9BcnJheT1mdW5jdGlvbiBnZShNZSxVKXtpZihBcnJheS5pc0FycmF5''@;'; put 'put ''KE1lKSlyZXR1cm4gTWUuc2xpY2UoKTtpZighTWUpcmV0dXJuW107dmFyIFE9W107aWYoInN0cmluZyIhPXR5cGVvZiBNZSl7Zm9yKHZhciBaPTA7WjxNZS5sZW5ndGg7WisrKVFbWl09MHxNZVtaXTtyZXR1cm4gUX1pZigiaGV4Ij09PVUpZm9yKChNZT1NZS5yZXBsYWNlKC9bXmEtejAtOV0r''@;'; put 'put ''L2dpLCIiKSkubGVuZ3RoJTIhPTAmJihNZT0iMCIrTWUpLFo9MDtaPE1lLmxlbmd0aDtaKz0yKVEucHVzaChwYXJzZUludChNZVtaXStNZVtaKzFdLDE2KSk7ZWxzZSBmb3IoWj0wO1o8TWUubGVuZ3RoO1orKyl7dmFyIGllPU1lLmNoYXJDb2RlQXQoWiksbGU9aWU+PjgsWT0yNTUmaWU7bGU/''@;'; put 'put ''US5wdXNoKGxlLFkpOlEucHVzaChZKX1yZXR1cm4gUX0sTC56ZXJvMj1CLEwudG9IZXg9RSxMLmVuY29kZT1mdW5jdGlvbihVLFEpe3JldHVybiJoZXgiPT09UT9FKFUpOlV9fSwyNzA4ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2Nh''@;'; put 'put ''bGUoImFmIix7bW9udGhzOiJKYW51YXJpZV9GZWJydWFyaWVfTWFhcnRfQXByaWxfTWVpX0p1bmllX0p1bGllX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVn''@;'; put 'put ''X1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvbl9NYWFfRGluX1dvZV9Eb25fVnJ5X1NhdCIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c01pbjoiU29fTWFfRGlfV29fRG9fVnJfU2EiLnNwbGl0KCJfIiksbWVyaWRpZW1QYXJzZTovdm18bm0vaSxpc1BNOmZ1bmN0aW9uKEUpe3JldHVybi9ebm0kL2kudGVzdChFKX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTwxMj9VPyJ2bSI6IlZNIjpVPyJubSI6''@;'; put 'put ''Ik5NIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVmFuZGFnIG9t''@;'; put 'put ''XSBMVCIsbmV4dERheToiW01ceGY0cmUgb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbR2lzdGVyIG9tXSBMVCIsbGFzdFdlZWs6IltMYWFzXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9vciAlcyIscGFzdDoiJXMg''@;'; put 'put ''Z2VsZWRlIixzOiInbiBwYWFyIHNla29uZGVzIixzczoiJWQgc2Vrb25kZXMiLG06IiduIG1pbnV1dCIsbW06IiVkIG1pbnV0ZSIsaDoiJ24gdXVyIixoaDoiJWQgdXJlIixkOiInbiBkYWciLGRkOiIlZCBkYWUiLE06IiduIG1hYW5kIixNTToiJWQgbWFhbmRlIix5OiInbiBqYWFyIix5eToi''@;'; put 'put ''JWQgamFhciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihFKXtyZXR1cm4gRSsoMT09PUV8fDg9PT1FfHxFPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNTI1MDI6ZnVuY3Rpb24oWGUs''@;'; put 'put ''SmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ZnVuY3Rpb24oWil7cmV0dXJuIDA9PT1aPzA6MT09PVo/MToyPT09Wj8yOlolMTAwPj0zJiZaJTEwMDw9MTA/MzpaJTEwMD49MTE/NDo1fSxFPXtzOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmJc''@;'; put 'put ''dTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYy''@;'; put 'put ''YVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiXSxtOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmZcdTA2''@;'; put 'put ''NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1''@;'; put 'put ''MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiXSxoOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzNc''@;'; put 'put ''dTA2MjdcdTA2MzlcdTA2MjkiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2''@;'; put 'put ''MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiXSxkOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2NGFcdTA2NDhcdTA2NDUiLCJcdTA2NGFcdTA2NDhcdTA2NDUg''@;'; put 'put ''XHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLCIlZCBcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBc''@;'; put 'put ''dTA2NGFcdTA2NDhcdTA2NDUiXSxNOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzRcdTA2NDdcdTA2MzEiLCJcdTA2MzRcdTA2NDdcdTA2MzEgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyN1x1MDY0NiIsIlx1MDYzNFx1''@;'; put 'put ''MDY0N1x1MDYzMVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjciLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzEiXSx5OlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzlcdTA2MjdcdTA2NDUi''@;'; put 'put ''LCJcdTA2MzlcdTA2MjdcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzOVx1MDYyN1x1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzlcdTA2NDhcdTA2MjdcdTA2NDUiLCIlZCBcdTA2MzlcdTA2''@;'; put 'put ''MjdcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDUiXX0sTWU9ZnVuY3Rpb24oWil7cmV0dXJuIGZ1bmN0aW9uKGllLGxlLFksVyl7dmFyIE49QihpZSksZWU9RVtaXVtCKGllKV07cmV0dXJuIDI9PT1OJiYoZWU9ZWVbbGU/MDoxXSksZWUucmVwbGFjZSgvJWQvaSxp''@;'; put 'put ''ZSl9fSxVPVsiXHUwNjJjXHUwNjI3XHUwNjQ2XHUwNjQxXHUwNjRhIiwiXHUwNjQxXHUwNjRhXHUwNjQxXHUwNjMxXHUwNjRhIiwiXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzIiwiXHUwNjIzXHUwNjQxXHUwNjMxXHUwNjRhXHUwNjQ0IiwiXHUwNjQ1XHUwNjI3XHUwNjRhIiwiXHUwNjJjXHUw''@;'; put 'put ''NjQ4XHUwNjI3XHUwNjQ2IiwiXHUwNjJjXHUwNjQ4XHUwNjRhXHUwNjQ0XHUwNjRhXHUwNjI5IiwiXHUwNjIzXHUwNjQ4XHUwNjJhIiwiXHUwNjMzXHUwNjI4XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUw''@;'; put 'put ''NjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl07Z2UuZGVmaW5lTG9jYWxlKCJhci1keiIse21vbnRoczpVLG1vbnRoc1Nob3J0OlUsd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2Mjdc''@;'; put 'put ''dTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFc''@;'; put 'put ''dTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1''@;'; put 'put ''MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2''@;'; put 'put ''NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiRC9cdTIwMGZNL1x1MjAwZllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNXxcdTA2NDUvLGlzUE06ZnVuY3Rpb24oWil7cmV0dXJuIlx1MDY0NSI9PT1afSxtZXJpZGllbTpmdW5jdGlvbihaLGllLGxlKXtyZXR1cm4gWjwxMj8iXHUwNjM1IjoiXHUw''@;'; put 'put ''NjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2NGJcdTA2MjcgXHUwNjM5XHUwNjQ2''@;'; put 'put ''XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2''@;'; put 'put ''NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJc''@;'; put 'put ''dTA2MjhcdTA2MzlcdTA2MmYgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczpNZSgicyIpLHNzOk1lKCJzIiksbTpNZSgibSIpLG1tOk1lKCJtIiksaDpNZSgiaCIpLGhoOk1lKCJoIiksZDpNZSgiZCIpLGRkOk1lKCJkIiksTTpNZSgiTSIpLE1NOk1lKCJNIikseTpNZSgieSIp''@;'; put 'put ''LHl5Ok1lKCJ5Iil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oWil7cmV0dXJuIFoucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjAsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzAxMjg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9j''@;'; put 'put ''YWxlKCJhci1rdyIse21vbnRoczoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9c''@;'; put 'put ''dTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0''@;'; put 'put ''OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUw''@;'; put 'put ''NjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OFx1MDYzMl9cdTA2M2FcdTA2MzRcdTA2MmFfXHUwNjM0XHUwNjJhXHUwNjQ2XHUwNjI4''@;'; put 'put ''XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjJjXHUwNjQ2XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3''@;'; put 'put ''XHUwNjQ0XHUwNjI1XHUwNjJhXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRh''@;'; put 'put ''XHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjI3XHUwNjJkXHUwNjJmX1x1MDYyN1x1MDYyYVx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRc''@;'; put 'put ''dTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUw''@;'; put 'put ''NjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBI''@;'; put 'put ''SDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNh''@;'; put 'put ''XHUwNjJmXHUwNjI3IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2''@;'; put 'put ''MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6Ikwi''@;'; put 'put ''fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjQxXHUwNjRhICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6Ilx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsbToiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQy''@;'; put 'put ''XHUwNjI5IixtbToiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIixoOiJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLGQ6Ilx1MDY0YVx1MDY0OFx1MDY0NSIsZGQ6IiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1''@;'; put 'put ''MDY0NSIsTToiXHUwNjM0XHUwNjQ3XHUwNjMxIixNTToiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIix5OiJcdTA2MzNcdTA2NDZcdTA2MjkiLHl5OiIlZCBcdTA2MzNcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmEifSx3ZWVrOntkb3c6MCxkb3k6MTJ9fSl9KEwoMTU0MzkpKX0sODQ1MTk6''@;'; put 'put ''ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6IjEiLDI6IjIiLDM6IjMiLDQ6IjQiLDU6IjUiLDY6IjYiLDc6IjciLDg6IjgiLDk6IjkiLDA6IjAifSxFPWZ1bmN0aW9uKGllKXtyZXR1cm4gMD09PWllPzA6MT09PWllPzE6Mj09PWllPzI6aWUl''@;'; put 'put ''MTAwPj0zJiZpZSUxMDA8PTEwPzM6aWUlMTAwPj0xMT80OjV9LE1lPXtzOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJm''@;'; put 'put ''XHUwNjI5IixbIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2Mjki''@;'; put 'put ''LCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiXSxtOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUw''@;'; put 'put ''NjI5IixbIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2''@;'; put 'put ''MjkiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiXSxoOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1''@;'; put 'put ''MDYzM1x1MDYyN1x1MDYzOVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCIlZCBcdTA2MzNcdTA2MjdcdTA2Mzlc''@;'; put 'put ''dTA2MjkiXSxkOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2NGFcdTA2NDhcdTA2NDUiLCJcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDY0YVx1MDY0OFx1MDY0NVx1''@;'; put 'put ''MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLCIlZCBcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2NGFcdTA2NDhcdTA2NDUiXSxNOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzRcdTA2NDdcdTA2MzEiLCJcdTA2''@;'; put 'put ''MzRcdTA2NDdcdTA2MzEgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyN1x1MDY0NiIsIlx1MDYzNFx1MDY0N1x1MDYzMVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzFcdTA2''@;'; put 'put ''MjciLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzEiXSx5OlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzlcdTA2MjdcdTA2NDUiLCJcdTA2MzlcdTA2MjdcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzOVx1MDYyN1x1MDY0NVx1MDYyN1x1MDY0NiIs''@;'; put 'put ''Ilx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzlcdTA2NDhcdTA2MjdcdTA2NDUiLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDUiXX0sVT1mdW5jdGlvbihpZSl7cmV0dXJuIGZ1bmN0aW9uKGxl''@;'; put 'put ''LFksVyxOKXt2YXIgZWU9RShsZSkscT1NZVtpZV1bRShsZSldO3JldHVybiAyPT09ZWUmJihxPXFbWT8wOjFdKSxxLnJlcGxhY2UoLyVkL2ksbGUpfX0sUT1bIlx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMSIsIlx1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMSIsIlx1''@;'; put 'put ''MDY0NVx1MDYyN1x1MDYzMVx1MDYzMyIsIlx1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NCIsIlx1MDY0NVx1MDYyN1x1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OCIsIlx1MDYyM1x1MDYzYVx1''@;'; put 'put ''MDYzM1x1MDYzN1x1MDYzMyIsIlx1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYy''@;'; put 'put ''OFx1MDYzMSJdO2dlLmRlZmluZUxvY2FsZSgiYXItbHkiLHttb250aHM6USxtb250aHNTaG9ydDpRLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0''@;'; put 'put ''NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2''@;'; put 'put ''MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIx''@;'; put 'put ''X1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQ''@;'; put 'put ''YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNl''@;'; put 'put ''Oi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKGllKXtyZXR1cm4iXHUwNjQ1Ij09PWllfSxtZXJpZGllbTpmdW5jdGlvbihpZSxsZSxZKXtyZXR1cm4gaWU8MTI/Ilx1MDYzNSI6Ilx1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1''@;'; put 'put ''IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjRiXHUwNjI3IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2Vl''@;'; put 'put ''azoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RX''@;'; put 'put ''ZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjI4XHUwNjM5XHUwNjJmICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6VSgi''@;'; put 'put ''cyIpLHNzOlUoInMiKSxtOlUoIm0iKSxtbTpVKCJtIiksaDpVKCJoIiksaGg6VSgiaCIpLGQ6VSgiZCIpLGRkOlUoImQiKSxNOlUoIk0iKSxNTTpVKCJNIikseTpVKCJ5IikseXk6VSgieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihpZSl7cmV0dXJuIGllLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9''@;'; put 'put ''LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oaWUpe3JldHVybiBpZS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKGxlKXtyZXR1cm4gQltsZV19KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KEwoMTU0MzkpKX0sNjU0NDM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0''@;'; put 'put ''aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJhci1tYSIse21vbnRoczoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMx''@;'; put 'put ''XHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUw''@;'; put 'put ''NjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2Mjdc''@;'; put 'put ''dTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OFx1MDYzMl9cdTA2M2FcdTA2''@;'; put 'put ''MzRcdTA2MmFfXHUwNjM0XHUwNjJhXHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjJjXHUwNjQ2XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA2''@;'; put 'put ''MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2''@;'; put 'put ''MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjI3XHUwNjJkXHUwNjJmX1x1MDYyN1x1MDYy''@;'; put 'put ''Ylx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5z''@;'; put 'put ''cGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExM''@;'; put 'put ''OiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2Mjdc''@;'; put 'put ''dTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjI3IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYy''@;'; put 'put ''N1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUw''@;'; put 'put ''NjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjQxXHUwNjRhICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6Ilx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1''@;'; put 'put ''MDYyOSIsbToiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IixtbToiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIixoOiJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLGQ6Ilx1MDY0YVx1MDY0OFx1''@;'; put 'put ''MDY0NSIsZGQ6IiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsTToiXHUwNjM0XHUwNjQ3XHUwNjMxIixNTToiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIix5OiJcdTA2MzNcdTA2NDZcdTA2MjkiLHl5OiIlZCBcdTA2MzNcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmEifSx3ZWVrOntk''@;'; put 'put ''b3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxNzY0MjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwNjYxIiwyOiJcdTA2NjIiLDM6Ilx1MDY2MyIsNDoiXHUwNjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIsNzoiXHUwNjY3Iiw4OiJc''@;'; put 'put ''dTA2NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0sRT17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJcdTA2NjUiOiI1IiwiXHUwNjY2IjoiNiIsIlx1MDY2NyI6IjciLCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIsIlx1MDY2MCI6IjAifTtn''@;'; put 'put ''ZS5kZWZpbmVMb2NhbGUoImFyLXNhIix7bW9udGhzOiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUw''@;'; put 'put ''NjI3XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhfXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFc''@;'; put 'put ''dTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYz''@;'; put 'put ''MVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4X1x1''@;'; put 'put ''MDYyM1x1MDYzYVx1MDYzM1x1MDYzN1x1MDYzM19cdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVc''@;'; put 'put ''dTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1''@;'; put 'put ''MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1''@;'; put 'put ''MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI''@;'; put 'put ''SDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbihVKXtyZXR1cm4iXHUw''@;'; put 'put ''NjQ1Ij09PVV9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxaKXtyZXR1cm4gVTwxMj8iXHUwNjM1IjoiXHUwNjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYz''@;'; put 'put ''OVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUw''@;'; put 'put ''NjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2Mjdc''@;'; put 'put ''dTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5''@;'; put 'put ''IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1''@;'; put 'put ''IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHByZXBhcnNlOmZ1''@;'; put 'put ''bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2NjlcdTA2NjBdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUp''@;'; put 'put ''e3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSw2ODU5MjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZp''@;'; put 'put ''bmVMb2NhbGUoImFyLXRuIix7bW9udGhzOiJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGFfXHUwNjQxXHUwNjRhXHUwNjQxXHUwNjMxXHUwNjRhX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1''@;'; put 'put ''MDYyY1x1MDY0OFx1MDYyN1x1MDY0Nl9cdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjlfXHUwNjIzXHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4''@;'; put 'put ''XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjJjXHUwNjI3XHUwNjQ2XHUwNjQxXHUwNjRhX1x1MDY0MVx1MDY0YVx1MDY0MVx1MDYzMVx1MDY0YV9cdTA2NDVcdTA2MjdcdTA2''@;'; put 'put ''MzFcdTA2MzNfXHUwNjIzXHUwNjQxXHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MmNcdTA2NDhcdTA2MjdcdTA2NDZfXHUwNjJjXHUwNjQ4XHUwNjRhXHUwNjQ0XHUwNjRhXHUwNjI5X1x1MDYyM1x1MDY0OFx1MDYyYV9cdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVc''@;'; put 'put ''dTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1''@;'; put 'put ''MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRc''@;'; put 'put ''dTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUw''@;'; put 'put ''NjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixM''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQi''@;'; put 'put ''LG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBM''@;'; put 'put ''VCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2Mjld''@;'; put 'put ''IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZc''@;'; put 'put ''dTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUw''@;'; put 'put ''NjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShM''@;'; put 'put ''KDE1NDM5KSl9LDE3MDM4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTA2NjEiLDI6Ilx1MDY2MiIsMzoiXHUwNjYzIiw0OiJcdTA2NjQiLDU6Ilx1MDY2NSIsNjoiXHUwNjY2Iiw3OiJcdTA2NjciLDg6Ilx1MDY2OCIsOToiXHUwNjY5''@;'; put 'put ''IiwwOiJcdTA2NjAifSxFPXsiXHUwNjYxIjoiMSIsIlx1MDY2MiI6IjIiLCJcdTA2NjMiOiIzIiwiXHUwNjY0IjoiNCIsIlx1MDY2NSI6IjUiLCJcdTA2NjYiOiI2IiwiXHUwNjY3IjoiNyIsIlx1MDY2OCI6IjgiLCJcdTA2NjkiOiI5IiwiXHUwNjYwIjoiMCJ9LE1lPWZ1bmN0aW9uKGxlKXty''@;'; put 'put ''ZXR1cm4gMD09PWxlPzA6MT09PWxlPzE6Mj09PWxlPzI6bGUlMTAwPj0zJiZsZSUxMDA8PTEwPzM6bGUlMTAwPj0xMT80OjV9LFU9e3M6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1''@;'; put 'put ''MDY0YVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIs''@;'; put 'put ''IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSJdLG06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0''@;'; put 'put ''Mlx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0''@;'; put 'put ''MiIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSJdLGg6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSBc''@;'; put 'put ''dTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsIiVkIFx1MDYzM1x1MDYyN1x1''@;'; put 'put ''MDYzOVx1MDYyOSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSJdLGQ6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDY0YVx1MDY0OFx1MDY0NSIsIlx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjRhXHUwNjQ4XHUwNjQ1''@;'; put 'put ''XHUwNjI3XHUwNjQ2IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NSJdLE06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUw''@;'; put 'put ''NjQ1XHUwNjQ2IFx1MDYzNFx1MDY0N1x1MDYzMSIsIlx1MDYzNFx1MDY0N1x1MDYzMSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzNFx1MDY0''@;'; put 'put ''N1x1MDYzMSIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyNyIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMSJdLHk6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzOVx1MDYyN1x1MDY0NSIsIlx1MDYzOVx1MDYyN1x1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYi''@;'; put 'put ''LFsiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzOVx1MDY0OFx1MDYyN1x1MDY0NSIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NSJd''@;'; put 'put ''fSxRPWZ1bmN0aW9uKGxlKXtyZXR1cm4gZnVuY3Rpb24oWSxXLE4sZWUpe3ZhciBxPU1lKFkpLEo9VVtsZV1bTWUoWSldO3JldHVybiAyPT09cSYmKEo9SltXPzA6MV0pLEoucmVwbGFjZSgvJWQvaSxZKX19LFo9WyJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzEiLCJcdTA2NDFcdTA2''@;'; put 'put ''MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzMiLCJcdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjdcdTA2NGFcdTA2NDgiLCJcdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDgiLCJcdTA2NGFcdTA2NDhcdTA2''@;'; put 'put ''NDRcdTA2NGFcdTA2NDgiLCJcdTA2MjNcdTA2M2FcdTA2MzNcdTA2MzdcdTA2MzMiLCJcdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzEi''@;'; put 'put ''LCJcdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXTtnZS5kZWZpbmVMb2NhbGUoImFyIix7bW9udGhzOlosbW9udGhzU2hvcnQ6Wix3ZWVrZGF5czoiXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1''@;'; put 'put ''MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVc''@;'; put 'put ''dTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyM1x1''@;'; put 'put ''MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNf''@;'; put 'put ''XHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJEL1x1MjAwZk0vXHUyMDBmWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1N''@;'; put 'put ''TSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbihsZSl7cmV0dXJuIlx1MDY0NSI9PT1sZX0sbWVyaWRpZW06ZnVuY3Rpb24obGUsWSxXKXtyZXR1cm4gbGU8MTI/Ilx1MDYzNSI6Ilx1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUw''@;'; put 'put ''NjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjRiXHUwNjI3IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2''@;'; put 'put ''MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1''@;'; put 'put ''MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjI4XHUwNjM5XHUwNjJmICVzIixwYXN0OiJc''@;'; put 'put ''dTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6USgicyIpLHNzOlEoInMiKSxtOlEoIm0iKSxtbTpRKCJtIiksaDpRKCJoIiksaGg6USgiaCIpLGQ6USgiZCIpLGRkOlEoImQiKSxNOlEoIk0iKSxNTTpRKCJNIikseTpRKCJ5IikseXk6USgieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihsZSl7cmV0dXJu''@;'; put 'put ''IGxlLnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2NjlcdTA2NjBdL2csZnVuY3Rpb24oWSl7cmV0dXJuIEVbWV19KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGxlKXtyZXR1cm4gbGUucmVw''@;'; put 'put ''bGFjZSgvXGQvZyxmdW5jdGlvbihZKXtyZXR1cm4gQltZXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oTCgxNTQzOSkpfSw1MTIxMzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiLWluY2kiLDU6''@;'; put 'put ''Ii1pbmNpIiw4OiItaW5jaSIsNzA6Ii1pbmNpIiw4MDoiLWluY2kiLDI6Ii1uY2kiLDc6Ii1uY2kiLDIwOiItbmNpIiw1MDoiLW5jaSIsMzoiLVx4ZmNuY1x4ZmMiLDQ6Ii1ceGZjbmNceGZjIiwxMDA6Ii1ceGZjbmNceGZjIiw2OiItbmNcdTAxMzEiLDk6Ii11bmN1IiwxMDoiLXVuY3UiLDMw''@;'; put 'put ''OiItdW5jdSIsNjA6Ii1cdTAxMzFuY1x1MDEzMSIsOTA6Ii1cdTAxMzFuY1x1MDEzMSJ9O2dlLmRlZmluZUxvY2FsZSgiYXoiLHttb250aHM6InlhbnZhcl9mZXZyYWxfbWFydF9hcHJlbF9tYXlfaXl1bl9peXVsX2F2cXVzdF9zZW50eWFicl9va3R5YWJyX25veWFicl9kZWthYnIiLnNwbGl0''@;'; put 'put ''KCJfIiksbW9udGhzU2hvcnQ6Inlhbl9mZXZfbWFyX2Fwcl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJCYXphcl9CYXphciBlcnRcdTAyNTlzaV9ceGM3XHUwMjU5clx1MDE1Zlx1MDI1OW5iXHUwMjU5IGF4XHUwMTVmYW1cdTAxMzFfXHhj''@;'; put 'put ''N1x1MDI1OXJcdTAxNWZcdTAyNTluYlx1MDI1OV9DXHhmY21cdTAyNTkgYXhcdTAxNWZhbVx1MDEzMV9DXHhmY21cdTAyNTlfXHUwMTVlXHUwMjU5bmJcdTAyNTkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQmF6X0J6RV9ceGM3QXhfXHhjN1x1MDI1OXJfQ0F4X0NceGZjbV9cdTAxNWVc''@;'; put 'put ''dTAyNTluIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJCel9CRV9ceGM3QV9ceGM3XHUwMjU5X0NBX0NceGZjX1x1MDE1ZVx1MDI1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZ''@;'; put 'put ''WSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnXHhmY24gc2FhdF0gTFQiLG5leHREYXk6IltzYWJhaCBzYWF0XSBMVCIsbmV4dFdlZWs6IltnXHUwMjU5bFx1MDI1''@;'; put 'put ''OW4gaFx1MDI1OWZ0XHUwMjU5XSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2RceGZjblx1MDI1OW5dIExUIixsYXN0V2VlazoiW2tlXHhlN1x1MDI1OW4gaFx1MDI1OWZ0XHUwMjU5XSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29u''@;'; put 'put ''cmEiLHBhc3Q6IiVzIFx1MDI1OXZ2XHUwMjU5bCIsczoiYmlyIG5lXHhlN1x1MDI1OSBzYW5peVx1MDI1OSIsc3M6IiVkIHNhbml5XHUwMjU5IixtOiJiaXIgZFx1MDI1OXFpcVx1MDI1OSIsbW06IiVkIGRcdTAyNTlxaXFcdTAyNTkiLGg6ImJpciBzYWF0IixoaDoiJWQgc2FhdCIsZDoiYmly''@;'; put 'put ''IGdceGZjbiIsZGQ6IiVkIGdceGZjbiIsTToiYmlyIGF5IixNTToiJWQgYXkiLHk6ImJpciBpbCIseXk6IiVkIGlsIn0sbWVyaWRpZW1QYXJzZTovZ2VjXHUwMjU5fHNcdTAyNTloXHUwMjU5cnxnXHhmY25kXHhmY3p8YXhcdTAxNWZhbS8saXNQTTpmdW5jdGlvbihNZSl7cmV0dXJuL14oZ1x4''@;'; put 'put ''ZmNuZFx4ZmN6fGF4XHUwMTVmYW0pJC8udGVzdChNZSl9LG1lcmlkaWVtOmZ1bmN0aW9uKE1lLFUsUSl7cmV0dXJuIE1lPDQ/ImdlY1x1MDI1OSI6TWU8MTI/InNcdTAyNTloXHUwMjU5ciI6TWU8MTc/ImdceGZjbmRceGZjeiI6ImF4XHUwMTVmYW0ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNl''@;'; put 'put ''Oi9cZHsxLDJ9LShcdTAxMzFuY1x1MDEzMXxpbmNpfG5jaXxceGZjbmNceGZjfG5jXHUwMTMxfHVuY3UpLyxvcmRpbmFsOmZ1bmN0aW9uKE1lKXtpZigwPT09TWUpcmV0dXJuIE1lKyItXHUwMTMxbmNcdTAxMzEiO3ZhciBVPU1lJTEwO3JldHVybiBNZSsoQltVXXx8QltNZSUxMDAtVV18fEJb''@;'; put 'put ''TWU+PTEwMD8xMDA6bnVsbF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw2OTE5MTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKFUsUSxaKXtyZXR1cm4ibSI9PT1aP1E/Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1''@;'; put 'put ''MDQ1Nlx1MDQzZFx1MDQzMCI6Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0MyI6ImgiPT09Wj9RPyJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0MzAiOiJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0NDMiOlUr''@;'; put 'put ''IiAiK2Z1bmN0aW9uIEIoVSxRKXt2YXIgWj1VLnNwbGl0KCJfIik7cmV0dXJuIFElMTA9PTEmJlElMTAwIT0xMT9aWzBdOlElMTA+PTImJlElMTA8PTQmJihRJTEwMDwxMHx8USUxMDA+PTIwKT9aWzFdOlpbMl19KHtzczpRPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRc''@;'; put 'put ''dTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0''@;'; put 'put ''MzRcdTA0NGJfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTpRPyJcdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0MzBfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDRiX1x1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1''@;'; put 'put ''MDQ1Nlx1MDQzZCI6Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0M19cdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkIixoaDpRPyJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0''@;'; put 'put ''MzdcdTA0NTZcdTA0M2RcdTA0MzBfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkXHUwNDRiX1x1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZCI6Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0MzBcdTA0MzRc''@;'; put 'put ''dTA0MzdcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkIixkZDoiXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0MzdcdTA0NTFcdTA0M2QiLE1NOiJcdTA0M2NcdTA0MzVcdTA0NDFc''@;'; put 'put ''dTA0NGZcdTA0NDZfXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDRiX1x1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQzMFx1MDQ1ZSIseXk6Ilx1MDQzM1x1MDQzZVx1MDQzNF9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDNl''@;'; put 'put ''XHUwNDVlIn1bWl0sK1UpfWdlLmRlZmluZUxvY2FsZSgiYmUiLHttb250aHM6e2Zvcm1hdDoiXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQzMFx1MDQzM1x1MDQzMF9cdTA0NDFcdTA0MzBcdTA0M2FcdTA0MzBc''@;'; put 'put ''dTA0MzJcdTA0NTZcdTA0M2FcdTA0MzBfXHUwNDNhXHUwNDQwXHUwNDMwXHUwNDQxXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNhXHUwNDMwX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQ1ZVx1MDQzZFx1MDQ0Zl9cdTA0NDdcdTA0NGRcdTA0NDBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDNi''@;'; put 'put ''XHUwNDU2XHUwNDNmXHUwNDM1XHUwNDNkXHUwNDRmX1x1MDQzNlx1MDQzZFx1MDQ1Nlx1MDQ1ZVx1MDQzZFx1MDQ0Zl9cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzBcdTA0NDFcdTA0M2RcdTA0NGZfXHUwNDNhXHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDRiXHUwNDQ3XHUwNDNkXHUwNDU2''@;'; put 'put ''XHUwNDNhXHUwNDMwX1x1MDQzYlx1MDQ1Nlx1MDQ0MVx1MDQ0Mlx1MDQzMFx1MDQzZlx1MDQzMFx1MDQzNFx1MDQzMF9cdTA0NDFcdTA0M2RcdTA0MzVcdTA0MzZcdTA0M2RcdTA0NGYiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM0XHUwNDM3XHUwNDM1''@;'; put 'put ''XHUwNDNkXHUwNDRjX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQ0Yl9cdTA0NDFcdTA0MzBcdTA0M2FcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FfXHUwNDNhXHUwNDQwXHUwNDMwXHUwNDQxXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNhX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNVx1MDQz''@;'; put 'put ''ZFx1MDQ0Y19cdTA0NDdcdTA0NGRcdTA0NDBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDU2XHUwNDNmXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNlx1MDQzZFx1MDQ1Nlx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzBcdTA0NDFcdTA0''@;'; put 'put ''MzVcdTA0M2RcdTA0NGNfXHUwNDNhXHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDRiXHUwNDQ3XHUwNDNkXHUwNDU2XHUwNDNhX1x1MDQzYlx1MDQ1Nlx1MDQ0MVx1MDQ0Mlx1MDQzMFx1MDQzZlx1MDQzMFx1MDQzNF9cdTA0NDFcdTA0M2RcdTA0MzVcdTA0MzZcdTA0MzBcdTA0M2RcdTA0''@;'; put 'put ''NGMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRfXHUwNDNiXHUwNDRlXHUwNDQyX1x1MDQ0MVx1MDQzMFx1MDQzYV9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQz''@;'; put 'put ''Ml9cdTA0M2JcdTA0NTZcdTA0M2ZfXHUwNDM2XHUwNDNkXHUwNDU2XHUwNDMyX1x1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNiIuc3BsaXQoIl8iKSx3ZWVrZGF5czp7Zm9y''@;'; put 'put ''bWF0OiJcdTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0NGVfXHUwNDNmXHUwNDMwXHUwNDNkXHUwNDRmXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNiXHUwNDMwXHUwNDNhX1x1MDQzMFx1MDQ1ZVx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0MzVc''@;'; put 'put ''dTA0NDBcdTA0MzBcdTA0MzRcdTA0NDNfXHUwNDQ3XHUwNDMwXHUwNDQ2XHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0M19cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0NDMiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToi''@;'; put 'put ''XHUwNDNkXHUwNDRmXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNiXHUwNDRmX1x1MDQzZlx1MDQzMFx1MDQzZFx1MDQ0Zlx1MDQzNFx1MDQzN1x1MDQzNVx1MDQzYlx1MDQzMFx1MDQzYV9cdTA0MzBcdTA0NWVcdTA0NDJcdTA0M2VcdTA0NDBcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQw''@;'; put 'put ''XHUwNDMwXHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzMFx1MDQ0Nlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2ZcdTA0NGZcdTA0NDJcdTA0M2RcdTA0NTZcdTA0NDZcdTA0MzBfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9cWyA/W1x1''@;'; put 'put ''MDQyM1x1MDQ0M1x1MDQ1ZV0gPyg/Olx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0M1x1MDQ0ZXxcdTA0M2RcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0M2ZcdTA0M2RcdTA0NDNcdTA0NGUpPyA/XF0gP2RkZGQvfSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzRfXHUw''@;'; put 'put ''NDNmXHUwNDNkX1x1MDQzMFx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQ2X1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMwXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDZf''@;'; put 'put ''XHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkgXHUwNDMzLiIsTExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuLCBISDptbSIsTExMTDoiZGRkZCwg''@;'; put 'put ''RCBNTU1NIFlZWVkgXHUwNDMzLiwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQyMVx1MDQ1MVx1MDQzZFx1MDQzZFx1MDQ0ZiBcdTA0NWVdIExUIixuZXh0RGF5OiJbXHUwNDE3XHUwNDMwXHUwNDVlXHUwNDQyXHUwNDQwXHUwNDMwIFx1MDQ1ZV0gTFQiLGxhc3REYXk6IltcdTA0''@;'; put 'put ''MjNcdTA0NDdcdTA0M2VcdTA0NDBcdTA0MzAgXHUwNDVlXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW1x1MDQyM10gZGRkZCBbXHUwNDVlXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1''@;'; put 'put ''cm4iW1x1MDQyMyBcdTA0M2NcdTA0NTZcdTA0M2RcdTA0NDNcdTA0M2JcdTA0NDNcdTA0NGVdIGRkZGQgW1x1MDQ1ZV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJbXHUwNDIzIFx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0Yl0gZGRkZCBbXHUwNDVlXSBMVCJ9''@;'; put 'put ''fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0M2ZcdTA0NDBcdTA0MzBcdTA0MzcgJXMiLHBhc3Q6IiVzIFx1MDQ0Mlx1MDQzMFx1MDQzY1x1MDQ0MyIsczoiXHUwNDNkXHUwNDM1XHUwNDNhXHUwNDMwXHUwNDNiXHUwNDRjXHUwNDNhXHUwNDU2IFx1MDQ0MVx1MDQz''@;'; put 'put ''NVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsbTpFLG1tOkUsaDpFLGhoOkUsZDoiXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjIixkZDpFLE06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0NiIsTU06RSx5OiJcdTA0MzNcdTA0M2VcdTA0MzQiLHl5OkV9LG1lcmlkaWVtUGFy''@;'; put 'put ''c2U6L1x1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ0YnxcdTA0NDBcdTA0MzBcdTA0M2RcdTA0NTZcdTA0NDZcdTA0NGJ8XHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzMFx1MDQ0MFx1MDQzMC8saXNQTTpmdW5jdGlvbihVKXtyZXR1cm4vXihcdTA0MzRcdTA0M2RcdTA0''@;'; put 'put ''NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUwNDMwKSQvLnRlc3QoVSl9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxaKXtyZXR1cm4gVTw0PyJcdTA0M2RcdTA0M2VcdTA0NDdcdTA0NGIiOlU8MTI/Ilx1MDQ0MFx1MDQzMFx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0YiI6VTwxNz8i''@;'; put 'put ''XHUwNDM0XHUwNDNkXHUwNDRmIjoiXHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUwNDMwIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDU2fFx1MDQ0YnxcdTA0MzNcdTA0MzApLyxvcmRpbmFsOmZ1bmN0aW9uKFUsUSl7c3dpdGNoKFEpe2Nhc2UiTSI6Y2Fz''@;'; put 'put ''ZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBVJTEwIT0yJiZVJTEwIT0zfHxVJTEwMD09MTJ8fFUlMTAwPT0xMz9VKyItXHUwNDRiIjpVKyItXHUwNDU2IjtjYXNlIkQiOnJldHVybiBVKyItXHUwNDMzXHUwNDMwIjtkZWZhdWx0OnJldHVybiBVfX0sd2Vlazp7ZG93OjEs''@;'; put 'put ''ZG95Ojd9fSl9KEwoMTU0MzkpKX0sOTAzMjI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJiZyIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDQzXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1''@;'; put 'put ''MDQ0M1x1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM4XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0NGVcdTA0M2RcdTA0MzhfXHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0''@;'; put 'put ''MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2ZcdTA0NDJcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDNlXHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzZFx1MDQzZVx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0''@;'; put 'put ''MzVcdTA0M2FcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQ0M19cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDRl''@;'; put 'put ''XHUwNDNkXHUwNDM4X1x1MDQ0ZVx1MDQzYlx1MDQzOF9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNmX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0MzVfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0M2RcdTA0MzVcdTA0''@;'; put 'put ''MzRcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0NGZcdTA0MzRcdTA0MzBfXHUwNDQ3XHUw''@;'; put 'put ''NDM1XHUwNDQyXHUwNDMyXHUwNDRhXHUwNDQwXHUwNDQyXHUwNDRhXHUwNDNhX1x1MDQzZlx1MDQzNVx1MDQ0Mlx1MDQ0YVx1MDQzYV9cdTA0NDFcdTA0NGFcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDNkXHUwNDM1XHUwNDM0X1x1MDQz''@;'; put 'put ''Zlx1MDQzZVx1MDQzZF9cdTA0MzJcdTA0NDJcdTA0M2VfXHUwNDQxXHUwNDQwXHUwNDRmX1x1MDQ0N1x1MDQzNVx1MDQ0Ml9cdTA0M2ZcdTA0MzVcdTA0NDJfXHUwNDQxXHUwNDRhXHUwNDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0M2RcdTA0MzRfXHUwNDNmXHUwNDNkX1x1MDQz''@;'; put 'put ''Mlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0i''@;'; put 'put ''LExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxNFx1MDQzZFx1MDQzNVx1MDQ0MSBcdTA0MzJdIExUIixuZXh0RGF5OiJbXHUwNDIzXHUwNDQyXHUwNDQwXHUwNDM1IFx1MDQzMl0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0MzJdIExUIixs''@;'; put 'put ''YXN0RGF5OiJbXHUwNDEyXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMwIFx1MDQzMl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbXHUwNDFjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDNiXHUwNDMwXHUwNDQyXHUw''@;'; put 'put ''NDMwXSBkZGRkIFtcdTA0MzJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0MzBcdTA0M2JcdTA0MzhcdTA0NGZdIGRkZGQgW1x1MDQzMl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDQx''@;'; put 'put ''XHUwNDNiXHUwNDM1XHUwNDM0ICVzIixwYXN0OiJcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzggJXMiLHM6Ilx1MDQzZFx1MDQ0Zlx1MDQzYVx1MDQzZVx1MDQzYlx1MDQzYVx1MDQzZSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLHNzOiIlZCBcdTA0''@;'; put 'put ''NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLG06Ilx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCIsbW06IiVkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzOCIsaDoiXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDoiJWQgXHUwNDQ3XHUw''@;'; put 'put ''NDMwXHUwNDQxXHUwNDMwIixkOiJcdTA0MzRcdTA0MzVcdTA0M2QiLGRkOiIlZCBcdTA0MzRcdTA0MzVcdTA0M2RcdTA0MzAiLHc6Ilx1MDQ0MVx1MDQzNVx1MDQzNFx1MDQzY1x1MDQzOFx1MDQ0Nlx1MDQzMCIsd3c6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzNFx1MDQzY1x1MDQzOFx1MDQ0Nlx1''@;'; put 'put ''MDQzOCIsTToiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IixNTToiJWQgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDMwIix5OiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiLHl5OiIlZCBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2Rc''@;'; put 'put ''dTA0MzgifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0MzVcdTA0MzJ8XHUwNDM1XHUwNDNkfFx1MDQ0Mlx1MDQzOHxcdTA0MzJcdTA0Mzh8XHUwNDQwXHUwNDM4fFx1MDQzY1x1MDQzOCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTAsVT1FJTEwMDtyZXR1''@;'; put 'put ''cm4gMD09PUU/RSsiLVx1MDQzNVx1MDQzMiI6MD09PVU/RSsiLVx1MDQzNVx1MDQzZCI6VT4xMCYmVTwyMD9FKyItXHUwNDQyXHUwNDM4IjoxPT09TWU/RSsiLVx1MDQzMlx1MDQzOCI6Mj09PU1lP0UrIi1cdTA0NDBcdTA0MzgiOjc9PT1NZXx8OD09PU1lP0UrIi1cdTA0M2NcdTA0MzgiOkUr''@;'; put 'put ''Ii1cdTA0NDJcdTA0MzgifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSwyODA0MjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImJtIix7bW9udGhzOiJaYW53dXlla2Fsb19GZXd1cnV5ZWthbG9fTWFyaXNpa2Fs''@;'; put 'put ''b19Bd2lyaWxpa2Fsb19NXHUwMjVia2Fsb19adXdcdTAyNWJua2Fsb19adWx1eWVrYWxvX1V0aWthbG9fU1x1MDI1YnRhbmJ1cnVrYWxvX1x1MDI1NGt1dFx1MDI1NGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2FsbyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiWmFuX0Zld19N''@;'; put 'put ''YXJfQXdpX01cdTAyNWJfWnV3X1p1bF9VdGlfU1x1MDI1YnRfXHUwMjU0a3VfTm93X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiS2FyaV9OdFx1MDI1Ym5cdTAyNWJuX1RhcmF0YV9BcmFiYV9BbGFtaXNhX0p1bWFfU2liaXJpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikthcl9OdFx1''@;'; put 'put ''MDI1Yl9UYXJfQXJhX0FsYV9KdW1fU2liIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJLYV9OdF9UYV9Bcl9BbF9KdV9TaSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiTU1NTSBbdGlsZV0gRCBbc2FuXSBZ''@;'; put 'put ''WVlZIixMTEw6Ik1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIixMTExMOiJkZGRkIE1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltCaSBsXHUwMjViclx1MDI1Yl0gTFQiLG5l''@;'; put 'put ''eHREYXk6IltTaW5pIGxcdTAyNWJyXHUwMjViXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2RvbiBsXHUwMjViclx1MDI1Yl0gTFQiLGxhc3REYXk6IltLdW51IGxcdTAyNWJyXHUwMjViXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3RcdTAyNWJtXHUwMjVibmVuIGxcdTAyNWJyXHUwMjViXSBMVCIsc2Ft''@;'; put 'put ''ZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMga1x1MDI1NG5cdTAyNTQiLHBhc3Q6ImEgYlx1MDI1YiAlcyBiXHUwMjU0IixzOiJzYW5nYSBkYW1hIGRhbWEiLHNzOiJzZWtvbmRpICVkIixtOiJtaW5pdGkga2VsZW4iLG1tOiJtaW5pdGkgJWQiLGg6ImxcdTAyNWJyXHUwMjVi''@;'; put 'put ''IGtlbGVuIixoaDoibFx1MDI1YnJcdTAyNWIgJWQiLGQ6InRpbGUga2VsZW4iLGRkOiJ0aWxlICVkIixNOiJrYWxvIGtlbGVuIixNTToia2FsbyAlZCIseToic2FuIGtlbGVuIix5eToic2FuICVkIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNjU5MDM6ZnVuY3Rpb24oWGUs''@;'; put 'put ''SmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MDllNyIsMjoiXHUwOWU4IiwzOiJcdTA5ZTkiLDQ6Ilx1MDllYSIsNToiXHUwOWViIiw2OiJcdTA5ZWMiLDc6Ilx1MDllZCIsODoiXHUwOWVlIiw5OiJcdTA5ZWYiLDA6Ilx1MDllNiJ9LEU9eyJcdTA5ZTciOiIx''@;'; put 'put ''IiwiXHUwOWU4IjoiMiIsIlx1MDllOSI6IjMiLCJcdTA5ZWEiOiI0IiwiXHUwOWViIjoiNSIsIlx1MDllYyI6IjYiLCJcdTA5ZWQiOiI3IiwiXHUwOWVlIjoiOCIsIlx1MDllZiI6IjkiLCJcdTA5ZTYiOiIwIn07Z2UuZGVmaW5lTG9jYWxlKCJibi1iZCIse21vbnRoczoiXHUwOTljXHUwOWJl''@;'; put 'put ''XHUwOWE4XHUwOWMxXHUwOWRmXHUwOWJlXHUwOWIwXHUwOWJmX1x1MDlhYlx1MDljN1x1MDlhY1x1MDljZFx1MDliMFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWVcdTA5YmVcdTA5YjBcdTA5Y2RcdTA5OWFfXHUwOThmXHUwOWFhXHUwOWNkXHUwOWIwXHUwOWJmXHUwOWIy''@;'; put 'put ''X1x1MDlhZVx1MDljN19cdTA5OWNcdTA5YzFcdTA5YThfXHUwOTljXHUwOWMxXHUwOWIyXHUwOWJlXHUwOTg3X1x1MDk4Nlx1MDk5N1x1MDliOFx1MDljZFx1MDk5Zl9cdTA5YjhcdTA5YzdcdTA5YWFcdTA5Y2RcdTA5OWZcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOTg1XHUw''@;'; put 'put ''OTk1XHUwOWNkXHUwOTlmXHUwOWNiXHUwOWFjXHUwOWIwX1x1MDlhOFx1MDlhZFx1MDljN1x1MDlhZVx1MDljZFx1MDlhY1x1MDliMF9cdTA5YTFcdTA5YmZcdTA5YjhcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDk5Y1x1MDliZVx1''@;'; put 'put ''MDlhOFx1MDljMV9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDli''@;'; put 'put ''Mlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5YjhcdTA5Y2RcdTA5OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYl9cdTA5YThcdTA5YWRcdTA5YzdfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3Ii5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzOiJcdTA5YjBcdTA5YWNcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI4XHUwOWNiXHUwOWFlXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWNcdTA5YzFcdTA5YTdcdTA5YWNcdTA5YmVcdTA5''@;'; put 'put ''YjBfXHUwOWFjXHUwOWMzXHUwOWI5XHUwOWI4XHUwOWNkXHUwOWFhXHUwOWE0XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMFx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjAiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNTaG9ydDoiXHUwOWIwXHUwOWFjXHUwOWJmX1x1MDliOFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZl9cdTA5YjZcdTA5''@;'; put 'put ''YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5YjBcdTA5YWNcdTA5YmZfXHUwOWI4XHUwOWNiXHUwOWFlX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMl9cdTA5YWNcdTA5YzFcdTA5YTdfXHUwOWFjXHUwOWMz''@;'; put 'put ''XHUwOWI5X1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIixMVFM6IkEgaDptbTpzcyBcdTA5YjhcdTA5YWVcdTA5ZGYiLEw6IkREL01NL1lZWVki''@;'; put 'put ''LExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDk4Nlx1MDk5Y10gTFQiLG5leHREYXk6Iltc''@;'; put 'put ''dTA5ODZcdTA5OTdcdTA5YmVcdTA5YWVcdTA5YzBcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5OTdcdTA5YTRcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixsYXN0V2VlazoiW1x1MDk5N1x1MDlhNF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJM''@;'; put 'put ''In0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDlhYVx1MDliMFx1MDljNyIscGFzdDoiJXMgXHUwOTg2XHUwOTk3XHUwOWM3IixzOiJcdTA5OTVcdTA5ZGZcdTA5YzdcdTA5OTUgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixzczoiJWQgXHUwOWI4XHUw''@;'; put 'put ''OWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixtOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixtbToiJWQgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixoOiJcdTA5OGZcdTA5OTUgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUw''@;'; put 'put ''OWJlIixoaDoiJWQgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJlIixkOiJcdTA5OGZcdTA5OTUgXHUwOWE2XHUwOWJmXHUwOWE4IixkZDoiJWQgXHUwOWE2XHUwOWJmXHUwOWE4IixNOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJlXHUwOWI4IixNTToiJWQgXHUwOWFlXHUwOWJlXHUw''@;'; put 'put ''OWI4Iix5OiJcdTA5OGZcdTA5OTUgXHUwOWFjXHUwOTliXHUwOWIwIix5eToiJWQgXHUwOWFjXHUwOTliXHUwOWIwIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MDllN1x1MDllOFx1MDllOVx1MDllYVx1MDllYlx1MDllY1x1MDllZFx1MDllZVx1MDllZlx1''@;'; put 'put ''MDllNl0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwOWIwXHUwOWJlXHUwOWE0fFx1MDlhZFx1MDljYlx1MDliMHxcdTA5''@;'; put 'put ''YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmV8XHUwOWIwXHUwOWJlXHUwOWE0LyxtZXJpZGllbUhvdXI6ZnVuY3Rp''@;'; put 'put ''b24oVSxRKXtyZXR1cm4gMTI9PT1VJiYoVT0wKSwiXHUwOWIwXHUwOWJlXHUwOWE0Ij09PVE/VTw0P1U6VSsxMjoiXHUwOWFkXHUwOWNiXHUwOWIwIj09PVF8fCJcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjIiPT09UT9VOiJcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjAiPT09UT9VPj0z''@;'; put 'put ''P1U6VSsxMjoiXHUwOWFjXHUwOWJmXHUwOTk1XHUwOWJlXHUwOWIyIj09PVF8fCJcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmUiPT09UT9VKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLFope3JldHVybiBVPDQ/Ilx1MDliMFx1MDliZVx1MDlhNCI6''@;'; put 'put ''VTw2PyJcdTA5YWRcdTA5Y2JcdTA5YjAiOlU8MTI/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI6VTwxNT8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjpVPDE4PyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOlU8MjA/Ilx1MDliOFx1MDlhOFx1MDljZFx1MDlhN1x1''@;'; put 'put ''MDljZFx1MDlhZlx1MDliZSI6Ilx1MDliMFx1MDliZVx1MDlhNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDU5NjIwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTA5ZTciLDI6Ilx1MDllOCIsMzoiXHUwOWU5Iiw0''@;'; put 'put ''OiJcdTA5ZWEiLDU6Ilx1MDllYiIsNjoiXHUwOWVjIiw3OiJcdTA5ZWQiLDg6Ilx1MDllZSIsOToiXHUwOWVmIiwwOiJcdTA5ZTYifSxFPXsiXHUwOWU3IjoiMSIsIlx1MDllOCI6IjIiLCJcdTA5ZTkiOiIzIiwiXHUwOWVhIjoiNCIsIlx1MDllYiI6IjUiLCJcdTA5ZWMiOiI2IiwiXHUwOWVk''@;'; put 'put ''IjoiNyIsIlx1MDllZSI6IjgiLCJcdTA5ZWYiOiI5IiwiXHUwOWU2IjoiMCJ9O2dlLmRlZmluZUxvY2FsZSgiYm4iLHttb250aHM6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFcdTA5''@;'; put 'put ''ZGZcdTA5YmVcdTA5YjBcdTA5YmZfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdc''@;'; put 'put ''dTA5YjhcdTA5Y2RcdTA5OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmXHUwOWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYlx1MDlhY1x1MDliMF9cdTA5YThcdTA5YWRcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBf''@;'; put 'put ''XHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5OWNcdTA5YmVcdTA5YThcdTA5YzFfXHUwOWFiXHUwOWM3XHUwOWFjXHUwOWNkXHUwOWIwXHUwOWMxX1x1MDlhZVx1MDliZVx1MDliMFx1MDljZFx1MDk5''@;'; put 'put ''YV9cdTA5OGZcdTA5YWFcdTA5Y2RcdTA5YjBcdTA5YmZcdTA5YjJfXHUwOWFlXHUwOWM3X1x1MDk5Y1x1MDljMVx1MDlhOF9cdTA5OWNcdTA5YzFcdTA5YjJcdTA5YmVcdTA5ODdfXHUwOTg2XHUwOTk3XHUwOWI4XHUwOWNkXHUwOTlmX1x1MDliOFx1MDljN1x1MDlhYVx1MDljZFx1MDk5Zl9c''@;'; put 'put ''dTA5ODVcdTA5OTVcdTA5Y2RcdTA5OWZcdTA5Y2JfXHUwOWE4XHUwOWFkXHUwOWM3X1x1MDlhMVx1MDliZlx1MDliOFx1MDljNyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwOWIwXHUwOWFjXHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliOFx1MDljYlx1MDlhZVx1MDlhY1x1MDliZVx1''@;'; put 'put ''MDliMF9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFjXHUwOWMxXHUwOWE3XHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZc''@;'; put 'put ''dTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDliMFx1MDlhY1x1MDliZl9cdTA5YjhcdTA5Y2JcdTA5YWVfXHUwOWFlXHUwOTk5XHUwOWNkXHUw''@;'; put 'put ''OTk3XHUwOWIyX1x1MDlhY1x1MDljMVx1MDlhN19cdTA5YWNcdTA5YzNcdTA5YjlcdTA5YjhcdTA5Y2RcdTA5YWFcdTA5YTRcdTA5YmZfXHUwOWI2XHUwOWMxXHUwOTk1XHUwOWNkXHUwOWIwX1x1MDliNlx1MDlhOFx1MDliZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOWIwXHUwOWFj''@;'; put 'put ''XHUwOWJmX1x1MDliOFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOV9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLGxvbmdEYXRl''@;'; put 'put ''Rm9ybWF0OntMVDoiQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiIsTFRTOiJBIGg6bW06c3MgXHUwOWI4XHUwOWFlXHUwOWRmIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYiLExMTEw6ImRkZGQsIEQg''@;'; put 'put ''TU1NTSBZWVlZLCBBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA5ODZcdTA5OWNdIExUIixuZXh0RGF5OiJbXHUwOTg2XHUwOTk3XHUwOWJlXHUwOWFlXHUwOWMwXHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0''@;'; put 'put ''RGF5OiJbXHUwOTk3XHUwOWE0XHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbGFzdFdlZWs6IltcdTA5OTdcdTA5YTRdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA5YWFcdTA5YjBcdTA5YzciLHBhc3Q6IiVzIFx1MDk4Nlx1MDk5N1x1MDljNyIs''@;'; put 'put ''czoiXHUwOTk1XHUwOWRmXHUwOWM3XHUwOTk1IFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1MDlhOFx1MDljZFx1MDlhMSIsc3M6IiVkIFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1MDlhOFx1MDljZFx1MDlhMSIsbToiXHUwOThmXHUwOTk1IFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1''@;'; put 'put ''MDk5ZiIsbW06IiVkIFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsaDoiXHUwOThmXHUwOTk1IFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsaGg6IiVkIFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsZDoiXHUwOThmXHUwOTk1IFx1MDlhNlx1MDliZlx1MDlh''@;'; put 'put ''OCIsZGQ6IiVkIFx1MDlhNlx1MDliZlx1MDlhOCIsTToiXHUwOThmXHUwOTk1IFx1MDlhZVx1MDliZVx1MDliOCIsTU06IiVkIFx1MDlhZVx1MDliZVx1MDliOCIseToiXHUwOThmXHUwOTk1IFx1MDlhY1x1MDk5Ylx1MDliMCIseXk6IiVkIFx1MDlhY1x1MDk5Ylx1MDliMCJ9LHByZXBhcnNl''@;'; put 'put ''OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTA5ZTdcdTA5ZThcdTA5ZTlcdTA5ZWFcdTA5ZWJcdTA5ZWNcdTA5ZWRcdTA5ZWVcdTA5ZWZcdTA5ZTZdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9c''@;'; put 'put ''ZC9nLGZ1bmN0aW9uKFEpe3JldHVybiBCW1FdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDliMFx1MDliZVx1MDlhNHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjBcdTA5YmVc''@;'; put 'put ''dTA5YTQvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVybiAxMj09PVUmJihVPTApLCJcdTA5YjBcdTA5YmVcdTA5YTQiPT09USYmVT49NHx8Ilx1MDlhNlx1MDljMVx1MDlhYVx1MDljMVx1MDliMCI9PT1RJiZVPDV8fCJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiPT09''@;'; put 'put ''UT9VKzEyOlV9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxaKXtyZXR1cm4gVTw0PyJcdTA5YjBcdTA5YmVcdTA5YTQiOlU8MTA/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI6VTwxNz8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjpVPDIwPyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5''@;'; put 'put ''YmVcdTA5YjIiOiJcdTA5YjBcdTA5YmVcdTA5YTQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSw2OTY0NTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwZjIxIiwyOiJcdTBmMjIiLDM6Ilx1MGYyMyIsNDoiXHUwZjI0''@;'; put 'put ''Iiw1OiJcdTBmMjUiLDY6Ilx1MGYyNiIsNzoiXHUwZjI3Iiw4OiJcdTBmMjgiLDk6Ilx1MGYyOSIsMDoiXHUwZjIwIn0sRT17Ilx1MGYyMSI6IjEiLCJcdTBmMjIiOiIyIiwiXHUwZjIzIjoiMyIsIlx1MGYyNCI6IjQiLCJcdTBmMjUiOiI1IiwiXHUwZjI2IjoiNiIsIlx1MGYyNyI6IjciLCJc''@;'; put 'put ''dTBmMjgiOiI4IiwiXHUwZjI5IjoiOSIsIlx1MGYyMCI6IjAifTtnZS5kZWZpbmVMb2NhbGUoImJvIix7bW9udGhzOiJcdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTFcdTBmNDRcdTBmMGJcdTBmNTRcdTBmN2NfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjQy''@;'; put 'put ''XHUwZjQ5XHUwZjcyXHUwZjY2XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY0Mlx1MGY2Nlx1MGY3NFx1MGY1OFx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNWVcdTBmNzJcdTBmMGJcdTBmNTRfXHUwZjVm''@;'; put 'put ''XHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjYzXHUwZjk0XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGZiMlx1MGY3NFx1MGY0Mlx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNTFcdTBmNzRc''@;'; put 'put ''dTBmNTNcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjYyXHUwZjkyXHUwZmIxXHUwZjUxXHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGY0Mlx1MGY3NFx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNc''@;'; put 'put ''dTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNDVcdTBmNzRcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjQ1XHUwZjc0XHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyXHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1''@;'; put 'put ''MGYwYlx1MGY1Nlx1MGY0NVx1MGY3NFx1MGYwYlx1MGY0Mlx1MGY0OVx1MGY3Mlx1MGY2Nlx1MGYwYlx1MGY1NCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZjVmXHUwZmIzXHUwZjBiMV9cdTBmNWZcdTBmYjNcdTBmMGIyX1x1MGY1Zlx1MGZiM1x1MGYwYjNfXHUwZjVmXHUwZmIzXHUw''@;'; put 'put ''ZjBiNF9cdTBmNWZcdTBmYjNcdTBmMGI1X1x1MGY1Zlx1MGZiM1x1MGYwYjZfXHUwZjVmXHUwZmIzXHUwZjBiN19cdTBmNWZcdTBmYjNcdTBmMGI4X1x1MGY1Zlx1MGZiM1x1MGYwYjlfXHUwZjVmXHUwZmIzXHUwZjBiMTBfXHUwZjVmXHUwZmIzXHUwZjBiMTFfXHUwZjVmXHUwZmIzXHUwZjBi''@;'; put 'put ''MTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnRSZWdleDovXihcdTBmNWZcdTBmYjNcdTBmMGJcZHsxLDJ9KS8sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjQ5XHUwZjcyXHUwZjBiXHUwZjU4XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1MGY2''@;'; put 'put ''MFx1MGYwYlx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNThcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTFcdTBmNThcdTBmNjJcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjYzXHUwZmI3XHUwZjQyXHUwZjBiXHUwZjU0''@;'; put 'put ''XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1NVx1MGY3NFx1MGY2Mlx1MGYwYlx1MGY1Nlx1MGY3NF9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNTRcdTBmMGJcdTBmNjZcdTBmNDRcdTBmNjZcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjY2XHUwZmE0''@;'; put 'put ''XHUwZjdhXHUwZjUzXHUwZjBiXHUwZjU0XHUwZjBiIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGY0OVx1MGY3Mlx1MGYwYlx1MGY1OFx1MGYwYl9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJfXHUwZjU4XHUwZjcyXHUwZjQyXHUwZjBiXHUwZjUxXHUwZjU4XHUwZjYyXHUw''@;'; put 'put ''ZjBiX1x1MGY2M1x1MGZiN1x1MGY0Mlx1MGYwYlx1MGY1NFx1MGYwYl9cdTBmNTVcdTBmNzRcdTBmNjJcdTBmMGJcdTBmNTZcdTBmNzRfXHUwZjU0XHUwZjBiXHUwZjY2XHUwZjQ0XHUwZjY2XHUwZjBiX1x1MGY2Nlx1MGZhNFx1MGY3YVx1MGY1M1x1MGYwYlx1MGY1NFx1MGYwYiIuc3BsaXQo''@;'; put 'put ''Il8iKSx3ZWVrZGF5c01pbjoiXHUwZjQ5XHUwZjcyX1x1MGY1Zlx1MGZiM19cdTBmNThcdTBmNzJcdTBmNDJfXHUwZjYzXHUwZmI3XHUwZjQyX1x1MGY1NVx1MGY3NFx1MGY2Ml9cdTBmNjZcdTBmNDRcdTBmNjZfXHUwZjY2XHUwZmE0XHUwZjdhXHUwZjUzIi5zcGxpdCgiXyIpLGxvbmdEYXRl''@;'; put 'put ''Rm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEgaDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGY1MVx1MGY3Mlx1MGYw''@;'; put 'put ''Ylx1MGY2Mlx1MGY3Mlx1MGY0NF0gTFQiLG5leHREYXk6IltcdTBmNjZcdTBmNDRcdTBmMGJcdTBmNDlcdTBmNzJcdTBmNTNdIExUIixuZXh0V2VlazoiW1x1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NVx1MGZiMlx1MGY0Mlx1MGYwYlx1MGY2Mlx1MGY5N1x1MGY3YVx1MGY2''@;'; put 'put ''Nlx1MGYwYlx1MGY1OF0sIExUIixsYXN0RGF5OiJbXHUwZjQxXHUwZjBiXHUwZjY2XHUwZjQ0XSBMVCIsbGFzdFdlZWs6IltcdTBmNTZcdTBmNTFcdTBmNzRcdTBmNTNcdTBmMGJcdTBmNTVcdTBmYjJcdTBmNDJcdTBmMGJcdTBmNThcdTBmNTBcdTBmNjBcdTBmMGJcdTBmNThdIGRkZGQsIExU''@;'; put 'put ''IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBmNjNcdTBmMGIiLHBhc3Q6IiVzIFx1MGY2Nlx1MGY5NFx1MGY1M1x1MGYwYlx1MGY2MyIsczoiXHUwZjYzXHUwZjU4XHUwZjBiXHUwZjY2XHUwZjQ0IixzczoiJWQgXHUwZjY2XHUwZjkwXHUwZjYyXHUwZjBiXHUw''@;'; put 'put ''ZjQ2XHUwZjBkIixtOiJcdTBmNjZcdTBmOTBcdTBmNjJcdTBmMGJcdTBmNThcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLG1tOiIlZCBcdTBmNjZcdTBmOTBcdTBmNjJcdTBmMGJcdTBmNTgiLGg6Ilx1MGY0Nlx1MGY3NFx1MGYwYlx1MGY1YVx1MGY3Y1x1MGY1MVx1MGYwYlx1MGY0''@;'; put 'put ''Mlx1MGY0NVx1MGY3Mlx1MGY0MiIsaGg6IiVkIFx1MGY0Nlx1MGY3NFx1MGYwYlx1MGY1YVx1MGY3Y1x1MGY1MSIsZDoiXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIixkZDoiJWQgXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiIixNOiJcdTBmNWZcdTBm''@;'; put 'put ''YjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLE1NOiIlZCBcdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTYiLHk6Ilx1MGY2M1x1MGY3Y1x1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIseXk6IiVkIFx1MGY2M1x1MGY3YyJ9LHByZXBhcnNlOmZ1bmN0aW9u''@;'; put 'put ''KFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTBmMjFcdTBmMjJcdTBmMjNcdTBmMjRcdTBmMjVcdTBmMjZcdTBmMjdcdTBmMjhcdTBmMjlcdTBmMjBdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cZC9nLGZ1bmN0''@;'; put 'put ''aW9uKFEpe3JldHVybiBCW1FdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3Y3xcdTBmNWVcdTBmN2NcdTBmNDJcdTBmNjZcdTBmMGJcdTBmNDBcdTBmNjZ8XHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0fFx1MGY1''@;'; put 'put ''MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MnxcdTBmNThcdTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVybiAxMj09PVUmJihVPTApLCJcdTBmNThcdTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MiPT09''@;'; put 'put ''USYmVT49NHx8Ilx1MGY0OVx1MGY3Mlx1MGY1M1x1MGYwYlx1MGY0Mlx1MGY3NFx1MGY0NCI9PT1RJiZVPDV8fCJcdTBmNTFcdTBmNDJcdTBmN2NcdTBmNDRcdTBmMGJcdTBmNTFcdTBmNDIiPT09UT9VKzEyOlV9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxaKXtyZXR1cm4gVTw0PyJcdTBmNThc''@;'; put 'put ''dTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MiOlU8MTA/Ilx1MGY1ZVx1MGY3Y1x1MGY0Mlx1MGY2Nlx1MGYwYlx1MGY0MFx1MGY2NiI6VTwxNz8iXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0IjpVPDIwPyJcdTBmNTFcdTBmNDJcdTBmN2NcdTBmNDRcdTBm''@;'; put 'put ''MGJcdTBmNTFcdTBmNDIiOiJcdTBmNThcdTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSw0NTAyMDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKEosc2UsYWUpe3JldHVy''@;'; put 'put ''biBKKyIgIitmdW5jdGlvbiBVKEosc2Upe3JldHVybiAyPT09c2U/ZnVuY3Rpb24gUShKKXt2YXIgc2U9e206InYiLGI6InYiLGQ6InoifTtyZXR1cm4gdm9pZCAwPT09c2VbSi5jaGFyQXQoMCldP0o6c2VbSi5jaGFyQXQoMCldK0ouc3Vic3RyaW5nKDEpfShKKTpKfSh7bW06Im11bnV0ZW5u''@;'; put 'put ''IixNTToibWl6IixkZDoiZGV2ZXpoIn1bYWVdLEopfWZ1bmN0aW9uIE1lKEope3JldHVybiBKPjk/TWUoSiUxMCk6Sn12YXIgWj1bL15nZW4vaSwvXmNbXHUwMmJjXCddaHdlL2ksL15tZXUvaSwvXmVici9pLC9ebWFlL2ksL14obWV6fGV2ZSkvaSwvXmdvdS9pLC9eZW9zL2ksL15nd2UvaSwv''@;'; put 'put ''Xmhlci9pLC9eZHUvaSwvXmtlci9pXSxpZT0vXihnZW52ZXJ8Y1tcdTAyYmNcJ11od2V2cmVyfG1ldXJ6aHxlYnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dXxnZW58Y1tcdTAyYmNcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhl''@;'; put 'put ''cnxkdXxrZXIpL2ksZWU9Wy9eU3UvaSwvXkx1L2ksL15NZShbXnJdfCQpL2ksL15NZXIvaSwvXllhL2ksL15Hdy9pLC9eU2EvaV07Z2UuZGVmaW5lTG9jYWxlKCJiciIse21vbnRoczoiR2VudmVyX0NcdTAyYmNod2V2cmVyX01ldXJ6aF9FYnJlbF9NYWVfTWV6aGV2ZW5fR291ZXJlX0Vvc3Rf''@;'; put 'put ''R3dlbmdvbG9fSGVyZV9EdV9LZXJ6dSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiR2VuX0NcdTAyYmNod2VfTWV1X0Vicl9NYWVfRXZlX0dvdV9Fb3NfR3dlX0hlcl9EdV9LZXIiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bF9MdW5fTWV1cnpoX01lcmNcdTAyYmNoZXJfWWFvdV9Hd2VuZXJf''@;'; put 'put ''U2Fkb3JuIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bF9MdW5fTWV1X01lcl9ZYW9fR3dlX1NhZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTHVfTWVfTWVyX1lhX0d3X1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2U6ZWUsZnVsbFdlZWtkYXlzUGFyc2U6Wy9ec3VsL2ks''@;'; put 'put ''L15sdW4vaSwvXm1ldXJ6aC9pLC9ebWVyY1tcdTAyYmNcJ11oZXIvaSwvXnlhb3UvaSwvXmd3ZW5lci9pLC9ec2Fkb3JuL2ldLHNob3J0V2Vla2RheXNQYXJzZTpbL15TdWwvaSwvXkx1bi9pLC9eTWV1L2ksL15NZXIvaSwvXllhby9pLC9eR3dlL2ksL15TYWQvaV0sbWluV2Vla2RheXNQYXJz''@;'; put 'put ''ZTplZSxtb250aHNSZWdleDppZSxtb250aHNTaG9ydFJlZ2V4OmllLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGdlbnZlcnxjW1x1MDJiY1wnXWh3ZXZyZXJ8bWV1cnpofGVicmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1KS9pLG1vbnRoc1Nob3J0U3Ry''@;'; put 'put ''aWN0UmVnZXg6L14oZ2VufGNbXHUwMmJjXCddaHdlfG1ldXxlYnJ8bWFlfGV2ZXxnb3V8ZW9zfGd3ZXxoZXJ8ZHV8a2VyKS9pLG1vbnRoc1BhcnNlOlosbG9uZ01vbnRoc1BhcnNlOlosc2hvcnRNb250aHNQYXJzZTpaLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi''@;'; put 'put ''LEw6IkREL01NL1lZWVkiLExMOiJEIFthIHZpel0gTU1NTSBZWVlZIixMTEw6IkQgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hpeml2IGRhXSBMVCIsbmV4dERheToiW1dhcmNcdTAy''@;'; put 'put ''YmNob2F6aCBkYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtkYV0gTFQiLGxhc3REYXk6IltEZWNcdTAyYmNoIGRhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3Bhc2V0IGRhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiYS1iZW5uICVzIixwYXN0OiIlcyBcdTAyYmN6byIs''@;'; put 'put ''czoidW4gbmViZXVkIHNlZ29uZGVubm9ceGY5IixzczoiJWQgZWlsZW5uIixtOiJ1ciB2dW51dGVubiIsbW06QixoOiJ1biBldXIiLGhoOiIlZCBldXIiLGQ6InVuIGRldmV6aCIsZGQ6QixNOiJ1ciBtaXoiLE1NOkIseToidXIgYmxvYXoiLHl5OmZ1bmN0aW9uIEUoSil7c3dpdGNoKE1lKEop''@;'; put 'put ''KXtjYXNlIDE6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA5OnJldHVybiBKKyIgYmxvYXoiO2RlZmF1bHQ6cmV0dXJuIEorIiB2bG9heiJ9fX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShhXHhmMXx2ZXQpLyxvcmRpbmFsOmZ1bmN0aW9uKEope3JldHVybiBKKygxPT09Sj8i''@;'; put 'put ''YVx4ZjEiOiJ2ZXQiKX0sd2Vlazp7ZG93OjEsZG95OjR9LG1lcmlkaWVtUGFyc2U6L2EubS58Zy5tLi8saXNQTTpmdW5jdGlvbihKKXtyZXR1cm4iZy5tLiI9PT1KfSxtZXJpZGllbTpmdW5jdGlvbihKLHNlLGFlKXtyZXR1cm4gSjwxMj8iYS5tLiI6ImcubS4ifX0pfShMKDE1NDM5KSl9LDY0''@;'; put 'put ''NzkyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoTWUsVSxRKXt2YXIgWj1NZSsiICI7c3dpdGNoKFEpe2Nhc2Uic3MiOnJldHVybiBaKygxPT09TWU/InNla3VuZGEiOjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/InNla3VuZGUiOiJzZWt1''@;'; put 'put ''bmRpIik7Y2FzZSJtIjpyZXR1cm4gVT8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gWisoMT09PU1lPyJtaW51dGEiOjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/Im1pbnV0ZSI6Im1pbnV0YSIpO2Nhc2UiaCI6cmV0dXJuIFU/ImplZGFuIHNhdCI6ImplZG5v''@;'; put 'put ''ZyBzYXRhIjtjYXNlImhoIjpyZXR1cm4gWisoMT09PU1lPyJzYXQiOjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/InNhdGEiOiJzYXRpIik7Y2FzZSJkZCI6cmV0dXJuIForKDE9PT1NZT8iZGFuIjoiZGFuYSIpO2Nhc2UiTU0iOnJldHVybiBaKygxPT09TWU/Im1qZXNlYyI6Mj09PU1lfHwzPT09''@;'; put 'put ''TWV8fDQ9PT1NZT8ibWplc2VjYSI6Im1qZXNlY2kiKTtjYXNlInl5IjpyZXR1cm4gWisoMT09PU1lPyJnb2RpbmEiOjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/ImdvZGluZSI6ImdvZGluYSIpfX1nZS5kZWZpbmVMb2NhbGUoImJzIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2Fwcmls''@;'; put 'put ''X21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJz''@;'; put 'put ''ZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV9cdTAxMGRldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX1x1MDEwZGV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vl''@;'; put 'put ''a2RheXNNaW46Im5lX3BvX3V0X3NyX1x1MDEwZGVfcGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1t''@;'; put 'put ''IixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGplbGp1XSBbdV0gTFQi''@;'; put 'put ''O2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmlqZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1XHUwMTBkZXIgdV0gTFQiLGxhc3RXZWVrOmZ1''@;'; put 'put ''bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm9cdTAxNjFsdV0gZGRkZCBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3Byb1x1MDE2''@;'; put 'put ''MWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixzczpCLG06QixtbTpCLGg6QixoaDpCLGQ6ImRhbiIsZGQ6QixNOiJtamVzZWMiLE1NOkIseToiZ29kaW51Iix5eTpCfSxk''@;'; put 'put ''YXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNDc5ODA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJjYSIse21vbnRoczp7c3Rh''@;'; put 'put ''bmRhbG9uZToiZ2VuZXJfZmVicmVyX21hclx4ZTdfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1YnJlX25vdmVtYnJlX2Rlc2VtYnJlIi5zcGxpdCgiXyIpLGZvcm1hdDoiZGUgZ2VuZXJfZGUgZmVicmVyX2RlIG1hclx4ZTdfZCdhYnJpbF9kZSBtYWlnX2RlIGp1''@;'; put 'put ''bnlfZGUganVsaW9sX2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9EW29EXT8oXHMpK01NTU0vfSxtb250aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXJceGU3X2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3Nl''@;'; put 'put ''dC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGl1bWVuZ2VfZGlsbHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19kaXZlbmRyZXNfZGlzc2FidGUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGcuX2RsLl9kdC5fZGMuX2Rq''@;'; put 'put ''Ll9kdi5fZHMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkZ19kbF9kdF9kY19kal9kdl9kcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW2RlXSBZWVlZ''@;'; put 'put ''IixsbDoiRCBNTU0gWVlZWSIsTExMOiJEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbSIsbGxsOiJEIE1NTSBZWVlZLCBIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIlthdnVpIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2RlbVx4ZTAgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4iZGRkZCBbYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYWhpciBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQg''@;'; put 'put ''W3Bhc3NhdCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkJ2FxdVx4ZWQgJXMiLHBhc3Q6ImZhICVzIixzOiJ1bnMgc2Vnb25zIixzczoiJWQgc2Vnb25zIixtOiJ1biBtaW51dCIsbW06IiVkIG1p''@;'; put 'put ''bnV0cyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JlcyIsZDoidW4gZGlhIixkZDoiJWQgZGllcyIsTToidW4gbWVzIixNTToiJWQgbWVzb3MiLHk6InVuIGFueSIseXk6IiVkIGFueXMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fFx4ZTh8YSkvLG9yZGluYWw6ZnVu''@;'; put 'put ''Y3Rpb24oRSxNZSl7dmFyIFU9MT09PUU/InIiOjI9PT1FPyJuIjozPT09RT8iciI6ND09PUU/InQiOiJceGU4IjtyZXR1cm4oInciPT09TWV8fCJXIj09PU1lKSYmKFU9ImEiKSxFK1V9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDQ3MzIyOmZ1bmN0aW9uKFhlLEplLEwpeyFm''@;'; put 'put ''dW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXtmb3JtYXQ6ImxlZGVuX1x4ZmFub3JfYlx1MDE1OWV6ZW5fZHViZW5fa3ZcdTAxMWJ0ZW5fXHUwMTBkZXJ2ZW5fXHUwMTBkZXJ2ZW5lY19zcnBlbl96XHhlMVx1MDE1OVx4ZWRfXHUwMTU5XHhlZGplbl9saXN0b3BhZF9wcm9zaW5lYyIu''@;'; put 'put ''c3BsaXQoIl8iKSxzdGFuZGFsb25lOiJsZWRuYV9ceGZhbm9yYV9iXHUwMTU5ZXpuYV9kdWJuYV9rdlx1MDExYnRuYV9cdTAxMGRlcnZuYV9cdTAxMGRlcnZlbmNlX3NycG5hX3pceGUxXHUwMTU5XHhlZF9cdTAxNTlceGVkam5hX2xpc3RvcGFkdV9wcm9zaW5jZSIuc3BsaXQoIl8iKX0sRT0i''@;'; put 'put ''bGVkX1x4ZmFub19iXHUwMTU5ZV9kdWJfa3ZcdTAxMWJfXHUwMTBkdm5fXHUwMTBkdmNfc3JwX3pceGUxXHUwMTU5X1x1MDE1OVx4ZWRqX2xpc19wcm8iLnNwbGl0KCJfIiksTWU9Wy9ebGVkL2ksL15ceGZhbm8vaSwvXmJcdTAxNTllL2ksL15kdWIvaSwvXmt2XHUwMTFiL2ksL14oXHUwMTBk''@;'; put 'put ''dm58XHUwMTBkZXJ2ZW4kfFx1MDEwZGVydm5hKS9pLC9eKFx1MDEwZHZjfFx1MDEwZGVydmVuZWN8XHUwMTBkZXJ2ZW5jZSkvaSwvXnNycC9pLC9eelx4ZTFcdTAxNTkvaSwvXlx1MDE1OVx4ZWRqL2ksL15saXMvaSwvXnByby9pXSxVPS9eKGxlZGVufFx4ZmFub3J8Ylx1MDE1OWV6ZW58ZHVi''@;'; put 'put ''ZW58a3ZcdTAxMWJ0ZW58XHUwMTBkZXJ2ZW5lY3xcdTAxMGRlcnZlbmNlfFx1MDEwZGVydmVufFx1MDEwZGVydm5hfHNycGVufHpceGUxXHUwMTU5XHhlZHxcdTAxNTlceGVkamVufGxpc3RvcGFkfHByb3NpbmVjfGxlZHxceGZhbm98Ylx1MDE1OWV8ZHVifGt2XHUwMTFifFx1MDEwZHZufFx1''@;'; put 'put ''MDEwZHZjfHNycHx6XHhlMVx1MDE1OXxcdTAxNTlceGVkanxsaXN8cHJvKS9pO2Z1bmN0aW9uIFEobGUpe3JldHVybiBsZT4xJiZsZTw1JiYxIT1+fihsZS8xMCl9ZnVuY3Rpb24gWihsZSxZLFcsTil7dmFyIGVlPWxlKyIgIjtzd2l0Y2goVyl7Y2FzZSJzIjpyZXR1cm4gWXx8Tj8icFx4ZTFy''@;'; put 'put ''IHNla3VuZCI6InBceGUxciBzZWt1bmRhbWkiO2Nhc2Uic3MiOnJldHVybiBZfHxOP2VlKyhRKGxlKT8ic2VrdW5keSI6InNla3VuZCIpOmVlKyJzZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIFk/Im1pbnV0YSI6Tj8ibWludXR1IjoibWludXRvdSI7Y2FzZSJtbSI6cmV0dXJuIFl8fE4/ZWUr''@;'; put 'put ''KFEobGUpPyJtaW51dHkiOiJtaW51dCIpOmVlKyJtaW51dGFtaSI7Y2FzZSJoIjpyZXR1cm4gWT8iaG9kaW5hIjpOPyJob2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4gWXx8Tj9lZSsoUShsZSk/ImhvZGlueSI6ImhvZGluIik6ZWUrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBZ''@;'; put 'put ''fHxOPyJkZW4iOiJkbmVtIjtjYXNlImRkIjpyZXR1cm4gWXx8Tj9lZSsoUShsZSk/ImRueSI6ImRuXHhlZCIpOmVlKyJkbnkiO2Nhc2UiTSI6cmV0dXJuIFl8fE4/Im1cdTAxMWJzXHhlZGMiOiJtXHUwMTFic1x4ZWRjZW0iO2Nhc2UiTU0iOnJldHVybiBZfHxOP2VlKyhRKGxlKT8ibVx1MDEx''@;'; put 'put ''YnNceGVkY2UiOiJtXHUwMTFic1x4ZWRjXHUwMTZmIik6ZWUrIm1cdTAxMWJzXHhlZGNpIjtjYXNlInkiOnJldHVybiBZfHxOPyJyb2siOiJyb2tlbSI7Y2FzZSJ5eSI6cmV0dXJuIFl8fE4/ZWUrKFEobGUpPyJyb2t5IjoibGV0Iik6ZWUrImxldHkifX1nZS5kZWZpbmVMb2NhbGUoImNzIix7''@;'; put 'put ''bW9udGhzOkIsbW9udGhzU2hvcnQ6RSxtb250aHNSZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihsZWRlbnxsZWRuYXxceGZhbm9yYXxceGZhbm9yfGJcdTAxNTllemVufGJcdTAxNTllem5hfGR1YmVufGR1Ym5hfGt2XHUwMTFidGVufGt2XHUwMTFidG5h''@;'; put 'put ''fFx1MDEwZGVydmVuZWN8XHUwMTBkZXJ2ZW5jZXxcdTAxMGRlcnZlbnxcdTAxMGRlcnZuYXxzcnBlbnxzcnBuYXx6XHhlMVx1MDE1OVx4ZWR8XHUwMTU5XHhlZGplbnxcdTAxNTlceGVkam5hfGxpc3RvcGFkdXxsaXN0b3BhZHxwcm9zaW5lY3xwcm9zaW5jZSkvaSxtb250aHNTaG9ydFN0cmlj''@;'; put 'put ''dFJlZ2V4Oi9eKGxlZHxceGZhbm98Ylx1MDE1OWV8ZHVifGt2XHUwMTFifFx1MDEwZHZufFx1MDEwZHZjfHNycHx6XHhlMVx1MDE1OXxcdTAxNTlceGVkanxsaXN8cHJvKS9pLG1vbnRoc1BhcnNlOk1lLGxvbmdNb250aHNQYXJzZTpNZSxzaG9ydE1vbnRoc1BhcnNlOk1lLHdlZWtkYXlzOiJu''@;'; put 'put ''ZWRcdTAxMWJsZV9wb25kXHUwMTFibFx4ZWRfXHhmYXRlclx4ZmRfc3RcdTAxNTllZGFfXHUwMTBkdHZydGVrX3BceGUxdGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb19ceGZhdF9zdF9cdTAxMGR0X3BceGUxX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJu''@;'; put 'put ''ZV9wb19ceGZhdF9zdF9cdTAxMGR0X3BceGUxX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBI''@;'; put 'put ''Om1tIixsOiJELiBNLiBZWVlZIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkbmVzIHZdIExUIixuZXh0RGF5OiJbelx4ZWR0cmEgdl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3YgbmVkXHUwMTFibGkgdl0gTFQiO2Nhc2UgMTpjYXNl''@;'; put 'put ''IDI6cmV0dXJuIlt2XSBkZGRkIFt2XSBMVCI7Y2FzZSAzOnJldHVybiJbdmUgc3RcdTAxNTllZHUgdl0gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZlIFx1MDEwZHR2cnRlayB2XSBMVCI7Y2FzZSA1OnJldHVybiJbdiBwXHhlMXRlayB2XSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgdl0gTFQi''@;'; put 'put ''fX0sbGFzdERheToiW3ZcdTAxMGRlcmEgdl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsb3UgbmVkXHUwMTFibGkgdl0gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlttaW51bFx4ZTldIGRkZGQgW3ZdIExUIjtjYXNlIDM6''@;'; put 'put ''cmV0dXJuIlttaW51bG91IHN0XHUwMTU5ZWR1IHZdIExUIjtjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWxceGZkXSBkZGRkIFt2XSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWxvdSBzb2JvdHUgdl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBh''@;'; put 'put ''c3Q6InBcdTAxNTllZCAlcyIsczpaLHNzOlosbTpaLG1tOlosaDpaLGhoOlosZDpaLGRkOlosTTpaLE1NOloseTpaLHl5Olp9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw5MDM2NTpmdW5j''@;'; put 'put ''dGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImN2Iix7bW9udGhzOiJcdTA0M2FcdTA0ZDFcdTA0NDBcdTA0M2JcdTA0MzBcdTA0NDdfXHUwNDNkXHUwNDMwXHUwNDQwXHUwNGQxXHUwNDQxX1x1MDQzZlx1MDQ0M1x1MDQ0OF9cdTA0MzBc''@;'; put 'put ''dTA0M2FcdTA0MzBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDRhYlx1MDRkN1x1MDQ0MFx1MDQ0Mlx1MDQzY1x1MDQzNV9cdTA0NDNcdTA0NDJcdTA0ZDFfXHUwNGFiXHUwNDQzXHUwNDQwXHUwNDNiXHUwNDMwX1x1MDQzMFx1MDQzMlx1MDRkMVx1MDQzZF9cdTA0NGVcdTA0M2ZcdTA0MzBfXHUw''@;'; put 'put ''NDQ3XHUwNGYzXHUwNDNhX1x1MDQ0MFx1MDQzMFx1MDQ0OFx1MDQ0Mlx1MDQzMFx1MDQzMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDNhXHUwNGQxXHUwNDQwX1x1MDQzZFx1MDQzMFx1MDQ0MF9cdTA0M2ZcdTA0NDNcdTA0NDhfXHUwNDMwXHUwNDNhXHUwNDMwX1x1MDQzY1x1MDQz''@;'; put 'put ''MFx1MDQzOV9cdTA0YWJcdTA0ZDdcdTA0NDBfXHUwNDQzXHUwNDQyXHUwNGQxX1x1MDRhYlx1MDQ0M1x1MDQ0MF9cdTA0MzBcdTA0MzJcdTA0M2RfXHUwNDRlXHUwNDNmXHUwNDMwX1x1MDQ0N1x1MDRmM1x1MDQzYV9cdTA0NDBcdTA0MzBcdTA0NDgiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1''@;'; put 'put ''MDQzMlx1MDQ0Ylx1MDQ0MFx1MDQ0MVx1MDQzMFx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NDJcdTA0NDNcdTA0M2RcdTA0NDJcdTA0MzhcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDRiXHUwNDQyXHUwNDNiXHUwNDMwXHUwNDQwXHUwNDM4XHUwNDNhXHUwNDQzXHUw''@;'; put 'put ''NDNkX1x1MDQ0ZVx1MDQzZFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0M2FcdTA0ZDdcdTA0YWJcdTA0M2RcdTA0MzVcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDRkXHUwNDQwXHUwNDNkXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQ0OFx1MDRkMVx1MDQzY1x1''@;'; put 'put ''MDQzMFx1MDQ0Mlx1MDQzYVx1MDQ0M1x1MDQzZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0MzJcdTA0NGJcdTA0NDBfXHUwNDQyXHUwNDQzXHUwNDNkX1x1MDQ0Ylx1MDQ0Mlx1MDQzYl9cdTA0NGVcdTA0M2RfXHUwNDNhXHUwNGQ3XHUwNGFiX1x1MDQ0ZFx1MDQ0MFx1MDQzZF9c''@;'; put 'put ''dTA0NDhcdTA0ZDFcdTA0M2MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzMlx1MDQ0MF9cdTA0NDJcdTA0M2RfXHUwNDRiXHUwNDQyX1x1MDQ0ZVx1MDQzZF9cdTA0M2FcdTA0YWJfXHUwNDRkXHUwNDQwX1x1MDQ0OFx1MDQzYyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6''@;'; put 'put ''IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiWVlZWSBbXHUwNGFiXHUwNDQzXHUwNDNiXHUwNDQ1XHUwNDM4XSBNTU1NIFtcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDVcdTA0ZDdcdTA0M2RdIERbLVx1MDQzY1x1MDRkN1x1MDQ0OFx1MDRkN10iLExMTDoiWVlZWSBb''@;'; put 'put ''XHUwNGFiXHUwNDQzXHUwNDNiXHUwNDQ1XHUwNDM4XSBNTU1NIFtcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDVcdTA0ZDdcdTA0M2RdIERbLVx1MDQzY1x1MDRkN1x1MDQ0OFx1MDRkN10sIEhIOm1tIixMTExMOiJkZGRkLCBZWVlZIFtcdTA0YWJcdTA0NDNcdTA0M2JcdTA0NDVcdTA0MzhdIE1N''@;'; put 'put ''TU0gW1x1MDQ0M1x1MDQzOVx1MDRkMVx1MDQ0NVx1MDRkN1x1MDQzZF0gRFstXHUwNDNjXHUwNGQ3XHUwNDQ4XHUwNGQ3XSwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxZlx1MDQzMFx1MDQ0Zlx1MDQzZF0gTFQgW1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0''@;'; put 'put ''MFx1MDQzNV0iLG5leHREYXk6IltcdTA0MmJcdTA0NDBcdTA0MzBcdTA0M2RdIExUIFtcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixsYXN0RGF5OiJbXHUwNGQ2XHUwNDNkXHUwNDM1XHUwNDQwXSBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQy''@;'; put 'put ''XHUwNDQwXHUwNDM1XSIsbmV4dFdlZWs6IltcdTA0YWFcdTA0MzhcdTA0NDJcdTA0MzVcdTA0NDFdIGRkZGQgTFQgW1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLGxhc3RXZWVrOiJbXHUwNDE4XHUwNDQwXHUwNDQyXHUwNDNkXHUwNGQ3XSBkZGRkIExUIFtc''@;'; put 'put ''dTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uKEUpe3JldHVybiBFKygvXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyJC9pLmV4ZWMoRSk/Ilx1MDQ0MFx1MDQzNVx1MDQzZCI6''@;'; put 'put ''L1x1MDRhYlx1MDQ0M1x1MDQzYiQvaS5leGVjKEUpPyJcdTA0NDJcdTA0MzBcdTA0M2QiOiJcdTA0NDBcdTA0MzBcdTA0M2QiKX0scGFzdDoiJXMgXHUwNDNhXHUwNDMwXHUwNDRmXHUwNDNiXHUwNDNiXHUwNDMwIixzOiJcdTA0M2ZcdTA0ZDdcdTA0NDAtXHUwNDM4XHUwNDNhIFx1MDRhYlx1''@;'; put 'put ''MDQzNVx1MDQzYVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQ0MiIsc3M6IiVkIFx1MDRhYlx1MDQzNVx1MDQzYVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQ0MiIsbToiXHUwNDNmXHUwNGQ3XHUwNDQwIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsbW06IiVkIFx1MDQzY1x1MDQzOFx1MDQz''@;'; put 'put ''ZFx1MDQ0M1x1MDQ0MiIsaDoiXHUwNDNmXHUwNGQ3XHUwNDQwIFx1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0MiIsZDoiXHUwNDNmXHUwNGQ3XHUwNDQwIFx1MDQzYVx1MDQ0M1x1MDQzZCIsZGQ6IiVkIFx1MDQzYVx1''@;'; put 'put ''MDQ0M1x1MDQzZCIsTToiXHUwNDNmXHUwNGQ3XHUwNDQwIFx1MDQ0M1x1MDQzOVx1MDRkMVx1MDQ0NSIsTU06IiVkIFx1MDQ0M1x1MDQzOVx1MDRkMVx1MDQ0NSIseToiXHUwNDNmXHUwNGQ3XHUwNDQwIFx1MDRhYlx1MDQ0M1x1MDQzYiIseXk6IiVkIFx1MDRhYlx1MDQ0M1x1MDQzYiJ9LGRh''@;'; put 'put ''eU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tXHUwNDNjXHUwNGQ3XHUwNDQ4LyxvcmRpbmFsOiIlZC1cdTA0M2NcdTA0ZDdcdTA0NDgiLHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDMyMDkyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O2dlLmRlZmluZUxvY2FsZSgiY3kiLHttb250aHM6IklvbmF3cl9DaHdlZnJvcl9NYXdydGhfRWJyaWxsX01haV9NZWhlZmluX0dvcmZmZW5uYWZfQXdzdF9NZWRpX0h5ZHJlZl9UYWNod2VkZF9SaGFnZnlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJJb25fQ2h3ZV9NYXdfRWJyX01haV9N''@;'; put 'put ''ZWhfR29yX0F3c19NZWRfSHlkX1RhY2hfUmhhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRHlkZCBTdWxfRHlkZCBMbHVuX0R5ZGQgTWF3cnRoX0R5ZGQgTWVyY2hlcl9EeWRkIElhdV9EeWRkIEd3ZW5lcl9EeWRkIFNhZHdybiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdWxfTGx1bl9N''@;'; put 'put ''YXdfTWVyX0lhdV9Hd2VfU2FkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9MbF9NYV9NZV9JYV9Hd19TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGVkZGl3IGFtXSBMVCIsbmV4dERheToiW1lmb3J5IGFtXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FtXSBMVCIsbGFzdERheToiW0Rkb2UgYW1d''@;'; put 'put ''IExUIixsYXN0V2VlazoiZGRkZCBbZGl3ZXRoYWYgYW1dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJtZXduICVzIixwYXN0OiIlcyB5biBceGY0bCIsczoieWNoeWRpZyBlaWxpYWRhdSIsc3M6IiVkIGVpbGlhZCIsbToibXVudWQiLG1tOiIlZCBtdW51ZCIsaDoi''@;'; put 'put ''YXdyIixoaDoiJWQgYXdyIixkOiJkaXdybm9kIixkZDoiJWQgZGl3cm5vZCIsTToibWlzIixNTToiJWQgbWlzIix5OiJibHd5ZGR5biIseXk6IiVkIGZseW5lZGQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGZlZHxhaW58YWZ8aWx8eWRkfGVkfGVnKS8sb3JkaW5hbDpmdW5j''@;'; put 'put ''dGlvbihFKXt2YXIgVT0iIjtyZXR1cm4gRT4yMD9VPTQwPT09RXx8NTA9PT1FfHw2MD09PUV8fDgwPT09RXx8MTAwPT09RT8iZmVkIjoiYWluIjpFPjAmJihVPVsiIiwiYWYiLCJpbCIsInlkZCIsInlkZCIsImVkIiwiZWQiLCJlZCIsImZlZCIsImZlZCIsImZlZCIsImVnIiwiZmVkIiwiZWci''@;'; put 'put ''LCJlZyIsImZlZCIsImVnIiwiZWciLCJmZWQiLCJlZyIsImZlZCJdW0VdKSxFK1V9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDc3Mzg3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiZGEiLHttb250aHM6Imph''@;'; put 'put ''bnVhcl9mZWJydWFyX21hcnRzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5czoic1x4ZjhuZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sXHhmOHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic1x4ZjhuX21hbl90aXJfb25zX3Rvcl9mcmVfbFx4ZjhyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzXHhmOF9tYV90''@;'; put 'put ''aV9vbl90b19mcl9sXHhmOCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBbZC5dIEQuIE1NTU0gWVlZWSBba2wuXSBI''@;'; put 'put ''SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSBkYWcga2wuXSBMVCIsbmV4dERheToiW2kgbW9yZ2VuIGtsLl0gTFQiLG5leHRXZWVrOiJwXHhlNSBkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbaSBnXHhlNXIga2wuXSBMVCIsbGFzdFdlZWs6IltpXSBkZGRkW3Mga2wuXSBMVCIsc2FtZUVs''@;'; put 'put ''c2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGVuIixzOiJmXHhlNSBzZWt1bmRlciIsc3M6IiVkIHNla3VuZGVyIixtOiJldCBtaW51dCIsbW06IiVkIG1pbnV0dGVyIixoOiJlbiB0aW1lIixoaDoiJWQgdGltZXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRh''@;'; put 'put ''Z2UiLE06ImVuIG1ceGU1bmVkIixNTToiJWQgbVx4ZTVuZWRlciIseToiZXQgXHhlNXIiLHl5OiIlZCBceGU1ciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwyOTQ1OTpmdW5jdGlvbihY''@;'; put 'put ''ZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKE1lLFUsUSxaKXt2YXIgaWU9e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVpbmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFnIiwiZWluZW0gVGFnIl0sZGQ6W01lKyIg''@;'; put 'put ''VGFnZSIsTWUrIiBUYWdlbiJdLHc6WyJlaW5lIFdvY2hlIiwiZWluZXIgV29jaGUiXSxNOlsiZWluIE1vbmF0IiwiZWluZW0gTW9uYXQiXSxNTTpbTWUrIiBNb25hdGUiLE1lKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbTWUrIiBKYWhyZSIsTWUrIiBKYWhy''@;'; put 'put ''ZW4iXX07cmV0dXJuIFU/aWVbUV1bMF06aWVbUV1bMV19Z2UuZGVmaW5lTG9jYWxlKCJkZS1hdCIse21vbnRoczoiSlx4ZTRubmVyX0ZlYnJ1YXJfTVx4ZTRyel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8i''@;'; put 'put ''KSxtb250aHNTaG9ydDoiSlx4ZTRuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFn''@;'; put 'put ''X0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1h''@;'; put 'put ''dDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltoZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVF''@;'; put 'put ''bHNlOiJMIixuZXh0RGF5OiJbbW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW2dlc3Rlcm4gdW1dIExUIFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJp''@;'; put 'put ''biAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsc3M6IiVkIFNla3VuZGVuIixtOkIsbW06IiVkIE1pbnV0ZW4iLGg6QixoaDoiJWQgU3R1bmRlbiIsZDpCLGRkOkIsdzpCLHd3OiIlZCBXb2NoZW4iLE06QixNTTpCLHk6Qix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBh''@;'; put 'put ''cnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNjcyNDM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihNZSxVLFEsWil7dmFyIGllPXttOlsiZWluZSBNaW51dGUiLCJlaW5l''@;'; put 'put ''ciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOltNZSsiIFRhZ2UiLE1lKyIgVGFnZW4iXSx3OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W01l''@;'; put 'put ''KyIgTW9uYXRlIixNZSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W01lKyIgSmFocmUiLE1lKyIgSmFocmVuIl19O3JldHVybiBVP2llW1FdWzBdOmllW1FdWzFdfWdlLmRlZmluZUxvY2FsZSgiZGUtY2giLHttb250aHM6IkphbnVhcl9GZWJydWFyX01ceGU0''@;'; put 'put ''cnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmViLl9NXHhlNHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiks''@;'; put 'put ''bW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNv''@;'; put 'put ''X01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwg''@;'; put 'put ''RC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltoZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbbW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW2dlc3Rlcm4gdW1dIExUIFtVaHJd''@;'; put 'put ''IixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsc3M6IiVkIFNla3VuZGVuIixtOkIsbW06IiVkIE1pbnV0ZW4iLGg6QixoaDoiJWQgU3R1bmRlbiIs''@;'; put 'put ''ZDpCLGRkOkIsdzpCLHd3OiIlZCBXb2NoZW4iLE06QixNTTpCLHk6Qix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNTQzMDc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdl''@;'; put 'put ''KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihNZSxVLFEsWil7dmFyIGllPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOltNZSsiIFRhZ2UiLE1lKyIgVGFnZW4iXSx3''@;'; put 'put ''OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W01lKyIgTW9uYXRlIixNZSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W01lKyIgSmFocmUiLE1lKyIgSmFocmVuIl19O3JldHVybiBVP2llW1Fd''@;'; put 'put ''WzBdOmllW1FdWzFdfWdlLmRlZmluZUxvY2FsZSgiZGUiLHttb250aHM6IkphbnVhcl9GZWJydWFyX01ceGU0cnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmViLl9N''@;'; put 'put ''XHhlNHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0g''@;'; put 'put ''TFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBh''@;'; put 'put ''YXIgU2VrdW5kZW4iLHNzOiIlZCBTZWt1bmRlbiIsbTpCLG1tOiIlZCBNaW51dGVuIixoOkIsaGg6IiVkIFN0dW5kZW4iLGQ6QixkZDpCLHc6Qix3dzoiJWQgV29jaGVuIixNOkIsTU06Qix5OkIseXk6Qn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4i''@;'; put 'put ''LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDM5NjU5OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPVsiXHUwNzk2XHUwN2FjXHUwNzgyXHUwN2FhXHUwNzg3XHUwN2E2XHUwNzgzXHUwN2E5IiwiXHUwNzhhXHUwN2FjXHUwNzg0XHUw''@;'; put 'put ''N2IwXHUwNzgzXHUwN2FhXHUwNzg3XHUwN2E2XHUwNzgzXHUwN2E5IiwiXHUwNzg5XHUwN2E3XHUwNzgzXHUwN2E4XHUwNzk3XHUwN2FhIiwiXHUwNzg3XHUwN2FkXHUwNzk1XHUwN2IwXHUwNzgzXHUwN2E5XHUwNzhkXHUwN2FhIiwiXHUwNzg5XHUwN2FkIiwiXHUwNzk2XHUwN2FiXHUwNzgy''@;'; put 'put ''XHUwN2IwIiwiXHUwNzk2XHUwN2FhXHUwNzhkXHUwN2E2XHUwNzg3XHUwN2E4IiwiXHUwNzg3XHUwN2FmXHUwNzhlXHUwN2E2XHUwNzkwXHUwN2IwXHUwNzkzXHUwN2FhIiwiXHUwNzkwXHUwN2FjXHUwNzk1XHUwN2IwXHUwNzkzXHUwN2FjXHUwNzg5XHUwN2IwXHUwNzg0XHUwN2E2XHUwNzgz''@;'; put 'put ''XHUwN2FhIiwiXHUwNzg3XHUwN2FlXHUwNzg2XHUwN2IwXHUwNzkzXHUwN2FmXHUwNzg0XHUwN2E2XHUwNzgzXHUwN2FhIiwiXHUwNzgyXHUwN2FlXHUwNzg4XHUwN2FjXHUwNzg5XHUwN2IwXHUwNzg0XHUwN2E2XHUwNzgzXHUwN2FhIiwiXHUwNzkxXHUwN2E4XHUwNzkwXHUwN2FjXHUwNzg5''@;'; put 'put ''XHUwN2IwXHUwNzg0XHUwN2E2XHUwNzgzXHUwN2FhIl0sRT1bIlx1MDc4N1x1MDdhN1x1MDc4Ylx1MDdhOFx1MDc4N1x1MDdiMFx1MDc4Y1x1MDdhNiIsIlx1MDc4MFx1MDdhZlx1MDc4OVx1MDdhNiIsIlx1MDc4N1x1MDdhNlx1MDc4Mlx1MDdiMFx1MDc4ZVx1MDdhN1x1MDc4M1x1MDdhNiIs''@;'; put 'put ''Ilx1MDc4NFx1MDdhYVx1MDc4Ylx1MDdhNiIsIlx1MDc4NFx1MDdhYVx1MDc4M1x1MDdhN1x1MDc5MFx1MDdiMFx1MDc4YVx1MDdhNlx1MDc4Y1x1MDdhOCIsIlx1MDc4MFx1MDdhYVx1MDc4Nlx1MDdhYVx1MDc4M1x1MDdhYSIsIlx1MDc4MFx1MDdhZVx1MDc4Mlx1MDdhOFx1MDc4MFx1MDdh''@;'; put 'put ''OFx1MDc4M1x1MDdhYSJdO2dlLmRlZmluZUxvY2FsZSgiZHYiLHttb250aHM6Qixtb250aHNTaG9ydDpCLHdlZWtkYXlzOkUsd2Vla2RheXNTaG9ydDpFLHdlZWtkYXlzTWluOiJcdTA3ODdcdTA3YTdcdTA3OGJcdTA3YThfXHUwNzgwXHUwN2FmXHUwNzg5XHUwN2E2X1x1MDc4N1x1MDdhNlx1''@;'; put 'put ''MDc4Mlx1MDdiMF9cdTA3ODRcdTA3YWFcdTA3OGJcdTA3YTZfXHUwNzg0XHUwN2FhXHUwNzgzXHUwN2E3X1x1MDc4MFx1MDdhYVx1MDc4Nlx1MDdhYV9cdTA3ODBcdTA3YWVcdTA3ODJcdTA3YTgiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiRC9NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDc4OVx1MDc4NnxcdTA3ODlcdTA3OGEvLGlzUE06ZnVuY3Rpb24oVSl7cmV0dXJuIlx1MDc4OVx1MDc4YSI9''@;'; put 'put ''PT1VfSxtZXJpZGllbTpmdW5jdGlvbihVLFEsWil7cmV0dXJuIFU8MTI/Ilx1MDc4OVx1MDc4NiI6Ilx1MDc4OVx1MDc4YSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNzg5XHUwN2E4XHUwNzg3XHUwN2E2XHUwNzhiXHUwN2FhXSBMVCIsbmV4dERheToiW1x1MDc4OVx1MDdhN1x1MDc4Ylx1''@;'; put 'put ''MDdhNlx1MDc4OVx1MDdhN10gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbXHUwNzg3XHUwN2E4XHUwNzg3XHUwN2IwXHUwNzk0XHUwN2FjXSBMVCIsbGFzdFdlZWs6IltcdTA3OGFcdTA3YTdcdTA3ODdcdTA3YThcdTA3OGNcdTA3YWFcdTA3ODhcdTA3YThdIGRkZGQgTFQiLHNh''@;'; put 'put ''bWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDc4Y1x1MDdhY1x1MDc4M1x1MDdhZFx1MDc4ZVx1MDdhNlx1MDc4N1x1MDdhOCAlcyIscGFzdDoiXHUwNzg2XHUwN2FhXHUwNzgzXHUwN2E4XHUwNzgyXHUwN2IwICVzIixzOiJcdTA3OTBcdTA3YThcdTA3ODZcdTA3YWFcdTA3''@;'; put 'put ''ODJcdTA3YjBcdTA3OGNcdTA3YWFcdTA3ODZcdTA3YWVcdTA3ODVcdTA3YWNcdTA3ODdcdTA3YjAiLHNzOiJkJSBcdTA3OTBcdTA3YThcdTA3ODZcdTA3YWFcdTA3ODJcdTA3YjBcdTA3OGNcdTA3YWEiLG06Ilx1MDc4OVx1MDdhOFx1MDc4Mlx1MDdhOFx1MDc5M1x1MDdhY1x1MDc4N1x1MDdi''@;'; put 'put ''MCIsbW06Ilx1MDc4OVx1MDdhOFx1MDc4Mlx1MDdhOFx1MDc5M1x1MDdhYSAlZCIsaDoiXHUwNzhlXHUwN2E2XHUwNzkxXHUwN2E4XHUwNzg3XHUwN2E4XHUwNzgzXHUwN2FjXHUwNzg3XHUwN2IwIixoaDoiXHUwNzhlXHUwN2E2XHUwNzkxXHUwN2E4XHUwNzg3XHUwN2E4XHUwNzgzXHUwN2Fh''@;'; put 'put ''ICVkIixkOiJcdTA3OGJcdTA3YWFcdTA3ODhcdTA3YTZcdTA3ODBcdTA3YWNcdTA3ODdcdTA3YjAiLGRkOiJcdTA3OGJcdTA3YWFcdTA3ODhcdTA3YTZcdTA3OTBcdTA3YjAgJWQiLE06Ilx1MDc4OVx1MDdhNlx1MDc4MFx1MDdhY1x1MDc4N1x1MDdiMCIsTU06Ilx1MDc4OVx1MDdhNlx1MDc5''@;'; put 'put ''MFx1MDdiMCAlZCIseToiXHUwNzg3XHUwN2E2XHUwNzgwXHUwN2E2XHUwNzgzXHUwN2FjXHUwNzg3XHUwN2IwIix5eToiXHUwNzg3XHUwN2E2XHUwNzgwXHUwN2E2XHUwNzgzXHUwN2FhICVkIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0s''@;'; put 'put ''cG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6Nyxkb3k6MTJ9fSl9KEwoMTU0MzkpKX0sMzQ2MDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImVsIix7bW9u''@;'; put 'put ''dGhzTm9taW5hdGl2ZUVsOiJcdTAzOTlcdTAzYjFcdTAzYmRcdTAzYmZcdTAzYzVcdTAzYWNcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwM2E2XHUwM2I1XHUwM2IyXHUwM2MxXHUwM2JmXHUwM2M1XHUwM2FjXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5Y1x1MDNhY1x1MDNjMVx1''@;'; put 'put ''MDNjNFx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOTFcdTAzYzBcdTAzYzFcdTAzYWZcdTAzYmJcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzljXHUwM2FjXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5OVx1MDNiZlx1MDNjZFx1MDNiZFx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOTlcdTAzYmZcdTAzY2Rc''@;'; put 'put ''dTAzYmJcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzkxXHUwM2NkXHUwM2IzXHUwM2JmXHUwM2M1XHUwM2MzXHUwM2M0XHUwM2JmXHUwM2MyX1x1MDNhM1x1MDNiNVx1MDNjMFx1MDNjNFx1MDNhZFx1MDNiY1x1MDNiMlx1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOWZcdTAzYmFcdTAzYzRc''@;'; put 'put ''dTAzY2VcdTAzYjJcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzlkXHUwM2JmXHUwM2FkXHUwM2JjXHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5NFx1MDNiNVx1MDNiYVx1MDNhZFx1MDNiY1x1MDNiMlx1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMiIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNHZW5pdGl2ZUVsOiJcdTAzOTlcdTAzYjFcdTAzYmRcdTAzYmZcdTAzYzVcdTAzYjFcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwM2E2XHUwM2I1XHUwM2IyXHUwM2MxXHUwM2JmXHUwM2M1XHUwM2IxXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5Y1x1MDNiMVx1MDNjMVx1''@;'; put 'put ''MDNjNFx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOTFcdTAzYzBcdTAzYzFcdTAzYjlcdTAzYmJcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzljXHUwM2IxXHUwMzkwXHUwM2JmXHUwM2M1X1x1MDM5OVx1MDNiZlx1MDNjNVx1MDNiZFx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOTlcdTAzYmZcdTAzYzVc''@;'; put 'put ''dTAzYmJcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzkxXHUwM2M1XHUwM2IzXHUwM2JmXHUwM2NkXHUwM2MzXHUwM2M0XHUwM2JmXHUwM2M1X1x1MDNhM1x1MDNiNVx1MDNjMFx1MDNjNFx1MDNiNVx1MDNiY1x1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOWZcdTAzYmFcdTAzYzRc''@;'; put 'put ''dTAzYzlcdTAzYjJcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzlkXHUwM2JmXHUwM2I1XHUwM2JjXHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5NFx1MDNiNVx1MDNiYVx1MDNiNVx1MDNiY1x1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNSIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHM6ZnVuY3Rpb24oTWUsVSl7cmV0dXJuIE1lPyJzdHJpbmciPT10eXBlb2YgVSYmL0QvLnRlc3QoVS5zdWJzdHJpbmcoMCxVLmluZGV4T2YoIk1NTU0iKSkpP3RoaXMuX21vbnRoc0dlbml0aXZlRWxbTWUubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsW01lLm1vbnRoKCld''@;'; put 'put ''OnRoaXMuX21vbnRoc05vbWluYXRpdmVFbH0sbW9udGhzU2hvcnQ6Ilx1MDM5OVx1MDNiMVx1MDNiZF9cdTAzYTZcdTAzYjVcdTAzYjJfXHUwMzljXHUwM2IxXHUwM2MxX1x1MDM5MVx1MDNjMFx1MDNjMV9cdTAzOWNcdTAzYjFcdTAzY2FfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JkX1x1MDM5''@;'; put 'put ''OVx1MDNiZlx1MDNjNVx1MDNiYl9cdTAzOTFcdTAzYzVcdTAzYjNfXHUwM2EzXHUwM2I1XHUwM2MwX1x1MDM5Zlx1MDNiYVx1MDNjNF9cdTAzOWRcdTAzYmZcdTAzYjVfXHUwMzk0XHUwM2I1XHUwM2JhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTAzOWFcdTAzYzVcdTAzYzFcdTAzYjlcdTAz''@;'; put 'put ''YjFcdTAzYmFcdTAzYWVfXHUwMzk0XHUwM2I1XHUwM2M1XHUwM2M0XHUwM2FkXHUwM2MxXHUwM2IxX1x1MDNhNFx1MDNjMVx1MDNhZlx1MDNjNFx1MDNiN19cdTAzYTRcdTAzYjVcdTAzYzRcdTAzYWNcdTAzYzFcdTAzYzRcdTAzYjdfXHUwM2EwXHUwM2FkXHUwM2JjXHUwM2MwXHUwM2M0XHUw''@;'; put 'put ''M2I3X1x1MDNhMFx1MDNiMVx1MDNjMVx1MDNiMVx1MDNjM1x1MDNiYVx1MDNiNVx1MDNjNVx1MDNhZV9cdTAzYTNcdTAzYWNcdTAzYjJcdTAzYjJcdTAzYjFcdTAzYzRcdTAzYmYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwMzlhXHUwM2M1XHUwM2MxX1x1MDM5NFx1MDNiNVx1MDNj''@;'; put 'put ''NV9cdTAzYTRcdTAzYzFcdTAzYjlfXHUwM2E0XHUwM2I1XHUwM2M0X1x1MDNhMFx1MDNiNVx1MDNiY19cdTAzYTBcdTAzYjFcdTAzYzFfXHUwM2EzXHUwM2IxXHUwM2IyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTAzOWFcdTAzYzVfXHUwMzk0XHUwM2I1X1x1MDNhNFx1MDNjMV9cdTAz''@;'; put 'put ''YTRcdTAzYjVfXHUwM2EwXHUwM2I1X1x1MDNhMFx1MDNiMV9cdTAzYTNcdTAzYjEiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oTWUsVSxRKXtyZXR1cm4gTWU+MTE/UT8iXHUwM2JjXHUwM2JjIjoiXHUwMzljXHUwMzljIjpRPyJcdTAzYzBcdTAzYmMiOiJcdTAzYTBcdTAzOWMifSxp''@;'; put 'put ''c1BNOmZ1bmN0aW9uKE1lKXtyZXR1cm4iXHUwM2JjIj09PShNZSsiIikudG9Mb3dlckNhc2UoKVswXX0sbWVyaWRpZW1QYXJzZTovW1x1MDNhMFx1MDM5Y11cLj9cdTAzOWM/XC4/L2ksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixM''@;'; put 'put ''TDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhckVsOntzYW1lRGF5OiJbXHUwM2EzXHUwM2FlXHUwM2JjXHUwM2I1XHUwM2MxXHUwM2IxIHt9XSBMVCIsbmV4dERheToiW1x1MDM5MVx1MDNjZFx1''@;'; put 'put ''MDNjMVx1MDNiOVx1MDNiZiB7fV0gTFQiLG5leHRXZWVrOiJkZGRkIFt7fV0gTFQiLGxhc3REYXk6IltcdTAzYTdcdTAzYjhcdTAzYjVcdTAzYzIge31dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiA2PT09dGhpcy5kYXkoKT8iW1x1MDNjNFx1MDNiZiBcdTAzYzBcdTAzYzFcdTAz''@;'; put 'put ''YmZcdTAzYjdcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYmNcdTAzYjVcdTAzYmRcdTAzYmZdIGRkZGQgW3t9XSBMVCI6IltcdTAzYzRcdTAzYjdcdTAzYmQgXHUwM2MwXHUwM2MxXHUwM2JmXHUwM2I3XHUwM2IzXHUwM2JmXHUwM2NkXHUwM2JjXHUwM2I1XHUwM2JkXHUwM2I3XSBkZGRkIFt7fV0g''@;'; put 'put ''TFQifSxzYW1lRWxzZToiTCJ9LGNhbGVuZGFyOmZ1bmN0aW9uKE1lLFUpe3ZhciBRPXRoaXMuX2NhbGVuZGFyRWxbTWVdLFo9VSYmVS5ob3VycygpO3JldHVybiBmdW5jdGlvbiBCKE1lKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZ1bmN0aW9uJiZNZSBpbnN0YW5jZW9mIEZ1bmN0aW9u''@;'; put 'put ''fHwiW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE1lKX0oUSkmJihRPVEuYXBwbHkoVSkpLFEucmVwbGFjZSgie30iLFolMTI9PTE/Ilx1MDNjM1x1MDNjNFx1MDNiNyI6Ilx1MDNjM1x1MDNjNFx1MDNiOVx1MDNjMiIpfSxyZWxhdGl2ZVRpbWU6''@;'; put 'put ''e2Z1dHVyZToiXHUwM2MzXHUwM2I1ICVzIixwYXN0OiIlcyBcdTAzYzBcdTAzYzFcdTAzYjlcdTAzYmQiLHM6Ilx1MDNiYlx1MDNhZlx1MDNiM1x1MDNiMSBcdTAzYjRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYjVcdTAzYzFcdTAzY2NcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjEiLHNz''@;'; put 'put ''OiIlZCBcdTAzYjRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYjVcdTAzYzFcdTAzY2NcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjEiLG06Ilx1MDNhZFx1MDNiZFx1MDNiMSBcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzY2MiLG1tOiIlZCBcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRc''@;'; put 'put ''dTAzYWMiLGg6Ilx1MDNiY1x1MDNhZlx1MDNiMSBcdTAzY2VcdTAzYzFcdTAzYjEiLGhoOiIlZCBcdTAzY2VcdTAzYzFcdTAzYjVcdTAzYzIiLGQ6Ilx1MDNiY1x1MDNhZlx1MDNiMSBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjEiLGRkOiIlZCBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjVcdTAz''@;'; put 'put ''YzIiLE06Ilx1MDNhZFx1MDNiZFx1MDNiMVx1MDNjMiBcdTAzYmNcdTAzYWVcdTAzYmRcdTAzYjFcdTAzYzIiLE1NOiIlZCBcdTAzYmNcdTAzYWVcdTAzYmRcdTAzYjVcdTAzYzIiLHk6Ilx1MDNhZFx1MDNiZFx1MDNiMVx1MDNjMiBcdTAzYzdcdTAzYzFcdTAzY2NcdTAzYmRcdTAzYmZcdTAz''@;'; put 'put ''YzIiLHl5OiIlZCBcdTAzYzdcdTAzYzFcdTAzY2NcdTAzYmRcdTAzYjlcdTAzYjEifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHUwM2I3LyxvcmRpbmFsOiIlZFx1MDNiNyIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sOTQzNjk6ZnVuY3Rpb24oWGUsSmUsTCl7''@;'; put 'put ''IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJlbi1hdSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNT''@;'; put 'put ''aG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9N''@;'; put 'put ''b25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBN''@;'; put 'put ''TU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxh''@;'; put 'put ''c3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoi''@;'; put 'put ''JWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgTWU9RSUxMDty''@;'; put 'put ''ZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyJ0aCI6MT09PU1lPyJzdCI6Mj09PU1lPyJuZCI6Mz09PU1lPyJyZCI6InRoIil9LHdlZWs6e2RvdzowLGRveTo0fX0pfShMKDE1NDM5KSl9LDYwNTMwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmlu''@;'; put 'put ''ZUxvY2FsZSgiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9B''@;'; put 'put ''dWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1N''@;'; put 'put ''IEQsIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2Ft''@;'; put 'put ''ZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMi''@;'; put 'put ''LE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9''@;'; put 'put ''PT1NZT8ic3QiOjI9PT1NZT8ibmQiOjM9PT1NZT8icmQiOiJ0aCIpfX0pfShMKDE1NDM5KSl9LDk5OTg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJlbi1nYiIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJp''@;'; put 'put ''bF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25k''@;'; put 'put ''YXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5''@;'; put 'put ''OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEg''@;'; put 'put ''ZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9m''@;'; put 'put ''TW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBNZT1FJTEwO3JldHVybiBFKygxPT1+fihFJTEwMC8xMCk/InRoIjoxPT09TWU/InN0IjoyPT09TWU/Im5kIjozPT09TWU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9''@;'; put 'put ''fSl9KEwoMTU0MzkpKX0sMTMzOTE6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJlbi1pZSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jl''@;'; put 'put ''cl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1Nh''@;'; put 'put ''dHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoi''@;'; put 'put ''REQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0g''@;'; put 'put ''TFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRl''@;'; put 'put ''IixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkv''@;'; put 'put ''LG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1NZT8ic3QiOjI9PT1NZT8ibmQiOjM9PT1NZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw3NTQxNDpmdW5jdGlvbihYZSxKZSxMKXsh''@;'; put 'put ''ZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImVuLWlsIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01v''@;'; put 'put ''bl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1N''@;'; put 'put ''IFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2Vl''@;'; put 'put ''azoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhv''@;'; put 'put ''dXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTA7cmV0dXJu''@;'; put 'put ''IEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1NZT8ic3QiOjI9PT1NZT8ibmQiOjM9PT1NZT8icmQiOiJ0aCIpfX0pfShMKDE1NDM5KSl9LDE5NjE1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiZW4taW4iLHttb250aHM6''@;'; put 'put ''IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dl''@;'; put 'put ''X1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6''@;'; put 'put ''e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1''@;'; put 'put ''dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMi''@;'; put 'put ''LHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1NZT8ic3QiOjI9PT1NZT8ibmQiOjM9PT1N''@;'; put 'put ''ZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSwyMTI0ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImVuLW56Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9K''@;'; put 'put ''dW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVz''@;'; put 'put ''ZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1h''@;'; put 'put ''dDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJb''@;'; put 'put ''VG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3''@;'; put 'put ''IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9u''@;'; put 'put ''dGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBNZT1FJTEwO3JldHVybiBFKygxPT1+fihFJTEwMC8xMCk/InRoIjoxPT09TWU/InN0IjoyPT09TWU/Im5kIjozPT09TWU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9''@;'; put 'put ''KEwoMTU0MzkpKX0sMTM3Njc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJlbi1zZyIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9O''@;'; put 'put ''b3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVy''@;'; put 'put ''ZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQv''@;'; put 'put ''TU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExU''@;'; put 'put ''IixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIs''@;'; put 'put ''bW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxv''@;'; put 'put ''cmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBNZT1FJTEwO3JldHVybiBFKygxPT1+fihFJTEwMC8xMCk/InRoIjoxPT09TWU/InN0IjoyPT09TWU/Im5kIjozPT09TWU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sODQ1MzA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1''@;'; put 'put ''bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJlbyIse21vbnRoczoiamFudWFyb19mZWJydWFyb19tYXJ0b19hcHJpbG9fbWFqb19qdW5pb19qdWxpb19hXHUwMTZkZ3VzdG9fc2VwdGVtYnJvX29rdG9icm9fbm92ZW1icm9fZGVjZW1icm8iLnNwbGl0KCJfIiksbW9u''@;'; put 'put ''dGhzU2hvcnQ6Imphbl9mZWJfbWFydF9hcHJfbWFqX2p1bl9qdWxfYVx1MDE2ZGdfc2VwdF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5cdTAxMDlvX2x1bmRvX21hcmRvX21lcmtyZWRvX1x1MDEzNWFcdTAxNmRkb192ZW5kcmVkb19zYWJhdG8iLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNTaG9ydDoiZGltX2x1bl9tYXJkX21lcmtfXHUwMTM1YVx1MDE2ZF92ZW5fc2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9cdTAxMzVhX3ZlX3NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZ''@;'; put 'put ''WVktTU0tREQiLExMOiJbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZIixMTEw6IltsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0iLExMTEw6ImRkZGRbbl0sIFtsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0iLGxsbGw6ImRkZCwgW2xhXSBEWy1hbiBkZV0gTU1NLCBZWVlZIEhI''@;'; put 'put ''Om1tIn0sbWVyaWRpZW1QYXJzZTovW2FwXVwudFwubS9pLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuInAiPT09RS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRT4xMT9VPyJwLnQubS4iOiJQLlQuTS4iOlU/ImEudC5tLiI6IkEuVC5N''@;'; put 'put ''LiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9kaWFcdTAxNmQgamVdIExUIixuZXh0RGF5OiJbTW9yZ2FcdTAxNmQgamVdIExUIixuZXh0V2VlazoiZGRkZFtuIGplXSBMVCIsbGFzdERheToiW0hpZXJhXHUwMTZkIGplXSBMVCIsbGFzdFdlZWs6IltwYXNpbnRhbl0gZGRkZFtuIGplXSBMVCIs''@;'; put 'put ''c2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicG9zdCAlcyIscGFzdDoiYW50YVx1MDE2ZCAlcyIsczoia2Vsa2FqIHNla3VuZG9qIixzczoiJWQgc2VrdW5kb2oiLG06InVudSBtaW51dG8iLG1tOiIlZCBtaW51dG9qIixoOiJ1bnUgaG9ybyIsaGg6IiVkIGhvcm9qIixkOiJ1''@;'; put 'put ''bnUgdGFnbyIsZGQ6IiVkIHRhZ29qIixNOiJ1bnUgbW9uYXRvIixNTToiJWQgbW9uYXRvaiIseToidW51IGphcm8iLHl5OiIlZCBqYXJvaiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1hLyxvcmRpbmFsOiIlZGEiLHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDE4''@;'; put 'put ''OTQ0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxFPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3Nl''@;'; put 'put ''cF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKSxNZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLFU9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1''@;'; put 'put ''bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtnZS5kZWZpbmVMb2NhbGUoImVzLWRv''@;'; put 'put ''Iix7bW9udGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKFosaWUpe3JldHVybiBaPy8tTU1NLS8udGVzdChpZSk/''@;'; put 'put ''RVtaLm1vbnRoKCldOkJbWi5tb250aCgpXTpCfSxtb250aHNSZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGlj''@;'; put 'put ''aWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6TWUsbG9uZ01vbnRoc1BhcnNlOk1lLHNob3J0TW9u''@;'; put 'put ''dGhzUGFyc2U6TWUsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0g''@;'; put 'put ''TU1NTSBbZGVdIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBh''@;'; put 'put ''IGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVz''@;'; put 'put ''IixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEiLHd3OiIlZCBzZW1h''@;'; put 'put ''bmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDI5MTE2OmZ1bmN0aW9uKFhl''@;'; put 'put ''LEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxFPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIu''@;'; put 'put ''c3BsaXQoIl8iKSxNZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLFU9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0''@;'; put 'put ''b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtnZS5kZWZpbmVMb2NhbGUoImVzLW14Iix7bW9udGhzOiJlbmVy''@;'; put 'put ''b19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKFosaWUpe3JldHVybiBaPy8tTU1NLS8udGVzdChpZSk/RVtaLm1vbnRoKCldOkJb''@;'; put 'put ''Wi5tb250aCgpXTpCfSxtb250aHNSZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRo''@;'; put 'put ''c1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6TWUsbG9uZ01vbnRoc1BhcnNlOk1lLHNob3J0TW9udGhzUGFyc2U6TWUsd2Vl''@;'; put 'put ''a2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVf''@;'; put 'put ''bWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1t''@;'; put 'put ''IixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hXHhmMWFuYSBhIGxh''@;'; put 'put ''IisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/''@;'; put 'put ''InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5v''@;'; put 'put ''cyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkXHhlZGEiLGRkOiIlZCBkXHhlZGFzIix3OiJ1bmEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW4gbWVzIixNTToiJWQg''@;'; put 'put ''bWVzZXMiLHk6InVuIGFceGYxbyIseXk6IiVkIGFceGYxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MCxkb3k6NH0saW52YWxpZERhdGU6IkZlY2hhIGludlx4ZTFsaWRhIn0pfShMKDE1NDM5KSl9LDgzNjA5OmZ1''@;'; put 'put ''bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxFPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rf''@;'; put 'put ''bm92X2RpYyIuc3BsaXQoIl8iKSxNZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLFU9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1''@;'; put 'put ''bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtnZS5kZWZpbmVMb2NhbGUoImVzLXVzIix7bW9u''@;'; put 'put ''dGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKFosaWUpe3JldHVybiBaPy8tTU1NLS8udGVzdChpZSk/RVtaLm1v''@;'; put 'put ''bnRoKCldOkJbWi5tb250aCgpXTpCfSxtb250aHNSZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJl''@;'; put 'put ''KS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6TWUsbG9uZ01vbnRoc1BhcnNlOk1lLHNob3J0TW9udGhzUGFy''@;'; put 'put ''c2U6TWUsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p''@;'; put 'put ''bjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiTU0vREQvWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBb''@;'; put 'put ''ZGVdIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIiso''@;'; put 'put ''MSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0''@;'; put 'put ''OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixN''@;'; put 'put ''OiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDg2ODY2OmZ1bmN0aW9uKFhlLEplLEwp''@;'; put 'put ''eyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxFPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQo''@;'; put 'put ''Il8iKSxNZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLFU9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0''@;'; put 'put ''aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtnZS5kZWZpbmVMb2NhbGUoImVzIix7bW9udGhzOiJlbmVyb19mZWJyZXJv''@;'; put 'put ''X21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKFosaWUpe3JldHVybiBaPy8tTU1NLS8udGVzdChpZSk/RVtaLm1vbnRoKCldOkJbWi5tb250aCgp''@;'; put 'put ''XTpCfSxtb250aHNSZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3Ry''@;'; put 'put ''aWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6TWUsbG9uZ01vbnRoc1BhcnNlOk1lLHNob3J0TW9udGhzUGFyc2U6TWUsd2Vla2RheXM6ImRv''@;'; put 'put ''bWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVf''@;'; put 'put ''dmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJk''@;'; put 'put ''ZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hXHhmMWFuYSBhIGxhIisoMSE9PXRo''@;'; put 'put ''aXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsi''@;'; put 'put ''XSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRv''@;'; put 'put ''cyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkXHhlZGEiLGRkOiIlZCBkXHhlZGFzIix3OiJ1bmEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6''@;'; put 'put ''InVuIGFceGYxbyIseXk6IiVkIGFceGYxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH0saW52YWxpZERhdGU6IkZlY2hhIGludlx4ZTFsaWRhIn0pfShMKDE1NDM5KSl9LDk2NzI1OmZ1bmN0aW9uKFhl''@;'; put 'put ''LEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoTWUsVSxRLFope3ZhciBpZT17czpbIm1ceGY1bmUgc2VrdW5kaSIsIm1ceGY1bmkgc2VrdW5kIiwicGFhciBzZWt1bmRpdCJdLHNzOltNZSsic2VrdW5kaSIsTWUrInNla3VuZGl0Il0sbTpbIlx4ZmNoZSBtaW51''@;'; put 'put ''dGkiLCJceGZja3MgbWludXQiXSxtbTpbTWUrIiBtaW51dGkiLE1lKyIgbWludXRpdCJdLGg6WyJceGZjaGUgdHVubmkiLCJ0dW5kIGFlZ2EiLCJceGZja3MgdHVuZCJdLGhoOltNZSsiIHR1bm5pIixNZSsiIHR1bmRpIl0sZDpbIlx4ZmNoZSBwXHhlNGV2YSIsIlx4ZmNrcyBwXHhlNGV2Il0s''@;'; put 'put ''TTpbImt1dSBhamEiLCJrdXUgYWVnYSIsIlx4ZmNrcyBrdXUiXSxNTTpbTWUrIiBrdXUiLE1lKyIga3V1ZCJdLHk6WyJceGZjaGUgYWFzdGEiLCJhYXN0YSIsIlx4ZmNrcyBhYXN0YSJdLHl5OltNZSsiIGFhc3RhIixNZSsiIGFhc3RhdCJdfTtyZXR1cm4gVT9pZVtRXVsyXT9pZVtRXVsyXTpp''@;'; put 'put ''ZVtRXVsxXTpaP2llW1FdWzBdOmllW1FdWzFdfWdlLmRlZmluZUxvY2FsZSgiZXQiLHttb250aHM6ImphYW51YXJfdmVlYnJ1YXJfbVx4ZTRydHNfYXByaWxsX21haV9qdXVuaV9qdXVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9vYmVyX25vdmVtYmVyX2RldHNlbWJlciIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNTaG9ydDoiamFhbl92ZWVicl9tXHhlNHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0X29rdF9ub3ZfZGV0cyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoicFx4ZmNoYXBceGU0ZXZfZXNtYXNwXHhlNGV2X3RlaXNpcFx4ZTRldl9rb2xtYXBceGU0ZXZfbmVsamFwXHhlNGV2X3Jl''@;'; put 'put ''ZWRlX2xhdXBceGU0ZXYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiUF9FX1RfS19OX1JfTCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiUF9FX1RfS19OX1JfTCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6''@;'; put 'put ''IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RceGU0bmEsXSBMVCIsbmV4dERheToiW0hvbW1lLF0gTFQiLG5leHRXZWVrOiJbSlx4ZTRyZ21pbmVdIGRkZGQgTFQiLGxhc3RE''@;'; put 'put ''YXk6IltFaWxlLF0gTFQiLGxhc3RXZWVrOiJbRWVsbWluZV0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcFx4ZTRyYXN0IixwYXN0OiIlcyB0YWdhc2kiLHM6QixzczpCLG06QixtbTpCLGg6QixoaDpCLGQ6QixkZDoiJWQgcFx4ZTRldmEiLE06QixN''@;'; put 'put ''TTpCLHk6Qix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNjc5MzE6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJl''@;'; put 'put ''dSIse21vbnRoczoidXJ0YXJyaWxhX290c2FpbGFfbWFydHhvYV9hcGlyaWxhX21haWF0emFfZWthaW5hX3V6dGFpbGFfYWJ1enR1YV9pcmFpbGFfdXJyaWFfYXphcm9hX2FiZW5kdWEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6InVydC5fb3RzLl9tYXIuX2FwaS5fbWFpLl9la2EuX3V6dC5f''@;'; put 'put ''YWJ1Ll9pcmEuX3Vyci5fYXphLl9hYmUuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImlnYW5kZWFfYXN0ZWxlaGVuYV9hc3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiaWcu''@;'; put 'put ''X2FsLl9hci5fYXouX29nLl9vbC5fbHIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJpZ19hbF9hcl9hel9vZ19vbF9sciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6''@;'; put 'put ''IllZWVlba29dIE1NTU1bcmVuXSBEW2FdIixMTEw6IllZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tIixMTExMOiJkZGRkLCBZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbSIsbDoiWVlZWS1NLUQiLGxsOiJZWVlZW2tvXSBNTU0gRFthXSIsbGxsOiJZWVlZW2tvXSBNTU0gRFthXSBI''@;'; put 'put ''SDptbSIsbGxsbDoiZGRkLCBZWVlZW2tvXSBNTU0gRFthXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZ2F1cl0gTFRbZXRhbl0iLG5leHREYXk6IltiaWhhcl0gTFRbZXRhbl0iLG5leHRXZWVrOiJkZGRkIExUW2V0YW5dIixsYXN0RGF5OiJbYXR6b10gTFRbZXRhbl0iLGxhc3RXZWVr''@;'; put 'put ''OiJbYXVycmVrb10gZGRkZCBMVFtldGFuXSIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgYmFycnUiLHBhc3Q6ImR1ZWxhICVzIixzOiJzZWd1bmRvIGJhdHp1ayIsc3M6IiVkIHNlZ3VuZG8iLG06Im1pbnV0dSBiYXQiLG1tOiIlZCBtaW51dHUiLGg6Im9yZHUgYmF0''@;'; put 'put ''IixoaDoiJWQgb3JkdSIsZDoiZWd1biBiYXQiLGRkOiIlZCBlZ3VuIixNOiJoaWxhYmV0ZSBiYXQiLE1NOiIlZCBoaWxhYmV0ZSIseToidXJ0ZSBiYXQiLHl5OiIlZCB1cnRlIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRv''@;'; put 'put ''eTo3fX0pfShMKDE1NDM5KSl9LDU2NDE3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTA2ZjEiLDI6Ilx1MDZmMiIsMzoiXHUwNmYzIiw0OiJcdTA2ZjQiLDU6Ilx1MDZmNSIsNjoiXHUwNmY2Iiw3OiJcdTA2ZjciLDg6Ilx1MDZmOCIs''@;'; put 'put ''OToiXHUwNmY5IiwwOiJcdTA2ZjAifSxFPXsiXHUwNmYxIjoiMSIsIlx1MDZmMiI6IjIiLCJcdTA2ZjMiOiIzIiwiXHUwNmY0IjoiNCIsIlx1MDZmNSI6IjUiLCJcdTA2ZjYiOiI2IiwiXHUwNmY3IjoiNyIsIlx1MDZmOCI6IjgiLCJcdTA2ZjkiOiI5IiwiXHUwNmYwIjoiMCJ9O2dlLmRlZmlu''@;'; put 'put ''ZUxvY2FsZSgiZmEiLHttb250aHM6Ilx1MDY5OFx1MDYyN1x1MDY0Nlx1MDY0OFx1MDZjY1x1MDY0N19cdTA2NDFcdTA2NDhcdTA2MzFcdTA2Y2NcdTA2NDdfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyMlx1MDY0OFx1MDYzMVx1MDZjY1x1MDY0NF9cdTA2NDVcdTA2NDdfXHUwNjk4''@;'; put 'put ''XHUwNjQ4XHUwNjI2XHUwNjQ2X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDZjY1x1MDY0N19cdTA2MjdcdTA2NDhcdTA2MmFfXHUwNjMzXHUwNjdlXHUwNjJhXHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyN1x1MDZhOVx1MDYyYVx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2MjdcdTA2''@;'; put 'put ''NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjMzXHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2OThcdTA2MjdcdTA2NDZcdTA2NDhcdTA2Y2NcdTA2NDdfXHUwNjQxXHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ3X1x1MDY0NVx1MDYyN1x1MDYzMVx1''@;'; put 'put ''MDYzM19cdTA2MjJcdTA2NDhcdTA2MzFcdTA2Y2NcdTA2NDRfXHUwNjQ1XHUwNjQ3X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDY0Nl9cdTA2OThcdTA2NDhcdTA2MjZcdTA2Y2NcdTA2NDdfXHUwNjI3XHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDY3ZVx1MDYyYVx1MDYyN1x1MDY0NVx1MDYyOFx1MDYz''@;'; put 'put ''MV9cdTA2MjdcdTA2YTlcdTA2MmFcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYzM1x1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNmNjXHUwNmE5XHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4''@;'; put 'put ''XHUwNjQ3X1x1MDYyZlx1MDY0OFx1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MzNcdTA2NDdcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjg2XHUwNjQ3XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY3ZVx1MDY0Nlx1MDYyY1x1MjAwY1x1MDYz''@;'; put 'put ''NFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2NDdfXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDZjY1x1MDZhOVx1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmZcdTA2NDhcdTA2MzRcdTA2NDZc''@;'; put 'put ''dTA2MjhcdTA2NDdfXHUwNjMzXHUwNjQ3XHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY4Nlx1MDY0N1x1MDYyN1x1MDYzMVx1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2N2VcdTA2NDZcdTA2MmNcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJjXHUwNjQ1''@;'; put 'put ''XHUwNjM5XHUwNjQ3X1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0NyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNmNjX1x1MDYyZl9cdTA2MzNfXHUwNjg2X1x1MDY3ZV9cdTA2MmNfXHUwNjM0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6''@;'; put 'put ''IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjQyXHUwNjI4XHUwNjQ0IFx1MDYyN1x1MDYzMiBcdTA2Mzhc''@;'; put 'put ''dTA2NDdcdTA2MzF8XHUwNjI4XHUwNjM5XHUwNjJmIFx1MDYyN1x1MDYzMiBcdTA2MzhcdTA2NDdcdTA2MzEvLGlzUE06ZnVuY3Rpb24oVSl7cmV0dXJuL1x1MDYyOFx1MDYzOVx1MDYyZiBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxLy50ZXN0KFUpfSxtZXJpZGllbTpmdW5jdGlv''@;'; put 'put ''bihVLFEsWil7cmV0dXJuIFU8MTI/Ilx1MDY0Mlx1MDYyOFx1MDY0NCBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxIjoiXHUwNjI4XHUwNjM5XHUwNjJmIFx1MDYyN1x1MDYzMiBcdTA2MzhcdTA2NDdcdTA2MzEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NVx1MDYz''@;'; put 'put ''MVx1MDY0OFx1MDYzMiBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixuZXh0RGF5OiJbXHUwNjQxXHUwNjMxXHUwNjJmXHUwNjI3IFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixsYXN0RGF5OiJb''@;'; put 'put ''XHUwNjJmXHUwNmNjXHUwNjMxXHUwNjQ4XHUwNjMyIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2N2VcdTA2Y2NcdTA2MzRdIFtcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJc''@;'; put 'put ''dTA2MmZcdTA2MzEgJXMiLHBhc3Q6IiVzIFx1MDY3ZVx1MDZjY1x1MDYzNCIsczoiXHUwNjg2XHUwNjQ2XHUwNjJmIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDZjY1x1MDY0NyIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDZjY1x1MDY0NyIsbToiXHUwNmNjXHUwNmE5IFx1MDYyZlx1MDY0''@;'; put 'put ''Mlx1MDZjY1x1MDY0Mlx1MDY0NyIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDZjY1x1MDY0Mlx1MDY0NyIsaDoiXHUwNmNjXHUwNmE5IFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYSIsZDoiXHUwNmNjXHUwNmE5IFx1MDYzMVx1MDY0OFx1''@;'; put 'put ''MDYzMiIsZGQ6IiVkIFx1MDYzMVx1MDY0OFx1MDYzMiIsTToiXHUwNmNjXHUwNmE5IFx1MDY0NVx1MDYyN1x1MDY0NyIsTU06IiVkIFx1MDY0NVx1MDYyN1x1MDY0NyIseToiXHUwNmNjXHUwNmE5IFx1MDYzM1x1MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBh''@;'; put 'put ''cnNlOmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTA2ZjAtXHUwNmY5XS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSkucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFEpe3JldHVy''@;'; put 'put ''biBCW1FdfSkucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1MDY0NS8sb3JkaW5hbDoiJWRcdTA2NDUiLHdlZWs6e2Rvdzo2LGRveToxMn19KX0oTCgxNTQzOSkpfSwyMDk0NDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgQj0ibm9sbGEgeWtzaSBrYWtzaSBrb2xtZSBuZWxqXHhlNCB2aWlzaSBrdXVzaSBzZWl0c2VtXHhlNG4ga2FoZGVrc2FuIHloZGVrc1x4ZTRuIi5zcGxpdCgiICIpLEU9WyJub2xsYSIsInloZGVuIiwia2FoZGVuIiwia29sbWVuIiwibmVsalx4ZTRuIiwidmlpZGVu''@;'; put 'put ''Iiwia3V1ZGVuIixCWzddLEJbOF0sQls5XV07ZnVuY3Rpb24gTWUoWixpZSxsZSxZKXt2YXIgVz0iIjtzd2l0Y2gobGUpe2Nhc2UicyI6cmV0dXJuIFk/Im11dXRhbWFuIHNla3VubmluIjoibXV1dGFtYSBzZWt1bnRpIjtjYXNlInNzIjpXPVk/InNla3VubmluIjoic2VrdW50aWEiO2JyZWFr''@;'; put 'put ''O2Nhc2UibSI6cmV0dXJuIFk/Im1pbnV1dGluIjoibWludXV0dGkiO2Nhc2UibW0iOlc9WT8ibWludXV0aW4iOiJtaW51dXR0aWEiO2JyZWFrO2Nhc2UiaCI6cmV0dXJuIFk/InR1bm5pbiI6InR1bnRpIjtjYXNlImhoIjpXPVk/InR1bm5pbiI6InR1bnRpYSI7YnJlYWs7Y2FzZSJkIjpyZXR1''@;'; put 'put ''cm4gWT8icFx4ZTRpdlx4ZTRuIjoicFx4ZTRpdlx4ZTQiO2Nhc2UiZGQiOlc9WT8icFx4ZTRpdlx4ZTRuIjoicFx4ZTRpdlx4ZTRceGU0IjticmVhaztjYXNlIk0iOnJldHVybiBZPyJrdXVrYXVkZW4iOiJrdXVrYXVzaSI7Y2FzZSJNTSI6Vz1ZPyJrdXVrYXVkZW4iOiJrdXVrYXV0dGEiO2Jy''@;'; put 'put ''ZWFrO2Nhc2UieSI6cmV0dXJuIFk/InZ1b2RlbiI6InZ1b3NpIjtjYXNlInl5IjpXPVk/InZ1b2RlbiI6InZ1b3R0YSJ9cmV0dXJuIGZ1bmN0aW9uIFUoWixpZSl7cmV0dXJuIFo8MTA/aWU/RVtaXTpCW1pdOlp9KFosWSkrIiAiK1d9Z2UuZGVmaW5lTG9jYWxlKCJmaSIse21vbnRoczoidGFt''@;'; put 'put ''bWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc1x4ZTRrdXVfaGVpblx4ZTRrdXVfZWxva3V1X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6InRhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vrb19r''@;'; put 'put ''ZXNceGU0X2hlaW5ceGU0X2Vsb19zeXlzX2xva2FfbWFycmFzX2pvdWx1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5udW50YWlfbWFhbmFudGFpX3RpaXN0YWlfa2Vza2l2aWlra29fdG9yc3RhaV9wZXJqYW50YWlfbGF1YW50YWkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VfbWFf''@;'; put 'put ''dGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X21hX3RpX2tlX3RvX3BlX2xhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkRELk1NLllZWVkiLExMOiJEbyBNTU1NW3RhXSBZWVlZIixMTEw6IkRvIE1NTU1b''@;'; put 'put ''dGFdIFlZWVksIFtrbG9dIEhILm1tIixMTExMOiJkZGRkLCBEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbSIsbDoiRC5NLllZWVkiLGxsOiJEbyBNTU0gWVlZWSIsbGxsOiJEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0iLGxsbGw6ImRkZCwgRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tIn0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6Ilt0XHhlNG5ceGU0XHhlNG5dIFtrbG9dIExUIixuZXh0RGF5OiJbaHVvbWVubmFdIFtrbG9dIExUIixuZXh0V2VlazoiZGRkZCBba2xvXSBMVCIsbGFzdERheToiW2VpbGVuXSBba2xvXSBMVCIsbGFzdFdlZWs6Ilt2aWltZV0gZGRkZFtuYV0gW2tsb10gTFQi''@;'; put 'put ''LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHBceGU0XHhlNHN0XHhlNCIscGFzdDoiJXMgc2l0dGVuIixzOk1lLHNzOk1lLG06TWUsbW06TWUsaDpNZSxoaDpNZSxkOk1lLGRkOk1lLE06TWUsTU06TWUseTpNZSx5eTpNZX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTov''@;'; put 'put ''XGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDYxNzY2OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiZmlsIix7bW9udGhzOiJFbmVyb19QZWJyZXJvX01hcnNvX0Ficmls''@;'; put 'put ''X01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkVuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJMaW5nZ29f''@;'; put 'put ''THVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJMaV9MdV9NYV9NaV9IdV9CaV9TYWIiLnNwbGl0KCJfIiksbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiTU0vRC9ZWVlZIixMTDoiTU1NTSBELCBZWVlZIixMTEw6Ik1NTU0gRCwgWVlZWSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJMVCBbbmdheW9uZyBhcmF3''@;'; put 'put ''XSIsbmV4dERheToiW0J1a2FzIG5nXSBMVCIsbmV4dFdlZWs6IkxUIFtzYSBzdXN1bm9kIG5hXSBkZGRkIixsYXN0RGF5OiJMVCBba2FoYXBvbl0iLGxhc3RXZWVrOiJMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJzYSBsb29i''@;'; put 'put ''IG5nICVzIixwYXN0OiIlcyBhbmcgbmFrYWxpcGFzIixzOiJpbGFuZyBzZWd1bmRvIixzczoiJWQgc2VndW5kbyIsbToiaXNhbmcgbWludXRvIixtbToiJWQgbWludXRvIixoOiJpc2FuZyBvcmFzIixoaDoiJWQgb3JhcyIsZDoiaXNhbmcgYXJhdyIsZGQ6IiVkIGFyYXciLE06ImlzYW5nIGJ1''@;'; put 'put ''d2FuIixNTToiJWQgYnV3YW4iLHk6ImlzYW5nIHRhb24iLHl5OiIlZCB0YW9uIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihFKXtyZXR1cm4gRX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sOTU4Njc6ZnVuY3Rpb24oWGUsSmUs''@;'; put 'put ''TCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJmbyIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJceGVkbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNT''@;'; put 'put ''aG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51ZGFndXJfbVx4ZTFuYWRhZ3VyX3RceGZkc2RhZ3VyX21pa3VkYWd1cl9oXHhmM3NkYWd1cl9mclx4ZWRnZ2phZGFndXJfbGV5Z2FyZGFndXIiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX21ceGUxbl90XHhmZHNfbWlrX2hceGYzc19mclx4ZWRfbGV5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tXHhlMV90XHhmZF9taV9oXHhmM19mcl9sZSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhI''@;'; put 'put ''Om1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSwgWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHhjZCBkYWcga2wuXSBMVCIsbmV4dERheToiW1x4Y2QgbW9yZ2luIGtsLl0gTFQi''@;'; put 'put ''LG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbXHhjZCBnalx4ZTFyIGtsLl0gTFQiLGxhc3RXZWVrOiJbc1x4ZWRceGYwc3R1XSBkZGRkIFtrbF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InVtICVzIixwYXN0OiIlcyBzXHhlZFx4ZjBhbmkiLHM6''@;'; put 'put ''ImZceGUxIHNla3VuZCIsc3M6IiVkIHNla3VuZGlyIixtOiJlaW4gbWludXR0dXIiLG1tOiIlZCBtaW51dHRpciIsaDoiZWluIHRceGVkbWkiLGhoOiIlZCB0XHhlZG1hciIsZDoiZWluIGRhZ3VyIixkZDoiJWQgZGFnYXIiLE06ImVpbiBtXHhlMW5hXHhmMHVyIixNTToiJWQgbVx4ZTFuYVx4''@;'; put 'put ''ZjBpciIseToiZWl0dCBceGUxciIseXk6IiVkIFx4ZTFyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDE2ODQ4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO2dlLmRlZmluZUxvY2FsZSgiZnItY2EiLHttb250aHM6ImphbnZpZXJfZlx4ZTl2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW9ceGZidF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kXHhlOWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZlx4''@;'; put 'put ''ZTl2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2FvXHhmYnRfc2VwdC5fb2N0Ll9ub3YuX2RceGU5Yy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgi''@;'; put 'put ''XyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRpX2x1X21hX21lX2plX3ZlX3NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6''@;'; put 'put ''IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0F1am91cmRcdTIwMTlodWkgXHhlMF0gTFQiLG5leHREYXk6IltEZW1haW4gXHhl''@;'; put 'put ''MF0gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUwXSBMVCIsbGFzdERheToiW0hpZXIgXHhlMF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIFx4ZTBdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVz''@;'; put 'put ''IHNlY29uZGVzIixzczoiJWQgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sZGF5''@;'; put 'put ''T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShlcnxlKS8sb3JkaW5hbDpmdW5jdGlvbihFLE1lKXtzd2l0Y2goTWUpe2RlZmF1bHQ6Y2FzZSJNIjpjYXNlIlEiOmNhc2UiRCI6Y2FzZSJEREQiOmNhc2UiZCI6cmV0dXJuIEUrKDE9PT1FPyJlciI6ImUiKTtjYXNlInciOmNhc2UiVyI6cmV0''@;'; put 'put ''dXJuIEUrKDE9PT1FPyJyZSI6ImUiKX19fSl9KEwoMTU0MzkpKX0sNzc3NzM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJmci1jaCIse21vbnRoczoiamFudmllcl9mXHhlOXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVp''@;'; put 'put ''bGxldF9hb1x4ZmJ0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2RceGU5Y2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mXHhlOXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW9ceGZidF9zZXB0Ll9vY3QuX25vdi5fZFx4ZTljLiIuc3BsaXQoIl8iKSxtb250''@;'; put 'put ''aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi''@;'; put 'put ''ZGlfbHVfbWFfbWVfamVfdmVfc2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBE''@;'; put 'put ''IE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZFx1MjAxOWh1aSBceGUwXSBMVCIsbmV4dERheToiW0RlbWFpbiBceGUwXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbSGllciBceGUwXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5p''@;'; put 'put ''ZXIgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLHNzOiIlZCBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVk''@;'; put 'put ''IGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfGUpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsTWUpe3N3aXRjaChNZSl7ZGVmYXVsdDpj''@;'; put 'put ''YXNlIk0iOmNhc2UiUSI6Y2FzZSJEIjpjYXNlIkRERCI6Y2FzZSJkIjpyZXR1cm4gRSsoMT09PUU/ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gRSsoMT09PUU/InJlIjoiZSIpfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMTYzNjpmdW5jdGlvbihYZSxKZSxM''@;'; put 'put ''KXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgTWU9LyhqYW52XC4/fGZceGU5dnJcLj98bWFyc3xhdnJcLj98bWFpfGp1aW58anVpbFwuP3xhb1x4ZmJ0fHNlcHRcLj98b2N0XC4/fG5vdlwuP3xkXHhlOWNcLj98amFudmllcnxmXHhlOXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58''@;'; put 'put ''anVpbGxldHxhb1x4ZmJ0fHNlcHRlbWJyZXxvY3RvYnJlfG5vdmVtYnJlfGRceGU5Y2VtYnJlKS9pLFU9Wy9eamFudi9pLC9eZlx4ZTl2ci9pLC9ebWFycy9pLC9eYXZyL2ksL15tYWkvaSwvXmp1aW4vaSwvXmp1aWwvaSwvXmFvXHhmYnQvaSwvXnNlcHQvaSwvXm9jdC9pLC9ebm92L2ksL15k''@;'; put 'put ''XHhlOWMvaV07Z2UuZGVmaW5lTG9jYWxlKCJmciIse21vbnRoczoiamFudmllcl9mXHhlOXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb1x4ZmJ0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2RceGU5Y2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9m''@;'; put 'put ''XHhlOXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW9ceGZidF9zZXB0Ll9vY3QuX25vdi5fZFx4ZTljLiIuc3BsaXQoIl8iKSxtb250aHNSZWdleDpNZSxtb250aHNTaG9ydFJlZ2V4Ok1lLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnZpZXJ8Zlx4ZTl2cmllcnxtYXJzfGF2cmlsfG1h''@;'; put 'put ''aXxqdWlufGp1aWxsZXR8YW9ceGZidHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkXHhlOWNlbWJyZSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi8oamFudlwuP3xmXHhlOXZyXC4/fG1hcnN8YXZyXC4/fG1haXxqdWlufGp1aWxcLj98YW9ceGZidHxzZXB0XC4/fG9jdFwuP3xub3Zc''@;'; put 'put ''Lj98ZFx4ZTljXC4/KS9pLG1vbnRoc1BhcnNlOlUsbG9uZ01vbnRoc1BhcnNlOlUsc2hvcnRNb250aHNQYXJzZTpVLHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4u''@;'; put 'put ''X21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlfbHVfbWFfbWVfamVfdmVfc2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExM''@;'; put 'put ''OiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZFx1MjAxOWh1aSBceGUwXSBMVCIsbmV4dERheToiW0RlbWFpbiBceGUwXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBd''@;'; put 'put ''IExUIixsYXN0RGF5OiJbSGllciBceGUwXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLHNzOiIlZCBzZWNvbmRlcyIs''@;'; put 'put ''bToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIix3OiJ1bmUgc2VtYWluZSIsd3c6IiVkIHNlbWFpbmVzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMi''@;'; put 'put ''fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oWixpZSl7c3dpdGNoKGllKXtjYXNlIkQiOnJldHVybiBaKygxPT09Wj8iZXIiOiIiKTtkZWZhdWx0OmNhc2UiTSI6Y2FzZSJRIjpjYXNlIkRERCI6Y2FzZSJkIjpyZXR1cm4gWisoMT09PVo/''@;'; put 'put ''ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gWisoMT09PVo/InJlIjoiZSIpfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMTQ5NDA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9Imphbi5fZmViLl9tcnQuX2Fwci5f''@;'; put 'put ''bWFpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksRT0iamFuX2ZlYl9tcnRfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMiLnNwbGl0KCJfIik7Z2UuZGVmaW5lTG9jYWxlKCJmeSIse21vbnRoczoiamFubmV3YXJpc19mZWJyZXdhcmlz''@;'; put 'put ''X21hYXJ0X2FwcmlsX21hYWllX2p1bnlfanVseV9hdWd1c3R1c19zZXB0aW1iZXJfb2t0b2Jlcl9ub3ZpbWJlcl9kZXNpbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihVLFEpe3JldHVybiBVPy8tTU1NLS8udGVzdChRKT9FW1UubW9udGgoKV06QltVLm1vbnRoKCldOkJ9''@;'; put 'put ''LG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6InNuZWluX21vYW5kZWlfdGlpc2RlaV93b2Fuc2RlaV90b25nZXJzZGVpX2ZyZWVkX3NuZW9uIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InNpLl9tby5fdGkuX3dvLl90by5fZnIuX3NvLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi''@;'; put 'put ''U2lfTW9fVGlfV29fVG9fRnJfU28iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBE''@;'; put 'put ''IE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGpvZWQgb21dIExUIixuZXh0RGF5OiJbbW9hcm4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbanVzdGVyIG9tXSBMVCIsbGFzdFdlZWs6IltceGY0ZnJceGZibmVdIGRkZGQgW29tXSBMVCIs''@;'; put 'put ''c2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib2VyICVzIixwYXN0OiIlcyBseW4iLHM6ImluIHBlYXIgc2Vrb25kZW4iLHNzOiIlZCBzZWtvbmRlbiIsbToiaWVuIG1pblx4ZmF0IixtbToiJWQgbWludXRlbiIsaDoiaWVuIG9lcmUiLGhoOiIlZCBvZXJlbiIsZDoiaWVuIGRl''@;'; put 'put ''aSIsZGQ6IiVkIGRhZ2VuIixNOiJpZW4gbW9hbm5lIixNTToiJWQgbW9hbm5lbiIseToiaWVuIGppZXIiLHl5OiIlZCBqaWVycmVuIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKFUpe3JldHVybiBVKygxPT09VXx8OD09PVV8fFU+''@;'; put 'put ''PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw5MTQwMjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImdhIix7bW9udGhzOlsiRWFuXHhlMWlyIiwiRmVhYmhyYSIsIk1ceGUxcnRhIiwi''@;'; put 'put ''QWlicmVceGUxbiIsIkJlYWx0YWluZSIsIk1laXRoZWFtaCIsIklceGZhaWwiLCJMXHhmYW5hc2EiLCJNZVx4ZTFuIEZceGYzbWhhaXIiLCJEZWlyZWFkaCBGXHhmM21oYWlyIiwiU2FtaGFpbiIsIk5vbGxhaWciXSxtb250aHNTaG9ydDpbIkVhbiIsIkZlYWJoIiwiTVx4ZTFydCIsIkFpYiIs''@;'; put 'put ''IkJlYWwiLCJNZWl0aCIsIklceGZhaWwiLCJMXHhmYW4iLCJNLkYuIiwiRC5GLiIsIlNhbWgiLCJOb2xsIl0sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czpbIkRceGU5IERvbWhuYWlnaCIsIkRceGU5IEx1YWluIiwiRFx4ZTkgTVx4ZTFpcnQiLCJEXHhlOSBDXHhlOWFkYW9pbiIsIkRc''@;'; put 'put ''eGU5YXJkYW9pbiIsIkRceGU5IGhBb2luZSIsIkRceGU5IFNhdGhhaXJuIl0sd2Vla2RheXNTaG9ydDpbIkRvbWgiLCJMdWFuIiwiTVx4ZTFpcnQiLCJDXHhlOWFkIiwiRFx4ZTlhciIsIkFvaW5lIiwiU2F0aCJdLHdlZWtkYXlzTWluOlsiRG8iLCJMdSIsIk1ceGUxIiwiQ1x4ZTkiLCJEXHhl''@;'; put 'put ''OSIsIkEiLCJTYSJdLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0lu''@;'; put 'put ''bml1IGFnXSBMVCIsbmV4dERheToiW0FtXHhlMXJhY2ggYWddIExUIixuZXh0V2VlazoiZGRkZCBbYWddIExUIixsYXN0RGF5OiJbSW5uXHhlOSBhZ10gTFQiLGxhc3RXZWVrOiJkZGRkIFtzZW8gY2FpdGVdIFthZ10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Imkg''@;'; put 'put ''JXMiLHBhc3Q6IiVzIFx4ZjMgc2hpbiIsczoiY1x4ZmFwbGEgc29pY2luZCIsc3M6IiVkIHNvaWNpbmQiLG06Im5ceGYzaW1ceGU5YWQiLG1tOiIlZCBuXHhmM2ltXHhlOWFkIixoOiJ1YWlyIGFuIGNobG9pZyIsaGg6IiVkIHVhaXIgYW4gY2hsb2lnIixkOiJsXHhlMSIsZGQ6IiVkIGxceGUx''@;'; put 'put ''IixNOiJtXHhlZCIsTU06IiVkIG1ceGVkb25uYSIseToiYmxpYWluIix5eToiJWQgYmxpYWluIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShkfG5hfG1oKS8sb3JkaW5hbDpmdW5jdGlvbihpZSl7cmV0dXJuIGllKygxPT09aWU/ImQiOmllJTEwPT0yPyJuYSI6Im1oIil9LHdl''@;'; put 'put ''ZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDQ2OTI0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiZ2QiLHttb250aHM6WyJBbSBGYW9pbGxlYWNoIiwiQW4gR2VhcnJhbiIsIkFtIE1ceGUwcnQiLCJBbiBHaWJsZWFu''@;'; put 'put ''IiwiQW4gQ1x4ZThpdGVhbiIsIkFuIHQtXHhkMmdtaGlvcyIsIkFuIHQtSXVjaGFyIiwiQW4gTFx4ZjluYXN0YWwiLCJBbiB0LVN1bHRhaW4iLCJBbiBEXHhlMG1oYWlyIiwiQW4gdC1TYW1oYWluIiwiQW4gRFx4ZjliaGxhY2hkIl0sbW9udGhzU2hvcnQ6WyJGYW9pIiwiR2VhciIsIk1ceGUw''@;'; put 'put ''cnQiLCJHaWJsIiwiQ1x4ZThpdCIsIlx4ZDJnbWgiLCJJdWNoIiwiTFx4ZjluIiwiU3VsdCIsIkRceGUwbWgiLCJTYW1oIiwiRFx4ZjliaCJdLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6WyJEaWRceGYybWhuYWljaCIsIkRpbHVhaW4iLCJEaW1ceGUwaXJ0IiwiRGljaWFkYWluIiwi''@;'; put 'put ''RGlhcmRhb2luIiwiRGloYW9pbmUiLCJEaXNhdGhhaXJuZSJdLHdlZWtkYXlzU2hvcnQ6WyJEaWQiLCJEaWwiLCJEaW0iLCJEaWMiLCJEaWEiLCJEaWgiLCJEaXMiXSx3ZWVrZGF5c01pbjpbIkRceGYyIiwiTHUiLCJNXHhlMCIsIkNpIiwiQXIiLCJIYSIsIlNhIl0sbG9uZ0RhdGVGb3JtYXQ6''@;'; put 'put ''e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQW4tZGl1Z2ggYWlnXSBMVCIsbmV4dERheToiW0Et''@;'; put 'put ''bVx4ZTBpcmVhY2ggYWlnXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FpZ10gTFQiLGxhc3REYXk6IltBbi1kXHhlOCBhaWddIExUIixsYXN0V2VlazoiZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImFubiBhbiAlcyIscGFzdDoi''@;'; put 'put ''YmhvIGNoaW9ubiAlcyIsczoiYmVhZ2FuIGRpb2dhbiIsc3M6IiVkIGRpb2dhbiIsbToibWlvbmFpZCIsbW06IiVkIG1pb25haWRlYW4iLGg6InVhaXIiLGhoOiIlZCB1YWlyZWFuIixkOiJsYXRoYSIsZGQ6IiVkIGxhdGhhIixNOiJtXHhlY29zIixNTToiJWQgbVx4ZWNvc2FuIix5OiJibGlh''@;'; put 'put ''ZGhuYSIseXk6IiVkIGJsaWFkaG5hIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShkfG5hfG1oKS8sb3JkaW5hbDpmdW5jdGlvbihpZSl7cmV0dXJuIGllKygxPT09aWU/ImQiOmllJTEwPT0yPyJuYSI6Im1oIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDE2''@;'; put 'put ''Mzk4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiZ2wiLHttb250aHM6InhhbmVpcm9fZmVicmVpcm9fbWFyem9fYWJyaWxfbWFpb194dVx4ZjFvX3h1bGxvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlY2Vt''@;'; put 'put ''YnJvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ4YW4uX2ZlYi5fbWFyLl9hYnIuX21haS5feHVceGYxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkb21pbmdvX2x1bnNfbWFydGVzX21ceGU5cmNvcmVz''@;'; put 'put ''X3hvdmVzX3ZlbnJlc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbVx4ZTlyLl94b3YuX3Zlbi5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbVx4ZTlfeG9fdmVfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQ''@;'; put 'put ''YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDpt''@;'; put 'put ''bSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3hlICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiXHhlMSIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxXHhlMSAiKygxIT09dGhpcy5ob3VycygpPyJceGUxcyI6Ilx4ZTEiKSsi''@;'; put 'put ''XSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgWyIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbb250ZSAiKygxIT09dGhpcy5ob3VycygpPyJceGUxIjoiYSIpKyJdIExUIn0sbGFzdFdlZWs6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4iW29dIGRkZGQgW3Bhc2FkbyAiKygxIT09dGhpcy5ob3VycygpPyJceGUxcyI6ImEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oRSl7cmV0dXJuIDA9PT1FLmluZGV4T2YoInVuIik/Im4iK0U6ImVuICIrRX0scGFz''@;'; put 'put ''dDoiaGFpICVzIixzOiJ1bnMgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5oYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBh''@;'; put 'put ''bm8iLHl5OiIlZCBhbm9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNzI0NTc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g''@;'; put 'put ''QihNZSxVLFEsWil7dmFyIGllPXtzOlsiXHUwOTI1XHUwOTRiXHUwOTIxXHUwOTJmXHUwOTNlIFx1MDkzOFx1MDk0NVx1MDkxNVx1MDkwMlx1MDkyMVx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0MCIsIlx1MDkyNVx1MDk0Ylx1MDkyMVx1MDk0NyBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5''@;'; put 'put ''MjEiXSxzczpbTWUrIiBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5MjFcdTA5M2VcdTA5MDJcdTA5MjhcdTA5NDAiLE1lKyIgXHUwOTM4XHUwOTQ1XHUwOTE1XHUwOTAyXHUwOTIxIl0sbTpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MmVcdTA5M2ZcdTA5MjNcdTA5MWZcdTA5M2VcdTA5''@;'; put 'put ''MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQyXHUwOTFmIl0sbW06W01lKyIgXHUwOTJlXHUwOTNmXHUwOTIzXHUwOTFmXHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIixNZSsiIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkwMiJdLGg6WyJcdTA5MGZc''@;'; put 'put ''dTA5MTVcdTA5M2UgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkzNVx1MDkzMCJdLGhoOltNZSsiIFx1MDkzNVx1MDkzMFx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0MCIsTWUrIiBcdTA5MzVcdTA5MzBcdTA5M2VcdTA5MDIiXSxkOlsiXHUwOTBmXHUwOTE1XHUw''@;'; put 'put ''OTNlIFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MjZcdTA5NDBcdTA5MzgiXSxkZDpbTWUrIiBcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MjhcdTA5NDAiLE1lKyIgXHUwOTI2XHUwOTQwXHUwOTM4Il0sTTpbIlx1MDkwZlx1MDkx''@;'; put 'put ''NVx1MDkzZSBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZcdTA5MjhcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTRkXHUwOTM5XHUwOTJmXHUwOTI4XHUwOTRiIl0sTU06W01lKyIgXHUwOTJlXHUwOTRkXHUwOTM5XHUwOTJmXHUwOTI4XHUwOTRkXHUw''@;'; put 'put ''OTJmXHUwOTNlXHUwOTI4XHUwOTQwIixNZSsiIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDkyOFx1MDk0NyJdLHk6WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkz''@;'; put 'put ''OCJdLHl5OltNZSsiIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzOFx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0MCIsTWUrIiBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzhcdTA5M2VcdTA5MDIiXX07cmV0dXJuIFo/aWVbUV1bMF06aWVbUV1bMV19Z2UuZGVmaW5lTG9jYWxlKCJnb20tZGV2YSIse21v''@;'; put 'put ''bnRoczp7c3RhbmRhbG9uZToiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3XHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTBm''@;'; put 'put ''XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQwXHUwOTMyX1x1MDkyZVx1MDk0N19cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTJmX1x1MDkxMVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDJcdTA5MmNcdTA5''@;'; put 'put ''MzBfXHUwOTExXHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksZm9ybWF0OiJc''@;'; put 'put ''dTA5MWNcdTA5M2VcdTA5MjhcdTA5NDdcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxXHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkyZVx1''@;'; put 'put ''MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYVx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDBcdTA5MzJcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTJlXHUwOTQ3XHUwOTJmXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUw''@;'; put 'put ''OTNlX1x1MDkxY1x1MDk0Mlx1MDkyOFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5MmZcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTExXHUwOTE3XHUwOTM4XHUwOTRkXHUwOTFmXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUw''@;'; put 'put ''OTNlX1x1MDkzOFx1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGJcdTA5MmNcdTA5MzBcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTI4XHUw''@;'; put 'put ''OTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkyMVx1MDkzZlx1MDkzOFx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZSIuc3BsaXQoIl8iKSxpc0Zv''@;'; put 'put ''cm1hdDovTU1NTShccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0Ny5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTBmXHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQwLl9c''@;'; put 'put ''dTA5MmVcdTA5NDdfXHUwOTFjXHUwOTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMi5fXHUwOTExXHUwOTE3Ll9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDIuX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5''@;'; put 'put ''XHUwOTQ3XHUwOTAyLl9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDIuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDkwNlx1MDkyZlx1MDkyNFx1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTAyXHUw''@;'; put 'put ''OTE3XHUwOTMzXHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5M2ZcdTA5MzBcdTA5NDdcdTA5MzhcdTA5NGRcdTA5MjRcdTA5M2VcdTA5MzBfXHUwOTM4XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTNlXHUwOTMwX1x1MDkzNlx1''@;'; put 'put ''MDk0N1x1MDkyOFx1MDkzNVx1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5MDZcdTA5MmZcdTA5MjQuX1x1MDkzOFx1MDk0Ylx1MDkyZS5fXHUwOTJlXHUwOTAyXHUwOTE3XHUwOTMzLl9cdTA5MmNcdTA5NDFcdTA5MjcuX1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0''@;'; put 'put ''N1x1MDkzOFx1MDk0ZFx1MDkyNC5fXHUwOTM4XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwLl9cdTA5MzZcdTA5NDdcdTA5MjguIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MDZfXHUwOTM4XHUwOTRiX1x1MDkyZVx1MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTJjXHUwOTRkXHUwOTMwXHUw''@;'; put 'put ''OTQ3X1x1MDkzOFx1MDk0MV9cdTA5MzZcdTA5NDciLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixMVFM6IkEgaDptbTpzcyBbXHUwOTM1XHUwOTNlXHUwOTFj''@;'; put 'put ''XHUwOTI0XHUwOTNlXHUwOTAyXSIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEEgaDptbSBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlXHUwOTAyXSIsTExMTDoiZGRkZCwgTU1NTSBEbywgWVlZWSwgQSBoOm1tIFtcdTA5MzVcdTA5M2Vc''@;'; put 'put ''dTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixsbGxsOiJkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlXHUwOTAyXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwOTA2XHUwOTJmXHUwOTFjXSBMVCIsbmV4dERheToiW1x1MDkyYlx1MDkzZVx1''@;'; put 'put ''MDkzMlx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkwMl0gTFQiLG5leHRXZWVrOiJbXHUwOTJiXHUwOTQxXHUwOTIxXHUwOTMyXHUwOTRiXSBkZGRkWyxdIExUIixsYXN0RGF5OiJbXHUwOTE1XHUwOTNlXHUwOTMyXSBMVCIsbGFzdFdlZWs6IltcdTA5MmJcdTA5M2VcdTA5MWZcdTA5MzJcdTA5NGJd''@;'; put 'put ''IGRkZGRbLF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIixwYXN0OiIlcyBcdTA5MDZcdTA5MjZcdTA5NDBcdTA5MDIiLHM6QixzczpCLG06QixtbTpCLGg6QixoaDpCLGQ6QixkZDpCLE06QixNTTpCLHk6Qix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNl''@;'; put 'put ''Oi9cZHsxLDJ9KFx1MDkzNVx1MDk0N1x1MDkzMCkvLG9yZGluYWw6ZnVuY3Rpb24oTWUsVSl7cmV0dXJuIkQiPT09VT9NZSsiXHUwOTM1XHUwOTQ3XHUwOTMwIjpNZX0sd2Vlazp7ZG93OjAsZG95OjN9LG1lcmlkaWVtUGFyc2U6L1x1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MHxcdTA5MzhcdTA5''@;'; put 'put ''MTVcdTA5M2VcdTA5MzNcdTA5NDBcdTA5MDJ8XHUwOTI2XHUwOTI4XHUwOTJhXHUwOTNlXHUwOTMwXHUwOTNlXHUwOTAyfFx1MDkzOFx1MDkzZVx1MDkwMlx1MDkxY1x1MDk0Ny8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKE1lLFUpe3JldHVybiAxMj09PU1lJiYoTWU9MCksIlx1MDkzMFx1MDkz''@;'; put 'put ''ZVx1MDkyNFx1MDk0MCI9PT1VP01lPDQ/TWU6TWUrMTI6Ilx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MFx1MDkwMiI9PT1VP01lOiJcdTA5MjZcdTA5MjhcdTA5MmFcdTA5M2VcdTA5MzBcdTA5M2VcdTA5MDIiPT09VT9NZT4xMj9NZTpNZSsxMjoiXHUwOTM4XHUwOTNlXHUwOTAyXHUw''@;'; put 'put ''OTFjXHUwOTQ3Ij09PVU/TWUrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihNZSxVLFEpe3JldHVybiBNZTw0PyJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NDAiOk1lPDEyPyJcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDBcdTA5MDIiOk1lPDE2PyJcdTA5MjZcdTA5MjhcdTA5MmFc''@;'; put 'put ''dTA5M2VcdTA5MzBcdTA5M2VcdTA5MDIiOk1lPDIwPyJcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MWNcdTA5NDciOiJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NDAifX0pfShMKDE1NDM5KSl9LDUyNTQ1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u''@;'; put 'put ''IEIoTWUsVSxRLFope3ZhciBpZT17czpbInRob2RkZWEgc2Vrb25kYW1uaSIsInRob2RkZSBzZWtvbmQiXSxzczpbTWUrIiBzZWtvbmRhbW5pIixNZSsiIHNla29uZCJdLG06WyJla2EgbWludGFuIiwiZWsgbWludXQiXSxtbTpbTWUrIiBtaW50YW1uaSIsTWUrIiBtaW50YW0iXSxoOlsiZWth''@;'; put 'put ''IHZvcmFuIiwiZWsgdm9yIl0saGg6W01lKyIgdm9yYW1uaSIsTWUrIiB2b3JhbSJdLGQ6WyJla2EgZGlzYW4iLCJlayBkaXMiXSxkZDpbTWUrIiBkaXNhbW5pIixNZSsiIGRpcyJdLE06WyJla2EgbWhvaW5lYW4iLCJlayBtaG9pbm8iXSxNTTpbTWUrIiBtaG9pbmVhbW5pIixNZSsiIG1ob2lu''@;'; put 'put ''ZSJdLHk6WyJla2Egdm9yc2FuIiwiZWsgdm9yb3MiXSx5eTpbTWUrIiB2b3JzYW1uaSIsTWUrIiB2b3JzYW0iXX07cmV0dXJuIFo/aWVbUV1bMF06aWVbUV1bMV19Z2UuZGVmaW5lTG9jYWxlKCJnb20tbGF0biIse21vbnRoczp7c3RhbmRhbG9uZToiSmFuZXJfRmVicmVyX01hcnNfQWJyaWxf''@;'; put 'put ''TWFpX0p1bl9KdWxhaV9BZ29zdF9TZXRlbWJyX090dWJyX05vdmVtYnJfRGV6ZW1iciIuc3BsaXQoIl8iKSxmb3JtYXQ6IkphbmVyYWNoZWFfRmVicmVyYWNoZWFfTWFyc2FjaGVhX0FicmlsYWNoZWFfTWFpYWNoZWFfSnVuYWNoZWFfSnVsYWlhY2hlYV9BZ29zdGFjaGVhX1NldGVtYnJhY2hl''@;'; put 'put ''YV9PdHVicmFjaGVhX05vdmVtYnJhY2hlYV9EZXplbWJyYWNoZWEiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L01NTU0oXHMpK0Rbb0RdPy99LG1vbnRoc1Nob3J0OiJKYW4uX0ZlYi5fTWFyc19BYnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9u''@;'; put 'put ''dGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiQWl0YXJfU29tYXJfTW9uZ2xsYXJfQnVkaHZhcl9CaXJlc3Rhcl9TdWtyYXJfU29uJ3ZhciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJBaXQuX1NvbS5fTW9uLl9CdWQuX0JyZS5fU3VrLl9Tb24uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWlu''@;'; put 'put ''OiJBaV9TbV9Nb19CdV9Ccl9TdV9TbiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gW3ZhenRhXSIsTFRTOiJBIGg6bW06c3MgW3ZhenRhXSIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZ''@;'; put 'put ''IEEgaDptbSBbdmF6dGFdIixMTExMOiJkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW3ZhenRhXSIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW3ZhenRhXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQWl6XSBMVCIsbmV4dERheToiW0ZhbGVhbV0gTFQiLG5leHRXZWVrOiJbRnVk''@;'; put 'put ''ZGxvXSBkZGRkWyxdIExUIixsYXN0RGF5OiJbS2FsXSBMVCIsbGFzdFdlZWs6IltGYXR0bG9dIGRkZGRbLF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIixwYXN0OiIlcyBhZGltIixzOkIsc3M6QixtOkIsbW06QixoOkIsaGg6QixkOkIsZGQ6QixNOkIsTU06''@;'; put 'put ''Qix5OkIseXk6Qn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShlcikvLG9yZGluYWw6ZnVuY3Rpb24oTWUsVSl7cmV0dXJuIkQiPT09VT9NZSsiZXIiOk1lfSx3ZWVrOntkb3c6MCxkb3k6M30sbWVyaWRpZW1QYXJzZTovcmF0aXxzb2thbGxpbXxkb25wYXJhbXxzYW5qZS8sbWVy''@;'; put 'put ''aWRpZW1Ib3VyOmZ1bmN0aW9uKE1lLFUpe3JldHVybiAxMj09PU1lJiYoTWU9MCksInJhdGkiPT09VT9NZTw0P01lOk1lKzEyOiJzb2thbGxpbSI9PT1VP01lOiJkb25wYXJhbSI9PT1VP01lPjEyP01lOk1lKzEyOiJzYW5qZSI9PT1VP01lKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24o''@;'; put 'put ''TWUsVSxRKXtyZXR1cm4gTWU8ND8icmF0aSI6TWU8MTI/InNva2FsbGltIjpNZTwxNj8iZG9ucGFyYW0iOk1lPDIwPyJzYW5qZSI6InJhdGkifX0pfShMKDE1NDM5KSl9LDQyNjQxOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTBhZTci''@;'; put 'put ''LDI6Ilx1MGFlOCIsMzoiXHUwYWU5Iiw0OiJcdTBhZWEiLDU6Ilx1MGFlYiIsNjoiXHUwYWVjIiw3OiJcdTBhZWQiLDg6Ilx1MGFlZSIsOToiXHUwYWVmIiwwOiJcdTBhZTYifSxFPXsiXHUwYWU3IjoiMSIsIlx1MGFlOCI6IjIiLCJcdTBhZTkiOiIzIiwiXHUwYWVhIjoiNCIsIlx1MGFlYiI6''@;'; put 'put ''IjUiLCJcdTBhZWMiOiI2IiwiXHUwYWVkIjoiNyIsIlx1MGFlZSI6IjgiLCJcdTBhZWYiOiI5IiwiXHUwYWU2IjoiMCJ9O2dlLmRlZmluZUxvY2FsZSgiZ3UiLHttb250aHM6Ilx1MGE5Y1x1MGFiZVx1MGFhOFx1MGFjZFx1MGFhZlx1MGFjMVx1MGE4Nlx1MGFiMFx1MGFjMF9cdTBhYWJcdTBh''@;'; put 'put ''YzdcdTBhYWNcdTBhY2RcdTBhYjBcdTBhYzFcdTBhODZcdTBhYjBcdTBhYzBfXHUwYWFlXHUwYWJlXHUwYWIwXHUwYWNkXHUwYTlhX1x1MGE4Zlx1MGFhYVx1MGFjZFx1MGFiMFx1MGFiZlx1MGFiMl9cdTBhYWVcdTBhYzdfXHUwYTljXHUwYWMyXHUwYWE4X1x1MGE5Y1x1MGFjMVx1MGFiMlx1''@;'; put 'put ''MGFiZVx1MGE4OF9cdTBhOTFcdTBhOTdcdTBhYjhcdTBhY2RcdTBhOWZfXHUwYWI4XHUwYWFhXHUwYWNkXHUwYTlmXHUwYWM3XHUwYWFlXHUwYWNkXHUwYWFjXHUwYWIwX1x1MGE5MVx1MGE5NVx1MGFjZFx1MGE5Zlx1MGFjZFx1MGFhY1x1MGFiMF9cdTBhYThcdTBhYjVcdTBhYzdcdTBhYWVc''@;'; put 'put ''dTBhY2RcdTBhYWNcdTBhYjBfXHUwYWExXHUwYWJmXHUwYWI4XHUwYWM3XHUwYWFlXHUwYWNkXHUwYWFjXHUwYWIwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBhOWNcdTBhYmVcdTBhYThcdTBhY2RcdTBhYWZcdTBhYzEuX1x1MGFhYlx1MGFjN1x1MGFhY1x1MGFjZFx1MGFiMFx1MGFj''@;'; put 'put ''MS5fXHUwYWFlXHUwYWJlXHUwYWIwXHUwYWNkXHUwYTlhX1x1MGE4Zlx1MGFhYVx1MGFjZFx1MGFiMFx1MGFiZi5fXHUwYWFlXHUwYWM3X1x1MGE5Y1x1MGFjMlx1MGFhOF9cdTBhOWNcdTBhYzFcdTBhYjJcdTBhYmUuX1x1MGE5MVx1MGE5Ny5fXHUwYWI4XHUwYWFhXHUwYWNkXHUwYTlmXHUw''@;'; put 'put ''YWM3Ll9cdTBhOTFcdTBhOTVcdTBhY2RcdTBhOWZcdTBhY2QuX1x1MGFhOFx1MGFiNVx1MGFjNy5fXHUwYWExXHUwYWJmXHUwYWI4XHUwYWM3LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBhYjBcdTBhYjVcdTBhYmZcdTBhYjVcdTBhYmVcdTBhYjBfXHUw''@;'; put 'put ''YWI4XHUwYWNiXHUwYWFlXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFhZVx1MGE4Mlx1MGE5N1x1MGFiM1x1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYWNcdTBhYzFcdTBhYTdcdTBhY2RcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYTk3XHUwYWMxXHUwYWIwXHUwYWMxXHUwYWI1XHUwYWJlXHUwYWIwX1x1''@;'; put 'put ''MGFiNlx1MGFjMVx1MGE5NVx1MGFjZFx1MGFiMFx1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYjZcdTBhYThcdTBhYmZcdTBhYjVcdTBhYmVcdTBhYjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwYWIwXHUwYWI1XHUwYWJmX1x1MGFiOFx1MGFjYlx1MGFhZV9cdTBhYWVcdTBhODJcdTBh''@;'; put 'put ''OTdcdTBhYjNfXHUwYWFjXHUwYWMxXHUwYWE3XHUwYWNkX1x1MGE5N1x1MGFjMVx1MGFiMFx1MGFjMV9cdTBhYjZcdTBhYzFcdTBhOTVcdTBhY2RcdTBhYjBfXHUwYWI2XHUwYWE4XHUwYWJmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBhYjBfXHUwYWI4XHUwYWNiX1x1MGFhZVx1MGE4''@;'; put 'put ''Ml9cdTBhYWNcdTBhYzFfXHUwYTk3XHUwYWMxX1x1MGFiNlx1MGFjMV9cdTBhYjYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwYWI1XHUwYWJlXHUwYTk3XHUwYWNkXHUwYWFmXHUwYWM3IixMVFM6IkEgaDptbTpzcyBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2Rc''@;'; put 'put ''dTBhYWZcdTBhYzciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2Rc''@;'; put 'put ''dTBhYWZcdTBhYzcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGE4Nlx1MGE5Y10gTFQiLG5leHREYXk6IltcdTBhOTVcdTBhYmVcdTBhYjJcdTBhYzddIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBhOTdcdTBhODdcdTBhOTVcdTBhYmVcdTBhYjJcdTBhYzddIExUIixs''@;'; put 'put ''YXN0V2VlazoiW1x1MGFhYVx1MGFiZVx1MGE5Ylx1MGFiMlx1MGFiZV0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGFhZVx1MGFiZSIscGFzdDoiJXMgXHUwYWFhXHUwYWI5XHUwYWM3XHUwYWIyXHUwYWJlIixzOiJcdTBhODVcdTBhYWVcdTBh''@;'; put 'put ''YzFcdTBhOTUgXHUwYWFhXHUwYWIzXHUwYWNiIixzczoiJWQgXHUwYWI4XHUwYWM3XHUwYTk1XHUwYTgyXHUwYWExIixtOiJcdTBhOGZcdTBhOTUgXHUwYWFlXHUwYWJmXHUwYWE4XHUwYWJmXHUwYTlmIixtbToiJWQgXHUwYWFlXHUwYWJmXHUwYWE4XHUwYWJmXHUwYTlmIixoOiJcdTBhOGZc''@;'; put 'put ''dTBhOTUgXHUwYTk1XHUwYWIyXHUwYWJlXHUwYTk1IixoaDoiJWQgXHUwYTk1XHUwYWIyXHUwYWJlXHUwYTk1IixkOiJcdTBhOGZcdTBhOTUgXHUwYWE2XHUwYWJmXHUwYWI1XHUwYWI4IixkZDoiJWQgXHUwYWE2XHUwYWJmXHUwYWI1XHUwYWI4IixNOiJcdTBhOGZcdTBhOTUgXHUwYWFlXHUw''@;'; put 'put ''YWI5XHUwYWJmXHUwYWE4XHUwYWNiIixNTToiJWQgXHUwYWFlXHUwYWI5XHUwYWJmXHUwYWE4XHUwYWNiIix5OiJcdTBhOGZcdTBhOTUgXHUwYWI1XHUwYWIwXHUwYWNkXHUwYWI3Iix5eToiJWQgXHUwYWI1XHUwYWIwXHUwYWNkXHUwYWI3In0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJu''@;'; put 'put ''IFUucmVwbGFjZSgvW1x1MGFlN1x1MGFlOFx1MGFlOVx1MGFlYVx1MGFlYlx1MGFlY1x1MGFlZFx1MGFlZVx1MGFlZlx1MGFlNl0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0''@;'; put 'put ''dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwYWIwXHUwYWJlXHUwYWE0fFx1MGFhY1x1MGFhYVx1MGFjYlx1MGFiMHxcdTBhYjhcdTBhYjVcdTBhYmVcdTBhYjB8XHUwYWI4XHUwYWJlXHUwYTgyXHUwYTljLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gMTI9PT1VJiYo''@;'; put 'put ''VT0wKSwiXHUwYWIwXHUwYWJlXHUwYWE0Ij09PVE/VTw0P1U6VSsxMjoiXHUwYWI4XHUwYWI1XHUwYWJlXHUwYWIwIj09PVE/VToiXHUwYWFjXHUwYWFhXHUwYWNiXHUwYWIwIj09PVE/VT49MTA/VTpVKzEyOiJcdTBhYjhcdTBhYmVcdTBhODJcdTBhOWMiPT09UT9VKzEyOnZvaWQgMH0sbWVy''@;'; put 'put ''aWRpZW06ZnVuY3Rpb24oVSxRLFope3JldHVybiBVPDQ/Ilx1MGFiMFx1MGFiZVx1MGFhNCI6VTwxMD8iXHUwYWI4XHUwYWI1XHUwYWJlXHUwYWIwIjpVPDE3PyJcdTBhYWNcdTBhYWFcdTBhY2JcdTBhYjAiOlU8MjA/Ilx1MGFiOFx1MGFiZVx1MGE4Mlx1MGE5YyI6Ilx1MGFiMFx1MGFiZVx1''@;'; put 'put ''MGFhNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDc1MzY6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJoZSIse21vbnRoczoiXHUwNWQ5XHUwNWUwXHUwNWQ1XHUwNWQwXHUwNWU4X1x1MDVlNFx1MDVkMVx1''@;'; put 'put ''MDVlOFx1MDVkNVx1MDVkMFx1MDVlOF9cdTA1ZGVcdTA1ZThcdTA1ZTVfXHUwNWQwXHUwNWU0XHUwNWU4XHUwNWQ5XHUwNWRjX1x1MDVkZVx1MDVkMFx1MDVkOV9cdTA1ZDlcdTA1ZDVcdTA1ZTBcdTA1ZDlfXHUwNWQ5XHUwNWQ1XHUwNWRjXHUwNWQ5X1x1MDVkMFx1MDVkNVx1MDVkMlx1MDVk''@;'; put 'put ''NVx1MDVlMVx1MDVkOF9cdTA1ZTFcdTA1ZTRcdTA1ZDhcdTA1ZGVcdTA1ZDFcdTA1ZThfXHUwNWQwXHUwNWQ1XHUwNWU3XHUwNWQ4XHUwNWQ1XHUwNWQxXHUwNWU4X1x1MDVlMFx1MDVkNVx1MDVkMVx1MDVkZVx1MDVkMVx1MDVlOF9cdTA1ZDNcdTA1ZTZcdTA1ZGVcdTA1ZDFcdTA1ZTgiLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDVkOVx1MDVlMFx1MDVkNVx1MDVmM19cdTA1ZTRcdTA1ZDFcdTA1ZThcdTA1ZjNfXHUwNWRlXHUwNWU4XHUwNWU1X1x1MDVkMFx1MDVlNFx1MDVlOFx1MDVmM19cdTA1ZGVcdTA1ZDBcdTA1ZDlfXHUwNWQ5XHUwNWQ1XHUwNWUwXHUwNWQ5X1x1MDVk''@;'; put 'put ''OVx1MDVkNVx1MDVkY1x1MDVkOV9cdTA1ZDBcdTA1ZDVcdTA1ZDJcdTA1ZjNfXHUwNWUxXHUwNWU0XHUwNWQ4XHUwNWYzX1x1MDVkMFx1MDVkNVx1MDVlN1x1MDVmM19cdTA1ZTBcdTA1ZDVcdTA1ZDFcdTA1ZjNfXHUwNWQzXHUwNWU2XHUwNWRlXHUwNWYzIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''OiJcdTA1ZThcdTA1ZDBcdTA1ZTlcdTA1ZDVcdTA1ZGZfXHUwNWU5XHUwNWUwXHUwNWQ5X1x1MDVlOVx1MDVkY1x1MDVkOVx1MDVlOVx1MDVkOV9cdTA1ZThcdTA1ZDFcdTA1ZDlcdTA1ZTJcdTA1ZDlfXHUwNWQ3XHUwNWRlXHUwNWQ5XHUwNWU5XHUwNWQ5X1x1MDVlOVx1MDVkOVx1MDVlOVx1''@;'; put 'put ''MDVkOV9cdTA1ZTlcdTA1ZDFcdTA1ZWEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNWQwXHUwNWYzX1x1MDVkMVx1MDVmM19cdTA1ZDJcdTA1ZjNfXHUwNWQzXHUwNWYzX1x1MDVkNFx1MDVmM19cdTA1ZDVcdTA1ZjNfXHUwNWU5XHUwNWYzIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWlu''@;'; put 'put ''OiJcdTA1ZDBfXHUwNWQxX1x1MDVkMl9cdTA1ZDNfXHUwNWQ0X1x1MDVkNV9cdTA1ZTkiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW1x1MDVkMV1NTU1NIFlZWVkiLExMTDoiRCBbXHUwNWQxXU1NTU0g''@;'; put 'put ''WVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBbXHUwNWQxXU1NTU0gWVlZWSBISDptbSIsbDoiRC9NL1lZWVkiLGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkgSEg6bW0iLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNWQ0XHUwNWQ5''@;'; put 'put ''XHUwNWQ1XHUwNWRkIFx1MDVkMVx1MDViZV1MVCIsbmV4dERheToiW1x1MDVkZVx1MDVkN1x1MDVlOCBcdTA1ZDFcdTA1YmVdTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA1ZDFcdTA1ZTlcdTA1ZTJcdTA1ZDRdIExUIixsYXN0RGF5OiJbXHUwNWQwXHUwNWVhXHUwNWRlXHUwNWQ1XHUwNWRjIFx1''@;'; put 'put ''MDVkMVx1MDViZV1MVCIsbGFzdFdlZWs6IltcdTA1ZDFcdTA1ZDlcdTA1ZDVcdTA1ZGRdIGRkZGQgW1x1MDVkNFx1MDVkMFx1MDVkN1x1MDVlOFx1MDVkNVx1MDVkZiBcdTA1ZDFcdTA1ZTlcdTA1ZTJcdTA1ZDRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA1''@;'; put 'put ''ZDFcdTA1ZTJcdTA1ZDVcdTA1ZDMgJXMiLHBhc3Q6Ilx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkOSAlcyIsczoiXHUwNWRlXHUwNWUxXHUwNWU0XHUwNWU4IFx1MDVlOVx1MDVlMFx1MDVkOVx1MDVkNVx1MDVlYSIsc3M6IiVkIFx1MDVlOVx1MDVlMFx1MDVkOVx1MDVkNVx1MDVlYSIsbToiXHUw''@;'; put 'put ''NWQzXHUwNWU3XHUwNWQ0IixtbToiJWQgXHUwNWQzXHUwNWU3XHUwNWQ1XHUwNWVhIixoOiJcdTA1ZTlcdTA1ZTJcdTA1ZDQiLGhoOmZ1bmN0aW9uKEUpe3JldHVybiAyPT09RT8iXHUwNWU5XHUwNWUyXHUwNWVhXHUwNWQ5XHUwNWQ5XHUwNWRkIjpFKyIgXHUwNWU5XHUwNWUyXHUwNWQ1XHUw''@;'; put 'put ''NWVhIn0sZDoiXHUwNWQ5XHUwNWQ1XHUwNWRkIixkZDpmdW5jdGlvbihFKXtyZXR1cm4gMj09PUU/Ilx1MDVkOVx1MDVkNVx1MDVkZVx1MDVkOVx1MDVkOVx1MDVkZCI6RSsiIFx1MDVkOVx1MDVkZVx1MDVkOVx1MDVkZCJ9LE06Ilx1MDVkN1x1MDVkNVx1MDVkM1x1MDVlOSIsTU06ZnVuY3Rp''@;'; put 'put ''b24oRSl7cmV0dXJuIDI9PT1FPyJcdTA1ZDdcdTA1ZDVcdTA1ZDNcdTA1ZTlcdTA1ZDlcdTA1ZDlcdTA1ZGQiOkUrIiBcdTA1ZDdcdTA1ZDVcdTA1ZDNcdTA1ZTlcdTA1ZDlcdTA1ZGQifSx5OiJcdTA1ZTlcdTA1ZTBcdTA1ZDQiLHl5OmZ1bmN0aW9uKEUpe3JldHVybiAyPT09RT8iXHUwNWU5''@;'; put 'put ''XHUwNWUwXHUwNWVhXHUwNWQ5XHUwNWQ5XHUwNWRkIjpFJTEwPT0wJiYxMCE9PUU/RSsiIFx1MDVlOVx1MDVlMFx1MDVkNCI6RSsiIFx1MDVlOVx1MDVlMFx1MDVkOVx1MDVkZCJ9fSxtZXJpZGllbVBhcnNlOi9cdTA1ZDBcdTA1ZDdcdTA1ZDQiXHUwNWU2fFx1MDVkY1x1MDVlNFx1MDVlMFx1''@;'; put 'put ''MDVkNCJcdTA1ZTZ8XHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZHxcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkfFx1MDVkY1x1MDVlNFx1MDVl''@;'; put 'put ''MFx1MDVkNVx1MDVlYSBcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTh8XHUwNWQxXHUwNWQxXHUwNWQ1XHUwNWU3XHUwNWU4fFx1MDVkMVx1MDVlMlx1MDVlOFx1MDVkMS9pLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuL14oXHUwNWQwXHUwNWQ3XHUwNWQ0Ilx1MDVlNnxcdTA1ZDBcdTA1ZDdcdTA1''@;'; put 'put ''ZThcdTA1ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkfFx1MDVkMVx1MDVlMlx1MDVlOFx1MDVkMSkkLy50ZXN0KEUpfSxtZXJpZGllbTpmdW5jdGlvbihFLE1lLFUpe3JldHVybiBFPDU/Ilx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkNVx1MDVlYSBcdTA1ZDFc''@;'; put 'put ''dTA1ZDVcdTA1ZTdcdTA1ZTgiOkU8MTA/Ilx1MDVkMVx1MDVkMVx1MDVkNVx1MDVlN1x1MDVlOCI6RTwxMj9VPydcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDQiXHUwNWU2JzoiXHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVk''@;'; put 'put ''ZCI6RTwxOD9VPydcdTA1ZDBcdTA1ZDdcdTA1ZDQiXHUwNWU2JzoiXHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZCI6Ilx1MDVkMVx1MDVlMlx1MDVlOFx1MDVkMSJ9fSl9KEwoMTU0MzkpKX0sOTYzMzU6ZnVuY3Rpb24o''@;'; put 'put ''WGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MDk2NyIsMjoiXHUwOTY4IiwzOiJcdTA5NjkiLDQ6Ilx1MDk2YSIsNToiXHUwOTZiIiw2OiJcdTA5NmMiLDc6Ilx1MDk2ZCIsODoiXHUwOTZlIiw5OiJcdTA5NmYiLDA6Ilx1MDk2NiJ9LEU9eyJcdTA5Njci''@;'; put 'put ''OiIxIiwiXHUwOTY4IjoiMiIsIlx1MDk2OSI6IjMiLCJcdTA5NmEiOiI0IiwiXHUwOTZiIjoiNSIsIlx1MDk2YyI6IjYiLCJcdTA5NmQiOiI3IiwiXHUwOTZlIjoiOCIsIlx1MDk2ZiI6IjkiLCJcdTA5NjYiOiIwIn0sTWU9Wy9eXHUwOTFjXHUwOTI4L2ksL15cdTA5MmJcdTA5M2NcdTA5MzB8''@;'; put 'put ''XHUwOTJiXHUwOTMwL2ksL15cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWEvaSwvXlx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OC9pLC9eXHUwOTJlXHUwOTA4L2ksL15cdTA5MWNcdTA5NDJcdTA5MjgvaSwvXlx1MDkxY1x1MDk0MVx1MDkzMi9pLC9eXHUwOTA1XHUwOTE3L2ks''@;'; put 'put ''L15cdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJ8XHUwOTM4XHUwOTNmXHUwOTI0L2ksL15cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDIvaSwvXlx1MDkyOFx1MDkzNXxcdTA5MjhcdTA5MzVcdTA5MDIvaSwvXlx1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMnxcdTA5MjZcdTA5M2ZcdTA5Mzgv''@;'; put 'put ''aV07Z2UuZGVmaW5lTG9jYWxlKCJoaSIse21vbnRoczp7Zm9ybWF0OiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBc''@;'; put 'put ''dTA5NDhcdTA5MzJfXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDhfXHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0X1x1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5''@;'; put 'put ''NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwX1x1MDkyNlx1MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMCIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUw''@;'; put 'put ''OTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzJfXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDhfXHUwOTA1''@;'; put 'put ''XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0X1x1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMlx1MDky''@;'; put 'put ''Y1x1MDkzMCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkyOC5fXHUwOTJiXHUwOTNjXHUwOTMwLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4Ll9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQyXHUwOTI4X1x1''@;'; put 'put ''MDkxY1x1MDk0MVx1MDkzMi5fXHUwOTA1XHUwOTE3Ll9cdTA5MzhcdTA5M2ZcdTA5MjQuX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mi5fXHUwOTI4XHUwOTM1Ll9cdTA5MjZcdTA5M2ZcdTA5MzguIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5MzBcdTA5MzVcdTA5M2ZcdTA5MzVc''@;'; put 'put ''dTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzMlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyXHUwOTM1XHUwOTNl''@;'; put 'put ''XHUwOTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTMwXHUwOTM1XHUwOTNmX1x1MDkzOFx1MDk0Ylx1MDkyZV9cdTA5MmVc''@;'; put 'put ''dTA5MDJcdTA5MTdcdTA5MzJfXHUwOTJjXHUwOTQxXHUwOTI3X1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Ml9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MzBfXHUwOTM4XHUwOTRiX1x1MDkyZVx1''@;'; put 'put ''MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTE3XHUwOTQxX1x1MDkzNlx1MDk0MV9cdTA5MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixMVFM6IkEgaDptbTpzcyBcdTA5MmNcdTA5MWNcdTA5NDciLEw6IkREL01NL1lZWVkiLExMOiJE''@;'; put 'put ''IE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDcifSxtb250aHNQYXJzZTpNZSxsb25nTW9udGhzUGFyc2U6TWUsc2hvcnRNb250aHNQYXJzZTpbL15c''@;'; put 'put ''dTA5MWNcdTA5MjgvaSwvXlx1MDkyYlx1MDkzY1x1MDkzMC9pLC9eXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhL2ksL15cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDgvaSwvXlx1MDkyZVx1MDkwOC9pLC9eXHUwOTFjXHUwOTQyXHUwOTI4L2ksL15cdTA5MWNcdTA5NDFcdTA5''@;'; put 'put ''MzIvaSwvXlx1MDkwNVx1MDkxNy9pLC9eXHUwOTM4XHUwOTNmXHUwOTI0L2ksL15cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDIvaSwvXlx1MDkyOFx1MDkzNS9pLC9eXHUwOTI2XHUwOTNmXHUwOTM4L2ldLG1vbnRoc1JlZ2V4Oi9eKFx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0''@;'; put 'put ''MHxcdTA5MWNcdTA5MjhcLj98XHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5M2NcdTA5MzBcLj98XHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBc''@;'; put 'put ''dTA5NDhcdTA5MzJ8XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XC4/fFx1MDkyZVx1MDkwOD98XHUwOTFjXHUwOTQyXHUwOTI4P3xcdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDh8XHUwOTFjXHUwOTQxXHUwOTMyXC4/fFx1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyNHxc''@;'; put 'put ''dTA5MDVcdTA5MTdcLj98XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwfFx1MDkw''@;'; put 'put ''NVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVwuP3xcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI2XHUw''@;'; put 'put ''OTNmXHUwOTM4XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFwuPykvaSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MWNcdTA5MjhcLj98XHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1''@;'; put 'put ''MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5M2NcdTA5MzBcLj98XHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzJ8XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XC4/fFx1MDkyZVx1MDkwOD98XHUw''@;'; put 'put ''OTFjXHUwOTQyXHUwOTI4P3xcdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDh8XHUwOTFjXHUwOTQxXHUwOTMyXC4/fFx1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyNHxcdTA5MDVcdTA5MTdcLj98XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkz''@;'; put 'put ''OFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwfFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5''@;'; put 'put ''MzB8XHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVwuP3xcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFwuPykvaSxtb250aHNTdHJp''@;'; put 'put ''Y3RSZWdleDovXihcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDA/fFx1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDA/fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUw''@;'; put 'put ''OTMwXHUwOTQ4XHUwOTMyP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4P3xcdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjQ/fFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5Mzhc''@;'; put 'put ''dTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0P1wuP3xcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzB8XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXC4/fFx1MDkyOFx1MDkzNVx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkz''@;'; put 'put ''MHxcdTA5MjhcdTA5MzVcdTA5MDJcdTA5MmNcdTA5MzA/fFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJcdTA5MmNcdTA5MzA/KS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oXHUwOTFjXHUwOTI4XC4/fFx1MDky''@;'; put 'put ''Ylx1MDkzY1x1MDkzMFwuP3xcdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWE/fFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFwuP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXC4/fFx1MDkwNVx1MDkxN1wuP3xcdTA5MzhcdTA5''@;'; put 'put ''M2ZcdTA5MjRcLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXC4/fFx1MDkyOFx1MDkzNVwuP3xcdTA5MjZcdTA5M2ZcdTA5MzhcLj8pL2ksY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA5MDZcdTA5MWNdIExUIixuZXh0RGF5OiJbXHUwOTE1XHUwOTMyXSBMVCIsbmV4dFdlZWs6ImRk''@;'; put 'put ''ZGQsIExUIixsYXN0RGF5OiJbXHUwOTE1XHUwOTMyXSBMVCIsbGFzdFdlZWs6IltcdTA5MmFcdTA5M2ZcdTA5MWJcdTA5MzJcdTA5NDddIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA5MmVcdTA5NDdcdTA5MDIiLHBhc3Q6IiVzIFx1MDkyYVx1''@;'; put 'put ''MDkzOVx1MDkzMlx1MDk0NyIsczoiXHUwOTE1XHUwOTQxXHUwOTFiIFx1MDkzOVx1MDk0MCBcdTA5MTVcdTA5NGRcdTA5MzdcdTA5MjMiLHNzOiIlZCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJcdTA5MjEiLG06Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5MWYiLG1tOiIl''@;'; put 'put ''ZCBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5MWYiLGg6Ilx1MDkwZlx1MDkxNSBcdTA5MThcdTA5MDJcdTA5MWZcdTA5M2UiLGhoOiIlZCBcdTA5MThcdTA5MDJcdTA5MWZcdTA5NDciLGQ6Ilx1MDkwZlx1MDkxNSBcdTA5MjZcdTA5M2ZcdTA5MjgiLGRkOiIlZCBcdTA5MjZcdTA5M2ZcdTA5Mjgi''@;'; put 'put ''LE06Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5MzlcdTA5NDBcdTA5MjhcdTA5NDciLE1NOiIlZCBcdTA5MmVcdTA5MzlcdTA5NDBcdTA5MjhcdTA5NDciLHk6Ilx1MDkwZlx1MDkxNSBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzciLHl5OiIlZCBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzcifSxw''@;'; put 'put ''cmVwYXJzZTpmdW5jdGlvbihaKXtyZXR1cm4gWi5yZXBsYWNlKC9bXHUwOTY3XHUwOTY4XHUwOTY5XHUwOTZhXHUwOTZiXHUwOTZjXHUwOTZkXHUwOTZlXHUwOTZmXHUwOTY2XS9nLGZ1bmN0aW9uKGllKXtyZXR1cm4gRVtpZV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihaKXtyZXR1cm4gWi5y''@;'; put 'put ''ZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKGllKXtyZXR1cm4gQltpZV19KX0sbWVyaWRpZW1QYXJzZTovXHUwOTMwXHUwOTNlXHUwOTI0fFx1MDkzOFx1MDk0MVx1MDkyY1x1MDkzOXxcdTA5MjZcdTA5NGJcdTA5MmFcdTA5MzlcdTA5MzB8XHUwOTM2XHUwOTNlXHUwOTJlLyxtZXJpZGllbUhvdXI6''@;'; put 'put ''ZnVuY3Rpb24oWixpZSl7cmV0dXJuIDEyPT09WiYmKFo9MCksIlx1MDkzMFx1MDkzZVx1MDkyNCI9PT1pZT9aPDQ/WjpaKzEyOiJcdTA5MzhcdTA5NDFcdTA5MmNcdTA5MzkiPT09aWU/WjoiXHUwOTI2XHUwOTRiXHUwOTJhXHUwOTM5XHUwOTMwIj09PWllP1o+PTEwP1o6WisxMjoiXHUwOTM2''@;'; put 'put ''XHUwOTNlXHUwOTJlIj09PWllP1orMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihaLGllLGxlKXtyZXR1cm4gWjw0PyJcdTA5MzBcdTA5M2VcdTA5MjQiOlo8MTA/Ilx1MDkzOFx1MDk0MVx1MDkyY1x1MDkzOSI6WjwxNz8iXHUwOTI2XHUwOTRiXHUwOTJhXHUwOTM5XHUwOTMwIjpaPDIw''@;'; put 'put ''PyJcdTA5MzZcdTA5M2VcdTA5MmUiOiJcdTA5MzBcdTA5M2VcdTA5MjQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSw3NDU4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoTWUsVSxRKXt2YXIgWj1NZSsiICI7c3dpdGNo''@;'; put 'put ''KFEpe2Nhc2Uic3MiOnJldHVybiBaKygxPT09TWU/InNla3VuZGEiOjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/InNla3VuZGUiOiJzZWt1bmRpIik7Y2FzZSJtIjpyZXR1cm4gVT8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gWisoMT09PU1lPyJtaW51dGEi''@;'; put 'put ''OjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/Im1pbnV0ZSI6Im1pbnV0YSIpO2Nhc2UiaCI6cmV0dXJuIFU/ImplZGFuIHNhdCI6ImplZG5vZyBzYXRhIjtjYXNlImhoIjpyZXR1cm4gWisoMT09PU1lPyJzYXQiOjI9PT1NZXx8Mz09PU1lfHw0PT09TWU/InNhdGEiOiJzYXRpIik7Y2FzZSJkZCI6''@;'; put 'put ''cmV0dXJuIForKDE9PT1NZT8iZGFuIjoiZGFuYSIpO2Nhc2UiTU0iOnJldHVybiBaKygxPT09TWU/Im1qZXNlYyI6Mj09PU1lfHwzPT09TWV8fDQ9PT1NZT8ibWplc2VjYSI6Im1qZXNlY2kiKTtjYXNlInl5IjpyZXR1cm4gWisoMT09PU1lPyJnb2RpbmEiOjI9PT1NZXx8Mz09PU1lfHw0PT09''@;'; put 'put ''TWU/ImdvZGluZSI6ImdvZGluYSIpfX1nZS5kZWZpbmVMb2NhbGUoImhyIix7bW9udGhzOntmb3JtYXQ6InNpamVcdTAxMGRuamFfdmVsamFcdTAxMGRlX29cdTAxN2V1amthX3RyYXZuamFfc3ZpYm5qYV9saXBuamFfc3JwbmphX2tvbG92b3phX3J1am5hX2xpc3RvcGFkYV9zdHVkZW5vZ2Ff''@;'; put 'put ''cHJvc2luY2EiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToic2lqZVx1MDEwZGFual92ZWxqYVx1MDEwZGFfb1x1MDE3ZXVqYWtfdHJhdmFual9zdmliYW5qX2xpcGFual9zcnBhbmpfa29sb3Zvel9ydWphbl9saXN0b3BhZF9zdHVkZW5pX3Byb3NpbmFjIi5zcGxpdCgiXyIpfSxtb250aHNTaG9y''@;'; put 'put ''dDoic2lqLl92ZWxqLl9vXHUwMTdldS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9zdHUuX3Byby4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRh''@;'; put 'put ''a19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAxMGRlX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25n''@;'; put 'put ''RGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU0gWVlZWSIsTExMOiJEbyBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRG8gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5''@;'; put 'put ''OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nh''@;'; put 'put ''c2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdVx1MDEwZGVyIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltwcm9cdTAxNjFsdV0gW25lZGplbGp1XSBbdV0gTFQi''@;'; put 'put ''O2Nhc2UgMzpyZXR1cm4iW3Byb1x1MDE2MWx1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIltwcm9cdTAxNjFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm9cdTAxNjFsaV0gZGRkZCBbdV0gTFQifX0sc2FtZUVsc2U6''@;'; put 'put ''IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJwYXIgc2VrdW5kaSIsc3M6QixtOkIsbW06QixoOkIsaGg6QixkOiJkYW4iLGRkOkIsTToibWplc2VjIixNTTpCLHk6ImdvZGludSIseXk6Qn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwy''@;'; put 'put ''fVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDU2NTQwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJ2YXNceGUxcm5hcCBoXHhlOXRmXHUwMTUxbiBrZWRkZW4gc3plcmRceGUxbiBjc1x4ZmN0XHhm''@;'; put 'put ''NnJ0XHhmNmtceGY2biBwXHhlOW50ZWtlbiBzem9tYmF0b24iLnNwbGl0KCIgIik7ZnVuY3Rpb24gRShRLFosaWUsbGUpe3ZhciBZPVE7c3dpdGNoKGllKXtjYXNlInMiOnJldHVybiBsZXx8Wj8iblx4ZTloXHhlMW55IG1ceGUxc29kcGVyYyI6Im5ceGU5aFx4ZTFueSBtXHhlMXNvZHBlcmNl''@;'; put 'put ''IjtjYXNlInNzIjpyZXR1cm4gWSsobGV8fFopPyIgbVx4ZTFzb2RwZXJjIjoiIG1ceGUxc29kcGVyY2UiO2Nhc2UibSI6cmV0dXJuImVneSIrKGxlfHxaPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UibW0iOnJldHVybiBZKyhsZXx8Wj8iIHBlcmMiOiIgcGVyY2UiKTtjYXNlImgiOnJldHVybiJl''@;'; put 'put ''Z3kiKyhsZXx8Wj8iIFx4ZjNyYSI6IiBceGYzclx4ZTFqYSIpO2Nhc2UiaGgiOnJldHVybiBZKyhsZXx8Wj8iIFx4ZjNyYSI6IiBceGYzclx4ZTFqYSIpO2Nhc2UiZCI6cmV0dXJuImVneSIrKGxlfHxaPyIgbmFwIjoiIG5hcGphIik7Y2FzZSJkZCI6cmV0dXJuIFkrKGxlfHxaPyIgbmFwIjoi''@;'; put 'put ''IG5hcGphIik7Y2FzZSJNIjpyZXR1cm4iZWd5IisobGV8fFo/IiBoXHhmM25hcCI6IiBoXHhmM25hcGphIik7Y2FzZSJNTSI6cmV0dXJuIFkrKGxlfHxaPyIgaFx4ZjNuYXAiOiIgaFx4ZjNuYXBqYSIpO2Nhc2UieSI6cmV0dXJuImVneSIrKGxlfHxaPyIgXHhlOXYiOiIgXHhlOXZlIik7Y2Fz''@;'; put 'put ''ZSJ5eSI6cmV0dXJuIFkrKGxlfHxaPyIgXHhlOXYiOiIgXHhlOXZlIil9cmV0dXJuIiJ9ZnVuY3Rpb24gTWUoUSl7cmV0dXJuKFE/IiI6IlttXHhmYWx0XSAiKSsiWyIrQlt0aGlzLmRheSgpXSsiXSBMVFsta29yXSJ9Z2UuZGVmaW5lTG9jYWxlKCJodSIse21vbnRoczoiamFudVx4ZTFyX2Zl''@;'; put 'put ''YnJ1XHhlMXJfbVx4ZTFyY2l1c19ceGUxcHJpbGlzX21ceGUxanVzX2pceGZhbml1c19qXHhmYWxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0XHhmM2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21ceGUxcmMuX1x4ZTFwci5fbVx4''@;'; put 'put ''ZTFqLl9qXHhmYW4uX2pceGZhbC5fYXVnLl9zemVwdC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoidmFzXHhlMXJuYXBfaFx4ZTl0Zlx1MDE1MV9rZWRkX3N6ZXJkYV9jc1x4ZmN0XHhmNnJ0XHhmNmtfcFx4ZTludGVrX3N6b21iYXQi''@;'; put 'put ''LnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoidmFzX2hceGU5dF9rZWRkX3N6ZV9jc1x4ZmN0X3BceGU5bl9zem8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InZfaF9rX3N6ZV9jc19wX3N6byIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoi''@;'; put 'put ''WVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4gSDptbSIsTExMTDoiWVlZWS4gTU1NTSBELiwgZGRkZCBIOm1tIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKFEpe3JldHVybiJ1Ij09PVEuY2hhckF0KDEpLnRvTG93ZXJDYXNl''@;'; put 'put ''KCl9LG1lcmlkaWVtOmZ1bmN0aW9uKFEsWixpZSl7cmV0dXJuIFE8MTI/ITA9PT1pZT8iZGUiOiJERSI6ITA9PT1pZT8iZHUiOiJEVSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gTWUuY2FsbCh0aGlzLCEwKX0sbGFzdERheToiW3RlZ25hcF0gTFRbLWtvcl0iLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIE1lLmNhbGwodGhpcywhMSl9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIG1ceGZhbHZhIixwYXN0OiIlcyIsczpFLHNzOkUsbTpF''@;'; put 'put ''LG1tOkUsaDpFLGhoOkUsZDpFLGRkOkUsTTpFLE1NOkUseTpFLHl5OkV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2NTI4MzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImh5LWFtIix7bW9udGhzOntmb3JtYXQ6Ilx1MDU3MFx1MDU3OFx1MDU4Mlx1MDU3Nlx1MDU3ZVx1MDU2MVx1MDU4MFx1MDU2Yl9cdTA1ODNcdTA1NjVcdTA1N2ZcdTA1ODBcdTA1N2VcdTA1NjFcdTA1ODBcdTA1NmJfXHUwNTc0XHUwNTYxXHUw''@;'; put 'put ''NTgwXHUwNTdmXHUwNTZiX1x1MDU2MVx1MDU3YVx1MDU4MFx1MDU2Ylx1MDU2Y1x1MDU2Yl9cdTA1NzRcdTA1NjFcdTA1NzVcdTA1NmJcdTA1N2RcdTA1NmJfXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTc2XHUwNTZiXHUwNTdkXHUwNTZiX1x1MDU3MFx1MDU3OFx1MDU4Mlx1MDU2Y1x1MDU2Ylx1''@;'; put 'put ''MDU3ZFx1MDU2Yl9cdTA1ODVcdTA1NjNcdTA1NzhcdTA1N2RcdTA1N2ZcdTA1NzhcdTA1N2RcdTA1NmJfXHUwNTdkXHUwNTY1XHUwNTdhXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwXHUwNTZiX1x1MDU3MFx1MDU3OFx1MDU2Zlx1MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1''@;'; put 'put ''MDU2NVx1MDU4MFx1MDU2Yl9cdTA1NzZcdTA1NzhcdTA1NzVcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBcdTA1NmJfXHUwNTY0XHUwNTY1XHUwNTZmXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwXHUwNTZiIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6Ilx1MDU3MFx1''@;'; put 'put ''MDU3OFx1MDU4Mlx1MDU3Nlx1MDU3ZVx1MDU2MVx1MDU4MF9cdTA1ODNcdTA1NjVcdTA1N2ZcdTA1ODBcdTA1N2VcdTA1NjFcdTA1ODBfXHUwNTc0XHUwNTYxXHUwNTgwXHUwNTdmX1x1MDU2MVx1MDU3YVx1MDU4MFx1MDU2Ylx1MDU2Y19cdTA1NzRcdTA1NjFcdTA1NzVcdTA1NmJcdTA1N2Rf''@;'; put 'put ''XHUwNTcwXHUwNTc4XHUwNTgyXHUwNTc2XHUwNTZiXHUwNTdkX1x1MDU3MFx1MDU3OFx1MDU4Mlx1MDU2Y1x1MDU2Ylx1MDU3ZF9cdTA1ODVcdTA1NjNcdTA1NzhcdTA1N2RcdTA1N2ZcdTA1NzhcdTA1N2RfXHUwNTdkXHUwNTY1XHUwNTdhXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1''@;'; put 'put ''XHUwNTgwX1x1MDU3MFx1MDU3OFx1MDU2Zlx1MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MF9cdTA1NzZcdTA1NzhcdTA1NzVcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBfXHUwNTY0XHUwNTY1XHUwNTZmXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgw''@;'; put 'put ''Ii5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoiXHUwNTcwXHUwNTc2XHUwNTdlX1x1MDU4M1x1MDU3Zlx1MDU4MF9cdTA1NzRcdTA1ODBcdTA1N2ZfXHUwNTYxXHUwNTdhXHUwNTgwX1x1MDU3NFx1MDU3NVx1MDU3ZF9cdTA1NzBcdTA1NzZcdTA1N2RfXHUwNTcwXHUwNTZjXHUwNTdkX1x1MDU4''@;'; put 'put ''NVx1MDU2M1x1MDU3ZF9cdTA1N2RcdTA1N2FcdTA1N2ZfXHUwNTcwXHUwNTZmXHUwNTdmX1x1MDU3Nlx1MDU3NFx1MDU2Ml9cdTA1NjRcdTA1NmZcdTA1N2YiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDU2Zlx1MDU2Ylx1MDU4MFx1MDU2MVx1MDU2Zlx1MDU2Yl9cdTA1NjVcdTA1ODBcdTA1''@;'; put 'put ''NmZcdTA1NzhcdTA1ODJcdTA1NzdcdTA1NjFcdTA1NjJcdTA1NjlcdTA1NmJfXHUwNTY1XHUwNTgwXHUwNTY1XHUwNTg0XHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU3OVx1MDU3OFx1MDU4MFx1MDU2NVx1MDU4NFx1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1''@;'; put 'put ''NzBcdTA1NmJcdTA1NzZcdTA1NjNcdTA1NzdcdTA1NjFcdTA1NjJcdTA1NjlcdTA1NmJfXHUwNTc4XHUwNTgyXHUwNTgwXHUwNTYyXHUwNTYxXHUwNTY5X1x1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2MVx1MDU2OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA1NmZcdTA1ODBcdTA1NmZf''@;'; put 'put ''XHUwNTY1XHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU4NF9cdTA1NzlcdTA1ODBcdTA1ODRfXHUwNTcwXHUwNTc2XHUwNTYzX1x1MDU3OFx1MDU4Mlx1MDU4MFx1MDU2Ml9cdTA1NzdcdTA1NjJcdTA1NjkiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDU2Zlx1MDU4MFx1MDU2Zl9c''@;'; put 'put ''dTA1NjVcdTA1ODBcdTA1NmZfXHUwNTY1XHUwNTgwXHUwNTg0X1x1MDU3OVx1MDU4MFx1MDU4NF9cdTA1NzBcdTA1NzZcdTA1NjNfXHUwNTc4XHUwNTgyXHUwNTgwXHUwNTYyX1x1MDU3N1x1MDU2Mlx1MDU2OSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhI''@;'; put 'put ''Om1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkgXHUwNTY5LiIsTExMOiJEIE1NTU0gWVlZWSBcdTA1NjkuLCBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgXHUwNTY5LiwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDU2MVx1MDU3NVx1MDU3ZFx1MDU4''@;'; put 'put ''NVx1MDU4MF0gTFQiLG5leHREYXk6IltcdTA1N2VcdTA1NjFcdTA1NzJcdTA1NjhdIExUIixsYXN0RGF5OiJbXHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbXHUwNTg1XHUwNTgwXHUwNTY4IFx1MDU2YVx1MDU2MVx1MDU3NFx1''@;'; put 'put ''MDU2OF0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbXHUwNTYxXHUwNTc2XHUwNTgxXHUwNTYxXHUwNTZlXSBkZGRkIFtcdTA1ODVcdTA1ODBcdTA1NjggXHUwNTZhXHUwNTYxXHUwNTc0XHUwNTY4XSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz''@;'; put 'put ''IFx1MDU3MFx1MDU2NVx1MDU3Zlx1MDU3OCIscGFzdDoiJXMgXHUwNTYxXHUwNTdjXHUwNTYxXHUwNTdiIixzOiJcdTA1NzRcdTA1NmIgXHUwNTg0XHUwNTYxXHUwNTc2XHUwNTZiIFx1MDU3ZVx1MDU2MVx1MDU3NVx1MDU4MFx1MDU2Zlx1MDU3NVx1MDU2MVx1MDU3NiIsc3M6IiVkIFx1MDU3''@;'; put 'put ''ZVx1MDU2MVx1MDU3NVx1MDU4MFx1MDU2Zlx1MDU3NVx1MDU2MVx1MDU3NiIsbToiXHUwNTgwXHUwNTc4XHUwNTdhXHUwNTY1IixtbToiJWQgXHUwNTgwXHUwNTc4XHUwNTdhXHUwNTY1IixoOiJcdTA1NmFcdTA1NjFcdTA1NzQiLGhoOiIlZCBcdTA1NmFcdTA1NjFcdTA1NzQiLGQ6Ilx1MDU4''@;'; put 'put ''NVx1MDU4MCIsZGQ6IiVkIFx1MDU4NVx1MDU4MCIsTToiXHUwNTYxXHUwNTc0XHUwNTZiXHUwNTdkIixNTToiJWQgXHUwNTYxXHUwNTc0XHUwNTZiXHUwNTdkIix5OiJcdTA1N2ZcdTA1NjFcdTA1ODBcdTA1NmIiLHl5OiIlZCBcdTA1N2ZcdTA1NjFcdTA1ODBcdTA1NmIifSxtZXJpZGllbVBh''@;'; put 'put ''cnNlOi9cdTA1NjNcdTA1NmJcdTA1NzdcdTA1NjVcdTA1ODBcdTA1N2VcdTA1NjF8XHUwNTYxXHUwNTdjXHUwNTYxXHUwNTdlXHUwNTc4XHUwNTdmXHUwNTdlXHUwNTYxfFx1MDU4MVx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3ZVx1MDU2MXxcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZc''@;'; put 'put ''dTA1NzhcdTA1NzVcdTA1NjFcdTA1NzYvLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuL14oXHUwNTgxXHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTdlXHUwNTYxfFx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3OFx1MDU3NVx1MDU2MVx1MDU3NikkLy50ZXN0KEUpfSxtZXJpZGllbTpm''@;'; put 'put ''dW5jdGlvbihFKXtyZXR1cm4gRTw0PyJcdTA1NjNcdTA1NmJcdTA1NzdcdTA1NjVcdTA1ODBcdTA1N2VcdTA1NjEiOkU8MTI/Ilx1MDU2MVx1MDU3Y1x1MDU2MVx1MDU3ZVx1MDU3OFx1MDU3Zlx1MDU3ZVx1MDU2MSI6RTwxNz8iXHUwNTgxXHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTdl''@;'; put 'put ''XHUwNTYxIjoiXHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTc4XHUwNTc1XHUwNTYxXHUwNTc2In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfXxcZHsxLDJ9LShcdTA1NmJcdTA1NzZ8XHUwNTgwXHUwNTY0KS8sb3JkaW5hbDpmdW5jdGlvbihFLE1lKXtzd2l0Y2goTWUpe2Nh''@;'; put 'put ''c2UiREREIjpjYXNlInciOmNhc2UiVyI6Y2FzZSJERERvIjpyZXR1cm4gMT09PUU/RSsiLVx1MDU2Ylx1MDU3NiI6RSsiLVx1MDU4MFx1MDU2NCI7ZGVmYXVsdDpyZXR1cm4gRX19LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDk4NzgwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5j''@;'; put 'put ''dGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiaWQiLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJK''@;'; put 'put ''YW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWd0X1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTWluZ2d1X1NlbmluX1NlbGFzYV9SYWJ1X0thbWlzX0p1bWF0X1NhYnR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ik1pbl9TZW5fU2VsX1JhYl9LYW1fSnVtX1Nh''@;'; put 'put ''YiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTWdfU25fU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0i''@;'; put 'put ''LExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHNpYW5nfHNvcmV8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihFLE1lKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwicGFnaSI9PT1NZT9FOiJzaWFuZyI9PT1NZT9FPj0xMT9FOkUr''@;'; put 'put ''MTI6InNvcmUiPT09TWV8fCJtYWxhbSI9PT1NZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTwxMT8icGFnaSI6RTwxNT8ic2lhbmciOkU8MTk/InNvcmUiOiJtYWxhbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGFyaSBpbmkgcHVrdWxdIExUIixuZXh0''@;'; put 'put ''RGF5OiJbQmVzb2sgcHVrdWxdIExUIixuZXh0V2VlazoiZGRkZCBbcHVrdWxdIExUIixsYXN0RGF5OiJbS2VtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsYWx1IHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVz''@;'; put 'put ''IHlhbmcgbGFsdSIsczoiYmViZXJhcGEgZGV0aWsiLHNzOiIlZCBkZXRpayIsbToic2VtZW5pdCIsbW06IiVkIG1lbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFo''@;'; put 'put ''dW4ifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSwxNDIwNTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKFUpe3JldHVybiBVJTEwMD09MTF8fFUlMTAhPTF9ZnVuY3Rpb24gRShVLFEsWixpZSl7dmFyIGxlPVUrIiAiO3N3''@;'; put 'put ''aXRjaChaKXtjYXNlInMiOnJldHVybiBRfHxpZT8ibm9ra3JhciBzZWtceGZhbmR1ciI6Im5va2tydW0gc2VrXHhmYW5kdW0iO2Nhc2Uic3MiOnJldHVybiBCKFUpP2xlKyhRfHxpZT8ic2VrXHhmYW5kdXIiOiJzZWtceGZhbmR1bSIpOmxlKyJzZWtceGZhbmRhIjtjYXNlIm0iOnJldHVybiBR''@;'; put 'put ''PyJtXHhlZG5ceGZhdGEiOiJtXHhlZG5ceGZhdHUiO2Nhc2UibW0iOnJldHVybiBCKFUpP2xlKyhRfHxpZT8ibVx4ZWRuXHhmYXR1ciI6Im1ceGVkblx4ZmF0dW0iKTpRP2xlKyJtXHhlZG5ceGZhdGEiOmxlKyJtXHhlZG5ceGZhdHUiO2Nhc2UiaGgiOnJldHVybiBCKFUpP2xlKyhRfHxpZT8i''@;'; put 'put ''a2x1a2t1c3R1bmRpciI6ImtsdWtrdXN0dW5kdW0iKTpsZSsia2x1a2t1c3R1bmQiO2Nhc2UiZCI6cmV0dXJuIFE/ImRhZ3VyIjppZT8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIEIoVSk/UT9sZSsiZGFnYXIiOmxlKyhpZT8iZGFnYSI6ImRceGY2Z3VtIik6UT9sZSsiZGFndXIiOmxl''@;'; put 'put ''KyhpZT8iZGFnIjoiZGVnaSIpO2Nhc2UiTSI6cmV0dXJuIFE/Im1ceGUxbnVceGYwdXIiOmllPyJtXHhlMW51XHhmMCI6Im1ceGUxbnVceGYwaSI7Y2FzZSJNTSI6cmV0dXJuIEIoVSk/UT9sZSsibVx4ZTFudVx4ZjBpciI6bGUrKGllPyJtXHhlMW51XHhmMGkiOiJtXHhlMW51XHhmMHVtIik6''@;'; put 'put ''UT9sZSsibVx4ZTFudVx4ZjB1ciI6bGUrKGllPyJtXHhlMW51XHhmMCI6Im1ceGUxbnVceGYwaSIpO2Nhc2UieSI6cmV0dXJuIFF8fGllPyJceGUxciI6Ilx4ZTFyaSI7Y2FzZSJ5eSI6cmV0dXJuIEIoVSk/bGUrKFF8fGllPyJceGUxciI6Ilx4ZTFydW0iKTpsZSsoUXx8aWU/Ilx4ZTFyIjoi''@;'; put 'put ''XHhlMXJpIil9fWdlLmRlZmluZUxvY2FsZSgiaXMiLHttb250aHM6Imphblx4ZmFhcl9mZWJyXHhmYWFyX21hcnNfYXByXHhlZGxfbWFceGVkX2pceGZhblx4ZWRfalx4ZmFsXHhlZF9ceGUxZ1x4ZmFzdF9zZXB0ZW1iZXJfb2t0XHhmM2Jlcl9uXHhmM3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQo''@;'; put 'put ''Il8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hXHhlZF9qXHhmYW5falx4ZmFsX1x4ZTFnXHhmYV9zZXBfb2t0X25ceGYzdl9kZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51ZGFndXJfbVx4ZTFudWRhZ3VyX1x4ZmVyaVx4ZjBqdWRhZ3VyX21pXHhmMHZpa3VkYWd1cl9m''@;'; put 'put ''aW1tdHVkYWd1cl9mXHhmNnN0dWRhZ3VyX2xhdWdhcmRhZ3VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1bl9tXHhlMW5fXHhmZXJpX21pXHhmMF9maW1fZlx4ZjZzX2xhdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTVx4ZTFfXHhkZXJfTWlfRmlfRlx4ZjZfTGEiLnNwbGl0''@;'; put 'put ''KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6''@;'; put 'put ''IltceGVkIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbXHhlMSBtb3JndW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltceGVkIGdceGU2ciBrbC5dIExUIixsYXN0V2VlazoiW3NceGVkXHhmMGFzdGFdIGRkZGQgW2tsLl0gTFQiLHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6ImVmdGlyICVzIixwYXN0OiJmeXJpciAlcyBzXHhlZFx4ZjBhbiIsczpFLHNzOkUsbTpFLG1tOkUsaDoia2x1a2t1c3R1bmQiLGhoOkUsZDpFLGRkOkUsTTpFLE1NOkUseTpFLHl5OkV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5h''@;'; put 'put ''bDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwyOTk4NTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoIml0LWNoIix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1''@;'; put 'put ''Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21lbmljYV9sdW5lZFx4''@;'; put 'put ''ZWNfbWFydGVkXHhlY19tZXJjb2xlZFx4ZWNfZ2lvdmVkXHhlY192ZW5lcmRceGVjX3NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21lX2dpX3ZlX3NhIi5zcGxpdCgi''@;'; put 'put ''XyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbT2dnaSBhbGxlXSBM''@;'; put 'put ''VCIsbmV4dERheToiW0RvbWFuaSBhbGxlXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FsbGVdIExUIixsYXN0RGF5OiJbSWVyaSBhbGxlXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCk/IltsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUIjoiW2xvIHNjb3Jzb10g''@;'; put 'put ''ZGRkZCBbYWxsZV0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uKEUpe3JldHVybigvXlswLTldLiskLy50ZXN0KEUpPyJ0cmEiOiJpbiIpKyIgIitFfSxwYXN0OiIlcyBmYSIsczoiYWxjdW5pIHNlY29uZGkiLHNzOiIlZCBzZWNvbmRpIixtOiJ1biBt''@;'; put 'put ''aW51dG8iLG1tOiIlZCBtaW51dGkiLGg6InVuJ29yYSIsaGg6IiVkIG9yZSIsZDoidW4gZ2lvcm5vIixkZDoiJWQgZ2lvcm5pIixNOiJ1biBtZXNlIixNTToiJWQgbWVzaSIseToidW4gYW5ubyIseXk6IiVkIGFubmkifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3Jk''@;'; put 'put ''aW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwzNDIxMTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoIml0Iix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9f''@;'; put 'put ''Z2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21lbmljYV9sdW5l''@;'; put 'put ''ZFx4ZWNfbWFydGVkXHhlY19tZXJjb2xlZFx4ZWNfZ2lvdmVkXHhlY192ZW5lcmRceGVjX3NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21lX2dpX3ZlX3NhIi5zcGxp''@;'; put 'put ''dCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIltPZ2dpIGEiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltEb21hbmkgYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1M''@;'; put 'put ''VCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltJZXJpIGEiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMu''@;'; put 'put ''aG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKT8iW0xhIHNjb3JzYV0gZGRkZCBbYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCI6IltMbyBzY29yc29dIGRkZGQg''@;'; put 'put ''W2EiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ0cmEgJXMiLHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsc3M6IiVkIHNlY29uZGkiLG06InVuIG1pbnV0''@;'; put 'put ''byIsbW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLHc6InVuYSBzZXR0aW1hbmEiLHd3OiIlZCBzZXR0aW1hbmUiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LGRheU9mTW9u''@;'; put 'put ''dGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDMxMDAzOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiamEiLHtlcmFzOlt7c2luY2U6''@;'; put 'put ''IjIwMTktMDUtMDEiLG9mZnNldDoxLG5hbWU6Ilx1NGVlNFx1NTQ4YyIsbmFycm93OiJcdTMyZmYiLGFiYnI6IlIifSx7c2luY2U6IjE5ODktMDEtMDgiLHVudGlsOiIyMDE5LTA0LTMwIixvZmZzZXQ6MSxuYW1lOiJcdTVlNzNcdTYyMTAiLG5hcnJvdzoiXHUzMzdiIixhYmJyOiJIIn0se3Np''@;'; put 'put ''bmNlOiIxOTI2LTEyLTI1Iix1bnRpbDoiMTk4OS0wMS0wNyIsb2Zmc2V0OjEsbmFtZToiXHU2NjJkXHU1NDhjIixuYXJyb3c6Ilx1MzM3YyIsYWJicjoiUyJ9LHtzaW5jZToiMTkxMi0wNy0zMCIsdW50aWw6IjE5MjYtMTItMjQiLG9mZnNldDoxLG5hbWU6Ilx1NTkyN1x1NmI2MyIsbmFycm93''@;'; put 'put ''OiJcdTMzN2QiLGFiYnI6IlQifSx7c2luY2U6IjE4NzMtMDEtMDEiLHVudGlsOiIxOTEyLTA3LTI5IixvZmZzZXQ6NixuYW1lOiJcdTY2MGVcdTZjYmIiLG5hcnJvdzoiXHUzMzdlIixhYmJyOiJNIn0se3NpbmNlOiIwMDAxLTAxLTAxIix1bnRpbDoiMTg3My0xMi0zMSIsb2Zmc2V0OjEsbmFt''@;'; put 'put ''ZToiXHU4OTdmXHU2NmE2IixuYXJyb3c6IkFEIixhYmJyOiJBRCJ9LHtzaW5jZToiMDAwMC0xMi0zMSIsdW50aWw6LTEvMCxvZmZzZXQ6MSxuYW1lOiJcdTdkMDBcdTUxNDNcdTUyNGQiLG5hcnJvdzoiQkMiLGFiYnI6IkJDIn1dLGVyYVllYXJPcmRpbmFsUmVnZXg6LyhcdTUxNDN8XGQrKVx1''@;'; put 'put ''NWU3NC8sZXJhWWVhck9yZGluYWxQYXJzZTpmdW5jdGlvbihFLE1lKXtyZXR1cm4iXHU1MTQzIj09PU1lWzFdPzE6cGFyc2VJbnQoTWVbMV18fEUsMTApfSxtb250aHM6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2''@;'; put 'put ''NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2NzA4XzVcdTY3MDhfNlx1NjcwOF83XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5czoiXHU2NWU1XHU2NmRjXHU2NWU1X1x1NjcwOFx1NjZkY1x1NjVlNV9cdTcwNmJcdTY2ZGNcdTY1ZTVfXHU2YzM0XHU2NmRjXHU2NWU1X1x1NjcyOFx1NjZkY1x1NjVlNV9cdTkxZDFcdTY2ZGNcdTY1ZTVfXHU1NzFmXHU2NmRjXHU2NWU1Ii5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''U2hvcnQ6Ilx1NjVlNV9cdTY3MDhfXHU3MDZiX1x1NmMzNF9cdTY3MjhfXHU5MWQxX1x1NTcxZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHU2NWU1X1x1NjcwOF9cdTcwNmJfXHU2YzM0X1x1NjcyOF9cdTkxZDFfXHU1NzFmIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6''@;'; put 'put ''bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixMTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgZGRkZCBISDptbSIsbDoiWVlZWS9NTS9ERCIsbGw6IllZ''@;'; put 'put ''WVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLGxsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNShkZGQpIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MzQ4XHU1MjRkfFx1NTM0OFx1NWY4Yy9pLGlzUE06ZnVuY3Rpb24oRSl7''@;'; put 'put ''cmV0dXJuIlx1NTM0OFx1NWY4YyI9PT1FfSxtZXJpZGllbTpmdW5jdGlvbihFLE1lLFUpe3JldHVybiBFPDEyPyJcdTUzNDhcdTUyNGQiOiJcdTUzNDhcdTVmOGMifSxjYWxlbmRhcjp7c2FtZURheToiW1x1NGVjYVx1NjVlNV0gTFQiLG5leHREYXk6IltcdTY2MGVcdTY1ZTVdIExUIixuZXh0''@;'; put 'put ''V2VlazpmdW5jdGlvbihFKXtyZXR1cm4gRS53ZWVrKCkhPT10aGlzLndlZWsoKT8iW1x1Njc2NVx1OTAzMV1kZGRkIExUIjoiZGRkZCBMVCJ9LGxhc3REYXk6IltcdTY2MjhcdTY1ZTVdIExUIixsYXN0V2VlazpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy53ZWVrKCkhPT1FLndlZWsoKT8iW1x1''@;'; put 'put ''NTE0OFx1OTAzMV1kZGRkIExUIjoiZGRkZCBMVCJ9LHNhbWVFbHNlOiJMIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1NjVlNS8sb3JkaW5hbDpmdW5jdGlvbihFLE1lKXtzd2l0Y2goTWUpe2Nhc2UieSI6cmV0dXJuIDE9PT1FPyJcdTUxNDNcdTVlNzQiOkUrIlx1NWU3NCI7''@;'; put 'put ''Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gRSsiXHU2NWU1IjtkZWZhdWx0OnJldHVybiBFfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1ZjhjIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU2NTcwXHU3OWQyIixzczoiJWRcdTc5ZDIiLG06IjFcdTUyMDYiLG1tOiIlZFx1NTIw''@;'; put 'put ''NiIsaDoiMVx1NjY0Mlx1OTU5MyIsaGg6IiVkXHU2NjQyXHU5NTkzIixkOiIxXHU2NWU1IixkZDoiJWRcdTY1ZTUiLE06IjFcdTMwZjZcdTY3MDgiLE1NOiIlZFx1MzBmNlx1NjcwOCIseToiMVx1NWU3NCIseXk6IiVkXHU1ZTc0In19KX0oTCgxNTQzOSkpfSw2MDQyMDpmdW5jdGlvbihYZSxK''@;'; put 'put ''ZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoImp2Iix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3BlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250''@;'; put 'put ''aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vcF9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5lbl9TZWxvc29fUmVidV9LZW1pc19KZW11d2FoX1NlcHR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ik1pbl9TZW5fU2VsX1Jl''@;'; put 'put ''Yl9LZW1fSmVtX1NlcCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTWdfU25fU2xfUmJfS21fSm1fU3AiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtw''@;'; put 'put ''dWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9lbmppbmd8c2l5YW5nfHNvbnRlbnxuZGFsdS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEUsTWUpe3JldHVybiAxMj09PUUmJihFPTApLCJlbmppbmciPT09TWU/RToic2l5''@;'; put 'put ''YW5nIj09PU1lP0U+PTExP0U6RSsxMjoic29udGVuIj09PU1lfHwibmRhbHUiPT09TWU/RSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsTWUsVSl7cmV0dXJuIEU8MTE/ImVuamluZyI6RTwxNT8ic2l5YW5nIjpFPDE5PyJzb250ZW4iOiJuZGFsdSJ9LGNhbGVuZGFyOntzYW1lRGF5''@;'; put 'put ''OiJbRGludGVuIHB1bmlrbyBwdWt1bF0gTFQiLG5leHREYXk6IltNYmVuamFuZyBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLYWxhIHdpbmdpIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2tlcGVuZ2tlciBwdWt1bF0gTFQiLHNhbWVFbHNlOiJM''@;'; put 'put ''In0scmVsYXRpdmVUaW1lOntmdXR1cmU6IndvbnRlbiBpbmcgJXMiLHBhc3Q6IiVzIGluZ2thbmcga2VwZW5na2VyIixzOiJzYXdldGF3aXMgZGV0aWsiLHNzOiIlZCBkZXRpayIsbToic2V0dW5nZ2FsIG1lbml0IixtbToiJWQgbWVuaXQiLGg6InNldHVuZ2dhbCBqYW0iLGhoOiIlZCBqYW0i''@;'; put 'put ''LGQ6InNlZGludGVuIixkZDoiJWQgZGludGVuIixNOiJzZXd1bGFuIixNTToiJWQgd3VsYW4iLHk6InNldGF1biIseXk6IiVkIHRhdW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw0MDg1MTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijtn''@;'; put 'put ''ZS5kZWZpbmVMb2NhbGUoImthIix7bW9udGhzOiJcdTEwZDhcdTEwZDBcdTEwZGNcdTEwZDVcdTEwZDBcdTEwZTBcdTEwZDhfXHUxMGQ3XHUxMGQ0XHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ1XHUxMGQwXHUxMGRhXHUxMGQ4X1x1MTBkYlx1MTBkMFx1MTBlMFx1MTBlMlx1MTBkOF9cdTEwZDBc''@;'; put 'put ''dTEwZGVcdTEwZTBcdTEwZDhcdTEwZGFcdTEwZDhfXHUxMGRiXHUxMGQwXHUxMGQ4XHUxMGUxXHUxMGQ4X1x1MTBkOFx1MTBkNVx1MTBkY1x1MTBkOFx1MTBlMVx1MTBkOF9cdTEwZDhcdTEwZDVcdTEwZGFcdTEwZDhcdTEwZTFcdTEwZDhfXHUxMGQwXHUxMGQyXHUxMGQ1XHUxMGQ4XHUxMGUx''@;'; put 'put ''XHUxMGUyXHUxMGRkX1x1MTBlMVx1MTBkNFx1MTBlNVx1MTBlMlx1MTBkNFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBlMFx1MTBkOF9cdTEwZGRcdTEwZTVcdTEwZTJcdTEwZGRcdTEwZGJcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDhfXHUxMGRjXHUxMGRkXHUxMGQ0XHUxMGRiXHUxMGQxXHUxMGQ0''@;'; put 'put ''XHUxMGUwXHUxMGQ4X1x1MTBkM1x1MTBkNFx1MTBkOVx1MTBkNFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBlMFx1MTBkOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUxMGQ4XHUxMGQwXHUxMGRjX1x1MTBkN1x1MTBkNFx1MTBkMV9cdTEwZGJcdTEwZDBcdTEwZTBfXHUxMGQwXHUxMGRlXHUx''@;'; put 'put ''MGUwX1x1MTBkYlx1MTBkMFx1MTBkOF9cdTEwZDhcdTEwZDVcdTEwZGNfXHUxMGQ4XHUxMGQ1XHUxMGRhX1x1MTBkMFx1MTBkMlx1MTBkNV9cdTEwZTFcdTEwZDRcdTEwZTVfXHUxMGRkXHUxMGU1XHUxMGUyX1x1MTBkY1x1MTBkZFx1MTBkNF9cdTEwZDNcdTEwZDRcdTEwZDkiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXM6e3N0YW5kYWxvbmU6Ilx1MTBkOVx1MTBkNVx1MTBkOFx1MTBlMFx1MTBkMF9cdTEwZGRcdTEwZTBcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGUxXHUxMGQwXHUxMGRiXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4X1x1MTBk''@;'; put 'put ''ZFx1MTBkN1x1MTBlZVx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZWVcdTEwZTNcdTEwZDdcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGRlXHUxMGQwXHUxMGUwXHUxMGQwXHUxMGUxXHUxMGQ5XHUxMGQ0XHUxMGQ1XHUxMGQ4X1x1MTBl''@;'; put 'put ''OFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOCIuc3BsaXQoIl8iKSxmb3JtYXQ6Ilx1MTBkOVx1MTBkNVx1MTBkOFx1MTBlMFx1MTBkMFx1MTBlMV9cdTEwZGRcdTEwZTBcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGUxXHUxMGQwXHUxMGRiXHUxMGU4XHUx''@;'; put 'put ''MGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxX1x1MTBkZFx1MTBkN1x1MTBlZVx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBlMV9cdTEwZWVcdTEwZTNcdTEwZDdcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGRlXHUxMGQwXHUxMGUwXHUxMGQwXHUx''@;'; put 'put ''MGUxXHUxMGQ5XHUxMGQ0XHUxMGQ1XHUxMGUxX1x1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBlMSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovKFx1MTBlY1x1MTBkOFx1MTBkY1x1MTBkMHxcdTEwZThcdTEwZDRcdTEwZGJcdTEwZDNcdTEwZDRcdTEwZDIpL30sd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiXHUxMGQ5XHUxMGQ1XHUxMGQ4X1x1MTBkZFx1MTBlMFx1MTBlOF9cdTEwZTFcdTEwZDBcdTEwZGJfXHUxMGRkXHUxMGQ3XHUxMGVlX1x1MTBlZVx1MTBlM1x1MTBkN19cdTEwZGVcdTEwZDBcdTEwZTBfXHUxMGU4XHUxMGQwXHUxMGQxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTEw''@;'; put 'put ''ZDlcdTEwZDVfXHUxMGRkXHUxMGUwX1x1MTBlMVx1MTBkMF9cdTEwZGRcdTEwZDdfXHUxMGVlXHUxMGUzX1x1MTBkZVx1MTBkMF9cdTEwZThcdTEwZDAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUxMGQzXHUxMGU2XHUxMGQ0XHUxMGUxXSBMVFstXHUxMGQ2XHUxMGQ0XSIsbmV4dERheToiW1x1MTBlZVx1MTBkNVx1MTBkMFx1MTBkYV0g''@;'; put 'put ''TFRbLVx1MTBkNlx1MTBkNF0iLGxhc3REYXk6IltcdTEwZDJcdTEwZTNcdTEwZThcdTEwZDhcdTEwZGNdIExUWy1cdTEwZDZcdTEwZDRdIixuZXh0V2VlazoiW1x1MTBlOFx1MTBkNFx1MTBkYlx1MTBkM1x1MTBkNFx1MTBkMl0gZGRkZCBMVFstXHUxMGQ2XHUxMGQ0XSIsbGFzdFdlZWs6Iltc''@;'; put 'put ''dTEwZWNcdTEwZDhcdTEwZGNcdTEwZDBdIGRkZGQgTFQtXHUxMGQ2XHUxMGQ0IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uKEUpe3JldHVybiBFLnJlcGxhY2UoLyhcdTEwZWNcdTEwZDBcdTEwZGJ8XHUxMGVjXHUxMGUzXHUxMGQ3fFx1MTBlMVx1MTBkMFx1''@;'; put 'put ''MTBkMFx1MTBkN3xcdTEwZWNcdTEwZDRcdTEwZGF8XHUxMGQzXHUxMGU2fFx1MTBkN1x1MTBkNSkoXHUxMGQ4fFx1MTBkNCkvLGZ1bmN0aW9uKE1lLFUsUSl7cmV0dXJuIlx1MTBkOCI9PT1RP1UrIlx1MTBlOFx1MTBkOCI6VStRKyJcdTEwZThcdTEwZDgifSl9LHBhc3Q6ZnVuY3Rpb24oRSl7''@;'; put 'put ''cmV0dXJuLyhcdTEwZWNcdTEwZDBcdTEwZGJcdTEwZDh8XHUxMGVjXHUxMGUzXHUxMGQ3XHUxMGQ4fFx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN1x1MTBkOHxcdTEwZDNcdTEwZTZcdTEwZDR8XHUxMGQ3XHUxMGQ1XHUxMGQ0KS8udGVzdChFKT9FLnJlcGxhY2UoLyhcdTEwZDh8XHUxMGQ0KSQv''@;'; put 'put ''LCJcdTEwZDhcdTEwZTEgXHUxMGVjXHUxMGQ4XHUxMGRjIik6L1x1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOC8udGVzdChFKT9FLnJlcGxhY2UoL1x1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOCQvLCJcdTEwZWNcdTEwZGFcdTEwZDhcdTEwZTEgXHUxMGVjXHUxMGQ4XHUxMGRjIik6RX0sczoiXHUx''@;'; put 'put ''MGUwXHUxMGQwXHUxMGRiXHUxMGQzXHUxMGQ0XHUxMGRjXHUxMGQ4XHUxMGRiXHUxMGQ0IFx1MTBlY1x1MTBkMFx1MTBkYlx1MTBkOCIsc3M6IiVkIFx1MTBlY1x1MTBkMFx1MTBkYlx1MTBkOCIsbToiXHUxMGVjXHUxMGUzXHUxMGQ3XHUxMGQ4IixtbToiJWQgXHUxMGVjXHUxMGUzXHUxMGQ3''@;'; put 'put ''XHUxMGQ4IixoOiJcdTEwZTFcdTEwZDBcdTEwZDBcdTEwZDdcdTEwZDgiLGhoOiIlZCBcdTEwZTFcdTEwZDBcdTEwZDBcdTEwZDdcdTEwZDgiLGQ6Ilx1MTBkM1x1MTBlNlx1MTBkNCIsZGQ6IiVkIFx1MTBkM1x1MTBlNlx1MTBkNCIsTToiXHUxMGQ3XHUxMGQ1XHUxMGQ0IixNTToiJWQgXHUx''@;'; put 'put ''MGQ3XHUxMGQ1XHUxMGQ0Iix5OiJcdTEwZWNcdTEwZDRcdTEwZGFcdTEwZDgiLHl5OiIlZCBcdTEwZWNcdTEwZDRcdTEwZGFcdTEwZDgifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi8wfDEtXHUxMGRhXHUxMGQ4fFx1MTBkYlx1MTBkNC1cZHsxLDJ9fFxkezEsMn0tXHUxMGQ0LyxvcmRpbmFs''@;'; put 'put ''OmZ1bmN0aW9uKEUpe3JldHVybiAwPT09RT9FOjE9PT1FP0UrIi1cdTEwZGFcdTEwZDgiOkU8MjB8fEU8PTEwMCYmRSUyMD09MHx8RSUxMDA9PTA/Ilx1MTBkYlx1MTBkNC0iK0U6RSsiLVx1MTBkNCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDE2MDc0OmZ1bmN0aW9uKFhl''@;'; put 'put ''LEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXswOiItXHUwNDQ4XHUwNDU2IiwxOiItXHUwNDQ4XHUwNDU2IiwyOiItXHUwNDQ4XHUwNDU2IiwzOiItXHUwNDQ4XHUwNDU2Iiw0OiItXHUwNDQ4XHUwNDU2Iiw1OiItXHUwNDQ4XHUwNDU2Iiw2OiItXHUwNDQ4XHUwNDRi''@;'; put 'put ''Iiw3OiItXHUwNDQ4XHUwNDU2Iiw4OiItXHUwNDQ4XHUwNDU2Iiw5OiItXHUwNDQ4XHUwNDRiIiwxMDoiLVx1MDQ0OFx1MDQ0YiIsMjA6Ii1cdTA0NDhcdTA0NGIiLDMwOiItXHUwNDQ4XHUwNDRiIiw0MDoiLVx1MDQ0OFx1MDQ0YiIsNTA6Ii1cdTA0NDhcdTA0NTYiLDYwOiItXHUwNDQ4XHUw''@;'; put 'put ''NDRiIiw3MDoiLVx1MDQ0OFx1MDQ1NiIsODA6Ii1cdTA0NDhcdTA0NTYiLDkwOiItXHUwNDQ4XHUwNDRiIiwxMDA6Ii1cdTA0NDhcdTA0NTYifTtnZS5kZWZpbmVMb2NhbGUoImtrIix7bW9udGhzOiJcdTA0OWJcdTA0MzBcdTA0YTNcdTA0NDJcdTA0MzBcdTA0NDBfXHUwNDMwXHUwNDliXHUw''@;'; put 'put ''NDNmXHUwNDMwXHUwNDNkX1x1MDQzZFx1MDQzMFx1MDQ0M1x1MDQ0MFx1MDQ0Ylx1MDQzN19cdTA0NDFcdTA0ZDlcdTA0NDNcdTA0NTZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDNjXHUwNDRiXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQ0M1x1MDQ0MVx1MDQ0Ylx1MDQzY19cdTA0NDhcdTA0NTZc''@;'; put 'put ''dTA0M2JcdTA0MzRcdTA0MzVfXHUwNDQyXHUwNDMwXHUwNDNjXHUwNDRiXHUwNDM3X1x1MDQ5Ylx1MDQ0Ylx1MDQ0MFx1MDQzYVx1MDRhZlx1MDQzOVx1MDQzNVx1MDQzYV9cdTA0OWJcdTA0MzBcdTA0MzdcdTA0MzBcdTA0M2RfXHUwNDliXHUwNDMwXHUwNDQwXHUwNDMwXHUwNDQ4XHUwNDMw''@;'; put 'put ''X1x1MDQzNlx1MDQzNVx1MDQzYlx1MDQ0Mlx1MDQzZVx1MDQ5Ylx1MDQ0MVx1MDQzMFx1MDQzZCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDliXHUwNDMwXHUwNGEzX1x1MDQzMFx1MDQ5Ylx1MDQzZl9cdTA0M2RcdTA0MzBcdTA0NDNfXHUwNDQxXHUwNGQ5XHUwNDQzX1x1MDQzY1x1''@;'; put 'put ''MDQzMFx1MDQzY19cdTA0M2NcdTA0MzBcdTA0NDNfXHUwNDQ4XHUwNDU2XHUwNDNiX1x1MDQ0Mlx1MDQzMFx1MDQzY19cdTA0OWJcdTA0NGJcdTA0NDBfXHUwNDliXHUwNDMwXHUwNDM3X1x1MDQ5Ylx1MDQzMFx1MDQ0MF9cdTA0MzZcdTA0MzVcdTA0M2IiLnNwbGl0KCJfIiksd2Vla2RheXM6''@;'; put 'put ''Ilx1MDQzNlx1MDQzNVx1MDQzYVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0MzRcdTA0YWZcdTA0MzlcdTA0NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDQxXHUwNDM1XHUwNDM5XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQ0MVx1MDRkOVx1MDQ0''@;'; put 'put ''MFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0MzFcdTA0MzVcdTA0MzlcdTA0NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDM2XHUwNGIxXHUwNDNjXHUwNDMwX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1NiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJc''@;'; put 'put ''dTA0MzZcdTA0MzVcdTA0M2FfXHUwNDM0XHUwNGFmXHUwNDM5X1x1MDQ0MVx1MDQzNVx1MDQzOV9cdTA0NDFcdTA0ZDlcdTA0NDBfXHUwNDMxXHUwNDM1XHUwNDM5X1x1MDQzNlx1MDRiMVx1MDQzY19cdTA0NDFcdTA0MzVcdTA0M2QiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzNlx1''@;'; put 'put ''MDQzYV9cdTA0MzRcdTA0MzlfXHUwNDQxXHUwNDM5X1x1MDQ0MVx1MDQ0MF9cdTA0MzFcdTA0MzlfXHUwNDM2XHUwNDNjX1x1MDQ0MVx1MDQzZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZ''@;'; put 'put ''WVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MTFcdTA0YWZcdTA0MzNcdTA0NTZcdTA0M2QgXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyXSBMVCIsbmV4dERheToiW1x1MDQxNVx1''@;'; put 'put ''MDQ0MFx1MDQ0Mlx1MDQzNVx1MDRhMyBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyXSBMVCIsbGFzdERheToiW1x1MDQxYVx1MDQzNVx1MDQ0OFx1MDQzNSBcdTA0NDFcdTA0MzBcdTA0OTNc''@;'; put 'put ''dTA0MzBcdTA0NDJdIExUIixsYXN0V2VlazoiW1x1MDRlOFx1MDQ0Mlx1MDQzYVx1MDQzNVx1MDQzZCBcdTA0MzBcdTA0M2ZcdTA0NDJcdTA0MzBcdTA0M2RcdTA0NGJcdTA0YTNdIGRkZGQgW1x1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRp''@;'; put 'put ''dmVUaW1lOntmdXR1cmU6IiVzIFx1MDQ1Nlx1MDQ0OFx1MDQ1Nlx1MDQzZFx1MDQzNFx1MDQzNSIscGFzdDoiJXMgXHUwNDMxXHUwNGIxXHUwNDQwXHUwNDRiXHUwNDNkIixzOiJcdTA0MzFcdTA0NTZcdTA0NDBcdTA0M2RcdTA0MzVcdTA0NDhcdTA0MzUgXHUwNDQxXHUwNDM1XHUwNDNhXHUw''@;'; put 'put ''NDQzXHUwNDNkXHUwNDM0IixzczoiJWQgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtOiJcdTA0MzFcdTA0NTZcdTA0NDAgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixoOiJcdTA0MzFc''@;'; put 'put ''dTA0NTZcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyIixkOiJcdTA0MzFcdTA0NTZcdTA0NDAgXHUwNDNhXHUwNGFmXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNGFmXHUwNDNkIixNOiJcdTA0MzFcdTA0''@;'; put 'put ''NTZcdTA0NDAgXHUwNDMwXHUwNDM5IixNTToiJWQgXHUwNDMwXHUwNDM5Iix5OiJcdTA0MzFcdTA0NTZcdTA0NDAgXHUwNDM2XHUwNDRiXHUwNDNiIix5eToiJWQgXHUwNDM2XHUwNDRiXHUwNDNiIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDQ4XHUwNDU2fFx1MDQ0''@;'; put 'put ''OFx1MDQ0YikvLG9yZGluYWw6ZnVuY3Rpb24oTWUpe3JldHVybiBNZSsoQltNZV18fEJbTWUlMTBdfHxCW01lPj0xMDA/MTAwOm51bGxdKX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNTMzNDM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIEI9ezE6Ilx1MTdlMSIsMjoiXHUxN2UyIiwzOiJcdTE3ZTMiLDQ6Ilx1MTdlNCIsNToiXHUxN2U1Iiw2OiJcdTE3ZTYiLDc6Ilx1MTdlNyIsODoiXHUxN2U4Iiw5OiJcdTE3ZTkiLDA6Ilx1MTdlMCJ9LEU9eyJcdTE3ZTEiOiIxIiwiXHUxN2UyIjoiMiIsIlx1MTdlMyI6IjMiLCJcdTE3''@;'; put 'put ''ZTQiOiI0IiwiXHUxN2U1IjoiNSIsIlx1MTdlNiI6IjYiLCJcdTE3ZTciOiI3IiwiXHUxN2U4IjoiOCIsIlx1MTdlOSI6IjkiLCJcdTE3ZTAiOiIwIn07Z2UuZGVmaW5lTG9jYWxlKCJrbSIse21vbnRoczoiXHUxNzk4XHUxNzgwXHUxNzlhXHUxN2I2X1x1MTc4MFx1MTdiYlx1MTc5OFx1MTdk''@;'; put 'put ''Mlx1MTc5N1x1MTdjOF9cdTE3OThcdTE3YjhcdTE3OTNcdTE3YjZfXHUxNzk4XHUxN2MxXHUxNzlmXHUxN2I2X1x1MTdhN1x1MTc5Zlx1MTc5N1x1MTdiNl9cdTE3OThcdTE3YjdcdTE3OTBcdTE3YmJcdTE3OTNcdTE3YjZfXHUxNzgwXHUxNzgwXHUxN2QyXHUxNzgwXHUxNzhhXHUxN2I2X1x1''@;'; put 'put ''MTc5Zlx1MTdiOFx1MTdhMFx1MTdiNl9cdTE3ODBcdTE3ODlcdTE3ZDJcdTE3ODlcdTE3YjZfXHUxNzhmXHUxN2JiXHUxNzliXHUxN2I2X1x1MTc5Y1x1MTdiN1x1MTc4NVx1MTdkMlx1MTc4Nlx1MTdiN1x1MTc4MFx1MTdiNl9cdTE3OTJcdTE3ZDJcdTE3OTNcdTE3YmMiLnNwbGl0KCJfIiks''@;'; put 'put ''bW9udGhzU2hvcnQ6Ilx1MTc5OFx1MTc4MFx1MTc5YVx1MTdiNl9cdTE3ODBcdTE3YmJcdTE3OThcdTE3ZDJcdTE3OTdcdTE3YzhfXHUxNzk4XHUxN2I4XHUxNzkzXHUxN2I2X1x1MTc5OFx1MTdjMVx1MTc5Zlx1MTdiNl9cdTE3YTdcdTE3OWZcdTE3OTdcdTE3YjZfXHUxNzk4XHUxN2I3XHUx''@;'; put 'put ''NzkwXHUxN2JiXHUxNzkzXHUxN2I2X1x1MTc4MFx1MTc4MFx1MTdkMlx1MTc4MFx1MTc4YVx1MTdiNl9cdTE3OWZcdTE3YjhcdTE3YTBcdTE3YjZfXHUxNzgwXHUxNzg5XHUxN2QyXHUxNzg5XHUxN2I2X1x1MTc4Zlx1MTdiYlx1MTc5Ylx1MTdiNl9cdTE3OWNcdTE3YjdcdTE3ODVcdTE3ZDJc''@;'; put 'put ''dTE3ODZcdTE3YjdcdTE3ODBcdTE3YjZfXHUxNzkyXHUxN2QyXHUxNzkzXHUxN2JjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTE3YTJcdTE3YjZcdTE3OTFcdTE3YjdcdTE3OGZcdTE3ZDJcdTE3OTlfXHUxNzg1XHUxN2QwXHUxNzkzXHUxN2QyXHUxNzkxX1x1MTdhMlx1MTc4NFx1MTdkMlx1''@;'; put 'put ''MTc4Mlx1MTdiNlx1MTc5YV9cdTE3OTZcdTE3YmJcdTE3OTJfXHUxNzk2XHUxN2QyXHUxNzlhXHUxN2EwXHUxNzlmXHUxN2QyXHUxNzk0XHUxNzhmXHUxN2I3XHUxN2NkX1x1MTc5Zlx1MTdiYlx1MTc4MFx1MTdkMlx1MTc5YV9cdTE3OWZcdTE3YzVcdTE3OWFcdTE3Y2QiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNTaG9ydDoiXHUxN2EyXHUxN2I2X1x1MTc4NV9cdTE3YTJfXHUxNzk2X1x1MTc5Nlx1MTdkMlx1MTc5YV9cdTE3OWZcdTE3YmJfXHUxNzlmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTE3YTJcdTE3YjZfXHUxNzg1X1x1MTdhMl9cdTE3OTZfXHUxNzk2XHUxN2QyXHUxNzlh''@;'; put 'put ''X1x1MTc5Zlx1MTdiYl9cdTE3OWYiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwg''@;'; put 'put ''RCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTE3OTZcdTE3ZDJcdTE3OWFcdTE3YjlcdTE3ODB8XHUxNzliXHUxN2QyXHUxNzg0XHUxN2I2XHUxNzg1Lyxpc1BNOmZ1bmN0aW9uKFUpe3JldHVybiJcdTE3OWJcdTE3ZDJcdTE3ODRcdTE3YjZcdTE3ODUiPT09VX0sbWVyaWRp''@;'; put 'put ''ZW06ZnVuY3Rpb24oVSxRLFope3JldHVybiBVPDEyPyJcdTE3OTZcdTE3ZDJcdTE3OWFcdTE3YjlcdTE3ODAiOiJcdTE3OWJcdTE3ZDJcdTE3ODRcdTE3YjZcdTE3ODUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MTc5MFx1MTdkMlx1MTc4NFx1MTdjM1x1MTc5M1x1MTdjMVx1MTdjNyBcdTE3''@;'; put 'put ''OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixuZXh0RGF5OiJbXHUxNzlmXHUxN2QyXHUxN2EyXHUxN2MyXHUxNzgwIFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixsYXN0RGF5OiJbXHUxNzk4XHUxN2Qy''@;'; put 'put ''XHUxNzlmXHUxN2I3XHUxNzliXHUxNzk4XHUxN2I3XHUxNzg5IFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTE3OWZcdTE3OTRcdTE3ZDJcdTE3OGZcdTE3YjZcdTE3YTBcdTE3Y2RcdTE3OThcdTE3YmJcdTE3OTNdIFtcdTE3OThcdTE3YzlcdTE3YzRc''@;'; put 'put ''dTE3ODRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MTc5MVx1MTdjMFx1MTc4ZiIscGFzdDoiJXNcdTE3OThcdTE3YmJcdTE3OTMiLHM6Ilx1MTc5NFx1MTdjOVx1MTdiYlx1MTc5M1x1MTdkMlx1MTc5OFx1MTdiNlx1MTc5M1x1MTc5Y1x1MTdiN1x1MTc5''@;'; put 'put ''M1x1MTdiNlx1MTc5MVx1MTdiOCIsc3M6IiVkIFx1MTc5Y1x1MTdiN1x1MTc5M1x1MTdiNlx1MTc5MVx1MTdiOCIsbToiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzkzXHUxN2I2XHUxNzkxXHUxN2I4IixtbToiJWQgXHUxNzkzXHUxN2I2XHUxNzkxXHUxN2I4IixoOiJcdTE3OThcdTE3YmRcdTE3''@;'; put 'put ''OTlcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODQiLGhoOiIlZCBcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODQiLGQ6Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc5MFx1MTdkMlx1MTc4NFx1MTdjMyIsZGQ6IiVkIFx1MTc5MFx1MTdkMlx1MTc4NFx1MTdjMyIsTToiXHUxNzk4XHUxN2JkXHUxNzk5XHUx''@;'; put 'put ''NzgxXHUxN2MyIixNTToiJWQgXHUxNzgxXHUxN2MyIix5OiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3ODZcdTE3ZDJcdTE3OTNcdTE3YjZcdTE3YzYiLHl5OiIlZCBcdTE3ODZcdTE3ZDJcdTE3OTNcdTE3YjZcdTE3YzYifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cdTE3OTFcdTE3YjhcZHsx''@;'; put 'put ''LDJ9LyxvcmRpbmFsOiJcdTE3OTFcdTE3YjglZCIscHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MTdlMVx1MTdlMlx1MTdlM1x1MTdlNFx1MTdlNVx1MTdlNlx1MTdlN1x1MTdlOFx1MTdlOVx1MTdlMF0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0''@;'; put 'put ''Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNDQ3OTk6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1''@;'; put 'put ''MGNlNyIsMjoiXHUwY2U4IiwzOiJcdTBjZTkiLDQ6Ilx1MGNlYSIsNToiXHUwY2ViIiw2OiJcdTBjZWMiLDc6Ilx1MGNlZCIsODoiXHUwY2VlIiw5OiJcdTBjZWYiLDA6Ilx1MGNlNiJ9LEU9eyJcdTBjZTciOiIxIiwiXHUwY2U4IjoiMiIsIlx1MGNlOSI6IjMiLCJcdTBjZWEiOiI0IiwiXHUw''@;'; put 'put ''Y2ViIjoiNSIsIlx1MGNlYyI6IjYiLCJcdTBjZWQiOiI3IiwiXHUwY2VlIjoiOCIsIlx1MGNlZiI6IjkiLCJcdTBjZTYiOiIwIn07Z2UuZGVmaW5lTG9jYWxlKCJrbiIse21vbnRoczoiXHUwYzljXHUwY2E4XHUwY2I1XHUwY2IwXHUwY2JmX1x1MGNhYlx1MGNjNlx1MGNhY1x1MGNjZFx1MGNi''@;'; put 'put ''MFx1MGNiNVx1MGNiMFx1MGNiZl9cdTBjYWVcdTBjYmVcdTBjYjBcdTBjY2RcdTBjOWFcdTBjY2RfXHUwYzhmXHUwY2FhXHUwY2NkXHUwY2IwXHUwY2JmXHUwY2IyXHUwY2NkX1x1MGNhZVx1MGNjNlx1MGNkNV9cdTBjOWNcdTBjYzJcdTBjYThcdTBjY2RfXHUwYzljXHUwY2MxXHUwY2IyXHUw''@;'; put 'put ''Y2M2XHUwY2Q2X1x1MGM4Nlx1MGM5N1x1MGNiOFx1MGNjZFx1MGM5Zlx1MGNjZF9cdTBjYjhcdTBjYzZcdTBjYWFcdTBjY2RcdTBjOWZcdTBjYzZcdTBjODJcdTBjYWNcdTBjYjBcdTBjY2RfXHUwYzg1XHUwYzk1XHUwY2NkXHUwYzlmXHUwY2M2XHUwY2MyXHUwY2Q1XHUwY2FjXHUwY2IwXHUw''@;'; put 'put ''Y2NkX1x1MGNhOFx1MGNiNVx1MGNjNlx1MGM4Mlx1MGNhY1x1MGNiMFx1MGNjZF9cdTBjYTFcdTBjYmZcdTBjYjhcdTBjYzZcdTBjODJcdTBjYWNcdTBjYjBcdTBjY2QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGM5Y1x1MGNhOF9cdTBjYWJcdTBjYzZcdTBjYWNcdTBjY2RcdTBjYjBf''@;'; put 'put ''XHUwY2FlXHUwY2JlXHUwY2IwXHUwY2NkXHUwYzlhXHUwY2NkX1x1MGM4Zlx1MGNhYVx1MGNjZFx1MGNiMFx1MGNiZlx1MGNiMlx1MGNjZF9cdTBjYWVcdTBjYzZcdTBjZDVfXHUwYzljXHUwY2MyXHUwY2E4XHUwY2NkX1x1MGM5Y1x1MGNjMVx1MGNiMlx1MGNjNlx1MGNkNl9cdTBjODZcdTBj''@;'; put 'put ''OTdcdTBjYjhcdTBjY2RcdTBjOWZcdTBjY2RfXHUwY2I4XHUwY2M2XHUwY2FhXHUwY2NkXHUwYzlmXHUwY2M2XHUwYzgyX1x1MGM4NVx1MGM5NVx1MGNjZFx1MGM5Zlx1MGNjNlx1MGNjMlx1MGNkNV9cdTBjYThcdTBjYjVcdTBjYzZcdTBjODJfXHUwY2ExXHUwY2JmXHUwY2I4XHUwY2M2XHUw''@;'; put 'put ''YzgyIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MGNhZFx1MGNiZVx1MGNhOFx1MGNjMVx1MGNiNVx1MGNiZVx1MGNiMF9cdTBjYjhcdTBjYzZcdTBjYzJcdTBjZDVcdTBjYWVcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2FlXHUwYzgyXHUwYzk3XHUwY2IzXHUw''@;'; put 'put ''Y2I1XHUwY2JlXHUwY2IwX1x1MGNhY1x1MGNjMVx1MGNhN1x1MGNiNVx1MGNiZVx1MGNiMF9cdTBjOTdcdTBjYzFcdTBjYjBcdTBjYzFcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2I2XHUwY2MxXHUwYzk1XHUwY2NkXHUwY2IwXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNiNlx1MGNhOFx1MGNiZlx1''@;'; put 'put ''MGNiNVx1MGNiZVx1MGNiMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBjYWRcdTBjYmVcdTBjYThcdTBjYzFfXHUwY2I4XHUwY2M2XHUwY2MyXHUwY2Q1XHUwY2FlX1x1MGNhZVx1MGM4Mlx1MGM5N1x1MGNiM19cdTBjYWNcdTBjYzFcdTBjYTdfXHUwYzk3XHUwY2MxXHUwY2IwXHUw''@;'; put 'put ''Y2MxX1x1MGNiNlx1MGNjMVx1MGM5NVx1MGNjZFx1MGNiMF9cdTBjYjZcdTBjYThcdTBjYmYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGNhZFx1MGNiZV9cdTBjYjhcdTBjYzZcdTBjYzJcdTBjZDVfXHUwY2FlXHUwYzgyX1x1MGNhY1x1MGNjMV9cdTBjOTdcdTBjYzFfXHUwY2I2XHUw''@;'; put 'put ''Y2MxX1x1MGNiNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSIsTFRTOiJBIGg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIn0sY2FsZW5k''@;'; put 'put ''YXI6e3NhbWVEYXk6IltcdTBjODdcdTBjODJcdTBjYTZcdTBjYzFdIExUIixuZXh0RGF5OiJbXHUwY2E4XHUwY2JlXHUwY2IzXHUwY2M2XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwY2E4XHUwY2JmXHUwY2E4XHUwY2NkXHUwY2E4XHUwY2M2XSBMVCIsbGFzdFdlZWs6''@;'; put 'put ''IltcdTBjOTVcdTBjYzZcdTBjYzJcdTBjYThcdTBjYzZcdTBjYWZdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBjYThcdTBjODJcdTBjYTRcdTBjYjAiLHBhc3Q6IiVzIFx1MGNiOVx1MGNiZlx1MGM4Mlx1MGNhNlx1MGNjNiIsczoiXHUwYzk1''@;'; put 'put ''XHUwY2M2XHUwY2IyXHUwY2I1XHUwY2MxIFx1MGM5NVx1MGNjZFx1MGNiN1x1MGNhM1x1MGM5N1x1MGNiM1x1MGNjMSIsc3M6IiVkIFx1MGNiOFx1MGNjNlx1MGM5NVx1MGNjNlx1MGM4Mlx1MGNhMVx1MGNjMVx1MGM5N1x1MGNiM1x1MGNjMSIsbToiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2Mx''@;'; put 'put ''IFx1MGNhOFx1MGNiZlx1MGNhZVx1MGNiZlx1MGNiNyIsbW06IiVkIFx1MGNhOFx1MGNiZlx1MGNhZVx1MGNiZlx1MGNiNyIsaDoiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGM5N1x1MGM4Mlx1MGM5Zlx1MGNjNiIsaGg6IiVkIFx1MGM5N1x1MGM4Mlx1MGM5Zlx1MGNjNiIsZDoiXHUw''@;'; put 'put ''YzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNhNlx1MGNiZlx1MGNhOCIsZGQ6IiVkIFx1MGNhNlx1MGNiZlx1MGNhOCIsTToiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNhNFx1MGNiZlx1MGM4Mlx1MGM5N1x1MGNiM1x1MGNjMSIsTU06IiVkIFx1MGNhNFx1MGNiZlx1MGM4Mlx1MGM5''@;'; put 'put ''N1x1MGNiM1x1MGNjMSIseToiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNiNVx1MGNiMFx1MGNjZFx1MGNiNyIseXk6IiVkIFx1MGNiNVx1MGNiMFx1MGNjZFx1MGNiNyJ9LHByZXBhcnNlOmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTBjZTdcdTBjZThcdTBjZTlcdTBj''@;'; put 'put ''ZWFcdTBjZWJcdTBjZWNcdTBjZWRcdTBjZWVcdTBjZWZcdTBjZTZdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFEpe3JldHVybiBCW1FdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGNiMFx1''@;'; put 'put ''MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZnxcdTBjYWNcdTBjYzZcdTBjYjNcdTBjYmZcdTBjOTdcdTBjY2RcdTBjOTdcdTBjYzZ8XHUwY2FlXHUwY2E3XHUwY2NkXHUwY2FmXHUwY2JlXHUwY2I5XHUwY2NkXHUwY2E4fFx1MGNiOFx1MGM4Mlx1MGM5Y1x1MGNjNi8sbWVyaWRpZW1Ib3Vy''@;'; put 'put ''OmZ1bmN0aW9uKFUsUSl7cmV0dXJuIDEyPT09VSYmKFU9MCksIlx1MGNiMFx1MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZiI9PT1RP1U8ND9VOlUrMTI6Ilx1MGNhY1x1MGNjNlx1MGNiM1x1MGNiZlx1MGM5N1x1MGNjZFx1MGM5N1x1MGNjNiI9PT1RP1U6Ilx1MGNhZVx1MGNhN1x1MGNj''@;'; put 'put ''ZFx1MGNhZlx1MGNiZVx1MGNiOVx1MGNjZFx1MGNhOCI9PT1RP1U+PTEwP1U6VSsxMjoiXHUwY2I4XHUwYzgyXHUwYzljXHUwY2M2Ij09PVE/VSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxaKXtyZXR1cm4gVTw0PyJcdTBjYjBcdTBjYmVcdTBjYTRcdTBjY2RcdTBjYjBcdTBj''@;'; put 'put ''YmYiOlU8MTA/Ilx1MGNhY1x1MGNjNlx1MGNiM1x1MGNiZlx1MGM5N1x1MGNjZFx1MGM5N1x1MGNjNiI6VTwxNz8iXHUwY2FlXHUwY2E3XHUwY2NkXHUwY2FmXHUwY2JlXHUwY2I5XHUwY2NkXHUwY2E4IjpVPDIwPyJcdTBjYjhcdTBjODJcdTBjOWNcdTBjYzYiOiJcdTBjYjBcdTBjYmVcdTBj''@;'; put 'put ''YTRcdTBjY2RcdTBjYjBcdTBjYmYifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1MGNhOFx1MGNjNlx1MGNkNSkvLG9yZGluYWw6ZnVuY3Rpb24oVSl7cmV0dXJuIFUrIlx1MGNhOFx1MGNjNlx1MGNkNSJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDEzNTQ5''@;'; put 'put ''OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgia28iLHttb250aHM6IjFcdWM2ZDRfMlx1YzZkNF8zXHVjNmQ0XzRcdWM2ZDRfNVx1YzZkNF82XHVjNmQ0XzdcdWM2ZDRfOFx1YzZkNF85XHVjNmQ0XzEwXHVjNmQ0XzExXHVjNmQ0''@;'; put 'put ''XzEyXHVjNmQ0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxXHVjNmQ0XzJcdWM2ZDRfM1x1YzZkNF80XHVjNmQ0XzVcdWM2ZDRfNlx1YzZkNF83XHVjNmQ0XzhcdWM2ZDRfOVx1YzZkNF8xMFx1YzZkNF8xMVx1YzZkNF8xMlx1YzZkNCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHVjNzdjXHVj''@;'; put 'put ''Njk0XHVjNzdjX1x1YzZkNFx1YzY5NFx1Yzc3Y19cdWQ2NTRcdWM2OTRcdWM3N2NfXHVjMjE4XHVjNjk0XHVjNzdjX1x1YmFhOVx1YzY5NFx1Yzc3Y19cdWFlMDhcdWM2OTRcdWM3N2NfXHVkMWEwXHVjNjk0XHVjNzdjIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1Yzc3Y19cdWM2ZDRf''@;'; put 'put ''XHVkNjU0X1x1YzIxOF9cdWJhYTlfXHVhZTA4X1x1ZDFhMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHVjNzdjX1x1YzZkNF9cdWQ2NTRfXHVjMjE4X1x1YmFhOV9cdWFlMDhfXHVkMWEwIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEgaDptbTpzcyIs''@;'; put 'put ''TDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyIsTExMOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyBBIGg6bW0iLExMTEw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIGRkZGQgQSBoOm1tIixsOiJZWVlZLk1NLkRELiIsbGw6IllZWVlcdWIxNDQgTU1NTSBEXHVj''@;'; put 'put ''NzdjIixsbGw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIEEgaDptbSIsbGxsbDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgZGRkZCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiXHVjNjI0XHViMjk4IExUIixuZXh0RGF5OiJcdWIwYjRcdWM3N2MgTFQiLG5leHRXZWVrOiJkZGRkIExU''@;'; put 'put ''IixsYXN0RGF5OiJcdWM1YjRcdWM4MWMgTFQiLGxhc3RXZWVrOiJcdWM5YzBcdWIwOWNcdWM4ZmMgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHVkNmM0IixwYXN0OiIlcyBcdWM4MDQiLHM6Ilx1YmE4NyBcdWNkMDgiLHNzOiIlZFx1Y2QwOCIsbToi''@;'; put 'put ''MVx1YmQ4NCIsbW06IiVkXHViZDg0IixoOiJcdWQ1NWMgXHVjMmRjXHVhYzA0IixoaDoiJWRcdWMyZGNcdWFjMDQiLGQ6Ilx1ZDU1OFx1YjhlOCIsZGQ6IiVkXHVjNzdjIixNOiJcdWQ1NWMgXHViMmVjIixNTToiJWRcdWIyZWMiLHk6Ilx1Yzc3YyBcdWIxNDQiLHl5OiIlZFx1YjE0NCJ9LGRh''@;'; put 'put ''eU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHVjNzdjfFx1YzZkNHxcdWM4ZmMpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsTWUpe3N3aXRjaChNZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gRSsiXHVjNzdjIjtjYXNlIk0iOnJldHVybiBFKyJcdWM2ZDQiO2Nhc2UidyI6''@;'; put 'put ''Y2FzZSJXIjpyZXR1cm4gRSsiXHVjOGZjIjtkZWZhdWx0OnJldHVybiBFfX0sbWVyaWRpZW1QYXJzZTovXHVjNjI0XHVjODA0fFx1YzYyNFx1ZDZjNC8saXNQTTpmdW5jdGlvbihFKXtyZXR1cm4iXHVjNjI0XHVkNmM0Ij09PUV9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsTWUsVSl7cmV0dXJuIEU8''@;'; put 'put ''MTI/Ilx1YzYyNFx1YzgwNCI6Ilx1YzYyNFx1ZDZjNCJ9fSl9KEwoMTU0MzkpKX0sOTEwMzc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MDY2MSIsMjoiXHUwNjYyIiwzOiJcdTA2NjMiLDQ6Ilx1MDY2NCIsNToiXHUwNjY1Iiw2OiJc''@;'; put 'put ''dTA2NjYiLDc6Ilx1MDY2NyIsODoiXHUwNjY4Iiw5OiJcdTA2NjkiLDA6Ilx1MDY2MCJ9LEU9eyJcdTA2NjEiOiIxIiwiXHUwNjYyIjoiMiIsIlx1MDY2MyI6IjMiLCJcdTA2NjQiOiI0IiwiXHUwNjY1IjoiNSIsIlx1MDY2NiI6IjYiLCJcdTA2NjciOiI3IiwiXHUwNjY4IjoiOCIsIlx1MDY2''@;'; put 'put ''OSI6IjkiLCJcdTA2NjAiOiIwIn0sTWU9WyJcdTA2YTlcdTA2MjdcdTA2NDZcdTA2NDhcdTA2NDZcdTA2Y2MgXHUwNjJmXHUwNjQ4XHUwNjQ4XHUwNmQ1XHUwNjQ1IiwiXHUwNjM0XHUwNjQ4XHUwNjI4XHUwNjI3XHUwNjJhIiwiXHUwNjI2XHUwNjI3XHUwNjMyXHUwNjI3XHUwNjMxIiwiXHUw''@;'; put 'put ''NjQ2XHUwNmNjXHUwNjMzXHUwNjI3XHUwNjQ2IiwiXHUwNjI2XHUwNjI3XHUwNmNjXHUwNjI3XHUwNjMxIiwiXHUwNjJkXHUwNjQ4XHUwNjMyXHUwNmQ1XHUwNmNjXHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjJhXHUwNmQ1XHUwNjQ1XHUwNjQ1XHUwNjQ4XHUwNjMyIiwiXHUwNjI2XHUwNjI3''@;'; put 'put ''XHUwNjI4IiwiXHUwNjI2XHUwNmQ1XHUwNmNjXHUwNjQ0XHUwNjQ4XHUwNjQ4XHUwNjQ0IiwiXHUwNjJhXHUwNjM0XHUwNjMxXHUwNmNjXHUwNjQ2XHUwNmNjIFx1MDZjY1x1MDZkNVx1MDY0M1x1MDZkNVx1MDY0NSIsIlx1MDYyYVx1MDYzNFx1MDYzMVx1MDZjY1x1MDY0Nlx1MDZjYyBcdTA2''@;'; put 'put ''MmZcdTA2NDhcdTA2NDhcdTA2ZDVcdTA2NDUiLCJcdTA2NDNcdTA2MjdcdTA2NDZcdTA2NDhcdTA2NDZcdTA2Y2MgXHUwNmNjXHUwNmQ1XHUwNmE5XHUwNmQ1XHUwNjQ1Il07Z2UuZGVmaW5lTG9jYWxlKCJrdSIse21vbnRoczpNZSxtb250aHNTaG9ydDpNZSx3ZWVrZGF5czoiXHUwNmNjXHUw''@;'; put 'put ''NjQ3XHUyMDBjXHUwNjQzXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDYyZlx1MDY0OFx1MDY0OFx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwY19cdTA2MzNcdTA2Y2VcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2''@;'; put 'put ''NDdcdTIwMGNfXHUwNjg2XHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDY3ZVx1MDZjZVx1MDY0Nlx1MDYyY1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwY19cdTA2NDdcdTA2NDdcdTIwMGNcdTA2''@;'; put 'put ''Y2NcdTA2NDZcdTA2Y2NfXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0M1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2MmZcdTA2NDhcdTA2NDhcdTA2MzRcdTA2NDdc''@;'; put 'put ''dTIwMGNcdTA2NDVfXHUwNjMzXHUwNmNlXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDY4Nlx1MDY0OFx1MDYyN1x1MDYzMVx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2N2VcdTA2Y2VcdTA2NDZcdTA2MmNcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVfXHUwNjQ3XHUwNjQ3XHUyMDBj''@;'; put 'put ''XHUwNmNjXHUwNjQ2XHUwNmNjX1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNmNjX1x1MDYyZl9cdTA2MzNfXHUwNjg2X1x1MDY3ZV9cdTA2NDdfXHUwNjM0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFj''@;'; put 'put ''dDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjI2XHUwNmNlXHUw''@;'; put 'put ''NjQ4XHUwNjI3XHUwNjMxXHUwNjQ3XHUyMDBjfFx1MDYyOFx1MDY0N1x1MjAwY1x1MDZjY1x1MDYyN1x1MDY0Nlx1MDZjYy8saXNQTTpmdW5jdGlvbihRKXtyZXR1cm4vXHUwNjI2XHUwNmNlXHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjQ3XHUyMDBjLy50ZXN0KFEpfSxtZXJpZGllbTpmdW5jdGlv''@;'; put 'put ''bihRLFosaWUpe3JldHVybiBRPDEyPyJcdTA2MjhcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2MjdcdTA2NDZcdTA2Y2MiOiJcdTA2MjZcdTA2Y2VcdTA2NDhcdTA2MjdcdTA2MzFcdTA2NDdcdTIwMGMifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyNlx1MDY0N1x1MjAwY1x1MDY0NVx1MDYzMVx1''@;'; put 'put ''MDZjNiBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixuZXh0RGF5OiJbXHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjIFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLG5leHRXZWVrOiJk''@;'; put 'put ''ZGRkIFtcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixsYXN0RGF5OiJbXHUwNjJmXHUwNjQ4XHUwNmNlXHUwNjQ2XHUwNmNlIFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2NDNc''@;'; put 'put ''dTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDRcdTA2NDdcdTIwMGMgJXMiLHBhc3Q6IiVzIixzOiJcdTA2ODZcdTA2NDdcdTIwMGNcdTA2NDZcdTA2MmYgXHUwNjg2XHUwNjMxXHUwNjQzXHUw''@;'; put 'put ''NjQ3XHUyMDBjXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIixzczoiXHUwNjg2XHUwNjMxXHUwNjQzXHUwNjQ3XHUyMDBjICVkIixtOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjJlXHUwNjQ4XHUwNjQ0XHUwNjQ3XHUyMDBjXHUwNjQzIixtbToiJWQgXHUwNjJlXHUwNjQ4XHUwNjQ0''@;'; put 'put ''XHUwNjQ3XHUyMDBjXHUwNjQzIixoOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxIixoaDoiJWQgXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxIixkOiJcdTA2Y2NcdTA2NDdcdTIwMGNc''@;'; put 'put ''dTA2NDMgXHUwNjk1XHUwNmM2XHUwNjk4IixkZDoiJWQgXHUwNjk1XHUwNmM2XHUwNjk4IixNOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjQ1XHUwNjI3XHUwNjQ2XHUwNmFmIixNTToiJWQgXHUwNjQ1XHUwNjI3XHUwNjQ2XHUwNmFmIix5OiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2''@;'; put 'put ''NDMgXHUwNjMzXHUwNjI3XHUwNmI1Iix5eToiJWQgXHUwNjMzXHUwNjI3XHUwNmI1In0scHJlcGFyc2U6ZnVuY3Rpb24oUSl7cmV0dXJuIFEucmVwbGFjZSgvW1x1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbiha''@;'; put 'put ''KXtyZXR1cm4gRVtaXX0pLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oUSl7cmV0dXJuIFEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihaKXtyZXR1cm4gQltaXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oTCgxNTQz''@;'; put 'put ''OSkpfSw5MzEyNTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MDoiLVx1MDQ0N1x1MDRhZiIsMToiLVx1MDQ0N1x1MDQzOCIsMjoiLVx1MDQ0N1x1MDQzOCIsMzoiLVx1MDQ0N1x1MDRhZiIsNDoiLVx1MDQ0N1x1MDRhZiIsNToiLVx1MDQ0N1x1''@;'; put 'put ''MDQzOCIsNjoiLVx1MDQ0N1x1MDQ0YiIsNzoiLVx1MDQ0N1x1MDQzOCIsODoiLVx1MDQ0N1x1MDQzOCIsOToiLVx1MDQ0N1x1MDQ0MyIsMTA6Ii1cdTA0NDdcdTA0NDMiLDIwOiItXHUwNDQ3XHUwNDRiIiwzMDoiLVx1MDQ0N1x1MDQ0MyIsNDA6Ii1cdTA0NDdcdTA0NGIiLDUwOiItXHUwNDQ3''@;'; put 'put ''XHUwNGFmIiw2MDoiLVx1MDQ0N1x1MDQ0YiIsNzA6Ii1cdTA0NDdcdTA0MzgiLDgwOiItXHUwNDQ3XHUwNDM4Iiw5MDoiLVx1MDQ0N1x1MDQ0MyIsMTAwOiItXHUwNDQ3XHUwNGFmIn07Z2UuZGVmaW5lTG9jYWxlKCJreSIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQw''@;'; put 'put ''XHUwNDRjX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Y19cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUw''@;'; put 'put ''NDRlXHUwNDNiXHUwNDRjX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1''@;'; put 'put ''MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0NGMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMl9cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0''@;'; put 'put ''MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNh''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MTZcdTA0MzVcdTA0M2FcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDE0XHUwNGFmXHUwNDM5XHUwNDQ4XHUwNGU5XHUwNDNjXHUwNDMxXHUwNGFmX1x1MDQyOFx1MDQzNVx1MDQzOVx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1''@;'; put 'put ''MDQzOF9cdTA0MjhcdTA0MzBcdTA0NDBcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDExXHUwNDM1XHUwNDM5XHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4X1x1MDQxNlx1MDQ0M1x1MDQzY1x1MDQzMF9cdTA0MThcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0Mzgi''@;'; put 'put ''LnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDE2XHUwNDM1XHUwNDNhX1x1MDQxNFx1MDRhZlx1MDQzOV9cdTA0MjhcdTA0MzVcdTA0MzlfXHUwNDI4XHUwNDMwXHUwNDQwX1x1MDQxMVx1MDQzNVx1MDQzOV9cdTA0MTZcdTA0NDNcdTA0M2NfXHUwNDE4XHUwNDQ4XHUwNDM1Ii5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MTZcdTA0M2FfXHUwNDE0XHUwNDM5X1x1MDQyOFx1MDQzOV9cdTA0MjhcdTA0NDBfXHUwNDExXHUwNDM5X1x1MDQxNlx1MDQzY19cdTA0MThcdTA0NDgiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNGFmXHUwNDMzXHUwNGFmXHUwNDNkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0g''@;'; put 'put ''TFQiLG5leHREYXk6IltcdTA0MmRcdTA0NDBcdTA0NDJcdTA0MzVcdTA0YTMgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLGxhc3REYXk6IltcdTA0MWFcdTA0MzVcdTA0NDdcdTA0NGRcdTA0NGQgXHUw''@;'; put 'put ''NDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsbGFzdFdlZWs6IltcdTA0ZThcdTA0NDJcdTA0M2FcdTA0ZTlcdTA0M2QgXHUwNDMwXHUwNDNmXHUwNDQyXHUwNDMwXHUwNDNkXHUwNDRiXHUwNDNkXSBkZGRkIFtcdTA0M2FcdTA0YWZcdTA0M2RcdTA0YWZdIFtcdTA0NDFcdTA0MzBcdTA0MzBc''@;'; put 'put ''dTA0NDJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA0MzhcdTA0NDdcdTA0MzhcdTA0M2RcdTA0MzRcdTA0MzUiLHBhc3Q6IiVzIFx1MDQzY1x1MDQ0M1x1MDQ0MFx1MDQ0M1x1MDQzZCIsczoiXHUwNDMxXHUwNDM4XHUwNDQwXHUwNDNkXHUwNDM1XHUw''@;'; put 'put ''NDQ3XHUwNDM1IFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsbToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzY1x1MDRhZlx1MDQzZFx1MDRlOVx1MDQ0MiIsbW06IiVkIFx1MDQzY1x1MDRh''@;'; put 'put ''Zlx1MDQzZFx1MDRlOVx1MDQ0MiIsaDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0MiIsZDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzYVx1MDRhZlx1MDQzZCIsZGQ6IiVkIFx1MDQzYVx1MDRhZlx1''@;'; put 'put ''MDQzZCIsTToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzMFx1MDQzOSIsTU06IiVkIFx1MDQzMFx1MDQzOSIseToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzNlx1MDQ0Ylx1MDQzYiIseXk6IiVkIFx1MDQzNlx1MDQ0Ylx1MDQzYiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0t''@;'; put 'put ''KFx1MDQ0N1x1MDQzOHxcdTA0NDdcdTA0NGJ8XHUwNDQ3XHUwNGFmfFx1MDQ0N1x1MDQ0MykvLG9yZGluYWw6ZnVuY3Rpb24oTWUpe3JldHVybiBNZSsoQltNZV18fEJbTWUlMTBdfHxCW01lPj0xMDA/MTAwOm51bGxdKX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNjk1ODY6''@;'; put 'put ''ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihaLGllLGxlLFkpe3ZhciBXPXttOlsiZW5nIE1pbnV0dCIsImVuZ2VyIE1pbnV0dCJdLGg6WyJlbmcgU3Rvbm4iLCJlbmdlciBTdG9ubiJdLGQ6WyJlZW4gRGFnIiwiZW5nZW0gRGFnIl0sTTpb''@;'; put 'put ''ImVlIE1vdW50IiwiZW5nZW0gTW91bnQiXSx5OlsiZWUgSm9lciIsImVuZ2VtIEpvZXIiXX07cmV0dXJuIGllP1dbbGVdWzBdOldbbGVdWzFdfWZ1bmN0aW9uIFUoWil7aWYoWj1wYXJzZUludChaLDEwKSxpc05hTihaKSlyZXR1cm4hMTtpZihaPDApcmV0dXJuITA7aWYoWjwxMClyZXR1cm4g''@;'; put 'put ''NDw9WiYmWjw9NztpZihaPDEwMCl7dmFyIGllPVolMTA7cmV0dXJuIFUoMD09PWllP1ovMTA6aWUpfWlmKFo8MWU0KXtmb3IoO1o+PTEwOylaLz0xMDtyZXR1cm4gVShaKX1yZXR1cm4gVShaLz0xZTMpfWdlLmRlZmluZUxvY2FsZSgibGIiLHttb250aHM6IkphbnVhcl9GZWJydWFyX01ceGU0''@;'; put 'put ''ZXJ6X0Ficlx4ZWJsbF9NZWVfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWJyLl9NcnouX0Fici5fTWVlX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgi''@;'; put 'put ''XyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm5kZWdfTVx4ZTlpbmRlZ19EXHhlYm5zY2hkZWdfTVx4ZWJ0dHdvY2hfRG9ubmVzY2hkZWdfRnJlaWRlZ19TYW1zY2hkZWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01ceGU5Ll9EXHhlYi5fTVx4ZWIuX0RvLl9G''@;'; put 'put ''ci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19NXHhlOV9EXHhlYl9NXHhlYl9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIFtBdWVyXSIsTFRTOiJIOm1tOnNzIFtBdWVyXSIsTDoiREQuTU0uWVlZWSIs''@;'; put 'put ''TEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGF1dCB1bV0gTFQiLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbTXVlciB1bV0gTFQiLG5leHRXZWVr''@;'; put 'put ''OiJkZGRkIFt1bV0gTFQiLGxhc3REYXk6IltHXHhlYnNjaHRlciB1bV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMjpjYXNlIDQ6cmV0dXJuIltMZXNjaHRlbl0gZGRkZCBbdW1dIExUIjtkZWZhdWx0OnJldHVybiJbTGVzY2h0ZV0gZGRkZCBbdW1d''@;'; put 'put ''IExUIn19fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbiBFKFope3JldHVybiBVKFouc3Vic3RyKDAsWi5pbmRleE9mKCIgIikpKT8iYSAiK1o6ImFuICIrWn0scGFzdDpmdW5jdGlvbiBNZShaKXtyZXR1cm4gVShaLnN1YnN0cigwLFouaW5kZXhPZigiICIpKSk/InZpcnUgIitaOiJ2''@;'; put 'put ''aXJ1biAiK1p9LHM6ImUgcHVlciBTZWtvbm5lbiIsc3M6IiVkIFNla29ubmVuIixtOkIsbW06IiVkIE1pbnV0dGVuIixoOkIsaGg6IiVkIFN0b25uZW4iLGQ6QixkZDoiJWQgRGVlZyIsTTpCLE1NOiIlZCBNXHhlOWludCIseTpCLHl5OiIlZCBKb2VyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJz''@;'; put 'put ''ZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDMyMzQ5OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgibG8iLHttb250aHM6Ilx1MGVhMVx1MGViMVx1MGU4N1x1MGU4''@;'; put 'put ''MVx1MGVhZFx1MGU5OV9cdTBlODFcdTBlYjhcdTBlYTFcdTBlOWVcdTBlYjJfXHUwZWExXHUwZWI1XHUwZTk5XHUwZWIyX1x1MGVjMFx1MGVhMVx1MGVhYVx1MGViMl9cdTBlOWVcdTBlYjZcdTBlOTRcdTBlYWFcdTBlYjBcdTBlOWVcdTBlYjJfXHUwZWExXHUwZWI0XHUwZTk2XHUwZWI4XHUw''@;'; put 'put ''ZTk5XHUwZWIyX1x1MGU4MVx1MGVjZFx1MGVhNVx1MGViMFx1MGU4MVx1MGViYlx1MGU5NF9cdTBlYWFcdTBlYjRcdTBlODdcdTBlYWJcdTBlYjJfXHUwZTgxXHUwZWIxXHUwZTk5XHUwZThkXHUwZWIyX1x1MGU5NVx1MGViOFx1MGVhNVx1MGViMl9cdTBlOWVcdTBlYjBcdTBlODhcdTBlYjRc''@;'; put 'put ''dTBlODFfXHUwZTk3XHUwZWIxXHUwZTk5XHUwZWE3XHUwZWIyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBlYTFcdTBlYjFcdTBlODdcdTBlODFcdTBlYWRcdTBlOTlfXHUwZTgxXHUwZWI4XHUwZWExXHUwZTllXHUwZWIyX1x1MGVhMVx1MGViNVx1MGU5OVx1MGViMl9cdTBlYzBcdTBl''@;'; put 'put ''YTFcdTBlYWFcdTBlYjJfXHUwZTllXHUwZWI2XHUwZTk0XHUwZWFhXHUwZWIwXHUwZTllXHUwZWIyX1x1MGVhMVx1MGViNFx1MGU5Nlx1MGViOFx1MGU5OVx1MGViMl9cdTBlODFcdTBlY2RcdTBlYTVcdTBlYjBcdTBlODFcdTBlYmJcdTBlOTRfXHUwZWFhXHUwZWI0XHUwZTg3XHUwZWFiXHUw''@;'; put 'put ''ZWIyX1x1MGU4MVx1MGViMVx1MGU5OVx1MGU4ZFx1MGViMl9cdTBlOTVcdTBlYjhcdTBlYTVcdTBlYjJfXHUwZTllXHUwZWIwXHUwZTg4XHUwZWI0XHUwZTgxX1x1MGU5N1x1MGViMVx1MGU5OVx1MGVhN1x1MGViMiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwZWFkXHUwZWIyXHUwZTk3XHUw''@;'; put 'put ''ZWI0XHUwZTk0X1x1MGU4OFx1MGViMVx1MGU5OV9cdTBlYWRcdTBlYjFcdTBlODdcdTBlODRcdTBlYjJcdTBlOTlfXHUwZTllXHUwZWI4XHUwZTk0X1x1MGU5ZVx1MGViMFx1MGVhYlx1MGViMVx1MGU5NF9cdTBlYWFcdTBlYjhcdTBlODFfXHUwZWMwXHUwZWFhXHUwZWJiXHUwZWIyIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGU5N1x1MGViNFx1MGU5NF9cdTBlODhcdTBlYjFcdTBlOTlfXHUwZWFkXHUwZWIxXHUwZTg3XHUwZTg0XHUwZWIyXHUwZTk5X1x1MGU5ZVx1MGViOFx1MGU5NF9cdTBlOWVcdTBlYjBcdTBlYWJcdTBlYjFcdTBlOTRfXHUwZWFhXHUwZWI4XHUwZTgx''@;'; put 'put ''X1x1MGVjMFx1MGVhYVx1MGViYlx1MGViMiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwZTk3X1x1MGU4OF9cdTBlYWRcdTBlODRfXHUwZTllX1x1MGU5ZVx1MGVhYl9cdTBlYWFcdTBlODFfXHUwZWFhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1h''@;'; put 'put ''dDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6Ilx1MGVhN1x1MGViMVx1MGU5OWRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTBlOTVcdTBlYWRcdTBl''@;'; put 'put ''OTlcdTBlYzBcdTBlOGFcdTBlYmJcdTBlYzlcdTBlYjJ8XHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMxXHUwZWE1XHUwZTg3Lyxpc1BNOmZ1bmN0aW9uKEUpe3JldHVybiJcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzFcdTBlYTVcdTBlODciPT09RX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXty''@;'; put 'put ''ZXR1cm4gRTwxMj8iXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMwXHUwZThhXHUwZWJiXHUwZWM5XHUwZWIyIjoiXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMxXHUwZWE1XHUwZTg3In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBlYTFcdTBlYjdcdTBlYzlcdTBlOTlcdTBlYjVcdTBlYzlcdTBlYzBc''@;'; put 'put ''dTBlYTdcdTBlYTVcdTBlYjJdIExUIixuZXh0RGF5OiJbXHUwZWExXHUwZWI3XHUwZWM5XHUwZWFkXHUwZWI3XHUwZWM4XHUwZTk5XHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIyXSBMVCIsbmV4dFdlZWs6IltcdTBlYTdcdTBlYjFcdTBlOTldZGRkZFtcdTBlZGNcdTBlYzlcdTBlYjJcdTBlYzBc''@;'; put 'put ''dTBlYTdcdTBlYTVcdTBlYjJdIExUIixsYXN0RGF5OiJbXHUwZWExXHUwZWI3XHUwZWM5XHUwZWE3XHUwZWIyXHUwZTk5XHUwZTk5XHUwZWI1XHUwZWM5XHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIyXSBMVCIsbGFzdFdlZWs6IltcdTBlYTdcdTBlYjFcdTBlOTldZGRkZFtcdTBlYzFcdTBlYTVc''@;'; put 'put ''dTBlYzlcdTBlYTdcdTBlOTlcdTBlYjVcdTBlYzlcdTBlYzBcdTBlYTdcdTBlYTVcdTBlYjJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTBlYWRcdTBlYjVcdTBlODEgJXMiLHBhc3Q6IiVzXHUwZTljXHUwZWM4XHUwZWIyXHUwZTk5XHUwZWExXHUwZWIyIixz''@;'; put 'put ''OiJcdTBlOWFcdTBlY2RcdTBlYzhcdTBlYzBcdTBlOTdcdTBlYmJcdTBlYzhcdTBlYjJcdTBlYzNcdTBlOTRcdTBlYTdcdTBlYjRcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLHNzOiIlZCBcdTBlYTdcdTBlYjRcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLG06IjEgXHUwZTk5XHUwZWIyXHUw''@;'; put 'put ''ZTk3XHUwZWI1IixtbToiJWQgXHUwZTk5XHUwZWIyXHUwZTk3XHUwZWI1IixoOiIxIFx1MGU4YVx1MGViYlx1MGVjOFx1MGVhN1x1MGVjMlx1MGVhMVx1MGU4NyIsaGg6IiVkIFx1MGU4YVx1MGViYlx1MGVjOFx1MGVhN1x1MGVjMlx1MGVhMVx1MGU4NyIsZDoiMSBcdTBlYTFcdTBlYjdcdTBl''@;'; put 'put ''YzkiLGRkOiIlZCBcdTBlYTFcdTBlYjdcdTBlYzkiLE06IjEgXHUwZWMwXHUwZTk0XHUwZWI3XHUwZWFkXHUwZTk5IixNTToiJWQgXHUwZWMwXHUwZTk0XHUwZWI3XHUwZWFkXHUwZTk5Iix5OiIxIFx1MGU5Ylx1MGViNSIseXk6IiVkIFx1MGU5Ylx1MGViNSJ9LGRheU9mTW9udGhPcmRpbmFs''@;'; put 'put ''UGFyc2U6LyhcdTBlOTdcdTBlYjVcdTBlYzgpXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihFKXtyZXR1cm4iXHUwZTk3XHUwZWI1XHUwZWM4IitFfX0pfShMKDE1NDM5KSl9LDkyNDAwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXtzczoic2Vr''@;'; put 'put ''dW5kXHUwMTE3X3Nla3VuZFx1MDE3ZWlcdTAxNzNfc2VrdW5kZXMiLG06Im1pbnV0XHUwMTE3X21pbnV0XHUwMTE3c19taW51dFx1MDExOSIsbW06Im1pbnV0XHUwMTE3c19taW51XHUwMTBkaVx1MDE3M19taW51dGVzIixoOiJ2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZFx1MDEwNSIsaGg6InZh''@;'; put 'put ''bGFuZG9zX3ZhbGFuZFx1MDE3M192YWxhbmRhcyIsZDoiZGllbmFfZGllbm9zX2RpZW5cdTAxMDUiLGRkOiJkaWVub3NfZGllblx1MDE3M19kaWVuYXMiLE06Im1cdTAxMTdudW9fbVx1MDExN25lc2lvX21cdTAxMTduZXNcdTAxMmYiLE1NOiJtXHUwMTE3bmVzaWFpX21cdTAxMTduZXNpXHUw''@;'; put 'put ''MTczX21cdTAxMTduZXNpdXMiLHk6Im1ldGFpX21ldFx1MDE3M19tZXR1cyIseXk6Im1ldGFpX21ldFx1MDE3M19tZXR1cyJ9O2Z1bmN0aW9uIE1lKGxlLFksVyxOKXtyZXR1cm4gWT9RKFcpWzBdOk4/UShXKVsxXTpRKFcpWzJdfWZ1bmN0aW9uIFUobGUpe3JldHVybiBsZSUxMD09MHx8bGU+''@;'; put 'put ''MTAmJmxlPDIwfWZ1bmN0aW9uIFEobGUpe3JldHVybiBCW2xlXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIFoobGUsWSxXLE4pe3ZhciBlZT1sZSsiICI7cmV0dXJuIDE9PT1sZT9lZStNZSgwLFksV1swXSxOKTpZP2VlKyhVKGxlKT9RKFcpWzFdOlEoVylbMF0pOk4/ZWUrUShXKVsxXTplZSsoVShs''@;'; put 'put ''ZSk/UShXKVsxXTpRKFcpWzJdKX1nZS5kZWZpbmVMb2NhbGUoImx0Iix7bW9udGhzOntmb3JtYXQ6InNhdXNpb192YXNhcmlvX2tvdm9fYmFsYW5kXHUwMTdlaW9fZ2VndVx1MDE3ZVx1MDExN3NfYmlyXHUwMTdlZWxpb19saWVwb3NfcnVncGpcdTAxNmJcdTAxMGRpb19ydWdzXHUwMTE3am9f''@;'; put 'put ''c3BhbGlvX2xhcGtyaVx1MDEwZGlvX2dydW9kXHUwMTdlaW8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToic2F1c2lzX3Zhc2FyaXNfa292YXNfYmFsYW5kaXNfZ2VndVx1MDE3ZVx1MDExN19iaXJcdTAxN2VlbGlzX2xpZXBhX3J1Z3BqXHUwMTZidGlzX3J1Z3NcdTAxMTdqaXNfc3BhbGlzX2xh''@;'; put 'put ''cGtyaXRpc19ncnVvZGlzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9EW29EXT8oXFtbXlxbXF1dKlxdfFxzKStNTU1NP3xNTU1NPyhcW1teXFtcXV0qXF18XHMpK0Rbb0RdPy99LG1vbnRoc1Nob3J0OiJzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5czp7Zm9ybWF0OiJzZWttYWRpZW5cdTAxMmZfcGlybWFkaWVuXHUwMTJmX2FudHJhZGllblx1MDEyZl90cmVcdTAxMGRpYWRpZW5cdTAxMmZfa2V0dmlydGFkaWVuXHUwMTJmX3Blbmt0YWRpZW5cdTAxMmZfXHUwMTYxZVx1MDE2MXRhZGllblx1MDEyZiIuc3BsaXQo''@;'; put 'put ''Il8iKSxzdGFuZGFsb25lOiJzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmVcdTAxMGRpYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfXHUwMTYxZVx1MDE2MXRhZGllbmlzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9kZGRkIEhIOm1tL30sd2Vla2RheXNT''@;'; put 'put ''aG9ydDoiU2VrX1Bpcl9BbnRfVHJlX0tldF9QZW5fXHUwMTYwZVx1MDE2MSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU19QX0FfVF9LX1BuX1x1MDE2MCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiWVlZWS1NTS1ERCIsTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXSIsTExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBISDptbSBbdmFsLl0iLGw6IllZWVktTU0tREQiLGxsOiJZWVlZIFttLl0gTU1N''@;'; put 'put ''TSBEIFtkLl0iLGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0iLGxsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBISDptbSBbdmFsLl0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDE2MGlhbmRpZW5dIExUIixuZXh0RGF5OiJbUnl0b2pdIExUIixuZXh0''@;'; put 'put ''V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1Zha2FyXSBMVCIsbGFzdFdlZWs6IltQcmFcdTAxMTdqdXNcdTAxMmZdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBvICVzIixwYXN0OiJwcmllXHUwMTYxICVzIixzOmZ1bmN0aW9uIEUobGUsWSxXLE4pe3Jl''@;'; put 'put ''dHVybiBZPyJrZWxpb3Mgc2VrdW5kXHUwMTE3cyI6Tj8ia2VsaVx1MDE3MyBzZWt1bmRcdTAxN2VpXHUwMTczIjoia2VsaWFzIHNla3VuZGVzIn0sc3M6WixtOk1lLG1tOlosaDpNZSxoaDpaLGQ6TWUsZGQ6WixNOk1lLE1NOloseTpNZSx5eTpafSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9c''@;'; put 'put ''ZHsxLDJ9LW9qaS8sb3JkaW5hbDpmdW5jdGlvbihsZSl7cmV0dXJuIGxlKyItb2ppIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzk5OTE6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9e3NzOiJzZWt1bmRlc19zZWt1bmRcdTAx''@;'; put 'put ''MTNtX3Nla3VuZGVfc2VrdW5kZXMiLnNwbGl0KCJfIiksbToibWluXHUwMTZidGVzX21pblx1MDE2YnRcdTAxMTNtX21pblx1MDE2YnRlX21pblx1MDE2YnRlcyIuc3BsaXQoIl8iKSxtbToibWluXHUwMTZidGVzX21pblx1MDE2YnRcdTAxMTNtX21pblx1MDE2YnRlX21pblx1MDE2YnRlcyIu''@;'; put 'put ''c3BsaXQoIl8iKSxoOiJzdHVuZGFzX3N0dW5kXHUwMTAxbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxoaDoic3R1bmRhc19zdHVuZFx1MDEwMW1fc3R1bmRhX3N0dW5kYXMiLnNwbGl0KCJfIiksZDoiZGllbmFzX2RpZW5cdTAxMDFtX2RpZW5hX2RpZW5hcyIuc3BsaXQoIl8iKSxkZDoi''@;'; put 'put ''ZGllbmFzX2RpZW5cdTAxMDFtX2RpZW5hX2RpZW5hcyIuc3BsaXQoIl8iKSxNOiJtXHUwMTEzbmVcdTAxNjFhX21cdTAxMTNuZVx1MDE2MWllbV9tXHUwMTEzbmVzaXNfbVx1MDExM25lXHUwMTYxaSIuc3BsaXQoIl8iKSxNTToibVx1MDExM25lXHUwMTYxYV9tXHUwMTEzbmVcdTAxNjFpZW1f''@;'; put 'put ''bVx1MDExM25lc2lzX21cdTAxMTNuZVx1MDE2MWkiLnNwbGl0KCJfIikseToiZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpIi5zcGxpdCgiXyIpLHl5OiJnYWRhX2dhZGllbV9nYWRzX2dhZGkiLnNwbGl0KCJfIil9O2Z1bmN0aW9uIEUoaWUsbGUsWSl7cmV0dXJuIFk/bGUlMTA9PTEmJmxlJTEwMCE9''@;'; put 'put ''MTE/aWVbMl06aWVbM106bGUlMTA9PTEmJmxlJTEwMCE9MTE/aWVbMF06aWVbMV19ZnVuY3Rpb24gTWUoaWUsbGUsWSl7cmV0dXJuIGllKyIgIitFKEJbWV0saWUsbGUpfWZ1bmN0aW9uIFUoaWUsbGUsWSl7cmV0dXJuIEUoQltZXSxpZSxsZSl9Z2UuZGVmaW5lTG9jYWxlKCJsdiIse21vbnRo''@;'; put 'put ''czoiamFudlx1MDEwMXJpc19mZWJydVx1MDEwMXJpc19tYXJ0c19hcHJcdTAxMmJsaXNfbWFpanNfalx1MDE2Ym5panNfalx1MDE2YmxpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJpc19kZWNlbWJyaXMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFy''@;'; put 'put ''X2Fwcl9tYWlfalx1MDE2Ym5falx1MDE2YmxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3ZcdTAxMTN0ZGllbmFfcGlybWRpZW5hX290cmRpZW5hX3RyZVx1MDE2MWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzU2hvcnQ6IlN2X1BfT19UX0NfUGtfUyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3ZfUF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZLiIsTEw6''@;'; put 'put ''IllZWVkuIFtnYWRhXSBELiBNTU1NIixMTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NLCBISDptbSIsTExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTAxNjBvZGllbiBwdWxrc3Rlbl0gTFQiLG5leHREYXk6IltSXHUwMTJidCBw''@;'; put 'put ''dWxrc3Rlbl0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWxrc3Rlbl0gTFQiLGxhc3REYXk6IltWYWthciBwdWxrc3Rlbl0gTFQiLGxhc3RXZWVrOiJbUGFnXHUwMTAxanVcdTAxNjFcdTAxMDFdIGRkZGQgW3B1bGtzdGVuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi''@;'; put 'put ''cFx1MDExM2MgJXMiLHBhc3Q6InBpcm1zICVzIixzOmZ1bmN0aW9uIFEoaWUsbGUpe3JldHVybiBsZT8iZGFcdTAxN2VhcyBzZWt1bmRlcyI6ImRhXHUwMTdlXHUwMTAxbSBzZWt1bmRcdTAxMTNtIn0sc3M6TWUsbTpVLG1tOk1lLGg6VSxoaDpNZSxkOlUsZGQ6TWUsTTpVLE1NOk1lLHk6VSx5''@;'; put 'put ''eTpNZX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDI4NDc3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXt3b3Jkczp7c3M6WyJzZWt1bmQi''@;'; put 'put ''LCJzZWt1bmRhIiwic2VrdW5kaSJdLG06WyJqZWRhbiBtaW51dCIsImplZG5vZyBtaW51dGEiXSxtbTpbIm1pbnV0IiwibWludXRhIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEi''@;'; put 'put ''XSxNTTpbIm1qZXNlYyIsIm1qZXNlY2EiLCJtamVzZWNpIl0seXk6WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihNZSxVKXtyZXR1cm4gMT09PU1lP1VbMF06TWU+PTImJk1lPD00P1VbMV06VVsyXX0sdHJhbnNsYXRlOmZ1bmN0''@;'; put 'put ''aW9uKE1lLFUsUSl7dmFyIFo9Qi53b3Jkc1tRXTtyZXR1cm4gMT09PVEubGVuZ3RoP1U/WlswXTpaWzFdOk1lKyIgIitCLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoTWUsWil9fTtnZS5kZWZpbmVMb2NhbGUoIm1lIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5f''@;'; put 'put ''anVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVr''@;'; put 'put ''ZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9w''@;'; put 'put ''b191dF9zcl9cdTAxMGRlX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwg''@;'; put 'put ''RC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc2p1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVy''@;'; put 'put ''biJbdV0gW3NyaWplZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBMVCJ9fSxsYXN0RGF5OiJbanVcdTAxMGRlIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''blsiW3Byb1x1MDE2MWxlXSBbbmVkamVsamVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3V0b3JrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3JpamVkZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW1x1MDEwZGV0''@;'; put 'put ''dnJ0a2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwZXRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiXVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJuZWtvbGlrbyBz''@;'; put 'put ''ZWt1bmRpIixzczpCLnRyYW5zbGF0ZSxtOkIudHJhbnNsYXRlLG1tOkIudHJhbnNsYXRlLGg6Qi50cmFuc2xhdGUsaGg6Qi50cmFuc2xhdGUsZDoiZGFuIixkZDpCLnRyYW5zbGF0ZSxNOiJtamVzZWMiLE1NOkIudHJhbnNsYXRlLHk6ImdvZGludSIseXk6Qi50cmFuc2xhdGV9LGRheU9mTW9u''@;'; put 'put ''dGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw1NTExODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoIm1pIix7bW9udGhzOiJLb2hpLXRcdTAx''@;'; put 'put ''MDF0ZV9IdWktdGFuZ3VydV9Qb3V0XHUwMTZiLXRlLXJhbmdpX1BhZW5nYS13aFx1MDEwMXdoXHUwMTAxX0hhcmF0dWFfUGlwaXJpX0hcdTAxNGRuZ29pbmdvaV9IZXJlLXR1cmkta1x1MDE0ZGtcdTAxMDFfTWFodXJ1X1doaXJpbmdhLVx1MDEwMS1udWt1X1doaXJpbmdhLVx1MDEwMS1yYW5n''@;'; put 'put ''aV9IYWtpaGVhIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IXHUwMTRkbmdvaV9IZXJlX01haHVfV2hpLW51X1doaS1yYV9IYWtpIi5zcGxpdCgiXyIpLG1vbnRoc1JlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9''@;'; put 'put ''L2ksbW9udGhzU3RyaWN0UmVnZXg6Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStcLT8pezEsM30vaSxtb250aHNTaG9ydFJlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERc''@;'; put 'put ''dTAxNkJdK1wtPyl7MSwyfS9pLHdlZWtkYXlzOiJSXHUwMTAxdGFwdV9NYW5lX1RcdTAxNmJyZWlfV2VuZXJlaV9UXHUwMTAxaXRlX1BhcmFpcmVfSFx1MDEwMXRhcmVpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlRhX01hX1RcdTAxNmJfV2VfVFx1MDEwMWlfUGFfSFx1MDEwMSIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c01pbjoiVGFfTWFfVFx1MDE2Yl9XZV9UXHUwMTAxaV9QYV9IXHUwMTAxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbaV0g''@;'; put 'put ''SEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtpXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSB0ZWllIG1haGFuYSwgaV0gTFQiLG5leHREYXk6IlthcG9wbyBpXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2ldIExUIixsYXN0RGF5OiJbaW5hbmFoaSBpXSBMVCIsbGFzdFdlZWs6''@;'; put 'put ''ImRkZGQgW3doYWthbXV0dW5nYSBpXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaSByb3RvIGkgJXMiLHBhc3Q6IiVzIGkgbXVhIixzOiJ0ZSBoXHUwMTEza29uYSBydWFydWEiLHNzOiIlZCBoXHUwMTEza29uYSIsbToiaGUgbWVuZXRpIixtbToiJWQgbWVuZXRp''@;'; put 'put ''IixoOiJ0ZSBoYW9yYSIsaGg6IiVkIGhhb3JhIixkOiJoZSByYSIsZGQ6IiVkIHJhIixNOiJoZSBtYXJhbWEiLE1NOiIlZCBtYXJhbWEiLHk6ImhlIHRhdSIseXk6IiVkIHRhdSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2Rv''@;'; put 'put ''dzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDE1OTQzOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgibWsiLHttb250aHM6Ilx1MDQ1OFx1MDQzMFx1MDQzZFx1MDQ0M1x1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0NDRcdTA0MzVcdTA0''@;'; put 'put ''MzJcdTA0NDBcdTA0NDNcdTA0MzBcdTA0NDBcdTA0MzhfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzOFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUwNDNkXHUwNDM4X1x1MDQ1OFx1MDQ0M1x1MDQzYlx1MDQzOF9cdTA0MzBc''@;'; put 'put ''dTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNmXHUwNDQyXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQzZVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0M2RcdTA0M2VcdTA0MzVcdTA0M2NcdTA0MzJc''@;'; put 'put ''dTA0NDBcdTA0MzhfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0NThcdTA0MzBcdTA0M2RfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0M2ZcdTA0NDBfXHUw''@;'; put 'put ''NDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZF9cdTA0NThcdTA0NDNcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZl9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNlXHUwNDM1X1x1MDQzNFx1MDQzNVx1MDQzYSIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5czoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDMwX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1''@;'; put 'put ''XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzZVx1MDQzYV9cdTA0M2ZcdTA0MzVcdTA0NDJcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDMwXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1''@;'; put 'put ''MDQzNVx1MDQzNF9cdTA0M2ZcdTA0M2VcdTA0M2RfXHUwNDMyXHUwNDQyXHUwNDNlX1x1MDQ0MVx1MDQ0MFx1MDQzNV9cdTA0NDdcdTA0MzVcdTA0NDJfXHUwNDNmXHUwNDM1XHUwNDQyX1x1MDQ0MVx1MDQzMFx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkZV9cdTA0M2Zv''@;'; put 'put ''X1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDM1X1x1MDQzZlx1MDQzNV9cdTA0NDFhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1t''@;'; put 'put ''IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MTRcdTA0MzVcdTA0M2RcdTA0MzVcdTA0NDEgXHUwNDMyXHUwNDNlXSBMVCIsbmV4dERheToiW1x1MDQyM1x1MDQ0Mlx1MDQ0MFx1MDQzNSBcdTA0MzJcdTA0M2VdIExUIixuZXh0V2Vlazoi''@;'; put 'put ''W1x1MDQxMlx1MDQzZV0gZGRkZCBbXHUwNDMyXHUwNDNlXSBMVCIsbGFzdERheToiW1x1MDQxMlx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMCBcdTA0MzJcdTA0M2VdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNjpyZXR1cm4i''@;'; put 'put ''W1x1MDQxOFx1MDQzN1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQzMFx1MDQ0Mlx1MDQzMFx1MDQ0Mlx1MDQzMF0gZGRkZCBbXHUwNDMyXHUwNDNlXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbXHUwNDE4XHUwNDM3XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDQy''@;'; put 'put ''XHUwNDM4XHUwNDNlXHUwNDQyXSBkZGRkIFtcdTA0MzJcdTA0M2VdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzN1x1MDQzMCAlcyIscGFzdDoiXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDM0ICVzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0M2VcdTA0''@;'; put 'put ''M2JcdTA0M2FcdTA0NDMgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixzczoiJWQgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixtOiJcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzAgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUw''@;'; put 'put ''NDQyXHUwNDMwIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDM4IixoOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDoiJWQgXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDMwIixkOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2Qg''@;'; put 'put ''XHUwNDM0XHUwNDM1XHUwNDNkIixkZDoiJWQgXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDMwIixNOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IixNTToiJWQgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDM4Iix5OiJcdTA0''@;'; put 'put ''MzVcdTA0MzRcdTA0M2RcdTA0MzAgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIix5eToiJWQgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDM1XHUwNDMyfFx1MDQzNVx1MDQzZHxc''@;'; put 'put ''dTA0NDJcdTA0Mzh8XHUwNDMyXHUwNDM4fFx1MDQ0MFx1MDQzOHxcdTA0M2NcdTA0MzgpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBNZT1FJTEwLFU9RSUxMDA7cmV0dXJuIDA9PT1FP0UrIi1cdTA0MzVcdTA0MzIiOjA9PT1VP0UrIi1cdTA0MzVcdTA0M2QiOlU+MTAmJlU8MjA/RSsiLVx1''@;'; put 'put ''MDQ0Mlx1MDQzOCI6MT09PU1lP0UrIi1cdTA0MzJcdTA0MzgiOjI9PT1NZT9FKyItXHUwNDQwXHUwNDM4Ijo3PT09TWV8fDg9PT1NZT9FKyItXHUwNDNjXHUwNDM4IjpFKyItXHUwNDQyXHUwNDM4In0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sMTM4NDk6ZnVuY3Rpb24oWGUs''@;'; put 'put ''SmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJtbCIse21vbnRoczoiXHUwZDFjXHUwZDI4XHUwZDQxXHUwZDM1XHUwZDMwXHUwZDNmX1x1MGQyYlx1MGQ0Nlx1MGQyY1x1MGQ0ZFx1MGQzMFx1MGQ0MVx1MGQzNVx1MGQzMFx1MGQzZl9cdTBkMmVcdTBk''@;'; put 'put ''M2VcdTBkN2NcdTBkMWFcdTBkNGRcdTBkMWFcdTBkNGRfXHUwZDBmXHUwZDJhXHUwZDRkXHUwZDMwXHUwZDNmXHUwZDdkX1x1MGQyZVx1MGQ0N1x1MGQyZlx1MGQ0ZF9cdTBkMWNcdTBkNDJcdTBkN2FfXHUwZDFjXHUwZDQyXHUwZDMyXHUwZDQ4X1x1MGQxM1x1MGQxN1x1MGQzOFx1MGQ0ZFx1''@;'; put 'put ''MGQzMVx1MGQ0ZFx1MGQzMVx1MGQ0ZF9cdTBkMzhcdTBkNDZcdTBkMmFcdTBkNGRcdTBkMzFcdTBkNGRcdTBkMzFcdTBkMDJcdTBkMmNcdTBkN2NfXHUwZDEyXHUwZDE1XHUwZDRkXHUwZDFmXHUwZDRiXHUwZDJjXHUwZDdjX1x1MGQyOFx1MGQzNVx1MGQwMlx1MGQyY1x1MGQ3Y19cdTBkMjFc''@;'; put 'put ''dTBkM2ZcdTBkMzhcdTBkMDJcdTBkMmNcdTBkN2MiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGQxY1x1MGQyOFx1MGQ0MS5fXHUwZDJiXHUwZDQ2XHUwZDJjXHUwZDRkXHUwZDMwXHUwZDQxLl9cdTBkMmVcdTBkM2VcdTBkN2MuX1x1MGQwZlx1MGQyYVx1MGQ0ZFx1MGQzMFx1MGQzZi5f''@;'; put 'put ''XHUwZDJlXHUwZDQ3XHUwZDJmXHUwZDRkX1x1MGQxY1x1MGQ0Mlx1MGQ3YV9cdTBkMWNcdTBkNDJcdTBkMzJcdTBkNDguX1x1MGQxM1x1MGQxNy5fXHUwZDM4XHUwZDQ2XHUwZDJhXHUwZDRkXHUwZDMxXHUwZDRkXHUwZDMxLl9cdTBkMTJcdTBkMTVcdTBkNGRcdTBkMWZcdTBkNGIuX1x1MGQy''@;'; put 'put ''OFx1MGQzNVx1MGQwMi5fXHUwZDIxXHUwZDNmXHUwZDM4XHUwZDAyLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBkMWVcdTBkM2VcdTBkMmZcdTBkMzFcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDI0XHUwZDNmXHUwZDE5XHUwZDRkXHUwZDE1XHUw''@;'; put 'put ''ZDMzXHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQxYVx1MGQ0YVx1MGQzNVx1MGQ0ZFx1MGQzNVx1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMmNcdTBkNDFcdTBkMjdcdTBkMjhcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDM1XHUwZDRkXHUwZDJmXHUwZDNlXHUwZDM0XHUw''@;'; put 'put ''ZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQzNVx1MGQ0Nlx1MGQzM1x1MGQ0ZFx1MGQzM1x1MGQzZlx1MGQyZlx1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMzZcdTBkMjhcdTBkM2ZcdTBkMmZcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi''@;'; put 'put ''XHUwZDFlXHUwZDNlXHUwZDJmXHUwZDdjX1x1MGQyNFx1MGQzZlx1MGQxOVx1MGQ0ZFx1MGQxNVx1MGQ3ZV9cdTBkMWFcdTBkNGFcdTBkMzVcdTBkNGRcdTBkMzVfXHUwZDJjXHUwZDQxXHUwZDI3XHUwZDdiX1x1MGQzNVx1MGQ0ZFx1MGQyZlx1MGQzZVx1MGQzNFx1MGQwMl9cdTBkMzVcdTBk''@;'; put 'put ''NDZcdTBkMzNcdTBkNGRcdTBkMzNcdTBkM2ZfXHUwZDM2XHUwZDI4XHUwZDNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBkMWVcdTBkM2VfXHUwZDI0XHUwZDNmX1x1MGQxYVx1MGQ0YV9cdTBkMmNcdTBkNDFfXHUwZDM1XHUwZDRkXHUwZDJmXHUwZDNlX1x1MGQzNVx1MGQ0Nl9cdTBk''@;'; put 'put ''MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gLVx1MGQyOFx1MGQ0MSIsTFRTOiJBIGg6bW06c3MgLVx1MGQyOFx1MGQ0MSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gLVx1MGQyOFx1MGQ0MSIsTExMTDoi''@;'; put 'put ''ZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSAtXHUwZDI4XHUwZDQxIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBkMDdcdTBkMjhcdTBkNGRcdTBkMjhcdTBkNGRdIExUIixuZXh0RGF5OiJbXHUwZDI4XHUwZDNlXHUwZDMzXHUwZDQ2XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5''@;'; put 'put ''OiJbXHUwZDA3XHUwZDI4XHUwZDRkXHUwZDI4XHUwZDMyXHUwZDQ2XSBMVCIsbGFzdFdlZWs6IltcdTBkMTVcdTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBkMTVcdTBkMzRcdTBkM2ZcdTBk''@;'; put 'put ''MWVcdTBkNGRcdTBkMWVcdTBkNGQiLHBhc3Q6IiVzIFx1MGQyZVx1MGQ0MVx1MGQ3Ylx1MGQyYVx1MGQ0ZCIsczoiXHUwZDA1XHUwZDdkXHUwZDJhIFx1MGQyOFx1MGQzZlx1MGQyZVx1MGQzZlx1MGQzN1x1MGQxOVx1MGQ0ZFx1MGQxOVx1MGQ3ZSIsc3M6IiVkIFx1MGQzOFx1MGQ0Nlx1MGQx''@;'; put 'put ''NVx1MGQ0ZFx1MGQxNVx1MGQ3Ylx1MGQyMVx1MGQ0ZCIsbToiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyZVx1MGQzZlx1MGQyOFx1MGQzZlx1MGQzMVx1MGQ0ZFx1MGQzMVx1MGQ0ZCIsbW06IiVkIFx1MGQyZVx1MGQzZlx1MGQyOFx1MGQzZlx1MGQzMVx1MGQ0ZFx1MGQzMVx1MGQ0ZCIsaDoi''@;'; put 'put ''XHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyZVx1MGQyM1x1MGQzZlx1MGQxNVx1MGQ0ZFx1MGQxNVx1MGQ0Mlx1MGQ3YyIsaGg6IiVkIFx1MGQyZVx1MGQyM1x1MGQzZlx1MGQxNVx1MGQ0ZFx1MGQxNVx1MGQ0Mlx1MGQ3YyIsZDoiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyNlx1MGQzZlx1MGQz''@;'; put 'put ''NVx1MGQzOFx1MGQwMiIsZGQ6IiVkIFx1MGQyNlx1MGQzZlx1MGQzNVx1MGQzOFx1MGQwMiIsTToiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyZVx1MGQzZVx1MGQzOFx1MGQwMiIsTU06IiVkIFx1MGQyZVx1MGQzZVx1MGQzOFx1MGQwMiIseToiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQzNVx1''@;'; put 'put ''MGQ3Y1x1MGQzN1x1MGQwMiIseXk6IiVkIFx1MGQzNVx1MGQ3Y1x1MGQzN1x1MGQwMiJ9LG1lcmlkaWVtUGFyc2U6L1x1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQzZnxcdTBkMzBcdTBkM2VcdTBkMzVcdTBkM2ZcdTBkMzJcdTBkNDZ8XHUwZDA5XHUwZDFhXHUwZDRkXHUwZDFh''@;'; put 'put ''IFx1MGQxNVx1MGQzNFx1MGQzZlx1MGQxZVx1MGQ0ZFx1MGQxZVx1MGQ0ZHxcdTBkMzVcdTBkNDhcdTBkMTVcdTBkNDFcdTBkMjhcdTBkNGRcdTBkMjhcdTBkNDdcdTBkMzBcdTBkMDJ8XHUwZDMwXHUwZDNlXHUwZDI0XHUwZDRkXHUwZDMwXHUwZDNmL2ksbWVyaWRpZW1Ib3VyOmZ1bmN0aW9u''@;'; put 'put ''KEUsTWUpe3JldHVybiAxMj09PUUmJihFPTApLCJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YiPT09TWUmJkU+PTR8fCJcdTBkMDlcdTBkMWFcdTBkNGRcdTBkMWEgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkIj09PU1lfHwiXHUwZDM1XHUw''@;'; put 'put ''ZDQ4XHUwZDE1XHUwZDQxXHUwZDI4XHUwZDRkXHUwZDI4XHUwZDQ3XHUwZDMwXHUwZDAyIj09PU1lP0UrMTI6RX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTw0PyJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YiOkU8MTI/Ilx1MGQzMFx1MGQzZVx1MGQz''@;'; put 'put ''NVx1MGQzZlx1MGQzMlx1MGQ0NiI6RTwxNz8iXHUwZDA5XHUwZDFhXHUwZDRkXHUwZDFhIFx1MGQxNVx1MGQzNFx1MGQzZlx1MGQxZVx1MGQ0ZFx1MGQxZVx1MGQ0ZCI6RTwyMD8iXHUwZDM1XHUwZDQ4XHUwZDE1XHUwZDQxXHUwZDI4XHUwZDRkXHUwZDI4XHUwZDQ3XHUwZDMwXHUwZDAyIjoi''@;'; put 'put ''XHUwZDMwXHUwZDNlXHUwZDI0XHUwZDRkXHUwZDMwXHUwZDNmIn19KX0oTCgxNTQzOSkpfSwzMTk3NzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKE1lLFUsUSxaKXtzd2l0Y2goUSl7Y2FzZSJzIjpyZXR1cm4gVT8iXHUwNDQ1XHUwNDRk''@;'; put 'put ''XHUwNDM0XHUwNDQ1XHUwNDRkXHUwNDNkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0NVx1MDQ0ZFx1MDQzNFx1MDQ0NVx1MDQ0ZFx1MDQzZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJcdTA0M2QiO2Nhc2Uic3MiOnJldHVy''@;'; put 'put ''biBNZSsoVT8iIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6IiBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJcdTA0M2QiKTtjYXNlIm0iOmNhc2UibW0iOnJldHVybiBNZSsoVT8iIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiI6''@;'; put 'put ''IiBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NGJcdTA0M2QiKTtjYXNlImgiOmNhc2UiaGgiOnJldHVybiBNZSsoVT8iIFx1MDQ0Nlx1MDQzMFx1MDQzMyI6IiBcdTA0NDZcdTA0MzBcdTA0MzNcdTA0MzhcdTA0MzlcdTA0M2QiKTtjYXNlImQiOmNhc2UiZGQiOnJldHVybiBN''@;'; put 'put ''ZSsoVT8iIFx1MDRlOVx1MDQzNFx1MDRlOVx1MDQ0MCI6IiBcdTA0ZTlcdTA0MzRcdTA0NDBcdTA0MzhcdTA0MzlcdTA0M2QiKTtjYXNlIk0iOmNhc2UiTU0iOnJldHVybiBNZSsoVT8iIFx1MDQ0MVx1MDQzMFx1MDQ0MCI6IiBcdTA0NDFcdTA0MzBcdTA0NDBcdTA0NGJcdTA0M2QiKTtjYXNl''@;'; put 'put ''InkiOmNhc2UieXkiOnJldHVybiBNZSsoVT8iIFx1MDQzNlx1MDQzOFx1MDQzYiI6IiBcdTA0MzZcdTA0MzhcdTA0M2JcdTA0MzhcdTA0MzlcdTA0M2QiKTtkZWZhdWx0OnJldHVybiBNZX19Z2UuZGVmaW5lTG9jYWxlKCJtbiIse21vbnRoczoiXHUwNDFkXHUwNDRkXHUwNDMzXHUwNDM0XHUw''@;'; put 'put ''NGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MjVcdTA0M2VcdTA0NTFcdTA0NDBcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxM1x1MDQ0M1x1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNFx1''@;'; put 'put ''MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE0XHUwNGU5XHUwNDQwXHUwNGU5XHUwNDMyXHUwNDM0XHUwNGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MjJcdTA0MzBcdTA0MzJcdTA0MzRcdTA0NDNc''@;'; put 'put ''dTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxN1x1MDQ0M1x1MDQ0MFx1MDQzM1x1MDQzMFx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE0XHUwNDNlXHUwNDNiXHUwNDM0XHUwNDQzXHUwNDMz''@;'; put 'put ''XHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MWRcdTA0MzBcdTA0MzlcdTA0M2NcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxNVx1MDQ0MVx1MDQzNFx1MDRhZlx1MDQzM1x1MDQ0ZFx1MDQ0ZFx1MDQ0''@;'; put 'put ''MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDEwXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzJcdTA0MzBcdTA0M2QgXHUwNDNkXHUwNDRkXHUwNDMzXHUwNDM0XHUwNGFmXHUw''@;'; put 'put ''NDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzJcdTA0MzBcdTA0M2QgXHUwNDQ1XHUwNDNlXHUwNDUxXHUwNDQwXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNTaG9ydDoiMSBcdTA0NDFcdTA0MzBcdTA0NDBfMiBcdTA0NDFcdTA0MzBcdTA0NDBfMyBcdTA0NDFcdTA0MzBcdTA0NDBfNCBcdTA0NDFcdTA0MzBcdTA0NDBfNSBcdTA0NDFcdTA0MzBcdTA0NDBfNiBcdTA0NDFcdTA0MzBcdTA0NDBfNyBcdTA0NDFcdTA0MzBcdTA0NDBfOCBcdTA0''@;'; put 'put ''NDFcdTA0MzBcdTA0NDBfOSBcdTA0NDFcdTA0MzBcdTA0NDBfMTAgXHUwNDQxXHUwNDMwXHUwNDQwXzExIFx1MDQ0MVx1MDQzMFx1MDQ0MF8xMiBcdTA0NDFcdTA0MzBcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwNDFkXHUwNDRmXHUwNDNjX1x1''@;'; put 'put ''MDQxNFx1MDQzMFx1MDQzMlx1MDQzMFx1MDQzMF9cdTA0MWNcdTA0NGZcdTA0MzNcdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDFiXHUwNDQ1XHUwNDMwXHUwNDMzXHUwNDMyXHUwNDMwX1x1MDQxZlx1MDRhZlx1MDQ0MFx1MDQ0ZFx1MDQzMl9cdTA0MTFcdTA0MzBcdTA0MzBcdTA0NDFcdTA0MzBc''@;'; put 'put ''dTA0M2RfXHUwNDExXHUwNDRmXHUwNDNjXHUwNDMxXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQxZFx1MDQ0Zlx1MDQzY19cdTA0MTRcdTA0MzBcdTA0MzJfXHUwNDFjXHUwNDRmXHUwNDMzX1x1MDQxYlx1MDQ0NVx1MDQzMF9cdTA0MWZcdTA0YWZcdTA0NDBfXHUwNDEx''@;'; put 'put ''XHUwNDMwXHUwNDMwX1x1MDQxMVx1MDQ0Zlx1MDQzYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDFkXHUwNDRmX1x1MDQxNFx1MDQzMF9cdTA0MWNcdTA0NGZfXHUwNDFiXHUwNDQ1X1x1MDQxZlx1MDRhZl9cdTA0MTFcdTA0MzBfXHUwNDExXHUwNDRmIi5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIixMTEw6IllZWVkgXHUwNDNlXHUwNDNkXHUwNDRiIE1NTU1cdTA0NGJcdTA0''@;'; put 'put ''M2QgRCBISDptbSIsTExMTDoiZGRkZCwgWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNGFlXHUwNGU4fFx1MDRhZVx1MDQyNS9pLGlzUE06ZnVuY3Rpb24oTWUpe3JldHVybiJcdTA0YWVcdTA0MjUiPT09TWV9LG1l''@;'; put 'put ''cmlkaWVtOmZ1bmN0aW9uKE1lLFUsUSl7cmV0dXJuIE1lPDEyPyJcdTA0YWVcdTA0ZTgiOiJcdTA0YWVcdTA0MjUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDRlOFx1MDQzZFx1MDRlOVx1MDRlOVx1MDQzNFx1MDRlOVx1MDQ0MF0gTFQiLG5leHREYXk6IltcdTA0MWNcdTA0MzBcdTA0NDBc''@;'; put 'put ''dTA0MzNcdTA0MzBcdTA0MzBcdTA0NDhdIExUIixuZXh0V2VlazoiW1x1MDQxOFx1MDQ0MFx1MDQ0ZFx1MDQ0NV0gZGRkZCBMVCIsbGFzdERheToiW1x1MDRlOFx1MDQ0N1x1MDQzOFx1MDQzM1x1MDQzNFx1MDRlOVx1MDQ0MF0gTFQiLGxhc3RXZWVrOiJbXHUwNGU4XHUwNDNkXHUwNDMzXHUw''@;'; put 'put ''NGU5XHUwNDQwXHUwNDQxXHUwNGU5XHUwNDNkXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA0MzRcdTA0MzBcdTA0NDBcdTA0MzBcdTA0MzAiLHBhc3Q6IiVzIFx1MDRlOVx1MDQzY1x1MDQzZFx1MDRlOSIsczpCLHNzOkIsbTpCLG1tOkIsaDpC''@;'; put 'put ''LGhoOkIsZDpCLGRkOkIsTTpCLE1NOkIseTpCLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0gXHUwNGU5XHUwNDM0XHUwNGU5XHUwNDQwLyxvcmRpbmFsOmZ1bmN0aW9uKE1lLFUpe3N3aXRjaChVKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBNZSsiIFx1''@;'; put 'put ''MDRlOVx1MDQzNFx1MDRlOVx1MDQ0MCI7ZGVmYXVsdDpyZXR1cm4gTWV9fX0pfShMKDE1NDM5KSl9LDY2MTg0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTA5NjciLDI6Ilx1MDk2OCIsMzoiXHUwOTY5Iiw0OiJcdTA5NmEiLDU6Ilx1''@;'; put 'put ''MDk2YiIsNjoiXHUwOTZjIiw3OiJcdTA5NmQiLDg6Ilx1MDk2ZSIsOToiXHUwOTZmIiwwOiJcdTA5NjYifSxFPXsiXHUwOTY3IjoiMSIsIlx1MDk2OCI6IjIiLCJcdTA5NjkiOiIzIiwiXHUwOTZhIjoiNCIsIlx1MDk2YiI6IjUiLCJcdTA5NmMiOiI2IiwiXHUwOTZkIjoiNyIsIlx1MDk2ZSI6''@;'; put 'put ''IjgiLCJcdTA5NmYiOiI5IiwiXHUwOTY2IjoiMCJ9O2Z1bmN0aW9uIE1lKFEsWixpZSxsZSl7dmFyIFk9IiI7aWYoWilzd2l0Y2goaWUpe2Nhc2UicyI6WT0iXHUwOTE1XHUwOTNlXHUwOTM5XHUwOTQwIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNiI7YnJlYWs7Y2FzZSJzcyI6WT0i''@;'; put 'put ''JWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTI2IjticmVhaztjYXNlIm0iOlk9Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5M2ZcdTA5MWYiO2JyZWFrO2Nhc2UibW0iOlk9IiVkIFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkzZlx1MDkxZlx1MDk0NyI7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJoIjpZPSJcdTA5MGZcdTA5MTUgXHUwOTI0XHUwOTNlXHUwOTM4IjticmVhaztjYXNlImhoIjpZPSIlZCBcdTA5MjRcdTA5M2VcdTA5MzgiO2JyZWFrO2Nhc2UiZCI6WT0iXHUwOTBmXHUwOTE1IFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOCI7YnJlYWs7Y2FzZSJkZCI6WT0iJWQgXHUwOTI2''@;'; put 'put ''XHUwOTNmXHUwOTM1XHUwOTM4IjticmVhaztjYXNlIk0iOlk9Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5M2UiO2JyZWFrO2Nhc2UiTU0iOlk9IiVkIFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDk0NyI7YnJlYWs7Y2FzZSJ5IjpZPSJcdTA5MGZcdTA5MTUg''@;'; put 'put ''XHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3IjticmVhaztjYXNlInl5IjpZPSIlZCBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzdcdTA5NDcifWVsc2Ugc3dpdGNoKGllKXtjYXNlInMiOlk9Ilx1MDkxNVx1MDkzZVx1MDkzOVx1MDk0MCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJcdTA5MjZcdTA5''@;'; put 'put ''M2VcdTA5MDIiO2JyZWFrO2Nhc2Uic3MiOlk9IiVkIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJtIjpZPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTNmXHUwOTFmXHUwOTNlIjticmVhaztjYXNlIm1tIjpZ''@;'; put 'put ''PSIlZCBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5M2ZcdTA5MWZcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UiaCI6WT0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyNFx1MDkzZVx1MDkzOFx1MDkzZSI7YnJlYWs7Y2FzZSJoaCI6WT0iJWQgXHUwOTI0XHUwOTNlXHUwOTM4XHUwOTNlXHUwOTAyIjti''@;'; put 'put ''cmVhaztjYXNlImQiOlk9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5MzhcdTA5M2UiO2JyZWFrO2Nhc2UiZGQiOlk9IiVkIFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOFx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJNIjpZPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUw''@;'; put 'put ''OTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTRkXHUwOTJmXHUwOTNlIjticmVhaztjYXNlIk1NIjpZPSIlZCBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UieSI6WT0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkzNVx1MDkzMFx1MDk0''@;'; put 'put ''ZFx1MDkzN1x1MDkzZSI7YnJlYWs7Y2FzZSJ5eSI6WT0iJWQgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3XHUwOTNlXHUwOTAyIn1yZXR1cm4gWS5yZXBsYWNlKC8lZC9pLFEpfWdlLmRlZmluZUxvY2FsZSgibXIiLHttb250aHM6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0N1x1MDkzNVx1MDkz''@;'; put 'put ''ZVx1MDkzMFx1MDk0MF9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZlx1MDkzMl9cdTA5MmVcdTA5NDdfXHUwOTFjXHUw''@;'; put 'put ''OTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDk0OF9cdTA5MTFcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MWZfXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Ylx1MDkyY1x1MDkzMF9cdTA5Mjhc''@;'; put 'put ''dTA5NGJcdTA5MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDcuX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0''@;'; put 'put ''ZFx1MDkzMFx1MDk0MS5fXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhLl9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5M2YuX1x1MDkyZVx1MDk0Ny5fXHUwOTFjXHUwOTQyXHUwOTI4Ll9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5NDguX1x1MDkxMVx1MDkxNy5fXHUwOTM4XHUwOTJh''@;'; put 'put ''XHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyLl9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGIuX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMi5fXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEw''@;'; put 'put ''LHdlZWtkYXlzOiJcdTA5MzBcdTA5MzVcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzM1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MzVcdTA5M2VcdTA5MzBf''@;'; put 'put ''XHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTMwXHUw''@;'; put 'put ''OTM1XHUwOTNmX1x1MDkzOFx1MDk0Ylx1MDkyZV9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzNfXHUwOTJjXHUwOTQxXHUwOTI3X1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Ml9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmIi5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzTWluOiJcdTA5MzBfXHUwOTM4XHUwOTRiX1x1MDkyZVx1MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTE3XHUwOTQxX1x1MDkzNlx1MDk0MV9cdTA5MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlIixMVFM6IkEg''@;'; put 'put ''aDptbTpzcyBcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2UiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5''@;'; put 'put ''MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2UifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10gTFQiLG5leHREYXk6IltcdTA5MDlcdTA5MjZcdTA5NGRcdTA5MmZcdTA5M2VdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5MTVcdTA5M2VcdTA5MzJdIExU''@;'; put 'put ''IixsYXN0V2VlazoiW1x1MDkyZVx1MDkzZVx1MDkxN1x1MDk0MFx1MDkzMl0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUwOTJlXHUwOTI3XHUwOTRkXHUwOTJmXHUwOTQ3IixwYXN0OiIlc1x1MDkyYVx1MDk0Mlx1MDkzMFx1MDk0ZFx1MDkzNVx1''@;'; put 'put ''MDk0MCIsczpNZSxzczpNZSxtOk1lLG1tOk1lLGg6TWUsaGg6TWUsZDpNZSxkZDpNZSxNOk1lLE1NOk1lLHk6TWUseXk6TWV9LHByZXBhcnNlOmZ1bmN0aW9uKFEpe3JldHVybiBRLnJlcGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNcdTA5NmRcdTA5NmVcdTA5''@;'; put 'put ''NmZcdTA5NjZdL2csZnVuY3Rpb24oWil7cmV0dXJuIEVbWl19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihRKXtyZXR1cm4gUS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFope3JldHVybiBCW1pdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDkyYVx1MDkzOVx1MDkzZVx1MDkxZlx1MDk0N3xcdTA5Mzhc''@;'; put 'put ''dTA5MTVcdTA5M2VcdTA5MzNcdTA5NDB8XHUwOTI2XHUwOTQxXHUwOTJhXHUwOTNlXHUwOTMwXHUwOTQwfFx1MDkzOFx1MDkzZVx1MDkyZlx1MDkwMlx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MHxcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDAvLG1lcmlkaWVtSG91cjpmdW5j''@;'; put 'put ''dGlvbihRLFope3JldHVybiAxMj09PVEmJihRPTApLCJcdTA5MmFcdTA5MzlcdTA5M2VcdTA5MWZcdTA5NDciPT09Wnx8Ilx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MCI9PT1aP1E6Ilx1MDkyNlx1MDk0MVx1MDkyYVx1MDkzZVx1MDkzMFx1MDk0MCI9PT1afHwiXHUwOTM4XHUwOTNl''@;'; put 'put ''XHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIj09PVp8fCJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDAiPT09Wj9RPj0xMj9ROlErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihRLFosaWUpe3JldHVybiBRPj0wJiZRPDY/Ilx1MDkyYVx1MDkzOVx1''@;'; put 'put ''MDkzZVx1MDkxZlx1MDk0NyI6UTwxMj8iXHUwOTM4XHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIjpRPDE3PyJcdTA5MjZcdTA5NDFcdTA5MmFcdTA5M2VcdTA5MzBcdTA5NDAiOlE8MjA/Ilx1MDkzOFx1MDkzZVx1MDkyZlx1MDkwMlx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MCI6Ilx1MDkzMFx1''@;'; put 'put ''MDkzZVx1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0MCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDY0NTI0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgibXMtbXkiLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlf''@;'; put 'put ''TWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX09nc19TZXBfT2t0X05vdl9EaXMiLnNwbGl0KCJfIiksd2Vla2RheXM6IkFoYWRf''@;'; put 'put ''SXNuaW5fU2VsYXNhX1JhYnVfS2hhbWlzX0p1bWFhdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFoX0lzX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0''@;'; put 'put ''OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovcGFnaXx0ZW5nYWhhcml8cGV0''@;'; put 'put ''YW5nfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxNZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksInBhZ2kiPT09TWU/RToidGVuZ2FoYXJpIj09PU1lP0U+PTExP0U6RSsxMjoicGV0YW5nIj09PU1lfHwibWFsYW0iPT09TWU/RSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEUs''@;'; put 'put ''TWUsVSl7cmV0dXJuIEU8MTE/InBhZ2kiOkU8MTU/InRlbmdhaGFyaSI6RTwxOT8icGV0YW5nIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Vzb2sgcHVrdWxdIExUIixuZXh0V2VlazoiZGRkZCBbcHVrdWxdIExUIixsYXN0RGF5''@;'; put 'put ''OiJbS2VsbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGVwYXMgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsZXBhcyIsczoiYmViZXJhcGEgc2FhdCIsc3M6IiVkIHNhYXQiLG06InNlbWluaXQi''@;'; put 'put ''LG1tOiIlZCBtaW5pdCIsaDoic2VqYW0iLGhoOiIlZCBqYW0iLGQ6InNlaGFyaSIsZGQ6IiVkIGhhcmkiLE06InNlYnVsYW4iLE1NOiIlZCBidWxhbiIseToic2V0YWh1biIseXk6IiVkIHRhaHVuIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNzA0ODU6ZnVuY3Rpb24oWGUs''@;'; put 'put ''SmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJtcyIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFoZF9Jc25fU2VsX1JhYl9LaGFf''@;'; put 'put ''SnVtX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQWhfSXNfU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0g''@;'; put 'put ''SEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihFLE1lKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwicGFnaSI9PT1NZT9FOiJ0ZW5nYWhhcmki''@;'; put 'put ''PT09TWU/RT49MTE/RTpFKzEyOiJwZXRhbmciPT09TWV8fCJtYWxhbSI9PT1NZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTwxMT8icGFnaSI6RTwxNT8idGVuZ2FoYXJpIjpFPDE5PyJwZXRhbmciOiJtYWxhbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb''@;'; put 'put ''SGFyaSBpbmkgcHVrdWxdIExUIixuZXh0RGF5OiJbRXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZWxtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsZXBhcyBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxlcGFzIixzOiJiZWJlcmFwYSBzYWF0IixzczoiJWQgc2FhdCIsbToic2VtaW5pdCIsbW06IiVkIG1pbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFu''@;'; put 'put ''Iix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSwzNjY4MTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoIm10Iix7bW9udGhzOiJKYW5uYXJfRnJhcl9NYXJ6dV9BcHJp''@;'; put 'put ''bF9NZWpqdV9cdTAxMjB1bmp1X0x1bGp1X0F3d2lzc3VfU2V0dGVtYnJ1X090dHVicnVfTm92ZW1icnVfRGlcdTAxMGJlbWJydSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZyYV9NYXJfQXByX01lal9cdTAxMjB1bl9MdWxfQXd3X1NldF9PdHRfTm92X0RpXHUwMTBiIi5zcGxpdCgi''@;'; put 'put ''XyIpLHdlZWtkYXlzOiJJbC1cdTAxMjZhZGRfSXQtVG5lam5fSXQtVGxpZXRhX0wtRXJiZ1x1MDEyN2FfSWwtXHUwMTI2YW1pc19JbC1cdTAxMjBpbWdcdTAxMjdhX0lzLVNpYnQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwMTI2YWRfVG5lX1RsaV9FcmJfXHUwMTI2YW1fXHUwMTIw''@;'; put 'put ''aW1fU2liIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTAxMjZhX1RuX1RsX0VyX1x1MDEyNmFfXHUwMTIwaV9TaSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1N''@;'; put 'put ''IFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJbGx1bSBmaWwtXUxUIixuZXh0RGF5OiJbR1x1MDEyN2FkYSBmaWwtXUxUIixuZXh0V2VlazoiZGRkZCBbZmlsLV1MVCIsbGFzdERheToiW0lsLWJpZXJhXHUwMTI3IGZpbC1d''@;'; put 'put ''TFQiLGxhc3RXZWVrOiJkZGRkIFtsaSBnXHUwMTI3YWRkYV0gW2ZpbC1dTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImZcdTIwMTkgJXMiLHBhc3Q6IiVzIGlsdSIsczoiZnRpdCBzZWtvbmRpIixzczoiJWQgc2Vrb25kaSIsbToibWludXRhIixtbToiJWQgbWludXRp''@;'; put 'put ''IixoOiJzaWVnXHUwMTI3YSIsaGg6IiVkIHNpZWdcdTAxMjdhdCIsZDoiXHUwMTIxdXJuYXRhIixkZDoiJWQgXHUwMTIxcmFuZXQiLE06InhhaGFyIixNTToiJWQgeGh1ciIseToic2VuYSIseXk6IiVkIHNuaSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFs''@;'; put 'put ''OiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDUyMDI0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTEwNDEiLDI6Ilx1MTA0MiIsMzoiXHUxMDQzIiw0OiJcdTEwNDQiLDU6Ilx1MTA0NSIsNjoiXHUxMDQ2''@;'; put 'put ''Iiw3OiJcdTEwNDciLDg6Ilx1MTA0OCIsOToiXHUxMDQ5IiwwOiJcdTEwNDAifSxFPXsiXHUxMDQxIjoiMSIsIlx1MTA0MiI6IjIiLCJcdTEwNDMiOiIzIiwiXHUxMDQ0IjoiNCIsIlx1MTA0NSI6IjUiLCJcdTEwNDYiOiI2IiwiXHUxMDQ3IjoiNyIsIlx1MTA0OCI6IjgiLCJcdTEwNDkiOiI5''@;'; put 'put ''IiwiXHUxMDQwIjoiMCJ9O2dlLmRlZmluZUxvY2FsZSgibXkiLHttb250aHM6Ilx1MTAwN1x1MTAxNFx1MTAzYVx1MTAxNFx1MTAxZFx1MTAyYlx1MTAxYlx1MTAyZV9cdTEwMTZcdTEwMzFcdTEwMTZcdTEwMzFcdTEwMmNcdTEwM2FcdTEwMWRcdTEwMmJcdTEwMWJcdTEwMmVfXHUxMDE5XHUx''@;'; put 'put ''MDEwXHUxMDNhX1x1MTAyN1x1MTAxNVx1MTAzY1x1MTAyZV9cdTEwMTlcdTEwMzFfXHUxMDA3XHUxMDNkXHUxMDE0XHUxMDNhX1x1MTAwN1x1MTAzMFx1MTAxY1x1MTAyZFx1MTAyZlx1MTAwNFx1MTAzYV9cdTEwMWVcdTEwM2NcdTEwMDJcdTEwMmZcdTEwMTBcdTEwM2FfXHUxMDA1XHUxMDAw''@;'; put 'put ''XHUxMDNhXHUxMDEwXHUxMDA0XHUxMDNhXHUxMDE4XHUxMDJjX1x1MTAyMVx1MTAzMVx1MTAyY1x1MTAwMFx1MTAzYVx1MTAxMFx1MTAyZFx1MTAyZlx1MTAxOFx1MTAyY19cdTEwMTRcdTEwMmRcdTEwMmZcdTEwMWRcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmNfXHUxMDEyXHUxMDJlXHUxMDA3''@;'; put 'put ''XHUxMDA0XHUxMDNhXHUxMDE4XHUxMDJjIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTEwMDdcdTEwMTRcdTEwM2FfXHUxMDE2XHUxMDMxX1x1MTAxOVx1MTAxMFx1MTAzYV9cdTEwMTVcdTEwM2NcdTEwMmVfXHUxMDE5XHUxMDMxX1x1MTAwN1x1MTAzZFx1MTAxNFx1MTAzYV9cdTEwMWNc''@;'; put 'put ''dTEwMmRcdTEwMmZcdTEwMDRcdTEwM2FfXHUxMDFlXHUxMDNjX1x1MTAwNVx1MTAwMFx1MTAzYV9cdTEwMjFcdTEwMzFcdTEwMmNcdTEwMDBcdTEwM2FfXHUxMDE0XHUxMDJkXHUxMDJmX1x1MTAxMlx1MTAyZSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUxMDEwXHUxMDE0XHUxMDA0XHUxMDNh''@;'; put 'put ''XHUxMDM5XHUxMDAyXHUxMDE0XHUxMDNkXHUxMDMxX1x1MTAxMFx1MTAxNFx1MTAwNFx1MTAzYVx1MTAzOVx1MTAxY1x1MTAyY19cdTEwMjFcdTEwMDRcdTEwM2FcdTEwMzlcdTEwMDJcdTEwMmJfXHUxMDE3XHUxMDJmXHUxMDEyXHUxMDM5XHUxMDEzXHUxMDFmXHUxMDMwXHUxMDM4X1x1MTAw''@;'; put 'put ''MFx1MTAzY1x1MTAyY1x1MTAxZVx1MTAxNVx1MTAxMFx1MTAzMVx1MTAzOF9cdTEwMWVcdTEwMzFcdTEwMmNcdTEwMDBcdTEwM2NcdTEwMmNfXHUxMDA1XHUxMDE0XHUxMDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MTAxNFx1MTAzZFx1MTAzMV9cdTEwMWNcdTEwMmNfXHUxMDAy''@;'; put 'put ''XHUxMDJiX1x1MTAxZlx1MTAzMFx1MTAzOF9cdTEwMDBcdTEwM2NcdTEwMmNfXHUxMDFlXHUxMDMxXHUxMDJjX1x1MTAxNFx1MTAzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUxMDE0XHUxMDNkXHUxMDMxX1x1MTAxY1x1MTAyY19cdTEwMDJcdTEwMmJfXHUxMDFmXHUxMDMwXHUxMDM4''@;'; put 'put ''X1x1MTAwMFx1MTAzY1x1MTAyY19cdTEwMWVcdTEwMzFcdTEwMmNfXHUxMDE0XHUxMDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExM''@;'; put 'put ''TDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUxMDFhXHUxMDE0XHUxMDMxLl0gTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLG5leHREYXk6IltcdTEwMTlcdTEwMTRcdTEwMDBcdTEwM2FcdTEwMTZcdTEwM2NcdTEwMTRcdTEwM2FdIExUIFtcdTEwMTlc''@;'; put 'put ''dTEwM2VcdTEwMmNdIixuZXh0V2VlazoiZGRkZCBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsbGFzdERheToiW1x1MTAxOVx1MTAxNFx1MTAzMS5cdTEwMDBdIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixsYXN0V2VlazoiW1x1MTAxNVx1MTAzY1x1MTAyZVx1MTAzOFx1MTAwMVx1MTAzMlx1''@;'; put 'put ''MTAzN1x1MTAxZVx1MTAzMVx1MTAyY10gZGRkZCBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUxMDFjXHUxMDJjXHUxMDE5XHUxMDBhXHUxMDNhXHUxMDM3ICVzIFx1MTAxOVx1MTAzZVx1MTAyYyIscGFzdDoiXHUxMDFjXHUx''@;'; put 'put ''MDNkXHUxMDE0XHUxMDNhXHUxMDAxXHUxMDMyXHUxMDM3XHUxMDFlXHUxMDMxXHUxMDJjICVzIFx1MTAwMCIsczoiXHUxMDA1XHUxMDAwXHUxMDM5XHUxMDAwXHUxMDE0XHUxMDNhLlx1MTAyMVx1MTAxNFx1MTAwYVx1MTAzYVx1MTAzOFx1MTAwNFx1MTAxYVx1MTAzYSIsc3M6IiVkIFx1MTAw''@;'; put 'put ''NVx1MTAwMFx1MTAzOVx1MTAwMFx1MTAxNFx1MTAzN1x1MTAzYSIsbToiXHUxMDEwXHUxMDA1XHUxMDNhXHUxMDE5XHUxMDJkXHUxMDE0XHUxMDA1XHUxMDNhIixtbToiJWQgXHUxMDE5XHUxMDJkXHUxMDE0XHUxMDA1XHUxMDNhIixoOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEwMTRcdTEwMmNc''@;'; put 'put ''dTEwMWJcdTEwMmUiLGhoOiIlZCBcdTEwMTRcdTEwMmNcdTEwMWJcdTEwMmUiLGQ6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxYlx1MTAwMFx1MTAzYSIsZGQ6IiVkIFx1MTAxYlx1MTAwMFx1MTAzYSIsTToiXHUxMDEwXHUxMDA1XHUxMDNhXHUxMDFjIixNTToiJWQgXHUxMDFjIix5OiJcdTEw''@;'; put 'put ''MTBcdTEwMDVcdTEwM2FcdTEwMTRcdTEwM2VcdTEwMDVcdTEwM2EiLHl5OiIlZCBcdTEwMTRcdTEwM2VcdTEwMDVcdTEwM2EifSxwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9bXHUxMDQxXHUxMDQyXHUxMDQzXHUxMDQ0XHUxMDQ1XHUxMDQ2XHUxMDQ3XHUxMDQ4XHUx''@;'; put 'put ''MDQ5XHUxMDQwXS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0pfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw0MjY4ODpmdW5jdGlvbihYZSxK''@;'; put 'put ''ZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoIm5iIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJqYW4uX2ZlYi5fbWFyc19hcHIuX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6InNceGY4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbFx4ZjhyZGFnIi5z''@;'; put 'put ''cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InNceGY4Ll9tYS5fdGkuX29uLl90by5fZnIuX2xceGY4LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic1x4ZjhfbWFfdGlfb25fdG9fZnJfbFx4ZjgiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoi''@;'; put 'put ''SEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSBkYWcga2wuXSBMVCIsbmV4dERh''@;'; put 'put ''eToiW2kgbW9yZ2VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbaSBnXHhlNXIga2wuXSBMVCIsbGFzdFdlZWs6Iltmb3JyaWdlXSBkZGRkIFtrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lk''@;'; put 'put ''ZW4iLHM6Im5vZW4gc2VrdW5kZXIiLHNzOiIlZCBzZWt1bmRlciIsbToiZXR0IG1pbnV0dCIsbW06IiVkIG1pbnV0dGVyIixoOiJlbiB0aW1lIixoaDoiJWQgdGltZXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2VyIix3OiJlbiB1a2UiLHd3OiIlZCB1a2VyIixNOiJlbiBtXHhlNW5lZCIsTU06''@;'; put 'put ''IiVkIG1ceGU1bmVkZXIiLHk6ImV0dCBceGU1ciIseXk6IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDY4OTE0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTA5NjciLDI6Ilx1MDk2OCIsMzoiXHUwOTY5Iiw0OiJcdTA5NmEiLDU6Ilx1MDk2YiIsNjoiXHUwOTZjIiw3OiJcdTA5NmQiLDg6Ilx1MDk2ZSIsOToiXHUwOTZmIiwwOiJcdTA5NjYifSxFPXsiXHUwOTY3IjoiMSIsIlx1MDk2OCI6IjIiLCJcdTA5''@;'; put 'put ''NjkiOiIzIiwiXHUwOTZhIjoiNCIsIlx1MDk2YiI6IjUiLCJcdTA5NmMiOiI2IiwiXHUwOTZkIjoiNyIsIlx1MDk2ZSI6IjgiLCJcdTA5NmYiOiI5IiwiXHUwOTY2IjoiMCJ9O2dlLmRlZmluZUxvY2FsZSgibmUiLHttb250aHM6Ilx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5''@;'; put 'put ''MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZlx1MDkzMl9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQxXHUwOTI4X1x1MDkxY1x1MDk0MVx1''@;'; put 'put ''MDkzMlx1MDkzZVx1MDkwOF9cdTA5MDVcdTA5MTdcdTA5MzdcdTA5NGRcdTA5MWZfXHUwOTM4XHUwOTQ3XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Ylx1MDkyY1x1MDkzMF9cdTA5MjhcdTA5NGJc''@;'; put 'put ''dTA5MmRcdTA5NDdcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzBfXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5MWNcdTA5MjguX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MS5fXHUw''@;'; put 'put ''OTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZi5fXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0MVx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDguX1x1MDkwNVx1MDkxNy5fXHUwOTM4XHUwOTQ3XHUwOTJhXHUwOTRkXHUw''@;'; put 'put ''OTFmLl9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGIuX1x1MDkyOFx1MDk0Ylx1MDkyZFx1MDk0Ny5fXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTA5MDZcdTA5MDdcdTA5MjRcdTA5MmNcdTA5M2VcdTA5''@;'; put 'put ''MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkxOVx1MDk0ZFx1MDkxN1x1MDkzMlx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTJjXHUwOTNmXHUwOTM5XHUwOTNmXHUwOTJjXHUwOTNlXHUw''@;'; put 'put ''OTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MmNcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTA2XHUwOTA3XHUwOTI0Ll9cdTA5MzhcdTA5NGJcdTA5MmUuX1x1MDkyZVx1''@;'; put 'put ''MDkxOVx1MDk0ZFx1MDkxN1x1MDkzMi5fXHUwOTJjXHUwOTQxXHUwOTI3Ll9cdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2YuX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMC5fXHUwOTM2XHUwOTI4XHUwOTNmLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOTA2Ll9cdTA5MzhcdTA5''@;'; put 'put ''NGIuX1x1MDkyZVx1MDkwMi5fXHUwOTJjXHUwOTQxLl9cdTA5MmNcdTA5M2YuX1x1MDkzNlx1MDk0MS5fXHUwOTM2LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBXHUwOTE1XHUwOTRiIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixMVFM6''@;'; put 'put ''IkFcdTA5MTVcdTA5NGIgaDptbTpzcyBcdTA5MmNcdTA5MWNcdTA5NDciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQVx1MDkxNVx1MDk0YiBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEFcdTA5MTVc''@;'; put 'put ''dTA5NGIgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDcifSxwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9bXHUwOTY3XHUwOTY4XHUwOTY5XHUwOTZhXHUwOTZiXHUwOTZjXHUwOTZkXHUwOTZlXHUwOTZmXHUwOTY2XS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSl9LHBv''@;'; put 'put ''c3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0pfSxtZXJpZGllbVBhcnNlOi9cdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2Z8XHUwOTJjXHUwOTNmXHUwOTM5XHUwOTNlXHUwOTI4fFx1MDkyNlx1MDkzZlx1MDkwOVx1MDkw''@;'; put 'put ''MVx1MDkzOFx1MDk0YnxcdTA5MzhcdTA5M2VcdTA5MDFcdTA5MWQvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVybiAxMj09PVUmJihVPTApLCJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2YiPT09UT9VPDQ/VTpVKzEyOiJcdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2VcdTA5MjgiPT09''@;'; put 'put ''UT9VOiJcdTA5MjZcdTA5M2ZcdTA5MDlcdTA5MDFcdTA5MzhcdTA5NGIiPT09UT9VPj0xMD9VOlUrMTI6Ilx1MDkzOFx1MDkzZVx1MDkwMVx1MDkxZCI9PT1RP1UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihVLFEsWil7cmV0dXJuIFU8Mz8iXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTNm''@;'; put 'put ''IjpVPDEyPyJcdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2VcdTA5MjgiOlU8MTY/Ilx1MDkyNlx1MDkzZlx1MDkwOVx1MDkwMVx1MDkzOFx1MDk0YiI6VTwyMD8iXHUwOTM4XHUwOTNlXHUwOTAxXHUwOTFkIjoiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTNmIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltc''@;'; put 'put ''dTA5MDZcdTA5MWNdIExUIixuZXh0RGF5OiJbXHUwOTJkXHUwOTRiXHUwOTMyXHUwOTNmXSBMVCIsbmV4dFdlZWs6IltcdTA5MDZcdTA5MDlcdTA5MDFcdTA5MjZcdTA5NGJdIGRkZGRbLF0gTFQiLGxhc3REYXk6IltcdTA5MzlcdTA5M2ZcdTA5MWNcdTA5NGJdIExUIixsYXN0V2VlazoiW1x1''@;'; put 'put ''MDkxN1x1MDkwZlx1MDkxNVx1MDk0Yl0gZGRkZFssXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTA5MmVcdTA5M2UiLHBhc3Q6IiVzIFx1MDkwNVx1MDkxN1x1MDkzZVx1MDkyMVx1MDkzZiIsczoiXHUwOTE1XHUwOTQ3XHUwOTM5XHUwOTQwIFx1MDkxNVx1''@;'; put 'put ''MDk0ZFx1MDkzN1x1MDkyMyIsc3M6IiVkIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDk0N1x1MDkyM1x1MDk0ZFx1MDkyMSIsbToiXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzZlx1MDkyOFx1MDk0N1x1MDkxZiIsbW06IiVkIFx1MDkyZVx1MDkzZlx1MDkyOFx1MDk0N1x1MDkxZiIsaDoiXHUwOTBm''@;'; put 'put ''XHUwOTE1IFx1MDkxOFx1MDkyM1x1MDk0ZFx1MDkxZlx1MDkzZSIsaGg6IiVkIFx1MDkxOFx1MDkyM1x1MDk0ZFx1MDkxZlx1MDkzZSIsZDoiXHUwOTBmXHUwOTE1IFx1MDkyNlx1MDkzZlx1MDkyOCIsZGQ6IiVkIFx1MDkyNlx1MDkzZlx1MDkyOCIsTToiXHUwOTBmXHUwOTE1IFx1MDkyZVx1''@;'; put 'put ''MDkzOVx1MDkzZlx1MDkyOFx1MDkzZSIsTU06IiVkIFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDkzZSIseToiXHUwOTBmXHUwOTE1IFx1MDkyY1x1MDkzMFx1MDk0ZFx1MDkzNyIseXk6IiVkIFx1MDkyY1x1MDkzMFx1MDk0ZFx1MDkzNyJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1''@;'; put 'put ''NDM5KSl9LDUyMjcyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLEU9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1''@;'; put 'put ''bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLE1lPVsvXmphbi9pLC9eZmViL2ksL15tYWFydHxtcnQuPyQvaSwvXmFwci9pLC9ebWVpJC9pLC9eanVuW2kuXT8kL2ksL15qdWxbaS5dPyQvaSwvXmF1Zy9pLC9ec2VwL2ksL15va3QvaSwvXm5vdi9pLC9eZGVjL2ldLFU9L14oamFu''@;'; put 'put ''dWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2k7Z2UuZGVm''@;'; put 'put ''aW5lTG9jYWxlKCJubC1iZSIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKFosaWUpe3JldHVybiBaPy8t''@;'; put 'put ''TU1NLS8udGVzdChpZSk/RVtaLm1vbnRoKCldOkJbWi5tb250aCgpXTpCfSxtb250aHNSZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVy''@;'; put 'put ''fG5vdmVtYmVyfGRlY2VtYmVyKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oamFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fG1laXxqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaSxtb250aHNQYXJzZTpNZSxsb25nTW9udGhzUGFyc2U6TWUsc2hv''@;'; put 'put ''cnRNb250aHNQYXJzZTpNZSx3ZWVrZGF5czoiem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46''@;'; put 'put ''InpvX21hX2RpX3dvX2RvX3ZyX3phIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQg''@;'; put 'put ''RCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21dIExUIixuZXh0RGF5OiJbbW9yZ2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBM''@;'; put 'put ''VCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIsczoiZWVuIHBhYXIgc2Vjb25kZW4iLHNzOiIlZCBzZWNvbmRlbiIsbToiXHhlOVx4ZTluIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6Ilx4ZTlceGU5biB1dXIiLGhoOiIl''@;'; put 'put ''ZCB1dXIiLGQ6Ilx4ZTlceGU5biBkYWciLGRkOiIlZCBkYWdlbiIsTToiXHhlOVx4ZTluIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiXHhlOVx4ZTluIGphYXIiLHl5OiIlZCBqYWFyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9u''@;'; put 'put ''KFope3JldHVybiBaKygxPT09Wnx8OD09PVp8fFo+PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxMTc1ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVu''@;'; put 'put ''Ll9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxFPSJqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSxNZT1bL15qYW4vaSwvXmZlYi9pLC9ebWFhcnR8bXJ0Lj8kL2ksL15hcHIvaSwvXm1laSQvaSwvXmp1''@;'; put 'put ''bltpLl0/JC9pLC9eanVsW2kuXT8kL2ksL15hdWcvaSwvXnNlcC9pLC9eb2t0L2ksL15ub3YvaSwvXmRlYy9pXSxVPS9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXC4/fGZl''@;'; put 'put ''YlwuP3xtcnRcLj98YXByXC4/fGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pO2dlLmRlZmluZUxvY2FsZSgibmwiLHttb250aHM6ImphbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jl''@;'; put 'put ''cl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihaLGllKXtyZXR1cm4gWj8vLU1NTS0vLnRlc3QoaWUpP0VbWi5tb250aCgpXTpCW1oubW9udGgoKV06Qn0sbW9udGhzUmVnZXg6VSxtb250aHNTaG9ydFJlZ2V4OlUsbW9udGhzU3RyaWN0UmVnZXg6''@;'; put 'put ''L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xtZWl8anVbbmxdXC4/fGF1Z1wu''@;'; put 'put ''P3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2ksbW9udGhzUGFyc2U6TWUsbG9uZ01vbnRoc1BhcnNlOk1lLHNob3J0TW9udGhzUGFyc2U6TWUsd2Vla2RheXM6InpvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWciLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNTaG9ydDoiem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJ6b19tYV9kaV93b19kb192cl96YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpz''@;'; put 'put ''cyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt2YW5kYWFnIG9tXSBMVCIsbmV4dERheToiW21vcmdlbiBvbV0gTFQiLG5leHRXZWVrOiJkZGRk''@;'; put 'put ''IFtvbV0gTFQiLGxhc3REYXk6IltnaXN0ZXJlbiBvbV0gTFQiLGxhc3RXZWVrOiJbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im92ZXIgJXMiLHBhc3Q6IiVzIGdlbGVkZW4iLHM6ImVlbiBwYWFyIHNlY29uZGVuIixzczoiJWQg''@;'; put 'put ''c2Vjb25kZW4iLG06Ilx4ZTlceGU5biBtaW51dXQiLG1tOiIlZCBtaW51dGVuIixoOiJceGU5XHhlOW4gdXVyIixoaDoiJWQgdXVyIixkOiJceGU5XHhlOW4gZGFnIixkZDoiJWQgZGFnZW4iLHc6Ilx4ZTlceGU5biB3ZWVrIix3dzoiJWQgd2VrZW4iLE06Ilx4ZTlceGU5biBtYWFuZCIsTU06''@;'; put 'put ''IiVkIG1hYW5kZW4iLHk6Ilx4ZTlceGU5biBqYWFyIix5eToiJWQgamFhciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihaKXtyZXR1cm4gWisoMT09PVp8fDg9PT1afHxaPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95''@;'; put 'put ''OjR9fSl9KEwoMTU0MzkpKX0sNDE1MTA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJubiIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9u''@;'; put 'put ''b3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJzdW5kYWdfbVx4ZTVuZGFnX3R5c2Rh''@;'; put 'put ''Z19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbGF1cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdS5fbVx4ZTUuX3R5Ll9vbi5fdG8uX2ZyLl9sYXUuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tXHhlNV90eV9vbl90b19mcl9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNl''@;'; put 'put ''RXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2Ft''@;'; put 'put ''ZURheToiW0kgZGFnIGtsb2trYV0gTFQiLG5leHREYXk6IltJIG1vcmdvbiBrbG9ra2FdIExUIixuZXh0V2VlazoiZGRkZCBba2xva2thXSBMVCIsbGFzdERheToiW0kgZ1x4ZTVyIGtsb2trYV0gTFQiLGxhc3RXZWVrOiJbRlx4ZjhyZWdceGU1YW5kZV0gZGRkZCBba2xva2thXSBMVCIsc2Ft''@;'; put 'put ''ZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGFuIixzOiJub2tyZSBzZWt1bmQiLHNzOiIlZCBzZWt1bmQiLG06ImVpdCBtaW51dHQiLG1tOiIlZCBtaW51dHQiLGg6ImVpbiB0aW1lIixoaDoiJWQgdGltYXIiLGQ6ImVpbiBkYWciLGRkOiIlZCBk''@;'; put 'put ''YWdhciIsdzoiZWkgdmVrZSIsd3c6IiVkIHZla2VyIixNOiJlaW4gbVx4ZTVuYWQiLE1NOiIlZCBtXHhlNW5hZGVyIix5OiJlaXQgXHhlNXIiLHl5OiIlZCBceGU1ciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19''@;'; put 'put ''KX0oTCgxNTQzOSkpfSw1Mjc5NzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoIm9jLWxuYyIse21vbnRoczp7c3RhbmRhbG9uZToiZ2VuaVx4ZThyX2ZlYnJpXHhlOHJfbWFyXHhlN19hYnJpbF9tYWlfanVuaF9qdWxoZXRfYWdv''@;'; put 'put ''c3Rfc2V0ZW1icmVfb2N0XHhmMmJyZV9ub3ZlbWJyZV9kZWNlbWJyZSIuc3BsaXQoIl8iKSxmb3JtYXQ6ImRlIGdlbmlceGU4cl9kZSBmZWJyaVx4ZThyX2RlIG1hclx4ZTdfZCdhYnJpbF9kZSBtYWlfZGUganVuaF9kZSBqdWxoZXRfZCdhZ29zdF9kZSBzZXRlbWJyZV9kJ29jdFx4ZjJicmVf''@;'; put 'put ''ZGUgbm92ZW1icmVfZGUgZGVjZW1icmUiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhccykrTU1NTS99LG1vbnRoc1Nob3J0OiJnZW4uX2ZlYnIuX21hclx4ZTdfYWJyLl9tYWlfanVuaF9qdWxoLl9hZ28uX3NldC5fb2N0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VF''@;'; put 'put ''eGFjdDohMCx3ZWVrZGF5czoiZGltZW5nZV9kaWx1bnNfZGltYXJzX2RpbVx4ZThjcmVzX2Rpalx4ZjJ1c19kaXZlbmRyZXNfZGlzc2FidGUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGcuX2RsLl9kbS5fZGMuX2RqLl9kdi5fZHMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkZ19k''@;'; put 'put ''bF9kbV9kY19kal9kdl9kcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW2RlXSBZWVlZIixsbDoiRCBNTU0gWVlZWSIsTExMOiJEIE1NTU0gW2RlXSBZWVlZ''@;'; put 'put ''IFthXSBIOm1tIixsbGw6IkQgTU1NIFlZWVksIEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYV0gSDptbSIsbGxsbDoiZGRkIEQgTU1NIFlZWVksIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3VceGU4aSBhXSBMVCIsbmV4dERheToiW2RlbWFuIGFdIExUIixuZXh0V2Vl''@;'; put 'put ''azoiZGRkZCBbYV0gTFQiLGxhc3REYXk6IltpXHhlOHIgYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtwYXNzYXQgYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImQnYXF1XHhlZCAlcyIscGFzdDoiZmEgJXMiLHM6InVuYXMgc2Vnb25kYXMiLHNzOiIlZCBzZWdvbmRh''@;'; put 'put ''cyIsbToidW5hIG1pbnV0YSIsbW06IiVkIG1pbnV0YXMiLGg6InVuYSBvcmEiLGhoOiIlZCBvcmFzIixkOiJ1biBqb3JuIixkZDoiJWQgam9ybnMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0o''@;'; put 'put ''cnxufHR8XHhlOHxhKS8sb3JkaW5hbDpmdW5jdGlvbihFLE1lKXt2YXIgVT0xPT09RT8iciI6Mj09PUU/Im4iOjM9PT1FPyJyIjo0PT09RT8idCI6Ilx4ZTgiO3JldHVybigidyI9PT1NZXx8IlciPT09TWUpJiYoVT0iYSIpLEUrVX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0s''@;'; put 'put ''Mzc5NDQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MGE2NyIsMjoiXHUwYTY4IiwzOiJcdTBhNjkiLDQ6Ilx1MGE2YSIsNToiXHUwYTZiIiw2OiJcdTBhNmMiLDc6Ilx1MGE2ZCIsODoiXHUwYTZlIiw5OiJcdTBhNmYiLDA6Ilx1MGE2''@;'; put 'put ''NiJ9LEU9eyJcdTBhNjciOiIxIiwiXHUwYTY4IjoiMiIsIlx1MGE2OSI6IjMiLCJcdTBhNmEiOiI0IiwiXHUwYTZiIjoiNSIsIlx1MGE2YyI6IjYiLCJcdTBhNmQiOiI3IiwiXHUwYTZlIjoiOCIsIlx1MGE2ZiI6IjkiLCJcdTBhNjYiOiIwIn07Z2UuZGVmaW5lTG9jYWxlKCJwYS1pbiIse21v''@;'; put 'put ''bnRoczoiXHUwYTFjXHUwYTI4XHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyYlx1MGEzY1x1MGEzMFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBhMmVcdTBhM2VcdTBhMzBcdTBhMWFfXHUwYTA1XHUwYTJhXHUwYTRkXHUwYTMwXHUwYTQ4XHUwYTMyX1x1MGEyZVx1MGEwOF9cdTBhMWNcdTBhNDJcdTBh''@;'; put 'put ''MjhfXHUwYTFjXHUwYTQxXHUwYTMyXHUwYTNlXHUwYTA4X1x1MGEwNVx1MGExN1x1MGEzOFx1MGEyNF9cdTBhMzhcdTBhMjRcdTBhNzBcdTBhMmNcdTBhMzBfXHUwYTA1XHUwYTE1XHUwYTI0XHUwYTQyXHUwYTJjXHUwYTMwX1x1MGEyOFx1MGEzNVx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMjZc''@;'; put 'put ''dTBhMzhcdTBhNzBcdTBhMmNcdTBhMzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGExY1x1MGEyOFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBhMmJcdTBhM2NcdTBhMzBcdTBhMzVcdTBhMzBcdTBhNDBfXHUwYTJlXHUwYTNlXHUwYTMwXHUwYTFhX1x1MGEwNVx1MGEyYVx1MGE0ZFx1MGEz''@;'; put 'put ''MFx1MGE0OFx1MGEzMl9cdTBhMmVcdTBhMDhfXHUwYTFjXHUwYTQyXHUwYTI4X1x1MGExY1x1MGE0MVx1MGEzMlx1MGEzZVx1MGEwOF9cdTBhMDVcdTBhMTdcdTBhMzhcdTBhMjRfXHUwYTM4XHUwYTI0XHUwYTcwXHUwYTJjXHUwYTMwX1x1MGEwNVx1MGExNVx1MGEyNFx1MGE0Mlx1MGEyY1x1''@;'; put 'put ''MGEzMF9cdTBhMjhcdTBhMzVcdTBhNzBcdTBhMmNcdTBhMzBfXHUwYTI2XHUwYTM4XHUwYTcwXHUwYTJjXHUwYTMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBhMTBcdTBhMjRcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM4XHUwYTRiXHUwYTJlXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEyZVx1''@;'; put 'put ''MGE3MFx1MGExN1x1MGEzMlx1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMmNcdTBhNDFcdTBhMjdcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM1XHUwYTQwXHUwYTMwXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEzOFx1MGEzY1x1MGE0MVx1MGE3MVx1MGExNVx1MGEzMFx1MGEzNVx1MGEzZVx1MGEzMF9c''@;'; put 'put ''dTBhMzhcdTBhM2NcdTBhMjhcdTBhNDBcdTBhMWFcdTBhMzBcdTBhMzVcdTBhM2VcdTBhMzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwYTEwXHUwYTI0X1x1MGEzOFx1MGE0Ylx1MGEyZV9cdTBhMmVcdTBhNzBcdTBhMTdcdTBhMzJfXHUwYTJjXHUwYTQxXHUwYTI3X1x1MGEzNVx1''@;'; put 'put ''MGE0MFx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhNDFcdTBhMTVcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTI4XHUwYTQwIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBhMTBcdTBhMjRfXHUwYTM4XHUwYTRiXHUwYTJlX1x1MGEyZVx1MGE3MFx1MGExN1x1MGEzMl9cdTBhMmNcdTBhNDFcdTBh''@;'; put 'put ''MjdfXHUwYTM1XHUwYTQwXHUwYTMwX1x1MGEzOFx1MGEzY1x1MGE0MVx1MGExNVx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhMjhcdTBhNDAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwYTM1XHUwYTFjXHUwYTQ3IixMVFM6IkEgaDptbTpzcyBcdTBhMzVcdTBhMWNc''@;'; put 'put ''dTBhNDciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGEzNVx1MGExY1x1MGE0NyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTBhMzVcdTBhMWNcdTBhNDcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGEwNVx1''@;'; put 'put ''MGExY10gTFQiLG5leHREYXk6IltcdTBhMTVcdTBhMzJdIExUIixuZXh0V2VlazoiW1x1MGEwNVx1MGExN1x1MGEzMlx1MGEzZV0gZGRkZCwgTFQiLGxhc3REYXk6IltcdTBhMTVcdTBhMzJdIExUIixsYXN0V2VlazoiW1x1MGEyYVx1MGEzZlx1MGExYlx1MGEzMlx1MGE0N10gZGRkZCwgTFQi''@;'; put 'put ''LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGEzNVx1MGEzZlx1MGE3MVx1MGExYSIscGFzdDoiJXMgXHUwYTJhXHUwYTNmXHUwYTFiXHUwYTMyXHUwYTQ3IixzOiJcdTBhMTVcdTBhNDFcdTBhMWQgXHUwYTM4XHUwYTE1XHUwYTNmXHUwYTcwXHUwYTFmIixzczoi''@;'; put 'put ''JWQgXHUwYTM4XHUwYTE1XHUwYTNmXHUwYTcwXHUwYTFmIixtOiJcdTBhMDdcdTBhMTUgXHUwYTJlXHUwYTNmXHUwYTcwXHUwYTFmIixtbToiJWQgXHUwYTJlXHUwYTNmXHUwYTcwXHUwYTFmIixoOiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTE4XHUwYTcwXHUwYTFmXHUwYTNlIixoaDoiJWQg''@;'; put 'put ''XHUwYTE4XHUwYTcwXHUwYTFmXHUwYTQ3IixkOiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTI2XHUwYTNmXHUwYTI4IixkZDoiJWQgXHUwYTI2XHUwYTNmXHUwYTI4IixNOiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTJlXHUwYTM5XHUwYTQwXHUwYTI4XHUwYTNlIixNTToiJWQgXHUwYTJlXHUw''@;'; put 'put ''YTM5XHUwYTQwXHUwYTI4XHUwYTQ3Iix5OiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTM4XHUwYTNlXHUwYTMyIix5eToiJWQgXHUwYTM4XHUwYTNlXHUwYTMyIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MGE2N1x1MGE2OFx1MGE2OVx1MGE2YVx1MGE2Ylx1''@;'; put 'put ''MGE2Y1x1MGE2ZFx1MGE2ZVx1MGE2Zlx1MGE2Nl0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwYTMwXHUwYTNlXHUwYTI0''@;'; put 'put ''fFx1MGEzOFx1MGEzNVx1MGE0N1x1MGEzMHxcdTBhMjZcdTBhNDFcdTBhMmFcdTBhMzlcdTBhM2ZcdTBhMzB8XHUwYTM4XHUwYTNjXHUwYTNlXHUwYTJlLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gMTI9PT1VJiYoVT0wKSwiXHUwYTMwXHUwYTNlXHUwYTI0Ij09PVE/VTw0''@;'; put 'put ''P1U6VSsxMjoiXHUwYTM4XHUwYTM1XHUwYTQ3XHUwYTMwIj09PVE/VToiXHUwYTI2XHUwYTQxXHUwYTJhXHUwYTM5XHUwYTNmXHUwYTMwIj09PVE/VT49MTA/VTpVKzEyOiJcdTBhMzhcdTBhM2NcdTBhM2VcdTBhMmUiPT09UT9VKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLFop''@;'; put 'put ''e3JldHVybiBVPDQ/Ilx1MGEzMFx1MGEzZVx1MGEyNCI6VTwxMD8iXHUwYTM4XHUwYTM1XHUwYTQ3XHUwYTMwIjpVPDE3PyJcdTBhMjZcdTBhNDFcdTBhMmFcdTBhMzlcdTBhM2ZcdTBhMzAiOlU8MjA/Ilx1MGEzOFx1MGEzY1x1MGEzZVx1MGEyZSI6Ilx1MGEzMFx1MGEzZVx1MGEyNCJ9LHdl''@;'; put 'put ''ZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDE2MDU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9InN0eWN6ZVx1MDE0NF9sdXR5X21hcnplY19rd2llY2llXHUwMTQ0X21hal9jemVyd2llY19saXBpZWNfc2llcnBpZVx1MDE0NF93cnpl''@;'; put 'put ''c2llXHUwMTQ0X3BhXHUwMTdhZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZVx1MDE0NCIuc3BsaXQoIl8iKSxFPSJzdHljem5pYV9sdXRlZ29fbWFyY2Ffa3dpZXRuaWFfbWFqYV9jemVyd2NhX2xpcGNhX3NpZXJwbmlhX3dyemVcdTAxNWJuaWFfcGFcdTAxN2Fkemllcm5pa2FfbGlzdG9wYWRh''@;'; put 'put ''X2dydWRuaWEiLnNwbGl0KCJfIiksTWU9Wy9ec3R5L2ksL15sdXQvaSwvXm1hci9pLC9ea3dpL2ksL15tYWovaSwvXmN6ZS9pLC9ebGlwL2ksL15zaWUvaSwvXndyei9pLC9ecGFcdTAxN2EvaSwvXmxpcy9pLC9eZ3J1L2ldO2Z1bmN0aW9uIFUoaWUpe3JldHVybiBpZSUxMDw1JiZpZSUxMD4x''@;'; put 'put ''JiZ+fihpZS8xMCklMTAhPTF9ZnVuY3Rpb24gUShpZSxsZSxZKXt2YXIgVz1pZSsiICI7c3dpdGNoKFkpe2Nhc2Uic3MiOnJldHVybiBXKyhVKGllKT8ic2VrdW5keSI6InNla3VuZCIpO2Nhc2UibSI6cmV0dXJuIGxlPyJtaW51dGEiOiJtaW51dFx1MDExOSI7Y2FzZSJtbSI6cmV0dXJuIFcr''@;'; put 'put ''KFUoaWUpPyJtaW51dHkiOiJtaW51dCIpO2Nhc2UiaCI6cmV0dXJuIGxlPyJnb2R6aW5hIjoiZ29kemluXHUwMTE5IjtjYXNlImhoIjpyZXR1cm4gVysoVShpZSk/ImdvZHppbnkiOiJnb2R6aW4iKTtjYXNlInd3IjpyZXR1cm4gVysoVShpZSk/InR5Z29kbmllIjoidHlnb2RuaSIpO2Nhc2Ui''@;'; put 'put ''TU0iOnJldHVybiBXKyhVKGllKT8ibWllc2lcdTAxMDVjZSI6Im1pZXNpXHUwMTE5Y3kiKTtjYXNlInl5IjpyZXR1cm4gVysoVShpZSk/ImxhdGEiOiJsYXQiKX19Z2UuZGVmaW5lTG9jYWxlKCJwbCIse21vbnRoczpmdW5jdGlvbihpZSxsZSl7cmV0dXJuIGllPy9EIE1NTU0vLnRlc3QobGUp''@;'; put 'put ''P0VbaWUubW9udGgoKV06QltpZS5tb250aCgpXTpCfSxtb250aHNTaG9ydDoic3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGFcdTAxN2FfbGlzX2dydSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZTpNZSxsb25nTW9udGhzUGFyc2U6TWUsc2hvcnRNb250aHNQYXJzZTpNZSx3''@;'; put 'put ''ZWVrZGF5czoibmllZHppZWxhX3BvbmllZHppYVx1MDE0MmVrX3d0b3Jla19cdTAxNWJyb2RhX2N6d2FydGVrX3BpXHUwMTA1dGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZHpfcG9uX3d0X1x1MDE1YnJfY3p3X3B0X3NvYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi''@;'; put 'put ''TmRfUG5fV3RfXHUwMTVhcl9Del9QdF9TbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1t''@;'; put 'put ''In0sY2FsZW5kYXI6e3NhbWVEYXk6IltEemlcdTAxNWIgb10gTFQiLG5leHREYXk6IltKdXRybyBvXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbVyBuaWVkemllbFx1MDExOSBvXSBMVCI7Y2FzZSAyOnJldHVybiJbV2Ugd3RvcmVr''@;'; put 'put ''IG9dIExUIjtjYXNlIDM6cmV0dXJuIltXIFx1MDE1YnJvZFx1MDExOSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyBzb2JvdFx1MDExOSBvXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW1ddIGRkZGQgW29dIExUIn19LGxhc3REYXk6IltXY3pvcmFqIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3''@;'; put 'put ''aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIHplc3pcdTAxNDJcdTAxMDUgbmllZHppZWxcdTAxMTkgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgemVzelx1MDE0Mlx1MDEwNSBcdTAxNWJyb2RcdTAxMTkgb10gTFQiO2Nhc2UgNjpyZXR1cm4iW1cgemVzelx1MDE0Mlx1MDEwNSBz''@;'; put 'put ''b2JvdFx1MDExOSBvXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW1cgemVzelx1MDE0MnldIGRkZGQgW29dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiIlcyB0ZW11IixzOiJraWxrYSBzZWt1bmQiLHNzOlEsbTpRLG1tOlEsaDpRLGhoOlEsZDoi''@;'; put 'put ''MSBkemllXHUwMTQ0IixkZDoiJWQgZG5pIix3OiJ0eWR6aWVcdTAxNDQiLHd3OlEsTToibWllc2lcdTAxMDVjIixNTTpRLHk6InJvayIseXk6UX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9''@;'; put 'put ''LDczODQwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgicHQtYnIiLHttb250aHM6ImphbmVpcm9fZmV2ZXJlaXJvX21hclx4ZTdvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1i''@;'; put 'put ''cm9fZGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyXHhlN2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1m''@;'; put 'put ''ZWlyYV9zZXh0YS1mZWlyYV9zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tX3NlZ190ZXJfcXVhX3F1aV9zZXhfc1x4ZTFiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb18yXHhhYV8zXHhhYV80XHhhYV81XHhhYV82XHhhYV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW1x4ZTBzXSBISDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1N''@;'; put 'put ''TU0gW2RlXSBZWVlZIFtceGUwc10gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgXHhlMHNdIExUIixuZXh0RGF5OiJbQW1hbmhceGUzIFx4ZTBzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBzXSBMVCIsbGFzdERheToiW09udGVtIFx4ZTBzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCl8fDY9PT10aGlzLmRheSgpPyJbXHhkYWx0aW1vXSBkZGRkIFtceGUwc10gTFQiOiJbXHhkYWx0aW1hXSBkZGRkIFtceGUwc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiaFx4ZTEgJXMiLHM6''@;'; put 'put ''InBvdWNvcyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtXHhlYXMiLE1NOiIlZCBtZXNlcyIseToidW0gYW5vIix5eToiJWQgYW5v''@;'; put 'put ''cyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLGludmFsaWREYXRlOiJEYXRhIGludlx4ZTFsaWRhIn0pfShMKDE1NDM5KSl9LDU0MjI1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxv''@;'; put 'put ''Y2FsZSgicHQiLHttb250aHM6ImphbmVpcm9fZmV2ZXJlaXJvX21hclx4ZTdvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9h''@;'; put 'put ''Z29fc2V0X291dF9ub3ZfZGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyXHhlN2EtZmVpcmFfUXVhcnRhLWZlaXJhX1F1aW50YS1mZWlyYV9TZXh0YS1mZWlyYV9TXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiRG9tX1NlZ19UZXJf''@;'; put 'put ''UXVhX1F1aV9TZXhfU1x4ZTFiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEb18yXHhhYV8zXHhhYV80XHhhYV81XHhhYV82XHhhYV9TXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQv''@;'; put 'put ''TU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSBceGUwc10gTFQiLG5leHREYXk6IltBbWFuaFx4''@;'; put 'put ''ZTMgXHhlMHNdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMHNdIExUIixsYXN0RGF5OiJbT250ZW0gXHhlMHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IltceGRhbHRpbW9dIGRkZGQgW1x4ZTBzXSBMVCI6IltceGRhbHRp''@;'; put 'put ''bWFdIGRkZGQgW1x4ZTBzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJoXHhlMSAlcyIsczoic2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3Jh''@;'; put 'put ''cyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsdzoidW1hIHNlbWFuYSIsd3c6IiVkIHNlbWFuYXMiLE06InVtIG1ceGVhcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIs''@;'; put 'put ''d2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNDUxMjg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihNZSxVLFEpe3ZhciBpZT0iICI7cmV0dXJuKE1lJTEwMD49MjB8fE1lPj0xMDAmJk1lJTEwMD09MCkmJihpZT0iIGRlICIp''@;'; put 'put ''LE1lK2llK3tzczoic2VjdW5kZSIsbW06Im1pbnV0ZSIsaGg6Im9yZSIsZGQ6InppbGUiLHd3OiJzXHUwMTAzcHRcdTAxMDNtXHhlMm5pIixNTToibHVuaSIseXk6ImFuaSJ9W1FdfWdlLmRlZmluZUxvY2FsZSgicm8iLHttb250aHM6ImlhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxp''@;'; put 'put ''ZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imlhbi5fZmViLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkdW1pbmljXHUwMTAzX2x1bmlfbWFyXHUwMjFiaV9taWVyY3VyaV9qb2lfdmluZXJpX3NceGUybWJcdTAxMDN0XHUwMTAzIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkR1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1NceGUybSIuc3BsaXQo''@;'; put 'put ''Il8iKSx3ZWVrZGF5c01pbjoiRHVfTHVfTWFfTWlfSm9fVmlfU1x4ZTIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1N''@;'; put 'put ''TU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlthemkgbGFdIExUIixuZXh0RGF5OiJbbVx4ZTJpbmUgbGFdIExUIixuZXh0V2VlazoiZGRkZCBbbGFdIExUIixsYXN0RGF5OiJbaWVyaSBsYV0gTFQiLGxhc3RXZWVrOiJbZm9zdGFdIGRkZGQgW2xhXSBMVCIsc2FtZUVsc2U6Ikwi''@;'; put 'put ''fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicGVzdGUgJXMiLHBhc3Q6IiVzIFx4ZWVuIHVybVx1MDEwMyIsczoiY1x4ZTJ0ZXZhIHNlY3VuZGUiLHNzOkIsbToidW4gbWludXQiLG1tOkIsaDoibyBvclx1MDEwMyIsaGg6QixkOiJvIHppIixkZDpCLHc6Im8gc1x1MDEwM3B0XHUwMTAzbVx4ZTJu''@;'; put 'put ''XHUwMTAzIix3dzpCLE06Im8gbHVuXHUwMTAzIixNTTpCLHk6InVuIGFuIix5eTpCfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSwzNTEyNzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKFEsWixpZSl7cmV0dXJuIm0iPT09''@;'; put 'put ''aWU/Wj8iXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIjoiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDQzIjpRKyIgIitmdW5jdGlvbiBCKFEsWil7dmFyIGllPVEuc3BsaXQoIl8iKTtyZXR1cm4gWiUxMD09MSYmWiUxMDAhPTExP2llWzBdOlolMTA+PTIm''@;'; put 'put ''JlolMTA8PTQmJihaJTEwMDwxMHx8WiUxMDA+PTIwKT9pZVsxXTppZVsyXX0oe3NzOlo/Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUw''@;'; put 'put ''NDNkXHUwNDM0IjoiXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDQzX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Yl9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG1tOlo/Ilx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0''@;'; put 'put ''M1x1MDQ0Mlx1MDQzMF9cdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NGJfXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIjoiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDQzX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQ0Yl9cdTA0M2Nc''@;'; put 'put ''dTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLGhoOiJcdTA0NDdcdTA0MzBcdTA0NDFfXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDMwX1x1MDQ0N1x1MDQzMFx1MDQ0MVx1MDQzZVx1MDQzMiIsZGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzRcdTA0M2RcdTA0NGZfXHUwNDM0XHUwNDNk''@;'; put 'put ''XHUwNDM1XHUwNDM5Iix3dzoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRmX1x1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQzOF9cdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGMiLE1NOiJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZf''@;'; put 'put ''XHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDMwX1x1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQzNVx1MDQzMiIseXk6Ilx1MDQzM1x1MDQzZVx1MDQzNF9cdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzBfXHUwNDNiXHUwNDM1XHUwNDQyIn1baWVdLCtRKX12YXIgTWU9''@;'; put 'put ''Wy9eXHUwNDRmXHUwNDNkXHUwNDMyL2ksL15cdTA0NDRcdTA0MzVcdTA0MzIvaSwvXlx1MDQzY1x1MDQzMFx1MDQ0MC9pLC9eXHUwNDMwXHUwNDNmXHUwNDQwL2ksL15cdTA0M2NcdTA0MzBbXHUwNDM5XHUwNDRmXS9pLC9eXHUwNDM4XHUwNDRlXHUwNDNkL2ksL15cdTA0MzhcdTA0NGVcdTA0''@;'; put 'put ''M2IvaSwvXlx1MDQzMFx1MDQzMlx1MDQzMy9pLC9eXHUwNDQxXHUwNDM1XHUwNDNkL2ksL15cdTA0M2VcdTA0M2FcdTA0NDIvaSwvXlx1MDQzZFx1MDQzZVx1MDQ0Zi9pLC9eXHUwNDM0XHUwNDM1XHUwNDNhL2ldO2dlLmRlZmluZUxvY2FsZSgicnUiLHttb250aHM6e2Zvcm1hdDoiXHUwNDRm''@;'; put 'put ''XHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRmX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Zl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzBfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRmX1x1MDQzY1x1MDQzMFx1MDQ0Zl9cdTA0''@;'; put 'put ''MzhcdTA0NGVcdTA0M2RcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRmX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGZfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUw''@;'; put 'put ''NDMxXHUwNDQwXHUwNDRmX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Zl9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0NGYiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRjX1x1MDQ0NFx1''@;'; put 'put ''MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Y19cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRj''@;'; put 'put ''X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0''@;'; put 'put ''Y19cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0NGMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0Ontmb3JtYXQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMi5fXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NDAuX1x1MDQzMFx1MDQzZlx1MDQ0MC5f''@;'; put 'put ''XHUwNDNjXHUwNDMwXHUwNDRmX1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0Zl9cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGZfXHUwNDMwXHUwNDMyXHUwNDMzLl9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDIuX1x1MDQzZVx1MDQzYVx1MDQ0Mi5fXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxLl9cdTA0''@;'; put 'put ''MzRcdTA0MzVcdTA0M2EuIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6Ilx1MDQ0Zlx1MDQzZFx1MDQzMi5fXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUw''@;'; put 'put ''NDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzMuX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mi5fXHUwNDNlXHUwNDNhXHUwNDQyLl9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzEuX1x1MDQzNFx1MDQzNVx1MDQzYS4iLnNwbGl0KCJfIil9LHdlZWtk''@;'; put 'put ''YXlzOntzdGFuZGFsb25lOiJcdTA0MzJcdTA0M2VcdTA0NDFcdTA0M2FcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNcdTA0MzVfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRjXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1''@;'; put 'put ''MDQzZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQzMF9cdTA0NDFcdTA0NDNcdTA0MzFc''@;'; put 'put ''dTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksZm9ybWF0OiJcdTA0MzJcdTA0M2VcdTA0NDFcdTA0M2FcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNcdTA0MzVfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRjXHUwNDNk''@;'; put 'put ''XHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0NDNfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0''@;'; put 'put ''Nlx1MDQ0M19cdTA0NDFcdTA0NDNcdTA0MzFcdTA0MzFcdTA0M2VcdTA0NDJcdTA0NDMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9bXHUwNDEyXHUwNDMyXSA/KD86XHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDQzXHUwNDRlfFx1MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1''@;'; put 'put ''MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQ0M1x1MDQ0ZXxcdTA0NGRcdTA0NDJcdTA0NDMpPyA/XSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzMlx1MDQ0MV9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQz''@;'; put 'put ''MSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDMyXHUwNDQxX1x1MDQzZlx1MDQzZF9cdTA0MzJcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Ml9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlOk1lLGxvbmdNb250aHNQYXJzZTpNZSxz''@;'; put 'put ''aG9ydE1vbnRoc1BhcnNlOk1lLG1vbnRoc1JlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0Zlx1MDQzZFx1MDQzMlwuP3xcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0NDRcdTA0MzVc''@;'; put 'put ''dTA0MzJcdTA0NDA/XC4/fFx1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1MDQzMD98XHUwNDNjXHUwNDMwXHUwNDQwXC4/fFx1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzMFx1MDQzZlx1MDQ0MFwuP3xcdTA0M2NcdTA0MzBbXHUwNDM5XHUwNDRmXXxc''@;'; put 'put ''dTA0MzhcdTA0NGVcdTA0M2RbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2RcLj98XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNiXC4/fFx1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzMD98XHUwNDMwXHUwNDMy''@;'; put 'put ''XHUwNDMzXC4/fFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mj9cLj98XHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDNlXHUwNDNhXHUwNDQy''@;'; put 'put ''XC4/fFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMT9cLj98XHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM0XHUwNDM1XHUwNDNhXC4/KS9pLG1vbnRoc1Nob3J0''@;'; put 'put ''UmVnZXg6L14oXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDRmXHUwNDNkXHUwNDMyXC4/fFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MD9cLj98XHUwNDNjXHUw''@;'; put 'put ''NDMwXHUwNDQwXHUwNDQyXHUwNDMwP3xcdTA0M2NcdTA0MzBcdTA0NDBcLj98XHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDMwXHUwNDNmXHUwNDQwXC4/fFx1MDQzY1x1MDQzMFtcdTA0MzlcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzZFtcdTA0NGNc''@;'; put 'put ''dTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzZFwuP3xcdTA0MzhcdTA0NGVcdTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2JcLj98XHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyXHUwNDMwP3xcdTA0MzBcdTA0MzJcdTA0MzNcLj98XHUwNDQxXHUwNDM1XHUw''@;'; put 'put ''NDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyP1wuP3xcdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0M2VcdTA0M2FcdTA0NDJcLj98XHUwNDNkXHUwNDNlXHUwNDRmXHUw''@;'; put 'put ''NDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxP1wuP3xcdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0MzRcdTA0MzVcdTA0M2FcLj8pL2ksbW9udGhzU3RyaWN0UmVnZXg6L14oXHUwNDRmXHUwNDNkXHUw''@;'; put 'put ''NDMyXHUwNDMwXHUwNDQwW1x1MDQ0Zlx1MDQ0Y118XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiW1x1MDQ0Zlx1MDQ0Y118XHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyXHUwNDMwP3xcdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JbXHUwNDRmXHUwNDRjXXxcdTA0M2Nc''@;'; put 'put ''dTA0MzBbXHUwNDRmXHUwNDM5XXxcdTA0MzhcdTA0NGVcdTA0M2RbXHUwNDRmXHUwNDRjXXxcdTA0MzhcdTA0NGVcdTA0M2JbXHUwNDRmXHUwNDRjXXxcdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzA/fFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQz''@;'; put 'put ''MVx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0''@;'; put 'put ''NGNdKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oXHUwNDRmXHUwNDNkXHUwNDMyXC58XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwP1wufFx1MDQzY1x1MDQzMFx1MDQ0MFtcdTA0NDIuXXxcdTA0MzBcdTA0M2ZcdTA0NDBcLnxcdTA0M2NcdTA0MzBbXHUwNDRmXHUwNDM5XXxcdTA0Mzhc''@;'; put 'put ''dTA0NGVcdTA0M2RbXHUwNDRjXHUwNDRmLl18XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Y1x1MDQ0Zi5dfFx1MDQzMFx1MDQzMlx1MDQzM1wufFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mj9cLnxcdTA0M2VcdTA0M2FcdTA0NDJcLnxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzE/XC58XHUwNDM0''@;'; put 'put ''XHUwNDM1XHUwNDNhXC4pL2ksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDQzMy4sIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFx1MDQzMy4sIEg6''@;'; put 'put ''bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQyMVx1MDQzNVx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzZFx1MDQ0ZiwgXHUwNDMyXSBMVCIsbmV4dERheToiW1x1MDQxN1x1MDQzMFx1MDQzMlx1MDQ0Mlx1MDQ0MFx1MDQzMCwgXHUwNDMyXSBMVCIsbGFzdERheToiW1x1MDQxMlx1MDQ0N1x1''@;'; put 'put ''MDQzNVx1MDQ0MFx1MDQzMCwgXHUwNDMyXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oUSl7aWYoUS53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IltcdTA0MTJcdTA0M2VdIGRkZGQsIFtcdTA0MzJdIExUIjoiW1x1MDQxMl0gZGRkZCwgW1x1MDQzMl0gTFQiO3N3''@;'; put 'put ''aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltcdTA0MTIgXHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDM1XHUwNDM1XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIltcdTA0MTIgXHUwNDQxXHUwNDNiXHUw''@;'; put 'put ''NDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDM4XHUwNDM5XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIltcdTA0MTIgXHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDQzXHUwNDRlXSBkZGRkLCBbXHUwNDMy''@;'; put 'put ''XSBMVCJ9fSxsYXN0V2VlazpmdW5jdGlvbihRKXtpZihRLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW1x1MDQxMlx1MDQzZV0gZGRkZCwgW1x1MDQzMl0gTFQiOiJbXHUwNDEyXSBkZGRkLCBbXHUwNDMyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4iW1x1MDQxMiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0M2VcdTA0MzVdIGRkZGQsIFtcdTA0MzJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW1x1MDQxMiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0NGJcdTA0MzldIGRkZGQs''@;'; put 'put ''IFtcdTA0MzJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW1x1MDQxMiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0NDNcdTA0NGVdIGRkZGQsIFtcdTA0MzJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQ0N1x1MDQzNVx1''@;'; put 'put ''MDQ0MFx1MDQzNVx1MDQzNyAlcyIscGFzdDoiJXMgXHUwNDNkXHUwNDMwXHUwNDM3XHUwNDMwXHUwNDM0IixzOiJcdTA0M2RcdTA0MzVcdTA0NDFcdTA0M2FcdTA0M2VcdTA0M2JcdTA0NGNcdTA0M2FcdTA0M2UgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixzczpFLG06''@;'; put 'put ''RSxtbTpFLGg6Ilx1MDQ0N1x1MDQzMFx1MDQ0MSIsaGg6RSxkOiJcdTA0MzRcdTA0MzVcdTA0M2RcdTA0NGMiLGRkOkUsdzoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRmIix3dzpFLE06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0NiIsTU06RSx5OiJcdTA0MzNc''@;'; put 'put ''dTA0M2VcdTA0MzQiLHl5OkV9LG1lcmlkaWVtUGFyc2U6L1x1MDQzZFx1MDQzZVx1MDQ0N1x1MDQzOHxcdTA0NDNcdTA0NDJcdTA0NDBcdTA0MzB8XHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMC9pLGlzUE06ZnVuY3Rpb24oUSl7cmV0dXJu''@;'; put 'put ''L14oXHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMCkkLy50ZXN0KFEpfSxtZXJpZGllbTpmdW5jdGlvbihRLFosaWUpe3JldHVybiBRPDQ/Ilx1MDQzZFx1MDQzZVx1MDQ0N1x1MDQzOCI6UTwxMj8iXHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMw''@;'; put 'put ''IjpRPDE3PyJcdTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0Mzl8XHUwNDMzXHUwNDNlfFx1MDQ0ZikvLG9yZGluYWw6ZnVuY3Rpb24oUSxaKXtzd2l0Y2goWil7Y2Fz''@;'; put 'put ''ZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gUSsiLVx1MDQzOSI7Y2FzZSJEIjpyZXR1cm4gUSsiLVx1MDQzM1x1MDQzZSI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBRKyItXHUwNDRmIjtkZWZhdWx0OnJldHVybiBRfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzI1''@;'; put 'put ''MjU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9WyJcdTA2MmNcdTA2NDZcdTA2NDhcdTA2MzFcdTA2NGEiLCJcdTA2NDFcdTA2NGFcdTA2MjhcdTA2MzFcdTA2NDhcdTA2MzFcdTA2NGEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2ODYiLCJcdTA2''@;'; put 'put ''MjdcdTA2N2VcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjZcdTA2NGEiLCJcdTA2MmNcdTA2NDhcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NDRcdTA2MjdcdTA2MjFcdTA2NTAiLCJcdTA2MjJcdTA2YWZcdTA2MzNcdTA2N2QiLCJcdTA2MzNcdTA2NGFcdTA2N2VcdTA2N2RcdTA2''@;'; put 'put ''NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjJcdTA2YWFcdTA2N2RcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2OGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXSxFPVsiXHUwNjIyXHUwNjg2XHUwNjMxIiwiXHUwNjMzXHUwNjQ4XHUwNjQ1''@;'; put 'put ''XHUwNjMxIiwiXHUwNjI3XHUwNmIxXHUwNjI3XHUwNjMxXHUwNjQ4IiwiXHUwNjI3XHUwNjMxXHUwNjI4XHUwNjM5IiwiXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzIiwiXHUwNjJjXHUwNjQ1XHUwNjM5IiwiXHUwNjg3XHUwNjQ2XHUwNjg3XHUwNjMxIl07Z2UuZGVmaW5lTG9jYWxlKCJzZCIs''@;'; put 'put ''e21vbnRoczpCLG1vbnRoc1Nob3J0OkIsd2Vla2RheXM6RSx3ZWVrZGF5c1Nob3J0OkUsd2Vla2RheXNNaW46RSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExM''@;'; put 'put ''TEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKFUpe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2NDUiPT09VX0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLFope3Jl''@;'; put 'put ''dHVybiBVPDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2MjdcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY4NF0gTFQiLG5leHREYXk6IltcdTA2MzNcdTA2ODBcdTA2MjdcdTA2YmJcdTA2NGFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjI3XHUwNmIz''@;'; put 'put ''XHUwNjRhXHUwNjQ2IFx1MDY0N1x1MDY0MVx1MDYyYVx1MDY0YSBcdTA2MmFcdTA2NGFdIExUIixsYXN0RGF5OiJbXHUwNmFhXHUwNjI3XHUwNjQ0XHUwNjQ3XHUwNjQ3XSBMVCIsbGFzdFdlZWs6IltcdTA2YWZcdTA2MzJcdTA2MzFcdTA2NGFcdTA2NDQgXHUwNjQ3XHUwNjQxXHUwNjJhXHUw''@;'; put 'put ''NjRhXSBkZGRkIFtcdTA2MmFcdTA2NGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2N2VcdTA2NDhcdTA2MjEiLHBhc3Q6IiVzIFx1MDYyN1x1MDZiMyIsczoiXHUwNjg2XHUwNjQ2XHUwNjJmIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIs''@;'; put 'put ''c3M6IiVkIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsbToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsbW06IiVkIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsaDoiXHUwNjQ3XHUwNmFhIFx1MDZhYVx1MDY0NFx1MDYyN1x1MDZhYSIsaGg6IiVkIFx1MDZhYVx1MDY0NFx1''@;'; put 'put ''MDYyN1x1MDZhYSIsZDoiXHUwNjQ3XHUwNmFhIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIsZGQ6IiVkIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIsTToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0N1x1MDY0YVx1MDY0Nlx1MDY0OCIsTU06IiVkIFx1MDY0NVx1MDY0''@;'; put 'put ''N1x1MDY0YVx1MDY0Nlx1MDYyNyIseToiXHUwNjQ3XHUwNmFhIFx1MDYzM1x1MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBhcnNlOmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0''@;'; put 'put ''dXJuIFUucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNTk4OTM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJzZSIse21vbnRoczoib1x1MDExMVx1MDExMWFqYWdlbVx4''@;'; put 'put ''ZTFubnVfZ3VvdnZhbVx4ZTFubnVfbmp1a1x1MDEwZGFtXHhlMW5udV9jdW9cdTAxNGJvbVx4ZTFubnVfbWllc3NlbVx4ZTFubnVfZ2Vhc3NlbVx4ZTFubnVfc3VvaWRuZW1ceGUxbm51X2JvcmdlbVx4ZTFubnVfXHUwMTBkYWtcdTAxMGRhbVx4ZTFubnVfZ29sZ2dvdG1ceGUxbm51X3NrXHhl''@;'; put 'put ''MWJtYW1ceGUxbm51X2p1b3ZsYW1ceGUxbm51Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJvXHUwMTExXHUwMTExal9ndW92X25qdWtfY3VvX21pZXNfZ2Vhc19zdW9pX2JvcmdfXHUwMTBkYWtcdTAxMGRfZ29sZ19za1x4ZTFiX2p1b3YiLnNwbGl0KCJfIiksd2Vla2RheXM6InNvdG5hYmVh''@;'; put 'put ''aXZpX3Z1b3NzXHhlMXJnYV9tYVx1MDE0Ylx1MDE0YmViXHhlMXJnYV9nYXNrYXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2xceGUxdnZhcmRhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzb3RuX3Z1b3NfbWFcdTAxNGJfZ2Fza19kdW9yX2JlYXJfbFx4ZTF2Ii5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzTWluOiJzX3ZfbV9nX2RfYl9MIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJNTU1NIEQuIFtiLl0gWVlZWSIsTExMOiJNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbSIsTExMTDoiZGRk''@;'; put 'put ''ZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW290bmUgdGldIExUIixuZXh0RGF5OiJbaWh0dGluIHRpXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3RpXSBMVCIsbGFzdERheToiW2lrdGUgdGldIExUIixsYXN0V2VlazoiW292ZGRpdF0gZGRkZCBb''@;'; put 'put ''dGldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBnZWFcdTAxN2VlcyIscGFzdDoibWFcdTAxNGJpdCAlcyIsczoibW9hZGRlIHNla3VuZGRhdCIsc3M6IiVkIHNla3VuZGRhdCIsbToib2t0YSBtaW51aHRhIixtbToiJWQgbWludWh0YXQiLGg6Im9rdGEgZGlp''@;'; put 'put ''bW11IixoaDoiJWQgZGlpbW11dCIsZDoib2t0YSBiZWFpdmkiLGRkOiIlZCBiZWFpdnZpdCIsTToib2t0YSBtXHhlMW5udSIsTU06IiVkIG1ceGUxbnV0Iix5OiJva3RhIGphaGtpIix5eToiJWQgamFnaXQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVk''@;'; put 'put ''LiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzMxMjM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJzaSIse21vbnRoczoiXHUwZGEyXHUwZGIxXHUwZGMwXHUwZGNmXHUwZGJiXHUwZGQyX1x1MGRiNFx1MGRk''@;'; put 'put ''OVx1MGRiNlx1MGRiYlx1MGRjMFx1MGRjZlx1MGRiYlx1MGRkMl9cdTBkYjhcdTBkY2ZcdTBkYmJcdTBkY2FcdTBkYWRcdTBkZDRfXHUwZDg1XHUwZGI0XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGRhXHUwZGJkXHUwZGNhX1x1MGRiOFx1MGRkMFx1MGRiYVx1MGRkMl9cdTBkYTJcdTBkZDZcdTBk''@;'; put 'put ''YjFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGJkXHUwZGQyX1x1MGQ4NVx1MGQ5Y1x1MGRkZFx1MGRjM1x1MGRjYVx1MGRhZFx1MGRkNF9cdTBkYzNcdTBkZDBcdTBkYjRcdTBkY2FcdTBkYWRcdTBkZDBcdTBkYjhcdTBkY2FcdTBkYjZcdTBkYmJcdTBkY2FfXHUwZDk0XHUwZDlhXHUwZGNhXHUw''@;'; put 'put ''ZGFkXHUwZGRkXHUwZGI2XHUwZGJiXHUwZGNhX1x1MGRiMVx1MGRkY1x1MGRjMFx1MGRkMFx1MGRiOFx1MGRjYVx1MGRiNlx1MGRiYlx1MGRjYV9cdTBkYWZcdTBkZDlcdTBkYzNcdTBkZDBcdTBkYjhcdTBkY2FcdTBkYjZcdTBkYmJcdTBkY2EiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1''@;'; put 'put ''MGRhMlx1MGRiMV9cdTBkYjRcdTBkZDlcdTBkYjZfXHUwZGI4XHUwZGNmXHUwZGJiXHUwZGNhX1x1MGQ4NVx1MGRiNFx1MGRjYV9cdTBkYjhcdTBkZDBcdTBkYmFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGIxXHUwZGQyX1x1MGRhMlx1MGRkNlx1MGRiZFx1MGRkMl9cdTBkODVcdTBkOWNcdTBk''@;'; put 'put ''ZGRfXHUwZGMzXHUwZGQwXHUwZGI0XHUwZGNhX1x1MGQ5NFx1MGQ5YVx1MGRjYV9cdTBkYjFcdTBkZGNcdTBkYzBcdTBkZDBfXHUwZGFmXHUwZGQ5XHUwZGMzXHUwZGQwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBkODlcdTBkYmJcdTBkZDJcdTBkYWZcdTBkY2ZfXHUwZGMzXHUwZGIzXHUw''@;'; put 'put ''ZGQ0XHUwZGFmXHUwZGNmX1x1MGQ4NVx1MGQ5Zlx1MGRjNFx1MGRiYlx1MGRkNFx1MGRjMFx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYjZcdTBkYWZcdTBkY2ZcdTBkYWZcdTBkY2ZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGM0XHUwZGMzXHUwZGNhXHUwZGI0XHUwZGFkXHUwZGQyXHUw''@;'; put 'put ''ZGIxXHUwZGNhXHUwZGFmXHUwZGNmX1x1MGRjM1x1MGRkMlx1MGQ5YVx1MGRkNFx1MGRiYlx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYzNcdTBkZDlcdTBkYjFcdTBkYzNcdTBkZDRcdTBkYmJcdTBkY2ZcdTBkYWZcdTBkY2YiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZDg5XHUwZGJi''@;'; put 'put ''XHUwZGQyX1x1MGRjM1x1MGRiM1x1MGRkNF9cdTBkODVcdTBkOWZfXHUwZGI2XHUwZGFmXHUwZGNmX1x1MGRiNlx1MGRjYVx1MjAwZFx1MGRiYlx1MGRjNF9cdTBkYzNcdTBkZDJcdTBkOWFcdTBkZDRfXHUwZGMzXHUwZGQ5XHUwZGIxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBkODlf''@;'; put 'put ''XHUwZGMzX1x1MGQ4NV9cdTBkYjZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiX1x1MGRjM1x1MGRkMl9cdTBkYzNcdTBkZDkiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiYSBoOm1tIixMVFM6ImEgaDptbTpzcyIsTDoiWVlZWS9NTS9ERCIs''@;'; put 'put ''TEw6IllZWVkgTU1NTSBEIixMTEw6IllZWVkgTU1NTSBELCBhIGg6bW0iLExMTEw6IllZWVkgTU1NTSBEIFtcdTBkYzBcdTBkZDBcdTBkYjFcdTBkZDJdIGRkZGQsIGEgaDptbTpzcyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZDg1XHUwZGFmXSBMVFtcdTBkYTddIixuZXh0RGF5OiJbXHUw''@;'; put 'put ''ZGM0XHUwZGQ5XHUwZGE3XSBMVFtcdTBkYTddIixuZXh0V2VlazoiZGRkZCBMVFtcdTBkYTddIixsYXN0RGF5OiJbXHUwZDhhXHUwZGJhXHUwZGRhXSBMVFtcdTBkYTddIixsYXN0V2VlazoiW1x1MGRiNFx1MGRjM1x1MGRkNFx1MGQ5Y1x1MGRkMlx1MGRiYV0gZGRkZCBMVFtcdTBkYTddIixz''@;'; put 'put ''YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MGQ5YVx1MGRkMlx1MGRiMVx1MGRjYSIscGFzdDoiJXNcdTBkOWFcdTBkYTcgXHUwZGI0XHUwZGQ5XHUwZGJiIixzOiJcdTBkYWRcdTBkYWRcdTBkY2FcdTBkYjRcdTBkYmIgXHUwZDlhXHUwZGQyXHUwZGM0XHUwZGQyXHUw''@;'; put 'put ''ZGI0XHUwZGJhIixzczoiXHUwZGFkXHUwZGFkXHUwZGNhXHUwZGI0XHUwZGJiICVkIixtOiJcdTBkYjhcdTBkZDJcdTBkYjFcdTBkZDJcdTBkYWRcdTBkY2FcdTBkYWRcdTBkZDRcdTBkYzAiLG1tOiJcdTBkYjhcdTBkZDJcdTBkYjFcdTBkZDJcdTBkYWRcdTBkY2FcdTBkYWRcdTBkZDQgJWQi''@;'; put 'put ''LGg6Ilx1MGRiNFx1MGRkMFx1MGRiYSIsaGg6Ilx1MGRiNFx1MGRkMFx1MGRiYSAlZCIsZDoiXHUwZGFmXHUwZGQyXHUwZGIxXHUwZGJhIixkZDoiXHUwZGFmXHUwZGQyXHUwZGIxICVkIixNOiJcdTBkYjhcdTBkY2ZcdTBkYzNcdTBkYmEiLE1NOiJcdTBkYjhcdTBkY2ZcdTBkYzMgJWQiLHk6''@;'; put 'put ''Ilx1MGRjMFx1MGRjM1x1MGRiYiIseXk6Ilx1MGRjMFx1MGRjM1x1MGRiYiAlZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0gXHUwZGMwXHUwZGQwXHUwZGIxXHUwZGQyLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3JldHVybiBFKyIgXHUwZGMwXHUwZGQwXHUwZGIxXHUwZGQyIn0s''@;'; put 'put ''bWVyaWRpZW1QYXJzZTovXHUwZGI0XHUwZGQ5XHUwZGJiIFx1MGRjMFx1MGRiYlx1MGRkNHxcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0fFx1MGRiNFx1MGRkOS5cdTBkYzB8XHUwZGI0Llx1MGRjMC4vLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuIlx1MGRiNC5cdTBkYzAu''@;'; put 'put ''Ij09PUV8fCJcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0Ij09PUV9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsTWUsVSl7cmV0dXJuIEU+MTE/VT8iXHUwZGI0Llx1MGRjMC4iOiJcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0IjpVPyJcdTBkYjRcdTBkZDku''@;'; put 'put ''XHUwZGMwLiI6Ilx1MGRiNFx1MGRkOVx1MGRiYiBcdTBkYzBcdTBkYmJcdTBkZDQifX0pfShMKDE1NDM5KSl9LDU5NjM1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJqYW51XHhlMXJfZmVicnVceGUxcl9tYXJlY19hcHJceGVkbF9tXHhlMWpf''@;'; put 'put ''alx4ZmFuX2pceGZhbF9hdWd1c3Rfc2VwdGVtYmVyX29rdFx4ZjNiZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksRT0iamFuX2ZlYl9tYXJfYXByX21ceGUxal9qXHhmYW5falx4ZmFsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIik7ZnVuY3Rpb24gTWUoWil7cmV0dXJu''@;'; put 'put ''IFo+MSYmWjw1fWZ1bmN0aW9uIFUoWixpZSxsZSxZKXt2YXIgVz1aKyIgIjtzd2l0Y2gobGUpe2Nhc2UicyI6cmV0dXJuIGllfHxZPyJwXHhlMXIgc2VrXHhmYW5kIjoicFx4ZTFyIHNla3VuZGFtaSI7Y2FzZSJzcyI6cmV0dXJuIGllfHxZP1crKE1lKFopPyJzZWt1bmR5Ijoic2VrXHhmYW5k''@;'; put 'put ''Iik6Vysic2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBpZT8ibWluXHhmYXRhIjpZPyJtaW5ceGZhdHUiOiJtaW5ceGZhdG91IjtjYXNlIm1tIjpyZXR1cm4gaWV8fFk/VysoTWUoWik/Im1pblx4ZmF0eSI6Im1pblx4ZmF0Iik6VysibWluXHhmYXRhbWkiO2Nhc2UiaCI6cmV0dXJuIGllPyJo''@;'; put 'put ''b2RpbmEiOlk/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBpZXx8WT9XKyhNZShaKT8iaG9kaW55IjoiaG9kXHhlZG4iKTpXKyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4gaWV8fFk/ImRlXHUwMTQ4IjoiZFx1MDE0OG9tIjtjYXNlImRkIjpyZXR1cm4gaWV8fFk/VysoTWUo''@;'; put 'put ''Wik/ImRuaSI6ImRuXHhlZCIpOlcrImRcdTAxNDhhbWkiO2Nhc2UiTSI6cmV0dXJuIGllfHxZPyJtZXNpYWMiOiJtZXNpYWNvbSI7Y2FzZSJNTSI6cmV0dXJuIGllfHxZP1crKE1lKFopPyJtZXNpYWNlIjoibWVzaWFjb3YiKTpXKyJtZXNpYWNtaSI7Y2FzZSJ5IjpyZXR1cm4gaWV8fFk/InJv''@;'; put 'put ''ayI6InJva29tIjtjYXNlInl5IjpyZXR1cm4gaWV8fFk/VysoTWUoWik/InJva3kiOiJyb2tvdiIpOlcrInJva21pIn19Z2UuZGVmaW5lTG9jYWxlKCJzayIse21vbnRoczpCLG1vbnRoc1Nob3J0OkUsd2Vla2RheXM6Im5lZGVcdTAxM2VhX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFfXHUwMTYx''@;'; put 'put ''dHZydG9rX3BpYXRva19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVfcG9fdXRfc3RfXHUwMTYxdF9waV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3RfXHUwMTYxdF9waV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExU''@;'; put 'put ''UzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyBvXSBMVCIsbmV4dERheToiW3phanRyYSBvXSBMVCIsbmV4dFdlZWs6''@;'; put 'put ''ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWRlXHUwMTNldSBvXSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlt2IHN0cmVkdSBvXSBMVCI7Y2FzZSA0OnJldHVybiJbdm8gXHUwMTYxdHZydG9r''@;'; put 'put ''IG9dIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBpYXRvayBvXSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgb10gTFQifX0sbGFzdERheToiW3ZcdTAxMGRlcmEgb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsXHhmYSBu''@;'; put 'put ''ZWRlXHUwMTNldSBvXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWxceGZkXSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbbWludWxceGZhIHN0cmVkdSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWxceGZhIHNvYm90dSBvXSBMVCJ9fSxzYW1lRWxz''@;'; put 'put ''ZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJlZCAlcyIsczpVLHNzOlUsbTpVLG1tOlUsaDpVLGhoOlUsZDpVLGRkOlUsTTpVLE1NOlUseTpVLHl5OlV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6''@;'; put 'put ''MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw3ODEwNjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKE1lLFUsUSxaKXt2YXIgaWU9TWUrIiAiO3N3aXRjaChRKXtjYXNlInMiOnJldHVybiBVfHxaPyJuZWthaiBzZWt1bmQiOiJuZWthaiBzZWt1''@;'; put 'put ''bmRhbWkiO2Nhc2Uic3MiOnJldHVybiBpZSsoMT09PU1lP1U/InNla3VuZG8iOiJzZWt1bmRpIjoyPT09TWU/VXx8Wj8ic2VrdW5kaSI6InNla3VuZGFoIjpNZTw1P1V8fFo/InNla3VuZGUiOiJzZWt1bmRhaCI6InNla3VuZCIpO2Nhc2UibSI6cmV0dXJuIFU/ImVuYSBtaW51dGEiOiJlbm8g''@;'; put 'put ''bWludXRvIjtjYXNlIm1tIjpyZXR1cm4gaWUrKDE9PT1NZT9VPyJtaW51dGEiOiJtaW51dG8iOjI9PT1NZT9VfHxaPyJtaW51dGkiOiJtaW51dGFtYSI6TWU8NT9VfHxaPyJtaW51dGUiOiJtaW51dGFtaSI6VXx8Wj8ibWludXQiOiJtaW51dGFtaSIpO2Nhc2UiaCI6cmV0dXJuIFU/ImVuYSB1''@;'; put 'put ''cmEiOiJlbm8gdXJvIjtjYXNlImhoIjpyZXR1cm4gaWUrKDE9PT1NZT9VPyJ1cmEiOiJ1cm8iOjI9PT1NZT9VfHxaPyJ1cmkiOiJ1cmFtYSI6TWU8NT9VfHxaPyJ1cmUiOiJ1cmFtaSI6VXx8Wj8idXIiOiJ1cmFtaSIpO2Nhc2UiZCI6cmV0dXJuIFV8fFo/ImVuIGRhbiI6ImVuaW0gZG5lbSI7''@;'; put 'put ''Y2FzZSJkZCI6cmV0dXJuIGllKygxPT09TWU/VXx8Wj8iZGFuIjoiZG5lbSI6Mj09PU1lP1V8fFo/ImRuaSI6ImRuZXZvbWEiOlV8fFo/ImRuaSI6ImRuZXZpIik7Y2FzZSJNIjpyZXR1cm4gVXx8Wj8iZW4gbWVzZWMiOiJlbmltIG1lc2VjZW0iO2Nhc2UiTU0iOnJldHVybiBpZSsoMT09PU1l''@;'; put 'put ''P1V8fFo/Im1lc2VjIjoibWVzZWNlbSI6Mj09PU1lP1V8fFo/Im1lc2VjYSI6Im1lc2VjZW1hIjpNZTw1P1V8fFo/Im1lc2VjZSI6Im1lc2VjaSI6VXx8Wj8ibWVzZWNldiI6Im1lc2VjaSIpO2Nhc2UieSI6cmV0dXJuIFV8fFo/ImVubyBsZXRvIjoiZW5pbSBsZXRvbSI7Y2FzZSJ5eSI6cmV0''@;'; put 'put ''dXJuIGllKygxPT09TWU/VXx8Wj8ibGV0byI6ImxldG9tIjoyPT09TWU/VXx8Wj8ibGV0aSI6ImxldG9tYSI6TWU8NT9VfHxaPyJsZXRhIjoibGV0aSI6VXx8Wj8ibGV0IjoibGV0aSIpfX1nZS5kZWZpbmVMb2NhbGUoInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9t''@;'; put 'put ''YWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJz''@;'; put 'put ''ZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfXHUwMTBkZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUuX1x1MDEwZGV0Ll9wZXQuX3NvYi4iLnNwbGl0KCJfIiksd2Vla2RheXNN''@;'; put 'put ''aW46Im5lX3BvX3RvX3NyX1x1MDEwZGVfcGVfc28iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExM''@;'; put 'put ''TEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5lcyBvYl0gTFQiLG5leHREYXk6IltqdXRyaSBvYl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ZdIFtuZWRlbGpvXSBbb2JdIExUIjtj''@;'; put 'put ''YXNlIDM6cmV0dXJuIlt2XSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ZdIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ZdIGRkZGQgW29iXSBMVCJ9fSxsYXN0RGF5OiJbdlx1MDEwZGVyYWogb2JdIExUIixsYXN0V2Vlazpm''@;'; put 'put ''dW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltwcmVqXHUwMTYxbmpvXSBbbmVkZWxqb10gW29iXSBMVCI7Y2FzZSAzOnJldHVybiJbcHJlalx1MDE2MW5qb10gW3NyZWRvXSBbb2JdIExUIjtjYXNlIDY6cmV0dXJuIltwcmVqXHUwMTYxbmpvXSBbc29ib3RvXSBb''@;'; put 'put ''b2JdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcmVqXHUwMTYxbmppXSBkZGRkIFtvYl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwMTBkZXogJXMiLHBhc3Q6InByZWQgJXMiLHM6QixzczpCLG06QixtbTpCLGg6QixoaDpC''@;'; put 'put ''LGQ6QixkZDpCLE06QixNTTpCLHk6Qix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sODg3OTk6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2Uu''@;'; put 'put ''ZGVmaW5lTG9jYWxlKCJzcSIse21vbnRoczoiSmFuYXJfU2hrdXJ0X01hcnNfUHJpbGxfTWFqX1FlcnNob3JfS29ycmlrX0d1c2h0X1NodGF0b3JfVGV0b3JfTlx4ZWJudG9yX0RoamV0b3IiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9TaGtfTWFyX1ByaV9NYWpfUWVyX0tvcl9HdXNf''@;'; put 'put ''U2h0X1RldF9OXHhlYm5fRGhqIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJFIERpZWxfRSBIXHhlYm5ceGViX0UgTWFydFx4ZWJfRSBNXHhlYnJrdXJceGViX0UgRW5qdGVfRSBQcmVtdGVfRSBTaHR1blx4ZWIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiRGllX0hceGVibl9NYXJfTVx4ZWJy''@;'; put 'put ''X0Vual9QcmVfU2h0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEX0hfTWFfTVx4ZWJfRV9QX1NoIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxtZXJpZGllbVBhcnNlOi9QRHxNRC8saXNQTTpmdW5jdGlvbihFKXtyZXR1cm4iTSI9PT1FLmNoYXJBdCgwKX0sbWVyaWRpZW06''@;'; put 'put ''ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTwxMj8iUEQiOiJNRCJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6''@;'; put 'put ''bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1NvdCBuXHhlYl0gTFQiLG5leHREYXk6IltOZXNceGViciBuXHhlYl0gTFQiLG5leHRXZWVrOiJkZGRkIFtuXHhlYl0gTFQiLGxhc3REYXk6IltEamUgblx4ZWJdIExUIixsYXN0V2VlazoiZGRkZCBbZSBrYWx1YXIgblx4ZWJdIExUIixzYW1lRWxz''@;'; put 'put ''ZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuXHhlYiAlcyIscGFzdDoiJXMgbVx4ZWIgcGFyXHhlYiIsczoiZGlzYSBzZWtvbmRhIixzczoiJWQgc2Vrb25kYSIsbToibmpceGViIG1pbnV0XHhlYiIsbW06IiVkIG1pbnV0YSIsaDoibmpceGViIG9yXHhlYiIsaGg6IiVkIG9yXHhlYiIs''@;'; put 'put ''ZDoibmpceGViIGRpdFx4ZWIiLGRkOiIlZCBkaXRceGViIixNOiJualx4ZWIgbXVhaiIsTU06IiVkIG11YWoiLHk6Im5qXHhlYiB2aXQiLHl5OiIlZCB2aXRlIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShM''@;'; put 'put ''KDE1NDM5KSl9LDUyODcyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXt3b3Jkczp7c3M6WyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzAiLCJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0''@;'; put 'put ''MzUiLCJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiXSxtOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0M2NcdTA0''@;'; put 'put ''MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzAiXSxtbTpbIlx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsIlx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCIsIlx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCJdLGg6WyJcdTA0NThcdTA0MzVcdTA0''@;'; put 'put ''MzRcdTA0MzBcdTA0M2QgXHUwNDQxXHUwNDMwXHUwNDQyIiwiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQ0MVx1MDQzMFx1MDQ0Mlx1MDQzMCJdLGhoOlsiXHUwNDQxXHUwNDMwXHUwNDQyIiwiXHUwNDQxXHUwNDMwXHUwNDQyXHUwNDMwIiwiXHUwNDQxXHUwNDMw''@;'; put 'put ''XHUwNDQyXHUwNDM4Il0sZDpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzMFx1MDQzZCBcdTA0MzRcdTA0MzBcdTA0M2QiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0M2VcdTA0MzMgXHUwNDM0XHUwNDMwXHUwNDNkXHUwNDMwIl0sZGQ6WyJcdTA0MzRcdTA0MzBcdTA0M2QiLCJcdTA0''@;'; put 'put ''MzRcdTA0MzBcdTA0M2RcdTA0MzAiLCJcdTA0MzRcdTA0MzBcdTA0M2RcdTA0MzAiXSxNOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0NiIsIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0M2NcdTA0''@;'; put 'put ''MzVcdTA0NDFcdTA0MzVcdTA0NDZcdTA0MzAiXSxNTTpbIlx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0NiIsIlx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0Nlx1MDQzMCIsIlx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0Nlx1MDQzOCJdLHk6WyJcdTA0NThcdTA0MzVcdTA0''@;'; put 'put ''MzRcdTA0M2RcdTA0NDMgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIiwiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDM1IFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzNSJdLHl5OlsiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQz''@;'; put 'put ''IiwiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM1IiwiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oTWUsVSl7cmV0dXJuIE1lJTEwPj0xJiZNZSUxMDw9NCYmKE1lJTEwMDwxMHx8TWUlMTAw''@;'; put 'put ''Pj0yMCk/TWUlMTA9PTE/VVswXTpVWzFdOlVbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihNZSxVLFEsWil7dmFyIGxlLGllPUIud29yZHNbUV07cmV0dXJuIDE9PT1RLmxlbmd0aD8ieSI9PT1RJiZVPyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzAgXHUwNDMzXHUwNDNlXHUwNDM0XHUw''@;'; put 'put ''NDM4XHUwNDNkXHUwNDMwIjpafHxVP2llWzBdOmllWzFdOihsZT1CLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoTWUsaWUpLCJ5eSI9PT1RJiZVJiYiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIj09PWxlP01lKyIgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUw''@;'; put 'put ''NDMwIjpNZSsiICIrbGUpfX07Z2UuZGVmaW5lTG9jYWxlKCJzci1jeXJsIix7bW9udGhzOiJcdTA0NThcdTA0MzBcdTA0M2RcdTA0NDNcdTA0MzBcdTA0NDBfXHUwNDQ0XHUwNDM1XHUwNDMxXHUwNDQwXHUwNDQzXHUwNDMwXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBc''@;'; put 'put ''dTA0M2ZcdTA0NDBcdTA0MzhcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZF9cdTA0NThcdTA0NDNcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZlx1MDQ0Mlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQz''@;'; put 'put ''MFx1MDQ0MF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0M2VcdTA0MzFcdTA0MzBcdTA0NDBfXHUwNDNkXHUwNDNlXHUwNDMyXHUwNDM1XHUwNDNjXHUwNDMxXHUwNDMwXHUwNDQwX1x1MDQzNFx1MDQzNVx1MDQ0Nlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxtb250''@;'; put 'put ''aHNTaG9ydDoiXHUwNDU4XHUwNDMwXHUwNDNkLl9cdTA0NDRcdTA0MzVcdTA0MzEuX1x1MDQzY1x1MDQzMFx1MDQ0MC5fXHUwNDMwXHUwNDNmXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUwNDNkX1x1MDQ1OFx1MDQ0M1x1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzMu''@;'; put 'put ''X1x1MDQ0MVx1MDQzNVx1MDQzZi5fXHUwNDNlXHUwNDNhXHUwNDQyLl9cdTA0M2RcdTA0M2VcdTA0MzIuX1x1MDQzNFx1MDQzNVx1MDQ0Ni4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDMwX1x1MDQz''@;'; put 'put ''Zlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzMFx1MDQzYV9cdTA0NDNcdTA0NDJcdTA0M2VcdTA0NDBcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzMFx1MDQz''@;'; put 'put ''YV9cdTA0M2ZcdTA0MzVcdTA0NDJcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNVx1MDQzNC5fXHUwNDNmXHUwNDNlXHUwNDNkLl9cdTA0NDNcdTA0NDJcdTA0M2UuX1x1MDQ0MVx1''@;'; put 'put ''MDQ0MFx1MDQzNS5fXHUwNDQ3XHUwNDM1XHUwNDQyLl9cdTA0M2ZcdTA0MzVcdTA0NDIuX1x1MDQ0MVx1MDQ0M1x1MDQzMS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZFx1MDQzNV9cdTA0M2ZcdTA0M2VfXHUwNDQzXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0MzVfXHUw''@;'; put 'put ''NDNmXHUwNDM1X1x1MDQ0MVx1MDQ0MyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuIE0uIFlZWVkuIixMTDoiRC4gTU1NTSBZWVlZLiIsTExMOiJELiBNTU1NIFlZWVkuIEg6bW0iLExMTEw6ImRk''@;'; put 'put ''ZGQsIEQuIE1NTU0gWVlZWS4gSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDM0XHUwNDMwXHUwNDNkXHUwNDMwXHUwNDQxIFx1MDQ0M10gTFQiLG5leHREYXk6IltcdTA0NDFcdTA0NDNcdTA0NDJcdTA0NDBcdTA0MzAgXHUwNDQzXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0''@;'; put 'put ''Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbXHUwNDQzXSBbXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSAzOnJldHVybiJbXHUwNDQzXSBbXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSA2''@;'; put 'put ''OnJldHVybiJbXHUwNDQzXSBbXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbXHUwNDQzXSBkZGRkIFtcdTA0NDNdIExUIn19LGxhc3REYXk6IltcdTA0NThcdTA0NDNcdTA0NDdcdTA0''@;'; put 'put ''MzUgXHUwNDQzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm5bIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0NTlcdTA0MzVdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQz''@;'; put 'put ''Ylx1MDQzZVx1MDQzM10gW1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzYVx1MDQzMF0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDQzXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNhXHUw''@;'; put 'put ''NDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzVdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10gW1x1MDQ0N1x1MDQzNVx1''@;'; put 'put ''MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzYVx1MDQzMF0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDNmXHUwNDM1XHUwNDQyXHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0''@;'; put 'put ''NDhcdTA0M2JcdTA0MzVdIFtcdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzVdIFtcdTA0NDNdIExUIl1bdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzN1x1MDQzMCAlcyIscGFzdDoiXHUwNDNmXHUwNDQwXHUwNDM1ICVzIixz''@;'; put 'put ''OiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0M2VcdTA0M2JcdTA0MzhcdTA0M2FcdTA0M2UgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixzczpCLnRyYW5zbGF0ZSxtOkIudHJhbnNsYXRlLG1tOkIudHJhbnNsYXRlLGg6Qi50cmFuc2xhdGUsaGg6Qi50cmFuc2xh''@;'; put 'put ''dGUsZDpCLnRyYW5zbGF0ZSxkZDpCLnRyYW5zbGF0ZSxNOkIudHJhbnNsYXRlLE1NOkIudHJhbnNsYXRlLHk6Qi50cmFuc2xhdGUseXk6Qi50cmFuc2xhdGV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgx''@;'; put 'put ''NTQzOSkpfSw5Nzk0OTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17d29yZHM6e3NzOlsic2VrdW5kYSIsInNla3VuZGUiLCJzZWt1bmRpIl0sbTpbImplZGFuIG1pbnV0IiwiamVkbm9nIG1pbnV0YSJdLG1tOlsibWludXQiLCJtaW51dGEiLCJt''@;'; put 'put ''aW51dGEiXSxoOlsiamVkYW4gc2F0IiwiamVkbm9nIHNhdGEiXSxoaDpbInNhdCIsInNhdGEiLCJzYXRpIl0sZDpbImplZGFuIGRhbiIsImplZG5vZyBkYW5hIl0sZGQ6WyJkYW4iLCJkYW5hIiwiZGFuYSJdLE06WyJqZWRhbiBtZXNlYyIsImplZG5vZyBtZXNlY2EiXSxNTTpbIm1lc2VjIiwi''@;'; put 'put ''bWVzZWNhIiwibWVzZWNpIl0seTpbImplZG51IGdvZGludSIsImplZG5lIGdvZGluZSJdLHl5OlsiZ29kaW51IiwiZ29kaW5lIiwiZ29kaW5hIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oTWUsVSl7cmV0dXJuIE1lJTEwPj0xJiZNZSUxMDw9NCYmKE1lJTEwMDwxMHx8TWUl''@;'; put 'put ''MTAwPj0yMCk/TWUlMTA9PTE/VVswXTpVWzFdOlVbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihNZSxVLFEsWil7dmFyIGxlLGllPUIud29yZHNbUV07cmV0dXJuIDE9PT1RLmxlbmd0aD8ieSI9PT1RJiZVPyJqZWRuYSBnb2RpbmEiOlp8fFU/aWVbMF06aWVbMV06KGxlPUIuY29ycmVjdEdyYW1t''@;'; put 'put ''YXRpY2FsQ2FzZShNZSxpZSksInl5Ij09PVEmJlUmJiJnb2RpbnUiPT09bGU/TWUrIiBnb2RpbmEiOk1lKyIgIitsZSl9fTtnZS5kZWZpbmVMb2NhbGUoInNyIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9u''@;'; put 'put ''b3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamFrX3V0b3Jh''@;'; put 'put ''a19zcmVkYV9cdTAxMGRldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmUuX1x1MDEwZGV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3NyX1x1MDEwZGVfcGVfc3UiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELiBNLiBZWVlZLiIsTEw6IkQuIE1NTU0gWVlZWS4iLExMTDoiRC4gTU1NTSBZWVlZLiBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkuIEg6bW0ifSxjYWxlbmRhcjp7''@;'; put 'put ''c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRlbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmVkdV0gW3VdIExUIjtjYXNlIDY6cmV0''@;'; put 'put ''dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdVx1MDEwZGUgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuWyJbcHJvXHUwMTYxbGVdIFtuZWRlbGplXSBbdV0gTFQi''@;'; put 'put ''LCJbcHJvXHUwMTYxbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3V0b3JrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3JlZGVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtcdTAxMGRldHZydGthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbcGV0a2Fd''@;'; put 'put ''IFt1XSBMVCIsIltwcm9cdTAxNjFsZV0gW3N1Ym90ZV0gW3VdIExUIl1bdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmUgJXMiLHM6Im5la29saWtvIHNla3VuZGkiLHNzOkIudHJhbnNsYXRlLG06Qi50cmFuc2xhdGUsbW06''@;'; put 'put ''Qi50cmFuc2xhdGUsaDpCLnRyYW5zbGF0ZSxoaDpCLnRyYW5zbGF0ZSxkOkIudHJhbnNsYXRlLGRkOkIudHJhbnNsYXRlLE06Qi50cmFuc2xhdGUsTU06Qi50cmFuc2xhdGUseTpCLnRyYW5zbGF0ZSx5eTpCLnRyYW5zbGF0ZX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxv''@;'; put 'put ''cmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDg2MTY3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgic3MiLHttb250aHM6IkJoaW1iaWR2d2FuZV9JbmRsb3ZhbmFfSW5kbG92J2xlbmtodWx1''@;'; put 'put ''X01hYmFzYV9Jbmtod2VraHdldGlfSW5obGFiYV9LaG9sd2FuZV9JbmdjaV9JbnlvbmlfSW1waGFsYV9Md2V0aV9JbmdvbmdvbmkiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkJoaV9JbmFfSW51X01hYl9JbmtfSW5oX0tob19JZ2NfSW55X0ltcF9Md2VfSWdvIi5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzOiJMaXNvbnRmb19VbXNvbWJ1bHVrb19MZXNpYmlsaV9MZXNpdHNhdGZ1X0xlc2luZV9MZXNpaGxhbnVfVW1nY2liZWxvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikxpc19VbWJfTHNiX0xlc19Mc2lfTHNoX1VtZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTGlfVXNfTGJfTHRf''@;'; put 'put ''THNfTGhfVWciLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZ''@;'; put 'put ''WVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltOYW11aGxhIG5nYV0gTFQiLG5leHREYXk6IltLdXNhc2EgbmdhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW25nYV0gTFQiLGxhc3REYXk6IltJdG9sbyBuZ2FdIExUIixsYXN0V2VlazoiZGRkZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUIixz''@;'; put 'put ''YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuZ2EgJXMiLHBhc3Q6IndlbnRla2EgbmdhICVzIixzOiJlbWl6dXp3YW5hIGxvbWNhbmUiLHNzOiIlZCBtenV6d2FuYSIsbToidW16dXp1IixtbToiJWQgZW1penV6dSIsaDoibGlob3JhIixoaDoiJWQgZW1haG9yYSIsZDoibGls''@;'; put 'put ''YW5nYSIsZGQ6IiVkIGVtYWxhbmdhIixNOiJpbnlhbmdhIixNTToiJWQgdGlueWFuZ2EiLHk6InVtbnlha2EiLHl5OiIlZCBpbWlueWFrYSJ9LG1lcmlkaWVtUGFyc2U6L2VrdXNlbml8ZW1pbml8ZW50c2FtYmFtYXxlYnVzdWt1LyxtZXJpZGllbTpmdW5jdGlvbihFLE1lLFUpe3JldHVybiBF''@;'; put 'put ''PDExPyJla3VzZW5pIjpFPDE1PyJlbWluaSI6RTwxOT8iZW50c2FtYmFtYSI6ImVidXN1a3UifSxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxNZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksImVrdXNlbmkiPT09TWU/RToiZW1pbmkiPT09TWU/RT49MTE/RTpFKzEyOiJlbnRzYW1iYW1hIj09PU1l''@;'; put 'put ''fHwiZWJ1c3VrdSI9PT1NZT8wPT09RT8wOkUrMTI6dm9pZCAwfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOiIlZCIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzk3MTM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7Z2UuZGVmaW5lTG9jYWxlKCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9q''@;'; put 'put ''dW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InNceGY2bmRhZ19tXHhlNW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sXHhmNnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic1x4ZjZuX21ceGU1bl90aXNfb25zX3Rvcl9mcmVf''@;'; put 'put ''bFx4ZjZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzXHhmNl9tXHhlNV90aV9vbl90b19mcl9sXHhmNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg''@;'; put 'put ''W2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJ''@;'; put 'put ''Z1x4ZTVyXSBMVCIsbmV4dFdlZWs6IltQXHhlNV0gZGRkZCBMVCIsbGFzdFdlZWs6IltJXSBkZGRkW3NdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiZlx4ZjZyICVzIHNlZGFuIixzOiJuXHhlNWdyYSBzZWt1bmRlciIsc3M6IiVkIHNla3Vu''@;'; put 'put ''ZGVyIixtOiJlbiBtaW51dCIsbW06IiVkIG1pbnV0ZXIiLGg6ImVuIHRpbW1lIixoaDoiJWQgdGltbWFyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdhciIsTToiZW4gbVx4ZTVuYWQiLE1NOiIlZCBtXHhlNW5hZGVyIix5OiJldHQgXHhlNXIiLHl5OiIlZCBceGU1ciJ9LGRheU9mTW9udGhPcmRp''@;'; put 'put ''bmFsUGFyc2U6L1xkezEsMn0oXDplfFw6YSkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8iOmUiOjE9PT1NZXx8Mj09PU1lPyI6YSI6IjplIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDQxOTgyOmZ1bmN0aW9u''@;'; put 'put ''KFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgic3ciLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFjaGlfQXByaWxpX01laV9KdW5pX0p1bGFpX0Fnb3N0aV9TZXB0ZW1iYV9Pa3RvYmFfTm92ZW1iYV9EZXNlbWJhIi5zcGxpdCgiXyIpLG1v''@;'; put 'put ''bnRoc1Nob3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfQWdvX1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlzaV9JanVtYWFfSnVtYW1vc2kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiSnBsX0p0YXRfSm5uZV9KdGFuX0FsaF9Jam1fSm1vcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiSjJfSjNfSjRfSjVfQWxfSWpfSjEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaGg6bW0gQSIsTFRTOiJISDptbTpzcyIsTDoiREQu''@;'; put 'put ''TU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbGVvIHNhYV0gTFQiLG5leHREYXk6IltrZXNobyBzYWFdIExUIixuZXh0V2VlazoiW3dpa2kgaWpheW9dIGRk''@;'; put 'put ''ZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbamFuYV0gTFQiLGxhc3RXZWVrOiJbd2lraSBpbGl5b3BpdGFdIGRkZGQgW3NhYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBiYWFkYXllIixwYXN0OiJ0b2tlYSAlcyIsczoiaGl2aSBwdW5kZSIsc3M6InNla3Vu''@;'; put 'put ''ZGUgJWQiLG06ImRha2lrYSBtb2phIixtbToiZGFraWthICVkIixoOiJzYWEgbGltb2phIixoaDoibWFzYWEgJWQiLGQ6InNpa3UgbW9qYSIsZGQ6InNpa3UgJWQiLE06Im13ZXppIG1tb2phIixNTToibWllemkgJWQiLHk6Im13YWthIG1tb2phIix5eToibWlha2EgJWQifSx3ZWVrOntkb3c6''@;'; put 'put ''MSxkb3k6N319KX0oTCgxNTQzOSkpfSwyMjczMjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwYmU3IiwyOiJcdTBiZTgiLDM6Ilx1MGJlOSIsNDoiXHUwYmVhIiw1OiJcdTBiZWIiLDY6Ilx1MGJlYyIsNzoiXHUwYmVkIiw4OiJcdTBi''@;'; put 'put ''ZWUiLDk6Ilx1MGJlZiIsMDoiXHUwYmU2In0sRT17Ilx1MGJlNyI6IjEiLCJcdTBiZTgiOiIyIiwiXHUwYmU5IjoiMyIsIlx1MGJlYSI6IjQiLCJcdTBiZWIiOiI1IiwiXHUwYmVjIjoiNiIsIlx1MGJlZCI6IjciLCJcdTBiZWUiOiI4IiwiXHUwYmVmIjoiOSIsIlx1MGJlNiI6IjAifTtnZS5k''@;'; put 'put ''ZWZpbmVMb2NhbGUoInRhIix7bW9udGhzOiJcdTBiOWNcdTBiYTlcdTBiYjVcdTBiYjBcdTBiYmZfXHUwYmFhXHUwYmJmXHUwYmFhXHUwYmNkXHUwYmIwXHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhZVx1MGJiZVx1MGJiMFx1MGJjZFx1MGI5YVx1MGJjZF9cdTBiOGZcdTBiYWFcdTBiY2RcdTBi''@;'; put 'put ''YjBcdTBiYjJcdTBiY2RfXHUwYmFlXHUwYmM3X1x1MGI5Y1x1MGJjMlx1MGJhOVx1MGJjZF9cdTBiOWNcdTBiYzJcdTBiYjJcdTBiYzhfXHUwYjg2XHUwYjk1XHUwYmI4XHUwYmNkXHUwYjlmXHUwYmNkX1x1MGI5YVx1MGJjNlx1MGJhYVx1MGJjZFx1MGI5Zlx1MGJjNlx1MGJhZVx1MGJjZFx1''@;'; put 'put ''MGJhYVx1MGJiMFx1MGJjZF9cdTBiODVcdTBiOTVcdTBiY2RcdTBiOWZcdTBiYzdcdTBiYmVcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYmE4XHUwYmI1XHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGI5Zlx1MGJiZlx1MGI5YVx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZCIu''@;'; put 'put ''c3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwYjljXHUwYmE5XHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhYVx1MGJiZlx1MGJhYVx1MGJjZFx1MGJiMFx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWVcdTBiYmVcdTBiYjBcdTBiY2RcdTBiOWFcdTBiY2RfXHUwYjhmXHUwYmFhXHUwYmNkXHUwYmIw''@;'; put 'put ''XHUwYmIyXHUwYmNkX1x1MGJhZVx1MGJjN19cdTBiOWNcdTBiYzJcdTBiYTlcdTBiY2RfXHUwYjljXHUwYmMyXHUwYmIyXHUwYmM4X1x1MGI4Nlx1MGI5NVx1MGJiOFx1MGJjZFx1MGI5Zlx1MGJjZF9cdTBiOWFcdTBiYzZcdTBiYWFcdTBiY2RcdTBiOWZcdTBiYzZcdTBiYWVcdTBiY2RcdTBi''@;'; put 'put ''YWFcdTBiYjBcdTBiY2RfXHUwYjg1XHUwYjk1XHUwYmNkXHUwYjlmXHUwYmM3XHUwYmJlXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGJhOFx1MGJiNVx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiOWZcdTBiYmZcdTBiOWFcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2QiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXM6Ilx1MGI5ZVx1MGJiZVx1MGJhZlx1MGJiZlx1MGJiMVx1MGJjZFx1MGJiMVx1MGJjMVx1MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiYTRcdTBiYmZcdTBiOTlcdTBiY2RcdTBiOTVcdTBiOWZcdTBiY2RcdTBiOTVcdTBiYmZc''@;'; put 'put ''dTBiYjRcdTBiYWVcdTBiYzhfXHUwYjlhXHUwYmM2XHUwYmI1XHUwYmNkXHUwYmI1XHUwYmJlXHUwYmFmXHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGJhYVx1MGJjMVx1MGJhNFx1MGJhOVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiYjVc''@;'; put 'put ''dTBiYmZcdTBiYWZcdTBiYmVcdTBiYjRcdTBiOTVcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYmI1XHUwYmM2XHUwYmIzXHUwYmNkXHUwYmIzXHUwYmJmXHUwYjk1XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGI5YVx1MGJhOVx1MGJiZlx1''@;'; put 'put ''MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBiOWVcdTBiYmVcdTBiYWZcdTBiYmZcdTBiYjFcdTBiYzFfXHUwYmE0XHUwYmJmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmIzXHUwYmNkX1x1MGI5YVx1MGJjNlx1MGJi''@;'; put 'put ''NVx1MGJjZFx1MGJiNVx1MGJiZVx1MGJhZlx1MGJjZF9cdTBiYWFcdTBiYzFcdTBiYTRcdTBiYTlcdTBiY2RfXHUwYmI1XHUwYmJmXHUwYmFmXHUwYmJlXHUwYmI0XHUwYmE5XHUwYmNkX1x1MGJiNVx1MGJjNlx1MGJiM1x1MGJjZFx1MGJiM1x1MGJiZl9cdTBiOWFcdTBiYTlcdTBiYmYiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGI5ZVx1MGJiZV9cdTBiYTRcdTBiYmZfXHUwYjlhXHUwYmM2X1x1MGJhYVx1MGJjMV9cdTBiYjVcdTBiYmZfXHUwYmI1XHUwYmM2X1x1MGI5YSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJE''@;'; put 'put ''RC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGI4N1x1MGJhOVx1MGJjZFx1MGJiMVx1MGJjMV0gTFQiLG5leHREYXk6IltcdTBiYThcdTBiYmVc''@;'; put 'put ''dTBiYjNcdTBiYzhdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBiYThcdTBiYzdcdTBiYjFcdTBiY2RcdTBiYjFcdTBiYzFdIExUIixsYXN0V2VlazoiW1x1MGI5NVx1MGI5Zlx1MGJhOFx1MGJjZFx1MGJhNCBcdTBiYjVcdTBiYmVcdTBiYjBcdTBiYWVcdTBiY2RdIGRk''@;'; put 'put ''ZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBiODdcdTBiYjJcdTBiY2QiLHBhc3Q6IiVzIFx1MGJhZVx1MGJjMVx1MGJhOVx1MGJjZCIsczoiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGI5YVx1MGJiZlx1MGJiMiBcdTBiYjVcdTBiYmZcdTBiYThcdTBi''@;'; put 'put ''YmVcdTBiOWZcdTBiYmZcdTBiOTVcdTBiYjNcdTBiY2QiLHNzOiIlZCBcdTBiYjVcdTBiYmZcdTBiYThcdTBiYmVcdTBiOWZcdTBiYmZcdTBiOTVcdTBiYjNcdTBiY2QiLG06Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYThcdTBiYmZcdTBiYWVcdTBiYmZcdTBiOWZcdTBiYWVcdTBiY2QiLG1t''@;'; put 'put ''OiIlZCBcdTBiYThcdTBiYmZcdTBiYWVcdTBiYmZcdTBiOWZcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2QiLGg6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYWVcdTBiYTNcdTBiYmYgXHUwYmE4XHUwYmM3XHUwYmIwXHUwYmFlXHUwYmNkIixoaDoiJWQgXHUwYmFlXHUwYmEzXHUwYmJm''@;'; put 'put ''IFx1MGJhOFx1MGJjN1x1MGJiMFx1MGJhZVx1MGJjZCIsZDoiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJhOFx1MGJiZVx1MGJiM1x1MGJjZCIsZGQ6IiVkIFx1MGJhOFx1MGJiZVx1MGI5Zlx1MGJjZFx1MGI5NVx1MGJiM1x1MGJjZCIsTToiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJhZVx1MGJi''@;'; put 'put ''ZVx1MGJhNFx1MGJhZVx1MGJjZCIsTU06IiVkIFx1MGJhZVx1MGJiZVx1MGJhNFx1MGI5OVx1MGJjZFx1MGI5NVx1MGJiM1x1MGJjZCIseToiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJiNVx1MGJiMFx1MGJjMVx1MGI5Zlx1MGJhZVx1MGJjZCIseXk6IiVkIFx1MGI4Nlx1MGJhM1x1MGJjZFx1''@;'; put 'put ''MGI5Zlx1MGJjMVx1MGI5NVx1MGJiM1x1MGJjZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cdTBiYjVcdTBiYTRcdTBiYzEvLG9yZGluYWw6ZnVuY3Rpb24oVSl7cmV0dXJuIFUrIlx1MGJiNVx1MGJhNFx1MGJjMSJ9LHByZXBhcnNlOmZ1bmN0aW9uKFUpe3JldHVybiBVLnJl''@;'; put 'put ''cGxhY2UoL1tcdTBiZTdcdTBiZThcdTBiZTlcdTBiZWFcdTBiZWJcdTBiZWNcdTBiZWRcdTBiZWVcdTBiZWZcdTBiZTZdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFEpe3JldHVybiBC''@;'; put 'put ''W1FdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGJhZlx1MGJiZVx1MGJhZVx1MGJhZVx1MGJjZHxcdTBiYjVcdTBiYzhcdTBiOTVcdTBiYjFcdTBiYzh8XHUwYjk1XHUwYmJlXHUwYmIyXHUwYmM4fFx1MGJhOFx1MGJhM1x1MGJjZFx1MGJhYVx1MGI5NVx1MGJiMlx1MGJjZHxcdTBiOGVcdTBiYjFc''@;'; put 'put ''dTBiY2RcdTBiYWFcdTBiYmVcdTBiOWZcdTBiYzF8XHUwYmFlXHUwYmJlXHUwYmIyXHUwYmM4LyxtZXJpZGllbTpmdW5jdGlvbihVLFEsWil7cmV0dXJuIFU8Mj8iIFx1MGJhZlx1MGJiZVx1MGJhZVx1MGJhZVx1MGJjZCI6VTw2PyIgXHUwYmI1XHUwYmM4XHUwYjk1XHUwYmIxXHUwYmM4IjpV''@;'; put 'put ''PDEwPyIgXHUwYjk1XHUwYmJlXHUwYmIyXHUwYmM4IjpVPDE0PyIgXHUwYmE4XHUwYmEzXHUwYmNkXHUwYmFhXHUwYjk1XHUwYmIyXHUwYmNkIjpVPDE4PyIgXHUwYjhlXHUwYmIxXHUwYmNkXHUwYmFhXHUwYmJlXHUwYjlmXHUwYmMxIjpVPDIyPyIgXHUwYmFlXHUwYmJlXHUwYmIyXHUwYmM4''@;'; put 'put ''IjoiIFx1MGJhZlx1MGJiZVx1MGJhZVx1MGJhZVx1MGJjZCJ9LG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVybiAxMj09PVUmJihVPTApLCJcdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2QiPT09UT9VPDI/VTpVKzEyOiJcdTBiYjVcdTBiYzhcdTBiOTVcdTBiYjFcdTBiYzgi''@;'; put 'put ''PT09UXx8Ilx1MGI5NVx1MGJiZVx1MGJiMlx1MGJjOCI9PT1RfHwiXHUwYmE4XHUwYmEzXHUwYmNkXHUwYmFhXHUwYjk1XHUwYmIyXHUwYmNkIj09PVEmJlU+PTEwP1U6VSsxMn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sNDM2MzY6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0''@;'; put 'put ''aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJ0ZSIse21vbnRoczoiXHUwYzFjXHUwYzI4XHUwYzM1XHUwYzMwXHUwYzNmX1x1MGMyYlx1MGMzZlx1MGMyY1x1MGM0ZFx1MGMzMFx1MGMzNVx1MGMzMFx1MGMzZl9cdTBjMmVcdTBjM2VcdTBjMzBcdTBjNGRcdTBjMWFcdTBj''@;'; put 'put ''M2ZfXHUwYzBmXHUwYzJhXHUwYzRkXHUwYzMwXHUwYzNmXHUwYzMyXHUwYzRkX1x1MGMyZVx1MGM0N19cdTBjMWNcdTBjNDJcdTBjMjhcdTBjNGRfXHUwYzFjXHUwYzQxXHUwYzMyXHUwYzQ4X1x1MGMwNlx1MGMxN1x1MGMzOFx1MGM0ZFx1MGMxZlx1MGM0MV9cdTBjMzhcdTBjNDZcdTBjMmFc''@;'; put 'put ''dTBjNGRcdTBjMWZcdTBjNDZcdTBjMDJcdTBjMmNcdTBjMzBcdTBjNGRfXHUwYzA1XHUwYzE1XHUwYzRkXHUwYzFmXHUwYzRiXHUwYzJjXHUwYzMwXHUwYzRkX1x1MGMyOFx1MGMzNVx1MGMwMlx1MGMyY1x1MGMzMFx1MGM0ZF9cdTBjMjFcdTBjM2ZcdTBjMzhcdTBjNDZcdTBjMDJcdTBjMmNc''@;'; put 'put ''dTBjMzBcdTBjNGQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGMxY1x1MGMyOC5fXHUwYzJiXHUwYzNmXHUwYzJjXHUwYzRkXHUwYzMwLl9cdTBjMmVcdTBjM2VcdTBjMzBcdTBjNGRcdTBjMWFcdTBjM2ZfXHUwYzBmXHUwYzJhXHUwYzRkXHUwYzMwXHUwYzNmLl9cdTBjMmVcdTBjNDdf''@;'; put 'put ''XHUwYzFjXHUwYzQyXHUwYzI4XHUwYzRkX1x1MGMxY1x1MGM0MVx1MGMzMlx1MGM0OF9cdTBjMDZcdTBjMTcuX1x1MGMzOFx1MGM0Nlx1MGMyYVx1MGM0ZC5fXHUwYzA1XHUwYzE1XHUwYzRkXHUwYzFmXHUwYzRiLl9cdTBjMjhcdTBjMzUuX1x1MGMyMVx1MGMzZlx1MGMzOFx1MGM0Ni4iLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwYzA2XHUwYzI2XHUwYzNmXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMzOFx1MGM0Ylx1MGMyZVx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMmVcdTBjMDJcdTBjMTdcdTBjMzNcdTBjMzVcdTBjM2VcdTBj''@;'; put 'put ''MzBcdTBjMDJfXHUwYzJjXHUwYzQxXHUwYzI3XHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMxN1x1MGM0MVx1MGMzMFx1MGM0MVx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMzZcdTBjNDFcdTBjMTVcdTBjNGRcdTBjMzBcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzM2XHUw''@;'; put 'put ''YzI4XHUwYzNmXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGMwNlx1MGMyNlx1MGMzZl9cdTBjMzhcdTBjNGJcdTBjMmVfXHUwYzJlXHUwYzAyXHUwYzE3XHUwYzMzX1x1MGMyY1x1MGM0MVx1MGMyN19cdTBjMTdcdTBjNDFcdTBjMzBcdTBj''@;'; put 'put ''NDFfXHUwYzM2XHUwYzQxXHUwYzE1XHUwYzRkXHUwYzMwX1x1MGMzNlx1MGMyOFx1MGMzZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwYzA2X1x1MGMzOFx1MGM0Yl9cdTBjMmVcdTBjMDJfXHUwYzJjXHUwYzQxX1x1MGMxN1x1MGM0MV9cdTBjMzZcdTBjNDFfXHUwYzM2Ii5zcGxpdCgi''@;'; put 'put ''XyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEgaDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGMy''@;'; put 'put ''OFx1MGM0N1x1MGMyMVx1MGM0MV0gTFQiLG5leHREYXk6IltcdTBjMzBcdTBjNDdcdTBjMmFcdTBjNDFdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBjMjhcdTBjM2ZcdTBjMjhcdTBjNGRcdTBjMjhdIExUIixsYXN0V2VlazoiW1x1MGMxN1x1MGMyNF0gZGRkZCwgTFQi''@;'; put 'put ''LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGMzMlx1MGM0YiIscGFzdDoiJXMgXHUwYzE1XHUwYzRkXHUwYzMwXHUwYzNmXHUwYzI0XHUwYzAyIixzOiJcdTBjMTVcdTBjNGFcdTBjMjhcdTBjNGRcdTBjMjhcdTBjM2YgXHUwYzE1XHUwYzRkXHUwYzM3XHUwYzIz''@;'; put 'put ''XHUwYzNlXHUwYzMyXHUwYzQxIixzczoiJWQgXHUwYzM4XHUwYzQ2XHUwYzE1XHUwYzI4XHUwYzRkXHUwYzMyXHUwYzQxIixtOiJcdTBjMTJcdTBjMTUgXHUwYzI4XHUwYzNmXHUwYzJlXHUwYzNmXHUwYzM3XHUwYzAyIixtbToiJWQgXHUwYzI4XHUwYzNmXHUwYzJlXHUwYzNmXHUwYzM3XHUw''@;'; put 'put ''YzNlXHUwYzMyXHUwYzQxIixoOiJcdTBjMTJcdTBjMTUgXHUwYzE3XHUwYzAyXHUwYzFmIixoaDoiJWQgXHUwYzE3XHUwYzAyXHUwYzFmXHUwYzMyXHUwYzQxIixkOiJcdTBjMTJcdTBjMTUgXHUwYzMwXHUwYzRiXHUwYzFjXHUwYzQxIixkZDoiJWQgXHUwYzMwXHUwYzRiXHUwYzFjXHUwYzQx''@;'; put 'put ''XHUwYzMyXHUwYzQxIixNOiJcdTBjMTJcdTBjMTUgXHUwYzI4XHUwYzQ2XHUwYzMyIixNTToiJWQgXHUwYzI4XHUwYzQ2XHUwYzMyXHUwYzMyXHUwYzQxIix5OiJcdTBjMTJcdTBjMTUgXHUwYzM4XHUwYzAyXHUwYzM1XHUwYzI0XHUwYzRkXHUwYzM4XHUwYzMwXHUwYzAyIix5eToiJWQgXHUw''@;'; put 'put ''YzM4XHUwYzAyXHUwYzM1XHUwYzI0XHUwYzRkXHUwYzM4XHUwYzMwXHUwYzNlXHUwYzMyXHUwYzQxIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1MGMzNS8sb3JkaW5hbDoiJWRcdTBjMzUiLG1lcmlkaWVtUGFyc2U6L1x1MGMzMFx1MGMzZVx1MGMyNFx1MGM0ZFx1MGMzMFx1''@;'; put 'put ''MGMzZnxcdTBjMDlcdTBjMjZcdTBjMmZcdTBjMDJ8XHUwYzJlXHUwYzI3XHUwYzRkXHUwYzJmXHUwYzNlXHUwYzM5XHUwYzRkXHUwYzI4XHUwYzAyfFx1MGMzOFx1MGMzZVx1MGMyZlx1MGMwMlx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMwMi8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEUsTWUpe3Jl''@;'; put 'put ''dHVybiAxMj09PUUmJihFPTApLCJcdTBjMzBcdTBjM2VcdTBjMjRcdTBjNGRcdTBjMzBcdTBjM2YiPT09TWU/RTw0P0U6RSsxMjoiXHUwYzA5XHUwYzI2XHUwYzJmXHUwYzAyIj09PU1lP0U6Ilx1MGMyZVx1MGMyN1x1MGM0ZFx1MGMyZlx1MGMzZVx1MGMzOVx1MGM0ZFx1MGMyOFx1MGMwMiI9''@;'; put 'put ''PT1NZT9FPj0xMD9FOkUrMTI6Ilx1MGMzOFx1MGMzZVx1MGMyZlx1MGMwMlx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMwMiI9PT1NZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTw0PyJcdTBjMzBcdTBjM2VcdTBjMjRcdTBjNGRcdTBjMzBcdTBjM2YiOkU8''@;'; put 'put ''MTA/Ilx1MGMwOVx1MGMyNlx1MGMyZlx1MGMwMiI6RTwxNz8iXHUwYzJlXHUwYzI3XHUwYzRkXHUwYzJmXHUwYzNlXHUwYzM5XHUwYzRkXHUwYzI4XHUwYzAyIjpFPDIwPyJcdTBjMzhcdTBjM2VcdTBjMmZcdTBjMDJcdTBjMjRcdTBjNGRcdTBjMzBcdTBjMDIiOiJcdTBjMzBcdTBjM2VcdTBj''@;'; put 'put ''MjRcdTBjNGRcdTBjMzBcdTBjM2YifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oTCgxNTQzOSkpfSwyMTE1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgidGV0Iix7bW9udGhzOiJKYW5laXJ1X0ZldmVyZWlydV9NYXJzdV9BYnJp''@;'; put 'put ''bF9NYWl1X0p1XHhmMXVfSnVsbHVfQWd1c3R1X1NldGVtYnJ1X091dHVicnVfTm92ZW1icnVfRGV6ZW1icnUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21pbmd1''@;'; put 'put ''X1NlZ3VuZGFfVGVyc2FfS3VhcnRhX0tpbnRhX1Nlc3RhX1NhYmFkdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fU2VnX1RlcnNfS3VhX0tpbnRfU2VzdF9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvX1NlZ19UZV9LdV9LaV9TZXNfU2EiLnNwbGl0KCJfIiksbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbT2hpbiBpaGFdIExUIixuZXh0RGF5''@;'; put 'put ''OiJbQWJhbiBpaGFdIExUIixuZXh0V2VlazoiZGRkZCBbaWhhXSBMVCIsbGFzdERheToiW0hvcmlzZWlrIGloYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtzZW1hbmEga290dWtdIFtpaGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpaGEgJXMiLHBhc3Q6IiVzIGxp''@;'; put 'put ''dWJhIixzOiJzZWd1bmR1IGJhbHVuIixzczoic2VndW5kdSAlZCIsbToibWludXR1IGlkYSIsbW06Im1pbnV0dSAlZCIsaDoib3JhcyBpZGEiLGhoOiJvcmFzICVkIixkOiJsb3JvbiBpZGEiLGRkOiJsb3JvbiAlZCIsTToiZnVsYW4gaWRhIixNTToiZnVsYW4gJWQiLHk6InRpbmFuIGlkYSIs''@;'; put 'put ''eXk6InRpbmFuICVkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIE1lPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1NZT8ic3QiOjI9PT1NZT8ibmQiOjM9PT1NZT8icmQiOiJ0aCIp''@;'; put 'put ''fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2OTgwMTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MDoiLVx1MDQ0M1x1MDQzYyIsMToiLVx1MDQ0M1x1MDQzYyIsMjoiLVx1MDQ0ZVx1MDQzYyIsMzoiLVx1MDQ0ZVx1MDQzYyIs''@;'; put 'put ''NDoiLVx1MDQ0M1x1MDQzYyIsNToiLVx1MDQ0M1x1MDQzYyIsNjoiLVx1MDQ0M1x1MDQzYyIsNzoiLVx1MDQ0M1x1MDQzYyIsODoiLVx1MDQ0M1x1MDQzYyIsOToiLVx1MDQ0M1x1MDQzYyIsMTA6Ii1cdTA0NDNcdTA0M2MiLDEyOiItXHUwNDQzXHUwNDNjIiwxMzoiLVx1MDQ0M1x1MDQzYyIs''@;'; put 'put ''MjA6Ii1cdTA0NDNcdTA0M2MiLDMwOiItXHUwNDRlXHUwNDNjIiw0MDoiLVx1MDQ0M1x1MDQzYyIsNTA6Ii1cdTA0NDNcdTA0M2MiLDYwOiItXHUwNDQzXHUwNDNjIiw3MDoiLVx1MDQ0M1x1MDQzYyIsODA6Ii1cdTA0NDNcdTA0M2MiLDkwOiItXHUwNDQzXHUwNDNjIiwxMDA6Ii1cdTA0NDNc''@;'; put 'put ''dTA0M2MifTtnZS5kZWZpbmVMb2NhbGUoInRnIix7bW9udGhzOntmb3JtYXQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JcdTA0MzhfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyXHUwNDM4X1x1MDQzMFx1''@;'; put 'put ''MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYlx1MDQzOF9cdTA0M2NcdTA0MzBcdTA0MzlcdTA0MzhfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDM4X1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQzOF9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzhfXHUwNDQxXHUwNDM1XHUwNDNk''@;'; put 'put ''XHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDM4X1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQzOF9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBcdTA0MzhfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwXHUwNDM4Ii5zcGxpdCgiXyIp''@;'; put 'put ''LHN0YW5kYWxvbmU6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MF9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUw''@;'; put 'put ''NDRlXHUwNDNkX1x1MDQzOFx1MDQ0ZVx1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0M2RcdTA0M2VcdTA0NGZc''@;'; put 'put ''dTA0MzFcdTA0NDBfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoiXHUwNDRmXHUwNDNkXHUwNDMyX1x1MDQ0NFx1MDQzNVx1MDQzMl9cdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDMwXHUwNDNmXHUwNDQwX1x1MDQzY1x1MDQzMFx1''@;'; put 'put ''MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM19cdTA0NDFcdTA0MzVcdTA0M2RfXHUwNDNlXHUwNDNhXHUwNDQyX1x1MDQzZFx1MDQzZVx1MDQ0Zl9cdTA0MzRcdTA0MzVcdTA0M2EiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDQ0''@;'; put 'put ''Zlx1MDQzYVx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0MzRcdTA0NDNcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzVfXHUwNDQxXHUwNDM1XHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQz''@;'; put 'put ''MVx1MDQzNV9cdTA0M2ZcdTA0MzBcdTA0M2RcdTA0YjdcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzVfXHUwNGI3XHUwNDQzXHUwNDNjXHUwNDRhXHUwNDMwX1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0NGZcdTA0NDhc''@;'; put 'put ''dTA0MzFfXHUwNDM0XHUwNDQ4XHUwNDMxX1x1MDQ0MVx1MDQ0OFx1MDQzMV9cdTA0NDdcdTA0NDhcdTA0MzFfXHUwNDNmXHUwNDQ4XHUwNDMxX1x1MDRiN1x1MDQ0M1x1MDQzY19cdTA0NDhcdTA0M2RcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQ0Zlx1MDQ0OF9cdTA0MzRc''@;'; put 'put ''dTA0NDhfXHUwNDQxXHUwNDQ4X1x1MDQ0N1x1MDQ0OF9cdTA0M2ZcdTA0NDhfXHUwNGI3XHUwNDNjX1x1MDQ0OFx1MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBN''@;'; put 'put ''TU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MThcdTA0M2NcdTA0NDBcdTA0ZWZcdTA0MzcgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBMVCIsbmV4dERheToiW1x1MDQyNFx1MDQzMFx1MDQ0MFx1''@;'; put 'put ''MDQzNFx1MDQzZSBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixsYXN0RGF5OiJbXHUwNDE0XHUwNDM4XHUwNDQwXHUwNGVmXHUwNDM3IFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLG5leHRXZWVrOiJkZGRkW1x1MDQzOF0gW1x1MDRiM1x1MDQzMFx1MDQ0''@;'; put 'put ''NFx1MDQ0Mlx1MDQzMFx1MDQzOCBcdTA0M2VcdTA0NGZcdTA0M2RcdTA0MzRcdTA0MzAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBMVCIsbGFzdFdlZWs6ImRkZGRbXHUwNDM4XSBbXHUwNGIzXHUwNDMwXHUwNDQ0XHUwNDQyXHUwNDMwXHUwNDM4IFx1MDQzM1x1MDQ0M1x1MDQz''@;'; put 'put ''N1x1MDQzMFx1MDQ0OFx1MDQ0Mlx1MDQzMCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MzFcdTA0MzBcdTA0NGFcdTA0MzRcdTA0MzggJXMiLHBhc3Q6IiVzIFx1MDQzZlx1MDQzNVx1MDQ0OCIsczoi''@;'; put 'put ''XHUwNDRmXHUwNDNhXHUwNDQ3XHUwNDMwXHUwNDNkXHUwNDM0IFx1MDQ0MVx1MDQzZVx1MDQzZFx1MDQzOFx1MDQ0ZiIsbToiXHUwNDRmXHUwNDNhIFx1MDQzNFx1MDQzMFx1MDQ5Ylx1MDQzOFx1MDQ5Ylx1MDQzMCIsbW06IiVkIFx1MDQzNFx1MDQzMFx1MDQ5Ylx1MDQzOFx1MDQ5Ylx1MDQz''@;'; put 'put ''MCIsaDoiXHUwNDRmXHUwNDNhIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0MiIsZDoiXHUwNDRmXHUwNDNhIFx1MDQ0MFx1MDRlZlx1MDQzNyIsZGQ6IiVkIFx1MDQ0MFx1MDRlZlx1MDQzNyIsTToiXHUwNDRmXHUwNDNhIFx1MDQzY1x1''@;'; put 'put ''MDQzZVx1MDRiMyIsTU06IiVkIFx1MDQzY1x1MDQzZVx1MDRiMyIseToiXHUwNDRmXHUwNDNhIFx1MDQ0MVx1MDQzZVx1MDQzYiIseXk6IiVkIFx1MDQ0MVx1MDQzZVx1MDQzYiJ9LG1lcmlkaWVtUGFyc2U6L1x1MDQ0OFx1MDQzMFx1MDQzMXxcdTA0NDFcdTA0NDNcdTA0MzFcdTA0YjN8XHUw''@;'; put 'put ''NDQwXHUwNGVmXHUwNDM3fFx1MDQzMVx1MDQzNVx1MDQzM1x1MDQzZVx1MDRiMy8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKE1lLFUpe3JldHVybiAxMj09PU1lJiYoTWU9MCksIlx1MDQ0OFx1MDQzMFx1MDQzMSI9PT1VP01lPDQ/TWU6TWUrMTI6Ilx1MDQ0MVx1MDQ0M1x1MDQzMVx1MDRiMyI9''@;'; put 'put ''PT1VP01lOiJcdTA0NDBcdTA0ZWZcdTA0MzciPT09VT9NZT49MTE/TWU6TWUrMTI6Ilx1MDQzMVx1MDQzNVx1MDQzM1x1MDQzZVx1MDRiMyI9PT1VP01lKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oTWUsVSxRKXtyZXR1cm4gTWU8ND8iXHUwNDQ4XHUwNDMwXHUwNDMxIjpNZTwxMT8i''@;'; put 'put ''XHUwNDQxXHUwNDQzXHUwNDMxXHUwNGIzIjpNZTwxNj8iXHUwNDQwXHUwNGVmXHUwNDM3IjpNZTwxOT8iXHUwNDMxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNGIzIjoiXHUwNDQ4XHUwNDMwXHUwNDMxIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDQzXHUwNDNjfFx1MDQ0''@;'; put 'put ''ZVx1MDQzYykvLG9yZGluYWw6ZnVuY3Rpb24oTWUpe3JldHVybiBNZSsoQltNZV18fEJbTWUlMTBdfHxCW01lPj0xMDA/MTAwOm51bGxdKX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sMjg2ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0Ijtn''@;'; put 'put ''ZS5kZWZpbmVMb2NhbGUoInRoIix7bW9udGhzOiJcdTBlMjFcdTBlMDFcdTBlMjNcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTAxXHUwZTM4XHUwZTIxXHUwZTIwXHUwZTMyXHUwZTFlXHUwZTMxXHUwZTE5XHUwZTE4XHUwZTRjX1x1MGUyMVx1MGUzNVx1MGUxOVx1MGUzMlx1MGUwNFx1MGUyMV9c''@;'; put 'put ''dTBlNDBcdTBlMjFcdTBlMjlcdTBlMzJcdTBlMjJcdTBlMTlfXHUwZTFlXHUwZTI0XHUwZTI5XHUwZTIwXHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUyMVx1MGUzNFx1MGUxNlx1MGUzOFx1MGUxOVx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMDFcdTBlMjNcdTBlMDFcdTBlMGVcdTBlMzJcdTBlMDRc''@;'; put 'put ''dTBlMjFfXHUwZTJhXHUwZTM0XHUwZTA3XHUwZTJiXHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUwMVx1MGUzMVx1MGUxOVx1MGUyMlx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMTVcdTBlMzhcdTBlMjVcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTFlXHUwZTI0XHUwZTI4XHUwZTA4XHUwZTM0XHUwZTAx''@;'; put 'put ''XHUwZTMyXHUwZTIyXHUwZTE5X1x1MGUxOFx1MGUzMVx1MGUxOVx1MGUyN1x1MGUzMlx1MGUwNFx1MGUyMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZTIxLlx1MGUwNC5fXHUwZTAxLlx1MGUxZS5fXHUwZTIxXHUwZTM1Llx1MGUwNC5fXHUwZTQwXHUwZTIxLlx1MGUyMi5fXHUwZTFl''@;'; put 'put ''Llx1MGUwNC5fXHUwZTIxXHUwZTM0Llx1MGUyMi5fXHUwZTAxLlx1MGUwNC5fXHUwZTJhLlx1MGUwNC5fXHUwZTAxLlx1MGUyMi5fXHUwZTE1Llx1MGUwNC5fXHUwZTFlLlx1MGUyMi5fXHUwZTE4Llx1MGUwNC4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUw''@;'; put 'put ''ZTJkXHUwZTMyXHUwZTE3XHUwZTM0XHUwZTE1XHUwZTIyXHUwZTRjX1x1MGUwOFx1MGUzMVx1MGUxOVx1MGUxN1x1MGUyM1x1MGU0Y19cdTBlMmRcdTBlMzFcdTBlMDdcdTBlMDRcdTBlMzJcdTBlMjNfXHUwZTFlXHUwZTM4XHUwZTE4X1x1MGUxZVx1MGUyNFx1MGUyYlx1MGUzMVx1MGUyYVx1''@;'; put 'put ''MGUxYVx1MGUxNFx1MGUzNV9cdTBlMjhcdTBlMzhcdTBlMDFcdTBlMjNcdTBlNGNfXHUwZTQwXHUwZTJhXHUwZTMyXHUwZTIzXHUwZTRjIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGUyZFx1MGUzMlx1MGUxN1x1MGUzNFx1MGUxNVx1MGUyMlx1MGU0Y19cdTBlMDhcdTBlMzFcdTBl''@;'; put 'put ''MTlcdTBlMTdcdTBlMjNcdTBlNGNfXHUwZTJkXHUwZTMxXHUwZTA3XHUwZTA0XHUwZTMyXHUwZTIzX1x1MGUxZVx1MGUzOFx1MGUxOF9cdTBlMWVcdTBlMjRcdTBlMmJcdTBlMzFcdTBlMmFfXHUwZTI4XHUwZTM4XHUwZTAxXHUwZTIzXHUwZTRjX1x1MGU0MFx1MGUyYVx1MGUzMlx1MGUyM1x1''@;'; put 'put ''MGU0YyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwZTJkXHUwZTMyLl9cdTBlMDguX1x1MGUyZC5fXHUwZTFlLl9cdTBlMWVcdTBlMjQuX1x1MGUyOC5fXHUwZTJhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6''@;'; put 'put ''bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzIgSDptbSIsTExMTDoiXHUwZTI3XHUwZTMxXHUwZTE5ZGRkZFx1MGUxN1x1MGUzNVx1MGU0OCBEIE1NTU0gWVlZWSBcdTBlNDBcdTBlMjdcdTBlMjVc''@;'; put 'put ''dTBlMzIgSDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MGUwMVx1MGU0OFx1MGUyZFx1MGUxOVx1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwN3xcdTBlMmJcdTBlMjVcdTBlMzFcdTBlMDdcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhcdTBlMjJcdTBlMDcvLGlzUE06ZnVuY3Rpb24o''@;'; put 'put ''RSl7cmV0dXJuIlx1MGUyYlx1MGUyNVx1MGUzMVx1MGUwN1x1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwNyI9PT1FfSxtZXJpZGllbTpmdW5jdGlvbihFLE1lLFUpe3JldHVybiBFPDEyPyJcdTBlMDFcdTBlNDhcdTBlMmRcdTBlMTlcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhc''@;'; put 'put ''dTBlMjJcdTBlMDciOiJcdTBlMmJcdTBlMjVcdTBlMzFcdTBlMDdcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhcdTBlMjJcdTBlMDcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGUyN1x1MGUzMVx1MGUxOVx1MGUxOVx1MGUzNVx1MGU0OSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixu''@;'; put 'put ''ZXh0RGF5OiJbXHUwZTFlXHUwZTIzXHUwZTM4XHUwZTQ4XHUwZTA3XHUwZTE5XHUwZTM1XHUwZTQ5IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLG5leHRXZWVrOiJkZGRkW1x1MGUyYlx1MGUxOVx1MGU0OVx1MGUzMiBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixsYXN0RGF5''@;'; put 'put ''OiJbXHUwZTQwXHUwZTIxXHUwZTM3XHUwZTQ4XHUwZTJkXHUwZTI3XHUwZTMyXHUwZTE5XHUwZTE5XHUwZTM1XHUwZTQ5IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLGxhc3RXZWVrOiJbXHUwZTI3XHUwZTMxXHUwZTE5XWRkZGRbXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTQxXHUwZTI1''@;'; put 'put ''XHUwZTQ5XHUwZTI3IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MGUyZFx1MGUzNVx1MGUwMSAlcyIscGFzdDoiJXNcdTBlMTdcdTBlMzVcdTBlNDhcdTBlNDFcdTBlMjVcdTBlNDlcdTBlMjciLHM6Ilx1MGU0NFx1''@;'; put 'put ''MGUyMVx1MGU0OFx1MGUwMVx1MGUzNVx1MGU0OFx1MGUyN1x1MGUzNFx1MGUxOVx1MGUzMlx1MGUxN1x1MGUzNSIsc3M6IiVkIFx1MGUyN1x1MGUzNFx1MGUxOVx1MGUzMlx1MGUxN1x1MGUzNSIsbToiMSBcdTBlMTlcdTBlMzJcdTBlMTdcdTBlMzUiLG1tOiIlZCBcdTBlMTlcdTBlMzJcdTBl''@;'; put 'put ''MTdcdTBlMzUiLGg6IjEgXHUwZTBhXHUwZTMxXHUwZTQ4XHUwZTI3XHUwZTQyXHUwZTIxXHUwZTA3IixoaDoiJWQgXHUwZTBhXHUwZTMxXHUwZTQ4XHUwZTI3XHUwZTQyXHUwZTIxXHUwZTA3IixkOiIxIFx1MGUyN1x1MGUzMVx1MGUxOSIsZGQ6IiVkIFx1MGUyN1x1MGUzMVx1MGUxOSIsdzoi''@;'; put 'put ''MSBcdTBlMmFcdTBlMzFcdTBlMWJcdTBlMTRcdTBlMzJcdTBlMmJcdTBlNGMiLHd3OiIlZCBcdTBlMmFcdTBlMzFcdTBlMWJcdTBlMTRcdTBlMzJcdTBlMmJcdTBlNGMiLE06IjEgXHUwZTQwXHUwZTE0XHUwZTM3XHUwZTJkXHUwZTE5IixNTToiJWQgXHUwZTQwXHUwZTE0XHUwZTM3XHUwZTJk''@;'; put 'put ''XHUwZTE5Iix5OiIxIFx1MGUxYlx1MGUzNSIseXk6IiVkIFx1MGUxYlx1MGUzNSJ9fSl9KEwoMTU0MzkpKX0sMzEzMTA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6IidpbmppIiw1OiInaW5qaSIsODoiJ2luamkiLDcwOiInaW5qaSIsODA6''@;'; put 'put ''IidpbmppIiwyOiInbmppIiw3OiInbmppIiwyMDoiJ25qaSIsNTA6IiduamkiLDM6IidceGZjbmppIiw0OiInXHhmY25qaSIsMTAwOiInXHhmY25qaSIsNjoiJ25qeSIsOToiJ3VuankiLDEwOiIndW5qeSIsMzA6Iid1bmp5Iiw2MDoiJ3luankiLDkwOiIneW5qeSJ9O2dlLmRlZmluZUxvY2Fs''@;'; put 'put ''ZSgidGsiLHttb250aHM6Ilx4ZGRhbndhcl9GZXdyYWxfTWFydF9BcHJlbF9NYVx4ZmRfSVx4ZmR1bl9JXHhmZHVsX0F3Z3VzdF9TZW50XHhmZGFicl9Pa3RceGZkYWJyX05vXHhmZGFicl9EZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx4ZGRhbl9GZXdfTWFyX0Fwcl9NYVx4ZmRf''@;'; put 'put ''SVx4ZmRuX0lceGZkbF9Bd2dfU2VuX09rdF9Ob1x4ZmRfRGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJceGRkZWtcdTAxNWZlbmJlX0R1XHUwMTVmZW5iZV9TaVx1MDE1ZmVuYmVfXHhjN2FyXHUwMTVmZW5iZV9QZW5cdTAxNWZlbmJlX0FubmFfXHUwMTVlZW5iZSIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c1Nob3J0OiJceGRkZWtfRHVcdTAxNWZfU2lcdTAxNWZfXHhjN2FyX1Blbl9Bbm5fXHUwMTVlZW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx4ZGRrX0RcdTAxNWZfU1x1MDE1Zl9ceGM3cl9Qbl9Bbl9cdTAxNWVuIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0i''@;'; put 'put ''LExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2J1Z1x4ZmNuIHNhZ2F0XSBMVCIsbmV4dERheToiW2VydGlyIHNhZ2F0''@;'; put 'put ''XSBMVCIsbmV4dFdlZWs6IltpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCIsbGFzdERheToiW2RceGZjXHhmZG5dIExUIixsYXN0V2VlazoiW2dlXHhlN2VuXSBkZGRkIFtzYWdhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvXHUwMTQ4IixwYXN0OiIlcyBc''@;'; put 'put ''eGY2XHUwMTQ4IixzOiJiaXJuXHhlNFx4ZTdlIHNla3VudCIsbToiYmlyIG1pbnV0IixtbToiJWQgbWludXQiLGg6ImJpciBzYWdhdCIsaGg6IiVkIHNhZ2F0IixkOiJiaXIgZ1x4ZmNuIixkZDoiJWQgZ1x4ZmNuIixNOiJiaXIgYVx4ZmQiLE1NOiIlZCBhXHhmZCIseToiYmlyIFx4ZmR5bCIs''@;'; put 'put ''eXk6IiVkIFx4ZmR5bCJ9LG9yZGluYWw6ZnVuY3Rpb24oTWUsVSl7c3dpdGNoKFUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRvIjpjYXNlIkREIjpyZXR1cm4gTWU7ZGVmYXVsdDppZigwPT09TWUpcmV0dXJuIE1lKyIndW5qeSI7dmFyIFE9TWUlMTA7cmV0dXJuIE1lKyhCW1FdfHxCW01lJTEw''@;'; put 'put ''MC1RXXx8QltNZT49MTAwPzEwMDpudWxsXSl9fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSwyMjM2MDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoInRsLXBoIix7bW9udGhzOiJFbmVyb19QZWJyZXJvX01hcnNv''@;'; put 'put ''X0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkVuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJM''@;'; put 'put ''aW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJMaV9MdV9NYV9NaV9IdV9CaV9TYWIiLnNwbGl0KCJf''@;'; put 'put ''IiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiTU0vRC9ZWVlZIixMTDoiTU1NTSBELCBZWVlZIixMTEw6Ik1NTU0gRCwgWVlZWSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJMVCBbbmdheW9u''@;'; put 'put ''ZyBhcmF3XSIsbmV4dERheToiW0J1a2FzIG5nXSBMVCIsbmV4dFdlZWs6IkxUIFtzYSBzdXN1bm9kIG5hXSBkZGRkIixsYXN0RGF5OiJMVCBba2FoYXBvbl0iLGxhc3RXZWVrOiJMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJz''@;'; put 'put ''YSBsb29iIG5nICVzIixwYXN0OiIlcyBhbmcgbmFrYWxpcGFzIixzOiJpbGFuZyBzZWd1bmRvIixzczoiJWQgc2VndW5kbyIsbToiaXNhbmcgbWludXRvIixtbToiJWQgbWludXRvIixoOiJpc2FuZyBvcmFzIixoaDoiJWQgb3JhcyIsZDoiaXNhbmcgYXJhdyIsZGQ6IiVkIGFyYXciLE06Imlz''@;'; put 'put ''YW5nIGJ1d2FuIixNTToiJWQgYnV3YW4iLHk6ImlzYW5nIHRhb24iLHl5OiIlZCB0YW9uIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihFKXtyZXR1cm4gRX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNjY2NDU6ZnVuY3Rpb24o''@;'; put 'put ''WGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7dmFyIEI9InBhZ2hfd2FcdTIwMTlfY2hhXHUyMDE5X3dlal9sb1NfdmFnaF9qYXZfU29jaF9jaG9yZ2hfSHV0Ii5zcGxpdCgiXyIpO2Z1bmN0aW9uIFUoaWUsbGUsWSxXKXt2YXIgTj1mdW5jdGlvbiBRKGllKXt2YXIgbGU9TWF0''@;'; put 'put ''aC5mbG9vcihpZSUxZTMvMTAwKSxZPU1hdGguZmxvb3IoaWUlMTAwLzEwKSxXPWllJTEwLE49IiI7cmV0dXJuIGxlPjAmJihOKz1CW2xlXSsidmF0bGgiKSxZPjAmJihOKz0oIiIhPT1OPyIgIjoiIikrQltZXSsibWFIIiksVz4wJiYoTis9KCIiIT09Tj8iICI6IiIpK0JbV10pLCIiPT09Tj8i''@;'; put 'put ''cGFnaCI6Tn0oaWUpO3N3aXRjaChZKXtjYXNlInNzIjpyZXR1cm4gTisiIGx1cCI7Y2FzZSJtbSI6cmV0dXJuIE4rIiB0dXAiO2Nhc2UiaGgiOnJldHVybiBOKyIgcmVwIjtjYXNlImRkIjpyZXR1cm4gTisiIGphaiI7Y2FzZSJNTSI6cmV0dXJuIE4rIiBqYXIiO2Nhc2UieXkiOnJldHVybiBO''@;'; put 'put ''KyIgRElTIn19Z2UuZGVmaW5lTG9jYWxlKCJ0bGgiLHttb250aHM6InRlcmFcdTIwMTkgamFyIHdhXHUyMDE5X3RlcmFcdTIwMTkgamFyIGNoYVx1MjAxOV90ZXJhXHUyMDE5IGphciB3ZWpfdGVyYVx1MjAxOSBqYXIgbG9TX3RlcmFcdTIwMTkgamFyIHZhZ2hfdGVyYVx1MjAxOSBqYXIgamF2''@;'; put 'put ''X3RlcmFcdTIwMTkgamFyIFNvY2hfdGVyYVx1MjAxOSBqYXIgY2hvcmdoX3RlcmFcdTIwMTkgamFyIEh1dF90ZXJhXHUyMDE5IGphciB3YVx1MjAxOW1hSF90ZXJhXHUyMDE5IGphciB3YVx1MjAxOW1hSCB3YVx1MjAxOV90ZXJhXHUyMDE5IGphciB3YVx1MjAxOW1hSCBjaGFcdTIwMTkiLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzU2hvcnQ6ImphciB3YVx1MjAxOV9qYXIgY2hhXHUyMDE5X2phciB3ZWpfamFyIGxvU19qYXIgdmFnaF9qYXIgamF2X2phciBTb2NoX2phciBjaG9yZ2hfamFyIEh1dF9qYXIgd2FcdTIwMTltYUhfamFyIHdhXHUyMDE5bWFIIHdhXHUyMDE5X2phciB3YVx1MjAxOW1h''@;'; put 'put ''SCBjaGFcdTIwMTkiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJ''@;'; put 'put ''dGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Imxvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi''@;'; put 'put ''LEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0RhSGphal0gTFQiLG5leHREYXk6Ilt3YVx1MjAxOWxlU10gTFQiLG5leHRXZWVrOiJMTEwiLGxh''@;'; put 'put ''c3REYXk6Ilt3YVx1MjAxOUh1XHUyMDE5XSBMVCIsbGFzdFdlZWs6IkxMTCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbiBFKGllKXt2YXIgbGU9aWU7cmV0dXJuLTEhPT1pZS5pbmRleE9mKCJqYWoiKT9sZS5zbGljZSgwLC0zKSsibGVTIjotMSE9PWllLmlu''@;'; put 'put ''ZGV4T2YoImphciIpP2xlLnNsaWNlKDAsLTMpKyJ3YVEiOi0xIT09aWUuaW5kZXhPZigiRElTIik/bGUuc2xpY2UoMCwtMykrIm5lbSI6bGUrIiBwSXEifSxwYXN0OmZ1bmN0aW9uIE1lKGllKXt2YXIgbGU9aWU7cmV0dXJuLTEhPT1pZS5pbmRleE9mKCJqYWoiKT9sZS5zbGljZSgwLC0zKSsi''@;'; put 'put ''SHVcdTIwMTkiOi0xIT09aWUuaW5kZXhPZigiamFyIik/bGUuc2xpY2UoMCwtMykrIndlbiI6LTEhPT1pZS5pbmRleE9mKCJESVMiKT9sZS5zbGljZSgwLC0zKSsiYmVuIjpsZSsiIHJldCJ9LHM6InB1UyBsdXAiLHNzOlUsbToid2FcdTIwMTkgdHVwIixtbTpVLGg6IndhXHUyMDE5IHJlcCIs''@;'; put 'put ''aGg6VSxkOiJ3YVx1MjAxOSBqYWoiLGRkOlUsTToid2FcdTIwMTkgamFyIixNTTpVLHk6IndhXHUyMDE5IERJUyIseXk6VX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDk4Mzc0OmZ1bmN0''@;'; put 'put ''aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNpIiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIsMjA6IiduY2kiLDUwOiInbmNpIiwzOiInXHhmY25jXHhmYyIsNDoiJ1x4ZmNuY1x4''@;'; put 'put ''ZmMiLDEwMDoiJ1x4ZmNuY1x4ZmMiLDY6IiduY1x1MDEzMSIsOToiJ3VuY3UiLDEwOiIndW5jdSIsMzA6Iid1bmN1Iiw2MDoiJ1x1MDEzMW5jXHUwMTMxIiw5MDoiJ1x1MDEzMW5jXHUwMTMxIn07Z2UuZGVmaW5lTG9jYWxlKCJ0ciIse21vbnRoczoiT2Nha19cdTAxNWV1YmF0X01hcnRfTmlz''@;'; put 'put ''YW5fTWF5XHUwMTMxc19IYXppcmFuX1RlbW11el9BXHUwMTFmdXN0b3NfRXlsXHhmY2xfRWtpbV9LYXNcdTAxMzFtX0FyYWxcdTAxMzFrIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJPY2FfXHUwMTVldWJfTWFyX05pc19NYXlfSGF6X1RlbV9BXHUwMTFmdV9FeWxfRWtpX0thc19BcmEiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWxcdTAxMzFfXHhjN2FyXHUwMTVmYW1iYV9QZXJcdTAxNWZlbWJlX0N1bWFfQ3VtYXJ0ZXNpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBhel9QenRfU2FsX1x4Yzdhcl9QZXJfQ3VtX0NtdCIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c01pbjoiUHpfUHRfU2FfXHhjN2FfUGVfQ3VfQ3QiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oTWUsVSxRKXtyZXR1cm4gTWU8MTI/UT8iXHhmNlx4ZjYiOiJceGQ2XHhkNiI6UT8iXHhmNnMiOiJceGQ2UyJ9LG1lcmlkaWVtUGFyc2U6L1x4ZjZceGY2fFx4ZDZceGQ2fFx4ZjZz''@;'; put 'put ''fFx4ZDZTLyxpc1BNOmZ1bmN0aW9uKE1lKXtyZXR1cm4iXHhmNnMiPT09TWV8fCJceGQ2UyI9PT1NZX0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJk''@;'; put 'put ''ZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnXHhmY24gc2FhdF0gTFQiLG5leHREYXk6Ilt5YXJcdTAxMzFuIHNhYXRdIExUIixuZXh0V2VlazoiW2dlbGVjZWtdIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZFx4ZmNuXSBMVCIsbGFzdFdlZWs6Iltn''@;'; put 'put ''ZVx4ZTdlbl0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvbnJhIixwYXN0OiIlcyBceGY2bmNlIixzOiJiaXJrYVx4ZTcgc2FuaXllIixzczoiJWQgc2FuaXllIixtOiJiaXIgZGFraWthIixtbToiJWQgZGFraWthIixoOiJiaXIgc2Fh''@;'; put 'put ''dCIsaGg6IiVkIHNhYXQiLGQ6ImJpciBnXHhmY24iLGRkOiIlZCBnXHhmY24iLHc6ImJpciBoYWZ0YSIsd3c6IiVkIGhhZnRhIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmlyIHlcdTAxMzFsIix5eToiJWQgeVx1MDEzMWwifSxvcmRpbmFsOmZ1bmN0aW9uKE1lLFUpe3N3aXRjaChVKXtj''@;'; put 'put ''YXNlImQiOmNhc2UiRCI6Y2FzZSJEbyI6Y2FzZSJERCI6cmV0dXJuIE1lO2RlZmF1bHQ6aWYoMD09PU1lKXJldHVybiBNZSsiJ1x1MDEzMW5jXHUwMTMxIjt2YXIgUT1NZSUxMDtyZXR1cm4gTWUrKEJbUV18fEJbTWUlMTAwLVFdfHxCW01lPj0xMDA/MTAwOm51bGxdKX19LHdlZWs6e2Rvdzox''@;'; put 'put ''LGRveTo3fX0pfShMKDE1NDM5KSl9LDI1NjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKE1lLFUsUSxaKXt2YXIgaWU9e3M6WyJ2aWVuc2FzIHNlY3VuZHMiLCInaWVuc2FzIHNlY3VuZHMiXSxzczpbTWUrIiBzZWN1bmRzIixNZSsiIHNl''@;'; put 'put ''Y3VuZHMiXSxtOlsiJ24gbVx4ZWR1dCIsIidpZW5zIG1ceGVkdXQiXSxtbTpbTWUrIiBtXHhlZHV0cyIsTWUrIiBtXHhlZHV0cyJdLGg6WyInbiBceGZlb3JhIiwiJ2llbnNhIFx4ZmVvcmEiXSxoaDpbTWUrIiBceGZlb3JhcyIsTWUrIiBceGZlb3JhcyJdLGQ6WyInbiB6aXVhIiwiJ2llbnNh''@;'; put 'put ''IHppdWEiXSxkZDpbTWUrIiB6aXVhcyIsTWUrIiB6aXVhcyJdLE06WyInbiBtZXMiLCInaWVucyBtZXMiXSxNTTpbTWUrIiBtZXNlbiIsTWUrIiBtZXNlbiJdLHk6WyInbiBhciIsIidpZW5zIGFyIl0seXk6W01lKyIgYXJzIixNZSsiIGFycyJdfTtyZXR1cm4gWnx8VT9pZVtRXVswXTppZVtR''@;'; put 'put ''XVsxXX1nZS5kZWZpbmVMb2NhbGUoInR6bCIse21vbnRoczoiSmFudWFyX0ZldnJhZ2xoX01hclx4ZTdfQXZyXHhlZnVfTWFpX0dceGZjbl9KdWxpYV9HdXNjaHRfU2V0ZW12YXJfTGlzdG9wXHhlNHRzX05vZW12YXJfWmVjZW12YXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZXZf''@;'; put 'put ''TWFyX0F2cl9NYWlfR1x4ZmNuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTXHhmYWxhZGlfTFx4ZmFuZVx4ZTdpX01haXR6aV9NXHhlMXJjdXJpX1hoXHhmYWFkaV9WaVx4ZTluZXJceGU3aV9TXHhlMXR1cmkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiU1x4ZmFsX0xceGZhbl9NYWlfTVx4ZTFyX1hoXHhmYV9WaVx4ZTlfU1x4ZTF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTXHhmYV9MXHhmYV9NYV9NXHhlMV9YaF9WaV9TXHhlMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJE''@;'; put 'put ''RC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBbZGFsbGFzXSBZWVlZIixMTEw6IkQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbSIsTExMTDoiZGRkZCwgW2xpXSBELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0ifSxtZXJpZGllbVBhcnNlOi9kXCdvfGRcJ2EvaSxpc1BNOmZ1bmN0aW9uKE1lKXty''@;'; put 'put ''ZXR1cm4iZCdvIj09PU1lLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKE1lLFUsUSl7cmV0dXJuIE1lPjExP1E/ImQnbyI6IkQnTyI6UT8iZCdhIjoiRCdBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltveGhpIFx4ZTBdIExUIixuZXh0RGF5OiJbZGVtXHhlMCBceGUwXSBMVCIsbmV4''@;'; put 'put ''dFdlZWs6ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbaWVpcmkgXHhlMF0gTFQiLGxhc3RXZWVrOiJbc1x4ZmNyIGVsXSBkZGRkIFtsYXN0ZXUgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9zcHJlaSAlcyIscGFzdDoiamElcyIsczpFLHNzOkUsbTpF''@;'; put 'put ''LG1tOkUsaDpFLGhoOkUsZDpFLGRkOkUsTTpFLE1NOkUseTpFLHl5OkV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2MTYzMTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoInR6bS1sYXRuIix7bW9udGhzOiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dh''@;'; put 'put ''bmJpcl9kd2puYmlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9kd2pu''@;'; put 'put ''YmlyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNpXHUxZTBkeWFzIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0''@;'; put 'put ''KCJfIiksd2Vla2RheXNNaW46ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQg''@;'; put 'put ''TU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilthc2RraCBnXSBMVCIsbmV4dERheToiW2Fza2EgZ10gTFQiLG5leHRXZWVrOiJkZGRkIFtnXSBMVCIsbGFzdERheToiW2Fzc2FudCBnXSBMVCIsbGFzdFdlZWs6ImRkZGQg''@;'; put 'put ''W2ddIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWRraCBzIHlhbiAlcyIscGFzdDoieWFuICVzIixzOiJpbWlrIixzczoiJWQgaW1payIsbToibWludVx1MWUwZCIsbW06IiVkIG1pbnVcdTFlMGQiLGg6InNhXHUwMjViYSIsaGg6IiVkIHRhc3NhXHUwMjViaW4i''@;'; put 'put ''LGQ6ImFzcyIsZGQ6IiVkIG9zc2FuIixNOiJheW93ciIsTU06IiVkIGl5eWlybiIseToiYXNnYXMiLHl5OiIlZCBpc2dhc24ifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KEwoMTU0MzkpKX0sNjE1OTU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVm''@;'; put 'put ''aW5lTG9jYWxlKCJ0em0iLHttb250aHM6Ilx1MmQ0OVx1MmQ0Zlx1MmQ0Zlx1MmQzMFx1MmQ2Mlx1MmQ1NF9cdTJkMzFcdTJkNTVcdTJkMzBcdTJkNjJcdTJkNTVfXHUyZDRlXHUyZDMwXHUyZDU1XHUyZDVhX1x1MmQ0OVx1MmQzMVx1MmQ1NFx1MmQ0OVx1MmQ1NF9cdTJkNGVcdTJkMzBcdTJk''@;'; put 'put ''NjJcdTJkNjJcdTJkNTNfXHUyZDYyXHUyZDUzXHUyZDRmXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0ZFx1MmQ2Mlx1MmQ1M1x1MmQ2M19cdTJkNTZcdTJkNTNcdTJkNWJcdTJkNWNfXHUyZDViXHUyZDUzXHUyZDVjXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzZFx1''@;'; put 'put ''MmQ1Zlx1MmQ1M1x1MmQzMVx1MmQ1NV9cdTJkNGZcdTJkNTNcdTJkNjFcdTJkMzBcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTRfXHUyZDM3XHUyZDUzXHUyZDRhXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTJkNDlcdTJkNGZcdTJkNGZcdTJkMzBc''@;'; put 'put ''dTJkNjJcdTJkNTRfXHUyZDMxXHUyZDU1XHUyZDMwXHUyZDYyXHUyZDU1X1x1MmQ0ZVx1MmQzMFx1MmQ1NVx1MmQ1YV9cdTJkNDlcdTJkMzFcdTJkNTRcdTJkNDlcdTJkNTRfXHUyZDRlXHUyZDMwXHUyZDYyXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0Zlx1MmQ2Mlx1MmQ1M19cdTJk''@;'; put 'put ''NjJcdTJkNTNcdTJkNGRcdTJkNjJcdTJkNTNcdTJkNjNfXHUyZDU2XHUyZDUzXHUyZDViXHUyZDVjX1x1MmQ1Ylx1MmQ1M1x1MmQ1Y1x1MmQzMFx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NF9cdTJkM2RcdTJkNWZcdTJkNTNcdTJkMzFcdTJkNTVfXHUyZDRmXHUyZDUzXHUyZDYxXHUyZDMwXHUy''@;'; put 'put ''ZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzN1x1MmQ1M1x1MmQ0YVx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUyZDMwXHUyZDU5XHUyZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJk''@;'; put 'put ''NTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUy''@;'; put 'put ''ZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MmQzMFx1MmQ1OVx1MmQzMFx1MmQ0ZVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNjJcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRmXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ1NFx1MmQz''@;'; put 'put ''MFx1MmQ1OV9cdTJkMzBcdTJkM2RcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRlXHUyZDYxXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQzOVx1MmQ2Mlx1MmQzMFx1MmQ1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUyZDMwXHUyZDU5XHUy''@;'; put 'put ''ZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlc''@;'; put 'put ''dTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJE''@;'; put 'put ''IE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUyZDMwXHUyZDU5XHUyZDM3XHUyZDQ1IFx1MmQzNF0gTFQiLG5leHREYXk6IltcdTJkMzBcdTJkNTlcdTJkM2RcdTJkMzAgXHUyZDM0XSBMVCIsbmV4dFdlZWs6ImRk''@;'; put 'put ''ZGQgW1x1MmQzNF0gTFQiLGxhc3REYXk6IltcdTJkMzBcdTJkNWFcdTJkMzBcdTJkNGZcdTJkNWMgXHUyZDM0XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MmQzNF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MmQzN1x1MmQzMFx1MmQzN1x1MmQ0NSBcdTJkNTkg''@;'; put 'put ''XHUyZDYyXHUyZDMwXHUyZDRmICVzIixwYXN0OiJcdTJkNjJcdTJkMzBcdTJkNGYgJXMiLHM6Ilx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsc3M6IiVkIFx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsbToiXHUyZDRlXHUyZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixtbToiJWQgXHUyZDRlXHUy''@;'; put 'put ''ZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixoOiJcdTJkNTlcdTJkMzBcdTJkNDRcdTJkMzAiLGhoOiIlZCBcdTJkNWNcdTJkMzBcdTJkNTlcdTJkNTlcdTJkMzBcdTJkNDRcdTJkNDlcdTJkNGYiLGQ6Ilx1MmQzMFx1MmQ1OVx1MmQ1OSIsZGQ6IiVkIG9cdTJkNTlcdTJkNTlcdTJkMzBcdTJkNGYi''@;'; put 'put ''LE06Ilx1MmQzMFx1MmQ2Mm9cdTJkNTNcdTJkNTQiLE1NOiIlZCBcdTJkNDlcdTJkNjJcdTJkNjJcdTJkNDlcdTJkNTRcdTJkNGYiLHk6Ilx1MmQzMFx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OSIseXk6IiVkIFx1MmQ0OVx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OVx1MmQ0ZiJ9LHdlZWs6e2Rv''@;'; put 'put ''dzo2LGRveToxMn19KX0oTCgxNTQzOSkpfSw2MDUwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgidWctY24iLHttb250aHM6Ilx1MDY0YVx1MDYyN1x1MDY0Nlx1MDZjYlx1MDYyN1x1MDYzMV9cdTA2NDFcdTA2ZDBcdTA2Y2Jc''@;'; put 'put ''dTA2MzFcdTA2MjdcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjJhX1x1MDYyNlx1MDYyN1x1MDY3ZVx1MDYzMVx1MDZkMFx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjI2XHUwNjQ5XHUwNjRhXHUwNmM3XHUwNjQ2X1x1MDYyNlx1MDY0OVx1MDY0YVx1MDZjN1x1MDY0NF9cdTA2''@;'; put 'put ''MjZcdTA2MjdcdTA2Y2JcdTA2M2FcdTA2YzdcdTA2MzNcdTA2MmFfXHUwNjMzXHUwNmQwXHUwNjQ2XHUwNjJhXHUwNmQ1XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDYyNlx1MDZjNlx1MDY0M1x1MDYyYVx1MDZkNVx1MDYyOFx1MDY0OVx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NGFcdTA2MjdcdTA2''@;'; put 'put ''MjhcdTA2NDlcdTA2MzFfXHUwNjJmXHUwNmQwXHUwNjQzXHUwNjI3XHUwNjI4XHUwNjQ5XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2NGFcdTA2MjdcdTA2NDZcdTA2Y2JcdTA2MjdcdTA2MzFfXHUwNjQxXHUwNmQwXHUwNmNiXHUwNjMxXHUwNjI3XHUwNjQ0X1x1MDY0NVx1''@;'; put 'put ''MDYyN1x1MDYzMVx1MDYyYV9cdTA2MjZcdTA2MjdcdTA2N2VcdTA2MzFcdTA2ZDBcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyNlx1MDY0OVx1MDY0YVx1MDZjN1x1MDY0Nl9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDRfXHUwNjI2XHUwNjI3XHUwNmNiXHUwNjNhXHUwNmM3''@;'; put 'put ''XHUwNjMzXHUwNjJhX1x1MDYzM1x1MDZkMFx1MDY0Nlx1MDYyYVx1MDZkNVx1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MjZcdTA2YzZcdTA2NDNcdTA2MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjRhXHUwNjI3XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDYyZlx1MDZk''@;'; put 'put ''MFx1MDY0M1x1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNjRhXHUwNmQ1XHUwNjQzXHUwNjM0XHUwNmQ1XHUwNjQ2XHUwNjI4XHUwNmQ1X1x1MDYyZlx1MDZjOFx1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2MzNcdTA2ZDVcdTA2NGFc''@;'; put 'put ''dTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjg2XHUwNjI3XHUwNjMxXHUwNjM0XHUwNmQ1XHUwNjQ2XHUwNjI4XHUwNmQ1X1x1MDY3ZVx1MDZkNVx1MDY0YVx1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2MmNcdTA2YzhcdTA2NDVcdTA2ZDVfXHUwNjM0XHUwNmQ1''@;'; put 'put ''XHUwNjQ2XHUwNjI4XHUwNmQ1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDY0YVx1MDZkNV9cdTA2MmZcdTA2YzhfXHUwNjMzXHUwNmQ1X1x1MDY4Nlx1MDYyN19cdTA2N2VcdTA2ZDVfXHUwNjJjXHUwNmM4X1x1MDYzNFx1MDZkNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUw''@;'; put 'put ''NjRhXHUwNmQ1X1x1MDYyZlx1MDZjOF9cdTA2MzNcdTA2ZDVfXHUwNjg2XHUwNjI3X1x1MDY3ZVx1MDZkNV9cdTA2MmNcdTA2YzhfXHUwNjM0XHUwNmQ1Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZ''@;'; put 'put ''LVx1MDY0YVx1MDY0OVx1MDY0NFx1MDY0OU0tXHUwNjI2XHUwNjI3XHUwNjRhXHUwNjQ2XHUwNjQ5XHUwNmFkRC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDkiLExMTDoiWVlZWS1cdTA2NGFcdTA2NDlcdTA2NDRcdTA2NDlNLVx1MDYyNlx1MDYyN1x1MDY0YVx1MDY0Nlx1MDY0OVx1MDZhZEQt''@;'; put 'put ''XHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5XHUwNjBjIEhIOm1tIixMTExMOiJkZGRkXHUwNjBjIFlZWVktXHUwNjRhXHUwNjQ5XHUwNjQ0XHUwNjQ5TS1cdTA2MjZcdTA2MjdcdTA2NGFcdTA2NDZcdTA2NDlcdTA2YWRELVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OVx1MDYwYyBISDptbSJ9LG1l''@;'; put 'put ''cmlkaWVtUGFyc2U6L1x1MDY0YVx1MDZkMFx1MDYzMVx1MDY0OVx1MDY0NSBcdTA2NDNcdTA2ZDBcdTA2ODZcdTA2ZDV8XHUwNjMzXHUwNmQ1XHUwNmJlXHUwNmQ1XHUwNjMxfFx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYyYVx1MDY0OVx1MDY0NiBcdTA2MjhcdTA2YzdcdTA2MzFcdTA2YzdcdTA2''@;'; put 'put ''NDZ8XHUwNjg2XHUwNmM4XHUwNjM0fFx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYyYVx1MDY0OVx1MDY0NiBcdTA2NDNcdTA2ZDBcdTA2NGFcdTA2NDlcdTA2NDZ8XHUwNjQzXHUwNmQ1XHUwNjg2LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxNZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksIlx1MDY0''@;'; put 'put ''YVx1MDZkMFx1MDYzMVx1MDY0OVx1MDY0NSBcdTA2NDNcdTA2ZDBcdTA2ODZcdTA2ZDUiPT09TWV8fCJcdTA2MzNcdTA2ZDVcdTA2YmVcdTA2ZDVcdTA2MzEiPT09TWV8fCJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjI4XHUwNmM3XHUwNjMxXHUwNmM3XHUwNjQ2''@;'; put 'put ''Ij09PU1lP0U6Ilx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYyYVx1MDY0OVx1MDY0NiBcdTA2NDNcdTA2ZDBcdTA2NGFcdTA2NDlcdTA2NDYiPT09TWV8fCJcdTA2NDNcdTA2ZDVcdTA2ODYiPT09TWU/RSsxMjpFPj0xMT9FOkUrMTJ9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsTWUsVSl7dmFyIFE9MTAw''@;'; put 'put ''KkUrTWU7cmV0dXJuIFE8NjAwPyJcdTA2NGFcdTA2ZDBcdTA2MzFcdTA2NDlcdTA2NDUgXHUwNjQzXHUwNmQwXHUwNjg2XHUwNmQ1IjpRPDkwMD8iXHUwNjMzXHUwNmQ1XHUwNmJlXHUwNmQ1XHUwNjMxIjpRPDExMzA/Ilx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYyYVx1MDY0OVx1MDY0NiBcdTA2''@;'; put 'put ''MjhcdTA2YzdcdTA2MzFcdTA2YzdcdTA2NDYiOlE8MTIzMD8iXHUwNjg2XHUwNmM4XHUwNjM0IjpRPDE4MDA/Ilx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYyYVx1MDY0OVx1MDY0NiBcdTA2NDNcdTA2ZDBcdTA2NGFcdTA2NDlcdTA2NDYiOiJcdTA2NDNcdTA2ZDVcdTA2ODYifSxjYWxlbmRhcjp7''@;'; put 'put ''c2FtZURheToiW1x1MDYyOFx1MDZjOFx1MDZhZlx1MDZjOFx1MDY0NiBcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmFdIExUIixuZXh0RGF5OiJbXHUwNjI2XHUwNmQ1XHUwNjJhXHUwNmQ1IFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYV0gTFQiLG5leHRXZWVrOiJbXHUwNjQz''@;'; put 'put ''XHUwNmQwXHUwNjQ0XHUwNmQ1XHUwNjMxXHUwNjQzXHUwNjQ5XSBkZGRkIFtcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmFdIExUIixsYXN0RGF5OiJbXHUwNjJhXHUwNmM2XHUwNjQ2XHUwNmM4XHUwNmFmXHUwNmM4XHUwNjQ2XSBMVCIsbGFzdFdlZWs6IltcdTA2MjZcdTA2MjdcdTA2''@;'; put 'put ''NDRcdTA2MmZcdTA2NDlcdTA2NDZcdTA2NDJcdTA2NDldIGRkZGQgW1x1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDY0M1x1MDZkMFx1MDY0YVx1MDY0OVx1MDY0NiIscGFzdDoiJXMgXHUwNjI4XHUw''@;'; put 'put ''NmM3XHUwNjMxXHUwNmM3XHUwNjQ2IixzOiJcdTA2NDZcdTA2ZDVcdTA2ODZcdTA2ODZcdTA2ZDUgXHUwNjMzXHUwNmQwXHUwNjQzXHUwNjQ4XHUwNjQ2XHUwNjJhIixzczoiJWQgXHUwNjMzXHUwNmQwXHUwNjQzXHUwNjQ4XHUwNjQ2XHUwNjJhIixtOiJcdTA2MjhcdTA2NDlcdTA2MzEgXHUw''@;'; put 'put ''NjQ1XHUwNjQ5XHUwNjQ2XHUwNmM3XHUwNjJhIixtbToiJWQgXHUwNjQ1XHUwNjQ5XHUwNjQ2XHUwNmM3XHUwNjJhIixoOiJcdTA2MjhcdTA2NDlcdTA2MzEgXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhIixoaDoiJWQgXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhIixkOiJc''@;'; put 'put ''dTA2MjhcdTA2NDlcdTA2MzEgXHUwNjQzXHUwNmM4XHUwNjQ2IixkZDoiJWQgXHUwNjQzXHUwNmM4XHUwNjQ2IixNOiJcdTA2MjhcdTA2NDlcdTA2MzEgXHUwNjI2XHUwNjI3XHUwNjRhIixNTToiJWQgXHUwNjI2XHUwNjI3XHUwNjRhIix5OiJcdTA2MjhcdTA2NDlcdTA2MzEgXHUwNjRhXHUw''@;'; put 'put ''NjQ5XHUwNjQ0Iix5eToiJWQgXHUwNjRhXHUwNjQ5XHUwNjQ0In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSgtXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5fC1cdTA2MjZcdTA2MjdcdTA2NGF8LVx1MDZiZVx1MDZkNVx1MDY3ZVx1MDYyYVx1MDZkNSkvLG9yZGluYWw6ZnVuY3Rp''@;'; put 'put ''b24oRSxNZSl7c3dpdGNoKE1lKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBFKyItXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIEUrIi1cdTA2YmVcdTA2ZDVcdTA2N2VcdTA2MmFcdTA2ZDUiO2RlZmF1bHQ6cmV0dXJuIEV9fSxwcmVw''@;'; put 'put ''YXJzZTpmdW5jdGlvbihFKXtyZXR1cm4gRS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKEUpe3JldHVybiBFLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDY1NjEwOmZ1bmN0aW9uKFhlLEplLEwpeyFm''@;'; put 'put ''dW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEUoWixpZSxsZSl7cmV0dXJuIm0iPT09bGU/aWU/Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQzMCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQ0MyI6ImgiPT09bGU/aWU/''@;'; put 'put ''Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCI6Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0MyI6WisiICIrZnVuY3Rpb24gQihaLGllKXt2YXIgbGU9Wi5zcGxpdCgiXyIpO3JldHVybiBpZSUxMD09MSYmaWUlMTAwIT0xMT9sZVswXTppZSUxMD49MiYm''@;'; put 'put ''aWUlMTA8PTQmJihpZSUxMDA8MTB8fGllJTEwMD49MjApP2xlWzFdOmxlWzJdfSh7c3M6aWU/Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzhfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQz''@;'; put 'put ''XHUwNDNkXHUwNDM0IjoiXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDQzX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOF9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG1tOmllPyJcdTA0NDVcdTA0MzJcdTA0Mzhc''@;'; put 'put ''dTA0M2JcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQ0M19cdTA0NDVcdTA0MzJcdTA0''@;'; put 'put ''MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkIixoaDppZT8iXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwX1x1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzOF9cdTA0MzNcdTA0M2VcdTA0MzRc''@;'; put 'put ''dTA0MzhcdTA0M2QiOiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDNfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZCIsZGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzRcdTA0M2RcdTA0''@;'; put 'put ''NTZfXHUwNDM0XHUwNDNkXHUwNDU2XHUwNDMyIixNTToiXHUwNDNjXHUwNDU2XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDRjX1x1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQ1Nl9cdTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NTZcdTA0MzIiLHl5OiJcdTA0NDBcdTA0''@;'; put 'put ''NTZcdTA0M2FfXHUwNDQwXHUwNDNlXHUwNDNhXHUwNDM4X1x1MDQ0MFx1MDQzZVx1MDQzYVx1MDQ1Nlx1MDQzMiJ9W2xlXSwrWil9ZnVuY3Rpb24gVShaKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWisiXHUwNDNlIisoMTE9PT10aGlzLmhvdXJzKCk/Ilx1MDQzMSI6IiIpKyJdIExUIn19''@;'; put 'put ''Z2UuZGVmaW5lTG9jYWxlKCJ1ayIse21vbnRoczp7Zm9ybWF0OiJcdTA0NDFcdTA0NTZcdTA0NDdcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDNlXHUwNDMzXHUwNDNlX1x1MDQzMVx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzN1x1MDQzZFx1MDQ0Zl9cdTA0M2FcdTA0MzJcdTA0''@;'; put 'put ''NTZcdTA0NDJcdTA0M2RcdTA0NGZfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDNkXHUwNDRmX1x1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMlx1MDQzZFx1MDQ0Zl9cdTA0M2JcdTA0MzhcdTA0M2ZcdTA0M2RcdTA0NGZfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDNmXHUwNDNkXHUwNDRmX1x1''@;'; put 'put ''MDQzMlx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzZFx1MDQ0Zl9cdTA0MzZcdTA0M2VcdTA0MzJcdTA0NDJcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDNlXHUwNDNmXHUwNDMwXHUwNDM0XHUwNDMwX1x1MDQzM1x1MDQ0MFx1MDQ0M1x1MDQzNFx1MDQzZFx1''@;'; put 'put ''MDQ0ZiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NDFcdTA0NTZcdTA0NDdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDM4XHUwNDM5X1x1MDQzMVx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzN1x1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2FcdTA0MzJcdTA0NTZc''@;'; put 'put ''dTA0NDJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2JcdTA0MzhcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDQxXHUwNDM1XHUwNDQw''@;'; put 'put ''XHUwNDNmXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzZcdTA0M2VcdTA0MzJcdTA0NDJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDNlXHUwNDNmXHUwNDMwXHUwNDM0''@;'; put 'put ''X1x1MDQzM1x1MDQ0MFx1MDQ0M1x1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0YyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDQ0MVx1MDQ1Nlx1MDQ0N19cdTA0M2JcdTA0NGVcdTA0NDJfXHUwNDMxXHUwNDM1XHUwNDQwX1x1MDQzYVx1MDQzMlx1MDQ1Nlx1MDQ0Ml9cdTA0NDJcdTA0NDBc''@;'; put 'put ''dTA0MzBcdTA0MzJfXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMyX1x1MDQzYlx1MDQzOFx1MDQzZl9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0M2ZfXHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzNlx1MDQzZVx1MDQzMlx1MDQ0Ml9cdTA0M2JcdTA0MzhcdTA0NDFcdTA0NDJfXHUwNDMzXHUwNDQwXHUw''@;'; put 'put ''NDQzXHUwNDM0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOmZ1bmN0aW9uIE1lKFosaWUpe3ZhciBsZT17bm9taW5hdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDRmX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQzZVx1MDQzYV9cdTA0''@;'; put 'put ''MzJcdTA0NTZcdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2ZcdTIwMTlcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0''@;'; put 'put ''NGZfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQ0ZV9cdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0M2VcdTA0M2FfXHUwNDMyXHUw''@;'; put 'put ''NDU2XHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNlXHUwNDNhX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQ0M19cdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0MzVcdTA0NDBfXHUwNDNmXHUyMDE5XHUwNDRmXHUwNDQyXHUwNDNkXHUwNDM4XHUwNDQ2XHUwNDRlX1x1''@;'; put 'put ''MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQ0MyIuc3BsaXQoIl8iKSxnZW5pdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDU2X1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQzYVx1MDQzMF9cdTA0MzJcdTA0NTZcdTA0''@;'; put 'put ''MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2FcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDM4X1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzM1x1MDQzMF9cdTA0M2ZcdTIwMTlcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0''@;'; put 'put ''NTZfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDM4Ii5zcGxpdCgiXyIpfTtyZXR1cm4hMD09PVo/bGUubm9taW5hdGl2ZS5zbGljZSgxLDcpLmNvbmNhdChsZS5ub21pbmF0aXZlLnNsaWNlKDAsMSkpOlo/bGVbLyhcW1tcdTA0MTJcdTA0MzJcdTA0MjNcdTA0NDNdXF0pID9k''@;'; put 'put ''ZGRkLy50ZXN0KGllKT8iYWNjdXNhdGl2ZSI6L1xbPyg/Olx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQzZVx1MDQ1N3xcdTA0M2RcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0M2ZcdTA0M2RcdTA0M2VcdTA0NTcpPyA/XF0gP2RkZGQvLnRlc3QoaWUpPyJnZW5pdGl2ZSI6''@;'; put 'put ''Im5vbWluYXRpdmUiXVtaLmRheSgpXTpsZS5ub21pbmF0aXZlfSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzRfXHUwNDNmXHUwNDNkX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNN''@;'; put 'put ''aW46Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixM''@;'; put 'put ''TDoiRCBNTU1NIFlZWVkgXHUwNDQwLiIsTExMOiJEIE1NTU0gWVlZWSBcdTA0NDAuLCBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgXHUwNDQwLiwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTpVKCJbXHUwNDIxXHUwNDRjXHUwNDNlXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDNkXHUw''@;'; put 'put ''NDU2ICIpLG5leHREYXk6VSgiW1x1MDQxN1x1MDQzMFx1MDQzMlx1MDQ0Mlx1MDQ0MFx1MDQzMCAiKSxsYXN0RGF5OlUoIltcdTA0MTJcdTA0NDdcdTA0M2VcdTA0NDBcdTA0MzAgIiksbmV4dFdlZWs6VSgiW1x1MDQyM10gZGRkZCBbIiksbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhp''@;'; put 'put ''cy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiBVKCJbXHUwNDFjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDNlXHUwNDU3XSBkZGRkIFsiKS5jYWxsKHRoaXMpO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBVKCJbXHUwNDFjXHUwNDM4XHUwNDNkXHUw''@;'; put 'put ''NDQzXHUwNDNiXHUwNDNlXHUwNDMzXHUwNDNlXSBkZGRkIFsiKS5jYWxsKHRoaXMpfX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDM3XHUwNDMwICVzIixwYXN0OiIlcyBcdTA0NDJcdTA0M2VcdTA0M2NcdTA0NDMiLHM6Ilx1MDQzNFx1MDQzNVx1MDQzYVx1MDQ1''@;'; put 'put ''Nlx1MDQzYlx1MDQ0Y1x1MDQzYVx1MDQzMCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLHNzOkUsbTpFLG1tOkUsaDoiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIixoaDpFLGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0YyIsZGQ6RSxNOiJcdTA0''@;'; put 'put ''M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGMiLE1NOkUseToiXHUwNDQwXHUwNDU2XHUwNDNhIix5eTpFfSxtZXJpZGllbVBhcnNlOi9cdTA0M2RcdTA0M2VcdTA0NDdcdTA0NTZ8XHUwNDQwXHUwNDMwXHUwNDNkXHUwNDNhXHUwNDQzfFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJc''@;'; put 'put ''dTA0MzVcdTA0NDdcdTA0M2VcdTA0NDBcdTA0MzAvLGlzUE06ZnVuY3Rpb24oWil7cmV0dXJuL14oXHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCkkLy50ZXN0KFopfSxtZXJpZGllbTpmdW5jdGlvbihaLGllLGxlKXtyZXR1cm4gWjw0PyJc''@;'; put 'put ''dTA0M2RcdTA0M2VcdTA0NDdcdTA0NTYiOlo8MTI/Ilx1MDQ0MFx1MDQzMFx1MDQzZFx1MDQzYVx1MDQ0MyI6WjwxNz8iXHUwNDM0XHUwNDNkXHUwNDRmIjoiXHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDNlXHUwNDQwXHUwNDMwIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUw''@;'; put 'put ''NDM5fFx1MDQzM1x1MDQzZSkvLG9yZGluYWw6ZnVuY3Rpb24oWixpZSl7c3dpdGNoKGllKXtjYXNlIk0iOmNhc2UiZCI6Y2FzZSJEREQiOmNhc2UidyI6Y2FzZSJXIjpyZXR1cm4gWisiLVx1MDQzOSI7Y2FzZSJEIjpyZXR1cm4gWisiLVx1MDQzM1x1MDQzZSI7ZGVmYXVsdDpyZXR1cm4gWn19''@;'; put 'put ''LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDg2MDc3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO3ZhciBCPVsiXHUwNjJjXHUwNjQ2XHUwNjQ4XHUwNjMxXHUwNmNjIiwiXHUwNjQxXHUwNjMxXHUwNjQ4XHUwNjMxXHUwNmNjIiwiXHUwNjQ1''@;'; put 'put ''XHUwNjI3XHUwNjMxXHUwNjg2IiwiXHUwNjI3XHUwNjdlXHUwNjMxXHUwNmNjXHUwNjQ0IiwiXHUwNjQ1XHUwNjI2XHUwNmNjIiwiXHUwNjJjXHUwNjQ4XHUwNjQ2IiwiXHUwNjJjXHUwNjQ4XHUwNjQ0XHUwNjI3XHUwNjI2XHUwNmNjIiwiXHUwNjI3XHUwNmFmXHUwNjMzXHUwNjJhIiwiXHUw''@;'; put 'put ''NjMzXHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjI3XHUwNmE5XHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUwNjQ4XHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjJmXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl0sRT1bIlx1MDYyN1x1MDYyYVx1MDY0OFx1MDYyN1x1''@;'; put 'put ''MDYzMSIsIlx1MDY3ZVx1MDZjY1x1MDYzMSIsIlx1MDY0NVx1MDY0Nlx1MDZhZlx1MDY0NCIsIlx1MDYyOFx1MDYyZlx1MDZiZSIsIlx1MDYyY1x1MDY0NVx1MDYzOVx1MDYzMVx1MDYyN1x1MDYyYSIsIlx1MDYyY1x1MDY0NVx1MDYzOVx1MDZjMSIsIlx1MDZjMVx1MDY0MVx1MDYyYVx1MDZj''@;'; put 'put ''MSJdO2dlLmRlZmluZUxvY2FsZSgidXIiLHttb250aHM6Qixtb250aHNTaG9ydDpCLHdlZWtkYXlzOkUsd2Vla2RheXNTaG9ydDpFLHdlZWtkYXlzTWluOkUsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixM''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkXHUwNjBjIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1XHUwNjI4XHUwNjJkfFx1MDYzNFx1MDYyN1x1MDY0NS8saXNQTTpmdW5jdGlvbihVKXtyZXR1cm4iXHUwNjM0XHUwNjI3XHUwNjQ1Ij09PVV9LG1l''@;'; put 'put ''cmlkaWVtOmZ1bmN0aW9uKFUsUSxaKXtyZXR1cm4gVTwxMj8iXHUwNjM1XHUwNjI4XHUwNjJkIjoiXHUwNjM0XHUwNjI3XHUwNjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjJcdTA2MmMgXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIsbmV4dERheToiW1x1MDZhOVx1MDY0NCBc''@;'; put 'put ''dTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIsbGFzdERheToiW1x1MDZhZlx1MDYzMFx1MDYzNFx1MDYyYVx1MDZjMSBcdTA2MzFcdTA2NDhcdTA2MzIgXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIs''@;'; put 'put ''bGFzdFdlZWs6IltcdTA2YWZcdTA2MzBcdTA2MzRcdTA2MmFcdTA2YzFdIGRkZGQgW1x1MDYyOFx1MDY0OFx1MDY0Mlx1MDYyYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDYyOFx1MDYzOVx1MDYyZiIscGFzdDoiJXMgXHUwNjQyXHUwNjI4XHUwNjQ0''@;'; put 'put ''IixzOiJcdTA2ODZcdTA2NDZcdTA2MmYgXHUwNjMzXHUwNmNjXHUwNmE5XHUwNjQ2XHUwNjg4IixzczoiJWQgXHUwNjMzXHUwNmNjXHUwNmE5XHUwNjQ2XHUwNjg4IixtOiJcdTA2MjdcdTA2Y2NcdTA2YTkgXHUwNjQ1XHUwNjQ2XHUwNjc5IixtbToiJWQgXHUwNjQ1XHUwNjQ2XHUwNjc5Iixo''@;'; put 'put ''OiJcdTA2MjdcdTA2Y2NcdTA2YTkgXHUwNmFmXHUwNmJlXHUwNjQ2XHUwNjc5XHUwNmMxIixoaDoiJWQgXHUwNmFmXHUwNmJlXHUwNjQ2XHUwNjc5XHUwNmQyIixkOiJcdTA2MjdcdTA2Y2NcdTA2YTkgXHUwNjJmXHUwNjQ2IixkZDoiJWQgXHUwNjJmXHUwNjQ2IixNOiJcdTA2MjdcdTA2Y2Nc''@;'; put 'put ''dTA2YTkgXHUwNjQ1XHUwNjI3XHUwNmMxIixNTToiJWQgXHUwNjQ1XHUwNjI3XHUwNmMxIix5OiJcdTA2MjdcdTA2Y2NcdTA2YTkgXHUwNjMzXHUwNjI3XHUwNjQ0Iix5eToiJWQgXHUwNjMzXHUwNjI3XHUwNjQ0In0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXHUw''@;'; put 'put ''NjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxMjIwNzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2Nh''@;'; put 'put ''bGUoInV6LWxhdG4iLHttb250aHM6IllhbnZhcl9GZXZyYWxfTWFydF9BcHJlbF9NYXlfSXl1bl9JeXVsX0F2Z3VzdF9TZW50YWJyX09rdGFicl9Ob3lhYnJfRGVrYWJyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJZYW5fRmV2X01hcl9BcHJfTWF5X0l5dW5fSXl1bF9BdmdfU2VuX09rdF9O''@;'; put 'put ''b3lfRGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJZYWtzaGFuYmFfRHVzaGFuYmFfU2VzaGFuYmFfQ2hvcnNoYW5iYV9QYXlzaGFuYmFfSnVtYV9TaGFuYmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiWWFrX0R1c2hfU2VzaF9DaG9yX1BheV9KdW1fU2hhbiIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c01pbjoiWWFfRHVfU2VfQ2hvX1BhX0p1X1NoYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6IkQgTU1NTSBZWVlZLCBkZGRk''@;'; put 'put ''IEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltCdWd1biBzb2F0XSBMVCBbZGFdIixuZXh0RGF5OiJbRXJ0YWdhXSBMVCBbZGFdIixuZXh0V2VlazoiZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdIixsYXN0RGF5OiJbS2VjaGEgc29hdF0gTFQgW2RhXSIsbGFzdFdlZWs6IltPJ3RnYW5dIGRk''@;'; put 'put ''ZGQgW2t1bmkgc29hdF0gTFQgW2RhXSIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiWWFxaW4gJXMgaWNoaWRhIixwYXN0OiJCaXIgbmVjaGEgJXMgb2xkaW4iLHM6InNvbml5YSIsc3M6IiVkIHNvbml5YSIsbToiYmlyIGRhcWlxYSIsbW06IiVkIGRhcWlxYSIsaDoiYmly''@;'; put 'put ''IHNvYXQiLGhoOiIlZCBzb2F0IixkOiJiaXIga3VuIixkZDoiJWQga3VuIixNOiJiaXIgb3kiLE1NOiIlZCBveSIseToiYmlyIHlpbCIseXk6IiVkIHlpbCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDIyODYyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgidXoiLHttb250aHM6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MF9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYl9c''@;'; put 'put ''dTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkX1x1MDQzOFx1MDQ0ZVx1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQz''@;'; put 'put ''MVx1MDQ0MF9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0NGZcdTA0M2RcdTA0MzJfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MzBc''@;'; put 'put ''dTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZF9cdTA0MzhcdTA0NGVcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZF9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNlXHUwNDRmX1x1MDQzNFx1MDQzNVx1MDQzYSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDJmXHUwNDNhXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQxNFx1MDQ0M1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0MjFcdTA0MzVcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDI3XHUwNDNlXHUw''@;'; put 'put ''NDQwXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQxZlx1MDQzMFx1MDQzOVx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0MTZcdTA0NDNcdTA0M2NcdTA0MzBfXHUwNDI4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6''@;'; put 'put ''Ilx1MDQyZlx1MDQzYVx1MDQ0OF9cdTA0MTRcdTA0NDNcdTA0NDhfXHUwNDIxXHUwNDM1XHUwNDQ4X1x1MDQyN1x1MDQzZVx1MDQ0MF9cdTA0MWZcdTA0MzBcdTA0MzlfXHUwNDE2XHUwNDQzXHUwNDNjX1x1MDQyOFx1MDQzMFx1MDQzZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDJm''@;'; put 'put ''XHUwNDNhX1x1MDQxNFx1MDQ0M19cdTA0MjFcdTA0MzVfXHUwNDI3XHUwNDNlX1x1MDQxZlx1MDQzMF9cdTA0MTZcdTA0NDNfXHUwNDI4XHUwNDMwIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0g''@;'; put 'put ''WVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxMVx1MDQ0M1x1MDQzM1x1MDQ0M1x1MDQzZCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJdIExUIFtcdTA0MzRcdTA0MzBdIixuZXh0RGF5''@;'; put 'put ''OiJbXHUwNDJkXHUwNDQwXHUwNDQyXHUwNDMwXHUwNDMzXHUwNDMwXSBMVCBbXHUwNDM0XHUwNDMwXSIsbmV4dFdlZWs6ImRkZGQgW1x1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzOCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJdIExUIFtcdTA0MzRcdTA0MzBdIixsYXN0RGF5OiJbXHUwNDFhXHUw''@;'; put 'put ''NDM1XHUwNDQ3XHUwNDMwIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLGxhc3RXZWVrOiJbXHUwNDIzXHUwNDQyXHUwNDMzXHUwNDMwXHUwNDNkXSBkZGRkIFtcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzggXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXSBMVCBb''@;'; put 'put ''XHUwNDM0XHUwNDMwXSIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDJmXHUwNDNhXHUwNDM4XHUwNDNkICVzIFx1MDQzOFx1MDQ0N1x1MDQzOFx1MDQzNFx1MDQzMCIscGFzdDoiXHUwNDExXHUwNDM4XHUwNDQwIFx1MDQzZFx1MDQzNVx1MDQ0N1x1MDQzMCAlcyBc''@;'; put 'put ''dTA0M2VcdTA0M2JcdTA0MzRcdTA0MzhcdTA0M2QiLHM6Ilx1MDQ0NFx1MDQ0M1x1MDQ0MFx1MDQ0MVx1MDQzMFx1MDQ0MiIsc3M6IiVkIFx1MDQ0NFx1MDQ0M1x1MDQ0MFx1MDQ0MVx1MDQzMFx1MDQ0MiIsbToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzNFx1MDQzMFx1MDQzYVx1MDQzOFx1''@;'; put 'put ''MDQzYVx1MDQzMCIsbW06IiVkIFx1MDQzNFx1MDQzMFx1MDQzYVx1MDQzOFx1MDQzYVx1MDQzMCIsaDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0MiIsZDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQz''@;'; put 'put ''YVx1MDQ0M1x1MDQzZCIsZGQ6IiVkIFx1MDQzYVx1MDQ0M1x1MDQzZCIsTToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzZVx1MDQzOSIsTU06IiVkIFx1MDQzZVx1MDQzOSIseToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzOVx1MDQzOFx1MDQzYiIseXk6IiVkIFx1MDQzOVx1MDQzOFx1MDQz''@;'; put 'put ''YiJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDQ4MDkzOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgidmkiLHttb250aHM6InRoXHhlMW5nIDFfdGhceGUxbmcgMl90aFx4ZTFuZyAzX3RoXHhlMW5nIDRfdGhc''@;'; put 'put ''eGUxbmcgNV90aFx4ZTFuZyA2X3RoXHhlMW5nIDdfdGhceGUxbmcgOF90aFx4ZTFuZyA5X3RoXHhlMW5nIDEwX3RoXHhlMW5nIDExX3RoXHhlMW5nIDEyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJUaGcgMDFfVGhnIDAyX1RoZyAwM19UaGcgMDRfVGhnIDA1X1RoZyAwNl9UaGcgMDdfVGhn''@;'; put 'put ''IDA4X1RoZyAwOV9UaGcgMTBfVGhnIDExX1RoZyAxMiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJjaFx1MWVlNyBuaFx1MWVhZHRfdGhcdTFlZTkgaGFpX3RoXHUxZWU5IGJhX3RoXHUxZWU5IHRcdTAxYjBfdGhcdTFlZTkgblx1MDEwM21fdGhcdTFlZTkgc1x4''@;'; put 'put ''ZTF1X3RoXHUxZWU5IGJcdTFlYTN5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbWVyaWRpZW1QYXJzZTov''@;'; put 'put ''c2F8Y2gvaSxpc1BNOmZ1bmN0aW9uKEUpe3JldHVybi9eY2gkL2kudGVzdChFKX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxNZSxVKXtyZXR1cm4gRTwxMj9VPyJzYSI6IlNBIjpVPyJjaCI6IkNIIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZ''@;'; put 'put ''WSIsTEw6IkQgTU1NTSBbblx1MDEwM21dIFlZWVkiLExMTDoiRCBNTU1NIFtuXHUwMTAzbV0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFtuXHUwMTAzbV0gWVlZWSBISDptbSIsbDoiREQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxs''@;'; put 'put ''OiJkZGQsIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hceGY0bSBuYXkgbFx4ZmFjXSBMVCIsbmV4dERheToiW05nXHhlMHkgbWFpIGxceGZhY10gTFQiLG5leHRXZWVrOiJkZGRkIFt0dVx1MWVhN24gdFx1MWVkYmkgbFx4ZmFjXSBMVCIsbGFzdERheToiW0hceGY0''@;'; put 'put ''bSBxdWEgbFx4ZmFjXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3R1XHUxZWE3biB0clx1MDFiMFx1MWVkYmMgbFx4ZmFjXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgdFx1MWVkYmkiLHBhc3Q6IiVzIHRyXHUwMWIwXHUxZWRiYyIsczoidlx4ZTBpIGdpXHhlMnki''@;'; put 'put ''LHNzOiIlZCBnaVx4ZTJ5IixtOiJtXHUxZWQ5dCBwaFx4ZmF0IixtbToiJWQgcGhceGZhdCIsaDoibVx1MWVkOXQgZ2lcdTFlZGQiLGhoOiIlZCBnaVx1MWVkZCIsZDoibVx1MWVkOXQgbmdceGUweSIsZGQ6IiVkIG5nXHhlMHkiLHc6Im1cdTFlZDl0IHR1XHUxZWE3biIsd3c6IiVkIHR1XHUx''@;'; put 'put ''ZWE3biIsTToibVx1MWVkOXQgdGhceGUxbmciLE1NOiIlZCB0aFx4ZTFuZyIseToibVx1MWVkOXQgblx1MDEwM20iLHl5OiIlZCBuXHUwMTAzbSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6ZnVuY3Rpb24oRSl7cmV0dXJuIEV9LHdlZWs6e2RvdzoxLGRveTo0''@;'; put 'put ''fX0pfShMKDE1NDM5KSl9LDI1NTkwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgieC1wc2V1ZG8iLHttb250aHM6Ikp+XHhlMVx4ZjFceGZhXHhlMX5yXHhmZF9Gflx4ZTliclx4ZmF+XHhlMXJceGZkX35NXHhlMXJjfmhfXHhj''@;'; put 'put ''MXB+clx4ZWRsX35NXHhlMVx4ZmRffkpceGZhXHhmMVx4ZTl+X0pceGZhbH5ceGZkX1x4YzFceGZhfmdceGZhc3R+X1NceGU5cH50XHhlOW1iflx4ZTlyX1x4ZDN+Y3RceGYzYn5ceGU5cl9ceGQxflx4ZjN2XHhlOW1+Ylx4ZTlyX35EXHhlOWNceGU5fm1iXHhlOXIiLnNwbGl0KCJfIiksbW9u''@;'; put 'put ''dGhzU2hvcnQ6Ikp+XHhlMVx4ZjFffkZceGU5Yl9+TVx4ZTFyX35ceGMxcHJffk1ceGUxXHhmZF9+Slx4ZmFceGYxX35KXHhmYWxfflx4YzFceGZhZ19+U1x4ZTlwX35ceGQzY3Rfflx4ZDFceGYzdl9+RFx4ZTljIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlN+''@;'; put 'put ''XHhmYVx4ZjFkXHhlMX5ceGZkX01ceGYzflx4ZjFkXHhlMVx4ZmR+X1RceGZhXHhlOX5zZFx4ZTFceGZkfl9XXHhlOWR+XHhmMVx4ZTlzZH5ceGUxXHhmZF9UfmhceGZhcnN+ZFx4ZTFceGZkX35Gclx4ZWRkflx4ZTFceGZkX1N+XHhlMXRceGZhcn5kXHhlMVx4ZmQiLnNwbGl0KCJfIiksd2Vl''@;'; put 'put ''a2RheXNTaG9ydDoiU35ceGZhXHhmMV9+TVx4ZjNceGYxX35UXHhmYVx4ZTlffldceGU5ZF9+VGhceGZhX35Gclx4ZWRfflNceGUxdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU35ceGZhX01ceGYzfl9UXHhmYV9+V1x4ZTlfVH5oX0Zyfl9TXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Bh''@;'; put 'put ''cnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVH5ceGYzZFx4ZTF+XHhmZCBc''@;'; put 'put ''eGUxdF0gTFQiLG5leHREYXk6IltUflx4ZjNtXHhmM35yclx4ZjN+dyBceGUxdF0gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUxdF0gTFQiLGxhc3REYXk6IltceGRkflx4ZTlzdH5ceGU5cmRceGUxflx4ZmQgXHhlMXRdIExUIixsYXN0V2VlazoiW0x+XHhlMXN0XSBkZGRkIFtceGUxdF0gTFQi''@;'; put 'put ''LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx4ZWR+XHhmMSAlcyIscGFzdDoiJXMgXHhlMX5nXHhmMyIsczoiXHhlMSB+Zlx4ZTl3IH5zXHhlOWNceGYzflx4ZjFkcyIsc3M6IiVkIHN+XHhlOWNceGYzXHhmMX5kcyIsbToiXHhlMSB+bVx4ZWRceGYxflx4ZmF0XHhlOSIs''@;'; put 'put ''bW06IiVkIG1+XHhlZFx4ZjFceGZhfnRceGU5cyIsaDoiXHhlMX5ceGYxIGhceGYzflx4ZmFyIixoaDoiJWQgaH5ceGYzXHhmYXJzIixkOiJceGUxIH5kXHhlMVx4ZmQiLGRkOiIlZCBkflx4ZTFceGZkcyIsTToiXHhlMSB+bVx4ZjNceGYxfnRoIixNTToiJWQgbX5ceGYzXHhmMXR+aHMiLHk6''@;'; put 'put ''Ilx4ZTEgflx4ZmRceGU5XHhlMXIiLHl5OiIlZCBceGZkflx4ZTlceGUxcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHRofHN0fG5kfHJkKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgTWU9RSUxMDtyZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyJ0aCI6MT09PU1lPyJz''@;'; put 'put ''dCI6Mj09PU1lPyJuZCI6Mz09PU1lPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDkwNTg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJ5byIse21vbnRoczoiU1x1MWViOVx1MDMwMXJcdTFl''@;'; put 'put ''YjlcdTAzMDFfRVx1MDMwMHJlXHUwMzAwbGVcdTAzMDBfXHUxZWI4clx1MWViOVx1MDMwMG5hXHUwMzAwX0lcdTAzMDBnYmVcdTAzMDFfRVx1MDMwMGJpYmlfT1x1MDMwMGt1XHUwMzAwZHVfQWdcdTFlYjltb19PXHUwMzAwZ3VcdTAzMDFuX093ZXdlX1x1MWVjY1x1MDMwMHdhXHUwMzAwcmFc''@;'; put 'put ''dTAzMDBfQmVcdTAzMDFsdVx1MDMwMV9cdTFlY2NcdTAzMDBwXHUxZWI5XHUwMzAwXHUwMzAwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJTXHUxZWI5XHUwMzAxcl9FXHUwMzAwcmxfXHUxZWI4cm5fSVx1MDMwMGdiX0VcdTAzMDBiaV9PXHUwMzAwa3VcdTAzMDBfQWdcdTFlYjlfT1x1MDMw''@;'; put 'put ''MGd1XHUwMzAxX093ZV9cdTFlY2NcdTAzMDB3YVx1MDMwMF9CZVx1MDMwMWxfXHUxZWNjXHUwMzAwcFx1MWViOVx1MDMwMFx1MDMwMCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQVx1MDMwMGlcdTAzMDBrdVx1MDMwMV9BamVcdTAzMDFfSVx1MDMwMHNcdTFlYjlcdTAzMDFndW5fXHUxZWNjalx1''@;'; put 'put ''MWVjZFx1MDMwMXJ1XHUwMzAxX1x1MWVjY2pcdTFlY2RcdTAzMDFiXHUxZWNkX1x1MWViOHRpXHUwMzAwX0FcdTAzMDBiYVx1MDMwMW1cdTFlYjlcdTAzMDF0YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJBXHUwMzAwaVx1MDMwMGtfQWplXHUwMzAxX0lcdTAzMDBzXHUxZWI5XHUwMzAx''@;'; put 'put ''X1x1MWVjY2pyX1x1MWVjY2piX1x1MWViOHRpXHUwMzAwX0FcdTAzMDBiYVx1MDMwMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQVx1MDMwMGlcdTAzMDBfQWpfSVx1MDMwMHNfXHUxZWNjcl9cdTFlY2NiX1x1MWViOHRfQVx1MDMwMGIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xU''@;'; put 'put ''OiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW09cdTAzMDBuaVx1MDMwMCBuaV0gTFQiLG5leHRE''@;'; put 'put ''YXk6IltcdTFlY2NcdTAzMDBsYSBuaV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTFlY2NzXHUxZWI5XHUwMzAwIHRvXHUwMzAxbidiXHUxZWNkXSBbbmldIExUIixsYXN0RGF5OiJbQVx1MDMwMG5hIG5pXSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MWVjY3NcdTFlYjlcdTAzMDAgdG9cdTAzMDFs''@;'; put 'put ''XHUxZWNkXHUwMzAxXSBbbmldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuaVx1MDMwMSAlcyIscGFzdDoiJXMga1x1MWVjZGphXHUwMzAxIixzOiJpXHUwMzAwc1x1MWViOWp1XHUwMzAxIGFheWFcdTAzMDEgZGllIixzczoiYWF5YVx1MDMwMSAlZCIsbToiaVx1''@;'; put 'put ''MDMwMHNcdTFlYjlqdVx1MDMwMSBrYW4iLG1tOiJpXHUwMzAwc1x1MWViOWp1XHUwMzAxICVkIixoOiJ3YVx1MDMwMWthdGkga2FuIixoaDoid2FcdTAzMDFrYXRpICVkIixkOiJcdTFlY2RqXHUxZWNkXHUwMzAxIGthbiIsZGQ6Ilx1MWVjZGpcdTFlY2RcdTAzMDEgJWQiLE06Im9zdVx1MDMw''@;'; put 'put ''MCBrYW4iLE1NOiJvc3VcdTAzMDAgJWQiLHk6Ilx1MWVjZGR1XHUwMzAxbiBrYW4iLHl5OiJcdTFlY2RkdVx1MDMwMW4gJWQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cdTFlY2RqXHUxZWNkXHUwMzAxXHNcZHsxLDJ9LyxvcmRpbmFsOiJcdTFlY2RqXHUxZWNkXHUwMzAxICVkIix3ZWVr''@;'; put 'put ''Ontkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw3NzkwODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoInpoLWNuIix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJcdTY3MDhf''@;'; put 'put ''XHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9cdTRlMDNcdTY3MDhfXHU1MTZiXHU2NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3MDhfXHU1MzQxXHU0ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhf''@;'; put 'put ''NFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYxZlx1Njcx''@;'; put 'put ''Zlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJfXHU2NjFmXHU2NzFmXHU0ZTk0X1x1NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTU0NjhcdTY1ZTVfXHU1NDY4XHU0ZTAwX1x1NTQ2OFx1NGU4Y19cdTU0NjhcdTRlMDlfXHU1NDY4XHU1NmRiX1x1NTQ2OFx1''@;'; put 'put ''NGU5NF9cdTU0NjhcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1NjVlNV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2ZGJfXHU0ZTk0X1x1NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoi''@;'; put 'put ''WVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNUFoXHU3MGI5bW1cdTUyMDYiLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGRBaFx1NzBiOW1tXHU1MjA2IixsOiJZWVlZL00vRCIsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVl''@;'; put 'put ''NSIsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLGxsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTUxY2NcdTY2Njh8XHU2NWU5XHU0ZTBhfFx1NGUwYVx1NTM0OHxcdTRlMmRcdTUzNDh8XHU0ZTBiXHU1MzQ4fFx1''@;'; put 'put ''NjY1YVx1NGUwYS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEUsTWUpe3JldHVybiAxMj09PUUmJihFPTApLCJcdTUxY2NcdTY2NjgiPT09TWV8fCJcdTY1ZTlcdTRlMGEiPT09TWV8fCJcdTRlMGFcdTUzNDgiPT09TWU/RToiXHU0ZTBiXHU1MzQ4Ij09PU1lfHwiXHU2NjVhXHU0ZTBhIj09PU1l''@;'; put 'put ''P0UrMTI6RT49MTE/RTpFKzEyfSxtZXJpZGllbTpmdW5jdGlvbihFLE1lLFUpe3ZhciBRPTEwMCpFK01lO3JldHVybiBRPDYwMD8iXHU1MWNjXHU2NjY4IjpRPDkwMD8iXHU2NWU5XHU0ZTBhIjpRPDExMzA/Ilx1NGUwYVx1NTM0OCI6UTwxMjMwPyJcdTRlMmRcdTUzNDgiOlE8MTgwMD8iXHU0''@;'; put 'put ''ZTBiXHU1MzQ4IjoiXHU2NjVhXHU0ZTBhIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTRlY2FcdTU5MjldTFQiLG5leHREYXk6IltcdTY2MGVcdTU5MjldTFQiLG5leHRXZWVrOmZ1bmN0aW9uKEUpe3JldHVybiBFLndlZWsoKSE9PXRoaXMud2VlaygpPyJbXHU0ZTBiXWRkZExUIjoiW1x1Njcy''@;'; put 'put ''Y11kZGRMVCJ9LGxhc3REYXk6IltcdTY2MjhcdTU5MjldTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLndlZWsoKSE9PUUud2VlaygpPyJbXHU0ZTBhXWRkZExUIjoiW1x1NjcyY11kZGRMVCJ9LHNhbWVFbHNlOiJMIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwy''@;'; put 'put ''fShcdTY1ZTV8XHU2NzA4fFx1NTQ2OCkvLG9yZGluYWw6ZnVuY3Rpb24oRSxNZSl7c3dpdGNoKE1lKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBFKyJcdTY1ZTUiO2Nhc2UiTSI6cmV0dXJuIEUrIlx1NjcwOCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBFKyJcdTU0NjgiO2Rl''@;'; put 'put ''ZmF1bHQ6cmV0dXJuIEV9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTU0MGUiLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTUxZTBcdTc5ZDIiLHNzOiIlZCBcdTc5ZDIiLG06IjEgXHU1MjA2XHU5NDlmIixtbToiJWQgXHU1MjA2XHU5NDlmIixoOiIxIFx1NWMwZlx1NjVmNiIsaGg6IiVkIFx1''@;'; put 'put ''NWMwZlx1NjVmNiIsZDoiMSBcdTU5MjkiLGRkOiIlZCBcdTU5MjkiLHc6IjEgXHU1NDY4Iix3dzoiJWQgXHU1NDY4IixNOiIxIFx1NGUyYVx1NjcwOCIsTU06IiVkIFx1NGUyYVx1NjcwOCIseToiMSBcdTVlNzQiLHl5OiIlZCBcdTVlNzQifSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQz''@;'; put 'put ''OSkpfSw4ODY3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2dlLmRlZmluZUxvY2FsZSgiemgtaGsiLHttb250aHM6Ilx1NGUwMFx1NjcwOF9cdTRlOGNcdTY3MDhfXHU0ZTA5XHU2NzA4X1x1NTZkYlx1NjcwOF9cdTRlOTRcdTY3MDhfXHU1MTZkXHU2NzA4''@;'; put 'put ''X1x1NGUwM1x1NjcwOF9cdTUxNmJcdTY3MDhfXHU0ZTVkXHU2NzA4X1x1NTM0MVx1NjcwOF9cdTUzNDFcdTRlMDBcdTY3MDhfXHU1MzQxXHU0ZThjXHU2NzA4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2NzA4XzVcdTY3MDhfNlx1NjcwOF83''@;'; put 'put ''XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHU2NjFmXHU2NzFmXHU2NWU1X1x1NjYxZlx1NjcxZlx1NGUwMF9cdTY2MWZcdTY3MWZcdTRlOGNfXHU2NjFmXHU2NzFmXHU0ZTA5X1x1NjYxZlx1NjcxZlx1NTZk''@;'; put 'put ''Yl9cdTY2MWZcdTY3MWZcdTRlOTRfXHU2NjFmXHU2NzFmXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1OTAzMVx1NjVlNV9cdTkwMzFcdTRlMDBfXHU5MDMxXHU0ZThjX1x1OTAzMVx1NGUwOV9cdTkwMzFcdTU2ZGJfXHU5MDMxXHU0ZTk0X1x1OTAzMVx1NTE2ZCIuc3BsaXQo''@;'; put 'put ''Il8iKSx3ZWVrZGF5c01pbjoiXHU2NWU1X1x1NGUwMF9cdTRlOGNfXHU0ZTA5X1x1NTZkYl9cdTRlOTRfXHU1MTZkIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUi''@;'; put 'put ''LExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixMTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIixsOiJZWVlZL00vRCIsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLGxsbGw6''@;'; put 'put ''IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTUxY2NcdTY2Njh8XHU2NWU5XHU0ZTBhfFx1NGUwYVx1NTM0OHxcdTRlMmRcdTUzNDh8XHU0ZTBiXHU1MzQ4fFx1NjY1YVx1NGUwYS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEUsTWUpe3JldHVy''@;'; put 'put ''biAxMj09PUUmJihFPTApLCJcdTUxY2NcdTY2NjgiPT09TWV8fCJcdTY1ZTlcdTRlMGEiPT09TWV8fCJcdTRlMGFcdTUzNDgiPT09TWU/RToiXHU0ZTJkXHU1MzQ4Ij09PU1lP0U+PTExP0U6RSsxMjoiXHU0ZTBiXHU1MzQ4Ij09PU1lfHwiXHU2NjVhXHU0ZTBhIj09PU1lP0UrMTI6dm9pZCAw''@;'; put 'put ''fSxtZXJpZGllbTpmdW5jdGlvbihFLE1lLFUpe3ZhciBRPTEwMCpFK01lO3JldHVybiBRPDYwMD8iXHU1MWNjXHU2NjY4IjpRPDkwMD8iXHU2NWU5XHU0ZTBhIjpRPDEyMDA/Ilx1NGUwYVx1NTM0OCI6MTIwMD09PVE/Ilx1NGUyZFx1NTM0OCI6UTwxODAwPyJcdTRlMGJcdTUzNDgiOiJcdTY2''@;'; put 'put ''NWFcdTRlMGEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1NGVjYVx1NTkyOV1MVCIsbmV4dERheToiW1x1NjYwZVx1NTkyOV1MVCIsbmV4dFdlZWs6IltcdTRlMGJdZGRkZExUIixsYXN0RGF5OiJbXHU2NjI4XHU1OTI5XUxUIixsYXN0V2VlazoiW1x1NGUwYV1kZGRkTFQiLHNhbWVFbHNlOiJM''@;'; put 'put ''In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdTY1ZTV8XHU2NzA4fFx1OTAzMSkvLG9yZGluYWw6ZnVuY3Rpb24oRSxNZSl7c3dpdGNoKE1lKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBFKyJcdTY1ZTUiO2Nhc2UiTSI6cmV0dXJuIEUrIlx1NjcwOCI7Y2Fz''@;'; put 'put ''ZSJ3IjpjYXNlIlciOnJldHVybiBFKyJcdTkwMzEiO2RlZmF1bHQ6cmV0dXJuIEV9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTVmOGMiLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTVlN2VcdTc5ZDIiLHNzOiIlZCBcdTc5ZDIiLG06IjEgXHU1MjA2XHU5NDE4IixtbToiJWQgXHU1MjA2XHU5''@;'; put 'put ''NDE4IixoOiIxIFx1NWMwZlx1NjY0MiIsaGg6IiVkIFx1NWMwZlx1NjY0MiIsZDoiMSBcdTU5MjkiLGRkOiIlZCBcdTU5MjkiLE06IjEgXHU1MDBiXHU2NzA4IixNTToiJWQgXHU1MDBiXHU2NzA4Iix5OiIxIFx1NWU3NCIseXk6IiVkIFx1NWU3NCJ9fSl9KEwoMTU0MzkpKX0sMzExMzM6ZnVu''@;'; put 'put ''Y3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZGVmaW5lTG9jYWxlKCJ6aC1tbyIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4''@;'; put 'put ''X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1Njcw''@;'; put 'put ''OF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1Njcx''@;'; put 'put ''Zlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMxXHU0ZTA5X1x1OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5MDMxXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''TWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1''@;'; put 'put ''ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IkQvTS9ZWVlZIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1c''@;'; put 'put ''dTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxNZSl7cmV0dXJuIDEyPT09RSYmKEU9''@;'; put 'put ''MCksIlx1NTFjY1x1NjY2OCI9PT1NZXx8Ilx1NjVlOVx1NGUwYSI9PT1NZXx8Ilx1NGUwYVx1NTM0OCI9PT1NZT9FOiJcdTRlMmRcdTUzNDgiPT09TWU/RT49MTE/RTpFKzEyOiJcdTRlMGJcdTUzNDgiPT09TWV8fCJcdTY2NWFcdTRlMGEiPT09TWU/RSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1''@;'; put 'put ''bmN0aW9uKEUsTWUsVSl7dmFyIFE9MTAwKkUrTWU7cmV0dXJuIFE8NjAwPyJcdTUxY2NcdTY2NjgiOlE8OTAwPyJcdTY1ZTlcdTRlMGEiOlE8MTEzMD8iXHU0ZTBhXHU1MzQ4IjpRPDEyMzA/Ilx1NGUyZFx1NTM0OCI6UTwxODAwPyJcdTRlMGJcdTUzNDgiOiJcdTY2NWFcdTRlMGEifSxjYWxl''@;'; put 'put ''bmRhcjp7c2FtZURheToiW1x1NGVjYVx1NTkyOV0gTFQiLG5leHREYXk6IltcdTY2MGVcdTU5MjldIExUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkIExUIixsYXN0RGF5OiJbXHU2NjI4XHU1OTI5XSBMVCIsbGFzdFdlZWs6IltcdTRlMGFdZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxkYXlPZk1v''@;'; put 'put ''bnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbihFLE1lKXtzd2l0Y2goTWUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIEUrIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gRSsiXHU2NzA4IjtjYXNlInciOmNhc2Ui''@;'; put 'put ''VyI6cmV0dXJuIEUrIlx1OTAzMSI7ZGVmYXVsdDpyZXR1cm4gRX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NTE2NyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NWU3ZVx1NzlkMiIsc3M6IiVkIFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0MTgiLG1tOiIlZCBcdTUyMDZcdTk0MTgiLGg6IjEg''@;'; put 'put ''XHU1YzBmXHU2NjQyIixoaDoiJWQgXHU1YzBmXHU2NjQyIixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsTToiMSBcdTUwMGJcdTY3MDgiLE1NOiIlZCBcdTUwMGJcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In19KX0oTCgxNTQzOSkpfSw4MzI5MTpmdW5jdGlvbihYZSxK''@;'; put 'put ''ZSxMKXshZnVuY3Rpb24oZ2UpeyJ1c2Ugc3RyaWN0IjtnZS5kZWZpbmVMb2NhbGUoInpoLXR3Iix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJcdTY3MDhfXHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9cdTRlMDNcdTY3MDhfXHU1MTZiXHU2''@;'; put 'put ''NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3MDhfXHU1MzQxXHU0ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhf''@;'; put 'put ''MTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYxZlx1NjcxZlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJfXHU2NjFmXHU2NzFmXHU0ZTk0X1x1''@;'; put 'put ''NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTkwMzFcdTY1ZTVfXHU5MDMxXHU0ZTAwX1x1OTAzMVx1NGU4Y19cdTkwMzFcdTRlMDlfXHU5MDMxXHU1NmRiX1x1OTAzMVx1NGU5NF9cdTkwMzFcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1NjVl''@;'; put 'put ''NV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2ZGJfXHU0ZTk0X1x1NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRNXHU2NzA4''@;'; put 'put ''RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSIsbDoiWVlZWS9NL0QiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1''@;'; put 'put ''ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihFLE1lKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwiXHU1MWNj''@;'; put 'put ''XHU2NjY4Ij09PU1lfHwiXHU2NWU5XHU0ZTBhIj09PU1lfHwiXHU0ZTBhXHU1MzQ4Ij09PU1lP0U6Ilx1NGUyZFx1NTM0OCI9PT1NZT9FPj0xMT9FOkUrMTI6Ilx1NGUwYlx1NTM0OCI9PT1NZXx8Ilx1NjY1YVx1NGUwYSI9PT1NZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxN''@;'; put 'put ''ZSxVKXt2YXIgUT0xMDAqRStNZTtyZXR1cm4gUTw2MDA/Ilx1NTFjY1x1NjY2OCI6UTw5MDA/Ilx1NjVlOVx1NGUwYSI6UTwxMTMwPyJcdTRlMGFcdTUzNDgiOlE8MTIzMD8iXHU0ZTJkXHU1MzQ4IjpRPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1l''@;'; put 'put ''RGF5OiJbXHU0ZWNhXHU1OTI5XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NTkyOV0gTFQiLG5leHRXZWVrOiJbXHU0ZTBiXWRkZGQgTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldIExUIixsYXN0V2VlazoiW1x1NGUwYV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFs''@;'; put 'put ''UGFyc2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTkwMzEpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsTWUpe3N3aXRjaChNZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gRSsiXHU2NWU1IjtjYXNlIk0iOnJldHVybiBFKyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4g''@;'; put 'put ''RSsiXHU5MDMxIjtkZWZhdWx0OnJldHVybiBFfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1ZjhjIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1ZTdlXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIxIFx1NTIwNlx1OTQxOCIsbW06IiVkIFx1NTIwNlx1OTQxOCIsaDoiMSBcdTVjMGZcdTY2''@;'; put 'put ''NDIiLGhoOiIlZCBcdTVjMGZcdTY2NDIiLGQ6IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5IixNOiIxIFx1NTAwYlx1NjcwOCIsTU06IiVkIFx1NTAwYlx1NjcwOCIseToiMSBcdTVlNzQiLHl5OiIlZCBcdTVlNzQifX0pfShMKDE1NDM5KSl9LDE1NDM5OmZ1bmN0aW9uKFhlLEplLEwpeyhYZT1M''@;'; put 'put ''Lm5tZChYZSkpLmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGdlLHNlO2Z1bmN0aW9uIEIoKXtyZXR1cm4gZ2UuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIE1lKFdlKXtyZXR1cm4gV2UgaW5zdGFuY2VvZiBBcnJheXx8IltvYmplY3QgQXJyYXldIj09PU9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChXZSl9ZnVuY3Rpb24gVShXZSl7cmV0dXJuIG51bGwhPVdlJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChXZSl9ZnVuY3Rpb24gUShXZSxPdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3du''@;'; put 'put ''UHJvcGVydHkuY2FsbChXZSxPdCl9ZnVuY3Rpb24gWihXZSl7aWYoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMpcmV0dXJuIDA9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXZSkubGVuZ3RoO3ZhciBPdDtmb3IoT3QgaW4gV2UpaWYoUShXZSxPdCkpcmV0dXJuITE7cmV0dXJuITB9''@;'; put 'put ''ZnVuY3Rpb24gaWUoV2Upe3JldHVybiB2b2lkIDA9PT1XZX1mdW5jdGlvbiBsZShXZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBXZXx8IltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoV2UpfWZ1bmN0aW9uIFkoV2Upe3JldHVybiBXZSBpbnN0YW5j''@;'; put 'put ''ZW9mIERhdGV8fCJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChXZSl9ZnVuY3Rpb24gVyhXZSxPdCl7dmFyIEJuLGRuPVtdLHRyPVdlLmxlbmd0aDtmb3IoQm49MDtCbjx0cjsrK0JuKWRuLnB1c2goT3QoV2VbQm5dLEJuKSk7cmV0dXJuIGRufWZ1bmN0''@;'; put 'put ''aW9uIE4oV2UsT3Qpe2Zvcih2YXIgZG4gaW4gT3QpUShPdCxkbikmJihXZVtkbl09T3RbZG5dKTtyZXR1cm4gUShPdCwidG9TdHJpbmciKSYmKFdlLnRvU3RyaW5nPU90LnRvU3RyaW5nKSxRKE90LCJ2YWx1ZU9mIikmJihXZS52YWx1ZU9mPU90LnZhbHVlT2YpLFdlfWZ1bmN0aW9uIGVlKFdl''@;'; put 'put ''LE90LGRuLEJuKXtyZXR1cm4gVG8oV2UsT3QsZG4sQm4sITApLnV0YygpfWZ1bmN0aW9uIEooV2Upe3JldHVybiBudWxsPT1XZS5fcGYmJihXZS5fcGY9e2VtcHR5OiExLHVudXNlZFRva2VuczpbXSx1bnVzZWRJbnB1dDpbXSxvdmVyZmxvdzotMixjaGFyc0xlZnRPdmVyOjAsbnVsbElucHV0''@;'; put 'put ''OiExLGludmFsaWRFcmE6bnVsbCxpbnZhbGlkTW9udGg6bnVsbCxpbnZhbGlkRm9ybWF0OiExLHVzZXJJbnZhbGlkYXRlZDohMSxpc286ITEscGFyc2VkRGF0ZVBhcnRzOltdLGVyYTpudWxsLG1lcmlkaWVtOm51bGwscmZjMjgyMjohMSx3ZWVrZGF5TWlzbWF0Y2g6ITF9KSxXZS5fcGZ9ZnVu''@;'; put 'put ''Y3Rpb24gYWUoV2Upe2lmKG51bGw9PVdlLl9pc1ZhbGlkKXt2YXIgT3Q9SihXZSksZG49c2UuY2FsbChPdC5wYXJzZWREYXRlUGFydHMsZnVuY3Rpb24odHIpe3JldHVybiBudWxsIT10cn0pLEJuPSFpc05hTihXZS5fZC5nZXRUaW1lKCkpJiZPdC5vdmVyZmxvdzwwJiYhT3QuZW1wdHkmJiFP''@;'; put 'put ''dC5pbnZhbGlkRXJhJiYhT3QuaW52YWxpZE1vbnRoJiYhT3QuaW52YWxpZFdlZWtkYXkmJiFPdC53ZWVrZGF5TWlzbWF0Y2gmJiFPdC5udWxsSW5wdXQmJiFPdC5pbnZhbGlkRm9ybWF0JiYhT3QudXNlckludmFsaWRhdGVkJiYoIU90Lm1lcmlkaWVtfHxPdC5tZXJpZGllbSYmZG4pO2lmKFdl''@;'; put 'put ''Ll9zdHJpY3QmJihCbj1CbiYmMD09PU90LmNoYXJzTGVmdE92ZXImJjA9PT1PdC51bnVzZWRUb2tlbnMubGVuZ3RoJiZ2b2lkIDA9PT1PdC5iaWdIb3VyKSxudWxsIT1PYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihXZSkpcmV0dXJuIEJuO1dlLl9pc1ZhbGlkPUJufXJldHVybiBX''@;'; put 'put ''ZS5faXNWYWxpZH1mdW5jdGlvbiBmZShXZSl7dmFyIE90PWVlKE5hTik7cmV0dXJuIG51bGwhPVdlP04oSihPdCksV2UpOkooT3QpLnVzZXJJbnZhbGlkYXRlZD0hMCxPdH1zZT1BcnJheS5wcm90b3R5cGUuc29tZT9BcnJheS5wcm90b3R5cGUuc29tZTpmdW5jdGlvbihXZSl7dmFyIEJuLE90''@;'; put 'put ''PU9iamVjdCh0aGlzKSxkbj1PdC5sZW5ndGg+Pj4wO2ZvcihCbj0wO0JuPGRuO0JuKyspaWYoQm4gaW4gT3QmJldlLmNhbGwodGhpcyxPdFtCbl0sQm4sT3QpKXJldHVybiEwO3JldHVybiExfTt2YXIgZGU9Qi5tb21lbnRQcm9wZXJ0aWVzPVtdLHZlPSExO2Z1bmN0aW9uIEFlKFdlLE90KXt2''@;'; put 'put ''YXIgZG4sQm4sdHIsS3I9ZGUubGVuZ3RoO2lmKGllKE90Ll9pc0FNb21lbnRPYmplY3QpfHwoV2UuX2lzQU1vbWVudE9iamVjdD1PdC5faXNBTW9tZW50T2JqZWN0KSxpZShPdC5faSl8fChXZS5faT1PdC5faSksaWUoT3QuX2YpfHwoV2UuX2Y9T3QuX2YpLGllKE90Ll9sKXx8KFdlLl9sPU90''@;'; put 'put ''Ll9sKSxpZShPdC5fc3RyaWN0KXx8KFdlLl9zdHJpY3Q9T3QuX3N0cmljdCksaWUoT3QuX3R6bSl8fChXZS5fdHptPU90Ll90em0pLGllKE90Ll9pc1VUQyl8fChXZS5faXNVVEM9T3QuX2lzVVRDKSxpZShPdC5fb2Zmc2V0KXx8KFdlLl9vZmZzZXQ9T3QuX29mZnNldCksaWUoT3QuX3BmKXx8''@;'; put 'put ''KFdlLl9wZj1KKE90KSksaWUoT3QuX2xvY2FsZSl8fChXZS5fbG9jYWxlPU90Ll9sb2NhbGUpLEtyPjApZm9yKGRuPTA7ZG48S3I7ZG4rKylpZSh0cj1PdFtCbj1kZVtkbl1dKXx8KFdlW0JuXT10cik7cmV0dXJuIFdlfWZ1bmN0aW9uIGtlKFdlKXtBZSh0aGlzLFdlKSx0aGlzLl9kPW5ldyBE''@;'; put 'put ''YXRlKG51bGwhPVdlLl9kP1dlLl9kLmdldFRpbWUoKTpOYU4pLHRoaXMuaXNWYWxpZCgpfHwodGhpcy5fZD1uZXcgRGF0ZShOYU4pKSwhMT09PXZlJiYodmU9ITAsQi51cGRhdGVPZmZzZXQodGhpcyksdmU9ITEpfWZ1bmN0aW9uIFNlKFdlKXtyZXR1cm4gV2UgaW5zdGFuY2VvZiBrZXx8bnVs''@;'; put 'put ''bCE9V2UmJm51bGwhPVdlLl9pc0FNb21lbnRPYmplY3R9ZnVuY3Rpb24gSWUoV2UpeyExPT09Qi5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIr''@;'; put 'put ''V2UpfWZ1bmN0aW9uIFRlKFdlLE90KXt2YXIgZG49ITA7cmV0dXJuIE4oZnVuY3Rpb24oKXtpZihudWxsIT1CLmRlcHJlY2F0aW9uSGFuZGxlciYmQi5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCxXZSksZG4pe3ZhciB0cixLcixRaSxCbj1bXSxzYT1hcmd1bWVudHMubGVuZ3RoO2ZvcihLcj0w''@;'; put 'put ''O0tyPHNhO0tyKyspe2lmKHRyPSIiLCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW0tyXSl7Zm9yKFFpIGluIHRyKz0iXG5bIitLcisiXSAiLGFyZ3VtZW50c1swXSlRKGFyZ3VtZW50c1swXSxRaSkmJih0cis9UWkrIjogIithcmd1bWVudHNbMF1bUWldKyIsICIpO3RyPXRyLnNsaWNlKDAs''@;'; put 'put ''LTIpfWVsc2UgdHI9YXJndW1lbnRzW0tyXTtCbi5wdXNoKHRyKX1JZShXZSsiXG5Bcmd1bWVudHM6ICIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoQm4pLmpvaW4oIiIpKyJcbiIrKG5ldyBFcnJvcikuc3RhY2spLGRuPSExfXJldHVybiBPdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LE90''@;'; put 'put ''KX12YXIgeCxFZT17fTtmdW5jdGlvbiBoZShXZSxPdCl7bnVsbCE9Qi5kZXByZWNhdGlvbkhhbmRsZXImJkIuZGVwcmVjYXRpb25IYW5kbGVyKFdlLE90KSxFZVtXZV18fChJZShPdCksRWVbV2VdPSEwKX1mdW5jdGlvbiBPKFdlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZ1bmN0aW9u''@;'; put 'put ''JiZXZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwiW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFdlKX1mdW5jdGlvbiBuZShXZSxPdCl7dmFyIEJuLGRuPU4oe30sV2UpO2ZvcihCbiBpbiBPdClRKE90LEJuKSYmKFUoV2VbQm5dKSYmVShPdFtCbl0p''@;'; put 'put ''PyhkbltCbl09e30sTihkbltCbl0sV2VbQm5dKSxOKGRuW0JuXSxPdFtCbl0pKTpudWxsIT1PdFtCbl0/ZG5bQm5dPU90W0JuXTpkZWxldGUgZG5bQm5dKTtmb3IoQm4gaW4gV2UpUShXZSxCbikmJiFRKE90LEJuKSYmVShXZVtCbl0pJiYoZG5bQm5dPU4oe30sZG5bQm5dKSk7cmV0dXJuIGRu''@;'; put 'put ''fWZ1bmN0aW9uIHRlKFdlKXtudWxsIT1XZSYmdGhpcy5zZXQoV2UpfUIuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPSExLEIuZGVwcmVjYXRpb25IYW5kbGVyPW51bGwseD1PYmplY3Qua2V5cz9PYmplY3Qua2V5czpmdW5jdGlvbihXZSl7dmFyIE90LGRuPVtdO2ZvcihPdCBpbiBXZSlR''@;'; put 'put ''KFdlLE90KSYmZG4ucHVzaChPdCk7cmV0dXJuIGRufTtmdW5jdGlvbiBUKFdlLE90LGRuKXt2YXIgQm49IiIrTWF0aC5hYnMoV2UpO3JldHVybihXZT49MD9kbj8iKyI6IiI6Ii0iKStNYXRoLnBvdygxMCxNYXRoLm1heCgwLE90LUJuLmxlbmd0aCkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpK0Ju''@;'; put 'put ''fXZhciBTPS8oXFtbXlxbXSpcXSl8KFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fE57MSw1fXxZWVlZWVl8WVlZWVl8WVlZWXxZWXx5ezIsNH18eW8/fGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxo''@;'; put 'put ''aD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nLEY9LyhcW1teXFtdKlxdKXwoXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2cseWU9e30sQ2U9e307ZnVuY3Rpb24gRGUoV2UsT3QsZG4sQm4pe3ZhciB0cj1Cbjsic3RyaW5nIj09dHlwZW9mIEJuJiYodHI9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpc1tCbl0oKX0pLFdlJiYoQ2VbV2VdPXRyKSxPdCYmKENlW090WzBdXT1mdW5jdGlvbigpe3JldHVybiBUKHRyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxPdFsxXSxPdFsyXSl9KSxkbiYmKENlW2RuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEo''@;'; put 'put ''KS5vcmRpbmFsKHRyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxXZSl9KX1mdW5jdGlvbiBQZShXZSl7cmV0dXJuIFdlLm1hdGNoKC9cW1tcc1xTXS8pP1dlLnJlcGxhY2UoL15cW3xcXSQvZywiIik6V2UucmVwbGFjZSgvXFwvZywiIil9ZnVuY3Rpb24gJGUoV2UsT3Qpe3JldHVybiBXZS5pc1Zh''@;'; put 'put ''bGlkKCk/KE90PWd0KE90LFdlLmxvY2FsZURhdGEoKSkseWVbT3RdPXllW090XXx8ZnVuY3Rpb24gUWUoV2Upe3ZhciBkbixCbixPdD1XZS5tYXRjaChTKTtmb3IoZG49MCxCbj1PdC5sZW5ndGg7ZG48Qm47ZG4rKylPdFtkbl09Q2VbT3RbZG5dXT9DZVtPdFtkbl1dOlBlKE90W2RuXSk7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKHRyKXt2YXIgUWksS3I9IiI7Zm9yKFFpPTA7UWk8Qm47UWkrKylLcis9TyhPdFtRaV0pP090W1FpXS5jYWxsKHRyLFdlKTpPdFtRaV07cmV0dXJuIEtyfX0oT3QpLHllW090XShXZSkpOldlLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIGd0KFdlLE90''@;'; put 'put ''KXt2YXIgZG49NTtmdW5jdGlvbiBCbih0cil7cmV0dXJuIE90LmxvbmdEYXRlRm9ybWF0KHRyKXx8dHJ9Zm9yKEYubGFzdEluZGV4PTA7ZG4+PTAmJkYudGVzdChXZSk7KVdlPVdlLnJlcGxhY2UoRixCbiksRi5sYXN0SW5kZXg9MCxkbi09MTtyZXR1cm4gV2V9dmFyIG90PXt9O2Z1bmN0aW9u''@;'; put 'put ''IFJ0KFdlLE90KXt2YXIgZG49V2UudG9Mb3dlckNhc2UoKTtvdFtkbl09b3RbZG4rInMiXT1vdFtPdF09V2V9ZnVuY3Rpb24gQ3QoV2Upe3JldHVybiJzdHJpbmciPT10eXBlb2YgV2U/b3RbV2VdfHxvdFtXZS50b0xvd2VyQ2FzZSgpXTp2b2lkIDB9ZnVuY3Rpb24gY3QoV2Upe3ZhciBkbixC''@;'; put 'put ''bixPdD17fTtmb3IoQm4gaW4gV2UpUShXZSxCbikmJihkbj1DdChCbikpJiYoT3RbZG5dPVdlW0JuXSk7cmV0dXJuIE90fXZhciBOdD17fTtmdW5jdGlvbiB6ZShXZSxPdCl7TnRbV2VdPU90fWZ1bmN0aW9uIEF0KFdlKXtyZXR1cm4gV2UlND09MCYmV2UlMTAwIT0wfHxXZSU0MDA9PTB9ZnVu''@;'; put 'put ''Y3Rpb24ganQoV2Upe3JldHVybiBXZTwwP01hdGguY2VpbChXZSl8fDA6TWF0aC5mbG9vcihXZSl9ZnVuY3Rpb24gSnQoV2Upe3ZhciBPdD0rV2UsZG49MDtyZXR1cm4gMCE9PU90JiZpc0Zpbml0ZShPdCkmJihkbj1qdChPdCkpLGRufWZ1bmN0aW9uIG1uKFdlLE90KXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oZG4pe3JldHVybiBudWxsIT1kbj8oYm4odGhpcyxXZSxkbiksQi51cGRhdGVPZmZzZXQodGhpcyxPdCksdGhpcyk6cG4odGhpcyxXZSl9fWZ1bmN0aW9uIHBuKFdlLE90KXtyZXR1cm4gV2UuaXNWYWxpZCgpP1dlLl9kWyJnZXQiKyhXZS5faXNVVEM/IlVUQyI6IiIpK090XSgpOk5hTn1m''@;'; put 'put ''dW5jdGlvbiBibihXZSxPdCxkbil7V2UuaXNWYWxpZCgpJiYhaXNOYU4oZG4pJiYoIkZ1bGxZZWFyIj09PU90JiZBdChXZS55ZWFyKCkpJiYxPT09V2UubW9udGgoKSYmMjk9PT1XZS5kYXRlKCk/KGRuPUp0KGRuKSxXZS5fZFsic2V0IisoV2UuX2lzVVRDPyJVVEMiOiIiKStPdF0oZG4sV2Uu''@;'; put 'put ''bW9udGgoKSx0aShkbixXZS5tb250aCgpKSkpOldlLl9kWyJzZXQiKyhXZS5faXNVVEM/IlVUQyI6IiIpK090XShkbikpfXZhciBfbixrbj0vXGQvLGVyPS9cZFxkLyx1cj0vXGR7M30vLFhuPS9cZHs0fS8sRnI9L1srLV0/XGR7Nn0vLHhyPS9cZFxkPy8sZW49L1xkXGRcZFxkPy8sZHI9L1xk''@;'; put 'put ''XGRcZFxkXGRcZD8vLG5yPS9cZHsxLDN9Lyx3bj0vXGR7MSw0fS8sJG49L1srLV0/XGR7MSw2fS8sWXQ9L1xkKy8sZ249L1srLV0/XGQrLyxLbj0vWnxbKy1dXGRcZDo/XGRcZC9naSxWdD0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpLFVuPS9bMC05XXswLDI1Nn1bJ2Etelx1MDBBMC1cdTA1''@;'; put 'put ''RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGMDdcdUZGMTAtXHVGRkVGXXsxLDI1Nn18W1x1MDYwMC1cdTA2RkZcL117MSwyNTZ9KFxzKj9bXHUwNjAwLVx1MDZGRl17MSwyNTZ9KXsxLDJ9L2k7ZnVuY3Rpb24gdG4oV2UsT3QsZG4pe19uW1dlXT1PKE90KT9PdDpmdW5j''@;'; put 'put ''dGlvbihCbix0cil7cmV0dXJuIEJuJiZkbj9kbjpPdH19ZnVuY3Rpb24gR24oV2UsT3Qpe3JldHVybiBRKF9uLFdlKT9fbltXZV0oT3QuX3N0cmljdCxPdC5fbG9jYWxlKTpuZXcgUmVnRXhwKGZ1bmN0aW9uIFRyKFdlKXtyZXR1cm4gUG4oV2UucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9c''@;'; put 'put ''XChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csZnVuY3Rpb24oT3QsZG4sQm4sdHIsS3Ipe3JldHVybiBkbnx8Qm58fHRyfHxLcn0pKX0oV2UpKX1mdW5jdGlvbiBQbihXZSl7cmV0dXJuIFdlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9X249e307''@;'; put 'put ''dmFyIFNyPXt9O2Z1bmN0aW9uIHZuKFdlLE90KXt2YXIgZG4sdHIsQm49T3Q7Zm9yKCJzdHJpbmciPT10eXBlb2YgV2UmJihXZT1bV2VdKSxsZShPdCkmJihCbj1mdW5jdGlvbihLcixRaSl7UWlbT3RdPUp0KEtyKX0pLHRyPVdlLmxlbmd0aCxkbj0wO2RuPHRyO2RuKyspU3JbV2VbZG5dXT1C''@;'; put 'put ''bn1mdW5jdGlvbiB1bihXZSxPdCl7dm4oV2UsZnVuY3Rpb24oZG4sQm4sdHIsS3Ipe3RyLl93PXRyLl93fHx7fSxPdChkbix0ci5fdyx0cixLcil9KX1mdW5jdGlvbiBjbihXZSxPdCxkbil7bnVsbCE9T3QmJlEoU3IsV2UpJiZTcltXZV0oT3QsZG4uX2EsZG4sV2UpfXZhciBWcjtmdW5jdGlv''@;'; put 'put ''biB0aShXZSxPdCl7aWYoaXNOYU4oV2UpfHxpc05hTihPdCkpcmV0dXJuIE5hTjt2YXIgZG49ZnVuY3Rpb24gSnIoV2UsT3Qpe3JldHVybihXZSVPdCtPdCklT3R9KE90LDEyKTtyZXR1cm4gV2UrPShPdC1kbikvMTIsMT09PWRuP0F0KFdlKT8yOToyODozMS1kbiU3JTJ9VnI9QXJyYXkucHJv''@;'; put 'put ''dG90eXBlLmluZGV4T2Y/QXJyYXkucHJvdG90eXBlLmluZGV4T2Y6ZnVuY3Rpb24oV2Upe3ZhciBPdDtmb3IoT3Q9MDtPdDx0aGlzLmxlbmd0aDsrK090KWlmKHRoaXNbT3RdPT09V2UpcmV0dXJuIE90O3JldHVybi0xfSxEZSgiTSIsWyJNTSIsMl0sIk1vIixmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLm1vbnRoKCkrMX0pLERlKCJNTU0iLDAsMCxmdW5jdGlvbihXZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsV2UpfSksRGUoIk1NTU0iLDAsMCxmdW5jdGlvbihXZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLFdlKX0pLFJ0KCJt''@;'; put 'put ''b250aCIsIk0iKSx6ZSgibW9udGgiLDgpLHRuKCJNIix4ciksdG4oIk1NIix4cixlciksdG4oIk1NTSIsZnVuY3Rpb24oV2UsT3Qpe3JldHVybiBPdC5tb250aHNTaG9ydFJlZ2V4KFdlKX0pLHRuKCJNTU1NIixmdW5jdGlvbihXZSxPdCl7cmV0dXJuIE90Lm1vbnRoc1JlZ2V4KFdlKX0pLHZu''@;'; put 'put ''KFsiTSIsIk1NIl0sZnVuY3Rpb24oV2UsT3Qpe090WzFdPUp0KFdlKS0xfSksdm4oWyJNTU0iLCJNTU1NIl0sZnVuY3Rpb24oV2UsT3QsZG4sQm4pe3ZhciB0cj1kbi5fbG9jYWxlLm1vbnRoc1BhcnNlKFdlLEJuLGRuLl9zdHJpY3QpO251bGwhPXRyP090WzFdPXRyOkooZG4pLmludmFsaWRN''@;'; put 'put ''b250aD1XZX0pO3ZhciBPcj0iSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxsaT0iSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9E''@;'; put 'put ''ZWMiLnNwbGl0KCJfIiksSWk9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/LyxyMD1VbixlMD1VbjtmdW5jdGlvbiBVMChXZSxPdCxkbil7dmFyIEJuLHRyLEtyLFFpPVdlLnRvTG9jYWxlTG93ZXJDYXNlKCk7aWYoIXRoaXMuX21vbnRoc1BhcnNlKWZvcih0aGlzLl9tb250aHNQYXJz''@;'; put 'put ''ZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSxCbj0wO0JuPDEyOysrQm4pS3I9ZWUoWzJlMyxCbl0pLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbQm5dPXRoaXMubW9udGhzU2hvcnQoS3IsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5f''@;'; put 'put ''bG9uZ01vbnRoc1BhcnNlW0JuXT10aGlzLm1vbnRocyhLciwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gZG4/Ik1NTSI9PT1PdD8tMSE9PSh0cj1Wci5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsUWkpKT90cjpudWxsOi0xIT09KHRyPVZyLmNhbGwodGhpcy5fbG9uZ01vbnRo''@;'; put 'put ''c1BhcnNlLFFpKSk/dHI6bnVsbDoiTU1NIj09PU90Py0xIT09KHRyPVZyLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxRaSkpfHwtMSE9PSh0cj1Wci5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxRaSkpP3RyOm51bGw6LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFy''@;'; put 'put ''c2UsUWkpKXx8LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLFFpKSk/dHI6bnVsbH1mdW5jdGlvbiBqMChXZSxPdCl7dmFyIGRuO2lmKCFXZS5pc1ZhbGlkKCkpcmV0dXJuIFdlO2lmKCJzdHJpbmciPT10eXBlb2YgT3QpaWYoL15cZCskLy50ZXN0KE90KSlPdD1KdChP''@;'; put 'put ''dCk7ZWxzZSBpZighbGUoT3Q9V2UubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKE90KSkpcmV0dXJuIFdlO3JldHVybiBkbj1NYXRoLm1pbihXZS5kYXRlKCksdGkoV2UueWVhcigpLE90KSksV2UuX2RbInNldCIrKFdlLl9pc1VUQz8iVVRDIjoiIikrIk1vbnRoIl0oT3QsZG4pLFdlfWZ1bmN0''@;'; put 'put ''aW9uIEFvKFdlKXtyZXR1cm4gbnVsbCE9V2U/KGowKHRoaXMsV2UpLEIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMpOnBuKHRoaXMsIk1vbnRoIil9ZnVuY3Rpb24gSmkoKXtmdW5jdGlvbiBXZShRaSxzYSl7cmV0dXJuIHNhLmxlbmd0aC1RaS5sZW5ndGh9dmFyIHRyLEtyLE90PVtdLGRu''@;'; put 'put ''PVtdLEJuPVtdO2Zvcih0cj0wO3RyPDEyO3RyKyspS3I9ZWUoWzJlMyx0cl0pLE90LnB1c2godGhpcy5tb250aHNTaG9ydChLciwiIikpLGRuLnB1c2godGhpcy5tb250aHMoS3IsIiIpKSxCbi5wdXNoKHRoaXMubW9udGhzKEtyLCIiKSksQm4ucHVzaCh0aGlzLm1vbnRoc1Nob3J0KEtyLCIi''@;'; put 'put ''KSk7Zm9yKE90LnNvcnQoV2UpLGRuLnNvcnQoV2UpLEJuLnNvcnQoV2UpLHRyPTA7dHI8MTI7dHIrKylPdFt0cl09UG4oT3RbdHJdKSxkblt0cl09UG4oZG5bdHJdKTtmb3IodHI9MDt0cjwyNDt0cisrKUJuW3RyXT1QbihCblt0cl0pO3RoaXMuX21vbnRoc1JlZ2V4PW5ldyBSZWdFeHAoIl4o''@;'; put 'put ''IitCbi5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRSZWdleD10aGlzLl9tb250aHNSZWdleCx0aGlzLl9tb250aHNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrZG4uam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4''@;'; put 'put ''cCgiXigiK090LmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBNYShXZSl7cmV0dXJuIEF0KFdlKT8zNjY6MzY1fURlKCJZIiwwLDAsZnVuY3Rpb24oKXt2YXIgV2U9dGhpcy55ZWFyKCk7cmV0dXJuIFdlPD05OTk5P1QoV2UsNCk6IisiK1dlfSksRGUoMCxbIllZIiwyXSwwLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMueWVhcigpJTEwMH0pLERlKDAsWyJZWVlZIiw0XSwwLCJ5ZWFyIiksRGUoMCxbIllZWVlZIiw1XSwwLCJ5ZWFyIiksRGUoMCxbIllZWVlZWSIsNiwhMF0sMCwieWVhciIpLFJ0KCJ5ZWFyIiwieSIpLHplKCJ5ZWFyIiwxKSx0bigiWSIsZ24pLHRuKCJZWSIseHIsZXIp''@;'; put 'put ''LHRuKCJZWVlZIix3bixYbiksdG4oIllZWVlZIiwkbixGciksdG4oIllZWVlZWSIsJG4sRnIpLHZuKFsiWVlZWVkiLCJZWVlZWVkiXSwwKSx2bigiWVlZWSIsZnVuY3Rpb24oV2UsT3Qpe090WzBdPTI9PT1XZS5sZW5ndGg/Qi5wYXJzZVR3b0RpZ2l0WWVhcihXZSk6SnQoV2UpfSksdm4oIllZ''@;'; put 'put ''IixmdW5jdGlvbihXZSxPdCl7T3RbMF09Qi5wYXJzZVR3b0RpZ2l0WWVhcihXZSl9KSx2bigiWSIsZnVuY3Rpb24oV2UsT3Qpe090WzBdPXBhcnNlSW50KFdlLDEwKX0pLEIucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24oV2Upe3JldHVybiBKdChXZSkrKEp0KFdlKT42OD8xOTAwOjJlMyl9''@;'; put 'put ''O3ZhciB5bD1tbigiRnVsbFllYXIiLCEwKTtmdW5jdGlvbiBwaShXZSxPdCxkbixCbix0cixLcixRaSl7dmFyIHNhO3JldHVybiBXZTwxMDAmJldlPj0wPyhzYT1uZXcgRGF0ZShXZSs0MDAsT3QsZG4sQm4sdHIsS3IsUWkpLGlzRmluaXRlKHNhLmdldEZ1bGxZZWFyKCkpJiZzYS5zZXRGdWxs''@;'; put 'put ''WWVhcihXZSkpOnNhPW5ldyBEYXRlKFdlLE90LGRuLEJuLHRyLEtyLFFpKSxzYX1mdW5jdGlvbiB3aShXZSl7dmFyIE90LGRuO3JldHVybiBXZTwxMDAmJldlPj0wPygoZG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSlbMF09V2UrNDAwLE90PW5ldyBEYXRlKERhdGUu''@;'; put 'put ''VVRDLmFwcGx5KG51bGwsZG4pKSxpc0Zpbml0ZShPdC5nZXRVVENGdWxsWWVhcigpKSYmT3Quc2V0VVRDRnVsbFllYXIoV2UpKTpPdD1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpLE90fWZ1bmN0aW9uIG0wKFdlLE90LGRuKXt2YXIgQm49NytPdC1kbjtyZXR1cm4t''@;'; put 'put ''KDcrd2koV2UsMCxCbikuZ2V0VVRDRGF5KCktT3QpJTcrQm4tMX1mdW5jdGlvbiBHbyhXZSxPdCxkbixCbix0cil7dmFyIGlsLHJzLHNhPTErNyooT3QtMSkrKDcrZG4tQm4pJTcrbTAoV2UsQm4sdHIpO3JldHVybiBzYTw9MD9ycz1NYShpbD1XZS0xKStzYTpzYT5NYShXZSk/KGlsPVdlKzEs''@;'; put 'put ''cnM9c2EtTWEoV2UpKTooaWw9V2UscnM9c2EpLHt5ZWFyOmlsLGRheU9mWWVhcjpyc319ZnVuY3Rpb24gYzIoV2UsT3QsZG4pe3ZhciBLcixRaSxCbj1tMChXZS55ZWFyKCksT3QsZG4pLHRyPU1hdGguZmxvb3IoKFdlLmRheU9mWWVhcigpLUJuLTEpLzcpKzE7cmV0dXJuIHRyPDE/S3I9dHIr''@;'; put 'put ''U2koUWk9V2UueWVhcigpLTEsT3QsZG4pOnRyPlNpKFdlLnllYXIoKSxPdCxkbik/KEtyPXRyLVNpKFdlLnllYXIoKSxPdCxkbiksUWk9V2UueWVhcigpKzEpOihRaT1XZS55ZWFyKCksS3I9dHIpLHt3ZWVrOktyLHllYXI6UWl9fWZ1bmN0aW9uIFNpKFdlLE90LGRuKXt2YXIgQm49bTAoV2Us''@;'; put 'put ''T3QsZG4pLHRyPW0wKFdlKzEsT3QsZG4pO3JldHVybihNYShXZSktQm4rdHIpLzd9RGUoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSxEZSgiVyIsWyJXVyIsMl0sIldvIiwiaXNvV2VlayIpLFJ0KCJ3ZWVrIiwidyIpLFJ0KCJpc29XZWVrIiwiVyIpLHplKCJ3ZWVrIiw1KSx6ZSgiaXNvV2Vl''@;'; put 'put ''ayIsNSksdG4oInciLHhyKSx0bigid3ciLHhyLGVyKSx0bigiVyIseHIpLHRuKCJXVyIseHIsZXIpLHVuKFsidyIsInd3IiwiVyIsIldXIl0sZnVuY3Rpb24oV2UsT3QsZG4sQm4pe090W0JuLnN1YnN0cigwLDEpXT1KdChXZSl9KTtmdW5jdGlvbiBBbihXZSxPdCl7cmV0dXJuIFdlLnNsaWNl''@;'; put 'put ''KE90LDcpLmNvbmNhdChXZS5zbGljZSgwLE90KSl9RGUoImQiLDAsImRvIiwiZGF5IiksRGUoImRkIiwwLDAsZnVuY3Rpb24oV2Upe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLFdlKX0pLERlKCJkZGQiLDAsMCxmdW5jdGlvbihXZSl7cmV0dXJuIHRoaXMubG9j''@;'; put 'put ''YWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyxXZSl9KSxEZSgiZGRkZCIsMCwwLGZ1bmN0aW9uKFdlKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyxXZSl9KSxEZSgiZSIsMCwwLCJ3ZWVrZGF5IiksRGUoIkUiLDAsMCwiaXNvV2Vla2RheSIpLFJ0KCJkYXkiLCJk''@;'; put 'put ''IiksUnQoIndlZWtkYXkiLCJlIiksUnQoImlzb1dlZWtkYXkiLCJFIiksemUoImRheSIsMTEpLHplKCJ3ZWVrZGF5IiwxMSksemUoImlzb1dlZWtkYXkiLDExKSx0bigiZCIseHIpLHRuKCJlIix4ciksdG4oIkUiLHhyKSx0bigiZGQiLGZ1bmN0aW9uKFdlLE90KXtyZXR1cm4gT3Qud2Vla2Rh''@;'; put 'put ''eXNNaW5SZWdleChXZSl9KSx0bigiZGRkIixmdW5jdGlvbihXZSxPdCl7cmV0dXJuIE90LndlZWtkYXlzU2hvcnRSZWdleChXZSl9KSx0bigiZGRkZCIsZnVuY3Rpb24oV2UsT3Qpe3JldHVybiBPdC53ZWVrZGF5c1JlZ2V4KFdlKX0pLHVuKFsiZGQiLCJkZGQiLCJkZGRkIl0sZnVuY3Rpb24o''@;'; put 'put ''V2UsT3QsZG4sQm4pe3ZhciB0cj1kbi5fbG9jYWxlLndlZWtkYXlzUGFyc2UoV2UsQm4sZG4uX3N0cmljdCk7bnVsbCE9dHI/T3QuZD10cjpKKGRuKS5pbnZhbGlkV2Vla2RheT1XZX0pLHVuKFsiZCIsImUiLCJFIl0sZnVuY3Rpb24oV2UsT3QsZG4sQm4pe090W0JuXT1KdChXZSl9KTt2YXIg''@;'; put 'put ''SzA9IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLGIyPSJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksaXU9IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLFJmPVVuLFF1PVVu''@;'; put 'put ''LEtzPVVuO2Z1bmN0aW9uIERsKFdlLE90LGRuKXt2YXIgQm4sdHIsS3IsUWk9V2UudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fd2Vla2RheXNQYXJzZSlmb3IodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQ''@;'; put 'put ''YXJzZT1bXSxCbj0wO0JuPDc7KytCbilLcj1lZShbMmUzLDFdKS5kYXkoQm4pLHRoaXMuX21pbldlZWtkYXlzUGFyc2VbQm5dPXRoaXMud2Vla2RheXNNaW4oS3IsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW0JuXT10aGlzLndlZWtkYXlzU2hvcnQo''@;'; put 'put ''S3IsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fd2Vla2RheXNQYXJzZVtCbl09dGhpcy53ZWVrZGF5cyhLciwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gZG4/ImRkZGQiPT09T3Q/LTEhPT0odHI9VnIuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFFpKSk/dHI6bnVsbDoi''@;'; put 'put ''ZGRkIj09PU90Py0xIT09KHRyPVZyLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFFpKSk/dHI6bnVsbDotMSE9PSh0cj1Wci5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsUWkpKT90cjpudWxsOiJkZGRkIj09PU90Py0xIT09KHRyPVZyLmNhbGwodGhpcy5fd2Vla2RheXNQYXJz''@;'; put 'put ''ZSxRaSkpfHwtMSE9PSh0cj1Wci5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxRaSkpfHwtMSE9PSh0cj1Wci5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsUWkpKT90cjpudWxsOiJkZGQiPT09T3Q/LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsUWkp''@;'; put 'put ''KXx8LTEhPT0odHI9VnIuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFFpKSl8fC0xIT09KHRyPVZyLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxRaSkpP3RyOm51bGw6LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLFFpKSl8fC0xIT09KHRyPVZyLmNhbGwodGhp''@;'; put 'put ''cy5fd2Vla2RheXNQYXJzZSxRaSkpfHwtMSE9PSh0cj1Wci5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxRaSkpP3RyOm51bGx9ZnVuY3Rpb24gdW8oKXtmdW5jdGlvbiBXZShlYyxBMyl7cmV0dXJuIEEzLmxlbmd0aC1lYy5sZW5ndGh9dmFyIEtyLFFpLHNhLGlsLHJzLE90PVtdLGRu''@;'; put 'put ''PVtdLEJuPVtdLHRyPVtdO2ZvcihLcj0wO0tyPDc7S3IrKylRaT1lZShbMmUzLDFdKS5kYXkoS3IpLHNhPVBuKHRoaXMud2Vla2RheXNNaW4oUWksIiIpKSxpbD1Qbih0aGlzLndlZWtkYXlzU2hvcnQoUWksIiIpKSxycz1Qbih0aGlzLndlZWtkYXlzKFFpLCIiKSksT3QucHVzaChzYSksZG4u''@;'; put 'put ''cHVzaChpbCksQm4ucHVzaChycyksdHIucHVzaChzYSksdHIucHVzaChpbCksdHIucHVzaChycyk7T3Quc29ydChXZSksZG4uc29ydChXZSksQm4uc29ydChXZSksdHIuc29ydChXZSksdGhpcy5fd2Vla2RheXNSZWdleD1uZXcgUmVnRXhwKCJeKCIrdHIuam9pbigifCIpKyIpIiwiaSIpLHRo''@;'; put 'put ''aXMuX3dlZWtkYXlzU2hvcnRSZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitCbi5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fd2Vla2RheXNT''@;'; put 'put ''aG9ydFN0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitkbi5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrT3Quam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIE5hKCl7cmV0dXJuIHRoaXMuaG91cnMoKSUxMnx8MTJ9ZnVu''@;'; put 'put ''Y3Rpb24gbzIoV2UsT3Qpe0RlKFdlLDAsMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksT3QpfSl9ZnVuY3Rpb24gdmkoV2UsT3Qpe3JldHVybiBPdC5fbWVyaWRpZW1QYXJzZX1EZSgiSCIsWyJISCIsMl0s''@;'; put 'put ''MCwiaG91ciIpLERlKCJoIixbImhoIiwyXSwwLE5hKSxEZSgiayIsWyJrayIsMl0sMCxmdW5jdGlvbiBmMigpe3JldHVybiB0aGlzLmhvdXJzKCl8fDI0fSksRGUoImhtbSIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrTmEuYXBwbHkodGhpcykrVCh0aGlzLm1pbnV0ZXMoKSwyKX0pLERlKCJo''@;'; put 'put ''bW1zcyIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrTmEuYXBwbHkodGhpcykrVCh0aGlzLm1pbnV0ZXMoKSwyKStUKHRoaXMuc2Vjb25kcygpLDIpfSksRGUoIkhtbSIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5ob3VycygpK1QodGhpcy5taW51dGVzKCksMil9KSxEZSgiSG1tc3Mi''@;'; put 'put ''LDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStUKHRoaXMubWludXRlcygpLDIpK1QodGhpcy5zZWNvbmRzKCksMil9KSxvMigiYSIsITApLG8yKCJBIiwhMSksUnQoImhvdXIiLCJoIiksemUoImhvdXIiLDEzKSx0bigiYSIsdmkpLHRuKCJBIix2aSksdG4oIkgiLHhyKSx0''@;'; put 'put ''bigiaCIseHIpLHRuKCJrIix4ciksdG4oIkhIIix4cixlciksdG4oImhoIix4cixlciksdG4oImtrIix4cixlciksdG4oImhtbSIsZW4pLHRuKCJobW1zcyIsZHIpLHRuKCJIbW0iLGVuKSx0bigiSG1tc3MiLGRyKSx2bihbIkgiLCJISCJdLDMpLHZuKFsiayIsImtrIl0sZnVuY3Rpb24oV2Us''@;'; put 'put ''T3QsZG4pe3ZhciBCbj1KdChXZSk7T3RbM109MjQ9PT1Cbj8wOkJufSksdm4oWyJhIiwiQSJdLGZ1bmN0aW9uKFdlLE90LGRuKXtkbi5faXNQbT1kbi5fbG9jYWxlLmlzUE0oV2UpLGRuLl9tZXJpZGllbT1XZX0pLHZuKFsiaCIsImhoIl0sZnVuY3Rpb24oV2UsT3QsZG4pe090WzNdPUp0KFdl''@;'; put 'put ''KSxKKGRuKS5iaWdIb3VyPSEwfSksdm4oImhtbSIsZnVuY3Rpb24oV2UsT3QsZG4pe3ZhciBCbj1XZS5sZW5ndGgtMjtPdFszXT1KdChXZS5zdWJzdHIoMCxCbikpLE90WzRdPUp0KFdlLnN1YnN0cihCbikpLEooZG4pLmJpZ0hvdXI9ITB9KSx2bigiaG1tc3MiLGZ1bmN0aW9uKFdlLE90LGRu''@;'; put 'put ''KXt2YXIgQm49V2UubGVuZ3RoLTQsdHI9V2UubGVuZ3RoLTI7T3RbM109SnQoV2Uuc3Vic3RyKDAsQm4pKSxPdFs0XT1KdChXZS5zdWJzdHIoQm4sMikpLE90WzVdPUp0KFdlLnN1YnN0cih0cikpLEooZG4pLmJpZ0hvdXI9ITB9KSx2bigiSG1tIixmdW5jdGlvbihXZSxPdCxkbil7dmFyIEJu''@;'; put 'put ''PVdlLmxlbmd0aC0yO090WzNdPUp0KFdlLnN1YnN0cigwLEJuKSksT3RbNF09SnQoV2Uuc3Vic3RyKEJuKSl9KSx2bigiSG1tc3MiLGZ1bmN0aW9uKFdlLE90LGRuKXt2YXIgQm49V2UubGVuZ3RoLTQsdHI9V2UubGVuZ3RoLTI7T3RbM109SnQoV2Uuc3Vic3RyKDAsQm4pKSxPdFs0XT1KdChX''@;'; put 'put ''ZS5zdWJzdHIoQm4sMikpLE90WzVdPUp0KFdlLnN1YnN0cih0cikpfSk7dmFyIG91PW1uKCJIb3VycyIsITApO3ZhciBXcyxzZD17Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3RE''@;'; put 'put ''YXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6''@;'; put 'put ''bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcg''@;'; put 'put ''c2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLHc6ImEgd2VlayIsd3c6IiVkIHdlZWtzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIi''@;'; put 'put ''LHl5OiIlZCB5ZWFycyJ9LG1vbnRoczpPcixtb250aHNTaG9ydDpsaSx3ZWVrOntkb3c6MCxkb3k6Nn0sd2Vla2RheXM6SzAsd2Vla2RheXNNaW46aXUsd2Vla2RheXNTaG9ydDpiMixtZXJpZGllbVBhcnNlOi9bYXBdXC4/bT9cLj8vaX0scXM9e30sWWk9e307ZnVuY3Rpb24gZ3MoV2UsT3Qp''@;'; put 'put ''e3ZhciBkbixCbj1NYXRoLm1pbihXZS5sZW5ndGgsT3QubGVuZ3RoKTtmb3IoZG49MDtkbjxCbjtkbis9MSlpZihXZVtkbl0hPT1PdFtkbl0pcmV0dXJuIGRuO3JldHVybiBCbn1mdW5jdGlvbiBOMShXZSl7cmV0dXJuIFdlJiZXZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIil9ZnVu''@;'; put 'put ''Y3Rpb24geGkoV2Upe3ZhciBPdD1udWxsO2lmKHZvaWQgMD09PXFzW1dlXSYmWGUmJlhlLmV4cG9ydHMmJmZ1bmN0aW9uIEwyKFdlKXtyZXR1cm4gbnVsbCE9V2UubWF0Y2goIl5bXi9cXFxcXSokIil9KFdlKSl0cnl7T3Q9V3MuX2FiYnIsTCg0NjcwMCkoIi4vIitXZSksbTEoT3QpfWNhdGNo''@;'; put 'put ''KEJuKXtxc1tXZV09bnVsbH1yZXR1cm4gcXNbV2VdfWZ1bmN0aW9uIG0xKFdlLE90KXt2YXIgZG47cmV0dXJuIFdlJiYoKGRuPWllKE90KT9hdShXZSk6djEoV2UsT3QpKT9Xcz1kbjoidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJMb2Nh''@;'; put 'put ''bGUgIitXZSsiIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8iKSksV3MuX2FiYnJ9ZnVuY3Rpb24gdjEoV2UsT3Qpe2lmKG51bGwhPT1PdCl7dmFyIGRuLEJuPXNkO2lmKE90LmFiYnI9V2UsbnVsbCE9cXNbV2VdKWhlKCJkZWZpbmVMb2NhbGVPdmVycmlkZSIsInVzZSBt''@;'; put 'put ''b21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlIGFuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSBTZWUgaHR0cDov''@;'; put 'put ''L21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLiIpLEJuPXFzW1dlXS5fY29uZmlnO2Vsc2UgaWYobnVsbCE9T3QucGFyZW50TG9jYWxlKWlmKG51bGwhPXFzW090LnBhcmVudExvY2FsZV0pQm49cXNbT3QucGFyZW50TG9jYWxlXS5f''@;'; put 'put ''Y29uZmlnO2Vsc2V7aWYobnVsbD09KGRuPXhpKE90LnBhcmVudExvY2FsZSkpKXJldHVybiBZaVtPdC5wYXJlbnRMb2NhbGVdfHwoWWlbT3QucGFyZW50TG9jYWxlXT1bXSksWWlbT3QucGFyZW50TG9jYWxlXS5wdXNoKHtuYW1lOldlLGNvbmZpZzpPdH0pLG51bGw7Qm49ZG4uX2NvbmZpZ31y''@;'; put 'put ''ZXR1cm4gcXNbV2VdPW5ldyB0ZShuZShCbixPdCkpLFlpW1dlXSYmWWlbV2VdLmZvckVhY2goZnVuY3Rpb24odHIpe3YxKHRyLm5hbWUsdHIuY29uZmlnKX0pLG0xKFdlKSxxc1tXZV19cmV0dXJuIGRlbGV0ZSBxc1tXZV0sbnVsbH1mdW5jdGlvbiBhdShXZSl7dmFyIE90O2lmKFdlJiZXZS5f''@;'; put 'put ''bG9jYWxlJiZXZS5fbG9jYWxlLl9hYmJyJiYoV2U9V2UuX2xvY2FsZS5fYWJiciksIVdlKXJldHVybiBXcztpZighTWUoV2UpKXtpZihPdD14aShXZSkpcmV0dXJuIE90O1dlPVtXZV19cmV0dXJuIGZ1bmN0aW9uIEtsKFdlKXtmb3IodmFyIGRuLEJuLHRyLEtyLE90PTA7T3Q8V2UubGVuZ3Ro''@;'; put 'put ''Oyl7Zm9yKGRuPShLcj1OMShXZVtPdF0pLnNwbGl0KCItIikpLmxlbmd0aCxCbj0oQm49TjEoV2VbT3QrMV0pKT9Cbi5zcGxpdCgiLSIpOm51bGw7ZG4+MDspe2lmKHRyPXhpKEtyLnNsaWNlKDAsZG4pLmpvaW4oIi0iKSkpcmV0dXJuIHRyO2lmKEJuJiZCbi5sZW5ndGg+PWRuJiZncyhLcixC''@;'; put 'put ''bik+PWRuLTEpYnJlYWs7ZG4tLX1PdCsrfXJldHVybiBXc30oV2UpfWZ1bmN0aW9uIGgyKFdlKXt2YXIgT3QsZG49V2UuX2E7cmV0dXJuIGRuJiYtMj09PUooV2UpLm92ZXJmbG93JiYoT3Q9ZG5bMV08MHx8ZG5bMV0+MTE/MTpkblsyXTwxfHxkblsyXT50aShkblswXSxkblsxXSk/Mjpkblsz''@;'; put 'put ''XTwwfHxkblszXT4yNHx8MjQ9PT1kblszXSYmKDAhPT1kbls0XXx8MCE9PWRuWzVdfHwwIT09ZG5bNl0pPzM6ZG5bNF08MHx8ZG5bNF0+NTk/NDpkbls1XTwwfHxkbls1XT41OT81OmRuWzZdPDB8fGRuWzZdPjk5OT82Oi0xLEooV2UpLl9vdmVyZmxvd0RheU9mWWVhciYmKE90PDB8fE90PjIp''@;'; put 'put ''JiYoT3Q9MiksSihXZSkuX292ZXJmbG93V2Vla3MmJi0xPT09T3QmJihPdD03KSxKKFdlKS5fb3ZlcmZsb3dXZWVrZGF5JiYtMT09PU90JiYoT3Q9OCksSihXZSkub3ZlcmZsb3c9T3QpLFdlfXZhciBHZz0vXlxzKigoPzpbKy1dXGR7Nn18XGR7NH0pLSg/OlxkXGQtXGRcZHxXXGRcZC1cZHxX''@;'; put 'put ''XGRcZHxcZFxkXGR8XGRcZCkpKD86KFR8ICkoXGRcZCg/OjpcZFxkKD86OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbKy1dXGRcZCg/Ojo/XGRcZCk/fFxzKlopPyk/JC8sVjE9L15ccyooKD86WystXVxkezZ9fFxkezR9KSg/OlxkXGRcZFxkfFdcZFxkXGR8V1xkXGR8XGRcZFxkfFxkXGR8KSko''@;'; put 'put ''PzooVHwgKShcZFxkKD86XGRcZCg/OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbKy1dXGRcZCg/Ojo/XGRcZCk/fFxzKlopPyk/JC8seW89L1p8WystXVxkXGQoPzo6P1xkXGQpPy8sX2E9W1siWVlZWVlZLU1NLUREIiwvWystXVxkezZ9LVxkXGQtXGRcZC9dLFsiWVlZWS1NTS1ERCIsL1xkezR9''@;'; put 'put ''LVxkXGQtXGRcZC9dLFsiR0dHRy1bV11XVy1FIiwvXGR7NH0tV1xkXGQtXGQvXSxbIkdHR0ctW1ddV1ciLC9cZHs0fS1XXGRcZC8sITFdLFsiWVlZWS1EREQiLC9cZHs0fS1cZHszfS9dLFsiWVlZWS1NTSIsL1xkezR9LVxkXGQvLCExXSxbIllZWVlZWU1NREQiLC9bKy1dXGR7MTB9L10sWyJZ''@;'; put 'put ''WVlZTU1ERCIsL1xkezh9L10sWyJHR0dHW1ddV1dFIiwvXGR7NH1XXGR7M30vXSxbIkdHR0dbV11XVyIsL1xkezR9V1xkezJ9LywhMV0sWyJZWVlZREREIiwvXGR7N30vXSxbIllZWVlNTSIsL1xkezZ9LywhMV0sWyJZWVlZIiwvXGR7NH0vLCExXV0saGE9W1siSEg6bW06c3MuU1NTUyIsL1xk''@;'; put 'put ''XGQ6XGRcZDpcZFxkXC5cZCsvXSxbIkhIOm1tOnNzLFNTU1MiLC9cZFxkOlxkXGQ6XGRcZCxcZCsvXSxbIkhIOm1tOnNzIiwvXGRcZDpcZFxkOlxkXGQvXSxbIkhIOm1tIiwvXGRcZDpcZFxkL10sWyJISG1tc3MuU1NTUyIsL1xkXGRcZFxkXGRcZFwuXGQrL10sWyJISG1tc3MsU1NTUyIsL1xk''@;'; put 'put ''XGRcZFxkXGRcZCxcZCsvXSxbIkhIbW1zcyIsL1xkXGRcZFxkXGRcZC9dLFsiSEhtbSIsL1xkXGRcZFxkL10sWyJISCIsL1xkXGQvXV0sSjI9L15cLz9EYXRlXCgoLT9cZCspL2ksdWQ9L14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XHMpPyhcZHsxLDJ9KVxzKEphbnxGZWJ8''@;'; put 'put ''TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxzKFxkezIsNH0pXHMoXGRcZCk6KFxkXGQpKD86OihcZFxkKSk/XHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cZHs0fSkpJC8sWDI9e1VUOjAsR01UOjAsRURUOi0yNDAsRVNUOi0zMDAsQ0RUOi0z''@;'; put 'put ''MDAsQ1NUOi0zNjAsTURUOi0zNjAsTVNUOi00MjAsUERUOi00MjAsUFNUOi00ODB9O2Z1bmN0aW9uIExsKFdlKXt2YXIgT3QsZG4sS3IsUWksc2EsaWwsQm49V2UuX2ksdHI9R2cuZXhlYyhCbil8fFYxLmV4ZWMoQm4pLHJzPV9hLmxlbmd0aCxlYz1oYS5sZW5ndGg7aWYodHIpe2ZvcihKKFdl''@;'; put 'put ''KS5pc289ITAsT3Q9MCxkbj1ycztPdDxkbjtPdCsrKWlmKF9hW090XVsxXS5leGVjKHRyWzFdKSl7UWk9X2FbT3RdWzBdLEtyPSExIT09X2FbT3RdWzJdO2JyZWFrfWlmKG51bGw9PVFpKXJldHVybiB2b2lkKFdlLl9pc1ZhbGlkPSExKTtpZih0clszXSl7Zm9yKE90PTAsZG49ZWM7T3Q8ZG47''@;'; put 'put ''T3QrKylpZihoYVtPdF1bMV0uZXhlYyh0clszXSkpe3NhPSh0clsyXXx8IiAiKStoYVtPdF1bMF07YnJlYWt9aWYobnVsbD09c2EpcmV0dXJuIHZvaWQoV2UuX2lzVmFsaWQ9ITEpfWlmKCFLciYmbnVsbCE9c2EpcmV0dXJuIHZvaWQoV2UuX2lzVmFsaWQ9ITEpO2lmKHRyWzRdKXtpZigheW8u''@;'; put 'put ''ZXhlYyh0cls0XSkpcmV0dXJuIHZvaWQoV2UuX2lzVmFsaWQ9ITEpO2lsPSJaIn1XZS5fZj1RaSsoc2F8fCIiKSsoaWx8fCIiKSxsdShXZSl9ZWxzZSBXZS5faXNWYWxpZD0hMX1mdW5jdGlvbiBScChXZSl7dmFyIE90PXBhcnNlSW50KFdlLDEwKTtyZXR1cm4gT3Q8PTQ5PzJlMytPdDpPdDw9''@;'; put 'put ''OTk5PzE5MDArT3Q6T3R9ZnVuY3Rpb24gbnMoV2Upe3ZhciBkbixPdD11ZC5leGVjKGZ1bmN0aW9uIGI0KFdlKXtyZXR1cm4gV2UucmVwbGFjZSgvXChbXigpXSpcKXxbXG5cdF0vZywiICIpLnJlcGxhY2UoLyhcc1xzKykvZywiICIpLnJlcGxhY2UoL15cc1xzKi8sIiIpLnJlcGxhY2UoL1xz''@;'; put 'put ''XHMqJC8sIiIpfShXZS5faSkpO2lmKE90KXtpZihkbj1mdW5jdGlvbiBPMihXZSxPdCxkbixCbix0cixLcil7dmFyIFFpPVtScChXZSksbGkuaW5kZXhPZihPdCkscGFyc2VJbnQoZG4sMTApLHBhcnNlSW50KEJuLDEwKSxwYXJzZUludCh0ciwxMCldO3JldHVybiBLciYmUWkucHVzaChwYXJz''@;'; put 'put ''ZUludChLciwxMCkpLFFpfShPdFs0XSxPdFszXSxPdFsyXSxPdFs1XSxPdFs2XSxPdFs3XSksIWZ1bmN0aW9uIHBvKFdlLE90LGRuKXtyZXR1cm4hV2V8fGIyLmluZGV4T2YoV2UpPT09bmV3IERhdGUoT3RbMF0sT3RbMV0sT3RbMl0pLmdldERheSgpfHwoSihkbikud2Vla2RheU1pc21hdGNo''@;'; put 'put ''PSEwLGRuLl9pc1ZhbGlkPSExLCExKX0oT3RbMV0sZG4sV2UpKXJldHVybjtXZS5fYT1kbixXZS5fdHptPWZ1bmN0aW9uIFEwKFdlLE90LGRuKXtpZihXZSlyZXR1cm4gWDJbV2VdO2lmKE90KXJldHVybiAwO3ZhciBCbj1wYXJzZUludChkbiwxMCksdHI9Qm4lMTAwO3JldHVybihCbi10cikv''@;'; put 'put ''MTAwKjYwK3RyfShPdFs4XSxPdFs5XSxPdFsxMF0pLFdlLl9kPXdpLmFwcGx5KG51bGwsV2UuX2EpLFdlLl9kLnNldFVUQ01pbnV0ZXMoV2UuX2QuZ2V0VVRDTWludXRlcygpLVdlLl90em0pLEooV2UpLnJmYzI4MjI9ITB9ZWxzZSBXZS5faXNWYWxpZD0hMX1mdW5jdGlvbiBlYShXZSxPdCxk''@;'; put 'put ''bil7cmV0dXJuIG51bGwhPVdlP1dlOm51bGwhPU90P090OmRufWZ1bmN0aW9uIGoxKFdlKXt2YXIgT3QsZG4sdHIsS3IsUWksQm49W107aWYoIVdlLl9kKXtmb3IodHI9ZnVuY3Rpb24gQTEoV2Upe3ZhciBPdD1uZXcgRGF0ZShCLm5vdygpKTtyZXR1cm4gV2UuX3VzZVVUQz9bT3QuZ2V0VVRD''@;'; put 'put ''RnVsbFllYXIoKSxPdC5nZXRVVENNb250aCgpLE90LmdldFVUQ0RhdGUoKV06W090LmdldEZ1bGxZZWFyKCksT3QuZ2V0TW9udGgoKSxPdC5nZXREYXRlKCldfShXZSksV2UuX3cmJm51bGw9PVdlLl9hWzJdJiZudWxsPT1XZS5fYVsxXSYmZnVuY3Rpb24gbWMoV2Upe3ZhciBPdCxkbixCbix0''@;'; put 'put ''cixLcixRaSxzYSxpbCxycztudWxsIT0oT3Q9V2UuX3cpLkdHfHxudWxsIT1PdC5XfHxudWxsIT1PdC5FPyhLcj0xLFFpPTQsZG49ZWEoT3QuR0csV2UuX2FbMF0sYzIoUnMoKSwxLDQpLnllYXIpLEJuPWVhKE90LlcsMSksKCh0cj1lYShPdC5FLDEpKTwxfHx0cj43KSYmKGlsPSEwKSk6KEty''@;'; put 'put ''PVdlLl9sb2NhbGUuX3dlZWsuZG93LFFpPVdlLl9sb2NhbGUuX3dlZWsuZG95LHJzPWMyKFJzKCksS3IsUWkpLGRuPWVhKE90LmdnLFdlLl9hWzBdLHJzLnllYXIpLEJuPWVhKE90LncscnMud2VlayksbnVsbCE9T3QuZD8oKHRyPU90LmQpPDB8fHRyPjYpJiYoaWw9ITApOm51bGwhPU90LmU/''@;'; put 'put ''KHRyPU90LmUrS3IsKE90LmU8MHx8T3QuZT42KSYmKGlsPSEwKSk6dHI9S3IpLEJuPDF8fEJuPlNpKGRuLEtyLFFpKT9KKFdlKS5fb3ZlcmZsb3dXZWVrcz0hMDpudWxsIT1pbD9KKFdlKS5fb3ZlcmZsb3dXZWVrZGF5PSEwOihzYT1HbyhkbixCbix0cixLcixRaSksV2UuX2FbMF09c2EueWVh''@;'; put 'put ''cixXZS5fZGF5T2ZZZWFyPXNhLmRheU9mWWVhcil9KFdlKSxudWxsIT1XZS5fZGF5T2ZZZWFyJiYoUWk9ZWEoV2UuX2FbMF0sdHJbMF0pLChXZS5fZGF5T2ZZZWFyPk1hKFFpKXx8MD09PVdlLl9kYXlPZlllYXIpJiYoSihXZSkuX292ZXJmbG93RGF5T2ZZZWFyPSEwKSxkbj13aShRaSwwLFdl''@;'; put 'put ''Ll9kYXlPZlllYXIpLFdlLl9hWzFdPWRuLmdldFVUQ01vbnRoKCksV2UuX2FbMl09ZG4uZ2V0VVRDRGF0ZSgpKSxPdD0wO090PDMmJm51bGw9PVdlLl9hW090XTsrK090KVdlLl9hW090XT1CbltPdF09dHJbT3RdO2Zvcig7T3Q8NztPdCsrKVdlLl9hW090XT1CbltPdF09bnVsbD09V2UuX2Fb''@;'; put 'put ''T3RdPzI9PT1PdD8xOjA6V2UuX2FbT3RdOzI0PT09V2UuX2FbM10mJjA9PT1XZS5fYVs0XSYmMD09PVdlLl9hWzVdJiYwPT09V2UuX2FbNl0mJihXZS5fbmV4dERheT0hMCxXZS5fYVszXT0wKSxXZS5fZD0oV2UuX3VzZVVUQz93aTpwaSkuYXBwbHkobnVsbCxCbiksS3I9V2UuX3VzZVVUQz9X''@;'; put 'put ''ZS5fZC5nZXRVVENEYXkoKTpXZS5fZC5nZXREYXkoKSxudWxsIT1XZS5fdHptJiZXZS5fZC5zZXRVVENNaW51dGVzKFdlLl9kLmdldFVUQ01pbnV0ZXMoKS1XZS5fdHptKSxXZS5fbmV4dERheSYmKFdlLl9hWzNdPTI0KSxXZS5fdyYmdm9pZCAwIT09V2UuX3cuZCYmV2UuX3cuZCE9PUtyJiYo''@;'; put 'put ''SihXZSkud2Vla2RheU1pc21hdGNoPSEwKX19ZnVuY3Rpb24gbHUoV2Upe2lmKFdlLl9mIT09Qi5JU09fODYwMSlpZihXZS5fZiE9PUIuUkZDXzI4MjIpe1dlLl9hPVtdLEooV2UpLmVtcHR5PSEwO3ZhciBkbixCbix0cixLcixRaSxycyxlYyxPdD0iIitXZS5faSxzYT1PdC5sZW5ndGgsaWw9''@;'; put 'put ''MDtmb3IoZWM9KHRyPWd0KFdlLl9mLFdlLl9sb2NhbGUpLm1hdGNoKFMpfHxbXSkubGVuZ3RoLGRuPTA7ZG48ZWM7ZG4rKykoQm49KE90Lm1hdGNoKEduKEtyPXRyW2RuXSxXZSkpfHxbXSlbMF0pJiYoKFFpPU90LnN1YnN0cigwLE90LmluZGV4T2YoQm4pKSkubGVuZ3RoPjAmJkooV2UpLnVu''@;'; put 'put ''dXNlZElucHV0LnB1c2goUWkpLE90PU90LnNsaWNlKE90LmluZGV4T2YoQm4pK0JuLmxlbmd0aCksaWwrPUJuLmxlbmd0aCksQ2VbS3JdPyhCbj9KKFdlKS5lbXB0eT0hMTpKKFdlKS51bnVzZWRUb2tlbnMucHVzaChLciksY24oS3IsQm4sV2UpKTpXZS5fc3RyaWN0JiYhQm4mJkooV2UpLnVu''@;'; put 'put ''dXNlZFRva2Vucy5wdXNoKEtyKTtKKFdlKS5jaGFyc0xlZnRPdmVyPXNhLWlsLE90Lmxlbmd0aD4wJiZKKFdlKS51bnVzZWRJbnB1dC5wdXNoKE90KSxXZS5fYVszXTw9MTImJiEwPT09SihXZSkuYmlnSG91ciYmV2UuX2FbM10+MCYmKEooV2UpLmJpZ0hvdXI9dm9pZCAwKSxKKFdlKS5wYXJz''@;'; put 'put ''ZWREYXRlUGFydHM9V2UuX2Euc2xpY2UoMCksSihXZSkubWVyaWRpZW09V2UuX21lcmlkaWVtLFdlLl9hWzNdPWZ1bmN0aW9uIGxmKFdlLE90LGRuKXt2YXIgQm47cmV0dXJuIG51bGw9PWRuP090Om51bGwhPVdlLm1lcmlkaWVtSG91cj9XZS5tZXJpZGllbUhvdXIoT3QsZG4pOihudWxsIT1X''@;'; put 'put ''ZS5pc1BNJiYoKEJuPVdlLmlzUE0oZG4pKSYmT3Q8MTImJihPdCs9MTIpLCFCbiYmMTI9PT1PdCYmKE90PTApKSxPdCl9KFdlLl9sb2NhbGUsV2UuX2FbM10sV2UuX21lcmlkaWVtKSxudWxsIT09KHJzPUooV2UpLmVyYSkmJihXZS5fYVswXT1XZS5fbG9jYWxlLmVyYXNDb252ZXJ0WWVhcihy''@;'; put 'put ''cyxXZS5fYVswXSkpLGoxKFdlKSxoMihXZSl9ZWxzZSBucyhXZSk7ZWxzZSBMbChXZSl9ZnVuY3Rpb24gaDkoV2Upe3ZhciBPdD1XZS5faSxkbj1XZS5fZjtyZXR1cm4gV2UuX2xvY2FsZT1XZS5fbG9jYWxlfHxhdShXZS5fbCksbnVsbD09PU90fHx2b2lkIDA9PT1kbiYmIiI9PT1PdD9mZSh7''@;'; put 'put ''bnVsbElucHV0OiEwfSk6KCJzdHJpbmciPT10eXBlb2YgT3QmJihXZS5faT1PdD1XZS5fbG9jYWxlLnByZXBhcnNlKE90KSksU2UoT3QpP25ldyBrZShoMihPdCkpOihZKE90KT9XZS5fZD1PdDpNZShkbik/ZnVuY3Rpb24geWgoV2Upe3ZhciBPdCxkbixCbix0cixLcixRaSxzYT0hMSxpbD1X''@;'; put 'put ''ZS5fZi5sZW5ndGg7aWYoMD09PWlsKXJldHVybiBKKFdlKS5pbnZhbGlkRm9ybWF0PSEwLHZvaWQoV2UuX2Q9bmV3IERhdGUoTmFOKSk7Zm9yKHRyPTA7dHI8aWw7dHIrKylLcj0wLFFpPSExLE90PUFlKHt9LFdlKSxudWxsIT1XZS5fdXNlVVRDJiYoT3QuX3VzZVVUQz1XZS5fdXNlVVRDKSxP''@;'; put 'put ''dC5fZj1XZS5fZlt0cl0sbHUoT3QpLGFlKE90KSYmKFFpPSEwKSxLcis9SihPdCkuY2hhcnNMZWZ0T3ZlcixLcis9MTAqSihPdCkudW51c2VkVG9rZW5zLmxlbmd0aCxKKE90KS5zY29yZT1LcixzYT9LcjxCbiYmKEJuPUtyLGRuPU90KToobnVsbD09Qm58fEtyPEJufHxRaSkmJihCbj1Lcixk''@;'; put 'put ''bj1PdCxRaSYmKHNhPSEwKSk7TihXZSxkbnx8T3QpfShXZSk6ZG4/bHUoV2UpOmZ1bmN0aW9uIEt1KFdlKXt2YXIgT3Q9V2UuX2k7aWUoT3QpP1dlLl9kPW5ldyBEYXRlKEIubm93KCkpOlkoT3QpP1dlLl9kPW5ldyBEYXRlKE90LnZhbHVlT2YoKSk6InN0cmluZyI9PXR5cGVvZiBPdD9mdW5j''@;'; put 'put ''dGlvbiBBYShXZSl7dmFyIE90PUoyLmV4ZWMoV2UuX2kpO251bGw9PT1PdD8oTGwoV2UpLCExPT09V2UuX2lzVmFsaWQmJihkZWxldGUgV2UuX2lzVmFsaWQsbnMoV2UpLCExPT09V2UuX2lzVmFsaWQmJihkZWxldGUgV2UuX2lzVmFsaWQsV2UuX3N0cmljdD9XZS5faXNWYWxpZD0hMTpCLmNy''@;'; put 'put ''ZWF0ZUZyb21JbnB1dEZhbGxiYWNrKFdlKSkpKTpXZS5fZD1uZXcgRGF0ZSgrT3RbMV0pfShXZSk6TWUoT3QpPyhXZS5fYT1XKE90LnNsaWNlKDApLGZ1bmN0aW9uKGRuKXtyZXR1cm4gcGFyc2VJbnQoZG4sMTApfSksajEoV2UpKTpVKE90KT9mdW5jdGlvbiBubChXZSl7aWYoIVdlLl9kKXt2''@;'; put 'put ''YXIgT3Q9Y3QoV2UuX2kpO1dlLl9hPVcoW090LnllYXIsT3QubW9udGgsdm9pZCAwPT09T3QuZGF5P090LmRhdGU6T3QuZGF5LE90LmhvdXIsT3QubWludXRlLE90LnNlY29uZCxPdC5taWxsaXNlY29uZF0sZnVuY3Rpb24oQm4pe3JldHVybiBCbiYmcGFyc2VJbnQoQm4sMTApfSksajEoV2Up''@;'; put 'put ''fX0oV2UpOmxlKE90KT9XZS5fZD1uZXcgRGF0ZShPdCk6Qi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhXZSl9KFdlKSxhZShXZSl8fChXZS5fZD1udWxsKSxXZSkpfWZ1bmN0aW9uIFRvKFdlLE90LGRuLEJuLHRyKXt2YXIgS3I9e307cmV0dXJuKCEwPT09T3R8fCExPT09T3QpJiYoQm49T3Qs''@;'; put 'put ''T3Q9dm9pZCAwKSwoITA9PT1kbnx8ITE9PT1kbikmJihCbj1kbixkbj12b2lkIDApLChVKFdlKSYmWihXZSl8fE1lKFdlKSYmMD09PVdlLmxlbmd0aCkmJihXZT12b2lkIDApLEtyLl9pc0FNb21lbnRPYmplY3Q9ITAsS3IuX3VzZVVUQz1Lci5faXNVVEM9dHIsS3IuX2w9ZG4sS3IuX2k9V2Us''@;'; put 'put ''S3IuX2Y9T3QsS3IuX3N0cmljdD1CbixmdW5jdGlvbiBzdShXZSl7dmFyIE90PW5ldyBrZShoMihoOShXZSkpKTtyZXR1cm4gT3QuX25leHREYXkmJihPdC5hZGQoMSwiZCIpLE90Ll9uZXh0RGF5PXZvaWQgMCksT3R9KEtyKX1mdW5jdGlvbiBScyhXZSxPdCxkbixCbil7cmV0dXJuIFRvKFdl''@;'; put 'put ''LE90LGRuLEJuLCExKX1CLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrPVRlKCJ2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgd2hpY2ggaXMgbm90IHJl''@;'; put 'put ''bGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSBkaXNjb3VyYWdlZC4gUGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4i''@;'; put 'put ''LGZ1bmN0aW9uKFdlKXtXZS5fZD1uZXcgRGF0ZShXZS5faSsoV2UuX3VzZVVUQz8iIFVUQyI6IiIpKX0pLEIuSVNPXzg2MDE9ZnVuY3Rpb24oKXt9LEIuUkZDXzI4MjI9ZnVuY3Rpb24oKXt9O3ZhciBXZz1UZSgibW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGlu''@;'; put 'put ''c3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8iLGZ1bmN0aW9uKCl7dmFyIFdlPVJzLmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJldlLmlzVmFsaWQoKT9XZTx0aGlzP3RoaXM6V2U6ZmUoKX0pLFlnPVRlKCJt''@;'; put 'put ''b21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIgV2U9UnMuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYm''@;'; put 'put ''V2UuaXNWYWxpZCgpP1dlPnRoaXM/dGhpczpXZTpmZSgpfSk7ZnVuY3Rpb24gc2YoV2UsT3Qpe3ZhciBkbixCbjtpZigxPT09T3QubGVuZ3RoJiZNZShPdFswXSkmJihPdD1PdFswXSksIU90Lmxlbmd0aClyZXR1cm4gUnMoKTtmb3IoZG49T3RbMF0sQm49MTtCbjxPdC5sZW5ndGg7KytCbiko''@;'; put 'put ''IU90W0JuXS5pc1ZhbGlkKCl8fE90W0JuXVtXZV0oZG4pKSYmKGRuPU90W0JuXSk7cmV0dXJuIGRufXZhciBGZj1bInllYXIiLCJxdWFydGVyIiwibW9udGgiLCJ3ZWVrIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIl07ZnVuY3Rpb24gUHAoV2Upe3ZhciBP''@;'; put 'put ''dD1jdChXZSksZG49T3QueWVhcnx8MCxCbj1PdC5xdWFydGVyfHwwLHRyPU90Lm1vbnRofHwwLEtyPU90LndlZWt8fE90Lmlzb1dlZWt8fDAsUWk9T3QuZGF5fHwwLHNhPU90LmhvdXJ8fDAsaWw9T3QubWludXRlfHwwLHJzPU90LnNlY29uZHx8MCxlYz1PdC5taWxsaXNlY29uZHx8MDt0aGlz''@;'; put 'put ''Ll9pc1ZhbGlkPWZ1bmN0aW9uIHNiKFdlKXt2YXIgT3QsQm4sZG49ITEsdHI9RmYubGVuZ3RoO2ZvcihPdCBpbiBXZSlpZihRKFdlLE90KSYmKC0xPT09VnIuY2FsbChGZixPdCl8fG51bGwhPVdlW090XSYmaXNOYU4oV2VbT3RdKSkpcmV0dXJuITE7Zm9yKEJuPTA7Qm48dHI7KytCbilpZihX''@;'; put 'put ''ZVtGZltCbl1dKXtpZihkbilyZXR1cm4hMTtwYXJzZUZsb2F0KFdlW0ZmW0JuXV0pIT09SnQoV2VbRmZbQm5dXSkmJihkbj0hMCl9cmV0dXJuITB9KE90KSx0aGlzLl9taWxsaXNlY29uZHM9K2VjKzFlMypycys2ZTQqaWwrMWUzKnNhKjYwKjYwLHRoaXMuX2RheXM9K1FpKzcqS3IsdGhpcy5f''@;'; put 'put ''bW9udGhzPSt0ciszKkJuKzEyKmRuLHRoaXMuX2RhdGE9e30sdGhpcy5fbG9jYWxlPWF1KCksdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gZDkoV2Upe3JldHVybiBXZSBpbnN0YW5jZW9mIFBwfWZ1bmN0aW9uIFVnKFdlKXtyZXR1cm4gV2U8MD8tMSpNYXRoLnJvdW5kKC0xKldlKTpNYXRoLnJv''@;'; put 'put ''dW5kKFdlKX1mdW5jdGlvbiBRZyhXZSxPdCl7RGUoV2UsMCwwLGZ1bmN0aW9uKCl7dmFyIGRuPXRoaXMudXRjT2Zmc2V0KCksQm49IisiO3JldHVybiBkbjwwJiYoZG49LWRuLEJuPSItIiksQm4rVCh+fihkbi82MCksMikrT3QrVCh+fmRuJTYwLDIpfSl9UWcoIloiLCI6IiksUWcoIlpaIiwi''@;'; put 'put ''IiksdG4oIloiLFZ0KSx0bigiWloiLFZ0KSx2bihbIloiLCJaWiJdLGZ1bmN0aW9uKFdlLE90LGRuKXtkbi5fdXNlVVRDPSEwLGRuLl90em09cDkoVnQsV2UpfSk7dmFyIFZNPS8oW1wrXC1dfFxkXGQpL2dpO2Z1bmN0aW9uIHA5KFdlLE90KXt2YXIgdHIsS3IsZG49KE90fHwiIikubWF0Y2go''@;'; put 'put ''V2UpO3JldHVybiBudWxsPT09ZG4/bnVsbDowPT09KEtyPTYwKih0cj0oKGRuW2RuLmxlbmd0aC0xXXx8W10pKyIiKS5tYXRjaChWTSl8fFsiLSIsMCwwXSlbMV0rSnQodHJbMl0pKT8wOiIrIj09PXRyWzBdP0tyOi1Lcn1mdW5jdGlvbiBKZyhXZSxPdCl7dmFyIGRuLEJuO3JldHVybiBPdC5f''@;'; put 'put ''aXNVVEM/KGRuPU90LmNsb25lKCksQm49KFNlKFdlKXx8WShXZSk/V2UudmFsdWVPZigpOlJzKFdlKS52YWx1ZU9mKCkpLWRuLnZhbHVlT2YoKSxkbi5fZC5zZXRUaW1lKGRuLl9kLnZhbHVlT2YoKStCbiksQi51cGRhdGVPZmZzZXQoZG4sITEpLGRuKTpScyhXZSkubG9jYWwoKX1mdW5jdGlv''@;'; put 'put ''biBiaChXZSl7cmV0dXJuLU1hdGgucm91bmQoV2UuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSl9ZnVuY3Rpb24gZzkoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiZ0aGlzLl9pc1VUQyYmMD09PXRoaXMuX29mZnNldH1CLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe307dmFyICRnPS9eKC18XCsp''@;'; put 'put ''Pyg/OihcZCopWy4gXSk/KFxkKyk6KFxkKykoPzo6KFxkKykoXC5cZCopPyk/JC8sazg9L14oLXxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5d''@;'; put 'put ''KilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO2Z1bmN0aW9uIFlzKFdlLE90KXt2YXIgdHIsS3IsUWksZG49V2UsQm49bnVsbDtyZXR1cm4gZDkoV2UpP2RuPXttczpXZS5fbWlsbGlzZWNvbmRzLGQ6V2UuX2RheXMsTTpXZS5fbW9udGhzfTpsZShX''@;'; put 'put ''ZSl8fCFpc05hTigrV2UpPyhkbj17fSxPdD9kbltPdF09K1dlOmRuLm1pbGxpc2Vjb25kcz0rV2UpOihCbj0kZy5leGVjKFdlKSk/KHRyPSItIj09PUJuWzFdPy0xOjEsZG49e3k6MCxkOkp0KEJuWzJdKSp0cixoOkp0KEJuWzNdKSp0cixtOkp0KEJuWzRdKSp0cixzOkp0KEJuWzVdKSp0cixt''@;'; put 'put ''czpKdChVZygxZTMqQm5bNl0pKSp0cn0pOihCbj1rOC5leGVjKFdlKSk/ZG49e3k6SGYoQm5bMl0sdHI9Ii0iPT09Qm5bMV0/LTE6MSksTTpIZihCblszXSx0ciksdzpIZihCbls0XSx0ciksZDpIZihCbls1XSx0ciksaDpIZihCbls2XSx0ciksbTpIZihCbls3XSx0ciksczpIZihCbls4XSx0''@;'; put 'put ''cil9Om51bGw9PWRuP2RuPXt9OiJvYmplY3QiPT10eXBlb2YgZG4mJigiZnJvbSJpbiBkbnx8InRvImluIGRuKSYmKFFpPWZ1bmN0aW9uIE5wKFdlLE90KXt2YXIgZG47cmV0dXJuIFdlLmlzVmFsaWQoKSYmT3QuaXNWYWxpZCgpPyhPdD1KZyhPdCxXZSksV2UuaXNCZWZvcmUoT3QpP2RuPXFn''@;'; put 'put ''KFdlLE90KTooKGRuPXFnKE90LFdlKSkubWlsbGlzZWNvbmRzPS1kbi5taWxsaXNlY29uZHMsZG4ubW9udGhzPS1kbi5tb250aHMpLGRuKTp7bWlsbGlzZWNvbmRzOjAsbW9udGhzOjB9fShScyhkbi5mcm9tKSxScyhkbi50bykpLChkbj17fSkubXM9UWkubWlsbGlzZWNvbmRzLGRuLk09UWku''@;'; put 'put ''bW9udGhzKSxLcj1uZXcgUHAoZG4pLGQ5KFdlKSYmUShXZSwiX2xvY2FsZSIpJiYoS3IuX2xvY2FsZT1XZS5fbG9jYWxlKSxkOShXZSkmJlEoV2UsIl9pc1ZhbGlkIikmJihLci5faXNWYWxpZD1XZS5faXNWYWxpZCksS3J9ZnVuY3Rpb24gSGYoV2UsT3Qpe3ZhciBkbj1XZSYmcGFyc2VGbG9h''@;'; put 'put ''dChXZS5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4oZG4pPzA6ZG4pKk90fWZ1bmN0aW9uIHFnKFdlLE90KXt2YXIgZG49e307cmV0dXJuIGRuLm1vbnRocz1PdC5tb250aCgpLVdlLm1vbnRoKCkrMTIqKE90LnllYXIoKS1XZS55ZWFyKCkpLFdlLmNsb25lKCkuYWRkKGRuLm1vbnRo''@;'; put 'put ''cywiTSIpLmlzQWZ0ZXIoT3QpJiYtLWRuLm1vbnRocyxkbi5taWxsaXNlY29uZHM9K090LStXZS5jbG9uZSgpLmFkZChkbi5tb250aHMsIk0iKSxkbn1mdW5jdGlvbiBjYihXZSxPdCl7cmV0dXJuIGZ1bmN0aW9uKGRuLEJuKXt2YXIgS3I7cmV0dXJuIG51bGwhPT1CbiYmIWlzTmFOKCtCbikm''@;'; put 'put ''JihoZShPdCwibW9tZW50KCkuIitPdCsiKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLiIrT3QrIihudW1iZXIsIHBlcmlvZCkuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9y''@;'; put 'put ''IG1vcmUgaW5mby4iKSxLcj1kbixkbj1CbixCbj1LciksRHUodGhpcyxZcyhkbixCbiksV2UpLHRoaXN9fWZ1bmN0aW9uIER1KFdlLE90LGRuLEJuKXt2YXIgdHI9T3QuX21pbGxpc2Vjb25kcyxLcj1VZyhPdC5fZGF5cyksUWk9VWcoT3QuX21vbnRocyk7IVdlLmlzVmFsaWQoKXx8KEJuPW51''@;'; put 'put ''bGw9PUJufHxCbixRaSYmajAoV2UscG4oV2UsIk1vbnRoIikrUWkqZG4pLEtyJiZibihXZSwiRGF0ZSIscG4oV2UsIkRhdGUiKStLcipkbiksdHImJldlLl9kLnNldFRpbWUoV2UuX2QudmFsdWVPZigpK3RyKmRuKSxCbiYmQi51cGRhdGVPZmZzZXQoV2UsS3J8fFFpKSl9WXMuZm49UHAucHJv''@;'; put 'put ''dG90eXBlLFlzLmludmFsaWQ9ZnVuY3Rpb24gd2goKXtyZXR1cm4gWXMoTmFOKX07dmFyIG05PWNiKDEsImFkZCIpLHpNPWNiKC0xLCJzdWJ0cmFjdCIpO2Z1bmN0aW9uIFM4KFdlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFdlfHxXZSBpbnN0YW5jZW9mIFN0cmluZ31mdW5jdGlvbiBaMShX''@;'; put 'put ''ZSl7cmV0dXJuIFNlKFdlKXx8WShXZSl8fFM4KFdlKXx8bGUoV2UpfHxmdW5jdGlvbiBmMShXZSl7dmFyIE90PU1lKFdlKSxkbj0hMTtyZXR1cm4gT3QmJihkbj0wPT09V2UuZmlsdGVyKGZ1bmN0aW9uKEJuKXtyZXR1cm4hbGUoQm4pJiZTOChXZSl9KS5sZW5ndGgpLE90JiZkbn0oV2UpfHxm''@;'; put 'put ''dW5jdGlvbiBHTShXZSl7dmFyIHRyLE90PVUoV2UpJiYhWihXZSksZG49ITEsQm49WyJ5ZWFycyIsInllYXIiLCJ5IiwibW9udGhzIiwibW9udGgiLCJNIiwiZGF5cyIsImRheSIsImQiLCJkYXRlcyIsImRhdGUiLCJEIiwiaG91cnMiLCJob3VyIiwiaCIsIm1pbnV0ZXMiLCJtaW51dGUiLCJt''@;'; put 'put ''Iiwic2Vjb25kcyIsInNlY29uZCIsInMiLCJtaWxsaXNlY29uZHMiLCJtaWxsaXNlY29uZCIsIm1zIl0sUWk9Qm4ubGVuZ3RoO2Zvcih0cj0wO3RyPFFpO3RyKz0xKWRuPWRufHxRKFdlLEJuW3RyXSk7cmV0dXJuIE90JiZkbn0oV2UpfHxudWxsPT1XZX1mdW5jdGlvbiB2OShXZSl7dmFyIHRy''@;'; put 'put ''LE90PVUoV2UpJiYhWihXZSksZG49ITEsQm49WyJzYW1lRGF5IiwibmV4dERheSIsImxhc3REYXkiLCJuZXh0V2VlayIsImxhc3RXZWVrIiwic2FtZUVsc2UiXTtmb3IodHI9MDt0cjxCbi5sZW5ndGg7dHIrPTEpZG49ZG58fFEoV2UsQm5bdHJdKTtyZXR1cm4gT3QmJmRufWZ1bmN0aW9uIE91''@;'; put 'put ''KFdlLE90KXtpZihXZS5kYXRlKCk8T3QuZGF0ZSgpKXJldHVybi1PdShPdCxXZSk7dmFyIGRuPTEyKihPdC55ZWFyKCktV2UueWVhcigpKSsoT3QubW9udGgoKS1XZS5tb250aCgpKSxCbj1XZS5jbG9uZSgpLmFkZChkbiwibW9udGhzIik7cmV0dXJuLShkbisoT3QtQm48MD8oT3QtQm4pLyhC''@;'; put 'put ''bi1XZS5jbG9uZSgpLmFkZChkbi0xLCJtb250aHMiKSk6KE90LUJuKS8oV2UuY2xvbmUoKS5hZGQoZG4rMSwibW9udGhzIiktQm4pKSl8fDB9ZnVuY3Rpb24gZHQoV2Upe3ZhciBPdDtyZXR1cm4gdm9pZCAwPT09V2U/dGhpcy5fbG9jYWxlLl9hYmJyOihudWxsIT0oT3Q9YXUoV2UpKSYmKHRo''@;'; put 'put ''aXMuX2xvY2FsZT1PdCksdGhpcyl9Qi5kZWZhdWx0Rm9ybWF0PSJZWVlZLU1NLUREVEhIOm1tOnNzWiIsQi5kZWZhdWx0Rm9ybWF0VXRjPSJZWVlZLU1NLUREVEhIOm1tOnNzW1pdIjt2YXIgRHQ9VGUoIm1vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50''@;'; put 'put ''KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuIixmdW5jdGlvbihXZSl7cmV0dXJuIHZvaWQgMD09PVdlP3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKFdlKX0pO2Z1''@;'; put 'put ''bmN0aW9uIFh0KCl7cmV0dXJuIHRoaXMuX2xvY2FsZX12YXIgVHQ9NmU0LGE9NjAqVHQsYnQ9MzUwNjMyOCphO2Z1bmN0aW9uIGFyKFdlLE90KXtyZXR1cm4oV2UlT3QrT3QpJU90fWZ1bmN0aW9uIE5pKFdlLE90LGRuKXtyZXR1cm4gV2U8MTAwJiZXZT49MD9uZXcgRGF0ZShXZSs0MDAsT3Qs''@;'; put 'put ''ZG4pLWJ0Om5ldyBEYXRlKFdlLE90LGRuKS52YWx1ZU9mKCl9ZnVuY3Rpb24gV24oV2UsT3QsZG4pe3JldHVybiBXZTwxMDAmJldlPj0wP0RhdGUuVVRDKFdlKzQwMCxPdCxkbiktYnQ6RGF0ZS5VVEMoV2UsT3QsZG4pfWZ1bmN0aW9uIEdsKFdlLE90KXtyZXR1cm4gT3QuZXJhc0FiYnJSZWdl''@;'; put 'put ''eChXZSl9ZnVuY3Rpb24gRTgoKXt2YXIgdHIsS3IsV2U9W10sT3Q9W10sZG49W10sQm49W10sUWk9dGhpcy5lcmFzKCk7Zm9yKHRyPTAsS3I9UWkubGVuZ3RoO3RyPEtyOysrdHIpT3QucHVzaChQbihRaVt0cl0ubmFtZSkpLFdlLnB1c2goUG4oUWlbdHJdLmFiYnIpKSxkbi5wdXNoKFBuKFFp''@;'; put 'put ''W3RyXS5uYXJyb3cpKSxCbi5wdXNoKFBuKFFpW3RyXS5uYW1lKSksQm4ucHVzaChQbihRaVt0cl0uYWJicikpLEJuLnB1c2goUG4oUWlbdHJdLm5hcnJvdykpO3RoaXMuX2VyYXNSZWdleD1uZXcgUmVnRXhwKCJeKCIrQm4uam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX2VyYXNOYW1lUmVnZXg9''@;'; put 'put ''bmV3IFJlZ0V4cCgiXigiK090LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzQWJiclJlZ2V4PW5ldyBSZWdFeHAoIl4oIitXZS5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fZXJhc05hcnJvd1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitkbi5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24g''@;'; put 'put ''aGQoV2UsT3Qpe0RlKDAsW1dlLFdlLmxlbmd0aF0sMCxPdCl9ZnVuY3Rpb24gcGIoV2UsT3QsZG4sQm4sdHIpe3ZhciBLcjtyZXR1cm4gbnVsbD09V2U/YzIodGhpcyxCbix0cikueWVhcjooT3Q+KEtyPVNpKFdlLEJuLHRyKSkmJihPdD1LciksUU0uY2FsbCh0aGlzLFdlLE90LGRuLEJuLHRy''@;'; put 'put ''KSl9ZnVuY3Rpb24gUU0oV2UsT3QsZG4sQm4sdHIpe3ZhciBLcj1HbyhXZSxPdCxkbixCbix0ciksUWk9d2koS3IueWVhciwwLEtyLmRheU9mWWVhcik7cmV0dXJuIHRoaXMueWVhcihRaS5nZXRVVENGdWxsWWVhcigpKSx0aGlzLm1vbnRoKFFpLmdldFVUQ01vbnRoKCkpLHRoaXMuZGF0ZShR''@;'; put 'put ''aS5nZXRVVENEYXRlKCkpLHRoaXN9RGUoIk4iLDAsMCwiZXJhQWJiciIpLERlKCJOTiIsMCwwLCJlcmFBYmJyIiksRGUoIk5OTiIsMCwwLCJlcmFBYmJyIiksRGUoIk5OTk4iLDAsMCwiZXJhTmFtZSIpLERlKCJOTk5OTiIsMCwwLCJlcmFOYXJyb3ciKSxEZSgieSIsWyJ5IiwxXSwieW8iLCJl''@;'; put 'put ''cmFZZWFyIiksRGUoInkiLFsieXkiLDJdLDAsImVyYVllYXIiKSxEZSgieSIsWyJ5eXkiLDNdLDAsImVyYVllYXIiKSxEZSgieSIsWyJ5eXl5Iiw0XSwwLCJlcmFZZWFyIiksdG4oIk4iLEdsKSx0bigiTk4iLEdsKSx0bigiTk5OIixHbCksdG4oIk5OTk4iLGZ1bmN0aW9uIGxhKFdlLE90KXty''@;'; put 'put ''ZXR1cm4gT3QuZXJhc05hbWVSZWdleChXZSl9KSx0bigiTk5OTk4iLGZ1bmN0aW9uIElhKFdlLE90KXtyZXR1cm4gT3QuZXJhc05hcnJvd1JlZ2V4KFdlKX0pLHZuKFsiTiIsIk5OIiwiTk5OIiwiTk5OTiIsIk5OTk5OIl0sZnVuY3Rpb24oV2UsT3QsZG4sQm4pe3ZhciB0cj1kbi5fbG9jYWxl''@;'; put 'put ''LmVyYXNQYXJzZShXZSxCbixkbi5fc3RyaWN0KTt0cj9KKGRuKS5lcmE9dHI6SihkbikuaW52YWxpZEVyYT1XZX0pLHRuKCJ5IixZdCksdG4oInl5IixZdCksdG4oInl5eSIsWXQpLHRuKCJ5eXl5IixZdCksdG4oInlvIixmdW5jdGlvbiBNOChXZSxPdCl7cmV0dXJuIE90Ll9lcmFZZWFyT3Jk''@;'; put 'put ''aW5hbFJlZ2V4fHxZdH0pLHZuKFsieSIsInl5IiwieXl5IiwieXl5eSJdLDApLHZuKFsieW8iXSxmdW5jdGlvbihXZSxPdCxkbixCbil7dmFyIHRyO2RuLl9sb2NhbGUuX2VyYVllYXJPcmRpbmFsUmVnZXgmJih0cj1XZS5tYXRjaChkbi5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KSks''@;'; put 'put ''T3RbMF09ZG4uX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlP2RuLl9sb2NhbGUuZXJhWWVhck9yZGluYWxQYXJzZShXZSx0cik6cGFyc2VJbnQoV2UsMTApfSksRGUoMCxbImdnIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla1llYXIoKSUxMDB9KSxEZSgwLFsiR0ciLDJdLDAs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpJTEwMH0pLGhkKCJnZ2dnIiwid2Vla1llYXIiKSxoZCgiZ2dnZ2ciLCJ3ZWVrWWVhciIpLGhkKCJHR0dHIiwiaXNvV2Vla1llYXIiKSxoZCgiR0dHR0ciLCJpc29XZWVrWWVhciIpLFJ0KCJ3ZWVrWWVhciIsImdnIiksUnQoImlz''@;'; put 'put ''b1dlZWtZZWFyIiwiR0ciKSx6ZSgid2Vla1llYXIiLDEpLHplKCJpc29XZWVrWWVhciIsMSksdG4oIkciLGduKSx0bigiZyIsZ24pLHRuKCJHRyIseHIsZXIpLHRuKCJnZyIseHIsZXIpLHRuKCJHR0dHIix3bixYbiksdG4oImdnZ2ciLHduLFhuKSx0bigiR0dHR0ciLCRuLEZyKSx0bigiZ2dn''@;'; put 'put ''Z2ciLCRuLEZyKSx1bihbImdnZ2ciLCJnZ2dnZyIsIkdHR0ciLCJHR0dHRyJdLGZ1bmN0aW9uKFdlLE90LGRuLEJuKXtPdFtCbi5zdWJzdHIoMCwyKV09SnQoV2UpfSksdW4oWyJnZyIsIkdHIl0sZnVuY3Rpb24oV2UsT3QsZG4sQm4pe090W0JuXT1CLnBhcnNlVHdvRGlnaXRZZWFyKFdlKX0p''@;'; put 'put ''LERlKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSxSdCgicXVhcnRlciIsIlEiKSx6ZSgicXVhcnRlciIsNyksdG4oIlEiLGtuKSx2bigiUSIsZnVuY3Rpb24oV2UsT3Qpe090WzFdPTMqKEp0KFdlKS0xKX0pLERlKCJEIixbIkREIiwyXSwiRG8iLCJkYXRlIiksUnQoImRhdGUiLCJEIiksemUoImRh''@;'; put 'put ''dGUiLDkpLHRuKCJEIix4ciksdG4oIkREIix4cixlciksdG4oIkRvIixmdW5jdGlvbihXZSxPdCl7cmV0dXJuIFdlP090Ll9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlfHxPdC5fb3JkaW5hbFBhcnNlOk90Ll9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudH0pLHZuKFsiRCIsIkREIl0sMiks''@;'; put 'put ''dm4oIkRvIixmdW5jdGlvbihXZSxPdCl7T3RbMl09SnQoV2UubWF0Y2goeHIpWzBdKX0pO3ZhciBwMj1tbigiRGF0ZSIsITApO0RlKCJEREQiLFsiRERERCIsM10sIkRERG8iLCJkYXlPZlllYXIiKSxSdCgiZGF5T2ZZZWFyIiwiREREIiksemUoImRheU9mWWVhciIsNCksdG4oIkRERCIsbnIp''@;'; put 'put ''LHRuKCJEREREIix1ciksdm4oWyJEREQiLCJEREREIl0sZnVuY3Rpb24oV2UsT3QsZG4pe2RuLl9kYXlPZlllYXI9SnQoV2UpfSksRGUoIm0iLFsibW0iLDJdLDAsIm1pbnV0ZSIpLFJ0KCJtaW51dGUiLCJtIiksemUoIm1pbnV0ZSIsMTQpLHRuKCJtIix4ciksdG4oIm1tIix4cixlciksdm4o''@;'; put 'put ''WyJtIiwibW0iXSw0KTt2YXIgZ2Q9bW4oIk1pbnV0ZXMiLCExKTtEZSgicyIsWyJzcyIsMl0sMCwic2Vjb25kIiksUnQoInNlY29uZCIsInMiKSx6ZSgic2Vjb25kIiwxNSksdG4oInMiLHhyKSx0bigic3MiLHhyLGVyKSx2bihbInMiLCJzcyJdLDUpO3ZhciBOYyx6cCxacD1tbigiU2Vjb25k''@;'; put 'put ''cyIsITEpO2ZvcihEZSgiUyIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJufn4odGhpcy5taWxsaXNlY29uZCgpLzEwMCl9KSxEZSgwLFsiU1MiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSksRGUoMCxbIlNTUyIsM10sMCwibWlsbGlzZWNvbmQiKSxEZSgw''@;'; put 'put ''LFsiU1NTUyIsNF0sMCxmdW5jdGlvbigpe3JldHVybiAxMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSxEZSgwLFsiU1NTU1MiLDVdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMTAwKnRoaXMubWlsbGlzZWNvbmQoKX0pLERlKDAsWyJTU1NTU1MiLDZdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWUzKnRoaXMu''@;'; put 'put ''bWlsbGlzZWNvbmQoKX0pLERlKDAsWyJTU1NTU1NTIiw3XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDFlNCp0aGlzLm1pbGxpc2Vjb25kKCl9KSxEZSgwLFsiU1NTU1NTU1MiLDhdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU1KnRoaXMubWlsbGlzZWNvbmQoKX0pLERlKDAsWyJTU1NTU1NTU1MiLDld''@;'; put 'put ''LDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU2KnRoaXMubWlsbGlzZWNvbmQoKX0pLFJ0KCJtaWxsaXNlY29uZCIsIm1zIiksemUoIm1pbGxpc2Vjb25kIiwxNiksdG4oIlMiLG5yLGtuKSx0bigiU1MiLG5yLGVyKSx0bigiU1NTIixucix1ciksTmM9IlNTU1MiO05jLmxlbmd0aDw9OTtOYys9IlMi''@;'; put 'put ''KXRuKE5jLFl0KTtmdW5jdGlvbiBnYihXZSxPdCl7T3RbNl09SnQoMWUzKigiMC4iK1dlKSl9Zm9yKE5jPSJTIjtOYy5sZW5ndGg8PTk7TmMrPSJTIil2bihOYyxnYik7enA9bW4oIk1pbGxpc2Vjb25kcyIsITEpLERlKCJ6IiwwLDAsInpvbmVBYmJyIiksRGUoInp6IiwwLDAsInpvbmVOYW1l''@;'; put 'put ''Iik7dmFyIHFpPWtlLnByb3RvdHlwZTtmdW5jdGlvbiBFcyhXZSl7cmV0dXJuIFdlfXFpLmFkZD1tOSxxaS5jYWxlbmRhcj1mdW5jdGlvbiBWcChXZSxPdCl7MT09PWFyZ3VtZW50cy5sZW5ndGgmJihhcmd1bWVudHNbMF0/WjEoYXJndW1lbnRzWzBdKT8oV2U9YXJndW1lbnRzWzBdLE90PXZv''@;'; put 'put ''aWQgMCk6djkoYXJndW1lbnRzWzBdKSYmKE90PWFyZ3VtZW50c1swXSxXZT12b2lkIDApOihXZT12b2lkIDAsT3Q9dm9pZCAwKSk7dmFyIGRuPVdlfHxScygpLEJuPUpnKGRuLHRoaXMpLnN0YXJ0T2YoImRheSIpLHRyPUIuY2FsZW5kYXJGb3JtYXQodGhpcyxCbil8fCJzYW1lRWxzZSIsS3I9''@;'; put 'put ''T3QmJihPKE90W3RyXSk/T3RbdHJdLmNhbGwodGhpcyxkbik6T3RbdHJdKTtyZXR1cm4gdGhpcy5mb3JtYXQoS3J8fHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKHRyLHRoaXMsUnMoZG4pKSl9LHFpLmNsb25lPWZ1bmN0aW9uIHZjKCl7cmV0dXJuIG5ldyBrZSh0aGlzKX0scWkuZGlmZj1m''@;'; put 'put ''dW5jdGlvbiBOZihXZSxPdCxkbil7dmFyIEJuLHRyLEtyO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gTmFOO2lmKCEoQm49SmcoV2UsdGhpcykpLmlzVmFsaWQoKSlyZXR1cm4gTmFOO3N3aXRjaCh0cj02ZTQqKEJuLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpLE90PUN0KE90KSl7''@;'; put 'put ''Y2FzZSJ5ZWFyIjpLcj1PdSh0aGlzLEJuKS8xMjticmVhaztjYXNlIm1vbnRoIjpLcj1PdSh0aGlzLEJuKTticmVhaztjYXNlInF1YXJ0ZXIiOktyPU91KHRoaXMsQm4pLzM7YnJlYWs7Y2FzZSJzZWNvbmQiOktyPSh0aGlzLUJuKS8xZTM7YnJlYWs7Y2FzZSJtaW51dGUiOktyPSh0aGlzLUJu''@;'; put 'put ''KS82ZTQ7YnJlYWs7Y2FzZSJob3VyIjpLcj0odGhpcy1CbikvMzZlNTticmVhaztjYXNlImRheSI6S3I9KHRoaXMtQm4tdHIpLzg2NGU1O2JyZWFrO2Nhc2Uid2VlayI6S3I9KHRoaXMtQm4tdHIpLzYwNDhlNTticmVhaztkZWZhdWx0OktyPXRoaXMtQm59cmV0dXJuIGRuP0tyOmp0KEtyKX0s''@;'; put 'put ''cWkuZW5kT2Y9ZnVuY3Rpb24gd28oV2Upe3ZhciBPdCxkbjtpZih2b2lkIDA9PT0oV2U9Q3QoV2UpKXx8Im1pbGxpc2Vjb25kIj09PVdlfHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dpdGNoKGRuPXRoaXMuX2lzVVRDP1duOk5pLFdlKXtjYXNlInllYXIiOk90PWRuKHRoaXMueWVh''@;'; put 'put ''cigpKzEsMCwxKS0xO2JyZWFrO2Nhc2UicXVhcnRlciI6T3Q9ZG4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLXRoaXMubW9udGgoKSUzKzMsMSktMTticmVhaztjYXNlIm1vbnRoIjpPdD1kbih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCkrMSwxKS0xO2JyZWFrO2Nhc2Uid2VlayI6T3Q9ZG4o''@;'; put 'put ''dGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKzcpLTE7YnJlYWs7Y2FzZSJpc29XZWVrIjpPdD1kbih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktKHRoaXMuaXNvV2Vla2RheSgpLTEpKzcpLTE7YnJlYWs7Y2FzZSJkYXkiOmNh''@;'; put 'put ''c2UiZGF0ZSI6T3Q9ZG4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpKzEpLTE7YnJlYWs7Y2FzZSJob3VyIjpPdD10aGlzLl9kLnZhbHVlT2YoKSxPdCs9YS1hcihPdCsodGhpcy5faXNVVEM/MDp0aGlzLnV0Y09mZnNldCgpKlR0KSxhKS0xO2JyZWFrO2Nhc2UibWludXRl''@;'; put 'put ''IjpPdD10aGlzLl9kLnZhbHVlT2YoKSxPdCs9VHQtYXIoT3QsVHQpLTE7YnJlYWs7Y2FzZSJzZWNvbmQiOk90PXRoaXMuX2QudmFsdWVPZigpLE90Kz0xZTMtYXIoT3QsMWUzKS0xfXJldHVybiB0aGlzLl9kLnNldFRpbWUoT3QpLEIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXN9LHFpLmZv''@;'; put 'put ''cm1hdD1mdW5jdGlvbiBqcChXZSl7V2V8fChXZT10aGlzLmlzVXRjKCk/Qi5kZWZhdWx0Rm9ybWF0VXRjOkIuZGVmYXVsdEZvcm1hdCk7dmFyIE90PSRlKHRoaXMsV2UpO3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KE90KX0scWkuZnJvbT1mdW5jdGlvbiBXTShXZSxPdCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoU2UoV2UpJiZXZS5pc1ZhbGlkKCl8fFJzKFdlKS5pc1ZhbGlkKCkpP1lzKHt0bzp0aGlzLGZyb206V2V9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIU90KTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxxaS5mcm9tTm93''@;'; put 'put ''PWZ1bmN0aW9uIGEyKFdlKXtyZXR1cm4gdGhpcy5mcm9tKFJzKCksV2UpfSxxaS50bz1mdW5jdGlvbiBJUihXZSxPdCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoU2UoV2UpJiZXZS5pc1ZhbGlkKCl8fFJzKFdlKS5pc1ZhbGlkKCkpP1lzKHtmcm9tOnRoaXMsdG86V2V9KS5sb2NhbGUodGhp''@;'; put 'put ''cy5sb2NhbGUoKSkuaHVtYW5pemUoIU90KTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxxaS50b05vdz1mdW5jdGlvbiBEUihXZSl7cmV0dXJuIHRoaXMudG8oUnMoKSxXZSl9LHFpLmdldD1mdW5jdGlvbiBsbihXZSl7cmV0dXJuIE8odGhpc1tXZT1DdChXZSldKT90aGlzW1dl''@;'; put 'put ''XSgpOnRoaXN9LHFpLmludmFsaWRBdD1mdW5jdGlvbiBfMigpe3JldHVybiBKKHRoaXMpLm92ZXJmbG93fSxxaS5pc0FmdGVyPWZ1bmN0aW9uIGhiKFdlLE90KXt2YXIgZG49U2UoV2UpP1dlOlJzKFdlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWRuLmlzVmFsaWQoKSkmJigibWlsbGlz''@;'; put 'put ''ZWNvbmQiPT09KE90PUN0KE90KXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk+ZG4udmFsdWVPZigpOmRuLnZhbHVlT2YoKTx0aGlzLmNsb25lKCkuc3RhcnRPZihPdCkudmFsdWVPZigpKX0scWkuaXNCZWZvcmU9ZnVuY3Rpb24gQTkoV2UsT3Qpe3ZhciBkbj1TZShXZSk/V2U6UnMo''@;'; put 'put ''V2UpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhZG4uaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0oT3Q9Q3QoT3QpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKTxkbi52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKE90KS52YWx1ZU9mKCk8ZG4udmFsdWVPZigpKX0s''@;'; put 'put ''cWkuaXNCZXR3ZWVuPWZ1bmN0aW9uIGZkKFdlLE90LGRuLEJuKXt2YXIgdHI9U2UoV2UpP1dlOlJzKFdlKSxLcj1TZShPdCk/T3Q6UnMoT3QpO3JldHVybiEhKHRoaXMuaXNWYWxpZCgpJiZ0ci5pc1ZhbGlkKCkmJktyLmlzVmFsaWQoKSkmJigiKCI9PT0oQm49Qm58fCIoKSIpWzBdP3RoaXMu''@;'; put 'put ''aXNBZnRlcih0cixkbik6IXRoaXMuaXNCZWZvcmUodHIsZG4pKSYmKCIpIj09PUJuWzFdP3RoaXMuaXNCZWZvcmUoS3IsZG4pOiF0aGlzLmlzQWZ0ZXIoS3IsZG4pKX0scWkuaXNTYW1lPWZ1bmN0aW9uICR1KFdlLE90KXt2YXIgQm4sZG49U2UoV2UpP1dlOlJzKFdlKTtyZXR1cm4hKCF0aGlz''@;'; put 'put ''LmlzVmFsaWQoKXx8IWRuLmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KE90PUN0KE90KXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk9PT1kbi52YWx1ZU9mKCk6KEJuPWRuLnZhbHVlT2YoKSx0aGlzLmNsb25lKCkuc3RhcnRPZihPdCkudmFsdWVPZigpPD1CbiYmQm48PXRo''@;'; put 'put ''aXMuY2xvbmUoKS5lbmRPZihPdCkudmFsdWVPZigpKSl9LHFpLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24gTHUoV2UsT3Qpe3JldHVybiB0aGlzLmlzU2FtZShXZSxPdCl8fHRoaXMuaXNBZnRlcihXZSxPdCl9LHFpLmlzU2FtZU9yQmVmb3JlPWZ1bmN0aW9uIGVtKFdlLE90KXtyZXR1cm4gdGhp''@;'; put 'put ''cy5pc1NhbWUoV2UsT3QpfHx0aGlzLmlzQmVmb3JlKFdlLE90KX0scWkuaXNWYWxpZD1mdW5jdGlvbiB4bigpe3JldHVybiBhZSh0aGlzKX0scWkubGFuZz1EdCxxaS5sb2NhbGU9ZHQscWkubG9jYWxlRGF0YT1YdCxxaS5tYXg9WWcscWkubWluPVdnLHFpLnBhcnNpbmdGbGFncz1mdW5jdGlv''@;'; put 'put ''biBSMigpe3JldHVybiBOKHt9LEoodGhpcykpfSxxaS5zZXQ9ZnVuY3Rpb24gTm4oV2UsT3Qpe2lmKCJvYmplY3QiPT10eXBlb2YgV2Upe3ZhciBCbixkbj1mdW5jdGlvbiBZZShXZSl7dmFyIGRuLE90PVtdO2ZvcihkbiBpbiBXZSlRKFdlLGRuKSYmT3QucHVzaCh7dW5pdDpkbixwcmlvcml0''@;'; put 'put ''eTpOdFtkbl19KTtyZXR1cm4gT3Quc29ydChmdW5jdGlvbihCbix0cil7cmV0dXJuIEJuLnByaW9yaXR5LXRyLnByaW9yaXR5fSksT3R9KFdlPWN0KFdlKSksdHI9ZG4ubGVuZ3RoO2ZvcihCbj0wO0JuPHRyO0JuKyspdGhpc1tkbltCbl0udW5pdF0oV2VbZG5bQm5dLnVuaXRdKX1lbHNlIGlm''@;'; put 'put ''KE8odGhpc1tXZT1DdChXZSldKSlyZXR1cm4gdGhpc1tXZV0oT3QpO3JldHVybiB0aGlzfSxxaS5zdGFydE9mPWZ1bmN0aW9uIF8oV2Upe3ZhciBPdCxkbjtpZih2b2lkIDA9PT0oV2U9Q3QoV2UpKXx8Im1pbGxpc2Vjb25kIj09PVdlfHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dp''@;'; put 'put ''dGNoKGRuPXRoaXMuX2lzVVRDP1duOk5pLFdlKXtjYXNlInllYXIiOk90PWRuKHRoaXMueWVhcigpLDAsMSk7YnJlYWs7Y2FzZSJxdWFydGVyIjpPdD1kbih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6T3Q9ZG4odGhpcy55ZWFy''@;'; put 'put ''KCksdGhpcy5tb250aCgpLDEpO2JyZWFrO2Nhc2Uid2VlayI6T3Q9ZG4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKTticmVhaztjYXNlImlzb1dlZWsiOk90PWRuKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5p''@;'; put 'put ''c29XZWVrZGF5KCktMSkpO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOk90PWRuKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSk7YnJlYWs7Y2FzZSJob3VyIjpPdD10aGlzLl9kLnZhbHVlT2YoKSxPdC09YXIoT3QrKHRoaXMuX2lzVVRDPzA6dGhpcy51dGNPZmZzZXQo''@;'; put 'put ''KSpUdCksYSk7YnJlYWs7Y2FzZSJtaW51dGUiOk90PXRoaXMuX2QudmFsdWVPZigpLE90LT1hcihPdCxUdCk7YnJlYWs7Y2FzZSJzZWNvbmQiOk90PXRoaXMuX2QudmFsdWVPZigpLE90LT1hcihPdCwxZTMpfXJldHVybiB0aGlzLl9kLnNldFRpbWUoT3QpLEIudXBkYXRlT2Zmc2V0KHRoaXMs''@;'; put 'put ''ITApLHRoaXN9LHFpLnN1YnRyYWN0PXpNLHFpLnRvQXJyYXk9ZnVuY3Rpb24gQWMoKXt2YXIgV2U9dGhpcztyZXR1cm5bV2UueWVhcigpLFdlLm1vbnRoKCksV2UuZGF0ZSgpLFdlLmhvdXIoKSxXZS5taW51dGUoKSxXZS5zZWNvbmQoKSxXZS5taWxsaXNlY29uZCgpXX0scWkudG9PYmplY3Q9''@;'; put 'put ''ZnVuY3Rpb24gSzIoKXt2YXIgV2U9dGhpcztyZXR1cm57eWVhcnM6V2UueWVhcigpLG1vbnRoczpXZS5tb250aCgpLGRhdGU6V2UuZGF0ZSgpLGhvdXJzOldlLmhvdXJzKCksbWludXRlczpXZS5taW51dGVzKCksc2Vjb25kczpXZS5zZWNvbmRzKCksbWlsbGlzZWNvbmRzOldlLm1pbGxpc2Vj''@;'; put 'put ''b25kcygpfX0scWkudG9EYXRlPWZ1bmN0aW9uIG9lKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKX0scWkudG9JU09TdHJpbmc9ZnVuY3Rpb24gZzMoV2Upe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbDt2YXIgT3Q9ITAhPT1XZSxkbj1PdD90aGlzLmNsb25lKCkudXRj''@;'; put 'put ''KCk6dGhpcztyZXR1cm4gZG4ueWVhcigpPDB8fGRuLnllYXIoKT45OTk5PyRlKGRuLE90PyJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iOiJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIik6TyhEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyk/T3Q/dGhpcy50b0RhdGUoKS50''@;'; put 'put ''b0lTT1N0cmluZygpOm5ldyBEYXRlKHRoaXMudmFsdWVPZigpKzYwKnRoaXMudXRjT2Zmc2V0KCkqMWUzKS50b0lTT1N0cmluZygpLnJlcGxhY2UoIloiLCRlKGRuLCJaIikpOiRlKGRuLE90PyJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNT''@;'; put 'put ''U1oiKX0scWkuaW5zcGVjdD1mdW5jdGlvbiBMYSgpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4ibW9tZW50LmludmFsaWQoLyogIit0aGlzLl9pKyIgKi8pIjt2YXIgZG4sQm4sV2U9Im1vbWVudCIsT3Q9IiI7cmV0dXJuIHRoaXMuaXNMb2NhbCgpfHwoV2U9MD09PXRoaXMudXRjT2Zmc2V0''@;'; put 'put ''KCk/Im1vbWVudC51dGMiOiJtb21lbnQucGFyc2Vab25lIixPdD0iWiIpLGRuPSJbIitXZSsnKCJdJyxCbj0wPD10aGlzLnllYXIoKSYmdGhpcy55ZWFyKCk8PTk5OTk/IllZWVkiOiJZWVlZWVkiLHRoaXMuZm9ybWF0KGRuK0JuKyItTU0tRERbVF1ISDptbTpzcy5TU1MiK090KydbIildJyl9''@;'; put 'put ''LCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1ib2wuZm9yJiYocWlbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09ZnVuY3Rpb24oKXtyZXR1cm4iTW9tZW50PCIrdGhpcy5mb3JtYXQoKSsiPiJ9KSxxaS50b0pTT049ZnVuY3Rpb24gTW4oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9LHFpLnRvU3RyaW5nPWZ1bmN0aW9uIEM0KCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoImVuIikuZm9ybWF0KCJkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWiIpfSxxaS51bml4PWZ1bmN0aW9u''@;'; put 'put ''ICRvKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0scWkudmFsdWVPZj1mdW5jdGlvbiBraSgpe3JldHVybiB0aGlzLl9kLnZhbHVlT2YoKS02ZTQqKHRoaXMuX29mZnNldHx8MCl9LHFpLmNyZWF0aW9uRGF0YT1mdW5jdGlvbiAkMigpe3JldHVybntpbnB1dDp0aGlz''@;'; put 'put ''Ll9pLGZvcm1hdDp0aGlzLl9mLGxvY2FsZTp0aGlzLl9sb2NhbGUsaXNVVEM6dGhpcy5faXNVVEMsc3RyaWN0OnRoaXMuX3N0cmljdH19LHFpLmVyYU5hbWU9ZnVuY3Rpb24gVU0oKXt2YXIgV2UsT3QsZG4sQm49dGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO2ZvcihXZT0wLE90PUJuLmxlbmd0''@;'; put 'put ''aDtXZTxPdDsrK1dlKWlmKGRuPXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksQm5bV2VdLnNpbmNlPD1kbiYmZG48PUJuW1dlXS51bnRpbHx8Qm5bV2VdLnVudGlsPD1kbiYmZG48PUJuW1dlXS5zaW5jZSlyZXR1cm4gQm5bV2VdLm5hbWU7cmV0dXJuIiJ9LHFpLmVyYU5h''@;'; put 'put ''cnJvdz1mdW5jdGlvbiB5OSgpe3ZhciBXZSxPdCxkbixCbj10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKFdlPTAsT3Q9Qm4ubGVuZ3RoO1dlPE90OysrV2UpaWYoZG49dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxCbltXZV0uc2luY2U8PWRuJiZkbjw9Qm5bV2Vd''@;'; put 'put ''LnVudGlsfHxCbltXZV0udW50aWw8PWRuJiZkbjw9Qm5bV2VdLnNpbmNlKXJldHVybiBCbltXZV0ubmFycm93O3JldHVybiIifSxxaS5lcmFBYmJyPWZ1bmN0aW9uIHc5KCl7dmFyIFdlLE90LGRuLEJuPXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtmb3IoV2U9MCxPdD1Cbi5sZW5ndGg7V2U8''@;'; put 'put ''T3Q7KytXZSlpZihkbj10aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLEJuW1dlXS5zaW5jZTw9ZG4mJmRuPD1CbltXZV0udW50aWx8fEJuW1dlXS51bnRpbDw9ZG4mJmRuPD1CbltXZV0uc2luY2UpcmV0dXJuIEJuW1dlXS5hYmJyO3JldHVybiIifSxxaS5lcmFZZWFyPWZ1''@;'; put 'put ''bmN0aW9uIE9uKCl7dmFyIFdlLE90LGRuLEJuLHRyPXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtmb3IoV2U9MCxPdD10ci5sZW5ndGg7V2U8T3Q7KytXZSlpZihkbj10cltXZV0uc2luY2U8PXRyW1dlXS51bnRpbD8xOi0xLEJuPXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9m''@;'; put 'put ''KCksdHJbV2VdLnNpbmNlPD1CbiYmQm48PXRyW1dlXS51bnRpbHx8dHJbV2VdLnVudGlsPD1CbiYmQm48PXRyW1dlXS5zaW5jZSlyZXR1cm4odGhpcy55ZWFyKCktQih0cltXZV0uc2luY2UpLnllYXIoKSkqZG4rdHJbV2VdLm9mZnNldDtyZXR1cm4gdGhpcy55ZWFyKCl9LHFpLnllYXI9eWws''@;'; put 'put ''cWkuaXNMZWFwWWVhcj1mdW5jdGlvbiBmbCgpe3JldHVybiBBdCh0aGlzLnllYXIoKSl9LHFpLndlZWtZZWFyPWZ1bmN0aW9uIFZmKFdlKXtyZXR1cm4gcGIuY2FsbCh0aGlzLFdlLHRoaXMud2VlaygpLHRoaXMud2Vla2RheSgpLHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyx0aGlzLmxv''@;'; put 'put ''Y2FsZURhdGEoKS5fd2Vlay5kb3kpfSxxaS5pc29XZWVrWWVhcj1mdW5jdGlvbiBxMihXZSl7cmV0dXJuIHBiLmNhbGwodGhpcyxXZSx0aGlzLmlzb1dlZWsoKSx0aGlzLmlzb1dlZWtkYXkoKSwxLDQpfSxxaS5xdWFydGVyPXFpLnF1YXJ0ZXJzPWZ1bmN0aW9uIHBkKFdlKXtyZXR1cm4gbnVs''@;'; put 'put ''bD09V2U/TWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKihXZS0xKSt0aGlzLm1vbnRoKCklMyl9LHFpLm1vbnRoPUFvLHFpLmRheXNJbk1vbnRoPWZ1bmN0aW9uIEtvKCl7cmV0dXJuIHRpKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSl9LHFpLndlZWs9cWkud2Vl''@;'; put 'put ''a3M9ZnVuY3Rpb24gVzAoV2Upe3ZhciBPdD10aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO3JldHVybiBudWxsPT1XZT9PdDp0aGlzLmFkZCg3KihXZS1PdCksImQiKX0scWkuaXNvV2Vlaz1xaS5pc29XZWVrcz1mdW5jdGlvbiBxbyhXZSl7dmFyIE90PWMyKHRoaXMsMSw0KS53ZWVrO3Jl''@;'; put 'put ''dHVybiBudWxsPT1XZT9PdDp0aGlzLmFkZCg3KihXZS1PdCksImQiKX0scWkud2Vla3NJblllYXI9ZnVuY3Rpb24gd2woKXt2YXIgV2U9dGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7cmV0dXJuIFNpKHRoaXMueWVhcigpLFdlLmRvdyxXZS5kb3kpfSxxaS53ZWVrc0luV2Vla1llYXI9ZnVuY3Rp''@;'; put 'put ''b24gdnIoKXt2YXIgV2U9dGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7cmV0dXJuIFNpKHRoaXMud2Vla1llYXIoKSxXZS5kb3csV2UuZG95KX0scWkuaXNvV2Vla3NJblllYXI9ZnVuY3Rpb24gejEoKXtyZXR1cm4gU2kodGhpcy55ZWFyKCksMSw0KX0scWkuaXNvV2Vla3NJbklTT1dlZWtZZWFy''@;'; put 'put ''PWZ1bmN0aW9uIGRkKCl7cmV0dXJuIFNpKHRoaXMuaXNvV2Vla1llYXIoKSwxLDQpfSxxaS5kYXRlPXAyLHFpLmRheT1xaS5kYXlzPWZ1bmN0aW9uIFh1KFdlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPVdlP3RoaXM6TmFOO3ZhciBPdD10aGlzLl9pc1VUQz90aGlzLl9kLmdl''@;'; put 'put ''dFVUQ0RheSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPVdlPyhXZT1mdW5jdGlvbiBLYShXZSxPdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBXZT9XZTppc05hTihXZSk/Im51bWJlciI9PXR5cGVvZihXZT1PdC53ZWVrZGF5c1BhcnNlKFdlKSk/V2U6bnVsbDpwYXJzZUludChX''@;'; put 'put ''ZSwxMCl9KFdlLHRoaXMubG9jYWxlRGF0YSgpKSx0aGlzLmFkZChXZS1PdCwiZCIpKTpPdH0scWkud2Vla2RheT1mdW5jdGlvbiBnYyhXZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT1XZT90aGlzOk5hTjt2YXIgT3Q9KHRoaXMuZGF5KCkrNy10aGlzLmxvY2FsZURhdGEoKS5f''@;'; put 'put ''d2Vlay5kb3cpJTc7cmV0dXJuIG51bGw9PVdlP090OnRoaXMuYWRkKFdlLU90LCJkIil9LHFpLmlzb1dlZWtkYXk9ZnVuY3Rpb24gdGwoV2Upe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9V2U/dGhpczpOYU47aWYobnVsbCE9V2Upe3ZhciBPdD1mdW5jdGlvbiBzbyhXZSxPdCl7''@;'; put 'put ''cmV0dXJuInN0cmluZyI9PXR5cGVvZiBXZT9PdC53ZWVrZGF5c1BhcnNlKFdlKSU3fHw3OmlzTmFOKFdlKT9udWxsOldlfShXZSx0aGlzLmxvY2FsZURhdGEoKSk7cmV0dXJuIHRoaXMuZGF5KHRoaXMuZGF5KCklNz9PdDpPdC03KX1yZXR1cm4gdGhpcy5kYXkoKXx8N30scWkuZGF5T2ZZZWFy''@;'; put 'put ''PWZ1bmN0aW9uIEpNKFdlKXt2YXIgT3Q9TWF0aC5yb3VuZCgodGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLXRoaXMuY2xvbmUoKS5zdGFydE9mKCJ5ZWFyIikpLzg2NGU1KSsxO3JldHVybiBudWxsPT1XZT9PdDp0aGlzLmFkZChXZS1PdCwiZCIpfSxxaS5ob3VyPXFpLmhvdXJzPW91LHFp''@;'; put 'put ''Lm1pbnV0ZT1xaS5taW51dGVzPWdkLHFpLnNlY29uZD1xaS5zZWNvbmRzPVpwLHFpLm1pbGxpc2Vjb25kPXFpLm1pbGxpc2Vjb25kcz16cCxxaS51dGNPZmZzZXQ9ZnVuY3Rpb24gSHAoV2UsT3QsZG4pe3ZhciB0cixCbj10aGlzLl9vZmZzZXR8fDA7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVy''@;'; put 'put ''biBudWxsIT1XZT90aGlzOk5hTjtpZihudWxsIT1XZSl7aWYoInN0cmluZyI9PXR5cGVvZiBXZSl7aWYobnVsbD09PShXZT1wOShWdCxXZSkpKXJldHVybiB0aGlzfWVsc2UgTWF0aC5hYnMoV2UpPDE2JiYhZG4mJihXZSo9NjApO3JldHVybiF0aGlzLl9pc1VUQyYmT3QmJih0cj1iaCh0aGlz''@;'; put 'put ''KSksdGhpcy5fb2Zmc2V0PVdlLHRoaXMuX2lzVVRDPSEwLG51bGwhPXRyJiZ0aGlzLmFkZCh0ciwibSIpLEJuIT09V2UmJighT3R8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/RHUodGhpcyxZcyhXZS1CbiwibSIpLDEsITEpOnRoaXMuX2NoYW5nZUluUHJvZ3Jlc3N8fCh0aGlzLl9jaGFuZ2VJ''@;'; put 'put ''blByb2dyZXNzPSEwLEIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M9bnVsbCkpLHRoaXN9cmV0dXJuIHRoaXMuX2lzVVRDP0JuOmJoKHRoaXMpfSxxaS51dGM9ZnVuY3Rpb24gdWIoV2Upe3JldHVybiB0aGlzLnV0Y09mZnNldCgwLFdlKX0scWkubG9jYWw9''@;'; put 'put ''ZnVuY3Rpb24gZTIoV2Upe3JldHVybiB0aGlzLl9pc1VUQyYmKHRoaXMudXRjT2Zmc2V0KDAsV2UpLHRoaXMuX2lzVVRDPSExLFdlJiZ0aGlzLnN1YnRyYWN0KGJoKHRoaXMpLCJtIikpLHRoaXN9LHFpLnBhcnNlWm9uZT1mdW5jdGlvbiB1Zigpe2lmKG51bGwhPXRoaXMuX3R6bSl0aGlzLnV0''@;'; put 'put ''Y09mZnNldCh0aGlzLl90em0sITEsITApO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLl9pKXt2YXIgV2U9cDkoS24sdGhpcy5faSk7bnVsbCE9V2U/dGhpcy51dGNPZmZzZXQoV2UpOnRoaXMudXRjT2Zmc2V0KDAsITApfXJldHVybiB0aGlzfSxxaS5oYXNBbGlnbmVkSG91ck9mZnNl''@;'; put 'put ''dD1mdW5jdGlvbiBYZyhXZSl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmKFdlPVdlP1JzKFdlKS51dGNPZmZzZXQoKTowLCh0aGlzLnV0Y09mZnNldCgpLVdlKSU2MD09MCl9LHFpLmlzRFNUPWZ1bmN0aW9uIEtnKCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRo''@;'; put 'put ''KDApLnV0Y09mZnNldCgpfHx0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKX0scWkuaXNMb2NhbD1mdW5jdGlvbiBaTSgpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJiF0aGlzLl9pc1VUQ30scWkuaXNVdGNPZmZzZXQ9ZnVuY3Rpb24gZDIoKXtyZXR1''@;'; put 'put ''cm4hIXRoaXMuaXNWYWxpZCgpJiZ0aGlzLl9pc1VUQ30scWkuaXNVdGM9ZzkscWkuaXNVVEM9ZzkscWkuem9uZUFiYnI9ZnVuY3Rpb24gYjkoKXtyZXR1cm4gdGhpcy5faXNVVEM/IlVUQyI6IiJ9LHFpLnpvbmVOYW1lPWZ1bmN0aW9uIGpmKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJDb29yZGlu''@;'; put 'put ''YXRlZCBVbml2ZXJzYWwgVGltZSI6IiJ9LHFpLmRhdGVzPVRlKCJkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLiIscDIpLHFpLm1vbnRocz1UZSgibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIixBbykscWkueWVh''@;'; put 'put ''cnM9VGUoInllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQiLHlsKSxxaS56b25lPVRlKCJtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJu''@;'; put 'put ''aW5ncy96b25lLyIsZnVuY3Rpb24gak0oV2UsT3Qpe3JldHVybiBudWxsIT1XZT8oInN0cmluZyIhPXR5cGVvZiBXZSYmKFdlPS1XZSksdGhpcy51dGNPZmZzZXQoV2UsT3QpLHRoaXMpOi10aGlzLnV0Y09mZnNldCgpfSkscWkuaXNEU1RTaGlmdGVkPVRlKCJpc0RTVFNoaWZ0ZWQgaXMgZGVw''@;'; put 'put ''cmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uIixmdW5jdGlvbiBjZCgpe2lmKCFpZSh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIE90LFdlPXt9''@;'; put 'put ''O3JldHVybiBBZShXZSx0aGlzKSwoV2U9aDkoV2UpKS5fYT8oT3Q9V2UuX2lzVVRDP2VlKFdlLl9hKTpScyhXZS5fYSksdGhpcy5faXNEU1RTaGlmdGVkPXRoaXMuaXNWYWxpZCgpJiZmdW5jdGlvbiBGcChXZSxPdCxkbil7dmFyIFFpLEJuPU1hdGgubWluKFdlLmxlbmd0aCxPdC5sZW5ndGgp''@;'; put 'put ''LHRyPU1hdGguYWJzKFdlLmxlbmd0aC1PdC5sZW5ndGgpLEtyPTA7Zm9yKFFpPTA7UWk8Qm47UWkrKykoZG4mJldlW1FpXSE9PU90W1FpXXx8IWRuJiZKdChXZVtRaV0pIT09SnQoT3RbUWldKSkmJktyKys7cmV0dXJuIEtyK3RyfShXZS5fYSxPdC50b0FycmF5KCkpPjApOnRoaXMuX2lzRFNU''@;'; put 'put ''U2hpZnRlZD0hMSx0aGlzLl9pc0RTVFNoaWZ0ZWR9KTt2YXIgSm89dGUucHJvdG90eXBlO2Z1bmN0aW9uIEcxKFdlLE90LGRuLEJuKXt2YXIgdHI9YXUoKSxLcj1lZSgpLnNldChCbixPdCk7cmV0dXJuIHRyW2RuXShLcixXZSl9ZnVuY3Rpb24gZTEoV2UsT3QsZG4pe2lmKGxlKFdlKSYmKE90''@;'; put 'put ''PVdlLFdlPXZvaWQgMCksV2U9V2V8fCIiLG51bGwhPU90KXJldHVybiBHMShXZSxPdCxkbiwibW9udGgiKTt2YXIgQm4sdHI9W107Zm9yKEJuPTA7Qm48MTI7Qm4rKyl0cltCbl09RzEoV2UsQm4sZG4sIm1vbnRoIik7cmV0dXJuIHRyfWZ1bmN0aW9uIGNmKFdlLE90LGRuLEJuKXsiYm9vbGVh''@;'; put 'put ''biI9PXR5cGVvZiBXZT8obGUoT3QpJiYoZG49T3QsT3Q9dm9pZCAwKSxPdD1PdHx8IiIpOihkbj1PdD1XZSxXZT0hMSxsZShPdCkmJihkbj1PdCxPdD12b2lkIDApLE90PU90fHwiIik7dmFyIFFpLHRyPWF1KCksS3I9V2U/dHIuX3dlZWsuZG93OjAsc2E9W107aWYobnVsbCE9ZG4pcmV0dXJu''@;'; put 'put ''IEcxKE90LChkbitLciklNyxCbiwiZGF5Iik7Zm9yKFFpPTA7UWk8NztRaSsrKXNhW1FpXT1HMShPdCwoUWkrS3IpJTcsQm4sImRheSIpO3JldHVybiBzYX1Kby5jYWxlbmRhcj1mdW5jdGlvbiBWKFdlLE90LGRuKXt2YXIgQm49dGhpcy5fY2FsZW5kYXJbV2VdfHx0aGlzLl9jYWxlbmRhci5z''@;'; put 'put ''YW1lRWxzZTtyZXR1cm4gTyhCbik/Qm4uY2FsbChPdCxkbik6Qm59LEpvLmxvbmdEYXRlRm9ybWF0PWZ1bmN0aW9uIHB0KFdlKXt2YXIgT3Q9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbV2VdLGRuPXRoaXMuX2xvbmdEYXRlRm9ybWF0W1dlLnRvVXBwZXJDYXNlKCldO3JldHVybiBPdHx8IWRuP090''@;'; put 'put ''Oih0aGlzLl9sb25nRGF0ZUZvcm1hdFtXZV09ZG4ubWF0Y2goUykubWFwKGZ1bmN0aW9uKEJuKXtyZXR1cm4iTU1NTSI9PT1Cbnx8Ik1NIj09PUJufHwiREQiPT09Qm58fCJkZGRkIj09PUJuP0JuLnNsaWNlKDEpOkJufSkuam9pbigiIiksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbV2VdKX0sSm8u''@;'; put 'put ''aW52YWxpZERhdGU9ZnVuY3Rpb24gdnQoKXtyZXR1cm4gdGhpcy5faW52YWxpZERhdGV9LEpvLm9yZGluYWw9ZnVuY3Rpb24gb24oV2Upe3JldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoIiVkIixXZSl9LEpvLnByZXBhcnNlPUVzLEpvLnBvc3Rmb3JtYXQ9RXMsSm8ucmVsYXRpdmVUaW1l''@;'; put 'put ''PWZ1bmN0aW9uIG50KFdlLE90LGRuLEJuKXt2YXIgdHI9dGhpcy5fcmVsYXRpdmVUaW1lW2RuXTtyZXR1cm4gTyh0cik/dHIoV2UsT3QsZG4sQm4pOnRyLnJlcGxhY2UoLyVkL2ksV2UpfSxKby5wYXN0RnV0dXJlPWZ1bmN0aW9uIHFlKFdlLE90KXt2YXIgZG49dGhpcy5fcmVsYXRpdmVUaW1l''@;'; put 'put ''W1dlPjA/ImZ1dHVyZSI6InBhc3QiXTtyZXR1cm4gTyhkbik/ZG4oT3QpOmRuLnJlcGxhY2UoLyVzL2ksT3QpfSxKby5zZXQ9ZnVuY3Rpb24geihXZSl7dmFyIE90LGRuO2ZvcihkbiBpbiBXZSlRKFdlLGRuKSYmKE8oT3Q9V2VbZG5dKT90aGlzW2RuXT1PdDp0aGlzWyJfIitkbl09T3QpO3Ro''@;'; put 'put ''aXMuX2NvbmZpZz1XZSx0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZXx8dGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfSxKby5lcmFzPWZ1bmN0aW9u''@;'; put 'put ''IE1zKFdlLE90KXt2YXIgZG4sQm4sdHIsS3I9dGhpcy5fZXJhc3x8YXUoImVuIikuX2VyYXM7Zm9yKGRuPTAsQm49S3IubGVuZ3RoO2RuPEJuOysrZG4pc3dpdGNoKCJzdHJpbmciPT10eXBlb2YgS3JbZG5dLnNpbmNlJiYodHI9QihLcltkbl0uc2luY2UpLnN0YXJ0T2YoImRheSIpLEtyW2Ru''@;'; put 'put ''XS5zaW5jZT10ci52YWx1ZU9mKCkpLHR5cGVvZiBLcltkbl0udW50aWwpe2Nhc2UidW5kZWZpbmVkIjpLcltkbl0udW50aWw9MS8wO2JyZWFrO2Nhc2Uic3RyaW5nIjp0cj1CKEtyW2RuXS51bnRpbCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLEtyW2RuXS51bnRpbD10ci52YWx1ZU9mKCl9''@;'; put 'put ''cmV0dXJuIEtyfSxKby5lcmFzUGFyc2U9ZnVuY3Rpb24gZGIoV2UsT3QsZG4pe3ZhciBCbix0cixRaSxzYSxpbCxLcj10aGlzLmVyYXMoKTtmb3IoV2U9V2UudG9VcHBlckNhc2UoKSxCbj0wLHRyPUtyLmxlbmd0aDtCbjx0cjsrK0JuKWlmKFFpPUtyW0JuXS5uYW1lLnRvVXBwZXJDYXNlKCks''@;'; put 'put ''c2E9S3JbQm5dLmFiYnIudG9VcHBlckNhc2UoKSxpbD1LcltCbl0ubmFycm93LnRvVXBwZXJDYXNlKCksZG4pc3dpdGNoKE90KXtjYXNlIk4iOmNhc2UiTk4iOmNhc2UiTk5OIjppZihzYT09PVdlKXJldHVybiBLcltCbl07YnJlYWs7Y2FzZSJOTk5OIjppZihRaT09PVdlKXJldHVybiBLcltC''@;'; put 'put ''bl07YnJlYWs7Y2FzZSJOTk5OTiI6aWYoaWw9PT1XZSlyZXR1cm4gS3JbQm5dfWVsc2UgaWYoW1FpLHNhLGlsXS5pbmRleE9mKFdlKT49MClyZXR1cm4gS3JbQm5dfSxKby5lcmFzQ29udmVydFllYXI9ZnVuY3Rpb24gWU0oV2UsT3Qpe3ZhciBkbj1XZS5zaW5jZTw9V2UudW50aWw/MTotMTty''@;'; put 'put ''ZXR1cm4gdm9pZCAwPT09T3Q/QihXZS5zaW5jZSkueWVhcigpOkIoV2Uuc2luY2UpLnllYXIoKSsoT3QtV2Uub2Zmc2V0KSpkbn0sSm8uZXJhc0FiYnJSZWdleD1mdW5jdGlvbiBlbyhXZSl7cmV0dXJuIFEodGhpcywiX2VyYXNBYmJyUmVnZXgiKXx8RTguY2FsbCh0aGlzKSxXZT90aGlzLl9l''@;'; put 'put ''cmFzQWJiclJlZ2V4OnRoaXMuX2VyYXNSZWdleH0sSm8uZXJhc05hbWVSZWdleD1mdW5jdGlvbiB5YyhXZSl7cmV0dXJuIFEodGhpcywiX2VyYXNOYW1lUmVnZXgiKXx8RTguY2FsbCh0aGlzKSxXZT90aGlzLl9lcmFzTmFtZVJlZ2V4OnRoaXMuX2VyYXNSZWdleH0sSm8uZXJhc05hcnJvd1Jl''@;'; put 'put ''Z2V4PWZ1bmN0aW9uIEYwKFdlKXtyZXR1cm4gUSh0aGlzLCJfZXJhc05hcnJvd1JlZ2V4Iil8fEU4LmNhbGwodGhpcyksV2U/dGhpcy5fZXJhc05hcnJvd1JlZ2V4OnRoaXMuX2VyYXNSZWdleH0sSm8ubW9udGhzPWZ1bmN0aW9uIGQwKFdlLE90KXtyZXR1cm4gV2U/TWUodGhpcy5fbW9udGhz''@;'; put 'put ''KT90aGlzLl9tb250aHNbV2UubW9udGgoKV06dGhpcy5fbW9udGhzWyh0aGlzLl9tb250aHMuaXNGb3JtYXR8fElpKS50ZXN0KE90KT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW1dlLm1vbnRoKCldOk1lKHRoaXMuX21vbnRocyk/dGhpcy5fbW9udGhzOnRoaXMuX21vbnRocy5zdGFuZGFsb25l''@;'; put 'put ''fSxKby5tb250aHNTaG9ydD1mdW5jdGlvbiBfMChXZSxPdCl7cmV0dXJuIFdlP01lKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydFtXZS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydFtJaS50ZXN0KE90KT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW1dlLm1vbnRoKCldOk1l''@;'; put 'put ''KHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydDp0aGlzLl9tb250aHNTaG9ydC5zdGFuZGFsb25lfSxKby5tb250aHNQYXJzZT1mdW5jdGlvbiBCaShXZSxPdCxkbil7dmFyIEJuLHRyLEtyO2lmKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpcmV0dXJuIFUwLmNhbGwodGhpcyxX''@;'; put 'put ''ZSxPdCxkbik7Zm9yKHRoaXMuX21vbnRoc1BhcnNlfHwodGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10pLEJuPTA7Qm48MTI7Qm4rKyl7aWYodHI9ZWUoWzJlMyxCbl0pLGRuJiYhdGhpcy5fbG9uZ01vbnRoc1Bh''@;'; put 'put ''cnNlW0JuXSYmKHRoaXMuX2xvbmdNb250aHNQYXJzZVtCbl09bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHModHIsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW0JuXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRoc1Nob3J0KHRyLCIiKS5yZXBs''@;'; put 'put ''YWNlKCIuIiwiIikrIiQiLCJpIikpLCFkbiYmIXRoaXMuX21vbnRoc1BhcnNlW0JuXSYmKEtyPSJeIit0aGlzLm1vbnRocyh0ciwiIikrInxeIit0aGlzLm1vbnRoc1Nob3J0KHRyLCIiKSx0aGlzLl9tb250aHNQYXJzZVtCbl09bmV3IFJlZ0V4cChLci5yZXBsYWNlKCIuIiwiIiksImkiKSks''@;'; put 'put ''ZG4mJiJNTU1NIj09PU90JiZ0aGlzLl9sb25nTW9udGhzUGFyc2VbQm5dLnRlc3QoV2UpKXJldHVybiBCbjtpZihkbiYmIk1NTSI9PT1PdCYmdGhpcy5fc2hvcnRNb250aHNQYXJzZVtCbl0udGVzdChXZSkpcmV0dXJuIEJuO2lmKCFkbiYmdGhpcy5fbW9udGhzUGFyc2VbQm5dLnRlc3QoV2Up''@;'; put 'put ''KXJldHVybiBCbn19LEpvLm1vbnRoc1JlZ2V4PWZ1bmN0aW9uIGVsKFdlKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oUSh0aGlzLCJfbW9udGhzUmVnZXgiKXx8SmkuY2FsbCh0aGlzKSxXZT90aGlzLl9tb250aHNTdHJpY3RSZWdleDp0aGlzLl9tb250aHNSZWdleCk6KFEodGhp''@;'; put 'put ''cywiX21vbnRoc1JlZ2V4Iil8fCh0aGlzLl9tb250aHNSZWdleD1lMCksdGhpcy5fbW9udGhzU3RyaWN0UmVnZXgmJldlP3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KX0sSm8ubW9udGhzU2hvcnRSZWdleD1mdW5jdGlvbiBmYShXZSl7cmV0dXJuIHRoaXMuX21v''@;'; put 'put ''bnRoc1BhcnNlRXhhY3Q/KFEodGhpcywiX21vbnRoc1JlZ2V4Iil8fEppLmNhbGwodGhpcyksV2U/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl9tb250aHNTaG9ydFJlZ2V4KTooUSh0aGlzLCJfbW9udGhzU2hvcnRSZWdleCIpfHwodGhpcy5fbW9udGhzU2hvcnRSZWdleD1y''@;'; put 'put ''MCksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCYmV2U/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl9tb250aHNTaG9ydFJlZ2V4KX0sSm8ud2Vlaz1mdW5jdGlvbiBYbChXZSl7cmV0dXJuIGMyKFdlLHRoaXMuX3dlZWsuZG93LHRoaXMuX3dlZWsuZG95KS53ZWVrfSxK''@;'; put 'put ''by5maXJzdERheU9mWWVhcj1mdW5jdGlvbiBTcygpe3JldHVybiB0aGlzLl93ZWVrLmRveX0sSm8uZmlyc3REYXlPZldlZWs9ZnVuY3Rpb24gcTAoKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3d9LEpvLndlZWtkYXlzPWZ1bmN0aW9uIE9wKFdlLE90KXt2YXIgZG49TWUodGhpcy5fd2Vla2RheXMp''@;'; put 'put ''P3RoaXMuX3dlZWtkYXlzOnRoaXMuX3dlZWtkYXlzW1dlJiYhMCE9PVdlJiZ0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KE90KT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdO3JldHVybiEwPT09V2U/QW4oZG4sdGhpcy5fd2Vlay5kb3cpOldlP2RuW1dlLmRheSgpXTpkbn0sSm8ud2Vla2Rh''@;'; put 'put ''eXNNaW49ZnVuY3Rpb24gJHMoV2Upe3JldHVybiEwPT09V2U/QW4odGhpcy5fd2Vla2RheXNNaW4sdGhpcy5fd2Vlay5kb3cpOldlP3RoaXMuX3dlZWtkYXlzTWluW1dlLmRheSgpXTp0aGlzLl93ZWVrZGF5c01pbn0sSm8ud2Vla2RheXNTaG9ydD1mdW5jdGlvbiBKdShXZSl7cmV0dXJuITA9''@;'; put 'put ''PT1XZT9Bbih0aGlzLl93ZWVrZGF5c1Nob3J0LHRoaXMuX3dlZWsuZG93KTpXZT90aGlzLl93ZWVrZGF5c1Nob3J0W1dlLmRheSgpXTp0aGlzLl93ZWVrZGF5c1Nob3J0fSxKby53ZWVrZGF5c1BhcnNlPWZ1bmN0aW9uIFEyKFdlLE90LGRuKXt2YXIgQm4sdHIsS3I7aWYodGhpcy5fd2Vla2Rh''@;'; put 'put ''eXNQYXJzZUV4YWN0KXJldHVybiBEbC5jYWxsKHRoaXMsV2UsT3QsZG4pO2Zvcih0aGlzLl93ZWVrZGF5c1BhcnNlfHwodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9mdWxsV2Vla2RheXNQ''@;'; put 'put ''YXJzZT1bXSksQm49MDtCbjw3O0JuKyspe2lmKHRyPWVlKFsyZTMsMV0pLmRheShCbiksZG4mJiF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtCbl0mJih0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtCbl09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5cyh0ciwiIikucmVwbGFjZSgiLiIsIlxc''@;'; put 'put ''Lj8iKSsiJCIsImkiKSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbQm5dPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNTaG9ydCh0ciwiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlW0JuXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtk''@;'; put 'put ''YXlzTWluKHRyLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpKSx0aGlzLl93ZWVrZGF5c1BhcnNlW0JuXXx8KEtyPSJeIit0aGlzLndlZWtkYXlzKHRyLCIiKSsifF4iK3RoaXMud2Vla2RheXNTaG9ydCh0ciwiIikrInxeIit0aGlzLndlZWtkYXlzTWluKHRyLCIiKSx0aGlzLl93''@;'; put 'put ''ZWVrZGF5c1BhcnNlW0JuXT1uZXcgUmVnRXhwKEtyLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxkbiYmImRkZGQiPT09T3QmJnRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW0JuXS50ZXN0KFdlKSlyZXR1cm4gQm47aWYoZG4mJiJkZGQiPT09T3QmJnRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtCbl0u''@;'; put 'put ''dGVzdChXZSkpcmV0dXJuIEJuO2lmKGRuJiYiZGQiPT09T3QmJnRoaXMuX21pbldlZWtkYXlzUGFyc2VbQm5dLnRlc3QoV2UpKXJldHVybiBCbjtpZighZG4mJnRoaXMuX3dlZWtkYXlzUGFyc2VbQm5dLnRlc3QoV2UpKXJldHVybiBCbn19LEpvLndlZWtkYXlzUmVnZXg9ZnVuY3Rpb24gam8o''@;'; put 'put ''V2Upe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KFEodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8dW8uY2FsbCh0aGlzKSxXZT90aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzUmVnZXgpOihRKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCh0aGlzLl93ZWVr''@;'; put 'put ''ZGF5c1JlZ2V4PVJmKSx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4JiZXZT90aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzUmVnZXgpfSxKby53ZWVrZGF5c1Nob3J0UmVnZXg9ZnVuY3Rpb24gZGkoV2Upe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KFEo''@;'; put 'put ''dGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8dW8uY2FsbCh0aGlzKSxXZT90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KTooUSh0aGlzLCJfd2Vla2RheXNTaG9ydFJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9UXUpLHRoaXMu''@;'; put 'put ''X3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCYmV2U/dGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCl9LEpvLndlZWtkYXlzTWluUmVnZXg9ZnVuY3Rpb24gTjAoV2Upe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KFEodGhpcywi''@;'; put 'put ''X3dlZWtkYXlzUmVnZXgiKXx8dW8uY2FsbCh0aGlzKSxXZT90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpOihRKHRoaXMsIl93ZWVrZGF5c01pblJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c01pblJlZ2V4PUtzKSx0aGlzLl93ZWVrZGF5c01pblN0''@;'; put 'put ''cmljdFJlZ2V4JiZXZT90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpfSxKby5pc1BNPWZ1bmN0aW9uIEJmKFdlKXtyZXR1cm4icCI9PT0oV2UrIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApfSxKby5tZXJpZGllbT1mdW5jdGlvbiBybyhXZSxP''@;'; put 'put ''dCxkbil7cmV0dXJuIFdlPjExP2RuPyJwbSI6IlBNIjpkbj8iYW0iOiJBTSJ9LG0xKCJlbiIse2VyYXM6W3tzaW5jZToiMDAwMS0wMS0wMSIsdW50aWw6MS8wLG9mZnNldDoxLG5hbWU6IkFubm8gRG9taW5pIixuYXJyb3c6IkFEIixhYmJyOiJBRCJ9LHtzaW5jZToiMDAwMC0xMi0zMSIsdW50''@;'; put 'put ''aWw6LTEvMCxvZmZzZXQ6MSxuYW1lOiJCZWZvcmUgQ2hyaXN0IixuYXJyb3c6IkJDIixhYmJyOiJCQyJ9XSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHRofHN0fG5kfHJkKS8sb3JkaW5hbDpmdW5jdGlvbihXZSl7dmFyIE90PVdlJTEwO3JldHVybiBXZSsoMT09PUp0KFdlJTEw''@;'; put 'put ''MC8xMCk/InRoIjoxPT09T3Q/InN0IjoyPT09T3Q/Im5kIjozPT09T3Q/InJkIjoidGgiKX19KSxCLmxhbmc9VGUoIm1vbWVudC5sYW5nIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlIGluc3RlYWQuIixtMSksQi5sYW5nRGF0YT1UZSgibW9tZW50LmxhbmdEYXRhIGlzIGRlcHJl''@;'; put 'put ''Y2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLiIsYXUpO3ZhciBWYz1NYXRoLmFicztmdW5jdGlvbiBmZihXZSxPdCxkbixCbil7dmFyIHRyPVlzKE90LGRuKTtyZXR1cm4gV2UuX21pbGxpc2Vjb25kcys9Qm4qdHIuX21pbGxpc2Vjb25kcyxXZS5fZGF5cys9Qm4qdHIuX2Rh''@;'; put 'put ''eXMsV2UuX21vbnRocys9Qm4qdHIuX21vbnRocyxXZS5fYnViYmxlKCl9ZnVuY3Rpb24gbm0oV2Upe3JldHVybiBXZTwwP01hdGguZmxvb3IoV2UpOk1hdGguY2VpbChXZSl9ZnVuY3Rpb24gcm0oV2Upe3JldHVybiA0ODAwKldlLzE0NjA5N31mdW5jdGlvbiBUOChXZSl7cmV0dXJuIDE0NjA5''@;'; put 'put ''NypXZS80ODAwfWZ1bmN0aW9uIHkxKFdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcyhXZSl9fXZhciBtYj15MSgibXMiKSxtZD15MSgicyIpLEk4PXkxKCJtIiksWmM9eTEoImgiKSx6Zj15MSgiZCIpLEQ4PXkxKCJ3IiksTTQ9eTEoIk0iKSxDOT15MSgiUSIpLGltPXkxKCJ5''@;'; put 'put ''Iik7ZnVuY3Rpb24gaGYoV2Upe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLl9kYXRhW1dlXTpOYU59fXZhciBHcD1oZigibWlsbGlzZWNvbmRzIiksX2g9aGYoInNlY29uZHMiKSxLTT1oZigibWludXRlcyIpLGs5PWhmKCJob3VycyIpLFM5PWhmKCJkYXlz''@;'; put 'put ''IiksV3A9aGYoIm1vbnRocyIpLFJ1PWhmKCJ5ZWFycyIpO3ZhciB1dT1NYXRoLnJvdW5kLHF1PXtzczo0NCxzOjQ1LG06NDUsaDoyMixkOjI2LHc6bnVsbCxNOjExfTtmdW5jdGlvbiBPOChXZSxPdCxkbixCbix0cil7cmV0dXJuIHRyLnJlbGF0aXZlVGltZShPdHx8MSwhIWRuLFdlLEJuKX12''@;'; put 'put ''YXIgb209TWF0aC5hYnM7ZnVuY3Rpb24gdmQoV2Upe3JldHVybihXZT4wKS0oV2U8MCl8fCtXZX1mdW5jdGlvbiB2Mygpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTt2YXIgQm4sdHIsS3IsUWksaWwscnMsZWMsQTMsV2U9b20odGhp''@;'; put 'put ''cy5fbWlsbGlzZWNvbmRzKS8xZTMsT3Q9b20odGhpcy5fZGF5cyksZG49b20odGhpcy5fbW9udGhzKSxzYT10aGlzLmFzU2Vjb25kcygpO3JldHVybiBzYT8oQm49anQoV2UvNjApLHRyPWp0KEJuLzYwKSxXZSU9NjAsQm4lPTYwLEtyPWp0KGRuLzEyKSxkbiU9MTIsUWk9V2U/V2UudG9GaXhl''@;'; put 'put ''ZCgzKS5yZXBsYWNlKC9cLj8wKyQvLCIiKToiIixpbD1zYTwwPyItIjoiIixycz12ZCh0aGlzLl9tb250aHMpIT09dmQoc2EpPyItIjoiIixlYz12ZCh0aGlzLl9kYXlzKSE9PXZkKHNhKT8iLSI6IiIsQTM9dmQodGhpcy5fbWlsbGlzZWNvbmRzKSE9PXZkKHNhKT8iLSI6IiIsaWwrIlAiKyhL''@;'; put 'put ''cj9ycytLcisiWSI6IiIpKyhkbj9ycytkbisiTSI6IiIpKyhPdD9lYytPdCsiRCI6IiIpKyh0cnx8Qm58fFdlPyJUIjoiIikrKHRyP0EzK3RyKyJIIjoiIikrKEJuP0EzK0JuKyJNIjoiIikrKFdlP0EzK1FpKyJTIjoiIikpOiJQMEQifXZhciBibD1QcC5wcm90b3R5cGU7cmV0dXJuIGJsLmlz''@;'; put 'put ''VmFsaWQ9ZnVuY3Rpb24gTk0oKXtyZXR1cm4gdGhpcy5faXNWYWxpZH0sYmwuYWJzPWZ1bmN0aW9uIGpjKCl7dmFyIFdlPXRoaXMuX2RhdGE7cmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcz1WYyh0aGlzLl9taWxsaXNlY29uZHMpLHRoaXMuX2RheXM9VmModGhpcy5fZGF5cyksdGhpcy5fbW9u''@;'; put 'put ''dGhzPVZjKHRoaXMuX21vbnRocyksV2UubWlsbGlzZWNvbmRzPVZjKFdlLm1pbGxpc2Vjb25kcyksV2Uuc2Vjb25kcz1WYyhXZS5zZWNvbmRzKSxXZS5taW51dGVzPVZjKFdlLm1pbnV0ZXMpLFdlLmhvdXJzPVZjKFdlLmhvdXJzKSxXZS5tb250aHM9VmMoV2UubW9udGhzKSxXZS55ZWFycz1W''@;'; put 'put ''YyhXZS55ZWFycyksdGhpc30sYmwuYWRkPWZ1bmN0aW9uIGs0KFdlLE90KXtyZXR1cm4gZmYodGhpcyxXZSxPdCwxKX0sYmwuc3VidHJhY3Q9ZnVuY3Rpb24gQnIoV2UsT3Qpe3JldHVybiBmZih0aGlzLFdlLE90LC0xKX0sYmwuYXM9ZnVuY3Rpb24gUzQoV2Upe2lmKCF0aGlzLmlzVmFsaWQo''@;'; put 'put ''KSlyZXR1cm4gTmFOO3ZhciBPdCxkbixCbj10aGlzLl9taWxsaXNlY29uZHM7aWYoIm1vbnRoIj09PShXZT1DdChXZSkpfHwicXVhcnRlciI9PT1XZXx8InllYXIiPT09V2Upc3dpdGNoKE90PXRoaXMuX2RheXMrQm4vODY0ZTUsZG49dGhpcy5fbW9udGhzK3JtKE90KSxXZSl7Y2FzZSJtb250''@;'; put 'put ''aCI6cmV0dXJuIGRuO2Nhc2UicXVhcnRlciI6cmV0dXJuIGRuLzM7Y2FzZSJ5ZWFyIjpyZXR1cm4gZG4vMTJ9ZWxzZSBzd2l0Y2goT3Q9dGhpcy5fZGF5cytNYXRoLnJvdW5kKFQ4KHRoaXMuX21vbnRocykpLFdlKXtjYXNlIndlZWsiOnJldHVybiBPdC83K0JuLzYwNDhlNTtjYXNlImRheSI6''@;'; put 'put ''cmV0dXJuIE90K0JuLzg2NGU1O2Nhc2UiaG91ciI6cmV0dXJuIDI0Kk90K0JuLzM2ZTU7Y2FzZSJtaW51dGUiOnJldHVybiAxNDQwKk90K0JuLzZlNDtjYXNlInNlY29uZCI6cmV0dXJuIDg2NDAwKk90K0JuLzFlMztjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4gTWF0aC5mbG9vcig4NjRlNSpP''@;'; put 'put ''dCkrQm47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdW5pdCAiK1dlKX19LGJsLmFzTWlsbGlzZWNvbmRzPW1iLGJsLmFzU2Vjb25kcz1tZCxibC5hc01pbnV0ZXM9STgsYmwuYXNIb3Vycz1aYyxibC5hc0RheXM9emYsYmwuYXNXZWVrcz1EOCxibC5hc01vbnRocz1NNCxibC5h''@;'; put 'put ''c1F1YXJ0ZXJzPUM5LGJsLmFzWWVhcnM9aW0sYmwudmFsdWVPZj1mdW5jdGlvbiBfOSgpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLl9taWxsaXNlY29uZHMrODY0ZTUqdGhpcy5fZGF5cyt0aGlzLl9tb250aHMlMTIqMjU5MmU2KzMxNTM2ZTYqSnQodGhpcy5fbW9udGhzLzEyKTpOYU59''@;'; put 'put ''LGJsLl9idWJibGU9ZnVuY3Rpb24geDgoKXt2YXIgdHIsS3IsUWksc2EsaWwsV2U9dGhpcy5fbWlsbGlzZWNvbmRzLE90PXRoaXMuX2RheXMsZG49dGhpcy5fbW9udGhzLEJuPXRoaXMuX2RhdGE7cmV0dXJuIFdlPj0wJiZPdD49MCYmZG4+PTB8fFdlPD0wJiZPdDw9MCYmZG48PTB8fChXZSs9''@;'; put 'put ''ODY0ZTUqbm0oVDgoZG4pK090KSxPdD0wLGRuPTApLEJuLm1pbGxpc2Vjb25kcz1XZSUxZTMsdHI9anQoV2UvMWUzKSxCbi5zZWNvbmRzPXRyJTYwLEtyPWp0KHRyLzYwKSxCbi5taW51dGVzPUtyJTYwLFFpPWp0KEtyLzYwKSxCbi5ob3Vycz1RaSUyNCxPdCs9anQoUWkvMjQpLGRuKz1pbD1q''@;'; put 'put ''dChybShPdCkpLE90LT1ubShUOChpbCkpLHNhPWp0KGRuLzEyKSxkbiU9MTIsQm4uZGF5cz1PdCxCbi5tb250aHM9ZG4sQm4ueWVhcnM9c2EsdGhpc30sYmwuY2xvbmU9ZnVuY3Rpb24gTDgoKXtyZXR1cm4gWXModGhpcyl9LGJsLmdldD1mdW5jdGlvbiBFNChXZSl7cmV0dXJuIFdlPUN0KFdl''@;'; put 'put ''KSx0aGlzLmlzVmFsaWQoKT90aGlzW1dlKyJzIl0oKTpOYU59LGJsLm1pbGxpc2Vjb25kcz1HcCxibC5zZWNvbmRzPV9oLGJsLm1pbnV0ZXM9S00sYmwuaG91cnM9azksYmwuZGF5cz1TOSxibC53ZWVrcz1mdW5jdGlvbiB0Migpe3JldHVybiBqdCh0aGlzLmRheXMoKS83KX0sYmwubW9udGhz''@;'; put 'put ''PVdwLGJsLnllYXJzPVJ1LGJsLmh1bWFuaXplPWZ1bmN0aW9uIEpwKFdlLE90KXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIHRyLEtyLGRuPSExLEJuPXF1O3JldHVybiJvYmplY3QiPT10eXBlb2YgV2UmJihPdD1XZSxXZT0h''@;'; put 'put ''MSksImJvb2xlYW4iPT10eXBlb2YgV2UmJihkbj1XZSksIm9iamVjdCI9PXR5cGVvZiBPdCYmKEJuPU9iamVjdC5hc3NpZ24oe30scXUsT3QpLG51bGwhPU90LnMmJm51bGw9PU90LnNzJiYoQm4uc3M9T3Qucy0xKSksS3I9ZnVuY3Rpb24gWXAoV2UsT3QsZG4sQm4pe3ZhciB0cj1ZcyhXZSku''@;'; put 'put ''YWJzKCksS3I9dXUodHIuYXMoInMiKSksUWk9dXUodHIuYXMoIm0iKSksc2E9dXUodHIuYXMoImgiKSksaWw9dXUodHIuYXMoImQiKSkscnM9dXUodHIuYXMoIk0iKSksZWM9dXUodHIuYXMoInciKSksQTM9dXUodHIuYXMoInkiKSksQnM9S3I8PWRuLnNzJiZbInMiLEtyXXx8S3I8ZG4ucyYm''@;'; put 'put ''WyJzcyIsS3JdfHxRaTw9MSYmWyJtIl18fFFpPGRuLm0mJlsibW0iLFFpXXx8c2E8PTEmJlsiaCJdfHxzYTxkbi5oJiZbImhoIixzYV18fGlsPD0xJiZbImQiXXx8aWw8ZG4uZCYmWyJkZCIsaWxdO3JldHVybiBudWxsIT1kbi53JiYoQnM9QnN8fGVjPD0xJiZbInciXXx8ZWM8ZG4udyYmWyJ3''@;'; put 'put ''dyIsZWNdKSwoQnM9QnN8fHJzPD0xJiZbIk0iXXx8cnM8ZG4uTSYmWyJNTSIscnNdfHxBMzw9MSYmWyJ5Il18fFsieXkiLEEzXSlbMl09T3QsQnNbM109K1dlPjAsQnNbNF09Qm4sTzguYXBwbHkobnVsbCxCcyl9KHRoaXMsIWRuLEJuLHRyPXRoaXMubG9jYWxlRGF0YSgpKSxkbiYmKEtyPXRy''@;'; put 'put ''LnBhc3RGdXR1cmUoK3RoaXMsS3IpKSx0ci5wb3N0Zm9ybWF0KEtyKX0sYmwudG9JU09TdHJpbmc9djMsYmwudG9TdHJpbmc9djMsYmwudG9KU09OPXYzLGJsLmxvY2FsZT1kdCxibC5sb2NhbGVEYXRhPVh0LGJsLnRvSXNvU3RyaW5nPVRlKCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQu''@;'; put 'put ''IFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKSIsdjMpLGJsLmxhbmc9RHQsRGUoIlgiLDAsMCwidW5peCIpLERlKCJ4IiwwLDAsInZhbHVlT2YiKSx0bigieCIsZ24pLHRuKCJYIiwvWystXT9cZCsoXC5cZHsxLDN9KT8vKSx2bigiWCIsZnVu''@;'; put 'put ''Y3Rpb24oV2UsT3QsZG4pe2RuLl9kPW5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KFdlKSl9KSx2bigieCIsZnVuY3Rpb24oV2UsT3QsZG4pe2RuLl9kPW5ldyBEYXRlKEp0KFdlKSl9KSxCLnZlcnNpb249IjIuMjkuNCIsZnVuY3Rpb24gRShXZSl7Z2U9V2V9KFJzKSxCLmZuPXFpLEIubWluPWZ1''@;'; put 'put ''bmN0aW9uIFBmKCl7cmV0dXJuIHNmKCJpc0JlZm9yZSIsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfSxCLm1heD1mdW5jdGlvbiBCcCgpe3JldHVybiBzZigiaXNBZnRlciIsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfSxCLm5vdz1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdz9E''@;'; put 'put ''YXRlLm5vdygpOituZXcgRGF0ZX0sQi51dGM9ZWUsQi51bml4PWZ1bmN0aW9uIE9sKFdlKXtyZXR1cm4gUnMoMWUzKldlKX0sQi5tb250aHM9ZnVuY3Rpb24gbTMoV2UsT3Qpe3JldHVybiBlMShXZSxPdCwibW9udGhzIil9LEIuaXNEYXRlPVksQi5sb2NhbGU9bTEsQi5pbnZhbGlkPWZlLEIu''@;'; put 'put ''ZHVyYXRpb249WXMsQi5pc01vbWVudD1TZSxCLndlZWtkYXlzPWZ1bmN0aW9uIFcxKFdlLE90LGRuKXtyZXR1cm4gY2YoV2UsT3QsZG4sIndlZWtkYXlzIil9LEIucGFyc2Vab25lPWZ1bmN0aW9uIFhNKCl7cmV0dXJuIFJzLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYXJzZVpvbmUoKX0sQi5s''@;'; put 'put ''b2NhbGVEYXRhPWF1LEIuaXNEdXJhdGlvbj1kOSxCLm1vbnRoc1Nob3J0PWZ1bmN0aW9uICRsKFdlLE90KXtyZXR1cm4gZTEoV2UsT3QsIm1vbnRoc1Nob3J0Iil9LEIud2Vla2RheXNNaW49ZnVuY3Rpb24gdG0oV2UsT3QsZG4pe3JldHVybiBjZihXZSxPdCxkbiwid2Vla2RheXNNaW4iKX0s''@;'; put 'put ''Qi5kZWZpbmVMb2NhbGU9djEsQi51cGRhdGVMb2NhbGU9ZnVuY3Rpb24gQzAoV2UsT3Qpe2lmKG51bGwhPU90KXt2YXIgZG4sQm4sdHI9c2Q7bnVsbCE9cXNbV2VdJiZudWxsIT1xc1tXZV0ucGFyZW50TG9jYWxlP3FzW1dlXS5zZXQobmUocXNbV2VdLl9jb25maWcsT3QpKToobnVsbCE9KEJu''@;'; put 'put ''PXhpKFdlKSkmJih0cj1Cbi5fY29uZmlnKSxPdD1uZSh0cixPdCksbnVsbD09Qm4mJihPdC5hYmJyPVdlKSwoZG49bmV3IHRlKE90KSkucGFyZW50TG9jYWxlPXFzW1dlXSxxc1tXZV09ZG4pLG0xKFdlKX1lbHNlIG51bGwhPXFzW1dlXSYmKG51bGwhPXFzW1dlXS5wYXJlbnRMb2NhbGU/KHFz''@;'; put 'put ''W1dlXT1xc1tXZV0ucGFyZW50TG9jYWxlLFdlPT09bTEoKSYmbTEoV2UpKTpudWxsIT1xc1tXZV0mJmRlbGV0ZSBxc1tXZV0pO3JldHVybiBxc1tXZV19LEIubG9jYWxlcz1mdW5jdGlvbiBtcygpe3JldHVybiB4KHFzKX0sQi53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uIFpmKFdlLE90LGRuKXty''@;'; put 'put ''ZXR1cm4gY2YoV2UsT3QsZG4sIndlZWtkYXlzU2hvcnQiKX0sQi5ub3JtYWxpemVVbml0cz1DdCxCLnJlbGF0aXZlVGltZVJvdW5kaW5nPWZ1bmN0aW9uIFVwKFdlKXtyZXR1cm4gdm9pZCAwPT09V2U/dXU6ImZ1bmN0aW9uIj09dHlwZW9mIFdlJiYodXU9V2UsITApfSxCLnJlbGF0aXZlVGlt''@;'; put 'put ''ZVRocmVzaG9sZD1mdW5jdGlvbiBRcChXZSxPdCl7cmV0dXJuIHZvaWQgMCE9PXF1W1dlXSYmKHZvaWQgMD09PU90P3F1W1dlXToocXVbV2VdPU90LCJzIj09PVdlJiYocXUuc3M9T3QtMSksITApKX0sQi5jYWxlbmRhckZvcm1hdD1mdW5jdGlvbiBmYihXZSxPdCl7dmFyIGRuPVdlLmRpZmYo''@;'; put 'put ''T3QsImRheXMiLCEwKTtyZXR1cm4gZG48LTY/InNhbWVFbHNlIjpkbjwtMT8ibGFzdFdlZWsiOmRuPDA/Imxhc3REYXkiOmRuPDE/InNhbWVEYXkiOmRuPDI/Im5leHREYXkiOmRuPDc/Im5leHRXZWVrIjoic2FtZUVsc2UifSxCLnByb3RvdHlwZT1xaSxCLkhUTUw1X0ZNVD17REFURVRJTUVf''@;'; put 'put ''TE9DQUw6IllZWVktTU0tRERUSEg6bW0iLERBVEVUSU1FX0xPQ0FMX1NFQ09ORFM6IllZWVktTU0tRERUSEg6bW06c3MiLERBVEVUSU1FX0xPQ0FMX01TOiJZWVlZLU1NLUREVEhIOm1tOnNzLlNTUyIsREFURToiWVlZWS1NTS1ERCIsVElNRToiSEg6bW0iLFRJTUVfU0VDT05EUzoiSEg6bW06''@;'; put 'put ''c3MiLFRJTUVfTVM6IkhIOm1tOnNzLlNTUyIsV0VFSzoiR0dHRy1bV11XVyIsTU9OVEg6IllZWVktTU0ifSxCfSgpfSw1Mjk5OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODc5NzcpO0plLmNlcnRpZmljYXRlPUwoMTIzOTApO3ZhciBCPWdlLmRlZmluZSgiUlNBUHJpdmF0''@;'; put 'put ''ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaXZhdGVFeHBvbmVudCIpLmludCgpLHRoaXMua2V5KCJwcmlt''@;'; put 'put ''ZTEiKS5pbnQoKSx0aGlzLmtleSgicHJpbWUyIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MSIpLmludCgpLHRoaXMua2V5KCJleHBvbmVudDIiKS5pbnQoKSx0aGlzLmtleSgiY29lZmZpY2llbnQiKS5pbnQoKSl9KTtKZS5SU0FQcml2YXRlS2V5PUI7dmFyIEU9Z2UuZGVmaW5lKCJSU0FQ''@;'; put 'put ''dWJsaWNLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSl9KTtKZS5SU0FQdWJsaWNLZXk9RTt2YXIgTWU9Z2UuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKFUpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSk7SmUuUHVibGljS2V5PU1lO3ZhciBVPWdlLmRlZmluZSgiQWxnb3JpdGhtSWRlbnRpZmllciIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9i''@;'; put 'put ''aih0aGlzLmtleSgiYWxnb3JpdGhtIikub2JqaWQoKSx0aGlzLmtleSgibm9uZSIpLm51bGxfKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoInBhcmFtcyIpLnNlcSgpLm9iaih0aGlzLmtleSgicCIpLmludCgpLHRoaXMua2V5KCJx''@;'; put 'put ''IikuaW50KCksdGhpcy5rZXkoImciKS5pbnQoKSkub3B0aW9uYWwoKSl9KSxRPWdlLmRlZmluZSgiUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKFUpLHRoaXMua2V5KCJz''@;'; put 'put ''dWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO0plLlByaXZhdGVLZXk9UTt2YXIgWj1nZS5kZWZpbmUoIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5zZXEoKS5vYmoodGhpcy5rZXkoImlkIikub2Jq''@;'; put 'put ''aWQoKSx0aGlzLmtleSgiZGVjcnlwdCIpLnNlcSgpLm9iaih0aGlzLmtleSgia2RlIikuc2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImtkZXBhcmFtcyIpLnNlcSgpLm9iaih0aGlzLmtleSgic2FsdCIpLm9jdHN0cigpLHRoaXMua2V5KCJpdGVycyIpLmludCgp''@;'; put 'put ''KSksdGhpcy5rZXkoImNpcGhlciIpLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnbyIpLm9iamlkKCksdGhpcy5rZXkoIml2Iikub2N0c3RyKCkpKSksdGhpcy5rZXkoInN1YmplY3RQcml2YXRlS2V5Iikub2N0c3RyKCkpfSk7SmUuRW5jcnlwdGVkUHJpdmF0ZUtleT1aO3ZhciBpZT1nZS5kZWZp''@;'; put 'put ''bmUoIkRTQVByaXZhdGVLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgicCIpLmludCgpLHRoaXMua2V5KCJxIikuaW50KCksdGhpcy5rZXkoImciKS5pbnQoKSx0aGlzLmtleSgicHViX2tleSIpLmludCgpLHRoaXMua2V5''@;'; put 'put ''KCJwcml2X2tleSIpLmludCgpKX0pO0plLkRTQVByaXZhdGVLZXk9aWUsSmUuRFNBcGFyYW09Z2UuZGVmaW5lKCJEU0FwYXJhbSIsZnVuY3Rpb24oKXt0aGlzLmludCgpfSk7dmFyIGxlPWdlLmRlZmluZSgiRUNQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5''@;'; put 'put ''KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInByaXZhdGVLZXkiKS5vY3RzdHIoKSx0aGlzLmtleSgicGFyYW1ldGVycyIpLm9wdGlvbmFsKCkuZXhwbGljaXQoMCkudXNlKFkpLHRoaXMua2V5KCJwdWJsaWNLZXkiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpKX0pO0plLkVD''@;'; put 'put ''UHJpdmF0ZUtleT1sZTt2YXIgWT1nZS5kZWZpbmUoIkVDUGFyYW1ldGVycyIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7bmFtZWRDdXJ2ZTp0aGlzLm9iamlkKCl9KX0pO0plLnNpZ25hdHVyZT1nZS5kZWZpbmUoInNpZ25hdHVyZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtl''@;'; put 'put ''eSgiciIpLmludCgpLHRoaXMua2V5KCJzIikuaW50KCkpfSl9LDEyMzkwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4Nzk3NyksQj1nZS5kZWZpbmUoIlRpbWUiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe3V0Y1RpbWU6dGhpcy51dGN0aW1lKCksZ2VuZXJhbFRpbWU6dGhp''@;'; put 'put ''cy5nZW50aW1lKCl9KX0pLEU9Z2UuZGVmaW5lKCJBdHRyaWJ1dGVUeXBlVmFsdWUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInR5cGUiKS5vYmppZCgpLHRoaXMua2V5KCJ2YWx1ZSIpLmFueSgpKX0pLE1lPWdlLmRlZmluZSgiQWxnb3JpdGhtSWRlbnRpZmllciIsZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikub2JqaWQoKSx0aGlzLmtleSgicGFyYW1ldGVycyIpLm9wdGlvbmFsKCksdGhpcy5rZXkoImN1cnZlIikub2JqaWQoKS5vcHRpb25hbCgpKX0pLFU9Z2UuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKE1lKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pLFE9Z2UuZGVmaW5lKCJSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lIixmdW5jdGlvbigpe3RoaXMuc2V0b2YoRSl9KSxaPWdl''@;'; put 'put ''LmRlZmluZSgiUkROU2VxdWVuY2UiLGZ1bmN0aW9uKCl7dGhpcy5zZXFvZihRKX0pLGllPWdlLmRlZmluZSgiTmFtZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7cmRuU2VxdWVuY2U6dGhpcy51c2UoWil9KX0pLGxlPWdlLmRlZmluZSgiVmFsaWRpdHkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEo''@;'; put 'put ''KS5vYmoodGhpcy5rZXkoIm5vdEJlZm9yZSIpLnVzZShCKSx0aGlzLmtleSgibm90QWZ0ZXIiKS51c2UoQikpfSksWT1nZS5kZWZpbmUoIkV4dGVuc2lvbiIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiZXh0bklEIikub2JqaWQoKSx0aGlzLmtleSgiY3JpdGljYWwiKS5i''@;'; put 'put ''b29sKCkuZGVmKCExKSx0aGlzLmtleSgiZXh0blZhbHVlIikub2N0c3RyKCkpfSksVz1nZS5kZWZpbmUoIlRCU0NlcnRpZmljYXRlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuZXhwbGljaXQoMCkuaW50KCkub3B0aW9uYWwoKSx0aGlzLmtleSgic2Vy''@;'; put 'put ''aWFsTnVtYmVyIikuaW50KCksdGhpcy5rZXkoInNpZ25hdHVyZSIpLnVzZShNZSksdGhpcy5rZXkoImlzc3VlciIpLnVzZShpZSksdGhpcy5rZXkoInZhbGlkaXR5IikudXNlKGxlKSx0aGlzLmtleSgic3ViamVjdCIpLnVzZShpZSksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXlJbmZvIiku''@;'; put 'put ''dXNlKFUpLHRoaXMua2V5KCJpc3N1ZXJVbmlxdWVJRCIpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksdGhpcy5rZXkoInN1YmplY3RVbmlxdWVJRCIpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksdGhpcy5rZXkoImV4dGVuc2lvbnMiKS5leHBsaWNpdCgzKS5zZXFv''@;'; put 'put ''ZihZKS5vcHRpb25hbCgpKX0pLE49Z2UuZGVmaW5lKCJYNTA5Q2VydGlmaWNhdGUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInRic0NlcnRpZmljYXRlIikudXNlKFcpLHRoaXMua2V5KCJzaWduYXR1cmVBbGdvcml0aG0iKS51c2UoTWUpLHRoaXMua2V5KCJzaWduYXR1''@;'; put 'put ''cmVWYWx1ZSIpLmJpdHN0cigpKX0pO1hlLmV4cG9ydHM9Tn0sNjUyNjk6KFhlLEplLEwpPT57dmFyIGdlPS9Qcm9jLVR5cGU6IDQsRU5DUllQVEVEW1xuXHJdK0RFSy1JbmZvOiBBRVMtKCg/OjEyOCl8KD86MTkyKXwoPzoyNTYpKS1DQkMsKFswLTlBLUhdKylbXG5ccl0rKFswLTlBLXpcblxy''@;'; put 'put ''Ky89XSspW1xuXHJdKy9tLEI9L14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLS9tLEU9L14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLShbMC05QS16XG5ccisvPV0rKS0tLS0tRU5EIFwxLS0tLS0kL20sTWU9TCg0MDM0NyksVT1MKDg0''@;'; put 'put ''MzMwKSxRPUwoNzM1MDIpLkJ1ZmZlcjtYZS5leHBvcnRzPWZ1bmN0aW9uKFosaWUpe3ZhciBXLGxlPVoudG9TdHJpbmcoKSxZPWxlLm1hdGNoKGdlKTtpZihZKXt2YXIgZWU9ImFlcyIrWVsxXSxxPVEuZnJvbShZWzJdLCJoZXgiKSxKPVEuZnJvbShZWzNdLnJlcGxhY2UoL1tcclxuXS9nLCIi''@;'; put 'put ''KSwiYmFzZTY0Iiksc2U9TWUoaWUscS5zbGljZSgwLDgpLHBhcnNlSW50KFlbMV0sMTApKS5rZXksYWU9W10sZmU9VS5jcmVhdGVEZWNpcGhlcml2KGVlLHNlLHEpO2FlLnB1c2goZmUudXBkYXRlKEopKSxhZS5wdXNoKGZlLmZpbmFsKCkpLFc9US5jb25jYXQoYWUpfWVsc2V7dmFyIE49bGUu''@;'; put 'put ''bWF0Y2goRSk7Vz1RLmZyb20oTlsyXS5yZXBsYWNlKC9bXHJcbl0vZywiIiksImJhc2U2NCIpfXJldHVybnt0YWc6bGUubWF0Y2goQilbMV0sZGF0YTpXfX19LDIyNzcyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDUyOTk5KSxCPUwoMjI1NjIpLEU9TCg2NTI2OSksTWU9TCg4NDMzMCksVT1MKDk5''@;'; put 'put ''MzU3KSxRPUwoNzM1MDIpLkJ1ZmZlcjtmdW5jdGlvbiBaKGxlKXt2YXIgWTsib2JqZWN0Ij09dHlwZW9mIGxlJiYhUS5pc0J1ZmZlcihsZSkmJihZPWxlLnBhc3NwaHJhc2UsbGU9bGUua2V5KSwic3RyaW5nIj09dHlwZW9mIGxlJiYobGU9US5mcm9tKGxlKSk7dmFyIHEsSixXPUUobGUsWSks''@;'; put 'put ''Tj1XLnRhZyxlZT1XLmRhdGE7c3dpdGNoKE4pe2Nhc2UiQ0VSVElGSUNBVEUiOko9Z2UuY2VydGlmaWNhdGUuZGVjb2RlKGVlLCJkZXIiKS50YnNDZXJ0aWZpY2F0ZS5zdWJqZWN0UHVibGljS2V5SW5mbztjYXNlIlBVQkxJQyBLRVkiOnN3aXRjaChKfHwoSj1nZS5QdWJsaWNLZXkuZGVjb2Rl''@;'; put 'put ''KGVlLCJkZXIiKSkscT1KLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbigiLiIpKXtjYXNlIjEuMi44NDAuMTEzNTQ5LjEuMS4xIjpyZXR1cm4gZ2UuUlNBUHVibGljS2V5LmRlY29kZShKLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJu''@;'; put 'put ''IEouc3ViamVjdFByaXZhdGVLZXk9Si5zdWJqZWN0UHVibGljS2V5LHt0eXBlOiJlYyIsZGF0YTpKfTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gSi5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXk9Z2UuRFNBcGFyYW0uZGVjb2RlKEouc3ViamVjdFB1YmxpY0tleS5kYXRhLCJkZXIi''@;'; put 'put ''KSx7dHlwZToiZHNhIixkYXRhOkouYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24ga2V5IGlkICIrcSl9Y2FzZSJFTkNSWVBURUQgUFJJVkFURSBLRVkiOmVlPWZ1bmN0aW9uIGllKGxlLFkpe3ZhciBXPWxlLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5r''@;'; put 'put ''ZGVwYXJhbXMuc2FsdCxOPXBhcnNlSW50KGxlLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwxMCksZWU9QltsZS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCIuIildLHE9bGUuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2LEo9''@;'; put 'put ''bGUuc3ViamVjdFByaXZhdGVLZXksc2U9cGFyc2VJbnQoZWUuc3BsaXQoIi0iKVsxXSwxMCkvOCxhZT1VLnBia2RmMlN5bmMoWSxXLE4sc2UsInNoYTEiKSxmZT1NZS5jcmVhdGVEZWNpcGhlcml2KGVlLGFlLHEpLGRlPVtdO3JldHVybiBkZS5wdXNoKGZlLnVwZGF0ZShKKSksZGUucHVzaChm''@;'; put 'put ''ZS5maW5hbCgpKSxRLmNvbmNhdChkZSl9KGVlPWdlLkVuY3J5cHRlZFByaXZhdGVLZXkuZGVjb2RlKGVlLCJkZXIiKSxZKTtjYXNlIlBSSVZBVEUgS0VZIjpzd2l0Y2gocT0oSj1nZS5Qcml2YXRlS2V5LmRlY29kZShlZSwiZGVyIikpLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbigiLiIpKXtj''@;'; put 'put ''YXNlIjEuMi44NDAuMTEzNTQ5LjEuMS4xIjpyZXR1cm4gZ2UuUlNBUHJpdmF0ZUtleS5kZWNvZGUoSi5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJue2N1cnZlOkouYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6Z2UuRUNQcml2YXRlS2V5''@;'; put 'put ''LmRlY29kZShKLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKS5wcml2YXRlS2V5fTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gSi5hbGdvcml0aG0ucGFyYW1zLnByaXZfa2V5PWdlLkRTQXBhcmFtLmRlY29kZShKLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKSx7dHlwZToiZHNhIixw''@;'; put 'put ''YXJhbXM6Si5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitxKX1jYXNlIlJTQSBQVUJMSUMgS0VZIjpyZXR1cm4gZ2UuUlNBUHVibGljS2V5LmRlY29kZShlZSwiZGVyIik7Y2FzZSJSU0EgUFJJVkFURSBLRVkiOnJldHVybiBnZS5S''@;'; put 'put ''U0FQcml2YXRlS2V5LmRlY29kZShlZSwiZGVyIik7Y2FzZSJEU0EgUFJJVkFURSBLRVkiOnJldHVybnt0eXBlOiJkc2EiLHBhcmFtczpnZS5EU0FQcml2YXRlS2V5LmRlY29kZShlZSwiZGVyIil9O2Nhc2UiRUMgUFJJVkFURSBLRVkiOnJldHVybntjdXJ2ZTooZWU9Z2UuRUNQcml2YXRlS2V5''@;'; put 'put ''LmRlY29kZShlZSwiZGVyIikpLnBhcmFtZXRlcnMudmFsdWUscHJpdmF0ZUtleTplZS5wcml2YXRlS2V5fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgdHlwZSAiK04pfX1YZS5leHBvcnRzPVosWi5zaWduYXR1cmU9Z2Uuc2lnbmF0dXJlfSw5OTM1NzooWGUsSmUsTCk9''@;'; put 'put ''PntKZS5wYmtkZjI9TCg5MDQxNSksSmUucGJrZGYyU3luYz1MKDc3NDcyKX0sOTA0MTU6KFhlLEplLEwpPT57dmFyIFEsVyxnZT1MKDczNTAyKS5CdWZmZXIsQj1MKDYyNjk3KSxFPUwoNzg4NjcpLE1lPUwoNzc0NzIpLFU9TCg5NDU2NiksWj1nbG9iYWwuY3J5cHRvJiZnbG9iYWwuY3J5cHRv''@;'; put 'put ''LnN1YnRsZSxpZT17c2hhOiJTSEEtMSIsInNoYS0xIjoiU0hBLTEiLHNoYTE6IlNIQS0xIixzaGEyNTY6IlNIQS0yNTYiLCJzaGEtMjU2IjoiU0hBLTI1NiIsc2hhMzg0OiJTSEEtMzg0Iiwic2hhLTM4NCI6IlNIQS0zODQiLCJzaGEtNTEyIjoiU0hBLTUxMiIsc2hhNTEyOiJTSEEtNTEyIn0s''@;'; put 'put ''bGU9W107ZnVuY3Rpb24gTigpe3JldHVybiBXfHwoVz1nbG9iYWwucHJvY2VzcyYmZ2xvYmFsLnByb2Nlc3MubmV4dFRpY2s/Z2xvYmFsLnByb2Nlc3MubmV4dFRpY2s6Z2xvYmFsLnF1ZXVlTWljcm90YXNrP2dsb2JhbC5xdWV1ZU1pY3JvdGFzazpnbG9iYWwuc2V0SW1tZWRpYXRlP2dsb2Jh''@;'; put 'put ''bC5zZXRJbW1lZGlhdGU6Z2xvYmFsLnNldFRpbWVvdXQpfWZ1bmN0aW9uIGVlKEosc2UsYWUsZmUsZGUpe3JldHVybiBaLmltcG9ydEtleSgicmF3IixKLHtuYW1lOiJQQktERjIifSwhMSxbImRlcml2ZUJpdHMiXSkudGhlbihmdW5jdGlvbih2ZSl7cmV0dXJuIFouZGVyaXZlQml0cyh7bmFt''@;'; put 'put ''ZToiUEJLREYyIixzYWx0OnNlLGl0ZXJhdGlvbnM6YWUsaGFzaDp7bmFtZTpkZX19LHZlLGZlPDwzKX0pLnRoZW4oZnVuY3Rpb24odmUpe3JldHVybiBnZS5mcm9tKHZlKX0pfVhlLmV4cG9ydHM9ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSx2ZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlJiYodmU9''@;'; put 'put ''ZGUsZGU9dm9pZCAwKTt2YXIgQWU9aWVbKGRlPWRlfHwic2hhMSIpLnRvTG93ZXJDYXNlKCldO2lmKEFlJiYiZnVuY3Rpb24iPT10eXBlb2YgZ2xvYmFsLlByb21pc2Upe2lmKEIoYWUsZmUpLEo9VShKLEUsIlBhc3N3b3JkIiksc2U9VShzZSxFLCJTYWx0IiksImZ1bmN0aW9uIiE9dHlwZW9m''@;'; put 'put ''IHZlKXRocm93IG5ldyBFcnJvcigiTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyIik7IWZ1bmN0aW9uIHEoSixzZSl7Si50aGVuKGZ1bmN0aW9uKGFlKXtOKCkoZnVuY3Rpb24oKXtzZShudWxsLGFlKX0pfSxmdW5jdGlvbihhZSl7TigpKGZ1bmN0aW9uKCl7c2UoYWUpfSl9KX0oZnVu''@;'; put 'put ''Y3Rpb24gWShKKXtpZihnbG9iYWwucHJvY2VzcyYmIWdsb2JhbC5wcm9jZXNzLmJyb3dzZXJ8fCFafHwhWi5pbXBvcnRLZXl8fCFaLmRlcml2ZUJpdHMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7aWYodm9pZCAwIT09bGVbSl0pcmV0dXJuIGxlW0pdO3ZhciBzZT1lZShRPVF8fGdlLmFs''@;'; put 'put ''bG9jKDgpLFEsMTAsMTI4LEopLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KTtyZXR1cm4gbGVbSl09c2Usc2V9KEFlKS50aGVuKGZ1bmN0aW9uKGtlKXtyZXR1cm4ga2U/ZWUoSixzZSxhZSxmZSxBZSk6TWUoSixzZSxhZSxmZSxkZSl9KSx2''@;'; put 'put ''ZSl9ZWxzZSBOKCkoZnVuY3Rpb24oKXt2YXIga2U7dHJ5e2tlPU1lKEosc2UsYWUsZmUsZGUpfWNhdGNoKFNlKXtyZXR1cm4gdmUoU2UpfXZlKG51bGwsa2UpfSl9fSw3ODg2NzpYZT0+e3ZhciBKZTtKZT1nbG9iYWwucHJvY2VzcyYmZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcj8idXRmLTgiOmds''@;'; put 'put ''b2JhbC5wcm9jZXNzJiZnbG9iYWwucHJvY2Vzcy52ZXJzaW9uP3BhcnNlSW50KHByb2Nlc3MudmVyc2lvbi5zcGxpdCgiLiIpWzBdLnNsaWNlKDEpLDEwKT49Nj8idXRmLTgiOiJiaW5hcnkiOiJ1dGYtOCIsWGUuZXhwb3J0cz1KZX0sNjI2OTc6WGU9Pnt2YXIgSmU9TWF0aC5wb3coMiwzMCkt''@;'; put 'put ''MTtYZS5leHBvcnRzPWZ1bmN0aW9uKEwsZ2Upe2lmKCJudW1iZXIiIT10eXBlb2YgTCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRpb25zIG5vdCBhIG51bWJlciIpO2lmKEw8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCYWQgaXRlcmF0aW9ucyIpO2lmKCJudW1iZXIiIT10eXBlb2YgZ2Up''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5IGxlbmd0aCBub3QgYSBudW1iZXIiKTtpZihnZTwwfHxnZT5KZXx8Z2UhPWdlKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBrZXkgbGVuZ3RoIil9fSw3NzQ3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1NTY0MCksQj1MKDc1NjM0KSxFPUwoOTUyNDQp''@;'; put 'put ''LE1lPUwoNzM1MDIpLkJ1ZmZlcixVPUwoNjI2OTcpLFE9TCg3ODg2NyksWj1MKDk0NTY2KSxpZT1NZS5hbGxvYygxMjgpLGxlPXttZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQscm1kMTYwOjIwLHJpcGVtZDE2MDoyMH07ZnVuY3Rpb24gWShl''@;'; put 'put ''ZSxxLEope3ZhciBzZT1mdW5jdGlvbiBXKGVlKXtyZXR1cm4icm1kMTYwIj09PWVlfHwicmlwZW1kMTYwIj09PWVlP2Z1bmN0aW9uIEooc2Upe3JldHVybihuZXcgQikudXBkYXRlKHNlKS5kaWdlc3QoKX06Im1kNSI9PT1lZT9nZTpmdW5jdGlvbiBxKHNlKXtyZXR1cm4gRShlZSkudXBkYXRl''@;'; put 'put ''KHNlKS5kaWdlc3QoKX19KGVlKSxhZT0ic2hhNTEyIj09PWVlfHwic2hhMzg0Ij09PWVlPzEyODo2NDtxLmxlbmd0aD5hZT9xPXNlKHEpOnEubGVuZ3RoPGFlJiYocT1NZS5jb25jYXQoW3EsaWVdLGFlKSk7Zm9yKHZhciBmZT1NZS5hbGxvY1Vuc2FmZShhZStsZVtlZV0pLGRlPU1lLmFsbG9j''@;'; put 'put ''VW5zYWZlKGFlK2xlW2VlXSksdmU9MDt2ZTxhZTt2ZSsrKWZlW3ZlXT01NF5xW3ZlXSxkZVt2ZV09OTJecVt2ZV07dmFyIEFlPU1lLmFsbG9jVW5zYWZlKGFlK0orNCk7ZmUuY29weShBZSwwLDAsYWUpLHRoaXMuaXBhZDE9QWUsdGhpcy5pcGFkMj1mZSx0aGlzLm9wYWQ9ZGUsdGhpcy5hbGc9''@;'; put 'put ''ZWUsdGhpcy5ibG9ja3NpemU9YWUsdGhpcy5oYXNoPXNlLHRoaXMuc2l6ZT1sZVtlZV19WS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKGVlLHEpe3JldHVybiBlZS5jb3B5KHEsdGhpcy5ibG9ja3NpemUpLHRoaXMuaGFzaChxKS5jb3B5KHRoaXMub3BhZCx0aGlzLmJsb2Nrc2l6ZSksdGhpcy5o''@;'; put 'put ''YXNoKHRoaXMub3BhZCl9LFhlLmV4cG9ydHM9ZnVuY3Rpb24gTihlZSxxLEosc2UsYWUpe1UoSixzZSk7dmFyIGZlPW5ldyBZKGFlPWFlfHwic2hhMSIsZWU9WihlZSxRLCJQYXNzd29yZCIpLChxPVoocSxRLCJTYWx0IikpLmxlbmd0aCksZGU9TWUuYWxsb2NVbnNhZmUoc2UpLHZlPU1lLmFs''@;'; put 'put ''bG9jVW5zYWZlKHEubGVuZ3RoKzQpO3EuY29weSh2ZSwwLDAscS5sZW5ndGgpO2Zvcih2YXIgQWU9MCxrZT1sZVthZV0sU2U9TWF0aC5jZWlsKHNlL2tlKSxJZT0xO0llPD1TZTtJZSsrKXt2ZS53cml0ZVVJbnQzMkJFKEllLHEubGVuZ3RoKTtmb3IodmFyIFRlPWZlLnJ1bih2ZSxmZS5pcGFk''@;'; put 'put ''MSksRWU9VGUsaGU9MTtoZTxKO2hlKyspe0VlPWZlLnJ1bihFZSxmZS5pcGFkMik7Zm9yKHZhciBPPTA7TzxrZTtPKyspVGVbT11ePUVlW09dfVRlLmNvcHkoZGUsQWUpLEFlKz1rZX1yZXR1cm4gZGV9fSw5NDU2NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3MzUwMikuQnVmZmVyO1hlLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24oQixFLE1lKXtpZihnZS5pc0J1ZmZlcihCKSlyZXR1cm4gQjtpZigic3RyaW5nIj09dHlwZW9mIEIpcmV0dXJuIGdlLmZyb20oQixFKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoQikpcmV0dXJuIGdlLmZyb20oQi5idWZmZXIpO3Rocm93IG5ldyBUeXBlRXJyb3IoTWUrIiBt''@;'; put 'put ''dXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSB0eXBlZCBhcnJheSBvciBhIERhdGFWaWV3Iil9fSw0MTA3ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24oZ2UsQil7InVzZSBzdHJpY3QiO3ZhciBFO3RyeXtFPUwoMTU0MzkpfWNhdGNoKE1lKXt9WGUuZXhwb3J0cz1mdW5jdGlvbihn''@;'; put 'put ''ZSl7dmFyIEI9ImZ1bmN0aW9uIj09dHlwZW9mIGdlLEU9ISF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcixNZT13aW5kb3cuZG9jdW1lbnQsVT13aW5kb3cuc2V0VGltZW91dCxRPWZ1bmN0aW9uKFAsVixULFMpe0U/UC5hZGRFdmVudExpc3RlbmVyKFYsVCwhIVMpOlAuYXR0YWNoRXZlbnQoIm9u''@;'; put 'put ''IitWLFQpfSxaPWZ1bmN0aW9uKFAsVixULFMpe0U/UC5yZW1vdmVFdmVudExpc3RlbmVyKFYsVCwhIVMpOlAuZGV0YWNoRXZlbnQoIm9uIitWLFQpfSxsZT1mdW5jdGlvbihQLFYpe3JldHVybi0xIT09KCIgIitQLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoIiAiK1YrIiAiKX0sWT1mdW5jdGlv''@;'; put 'put ''bihQLFYpe2xlKFAsVil8fChQLmNsYXNzTmFtZT0iIj09PVAuY2xhc3NOYW1lP1Y6UC5jbGFzc05hbWUrIiAiK1YpfSxXPWZ1bmN0aW9uKFAsVil7UC5jbGFzc05hbWU9ZnVuY3Rpb24oUCl7cmV0dXJuIFAudHJpbT9QLnRyaW0oKTpQLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oKCIgIitQ''@;'; put 'put ''LmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoIiAiK1YrIiAiLCIgIikpfSxOPWZ1bmN0aW9uKFApe3JldHVybi9BcnJheS8udGVzdChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUCkpfSxlZT1mdW5jdGlvbihQKXtyZXR1cm4vRGF0ZS8udGVzdChPYmplY3QucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nLmNhbGwoUCkpJiYhaXNOYU4oUC5nZXRUaW1lKCkpfSxxPWZ1bmN0aW9uKFApe3ZhciBWPVAuZ2V0RGF5KCk7cmV0dXJuIDA9PT1WfHw2PT09Vn0sSj1mdW5jdGlvbihQKXtyZXR1cm4gUCU0PT0wJiZQJTEwMCE9MHx8UCU0MDA9PTB9LHNlPWZ1bmN0aW9uKFAsVil7cmV0dXJuWzMxLEoo''@;'; put 'put ''UCk/Mjk6MjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdW1ZdfSxhZT1mdW5jdGlvbihQKXtlZShQKSYmUC5zZXRIb3VycygwLDAsMCwwKX0sZmU9ZnVuY3Rpb24oUCxWKXtyZXR1cm4gUC5nZXRUaW1lKCk9PT1WLmdldFRpbWUoKX0sZGU9ZnVuY3Rpb24oUCxWLFQpe3ZhciBTLEY7''@;'; put 'put ''Zm9yKFMgaW4gVikoRj12b2lkIDAhPT1QW1NdKSYmIm9iamVjdCI9PXR5cGVvZiBWW1NdJiZudWxsIT09VltTXSYmdm9pZCAwPT09VltTXS5ub2RlTmFtZT9lZShWW1NdKT9UJiYoUFtTXT1uZXcgRGF0ZShWW1NdLmdldFRpbWUoKSkpOk4oVltTXSk/VCYmKFBbU109VltTXS5zbGljZSgwKSk6''@;'; put 'put ''UFtTXT1kZSh7fSxWW1NdLFQpOihUfHwhRikmJihQW1NdPVZbU10pO3JldHVybiBQfSx2ZT1mdW5jdGlvbihQLFYsVCl7dmFyIFM7TWUuY3JlYXRlRXZlbnQ/KChTPU1lLmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIikpLmluaXRFdmVudChWLCEwLCExKSxTPWRlKFMsVCksUC5kaXNwYXRjaEV2''@;'; put 'put ''ZW50KFMpKTpNZS5jcmVhdGVFdmVudE9iamVjdCYmKFM9TWUuY3JlYXRlRXZlbnRPYmplY3QoKSxTPWRlKFMsVCksUC5maXJlRXZlbnQoIm9uIitWLFMpKX0sQWU9ZnVuY3Rpb24oUCl7cmV0dXJuIFAubW9udGg8MCYmKFAueWVhci09TWF0aC5jZWlsKE1hdGguYWJzKFAubW9udGgpLzEyKSxQ''@;'; put 'put ''Lm1vbnRoKz0xMiksUC5tb250aD4xMSYmKFAueWVhcis9TWF0aC5mbG9vcihNYXRoLmFicyhQLm1vbnRoKS8xMiksUC5tb250aC09MTIpLFB9LGtlPXtmaWVsZDpudWxsLGJvdW5kOnZvaWQgMCxhcmlhTGFiZWw6IlVzZSB0aGUgYXJyb3cga2V5cyB0byBwaWNrIGEgZGF0ZSIscG9zaXRpb246''@;'; put 'put ''ImJvdHRvbSBsZWZ0IixyZXBvc2l0aW9uOiEwLGZvcm1hdDoiWVlZWS1NTS1ERCIsdG9TdHJpbmc6bnVsbCxwYXJzZTpudWxsLGRlZmF1bHREYXRlOm51bGwsc2V0RGVmYXVsdERhdGU6ITEsZmlyc3REYXk6MCxmaXJzdFdlZWtPZlllYXJNaW5EYXlzOjQsZm9ybWF0U3RyaWN0OiExLG1pbkRh''@;'; put 'put ''dGU6bnVsbCxtYXhEYXRlOm51bGwseWVhclJhbmdlOjEwLHNob3dXZWVrTnVtYmVyOiExLHBpY2tXaG9sZVdlZWs6ITEsbWluWWVhcjowLG1heFllYXI6OTk5OSxtaW5Nb250aDp2b2lkIDAsbWF4TW9udGg6dm9pZCAwLHN0YXJ0UmFuZ2U6bnVsbCxlbmRSYW5nZTpudWxsLGlzUlRMOiExLHll''@;'; put 'put ''YXJTdWZmaXg6IiIsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6ITEsZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOiExLG51bWJlck9mTW9udGhzOjEsbWFpbkNhbGVuZGFyOiJsZWZ0Iixjb250YWluZXI6dm9p''@;'; put 'put ''ZCAwLGJsdXJGaWVsZE9uU2VsZWN0OiEwLGkxOG46e3ByZXZpb3VzTW9udGg6IlByZXZpb3VzIE1vbnRoIixuZXh0TW9udGg6Ik5leHQgTW9udGgiLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRl''@;'; put 'put ''bWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sd2Vla2RheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHdlZWtkYXlzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUi''@;'; put 'put ''LCJGcmkiLCJTYXQiXX0sdGhlbWU6bnVsbCxldmVudHM6W10sb25TZWxlY3Q6bnVsbCxvbk9wZW46bnVsbCxvbkNsb3NlOm51bGwsb25EcmF3Om51bGwsa2V5Ym9hcmRJbnB1dDohMH0sU2U9ZnVuY3Rpb24oUCxWLFQpe2ZvcihWKz1QLmZpcnN0RGF5O1Y+PTc7KVYtPTc7cmV0dXJuIFQ/UC5p''@;'; put 'put ''MThuLndlZWtkYXlzU2hvcnRbVl06UC5pMThuLndlZWtkYXlzW1ZdfSxJZT1mdW5jdGlvbihQKXt2YXIgVj1bXSxUPSJmYWxzZSI7aWYoUC5pc0VtcHR5KXtpZighUC5zaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzKXJldHVybic8dGQgY2xhc3M9ImlzLWVtcHR5Ij48L3RkPic7Vi5w''@;'; put 'put ''dXNoKCJpcy1vdXRzaWRlLWN1cnJlbnQtbW9udGgiKSxQLmVuYWJsZVNlbGVjdGlvbkRheXNJbk5leHRBbmRQcmV2aW91c01vbnRoc3x8Vi5wdXNoKCJpcy1zZWxlY3Rpb24tZGlzYWJsZWQiKX1yZXR1cm4gUC5pc0Rpc2FibGVkJiZWLnB1c2goImlzLWRpc2FibGVkIiksUC5pc1RvZGF5JiZW''@;'; put 'put ''LnB1c2goImlzLXRvZGF5IiksUC5pc1NlbGVjdGVkJiYoVi5wdXNoKCJpcy1zZWxlY3RlZCIpLFQ9InRydWUiKSxQLmhhc0V2ZW50JiZWLnB1c2goImhhcy1ldmVudCIpLFAuaXNJblJhbmdlJiZWLnB1c2goImlzLWlucmFuZ2UiKSxQLmlzU3RhcnRSYW5nZSYmVi5wdXNoKCJpcy1zdGFydHJh''@;'; put 'put ''bmdlIiksUC5pc0VuZFJhbmdlJiZWLnB1c2goImlzLWVuZHJhbmdlIiksJzx0ZCBkYXRhLWRheT0iJytQLmRheSsnIiBjbGFzcz0iJytWLmpvaW4oIiAiKSsnIiBhcmlhLXNlbGVjdGVkPSInK1QrJyI+PGJ1dHRvbiBjbGFzcz0icGlrYS1idXR0b24gcGlrYS1kYXkiIHR5cGU9ImJ1dHRvbiIg''@;'; put 'put ''ZGF0YS1waWthLXllYXI9IicrUC55ZWFyKyciIGRhdGEtcGlrYS1tb250aD0iJytQLm1vbnRoKyciIGRhdGEtcGlrYS1kYXk9IicrUC5kYXkrJyI+JytQLmRheSsiPC9idXR0b24+PC90ZD4ifSxFZT1mdW5jdGlvbihQLFYsVCxTKXt2YXIgRj1uZXcgRGF0ZShULFYsUCk7cmV0dXJuJzx0ZCBj''@;'; put 'put ''bGFzcz0icGlrYS13ZWVrIj4nKyhCP2dlKEYpLmlzb1dlZWsoKTpmdW5jdGlvbihQLFYpe1Auc2V0SG91cnMoMCwwLDAsMCk7dmFyIFQ9UC5nZXREYXRlKCksUz1QLmdldERheSgpLEY9Vix5ZT1GLTEsRGU9ZnVuY3Rpb24oeXQpe3JldHVybih5dCs3LTEpJTd9O1Auc2V0RGF0ZShUK3llLURl''@;'; put 'put ''KFMpKTt2YXIgUGU9bmV3IERhdGUoUC5nZXRGdWxsWWVhcigpLDAsRiksJGU9KFAuZ2V0VGltZSgpLVBlLmdldFRpbWUoKSkvODY0ZTU7cmV0dXJuIDErTWF0aC5yb3VuZCgoJGUteWUrRGUoUGUuZ2V0RGF5KCkpKS83KX0oRixTKSkrIjwvdGQ+In0saGU9ZnVuY3Rpb24oUCxWLFQsUyl7cmV0''@;'; put 'put ''dXJuJzx0ciBjbGFzcz0icGlrYS1yb3cnKyhUPyIgcGljay13aG9sZS13ZWVrIjoiIikrKFM/IiBpcy1zZWxlY3RlZCI6IiIpKyciPicrKFY/UC5yZXZlcnNlKCk6UCkuam9pbigiIikrIjwvdHI+In0sbmU9ZnVuY3Rpb24oUCxWLFQsUyxGLHllKXt2YXIgQ2UsRGUsUGUscHQsbXQsUWU9UC5f''@;'; put 'put ''bywkZT1UPT09UWUubWluWWVhcixndD1UPT09UWUubWF4WWVhcix5dD0nPGRpdiBpZD0iJyt5ZSsnIiBjbGFzcz0icGlrYS10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1saXZlPSJhc3NlcnRpdmUiPicsdnQ9ITAsZnQ9ITA7Zm9yKFBlPVtdLENlPTA7Q2U8MTI7Q2UrKylQZS5wdXNoKCc8''@;'; put 'put ''b3B0aW9uIHZhbHVlPSInKyhUPT09Rj9DZS1WOjEyK0NlLVYpKyciJysoQ2U9PT1TPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpKygkZSYmQ2U8UWUubWluTW9udGh8fGd0JiZDZT5RZS5tYXhNb250aD8nIGRpc2FibGVkPSJkaXNhYmxlZCInOiIiKSsiPiIrUWUuaTE4bi5tb250aHNbQ2Vd''@;'; put 'put ''KyI8L29wdGlvbj4iKTtmb3IocHQ9JzxkaXYgY2xhc3M9InBpa2EtbGFiZWwiPicrUWUuaTE4bi5tb250aHNbU10rJzxzZWxlY3QgY2xhc3M9InBpa2Etc2VsZWN0IHBpa2Etc2VsZWN0LW1vbnRoIiB0YWJpbmRleD0iLTEiPicrUGUuam9pbigiIikrIjwvc2VsZWN0PjwvZGl2PiIsTihRZS55''@;'; put 'put ''ZWFyUmFuZ2UpPyhDZT1RZS55ZWFyUmFuZ2VbMF0sRGU9UWUueWVhclJhbmdlWzFdKzEpOihDZT1ULVFlLnllYXJSYW5nZSxEZT0xK1QrUWUueWVhclJhbmdlKSxQZT1bXTtDZTxEZSYmQ2U8PVFlLm1heFllYXI7Q2UrKylDZT49UWUubWluWWVhciYmUGUucHVzaCgnPG9wdGlvbiB2YWx1ZT0i''@;'; put 'put ''JytDZSsnIicrKENlPT09VD8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOiIiKSsiPiIrQ2UrIjwvb3B0aW9uPiIpO3JldHVybiBtdD0nPGRpdiBjbGFzcz0icGlrYS1sYWJlbCI+JytUK1FlLnllYXJTdWZmaXgrJzxzZWxlY3QgY2xhc3M9InBpa2Etc2VsZWN0IHBpa2Etc2VsZWN0LXllYXIiIHRh''@;'; put 'put ''YmluZGV4PSItMSI+JytQZS5qb2luKCIiKSsiPC9zZWxlY3Q+PC9kaXY+Iix5dCs9UWUuc2hvd01vbnRoQWZ0ZXJZZWFyP210K3B0OnB0K210LCRlJiYoMD09PVN8fFFlLm1pbk1vbnRoPj1TKSYmKHZ0PSExKSxndCYmKDExPT09U3x8UWUubWF4TW9udGg8PVMpJiYoZnQ9ITEpLDA9PT1WJiYo''@;'; put 'put ''eXQrPSc8YnV0dG9uIGNsYXNzPSJwaWthLXByZXYnKyh2dD8iIjoiIGlzLWRpc2FibGVkIikrJyIgdHlwZT0iYnV0dG9uIj4nK1FlLmkxOG4ucHJldmlvdXNNb250aCsiPC9idXR0b24+IiksVj09PVAuX28ubnVtYmVyT2ZNb250aHMtMSYmKHl0Kz0nPGJ1dHRvbiBjbGFzcz0icGlrYS1uZXh0''@;'; put 'put ''JysoZnQ/IiI6IiBpcy1kaXNhYmxlZCIpKyciIHR5cGU9ImJ1dHRvbiI+JytRZS5pMThuLm5leHRNb250aCsiPC9idXR0b24+IikseXQrIjwvZGl2PiJ9LHRlPWZ1bmN0aW9uKFAsVixUKXtyZXR1cm4nPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBpa2Et''@;'; put 'put ''dGFibGUiIHJvbGU9ImdyaWQiIGFyaWEtbGFiZWxsZWRieT0iJytUKyciPicrZnVuY3Rpb24oUCl7dmFyIFYsVD1bXTtmb3IoUC5zaG93V2Vla051bWJlciYmVC5wdXNoKCI8dGg+PC90aD4iKSxWPTA7Vjw3O1YrKylULnB1c2goJzx0aCBzY29wZT0iY29sIj48YWJiciB0aXRsZT0iJytTZShQ''@;'; put 'put ''LFYpKyciPicrU2UoUCxWLCEwKSsiPC9hYmJyPjwvdGg+Iik7cmV0dXJuIjx0aGVhZD48dHI+IisoUC5pc1JUTD9ULnJldmVyc2UoKTpUKS5qb2luKCIiKSsiPC90cj48L3RoZWFkPiJ9KFApK2Z1bmN0aW9uKFApe3JldHVybiI8dGJvZHk+IitQLmpvaW4oIiIpKyI8L3Rib2R5PiJ9KFYpKyI8''@;'; put 'put ''L3RhYmxlPiJ9LHg9ZnVuY3Rpb24oUCl7dmFyIFY9dGhpcyxUPVYuY29uZmlnKFApO1YuX29uTW91c2VEb3duPWZ1bmN0aW9uKEYpe2lmKFYuX3Ype3ZhciB5ZT0oRj1GfHx3aW5kb3cuZXZlbnQpLnRhcmdldHx8Ri5zcmNFbGVtZW50O2lmKHllKWlmKGxlKHllLCJpcy1kaXNhYmxlZCIpfHwo''@;'; put 'put ''IWxlKHllLCJwaWthLWJ1dHRvbiIpfHxsZSh5ZSwiaXMtZW1wdHkiKXx8bGUoeWUucGFyZW50Tm9kZSwiaXMtZGlzYWJsZWQiKT9sZSh5ZSwicGlrYS1wcmV2Iik/Vi5wcmV2TW9udGgoKTpsZSh5ZSwicGlrYS1uZXh0IikmJlYubmV4dE1vbnRoKCk6KFYuc2V0RGF0ZShuZXcgRGF0ZSh5ZS5n''@;'; put 'put ''ZXRBdHRyaWJ1dGUoImRhdGEtcGlrYS15ZWFyIikseWUuZ2V0QXR0cmlidXRlKCJkYXRhLXBpa2EtbW9udGgiKSx5ZS5nZXRBdHRyaWJ1dGUoImRhdGEtcGlrYS1kYXkiKSkpLFQuYm91bmQmJlUoZnVuY3Rpb24oKXtWLmhpZGUoKSxULmJsdXJGaWVsZE9uU2VsZWN0JiZULmZpZWxkJiZULmZp''@;'; put 'put ''ZWxkLmJsdXIoKX0sMTAwKSkpLGxlKHllLCJwaWthLXNlbGVjdCIpKVYuX2M9ITA7ZWxzZXtpZighRi5wcmV2ZW50RGVmYXVsdClyZXR1cm4gRi5yZXR1cm5WYWx1ZT0hMSwhMTtGLnByZXZlbnREZWZhdWx0KCl9fX0sVi5fb25DaGFuZ2U9ZnVuY3Rpb24oRil7dmFyIHllPShGPUZ8fHdpbmRv''@;'; put 'put ''dy5ldmVudCkudGFyZ2V0fHxGLnNyY0VsZW1lbnQ7IXllfHwobGUoeWUsInBpa2Etc2VsZWN0LW1vbnRoIik/Vi5nb3RvTW9udGgoeWUudmFsdWUpOmxlKHllLCJwaWthLXNlbGVjdC15ZWFyIikmJlYuZ290b1llYXIoeWUudmFsdWUpKX0sVi5fb25LZXlDaGFuZ2U9ZnVuY3Rpb24oRil7aWYo''@;'; put 'put ''Rj1GfHx3aW5kb3cuZXZlbnQsVi5pc1Zpc2libGUoKSlzd2l0Y2goRi5rZXlDb2RlKXtjYXNlIDEzOmNhc2UgMjc6VC5maWVsZCYmVC5maWVsZC5ibHVyKCk7YnJlYWs7Y2FzZSAzNzpWLmFkanVzdERhdGUoInN1YnRyYWN0IiwxKTticmVhaztjYXNlIDM4OlYuYWRqdXN0RGF0ZSgic3VidHJh''@;'; put 'put ''Y3QiLDcpO2JyZWFrO2Nhc2UgMzk6Vi5hZGp1c3REYXRlKCJhZGQiLDEpO2JyZWFrO2Nhc2UgNDA6Vi5hZGp1c3REYXRlKCJhZGQiLDcpO2JyZWFrO2Nhc2UgODpjYXNlIDQ2OlYuc2V0RGF0ZShudWxsKX19LFYuX3BhcnNlRmllbGRWYWx1ZT1mdW5jdGlvbigpe2lmKFQucGFyc2UpcmV0dXJu''@;'; put 'put ''IFQucGFyc2UoVC5maWVsZC52YWx1ZSxULmZvcm1hdCk7aWYoQil7dmFyIEY9Z2UoVC5maWVsZC52YWx1ZSxULmZvcm1hdCxULmZvcm1hdFN0cmljdCk7cmV0dXJuIEYmJkYuaXNWYWxpZCgpP0YudG9EYXRlKCk6bnVsbH1yZXR1cm4gbmV3IERhdGUoRGF0ZS5wYXJzZShULmZpZWxkLnZhbHVl''@;'; put 'put ''KSl9LFYuX29uSW5wdXRDaGFuZ2U9ZnVuY3Rpb24oRil7dmFyIHllO0YuZmlyZWRCeSE9PVYmJih5ZT1WLl9wYXJzZUZpZWxkVmFsdWUoKSxlZSh5ZSkmJlYuc2V0RGF0ZSh5ZSksVi5fdnx8Vi5zaG93KCkpfSxWLl9vbklucHV0Rm9jdXM9ZnVuY3Rpb24oKXtWLnNob3coKX0sVi5fb25JbnB1''@;'; put 'put ''dENsaWNrPWZ1bmN0aW9uKCl7Vi5zaG93KCl9LFYuX29uSW5wdXRCbHVyPWZ1bmN0aW9uKCl7dmFyIEY9TWUuYWN0aXZlRWxlbWVudDtkb3tpZihsZShGLCJwaWthLXNpbmdsZSIpKXJldHVybn13aGlsZShGPUYucGFyZW50Tm9kZSk7Vi5fY3x8KFYuX2I9VShmdW5jdGlvbigpe1YuaGlkZSgp''@;'; put 'put ''fSw1MCkpLFYuX2M9ITF9LFYuX29uQ2xpY2s9ZnVuY3Rpb24oRil7dmFyIHllPShGPUZ8fHdpbmRvdy5ldmVudCkudGFyZ2V0fHxGLnNyY0VsZW1lbnQsQ2U9eWU7aWYoeWUpeyFFJiZsZSh5ZSwicGlrYS1zZWxlY3QiKSYmKHllLm9uY2hhbmdlfHwoeWUuc2V0QXR0cmlidXRlKCJvbmNoYW5n''@;'; put 'put ''ZSIsInJldHVybjsiKSxRKHllLCJjaGFuZ2UiLFYuX29uQ2hhbmdlKSkpO2Rve2lmKGxlKENlLCJwaWthLXNpbmdsZSIpfHxDZT09PVQudHJpZ2dlcilyZXR1cm59d2hpbGUoQ2U9Q2UucGFyZW50Tm9kZSk7Vi5fdiYmeWUhPT1ULnRyaWdnZXImJkNlIT09VC50cmlnZ2VyJiZWLmhpZGUoKX19''@;'; put 'put ''LFYuZWw9TWUuY3JlYXRlRWxlbWVudCgiZGl2IiksVi5lbC5jbGFzc05hbWU9InBpa2Etc2luZ2xlIisoVC5pc1JUTD8iIGlzLXJ0bCI6IiIpKyhULnRoZW1lPyIgIitULnRoZW1lOiIiKSxRKFYuZWwsIm1vdXNlZG93biIsVi5fb25Nb3VzZURvd24sITApLFEoVi5lbCwidG91Y2hlbmQiLFYu''@;'; put 'put ''X29uTW91c2VEb3duLCEwKSxRKFYuZWwsImNoYW5nZSIsVi5fb25DaGFuZ2UpLFQua2V5Ym9hcmRJbnB1dCYmUShNZSwia2V5ZG93biIsVi5fb25LZXlDaGFuZ2UpLFQuZmllbGQmJihULmNvbnRhaW5lcj9ULmNvbnRhaW5lci5hcHBlbmRDaGlsZChWLmVsKTpULmJvdW5kP01lLmJvZHkuYXBw''@;'; put 'put ''ZW5kQ2hpbGQoVi5lbCk6VC5maWVsZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShWLmVsLFQuZmllbGQubmV4dFNpYmxpbmcpLFEoVC5maWVsZCwiY2hhbmdlIixWLl9vbklucHV0Q2hhbmdlKSxULmRlZmF1bHREYXRlfHwoVC5kZWZhdWx0RGF0ZT1WLl9wYXJzZUZpZWxkVmFsdWUoKSxULnNl''@;'; put 'put ''dERlZmF1bHREYXRlPSEwKSk7dmFyIFM9VC5kZWZhdWx0RGF0ZTtlZShTKT9ULnNldERlZmF1bHREYXRlP1Yuc2V0RGF0ZShTLCEwKTpWLmdvdG9EYXRlKFMpOlYuZ290b0RhdGUobmV3IERhdGUpLFQuYm91bmQ/KHRoaXMuaGlkZSgpLFYuZWwuY2xhc3NOYW1lKz0iIGlzLWJvdW5kIixRKFQu''@;'; put 'put ''dHJpZ2dlciwiY2xpY2siLFYuX29uSW5wdXRDbGljayksUShULnRyaWdnZXIsImZvY3VzIixWLl9vbklucHV0Rm9jdXMpLFEoVC50cmlnZ2VyLCJibHVyIixWLl9vbklucHV0Qmx1cikpOnRoaXMuc2hvdygpfTtyZXR1cm4geC5wcm90b3R5cGU9e2NvbmZpZzpmdW5jdGlvbihQKXt0aGlzLl9v''@;'; put 'put ''fHwodGhpcy5fbz1kZSh7fSxrZSwhMCkpO3ZhciBWPWRlKHRoaXMuX28sUCwhMCk7Vi5pc1JUTD0hIVYuaXNSVEwsVi5maWVsZD1WLmZpZWxkJiZWLmZpZWxkLm5vZGVOYW1lP1YuZmllbGQ6bnVsbCxWLnRoZW1lPSJzdHJpbmciPT10eXBlb2YgVi50aGVtZSYmVi50aGVtZT9WLnRoZW1lOm51''@;'; put 'put ''bGwsVi5ib3VuZD0hISh2b2lkIDAhPT1WLmJvdW5kP1YuZmllbGQmJlYuYm91bmQ6Vi5maWVsZCksVi50cmlnZ2VyPVYudHJpZ2dlciYmVi50cmlnZ2VyLm5vZGVOYW1lP1YudHJpZ2dlcjpWLmZpZWxkLFYuZGlzYWJsZVdlZWtlbmRzPSEhVi5kaXNhYmxlV2Vla2VuZHMsVi5kaXNhYmxlRGF5''@;'; put 'put ''Rm49ImZ1bmN0aW9uIj09dHlwZW9mIFYuZGlzYWJsZURheUZuP1YuZGlzYWJsZURheUZuOm51bGw7dmFyIFQ9cGFyc2VJbnQoVi5udW1iZXJPZk1vbnRocywxMCl8fDE7aWYoVi5udW1iZXJPZk1vbnRocz1UPjQ/NDpULGVlKFYubWluRGF0ZSl8fChWLm1pbkRhdGU9ITEpLGVlKFYubWF4RGF0''@;'; put 'put ''ZSl8fChWLm1heERhdGU9ITEpLFYubWluRGF0ZSYmVi5tYXhEYXRlJiZWLm1heERhdGU8Vi5taW5EYXRlJiYoVi5tYXhEYXRlPVYubWluRGF0ZT0hMSksVi5taW5EYXRlJiZ0aGlzLnNldE1pbkRhdGUoVi5taW5EYXRlKSxWLm1heERhdGUmJnRoaXMuc2V0TWF4RGF0ZShWLm1heERhdGUpLE4o''@;'; put 'put ''Vi55ZWFyUmFuZ2UpKXt2YXIgUz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCktMTA7Vi55ZWFyUmFuZ2VbMF09cGFyc2VJbnQoVi55ZWFyUmFuZ2VbMF0sMTApfHxTLFYueWVhclJhbmdlWzFdPXBhcnNlSW50KFYueWVhclJhbmdlWzFdLDEwKXx8U31lbHNlIFYueWVhclJhbmdlPU1hdGguYWJz''@;'; put 'put ''KHBhcnNlSW50KFYueWVhclJhbmdlLDEwKSl8fGtlLnllYXJSYW5nZSxWLnllYXJSYW5nZT4xMDAmJihWLnllYXJSYW5nZT0xMDApO3JldHVybiBWfSx0b1N0cmluZzpmdW5jdGlvbihQKXtyZXR1cm4gUD1QfHx0aGlzLl9vLmZvcm1hdCxlZSh0aGlzLl9kKT90aGlzLl9vLnRvU3RyaW5nP3Ro''@;'; put 'put ''aXMuX28udG9TdHJpbmcodGhpcy5fZCxQKTpCP2dlKHRoaXMuX2QpLmZvcm1hdChQKTp0aGlzLl9kLnRvRGF0ZVN0cmluZygpOiIifSxnZXRNb21lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gQj9nZSh0aGlzLl9kKTpudWxsfSxzZXRNb21lbnQ6ZnVuY3Rpb24oUCxWKXtCJiZnZS5pc01vbWVudChQ''@;'; put 'put ''KSYmdGhpcy5zZXREYXRlKFAudG9EYXRlKCksVil9LGdldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZWUodGhpcy5fZCk/bmV3IERhdGUodGhpcy5fZC5nZXRUaW1lKCkpOm51bGx9LHNldERhdGU6ZnVuY3Rpb24oUCxWKXtpZighUClyZXR1cm4gdGhpcy5fZD1udWxsLHRoaXMuX28uZmllbGQm''@;'; put 'put ''Jih0aGlzLl9vLmZpZWxkLnZhbHVlPSIiLHZlKHRoaXMuX28uZmllbGQsImNoYW5nZSIse2ZpcmVkQnk6dGhpc30pKSx0aGlzLmRyYXcoKTtpZigic3RyaW5nIj09dHlwZW9mIFAmJihQPW5ldyBEYXRlKERhdGUucGFyc2UoUCkpKSxlZShQKSl7dmFyIFQ9dGhpcy5fby5taW5EYXRlLFM9dGhp''@;'; put 'put ''cy5fby5tYXhEYXRlO2VlKFQpJiZQPFQ/UD1UOmVlKFMpJiZQPlMmJihQPVMpLHRoaXMuX2Q9bmV3IERhdGUoUC5nZXRUaW1lKCkpLGFlKHRoaXMuX2QpLHRoaXMuZ290b0RhdGUodGhpcy5fZCksdGhpcy5fby5maWVsZCYmKHRoaXMuX28uZmllbGQudmFsdWU9dGhpcy50b1N0cmluZygpLHZl''@;'; put 'put ''KHRoaXMuX28uZmllbGQsImNoYW5nZSIse2ZpcmVkQnk6dGhpc30pKSwhViYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX28ub25TZWxlY3QmJnRoaXMuX28ub25TZWxlY3QuY2FsbCh0aGlzLHRoaXMuZ2V0RGF0ZSgpKX19LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5zZXREYXRlKG51bGwpfSxn''@;'; put 'put ''b3RvRGF0ZTpmdW5jdGlvbihQKXt2YXIgVj0hMDtpZihlZShQKSl7aWYodGhpcy5jYWxlbmRhcnMpe3ZhciBUPW5ldyBEYXRlKHRoaXMuY2FsZW5kYXJzWzBdLnllYXIsdGhpcy5jYWxlbmRhcnNbMF0ubW9udGgsMSksUz1uZXcgRGF0ZSh0aGlzLmNhbGVuZGFyc1t0aGlzLmNhbGVuZGFycy5s''@;'; put 'put ''ZW5ndGgtMV0ueWVhcix0aGlzLmNhbGVuZGFyc1t0aGlzLmNhbGVuZGFycy5sZW5ndGgtMV0ubW9udGgsMSksRj1QLmdldFRpbWUoKTtTLnNldE1vbnRoKFMuZ2V0TW9udGgoKSsxKSxTLnNldERhdGUoUy5nZXREYXRlKCktMSksVj1GPFQuZ2V0VGltZSgpfHxTLmdldFRpbWUoKTxGfVYmJih0''@;'; put 'put ''aGlzLmNhbGVuZGFycz1be21vbnRoOlAuZ2V0TW9udGgoKSx5ZWFyOlAuZ2V0RnVsbFllYXIoKX1dLCJyaWdodCI9PT10aGlzLl9vLm1haW5DYWxlbmRhciYmKHRoaXMuY2FsZW5kYXJzWzBdLm1vbnRoKz0xLXRoaXMuX28ubnVtYmVyT2ZNb250aHMpKSx0aGlzLmFkanVzdENhbGVuZGFycygp''@;'; put 'put ''fX0sYWRqdXN0RGF0ZTpmdW5jdGlvbihQLFYpe3ZhciBGLFQ9dGhpcy5nZXREYXRlKCl8fG5ldyBEYXRlLFM9MjQqcGFyc2VJbnQoVikqNjAqNjAqMWUzOyJhZGQiPT09UD9GPW5ldyBEYXRlKFQudmFsdWVPZigpK1MpOiJzdWJ0cmFjdCI9PT1QJiYoRj1uZXcgRGF0ZShULnZhbHVlT2YoKS1T''@;'; put 'put ''KSksdGhpcy5zZXREYXRlKEYpfSxhZGp1c3RDYWxlbmRhcnM6ZnVuY3Rpb24oKXt0aGlzLmNhbGVuZGFyc1swXT1BZSh0aGlzLmNhbGVuZGFyc1swXSk7Zm9yKHZhciBQPTE7UDx0aGlzLl9vLm51bWJlck9mTW9udGhzO1ArKyl0aGlzLmNhbGVuZGFyc1tQXT1BZSh7bW9udGg6dGhpcy5jYWxl''@;'; put 'put ''bmRhcnNbMF0ubW9udGgrUCx5ZWFyOnRoaXMuY2FsZW5kYXJzWzBdLnllYXJ9KTt0aGlzLmRyYXcoKX0sZ290b1RvZGF5OmZ1bmN0aW9uKCl7dGhpcy5nb3RvRGF0ZShuZXcgRGF0ZSl9LGdvdG9Nb250aDpmdW5jdGlvbihQKXtpc05hTihQKXx8KHRoaXMuY2FsZW5kYXJzWzBdLm1vbnRoPXBh''@;'; put 'put ''cnNlSW50KFAsMTApLHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCkpfSxuZXh0TW9udGg6ZnVuY3Rpb24oKXt0aGlzLmNhbGVuZGFyc1swXS5tb250aCsrLHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCl9LHByZXZNb250aDpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXJzWzBdLm1vbnRoLS0sdGhpcy5hZGp1''@;'; put 'put ''c3RDYWxlbmRhcnMoKX0sZ290b1llYXI6ZnVuY3Rpb24oUCl7aXNOYU4oUCl8fCh0aGlzLmNhbGVuZGFyc1swXS55ZWFyPXBhcnNlSW50KFAsMTApLHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCkpfSxzZXRNaW5EYXRlOmZ1bmN0aW9uKFApe1AgaW5zdGFuY2VvZiBEYXRlPyhhZShQKSx0aGlzLl9v''@;'; put 'put ''Lm1pbkRhdGU9UCx0aGlzLl9vLm1pblllYXI9UC5nZXRGdWxsWWVhcigpLHRoaXMuX28ubWluTW9udGg9UC5nZXRNb250aCgpKToodGhpcy5fby5taW5EYXRlPWtlLm1pbkRhdGUsdGhpcy5fby5taW5ZZWFyPWtlLm1pblllYXIsdGhpcy5fby5taW5Nb250aD1rZS5taW5Nb250aCx0aGlzLl9v''@;'; put 'put ''LnN0YXJ0UmFuZ2U9a2Uuc3RhcnRSYW5nZSksdGhpcy5kcmF3KCl9LHNldE1heERhdGU6ZnVuY3Rpb24oUCl7UCBpbnN0YW5jZW9mIERhdGU/KGFlKFApLHRoaXMuX28ubWF4RGF0ZT1QLHRoaXMuX28ubWF4WWVhcj1QLmdldEZ1bGxZZWFyKCksdGhpcy5fby5tYXhNb250aD1QLmdldE1vbnRo''@;'; put 'put ''KCkpOih0aGlzLl9vLm1heERhdGU9a2UubWF4RGF0ZSx0aGlzLl9vLm1heFllYXI9a2UubWF4WWVhcix0aGlzLl9vLm1heE1vbnRoPWtlLm1heE1vbnRoLHRoaXMuX28uZW5kUmFuZ2U9a2UuZW5kUmFuZ2UpLHRoaXMuZHJhdygpfSxzZXRTdGFydFJhbmdlOmZ1bmN0aW9uKFApe3RoaXMuX28u''@;'; put 'put ''c3RhcnRSYW5nZT1QfSxzZXRFbmRSYW5nZTpmdW5jdGlvbihQKXt0aGlzLl9vLmVuZFJhbmdlPVB9LGRyYXc6ZnVuY3Rpb24oUCl7aWYodGhpcy5fdnx8UCl7dmFyIERlLFY9dGhpcy5fbyxUPVYubWluWWVhcixTPVYubWF4WWVhcixGPVYubWluTW9udGgseWU9Vi5tYXhNb250aCxDZT0iIjt0''@;'; put 'put ''aGlzLl95PD1UJiYodGhpcy5feT1ULCFpc05hTihGKSYmdGhpcy5fbTxGJiYodGhpcy5fbT1GKSksdGhpcy5feT49UyYmKHRoaXMuX3k9UywhaXNOYU4oeWUpJiZ0aGlzLl9tPnllJiYodGhpcy5fbT15ZSkpO2Zvcih2YXIgUGU9MDtQZTxWLm51bWJlck9mTW9udGhzO1BlKyspRGU9InBpa2Et''@;'; put 'put ''dGl0bGUtIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5yZXBsYWNlKC9bXmEtel0rL2csIiIpLnN1YnN0cigwLDIpLENlKz0nPGRpdiBjbGFzcz0icGlrYS1sZW5kYXIiPicrbmUodGhpcyxQZSx0aGlzLmNhbGVuZGFyc1tQZV0ueWVhcix0aGlzLmNhbGVuZGFyc1tQZV0ubW9udGgsdGhp''@;'; put 'put ''cy5jYWxlbmRhcnNbMF0ueWVhcixEZSkrdGhpcy5yZW5kZXIodGhpcy5jYWxlbmRhcnNbUGVdLnllYXIsdGhpcy5jYWxlbmRhcnNbUGVdLm1vbnRoLERlKSsiPC9kaXY+Ijt0aGlzLmVsLmlubmVySFRNTD1DZSxWLmJvdW5kJiYiaGlkZGVuIiE9PVYuZmllbGQudHlwZSYmVShmdW5jdGlvbigp''@;'; put 'put ''e1YudHJpZ2dlci5mb2N1cygpfSwxKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fby5vbkRyYXcmJnRoaXMuX28ub25EcmF3KHRoaXMpLFYuYm91bmQmJlYuZmllbGQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixWLmFyaWFMYWJlbCl9fSxhZGp1c3RQb3NpdGlvbjpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBQLFYsVCxTLEYseWUsQ2UsRGUsUGUsUWUsJGUsZ3Q7aWYoIXRoaXMuX28uY29udGFpbmVyKXtpZih0aGlzLmVsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsVj1QPXRoaXMuX28udHJpZ2dlcixUPXRoaXMuZWwub2Zmc2V0V2lkdGgsUz10aGlzLmVsLm9mZnNldEhlaWdodCxGPXdpbmRv''@;'; put 'put ''dy5pbm5lcldpZHRofHxNZS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgseWU9d2luZG93LmlubmVySGVpZ2h0fHxNZS5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LENlPXdpbmRvdy5wYWdlWU9mZnNldHx8TWUuYm9keS5zY3JvbGxUb3B8fE1lLmRvY3VtZW50RWxlbWVudC5zY3Jv''@;'; put 'put ''bGxUb3AsJGU9ITAsZ3Q9ITAsImZ1bmN0aW9uIj09dHlwZW9mIFAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KURlPShRZT1QLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5sZWZ0K3dpbmRvdy5wYWdlWE9mZnNldCxQZT1RZS5ib3R0b20rd2luZG93LnBhZ2VZT2Zmc2V0O2Vsc2UgZm9yKERlPVYu''@;'; put 'put ''b2Zmc2V0TGVmdCxQZT1WLm9mZnNldFRvcCtWLm9mZnNldEhlaWdodDtWPVYub2Zmc2V0UGFyZW50OylEZSs9Vi5vZmZzZXRMZWZ0LFBlKz1WLm9mZnNldFRvcDsodGhpcy5fby5yZXBvc2l0aW9uJiZEZStUPkZ8fHRoaXMuX28ucG9zaXRpb24uaW5kZXhPZigicmlnaHQiKT4tMSYmRGUtVCtQ''@;'; put 'put ''Lm9mZnNldFdpZHRoPjApJiYoRGU9RGUtVCtQLm9mZnNldFdpZHRoLCRlPSExKSwodGhpcy5fby5yZXBvc2l0aW9uJiZQZStTPnllK0NlfHx0aGlzLl9vLnBvc2l0aW9uLmluZGV4T2YoInRvcCIpPi0xJiZQZS1TLVAub2Zmc2V0SGVpZ2h0PjApJiYoUGU9UGUtUy1QLm9mZnNldEhlaWdodCxn''@;'; put 'put ''dD0hMSksdGhpcy5lbC5zdHlsZS5sZWZ0PURlKyJweCIsdGhpcy5lbC5zdHlsZS50b3A9UGUrInB4IixZKHRoaXMuZWwsJGU/ImxlZnQtYWxpZ25lZCI6InJpZ2h0LWFsaWduZWQiKSxZKHRoaXMuZWwsZ3Q/ImJvdHRvbS1hbGlnbmVkIjoidG9wLWFsaWduZWQiKSxXKHRoaXMuZWwsJGU/InJp''@;'; put 'put ''Z2h0LWFsaWduZWQiOiJsZWZ0LWFsaWduZWQiKSxXKHRoaXMuZWwsZ3Q/InRvcC1hbGlnbmVkIjoiYm90dG9tLWFsaWduZWQiKX19LHJlbmRlcjpmdW5jdGlvbihQLFYsVCl7dmFyIFM9dGhpcy5fbyxGPW5ldyBEYXRlLHllPXNlKFAsViksQ2U9bmV3IERhdGUoUCxWLDEpLmdldERheSgpLERl''@;'; put 'put ''PVtdLFBlPVtdO2FlKEYpLFMuZmlyc3REYXk+MCYmKENlLT1TLmZpcnN0RGF5KTwwJiYoQ2UrPTcpO2Zvcih2YXIgUWU9MD09PVY/MTE6Vi0xLCRlPTExPT09Vj8wOlYrMSxndD0wPT09Vj9QLTE6UCx5dD0xMT09PVY/UCsxOlAscHQ9c2UoZ3QsUWUpLG10PXllK0NlLHZ0PW10O3Z0Pjc7KXZ0''@;'; put 'put ''LT03O210Kz03LXZ0O2Zvcih2YXIgZnQ9ITEsRnQ9MCxvbj0wO0Z0PG10O0Z0Kyspe3ZhciBfdD1uZXcgRGF0ZShQLFYsRnQtQ2UrMSksbnQ9ISFlZSh0aGlzLl9kKSYmZmUoX3QsdGhpcy5fZCkscWU9ZmUoX3QsRiksb3Q9LTEhPT1TLmV2ZW50cy5pbmRleE9mKF90LnRvRGF0ZVN0cmluZygp''@;'; put 'put ''KSxSdD1GdDxDZXx8RnQ+PXllK0NlLEN0PUZ0LUNlKzEsY3Q9VixOdD1QLHplPVMuc3RhcnRSYW5nZSYmZmUoUy5zdGFydFJhbmdlLF90KSxZZT1TLmVuZFJhbmdlJiZmZShTLmVuZFJhbmdlLF90KSxBdD1TLnN0YXJ0UmFuZ2UmJlMuZW5kUmFuZ2UmJlMuc3RhcnRSYW5nZTxfdCYmX3Q8Uy5l''@;'; put 'put ''bmRSYW5nZSxqdD1TLm1pbkRhdGUmJl90PFMubWluRGF0ZXx8Uy5tYXhEYXRlJiZfdD5TLm1heERhdGV8fFMuZGlzYWJsZVdlZWtlbmRzJiZxKF90KXx8Uy5kaXNhYmxlRGF5Rm4mJlMuZGlzYWJsZURheUZuKF90KTtSdCYmKEZ0PENlPyhDdD1wdCtDdCxjdD1RZSxOdD1ndCk6KEN0LT15ZSxj''@;'; put 'put ''dD0kZSxOdD15dCkpLFMucGlja1dob2xlV2VlayYmbnQmJihmdD0hMCksUGUucHVzaChJZSh7ZGF5OkN0LG1vbnRoOmN0LHllYXI6TnQsaGFzRXZlbnQ6b3QsaXNTZWxlY3RlZDpudCxpc1RvZGF5OnFlLGlzRGlzYWJsZWQ6anQsaXNFbXB0eTpSdCxpc1N0YXJ0UmFuZ2U6emUsaXNFbmRSYW5n''@;'; put 'put ''ZTpZZSxpc0luUmFuZ2U6QXQsc2hvd0RheXNJbk5leHRBbmRQcmV2aW91c01vbnRoczpTLnNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHMsZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOlMuZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3Vz''@;'; put 'put ''TW9udGhzfSkpLDc9PSsrb24mJihTLnNob3dXZWVrTnVtYmVyJiZQZS51bnNoaWZ0KEVlKEZ0LUNlLFYsUCxTLmZpcnN0V2Vla09mWWVhck1pbkRheXMpKSxEZS5wdXNoKGhlKFBlLFMuaXNSVEwsUy5waWNrV2hvbGVXZWVrLGZ0KSksUGU9W10sb249MCxmdD0hMSl9cmV0dXJuIHRlKFMsRGUs''@;'; put 'put ''VCl9LGlzVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5pc1Zpc2libGUoKXx8KHRoaXMuX3Y9ITAsdGhpcy5kcmF3KCksVyh0aGlzLmVsLCJpcy1oaWRkZW4iKSx0aGlzLl9vLmJvdW5kJiYoUShNZSwiY2xpY2siLHRoaXMuX29uQ2xpY2sp''@;'; put 'put ''LHRoaXMuYWRqdXN0UG9zaXRpb24oKSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX28ub25PcGVuJiZ0aGlzLl9vLm9uT3Blbi5jYWxsKHRoaXMpKX0saGlkZTpmdW5jdGlvbigpe3ZhciBQPXRoaXMuX3Y7ITEhPT1QJiYodGhpcy5fby5ib3VuZCYmWihNZSwiY2xpY2siLHRoaXMuX29uQ2xp''@;'; put 'put ''Y2spLHRoaXMuX28uY29udGFpbmVyfHwodGhpcy5lbC5zdHlsZS5wb3NpdGlvbj0ic3RhdGljIix0aGlzLmVsLnN0eWxlLmxlZnQ9ImF1dG8iLHRoaXMuZWwuc3R5bGUudG9wPSJhdXRvIiksWSh0aGlzLmVsLCJpcy1oaWRkZW4iKSx0aGlzLl92PSExLHZvaWQgMCE9PVAmJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiB0aGlzLl9vLm9uQ2xvc2UmJnRoaXMuX28ub25DbG9zZS5jYWxsKHRoaXMpKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBQPXRoaXMuX287dGhpcy5oaWRlKCksWih0aGlzLmVsLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLCEwKSxaKHRoaXMuZWwsInRvdWNoZW5kIix0''@;'; put 'put ''aGlzLl9vbk1vdXNlRG93biwhMCksWih0aGlzLmVsLCJjaGFuZ2UiLHRoaXMuX29uQ2hhbmdlKSxQLmtleWJvYXJkSW5wdXQmJlooTWUsImtleWRvd24iLHRoaXMuX29uS2V5Q2hhbmdlKSxQLmZpZWxkJiYoWihQLmZpZWxkLCJjaGFuZ2UiLHRoaXMuX29uSW5wdXRDaGFuZ2UpLFAuYm91bmQm''@;'; put 'put ''JihaKFAudHJpZ2dlciwiY2xpY2siLHRoaXMuX29uSW5wdXRDbGljayksWihQLnRyaWdnZXIsImZvY3VzIix0aGlzLl9vbklucHV0Rm9jdXMpLFooUC50cmlnZ2VyLCJibHVyIix0aGlzLl9vbklucHV0Qmx1cikpKSx0aGlzLmVsLnBhcmVudE5vZGUmJnRoaXMuZWwucGFyZW50Tm9kZS5yZW1v''@;'; put 'put ''dmVDaGlsZCh0aGlzLmVsKX19LHh9KEUpfSgpfSw2MzcwMTooWGUsSmUsTCk9PntKZS5wdWJsaWNFbmNyeXB0PUwoMTY1NjIpLEplLnByaXZhdGVEZWNyeXB0PUwoMzY3MDUpLEplLnByaXZhdGVFbmNyeXB0PWZ1bmN0aW9uKEIsRSl7cmV0dXJuIEplLnB1YmxpY0VuY3J5cHQoQixFLCEwKX0s''@;'; put 'put ''SmUucHVibGljRGVjcnlwdD1mdW5jdGlvbihCLEUpe3JldHVybiBKZS5wcml2YXRlRGVjcnlwdChCLEUsITApfX0sODY5NDU6KFhlLEplLEwpPT57dmFyIGdlPUwoOTYzODYpLEI9TCg3MzUwMikuQnVmZmVyO2Z1bmN0aW9uIEUoTWUpe3ZhciBVPUIuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIFUu''@;'; put 'put ''d3JpdGVVSW50MzJCRShNZSwwKSxVfVhlLmV4cG9ydHM9ZnVuY3Rpb24oTWUsVSl7Zm9yKHZhciBpZSxRPUIuYWxsb2MoMCksWj0wO1EubGVuZ3RoPFU7KWllPUUoWisrKSxRPUIuY29uY2F0KFtRLGdlKCJzaGExIikudXBkYXRlKE1lKS51cGRhdGUoaWUpLmRpZ2VzdCgpXSk7cmV0dXJuIFEu''@;'; put 'put ''c2xpY2UoMCxVKX19LDgyMDU3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShoZSxPKXtpZighaGUpdGhyb3cgbmV3IEVycm9yKE98fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gTWUoaGUsTyl7aGUuc3VwZXJfPU87dmFyIHo9''@;'; put 'put ''ZnVuY3Rpb24oKXt9O3oucHJvdG90eXBlPU8ucHJvdG90eXBlLGhlLnByb3RvdHlwZT1uZXcgeixoZS5wcm90b3R5cGUuY29uc3RydWN0b3I9aGV9ZnVuY3Rpb24gVShoZSxPLHope2lmKFUuaXNCTihoZSkpcmV0dXJuIGhlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5s''@;'; put 'put ''ZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1oZSYmKCgibGUiPT09T3x8ImJlIj09PU8pJiYoej1PLE89MTApLHRoaXMuX2luaXQoaGV8fDAsT3x8MTAsenx8ImJlIikpfXZhciBROyJvYmplY3QiPT10eXBlb2YgZ2U/Z2UuZXhwb3J0cz1VOkIuQk49VSxVLkJOPVUsVS53b3JkU2l6ZT0y''@;'; put 'put ''Njt0cnl7UT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoNzcxMDgpLkJ1ZmZlcn1jYXRjaChoZSl7fWZ1bmN0aW9uIFooaGUsTyl7dmFyIHo9aGUuY2hhckNvZGVBdChPKTtyZXR1cm4gej49NjUmJno8PTcwP3otNTU6''@;'; put 'put ''ej49OTcmJno8PTEwMj96LTg3OnotNDgmMTV9ZnVuY3Rpb24gaWUoaGUsTyx6KXt2YXIgbmU9WihoZSx6KTtyZXR1cm4gei0xPj1PJiYobmV8PVooaGUsei0xKTw8NCksbmV9ZnVuY3Rpb24gbGUoaGUsTyx6LG5lKXtmb3IodmFyIHRlPTAseD1NYXRoLm1pbihoZS5sZW5ndGgseiksUD1PO1A8''@;'; put 'put ''eDtQKyspe3ZhciBWPWhlLmNoYXJDb2RlQXQoUCktNDg7dGUqPW5lLHRlKz1WPj00OT9WLTQ5KzEwOlY+PTE3P1YtMTcrMTA6Vn1yZXR1cm4gdGV9VS5pc0JOPWZ1bmN0aW9uKE8pe3JldHVybiBPIGluc3RhbmNlb2YgVXx8bnVsbCE9PU8mJiJvYmplY3QiPT10eXBlb2YgTyYmTy5jb25zdHJ1''@;'; put 'put ''Y3Rvci53b3JkU2l6ZT09PVUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoTy53b3Jkcyl9LFUubWF4PWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHopPjA/Tzp6fSxVLm1pbj1mdW5jdGlvbihPLHope3JldHVybiBPLmNtcCh6KTwwP086en0sVS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24o''@;'; put 'put ''Tyx6LG5lKXtpZigibnVtYmVyIj09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoTyx6LG5lKTtpZigib2JqZWN0Ij09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2luaXRBcnJheShPLHosbmUpOyJoZXgiPT09eiYmKHo9MTYpLEUoej09PSgwfHopJiZ6Pj0yJiZ6PD0zNik7dmFyIHRl''@;'; put 'put ''PTA7Ii0iPT09KE89Ty50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih0ZSsrLHRoaXMubmVnYXRpdmU9MSksdGU8Ty5sZW5ndGgmJigxNj09PXo/dGhpcy5fcGFyc2VIZXgoTyx0ZSxuZSk6KHRoaXMuX3BhcnNlQmFzZShPLHosdGUpLCJsZSI9PT1uZSYmdGhpcy5faW5pdEFy''@;'; put 'put ''cmF5KHRoaXMudG9BcnJheSgpLHosbmUpKSl9LFUucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKE8seixuZSl7TzwwJiYodGhpcy5uZWdhdGl2ZT0xLE89LU8pLE88NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJk9dLHRoaXMubGVuZ3RoPTEpOk88NDUwMzU5OTYyNzM3MDQ5''@;'; put 'put ''Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRShPPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09bmUmJnRoaXMuX2lu''@;'; put 'put ''aXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LG5lKX0sVS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihPLHosbmUpe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPLmxlbmd0aCksTy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0''@;'; put 'put ''aD1NYXRoLmNlaWwoTy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdGU9MDt0ZTx0aGlzLmxlbmd0aDt0ZSsrKXRoaXMud29yZHNbdGVdPTA7dmFyIHgsUCxWPTA7aWYoImJlIj09PW5lKWZvcih0ZT1PLmxlbmd0aC0xLHg9MDt0ZT49MDt0ZS09''@;'; put 'put ''Myl0aGlzLndvcmRzW3hdfD0oUD1PW3RlXXxPW3RlLTFdPDw4fE9bdGUtMl08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4KyspO2Vsc2UgaWYoImxlIj09PW5lKWZvcih0ZT0wLHg9MDt0ZTxPLmxlbmd0aDt0''@;'; put 'put ''ZSs9Myl0aGlzLndvcmRzW3hdfD0oUD1PW3RlXXxPW3RlKzFdPDw4fE9bdGUrMl08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4KyspO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUhl''@;'; put 'put ''eD1mdW5jdGlvbihPLHosbmUpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoTy5sZW5ndGgteikvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdGU9MDt0ZTx0aGlzLmxlbmd0aDt0ZSsrKXRoaXMud29yZHNbdGVdPTA7dmFyIFYseD0wLFA9MDtpZigiYmUiPT09''@;'; put 'put ''bmUpZm9yKHRlPU8ubGVuZ3RoLTE7dGU+PXo7dGUtPTIpVj1pZShPLHosdGUpPDx4LHRoaXMud29yZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4LHRoaXMud29yZHNbUCs9MV18PVY+Pj4yNik6eCs9ODtlbHNlIGZvcih0ZT0oTy5sZW5ndGgteiklMj09MD96KzE6ejt0ZTxPLmxlbmd0''@;'; put 'put ''aDt0ZSs9MilWPWllKE8seix0ZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O3RoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihPLHosbmUpe3RoaXMud29yZHM9WzBdLHRo''@;'; put 'put ''aXMubGVuZ3RoPTE7Zm9yKHZhciB0ZT0wLHg9MTt4PD02NzEwODg2Mzt4Kj16KXRlKys7dGUtLSx4PXgvenwwO2Zvcih2YXIgUD1PLmxlbmd0aC1uZSxWPVAldGUsVD1NYXRoLm1pbihQLFAtVikrbmUsUz0wLEY9bmU7RjxUO0YrPXRlKVM9bGUoTyxGLEYrdGUseiksdGhpcy5pbXVsbih4KSx0''@;'; put 'put ''aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlzLl9pYWRkbihTKTtpZigwIT09Vil7dmFyIHllPTE7Zm9yKFM9bGUoTyxGLE8ubGVuZ3RoLHopLEY9MDtGPFY7RisrKXllKj16O3RoaXMuaW11bG4oeWUpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndv''@;'; put 'put ''cmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpfXRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihPKXtPLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aDt6KyspTy53b3Jkc1t6XT10aGlzLndvcmRzW3pdO08ubGVuZ3RoPXRo''@;'; put 'put ''aXMubGVuZ3RoLE8ubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxPLnJlZD10aGlzLnJlZH0sVS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KE8pLE99LFUucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxl''@;'; put 'put ''bmd0aDxPOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24o''@;'; put 'put ''KX0sVS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LFUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46''@;'; put 'put ''ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIFk9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAi''@;'; put 'put ''LCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVz1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1''@;'; put 'put ''LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxOPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQx''@;'; put 'put ''Mzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZd''@;'; put 'put ''O2Z1bmN0aW9uIHEoaGUsTyx6KXt6Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeaGUubmVnYXRpdmU7dmFyIG5lPWhlLmxlbmd0aCtPLmxlbmd0aHwwO3oubGVuZ3RoPW5lLG5lPW5lLTF8MDt2YXIgdGU9MHxoZS53b3Jkc1swXSx4PTB8Ty53b3Jkc1swXSxQPXRlKngsVD1QLzY3MTA4ODY0fDA7ei53''@;'; put 'put ''b3Jkc1swXT02NzEwODg2MyZQO2Zvcih2YXIgUz0xO1M8bmU7UysrKXtmb3IodmFyIEY9VD4+PjI2LHllPTY3MTA4ODYzJlQsQ2U9TWF0aC5taW4oUyxPLmxlbmd0aC0xKSxEZT1NYXRoLm1heCgwLFMtaGUubGVuZ3RoKzEpO0RlPD1DZTtEZSsrKUYrPShQPSh0ZT0wfGhlLndvcmRzW1MtRGV8''@;'; put 'put ''MF0pKih4PTB8Ty53b3Jkc1tEZV0pK3llKS82NzEwODg2NHwwLHllPTY3MTA4ODYzJlA7ei53b3Jkc1tTXT0wfHllLFQ9MHxGfXJldHVybiAwIT09VD96LndvcmRzW1NdPTB8VDp6Lmxlbmd0aC0tLHouc3RyaXAoKX1VLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihPLHope3ZhciBuZTtp''@;'; put 'put ''Zih6PTB8enx8MSwxNj09PShPPU98fDEwKXx8ImhleCI9PT1PKXtuZT0iIjtmb3IodmFyIHRlPTAseD0wLFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9dGhpcy53b3Jkc1tQXSxUPSgxNjc3NzIxNSYoVjw8dGV8eCkpLnRvU3RyaW5nKDE2KTtuZT0wIT0oeD1WPj4+MjQtdGUmMTY3Nzcy''@;'; put 'put ''MTUpfHxQIT09dGhpcy5sZW5ndGgtMT9ZWzYtVC5sZW5ndGhdK1QrbmU6VCtuZSwodGUrPTIpPj0yNiYmKHRlLT0yNixQLS0pfWZvcigwIT09eCYmKG5lPXgudG9TdHJpbmcoMTYpK25lKTtuZS5sZW5ndGgleiE9MDspbmU9IjAiK25lO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKG5lPSIt''@;'; put 'put ''IituZSksbmV9aWYoTz09PSgwfE8pJiZPPj0yJiZPPD0zNil7dmFyIFM9V1tPXSxGPU5bT107bmU9IiI7dmFyIHllPXRoaXMuY2xvbmUoKTtmb3IoeWUubmVnYXRpdmU9MDsheWUuaXNaZXJvKCk7KXt2YXIgQ2U9eWUubW9kbihGKS50b1N0cmluZyhPKTtuZT0oeWU9eWUuaWRpdm4oRikpLmlz''@;'; put 'put ''WmVybygpP0NlK25lOllbUy1DZS5sZW5ndGhdK0NlK25lfWZvcih0aGlzLmlzWmVybygpJiYobmU9IjAiK25lKTtuZS5sZW5ndGgleiE9MDspbmU9IjAiK25lO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKG5lPSItIituZSksbmV9RSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFu''@;'; put 'put ''ZCAzNiIpfSxVLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBPPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9PKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Tys9NDUwMzU5OTYyNzM3MDQ5Nis2''@;'; put 'put ''NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkUoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1POk99LFUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2''@;'; put 'put ''KX0sVS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gRSh2b2lkIDAhPT1RKSx0aGlzLnRvQXJyYXlMaWtlKFEsTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LE8seil9LFUucHJvdG90eXBl''@;'; put 'put ''LnRvQXJyYXlMaWtlPWZ1bmN0aW9uKE8seixuZSl7dmFyIHRlPXRoaXMuYnl0ZUxlbmd0aCgpLHg9bmV8fE1hdGgubWF4KDEsdGUpO0UodGU8PXgsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxFKHg+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhp''@;'; put 'put ''cy5zdHJpcCgpO3ZhciBULFMsUD0ibGUiPT09eixWPW5ldyBPKHgpLEY9dGhpcy5jbG9uZSgpO2lmKFApe2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbU109VDtmb3IoO1M8eDtTKyspVltTXT0wfWVsc2V7Zm9yKFM9MDtTPHgtdGU7UysrKVZb''@;'; put 'put ''U109MDtmb3IoUz0wOyFGLmlzWmVybygpO1MrKylUPUYuYW5kbG4oMjU1KSxGLml1c2hybig4KSxWW3gtUy0xXT1UfXJldHVybiBWfSxVLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oTyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoTyl9OmZ1bmN0aW9uKE8pe3ZhciB6''@;'; put 'put ''PU8sbmU9MDtyZXR1cm4gej49NDA5NiYmKG5lKz0xMyx6Pj4+PTEzKSx6Pj02NCYmKG5lKz03LHo+Pj49Nyksej49OCYmKG5lKz00LHo+Pj49NCksej49MiYmKG5lKz0yLHo+Pj49MiksbmUren0sVS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKE8pe2lmKDA9PT1PKXJldHVybiAyNjt2''@;'; put 'put ''YXIgej1PLG5lPTA7cmV0dXJuIDA9PSg4MTkxJnopJiYobmUrPTEzLHo+Pj49MTMpLDA9PSgxMjcmeikmJihuZSs9Nyx6Pj4+PTcpLDA9PSgxNSZ6KSYmKG5lKz00LHo+Pj49NCksMD09KDMmeikmJihuZSs9Mix6Pj4+PTIpLDA9PSgxJnopJiZuZSsrLG5lfSxVLnByb3RvdHlwZS5iaXRMZW5n''@;'; put 'put ''dGg9ZnVuY3Rpb24oKXt2YXIgej10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKSt6fSxVLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBPPTAsej0w''@;'; put 'put ''O3o8dGhpcy5sZW5ndGg7eisrKXt2YXIgbmU9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t6XSk7aWYoTys9bmUsMjYhPT1uZSlicmVha31yZXR1cm4gT30sVS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sVS5w''@;'; put 'put ''cm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKE8pLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMudGVzdG4oTy0xKT90aGlzLm5vdG4oTyku''@;'; put 'put ''aWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LFUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxVLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxVLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKE8pe2Zvcig7dGhpcy5sZW5ndGg8Ty5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIHo9MDt6PE8ubGVuZ3RoO3orKyl0aGlz''@;'; put 'put ''LndvcmRzW3pdPXRoaXMud29yZHNbel18Ty53b3Jkc1t6XTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXVvcihPKX0sVS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoTyk6Ty5jbG9uZSgpLmlvcih0aGlzKX0sVS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihPKTpPLmNsb25lKCkuaXVvcih0aGlz''@;'; put 'put ''KX0sVS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oTyl7dmFyIHo7ej10aGlzLmxlbmd0aD5PLmxlbmd0aD9POnRoaXM7Zm9yKHZhciBuZT0wO25lPHoubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09dGhpcy53b3Jkc1tuZV0mTy53b3Jkc1tuZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVu''@;'; put 'put ''Z3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChPKX0sVS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNs''@;'; put 'put ''b25lKCkuaWFuZChPKTpPLmNsb25lKCkuaWFuZCh0aGlzKX0sVS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKE8pOk8uY2xvbmUoKS5pdWFuZCh0aGlzKX0sVS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24o''@;'; put 'put ''Tyl7dmFyIHosbmU7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KHo9dGhpcyxuZT1PKTooej1PLG5lPXRoaXMpO2Zvcih2YXIgdGU9MDt0ZTxuZS5sZW5ndGg7dGUrKyl0aGlzLndvcmRzW3RlXT16LndvcmRzW3RlXV5uZS53b3Jkc1t0ZV07aWYodGhpcyE9PXopZm9yKDt0ZTx6Lmxlbmd0aDt0ZSsr''@;'; put 'put ''KXRoaXMud29yZHNbdGVdPXoud29yZHNbdGVdO3JldHVybiB0aGlzLmxlbmd0aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoTyl9LFUucHJvdG90eXBl''@;'; put 'put ''Lnhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoTyk6Ty5jbG9uZSgpLml4b3IodGhpcyl9LFUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihP''@;'; put 'put ''KTpPLmNsb25lKCkuaXV4b3IodGhpcyl9LFUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej0wfE1hdGguY2VpbChPLzI2KSxuZT1PJTI2O3RoaXMuX2V4cGFuZCh6KSxuZT4wJiZ6LS07Zm9yKHZhciB0ZT0wO3RlPHo7dGUrKyl0''@;'; put 'put ''aGlzLndvcmRzW3RlXT02NzEwODg2MyZ+dGhpcy53b3Jkc1t0ZV07cmV0dXJuIG5lPjAmJih0aGlzLndvcmRzW3RlXT1+dGhpcy53b3Jkc1t0ZV0mNjcxMDg4NjM+PjI2LW5lKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''bm90bihPKX0sVS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihPLHope0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgbmU9Ty8yNnwwLHRlPU8lMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChuZSsxKSx0aGlzLndvcmRzW25lXT16P3RoaXMud29yZHNbbmVdfDE8PHRlOnRoaXMud29yZHNb''@;'; put 'put ''bmVdJn4oMTw8dGUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihPKXt2YXIgeixuZSx0ZTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMu''@;'; put 'put ''X25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVybiBPLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KG5lPXRoaXMsdGU9Tyk6KG5lPU8sdGU9dGhpcyk7Zm9y''@;'; put 'put ''KHZhciB4PTAsUD0wO1A8dGUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3MTA4ODYzJih6PSgwfG5lLndvcmRzW1BdKSsoMHx0ZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7Zm9yKDswIT09eCYmUDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8bmUud29yZHNb''@;'; put 'put ''UF0pK3gpLHg9ej4+PjI2O2lmKHRoaXMubGVuZ3RoPW5lLmxlbmd0aCwwIT09eCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT14LHRoaXMubGVuZ3RoKys7ZWxzZSBpZihuZSE9PXRoaXMpZm9yKDtQPG5lLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT1uZS53b3Jkc1tQXTtyZXR1cm4gdGhpc30s''@;'; put 'put ''VS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8pe3ZhciB6O3JldHVybiAwIT09Ty5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KE8ubmVnYXRpdmU9MCx6PXRoaXMuc3ViKE8pLE8ubmVnYXRpdmVePTEseik6MD09PU8ubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTAsej1PLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEseik6dGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoTyk6Ty5jbG9uZSgpLmlhZGQodGhpcyl9LFUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTyl7aWYoMCE9PU8ubmVnYXRpdmUpe08ubmVnYXRpdmU9MDt2''@;'; put 'put ''YXIgej10aGlzLmlhZGQoTyk7cmV0dXJuIE8ubmVnYXRpdmU9MSx6Ll9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciB0ZSx4LG5lPXRoaXMuY21wKE8p''@;'; put 'put ''O2lmKDA9PT1uZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7bmU+MD8odGU9dGhpcyx4PU8pOih0ZT1PLHg9dGhpcyk7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKVA9KHo9KDB8dGUud29yZHNbVl0pLSgwfHgud29yZHNb''@;'; put 'put ''Vl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7Zm9yKDswIT09UCYmVjx0ZS5sZW5ndGg7VisrKVA9KHo9KDB8dGUud29yZHNbVl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7aWYoMD09PVAmJlY8dGUubGVuZ3RoJiZ0ZSE9PXRoaXMpZm9yKDtWPHRlLmxlbmd0''@;'; put 'put ''aDtWKyspdGhpcy53b3Jkc1tWXT10ZS53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsViksdGUhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgp''@;'; put 'put ''LmlzdWIoTyl9O3ZhciBKPWZ1bmN0aW9uKE8seixuZSl7dmFyIFQsUyxGLHRlPU8ud29yZHMseD16LndvcmRzLFA9bmUud29yZHMsVj0wLHllPTB8dGVbMF0sQ2U9ODE5MSZ5ZSxEZT15ZT4+PjEzLFBlPTB8dGVbMV0sUWU9ODE5MSZQZSwkZT1QZT4+PjEzLGd0PTB8dGVbMl0seXQ9ODE5MSZn''@;'; put 'put ''dCxwdD1ndD4+PjEzLG10PTB8dGVbM10sdnQ9ODE5MSZtdCxmdD1tdD4+PjEzLEZ0PTB8dGVbNF0sb249ODE5MSZGdCxfdD1GdD4+PjEzLG50PTB8dGVbNV0scWU9ODE5MSZudCxvdD1udD4+PjEzLFJ0PTB8dGVbNl0sQ3Q9ODE5MSZSdCxjdD1SdD4+PjEzLE50PTB8dGVbN10semU9ODE5MSZO''@;'; put 'put ''dCxZZT1OdD4+PjEzLEF0PTB8dGVbOF0sanQ9ODE5MSZBdCxKdD1BdD4+PjEzLG1uPTB8dGVbOV0scG49ODE5MSZtbixibj1tbj4+PjEzLGxuPTB8eFswXSxObj04MTkxJmxuLGtuPWxuPj4+MTMsZXI9MHx4WzFdLHVyPTgxOTEmZXIsWG49ZXI+Pj4xMyxGcj0wfHhbMl0seHI9ODE5MSZGcixl''@;'; put 'put ''bj1Gcj4+PjEzLGRyPTB8eFszXSxucj04MTkxJmRyLHduPWRyPj4+MTMsJG49MHx4WzRdLFl0PTgxOTEmJG4sZ249JG4+Pj4xMyxLbj0wfHhbNV0sVnQ9ODE5MSZLbixzbj1Lbj4+PjEzLFVuPTB8eFs2XSxfbj04MTkxJlVuLHRuPVVuPj4+MTMsR249MHx4WzddLFRyPTgxOTEmR24sUG49R24+''@;'; put 'put ''Pj4xMyxTcj0wfHhbOF0sdm49ODE5MSZTcix1bj1Tcj4+PjEzLGNuPTB8eFs5XSxTbj04MTkxJmNuLEd0PWNuPj4+MTM7bmUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLG5lLmxlbmd0aD0xOTt2YXIgRW49KFYrKFQ9TWF0aC5pbXVsKENlLE5uKSl8MCkrKCg4MTkxJihTPShTPU1h''@;'; put 'put ''dGguaW11bChDZSxrbikpK01hdGguaW11bChEZSxObil8MCkpPDwxMyl8MDtWPSgoRj1NYXRoLmltdWwoRGUsa24pKSsoUz4+PjEzKXwwKSsoRW4+Pj4yNil8MCxFbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoUWUsTm4pLFM9KFM9TWF0aC5pbXVsKFFlLGtuKSkrTWF0aC5pbXVsKCRlLE5uKXww''@;'; put 'put ''LEY9TWF0aC5pbXVsKCRlLGtuKTt2YXIgam49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsdXIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxYbil8MCkrTWF0aC5pbXVsKERlLHVyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLFhuKXwwKSsoUz4+PjEzKXwwKSsoam4+''@;'; put 'put ''Pj4yNil8MCxqbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoeXQsTm4pLFM9KFM9TWF0aC5pbXVsKHl0LGtuKSkrTWF0aC5pbXVsKHB0LE5uKXwwLEY9TWF0aC5pbXVsKHB0LGtuKSxUPVQrTWF0aC5pbXVsKFFlLHVyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsWG4pfDApK01hdGguaW11bCgkZSx1''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKCRlLFhuKXwwO3ZhciBxdD0oVisoVD1UK01hdGguaW11bChDZSx4cil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLGVuKXwwKStNYXRoLmltdWwoRGUseHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsZW4pfDApKyhTPj4+MTMp''@;'; put 'put ''fDApKyhxdD4+PjI2KXwwLHF0Jj02NzEwODg2MyxUPU1hdGguaW11bCh2dCxObiksUz0oUz1NYXRoLmltdWwodnQsa24pKStNYXRoLmltdWwoZnQsTm4pfDAsRj1NYXRoLmltdWwoZnQsa24pLFQ9VCtNYXRoLmltdWwoeXQsdXIpfDAsUz0oUz1TK01hdGguaW11bCh5dCxYbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKHB0LHVyKXwwLEY9RitNYXRoLmltdWwocHQsWG4pfDAsVD1UK01hdGguaW11bChRZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLGVuKXwwKStNYXRoLmltdWwoJGUseHIpfDAsRj1GK01hdGguaW11bCgkZSxlbil8MDt2YXIgTG49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsbnIpfDApfDAp''@;'; put 'put ''KygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSx3bil8MCkrTWF0aC5pbXVsKERlLG5yKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHduKXwwKSsoUz4+PjEzKXwwKSsoTG4+Pj4yNil8MCxMbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwob24sTm4pLFM9KFM9TWF0aC5pbXVsKG9u''@;'; put 'put ''LGtuKSkrTWF0aC5pbXVsKF90LE5uKXwwLEY9TWF0aC5pbXVsKF90LGtuKSxUPVQrTWF0aC5pbXVsKHZ0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwodnQsWG4pfDApK01hdGguaW11bChmdCx1cil8MCxGPUYrTWF0aC5pbXVsKGZ0LFhuKXwwLFQ9VCtNYXRoLmltdWwoeXQseHIpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bCh5dCxlbil8MCkrTWF0aC5pbXVsKHB0LHhyKXwwLEY9RitNYXRoLmltdWwocHQsZW4pfDAsVD1UK01hdGguaW11bChRZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHduKXwwKStNYXRoLmltdWwoJGUsbnIpfDAsRj1GK01hdGguaW11bCgkZSx3bil8MDt2YXIgSm49KFYr''@;'; put 'put ''KFQ9VCtNYXRoLmltdWwoQ2UsWXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxnbil8MCkrTWF0aC5pbXVsKERlLFl0KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLGduKXwwKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmlt''@;'; put 'put ''dWwocWUsTm4pLFM9KFM9TWF0aC5pbXVsKHFlLGtuKSkrTWF0aC5pbXVsKG90LE5uKXwwLEY9TWF0aC5pbXVsKG90LGtuKSxUPVQrTWF0aC5pbXVsKG9uLHVyKXwwLFM9KFM9UytNYXRoLmltdWwob24sWG4pfDApK01hdGguaW11bChfdCx1cil8MCxGPUYrTWF0aC5pbXVsKF90LFhuKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwodnQseHIpfDAsUz0oUz1TK01hdGguaW11bCh2dCxlbil8MCkrTWF0aC5pbXVsKGZ0LHhyKXwwLEY9RitNYXRoLmltdWwoZnQsZW4pfDAsVD1UK01hdGguaW11bCh5dCxucil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LHduKXwwKStNYXRoLmltdWwocHQsbnIpfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChwdCx3bil8MCxUPVQrTWF0aC5pbXVsKFFlLFl0KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsZ24pfDApK01hdGguaW11bCgkZSxZdCl8MCxGPUYrTWF0aC5pbXVsKCRlLGduKXwwO3ZhciBvcj0oVisoVD1UK01hdGguaW11bChDZSxWdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKENlLHNuKXwwKStNYXRoLmltdWwoRGUsVnQpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsc24pfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11bChDdCxObiksUz0oUz1NYXRoLmltdWwoQ3Qsa24pKStNYXRoLmltdWwoY3Qs''@;'; put 'put ''Tm4pfDAsRj1NYXRoLmltdWwoY3Qsa24pLFQ9VCtNYXRoLmltdWwocWUsdXIpfDAsUz0oUz1TK01hdGguaW11bChxZSxYbil8MCkrTWF0aC5pbXVsKG90LHVyKXwwLEY9RitNYXRoLmltdWwob3QsWG4pfDAsVD1UK01hdGguaW11bChvbix4cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLGVuKXww''@;'; put 'put ''KStNYXRoLmltdWwoX3QseHIpfDAsRj1GK01hdGguaW11bChfdCxlbil8MCxUPVQrTWF0aC5pbXVsKHZ0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwodnQsd24pfDApK01hdGguaW11bChmdCxucil8MCxGPUYrTWF0aC5pbXVsKGZ0LHduKXwwLFQ9VCtNYXRoLmltdWwoeXQsWXQpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bCh5dCxnbil8MCkrTWF0aC5pbXVsKHB0LFl0KXwwLEY9RitNYXRoLmltdWwocHQsZ24pfDAsVD1UK01hdGguaW11bChRZSxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHNuKXwwKStNYXRoLmltdWwoJGUsVnQpfDAsRj1GK01hdGguaW11bCgkZSxzbil8MDt2YXIgZ3I9KFYr''@;'; put 'put ''KFQ9VCtNYXRoLmltdWwoQ2UsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSx0bil8MCkrTWF0aC5pbXVsKERlLF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHRuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmlt''@;'; put 'put ''dWwoemUsTm4pLFM9KFM9TWF0aC5pbXVsKHplLGtuKSkrTWF0aC5pbXVsKFllLE5uKXwwLEY9TWF0aC5pbXVsKFllLGtuKSxUPVQrTWF0aC5pbXVsKEN0LHVyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsWG4pfDApK01hdGguaW11bChjdCx1cil8MCxGPUYrTWF0aC5pbXVsKGN0LFhuKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwocWUseHIpfDAsUz0oUz1TK01hdGguaW11bChxZSxlbil8MCkrTWF0aC5pbXVsKG90LHhyKXwwLEY9RitNYXRoLmltdWwob3QsZW4pfDAsVD1UK01hdGguaW11bChvbixucil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHduKXwwKStNYXRoLmltdWwoX3QsbnIpfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChfdCx3bil8MCxUPVQrTWF0aC5pbXVsKHZ0LFl0KXwwLFM9KFM9UytNYXRoLmltdWwodnQsZ24pfDApK01hdGguaW11bChmdCxZdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LGduKXwwLFQ9VCtNYXRoLmltdWwoeXQsVnQpfDAsUz0oUz1TK01hdGguaW11bCh5dCxzbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKHB0LFZ0KXwwLEY9RitNYXRoLmltdWwocHQsc24pfDAsVD1UK01hdGguaW11bChRZSxfbil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHRuKXwwKStNYXRoLmltdWwoJGUsX24pfDAsRj1GK01hdGguaW11bCgkZSx0bil8MDt2YXIgSnI9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVHIpfDApfDAp''@;'; put 'put ''KygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxQbil8MCkrTWF0aC5pbXVsKERlLFRyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLFBuKXwwKSsoUz4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoanQsTm4pLFM9KFM9TWF0aC5pbXVsKGp0''@;'; put 'put ''LGtuKSkrTWF0aC5pbXVsKEp0LE5uKXwwLEY9TWF0aC5pbXVsKEp0LGtuKSxUPVQrTWF0aC5pbXVsKHplLHVyKXwwLFM9KFM9UytNYXRoLmltdWwoemUsWG4pfDApK01hdGguaW11bChZZSx1cil8MCxGPUYrTWF0aC5pbXVsKFllLFhuKXwwLFQ9VCtNYXRoLmltdWwoQ3QseHIpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChDdCxlbil8MCkrTWF0aC5pbXVsKGN0LHhyKXwwLEY9RitNYXRoLmltdWwoY3QsZW4pfDAsVD1UK01hdGguaW11bChxZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKHFlLHduKXwwKStNYXRoLmltdWwob3QsbnIpfDAsRj1GK01hdGguaW11bChvdCx3bil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKG9uLFl0KXwwLFM9KFM9UytNYXRoLmltdWwob24sZ24pfDApK01hdGguaW11bChfdCxZdCl8MCxGPUYrTWF0aC5pbXVsKF90LGduKXwwLFQ9VCtNYXRoLmltdWwodnQsVnQpfDAsUz0oUz1TK01hdGguaW11bCh2dCxzbil8MCkrTWF0aC5pbXVsKGZ0LFZ0KXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''ZnQsc24pfDAsVD1UK01hdGguaW11bCh5dCxfbil8MCxTPShTPVMrTWF0aC5pbXVsKHl0LHRuKXwwKStNYXRoLmltdWwocHQsX24pfDAsRj1GK01hdGguaW11bChwdCx0bil8MCxUPVQrTWF0aC5pbXVsKFFlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsUG4pfDApK01hdGguaW11bCgkZSxU''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKCRlLFBuKXwwO3ZhciBWcj0oVisoVD1UK01hdGguaW11bChDZSx2bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHVuKXwwKStNYXRoLmltdWwoRGUsdm4pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdW4pfDApKyhTPj4+MTMp''@;'; put 'put ''fDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChwbixObiksUz0oUz1NYXRoLmltdWwocG4sa24pKStNYXRoLmltdWwoYm4sTm4pfDAsRj1NYXRoLmltdWwoYm4sa24pLFQ9VCtNYXRoLmltdWwoanQsdXIpfDAsUz0oUz1TK01hdGguaW11bChqdCxYbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEp0LHVyKXwwLEY9RitNYXRoLmltdWwoSnQsWG4pfDAsVD1UK01hdGguaW11bCh6ZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHplLGVuKXwwKStNYXRoLmltdWwoWWUseHIpfDAsRj1GK01hdGguaW11bChZZSxlbil8MCxUPVQrTWF0aC5pbXVsKEN0LG5yKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoQ3Qsd24pfDApK01hdGguaW11bChjdCxucil8MCxGPUYrTWF0aC5pbXVsKGN0LHduKXwwLFQ9VCtNYXRoLmltdWwocWUsWXQpfDAsUz0oUz1TK01hdGguaW11bChxZSxnbil8MCkrTWF0aC5pbXVsKG90LFl0KXwwLEY9RitNYXRoLmltdWwob3QsZ24pfDAsVD1UK01hdGguaW11bChvbixW''@;'; put 'put ''dCl8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHNuKXwwKStNYXRoLmltdWwoX3QsVnQpfDAsRj1GK01hdGguaW11bChfdCxzbil8MCxUPVQrTWF0aC5pbXVsKHZ0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwodnQsdG4pfDApK01hdGguaW11bChmdCxfbil8MCxGPUYrTWF0aC5pbXVsKGZ0LHRuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoeXQsVHIpfDAsUz0oUz1TK01hdGguaW11bCh5dCxQbil8MCkrTWF0aC5pbXVsKHB0LFRyKXwwLEY9RitNYXRoLmltdWwocHQsUG4pfDAsVD1UK01hdGguaW11bChRZSx2bil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHVuKXwwKStNYXRoLmltdWwoJGUsdm4pfDAsRj1G''@;'; put 'put ''K01hdGguaW11bCgkZSx1bil8MDt2YXIgdGk9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxHdCl8MCkrTWF0aC5pbXVsKERlLFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEd0KXwwKSsoUz4+PjEzKXwwKSsodGk+''@;'; put 'put ''Pj4yNil8MCx0aSY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sdXIpLFM9KFM9TWF0aC5pbXVsKHBuLFhuKSkrTWF0aC5pbXVsKGJuLHVyKXwwLEY9TWF0aC5pbXVsKGJuLFhuKSxUPVQrTWF0aC5pbXVsKGp0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoanQsZW4pfDApK01hdGguaW11bChKdCx4''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKEp0LGVuKXwwLFQ9VCtNYXRoLmltdWwoemUsbnIpfDAsUz0oUz1TK01hdGguaW11bCh6ZSx3bil8MCkrTWF0aC5pbXVsKFllLG5yKXwwLEY9RitNYXRoLmltdWwoWWUsd24pfDAsVD1UK01hdGguaW11bChDdCxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LGdu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoY3QsWXQpfDAsRj1GK01hdGguaW11bChjdCxnbil8MCxUPVQrTWF0aC5pbXVsKHFlLFZ0KXwwLFM9KFM9UytNYXRoLmltdWwocWUsc24pfDApK01hdGguaW11bChvdCxWdCl8MCxGPUYrTWF0aC5pbXVsKG90LHNuKXwwLFQ9VCtNYXRoLmltdWwob24sX24pfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChvbix0bil8MCkrTWF0aC5pbXVsKF90LF9uKXwwLEY9RitNYXRoLmltdWwoX3QsdG4pfDAsVD1UK01hdGguaW11bCh2dCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHZ0LFBuKXwwKStNYXRoLmltdWwoZnQsVHIpfDAsRj1GK01hdGguaW11bChmdCxQbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKHl0LHZuKXwwLFM9KFM9UytNYXRoLmltdWwoeXQsdW4pfDApK01hdGguaW11bChwdCx2bil8MCxGPUYrTWF0aC5pbXVsKHB0LHVuKXwwO3ZhciBPcj0oVisoVD1UK01hdGguaW11bChRZSxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFFlLEd0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoJGUsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoJGUsR3QpfDApKyhTPj4+MTMpfDApKyhPcj4+PjI2KXwwLE9yJj02NzEwODg2MyxUPU1hdGguaW11bChwbix4ciksUz0oUz1NYXRoLmltdWwocG4sZW4pKStNYXRoLmltdWwoYm4seHIpfDAsRj1NYXRoLmltdWwoYm4sZW4p''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoanQsbnIpfDAsUz0oUz1TK01hdGguaW11bChqdCx3bil8MCkrTWF0aC5pbXVsKEp0LG5yKXwwLEY9RitNYXRoLmltdWwoSnQsd24pfDAsVD1UK01hdGguaW11bCh6ZSxZdCl8MCxTPShTPVMrTWF0aC5pbXVsKHplLGduKXwwKStNYXRoLmltdWwoWWUsWXQpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChZZSxnbil8MCxUPVQrTWF0aC5pbXVsKEN0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoQ3Qsc24pfDApK01hdGguaW11bChjdCxWdCl8MCxGPUYrTWF0aC5pbXVsKGN0LHNuKXwwLFQ9VCtNYXRoLmltdWwocWUsX24pfDAsUz0oUz1TK01hdGguaW11bChxZSx0bil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKG90LF9uKXwwLEY9RitNYXRoLmltdWwob3QsdG4pfDAsVD1UK01hdGguaW11bChvbixUcil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLFBuKXwwKStNYXRoLmltdWwoX3QsVHIpfDAsRj1GK01hdGguaW11bChfdCxQbil8MCxUPVQrTWF0aC5pbXVsKHZ0LHZuKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwodnQsdW4pfDApK01hdGguaW11bChmdCx2bil8MCxGPUYrTWF0aC5pbXVsKGZ0LHVuKXwwO3ZhciBsaT0oVisoVD1UK01hdGguaW11bCh5dCxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHl0LEd0KXwwKStNYXRoLmltdWwocHQsU24pfDApKTw8MTMpfDA7Vj0oKEY9''@;'; put 'put ''RitNYXRoLmltdWwocHQsR3QpfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bChwbixuciksUz0oUz1NYXRoLmltdWwocG4sd24pKStNYXRoLmltdWwoYm4sbnIpfDAsRj1NYXRoLmltdWwoYm4sd24pLFQ9VCtNYXRoLmltdWwoanQsWXQpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChqdCxnbil8MCkrTWF0aC5pbXVsKEp0LFl0KXwwLEY9RitNYXRoLmltdWwoSnQsZ24pfDAsVD1UK01hdGguaW11bCh6ZSxWdCl8MCxTPShTPVMrTWF0aC5pbXVsKHplLHNuKXwwKStNYXRoLmltdWwoWWUsVnQpfDAsRj1GK01hdGguaW11bChZZSxzbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKEN0LF9uKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdG4pfDApK01hdGguaW11bChjdCxfbil8MCxGPUYrTWF0aC5pbXVsKGN0LHRuKXwwLFQ9VCtNYXRoLmltdWwocWUsVHIpfDAsUz0oUz1TK01hdGguaW11bChxZSxQbil8MCkrTWF0aC5pbXVsKG90LFRyKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwob3QsUG4pfDAsVD1UK01hdGguaW11bChvbix2bil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHVuKXwwKStNYXRoLmltdWwoX3Qsdm4pfDAsRj1GK01hdGguaW11bChfdCx1bil8MDt2YXIgSWk9KFYrKFQ9VCtNYXRoLmltdWwodnQsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11''@;'; put 'put ''bCh2dCxHdCl8MCkrTWF0aC5pbXVsKGZ0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKGZ0LEd0KXwwKSsoUz4+PjEzKXwwKSsoSWk+Pj4yNil8MCxJaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sWXQpLFM9KFM9TWF0aC5pbXVsKHBuLGduKSkrTWF0aC5pbXVsKGJuLFl0KXww''@;'; put 'put ''LEY9TWF0aC5pbXVsKGJuLGduKSxUPVQrTWF0aC5pbXVsKGp0LFZ0KXwwLFM9KFM9UytNYXRoLmltdWwoanQsc24pfDApK01hdGguaW11bChKdCxWdCl8MCxGPUYrTWF0aC5pbXVsKEp0LHNuKXwwLFQ9VCtNYXRoLmltdWwoemUsX24pfDAsUz0oUz1TK01hdGguaW11bCh6ZSx0bil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKFllLF9uKXwwLEY9RitNYXRoLmltdWwoWWUsdG4pfDAsVD1UK01hdGguaW11bChDdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LFBuKXwwKStNYXRoLmltdWwoY3QsVHIpfDAsRj1GK01hdGguaW11bChjdCxQbil8MCxUPVQrTWF0aC5pbXVsKHFlLHZuKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwocWUsdW4pfDApK01hdGguaW11bChvdCx2bil8MCxGPUYrTWF0aC5pbXVsKG90LHVuKXwwO3ZhciByMD0oVisoVD1UK01hdGguaW11bChvbixTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKG9uLEd0KXwwKStNYXRoLmltdWwoX3QsU24pfDApKTw8MTMpfDA7Vj0oKEY9''@;'; put 'put ''RitNYXRoLmltdWwoX3QsR3QpfDApKyhTPj4+MTMpfDApKyhyMD4+PjI2KXwwLHIwJj02NzEwODg2MyxUPU1hdGguaW11bChwbixWdCksUz0oUz1NYXRoLmltdWwocG4sc24pKStNYXRoLmltdWwoYm4sVnQpfDAsRj1NYXRoLmltdWwoYm4sc24pLFQ9VCtNYXRoLmltdWwoanQsX24pfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChqdCx0bil8MCkrTWF0aC5pbXVsKEp0LF9uKXwwLEY9RitNYXRoLmltdWwoSnQsdG4pfDAsVD1UK01hdGguaW11bCh6ZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHplLFBuKXwwKStNYXRoLmltdWwoWWUsVHIpfDAsRj1GK01hdGguaW11bChZZSxQbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKEN0LHZuKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdW4pfDApK01hdGguaW11bChjdCx2bil8MCxGPUYrTWF0aC5pbXVsKGN0LHVuKXwwO3ZhciBlMD0oVisoVD1UK01hdGguaW11bChxZSxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwob3QsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwob3QsR3QpfDApKyhTPj4+MTMpfDApKyhlMD4+PjI2KXwwLGUwJj02NzEwODg2MyxUPU1hdGguaW11bChwbixfbiksUz0oUz1NYXRoLmltdWwocG4sdG4pKStNYXRoLmltdWwoYm4sX24pfDAsRj1NYXRoLmltdWwoYm4sdG4p''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoanQsVHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxQbil8MCkrTWF0aC5pbXVsKEp0LFRyKXwwLEY9RitNYXRoLmltdWwoSnQsUG4pfDAsVD1UK01hdGguaW11bCh6ZSx2bil8MCxTPShTPVMrTWF0aC5pbXVsKHplLHVuKXwwKStNYXRoLmltdWwoWWUsdm4pfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChZZSx1bil8MDt2YXIgZDA9KFYrKFQ9VCtNYXRoLmltdWwoQ3QsU24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDdCxHdCl8MCkrTWF0aC5pbXVsKGN0LFNuKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKGN0LEd0KXwwKSsoUz4+PjEzKXwwKSsoZDA+''@;'; put 'put ''Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwocG4sVHIpLFM9KFM9TWF0aC5pbXVsKHBuLFBuKSkrTWF0aC5pbXVsKGJuLFRyKXwwLEY9TWF0aC5pbXVsKGJuLFBuKSxUPVQrTWF0aC5pbXVsKGp0LHZuKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdW4pfDApK01hdGguaW11bChKdCx2''@;'; put 'put ''bil8MCxGPUYrTWF0aC5pbXVsKEp0LHVuKXwwO3ZhciBfMD0oVisoVD1UK01hdGguaW11bCh6ZSxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHplLEd0KXwwKStNYXRoLmltdWwoWWUsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoWWUsR3QpfDApKyhTPj4+MTMp''@;'; put 'put ''fDApKyhfMD4+PjI2KXwwLF8wJj02NzEwODg2MyxUPU1hdGguaW11bChwbix2biksUz0oUz1NYXRoLmltdWwocG4sdW4pKStNYXRoLmltdWwoYm4sdm4pfDAsRj1NYXRoLmltdWwoYm4sdW4pO3ZhciBVMD0oVisoVD1UK01hdGguaW11bChqdCxTbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGp0LEd0KXwwKStNYXRoLmltdWwoSnQsU24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoSnQsR3QpfDApKyhTPj4+MTMpfDApKyhVMD4+PjI2KXwwLFUwJj02NzEwODg2Mzt2YXIgQmk9KFYrKFQ9TWF0aC5pbXVsKHBuLFNuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11''@;'; put 'put ''bChwbixHdCkpK01hdGguaW11bChibixTbil8MCkpPDwxMyl8MDtyZXR1cm4gVj0oKEY9TWF0aC5pbXVsKGJuLEd0KSkrKFM+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLFBbMF09RW4sUFsxXT1qbixQWzJdPXF0LFBbM109TG4sUFs0XT1KbixQWzVdPW9yLFBbNl09Z3IsUFs3''@;'; put 'put ''XT1KcixQWzhdPVZyLFBbOV09dGksUFsxMF09T3IsUFsxMV09bGksUFsxMl09SWksUFsxM109cjAsUFsxNF09ZTAsUFsxNV09ZDAsUFsxNl09XzAsUFsxN109VTAsUFsxOF09QmksMCE9PVYmJihQWzE5XT1WLG5lLmxlbmd0aCsrKSxuZX07ZnVuY3Rpb24gYWUoaGUsTyx6KXtyZXR1cm4obmV3''@;'; put 'put ''IGZlKS5tdWxwKGhlLE8seil9ZnVuY3Rpb24gZmUoaGUsTyl7dGhpcy54PWhlLHRoaXMueT1PfU1hdGguaW11bHx8KEo9cSksVS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oTyx6KXt2YXIgbmUsdGU9dGhpcy5sZW5ndGgrTy5sZW5ndGg7cmV0dXJuIG5lPTEwPT09dGhpcy5sZW5ndGgmJjEw''@;'; put 'put ''PT09Ty5sZW5ndGg/Sih0aGlzLE8seik6dGU8NjM/cSh0aGlzLE8seik6dGU8MTAyND9mdW5jdGlvbiBzZShoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZSx6Lmxlbmd0aD1oZS5sZW5ndGgrTy5sZW5ndGg7Zm9yKHZhciBuZT0wLHRlPTAseD0wO3g8ei5sZW5ndGgt''@;'; put 'put ''MTt4Kyspe3ZhciBQPXRlO3RlPTA7Zm9yKHZhciBWPTY3MTA4ODYzJm5lLFQ9TWF0aC5taW4oeCxPLmxlbmd0aC0xKSxTPU1hdGgubWF4KDAseC1oZS5sZW5ndGgrMSk7Uzw9VDtTKyspe3ZhciBEZT0oMHxoZS53b3Jkc1t4LVNdKSooMHxPLndvcmRzW1NdKSxQZT02NzEwODg2MyZEZTtWPTY3''@;'; put 'put ''MTA4ODYzJihQZT1QZStWfDApLHRlKz0oUD0oUD1QKyhEZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixQJj02NzEwODg2M316LndvcmRzW3hdPVYsbmU9UCxQPXRlfXJldHVybiAwIT09bmU/ei53b3Jkc1t4XT1uZTp6Lmxlbmd0aC0tLHouc3RyaXAoKX0odGhpcyxPLHopOmFl''@;'; put 'put ''KHRoaXMsTyx6KSxuZX0sZmUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxuZT1VLnByb3RvdHlwZS5fY291bnRCaXRzKE8pLTEsdGU9MDt0ZTxPO3RlKyspelt0ZV09dGhpcy5yZXZCaW4odGUsbmUsTyk7cmV0dXJuIHp9LGZlLnByb3RvdHlw''@;'; put 'put ''ZS5yZXZCaW49ZnVuY3Rpb24oTyx6LG5lKXtpZigwPT09T3x8Tz09PW5lLTEpcmV0dXJuIE87Zm9yKHZhciB0ZT0wLHg9MDt4PHo7eCsrKXRlfD0oMSZPKTw8ei14LTEsTz4+PTE7cmV0dXJuIHRlfSxmZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihPLHosbmUsdGUseCxQKXtmb3IodmFy''@;'; put 'put ''IFY9MDtWPFA7VisrKXRlW1ZdPXpbT1tWXV0seFtWXT1uZVtPW1ZdXX0sZmUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihPLHosbmUsdGUseCxQKXt0aGlzLnBlcm11dGUoUCxPLHosbmUsdGUseCk7Zm9yKHZhciBWPTE7Vjx4O1Y8PD0xKWZvcih2YXIgVD1WPDwxLFM9TWF0aC5jb3Mo''@;'; put 'put ''MipNYXRoLlBJL1QpLEY9TWF0aC5zaW4oMipNYXRoLlBJL1QpLHllPTA7eWU8eDt5ZSs9VClmb3IodmFyIENlPVMsRGU9RixQZT0wO1BlPFY7UGUrKyl7dmFyIFFlPW5lW3llK1BlXSwkZT10ZVt5ZStQZV0sZ3Q9bmVbeWUrUGUrVl0seXQ9dGVbeWUrUGUrVl0scHQ9Q2UqZ3QtRGUqeXQ7eXQ9''@;'; put 'put ''Q2UqeXQrRGUqZ3QsbmVbeWUrUGVdPVFlKyhndD1wdCksdGVbeWUrUGVdPSRlK3l0LG5lW3llK1BlK1ZdPVFlLWd0LHRlW3llK1BlK1ZdPSRlLXl0LFBlIT09VCYmKHB0PVMqQ2UtRipEZSxEZT1TKkRlK0YqQ2UsQ2U9cHQpfX0sZmUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKE8s''@;'; put 'put ''eil7dmFyIG5lPTF8TWF0aC5tYXgoeixPKSx0ZT0xJm5lLHg9MDtmb3IobmU9bmUvMnwwO25lO25lPj4+PTEpeCsrO3JldHVybiAxPDx4KzErdGV9LGZlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oTyx6LG5lKXtpZighKG5lPD0xKSlmb3IodmFyIHRlPTA7dGU8bmUvMjt0ZSsrKXt2''@;'; put 'put ''YXIgeD1PW3RlXTtPW3RlXT1PW25lLXRlLTFdLE9bbmUtdGUtMV09eCx4PXpbdGVdLHpbdGVdPS16W25lLXRlLTFdLHpbbmUtdGUtMV09LXh9fSxmZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKE8seil7Zm9yKHZhciBuZT0wLHRlPTA7dGU8ei8yO3RlKyspe3ZhciB4PTgxOTIq''@;'; put 'put ''TWF0aC5yb3VuZChPWzIqdGUrMV0veikrTWF0aC5yb3VuZChPWzIqdGVdL3opK25lO09bdGVdPTY3MTA4ODYzJngsbmU9eDw2NzEwODg2ND8wOngvNjcxMDg4NjR8MH1yZXR1cm4gT30sZmUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oTyx6LG5lLHRlKXtmb3IodmFyIHg9MCxQPTA7''@;'; put 'put ''UDx6O1ArKyluZVsyKlBdPTgxOTEmKHgrPTB8T1tQXSksbmVbMipQKzFdPTgxOTEmKHg+Pj49MTMpLHg+Pj49MTM7Zm9yKFA9Mip6O1A8dGU7KytQKW5lW1BdPTA7RSgwPT09eCksRSgwPT0oLTgxOTImeCkpfSxmZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFy''@;'; put 'put ''cmF5KE8pLG5lPTA7bmU8TztuZSsrKXpbbmVdPTA7cmV0dXJuIHp9LGZlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKE8seixuZSl7dmFyIHRlPTIqdGhpcy5ndWVzc0xlbjEzYihPLmxlbmd0aCx6Lmxlbmd0aCkseD10aGlzLm1ha2VSQlQodGUpLFA9dGhpcy5zdHViKHRlKSxWPW5ldyBBcnJh''@;'; put 'put ''eSh0ZSksVD1uZXcgQXJyYXkodGUpLFM9bmV3IEFycmF5KHRlKSxGPW5ldyBBcnJheSh0ZSkseWU9bmV3IEFycmF5KHRlKSxDZT1uZXcgQXJyYXkodGUpLERlPW5lLndvcmRzO0RlLmxlbmd0aD10ZSx0aGlzLmNvbnZlcnQxM2IoTy53b3JkcyxPLmxlbmd0aCxWLHRlKSx0aGlzLmNvbnZlcnQx''@;'; put 'put ''M2Ioei53b3Jkcyx6Lmxlbmd0aCxGLHRlKSx0aGlzLnRyYW5zZm9ybShWLFAsVCxTLHRlLHgpLHRoaXMudHJhbnNmb3JtKEYsUCx5ZSxDZSx0ZSx4KTtmb3IodmFyIFBlPTA7UGU8dGU7UGUrKyl7dmFyIFFlPVRbUGVdKnllW1BlXS1TW1BlXSpDZVtQZV07U1tQZV09VFtQZV0qQ2VbUGVdK1Nb''@;'; put 'put ''UGVdKnllW1BlXSxUW1BlXT1RZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoVCxTLHRlKSx0aGlzLnRyYW5zZm9ybShULFMsRGUsUCx0ZSx4KSx0aGlzLmNvbmp1Z2F0ZShEZSxQLHRlKSx0aGlzLm5vcm1hbGl6ZTEzYihEZSx0ZSksbmUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLG5l''@;'; put 'put ''Lmxlbmd0aD1PLmxlbmd0aCt6Lmxlbmd0aCxuZS5zdHJpcCgpfSxVLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSx0aGlzLm11bFRvKE8seil9LFUucHJvdG90eXBlLm11bGY9''@;'; put 'put ''ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSxhZSh0aGlzLE8seil9LFUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhPLHRoaXMpfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5pbXVsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KTtmb3IodmFyIHo9MCxuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspe3ZhciB0ZT0oMHx0aGlzLndvcmRzW25lXSkqTyx4PSg2NzEwODg2MyZ0ZSkrKDY3MTA4ODYzJnopO3o+Pj0yNix6Kz10ZS82''@;'; put 'put ''NzEwODg2NHwwLHorPXg+Pj4yNix0aGlzLndvcmRzW25lXT02NzEwODg2MyZ4fXJldHVybiAwIT09eiYmKHRoaXMud29yZHNbbmVdPXosdGhpcy5sZW5ndGgrKyksdGhpc30sVS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKE8pfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LFUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LFUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihPKXt2YXIgej1mdW5jdGlvbiBlZShoZSl7Zm9yKHZhciBPPW5l''@;'; put 'put ''dyBBcnJheShoZS5iaXRMZW5ndGgoKSksej0wO3o8Ty5sZW5ndGg7eisrKXt2YXIgdGU9eiUyNjtPW3pdPShoZS53b3Jkc1t6LzI2fDBdJjE8PHRlKT4+PnRlfXJldHVybiBPfShPKTtpZigwPT09ei5sZW5ndGgpcmV0dXJuIG5ldyBVKDEpO2Zvcih2YXIgbmU9dGhpcyx0ZT0wO3RlPHoubGVu''@;'; put 'put ''Z3RoJiYwPT09elt0ZV07dGUrKyxuZT1uZS5zcXIoKSk7aWYoKyt0ZTx6Lmxlbmd0aClmb3IodmFyIHg9bmUuc3FyKCk7dGU8ei5sZW5ndGg7dGUrKyx4PXguc3FyKCkpMCE9PXpbdGVdJiYobmU9bmUubXVsKHgpKTtyZXR1cm4gbmV9LFUucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihPKXtF''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHgsej1PJTI2LG5lPShPLXopLzI2LHRlPTY3MTA4ODYzPj4+MjYtejw8MjYtejtpZigwIT09eil7dmFyIFA9MDtmb3IoeD0wO3g8dGhpcy5sZW5ndGg7eCsrKXt2YXIgVj10aGlzLndvcmRzW3hdJnRlO3RoaXMud29yZHNbeF09KDB8dGhp''@;'; put 'put ''cy53b3Jkc1t4XSktVjw8enxQLFA9Vj4+PjI2LXp9UCYmKHRoaXMud29yZHNbeF09UCx0aGlzLmxlbmd0aCsrKX1pZigwIT09bmUpe2Zvcih4PXRoaXMubGVuZ3RoLTE7eD49MDt4LS0pdGhpcy53b3Jkc1t4K25lXT10aGlzLndvcmRzW3hdO2Zvcih4PTA7eDxuZTt4KyspdGhpcy53b3Jkc1t4''@;'; put 'put ''XT0wO3RoaXMubGVuZ3RoKz1uZX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oTyl9LFUucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZTtFKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgTyYmTz49MCksdGU9ej8oei16JTI2KS8yNjowO3ZhciB4PU8lMjYsUD1NYXRoLm1pbigoTy14KS8yNix0aGlzLmxlbmd0aCksVj02NzEwODg2M142NzEwODg2Mz4+Png8PHgsVD1uZTtpZih0ZS09UCx0ZT1NYXRoLm1heCgwLHRlKSxUKXtmb3IodmFyIFM9MDtTPFA7Uysr''@;'; put 'put ''KVQud29yZHNbU109dGhpcy53b3Jkc1tTXTtULmxlbmd0aD1QfWlmKDAhPT1QKWlmKHRoaXMubGVuZ3RoPlApZm9yKHRoaXMubGVuZ3RoLT1QLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPXRoaXMud29yZHNbUytQXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0''@;'; put 'put ''aD0xO3ZhciBGPTA7Zm9yKFM9dGhpcy5sZW5ndGgtMTtTPj0wJiYoMCE9PUZ8fFM+PXRlKTtTLS0pe3ZhciB5ZT0wfHRoaXMud29yZHNbU107dGhpcy53b3Jkc1tTXT1GPDwyNi14fHllPj4+eCxGPXllJlZ9cmV0dXJuIFQmJjAhPT1GJiYoVC53b3Jkc1tULmxlbmd0aCsrXT1GKSwwPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihPLHosbmUpe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihPLHosbmUpfSxVLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9u''@;'; put 'put ''KE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oTyl9LFUucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKE8pfSxVLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oTyl9LFUucHJvdG90eXBl''@;'; put 'put ''LnVzaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKE8pfSxVLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixuZT0oTy16KS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1uZXx8ISh0aGlzLndv''@;'; put 'put ''cmRzW25lXSYxPDx6KSl9LFUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixuZT0oTy16KS8yNjtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5sZW5ndGg8PW5lP3RoaXM6KDAhPT16JiZuZSsrLHRoaXMubGVuZ3RoPU1hdGgubWluKG5lLHRoaXMubGVuZ3RoKSwwIT09eiYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+ejw8eiksdGhpcy5zdHJpcCgpKX0sVS5wcm90b3R5cGUubWFz''@;'; put 'put ''a249ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oTyl9LFUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKE8pe3JldHVybiBFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KSxPPDA/dGhpcy5pc3VibigtTyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxPPyh0aGlzLndvcmRzWzBdPU8tKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oTyl9LFUucHJvdG90eXBl''@;'; put 'put ''Ll9pYWRkbj1mdW5jdGlvbihPKXt0aGlzLndvcmRzWzBdKz1PO2Zvcih2YXIgej0wO3o8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbel0+PTY3MTA4ODY0O3orKyl0aGlzLndvcmRzW3pdLT02NzEwODg2NCx6PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3orMV09MTp0aGlzLndvcmRzW3or''@;'; put 'put ''MV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseisxKSx0aGlzfSxVLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihPKXtpZihFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KSxPPDApcmV0dXJuIHRoaXMuaWFkZG4oLU8pO2lmKDAhPT10aGlzLm5l''@;'; put 'put ''Z2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1PLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vs''@;'; put 'put ''c2UgZm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XTwwO3orKyl0aGlzLndvcmRzW3pdKz02NzEwODg2NCx0aGlzLndvcmRzW3orMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlh''@;'; put 'put ''ZGRuKE8pfSxVLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oTyl9LFUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LFUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaWFicygpfSxVLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oTyx6LG5lKXt2YXIgeDt0aGlzLl9leHBhbmQoTy5sZW5ndGgrbmUpO3ZhciBQLFY9MDtmb3IoeD0wO3g8Ty5sZW5ndGg7eCsrKXtQPSgwfHRoaXMud29yZHNbeCtuZV0pK1Y7dmFyIFQ9KDB8Ty53b3Jkc1t4''@;'; put 'put ''XSkqejtWPSgoUC09NjcxMDg4NjMmVCk+PjI2KS0oVC82NzEwODg2NHwwKSx0aGlzLndvcmRzW3grbmVdPTY3MTA4ODYzJlB9Zm9yKDt4PHRoaXMubGVuZ3RoLW5lO3grKylWPShQPSgwfHRoaXMud29yZHNbeCtuZV0pK1YpPj4yNix0aGlzLndvcmRzW3grbmVdPTY3MTA4ODYzJlA7aWYoMD09''@;'; put 'put ''PVYpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRSgtMT09PVYpLFY9MCx4PTA7eDx0aGlzLmxlbmd0aDt4KyspVj0oUD0tKDB8dGhpcy53b3Jkc1t4XSkrVik+PjI2LHRoaXMud29yZHNbeF09NjcxMDg4NjMmUDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5''@;'; put 'put ''cGUuX3dvcmREaXY9ZnVuY3Rpb24oTyx6KXt2YXIgbmUsdGU9dGhpcy5jbG9uZSgpLHg9TyxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXTswIT0obmU9MjYtdGhpcy5fY291bnRCaXRzKFApKSYmKHg9eC51c2hsbihuZSksdGUuaXVzaGxuKG5lKSxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXSk7dmFy''@;'; put 'put ''IFMsVD10ZS5sZW5ndGgteC5sZW5ndGg7aWYoIm1vZCIhPT16KXsoUz1uZXcgVShudWxsKSkubGVuZ3RoPVQrMSxTLndvcmRzPW5ldyBBcnJheShTLmxlbmd0aCk7Zm9yKHZhciBGPTA7RjxTLmxlbmd0aDtGKyspUy53b3Jkc1tGXT0wfXZhciB5ZT10ZS5jbG9uZSgpLl9pc2hsbnN1Ym11bCh4''@;'; put 'put ''LDEsVCk7MD09PXllLm5lZ2F0aXZlJiYodGU9eWUsUyYmKFMud29yZHNbVF09MSkpO2Zvcih2YXIgQ2U9VC0xO0NlPj0wO0NlLS0pe3ZhciBEZT02NzEwODg2NCooMHx0ZS53b3Jkc1t4Lmxlbmd0aCtDZV0pKygwfHRlLndvcmRzW3gubGVuZ3RoK0NlLTFdKTtmb3IoRGU9TWF0aC5taW4oRGUv''@;'; put 'put ''UHwwLDY3MTA4ODYzKSx0ZS5faXNobG5zdWJtdWwoeCxEZSxDZSk7MCE9PXRlLm5lZ2F0aXZlOylEZS0tLHRlLm5lZ2F0aXZlPTAsdGUuX2lzaGxuc3VibXVsKHgsMSxDZSksdGUuaXNaZXJvKCl8fCh0ZS5uZWdhdGl2ZV49MSk7UyYmKFMud29yZHNbQ2VdPURlKX1yZXR1cm4gUyYmUy5zdHJp''@;'; put 'put ''cCgpLHRlLnN0cmlwKCksImRpdiIhPT16JiYwIT09bmUmJnRlLml1c2hybihuZSkse2RpdjpTfHxudWxsLG1vZDp0ZX19LFUucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihPLHosbmUpe3JldHVybiBFKCFPLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IFUoMCksbW9kOm5ldyBV''@;'; put 'put ''KDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmU/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTyx6KSwibW9kIiE9PXomJih0ZT1QLmRpdi5uZWcoKSksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxuZSYmMCE9PXgubmVnYXRpdmUmJnguaWFkZChPKSkse2Rpdjp0ZSxtb2Q6eH0p''@;'; put 'put ''OjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZT8oUD10aGlzLmRpdm1vZChPLm5lZygpLHopLCJtb2QiIT09eiYmKHRlPVAuZGl2Lm5lZygpKSx7ZGl2OnRlLG1vZDpQLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJk8ubmVnYXRpdmUpPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8ubmVn''@;'; put 'put ''KCkseiksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxuZSYmMCE9PXgubmVnYXRpdmUmJnguaXN1YihPKSkse2RpdjpQLmRpdixtb2Q6eH0pOk8ubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChPKTwwP3tkaXY6bmV3IFUoMCksbW9kOnRoaXN9OjE9PT1PLmxlbmd0aD8iZGl2Ij09PXo/''@;'; put 'put ''e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09ej97ZGl2Om51bGwsbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0pLG1vZDpuZXcgVSh0aGlzLm1vZG4oTy53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2''@;'; put 'put ''KE8seik7dmFyIHRlLHgsUH0sVS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJkaXYiLCExKS5kaXZ9LFUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywibW9kIiwhMSkubW9kfSxVLnByb3RvdHlwZS51bW9kPWZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCEwKS5tb2R9LFUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuZGl2bW9kKE8pO2lmKHoubW9kLmlzWmVybygpKXJldHVybiB6LmRpdjt2YXIgbmU9MCE9PXouZGl2Lm5lZ2F0aXZlP3oubW9kLmlz''@;'; put 'put ''dWIoTyk6ei5tb2QsdGU9Ty51c2hybigxKSx4PU8uYW5kbG4oMSksUD1uZS5jbXAodGUpO3JldHVybiBQPDB8fDE9PT14JiYwPT09UD96LmRpdjowIT09ei5kaXYubmVnYXRpdmU/ei5kaXYuaXN1Ym4oMSk6ei5kaXYuaWFkZG4oMSl9LFUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oTyl7RShP''@;'; put 'put ''PD02NzEwODg2Myk7Zm9yKHZhciB6PSgxPDwyNiklTyxuZT0wLHRlPXRoaXMubGVuZ3RoLTE7dGU+PTA7dGUtLSluZT0oeipuZSsoMHx0aGlzLndvcmRzW3RlXSkpJU87cmV0dXJuIG5lfSxVLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9MCxu''@;'; put 'put ''ZT10aGlzLmxlbmd0aC0xO25lPj0wO25lLS0pe3ZhciB0ZT0oMHx0aGlzLndvcmRzW25lXSkrNjcxMDg4NjQqejt0aGlzLndvcmRzW25lXT10ZS9PfDAsej10ZSVPfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''ZGl2bihPKX0sVS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgej10aGlzLG5lPU8uY2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1vZChPKTp6LmNsb25lKCk7Zm9yKHZhciB0ZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9''@;'; put 'put ''bmV3IFUoMCksVj1uZXcgVSgxKSxUPTA7ei5pc0V2ZW4oKSYmbmUuaXNFdmVuKCk7KXouaXVzaHJuKDEpLG5lLml1c2hybigxKSwrK1Q7Zm9yKHZhciBTPW5lLmNsb25lKCksRj16LmNsb25lKCk7IXouaXNaZXJvKCk7KXtmb3IodmFyIHllPTAsQ2U9MTswPT0oei53b3Jkc1swXSZDZSkmJnll''@;'; put 'put ''PDI2OysreWUsQ2U8PD0xKTtpZih5ZT4wKWZvcih6Lml1c2hybih5ZSk7eWUtLSA+MDspKHRlLmlzT2RkKCl8fHguaXNPZGQoKSkmJih0ZS5pYWRkKFMpLHguaXN1YihGKSksdGUuaXVzaHJuKDEpLHguaXVzaHJuKDEpO2Zvcih2YXIgRGU9MCxQZT0xOzA9PShuZS53b3Jkc1swXSZQZSkmJkRl''@;'; put 'put ''PDI2OysrRGUsUGU8PD0xKTtpZihEZT4wKWZvcihuZS5pdXNocm4oRGUpO0RlLS0gPjA7KShQLmlzT2RkKCl8fFYuaXNPZGQoKSkmJihQLmlhZGQoUyksVi5pc3ViKEYpKSxQLml1c2hybigxKSxWLml1c2hybigxKTt6LmNtcChuZSk+PTA/KHouaXN1YihuZSksdGUuaXN1YihQKSx4LmlzdWIo''@;'; put 'put ''VikpOihuZS5pc3ViKHopLFAuaXN1Yih0ZSksVi5pc3ViKHgpKX1yZXR1cm57YTpQLGI6VixnY2Q6bmUuaXVzaGxuKFQpfX0sVS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB5ZSx6PXRoaXMsbmU9Ty5jbG9uZSgpO3o9''@;'; put 'put ''MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIHRlPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1uZS5jbG9uZSgpO3ouY21wbigxKT4wJiZuZS5jbXBuKDEpPjA7KXtmb3IodmFyIFY9MCxUPTE7MD09KHoud29yZHNbMF0mVCkmJlY8MjY7KytWLFQ8PD0xKTtpZihWPjAp''@;'; put 'put ''Zm9yKHouaXVzaHJuKFYpO1YtLSA+MDspdGUuaXNPZGQoKSYmdGUuaWFkZChQKSx0ZS5pdXNocm4oMSk7Zm9yKHZhciBTPTAsRj0xOzA9PShuZS53b3Jkc1swXSZGKSYmUzwyNjsrK1MsRjw8PTEpO2lmKFM+MClmb3IobmUuaXVzaHJuKFMpO1MtLSA+MDspeC5pc09kZCgpJiZ4LmlhZGQoUCks''@;'; put 'put ''eC5pdXNocm4oMSk7ei5jbXAobmUpPj0wPyh6LmlzdWIobmUpLHRlLmlzdWIoeCkpOihuZS5pc3ViKHopLHguaXN1Yih0ZSkpfXJldHVybih5ZT0wPT09ei5jbXBuKDEpP3RlOngpLmNtcG4oMCk8MCYmeWUuaWFkZChPKSx5ZX0sVS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKE8pe2lmKHRoaXMu''@;'; put 'put ''aXNaZXJvKCkpcmV0dXJuIE8uYWJzKCk7aWYoTy5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgej10aGlzLmNsb25lKCksbmU9Ty5jbG9uZSgpO3oubmVnYXRpdmU9MCxuZS5uZWdhdGl2ZT0wO2Zvcih2YXIgdGU9MDt6LmlzRXZlbigpJiZuZS5pc0V2ZW4oKTt0ZSsrKXouaXVzaHJu''@;'; put 'put ''KDEpLG5lLml1c2hybigxKTtmb3IoOzspe2Zvcig7ei5pc0V2ZW4oKTspei5pdXNocm4oMSk7Zm9yKDtuZS5pc0V2ZW4oKTspbmUuaXVzaHJuKDEpO3ZhciB4PXouY21wKG5lKTtpZih4PDApe3ZhciBQPXo7ej1uZSxuZT1QfWVsc2UgaWYoMD09PXh8fDA9PT1uZS5jbXBuKDEpKWJyZWFrO3ou''@;'; put 'put ''aXN1YihuZSl9cmV0dXJuIG5lLml1c2hsbih0ZSl9LFUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZWdjZChPKS5hLnVtb2QoTyl9LFUucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuaXNP''@;'; put 'put ''ZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLndvcmRzWzBdJk99LFUucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKTt2YXIgej1PJTI2LG5lPShP''@;'; put 'put ''LXopLzI2LHRlPTE8PHo7aWYodGhpcy5sZW5ndGg8PW5lKXJldHVybiB0aGlzLl9leHBhbmQobmUrMSksdGhpcy53b3Jkc1tuZV18PXRlLHRoaXM7Zm9yKHZhciB4PXRlLFA9bmU7MCE9PXgmJlA8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj0wfHRoaXMud29yZHNbUF07eD0oVis9eCk+Pj4yNix0''@;'; put 'put ''aGlzLndvcmRzW1BdPVYmPTY3MTA4ODYzfXJldHVybiAwIT09eCYmKHRoaXMud29yZHNbUF09eCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sVS5wcm90b3R5cGUuY21w''@;'; put 'put ''bj1mdW5jdGlvbihPKXt2YXIgbmUsej1PPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiF6KXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZ6KXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKW5lPTE7ZWxzZXt6JiYoTz0tTyksRShPPD02NzEwODg2MywiTnVtYmVy''@;'; put 'put ''IGlzIHRvbyBiaWciKTt2YXIgdGU9MHx0aGlzLndvcmRzWzBdO25lPXRlPT09Tz8wOnRlPE8/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtbmU6bmV9LFUucHJvdG90eXBlLmNtcD1mdW5jdGlvbihPKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJu''@;'; put 'put ''LTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVybiAxO3ZhciB6PXRoaXMudWNtcChPKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtejp6fSxVLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKE8pe2lmKHRoaXMubGVuZ3RoPk8ubGVuZ3RoKXJldHVybiAxO2lm''@;'; put 'put ''KHRoaXMubGVuZ3RoPE8ubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgej0wLG5lPXRoaXMubGVuZ3RoLTE7bmU+PTA7bmUtLSl7dmFyIHRlPTB8dGhpcy53b3Jkc1tuZV0seD0wfE8ud29yZHNbbmVdO2lmKHRlIT09eCl7dGU8eD96PS0xOnRlPngmJih6PTEpO2JyZWFrfX1yZXR1cm4gen0sVS5w''@;'; put 'put ''cm90b3R5cGUuZ3RuPWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5ndD1mdW5jdGlvbihPKXtyZXR1cm4gMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk+PTB9LFUucHJvdG90eXBl''@;'; put 'put ''Lmd0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk+PTB9LFUucHJvdG90eXBlLmx0bj1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oTyl7cmV0dXJuLTE9PT10aGlzLmNtcChPKX0sVS5wcm90b3R5cGUubHRlbj1mdW5j''@;'; put 'put ''dGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPD0wfSxVLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wKE8pPD0wfSxVLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmVxPWZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiAwPT09dGhpcy5jbXAoTyl9LFUucmVkPWZ1bmN0aW9uKE8pe3JldHVybiBuZXcgVGUoTyl9LFUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEUoMD09PXRoaXMubmVnYXRp''@;'; put 'put ''dmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksTy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNv''@;'; put 'put ''bnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sVS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnJlZD1PLHRoaXN9LFUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBp''@;'; put 'put ''biByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVk''@;'; put 'put ''SUFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxPKX0sVS5wcm90b3R5cGUu''@;'; put 'put ''cmVkU2hsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQubXVsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5f''@;'; put 'put ''dmVyaWZ5Mih0aGlzLE8pLHRoaXMucmVkLmltdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhp''@;'; put 'put ''cyl9LFUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sVS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJbnZtIHdv''@;'; put 'put ''cmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LFUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5y''@;'; put 'put ''ZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQmJiFPLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxPKX07dmFy''@;'; put 'put ''IGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdmUoaGUsTyl7dGhpcy5uYW1lPWhlLHRoaXMucD1uZXcgVShPLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgVSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMu''@;'; put 'put ''cCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gQWUoKXt2ZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGtlKCl7dmUuY2FsbCh0aGlzLCJwMjI0''@;'; put 'put ''IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBTZSgpe3ZlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rp''@;'; put 'put ''b24gSWUoKXt2ZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIFRlKGhlKXtpZigic3RyaW5nIj09dHlwZW9mIGhlKXt2YXIgTz1VLl9wcmltZShoZSk7dGhpcy5t''@;'; put 'put ''PU8ucCx0aGlzLnByaW1lPU99ZWxzZSBFKGhlLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWhlLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBFZShoZSl7VGUuY2FsbCh0aGlzLGhlKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNo''@;'; put 'put ''aWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBVKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwo''@;'; put 'put ''dGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXZlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIE89bmV3IFUobnVsbCk7cmV0dXJuIE8ud29yZHM9bmV3IEFycmF5''@;'; put 'put ''KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxPfSx2ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihPKXt2YXIgbmUsej1PO2Rve3RoaXMuc3BsaXQoeix0aGlzLnRtcCksbmU9KHo9KHo9dGhpcy5pbXVsSyh6KSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKG5lPnRoaXMubik7''@;'; put 'put ''dmFyIHRlPW5lPHRoaXMubj8tMTp6LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PXRlPyh6LndvcmRzWzBdPTAsei5sZW5ndGg9MSk6dGU+MD96LmlzdWIodGhpcy5wKTp2b2lkIDAhPT16LnN0cmlwP3ouc3RyaXAoKTp6Ll9zdHJpcCgpLHp9LHZlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihP''@;'; put 'put ''LHope08uaXVzaHJuKHRoaXMubiwwLHopfSx2ZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7cmV0dXJuIE8uaW11bCh0aGlzLmspfSxNZShBZSx2ZSksQWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Zm9yKHZhciB0ZT1NYXRoLm1pbihPLmxlbmd0aCw5KSx4PTA7eDx0ZTt4''@;'; put 'put ''Kyspei53b3Jkc1t4XT1PLndvcmRzW3hdO2lmKHoubGVuZ3RoPXRlLE8ubGVuZ3RoPD05KXJldHVybiBPLndvcmRzWzBdPTAsdm9pZChPLmxlbmd0aD0xKTt2YXIgUD1PLndvcmRzWzldO2Zvcih6LndvcmRzW3oubGVuZ3RoKytdPTQxOTQzMDMmUCx4PTEwO3g8Ty5sZW5ndGg7eCsrKXt2YXIg''@;'; put 'put ''Vj0wfE8ud29yZHNbeF07Ty53b3Jkc1t4LTEwXT0oNDE5NDMwMyZWKTw8NHxQPj4+MjIsUD1WfU8ud29yZHNbeC0xMF09UD4+Pj0yMixPLmxlbmd0aC09MD09PVAmJk8ubGVuZ3RoPjEwPzEwOjl9LEFlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtPLndvcmRzW08ubGVuZ3RoXT0wLE8u''@;'; put 'put ''d29yZHNbTy5sZW5ndGgrMV09MCxPLmxlbmd0aCs9Mjtmb3IodmFyIHo9MCxuZT0wO25lPE8ubGVuZ3RoO25lKyspe3ZhciB0ZT0wfE8ud29yZHNbbmVdO08ud29yZHNbbmVdPTY3MTA4ODYzJih6Kz05NzcqdGUpLHo9NjQqdGUrKHovNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1PLndvcmRzW08u''@;'; put 'put ''bGVuZ3RoLTFdJiYoTy5sZW5ndGgtLSwwPT09Ty53b3Jkc1tPLmxlbmd0aC0xXSYmTy5sZW5ndGgtLSksT30sTWUoa2UsdmUpLE1lKFNlLHZlKSxNZShJZSx2ZSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej0wLG5lPTA7bmU8Ty5sZW5ndGg7bmUrKyl7dmFyIHRl''@;'; put 'put ''PTE5KigwfE8ud29yZHNbbmVdKSt6LHg9NjcxMDg4NjMmdGU7dGU+Pj49MjYsTy53b3Jkc1tuZV09eCx6PXRlfXJldHVybiAwIT09eiYmKE8ud29yZHNbTy5sZW5ndGgrK109eiksT30sVS5fcHJpbWU9ZnVuY3Rpb24oTyl7aWYoZGVbT10pcmV0dXJuIGRlW09dO3ZhciB6O2lmKCJrMjU2Ij09''@;'; put 'put ''PU8pej1uZXcgQWU7ZWxzZSBpZigicDIyNCI9PT1PKXo9bmV3IGtlO2Vsc2UgaWYoInAxOTIiPT09Tyl6PW5ldyBTZTtlbHNle2lmKCJwMjU1MTkiIT09Tyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitPKTt6PW5ldyBJZX1yZXR1cm4gZGVbT109eix6fSxUZS5wcm90b3R5cGUu''@;'; put 'put ''X3ZlcmlmeTE9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihPLHope0UoMD09KE8ubmVnYXRp''@;'; put 'put ''dmV8ei5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRShPLnJlZCYmTy5yZWQ9PT16LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1l''@;'; put 'put ''LmlyZWR1Y2UoTykuX2ZvcmNlUmVkKHRoaXMpOk8udW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pc1plcm8oKT9PLmNsb25lKCk6dGhpcy5tLnN1YihPKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5hZGQ9''@;'; put 'put ''ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uYWRkKHopO3JldHVybiBuZS5jbXAodGhpcy5tKT49MCYmbmUuaXN1Yih0aGlzLm0pLG5lLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFy''@;'; put 'put ''IG5lPU8uaWFkZCh6KTtyZXR1cm4gbmUuY21wKHRoaXMubSk+PTAmJm5lLmlzdWIodGhpcy5tKSxuZX0sVGUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgbmU9Ty5zdWIoeik7cmV0dXJuIG5lLmNtcG4oMCk8MCYmbmUuaWFkZCh0aGlzLm0pLG5l''@;'; put 'put ''Ll9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIG5lPU8uaXN1Yih6KTtyZXR1cm4gbmUuY21wbigwKTwwJiZuZS5pYWRkKHRoaXMubSksbmV9LFRlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fdmVyaWZ5MShPKSx0aGlzLmltb2QoTy51c2hsbih6KSl9LFRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5pbXVsKHopKX0sVGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92''@;'; put 'put ''ZXJpZnkyKE8seiksdGhpcy5pbW9kKE8ubXVsKHopKX0sVGUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW11bChPLE8uY2xvbmUoKSl9LFRlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubXVsKE8sTyl9LFRlLnByb3RvdHlwZS5zcXJ0PWZ1''@;'; put 'put ''bmN0aW9uKE8pe2lmKE8uaXNaZXJvKCkpcmV0dXJuIE8uY2xvbmUoKTt2YXIgej10aGlzLm0uYW5kbG4oMyk7aWYoRSh6JTI9PTEpLDM9PT16KXt2YXIgbmU9dGhpcy5tLmFkZChuZXcgVSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhPLG5lKX1mb3IodmFyIHRlPXRoaXMubS5zdWJu''@;'; put 'put ''KDEpLHg9MDshdGUuaXNaZXJvKCkmJjA9PT10ZS5hbmRsbigxKTspeCsrLHRlLml1c2hybigxKTtFKCF0ZS5pc1plcm8oKSk7dmFyIFA9bmV3IFUoMSkudG9SZWQodGhpcyksVj1QLnJlZE5lZygpLFQ9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLFM9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihT''@;'; put 'put ''PW5ldyBVKDIqUypTKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coUyxUKS5jbXAoVik7KVMucmVkSUFkZChWKTtmb3IodmFyIEY9dGhpcy5wb3coUyx0ZSkseWU9dGhpcy5wb3coTyx0ZS5hZGRuKDEpLml1c2hybigxKSksQ2U9dGhpcy5wb3coTyx0ZSksRGU9eDswIT09Q2UuY21wKFApOyl7''@;'; put 'put ''Zm9yKHZhciBQZT1DZSxRZT0wOzAhPT1QZS5jbXAoUCk7UWUrKylQZT1QZS5yZWRTcXIoKTtFKFFlPERlKTt2YXIgJGU9dGhpcy5wb3coRixuZXcgVSgxKS5pdXNobG4oRGUtUWUtMSkpO3llPXllLnJlZE11bCgkZSksRj0kZS5yZWRTcXIoKSxDZT1DZS5yZWRNdWwoRiksRGU9UWV9cmV0dXJu''@;'; put 'put ''IHllfSxUZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXt2YXIgej1PLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09ei5uZWdhdGl2ZT8oei5uZWdhdGl2ZT0wLHRoaXMuaW1vZCh6KS5yZWROZWcoKSk6dGhpcy5pbW9kKHopfSxUZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8seil7aWYo''@;'; put 'put ''ei5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMSkudG9SZWQodGhpcyk7aWYoMD09PXouY21wbigxKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciB0ZT1uZXcgQXJyYXkoMTYpO3RlWzBdPW5ldyBVKDEpLnRvUmVkKHRoaXMpLHRlWzFdPU87Zm9yKHZhciB4PTI7eDx0ZS5sZW5ndGg7eCsrKXRlW3hdPXRo''@;'; put 'put ''aXMubXVsKHRlW3gtMV0sTyk7dmFyIFA9dGVbMF0sVj0wLFQ9MCxTPXouYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1TJiYoUz0yNikseD16Lmxlbmd0aC0xO3g+PTA7eC0tKXtmb3IodmFyIEY9ei53b3Jkc1t4XSx5ZT1TLTE7eWU+PTA7eWUtLSl7dmFyIENlPUY+PnllJjE7UCE9PXRlWzBdJiYo''@;'; put 'put ''UD10aGlzLnNxcihQKSksMCE9PUNlfHwwIT09Vj8oVjw8PTEsVnw9Q2UsKDQ9PSsrVHx8MD09PXgmJjA9PT15ZSkmJihQPXRoaXMubXVsKFAsdGVbVl0pLFQ9MCxWPTApKTpUPTB9Uz0yNn1yZXR1cm4gUH0sVGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXt2YXIgej1PLnVtb2Qo''@;'; put 'put ''dGhpcy5tKTtyZXR1cm4gej09PU8/ei5jbG9uZSgpOnp9LFRlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej1PLmNsb25lKCk7cmV0dXJuIHoucmVkPW51bGwsen0sVS5tb250PWZ1bmN0aW9uKE8pe3JldHVybiBuZXcgRWUoTyl9LE1lKEVlLFRlKSxFZS5wcm90b3R5''@;'; put 'put ''cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy51c2hsbih0aGlzLnNoaWZ0KSl9LEVlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej10aGlzLmltb2QoTy5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHoucmVkPW51bGwsen0sRWUucHJvdG90''@;'; put 'put ''eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBPLndvcmRzWzBdPTAsTy5sZW5ndGg9MSxPO3ZhciBuZT1PLmltdWwoeiksdGU9bmUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlz''@;'; put 'put ''Lm0pLHg9bmUuaXN1Yih0ZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LEVlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtp''@;'; put 'put ''ZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBuZXcgVSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIG5lPU8ubXVsKHopLHRlPW5lLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PW5lLmlzdWIodGUpLml1c2hybih0''@;'; put 'put ''aGlzLnNoaWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14LmlzdWIodGhpcy5tKTp4LmNtcG4oMCk8MCYmKFA9eC5pYWRkKHRoaXMubSkpLFAuX2ZvcmNlUmVkKHRoaXMpfSxFZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbW9kKE8uX2ludm1wKHRo''@;'; put 'put ''aXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShYZT1MLm5tZChYZSksdGhpcyl9LDM2NzA1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDIyNzcyKSxCPUwoODY5NDUpLEU9TCg3OTQwMSksTWU9TCg4MjA1NyksVT1MKDg0NjYpLFE9TCg5NjM4NiksWj1MKDM4NjUxKSxpZT1MKDcz''@;'; put 'put ''NTAyKS5CdWZmZXI7WGUuZXhwb3J0cz1mdW5jdGlvbihlZSxxLEope3ZhciBzZTtzZT1lZS5wYWRkaW5nP2VlLnBhZGRpbmc6Sj8xOjQ7dmFyIGRlLGFlPWdlKGVlKSxmZT1hZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihxLmxlbmd0aD5mZXx8bmV3IE1lKHEpLmNtcChhZS5tb2R1bHVzKT49''@;'; put 'put ''MCl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtkZT1KP1oobmV3IE1lKHEpLGFlKTpVKHEsYWUpO3ZhciB2ZT1pZS5hbGxvYyhmZS1kZS5sZW5ndGgpO2lmKGRlPWllLmNvbmNhdChbdmUsZGVdLGZlKSw0PT09c2UpcmV0dXJuIGZ1bmN0aW9uIGxlKE4sZWUpe3ZhciBxPU4u''@;'; put 'put ''bW9kdWx1cy5ieXRlTGVuZ3RoKCksSj1RKCJzaGExIikudXBkYXRlKGllLmFsbG9jKDApKS5kaWdlc3QoKSxzZT1KLmxlbmd0aDtpZigwIT09ZWVbMF0pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmFyIGFlPWVlLnNsaWNlKDEsc2UrMSksZmU9ZWUuc2xpY2Uoc2UrMSks''@;'; put 'put ''ZGU9RShhZSxCKGZlLHNlKSksdmU9RShmZSxCKGRlLHEtc2UtMSkpO2lmKGZ1bmN0aW9uIFcoTixlZSl7Tj1pZS5mcm9tKE4pLGVlPWllLmZyb20oZWUpO3ZhciBxPTAsSj1OLmxlbmd0aDtOLmxlbmd0aCE9PWVlLmxlbmd0aCYmKHErKyxKPU1hdGgubWluKE4ubGVuZ3RoLGVlLmxlbmd0aCkp''@;'; put 'put ''O2Zvcih2YXIgc2U9LTE7KytzZTxKOylxKz1OW3NlXV5lZVtzZV07cmV0dXJuIHF9KEosdmUuc2xpY2UoMCxzZSkpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgQWU9c2U7MD09PXZlW0FlXTspQWUrKztpZigxIT09dmVbQWUrK10pdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJkZWNyeXB0aW9uIGVycm9yIik7cmV0dXJuIHZlLnNsaWNlKEFlKX0oYWUsZGUpO2lmKDE9PT1zZSlyZXR1cm4gZnVuY3Rpb24gWShOLGVlLHEpe2Zvcih2YXIgSj1lZS5zbGljZSgwLDIpLHNlPTIsYWU9MDswIT09ZWVbc2UrK107KWlmKHNlPj1lZS5sZW5ndGgpe2FlKys7YnJlYWt9dmFy''@;'; put 'put ''IGZlPWVlLnNsaWNlKDIsc2UtMSk7aWYoKCIwMDAyIiE9PUoudG9TdHJpbmcoImhleCIpJiYhcXx8IjAwMDEiIT09Si50b1N0cmluZygiaGV4IikmJnEpJiZhZSsrLGZlLmxlbmd0aDw4JiZhZSsrLGFlKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiBlZS5zbGlj''@;'; put 'put ''ZShzZSl9KDAsZGUsSik7aWYoMz09PXNlKXJldHVybiBkZTt0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpfX0sMTY1NjI6KFhlLEplLEwpPT57dmFyIGdlPUwoMjI3NzIpLEI9TCg1Mzc1MyksRT1MKDk2Mzg2KSxNZT1MKDg2OTQ1KSxVPUwoNzk0MDEpLFE9TCg4MjA1NyksWj1M''@;'; put 'put ''KDM4NjUxKSxpZT1MKDg0NjYpLGxlPUwoNzM1MDIpLkJ1ZmZlcjtYZS5leHBvcnRzPWZ1bmN0aW9uKHEsSixzZSl7dmFyIGFlO2FlPXEucGFkZGluZz9xLnBhZGRpbmc6c2U/MTo0O3ZhciBkZSxmZT1nZShxKTtpZig0PT09YWUpZGU9ZnVuY3Rpb24gWShlZSxxKXt2YXIgSj1lZS5tb2R1bHVz''@;'; put 'put ''LmJ5dGVMZW5ndGgoKSxzZT1xLmxlbmd0aCxhZT1FKCJzaGExIikudXBkYXRlKGxlLmFsbG9jKDApKS5kaWdlc3QoKSxmZT1hZS5sZW5ndGgsZGU9MipmZTtpZihzZT5KLWRlLTIpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7dmFyIHZlPWxlLmFsbG9jKEotc2UtZGUtMiks''@;'; put 'put ''QWU9Si1mZS0xLGtlPUIoZmUpLFNlPVUobGUuY29uY2F0KFthZSx2ZSxsZS5hbGxvYygxLDEpLHFdLEFlKSxNZShrZSxBZSkpLEllPVUoa2UsTWUoU2UsZmUpKTtyZXR1cm4gbmV3IFEobGUuY29uY2F0KFtsZS5hbGxvYygxKSxJZSxTZV0sSikpfShmZSxKKTtlbHNlIGlmKDE9PT1hZSlkZT1m''@;'; put 'put ''dW5jdGlvbiBXKGVlLHEsSil7dmFyIGZlLHNlPXEubGVuZ3RoLGFlPWVlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKHNlPmFlLTExKXRocm93IG5ldyBFcnJvcigibWVzc2FnZSB0b28gbG9uZyIpO3JldHVybiBmZT1KP2xlLmFsbG9jKGFlLXNlLTMsMjU1KTpmdW5jdGlvbiBOKGVlKXtmb3Io''@;'; put 'put ''dmFyIGZlLHE9bGUuYWxsb2NVbnNhZmUoZWUpLEo9MCxzZT1CKDIqZWUpLGFlPTA7SjxlZTspYWU9PT1zZS5sZW5ndGgmJihzZT1CKDIqZWUpLGFlPTApLChmZT1zZVthZSsrXSkmJihxW0orK109ZmUpO3JldHVybiBxfShhZS1zZS0zKSxuZXcgUShsZS5jb25jYXQoW2xlLmZyb20oWzAsSj8x''@;'; put 'put ''OjJdKSxmZSxsZS5hbGxvYygxKSxxXSxhZSkpfShmZSxKLHNlKTtlbHNle2lmKDMhPT1hZSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpO2lmKChkZT1uZXcgUShKKSkuY21wKGZlLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcigiZGF0YSB0b28gbG9uZyBmb3IgbW9kdWx1''@;'; put 'put ''cyIpfXJldHVybiBzZT9pZShkZSxmZSk6WihkZSxmZSl9fSwzODY1MTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4MjA1NyksQj1MKDczNTAyKS5CdWZmZXI7WGUuZXhwb3J0cz1mdW5jdGlvbiBFKE1lLFUpe3JldHVybiBCLmZyb20oTWUudG9SZWQoZ2UubW9udChVLm1vZHVsdXMpKS5yZWRQb3co''@;'; put 'put ''bmV3IGdlKFUucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCkudG9BcnJheSgpKX19LDc5NDAxOlhlPT57WGUuZXhwb3J0cz1mdW5jdGlvbihMLGdlKXtmb3IodmFyIEI9TC5sZW5ndGgsRT0tMTsrK0U8QjspTFtFXV49Z2VbRV07cmV0dXJuIEx9fSw1Mzc1MzooWGUsSmUsTCk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIE1lPUwoNzM1MDIpLkJ1ZmZlcixVPWdsb2JhbC5jcnlwdG98fGdsb2JhbC5tc0NyeXB0bztYZS5leHBvcnRzPVUmJlUuZ2V0UmFuZG9tVmFsdWVzP2Z1bmN0aW9uIFEoWixpZSl7aWYoWj40Mjk0OTY3Mjk1KXRocm93IG5ldyBSYW5nZUVycm9yKCJyZXF1ZXN0ZWQgdG9vIG1h''@;'; put 'put ''bnkgcmFuZG9tIGJ5dGVzIik7dmFyIGxlPU1lLmFsbG9jVW5zYWZlKFopO2lmKFo+MClpZihaPjY1NTM2KWZvcih2YXIgWT0wO1k8WjtZKz02NTUzNilVLmdldFJhbmRvbVZhbHVlcyhsZS5zbGljZShZLFkrNjU1MzYpKTtlbHNlIFUuZ2V0UmFuZG9tVmFsdWVzKGxlKTtyZXR1cm4iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgaWU/cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe2llKG51bGwsbGUpfSk6bGV9OmZ1bmN0aW9uIEUoKXt0aHJvdyBuZXcgRXJyb3IoIlNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuXG5Vc2UgQ2hy''@;'; put 'put ''b21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExIil9fSwxNDI3NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZ2UoKXt0aHJvdyBuZXcgRXJyb3IoInNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJc''@;'; put 'put ''bnVzZSBjaHJvbWUsIEZpcmVGb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX12YXIgQj1MKDczNTAyKSxFPUwoNTM3NTMpLE1lPUIuQnVmZmVyLFU9Qi5rTWF4TGVuZ3RoLFE9Z2xvYmFsLmNyeXB0b3x8Z2xvYmFsLm1zQ3J5cHRvLFo9TWF0aC5wb3coMiwzMiktMTtmdW5jdGlvbiBpZShl''@;'; put 'put ''ZSxxKXtpZigibnVtYmVyIiE9dHlwZW9mIGVlfHxlZSE9ZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSBudW1iZXIiKTtpZihlZT5afHxlZTwwKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdWludDMyIik7aWYoZWU+VXx8ZWU+cSl0aHJvdyBu''@;'; put 'put ''ZXcgUmFuZ2VFcnJvcigib2Zmc2V0IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIGxlKGVlLHEsSil7aWYoIm51bWJlciIhPXR5cGVvZiBlZXx8ZWUhPWVlKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpO2lmKGVlPlp8fGVlPDApdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigic2l6ZSBtdXN0IGJlIGEgdWludDMyIik7aWYoZWUrcT5KfHxlZT5VKXRocm93IG5ldyBSYW5nZUVycm9yKCJidWZmZXIgdG9vIHNtYWxsIil9ZnVuY3Rpb24gVyhlZSxxLEosc2Upe2lmKHByb2Nlc3MuYnJvd3Nlcil7dmFyIGZlPW5ldyBVaW50OEFycmF5KGVlLmJ1ZmZlcixxLEopO3Jl''@;'; put 'put ''dHVybiBRLmdldFJhbmRvbVZhbHVlcyhmZSksc2U/dm9pZCBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7c2UobnVsbCxlZSl9KTplZX1pZighc2UpcmV0dXJuIEUoSikuY29weShlZSxxKSxlZTtFKEosZnVuY3Rpb24odmUsQWUpe2lmKHZlKXJldHVybiBzZSh2ZSk7QWUuY29weShlZSxx''@;'; put 'put ''KSxzZShudWxsLGVlKX0pfVEmJlEuZ2V0UmFuZG9tVmFsdWVzfHwhcHJvY2Vzcy5icm93c2VyPyhKZS5yYW5kb21GaWxsPWZ1bmN0aW9uIFkoZWUscSxKLHNlKXtpZighKE1lLmlzQnVmZmVyKGVlKXx8ZWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHEpc2U9cSxxPTAsSj1lZS5sZW5ndGg7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgSilzZT1KLEo9ZWUubGVuZ3RoLXE7ZWxzZSBpZigiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2Ygc2UpdGhyb3cgbmV3IFR5cGVFcnJvcignImNiIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtyZXR1cm4gaWUocSxlZS5sZW5ndGgpLGxlKEoscSxlZS5sZW5ndGgpLFcoZWUscSxKLHNlKX0sSmUucmFuZG9tRmlsbFN5bmM9ZnVuY3Rpb24gTihlZSxxLEope2lmKHZvaWQg''@;'; put 'put ''MD09PXEmJihxPTApLCEoTWUuaXNCdWZmZXIoZWUpfHxlZSBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtyZXR1cm4gaWUocSxlZS5sZW5ndGgpLHZvaWQgMD09''@;'; put 'put ''PUomJihKPWVlLmxlbmd0aC1xKSxsZShKLHEsZWUubGVuZ3RoKSxXKGVlLHEsSil9KTooSmUucmFuZG9tRmlsbD1nZSxKZS5yYW5kb21GaWxsU3luYz1nZSl9LDcwODkxOlhlPT57InVzZSBzdHJpY3QiO3ZhciBMPXt9O2Z1bmN0aW9uIGdlKFEsWixpZSl7aWV8fChpZT1FcnJvcik7dmFyIFk9''@;'; put 'put ''ZnVuY3Rpb24oVyl7ZnVuY3Rpb24gTihlZSxxLEope3JldHVybiBXLmNhbGwodGhpcyxmdW5jdGlvbiBsZShXLE4sZWUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgWj9aOlooVyxOLGVlKX0oZWUscSxKKSl8fHRoaXN9cmV0dXJuIGZ1bmN0aW9uIEplKFEsWil7US5wcm90b3R5cGU9T2JqZWN0''@;'; put 'put ''LmNyZWF0ZShaLnByb3RvdHlwZSksUS5wcm90b3R5cGUuY29uc3RydWN0b3I9USxRLl9fcHJvdG9fXz1afShOLFcpLE59KGllKTtZLnByb3RvdHlwZS5uYW1lPWllLm5hbWUsWS5wcm90b3R5cGUuY29kZT1RLExbUV09WX1mdW5jdGlvbiBCKFEsWil7aWYoQXJyYXkuaXNBcnJheShRKSl7dmFy''@;'; put 'put ''IGllPVEubGVuZ3RoO3JldHVybiBRPVEubWFwKGZ1bmN0aW9uKGxlKXtyZXR1cm4gU3RyaW5nKGxlKX0pLGllPjI/Im9uZSBvZiAiLmNvbmNhdChaLCIgIikuY29uY2F0KFEuc2xpY2UoMCxpZS0xKS5qb2luKCIsICIpLCIsIG9yICIpK1FbaWUtMV06Mj09PWllPyJvbmUgb2YgIi5jb25jYXQo''@;'; put 'put ''WiwiICIpLmNvbmNhdChRWzBdLCIgb3IgIikuY29uY2F0KFFbMV0pOiJvZiAiLmNvbmNhdChaLCIgIikuY29uY2F0KFFbMF0pfXJldHVybiJvZiAiLmNvbmNhdChaLCIgIikuY29uY2F0KFN0cmluZyhRKSl9Z2UoIkVSUl9JTlZBTElEX09QVF9WQUxVRSIsZnVuY3Rpb24oUSxaKXtyZXR1cm4n''@;'; put 'put ''VGhlIHZhbHVlICInK1orJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICInK1ErJyInfSxUeXBlRXJyb3IpLGdlKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oUSxaLGllKXt2YXIgbGUsWTtpZigic3RyaW5nIj09dHlwZW9mIFomJmZ1bmN0aW9uIEUoUSxaLGllKXtyZXR1cm4gUS5z''@;'; put 'put ''dWJzdHIoIWllfHxpZTwwPzA6K2llLFoubGVuZ3RoKT09PVp9KFosIm5vdCAiKT8obGU9Im11c3Qgbm90IGJlIixaPVoucmVwbGFjZSgvXm5vdCAvLCIiKSk6bGU9Im11c3QgYmUiLGZ1bmN0aW9uIE1lKFEsWixpZSl7cmV0dXJuKHZvaWQgMD09PWllfHxpZT5RLmxlbmd0aCkmJihpZT1RLmxl''@;'; put 'put ''bmd0aCksUS5zdWJzdHJpbmcoaWUtWi5sZW5ndGgsaWUpPT09Wn0oUSwiIGFyZ3VtZW50IikpWT0iVGhlICIuY29uY2F0KFEsIiAiKS5jb25jYXQobGUsIiAiKS5jb25jYXQoQihaLCJ0eXBlIikpO2Vsc2V7dmFyIFc9ZnVuY3Rpb24gVShRLFosaWUpe3JldHVybiJudW1iZXIiIT10eXBlb2Yg''@;'; put 'put ''aWUmJihpZT0wKSwhKGllK1oubGVuZ3RoPlEubGVuZ3RoKSYmLTEhPT1RLmluZGV4T2YoWixpZSl9KFEsIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7WT0nVGhlICInLmNvbmNhdChRLCciICcpLmNvbmNhdChXLCIgIikuY29uY2F0KGxlLCIgIikuY29uY2F0KEIoWiwidHlwZSIpKX1yZXR1''@;'; put 'put ''cm4gWSsiLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHR5cGVvZiBpZSl9LFR5cGVFcnJvciksZ2UoIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YiLCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRiIpLGdlKCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIsZnVuY3Rpb24oUSl7cmV0dXJuIlRo''@;'; put 'put ''ZSAiK1ErIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIn0pLGdlKCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIsIlByZW1hdHVyZSBjbG9zZSIpLGdlKCJFUlJfU1RSRUFNX0RFU1RST1lFRCIsZnVuY3Rpb24oUSl7cmV0dXJuIkNhbm5vdCBjYWxsICIrUSsiIGFmdGVyIGEgc3RyZWFt''@;'; put 'put ''IHdhcyBkZXN0cm95ZWQifSksZ2UoIkVSUl9NVUxUSVBMRV9DQUxMQkFDSyIsIkNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyIpLGdlKCJFUlJfU1RSRUFNX0NBTk5PVF9QSVBFIiwiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZSIpLGdlKCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VO''@;'; put 'put ''RCIsIndyaXRlIGFmdGVyIGVuZCIpLGdlKCJFUlJfU1RSRUFNX05VTExfVkFMVUVTIiwiTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iLFR5cGVFcnJvciksZ2UoIkVSUl9VTktOT1dOX0VOQ09ESU5HIixmdW5jdGlvbihRKXtyZXR1cm4iVW5rbm93biBlbmNvZGluZzogIitR''@;'; put 'put ''fSxUeXBlRXJyb3IpLGdlKCJFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UIiwic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQiKSxYZS5leHBvcnRzLnE9TH0sNDEzMzk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24o''@;'; put 'put ''WSl7dmFyIFc9W107Zm9yKHZhciBOIGluIFkpVy5wdXNoKE4pO3JldHVybiBXfTtYZS5leHBvcnRzPVo7dmFyIEI9TCgzMTU0KSxFPUwoMjA1MjApO0woODM4OTQpKFosQik7Zm9yKHZhciBNZT1nZShFLnByb3RvdHlwZSksVT0wO1U8TWUubGVuZ3RoO1UrKyl7dmFyIFE9TWVbVV07Wi5wcm90''@;'; put 'put ''b3R5cGVbUV18fChaLnByb3RvdHlwZVtRXT1FLnByb3RvdHlwZVtRXSl9ZnVuY3Rpb24gWihZKXtpZighKHRoaXMgaW5zdGFuY2VvZiBaKSlyZXR1cm4gbmV3IFooWSk7Qi5jYWxsKHRoaXMsWSksRS5jYWxsKHRoaXMsWSksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLFkmJighMT09PVkucmVhZGFi''@;'; put 'put ''bGUmJih0aGlzLnJlYWRhYmxlPSExKSwhMT09PVkud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PVkuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoImVuZCIsaWUpKSl9ZnVuY3Rpb24gaWUoKXt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVk''@;'; put 'put ''fHxwcm9jZXNzLm5leHRUaWNrKGxlLHRoaXMpfWZ1bmN0aW9uIGxlKFkpe1kuZW5kKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRl''@;'; put 'put ''LmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCJ3cml0YWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KFoucHJvdG90eXBlLCJ3cml0YWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51''@;'; put 'put ''bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rp''@;'; put 'put ''b24oVyl7dm9pZCAwPT09dGhpcy5fcmVhZGFibGVTdGF0ZXx8dm9pZCAwPT09dGhpcy5fd3JpdGFibGVTdGF0ZXx8KHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPVcsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9Vyl9fSl9LDU2MDcxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtYZS5leHBvcnRzPUI7dmFyIGdlPUwoNjAyNSk7ZnVuY3Rpb24gQihFKXtpZighKHRoaXMgaW5zdGFuY2VvZiBCKSlyZXR1cm4gbmV3IEIoRSk7Z2UuY2FsbCh0aGlzLEUpfUwoODM4OTQpKEIsZ2UpLEIucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oRSxNZSxVKXtVKG51bGwsRSl9''@;'; put 'put ''fSwzMTU0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U7WGUuZXhwb3J0cz1oZSxoZS5SZWFkYWJsZVN0YXRlPUVlLEwoNTkwNjkpO3ZhciBZLEU9ZnVuY3Rpb24oRnQsb24pe3JldHVybiBGdC5saXN0ZW5lcnMob24pLmxlbmd0aH0sTWU9TCg0OTcwKSxVPUwoOTMxNzIpLkJ1ZmZl''@;'; put 'put ''cixRPWdsb2JhbC5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sbGU9TCg5NDYxNik7WT1sZSYmbGUuZGVidWdsb2c/bGUuZGVidWdsb2coInN0cmVhbSIpOmZ1bmN0aW9uKCl7fTt2YXIgdmUsQWUsa2UsVz1MKDI1MDE5KSxOPUwoNDE5MjApLHE9TCg0NzEwMikuZ2V0SGlnaFdhdGVyTWFyayxK''@;'; put 'put ''PUwoNzA4OTEpLnEsc2U9Si5FUlJfSU5WQUxJRF9BUkdfVFlQRSxhZT1KLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsZmU9Si5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxkZT1KLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7TCg4Mzg5NCkoaGUsTWUpO3ZhciBTZT1O''@;'; put 'put ''LmVycm9yT3JEZXN0cm95LEllPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2Z1bmN0aW9uIEVlKGZ0LEZ0LG9uKXtnZT1nZXx8TCg0MTMzOSksImJvb2xlYW4iIT10eXBlb2Ygb24mJihvbj1GdCBpbnN0YW5jZW9mIGdlKSx0aGlzLm9iamVjdE1vZGU9ISEo''@;'; put 'put ''ZnQ9ZnR8fHt9KS5vYmplY3RNb2RlLG9uJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFmdC5yZWFkYWJsZU9iamVjdE1vZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz1xKHRoaXMsZnQsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIsb24pLHRoaXMuYnVmZmVyPW5ldyBXLHRoaXMu''@;'; put 'put ''bGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9''@;'; put 'put ''ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXRDbG9zZT0hMSE9PWZ0LmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhZnQuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0''@;'; put 'put ''RW5jb2Rpbmc9ZnQuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0aGlzLmVuY29kaW5nPW51bGwsZnQuZW5jb2RpbmcmJih2ZXx8KHZlPUwoNzMwNTQpLnMpLHRoaXMuZGVjb2Rlcj1uZXcgdmUo''@;'; put 'put ''ZnQuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9ZnQuZW5jb2RpbmcpfWZ1bmN0aW9uIGhlKGZ0KXtpZihnZT1nZXx8TCg0MTMzOSksISh0aGlzIGluc3RhbmNlb2YgaGUpKXJldHVybiBuZXcgaGUoZnQpO3RoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IEVlKGZ0LHRoaXMsdGhpcyBpbnN0YW5jZW9m''@;'; put 'put ''IGdlKSx0aGlzLnJlYWRhYmxlPSEwLGZ0JiYoImZ1bmN0aW9uIj09dHlwZW9mIGZ0LnJlYWQmJih0aGlzLl9yZWFkPWZ0LnJlYWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBmdC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1mdC5kZXN0cm95KSksTWUuY2FsbCh0aGlzKX1mdW5jdGlvbiBPKGZ0LEZ0''@;'; put 'put ''LG9uLF90LG50KXtZKCJyZWFkYWJsZUFkZENodW5rIixGdCk7dmFyIG90LHFlPWZ0Ll9yZWFkYWJsZVN0YXRlO2lmKG51bGw9PT1GdClxZS5yZWFkaW5nPSExLGZ1bmN0aW9uIFYoZnQsRnQpe2lmKFkoIm9uRW9mQ2h1bmsiKSwhRnQuZW5kZWQpe2lmKEZ0LmRlY29kZXIpe3ZhciBvbj1GdC5k''@;'; put 'put ''ZWNvZGVyLmVuZCgpO29uJiZvbi5sZW5ndGgmJihGdC5idWZmZXIucHVzaChvbiksRnQubGVuZ3RoKz1GdC5vYmplY3RNb2RlPzE6b24ubGVuZ3RoKX1GdC5lbmRlZD0hMCxGdC5zeW5jP1QoZnQpOihGdC5uZWVkUmVhZGFibGU9ITEsRnQuZW1pdHRlZFJlYWRhYmxlfHwoRnQuZW1pdHRlZFJl''@;'; put 'put ''YWRhYmxlPSEwLFMoZnQpKSl9fShmdCxxZSk7ZWxzZSBpZihudHx8KG90PWZ1bmN0aW9uIG5lKGZ0LEZ0KXt2YXIgb247cmV0dXJuIWZ1bmN0aW9uIGllKGZ0KXtyZXR1cm4gVS5pc0J1ZmZlcihmdCl8fGZ0IGluc3RhbmNlb2YgUX0oRnQpJiYic3RyaW5nIiE9dHlwZW9mIEZ0JiZ2b2lkIDAh''@;'; put 'put ''PT1GdCYmIWZ0Lm9iamVjdE1vZGUmJihvbj1uZXcgc2UoImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciIsIlVpbnQ4QXJyYXkiXSxGdCkpLG9ufShxZSxGdCkpLG90KVNlKGZ0LG90KTtlbHNlIGlmKHFlLm9iamVjdE1vZGV8fEZ0JiZGdC5sZW5ndGg+MClpZigic3RyaW5nIiE9dHlwZW9mIEZ0''@;'; put 'put ''JiYhcWUub2JqZWN0TW9kZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKEZ0KSE9PVUucHJvdG90eXBlJiYoRnQ9ZnVuY3Rpb24gWihmdCl7cmV0dXJuIFUuZnJvbShmdCl9KEZ0KSksX3QpcWUuZW5kRW1pdHRlZD9TZShmdCxuZXcgZGUpOnooZnQscWUsRnQsITApO2Vsc2UgaWYocWUuZW5kZWQp''@;'; put 'put ''U2UoZnQsbmV3IGFlKTtlbHNle2lmKHFlLmRlc3Ryb3llZClyZXR1cm4hMTtxZS5yZWFkaW5nPSExLHFlLmRlY29kZXImJiFvbj8oRnQ9cWUuZGVjb2Rlci53cml0ZShGdCkscWUub2JqZWN0TW9kZXx8MCE9PUZ0Lmxlbmd0aD96KGZ0LHFlLEZ0LCExKTpGKGZ0LHFlKSk6eihmdCxxZSxGdCwh''@;'; put 'put ''MSl9ZWxzZSBfdHx8KHFlLnJlYWRpbmc9ITEsRihmdCxxZSkpO3JldHVybiFxZS5lbmRlZCYmKHFlLmxlbmd0aDxxZS5oaWdoV2F0ZXJNYXJrfHwwPT09cWUubGVuZ3RoKX1mdW5jdGlvbiB6KGZ0LEZ0LG9uLF90KXtGdC5mbG93aW5nJiYwPT09RnQubGVuZ3RoJiYhRnQuc3luYz8oRnQuYXdh''@;'; put 'put ''aXREcmFpbj0wLGZ0LmVtaXQoImRhdGEiLG9uKSk6KEZ0Lmxlbmd0aCs9RnQub2JqZWN0TW9kZT8xOm9uLmxlbmd0aCxfdD9GdC5idWZmZXIudW5zaGlmdChvbik6RnQuYnVmZmVyLnB1c2gob24pLEZ0Lm5lZWRSZWFkYWJsZSYmVChmdCkpLEYoZnQsRnQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShoZS5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oRnQpeyF0aGlzLl9yZWFkYWJsZVN0YXRlfHwo''@;'; put 'put ''dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9RnQpfX0pLGhlLnByb3RvdHlwZS5kZXN0cm95PU4uZGVzdHJveSxoZS5wcm90b3R5cGUuX3VuZGVzdHJveT1OLnVuZGVzdHJveSxoZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZnQsRnQpe0Z0KGZ0KX0saGUucHJvdG90eXBlLnB1''@;'; put 'put ''c2g9ZnVuY3Rpb24oZnQsRnQpe3ZhciBfdCxvbj10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBvbi5vYmplY3RNb2RlP190PSEwOiJzdHJpbmciPT10eXBlb2YgZnQmJigoRnQ9RnR8fG9uLmRlZmF1bHRFbmNvZGluZykhPT1vbi5lbmNvZGluZyYmKGZ0PVUuZnJvbShmdCxGdCksRnQ9IiIp''@;'; put 'put ''LF90PSEwKSxPKHRoaXMsZnQsRnQsITEsX3QpfSxoZS5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihmdCl7cmV0dXJuIE8odGhpcyxmdCxudWxsLCEwLCExKX0saGUucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9''@;'; put 'put ''LGhlLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihmdCl7dmV8fCh2ZT1MKDczMDU0KS5zKTt2YXIgRnQ9bmV3IHZlKGZ0KTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9RnQsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIu''@;'; put 'put ''ZW5jb2Rpbmc7Zm9yKHZhciBvbj10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkLF90PSIiO251bGwhPT1vbjspX3QrPUZ0LndyaXRlKG9uLmRhdGEpLG9uPW9uLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1fdCYmdGhpcy5fcmVhZGFi''@;'; put 'put ''bGVTdGF0ZS5idWZmZXIucHVzaChfdCksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9X3QubGVuZ3RoLHRoaXN9O3ZhciB0ZT0xMDczNzQxODI0O2Z1bmN0aW9uIFAoZnQsRnQpe3JldHVybiBmdDw9MHx8MD09PUZ0Lmxlbmd0aCYmRnQuZW5kZWQ/MDpGdC5vYmplY3RNb2RlPzE6ZnQhPWZ0''@;'; put 'put ''P0Z0LmZsb3dpbmcmJkZ0Lmxlbmd0aD9GdC5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDpGdC5sZW5ndGg6KGZ0PkZ0LmhpZ2hXYXRlck1hcmsmJihGdC5oaWdoV2F0ZXJNYXJrPWZ1bmN0aW9uIHgoZnQpe3JldHVybiBmdD49dGU/ZnQ9dGU6KGZ0LS0sZnR8PWZ0Pj4+MSxmdHw9ZnQ+Pj4yLGZ0''@;'; put 'put ''fD1mdD4+PjQsZnR8PWZ0Pj4+OCxmdHw9ZnQ+Pj4xNixmdCsrKSxmdH0oZnQpKSxmdDw9RnQubGVuZ3RoP2Z0OkZ0LmVuZGVkP0Z0Lmxlbmd0aDooRnQubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBUKGZ0KXt2YXIgRnQ9ZnQuX3JlYWRhYmxlU3RhdGU7WSgiZW1pdFJlYWRhYmxlIixG''@;'; put 'put ''dC5uZWVkUmVhZGFibGUsRnQuZW1pdHRlZFJlYWRhYmxlKSxGdC5uZWVkUmVhZGFibGU9ITEsRnQuZW1pdHRlZFJlYWRhYmxlfHwoWSgiZW1pdFJlYWRhYmxlIixGdC5mbG93aW5nKSxGdC5lbWl0dGVkUmVhZGFibGU9ITAscHJvY2Vzcy5uZXh0VGljayhTLGZ0KSl9ZnVuY3Rpb24gUyhmdCl7''@;'; put 'put ''dmFyIEZ0PWZ0Ll9yZWFkYWJsZVN0YXRlO1koImVtaXRSZWFkYWJsZV8iLEZ0LmRlc3Ryb3llZCxGdC5sZW5ndGgsRnQuZW5kZWQpLCFGdC5kZXN0cm95ZWQmJihGdC5sZW5ndGh8fEZ0LmVuZGVkKSYmKGZ0LmVtaXQoInJlYWRhYmxlIiksRnQuZW1pdHRlZFJlYWRhYmxlPSExKSxGdC5uZWVk''@;'; put 'put ''UmVhZGFibGU9IUZ0LmZsb3dpbmcmJiFGdC5lbmRlZCYmRnQubGVuZ3RoPD1GdC5oaWdoV2F0ZXJNYXJrLGd0KGZ0KX1mdW5jdGlvbiBGKGZ0LEZ0KXtGdC5yZWFkaW5nTW9yZXx8KEZ0LnJlYWRpbmdNb3JlPSEwLHByb2Nlc3MubmV4dFRpY2soeWUsZnQsRnQpKX1mdW5jdGlvbiB5ZShmdCxG''@;'; put 'put ''dCl7Zm9yKDshRnQucmVhZGluZyYmIUZ0LmVuZGVkJiYoRnQubGVuZ3RoPEZ0LmhpZ2hXYXRlck1hcmt8fEZ0LmZsb3dpbmcmJjA9PT1GdC5sZW5ndGgpOyl7dmFyIG9uPUZ0Lmxlbmd0aDtpZihZKCJtYXliZVJlYWRNb3JlIHJlYWQgMCIpLGZ0LnJlYWQoMCksb249PT1GdC5sZW5ndGgpYnJl''@;'; put 'put ''YWt9RnQucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gRGUoZnQpe3ZhciBGdD1mdC5fcmVhZGFibGVTdGF0ZTtGdC5yZWFkYWJsZUxpc3RlbmluZz1mdC5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsRnQucmVzdW1lU2NoZWR1bGVkJiYhRnQucGF1c2VkP0Z0LmZsb3dpbmc9ITA6ZnQubGlz''@;'; put 'put ''dGVuZXJDb3VudCgiZGF0YSIpPjAmJmZ0LnJlc3VtZSgpfWZ1bmN0aW9uIFBlKGZ0KXtZKCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDAiKSxmdC5yZWFkKDApfWZ1bmN0aW9uICRlKGZ0LEZ0KXtZKCJyZXN1bWUiLEZ0LnJlYWRpbmcpLEZ0LnJlYWRpbmd8fGZ0LnJlYWQoMCksRnQucmVzdW1l''@;'; put 'put ''U2NoZWR1bGVkPSExLGZ0LmVtaXQoInJlc3VtZSIpLGd0KGZ0KSxGdC5mbG93aW5nJiYhRnQucmVhZGluZyYmZnQucmVhZCgwKX1mdW5jdGlvbiBndChmdCl7dmFyIEZ0PWZ0Ll9yZWFkYWJsZVN0YXRlO2ZvcihZKCJmbG93IixGdC5mbG93aW5nKTtGdC5mbG93aW5nJiZudWxsIT09ZnQucmVh''@;'; put 'put ''ZCgpOyk7fWZ1bmN0aW9uIHl0KGZ0LEZ0KXtyZXR1cm4gMD09PUZ0Lmxlbmd0aD9udWxsOihGdC5vYmplY3RNb2RlP29uPUZ0LmJ1ZmZlci5zaGlmdCgpOiFmdHx8ZnQ+PUZ0Lmxlbmd0aD8ob249RnQuZGVjb2Rlcj9GdC5idWZmZXIuam9pbigiIik6MT09PUZ0LmJ1ZmZlci5sZW5ndGg/RnQu''@;'; put 'put ''YnVmZmVyLmZpcnN0KCk6RnQuYnVmZmVyLmNvbmNhdChGdC5sZW5ndGgpLEZ0LmJ1ZmZlci5jbGVhcigpKTpvbj1GdC5idWZmZXIuY29uc3VtZShmdCxGdC5kZWNvZGVyKSxvbik7dmFyIG9ufWZ1bmN0aW9uIHB0KGZ0KXt2YXIgRnQ9ZnQuX3JlYWRhYmxlU3RhdGU7WSgiZW5kUmVhZGFibGUi''@;'; put 'put ''LEZ0LmVuZEVtaXR0ZWQpLEZ0LmVuZEVtaXR0ZWR8fChGdC5lbmRlZD0hMCxwcm9jZXNzLm5leHRUaWNrKG10LEZ0LGZ0KSl9ZnVuY3Rpb24gbXQoZnQsRnQpe2lmKFkoImVuZFJlYWRhYmxlTlQiLGZ0LmVuZEVtaXR0ZWQsZnQubGVuZ3RoKSwhZnQuZW5kRW1pdHRlZCYmMD09PWZ0Lmxlbmd0''@;'; put 'put ''aCYmKGZ0LmVuZEVtaXR0ZWQ9ITAsRnQucmVhZGFibGU9ITEsRnQuZW1pdCgiZW5kIiksZnQuYXV0b0Rlc3Ryb3kpKXt2YXIgb249RnQuX3dyaXRhYmxlU3RhdGU7KCFvbnx8b24uYXV0b0Rlc3Ryb3kmJm9uLmZpbmlzaGVkKSYmRnQuZGVzdHJveSgpfX1mdW5jdGlvbiB2dChmdCxGdCl7Zm9y''@;'; put 'put ''KHZhciBvbj0wLF90PWZ0Lmxlbmd0aDtvbjxfdDtvbisrKWlmKGZ0W29uXT09PUZ0KXJldHVybiBvbjtyZXR1cm4tMX1oZS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihmdCl7WSgicmVhZCIsZnQpLGZ0PXBhcnNlSW50KGZ0LDEwKTt2YXIgRnQ9dGhpcy5fcmVhZGFibGVTdGF0ZSxvbj1mdDtp''@;'; put 'put ''ZigwIT09ZnQmJihGdC5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT1mdCYmRnQubmVlZFJlYWRhYmxlJiYoKDAhPT1GdC5oaWdoV2F0ZXJNYXJrP0Z0Lmxlbmd0aD49RnQuaGlnaFdhdGVyTWFyazpGdC5sZW5ndGg+MCl8fEZ0LmVuZGVkKSlyZXR1cm4gWSgicmVhZDogZW1pdFJlYWRhYmxlIixG''@;'; put 'put ''dC5sZW5ndGgsRnQuZW5kZWQpLDA9PT1GdC5sZW5ndGgmJkZ0LmVuZGVkP3B0KHRoaXMpOlQodGhpcyksbnVsbDtpZigwPT09KGZ0PVAoZnQsRnQpKSYmRnQuZW5kZWQpcmV0dXJuIDA9PT1GdC5sZW5ndGgmJnB0KHRoaXMpLG51bGw7dmFyIG50LF90PUZ0Lm5lZWRSZWFkYWJsZTtyZXR1cm4g''@;'; put 'put ''WSgibmVlZCByZWFkYWJsZSIsX3QpLCgwPT09RnQubGVuZ3RofHxGdC5sZW5ndGgtZnQ8RnQuaGlnaFdhdGVyTWFyaykmJlkoImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrIixfdD0hMCksRnQuZW5kZWR8fEZ0LnJlYWRpbmc/WSgicmVhZGluZyBvciBlbmRlZCIsX3Q9ITEpOl90JiYoWSgi''@;'; put 'put ''ZG8gcmVhZCIpLEZ0LnJlYWRpbmc9ITAsRnQuc3luYz0hMCwwPT09RnQubGVuZ3RoJiYoRnQubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKEZ0LmhpZ2hXYXRlck1hcmspLEZ0LnN5bmM9ITEsRnQucmVhZGluZ3x8KGZ0PVAob24sRnQpKSksbnVsbD09PShudD1mdD4wP3l0KGZ0LEZ0KTpu''@;'; put 'put ''dWxsKT8oRnQubmVlZFJlYWRhYmxlPUZ0Lmxlbmd0aDw9RnQuaGlnaFdhdGVyTWFyayxmdD0wKTooRnQubGVuZ3RoLT1mdCxGdC5hd2FpdERyYWluPTApLDA9PT1GdC5sZW5ndGgmJihGdC5lbmRlZHx8KEZ0Lm5lZWRSZWFkYWJsZT0hMCksb24hPT1mdCYmRnQuZW5kZWQmJnB0KHRoaXMpKSxu''@;'; put 'put ''dWxsIT09bnQmJnRoaXMuZW1pdCgiZGF0YSIsbnQpLG50fSxoZS5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oZnQpe1NlKHRoaXMsbmV3IGZlKCJfcmVhZCgpIikpfSxoZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihmdCxGdCl7dmFyIG9uPXRoaXMsX3Q9dGhpcy5fcmVhZGFibGVTdGF0ZTtz''@;'; put 'put ''d2l0Y2goX3QucGlwZXNDb3VudCl7Y2FzZSAwOl90LnBpcGVzPWZ0O2JyZWFrO2Nhc2UgMTpfdC5waXBlcz1bX3QucGlwZXMsZnRdO2JyZWFrO2RlZmF1bHQ6X3QucGlwZXMucHVzaChmdCl9X3QucGlwZXNDb3VudCs9MSxZKCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLF90LnBpcGVzQ291bnQs''@;'; put 'put ''RnQpO3ZhciBxZT1GdCYmITE9PT1GdC5lbmR8fGZ0PT09cHJvY2Vzcy5zdGRvdXR8fGZ0PT09cHJvY2Vzcy5zdGRlcnI/SnQ6UnQ7ZnVuY3Rpb24gUnQoKXtZKCJvbmVuZCIpLGZ0LmVuZCgpfV90LmVuZEVtaXR0ZWQ/cHJvY2Vzcy5uZXh0VGljayhxZSk6b24ub25jZSgiZW5kIixxZSksZnQu''@;'; put 'put ''b24oInVucGlwZSIsZnVuY3Rpb24gb3QobW4scG4pe1koIm9udW5waXBlIiksbW49PT1vbiYmcG4mJiExPT09cG4uaGFzVW5waXBlZCYmKHBuLmhhc1VucGlwZWQ9ITAsZnVuY3Rpb24gTnQoKXtZKCJjbGVhbnVwIiksZnQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixBdCksZnQucmVtb3ZlTGlz''@;'; put 'put ''dGVuZXIoImZpbmlzaCIsanQpLGZ0LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsQ3QpLGZ0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsWWUpLGZ0LnJlbW92ZUxpc3RlbmVyKCJ1bnBpcGUiLG90KSxvbi5yZW1vdmVMaXN0ZW5lcigiZW5kIixSdCksb24ucmVtb3ZlTGlzdGVuZXIoImVuZCIsSnQp''@;'; put 'put ''LG9uLnJlbW92ZUxpc3RlbmVyKCJkYXRhIix6ZSksY3Q9ITAsX3QuYXdhaXREcmFpbiYmKCFmdC5fd3JpdGFibGVTdGF0ZXx8ZnQuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSYmQ3QoKX0oKSl9KTt2YXIgQ3Q9ZnVuY3Rpb24gQ2UoZnQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBvbj1mdC5f''@;'; put 'put ''cmVhZGFibGVTdGF0ZTtZKCJwaXBlT25EcmFpbiIsb24uYXdhaXREcmFpbiksb24uYXdhaXREcmFpbiYmb24uYXdhaXREcmFpbi0tLDA9PT1vbi5hd2FpdERyYWluJiZFKGZ0LCJkYXRhIikmJihvbi5mbG93aW5nPSEwLGd0KGZ0KSl9fShvbik7ZnQub24oImRyYWluIixDdCk7dmFyIGN0PSEx''@;'; put 'put ''O2Z1bmN0aW9uIHplKG1uKXtZKCJvbmRhdGEiKTt2YXIgcG49ZnQud3JpdGUobW4pO1koImRlc3Qud3JpdGUiLHBuKSwhMT09PXBuJiYoKDE9PT1fdC5waXBlc0NvdW50JiZfdC5waXBlcz09PWZ0fHxfdC5waXBlc0NvdW50PjEmJi0xIT09dnQoX3QucGlwZXMsZnQpKSYmIWN0JiYoWSgiZmFs''@;'; put 'put ''c2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixfdC5hd2FpdERyYWluKSxfdC5hd2FpdERyYWluKyspLG9uLnBhdXNlKCkpfWZ1bmN0aW9uIFllKG1uKXtZKCJvbmVycm9yIixtbiksSnQoKSxmdC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLFllKSwwPT09RShmdCwiZXJyb3IiKSYmU2UoZnQsbW4p''@;'; put 'put ''fWZ1bmN0aW9uIEF0KCl7ZnQucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsanQpLEp0KCl9ZnVuY3Rpb24ganQoKXtZKCJvbmZpbmlzaCIpLGZ0LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsQXQpLEp0KCl9ZnVuY3Rpb24gSnQoKXtZKCJ1bnBpcGUiKSxvbi51bnBpcGUoZnQpfXJldHVybiBvbi5v''@;'; put 'put ''bigiZGF0YSIsemUpLGZ1bmN0aW9uIFRlKGZ0LEZ0LG9uKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZnQucHJlcGVuZExpc3RlbmVyKXJldHVybiBmdC5wcmVwZW5kTGlzdGVuZXIoRnQsb24pO2Z0Ll9ldmVudHMmJmZ0Ll9ldmVudHNbRnRdP0FycmF5LmlzQXJyYXkoZnQuX2V2ZW50c1tGdF0p''@;'; put 'put ''P2Z0Ll9ldmVudHNbRnRdLnVuc2hpZnQob24pOmZ0Ll9ldmVudHNbRnRdPVtvbixmdC5fZXZlbnRzW0Z0XV06ZnQub24oRnQsb24pfShmdCwiZXJyb3IiLFllKSxmdC5vbmNlKCJjbG9zZSIsQXQpLGZ0Lm9uY2UoImZpbmlzaCIsanQpLGZ0LmVtaXQoInBpcGUiLG9uKSxfdC5mbG93aW5nfHwo''@;'; put 'put ''WSgicGlwZSByZXN1bWUiKSxvbi5yZXN1bWUoKSksZnR9LGhlLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oZnQpe3ZhciBGdD10aGlzLl9yZWFkYWJsZVN0YXRlLG9uPXtoYXNVbnBpcGVkOiExfTtpZigwPT09RnQucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09RnQucGlwZXNDb3Vu''@;'; put 'put ''dClyZXR1cm4gZnQmJmZ0IT09RnQucGlwZXN8fChmdHx8KGZ0PUZ0LnBpcGVzKSxGdC5waXBlcz1udWxsLEZ0LnBpcGVzQ291bnQ9MCxGdC5mbG93aW5nPSExLGZ0JiZmdC5lbWl0KCJ1bnBpcGUiLHRoaXMsb24pKSx0aGlzO2lmKCFmdCl7dmFyIF90PUZ0LnBpcGVzLG50PUZ0LnBpcGVzQ291''@;'; put 'put ''bnQ7RnQucGlwZXM9bnVsbCxGdC5waXBlc0NvdW50PTAsRnQuZmxvd2luZz0hMTtmb3IodmFyIHFlPTA7cWU8bnQ7cWUrKylfdFtxZV0uZW1pdCgidW5waXBlIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7cmV0dXJuIHRoaXN9dmFyIG90PXZ0KEZ0LnBpcGVzLGZ0KTtyZXR1cm4tMT09PW90fHwo''@;'; put 'put ''RnQucGlwZXMuc3BsaWNlKG90LDEpLEZ0LnBpcGVzQ291bnQtPTEsMT09PUZ0LnBpcGVzQ291bnQmJihGdC5waXBlcz1GdC5waXBlc1swXSksZnQuZW1pdCgidW5waXBlIix0aGlzLG9uKSksdGhpc30saGUucHJvdG90eXBlLmFkZExpc3RlbmVyPWhlLnByb3RvdHlwZS5vbj1mdW5jdGlvbihm''@;'; put 'put ''dCxGdCl7dmFyIG9uPU1lLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsZnQsRnQpLF90PXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuImRhdGEiPT09ZnQ/KF90LnJlYWRhYmxlTGlzdGVuaW5nPXRoaXMubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLCExIT09X3QuZmxvd2luZyYmdGhpcy5y''@;'; put 'put ''ZXN1bWUoKSk6InJlYWRhYmxlIj09PWZ0JiYhX3QuZW5kRW1pdHRlZCYmIV90LnJlYWRhYmxlTGlzdGVuaW5nJiYoX3QucmVhZGFibGVMaXN0ZW5pbmc9X3QubmVlZFJlYWRhYmxlPSEwLF90LmZsb3dpbmc9ITEsX3QuZW1pdHRlZFJlYWRhYmxlPSExLFkoIm9uIHJlYWRhYmxlIixfdC5sZW5n''@;'; put 'put ''dGgsX3QucmVhZGluZyksX3QubGVuZ3RoP1QodGhpcyk6X3QucmVhZGluZ3x8cHJvY2Vzcy5uZXh0VGljayhQZSx0aGlzKSksb259LGhlLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihmdCxGdCl7dmFyIG9uPU1lLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMs''@;'; put 'put ''ZnQsRnQpO3JldHVybiJyZWFkYWJsZSI9PT1mdCYmcHJvY2Vzcy5uZXh0VGljayhEZSx0aGlzKSxvbn0saGUucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihmdCl7dmFyIEZ0PU1lLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcyxhcmd1bWVudHMp''@;'; put 'put ''O3JldHVybigicmVhZGFibGUiPT09ZnR8fHZvaWQgMD09PWZ0KSYmcHJvY2Vzcy5uZXh0VGljayhEZSx0aGlzKSxGdH0saGUucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciBmdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBmdC5mbG93aW5nfHwoWSgicmVzdW1lIiksZnQuZmxv''@;'; put 'put ''d2luZz0hZnQucmVhZGFibGVMaXN0ZW5pbmcsZnVuY3Rpb24gUWUoZnQsRnQpe0Z0LnJlc3VtZVNjaGVkdWxlZHx8KEZ0LnJlc3VtZVNjaGVkdWxlZD0hMCxwcm9jZXNzLm5leHRUaWNrKCRlLGZ0LEZ0KSl9KHRoaXMsZnQpKSxmdC5wYXVzZWQ9ITEsdGhpc30saGUucHJvdG90eXBlLnBhdXNl''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIFkoImNhbGwgcGF1c2UgZmxvd2luZz0laiIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKFkoInBhdXNlIiksdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPSExLHRoaXMuZW1pdCgicGF1''@;'; put 'put ''c2UiKSksdGhpcy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9ITAsdGhpc30saGUucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oZnQpe3ZhciBGdD10aGlzLG9uPXRoaXMuX3JlYWRhYmxlU3RhdGUsX3Q9ITE7Zm9yKHZhciBudCBpbiBmdC5vbigiZW5kIixmdW5jdGlvbigpe2lmKFkoIndyYXBwZWQg''@;'; put 'put ''ZW5kIiksb24uZGVjb2RlciYmIW9uLmVuZGVkKXt2YXIgb3Q9b24uZGVjb2Rlci5lbmQoKTtvdCYmb3QubGVuZ3RoJiZGdC5wdXNoKG90KX1GdC5wdXNoKG51bGwpfSksZnQub24oImRhdGEiLGZ1bmN0aW9uKG90KXtZKCJ3cmFwcGVkIGRhdGEiKSxvbi5kZWNvZGVyJiYob3Q9b24uZGVjb2Rl''@;'; put 'put ''ci53cml0ZShvdCkpLG9uLm9iamVjdE1vZGUmJm51bGw9PW90fHwhKG9uLm9iamVjdE1vZGV8fG90JiZvdC5sZW5ndGgpfHxGdC5wdXNoKG90KXx8KF90PSEwLGZ0LnBhdXNlKCkpfSksZnQpdm9pZCAwPT09dGhpc1tudF0mJiJmdW5jdGlvbiI9PXR5cGVvZiBmdFtudF0mJih0aGlzW250XT1m''@;'; put 'put ''dW5jdGlvbihSdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZ0W1J0XS5hcHBseShmdCxhcmd1bWVudHMpfX0obnQpKTtmb3IodmFyIHFlPTA7cWU8SWUubGVuZ3RoO3FlKyspZnQub24oSWVbcWVdLHRoaXMuZW1pdC5iaW5kKHRoaXMsSWVbcWVdKSk7cmV0dXJuIHRoaXMuX3JlYWQ9ZnVu''@;'; put 'put ''Y3Rpb24ob3Qpe1koIndyYXBwZWQgX3JlYWQiLG90KSxfdCYmKF90PSExLGZ0LnJlc3VtZSgpKX0sdGhpc30sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGhlLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09QWUmJihBZT1MKDEz''@;'; put 'put ''ODcyKSksQWUodGhpcyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaGUucHJvdG90eXBlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGhlLnByb3RvdHlwZSwicmVhZGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaGUucHJvdG90eXBlLCJyZWFk''@;'; put 'put ''YWJsZUZsb3dpbmciLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbihGdCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1GdCl9fSksaGUuX2Zyb21MaXN0''@;'; put 'put ''PXl0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoZS5wcm90b3R5cGUsInJlYWRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGhlLmZyb209ZnVuY3Rp''@;'; put 'put ''b24oZnQsRnQpe3JldHVybiB2b2lkIDA9PT1rZSYmKGtlPUwoNDc0MTIpKSxrZShoZSxmdCxGdCl9KX0sNjAyNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1pZTt2YXIgZ2U9TCg3MDg5MSkucSxCPWdlLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEU9Z2UuRVJSX01V''@;'; put 'put ''TFRJUExFX0NBTExCQUNLLE1lPWdlLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsVT1nZS5FUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAsUT1MKDQxMzM5KTtmdW5jdGlvbiBaKFcsTil7dmFyIGVlPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2VlLnRyYW5zZm9ybWluZz0hMTt2''@;'; put 'put ''YXIgcT1lZS53cml0ZWNiO2lmKG51bGw9PT1xKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcgRSk7ZWUud3JpdGVjaHVuaz1udWxsLGVlLndyaXRlY2I9bnVsbCxudWxsIT1OJiZ0aGlzLnB1c2goTikscShXKTt2YXIgSj10aGlzLl9yZWFkYWJsZVN0YXRlO0oucmVhZGluZz0hMSwoSi5u''@;'; put 'put ''ZWVkUmVhZGFibGV8fEoubGVuZ3RoPEouaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoSi5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBpZShXKXtpZighKHRoaXMgaW5zdGFuY2VvZiBpZSkpcmV0dXJuIG5ldyBpZShXKTtRLmNhbGwodGhpcyxXKSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0''@;'; put 'put ''ZXJUcmFuc2Zvcm06Wi5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5''@;'; put 'put ''bmM9ITEsVyYmKCJmdW5jdGlvbiI9PXR5cGVvZiBXLnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT1XLnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIFcuZmx1c2gmJih0aGlzLl9mbHVzaD1XLmZsdXNoKSksdGhpcy5vbigicHJlZmluaXNoIixsZSl9ZnVuY3Rpb24gbGUoKXt2YXIg''@;'; put 'put ''Vz10aGlzOyJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mbHVzaHx8dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ/WSh0aGlzLG51bGwsbnVsbCk6dGhpcy5fZmx1c2goZnVuY3Rpb24oTixlZSl7WShXLE4sZWUpfSl9ZnVuY3Rpb24gWShXLE4sZWUpe2lmKE4pcmV0dXJuIFcuZW1pdCgi''@;'; put 'put ''ZXJyb3IiLE4pO2lmKG51bGwhPWVlJiZXLnB1c2goZWUpLFcuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBVO2lmKFcuX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZyl0aHJvdyBuZXcgTWU7cmV0dXJuIFcucHVzaChudWxsKX1MKDgzODk0KShpZSxRKSxpZS5wcm90b3R5cGUu''@;'; put 'put ''cHVzaD1mdW5jdGlvbihXLE4pe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLFEucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLFcsTil9LGllLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKFcsTixlZSl7ZWUobmV3IEIoIl90cmFuc2Zvcm0oKSIpKX0s''@;'; put 'put ''aWUucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihXLE4sZWUpe3ZhciBxPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKHEud3JpdGVjYj1lZSxxLndyaXRlY2h1bms9VyxxLndyaXRlZW5jb2Rpbmc9TiwhcS50cmFuc2Zvcm1pbmcpe3ZhciBKPXRoaXMuX3JlYWRhYmxlU3RhdGU7KHEubmVlZFRy''@;'; put 'put ''YW5zZm9ybXx8Si5uZWVkUmVhZGFibGV8fEoubGVuZ3RoPEouaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoSi5oaWdoV2F0ZXJNYXJrKX19LGllLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihXKXt2YXIgTj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09Ti53cml0ZWNodW5rfHxOLnRy''@;'; put 'put ''YW5zZm9ybWluZz9OLm5lZWRUcmFuc2Zvcm09ITA6KE4udHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybShOLndyaXRlY2h1bmssTi53cml0ZWVuY29kaW5nLE4uYWZ0ZXJUcmFuc2Zvcm0pKX0saWUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKFcsTil7US5wcm90b3R5cGUuX2Rl''@;'; put 'put ''c3Ryb3kuY2FsbCh0aGlzLFcsZnVuY3Rpb24oZWUpe04oZWUpfSl9fSwyMDUyMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihndCl7dmFyIHl0PXRoaXM7dGhpcy5uZXh0PW51bGwsdGhpcy5lbnRyeT1udWxsLHRoaXMuZmluaXNoPWZ1bmN0aW9uKCl7IWZ1bmN0aW9uICRl''@;'; put 'put ''KGd0LHl0LHB0KXt2YXIgbXQ9Z3QuZW50cnk7Zm9yKGd0LmVudHJ5PW51bGw7bXQ7KXt2YXIgdnQ9bXQuY2FsbGJhY2s7eXQucGVuZGluZ2NiLS0sdnQocHQpLG10PW10Lm5leHR9eXQuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9Z3R9KHl0LGd0KX19dmFyIEU7WGUuZXhwb3J0cz1FZSxFZS5X''@;'; put 'put ''cml0YWJsZVN0YXRlPUllO3ZhciBUZSxNZT17ZGVwcmVjYXRlOkwoMjM1MzIpfSxVPUwoNDk3MCksUT1MKDkzMTcyKS5CdWZmZXIsWj1nbG9iYWwuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LFk9TCg0MTkyMCksTj1MKDQ3MTAyKS5nZXRIaWdoV2F0ZXJNYXJrLGVlPUwoNzA4OTEpLnEscT1l''@;'; put 'put ''ZS5FUlJfSU5WQUxJRF9BUkdfVFlQRSxKPWVlLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELHNlPWVlLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxhZT1lZS5FUlJfU1RSRUFNX0NBTk5PVF9QSVBFLGZlPWVlLkVSUl9TVFJFQU1fREVTVFJPWUVELGRlPWVlLkVSUl9TVFJFQU1fTlVMTF9WQUxV''@;'; put 'put ''RVMsdmU9ZWUuRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsQWU9ZWUuRVJSX1VOS05PV05fRU5DT0RJTkcsa2U9WS5lcnJvck9yRGVzdHJveTtmdW5jdGlvbiBTZSgpe31mdW5jdGlvbiBJZShndCx5dCxwdCl7RT1FfHxMKDQxMzM5KSwiYm9vbGVhbiIhPXR5cGVvZiBwdCYmKHB0PXl0IGlu''@;'; put 'put ''c3RhbmNlb2YgRSksdGhpcy5vYmplY3RNb2RlPSEhKGd0PWd0fHx7fSkub2JqZWN0TW9kZSxwdCYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhZ3Qud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9Tih0aGlzLGd0LCJ3cml0YWJsZUhpZ2hXYXRlck1h''@;'; put 'put ''cmsiLHB0KSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29kZVN0cmluZ3M9ISghMT09PWd0LmRlY29kZVN0cmluZ3MpLHRoaXMuZGVmYXVs''@;'; put 'put ''dEVuY29kaW5nPWd0LmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24odnQpeyFmdW5jdGlvbiBWKGd0LHl0KXt2''@;'; put 'put ''YXIgcHQ9Z3QuX3dyaXRhYmxlU3RhdGUsbXQ9cHQuc3luYyx2dD1wdC53cml0ZWNiO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB2dCl0aHJvdyBuZXcgc2U7aWYoZnVuY3Rpb24gUChndCl7Z3Qud3JpdGluZz0hMSxndC53cml0ZWNiPW51bGwsZ3QubGVuZ3RoLT1ndC53cml0ZWxlbixndC53cml0''@;'; put 'put ''ZWxlbj0wfShwdCkseXQpIWZ1bmN0aW9uIHgoZ3QseXQscHQsbXQsdnQpey0teXQucGVuZGluZ2NiLHB0Pyhwcm9jZXNzLm5leHRUaWNrKHZ0LG10KSxwcm9jZXNzLm5leHRUaWNrKFBlLGd0LHl0KSxndC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsa2UoZ3QsbXQpKToodnQobXQp''@;'; put 'put ''LGd0Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxrZShndCxtdCksUGUoZ3QseXQpKX0oZ3QscHQsbXQseXQsdnQpO2Vsc2V7dmFyIGZ0PXllKHB0KXx8Z3QuZGVzdHJveWVkOyFmdCYmIXB0LmNvcmtlZCYmIXB0LmJ1ZmZlclByb2Nlc3NpbmcmJnB0LmJ1ZmZlcmVkUmVxdWVzdCYm''@;'; put 'put ''RihndCxwdCksbXQ/cHJvY2Vzcy5uZXh0VGljayhULGd0LHB0LGZ0LHZ0KTpUKGd0LHB0LGZ0LHZ0KX19KHl0LHZ0KX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5w''@;'; put 'put ''ZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSExIT09Z3QuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFndC5hdXRvRGVzdHJveSx0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTAsdGhpcy5jb3JrZWRSZXF1ZXN0''@;'; put 'put ''c0ZyZWU9bmV3IEIodGhpcyl9ZnVuY3Rpb24gRWUoZ3Qpe3ZhciB5dD10aGlzIGluc3RhbmNlb2YoRT1FfHxMKDQxMzM5KSk7aWYoIXl0JiYhVGUuY2FsbChFZSx0aGlzKSlyZXR1cm4gbmV3IEVlKGd0KTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBJZShndCx0aGlzLHl0KSx0aGlzLndyaXRh''@;'; put 'put ''YmxlPSEwLGd0JiYoImZ1bmN0aW9uIj09dHlwZW9mIGd0LndyaXRlJiYodGhpcy5fd3JpdGU9Z3Qud3JpdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBndC53cml0ZXYmJih0aGlzLl93cml0ZXY9Z3Qud3JpdGV2KSwiZnVuY3Rpb24iPT10eXBlb2YgZ3QuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9''@;'; put 'put ''Z3QuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIGd0LmZpbmFsJiYodGhpcy5fZmluYWw9Z3QuZmluYWwpKSxVLmNhbGwodGhpcyl9ZnVuY3Rpb24gdGUoZ3QseXQscHQsbXQsdnQsZnQsRnQpe3l0LndyaXRlbGVuPW10LHl0LndyaXRlY2I9RnQseXQud3JpdGluZz0hMCx5dC5zeW5jPSEw''@;'; put 'put ''LHl0LmRlc3Ryb3llZD95dC5vbndyaXRlKG5ldyBmZSgid3JpdGUiKSk6cHQ/Z3QuX3dyaXRldih2dCx5dC5vbndyaXRlKTpndC5fd3JpdGUodnQsZnQseXQub253cml0ZSkseXQuc3luYz0hMX1mdW5jdGlvbiBUKGd0LHl0LHB0LG10KXtwdHx8ZnVuY3Rpb24gUyhndCx5dCl7MD09PXl0Lmxl''@;'; put 'put ''bmd0aCYmeXQubmVlZERyYWluJiYoeXQubmVlZERyYWluPSExLGd0LmVtaXQoImRyYWluIikpfShndCx5dCkseXQucGVuZGluZ2NiLS0sbXQoKSxQZShndCx5dCl9ZnVuY3Rpb24gRihndCx5dCl7eXQuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgcHQ9eXQuYnVmZmVyZWRSZXF1ZXN0O2lmKGd0''@;'; put 'put ''Ll93cml0ZXYmJnB0JiZwdC5uZXh0KXt2YXIgdnQ9bmV3IEFycmF5KHl0LmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxmdD15dC5jb3JrZWRSZXF1ZXN0c0ZyZWU7ZnQuZW50cnk9cHQ7Zm9yKHZhciBGdD0wLG9uPSEwO3B0Oyl2dFtGdF09cHQscHQuaXNCdWZ8fChvbj0hMSkscHQ9cHQubmV4dCxG''@;'; put 'put ''dCs9MTt2dC5hbGxCdWZmZXJzPW9uLHRlKGd0LHl0LCEwLHl0Lmxlbmd0aCx2dCwiIixmdC5maW5pc2gpLHl0LnBlbmRpbmdjYisrLHl0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxmdC5uZXh0Pyh5dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9ZnQubmV4dCxmdC5uZXh0PW51bGwpOnl0LmNvcmtl''@;'; put 'put ''ZFJlcXVlc3RzRnJlZT1uZXcgQih5dCkseXQuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MH1lbHNle2Zvcig7cHQ7KXt2YXIgX3Q9cHQuY2h1bms7aWYodGUoZ3QseXQsITEseXQub2JqZWN0TW9kZT8xOl90Lmxlbmd0aCxfdCxwdC5lbmNvZGluZyxwdC5jYWxsYmFjaykscHQ9cHQubmV4dCx5dC5i''@;'; put 'put ''dWZmZXJlZFJlcXVlc3RDb3VudC0tLHl0LndyaXRpbmcpYnJlYWt9bnVsbD09PXB0JiYoeXQubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX15dC5idWZmZXJlZFJlcXVlc3Q9cHQseXQuYnVmZmVyUHJvY2Vzc2luZz0hMX1mdW5jdGlvbiB5ZShndCl7cmV0dXJuIGd0LmVuZGluZyYmMD09PWd0''@;'; put 'put ''Lmxlbmd0aCYmbnVsbD09PWd0LmJ1ZmZlcmVkUmVxdWVzdCYmIWd0LmZpbmlzaGVkJiYhZ3Qud3JpdGluZ31mdW5jdGlvbiBDZShndCx5dCl7Z3QuX2ZpbmFsKGZ1bmN0aW9uKHB0KXt5dC5wZW5kaW5nY2ItLSxwdCYma2UoZ3QscHQpLHl0LnByZWZpbmlzaGVkPSEwLGd0LmVtaXQoInByZWZp''@;'; put 'put ''bmlzaCIpLFBlKGd0LHl0KX0pfWZ1bmN0aW9uIFBlKGd0LHl0KXt2YXIgcHQ9eWUoeXQpO2lmKHB0JiYoZnVuY3Rpb24gRGUoZ3QseXQpeyF5dC5wcmVmaW5pc2hlZCYmIXl0LmZpbmFsQ2FsbGVkJiYoImZ1bmN0aW9uIiE9dHlwZW9mIGd0Ll9maW5hbHx8eXQuZGVzdHJveWVkPyh5dC5wcmVm''@;'; put 'put ''aW5pc2hlZD0hMCxndC5lbWl0KCJwcmVmaW5pc2giKSk6KHl0LnBlbmRpbmdjYisrLHl0LmZpbmFsQ2FsbGVkPSEwLHByb2Nlc3MubmV4dFRpY2soQ2UsZ3QseXQpKSl9KGd0LHl0KSwwPT09eXQucGVuZGluZ2NiJiYoeXQuZmluaXNoZWQ9ITAsZ3QuZW1pdCgiZmluaXNoIikseXQuYXV0b0Rl''@;'; put 'put ''c3Ryb3kpKSl7dmFyIG10PWd0Ll9yZWFkYWJsZVN0YXRlOyghbXR8fG10LmF1dG9EZXN0cm95JiZtdC5lbmRFbWl0dGVkKSYmZ3QuZGVzdHJveSgpfXJldHVybiBwdH1MKDgzODk0KShFZSxVKSxJZS5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB5dD10aGlzLmJ1ZmZl''@;'; put 'put ''cmVkUmVxdWVzdCxwdD1bXTt5dDspcHQucHVzaCh5dCkseXQ9eXQubmV4dDtyZXR1cm4gcHR9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShJZS5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpNZS5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIo''@;'; put 'put ''KX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2goZ3Qpe319KCksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmhhc0luc3RhbmNlJiYiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0/KFRlPUZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFZSxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKHl0KXtyZXR1cm4hIVRl''@;'; put 'put ''LmNhbGwodGhpcyx5dCl8fHRoaXM9PT1FZSYmeXQmJnl0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgSWV9fSkpOlRlPWZ1bmN0aW9uKHl0KXtyZXR1cm4geXQgaW5zdGFuY2VvZiB0aGlzfSxFZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe2tlKHRoaXMsbmV3IGFlKX0sRWUucHJvdG90''@;'; put 'put ''eXBlLndyaXRlPWZ1bmN0aW9uKGd0LHl0LHB0KXt2YXIgbXQ9dGhpcy5fd3JpdGFibGVTdGF0ZSx2dD0hMSxmdD0hbXQub2JqZWN0TW9kZSYmZnVuY3Rpb24gbGUoZ3Qpe3JldHVybiBRLmlzQnVmZmVyKGd0KXx8Z3QgaW5zdGFuY2VvZiBafShndCk7cmV0dXJuIGZ0JiYhUS5pc0J1ZmZlcihn''@;'; put 'put ''dCkmJihndD1mdW5jdGlvbiBpZShndCl7cmV0dXJuIFEuZnJvbShndCl9KGd0KSksImZ1bmN0aW9uIj09dHlwZW9mIHl0JiYocHQ9eXQseXQ9bnVsbCksZnQ/eXQ9ImJ1ZmZlciI6eXR8fCh5dD1tdC5kZWZhdWx0RW5jb2RpbmcpLCJmdW5jdGlvbiIhPXR5cGVvZiBwdCYmKHB0PVNlKSxtdC5l''@;'; put 'put ''bmRpbmc/ZnVuY3Rpb24gaGUoZ3QseXQpe3ZhciBwdD1uZXcgdmU7a2UoZ3QscHQpLHByb2Nlc3MubmV4dFRpY2soeXQscHQpfSh0aGlzLHB0KTooZnR8fGZ1bmN0aW9uIE8oZ3QseXQscHQsbXQpe3ZhciB2dDtyZXR1cm4gbnVsbD09PXB0P3Z0PW5ldyBkZToic3RyaW5nIiE9dHlwZW9mIHB0''@;'; put 'put ''JiYheXQub2JqZWN0TW9kZSYmKHZ0PW5ldyBxKCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiXSxwdCkpLCF2dHx8KGtlKGd0LHZ0KSxwcm9jZXNzLm5leHRUaWNrKG10LHZ0KSwhMSl9KHRoaXMsbXQsZ3QscHQpKSYmKG10LnBlbmRpbmdjYisrLHZ0PWZ1bmN0aW9uIG5lKGd0LHl0LHB0LG10''@;'; put 'put ''LHZ0LGZ0KXtpZighcHQpe3ZhciBGdD1mdW5jdGlvbiB6KGd0LHl0LHB0KXtyZXR1cm4hZ3Qub2JqZWN0TW9kZSYmITEhPT1ndC5kZWNvZGVTdHJpbmdzJiYic3RyaW5nIj09dHlwZW9mIHl0JiYoeXQ9US5mcm9tKHl0LHB0KSkseXR9KHl0LG10LHZ0KTttdCE9PUZ0JiYocHQ9ITAsdnQ9ImJ1''@;'; put 'put ''ZmZlciIsbXQ9RnQpfXZhciBvbj15dC5vYmplY3RNb2RlPzE6bXQubGVuZ3RoO3l0Lmxlbmd0aCs9b247dmFyIF90PXl0Lmxlbmd0aDx5dC5oaWdoV2F0ZXJNYXJrO2lmKF90fHwoeXQubmVlZERyYWluPSEwKSx5dC53cml0aW5nfHx5dC5jb3JrZWQpe3ZhciBudD15dC5sYXN0QnVmZmVyZWRS''@;'; put 'put ''ZXF1ZXN0O3l0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOm10LGVuY29kaW5nOnZ0LGlzQnVmOnB0LGNhbGxiYWNrOmZ0LG5leHQ6bnVsbH0sbnQ/bnQubmV4dD15dC5sYXN0QnVmZmVyZWRSZXF1ZXN0Onl0LmJ1ZmZlcmVkUmVxdWVzdD15dC5sYXN0QnVmZmVyZWRSZXF1ZXN0LHl0LmJ1''@;'; put 'put ''ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgdGUoZ3QseXQsITEsb24sbXQsdnQsZnQpO3JldHVybiBfdH0odGhpcyxtdCxmdCxndCx5dCxwdCkpLHZ0fSxFZS5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LEVlLnByb3RvdHlwZS51bmNv''@;'; put 'put ''cms9ZnVuY3Rpb24oKXt2YXIgZ3Q9dGhpcy5fd3JpdGFibGVTdGF0ZTtndC5jb3JrZWQmJihndC5jb3JrZWQtLSwhZ3Qud3JpdGluZyYmIWd0LmNvcmtlZCYmIWd0LmJ1ZmZlclByb2Nlc3NpbmcmJmd0LmJ1ZmZlcmVkUmVxdWVzdCYmRih0aGlzLGd0KSl9LEVlLnByb3RvdHlwZS5zZXREZWZh''@;'; put 'put ''dWx0RW5jb2Rpbmc9ZnVuY3Rpb24oeXQpe2lmKCJzdHJpbmciPT10eXBlb2YgeXQmJih5dD15dC50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5p''@;'; put 'put ''bmRleE9mKCh5dCsiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBBZSh5dCk7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPXl0LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFZS5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJs''@;'; put 'put ''ZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRWUucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksRWUucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihndCx5dCxwdCl7cHQobmV3IEooIl93cml0ZSgpIikpfSxFZS5wcm90b3R5cGUuX3dyaXRldj1udWxsLEVlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24o''@;'; put 'put ''Z3QseXQscHQpe3ZhciBtdD10aGlzLl93cml0YWJsZVN0YXRlO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBndD8ocHQ9Z3QsZ3Q9bnVsbCx5dD1udWxsKToiZnVuY3Rpb24iPT10eXBlb2YgeXQmJihwdD15dCx5dD1udWxsKSxudWxsIT1ndCYmdGhpcy53cml0ZShndCx5dCksbXQuY29ya2Vk''@;'; put 'put ''JiYobXQuY29ya2VkPTEsdGhpcy51bmNvcmsoKSksbXQuZW5kaW5nfHxmdW5jdGlvbiBRZShndCx5dCxwdCl7eXQuZW5kaW5nPSEwLFBlKGd0LHl0KSxwdCYmKHl0LmZpbmlzaGVkP3Byb2Nlc3MubmV4dFRpY2socHQpOmd0Lm9uY2UoImZpbmlzaCIscHQpKSx5dC5lbmRlZD0hMCxndC53cml0''@;'; put 'put ''YWJsZT0hMX0odGhpcyxtdCxwdCksdGhpc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KEVlLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoRWUucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHl0KXshdGhpcy5fd3JpdGFibGVTdGF0ZXx8''@;'; put 'put ''KHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPXl0KX19KSxFZS5wcm90b3R5cGUuZGVzdHJveT1ZLmRlc3Ryb3ksRWUucHJvdG90eXBlLl91bmRlc3Ryb3k9WS51bmRlc3Ryb3ksRWUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGd0LHl0KXt5dChndCl9fSwxMzg3MjooWGUsSmUs''@;'; put 'put ''TCk9PnsidXNlIHN0cmljdCI7dmFyIGdlO2Z1bmN0aW9uIEIoZmUsZGUsdmUpe3JldHVybiBkZSBpbiBmZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZmUsZGUse3ZhbHVlOnZlLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZmVbZGVdPXZlLGZlfXZhciBFPUwo''@;'; put 'put ''Njc1NDIpLE1lPVN5bWJvbCgibGFzdFJlc29sdmUiKSxVPVN5bWJvbCgibGFzdFJlamVjdCIpLFE9U3ltYm9sKCJlcnJvciIpLFo9U3ltYm9sKCJlbmRlZCIpLGllPVN5bWJvbCgibGFzdFByb21pc2UiKSxsZT1TeW1ib2woImhhbmRsZVByb21pc2UiKSxZPVN5bWJvbCgic3RyZWFtIik7ZnVu''@;'; put 'put ''Y3Rpb24gVyhmZSxkZSl7cmV0dXJue3ZhbHVlOmZlLGRvbmU6ZGV9fWZ1bmN0aW9uIE4oZmUpe3ZhciBkZT1mZVtNZV07aWYobnVsbCE9PWRlKXt2YXIgdmU9ZmVbWV0ucmVhZCgpO251bGwhPT12ZSYmKGZlW2llXT1udWxsLGZlW01lXT1udWxsLGZlW1VdPW51bGwsZGUoVyh2ZSwhMSkpKX19''@;'; put 'put ''ZnVuY3Rpb24gZWUoZmUpe3Byb2Nlc3MubmV4dFRpY2soTixmZSl9dmFyIEo9T2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmN0aW9uKCl7fSksc2U9T2JqZWN0LnNldFByb3RvdHlwZU9mKChCKGdlPXtnZXQgc3RyZWFtKCl7cmV0dXJuIHRoaXNbWV19LG5leHQ6ZnVuY3Rpb24oKXt2YXIgZGU9''@;'; put 'put ''dGhpcyx2ZT10aGlzW1FdO2lmKG51bGwhPT12ZSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodmUpO2lmKHRoaXNbWl0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShXKHZvaWQgMCwhMCkpO2lmKHRoaXNbWV0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihJZSxUZSl7cHJvY2Vz''@;'; put 'put ''cy5uZXh0VGljayhmdW5jdGlvbigpe2RlW1FdP1RlKGRlW1FdKTpJZShXKHZvaWQgMCwhMCkpfSl9KTt2YXIga2UsQWU9dGhpc1tpZV07aWYoQWUpa2U9bmV3IFByb21pc2UoZnVuY3Rpb24gcShmZSxkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlLEFlKXtmZS50aGVuKGZ1bmN0aW9uKCl7ZGVbWl0/''@;'; put 'put ''dmUoVyh2b2lkIDAsITApKTpkZVtsZV0odmUsQWUpfSxBZSl9fShBZSx0aGlzKSk7ZWxzZXt2YXIgU2U9dGhpc1tZXS5yZWFkKCk7aWYobnVsbCE9PVNlKXJldHVybiBQcm9taXNlLnJlc29sdmUoVyhTZSwhMSkpO2tlPW5ldyBQcm9taXNlKHRoaXNbbGVdKX1yZXR1cm4gdGhpc1tpZV09a2Us''@;'; put 'put ''a2V9fSxTeW1ib2wuYXN5bmNJdGVyYXRvcixmdW5jdGlvbigpe3JldHVybiB0aGlzfSksQihnZSwicmV0dXJuIixmdW5jdGlvbigpe3ZhciBkZT10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih2ZSxBZSl7ZGVbWV0uZGVzdHJveShudWxsLGZ1bmN0aW9uKGtlKXtrZT9BZShrZSk6''@;'; put 'put ''dmUoVyh2b2lkIDAsITApKX0pfSl9KSxnZSksSik7WGUuZXhwb3J0cz1mdW5jdGlvbihkZSl7dmFyIHZlLEFlPU9iamVjdC5jcmVhdGUoc2UsKEIodmU9e30sWSx7dmFsdWU6ZGUsd3JpdGFibGU6ITB9KSxCKHZlLE1lLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksQih2ZSxVLHt2YWx1ZTpu''@;'; put 'put ''dWxsLHdyaXRhYmxlOiEwfSksQih2ZSxRLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksQih2ZSxaLHt2YWx1ZTpkZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSksQih2ZSxsZSx7dmFsdWU6ZnVuY3Rpb24oU2UsSWUpe3ZhciBUZT1BZVtZXS5yZWFkKCk7VGU/KEFl''@;'; put 'put ''W2llXT1udWxsLEFlW01lXT1udWxsLEFlW1VdPW51bGwsU2UoVyhUZSwhMSkpKTooQWVbTWVdPVNlLEFlW1VdPUllKX0sd3JpdGFibGU6ITB9KSx2ZSkpO3JldHVybiBBZVtpZV09bnVsbCxFKGRlLGZ1bmN0aW9uKGtlKXtpZihrZSYmIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiE9PWtl''@;'; put 'put ''LmNvZGUpe3ZhciBTZT1BZVtVXTtyZXR1cm4gbnVsbCE9PVNlJiYoQWVbaWVdPW51bGwsQWVbTWVdPW51bGwsQWVbVV09bnVsbCxTZShrZSkpLHZvaWQoQWVbUV09a2UpfXZhciBJZT1BZVtNZV07bnVsbCE9PUllJiYoQWVbaWVdPW51bGwsQWVbTWVdPW51bGwsQWVbVV09bnVsbCxJZShXKHZv''@;'; put 'put ''aWQgMCwhMCkpKSxBZVtaXT0hMH0pLGRlLm9uKCJyZWFkYWJsZSIsZWUuYmluZChudWxsLEFlKSksQWV9fSwyNTAxOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZ2UoZWUscSl7dmFyIEo9T2JqZWN0LmtleXMoZWUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMp''@;'; put 'put ''e3ZhciBzZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGVlKTtxJiYoc2U9c2UuZmlsdGVyKGZ1bmN0aW9uKGFlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlZSxhZSkuZW51bWVyYWJsZX0pKSxKLnB1c2guYXBwbHkoSixzZSl9cmV0dXJuIEp9ZnVuY3Rp''@;'; put 'put ''b24gRShlZSxxLEope3JldHVybiBxIGluIGVlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSxxLHt2YWx1ZTpKLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZWVbcV09SixlZX1mdW5jdGlvbiBVKGVlLHEpe2Zvcih2YXIgSj0wO0o8cS5sZW5ndGg7SisrKXt2''@;'; put 'put ''YXIgc2U9cVtKXTtzZS5lbnVtZXJhYmxlPXNlLmVudW1lcmFibGV8fCExLHNlLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gc2UmJihzZS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLHNlLmtleSxzZSl9fXZhciBpZT1MKDkzMTcyKS5CdWZmZXIsWT1MKDUyMzYxKS5p''@;'; put 'put ''bnNwZWN0LFc9WSYmWS5jdXN0b218fCJpbnNwZWN0IjtmdW5jdGlvbiBOKGVlLHEsSil7aWUucHJvdG90eXBlLmNvcHkuY2FsbChlZSxxLEopfVhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlZSgpeyhmdW5jdGlvbiBNZShlZSxxKXtpZighKGVlIGluc3RhbmNlb2YgcSkpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGVlKSx0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiBmdW5jdGlvbiBRKGVlLHEsSil7cSYmVShlZS5wcm90b3R5cGUscSksSiYmVShlZSxKKX0o''@;'; put 'put ''ZWUsW3trZXk6InB1c2giLHZhbHVlOmZ1bmN0aW9uKEope3ZhciBzZT17ZGF0YTpKLG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1zZTp0aGlzLmhlYWQ9c2UsdGhpcy50YWlsPXNlLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJ1bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbihK''@;'; put 'put ''KXt2YXIgc2U9e2RhdGE6SixuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPXNlKSx0aGlzLmhlYWQ9c2UsKyt0aGlzLmxlbmd0aH19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7dmFyIEo9dGhpcy5oZWFkLmRhdGE7''@;'; put 'put ''cmV0dXJuIHRoaXMuaGVhZD0xPT09dGhpcy5sZW5ndGg/dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCxKfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfX0se2tleToiam9pbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oSil7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgc2U9dGhpcy5oZWFkLGFlPSIiK3NlLmRhdGE7c2U9c2UubmV4dDspYWUrPUorc2UuZGF0YTtyZXR1cm4gYWV9fSx7a2V5OiJjb25jYXQiLHZhbHVlOmZ1bmN0aW9uKEope2lmKDA9PT10aGlzLmxl''@;'; put 'put ''bmd0aClyZXR1cm4gaWUuYWxsb2MoMCk7Zm9yKHZhciBzZT1pZS5hbGxvY1Vuc2FmZShKPj4+MCksYWU9dGhpcy5oZWFkLGZlPTA7YWU7KU4oYWUuZGF0YSxzZSxmZSksZmUrPWFlLmRhdGEubGVuZ3RoLGFlPWFlLm5leHQ7cmV0dXJuIHNlfX0se2tleToiY29uc3VtZSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oSixzZSl7dmFyIGFlO3JldHVybiBKPHRoaXMuaGVhZC5kYXRhLmxlbmd0aD8oYWU9dGhpcy5oZWFkLmRhdGEuc2xpY2UoMCxKKSx0aGlzLmhlYWQuZGF0YT10aGlzLmhlYWQuZGF0YS5zbGljZShKKSk6YWU9Sj09PXRoaXMuaGVhZC5kYXRhLmxlbmd0aD90aGlzLnNoaWZ0KCk6c2U/dGhp''@;'; put 'put ''cy5fZ2V0U3RyaW5nKEopOnRoaXMuX2dldEJ1ZmZlcihKKSxhZX19LHtrZXk6ImZpcnN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6Il9nZXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKEope3ZhciBzZT10aGlzLmhlYWQsYWU9MSxmZT1zZS5kYXRhO2Zv''@;'; put 'put ''cihKLT1mZS5sZW5ndGg7c2U9c2UubmV4dDspe3ZhciBkZT1zZS5kYXRhLHZlPUo+ZGUubGVuZ3RoP2RlLmxlbmd0aDpKO2lmKGZlKz12ZT09PWRlLmxlbmd0aD9kZTpkZS5zbGljZSgwLEopLDA9PShKLT12ZSkpe3ZlPT09ZGUubGVuZ3RoPygrK2FlLHRoaXMuaGVhZD1zZS5uZXh0P3NlLm5l''@;'; put 'put ''eHQ6dGhpcy50YWlsPW51bGwpOih0aGlzLmhlYWQ9c2Usc2UuZGF0YT1kZS5zbGljZSh2ZSkpO2JyZWFrfSsrYWV9cmV0dXJuIHRoaXMubGVuZ3RoLT1hZSxmZX19LHtrZXk6Il9nZXRCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKEope3ZhciBzZT1pZS5hbGxvY1Vuc2FmZShKKSxhZT10aGlzLmhl''@;'; put 'put ''YWQsZmU9MTtmb3IoYWUuZGF0YS5jb3B5KHNlKSxKLT1hZS5kYXRhLmxlbmd0aDthZT1hZS5uZXh0Oyl7dmFyIGRlPWFlLmRhdGEsdmU9Sj5kZS5sZW5ndGg/ZGUubGVuZ3RoOko7aWYoZGUuY29weShzZSxzZS5sZW5ndGgtSiwwLHZlKSwwPT0oSi09dmUpKXt2ZT09PWRlLmxlbmd0aD8oKytm''@;'; put 'put ''ZSx0aGlzLmhlYWQ9YWUubmV4dD9hZS5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPWFlLGFlLmRhdGE9ZGUuc2xpY2UodmUpKTticmVha30rK2ZlfXJldHVybiB0aGlzLmxlbmd0aC09ZmUsc2V9fSx7a2V5OlcsdmFsdWU6ZnVuY3Rpb24oSixzZSl7cmV0dXJuIFkodGhpcyxmdW5j''@;'; put 'put ''dGlvbiBCKGVlKXtmb3IodmFyIHE9MTtxPGFyZ3VtZW50cy5sZW5ndGg7cSsrKXt2YXIgSj1udWxsIT1hcmd1bWVudHNbcV0/YXJndW1lbnRzW3FdOnt9O3ElMj9nZShPYmplY3QoSiksITApLmZvckVhY2goZnVuY3Rpb24oc2Upe0UoZWUsc2UsSltzZV0pfSk6T2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZWUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoSikpOmdlKE9iamVjdChKKSkuZm9yRWFjaChmdW5jdGlvbihzZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLHNlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl''@;'; put 'put ''c2NyaXB0b3IoSixzZSkpfSl9cmV0dXJuIGVlfSh7fSxzZSx7ZGVwdGg6MCxjdXN0b21JbnNwZWN0OiExfSkpfX1dKSxlZX0oKX0sNDE5MjA6WGU9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gTChVLFEpe0UoVSxRKSxnZShVKX1mdW5jdGlvbiBnZShVKXtVLl93cml0YWJsZVN0YXRlJiYhVS5f''@;'; put 'put ''d3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2V8fFUuX3JlYWRhYmxlU3RhdGUmJiFVLl9yZWFkYWJsZVN0YXRlLmVtaXRDbG9zZXx8VS5lbWl0KCJjbG9zZSIpfWZ1bmN0aW9uIEUoVSxRKXtVLmVtaXQoImVycm9yIixRKX1YZS5leHBvcnRzPXtkZXN0cm95OmZ1bmN0aW9uIEplKFUsUSl7dmFyIFo9''@;'; put 'put ''dGhpcztyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPyhRP1EoVSk6VSYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxwcm9jZXNzLm5leHRUaWNrKEUsdGhpcyxVKSk6cHJvY2Vzcy5uZXh0VGljayhFLHRoaXMsVSkpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95''@;'; put 'put ''ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveShVfHxudWxsLGZ1bmN0aW9uKFkpeyFRJiZZP1ouX3dyaXRhYmxlU3RhdGU/Wi5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ/cHJvY2Vzcy5uZXh0VGlj''@;'; put 'put ''ayhnZSxaKTooWi5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAscHJvY2Vzcy5uZXh0VGljayhMLFosWSkpOnByb2Nlc3MubmV4dFRpY2soTCxaLFkpOlE/KHByb2Nlc3MubmV4dFRpY2soZ2UsWiksUShZKSk6cHJvY2Vzcy5uZXh0VGljayhnZSxaKX0pLHRoaXMpfSx1bmRlc3Ryb3k6''@;'; put 'put ''ZnVuY3Rpb24gQigpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9ITEpLHRo''@;'; put 'put ''aXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX0sZXJyb3JPckRlc3Ryb3k6ZnVuY3Rpb24gTWUoVSxRKXt2YXIgWj1VLl9yZWFkYWJsZVN0YXRlLGllPVUuX3dyaXRhYmxlU3RhdGU7WiYm''@;'; put 'put ''Wi5hdXRvRGVzdHJveXx8aWUmJmllLmF1dG9EZXN0cm95P1UuZGVzdHJveShRKTpVLmVtaXQoImVycm9yIixRKX19fSw2NzU0MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNzA4OTEpLnEuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U7ZnVuY3Rpb24gRSgpe31YZS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uIFUoUSxaLGllKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgWilyZXR1cm4gVShRLG51bGwsWik7Wnx8KFo9e30pLGllPWZ1bmN0aW9uIEIoUSl7dmFyIFo9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIVope1o9ITA7Zm9yKHZhciBpZT1hcmd1bWVudHMubGVuZ3RoLGxlPW5l''@;'; put 'put ''dyBBcnJheShpZSksWT0wO1k8aWU7WSsrKWxlW1ldPWFyZ3VtZW50c1tZXTtRLmFwcGx5KHRoaXMsbGUpfX19KGllfHxFKTt2YXIgbGU9Wi5yZWFkYWJsZXx8ITEhPT1aLnJlYWRhYmxlJiZRLnJlYWRhYmxlLFk9Wi53cml0YWJsZXx8ITEhPT1aLndyaXRhYmxlJiZRLndyaXRhYmxlLFc9ZnVu''@;'; put 'put ''Y3Rpb24oKXtRLndyaXRhYmxlfHxlZSgpfSxOPVEuX3dyaXRhYmxlU3RhdGUmJlEuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsZWU9ZnVuY3Rpb24oKXtZPSExLE49ITAsbGV8fGllLmNhbGwoUSl9LHE9US5fcmVhZGFibGVTdGF0ZSYmUS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLEo9ZnVu''@;'; put 'put ''Y3Rpb24oKXtsZT0hMSxxPSEwLFl8fGllLmNhbGwoUSl9LHNlPWZ1bmN0aW9uKHZlKXtpZS5jYWxsKFEsdmUpfSxhZT1mdW5jdGlvbigpe3ZhciB2ZTtyZXR1cm4gbGUmJiFxPygoIVEuX3JlYWRhYmxlU3RhdGV8fCFRLl9yZWFkYWJsZVN0YXRlLmVuZGVkKSYmKHZlPW5ldyBnZSksaWUuY2Fs''@;'; put 'put ''bChRLHZlKSk6WSYmIU4/KCghUS5fd3JpdGFibGVTdGF0ZXx8IVEuX3dyaXRhYmxlU3RhdGUuZW5kZWQpJiYodmU9bmV3IGdlKSxpZS5jYWxsKFEsdmUpKTp2b2lkIDB9LGZlPWZ1bmN0aW9uKCl7US5yZXEub24oImZpbmlzaCIsZWUpfTtyZXR1cm4gZnVuY3Rpb24gTWUoUSl7cmV0dXJuIFEu''@;'; put 'put ''c2V0SGVhZGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgUS5hYm9ydH0oUSk/KFEub24oImNvbXBsZXRlIixlZSksUS5vbigiYWJvcnQiLGFlKSxRLnJlcT9mZSgpOlEub24oInJlcXVlc3QiLGZlKSk6WSYmIVEuX3dyaXRhYmxlU3RhdGUmJihRLm9uKCJlbmQiLFcpLFEub24oImNsb3NlIixXKSks''@;'; put 'put ''US5vbigiZW5kIixKKSxRLm9uKCJmaW5pc2giLGVlKSwhMSE9PVouZXJyb3ImJlEub24oImVycm9yIixzZSksUS5vbigiY2xvc2UiLGFlKSxmdW5jdGlvbigpe1EucmVtb3ZlTGlzdGVuZXIoImNvbXBsZXRlIixlZSksUS5yZW1vdmVMaXN0ZW5lcigiYWJvcnQiLGFlKSxRLnJlbW92ZUxpc3Rl''@;'; put 'put ''bmVyKCJyZXF1ZXN0IixmZSksUS5yZXEmJlEucmVxLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLGVlKSxRLnJlbW92ZUxpc3RlbmVyKCJlbmQiLFcpLFEucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixXKSxRLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLGVlKSxRLnJlbW92ZUxpc3RlbmVyKCJlbmQi''@;'; put 'put ''LEopLFEucmVtb3ZlTGlzdGVuZXIoImVycm9yIixzZSksUS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGFlKX19fSw0NzQxMjpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlJlYWRhYmxlLmZyb20gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnJvd3NlciIpfX0s''@;'; put 'put ''OTA5NTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZSxFPUwoNzA4OTEpLnEsTWU9RS5FUlJfTUlTU0lOR19BUkdTLFU9RS5FUlJfU1RSRUFNX0RFU1RST1lFRDtmdW5jdGlvbiBRKGVlKXtpZihlZSl0aHJvdyBlZX1mdW5jdGlvbiBpZShlZSxxLEosc2Upe3NlPWZ1bmN0aW9uIEIo''@;'; put 'put ''ZWUpe3ZhciBxPSExO3JldHVybiBmdW5jdGlvbigpe3F8fChxPSEwLGVlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KHNlKTt2YXIgYWU9ITE7ZWUub24oImNsb3NlIixmdW5jdGlvbigpe2FlPSEwfSksdm9pZCAwPT09Z2UmJihnZT1MKDY3NTQyKSksZ2UoZWUse3JlYWRhYmxlOnEsd3Jp''@;'; put 'put ''dGFibGU6Sn0sZnVuY3Rpb24oZGUpe2lmKGRlKXJldHVybiBzZShkZSk7YWU9ITAsc2UoKX0pO3ZhciBmZT0hMTtyZXR1cm4gZnVuY3Rpb24oZGUpe2lmKCFhZSYmIWZlKXtpZihmZT0hMCxmdW5jdGlvbiBaKGVlKXtyZXR1cm4gZWUuc2V0SGVhZGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgZWUu''@;'; put 'put ''YWJvcnR9KGVlKSlyZXR1cm4gZWUuYWJvcnQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZWUuZGVzdHJveSlyZXR1cm4gZWUuZGVzdHJveSgpO3NlKGRlfHxuZXcgVSgicGlwZSIpKX19fWZ1bmN0aW9uIGxlKGVlKXtlZSgpfWZ1bmN0aW9uIFkoZWUscSl7cmV0dXJuIGVlLnBpcGUocSl9ZnVu''@;'; put 'put ''Y3Rpb24gVyhlZSl7cmV0dXJuIGVlLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGVlW2VlLmxlbmd0aC0xXT9lZS5wb3AoKTpRfVhlLmV4cG9ydHM9ZnVuY3Rpb24gTigpe2Zvcih2YXIgZWU9YXJndW1lbnRzLmxlbmd0aCxxPW5ldyBBcnJheShlZSksSj0wO0o8ZWU7SisrKXFbSl09YXJn''@;'; put 'put ''dW1lbnRzW0pdO3ZhciBzZT1XKHEpO2lmKEFycmF5LmlzQXJyYXkocVswXSkmJihxPXFbMF0pLHEubGVuZ3RoPDIpdGhyb3cgbmV3IE1lKCJzdHJlYW1zIik7dmFyIGFlLGZlPXEubWFwKGZ1bmN0aW9uKGRlLHZlKXt2YXIgQWU9dmU8cS5sZW5ndGgtMTtyZXR1cm4gaWUoZGUsQWUsdmU+MCxm''@;'; put 'put ''dW5jdGlvbihTZSl7YWV8fChhZT1TZSksU2UmJmZlLmZvckVhY2gobGUpLCFBZSYmKGZlLmZvckVhY2gobGUpLHNlKGFlKSl9KX0pO3JldHVybiBxLnJlZHVjZShZKX19LDQ3MTAyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg3MDg5MSkucS5FUlJfSU5WQUxJRF9PUFRfVkFM''@;'; put 'put ''VUU7WGUuZXhwb3J0cz17Z2V0SGlnaFdhdGVyTWFyazpmdW5jdGlvbiBFKE1lLFUsUSxaKXt2YXIgaWU9ZnVuY3Rpb24gQihNZSxVLFEpe3JldHVybiBudWxsIT1NZS5oaWdoV2F0ZXJNYXJrP01lLmhpZ2hXYXRlck1hcms6VT9NZVtRXTpudWxsfShVLFosUSk7aWYobnVsbCE9aWUpe2lmKCFp''@;'; put 'put ''c0Zpbml0ZShpZSl8fE1hdGguZmxvb3IoaWUpIT09aWV8fGllPDApdGhyb3cgbmV3IGdlKFo/UToiaGlnaFdhdGVyTWFyayIsaWUpO3JldHVybiBNYXRoLmZsb29yKGllKX1yZXR1cm4gTWUub2JqZWN0TW9kZT8xNjoxNjM4NH19fSw0OTcwOihYZSxKZSxMKT0+e1hlLmV4cG9ydHM9TCg1OTA2''@;'; put 'put ''OSkuRXZlbnRFbWl0dGVyfSw2NTY4NTooWGUsSmUsTCk9PnsoSmU9WGUuZXhwb3J0cz1MKDMxNTQpKS5TdHJlYW09SmUsSmUuUmVhZGFibGU9SmUsSmUuV3JpdGFibGU9TCgyMDUyMCksSmUuRHVwbGV4PUwoNDEzMzkpLEplLlRyYW5zZm9ybT1MKDYwMjUpLEplLlBhc3NUaHJvdWdoPUwoNTYw''@;'; put 'put ''NzEpLEplLmZpbmlzaGVkPUwoNjc1NDIpLEplLnBpcGVsaW5lPUwoOTA5NTQpfSw3NTYzNDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoOTMxNzIpLkJ1ZmZlcixCPUwoODM4OTQpLEU9TCgzOTY1MCksTWU9bmV3IEFycmF5KDE2KSxVPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEw''@;'; put 'put ''LDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUs''@;'; put 'put ''MTNdLFE9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUs''@;'; put 'put ''MTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0sWj1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQs''@;'; put 'put ''MTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUsNl0saWU9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDEx''@;'; put 'put ''LDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdLGxlPVswLDE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDI4NDA4NTM4MzhdLFk9''@;'; put 'put ''WzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF07ZnVuY3Rpb24gVygpe0UuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUz''@;'; put 'put ''Nzc1MjB9ZnVuY3Rpb24gTihmZSxkZSl7cmV0dXJuIGZlPDxkZXxmZT4+PjMyLWRlfWZ1bmN0aW9uIGVlKGZlLGRlLHZlLEFlLGtlLFNlLEllLFRlKXtyZXR1cm4gTihmZSsoZGVedmVeQWUpK1NlK0llfDAsVGUpK2tlfDB9ZnVuY3Rpb24gcShmZSxkZSx2ZSxBZSxrZSxTZSxJZSxUZSl7cmV0''@;'; put 'put ''dXJuIE4oZmUrKGRlJnZlfH5kZSZBZSkrU2UrSWV8MCxUZSkra2V8MH1mdW5jdGlvbiBKKGZlLGRlLHZlLEFlLGtlLFNlLEllLFRlKXtyZXR1cm4gTihmZSsoKGRlfH52ZSleQWUpK1NlK0llfDAsVGUpK2tlfDB9ZnVuY3Rpb24gc2UoZmUsZGUsdmUsQWUsa2UsU2UsSWUsVGUpe3JldHVybiBO''@;'; put 'put ''KGZlKyhkZSZBZXx2ZSZ+QWUpK1NlK0llfDAsVGUpK2tlfDB9ZnVuY3Rpb24gYWUoZmUsZGUsdmUsQWUsa2UsU2UsSWUsVGUpe3JldHVybiBOKGZlKyhkZV4odmV8fkFlKSkrU2UrSWV8MCxUZSkra2V8MH1CKFcsRSksVy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgZmU9''@;'; put 'put ''TWUsZGU9MDtkZTwxNjsrK2RlKWZlW2RlXT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0KmRlKTtmb3IodmFyIHZlPTB8dGhpcy5fYSxBZT0wfHRoaXMuX2Isa2U9MHx0aGlzLl9jLFNlPTB8dGhpcy5fZCxJZT0wfHRoaXMuX2UsVGU9MHx0aGlzLl9hLEVlPTB8dGhpcy5fYixoZT0wfHRoaXMu''@;'; put 'put ''X2MsTz0wfHRoaXMuX2Qsej0wfHRoaXMuX2UsbmU9MDtuZTw4MDtuZSs9MSl7dmFyIHRlLHg7bmU8MTY/KHRlPWVlKHZlLEFlLGtlLFNlLEllLGZlW1VbbmVdXSxsZVswXSxaW25lXSkseD1hZShUZSxFZSxoZSxPLHosZmVbUVtuZV1dLFlbMF0saWVbbmVdKSk6bmU8MzI/KHRlPXEodmUsQWUs''@;'; put 'put ''a2UsU2UsSWUsZmVbVVtuZV1dLGxlWzFdLFpbbmVdKSx4PXNlKFRlLEVlLGhlLE8seixmZVtRW25lXV0sWVsxXSxpZVtuZV0pKTpuZTw0OD8odGU9Sih2ZSxBZSxrZSxTZSxJZSxmZVtVW25lXV0sbGVbMl0sWltuZV0pLHg9SihUZSxFZSxoZSxPLHosZmVbUVtuZV1dLFlbMl0saWVbbmVdKSk6''@;'; put 'put ''bmU8NjQ/KHRlPXNlKHZlLEFlLGtlLFNlLEllLGZlW1VbbmVdXSxsZVszXSxaW25lXSkseD1xKFRlLEVlLGhlLE8seixmZVtRW25lXV0sWVszXSxpZVtuZV0pKToodGU9YWUodmUsQWUsa2UsU2UsSWUsZmVbVVtuZV1dLGxlWzRdLFpbbmVdKSx4PWVlKFRlLEVlLGhlLE8seixmZVtRW25lXV0s''@;'; put 'put ''WVs0XSxpZVtuZV0pKSx2ZT1JZSxJZT1TZSxTZT1OKGtlLDEwKSxrZT1BZSxBZT10ZSxUZT16LHo9TyxPPU4oaGUsMTApLGhlPUVlLEVlPXh9dmFyIFA9dGhpcy5fYitrZStPfDA7dGhpcy5fYj10aGlzLl9jK1NlK3p8MCx0aGlzLl9jPXRoaXMuX2QrSWUrVGV8MCx0aGlzLl9kPXRoaXMuX2Ur''@;'; put 'put ''dmUrRWV8MCx0aGlzLl9lPXRoaXMuX2ErQWUraGV8MCx0aGlzLl9hPVB9LFcucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXT0xMjgsdGhpcy5fYmxvY2tPZmZzZXQ+NTYmJih0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tP''@;'; put 'put ''ZmZzZXQsNjQpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTApLHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5f''@;'; put 'put ''bGVuZ3RoWzFdLDYwKSx0aGlzLl91cGRhdGUoKTt2YXIgZmU9Z2UuYWxsb2M/Z2UuYWxsb2MoMjApOm5ldyBnZSgyMCk7cmV0dXJuIGZlLndyaXRlSW50MzJMRSh0aGlzLl9hLDApLGZlLndyaXRlSW50MzJMRSh0aGlzLl9iLDQpLGZlLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpLGZlLndyaXRl''@;'; put 'put ''SW50MzJMRSh0aGlzLl9kLDEyKSxmZS53cml0ZUludDMyTEUodGhpcy5fZSwxNiksZmV9LFhlLmV4cG9ydHM9V30sNzM1MDI6KFhlLEplLEwpPT57dmFyIGdlPUwoOTMxNzIpLEI9Z2UuQnVmZmVyO2Z1bmN0aW9uIEUoVSxRKXtmb3IodmFyIFogaW4gVSlRW1pdPVVbWl19ZnVuY3Rpb24gTWUo''@;'; put 'put ''VSxRLFope3JldHVybiBCKFUsUSxaKX1CLmZyb20mJkIuYWxsb2MmJkIuYWxsb2NVbnNhZmUmJkIuYWxsb2NVbnNhZmVTbG93P1hlLmV4cG9ydHM9Z2U6KEUoZ2UsSmUpLEplLkJ1ZmZlcj1NZSksRShCLE1lKSxNZS5mcm9tPWZ1bmN0aW9uKFUsUSxaKXtpZigibnVtYmVyIj09dHlwZW9mIFUp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gQihVLFEsWil9LE1lLmFsbG9jPWZ1bmN0aW9uKFUsUSxaKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIp''@;'; put 'put ''O3ZhciBpZT1CKFUpO3JldHVybiB2b2lkIDAhPT1RPyJzdHJpbmciPT10eXBlb2YgWj9pZS5maWxsKFEsWik6aWUuZmlsbChRKTppZS5maWxsKDApLGllfSxNZS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihVKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1l''@;'; put 'put ''bnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBCKFUpfSxNZS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oVSl7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gZ2UuU2xvd0J1ZmZlcihVKX19LDYy''@;'; put 'put ''MDM4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTWUsZ2U9TCg5MzE3MiksQj1nZS5CdWZmZXIsRT17fTtmb3IoTWUgaW4gZ2UpIWdlLmhhc093blByb3BlcnR5KE1lKXx8IlNsb3dCdWZmZXIiPT09TWV8fCJCdWZmZXIiPT09TWV8fChFW01lXT1nZVtNZV0pO3ZhciBVPUUuQnVmZmVy''@;'; put 'put ''PXt9O2ZvcihNZSBpbiBCKSFCLmhhc093blByb3BlcnR5KE1lKXx8ImFsbG9jVW5zYWZlIj09PU1lfHwiYWxsb2NVbnNhZmVTbG93Ij09PU1lfHwoVVtNZV09QltNZV0pO2lmKEUuQnVmZmVyLnByb3RvdHlwZT1CLnByb3RvdHlwZSwoIVUuZnJvbXx8VS5mcm9tPT09VWludDhBcnJheS5mcm9t''@;'; put 'put ''KSYmKFUuZnJvbT1mdW5jdGlvbihRLFosaWUpe2lmKCJudW1iZXIiPT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBRKTtpZihRJiZ2b2lkIDA9PT1RLmxl''@;'; put 'put ''bmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBRKTtyZXR1cm4gQihRLFosaWUp''@;'; put 'put ''fSksVS5hbGxvY3x8KFUuYWxsb2M9ZnVuY3Rpb24oUSxaLGllKXtpZigibnVtYmVyIiE9dHlwZW9mIFEpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIFEpO2lmKFE8MHx8UT49Mioo''@;'; put 'put ''MTw8MzApKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicrUSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIGxlPUIoUSk7cmV0dXJuIFomJjAhPT1aLmxlbmd0aD8ic3RyaW5nIj09dHlwZW9mIGllP2xlLmZpbGwoWixpZSk6bGUuZmlsbChaKTpsZS5maWxs''@;'; put 'put ''KDApLGxlfSksIUUua1N0cmluZ01heExlbmd0aCl0cnl7RS5rU3RyaW5nTWF4TGVuZ3RoPXByb2Nlc3MuYmluZGluZygiYnVmZmVyIikua1N0cmluZ01heExlbmd0aH1jYXRjaChRKXt9RS5jb25zdGFudHN8fChFLmNvbnN0YW50cz17TUFYX0xFTkdUSDpFLmtNYXhMZW5ndGh9LEUua1N0cmlu''@;'; put 'put ''Z01heExlbmd0aCYmKEUuY29uc3RhbnRzLk1BWF9TVFJJTkdfTEVOR1RIPUUua1N0cmluZ01heExlbmd0aCkpLFhlLmV4cG9ydHM9RX0sMjAzMzooWGUsSmUpPT57InVzZSBzdHJpY3QiO3ZhciBnZTshZnVuY3Rpb24oKXt2YXIgQj1KZXx8e307dm9pZCAwIT09KGdlPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEJ9LmFwcGx5KEplLFtdKSkmJihYZS5leHBvcnRzPWdlKSxCLmRlZmF1bHQ9Qjt2YXIgRT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLFU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixaPS91cmxcKFsiJ10/KC4rPylbIiddP1wpLyxpZT17d29mZjI6ImZvbnQvd29m''@;'; put 'put ''ZjIiLHdvZmY6ImZvbnQvd29mZiIsb3RmOiJhcHBsaWNhdGlvbi94LWZvbnQtb3BlbnR5cGUiLHR0ZjoiYXBwbGljYXRpb24veC1mb250LXR0ZiIsZW90OiJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCIsc2ZudDoiYXBwbGljYXRpb24vZm9udC1zZm50Iixzdmc6ImltYWdlL3N2Zyt4''@;'; put 'put ''bWwifSxsZT1mdW5jdGlvbih6KXtyZXR1cm4geiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHx6IGluc3RhbmNlb2YgU1ZHRWxlbWVudH0sWT1mdW5jdGlvbih6KXtpZighbGUoeikpdGhyb3cgbmV3IEVycm9yKCJhbiBIVE1MRWxlbWVudCBvciBTVkdFbGVtZW50IGlzIHJlcXVpcmVkOyBnb3Qg''@;'; put 'put ''Iit6KX0sVz1mdW5jdGlvbih6KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obmUsdGUpe2xlKHopP25lKHopOnRlKG5ldyBFcnJvcigiYW4gSFRNTEVsZW1lbnQgb3IgU1ZHRWxlbWVudCBpcyByZXF1aXJlZDsgZ290ICIreikpfSl9LGVlPWZ1bmN0aW9uKHope3ZhciBuZT1PYmplY3Qu''@;'; put 'put ''a2V5cyhpZSkuZmlsdGVyKGZ1bmN0aW9uKHRlKXtyZXR1cm4gei5pbmRleE9mKCIuIit0ZSk+MH0pLm1hcChmdW5jdGlvbih0ZSl7cmV0dXJuIGllW3RlXX0pO3JldHVybiBuZT9uZVswXTooY29uc29sZS5lcnJvcigiVW5rbm93biBmb250IGZvcm1hdCBmb3IgIit6KyIuIEZvbnRzIG1heSBu''@;'; put 'put ''b3QgYmUgd29ya2luZyBjb3JyZWN0bHkuIiksImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpfSxKPWZ1bmN0aW9uKHosbmUsdGUpe3ZhciB4PXoudmlld0JveCYmei52aWV3Qm94LmJhc2VWYWwmJnoudmlld0JveC5iYXNlVmFsW3RlXXx8bnVsbCE9PW5lLmdldEF0dHJpYnV0ZSh0ZSkmJiFu''@;'; put 'put ''ZS5nZXRBdHRyaWJ1dGUodGUpLm1hdGNoKC8lJC8pJiZwYXJzZUludChuZS5nZXRBdHRyaWJ1dGUodGUpKXx8ei5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0ZV18fHBhcnNlSW50KG5lLnN0eWxlW3RlXSl8fHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHopLmdldFByb3BlcnR5''@;'; put 'put ''VmFsdWUodGUpKTtyZXR1cm4gbnVsbD09eHx8aXNOYU4ocGFyc2VGbG9hdCh4KSk/MDp4fSxmZT1mdW5jdGlvbih6KXtmb3IodmFyIG5lPXdpbmRvdy5hdG9iKHouc3BsaXQoIiwiKVsxXSksdGU9ei5zcGxpdCgiLCIpWzBdLnNwbGl0KCI6IilbMV0uc3BsaXQoIjsiKVswXSx4PW5ldyBBcnJh''@;'; put 'put ''eUJ1ZmZlcihuZS5sZW5ndGgpLFA9bmV3IFVpbnQ4QXJyYXkoeCksVj0wO1Y8bmUubGVuZ3RoO1YrKylQW1ZdPW5lLmNoYXJDb2RlQXQoVik7cmV0dXJuIG5ldyBCbG9iKFt4XSx7dHlwZTp0ZX0pfSxrZT17fSxJZT1udWxsLEVlPWZ1bmN0aW9uKHosbmUpe3ZhciB0ZT1uZXx8e30seD10ZS5z''@;'; put 'put ''ZWxlY3RvclJlbWFwLFA9dGUubW9kaWZ5U3R5bGUsVD10ZS5mb250cyxTPXRlLmV4Y2x1ZGVVbnVzZWRDc3MsRj10ZS5tb2RpZnlDc3N8fGZ1bmN0aW9uKFBlLFFlKXtyZXR1cm4oeD94KFBlKTpQZSkrInsiKyhQP1AoUWUpOlFlKSsifVxuIn0seWU9W10sQ2U9dm9pZCAwPT09VCxEZT1UfHxb''@;'; put 'put ''XTtyZXR1cm4oSWV8fChJZT1BcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKS5tYXAoZnVuY3Rpb24oeil7dHJ5e3JldHVybntydWxlczp6LmNzc1J1bGVzLGhyZWY6ei5ocmVmfX1jYXRjaChuZSl7cmV0dXJuIGNvbnNvbGUud2FybigiU3R5bGVzaGVldCBjb3VsZCBub3QgYmUgbG9h''@;'; put 'put ''ZGVkOiAiK3ouaHJlZixuZSkse319fSkpKS5mb3JFYWNoKGZ1bmN0aW9uKFBlKXt2YXIgUWU9UGUucnVsZXMsJGU9UGUuaHJlZjshUWV8fEFycmF5LmZyb20oUWUpLmZvckVhY2goZnVuY3Rpb24oZ3Qpe2lmKHZvaWQgMCE9PWd0LnN0eWxlKWlmKGZ1bmN0aW9uKHosbmUpe2lmKG5lKXRyeXty''@;'; put 'put ''ZXR1cm4gei5xdWVyeVNlbGVjdG9yKG5lKXx8ei5wYXJlbnROb2RlJiZ6LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcihuZSl9Y2F0Y2godGUpe2NvbnNvbGUud2FybignSW52YWxpZCBDU1Mgc2VsZWN0b3IgIicrbmUrJyInLHRlKX19KHosZ3Quc2VsZWN0b3JUZXh0KSl5ZS5wdXNoKEYoZ3Qu''@;'; put 'put ''c2VsZWN0b3JUZXh0LGd0LnN0eWxlLmNzc1RleHQpKTtlbHNlIGlmKENlJiZndC5jc3NUZXh0Lm1hdGNoKC9eQGZvbnQtZmFjZS8pKXt2YXIgeXQ9ZnVuY3Rpb24oeixuZSl7dmFyIHRlPXouY3NzVGV4dC5tYXRjaChaKSx4PXRlJiZ0ZVsxXXx8IiI7aWYoeCYmIXgubWF0Y2goL15kYXRhOi8p''@;'; put 'put ''JiYiYWJvdXQ6YmxhbmsiIT09eCl7dmFyIFA9eC5zdGFydHNXaXRoKCIuLi8iKT9uZSsiLy4uLyIreDp4LnN0YXJ0c1dpdGgoIi4vIik/bmUrIi8uIit4Ong7cmV0dXJue3RleHQ6ei5jc3NUZXh0LGZvcm1hdDplZShQKSx1cmw6UH19fShndCwkZSk7eXQmJkRlLnB1c2goeXQpfWVsc2UgU3x8''@;'; put 'put ''eWUucHVzaChndC5jc3NUZXh0KX0pfSksZnVuY3Rpb24oeil7cmV0dXJuIFByb21pc2UuYWxsKHoubWFwKGZ1bmN0aW9uKG5lKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odGUseCl7aWYoa2VbbmUudXJsXSlyZXR1cm4gdGUoa2VbbmUudXJsXSk7dmFyIFA9bmV3IFhNTEh0dHBSZXF1''@;'; put 'put ''ZXN0O1AuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oKXt2YXIgVj1mdW5jdGlvbih6KXtmb3IodmFyIG5lPSIiLHRlPW5ldyBVaW50OEFycmF5KHopLHg9MDt4PHRlLmJ5dGVMZW5ndGg7eCsrKW5lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRlW3hdKTtyZXR1cm4gd2luZG93LmJ0''@;'; put 'put ''b2EobmUpfShQLnJlc3BvbnNlKSxUPW5lLnRleHQucmVwbGFjZShaLCd1cmwoImRhdGE6JytuZS5mb3JtYXQrIjtiYXNlNjQsIitWKyciKScpKyJcbiI7a2VbbmUudXJsXT1ULHRlKFQpfSksUC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oVil7Y29uc29sZS53YXJuKCJGYWls''@;'; put 'put ''ZWQgdG8gbG9hZCBmb250IGZyb206ICIrbmUudXJsLFYpLGtlW25lLnVybF09bnVsbCx0ZShudWxsKX0pLFAuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGZ1bmN0aW9uKFYpe2NvbnNvbGUud2FybigiQWJvcnRlZCBsb2FkaW5nIGZvbnQgZnJvbTogIituZS51cmwsViksdGUobnVsbCl9KSxQ''@;'; put 'put ''Lm9wZW4oIkdFVCIsbmUudXJsKSxQLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLFAuc2VuZCgpfSl9KSkudGhlbihmdW5jdGlvbihuZSl7cmV0dXJuIG5lLmZpbHRlcihmdW5jdGlvbih0ZSl7cmV0dXJuIHRlfSkuam9pbigiIil9KX0oRGUpLnRoZW4oZnVuY3Rpb24oUGUpe3JldHVybiB5''@;'; put 'put ''ZS5qb2luKCJcbiIpK1BlfSl9LGhlPWZ1bmN0aW9uKCl7aWYoIW5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iJiYhKCJkb3dubG9hZCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpKXJldHVybntwb3B1cDp3aW5kb3cub3BlbigpfX07Qi5wcmVwYXJlU3ZnPWZ1bmN0aW9uKE8seixu''@;'; put 'put ''ZSl7WShPKTt2YXIgdGU9enx8e30seD10ZS5sZWZ0LFA9dm9pZCAwPT09eD8wOngsVj10ZS50b3AsVD12b2lkIDA9PT1WPzA6VixTPXRlLndpZHRoLEY9dGUuaGVpZ2h0LHllPXRlLnNjYWxlLENlPXZvaWQgMD09PXllPzE6eWUsRGU9dGUucmVzcG9uc2l2ZSxQZT12b2lkIDAhPT1EZSYmRGUs''@;'; put 'put ''UWU9dGUuZXhjbHVkZUNzcywkZT12b2lkIDAhPT1RZSYmUWU7cmV0dXJuIGZ1bmN0aW9uKHope3JldHVybiBQcm9taXNlLmFsbChBcnJheS5mcm9tKHoucXVlcnlTZWxlY3RvckFsbCgiaW1hZ2UiKSkubWFwKGZ1bmN0aW9uKG5lKXt2YXIgdGU9bmUuZ2V0QXR0cmlidXRlTlMoImh0dHA6Ly93''@;'; put 'put ''d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIil8fG5lLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiB0ZT8oZnVuY3Rpb24oeil7cmV0dXJuIHomJjA9PT16Lmxhc3RJbmRleE9mKCJodHRwIiwwKSYmLTE9PT16Lmxhc3RJbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0KX0odGUpJiYo''@;'; put 'put ''dGUrPSgtMT09PXRlLmluZGV4T2YoIj8iKT8iPyI6IiYiKSsidD0iKyhuZXcgRGF0ZSkudmFsdWVPZigpKSxuZXcgUHJvbWlzZShmdW5jdGlvbih4LFApe3ZhciBWPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLFQ9bmV3IEltYWdlO1QuY3Jvc3NPcmlnaW49ImFub255bW91cyIs''@;'; put 'put ''VC5zcmM9dGUsVC5vbmVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIFAobmV3IEVycm9yKCJDb3VsZCBub3QgbG9hZCAiK3RlKSl9LFQub25sb2FkPWZ1bmN0aW9uKCl7Vi53aWR0aD1ULndpZHRoLFYuaGVpZ2h0PVQuaGVpZ2h0LFYuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoVCwwLDApLG5l''@;'; put 'put ''LnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiaHJlZiIsVi50b0RhdGFVUkwoImltYWdlL3BuZyIpKSx4KCEwKX19KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpfSkpfShPKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGd0PU8uY2xvbmVOb2RlKCEwKTtndC5zdHls''@;'; put 'put ''ZS5iYWNrZ3JvdW5kQ29sb3I9KHp8fHt9KS5iYWNrZ3JvdW5kQ29sb3J8fE8uc3R5bGUuYmFja2dyb3VuZENvbG9yO3ZhciB5dD1mdW5jdGlvbih6LG5lLHRlLHgpe2lmKCJzdmciPT09ei50YWdOYW1lKXJldHVybnt3aWR0aDp0ZXx8Sih6LG5lLCJ3aWR0aCIpLGhlaWdodDp4fHxKKHosbmUs''@;'; put 'put ''ImhlaWdodCIpfTtpZih6LmdldEJCb3gpe3ZhciBQPXouZ2V0QkJveCgpO3JldHVybnt3aWR0aDpQLngrUC53aWR0aCxoZWlnaHQ6UC55K1AuaGVpZ2h0fX19KE8sZ3QsUyxGKSxwdD15dC53aWR0aCxtdD15dC5oZWlnaHQ7aWYoInN2ZyIhPT1PLnRhZ05hbWUpe2lmKCFPLmdldEJCb3gpcmV0''@;'; put 'put ''dXJuIHZvaWQgY29uc29sZS5lcnJvcigiQXR0ZW1wdGVkIHRvIHJlbmRlciBub24tU1ZHIGVsZW1lbnQiLE8pO251bGwhPWd0LmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIikmJmd0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixndC5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLnJlcGxhY2Uo''@;'; put 'put ''L3RyYW5zbGF0ZVwoLio/XCkvLCIiKSk7dmFyIHZ0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTt2dC5hcHBlbmRDaGlsZChndCksZ3Q9dnR9aWYoZ3Quc2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiwiMS4xIiksZ3Quc2V0QXR0cmli''@;'; put 'put ''dXRlKCJ2aWV3Qm94IixbUCxULHB0LG10XS5qb2luKCIgIikpLGd0LmdldEF0dHJpYnV0ZSgieG1sbnMiKXx8Z3Quc2V0QXR0cmlidXRlTlMoRSwieG1sbnMiLFUpLGd0LmdldEF0dHJpYnV0ZSgieG1sbnM6eGxpbmsiKXx8Z3Quc2V0QXR0cmlidXRlTlMoRSwieG1sbnM6eGxpbmsiLCJodHRw''@;'; put 'put ''Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiksUGU/KGd0LnJlbW92ZUF0dHJpYnV0ZSgid2lkdGgiKSxndC5yZW1vdmVBdHRyaWJ1dGUoImhlaWdodCIpLGd0LnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaW5ZTWluIG1lZXQiKSk6KGd0LnNldEF0dHJpYnV0ZSgid2lk''@;'; put 'put ''dGgiLHB0KkNlKSxndC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbXQqQ2UpKSxBcnJheS5mcm9tKGd0LnF1ZXJ5U2VsZWN0b3JBbGwoImZvcmVpZ25PYmplY3QgPiAqIikpLmZvckVhY2goZnVuY3Rpb24ob24pe29uLnNldEF0dHJpYnV0ZU5TKEUsInhtbG5zIiwic3ZnIj09PW9uLnRhZ05hbWU/''@;'; put 'put ''VToiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpfSksISRlKXJldHVybiBFZShPLHopLnRoZW4oZnVuY3Rpb24ob24pe3ZhciBfdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO190LnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIiksX3QuaW5uZXJIVE1MPSI8IVtD''@;'; put 'put ''REFUQVtcbiIrb24rIlxuXV0+Ijt2YXIgbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGVmcyIpO250LmFwcGVuZENoaWxkKF90KSxndC5pbnNlcnRCZWZvcmUobnQsZ3QuZmlyc3RDaGlsZCk7dmFyIHFlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3FlLmFwcGVuZENoaWxkKGd0''@;'; put 'put ''KTt2YXIgb3Q9cWUuaW5uZXJIVE1MLnJlcGxhY2UoL05TXGQrOmhyZWYvZ2ksJ3htbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmJyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG5lKXJldHVybntzcmM6b3Qsd2lkdGg6cHQsaGVpZ2h0Om10fTtuZShv''@;'; put 'put ''dCxwdCxtdCl9KTt2YXIgZnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZnQuYXBwZW5kQ2hpbGQoZ3QpO3ZhciBGdD1mdC5pbm5lckhUTUw7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG5lKXJldHVybntzcmM6RnQsd2lkdGg6cHQsaGVpZ2h0Om10fTtuZShGdCxwdCxtdCl9KX0sQi5z''@;'; put 'put ''dmdBc0RhdGFVcmk9ZnVuY3Rpb24oTyx6LG5lKXtyZXR1cm4gWShPKSxCLnByZXBhcmVTdmcoTyx6KS50aGVuKGZ1bmN0aW9uKHRlKXt2YXIgUD10ZS53aWR0aCxWPXRlLmhlaWdodCxUPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCIrd2luZG93LmJ0b2EoZnVuY3Rpb24oeil7cmV0dXJu''@;'; put 'put ''IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoeikucmVwbGFjZSgvJShbMC05QS1GXXsyfSkvZyxmdW5jdGlvbihuZSx0ZSl7dmFyIHg9U3RyaW5nLmZyb21DaGFyQ29kZSgiMHgiK3RlKTtyZXR1cm4iJSI9PT14PyIlMjUiOnh9KSl9KCc8P3htbCB2ZXJzaW9uPSIxLjAi''@;'; put 'put ''IHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbPCFFTlRJVFkgbmJzcCAiJiMxNjA7Ij5dPicrdGUuc3JjKSk7cmV0dXJuImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIG5lJiZuZShULFAsViksVH0pfSxCLnN2Z0FzUG5nVXJpPWZ1bmN0aW9uKE8seixuZSl7WShPKTt2YXIgdGU9enx8e30seD10ZS5lbmNvZGVyVHlwZSxQPXZvaWQgMD09PXg/ImltYWdlL3BuZyI6eCxWPXRlLmVuY29kZXJPcHRpb25zLFQ9dm9pZCAwPT09Vj8uODpWLFM9''@;'; put 'put ''dGUuY2FudmcsRj1mdW5jdGlvbihDZSl7dmFyIERlPUNlLnNyYyxQZT1DZS53aWR0aCxRZT1DZS5oZWlnaHQsJGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksZ3Q9JGUuZ2V0Q29udGV4dCgiMmQiKSx5dD13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MTskZS53aWR0aD1QZSp5''@;'; put 'put ''dCwkZS5oZWlnaHQ9UWUqeXQsJGUuc3R5bGUud2lkdGg9JGUud2lkdGgrInB4IiwkZS5zdHlsZS5oZWlnaHQ9JGUuaGVpZ2h0KyJweCIsZ3Quc2V0VHJhbnNmb3JtKHl0LDAsMCx5dCwwLDApLFM/UygkZSxEZSk6Z3QuZHJhd0ltYWdlKERlLDAsMCk7dmFyIHB0PXZvaWQgMDt0cnl7cHQ9JGUu''@;'; put 'put ''dG9EYXRhVVJMKFAsVCl9Y2F0Y2gobXQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU2VjdXJpdHlFcnJvciYmbXQgaW5zdGFuY2VvZiBTZWN1cml0eUVycm9yfHwiU2VjdXJpdHlFcnJvciI9PT1tdC5uYW1lKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlJlbmRlcmVkIFNWRyBpbWFnZXMg''@;'; put 'put ''Y2Fubm90IGJlIGRvd25sb2FkZWQgaW4gdGhpcyBicm93c2VyLiIpO3Rocm93IG10fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuZSYmbmUocHQsJGUud2lkdGgsJGUuaGVpZ2h0KSxQcm9taXNlLnJlc29sdmUocHQpfTtyZXR1cm4gUz9CLnByZXBhcmVTdmcoTyx6KS50aGVuKEYpOkIuc3Zn''@;'; put 'put ''QXNEYXRhVXJpKE8seikudGhlbihmdW5jdGlvbih5ZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKENlLERlKXt2YXIgUGU9bmV3IEltYWdlO1BlLm9ubG9hZD1mdW5jdGlvbigpe3JldHVybiBDZShGKHtzcmM6UGUsd2lkdGg6UGUud2lkdGgsaGVpZ2h0OlBlLmhlaWdodH0pKX0sUGUu''@;'; put 'put ''b25lcnJvcj1mdW5jdGlvbigpe0RlKCJUaGVyZSB3YXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgZGF0YSBVUkkgYXMgYW4gaW1hZ2Ugb24gdGhlIGZvbGxvd2luZyBTVkdcbiIrd2luZG93LmF0b2IoeWUuc2xpY2UoMjYpKSsiT3BlbiB0aGUgZm9sbG93aW5nIGxpbmsgdG8gc2VlIGJyb3dzZXIn''@;'; put 'put ''cyBkaWFnbm9zaXNcbiIreWUpfSxQZS5zcmM9eWV9KX0pfSxCLmRvd25sb2FkPWZ1bmN0aW9uKE8seixuZSl7aWYobmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoZmUoeiksTyk7ZWxzZXt2YXIgdGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi''@;'; put 'put ''YSIpO2lmKCJkb3dubG9hZCJpbiB0ZSl7dGUuZG93bmxvYWQ9Tyx0ZS5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlKTt0cnl7dmFyIHg9ZmUoeiksUD1VUkwuY3JlYXRlT2JqZWN0VVJMKHgpO3RlLmhyZWY9UCx0ZS5vbmNsaWNrPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JldHVybiBVUkwucmV2b2tlT2JqZWN0VVJMKFApfSl9fWNhdGNoKFYpe2NvbnNvbGUuZXJyb3IoViksY29uc29sZS53YXJuKCJFcnJvciB3aGlsZSBnZXR0aW5nIG9iamVjdCBVUkwuIEZhbGxpbmcgYmFjayB0byBzdHJp''@;'; put 'put ''bmcgVVJMLiIpLHRlLmhyZWY9en10ZS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGUpfWVsc2UgbmUmJm5lLnBvcHVwJiYobmUucG9wdXAuZG9jdW1lbnQudGl0bGU9TyxuZS5wb3B1cC5sb2NhdGlvbi5yZXBsYWNlKHopKX19LEIuc2F2ZVN2Zz1mdW5jdGlvbihPLHosbmUp''@;'; put 'put ''e3ZhciB0ZT1oZSgpO3JldHVybiBXKE8pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIEIuc3ZnQXNEYXRhVXJpKHgsbmV8fHt9KX0pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIEIuZG93bmxvYWQoeix4LHRlKX0pfSxCLnNhdmVTdmdBc1BuZz1mdW5jdGlvbihPLHosbmUpe3ZhciB0ZT1oZSgp''@;'; put 'put ''O3JldHVybiBXKE8pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIEIuc3ZnQXNQbmdVcmkoeCxuZXx8e30pfSkudGhlbihmdW5jdGlvbih4KXtyZXR1cm4gQi5kb3dubG9hZCh6LHgsdGUpfSl9fSgpfSw4NjY5MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3MzUwMikuQnVmZmVyO2Z1bmN0aW9uIEIo''@;'; put 'put ''RSxNZSl7dGhpcy5fYmxvY2s9Z2UuYWxsb2MoRSksdGhpcy5fZmluYWxTaXplPU1lLHRoaXMuX2Jsb2NrU2l6ZT1FLHRoaXMuX2xlbj0wfUIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihFLE1lKXsic3RyaW5nIj09dHlwZW9mIEUmJihFPWdlLmZyb20oRSxNZT1NZXx8InV0ZjgiKSk7Zm9y''@;'; put 'put ''KHZhciBVPXRoaXMuX2Jsb2NrLFE9dGhpcy5fYmxvY2tTaXplLFo9RS5sZW5ndGgsaWU9dGhpcy5fbGVuLGxlPTA7bGU8Wjspe2Zvcih2YXIgWT1pZSVRLFc9TWF0aC5taW4oWi1sZSxRLVkpLE49MDtOPFc7TisrKVVbWStOXT1FW2xlK05dO2xlKz1XLChpZSs9VyklUT09MCYmdGhpcy5fdXBk''@;'; put 'put ''YXRlKFUpfXJldHVybiB0aGlzLl9sZW4rPVosdGhpc30sQi5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKEUpe3ZhciBNZT10aGlzLl9sZW4ldGhpcy5fYmxvY2tTaXplO3RoaXMuX2Jsb2NrW01lXT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLE1lKzEpLE1lPj10aGlzLl9maW5hbFNpemUmJih0''@;'; put 'put ''aGlzLl91cGRhdGUodGhpcy5fYmxvY2spLHRoaXMuX2Jsb2NrLmZpbGwoMCkpO3ZhciBVPTgqdGhpcy5fbGVuO2lmKFU8PTQyOTQ5NjcyOTUpdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShVLHRoaXMuX2Jsb2NrU2l6ZS00KTtlbHNle3ZhciBRPSg0Mjk0OTY3Mjk1JlUpPj4+MDt0aGlzLl9i''@;'; put 'put ''bG9jay53cml0ZVVJbnQzMkJFKChVLVEpLzQyOTQ5NjcyOTYsdGhpcy5fYmxvY2tTaXplLTgpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoUSx0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgaWU9dGhpcy5faGFzaCgpO3JldHVybiBFP2llLnRvU3Ry''@;'; put 'put ''aW5nKEUpOmllfSxCLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MiKX0sWGUuZXhwb3J0cz1CfSw5NTI0NDooWGUsSmUsTCk9Pnt2YXIgZ2U9WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtF''@;'; put 'put ''PUUudG9Mb3dlckNhc2UoKTt2YXIgTWU9Z2VbRV07aWYoIU1lKXRocm93IG5ldyBFcnJvcihFKyIgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpIik7cmV0dXJuIG5ldyBNZX07Z2Uuc2hhPUwoODg5MzIpLGdlLnNoYTE9TCgxNzczNiksZ2Uuc2hhMjI0PUwoMjUw''@;'; put 'put ''NDQpLGdlLnNoYTI1Nj1MKDE1MDE0KSxnZS5zaGEzODQ9TCg3NjU0MCksZ2Uuc2hhNTEyPUwoMTAxMTcpfSw4ODkzMjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4Mzg5NCksQj1MKDg2NjkyKSxFPUwoNzM1MDIpLkJ1ZmZlcixNZT1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLC0xODk0MDA3NTg4LC04''@;'; put 'put ''OTk0OTc1MTRdLFU9bmV3IEFycmF5KDgwKTtmdW5jdGlvbiBRKCl7dGhpcy5pbml0KCksdGhpcy5fdz1VLEIuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBaKFkpe3JldHVybiBZPDw1fFk+Pj4yN31mdW5jdGlvbiBpZShZKXtyZXR1cm4gWTw8MzB8WT4+PjJ9ZnVuY3Rpb24gbGUoWSxXLE4s''@;'; put 'put ''ZWUpe3JldHVybiAwPT09WT9XJk58flcmZWU6Mj09PVk/VyZOfFcmZWV8TiZlZTpXXk5eZWV9Z2UoUSxCKSxRLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9Mjcx''@;'; put 'put ''NzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMCx0aGlzfSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFkpe2Zvcih2YXIgVz10aGlzLl93LE49MHx0aGlzLl9hLGVlPTB8dGhpcy5fYixxPTB8dGhpcy5fYyxKPTB8dGhpcy5fZCxzZT0wfHRoaXMuX2UsYWU9MDthZTwxNjsrK2FlKVdbYWVd''@;'; put 'put ''PVkucmVhZEludDMyQkUoNCphZSk7Zm9yKDthZTw4MDsrK2FlKVdbYWVdPVdbYWUtM11eV1thZS04XV5XW2FlLTE0XV5XW2FlLTE2XTtmb3IodmFyIGZlPTA7ZmU8ODA7KytmZSl7dmFyIGRlPX5+KGZlLzIwKSx2ZT1aKE4pK2xlKGRlLGVlLHEsSikrc2UrV1tmZV0rTWVbZGVdfDA7c2U9SixK''@;'; put 'put ''PXEscT1pZShlZSksZWU9TixOPXZlfXRoaXMuX2E9Tit0aGlzLl9hfDAsdGhpcy5fYj1lZSt0aGlzLl9ifDAsdGhpcy5fYz1xK3RoaXMuX2N8MCx0aGlzLl9kPUordGhpcy5fZHwwLHRoaXMuX2U9c2UrdGhpcy5fZXwwfSxRLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBZPUUuYWxs''@;'; put 'put ''b2NVbnNhZmUoMjApO3JldHVybiBZLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksWS53cml0ZUludDMyQkUoMHx0aGlzLl9iLDQpLFkud3JpdGVJbnQzMkJFKDB8dGhpcy5fYyw4KSxZLndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLFkud3JpdGVJbnQzMkJFKDB8dGhpcy5fZSwxNiksWX0s''@;'; put 'put ''WGUuZXhwb3J0cz1RfSwxNzczNjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4Mzg5NCksQj1MKDg2NjkyKSxFPUwoNzM1MDIpLkJ1ZmZlcixNZT1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLC0xODk0MDA3NTg4LC04OTk0OTc1MTRdLFU9bmV3IEFycmF5KDgwKTtmdW5jdGlvbiBRKCl7dGhpcy5pbml0''@;'; put 'put ''KCksdGhpcy5fdz1VLEIuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBaKFcpe3JldHVybiBXPDwxfFc+Pj4zMX1mdW5jdGlvbiBpZShXKXtyZXR1cm4gVzw8NXxXPj4+Mjd9ZnVuY3Rpb24gbGUoVyl7cmV0dXJuIFc8PDMwfFc+Pj4yfWZ1bmN0aW9uIFkoVyxOLGVlLHEpe3JldHVybiAwPT09''@;'; put 'put ''Vz9OJmVlfH5OJnE6Mj09PVc/TiZlZXxOJnF8ZWUmcTpOXmVlXnF9Z2UoUSxCKSxRLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9''@;'; put 'put ''MzI4NTM3NzUyMCx0aGlzfSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFcpe2Zvcih2YXIgTj10aGlzLl93LGVlPTB8dGhpcy5fYSxxPTB8dGhpcy5fYixKPTB8dGhpcy5fYyxzZT0wfHRoaXMuX2QsYWU9MHx0aGlzLl9lLGZlPTA7ZmU8MTY7KytmZSlOW2ZlXT1XLnJlYWRJbnQzMkJF''@;'; put 'put ''KDQqZmUpO2Zvcig7ZmU8ODA7KytmZSlOW2ZlXT1aKE5bZmUtM11eTltmZS04XV5OW2ZlLTE0XV5OW2ZlLTE2XSk7Zm9yKHZhciBkZT0wO2RlPDgwOysrZGUpe3ZhciB2ZT1+fihkZS8yMCksQWU9aWUoZWUpK1kodmUscSxKLHNlKSthZStOW2RlXStNZVt2ZV18MDthZT1zZSxzZT1KLEo9bGUo''@;'; put 'put ''cSkscT1lZSxlZT1BZX10aGlzLl9hPWVlK3RoaXMuX2F8MCx0aGlzLl9iPXErdGhpcy5fYnwwLHRoaXMuX2M9Sit0aGlzLl9jfDAsdGhpcy5fZD1zZSt0aGlzLl9kfDAsdGhpcy5fZT1hZSt0aGlzLl9lfDB9LFEucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIFc9RS5hbGxvY1Vuc2Fm''@;'; put 'put ''ZSgyMCk7cmV0dXJuIFcud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxXLndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksVy53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLFcud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksVy53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxXfSxYZS5leHBv''@;'; put 'put ''cnRzPVF9LDI1MDQ0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDgzODk0KSxCPUwoMTUwMTQpLEU9TCg4NjY5MiksTWU9TCg3MzUwMikuQnVmZmVyLFU9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBRKCl7dGhpcy5pbml0KCksdGhpcy5fdz1VLEUuY2FsbCh0aGlzLDY0LDU2KX1nZShRLEIpLFEucHJv''@;'; put 'put ''dG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0zMjM4MzcxMDMyLHRoaXMuX2I9OTE0MTUwNjYzLHRoaXMuX2M9ODEyNzAyOTk5LHRoaXMuX2Q9NDE0NDkxMjY5Nyx0aGlzLl9lPTQyOTA3NzU4NTcsdGhpcy5fZj0xNzUwNjAzMDI1LHRoaXMuX2c9MTY5NDA3NjgzOSx0aGlz''@;'; put 'put ''Ll9oPTMyMDQwNzU0MjgsdGhpc30sUS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgWj1NZS5hbGxvY1Vuc2FmZSgyOCk7cmV0dXJuIFoud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCksWi53cml0ZUludDMyQkUodGhpcy5fYiw0KSxaLndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLFoud3Jp''@;'; put 'put ''dGVJbnQzMkJFKHRoaXMuX2QsMTIpLFoud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLFoud3JpdGVJbnQzMkJFKHRoaXMuX2YsMjApLFoud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLFp9LFhlLmV4cG9ydHM9UX0sMTUwMTQ6KFhlLEplLEwpPT57dmFyIGdlPUwoODM4OTQpLEI9TCg4NjY5Miks''@;'; put 'put ''RT1MKDczNTAyKS5CdWZmZXIsTWU9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2''@;'; put 'put ''MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3''@;'; put 'put ''MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0Nzcx''@;'; put 'put ''LDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4''@;'; put 'put ''NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sVT1uZXcgQXJyYXkoNjQpO2Z1bmN0aW9uIFEoKXt0aGlzLmluaXQoKSx0aGlzLl93PVUsQi5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIFooZWUscSxKKXtyZXR1cm4gSl5lZSYocV5KKX1mdW5jdGlv''@;'; put 'put ''biBpZShlZSxxLEope3JldHVybiBlZSZxfEomKGVlfHEpfWZ1bmN0aW9uIGxlKGVlKXtyZXR1cm4oZWU+Pj4yfGVlPDwzMCleKGVlPj4+MTN8ZWU8PDE5KV4oZWU+Pj4yMnxlZTw8MTApfWZ1bmN0aW9uIFkoZWUpe3JldHVybihlZT4+PjZ8ZWU8PDI2KV4oZWU+Pj4xMXxlZTw8MjEpXihlZT4+''@;'; put 'put ''PjI1fGVlPDw3KX1mdW5jdGlvbiBXKGVlKXtyZXR1cm4oZWU+Pj43fGVlPDwyNSleKGVlPj4+MTh8ZWU8PDE0KV5lZT4+PjN9ZnVuY3Rpb24gTihlZSl7cmV0dXJuKGVlPj4+MTd8ZWU8PDE1KV4oZWU+Pj4xOXxlZTw8MTMpXmVlPj4+MTB9Z2UoUSxCKSxRLnByb3RvdHlwZS5pbml0PWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTc3OTAzMzcwMyx0aGlzLl9iPTMxNDQxMzQyNzcsdGhpcy5fYz0xMDEzOTA0MjQyLHRoaXMuX2Q9Mjc3MzQ4MDc2Mix0aGlzLl9lPTEzNTk4OTMxMTksdGhpcy5fZj0yNjAwODIyOTI0LHRoaXMuX2c9NTI4NzM0NjM1LHRoaXMuX2g9MTU0MTQ1OTIyNSx0''@;'; put 'put ''aGlzfSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGVlKXtmb3IodmFyIHE9dGhpcy5fdyxKPTB8dGhpcy5fYSxzZT0wfHRoaXMuX2IsYWU9MHx0aGlzLl9jLGZlPTB8dGhpcy5fZCxkZT0wfHRoaXMuX2UsdmU9MHx0aGlzLl9mLEFlPTB8dGhpcy5fZyxrZT0wfHRoaXMuX2gsU2U9MDtT''@;'; put 'put ''ZTwxNjsrK1NlKXFbU2VdPWVlLnJlYWRJbnQzMkJFKDQqU2UpO2Zvcig7U2U8NjQ7KytTZSlxW1NlXT1OKHFbU2UtMl0pK3FbU2UtN10rVyhxW1NlLTE1XSkrcVtTZS0xNl18MDtmb3IodmFyIEllPTA7SWU8NjQ7KytJZSl7dmFyIFRlPWtlK1koZGUpK1ooZGUsdmUsQWUpK01lW0llXStxW0ll''@;'; put 'put ''XXwwLEVlPWxlKEopK2llKEosc2UsYWUpfDA7a2U9QWUsQWU9dmUsdmU9ZGUsZGU9ZmUrVGV8MCxmZT1hZSxhZT1zZSxzZT1KLEo9VGUrRWV8MH10aGlzLl9hPUordGhpcy5fYXwwLHRoaXMuX2I9c2UrdGhpcy5fYnwwLHRoaXMuX2M9YWUrdGhpcy5fY3wwLHRoaXMuX2Q9ZmUrdGhpcy5fZHww''@;'; put 'put ''LHRoaXMuX2U9ZGUrdGhpcy5fZXwwLHRoaXMuX2Y9dmUrdGhpcy5fZnwwLHRoaXMuX2c9QWUrdGhpcy5fZ3wwLHRoaXMuX2g9a2UrdGhpcy5faHwwfSxRLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBlZT1FLmFsbG9jVW5zYWZlKDMyKTtyZXR1cm4gZWUud3JpdGVJbnQzMkJFKHRo''@;'; put 'put ''aXMuX2EsMCksZWUud3JpdGVJbnQzMkJFKHRoaXMuX2IsNCksZWUud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksZWUud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIpLGVlLndyaXRlSW50MzJCRSh0aGlzLl9lLDE2KSxlZS53cml0ZUludDMyQkUodGhpcy5fZiwyMCksZWUud3JpdGVJbnQzMkJFKHRo''@;'; put 'put ''aXMuX2csMjQpLGVlLndyaXRlSW50MzJCRSh0aGlzLl9oLDI4KSxlZX0sWGUuZXhwb3J0cz1RfSw3NjU0MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4Mzg5NCksQj1MKDEwMTE3KSxFPUwoODY2OTIpLE1lPUwoNzM1MDIpLkJ1ZmZlcixVPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIFEoKXt0aGlz''@;'; put 'put ''LmluaXQoKSx0aGlzLl93PVUsRS5jYWxsKHRoaXMsMTI4LDExMil9Z2UoUSxCKSxRLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTM0MTgwNzAzNjUsdGhpcy5fYmg9MTY1NDI3MDI1MCx0aGlzLl9jaD0yNDM4NTI5MzcwLHRoaXMuX2RoPTM1NTQ2MjM2MCx0aGlz''@;'; put 'put ''Ll9laD0xNzMxNDA1NDE1LHRoaXMuX2ZoPTIzOTQxODAyMzEsdGhpcy5fZ2g9MzY3NTAwODUyNSx0aGlzLl9oaD0xMjAzMDYyODEzLHRoaXMuX2FsPTMyMzgzNzEwMzIsdGhpcy5fYmw9OTE0MTUwNjYzLHRoaXMuX2NsPTgxMjcwMjk5OSx0aGlzLl9kbD00MTQ0OTEyNjk3LHRoaXMuX2VsPTQy''@;'; put 'put ''OTA3NzU4NTcsdGhpcy5fZmw9MTc1MDYwMzAyNSx0aGlzLl9nbD0xNjk0MDc2ODM5LHRoaXMuX2hsPTMyMDQwNzU0MjgsdGhpc30sUS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgWj1NZS5hbGxvY1Vuc2FmZSg0OCk7ZnVuY3Rpb24gaWUobGUsWSxXKXtaLndyaXRlSW50MzJCRShs''@;'; put 'put ''ZSxXKSxaLndyaXRlSW50MzJCRShZLFcrNCl9cmV0dXJuIGllKHRoaXMuX2FoLHRoaXMuX2FsLDApLGllKHRoaXMuX2JoLHRoaXMuX2JsLDgpLGllKHRoaXMuX2NoLHRoaXMuX2NsLDE2KSxpZSh0aGlzLl9kaCx0aGlzLl9kbCwyNCksaWUodGhpcy5fZWgsdGhpcy5fZWwsMzIpLGllKHRoaXMu''@;'; put 'put ''X2ZoLHRoaXMuX2ZsLDQwKSxafSxYZS5leHBvcnRzPVF9LDEwMTE3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDgzODk0KSxCPUwoODY2OTIpLEU9TCg3MzUwMikuQnVmZmVyLE1lPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5''@;'; put 'put ''LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEz''@;'; put 'put ''MjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0''@;'; put 'put ''NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAx''@;'; put 'put ''NiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0''@;'; put 'put ''NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIw''@;'; put 'put ''MzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3''@;'; put 'put ''NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwx''@;'; put 'put ''NTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5''@;'; put 'put ''MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMx''@;'; put 'put ''NSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0''@;'; put 'put ''NjE4OTU5MV0sVT1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiBRKCl7dGhpcy5pbml0KCksdGhpcy5fdz1VLEIuY2FsbCh0aGlzLDEyOCwxMTIpfWZ1bmN0aW9uIFooc2UsYWUsZmUpe3JldHVybiBmZV5zZSYoYWVeZmUpfWZ1bmN0aW9uIGllKHNlLGFlLGZlKXtyZXR1cm4gc2UmYWV8ZmUmKHNl''@;'; put 'put ''fGFlKX1mdW5jdGlvbiBsZShzZSxhZSl7cmV0dXJuKHNlPj4+Mjh8YWU8PDQpXihhZT4+PjJ8c2U8PDMwKV4oYWU+Pj43fHNlPDwyNSl9ZnVuY3Rpb24gWShzZSxhZSl7cmV0dXJuKHNlPj4+MTR8YWU8PDE4KV4oc2U+Pj4xOHxhZTw8MTQpXihhZT4+Pjl8c2U8PDIzKX1mdW5jdGlvbiBXKHNl''@;'; put 'put ''LGFlKXtyZXR1cm4oc2U+Pj4xfGFlPDwzMSleKHNlPj4+OHxhZTw8MjQpXnNlPj4+N31mdW5jdGlvbiBOKHNlLGFlKXtyZXR1cm4oc2U+Pj4xfGFlPDwzMSleKHNlPj4+OHxhZTw8MjQpXihzZT4+Pjd8YWU8PDI1KX1mdW5jdGlvbiBlZShzZSxhZSl7cmV0dXJuKHNlPj4+MTl8YWU8PDEzKV4o''@;'; put 'put ''YWU+Pj4yOXxzZTw8Mylec2U+Pj42fWZ1bmN0aW9uIHEoc2UsYWUpe3JldHVybihzZT4+PjE5fGFlPDwxMyleKGFlPj4+Mjl8c2U8PDMpXihzZT4+PjZ8YWU8PDI2KX1mdW5jdGlvbiBKKHNlLGFlKXtyZXR1cm4gc2U+Pj4wPGFlPj4+MD8xOjB9Z2UoUSxCKSxRLnByb3RvdHlwZS5pbml0PWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9maD0yNjAwODIyOTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0x''@;'; put 'put ''NTQxNDU5MjI1LHRoaXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1MTExOTksdGhpcy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMy''@;'; put 'put ''MDksdGhpc30sUS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihzZSl7Zm9yKHZhciBhZT10aGlzLl93LGZlPTB8dGhpcy5fYWgsZGU9MHx0aGlzLl9iaCx2ZT0wfHRoaXMuX2NoLEFlPTB8dGhpcy5fZGgsa2U9MHx0aGlzLl9laCxTZT0wfHRoaXMuX2ZoLEllPTB8dGhpcy5fZ2gsVGU9MHx0''@;'; put 'put ''aGlzLl9oaCxFZT0wfHRoaXMuX2FsLGhlPTB8dGhpcy5fYmwsTz0wfHRoaXMuX2NsLHo9MHx0aGlzLl9kbCxuZT0wfHRoaXMuX2VsLHRlPTB8dGhpcy5fZmwseD0wfHRoaXMuX2dsLFA9MHx0aGlzLl9obCxWPTA7VjwzMjtWKz0yKWFlW1ZdPXNlLnJlYWRJbnQzMkJFKDQqViksYWVbVisxXT1z''@;'; put 'put ''ZS5yZWFkSW50MzJCRSg0KlYrNCk7Zm9yKDtWPDE2MDtWKz0yKXt2YXIgVD1hZVtWLTMwXSxTPWFlW1YtMzArMV0sRj1XKFQsUykseWU9TihTLFQpLENlPWVlKFQ9YWVbVi00XSxTPWFlW1YtNCsxXSksRGU9cShTLFQpLCRlPWFlW1YtMzJdLGd0PWFlW1YtMzIrMV0seXQ9eWUrYWVbVi0xNCsx''@;'; put 'put ''XXwwLHB0PUYrYWVbVi0xNF0rSih5dCx5ZSl8MDtwdD0ocHQ9cHQrQ2UrSih5dD15dCtEZXwwLERlKXwwKSskZStKKHl0PXl0K2d0fDAsZ3QpfDAsYWVbVl09cHQsYWVbVisxXT15dH1mb3IodmFyIG10PTA7bXQ8MTYwO210Kz0yKXtwdD1hZVttdF0seXQ9YWVbbXQrMV07dmFyIHZ0PWllKGZl''@;'; put 'put ''LGRlLHZlKSxmdD1pZShFZSxoZSxPKSxGdD1sZShmZSxFZSksb249bGUoRWUsZmUpLF90PVkoa2UsbmUpLG50PVkobmUsa2UpLHFlPU1lW210XSxvdD1NZVttdCsxXSxSdD1aKGtlLFNlLEllKSxDdD1aKG5lLHRlLHgpLGN0PVArbnR8MCxOdD1UZStfdCtKKGN0LFApfDA7TnQ9KE50PShOdD1O''@;'; put 'put ''dCtSdCtKKGN0PWN0K0N0fDAsQ3QpfDApK3FlK0ooY3Q9Y3Qrb3R8MCxvdCl8MCkrcHQrSihjdD1jdCt5dHwwLHl0KXwwO3ZhciB6ZT1vbitmdHwwLFllPUZ0K3Z0K0ooemUsb24pfDA7VGU9SWUsUD14LEllPVNlLHg9dGUsU2U9a2UsdGU9bmUsa2U9QWUrTnQrSihuZT16K2N0fDAseil8MCxB''@;'; put 'put ''ZT12ZSx6PU8sdmU9ZGUsTz1oZSxkZT1mZSxoZT1FZSxmZT1OdCtZZStKKEVlPWN0K3plfDAsY3QpfDB9dGhpcy5fYWw9dGhpcy5fYWwrRWV8MCx0aGlzLl9ibD10aGlzLl9ibCtoZXwwLHRoaXMuX2NsPXRoaXMuX2NsK098MCx0aGlzLl9kbD10aGlzLl9kbCt6fDAsdGhpcy5fZWw9dGhpcy5f''@;'; put 'put ''ZWwrbmV8MCx0aGlzLl9mbD10aGlzLl9mbCt0ZXwwLHRoaXMuX2dsPXRoaXMuX2dsK3h8MCx0aGlzLl9obD10aGlzLl9obCtQfDAsdGhpcy5fYWg9dGhpcy5fYWgrZmUrSih0aGlzLl9hbCxFZSl8MCx0aGlzLl9iaD10aGlzLl9iaCtkZStKKHRoaXMuX2JsLGhlKXwwLHRoaXMuX2NoPXRoaXMu''@;'; put 'put ''X2NoK3ZlK0oodGhpcy5fY2wsTyl8MCx0aGlzLl9kaD10aGlzLl9kaCtBZStKKHRoaXMuX2RsLHopfDAsdGhpcy5fZWg9dGhpcy5fZWgra2UrSih0aGlzLl9lbCxuZSl8MCx0aGlzLl9maD10aGlzLl9maCtTZStKKHRoaXMuX2ZsLHRlKXwwLHRoaXMuX2doPXRoaXMuX2doK0llK0oodGhpcy5f''@;'; put 'put ''Z2wseCl8MCx0aGlzLl9oaD10aGlzLl9oaCtUZStKKHRoaXMuX2hsLFApfDB9LFEucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIHNlPUUuYWxsb2NVbnNhZmUoNjQpO2Z1bmN0aW9uIGFlKGZlLGRlLHZlKXtzZS53cml0ZUludDMyQkUoZmUsdmUpLHNlLndyaXRlSW50MzJCRShkZSx2''@;'; put 'put ''ZSs0KX1yZXR1cm4gYWUodGhpcy5fYWgsdGhpcy5fYWwsMCksYWUodGhpcy5fYmgsdGhpcy5fYmwsOCksYWUodGhpcy5fY2gsdGhpcy5fY2wsMTYpLGFlKHRoaXMuX2RoLHRoaXMuX2RsLDI0KSxhZSh0aGlzLl9laCx0aGlzLl9lbCwzMiksYWUodGhpcy5fZmgsdGhpcy5fZmwsNDApLGFlKHRo''@;'; put 'put ''aXMuX2doLHRoaXMuX2dsLDQ4KSxhZSh0aGlzLl9oaCx0aGlzLl9obCw1Niksc2V9LFhlLmV4cG9ydHM9UX0sMjk1OihYZSxKZSxMKT0+e1hlLmV4cG9ydHM9RTt2YXIgZ2U9TCg1OTA2OSkuRXZlbnRFbWl0dGVyO2Z1bmN0aW9uIEUoKXtnZS5jYWxsKHRoaXMpfUwoODM4OTQpKEUsZ2UpLEUu''@;'; put 'put ''UmVhZGFibGU9TCgzMTU0KSxFLldyaXRhYmxlPUwoMjA1MjApLEUuRHVwbGV4PUwoNDEzMzkpLEUuVHJhbnNmb3JtPUwoNjAyNSksRS5QYXNzVGhyb3VnaD1MKDU2MDcxKSxFLmZpbmlzaGVkPUwoNjc1NDIpLEUucGlwZWxpbmU9TCg5MDk1NCksRS5TdHJlYW09RSxFLnByb3RvdHlwZS5waXBl''@;'; put 'put ''PWZ1bmN0aW9uKE1lLFUpe3ZhciBRPXRoaXM7ZnVuY3Rpb24gWihxKXtNZS53cml0YWJsZSYmITE9PT1NZS53cml0ZShxKSYmUS5wYXVzZSYmUS5wYXVzZSgpfWZ1bmN0aW9uIGllKCl7US5yZWFkYWJsZSYmUS5yZXN1bWUmJlEucmVzdW1lKCl9US5vbigiZGF0YSIsWiksTWUub24oImRyYWlu''@;'; put 'put ''IixpZSksIU1lLl9pc1N0ZGlvJiYoIVV8fCExIT09VS5lbmQpJiYoUS5vbigiZW5kIixZKSxRLm9uKCJjbG9zZSIsVykpO3ZhciBsZT0hMTtmdW5jdGlvbiBZKCl7bGV8fChsZT0hMCxNZS5lbmQoKSl9ZnVuY3Rpb24gVygpe2xlfHwobGU9ITAsImZ1bmN0aW9uIj09dHlwZW9mIE1lLmRlc3Ry''@;'; put 'put ''b3kmJk1lLmRlc3Ryb3koKSl9ZnVuY3Rpb24gTihxKXtpZihlZSgpLDA9PT1nZS5saXN0ZW5lckNvdW50KHRoaXMsImVycm9yIikpdGhyb3cgcX1mdW5jdGlvbiBlZSgpe1EucmVtb3ZlTGlzdGVuZXIoImRhdGEiLFopLE1lLnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsaWUpLFEucmVtb3ZlTGlz''@;'; put 'put ''dGVuZXIoImVuZCIsWSksUS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFcpLFEucmVtb3ZlTGlzdGVuZXIoImVycm9yIixOKSxNZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLE4pLFEucmVtb3ZlTGlzdGVuZXIoImVuZCIsZWUpLFEucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixlZSksTWUucmVtb3Zl''@;'; put 'put ''TGlzdGVuZXIoImNsb3NlIixlZSl9cmV0dXJuIFEub24oImVycm9yIixOKSxNZS5vbigiZXJyb3IiLE4pLFEub24oImVuZCIsZWUpLFEub24oImNsb3NlIixlZSksTWUub24oImNsb3NlIixlZSksTWUuZW1pdCgicGlwZSIsUSksTWV9fSw3MzA1NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIGdlPUwoMzA4NTgpLkJ1ZmZlcixCPWdlLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKGZlKXtzd2l0Y2goKGZlPSIiK2ZlKSYmZmUudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNl''@;'; put 'put ''InVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiBVKGZlKXt2YXIgZGU7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24gTWUoZmUpe3ZhciBkZT1mdW5jdGlvbiBFKGZl''@;'; put 'put ''KXtpZighZmUpcmV0dXJuInV0ZjgiO2Zvcih2YXIgZGU7Oylzd2l0Y2goZmUpe2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuInV0ZjgiO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4idXRmMTZsZSI7Y2FzZSJsYXRpbjEiOmNh''@;'; put 'put ''c2UiYmluYXJ5IjpyZXR1cm4ibGF0aW4xIjtjYXNlImJhc2U2NCI6Y2FzZSJhc2NpaSI6Y2FzZSJoZXgiOnJldHVybiBmZTtkZWZhdWx0OmlmKGRlKXJldHVybjtmZT0oIiIrZmUpLnRvTG93ZXJDYXNlKCksZGU9ITB9fShmZSk7aWYoInN0cmluZyIhPXR5cGVvZiBkZSYmKGdlLmlzRW5jb2Rp''@;'; put 'put ''bmc9PT1CfHwhQihmZSkpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitmZSk7cmV0dXJuIGRlfHxmZX0oZmUpLHRoaXMuZW5jb2Rpbmcpe2Nhc2UidXRmMTZsZSI6dGhpcy50ZXh0PU4sdGhpcy5lbmQ9ZWUsZGU9NDticmVhaztjYXNlInV0ZjgiOnRoaXMuZmlsbExhc3Q9''@;'; put 'put ''bGUsZGU9NDticmVhaztjYXNlImJhc2U2NCI6dGhpcy50ZXh0PXEsdGhpcy5lbmQ9SixkZT0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9c2Usdm9pZCh0aGlzLmVuZD1hZSl9dGhpcy5sYXN0TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj1nZS5hbGxvY1Vu''@;'; put 'put ''c2FmZShkZSl9ZnVuY3Rpb24gUShmZSl7cmV0dXJuIGZlPD0xMjc/MDpmZT4+NT09Nj8yOmZlPj40PT0xND8zOmZlPj4zPT0zMD80OmZlPj42PT0yPy0xOi0yfWZ1bmN0aW9uIGxlKGZlKXt2YXIgZGU9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCx2ZT1mdW5jdGlvbiBpZShmZSxkZSx2''@;'; put 'put ''ZSl7aWYoMTI4IT0oMTkyJmRlWzBdKSlyZXR1cm4gZmUubGFzdE5lZWQ9MCwiXHVmZmZkIjtpZihmZS5sYXN0TmVlZD4xJiZkZS5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJmRlWzFdKSlyZXR1cm4gZmUubGFzdE5lZWQ9MSwiXHVmZmZkIjtpZihmZS5sYXN0TmVlZD4yJiZkZS5sZW5ndGg+MiYm''@;'; put 'put ''MTI4IT0oMTkyJmRlWzJdKSlyZXR1cm4gZmUubGFzdE5lZWQ9MiwiXHVmZmZkIn19KHRoaXMsZmUpO3JldHVybiB2b2lkIDAhPT12ZT92ZTp0aGlzLmxhc3ROZWVkPD1mZS5sZW5ndGg/KGZlLmNvcHkodGhpcy5sYXN0Q2hhcixkZSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9T''@;'; put 'put ''dHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KGZlLmNvcHkodGhpcy5sYXN0Q2hhcixkZSwwLGZlLmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT1mZS5sZW5ndGgpKX1mdW5jdGlvbiBOKGZlLGRlKXtpZigoZmUubGVuZ3RoLWRlKSUyPT0wKXt2YXIgdmU9ZmUudG9T''@;'; put 'put ''dHJpbmcoInV0ZjE2bGUiLGRlKTtpZih2ZSl7dmFyIEFlPXZlLmNoYXJDb2RlQXQodmUubGVuZ3RoLTEpO2lmKEFlPj01NTI5NiYmQWU8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPWZlW2ZlLmxlbmd0aC0yXSx0aGlzLmxh''@;'; put 'put ''c3RDaGFyWzFdPWZlW2ZlLmxlbmd0aC0xXSx2ZS5zbGljZSgwLC0xKX1yZXR1cm4gdmV9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09ZmVbZmUubGVuZ3RoLTFdLGZlLnRvU3RyaW5nKCJ1dGYxNmxlIixkZSxmZS5sZW5ndGgtMSl9ZnVu''@;'; put 'put ''Y3Rpb24gZWUoZmUpe3ZhciBkZT1mZSYmZmUubGVuZ3RoP3RoaXMud3JpdGUoZmUpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP2RlK3RoaXMubGFzdENoYXIudG9TdHJpbmcoInV0ZjE2bGUiLDAsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCk6ZGV9ZnVuY3Rpb24gcShmZSxkZSl7dmFy''@;'; put 'put ''IHZlPShmZS5sZW5ndGgtZGUpJTM7cmV0dXJuIDA9PT12ZT9mZS50b1N0cmluZygiYmFzZTY0IixkZSk6KHRoaXMubGFzdE5lZWQ9My12ZSx0aGlzLmxhc3RUb3RhbD0zLDE9PT12ZT90aGlzLmxhc3RDaGFyWzBdPWZlW2ZlLmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT1mZVtmZS5sZW5n''@;'; put 'put ''dGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1mZVtmZS5sZW5ndGgtMV0pLGZlLnRvU3RyaW5nKCJiYXNlNjQiLGRlLGZlLmxlbmd0aC12ZSkpfWZ1bmN0aW9uIEooZmUpe3ZhciBkZT1mZSYmZmUubGVuZ3RoP3RoaXMud3JpdGUoZmUpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP2RlK3RoaXMubGFz''@;'; put 'put ''dENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQpOmRlfWZ1bmN0aW9uIHNlKGZlKXtyZXR1cm4gZmUudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gYWUoZmUpe3JldHVybiBmZSYmZmUubGVuZ3RoP3RoaXMud3JpdGUoZmUpOiIifUplLnM9VSxVLnByb3Rv''@;'; put 'put ''dHlwZS53cml0ZT1mdW5jdGlvbihmZSl7aWYoMD09PWZlLmxlbmd0aClyZXR1cm4iIjt2YXIgZGUsdmU7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KGRlPXRoaXMuZmlsbExhc3QoZmUpKSlyZXR1cm4iIjt2ZT10aGlzLmxhc3ROZWVkLHRoaXMubGFzdE5lZWQ9MH1lbHNlIHZlPTA7''@;'; put 'put ''cmV0dXJuIHZlPGZlLmxlbmd0aD9kZT9kZSt0aGlzLnRleHQoZmUsdmUpOnRoaXMudGV4dChmZSx2ZSk6ZGV8fCIifSxVLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24gVyhmZSl7dmFyIGRlPWZlJiZmZS5sZW5ndGg/dGhpcy53cml0ZShmZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZGUrIlx1''@;'; put 'put ''ZmZmZCI6ZGV9LFUucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24gWShmZSxkZSl7dmFyIHZlPWZ1bmN0aW9uIFooZmUsZGUsdmUpe3ZhciBBZT1kZS5sZW5ndGgtMTtpZihBZTx2ZSlyZXR1cm4gMDt2YXIga2U9UShkZVtBZV0pO3JldHVybiBrZT49MD8oa2U+MCYmKGZlLmxhc3ROZWVkPWtlLTEp''@;'; put 'put ''LGtlKTotLUFlPHZlfHwtMj09PWtlPzA6KGtlPVEoZGVbQWVdKSk+PTA/KGtlPjAmJihmZS5sYXN0TmVlZD1rZS0yKSxrZSk6LS1BZTx2ZXx8LTI9PT1rZT8wOihrZT1RKGRlW0FlXSkpPj0wPyhrZT4wJiYoMj09PWtlP2tlPTA6ZmUubGFzdE5lZWQ9a2UtMyksa2UpOjB9KHRoaXMsZmUsZGUp''@;'; put 'put ''O2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiBmZS50b1N0cmluZygidXRmOCIsZGUpO3RoaXMubGFzdFRvdGFsPXZlO3ZhciBBZT1mZS5sZW5ndGgtKHZlLXRoaXMubGFzdE5lZWQpO3JldHVybiBmZS5jb3B5KHRoaXMubGFzdENoYXIsMCxBZSksZmUudG9TdHJpbmcoInV0ZjgiLGRlLEFlKX0s''@;'; put 'put ''VS5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24oZmUpe2lmKHRoaXMubGFzdE5lZWQ8PWZlLmxlbmd0aClyZXR1cm4gZmUuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMu''@;'; put 'put ''ZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7ZmUuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCxmZS5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPWZlLmxlbmd0aH19LDMwODU4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDkzMTcyKSxCPWdlLkJ1ZmZlcjtm''@;'; put 'put ''dW5jdGlvbiBFKFUsUSl7Zm9yKHZhciBaIGluIFUpUVtaXT1VW1pdfWZ1bmN0aW9uIE1lKFUsUSxaKXtyZXR1cm4gQihVLFEsWil9Qi5mcm9tJiZCLmFsbG9jJiZCLmFsbG9jVW5zYWZlJiZCLmFsbG9jVW5zYWZlU2xvdz9YZS5leHBvcnRzPWdlOihFKGdlLEplKSxKZS5CdWZmZXI9TWUpLE1l''@;'; put 'put ''LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEIucHJvdG90eXBlKSxFKEIsTWUpLE1lLmZyb209ZnVuY3Rpb24oVSxRLFope2lmKCJudW1iZXIiPT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBCKFUsUSxaKX0sTWUu''@;'; put 'put ''YWxsb2M9ZnVuY3Rpb24oVSxRLFope2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIGllPUIoVSk7cmV0dXJuIHZvaWQgMCE9PVE/InN0cmluZyI9PXR5cGVvZiBaP2llLmZpbGwoUSxaKTppZS5maWxsKFEp''@;'; put 'put ''OmllLmZpbGwoMCksaWV9LE1lLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKFUpe2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIEIoVSl9LE1lLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihVKXtpZigibnVt''@;'; put 'put ''YmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBnZS5TbG93QnVmZmVyKFUpfX0sMjQ4Nzk6KFhlLEplLEwpPT57dmFyIGdlPUwoOTk1NjUpO1hlLmV4cG9ydHM9e1RleHRFbmNvZGVyOmdlLlRleHRFbmNvZGVyLFRl''@;'; put 'put ''eHREZWNvZGVyOmdlLlRleHREZWNvZGVyfX0sODYzODk6ZnVuY3Rpb24oWGUpeyFmdW5jdGlvbihKZSl7InVzZSBzdHJpY3QiO1hlLmV4cG9ydHMmJihYZS5leHBvcnRzPUplKSxKZVsiZW5jb2RpbmctaW5kZXhlcyJdPXtiaWc1OltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzM5MiwxOTUwNiwxNzkyMywxNzgzMCwxNzc4NCwxNjAzNTksMTk4MzEsMTc4NDMsMTYyOTkzLDE5NjgyLDE2MzAxMywxNTI1MywxODIzMCwxODI0NCwxOTUyNywxOTUyMCwxNDgxNTksMTQ0''@;'; put 'put ''OTE5LDE2MDU5NCwxNTkzNzEsMTU5OTU0LDE5NTQzLDE3Mjg4MSwxODI1NSwxNzg4MiwxOTU4OSwxNjI5MjQsMTk3MTksMTkxMDgsMTgwODEsMTU4NDk5LDI5MjIxLDE1NDE5NiwxMzc4MjcsMTQ2OTUwLDE0NzI5NywyNjE4OSwyMjI2NyxudWxsLDMyMTQ5LDIyODEzLDE2Njg0MSwxNTg2MCwz''@;'; put 'put ''ODcwOCwxNjI3OTksMjM1MTUsMTM4NTkwLDIzMjA0LDEzODYxLDE3MTY5NiwyMzI0OSwyMzQ3OSwyMzgwNCwyNjQ3OCwzNDE5NSwxNzAzMDksMjk3OTMsMjk4NTMsMTQ0NTMsMTM4NTc5LDE0NTA1NCwxNTU2ODEsMTYxMDgsMTUzODIyLDE1MDkzLDMxNDg0LDQwODU1LDE0NzgwOSwxNjYxNTcs''@;'; put 'put ''MTQzODUwLDEzMzc3MCwxNDM5NjYsMTcxNjIsMzM5MjQsNDA4NTQsMzc5MzUsMTg3MzYsMzQzMjMsMjI2NzgsMzg3MzAsMzc0MDAsMzExODQsMzEyODIsMjYyMDgsMjcxNzcsMzQ5NzMsMjk3NzIsMzE2ODUsMjY0OTgsMzEyNzYsMjEwNzEsMzY5MzQsMTM1NDIsMjk2MzYsMTU1MDY1LDI5ODk0''@;'; put 'put ''LDQwOTAzLDIyNDUxLDE4NzM1LDIxNTgwLDE2Njg5LDE0NTAzOCwyMjU1MiwzMTM0NiwxNjI2NjEsMzU3MjcsMTgwOTQsMTU5MzY4LDE2NzY5LDE1NTAzMywzMTY2MiwxNDA0NzYsNDA5MDQsMTQwNDgxLDE0MDQ4OSwxNDA0OTIsNDA5MDUsMzQwNTIsMTQ0ODI3LDE2NTY0LDQwOTA2LDE3NjMz''@;'; put 'put ''LDE3NTYxNSwyNTI4MSwyODc4Miw0MDkwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDEyNzM2LDEyNzM3LDEyNzM4LDEyNzM5LDEyNzQwLDEzMTM0MCwxMjc0MSwxMzEyODEsMTMxMjc3LDEyNzQyLDEyNzQzLDEzMTI3NSwxMzkyNDAsMTI3NDQsMTMxMjc0LDEyNzQ1LDEyNzQ2LDEyNzQ3LDEyNzQ4LDEzMTM0MiwxMjc0OSwxMjc1MCwyNTYsMTkzLDQ2''@;'; put 'put ''MSwxOTIsMjc0LDIwMSwyODIsMjAwLDMzMiwyMTEsNDY1LDIxMCxudWxsLDc4NzAsbnVsbCw3ODcyLDIwMiwyNTcsMjI1LDQ2MiwyMjQsNTkzLDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUy''@;'; put 'put ''LG51bGwsNzg3MSxudWxsLDc4NzMsMjM0LDYwOSw5MTc4LDkxNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTcyOTY5LDEzNTQ5MyxudWxsLDI1ODY2LG51bGwsbnVsbCwy''@;'; put 'put ''MDAyOSwyODM4MSw0MDI3MCwzNzM0MyxudWxsLG51bGwsMTYxNTg5LDI1NzQ1LDIwMjUwLDIwMjY0LDIwMzkyLDIwODIyLDIwODUyLDIwODkyLDIwOTY0LDIxMTUzLDIxMTYwLDIxMzA3LDIxMzI2LDIxNDU3LDIxNDY0LDIyMjQyLDIyNzY4LDIyNzg4LDIyNzkxLDIyODM0LDIyODM2LDIzMzk4''@;'; put 'put ''LDIzNDU0LDIzNDU1LDIzNzA2LDI0MTk4LDI0NjM1LDI1OTkzLDI2NjIyLDI2NjI4LDI2NzI1LDI3OTgyLDI4ODYwLDMwMDA1LDMyNDIwLDMyNDI4LDMyNDQyLDMyNDU1LDMyNDYzLDMyNDc5LDMyNTE4LDMyNTY3LDMzNDAyLDMzNDg3LDMzNjQ3LDM1MjcwLDM1Nzc0LDM1ODEwLDM2NzEwLDM2''@;'; put 'put ''NzExLDM2NzE4LDI5NzEzLDMxOTk2LDMyMjA1LDI2OTUwLDMxNDMzLDIxMDMxLG51bGwsbnVsbCxudWxsLG51bGwsMzcyNjAsMzA5MDQsMzcyMTQsMzI5NTYsbnVsbCwzNjEwNywzMzAxNCwxMzM2MDcsbnVsbCxudWxsLDMyOTI3LDQwNjQ3LDE5NjYxLDQwMzkzLDQwNDYwLDE5NTE4LDE3MTUx''@;'; put 'put ''MCwxNTk3NTgsNDA0NTgsMTcyMzM5LDEzNzYxLG51bGwsMjgzMTQsMzMzNDIsMjk5NzcsbnVsbCwxODcwNSwzOTUzMiwzOTU2Nyw0MDg1NywzMTExMSwxNjQ5NzIsMTM4Njk4LDEzMjU2MCwxNDIwNTQsMjAwMDQsMjAwOTcsMjAwOTYsMjAxMDMsMjAxNTksMjAyMDMsMjAyNzksMTMzODgsMjA0''@;'; put 'put ''MTMsMTU5NDQsMjA0ODMsMjA2MTYsMTM0MzcsMTM0NTksMTM0NzcsMjA4NzAsMjI3ODksMjA5NTUsMjA5ODgsMjA5OTcsMjAxMDUsMjExMTMsMjExMzYsMjEyODcsMTM3NjcsMjE0MTcsMTM2NDksMjE0MjQsMTM2NTEsMjE0NDIsMjE1MzksMTM2NzcsMTM2ODIsMTM5NTMsMjE2NTEsMjE2Njcs''@;'; put 'put ''MjE2ODQsMjE2ODksMjE3MTIsMjE3NDMsMjE3ODQsMjE3OTUsMjE4MDAsMTM3MjAsMjE4MjMsMTM3MzMsMTM3NTksMjE5NzUsMTM3NjUsMTYzMjA0LDIxNzk3LG51bGwsMTM0MjEwLDEzNDQyMSwxNTE4NTEsMjE5MDQsMTQyNTM0LDE0ODI4LDEzMTkwNSwzNjQyMiwxNTA5NjgsMTY5MTg5LDE2''@;'; put 'put ''NDY3LDE2NDAzMCwzMDU4NiwxNDIzOTIsMTQ5MDAsMTgzODksMTY0MTg5LDE1ODE5NCwxNTEwMTgsMjU4MjEsMTM0NTI0LDEzNTA5MiwxMzQzNTcsMTM1NDEyLDI1NzQxLDM2NDc4LDEzNDgwNiwxMzQxNTUsMTM1MDEyLDE0MjUwNSwxNjQ0MzgsMTQ4NjkxLG51bGwsMTM0NDcwLDE3MDU3Mywx''@;'; put 'put ''NjQwNzMsMTg0MjAsMTUxMjA3LDE0MjUzMCwzOTYwMiwxNDk1MSwxNjk0NjAsMTYzNjUsMTM1NzQsMTUyMjYzLDE2OTk0MCwxNjE5OTIsMTQyNjYwLDQwMzAyLDM4OTMzLG51bGwsMTczNjksMTU1ODEzLDI1NzgwLDIxNzMxLDE0MjY2OCwxNDIyODIsMTM1Mjg3LDE0ODQzLDEzNTI3OSwxNTc0''@;'; put 'put ''MDIsMTU3NDYyLDE2MjIwOCwyNTgzNCwxNTE2MzQsMTM0MjExLDM2NDU2LDEzOTY4MSwxNjY3MzIsMTMyOTEzLG51bGwsMTg0NDMsMTMxNDk3LDE2Mzc4LDIyNjQzLDE0MjczMyxudWxsLDE0ODkzNiwxMzIzNDgsMTU1Nzk5LDEzNDk4OCwxMzQ1NTAsMjE4ODEsMTY1NzEsMTczMzgsbnVsbCwx''@;'; put 'put ''OTEyNCwxNDE5MjYsMTM1MzI1LDMzMTk0LDM5MTU3LDEzNDU1NiwyNTQ2NSwxNDg0NiwxNDExNzMsMzYyODgsMjIxNzcsMjU3MjQsMTU5MzksbnVsbCwxNzM1NjksMTM0NjY1LDE0MjAzMSwxNDI1MzcsbnVsbCwxMzUzNjgsMTQ1ODU4LDE0NzM4LDE0ODU0LDE2NDUwNywxMzY4OCwxNTUyMDks''@;'; put 'put ''MTM5NDYzLDIyMDk4LDEzNDk2MSwxNDI1MTQsMTY5NzYwLDEzNTAwLDI3NzA5LDE1MTA5OSxudWxsLG51bGwsMTYxMTQwLDE0Mjk4NywxMzk3ODQsMTczNjU5LDE2NzExNywxMzQ3NzgsMTM0MTk2LDE1NzcyNCwzMjY1OSwxMzUzNzUsMTQxMzE1LDE0MTYyNSwxMzgxOSwxNTIwMzUsMTM0Nzk2''@;'; put 'put ''LDEzNTA1MywxMzQ4MjYsMTYyNzUsMTM0OTYwLDEzNDQ3MSwxMzU1MDMsMTM0NzMyLG51bGwsMTM0ODI3LDEzNDA1NywxMzQ0NzIsMTM1MzYwLDEzNTQ4NSwxNjM3NywxNDA5NTAsMjU2NTAsMTM1MDg1LDE0NDM3MiwxNjEzMzcsMTQyMjg2LDEzNDUyNiwxMzQ1MjcsMTQyNDE3LDE0MjQyMSwx''@;'; put 'put ''NDg3MiwxMzQ4MDgsMTM1MzY3LDEzNDk1OCwxNzM2MTgsMTU4NTQ0LDE2NzEyMiwxNjczMjEsMTY3MTE0LDM4MzE0LDIxNzA4LDMzNDc2LDIxOTQ1LG51bGwsMTcxNzE1LDM5OTc0LDM5NjA2LDE2MTYzMCwxNDI4MzAsMjg5OTIsMzMxMzMsMzMwMDQsMjM1ODAsMTU3MDQyLDMzMDc2LDE0MjMx''@;'; put 'put ''LDIxMzQzLDE2NDAyOSwzNzMwMiwxMzQ5MDYsMTM0NjcxLDEzNDc3NSwxMzQ5MDcsMTM3ODksMTUxMDE5LDEzODMzLDEzNDM1OCwyMjE5MSwxNDEyMzcsMTM1MzY5LDEzNDY3MiwxMzQ3NzYsMTM1Mjg4LDEzNTQ5NiwxNjQzNTksMTM2Mjc3LDEzNDc3NywxNTExMjAsMTQyNzU2LDIzMTI0LDEz''@;'; put 'put ''NTE5NywxMzUxOTgsMTM1NDEzLDEzNTQxNCwyMjQyOCwxMzQ2NzMsMTYxNDI4LDE2NDU1NywxMzUwOTMsMTM0Nzc5LDE1MTkzNCwxNDA4MywxMzUwOTQsMTM1NTUyLDE1MjI4MCwxNzI3MzMsMTQ5OTc4LDEzNzI3NCwxNDc4MzEsMTY0NDc2LDIyNjgxLDIxMDk2LDEzODUwLDE1MzQwNSwzMTY2''@;'; put 'put ''NiwyMzQwMCwxODQzMiwxOTI0NCw0MDc0MywxODkxOSwzOTk2NywzOTgyMSwxNTQ0ODQsMTQzNjc3LDIyMDExLDEzODEwLDIyMTUzLDIwMDA4LDIyNzg2LDEzODE3NywxOTQ2ODAsMzg3MzcsMTMxMjA2LDIwMDU5LDIwMTU1LDEzNjMwLDIzNTg3LDI0NDAxLDI0NTE2LDE0NTg2LDI1MTY0LDI1''@;'; put 'put ''OTA5LDI3NTE0LDI3NzAxLDI3NzA2LDI4NzgwLDI5MjI3LDIwMDEyLDI5MzU3LDE0OTczNywzMjU5NCwzMTAzNSwzMTk5MywzMjU5NSwxNTYyNjYsMTM1MDUsbnVsbCwxNTY0OTEsMzI3NzAsMzI4OTYsMTU3MjAyLDE1ODAzMywyMTM0MSwzNDkxNiwzNTI2NSwxNjE5NzAsMzU3NDQsMzYxMjUs''@;'; put 'put ''MzgwMjEsMzgyNjQsMzgyNzEsMzgzNzYsMTY3NDM5LDM4ODg2LDM5MDI5LDM5MTE4LDM5MTM0LDM5MjY3LDE3ZTQsNDAwNjAsNDA0NzksNDA2NDQsMjc1MDMsNjM3NTEsMjAwMjMsMTMxMjA3LDM4NDI5LDI1MTQzLDM4MDUwLG51bGwsMjA1MzksMjgxNTgsMTcxMTIzLDQwODcwLDE1ODE3LDM0''@;'; put 'put ''OTU5LDE0Nzc5MCwyODc5MSwyMzc5NywxOTIzMiwxNTIwMTMsMTM2NTcsMTU0OTI4LDI0ODY2LDE2NjQ1MCwzNjc3NSwzNzM2NiwyOTA3MywyNjM5MywyOTYyNiwxNDQwMDEsMTcyMjk1LDE1NDk5LDEzNzYwMCwxOTIxNiwzMDk0OCwyOTY5OCwyMDkxMCwxNjU2NDcsMTYzOTMsMjcyMzUsMTcy''@;'; put 'put ''NzMwLDE2OTMxLDM0MzE5LDEzMzc0MywzMTI3NCwxNzAzMTEsMTY2NjM0LDM4NzQxLDI4NzQ5LDIxMjg0LDEzOTM5MCwzNzg3NiwzMDQyNSwxNjYzNzEsNDA4NzEsMzA2ODUsMjAxMzEsMjA0NjQsMjA2NjgsMjAwMTUsMjAyNDcsNDA4NzIsMjE1NTYsMzIxMzksMjI2NzQsMjI3MzYsMTM4Njc4''@;'; put 'put ''LDI0MjEwLDI0MjE3LDI0NTE0LDE0MTA3NCwyNTk5NSwxNDQzNzcsMjY5MDUsMjcyMDMsMTQ2NTMxLDI3OTAzLG51bGwsMjkxODQsMTQ4NzQxLDI5NTgwLDE2MDkxLDE1MDAzNSwyMzMxNywyOTg4MSwzNTcxNSwxNTQ3ODgsMTUzMjM3LDMxMzc5LDMxNzI0LDMxOTM5LDMyMzY0LDMzNTI4LDM0''@;'; put 'put ''MTk5LDQwODczLDM0OTYwLDQwODc0LDM2NTM3LDQwODc1LDM2ODE1LDM0MTQzLDM5MzkyLDM3NDA5LDQwODc2LDE2NzM1MywxMzYyNTUsMTY0OTcsMTcwNTgsMjMwNjYsbnVsbCxudWxsLG51bGwsMzkwMTYsMjY0NzUsMTcwMTQsMjIzMzMsbnVsbCwzNDI2MiwxNDk4ODMsMzM0NzEsMTYwMDEz''@;'; put 'put ''LDE5NTg1LDE1OTA5MiwyMzkzMSwxNTg0ODUsMTU5Njc4LDQwODc3LDQwODc4LDIzNDQ2LDQwODc5LDI2MzQzLDMyMzQ3LDI4MjQ3LDMxMTc4LDE1NzUyLDE3NjAzLDE0Mzk1OCwxNDEyMDYsMTczMDYsMTc3MTgsbnVsbCwyMzc2NSwxNDYyMDIsMzU1NzcsMjM2NzIsMTU2MzQsMTQ0NzIxLDIz''@;'; put 'put ''OTI4LDQwODgyLDI5MDE1LDE3NzUyLDE0NzY5MiwxMzg3ODcsMTk1NzUsMTQ3MTIsMTMzODYsMTMxNDkyLDE1ODc4NSwzNTUzMiwyMDQwNCwxMzE2NDEsMjI5NzUsMzMxMzIsMzg5OTgsMTcwMjM0LDI0Mzc5LDEzNDA0NyxudWxsLDEzOTcxMywxNjYyNTMsMTY2NDIsMTgxMDcsMTY4MDU3LDE2''@;'; put 'put ''MTM1LDQwODgzLDE3MjQ2OSwxNjYzMiwxNDI5NCwxODE2NywxNTg3OTAsMTY3NjQsMTY1NTU0LDE2MDc2NywxNzc3MywxNDU0OCwxNTI3MzAsMTc3NjEsMTc2OTEsMTk4NDksMTk1NzksMTk4MzAsMTc4OTgsMTYzMjgsMTUwMjg3LDEzOTIxLDE3NjMwLDE3NTk3LDE2ODc3LDIzODcwLDIzODgw''@;'; put 'put ''LDIzODk0LDE1ODY4LDE0MzUxLDIzOTcyLDIzOTkzLDE0MzY4LDE0MzkyLDI0MTMwLDI0MjUzLDI0MzU3LDI0NDUxLDE0NjAwLDE0NjEyLDE0NjU1LDE0NjY5LDI0NzkxLDI0ODkzLDIzNzgxLDE0NzI5LDI1MDE1LDI1MDE3LDI1MDM5LDE0Nzc2LDI1MTMyLDI1MjMyLDI1MzE3LDI1MzY4LDE0''@;'; put 'put ''ODQwLDIyMTkzLDE0ODUxLDI1NTcwLDI1NTk1LDI1NjA3LDI1NjkwLDE0OTIzLDI1NzkyLDIzODI5LDIyMDQ5LDQwODYzLDE0OTk5LDI1OTkwLDE1MDM3LDI2MTExLDI2MTk1LDE1MDkwLDI2MjU4LDE1MTM4LDI2MzkwLDE1MTcwLDI2NTMyLDI2NjI0LDE1MTkyLDI2Njk4LDI2NzU2LDE1MjE4''@;'; put 'put ''LDE1MjE3LDE1MjI3LDI2ODg5LDI2OTQ3LDI5Mjc2LDI2OTgwLDI3MDM5LDI3MDEzLDE1MjkyLDI3MDk0LDE1MzI1LDI3MjM3LDI3MjUyLDI3MjQ5LDI3MjY2LDE1MzQwLDI3Mjg5LDE1MzQ2LDI3MzA3LDI3MzE3LDI3MzQ4LDI3MzgyLDI3NTIxLDI3NTg1LDI3NjI2LDI3NzY1LDI3ODE4LDE1''@;'; put 'put ''NTYzLDI3OTA2LDI3OTEwLDI3OTQyLDI4MDMzLDE1NTk5LDI4MDY4LDI4MDgxLDI4MTgxLDI4MTg0LDI4MjAxLDI4Mjk0LDE2NjMzNiwyODM0NywyODM4NiwyODM3OCw0MDgzMSwyODM5MiwyODM5MywyODQ1MiwyODQ2OCwxNTY4NiwxNDcyNjUsMjg1NDUsMjg2MDYsMTU3MjIsMTU3MzMsMjkx''@;'; put 'put ''MTEsMjM3MDUsMTU3NTQsMjg3MTYsMTU3NjEsMjg3NTIsMjg3NTYsMjg3ODMsMjg3OTksMjg4MDksMTMxODc3LDE3MzQ1LDEzODA5LDEzNDg3MiwxNDcxNTksMjI0NjIsMTU5NDQzLDI4OTkwLDE1MzU2OCwxMzkwMiwyNzA0MiwxNjY4ODksMjM0MTIsMzEzMDUsMTUzODI1LDE2OTE3NywzMTMz''@;'; put 'put ''MywzMTM1NywxNTQwMjgsMzE0MTksMzE0MDgsMzE0MjYsMzE0MjcsMjkxMzcsMTU2ODEzLDE2ODQyLDMxNDUwLDMxNDUzLDMxNDY2LDE2ODc5LDIxNjgyLDE1NDYyNSwzMTQ5OSwzMTU3MywzMTUyOSwxNTIzMzQsMTU0ODc4LDMxNjUwLDMxNTk5LDMzNjkyLDE1NDU0OCwxNTg4NDcsMzE2OTYs''@;'; put 'put ''MzM4MjUsMzE2MzQsMzE2NzIsMTU0OTEyLDE1Nzg5LDE1NDcyNSwzMzkzOCwzMTczOCwzMTc1MCwzMTc5NywxNTQ4MTcsMzE4MTIsMzE4NzUsMTQ5NjM0LDMxOTEwLDI2MjM3LDE0ODg1NiwzMTk0NSwzMTk0MywzMTk3NCwzMTg2MCwzMTk4NywzMTk4OSwzMTk1MCwzMjM1OSwxNzY5MywxNTkz''@;'; put 'put ''MDAsMzIwOTMsMTU5NDQ2LDI5ODM3LDMyMTM3LDMyMTcxLDI4OTgxLDMyMTc5LDMyMjEwLDE0NzU0MywxNTU2ODksMzIyMjgsMTU2MzUsMzIyNDUsMTM3MjA5LDMyMjI5LDE2NDcxNywzMjI4NSwxNTU5MzcsMTU1OTk0LDMyMzY2LDMyNDAyLDE3MTk1LDM3OTk2LDMyMjk1LDMyNTc2LDMyNTc3''@;'; put 'put ''LDMyNTgzLDMxMDMwLDE1NjM2OCwzOTM5MywzMjY2MywxNTY0OTcsMzI2NzUsMTM2ODAxLDEzMTE3NiwxNzc1NiwxNDUyNTQsMTc2NjcsMTY0NjY2LDMyNzYyLDE1NjgwOSwzMjc3MywzMjc3NiwzMjc5NywzMjgwOCwzMjgxNSwxNzIxNjcsMTU4OTE1LDMyODI3LDMyODI4LDMyODY1LDE0MTA3''@;'; put 'put ''NiwxODgyNSwxNTcyMjIsMTQ2OTE1LDE1NzQxNiwyNjQwNSwzMjkzNSwxNjY0NzIsMzMwMzEsMzMwNTAsMjI3MDQsMTQxMDQ2LDI3Nzc1LDE1NjgyNCwxNTE0ODAsMjU4MzEsMTM2MzMwLDMzMzA0LDEzNzMxMCwyNzIxOSwxNTAxMTcsMTUwMTY1LDE3NTMwLDMzMzIxLDEzMzkwMSwxNTgyOTAs''@;'; put 'put ''MTQ2ODE0LDIwNDczLDEzNjQ0NSwzNDAxOCwzMzYzNCwxNTg0NzQsMTQ5OTI3LDE0NDY4OCwxMzcwNzUsMTQ2OTM2LDMzNDUwLDI2OTA3LDE5NDk2NCwxNjg1OSwzNDEyMywzMzQ4OCwzMzU2MiwxMzQ2NzgsMTM3MTQwLDE0MDE3LDE0Mzc0MSwxNDQ3MzAsMzM0MDMsMzM1MDYsMzM1NjAsMTQ3''@;'; put 'put ''MDgzLDE1OTEzOSwxNTg0NjksMTU4NjE1LDE0NDg0NiwxNTgwNywzMzU2NSwyMTk5NiwzMzY2OSwxNzY3NSwxNTkxNDEsMzM3MDgsMzM3MjksMzM3NDcsMTM0MzgsMTU5NDQ0LDI3MjIzLDM0MTM4LDEzNDYyLDE1OTI5OCwxNDMwODcsMzM4ODAsMTU0NTk2LDMzOTA1LDE1ODI3LDE3NjM2LDI3''@;'; put 'put ''MzAzLDMzODY2LDE0NjYxMywzMTA2NCwzMzk2MCwxNTg2MTQsMTU5MzUxLDE1OTI5OSwzNDAxNCwzMzgwNywzMzY4MSwxNzU2OCwzMzkzOSwzNDAyMCwxNTQ3NjksMTY5NjAsMTU0ODE2LDE3NzMxLDM0MTAwLDIzMjgyLDE1OTM4NSwxNzcwMywzNDE2MywxNzY4NiwyNjU1OSwzNDMyNiwxNjU0''@;'; put 'put ''MTMsMTY1NDM1LDM0MjQxLDE1OTg4MCwzNDMwNiwxMzY1NzgsMTU5OTQ5LDE5NDk5NCwxNzc3MCwzNDM0NCwxMzg5NiwxMzczNzgsMjE0OTUsMTYwNjY2LDM0NDMwLDM0NjczLDE3MjI4MCwzNDc5OCwxNDIzNzUsMzQ3MzcsMzQ3NzgsMzQ4MzEsMjIxMTMsMzQ0MTIsMjY3MTAsMTc5MzUsMzQ4''@;'; put 'put ''ODUsMzQ4ODYsMTYxMjQ4LDE0Njg3MywxNjEyNTIsMzQ5MTAsMzQ5NzIsMTgwMTEsMzQ5OTYsMzQ5OTcsMjU1MzcsMzUwMTMsMzA1ODMsMTYxNTUxLDM1MjA3LDM1MjEwLDM1MjM4LDM1MjQxLDM1MjM5LDM1MjYwLDE2NjQzNywzNTMwMywxNjIwODQsMTYyNDkzLDM1NDg0LDMwNjExLDM3Mzc0''@;'; put 'put ''LDM1NDcyLDE2MjM5MywzMTQ2NSwxNjI2MTgsMTQ3MzQzLDE4MTk1LDE2MjYxNiwyOTA1MiwzNTU5NiwzNTYxNSwxNTI2MjQsMTUyOTMzLDM1NjQ3LDM1NjYwLDM1NjYxLDM1NDk3LDE1MDEzOCwzNTcyOCwzNTczOSwzNTUwMywxMzY5MjcsMTc5NDEsMzQ4OTUsMzU5OTUsMTYzMTU2LDE2MzIx''@;'; put 'put ''NSwxOTUwMjgsMTQxMTcsMTYzMTU1LDM2MDU0LDE2MzIyNCwxNjMyNjEsMzYxMTQsMzYwOTksMTM3NDg4LDM2MDU5LDI4NzY0LDM2MTEzLDE1MDcyOSwxNjA4MCwzNjIxNSwzNjI2NSwxNjM4NDIsMTM1MTg4LDE0OTg5OCwxNTIyOCwxNjQyODQsMTYwMDEyLDMxNDYzLDM2NTI1LDM2NTM0LDM2''@;'; put 'put ''NTQ3LDM3NTg4LDM2NjMzLDM2NjUzLDE2NDcwOSwxNjQ4ODIsMzY3NzMsMzc2MzUsMTcyNzAzLDEzMzcxMiwzNjc4NywxODczMCwxNjYzNjYsMTY1MTgxLDE0Njg3NSwyNDMxMiwxNDM5NzAsMzY4NTcsMTcyMDUyLDE2NTU2NCwxNjUxMjEsMTQwMDY5LDE0NzIwLDE1OTQ0NywzNjkxOSwxNjUx''@;'; put 'put ''ODAsMTYyNDk0LDM2OTYxLDE2NTIyOCwxNjUzODcsMzcwMzIsMTY1NjUxLDM3MDYwLDE2NTYwNiwzNzAzOCwzNzExNywzNzIyMywxNTA4OCwzNzI4OSwzNzMxNiwzMTkxNiwxNjYxOTUsMTM4ODg5LDM3MzkwLDI3ODA3LDM3NDQxLDM3NDc0LDE1MzAxNywzNzU2MSwxNjY1OTgsMTQ2NTg3LDE2''@;'; put 'put ''NjY2OCwxNTMwNTEsMTM0NDQ5LDM3Njc2LDM3NzM5LDE2NjYyNSwxNjY4OTEsMjg4MTUsMjMyMzUsMTY2NjI2LDE2NjYyOSwxODc4OSwzNzQ0NCwxNjY4OTIsMTY2OTY5LDE2NjkxMSwzNzc0NywzNzk3OSwzNjU0MCwzODI3NywzODMxMCwzNzkyNiwzODMwNCwyODY2MiwxNzA4MSwxNDA5MjIs''@;'; put 'put ''MTY1NTkyLDEzNTgwNCwxNDY5OTAsMTg5MTEsMjc2NzYsMzg1MjMsMzg1NTAsMTY3NDgsMzg1NjMsMTU5NDQ1LDI1MDUwLDM4NTgyLDMwOTY1LDE2NjYyNCwzODU4OSwyMTQ1MiwxODg0OSwxNTg5MDQsMTMxNzAwLDE1NjY4OCwxNjgxMTEsMTY4MTY1LDE1MDIyNSwxMzc0OTMsMTQ0MTM4LDM4''@;'; put 'put ''NzA1LDM0MzcwLDM4NzEwLDE4OTU5LDE3NzI1LDE3Nzk3LDE1MDI0OSwyODc4OSwyMzM2MSwzODY4MywzODc0OCwxNjg0MDUsMzg3NDMsMjMzNzAsMTY4NDI3LDM4NzUxLDM3OTI1LDIwNjg4LDE0MzU0MywxNDM1NDgsMzg3OTMsMzg4MTUsMzg4MzMsMzg4NDYsMzg4NDgsMzg4NjYsMzg4ODAs''@;'; put 'put ''MTUyNjg0LDM4ODk0LDI5NzI0LDE2OTAxMSwzODkxMSwzODkwMSwxNjg5ODksMTYyMTcwLDE5MTUzLDM4OTY0LDM4OTYzLDM4OTg3LDM5MDE0LDE1MTE4LDE2MDExNywxNTY5NywxMzI2NTYsMTQ3ODA0LDE1MzM1MCwzOTExNCwzOTA5NSwzOTExMiwzOTExMSwxOTE5OSwxNTkwMTUsMTM2OTE1''@;'; put 'put ''LDIxOTM2LDM5MTM3LDM5MTQyLDM5MTQ4LDM3NzUyLDM5MjI1LDE1MDA1NywxOTMxNCwxNzAwNzEsMTcwMjQ1LDM5NDEzLDM5NDM2LDM5NDgzLDM5NDQwLDM5NTEyLDE1MzM4MSwxNDAyMCwxNjgxMTMsMTcwOTY1LDM5NjQ4LDM5NjUwLDE3MDc1NywzOTY2OCwxOTQ3MCwzOTcwMCwzOTcyNSwx''@;'; put 'put ''NjUzNzYsMjA1MzIsMzk3MzIsMTU4MTIwLDE0NTMxLDE0MzQ4NSwzOTc2MCwzOTc0NCwxNzEzMjYsMjMxMDksMTM3MzE1LDM5ODIyLDE0ODA0MywzOTkzOCwzOTkzNSwzOTk0OCwxNzE2MjQsNDA0MDQsMTcxOTU5LDE3MjQzNCwxNzI0NTksMTcyMjU3LDE3MjMyMywxNzI1MTEsNDAzMTgsNDAz''@;'; put 'put ''MjMsMTcyMzQwLDQwNDYyLDI2NzYwLDQwMzg4LDEzOTYxMSwxNzI0MzUsMTcyNTc2LDEzNzUzMSwxNzI1OTUsNDAyNDksMTcyMjE3LDE3MjcyNCw0MDU5Miw0MDU5Nyw0MDYwNiw0MDYxMCwxOTc2NCw0MDYxOCw0MDYyMywxNDgzMjQsNDA2NDEsMTUyMDAsMTQ4MjEsMTU2NDUsMjAyNzQsMTQy''@;'; put 'put ''NzAsMTY2OTU1LDQwNzA2LDQwNzEyLDE5MzUwLDM3OTI0LDE1OTEzOCw0MDcyNyw0MDcyNiw0MDc2MSwyMjE3NSwyMjE1NCw0MDc3MywzOTM1MiwxNjgwNzUsMzg4OTgsMzM5MTksNDA4MDIsNDA4MDksMzE0NTIsNDA4NDYsMjkyMDYsMTkzOTAsMTQ5ODc3LDE0OTk0NywyOTA0NywxNTAwMDgs''@;'; put 'put ''MTQ4Mjk2LDE1MDA5NywyOTU5OCwxNjY4NzQsMTM3NDY2LDMxMTM1LDE2NjI3MCwxNjc0NzgsMzc3MzcsMzc4NzUsMTY2NDY4LDM3NjEyLDM3NzYxLDM3ODM1LDE2NjI1MiwxNDg2NjUsMjkyMDcsMTYxMDcsMzA1NzgsMzEyOTksMjg4ODAsMTQ4NTk1LDE0ODQ3MiwyOTA1NCwxMzcxOTksMjg4''@;'; put 'put ''MzUsMTM3NDA2LDE0NDc5MywxNjA3MSwxMzczNDksMTUyNjIzLDEzNzIwOCwxNDExNCwxMzY5NTUsMTM3MjczLDE0MDQ5LDEzNzA3NiwxMzc0MjUsMTU1NDY3LDE0MTE1LDEzNjg5NiwyMjM2MywxNTAwNTMsMTM2MTkwLDEzNTg0OCwxMzYxMzQsMTM2Mzc0LDM0MDUxLDE0NTA2MiwzNDA1MSwz''@;'; put 'put ''Mzg3NywxNDk5MDgsMTYwMTAxLDE0Njk5MywxNTI5MjQsMTQ3MTk1LDE1OTgyNiwxNzY1MiwxNDUxMzQsMTcwMzk3LDE1OTUyNiwyNjYxNywxNDEzMSwxNTM4MSwxNTg0NywyMjYzNiwxMzc1MDYsMjY2NDAsMTY0NzEsMTQ1MjE1LDE0NzY4MSwxNDc1OTUsMTQ3NzI3LDE1ODc1MywyMTcwNywy''@;'; put 'put ''MjE3NCwxNTczNjEsMjIxNjIsMTM1MTM1LDEzNDA1NiwxMzQ2NjksMzc4MzAsMTY2Njc1LDM3Nzg4LDIwMjE2LDIwNzc5LDE0MzYxLDE0ODUzNCwyMDE1NiwxMzIxOTcsMTMxOTY3LDIwMjk5LDIwMzYyLDE1MzE2OSwyMzE0NCwxMzE0OTksMTMyMDQzLDE0NzQ1LDEzMTg1MCwxMzIxMTYsMTMz''@;'; put 'put ''NjUsMjAyNjUsMTMxNzc2LDE2NzYwMywxMzE3MDEsMzU1NDYsMTMxNTk2LDIwMTIwLDIwNjg1LDIwNzQ5LDIwMzg2LDIwMjI3LDE1MDAzMCwxNDcwODIsMjAyOTAsMjA1MjYsMjA1ODgsMjA2MDksMjA0MjgsMjA0NTMsMjA1NjgsMjA3MzIsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjgyNzgs''@;'; put 'put ''MTQ0Nzg5LDE0NzAwMSwxNDcxMzUsMjgwMTgsMTM3MzQ4LDE0NzA4MSwyMDkwNCwyMDkzMSwxMzI1NzYsMTc2MjksMTMyMjU5LDEzMjI0MiwxMzIyNDEsMzYyMTgsMTY2NTU2LDEzMjg3OCwyMTA4MSwyMTE1NiwxMzMyMzUsMjEyMTcsMzc3NDIsMTgwNDIsMjkwNjgsMTQ4MzY0LDEzNDE3Niwx''@;'; put 'put ''NDk5MzIsMTM1Mzk2LDI3MDg5LDEzNDY4NSwyOTgxNywxNjA5NCwyOTg0OSwyOTcxNiwyOTc4MiwyOTU5MiwxOTM0MiwxNTAyMDQsMTQ3NTk3LDIxNDU2LDEzNzAwLDI5MTk5LDE0NzY1NywyMTk0MCwxMzE5MDksMjE3MDksMTM0MDg2LDIyMzAxLDM3NDY5LDM4NjQ0LDM3NzM0LDIyNDkzLDIy''@;'; put 'put ''NDEzLDIyMzk5LDEzODg2LDIyNzMxLDIzMTkzLDE2NjQ3MCwxMzY5NTQsMTM3MDcxLDEzNjk3NiwyMzA4NCwyMjk2OCwzNzUxOSwyMzE2NiwyMzI0NywyMzA1OCwxNTM5MjYsMTM3NzE1LDEzNzMxMywxNDgxMTcsMTQwNjksMjc5MDksMjk3NjMsMjMwNzMsMTU1MjY3LDIzMTY5LDE2Njg3MSwx''@;'; put 'put ''MzIxMTUsMzc4NTYsMjk4MzYsMTM1OTM5LDI4OTMzLDE4ODAyLDM3ODk2LDE2NjM5NSwzNzgyMSwxNDI0MCwyMzU4MiwyMzcxMCwyNDE1OCwyNDEzNiwxMzc2MjIsMTM3NTk2LDE0NjE1OCwyNDI2OSwyMzM3NSwxMzc0NzUsMTM3NDc2LDE0MDgxLDEzNzM3NiwxNDA0NSwxMzY5NTgsMTQwMzUs''@;'; put 'put ''MzMwNjYsMTY2NDcxLDEzODY4MiwxNDQ0OTgsMTY2MzEyLDI0MzMyLDI0MzM0LDEzNzUxMSwxMzcxMzEsMjMxNDcsMTM3MDE5LDIzMzY0LDM0MzI0LDE2MTI3NywzNDkxMiwyNDcwMiwxNDE0MDgsMTQwODQzLDI0NTM5LDE2MDU2LDE0MDcxOSwxNDA3MzQsMTY4MDcyLDE1OTYwMywyNTAyNCwx''@;'; put 'put ''MzExMzQsMTMxMTQyLDE0MDgyNywyNDk4NSwyNDk4NCwyNDY5MywxNDI0OTEsMTQyNTk5LDE0OTIwNCwxNjgyNjksMjU3MTMsMTQ5MDkzLDE0MjE4NiwxNDg4OSwxNDIxMTQsMTQ0NDY0LDE3MDIxOCwxNDI5NjgsMjUzOTksMTczMTQ3LDI1NzgyLDI1MzkzLDI1NTUzLDE0OTk4NywxNDI2OTUs''@;'; put 'put ''MjUyNTIsMTQyNDk3LDI1NjU5LDI1OTYzLDI2OTk0LDE1MzQ4LDE0MzUwMiwxNDQwNDUsMTQ5ODk3LDE0NDA0MywyMTc3MywxNDQwOTYsMTM3NDMzLDE2OTAyMywyNjMxOCwxNDQwMDksMTQzNzk1LDE1MDcyLDE2Nzg0LDE1Mjk2NCwxNjY2OTAsMTUyOTc1LDEzNjk1NiwxNTI5MjMsMTUyNjEz''@;'; put 'put ''LDMwOTU4LDE0MzYxOSwxMzcyNTgsMTQzOTI0LDEzNDEyLDE0Mzg4NywxNDM3NDYsMTQ4MTY5LDI2MjU0LDE1OTAxMiwyNjIxOSwxOTM0NywyNjE2MCwxNjE5MDQsMTM4NzMxLDI2MjExLDE0NDA4MiwxNDQwOTcsMjYxNDIsMTUzNzE0LDE0NTQ1LDE0NTQ2NiwxNDUzNDAsMTUyNTcsMTQ1MzE0''@;'; put 'put ''LDE0NDM4MiwyOTkwNCwxNTI1NCwyNjUxMSwxNDkwMzQsMjY4MDYsMjY2NTQsMTUzMDAsMjczMjYsMTQ0MzUsMTQ1MzY1LDE0ODYxNSwyNzE4NywyNzIxOCwyNzMzNywyNzM5NywxMzc0OTAsMjU4NzMsMjY3NzYsMjcyMTIsMTUzMTksMjcyNTgsMjc0NzksMTQ3MzkyLDE0NjU4NiwzNzc5Miwz''@;'; put 'put ''NzYxOCwxNjY4OTAsMTY2NjAzLDM3NTEzLDE2Mzg3MCwxNjYzNjQsMzc5OTEsMjgwNjksMjg0MjcsMTQ5OTk2LDI4MDA3LDE0NzMyNywxNTc1OSwyODE2NCwxNDc1MTYsMjMxMDEsMjgxNzAsMjI1OTksMjc5NDAsMzA3ODYsMjg5ODcsMTQ4MjUwLDE0ODA4NiwyODkxMywyOTI2NCwyOTMxOSwy''@;'; put 'put ''OTMzMiwxNDkzOTEsMTQ5Mjg1LDIwODU3LDE1MDE4MCwxMzI1ODcsMjk4MTgsMTQ3MTkyLDE0NDk5MSwxNTAwOTAsMTQ5NzgzLDE1NTYxNywxNjEzNCwxNjA0OSwxNTAyMzksMTY2OTQ3LDE0NzI1MywyNDc0MywxNjExNSwyOTkwMCwyOTc1NiwzNzc2NywyOTc1MSwxNzU2NywxNTkyMTAsMTc3''@;'; put 'put ''NDUsMzAwODMsMTYyMjcsMTUwNzQ1LDE1MDc5MCwxNjIxNiwzMDAzNywzMDMyMywxNzM1MTAsMTUxMjksMjk4MDAsMTY2NjA0LDE0OTkzMSwxNDk5MDIsMTUwOTksMTU4MjEsMTUwMDk0LDE2MTI3LDE0OTk1NywxNDk3NDcsMzczNzAsMjIzMjIsMzc2OTgsMTY2NjI3LDEzNzMxNiwyMDcwMywx''@;'; put 'put ''NTIwOTcsMTUyMDM5LDMwNTg0LDE0MzkyMiwzMDQ3OCwzMDQ3OSwzMDU4NywxNDkxNDMsMTQ1MjgxLDE0OTQyLDE0OTc0NCwyOTc1MiwyOTg1MSwxNjA2MywxNTAyMDIsMTUwMjE1LDE2NTg0LDE1MDE2NiwxNTYwNzgsMzc2MzksMTUyOTYxLDMwNzUwLDMwODYxLDMwODU2LDMwOTMwLDI5NjQ4''@;'; put 'put ''LDMxMDY1LDE2MTYwMSwxNTMzMTUsMTY2NTQsMzExMzEsMzM5NDIsMzExNDEsMjcxODEsMTQ3MTk0LDMxMjkwLDMxMjIwLDE2NzUwLDEzNjkzNCwxNjY5MCwzNzQyOSwzMTIxNywxMzQ0NzYsMTQ5OTAwLDEzMTczNywxNDY4NzQsMTM3MDcwLDEzNzE5LDIxODY3LDEzNjgwLDEzOTk0LDEzMTU0''@;'; put 'put ''MCwxMzQxNTcsMzE0NTgsMjMxMjksMTQxMDQ1LDE1NDI4NywxNTQyNjgsMjMwNTMsMTMxNjc1LDMwOTYwLDIzMDgyLDE1NDU2NiwzMTQ4NiwxNjg4OSwzMTgzNywzMTg1MywxNjkxMywxNTQ1NDcsMTU1MzI0LDE1NTMwMiwzMTk0OSwxNTAwMDksMTM3MTM2LDMxODg2LDMxODY4LDMxOTE4LDI3''@;'; put 'put ''MzE0LDMyMjIwLDMyMjYzLDMyMjExLDMyNTkwLDE1NjI1NywxNTU5OTYsMTYyNjMyLDMyMTUxLDE1NTI2NiwxNzAwMiwxNTg1ODEsMTMzMzk4LDI2NTgyLDEzMTE1MCwxNDQ4NDcsMjI0NjgsMTU2NjkwLDE1NjY2NCwxNDk4NTgsMzI3MzMsMzE1MjcsMTMzMTY0LDE1NDM0NSwxNTQ5NDcsMzE1''@;'; put 'put ''MDAsMTU1MTUwLDM5Mzk4LDM0MzczLDM5NTIzLDI3MTY0LDE0NDQ0NywxNDgxOCwxNTAwMDcsMTU3MTAxLDM5NDU1LDE1NzA4OCwzMzkyMCwxNjAwMzksMTU4OTI5LDE3NjQyLDMzMDc5LDE3NDEwLDMyOTY2LDMzMDMzLDMzMDkwLDE1NzYyMCwzOTEwNywxNTgyNzQsMzMzNzgsMzMzODEsMTU4''@;'; put 'put ''Mjg5LDMzODc1LDE1OTE0MywzNDMyMCwxNjAyODMsMjMxNzQsMTY3NjcsMTM3MjgwLDIzMzM5LDEzNzM3NywyMzI2OCwxMzc0MzIsMzQ0NjQsMTk1MDA0LDE0NjgzMSwzNDg2MSwxNjA4MDIsMjMwNDIsMzQ5MjYsMjAyOTMsMzQ5NTEsMzUwMDcsMzUwNDYsMzUxNzMsMzUxNDksMTUzMjE5LDM1''@;'; put 'put ''MTU2LDE2MTY2OSwxNjE2NjgsMTY2OTAxLDE2Njg3MywxNjY4MTIsMTY2MzkzLDE2MDQ1LDMzOTU1LDE4MTY1LDE4MTI3LDE0MzIyLDM1Mzg5LDM1MzU2LDE2OTAzMiwyNDM5NywzNzQxOSwxNDgxMDAsMjYwNjgsMjg5NjksMjg4NjgsMTM3Mjg1LDQwMzAxLDM1OTk5LDM2MDczLDE2MzI5Miwy''@;'; put 'put ''MjkzOCwzMDY1OSwyMzAyNCwxNzI2MiwxNDAzNiwzNjM5NCwzNjUxOSwxNTA1MzcsMzY2NTYsMzY2ODIsMTcxNDAsMjc3MzYsMjg2MDMsMTQwMDY1LDE4NTg3LDI4NTM3LDI4Mjk5LDEzNzE3OCwzOTkxMywxNDAwNSwxNDk4MDcsMzcwNTEsMzcwMTUsMjE4NzMsMTg2OTQsMzczMDcsMzc4OTIs''@;'; put 'put ''MTY2NDc1LDE2NDgyLDE2NjY1MiwzNzkyNywxNjY5NDEsMTY2OTcxLDM0MDIxLDM1MzcxLDM4Mjk3LDM4MzExLDM4Mjk1LDM4Mjk0LDE2NzIyMCwyOTc2NSwxNjA2NiwxNDk3NTksMTUwMDgyLDE0ODQ1OCwxNjEwMywxNDM5MDksMzg1NDMsMTY3NjU1LDE2NzUyNiwxNjc1MjUsMTYwNzYsMTQ5''@;'; put 'put ''OTk3LDE1MDEzNiwxNDc0MzgsMjk3MTQsMjk4MDMsMTYxMjQsMzg3MjEsMTY4MTEyLDI2Njk1LDE4OTczLDE2ODA4MywxNTM1NjcsMzg3NDksMzc3MzYsMTY2MjgxLDE2Njk1MCwxNjY3MDMsMTU2NjA2LDM3NTYyLDIzMzEzLDM1Njg5LDE4NzQ4LDI5Njg5LDE0Nzk5NSwzODgxMSwzODc2OSwz''@;'; put 'put ''OTIyNCwxMzQ5NTAsMjQwMDEsMTY2ODUzLDE1MDE5NCwzODk0MywxNjkxNzgsMzc2MjIsMTY5NDMxLDM3MzQ5LDE3NjAwLDE2NjczNiwxNTAxMTksMTY2NzU2LDM5MTMyLDE2NjQ2OSwxNjEyOCwzNzQxOCwxODcyNSwzMzgxMiwzOTIyNywzOTI0NSwxNjI1NjYsMTU4NjksMzkzMjMsMTkzMTEs''@;'; put 'put ''MzkzMzgsMzk1MTYsMTY2NzU3LDE1MzgwMCwyNzI3OSwzOTQ1NywyMzI5NCwzOTQ3MSwxNzAyMjUsMTkzNDQsMTcwMzEyLDM5MzU2LDE5Mzg5LDE5MzUxLDM3NzU3LDIyNjQyLDEzNTkzOCwyMjU2MiwxNDk5NDQsMTM2NDI0LDMwNzg4LDE0MTA4NywxNDY4NzIsMjY4MjEsMTU3NDEsMzc5NzYs''@;'; put 'put ''MTQ2MzEsMjQ5MTIsMTQxMTg1LDE0MTY3NSwyNDgzOSw0MDAxNSw0MDAxOSw0MDA1OSwzOTk4OSwzOTk1MiwzOTgwNywzOTg4NywxNzE1NjUsMzk4MzksMTcyNTMzLDE3MjI4Niw0MDIyNSwxOTYzMCwxNDc3MTYsNDA0NzIsMTk2MzIsNDAyMDQsMTcyNDY4LDE3MjI2OSwxNzIyNzUsMTcwMjg3''@;'; put 'put ''LDQwMzU3LDMzOTgxLDE1OTI1MCwxNTk3MTEsMTU4NTk0LDM0MzAwLDE3NzE1LDE1OTE0MCwxNTkzNjQsMTU5MjE2LDMzODI0LDM0Mjg2LDE1OTIzMiwxNDUzNjcsMTU1NzQ4LDMxMjAyLDE0NDc5NiwxNDQ5NjAsMTg3MzMsMTQ5OTgyLDE1NzE0LDM3ODUxLDM3NTY2LDM3NzA0LDEzMTc3NSwz''@;'; put 'put ''MDkwNSwzNzQ5NSwzNzk2NSwyMDQ1MiwxMzM3NiwzNjk2NCwxNTI5MjUsMzA3ODEsMzA4MDQsMzA5MDIsMzA3OTUsMTM3MDQ3LDE0MzgxNywxNDk4MjUsMTM5NzgsMjAzMzgsMjg2MzQsMjg2MzMsMjg3MDIsMjg3MDIsMjE1MjQsMTQ3ODkzLDIyNDU5LDIyNzcxLDIyNDEwLDQwMjE0LDIyNDg3''@;'; put 'put ''LDI4OTgwLDEzNDg3LDE0Nzg4NCwyOTE2MywxNTg3ODQsMTUxNDQ3LDIzMzM2LDEzNzE0MSwxNjY0NzMsMjQ4NDQsMjMyNDYsMjMwNTEsMTcwODQsMTQ4NjE2LDE0MTI0LDE5MzIzLDE2NjM5NiwzNzgxOSwzNzgxNiwxMzc0MzAsMTM0OTQxLDMzOTA2LDE1ODkxMiwxMzYyMTEsMTQ4MjE4LDE0''@;'; put 'put ''MjM3NCwxNDg0MTcsMjI5MzIsMTQ2ODcxLDE1NzUwNSwzMjE2OCwxNTU5OTUsMTU1ODEyLDE0OTk0NSwxNDk4OTksMTY2Mzk0LDM3NjA1LDI5NjY2LDE2MTA1LDI5ODc2LDE2Njc1NSwxMzczNzUsMTYwOTcsMTUwMTk1LDI3MzUyLDI5NjgzLDI5NjkxLDE2MDg2LDE1MDA3OCwxNTAxNjQsMTM3''@;'; put 'put ''MTc3LDE1MDExOCwxMzIwMDcsMTM2MjI4LDE0OTk4OSwyOTc2OCwxNDk3ODIsMjg4MzcsMTQ5ODc4LDM3NTA4LDI5NjcwLDM3NzI3LDEzMjM1MCwzNzY4MSwxNjY2MDYsMTY2NDIyLDM3NzY2LDE2Njg4NywxNTMwNDUsMTg3NDEsMTY2NTMwLDI5MDM1LDE0OTgyNywxMzQzOTksMjIxODAsMTMy''@;'; put 'put ''NjM0LDEzNDEyMywxMzQzMjgsMjE3NjIsMzExNzIsMTM3MjEwLDMyMjU0LDEzNjg5OCwxNTAwOTYsMTM3Mjk4LDE3NzEwLDM3ODg5LDE0MDkwLDE2NjU5MiwxNDk5MzMsMjI5NjAsMTM3NDA3LDEzNzM0NywxNjA5MDAsMjMyMDEsMTQwNTAsMTQ2Nzc5LDE0ZTMsMzc0NzEsMjMxNjEsMTY2NTI5''@;'; put 'put ''LDEzNzMxNCwzNzc0OCwxNTU2NSwxMzM4MTIsMTkwOTQsMTQ3MzAsMjA3MjQsMTU3MjEsMTU2OTIsMTM2MDkyLDI5MDQ1LDE3MTQ3LDE2NDM3NiwyODE3NSwxNjgxNjQsMTc2NDMsMjc5OTEsMTYzNDA3LDI4Nzc1LDI3ODIzLDE1NTc0LDE0NzQzNywxNDY5ODksMjgxNjIsMjg0MjgsMTU3Mjcs''@;'; put 'put ''MTMyMDg1LDMwMDMzLDE0MDEyLDEzNTEyLDE4MDQ4LDE2MDkwLDE4NTQ1LDIyOTgwLDM3NDg2LDE4NzUwLDM2NjczLDE2Njk0MCwxNTg2NTYsMjI1NDYsMjI0NzIsMTQwMzgsMTM2Mjc0LDI4OTI2LDE0ODMyMiwxNTAxMjksMTQzMzMxLDEzNTg1NiwxNDAyMjEsMjY4MDksMjY5ODMsMTM2MDg4''@;'; put 'put ''LDE0NDYxMywxNjI4MDQsMTQ1MTE5LDE2NjUzMSwxNDUzNjYsMTQ0Mzc4LDE1MDY4NywyNzE2MiwxNDUwNjksMTU4OTAzLDMzODU0LDE3NjMxLDE3NjE0LDE1OTAxNCwxNTkwNTcsMTU4ODUwLDE1OTcxMCwyODQzOSwxNjAwMDksMzM1OTcsMTM3MDE4LDMzNzczLDE1ODg0OCwxNTk4MjcsMTM3''@;'; put 'put ''MTc5LDIyOTIxLDIzMTcwLDEzNzEzOSwyMzEzNywyMzE1MywxMzc0NzcsMTQ3OTY0LDE0MTI1LDIzMDIzLDEzNzAyMCwxNDAyMywyOTA3MCwzNzc3NiwyNjI2NiwxNDgxMzMsMjMxNTAsMjMwODMsMTQ4MTE1LDI3MTc5LDE0NzE5MywxNjE1OTAsMTQ4NTcxLDE0ODE3MCwyODk1NywxNDgwNTcs''@;'; put 'put ''MTY2MzY5LDIwNDAwLDE1OTAxNiwyMzc0NiwxNDg2ODYsMTYzNDA1LDE0ODQxMywyNzE0OCwxNDgwNTQsMTM1OTQwLDI4ODM4LDI4OTc5LDE0ODQ1NywxNTc4MSwyNzg3MSwxOTQ1OTcsMTUwMDk1LDMyMzU3LDIzMDE5LDIzODU1LDE1ODU5LDI0NDEyLDE1MDEwOSwxMzcxODMsMzIxNjQsMzM4''@;'; put 'put ''MzAsMjE2MzcsMTQ2MTcwLDE0NDEyOCwxMzE2MDQsMjIzOTgsMTMzMzMzLDEzMjYzMywxNjM1NywxMzkxNjYsMTcyNzI2LDI4Njc1LDE2ODI4MywyMzkyMCwyOTU4MywzMTk1NSwxNjY0ODksMTY4OTkyLDIwNDI0LDMyNzQzLDI5Mzg5LDI5NDU2LDE2MjU0OCwyOTQ5NiwyOTQ5NywxNTMzMzQs''@;'; put 'put ''Mjk1MDUsMjk1MTIsMTYwNDEsMTYyNTg0LDM2OTcyLDI5MTczLDE0OTc0NiwyOTY2NSwzMzI3MCwxNjA3NCwzMDQ3NiwxNjA4MSwyNzgxMCwyMjI2OSwyOTcyMSwyOTcyNiwyOTcyNywxNjA5OCwxNjExMiwxNjExNiwxNjEyMiwyOTkwNywxNjE0MiwxNjIxMSwzMDAxOCwzMDA2MSwzMDA2Niwz''@;'; put 'put ''MDA5MywxNjI1MiwzMDE1MiwzMDE3MiwxNjMyMCwzMDI4NSwxNjM0MywzMDMyNCwxNjM0OCwzMDMzMCwxNTEzODgsMjkwNjQsMjIwNTEsMzUyMDAsMjI2MzMsMTY0MTMsMzA1MzEsMTY0NDEsMjY0NjUsMTY0NTMsMTM3ODcsMzA2MTYsMTY0OTAsMTY0OTUsMjM2NDYsMzA2NTQsMzA2NjcsMjI3''@;'; put 'put ''NzAsMzA3NDQsMjg4NTcsMzA3NDgsMTY1NTIsMzA3NzcsMzA3OTEsMzA4MDEsMzA4MjIsMzM4NjQsMTUyODg1LDMxMDI3LDI2NjI3LDMxMDI2LDE2NjQzLDE2NjQ5LDMxMTIxLDMxMTI5LDM2Nzk1LDMxMjM4LDM2Nzk2LDE2NzQzLDMxMzc3LDE2ODE4LDMxNDIwLDMzNDAxLDE2ODM2LDMxNDM5''@;'; put 'put ''LDMxNDUxLDE2ODQ3LDIwMDAxLDMxNTg2LDMxNTk2LDMxNjExLDMxNzYyLDMxNzcxLDE2OTkyLDE3MDE4LDMxODY3LDMxOTAwLDE3MDM2LDMxOTI4LDE3MDQ0LDMxOTgxLDM2NzU1LDI4ODY0LDEzNDM1MSwzMjIwNywzMjIxMiwzMjIwOCwzMjI1MywzMjY4NiwzMjY5MiwyOTM0MywxNzMwMywz''@;'; put 'put ''MjgwMCwzMjgwNSwzMTU0NSwzMjgxNCwzMjgxNywzMjg1MiwxNTgyMCwyMjQ1MiwyODgzMiwzMjk1MSwzMzAwMSwxNzM4OSwzMzAzNiwyOTQ4MiwzMzAzOCwzMzA0MiwzMDA0OCwzMzA0NCwxNzQwOSwxNTE2MSwzMzExMCwzMzExMywzMzExNCwxNzQyNywyMjU4NiwzMzE0OCwzMzE1NiwxNzQ0''@;'; put 'put ''NSwzMzE3MSwxNzQ1MywzMzE4OSwyMjUxMSwzMzIxNywzMzI1MiwzMzM2NCwxNzU1MSwzMzQ0NiwzMzM5OCwzMzQ4MiwzMzQ5NiwzMzUzNSwxNzU4NCwzMzYyMywzODUwNSwyNzAxOCwzMzc5NywyODkxNywzMzg5MiwyNDgwMywzMzkyOCwxNzY2OCwzMzk4MiwzNDAxNywzNDA0MCwzNDA2NCwz''@;'; put 'put ''NDEwNCwzNDEzMCwxNzcyMywzNDE1OSwzNDE2MCwzNDI3MiwxNzc4MywzNDQxOCwzNDQ1MCwzNDQ4MiwzNDU0MywzODQ2OSwzNDY5OSwxNzkyNiwxNzk0MywzNDk5MCwzNTA3MSwzNTEwOCwzNTE0MywzNTIxNywxNjIxNTEsMzUzNjksMzUzODQsMzU0NzYsMzU1MDgsMzU5MjEsMzYwNTIsMzYw''@;'; put 'put ''ODIsMzYxMjQsMTgzMjgsMjI2MjMsMzYyOTEsMTg0MTMsMjAyMDYsMzY0MTAsMjE5NzYsMjIzNTYsMzY0NjUsMjIwMDUsMzY1MjgsMTg0ODcsMzY1NTgsMzY1NzgsMzY1ODAsMzY1ODksMzY1OTQsMzY3OTEsMzY4MDEsMzY4MTAsMzY4MTIsMzY5MTUsMzkzNjQsMTg2MDUsMzkxMzYsMzczOTUs''@;'; put 'put ''MTg3MTgsMzc0MTYsMzc0NjQsMzc0ODMsMzc1NTMsMzc1NTAsMzc1NjcsMzc2MDMsMzc2MTEsMzc2MTksMzc2MjAsMzc2MjksMzc2OTksMzc3NjQsMzc4MDUsMTg3NTcsMTg3NjksNDA2MzksMzc5MTEsMjEyNDksMzc5MTcsMzc5MzMsMzc5NTAsMTg3OTQsMzc5NzIsMzgwMDksMzgxODksMzgz''@;'; put 'put ''MDYsMTg4NTUsMzgzODgsMzg0NTEsMTg5MTcsMjY1MjgsMTg5ODAsMzg3MjAsMTg5OTcsMzg4MzQsMzg4NTAsMjIxMDAsMTkxNzIsMjQ4MDgsMzkwOTcsMTkyMjUsMzkxNTMsMjI1OTYsMzkxODIsMzkxOTMsMjA5MTYsMzkxOTYsMzkyMjMsMzkyMzQsMzkyNjEsMzkyNjYsMTkzMTIsMzkzNjUs''@;'; put 'put ''MTkzNTcsMzk0ODQsMzk2OTUsMzEzNjMsMzk3ODUsMzk4MDksMzk5MDEsMzk5MjEsMzk5MjQsMTk1NjUsMzk5NjgsMTQxOTEsMTM4MTc4LDQwMjY1LDM5OTk0LDQwNzAyLDIyMDk2LDQwMzM5LDQwMzgxLDQwMzg0LDQwNDQ0LDM4MTM0LDM2NzkwLDQwNTcxLDQwNjIwLDQwNjI1LDQwNjM3LDQw''@;'; put 'put ''NjQ2LDM4MTA4LDQwNjc0LDQwNjg5LDQwNjk2LDMxNDMyLDQwNzcyLDEzMTIyMCwxMzE3NjcsMTMyZTMsMjY5MDYsMzgwODMsMjI5NTYsMTMyMzExLDIyNTkyLDM4MDgxLDE0MjY1LDEzMjU2NSwxMzI2MjksMTMyNzI2LDEzNjg5MCwyMjM1OSwyOTA0MywxMzM4MjYsMTMzODM3LDEzNDA3OSwy''@;'; put 'put ''MTYxMCwxOTQ2MTksMTM0MDkxLDIxNjYyLDEzNDEzOSwxMzQyMDMsMTM0MjI3LDEzNDI0NSwxMzQyNjgsMjQ4MDcsMTM0Mjg1LDIyMTM4LDEzNDMyNSwxMzQzNjUsMTM0MzgxLDEzNDUxMSwxMzQ1NzgsMTM0NjAwLDI2OTY1LDM5OTgzLDM0NzI1LDEzNDY2MCwxMzQ2NzAsMTM0ODcxLDEzNTA1''@;'; put 'put ''NiwxMzQ5NTcsMTM0NzcxLDIzNTg0LDEzNTEwMCwyNDA3NSwxMzUyNjAsMTM1MjQ3LDEzNTI4NiwyNjM5OCwxMzUyOTEsMTM1MzA0LDEzNTMxOCwxMzg5NSwxMzUzNTksMTM1Mzc5LDEzNTQ3MSwxMzU0ODMsMjEzNDgsMzM5NjUsMTM1OTA3LDEzNjA1MywxMzU5OTAsMzU3MTMsMTM2NTY3LDEz''@;'; put 'put ''NjcyOSwxMzcxNTUsMTM3MTU5LDIwMDg4LDI4ODU5LDEzNzI2MSwxMzc1NzgsMTM3NzczLDEzNzc5NywxMzgyODIsMTM4MzUyLDEzODQxMiwxMzg5NTIsMjUyODMsMTM4OTY1LDEzOTAyOSwyOTA4MCwyNjcwOSwxMzkzMzMsMjcxMTMsMTQwMjQsMTM5OTAwLDE0MDI0NywxNDAyODIsMTQxMDk4''@;'; put 'put ''LDE0MTQyNSwxNDE2NDcsMzM1MzMsMTQxNjcxLDE0MTcxNSwxNDIwMzcsMzUyMzcsMTQyMDU2LDM2NzY4LDE0MjA5NCwzODg0MCwxNDIxNDMsMzg5ODMsMzk2MTMsMTQyNDEyLG51bGwsMTQyNDcyLDE0MjUxOSwxNTQ2MDAsMTQyNjAwLDE0MjYxMCwxNDI3NzUsMTQyNzQxLDE0MjkxNCwxNDMy''@;'; put 'put ''MjAsMTQzMzA4LDE0MzQxMSwxNDM0NjIsMTQ0MTU5LDE0NDM1MCwyNDQ5NywyNjE4NCwyNjMwMywxNjI0MjUsMTQ0NzQzLDE0NDg4MywyOTE4NSwxNDk5NDYsMzA2NzksMTQ0OTIyLDE0NTE3NCwzMjM5MSwxMzE5MTAsMjI3MDksMjYzODIsMjY5MDQsMTQ2MDg3LDE2MTM2NywxNTU2MTgsMTQ2''@;'; put 'put ''OTYxLDE0NzEyOSwxNjEyNzgsMTM5NDE4LDE4NjQwLDE5MTI4LDE0NzczNywxNjY1NTQsMTQ4MjA2LDE0ODIzNywxNDc1MTUsMTQ4Mjc2LDE0ODM3NCwxNTAwODUsMTMyNTU0LDIwOTQ2LDEzMjYyNSwyMjk0MywxMzg5MjAsMTUyOTQsMTQ2Njg3LDE0ODQ4NCwxNDg2OTQsMjI0MDgsMTQ5MTA4''@;'; put 'put ''LDE0NzQ3LDE0OTI5NSwxNjUzNTIsMTcwNDQxLDE0MTc4LDEzOTcxNSwzNTY3OCwxNjY3MzQsMzkzODIsMTQ5NTIyLDE0OTc1NSwxNTAwMzcsMjkxOTMsMTUwMjA4LDEzNDI2NCwyMjg4NSwxNTEyMDUsMTUxNDMwLDEzMjk4NSwzNjU3MCwxNTE1OTYsMjExMzUsMjIzMzUsMjkwNDEsMTUyMjE3''@;'; put 'put ''LDE1MjYwMSwxNDcyNzQsMTUwMTgzLDIxOTQ4LDE1MjY0NiwxNTI2ODYsMTU4NTQ2LDM3MzMyLDEzNDI3LDE1Mjg5NSwxNjEzMzAsMTUyOTI2LDE4MjAwLDE1MjkzMCwxNTI5MzQsMTUzNTQzLDE0OTgyMywxNTM2OTMsMjA1ODIsMTM1NjMsMTQ0MzMyLDI0Nzk4LDE1Mzg1OSwxODMwMCwxNjYy''@;'; put 'put ''MTYsMTU0Mjg2LDE1NDUwNSwxNTQ2MzAsMTM4NjQwLDIyNDMzLDI5MDA5LDI4NTk4LDE1NTkwNiwxNjI4MzQsMzY5NTAsMTU2MDgyLDE1MTQ1MCwzNTY4MiwxNTY2NzQsMTU2NzQ2LDIzODk5LDE1ODcxMSwzNjY2MiwxNTY4MDQsMTM3NTAwLDM1NTYyLDE1MDAwNiwxNTY4MDgsMTQ3NDM5LDE1''@;'; put 'put ''Njk0NiwxOTM5MiwxNTcxMTksMTU3MzY1LDE0MTA4MywzNzk4OSwxNTM1NjksMjQ5ODEsMjMwNzksMTk0NzY1LDIwNDExLDIyMjAxLDE0ODc2OSwxNTc0MzYsMjAwNzQsMTQ5ODEyLDM4NDg2LDI4MDQ3LDE1ODkwOSwxMzg0OCwzNTE5MSwxNTc1OTMsMTU3ODA2LDE1NjY4OSwxNTc3OTAsMjkx''@;'; put 'put ''NTEsMTU3ODk1LDMxNTU0LDE2ODEyOCwxMzM2NDksMTU3OTkwLDM3MTI0LDE1ODAwOSwzMTMwMSw0MDQzMiwxNTgyMDIsMzk0NjIsMTU4MjUzLDEzOTE5LDE1Njc3NywxMzExMDUsMzExMDcsMTU4MjYwLDE1ODU1NSwyMzg1MiwxNDQ2NjUsMzM3NDMsMTU4NjIxLDE4MTI4LDE1ODg4NCwzMDAx''@;'; put 'put ''MSwzNDkxNywxNTkxNTAsMjI3MTAsMTQxMDgsMTQwNjg1LDE1OTgxOSwxNjAyMDUsMTU0NDQsMTYwMzg0LDE2MDM4OSwzNzUwNSwxMzk2NDIsMTYwMzk1LDM3NjgwLDE2MDQ4NiwxNDk5NjgsMjc3MDUsMzgwNDcsMTYwODQ4LDEzNDkwNCwzNDg1NSwzNTA2MSwxNDE2MDYsMTY0OTc5LDEzNzEz''@;'; put 'put ''NywyODM0NCwxNTAwNTgsMTM3MjQ4LDE0NzU2LDE0MDA5LDIzNTY4LDMxMjAzLDE3NzI3LDI2Mjk0LDE3MTE4MSwxNzAxNDgsMzUxMzksMTYxNzQwLDE2MTg4MCwyMjIzMCwxNjYwNywxMzY3MTQsMTQ3NTMsMTQ1MTk5LDE2NDA3MiwxMzYxMzMsMjkxMDEsMzM2MzgsMTYyMjY5LDE2ODM2MCwy''@;'; put 'put ''MzE0MywxOTYzOSwxNTk5MTksMTY2MzE1LDE2MjMwMSwxNjIzMTQsMTYyNTcxLDE2MzE3NCwxNDc4MzQsMzE1NTUsMzExMDIsMTYzODQ5LDI4NTk3LDE3Mjc2NywyNzEzOSwxNjQ2MzIsMjE0MTAsMTU5MjM5LDM3ODIzLDI2Njc4LDM4NzQ5LDE2NDIwNywxNjM4NzUsMTU4MTMzLDEzNjE3Mywx''@;'; put 'put ''NDM5MTksMTYzOTEyLDIzOTQxLDE2Njk2MCwxNjM5NzEsMjIyOTMsMzg5NDcsMTY2MjE3LDIzOTc5LDE0OTg5NiwyNjA0NiwyNzA5MywyMTQ1OCwxNTAxODEsMTQ3MzI5LDE1Mzc3LDI2NDIyLDE2Mzk4NCwxNjQwODQsMTY0MTQyLDEzOTE2OSwxNjQxNzUsMTY0MjMzLDE2NDI3MSwxNjQzNzgs''@;'; put 'put ''MTY0NjE0LDE2NDY1NSwxNjQ3NDYsMTM3NzAsMTY0OTY4LDE2NTU0NiwxODY4MiwyNTU3NCwxNjYyMzAsMzA3MjgsMzc0NjEsMTY2MzI4LDE3Mzk0LDE2NjM3NSwxNzM3NSwxNjYzNzYsMTY2NzI2LDE2Njg2OCwyMzAzMiwxNjY5MjEsMzY2MTksMTY3ODc3LDE2ODE3MiwzMTU2OSwxNjgyMDgs''@;'; put 'put ''MTY4MjUyLDE1ODYzLDE2ODI4NiwxNTAyMTgsMzY4MTYsMjkzMjcsMjIxNTUsMTY5MTkxLDE2OTQ0OSwxNjkzOTIsMTY5NDAwLDE2OTc3OCwxNzAxOTMsMTcwMzEzLDE3MDM0NiwxNzA0MzUsMTcwNTM2LDE3MDc2NiwxNzEzNTQsMTcxNDE5LDMyNDE1LDE3MTc2OCwxNzE4MTEsMTk2MjAsMzgy''@;'; put 'put ''MTUsMTcyNjkxLDI5MDkwLDE3Mjc5OSwxOTg1NywzNjg4MiwxNzM1MTUsMTk4NjgsMTM0MzAwLDM2Nzk4LDIxOTUzLDM2Nzk0LDE0MDQ2NCwzNjc5MywxNTAxNjMsMTc2NzMsMzIzODMsMjg1MDIsMjczMTMsMjAyMDIsMTM1NDAsMTY2NzAwLDE2MTk0OSwxNDEzOCwzNjQ4MCwxMzcyMDUsMTYz''@;'; put 'put ''ODc2LDE2Njc2NCwxNjY4MDksMTYyMzY2LDE1NzM1OSwxNTg1MSwxNjEzNjUsMTQ2NjE1LDE1MzE0MSwxNTM5NDIsMjAxMjIsMTU1MjY1LDE1NjI0OCwyMjIwNywxMzQ3NjUsMzYzNjYsMjM0MDUsMTQ3MDgwLDE1MDY4NiwyNTU2NiwyNTI5NiwxMzcyMDYsMTM3MzM5LDI1OTA0LDIyMDYxLDE1''@;'; put 'put ''NDY5OCwyMTUzMCwxNTIzMzcsMTU4MTQsMTcxNDE2LDE5NTgxLDIyMDUwLDIyMDQ2LDMyNTg1LDE1NTM1MiwyMjkwMSwxNDY3NTIsMzQ2NzIsMTk5OTYsMTM1MTQ2LDEzNDQ3MywxNDUwODIsMzMwNDcsNDAyODYsMzYxMjAsMzAyNjcsNDAwMDUsMzAyODYsMzA2NDksMzc3MDEsMjE1NTQsMzMw''@;'; put 'put ''OTYsMzM1MjcsMjIwNTMsMzMwNzQsMzM4MTYsMzI5NTcsMjE5OTQsMzEwNzQsMjIwODMsMjE1MjYsMTM0ODEzLDEzNzc0LDIyMDIxLDIyMDAxLDI2MzUzLDE2NDU3OCwxMzg2OSwzMDAwNCwyMmUzLDIxOTQ2LDIxNjU1LDIxODc0LDEzNDIwOSwxMzQyOTQsMjQyNzIsMTUxODgwLDEzNDc3NCwx''@;'; put 'put ''NDI0MzQsMTM0ODE4LDQwNjE5LDMyMDkwLDIxOTgyLDEzNTI4NSwyNTI0NSwzODc2NSwyMTY1MiwzNjA0NSwyOTE3NCwzNzIzOCwyNTU5NiwyNTUyOSwyNTU5OCwyMTg2NSwxNDIxNDcsNDAwNTAsMTQzMDI3LDIwODkwLDEzNTM1LDEzNDU2NywyMDkwMywyMTU4MSwyMTc5MCwyMTc3OSwzMDMx''@;'; put 'put ''MCwzNjM5NywxNTc4MzQsMzAxMjksMzI5NTAsMzQ4MjAsMzQ2OTQsMzUwMTUsMzMyMDYsMzM4MjAsMTM1MzYxLDE3NjQ0LDI5NDQ0LDE0OTI1NCwyMzQ0MCwzMzU0NywxNTc4NDMsMjIxMzksMTQxMDQ0LDE2MzExOSwxNDc4NzUsMTYzMTg3LDE1OTQ0MCwxNjA0MzgsMzcyMzIsMTM1NjQxLDM3''@;'; put 'put ''Mzg0LDE0NjY4NCwxNzM3MzcsMTM0ODI4LDEzNDkwNSwyOTI4NiwxMzg0MDIsMTgyNTQsMTUxNDkwLDE2MzgzMywxMzUxNDcsMTY2MzQsNDAwMjksMjU4ODcsMTQyNzUyLDE4Njc1LDE0OTQ3MiwxNzEzODgsMTM1MTQ4LDEzNDY2NiwyNDY3NCwxNjExODcsMTM1MTQ5LG51bGwsMTU1NzIwLDEz''@;'; put 'put ''NTU1OSwyOTA5MSwzMjM5OCw0MDI3MiwxOTk5NCwxOTk3MiwxMzY4NywyMzMwOSwyNzgyNiwyMTM1MSwxMzk5NiwxNDgxMiwyMTM3MywxMzk4OSwxNDkwMTYsMjI2ODIsMTUwMzgyLDMzMzI1LDIxNTc5LDIyNDQyLDE1NDI2MSwxMzM0OTcsbnVsbCwxNDkzMCwxNDAzODksMjk1NTYsMTcxNjky''@;'; put 'put ''LDE5NzIxLDM5OTE3LDE0NjY4NiwxNzE4MjQsMTk1NDcsMTUxNDY1LDE2OTM3NCwxNzE5OTgsMzM4ODQsMTQ2ODcwLDE2MDQzNCwxNTc2MTksMTQ1MTg0LDI1MzkwLDMyMDM3LDE0NzE5MSwxNDY5ODgsMTQ4OTAsMzY4NzIsMjExOTYsMTU5ODgsMTM5NDYsMTc4OTcsMTMyMjM4LDMwMjcyLDIz''@;'; put 'put ''MjgwLDEzNDgzOCwzMDg0MiwxNjM2MzAsMjI2OTUsMTY1NzUsMjIxNDAsMzk4MTksMjM5MjQsMzAyOTIsMTczMTA4LDQwNTgxLDE5NjgxLDMwMjAxLDE0MzMxLDI0ODU3LDE0MzU3OCwxNDg0NjYsbnVsbCwyMjEwOSwxMzU4NDksMjI0MzksMTQ5ODU5LDE3MTUyNiwyMTA0NCwxNTk5MTgsMTM3''@;'; put 'put ''NDEsMjc3MjIsNDAzMTYsMzE4MzAsMzk3MzcsMjI0OTQsMTM3MDY4LDIzNjM1LDI1ODExLDE2OTE2OCwxNTY0NjksMTYwMTAwLDM0NDc3LDEzNDQ0MCwxNTkwMTAsMTUwMjQyLDEzNDUxMyxudWxsLDIwOTkwLDEzOTAyMywyMzk1MCwzODY1OSwxMzg3MDUsNDA1NzcsMzY5NDAsMzE1MTksMzk2''@;'; put 'put ''ODIsMjM3NjEsMzE2NTEsMjUxOTIsMjUzOTcsMzk2NzksMzE2OTUsMzk3MjIsMzE4NzAsMzk3MjYsMzE4MTAsMzE4NzgsMzk5NTcsMzE3NDAsMzk2ODksNDA3MjcsMzk5NjMsMTQ5ODIyLDQwNzk0LDIxODc1LDIzNDkxLDIwNDc3LDQwNjAwLDIwNDY2LDIxMDg4LDE1ODc4LDIxMjAxLDIyMzc1''@;'; put 'put ''LDIwNTY2LDIyOTY3LDI0MDgyLDM4ODU2LDQwMzYzLDM2NzAwLDIxNjA5LDM4ODM2LDM5MjMyLDM4ODQyLDIxMjkyLDI0ODgwLDI2OTI0LDIxNDY2LDM5OTQ2LDQwMTk0LDE5NTE1LDM4NDY1LDI3MDA4LDIwNjQ2LDMwMDIyLDEzNzA2OSwzOTM4NiwyMTEwNyxudWxsLDM3MjA5LDM4NTI5LDM3''@;'; put 'put ''MjEyLG51bGwsMzcyMDEsMTY3NTc1LDI1NDcxLDE1OTAxMSwyNzMzOCwyMjAzMywzNzI2MiwzMDA3NCwyNTIyMSwxMzIwOTIsMjk1MTksMzE4NTYsMTU0NjU3LDE0NjY4NSxudWxsLDE0OTc4NSwzMDQyMiwzOTgzNywyMDAxMCwxMzQzNTYsMzM3MjYsMzQ4ODIsbnVsbCwyMzYyNiwyNzA3Miwy''@;'; put 'put ''MDcxNywyMjM5NCwyMTAyMywyNDA1MywyMDE3NCwyNzY5NywxMzE1NzAsMjAyODEsMjE2NjAsMjE3MjIsMjExNDYsMzYyMjYsMTM4MjIsMjQzMzIsMTM4MTEsbnVsbCwyNzQ3NCwzNzI0NCw0MDg2OSwzOTgzMSwzODk1OCwzOTA5MiwzOTYxMCw0MDYxNiw0MDU4MCwyOTA1MCwzMTUwOCxudWxs''@;'; put 'put ''LDI3NjQyLDM0ODQwLDMyNjMyLG51bGwsMjIwNDgsMTczNjQyLDM2NDcxLDQwNzg3LG51bGwsMzYzMDgsMzY0MzEsNDA0NzYsMzYzNTMsMjUyMTgsMTY0NzMzLDM2MzkyLDM2NDY5LDMxNDQzLDE1MDEzNSwzMTI5NCwzMDkzNiwyNzg4MiwzNTQzMSwzMDIxNSwxNjY0OTAsNDA3NDIsMjc4NTQs''@;'; put 'put ''MzQ3NzQsMzAxNDcsMTcyNzIyLDMwODAzLDE5NDYyNCwzNjEwOCwyOTQxMCwyOTU1MywzNTYyOSwyOTQ0MiwyOTkzNywzNjA3NSwxNTAyMDMsMzQzNTEsMjQ1MDYsMzQ5NzYsMTc1OTEsbnVsbCwxMzcyNzUsMTU5MjM3LG51bGwsMzU0NTQsMTQwNTcxLG51bGwsMjQ4MjksMzAzMTEsMzk2Mzks''@;'; put 'put ''NDAyNjAsMzc3NDIsMzk4MjMsMzQ4MDUsbnVsbCwzNDgzMSwzNjA4NywyOTQ4NCwzODY4OSwzOTg1NiwxMzc4MiwyOTM2MiwxOTQ2MywzMTgyNSwzOTI0MiwxNTU5OTMsMjQ5MjEsMTk0NjAsNDA1OTgsMjQ5NTcsbnVsbCwyMjM2NywyNDk0MywyNTI1NCwyNTE0NSwyNTI5NCwxNDk0MCwyNTA1''@;'; put 'put ''OCwyMTQxOCwxNDQzNzMsMjU0NDQsMjY2MjYsMTM3NzgsMjM4OTUsMTY2ODUwLDM2ODI2LDE2NzQ4MSxudWxsLDIwNjk3LDEzODU2NiwzMDk4MiwyMTI5OCwzODQ1NiwxMzQ5NzEsMTY0ODUsbnVsbCwzMDcxOCxudWxsLDMxOTM4LDE1NTQxOCwzMTk2MiwzMTI3NywzMjg3MCwzMjg2NywzMjA3''@;'; put 'put ''NywyOTk1NywyOTkzOCwzNTIyMCwzMzMwNiwyNjM4MCwzMjg2NiwxNjA5MDIsMzI4NTksMjk5MzYsMzMwMjcsMzA1MDAsMzUyMDksMTU3NjQ0LDMwMDM1LDE1OTQ0MSwzNDcyOSwzNDc2NiwzMzIyNCwzNDcwMCwzNTQwMSwzNjAxMywzNTY1MSwzMDUwNywyOTk0NCwzNDAxMCwxMzg3NywyNzA1''@;'; put 'put ''OCwzNjI2MixudWxsLDM1MjQxLDI5ODAwLDI4MDg5LDM0NzUzLDE0NzQ3MywyOTkyNywxNTgzNSwyOTA0NiwyNDc0MCwyNDk4OCwxNTU2OSwyOTAyNiwyNDY5NSxudWxsLDMyNjI1LDE2NjcwMSwyOTI2NCwyNDgwOSwxOTMyNiwyMTAyNCwxNTM4NCwxNDY2MzEsMTU1MzUxLDE2MTM2NiwxNTI4''@;'; put 'put ''ODEsMTM3NTQwLDEzNTkzNCwxNzAyNDMsMTU5MTk2LDE1OTkxNywyMzc0NSwxNTYwNzcsMTY2NDE1LDE0NTAxNSwxMzEzMTAsMTU3NzY2LDE1MTMxMCwxNzc2MiwyMzMyNywxNTY0OTIsNDA3ODQsNDA2MTQsMTU2MjY3LDEyMjg4LDY1MjkyLDEyMjg5LDEyMjkwLDY1Mjk0LDgyMzEsNjUzMDcs''@;'; put 'put ''NjUzMDYsNjUzMTEsNjUyODEsNjUwNzIsODIzMCw4MjI5LDY1MTA0LDY1MTA1LDY1MTA2LDE4Myw2NTEwOCw2NTEwOSw2NTExMCw2NTExMSw2NTM3Miw4MjExLDY1MDczLDgyMTIsNjUwNzUsOTU4OCw2NTA3Niw2NTEwMyw2NTI4OCw2NTI4OSw2NTA3Nyw2NTA3OCw2NTM3MSw2NTM3Myw2NTA3''@;'; put 'put ''OSw2NTA4MCwxMjMwOCwxMjMwOSw2NTA4MSw2NTA4MiwxMjMwNCwxMjMwNSw2NTA4Myw2NTA4NCwxMjI5OCwxMjI5OSw2NTA4NSw2NTA4NiwxMjI5NiwxMjI5Nyw2NTA4Nyw2NTA4OCwxMjMwMCwxMjMwMSw2NTA4OSw2NTA5MCwxMjMwMiwxMjMwMyw2NTA5MSw2NTA5Miw2NTExMyw2NTExNCw2''@;'; put 'put ''NTExNSw2NTExNiw2NTExNyw2NTExOCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzE3LDEyMzE4LDgyNDUsODI0Miw2NTI4Myw2NTI4Niw2NTI5MCw4MjUxLDE2NywxMjI5MSw5Njc1LDk2NzksOTY1MSw5NjUwLDk2NzgsOTczNCw5NzMzLDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY2MSw5NjYwLDEy''@;'; put 'put ''OTYzLDg0NTMsMTc1LDY1NTA3LDY1MzQzLDcxNyw2NTA5Nyw2NTA5OCw2NTEwMSw2NTEwMiw2NTA5OSw2NTEwMCw2NTExOSw2NTEyMCw2NTEyMSw2NTI5MSw2NTI5MywyMTUsMjQ3LDE3Nyw4NzMwLDY1MzA4LDY1MzEwLDY1MzA5LDg4MDYsODgwNyw4ODAwLDg3MzQsODc4Niw4ODAxLDY1MTIy''@;'; put 'put ''LDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1Mzc0LDg3NDUsODc0Niw4ODY5LDg3MzYsODczNSw4ODk1LDEzMjY2LDEzMjY1LDg3NDcsODc1MCw4NzU3LDg3NTYsOTc5Miw5Nzk0LDg4NTMsODg1Nyw4NTkzLDg1OTUsODU5Miw4NTk0LDg1OTgsODU5OSw4NjAxLDg2MDAsODc0MSw4NzM5LDY1''@;'; put 'put ''Mjk1LDY1MzQwLDg3MjUsNjUxMjgsNjUyODQsNjU1MDksMTIzMDYsNjU1MDQsNjU1MDUsNjUyODUsNjUzMTIsODQ1MSw4NDU3LDY1MTI5LDY1MTMwLDY1MTMxLDEzMjY5LDEzMjEyLDEzMjEzLDEzMjE0LDEzMjYyLDEzMjE3LDEzMTk4LDEzMTk5LDEzMjUyLDE3NiwyMDgyNSwyMDgyNywyMDgz''@;'; put 'put ''MCwyMDgyOSwyMDgzMywyMDgzNSwyMTk5MSwyOTkyOSwzMTk1MCw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYxNSw5NjE0LDk2MTMsOTYxMiw5NjExLDk2MTAsOTYwOSw5NTMyLDk1MjQsOTUxNiw5NTA4LDk1MDAsOTYyMCw5NDcyLDk0NzQsOTYyMSw5NDg0LDk0''@;'; put 'put ''ODgsOTQ5Miw5NDk2LDk1ODEsOTU4Miw5NTg0LDk1ODMsOTU1Miw5NTY2LDk1NzgsOTU2OSw5Njk4LDk2OTksOTcwMSw5NzAwLDk1ODUsOTU4Niw5NTg3LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDg1NDQsODU0NSw4NTQ2LDg1''@;'; put 'put ''NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMjEzMTMsMjEzMTYsMjEzMTcsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIs''@;'; put 'put ''NjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUz''@;'; put 'put ''NTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkz''@;'; put 'put ''Myw5MzQsOTM1LDkzNiw5MzcsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1''@;'; put 'put ''NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQs''@;'; put 'put ''MTI1ODUsNzI5LDcxMyw3MTQsNzExLDcxNSw5MjE2LDkyMTcsOTIxOCw5MjE5LDkyMjAsOTIyMSw5MjIyLDkyMjMsOTIyNCw5MjI1LDkyMjYsOTIyNyw5MjI4LDkyMjksOTIzMCw5MjMxLDkyMzIsOTIzMyw5MjM0LDkyMzUsOTIzNiw5MjM3LDkyMzgsOTIzOSw5MjQwLDkyNDEsOTI0Miw5MjQz''@;'; put 'put ''LDkyNDQsOTI0NSw5MjQ2LDkyNDcsOTI0OSw4MzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCwxOTk2OCwyMDA1NywxOTk2OSwxOTk3MSwyMDAzNSwyMDA2MSwyMDEwMiwyMDEwOCwyMDE1NCwyMDc5OSwyMDgzNywyMDg0MywyMDk2MCwyMDk5MiwyMDk5MywyMTE0NywyMTI2OSwyMTMxMywyMTM0MCwyMTQ0OCwxOTk3NywxOTk3OSwxOTk3NiwxOTk3OCwyMDAxMSwyMDAy''@;'; put 'put ''NCwyMDk2MSwyMDAzNywyMDA0MCwyMDA2MywyMDA2MiwyMDExMCwyMDEyOSwyMDgwMCwyMDk5NSwyMTI0MiwyMTMxNSwyMTQ0OSwyMTQ3NSwyMjMwMywyMjc2MywyMjgwNSwyMjgyMywyMjg5OSwyMzM3NiwyMzM3NywyMzM3OSwyMzU0NCwyMzU2NywyMzU4NiwyMzYwOCwyMzY2NSwyNDAyOSwy''@;'; put 'put ''NDAzNywyNDA0OSwyNDA1MCwyNDA1MSwyNDA2MiwyNDE3OCwyNDMxOCwyNDMzMSwyNDMzOSwyNTE2NSwxOTk4NSwxOTk4NCwxOTk4MSwyMDAxMywyMDAxNiwyMDAyNSwyMDA0MywyMzYwOSwyMDEwNCwyMDExMywyMDExNywyMDExNCwyMDExNiwyMDEzMCwyMDE2MSwyMDE2MCwyMDE2MywyMDE2''@;'; put 'put ''NiwyMDE2NywyMDE3MywyMDE3MCwyMDE3MSwyMDE2NCwyMDgwMywyMDgwMSwyMDgzOSwyMDg0NSwyMDg0NiwyMDg0NCwyMDg4NywyMDk4MiwyMDk5OCwyMDk5OSwyMWUzLDIxMjQzLDIxMjQ2LDIxMjQ3LDIxMjcwLDIxMzA1LDIxMzIwLDIxMzE5LDIxMzE3LDIxMzQyLDIxMzgwLDIxNDUxLDIx''@;'; put 'put ''NDUwLDIxNDUzLDIyNzY0LDIyODI1LDIyODI3LDIyODI2LDIyODI5LDIzMzgwLDIzNTY5LDIzNTg4LDIzNjEwLDIzNjYzLDI0MDUyLDI0MTg3LDI0MzE5LDI0MzQwLDI0MzQxLDI0NTE1LDI1MDk2LDI1MTQyLDI1MTYzLDI1MTY2LDI1OTAzLDI1OTkxLDI2MDA3LDI2MDIwLDI2MDQxLDI2MDg1''@;'; put 'put ''LDI2MzUyLDI2Mzc2LDI2NDA4LDI3NDI0LDI3NDkwLDI3NTEzLDI3NTk1LDI3NjA0LDI3NjExLDI3NjYzLDI3NzAwLDI4Nzc5LDI5MjI2LDI5MjM4LDI5MjQzLDI5MjU1LDI5MjczLDI5Mjc1LDI5MzU2LDI5NTc5LDE5OTkzLDE5OTkwLDE5OTg5LDE5OTg4LDE5OTkyLDIwMDI3LDIwMDQ1LDIw''@;'; put 'put ''MDQ3LDIwMDQ2LDIwMTk3LDIwMTg0LDIwMTgwLDIwMTgxLDIwMTgyLDIwMTgzLDIwMTk1LDIwMTk2LDIwMTg1LDIwMTkwLDIwODA1LDIwODA0LDIwODczLDIwODc0LDIwOTA4LDIwOTg1LDIwOTg2LDIwOTg0LDIxMDAyLDIxMTUyLDIxMTUxLDIxMjUzLDIxMjU0LDIxMjcxLDIxMjc3LDIwMTkx''@;'; put 'put ''LDIxMzIyLDIxMzIxLDIxMzQ1LDIxMzQ0LDIxMzU5LDIxMzU4LDIxNDM1LDIxNDg3LDIxNDc2LDIxNDkxLDIxNDg0LDIxNDg2LDIxNDgxLDIxNDgwLDIxNTAwLDIxNDk2LDIxNDkzLDIxNDgzLDIxNDc4LDIxNDgyLDIxNDkwLDIxNDg5LDIxNDg4LDIxNDc3LDIxNDg1LDIxNDk5LDIyMjM1LDIy''@;'; put 'put ''MjM0LDIyODA2LDIyODMwLDIyODMzLDIyOTAwLDIyOTAyLDIzMzgxLDIzNDI3LDIzNjEyLDI0MDQwLDI0MDM5LDI0MDM4LDI0MDY2LDI0MDY3LDI0MTc5LDI0MTg4LDI0MzIxLDI0MzQ0LDI0MzQzLDI0NTE3LDI1MDk4LDI1MTcxLDI1MTcyLDI1MTcwLDI1MTY5LDI2MDIxLDI2MDg2LDI2NDE0''@;'; put 'put ''LDI2NDEyLDI2NDEwLDI2NDExLDI2NDEzLDI3NDkxLDI3NTk3LDI3NjY1LDI3NjY0LDI3NzA0LDI3NzEzLDI3NzEyLDI3NzEwLDI5MzU5LDI5NTcyLDI5NTc3LDI5OTE2LDI5OTI2LDI5OTc2LDI5OTgzLDI5OTkyLDI5OTkzLDNlNCwzMDAwMSwzMDAwMiwzMDAwMywzMDA5MSwzMDMzMywzMDM4''@;'; put 'put ''MiwzMDM5OSwzMDQ0NiwzMDY4MywzMDY5MCwzMDcwNywzMTAzNCwzMTE2NiwzMTM0OCwzMTQzNSwxOTk5OCwxOTk5OSwyMDA1MCwyMDA1MSwyMDA3MywyMDEyMSwyMDEzMiwyMDEzNCwyMDEzMywyMDIyMywyMDIzMywyMDI0OSwyMDIzNCwyMDI0NSwyMDIzNywyMDI0MCwyMDI0MSwyMDIzOSwy''@;'; put 'put ''MDIxMCwyMDIxNCwyMDIxOSwyMDIwOCwyMDIxMSwyMDIyMSwyMDIyNSwyMDIzNSwyMDgwOSwyMDgwNywyMDgwNiwyMDgwOCwyMDg0MCwyMDg0OSwyMDg3NywyMDkxMiwyMTAxNSwyMTAwOSwyMTAxMCwyMTAwNiwyMTAxNCwyMTE1NSwyMTI1NiwyMTI4MSwyMTI4MCwyMTM2MCwyMTM2MSwyMTUx''@;'; put 'put ''MywyMTUxOSwyMTUxNiwyMTUxNCwyMTUyMCwyMTUwNSwyMTUxNSwyMTUwOCwyMTUyMSwyMTUxNywyMTUxMiwyMTUwNywyMTUxOCwyMTUxMCwyMTUyMiwyMjI0MCwyMjIzOCwyMjIzNywyMjMyMywyMjMyMCwyMjMxMiwyMjMxNywyMjMxNiwyMjMxOSwyMjMxMywyMjgwOSwyMjgxMCwyMjgzOSwy''@;'; put 'put ''Mjg0MCwyMjkxNiwyMjkwNCwyMjkxNSwyMjkwOSwyMjkwNSwyMjkxNCwyMjkxMywyMzM4MywyMzM4NCwyMzQzMSwyMzQzMiwyMzQyOSwyMzQzMywyMzU0NiwyMzU3NCwyMzY3MywyNDAzMCwyNDA3MCwyNDE4MiwyNDE4MCwyNDMzNSwyNDM0NywyNDUzNywyNDUzNCwyNTEwMiwyNTEwMCwyNTEw''@;'; put 'put ''MSwyNTEwNCwyNTE4NywyNTE3OSwyNTE3NiwyNTkxMCwyNjA4OSwyNjA4OCwyNjA5MiwyNjA5MywyNjM1NCwyNjM1NSwyNjM3NywyNjQyOSwyNjQyMCwyNjQxNywyNjQyMSwyNzQyNSwyNzQ5MiwyNzUxNSwyNzY3MCwyNzc0MSwyNzczNSwyNzczNywyNzc0MywyNzc0NCwyNzcyOCwyNzczMywy''@;'; put 'put ''Nzc0NSwyNzczOSwyNzcyNSwyNzcyNiwyODc4NCwyOTI3OSwyOTI3NywzMDMzNCwzMTQ4MSwzMTg1OSwzMTk5MiwzMjU2NiwzMjY1MCwzMjcwMSwzMjc2OSwzMjc3MSwzMjc4MCwzMjc4NiwzMjgxOSwzMjg5NSwzMjkwNSwzMjkwNywzMjkwOCwzMzI1MSwzMzI1OCwzMzI2NywzMzI3NiwzMzI5''@;'; put 'put ''MiwzMzMwNywzMzMxMSwzMzM5MCwzMzM5NCwzMzQwNiwzNDQxMSwzNDg4MCwzNDg5MiwzNDkxNSwzNTE5OSwzODQzMywyMDAxOCwyMDEzNiwyMDMwMSwyMDMwMywyMDI5NSwyMDMxMSwyMDMxOCwyMDI3NiwyMDMxNSwyMDMwOSwyMDI3MiwyMDMwNCwyMDMwNSwyMDI4NSwyMDI4MiwyMDI4MCwy''@;'; put 'put ''MDI5MSwyMDMwOCwyMDI4NCwyMDI5NCwyMDMyMywyMDMxNiwyMDMyMCwyMDI3MSwyMDMwMiwyMDI3OCwyMDMxMywyMDMxNywyMDI5NiwyMDMxNCwyMDgxMiwyMDgxMSwyMDgxMywyMDg1MywyMDkxOCwyMDkxOSwyMTAyOSwyMTAyOCwyMTAzMywyMTAzNCwyMTAzMiwyMTE2MywyMTE2MSwyMTE2''@;'; put 'put ''MiwyMTE2NCwyMTI4MywyMTM2MywyMTM2NSwyMTUzMywyMTU0OSwyMTUzNCwyMTU2NiwyMTU0MiwyMTU4MiwyMTU0MywyMTU3NCwyMTU3MSwyMTU1NSwyMTU3NiwyMTU3MCwyMTUzMSwyMTU0NSwyMTU3OCwyMTU2MSwyMTU2MywyMTU2MCwyMTU1MCwyMTU1NywyMTU1OCwyMTUzNiwyMTU2NCwy''@;'; put 'put ''MTU2OCwyMTU1MywyMTU0NywyMTUzNSwyMTU0OCwyMjI1MCwyMjI1NiwyMjI0NCwyMjI1MSwyMjM0NiwyMjM1MywyMjMzNiwyMjM0OSwyMjM0MywyMjM1MCwyMjMzNCwyMjM1MiwyMjM1MSwyMjMzMSwyMjc2NywyMjg0NiwyMjk0MSwyMjkzMCwyMjk1MiwyMjk0MiwyMjk0NywyMjkzNywyMjkz''@;'; put 'put ''NCwyMjkyNSwyMjk0OCwyMjkzMSwyMjkyMiwyMjk0OSwyMzM4OSwyMzM4OCwyMzM4NiwyMzM4NywyMzQzNiwyMzQzNSwyMzQzOSwyMzU5NiwyMzYxNiwyMzYxNywyMzYxNSwyMzYxNCwyMzY5NiwyMzY5NywyMzcwMCwyMzY5MiwyNDA0MywyNDA3NiwyNDIwNywyNDE5OSwyNDIwMiwyNDMxMSwy''@;'; put 'put ''NDMyNCwyNDM1MSwyNDQyMCwyNDQxOCwyNDQzOSwyNDQ0MSwyNDUzNiwyNDUyNCwyNDUzNSwyNDUyNSwyNDU2MSwyNDU1NSwyNDU2OCwyNDU1NCwyNTEwNiwyNTEwNSwyNTIyMCwyNTIzOSwyNTIzOCwyNTIxNiwyNTIwNiwyNTIyNSwyNTE5NywyNTIyNiwyNTIxMiwyNTIxNCwyNTIwOSwyNTIw''@;'; put 'put ''MywyNTIzNCwyNTE5OSwyNTI0MCwyNTE5OCwyNTIzNywyNTIzNSwyNTIzMywyNTIyMiwyNTkxMywyNTkxNSwyNTkxMiwyNjA5NywyNjM1NiwyNjQ2MywyNjQ0NiwyNjQ0NywyNjQ0OCwyNjQ0OSwyNjQ2MCwyNjQ1NCwyNjQ2MiwyNjQ0MSwyNjQzOCwyNjQ2NCwyNjQ1MSwyNjQ1NSwyNzQ5Mywy''@;'; put 'put ''NzU5OSwyNzcxNCwyNzc0MiwyNzgwMSwyNzc3NywyNzc4NCwyNzc4NSwyNzc4MSwyNzgwMywyNzc1NCwyNzc3MCwyNzc5MiwyNzc2MCwyNzc4OCwyNzc1MiwyNzc5OCwyNzc5NCwyNzc3MywyNzc3OSwyNzc2MiwyNzc3NCwyNzc2NCwyNzc4MiwyNzc2NiwyNzc4OSwyNzc5NiwyNzgwMCwyNzc3''@;'; put 'put ''OCwyODc5MCwyODc5NiwyODc5NywyODc5MiwyOTI4MiwyOTI4MSwyOTI4MCwyOTM4MCwyOTM3OCwyOTU5MCwyOTk5NiwyOTk5NSwzMDAwNywzMDAwOCwzMDMzOCwzMDQ0NywzMDY5MSwzMTE2OSwzMTE2OCwzMTE2NywzMTM1MCwzMTk5NSwzMjU5NywzMjkxOCwzMjkxNSwzMjkyNSwzMjkyMCwz''@;'; put 'put ''MjkyMywzMjkyMiwzMjk0NiwzMzM5MSwzMzQyNiwzMzQxOSwzMzQyMSwzNTIxMSwzNTI4MiwzNTMyOCwzNTg5NSwzNTkxMCwzNTkyNSwzNTk5NywzNjE5NiwzNjIwOCwzNjI3NSwzNjUyMywzNjU1NCwzNjc2MywzNjc4NCwzNjgwMiwzNjgwNiwzNjgwNSwzNjgwNCwyNDAzMywzNzAwOSwzNzAy''@;'; put 'put ''NiwzNzAzNCwzNzAzMCwzNzAyNywzNzE5MywzNzMxOCwzNzMyNCwzODQ1MCwzODQ0NiwzODQ0OSwzODQ0MiwzODQ0NCwyMDAwNiwyMDA1NCwyMDA4MywyMDEwNywyMDEyMywyMDEyNiwyMDEzOSwyMDE0MCwyMDMzNSwyMDM4MSwyMDM2NSwyMDMzOSwyMDM1MSwyMDMzMiwyMDM3OSwyMDM2Mywy''@;'; put 'put ''MDM1OCwyMDM1NSwyMDMzNiwyMDM0MSwyMDM2MCwyMDMyOSwyMDM0NywyMDM3NCwyMDM1MCwyMDM2NywyMDM2OSwyMDM0NiwyMDgyMCwyMDgxOCwyMDgyMSwyMDg0MSwyMDg1NSwyMDg1NCwyMDg1NiwyMDkyNSwyMDk4OSwyMTA1MSwyMTA0OCwyMTA0NywyMTA1MCwyMTA0MCwyMTAzOCwyMTA0''@;'; put 'put ''NiwyMTA1NywyMTE4MiwyMTE3OSwyMTMzMCwyMTMzMiwyMTMzMSwyMTMyOSwyMTM1MCwyMTM2NywyMTM2OCwyMTM2OSwyMTQ2MiwyMTQ2MCwyMTQ2MywyMTYxOSwyMTYyMSwyMTY1NCwyMTYyNCwyMTY1MywyMTYzMiwyMTYyNywyMTYyMywyMTYzNiwyMTY1MCwyMTYzOCwyMTYyOCwyMTY0OCwy''@;'; put 'put ''MTYxNywyMTYyMiwyMTY0NCwyMTY1OCwyMTYwMiwyMTYwOCwyMTY0MywyMTYyOSwyMTY0NiwyMjI2NiwyMjQwMywyMjM5MSwyMjM3OCwyMjM3NywyMjM2OSwyMjM3NCwyMjM3MiwyMjM5NiwyMjgxMiwyMjg1NywyMjg1NSwyMjg1NiwyMjg1MiwyMjg2OCwyMjk3NCwyMjk3MSwyMjk5NiwyMjk2''@;'; put 'put ''OSwyMjk1OCwyMjk5MywyMjk4MiwyMjk5MiwyMjk4OSwyMjk4NywyMjk5NSwyMjk4NiwyMjk1OSwyMjk2MywyMjk5NCwyMjk4MSwyMzM5MSwyMzM5NiwyMzM5NSwyMzQ0NywyMzQ1MCwyMzQ0OCwyMzQ1MiwyMzQ0OSwyMzQ1MSwyMzU3OCwyMzYyNCwyMzYyMSwyMzYyMiwyMzczNSwyMzcxMywy''@;'; put 'put ''MzczNiwyMzcyMSwyMzcyMywyMzcyOSwyMzczMSwyNDA4OCwyNDA5MCwyNDA4NiwyNDA4NSwyNDA5MSwyNDA4MSwyNDE4NCwyNDIxOCwyNDIxNSwyNDIyMCwyNDIxMywyNDIxNCwyNDMxMCwyNDM1OCwyNDM1OSwyNDM2MSwyNDQ0OCwyNDQ0OSwyNDQ0NywyNDQ0NCwyNDU0MSwyNDU0NCwyNDU3''@;'; put 'put ''MywyNDU2NSwyNDU3NSwyNDU5MSwyNDU5NiwyNDYyMywyNDYyOSwyNDU5OCwyNDYxOCwyNDU5NywyNDYwOSwyNDYxNSwyNDYxNywyNDYxOSwyNDYwMywyNTExMCwyNTEwOSwyNTE1MSwyNTE1MCwyNTE1MiwyNTIxNSwyNTI4OSwyNTI5MiwyNTI4NCwyNTI3OSwyNTI4MiwyNTI3MywyNTI5OCwy''@;'; put 'put ''NTMwNywyNTI1OSwyNTI5OSwyNTMwMCwyNTI5MSwyNTI4OCwyNTI1NiwyNTI3NywyNTI3NiwyNTI5NiwyNTMwNSwyNTI4NywyNTI5MywyNTI2OSwyNTMwNiwyNTI2NSwyNTMwNCwyNTMwMiwyNTMwMywyNTI4NiwyNTI2MCwyNTI5NCwyNTkxOCwyNjAyMywyNjA0NCwyNjEwNiwyNjEzMiwyNjEz''@;'; put 'put ''MSwyNjEyNCwyNjExOCwyNjExNCwyNjEyNiwyNjExMiwyNjEyNywyNjEzMywyNjEyMiwyNjExOSwyNjM4MSwyNjM3OSwyNjQ3NywyNjUwNywyNjUxNywyNjQ4MSwyNjUyNCwyNjQ4MywyNjQ4NywyNjUwMywyNjUyNSwyNjUxOSwyNjQ3OSwyNjQ4MCwyNjQ5NSwyNjUwNSwyNjQ5NCwyNjUxMiwy''@;'; put 'put ''NjQ4NSwyNjUyMiwyNjUxNSwyNjQ5MiwyNjQ3NCwyNjQ4MiwyNzQyNywyNzQ5NCwyNzQ5NSwyNzUxOSwyNzY2NywyNzY3NSwyNzg3NSwyNzg4MCwyNzg5MSwyNzgyNSwyNzg1MiwyNzg3NywyNzgyNywyNzgzNywyNzgzOCwyNzgzNiwyNzg3NCwyNzgxOSwyNzg2MSwyNzg1OSwyNzgzMiwyNzg0''@;'; put 'put ''NCwyNzgzMywyNzg0MSwyNzgyMiwyNzg2MywyNzg0NSwyNzg4OSwyNzgzOSwyNzgzNSwyNzg3MywyNzg2NywyNzg1MCwyNzgyMCwyNzg4NywyNzg2OCwyNzg2MiwyNzg3MiwyODgyMSwyODgxNCwyODgxOCwyODgxMCwyODgyNSwyOTIyOCwyOTIyOSwyOTI0MCwyOTI1NiwyOTI4NywyOTI4OSwy''@;'; put 'put ''OTM3NiwyOTM5MCwyOTQwMSwyOTM5OSwyOTM5MiwyOTYwOSwyOTYwOCwyOTU5OSwyOTYxMSwyOTYwNSwzMDAxMywzMDEwOSwzMDEwNSwzMDEwNiwzMDM0MCwzMDQwMiwzMDQ1MCwzMDQ1MiwzMDY5MywzMDcxNywzMTAzOCwzMTA0MCwzMTA0MSwzMTE3NywzMTE3NiwzMTM1NCwzMTM1MywzMTQ4''@;'; put 'put ''MiwzMTk5OCwzMjU5NiwzMjY1MiwzMjY1MSwzMjc3MywzMjk1NCwzMjkzMywzMjkzMCwzMjk0NSwzMjkyOSwzMjkzOSwzMjkzNywzMjk0OCwzMjkzOCwzMjk0MywzMzI1MywzMzI3OCwzMzI5MywzMzQ1OSwzMzQzNywzMzQzMywzMzQ1MywzMzQ2OSwzMzQzOSwzMzQ2NSwzMzQ1NywzMzQ1Miwz''@;'; put 'put ''MzQ0NSwzMzQ1NSwzMzQ2NCwzMzQ0MywzMzQ1NiwzMzQ3MCwzMzQ2MywzNDM4MiwzNDQxNywyMTAyMSwzNDkyMCwzNjU1NSwzNjgxNCwzNjgyMCwzNjgxNywzNzA0NSwzNzA0OCwzNzA0MSwzNzA0NiwzNzMxOSwzNzMyOSwzODI2MywzODI3MiwzODQyOCwzODQ2NCwzODQ2MywzODQ1OSwzODQ2''@;'; put 'put ''OCwzODQ2NiwzODU4NSwzODYzMiwzODczOCwzODc1MCwyMDEyNywyMDE0MSwyMDE0MiwyMDQ0OSwyMDQwNSwyMDM5OSwyMDQxNSwyMDQ0OCwyMDQzMywyMDQzMSwyMDQ0NSwyMDQxOSwyMDQwNiwyMDQ0MCwyMDQ0NywyMDQyNiwyMDQzOSwyMDM5OCwyMDQzMiwyMDQyMCwyMDQxOCwyMDQ0Miwy''@;'; put 'put ''MDQzMCwyMDQ0NiwyMDQwNywyMDgyMywyMDg4MiwyMDg4MSwyMDg5NiwyMTA3MCwyMTA1OSwyMTA2NiwyMTA2OSwyMTA2OCwyMTA2NywyMTA2MywyMTE5MSwyMTE5MywyMTE4NywyMTE4NSwyMTI2MSwyMTMzNSwyMTM3MSwyMTQwMiwyMTQ2NywyMTY3NiwyMTY5NiwyMTY3MiwyMTcxMCwyMTcw''@;'; put 'put ''NSwyMTY4OCwyMTY3MCwyMTY4MywyMTcwMywyMTY5OCwyMTY5MywyMTY3NCwyMTY5NywyMTcwMCwyMTcwNCwyMTY3OSwyMTY3NSwyMTY4MSwyMTY5MSwyMTY3MywyMTY3MSwyMTY5NSwyMjI3MSwyMjQwMiwyMjQxMSwyMjQzMiwyMjQzNSwyMjQzNCwyMjQ3OCwyMjQ0NiwyMjQxOSwyMjg2OSwy''@;'; put 'put ''Mjg2NSwyMjg2MywyMjg2MiwyMjg2NCwyMzAwNCwyM2UzLDIzMDM5LDIzMDExLDIzMDE2LDIzMDQzLDIzMDEzLDIzMDE4LDIzMDAyLDIzMDE0LDIzMDQxLDIzMDM1LDIzNDAxLDIzNDU5LDIzNDYyLDIzNDYwLDIzNDU4LDIzNDYxLDIzNTUzLDIzNjMwLDIzNjMxLDIzNjI5LDIzNjI3LDIzNzY5''@;'; put 'put ''LDIzNzYyLDI0MDU1LDI0MDkzLDI0MTAxLDI0MDk1LDI0MTg5LDI0MjI0LDI0MjMwLDI0MzE0LDI0MzI4LDI0MzY1LDI0NDIxLDI0NDU2LDI0NDUzLDI0NDU4LDI0NDU5LDI0NDU1LDI0NDYwLDI0NDU3LDI0NTk0LDI0NjA1LDI0NjA4LDI0NjEzLDI0NTkwLDI0NjE2LDI0NjUzLDI0Njg4LDI0''@;'; put 'put ''NjgwLDI0Njc0LDI0NjQ2LDI0NjQzLDI0Njg0LDI0NjgzLDI0NjgyLDI0Njc2LDI1MTUzLDI1MzA4LDI1MzY2LDI1MzUzLDI1MzQwLDI1MzI1LDI1MzQ1LDI1MzI2LDI1MzQxLDI1MzUxLDI1MzI5LDI1MzM1LDI1MzI3LDI1MzI0LDI1MzQyLDI1MzMyLDI1MzYxLDI1MzQ2LDI1OTE5LDI1OTI1''@;'; put 'put ''LDI2MDI3LDI2MDQ1LDI2MDgyLDI2MTQ5LDI2MTU3LDI2MTQ0LDI2MTUxLDI2MTU5LDI2MTQzLDI2MTUyLDI2MTYxLDI2MTQ4LDI2MzU5LDI2NjIzLDI2NTc5LDI2NjA5LDI2NTgwLDI2NTc2LDI2NjA0LDI2NTUwLDI2NTQzLDI2NjEzLDI2NjAxLDI2NjA3LDI2NTY0LDI2NTc3LDI2NTQ4LDI2''@;'; put 'put ''NTg2LDI2NTk3LDI2NTUyLDI2NTc1LDI2NTkwLDI2NjExLDI2NTQ0LDI2NTg1LDI2NTk0LDI2NTg5LDI2NTc4LDI3NDk4LDI3NTIzLDI3NTI2LDI3NTczLDI3NjAyLDI3NjA3LDI3Njc5LDI3ODQ5LDI3OTE1LDI3OTU0LDI3OTQ2LDI3OTY5LDI3OTQxLDI3OTE2LDI3OTUzLDI3OTM0LDI3OTI3''@;'; put 'put ''LDI3OTYzLDI3OTY1LDI3OTY2LDI3OTU4LDI3OTMxLDI3ODkzLDI3OTYxLDI3OTQzLDI3OTYwLDI3OTQ1LDI3OTUwLDI3OTU3LDI3OTE4LDI3OTQ3LDI4ODQzLDI4ODU4LDI4ODUxLDI4ODQ0LDI4ODQ3LDI4ODQ1LDI4ODU2LDI4ODQ2LDI4ODM2LDI5MjMyLDI5Mjk4LDI5Mjk1LDI5MzAwLDI5''@;'; put 'put ''NDE3LDI5NDA4LDI5NDA5LDI5NjIzLDI5NjQyLDI5NjI3LDI5NjE4LDI5NjQ1LDI5NjMyLDI5NjE5LDI5OTc4LDI5OTk3LDMwMDMxLDMwMDI4LDMwMDMwLDMwMDI3LDMwMTIzLDMwMTE2LDMwMTE3LDMwMTE0LDMwMTE1LDMwMzI4LDMwMzQyLDMwMzQzLDMwMzQ0LDMwNDA4LDMwNDA2LDMwNDAz''@;'; put 'put ''LDMwNDA1LDMwNDY1LDMwNDU3LDMwNDU2LDMwNDczLDMwNDc1LDMwNDYyLDMwNDYwLDMwNDcxLDMwNjg0LDMwNzIyLDMwNzQwLDMwNzMyLDMwNzMzLDMxMDQ2LDMxMDQ5LDMxMDQ4LDMxMDQ3LDMxMTYxLDMxMTYyLDMxMTg1LDMxMTg2LDMxMTc5LDMxMzU5LDMxMzYxLDMxNDg3LDMxNDg1LDMx''@;'; put 'put ''ODY5LDMyMDAyLDMyMDA1LDMyZTMsMzIwMDksMzIwMDcsMzIwMDQsMzIwMDYsMzI1NjgsMzI2NTQsMzI3MDMsMzI3NzIsMzI3ODQsMzI3ODEsMzI3ODUsMzI4MjIsMzI5ODIsMzI5OTcsMzI5ODYsMzI5NjMsMzI5NjQsMzI5NzIsMzI5OTMsMzI5ODcsMzI5NzQsMzI5OTAsMzI5OTYsMzI5ODks''@;'; put 'put ''MzMyNjgsMzMzMTQsMzM1MTEsMzM1MzksMzM1NDEsMzM1MDcsMzM0OTksMzM1MTAsMzM1NDAsMzM1MDksMzM1MzgsMzM1NDUsMzM0OTAsMzM0OTUsMzM1MjEsMzM1MzcsMzM1MDAsMzM0OTIsMzM0ODksMzM1MDIsMzM0OTEsMzM1MDMsMzM1MTksMzM1NDIsMzQzODQsMzQ0MjUsMzQ0MjcsMzQ0''@;'; put 'put ''MjYsMzQ4OTMsMzQ5MjMsMzUyMDEsMzUyODQsMzUzMzYsMzUzMzAsMzUzMzEsMzU5OTgsMzZlMywzNjIxMiwzNjIxMSwzNjI3NiwzNjU1NywzNjU1NiwzNjg0OCwzNjgzOCwzNjgzNCwzNjg0MiwzNjgzNywzNjg0NSwzNjg0MywzNjgzNiwzNjg0MCwzNzA2NiwzNzA3MCwzNzA1NywzNzA1OSwz''@;'; put 'put ''NzE5NSwzNzE5NCwzNzMyNSwzODI3NCwzODQ4MCwzODQ3NSwzODQ3NiwzODQ3NywzODc1NCwzODc2MSwzODg1OSwzODg5MywzODg5OSwzODkxMywzOTA4MCwzOTEzMSwzOTEzNSwzOTMxOCwzOTMyMSwyMDA1NiwyMDE0NywyMDQ5MiwyMDQ5MywyMDUxNSwyMDQ2MywyMDUxOCwyMDUxNywyMDQ3''@;'; put 'put ''MiwyMDUyMSwyMDUwMiwyMDQ4NiwyMDU0MCwyMDUxMSwyMDUwNiwyMDQ5OCwyMDQ5NywyMDQ3NCwyMDQ4MCwyMDUwMCwyMDUyMCwyMDQ2NSwyMDUxMywyMDQ5MSwyMDUwNSwyMDUwNCwyMDQ2NywyMDQ2MiwyMDUyNSwyMDUyMiwyMDQ3OCwyMDUyMywyMDQ4OSwyMDg2MCwyMDkwMCwyMDkwMSwy''@;'; put 'put ''MDg5OCwyMDk0MSwyMDk0MCwyMDkzNCwyMDkzOSwyMTA3OCwyMTA4NCwyMTA3NiwyMTA4MywyMTA4NSwyMTI5MCwyMTM3NSwyMTQwNywyMTQwNSwyMTQ3MSwyMTczNiwyMTc3NiwyMTc2MSwyMTgxNSwyMTc1NiwyMTczMywyMTc0NiwyMTc2NiwyMTc1NCwyMTc4MCwyMTczNywyMTc0MSwyMTcy''@;'; put 'put ''OSwyMTc2OSwyMTc0MiwyMTczOCwyMTczNCwyMTc5OSwyMTc2NywyMTc1NywyMTc3NSwyMjI3NSwyMjI3NiwyMjQ2NiwyMjQ4NCwyMjQ3NSwyMjQ2NywyMjUzNywyMjc5OSwyMjg3MSwyMjg3MiwyMjg3NCwyMzA1NywyMzA2NCwyMzA2OCwyMzA3MSwyMzA2NywyMzA1OSwyMzAyMCwyMzA3Miwy''@;'; put 'put ''MzA3NSwyMzA4MSwyMzA3NywyMzA1MiwyMzA0OSwyMzQwMywyMzY0MCwyMzQ3MiwyMzQ3NSwyMzQ3OCwyMzQ3NiwyMzQ3MCwyMzQ3NywyMzQ4MSwyMzQ4MCwyMzU1NiwyMzYzMywyMzYzNywyMzYzMiwyMzc4OSwyMzgwNSwyMzgwMywyMzc4NiwyMzc4NCwyMzc5MiwyMzc5OCwyMzgwOSwyMzc5''@;'; put 'put ''NiwyNDA0NiwyNDEwOSwyNDEwNywyNDIzNSwyNDIzNywyNDIzMSwyNDM2OSwyNDQ2NiwyNDQ2NSwyNDQ2NCwyNDY2NSwyNDY3NSwyNDY3NywyNDY1NiwyNDY2MSwyNDY4NSwyNDY4MSwyNDY4NywyNDcwOCwyNDczNSwyNDczMCwyNDcxNywyNDcyNCwyNDcxNiwyNDcwOSwyNDcyNiwyNTE1OSwy''@;'; put 'put ''NTMzMSwyNTM1MiwyNTM0MywyNTQyMiwyNTQwNiwyNTM5MSwyNTQyOSwyNTQxMCwyNTQxNCwyNTQyMywyNTQxNywyNTQwMiwyNTQyNCwyNTQwNSwyNTM4NiwyNTM4NywyNTM4NCwyNTQyMSwyNTQyMCwyNTkyOCwyNTkyOSwyNjAwOSwyNjA0OSwyNjA1MywyNjE3OCwyNjE4NSwyNjE5MSwyNjE3''@;'; put 'put ''OSwyNjE5NCwyNjE4OCwyNjE4MSwyNjE3NywyNjM2MCwyNjM4OCwyNjM4OSwyNjM5MSwyNjY1NywyNjY4MCwyNjY5NiwyNjY5NCwyNjcwNywyNjY4MSwyNjY5MCwyNjcwOCwyNjY2NSwyNjgwMywyNjY0NywyNjcwMCwyNjcwNSwyNjY4NSwyNjYxMiwyNjcwNCwyNjY4OCwyNjY4NCwyNjY5MSwy''@;'; put 'put ''NjY2NiwyNjY5MywyNjY0MywyNjY0OCwyNjY4OSwyNzUzMCwyNzUyOSwyNzU3NSwyNzY4MywyNzY4NywyNzY4OCwyNzY4NiwyNzY4NCwyNzg4OCwyODAxMCwyODA1MywyODA0MCwyODAzOSwyODAwNiwyODAyNCwyODAyMywyNzk5MywyODA1MSwyODAxMiwyODA0MSwyODAxNCwyNzk5NCwyODAy''@;'; put 'put ''MCwyODAwOSwyODA0NCwyODA0MiwyODAyNSwyODAzNywyODAwNSwyODA1MiwyODg3NCwyODg4OCwyODkwMCwyODg4OSwyODg3MiwyODg3OSwyOTI0MSwyOTMwNSwyOTQzNiwyOTQzMywyOTQzNywyOTQzMiwyOTQzMSwyOTU3NCwyOTY3NywyOTcwNSwyOTY3OCwyOTY2NCwyOTY3NCwyOTY2Miwz''@;'; put 'put ''MDAzNiwzMDA0NSwzMDA0NCwzMDA0MiwzMDA0MSwzMDE0MiwzMDE0OSwzMDE1MSwzMDEzMCwzMDEzMSwzMDE0MSwzMDE0MCwzMDEzNywzMDE0NiwzMDEzNiwzMDM0NywzMDM4NCwzMDQxMCwzMDQxMywzMDQxNCwzMDUwNSwzMDQ5NSwzMDQ5NiwzMDUwNCwzMDY5NywzMDc2OCwzMDc1OSwzMDc3''@;'; put 'put ''NiwzMDc0OSwzMDc3MiwzMDc3NSwzMDc1NywzMDc2NSwzMDc1MiwzMDc1MSwzMDc3MCwzMTA2MSwzMTA1NiwzMTA3MiwzMTA3MSwzMTA2MiwzMTA3MCwzMTA2OSwzMTA2MywzMTA2NiwzMTIwNCwzMTIwMywzMTIwNywzMTE5OSwzMTIwNiwzMTIwOSwzMTE5MiwzMTM2NCwzMTM2OCwzMTQ0OSwz''@;'; put 'put ''MTQ5NCwzMTUwNSwzMTg4MSwzMjAzMywzMjAyMywzMjAxMSwzMjAxMCwzMjAzMiwzMjAzNCwzMjAyMCwzMjAxNiwzMjAyMSwzMjAyNiwzMjAyOCwzMjAxMywzMjAyNSwzMjAyNywzMjU3MCwzMjYwNywzMjY2MCwzMjcwOSwzMjcwNSwzMjc3NCwzMjc5MiwzMjc4OSwzMjc5MywzMjc5MSwzMjgy''@;'; put 'put ''OSwzMjgzMSwzMzAwOSwzMzAyNiwzMzAwOCwzMzAyOSwzMzAwNSwzMzAxMiwzMzAzMCwzMzAxNiwzMzAxMSwzMzAzMiwzMzAyMSwzMzAzNCwzMzAyMCwzMzAwNywzMzI2MSwzMzI2MCwzMzI4MCwzMzI5NiwzMzMyMiwzMzMyMywzMzMyMCwzMzMyNCwzMzQ2NywzMzU3OSwzMzYxOCwzMzYyMCwz''@;'; put 'put ''MzYxMCwzMzU5MiwzMzYxNiwzMzYwOSwzMzU4OSwzMzU4OCwzMzYxNSwzMzU4NiwzMzU5MywzMzU5MCwzMzU1OSwzMzYwMCwzMzU4NSwzMzU3NiwzMzYwMywzNDM4OCwzNDQ0MiwzNDQ3NCwzNDQ1MSwzNDQ2OCwzNDQ3MywzNDQ0NCwzNDQ2NywzNDQ2MCwzNDkyOCwzNDkzNSwzNDk0NSwzNDk0''@;'; put 'put ''NiwzNDk0MSwzNDkzNywzNTM1MiwzNTM0NCwzNTM0MiwzNTM0MCwzNTM0OSwzNTMzOCwzNTM1MSwzNTM0NywzNTM1MCwzNTM0MywzNTM0NSwzNTkxMiwzNTk2MiwzNTk2MSwzNjAwMSwzNjAwMiwzNjIxNSwzNjUyNCwzNjU2MiwzNjU2NCwzNjU1OSwzNjc4NSwzNjg2NSwzNjg3MCwzNjg1NSwz''@;'; put 'put ''Njg2NCwzNjg1OCwzNjg1MiwzNjg2NywzNjg2MSwzNjg2OSwzNjg1NiwzNzAxMywzNzA4OSwzNzA4NSwzNzA5MCwzNzIwMiwzNzE5NywzNzE5NiwzNzMzNiwzNzM0MSwzNzMzNSwzNzM0MCwzNzMzNywzODI3NSwzODQ5OCwzODQ5OSwzODQ5NywzODQ5MSwzODQ5MywzODUwMCwzODQ4OCwzODQ5''@;'; put 'put ''NCwzODU4NywzOTEzOCwzOTM0MCwzOTU5MiwzOTY0MCwzOTcxNywzOTczMCwzOTc0MCwyMDA5NCwyMDYwMiwyMDYwNSwyMDU3MiwyMDU1MSwyMDU0NywyMDU1NiwyMDU3MCwyMDU1MywyMDU4MSwyMDU5OCwyMDU1OCwyMDU2NSwyMDU5NywyMDU5NiwyMDU5OSwyMDU1OSwyMDQ5NSwyMDU5MSwy''@;'; put 'put ''MDU4OSwyMDgyOCwyMDg4NSwyMDk3NiwyMTA5OCwyMTEwMywyMTIwMiwyMTIwOSwyMTIwOCwyMTIwNSwyMTI2NCwyMTI2MywyMTI3MywyMTMxMSwyMTMxMiwyMTMxMCwyMTQ0MywyNjM2NCwyMTgzMCwyMTg2NiwyMTg2MiwyMTgyOCwyMTg1NCwyMTg1NywyMTgyNywyMTgzNCwyMTgwOSwyMTg0''@;'; put 'put ''NiwyMTgzOSwyMTg0NSwyMTgwNywyMTg2MCwyMTgxNiwyMTgwNiwyMTg1MiwyMTgwNCwyMTg1OSwyMTgxMSwyMTgyNSwyMTg0NywyMjI4MCwyMjI4MywyMjI4MSwyMjQ5NSwyMjUzMywyMjUzOCwyMjUzNCwyMjQ5NiwyMjUwMCwyMjUyMiwyMjUzMCwyMjU4MSwyMjUxOSwyMjUyMSwyMjgxNiwy''@;'; put 'put ''Mjg4MiwyMzA5NCwyMzEwNSwyMzExMywyMzE0MiwyMzE0NiwyMzEwNCwyMzEwMCwyMzEzOCwyMzEzMCwyMzExMCwyMzExNCwyMzQwOCwyMzQ5NSwyMzQ5MywyMzQ5MiwyMzQ5MCwyMzQ4NywyMzQ5NCwyMzU2MSwyMzU2MCwyMzU1OSwyMzY0OCwyMzY0NCwyMzY0NSwyMzgxNSwyMzgxNCwyMzgy''@;'; put 'put ''MiwyMzgzNSwyMzgzMCwyMzg0MiwyMzgyNSwyMzg0OSwyMzgyOCwyMzgzMywyMzg0NCwyMzg0NywyMzgzMSwyNDAzNCwyNDEyMCwyNDExOCwyNDExNSwyNDExOSwyNDI0NywyNDI0OCwyNDI0NiwyNDI0NSwyNDI1NCwyNDM3MywyNDM3NSwyNDQwNywyNDQyOCwyNDQyNSwyNDQyNywyNDQ3MSwy''@;'; put 'put ''NDQ3MywyNDQ3OCwyNDQ3MiwyNDQ4MSwyNDQ4MCwyNDQ3NiwyNDcwMywyNDczOSwyNDcxMywyNDczNiwyNDc0NCwyNDc3OSwyNDc1NiwyNDgwNiwyNDc2NSwyNDc3MywyNDc2MywyNDc1NywyNDc5NiwyNDc2NCwyNDc5MiwyNDc4OSwyNDc3NCwyNDc5OSwyNDc2MCwyNDc5NCwyNDc3NSwyNTEx''@;'; put 'put ''NCwyNTExNSwyNTE2MCwyNTUwNCwyNTUxMSwyNTQ1OCwyNTQ5NCwyNTUwNiwyNTUwOSwyNTQ2MywyNTQ0NywyNTQ5NiwyNTUxNCwyNTQ1NywyNTUxMywyNTQ4MSwyNTQ3NSwyNTQ5OSwyNTQ1MSwyNTUxMiwyNTQ3NiwyNTQ4MCwyNTQ5NywyNTUwNSwyNTUxNiwyNTQ5MCwyNTQ4NywyNTQ3Miwy''@;'; put 'put ''NTQ2NywyNTQ0OSwyNTQ0OCwyNTQ2NiwyNTk0OSwyNTk0MiwyNTkzNywyNTk0NSwyNTk0MywyMTg1NSwyNTkzNSwyNTk0NCwyNTk0MSwyNTk0MCwyNjAxMiwyNjAxMSwyNjAyOCwyNjA2MywyNjA1OSwyNjA2MCwyNjA2MiwyNjIwNSwyNjIwMiwyNjIxMiwyNjIxNiwyNjIxNCwyNjIwNiwyNjM2''@;'; put 'put ''MSwyMTIwNywyNjM5NSwyNjc1MywyNjc5OSwyNjc4NiwyNjc3MSwyNjgwNSwyNjc1MSwyNjc0MiwyNjgwMSwyNjc5MSwyNjc3NSwyNjgwMCwyNjc1NSwyNjgyMCwyNjc5NywyNjc1OCwyNjc1NywyNjc3MiwyNjc4MSwyNjc5MiwyNjc4MywyNjc4NSwyNjc1NCwyNzQ0MiwyNzU3OCwyNzYyNywy''@;'; put 'put ''NzYyOCwyNzY5MSwyODA0NiwyODA5MiwyODE0NywyODEyMSwyODA4MiwyODEyOSwyODEwOCwyODEzMiwyODE1NSwyODE1NCwyODE2NSwyODEwMywyODEwNywyODA3OSwyODExMywyODA3OCwyODEyNiwyODE1MywyODA4OCwyODE1MSwyODE0OSwyODEwMSwyODExNCwyODE4NiwyODA4NSwyODEy''@;'; put 'put ''MiwyODEzOSwyODEyMCwyODEzOCwyODE0NSwyODE0MiwyODEzNiwyODEwMiwyODEwMCwyODA3NCwyODE0MCwyODA5NSwyODEzNCwyODkyMSwyODkzNywyODkzOCwyODkyNSwyODkxMSwyOTI0NSwyOTMwOSwyOTMxMywyOTQ2OCwyOTQ2NywyOTQ2MiwyOTQ1OSwyOTQ2NSwyOTU3NSwyOTcwMSwy''@;'; put 'put ''OTcwNiwyOTY5OSwyOTcwMiwyOTY5NCwyOTcwOSwyOTkyMCwyOTk0MiwyOTk0MywyOTk4MCwyOTk4NiwzMDA1MywzMDA1NCwzMDA1MCwzMDA2NCwzMDA5NSwzMDE2NCwzMDE2NSwzMDEzMywzMDE1NCwzMDE1NywzMDM1MCwzMDQyMCwzMDQxOCwzMDQyNywzMDUxOSwzMDUyNiwzMDUyNCwzMDUx''@;'; put 'put ''OCwzMDUyMCwzMDUyMiwzMDgyNywzMDc4NywzMDc5OCwzMTA3NywzMTA4MCwzMTA4NSwzMTIyNywzMTM3OCwzMTM4MSwzMTUyMCwzMTUyOCwzMTUxNSwzMTUzMiwzMTUyNiwzMTUxMywzMTUxOCwzMTUzNCwzMTg5MCwzMTg5NSwzMTg5MywzMjA3MCwzMjA2NywzMjExMywzMjA0NiwzMjA1Nywz''@;'; put 'put ''MjA2MCwzMjA2NCwzMjA0OCwzMjA1MSwzMjA2OCwzMjA0NywzMjA2NiwzMjA1MCwzMjA0OSwzMjU3MywzMjY3MCwzMjY2NiwzMjcxNiwzMjcxOCwzMjcyMiwzMjc5NiwzMjg0MiwzMjgzOCwzMzA3MSwzMzA0NiwzMzA1OSwzMzA2NywzMzA2NSwzMzA3MiwzMzA2MCwzMzI4MiwzMzMzMywzMzMz''@;'; put 'put ''NSwzMzMzNCwzMzMzNywzMzY3OCwzMzY5NCwzMzY4OCwzMzY1NiwzMzY5OCwzMzY4NiwzMzcyNSwzMzcwNywzMzY4MiwzMzY3NCwzMzY4MywzMzY3MywzMzY5NiwzMzY1NSwzMzY1OSwzMzY2MCwzMzY3MCwzMzcwMywzNDM4OSwyNDQyNiwzNDUwMywzNDQ5NiwzNDQ4NiwzNDUwMCwzNDQ4NSwz''@;'; put 'put ''NDUwMiwzNDUwNywzNDQ4MSwzNDQ3OSwzNDUwNSwzNDg5OSwzNDk3NCwzNDk1MiwzNDk4NywzNDk2MiwzNDk2NiwzNDk1NywzNDk1NSwzNTIxOSwzNTIxNSwzNTM3MCwzNTM1NywzNTM2MywzNTM2NSwzNTM3NywzNTM3MywzNTM1OSwzNTM1NSwzNTM2MiwzNTkxMywzNTkzMCwzNjAwOSwzNjAx''@;'; put 'put ''MiwzNjAxMSwzNjAwOCwzNjAxMCwzNjAwNywzNjE5OSwzNjE5OCwzNjI4NiwzNjI4MiwzNjU3MSwzNjU3NSwzNjg4OSwzNjg3NywzNjg5MCwzNjg4NywzNjg5OSwzNjg5NSwzNjg5MywzNjg4MCwzNjg4NSwzNjg5NCwzNjg5NiwzNjg3OSwzNjg5OCwzNjg4NiwzNjg5MSwzNjg4NCwzNzA5Niwz''@;'; put 'put ''NzEwMSwzNzExNywzNzIwNywzNzMyNiwzNzM2NSwzNzM1MCwzNzM0NywzNzM1MSwzNzM1NywzNzM1MywzODI4MSwzODUwNiwzODUxNywzODUxNSwzODUyMCwzODUxMiwzODUxNiwzODUxOCwzODUxOSwzODUwOCwzODU5MiwzODYzNCwzODYzMywzMTQ1NiwzMTQ1NSwzODkxNCwzODkxNSwzOTc3''@;'; put 'put ''MCw0MDE2NSw0MDU2NSw0MDU3NSw0MDYxMyw0MDYzNSwyMDY0MiwyMDYyMSwyMDYxMywyMDYzMywyMDYyNSwyMDYwOCwyMDYzMCwyMDYzMiwyMDYzNCwyNjM2OCwyMDk3NywyMTEwNiwyMTEwOCwyMTEwOSwyMTA5NywyMTIxNCwyMTIxMywyMTIxMSwyMTMzOCwyMTQxMywyMTg4MywyMTg4OCwy''@;'; put 'put ''MTkyNywyMTg4NCwyMTg5OCwyMTkxNywyMTkxMiwyMTg5MCwyMTkxNiwyMTkzMCwyMTkwOCwyMTg5NSwyMTg5OSwyMTg5MSwyMTkzOSwyMTkzNCwyMTkxOSwyMTgyMiwyMTkzOCwyMTkxNCwyMTk0NywyMTkzMiwyMTkzNywyMTg4NiwyMTg5NywyMTkzMSwyMTkxMywyMjI4NSwyMjU3NSwyMjU3''@;'; put 'put ''MCwyMjU4MCwyMjU2NCwyMjU3NiwyMjU3NywyMjU2MSwyMjU1NywyMjU2MCwyMjc3NywyMjc3OCwyMjg4MCwyMzE1OSwyMzE5NCwyMzE2NywyMzE4NiwyMzE5NSwyMzIwNywyMzQxMSwyMzQwOSwyMzUwNiwyMzUwMCwyMzUwNywyMzUwNCwyMzU2MiwyMzU2MywyMzYwMSwyMzg4NCwyMzg4OCwy''@;'; put 'put ''Mzg2MCwyMzg3OSwyNDA2MSwyNDEzMywyNDEyNSwyNDEyOCwyNDEzMSwyNDE5MCwyNDI2NiwyNDI1NywyNDI1OCwyNDI2MCwyNDM4MCwyNDQyOSwyNDQ4OSwyNDQ5MCwyNDQ4OCwyNDc4NSwyNDgwMSwyNDc1NCwyNDc1OCwyNDgwMCwyNDg2MCwyNDg2NywyNDgyNiwyNDg1MywyNDgxNiwyNDgy''@;'; put 'put ''NywyNDgyMCwyNDkzNiwyNDgxNywyNDg0NiwyNDgyMiwyNDg0MSwyNDgzMiwyNDg1MCwyNTExOSwyNTE2MSwyNTUwNywyNTQ4NCwyNTU1MSwyNTUzNiwyNTU3NywyNTU0NSwyNTU0MiwyNTU0OSwyNTU1NCwyNTU3MSwyNTU1MiwyNTU2OSwyNTU1OCwyNTU4MSwyNTU4MiwyNTQ2MiwyNTU4OCwy''@;'; put 'put ''NTU3OCwyNTU2MywyNTY4MiwyNTU2MiwyNTU5MywyNTk1MCwyNTk1OCwyNTk1NCwyNTk1NSwyNjAwMSwyNmUzLDI2MDMxLDI2MjIyLDI2MjI0LDI2MjI4LDI2MjMwLDI2MjIzLDI2MjU3LDI2MjM0LDI2MjM4LDI2MjMxLDI2MzY2LDI2MzY3LDI2Mzk5LDI2Mzk3LDI2ODc0LDI2ODM3LDI2ODQ4''@;'; put 'put ''LDI2ODQwLDI2ODM5LDI2ODg1LDI2ODQ3LDI2ODY5LDI2ODYyLDI2ODU1LDI2ODczLDI2ODM0LDI2ODY2LDI2ODUxLDI2ODI3LDI2ODI5LDI2ODkzLDI2ODk4LDI2ODk0LDI2ODI1LDI2ODQyLDI2OTkwLDI2ODc1LDI3NDU0LDI3NDUwLDI3NDUzLDI3NTQ0LDI3NTQyLDI3NTgwLDI3NjMxLDI3''@;'; put 'put ''Njk0LDI3Njk1LDI3NjkyLDI4MjA3LDI4MjE2LDI4MjQ0LDI4MTkzLDI4MjEwLDI4MjYzLDI4MjM0LDI4MTkyLDI4MTk3LDI4MTk1LDI4MTg3LDI4MjUxLDI4MjQ4LDI4MTk2LDI4MjQ2LDI4MjcwLDI4MjA1LDI4MTk4LDI4MjcxLDI4MjEyLDI4MjM3LDI4MjE4LDI4MjA0LDI4MjI3LDI4MTg5''@;'; put 'put ''LDI4MjIyLDI4MzYzLDI4Mjk3LDI4MTg1LDI4MjM4LDI4MjU5LDI4MjI4LDI4Mjc0LDI4MjY1LDI4MjU1LDI4OTUzLDI4OTU0LDI4OTY2LDI4OTc2LDI4OTYxLDI4OTgyLDI5MDM4LDI4OTU2LDI5MjYwLDI5MzE2LDI5MzEyLDI5NDk0LDI5NDc3LDI5NDkyLDI5NDgxLDI5NzU0LDI5NzM4LDI5''@;'; put 'put ''NzQ3LDI5NzMwLDI5NzMzLDI5NzQ5LDI5NzUwLDI5NzQ4LDI5NzQzLDI5NzIzLDI5NzM0LDI5NzM2LDI5OTg5LDI5OTkwLDMwMDU5LDMwMDU4LDMwMTc4LDMwMTcxLDMwMTc5LDMwMTY5LDMwMTY4LDMwMTc0LDMwMTc2LDMwMzMxLDMwMzMyLDMwMzU4LDMwMzU1LDMwMzg4LDMwNDI4LDMwNTQz''@;'; put 'put ''LDMwNzAxLDMwODEzLDMwODI4LDMwODMxLDMxMjQ1LDMxMjQwLDMxMjQzLDMxMjM3LDMxMjMyLDMxMzg0LDMxMzgzLDMxMzgyLDMxNDYxLDMxNDU5LDMxNTYxLDMxNTc0LDMxNTU4LDMxNTY4LDMxNTcwLDMxNTcyLDMxNTY1LDMxNTYzLDMxNTY3LDMxNTY5LDMxOTAzLDMxOTA5LDMyMDk0LDMy''@;'; put 'put ''MDgwLDMyMTA0LDMyMDg1LDMyMDQzLDMyMTEwLDMyMTE0LDMyMDk3LDMyMTAyLDMyMDk4LDMyMTEyLDMyMTE1LDIxODkyLDMyNzI0LDMyNzI1LDMyNzc5LDMyODUwLDMyOTAxLDMzMTA5LDMzMTA4LDMzMDk5LDMzMTA1LDMzMTAyLDMzMDgxLDMzMDk0LDMzMDg2LDMzMTAwLDMzMTA3LDMzMTQw''@;'; put 'put ''LDMzMjk4LDMzMzA4LDMzNzY5LDMzNzk1LDMzNzg0LDMzODA1LDMzNzYwLDMzNzMzLDMzODAzLDMzNzI5LDMzNzc1LDMzNzc3LDMzNzgwLDMzODc5LDMzODAyLDMzNzc2LDMzODA0LDMzNzQwLDMzNzg5LDMzNzc4LDMzNzM4LDMzODQ4LDMzODA2LDMzNzk2LDMzNzU2LDMzNzk5LDMzNzQ4LDMz''@;'; put 'put ''NzU5LDM0Mzk1LDM0NTI3LDM0NTIxLDM0NTQxLDM0NTE2LDM0NTIzLDM0NTMyLDM0NTEyLDM0NTI2LDM0OTAzLDM1MDA5LDM1MDEwLDM0OTkzLDM1MjAzLDM1MjIyLDM1Mzg3LDM1NDI0LDM1NDEzLDM1NDIyLDM1Mzg4LDM1MzkzLDM1NDEyLDM1NDE5LDM1NDA4LDM1Mzk4LDM1MzgwLDM1Mzg2''@;'; put 'put ''LDM1MzgyLDM1NDE0LDM1OTM3LDM1OTcwLDM2MDE1LDM2MDI4LDM2MDE5LDM2MDI5LDM2MDMzLDM2MDI3LDM2MDMyLDM2MDIwLDM2MDIzLDM2MDIyLDM2MDMxLDM2MDI0LDM2MjM0LDM2MjI5LDM2MjI1LDM2MzAyLDM2MzE3LDM2Mjk5LDM2MzE0LDM2MzA1LDM2MzAwLDM2MzE1LDM2Mjk0LDM2''@;'; put 'put ''NjAzLDM2NjAwLDM2NjA0LDM2NzY0LDM2OTEwLDM2OTE3LDM2OTEzLDM2OTIwLDM2OTE0LDM2OTE4LDM3MTIyLDM3MTA5LDM3MTI5LDM3MTE4LDM3MjE5LDM3MjIxLDM3MzI3LDM3Mzk2LDM3Mzk3LDM3NDExLDM3Mzg1LDM3NDA2LDM3Mzg5LDM3MzkyLDM3MzgzLDM3MzkzLDM4MjkyLDM4Mjg3''@;'; put 'put ''LDM4MjgzLDM4Mjg5LDM4MjkxLDM4MjkwLDM4Mjg2LDM4NTM4LDM4NTQyLDM4NTM5LDM4NTI1LDM4NTMzLDM4NTM0LDM4NTQxLDM4NTE0LDM4NTMyLDM4NTkzLDM4NTk3LDM4NTk2LDM4NTk4LDM4NTk5LDM4NjM5LDM4NjQyLDM4ODYwLDM4OTE3LDM4OTE4LDM4OTIwLDM5MTQzLDM5MTQ2LDM5''@;'; put 'put ''MTUxLDM5MTQ1LDM5MTU0LDM5MTQ5LDM5MzQyLDM5MzQxLDQwNjQzLDQwNjUzLDQwNjU3LDIwMDk4LDIwNjUzLDIwNjYxLDIwNjU4LDIwNjU5LDIwNjc3LDIwNjcwLDIwNjUyLDIwNjYzLDIwNjY3LDIwNjU1LDIwNjc5LDIxMTE5LDIxMTExLDIxMTE3LDIxMjE1LDIxMjIyLDIxMjIwLDIxMjE4''@;'; put 'put ''LDIxMjE5LDIxMjk1LDIxOTgzLDIxOTkyLDIxOTcxLDIxOTkwLDIxOTY2LDIxOTgwLDIxOTU5LDIxOTY5LDIxOTg3LDIxOTg4LDIxOTk5LDIxOTc4LDIxOTg1LDIxOTU3LDIxOTU4LDIxOTg5LDIxOTYxLDIyMjkwLDIyMjkxLDIyNjIyLDIyNjA5LDIyNjE2LDIyNjE1LDIyNjE4LDIyNjEyLDIy''@;'; put 'put ''NjM1LDIyNjA0LDIyNjM3LDIyNjAyLDIyNjI2LDIyNjEwLDIyNjAzLDIyODg3LDIzMjMzLDIzMjQxLDIzMjQ0LDIzMjMwLDIzMjI5LDIzMjI4LDIzMjE5LDIzMjM0LDIzMjE4LDIzOTEzLDIzOTE5LDI0MTQwLDI0MTg1LDI0MjY1LDI0MjY0LDI0MzM4LDI0NDA5LDI0NDkyLDI0NDk0LDI0ODU4''@;'; put 'put ''LDI0ODQ3LDI0OTA0LDI0ODYzLDI0ODE5LDI0ODU5LDI0ODI1LDI0ODMzLDI0ODQwLDI0OTEwLDI0OTA4LDI0OTAwLDI0OTA5LDI0ODk0LDI0ODg0LDI0ODcxLDI0ODQ1LDI0ODM4LDI0ODg3LDI1MTIxLDI1MTIyLDI1NjE5LDI1NjYyLDI1NjMwLDI1NjQyLDI1NjQ1LDI1NjYxLDI1NjQ0LDI1''@;'; put 'put ''NjE1LDI1NjI4LDI1NjIwLDI1NjEzLDI1NjU0LDI1NjIyLDI1NjIzLDI1NjA2LDI1OTY0LDI2MDE1LDI2MDMyLDI2MjYzLDI2MjQ5LDI2MjQ3LDI2MjQ4LDI2MjYyLDI2MjQ0LDI2MjY0LDI2MjUzLDI2MzcxLDI3MDI4LDI2OTg5LDI2OTcwLDI2OTk5LDI2OTc2LDI2OTY0LDI2OTk3LDI2OTI4''@;'; put 'put ''LDI3MDEwLDI2OTU0LDI2OTg0LDI2OTg3LDI2OTc0LDI2OTYzLDI3MDAxLDI3MDE0LDI2OTczLDI2OTc5LDI2OTcxLDI3NDYzLDI3NTA2LDI3NTg0LDI3NTgzLDI3NjAzLDI3NjQ1LDI4MzIyLDI4MzM1LDI4MzcxLDI4MzQyLDI4MzU0LDI4MzA0LDI4MzE3LDI4MzU5LDI4MzU3LDI4MzI1LDI4''@;'; put 'put ''MzEyLDI4MzQ4LDI4MzQ2LDI4MzMxLDI4MzY5LDI4MzEwLDI4MzE2LDI4MzU2LDI4MzcyLDI4MzMwLDI4MzI3LDI4MzQwLDI5MDA2LDI5MDE3LDI5MDMzLDI5MDI4LDI5MDAxLDI5MDMxLDI5MDIwLDI5MDM2LDI5MDMwLDI5MDA0LDI5MDI5LDI5MDIyLDI4OTk4LDI5MDMyLDI5MDE0LDI5MjQy''@;'; put 'put ''LDI5MjY2LDI5NDk1LDI5NTA5LDI5NTAzLDI5NTAyLDI5ODA3LDI5Nzg2LDI5NzgxLDI5NzkxLDI5NzkwLDI5NzYxLDI5NzU5LDI5Nzg1LDI5Nzg3LDI5Nzg4LDMwMDcwLDMwMDcyLDMwMjA4LDMwMTkyLDMwMjA5LDMwMTk0LDMwMTkzLDMwMjAyLDMwMjA3LDMwMTk2LDMwMTk1LDMwNDMwLDMw''@;'; put 'put ''NDMxLDMwNTU1LDMwNTcxLDMwNTY2LDMwNTU4LDMwNTYzLDMwNTg1LDMwNTcwLDMwNTcyLDMwNTU2LDMwNTY1LDMwNTY4LDMwNTYyLDMwNzAyLDMwODYyLDMwODk2LDMwODcxLDMwODcyLDMwODYwLDMwODU3LDMwODQ0LDMwODY1LDMwODY3LDMwODQ3LDMxMDk4LDMxMTAzLDMxMTA1LDMzODM2''@;'; put 'put ''LDMxMTY1LDMxMjYwLDMxMjU4LDMxMjY0LDMxMjUyLDMxMjYzLDMxMjYyLDMxMzkxLDMxMzkyLDMxNjA3LDMxNjgwLDMxNTg0LDMxNTk4LDMxNTkxLDMxOTIxLDMxOTIzLDMxOTI1LDMyMTQ3LDMyMTIxLDMyMTQ1LDMyMTI5LDMyMTQzLDMyMDkxLDMyNjIyLDMyNjE3LDMyNjE4LDMyNjI2LDMy''@;'; put 'put ''NjgxLDMyNjgwLDMyNjc2LDMyODU0LDMyODU2LDMyOTAyLDMyOTAwLDMzMTM3LDMzMTM2LDMzMTQ0LDMzMTI1LDMzMTM0LDMzMTM5LDMzMTMxLDMzMTQ1LDMzMTQ2LDMzMTI2LDMzMjg1LDMzMzUxLDMzOTIyLDMzOTExLDMzODUzLDMzODQxLDMzOTA5LDMzODk0LDMzODk5LDMzODY1LDMzOTAw''@;'; put 'put ''LDMzODgzLDMzODUyLDMzODQ1LDMzODg5LDMzODkxLDMzODk3LDMzOTAxLDMzODYyLDM0Mzk4LDM0Mzk2LDM0Mzk5LDM0NTUzLDM0NTc5LDM0NTY4LDM0NTY3LDM0NTYwLDM0NTU4LDM0NTU1LDM0NTYyLDM0NTYzLDM0NTY2LDM0NTcwLDM0OTA1LDM1MDM5LDM1MDI4LDM1MDMzLDM1MDM2LDM1''@;'; put 'put ''MDMyLDM1MDM3LDM1MDQxLDM1MDE4LDM1MDI5LDM1MDI2LDM1MjI4LDM1Mjk5LDM1NDM1LDM1NDQyLDM1NDQzLDM1NDMwLDM1NDMzLDM1NDQwLDM1NDYzLDM1NDUyLDM1NDI3LDM1NDg4LDM1NDQxLDM1NDYxLDM1NDM3LDM1NDI2LDM1NDM4LDM1NDM2LDM1NDQ5LDM1NDUxLDM1MzkwLDM1NDMy''@;'; put 'put ''LDM1OTM4LDM1OTc4LDM1OTc3LDM2MDQyLDM2MDM5LDM2MDQwLDM2MDM2LDM2MDE4LDM2MDM1LDM2MDM0LDM2MDM3LDM2MzIxLDM2MzE5LDM2MzI4LDM2MzM1LDM2MzM5LDM2MzQ2LDM2MzMwLDM2MzI0LDM2MzI2LDM2NTMwLDM2NjExLDM2NjE3LDM2NjA2LDM2NjE4LDM2NzY3LDM2Nzg2LDM2''@;'; put 'put ''OTM5LDM2OTM4LDM2OTQ3LDM2OTMwLDM2OTQ4LDM2OTI0LDM2OTQ5LDM2OTQ0LDM2OTM1LDM2OTQzLDM2OTQyLDM2OTQxLDM2OTQ1LDM2OTI2LDM2OTI5LDM3MTM4LDM3MTQzLDM3MjI4LDM3MjI2LDM3MjI1LDM3MzIxLDM3NDMxLDM3NDYzLDM3NDMyLDM3NDM3LDM3NDQwLDM3NDM4LDM3NDY3''@;'; put 'put ''LDM3NDUxLDM3NDc2LDM3NDU3LDM3NDI4LDM3NDQ5LDM3NDUzLDM3NDQ1LDM3NDMzLDM3NDM5LDM3NDY2LDM4Mjk2LDM4NTUyLDM4NTQ4LDM4NTQ5LDM4NjA1LDM4NjAzLDM4NjAxLDM4NjAyLDM4NjQ3LDM4NjUxLDM4NjQ5LDM4NjQ2LDM4NzQyLDM4NzcyLDM4Nzc0LDM4OTI4LDM4OTI5LDM4''@;'; put 'put ''OTMxLDM4OTIyLDM4OTMwLDM4OTI0LDM5MTY0LDM5MTU2LDM5MTY1LDM5MTY2LDM5MzQ3LDM5MzQ1LDM5MzQ4LDM5NjQ5LDQwMTY5LDQwNTc4LDQwNzE4LDQwNzIzLDQwNzM2LDIwNzExLDIwNzE4LDIwNzA5LDIwNjk0LDIwNzE3LDIwNjk4LDIwNjkzLDIwNjg3LDIwNjg5LDIwNzIxLDIwNjg2''@;'; put 'put ''LDIwNzEzLDIwODM0LDIwOTc5LDIxMTIzLDIxMTIyLDIxMjk3LDIxNDIxLDIyMDE0LDIyMDE2LDIyMDQzLDIyMDM5LDIyMDEzLDIyMDM2LDIyMDIyLDIyMDI1LDIyMDI5LDIyMDMwLDIyMDA3LDIyMDM4LDIyMDQ3LDIyMDI0LDIyMDMyLDIyMDA2LDIyMjk2LDIyMjk0LDIyNjQ1LDIyNjU0LDIy''@;'; put 'put ''NjU5LDIyNjc1LDIyNjY2LDIyNjQ5LDIyNjYxLDIyNjUzLDIyNzgxLDIyODIxLDIyODE4LDIyODIwLDIyODkwLDIyODg5LDIzMjY1LDIzMjcwLDIzMjczLDIzMjU1LDIzMjU0LDIzMjU2LDIzMjY3LDIzNDEzLDIzNTE4LDIzNTI3LDIzNTIxLDIzNTI1LDIzNTI2LDIzNTI4LDIzNTIyLDIzNTI0''@;'; put 'put ''LDIzNTE5LDIzNTY1LDIzNjUwLDIzOTQwLDIzOTQzLDI0MTU1LDI0MTYzLDI0MTQ5LDI0MTUxLDI0MTQ4LDI0Mjc1LDI0Mjc4LDI0MzMwLDI0MzkwLDI0NDMyLDI0NTA1LDI0OTAzLDI0ODk1LDI0OTA3LDI0OTUxLDI0OTMwLDI0OTMxLDI0OTI3LDI0OTIyLDI0OTIwLDI0OTQ5LDI1MTMwLDI1''@;'; put 'put ''NzM1LDI1Njg4LDI1Njg0LDI1NzY0LDI1NzIwLDI1Njk1LDI1NzIyLDI1NjgxLDI1NzAzLDI1NjUyLDI1NzA5LDI1NzIzLDI1OTcwLDI2MDE3LDI2MDcxLDI2MDcwLDI2Mjc0LDI2MjgwLDI2MjY5LDI3MDM2LDI3MDQ4LDI3MDI5LDI3MDczLDI3MDU0LDI3MDkxLDI3MDgzLDI3MDM1LDI3MDYz''@;'; put 'put ''LDI3MDY3LDI3MDUxLDI3MDYwLDI3MDg4LDI3MDg1LDI3MDUzLDI3MDg0LDI3MDQ2LDI3MDc1LDI3MDQzLDI3NDY1LDI3NDY4LDI3Njk5LDI4NDY3LDI4NDM2LDI4NDE0LDI4NDM1LDI4NDA0LDI4NDU3LDI4NDc4LDI4NDQ4LDI4NDYwLDI4NDMxLDI4NDE4LDI4NDUwLDI4NDE1LDI4Mzk5LDI4''@;'; put 'put ''NDIyLDI4NDY1LDI4NDcyLDI4NDY2LDI4NDUxLDI4NDM3LDI4NDU5LDI4NDYzLDI4NTUyLDI4NDU4LDI4Mzk2LDI4NDE3LDI4NDAyLDI4MzY0LDI4NDA3LDI5MDc2LDI5MDgxLDI5MDUzLDI5MDY2LDI5MDYwLDI5MDc0LDI5MjQ2LDI5MzMwLDI5MzM0LDI5NTA4LDI5NTIwLDI5Nzk2LDI5Nzk1''@;'; put 'put ''LDI5ODAyLDI5ODA4LDI5ODA1LDI5OTU2LDMwMDk3LDMwMjQ3LDMwMjIxLDMwMjE5LDMwMjE3LDMwMjI3LDMwNDMzLDMwNDM1LDMwNTk2LDMwNTg5LDMwNTkxLDMwNTYxLDMwOTEzLDMwODc5LDMwODg3LDMwODk5LDMwODg5LDMwODgzLDMxMTE4LDMxMTE5LDMxMTE3LDMxMjc4LDMxMjgxLDMx''@;'; put 'put ''NDAyLDMxNDAxLDMxNDY5LDMxNDcxLDMxNjQ5LDMxNjM3LDMxNjI3LDMxNjA1LDMxNjM5LDMxNjQ1LDMxNjM2LDMxNjMxLDMxNjcyLDMxNjIzLDMxNjIwLDMxOTI5LDMxOTMzLDMxOTM0LDMyMTg3LDMyMTc2LDMyMTU2LDMyMTg5LDMyMTkwLDMyMTYwLDMyMjAyLDMyMTgwLDMyMTc4LDMyMTc3''@;'; put 'put ''LDMyMTg2LDMyMTYyLDMyMTkxLDMyMTgxLDMyMTg0LDMyMTczLDMyMjEwLDMyMTk5LDMyMTcyLDMyNjI0LDMyNzM2LDMyNzM3LDMyNzM1LDMyODYyLDMyODU4LDMyOTAzLDMzMTA0LDMzMTUyLDMzMTY3LDMzMTYwLDMzMTYyLDMzMTUxLDMzMTU0LDMzMjU1LDMzMjc0LDMzMjg3LDMzMzAwLDMz''@;'; put 'put ''MzEwLDMzMzU1LDMzOTkzLDMzOTgzLDMzOTkwLDMzOTg4LDMzOTQ1LDMzOTUwLDMzOTcwLDMzOTQ4LDMzOTk1LDMzOTc2LDMzOTg0LDM0MDAzLDMzOTM2LDMzOTgwLDM0MDAxLDMzOTk0LDM0NjIzLDM0NTg4LDM0NjE5LDM0NTk0LDM0NTk3LDM0NjEyLDM0NTg0LDM0NjQ1LDM0NjE1LDM0NjAx''@;'; put 'put ''LDM1MDU5LDM1MDc0LDM1MDYwLDM1MDY1LDM1MDY0LDM1MDY5LDM1MDQ4LDM1MDk4LDM1MDU1LDM1NDk0LDM1NDY4LDM1NDg2LDM1NDkxLDM1NDY5LDM1NDg5LDM1NDc1LDM1NDkyLDM1NDk4LDM1NDkzLDM1NDk2LDM1NDgwLDM1NDczLDM1NDgyLDM1NDk1LDM1OTQ2LDM1OTgxLDM1OTgwLDM2''@;'; put 'put ''MDUxLDM2MDQ5LDM2MDUwLDM2MjAzLDM2MjQ5LDM2MjQ1LDM2MzQ4LDM2NjI4LDM2NjI2LDM2NjI5LDM2NjI3LDM2NzcxLDM2OTYwLDM2OTUyLDM2OTU2LDM2OTYzLDM2OTUzLDM2OTU4LDM2OTYyLDM2OTU3LDM2OTU1LDM3MTQ1LDM3MTQ0LDM3MTUwLDM3MjM3LDM3MjQwLDM3MjM5LDM3MjM2''@;'; put 'put ''LDM3NDk2LDM3NTA0LDM3NTA5LDM3NTI4LDM3NTI2LDM3NDk5LDM3NTIzLDM3NTMyLDM3NTQ0LDM3NTAwLDM3NTIxLDM4MzA1LDM4MzEyLDM4MzEzLDM4MzA3LDM4MzA5LDM4MzA4LDM4NTUzLDM4NTU2LDM4NTU1LDM4NjA0LDM4NjEwLDM4NjU2LDM4NzgwLDM4Nzg5LDM4OTAyLDM4OTM1LDM4''@;'; put 'put ''OTM2LDM5MDg3LDM5MDg5LDM5MTcxLDM5MTczLDM5MTgwLDM5MTc3LDM5MzYxLDM5NTk5LDM5NjAwLDM5NjU0LDM5NzQ1LDM5NzQ2LDQwMTgwLDQwMTgyLDQwMTc5LDQwNjM2LDQwNzYzLDQwNzc4LDIwNzQwLDIwNzM2LDIwNzMxLDIwNzI1LDIwNzI5LDIwNzM4LDIwNzQ0LDIwNzQ1LDIwNzQx''@;'; put 'put ''LDIwOTU2LDIxMTI3LDIxMTI4LDIxMTI5LDIxMTMzLDIxMTMwLDIxMjMyLDIxNDI2LDIyMDYyLDIyMDc1LDIyMDczLDIyMDY2LDIyMDc5LDIyMDY4LDIyMDU3LDIyMDk5LDIyMDk0LDIyMTAzLDIyMTMyLDIyMDcwLDIyMDYzLDIyMDY0LDIyNjU2LDIyNjg3LDIyNjg2LDIyNzA3LDIyNjg0LDIy''@;'; put 'put ''NzAyLDIyNjk3LDIyNjk0LDIyODkzLDIzMzA1LDIzMjkxLDIzMzA3LDIzMjg1LDIzMzA4LDIzMzA0LDIzNTM0LDIzNTMyLDIzNTI5LDIzNTMxLDIzNjUyLDIzNjUzLDIzOTY1LDIzOTU2LDI0MTYyLDI0MTU5LDI0MTYxLDI0MjkwLDI0MjgyLDI0Mjg3LDI0Mjg1LDI0MjkxLDI0Mjg4LDI0Mzky''@;'; put 'put ''LDI0NDMzLDI0NTAzLDI0NTAxLDI0OTUwLDI0OTM1LDI0OTQyLDI0OTI1LDI0OTE3LDI0OTYyLDI0OTU2LDI0OTQ0LDI0OTM5LDI0OTU4LDI0OTk5LDI0OTc2LDI1MDAzLDI0OTc0LDI1MDA0LDI0OTg2LDI0OTk2LDI0OTgwLDI1MDA2LDI1MTM0LDI1NzA1LDI1NzExLDI1NzIxLDI1NzU4LDI1''@;'; put 'put ''Nzc4LDI1NzM2LDI1NzQ0LDI1Nzc2LDI1NzY1LDI1NzQ3LDI1NzQ5LDI1NzY5LDI1NzQ2LDI1Nzc0LDI1NzczLDI1NzcxLDI1NzU0LDI1NzcyLDI1NzUzLDI1NzYyLDI1Nzc5LDI1OTczLDI1OTc1LDI1OTc2LDI2Mjg2LDI2MjgzLDI2MjkyLDI2Mjg5LDI3MTcxLDI3MTY3LDI3MTEyLDI3MTM3''@;'; put 'put ''LDI3MTY2LDI3MTYxLDI3MTMzLDI3MTY5LDI3MTU1LDI3MTQ2LDI3MTIzLDI3MTM4LDI3MTQxLDI3MTE3LDI3MTUzLDI3NDcyLDI3NDcwLDI3NTU2LDI3NTg5LDI3NTkwLDI4NDc5LDI4NTQwLDI4NTQ4LDI4NDk3LDI4NTE4LDI4NTAwLDI4NTUwLDI4NTI1LDI4NTA3LDI4NTM2LDI4NTI2LDI4''@;'; put 'put ''NTU4LDI4NTM4LDI4NTI4LDI4NTE2LDI4NTY3LDI4NTA0LDI4MzczLDI4NTI3LDI4NTEyLDI4NTExLDI5MDg3LDI5MTAwLDI5MTA1LDI5MDk2LDI5MjcwLDI5MzM5LDI5NTE4LDI5NTI3LDI5ODAxLDI5ODM1LDI5ODI3LDI5ODIyLDI5ODI0LDMwMDc5LDMwMjQwLDMwMjQ5LDMwMjM5LDMwMjQ0''@;'; put 'put ''LDMwMjQ2LDMwMjQxLDMwMjQyLDMwMzYyLDMwMzk0LDMwNDM2LDMwNjA2LDMwNTk5LDMwNjA0LDMwNjA5LDMwNjAzLDMwOTIzLDMwOTE3LDMwOTA2LDMwOTIyLDMwOTEwLDMwOTMzLDMwOTA4LDMwOTI4LDMxMjk1LDMxMjkyLDMxMjk2LDMxMjkzLDMxMjg3LDMxMjkxLDMxNDA3LDMxNDA2LDMx''@;'; put 'put ''NjYxLDMxNjY1LDMxNjg0LDMxNjY4LDMxNjg2LDMxNjg3LDMxNjgxLDMxNjQ4LDMxNjkyLDMxOTQ2LDMyMjI0LDMyMjQ0LDMyMjM5LDMyMjUxLDMyMjE2LDMyMjM2LDMyMjIxLDMyMjMyLDMyMjI3LDMyMjE4LDMyMjIyLDMyMjMzLDMyMTU4LDMyMjE3LDMyMjQyLDMyMjQ5LDMyNjI5LDMyNjMx''@;'; put 'put ''LDMyNjg3LDMyNzQ1LDMyODA2LDMzMTc5LDMzMTgwLDMzMTgxLDMzMTg0LDMzMTc4LDMzMTc2LDM0MDcxLDM0MTA5LDM0MDc0LDM0MDMwLDM0MDkyLDM0MDkzLDM0MDY3LDM0MDY1LDM0MDgzLDM0MDgxLDM0MDY4LDM0MDI4LDM0MDg1LDM0MDQ3LDM0MDU0LDM0NjkwLDM0Njc2LDM0Njc4LDM0''@;'; put 'put ''NjU2LDM0NjYyLDM0NjgwLDM0NjY0LDM0NjQ5LDM0NjQ3LDM0NjM2LDM0NjQzLDM0OTA3LDM0OTA5LDM1MDg4LDM1MDc5LDM1MDkwLDM1MDkxLDM1MDkzLDM1MDgyLDM1NTE2LDM1NTM4LDM1NTI3LDM1NTI0LDM1NDc3LDM1NTMxLDM1NTc2LDM1NTA2LDM1NTI5LDM1NTIyLDM1NTE5LDM1NTA0''@;'; put 'put ''LDM1NTQyLDM1NTMzLDM1NTEwLDM1NTEzLDM1NTQ3LDM1OTE2LDM1OTE4LDM1OTQ4LDM2MDY0LDM2MDYyLDM2MDcwLDM2MDY4LDM2MDc2LDM2MDc3LDM2MDY2LDM2MDY3LDM2MDYwLDM2MDc0LDM2MDY1LDM2MjA1LDM2MjU1LDM2MjU5LDM2Mzk1LDM2MzY4LDM2MzgxLDM2Mzg2LDM2MzY3LDM2''@;'; put 'put ''MzkzLDM2MzgzLDM2Mzg1LDM2MzgyLDM2NTM4LDM2NjM3LDM2NjM1LDM2NjM5LDM2NjQ5LDM2NjQ2LDM2NjUwLDM2NjM2LDM2NjM4LDM2NjQ1LDM2OTY5LDM2OTc0LDM2OTY4LDM2OTczLDM2OTgzLDM3MTY4LDM3MTY1LDM3MTU5LDM3MTY5LDM3MjU1LDM3MjU3LDM3MjU5LDM3MjUxLDM3NTcz''@;'; put 'put ''LDM3NTYzLDM3NTU5LDM3NjEwLDM3NTQ4LDM3NjA0LDM3NTY5LDM3NTU1LDM3NTY0LDM3NTg2LDM3NTc1LDM3NjE2LDM3NTU0LDM4MzE3LDM4MzIxLDM4NjYwLDM4NjYyLDM4NjYzLDM4NjY1LDM4NzUyLDM4Nzk3LDM4Nzk1LDM4Nzk5LDM4OTQ1LDM4OTU1LDM4OTQwLDM5MDkxLDM5MTc4LDM5''@;'; put 'put ''MTg3LDM5MTg2LDM5MTkyLDM5Mzg5LDM5Mzc2LDM5MzkxLDM5Mzg3LDM5Mzc3LDM5MzgxLDM5Mzc4LDM5Mzg1LDM5NjA3LDM5NjYyLDM5NjYzLDM5NzE5LDM5NzQ5LDM5NzQ4LDM5Nzk5LDM5NzkxLDQwMTk4LDQwMjAxLDQwMTk1LDQwNjE3LDQwNjM4LDQwNjU0LDIyNjk2LDQwNzg2LDIwNzU0''@;'; put 'put ''LDIwNzYwLDIwNzU2LDIwNzUyLDIwNzU3LDIwODY0LDIwOTA2LDIwOTU3LDIxMTM3LDIxMTM5LDIxMjM1LDIyMTA1LDIyMTIzLDIyMTM3LDIyMTIxLDIyMTE2LDIyMTM2LDIyMTIyLDIyMTIwLDIyMTE3LDIyMTI5LDIyMTI3LDIyMTI0LDIyMTE0LDIyMTM0LDIyNzIxLDIyNzE4LDIyNzI3LDIy''@;'; put 'put ''NzI1LDIyODk0LDIzMzI1LDIzMzQ4LDIzNDE2LDIzNTM2LDIzNTY2LDI0Mzk0LDI1MDEwLDI0OTc3LDI1MDAxLDI0OTcwLDI1MDM3LDI1MDE0LDI1MDIyLDI1MDM0LDI1MDMyLDI1MTM2LDI1Nzk3LDI1NzkzLDI1ODAzLDI1Nzg3LDI1Nzg4LDI1ODE4LDI1Nzk2LDI1Nzk5LDI1Nzk0LDI1ODA1''@;'; put 'put ''LDI1NzkxLDI1ODEwLDI1ODEyLDI1NzkwLDI1OTcyLDI2MzEwLDI2MzEzLDI2Mjk3LDI2MzA4LDI2MzExLDI2Mjk2LDI3MTk3LDI3MTkyLDI3MTk0LDI3MjI1LDI3MjQzLDI3MjI0LDI3MTkzLDI3MjA0LDI3MjM0LDI3MjMzLDI3MjExLDI3MjA3LDI3MTg5LDI3MjMxLDI3MjA4LDI3NDgxLDI3''@;'; put 'put ''NTExLDI3NjUzLDI4NjEwLDI4NTkzLDI4NTc3LDI4NjExLDI4NTgwLDI4NjA5LDI4NTgzLDI4NTk1LDI4NjA4LDI4NjAxLDI4NTk4LDI4NTgyLDI4NTc2LDI4NTk2LDI5MTE4LDI5MTI5LDI5MTM2LDI5MTM4LDI5MTI4LDI5MTQxLDI5MTEzLDI5MTM0LDI5MTQ1LDI5MTQ4LDI5MTIzLDI5MTI0''@;'; put 'put ''LDI5NTQ0LDI5ODUyLDI5ODU5LDI5ODQ4LDI5ODU1LDI5ODU0LDI5OTIyLDI5OTY0LDI5OTY1LDMwMjYwLDMwMjY0LDMwMjY2LDMwNDM5LDMwNDM3LDMwNjI0LDMwNjIyLDMwNjIzLDMwNjI5LDMwOTUyLDMwOTM4LDMwOTU2LDMwOTUxLDMxMTQyLDMxMzA5LDMxMzEwLDMxMzAyLDMxMzA4LDMx''@;'; put 'put ''MzA3LDMxNDE4LDMxNzA1LDMxNzYxLDMxNjg5LDMxNzE2LDMxNzA3LDMxNzEzLDMxNzIxLDMxNzE4LDMxOTU3LDMxOTU4LDMyMjY2LDMyMjczLDMyMjY0LDMyMjgzLDMyMjkxLDMyMjg2LDMyMjg1LDMyMjY1LDMyMjcyLDMyNjMzLDMyNjkwLDMyNzUyLDMyNzUzLDMyNzUwLDMyODA4LDMzMjAz''@;'; put 'put ''LDMzMTkzLDMzMTkyLDMzMjc1LDMzMjg4LDMzMzY4LDMzMzY5LDM0MTIyLDM0MTM3LDM0MTIwLDM0MTUyLDM0MTUzLDM0MTE1LDM0MTIxLDM0MTU3LDM0MTU0LDM0MTQyLDM0NjkxLDM0NzE5LDM0NzE4LDM0NzIyLDM0NzAxLDM0OTEzLDM1MTE0LDM1MTIyLDM1MTA5LDM1MTE1LDM1MTA1LDM1''@;'; put 'put ''MjQyLDM1MjM4LDM1NTU4LDM1NTc4LDM1NTYzLDM1NTY5LDM1NTg0LDM1NTQ4LDM1NTU5LDM1NTY2LDM1NTgyLDM1NTg1LDM1NTg2LDM1NTc1LDM1NTY1LDM1NTcxLDM1NTc0LDM1NTgwLDM1OTQ3LDM1OTQ5LDM1OTg3LDM2MDg0LDM2NDIwLDM2NDAxLDM2NDA0LDM2NDE4LDM2NDA5LDM2NDA1''@;'; put 'put ''LDM2NjY3LDM2NjU1LDM2NjY0LDM2NjU5LDM2Nzc2LDM2Nzc0LDM2OTgxLDM2OTgwLDM2OTg0LDM2OTc4LDM2OTg4LDM2OTg2LDM3MTcyLDM3MjY2LDM3NjY0LDM3Njg2LDM3NjI0LDM3NjgzLDM3Njc5LDM3NjY2LDM3NjI4LDM3Njc1LDM3NjM2LDM3NjU4LDM3NjQ4LDM3NjcwLDM3NjY1LDM3''@;'; put 'put ''NjUzLDM3Njc4LDM3NjU3LDM4MzMxLDM4NTY3LDM4NTY4LDM4NTcwLDM4NjEzLDM4NjcwLDM4NjczLDM4Njc4LDM4NjY5LDM4Njc1LDM4NjcxLDM4NzQ3LDM4NzQ4LDM4NzU4LDM4ODA4LDM4OTYwLDM4OTY4LDM4OTcxLDM4OTY3LDM4OTU3LDM4OTY5LDM4OTQ4LDM5MTg0LDM5MjA4LDM5MTk4''@;'; put 'put ''LDM5MTk1LDM5MjAxLDM5MTk0LDM5NDA1LDM5Mzk0LDM5NDA5LDM5NjA4LDM5NjEyLDM5Njc1LDM5NjYxLDM5NzIwLDM5ODI1LDQwMjEzLDQwMjI3LDQwMjMwLDQwMjMyLDQwMjEwLDQwMjE5LDQwNjY0LDQwNjYwLDQwODQ1LDQwODYwLDIwNzc4LDIwNzY3LDIwNzY5LDIwNzg2LDIxMjM3LDIy''@;'; put 'put ''MTU4LDIyMTQ0LDIyMTYwLDIyMTQ5LDIyMTUxLDIyMTU5LDIyNzQxLDIyNzM5LDIyNzM3LDIyNzM0LDIzMzQ0LDIzMzM4LDIzMzMyLDIzNDE4LDIzNjA3LDIzNjU2LDIzOTk2LDIzOTk0LDIzOTk3LDIzOTkyLDI0MTcxLDI0Mzk2LDI0NTA5LDI1MDMzLDI1MDI2LDI1MDMxLDI1MDYyLDI1MDM1''@;'; put 'put ''LDI1MTM4LDI1MTQwLDI1ODA2LDI1ODAyLDI1ODE2LDI1ODI0LDI1ODQwLDI1ODMwLDI1ODM2LDI1ODQxLDI1ODI2LDI1ODM3LDI1OTg2LDI1OTg3LDI2MzI5LDI2MzI2LDI3MjY0LDI3Mjg0LDI3MjY4LDI3Mjk4LDI3MjkyLDI3MzU1LDI3Mjk5LDI3MjYyLDI3Mjg3LDI3MjgwLDI3Mjk2LDI3''@;'; put 'put ''NDg0LDI3NTY2LDI3NjEwLDI3NjU2LDI4NjMyLDI4NjU3LDI4NjM5LDI4NjQwLDI4NjM1LDI4NjQ0LDI4NjUxLDI4NjU1LDI4NTQ0LDI4NjUyLDI4NjQxLDI4NjQ5LDI4NjI5LDI4NjU0LDI4NjU2LDI5MTU5LDI5MTUxLDI5MTY2LDI5MTU4LDI5MTU3LDI5MTY1LDI5MTY0LDI5MTcyLDI5MTUy''@;'; put 'put ''LDI5MjM3LDI5MjU0LDI5NTUyLDI5NTU0LDI5ODY1LDI5ODcyLDI5ODYyLDI5ODY0LDMwMjc4LDMwMjc0LDMwMjg0LDMwNDQyLDMwNjQzLDMwNjM0LDMwNjQwLDMwNjM2LDMwNjMxLDMwNjM3LDMwNzAzLDMwOTY3LDMwOTcwLDMwOTY0LDMwOTU5LDMwOTc3LDMxMTQzLDMxMTQ2LDMxMzE5LDMx''@;'; put 'put ''NDIzLDMxNzUxLDMxNzU3LDMxNzQyLDMxNzM1LDMxNzU2LDMxNzEyLDMxOTY4LDMxOTY0LDMxOTY2LDMxOTcwLDMxOTY3LDMxOTYxLDMxOTY1LDMyMzAyLDMyMzE4LDMyMzI2LDMyMzExLDMyMzA2LDMyMzIzLDMyMjk5LDMyMzE3LDMyMzA1LDMyMzI1LDMyMzIxLDMyMzA4LDMyMzEzLDMyMzI4''@;'; put 'put ''LDMyMzA5LDMyMzE5LDMyMzAzLDMyNTgwLDMyNzU1LDMyNzY0LDMyODgxLDMyODgyLDMyODgwLDMyODc5LDMyODgzLDMzMjIyLDMzMjE5LDMzMjEwLDMzMjE4LDMzMjE2LDMzMjE1LDMzMjEzLDMzMjI1LDMzMjE0LDMzMjU2LDMzMjg5LDMzMzkzLDM0MjE4LDM0MTgwLDM0MTc0LDM0MjA0LDM0''@;'; put 'put ''MTkzLDM0MTk2LDM0MjIzLDM0MjAzLDM0MTgzLDM0MjE2LDM0MTg2LDM0NDA3LDM0NzUyLDM0NzY5LDM0NzM5LDM0NzcwLDM0NzU4LDM0NzMxLDM0NzQ3LDM0NzQ2LDM0NzYwLDM0NzYzLDM1MTMxLDM1MTI2LDM1MTQwLDM1MTI4LDM1MTMzLDM1MjQ0LDM1NTk4LDM1NjA3LDM1NjA5LDM1NjEx''@;'; put 'put ''LDM1NTk0LDM1NjE2LDM1NjEzLDM1NTg4LDM1NjAwLDM1OTA1LDM1OTAzLDM1OTU1LDM2MDkwLDM2MDkzLDM2MDkyLDM2MDg4LDM2MDkxLDM2MjY0LDM2NDI1LDM2NDI3LDM2NDI0LDM2NDI2LDM2Njc2LDM2NjcwLDM2Njc0LDM2Njc3LDM2NjcxLDM2OTkxLDM2OTg5LDM2OTk2LDM2OTkzLDM2''@;'; put 'put ''OTk0LDM2OTkyLDM3MTc3LDM3MjgzLDM3Mjc4LDM3Mjc2LDM3NzA5LDM3NzYyLDM3NjcyLDM3NzQ5LDM3NzA2LDM3NzMzLDM3NzA3LDM3NjU2LDM3NzU4LDM3NzQwLDM3NzIzLDM3NzQ0LDM3NzIyLDM3NzE2LDM4MzQ2LDM4MzQ3LDM4MzQ4LDM4MzQ0LDM4MzQyLDM4NTc3LDM4NTg0LDM4NjE0''@;'; put 'put ''LDM4Njg0LDM4Njg2LDM4ODE2LDM4ODY3LDM4OTgyLDM5MDk0LDM5MjIxLDM5NDI1LDM5NDIzLDM5ODU0LDM5ODUxLDM5ODUwLDM5ODUzLDQwMjUxLDQwMjU1LDQwNTg3LDQwNjU1LDQwNjcwLDQwNjY4LDQwNjY5LDQwNjY3LDQwNzY2LDQwNzc5LDIxNDc0LDIyMTY1LDIyMTkwLDIyNzQ1LDIy''@;'; put 'put ''NzQ0LDIzMzUyLDI0NDEzLDI1MDU5LDI1MTM5LDI1ODQ0LDI1ODQyLDI1ODU0LDI1ODYyLDI1ODUwLDI1ODUxLDI1ODQ3LDI2MDM5LDI2MzMyLDI2NDA2LDI3MzE1LDI3MzA4LDI3MzMxLDI3MzIzLDI3MzIwLDI3MzMwLDI3MzEwLDI3MzExLDI3NDg3LDI3NTEyLDI3NTY3LDI4NjgxLDI4Njgz''@;'; put 'put ''LDI4NjcwLDI4Njc4LDI4NjY2LDI4Njg5LDI4Njg3LDI5MTc5LDI5MTgwLDI5MTgyLDI5MTc2LDI5NTU5LDI5NTU3LDI5ODYzLDI5ODg3LDI5OTczLDMwMjk0LDMwMjk2LDMwMjkwLDMwNjUzLDMwNjU1LDMwNjUxLDMwNjUyLDMwOTkwLDMxMTUwLDMxMzI5LDMxMzMwLDMxMzI4LDMxNDI4LDMx''@;'; put 'put ''NDI5LDMxNzg3LDMxNzgzLDMxNzg2LDMxNzc0LDMxNzc5LDMxNzc3LDMxOTc1LDMyMzQwLDMyMzQxLDMyMzUwLDMyMzQ2LDMyMzUzLDMyMzM4LDMyMzQ1LDMyNTg0LDMyNzYxLDMyNzYzLDMyODg3LDMyODg2LDMzMjI5LDMzMjMxLDMzMjkwLDM0MjU1LDM0MjE3LDM0MjUzLDM0MjU2LDM0MjQ5''@;'; put 'put ''LDM0MjI0LDM0MjM0LDM0MjMzLDM0MjE0LDM0Nzk5LDM0Nzk2LDM0ODAyLDM0Nzg0LDM1MjA2LDM1MjUwLDM1MzE2LDM1NjI0LDM1NjQxLDM1NjI4LDM1NjI3LDM1OTIwLDM2MTAxLDM2NDQxLDM2NDUxLDM2NDU0LDM2NDUyLDM2NDQ3LDM2NDM3LDM2NTQ0LDM2NjgxLDM2Njg1LDM2OTk5LDM2''@;'; put 'put ''OTk1LDM3ZTMsMzcyOTEsMzcyOTIsMzczMjgsMzc3ODAsMzc3NzAsMzc3ODIsMzc3OTQsMzc4MTEsMzc4MDYsMzc4MDQsMzc4MDgsMzc3ODQsMzc3ODYsMzc3ODMsMzgzNTYsMzgzNTgsMzgzNTIsMzgzNTcsMzg2MjYsMzg2MjAsMzg2MTcsMzg2MTksMzg2MjIsMzg2OTIsMzg4MTksMzg4MjIs''@;'; put 'put ''Mzg4MjksMzg5MDUsMzg5ODksMzg5OTEsMzg5ODgsMzg5OTAsMzg5OTUsMzkwOTgsMzkyMzAsMzkyMzEsMzkyMjksMzkyMTQsMzkzMzMsMzk0MzgsMzk2MTcsMzk2ODMsMzk2ODYsMzk3NTksMzk3NTgsMzk3NTcsMzk4ODIsMzk4ODEsMzk5MzMsMzk4ODAsMzk4NzIsNDAyNzMsNDAyODUsNDAy''@;'; put 'put ''ODgsNDA2NzIsNDA3MjUsNDA3NDgsMjA3ODcsMjIxODEsMjI3NTAsMjI3NTEsMjI3NTQsMjM1NDEsNDA4NDgsMjQzMDAsMjUwNzQsMjUwNzksMjUwNzgsMjUwNzcsMjU4NTYsMjU4NzEsMjYzMzYsMjYzMzMsMjczNjUsMjczNTcsMjczNTQsMjczNDcsMjg2OTksMjg3MDMsMjg3MTIsMjg2OTgs''@;'; put 'put ''Mjg3MDEsMjg2OTMsMjg2OTYsMjkxOTAsMjkxOTcsMjkyNzIsMjkzNDYsMjk1NjAsMjk1NjIsMjk4ODUsMjk4OTgsMjk5MjMsMzAwODcsMzAwODYsMzAzMDMsMzAzMDUsMzA2NjMsMzEwMDEsMzExNTMsMzEzMzksMzEzMzcsMzE4MDYsMzE4MDcsMzE4MDAsMzE4MDUsMzE3OTksMzE4MDgsMzIz''@;'; put 'put ''NjMsMzIzNjUsMzIzNzcsMzIzNjEsMzIzNjIsMzI2NDUsMzIzNzEsMzI2OTQsMzI2OTcsMzI2OTYsMzMyNDAsMzQyODEsMzQyNjksMzQyODIsMzQyNjEsMzQyNzYsMzQyNzcsMzQyOTUsMzQ4MTEsMzQ4MjEsMzQ4MjksMzQ4MDksMzQ4MTQsMzUxNjgsMzUxNjcsMzUxNTgsMzUxNjYsMzU2NDks''@;'; put 'put ''MzU2NzYsMzU2NzIsMzU2NTcsMzU2NzQsMzU2NjIsMzU2NjMsMzU2NTQsMzU2NzMsMzYxMDQsMzYxMDYsMzY0NzYsMzY0NjYsMzY0ODcsMzY0NzAsMzY0NjAsMzY0NzQsMzY0NjgsMzY2OTIsMzY2ODYsMzY3ODEsMzcwMDIsMzcwMDMsMzcyOTcsMzcyOTQsMzc4NTcsMzc4NDEsMzc4NTUsMzc4''@;'; put 'put ''MjcsMzc4MzIsMzc4NTIsMzc4NTMsMzc4NDYsMzc4NTgsMzc4MzcsMzc4NDgsMzc4NjAsMzc4NDcsMzc4NjQsMzgzNjQsMzg1ODAsMzg2MjcsMzg2OTgsMzg2OTUsMzg3NTMsMzg4NzYsMzg5MDcsMzkwMDYsMzllMywzOTAwMywzOTEwMCwzOTIzNywzOTI0MSwzOTQ0NiwzOTQ0OSwzOTY5Mywz''@;'; put 'put ''OTkxMiwzOTkxMSwzOTg5NCwzOTg5OSw0MDMyOSw0MDI4OSw0MDMwNiw0MDI5OCw0MDMwMCw0MDU5NCw0MDU5OSw0MDU5NSw0MDYyOCwyMTI0MCwyMjE4NCwyMjE5OSwyMjE5OCwyMjE5NiwyMjIwNCwyMjc1NiwyMzM2MCwyMzM2MywyMzQyMSwyMzU0MiwyNDAwOSwyNTA4MCwyNTA4MiwyNTg4''@;'; put 'put ''MCwyNTg3NiwyNTg4MSwyNjM0MiwyNjQwNywyNzM3MiwyODczNCwyODcyMCwyODcyMiwyOTIwMCwyOTU2MywyOTkwMywzMDMwNiwzMDMwOSwzMTAxNCwzMTAxOCwzMTAyMCwzMTAxOSwzMTQzMSwzMTQ3OCwzMTgyMCwzMTgxMSwzMTgyMSwzMTk4MywzMTk4NCwzNjc4MiwzMjM4MSwzMjM4MCwz''@;'; put 'put ''MjM4NiwzMjU4OCwzMjc2OCwzMzI0MiwzMzM4MiwzNDI5OSwzNDI5NywzNDMyMSwzNDI5OCwzNDMxMCwzNDMxNSwzNDMxMSwzNDMxNCwzNDgzNiwzNDgzNywzNTE3MiwzNTI1OCwzNTMyMCwzNTY5NiwzNTY5MiwzNTY4NiwzNTY5NSwzNTY3OSwzNTY5MSwzNjExMSwzNjEwOSwzNjQ4OSwzNjQ4''@;'; put 'put ''MSwzNjQ4NSwzNjQ4MiwzNzMwMCwzNzMyMywzNzkxMiwzNzg5MSwzNzg4NSwzODM2OSwzODcwNCwzOTEwOCwzOTI1MCwzOTI0OSwzOTMzNiwzOTQ2NywzOTQ3MiwzOTQ3OSwzOTQ3NywzOTk1NSwzOTk0OSw0MDU2OSw0MDYyOSw0MDY4MCw0MDc1MSw0MDc5OSw0MDgwMyw0MDgwMSwyMDc5MSwy''@;'; put 'put ''MDc5MiwyMjIwOSwyMjIwOCwyMjIxMCwyMjgwNCwyMzY2MCwyNDAxMywyNTA4NCwyNTA4NiwyNTg4NSwyNTg4NCwyNjAwNSwyNjM0NSwyNzM4NywyNzM5NiwyNzM4NiwyNzU3MCwyODc0OCwyOTIxMSwyOTM1MSwyOTkxMCwyOTkwOCwzMDMxMywzMDY3NSwzMTgyNCwzMjM5OSwzMjM5NiwzMjcw''@;'; put 'put ''MCwzNDMyNywzNDM0OSwzNDMzMCwzNDg1MSwzNDg1MCwzNDg0OSwzNDg0NywzNTE3OCwzNTE4MCwzNTI2MSwzNTcwMCwzNTcwMywzNTcwOSwzNjExNSwzNjQ5MCwzNjQ5MywzNjQ5MSwzNjcwMywzNjc4MywzNzMwNiwzNzkzNCwzNzkzOSwzNzk0MSwzNzk0NiwzNzk0NCwzNzkzOCwzNzkzMSwz''@;'; put 'put ''ODM3MCwzODcxMiwzODcxMywzODcwNiwzODkxMSwzOTAxNSwzOTAxMywzOTI1NSwzOTQ5MywzOTQ5MSwzOTQ4OCwzOTQ4NiwzOTYzMSwzOTc2NCwzOTc2MSwzOTk4MSwzOTk3Myw0MDM2Nyw0MDM3Miw0MDM4Niw0MDM3Niw0MDYwNSw0MDY4Nyw0MDcyOSw0MDc5Niw0MDgwNiw0MDgwNywyMDc5''@;'; put 'put ''NiwyMDc5NSwyMjIxNiwyMjIxOCwyMjIxNywyMzQyMywyNDAyMCwyNDAxOCwyNDM5OCwyNTA4NywyNTg5MiwyNzQwMiwyNzQ4OSwyODc1MywyODc2MCwyOTU2OCwyOTkyNCwzMDA5MCwzMDMxOCwzMDMxNiwzMTE1NSwzMTg0MCwzMTgzOSwzMjg5NCwzMjg5MywzMzI0NywzNTE4NiwzNTE4Mywz''@;'; put 'put ''NTMyNCwzNTcxMiwzNjExOCwzNjExOSwzNjQ5NywzNjQ5OSwzNjcwNSwzNzE5MiwzNzk1NiwzNzk2OSwzNzk3MCwzODcxNywzODcxOCwzODg1MSwzODg0OSwzOTAxOSwzOTI1MywzOTUwOSwzOTUwMSwzOTYzNCwzOTcwNiw0MDAwOSwzOTk4NSwzOTk5OCwzOTk5NSw0MDQwMyw0MDQwNyw0MDc1''@;'; put 'put ''Niw0MDgxMiw0MDgxMCw0MDg1MiwyMjIyMCwyNDAyMiwyNTA4OCwyNTg5MSwyNTg5OSwyNTg5OCwyNjM0OCwyNzQwOCwyOTkxNCwzMTQzNCwzMTg0NCwzMTg0MywzMTg0NSwzMjQwMywzMjQwNiwzMjQwNCwzMzI1MCwzNDM2MCwzNDM2NywzNDg2NSwzNTcyMiwzNzAwOCwzNzAwNywzNzk4Nywz''@;'; put 'put ''Nzk4NCwzNzk4OCwzODc2MCwzOTAyMywzOTI2MCwzOTUxNCwzOTUxNSwzOTUxMSwzOTYzNSwzOTYzNiwzOTYzMyw0MDAyMCw0MDAyMyw0MDAyMiw0MDQyMSw0MDYwNyw0MDY5MiwyMjIyNSwyMjc2MSwyNTkwMCwyODc2NiwzMDMyMSwzMDMyMiwzMDY3OSwzMjU5MiwzMjY0OCwzNDg3MCwzNDg3''@;'; put 'put ''MywzNDkxNCwzNTczMSwzNTczMCwzNTczNCwzMzM5OSwzNjEyMywzNzMxMiwzNzk5NCwzODcyMiwzODcyOCwzODcyNCwzODg1NCwzOTAyNCwzOTUxOSwzOTcxNCwzOTc2OCw0MDAzMSw0MDQ0MSw0MDQ0Miw0MDU3Miw0MDU3Myw0MDcxMSw0MDgyMyw0MDgxOCwyNDMwNywyNzQxNCwyODc3MSwz''@;'; put 'put ''MTg1MiwzMTg1NCwzNDg3NSwzNTI2NCwzNjUxMywzNzMxMywzODAwMiwzOGUzLDM5MDI1LDM5MjYyLDM5NjM4LDM5NzE1LDQwNjUyLDI4NzcyLDMwNjgyLDM1NzM4LDM4MDA3LDM4ODU3LDM5NTIyLDM5NTI1LDMyNDEyLDM1NzQwLDM2NTIyLDM3MzE3LDM4MDEzLDM4MDE0LDM4MDEyLDQwMDU1''@;'; put 'put ''LDQwMDU2LDQwNjk1LDM1OTI0LDM4MDE1LDQwNDc0LDI5MjI0LDM5NTMwLDM5NzI5LDQwNDc1LDQwNDc4LDMxODU4LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0''@;'; put 'put ''MSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDIwMDIyLDIwMDMxLDIwMTAxLDIwMTI4LDIwODY2LDIwODg2LDIwOTA3LDIxMjQxLDIxMzA0LDIxMzUzLDIxNDMwLDIyNzk0LDIzNDI0LDI0MDI3LDEyMDgzLDI0MTkxLDI0MzA4LDI0NDAwLDI0NDE3''@;'; put 'put ''LDI1OTA4LDI2MDgwLDMwMDk4LDMwMzI2LDM2Nzg5LDM4NTgyLDE2OCw3MTAsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsNjUzMzksNjUzNDEsMTAwNDUsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTks''@;'; put 'put ''MTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIz''@;'; put 'put ''ODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQs''@;'; put 'put ''MTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0''@;'; put 'put ''NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIs''@;'; put 'put ''MTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1''@;'; put 'put ''MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsMTA0MCwxMDQxLDEwNDIsMTA0''@;'; put 'put ''MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3''@;'; put 'put ''NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODY3OSw4NjMyLDg2MzMsMTI3''@;'; put 'put ''NTEsMTMxMjc2LDIwMDU4LDEzMTIxMCwyMDk5NCwxNzU1Myw0MDg4MCwyMDg3Miw0MDg4MSwxNjEyODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsMTI0NDMsMTI0NDQsMTE5MDQsMTE5MDgsMTE5MTAs''@;'; put 'put ''MTE5MTEsMTE5MTIsMTE5MTQsMTE5MTYsMTE5MTcsMTE5MjUsMTE5MzIsMTE5MzMsMTE5NDEsMTE5NDMsMTE5NDYsMTE5NDgsMTE5NTAsMTE5NTgsMTE5NjQsMTE5NjYsMTE5NzQsMTE5NzgsMTE5ODAsMTE5ODEsMTE5ODMsMTE5OTAsMTE5OTEsMTE5OTgsMTIwMDMsbnVsbCxudWxsLG51bGws''@;'; put 'put ''NjQzLDU5Miw2MDMsNTk2LDYyOSwzMzksMjQ4LDMzMSw2NTAsNjE4LDIwMDM0LDIwMDYwLDIwOTgxLDIxMjc0LDIxMzc4LDE5OTc1LDE5OTgwLDIwMDM5LDIwMTA5LDIyMjMxLDY0MDEyLDIzNjYyLDI0NDM1LDE5OTgzLDIwODcxLDE5OTgyLDIwMDE0LDIwMTE1LDIwMTYyLDIwMTY5LDIwMTY4''@;'; put 'put ''LDIwODg4LDIxMjQ0LDIxMzU2LDIxNDMzLDIyMzA0LDIyNzg3LDIyODI4LDIzNTY4LDI0MDYzLDI2MDgxLDI3NTcxLDI3NTk2LDI3NjY4LDI5MjQ3LDIwMDE3LDIwMDI4LDIwMjAwLDIwMTg4LDIwMjAxLDIwMTkzLDIwMTg5LDIwMTg2LDIxMDA0LDIxMjc2LDIxMzI0LDIyMzA2LDIyMzA3LDIy''@;'; put 'put ''ODA3LDIyODMxLDIzNDI1LDIzNDI4LDIzNTcwLDIzNjExLDIzNjY4LDIzNjY3LDI0MDY4LDI0MTkyLDI0MTk0LDI0NTIxLDI1MDk3LDI1MTY4LDI3NjY5LDI3NzAyLDI3NzE1LDI3NzExLDI3NzA3LDI5MzU4LDI5MzYwLDI5NTc4LDMxMTYwLDMyOTA2LDM4NDMwLDIwMjM4LDIwMjQ4LDIwMjY4''@;'; put 'put ''LDIwMjEzLDIwMjQ0LDIwMjA5LDIwMjI0LDIwMjE1LDIwMjMyLDIwMjUzLDIwMjI2LDIwMjI5LDIwMjU4LDIwMjQzLDIwMjI4LDIwMjEyLDIwMjQyLDIwOTEzLDIxMDExLDIxMDAxLDIxMDA4LDIxMTU4LDIxMjgyLDIxMjc5LDIxMzI1LDIxMzg2LDIxNTExLDIyMjQxLDIyMjM5LDIyMzE4LDIy''@;'; put 'put ''MzE0LDIyMzI0LDIyODQ0LDIyOTEyLDIyOTA4LDIyOTE3LDIyOTA3LDIyOTEwLDIyOTAzLDIyOTExLDIzMzgyLDIzNTczLDIzNTg5LDIzNjc2LDIzNjc0LDIzNjc1LDIzNjc4LDI0MDMxLDI0MTgxLDI0MTk2LDI0MzIyLDI0MzQ2LDI0NDM2LDI0NTMzLDI0NTMyLDI0NTI3LDI1MTgwLDI1MTgy''@;'; put 'put ''LDI1MTg4LDI1MTg1LDI1MTkwLDI1MTg2LDI1MTc3LDI1MTg0LDI1MTc4LDI1MTg5LDI2MDk1LDI2MDk0LDI2NDMwLDI2NDI1LDI2NDI0LDI2NDI3LDI2NDI2LDI2NDMxLDI2NDI4LDI2NDE5LDI3NjcyLDI3NzE4LDI3NzMwLDI3NzQwLDI3NzI3LDI3NzIyLDI3NzMyLDI3NzIzLDI3NzI0LDI4''@;'; put 'put ''Nzg1LDI5Mjc4LDI5MzY0LDI5MzY1LDI5NTgyLDI5OTk0LDMwMzM1LDMxMzQ5LDMyNTkzLDMzNDAwLDMzNDA0LDMzNDA4LDMzNDA1LDMzNDA3LDM0MzgxLDM1MTk4LDM3MDE3LDM3MDE1LDM3MDE2LDM3MDE5LDM3MDEyLDM4NDM0LDM4NDM2LDM4NDMyLDM4NDM1LDIwMzEwLDIwMjgzLDIwMzIy''@;'; put 'put ''LDIwMjk3LDIwMzA3LDIwMzI0LDIwMjg2LDIwMzI3LDIwMzA2LDIwMzE5LDIwMjg5LDIwMzEyLDIwMjY5LDIwMjc1LDIwMjg3LDIwMzIxLDIwODc5LDIwOTIxLDIxMDIwLDIxMDIyLDIxMDI1LDIxMTY1LDIxMTY2LDIxMjU3LDIxMzQ3LDIxMzYyLDIxMzkwLDIxMzkxLDIxNTUyLDIxNTU5LDIx''@;'; put 'put ''NTQ2LDIxNTg4LDIxNTczLDIxNTI5LDIxNTMyLDIxNTQxLDIxNTI4LDIxNTY1LDIxNTgzLDIxNTY5LDIxNTQ0LDIxNTQwLDIxNTc1LDIyMjU0LDIyMjQ3LDIyMjQ1LDIyMzM3LDIyMzQxLDIyMzQ4LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyNzkwLDIyODQ4LDIyOTUwLDIyOTM2LDIyOTQ0LDIyOTM1''@;'; put 'put ''LDIyOTI2LDIyOTQ2LDIyOTI4LDIyOTI3LDIyOTUxLDIyOTQ1LDIzNDM4LDIzNDQyLDIzNTkyLDIzNTk0LDIzNjkzLDIzNjk1LDIzNjg4LDIzNjkxLDIzNjg5LDIzNjk4LDIzNjkwLDIzNjg2LDIzNjk5LDIzNzAxLDI0MDMyLDI0MDc0LDI0MDc4LDI0MjAzLDI0MjAxLDI0MjA0LDI0MjAwLDI0''@;'; put 'put ''MjA1LDI0MzI1LDI0MzQ5LDI0NDQwLDI0NDM4LDI0NTMwLDI0NTI5LDI0NTI4LDI0NTU3LDI0NTUyLDI0NTU4LDI0NTYzLDI0NTQ1LDI0NTQ4LDI0NTQ3LDI0NTcwLDI0NTU5LDI0NTY3LDI0NTcxLDI0NTc2LDI0NTY0LDI1MTQ2LDI1MjE5LDI1MjI4LDI1MjMwLDI1MjMxLDI1MjM2LDI1MjIz''@;'; put 'put ''LDI1MjAxLDI1MjExLDI1MjEwLDI1MjAwLDI1MjE3LDI1MjI0LDI1MjA3LDI1MjEzLDI1MjAyLDI1MjA0LDI1OTExLDI2MDk2LDI2MTAwLDI2MDk5LDI2MDk4LDI2MTAxLDI2NDM3LDI2NDM5LDI2NDU3LDI2NDUzLDI2NDQ0LDI2NDQwLDI2NDYxLDI2NDQ1LDI2NDU4LDI2NDQzLDI3NjAwLDI3''@;'; put 'put ''NjczLDI3Njc0LDI3NzY4LDI3NzUxLDI3NzU1LDI3NzgwLDI3Nzg3LDI3NzkxLDI3NzYxLDI3NzU5LDI3NzUzLDI3ODAyLDI3NzU3LDI3NzgzLDI3Nzk3LDI3ODA0LDI3NzUwLDI3NzYzLDI3NzQ5LDI3NzcxLDI3NzkwLDI4Nzg4LDI4Nzk0LDI5MjgzLDI5Mzc1LDI5MzczLDI5Mzc5LDI5Mzgy''@;'; put 'put ''LDI5Mzc3LDI5MzcwLDI5MzgxLDI5NTg5LDI5NTkxLDI5NTg3LDI5NTg4LDI5NTg2LDMwMDEwLDMwMDA5LDMwMTAwLDMwMTAxLDMwMzM3LDMxMDM3LDMyODIwLDMyOTE3LDMyOTIxLDMyOTEyLDMyOTE0LDMyOTI0LDMzNDI0LDMzNDIzLDMzNDEzLDMzNDIyLDMzNDI1LDMzNDI3LDMzNDE4LDMz''@;'; put 'put ''NDExLDMzNDEyLDM1OTYwLDM2ODA5LDM2Nzk5LDM3MDIzLDM3MDI1LDM3MDI5LDM3MDIyLDM3MDMxLDM3MDI0LDM4NDQ4LDM4NDQwLDM4NDQ3LDM4NDQ1LDIwMDE5LDIwMzc2LDIwMzQ4LDIwMzU3LDIwMzQ5LDIwMzUyLDIwMzU5LDIwMzQyLDIwMzQwLDIwMzYxLDIwMzU2LDIwMzQzLDIwMzAw''@;'; put 'put ''LDIwMzc1LDIwMzMwLDIwMzc4LDIwMzQ1LDIwMzUzLDIwMzQ0LDIwMzY4LDIwMzgwLDIwMzcyLDIwMzgyLDIwMzcwLDIwMzU0LDIwMzczLDIwMzMxLDIwMzM0LDIwODk0LDIwOTI0LDIwOTI2LDIxMDQ1LDIxMDQyLDIxMDQzLDIxMDYyLDIxMDQxLDIxMTgwLDIxMjU4LDIxMjU5LDIxMzA4LDIx''@;'; put 'put ''Mzk0LDIxMzk2LDIxNjM5LDIxNjMxLDIxNjMzLDIxNjQ5LDIxNjM0LDIxNjQwLDIxNjExLDIxNjI2LDIxNjMwLDIxNjA1LDIxNjEyLDIxNjIwLDIxNjA2LDIxNjQ1LDIxNjE1LDIxNjAxLDIxNjAwLDIxNjU2LDIxNjAzLDIxNjA3LDIxNjA0LDIyMjYzLDIyMjY1LDIyMzgzLDIyMzg2LDIyMzgx''@;'; put 'put ''LDIyMzc5LDIyMzg1LDIyMzg0LDIyMzkwLDIyNDAwLDIyMzg5LDIyMzk1LDIyMzg3LDIyMzg4LDIyMzcwLDIyMzc2LDIyMzk3LDIyNzk2LDIyODUzLDIyOTY1LDIyOTcwLDIyOTkxLDIyOTkwLDIyOTYyLDIyOTg4LDIyOTc3LDIyOTY2LDIyOTcyLDIyOTc5LDIyOTk4LDIyOTYxLDIyOTczLDIy''@;'; put 'put ''OTc2LDIyOTg0LDIyOTY0LDIyOTgzLDIzMzk0LDIzMzk3LDIzNDQzLDIzNDQ1LDIzNjIwLDIzNjIzLDIzNzI2LDIzNzE2LDIzNzEyLDIzNzMzLDIzNzI3LDIzNzIwLDIzNzI0LDIzNzExLDIzNzE1LDIzNzI1LDIzNzE0LDIzNzIyLDIzNzE5LDIzNzA5LDIzNzE3LDIzNzM0LDIzNzI4LDIzNzE4''@;'; put 'put ''LDI0MDg3LDI0MDg0LDI0MDg5LDI0MzYwLDI0MzU0LDI0MzU1LDI0MzU2LDI0NDA0LDI0NDUwLDI0NDQ2LDI0NDQ1LDI0NTQyLDI0NTQ5LDI0NjIxLDI0NjE0LDI0NjAxLDI0NjI2LDI0NTg3LDI0NjI4LDI0NTg2LDI0NTk5LDI0NjI3LDI0NjAyLDI0NjA2LDI0NjIwLDI0NjEwLDI0NTg5LDI0''@;'; put 'put ''NTkyLDI0NjIyLDI0NTk1LDI0NTkzLDI0NTg4LDI0NTg1LDI0NjA0LDI1MTA4LDI1MTQ5LDI1MjYxLDI1MjY4LDI1Mjk3LDI1Mjc4LDI1MjU4LDI1MjcwLDI1MjkwLDI1MjYyLDI1MjY3LDI1MjYzLDI1Mjc1LDI1MjU3LDI1MjY0LDI1MjcyLDI1OTE3LDI2MDI0LDI2MDQzLDI2MTIxLDI2MTA4''@;'; put 'put ''LDI2MTE2LDI2MTMwLDI2MTIwLDI2MTA3LDI2MTE1LDI2MTIzLDI2MTI1LDI2MTE3LDI2MTA5LDI2MTI5LDI2MTI4LDI2MzU4LDI2Mzc4LDI2NTAxLDI2NDc2LDI2NTEwLDI2NTE0LDI2NDg2LDI2NDkxLDI2NTIwLDI2NTAyLDI2NTAwLDI2NDg0LDI2NTA5LDI2NTA4LDI2NDkwLDI2NTI3LDI2''@;'; put 'put ''NTEzLDI2NTIxLDI2NDk5LDI2NDkzLDI2NDk3LDI2NDg4LDI2NDg5LDI2NTE2LDI3NDI5LDI3NTIwLDI3NTE4LDI3NjE0LDI3Njc3LDI3Nzk1LDI3ODg0LDI3ODgzLDI3ODg2LDI3ODY1LDI3ODMwLDI3ODYwLDI3ODIxLDI3ODc5LDI3ODMxLDI3ODU2LDI3ODQyLDI3ODM0LDI3ODQzLDI3ODQ2''@;'; put 'put ''LDI3ODg1LDI3ODkwLDI3ODU4LDI3ODY5LDI3ODI4LDI3Nzg2LDI3ODA1LDI3Nzc2LDI3ODcwLDI3ODQwLDI3OTUyLDI3ODUzLDI3ODQ3LDI3ODI0LDI3ODk3LDI3ODU1LDI3ODgxLDI3ODU3LDI4ODIwLDI4ODI0LDI4ODA1LDI4ODE5LDI4ODA2LDI4ODA0LDI4ODE3LDI4ODIyLDI4ODAyLDI4''@;'; put 'put ''ODI2LDI4ODAzLDI5MjkwLDI5Mzk4LDI5Mzg3LDI5NDAwLDI5Mzg1LDI5NDA0LDI5Mzk0LDI5Mzk2LDI5NDAyLDI5Mzg4LDI5MzkzLDI5NjA0LDI5NjAxLDI5NjEzLDI5NjA2LDI5NjAyLDI5NjAwLDI5NjEyLDI5NTk3LDI5OTE3LDI5OTI4LDMwMDE1LDMwMDE2LDMwMDE0LDMwMDkyLDMwMTA0''@;'; put 'put ''LDMwMzgzLDMwNDUxLDMwNDQ5LDMwNDQ4LDMwNDUzLDMwNzEyLDMwNzE2LDMwNzEzLDMwNzE1LDMwNzE0LDMwNzExLDMxMDQyLDMxMDM5LDMxMTczLDMxMzUyLDMxMzU1LDMxNDgzLDMxODYxLDMxOTk3LDMyODIxLDMyOTExLDMyOTQyLDMyOTMxLDMyOTUyLDMyOTQ5LDMyOTQxLDMzMzEyLDMz''@;'; put 'put ''NDQwLDMzNDcyLDMzNDUxLDMzNDM0LDMzNDMyLDMzNDM1LDMzNDYxLDMzNDQ3LDMzNDU0LDMzNDY4LDMzNDM4LDMzNDY2LDMzNDYwLDMzNDQ4LDMzNDQxLDMzNDQ5LDMzNDc0LDMzNDQ0LDMzNDc1LDMzNDYyLDMzNDQyLDM0NDE2LDM0NDE1LDM0NDEzLDM0NDE0LDM1OTI2LDM2ODE4LDM2ODEx''@;'; put 'put ''LDM2ODE5LDM2ODEzLDM2ODIyLDM2ODIxLDM2ODIzLDM3MDQyLDM3MDQ0LDM3MDM5LDM3MDQzLDM3MDQwLDM4NDU3LDM4NDYxLDM4NDYwLDM4NDU4LDM4NDY3LDIwNDI5LDIwNDIxLDIwNDM1LDIwNDAyLDIwNDI1LDIwNDI3LDIwNDE3LDIwNDM2LDIwNDQ0LDIwNDQxLDIwNDExLDIwNDAzLDIw''@;'; put 'put ''NDQzLDIwNDIzLDIwNDM4LDIwNDEwLDIwNDE2LDIwNDA5LDIwNDYwLDIxMDYwLDIxMDY1LDIxMTg0LDIxMTg2LDIxMzA5LDIxMzcyLDIxMzk5LDIxMzk4LDIxNDAxLDIxNDAwLDIxNjkwLDIxNjY1LDIxNjc3LDIxNjY5LDIxNzExLDIxNjk5LDMzNTQ5LDIxNjg3LDIxNjc4LDIxNzE4LDIxNjg2''@;'; put 'put ''LDIxNzAxLDIxNzAyLDIxNjY0LDIxNjE2LDIxNjkyLDIxNjY2LDIxNjk0LDIxNjE4LDIxNzI2LDIxNjgwLDIyNDUzLDIyNDMwLDIyNDMxLDIyNDM2LDIyNDEyLDIyNDIzLDIyNDI5LDIyNDI3LDIyNDIwLDIyNDI0LDIyNDE1LDIyNDI1LDIyNDM3LDIyNDI2LDIyNDIxLDIyNzcyLDIyNzk3LDIy''@;'; put 'put ''ODY3LDIzMDA5LDIzMDA2LDIzMDIyLDIzMDQwLDIzMDI1LDIzMDA1LDIzMDM0LDIzMDM3LDIzMDM2LDIzMDMwLDIzMDEyLDIzMDI2LDIzMDMxLDIzMDAzLDIzMDE3LDIzMDI3LDIzMDI5LDIzMDA4LDIzMDM4LDIzMDI4LDIzMDIxLDIzNDY0LDIzNjI4LDIzNzYwLDIzNzY4LDIzNzU2LDIzNzY3''@;'; put 'put ''LDIzNzU1LDIzNzcxLDIzNzc0LDIzNzcwLDIzNzUzLDIzNzUxLDIzNzU0LDIzNzY2LDIzNzYzLDIzNzY0LDIzNzU5LDIzNzUyLDIzNzUwLDIzNzU4LDIzNzc1LDIzODAwLDI0MDU3LDI0MDk3LDI0MDk4LDI0MDk5LDI0MDk2LDI0MTAwLDI0MjQwLDI0MjI4LDI0MjI2LDI0MjE5LDI0MjI3LDI0''@;'; put 'put ''MjI5LDI0MzI3LDI0MzY2LDI0NDA2LDI0NDU0LDI0NjMxLDI0NjMzLDI0NjYwLDI0NjkwLDI0NjcwLDI0NjQ1LDI0NjU5LDI0NjQ3LDI0NjQ5LDI0NjY3LDI0NjUyLDI0NjQwLDI0NjQyLDI0NjcxLDI0NjEyLDI0NjQ0LDI0NjY0LDI0Njc4LDI0Njg2LDI1MTU0LDI1MTU1LDI1Mjk1LDI1MzU3''@;'; put 'put ''LDI1MzU1LDI1MzMzLDI1MzU4LDI1MzQ3LDI1MzIzLDI1MzM3LDI1MzU5LDI1MzU2LDI1MzM2LDI1MzM0LDI1MzQ0LDI1MzYzLDI1MzY0LDI1MzM4LDI1MzY1LDI1MzM5LDI1MzI4LDI1OTIxLDI1OTIzLDI2MDI2LDI2MDQ3LDI2MTY2LDI2MTQ1LDI2MTYyLDI2MTY1LDI2MTQwLDI2MTUwLDI2''@;'; put 'put ''MTQ2LDI2MTYzLDI2MTU1LDI2MTcwLDI2MTQxLDI2MTY0LDI2MTY5LDI2MTU4LDI2MzgzLDI2Mzg0LDI2NTYxLDI2NjEwLDI2NTY4LDI2NTU0LDI2NTg4LDI2NTU1LDI2NjE2LDI2NTg0LDI2NTYwLDI2NTUxLDI2NTY1LDI2NjAzLDI2NTk2LDI2NTkxLDI2NTQ5LDI2NTczLDI2NTQ3LDI2NjE1''@;'; put 'put ''LDI2NjE0LDI2NjA2LDI2NTk1LDI2NTYyLDI2NTUzLDI2NTc0LDI2NTk5LDI2NjA4LDI2NTQ2LDI2NjIwLDI2NTY2LDI2NjA1LDI2NTcyLDI2NTQyLDI2NTk4LDI2NTg3LDI2NjE4LDI2NTY5LDI2NTcwLDI2NTYzLDI2NjAyLDI2NTcxLDI3NDMyLDI3NTIyLDI3NTI0LDI3NTc0LDI3NjA2LDI3''@;'; put 'put ''NjA4LDI3NjE2LDI3NjgwLDI3NjgxLDI3OTQ0LDI3OTU2LDI3OTQ5LDI3OTM1LDI3OTY0LDI3OTY3LDI3OTIyLDI3OTE0LDI3ODY2LDI3OTU1LDI3OTA4LDI3OTI5LDI3OTYyLDI3OTMwLDI3OTIxLDI3OTA0LDI3OTMzLDI3OTcwLDI3OTA1LDI3OTI4LDI3OTU5LDI3OTA3LDI3OTE5LDI3OTY4''@;'; put 'put ''LDI3OTExLDI3OTM2LDI3OTQ4LDI3OTEyLDI3OTM4LDI3OTEzLDI3OTIwLDI4ODU1LDI4ODMxLDI4ODYyLDI4ODQ5LDI4ODQ4LDI4ODMzLDI4ODUyLDI4ODUzLDI4ODQxLDI5MjQ5LDI5MjU3LDI5MjU4LDI5MjkyLDI5Mjk2LDI5Mjk5LDI5Mjk0LDI5Mzg2LDI5NDEyLDI5NDE2LDI5NDE5LDI5''@;'; put 'put ''NDA3LDI5NDE4LDI5NDE0LDI5NDExLDI5NTczLDI5NjQ0LDI5NjM0LDI5NjQwLDI5NjM3LDI5NjI1LDI5NjIyLDI5NjIxLDI5NjIwLDI5Njc1LDI5NjMxLDI5NjM5LDI5NjMwLDI5NjM1LDI5NjM4LDI5NjI0LDI5NjQzLDI5OTMyLDI5OTM0LDI5OTk4LDMwMDIzLDMwMDI0LDMwMTE5LDMwMTIy''@;'; put 'put ''LDMwMzI5LDMwNDA0LDMwNDcyLDMwNDY3LDMwNDY4LDMwNDY5LDMwNDc0LDMwNDU1LDMwNDU5LDMwNDU4LDMwNjk1LDMwNjk2LDMwNzI2LDMwNzM3LDMwNzM4LDMwNzI1LDMwNzM2LDMwNzM1LDMwNzM0LDMwNzI5LDMwNzIzLDMwNzM5LDMxMDUwLDMxMDUyLDMxMDUxLDMxMDQ1LDMxMDQ0LDMx''@;'; put 'put ''MTg5LDMxMTgxLDMxMTgzLDMxMTkwLDMxMTgyLDMxMzYwLDMxMzU4LDMxNDQxLDMxNDg4LDMxNDg5LDMxODY2LDMxODY0LDMxODY1LDMxODcxLDMxODcyLDMxODczLDMyMDAzLDMyMDA4LDMyMDAxLDMyNjAwLDMyNjU3LDMyNjUzLDMyNzAyLDMyNzc1LDMyNzgyLDMyNzgzLDMyNzg4LDMyODIz''@;'; put 'put ''LDMyOTg0LDMyOTY3LDMyOTkyLDMyOTc3LDMyOTY4LDMyOTYyLDMyOTc2LDMyOTY1LDMyOTk1LDMyOTg1LDMyOTg4LDMyOTcwLDMyOTgxLDMyOTY5LDMyOTc1LDMyOTgzLDMyOTk4LDMyOTczLDMzMjc5LDMzMzEzLDMzNDI4LDMzNDk3LDMzNTM0LDMzNTI5LDMzNTQzLDMzNTEyLDMzNTM2LDMz''@;'; put 'put ''NDkzLDMzNTk0LDMzNTE1LDMzNDk0LDMzNTI0LDMzNTE2LDMzNTA1LDMzNTIyLDMzNTI1LDMzNTQ4LDMzNTMxLDMzNTI2LDMzNTIwLDMzNTE0LDMzNTA4LDMzNTA0LDMzNTMwLDMzNTIzLDMzNTE3LDM0NDIzLDM0NDIwLDM0NDI4LDM0NDE5LDM0ODgxLDM0ODk0LDM0OTE5LDM0OTIyLDM0OTIx''@;'; put 'put ''LDM1MjgzLDM1MzMyLDM1MzM1LDM2MjEwLDM2ODM1LDM2ODMzLDM2ODQ2LDM2ODMyLDM3MTA1LDM3MDUzLDM3MDU1LDM3MDc3LDM3MDYxLDM3MDU0LDM3MDYzLDM3MDY3LDM3MDY0LDM3MzMyLDM3MzMxLDM4NDg0LDM4NDc5LDM4NDgxLDM4NDgzLDM4NDc0LDM4NDc4LDIwNTEwLDIwNDg1LDIw''@;'; put 'put ''NDg3LDIwNDk5LDIwNTE0LDIwNTI4LDIwNTA3LDIwNDY5LDIwNDY4LDIwNTMxLDIwNTM1LDIwNTI0LDIwNDcwLDIwNDcxLDIwNTAzLDIwNTA4LDIwNTEyLDIwNTE5LDIwNTMzLDIwNTI3LDIwNTI5LDIwNDk0LDIwODI2LDIwODg0LDIwODgzLDIwOTM4LDIwOTMyLDIwOTMzLDIwOTM2LDIwOTQy''@;'; put 'put ''LDIxMDg5LDIxMDgyLDIxMDc0LDIxMDg2LDIxMDg3LDIxMDc3LDIxMDkwLDIxMTk3LDIxMjYyLDIxNDA2LDIxNzk4LDIxNzMwLDIxNzgzLDIxNzc4LDIxNzM1LDIxNzQ3LDIxNzMyLDIxNzg2LDIxNzU5LDIxNzY0LDIxNzY4LDIxNzM5LDIxNzc3LDIxNzY1LDIxNzQ1LDIxNzcwLDIxNzU1LDIx''@;'; put 'put ''NzUxLDIxNzUyLDIxNzI4LDIxNzc0LDIxNzYzLDIxNzcxLDIyMjczLDIyMjc0LDIyNDc2LDIyNTc4LDIyNDg1LDIyNDgyLDIyNDU4LDIyNDcwLDIyNDYxLDIyNDYwLDIyNDU2LDIyNDU0LDIyNDYzLDIyNDcxLDIyNDgwLDIyNDU3LDIyNDY1LDIyNzk4LDIyODU4LDIzMDY1LDIzMDYyLDIzMDg1''@;'; put 'put ''LDIzMDg2LDIzMDYxLDIzMDU1LDIzMDYzLDIzMDUwLDIzMDcwLDIzMDkxLDIzNDA0LDIzNDYzLDIzNDY5LDIzNDY4LDIzNTU1LDIzNjM4LDIzNjM2LDIzNzg4LDIzODA3LDIzNzkwLDIzNzkzLDIzNzk5LDIzODA4LDIzODAxLDI0MTA1LDI0MTA0LDI0MjMyLDI0MjM4LDI0MjM0LDI0MjM2LDI0''@;'; put 'put ''MzcxLDI0MzY4LDI0NDIzLDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NzM4LDI0NzEyLDI0NzA0LDI0NzIyLDI0NzA1LDI0NzMzLDI0NzA3LDI0NzI1LDI0NzMxLDI0NzI3LDI0NzExLDI0NzMyLDI0NzE4LDI1MTEzLDI1MTU4LDI1MzMwLDI1MzYwLDI1NDMwLDI1Mzg4LDI1NDEyLDI1NDEz''@;'; put 'put ''LDI1Mzk4LDI1NDExLDI1NTcyLDI1NDAxLDI1NDE5LDI1NDE4LDI1NDA0LDI1Mzg1LDI1NDA5LDI1Mzk2LDI1NDMyLDI1NDI4LDI1NDMzLDI1Mzg5LDI1NDE1LDI1Mzk1LDI1NDM0LDI1NDI1LDI1NDAwLDI1NDMxLDI1NDA4LDI1NDE2LDI1OTMwLDI1OTI2LDI2MDU0LDI2MDUxLDI2MDUyLDI2''@;'; put 'put ''MDUwLDI2MTg2LDI2MjA3LDI2MTgzLDI2MTkzLDI2Mzg2LDI2Mzg3LDI2NjU1LDI2NjUwLDI2Njk3LDI2Njc0LDI2Njc1LDI2NjgzLDI2Njk5LDI2NzAzLDI2NjQ2LDI2NjczLDI2NjUyLDI2Njc3LDI2NjY3LDI2NjY5LDI2NjcxLDI2NzAyLDI2NjkyLDI2Njc2LDI2NjUzLDI2NjQyLDI2NjQ0''@;'; put 'put ''LDI2NjYyLDI2NjY0LDI2NjcwLDI2NzAxLDI2NjgyLDI2NjYxLDI2NjU2LDI3NDM2LDI3NDM5LDI3NDM3LDI3NDQxLDI3NDQ0LDI3NTAxLDMyODk4LDI3NTI4LDI3NjIyLDI3NjIwLDI3NjI0LDI3NjE5LDI3NjE4LDI3NjIzLDI3Njg1LDI4MDI2LDI4MDAzLDI4MDA0LDI4MDIyLDI3OTE3LDI4''@;'; put 'put ''MDAxLDI4MDUwLDI3OTkyLDI4MDAyLDI4MDEzLDI4MDE1LDI4MDQ5LDI4MDQ1LDI4MTQzLDI4MDMxLDI4MDM4LDI3OTk4LDI4MDA3LDI4ZTMsMjgwNTUsMjgwMTYsMjgwMjgsMjc5OTksMjgwMzQsMjgwNTYsMjc5NTEsMjgwMDgsMjgwNDMsMjgwMzAsMjgwMzIsMjgwMzYsMjc5MjYsMjgwMzUs''@;'; put 'put ''MjgwMjcsMjgwMjksMjgwMjEsMjgwNDgsMjg4OTIsMjg4ODMsMjg4ODEsMjg4OTMsMjg4NzUsMzI1NjksMjg4OTgsMjg4ODcsMjg4ODIsMjg4OTQsMjg4OTYsMjg4ODQsMjg4NzcsMjg4NjksMjg4NzAsMjg4NzEsMjg4OTAsMjg4NzgsMjg4OTcsMjkyNTAsMjkzMDQsMjkzMDMsMjkzMDIsMjk0''@;'; put 'put ''NDAsMjk0MzQsMjk0MjgsMjk0MzgsMjk0MzAsMjk0MjcsMjk0MzUsMjk0NDEsMjk2NTEsMjk2NTcsMjk2NjksMjk2NTQsMjk2MjgsMjk2NzEsMjk2NjcsMjk2NzMsMjk2NjAsMjk2NTAsMjk2NTksMjk2NTIsMjk2NjEsMjk2NTgsMjk2NTUsMjk2NTYsMjk2NzIsMjk5MTgsMjk5MTksMjk5NDAs''@;'; put 'put ''Mjk5NDEsMjk5ODUsMzAwNDMsMzAwNDcsMzAxMjgsMzAxNDUsMzAxMzksMzAxNDgsMzAxNDQsMzAxNDMsMzAxMzQsMzAxMzgsMzAzNDYsMzA0MDksMzA0OTMsMzA0OTEsMzA0ODAsMzA0ODMsMzA0ODIsMzA0OTksMzA0ODEsMzA0ODUsMzA0ODksMzA0OTAsMzA0OTgsMzA1MDMsMzA3NTUsMzA3''@;'; put 'put ''NjQsMzA3NTQsMzA3NzMsMzA3NjcsMzA3NjAsMzA3NjYsMzA3NjMsMzA3NTMsMzA3NjEsMzA3NzEsMzA3NjIsMzA3NjksMzEwNjAsMzEwNjcsMzEwNTUsMzEwNjgsMzEwNTksMzEwNTgsMzEwNTcsMzEyMTEsMzEyMTIsMzEyMDAsMzEyMTQsMzEyMTMsMzEyMTAsMzExOTYsMzExOTgsMzExOTcs''@;'; put 'put ''MzEzNjYsMzEzNjksMzEzNjUsMzEzNzEsMzEzNzIsMzEzNzAsMzEzNjcsMzE0NDgsMzE1MDQsMzE0OTIsMzE1MDcsMzE0OTMsMzE1MDMsMzE0OTYsMzE0OTgsMzE1MDIsMzE0OTcsMzE1MDYsMzE4NzYsMzE4ODksMzE4ODIsMzE4ODQsMzE4ODAsMzE4ODUsMzE4NzcsMzIwMzAsMzIwMjksMzIw''@;'; put 'put ''MTcsMzIwMTQsMzIwMjQsMzIwMjIsMzIwMTksMzIwMzEsMzIwMTgsMzIwMTUsMzIwMTIsMzI2MDQsMzI2MDksMzI2MDYsMzI2MDgsMzI2MDUsMzI2MDMsMzI2NjIsMzI2NTgsMzI3MDcsMzI3MDYsMzI3MDQsMzI3OTAsMzI4MzAsMzI4MjUsMzMwMTgsMzMwMTAsMzMwMTcsMzMwMTMsMzMwMjUs''@;'; put 'put ''MzMwMTksMzMwMjQsMzMyODEsMzMzMjcsMzMzMTcsMzM1ODcsMzM1ODEsMzM2MDQsMzM1NjEsMzM2MTcsMzM1NzMsMzM2MjIsMzM1OTksMzM2MDEsMzM1NzQsMzM1NjQsMzM1NzAsMzM2MDIsMzM2MTQsMzM1NjMsMzM1NzgsMzM1NDQsMzM1OTYsMzM2MTMsMzM1NTgsMzM1NzIsMzM1NjgsMzM1''@;'; put 'put ''OTEsMzM1ODMsMzM1NzcsMzM2MDcsMzM2MDUsMzM2MTIsMzM2MTksMzM1NjYsMzM1ODAsMzM2MTEsMzM1NzUsMzM2MDgsMzQzODcsMzQzODYsMzQ0NjYsMzQ0NzIsMzQ0NTQsMzQ0NDUsMzQ0NDksMzQ0NjIsMzQ0MzksMzQ0NTUsMzQ0MzgsMzQ0NDMsMzQ0NTgsMzQ0MzcsMzQ0NjksMzQ0NTcs''@;'; put 'put ''MzQ0NjUsMzQ0NzEsMzQ0NTMsMzQ0NTYsMzQ0NDYsMzQ0NjEsMzQ0NDgsMzQ0NTIsMzQ4ODMsMzQ4ODQsMzQ5MjUsMzQ5MzMsMzQ5MzQsMzQ5MzAsMzQ5NDQsMzQ5MjksMzQ5NDMsMzQ5MjcsMzQ5NDcsMzQ5NDIsMzQ5MzIsMzQ5NDAsMzUzNDYsMzU5MTEsMzU5MjcsMzU5NjMsMzYwMDQsMzYw''@;'; put 'put ''MDMsMzYyMTQsMzYyMTYsMzYyNzcsMzYyNzksMzYyNzgsMzY1NjEsMzY1NjMsMzY4NjIsMzY4NTMsMzY4NjYsMzY4NjMsMzY4NTksMzY4NjgsMzY4NjAsMzY4NTQsMzcwNzgsMzcwODgsMzcwODEsMzcwODIsMzcwOTEsMzcwODcsMzcwOTMsMzcwODAsMzcwODMsMzcwNzksMzcwODQsMzcwOTIs''@;'; put 'put ''MzcyMDAsMzcxOTgsMzcxOTksMzczMzMsMzczNDYsMzczMzgsMzg0OTIsMzg0OTUsMzg1ODgsMzkxMzksMzk2NDcsMzk3MjcsMjAwOTUsMjA1OTIsMjA1ODYsMjA1NzcsMjA1NzQsMjA1NzYsMjA1NjMsMjA1NTUsMjA1NzMsMjA1OTQsMjA1NTIsMjA1NTcsMjA1NDUsMjA1NzEsMjA1NTQsMjA1''@;'; put 'put ''NzgsMjA1MDEsMjA1NDksMjA1NzUsMjA1ODUsMjA1ODcsMjA1NzksMjA1ODAsMjA1NTAsMjA1NDQsMjA1OTAsMjA1OTUsMjA1NjcsMjA1NjEsMjA5NDQsMjEwOTksMjExMDEsMjExMDAsMjExMDIsMjEyMDYsMjEyMDMsMjEyOTMsMjE0MDQsMjE4NzcsMjE4NzgsMjE4MjAsMjE4MzcsMjE4NDAs''@;'; put 'put ''MjE4MTIsMjE4MDIsMjE4NDEsMjE4NTgsMjE4MTQsMjE4MTMsMjE4MDgsMjE4NDIsMjE4MjksMjE3NzIsMjE4MTAsMjE4NjEsMjE4MzgsMjE4MTcsMjE4MzIsMjE4MDUsMjE4MTksMjE4MjQsMjE4MzUsMjIyODIsMjIyNzksMjI1MjMsMjI1NDgsMjI0OTgsMjI1MTgsMjI0OTIsMjI1MTYsMjI1''@;'; put 'put ''MjgsMjI1MDksMjI1MjUsMjI1MzYsMjI1MjAsMjI1MzksMjI1MTUsMjI0NzksMjI1MzUsMjI1MTAsMjI0OTksMjI1MTQsMjI1MDEsMjI1MDgsMjI0OTcsMjI1NDIsMjI1MjQsMjI1NDQsMjI1MDMsMjI1MjksMjI1NDAsMjI1MTMsMjI1MDUsMjI1MTIsMjI1NDEsMjI1MzIsMjI4NzYsMjMxMzYs''@;'; put 'put ''MjMxMjgsMjMxMjUsMjMxNDMsMjMxMzQsMjMwOTYsMjMwOTMsMjMxNDksMjMxMjAsMjMxMzUsMjMxNDEsMjMxNDgsMjMxMjMsMjMxNDAsMjMxMjcsMjMxMDcsMjMxMzMsMjMxMjIsMjMxMDgsMjMxMzEsMjMxMTIsMjMxODIsMjMxMDIsMjMxMTcsMjMwOTcsMjMxMTYsMjMxNTIsMjMxNDUsMjMx''@;'; put 'put ''MTEsMjMxMjEsMjMxMjYsMjMxMDYsMjMxMzIsMjM0MTAsMjM0MDYsMjM0ODksMjM0ODgsMjM2NDEsMjM4MzgsMjM4MTksMjM4MzcsMjM4MzQsMjM4NDAsMjM4MjAsMjM4NDgsMjM4MjEsMjM4NDYsMjM4NDUsMjM4MjMsMjM4NTYsMjM4MjYsMjM4NDMsMjM4MzksMjM4NTQsMjQxMjYsMjQxMTYs''@;'; put 'put ''MjQyNDEsMjQyNDQsMjQyNDksMjQyNDIsMjQyNDMsMjQzNzQsMjQzNzYsMjQ0NzUsMjQ0NzAsMjQ0NzksMjQ3MTQsMjQ3MjAsMjQ3MTAsMjQ3NjYsMjQ3NTIsMjQ3NjIsMjQ3ODcsMjQ3ODgsMjQ3ODMsMjQ4MDQsMjQ3OTMsMjQ3OTcsMjQ3NzYsMjQ3NTMsMjQ3OTUsMjQ3NTksMjQ3NzgsMjQ3''@;'; put 'put ''NjcsMjQ3NzEsMjQ3ODEsMjQ3NjgsMjUzOTQsMjU0NDUsMjU0ODIsMjU0NzQsMjU0NjksMjU1MzMsMjU1MDIsMjU1MTcsMjU1MDEsMjU0OTUsMjU1MTUsMjU0ODYsMjU0NTUsMjU0NzksMjU0ODgsMjU0NTQsMjU1MTksMjU0NjEsMjU1MDAsMjU0NTMsMjU1MTgsMjU0NjgsMjU1MDgsMjU0MDMs''@;'; put 'put ''MjU1MDMsMjU0NjQsMjU0NzcsMjU0NzMsMjU0ODksMjU0ODUsMjU0NTYsMjU5MzksMjYwNjEsMjYyMTMsMjYyMDksMjYyMDMsMjYyMDEsMjYyMDQsMjYyMTAsMjYzOTIsMjY3NDUsMjY3NTksMjY3NjgsMjY3ODAsMjY3MzMsMjY3MzQsMjY3OTgsMjY3OTUsMjY5NjYsMjY3MzUsMjY3ODcsMjY3''@;'; put 'put ''OTYsMjY3OTMsMjY3NDEsMjY3NDAsMjY4MDIsMjY3NjcsMjY3NDMsMjY3NzAsMjY3NDgsMjY3MzEsMjY3MzgsMjY3OTQsMjY3NTIsMjY3MzcsMjY3NTAsMjY3NzksMjY3NzQsMjY3NjMsMjY3ODQsMjY3NjEsMjY3ODgsMjY3NDQsMjY3NDcsMjY3NjksMjY3NjQsMjY3NjIsMjY3NDksMjc0NDYs''@;'; put 'put ''Mjc0NDMsMjc0NDcsMjc0NDgsMjc1MzcsMjc1MzUsMjc1MzMsMjc1MzQsMjc1MzIsMjc2OTAsMjgwOTYsMjgwNzUsMjgwODQsMjgwODMsMjgyNzYsMjgwNzYsMjgxMzcsMjgxMzAsMjgwODcsMjgxNTAsMjgxMTYsMjgxNjAsMjgxMDQsMjgxMjgsMjgxMjcsMjgxMTgsMjgwOTQsMjgxMzMsMjgx''@;'; put 'put ''MjQsMjgxMjUsMjgxMjMsMjgxNDgsMjgxMDYsMjgwOTMsMjgxNDEsMjgxNDQsMjgwOTAsMjgxMTcsMjgwOTgsMjgxMTEsMjgxMDUsMjgxMTIsMjgxNDYsMjgxMTUsMjgxNTcsMjgxMTksMjgxMDksMjgxMzEsMjgwOTEsMjg5MjIsMjg5NDEsMjg5MTksMjg5NTEsMjg5MTYsMjg5NDAsMjg5MTIs''@;'; put 'put ''Mjg5MzIsMjg5MTUsMjg5NDQsMjg5MjQsMjg5MjcsMjg5MzQsMjg5NDcsMjg5MjgsMjg5MjAsMjg5MTgsMjg5MzksMjg5MzAsMjg5NDIsMjkzMTAsMjkzMDcsMjkzMDgsMjkzMTEsMjk0NjksMjk0NjMsMjk0NDcsMjk0NTcsMjk0NjQsMjk0NTAsMjk0NDgsMjk0MzksMjk0NTUsMjk0NzAsMjk1''@;'; put 'put ''NzYsMjk2ODYsMjk2ODgsMjk2ODUsMjk3MDAsMjk2OTcsMjk2OTMsMjk3MDMsMjk2OTYsMjk2OTAsMjk2OTIsMjk2OTUsMjk3MDgsMjk3MDcsMjk2ODQsMjk3MDQsMzAwNTIsMzAwNTEsMzAxNTgsMzAxNjIsMzAxNTksMzAxNTUsMzAxNTYsMzAxNjEsMzAxNjAsMzAzNTEsMzAzNDUsMzA0MTks''@;'; put 'put ''MzA1MjEsMzA1MTEsMzA1MDksMzA1MTMsMzA1MTQsMzA1MTYsMzA1MTUsMzA1MjUsMzA1MDEsMzA1MjMsMzA1MTcsMzA3OTIsMzA4MDIsMzA3OTMsMzA3OTcsMzA3OTQsMzA3OTYsMzA3NTgsMzA3ODksMzA4MDAsMzEwNzYsMzEwNzksMzEwODEsMzEwODIsMzEwNzUsMzEwODMsMzEwNzMsMzEx''@;'; put 'put ''NjMsMzEyMjYsMzEyMjQsMzEyMjIsMzEyMjMsMzEzNzUsMzEzODAsMzEzNzYsMzE1NDEsMzE1NTksMzE1NDAsMzE1MjUsMzE1MzYsMzE1MjIsMzE1MjQsMzE1MzksMzE1MTIsMzE1MzAsMzE1MTcsMzE1MzcsMzE1MzEsMzE1MzMsMzE1MzUsMzE1MzgsMzE1NDQsMzE1MTQsMzE1MjMsMzE4OTIs''@;'; put 'put ''MzE4OTYsMzE4OTQsMzE5MDcsMzIwNTMsMzIwNjEsMzIwNTYsMzIwNTQsMzIwNTgsMzIwNjksMzIwNDQsMzIwNDEsMzIwNjUsMzIwNzEsMzIwNjIsMzIwNjMsMzIwNzQsMzIwNTksMzIwNDAsMzI2MTEsMzI2NjEsMzI2NjgsMzI2NjksMzI2NjcsMzI3MTQsMzI3MTUsMzI3MTcsMzI3MjAsMzI3''@;'; put 'put ''MjEsMzI3MTEsMzI3MTksMzI3MTMsMzI3OTksMzI3OTgsMzI3OTUsMzI4MzksMzI4MzUsMzI4NDAsMzMwNDgsMzMwNjEsMzMwNDksMzMwNTEsMzMwNjksMzMwNTUsMzMwNjgsMzMwNTQsMzMwNTcsMzMwNDUsMzMwNjMsMzMwNTMsMzMwNTgsMzMyOTcsMzMzMzYsMzMzMzEsMzMzMzgsMzMzMzIs''@;'; put 'put ''MzMzMzAsMzMzOTYsMzM2ODAsMzM2OTksMzM3MDQsMzM2NzcsMzM2NTgsMzM2NTEsMzM3MDAsMzM2NTIsMzM2NzksMzM2NjUsMzM2ODUsMzM2ODksMzM2NTMsMzM2ODQsMzM3MDUsMzM2NjEsMzM2NjcsMzM2NzYsMzM2OTMsMzM2OTEsMzM3MDYsMzM2NzUsMzM2NjIsMzM3MDEsMzM3MTEsMzM2''@;'; put 'put ''NzIsMzM2ODcsMzM3MTIsMzM2NjMsMzM3MDIsMzM2NzEsMzM3MTAsMzM2NTQsMzM2OTAsMzQzOTMsMzQzOTAsMzQ0OTUsMzQ0ODcsMzQ0OTgsMzQ0OTcsMzQ1MDEsMzQ0OTAsMzQ0ODAsMzQ1MDQsMzQ0ODksMzQ0ODMsMzQ0ODgsMzQ1MDgsMzQ0ODQsMzQ0OTEsMzQ0OTIsMzQ0OTksMzQ0OTMs''@;'; put 'put ''MzQ0OTQsMzQ4OTgsMzQ5NTMsMzQ5NjUsMzQ5ODQsMzQ5NzgsMzQ5ODYsMzQ5NzAsMzQ5NjEsMzQ5NzcsMzQ5NzUsMzQ5NjgsMzQ5ODMsMzQ5NjksMzQ5NzEsMzQ5NjcsMzQ5ODAsMzQ5ODgsMzQ5NTYsMzQ5NjMsMzQ5NTgsMzUyMDIsMzUyODYsMzUyODksMzUyODUsMzUzNzYsMzUzNjcsMzUz''@;'; put 'put ''NzIsMzUzNTgsMzU4OTcsMzU4OTksMzU5MzIsMzU5MzMsMzU5NjUsMzYwMDUsMzYyMjEsMzYyMTksMzYyMTcsMzYyODQsMzYyOTAsMzYyODEsMzYyODcsMzYyODksMzY1NjgsMzY1NzQsMzY1NzMsMzY1NzIsMzY1NjcsMzY1NzYsMzY1NzcsMzY5MDAsMzY4NzUsMzY4ODEsMzY4OTIsMzY4NzYs''@;'; put 'put ''MzY4OTcsMzcxMDMsMzcwOTgsMzcxMDQsMzcxMDgsMzcxMDYsMzcxMDcsMzcwNzYsMzcwOTksMzcxMDAsMzcwOTcsMzcyMDYsMzcyMDgsMzcyMTAsMzcyMDMsMzcyMDUsMzczNTYsMzczNjQsMzczNjEsMzczNjMsMzczNjgsMzczNDgsMzczNjksMzczNTQsMzczNTUsMzczNjcsMzczNTIsMzcz''@;'; put 'put ''NTgsMzgyNjYsMzgyNzgsMzgyODAsMzg1MjQsMzg1MDksMzg1MDcsMzg1MTMsMzg1MTEsMzg1OTEsMzg3NjIsMzg5MTYsMzkxNDEsMzkzMTksMjA2MzUsMjA2MjksMjA2MjgsMjA2MzgsMjA2MTksMjA2NDMsMjA2MTEsMjA2MjAsMjA2MjIsMjA2MzcsMjA1ODQsMjA2MzYsMjA2MjYsMjA2MTAs''@;'; put 'put ''MjA2MTUsMjA4MzEsMjA5NDgsMjEyNjYsMjEyNjUsMjE0MTIsMjE0MTUsMjE5MDUsMjE5MjgsMjE5MjUsMjE5MzMsMjE4NzksMjIwODUsMjE5MjIsMjE5MDcsMjE4OTYsMjE5MDMsMjE5NDEsMjE4ODksMjE5MjMsMjE5MDYsMjE5MjQsMjE4ODUsMjE5MDAsMjE5MjYsMjE4ODcsMjE5MDksMjE5''@;'; put 'put ''MjEsMjE5MDIsMjIyODQsMjI1NjksMjI1ODMsMjI1NTMsMjI1NTgsMjI1NjcsMjI1NjMsMjI1NjgsMjI1MTcsMjI2MDAsMjI1NjUsMjI1NTYsMjI1NTUsMjI1NzksMjI1OTEsMjI1ODIsMjI1NzQsMjI1ODUsMjI1ODQsMjI1NzMsMjI1NzIsMjI1ODcsMjI4ODEsMjMyMTUsMjMxODgsMjMxOTks''@;'; put 'put ''MjMxNjIsMjMyMDIsMjMxOTgsMjMxNjAsMjMyMDYsMjMxNjQsMjMyMDUsMjMyMTIsMjMxODksMjMyMTQsMjMwOTUsMjMxNzIsMjMxNzgsMjMxOTEsMjMxNzEsMjMxNzksMjMyMDksMjMxNjMsMjMxNjUsMjMxODAsMjMxOTYsMjMxODMsMjMxODcsMjMxOTcsMjM1MzAsMjM1MDEsMjM0OTksMjM1''@;'; put 'put ''MDgsMjM1MDUsMjM0OTgsMjM1MDIsMjM1NjQsMjM2MDAsMjM4NjMsMjM4NzUsMjM5MTUsMjM4NzMsMjM4ODMsMjM4NzEsMjM4NjEsMjM4ODksMjM4ODYsMjM4OTMsMjM4NTksMjM4NjYsMjM4OTAsMjM4NjksMjM4NTcsMjM4OTcsMjM4NzQsMjM4NjUsMjM4ODEsMjM4NjQsMjM4NjgsMjM4NTgs''@;'; put 'put ''MjM4NjIsMjM4NzIsMjM4NzcsMjQxMzIsMjQxMjksMjQ0MDgsMjQ0ODYsMjQ0ODUsMjQ0OTEsMjQ3NzcsMjQ3NjEsMjQ3ODAsMjQ4MDIsMjQ3ODIsMjQ3NzIsMjQ4NTIsMjQ4MTgsMjQ4NDIsMjQ4NTQsMjQ4MzcsMjQ4MjEsMjQ4NTEsMjQ4MjQsMjQ4MjgsMjQ4MzAsMjQ3NjksMjQ4MzUsMjQ4''@;'; put 'put ''NTYsMjQ4NjEsMjQ4NDgsMjQ4MzEsMjQ4MzYsMjQ4NDMsMjUxNjIsMjU0OTIsMjU1MjEsMjU1MjAsMjU1NTAsMjU1NzMsMjU1NzYsMjU1ODMsMjU1MzksMjU3NTcsMjU1ODcsMjU1NDYsMjU1NjgsMjU1OTAsMjU1NTcsMjU1ODYsMjU1ODksMjU2OTcsMjU1NjcsMjU1MzQsMjU1NjUsMjU1NjQs''@;'; put 'put ''MjU1NDAsMjU1NjAsMjU1NTUsMjU1MzgsMjU1NDMsMjU1NDgsMjU1NDcsMjU1NDQsMjU1ODQsMjU1NTksMjU1NjEsMjU5MDYsMjU5NTksMjU5NjIsMjU5NTYsMjU5NDgsMjU5NjAsMjU5NTcsMjU5OTYsMjYwMTMsMjYwMTQsMjYwMzAsMjYwNjQsMjYwNjYsMjYyMzYsMjYyMjAsMjYyMzUsMjYy''@;'; put 'put ''NDAsMjYyMjUsMjYyMzMsMjYyMTgsMjYyMjYsMjYzNjksMjY4OTIsMjY4MzUsMjY4ODQsMjY4NDQsMjY5MjIsMjY4NjAsMjY4NTgsMjY4NjUsMjY4OTUsMjY4MzgsMjY4NzEsMjY4NTksMjY4NTIsMjY4NzAsMjY4OTksMjY4OTYsMjY4NjcsMjY4NDksMjY4ODcsMjY4MjgsMjY4ODgsMjY5OTIs''@;'; put 'put ''MjY4MDQsMjY4OTcsMjY4NjMsMjY4MjIsMjY5MDAsMjY4NzIsMjY4MzIsMjY4NzcsMjY4NzYsMjY4NTYsMjY4OTEsMjY4OTAsMjY5MDMsMjY4MzAsMjY4MjQsMjY4NDUsMjY4NDYsMjY4NTQsMjY4NjgsMjY4MzMsMjY4ODYsMjY4MzYsMjY4NTcsMjY5MDEsMjY5MTcsMjY4MjMsMjc0NDksMjc0''@;'; put 'put ''NTEsMjc0NTUsMjc0NTIsMjc1NDAsMjc1NDMsMjc1NDUsMjc1NDEsMjc1ODEsMjc2MzIsMjc2MzQsMjc2MzUsMjc2OTYsMjgxNTYsMjgyMzAsMjgyMzEsMjgxOTEsMjgyMzMsMjgyOTYsMjgyMjAsMjgyMjEsMjgyMjksMjgyNTgsMjgyMDMsMjgyMjMsMjgyMjUsMjgyNTMsMjgyNzUsMjgxODgs''@;'; put 'put ''MjgyMTEsMjgyMzUsMjgyMjQsMjgyNDEsMjgyMTksMjgxNjMsMjgyMDYsMjgyNTQsMjgyNjQsMjgyNTIsMjgyNTcsMjgyMDksMjgyMDAsMjgyNTYsMjgyNzMsMjgyNjcsMjgyMTcsMjgxOTQsMjgyMDgsMjgyNDMsMjgyNjEsMjgxOTksMjgyODAsMjgyNjAsMjgyNzksMjgyNDUsMjgyODEsMjgy''@;'; put 'put ''NDIsMjgyNjIsMjgyMTMsMjgyMTQsMjgyNTAsMjg5NjAsMjg5NTgsMjg5NzUsMjg5MjMsMjg5NzQsMjg5NzcsMjg5NjMsMjg5NjUsMjg5NjIsMjg5NzgsMjg5NTksMjg5NjgsMjg5ODYsMjg5NTUsMjkyNTksMjkyNzQsMjkzMjAsMjkzMjEsMjkzMTgsMjkzMTcsMjkzMjMsMjk0NTgsMjk0NTEs''@;'; put 'put ''Mjk0ODgsMjk0NzQsMjk0ODksMjk0OTEsMjk0NzksMjk0OTAsMjk0ODUsMjk0NzgsMjk0NzUsMjk0OTMsMjk0NTIsMjk3NDIsMjk3NDAsMjk3NDQsMjk3MzksMjk3MTgsMjk3MjIsMjk3MjksMjk3NDEsMjk3NDUsMjk3MzIsMjk3MzEsMjk3MjUsMjk3MzcsMjk3MjgsMjk3NDYsMjk5NDcsMjk5''@;'; put 'put ''OTksMzAwNjMsMzAwNjAsMzAxODMsMzAxNzAsMzAxNzcsMzAxODIsMzAxNzMsMzAxNzUsMzAxODAsMzAxNjcsMzAzNTcsMzAzNTQsMzA0MjYsMzA1MzQsMzA1MzUsMzA1MzIsMzA1NDEsMzA1MzMsMzA1MzgsMzA1NDIsMzA1MzksMzA1NDAsMzA2ODYsMzA3MDAsMzA4MTYsMzA4MjAsMzA4MjEs''@;'; put 'put ''MzA4MTIsMzA4MjksMzA4MzMsMzA4MjYsMzA4MzAsMzA4MzIsMzA4MjUsMzA4MjQsMzA4MTQsMzA4MTgsMzEwOTIsMzEwOTEsMzEwOTAsMzEwODgsMzEyMzQsMzEyNDIsMzEyMzUsMzEyNDQsMzEyMzYsMzEzODUsMzE0NjIsMzE0NjAsMzE1NjIsMzE1NDcsMzE1NTYsMzE1NjAsMzE1NjQsMzE1''@;'; put 'put ''NjYsMzE1NTIsMzE1NzYsMzE1NTcsMzE5MDYsMzE5MDIsMzE5MTIsMzE5MDUsMzIwODgsMzIxMTEsMzIwOTksMzIwODMsMzIwODYsMzIxMDMsMzIxMDYsMzIwNzksMzIxMDksMzIwOTIsMzIxMDcsMzIwODIsMzIwODQsMzIxMDUsMzIwODEsMzIwOTUsMzIwNzgsMzI1NzQsMzI1NzUsMzI2MTMs''@;'; put 'put ''MzI2MTQsMzI2NzQsMzI2NzIsMzI2NzMsMzI3MjcsMzI4NDksMzI4NDcsMzI4NDgsMzMwMjIsMzI5ODAsMzMwOTEsMzMwOTgsMzMxMDYsMzMxMDMsMzMwOTUsMzMwODUsMzMxMDEsMzMwODIsMzMyNTQsMzMyNjIsMzMyNzEsMzMyNzIsMzMyNzMsMzMyODQsMzMzNDAsMzMzNDEsMzMzNDMsMzMz''@;'; put 'put ''OTcsMzM1OTUsMzM3NDMsMzM3ODUsMzM4MjcsMzM3MjgsMzM3NjgsMzM4MTAsMzM3NjcsMzM3NjQsMzM3ODgsMzM3ODIsMzM4MDgsMzM3MzQsMzM3MzYsMzM3NzEsMzM3NjMsMzM3MjcsMzM3OTMsMzM3NTcsMzM3NjUsMzM3NTIsMzM3OTEsMzM3NjEsMzM3MzksMzM3NDIsMzM3NTAsMzM3ODEs''@;'; put 'put ''MzM3MzcsMzM4MDEsMzM4MDcsMzM3NTgsMzM4MDksMzM3OTgsMzM3MzAsMzM3NzksMzM3NDksMzM3ODYsMzM3MzUsMzM3NDUsMzM3NzAsMzM4MTEsMzM3MzEsMzM3NzIsMzM3NzQsMzM3MzIsMzM3ODcsMzM3NTEsMzM3NjIsMzM4MTksMzM3NTUsMzM3OTAsMzQ1MjAsMzQ1MzAsMzQ1MzQsMzQ1''@;'; put 'put ''MTUsMzQ1MzEsMzQ1MjIsMzQ1MzgsMzQ1MjUsMzQ1MzksMzQ1MjQsMzQ1NDAsMzQ1MzcsMzQ1MTksMzQ1MzYsMzQ1MTMsMzQ4ODgsMzQ5MDIsMzQ5MDEsMzUwMDIsMzUwMzEsMzUwMDEsMzVlMywzNTAwOCwzNTAwNiwzNDk5OCwzNTAwNCwzNDk5OSwzNTAwNSwzNDk5NCwzNTA3MywzNTAxNywz''@;'; put 'put ''NTIyMSwzNTIyNCwzNTIyMywzNTI5MywzNTI5MCwzNTI5MSwzNTQwNiwzNTQwNSwzNTM4NSwzNTQxNywzNTM5MiwzNTQxNSwzNTQxNiwzNTM5NiwzNTM5NywzNTQxMCwzNTQwMCwzNTQwOSwzNTQwMiwzNTQwNCwzNTQwNywzNTkzNSwzNTk2OSwzNTk2OCwzNjAyNiwzNjAzMCwzNjAxNiwzNjAy''@;'; put 'put ''NSwzNjAyMSwzNjIyOCwzNjIyNCwzNjIzMywzNjMxMiwzNjMwNywzNjMwMSwzNjI5NSwzNjMxMCwzNjMxNiwzNjMwMywzNjMwOSwzNjMxMywzNjI5NiwzNjMxMSwzNjI5MywzNjU5MSwzNjU5OSwzNjYwMiwzNjYwMSwzNjU4MiwzNjU5MCwzNjU4MSwzNjU5NywzNjU4MywzNjU4NCwzNjU5OCwz''@;'; put 'put ''NjU4NywzNjU5MywzNjU4OCwzNjU5NiwzNjU4NSwzNjkwOSwzNjkxNiwzNjkxMSwzNzEyNiwzNzE2NCwzNzEyNCwzNzExOSwzNzExNiwzNzEyOCwzNzExMywzNzExNSwzNzEyMSwzNzEyMCwzNzEyNywzNzEyNSwzNzEyMywzNzIxNywzNzIyMCwzNzIxNSwzNzIxOCwzNzIxNiwzNzM3NywzNzM4''@;'; put 'put ''NiwzNzQxMywzNzM3OSwzNzQwMiwzNzQxNCwzNzM5MSwzNzM4OCwzNzM3NiwzNzM5NCwzNzM3NSwzNzM3MywzNzM4MiwzNzM4MCwzNzQxNSwzNzM3OCwzNzQwNCwzNzQxMiwzNzQwMSwzNzM5OSwzNzM4MSwzNzM5OCwzODI2NywzODI4NSwzODI4NCwzODI4OCwzODUzNSwzODUyNiwzODUzNiwz''@;'; put 'put ''ODUzNywzODUzMSwzODUyOCwzODU5NCwzODYwMCwzODU5NSwzODY0MSwzODY0MCwzODc2NCwzODc2OCwzODc2NiwzODkxOSwzOTA4MSwzOTE0Nyw0MDE2Niw0MDY5NywyMDA5OSwyMDEwMCwyMDE1MCwyMDY2OSwyMDY3MSwyMDY3OCwyMDY1NCwyMDY3NiwyMDY4MiwyMDY2MCwyMDY4MCwyMDY3''@;'; put 'put ''NCwyMDY1NiwyMDY3MywyMDY2NiwyMDY1NywyMDY4MywyMDY4MSwyMDY2MiwyMDY2NCwyMDk1MSwyMTExNCwyMTExMiwyMTExNSwyMTExNiwyMTk1NSwyMTk3OSwyMTk2NCwyMTk2OCwyMTk2MywyMTk2MiwyMTk4MSwyMTk1MiwyMTk3MiwyMTk1NiwyMTk5MywyMTk1MSwyMTk3MCwyMTkwMSwy''@;'; put 'put ''MTk2NywyMTk3MywyMTk4NiwyMTk3NCwyMTk2MCwyMjAwMiwyMTk2NSwyMTk3NywyMTk1NCwyMjI5MiwyMjYxMSwyMjYzMiwyMjYyOCwyMjYwNywyMjYwNSwyMjYwMSwyMjYzOSwyMjYxMywyMjYwNiwyMjYyMSwyMjYxNywyMjYyOSwyMjYxOSwyMjU4OSwyMjYyNywyMjY0MSwyMjc4MCwyMzIz''@;'; put 'put ''OSwyMzIzNiwyMzI0MywyMzIyNiwyMzIyNCwyMzIxNywyMzIyMSwyMzIxNiwyMzIzMSwyMzI0MCwyMzIyNywyMzIzOCwyMzIyMywyMzIzMiwyMzI0MiwyMzIyMCwyMzIyMiwyMzI0NSwyMzIyNSwyMzE4NCwyMzUxMCwyMzUxMiwyMzUxMywyMzU4MywyMzYwMywyMzkyMSwyMzkwNywyMzg4Miwy''@;'; put 'put ''MzkwOSwyMzkyMiwyMzkxNiwyMzkwMiwyMzkxMiwyMzkxMSwyMzkwNiwyNDA0OCwyNDE0MywyNDE0MiwyNDEzOCwyNDE0MSwyNDEzOSwyNDI2MSwyNDI2OCwyNDI2MiwyNDI2NywyNDI2MywyNDM4NCwyNDQ5NSwyNDQ5MywyNDgyMywyNDkwNSwyNDkwNiwyNDg3NSwyNDkwMSwyNDg4NiwyNDg4''@;'; put 'put ''MiwyNDg3OCwyNDkwMiwyNDg3OSwyNDkxMSwyNDg3MywyNDg5NiwyNTEyMCwzNzIyNCwyNTEyMywyNTEyNSwyNTEyNCwyNTU0MSwyNTU4NSwyNTU3OSwyNTYxNiwyNTYxOCwyNTYwOSwyNTYzMiwyNTYzNiwyNTY1MSwyNTY2NywyNTYzMSwyNTYyMSwyNTYyNCwyNTY1NywyNTY1NSwyNTYzNCwy''@;'; put 'put ''NTYzNSwyNTYxMiwyNTYzOCwyNTY0OCwyNTY0MCwyNTY2NSwyNTY1MywyNTY0NywyNTYxMCwyNTYyNiwyNTY2NCwyNTYzNywyNTYzOSwyNTYxMSwyNTU3NSwyNTYyNywyNTY0NiwyNTYzMywyNTYxNCwyNTk2NywyNjAwMiwyNjA2NywyNjI0NiwyNjI1MiwyNjI2MSwyNjI1NiwyNjI1MSwyNjI1''@;'; put 'put ''MCwyNjI2NSwyNjI2MCwyNjIzMiwyNjQwMCwyNjk4MiwyNjk3NSwyNjkzNiwyNjk1OCwyNjk3OCwyNjk5MywyNjk0MywyNjk0OSwyNjk4NiwyNjkzNywyNjk0NiwyNjk2NywyNjk2OSwyNzAwMiwyNjk1MiwyNjk1MywyNjkzMywyNjk4OCwyNjkzMSwyNjk0MSwyNjk4MSwyNjg2NCwyN2UzLDI2''@;'; put 'put ''OTMyLDI2OTg1LDI2OTQ0LDI2OTkxLDI2OTQ4LDI2OTk4LDI2OTY4LDI2OTQ1LDI2OTk2LDI2OTU2LDI2OTM5LDI2OTU1LDI2OTM1LDI2OTcyLDI2OTU5LDI2OTYxLDI2OTMwLDI2OTYyLDI2OTI3LDI3MDAzLDI2OTQwLDI3NDYyLDI3NDYxLDI3NDU5LDI3NDU4LDI3NDY0LDI3NDU3LDI3NTQ3''@;'; put 'put ''LDY0MDEzLDI3NjQzLDI3NjQ0LDI3NjQxLDI3NjM5LDI3NjQwLDI4MzE1LDI4Mzc0LDI4MzYwLDI4MzAzLDI4MzUyLDI4MzE5LDI4MzA3LDI4MzA4LDI4MzIwLDI4MzM3LDI4MzQ1LDI4MzU4LDI4MzcwLDI4MzQ5LDI4MzUzLDI4MzE4LDI4MzYxLDI4MzQzLDI4MzM2LDI4MzY1LDI4MzI2LDI4''@;'; put 'put ''MzY3LDI4MzM4LDI4MzUwLDI4MzU1LDI4MzgwLDI4Mzc2LDI4MzEzLDI4MzA2LDI4MzAyLDI4MzAxLDI4MzI0LDI4MzIxLDI4MzUxLDI4MzM5LDI4MzY4LDI4MzYyLDI4MzExLDI4MzM0LDI4MzIzLDI4OTk5LDI5MDEyLDI5MDEwLDI5MDI3LDI5MDI0LDI4OTkzLDI5MDIxLDI5MDI2LDI5MDQy''@;'; put 'put ''LDI5MDQ4LDI5MDM0LDI5MDI1LDI4OTk0LDI5MDE2LDI4OTk1LDI5MDAzLDI5MDQwLDI5MDIzLDI5MDA4LDI5MDExLDI4OTk2LDI5MDA1LDI5MDE4LDI5MjYzLDI5MzI1LDI5MzI0LDI5MzI5LDI5MzI4LDI5MzI2LDI5NTAwLDI5NTA2LDI5NDk5LDI5NDk4LDI5NTA0LDI5NTE0LDI5NTEzLDI5''@;'; put 'put ''NzY0LDI5NzcwLDI5NzcxLDI5Nzc4LDI5Nzc3LDI5NzgzLDI5NzYwLDI5Nzc1LDI5Nzc2LDI5Nzc0LDI5NzYyLDI5NzY2LDI5NzczLDI5NzgwLDI5OTIxLDI5OTUxLDI5OTUwLDI5OTQ5LDI5OTgxLDMwMDczLDMwMDcxLDI3MDExLDMwMTkxLDMwMjIzLDMwMjExLDMwMTk5LDMwMjA2LDMwMjA0''@;'; put 'put ''LDMwMjAxLDMwMjAwLDMwMjI0LDMwMjAzLDMwMTk4LDMwMTg5LDMwMTk3LDMwMjA1LDMwMzYxLDMwMzg5LDMwNDI5LDMwNTQ5LDMwNTU5LDMwNTYwLDMwNTQ2LDMwNTUwLDMwNTU0LDMwNTY5LDMwNTY3LDMwNTQ4LDMwNTUzLDMwNTczLDMwNjg4LDMwODU1LDMwODc0LDMwODY4LDMwODYzLDMw''@;'; put 'put ''ODUyLDMwODY5LDMwODUzLDMwODU0LDMwODgxLDMwODUxLDMwODQxLDMwODczLDMwODQ4LDMwODcwLDMwODQzLDMxMTAwLDMxMTA2LDMxMTAxLDMxMDk3LDMxMjQ5LDMxMjU2LDMxMjU3LDMxMjUwLDMxMjU1LDMxMjUzLDMxMjY2LDMxMjUxLDMxMjU5LDMxMjQ4LDMxMzk1LDMxMzk0LDMxMzkw''@;'; put 'put ''LDMxNDY3LDMxNTkwLDMxNTg4LDMxNTk3LDMxNjA0LDMxNTkzLDMxNjAyLDMxNTg5LDMxNjAzLDMxNjAxLDMxNjAwLDMxNTg1LDMxNjA4LDMxNjA2LDMxNTg3LDMxOTIyLDMxOTI0LDMxOTE5LDMyMTM2LDMyMTM0LDMyMTI4LDMyMTQxLDMyMTI3LDMyMTMzLDMyMTIyLDMyMTQyLDMyMTIzLDMy''@;'; put 'put ''MTMxLDMyMTI0LDMyMTQwLDMyMTQ4LDMyMTMyLDMyMTI1LDMyMTQ2LDMyNjIxLDMyNjE5LDMyNjE1LDMyNjE2LDMyNjIwLDMyNjc4LDMyNjc3LDMyNjc5LDMyNzMxLDMyNzMyLDMyODAxLDMzMTI0LDMzMTIwLDMzMTQzLDMzMTE2LDMzMTI5LDMzMTE1LDMzMTIyLDMzMTM4LDI2NDAxLDMzMTE4''@;'; put 'put ''LDMzMTQyLDMzMTI3LDMzMTM1LDMzMDkyLDMzMTIxLDMzMzA5LDMzMzUzLDMzMzQ4LDMzMzQ0LDMzMzQ2LDMzMzQ5LDM0MDMzLDMzODU1LDMzODc4LDMzOTEwLDMzOTEzLDMzOTM1LDMzOTMzLDMzODkzLDMzODczLDMzODU2LDMzOTI2LDMzODk1LDMzODQwLDMzODY5LDMzOTE3LDMzODgyLDMz''@;'; put 'put ''ODgxLDMzOTA4LDMzOTA3LDMzODg1LDM0MDU1LDMzODg2LDMzODQ3LDMzODUwLDMzODQ0LDMzOTE0LDMzODU5LDMzOTEyLDMzODQyLDMzODYxLDMzODMzLDMzNzUzLDMzODY3LDMzODM5LDMzODU4LDMzODM3LDMzODg3LDMzOTA0LDMzODQ5LDMzODcwLDMzODY4LDMzODc0LDMzOTAzLDMzOTg5''@;'; put 'put ''LDMzOTM0LDMzODUxLDMzODYzLDMzODQ2LDMzODQzLDMzODk2LDMzOTE4LDMzODYwLDMzODM1LDMzODg4LDMzODc2LDMzOTAyLDMzODcyLDM0NTcxLDM0NTY0LDM0NTUxLDM0NTcyLDM0NTU0LDM0NTE4LDM0NTQ5LDM0NjM3LDM0NTUyLDM0NTc0LDM0NTY5LDM0NTYxLDM0NTUwLDM0NTczLDM0''@;'; put 'put ''NTY1LDM1MDMwLDM1MDE5LDM1MDIxLDM1MDIyLDM1MDM4LDM1MDM1LDM1MDM0LDM1MDIwLDM1MDI0LDM1MjA1LDM1MjI3LDM1Mjk1LDM1MzAxLDM1MzAwLDM1Mjk3LDM1Mjk2LDM1Mjk4LDM1MjkyLDM1MzAyLDM1NDQ2LDM1NDYyLDM1NDU1LDM1NDI1LDM1MzkxLDM1NDQ3LDM1NDU4LDM1NDYw''@;'; put 'put ''LDM1NDQ1LDM1NDU5LDM1NDU3LDM1NDQ0LDM1NDUwLDM1OTAwLDM1OTE1LDM1OTE0LDM1OTQxLDM1OTQwLDM1OTQyLDM1OTc0LDM1OTcyLDM1OTczLDM2MDQ0LDM2MjAwLDM2MjAxLDM2MjQxLDM2MjM2LDM2MjM4LDM2MjM5LDM2MjM3LDM2MjQzLDM2MjQ0LDM2MjQwLDM2MjQyLDM2MzM2LDM2''@;'; put 'put ''MzIwLDM2MzMyLDM2MzM3LDM2MzM0LDM2MzA0LDM2MzI5LDM2MzIzLDM2MzIyLDM2MzI3LDM2MzM4LDM2MzMxLDM2MzQwLDM2NjE0LDM2NjA3LDM2NjA5LDM2NjA4LDM2NjEzLDM2NjE1LDM2NjE2LDM2NjEwLDM2NjE5LDM2OTQ2LDM2OTI3LDM2OTMyLDM2OTM3LDM2OTI1LDM3MTM2LDM3MTMz''@;'; put 'put ''LDM3MTM1LDM3MTM3LDM3MTQyLDM3MTQwLDM3MTMxLDM3MTM0LDM3MjMwLDM3MjMxLDM3NDQ4LDM3NDU4LDM3NDI0LDM3NDM0LDM3NDc4LDM3NDI3LDM3NDc3LDM3NDcwLDM3NTA3LDM3NDIyLDM3NDUwLDM3NDQ2LDM3NDg1LDM3NDg0LDM3NDU1LDM3NDcyLDM3NDc5LDM3NDg3LDM3NDMwLDM3''@;'; put 'put ''NDczLDM3NDg4LDM3NDI1LDM3NDYwLDM3NDc1LDM3NDU2LDM3NDkwLDM3NDU0LDM3NDU5LDM3NDUyLDM3NDYyLDM3NDI2LDM4MzAzLDM4MzAwLDM4MzAyLDM4Mjk5LDM4NTQ2LDM4NTQ3LDM4NTQ1LDM4NTUxLDM4NjA2LDM4NjUwLDM4NjUzLDM4NjQ4LDM4NjQ1LDM4NzcxLDM4Nzc1LDM4Nzc2''@;'; put 'put ''LDM4NzcwLDM4OTI3LDM4OTI1LDM4OTI2LDM5MDg0LDM5MTU4LDM5MTYxLDM5MzQzLDM5MzQ2LDM5MzQ0LDM5MzQ5LDM5NTk3LDM5NTk1LDM5NzcxLDQwMTcwLDQwMTczLDQwMTY3LDQwNTc2LDQwNzAxLDIwNzEwLDIwNjkyLDIwNjk1LDIwNzEyLDIwNzIzLDIwNjk5LDIwNzE0LDIwNzAxLDIw''@;'; put 'put ''NzA4LDIwNjkxLDIwNzE2LDIwNzIwLDIwNzE5LDIwNzA3LDIwNzA0LDIwOTUyLDIxMTIwLDIxMTIxLDIxMjI1LDIxMjI3LDIxMjk2LDIxNDIwLDIyMDU1LDIyMDM3LDIyMDI4LDIyMDM0LDIyMDEyLDIyMDMxLDIyMDQ0LDIyMDE3LDIyMDM1LDIyMDE4LDIyMDEwLDIyMDQ1LDIyMDIwLDIyMDE1''@;'; put 'put ''LDIyMDA5LDIyNjY1LDIyNjUyLDIyNjcyLDIyNjgwLDIyNjYyLDIyNjU3LDIyNjU1LDIyNjQ0LDIyNjY3LDIyNjUwLDIyNjYzLDIyNjczLDIyNjcwLDIyNjQ2LDIyNjU4LDIyNjY0LDIyNjUxLDIyNjc2LDIyNjcxLDIyNzgyLDIyODkxLDIzMjYwLDIzMjc4LDIzMjY5LDIzMjUzLDIzMjc0LDIz''@;'; put 'put ''MjU4LDIzMjc3LDIzMjc1LDIzMjgzLDIzMjY2LDIzMjY0LDIzMjU5LDIzMjc2LDIzMjYyLDIzMjYxLDIzMjU3LDIzMjcyLDIzMjYzLDIzNDE1LDIzNTIwLDIzNTIzLDIzNjUxLDIzOTM4LDIzOTM2LDIzOTMzLDIzOTQyLDIzOTMwLDIzOTM3LDIzOTI3LDIzOTQ2LDIzOTQ1LDIzOTQ0LDIzOTM0''@;'; put 'put ''LDIzOTMyLDIzOTQ5LDIzOTI5LDIzOTM1LDI0MTUyLDI0MTUzLDI0MTQ3LDI0MjgwLDI0MjczLDI0Mjc5LDI0MjcwLDI0Mjg0LDI0Mjc3LDI0MjgxLDI0Mjc0LDI0Mjc2LDI0Mzg4LDI0Mzg3LDI0NDMxLDI0NTAyLDI0ODc2LDI0ODcyLDI0ODk3LDI0OTI2LDI0OTQ1LDI0OTQ3LDI0OTE0LDI0''@;'; put 'put ''OTE1LDI0OTQ2LDI0OTQwLDI0OTYwLDI0OTQ4LDI0OTE2LDI0OTU0LDI0OTIzLDI0OTMzLDI0ODkxLDI0OTM4LDI0OTI5LDI0OTE4LDI1MTI5LDI1MTI3LDI1MTMxLDI1NjQzLDI1Njc3LDI1NjkxLDI1NjkzLDI1NzE2LDI1NzE4LDI1NzE0LDI1NzE1LDI1NzI1LDI1NzE3LDI1NzAyLDI1NzY2''@;'; put 'put ''LDI1Njc4LDI1NzMwLDI1Njk0LDI1NjkyLDI1Njc1LDI1NjgzLDI1Njk2LDI1NjgwLDI1NzI3LDI1NjYzLDI1NzA4LDI1NzA3LDI1Njg5LDI1NzAxLDI1NzE5LDI1OTcxLDI2MDE2LDI2MjczLDI2MjcyLDI2MjcxLDI2MzczLDI2MzcyLDI2NDAyLDI3MDU3LDI3MDYyLDI3MDgxLDI3MDQwLDI3''@;'; put 'put ''MDg2LDI3MDMwLDI3MDU2LDI3MDUyLDI3MDY4LDI3MDI1LDI3MDMzLDI3MDIyLDI3MDQ3LDI3MDIxLDI3MDQ5LDI3MDcwLDI3MDU1LDI3MDcxLDI3MDc2LDI3MDY5LDI3MDQ0LDI3MDkyLDI3MDY1LDI3MDgyLDI3MDM0LDI3MDg3LDI3MDU5LDI3MDI3LDI3MDUwLDI3MDQxLDI3MDM4LDI3MDk3''@;'; put 'put ''LDI3MDMxLDI3MDI0LDI3MDc0LDI3MDYxLDI3MDQ1LDI3MDc4LDI3NDY2LDI3NDY5LDI3NDY3LDI3NTUwLDI3NTUxLDI3NTUyLDI3NTg3LDI3NTg4LDI3NjQ2LDI4MzY2LDI4NDA1LDI4NDAxLDI4NDE5LDI4NDUzLDI4NDA4LDI4NDcxLDI4NDExLDI4NDYyLDI4NDI1LDI4NDk0LDI4NDQxLDI4''@;'; put 'put ''NDQyLDI4NDU1LDI4NDQwLDI4NDc1LDI4NDM0LDI4Mzk3LDI4NDI2LDI4NDcwLDI4NTMxLDI4NDA5LDI4Mzk4LDI4NDYxLDI4NDgwLDI4NDY0LDI4NDc2LDI4NDY5LDI4Mzk1LDI4NDIzLDI4NDMwLDI4NDgzLDI4NDIxLDI4NDEzLDI4NDA2LDI4NDczLDI4NDQ0LDI4NDEyLDI4NDc0LDI4NDQ3''@;'; put 'put ''LDI4NDI5LDI4NDQ2LDI4NDI0LDI4NDQ5LDI5MDYzLDI5MDcyLDI5MDY1LDI5MDU2LDI5MDYxLDI5MDU4LDI5MDcxLDI5MDUxLDI5MDYyLDI5MDU3LDI5MDc5LDI5MjUyLDI5MjY3LDI5MzM1LDI5MzMzLDI5MzMxLDI5NTA3LDI5NTE3LDI5NTIxLDI5NTE2LDI5Nzk0LDI5ODExLDI5ODA5LDI5''@;'; put 'put ''ODEzLDI5ODEwLDI5Nzk5LDI5ODA2LDI5OTUyLDI5OTU0LDI5OTU1LDMwMDc3LDMwMDk2LDMwMjMwLDMwMjE2LDMwMjIwLDMwMjI5LDMwMjI1LDMwMjE4LDMwMjI4LDMwMzkyLDMwNTkzLDMwNTg4LDMwNTk3LDMwNTk0LDMwNTc0LDMwNTkyLDMwNTc1LDMwNTkwLDMwNTk1LDMwODk4LDMwODkw''@;'; put 'put ''LDMwOTAwLDMwODkzLDMwODg4LDMwODQ2LDMwODkxLDMwODc4LDMwODg1LDMwODgwLDMwODkyLDMwODgyLDMwODg0LDMxMTI4LDMxMTE0LDMxMTE1LDMxMTI2LDMxMTI1LDMxMTI0LDMxMTIzLDMxMTI3LDMxMTEyLDMxMTIyLDMxMTIwLDMxMjc1LDMxMzA2LDMxMjgwLDMxMjc5LDMxMjcyLDMx''@;'; put 'put ''MjcwLDMxNDAwLDMxNDAzLDMxNDA0LDMxNDcwLDMxNjI0LDMxNjQ0LDMxNjI2LDMxNjMzLDMxNjMyLDMxNjM4LDMxNjI5LDMxNjI4LDMxNjQzLDMxNjMwLDMxNjIxLDMxNjQwLDIxMTI0LDMxNjQxLDMxNjUyLDMxNjE4LDMxOTMxLDMxOTM1LDMxOTMyLDMxOTMwLDMyMTY3LDMyMTgzLDMyMTk0''@;'; put 'put ''LDMyMTYzLDMyMTcwLDMyMTkzLDMyMTkyLDMyMTk3LDMyMTU3LDMyMjA2LDMyMTk2LDMyMTk4LDMyMjAzLDMyMjA0LDMyMTc1LDMyMTg1LDMyMTUwLDMyMTg4LDMyMTU5LDMyMTY2LDMyMTc0LDMyMTY5LDMyMTYxLDMyMjAxLDMyNjI3LDMyNzM4LDMyNzM5LDMyNzQxLDMyNzM0LDMyODA0LDMy''@;'; put 'put ''ODYxLDMyODYwLDMzMTYxLDMzMTU4LDMzMTU1LDMzMTU5LDMzMTY1LDMzMTY0LDMzMTYzLDMzMzAxLDMzOTQzLDMzOTU2LDMzOTUzLDMzOTUxLDMzOTc4LDMzOTk4LDMzOTg2LDMzOTY0LDMzOTY2LDMzOTYzLDMzOTc3LDMzOTcyLDMzOTg1LDMzOTk3LDMzOTYyLDMzOTQ2LDMzOTY5LDM0ZTMs''@;'; put 'put ''MzM5NDksMzM5NTksMzM5NzksMzM5NTQsMzM5NDAsMzM5OTEsMzM5OTYsMzM5NDcsMzM5NjEsMzM5NjcsMzM5NjAsMzQwMDYsMzM5NDQsMzM5NzQsMzM5OTksMzM5NTIsMzQwMDcsMzQwMDQsMzQwMDIsMzQwMTEsMzM5NjgsMzM5MzcsMzQ0MDEsMzQ2MTEsMzQ1OTUsMzQ2MDAsMzQ2NjcsMzQ2''@;'; put 'put ''MjQsMzQ2MDYsMzQ1OTAsMzQ1OTMsMzQ1ODUsMzQ1ODcsMzQ2MjcsMzQ2MDQsMzQ2MjUsMzQ2MjIsMzQ2MzAsMzQ1OTIsMzQ2MTAsMzQ2MDIsMzQ2MDUsMzQ2MjAsMzQ1NzgsMzQ2MTgsMzQ2MDksMzQ2MTMsMzQ2MjYsMzQ1OTgsMzQ1OTksMzQ2MTYsMzQ1OTYsMzQ1ODYsMzQ2MDgsMzQ1Nzcs''@;'; put 'put ''MzUwNjMsMzUwNDcsMzUwNTcsMzUwNTgsMzUwNjYsMzUwNzAsMzUwNTQsMzUwNjgsMzUwNjIsMzUwNjcsMzUwNTYsMzUwNTIsMzUwNTEsMzUyMjksMzUyMzMsMzUyMzEsMzUyMzAsMzUzMDUsMzUzMDcsMzUzMDQsMzU0OTksMzU0ODEsMzU0NjcsMzU0NzQsMzU0NzEsMzU0NzgsMzU5MDEsMzU5''@;'; put 'put ''NDQsMzU5NDUsMzYwNTMsMzYwNDcsMzYwNTUsMzYyNDYsMzYzNjEsMzYzNTQsMzYzNTEsMzYzNjUsMzYzNDksMzYzNjIsMzYzNTUsMzYzNTksMzYzNTgsMzYzNTcsMzYzNTAsMzYzNTIsMzYzNTYsMzY2MjQsMzY2MjUsMzY2MjIsMzY2MjEsMzcxNTUsMzcxNDgsMzcxNTIsMzcxNTQsMzcxNTEs''@;'; put 'put ''MzcxNDksMzcxNDYsMzcxNTYsMzcxNTMsMzcxNDcsMzcyNDIsMzcyMzQsMzcyNDEsMzcyMzUsMzc1NDEsMzc1NDAsMzc0OTQsMzc1MzEsMzc0OTgsMzc1MzYsMzc1MjQsMzc1NDYsMzc1MTcsMzc1NDIsMzc1MzAsMzc1NDcsMzc0OTcsMzc1MjcsMzc1MDMsMzc1MzksMzc2MTQsMzc1MTgsMzc1''@;'; put 'put ''MDYsMzc1MjUsMzc1MzgsMzc1MDEsMzc1MTIsMzc1MzcsMzc1MTQsMzc1MTAsMzc1MTYsMzc1MjksMzc1NDMsMzc1MDIsMzc1MTEsMzc1NDUsMzc1MzMsMzc1MTUsMzc0MjEsMzg1NTgsMzg1NjEsMzg2NTUsMzg3NDQsMzg3ODEsMzg3NzgsMzg3ODIsMzg3ODcsMzg3ODQsMzg3ODYsMzg3Nzks''@;'; put 'put ''Mzg3ODgsMzg3ODUsMzg3ODMsMzg4NjIsMzg4NjEsMzg5MzQsMzkwODUsMzkwODYsMzkxNzAsMzkxNjgsMzkxNzUsMzkzMjUsMzkzMjQsMzkzNjMsMzkzNTMsMzkzNTUsMzkzNTQsMzkzNjIsMzkzNTcsMzkzNjcsMzk2MDEsMzk2NTEsMzk2NTUsMzk3NDIsMzk3NDMsMzk3NzYsMzk3NzcsMzk3''@;'; put 'put ''NzUsNDAxNzcsNDAxNzgsNDAxODEsNDA2MTUsMjA3MzUsMjA3MzksMjA3ODQsMjA3MjgsMjA3NDIsMjA3NDMsMjA3MjYsMjA3MzQsMjA3NDcsMjA3NDgsMjA3MzMsMjA3NDYsMjExMzEsMjExMzIsMjEyMzMsMjEyMzEsMjIwODgsMjIwODIsMjIwOTIsMjIwNjksMjIwODEsMjIwOTAsMjIwODks''@;'; put 'put ''MjIwODYsMjIxMDQsMjIxMDYsMjIwODAsMjIwNjcsMjIwNzcsMjIwNjAsMjIwNzgsMjIwNzIsMjIwNTgsMjIwNzQsMjIyOTgsMjI2OTksMjI2ODUsMjI3MDUsMjI2ODgsMjI2OTEsMjI3MDMsMjI3MDAsMjI2OTMsMjI2ODksMjI3ODMsMjMyOTUsMjMyODQsMjMyOTMsMjMyODcsMjMyODYsMjMy''@;'; put 'put ''OTksMjMyODgsMjMyOTgsMjMyODksMjMyOTcsMjMzMDMsMjMzMDEsMjMzMTEsMjM2NTUsMjM5NjEsMjM5NTksMjM5NjcsMjM5NTQsMjM5NzAsMjM5NTUsMjM5NTcsMjM5NjgsMjM5NjQsMjM5NjksMjM5NjIsMjM5NjYsMjQxNjksMjQxNTcsMjQxNjAsMjQxNTYsMzIyNDMsMjQyODMsMjQyODYs''@;'; put 'put ''MjQyODksMjQzOTMsMjQ0OTgsMjQ5NzEsMjQ5NjMsMjQ5NTMsMjUwMDksMjUwMDgsMjQ5OTQsMjQ5NjksMjQ5ODcsMjQ5NzksMjUwMDcsMjUwMDUsMjQ5OTEsMjQ5NzgsMjUwMDIsMjQ5OTMsMjQ5NzMsMjQ5MzQsMjUwMTEsMjUxMzMsMjU3MTAsMjU3MTIsMjU3NTAsMjU3NjAsMjU3MzMsMjU3''@;'; put 'put ''NTEsMjU3NTYsMjU3NDMsMjU3MzksMjU3MzgsMjU3NDAsMjU3NjMsMjU3NTksMjU3MDQsMjU3NzcsMjU3NTIsMjU5NzQsMjU5NzgsMjU5NzcsMjU5NzksMjYwMzQsMjYwMzUsMjYyOTMsMjYyODgsMjYyODEsMjYyOTAsMjYyOTUsMjYyODIsMjYyODcsMjcxMzYsMjcxNDIsMjcxNTksMjcxMDks''@;'; put 'put ''MjcxMjgsMjcxNTcsMjcxMjEsMjcxMDgsMjcxNjgsMjcxMzUsMjcxMTYsMjcxMDYsMjcxNjMsMjcxNjUsMjcxMzQsMjcxNzUsMjcxMjIsMjcxMTgsMjcxNTYsMjcxMjcsMjcxMTEsMjcyMDAsMjcxNDQsMjcxMTAsMjcxMzEsMjcxNDksMjcxMzIsMjcxMTUsMjcxNDUsMjcxNDAsMjcxNjAsMjcx''@;'; put 'put ''NzMsMjcxNTEsMjcxMjYsMjcxNzQsMjcxNDMsMjcxMjQsMjcxNTgsMjc0NzMsMjc1NTcsMjc1NTUsMjc1NTQsMjc1NTgsMjc2NDksMjc2NDgsMjc2NDcsMjc2NTAsMjg0ODEsMjg0NTQsMjg1NDIsMjg1NTEsMjg2MTQsMjg1NjIsMjg1NTcsMjg1NTMsMjg1NTYsMjg1MTQsMjg0OTUsMjg1NDks''@;'; put 'put ''Mjg1MDYsMjg1NjYsMjg1MzQsMjg1MjQsMjg1NDYsMjg1MDEsMjg1MzAsMjg0OTgsMjg0OTYsMjg1MDMsMjg1NjQsMjg1NjMsMjg1MDksMjg0MTYsMjg1MTMsMjg1MjMsMjg1NDEsMjg1MTksMjg1NjAsMjg0OTksMjg1NTUsMjg1MjEsMjg1NDMsMjg1NjUsMjg1MTUsMjg1MzUsMjg1MjIsMjg1''@;'; put 'put ''MzksMjkxMDYsMjkxMDMsMjkwODMsMjkxMDQsMjkwODgsMjkwODIsMjkwOTcsMjkxMDksMjkwODUsMjkwOTMsMjkwODYsMjkwOTIsMjkwODksMjkwOTgsMjkwODQsMjkwOTUsMjkxMDcsMjkzMzYsMjkzMzgsMjk1MjgsMjk1MjIsMjk1MzQsMjk1MzUsMjk1MzYsMjk1MzMsMjk1MzEsMjk1Mzcs''@;'; put 'put ''Mjk1MzAsMjk1MjksMjk1MzgsMjk4MzEsMjk4MzMsMjk4MzQsMjk4MzAsMjk4MjUsMjk4MjEsMjk4MjksMjk4MzIsMjk4MjAsMjk4MTcsMjk5NjAsMjk5NTksMzAwNzgsMzAyNDUsMzAyMzgsMzAyMzMsMzAyMzcsMzAyMzYsMzAyNDMsMzAyMzQsMzAyNDgsMzAyMzUsMzAzNjQsMzAzNjUsMzAz''@;'; put 'put ''NjYsMzAzNjMsMzA2MDUsMzA2MDcsMzA2MDEsMzA2MDAsMzA5MjUsMzA5MDcsMzA5MjcsMzA5MjQsMzA5MjksMzA5MjYsMzA5MzIsMzA5MjAsMzA5MTUsMzA5MTYsMzA5MjEsMzExMzAsMzExMzcsMzExMzYsMzExMzIsMzExMzgsMzExMzEsMjc1MTAsMzEyODksMzE0MTAsMzE0MTIsMzE0MTEs''@;'; put 'put ''MzE2NzEsMzE2OTEsMzE2NzgsMzE2NjAsMzE2OTQsMzE2NjMsMzE2NzMsMzE2OTAsMzE2NjksMzE5NDEsMzE5NDQsMzE5NDgsMzE5NDcsMzIyNDcsMzIyMTksMzIyMzQsMzIyMzEsMzIyMTUsMzIyMjUsMzIyNTksMzIyNTAsMzIyMzAsMzIyNDYsMzIyNDEsMzIyNDAsMzIyMzgsMzIyMjMsMzI2''@;'; put 'put ''MzAsMzI2ODQsMzI2ODgsMzI2ODUsMzI3NDksMzI3NDcsMzI3NDYsMzI3NDgsMzI3NDIsMzI3NDQsMzI4NjgsMzI4NzEsMzMxODcsMzMxODMsMzMxODIsMzMxNzMsMzMxODYsMzMxNzcsMzMxNzUsMzMzMDIsMzMzNTksMzMzNjMsMzMzNjIsMzMzNjAsMzMzNTgsMzMzNjEsMzQwODQsMzQxMDcs''@;'; put 'put ''MzQwNjMsMzQwNDgsMzQwODksMzQwNjIsMzQwNTcsMzQwNjEsMzQwNzksMzQwNTgsMzQwODcsMzQwNzYsMzQwNDMsMzQwOTEsMzQwNDIsMzQwNTYsMzQwNjAsMzQwMzYsMzQwOTAsMzQwMzQsMzQwNjksMzQwMzksMzQwMjcsMzQwMzUsMzQwNDQsMzQwNjYsMzQwMjYsMzQwMjUsMzQwNzAsMzQw''@;'; put 'put ''NDYsMzQwODgsMzQwNzcsMzQwOTQsMzQwNTAsMzQwNDUsMzQwNzgsMzQwMzgsMzQwOTcsMzQwODYsMzQwMjMsMzQwMjQsMzQwMzIsMzQwMzEsMzQwNDEsMzQwNzIsMzQwODAsMzQwOTYsMzQwNTksMzQwNzMsMzQwOTUsMzQ0MDIsMzQ2NDYsMzQ2NTksMzQ2NjAsMzQ2NzksMzQ3ODUsMzQ2NzUs''@;'; put 'put ''MzQ2NDgsMzQ2NDQsMzQ2NTEsMzQ2NDIsMzQ2NTcsMzQ2NTAsMzQ2NDEsMzQ2NTQsMzQ2NjksMzQ2NjYsMzQ2NDAsMzQ2MzgsMzQ2NTUsMzQ2NTMsMzQ2NzEsMzQ2NjgsMzQ2ODIsMzQ2NzAsMzQ2NTIsMzQ2NjEsMzQ2MzksMzQ2ODMsMzQ2NzcsMzQ2NTgsMzQ2NjMsMzQ2NjUsMzQ5MDYsMzUw''@;'; put 'put ''NzcsMzUwODQsMzUwOTIsMzUwODMsMzUwOTUsMzUwOTYsMzUwOTcsMzUwNzgsMzUwOTQsMzUwODksMzUwODYsMzUwODEsMzUyMzQsMzUyMzYsMzUyMzUsMzUzMDksMzUzMTIsMzUzMDgsMzU1MzUsMzU1MjYsMzU1MTIsMzU1MzksMzU1MzcsMzU1NDAsMzU1NDEsMzU1MTUsMzU1NDMsMzU1MTgs''@;'; put 'put ''MzU1MjAsMzU1MjUsMzU1NDQsMzU1MjMsMzU1MTQsMzU1MTcsMzU1NDUsMzU5MDIsMzU5MTcsMzU5ODMsMzYwNjksMzYwNjMsMzYwNTcsMzYwNzIsMzYwNTgsMzYwNjEsMzYwNzEsMzYyNTYsMzYyNTIsMzYyNTcsMzYyNTEsMzYzODQsMzYzODcsMzYzODksMzYzODgsMzYzOTgsMzYzNzMsMzYz''@;'; put 'put ''NzksMzYzNzQsMzYzNjksMzYzNzcsMzYzOTAsMzYzOTEsMzYzNzIsMzYzNzAsMzYzNzYsMzYzNzEsMzYzODAsMzYzNzUsMzYzNzgsMzY2NTIsMzY2NDQsMzY2MzIsMzY2MzQsMzY2NDAsMzY2NDMsMzY2MzAsMzY2MzEsMzY5NzksMzY5NzYsMzY5NzUsMzY5NjcsMzY5NzEsMzcxNjcsMzcxNjMs''@;'; put 'put ''MzcxNjEsMzcxNjIsMzcxNzAsMzcxNTgsMzcxNjYsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNDksMzcyNTAsMzcyNTIsMzcyNDgsMzc1ODQsMzc1NzEsMzc1NzIsMzc1NjgsMzc1OTMsMzc1NTgsMzc1ODMsMzc2MTcsMzc1OTksMzc1OTIsMzc2MDksMzc1OTEsMzc1OTcsMzc1ODAsMzc2MTUsMzc1''@;'; put 'put ''NzAsMzc2MDgsMzc1NzgsMzc1NzYsMzc1ODIsMzc2MDYsMzc1ODEsMzc1ODksMzc1NzcsMzc2MDAsMzc1OTgsMzc2MDcsMzc1ODUsMzc1ODcsMzc1NTcsMzc2MDEsMzc1NzQsMzc1NTYsMzgyNjgsMzgzMTYsMzgzMTUsMzgzMTgsMzgzMjAsMzg1NjQsMzg1NjIsMzg2MTEsMzg2NjEsMzg2NjQs''@;'; put 'put ''Mzg2NTgsMzg3NDYsMzg3OTQsMzg3OTgsMzg3OTIsMzg4NjQsMzg4NjMsMzg5NDIsMzg5NDEsMzg5NTAsMzg5NTMsMzg5NTIsMzg5NDQsMzg5MzksMzg5NTEsMzkwOTAsMzkxNzYsMzkxNjIsMzkxODUsMzkxODgsMzkxOTAsMzkxOTEsMzkxODksMzkzODgsMzkzNzMsMzkzNzUsMzkzNzksMzkz''@;'; put 'put ''ODAsMzkzNzQsMzkzNjksMzkzODIsMzkzODQsMzkzNzEsMzkzODMsMzkzNzIsMzk2MDMsMzk2NjAsMzk2NTksMzk2NjcsMzk2NjYsMzk2NjUsMzk3NTAsMzk3NDcsMzk3ODMsMzk3OTYsMzk3OTMsMzk3ODIsMzk3OTgsMzk3OTcsMzk3OTIsMzk3ODQsMzk3ODAsMzk3ODgsNDAxODgsNDAxODYs''@;'; put 'put ''NDAxODksNDAxOTEsNDAxODMsNDAxOTksNDAxOTIsNDAxODUsNDAxODcsNDAyMDAsNDAxOTcsNDAxOTYsNDA1NzksNDA2NTksNDA3MTksNDA3MjAsMjA3NjQsMjA3NTUsMjA3NTksMjA3NjIsMjA3NTMsMjA5NTgsMjEzMDAsMjE0NzMsMjIxMjgsMjIxMTIsMjIxMjYsMjIxMzEsMjIxMTgsMjIx''@;'; put 'put ''MTUsMjIxMjUsMjIxMzAsMjIxMTAsMjIxMzUsMjIzMDAsMjIyOTksMjI3MjgsMjI3MTcsMjI3MjksMjI3MTksMjI3MTQsMjI3MjIsMjI3MTYsMjI3MjYsMjMzMTksMjMzMjEsMjMzMjMsMjMzMjksMjMzMTYsMjMzMTUsMjMzMTIsMjMzMTgsMjMzMzYsMjMzMjIsMjMzMjgsMjMzMjYsMjM1MzUs''@;'; put 'put ''MjM5ODAsMjM5ODUsMjM5NzcsMjM5NzUsMjM5ODksMjM5ODQsMjM5ODIsMjM5NzgsMjM5NzYsMjM5ODYsMjM5ODEsMjM5ODMsMjM5ODgsMjQxNjcsMjQxNjgsMjQxNjYsMjQxNzUsMjQyOTcsMjQyOTUsMjQyOTQsMjQyOTYsMjQyOTMsMjQzOTUsMjQ1MDgsMjQ5ODksMjVlMywyNDk4MiwyNTAy''@;'; put 'put ''OSwyNTAxMiwyNTAzMCwyNTAyNSwyNTAzNiwyNTAxOCwyNTAyMywyNTAxNiwyNDk3MiwyNTgxNSwyNTgxNCwyNTgwOCwyNTgwNywyNTgwMSwyNTc4OSwyNTczNywyNTc5NSwyNTgxOSwyNTg0MywyNTgxNywyNTkwNywyNTk4MywyNTk4MCwyNjAxOCwyNjMxMiwyNjMwMiwyNjMwNCwyNjMxNCwy''@;'; put 'put ''NjMxNSwyNjMxOSwyNjMwMSwyNjI5OSwyNjI5OCwyNjMxNiwyNjQwMywyNzE4OCwyNzIzOCwyNzIwOSwyNzIzOSwyNzE4NiwyNzI0MCwyNzE5OCwyNzIyOSwyNzI0NSwyNzI1NCwyNzIyNywyNzIxNywyNzE3NiwyNzIyNiwyNzE5NSwyNzE5OSwyNzIwMSwyNzI0MiwyNzIzNiwyNzIxNiwyNzIx''@;'; put 'put ''NSwyNzIyMCwyNzI0NywyNzI0MSwyNzIzMiwyNzE5NiwyNzIzMCwyNzIyMiwyNzIyMSwyNzIxMywyNzIxNCwyNzIwNiwyNzQ3NywyNzQ3NiwyNzQ3OCwyNzU1OSwyNzU2MiwyNzU2MywyNzU5MiwyNzU5MSwyNzY1MiwyNzY1MSwyNzY1NCwyODU4OSwyODYxOSwyODU3OSwyODYxNSwyODYwNCwy''@;'; put 'put ''ODYyMiwyODYxNiwyODUxMCwyODYxMiwyODYwNSwyODU3NCwyODYxOCwyODU4NCwyODY3NiwyODU4MSwyODU5MCwyODYwMiwyODU4OCwyODU4NiwyODYyMywyODYwNywyODYwMCwyODU3OCwyODYxNywyODU4NywyODYyMSwyODU5MSwyODU5NCwyODU5MiwyOTEyNSwyOTEyMiwyOTExOSwyOTEx''@;'; put 'put ''MiwyOTE0MiwyOTEyMCwyOTEyMSwyOTEzMSwyOTE0MCwyOTEzMCwyOTEyNywyOTEzNSwyOTExNywyOTE0NCwyOTExNiwyOTEyNiwyOTE0NiwyOTE0NywyOTM0MSwyOTM0MiwyOTU0NSwyOTU0MiwyOTU0MywyOTU0OCwyOTU0MSwyOTU0NywyOTU0NiwyOTgyMywyOTg1MCwyOTg1NiwyOTg0NCwy''@;'; put 'put ''OTg0MiwyOTg0NSwyOTg1NywyOTk2MywzMDA4MCwzMDI1NSwzMDI1MywzMDI1NywzMDI2OSwzMDI1OSwzMDI2OCwzMDI2MSwzMDI1OCwzMDI1NiwzMDM5NSwzMDQzOCwzMDYxOCwzMDYyMSwzMDYyNSwzMDYyMCwzMDYxOSwzMDYyNiwzMDYyNywzMDYxMywzMDYxNywzMDYxNSwzMDk0MSwzMDk1''@;'; put 'put ''MywzMDk0OSwzMDk1NCwzMDk0MiwzMDk0NywzMDkzOSwzMDk0NSwzMDk0NiwzMDk1NywzMDk0MywzMDk0NCwzMTE0MCwzMTMwMCwzMTMwNCwzMTMwMywzMTQxNCwzMTQxNiwzMTQxMywzMTQwOSwzMTQxNSwzMTcxMCwzMTcxNSwzMTcxOSwzMTcwOSwzMTcwMSwzMTcxNywzMTcwNiwzMTcyMCwz''@;'; put 'put ''MTczNywzMTcwMCwzMTcyMiwzMTcxNCwzMTcwOCwzMTcyMywzMTcwNCwzMTcxMSwzMTk1NCwzMTk1NiwzMTk1OSwzMTk1MiwzMTk1MywzMjI3NCwzMjI4OSwzMjI3OSwzMjI2OCwzMjI4NywzMjI4OCwzMjI3NSwzMjI3MCwzMjI4NCwzMjI3NywzMjI4MiwzMjI5MCwzMjI2NywzMjI3MSwzMjI3''@;'; put 'put ''OCwzMjI2OSwzMjI3NiwzMjI5MywzMjI5MiwzMjU3OSwzMjYzNSwzMjYzNiwzMjYzNCwzMjY4OSwzMjc1MSwzMjgxMCwzMjgwOSwzMjg3NiwzMzIwMSwzMzE5MCwzMzE5OCwzMzIwOSwzMzIwNSwzMzE5NSwzMzIwMCwzMzE5NiwzMzIwNCwzMzIwMiwzMzIwNywzMzE5MSwzMzI2NiwzMzM2NSwz''@;'; put 'put ''MzM2NiwzMzM2NywzNDEzNCwzNDExNywzNDE1NSwzNDEyNSwzNDEzMSwzNDE0NSwzNDEzNiwzNDExMiwzNDExOCwzNDE0OCwzNDExMywzNDE0NiwzNDExNiwzNDEyOSwzNDExOSwzNDE0NywzNDExMCwzNDEzOSwzNDE2MSwzNDEyNiwzNDE1OCwzNDE2NSwzNDEzMywzNDE1MSwzNDE0NCwzNDE4''@;'; put 'put ''OCwzNDE1MCwzNDE0MSwzNDEzMiwzNDE0OSwzNDE1NiwzNDQwMywzNDQwNSwzNDQwNCwzNDcxNSwzNDcwMywzNDcxMSwzNDcwNywzNDcwNiwzNDY5NiwzNDY4OSwzNDcxMCwzNDcxMiwzNDY4MSwzNDY5NSwzNDcyMywzNDY5MywzNDcwNCwzNDcwNSwzNDcxNywzNDY5MiwzNDcwOCwzNDcxNiwz''@;'; put 'put ''NDcxNCwzNDY5NywzNTEwMiwzNTExMCwzNTEyMCwzNTExNywzNTExOCwzNTExMSwzNTEyMSwzNTEwNiwzNTExMywzNTEwNywzNTExOSwzNTExNiwzNTEwMywzNTMxMywzNTU1MiwzNTU1NCwzNTU3MCwzNTU3MiwzNTU3MywzNTU0OSwzNTYwNCwzNTU1NiwzNTU1MSwzNTU2OCwzNTUyOCwzNTU1''@;'; put 'put ''MCwzNTU1MywzNTU2MCwzNTU4MywzNTU2NywzNTU3OSwzNTk4NSwzNTk4NiwzNTk4NCwzNjA4NSwzNjA3OCwzNjA4MSwzNjA4MCwzNjA4MywzNjIwNCwzNjIwNiwzNjI2MSwzNjI2MywzNjQwMywzNjQxNCwzNjQwOCwzNjQxNiwzNjQyMSwzNjQwNiwzNjQxMiwzNjQxMywzNjQxNywzNjQwMCwz''@;'; put 'put ''NjQxNSwzNjU0MSwzNjY2MiwzNjY1NCwzNjY2MSwzNjY1OCwzNjY2NSwzNjY2MywzNjY2MCwzNjk4MiwzNjk4NSwzNjk4NywzNjk5OCwzNzExNCwzNzE3MSwzNzE3MywzNzE3NCwzNzI2NywzNzI2NCwzNzI2NSwzNzI2MSwzNzI2MywzNzY3MSwzNzY2MiwzNzY0MCwzNzY2MywzNzYzOCwzNzY0''@;'; put 'put ''NywzNzc1NCwzNzY4OCwzNzY5MiwzNzY1OSwzNzY2NywzNzY1MCwzNzYzMywzNzcwMiwzNzY3NywzNzY0NiwzNzY0NSwzNzU3OSwzNzY2MSwzNzYyNiwzNzY2OSwzNzY1MSwzNzYyNSwzNzYyMywzNzY4NCwzNzYzNCwzNzY2OCwzNzYzMSwzNzY3MywzNzY4OSwzNzY4NSwzNzY3NCwzNzY1Miwz''@;'; put 'put ''NzY0NCwzNzY0MywzNzYzMCwzNzY0MSwzNzYzMiwzNzYyNywzNzY1NCwzODMzMiwzODM0OSwzODMzNCwzODMyOSwzODMzMCwzODMyNiwzODMzNSwzODMyNSwzODMzMywzODU2OSwzODYxMiwzODY2NywzODY3NCwzODY3MiwzODgwOSwzODgwNywzODgwNCwzODg5NiwzODkwNCwzODk2NSwzODk1''@;'; put 'put ''OSwzODk2MiwzOTIwNCwzOTE5OSwzOTIwNywzOTIwOSwzOTMyNiwzOTQwNiwzOTQwNCwzOTM5NywzOTM5NiwzOTQwOCwzOTM5NSwzOTQwMiwzOTQwMSwzOTM5OSwzOTYwOSwzOTYxNSwzOTYwNCwzOTYxMSwzOTY3MCwzOTY3NCwzOTY3MywzOTY3MSwzOTczMSwzOTgwOCwzOTgxMywzOTgxNSwz''@;'; put 'put ''OTgwNCwzOTgwNiwzOTgwMywzOTgxMCwzOTgyNywzOTgyNiwzOTgyNCwzOTgwMiwzOTgyOSwzOTgwNSwzOTgxNiw0MDIyOSw0MDIxNSw0MDIyNCw0MDIyMiw0MDIxMiw0MDIzMyw0MDIyMSw0MDIxNiw0MDIyNiw0MDIwOCw0MDIxNyw0MDIyMyw0MDU4NCw0MDU4Miw0MDU4Myw0MDYyMiw0MDYy''@;'; put 'put ''MSw0MDY2MSw0MDY2Miw0MDY5OCw0MDcyMiw0MDc2NSwyMDc3NCwyMDc3MywyMDc3MCwyMDc3MiwyMDc2OCwyMDc3NywyMTIzNiwyMjE2MywyMjE1NiwyMjE1NywyMjE1MCwyMjE0OCwyMjE0NywyMjE0MiwyMjE0NiwyMjE0MywyMjE0NSwyMjc0MiwyMjc0MCwyMjczNSwyMjczOCwyMzM0MSwy''@;'; put 'put ''MzMzMywyMzM0NiwyMzMzMSwyMzM0MCwyMzMzNSwyMzMzNCwyMzM0MywyMzM0MiwyMzQxOSwyMzUzNywyMzUzOCwyMzk5MSwyNDE3MiwyNDE3MCwyNDUxMCwyNDUwNywyNTAyNywyNTAxMywyNTAyMCwyNTA2MywyNTA1NiwyNTA2MSwyNTA2MCwyNTA2NCwyNTA1NCwyNTgzOSwyNTgzMywyNTgy''@;'; put 'put ''NywyNTgzNSwyNTgyOCwyNTgzMiwyNTk4NSwyNTk4NCwyNjAzOCwyNjA3NCwyNjMyMiwyNzI3NywyNzI4NiwyNzI2NSwyNzMwMSwyNzI3MywyNzI5NSwyNzI5MSwyNzI5NywyNzI5NCwyNzI3MSwyNzI4MywyNzI3OCwyNzI4NSwyNzI2NywyNzMwNCwyNzMwMCwyNzI4MSwyNzI2MywyNzMwMiwy''@;'; put 'put ''NzI5MCwyNzI2OSwyNzI3NiwyNzI4MiwyNzQ4MywyNzU2NSwyNzY1NywyODYyMCwyODU4NSwyODY2MCwyODYyOCwyODY0MywyODYzNiwyODY1MywyODY0NywyODY0NiwyODYzOCwyODY1OCwyODYzNywyODY0MiwyODY0OCwyOTE1MywyOTE2OSwyOTE2MCwyOTE3MCwyOTE1NiwyOTE2OCwyOTE1''@;'; put 'put ''NCwyOTU1NSwyOTU1MCwyOTU1MSwyOTg0NywyOTg3NCwyOTg2NywyOTg0MCwyOTg2NiwyOTg2OSwyOTg3MywyOTg2MSwyOTg3MSwyOTk2OCwyOTk2OSwyOTk3MCwyOTk2NywzMDA4NCwzMDI3NSwzMDI4MCwzMDI4MSwzMDI3OSwzMDM3MiwzMDQ0MSwzMDY0NSwzMDYzNSwzMDY0MiwzMDY0Nywz''@;'; put 'put ''MDY0NiwzMDY0NCwzMDY0MSwzMDYzMiwzMDcwNCwzMDk2MywzMDk3MywzMDk3OCwzMDk3MSwzMDk3MiwzMDk2MiwzMDk4MSwzMDk2OSwzMDk3NCwzMDk4MCwzMTE0NywzMTE0NCwzMTMyNCwzMTMyMywzMTMxOCwzMTMyMCwzMTMxNiwzMTMyMiwzMTQyMiwzMTQyNCwzMTQyNSwzMTc0OSwzMTc1''@;'; put 'put ''OSwzMTczMCwzMTc0NCwzMTc0MywzMTczOSwzMTc1OCwzMTczMiwzMTc1NSwzMTczMSwzMTc0NiwzMTc1MywzMTc0NywzMTc0NSwzMTczNiwzMTc0MSwzMTc1MCwzMTcyOCwzMTcyOSwzMTc2MCwzMTc1NCwzMTk3NiwzMjMwMSwzMjMxNiwzMjMyMiwzMjMwNywzODk4NCwzMjMxMiwzMjI5OCwz''@;'; put 'put ''MjMyOSwzMjMyMCwzMjMyNywzMjI5NywzMjMzMiwzMjMwNCwzMjMxNSwzMjMxMCwzMjMyNCwzMjMxNCwzMjU4MSwzMjYzOSwzMjYzOCwzMjYzNywzMjc1NiwzMjc1NCwzMjgxMiwzMzIxMSwzMzIyMCwzMzIyOCwzMzIyNiwzMzIyMSwzMzIyMywzMzIxMiwzMzI1NywzMzM3MSwzMzM3MCwzMzM3''@;'; put 'put ''MiwzNDE3OSwzNDE3NiwzNDE5MSwzNDIxNSwzNDE5NywzNDIwOCwzNDE4NywzNDIxMSwzNDE3MSwzNDIxMiwzNDIwMiwzNDIwNiwzNDE2NywzNDE3MiwzNDE4NSwzNDIwOSwzNDE3MCwzNDE2OCwzNDEzNSwzNDE5MCwzNDE5OCwzNDE4MiwzNDE4OSwzNDIwMSwzNDIwNSwzNDE3NywzNDIxMCwz''@;'; put 'put ''NDE3OCwzNDE4NCwzNDE4MSwzNDE2OSwzNDE2NiwzNDIwMCwzNDE5MiwzNDIwNywzNDQwOCwzNDc1MCwzNDczMCwzNDczMywzNDc1NywzNDczNiwzNDczMiwzNDc0NSwzNDc0MSwzNDc0OCwzNDczNCwzNDc2MSwzNDc1NSwzNDc1NCwzNDc2NCwzNDc0MywzNDczNSwzNDc1NiwzNDc2MiwzNDc0''@;'; put 'put ''MCwzNDc0MiwzNDc1MSwzNDc0NCwzNDc0OSwzNDc4MiwzNDczOCwzNTEyNSwzNTEyMywzNTEzMiwzNTEzNCwzNTEzNywzNTE1NCwzNTEyNywzNTEzOCwzNTI0NSwzNTI0NywzNTI0NiwzNTMxNCwzNTMxNSwzNTYxNCwzNTYwOCwzNTYwNiwzNTYwMSwzNTU4OSwzNTU5NSwzNTYxOCwzNTU5OSwz''@;'; put 'put ''NTYwMiwzNTYwNSwzNTU5MSwzNTU5NywzNTU5MiwzNTU5MCwzNTYxMiwzNTYwMywzNTYxMCwzNTkxOSwzNTk1MiwzNTk1NCwzNTk1MywzNTk1MSwzNTk4OSwzNTk4OCwzNjA4OSwzNjIwNywzNjQzMCwzNjQyOSwzNjQzNSwzNjQzMiwzNjQyOCwzNjQyMywzNjY3NSwzNjY3MiwzNjk5NywzNjk5''@;'; put 'put ''MCwzNzE3NiwzNzI3NCwzNzI4MiwzNzI3NSwzNzI3MywzNzI3OSwzNzI4MSwzNzI3NywzNzI4MCwzNzc5MywzNzc2MywzNzgwNywzNzczMiwzNzcxOCwzNzcwMywzNzc1NiwzNzcyMCwzNzcyNCwzNzc1MCwzNzcwNSwzNzcxMiwzNzcxMywzNzcyOCwzNzc0MSwzNzc3NSwzNzcwOCwzNzczOCwz''@;'; put 'put ''Nzc1MywzNzcxOSwzNzcxNywzNzcxNCwzNzcxMSwzNzc0NSwzNzc1MSwzNzc1NSwzNzcyOSwzNzcyNiwzNzczMSwzNzczNSwzNzc2MCwzNzcxMCwzNzcyMSwzODM0MywzODMzNiwzODM0NSwzODMzOSwzODM0MSwzODMyNywzODU3NCwzODU3NiwzODU3MiwzODY4OCwzODY4NywzODY4MCwzODY4''@;'; put 'put ''NSwzODY4MSwzODgxMCwzODgxNywzODgxMiwzODgxNCwzODgxMywzODg2OSwzODg2OCwzODg5NywzODk3NywzODk4MCwzODk4NiwzODk4NSwzODk4MSwzODk3OSwzOTIwNSwzOTIxMSwzOTIxMiwzOTIxMCwzOTIxOSwzOTIxOCwzOTIxNSwzOTIxMywzOTIxNywzOTIxNiwzOTMyMCwzOTMzMSwz''@;'; put 'put ''OTMyOSwzOTQyNiwzOTQxOCwzOTQxMiwzOTQxNSwzOTQxNywzOTQxNiwzOTQxNCwzOTQxOSwzOTQyMSwzOTQyMiwzOTQyMCwzOTQyNywzOTYxNCwzOTY3OCwzOTY3NywzOTY4MSwzOTY3NiwzOTc1MiwzOTgzNCwzOTg0OCwzOTgzOCwzOTgzNSwzOTg0NiwzOTg0MSwzOTg0NSwzOTg0NCwzOTgx''@;'; put 'put ''NCwzOTg0MiwzOTg0MCwzOTg1NSw0MDI0Myw0MDI1Nyw0MDI5NSw0MDI0Niw0MDIzOCw0MDIzOSw0MDI0MSw0MDI0OCw0MDI0MCw0MDI2MSw0MDI1OCw0MDI1OSw0MDI1NCw0MDI0Nyw0MDI1Niw0MDI1MywzMjc1Nyw0MDIzNyw0MDU4Niw0MDU4NSw0MDU4OSw0MDYyNCw0MDY0OCw0MDY2Niw0''@;'; put 'put ''MDY5OSw0MDcwMyw0MDc0MCw0MDczOSw0MDczOCw0MDc4OCw0MDg2NCwyMDc4NSwyMDc4MSwyMDc4MiwyMjE2OCwyMjE3MiwyMjE2NywyMjE3MCwyMjE3MywyMjE2OSwyMjg5NiwyMzM1NiwyMzY1NywyMzY1OCwyNGUzLDI0MTczLDI0MTc0LDI1MDQ4LDI1MDU1LDI1MDY5LDI1MDcwLDI1MDcz''@;'; put 'put ''LDI1MDY2LDI1MDcyLDI1MDY3LDI1MDQ2LDI1MDY1LDI1ODU1LDI1ODYwLDI1ODUzLDI1ODQ4LDI1ODU3LDI1ODU5LDI1ODUyLDI2MDA0LDI2MDc1LDI2MzMwLDI2MzMxLDI2MzI4LDI3MzMzLDI3MzIxLDI3MzI1LDI3MzYxLDI3MzM0LDI3MzIyLDI3MzE4LDI3MzE5LDI3MzM1LDI3MzE2LDI3''@;'; put 'put ''MzA5LDI3NDg2LDI3NTkzLDI3NjU5LDI4Njc5LDI4Njg0LDI4Njg1LDI4NjczLDI4Njc3LDI4NjkyLDI4Njg2LDI4NjcxLDI4NjcyLDI4NjY3LDI4NzEwLDI4NjY4LDI4NjYzLDI4NjgyLDI5MTg1LDI5MTgzLDI5MTc3LDI5MTg3LDI5MTgxLDI5NTU4LDI5ODgwLDI5ODg4LDI5ODc3LDI5ODg5''@;'; put 'put ''LDI5ODg2LDI5ODc4LDI5ODgzLDI5ODkwLDI5OTcyLDI5OTcxLDMwMzAwLDMwMzA4LDMwMjk3LDMwMjg4LDMwMjkxLDMwMjk1LDMwMjk4LDMwMzc0LDMwMzk3LDMwNDQ0LDMwNjU4LDMwNjUwLDMwOTc1LDMwOTg4LDMwOTk1LDMwOTk2LDMwOTg1LDMwOTkyLDMwOTk0LDMwOTkzLDMxMTQ5LDMx''@;'; put 'put ''MTQ4LDMxMzI3LDMxNzcyLDMxNzg1LDMxNzY5LDMxNzc2LDMxNzc1LDMxNzg5LDMxNzczLDMxNzgyLDMxNzg0LDMxNzc4LDMxNzgxLDMxNzkyLDMyMzQ4LDMyMzM2LDMyMzQyLDMyMzU1LDMyMzQ0LDMyMzU0LDMyMzUxLDMyMzM3LDMyMzUyLDMyMzQzLDMyMzM5LDMyNjkzLDMyNjkxLDMyNzU5''@;'; put 'put ''LDMyNzYwLDMyODg1LDMzMjMzLDMzMjM0LDMzMjMyLDMzMzc1LDMzMzc0LDM0MjI4LDM0MjQ2LDM0MjQwLDM0MjQzLDM0MjQyLDM0MjI3LDM0MjI5LDM0MjM3LDM0MjQ3LDM0MjQ0LDM0MjM5LDM0MjUxLDM0MjU0LDM0MjQ4LDM0MjQ1LDM0MjI1LDM0MjMwLDM0MjU4LDM0MzQwLDM0MjMyLDM0''@;'; put 'put ''MjMxLDM0MjM4LDM0NDA5LDM0NzkxLDM0NzkwLDM0Nzg2LDM0Nzc5LDM0Nzk1LDM0Nzk0LDM0Nzg5LDM0NzgzLDM0ODAzLDM0Nzg4LDM0NzcyLDM0NzgwLDM0NzcxLDM0Nzk3LDM0Nzc2LDM0Nzg3LDM0NzI0LDM0Nzc1LDM0Nzc3LDM0ODE3LDM0ODA0LDM0NzkyLDM0NzgxLDM1MTU1LDM1MTQ3''@;'; put 'put ''LDM1MTUxLDM1MTQ4LDM1MTQyLDM1MTUyLDM1MTUzLDM1MTQ1LDM1NjI2LDM1NjIzLDM1NjE5LDM1NjM1LDM1NjMyLDM1NjM3LDM1NjU1LDM1NjMxLDM1NjQ0LDM1NjQ2LDM1NjMzLDM1NjIxLDM1NjM5LDM1NjIyLDM1NjM4LDM1NjMwLDM1NjIwLDM1NjQzLDM1NjQ1LDM1NjQyLDM1OTA2LDM1''@;'; put 'put ''OTU3LDM1OTkzLDM1OTkyLDM1OTkxLDM2MDk0LDM2MTAwLDM2MDk4LDM2MDk2LDM2NDQ0LDM2NDUwLDM2NDQ4LDM2NDM5LDM2NDM4LDM2NDQ2LDM2NDUzLDM2NDU1LDM2NDQzLDM2NDQyLDM2NDQ5LDM2NDQ1LDM2NDU3LDM2NDM2LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgzLDM3MTYwLDM3MTc4''@;'; put 'put ''LDM3MTc5LDM3MTgyLDM3Mjg4LDM3Mjg1LDM3Mjg3LDM3Mjk1LDM3MjkwLDM3ODEzLDM3NzcyLDM3Nzc4LDM3ODE1LDM3Nzg3LDM3Nzg5LDM3NzY5LDM3Nzk5LDM3Nzc0LDM3ODAyLDM3NzkwLDM3Nzk4LDM3NzgxLDM3NzY4LDM3Nzg1LDM3NzkxLDM3NzczLDM3ODA5LDM3Nzc3LDM3ODEwLDM3''@;'; put 'put ''Nzk2LDM3ODAwLDM3ODEyLDM3Nzk1LDM3Nzk3LDM4MzU0LDM4MzU1LDM4MzUzLDM4NTc5LDM4NjE1LDM4NjE4LDI0MDAyLDM4NjIzLDM4NjE2LDM4NjIxLDM4NjkxLDM4NjkwLDM4NjkzLDM4ODI4LDM4ODMwLDM4ODI0LDM4ODI3LDM4ODIwLDM4ODI2LDM4ODE4LDM4ODIxLDM4ODcxLDM4ODcz''@;'; put 'put ''LDM4ODcwLDM4ODcyLDM4OTA2LDM4OTkyLDM4OTkzLDM4OTk0LDM5MDk2LDM5MjMzLDM5MjI4LDM5MjI2LDM5NDM5LDM5NDM1LDM5NDMzLDM5NDM3LDM5NDI4LDM5NDQxLDM5NDM0LDM5NDI5LDM5NDMxLDM5NDMwLDM5NjE2LDM5NjQ0LDM5Njg4LDM5Njg0LDM5Njg1LDM5NzIxLDM5NzMzLDM5''@;'; put 'put ''NzU0LDM5NzU2LDM5NzU1LDM5ODc5LDM5ODc4LDM5ODc1LDM5ODcxLDM5ODczLDM5ODYxLDM5ODY0LDM5ODkxLDM5ODYyLDM5ODc2LDM5ODY1LDM5ODY5LDQwMjg0LDQwMjc1LDQwMjcxLDQwMjY2LDQwMjgzLDQwMjY3LDQwMjgxLDQwMjc4LDQwMjY4LDQwMjc5LDQwMjc0LDQwMjc2LDQwMjg3''@;'; put 'put ''LDQwMjgwLDQwMjgyLDQwNTkwLDQwNTg4LDQwNjcxLDQwNzA1LDQwNzA0LDQwNzI2LDQwNzQxLDQwNzQ3LDQwNzQ2LDQwNzQ1LDQwNzQ0LDQwNzgwLDQwNzg5LDIwNzg4LDIwNzg5LDIxMTQyLDIxMjM5LDIxNDI4LDIyMTg3LDIyMTg5LDIyMTgyLDIyMTgzLDIyMTg2LDIyMTg4LDIyNzQ2LDIy''@;'; put 'put ''NzQ5LDIyNzQ3LDIyODAyLDIzMzU3LDIzMzU4LDIzMzU5LDI0MDAzLDI0MTc2LDI0NTExLDI1MDgzLDI1ODYzLDI1ODcyLDI1ODY5LDI1ODY1LDI1ODY4LDI1ODcwLDI1OTg4LDI2MDc4LDI2MDc3LDI2MzM0LDI3MzY3LDI3MzYwLDI3MzQwLDI3MzQ1LDI3MzUzLDI3MzM5LDI3MzU5LDI3MzU2''@;'; put 'put ''LDI3MzQ0LDI3MzcxLDI3MzQzLDI3MzQxLDI3MzU4LDI3NDg4LDI3NTY4LDI3NjYwLDI4Njk3LDI4NzExLDI4NzA0LDI4Njk0LDI4NzE1LDI4NzA1LDI4NzA2LDI4NzA3LDI4NzEzLDI4Njk1LDI4NzA4LDI4NzAwLDI4NzE0LDI5MTk2LDI5MTk0LDI5MTkxLDI5MTg2LDI5MTg5LDI5MzQ5LDI5''@;'; put 'put ''MzUwLDI5MzQ4LDI5MzQ3LDI5MzQ1LDI5ODk5LDI5ODkzLDI5ODc5LDI5ODkxLDI5OTc0LDMwMzA0LDMwNjY1LDMwNjY2LDMwNjYwLDMwNzA1LDMxMDA1LDMxMDAzLDMxMDA5LDMxMDA0LDMwOTk5LDMxMDA2LDMxMTUyLDMxMzM1LDMxMzM2LDMxNzk1LDMxODA0LDMxODAxLDMxNzg4LDMxODAz''@;'; put 'put ''LDMxOTgwLDMxOTc4LDMyMzc0LDMyMzczLDMyMzc2LDMyMzY4LDMyMzc1LDMyMzY3LDMyMzc4LDMyMzcwLDMyMzcyLDMyMzYwLDMyNTg3LDMyNTg2LDMyNjQzLDMyNjQ2LDMyNjk1LDMyNzY1LDMyNzY2LDMyODg4LDMzMjM5LDMzMjM3LDMzMzgwLDMzMzc3LDMzMzc5LDM0MjgzLDM0Mjg5LDM0''@;'; put 'put ''Mjg1LDM0MjY1LDM0MjczLDM0MjgwLDM0MjY2LDM0MjYzLDM0Mjg0LDM0MjkwLDM0Mjk2LDM0MjY0LDM0MjcxLDM0Mjc1LDM0MjY4LDM0MjU3LDM0Mjg4LDM0Mjc4LDM0Mjg3LDM0MjcwLDM0Mjc0LDM0ODE2LDM0ODEwLDM0ODE5LDM0ODA2LDM0ODA3LDM0ODI1LDM0ODI4LDM0ODI3LDM0ODIy''@;'; put 'put ''LDM0ODEyLDM0ODI0LDM0ODE1LDM0ODI2LDM0ODE4LDM1MTcwLDM1MTYyLDM1MTYzLDM1MTU5LDM1MTY5LDM1MTY0LDM1MTYwLDM1MTY1LDM1MTYxLDM1MjA4LDM1MjU1LDM1MjU0LDM1MzE4LDM1NjY0LDM1NjU2LDM1NjU4LDM1NjQ4LDM1NjY3LDM1NjcwLDM1NjY4LDM1NjU5LDM1NjY5LDM1''@;'; put 'put ''NjY1LDM1NjUwLDM1NjY2LDM1NjcxLDM1OTA3LDM1OTU5LDM1OTU4LDM1OTk0LDM2MTAyLDM2MTAzLDM2MTA1LDM2MjY4LDM2MjY2LDM2MjY5LDM2MjY3LDM2NDYxLDM2NDcyLDM2NDY3LDM2NDU4LDM2NDYzLDM2NDc1LDM2NTQ2LDM2NjkwLDM2Njg5LDM2Njg3LDM2Njg4LDM2NjkxLDM2Nzg4''@;'; put 'put ''LDM3MTg0LDM3MTgzLDM3Mjk2LDM3MjkzLDM3ODU0LDM3ODMxLDM3ODM5LDM3ODI2LDM3ODUwLDM3ODQwLDM3ODgxLDM3ODY4LDM3ODM2LDM3ODQ5LDM3ODAxLDM3ODYyLDM3ODM0LDM3ODQ0LDM3ODcwLDM3ODU5LDM3ODQ1LDM3ODI4LDM3ODM4LDM3ODI0LDM3ODQyLDM3ODYzLDM4MjY5LDM4''@;'; put 'put ''MzYyLDM4MzYzLDM4NjI1LDM4Njk3LDM4Njk5LDM4NzAwLDM4Njk2LDM4Njk0LDM4ODM1LDM4ODM5LDM4ODM4LDM4ODc3LDM4ODc4LDM4ODc5LDM5MDA0LDM5MDAxLDM5MDA1LDM4OTk5LDM5MTAzLDM5MTAxLDM5MDk5LDM5MTAyLDM5MjQwLDM5MjM5LDM5MjM1LDM5MzM0LDM5MzM1LDM5NDUw''@;'; put 'put ''LDM5NDQ1LDM5NDYxLDM5NDUzLDM5NDYwLDM5NDUxLDM5NDU4LDM5NDU2LDM5NDYzLDM5NDU5LDM5NDU0LDM5NDUyLDM5NDQ0LDM5NjE4LDM5NjkxLDM5NjkwLDM5Njk0LDM5NjkyLDM5NzM1LDM5OTE0LDM5OTE1LDM5OTA0LDM5OTAyLDM5OTA4LDM5OTEwLDM5OTA2LDM5OTIwLDM5ODkyLDM5''@;'; put 'put ''ODk1LDM5OTE2LDM5OTAwLDM5ODk3LDM5OTA5LDM5ODkzLDM5OTA1LDM5ODk4LDQwMzExLDQwMzIxLDQwMzMwLDQwMzI0LDQwMzI4LDQwMzA1LDQwMzIwLDQwMzEyLDQwMzI2LDQwMzMxLDQwMzMyLDQwMzE3LDQwMjk5LDQwMzA4LDQwMzA5LDQwMzA0LDQwMjk3LDQwMzI1LDQwMzA3LDQwMzE1''@;'; put 'put ''LDQwMzIyLDQwMzAzLDQwMzEzLDQwMzE5LDQwMzI3LDQwMjk2LDQwNTk2LDQwNTkzLDQwNjQwLDQwNzAwLDQwNzQ5LDQwNzY4LDQwNzY5LDQwNzgxLDQwNzkwLDQwNzkxLDQwNzkyLDIxMzAzLDIyMTk0LDIyMTk3LDIyMTk1LDIyNzU1LDIzMzY1LDI0MDA2LDI0MDA3LDI0MzAyLDI0MzAzLDI0''@;'; put 'put ''NTEyLDI0NTEzLDI1MDgxLDI1ODc5LDI1ODc4LDI1ODc3LDI1ODc1LDI2MDc5LDI2MzQ0LDI2MzM5LDI2MzQwLDI3Mzc5LDI3Mzc2LDI3MzcwLDI3MzY4LDI3Mzg1LDI3Mzc3LDI3Mzc0LDI3Mzc1LDI4NzMyLDI4NzI1LDI4NzE5LDI4NzI3LDI4NzI0LDI4NzIxLDI4NzM4LDI4NzI4LDI4NzM1''@;'; put 'put ''LDI4NzMwLDI4NzI5LDI4NzM2LDI4NzMxLDI4NzIzLDI4NzM3LDI5MjAzLDI5MjA0LDI5MzUyLDI5NTY1LDI5NTY0LDI5ODgyLDMwMzc5LDMwMzc4LDMwMzk4LDMwNDQ1LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjY5LDMwNzA2LDMxMDEzLDMxMDExLDMxMDE1LDMxMDE2LDMxMDEyLDMxMDE3LDMx''@;'; put 'put ''MTU0LDMxMzQyLDMxMzQwLDMxMzQxLDMxNDc5LDMxODE3LDMxODE2LDMxODE4LDMxODE1LDMxODEzLDMxOTgyLDMyMzc5LDMyMzgyLDMyMzg1LDMyMzg0LDMyNjk4LDMyNzY3LDMyODg5LDMzMjQzLDMzMjQxLDMzMjkxLDMzMzg0LDMzMzg1LDM0MzM4LDM0MzAzLDM0MzA1LDM0MzAyLDM0MzMx''@;'; put 'put ''LDM0MzA0LDM0Mjk0LDM0MzA4LDM0MzEzLDM0MzA5LDM0MzE2LDM0MzAxLDM0ODQxLDM0ODMyLDM0ODMzLDM0ODM5LDM0ODM1LDM0ODM4LDM1MTcxLDM1MTc0LDM1MjU3LDM1MzE5LDM1NjgwLDM1NjkwLDM1Njc3LDM1Njg4LDM1NjgzLDM1Njg1LDM1Njg3LDM1NjkzLDM2MjcwLDM2NDg2LDM2''@;'; put 'put ''NDg4LDM2NDg0LDM2Njk3LDM2Njk0LDM2Njk1LDM2NjkzLDM2Njk2LDM2Njk4LDM3MDA1LDM3MTg3LDM3MTg1LDM3MzAzLDM3MzAxLDM3Mjk4LDM3Mjk5LDM3ODk5LDM3OTA3LDM3ODgzLDM3OTIwLDM3OTAzLDM3OTA4LDM3ODg2LDM3OTA5LDM3OTA0LDM3OTI4LDM3OTEzLDM3OTAxLDM3ODc3''@;'; put 'put ''LDM3ODg4LDM3ODc5LDM3ODk1LDM3OTAyLDM3OTEwLDM3OTA2LDM3ODgyLDM3ODk3LDM3ODgwLDM3ODk4LDM3ODg3LDM3ODg0LDM3OTAwLDM3ODc4LDM3OTA1LDM3ODk0LDM4MzY2LDM4MzY4LDM4MzY3LDM4NzAyLDM4NzAzLDM4ODQxLDM4ODQzLDM4OTA5LDM4OTEwLDM5MDA4LDM5MDEwLDM5''@;'; put 'put ''MDExLDM5MDA3LDM5MTA1LDM5MTA2LDM5MjQ4LDM5MjQ2LDM5MjU3LDM5MjQ0LDM5MjQzLDM5MjUxLDM5NDc0LDM5NDc2LDM5NDczLDM5NDY4LDM5NDY2LDM5NDc4LDM5NDY1LDM5NDcwLDM5NDgwLDM5NDY5LDM5NjIzLDM5NjI2LDM5NjIyLDM5Njk2LDM5Njk4LDM5Njk3LDM5OTQ3LDM5OTQ0''@;'; put 'put ''LDM5OTI3LDM5OTQxLDM5OTU0LDM5OTI4LDRlNCwzOTk0MywzOTk1MCwzOTk0MiwzOTk1OSwzOTk1NiwzOTk0NSw0MDM1MSw0MDM0NSw0MDM1Niw0MDM0OSw0MDMzOCw0MDM0NCw0MDMzNiw0MDM0Nyw0MDM1Miw0MDM0MCw0MDM0OCw0MDM2Miw0MDM0Myw0MDM1Myw0MDM0Niw0MDM1NCw0MDM2''@;'; put 'put ''MCw0MDM1MCw0MDM1NSw0MDM4Myw0MDM2MSw0MDM0Miw0MDM1OCw0MDM1OSw0MDYwMSw0MDYwMyw0MDYwMiw0MDY3Nyw0MDY3Niw0MDY3OSw0MDY3OCw0MDc1Miw0MDc1MCw0MDc5NSw0MDgwMCw0MDc5OCw0MDc5Nyw0MDc5Myw0MDg0OSwyMDc5NCwyMDc5MywyMTE0NCwyMTE0MywyMjIxMSwy''@;'; put 'put ''MjIwNSwyMjIwNiwyMzM2OCwyMzM2NywyNDAxMSwyNDAxNSwyNDMwNSwyNTA4NSwyNTg4MywyNzM5NCwyNzM4OCwyNzM5NSwyNzM4NCwyNzM5MiwyODczOSwyODc0MCwyODc0NiwyODc0NCwyODc0NSwyODc0MSwyODc0MiwyOTIxMywyOTIxMCwyOTIwOSwyOTU2NiwyOTk3NSwzMDMxNCwzMDY3''@;'; put 'put ''MiwzMTAyMSwzMTAyNSwzMTAyMywzMTgyOCwzMTgyNywzMTk4NiwzMjM5NCwzMjM5MSwzMjM5MiwzMjM5NSwzMjM5MCwzMjM5NywzMjU4OSwzMjY5OSwzMjgxNiwzMzI0NSwzNDMyOCwzNDM0NiwzNDM0MiwzNDMzNSwzNDMzOSwzNDMzMiwzNDMyOSwzNDM0MywzNDM1MCwzNDMzNywzNDMzNiwz''@;'; put 'put ''NDM0NSwzNDMzNCwzNDM0MSwzNDg1NywzNDg0NSwzNDg0MywzNDg0OCwzNDg1MiwzNDg0NCwzNDg1OSwzNDg5MCwzNTE4MSwzNTE3NywzNTE4MiwzNTE3OSwzNTMyMiwzNTcwNSwzNTcwNCwzNTY1MywzNTcwNiwzNTcwNywzNjExMiwzNjExNiwzNjI3MSwzNjQ5NCwzNjQ5MiwzNjcwMiwzNjY5''@;'; put 'put ''OSwzNjcwMSwzNzE5MCwzNzE4OCwzNzE4OSwzNzMwNSwzNzk1MSwzNzk0NywzNzk0MiwzNzkyOSwzNzk0OSwzNzk0OCwzNzkzNiwzNzk0NSwzNzkzMCwzNzk0MywzNzkzMiwzNzk1MiwzNzkzNywzODM3MywzODM3MiwzODM3MSwzODcwOSwzODcxNCwzODg0NywzODg4MSwzOTAxMiwzOTExMywz''@;'; put 'put ''OTExMCwzOTEwNCwzOTI1NiwzOTI1NCwzOTQ4MSwzOTQ4NSwzOTQ5NCwzOTQ5MiwzOTQ5MCwzOTQ4OSwzOTQ4MiwzOTQ4NywzOTYyOSwzOTcwMSwzOTcwMywzOTcwNCwzOTcwMiwzOTczOCwzOTc2MiwzOTk3OSwzOTk2NSwzOTk2NCwzOTk4MCwzOTk3MSwzOTk3NiwzOTk3NywzOTk3MiwzOTk2''@;'; put 'put ''OSw0MDM3NSw0MDM3NCw0MDM4MCw0MDM4NSw0MDM5MSw0MDM5NCw0MDM5OSw0MDM4Miw0MDM4OSw0MDM4Nyw0MDM3OSw0MDM3Myw0MDM5OCw0MDM3Nyw0MDM3OCw0MDM2NCw0MDM5Miw0MDM2OSw0MDM2NSw0MDM5Niw0MDM3MSw0MDM5Nyw0MDM3MCw0MDU3MCw0MDYwNCw0MDY4Myw0MDY4Niw0''@;'; put 'put ''MDY4NSw0MDczMSw0MDcyOCw0MDczMCw0MDc1Myw0MDc4Miw0MDgwNSw0MDgwNCw0MDg1MCwyMDE1MywyMjIxNCwyMjIxMywyMjIxOSwyMjg5NywyMzM3MSwyMzM3MiwyNDAyMSwyNDAxNywyNDMwNiwyNTg4OSwyNTg4OCwyNTg5NCwyNTg5MCwyNzQwMywyNzQwMCwyNzQwMSwyNzY2MSwyODc1''@;'; put 'put ''NywyODc1OCwyODc1OSwyODc1NCwyOTIxNCwyOTIxNSwyOTM1MywyOTU2NywyOTkxMiwyOTkwOSwyOTkxMywyOTkxMSwzMDMxNywzMDM4MSwzMTAyOSwzMTE1NiwzMTM0NCwzMTM0NSwzMTgzMSwzMTgzNiwzMTgzMywzMTgzNSwzMTgzNCwzMTk4OCwzMTk4NSwzMjQwMSwzMjU5MSwzMjY0Nywz''@;'; put 'put ''MzI0NiwzMzM4NywzNDM1NiwzNDM1NywzNDM1NSwzNDM0OCwzNDM1NCwzNDM1OCwzNDg2MCwzNDg1NiwzNDg1NCwzNDg1OCwzNDg1MywzNTE4NSwzNTI2MywzNTI2MiwzNTMyMywzNTcxMCwzNTcxNiwzNTcxNCwzNTcxOCwzNTcxNywzNTcxMSwzNjExNywzNjUwMSwzNjUwMCwzNjUwNiwzNjQ5''@;'; put 'put ''OCwzNjQ5NiwzNjUwMiwzNjUwMywzNjcwNCwzNjcwNiwzNzE5MSwzNzk2NCwzNzk2OCwzNzk2MiwzNzk2MywzNzk2NywzNzk1OSwzNzk1NywzNzk2MCwzNzk2MSwzNzk1OCwzODcxOSwzODg4MywzOTAxOCwzOTAxNywzOTExNSwzOTI1MiwzOTI1OSwzOTUwMiwzOTUwNywzOTUwOCwzOTUwMCwz''@;'; put 'put ''OTUwMywzOTQ5NiwzOTQ5OCwzOTQ5NywzOTUwNiwzOTUwNCwzOTYzMiwzOTcwNSwzOTcyMywzOTczOSwzOTc2NiwzOTc2NSw0MDAwNiw0MDAwOCwzOTk5OSw0MDAwNCwzOTk5MywzOTk4Nyw0MDAwMSwzOTk5NiwzOTk5MSwzOTk4OCwzOTk4NiwzOTk5NywzOTk5MCw0MDQxMSw0MDQwMiw0MDQx''@;'; put 'put ''NCw0MDQxMCw0MDM5NSw0MDQwMCw0MDQxMiw0MDQwMSw0MDQxNSw0MDQyNSw0MDQwOSw0MDQwOCw0MDQwNiw0MDQzNyw0MDQwNSw0MDQxMyw0MDYzMCw0MDY4OCw0MDc1Nyw0MDc1NSw0MDc1NCw0MDc3MCw0MDgxMSw0MDg1Myw0MDg2NiwyMDc5NywyMTE0NSwyMjc2MCwyMjc1OSwyMjg5OCwy''@;'; put 'put ''MzM3MywyNDAyNCwzNDg2MywyNDM5OSwyNTA4OSwyNTA5MSwyNTA5MiwyNTg5NywyNTg5MywyNjAwNiwyNjM0NywyNzQwOSwyNzQxMCwyNzQwNywyNzU5NCwyODc2MywyODc2MiwyOTIxOCwyOTU3MCwyOTU2OSwyOTU3MSwzMDMyMCwzMDY3NiwzMTg0NywzMTg0NiwzMjQwNSwzMzM4OCwzNDM2''@;'; put 'put ''MiwzNDM2OCwzNDM2MSwzNDM2NCwzNDM1MywzNDM2MywzNDM2NiwzNDg2NCwzNDg2NiwzNDg2MiwzNDg2NywzNTE5MCwzNTE4OCwzNTE4NywzNTMyNiwzNTcyNCwzNTcyNiwzNTcyMywzNTcyMCwzNTkwOSwzNjEyMSwzNjUwNCwzNjcwOCwzNjcwNywzNzMwOCwzNzk4NiwzNzk3MywzNzk4MSwz''@;'; put 'put ''Nzk3NSwzNzk4MiwzODg1MiwzODg1MywzODkxMiwzOTUxMCwzOTUxMywzOTcxMCwzOTcxMSwzOTcxMiw0MDAxOCw0MDAyNCw0MDAxNiw0MDAxMCw0MDAxMyw0MDAxMSw0MDAyMSw0MDAyNSw0MDAxMiw0MDAxNCw0MDQ0Myw0MDQzOSw0MDQzMSw0MDQxOSw0MDQyNyw0MDQ0MCw0MDQyMCw0MDQz''@;'; put 'put ''OCw0MDQxNyw0MDQzMCw0MDQyMiw0MDQzNCw0MDQzMiw0MDQxOCw0MDQyOCw0MDQzNiw0MDQzNSw0MDQyNCw0MDQyOSw0MDY0Miw0MDY1Niw0MDY5MCw0MDY5MSw0MDcxMCw0MDczMiw0MDc2MCw0MDc1OSw0MDc1OCw0MDc3MSw0MDc4Myw0MDgxNyw0MDgxNiw0MDgxNCw0MDgxNSwyMjIyNywy''@;'; put 'put ''MjIyMSwyMzM3NCwyMzY2MSwyNTkwMSwyNjM0OSwyNjM1MCwyNzQxMSwyODc2NywyODc2OSwyODc2NSwyODc2OCwyOTIxOSwyOTkxNSwyOTkyNSwzMDY3NywzMTAzMiwzMTE1OSwzMTE1OCwzMTg1MCwzMjQwNywzMjY0OSwzMzM4OSwzNDM3MSwzNDg3MiwzNDg3MSwzNDg2OSwzNDg5MSwzNTcz''@;'; put 'put ''MiwzNTczMywzNjUxMCwzNjUxMSwzNjUxMiwzNjUwOSwzNzMxMCwzNzMwOSwzNzMxNCwzNzk5NSwzNzk5MiwzNzk5MywzODYyOSwzODcyNiwzODcyMywzODcyNywzODg1NSwzODg4NSwzOTUxOCwzOTYzNywzOTc2OSw0MDAzNSw0MDAzOSw0MDAzOCw0MDAzNCw0MDAzMCw0MDAzMiw0MDQ1MCw0''@;'; put 'put ''MDQ0Niw0MDQ1NSw0MDQ1MSw0MDQ1NCw0MDQ1Myw0MDQ0OCw0MDQ0OSw0MDQ1Nyw0MDQ0Nyw0MDQ0NSw0MDQ1Miw0MDYwOCw0MDczNCw0MDc3NCw0MDgyMCw0MDgyMSw0MDgyMiwyMjIyOCwyNTkwMiwyNjA0MCwyNzQxNiwyNzQxNywyNzQxNSwyNzQxOCwyODc3MCwyOTIyMiwyOTM1NCwzMDY4''@;'; put 'put ''MCwzMDY4MSwzMTAzMywzMTg0OSwzMTg1MSwzMTk5MCwzMjQxMCwzMjQwOCwzMjQxMSwzMjQwOSwzMzI0OCwzMzI0OSwzNDM3NCwzNDM3NSwzNDM3NiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NSwzNTMyNywzNTczNiwzNTczNywzNjUxNywzNjUxNiwzNjUxNSwzNzk5OCwzNzk5NywzNzk5OSwz''@;'; put 'put ''ODAwMSwzODAwMywzODcyOSwzOTAyNiwzOTI2Myw0MDA0MCw0MDA0Niw0MDA0NSw0MDQ1OSw0MDQ2MSw0MDQ2NCw0MDQ2Myw0MDQ2Niw0MDQ2NSw0MDYwOSw0MDY5Myw0MDcxMyw0MDc3NSw0MDgyNCw0MDgyNyw0MDgyNiw0MDgyNSwyMjMwMiwyODc3NCwzMTg1NSwzNDg3NiwzNjI3NCwzNjUx''@;'; put 'put ''OCwzNzMxNSwzODAwNCwzODAwOCwzODAwNiwzODAwNSwzOTUyMCw0MDA1Miw0MDA1MSw0MDA0OSw0MDA1Myw0MDQ2OCw0MDQ2Nyw0MDY5NCw0MDcxNCw0MDg2OCwyODc3NiwyODc3MywzMTk5MSwzNDQxMCwzNDg3OCwzNDg3NywzNDg3OSwzNTc0MiwzNTk5NiwzNjUyMSwzNjU1MywzODczMSwz''@;'; put 'put ''OTAyNywzOTAyOCwzOTExNiwzOTI2NSwzOTMzOSwzOTUyNCwzOTUyNiwzOTUyNywzOTcxNiw0MDQ2OSw0MDQ3MSw0MDc3NiwyNTA5NSwyNzQyMiwyOTIyMywzNDM4MCwzNjUyMCwzODAxOCwzODAxNiwzODAxNywzOTUyOSwzOTUyOCwzOTcyNiw0MDQ3MywyOTIyNSwzNDM3OSwzNTc0MywzODAx''@;'; put 'put ''OSw0MDA1Nyw0MDYzMSwzMDMyNSwzOTUzMSw0MDA1OCw0MDQ3NywyODc3NywyODc3OCw0MDYxMiw0MDgzMCw0MDc3Nyw0MDg1NiwzMDg0OSwzNzU2MSwzNTAyMywyMjcxNSwyNDY1OCwzMTkxMSwyMzI5MCw5NTU2LDk1NzQsOTU1OSw5NTY4LDk1ODAsOTU3MSw5NTYyLDk1NzcsOTU2NSw5NTU0''@;'; put 'put ''LDk1NzIsOTU1Nyw5NTY2LDk1NzgsOTU2OSw5NTYwLDk1NzUsOTU2Myw5NTU1LDk1NzMsOTU1OCw5NTY3LDk1NzksOTU3MCw5NTYxLDk1NzYsOTU2NCw5NTUzLDk1NTIsOTU4MSw5NTgyLDk1ODQsOTU4Myw2NTUxNywxMzI0MjMsMzc1OTUsMTMyNTc1LDE0NzM5NywzNDEyNCwxNzA3NywyOTY3''@;'; put 'put ''OSwyMDkxNywxMzg5NywxNDk4MjYsMTY2MzcyLDM3NzAwLDEzNzY5MSwzMzUxOCwxNDY2MzIsMzA3ODAsMjY0MzYsMjUzMTEsMTQ5ODExLDE2NjMxNCwxMzE3NDQsMTU4NjQzLDEzNTk0MSwyMDM5NSwxNDA1MjUsMjA0ODgsMTU5MDE3LDE2MjQzNiwxNDQ4OTYsMTUwMTkzLDE0MDU2MywyMDUy''@;'; put 'put ''MSwxMzE5NjYsMjQ0ODQsMTMxOTY4LDEzMTkxMSwyODM3OSwxMzIxMjcsMjA2MDUsMjA3MzcsMTM0MzQsMjA3NTAsMzkwMjAsMTQxNDcsMzM4MTQsMTQ5OTI0LDEzMjIzMSwyMDgzMiwxNDQzMDgsMjA4NDIsMTM0MTQzLDEzOTUxNiwxMzE4MTMsMTQwNTkyLDEzMjQ5NCwxNDM5MjMsMTM3NjAz''@;'; put 'put ''LDIzNDI2LDM0Njg1LDEzMjUzMSwxNDY1ODUsMjA5MTQsMjA5MjAsNDAyNDQsMjA5MzcsMjA5NDMsMjA5NDUsMTU1ODAsMjA5NDcsMTUwMTgyLDIwOTE1LDIwOTYyLDIxMzE0LDIwOTczLDMzNzQxLDI2OTQyLDE0NTE5NywyNDQ0MywyMTAwMywyMTAzMCwyMTA1MiwyMTE3MywyMTA3OSwyMTE0''@;'; put 'put ''MCwyMTE3NywyMTE4OSwzMTc2NSwzNDExNCwyMTIxNiwzNDMxNywxNTg0ODMsMjEyNTMsMTY2NjIyLDIxODMzLDI4Mzc3LDE0NzMyOCwxMzM0NjAsMTQ3NDM2LDIxMjk5LDIxMzE2LDEzNDExNCwyNzg1MSwxMzY5OTgsMjY2NTEsMjk2NTMsMjQ2NTAsMTYwNDIsMTQ1NDAsMTM2OTM2LDI5MTQ5''@;'; put 'put ''LDE3NTcwLDIxMzU3LDIxMzY0LDE2NTU0NywyMTM3NCwyMTM3NSwxMzY1OTgsMTM2NzIzLDMwNjk0LDIxMzk1LDE2NjU1NSwyMTQwOCwyMTQxOSwyMTQyMiwyOTYwNywxNTM0NTgsMTYyMTcsMjk1OTYsMjE0NDEsMjE0NDUsMjc3MjEsMjAwNDEsMjI1MjYsMjE0NjUsMTUwMTksMTM0MDMxLDIx''@;'; put 'put ''NDcyLDE0NzQzNSwxNDI3NTUsMjE0OTQsMTM0MjYzLDIxNTIzLDI4NzkzLDIxODAzLDI2MTk5LDI3OTk1LDIxNjEzLDE1ODU0NywxMzQ1MTYsMjE4NTMsMjE2NDcsMjE2NjgsMTgzNDIsMTM2OTczLDEzNDg3NywxNTc5NiwxMzQ0NzcsMTY2MzMyLDE0MDk1MiwyMTgzMSwxOTY5MywyMTU1MSwy''@;'; put 'put ''OTcxOSwyMTg5NCwyMTkyOSwyMjAyMSwxMzc0MzEsMTQ3NTE0LDE3NzQ2LDE0ODUzMywyNjI5MSwxMzUzNDgsMjIwNzEsMjYzMTcsMTQ0MDEwLDI2Mjc2LDI2Mjg1LDIyMDkzLDIyMDk1LDMwOTYxLDIyMjU3LDM4NzkxLDIxNTAyLDIyMjcyLDIyMjU1LDIyMjUzLDE2Njc1OCwxMzg1OSwxMzU3''@;'; put 'put ''NTksMjIzNDIsMTQ3ODc3LDI3NzU4LDI4ODExLDIyMzM4LDE0MDAxLDE1ODg0NiwyMjUwMiwxMzYyMTQsMjI1MzEsMTM2Mjc2LDE0ODMyMywyMjU2NiwxNTA1MTcsMjI2MjAsMjI2OTgsMTM2NjUsMjI3NTIsMjI3NDgsMTM1NzQwLDIyNzc5LDIzNTUxLDIyMzM5LDE3MjM2OCwxNDgwODgsMzc4''@;'; put 'put ''NDMsMTM3MjksMjI4MTUsMjY3OTAsMTQwMTksMjgyNDksMTM2NzY2LDIzMDc2LDIxODQzLDEzNjg1MCwzNDA1MywyMjk4NSwxMzQ0NzgsMTU4ODQ5LDE1OTAxOCwxMzcxODAsMjMwMDEsMTM3MjExLDEzNzEzOCwxNTkxNDIsMjgwMTcsMTM3MjU2LDEzNjkxNywyMzAzMywxNTkzMDEsMjMyMTEs''@;'; put 'put ''MjMxMzksMTQwNTQsMTQ5OTI5LDIzMTU5LDE0MDg4LDIzMTkwLDI5Nzk3LDIzMjUxLDE1OTY0OSwxNDA2MjgsMTU3NDksMTM3NDg5LDE0MTMwLDEzNjg4OCwyNDE5NSwyMTIwMCwyMzQxNCwyNTk5MiwyMzQyMCwxNjIzMTgsMTYzODgsMTg1MjUsMTMxNTg4LDIzNTA5LDI0OTI4LDEzNzc4MCwx''@;'; put 'put ''NTQwNjAsMTMyNTE3LDIzNTM5LDIzNDUzLDE5NzI4LDIzNTU3LDEzODA1MiwyMzU3MSwyOTY0NiwyMzU3MiwxMzg0MDUsMTU4NTA0LDIzNjI1LDE4NjUzLDIzNjg1LDIzNzg1LDIzNzkxLDIzOTQ3LDEzODc0NSwxMzg4MDcsMjM4MjQsMjM4MzIsMjM4NzgsMTM4OTE2LDIzNzM4LDI0MDIzLDMz''@;'; put 'put ''NTMyLDE0MzgxLDE0OTc2MSwxMzkzMzcsMTM5NjM1LDMzNDE1LDE0MzkwLDE1Mjk4LDI0MTEwLDI3Mjc0LDI0MTgxLDI0MTg2LDE0ODY2OCwxMzQzNTUsMjE0MTQsMjAxNTEsMjQyNzIsMjE0MTYsMTM3MDczLDI0MDczLDI0MzA4LDE2NDk5NCwyNDMxMywyNDMxNSwxNDQ5NiwyNDMxNiwyNjY4''@;'; put 'put ''NiwzNzkxNSwyNDMzMywxMzE1MjEsMTk0NzA4LDE1MDcwLDE4NjA2LDEzNTk5NCwyNDM3OCwxNTc4MzIsMTQwMjQwLDI0NDA4LDE0MDQwMSwyNDQxOSwzODg0NSwxNTkzNDIsMjQ0MzQsMzc2OTYsMTY2NDU0LDI0NDg3LDIzOTkwLDE1NzExLDE1MjE0NCwxMzkxMTQsMTU5OTkyLDE0MDkwNCwz''@;'; put 'put ''NzMzNCwxMzE3NDIsMTY2NDQxLDI0NjI1LDI2MjQ1LDEzNzMzNSwxNDY5MSwxNTgxNSwxMzg4MSwyMjQxNiwxNDEyMzYsMzEwODksMTU5MzYsMjQ3MzQsMjQ3NDAsMjQ3NTUsMTQ5ODkwLDE0OTkwMywxNjIzODcsMjk4NjAsMjA3MDUsMjMyMDAsMjQ5MzIsMzM4MjgsMjQ4OTgsMTk0NzI2LDE1''@;'; put 'put ''OTQ0MiwyNDk2MSwyMDk4MCwxMzI2OTQsMjQ5NjcsMjM0NjYsMTQ3MzgzLDE0MTQwNywyNTA0MywxNjY4MTMsMTcwMzMzLDI1MDQwLDE0NjQyLDE0MTY5NiwxNDE1MDUsMjQ2MTEsMjQ5MjQsMjU4ODYsMjU0ODMsMTMxMzUyLDI1Mjg1LDEzNzA3MiwyNTMwMSwxNDI4NjEsMjU0NTIsMTQ5OTgz''@;'; put 'put ''LDE0ODcxLDI1NjU2LDI1NTkyLDEzNjA3OCwxMzcyMTIsMjU3NDQsMjg1NTQsMTQyOTAyLDM4OTMyLDE0NzU5NiwxNTMzNzMsMjU4MjUsMjU4MjksMzgwMTEsMTQ5NTAsMjU2NTgsMTQ5MzUsMjU5MzMsMjg0MzgsMTUwMDU2LDE1MDA1MSwyNTk4OSwyNTk2NSwyNTk1MSwxNDM0ODYsMjYwMzcs''@;'; put 'put ''MTQ5ODI0LDE5MjU1LDI2MDY1LDE2NjAwLDEzNzI1NywyNjA4MCwyNjA4MywyNDU0MywxNDQzODQsMjYxMzYsMTQzODYzLDE0Mzg2NCwyNjE4MCwxNDM3ODAsMTQzNzgxLDI2MTg3LDEzNDc3MywyNjIxNSwxNTIwMzgsMjYyMjcsMjYyMjgsMTM4ODEzLDE0MzkyMSwxNjUzNjQsMTQzODE2LDE1''@;'; put 'put ''MjMzOSwzMDY2MSwxNDE1NTksMzkzMzIsMjYzNzAsMTQ4MzgwLDE1MDA0OSwxNTE0NywyNzEzMCwxNDUzNDYsMjY0NjIsMjY0NzEsMjY0NjYsMTQ3OTE3LDE2ODE3MywyNjU4MywxNzY0MSwyNjY1OCwyODI0MCwzNzQzNiwyNjYyNSwxNDQzNTgsMTU5MTM2LDI2NzE3LDE0NDQ5NSwyNzEwNSwy''@;'; put 'put ''NzE0NywxNjY2MjMsMjY5OTUsMjY4MTksMTQ0ODQ1LDI2ODgxLDI2ODgwLDE1NjY2LDE0ODQ5LDE0NDk1NiwxNTIzMiwyNjU0MCwyNjk3NywxNjY0NzQsMTcxNDgsMjY5MzQsMjcwMzIsMTUyNjUsMTMyMDQxLDMzNjM1LDIwNjI0LDI3MTI5LDE0NDk4NSwxMzk1NjIsMjcyMDUsMTQ1MTU1LDI3''@;'; put 'put ''MjkzLDE1MzQ3LDI2NTQ1LDI3MzM2LDE2ODM0OCwxNTM3MywyNzQyMSwxMzM0MTEsMjQ3OTgsMjc0NDUsMjc1MDgsMTQxMjYxLDI4MzQxLDE0NjEzOSwxMzIwMjEsMTM3NTYwLDE0MTQ0LDIxNTM3LDE0NjI2NiwyNzYxNywxNDcxOTYsMjc2MTIsMjc3MDMsMTQwNDI3LDE0OTc0NSwxNTg1NDUs''@;'; put 'put ''Mjc3MzgsMzMzMTgsMjc3NjksMTQ2ODc2LDE3NjA1LDE0Njg3NywxNDc4NzYsMTQ5NzcyLDE0OTc2MCwxNDY2MzMsMTQwNTMsMTU1OTUsMTM0NDUwLDM5ODExLDE0Mzg2NSwxNDA0MzMsMzI2NTUsMjY2NzksMTU5MDEzLDE1OTEzNywxNTkyMTEsMjgwNTQsMjc5OTYsMjgyODQsMjg0MjAsMTQ5''@;'; put 'put ''ODg3LDE0NzU4OSwxNTkzNDYsMzQwOTksMTU5NjA0LDIwOTM1LDI3ODA0LDI4MTg5LDMzODM4LDE2NjY4OSwyODIwNywxNDY5OTEsMjk3NzksMTQ3MzMwLDMxMTgwLDI4MjM5LDIzMTg1LDE0MzQzNSwyODY2NCwxNDA5MywyODU3MywxNDY5OTIsMjg0MTAsMTM2MzQzLDE0NzUxNywxNzc0OSwz''@;'; put 'put ''Nzg3MiwyODQ4NCwyODUwOCwxNTY5NCwyODUzMiwxNjgzMDQsMTU2NzUsMjg1NzUsMTQ3NzgwLDI4NjI3LDE0NzYwMSwxNDc3OTcsMTQ3NTEzLDE0NzQ0MCwxNDczODAsMTQ3Nzc1LDIwOTU5LDE0Nzc5OCwxNDc3OTksMTQ3Nzc2LDE1NjEyNSwyODc0NywyODc5OCwyODgzOSwyODgwMSwyODg3''@;'; put 'put ''NiwyODg4NSwyODg4NiwyODg5NSwxNjY0NCwxNTg0OCwyOTEwOCwyOTA3OCwxNDgwODcsMjg5NzEsMjg5OTcsMjMxNzYsMjkwMDIsMjkwMzgsMjM3MDgsMTQ4MzI1LDI5MDA3LDM3NzMwLDE0ODE2MSwyODk3MiwxNDg1NzAsMTUwMDU1LDE1MDA1MCwyOTExNCwxNjY4ODgsMjg4NjEsMjkxOTgs''@;'; put 'put ''Mzc5NTQsMjkyMDUsMjI4MDEsMzc5NTUsMjkyMjAsMzc2OTcsMTUzMDkzLDI5MjMwLDI5MjQ4LDE0OTg3NiwyNjgxMywyOTI2OSwyOTI3MSwxNTk1NywxNDM0MjgsMjY2MzcsMjg0NzcsMjkzMTQsMjk0ODIsMjk0ODMsMTQ5NTM5LDE2NTkzMSwxODY2OSwxNjU4OTIsMjk0ODAsMjk0ODYsMjk2''@;'; put 'put ''NDcsMjk2MTAsMTM0MjAyLDE1ODI1NCwyOTY0MSwyOTc2OSwxNDc5MzgsMTM2OTM1LDE1MDA1MiwyNjE0NywxNDAyMSwxNDk5NDMsMTQ5OTAxLDE1MDAxMSwyOTY4NywyOTcxNywyNjg4MywxNTAwNTQsMjk3NTMsMTMyNTQ3LDE2MDg3LDI5Nzg4LDE0MTQ4NSwyOTc5MiwxNjc2MDIsMjk3Njcs''@;'; put 'put ''Mjk2NjgsMjk4MTQsMzM3MjEsMjk4MDQsMTQxMjgsMjk4MTIsMzc4NzMsMjcxODAsMjk4MjYsMTg3NzEsMTUwMTU2LDE0NzgwNywxNTAxMzcsMTY2Nzk5LDIzMzY2LDE2NjkxNSwxMzczNzQsMjk4OTYsMTM3NjA4LDI5OTY2LDI5OTI5LDI5OTgyLDE2NzY0MSwxMzc4MDMsMjM1MTEsMTY3NTk2''@;'; put 'put ''LDM3NzY1LDMwMDI5LDMwMDI2LDMwMDU1LDMwMDYyLDE1MTQyNiwxNjEzMiwxNTA4MDMsMzAwOTQsMjk3ODksMzAxMTAsMzAxMzIsMzAyMTAsMzAyNTIsMzAyODksMzAyODcsMzAzMTksMzAzMjYsMTU2NjYxLDMwMzUyLDMzMjYzLDE0MzI4LDE1Nzk2OSwxNTc5NjYsMzAzNjksMzAzNzMsMzAz''@;'; put 'put ''OTEsMzA0MTIsMTU5NjQ3LDMzODkwLDE1MTcwOSwxNTE5MzMsMTM4NzgwLDMwNDk0LDMwNTAyLDMwNTI4LDI1Nzc1LDE1MjA5NiwzMDU1MiwxNDQwNDQsMzA2MzksMTY2MjQ0LDE2NjI0OCwxMzY4OTcsMzA3MDgsMzA3MjksMTM2MDU0LDE1MDAzNCwyNjgyNiwzMDg5NSwzMDkxOSwzMDkzMSwz''@;'; put 'put ''ODU2NSwzMTAyMiwxNTMwNTYsMzA5MzUsMzEwMjgsMzA4OTcsMTYxMjkyLDM2NzkyLDM0OTQ4LDE2NjY5OSwxNTU3NzksMTQwODI4LDMxMTEwLDM1MDcyLDI2ODgyLDMxMTA0LDE1MzY4NywzMTEzMywxNjI2MTcsMzEwMzYsMzExNDUsMjgyMDIsMTYwMDM4LDE2MDQwLDMxMTc0LDE2ODIwNSwz''@;'; put 'put ''MTE4OF0sImV1Yy1rciI6WzQ0MDM0LDQ0MDM1LDQ0MDM3LDQ0MDM4LDQ0MDQzLDQ0MDQ0LDQ0MDQ1LDQ0MDQ2LDQ0MDQ3LDQ0MDU2LDQ0MDYyLDQ0MDYzLDQ0MDY1LDQ0MDY2LDQ0MDY3LDQ0MDY5LDQ0MDcwLDQ0MDcxLDQ0MDcyLDQ0MDczLDQ0MDc0LDQ0MDc1LDQ0MDc4LDQ0MDgyLDQ0MDgz''@;'; put 'put ''LDQ0MDg0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MDg1LDQ0MDg2LDQ0MDg3LDQ0MDkwLDQ0MDkxLDQ0MDkzLDQ0MDk0LDQ0MDk1LDQ0MDk3LDQ0MDk4LDQ0MDk5LDQ0MTAwLDQ0MTAxLDQ0MTAyLDQ0MTAzLDQ0MTA0LDQ0MTA1LDQ0MTA2LDQ0MTA4LDQ0MTEwLDQ0MTExLDQ0''@;'; put 'put ''MTEyLDQ0MTEzLDQ0MTE0LDQ0MTE1LDQ0MTE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MTE4LDQ0MTE5LDQ0MTIxLDQ0MTIyLDQ0MTIzLDQ0MTI1LDQ0MTI2LDQ0MTI3LDQ0MTI4LDQ0MTI5LDQ0MTMwLDQ0MTMxLDQ0MTMyLDQ0MTMzLDQ0MTM0LDQ0MTM1LDQ0MTM2LDQ0MTM3''@;'; put 'put ''LDQ0MTM4LDQ0MTM5LDQ0MTQwLDQ0MTQxLDQ0MTQyLDQ0MTQzLDQ0MTQ2LDQ0MTQ3LDQ0MTQ5LDQ0MTUwLDQ0MTUzLDQ0MTU1LDQ0MTU2LDQ0MTU3LDQ0MTU4LDQ0MTU5LDQ0MTYyLDQ0MTY3LDQ0MTY4LDQ0MTczLDQ0MTc0LDQ0MTc1LDQ0MTc3LDQ0MTc4LDQ0MTc5LDQ0MTgxLDQ0MTgyLDQ0''@;'; put 'put ''MTgzLDQ0MTg0LDQ0MTg1LDQ0MTg2LDQ0MTg3LDQ0MTkwLDQ0MTk0LDQ0MTk1LDQ0MTk2LDQ0MTk3LDQ0MTk4LDQ0MTk5LDQ0MjAzLDQ0MjA1LDQ0MjA2LDQ0MjA5LDQ0MjEwLDQ0MjExLDQ0MjEyLDQ0MjEzLDQ0MjE0LDQ0MjE1LDQ0MjE4LDQ0MjIyLDQ0MjIzLDQ0MjI0LDQ0MjI2LDQ0MjI3''@;'; put 'put ''LDQ0MjI5LDQ0MjMwLDQ0MjMxLDQ0MjMzLDQ0MjM0LDQ0MjM1LDQ0MjM3LDQ0MjM4LDQ0MjM5LDQ0MjQwLDQ0MjQxLDQ0MjQyLDQ0MjQzLDQ0MjQ0LDQ0MjQ2LDQ0MjQ4LDQ0MjQ5LDQ0MjUwLDQ0MjUxLDQ0MjUyLDQ0MjUzLDQ0MjU0LDQ0MjU1LDQ0MjU4LDQ0MjU5LDQ0MjYxLDQ0MjYyLDQ0''@;'; put 'put ''MjY1LDQ0MjY3LDQ0MjY5LDQ0MjcwLDQ0Mjc0LDQ0Mjc2LDQ0Mjc5LDQ0MjgwLDQ0MjgxLDQ0MjgyLDQ0MjgzLDQ0Mjg2LDQ0Mjg3LDQ0Mjg5LDQ0MjkwLDQ0MjkxLDQ0MjkzLDQ0Mjk1LDQ0Mjk2LDQ0Mjk3LDQ0Mjk4LDQ0Mjk5LDQ0MzAyLDQ0MzA0LDQ0MzA2LDQ0MzA3LDQ0MzA4LDQ0MzA5''@;'; put 'put ''LDQ0MzEwLDQ0MzExLDQ0MzEzLDQ0MzE0LDQ0MzE1LDQ0MzE3LDQ0MzE4LDQ0MzE5LDQ0MzIxLDQ0MzIyLDQ0MzIzLDQ0MzI0LDQ0MzI1LDQ0MzI2LDQ0MzI3LDQ0MzI4LDQ0MzMwLDQ0MzMxLDQ0MzM0LDQ0MzM1LDQ0MzM2LDQ0MzM3LDQ0MzM4LDQ0MzM5LG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDQ0MzQyLDQ0MzQzLDQ0MzQ1LDQ0MzQ2LDQ0MzQ3LDQ0MzQ5LDQ0MzUwLDQ0MzUxLDQ0MzUyLDQ0MzUzLDQ0MzU0LDQ0MzU1LDQ0MzU4LDQ0MzYwLDQ0MzYyLDQ0MzYzLDQ0MzY0LDQ0MzY1LDQ0MzY2LDQ0MzY3LDQ0MzY5LDQ0MzcwLDQ0MzcxLDQ0MzczLDQ0Mzc0LDQ0Mzc1''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0Mzc3LDQ0Mzc4LDQ0Mzc5LDQ0MzgwLDQ0MzgxLDQ0MzgyLDQ0MzgzLDQ0Mzg0LDQ0Mzg2LDQ0Mzg4LDQ0Mzg5LDQ0MzkwLDQ0MzkxLDQ0MzkyLDQ0MzkzLDQ0Mzk0LDQ0Mzk1LDQ0Mzk4LDQ0Mzk5LDQ0NDAxLDQ0NDAyLDQ0NDA3LDQ0''@;'; put 'put ''NDA4LDQ0NDA5LDQ0NDEwLDQ0NDE0LDQ0NDE2LDQ0NDE5LDQ0NDIwLDQ0NDIxLDQ0NDIyLDQ0NDIzLDQ0NDI2LDQ0NDI3LDQ0NDI5LDQ0NDMwLDQ0NDMxLDQ0NDMzLDQ0NDM0LDQ0NDM1LDQ0NDM2LDQ0NDM3LDQ0NDM4LDQ0NDM5LDQ0NDQwLDQ0NDQxLDQ0NDQyLDQ0NDQzLDQ0NDQ2LDQ0NDQ3''@;'; put 'put ''LDQ0NDQ4LDQ0NDQ5LDQ0NDUwLDQ0NDUxLDQ0NDUzLDQ0NDU0LDQ0NDU1LDQ0NDU2LDQ0NDU3LDQ0NDU4LDQ0NDU5LDQ0NDYwLDQ0NDYxLDQ0NDYyLDQ0NDYzLDQ0NDY0LDQ0NDY1LDQ0NDY2LDQ0NDY3LDQ0NDY4LDQ0NDY5LDQ0NDcwLDQ0NDcyLDQ0NDczLDQ0NDc0LDQ0NDc1LDQ0NDc2LDQ0''@;'; put 'put ''NDc3LDQ0NDc4LDQ0NDc5LDQ0NDgyLDQ0NDgzLDQ0NDg1LDQ0NDg2LDQ0NDg3LDQ0NDg5LDQ0NDkwLDQ0NDkxLDQ0NDkyLDQ0NDkzLDQ0NDk0LDQ0NDk1LDQ0NDk4LDQ0NTAwLDQ0NTAxLDQ0NTAyLDQ0NTAzLDQ0NTA0LDQ0NTA1LDQ0NTA2LDQ0NTA3LDQ0NTA5LDQ0NTEwLDQ0NTExLDQ0NTEz''@;'; put 'put ''LDQ0NTE0LDQ0NTE1LDQ0NTE3LDQ0NTE4LDQ0NTE5LDQ0NTIwLDQ0NTIxLDQ0NTIyLDQ0NTIzLDQ0NTI0LDQ0NTI1LDQ0NTI2LDQ0NTI3LDQ0NTI4LDQ0NTI5LDQ0NTMwLDQ0NTMxLDQ0NTMyLDQ0NTMzLDQ0NTM0LDQ0NTM1LDQ0NTM4LDQ0NTM5LDQ0NTQxLDQ0NTQyLDQ0NTQ2LDQ0NTQ3LDQ0''@;'; put 'put ''NTQ4LDQ0NTQ5LDQ0NTUwLDQ0NTUxLDQ0NTU0LDQ0NTU2LDQ0NTU4LDQ0NTU5LDQ0NTYwLDQ0NTYxLDQ0NTYyLDQ0NTYzLDQ0NTY1LDQ0NTY2LDQ0NTY3LDQ0NTY4LDQ0NTY5LDQ0NTcwLDQ0NTcxLDQ0NTcyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NTczLDQ0NTc0LDQ0NTc1''@;'; put 'put ''LDQ0NTc2LDQ0NTc3LDQ0NTc4LDQ0NTc5LDQ0NTgwLDQ0NTgxLDQ0NTgyLDQ0NTgzLDQ0NTg0LDQ0NTg1LDQ0NTg2LDQ0NTg3LDQ0NTg4LDQ0NTg5LDQ0NTkwLDQ0NTkxLDQ0NTk0LDQ0NTk1LDQ0NTk3LDQ0NTk4LDQ0NjAxLDQ0NjAzLDQ0NjA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLDQ0NjA1LDQ0NjA2LDQ0NjA3LDQ0NjEwLDQ0NjEyLDQ0NjE1LDQ0NjE2LDQ0NjE3LDQ0NjE5LDQ0NjIzLDQ0NjI1LDQ0NjI2LDQ0NjI3LDQ0NjI5LDQ0NjMxLDQ0NjMyLDQ0NjMzLDQ0NjM0LDQ0NjM1LDQ0NjM4LDQ0NjQyLDQ0NjQzLDQ0NjQ0LDQ0NjQ2LDQ0NjQ3LDQ0NjUwLDQ0NjUx''@;'; put 'put ''LDQ0NjUzLDQ0NjU0LDQ0NjU1LDQ0NjU3LDQ0NjU4LDQ0NjU5LDQ0NjYwLDQ0NjYxLDQ0NjYyLDQ0NjYzLDQ0NjY2LDQ0NjcwLDQ0NjcxLDQ0NjcyLDQ0NjczLDQ0Njc0LDQ0Njc1LDQ0Njc4LDQ0Njc5LDQ0NjgwLDQ0NjgxLDQ0NjgyLDQ0NjgzLDQ0Njg1LDQ0Njg2LDQ0Njg3LDQ0Njg4LDQ0''@;'; put 'put ''Njg5LDQ0NjkwLDQ0NjkxLDQ0NjkyLDQ0NjkzLDQ0Njk0LDQ0Njk1LDQ0Njk2LDQ0Njk3LDQ0Njk4LDQ0Njk5LDQ0NzAwLDQ0NzAxLDQ0NzAyLDQ0NzAzLDQ0NzA0LDQ0NzA1LDQ0NzA2LDQ0NzA3LDQ0NzA4LDQ0NzA5LDQ0NzEwLDQ0NzExLDQ0NzEyLDQ0NzEzLDQ0NzE0LDQ0NzE1LDQ0NzE2''@;'; put 'put ''LDQ0NzE3LDQ0NzE4LDQ0NzE5LDQ0NzIwLDQ0NzIxLDQ0NzIyLDQ0NzIzLDQ0NzI0LDQ0NzI1LDQ0NzI2LDQ0NzI3LDQ0NzI4LDQ0NzI5LDQ0NzMwLDQ0NzMxLDQ0NzM1LDQ0NzM3LDQ0NzM4LDQ0NzM5LDQ0NzQxLDQ0NzQyLDQ0NzQzLDQ0NzQ0LDQ0NzQ1LDQ0NzQ2LDQ0NzQ3LDQ0NzUwLDQ0''@;'; put 'put ''NzU0LDQ0NzU1LDQ0NzU2LDQ0NzU3LDQ0NzU4LDQ0NzU5LDQ0NzYyLDQ0NzYzLDQ0NzY1LDQ0NzY2LDQ0NzY3LDQ0NzY4LDQ0NzY5LDQ0NzcwLDQ0NzcxLDQ0NzcyLDQ0NzczLDQ0Nzc0LDQ0Nzc1LDQ0Nzc3LDQ0Nzc4LDQ0NzgwLDQ0NzgyLDQ0NzgzLDQ0Nzg0LDQ0Nzg1LDQ0Nzg2LDQ0Nzg3''@;'; put 'put ''LDQ0Nzg5LDQ0NzkwLDQ0NzkxLDQ0NzkzLDQ0Nzk0LDQ0Nzk1LDQ0Nzk3LDQ0Nzk4LDQ0Nzk5LDQ0ODAwLDQ0ODAxLDQ0ODAyLDQ0ODAzLDQ0ODA0LDQ0ODA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODA2LDQ0ODA5LDQ0ODEwLDQ0ODExLDQ0ODEyLDQ0ODE0LDQ0ODE1LDQ0''@;'; put 'put ''ODE3LDQ0ODE4LDQ0ODE5LDQ0ODIwLDQ0ODIxLDQ0ODIyLDQ0ODIzLDQ0ODI0LDQ0ODI1LDQ0ODI2LDQ0ODI3LDQ0ODI4LDQ0ODI5LDQ0ODMwLDQ0ODMxLDQ0ODMyLDQ0ODMzLDQ0ODM0LDQ0ODM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODM2LDQ0ODM3LDQ0ODM4LDQ0ODM5''@;'; put 'put ''LDQ0ODQwLDQ0ODQxLDQ0ODQyLDQ0ODQzLDQ0ODQ2LDQ0ODQ3LDQ0ODQ5LDQ0ODUxLDQ0ODUzLDQ0ODU0LDQ0ODU1LDQ0ODU2LDQ0ODU3LDQ0ODU4LDQ0ODU5LDQ0ODYyLDQ0ODY0LDQ0ODY4LDQ0ODY5LDQ0ODcwLDQ0ODcxLDQ0ODc0LDQ0ODc1LDQ0ODc2LDQ0ODc3LDQ0ODc4LDQ0ODc5LDQ0''@;'; put 'put ''ODgxLDQ0ODgyLDQ0ODgzLDQ0ODg0LDQ0ODg1LDQ0ODg2LDQ0ODg3LDQ0ODg4LDQ0ODg5LDQ0ODkwLDQ0ODkxLDQ0ODk0LDQ0ODk1LDQ0ODk2LDQ0ODk3LDQ0ODk4LDQ0ODk5LDQ0OTAyLDQ0OTAzLDQ0OTA0LDQ0OTA1LDQ0OTA2LDQ0OTA3LDQ0OTA4LDQ0OTA5LDQ0OTEwLDQ0OTExLDQ0OTEy''@;'; put 'put ''LDQ0OTEzLDQ0OTE0LDQ0OTE1LDQ0OTE2LDQ0OTE3LDQ0OTE4LDQ0OTE5LDQ0OTIwLDQ0OTIyLDQ0OTIzLDQ0OTI0LDQ0OTI1LDQ0OTI2LDQ0OTI3LDQ0OTI5LDQ0OTMwLDQ0OTMxLDQ0OTMzLDQ0OTM0LDQ0OTM1LDQ0OTM3LDQ0OTM4LDQ0OTM5LDQ0OTQwLDQ0OTQxLDQ0OTQyLDQ0OTQzLDQ0''@;'; put 'put ''OTQ2LDQ0OTQ3LDQ0OTQ4LDQ0OTUwLDQ0OTUxLDQ0OTUyLDQ0OTUzLDQ0OTU0LDQ0OTU1LDQ0OTU3LDQ0OTU4LDQ0OTU5LDQ0OTYwLDQ0OTYxLDQ0OTYyLDQ0OTYzLDQ0OTY0LDQ0OTY1LDQ0OTY2LDQ0OTY3LDQ0OTY4LDQ0OTY5LDQ0OTcwLDQ0OTcxLDQ0OTcyLDQ0OTczLDQ0OTc0LDQ0OTc1''@;'; put 'put ''LDQ0OTc2LDQ0OTc3LDQ0OTc4LDQ0OTc5LDQ0OTgwLDQ0OTgxLDQ0OTgyLDQ0OTgzLDQ0OTg2LDQ0OTg3LDQ0OTg5LDQ0OTkwLDQ0OTkxLDQ0OTkzLDQ0OTk0LDQ0OTk1LDQ0OTk2LDQ0OTk3LDQ0OTk4LDQ1MDAyLDQ1MDA0LDQ1MDA3LDQ1MDA4LDQ1MDA5LDQ1MDEwLDQ1MDExLDQ1MDEzLDQ1''@;'; put 'put ''MDE0LDQ1MDE1LDQ1MDE2LDQ1MDE3LDQ1MDE4LDQ1MDE5LDQ1MDIxLDQ1MDIyLDQ1MDIzLDQ1MDI0LDQ1MDI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDI2LDQ1MDI3LDQ1MDI4LDQ1MDI5LDQ1MDMwLDQ1MDMxLDQ1MDM0LDQ1MDM1LDQ1MDM2LDQ1MDM3LDQ1MDM4LDQ1MDM5''@;'; put 'put ''LDQ1MDQyLDQ1MDQzLDQ1MDQ1LDQ1MDQ2LDQ1MDQ3LDQ1MDQ5LDQ1MDUwLDQ1MDUxLDQ1MDUyLDQ1MDUzLDQ1MDU0LDQ1MDU1LDQ1MDU4LDQ1MDU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDYxLDQ1MDYyLDQ1MDYzLDQ1MDY0LDQ1MDY1LDQ1MDY2LDQ1MDY3LDQ1MDY5LDQ1''@;'; put 'put ''MDcwLDQ1MDcxLDQ1MDczLDQ1MDc0LDQ1MDc1LDQ1MDc3LDQ1MDc4LDQ1MDc5LDQ1MDgwLDQ1MDgxLDQ1MDgyLDQ1MDgzLDQ1MDg2LDQ1MDg3LDQ1MDg4LDQ1MDg5LDQ1MDkwLDQ1MDkxLDQ1MDkyLDQ1MDkzLDQ1MDk0LDQ1MDk1LDQ1MDk3LDQ1MDk4LDQ1MDk5LDQ1MTAwLDQ1MTAxLDQ1MTAy''@;'; put 'put ''LDQ1MTAzLDQ1MTA0LDQ1MTA1LDQ1MTA2LDQ1MTA3LDQ1MTA4LDQ1MTA5LDQ1MTEwLDQ1MTExLDQ1MTEyLDQ1MTEzLDQ1MTE0LDQ1MTE1LDQ1MTE2LDQ1MTE3LDQ1MTE4LDQ1MTE5LDQ1MTIwLDQ1MTIxLDQ1MTIyLDQ1MTIzLDQ1MTI2LDQ1MTI3LDQ1MTI5LDQ1MTMxLDQ1MTMzLDQ1MTM1LDQ1''@;'; put 'put ''MTM2LDQ1MTM3LDQ1MTM4LDQ1MTQyLDQ1MTQ0LDQ1MTQ2LDQ1MTQ3LDQ1MTQ4LDQ1MTUwLDQ1MTUxLDQ1MTUyLDQ1MTUzLDQ1MTU0LDQ1MTU1LDQ1MTU2LDQ1MTU3LDQ1MTU4LDQ1MTU5LDQ1MTYwLDQ1MTYxLDQ1MTYyLDQ1MTYzLDQ1MTY0LDQ1MTY1LDQ1MTY2LDQ1MTY3LDQ1MTY4LDQ1MTY5''@;'; put 'put ''LDQ1MTcwLDQ1MTcxLDQ1MTcyLDQ1MTczLDQ1MTc0LDQ1MTc1LDQ1MTc2LDQ1MTc3LDQ1MTc4LDQ1MTc5LDQ1MTgyLDQ1MTgzLDQ1MTg1LDQ1MTg2LDQ1MTg3LDQ1MTg5LDQ1MTkwLDQ1MTkxLDQ1MTkyLDQ1MTkzLDQ1MTk0LDQ1MTk1LDQ1MTk4LDQ1MjAwLDQ1MjAyLDQ1MjAzLDQ1MjA0LDQ1''@;'; put 'put ''MjA1LDQ1MjA2LDQ1MjA3LDQ1MjExLDQ1MjEzLDQ1MjE0LDQ1MjE5LDQ1MjIwLDQ1MjIxLDQ1MjIyLDQ1MjIzLDQ1MjI2LDQ1MjMyLDQ1MjM0LDQ1MjM4LDQ1MjM5LDQ1MjQxLDQ1MjQyLDQ1MjQzLDQ1MjQ1LDQ1MjQ2LDQ1MjQ3LDQ1MjQ4LDQ1MjQ5LDQ1MjUwLDQ1MjUxLDQ1MjU0LDQ1MjU4''@;'; put 'put ''LDQ1MjU5LDQ1MjYwLDQ1MjYxLDQ1MjYyLDQ1MjYzLDQ1MjY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MjY3LDQ1MjY5LDQ1MjcwLDQ1MjcxLDQ1MjczLDQ1Mjc0LDQ1Mjc1LDQ1Mjc2LDQ1Mjc3LDQ1Mjc4LDQ1Mjc5LDQ1MjgxLDQ1MjgyLDQ1MjgzLDQ1Mjg0LDQ1Mjg2LDQ1''@;'; put 'put ''Mjg3LDQ1Mjg4LDQ1Mjg5LDQ1MjkwLDQ1MjkxLDQ1MjkyLDQ1MjkzLDQ1Mjk0LDQ1Mjk1LDQ1Mjk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1Mjk3LDQ1Mjk4LDQ1Mjk5LDQ1MzAwLDQ1MzAxLDQ1MzAyLDQ1MzAzLDQ1MzA0LDQ1MzA1LDQ1MzA2LDQ1MzA3LDQ1MzA4LDQ1MzA5''@;'; put 'put ''LDQ1MzEwLDQ1MzExLDQ1MzEyLDQ1MzEzLDQ1MzE0LDQ1MzE1LDQ1MzE2LDQ1MzE3LDQ1MzE4LDQ1MzE5LDQ1MzIyLDQ1MzI1LDQ1MzI2LDQ1MzI3LDQ1MzI5LDQ1MzMyLDQ1MzMzLDQ1MzM0LDQ1MzM1LDQ1MzM4LDQ1MzQyLDQ1MzQzLDQ1MzQ0LDQ1MzQ1LDQ1MzQ2LDQ1MzUwLDQ1MzUxLDQ1''@;'; put 'put ''MzUzLDQ1MzU0LDQ1MzU1LDQ1MzU3LDQ1MzU4LDQ1MzU5LDQ1MzYwLDQ1MzYxLDQ1MzYyLDQ1MzYzLDQ1MzY2LDQ1MzcwLDQ1MzcxLDQ1MzcyLDQ1MzczLDQ1Mzc0LDQ1Mzc1LDQ1Mzc4LDQ1Mzc5LDQ1MzgxLDQ1MzgyLDQ1MzgzLDQ1Mzg1LDQ1Mzg2LDQ1Mzg3LDQ1Mzg4LDQ1Mzg5LDQ1Mzkw''@;'; put 'put ''LDQ1MzkxLDQ1Mzk0LDQ1Mzk1LDQ1Mzk4LDQ1Mzk5LDQ1NDAxLDQ1NDAyLDQ1NDAzLDQ1NDA1LDQ1NDA2LDQ1NDA3LDQ1NDA5LDQ1NDEwLDQ1NDExLDQ1NDEyLDQ1NDEzLDQ1NDE0LDQ1NDE1LDQ1NDE2LDQ1NDE3LDQ1NDE4LDQ1NDE5LDQ1NDIwLDQ1NDIxLDQ1NDIyLDQ1NDIzLDQ1NDI0LDQ1''@;'; put 'put ''NDI1LDQ1NDI2LDQ1NDI3LDQ1NDI4LDQ1NDI5LDQ1NDMwLDQ1NDMxLDQ1NDM0LDQ1NDM1LDQ1NDM3LDQ1NDM4LDQ1NDM5LDQ1NDQxLDQ1NDQzLDQ1NDQ0LDQ1NDQ1LDQ1NDQ2LDQ1NDQ3LDQ1NDUwLDQ1NDUyLDQ1NDU0LDQ1NDU1LDQ1NDU2LDQ1NDU3LDQ1NDYxLDQ1NDYyLDQ1NDYzLDQ1NDY1''@;'; put 'put ''LDQ1NDY2LDQ1NDY3LDQ1NDY5LDQ1NDcwLDQ1NDcxLDQ1NDcyLDQ1NDczLDQ1NDc0LDQ1NDc1LDQ1NDc2LDQ1NDc3LDQ1NDc4LDQ1NDc5LDQ1NDgxLDQ1NDgyLDQ1NDgzLDQ1NDg0LDQ1NDg1LDQ1NDg2LDQ1NDg3LDQ1NDg4LDQ1NDg5LDQ1NDkwLDQ1NDkxLDQ1NDkyLDQ1NDkzLDQ1NDk0LDQ1''@;'; put 'put ''NDk1LDQ1NDk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NDk3LDQ1NDk4LDQ1NDk5LDQ1NTAwLDQ1NTAxLDQ1NTAyLDQ1NTAzLDQ1NTA0LDQ1NTA1LDQ1NTA2LDQ1NTA3LDQ1NTA4LDQ1NTA5LDQ1NTEwLDQ1NTExLDQ1NTEyLDQ1NTEzLDQ1NTE0LDQ1NTE1LDQ1NTE3LDQ1NTE4''@;'; put 'put ''LDQ1NTE5LDQ1NTIxLDQ1NTIyLDQ1NTIzLDQ1NTI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NTI2LDQ1NTI3LDQ1NTI4LDQ1NTI5LDQ1NTMwLDQ1NTMxLDQ1NTM0LDQ1NTM2LDQ1NTM3LDQ1NTM4LDQ1NTM5LDQ1NTQwLDQ1NTQxLDQ1NTQyLDQ1NTQzLDQ1NTQ2LDQ1NTQ3LDQ1''@;'; put 'put ''NTQ5LDQ1NTUwLDQ1NTUxLDQ1NTUzLDQ1NTU0LDQ1NTU1LDQ1NTU2LDQ1NTU3LDQ1NTU4LDQ1NTU5LDQ1NTYwLDQ1NTYyLDQ1NTY0LDQ1NTY2LDQ1NTY3LDQ1NTY4LDQ1NTY5LDQ1NTcwLDQ1NTcxLDQ1NTc0LDQ1NTc1LDQ1NTc3LDQ1NTc4LDQ1NTgxLDQ1NTgyLDQ1NTgzLDQ1NTg0LDQ1NTg1''@;'; put 'put ''LDQ1NTg2LDQ1NTg3LDQ1NTkwLDQ1NTkyLDQ1NTk0LDQ1NTk1LDQ1NTk2LDQ1NTk3LDQ1NTk4LDQ1NTk5LDQ1NjAxLDQ1NjAyLDQ1NjAzLDQ1NjA0LDQ1NjA1LDQ1NjA2LDQ1NjA3LDQ1NjA4LDQ1NjA5LDQ1NjEwLDQ1NjExLDQ1NjEyLDQ1NjEzLDQ1NjE0LDQ1NjE1LDQ1NjE2LDQ1NjE3LDQ1''@;'; put 'put ''NjE4LDQ1NjE5LDQ1NjIxLDQ1NjIyLDQ1NjIzLDQ1NjI0LDQ1NjI1LDQ1NjI2LDQ1NjI3LDQ1NjI5LDQ1NjMwLDQ1NjMxLDQ1NjMyLDQ1NjMzLDQ1NjM0LDQ1NjM1LDQ1NjM2LDQ1NjM3LDQ1NjM4LDQ1NjM5LDQ1NjQwLDQ1NjQxLDQ1NjQyLDQ1NjQzLDQ1NjQ0LDQ1NjQ1LDQ1NjQ2LDQ1NjQ3''@;'; put 'put ''LDQ1NjQ4LDQ1NjQ5LDQ1NjUwLDQ1NjUxLDQ1NjUyLDQ1NjUzLDQ1NjU0LDQ1NjU1LDQ1NjU3LDQ1NjU4LDQ1NjU5LDQ1NjYxLDQ1NjYyLDQ1NjYzLDQ1NjY1LDQ1NjY2LDQ1NjY3LDQ1NjY4LDQ1NjY5LDQ1NjcwLDQ1NjcxLDQ1Njc0LDQ1Njc1LDQ1Njc2LDQ1Njc3LDQ1Njc4LDQ1Njc5LDQ1''@;'; put 'put ''NjgwLDQ1NjgxLDQ1NjgyLDQ1NjgzLDQ1Njg2LDQ1Njg3LDQ1Njg4LDQ1Njg5LDQ1NjkwLDQ1NjkxLDQ1NjkzLDQ1Njk0LDQ1Njk1LDQ1Njk2LDQ1Njk3LDQ1Njk4LDQ1Njk5LDQ1NzAyLDQ1NzAzLDQ1NzA0LDQ1NzA2LDQ1NzA3LDQ1NzA4LDQ1NzA5LDQ1NzEwLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLDQ1NzExLDQ1NzE0LDQ1NzE1LDQ1NzE3LDQ1NzE4LDQ1NzE5LDQ1NzIzLDQ1NzI0LDQ1NzI1LDQ1NzI2LDQ1NzI3LDQ1NzMwLDQ1NzMyLDQ1NzM1LDQ1NzM2LDQ1NzM3LDQ1NzM5LDQ1NzQxLDQ1NzQyLDQ1NzQzLDQ1NzQ1LDQ1NzQ2LDQ1NzQ3LDQ1NzQ5LDQ1NzUwLDQ1''@;'; put 'put ''NzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NzUyLDQ1NzUzLDQ1NzU0LDQ1NzU1LDQ1NzU2LDQ1NzU3LDQ1NzU4LDQ1NzU5LDQ1NzYwLDQ1NzYxLDQ1NzYyLDQ1NzYzLDQ1NzY0LDQ1NzY1LDQ1NzY2LDQ1NzY3LDQ1NzcwLDQ1NzcxLDQ1NzczLDQ1Nzc0LDQ1Nzc1LDQ1Nzc3''@;'; put 'put ''LDQ1Nzc5LDQ1NzgwLDQ1NzgxLDQ1NzgyLDQ1NzgzLDQ1Nzg2LDQ1Nzg4LDQ1NzkwLDQ1NzkxLDQ1NzkyLDQ1NzkzLDQ1Nzk1LDQ1Nzk5LDQ1ODAxLDQ1ODAyLDQ1ODA4LDQ1ODA5LDQ1ODEwLDQ1ODE0LDQ1ODIwLDQ1ODIxLDQ1ODIyLDQ1ODI2LDQ1ODI3LDQ1ODI5LDQ1ODMwLDQ1ODMxLDQ1''@;'; put 'put ''ODMzLDQ1ODM0LDQ1ODM1LDQ1ODM2LDQ1ODM3LDQ1ODM4LDQ1ODM5LDQ1ODQyLDQ1ODQ2LDQ1ODQ3LDQ1ODQ4LDQ1ODQ5LDQ1ODUwLDQ1ODUxLDQ1ODUzLDQ1ODU0LDQ1ODU1LDQ1ODU2LDQ1ODU3LDQ1ODU4LDQ1ODU5LDQ1ODYwLDQ1ODYxLDQ1ODYyLDQ1ODYzLDQ1ODY0LDQ1ODY1LDQ1ODY2''@;'; put 'put ''LDQ1ODY3LDQ1ODY4LDQ1ODY5LDQ1ODcwLDQ1ODcxLDQ1ODcyLDQ1ODczLDQ1ODc0LDQ1ODc1LDQ1ODc2LDQ1ODc3LDQ1ODc4LDQ1ODc5LDQ1ODgwLDQ1ODgxLDQ1ODgyLDQ1ODgzLDQ1ODg0LDQ1ODg1LDQ1ODg2LDQ1ODg3LDQ1ODg4LDQ1ODg5LDQ1ODkwLDQ1ODkxLDQ1ODkyLDQ1ODkzLDQ1''@;'; put 'put ''ODk0LDQ1ODk1LDQ1ODk2LDQ1ODk3LDQ1ODk4LDQ1ODk5LDQ1OTAwLDQ1OTAxLDQ1OTAyLDQ1OTAzLDQ1OTA0LDQ1OTA1LDQ1OTA2LDQ1OTA3LDQ1OTExLDQ1OTEzLDQ1OTE0LDQ1OTE3LDQ1OTIwLDQ1OTIxLDQ1OTIyLDQ1OTIzLDQ1OTI2LDQ1OTI4LDQ1OTMwLDQ1OTMyLDQ1OTMzLDQ1OTM1''@;'; put 'put ''LDQ1OTM4LDQ1OTM5LDQ1OTQxLDQ1OTQyLDQ1OTQzLDQ1OTQ1LDQ1OTQ2LDQ1OTQ3LDQ1OTQ4LDQ1OTQ5LDQ1OTUwLDQ1OTUxLDQ1OTU0LDQ1OTU4LDQ1OTU5LDQ1OTYwLDQ1OTYxLDQ1OTYyLDQ1OTYzLDQ1OTY1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTY2LDQ1OTY3LDQ1''@;'; put 'put ''OTY5LDQ1OTcwLDQ1OTcxLDQ1OTczLDQ1OTc0LDQ1OTc1LDQ1OTc2LDQ1OTc3LDQ1OTc4LDQ1OTc5LDQ1OTgwLDQ1OTgxLDQ1OTgyLDQ1OTgzLDQ1OTg2LDQ1OTg3LDQ1OTg4LDQ1OTg5LDQ1OTkwLDQ1OTkxLDQ1OTkzLDQ1OTk0LDQ1OTk1LDQ1OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDQ1OTk4LDQ1OTk5LDQ2ZTMsNDYwMDEsNDYwMDIsNDYwMDMsNDYwMDQsNDYwMDUsNDYwMDYsNDYwMDcsNDYwMDgsNDYwMDksNDYwMTAsNDYwMTEsNDYwMTIsNDYwMTMsNDYwMTQsNDYwMTUsNDYwMTYsNDYwMTcsNDYwMTgsNDYwMTksNDYwMjIsNDYwMjMsNDYwMjUsNDYwMjYsNDYw''@;'; put 'put ''MjksNDYwMzEsNDYwMzMsNDYwMzQsNDYwMzUsNDYwMzgsNDYwNDAsNDYwNDIsNDYwNDQsNDYwNDYsNDYwNDcsNDYwNDksNDYwNTAsNDYwNTEsNDYwNTMsNDYwNTQsNDYwNTUsNDYwNTcsNDYwNTgsNDYwNTksNDYwNjAsNDYwNjEsNDYwNjIsNDYwNjMsNDYwNjQsNDYwNjUsNDYwNjYsNDYwNjcs''@;'; put 'put ''NDYwNjgsNDYwNjksNDYwNzAsNDYwNzEsNDYwNzIsNDYwNzMsNDYwNzQsNDYwNzUsNDYwNzcsNDYwNzgsNDYwNzksNDYwODAsNDYwODEsNDYwODIsNDYwODMsNDYwODQsNDYwODUsNDYwODYsNDYwODcsNDYwODgsNDYwODksNDYwOTAsNDYwOTEsNDYwOTIsNDYwOTMsNDYwOTQsNDYwOTUsNDYw''@;'; put 'put ''OTcsNDYwOTgsNDYwOTksNDYxMDAsNDYxMDEsNDYxMDIsNDYxMDMsNDYxMDUsNDYxMDYsNDYxMDcsNDYxMDksNDYxMTAsNDYxMTEsNDYxMTMsNDYxMTQsNDYxMTUsNDYxMTYsNDYxMTcsNDYxMTgsNDYxMTksNDYxMjIsNDYxMjQsNDYxMjUsNDYxMjYsNDYxMjcsNDYxMjgsNDYxMjksNDYxMzAs''@;'; put 'put ''NDYxMzEsNDYxMzMsNDYxMzQsNDYxMzUsNDYxMzYsNDYxMzcsNDYxMzgsNDYxMzksNDYxNDAsNDYxNDEsNDYxNDIsNDYxNDMsNDYxNDQsNDYxNDUsNDYxNDYsNDYxNDcsNDYxNDgsNDYxNDksNDYxNTAsNDYxNTEsNDYxNTIsNDYxNTMsNDYxNTQsNDYxNTUsNDYxNTYsNDYxNTcsNDYxNTgsNDYx''@;'; put 'put ''NTksNDYxNjIsNDYxNjMsNDYxNjUsNDYxNjYsNDYxNjcsNDYxNjksNDYxNzAsNDYxNzEsNDYxNzIsNDYxNzMsNDYxNzQsNDYxNzUsNDYxNzgsNDYxODAsNDYxODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYxODMsNDYxODQsNDYxODUsNDYxODYsNDYxODcsNDYxODksNDYxOTAs''@;'; put 'put ''NDYxOTEsNDYxOTIsNDYxOTMsNDYxOTQsNDYxOTUsNDYxOTYsNDYxOTcsNDYxOTgsNDYxOTksNDYyMDAsNDYyMDEsNDYyMDIsNDYyMDMsNDYyMDQsNDYyMDUsNDYyMDYsNDYyMDcsNDYyMDksNDYyMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYyMTEsNDYyMTIsNDYyMTMsNDYy''@;'; put 'put ''MTQsNDYyMTUsNDYyMTcsNDYyMTgsNDYyMTksNDYyMjAsNDYyMjEsNDYyMjIsNDYyMjMsNDYyMjQsNDYyMjUsNDYyMjYsNDYyMjcsNDYyMjgsNDYyMjksNDYyMzAsNDYyMzEsNDYyMzIsNDYyMzMsNDYyMzQsNDYyMzUsNDYyMzYsNDYyMzgsNDYyMzksNDYyNDAsNDYyNDEsNDYyNDIsNDYyNDMs''@;'; put 'put ''NDYyNDUsNDYyNDYsNDYyNDcsNDYyNDksNDYyNTAsNDYyNTEsNDYyNTMsNDYyNTQsNDYyNTUsNDYyNTYsNDYyNTcsNDYyNTgsNDYyNTksNDYyNjAsNDYyNjIsNDYyNjQsNDYyNjYsNDYyNjcsNDYyNjgsNDYyNjksNDYyNzAsNDYyNzEsNDYyNzMsNDYyNzQsNDYyNzUsNDYyNzcsNDYyNzgsNDYy''@;'; put 'put ''NzksNDYyODEsNDYyODIsNDYyODMsNDYyODQsNDYyODUsNDYyODYsNDYyODcsNDYyODksNDYyOTAsNDYyOTEsNDYyOTIsNDYyOTQsNDYyOTUsNDYyOTYsNDYyOTcsNDYyOTgsNDYyOTksNDYzMDIsNDYzMDMsNDYzMDUsNDYzMDYsNDYzMDksNDYzMTEsNDYzMTIsNDYzMTMsNDYzMTQsNDYzMTUs''@;'; put 'put ''NDYzMTgsNDYzMjAsNDYzMjIsNDYzMjMsNDYzMjQsNDYzMjUsNDYzMjYsNDYzMjcsNDYzMjksNDYzMzAsNDYzMzEsNDYzMzIsNDYzMzMsNDYzMzQsNDYzMzUsNDYzMzYsNDYzMzcsNDYzMzgsNDYzMzksNDYzNDAsNDYzNDEsNDYzNDIsNDYzNDMsNDYzNDQsNDYzNDUsNDYzNDYsNDYzNDcsNDYz''@;'; put 'put ''NDgsNDYzNDksNDYzNTAsNDYzNTEsNDYzNTIsNDYzNTMsNDYzNTQsNDYzNTUsNDYzNTgsNDYzNTksNDYzNjEsNDYzNjIsNDYzNjUsNDYzNjYsNDYzNjcsNDYzNjgsNDYzNjksNDYzNzAsNDYzNzEsNDYzNzQsNDYzNzksNDYzODAsNDYzODEsNDYzODIsNDYzODMsNDYzODYsNDYzODcsNDYzODks''@;'; put 'put ''NDYzOTAsNDYzOTEsNDYzOTMsNDYzOTQsNDYzOTUsNDYzOTYsNDYzOTcsNDYzOTgsNDYzOTksNDY0MDIsNDY0MDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0MDcsNDY0MDgsNDY0MDksNDY0MTAsNDY0MTQsNDY0MTUsNDY0MTcsNDY0MTgsNDY0MTksNDY0MjEsNDY0MjIsNDY0''@;'; put 'put ''MjMsNDY0MjQsNDY0MjUsNDY0MjYsNDY0MjcsNDY0MzAsNDY0MzQsNDY0MzUsNDY0MzYsNDY0MzcsNDY0MzgsNDY0MzksNDY0NDAsNDY0NDEsNDY0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0NDMsNDY0NDQsNDY0NDUsNDY0NDYsNDY0NDcsNDY0NDgsNDY0NDksNDY0NTAs''@;'; put 'put ''NDY0NTEsNDY0NTIsNDY0NTMsNDY0NTQsNDY0NTUsNDY0NTYsNDY0NTcsNDY0NTgsNDY0NTksNDY0NjAsNDY0NjEsNDY0NjIsNDY0NjMsNDY0NjQsNDY0NjUsNDY0NjYsNDY0NjcsNDY0NjgsNDY0NjksNDY0NzAsNDY0NzEsNDY0NzIsNDY0NzMsNDY0NzQsNDY0NzUsNDY0NzYsNDY0NzcsNDY0''@;'; put 'put ''NzgsNDY0NzksNDY0ODAsNDY0ODEsNDY0ODIsNDY0ODMsNDY0ODQsNDY0ODUsNDY0ODYsNDY0ODcsNDY0ODgsNDY0ODksNDY0OTAsNDY0OTEsNDY0OTIsNDY0OTMsNDY0OTQsNDY0OTUsNDY0OTgsNDY0OTksNDY1MDEsNDY1MDIsNDY1MDMsNDY1MDUsNDY1MDgsNDY1MDksNDY1MTAsNDY1MTEs''@;'; put 'put ''NDY1MTQsNDY1MTgsNDY1MTksNDY1MjAsNDY1MjEsNDY1MjIsNDY1MjYsNDY1MjcsNDY1MjksNDY1MzAsNDY1MzEsNDY1MzMsNDY1MzQsNDY1MzUsNDY1MzYsNDY1MzcsNDY1MzgsNDY1MzksNDY1NDIsNDY1NDYsNDY1NDcsNDY1NDgsNDY1NDksNDY1NTAsNDY1NTEsNDY1NTMsNDY1NTQsNDY1''@;'; put 'put ''NTUsNDY1NTYsNDY1NTcsNDY1NTgsNDY1NTksNDY1NjAsNDY1NjEsNDY1NjIsNDY1NjMsNDY1NjQsNDY1NjUsNDY1NjYsNDY1NjcsNDY1NjgsNDY1NjksNDY1NzAsNDY1NzEsNDY1NzMsNDY1NzQsNDY1NzUsNDY1NzYsNDY1NzcsNDY1NzgsNDY1NzksNDY1ODAsNDY1ODEsNDY1ODIsNDY1ODMs''@;'; put 'put ''NDY1ODQsNDY1ODUsNDY1ODYsNDY1ODcsNDY1ODgsNDY1ODksNDY1OTAsNDY1OTEsNDY1OTIsNDY1OTMsNDY1OTQsNDY1OTUsNDY1OTYsNDY1OTcsNDY1OTgsNDY1OTksNDY2MDAsNDY2MDEsNDY2MDIsNDY2MDMsNDY2MDQsNDY2MDUsNDY2MDYsNDY2MDcsNDY2MTAsNDY2MTEsNDY2MTMsNDY2''@;'; put 'put ''MTQsNDY2MTUsNDY2MTcsNDY2MTgsNDY2MTksNDY2MjAsNDY2MjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2MjIsNDY2MjMsNDY2MjQsNDY2MjUsNDY2MjYsNDY2MjcsNDY2MjgsNDY2MzAsNDY2MzEsNDY2MzIsNDY2MzMsNDY2MzQsNDY2MzUsNDY2MzcsNDY2MzgsNDY2Mzks''@;'; put 'put ''NDY2NDAsNDY2NDEsNDY2NDIsNDY2NDMsNDY2NDUsNDY2NDYsNDY2NDcsNDY2NDgsNDY2NDksNDY2NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2NTEsNDY2NTIsNDY2NTMsNDY2NTQsNDY2NTUsNDY2NTYsNDY2NTcsNDY2NTgsNDY2NTksNDY2NjAsNDY2NjEsNDY2NjIsNDY2''@;'; put 'put ''NjMsNDY2NjUsNDY2NjYsNDY2NjcsNDY2NjgsNDY2NjksNDY2NzAsNDY2NzEsNDY2NzIsNDY2NzMsNDY2NzQsNDY2NzUsNDY2NzYsNDY2NzcsNDY2NzgsNDY2NzksNDY2ODAsNDY2ODEsNDY2ODIsNDY2ODMsNDY2ODQsNDY2ODUsNDY2ODYsNDY2ODcsNDY2ODgsNDY2ODksNDY2OTAsNDY2OTEs''@;'; put 'put ''NDY2OTMsNDY2OTQsNDY2OTUsNDY2OTcsNDY2OTgsNDY2OTksNDY3MDAsNDY3MDEsNDY3MDIsNDY3MDMsNDY3MDQsNDY3MDUsNDY3MDYsNDY3MDcsNDY3MDgsNDY3MDksNDY3MTAsNDY3MTEsNDY3MTIsNDY3MTMsNDY3MTQsNDY3MTUsNDY3MTYsNDY3MTcsNDY3MTgsNDY3MTksNDY3MjAsNDY3''@;'; put 'put ''MjEsNDY3MjIsNDY3MjMsNDY3MjQsNDY3MjUsNDY3MjYsNDY3MjcsNDY3MjgsNDY3MjksNDY3MzAsNDY3MzEsNDY3MzIsNDY3MzMsNDY3MzQsNDY3MzUsNDY3MzYsNDY3MzcsNDY3MzgsNDY3MzksNDY3NDAsNDY3NDEsNDY3NDIsNDY3NDMsNDY3NDQsNDY3NDUsNDY3NDYsNDY3NDcsNDY3NTAs''@;'; put 'put ''NDY3NTEsNDY3NTMsNDY3NTQsNDY3NTUsNDY3NTcsNDY3NTgsNDY3NTksNDY3NjAsNDY3NjEsNDY3NjIsNDY3NjUsNDY3NjYsNDY3NjcsNDY3NjgsNDY3NzAsNDY3NzEsNDY3NzIsNDY3NzMsNDY3NzQsNDY3NzUsNDY3NzYsNDY3NzcsNDY3NzgsNDY3NzksNDY3ODAsNDY3ODEsNDY3ODIsNDY3''@;'; put 'put ''ODMsNDY3ODQsNDY3ODUsNDY3ODYsNDY3ODcsNDY3ODgsNDY3ODksNDY3OTAsNDY3OTEsNDY3OTIsNDY3OTMsNDY3OTQsNDY3OTUsNDY3OTYsNDY3OTcsNDY3OTgsNDY3OTksNDY4MDAsNDY4MDEsNDY4MDIsNDY4MDMsNDY4MDUsNDY4MDYsNDY4MDcsNDY4MDgsNDY4MDksNDY4MTAsNDY4MTEs''@;'; put 'put ''NDY4MTIsNDY4MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4MTQsNDY4MTUsNDY4MTYsNDY4MTcsNDY4MTgsNDY4MTksNDY4MjAsNDY4MjEsNDY4MjIsNDY4MjMsNDY4MjQsNDY4MjUsNDY4MjYsNDY4MjcsNDY4MjgsNDY4MjksNDY4MzAsNDY4MzEsNDY4MzMsNDY4MzQsNDY4''@;'; put 'put ''MzUsNDY4MzcsNDY4MzgsNDY4MzksNDY4NDEsNDY4NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4NDMsNDY4NDQsNDY4NDUsNDY4NDYsNDY4NDcsNDY4NTAsNDY4NTEsNDY4NTIsNDY4NTQsNDY4NTUsNDY4NTYsNDY4NTcsNDY4NTgsNDY4NTksNDY4NjAsNDY4NjEsNDY4NjIs''@;'; put 'put ''NDY4NjMsNDY4NjQsNDY4NjUsNDY4NjYsNDY4NjcsNDY4NjgsNDY4NjksNDY4NzAsNDY4NzEsNDY4NzIsNDY4NzMsNDY4NzQsNDY4NzUsNDY4NzYsNDY4NzcsNDY4NzgsNDY4NzksNDY4ODAsNDY4ODEsNDY4ODIsNDY4ODMsNDY4ODQsNDY4ODUsNDY4ODYsNDY4ODcsNDY4OTAsNDY4OTEsNDY4''@;'; put 'put ''OTMsNDY4OTQsNDY4OTcsNDY4OTgsNDY4OTksNDY5MDAsNDY5MDEsNDY5MDIsNDY5MDMsNDY5MDYsNDY5MDgsNDY5MDksNDY5MTAsNDY5MTEsNDY5MTIsNDY5MTMsNDY5MTQsNDY5MTUsNDY5MTcsNDY5MTgsNDY5MTksNDY5MjEsNDY5MjIsNDY5MjMsNDY5MjUsNDY5MjYsNDY5MjcsNDY5Mjgs''@;'; put 'put ''NDY5MjksNDY5MzAsNDY5MzEsNDY5MzQsNDY5MzUsNDY5MzYsNDY5MzcsNDY5MzgsNDY5MzksNDY5NDAsNDY5NDEsNDY5NDIsNDY5NDMsNDY5NDUsNDY5NDYsNDY5NDcsNDY5NDksNDY5NTAsNDY5NTEsNDY5NTMsNDY5NTQsNDY5NTUsNDY5NTYsNDY5NTcsNDY5NTgsNDY5NTksNDY5NjIsNDY5''@;'; put 'put ''NjQsNDY5NjYsNDY5NjcsNDY5NjgsNDY5NjksNDY5NzAsNDY5NzEsNDY5NzQsNDY5NzUsNDY5NzcsNDY5NzgsNDY5NzksNDY5ODEsNDY5ODIsNDY5ODMsNDY5ODQsNDY5ODUsNDY5ODYsNDY5ODcsNDY5OTAsNDY5OTUsNDY5OTYsNDY5OTcsNDcwMDIsNDcwMDMsNDcwMDUsNDcwMDYsNDcwMDcs''@;'; put 'put ''NDcwMDksNDcwMTAsNDcwMTEsNDcwMTIsNDcwMTMsNDcwMTQsNDcwMTUsNDcwMTgsNDcwMjIsNDcwMjMsNDcwMjQsNDcwMjUsNDcwMjYsNDcwMjcsNDcwMzAsNDcwMzEsNDcwMzMsNDcwMzQsNDcwMzUsNDcwMzYsNDcwMzcsNDcwMzgsNDcwMzksNDcwNDAsNDcwNDEsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsNDcwNDIsNDcwNDMsNDcwNDQsNDcwNDUsNDcwNDYsNDcwNDgsNDcwNTAsNDcwNTEsNDcwNTIsNDcwNTMsNDcwNTQsNDcwNTUsNDcwNTYsNDcwNTcsNDcwNTgsNDcwNTksNDcwNjAsNDcwNjEsNDcwNjIsNDcwNjMsNDcwNjQsNDcwNjUsNDcwNjYsNDcwNjcsNDcwNjgs''@;'; put 'put ''NDcwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNzAsNDcwNzEsNDcwNzIsNDcwNzMsNDcwNzQsNDcwNzUsNDcwNzYsNDcwNzcsNDcwNzgsNDcwNzksNDcwODAsNDcwODEsNDcwODIsNDcwODMsNDcwODYsNDcwODcsNDcwODksNDcwOTAsNDcwOTEsNDcwOTMsNDcwOTQsNDcw''@;'; put 'put ''OTUsNDcwOTYsNDcwOTcsNDcwOTgsNDcwOTksNDcxMDIsNDcxMDYsNDcxMDcsNDcxMDgsNDcxMDksNDcxMTAsNDcxMTQsNDcxMTUsNDcxMTcsNDcxMTgsNDcxMTksNDcxMjEsNDcxMjIsNDcxMjMsNDcxMjQsNDcxMjUsNDcxMjYsNDcxMjcsNDcxMzAsNDcxMzIsNDcxMzQsNDcxMzUsNDcxMzYs''@;'; put 'put ''NDcxMzcsNDcxMzgsNDcxMzksNDcxNDIsNDcxNDMsNDcxNDUsNDcxNDYsNDcxNDcsNDcxNDksNDcxNTAsNDcxNTEsNDcxNTIsNDcxNTMsNDcxNTQsNDcxNTUsNDcxNTgsNDcxNjIsNDcxNjMsNDcxNjQsNDcxNjUsNDcxNjYsNDcxNjcsNDcxNjksNDcxNzAsNDcxNzEsNDcxNzMsNDcxNzQsNDcx''@;'; put 'put ''NzUsNDcxNzYsNDcxNzcsNDcxNzgsNDcxNzksNDcxODAsNDcxODEsNDcxODIsNDcxODMsNDcxODQsNDcxODYsNDcxODgsNDcxODksNDcxOTAsNDcxOTEsNDcxOTIsNDcxOTMsNDcxOTQsNDcxOTUsNDcxOTgsNDcxOTksNDcyMDEsNDcyMDIsNDcyMDMsNDcyMDUsNDcyMDYsNDcyMDcsNDcyMDgs''@;'; put 'put ''NDcyMDksNDcyMTAsNDcyMTEsNDcyMTQsNDcyMTYsNDcyMTgsNDcyMTksNDcyMjAsNDcyMjEsNDcyMjIsNDcyMjMsNDcyMjUsNDcyMjYsNDcyMjcsNDcyMjksNDcyMzAsNDcyMzEsNDcyMzIsNDcyMzMsNDcyMzQsNDcyMzUsNDcyMzYsNDcyMzcsNDcyMzgsNDcyMzksNDcyNDAsNDcyNDEsNDcy''@;'; put 'put ''NDIsNDcyNDMsNDcyNDQsNDcyNDYsNDcyNDcsNDcyNDgsNDcyNDksNDcyNTAsNDcyNTEsNDcyNTIsNDcyNTMsNDcyNTQsNDcyNTUsNDcyNTYsNDcyNTcsNDcyNTgsNDcyNTksNDcyNjAsNDcyNjEsNDcyNjIsNDcyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyNjQsNDcyNjUs''@;'; put 'put ''NDcyNjYsNDcyNjcsNDcyNjgsNDcyNjksNDcyNzAsNDcyNzEsNDcyNzMsNDcyNzQsNDcyNzUsNDcyNzYsNDcyNzcsNDcyNzgsNDcyNzksNDcyODEsNDcyODIsNDcyODMsNDcyODUsNDcyODYsNDcyODcsNDcyODksNDcyOTAsNDcyOTEsNDcyOTIsNDcyOTMsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsNDcyOTQsNDcyOTUsNDcyOTgsNDczMDAsNDczMDIsNDczMDMsNDczMDQsNDczMDUsNDczMDYsNDczMDcsNDczMDksNDczMTAsNDczMTEsNDczMTMsNDczMTQsNDczMTUsNDczMTcsNDczMTgsNDczMTksNDczMjAsNDczMjEsNDczMjIsNDczMjMsNDczMjQsNDczMjYsNDczMjgs''@;'; put 'put ''NDczMzAsNDczMzEsNDczMzIsNDczMzMsNDczMzQsNDczMzUsNDczMzgsNDczMzksNDczNDEsNDczNDIsNDczNDMsNDczNDUsNDczNDYsNDczNDcsNDczNDgsNDczNDksNDczNTAsNDczNTEsNDczNTQsNDczNTYsNDczNTgsNDczNTksNDczNjAsNDczNjEsNDczNjIsNDczNjMsNDczNjUsNDcz''@;'; put 'put ''NjYsNDczNjcsNDczNjgsNDczNjksNDczNzAsNDczNzEsNDczNzIsNDczNzMsNDczNzQsNDczNzUsNDczNzYsNDczNzcsNDczNzgsNDczNzksNDczODAsNDczODEsNDczODIsNDczODMsNDczODUsNDczODYsNDczODcsNDczODgsNDczODksNDczOTAsNDczOTEsNDczOTMsNDczOTQsNDczOTUs''@;'; put 'put ''NDczOTYsNDczOTcsNDczOTgsNDczOTksNDc0MDAsNDc0MDEsNDc0MDIsNDc0MDMsNDc0MDQsNDc0MDUsNDc0MDYsNDc0MDcsNDc0MDgsNDc0MDksNDc0MTAsNDc0MTEsNDc0MTIsNDc0MTMsNDc0MTQsNDc0MTUsNDc0MTYsNDc0MTcsNDc0MTgsNDc0MTksNDc0MjIsNDc0MjMsNDc0MjUsNDc0''@;'; put 'put ''MjYsNDc0MjcsNDc0MjksNDc0MzAsNDc0MzEsNDc0MzIsNDc0MzMsNDc0MzQsNDc0MzUsNDc0MzcsNDc0MzgsNDc0NDAsNDc0NDIsNDc0NDMsNDc0NDQsNDc0NDUsNDc0NDYsNDc0NDcsNDc0NTAsNDc0NTEsNDc0NTMsNDc0NTQsNDc0NTUsNDc0NTcsNDc0NTgsNDc0NTksNDc0NjAsNDc0NjEs''@;'; put 'put ''NDc0NjIsNDc0NjMsNDc0NjYsNDc0NjgsNDc0NzAsNDc0NzEsNDc0NzIsNDc0NzMsNDc0NzQsNDc0NzUsNDc0NzgsNDc0NzksNDc0ODEsNDc0ODIsNDc0ODMsNDc0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc0ODYsNDc0ODcsNDc0ODgsNDc0ODksNDc0OTAsNDc0OTEsNDc0''@;'; put 'put ''OTQsNDc0OTYsNDc0OTksNDc1MDAsNDc1MDMsNDc1MDQsNDc1MDUsNDc1MDYsNDc1MDcsNDc1MDgsNDc1MDksNDc1MTAsNDc1MTEsNDc1MTIsNDc1MTMsNDc1MTQsNDc1MTUsNDc1MTYsNDc1MTcsNDc1MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc1MTksNDc1MjAsNDc1MjEs''@;'; put 'put ''NDc1MjIsNDc1MjMsNDc1MjQsNDc1MjUsNDc1MjYsNDc1MjcsNDc1MjgsNDc1MjksNDc1MzAsNDc1MzEsNDc1MzQsNDc1MzUsNDc1MzcsNDc1MzgsNDc1MzksNDc1NDEsNDc1NDIsNDc1NDMsNDc1NDQsNDc1NDUsNDc1NDYsNDc1NDcsNDc1NTAsNDc1NTIsNDc1NTQsNDc1NTUsNDc1NTYsNDc1''@;'; put 'put ''NTcsNDc1NTgsNDc1NTksNDc1NjIsNDc1NjMsNDc1NjUsNDc1NzEsNDc1NzIsNDc1NzMsNDc1NzQsNDc1NzUsNDc1NzgsNDc1ODAsNDc1ODMsNDc1ODQsNDc1ODYsNDc1OTAsNDc1OTEsNDc1OTMsNDc1OTQsNDc1OTUsNDc1OTcsNDc1OTgsNDc1OTksNDc2MDAsNDc2MDEsNDc2MDIsNDc2MDMs''@;'; put 'put ''NDc2MDYsNDc2MTEsNDc2MTIsNDc2MTMsNDc2MTQsNDc2MTUsNDc2MTgsNDc2MTksNDc2MjAsNDc2MjEsNDc2MjIsNDc2MjMsNDc2MjUsNDc2MjYsNDc2MjcsNDc2MjgsNDc2MjksNDc2MzAsNDc2MzEsNDc2MzIsNDc2MzMsNDc2MzQsNDc2MzUsNDc2MzYsNDc2MzgsNDc2MzksNDc2NDAsNDc2''@;'; put 'put ''NDEsNDc2NDIsNDc2NDMsNDc2NDQsNDc2NDUsNDc2NDYsNDc2NDcsNDc2NDgsNDc2NDksNDc2NTAsNDc2NTEsNDc2NTIsNDc2NTMsNDc2NTQsNDc2NTUsNDc2NTYsNDc2NTcsNDc2NTgsNDc2NTksNDc2NjAsNDc2NjEsNDc2NjIsNDc2NjMsNDc2NjQsNDc2NjUsNDc2NjYsNDc2NjcsNDc2Njgs''@;'; put 'put ''NDc2NjksNDc2NzAsNDc2NzEsNDc2NzQsNDc2NzUsNDc2NzcsNDc2NzgsNDc2NzksNDc2ODEsNDc2ODMsNDc2ODQsNDc2ODUsNDc2ODYsNDc2ODcsNDc2OTAsNDc2OTIsNDc2OTUsNDc2OTYsNDc2OTcsNDc2OTgsNDc3MDIsNDc3MDMsNDc3MDUsNDc3MDYsNDc3MDcsNDc3MDksNDc3MTAsNDc3''@;'; put 'put ''MTEsNDc3MTIsNDc3MTMsNDc3MTQsNDc3MTUsNDc3MTgsNDc3MjIsNDc3MjMsNDc3MjQsNDc3MjUsNDc3MjYsNDc3MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3MzAsNDc3MzEsNDc3MzMsNDc3MzQsNDc3MzUsNDc3MzcsNDc3MzgsNDc3MzksNDc3NDAsNDc3NDEsNDc3NDIs''@;'; put 'put ''NDc3NDMsNDc3NDQsNDc3NDUsNDc3NDYsNDc3NTAsNDc3NTIsNDc3NTMsNDc3NTQsNDc3NTUsNDc3NTcsNDc3NTgsNDc3NTksNDc3NjAsNDc3NjEsNDc3NjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3NjMsNDc3NjQsNDc3NjUsNDc3NjYsNDc3NjcsNDc3NjgsNDc3NjksNDc3''@;'; put 'put ''NzAsNDc3NzEsNDc3NzIsNDc3NzMsNDc3NzQsNDc3NzUsNDc3NzYsNDc3NzcsNDc3NzgsNDc3NzksNDc3ODAsNDc3ODEsNDc3ODIsNDc3ODMsNDc3ODYsNDc3ODksNDc3OTAsNDc3OTEsNDc3OTMsNDc3OTUsNDc3OTYsNDc3OTcsNDc3OTgsNDc3OTksNDc4MDIsNDc4MDQsNDc4MDYsNDc4MDcs''@;'; put 'put ''NDc4MDgsNDc4MDksNDc4MTAsNDc4MTEsNDc4MTMsNDc4MTQsNDc4MTUsNDc4MTcsNDc4MTgsNDc4MTksNDc4MjAsNDc4MjEsNDc4MjIsNDc4MjMsNDc4MjQsNDc4MjUsNDc4MjYsNDc4MjcsNDc4MjgsNDc4MjksNDc4MzAsNDc4MzEsNDc4MzQsNDc4MzUsNDc4MzYsNDc4MzcsNDc4MzgsNDc4''@;'; put 'put ''MzksNDc4NDAsNDc4NDEsNDc4NDIsNDc4NDMsNDc4NDQsNDc4NDUsNDc4NDYsNDc4NDcsNDc4NDgsNDc4NDksNDc4NTAsNDc4NTEsNDc4NTIsNDc4NTMsNDc4NTQsNDc4NTUsNDc4NTYsNDc4NTcsNDc4NTgsNDc4NTksNDc4NjAsNDc4NjEsNDc4NjIsNDc4NjMsNDc4NjQsNDc4NjUsNDc4NjYs''@;'; put 'put ''NDc4NjcsNDc4NjksNDc4NzAsNDc4NzEsNDc4NzMsNDc4NzQsNDc4NzUsNDc4NzcsNDc4NzgsNDc4NzksNDc4ODAsNDc4ODEsNDc4ODIsNDc4ODMsNDc4ODQsNDc4ODYsNDc4ODgsNDc4OTAsNDc4OTEsNDc4OTIsNDc4OTMsNDc4OTQsNDc4OTUsNDc4OTcsNDc4OTgsNDc4OTksNDc5MDEsNDc5''@;'; put 'put ''MDIsNDc5MDMsNDc5MDUsNDc5MDYsNDc5MDcsNDc5MDgsNDc5MDksNDc5MTAsNDc5MTEsNDc5MTIsNDc5MTQsNDc5MTYsNDc5MTcsNDc5MTgsNDc5MTksNDc5MjAsNDc5MjEsNDc5MjIsNDc5MjMsNDc5MjcsNDc5MjksNDc5MzAsNDc5MzUsNDc5MzYsNDc5MzcsNDc5MzgsNDc5MzksNDc5NDIs''@;'; put 'put ''NDc5NDQsNDc5NDYsNDc5NDcsNDc5NDgsNDc5NTAsNDc5NTMsNDc5NTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5NTUsNDc5NTcsNDc5NTgsNDc5NTksNDc5NjEsNDc5NjIsNDc5NjMsNDc5NjQsNDc5NjUsNDc5NjYsNDc5NjcsNDc5NjgsNDc5NzAsNDc5NzIsNDc5NzMsNDc5''@;'; put 'put ''NzQsNDc5NzUsNDc5NzYsNDc5NzcsNDc5NzgsNDc5NzksNDc5ODEsNDc5ODIsNDc5ODMsNDc5ODQsNDc5ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5ODYsNDc5ODcsNDc5ODgsNDc5ODksNDc5OTAsNDc5OTEsNDc5OTIsNDc5OTMsNDc5OTQsNDc5OTUsNDc5OTYsNDc5OTcs''@;'; put 'put ''NDc5OTgsNDc5OTksNDhlMyw0ODAwMSw0ODAwMiw0ODAwMyw0ODAwNCw0ODAwNSw0ODAwNiw0ODAwNyw0ODAwOSw0ODAxMCw0ODAxMSw0ODAxMyw0ODAxNCw0ODAxNSw0ODAxNyw0ODAxOCw0ODAxOSw0ODAyMCw0ODAyMSw0ODAyMiw0ODAyMyw0ODAyNCw0ODAyNSw0ODAyNiw0ODAyNyw0ODAy''@;'; put 'put ''OCw0ODAyOSw0ODAzMCw0ODAzMSw0ODAzMiw0ODAzMyw0ODAzNCw0ODAzNSw0ODAzNyw0ODAzOCw0ODAzOSw0ODA0MSw0ODA0Miw0ODA0Myw0ODA0NSw0ODA0Niw0ODA0Nyw0ODA0OCw0ODA0OSw0ODA1MCw0ODA1MSw0ODA1Myw0ODA1NCw0ODA1Niw0ODA1Nyw0ODA1OCw0ODA1OSw0ODA2MCw0''@;'; put 'put ''ODA2MSw0ODA2Miw0ODA2Myw0ODA2NSw0ODA2Niw0ODA2Nyw0ODA2OSw0ODA3MCw0ODA3MSw0ODA3Myw0ODA3NCw0ODA3NSw0ODA3Niw0ODA3Nyw0ODA3OCw0ODA3OSw0ODA4MSw0ODA4Miw0ODA4NCw0ODA4NSw0ODA4Niw0ODA4Nyw0ODA4OCw0ODA4OSw0ODA5MCw0ODA5MSw0ODA5Miw0ODA5''@;'; put 'put ''Myw0ODA5NCw0ODA5NSw0ODA5Niw0ODA5Nyw0ODA5OCw0ODA5OSw0ODEwMCw0ODEwMSw0ODEwMiw0ODEwMyw0ODEwNCw0ODEwNSw0ODEwNiw0ODEwNyw0ODEwOCw0ODEwOSw0ODExMCw0ODExMSw0ODExMiw0ODExMyw0ODExNCw0ODExNSw0ODExNiw0ODExNyw0ODExOCw0ODExOSw0ODEyMiw0''@;'; put 'put ''ODEyMyw0ODEyNSw0ODEyNiw0ODEyOSw0ODEzMSw0ODEzMiw0ODEzMyw0ODEzNCw0ODEzNSw0ODEzOCw0ODE0Miw0ODE0NCw0ODE0Niw0ODE0Nyw0ODE1Myw0ODE1NCw0ODE2MCw0ODE2MSw0ODE2Miw0ODE2Myw0ODE2Niw0ODE2OCw0ODE3MCw0ODE3MSw0ODE3Miw0ODE3NCw0ODE3NSw0ODE3''@;'; put 'put ''OCw0ODE3OSw0ODE4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODE4Miw0ODE4Myw0ODE4NSw0ODE4Niw0ODE4Nyw0ODE4OCw0ODE4OSw0ODE5MCw0ODE5MSw0ODE5NCw0ODE5OCw0ODE5OSw0ODIwMCw0ODIwMiw0ODIwMyw0ODIwNiw0ODIwNyw0ODIwOSw0ODIxMCw0ODIxMSw0''@;'; put 'put ''ODIxMiw0ODIxMyw0ODIxNCw0ODIxNSw0ODIxNiw0ODIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODIxOCw0ODIxOSw0ODIyMCw0ODIyMiw0ODIyMyw0ODIyNCw0ODIyNSw0ODIyNiw0ODIyNyw0ODIyOCw0ODIyOSw0ODIzMCw0ODIzMSw0ODIzMiw0ODIzMyw0ODIzNCw0ODIz''@;'; put 'put ''NSw0ODIzNiw0ODIzNyw0ODIzOCw0ODIzOSw0ODI0MCw0ODI0MSw0ODI0Miw0ODI0Myw0ODI0NCw0ODI0NSw0ODI0Niw0ODI0Nyw0ODI0OCw0ODI0OSw0ODI1MCw0ODI1MSw0ODI1Miw0ODI1Myw0ODI1NCw0ODI1NSw0ODI1Niw0ODI1Nyw0ODI1OCw0ODI1OSw0ODI2Miw0ODI2Myw0ODI2NSw0''@;'; put 'put ''ODI2Niw0ODI2OSw0ODI3MSw0ODI3Miw0ODI3Myw0ODI3NCw0ODI3NSw0ODI3OCw0ODI4MCw0ODI4Myw0ODI4NCw0ODI4NSw0ODI4Niw0ODI4Nyw0ODI5MCw0ODI5MSw0ODI5Myw0ODI5NCw0ODI5Nyw0ODI5OCw0ODI5OSw0ODMwMCw0ODMwMSw0ODMwMiw0ODMwMyw0ODMwNiw0ODMxMCw0ODMx''@;'; put 'put ''MSw0ODMxMiw0ODMxMyw0ODMxNCw0ODMxNSw0ODMxOCw0ODMxOSw0ODMyMSw0ODMyMiw0ODMyMyw0ODMyNSw0ODMyNiw0ODMyNyw0ODMyOCw0ODMyOSw0ODMzMCw0ODMzMSw0ODMzMiw0ODMzNCw0ODMzOCw0ODMzOSw0ODM0MCw0ODM0Miw0ODM0Myw0ODM0NSw0ODM0Niw0ODM0Nyw0ODM0OSw0''@;'; put 'put ''ODM1MCw0ODM1MSw0ODM1Miw0ODM1Myw0ODM1NCw0ODM1NSw0ODM1Niw0ODM1Nyw0ODM1OCw0ODM1OSw0ODM2MCw0ODM2MSw0ODM2Miw0ODM2Myw0ODM2NCw0ODM2NSw0ODM2Niw0ODM2Nyw0ODM2OCw0ODM2OSw0ODM3MCw0ODM3MSw0ODM3NSw0ODM3Nyw0ODM3OCw0ODM3OSw0ODM4MSw0ODM4''@;'; put 'put ''Miw0ODM4Myw0ODM4NCw0ODM4NSw0ODM4Niw0ODM4Nyw0ODM5MCw0ODM5Miw0ODM5NCw0ODM5NSw0ODM5Niw0ODM5Nyw0ODM5OCw0ODM5OSw0ODQwMSw0ODQwMiw0ODQwMyw0ODQwNSw0ODQwNiw0ODQwNyw0ODQwOCw0ODQwOSw0ODQxMCw0ODQxMSw0ODQxMiw0ODQxMyxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCw0ODQxNCw0ODQxNSw0ODQxNiw0ODQxNyw0ODQxOCw0ODQxOSw0ODQyMSw0ODQyMiw0ODQyMyw0ODQyNCw0ODQyNSw0ODQyNiw0ODQyNyw0ODQyOSw0ODQzMCw0ODQzMSw0ODQzMiw0ODQzMyw0ODQzNCw0ODQzNSw0ODQzNiw0ODQzNyw0ODQzOCw0ODQzOSw0ODQ0''@;'; put 'put ''MCw0ODQ0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQ0Miw0ODQ0Myw0ODQ0NCw0ODQ0NSw0ODQ0Niw0ODQ0Nyw0ODQ0OSw0ODQ1MCw0ODQ1MSw0ODQ1Miw0ODQ1Myw0ODQ1NCw0ODQ1NSw0ODQ1OCw0ODQ1OSw0ODQ2MSw0ODQ2Miw0ODQ2Myw0ODQ2NSw0ODQ2Niw0ODQ2Nyw0''@;'; put 'put ''ODQ2OCw0ODQ2OSw0ODQ3MCw0ODQ3MSw0ODQ3NCw0ODQ3NSw0ODQ3Niw0ODQ3Nyw0ODQ3OCw0ODQ3OSw0ODQ4MCw0ODQ4MSw0ODQ4Miw0ODQ4Myw0ODQ4NSw0ODQ4Niw0ODQ4Nyw0ODQ4OSw0ODQ5MCw0ODQ5MSw0ODQ5Miw0ODQ5Myw0ODQ5NCw0ODQ5NSw0ODQ5Niw0ODQ5Nyw0ODQ5OCw0ODQ5''@;'; put 'put ''OSw0ODUwMCw0ODUwMSw0ODUwMiw0ODUwMyw0ODUwNCw0ODUwNSw0ODUwNiw0ODUwNyw0ODUwOCw0ODUwOSw0ODUxMCw0ODUxMSw0ODUxNCw0ODUxNSw0ODUxNyw0ODUxOCw0ODUyMyw0ODUyNCw0ODUyNSw0ODUyNiw0ODUyNyw0ODUzMCw0ODUzMiw0ODUzNCw0ODUzNSw0ODUzNiw0ODUzOSw0''@;'; put 'put ''ODU0MSw0ODU0Miw0ODU0Myw0ODU0NCw0ODU0NSw0ODU0Niw0ODU0Nyw0ODU0OSw0ODU1MCw0ODU1MSw0ODU1Miw0ODU1Myw0ODU1NCw0ODU1NSw0ODU1Niw0ODU1Nyw0ODU1OCw0ODU1OSw0ODU2MSw0ODU2Miw0ODU2Myw0ODU2NCw0ODU2NSw0ODU2Niw0ODU2Nyw0ODU2OSw0ODU3MCw0ODU3''@;'; put 'put ''MSw0ODU3Miw0ODU3Myw0ODU3NCw0ODU3NSw0ODU3Niw0ODU3Nyw0ODU3OCw0ODU3OSw0ODU4MCw0ODU4MSw0ODU4Miw0ODU4Myw0ODU4NCw0ODU4NSw0ODU4Niw0ODU4Nyw0ODU4OCw0ODU4OSw0ODU5MCw0ODU5MSw0ODU5Miw0ODU5Myw0ODU5NCw0ODU5NSw0ODU5OCw0ODU5OSw0ODYwMSw0''@;'; put 'put ''ODYwMiw0ODYwMyw0ODYwNSw0ODYwNiw0ODYwNyw0ODYwOCw0ODYwOSw0ODYxMCw0ODYxMSw0ODYxMiw0ODYxMyw0ODYxNCw0ODYxNSw0ODYxNiw0ODYxOCw0ODYxOSw0ODYyMCw0ODYyMSw0ODYyMiw0ODYyMyw0ODYyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODYyNiw0ODYy''@;'; put 'put ''Nyw0ODYyOSw0ODYzMCw0ODYzMSw0ODYzMyw0ODYzNCw0ODYzNSw0ODYzNiw0ODYzNyw0ODYzOCw0ODYzOSw0ODY0MSw0ODY0Miw0ODY0NCw0ODY0Niw0ODY0Nyw0ODY0OCw0ODY0OSw0ODY1MCw0ODY1MSw0ODY1NCw0ODY1NSw0ODY1Nyw0ODY1OCw0ODY1OSxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCw0ODY2MSw0ODY2Miw0ODY2Myw0ODY2NCw0ODY2NSw0ODY2Niw0ODY2Nyw0ODY3MCw0ODY3Miw0ODY3Myw0ODY3NCw0ODY3NSw0ODY3Niw0ODY3Nyw0ODY3OCw0ODY3OSw0ODY4MCw0ODY4MSw0ODY4Miw0ODY4Myw0ODY4NCw0ODY4NSw0ODY4Niw0ODY4Nyw0ODY4OCw0ODY4''@;'; put 'put ''OSw0ODY5MCw0ODY5MSw0ODY5Miw0ODY5Myw0ODY5NCw0ODY5NSw0ODY5Niw0ODY5Nyw0ODY5OCw0ODY5OSw0ODcwMCw0ODcwMSw0ODcwMiw0ODcwMyw0ODcwNCw0ODcwNSw0ODcwNiw0ODcwNyw0ODcxMCw0ODcxMSw0ODcxMyw0ODcxNCw0ODcxNSw0ODcxNyw0ODcxOSw0ODcyMCw0ODcyMSw0''@;'; put 'put ''ODcyMiw0ODcyMyw0ODcyNiw0ODcyOCw0ODczMiw0ODczMyw0ODczNCw0ODczNSw0ODczOCw0ODczOSw0ODc0MSw0ODc0Miw0ODc0Myw0ODc0NSw0ODc0Nyw0ODc0OCw0ODc0OSw0ODc1MCw0ODc1MSw0ODc1NCw0ODc1OCw0ODc1OSw0ODc2MCw0ODc2MSw0ODc2Miw0ODc2Niw0ODc2Nyw0ODc2''@;'; put 'put ''OSw0ODc3MCw0ODc3MSw0ODc3Myw0ODc3NCw0ODc3NSw0ODc3Niw0ODc3Nyw0ODc3OCw0ODc3OSw0ODc4Miw0ODc4Niw0ODc4Nyw0ODc4OCw0ODc4OSw0ODc5MCw0ODc5MSw0ODc5NCw0ODc5NSw0ODc5Niw0ODc5Nyw0ODc5OCw0ODc5OSw0ODgwMCw0ODgwMSw0ODgwMiw0ODgwMyw0ODgwNCw0''@;'; put 'put ''ODgwNSw0ODgwNiw0ODgwNyw0ODgwOSw0ODgxMCw0ODgxMSw0ODgxMiw0ODgxMyw0ODgxNCw0ODgxNSw0ODgxNiw0ODgxNyw0ODgxOCw0ODgxOSw0ODgyMCw0ODgyMSw0ODgyMiw0ODgyMyw0ODgyNCw0ODgyNSw0ODgyNiw0ODgyNyw0ODgyOCw0ODgyOSw0ODgzMCw0ODgzMSw0ODgzMiw0ODgz''@;'; put 'put ''Myw0ODgzNCw0ODgzNSw0ODgzNiw0ODgzNyw0ODgzOCw0ODgzOSw0ODg0MCw0ODg0MSw0ODg0Miw0ODg0Myw0ODg0NCw0ODg0NSw0ODg0Niw0ODg0Nyw0ODg1MCw0ODg1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg1Myw0ODg1NCw0ODg1Nyw0ODg1OCw0ODg1OSw0ODg2MCw0''@;'; put 'put ''ODg2MSw0ODg2Miw0ODg2Myw0ODg2NSw0ODg2Niw0ODg3MCw0ODg3MSw0ODg3Miw0ODg3Myw0ODg3NCw0ODg3NSw0ODg3Nyw0ODg3OCw0ODg3OSw0ODg4MCw0ODg4MSw0ODg4Miw0ODg4Myw0ODg4NCw0ODg4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg4Niw0ODg4Nyw0ODg4''@;'; put 'put ''OCw0ODg4OSw0ODg5MCw0ODg5MSw0ODg5Miw0ODg5Myw0ODg5NCw0ODg5NSw0ODg5Niw0ODg5OCw0ODg5OSw0ODkwMCw0ODkwMSw0ODkwMiw0ODkwMyw0ODkwNiw0ODkwNyw0ODkwOCw0ODkwOSw0ODkxMCw0ODkxMSw0ODkxMiw0ODkxMyw0ODkxNCw0ODkxNSw0ODkxNiw0ODkxNyw0ODkxOCw0''@;'; put 'put ''ODkxOSw0ODkyMiw0ODkyNiw0ODkyNyw0ODkyOCw0ODkyOSw0ODkzMCw0ODkzMSw0ODkzMiw0ODkzMyw0ODkzNCw0ODkzNSw0ODkzNiw0ODkzNyw0ODkzOCw0ODkzOSw0ODk0MCw0ODk0MSw0ODk0Miw0ODk0Myw0ODk0NCw0ODk0NSw0ODk0Niw0ODk0Nyw0ODk0OCw0ODk0OSw0ODk1MCw0ODk1''@;'; put 'put ''MSw0ODk1Miw0ODk1Myw0ODk1NCw0ODk1NSw0ODk1Niw0ODk1Nyw0ODk1OCw0ODk1OSw0ODk2Miw0ODk2Myw0ODk2NSw0ODk2Niw0ODk2Nyw0ODk2OSw0ODk3MCw0ODk3MSw0ODk3Miw0ODk3Myw0ODk3NCw0ODk3NSw0ODk3OCw0ODk3OSw0ODk4MCw0ODk4Miw0ODk4Myw0ODk4NCw0ODk4NSw0''@;'; put 'put ''ODk4Niw0ODk4Nyw0ODk4OCw0ODk4OSw0ODk5MCw0ODk5MSw0ODk5Miw0ODk5Myw0ODk5NCw0ODk5NSw0ODk5Niw0ODk5Nyw0ODk5OCw0ODk5OSw0OWUzLDQ5MDAxLDQ5MDAyLDQ5MDAzLDQ5MDA0LDQ5MDA1LDQ5MDA2LDQ5MDA3LDQ5MDA4LDQ5MDA5LDQ5MDEwLDQ5MDExLDQ5MDEyLDQ5MDEz''@;'; put 'put ''LDQ5MDE0LDQ5MDE1LDQ5MDE2LDQ5MDE3LDQ5MDE4LDQ5MDE5LDQ5MDIwLDQ5MDIxLDQ5MDIyLDQ5MDIzLDQ5MDI0LDQ5MDI1LDQ5MDI2LDQ5MDI3LDQ5MDI4LDQ5MDI5LDQ5MDMwLDQ5MDMxLDQ5MDMyLDQ5MDMzLDQ5MDM0LDQ5MDM1LDQ5MDM2LDQ5MDM3LDQ5MDM4LDQ5MDM5LDQ5MDQwLDQ5''@;'; put 'put ''MDQxLDQ5MDQyLDQ5MDQzLDQ5MDQ1LDQ5MDQ2LDQ5MDQ3LDQ5MDQ4LDQ5MDQ5LDQ5MDUwLDQ5MDUxLDQ5MDUyLDQ5MDUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDU0LDQ5MDU1LDQ5MDU2LDQ5MDU3LDQ5MDU4LDQ5MDU5LDQ5MDYwLDQ5MDYxLDQ5MDYyLDQ5MDYzLDQ5MDY0''@;'; put 'put ''LDQ5MDY1LDQ5MDY2LDQ5MDY3LDQ5MDY4LDQ5MDY5LDQ5MDcwLDQ5MDcxLDQ5MDczLDQ5MDc0LDQ5MDc1LDQ5MDc2LDQ5MDc3LDQ5MDc4LDQ5MDc5LDQ5MDgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDgxLDQ5MDgyLDQ5MDgzLDQ5MDg0LDQ5MDg1LDQ5MDg2LDQ5MDg3LDQ5''@;'; put 'put ''MDg4LDQ5MDg5LDQ5MDkwLDQ5MDkxLDQ5MDkyLDQ5MDk0LDQ5MDk1LDQ5MDk2LDQ5MDk3LDQ5MDk4LDQ5MDk5LDQ5MTAyLDQ5MTAzLDQ5MTA1LDQ5MTA2LDQ5MTA3LDQ5MTA5LDQ5MTEwLDQ5MTExLDQ5MTEyLDQ5MTEzLDQ5MTE0LDQ5MTE1LDQ5MTE3LDQ5MTE4LDQ5MTIwLDQ5MTIyLDQ5MTIz''@;'; put 'put ''LDQ5MTI0LDQ5MTI1LDQ5MTI2LDQ5MTI3LDQ5MTI4LDQ5MTI5LDQ5MTMwLDQ5MTMxLDQ5MTMyLDQ5MTMzLDQ5MTM0LDQ5MTM1LDQ5MTM2LDQ5MTM3LDQ5MTM4LDQ5MTM5LDQ5MTQwLDQ5MTQxLDQ5MTQyLDQ5MTQzLDQ5MTQ0LDQ5MTQ1LDQ5MTQ2LDQ5MTQ3LDQ5MTQ4LDQ5MTQ5LDQ5MTUwLDQ5''@;'; put 'put ''MTUxLDQ5MTUyLDQ5MTUzLDQ5MTU0LDQ5MTU1LDQ5MTU2LDQ5MTU3LDQ5MTU4LDQ5MTU5LDQ5MTYwLDQ5MTYxLDQ5MTYyLDQ5MTYzLDQ5MTY0LDQ5MTY1LDQ5MTY2LDQ5MTY3LDQ5MTY4LDQ5MTY5LDQ5MTcwLDQ5MTcxLDQ5MTcyLDQ5MTczLDQ5MTc0LDQ5MTc1LDQ5MTc2LDQ5MTc3LDQ5MTc4''@;'; put 'put ''LDQ5MTc5LDQ5MTgwLDQ5MTgxLDQ5MTgyLDQ5MTgzLDQ5MTg0LDQ5MTg1LDQ5MTg2LDQ5MTg3LDQ5MTg4LDQ5MTg5LDQ5MTkwLDQ5MTkxLDQ5MTkyLDQ5MTkzLDQ5MTk0LDQ5MTk1LDQ5MTk2LDQ5MTk3LDQ5MTk4LDQ5MTk5LDQ5MjAwLDQ5MjAxLDQ5MjAyLDQ5MjAzLDQ5MjA0LDQ5MjA1LDQ5''@;'; put 'put ''MjA2LDQ5MjA3LDQ5MjA4LDQ5MjA5LDQ5MjEwLDQ5MjExLDQ5MjEzLDQ5MjE0LDQ5MjE1LDQ5MjE2LDQ5MjE3LDQ5MjE4LDQ5MjE5LDQ5MjIwLDQ5MjIxLDQ5MjIyLDQ5MjIzLDQ5MjI0LDQ5MjI1LDQ5MjI2LDQ5MjI3LDQ5MjI4LDQ5MjI5LDQ5MjMwLDQ5MjMxLDQ5MjMyLDQ5MjM0LDQ5MjM1''@;'; put 'put ''LDQ5MjM2LDQ5MjM3LDQ5MjM4LDQ5MjM5LDQ5MjQxLDQ5MjQyLDQ5MjQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MjQ1LDQ5MjQ2LDQ5MjQ3LDQ5MjQ5LDQ5MjUwLDQ5MjUxLDQ5MjUyLDQ5MjUzLDQ5MjU0LDQ5MjU1LDQ5MjU4LDQ5MjU5LDQ5MjYwLDQ5MjYxLDQ5MjYyLDQ5''@;'; put 'put ''MjYzLDQ5MjY0LDQ5MjY1LDQ5MjY2LDQ5MjY3LDQ5MjY4LDQ5MjY5LDQ5MjcwLDQ5MjcxLDQ5MjcyLDQ5MjczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5Mjc0LDQ5Mjc1LDQ5Mjc2LDQ5Mjc3LDQ5Mjc4LDQ5Mjc5LDQ5MjgwLDQ5MjgxLDQ5MjgyLDQ5MjgzLDQ5Mjg0LDQ5Mjg1''@;'; put 'put ''LDQ5Mjg2LDQ5Mjg3LDQ5Mjg4LDQ5Mjg5LDQ5MjkwLDQ5MjkxLDQ5MjkyLDQ5MjkzLDQ5Mjk0LDQ5Mjk1LDQ5Mjk4LDQ5Mjk5LDQ5MzAxLDQ5MzAyLDQ5MzAzLDQ5MzA1LDQ5MzA2LDQ5MzA3LDQ5MzA4LDQ5MzA5LDQ5MzEwLDQ5MzExLDQ5MzE0LDQ5MzE2LDQ5MzE4LDQ5MzE5LDQ5MzIwLDQ5''@;'; put 'put ''MzIxLDQ5MzIyLDQ5MzIzLDQ5MzI2LDQ5MzI5LDQ5MzMwLDQ5MzM1LDQ5MzM2LDQ5MzM3LDQ5MzM4LDQ5MzM5LDQ5MzQyLDQ5MzQ2LDQ5MzQ3LDQ5MzQ4LDQ5MzUwLDQ5MzUxLDQ5MzU0LDQ5MzU1LDQ5MzU3LDQ5MzU4LDQ5MzU5LDQ5MzYxLDQ5MzYyLDQ5MzYzLDQ5MzY0LDQ5MzY1LDQ5MzY2''@;'; put 'put ''LDQ5MzY3LDQ5MzcwLDQ5Mzc0LDQ5Mzc1LDQ5Mzc2LDQ5Mzc3LDQ5Mzc4LDQ5Mzc5LDQ5MzgyLDQ5MzgzLDQ5Mzg1LDQ5Mzg2LDQ5Mzg3LDQ5Mzg5LDQ5MzkwLDQ5MzkxLDQ5MzkyLDQ5MzkzLDQ5Mzk0LDQ5Mzk1LDQ5Mzk4LDQ5NDAwLDQ5NDAyLDQ5NDAzLDQ5NDA0LDQ5NDA1LDQ5NDA2LDQ5''@;'; put 'put ''NDA3LDQ5NDA5LDQ5NDEwLDQ5NDExLDQ5NDEzLDQ5NDE0LDQ5NDE1LDQ5NDE3LDQ5NDE4LDQ5NDE5LDQ5NDIwLDQ5NDIxLDQ5NDIyLDQ5NDIzLDQ5NDI1LDQ5NDI2LDQ5NDI3LDQ5NDI4LDQ5NDMwLDQ5NDMxLDQ5NDMyLDQ5NDMzLDQ5NDM0LDQ5NDM1LDQ5NDQxLDQ5NDQyLDQ5NDQ1LDQ5NDQ4''@;'; put 'put ''LDQ5NDQ5LDQ5NDUwLDQ5NDUxLDQ5NDU0LDQ5NDU4LDQ5NDU5LDQ5NDYwLDQ5NDYxLDQ5NDYzLDQ5NDY2LDQ5NDY3LDQ5NDY5LDQ5NDcwLDQ5NDcxLDQ5NDczLDQ5NDc0LDQ5NDc1LDQ5NDc2LDQ5NDc3LDQ5NDc4LDQ5NDc5LDQ5NDgyLDQ5NDg2LDQ5NDg3LDQ5NDg4LDQ5NDg5LDQ5NDkwLDQ5''@;'; put 'put ''NDkxLDQ5NDk0LDQ5NDk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NDk3LDQ5NDk4LDQ5NDk5LDQ5NTAxLDQ5NTAyLDQ5NTAzLDQ5NTA0LDQ5NTA1LDQ5NTA2LDQ5NTA3LDQ5NTEwLDQ5NTE0LDQ5NTE1LDQ5NTE2LDQ5NTE3LDQ5NTE4LDQ5NTE5LDQ5NTIxLDQ5NTIyLDQ5NTIz''@;'; put 'put ''LDQ5NTI1LDQ5NTI2LDQ5NTI3LDQ5NTI5LDQ5NTMwLDQ5NTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NTMyLDQ5NTMzLDQ5NTM0LDQ5NTM1LDQ5NTM2LDQ5NTM3LDQ5NTM4LDQ5NTM5LDQ5NTQwLDQ5NTQyLDQ5NTQzLDQ5NTQ0LDQ5NTQ1LDQ5NTQ2LDQ5NTQ3LDQ5NTUxLDQ5''@;'; put 'put ''NTUzLDQ5NTU0LDQ5NTU1LDQ5NTU3LDQ5NTU5LDQ5NTYwLDQ5NTYxLDQ5NTYyLDQ5NTYzLDQ5NTY2LDQ5NTY4LDQ5NTcwLDQ5NTcxLDQ5NTcyLDQ5NTc0LDQ5NTc1LDQ5NTc4LDQ5NTc5LDQ5NTgxLDQ5NTgyLDQ5NTgzLDQ5NTg1LDQ5NTg2LDQ5NTg3LDQ5NTg4LDQ5NTg5LDQ5NTkwLDQ5NTkx''@;'; put 'put ''LDQ5NTkyLDQ5NTkzLDQ5NTk0LDQ5NTk1LDQ5NTk2LDQ5NTk4LDQ5NTk5LDQ5NjAwLDQ5NjAxLDQ5NjAyLDQ5NjAzLDQ5NjA1LDQ5NjA2LDQ5NjA3LDQ5NjA5LDQ5NjEwLDQ5NjExLDQ5NjEzLDQ5NjE0LDQ5NjE1LDQ5NjE2LDQ5NjE3LDQ5NjE4LDQ5NjE5LDQ5NjIxLDQ5NjIyLDQ5NjI1LDQ5''@;'; put 'put ''NjI2LDQ5NjI3LDQ5NjI4LDQ5NjI5LDQ5NjMwLDQ5NjMxLDQ5NjMzLDQ5NjM0LDQ5NjM1LDQ5NjM3LDQ5NjM4LDQ5NjM5LDQ5NjQxLDQ5NjQyLDQ5NjQzLDQ5NjQ0LDQ5NjQ1LDQ5NjQ2LDQ5NjQ3LDQ5NjUwLDQ5NjUyLDQ5NjUzLDQ5NjU0LDQ5NjU1LDQ5NjU2LDQ5NjU3LDQ5NjU4LDQ5NjU5''@;'; put 'put ''LDQ5NjYyLDQ5NjYzLDQ5NjY1LDQ5NjY2LDQ5NjY3LDQ5NjY5LDQ5NjcwLDQ5NjcxLDQ5NjcyLDQ5NjczLDQ5Njc0LDQ5Njc1LDQ5Njc4LDQ5NjgwLDQ5NjgyLDQ5NjgzLDQ5Njg0LDQ5Njg1LDQ5Njg2LDQ5Njg3LDQ5NjkwLDQ5NjkxLDQ5NjkzLDQ5Njk0LDQ5Njk3LDQ5Njk4LDQ5Njk5LDQ5''@;'; put 'put ''NzAwLDQ5NzAxLDQ5NzAyLDQ5NzAzLDQ5NzA2LDQ5NzA4LDQ5NzEwLDQ5NzEyLDQ5NzE1LDQ5NzE3LDQ5NzE4LDQ5NzE5LDQ5NzIwLDQ5NzIxLDQ5NzIyLDQ5NzIzLDQ5NzI0LDQ5NzI1LDQ5NzI2LDQ5NzI3LDQ5NzI4LDQ5NzI5LDQ5NzMwLDQ5NzMxLDQ5NzMyLDQ5NzMzLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLDQ5NzM0LDQ5NzM1LDQ5NzM3LDQ5NzM4LDQ5NzM5LDQ5NzQwLDQ5NzQxLDQ5NzQyLDQ5NzQzLDQ5NzQ2LDQ5NzQ3LDQ5NzQ5LDQ5NzUwLDQ5NzUxLDQ5NzUzLDQ5NzU0LDQ5NzU1LDQ5NzU2LDQ5NzU3LDQ5NzU4LDQ5NzU5LDQ5NzYxLDQ5NzYyLDQ5NzYzLDQ5''@;'; put 'put ''NzY0LDQ5NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NzY3LDQ5NzY4LDQ5NzY5LDQ5NzcwLDQ5NzcxLDQ5Nzc0LDQ5Nzc1LDQ5Nzc3LDQ5Nzc4LDQ5Nzc5LDQ5NzgxLDQ5NzgyLDQ5NzgzLDQ5Nzg0LDQ5Nzg1LDQ5Nzg2LDQ5Nzg3LDQ5NzkwLDQ5NzkyLDQ5Nzk0LDQ5Nzk1''@;'; put 'put ''LDQ5Nzk2LDQ5Nzk3LDQ5Nzk4LDQ5Nzk5LDQ5ODAyLDQ5ODAzLDQ5ODA0LDQ5ODA1LDQ5ODA2LDQ5ODA3LDQ5ODA5LDQ5ODEwLDQ5ODExLDQ5ODEyLDQ5ODEzLDQ5ODE0LDQ5ODE1LDQ5ODE3LDQ5ODE4LDQ5ODIwLDQ5ODIyLDQ5ODIzLDQ5ODI0LDQ5ODI1LDQ5ODI2LDQ5ODI3LDQ5ODMwLDQ5''@;'; put 'put ''ODMxLDQ5ODMzLDQ5ODM0LDQ5ODM1LDQ5ODM4LDQ5ODM5LDQ5ODQwLDQ5ODQxLDQ5ODQyLDQ5ODQzLDQ5ODQ2LDQ5ODQ4LDQ5ODUwLDQ5ODUxLDQ5ODUyLDQ5ODUzLDQ5ODU0LDQ5ODU1LDQ5ODU2LDQ5ODU3LDQ5ODU4LDQ5ODU5LDQ5ODYwLDQ5ODYxLDQ5ODYyLDQ5ODYzLDQ5ODY0LDQ5ODY1''@;'; put 'put ''LDQ5ODY2LDQ5ODY3LDQ5ODY4LDQ5ODY5LDQ5ODcwLDQ5ODcxLDQ5ODcyLDQ5ODczLDQ5ODc0LDQ5ODc1LDQ5ODc2LDQ5ODc3LDQ5ODc4LDQ5ODc5LDQ5ODgwLDQ5ODgxLDQ5ODgyLDQ5ODgzLDQ5ODg2LDQ5ODg3LDQ5ODg5LDQ5ODkwLDQ5ODkzLDQ5ODk0LDQ5ODk1LDQ5ODk2LDQ5ODk3LDQ5''@;'; put 'put ''ODk4LDQ5OTAyLDQ5OTA0LDQ5OTA2LDQ5OTA3LDQ5OTA4LDQ5OTA5LDQ5OTExLDQ5OTE0LDQ5OTE3LDQ5OTE4LDQ5OTE5LDQ5OTIxLDQ5OTIyLDQ5OTIzLDQ5OTI0LDQ5OTI1LDQ5OTI2LDQ5OTI3LDQ5OTMwLDQ5OTMxLDQ5OTM0LDQ5OTM1LDQ5OTM2LDQ5OTM3LDQ5OTM4LDQ5OTQyLDQ5OTQz''@;'; put 'put ''LDQ5OTQ1LDQ5OTQ2LDQ5OTQ3LDQ5OTQ5LDQ5OTUwLDQ5OTUxLDQ5OTUyLDQ5OTUzLDQ5OTU0LDQ5OTU1LDQ5OTU4LDQ5OTU5LDQ5OTYyLDQ5OTYzLDQ5OTY0LDQ5OTY1LDQ5OTY2LDQ5OTY3LDQ5OTY4LDQ5OTY5LDQ5OTcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTcxLDQ5''@;'; put 'put ''OTcyLDQ5OTczLDQ5OTc0LDQ5OTc1LDQ5OTc2LDQ5OTc3LDQ5OTc4LDQ5OTc5LDQ5OTgwLDQ5OTgxLDQ5OTgyLDQ5OTgzLDQ5OTg0LDQ5OTg1LDQ5OTg2LDQ5OTg3LDQ5OTg4LDQ5OTkwLDQ5OTkxLDQ5OTkyLDQ5OTkzLDQ5OTk0LDQ5OTk1LDQ5OTk2LDQ5OTk3LG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLDQ5OTk4LDQ5OTk5LDVlNCw1MDAwMSw1MDAwMiw1MDAwMyw1MDAwNCw1MDAwNSw1MDAwNiw1MDAwNyw1MDAwOCw1MDAwOSw1MDAxMCw1MDAxMSw1MDAxMiw1MDAxMyw1MDAxNCw1MDAxNSw1MDAxNiw1MDAxNyw1MDAxOCw1MDAxOSw1MDAyMCw1MDAyMSw1MDAyMiw1MDAy''@;'; put 'put ''Myw1MDAyNiw1MDAyNyw1MDAyOSw1MDAzMCw1MDAzMSw1MDAzMyw1MDAzNSw1MDAzNiw1MDAzNyw1MDAzOCw1MDAzOSw1MDA0Miw1MDA0Myw1MDA0Niw1MDA0Nyw1MDA0OCw1MDA0OSw1MDA1MCw1MDA1MSw1MDA1Myw1MDA1NCw1MDA1NSw1MDA1Nyw1MDA1OCw1MDA1OSw1MDA2MSw1MDA2Miw1''@;'; put 'put ''MDA2Myw1MDA2NCw1MDA2NSw1MDA2Niw1MDA2Nyw1MDA2OCw1MDA2OSw1MDA3MCw1MDA3MSw1MDA3Miw1MDA3Myw1MDA3NCw1MDA3NSw1MDA3Niw1MDA3Nyw1MDA3OCw1MDA3OSw1MDA4MCw1MDA4MSw1MDA4Miw1MDA4Myw1MDA4NCw1MDA4NSw1MDA4Niw1MDA4Nyw1MDA4OCw1MDA4OSw1MDA5''@;'; put 'put ''MCw1MDA5MSw1MDA5Miw1MDA5Myw1MDA5NCw1MDA5NSw1MDA5Niw1MDA5Nyw1MDA5OCw1MDA5OSw1MDEwMCw1MDEwMSw1MDEwMiw1MDEwMyw1MDEwNCw1MDEwNSw1MDEwNiw1MDEwNyw1MDEwOCw1MDEwOSw1MDExMCw1MDExMSw1MDExMyw1MDExNCw1MDExNSw1MDExNiw1MDExNyw1MDExOCw1''@;'; put 'put ''MDExOSw1MDEyMCw1MDEyMSw1MDEyMiw1MDEyMyw1MDEyNCw1MDEyNSw1MDEyNiw1MDEyNyw1MDEyOCw1MDEyOSw1MDEzMCw1MDEzMSw1MDEzMiw1MDEzMyw1MDEzNCw1MDEzNSw1MDEzOCw1MDEzOSw1MDE0MSw1MDE0Miw1MDE0NSw1MDE0Nyw1MDE0OCw1MDE0OSw1MDE1MCw1MDE1MSw1MDE1''@;'; put 'put ''NCw1MDE1NSw1MDE1Niw1MDE1OCw1MDE1OSw1MDE2MCw1MDE2MSw1MDE2Miw1MDE2Myw1MDE2Niw1MDE2Nyw1MDE2OSw1MDE3MCw1MDE3MSw1MDE3Miw1MDE3Myw1MDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDE3NSw1MDE3Niw1MDE3Nyw1MDE3OCw1MDE3OSw1MDE4MCw1''@;'; put 'put ''MDE4MSw1MDE4Miw1MDE4Myw1MDE4NSw1MDE4Niw1MDE4Nyw1MDE4OCw1MDE4OSw1MDE5MCw1MDE5MSw1MDE5Myw1MDE5NCw1MDE5NSw1MDE5Niw1MDE5Nyw1MDE5OCw1MDE5OSw1MDIwMCw1MDIwMSw1MDIwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDIwMyw1MDIwNCw1MDIw''@;'; put 'put ''NSw1MDIwNiw1MDIwNyw1MDIwOCw1MDIwOSw1MDIxMCw1MDIxMSw1MDIxMyw1MDIxNCw1MDIxNSw1MDIxNiw1MDIxNyw1MDIxOCw1MDIxOSw1MDIyMSw1MDIyMiw1MDIyMyw1MDIyNSw1MDIyNiw1MDIyNyw1MDIyOSw1MDIzMCw1MDIzMSw1MDIzMiw1MDIzMyw1MDIzNCw1MDIzNSw1MDIzOCw1''@;'; put 'put ''MDIzOSw1MDI0MCw1MDI0MSw1MDI0Miw1MDI0Myw1MDI0NCw1MDI0NSw1MDI0Niw1MDI0Nyw1MDI0OSw1MDI1MCw1MDI1MSw1MDI1Miw1MDI1Myw1MDI1NCw1MDI1NSw1MDI1Niw1MDI1Nyw1MDI1OCw1MDI1OSw1MDI2MCw1MDI2MSw1MDI2Miw1MDI2Myw1MDI2NCw1MDI2NSw1MDI2Niw1MDI2''@;'; put 'put ''Nyw1MDI2OCw1MDI2OSw1MDI3MCw1MDI3MSw1MDI3Miw1MDI3Myw1MDI3NCw1MDI3NSw1MDI3OCw1MDI3OSw1MDI4MSw1MDI4Miw1MDI4Myw1MDI4NSw1MDI4Niw1MDI4Nyw1MDI4OCw1MDI4OSw1MDI5MCw1MDI5MSw1MDI5NCw1MDI5NSw1MDI5Niw1MDI5OCw1MDI5OSw1MDMwMCw1MDMwMSw1''@;'; put 'put ''MDMwMiw1MDMwMyw1MDMwNSw1MDMwNiw1MDMwNyw1MDMwOCw1MDMwOSw1MDMxMCw1MDMxMSw1MDMxMiw1MDMxMyw1MDMxNCw1MDMxNSw1MDMxNiw1MDMxNyw1MDMxOCw1MDMxOSw1MDMyMCw1MDMyMSw1MDMyMiw1MDMyMyw1MDMyNSw1MDMyNiw1MDMyNyw1MDMyOCw1MDMyOSw1MDMzMCw1MDMz''@;'; put 'put ''MSw1MDMzMyw1MDMzNCw1MDMzNSw1MDMzNiw1MDMzNyw1MDMzOCw1MDMzOSw1MDM0MCw1MDM0MSw1MDM0Miw1MDM0Myw1MDM0NCw1MDM0NSw1MDM0Niw1MDM0Nyw1MDM0OCw1MDM0OSw1MDM1MCw1MDM1MSw1MDM1Miw1MDM1Myw1MDM1NCw1MDM1NSw1MDM1Niw1MDM1Nyw1MDM1OCw1MDM1OSw1''@;'; put 'put ''MDM2MSw1MDM2Miw1MDM2Myw1MDM2NSw1MDM2Niw1MDM2Nyw1MDM2OCw1MDM2OSw1MDM3MCw1MDM3MSw1MDM3Miw1MDM3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDM3NCw1MDM3NSw1MDM3Niw1MDM3Nyw1MDM3OCw1MDM3OSw1MDM4MCw1MDM4MSw1MDM4Miw1MDM4Myw1MDM4''@;'; put 'put ''NCw1MDM4NSw1MDM4Niw1MDM4Nyw1MDM4OCw1MDM4OSw1MDM5MCw1MDM5MSw1MDM5Miw1MDM5Myw1MDM5NCw1MDM5NSw1MDM5Niw1MDM5Nyw1MDM5OCw1MDM5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDQwMCw1MDQwMSw1MDQwMiw1MDQwMyw1MDQwNCw1MDQwNSw1MDQwNiw1''@;'; put 'put ''MDQwNyw1MDQwOCw1MDQxMCw1MDQxMSw1MDQxMiw1MDQxMyw1MDQxNCw1MDQxNSw1MDQxOCw1MDQxOSw1MDQyMSw1MDQyMiw1MDQyMyw1MDQyNSw1MDQyNyw1MDQyOCw1MDQyOSw1MDQzMCw1MDQzNCw1MDQzNSw1MDQzNiw1MDQzNyw1MDQzOCw1MDQzOSw1MDQ0MCw1MDQ0MSw1MDQ0Miw1MDQ0''@;'; put 'put ''Myw1MDQ0NSw1MDQ0Niw1MDQ0Nyw1MDQ0OSw1MDQ1MCw1MDQ1MSw1MDQ1Myw1MDQ1NCw1MDQ1NSw1MDQ1Niw1MDQ1Nyw1MDQ1OCw1MDQ1OSw1MDQ2MSw1MDQ2Miw1MDQ2Myw1MDQ2NCw1MDQ2NSw1MDQ2Niw1MDQ2Nyw1MDQ2OCw1MDQ2OSw1MDQ3MCw1MDQ3MSw1MDQ3NCw1MDQ3NSw1MDQ3Nyw1''@;'; put 'put ''MDQ3OCw1MDQ3OSw1MDQ4MSw1MDQ4Miw1MDQ4Myw1MDQ4NCw1MDQ4NSw1MDQ4Niw1MDQ4Nyw1MDQ5MCw1MDQ5Miw1MDQ5NCw1MDQ5NSw1MDQ5Niw1MDQ5Nyw1MDQ5OCw1MDQ5OSw1MDUwMiw1MDUwMyw1MDUwNyw1MDUxMSw1MDUxMiw1MDUxMyw1MDUxNCw1MDUxOCw1MDUyMiw1MDUyMyw1MDUy''@;'; put 'put ''NCw1MDUyNyw1MDUzMCw1MDUzMSw1MDUzMyw1MDUzNCw1MDUzNSw1MDUzNyw1MDUzOCw1MDUzOSw1MDU0MCw1MDU0MSw1MDU0Miw1MDU0Myw1MDU0Niw1MDU1MCw1MDU1MSw1MDU1Miw1MDU1Myw1MDU1NCw1MDU1NSw1MDU1OCw1MDU1OSw1MDU2MSw1MDU2Miw1MDU2Myw1MDU2NSw1MDU2Niw1''@;'; put 'put ''MDU2OCw1MDU2OSw1MDU3MCw1MDU3MSw1MDU3NCw1MDU3Niw1MDU3OCw1MDU3OSw1MDU4MCw1MDU4Miw1MDU4NSw1MDU4Niw1MDU4Nyw1MDU4OSw1MDU5MCw1MDU5MSw1MDU5Myw1MDU5NCw1MDU5NSw1MDU5Niw1MDU5Nyw1MDU5OCw1MDU5OSw1MDYwMCw1MDYwMiw1MDYwMyw1MDYwNCw1MDYw''@;'; put 'put ''NSw1MDYwNiw1MDYwNyw1MDYwOCw1MDYwOSw1MDYxMCw1MDYxMSw1MDYxNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDYxNSw1MDYxOCw1MDYyMyw1MDYyNCw1MDYyNSw1MDYyNiw1MDYyNyw1MDYzNSw1MDYzNyw1MDYzOSw1MDY0Miw1MDY0Myw1MDY0NSw1MDY0Niw1MDY0Nyw1''@;'; put 'put ''MDY0OSw1MDY1MCw1MDY1MSw1MDY1Miw1MDY1Myw1MDY1NCw1MDY1NSw1MDY1OCw1MDY2MCw1MDY2Miw1MDY2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDY2NCw1MDY2NSw1MDY2Niw1MDY2Nyw1MDY3MSw1MDY3Myw1MDY3NCw1MDY3NSw1MDY3Nyw1MDY4MCw1MDY4MSw1MDY4''@;'; put 'put ''Miw1MDY4Myw1MDY5MCw1MDY5MSw1MDY5Miw1MDY5Nyw1MDY5OCw1MDY5OSw1MDcwMSw1MDcwMiw1MDcwMyw1MDcwNSw1MDcwNiw1MDcwNyw1MDcwOCw1MDcwOSw1MDcxMCw1MDcxMSw1MDcxNCw1MDcxNyw1MDcxOCw1MDcxOSw1MDcyMCw1MDcyMSw1MDcyMiw1MDcyMyw1MDcyNiw1MDcyNyw1''@;'; put 'put ''MDcyOSw1MDczMCw1MDczMSw1MDczNSw1MDczNyw1MDczOCw1MDc0Miw1MDc0NCw1MDc0Niw1MDc0OCw1MDc0OSw1MDc1MCw1MDc1MSw1MDc1NCw1MDc1NSw1MDc1Nyw1MDc1OCw1MDc1OSw1MDc2MSw1MDc2Miw1MDc2Myw1MDc2NCw1MDc2NSw1MDc2Niw1MDc2Nyw1MDc3MCw1MDc3NCw1MDc3''@;'; put 'put ''NSw1MDc3Niw1MDc3Nyw1MDc3OCw1MDc3OSw1MDc4Miw1MDc4Myw1MDc4NSw1MDc4Niw1MDc4Nyw1MDc4OCw1MDc4OSw1MDc5MCw1MDc5MSw1MDc5Miw1MDc5Myw1MDc5NCw1MDc5NSw1MDc5Nyw1MDc5OCw1MDgwMCw1MDgwMiw1MDgwMyw1MDgwNCw1MDgwNSw1MDgwNiw1MDgwNyw1MDgxMCw1''@;'; put 'put ''MDgxMSw1MDgxMyw1MDgxNCw1MDgxNSw1MDgxNyw1MDgxOCw1MDgxOSw1MDgyMCw1MDgyMSw1MDgyMiw1MDgyMyw1MDgyNiw1MDgyOCw1MDgzMCw1MDgzMSw1MDgzMiw1MDgzMyw1MDgzNCw1MDgzNSw1MDgzOCw1MDgzOSw1MDg0MSw1MDg0Miw1MDg0Myw1MDg0NSw1MDg0Niw1MDg0Nyw1MDg0''@;'; put 'put ''OCw1MDg0OSw1MDg1MCw1MDg1MSw1MDg1NCw1MDg1Niw1MDg1OCw1MDg1OSw1MDg2MCw1MDg2MSw1MDg2Miw1MDg2Myw1MDg2Niw1MDg2Nyw1MDg2OSw1MDg3MCw1MDg3MSw1MDg3NSw1MDg3Niw1MDg3Nyw1MDg3OCw1MDg3OSw1MDg4Miw1MDg4NCw1MDg4Niw1MDg4Nyw1MDg4OCw1MDg4OSw1''@;'; put 'put ''MDg5MCw1MDg5MSw1MDg5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDg5NSw1MDg5Nyw1MDg5OCw1MDg5OSw1MDkwMSw1MDkwMiw1MDkwMyw1MDkwNCw1MDkwNSw1MDkwNiw1MDkwNyw1MDkxMCw1MDkxMSw1MDkxNCw1MDkxNSw1MDkxNiw1MDkxNyw1MDkxOCw1MDkxOSw1MDky''@;'; put 'put ''Miw1MDkyMyw1MDkyNSw1MDkyNiw1MDkyNyw1MDkyOSw1MDkzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDkzMSw1MDkzMiw1MDkzMyw1MDkzNCw1MDkzNSw1MDkzOCw1MDkzOSw1MDk0MCw1MDk0Miw1MDk0Myw1MDk0NCw1MDk0NSw1MDk0Niw1MDk0Nyw1MDk1MCw1MDk1MSw1''@;'; put 'put ''MDk1Myw1MDk1NCw1MDk1NSw1MDk1Nyw1MDk1OCw1MDk1OSw1MDk2MCw1MDk2MSw1MDk2Miw1MDk2Myw1MDk2Niw1MDk2OCw1MDk3MCw1MDk3MSw1MDk3Miw1MDk3Myw1MDk3NCw1MDk3NSw1MDk3OCw1MDk3OSw1MDk4MSw1MDk4Miw1MDk4Myw1MDk4NSw1MDk4Niw1MDk4Nyw1MDk4OCw1MDk4''@;'; put 'put ''OSw1MDk5MCw1MDk5MSw1MDk5NCw1MDk5Niw1MDk5OCw1MWUzLDUxMDAxLDUxMDAyLDUxMDAzLDUxMDA2LDUxMDA3LDUxMDA5LDUxMDEwLDUxMDExLDUxMDEzLDUxMDE0LDUxMDE1LDUxMDE2LDUxMDE3LDUxMDE5LDUxMDIyLDUxMDI0LDUxMDMzLDUxMDM0LDUxMDM1LDUxMDM3LDUxMDM4LDUx''@;'; put 'put ''MDM5LDUxMDQxLDUxMDQyLDUxMDQzLDUxMDQ0LDUxMDQ1LDUxMDQ2LDUxMDQ3LDUxMDQ5LDUxMDUwLDUxMDUyLDUxMDUzLDUxMDU0LDUxMDU1LDUxMDU2LDUxMDU3LDUxMDU4LDUxMDU5LDUxMDYyLDUxMDYzLDUxMDY1LDUxMDY2LDUxMDY3LDUxMDcxLDUxMDcyLDUxMDczLDUxMDc0LDUxMDc4''@;'; put 'put ''LDUxMDgzLDUxMDg0LDUxMDg1LDUxMDg3LDUxMDkwLDUxMDkxLDUxMDkzLDUxMDk3LDUxMDk5LDUxMTAwLDUxMTAxLDUxMTAyLDUxMTAzLDUxMTA2LDUxMTExLDUxMTEyLDUxMTEzLDUxMTE0LDUxMTE1LDUxMTE4LDUxMTE5LDUxMTIxLDUxMTIyLDUxMTIzLDUxMTI1LDUxMTI2LDUxMTI3LDUx''@;'; put 'put ''MTI4LDUxMTI5LDUxMTMwLDUxMTMxLDUxMTM0LDUxMTM4LDUxMTM5LDUxMTQwLDUxMTQxLDUxMTQyLDUxMTQzLDUxMTQ2LDUxMTQ3LDUxMTQ5LDUxMTUxLDUxMTUzLDUxMTU0LDUxMTU1LDUxMTU2LDUxMTU3LDUxMTU4LDUxMTU5LDUxMTYxLDUxMTYyLDUxMTYzLDUxMTY0LG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLDUxMTY2LDUxMTY3LDUxMTY4LDUxMTY5LDUxMTcwLDUxMTcxLDUxMTczLDUxMTc0LDUxMTc1LDUxMTc3LDUxMTc4LDUxMTc5LDUxMTgxLDUxMTgyLDUxMTgzLDUxMTg0LDUxMTg1LDUxMTg2LDUxMTg3LDUxMTg4LDUxMTg5LDUxMTkwLDUxMTkxLDUxMTkyLDUx''@;'; put 'put ''MTkzLDUxMTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMTk1LDUxMTk2LDUxMTk3LDUxMTk4LDUxMTk5LDUxMjAyLDUxMjAzLDUxMjA1LDUxMjA2LDUxMjA3LDUxMjA5LDUxMjExLDUxMjEyLDUxMjEzLDUxMjE0LDUxMjE1LDUxMjE4LDUxMjIwLDUxMjIzLDUxMjI0LDUxMjI1''@;'; put 'put ''LDUxMjI2LDUxMjI3LDUxMjMwLDUxMjMxLDUxMjMzLDUxMjM0LDUxMjM1LDUxMjM3LDUxMjM4LDUxMjM5LDUxMjQwLDUxMjQxLDUxMjQyLDUxMjQzLDUxMjQ2LDUxMjQ4LDUxMjUwLDUxMjUxLDUxMjUyLDUxMjUzLDUxMjU0LDUxMjU1LDUxMjU3LDUxMjU4LDUxMjU5LDUxMjYxLDUxMjYyLDUx''@;'; put 'put ''MjYzLDUxMjY1LDUxMjY2LDUxMjY3LDUxMjY4LDUxMjY5LDUxMjcwLDUxMjcxLDUxMjc0LDUxMjc1LDUxMjc4LDUxMjc5LDUxMjgwLDUxMjgxLDUxMjgyLDUxMjgzLDUxMjg1LDUxMjg2LDUxMjg3LDUxMjg4LDUxMjg5LDUxMjkwLDUxMjkxLDUxMjkyLDUxMjkzLDUxMjk0LDUxMjk1LDUxMjk2''@;'; put 'put ''LDUxMjk3LDUxMjk4LDUxMjk5LDUxMzAwLDUxMzAxLDUxMzAyLDUxMzAzLDUxMzA0LDUxMzA1LDUxMzA2LDUxMzA3LDUxMzA4LDUxMzA5LDUxMzEwLDUxMzExLDUxMzE0LDUxMzE1LDUxMzE3LDUxMzE4LDUxMzE5LDUxMzIxLDUxMzIzLDUxMzI0LDUxMzI1LDUxMzI2LDUxMzI3LDUxMzMwLDUx''@;'; put 'put ''MzMyLDUxMzM2LDUxMzM3LDUxMzM4LDUxMzQyLDUxMzQzLDUxMzQ0LDUxMzQ1LDUxMzQ2LDUxMzQ3LDUxMzQ5LDUxMzUwLDUxMzUxLDUxMzUyLDUxMzUzLDUxMzU0LDUxMzU1LDUxMzU2LDUxMzU4LDUxMzYwLDUxMzYyLDUxMzYzLDUxMzY0LDUxMzY1LDUxMzY2LDUxMzY3LDUxMzY5LDUxMzcw''@;'; put 'put ''LDUxMzcxLDUxMzcyLDUxMzczLDUxMzc0LDUxMzc1LDUxMzc2LDUxMzc3LDUxMzc4LDUxMzc5LDUxMzgwLDUxMzgxLDUxMzgyLDUxMzgzLDUxMzg0LDUxMzg1LDUxMzg2LDUxMzg3LDUxMzkwLDUxMzkxLDUxMzkyLDUxMzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMzk0LDUx''@;'; put 'put ''Mzk1LDUxMzk3LDUxMzk4LDUxMzk5LDUxNDAxLDUxNDAyLDUxNDAzLDUxNDA1LDUxNDA2LDUxNDA3LDUxNDA4LDUxNDA5LDUxNDEwLDUxNDExLDUxNDE0LDUxNDE2LDUxNDE4LDUxNDE5LDUxNDIwLDUxNDIxLDUxNDIyLDUxNDIzLDUxNDI2LDUxNDI3LDUxNDI5LG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLDUxNDMwLDUxNDMxLDUxNDMyLDUxNDMzLDUxNDM0LDUxNDM1LDUxNDM2LDUxNDM3LDUxNDM4LDUxNDM5LDUxNDQwLDUxNDQxLDUxNDQyLDUxNDQzLDUxNDQ0LDUxNDQ2LDUxNDQ3LDUxNDQ4LDUxNDQ5LDUxNDUwLDUxNDUxLDUxNDU0LDUxNDU1LDUxNDU3LDUxNDU4LDUx''@;'; put 'put ''NDU5LDUxNDYzLDUxNDY0LDUxNDY1LDUxNDY2LDUxNDY3LDUxNDcwLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw4MjI5LDgyMzAsMTY4LDEyMjkxLDE3Myw4MjEzLDg3NDEsNjUzNDAsODc2NCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEy''@;'; put 'put ''MzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzA0LDEyMzA1LDE3NywyMTUsMjQ3LDg4MDAsODgwNCw4ODA1LDg3MzQsODc1NiwxNzYsODI0Miw4MjQzLDg0NTEsODQ5MSw2NTUwNCw2NTUwNSw2NTUwOSw5Nzk0LDk3OTIsODczNiw4ODY5LDg5NzgsODcwNiw4NzExLDg4MDEsODc4NiwxNjcsODI1''@;'; put 'put ''MSw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsOTY2MSw5NjYwLDg1OTQsODU5Miw4NTkzLDg1OTUsODU5NiwxMjMwNyw4ODEwLDg4MTEsODczMCw4NzY1LDg3MzMsODc1Nyw4NzQ3LDg3NDgsODcxMiw4NzE1LDg4MzgsODgzOSw4ODM0LDg4''@;'; put 'put ''MzUsODc0Niw4NzQ1LDg3NDMsODc0NCw2NTUwNiw1MTQ3Miw1MTQ3NCw1MTQ3NSw1MTQ3Niw1MTQ3Nyw1MTQ3OCw1MTQ3OSw1MTQ4MSw1MTQ4Miw1MTQ4Myw1MTQ4NCw1MTQ4NSw1MTQ4Niw1MTQ4Nyw1MTQ4OCw1MTQ4OSw1MTQ5MCw1MTQ5MSw1MTQ5Miw1MTQ5Myw1MTQ5NCw1MTQ5NSw1MTQ5''@;'; put 'put ''Niw1MTQ5Nyw1MTQ5OCw1MTQ5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTUwMSw1MTUwMiw1MTUwMyw1MTUwNCw1MTUwNSw1MTUwNiw1MTUwNyw1MTUwOSw1MTUxMCw1MTUxMSw1MTUxMiw1MTUxMyw1MTUxNCw1MTUxNSw1MTUxNiw1MTUxNyw1MTUxOCw1MTUxOSw1MTUyMCw1''@;'; put 'put ''MTUyMSw1MTUyMiw1MTUyMyw1MTUyNCw1MTUyNSw1MTUyNiw1MTUyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTUyOCw1MTUyOSw1MTUzMCw1MTUzMSw1MTUzMiw1MTUzMyw1MTUzNCw1MTUzNSw1MTUzOCw1MTUzOSw1MTU0MSw1MTU0Miw1MTU0Myw1MTU0NSw1MTU0Niw1MTU0''@;'; put 'put ''Nyw1MTU0OCw1MTU0OSw1MTU1MCw1MTU1MSw1MTU1NCw1MTU1Niw1MTU1Nyw1MTU1OCw1MTU1OSw1MTU2MCw1MTU2MSw1MTU2Miw1MTU2Myw1MTU2NSw1MTU2Niw1MTU2Nyw4NjU4LDg2NjAsODcwNCw4NzA3LDE4MCw2NTM3NCw3MTEsNzI4LDczMyw3MzAsNzI5LDE4NCw3MzEsMTYxLDE5MSw3''@;'; put 'put ''MjAsODc1MCw4NzIxLDg3MTksMTY0LDg0NTcsODI0MCw5NjY1LDk2NjQsOTY1NSw5NjU0LDk4MjgsOTgyNCw5ODI1LDk4MjksOTgzMSw5ODI3LDg4NTcsOTY3Miw5NjM1LDk2ODAsOTY4MSw5NjE4LDk2MzYsOTYzNyw5NjQwLDk2MzksOTYzOCw5NjQxLDk4MzIsOTc0Myw5NzQyLDk3NTYsOTc1''@;'; put 'put ''OCwxODIsODIyNCw4MjI1LDg1OTcsODU5OSw4NjAxLDg1OTgsODYwMCw5ODM3LDk4MzMsOTgzNCw5ODM2LDEyOTI3LDEyODI4LDg0NzAsMTMyNTUsODQ4MiwxMzI1MCwxMzI3Miw4NDgxLDgzNjQsMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTU2OSw1MTU3MCw1MTU3MSw1MTU3Myw1MTU3NCw1MTU3NSw1MTU3Niw1MTU3Nyw1MTU3OCw1MTU3OSw1MTU4MSw1MTU4Miw1MTU4Myw1MTU4NCw1MTU4NSw1MTU4Niw1MTU4''@;'; put 'put ''Nyw1MTU4OCw1MTU4OSw1MTU5MCw1MTU5MSw1MTU5NCw1MTU5NSw1MTU5Nyw1MTU5OCw1MTU5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYwMSw1MTYwMiw1MTYwMyw1MTYwNCw1MTYwNSw1MTYwNiw1MTYwNyw1MTYxMCw1MTYxMiw1MTYxNCw1MTYxNSw1MTYxNiw1MTYxNyw1''@;'; put 'put ''MTYxOCw1MTYxOSw1MTYyMCw1MTYyMSw1MTYyMiw1MTYyMyw1MTYyNCw1MTYyNSw1MTYyNiw1MTYyNyw1MTYyOCw1MTYyOSw1MTYzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYzMSw1MTYzMiw1MTYzMyw1MTYzNCw1MTYzNSw1MTYzNiw1MTYzNyw1MTYzOCw1MTYzOSw1MTY0''@;'; put 'put ''MCw1MTY0MSw1MTY0Miw1MTY0Myw1MTY0NCw1MTY0NSw1MTY0Niw1MTY0Nyw1MTY1MCw1MTY1MSw1MTY1Myw1MTY1NCw1MTY1Nyw1MTY1OSw1MTY2MCw1MTY2MSw1MTY2Miw1MTY2Myw1MTY2Niw1MTY2OCw1MTY3MSw1MTY3Miw1MTY3NSw2NTI4MSw2NTI4Miw2NTI4Myw2NTI4NCw2NTI4NSw2''@;'; put 'put ''NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMx''@;'; put 'put ''Myw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTUxMCw2''@;'; put 'put ''NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2''@;'; put 'put ''OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1MTY3OCw1MTY3OSw1MTY4MSw1MTY4Myw1MTY4NSw1MTY4Niw1MTY4OCw1MTY4OSw1MTY5MCw1MTY5MSw1MTY5NCw1MTY5OCw1MTY5OSw1MTcwMCw1MTcwMSw1MTcwMiw1MTcwMyw1MTcwNiw1MTcwNyw1MTcwOSw1MTcxMCw1''@;'; put 'put ''MTcxMSw1MTcxMyw1MTcxNCw1MTcxNSw1MTcxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTcxNyw1MTcxOCw1MTcxOSw1MTcyMiw1MTcyNiw1MTcyNyw1MTcyOCw1MTcyOSw1MTczMCw1MTczMSw1MTczMyw1MTczNCw1MTczNSw1MTczNyw1MTczOCw1MTczOSw1MTc0MCw1MTc0''@;'; put 'put ''MSw1MTc0Miw1MTc0Myw1MTc0NCw1MTc0NSw1MTc0Niw1MTc0Nyw1MTc0OCw1MTc0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTc1MCw1MTc1MSw1MTc1Miw1MTc1NCw1MTc1NSw1MTc1Niw1MTc1Nyw1MTc1OCw1MTc1OSw1MTc2MCw1MTc2MSw1MTc2Miw1MTc2Myw1MTc2NCw1''@;'; put 'put ''MTc2NSw1MTc2Niw1MTc2Nyw1MTc2OCw1MTc2OSw1MTc3MCw1MTc3MSw1MTc3Miw1MTc3Myw1MTc3NCw1MTc3NSw1MTc3Niw1MTc3Nyw1MTc3OCw1MTc3OSw1MTc4MCw1MTc4MSw1MTc4MiwxMjU5MywxMjU5NCwxMjU5NSwxMjU5NiwxMjU5NywxMjU5OCwxMjU5OSwxMjYwMCwxMjYwMSwxMjYw''@;'; put 'put ''MiwxMjYwMywxMjYwNCwxMjYwNSwxMjYwNiwxMjYwNywxMjYwOCwxMjYwOSwxMjYxMCwxMjYxMSwxMjYxMiwxMjYxMywxMjYxNCwxMjYxNSwxMjYxNiwxMjYxNywxMjYxOCwxMjYxOSwxMjYyMCwxMjYyMSwxMjYyMiwxMjYyMywxMjYyNCwxMjYyNSwxMjYyNiwxMjYyNywxMjYyOCwxMjYyOSwx''@;'; put 'put ''MjYzMCwxMjYzMSwxMjYzMiwxMjYzMywxMjYzNCwxMjYzNSwxMjYzNiwxMjYzNywxMjYzOCwxMjYzOSwxMjY0MCwxMjY0MSwxMjY0MiwxMjY0MywxMjY0NCwxMjY0NSwxMjY0NiwxMjY0NywxMjY0OCwxMjY0OSwxMjY1MCwxMjY1MSwxMjY1MiwxMjY1MywxMjY1NCwxMjY1NSwxMjY1NiwxMjY1''@;'; put 'put ''NywxMjY1OCwxMjY1OSwxMjY2MCwxMjY2MSwxMjY2MiwxMjY2MywxMjY2NCwxMjY2NSwxMjY2NiwxMjY2NywxMjY2OCwxMjY2OSwxMjY3MCwxMjY3MSwxMjY3MiwxMjY3MywxMjY3NCwxMjY3NSwxMjY3NiwxMjY3NywxMjY3OCwxMjY3OSwxMjY4MCwxMjY4MSwxMjY4MiwxMjY4MywxMjY4NCwx''@;'; put 'put ''MjY4NSwxMjY4Niw1MTc4Myw1MTc4NCw1MTc4NSw1MTc4Niw1MTc4Nyw1MTc5MCw1MTc5MSw1MTc5Myw1MTc5NCw1MTc5NSw1MTc5Nyw1MTc5OCw1MTc5OSw1MTgwMCw1MTgwMSw1MTgwMiw1MTgwMyw1MTgwNiw1MTgxMCw1MTgxMSw1MTgxMiw1MTgxMyw1MTgxNCw1MTgxNSw1MTgxNyw1MTgx''@;'; put 'put ''OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTgxOSw1MTgyMCw1MTgyMSw1MTgyMiw1MTgyMyw1MTgyNCw1MTgyNSw1MTgyNiw1MTgyNyw1MTgyOCw1MTgyOSw1MTgzMCw1MTgzMSw1MTgzMiw1MTgzMyw1MTgzNCw1MTgzNSw1MTgzNiw1MTgzOCw1MTgzOSw1MTg0MCw1MTg0MSw1''@;'; put 'put ''MTg0Miw1MTg0Myw1MTg0NSw1MTg0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTg0Nyw1MTg0OCw1MTg0OSw1MTg1MCw1MTg1MSw1MTg1Miw1MTg1Myw1MTg1NCw1MTg1NSw1MTg1Niw1MTg1Nyw1MTg1OCw1MTg1OSw1MTg2MCw1MTg2MSw1MTg2Miw1MTg2Myw1MTg2NSw1MTg2''@;'; put 'put ''Niw1MTg2Nyw1MTg2OCw1MTg2OSw1MTg3MCw1MTg3MSw1MTg3Miw1MTg3Myw1MTg3NCw1MTg3NSw1MTg3Niw1MTg3Nyw1MTg3OCw1MTg3OSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NTQ0LDg1NDUs''@;'; put 'put ''ODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkz''@;'; put 'put ''Niw5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDUxODgwLDUxODgxLDUxODgyLDUxODgzLDUxODg0LDUxODg1LDUxODg2LDUxODg3LDUxODg4LDUxODg5LDUxODkwLDUxODkxLDUxODkyLDUxODkzLDUxODk0LDUxODk1LDUxODk2LDUxODk3LDUxODk4LDUxODk5LDUxOTAyLDUxOTAzLDUxOTA1LDUxOTA2LDUxOTA3LDUxOTA5LG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTEwLDUxOTExLDUxOTEyLDUxOTEzLDUxOTE0LDUxOTE1LDUxOTE4LDUxOTIwLDUxOTIyLDUxOTI0LDUxOTI1LDUxOTI2LDUxOTI3LDUxOTMwLDUxOTMxLDUxOTMyLDUxOTMzLDUxOTM0LDUxOTM1LDUxOTM3LDUxOTM4LDUxOTM5LDUxOTQw''@;'; put 'put ''LDUxOTQxLDUxOTQyLDUxOTQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTQ0LDUxOTQ1LDUxOTQ2LDUxOTQ3LDUxOTQ5LDUxOTUwLDUxOTUxLDUxOTUyLDUxOTUzLDUxOTU0LDUxOTU1LDUxOTU3LDUxOTU4LDUxOTU5LDUxOTYwLDUxOTYxLDUxOTYyLDUxOTYzLDUxOTY0LDUx''@;'; put 'put ''OTY1LDUxOTY2LDUxOTY3LDUxOTY4LDUxOTY5LDUxOTcwLDUxOTcxLDUxOTcyLDUxOTczLDUxOTc0LDUxOTc1LDUxOTc3LDUxOTc4LDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Niw5NDkyLDk1MDAsOTUxNiw5NTA4LDk1MjQsOTUzMiw5NDczLDk0NzUsOTQ4Nyw5NDkxLDk0OTksOTQ5NSw5NTA3''@;'; put 'put ''LDk1MjMsOTUxNSw5NTMxLDk1NDcsOTUwNCw5NTE5LDk1MTIsOTUyNyw5NTM1LDk1MDEsOTUyMCw5NTA5LDk1MjgsOTUzOCw5NDkwLDk0ODksOTQ5OCw5NDk3LDk0OTQsOTQ5Myw5NDg2LDk0ODUsOTUwMiw5NTAzLDk1MDUsOTUwNiw5NTEwLDk1MTEsOTUxMyw5NTE0LDk1MTcsOTUxOCw5NTIx''@;'; put 'put ''LDk1MjIsOTUyNSw5NTI2LDk1MjksOTUzMCw5NTMzLDk1MzQsOTUzNiw5NTM3LDk1MzksOTU0MCw5NTQxLDk1NDIsOTU0Myw5NTQ0LDk1NDUsOTU0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NzksNTE5ODAsNTE5ODEsNTE5ODIsNTE5ODMsNTE5ODUsNTE5ODYsNTE5ODcsNTE5ODksNTE5OTAsNTE5OTEsNTE5OTMsNTE5OTQsNTE5OTUsNTE5OTYsNTE5OTcsNTE5OTgsNTE5OTksNTIwMDIs''@;'; put 'put ''NTIwMDMsNTIwMDQsNTIwMDUsNTIwMDYsNTIwMDcsNTIwMDgsNTIwMDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMTAsNTIwMTEsNTIwMTIsNTIwMTMsNTIwMTQsNTIwMTUsNTIwMTYsNTIwMTcsNTIwMTgsNTIwMTksNTIwMjAsNTIwMjEsNTIwMjIsNTIwMjMsNTIwMjQsNTIw''@;'; put 'put ''MjUsNTIwMjYsNTIwMjcsNTIwMjgsNTIwMjksNTIwMzAsNTIwMzEsNTIwMzIsNTIwMzQsNTIwMzUsNTIwMzYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMzcsNTIwMzgsNTIwMzksNTIwNDIsNTIwNDMsNTIwNDUsNTIwNDYsNTIwNDcsNTIwNDksNTIwNTAsNTIwNTEsNTIwNTIs''@;'; put 'put ''NTIwNTMsNTIwNTQsNTIwNTUsNTIwNTgsNTIwNTksNTIwNjAsNTIwNjIsNTIwNjMsNTIwNjQsNTIwNjUsNTIwNjYsNTIwNjcsNTIwNjksNTIwNzAsNTIwNzEsNTIwNzIsNTIwNzMsNTIwNzQsNTIwNzUsNTIwNzYsMTMyMDUsMTMyMDYsMTMyMDcsODQ2NywxMzIwOCwxMzI1MiwxMzIxOSwxMzIy''@;'; put 'put ''MCwxMzIyMSwxMzIyMiwxMzIwOSwxMzIxMCwxMzIxMSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNSwxMzIxNiwxMzIxNywxMzIxOCwxMzI1OCwxMzE5NywxMzE5OCwxMzE5OSwxMzI2MywxMzE5MiwxMzE5MywxMzI1NiwxMzIyMywxMzIyNCwxMzIzMiwxMzIzMywxMzIzNCwxMzIzNSwxMzIzNiwx''@;'; put 'put ''MzIzNywxMzIzOCwxMzIzOSwxMzI0MCwxMzI0MSwxMzE4NCwxMzE4NSwxMzE4NiwxMzE4NywxMzE4OCwxMzI0MiwxMzI0MywxMzI0NCwxMzI0NSwxMzI0NiwxMzI0NywxMzIwMCwxMzIwMSwxMzIwMiwxMzIwMywxMzIwNCw4NDg2LDEzMjQ4LDEzMjQ5LDEzMTk0LDEzMTk1LDEzMTk2LDEzMjcw''@;'; put 'put ''LDEzMjUzLDEzMjI5LDEzMjMwLDEzMjMxLDEzMjc1LDEzMjI1LDEzMjI2LDEzMjI3LDEzMjI4LDEzMjc3LDEzMjY0LDEzMjY3LDEzMjUxLDEzMjU3LDEzMjc2LDEzMjU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDUyMDc3LDUyMDc4LDUyMDc5LDUyMDgwLDUyMDgxLDUyMDgyLDUyMDgzLDUyMDg0LDUyMDg1LDUyMDg2LDUyMDg3LDUyMDkwLDUyMDkxLDUyMDkyLDUyMDkzLDUyMDk0LDUyMDk1LDUyMDk2LDUyMDk3LDUyMDk4LDUyMDk5LDUyMTAwLDUyMTAxLDUyMTAyLDUyMTAzLDUyMTA0LG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTA1LDUyMTA2LDUyMTA3LDUyMTA4LDUyMTA5LDUyMTEwLDUyMTExLDUyMTEyLDUyMTEzLDUyMTE0LDUyMTE1LDUyMTE2LDUyMTE3LDUyMTE4LDUyMTE5LDUyMTIwLDUyMTIxLDUyMTIyLDUyMTIzLDUyMTI1LDUyMTI2LDUyMTI3LDUyMTI4''@;'; put 'put ''LDUyMTI5LDUyMTMwLDUyMTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTMyLDUyMTMzLDUyMTM0LDUyMTM1LDUyMTM2LDUyMTM3LDUyMTM4LDUyMTM5LDUyMTQwLDUyMTQxLDUyMTQyLDUyMTQzLDUyMTQ0LDUyMTQ1LDUyMTQ2LDUyMTQ3LDUyMTQ4LDUyMTQ5LDUyMTUwLDUy''@;'; put 'put ''MTUxLDUyMTUzLDUyMTU0LDUyMTU1LDUyMTU2LDUyMTU3LDUyMTU4LDUyMTU5LDUyMTYwLDUyMTYxLDUyMTYyLDUyMTYzLDUyMTY0LDE5OCwyMDgsMTcwLDI5NCxudWxsLDMwNixudWxsLDMxOSwzMjEsMjE2LDMzOCwxODYsMjIyLDM1OCwzMzAsbnVsbCwxMjg5NiwxMjg5NywxMjg5OCwxMjg5''@;'; put 'put ''OSwxMjkwMCwxMjkwMSwxMjkwMiwxMjkwMywxMjkwNCwxMjkwNSwxMjkwNiwxMjkwNywxMjkwOCwxMjkwOSwxMjkxMCwxMjkxMSwxMjkxMiwxMjkxMywxMjkxNCwxMjkxNSwxMjkxNiwxMjkxNywxMjkxOCwxMjkxOSwxMjkyMCwxMjkyMSwxMjkyMiwxMjkyMyw5NDI0LDk0MjUsOTQyNiw5NDI3''@;'; put 'put ''LDk0MjgsOTQyOSw5NDMwLDk0MzEsOTQzMiw5NDMzLDk0MzQsOTQzNSw5NDM2LDk0MzcsOTQzOCw5NDM5LDk0NDAsOTQ0MSw5NDQyLDk0NDMsOTQ0NCw5NDQ1LDk0NDYsOTQ0Nyw5NDQ4LDk0NDksOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIy''@;'; put 'put ''LDkzMjMsOTMyNCw5MzI1LDkzMjYsMTg5LDg1MzEsODUzMiwxODgsMTkwLDg1MzksODU0MCw4NTQxLDg1NDIsNTIxNjUsNTIxNjYsNTIxNjcsNTIxNjgsNTIxNjksNTIxNzAsNTIxNzEsNTIxNzIsNTIxNzMsNTIxNzQsNTIxNzUsNTIxNzYsNTIxNzcsNTIxNzgsNTIxNzksNTIxODEsNTIxODIs''@;'; put 'put ''NTIxODMsNTIxODQsNTIxODUsNTIxODYsNTIxODcsNTIxODgsNTIxODksNTIxOTAsNTIxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxOTIsNTIxOTMsNTIxOTQsNTIxOTUsNTIxOTcsNTIxOTgsNTIyMDAsNTIyMDIsNTIyMDMsNTIyMDQsNTIyMDUsNTIyMDYsNTIyMDcsNTIy''@;'; put 'put ''MDgsNTIyMDksNTIyMTAsNTIyMTEsNTIyMTIsNTIyMTMsNTIyMTQsNTIyMTUsNTIyMTYsNTIyMTcsNTIyMTgsNTIyMTksNTIyMjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIyMjEsNTIyMjIsNTIyMjMsNTIyMjQsNTIyMjUsNTIyMjYsNTIyMjcsNTIyMjgsNTIyMjksNTIyMzAs''@;'; put 'put ''NTIyMzEsNTIyMzIsNTIyMzMsNTIyMzQsNTIyMzUsNTIyMzgsNTIyMzksNTIyNDEsNTIyNDIsNTIyNDMsNTIyNDUsNTIyNDYsNTIyNDcsNTIyNDgsNTIyNDksNTIyNTAsNTIyNTEsNTIyNTQsNTIyNTUsNTIyNTYsNTIyNTksNTIyNjAsMjMwLDI3MywyNDAsMjk1LDMwNSwzMDcsMzEyLDMyMCwz''@;'; put 'put ''MjIsMjQ4LDMzOSwyMjMsMjU0LDM1OSwzMzEsMzI5LDEyODAwLDEyODAxLDEyODAyLDEyODAzLDEyODA0LDEyODA1LDEyODA2LDEyODA3LDEyODA4LDEyODA5LDEyODEwLDEyODExLDEyODEyLDEyODEzLDEyODE0LDEyODE1LDEyODE2LDEyODE3LDEyODE4LDEyODE5LDEyODIwLDEyODIxLDEy''@;'; put 'put ''ODIyLDEyODIzLDEyODI0LDEyODI1LDEyODI2LDEyODI3LDkzNzIsOTM3Myw5Mzc0LDkzNzUsOTM3Niw5Mzc3LDkzNzgsOTM3OSw5MzgwLDkzODEsOTM4Miw5MzgzLDkzODQsOTM4NSw5Mzg2LDkzODcsOTM4OCw5Mzg5LDkzOTAsOTM5MSw5MzkyLDkzOTMsOTM5NCw5Mzk1LDkzOTYsOTM5Nyw5''@;'; put 'put ''MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDkzNDIsOTM0Myw5MzQ0LDkzNDUsOTM0NiwxODUsMTc4LDE3OSw4MzA4LDgzMTksODMyMSw4MzIyLDgzMjMsODMyNCw1MjI2MSw1MjI2Miw1MjI2Niw1MjI2Nyw1MjI2OSw1MjI3MSw1MjI3Myw1MjI3NCw1''@;'; put 'put ''MjI3NSw1MjI3Niw1MjI3Nyw1MjI3OCw1MjI3OSw1MjI4Miw1MjI4Nyw1MjI4OCw1MjI4OSw1MjI5MCw1MjI5MSw1MjI5NCw1MjI5NSw1MjI5Nyw1MjI5OCw1MjI5OSw1MjMwMSw1MjMwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMwMyw1MjMwNCw1MjMwNSw1MjMwNiw1MjMw''@;'; put 'put ''Nyw1MjMxMCw1MjMxNCw1MjMxNSw1MjMxNiw1MjMxNyw1MjMxOCw1MjMxOSw1MjMyMSw1MjMyMiw1MjMyMyw1MjMyNSw1MjMyNyw1MjMyOSw1MjMzMCw1MjMzMSw1MjMzMiw1MjMzMyw1MjMzNCw1MjMzNSw1MjMzNyw1MjMzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMzOSw1''@;'; put 'put ''MjM0MCw1MjM0Miw1MjM0Myw1MjM0NCw1MjM0NSw1MjM0Niw1MjM0Nyw1MjM0OCw1MjM0OSw1MjM1MCw1MjM1MSw1MjM1Miw1MjM1Myw1MjM1NCw1MjM1NSw1MjM1Niw1MjM1Nyw1MjM1OCw1MjM1OSw1MjM2MCw1MjM2MSw1MjM2Miw1MjM2Myw1MjM2NCw1MjM2NSw1MjM2Niw1MjM2Nyw1MjM2''@;'; put 'put ''OCw1MjM2OSw1MjM3MCw1MjM3MSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3Niwx''@;'; put 'put ''MjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQw''@;'; put 'put ''NCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwx''@;'; put 'put ''MjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzNzIsNTIzNzMsNTIzNzQsNTIzNzUsNTIzNzgsNTIzNzksNTIzODEsNTIzODIsNTIzODMsNTIzODUsNTIzODYsNTIzODcsNTIzODgsNTIzODksNTIz''@;'; put 'put ''OTAsNTIzOTEsNTIzOTQsNTIzOTgsNTIzOTksNTI0MDAsNTI0MDEsNTI0MDIsNTI0MDMsNTI0MDYsNTI0MDcsNTI0MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0MTAsNTI0MTEsNTI0MTMsNTI0MTQsNTI0MTUsNTI0MTYsNTI0MTcsNTI0MTgsNTI0MTksNTI0MjIsNTI0MjQs''@;'; put 'put ''NTI0MjYsNTI0MjcsNTI0MjgsNTI0MjksNTI0MzAsNTI0MzEsNTI0MzMsNTI0MzQsNTI0MzUsNTI0MzcsNTI0MzgsNTI0MzksNTI0NDAsNTI0NDEsNTI0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NDMsNTI0NDQsNTI0NDUsNTI0NDYsNTI0NDcsNTI0NDgsNTI0NDksNTI0''@;'; put 'put ''NTAsNTI0NTEsNTI0NTMsNTI0NTQsNTI0NTUsNTI0NTYsNTI0NTcsNTI0NTgsNTI0NTksNTI0NjEsNTI0NjIsNTI0NjMsNTI0NjUsNTI0NjYsNTI0NjcsNTI0NjgsNTI0NjksNTI0NzAsNTI0NzEsNTI0NzIsNTI0NzMsNTI0NzQsNTI0NzUsNTI0NzYsNTI0NzcsMTI0NDksMTI0NTAsMTI0NTEs''@;'; put 'put ''MTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0''@;'; put 'put ''NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYs''@;'; put 'put ''MTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1''@;'; put 'put ''MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDc4LDUyNDc5LDUyNDgwLDUyNDgyLDUyNDgzLDUyNDg0LDUyNDg1LDUyNDg2LDUyNDg3LDUyNDkwLDUyNDkxLDUyNDkzLDUyNDk0LDUyNDk1LDUyNDk3LDUyNDk4LDUyNDk5LDUyNTAwLDUyNTAxLDUyNTAyLDUy''@;'; put 'put ''NTAzLDUyNTA2LDUyNTA4LDUyNTEwLDUyNTExLDUyNTEyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTEzLDUyNTE0LDUyNTE1LDUyNTE3LDUyNTE4LDUyNTE5LDUyNTIxLDUyNTIyLDUyNTIzLDUyNTI1LDUyNTI2LDUyNTI3LDUyNTI4LDUyNTI5LDUyNTMwLDUyNTMxLDUyNTMy''@;'; put 'put ''LDUyNTMzLDUyNTM0LDUyNTM1LDUyNTM2LDUyNTM4LDUyNTM5LDUyNTQwLDUyNTQxLDUyNTQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTQzLDUyNTQ0LDUyNTQ1LDUyNTQ2LDUyNTQ3LDUyNTQ4LDUyNTQ5LDUyNTUwLDUyNTUxLDUyNTUyLDUyNTUzLDUyNTU0LDUyNTU1LDUy''@;'; put 'put ''NTU2LDUyNTU3LDUyNTU4LDUyNTU5LDUyNTYwLDUyNTYxLDUyNTYyLDUyNTYzLDUyNTY0LDUyNTY1LDUyNTY2LDUyNTY3LDUyNTY4LDUyNTY5LDUyNTcwLDUyNTcxLDUyNTczLDUyNTc0LDUyNTc1LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0''@;'; put 'put ''OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5''@;'; put 'put ''OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NzcsNTI1NzgsNTI1NzksNTI1ODEsNTI1ODIsNTI1ODMsNTI1ODQsNTI1ODUsNTI1ODYsNTI1ODcsNTI1OTAsNTI1OTIsNTI1OTQs''@;'; put 'put ''NTI1OTUsNTI1OTYsNTI1OTcsNTI1OTgsNTI1OTksNTI2MDEsNTI2MDIsNTI2MDMsNTI2MDQsNTI2MDUsNTI2MDYsNTI2MDcsNTI2MDgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2MDksNTI2MTAsNTI2MTEsNTI2MTIsNTI2MTMsNTI2MTQsNTI2MTUsNTI2MTcsNTI2MTgsNTI2''@;'; put 'put ''MTksNTI2MjAsNTI2MjEsNTI2MjIsNTI2MjMsNTI2MjQsNTI2MjUsNTI2MjYsNTI2MjcsNTI2MzAsNTI2MzEsNTI2MzMsNTI2MzQsNTI2MzUsNTI2MzcsNTI2MzgsNTI2MzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2NDAsNTI2NDEsNTI2NDIsNTI2NDMsNTI2NDYsNTI2NDgs''@;'; put 'put ''NTI2NTAsNTI2NTEsNTI2NTIsNTI2NTMsNTI2NTQsNTI2NTUsNTI2NTcsNTI2NTgsNTI2NTksNTI2NjAsNTI2NjEsNTI2NjIsNTI2NjMsNTI2NjQsNTI2NjUsNTI2NjYsNTI2NjcsNTI2NjgsNTI2NjksNTI2NzAsNTI2NzEsNTI2NzIsNTI2NzMsNTI2NzQsNTI2NzUsNTI2NzcsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY3OCw1MjY3OSw1MjY4MCw1MjY4MSw1MjY4Miw1MjY4''@;'; put 'put ''Myw1MjY4NSw1MjY4Niw1MjY4Nyw1MjY4OSw1MjY5MCw1MjY5MSw1MjY5Miw1MjY5Myw1MjY5NCw1MjY5NSw1MjY5Niw1MjY5Nyw1MjY5OCw1MjY5OSw1MjcwMCw1MjcwMSw1MjcwMiw1MjcwMyw1MjcwNCw1MjcwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjcwNiw1MjcwNyw1''@;'; put 'put ''MjcwOCw1MjcwOSw1MjcxMCw1MjcxMSw1MjcxMyw1MjcxNCw1MjcxNSw1MjcxNyw1MjcxOCw1MjcxOSw1MjcyMSw1MjcyMiw1MjcyMyw1MjcyNCw1MjcyNSw1MjcyNiw1MjcyNyw1MjczMCw1MjczMiw1MjczNCw1MjczNSw1MjczNiw1MjczNyw1MjczOCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCw1MjczOSw1Mjc0MSw1Mjc0Miw1Mjc0Myw1Mjc0NSw1Mjc0Niw1Mjc0Nyw1Mjc0OSw1Mjc1MCw1Mjc1MSw1Mjc1Miw1Mjc1Myw1Mjc1NCw1Mjc1NSw1Mjc1Nyw1Mjc1OCw1Mjc1OSw1Mjc2MCw1Mjc2Miw1Mjc2Myw1Mjc2NCw1Mjc2NSw1Mjc2Niw1Mjc2Nyw1Mjc3MCw1Mjc3MSw1''@;'; put 'put ''Mjc3Myw1Mjc3NCw1Mjc3NSw1Mjc3Nyw1Mjc3OCw1Mjc3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDUyNzgwLDUyNzgxLDUyNzgyLDUyNzgzLDUyNzg2LDUyNzg4LDUyNzkwLDUyNzkxLDUyNzkyLDUyNzkzLDUyNzk0LDUyNzk1LDUyNzk2LDUyNzk3LDUyNzk4LDUyNzk5LDUyODAwLDUyODAxLDUyODAyLDUyODAzLDUyODA0LDUyODA1LDUyODA2LDUyODA3LDUyODA4LDUyODA5''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODEwLDUyODExLDUyODEyLDUyODEzLDUyODE0LDUyODE1LDUyODE2LDUyODE3LDUyODE4LDUyODE5LDUyODIwLDUyODIxLDUyODIyLDUyODIzLDUyODI2LDUyODI3LDUyODI5LDUyODMwLDUyODM0LDUyODM1LDUyODM2LDUyODM3LDUy''@;'; put 'put ''ODM4LDUyODM5LDUyODQyLDUyODQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODQ2LDUyODQ3LDUyODQ4LDUyODQ5LDUyODUwLDUyODUxLDUyODU0LDUyODU1LDUyODU3LDUyODU4LDUyODU5LDUyODYxLDUyODYyLDUyODYzLDUyODY0LDUyODY1LDUyODY2LDUyODY3LDUyODcw''@;'; put 'put ''LDUyODcyLDUyODc0LDUyODc1LDUyODc2LDUyODc3LDUyODc4LDUyODc5LDUyODgyLDUyODgzLDUyODg1LDUyODg2LDUyODg3LDUyODg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4OTAsNTI4OTEsNTI4OTIsNTI4OTMsNTI4OTQsNTI4OTUsNTI4OTgsNTI5MDIsNTI5MDMsNTI5MDQsNTI5MDUsNTI5MDYsNTI5MDcsNTI5MTAsNTI5MTEsNTI5MTIsNTI5MTMsNTI5MTQsNTI5''@;'; put 'put ''MTUsNTI5MTYsNTI5MTcsNTI5MTgsNTI5MTksNTI5MjAsNTI5MjEsNTI5MjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5MjMsNTI5MjQsNTI5MjUsNTI5MjYsNTI5MjcsNTI5MjgsNTI5MzAsNTI5MzEsNTI5MzIsNTI5MzMsNTI5MzQsNTI5MzUsNTI5MzYsNTI5MzcsNTI5Mzgs''@;'; put 'put ''NTI5MzksNTI5NDAsNTI5NDEsNTI5NDIsNTI5NDMsNTI5NDQsNTI5NDUsNTI5NDYsNTI5NDcsNTI5NDgsNTI5NDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5NTAsNTI5NTEsNTI5NTIsNTI5NTMsNTI5NTQsNTI5NTUsNTI5NTYsNTI5NTcsNTI5NTgsNTI5NTksNTI5NjAsNTI5''@;'; put 'put ''NjEsNTI5NjIsNTI5NjMsNTI5NjYsNTI5NjcsNTI5NjksNTI5NzAsNTI5NzMsNTI5NzQsNTI5NzUsNTI5NzYsNTI5NzcsNTI5NzgsNTI5NzksNTI5ODIsNTI5ODYsNTI5ODcsNTI5ODgsNTI5ODksNTI5OTAsNTI5OTEsNDQwMzIsNDQwMzMsNDQwMzYsNDQwMzksNDQwNDAsNDQwNDEsNDQwNDIs''@;'; put 'put ''NDQwNDgsNDQwNDksNDQwNTAsNDQwNTEsNDQwNTIsNDQwNTMsNDQwNTQsNDQwNTUsNDQwNTcsNDQwNTgsNDQwNTksNDQwNjAsNDQwNjEsNDQwNjQsNDQwNjgsNDQwNzYsNDQwNzcsNDQwNzksNDQwODAsNDQwODEsNDQwODgsNDQwODksNDQwOTIsNDQwOTYsNDQxMDcsNDQxMDksNDQxMTYsNDQx''@;'; put 'put ''MjAsNDQxMjQsNDQxNDQsNDQxNDUsNDQxNDgsNDQxNTEsNDQxNTIsNDQxNTQsNDQxNjAsNDQxNjEsNDQxNjMsNDQxNjQsNDQxNjUsNDQxNjYsNDQxNjksNDQxNzAsNDQxNzEsNDQxNzIsNDQxNzYsNDQxODAsNDQxODgsNDQxODksNDQxOTEsNDQxOTIsNDQxOTMsNDQyMDAsNDQyMDEsNDQyMDIs''@;'; put 'put ''NDQyMDQsNDQyMDcsNDQyMDgsNDQyMTYsNDQyMTcsNDQyMTksNDQyMjAsNDQyMjEsNDQyMjUsNDQyMjgsNDQyMzIsNDQyMzYsNDQyNDUsNDQyNDcsNDQyNTYsNDQyNTcsNDQyNjAsNDQyNjMsNDQyNjQsNDQyNjYsNDQyNjgsNDQyNzEsNDQyNzIsNDQyNzMsNDQyNzUsNDQyNzcsNDQyNzgsNDQy''@;'; put 'put ''ODQsNDQyODUsNDQyODgsNDQyOTIsNDQyOTQsNTI5OTQsNTI5OTUsNTI5OTcsNTI5OTgsNTI5OTksNTMwMDEsNTMwMDIsNTMwMDMsNTMwMDQsNTMwMDUsNTMwMDYsNTMwMDcsNTMwMTAsNTMwMTIsNTMwMTQsNTMwMTUsNTMwMTYsNTMwMTcsNTMwMTgsNTMwMTksNTMwMjEsNTMwMjIsNTMwMjMs''@;'; put 'put ''NTMwMjUsNTMwMjYsNTMwMjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMwMjksNTMwMzAsNTMwMzEsNTMwMzIsNTMwMzMsNTMwMzQsNTMwMzUsNTMwMzgsNTMwNDIsNTMwNDMsNTMwNDQsNTMwNDUsNTMwNDYsNTMwNDcsNTMwNDksNTMwNTAsNTMwNTEsNTMwNTIsNTMwNTMsNTMw''@;'; put 'put ''NTQsNTMwNTUsNTMwNTYsNTMwNTcsNTMwNTgsNTMwNTksNTMwNjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMwNjEsNTMwNjIsNTMwNjMsNTMwNjQsNTMwNjUsNTMwNjYsNTMwNjcsNTMwNjgsNTMwNjksNTMwNzAsNTMwNzEsNTMwNzIsNTMwNzMsNTMwNzQsNTMwNzUsNTMwNzgs''@;'; put 'put ''NTMwNzksNTMwODEsNTMwODIsNTMwODMsNTMwODUsNTMwODYsNTMwODcsNTMwODgsNTMwODksNTMwOTAsNTMwOTEsNTMwOTQsNTMwOTYsNTMwOTgsNTMwOTksNTMxMDAsNDQzMDAsNDQzMDEsNDQzMDMsNDQzMDUsNDQzMTIsNDQzMTYsNDQzMjAsNDQzMjksNDQzMzIsNDQzMzMsNDQzNDAsNDQz''@;'; put 'put ''NDEsNDQzNDQsNDQzNDgsNDQzNTYsNDQzNTcsNDQzNTksNDQzNjEsNDQzNjgsNDQzNzIsNDQzNzYsNDQzODUsNDQzODcsNDQzOTYsNDQzOTcsNDQ0MDAsNDQ0MDMsNDQ0MDQsNDQ0MDUsNDQ0MDYsNDQ0MTEsNDQ0MTIsNDQ0MTMsNDQ0MTUsNDQ0MTcsNDQ0MTgsNDQ0MjQsNDQ0MjUsNDQ0Mjgs''@;'; put 'put ''NDQ0MzIsNDQ0NDQsNDQ0NDUsNDQ0NTIsNDQ0NzEsNDQ0ODAsNDQ0ODEsNDQ0ODQsNDQ0ODgsNDQ0OTYsNDQ0OTcsNDQ0OTksNDQ1MDgsNDQ1MTIsNDQ1MTYsNDQ1MzYsNDQ1MzcsNDQ1NDAsNDQ1NDMsNDQ1NDQsNDQ1NDUsNDQ1NTIsNDQ1NTMsNDQ1NTUsNDQ1NTcsNDQ1NjQsNDQ1OTIsNDQ1''@;'; put 'put ''OTMsNDQ1OTYsNDQ1OTksNDQ2MDAsNDQ2MDIsNDQ2MDgsNDQ2MDksNDQ2MTEsNDQ2MTMsNDQ2MTQsNDQ2MTgsNDQ2MjAsNDQ2MjEsNDQ2MjIsNDQ2MjQsNDQ2MjgsNDQ2MzAsNDQ2MzYsNDQ2MzcsNDQ2MzksNDQ2NDAsNDQ2NDEsNDQ2NDUsNDQ2NDgsNDQ2NDksNDQ2NTIsNDQ2NTYsNDQ2NjQs''@;'; put 'put ''NTMxMDEsNTMxMDIsNTMxMDMsNTMxMDYsNTMxMDcsNTMxMDksNTMxMTAsNTMxMTEsNTMxMTMsNTMxMTQsNTMxMTUsNTMxMTYsNTMxMTcsNTMxMTgsNTMxMTksNTMxMjEsNTMxMjIsNTMxMjMsNTMxMjQsNTMxMjYsNTMxMjcsNTMxMjgsNTMxMjksNTMxMzAsNTMxMzEsNTMxMzMsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsNTMxMzQsNTMxMzUsNTMxMzYsNTMxMzcsNTMxMzgsNTMxMzksNTMxNDAsNTMxNDEsNTMxNDIsNTMxNDMsNTMxNDQsNTMxNDUsNTMxNDYsNTMxNDcsNTMxNDgsNTMxNDksNTMxNTAsNTMxNTEsNTMxNTIsNTMxNTQsNTMxNTUsNTMxNTYsNTMxNTcsNTMxNTgs''@;'; put 'put ''NTMxNTksNTMxNjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMxNjIsNTMxNjMsNTMxNjQsNTMxNjUsNTMxNjYsNTMxNjcsNTMxNjksNTMxNzAsNTMxNzEsNTMxNzIsNTMxNzMsNTMxNzQsNTMxNzUsNTMxNzYsNTMxNzcsNTMxNzgsNTMxNzksNTMxODAsNTMxODEsNTMxODIsNTMx''@;'; put 'put ''ODMsNTMxODQsNTMxODUsNTMxODYsNTMxODcsNTMxODksNTMxOTAsNTMxOTEsNTMxOTIsNTMxOTMsNTMxOTQsNTMxOTUsNDQ2NjUsNDQ2NjcsNDQ2NjgsNDQ2NjksNDQ2NzYsNDQ2NzcsNDQ2ODQsNDQ3MzIsNDQ3MzMsNDQ3MzQsNDQ3MzYsNDQ3NDAsNDQ3NDgsNDQ3NDksNDQ3NTEsNDQ3NTIs''@;'; put 'put ''NDQ3NTMsNDQ3NjAsNDQ3NjEsNDQ3NjQsNDQ3NzYsNDQ3NzksNDQ3ODEsNDQ3ODgsNDQ3OTIsNDQ3OTYsNDQ4MDcsNDQ4MDgsNDQ4MTMsNDQ4MTYsNDQ4NDQsNDQ4NDUsNDQ4NDgsNDQ4NTAsNDQ4NTIsNDQ4NjAsNDQ4NjEsNDQ4NjMsNDQ4NjUsNDQ4NjYsNDQ4NjcsNDQ4NzIsNDQ4NzMsNDQ4''@;'; put 'put ''ODAsNDQ4OTIsNDQ4OTMsNDQ5MDAsNDQ5MDEsNDQ5MjEsNDQ5MjgsNDQ5MzIsNDQ5MzYsNDQ5NDQsNDQ5NDUsNDQ5NDksNDQ5NTYsNDQ5ODQsNDQ5ODUsNDQ5ODgsNDQ5OTIsNDQ5OTksNDVlMyw0NTAwMSw0NTAwMyw0NTAwNSw0NTAwNiw0NTAxMiw0NTAyMCw0NTAzMiw0NTAzMyw0NTA0MCw0''@;'; put 'put ''NTA0MSw0NTA0NCw0NTA0OCw0NTA1Niw0NTA1Nyw0NTA2MCw0NTA2OCw0NTA3Miw0NTA3Niw0NTA4NCw0NTA4NSw0NTA5Niw0NTEyNCw0NTEyNSw0NTEyOCw0NTEzMCw0NTEzMiw0NTEzNCw0NTEzOSw0NTE0MCw0NTE0MSw0NTE0Myw0NTE0NSw1MzE5Niw1MzE5Nyw1MzE5OCw1MzE5OSw1MzIw''@;'; put 'put ''MCw1MzIwMSw1MzIwMiw1MzIwMyw1MzIwNCw1MzIwNSw1MzIwNiw1MzIwNyw1MzIwOCw1MzIwOSw1MzIxMCw1MzIxMSw1MzIxMiw1MzIxMyw1MzIxNCw1MzIxNSw1MzIxOCw1MzIxOSw1MzIyMSw1MzIyMiw1MzIyMyw1MzIyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzIyNiw1''@;'; put 'put ''MzIyNyw1MzIyOCw1MzIyOSw1MzIzMCw1MzIzMSw1MzIzNCw1MzIzNiw1MzIzOCw1MzIzOSw1MzI0MCw1MzI0MSw1MzI0Miw1MzI0Myw1MzI0NSw1MzI0Niw1MzI0Nyw1MzI0OSw1MzI1MCw1MzI1MSw1MzI1Myw1MzI1NCw1MzI1NSw1MzI1Niw1MzI1Nyw1MzI1OCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCw1MzI1OSw1MzI2MCw1MzI2MSw1MzI2Miw1MzI2Myw1MzI2NCw1MzI2Niw1MzI2Nyw1MzI2OCw1MzI2OSw1MzI3MCw1MzI3MSw1MzI3Myw1MzI3NCw1MzI3NSw1MzI3Niw1MzI3Nyw1MzI3OCw1MzI3OSw1MzI4MCw1MzI4MSw1MzI4Miw1MzI4Myw1MzI4NCw1MzI4NSw1''@;'; put 'put ''MzI4Niw1MzI4Nyw1MzI4OCw1MzI4OSw1MzI5MCw1MzI5MSw1MzI5Miw0NTE0OSw0NTE4MCw0NTE4MSw0NTE4NCw0NTE4OCw0NTE5Niw0NTE5Nyw0NTE5OSw0NTIwMSw0NTIwOCw0NTIwOSw0NTIxMCw0NTIxMiw0NTIxNSw0NTIxNiw0NTIxNyw0NTIxOCw0NTIyNCw0NTIyNSw0NTIyNyw0NTIy''@;'; put 'put ''OCw0NTIyOSw0NTIzMCw0NTIzMSw0NTIzMyw0NTIzNSw0NTIzNiw0NTIzNyw0NTI0MCw0NTI0NCw0NTI1Miw0NTI1Myw0NTI1NSw0NTI1Niw0NTI1Nyw0NTI2NCw0NTI2NSw0NTI2OCw0NTI3Miw0NTI4MCw0NTI4NSw0NTMyMCw0NTMyMSw0NTMyMyw0NTMyNCw0NTMyOCw0NTMzMCw0NTMzMSw0''@;'; put 'put ''NTMzNiw0NTMzNyw0NTMzOSw0NTM0MCw0NTM0MSw0NTM0Nyw0NTM0OCw0NTM0OSw0NTM1Miw0NTM1Niw0NTM2NCw0NTM2NSw0NTM2Nyw0NTM2OCw0NTM2OSw0NTM3Niw0NTM3Nyw0NTM4MCw0NTM4NCw0NTM5Miw0NTM5Myw0NTM5Niw0NTM5Nyw0NTQwMCw0NTQwNCw0NTQwOCw0NTQzMiw0NTQz''@;'; put 'put ''Myw0NTQzNiw0NTQ0MCw0NTQ0Miw0NTQ0OCw0NTQ0OSw0NTQ1MSw0NTQ1Myw0NTQ1OCw0NTQ1OSw0NTQ2MCw0NTQ2NCw0NTQ2OCw0NTQ4MCw0NTUxNiw0NTUyMCw0NTUyNCw0NTUzMiw0NTUzMyw1MzI5NCw1MzI5NSw1MzI5Niw1MzI5Nyw1MzI5OCw1MzI5OSw1MzMwMiw1MzMwMyw1MzMwNSw1''@;'; put 'put ''MzMwNiw1MzMwNyw1MzMwOSw1MzMxMCw1MzMxMSw1MzMxMiw1MzMxMyw1MzMxNCw1MzMxNSw1MzMxOCw1MzMyMCw1MzMyMiw1MzMyMyw1MzMyNCw1MzMyNSw1MzMyNiw1MzMyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzMyOSw1MzMzMCw1MzMzMSw1MzMzMyw1MzMzNCw1MzMz''@;'; put 'put ''NSw1MzMzNyw1MzMzOCw1MzMzOSw1MzM0MCw1MzM0MSw1MzM0Miw1MzM0Myw1MzM0NSw1MzM0Niw1MzM0Nyw1MzM0OCw1MzM0OSw1MzM1MCw1MzM1MSw1MzM1Miw1MzM1Myw1MzM1NCw1MzM1NSw1MzM1OCw1MzM1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzM2MSw1MzM2Miw1''@;'; put 'put ''MzM2Myw1MzM2NSw1MzM2Niw1MzM2Nyw1MzM2OCw1MzM2OSw1MzM3MCw1MzM3MSw1MzM3NCw1MzM3NSw1MzM3Niw1MzM3OCw1MzM3OSw1MzM4MCw1MzM4MSw1MzM4Miw1MzM4Myw1MzM4NCw1MzM4NSw1MzM4Niw1MzM4Nyw1MzM4OCw1MzM4OSw1MzM5MCw1MzM5MSw1MzM5Miw1MzM5Myw1MzM5''@;'; put 'put ''NCw1MzM5NSw1MzM5Niw0NTUzNSw0NTU0NCw0NTU0NSw0NTU0OCw0NTU1Miw0NTU2MSw0NTU2Myw0NTU2NSw0NTU3Miw0NTU3Myw0NTU3Niw0NTU3OSw0NTU4MCw0NTU4OCw0NTU4OSw0NTU5MSw0NTU5Myw0NTYwMCw0NTYyMCw0NTYyOCw0NTY1Niw0NTY2MCw0NTY2NCw0NTY3Miw0NTY3Myw0''@;'; put 'put ''NTY4NCw0NTY4NSw0NTY5Miw0NTcwMCw0NTcwMSw0NTcwNSw0NTcxMiw0NTcxMyw0NTcxNiw0NTcyMCw0NTcyMSw0NTcyMiw0NTcyOCw0NTcyOSw0NTczMSw0NTczMyw0NTczNCw0NTczOCw0NTc0MCw0NTc0NCw0NTc0OCw0NTc2OCw0NTc2OSw0NTc3Miw0NTc3Niw0NTc3OCw0NTc4NCw0NTc4''@;'; put 'put ''NSw0NTc4Nyw0NTc4OSw0NTc5NCw0NTc5Niw0NTc5Nyw0NTc5OCw0NTgwMCw0NTgwMyw0NTgwNCw0NTgwNSw0NTgwNiw0NTgwNyw0NTgxMSw0NTgxMiw0NTgxMyw0NTgxNSw0NTgxNiw0NTgxNyw0NTgxOCw0NTgxOSw0NTgyMyw0NTgyNCw0NTgyNSw0NTgyOCw0NTgzMiw0NTg0MCw0NTg0MSw0''@;'; put 'put ''NTg0Myw0NTg0NCw0NTg0NSw0NTg1Miw0NTkwOCw0NTkwOSw0NTkxMCw0NTkxMiw0NTkxNSw0NTkxNiw0NTkxOCw0NTkxOSw0NTkyNCw0NTkyNSw1MzM5Nyw1MzM5OCw1MzM5OSw1MzQwMCw1MzQwMSw1MzQwMiw1MzQwMyw1MzQwNCw1MzQwNSw1MzQwNiw1MzQwNyw1MzQwOCw1MzQwOSw1MzQx''@;'; put 'put ''MCw1MzQxMSw1MzQxNCw1MzQxNSw1MzQxNyw1MzQxOCw1MzQxOSw1MzQyMSw1MzQyMiw1MzQyMyw1MzQyNCw1MzQyNSw1MzQyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQyNyw1MzQzMCw1MzQzMiw1MzQzNCw1MzQzNSw1MzQzNiw1MzQzNyw1MzQzOCw1MzQzOSw1MzQ0Miw1''@;'; put 'put ''MzQ0Myw1MzQ0NSw1MzQ0Niw1MzQ0Nyw1MzQ1MCw1MzQ1MSw1MzQ1Miw1MzQ1Myw1MzQ1NCw1MzQ1NSw1MzQ1OCw1MzQ2Miw1MzQ2Myw1MzQ2NCw1MzQ2NSw1MzQ2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQ2Nyw1MzQ3MCw1MzQ3MSw1MzQ3Myw1MzQ3NCw1MzQ3NSw1MzQ3''@;'; put 'put ''Nyw1MzQ3OCw1MzQ3OSw1MzQ4MCw1MzQ4MSw1MzQ4Miw1MzQ4Myw1MzQ4Niw1MzQ5MCw1MzQ5MSw1MzQ5Miw1MzQ5Myw1MzQ5NCw1MzQ5NSw1MzQ5Nyw1MzQ5OCw1MzQ5OSw1MzUwMCw1MzUwMSw1MzUwMiw1MzUwMyw1MzUwNCw1MzUwNSw1MzUwNiw1MzUwNyw1MzUwOCw0NTkyNyw0NTkyOSw0''@;'; put 'put ''NTkzMSw0NTkzNCw0NTkzNiw0NTkzNyw0NTk0MCw0NTk0NCw0NTk1Miw0NTk1Myw0NTk1NSw0NTk1Niw0NTk1Nyw0NTk2NCw0NTk2OCw0NTk3Miw0NTk4NCw0NTk4NSw0NTk5Miw0NTk5Niw0NjAyMCw0NjAyMSw0NjAyNCw0NjAyNyw0NjAyOCw0NjAzMCw0NjAzMiw0NjAzNiw0NjAzNyw0NjAz''@;'; put 'put ''OSw0NjA0MSw0NjA0Myw0NjA0NSw0NjA0OCw0NjA1Miw0NjA1Niw0NjA3Niw0NjA5Niw0NjEwNCw0NjEwOCw0NjExMiw0NjEyMCw0NjEyMSw0NjEyMyw0NjEzMiw0NjE2MCw0NjE2MSw0NjE2NCw0NjE2OCw0NjE3Niw0NjE3Nyw0NjE3OSw0NjE4MSw0NjE4OCw0NjIwOCw0NjIxNiw0NjIzNyw0''@;'; put 'put ''NjI0NCw0NjI0OCw0NjI1Miw0NjI2MSw0NjI2Myw0NjI2NSw0NjI3Miw0NjI3Niw0NjI4MCw0NjI4OCw0NjI5Myw0NjMwMCw0NjMwMSw0NjMwNCw0NjMwNyw0NjMwOCw0NjMxMCw0NjMxNiw0NjMxNyw0NjMxOSw0NjMyMSw0NjMyOCw0NjM1Niw0NjM1Nyw0NjM2MCw0NjM2Myw0NjM2NCw0NjM3''@;'; put 'put ''Miw0NjM3Myw0NjM3NSw0NjM3Niw0NjM3Nyw0NjM3OCw0NjM4NCw0NjM4NSw0NjM4OCw0NjM5Miw1MzUwOSw1MzUxMCw1MzUxMSw1MzUxMiw1MzUxMyw1MzUxNCw1MzUxNSw1MzUxNiw1MzUxOCw1MzUxOSw1MzUyMCw1MzUyMSw1MzUyMiw1MzUyMyw1MzUyNCw1MzUyNSw1MzUyNiw1MzUyNyw1''@;'; put 'put ''MzUyOCw1MzUyOSw1MzUzMCw1MzUzMSw1MzUzMiw1MzUzMyw1MzUzNCw1MzUzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzUzNiw1MzUzNyw1MzUzOCw1MzUzOSw1MzU0MCw1MzU0MSw1MzU0Miw1MzU0Myw1MzU0NCw1MzU0NSw1MzU0Niw1MzU0Nyw1MzU0OCw1MzU0OSw1MzU1''@;'; put 'put ''MCw1MzU1MSw1MzU1NCw1MzU1NSw1MzU1Nyw1MzU1OCw1MzU1OSw1MzU2MSw1MzU2Myw1MzU2NCw1MzU2NSw1MzU2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzU2Nyw1MzU3MCw1MzU3NCw1MzU3NSw1MzU3Niw1MzU3Nyw1MzU3OCw1MzU3OSw1MzU4Miw1MzU4Myw1MzU4NSw1''@;'; put 'put ''MzU4Niw1MzU4Nyw1MzU4OSw1MzU5MCw1MzU5MSw1MzU5Miw1MzU5Myw1MzU5NCw1MzU5NSw1MzU5OCw1MzYwMCw1MzYwMiw1MzYwMyw1MzYwNCw1MzYwNSw1MzYwNiw1MzYwNyw1MzYwOSw1MzYxMCw1MzYxMSw1MzYxMyw0NjQwMCw0NjQwMSw0NjQwMyw0NjQwNCw0NjQwNSw0NjQxMSw0NjQx''@;'; put 'put ''Miw0NjQxMyw0NjQxNiw0NjQyMCw0NjQyOCw0NjQyOSw0NjQzMSw0NjQzMiw0NjQzMyw0NjQ5Niw0NjQ5Nyw0NjUwMCw0NjUwNCw0NjUwNiw0NjUwNyw0NjUxMiw0NjUxMyw0NjUxNSw0NjUxNiw0NjUxNyw0NjUyMyw0NjUyNCw0NjUyNSw0NjUyOCw0NjUzMiw0NjU0MCw0NjU0MSw0NjU0Myw0''@;'; put 'put ''NjU0NCw0NjU0NSw0NjU1Miw0NjU3Miw0NjYwOCw0NjYwOSw0NjYxMiw0NjYxNiw0NjYyOSw0NjYzNiw0NjY0NCw0NjY2NCw0NjY5Miw0NjY5Niw0Njc0OCw0Njc0OSw0Njc1Miw0Njc1Niw0Njc2Myw0Njc2NCw0Njc2OSw0NjgwNCw0NjgzMiw0NjgzNiw0Njg0MCw0Njg0OCw0Njg0OSw0Njg1''@;'; put 'put ''Myw0Njg4OCw0Njg4OSw0Njg5Miw0Njg5NSw0Njg5Niw0NjkwNCw0NjkwNSw0NjkwNyw0NjkxNiw0NjkyMCw0NjkyNCw0NjkzMiw0NjkzMyw0Njk0NCw0Njk0OCw0Njk1Miw0Njk2MCw0Njk2MSw0Njk2Myw0Njk2NSw0Njk3Miw0Njk3Myw0Njk3Niw0Njk4MCw0Njk4OCw0Njk4OSw0Njk5MSw0''@;'; put 'put ''Njk5Miw0Njk5Myw0Njk5NCw0Njk5OCw0Njk5OSw1MzYxNCw1MzYxNSw1MzYxNiw1MzYxNyw1MzYxOCw1MzYxOSw1MzYyMCw1MzYyMSw1MzYyMiw1MzYyMyw1MzYyNCw1MzYyNSw1MzYyNiw1MzYyNyw1MzYyOSw1MzYzMCw1MzYzMSw1MzYzMiw1MzYzMyw1MzYzNCw1MzYzNSw1MzYzNyw1MzYz''@;'; put 'put ''OCw1MzYzOSw1MzY0MSw1MzY0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY0Myw1MzY0NCw1MzY0NSw1MzY0Niw1MzY0Nyw1MzY0OCw1MzY0OSw1MzY1MCw1MzY1MSw1MzY1Miw1MzY1Myw1MzY1NCw1MzY1NSw1MzY1Niw1MzY1Nyw1MzY1OCw1MzY1OSw1MzY2MCw1MzY2MSw1''@;'; put 'put ''MzY2Miw1MzY2Myw1MzY2Niw1MzY2Nyw1MzY2OSw1MzY3MCw1MzY3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY3Myw1MzY3NCw1MzY3NSw1MzY3Niw1MzY3Nyw1MzY3OCw1MzY3OSw1MzY4Miw1MzY4NCw1MzY4Niw1MzY4Nyw1MzY4OCw1MzY4OSw1MzY5MSw1MzY5Myw1MzY5''@;'; put 'put ''NCw1MzY5NSw1MzY5Nyw1MzY5OCw1MzY5OSw1MzcwMCw1MzcwMSw1MzcwMiw1MzcwMyw1MzcwNCw1MzcwNSw1MzcwNiw1MzcwNyw1MzcwOCw1MzcwOSw1MzcxMCw1MzcxMSw0N2UzLDQ3MDAxLDQ3MDA0LDQ3MDA4LDQ3MDE2LDQ3MDE3LDQ3MDE5LDQ3MDIwLDQ3MDIxLDQ3MDI4LDQ3MDI5LDQ3''@;'; put 'put ''MDMyLDQ3MDQ3LDQ3MDQ5LDQ3MDg0LDQ3MDg1LDQ3MDg4LDQ3MDkyLDQ3MTAwLDQ3MTAxLDQ3MTAzLDQ3MTA0LDQ3MTA1LDQ3MTExLDQ3MTEyLDQ3MTEzLDQ3MTE2LDQ3MTIwLDQ3MTI4LDQ3MTI5LDQ3MTMxLDQ3MTMzLDQ3MTQwLDQ3MTQxLDQ3MTQ0LDQ3MTQ4LDQ3MTU2LDQ3MTU3LDQ3MTU5''@;'; put 'put ''LDQ3MTYwLDQ3MTYxLDQ3MTY4LDQ3MTcyLDQ3MTg1LDQ3MTg3LDQ3MTk2LDQ3MTk3LDQ3MjAwLDQ3MjA0LDQ3MjEyLDQ3MjEzLDQ3MjE1LDQ3MjE3LDQ3MjI0LDQ3MjI4LDQ3MjQ1LDQ3MjcyLDQ3MjgwLDQ3Mjg0LDQ3Mjg4LDQ3Mjk2LDQ3Mjk3LDQ3Mjk5LDQ3MzAxLDQ3MzA4LDQ3MzEyLDQ3''@;'; put 'put ''MzE2LDQ3MzI1LDQ3MzI3LDQ3MzI5LDQ3MzM2LDQ3MzM3LDQ3MzQwLDQ3MzQ0LDQ3MzUyLDQ3MzUzLDQ3MzU1LDQ3MzU3LDQ3MzY0LDQ3Mzg0LDQ3MzkyLDQ3NDIwLDQ3NDIxLDQ3NDI0LDQ3NDI4LDQ3NDM2LDQ3NDM5LDQ3NDQxLDQ3NDQ4LDQ3NDQ5LDQ3NDUyLDQ3NDU2LDQ3NDY0LDQ3NDY1''@;'; put 'put ''LDUzNzEyLDUzNzEzLDUzNzE0LDUzNzE1LDUzNzE2LDUzNzE3LDUzNzE4LDUzNzE5LDUzNzIxLDUzNzIyLDUzNzIzLDUzNzI0LDUzNzI1LDUzNzI2LDUzNzI3LDUzNzI4LDUzNzI5LDUzNzMwLDUzNzMxLDUzNzMyLDUzNzMzLDUzNzM0LDUzNzM1LDUzNzM2LDUzNzM3LDUzNzM4LG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzM5LDUzNzQwLDUzNzQxLDUzNzQyLDUzNzQzLDUzNzQ0LDUzNzQ1LDUzNzQ2LDUzNzQ3LDUzNzQ5LDUzNzUwLDUzNzUxLDUzNzUzLDUzNzU0LDUzNzU1LDUzNzU2LDUzNzU3LDUzNzU4LDUzNzU5LDUzNzYwLDUzNzYxLDUzNzYyLDUzNzYzLDUzNzY0''@;'; put 'put ''LDUzNzY1LDUzNzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzY4LDUzNzcwLDUzNzcxLDUzNzcyLDUzNzczLDUzNzc0LDUzNzc1LDUzNzc3LDUzNzc4LDUzNzc5LDUzNzgwLDUzNzgxLDUzNzgyLDUzNzgzLDUzNzg0LDUzNzg1LDUzNzg2LDUzNzg3LDUzNzg4LDUzNzg5LDUz''@;'; put 'put ''NzkwLDUzNzkxLDUzNzkyLDUzNzkzLDUzNzk0LDUzNzk1LDUzNzk2LDUzNzk3LDUzNzk4LDUzNzk5LDUzODAwLDUzODAxLDQ3NDY3LDQ3NDY5LDQ3NDc2LDQ3NDc3LDQ3NDgwLDQ3NDg0LDQ3NDkyLDQ3NDkzLDQ3NDk1LDQ3NDk3LDQ3NDk4LDQ3NTAxLDQ3NTAyLDQ3NTMyLDQ3NTMzLDQ3NTM2''@;'; put 'put ''LDQ3NTQwLDQ3NTQ4LDQ3NTQ5LDQ3NTUxLDQ3NTUzLDQ3NTYwLDQ3NTYxLDQ3NTY0LDQ3NTY2LDQ3NTY3LDQ3NTY4LDQ3NTY5LDQ3NTcwLDQ3NTc2LDQ3NTc3LDQ3NTc5LDQ3NTgxLDQ3NTgyLDQ3NTg1LDQ3NTg3LDQ3NTg4LDQ3NTg5LDQ3NTkyLDQ3NTk2LDQ3NjA0LDQ3NjA1LDQ3NjA3LDQ3''@;'; put 'put ''NjA4LDQ3NjA5LDQ3NjEwLDQ3NjE2LDQ3NjE3LDQ3NjI0LDQ3NjM3LDQ3NjcyLDQ3NjczLDQ3Njc2LDQ3NjgwLDQ3NjgyLDQ3Njg4LDQ3Njg5LDQ3NjkxLDQ3NjkzLDQ3Njk0LDQ3Njk5LDQ3NzAwLDQ3NzAxLDQ3NzA0LDQ3NzA4LDQ3NzE2LDQ3NzE3LDQ3NzE5LDQ3NzIwLDQ3NzIxLDQ3NzI4''@;'; put 'put ''LDQ3NzI5LDQ3NzMyLDQ3NzM2LDQ3NzQ3LDQ3NzQ4LDQ3NzQ5LDQ3NzUxLDQ3NzU2LDQ3Nzg0LDQ3Nzg1LDQ3Nzg3LDQ3Nzg4LDQ3NzkyLDQ3Nzk0LDQ3ODAwLDQ3ODAxLDQ3ODAzLDQ3ODA1LDQ3ODEyLDQ3ODE2LDQ3ODMyLDQ3ODMzLDQ3ODY4LDUzODAyLDUzODAzLDUzODA2LDUzODA3LDUz''@;'; put 'put ''ODA5LDUzODEwLDUzODExLDUzODEzLDUzODE0LDUzODE1LDUzODE2LDUzODE3LDUzODE4LDUzODE5LDUzODIyLDUzODI0LDUzODI2LDUzODI3LDUzODI4LDUzODI5LDUzODMwLDUzODMxLDUzODMzLDUzODM0LDUzODM1LDUzODM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODM3''@;'; put 'put ''LDUzODM4LDUzODM5LDUzODQwLDUzODQxLDUzODQyLDUzODQzLDUzODQ0LDUzODQ1LDUzODQ2LDUzODQ3LDUzODQ4LDUzODQ5LDUzODUwLDUzODUxLDUzODUzLDUzODU0LDUzODU1LDUzODU2LDUzODU3LDUzODU4LDUzODU5LDUzODYxLDUzODYyLDUzODYzLDUzODY0LG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDUzODY1LDUzODY2LDUzODY3LDUzODY4LDUzODY5LDUzODcwLDUzODcxLDUzODcyLDUzODczLDUzODc0LDUzODc1LDUzODc2LDUzODc3LDUzODc4LDUzODc5LDUzODgwLDUzODgxLDUzODgyLDUzODgzLDUzODg0LDUzODg1LDUzODg2LDUzODg3LDUzODkwLDUzODkx''@;'; put 'put ''LDUzODkzLDUzODk0LDUzODk1LDUzODk3LDUzODk4LDUzODk5LDUzOTAwLDQ3ODcyLDQ3ODc2LDQ3ODg1LDQ3ODg3LDQ3ODg5LDQ3ODk2LDQ3OTAwLDQ3OTA0LDQ3OTEzLDQ3OTE1LDQ3OTI0LDQ3OTI1LDQ3OTI2LDQ3OTI4LDQ3OTMxLDQ3OTMyLDQ3OTMzLDQ3OTM0LDQ3OTQwLDQ3OTQxLDQ3''@;'; put 'put ''OTQzLDQ3OTQ1LDQ3OTQ5LDQ3OTUxLDQ3OTUyLDQ3OTU2LDQ3OTYwLDQ3OTY5LDQ3OTcxLDQ3OTgwLDQ4MDA4LDQ4MDEyLDQ4MDE2LDQ4MDM2LDQ4MDQwLDQ4MDQ0LDQ4MDUyLDQ4MDU1LDQ4MDY0LDQ4MDY4LDQ4MDcyLDQ4MDgwLDQ4MDgzLDQ4MTIwLDQ4MTIxLDQ4MTI0LDQ4MTI3LDQ4MTI4''@;'; put 'put ''LDQ4MTMwLDQ4MTM2LDQ4MTM3LDQ4MTM5LDQ4MTQwLDQ4MTQxLDQ4MTQzLDQ4MTQ1LDQ4MTQ4LDQ4MTQ5LDQ4MTUwLDQ4MTUxLDQ4MTUyLDQ4MTU1LDQ4MTU2LDQ4MTU3LDQ4MTU4LDQ4MTU5LDQ4MTY0LDQ4MTY1LDQ4MTY3LDQ4MTY5LDQ4MTczLDQ4MTc2LDQ4MTc3LDQ4MTgwLDQ4MTg0LDQ4''@;'; put 'put ''MTkyLDQ4MTkzLDQ4MTk1LDQ4MTk2LDQ4MTk3LDQ4MjAxLDQ4MjA0LDQ4MjA1LDQ4MjA4LDQ4MjIxLDQ4MjYwLDQ4MjYxLDQ4MjY0LDQ4MjY3LDQ4MjY4LDQ4MjcwLDQ4Mjc2LDQ4Mjc3LDQ4Mjc5LDUzOTAxLDUzOTAyLDUzOTAzLDUzOTA2LDUzOTA3LDUzOTA4LDUzOTEwLDUzOTExLDUzOTEy''@;'; put 'put ''LDUzOTEzLDUzOTE0LDUzOTE1LDUzOTE3LDUzOTE4LDUzOTE5LDUzOTIxLDUzOTIyLDUzOTIzLDUzOTI1LDUzOTI2LDUzOTI3LDUzOTI4LDUzOTI5LDUzOTMwLDUzOTMxLDUzOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTM0LDUzOTM1LDUzOTM2LDUzOTM4LDUzOTM5LDUz''@;'; put 'put ''OTQwLDUzOTQxLDUzOTQyLDUzOTQzLDUzOTQ2LDUzOTQ3LDUzOTQ5LDUzOTUwLDUzOTUzLDUzOTU1LDUzOTU2LDUzOTU3LDUzOTU4LDUzOTU5LDUzOTYyLDUzOTY0LDUzOTY1LDUzOTY2LDUzOTY3LDUzOTY4LDUzOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTcwLDUzOTcx''@;'; put 'put ''LDUzOTczLDUzOTc0LDUzOTc1LDUzOTc3LDUzOTc4LDUzOTc5LDUzOTgxLDUzOTgyLDUzOTgzLDUzOTg0LDUzOTg1LDUzOTg2LDUzOTg3LDUzOTkwLDUzOTkxLDUzOTkyLDUzOTkzLDUzOTk0LDUzOTk1LDUzOTk2LDUzOTk3LDUzOTk4LDUzOTk5LDU0MDAyLDU0MDAzLDU0MDA1LDU0MDA2LDU0''@;'; put 'put ''MDA3LDU0MDA5LDU0MDEwLDQ4MjgxLDQ4MjgyLDQ4Mjg4LDQ4Mjg5LDQ4MjkyLDQ4Mjk1LDQ4Mjk2LDQ4MzA0LDQ4MzA1LDQ4MzA3LDQ4MzA4LDQ4MzA5LDQ4MzE2LDQ4MzE3LDQ4MzIwLDQ4MzI0LDQ4MzMzLDQ4MzM1LDQ4MzM2LDQ4MzM3LDQ4MzQxLDQ4MzQ0LDQ4MzQ4LDQ4MzcyLDQ4Mzcz''@;'; put 'put ''LDQ4Mzc0LDQ4Mzc2LDQ4MzgwLDQ4Mzg4LDQ4Mzg5LDQ4MzkxLDQ4MzkzLDQ4NDAwLDQ4NDA0LDQ4NDIwLDQ4NDI4LDQ4NDQ4LDQ4NDU2LDQ4NDU3LDQ4NDYwLDQ4NDY0LDQ4NDcyLDQ4NDczLDQ4NDg0LDQ4NDg4LDQ4NTEyLDQ4NTEzLDQ4NTE2LDQ4NTE5LDQ4NTIwLDQ4NTIxLDQ4NTIyLDQ4''@;'; put 'put ''NTI4LDQ4NTI5LDQ4NTMxLDQ4NTMzLDQ4NTM3LDQ4NTM4LDQ4NTQwLDQ4NTQ4LDQ4NTYwLDQ4NTY4LDQ4NTk2LDQ4NTk3LDQ4NjAwLDQ4NjA0LDQ4NjE3LDQ4NjI0LDQ4NjI4LDQ4NjMyLDQ4NjQwLDQ4NjQzLDQ4NjQ1LDQ4NjUyLDQ4NjUzLDQ4NjU2LDQ4NjYwLDQ4NjY4LDQ4NjY5LDQ4Njcx''@;'; put 'put ''LDQ4NzA4LDQ4NzA5LDQ4NzEyLDQ4NzE2LDQ4NzE4LDQ4NzI0LDQ4NzI1LDQ4NzI3LDQ4NzI5LDQ4NzMwLDQ4NzMxLDQ4NzM2LDQ4NzM3LDQ4NzQwLDU0MDExLDU0MDEyLDU0MDEzLDU0MDE0LDU0MDE1LDU0MDE4LDU0MDIwLDU0MDIyLDU0MDIzLDU0MDI0LDU0MDI1LDU0MDI2LDU0MDI3LDU0''@;'; put 'put ''MDMxLDU0MDMzLDU0MDM0LDU0MDM1LDU0MDM3LDU0MDM5LDU0MDQwLDU0MDQxLDU0MDQyLDU0MDQzLDU0MDQ2LDU0MDUwLDU0MDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDUyLDU0MDU0LDU0MDU1LDU0MDU4LDU0MDU5LDU0MDYxLDU0MDYyLDU0MDYzLDU0MDY1LDU0MDY2''@;'; put 'put ''LDU0MDY3LDU0MDY4LDU0MDY5LDU0MDcwLDU0MDcxLDU0MDc0LDU0MDc4LDU0MDc5LDU0MDgwLDU0MDgxLDU0MDgyLDU0MDgzLDU0MDg2LDU0MDg3LDU0MDg4LDU0MDg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDkwLDU0MDkxLDU0MDkyLDU0MDkzLDU0MDk0LDU0MDk1LDU0''@;'; put 'put ''MDk2LDU0MDk3LDU0MDk4LDU0MDk5LDU0MTAwLDU0MTAxLDU0MTAyLDU0MTAzLDU0MTA0LDU0MTA1LDU0MTA2LDU0MTA3LDU0MTA4LDU0MTA5LDU0MTEwLDU0MTExLDU0MTEyLDU0MTEzLDU0MTE0LDU0MTE1LDU0MTE2LDU0MTE3LDU0MTE4LDU0MTE5LDU0MTIwLDU0MTIxLDQ4NzQ0LDQ4NzQ2''@;'; put 'put ''LDQ4NzUyLDQ4NzUzLDQ4NzU1LDQ4NzU2LDQ4NzU3LDQ4NzYzLDQ4NzY0LDQ4NzY1LDQ4NzY4LDQ4NzcyLDQ4NzgwLDQ4NzgxLDQ4NzgzLDQ4Nzg0LDQ4Nzg1LDQ4NzkyLDQ4NzkzLDQ4ODA4LDQ4ODQ4LDQ4ODQ5LDQ4ODUyLDQ4ODU1LDQ4ODU2LDQ4ODY0LDQ4ODY3LDQ4ODY4LDQ4ODY5LDQ4''@;'; put 'put ''ODc2LDQ4ODk3LDQ4OTA0LDQ4OTA1LDQ4OTIwLDQ4OTIxLDQ4OTIzLDQ4OTI0LDQ4OTI1LDQ4OTYwLDQ4OTYxLDQ4OTY0LDQ4OTY4LDQ4OTc2LDQ4OTc3LDQ4OTgxLDQ5MDQ0LDQ5MDcyLDQ5MDkzLDQ5MTAwLDQ5MTAxLDQ5MTA0LDQ5MTA4LDQ5MTE2LDQ5MTE5LDQ5MTIxLDQ5MjEyLDQ5MjMz''@;'; put 'put ''LDQ5MjQwLDQ5MjQ0LDQ5MjQ4LDQ5MjU2LDQ5MjU3LDQ5Mjk2LDQ5Mjk3LDQ5MzAwLDQ5MzA0LDQ5MzEyLDQ5MzEzLDQ5MzE1LDQ5MzE3LDQ5MzI0LDQ5MzI1LDQ5MzI3LDQ5MzI4LDQ5MzMxLDQ5MzMyLDQ5MzMzLDQ5MzM0LDQ5MzQwLDQ5MzQxLDQ5MzQzLDQ5MzQ0LDQ5MzQ1LDQ5MzQ5LDQ5''@;'; put 'put ''MzUyLDQ5MzUzLDQ5MzU2LDQ5MzYwLDQ5MzY4LDQ5MzY5LDQ5MzcxLDQ5MzcyLDQ5MzczLDQ5MzgwLDU0MTIyLDU0MTIzLDU0MTI0LDU0MTI1LDU0MTI2LDU0MTI3LDU0MTI4LDU0MTI5LDU0MTMwLDU0MTMxLDU0MTMyLDU0MTMzLDU0MTM0LDU0MTM1LDU0MTM2LDU0MTM3LDU0MTM4LDU0MTM5''@;'; put 'put ''LDU0MTQyLDU0MTQzLDU0MTQ1LDU0MTQ2LDU0MTQ3LDU0MTQ5LDU0MTUwLDU0MTUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTUyLDU0MTUzLDU0MTU0LDU0MTU1LDU0MTU4LDU0MTYyLDU0MTYzLDU0MTY0LDU0MTY1LDU0MTY2LDU0MTY3LDU0MTcwLDU0MTcxLDU0MTczLDU0''@;'; put 'put ''MTc0LDU0MTc1LDU0MTc3LDU0MTc4LDU0MTc5LDU0MTgwLDU0MTgxLDU0MTgyLDU0MTgzLDU0MTg2LDU0MTg4LDU0MTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTkxLDU0MTkyLDU0MTkzLDU0MTk0LDU0MTk1LDU0MTk3LDU0MTk4LDU0MTk5LDU0MjAxLDU0MjAyLDU0MjAz''@;'; put 'put ''LDU0MjA1LDU0MjA2LDU0MjA3LDU0MjA4LDU0MjA5LDU0MjEwLDU0MjExLDU0MjE0LDU0MjE1LDU0MjE4LDU0MjE5LDU0MjIwLDU0MjIxLDU0MjIyLDU0MjIzLDU0MjI1LDU0MjI2LDU0MjI3LDU0MjI4LDU0MjI5LDU0MjMwLDQ5MzgxLDQ5Mzg0LDQ5Mzg4LDQ5Mzk2LDQ5Mzk3LDQ5Mzk5LDQ5''@;'; put 'put ''NDAxLDQ5NDA4LDQ5NDEyLDQ5NDE2LDQ5NDI0LDQ5NDI5LDQ5NDM2LDQ5NDM3LDQ5NDM4LDQ5NDM5LDQ5NDQwLDQ5NDQzLDQ5NDQ0LDQ5NDQ2LDQ5NDQ3LDQ5NDUyLDQ5NDUzLDQ5NDU1LDQ5NDU2LDQ5NDU3LDQ5NDYyLDQ5NDY0LDQ5NDY1LDQ5NDY4LDQ5NDcyLDQ5NDgwLDQ5NDgxLDQ5NDgz''@;'; put 'put ''LDQ5NDg0LDQ5NDg1LDQ5NDkyLDQ5NDkzLDQ5NDk2LDQ5NTAwLDQ5NTA4LDQ5NTA5LDQ5NTExLDQ5NTEyLDQ5NTEzLDQ5NTIwLDQ5NTI0LDQ5NTI4LDQ5NTQxLDQ5NTQ4LDQ5NTQ5LDQ5NTUwLDQ5NTUyLDQ5NTU2LDQ5NTU4LDQ5NTY0LDQ5NTY1LDQ5NTY3LDQ5NTY5LDQ5NTczLDQ5NTc2LDQ5''@;'; put 'put ''NTc3LDQ5NTgwLDQ5NTg0LDQ5NTk3LDQ5NjA0LDQ5NjA4LDQ5NjEyLDQ5NjIwLDQ5NjIzLDQ5NjI0LDQ5NjMyLDQ5NjM2LDQ5NjQwLDQ5NjQ4LDQ5NjQ5LDQ5NjUxLDQ5NjYwLDQ5NjYxLDQ5NjY0LDQ5NjY4LDQ5Njc2LDQ5Njc3LDQ5Njc5LDQ5NjgxLDQ5Njg4LDQ5Njg5LDQ5NjkyLDQ5Njk1''@;'; put 'put ''LDQ5Njk2LDQ5NzA0LDQ5NzA1LDQ5NzA3LDQ5NzA5LDU0MjMxLDU0MjMzLDU0MjM0LDU0MjM1LDU0MjM2LDU0MjM3LDU0MjM4LDU0MjM5LDU0MjQwLDU0MjQyLDU0MjQ0LDU0MjQ1LDU0MjQ2LDU0MjQ3LDU0MjQ4LDU0MjQ5LDU0MjUwLDU0MjUxLDU0MjU0LDU0MjU1LDU0MjU3LDU0MjU4LDU0''@;'; put 'put ''MjU5LDU0MjYxLDU0MjYyLDU0MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjY0LDU0MjY1LDU0MjY2LDU0MjY3LDU0MjcwLDU0MjcyLDU0Mjc0LDU0Mjc1LDU0Mjc2LDU0Mjc3LDU0Mjc4LDU0Mjc5LDU0MjgxLDU0MjgyLDU0MjgzLDU0Mjg0LDU0Mjg1LDU0Mjg2LDU0Mjg3''@;'; put 'put ''LDU0Mjg4LDU0Mjg5LDU0MjkwLDU0MjkxLDU0MjkyLDU0MjkzLDU0Mjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mjk1LDU0Mjk2LDU0Mjk3LDU0Mjk4LDU0Mjk5LDU0MzAwLDU0MzAyLDU0MzAzLDU0MzA0LDU0MzA1LDU0MzA2LDU0MzA3LDU0MzA4LDU0MzA5LDU0MzEwLDU0''@;'; put 'put ''MzExLDU0MzEyLDU0MzEzLDU0MzE0LDU0MzE1LDU0MzE2LDU0MzE3LDU0MzE4LDU0MzE5LDU0MzIwLDU0MzIxLDU0MzIyLDU0MzIzLDU0MzI0LDU0MzI1LDU0MzI2LDU0MzI3LDQ5NzExLDQ5NzEzLDQ5NzE0LDQ5NzE2LDQ5NzM2LDQ5NzQ0LDQ5NzQ1LDQ5NzQ4LDQ5NzUyLDQ5NzYwLDQ5NzY1''@;'; put 'put ''LDQ5NzcyLDQ5NzczLDQ5Nzc2LDQ5NzgwLDQ5Nzg4LDQ5Nzg5LDQ5NzkxLDQ5NzkzLDQ5ODAwLDQ5ODAxLDQ5ODA4LDQ5ODE2LDQ5ODE5LDQ5ODIxLDQ5ODI4LDQ5ODI5LDQ5ODMyLDQ5ODM2LDQ5ODM3LDQ5ODQ0LDQ5ODQ1LDQ5ODQ3LDQ5ODQ5LDQ5ODg0LDQ5ODg1LDQ5ODg4LDQ5ODkxLDQ5''@;'; put 'put ''ODkyLDQ5ODk5LDQ5OTAwLDQ5OTAxLDQ5OTAzLDQ5OTA1LDQ5OTEwLDQ5OTEyLDQ5OTEzLDQ5OTE1LDQ5OTE2LDQ5OTIwLDQ5OTI4LDQ5OTI5LDQ5OTMyLDQ5OTMzLDQ5OTM5LDQ5OTQwLDQ5OTQxLDQ5OTQ0LDQ5OTQ4LDQ5OTU2LDQ5OTU3LDQ5OTYwLDQ5OTYxLDQ5OTg5LDUwMDI0LDUwMDI1''@;'; put 'put ''LDUwMDI4LDUwMDMyLDUwMDM0LDUwMDQwLDUwMDQxLDUwMDQ0LDUwMDQ1LDUwMDUyLDUwMDU2LDUwMDYwLDUwMTEyLDUwMTM2LDUwMTM3LDUwMTQwLDUwMTQzLDUwMTQ0LDUwMTQ2LDUwMTUyLDUwMTUzLDUwMTU3LDUwMTY0LDUwMTY1LDUwMTY4LDUwMTg0LDUwMTkyLDUwMjEyLDUwMjIwLDUw''@;'; put 'put ''MjI0LDU0MzI4LDU0MzI5LDU0MzMwLDU0MzMxLDU0MzMyLDU0MzMzLDU0MzM0LDU0MzM1LDU0MzM3LDU0MzM4LDU0MzM5LDU0MzQxLDU0MzQyLDU0MzQzLDU0MzQ0LDU0MzQ1LDU0MzQ2LDU0MzQ3LDU0MzQ4LDU0MzQ5LDU0MzUwLDU0MzUxLDU0MzUyLDU0MzUzLDU0MzU0LDU0MzU1LG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MzU2LDU0MzU3LDU0MzU4LDU0MzU5LDU0MzYwLDU0MzYxLDU0MzYyLDU0MzYzLDU0MzY1LDU0MzY2LDU0MzY3LDU0MzY5LDU0MzcwLDU0MzcxLDU0MzczLDU0Mzc0LDU0Mzc1LDU0Mzc2LDU0Mzc3LDU0Mzc4LDU0Mzc5LDU0MzgwLDU0MzgyLDU0''@;'; put 'put ''Mzg0LDU0Mzg1LDU0Mzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mzg3LDU0Mzg4LDU0Mzg5LDU0MzkwLDU0MzkxLDU0Mzk0LDU0Mzk1LDU0Mzk3LDU0Mzk4LDU0NDAxLDU0NDAzLDU0NDA0LDU0NDA1LDU0NDA2LDU0NDA3LDU0NDEwLDU0NDEyLDU0NDE0LDU0NDE1LDU0NDE2''@;'; put 'put ''LDU0NDE3LDU0NDE4LDU0NDE5LDU0NDIxLDU0NDIyLDU0NDIzLDU0NDI0LDU0NDI1LDU0NDI2LDU0NDI3LDU0NDI4LDU0NDI5LDUwMjI4LDUwMjM2LDUwMjM3LDUwMjQ4LDUwMjc2LDUwMjc3LDUwMjgwLDUwMjg0LDUwMjkyLDUwMjkzLDUwMjk3LDUwMzA0LDUwMzI0LDUwMzMyLDUwMzYwLDUw''@;'; put 'put ''MzY0LDUwNDA5LDUwNDE2LDUwNDE3LDUwNDIwLDUwNDI0LDUwNDI2LDUwNDMxLDUwNDMyLDUwNDMzLDUwNDQ0LDUwNDQ4LDUwNDUyLDUwNDYwLDUwNDcyLDUwNDczLDUwNDc2LDUwNDgwLDUwNDg4LDUwNDg5LDUwNDkxLDUwNDkzLDUwNTAwLDUwNTAxLDUwNTA0LDUwNTA1LDUwNTA2LDUwNTA4''@;'; put 'put ''LDUwNTA5LDUwNTEwLDUwNTE1LDUwNTE2LDUwNTE3LDUwNTE5LDUwNTIwLDUwNTIxLDUwNTI1LDUwNTI2LDUwNTI4LDUwNTI5LDUwNTMyLDUwNTM2LDUwNTQ0LDUwNTQ1LDUwNTQ3LDUwNTQ4LDUwNTQ5LDUwNTU2LDUwNTU3LDUwNTYwLDUwNTY0LDUwNTY3LDUwNTcyLDUwNTczLDUwNTc1LDUw''@;'; put 'put ''NTc3LDUwNTgxLDUwNTgzLDUwNTg0LDUwNTg4LDUwNTkyLDUwNjAxLDUwNjEyLDUwNjEzLDUwNjE2LDUwNjE3LDUwNjE5LDUwNjIwLDUwNjIxLDUwNjIyLDUwNjI4LDUwNjI5LDUwNjMwLDUwNjMxLDUwNjMyLDUwNjMzLDUwNjM0LDUwNjM2LDUwNjM4LDU0NDMwLDU0NDMxLDU0NDMyLDU0NDMz''@;'; put 'put ''LDU0NDM0LDU0NDM1LDU0NDM2LDU0NDM3LDU0NDM4LDU0NDM5LDU0NDQwLDU0NDQyLDU0NDQzLDU0NDQ0LDU0NDQ1LDU0NDQ2LDU0NDQ3LDU0NDQ4LDU0NDQ5LDU0NDUwLDU0NDUxLDU0NDUyLDU0NDUzLDU0NDU0LDU0NDU1LDU0NDU2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0''@;'; put 'put ''NDU3LDU0NDU4LDU0NDU5LDU0NDYwLDU0NDYxLDU0NDYyLDU0NDYzLDU0NDY0LDU0NDY1LDU0NDY2LDU0NDY3LDU0NDY4LDU0NDY5LDU0NDcwLDU0NDcxLDU0NDcyLDU0NDczLDU0NDc0LDU0NDc1LDU0NDc3LDU0NDc4LDU0NDc5LDU0NDgxLDU0NDgyLDU0NDgzLDU0NDg1LG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLDU0NDg2LDU0NDg3LDU0NDg4LDU0NDg5LDU0NDkwLDU0NDkxLDU0NDkzLDU0NDk0LDU0NDk2LDU0NDk3LDU0NDk4LDU0NDk5LDU0NTAwLDU0NTAxLDU0NTAyLDU0NTAzLDU0NTA1LDU0NTA2LDU0NTA3LDU0NTA5LDU0NTEwLDU0NTExLDU0NTEzLDU0NTE0LDU0''@;'; put 'put ''NTE1LDU0NTE2LDU0NTE3LDU0NTE4LDU0NTE5LDU0NTIxLDU0NTIyLDU0NTI0LDUwNjQwLDUwNjQxLDUwNjQ0LDUwNjQ4LDUwNjU2LDUwNjU3LDUwNjU5LDUwNjYxLDUwNjY4LDUwNjY5LDUwNjcwLDUwNjcyLDUwNjc2LDUwNjc4LDUwNjc5LDUwNjg0LDUwNjg1LDUwNjg2LDUwNjg3LDUwNjg4''@;'; put 'put ''LDUwNjg5LDUwNjkzLDUwNjk0LDUwNjk1LDUwNjk2LDUwNzAwLDUwNzA0LDUwNzEyLDUwNzEzLDUwNzE1LDUwNzE2LDUwNzI0LDUwNzI1LDUwNzI4LDUwNzMyLDUwNzMzLDUwNzM0LDUwNzM2LDUwNzM5LDUwNzQwLDUwNzQxLDUwNzQzLDUwNzQ1LDUwNzQ3LDUwNzUyLDUwNzUzLDUwNzU2LDUw''@;'; put 'put ''NzYwLDUwNzY4LDUwNzY5LDUwNzcxLDUwNzcyLDUwNzczLDUwNzgwLDUwNzgxLDUwNzg0LDUwNzk2LDUwNzk5LDUwODAxLDUwODA4LDUwODA5LDUwODEyLDUwODE2LDUwODI0LDUwODI1LDUwODI3LDUwODI5LDUwODM2LDUwODM3LDUwODQwLDUwODQ0LDUwODUyLDUwODUzLDUwODU1LDUwODU3''@;'; put 'put ''LDUwODY0LDUwODY1LDUwODY4LDUwODcyLDUwODczLDUwODc0LDUwODgwLDUwODgxLDUwODgzLDUwODg1LDUwODkyLDUwODkzLDUwODk2LDUwOTAwLDUwOTA4LDUwOTA5LDUwOTEyLDUwOTEzLDUwOTIwLDU0NTI2LDU0NTI3LDU0NTI4LDU0NTI5LDU0NTMwLDU0NTMxLDU0NTMzLDU0NTM0LDU0''@;'; put 'put ''NTM1LDU0NTM3LDU0NTM4LDU0NTM5LDU0NTQxLDU0NTQyLDU0NTQzLDU0NTQ0LDU0NTQ1LDU0NTQ2LDU0NTQ3LDU0NTUwLDU0NTUyLDU0NTUzLDU0NTU0LDU0NTU1LDU0NTU2LDU0NTU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTU4LDU0NTU5LDU0NTYwLDU0NTYxLDU0NTYy''@;'; put 'put ''LDU0NTYzLDU0NTY0LDU0NTY1LDU0NTY2LDU0NTY3LDU0NTY4LDU0NTY5LDU0NTcwLDU0NTcxLDU0NTcyLDU0NTczLDU0NTc0LDU0NTc1LDU0NTc2LDU0NTc3LDU0NTc4LDU0NTc5LDU0NTgwLDU0NTgxLDU0NTgyLDU0NTgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTg0LDU0''@;'; put 'put ''NTg1LDU0NTg2LDU0NTg3LDU0NTkwLDU0NTkxLDU0NTkzLDU0NTk0LDU0NTk1LDU0NTk3LDU0NTk4LDU0NTk5LDU0NjAwLDU0NjAxLDU0NjAyLDU0NjAzLDU0NjA2LDU0NjA4LDU0NjEwLDU0NjExLDU0NjEyLDU0NjEzLDU0NjE0LDU0NjE1LDU0NjE4LDU0NjE5LDU0NjIxLDU0NjIyLDU0NjIz''@;'; put 'put ''LDU0NjI1LDU0NjI2LDU0NjI3LDUwOTIxLDUwOTI0LDUwOTI4LDUwOTM2LDUwOTM3LDUwOTQxLDUwOTQ4LDUwOTQ5LDUwOTUyLDUwOTU2LDUwOTY0LDUwOTY1LDUwOTY3LDUwOTY5LDUwOTc2LDUwOTc3LDUwOTgwLDUwOTg0LDUwOTkyLDUwOTkzLDUwOTk1LDUwOTk3LDUwOTk5LDUxMDA0LDUx''@;'; put 'put ''MDA1LDUxMDA4LDUxMDEyLDUxMDE4LDUxMDIwLDUxMDIxLDUxMDIzLDUxMDI1LDUxMDI2LDUxMDI3LDUxMDI4LDUxMDI5LDUxMDMwLDUxMDMxLDUxMDMyLDUxMDM2LDUxMDQwLDUxMDQ4LDUxMDUxLDUxMDYwLDUxMDYxLDUxMDY0LDUxMDY4LDUxMDY5LDUxMDcwLDUxMDc1LDUxMDc2LDUxMDc3''@;'; put 'put ''LDUxMDc5LDUxMDgwLDUxMDgxLDUxMDgyLDUxMDg2LDUxMDg4LDUxMDg5LDUxMDkyLDUxMDk0LDUxMDk1LDUxMDk2LDUxMDk4LDUxMTA0LDUxMTA1LDUxMTA3LDUxMTA4LDUxMTA5LDUxMTEwLDUxMTE2LDUxMTE3LDUxMTIwLDUxMTI0LDUxMTMyLDUxMTMzLDUxMTM1LDUxMTM2LDUxMTM3LDUx''@;'; put 'put ''MTQ0LDUxMTQ1LDUxMTQ4LDUxMTUwLDUxMTUyLDUxMTYwLDUxMTY1LDUxMTcyLDUxMTc2LDUxMTgwLDUxMjAwLDUxMjAxLDUxMjA0LDUxMjA4LDUxMjEwLDU0NjI4LDU0NjMwLDU0NjMxLDU0NjM0LDU0NjM2LDU0NjM4LDU0NjM5LDU0NjQwLDU0NjQxLDU0NjQyLDU0NjQzLDU0NjQ2LDU0NjQ3''@;'; put 'put ''LDU0NjQ5LDU0NjUwLDU0NjUxLDU0NjUzLDU0NjU0LDU0NjU1LDU0NjU2LDU0NjU3LDU0NjU4LDU0NjU5LDU0NjYyLDU0NjY2LDU0NjY3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NjY4LDU0NjY5LDU0NjcwLDU0NjcxLDU0NjczLDU0Njc0LDU0Njc1LDU0Njc2LDU0Njc3LDU0''@;'; put 'put ''Njc4LDU0Njc5LDU0NjgwLDU0NjgxLDU0NjgyLDU0NjgzLDU0Njg0LDU0Njg1LDU0Njg2LDU0Njg3LDU0Njg4LDU0Njg5LDU0NjkwLDU0NjkxLDU0NjkyLDU0Njk0LDU0Njk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Njk2LDU0Njk3LDU0Njk4LDU0Njk5LDU0NzAwLDU0NzAx''@;'; put 'put ''LDU0NzAyLDU0NzAzLDU0NzA0LDU0NzA1LDU0NzA2LDU0NzA3LDU0NzA4LDU0NzA5LDU0NzEwLDU0NzExLDU0NzEyLDU0NzEzLDU0NzE0LDU0NzE1LDU0NzE2LDU0NzE3LDU0NzE4LDU0NzE5LDU0NzIwLDU0NzIxLDU0NzIyLDU0NzIzLDU0NzI0LDU0NzI1LDU0NzI2LDU0NzI3LDUxMjE2LDUx''@;'; put 'put ''MjE3LDUxMjE5LDUxMjIxLDUxMjIyLDUxMjI4LDUxMjI5LDUxMjMyLDUxMjM2LDUxMjQ0LDUxMjQ1LDUxMjQ3LDUxMjQ5LDUxMjU2LDUxMjYwLDUxMjY0LDUxMjcyLDUxMjczLDUxMjc2LDUxMjc3LDUxMjg0LDUxMzEyLDUxMzEzLDUxMzE2LDUxMzIwLDUxMzIyLDUxMzI4LDUxMzI5LDUxMzMx''@;'; put 'put ''LDUxMzMzLDUxMzM0LDUxMzM1LDUxMzM5LDUxMzQwLDUxMzQxLDUxMzQ4LDUxMzU3LDUxMzU5LDUxMzYxLDUxMzY4LDUxMzg4LDUxMzg5LDUxMzk2LDUxNDAwLDUxNDA0LDUxNDEyLDUxNDEzLDUxNDE1LDUxNDE3LDUxNDI0LDUxNDI1LDUxNDI4LDUxNDQ1LDUxNDUyLDUxNDUzLDUxNDU2LDUx''@;'; put 'put ''NDYwLDUxNDYxLDUxNDYyLDUxNDY4LDUxNDY5LDUxNDcxLDUxNDczLDUxNDgwLDUxNTAwLDUxNTA4LDUxNTM2LDUxNTM3LDUxNTQwLDUxNTQ0LDUxNTUyLDUxNTUzLDUxNTU1LDUxNTY0LDUxNTY4LDUxNTcyLDUxNTgwLDUxNTkyLDUxNTkzLDUxNTk2LDUxNjAwLDUxNjA4LDUxNjA5LDUxNjEx''@;'; put 'put ''LDUxNjEzLDUxNjQ4LDUxNjQ5LDUxNjUyLDUxNjU1LDUxNjU2LDUxNjU4LDUxNjY0LDUxNjY1LDUxNjY3LDU0NzMwLDU0NzMxLDU0NzMzLDU0NzM0LDU0NzM1LDU0NzM3LDU0NzM5LDU0NzQwLDU0NzQxLDU0NzQyLDU0NzQzLDU0NzQ2LDU0NzQ4LDU0NzUwLDU0NzUxLDU0NzUyLDU0NzUzLDU0''@;'; put 'put ''NzU0LDU0NzU1LDU0NzU4LDU0NzU5LDU0NzYxLDU0NzYyLDU0NzYzLDU0NzY1LDU0NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NzY3LDU0NzY4LDU0NzY5LDU0NzcwLDU0NzcxLDU0Nzc0LDU0Nzc2LDU0Nzc4LDU0Nzc5LDU0NzgwLDU0NzgxLDU0NzgyLDU0NzgzLDU0Nzg2''@;'; put 'put ''LDU0Nzg3LDU0Nzg5LDU0NzkwLDU0NzkxLDU0NzkzLDU0Nzk0LDU0Nzk1LDU0Nzk2LDU0Nzk3LDU0Nzk4LDU0Nzk5LDU0ODAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODA2LDU0ODA3LDU0ODA4LDU0ODA5LDU0ODEwLDU0ODExLDU0ODEzLDU0ODE0LDU0ODE1LDU0ODE3LDU0''@;'; put 'put ''ODE4LDU0ODE5LDU0ODIxLDU0ODIyLDU0ODIzLDU0ODI0LDU0ODI1LDU0ODI2LDU0ODI3LDU0ODI4LDU0ODMwLDU0ODMxLDU0ODMyLDU0ODMzLDU0ODM0LDU0ODM1LDU0ODM2LDU0ODM3LDU0ODM4LDU0ODM5LDU0ODQyLDU0ODQzLDUxNjY5LDUxNjcwLDUxNjczLDUxNjc0LDUxNjc2LDUxNjc3''@;'; put 'put ''LDUxNjgwLDUxNjgyLDUxNjg0LDUxNjg3LDUxNjkyLDUxNjkzLDUxNjk1LDUxNjk2LDUxNjk3LDUxNzA0LDUxNzA1LDUxNzA4LDUxNzEyLDUxNzIwLDUxNzIxLDUxNzIzLDUxNzI0LDUxNzI1LDUxNzMyLDUxNzM2LDUxNzUzLDUxNzg4LDUxNzg5LDUxNzkyLDUxNzk2LDUxODA0LDUxODA1LDUx''@;'; put 'put ''ODA3LDUxODA4LDUxODA5LDUxODE2LDUxODM3LDUxODQ0LDUxODY0LDUxOTAwLDUxOTAxLDUxOTA0LDUxOTA4LDUxOTE2LDUxOTE3LDUxOTE5LDUxOTIxLDUxOTIzLDUxOTI4LDUxOTI5LDUxOTM2LDUxOTQ4LDUxOTU2LDUxOTc2LDUxOTg0LDUxOTg4LDUxOTkyLDUyZTMsNTIwMDEsNTIwMzMs''@;'; put 'put ''NTIwNDAsNTIwNDEsNTIwNDQsNTIwNDgsNTIwNTYsNTIwNTcsNTIwNjEsNTIwNjgsNTIwODgsNTIwODksNTIxMjQsNTIxNTIsNTIxODAsNTIxOTYsNTIxOTksNTIyMDEsNTIyMzYsNTIyMzcsNTIyNDAsNTIyNDQsNTIyNTIsNTIyNTMsNTIyNTcsNTIyNTgsNTIyNjMsNTIyNjQsNTIyNjUsNTIy''@;'; put 'put ''NjgsNTIyNzAsNTIyNzIsNTIyODAsNTIyODEsNTIyODMsNTQ4NDUsNTQ4NDYsNTQ4NDcsNTQ4NDksNTQ4NTAsNTQ4NTEsNTQ4NTIsNTQ4NTQsNTQ4NTUsNTQ4NTgsNTQ4NjAsNTQ4NjIsNTQ4NjMsNTQ4NjQsNTQ4NjYsNTQ4NjcsNTQ4NzAsNTQ4NzEsNTQ4NzMsNTQ4NzQsNTQ4NzUsNTQ4Nzcs''@;'; put 'put ''NTQ4NzgsNTQ4NzksNTQ4ODAsNTQ4ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4ODIsNTQ4ODMsNTQ4ODQsNTQ4ODUsNTQ4ODYsNTQ4ODgsNTQ4OTAsNTQ4OTEsNTQ4OTIsNTQ4OTMsNTQ4OTQsNTQ4OTUsNTQ4OTgsNTQ4OTksNTQ5MDEsNTQ5MDIsNTQ5MDMsNTQ5MDQsNTQ5''@;'; put 'put ''MDUsNTQ5MDYsNTQ5MDcsNTQ5MDgsNTQ5MDksNTQ5MTAsNTQ5MTEsNTQ5MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5MTMsNTQ5MTQsNTQ5MTYsNTQ5MTgsNTQ5MTksNTQ5MjAsNTQ5MjEsNTQ5MjIsNTQ5MjMsNTQ5MjYsNTQ5MjcsNTQ5MjksNTQ5MzAsNTQ5MzEsNTQ5MzMs''@;'; put 'put ''NTQ5MzQsNTQ5MzUsNTQ5MzYsNTQ5MzcsNTQ5MzgsNTQ5MzksNTQ5NDAsNTQ5NDIsNTQ5NDQsNTQ5NDYsNTQ5NDcsNTQ5NDgsNTQ5NDksNTQ5NTAsNTQ5NTEsNTQ5NTMsNTQ5NTQsNTIyODQsNTIyODUsNTIyODYsNTIyOTIsNTIyOTMsNTIyOTYsNTIzMDAsNTIzMDgsNTIzMDksNTIzMTEsNTIz''@;'; put 'put ''MTIsNTIzMTMsNTIzMjAsNTIzMjQsNTIzMjYsNTIzMjgsNTIzMzYsNTIzNDEsNTIzNzYsNTIzNzcsNTIzODAsNTIzODQsNTIzOTIsNTIzOTMsNTIzOTUsNTIzOTYsNTIzOTcsNTI0MDQsNTI0MDUsNTI0MDgsNTI0MTIsNTI0MjAsNTI0MjEsNTI0MjMsNTI0MjUsNTI0MzIsNTI0MzYsNTI0NTIs''@;'; put 'put ''NTI0NjAsNTI0NjQsNTI0ODEsNTI0ODgsNTI0ODksNTI0OTIsNTI0OTYsNTI1MDQsNTI1MDUsNTI1MDcsNTI1MDksNTI1MTYsNTI1MjAsNTI1MjQsNTI1MzcsNTI1NzIsNTI1NzYsNTI1ODAsNTI1ODgsNTI1ODksNTI1OTEsNTI1OTMsNTI2MDAsNTI2MTYsNTI2MjgsNTI2MjksNTI2MzIsNTI2''@;'; put 'put ''MzYsNTI2NDQsNTI2NDUsNTI2NDcsNTI2NDksNTI2NTYsNTI2NzYsNTI2ODQsNTI2ODgsNTI3MTIsNTI3MTYsNTI3MjAsNTI3MjgsNTI3MjksNTI3MzEsNTI3MzMsNTI3NDAsNTI3NDQsNTI3NDgsNTI3NTYsNTI3NjEsNTI3NjgsNTI3NjksNTI3NzIsNTI3NzYsNTI3ODQsNTI3ODUsNTI3ODcs''@;'; put 'put ''NTI3ODksNTQ5NTUsNTQ5NTcsNTQ5NTgsNTQ5NTksNTQ5NjEsNTQ5NjIsNTQ5NjMsNTQ5NjQsNTQ5NjUsNTQ5NjYsNTQ5NjcsNTQ5NjgsNTQ5NzAsNTQ5NzIsNTQ5NzMsNTQ5NzQsNTQ5NzUsNTQ5NzYsNTQ5NzcsNTQ5NzgsNTQ5NzksNTQ5ODIsNTQ5ODMsNTQ5ODUsNTQ5ODYsNTQ5ODcsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5ODksNTQ5OTAsNTQ5OTEsNTQ5OTIsNTQ5OTQsNTQ5OTUsNTQ5OTcsNTQ5OTgsNTVlMyw1NTAwMiw1NTAwMyw1NTAwNCw1NTAwNSw1NTAwNiw1NTAwNyw1NTAwOSw1NTAxMCw1NTAxMSw1NTAxMyw1NTAxNCw1NTAxNSw1NTAxNyw1NTAxOCw1''@;'; put 'put ''NTAxOSw1NTAyMCw1NTAyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTAyMiw1NTAyMyw1NTAyNSw1NTAyNiw1NTAyNyw1NTAyOCw1NTAzMCw1NTAzMSw1NTAzMiw1NTAzMyw1NTAzNCw1NTAzNSw1NTAzOCw1NTAzOSw1NTA0MSw1NTA0Miw1NTA0Myw1NTA0NSw1NTA0Niw1NTA0''@;'; put 'put ''Nyw1NTA0OCw1NTA0OSw1NTA1MCw1NTA1MSw1NTA1Miw1NTA1Myw1NTA1NCw1NTA1NSw1NTA1Niw1NTA1OCw1NTA1OSw1NTA2MCw1MjgyNCw1MjgyNSw1MjgyOCw1MjgzMSw1MjgzMiw1MjgzMyw1Mjg0MCw1Mjg0MSw1Mjg0Myw1Mjg0NSw1Mjg1Miw1Mjg1Myw1Mjg1Niw1Mjg2MCw1Mjg2OCw1''@;'; put 'put ''Mjg2OSw1Mjg3MSw1Mjg3Myw1Mjg4MCw1Mjg4MSw1Mjg4NCw1Mjg4OCw1Mjg5Niw1Mjg5Nyw1Mjg5OSw1MjkwMCw1MjkwMSw1MjkwOCw1MjkwOSw1MjkyOSw1Mjk2NCw1Mjk2NSw1Mjk2OCw1Mjk3MSw1Mjk3Miw1Mjk4MCw1Mjk4MSw1Mjk4Myw1Mjk4NCw1Mjk4NSw1Mjk5Miw1Mjk5Myw1Mjk5''@;'; put 'put ''Niw1M2UzLDUzMDA4LDUzMDA5LDUzMDExLDUzMDEzLDUzMDIwLDUzMDI0LDUzMDI4LDUzMDM2LDUzMDM3LDUzMDM5LDUzMDQwLDUzMDQxLDUzMDQ4LDUzMDc2LDUzMDc3LDUzMDgwLDUzMDg0LDUzMDkyLDUzMDkzLDUzMDk1LDUzMDk3LDUzMTA0LDUzMTA1LDUzMTA4LDUzMTEyLDUzMTIwLDUz''@;'; put 'put ''MTI1LDUzMTMyLDUzMTUzLDUzMTYwLDUzMTY4LDUzMTg4LDUzMjE2LDUzMjE3LDUzMjIwLDUzMjI0LDUzMjMyLDUzMjMzLDUzMjM1LDUzMjM3LDUzMjQ0LDUzMjQ4LDUzMjUyLDUzMjY1LDUzMjcyLDUzMjkzLDUzMzAwLDUzMzAxLDUzMzA0LDUzMzA4LDU1MDYxLDU1MDYyLDU1MDYzLDU1MDY2''@;'; put 'put ''LDU1MDY3LDU1MDY5LDU1MDcwLDU1MDcxLDU1MDczLDU1MDc0LDU1MDc1LDU1MDc2LDU1MDc3LDU1MDc4LDU1MDc5LDU1MDgyLDU1MDg0LDU1MDg2LDU1MDg3LDU1MDg4LDU1MDg5LDU1MDkwLDU1MDkxLDU1MDk0LDU1MDk1LDU1MDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1''@;'; put 'put ''MDk4LDU1MDk5LDU1MTAxLDU1MTAyLDU1MTAzLDU1MTA0LDU1MTA1LDU1MTA2LDU1MTA3LDU1MTA5LDU1MTEwLDU1MTEyLDU1MTE0LDU1MTE1LDU1MTE2LDU1MTE3LDU1MTE4LDU1MTE5LDU1MTIyLDU1MTIzLDU1MTI1LDU1MTMwLDU1MTMxLDU1MTMyLDU1MTMzLDU1MTM0LG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLDU1MTM1LDU1MTM4LDU1MTQwLDU1MTQyLDU1MTQzLDU1MTQ0LDU1MTQ2LDU1MTQ3LDU1MTQ5LDU1MTUwLDU1MTUxLDU1MTUzLDU1MTU0LDU1MTU1LDU1MTU3LDU1MTU4LDU1MTU5LDU1MTYwLDU1MTYxLDU1MTYyLDU1MTYzLDU1MTY2LDU1MTY3LDU1MTY4LDU1''@;'; put 'put ''MTcwLDU1MTcxLDU1MTcyLDU1MTczLDU1MTc0LDU1MTc1LDU1MTc4LDU1MTc5LDUzMzE2LDUzMzE3LDUzMzE5LDUzMzIxLDUzMzI4LDUzMzMyLDUzMzM2LDUzMzQ0LDUzMzU2LDUzMzU3LDUzMzYwLDUzMzY0LDUzMzcyLDUzMzczLDUzMzc3LDUzNDEyLDUzNDEzLDUzNDE2LDUzNDIwLDUzNDI4''@;'; put 'put ''LDUzNDI5LDUzNDMxLDUzNDMzLDUzNDQwLDUzNDQxLDUzNDQ0LDUzNDQ4LDUzNDQ5LDUzNDU2LDUzNDU3LDUzNDU5LDUzNDYwLDUzNDYxLDUzNDY4LDUzNDY5LDUzNDcyLDUzNDc2LDUzNDg0LDUzNDg1LDUzNDg3LDUzNDg4LDUzNDg5LDUzNDk2LDUzNTE3LDUzNTUyLDUzNTUzLDUzNTU2LDUz''@;'; put 'put ''NTYwLDUzNTYyLDUzNTY4LDUzNTY5LDUzNTcxLDUzNTcyLDUzNTczLDUzNTgwLDUzNTgxLDUzNTg0LDUzNTg4LDUzNTk2LDUzNTk3LDUzNTk5LDUzNjAxLDUzNjA4LDUzNjEyLDUzNjI4LDUzNjM2LDUzNjQwLDUzNjY0LDUzNjY1LDUzNjY4LDUzNjcyLDUzNjgwLDUzNjgxLDUzNjgzLDUzNjg1''@;'; put 'put ''LDUzNjkwLDUzNjkyLDUzNjk2LDUzNzIwLDUzNzQ4LDUzNzUyLDUzNzY3LDUzNzY5LDUzNzc2LDUzODA0LDUzODA1LDUzODA4LDUzODEyLDUzODIwLDUzODIxLDUzODIzLDUzODI1LDUzODMyLDUzODUyLDU1MTgxLDU1MTgyLDU1MTgzLDU1MTg1LDU1MTg2LDU1MTg3LDU1MTg4LDU1MTg5LDU1''@;'; put 'put ''MTkwLDU1MTkxLDU1MTk0LDU1MTk2LDU1MTk4LDU1MTk5LDU1MjAwLDU1MjAxLDU1MjAyLDU1MjAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODYwLDUzODg4LDUzODg5LDUzODkyLDUzODk2LDUzOTA0LDUzOTA1LDUzOTA5''@;'; put 'put ''LDUzOTE2LDUzOTIwLDUzOTI0LDUzOTMyLDUzOTM3LDUzOTQ0LDUzOTQ1LDUzOTQ4LDUzOTUxLDUzOTUyLDUzOTU0LDUzOTYwLDUzOTYxLDUzOTYzLDUzOTcyLDUzOTc2LDUzOTgwLDUzOTg4LDUzOTg5LDU0ZTMsNTQwMDEsNTQwMDQsNTQwMDgsNTQwMTYsNTQwMTcsNTQwMTksNTQwMjEsNTQw''@;'; put 'put ''MjgsNTQwMjksNTQwMzAsNTQwMzIsNTQwMzYsNTQwMzgsNTQwNDQsNTQwNDUsNTQwNDcsNTQwNDgsNTQwNDksNTQwNTMsNTQwNTYsNTQwNTcsNTQwNjAsNTQwNjQsNTQwNzIsNTQwNzMsNTQwNzUsNTQwNzYsNTQwNzcsNTQwODQsNTQwODUsNTQxNDAsNTQxNDEsNTQxNDQsNTQxNDgsNTQxNTYs''@;'; put 'put ''NTQxNTcsNTQxNTksNTQxNjAsNTQxNjEsNTQxNjgsNTQxNjksNTQxNzIsNTQxNzYsNTQxODQsNTQxODUsNTQxODcsNTQxODksNTQxOTYsNTQyMDAsNTQyMDQsNTQyMTIsNTQyMTMsNTQyMTYsNTQyMTcsNTQyMjQsNTQyMzIsNTQyNDEsNTQyNDMsNTQyNTIsNTQyNTMsNTQyNTYsNTQyNjAsNTQy''@;'; put 'put ''NjgsNTQyNjksNTQyNzEsNTQyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsNTQyODAsNTQzMDEsNTQzMzYsNTQzNDAsNTQzNjQsNTQzNjgsNTQzNzIsNTQzODEsNTQzODMsNTQzOTIsNTQzOTMsNTQzOTYsNTQzOTksNTQ0MDAsNTQ0MDIsNTQ0MDgsNTQ0MDksNTQ0MTEsNTQ0MTMsNTQ0MjAsNTQ0NDEsNTQ0NzYsNTQ0ODAsNTQ0ODQsNTQ0OTIsNTQ0OTUsNTQ1''@;'; put 'put ''MDQsNTQ1MDgsNTQ1MTIsNTQ1MjAsNTQ1MjMsNTQ1MjUsNTQ1MzIsNTQ1MzYsNTQ1NDAsNTQ1NDgsNTQ1NDksNTQ1NTEsNTQ1ODgsNTQ1ODksNTQ1OTIsNTQ1OTYsNTQ2MDQsNTQ2MDUsNTQ2MDcsNTQ2MDksNTQ2MTYsNTQ2MTcsNTQ2MjAsNTQ2MjQsNTQ2MjksNTQ2MzIsNTQ2MzMsNTQ2MzUs''@;'; put 'put ''NTQ2MzcsNTQ2NDQsNTQ2NDUsNTQ2NDgsNTQ2NTIsNTQ2NjAsNTQ2NjEsNTQ2NjMsNTQ2NjQsNTQ2NjUsNTQ2NzIsNTQ2OTMsNTQ3MjgsNTQ3MjksNTQ3MzIsNTQ3MzYsNTQ3MzgsNTQ3NDQsNTQ3NDUsNTQ3NDcsNTQ3NDksNTQ3NTYsNTQ3NTcsNTQ3NjAsNTQ3NjQsNTQ3NzIsNTQ3NzMsNTQ3''@;'; put 'put ''NzUsNTQ3NzcsNTQ3ODQsNTQ3ODUsNTQ3ODgsNTQ3OTIsNTQ4MDAsNTQ4MDEsNTQ4MDMsNTQ4MDQsNTQ4MDUsNTQ4MTIsNTQ4MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MjAsNTQ4MjksNTQ4NDAsNTQ4NDEsNTQ4NDQsNTQ4NDgsNTQ4NTMsNTQ4NTYsNTQ4NTcsNTQ4NTksNTQ4NjEsNTQ4NjUsNTQ4NjgsNTQ4NjksNTQ4NzIsNTQ4NzYsNTQ4ODcsNTQ4''@;'; put 'put ''ODksNTQ4OTYsNTQ4OTcsNTQ5MDAsNTQ5MTUsNTQ5MTcsNTQ5MjQsNTQ5MjUsNTQ5MjgsNTQ5MzIsNTQ5NDEsNTQ5NDMsNTQ5NDUsNTQ5NTIsNTQ5NTYsNTQ5NjAsNTQ5NjksNTQ5NzEsNTQ5ODAsNTQ5ODEsNTQ5ODQsNTQ5ODgsNTQ5OTMsNTQ5OTYsNTQ5OTksNTUwMDEsNTUwMDgsNTUwMTIs''@;'; put 'put ''NTUwMTYsNTUwMjQsNTUwMjksNTUwMzYsNTUwMzcsNTUwNDAsNTUwNDQsNTUwNTcsNTUwNjQsNTUwNjUsNTUwNjgsNTUwNzIsNTUwODAsNTUwODEsNTUwODMsNTUwODUsNTUwOTIsNTUwOTMsNTUwOTYsNTUxMDAsNTUxMDgsNTUxMTEsNTUxMTMsNTUxMjAsNTUxMjEsNTUxMjQsNTUxMjYsNTUx''@;'; put 'put ''MjcsNTUxMjgsNTUxMjksNTUxMzYsNTUxMzcsNTUxMzksNTUxNDEsNTUxNDUsNTUxNDgsNTUxNTIsNTUxNTYsNTUxNjQsNTUxNjUsNTUxNjksNTUxNzYsNTUxNzcsNTUxODAsNTUxODQsNTUxOTIsNTUxOTMsNTUxOTUsNTUxOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; 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 ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDI4NSwyMDMzOSwyMDU1MSwyMDcyOSwyMTE1MiwyMTQ4NywyMTYyMSwyMTczMywyMjAyNSwyMzIzMywyMzQ3OCwyNjI0NywyNjU1MCwyNjU1MSwyNjYwNywy''@;'; put 'put ''NzQ2OCwyOTYzNCwzMDE0NiwzMTI5MiwzMzQ5OSwzMzU0MCwzNDkwMywzNDk1MiwzNTM4MiwzNjA0MCwzNjMwMywzNjYwMywzNjgzOCwzOTM4MSwyMTA1MSwyMTM2NCwyMTUwOCwyNDY4MiwyNDkzMiwyNzU4MCwyOTY0NywzMzA1MCwzNTI1OCwzNTI4MiwzODMwNywyMDM1NSwyMTAwMiwyMjcx''@;'; put 'put ''OCwyMjkwNCwyMzAxNCwyNDE3OCwyNDE4NSwyNTAzMSwyNTUzNiwyNjQzOCwyNjYwNCwyNjc1MSwyODU2NywzMDI4NiwzMDQ3NSwzMDk2NSwzMTI0MCwzMTQ4NywzMTc3NywzMjkyNSwzMzM5MCwzMzM5MywzNTU2MywzODI5MSwyMDA3NSwyMTkxNywyNjM1OSwyODIxMiwzMDg4MywzMTQ2OSwz''@;'; put 'put ''Mzg4MywzNTA4OCwzNDYzOCwzODgyNCwyMTIwOCwyMjM1MCwyMjU3MCwyMzg4NCwyNDg2MywyNTAyMiwyNTEyMSwyNTk1NCwyNjU3NywyNzIwNCwyODE4NywyOTk3NiwzMDEzMSwzMDQzNSwzMDY0MCwzMjA1OCwzNzAzOSwzNzk2OSwzNzk3MCw0MDg1MyxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTI4MywyMzcyNCwzMDAwMiwzMjk4NywzNzQ0MCwzODI5Niwy''@;'; put 'put ''MTA4MywyMjUzNiwyMzAwNCwyMzcxMywyMzgzMSwyNDI0NywyNDM3OCwyNDM5NCwyNDk1MSwyNzc0MywzMDA3NCwzMDA4NiwzMTk2OCwzMjExNSwzMjE3NywzMjY1MiwzMzEwOCwzMzMxMywzNDE5MywzNTEzNywzNTYxMSwzNzYyOCwzODQ3Nyw0MDAwNywyMDE3MSwyMDIxNSwyMDQ5MSwyMDk3''@;'; put 'put ''NywyMjYwNywyNDg4NywyNDg5NCwyNDkzNiwyNTkxMywyNzExNCwyODQzMywzMDExNywzMDM0MiwzMDQyMiwzMTYyMywzMzQ0NSwzMzk5NSw2Mzc0NCwzNzc5OSwzODI4MywyMTg4OCwyMzQ1OCwyMjM1Myw2Mzc0NSwzMTkyMywzMjY5NywzNzMwMSwyMDUyMCwyMTQzNSwyMzYyMSwyNDA0MCwy''@;'; put 'put ''NTI5OCwyNTQ1NCwyNTgxOCwyNTgzMSwyODE5MiwyODg0NCwzMTA2NywzNjMxNywzNjM4Miw2Mzc0NiwzNjk4OSwzNzQ0NSwzNzYyNCwyMDA5NCwyMDIxNCwyMDU4MSwyNDA2MiwyNDMxNCwyNDgzOCwyNjk2NywzMzEzNywzNDM4OCwzNjQyMywzNzc0OSwzOTQ2NywyMDA2MiwyMDYyNSwyNjQ4''@;'; put 'put ''MCwyNjY4OCwyMDc0NSwyMTEzMywyMTEzOCwyNzI5OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCwzMDY1MiwzNzM5Miw0MDY2MCwyMTE2MywyNDYyMywzNjg1MCwyMDU1MiwyNTAwMSwyNTU4MSwyNTgwMiwyNjY4NCwyNzI2OCwyODYwOCwzMzE2MCwzNTIzMywzODU0OCwyMjUzMywyOTMwOSwyOTM1NiwyOTk1NiwzMjEyMSwzMjM2NSwzMjkzNywzNTIxMSwzNTcw''@;'; put 'put ''MCwzNjk2Myw0MDI3MywyNTIyNSwyNzc3MCwyODUwMCwzMjA4MCwzMjU3MCwzNTM2MywyMDg2MCwyNDkwNiwzMTY0NSwzNTYwOSwzNzQ2MywzNzc3MiwyMDE0MCwyMDQzNSwyMDUxMCwyMDY3MCwyMDc0MiwyMTE4NSwyMTE5NywyMTM3NSwyMjM4NCwyMjY1OSwyNDIxOCwyNDQ2NSwyNDk1MCwy''@;'; put 'put ''NTAwNCwyNTgwNiwyNTk2NCwyNjIyMywyNjI5OSwyNjM1NiwyNjc3NSwyODAzOSwyODgwNSwyODkxMywyOTg1NSwyOTg2MSwyOTg5OCwzMDE2OSwzMDgyOCwzMDk1NiwzMTQ1NSwzMTQ3OCwzMjA2OSwzMjE0NywzMjc4OSwzMjgzMSwzMzA1MSwzMzY4NiwzNTY4NiwzNjYyOSwzNjg4NSwzNzg1''@;'; put 'put ''NywzODkxNSwzODk2OCwzOTUxNCwzOTkxMiwyMDQxOCwyMTg0MywyMjU4NiwyMjg2NSwyMzM5NSwyMzYyMiwyNDc2MCwyNTEwNiwyNjY5MCwyNjgwMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg1NiwyODMzMCwzMDAyOCwzMDMyOCwzMDkyNiwzMTI5MywzMTk5NSwzMjM2MywzMjM4MCwzNTMzNiwzNTQ4OSwzNTkwMywzODU0Miw0MDM4OCwyMTQ3NiwyMTQ4''@;'; put 'put ''MSwyMTU3OCwyMTYxNywyMjI2NiwyMjk5MywyMzM5NiwyMzYxMSwyNDIzNSwyNTMzNSwyNTkxMSwyNTkyNSwyNTk3MCwyNjI3MiwyNjU0MywyNzA3MywyNzgzNywzMDIwNCwzMDM1MiwzMDU5MCwzMTI5NSwzMjY2MCwzMjc3MSwzMjkyOSwzMzE2NywzMzUxMCwzMzUzMywzMzc3NiwzNDI0MSwz''@;'; put 'put ''NDg2NSwzNDk5NiwzNTQ5Myw2Mzc0NywzNjc2NCwzNzY3OCwzODU5OSwzOTAxNSwzOTY0MCw0MDcyMywyMTc0MSwyNjAxMSwyNjM1NCwyNjc2NywzMTI5NiwzNTg5NSw0MDI4OCwyMjI1NiwyMjM3MiwyMzgyNSwyNjExOCwyNjgwMSwyNjgyOSwyODQxNCwyOTczNiwzNDk3NCwzOTkwOCwyNzc1''@;'; put 'put ''Miw2Mzc0OCwzOTU5MiwyMDM3OSwyMDg0NCwyMDg0OSwyMTE1MSwyMzM4MCwyNDAzNywyNDY1NiwyNDY4NSwyNTMyOSwyNTUxMSwyNTkxNSwyOTY1NywzMTM1NCwzNDQ2NywzNjAwMiwzODc5OSwyMDAxOCwyMzUyMSwyNTA5NiwyNjUyNCwyOTkxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTE4NSwzMzc0NywzNTQ2MywzNTUwNiwzNjMyOCwzNjk0MiwzNzcw''@;'; put 'put ''NywzODk4MiwyNDI3NSwyNzExMiwzNDMwMywzNzEwMSw2Mzc0OSwyMDg5NiwyMzQ0OCwyMzUzMiwyNDkzMSwyNjg3NCwyNzQ1NCwyODc0OCwyOTc0MywyOTkxMiwzMTY0OSwzMjU5MiwzMzczMywzNTI2NCwzNjAxMSwzODM2NCwzOTIwOCwyMTAzOCwyNDY2OSwyNTMyNCwzNjg2NiwyMDM2Miwy''@;'; put 'put ''MDgwOSwyMTI4MSwyMjc0NSwyNDI5MSwyNjMzNiwyNzk2MCwyODgyNiwyOTM3OCwyOTY1NCwzMTU2OCwzMzAwOSwzNzk3OSwyMTM1MCwyNTQ5OSwzMjYxOSwyMDA1NCwyMDYwOCwyMjYwMiwyMjc1MCwyNDYxOCwyNDg3MSwyNTI5NiwyNzA4OCwzOTc0NSwyMzQzOSwzMjAyNCwzMjk0NSwzNjcw''@;'; put 'put ''MywyMDEzMiwyMDY4OSwyMTY3NiwyMTkzMiwyMzMwOCwyMzk2OCwyNDAzOSwyNTg5OCwyNTkzNCwyNjY1NywyNzIxMSwyOTQwOSwzMDM1MCwzMDcwMywzMjA5NCwzMjc2MSwzMzE4NCwzNDEyNiwzNDUyNywzNjYxMSwzNjY4NiwzNzA2NiwzOTE3MSwzOTUwOSwzOTg1MSwxOTk5MiwyMDAzNywy''@;'; put 'put ''MDA2MSwyMDE2NywyMDQ2NSwyMDg1NSwyMTI0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCwyMTMxMiwyMTQ3NSwyMTQ3NywyMTY0NiwyMjAzNiwyMjM4OSwyMjQzNCwyMzQ5NSwyMzk0MywyNDI3MiwyNTA4NCwyNTMwNCwyNTkzNywyNjU1MiwyNjYwMSwyNzA4MywyNzQ3MiwyNzU5MCwyNzYyOCwyNzcxNCwyODMxNywyODc5MiwyOTM5OSwyOTU5MCwyOTY5OSwz''@;'; put 'put ''MDY1NSwzMDY5NywzMTM1MCwzMjEyNywzMjc3NywzMzI3NiwzMzI4NSwzMzI5MCwzMzUwMywzNDkxNCwzNTYzNSwzNjA5MiwzNjU0NCwzNjg4MSwzNzA0MSwzNzQ3NiwzNzU1OCwzOTM3OCwzOTQ5Myw0MDE2OSw0MDQwNyw0MDg2MCwyMjI4MywyMzYxNiwzMzczOCwzODgxNiwzODgyNyw0MDYy''@;'; put 'put ''OCwyMTUzMSwzMTM4NCwzMjY3NiwzNTAzMywzNjU1NywzNzA4OSwyMjUyOCwyMzYyNCwyNTQ5NiwzMTM5MSwyMzQ3MCwyNDMzOSwzMTM1MywzMTQwNiwzMzQyMiwzNjUyNCwyMDUxOCwyMTA0OCwyMTI0MCwyMTM2NywyMjI4MCwyNTMzMSwyNTQ1OCwyNzQwMiwyODA5OSwzMDUxOSwyMTQxMywy''@;'; put 'put ''OTUyNywzNDE1MiwzNjQ3MCwzODM1NywyNjQyNiwyNzMzMSwyODUyOCwzNTQzNywzNjU1NiwzOTI0Myw2Mzc1MCwyNjIzMSwyNzUxMiwzNjAyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzOTc0MCw2Mzc1MSwyMTQ4MywyMjMxNywyMjg2MiwyNTU0MiwyNzEzMSwyOTY3NCwzMDc4OSwzMTQxOCwzMTQyOSwzMTk5OCwzMzkwOSwzNTIxNSwzNjIxMSwzNjkxNywz''@;'; put 'put ''ODMxMiwyMTI0MywyMjM0MywzMDAyMywzMTU4NCwzMzc0MCwzNzQwNiw2Mzc1MiwyNzIyNCwyMDgxMSwyMTA2NywyMTEyNywyNTExOSwyNjg0MCwyNjk5NywzODU1MywyMDY3NywyMTE1NiwyMTIyMCwyNTAyNywyNjAyMCwyNjY4MSwyNzEzNSwyOTgyMiwzMTU2MywzMzQ2NSwzMzc3MSwzNTI1''@;'; put 'put ''MCwzNTY0MSwzNjgxNywzOTI0MSw2Mzc1MywyMDE3MCwyMjkzNSwyNTgxMCwyNjEyOSwyNzI3OCwyOTc0OCwzMTEwNSwzMTE2NSwzMzQ0OSwzNDk0MiwzNDk0MywzNTE2Nyw2Mzc1NCwzNzY3MCwyMDIzNSwyMTQ1MCwyNDYxMywyNTIwMSwyNzc2MiwzMjAyNiwzMjEwMiwyMDEyMCwyMDgzNCwz''@;'; put 'put ''MDY4NCwzMjk0MywyMDIyNSwyMDIzOCwyMDg1NCwyMDg2NCwyMTk4MCwyMjEyMCwyMjMzMSwyMjUyMiwyMjUyNCwyMjgwNCwyMjg1NSwyMjkzMSwyMzQ5MiwyMzY5NiwyMzgyMiwyNDA0OSwyNDE5MCwyNDUyNCwyNTIxNiwyNjA3MSwyNjA4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjM5OCwyNjM5OSwyNjQ2MiwyNjgyNywyNjgyMCwyNzIzMSwyNzQ1MCwy''@;'; put 'put ''NzY4MywyNzc3MywyNzc3OCwyODEwMywyOTU5MiwyOTczNCwyOTczOCwyOTgyNiwyOTg1OSwzMDA3MiwzMDA3OSwzMDg0OSwzMDk1OSwzMTA0MSwzMTA0NywzMTA0OCwzMTA5OCwzMTYzNywzMmUzLDMyMTg2LDMyNjQ4LDMyNzc0LDMyODEzLDMyOTA4LDM1MzUyLDM1NjYzLDM1OTEyLDM2MjE1''@;'; put 'put ''LDM3NjY1LDM3NjY4LDM5MTM4LDM5MjQ5LDM5NDM4LDM5NDM5LDM5NTI1LDQwNTk0LDMyMjAyLDIwMzQyLDIxNTEzLDI1MzI2LDI2NzA4LDM3MzI5LDIxOTMxLDIwNzk0LDYzNzU1LDYzNzU2LDIzMDY4LDI1MDYyLDYzNzU3LDI1Mjk1LDI1MzQzLDYzNzU4LDYzNzU5LDYzNzYwLDYzNzYxLDYz''@;'; put 'put ''NzYyLDYzNzYzLDM3MDI3LDYzNzY0LDYzNzY1LDYzNzY2LDYzNzY3LDYzNzY4LDM1NTgyLDYzNzY5LDYzNzcwLDYzNzcxLDYzNzcyLDI2MjYyLDYzNzczLDI5MDE0LDYzNzc0LDYzNzc1LDM4NjI3LDYzNzc2LDI1NDIzLDI1NDY2LDIxMzM1LDYzNzc3LDI2NTExLDI2OTc2LDI4Mjc1LDYzNzc4''@;'; put 'put ''LDMwMDA3LDYzNzc5LDYzNzgwLDYzNzgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDMyMDEzLDYzNzgyLDYzNzgzLDM0OTMwLDIyMjE4LDIzMDY0LDYzNzg0LDYzNzg1LDYzNzg2LDYzNzg3LDYzNzg4LDIwMDM1LDYzNzg5LDIwODM5LDIyODU2LDI2NjA4LDMyNzg0LDYzNzkwLDIyODk5LDI0MTgwLDI1NzU0LDMxMTc4LDI0NTY1LDI0Njg0LDI1Mjg4LDI1NDY3''@;'; put 'put ''LDIzNTI3LDIzNTExLDIxMTYyLDYzNzkxLDIyOTAwLDI0MzYxLDI0NTk0LDYzNzkyLDYzNzkzLDYzNzk0LDI5Nzg1LDYzNzk1LDYzNzk2LDYzNzk3LDYzNzk4LDYzNzk5LDYzODAwLDM5Mzc3LDYzODAxLDYzODAyLDYzODAzLDYzODA0LDYzODA1LDYzODA2LDYzODA3LDYzODA4LDYzODA5LDYz''@;'; put 'put ''ODEwLDYzODExLDI4NjExLDYzODEyLDYzODEzLDMzMjE1LDM2Nzg2LDI0ODE3LDYzODE0LDYzODE1LDMzMTI2LDYzODE2LDYzODE3LDIzNjE1LDYzODE4LDYzODE5LDYzODIwLDYzODIxLDYzODIyLDYzODIzLDYzODI0LDYzODI1LDIzMjczLDM1MzY1LDI2NDkxLDMyMDE2LDYzODI2LDYzODI3''@;'; put 'put ''LDYzODI4LDYzODI5LDYzODMwLDYzODMxLDMzMDIxLDYzODMyLDYzODMzLDIzNjEyLDI3ODc3LDIxMzExLDI4MzQ2LDIyODEwLDMzNTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMDI1LDIwMTUwLDIwMjk0LDIxOTM0LDIyMjk2LDIyNzI3LDI0NDA2LDI2MDM5LDI2MDg2LDI3MjY0LDI3NTczLDI4MjM3LDMwNzAxLDMxNDcxLDMxNzc0LDMyMjIyLDM0NTA3''@;'; put 'put ''LDM0OTYyLDM3MTcwLDM3NzIzLDI1Nzg3LDI4NjA2LDI5NTYyLDMwMTM2LDM2OTQ4LDIxODQ2LDIyMzQ5LDI1MDE4LDI1ODEyLDI2MzExLDI4MTI5LDI4MjUxLDI4NTI1LDI4NjAxLDMwMTkyLDMyODM1LDMzMjEzLDM0MTEzLDM1MjAzLDM1NTI3LDM1Njc0LDM3NjYzLDI3Nzk1LDMwMDM1LDMx''@;'; put 'put ''NTcyLDM2MzY3LDM2OTU3LDIxNzc2LDIyNTMwLDIyNjE2LDI0MTYyLDI1MDk1LDI1NzU4LDI2ODQ4LDMwMDcwLDMxOTU4LDM0NzM5LDQwNjgwLDIwMTk1LDIyNDA4LDIyMzgyLDIyODIzLDIzNTY1LDIzNzI5LDI0MTE4LDI0NDUzLDI1MTQwLDI1ODI1LDI5NjE5LDMzMjc0LDM0OTU1LDM2MDI0''@;'; put 'put ''LDM4NTM4LDQwNjY3LDIzNDI5LDI0NTAzLDI0NzU1LDIwNDk4LDIwOTkyLDIxMDQwLDIyMjk0LDIyNTgxLDIyNjE1LDIzNTY2LDIzNjQ4LDIzNzk4LDIzOTQ3LDI0MjMwLDI0NDY2LDI0NzY0LDI1MzYxLDI1NDgxLDI1NjIzLDI2NjkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODczLDI3MzMwLDI4MTIwLDI4MTkzLDI4MzcyLDI4NjQ0LDI5MTgyLDMwNDI4''@;'; put 'put ''LDMwNTg1LDMxMTUzLDMxMjkxLDMzNzk2LDM1MjQxLDM2MDc3LDM2MzM5LDM2NDI0LDM2ODY3LDM2ODg0LDM2OTQ3LDM3MTE3LDM3NzA5LDM4NTE4LDM4ODc2LDI3NjAyLDI4Njc4LDI5MjcyLDI5MzQ2LDI5NTQ0LDMwNTYzLDMxMTY3LDMxNzE2LDMyNDExLDM1NzEyLDIyNjk3LDI0Nzc1LDI1''@;'; put 'put ''OTU4LDI2MTA5LDI2MzAyLDI3Nzg4LDI4OTU4LDI5MTI5LDM1OTMwLDM4OTMxLDIwMDc3LDMxMzYxLDIwMTg5LDIwOTA4LDIwOTQxLDIxMjA1LDIxNTE2LDI0OTk5LDI2NDgxLDI2NzA0LDI2ODQ3LDI3OTM0LDI4NTQwLDMwMTQwLDMwNjQzLDMxNDYxLDMzMDEyLDMzODkxLDM3NTA5LDIwODI4''@;'; put 'put ''LDI2MDA3LDI2NDYwLDI2NTE1LDMwMTY4LDMxNDMxLDMzNjUxLDYzODM0LDM1OTEwLDM2ODg3LDM4OTU3LDIzNjYzLDMzMjE2LDMzNDM0LDM2OTI5LDM2OTc1LDM3Mzg5LDI0NDcxLDIzOTY1LDI3MjI1LDI5MTI4LDMwMzMxLDMxNTYxLDM0Mjc2LDM1NTg4LDM3MTU5LDM5NDcyLDIxODk1LDI1''@;'; put 'put ''MDc4LDYzODM1LDMwMzEzLDMyNjQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDM0MzY3LDM0NzQ2LDM1MDY0LDM3MDA3LDYzODM2LDI3OTMxLDI4ODg5LDI5NjYyLDMyMDk3LDMzODUzLDYzODM3LDM3MjI2LDM5NDA5LDYzODM4LDIwMDk4LDIxMzY1LDI3Mzk2LDI3NDEwLDI4NzM0LDI5MjExLDM0MzQ5LDQwNDc4LDIxMDY4LDM2NzcxLDIzODg4LDI1ODI5LDI1''@;'; put 'put ''OTAwLDI3NDE0LDI4NjUxLDMxODExLDMyNDEyLDM0MjUzLDM1MTcyLDM1MjYxLDI1Mjg5LDMzMjQwLDM0ODQ3LDI0MjY2LDI2MzkxLDI4MDEwLDI5NDM2LDI5NzAxLDI5ODA3LDM0NjkwLDM3MDg2LDIwMzU4LDIzODIxLDI0NDgwLDMzODAyLDIwOTE5LDI1NTA0LDMwMDUzLDIwMTQyLDIwNDg2''@;'; put 'put ''LDIwODQxLDIwOTM3LDI2NzUzLDI3MTUzLDMxOTE4LDMxOTIxLDMxOTc1LDMzMzkxLDM1NTM4LDM2NjM1LDM3MzI3LDIwNDA2LDIwNzkxLDIxMjM3LDIxNTcwLDI0MzAwLDI0OTQyLDI1MTUwLDI2MDUzLDI3MzU0LDI4NjcwLDMxMDE4LDM0MjY4LDM0ODUxLDM4MzE3LDM5NTIyLDM5NTMwLDQw''@;'; put 'put ''NTk5LDQwNjU0LDIxMTQ3LDI2MzEwLDI3NTExLDI4NzAxLDMxMDE5LDM2NzA2LDM4NzIyLDI0OTc2LDI1MDg4LDI1ODkxLDI4NDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDAxLDI5ODMzLDMyMjQ0LDMyODc5LDM0MDMwLDM2NjQ2LDM2ODk5LDM3NzA2LDIwOTI1LDIxMDE1LDIxMTU1LDI3OTE2LDI4ODcyLDM1MDEwLDI0MjY1LDI1OTg2LDI3NTY2LDI4''@;'; put 'put ''NjEwLDMxODA2LDI5NTU3LDIwMTk2LDIwMjc4LDIyMjY1LDYzODM5LDIzNzM4LDIzOTk0LDI0NjA0LDI5NjE4LDMxNTMzLDMyNjY2LDMyNzE4LDMyODM4LDM2ODk0LDM3NDI4LDM4NjQ2LDM4NzI4LDM4OTM2LDQwODAxLDIwMzYzLDI4NTgzLDMxMTUwLDM3MzAwLDM4NTgzLDIxMjE0LDYzODQw''@;'; put 'put ''LDI1NzM2LDI1Nzk2LDI3MzQ3LDI4NTEwLDI4Njk2LDI5MjAwLDMwNDM5LDMyNzY5LDM0MzEwLDM0Mzk2LDM2MzM1LDM2NjEzLDM4NzA2LDM5NzkxLDQwNDQyLDQwNTY1LDMwODYwLDMxMTAzLDMyMTYwLDMzNzM3LDM3NjM2LDQwNTc1LDQwNTk1LDM1NTQyLDIyNzUxLDI0MzI0LDI2NDA3LDI4''@;'; put 'put ''NzExLDI5OTAzLDMxODQwLDMyODk0LDIwNzY5LDI4NzEyLDI5MjgyLDMwOTIyLDM2MDM0LDM2MDU4LDM2MDg0LDM4NjQ3LDIwMTAyLDIwNjk4LDIzNTM0LDI0Mjc4LDI2MDA5LDI5MTM0LDMwMjc0LDMwNjM3LDMyODQyLDM0MDQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTg4LDM5NzE5LDQwODQ1LDIyNzQ0LDIzMTA1LDIzNjUwLDI3MTU1LDI4MTIyLDI4''@;'; put 'put ''NDMxLDMwMjY3LDMyMDQ3LDMyMzExLDM0MDc4LDM1MTI4LDM3ODYwLDM4NDc1LDIxMTI5LDI2MDY2LDI2NjExLDI3MDYwLDI3OTY5LDI4MzE2LDI4Njg3LDI5NzA1LDI5NzkyLDMwMDQxLDMwMjQ0LDMwODI3LDM1NjI4LDM5MDA2LDIwODQ1LDI1MTM0LDM4NTIwLDIwMzc0LDIwNTIzLDIzODMz''@;'; put 'put ''LDI4MTM4LDMyMTg0LDM2NjUwLDI0NDU5LDI0OTAwLDI2NjQ3LDYzODQxLDM4NTM0LDIxMjAyLDMyOTA3LDIwOTU2LDIwOTQwLDI2OTc0LDMxMjYwLDMyMTkwLDMzNzc3LDM4NTE3LDIwNDQyLDIxMDMzLDIxNDAwLDIxNTE5LDIxNzc0LDIzNjUzLDI0NzQzLDI2NDQ2LDI2NzkyLDI4MDEyLDI5''@;'; put 'put ''MzEzLDI5NDMyLDI5NzAyLDI5ODI3LDYzODQyLDMwMTc4LDMxODUyLDMyNjMzLDMyNjk2LDMzNjczLDM1MDIzLDM1MDQxLDM3MzI0LDM3MzI4LDM4NjI2LDM5ODgxLDIxNTMzLDI4NTQyLDI5MTM2LDI5ODQ4LDM0Mjk4LDM2NTIyLDM4NTYzLDQwMDIzLDQwNjA3LDI2NTE5LDI4MTA3LDI5NzQ3''@;'; put 'put ''LDMzMjU2LDM4Njc4LDMwNzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLDMxNDM1LDMxNTIwLDMxODkwLDI1NzA1LDI5ODAyLDMwMTk0LDMwOTA4LDMwOTUyLDM5MzQwLDM5NzY0LDQwNjM1LDIzNTE4LDI0MTQ5LDI4NDQ4LDMzMTgwLDMzNzA3LDM3ZTMsMTk5NzUsMjEzMjUsMjMwODEsMjQwMTgsMjQzOTgsMjQ5MzAsMjU0MDUsMjYyMTcsMjYzNjQsMjg0MTUs''@;'; put 'put ''Mjg0NTksMjg3NzEsMzA2MjIsMzM4MzYsMzQwNjcsMzQ4NzUsMzY2MjcsMzkyMzcsMzk5OTUsMjE3ODgsMjUyNzMsMjY0MTEsMjc4MTksMzM1NDUsMzUxNzgsMzg3NzgsMjAxMjksMjI5MTYsMjQ1MzYsMjQ1MzcsMjYzOTUsMzIxNzgsMzI1OTYsMzM0MjYsMzM1NzksMzM3MjUsMzY2MzgsMzcw''@;'; put 'put ''MTcsMjI0NzUsMjI5NjksMjMxODYsMjM1MDQsMjYxNTEsMjY1MjIsMjY3NTcsMjc1OTksMjkwMjgsMzI2MjksMzYwMjMsMzYwNjcsMzY5OTMsMzk3NDksMzMwMzIsMzU5NzgsMzg0NzYsMzk0ODgsNDA2MTMsMjMzOTEsMjc2NjcsMjk0NjcsMzA0NTAsMzA0MzEsMzM4MDQsMjA5MDYsMzUyMTks''@;'; put 'put ''MjA4MTMsMjA4ODUsMjExOTMsMjY4MjUsMjc3OTYsMzA0NjgsMzA0OTYsMzIxOTEsMzIyMzYsMzg3NTQsNDA2MjksMjgzNTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQwNjUsMjA5MDEsMjE1MTcsMjE2MjksMjYxMjYsMjYyNjksMjY5MTksMjgzMTksMzAzOTksMzA2MDksMzM1NTksMzM5ODYsMzQ3MTksMzcyMjUsMzc1MjgsNDAxODAsMzQ5NDYsMjAzOTgs''@;'; put 'put ''MjA4ODIsMjEyMTUsMjI5ODIsMjQxMjUsMjQ5MTcsMjU3MjAsMjU3MjEsMjYyODYsMjY1NzYsMjcxNjksMjc1OTcsMjc2MTEsMjkyNzksMjkyODEsMjk3NjEsMzA1MjAsMzA2ODMsMzI3OTEsMzM0NjgsMzM1NDEsMzU1ODQsMzU2MjQsMzU5ODAsMjY0MDgsMjc3OTIsMjkyODcsMzA0NDYsMzA1''@;'; put 'put ''NjYsMzEzMDIsNDAzNjEsMjc1MTksMjc3OTQsMjI4MTgsMjY0MDYsMzM5NDUsMjEzNTksMjI2NzUsMjI5MzcsMjQyODcsMjU1NTEsMjYxNjQsMjY0ODMsMjgyMTgsMjk0ODMsMzE0NDcsMzM0OTUsMzc2NzIsMjEyMDksMjQwNDMsMjUwMDYsMjUwMzUsMjUwOTgsMjUyODcsMjU3NzEsMjYwODAs''@;'; put 'put ''MjY5NjksMjc0OTQsMjc1OTUsMjg5NjEsMjk2ODcsMzAwNDUsMzIzMjYsMzMzMTAsMzM1MzgsMzQxNTQsMzU0OTEsMzYwMzEsMzg2OTUsNDAyODksMjI2OTYsNDA2NjQsMjA0OTcsMjEwMDYsMjE1NjMsMjE4MzksMjU5OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjc3NjYsMzIwMTAsMzIwMTEsMzI4NjIsMzQ0NDIsMzgyNzIsMzg2MzksMjEyNDcsMjc3OTcs''@;'; put 'put ''MjkyODksMjE2MTksMjMxOTQsMjM2MTQsMjM4ODMsMjQzOTYsMjQ0OTQsMjY0MTAsMjY4MDYsMjY5NzksMjgyMjAsMjgyMjgsMzA0NzMsMzE4NTksMzI2NTQsMzQxODMsMzU1OTgsMzY4NTUsMzg3NTMsNDA2OTIsMjM3MzUsMjQ3NTgsMjQ4NDUsMjUwMDMsMjU5MzUsMjYxMDcsMjYxMDgsMjc2''@;'; put 'put ''NjUsMjc4ODcsMjk1OTksMjk2NDEsMzIyMjUsMzgyOTIsMjM0OTQsMzQ1ODgsMzU2MDAsMjEwODUsMjEzMzgsMjUyOTMsMjU2MTUsMjU3NzgsMjY0MjAsMjcxOTIsMjc4NTAsMjk2MzIsMjk4NTQsMzE2MzYsMzE4OTMsMzIyODMsMzMxNjIsMzMzMzQsMzQxODAsMzY4NDMsMzg2NDksMzkzNjEs''@;'; put 'put ''MjAyNzYsMjEzMjIsMjE0NTMsMjE0NjcsMjUyOTIsMjU2NDQsMjU4NTYsMjYwMDEsMjcwNzUsMjc4ODYsMjg1MDQsMjk2NzcsMzAwMzYsMzAyNDIsMzA0MzYsMzA0NjAsMzA5MjgsMzA5NzEsMzEwMjAsMzIwNzAsMzMzMjQsMzQ3ODQsMzY4MjAsMzg5MzAsMzkxNTEsMjExODcsMjUzMDAsMjU3''@;'; put 'put ''NjUsMjgxOTYsMjg0OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''MzAzMzIsMzYyOTksMzcyOTcsMzc0NzQsMzk2NjIsMzk3NDcsMjA1MTUsMjA2MjEsMjIzNDYsMjI5NTIsMjM1OTIsMjQxMzUsMjQ0MzksMjUxNTEsMjU5MTgsMjYwNDEsMjYwNDksMjYxMjEsMjY1MDcsMjcwMzYsMjgzNTQsMzA5MTcsMzIwMzMsMzI5MzgsMzMxNTIsMzMzMjMsMzM0NTksMzM5''@;'; put 'put ''NTMsMzQ0NDQsMzUzNzAsMzU2MDcsMzcwMzAsMzg0NTAsNDA4NDgsMjA0OTMsMjA0NjcsNjM4NDMsMjI1MjEsMjQ0NzIsMjUzMDgsMjU0OTAsMjY0NzksMjgyMjcsMjg5NTMsMzA0MDMsMzI5NzIsMzI5ODYsMzUwNjAsMzUwNjEsMzUwOTcsMzYwNjQsMzY2NDksMzcxOTcsMzg1MDYsMjAyNzEs''@;'; put 'put ''MjAzMzYsMjQwOTEsMjY1NzUsMjY2NTgsMzAzMzMsMzAzMzQsMzk3NDgsMjQxNjEsMjcxNDYsMjkwMzMsMjkxNDAsMzAwNTgsNjM4NDQsMzIzMjEsMzQxMTUsMzQyODEsMzkxMzIsMjAyNDAsMzE1NjcsMzI2MjQsMzgzMDksMjA5NjEsMjQwNzAsMjY4MDUsMjc3MTAsMjc3MjYsMjc4NjcsMjkz''@;'; put 'put ''NTksMzE2ODQsMzM1MzksMjc4NjEsMjk3NTQsMjA3MzEsMjExMjgsMjI3MjEsMjU4MTYsMjcyODcsMjk4NjMsMzAyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA4ODcsMzQzMjcsMzgzNzAsMzg3MTMsNjM4NDUsMjEzNDIsMjQzMjEsMzU3MjIsMzY3NzYsMzY3ODMsMzcwMDIsMjEwMjksMzA2MjksNDAwMDksNDA3MTIsMTk5OTMsMjA0ODIsMjA4NTMsMjM2''@;'; put 'put ''NDMsMjQxODMsMjYxNDIsMjYxNzAsMjY1NjQsMjY4MjEsMjg4NTEsMjk5NTMsMzAxNDksMzExNzcsMzE0NTMsMzY2NDcsMzkyMDAsMzk0MzIsMjA0NDUsMjI1NjEsMjI1NzcsMjM1NDIsMjYyMjIsMjc0OTMsMjc5MjEsMjgyODIsMjg1NDEsMjk2NjgsMjk5OTUsMzM3NjksMzUwMzYsMzUwOTEs''@;'; put 'put ''MzU2NzYsMzY2MjgsMjAyMzksMjA2OTMsMjEyNjQsMjEzNDAsMjM0NDMsMjQ0ODksMjYzODEsMzExMTksMzMxNDUsMzM1ODMsMzQwNjgsMzUwNzksMzUyMDYsMzY2NjUsMzY2NjcsMzkzMzMsMzk5NTQsMjY0MTIsMjAwODYsMjA0NzIsMjI4NTcsMjM1NTMsMjM3OTEsMjM3OTIsMjU0NDcsMjY4''@;'; put 'put ''MzQsMjg5MjUsMjkwOTAsMjk3MzksMzIyOTksMzQwMjgsMzQ1NjIsMzY4OTgsMzc1ODYsNDAxNzksMTk5ODEsMjAxODQsMjA0NjMsMjA2MTMsMjEwNzgsMjExMDMsMjE1NDIsMjE2NDgsMjI0OTYsMjI4MjcsMjMxNDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMzODYsMjM0MTMsMjM1MDAsMjQyMjAsNjM4NDYsMjUyMDYsMjU5NzUsMjYwMjMsMjgwMTQsMjgz''@;'; put 'put ''MjUsMjkyMzgsMzE1MjYsMzE4MDcsMzI1NjYsMzMxMDQsMzMxMDUsMzMxNzgsMzMzNDQsMzM0MzMsMzM3MDUsMzUzMzEsMzZlMywzNjA3MCwzNjA5MSwzNjIxMiwzNjI4MiwzNzA5NiwzNzM0MCwzODQyOCwzODQ2OCwzOTM4NSw0MDE2NywyMTI3MSwyMDk5OCwyMTU0NSwyMjEzMiwyMjcwNywy''@;'; put 'put ''Mjg2OCwyMjg5NCwyNDU3NSwyNDk5NiwyNTE5OCwyNjEyOCwyNzc3NCwyODk1NCwzMDQwNiwzMTg4MSwzMTk2NiwzMjAyNywzMzQ1MiwzNjAzMywzODY0MCw2Mzg0NywyMDMxNSwyNDM0MywyNDQ0NywyNTI4MiwyMzg0OSwyNjM3OSwyNjg0MiwzMDg0NCwzMjMyMyw0MDMwMCwxOTk4OSwyMDYz''@;'; put 'put ''MywyMTI2OSwyMTI5MCwyMTMyOSwyMjkxNSwyMzEzOCwyNDE5OSwyNDc1NCwyNDk3MCwyNTE2MSwyNTIwOSwyNmUzLDI2NTAzLDI3MDQ3LDI3NjA0LDI3NjA2LDI3NjA3LDI3NjA4LDI3ODMyLDYzODQ4LDI5NzQ5LDMwMjAyLDMwNzM4LDMwODY1LDMxMTg5LDMxMTkyLDMxODc1LDMyMjAzLDMy''@;'; put 'put ''NzM3LDMyOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMzMDg2''@;'; put 'put ''LDMzMjE4LDMzNzc4LDM0NTg2LDM1MDQ4LDM1NTEzLDM1NjkyLDM2MDI3LDM3MTQ1LDM4NzUwLDM5MTMxLDQwNzYzLDIyMTg4LDIzMzM4LDI0NDI4LDI1OTk2LDI3MzE1LDI3NTY3LDI3OTk2LDI4NjU3LDI4NjkzLDI5Mjc3LDI5NjEzLDM2MDA3LDM2MDUxLDM4OTcxLDI0OTc3LDI3NzAzLDMy''@;'; put 'put ''ODU2LDM5NDI1LDIwMDQ1LDIwMTA3LDIwMTIzLDIwMTgxLDIwMjgyLDIwMjg0LDIwMzUxLDIwNDQ3LDIwNzM1LDIxNDkwLDIxNDk2LDIxNzY2LDIxOTg3LDIyMjM1LDIyNzYzLDIyODgyLDIzMDU3LDIzNTMxLDIzNTQ2LDIzNTU2LDI0MDUxLDI0MTA3LDI0NDczLDI0NjA1LDI1NDQ4LDI2MDEy''@;'; put 'put ''LDI2MDMxLDI2NjE0LDI2NjE5LDI2Nzk3LDI3NTE1LDI3ODAxLDI3ODYzLDI4MTk1LDI4NjgxLDI5NTA5LDMwNzIyLDMxMDM4LDMxMDQwLDMxMDcyLDMxMTY5LDMxNzIxLDMyMDIzLDMyMTE0LDMyOTAyLDMzMjkzLDMzNjc4LDM0MDAxLDM0NTAzLDM1MDM5LDM1NDA4LDM1NDIyLDM1NjEzLDM2''@;'; put 'put ''MDYwLDM2MTk4LDM2NzgxLDM3MDM0LDM5MTY0LDM5MzkxLDQwNjA1LDIxMDY2LDYzODQ5LDI2Mzg4LDYzODUwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwNjMyLDIxMDM0LDIzNjY1LDI1OTU1LDI3NzMzLDI5NjQyLDI5OTg3LDMwMTA5LDMxNjM5LDMzOTQ4LDM3MjQwLDM4NzA0LDIwMDg3LDI1NzQ2LDI3NTc4LDI5MDIyLDM0MjE3LDE5OTc3LDYzODUxLDI2''@;'; put 'put ''NDQxLDI2ODYyLDI4MTgzLDMzNDM5LDM0MDcyLDM0OTIzLDI1NTkxLDI4NTQ1LDM3Mzk0LDM5MDg3LDE5OTc4LDIwNjYzLDIwNjg3LDIwNzY3LDIxODMwLDIxOTMwLDIyMDM5LDIzMzYwLDIzNTc3LDIzNzc2LDI0MTIwLDI0MjAyLDI0MjI0LDI0MjU4LDI0ODE5LDI2NzA1LDI3MjMzLDI4MjQ4''@;'; put 'put ''LDI5MjQ1LDI5MjQ4LDI5Mzc2LDMwNDU2LDMxMDc3LDMxNjY1LDMyNzI0LDM1MDU5LDM1MzE2LDM1NDQzLDM1OTM3LDM2MDYyLDM4Njg0LDIyNjIyLDI5ODg1LDM2MDkzLDIxOTU5LDYzODUyLDMxMzI5LDMyMDM0LDMzMzk0LDI5Mjk4LDI5OTgzLDI5OTg5LDYzODUzLDMxNTEzLDIyNjYxLDIy''@;'; put 'put ''Nzc5LDIzOTk2LDI0MjA3LDI0MjQ2LDI0NDY0LDI0NjYxLDI1MjM0LDI1NDcxLDI1OTMzLDI2MjU3LDI2MzI5LDI2MzYwLDI2NjQ2LDI2ODY2LDI5MzEyLDI5NzkwLDMxNTk4LDMyMTEwLDMyMjE0LDMyNjI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyOTk3LDMzMjk4LDM0MjIzLDM1MTk5LDM1NDc1LDM2ODkzLDM3NjA0LDQwNjUzLDQwNzM2LDIyODA1LDIy''@;'; put 'put ''ODkzLDI0MTA5LDI0Nzk2LDI2MTMyLDI2MjI3LDI2NTEyLDI3NzI4LDI4MTAxLDI4NTExLDMwNzA3LDMwODg5LDMzOTkwLDM3MzIzLDM3Njc1LDIwMTg1LDIwNjgyLDIwODA4LDIxODkyLDIzMzA3LDIzNDU5LDI1MTU5LDI1OTgyLDI2MDU5LDI4MjEwLDI5MDUzLDI5Njk3LDI5NzY0LDI5ODMx''@;'; put 'put ''LDI5ODg3LDMwMzE2LDMxMTQ2LDMyMjE4LDMyMzQxLDMyNjgwLDMzMTQ2LDMzMjAzLDMzMzM3LDM0MzMwLDM0Nzk2LDM1NDQ1LDM2MzIzLDM2OTg0LDM3NTIxLDM3OTI1LDM5MjQ1LDM5ODU0LDIxMzUyLDIzNjMzLDI2OTY0LDI3ODQ0LDI3OTQ1LDI4MjAzLDMzMjkyLDM0MjAzLDM1MTMxLDM1''@;'; put 'put ''MzczLDM1NDk4LDM4NjM0LDQwODA3LDIxMDg5LDI2Mjk3LDI3NTcwLDMyNDA2LDM0ODE0LDM2MTA5LDM4Mjc1LDM4NDkzLDI1ODg1LDI4MDQxLDI5MTY2LDYzODU0LDIyNDc4LDIyOTk1LDIzNDY4LDI0NjE1LDI0ODI2LDI1MTA0LDI2MTQzLDI2MjA3LDI5NDgxLDI5Njg5LDMwNDI3LDMwNDY1''@;'; put 'put ''LDMxNTk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyODU0LDMy''@;'; put 'put ''ODgyLDMzMTI1LDM1NDg4LDM3MjY2LDE5OTkwLDIxMjE4LDI3NTA2LDI3OTI3LDMxMjM3LDMxNTQ1LDMyMDQ4LDYzODU1LDM2MDE2LDIxNDg0LDIyMDYzLDIyNjA5LDIzNDc3LDIzNTY3LDIzNTY5LDI0MDM0LDI1MTUyLDI1NDc1LDI1NjIwLDI2MTU3LDI2ODAzLDI3ODM2LDI4MDQwLDI4MzM1''@;'; put 'put ''LDI4NzAzLDI4ODM2LDI5MTM4LDI5OTkwLDMwMDk1LDMwMDk0LDMwMjMzLDMxNTA1LDMxNzEyLDMxNzg3LDMyMDMyLDMyMDU3LDM0MDkyLDM0MTU3LDM0MzExLDM1MzgwLDM2ODc3LDM2OTYxLDM3MDQ1LDM3NTU5LDM4OTAyLDM5NDc5LDIwNDM5LDIzNjYwLDI2NDYzLDI4MDQ5LDMxOTAzLDMy''@;'; put 'put ''Mzk2LDM1NjA2LDM2MTE4LDM2ODk1LDIzNDAzLDI0MDYxLDI1NjEzLDMzOTg0LDM2OTU2LDM5MTM3LDI5NTc1LDIzNDM1LDI0NzMwLDI2NDk0LDI4MTI2LDM1MzU5LDM1NDk0LDM2ODY1LDM4OTI0LDIxMDQ3LDYzODU2LDI4NzUzLDMwODYyLDM3NzgyLDM0OTI4LDM3MzM1LDIwNDYyLDIxNDYz''@;'; put 'put ''LDIyMDEzLDIyMjM0LDIyNDAyLDIyNzgxLDIzMjM0LDIzNDMyLDIzNzIzLDIzNzQ0LDI0MTAxLDI0ODMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI1MTAxLDI1MTYzLDI1NDgwLDI1NjI4LDI1OTEwLDI1OTc2LDI3MTkzLDI3NTMwLDI3NzAwLDI3OTI5LDI4NDY1LDI5MTU5LDI5NDE3LDI5NTYwLDI5NzAzLDI5ODc0LDMwMjQ2LDMwNTYxLDMxMTY4LDMxMzE5''@;'; put 'put ''LDMxNDY2LDMxOTI5LDMyMTQzLDMyMTcyLDMyMzUzLDMyNjcwLDMzMDY1LDMzNTg1LDMzOTM2LDM0MDEwLDM0MjgyLDM0OTY2LDM1NTA0LDM1NzI4LDM2NjY0LDM2OTMwLDM2OTk1LDM3MjI4LDM3NTI2LDM3NTYxLDM4NTM5LDM4NTY3LDM4NTY4LDM4NjE0LDM4NjU2LDM4OTIwLDM5MzE4LDM5''@;'; put 'put ''NjM1LDM5NzA2LDIxNDYwLDIyNjU0LDIyODA5LDIzNDA4LDIzNDg3LDI4MTEzLDI4NTA2LDI5MDg3LDI5NzI5LDI5ODgxLDMyOTAxLDMzNzg5LDI0MDMzLDI0NDU1LDI0NDkwLDI0NjQyLDI2MDkyLDI2NjQyLDI2OTkxLDI3MjE5LDI3NTI5LDI3OTU3LDI4MTQ3LDI5NjY3LDMwNDYyLDMwNjM2''@;'; put 'put ''LDMxNTY1LDMyMDIwLDMzMDU5LDMzMzA4LDMzNjAwLDM0MDM2LDM0MTQ3LDM1NDI2LDM1NTI0LDM3MjU1LDM3NjYyLDM4OTE4LDM5MzQ4LDI1MTAwLDM0ODk5LDM2ODQ4LDM3NDc3LDIzODE1LDIzODQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzOTEzLDI5NzkxLDMzMTgxLDM0NjY0LDI4NjI5LDI1MzQyLDMyNzIyLDM1MTI2LDM1MTg2LDE5OTk4LDIwMDU2''@;'; put 'put ''LDIwNzExLDIxMjEzLDIxMzE5LDI1MjE1LDI2MTE5LDMyMzYxLDM0ODIxLDM4NDk0LDIwMzY1LDIxMjczLDIyMDcwLDIyOTg3LDIzMjA0LDIzNjA4LDIzNjMwLDIzNjI5LDI0MDY2LDI0MzM3LDI0NjQzLDI2MDQ1LDI2MTU5LDI2MTc4LDI2NTU4LDI2NjEyLDI5NDY4LDMwNjkwLDMxMDM0LDMy''@;'; put 'put ''NzA5LDMzOTQwLDMzOTk3LDM1MjIyLDM1NDMwLDM1NDMzLDM1NTUzLDM1OTI1LDM1OTYyLDIyNTE2LDIzNTA4LDI0MzM1LDI0Njg3LDI1MzI1LDI2ODkzLDI3NTQyLDI4MjUyLDI5MDYwLDMxNjk4LDM0NjQ1LDM1NjcyLDM2NjA2LDM5MTM1LDM5MTY2LDIwMjgwLDIwMzUzLDIwNDQ5LDIxNjI3''@;'; put 'put ''LDIzMDcyLDIzNDgwLDI0ODkyLDI2MDMyLDI2MjE2LDI5MTgwLDMwMDAzLDMxMDcwLDMyMDUxLDMzMTAyLDMzMjUxLDMzNjg4LDM0MjE4LDM0MjU0LDM0NTYzLDM1MzM4LDM2NTIzLDM2NzYzLDYzODU3LDM2ODA1LDIyODMzLDIzNDYwLDIzNTI2LDI0NzEzLDIzNTI5LDIzNTYzLDI0NTE1LDI3''@;'; put 'put ''Nzc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODU4LDI4MTQ1''@;'; put 'put ''LDI4NjgzLDI5OTc4LDMzNDU1LDM1NTc0LDIwMTYwLDIxMzEzLDYzODU5LDM4NjE3LDI3NjYzLDIwMTI2LDIwNDIwLDIwODE4LDIxODU0LDIzMDc3LDIzNzg0LDI1MTA1LDI5MjczLDMzNDY5LDMzNzA2LDM0NTU4LDM0OTA1LDM1MzU3LDM4NDYzLDM4NTk3LDM5MTg3LDQwMjAxLDQwMjg1LDIy''@;'; put 'put ''NTM4LDIzNzMxLDIzOTk3LDI0MTMyLDI0ODAxLDI0ODUzLDI1NTY5LDI3MTM4LDI4MTk3LDM3MTIyLDM3NzE2LDM4OTkwLDM5OTUyLDQwODIzLDIzNDMzLDIzNzM2LDI1MzUzLDI2MTkxLDI2Njk2LDMwNTI0LDM4NTkzLDM4Nzk3LDM4OTk2LDM5ODM5LDI2MDE3LDM1NTg1LDM2NTU1LDM4MzMy''@;'; put 'put ''LDIxODEzLDIzNzIxLDI0MDIyLDI0MjQ1LDI2MjYzLDMwMjg0LDMzNzgwLDM4MzQzLDIyNzM5LDI1Mjc2LDI5MzkwLDQwMjMyLDIwMjA4LDIyODMwLDI0NTkxLDI2MTcxLDI3NTIzLDMxMjA3LDQwMjMwLDIxMzk1LDIxNjk2LDIyNDY3LDIzODMwLDI0ODU5LDI2MzI2LDI4MDc5LDMwODYxLDMz''@;'; put 'put ''NDA2LDM4NTUyLDM4NzI0LDIxMzgwLDI1MjEyLDI1NDk0LDI4MDgyLDMyMjY2LDMzMDk5LDM4OTg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3Mzg3LDMyNTg4LDQwMzY3LDQwNDc0LDIwMDYzLDIwNTM5LDIwOTE4LDIyODEyLDI0ODI1LDI1NTkwLDI2OTI4LDI5MjQyLDMyODIyLDYzODYwLDM3MzI2LDI0MzY5LDYzODYxLDYzODYyLDMyMDA0LDMzNTA5LDMz''@;'; put 'put ''OTAzLDMzOTc5LDM0Mjc3LDM2NDkzLDYzODYzLDIwMzM1LDYzODY0LDYzODY1LDIyNzU2LDIzMzYzLDI0NjY1LDI1NTYyLDI1ODgwLDI1OTY1LDI2MjY0LDYzODY2LDI2OTU0LDI3MTcxLDI3OTE1LDI4NjczLDI5MDM2LDMwMTYyLDMwMjIxLDMxMTU1LDMxMzQ0LDYzODY3LDMyNjUwLDYzODY4''@;'; put 'put ''LDM1MTQwLDYzODY5LDM1NzMxLDM3MzEyLDM4NTI1LDYzODcwLDM5MTc4LDIyMjc2LDI0NDgxLDI2MDQ0LDI4NDE3LDMwMjA4LDMxMTQyLDM1NDg2LDM5MzQxLDM5NzcwLDQwODEyLDIwNzQwLDI1MDE0LDI1MjMzLDI3Mjc3LDMzMjIyLDIwNTQ3LDIyNTc2LDI0NDIyLDI4OTM3LDM1MzI4LDM1''@;'; put 'put ''NTc4LDIzNDIwLDM0MzI2LDIwNDc0LDIwNzk2LDIyMTk2LDIyODUyLDI1NTEzLDI4MTUzLDIzOTc4LDI2OTg5LDIwODcwLDIwMTA0LDIwMzEzLDYzODcxLDYzODcyLDYzODczLDIyOTE0LDYzODc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODc1LDI3NDg3LDI3NzQxLDYzODc2LDI5ODc3LDMwOTk4LDYzODc3LDMzMjg3LDMzMzQ5LDMzNTkzLDM2NjcxLDM2''@;'; put 'put ''NzAxLDYzODc4LDM5MTkyLDYzODc5LDYzODgwLDYzODgxLDIwMTM0LDYzODgyLDIyNDk1LDI0NDQxLDI2MTMxLDYzODgzLDYzODg0LDMwMTIzLDMyMzc3LDM1Njk1LDYzODg1LDM2ODcwLDM5NTE1LDIyMTgxLDIyNTY3LDIzMDMyLDIzMDcxLDIzNDc2LDYzODg2LDI0MzEwLDYzODg3LDYzODg4''@;'; put 'put ''LDI1NDI0LDI1NDAzLDYzODg5LDI2OTQxLDI3NzgzLDI3ODM5LDI4MDQ2LDI4MDUxLDI4MTQ5LDI4NDM2LDYzODkwLDI4ODk1LDI4OTgyLDI5MDE3LDYzODkxLDI5MTIzLDI5MTQxLDYzODkyLDMwNzk5LDMwODMxLDYzODkzLDMxNjA1LDMyMjI3LDYzODk0LDMyMzAzLDYzODk1LDM0ODkzLDM2''@;'; put 'put ''NTc1LDYzODk2LDYzODk3LDYzODk4LDM3NDY3LDYzODk5LDQwMTgyLDYzOTAwLDYzOTAxLDYzOTAyLDI0NzA5LDI4MDM3LDYzOTAzLDI5MTA1LDYzOTA0LDYzOTA1LDM4MzIxLDIxNDIxLDYzOTA2LDYzOTA3LDYzOTA4LDI2NTc5LDYzOTA5LDI4ODE0LDI4OTc2LDI5NzQ0LDMzMzk4LDMzNDkw''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTEwLDM4MzMxLDM5''@;'; put 'put ''NjUzLDQwNTczLDI2MzA4LDYzOTExLDI5MTIxLDMzODY1LDYzOTEyLDYzOTEzLDIyNjAzLDYzOTE0LDYzOTE1LDIzOTkyLDI0NDMzLDYzOTE2LDI2MTQ0LDI2MjU0LDI3MDAxLDI3MDU0LDI3NzA0LDI3ODkxLDI4MjE0LDI4NDgxLDI4NjM0LDI4Njk5LDI4NzE5LDI5MDA4LDI5MTUxLDI5NTUy''@;'; put 'put ''LDYzOTE3LDI5Nzg3LDYzOTE4LDI5OTA4LDMwNDA4LDMxMzEwLDMyNDAzLDYzOTE5LDYzOTIwLDMzNTIxLDM1NDI0LDM2ODE0LDYzOTIxLDM3NzA0LDYzOTIyLDM4NjgxLDYzOTIzLDYzOTI0LDIwMDM0LDIwNTIyLDYzOTI1LDIxZTMsMjE0NzMsMjYzNTUsMjc3NTcsMjg2MTgsMjk0NTAsMzA1''@;'; put 'put ''OTEsMzEzMzAsMzM0NTQsMzQyNjksMzQzMDYsNjM5MjYsMzUwMjgsMzU0MjcsMzU3MDksMzU5NDcsNjM5MjcsMzc1NTUsNjM5MjgsMzg2NzUsMzg5MjgsMjAxMTYsMjAyMzcsMjA0MjUsMjA2NTgsMjEzMjAsMjE1NjYsMjE1NTUsMjE5NzgsMjI2MjYsMjI3MTQsMjI4ODcsMjMwNjcsMjM1MjQs''@;'; put 'put ''MjQ3MzUsNjM5MjksMjUwMzQsMjU5NDIsMjYxMTEsMjYyMTIsMjY3OTEsMjc3MzgsMjg1OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjg4NzksMjkxMDAsMjk1MjIsMzE2MTMsMzQ1NjgsMzU0OTIsMzk5ODYsNDA3MTEsMjM2MjcsMjc3NzksMjk1MDgsMjk1NzcsMzc0MzQsMjgzMzEsMjk3OTcsMzAyMzksMzEzMzcsMzIyNzcsMzQzMTQsMjA4MDAsMjI3MjUs''@;'; put 'put ''MjU3OTMsMjk5MzQsMjk5NzMsMzAzMjAsMzI3MDUsMzcwMTMsMzg2MDUsMzkyNTIsMjgxOTgsMjk5MjYsMzE0MDEsMzE0MDIsMzMyNTMsMzQ1MjEsMzQ2ODAsMzUzNTUsMjMxMTMsMjM0MzYsMjM0NTEsMjY3ODUsMjY4ODAsMjgwMDMsMjk2MDksMjk3MTUsMjk3NDAsMzA4NzEsMzIyMzMsMzI3''@;'; put 'put ''NDcsMzMwNDgsMzMxMDksMzM2OTQsMzU5MTYsMzg0NDYsMzg5MjksMjYzNTIsMjQ0NDgsMjYxMDYsMjY1MDUsMjc3NTQsMjk1NzksMjA1MjUsMjMwNDMsMjc0OTgsMzA3MDIsMjI4MDYsMjM5MTYsMjQwMTMsMjk0NzcsMzAwMzEsNjM5MzAsNjM5MzEsMjA3MDksMjA5ODUsMjI1NzUsMjI4Mjks''@;'; put 'put ''MjI5MzQsMjMwMDIsMjM1MjUsNjM5MzIsNjM5MzMsMjM5NzAsMjUzMDMsMjU2MjIsMjU3NDcsMjU4NTQsNjM5MzQsMjYzMzIsNjM5MzUsMjcyMDgsNjM5MzYsMjkxODMsMjk3OTYsNjM5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzEzNjgsMzE0MDcsMzIzMjcsMzIzNTAsMzI3NjgsMzMxMzYsNjM5MzgsMzQ3OTksMzUyMDEsMzU2MTYsMzY5NTMsNjM5Mzks''@;'; put 'put ''MzY5OTIsMzkyNTAsMjQ5NTgsMjc0NDIsMjgwMjAsMzIyODcsMzUxMDksMzY3ODUsMjA0MzMsMjA2NTMsMjA4ODcsMjExOTEsMjI0NzEsMjI2NjUsMjM0ODEsMjQyNDgsMjQ4OTgsMjcwMjksMjgwNDQsMjgyNjMsMjgzNDIsMjkwNzYsMjk3OTQsMjk5OTIsMjk5OTYsMzI4ODMsMzM1OTIsMzM5''@;'; put 'put ''OTMsMzYzNjIsMzc3ODAsMzc4NTQsNjM5NDAsMjAxMTAsMjAzMDUsMjA1OTgsMjA3NzgsMjE0NDgsMjE0NTEsMjE0OTEsMjM0MzEsMjM1MDcsMjM1ODgsMjQ4NTgsMjQ5NjIsMjYxMDAsMjkyNzUsMjk1OTEsMjk3NjAsMzA0MDIsMzEwNTYsMzExMjEsMzExNjEsMzIwMDYsMzI3MDEsMzM0MTks''@;'; put 'put ''MzQyNjEsMzQzOTgsMzY4MDIsMzY5MzUsMzcxMDksMzczNTQsMzg1MzMsMzg2MzIsMzg2MzMsMjEyMDYsMjQ0MjMsMjYwOTMsMjYxNjEsMjY2NzEsMjkwMjAsMzEyODYsMzcwNTcsMzg5MjIsMjAxMTMsNjM5NDEsMjcyMTgsMjc1NTAsMjg1NjAsMjkwNjUsMzI3OTIsMzM0NjQsMzQxMzEsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5MzksMzg1NDksMzg2NDIs''@;'; put 'put ''Mzg5MDcsMzQwNzQsMzk3MjksMjAxMTIsMjkwNjYsMzg1OTYsMjA4MDMsMjE0MDcsMjE3MjksMjIyOTEsMjIyOTAsMjI0MzUsMjMxOTUsMjMyMzYsMjM0OTEsMjQ2MTYsMjQ4OTUsMjU1ODgsMjc3ODEsMjc5NjEsMjgyNzQsMjgzMDQsMjkyMzIsMjk1MDMsMjk3ODMsMzM0ODksMzQ5NDUsMzY2''@;'; put 'put ''NzcsMzY5NjAsNjM5NDIsMzg0OTgsMzllMyw0MDIxOSwyNjM3NiwzNjIzNCwzNzQ3MCwyMDMwMSwyMDU1MywyMDcwMiwyMTM2MSwyMjI4NSwyMjk5NiwyMzA0MSwyMzU2MSwyNDk0NCwyNjI1NiwyODIwNSwyOTIzNCwyOTc3MSwzMjIzOSwzMjk2MywzMzgwNiwzMzg5NCwzNDExMSwzNDY1NSwz''@;'; put 'put ''NDkwNywzNTA5NiwzNTU4NiwzNjk0OSwzODg1OSwzOTc1OSwyMDA4MywyMDM2OSwyMDc1NCwyMDg0Miw2Mzk0MywyMTgwNywyMTkyOSwyMzQxOCwyMzQ2MSwyNDE4OCwyNDE4OSwyNDI1NCwyNDczNiwyNDc5OSwyNDg0MCwyNDg0MSwyNTU0MCwyNTkxMiwyNjM3Nyw2Mzk0NCwyNjU4MCwyNjU4''@;'; put 'put ''Niw2Mzk0NSwyNjk3NywyNjk3OCwyNzgzMywyNzk0Myw2Mzk0NiwyODIxNiw2Mzk0NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyODY0MSwyOTQ5NCwyOTQ5NSw2Mzk0OCwyOTc4OCwzMDAwMSw2Mzk0OSwzMDI5MCw2Mzk1MCw2Mzk1MSwzMjE3MywzMzI3OCwzMzg0OCwzNTAyOSwzNTQ4MCwzNTU0NywzNTU2NSwzNjQwMCwzNjQxOCwzNjkzOCwzNjkyNiwzNjk4''@;'; put 'put ''NiwzNzE5MywzNzMyMSwzNzc0Miw2Mzk1Miw2Mzk1MywyMjUzNyw2Mzk1NCwyNzYwMywzMjkwNSwzMjk0Niw2Mzk1NSw2Mzk1NiwyMDgwMSwyMjg5MSwyMzYwOSw2Mzk1Nyw2Mzk1OCwyODUxNiwyOTYwNywzMjk5NiwzNjEwMyw2Mzk1OSwzNzM5OSwzODI4Nyw2Mzk2MCw2Mzk2MSw2Mzk2Miw2''@;'; put 'put ''Mzk2MywzMjg5NSwyNTEwMiwyODcwMCwzMjEwNCwzNDcwMSw2Mzk2NCwyMjQzMiwyNDY4MSwyNDkwMywyNzU3NSwzNTUxOCwzNzUwNCwzODU3NywyMDA1NywyMTUzNSwyODEzOSwzNDA5MywzODUxMiwzODg5OSwzOTE1MCwyNTU1OCwyNzg3NSwzNzAwOSwyMDk1NywyNTAzMywzMzIxMCw0MDQ0''@;'; put 'put ''MSwyMDM4MSwyMDUwNiwyMDczNiwyMzQ1MiwyNDg0NywyNTA4NywyNTgzNiwyNjg4NSwyNzU4OSwzMDA5NywzMDY5MSwzMjY4MSwzMzM4MCwzNDE5MSwzNDgxMSwzNDkxNSwzNTUxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNTY5NiwzNzI5MSwyMDEwOCwyMDE5NywyMDIzNCw2Mzk2NSw2Mzk2NiwyMjgzOSwyMzAxNiw2Mzk2NywyNDA1MCwyNDM0NywyNDQx''@;'; put 'put ''MSwyNDYwOSw2Mzk2OCw2Mzk2OSw2Mzk3MCw2Mzk3MSwyOTI0NiwyOTY2OSw2Mzk3MiwzMDA2NCwzMDE1Nyw2Mzk3MywzMTIyNyw2Mzk3NCwzMjc4MCwzMjgxOSwzMjkwMCwzMzUwNSwzMzYxNyw2Mzk3NSw2Mzk3NiwzNjAyOSwzNjAxOSwzNjk5OSw2Mzk3Nyw2Mzk3OCwzOTE1NiwzOTE4MCw2''@;'; put 'put ''Mzk3OSw2Mzk4MCwyODcyNywzMDQxMCwzMjcxNCwzMjcxNiwzMjc2NCwzNTYxMCwyMDE1NCwyMDE2MSwyMDk5NSwyMTM2MCw2Mzk4MSwyMTY5MywyMjI0MCwyMzAzNSwyMzQ5MywyNDM0MSwyNDUyNSwyODI3MCw2Mzk4Miw2Mzk4MywzMjEwNiwzMzU4OSw2Mzk4NCwzNDQ1MSwzNTQ2OSw2Mzk4''@;'; put 'put ''NSwzODc2NSwzODc3NSw2Mzk4Niw2Mzk4NywxOTk2OCwyMDMxNCwyMDM1MCwyMjc3NywyNjA4NSwyODMyMiwzNjkyMCwzNzgwOCwzOTM1MywyMDIxOSwyMjc2NCwyMjkyMiwyMzAwMSwyNDY0MSw2Mzk4OCw2Mzk4OSwzMTI1Miw2Mzk5MCwzMzYxNSwzNjAzNSwyMDgzNywyMTMxNixudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2Mzk5MSw2Mzk5Miw2Mzk5MywyMDE3''@;'; put 'put ''MywyMTA5NywyMzM4MSwzMzQ3MSwyMDE4MCwyMTA1MCwyMTY3MiwyMjk4NSwyMzAzOSwyMzM3NiwyMzM4MywyMzM4OCwyNDY3NSwyNDkwNCwyODM2MywyODgyNSwyOTAzOCwyOTU3NCwyOTk0MywzMDEzMywzMDkxMywzMjA0MywzMjc3MywzMzI1OCwzMzU3NiwzNDA3MSwzNDI0OSwzNTU2Niwz''@;'; put 'put ''NjAzOSwzODYwNCwyMDMxNiwyMTI0MiwyMjIwNCwyNjAyNywyNjE1MiwyODc5NiwyODg1NiwyOTIzNywzMjE4OSwzMzQyMSwzNzE5NiwzODU5Miw0MDMwNiwyMzQwOSwyNjg1NSwyNzU0NCwyODUzOCwzMDQzMCwyMzY5NywyNjI4MywyODUwNywzMTY2OCwzMTc4NiwzNDg3MCwzODYyMCwxOTk3''@;'; put 'put ''NiwyMDE4MywyMTI4MCwyMjU4MCwyMjcxNSwyMjc2NywyMjg5MiwyMzU1OSwyNDExNSwyNDE5NiwyNDM3MywyNTQ4NCwyNjI5MCwyNjQ1NCwyNzE2NywyNzI5OSwyNzQwNCwyODQ3OSwyOTI1NCw2Mzk5NCwyOTUyMCwyOTgzNSwzMTQ1NiwzMTkxMSwzMzE0NCwzMzI0NywzMzI1NSwzMzY3NCwz''@;'; put 'put ''MzkwMCwzNDA4MywzNDE5NiwzNDI1NSwzNTAzNywzNjExNSwzNzI5MiwzODI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzODU1NiwyMDg3NywyMTcwNSwyMjMxMiwyMzQ3MiwyNTE2NSwyNjQ0OCwyNjY4NSwyNjc3MSwyODIyMSwyODM3MSwyODc5NywzMjI4OSwzNTAwOSwzNjAwMSwzNjYxNyw0MDc3OSw0MDc4MiwyOTIyOSwzMTYzMSwzNTUzMywzNzY1OCwy''@;'; put 'put ''MDI5NSwyMDMwMiwyMDc4NiwyMTYzMiwyMjk5MiwyNDIxMywyNTI2OSwyNjQ4NSwyNjk5MCwyNzE1OSwyNzgyMiwyODE4NiwyOTQwMSwyOTQ4MiwzMDE0MSwzMTY3MiwzMjA1MywzMzUxMSwzMzc4NSwzMzg3OSwzNDI5NSwzNTQxOSwzNjAxNSwzNjQ4NywzNjg4OSwzNzA0OCwzODYwNiw0MDc5''@;'; put 'put ''OSwyMTIxOSwyMTUxNCwyMzI2NSwyMzQ5MCwyNTY4OCwyNTk3MywyODQwNCwyOTM4MCw2Mzk5NSwzMDM0MCwzMTMwOSwzMTUxNSwzMTgyMSwzMjMxOCwzMjczNSwzMzY1OSwzNTYyNywzNjA0MiwzNjE5NiwzNjMyMSwzNjQ0NywzNjg0MiwzNjg1NywzNjk2OSwzNzg0MSwyMDI5MSwyMDM0Niwy''@;'; put 'put ''MDY1OSwyMDg0MCwyMDg1NiwyMTA2OSwyMTA5OCwyMjYyNSwyMjY1MiwyMjg4MCwyMzU2MCwyMzYzNywyNDI4MywyNDczMSwyNTEzNiwyNjY0MywyNzU4MywyNzY1NiwyODU5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyOTAwNiwyOTcyOCwzZTQsMzAwMDgsMzAwMzMsMzAzMjIsMzE1NjQsMzE2MjcsMzE2NjEsMzE2ODYsMzIzOTksMzU0MzgsMzY2NzAsMzY2''@;'; put 'put ''ODEsMzc0MzksMzc1MjMsMzc2NjYsMzc5MzEsMzg2NTEsMzkwMDIsMzkwMTksMzkxOTgsMjA5OTksMjUxMzAsMjUyNDAsMjc5OTMsMzAzMDgsMzE0MzQsMzE2ODAsMzIxMTgsMjEzNDQsMjM3NDIsMjQyMTUsMjg0NzIsMjg4NTcsMzE4OTYsMzg2NzMsMzk4MjIsNDA2NzAsMjU1MDksMjU3MjIs''@;'; put 'put ''MzQ2NzgsMTk5NjksMjAxMTcsMjAxNDEsMjA1NzIsMjA1OTcsMjE1NzYsMjI5NzksMjM0NTAsMjQxMjgsMjQyMzcsMjQzMTEsMjQ0NDksMjQ3NzMsMjU0MDIsMjU5MTksMjU5NzIsMjYwNjAsMjYyMzAsMjYyMzIsMjY2MjIsMjY5ODQsMjcyNzMsMjc0OTEsMjc3MTIsMjgwOTYsMjgxMzYsMjgx''@;'; put 'put ''OTEsMjgyNTQsMjg3MDIsMjg4MzMsMjk1ODIsMjk2OTMsMzAwMTAsMzA1NTUsMzA4NTUsMzExMTgsMzEyNDMsMzEzNTcsMzE5MzQsMzIxNDIsMzMzNTEsMzUzMzAsMzU1NjIsMzU5OTgsMzcxNjUsMzcxOTQsMzczMzYsMzc0NzgsMzc1ODAsMzc2NjQsMzg2NjIsMzg3NDIsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg3NDgsMzg5MTQsNDA3MTgsMjEwNDYsMjEx''@;'; put 'put ''MzcsMjE4ODQsMjI1NjQsMjQwOTMsMjQzNTEsMjQ3MTYsMjU1NTIsMjY3OTksMjg2MzksMzEwODUsMzE1MzIsMzMyMjksMzQyMzQsMzUwNjksMzU1NzYsMzY0MjAsMzcyNjEsMzg1MDAsMzg1NTUsMzg3MTcsMzg5ODgsNDA3NzgsMjA0MzAsMjA4MDYsMjA5MzksMjExNjEsMjIwNjYsMjQzNDAs''@;'; put 'put ''MjQ0MjcsMjU1MTQsMjU4MDUsMjYwODksMjYxNzcsMjYzNjIsMjYzNjEsMjYzOTcsMjY3ODEsMjY4MzksMjcxMzMsMjg0MzcsMjg1MjYsMjkwMzEsMjkxNTcsMjkyMjYsMjk4NjYsMzA1MjIsMzEwNjIsMzEwNjYsMzExOTksMzEyNjQsMzEzODEsMzE4OTUsMzE5NjcsMzIwNjgsMzIzNjgsMzI5''@;'; put 'put ''MDMsMzQyOTksMzQ0NjgsMzU0MTIsMzU1MTksMzYyNDksMzY0ODEsMzY4OTYsMzY5NzMsMzczNDcsMzg0NTksMzg2MTMsNDAxNjUsMjYwNjMsMzE3NTEsMzYyNzUsMzc4MjcsMjMzODQsMjM1NjIsMjEzMzAsMjUzMDUsMjk0NjksMjA1MTksMjM0NDcsMjQ0NzgsMjQ3NTIsMjQ5MzksMjY4Mzcs''@;'; put 'put ''MjgxMjEsMjk3NDIsMzEyNzgsMzIwNjYsMzIxNTYsMzIzMDUsMzMxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYzOTQsMzY0MDUsMzc3NTgsMzc5MTIsMjAzMDQsMjIzNTIsMjQwMzgsMjQyMzEsMjUzODcsMzI2MTgsMjAwMjcsMjAzMDMsMjAzNjcsMjA1NzAsMjMwMDUsMzI5NjQsMjE2MTAsMjE2MDgsMjIwMTQsMjI4NjMsMjM0NDksMjQwMzAsMjQyODIs''@;'; put 'put ''MjYyMDUsMjY0MTcsMjY2MDksMjY2NjYsMjc4ODAsMjc5NTQsMjgyMzQsMjg1NTcsMjg4NTUsMjk2NjQsMzAwODcsMzE4MjAsMzIwMDIsMzIwNDQsMzIxNjIsMzMzMTEsMzQ1MjMsMzUzODcsMzU0NjEsMzYyMDgsMzY0OTAsMzY2NTksMzY5MTMsMzcxOTgsMzcyMDIsMzc5NTYsMzkzNzYsMzE0''@;'; put 'put ''ODEsMzE5MDksMjA0MjYsMjA3MzcsMjA5MzQsMjI0NzIsMjM1MzUsMjM4MDMsMjYyMDEsMjcxOTcsMjc5OTQsMjgzMTAsMjg2NTIsMjg5NDAsMzAwNjMsMzE0NTksMzQ4NTAsMzY4OTcsMzY5ODEsMzg2MDMsMzk0MjMsMzM1MzcsMjAwMTMsMjAyMTAsMzQ4ODYsMzczMjUsMjEzNzMsMjczNTUs''@;'; put 'put ''MjY5ODcsMjc3MTMsMzM5MTQsMjI2ODYsMjQ5NzQsMjYzNjYsMjUzMjcsMjg4OTMsMjk5NjksMzAxNTEsMzIzMzgsMzM5NzYsMzU2NTcsMzYxMDQsMjAwNDMsMjE0ODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2NzUsMjIzMjAsMjIzMzYsMjQ1MzUsMjUzNDUsMjUzNTEsMjU3MTEsMjU5MDMsMjYwODgsMjYyMzQsMjY1MjUsMjY1NDcsMjc0OTAsMjc3NDQs''@;'; put 'put ''Mjc4MDIsMjg0NjAsMzA2OTMsMzA3NTcsMzEwNDksMzEwNjMsMzIwMjUsMzI5MzAsMzMwMjYsMzMyNjcsMzM0MzcsMzM0NjMsMzQ1ODQsMzU0NjgsNjM5OTYsMzYxMDAsMzYyODYsMzY5NzgsMzA0NTIsMzEyNTcsMzEyODcsMzIzNDAsMzI4ODcsMjE3NjcsMjE5NzIsMjI2NDUsMjUzOTEsMjU2''@;'; put 'put ''MzQsMjYxODUsMjYxODcsMjY3MzMsMjcwMzUsMjc1MjQsMjc5NDEsMjgzMzcsMjk2NDUsMjk4MDAsMjk4NTcsMzAwNDMsMzAxMzcsMzA0MzMsMzA0OTQsMzA2MDMsMzEyMDYsMzIyNjUsMzIyODUsMzMyNzUsMzQwOTUsMzQ5NjcsMzUzODYsMzYwNDksMzY1ODcsMzY3ODQsMzY5MTQsMzc4MDUs''@;'; put 'put ''Mzg0OTksMzg1MTUsMzg2NjMsMjAzNTYsMjE0ODksMjMwMTgsMjMyNDEsMjQwODksMjY3MDIsMjk4OTQsMzAxNDIsMzEyMDksMzEzNzgsMzMxODcsMzQ1NDEsMzYwNzQsMzYzMDAsMzY4NDUsMjYwMTUsMjYzODksNjM5OTcsMjI1MTksMjg1MDMsMzIyMjEsMzY2NTUsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc4NzgsMzg1OTgsMjQ1MDEsMjUwNzQsMjg1NDgs''@;'; put 'put ''MTk5ODgsMjAzNzYsMjA1MTEsMjE0NDksMjE5ODMsMjM5MTksMjQwNDYsMjc0MjUsMjc0OTIsMzA5MjMsMzE2NDIsNjM5OTgsMzY0MjUsMzY1NTQsMzY5NzQsMjU0MTcsMjU2NjIsMzA1MjgsMzEzNjQsMzc2NzksMzgwMTUsNDA4MTAsMjU3NzYsMjg1OTEsMjkxNTgsMjk4NjQsMjk5MTQsMzE0''@;'; put 'put ''MjgsMzE3NjIsMzIzODYsMzE5MjIsMzI0MDgsMzU3MzgsMzYxMDYsMzgwMTMsMzkxODQsMzkyNDQsMjEwNDksMjM1MTksMjU4MzAsMjY0MTMsMzIwNDYsMjA3MTcsMjE0NDMsMjI2NDksMjQ5MjAsMjQ5MjEsMjUwODIsMjYwMjgsMzE0NDksMzU3MzAsMzU3MzQsMjA0ODksMjA1MTMsMjExMDks''@;'; put 'put ''MjE4MDksMjMxMDAsMjQyODgsMjQ0MzIsMjQ4ODQsMjU5NTAsMjYxMjQsMjYxNjYsMjYyNzQsMjcwODUsMjgzNTYsMjg0NjYsMjk0NjIsMzAyNDEsMzEzNzksMzMwODEsMzMzNjksMzM3NTAsMzM5ODAsMjA2NjEsMjI1MTIsMjM0ODgsMjM1MjgsMjQ0MjUsMjU1MDUsMzA3NTgsMzIxODEsMzM3''@;'; put 'put ''NTYsMzQwODEsMzczMTksMzczNjUsMjA4NzQsMjY2MTMsMzE1NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYwMTIsMjA5MzIsMjI5NzEsMjQ3NjUsMzQzODksMjA1MDgsNjM5OTksMjEwNzYsMjM2MTAsMjQ5NTcsMjUxMTQsMjUyOTksMjU4NDIsMjYwMjEsMjgzNjQsMzAyNDAsMzMwMzQsMzY0NDgsMzg0OTUsMzg1ODcsMjAxOTEsMjEzMTUsMjE5MTIsMjI4''@;'; put 'put ''MjUsMjQwMjksMjU3OTcsMjc4NDksMjgxNTQsMjk1ODgsMzEzNTksMzMzMDcsMzQyMTQsMzYwNjgsMzYzNjgsMzY5ODMsMzczNTEsMzgzNjksMzg0MzMsMzg4NTQsMjA5ODQsMjE3NDYsMjE4OTQsMjQ1MDUsMjU3NjQsMjg1NTIsMzIxODAsMzY2MzksMzY2ODUsMzc5NDEsMjA2ODEsMjM1NzQs''@;'; put 'put ''Mjc4MzgsMjgxNTUsMjk5NzksMzA2NTEsMzE4MDUsMzE4NDQsMzU0NDksMzU1MjIsMjI1NTgsMjI5NzQsMjQwODYsMjU0NjMsMjkyNjYsMzAwOTAsMzA1NzEsMzU1NDgsMzYwMjgsMzY2MjYsMjQzMDcsMjYyMjgsMjgxNTIsMzI4OTMsMzM3MjksMzU1MzEsMzg3MzcsMzk4OTQsNjRlMywyMTA1''@;'; put 'put ''OSwyNjM2NywyODA1MywyODM5OSwzMjIyNCwzNTU1OCwzNjkxMCwzNjk1OCwzOTYzNiwyMTAyMSwyMTExOSwyMTczNiwyNDk4MCwyNTIyMCwyNTMwNywyNjc4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg5OCwyNjk3MCwyNzE4OSwyODgxOCwyODk2NiwzMDgxMywzMDk3NywzMDk5MCwzMTE4NiwzMTI0NSwzMjkxOCwzMzQwMCwzMzQ5MywzMzYwOSwzNDEy''@;'; put 'put ''MSwzNTk3MCwzNjIyOSwzNzIxOCwzNzI1OSwzNzI5NCwyMDQxOSwyMjIyNSwyOTE2NSwzMDY3OSwzNDU2MCwzNTMyMCwyMzU0NCwyNDUzNCwyNjQ0OSwzNzAzMiwyMTQ3NCwyMjYxOCwyMzU0MSwyNDc0MCwyNDk2MSwyNTY5NiwzMjMxNywzMjg4MCwzNDA4NSwzNzUwNywyNTc3NCwyMDY1Miwy''@;'; put 'put ''MzgyOCwyNjM2OCwyMjY4NCwyNTI3NywyNTUxMiwyNjg5NCwyN2UzLDI3MTY2LDI4MjY3LDMwMzk0LDMxMTc5LDMzNDY3LDMzODMzLDM1NTM1LDM2MjY0LDM2ODYxLDM3MTM4LDM3MTk1LDM3Mjc2LDM3NjQ4LDM3NjU2LDM3Nzg2LDM4NjE5LDM5NDc4LDM5OTQ5LDE5OTg1LDMwMDQ0LDMxMDY5''@;'; put 'put ''LDMxNDgyLDMxNTY5LDMxNjg5LDMyMzAyLDMzOTg4LDM2NDQxLDM2NDY4LDM2NjAwLDM2ODgwLDI2MTQ5LDI2OTQzLDI5NzYzLDIwOTg2LDI2NDE0LDQwNjY4LDIwODA1LDI0NTQ0LDI3Nzk4LDM0ODAyLDM0OTA5LDM0OTM1LDI0NzU2LDMzMjA1LDMzNzk1LG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MTAxLDIxNDYyLDIxNTYxLDIyMDY4LDIzMDk0LDIzNjAx''@;'; put 'put ''LDI4ODEwLDMyNzM2LDMyODU4LDMzMDMwLDMzMjYxLDM2MjU5LDM3MjU3LDM5NTE5LDQwNDM0LDIwNTk2LDIwMTY0LDIxNDA4LDI0ODI3LDI4MjA0LDIzNjUyLDIwMzYwLDIwNTE2LDIxOTg4LDIzNzY5LDI0MTU5LDI0Njc3LDI2NzcyLDI3ODM1LDI4MTAwLDI5MTE4LDMwMTY0LDMwMTk2LDMw''@;'; put 'put ''MzA1LDMxMjU4LDMxMzA1LDMyMTk5LDMyMjUxLDMyNjIyLDMzMjY4LDM0NDczLDM2NjM2LDM4NjAxLDM5MzQ3LDQwNzg2LDIxMDYzLDIxMTg5LDM5MTQ5LDM1MjQyLDE5OTcxLDI2NTc4LDI4NDIyLDIwNDA1LDIzNTIyLDI2NTE3LDI3Nzg0LDI4MDI0LDI5NzIzLDMwNzU5LDM3MzQxLDM3NzU2''@;'; put 'put ''LDM0NzU2LDMxMjA0LDMxMjgxLDI0NTU1LDIwMTgyLDIxNjY4LDIxODIyLDIyNzAyLDIyOTQ5LDI0ODE2LDI1MTcxLDI1MzAyLDI2NDIyLDI2OTY1LDMzMzMzLDM4NDY0LDM5MzQ1LDM5Mzg5LDIwNTI0LDIxMzMxLDIxODI4LDIyMzk2LDY0MDAxLDI1MTc2LDY0MDAyLDI1ODI2LDI2MjE5LDI2''@;'; put 'put ''NTg5LDI4NjA5LDI4NjU1LDI5NzMwLDI5NzUyLDM1MzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLDM3OTQ0LDIxNTg1LDIyMDIyLDIyMzc0LDI0MzkyLDI0OTg2LDI3NDcwLDI4NzYwLDI4ODQ1LDMyMTg3LDM1NDc3LDIyODkwLDMzMDY3LDI1NTA2LDMwNDcyLDMyODI5LDM2MDEwLDIyNjEyLDI1NjQ1LDI3MDY3LDIzNDQ1LDI0MDgxLDI4MjcxLDY0MDAzLDM0''@;'; put 'put ''MTUzLDIwODEyLDIxNDg4LDIyODI2LDI0NjA4LDI0OTA3LDI3NTI2LDI3NzYwLDI3ODg4LDMxNTE4LDMyOTc0LDMzNDkyLDM2Mjk0LDM3MDQwLDM5MDg5LDY0MDA0LDI1Nzk5LDI4NTgwLDI1NzQ1LDI1ODYwLDIwODE0LDIxNTIwLDIyMzAzLDM1MzQyLDI0OTI3LDI2NzQyLDY0MDA1LDMwMTcx''@;'; put 'put ''LDMxNTcwLDMyMTEzLDM2ODkwLDIyNTM0LDI3MDg0LDMzMTUxLDM1MTE0LDM2ODY0LDM4OTY5LDIwNjAwLDIyODcxLDIyOTU2LDI1MjM3LDM2ODc5LDM5NzIyLDI0OTI1LDI5MzA1LDM4MzU4LDIyMzY5LDIzMTEwLDI0MDUyLDI1MjI2LDI1NzczLDI1ODUwLDI2NDg3LDI3ODc0LDI3OTY2LDI5''@;'; put 'put ''MjI4LDI5NzUwLDMwNzcyLDMyNjMxLDMzNDUzLDM2MzE1LDM4OTM1LDIxMDI4LDIyMzM4LDI2NDk1LDI5MjU2LDI5OTIzLDM2MDA5LDM2Nzc0LDM3MzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NDQyLDIwODQzLDIxNDg1LDI1NDIwLDIwMzI5LDIxNzY0LDI0NzI2LDI1OTQzLDI3ODAzLDI4MDMxLDI5MjYwLDI5NDM3LDMxMjU1LDM1MjA3LDM1OTk3LDI0''@;'; put 'put ''NDI5LDI4NTU4LDI4OTIxLDMzMTkyLDI0ODQ2LDIwNDE1LDIwNTU5LDI1MTUzLDI5MjU1LDMxNjg3LDMyMjMyLDMyNzQ1LDM2OTQxLDM4ODI5LDM5NDQ5LDM2MDIyLDIyMzc4LDI0MTc5LDI2NTQ0LDMzODA1LDM1NDEzLDIxNTM2LDIzMzE4LDI0MTYzLDI0MjkwLDI0MzMwLDI1OTg3LDMyOTU0''@;'; put 'put ''LDM0MTA5LDM4MjgxLDM4NDkxLDIwMjk2LDIxMjUzLDIxMjYxLDIxMjYzLDIxNjM4LDIxNzU0LDIyMjc1LDI0MDY3LDI0NTk4LDI1MjQzLDI1MjY1LDI1NDI5LDY0MDA2LDI3ODczLDI4MDA2LDMwMTI5LDMwNzcwLDMyOTkwLDMzMDcxLDMzNTAyLDMzODg5LDMzOTcwLDM0OTU3LDM1MDkwLDM2''@;'; put 'put ''ODc1LDM3NjEwLDM5MTY1LDM5ODI1LDI0MTMzLDI2MjkyLDI2MzMzLDI4Njg5LDI5MTkwLDY0MDA3LDIwNDY5LDIxMTE3LDI0NDI2LDI0OTE1LDI2NDUxLDI3MTYxLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1OTYxLDM5MTExLDM5MTA4LDM5NDkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjk3LDMxMjYzLDI2OTYzLDM1NTc1LDM1OTE0LDM5MDgwLDM5''@;'; put 'put ''MzQyLDI0NDQ0LDI1MjU5LDMwMTMwLDMwMzgyLDM0OTg3LDM2OTkxLDM4NDY2LDIxMzA1LDI0MzgwLDI0NTE3LDI3ODUyLDI5NjQ0LDMwMDUwLDMwMDkxLDMxNTU4LDMzNTM0LDM5MzI1LDIwMDQ3LDM2OTI0LDE5OTc5LDIwMzA5LDIxNDE0LDIyNzk5LDI0MjY0LDI2MTYwLDI3ODI3LDI5Nzgx''@;'; put 'put ''LDMzNjU1LDM0NjYyLDM2MDMyLDM2OTQ0LDM4Njg2LDM5OTU3LDIyNzM3LDIzNDE2LDM0Mzg0LDM1NjA0LDQwMzcyLDIzNTA2LDI0NjgwLDI0NzE3LDI2MDk3LDI3NzM1LDI4NDUwLDI4NTc5LDI4Njk4LDMyNTk3LDMyNzUyLDM4Mjg5LDM4MjkwLDM4NDgwLDM4ODY3LDIxMTA2LDM2Njc2LDIw''@;'; put 'put ''OTg5LDIxNTQ3LDIxNjg4LDIxODU5LDIxODk4LDI3MzIzLDI4MDg1LDMyMjE2LDMzMzgyLDM3NTMyLDM4NTE5LDQwNTY5LDIxNTEyLDIxNzA0LDMwNDE4LDM0NTMyLDM4MzA4LDM4MzU2LDM4NDkyLDIwMTMwLDIwMjMzLDIzMDIyLDIzMjcwLDI0MDU1LDI0NjU4LDI1MjM5LDI2NDc3LDI2Njg5''@;'; put 'put ''LDI3NzgyLDI4MjA3LDMyNTY4LDMyOTIzLDMzMzIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDY0MDA4LDY0MDA5LDM4OTE3LDIwMTMzLDIwNTY1LDIxNjgzLDIyNDE5LDIyODc0LDIzNDAxLDIzNDc1LDI1MDMyLDI2OTk5LDI4MDIzLDI4NzA3LDM0ODA5LDM1Mjk5LDM1NDQyLDM1NTU5LDM2OTk0LDM5NDA1LDM5NjA4LDIxMTgyLDI2NjgwLDIwNTAyLDI0MTg0''@;'; put 'put ''LDI2NDQ3LDMzNjA3LDM0ODkyLDIwMTM5LDIxNTIxLDIyMTkwLDI5NjcwLDM3MTQxLDM4OTExLDM5MTc3LDM5MjU1LDM5MzIxLDIyMDk5LDIyNjg3LDM0Mzk1LDM1Mzc3LDI1MDEwLDI3MzgyLDI5NTYzLDM2NTYyLDI3NDYzLDM4NTcwLDM5NTExLDIyODY5LDI5MTg0LDM2MjAzLDM4NzYxLDIw''@;'; put 'put ''NDM2LDIzNzk2LDI0MzU4LDI1MDgwLDI2MjAzLDI3ODgzLDI4ODQzLDI5NTcyLDI5NjI1LDI5Njk0LDMwNTA1LDMwNTQxLDMyMDY3LDMyMDk4LDMyMjkxLDMzMzM1LDM0ODk4LDY0MDEwLDM2MDY2LDM3NDQ5LDM5MDIzLDIzMzc3LDMxMzQ4LDM0ODgwLDM4OTEzLDIzMjQ0LDIwNDQ4LDIxMzMy''@;'; put 'put ''LDIyODQ2LDIzODA1LDI1NDA2LDI4MDI1LDI5NDMzLDMzMDI5LDMzMDMxLDMzNjk4LDM3NTgzLDM4OTYwLDIwMTM2LDIwODA0LDIxMDA5LDIyNDExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0NDE4LDI3ODQyLDI4MzY2LDI4Njc3LDI4NzUyLDI4ODQ3LDI5MDc0LDI5NjczLDI5ODAxLDMzNjEwLDM0NzIyLDM0OTEzLDM2ODcyLDM3MDI2LDM3Nzk1LDM5MzM2''@;'; put 'put ''LDIwODQ2LDI0NDA3LDI0ODAwLDI0OTM1LDI2MjkxLDM0MTM3LDM2NDI2LDM3Mjk1LDM4Nzk1LDIwMDQ2LDIwMTE0LDIxNjI4LDIyNzQxLDIyNzc4LDIyOTA5LDIzNzMzLDI0MzU5LDI1MTQyLDI1MTYwLDI2MTIyLDI2MjE1LDI3NjI3LDI4MDA5LDI4MTExLDI4MjQ2LDI4NDA4LDI4NTY0LDI4''@;'; put 'put ''NjQwLDI4NjQ5LDI4NzY1LDI5MzkyLDI5NzMzLDI5Nzg2LDI5OTIwLDMwMzU1LDMxMDY4LDMxOTQ2LDMyMjg2LDMyOTkzLDMzNDQ2LDMzODk5LDMzOTgzLDM0MzgyLDM0Mzk5LDM0Njc2LDM1NzAzLDM1OTQ2LDM3ODA0LDM4OTEyLDM5MDEzLDI0Nzg1LDI1MTEwLDM3MjM5LDIzMTMwLDI2MTI3''@;'; put 'put ''LDI4MTUxLDI4MjIyLDI5NzU5LDM5NzQ2LDI0NTczLDI0Nzk0LDMxNTAzLDIxNzAwLDI0MzQ0LDI3NzQyLDI3ODU5LDI3OTQ2LDI4ODg4LDMyMDA1LDM0NDI1LDM1MzQwLDQwMjUxLDIxMjcwLDIxNjQ0LDIzMzAxLDI3MTk0LDI4Nzc5LDMwMDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTE3LDMxMTY2LDMzNDU3LDMzNzc1LDM1NDQxLDM1NjQ5LDM2MDA4''@;'; put 'put ''LDM4NzcyLDY0MDExLDI1ODQ0LDI1ODk5LDMwOTA2LDMwOTA3LDMxMzM5LDIwMDI0LDIxOTE0LDIyODY0LDIzNDYyLDI0MTg3LDI0NzM5LDI1NTYzLDI3NDg5LDI2MjEzLDI2NzA3LDI4MTg1LDI5MDI5LDI5ODcyLDMyMDA4LDM2OTk2LDM5NTI5LDM5OTczLDI3OTYzLDI4MzY5LDI5NTAyLDM1''@;'; put 'put ''OTA1LDM4MzQ2LDIwOTc2LDI0MTQwLDI0NDg4LDI0NjUzLDI0ODIyLDI0ODgwLDI0OTA4LDI2MTc5LDI2MTgwLDI3MDQ1LDI3ODQxLDI4MjU1LDI4MzYxLDI4NTE0LDI5MDA0LDI5ODUyLDMwMzQzLDMxNjgxLDMxNzgzLDMzNjE4LDM0NjQ3LDM2OTQ1LDM4NTQxLDQwNjQzLDIxMjk1LDIyMjM4''@;'; put 'put ''LDI0MzE1LDI0NDU4LDI0Njc0LDI0NzI0LDI1MDc5LDI2MjE0LDI2MzcxLDI3MjkyLDI4MTQyLDI4NTkwLDI4Nzg0LDI5NTQ2LDMyMzYyLDMzMjE0LDMzNTg4LDM0NTE2LDM1NDk2LDM2MDM2LDIxMTIzLDI5NTU0LDIzNDQ2LDI3MjQzLDM3ODkyLDIxNzQyLDIyMTUwLDIzMzg5LDI1OTI4LDI1''@;'; put 'put ''OTg5LDI2MzEzLDI2NzgzLDI4MDQ1LDI4MTAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLDI5MjQzLDMyOTQ4LDM3MjM3LDM5NTAxLDIwMzk5LDIwNTA1LDIxNDAyLDIxNTE4LDIxNTY0LDIxODk3LDIxOTU3LDI0MTI3LDI0NDYwLDI2NDI5LDI5MDMwLDI5NjYxLDM2ODY5LDIxMjExLDIxMjM1LDIyNjI4LDIyNzM0LDI4OTMyLDI5MDcxLDI5MTc5LDM0MjI0LDM1''@;'; put 'put ''MzQ3LDI2MjQ4LDM0MjE2LDIxOTI3LDI2MjQ0LDI5MDAyLDMzODQxLDIxMzIxLDIxOTEzLDI3NTg1LDI0NDA5LDI0NTA5LDI1NTgyLDI2MjQ5LDI4OTk5LDM1NTY5LDM2NjM3LDQwNjM4LDIwMjQxLDI1NjU4LDI4ODc1LDMwMDU0LDM0NDA3LDI0Njc2LDM1NjYyLDQwNDQwLDIwODA3LDIwOTgy''@;'; put 'put ''LDIxMjU2LDI3OTU4LDMzMDE2LDQwNjU3LDI2MTMzLDI3NDI3LDI4ODI0LDMwMTY1LDIxNTA3LDIzNjczLDMyMDA3LDM1MzUwLDI3NDI0LDI3NDUzLDI3NDYyLDIxNTYwLDI0Njg4LDI3OTY1LDMyNzI1LDMzMjg4LDIwNjk0LDIwOTU4LDIxOTE2LDIyMTIzLDIyMjIxLDIzMDIwLDIzMzA1LDI0''@;'; put 'put ''MDc2LDI0OTg1LDI0OTg0LDI1MTM3LDI2MjA2LDI2MzQyLDI5MDgxLDI5MTEzLDI5MTE0LDI5MzUxLDMxMTQzLDMxMjMyLDMyNjkwLDM1NDQwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGdiMTgwMzA6WzE5OTcwLDE5OTcyLDE5OTczLDE5OTc0LDE5OTgzLDE5OTg2LDE5OTkxLDE5OTk5LDJlNCwyMDAwMSwyMDAwMywyMDAwNiwyMDAwOSwyMDAxNCwyMDAxNSwyMDAxNywyMDAxOSwyMDAyMSwyMDAyMywy''@;'; put 'put ''MDAyOCwyMDAzMiwyMDAzMywyMDAzNCwyMDAzNiwyMDAzOCwyMDA0MiwyMDA0OSwyMDA1MywyMDA1NSwyMDA1OCwyMDA1OSwyMDA2NiwyMDA2NywyMDA2OCwyMDA2OSwyMDA3MSwyMDA3MiwyMDA3NCwyMDA3NSwyMDA3NiwyMDA3NywyMDA3OCwyMDA3OSwyMDA4MiwyMDA4NCwyMDA4NSwyMDA4''@;'; put 'put ''NiwyMDA4NywyMDA4OCwyMDA4OSwyMDA5MCwyMDA5MSwyMDA5MiwyMDA5MywyMDA5NSwyMDA5NiwyMDA5NywyMDA5OCwyMDA5OSwyMDEwMCwyMDEwMSwyMDEwMywyMDEwNiwyMDExMiwyMDExOCwyMDExOSwyMDEyMSwyMDEyNCwyMDEyNSwyMDEyNiwyMDEzMSwyMDEzOCwyMDE0MywyMDE0NCwy''@;'; put 'put ''MDE0NSwyMDE0OCwyMDE1MCwyMDE1MSwyMDE1MiwyMDE1MywyMDE1NiwyMDE1NywyMDE1OCwyMDE2OCwyMDE3MiwyMDE3NSwyMDE3NiwyMDE3OCwyMDE4NiwyMDE4NywyMDE4OCwyMDE5MiwyMDE5NCwyMDE5OCwyMDE5OSwyMDIwMSwyMDIwNSwyMDIwNiwyMDIwNywyMDIwOSwyMDIxMiwyMDIx''@;'; put 'put ''NiwyMDIxNywyMDIxOCwyMDIyMCwyMDIyMiwyMDIyNCwyMDIyNiwyMDIyNywyMDIyOCwyMDIyOSwyMDIzMCwyMDIzMSwyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0MywyMDI0NCwyMDI0NSwyMDI0NiwyMDI1MiwyMDI1MywyMDI1NywyMDI1OSwyMDI2NCwyMDI2NSwyMDI2OCwyMDI2OSwy''@;'; put 'put ''MDI3MCwyMDI3MywyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4NywyMDI4OCwyMDI4OSwyMDI5MCwyMDI5MiwyMDI5MywyMDI5NSwyMDI5NiwyMDI5NywyMDI5OCwyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMyMSwyMDMyMiwyMDMyNiwyMDMyOCwyMDMz''@;'; put 'put ''MCwyMDMzMSwyMDMzMywyMDMzNCwyMDMzNywyMDMzOCwyMDM0MSwyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MiwyMDM1MywyMDM1NCwyMDM1NywyMDM1OCwyMDM1OSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MywyMDM3NCwyMDM3NiwyMDM3Nywy''@;'; put 'put ''MDM3OCwyMDM4MCwyMDM4MiwyMDM4MywyMDM4NSwyMDM4NiwyMDM4OCwyMDM5NSwyMDM5NywyMDQwMCwyMDQwMSwyMDQwMiwyMDQwMywyMDQwNCwyMDQwNiwyMDQwNywyMDQwOCwyMDQwOSwyMDQxMCwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQxOCwyMDQyMiwyMDQy''@;'; put 'put ''MywyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzNCwyMDQzNSwyMDQzNiwyMDQzNywyMDQzOCwyMDQ0MSwyMDQ0MywyMDQ0OCwyMDQ1MCwyMDQ1MiwyMDQ1MywyMDQ1NSwyMDQ1OSwyMDQ2MCwyMDQ2NCwyMDQ2NiwyMDQ2OCwyMDQ2OSwyMDQ3MCwyMDQ3MSwyMDQ3MywyMDQ3NSwy''@;'; put 'put ''MDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4MiwyMDQ4MywyMDQ4NCwyMDQ4NSwyMDQ4NiwyMDQ4NywyMDQ4OCwyMDQ4OSwyMDQ5MCwyMDQ5MSwyMDQ5NCwyMDQ5NiwyMDQ5NywyMDQ5OSwyMDUwMSwyMDUwMiwyMDUwMywyMDUwNywyMDUwOSwyMDUxMCwyMDUxMiwyMDUxNCwyMDUx''@;'; put 'put ''NSwyMDUxNiwyMDUxOSwyMDUyMywyMDUyNywyMDUyOCwyMDUyOSwyMDUzMCwyMDUzMSwyMDUzMiwyMDUzMywyMDUzNCwyMDUzNSwyMDUzNiwyMDUzNywyMDUzOSwyMDU0MSwyMDU0MywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OCwyMDU0OSwyMDU1MCwyMDU1MywyMDU1NCwyMDU1NSwyMDU1Nywy''@;'; put 'put ''MDU2MCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NCwyMDU2NiwyMDU2NywyMDU2OCwyMDU2OSwyMDU3MSwyMDU3MywyMDU3NCwyMDU3NSwyMDU3NiwyMDU3NywyMDU3OCwyMDU3OSwyMDU4MCwyMDU4MiwyMDU4MywyMDU4NCwyMDU4NSwyMDU4NiwyMDU4NywyMDU4OSwyMDU5MCwyMDU5MSwyMDU5''@;'; put 'put ''MiwyMDU5MywyMDU5NCwyMDU5NSwyMDU5NiwyMDU5NywyMDYwMCwyMDYwMSwyMDYwMiwyMDYwNCwyMDYwNSwyMDYwOSwyMDYxMCwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxNSwyMDYxNywyMDYxOCwyMDYxOSwyMDYyMCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNSwyMDYyNiwyMDYyNywyMDYyOCwy''@;'; put 'put ''MDYyOSwyMDYzMCwyMDYzMSwyMDYzMiwyMDYzMywyMDYzNCwyMDYzNSwyMDYzNiwyMDYzNywyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY0NCwyMDY0NiwyMDY1MCwyMDY1MSwyMDY1MywyMDY1NCwyMDY1NSwyMDY1NiwyMDY1NywyMDY1OSwyMDY2MCwyMDY2MSwyMDY2MiwyMDY2''@;'; put 'put ''MywyMDY2NCwyMDY2NSwyMDY2OCwyMDY2OSwyMDY3MCwyMDY3MSwyMDY3MiwyMDY3MywyMDY3NCwyMDY3NSwyMDY3NiwyMDY3NywyMDY3OCwyMDY3OSwyMDY4MCwyMDY4MSwyMDY4MiwyMDY4MywyMDY4NCwyMDY4NSwyMDY4NiwyMDY4OCwyMDY4OSwyMDY5MCwyMDY5MSwyMDY5MiwyMDY5Mywy''@;'; put 'put ''MDY5NSwyMDY5NiwyMDY5NywyMDY5OSwyMDcwMCwyMDcwMSwyMDcwMiwyMDcwMywyMDcwNCwyMDcwNSwyMDcwNiwyMDcwNywyMDcwOCwyMDcwOSwyMDcxMiwyMDcxMywyMDcxNCwyMDcxNSwyMDcxOSwyMDcyMCwyMDcyMSwyMDcyMiwyMDcyNCwyMDcyNiwyMDcyNywyMDcyOCwyMDcyOSwyMDcz''@;'; put 'put ''MCwyMDczMiwyMDczMywyMDczNCwyMDczNSwyMDczNiwyMDczNywyMDczOCwyMDczOSwyMDc0MCwyMDc0MSwyMDc0NCwyMDc0NSwyMDc0NiwyMDc0OCwyMDc0OSwyMDc1MCwyMDc1MSwyMDc1MiwyMDc1MywyMDc1NSwyMDc1NiwyMDc1NywyMDc1OCwyMDc1OSwyMDc2MCwyMDc2MSwyMDc2Miwy''@;'; put 'put ''MDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc2NywyMDc2OCwyMDc3MCwyMDc3MSwyMDc3MiwyMDc3MywyMDc3NCwyMDc3NSwyMDc3NiwyMDc3NywyMDc3OCwyMDc3OSwyMDc4MCwyMDc4MSwyMDc4MiwyMDc4MywyMDc4NCwyMDc4NSwyMDc4NiwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MCwyMDc5''@;'; put 'put ''MSwyMDc5MiwyMDc5MywyMDc5NCwyMDc5NSwyMDc5NiwyMDc5NywyMDc5OCwyMDgwMiwyMDgwNywyMDgxMCwyMDgxMiwyMDgxNCwyMDgxNSwyMDgxNiwyMDgxOCwyMDgxOSwyMDgyMywyMDgyNCwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyMDgzMSwyMDgzMiwyMDgzMywyMDgzNSwyMDgzNiwy''@;'; put 'put ''MDgzOCwyMDgzOSwyMDg0MSwyMDg0MiwyMDg0NywyMDg1MCwyMDg1OCwyMDg2MiwyMDg2MywyMDg2NywyMDg2OCwyMDg3MCwyMDg3MSwyMDg3NCwyMDg3NSwyMDg3OCwyMDg3OSwyMDg4MCwyMDg4MSwyMDg4MywyMDg4NCwyMDg4OCwyMDg5MCwyMDg5MywyMDg5NCwyMDg5NSwyMDg5NywyMDg5''@;'; put 'put ''OSwyMDkwMiwyMDkwMywyMDkwNCwyMDkwNSwyMDkwNiwyMDkwOSwyMDkxMCwyMDkxNiwyMDkyMCwyMDkyMSwyMDkyMiwyMDkyNiwyMDkyNywyMDkyOSwyMDkzMCwyMDkzMSwyMDkzMywyMDkzNiwyMDkzOCwyMDk0MSwyMDk0MiwyMDk0NCwyMDk0NiwyMDk0NywyMDk0OCwyMDk0OSwyMDk1MCwy''@;'; put 'put ''MDk1MSwyMDk1MiwyMDk1MywyMDk1NCwyMDk1NiwyMDk1OCwyMDk1OSwyMDk2MiwyMDk2MywyMDk2NSwyMDk2NiwyMDk2NywyMDk2OCwyMDk2OSwyMDk3MCwyMDk3MiwyMDk3NCwyMDk3NywyMDk3OCwyMDk4MCwyMDk4MywyMDk5MCwyMDk5NiwyMDk5NywyMTAwMSwyMTAwMywyMTAwNCwyMTAw''@;'; put 'put ''NywyMTAwOCwyMTAxMSwyMTAxMiwyMTAxMywyMTAyMCwyMTAyMiwyMTAyMywyMTAyNSwyMTAyNiwyMTAyNywyMTAyOSwyMTAzMCwyMTAzMSwyMTAzNCwyMTAzNiwyMTAzOSwyMTA0MSwyMTA0MiwyMTA0NCwyMTA0NSwyMTA1MiwyMTA1NCwyMTA2MCwyMTA2MSwyMTA2MiwyMTA2MywyMTA2NCwy''@;'; put 'put ''MTA2NSwyMTA2NywyMTA3MCwyMTA3MSwyMTA3NCwyMTA3NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MSwyMTA4MiwyMTA4MywyMTA4NSwyMTA4NywyMTA4OCwyMTA5MCwyMTA5MSwyMTA5MiwyMTA5NCwyMTA5NiwyMTA5OSwyMTEwMCwyMTEwMSwyMTEwMiwyMTEwNCwyMTEwNSwyMTEwNywyMTEw''@;'; put 'put ''OCwyMTEwOSwyMTExMCwyMTExMSwyMTExMiwyMTExMywyMTExNCwyMTExNSwyMTExNiwyMTExOCwyMTEyMCwyMTEyMywyMTEyNCwyMTEyNSwyMTEyNiwyMTEyNywyMTEyOSwyMTEzMCwyMTEzMSwyMTEzMiwyMTEzMywyMTEzNCwyMTEzNSwyMTEzNywyMTEzOCwyMTE0MCwyMTE0MSwyMTE0Miwy''@;'; put 'put ''MTE0MywyMTE0NCwyMTE0NSwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NiwyMTE2NywyMTE2OCwyMTE3MiwyMTE3MywyMTE3NCwyMTE3NSwyMTE3NiwyMTE3NywyMTE3OCwyMTE3OSwyMTE4MCwyMTE4MSwyMTE4NCwyMTE4NSwyMTE4NiwyMTE4OCwyMTE4OSwyMTE5''@;'; put 'put ''MCwyMTE5MiwyMTE5NCwyMTE5NiwyMTE5NywyMTE5OCwyMTE5OSwyMTIwMSwyMTIwMywyMTIwNCwyMTIwNSwyMTIwNywyMTIwOSwyMTIxMCwyMTIxMSwyMTIxMiwyMTIxMywyMTIxNCwyMTIxNiwyMTIxNywyMTIxOCwyMTIxOSwyMTIyMSwyMTIyMiwyMTIyMywyMTIyNCwyMTIyNSwyMTIyNiwy''@;'; put 'put ''MTIyNywyMTIyOCwyMTIyOSwyMTIzMCwyMTIzMSwyMTIzMywyMTIzNCwyMTIzNSwyMTIzNiwyMTIzNywyMTIzOCwyMTIzOSwyMTI0MCwyMTI0MywyMTI0NCwyMTI0NSwyMTI0OSwyMTI1MCwyMTI1MSwyMTI1MiwyMTI1NSwyMTI1NywyMTI1OCwyMTI1OSwyMTI2MCwyMTI2MiwyMTI2NSwyMTI2''@;'; put 'put ''NiwyMTI2NywyMTI2OCwyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4MiwyMTI4NCwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NSwyMTI5NiwyMTI5NywyMTI5OCwyMTI5OSwyMTMwMCwyMTMwMSwyMTMwMiwyMTMwMywyMTMwNCwyMTMwOCwy''@;'; put 'put ''MTMwOSwyMTMxMiwyMTMxNCwyMTMxNiwyMTMxOCwyMTMyMywyMTMyNCwyMTMyNSwyMTMyOCwyMTMzMiwyMTMzNiwyMTMzNywyMTMzOSwyMTM0MSwyMTM0OSwyMTM1MiwyMTM1NCwyMTM1NiwyMTM1NywyMTM2MiwyMTM2NiwyMTM2OSwyMTM3MSwyMTM3MiwyMTM3MywyMTM3NCwyMTM3NiwyMTM3''@;'; put 'put ''NywyMTM3OSwyMTM4MywyMTM4NCwyMTM4NiwyMTM5MCwyMTM5MSwyMTM5MiwyMTM5MywyMTM5NCwyMTM5NSwyMTM5NiwyMTM5OCwyMTM5OSwyMTQwMSwyMTQwMywyMTQwNCwyMTQwNiwyMTQwOCwyMTQwOSwyMTQxMiwyMTQxNSwyMTQxOCwyMTQxOSwyMTQyMCwyMTQyMSwyMTQyMywyMTQyNCwy''@;'; put 'put ''MTQyNSwyMTQyNiwyMTQyNywyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzMywyMTQzNCwyMTQzNiwyMTQzNywyMTQzOCwyMTQ0MCwyMTQ0MywyMTQ0NCwyMTQ0NSwyMTQ0NiwyMTQ0NywyMTQ1NCwyMTQ1NSwyMTQ1NiwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OCwyMTQ2OSwyMTQ3''@;'; put 'put ''MCwyMTQ3MywyMTQ3NCwyMTQ3OSwyMTQ5MiwyMTQ5OCwyMTUwMiwyMTUwMywyMTUwNCwyMTUwNiwyMTUwOSwyMTUxMSwyMTUxNSwyMTUyNCwyMTUyOCwyMTUyOSwyMTUzMCwyMTUzMiwyMTUzOCwyMTU0MCwyMTU0MSwyMTU0NiwyMTU1MiwyMTU1NSwyMTU1OCwyMTU1OSwyMTU2MiwyMTU2NSwy''@;'; put 'put ''MTU2NywyMTU2OSwyMTU3MCwyMTU3MiwyMTU3MywyMTU3NSwyMTU3NywyMTU4MCwyMTU4MSwyMTU4MiwyMTU4MywyMTU4NSwyMTU5NCwyMTU5NywyMTU5OCwyMTU5OSwyMTYwMCwyMTYwMSwyMTYwMywyMTYwNSwyMTYwNywyMTYwOSwyMTYxMCwyMTYxMSwyMTYxMiwyMTYxMywyMTYxNCwyMTYx''@;'; put 'put ''NSwyMTYxNiwyMTYyMCwyMTYyNSwyMTYyNiwyMTYzMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTYzOSwyMTY0MCwyMTY0MSwyMTY0MiwyMTY0NSwyMTY0OSwyMTY1MSwyMTY1NSwyMTY1NiwyMTY2MCwyMTY2MiwyMTY2MywyMTY2NCwyMTY2NSwyMTY2NiwyMTY2OSwyMTY3OCwyMTY4MCwy''@;'; put 'put ''MTY4MiwyMTY4NSwyMTY4NiwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MiwyMTY5NCwyMTY5OSwyMTcwMSwyMTcwNiwyMTcwNywyMTcxOCwyMTcyMCwyMTcyMywyMTcyOCwyMTcyOSwyMTczMCwyMTczMSwyMTczMiwyMTczOSwyMTc0MCwyMTc0MywyMTc0NCwyMTc0NSwyMTc0OCwyMTc0OSwyMTc1''@;'; put 'put ''MCwyMTc1MSwyMTc1MiwyMTc1MywyMTc1NSwyMTc1OCwyMTc2MCwyMTc2MiwyMTc2MywyMTc2NCwyMTc2NSwyMTc2OCwyMTc3MCwyMTc3MSwyMTc3MiwyMTc3MywyMTc3NCwyMTc3OCwyMTc3OSwyMTc4MSwyMTc4MiwyMTc4MywyMTc4NCwyMTc4NSwyMTc4NiwyMTc4OCwyMTc4OSwyMTc5MCwy''@;'; put 'put ''MTc5MSwyMTc5MywyMTc5NywyMTc5OCwyMTgwMCwyMTgwMSwyMTgwMywyMTgwNSwyMTgxMCwyMTgxMiwyMTgxMywyMTgxNCwyMTgxNiwyMTgxNywyMTgxOCwyMTgxOSwyMTgyMSwyMTgyNCwyMTgyNiwyMTgyOSwyMTgzMSwyMTgzMiwyMTgzNSwyMTgzNiwyMTgzNywyMTgzOCwyMTgzOSwyMTg0''@;'; put 'put ''MSwyMTg0MiwyMTg0MywyMTg0NCwyMTg0NywyMTg0OCwyMTg0OSwyMTg1MCwyMTg1MSwyMTg1MywyMTg1NCwyMTg1NSwyMTg1NiwyMTg1OCwyMTg1OSwyMTg2NCwyMTg2NSwyMTg2NywyMTg3MSwyMTg3MiwyMTg3MywyMTg3NCwyMTg3NSwyMTg3NiwyMTg4MSwyMTg4MiwyMTg4NSwyMTg4Nywy''@;'; put 'put ''MTg5MywyMTg5NCwyMTkwMCwyMTkwMSwyMTkwMiwyMTkwNCwyMTkwNiwyMTkwNywyMTkwOSwyMTkxMCwyMTkxMSwyMTkxNCwyMTkxNSwyMTkxOCwyMTkyMCwyMTkyMSwyMTkyMiwyMTkyMywyMTkyNCwyMTkyNSwyMTkyNiwyMTkyOCwyMTkyOSwyMTkzMCwyMTkzMSwyMTkzMiwyMTkzMywyMTkz''@;'; put 'put ''NCwyMTkzNSwyMTkzNiwyMTkzOCwyMTk0MCwyMTk0MiwyMTk0NCwyMTk0NiwyMTk0OCwyMTk1MSwyMTk1MiwyMTk1MywyMTk1NCwyMTk1NSwyMTk1OCwyMTk1OSwyMTk2MCwyMTk2MiwyMTk2MywyMTk2NiwyMTk2NywyMTk2OCwyMTk3MywyMTk3NSwyMTk3NiwyMTk3NywyMTk3OCwyMTk3OSwy''@;'; put 'put ''MTk4MiwyMTk4NCwyMTk4NiwyMTk5MSwyMTk5MywyMTk5NywyMTk5OCwyMmUzLDIyMDAxLDIyMDA0LDIyMDA2LDIyMDA4LDIyMDA5LDIyMDEwLDIyMDExLDIyMDEyLDIyMDE1LDIyMDE4LDIyMDE5LDIyMDIwLDIyMDIxLDIyMDIyLDIyMDIzLDIyMDI2LDIyMDI3LDIyMDI5LDIyMDMyLDIyMDMz''@;'; put 'put ''LDIyMDM0LDIyMDM1LDIyMDM2LDIyMDM3LDIyMDM4LDIyMDM5LDIyMDQxLDIyMDQyLDIyMDQ0LDIyMDQ1LDIyMDQ4LDIyMDQ5LDIyMDUwLDIyMDUzLDIyMDU0LDIyMDU2LDIyMDU3LDIyMDU4LDIyMDU5LDIyMDYyLDIyMDYzLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDcyLDIyMDc0LDIy''@;'; put 'put ''MDc2LDIyMDc3LDIyMDc4LDIyMDgwLDIyMDgxLDIyMDgyLDIyMDgzLDIyMDg0LDIyMDg1LDIyMDg2LDIyMDg3LDIyMDg4LDIyMDg5LDIyMDkwLDIyMDkxLDIyMDk1LDIyMDk2LDIyMDk3LDIyMDk4LDIyMDk5LDIyMTAxLDIyMTAyLDIyMTA2LDIyMTA3LDIyMTA5LDIyMTEwLDIyMTExLDIyMTEy''@;'; put 'put ''LDIyMTEzLDIyMTE1LDIyMTE3LDIyMTE4LDIyMTE5LDIyMTI1LDIyMTI2LDIyMTI3LDIyMTI4LDIyMTMwLDIyMTMxLDIyMTMyLDIyMTMzLDIyMTM1LDIyMTM2LDIyMTM3LDIyMTM4LDIyMTQxLDIyMTQyLDIyMTQzLDIyMTQ0LDIyMTQ1LDIyMTQ2LDIyMTQ3LDIyMTQ4LDIyMTUxLDIyMTUyLDIy''@;'; put 'put ''MTUzLDIyMTU0LDIyMTU1LDIyMTU2LDIyMTU3LDIyMTYwLDIyMTYxLDIyMTYyLDIyMTY0LDIyMTY1LDIyMTY2LDIyMTY3LDIyMTY4LDIyMTY5LDIyMTcwLDIyMTcxLDIyMTcyLDIyMTczLDIyMTc0LDIyMTc1LDIyMTc2LDIyMTc3LDIyMTc4LDIyMTgwLDIyMTgxLDIyMTgyLDIyMTgzLDIyMTg0''@;'; put 'put ''LDIyMTg1LDIyMTg2LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkwLDIyMTkyLDIyMTkzLDIyMTk0LDIyMTk1LDIyMTk2LDIyMTk3LDIyMTk4LDIyMjAwLDIyMjAxLDIyMjAyLDIyMjAzLDIyMjA1LDIyMjA2LDIyMjA3LDIyMjA4LDIyMjA5LDIyMjEwLDIyMjExLDIyMjEyLDIyMjEzLDIyMjE0LDIy''@;'; put 'put ''MjE1LDIyMjE2LDIyMjE3LDIyMjE5LDIyMjIwLDIyMjIxLDIyMjIyLDIyMjIzLDIyMjI0LDIyMjI1LDIyMjI2LDIyMjI3LDIyMjI5LDIyMjMwLDIyMjMyLDIyMjMzLDIyMjM2LDIyMjQzLDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjQ5LDIyMjUwLDIyMjUyLDIyMjU0LDIyMjU1LDIyMjU4''@;'; put 'put ''LDIyMjU5LDIyMjYyLDIyMjYzLDIyMjY0LDIyMjY3LDIyMjY4LDIyMjcyLDIyMjczLDIyMjc0LDIyMjc3LDIyMjc5LDIyMjgzLDIyMjg0LDIyMjg1LDIyMjg2LDIyMjg3LDIyMjg4LDIyMjg5LDIyMjkwLDIyMjkxLDIyMjkyLDIyMjkzLDIyMjk0LDIyMjk1LDIyMjk2LDIyMjk3LDIyMjk4LDIy''@;'; put 'put ''Mjk5LDIyMzAxLDIyMzAyLDIyMzA0LDIyMzA1LDIyMzA2LDIyMzA4LDIyMzA5LDIyMzEwLDIyMzExLDIyMzE1LDIyMzIxLDIyMzIyLDIyMzI0LDIyMzI1LDIyMzI2LDIyMzI3LDIyMzI4LDIyMzMyLDIyMzMzLDIyMzM1LDIyMzM3LDIyMzM5LDIyMzQwLDIyMzQxLDIyMzQyLDIyMzQ0LDIyMzQ1''@;'; put 'put ''LDIyMzQ3LDIyMzU0LDIyMzU1LDIyMzU2LDIyMzU3LDIyMzU4LDIyMzYwLDIyMzYxLDIyMzcwLDIyMzcxLDIyMzczLDIyMzc1LDIyMzgwLDIyMzgyLDIyMzg0LDIyMzg1LDIyMzg2LDIyMzg4LDIyMzg5LDIyMzkyLDIyMzkzLDIyMzk0LDIyMzk3LDIyMzk4LDIyMzk5LDIyNDAwLDIyNDAxLDIy''@;'; put 'put ''NDA3LDIyNDA4LDIyNDA5LDIyNDEwLDIyNDEzLDIyNDE0LDIyNDE1LDIyNDE2LDIyNDE3LDIyNDIwLDIyNDIxLDIyNDIyLDIyNDIzLDIyNDI0LDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDM3LDIyNDQwLDIyNDQyLDIyNDQ0LDIyNDQ3LDIyNDQ4LDIyNDQ5LDIyNDUx''@;'; put 'put ''LDIyNDUzLDIyNDU0LDIyNDU1LDIyNDU3LDIyNDU4LDIyNDU5LDIyNDYwLDIyNDYxLDIyNDYyLDIyNDYzLDIyNDY0LDIyNDY1LDIyNDY4LDIyNDY5LDIyNDcwLDIyNDcxLDIyNDcyLDIyNDczLDIyNDc0LDIyNDc2LDIyNDc3LDIyNDgwLDIyNDgxLDIyNDgzLDIyNDg2LDIyNDg3LDIyNDkxLDIy''@;'; put 'put ''NDkyLDIyNDk0LDIyNDk3LDIyNDk4LDIyNDk5LDIyNTAxLDIyNTAyLDIyNTAzLDIyNTA0LDIyNTA1LDIyNTA2LDIyNTA3LDIyNTA4LDIyNTEwLDIyNTEyLDIyNTEzLDIyNTE0LDIyNTE1LDIyNTE3LDIyNTE4LDIyNTE5LDIyNTIzLDIyNTI0LDIyNTI2LDIyNTI3LDIyNTI5LDIyNTMxLDIyNTMy''@;'; put 'put ''LDIyNTMzLDIyNTM2LDIyNTM3LDIyNTM4LDIyNTQwLDIyNTQyLDIyNTQzLDIyNTQ0LDIyNTQ2LDIyNTQ3LDIyNTQ4LDIyNTUwLDIyNTUxLDIyNTUyLDIyNTU0LDIyNTU1LDIyNTU2LDIyNTU3LDIyNTU5LDIyNTYyLDIyNTYzLDIyNTY1LDIyNTY2LDIyNTY3LDIyNTY4LDIyNTY5LDIyNTcxLDIy''@;'; put 'put ''NTcyLDIyNTczLDIyNTc0LDIyNTc1LDIyNTc3LDIyNTc4LDIyNTc5LDIyNTgwLDIyNTgyLDIyNTgzLDIyNTg0LDIyNTg1LDIyNTg2LDIyNTg3LDIyNTg4LDIyNTg5LDIyNTkwLDIyNTkxLDIyNTkyLDIyNTkzLDIyNTk0LDIyNTk1LDIyNTk3LDIyNTk4LDIyNTk5LDIyNjAwLDIyNjAxLDIyNjAy''@;'; put 'put ''LDIyNjAzLDIyNjA2LDIyNjA3LDIyNjA4LDIyNjEwLDIyNjExLDIyNjEzLDIyNjE0LDIyNjE1LDIyNjE3LDIyNjE4LDIyNjE5LDIyNjIwLDIyNjIxLDIyNjIzLDIyNjI0LDIyNjI1LDIyNjI2LDIyNjI3LDIyNjI4LDIyNjMwLDIyNjMxLDIyNjMyLDIyNjMzLDIyNjM0LDIyNjM3LDIyNjM4LDIy''@;'; put 'put ''NjM5LDIyNjQwLDIyNjQxLDIyNjQyLDIyNjQzLDIyNjQ0LDIyNjQ1LDIyNjQ2LDIyNjQ3LDIyNjQ4LDIyNjQ5LDIyNjUwLDIyNjUxLDIyNjUyLDIyNjUzLDIyNjU1LDIyNjU4LDIyNjYwLDIyNjYyLDIyNjYzLDIyNjY0LDIyNjY2LDIyNjY3LDIyNjY4LDIyNjY5LDIyNjcwLDIyNjcxLDIyNjcy''@;'; put 'put ''LDIyNjczLDIyNjc2LDIyNjc3LDIyNjc4LDIyNjc5LDIyNjgwLDIyNjgzLDIyNjg0LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjkxLDIyNjkyLDIyNjkzLDIyNjk0LDIyNjk1LDIyNjk4LDIyNjk5LDIyNzAwLDIyNzAxLDIyNzAyLDIyNzAzLDIyNzA0LDIyNzA1LDIyNzA2LDIyNzA3LDIy''@;'; put 'put ''NzA4LDIyNzA5LDIyNzEwLDIyNzExLDIyNzEyLDIyNzEzLDIyNzE0LDIyNzE1LDIyNzE3LDIyNzE4LDIyNzE5LDIyNzIwLDIyNzIyLDIyNzIzLDIyNzI0LDIyNzI2LDIyNzI3LDIyNzI4LDIyNzI5LDIyNzMwLDIyNzMxLDIyNzMyLDIyNzMzLDIyNzM0LDIyNzM1LDIyNzM2LDIyNzM4LDIyNzM5''@;'; put 'put ''LDIyNzQwLDIyNzQyLDIyNzQzLDIyNzQ0LDIyNzQ1LDIyNzQ2LDIyNzQ3LDIyNzQ4LDIyNzQ5LDIyNzUwLDIyNzUxLDIyNzUyLDIyNzUzLDIyNzU0LDIyNzU1LDIyNzU3LDIyNzU4LDIyNzU5LDIyNzYwLDIyNzYxLDIyNzYyLDIyNzY1LDIyNzY3LDIyNzY5LDIyNzcwLDIyNzcyLDIyNzczLDIy''@;'; put 'put ''Nzc1LDIyNzc2LDIyNzc4LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzgyLDIyNzgzLDIyNzg0LDIyNzg1LDIyNzg3LDIyNzg5LDIyNzkwLDIyNzkyLDIyNzkzLDIyNzk0LDIyNzk1LDIyNzk2LDIyNzk4LDIyODAwLDIyODAxLDIyODAyLDIyODAzLDIyODA3LDIyODA4LDIyODExLDIyODEzLDIyODE0''@;'; put 'put ''LDIyODE2LDIyODE3LDIyODE4LDIyODE5LDIyODIyLDIyODI0LDIyODI4LDIyODMyLDIyODM0LDIyODM1LDIyODM3LDIyODM4LDIyODQzLDIyODQ1LDIyODQ2LDIyODQ3LDIyODQ4LDIyODUxLDIyODUzLDIyODU0LDIyODU4LDIyODYwLDIyODYxLDIyODY0LDIyODY2LDIyODY3LDIyODczLDIy''@;'; put 'put ''ODc1LDIyODc2LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODg0LDIyODg2LDIyODg3LDIyODg4LDIyODg5LDIyODkwLDIyODkxLDIyODkyLDIyODkzLDIyODk0LDIyODk1LDIyODk2LDIyODk3LDIyODk4LDIyOTAxLDIyOTAzLDIyOTA2LDIyOTA3LDIyOTA4LDIyOTEwLDIyOTEx''@;'; put 'put ''LDIyOTEyLDIyOTE3LDIyOTIxLDIyOTIzLDIyOTI0LDIyOTI2LDIyOTI3LDIyOTI4LDIyOTI5LDIyOTMyLDIyOTMzLDIyOTM2LDIyOTM4LDIyOTM5LDIyOTQwLDIyOTQxLDIyOTQzLDIyOTQ0LDIyOTQ1LDIyOTQ2LDIyOTUwLDIyOTUxLDIyOTU2LDIyOTU3LDIyOTYwLDIyOTYxLDIyOTYzLDIy''@;'; put 'put ''OTY0LDIyOTY1LDIyOTY2LDIyOTY3LDIyOTY4LDIyOTcwLDIyOTcyLDIyOTczLDIyOTc1LDIyOTc2LDIyOTc3LDIyOTc4LDIyOTc5LDIyOTgwLDIyOTgxLDIyOTgzLDIyOTg0LDIyOTg1LDIyOTg4LDIyOTg5LDIyOTkwLDIyOTkxLDIyOTk3LDIyOTk4LDIzMDAxLDIzMDAzLDIzMDA2LDIzMDA3''@;'; put 'put ''LDIzMDA4LDIzMDA5LDIzMDEwLDIzMDEyLDIzMDE0LDIzMDE1LDIzMDE3LDIzMDE4LDIzMDE5LDIzMDIxLDIzMDIyLDIzMDIzLDIzMDI0LDIzMDI1LDIzMDI2LDIzMDI3LDIzMDI4LDIzMDI5LDIzMDMwLDIzMDMxLDIzMDMyLDIzMDM0LDIzMDM2LDIzMDM3LDIzMDM4LDIzMDQwLDIzMDQyLDIz''@;'; put 'put ''MDUwLDIzMDUxLDIzMDUzLDIzMDU0LDIzMDU1LDIzMDU2LDIzMDU4LDIzMDYwLDIzMDYxLDIzMDYyLDIzMDYzLDIzMDY1LDIzMDY2LDIzMDY3LDIzMDY5LDIzMDcwLDIzMDczLDIzMDc0LDIzMDc2LDIzMDc4LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDgzLDIzMDg0LDIzMDg1LDIzMDg2LDIzMDg3''@;'; put 'put ''LDIzMDg4LDIzMDkxLDIzMDkzLDIzMDk1LDIzMDk2LDIzMDk3LDIzMDk4LDIzMDk5LDIzMTAxLDIzMTAyLDIzMTAzLDIzMTA1LDIzMTA2LDIzMTA3LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE1LDIzMTE2LDIzMTE3LDIzMTE4LDIzMTE5LDIzMTIwLDIzMTIxLDIzMTIyLDIzMTIzLDIz''@;'; put 'put ''MTI0LDIzMTI2LDIzMTI3LDIzMTI4LDIzMTI5LDIzMTMxLDIzMTMyLDIzMTMzLDIzMTM0LDIzMTM1LDIzMTM2LDIzMTM3LDIzMTM5LDIzMTQwLDIzMTQxLDIzMTQyLDIzMTQ0LDIzMTQ1LDIzMTQ3LDIzMTQ4LDIzMTQ5LDIzMTUwLDIzMTUxLDIzMTUyLDIzMTUzLDIzMTU0LDIzMTU1LDIzMTYw''@;'; put 'put ''LDIzMTYxLDIzMTYzLDIzMTY0LDIzMTY1LDIzMTY2LDIzMTY4LDIzMTY5LDIzMTcwLDIzMTcxLDIzMTcyLDIzMTczLDIzMTc0LDIzMTc1LDIzMTc2LDIzMTc3LDIzMTc4LDIzMTc5LDIzMTgwLDIzMTgxLDIzMTgyLDIzMTgzLDIzMTg0LDIzMTg1LDIzMTg3LDIzMTg4LDIzMTg5LDIzMTkwLDIz''@;'; put 'put ''MTkxLDIzMTkyLDIzMTkzLDIzMTk2LDIzMTk3LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAxLDIzMjAyLDIzMjAzLDIzMjA0LDIzMjA1LDIzMjA2LDIzMjA3LDIzMjA4LDIzMjA5LDIzMjExLDIzMjEyLDIzMjEzLDIzMjE0LDIzMjE1LDIzMjE2LDIzMjE3LDIzMjIwLDIzMjIyLDIzMjIzLDIzMjI1''@;'; put 'put ''LDIzMjI2LDIzMjI3LDIzMjI4LDIzMjI5LDIzMjMxLDIzMjMyLDIzMjM1LDIzMjM2LDIzMjM3LDIzMjM4LDIzMjM5LDIzMjQwLDIzMjQyLDIzMjQzLDIzMjQ1LDIzMjQ2LDIzMjQ3LDIzMjQ4LDIzMjQ5LDIzMjUxLDIzMjUzLDIzMjU1LDIzMjU3LDIzMjU4LDIzMjU5LDIzMjYxLDIzMjYyLDIz''@;'; put 'put ''MjYzLDIzMjY2LDIzMjY4LDIzMjY5LDIzMjcxLDIzMjcyLDIzMjc0LDIzMjc2LDIzMjc3LDIzMjc4LDIzMjc5LDIzMjgwLDIzMjgyLDIzMjgzLDIzMjg0LDIzMjg1LDIzMjg2LDIzMjg3LDIzMjg4LDIzMjg5LDIzMjkwLDIzMjkxLDIzMjkyLDIzMjkzLDIzMjk0LDIzMjk1LDIzMjk2LDIzMjk3''@;'; put 'put ''LDIzMjk4LDIzMjk5LDIzMzAwLDIzMzAxLDIzMzAyLDIzMzAzLDIzMzA0LDIzMzA2LDIzMzA3LDIzMzA4LDIzMzA5LDIzMzEwLDIzMzExLDIzMzEyLDIzMzEzLDIzMzE0LDIzMzE1LDIzMzE2LDIzMzE3LDIzMzIwLDIzMzIxLDIzMzIyLDIzMzIzLDIzMzI0LDIzMzI1LDIzMzI2LDIzMzI3LDIz''@;'; put 'put ''MzI4LDIzMzI5LDIzMzMwLDIzMzMxLDIzMzMyLDIzMzMzLDIzMzM0LDIzMzM1LDIzMzM2LDIzMzM3LDIzMzM4LDIzMzM5LDIzMzQwLDIzMzQxLDIzMzQyLDIzMzQzLDIzMzQ0LDIzMzQ1LDIzMzQ3LDIzMzQ5LDIzMzUwLDIzMzUyLDIzMzUzLDIzMzU0LDIzMzU1LDIzMzU2LDIzMzU3LDIzMzU4''@;'; put 'put ''LDIzMzU5LDIzMzYxLDIzMzYyLDIzMzYzLDIzMzY0LDIzMzY1LDIzMzY2LDIzMzY3LDIzMzY4LDIzMzY5LDIzMzcwLDIzMzcxLDIzMzcyLDIzMzczLDIzMzc0LDIzMzc1LDIzMzc4LDIzMzgyLDIzMzkwLDIzMzkyLDIzMzkzLDIzMzk5LDIzNDAwLDIzNDAzLDIzNDA1LDIzNDA2LDIzNDA3LDIz''@;'; put 'put ''NDEwLDIzNDEyLDIzNDE0LDIzNDE1LDIzNDE2LDIzNDE3LDIzNDE5LDIzNDIwLDIzNDIyLDIzNDIzLDIzNDI2LDIzNDMwLDIzNDM0LDIzNDM3LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQyLDIzNDQ0LDIzNDQ2LDIzNDU1LDIzNDYzLDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcwLDIzNDcx''@;'; put 'put ''LDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDgzLDIzNDg0LDIzNDg4LDIzNDg5LDIzNDkxLDIzNDk2LDIzNDk3LDIzNDk4LDIzNDk5LDIzNTAxLDIzNTAyLDIzNTAzLDIzNTA1LDIzNTA4LDIzNTA5LDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTE1LDIzNTE2LDIzNTIwLDIz''@;'; put 'put ''NTIyLDIzNTIzLDIzNTI2LDIzNTI3LDIzNTI5LDIzNTMwLDIzNTMxLDIzNTMyLDIzNTMzLDIzNTM1LDIzNTM3LDIzNTM4LDIzNTM5LDIzNTQwLDIzNTQxLDIzNTQyLDIzNTQzLDIzNTQ5LDIzNTUwLDIzNTUyLDIzNTU0LDIzNTU1LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTYzLDIzNTY0LDIzNTY1''@;'; put 'put ''LDIzNTY2LDIzNTY4LDIzNTcwLDIzNTcxLDIzNTc1LDIzNTc3LDIzNTc5LDIzNTgyLDIzNTgzLDIzNTg0LDIzNTg1LDIzNTg3LDIzNTkwLDIzNTkyLDIzNTkzLDIzNTk0LDIzNTk1LDIzNTk3LDIzNTk4LDIzNTk5LDIzNjAwLDIzNjAyLDIzNjAzLDIzNjA1LDIzNjA2LDIzNjA3LDIzNjE5LDIz''@;'; put 'put ''NjIwLDIzNjIyLDIzNjIzLDIzNjI4LDIzNjI5LDIzNjM0LDIzNjM1LDIzNjM2LDIzNjM4LDIzNjM5LDIzNjQwLDIzNjQyLDIzNjQzLDIzNjQ0LDIzNjQ1LDIzNjQ3LDIzNjUwLDIzNjUyLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjU4LDIzNjU5LDIzNjYwLDIzNjYxLDIzNjY0LDIzNjY2LDIzNjY3''@;'; put 'put ''LDIzNjY4LDIzNjY5LDIzNjcwLDIzNjcxLDIzNjcyLDIzNjc1LDIzNjc2LDIzNjc3LDIzNjc4LDIzNjgwLDIzNjgzLDIzNjg0LDIzNjg1LDIzNjg2LDIzNjg3LDIzNjg5LDIzNjkwLDIzNjkxLDIzNjk0LDIzNjk1LDIzNjk4LDIzNjk5LDIzNzAxLDIzNzA5LDIzNzEwLDIzNzExLDIzNzEyLDIz''@;'; put 'put ''NzEzLDIzNzE2LDIzNzE3LDIzNzE4LDIzNzE5LDIzNzIwLDIzNzIyLDIzNzI2LDIzNzI3LDIzNzI4LDIzNzMwLDIzNzMyLDIzNzM0LDIzNzM3LDIzNzM4LDIzNzM5LDIzNzQwLDIzNzQyLDIzNzQ0LDIzNzQ2LDIzNzQ3LDIzNzQ5LDIzNzUwLDIzNzUxLDIzNzUyLDIzNzUzLDIzNzU0LDIzNzU2''@;'; put 'put ''LDIzNzU3LDIzNzU4LDIzNzU5LDIzNzYwLDIzNzYxLDIzNzYzLDIzNzY0LDIzNzY1LDIzNzY2LDIzNzY3LDIzNzY4LDIzNzcwLDIzNzcxLDIzNzcyLDIzNzczLDIzNzc0LDIzNzc1LDIzNzc2LDIzNzc4LDIzNzc5LDIzNzgzLDIzNzg1LDIzNzg3LDIzNzg4LDIzNzkwLDIzNzkxLDIzNzkzLDIz''@;'; put 'put ''Nzk0LDIzNzk1LDIzNzk2LDIzNzk3LDIzNzk4LDIzNzk5LDIzODAwLDIzODAxLDIzODAyLDIzODA0LDIzODA1LDIzODA2LDIzODA3LDIzODA4LDIzODA5LDIzODEyLDIzODEzLDIzODE2LDIzODE3LDIzODE4LDIzODE5LDIzODIwLDIzODIxLDIzODIzLDIzODI0LDIzODI1LDIzODI2LDIzODI3''@;'; put 'put ''LDIzODI5LDIzODMxLDIzODMyLDIzODMzLDIzODM0LDIzODM2LDIzODM3LDIzODM5LDIzODQwLDIzODQxLDIzODQyLDIzODQzLDIzODQ1LDIzODQ4LDIzODUwLDIzODUxLDIzODUyLDIzODU1LDIzODU2LDIzODU3LDIzODU4LDIzODU5LDIzODYxLDIzODYyLDIzODYzLDIzODY0LDIzODY1LDIz''@;'; put 'put ''ODY2LDIzODY3LDIzODY4LDIzODcxLDIzODcyLDIzODczLDIzODc0LDIzODc1LDIzODc2LDIzODc3LDIzODc4LDIzODgwLDIzODgxLDIzODg1LDIzODg2LDIzODg3LDIzODg4LDIzODg5LDIzODkwLDIzODkxLDIzODkyLDIzODkzLDIzODk0LDIzODk1LDIzODk3LDIzODk4LDIzOTAwLDIzOTAy''@;'; put 'put ''LDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA3LDIzOTA4LDIzOTA5LDIzOTEwLDIzOTExLDIzOTEyLDIzOTE0LDIzOTE3LDIzOTE4LDIzOTIwLDIzOTIxLDIzOTIyLDIzOTIzLDIzOTI1LDIzOTI2LDIzOTI3LDIzOTI4LDIzOTI5LDIzOTMwLDIzOTMxLDIzOTMyLDIzOTMzLDIzOTM0LDIz''@;'; put 'put ''OTM1LDIzOTM2LDIzOTM3LDIzOTM5LDIzOTQwLDIzOTQxLDIzOTQyLDIzOTQzLDIzOTQ0LDIzOTQ1LDIzOTQ2LDIzOTQ3LDIzOTQ4LDIzOTQ5LDIzOTUwLDIzOTUxLDIzOTUyLDIzOTUzLDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTU4LDIzOTU5LDIzOTYwLDIzOTYyLDIzOTYzLDIzOTY0''@;'; put 'put ''LDIzOTY2LDIzOTY3LDIzOTY4LDIzOTY5LDIzOTcwLDIzOTcxLDIzOTcyLDIzOTczLDIzOTc0LDIzOTc1LDIzOTc2LDIzOTc3LDIzOTc4LDIzOTc5LDIzOTgwLDIzOTgxLDIzOTgyLDIzOTgzLDIzOTg0LDIzOTg1LDIzOTg2LDIzOTg3LDIzOTg4LDIzOTg5LDIzOTkwLDIzOTkyLDIzOTkzLDIz''@;'; put 'put ''OTk0LDIzOTk1LDIzOTk2LDIzOTk3LDIzOTk4LDIzOTk5LDI0ZTMsMjQwMDEsMjQwMDIsMjQwMDMsMjQwMDQsMjQwMDYsMjQwMDcsMjQwMDgsMjQwMDksMjQwMTAsMjQwMTEsMjQwMTIsMjQwMTQsMjQwMTUsMjQwMTYsMjQwMTcsMjQwMTgsMjQwMTksMjQwMjAsMjQwMjEsMjQwMjIsMjQwMjMs''@;'; put 'put ''MjQwMjQsMjQwMjUsMjQwMjYsMjQwMjgsMjQwMzEsMjQwMzIsMjQwMzUsMjQwMzYsMjQwNDIsMjQwNDQsMjQwNDUsMjQwNDgsMjQwNTMsMjQwNTQsMjQwNTYsMjQwNTcsMjQwNTgsMjQwNTksMjQwNjAsMjQwNjMsMjQwNjQsMjQwNjgsMjQwNzEsMjQwNzMsMjQwNzQsMjQwNzUsMjQwNzcsMjQw''@;'; put 'put ''NzgsMjQwODIsMjQwODMsMjQwODcsMjQwOTQsMjQwOTUsMjQwOTYsMjQwOTcsMjQwOTgsMjQwOTksMjQxMDAsMjQxMDEsMjQxMDQsMjQxMDUsMjQxMDYsMjQxMDcsMjQxMDgsMjQxMTEsMjQxMTIsMjQxMTQsMjQxMTUsMjQxMTYsMjQxMTcsMjQxMTgsMjQxMjEsMjQxMjIsMjQxMjYsMjQxMjcs''@;'; put 'put ''MjQxMjgsMjQxMjksMjQxMzEsMjQxMzQsMjQxMzUsMjQxMzYsMjQxMzcsMjQxMzgsMjQxMzksMjQxNDEsMjQxNDIsMjQxNDMsMjQxNDQsMjQxNDUsMjQxNDYsMjQxNDcsMjQxNTAsMjQxNTEsMjQxNTIsMjQxNTMsMjQxNTQsMjQxNTYsMjQxNTcsMjQxNTksMjQxNjAsMjQxNjMsMjQxNjQsMjQx''@;'; put 'put ''NjUsMjQxNjYsMjQxNjcsMjQxNjgsMjQxNjksMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzUsMjQxNzYsMjQxNzcsMjQxODEsMjQxODMsMjQxODUsMjQxOTAsMjQxOTMsMjQxOTQsMjQxOTUsMjQxOTcsMjQyMDAsMjQyMDEsMjQyMDQsMjQyMDUsMjQyMDYsMjQyMTAsMjQyMTYs''@;'; put 'put ''MjQyMTksMjQyMjEsMjQyMjUsMjQyMjYsMjQyMjcsMjQyMjgsMjQyMzIsMjQyMzMsMjQyMzQsMjQyMzUsMjQyMzYsMjQyMzgsMjQyMzksMjQyNDAsMjQyNDEsMjQyNDIsMjQyNDQsMjQyNTAsMjQyNTEsMjQyNTIsMjQyNTMsMjQyNTUsMjQyNTYsMjQyNTcsMjQyNTgsMjQyNTksMjQyNjAsMjQy''@;'; put 'put ''NjEsMjQyNjIsMjQyNjMsMjQyNjQsMjQyNjcsMjQyNjgsMjQyNjksMjQyNzAsMjQyNzEsMjQyNzIsMjQyNzYsMjQyNzcsMjQyNzksMjQyODAsMjQyODEsMjQyODIsMjQyODQsMjQyODUsMjQyODYsMjQyODcsMjQyODgsMjQyODksMjQyOTAsMjQyOTEsMjQyOTIsMjQyOTMsMjQyOTQsMjQyOTUs''@;'; put 'put ''MjQyOTcsMjQyOTksMjQzMDAsMjQzMDEsMjQzMDIsMjQzMDMsMjQzMDQsMjQzMDUsMjQzMDYsMjQzMDcsMjQzMDksMjQzMTIsMjQzMTMsMjQzMTUsMjQzMTYsMjQzMTcsMjQzMjUsMjQzMjYsMjQzMjcsMjQzMjksMjQzMzIsMjQzMzMsMjQzMzQsMjQzMzYsMjQzMzgsMjQzNDAsMjQzNDIsMjQz''@;'; put 'put ''NDUsMjQzNDYsMjQzNDgsMjQzNDksMjQzNTAsMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzAsMjQzNzEsMjQzNzIsMjQzNzMsMjQzNzQsMjQzNzUsMjQzNzYsMjQzNzksMjQzODEsMjQzODIsMjQzODMsMjQzODUsMjQzODYsMjQzODcs''@;'; put 'put ''MjQzODgsMjQzODksMjQzOTAsMjQzOTEsMjQzOTIsMjQzOTMsMjQzOTQsMjQzOTUsMjQzOTYsMjQzOTcsMjQzOTgsMjQzOTksMjQ0MDEsMjQ0MDQsMjQ0MDksMjQ0MTAsMjQ0MTEsMjQ0MTIsMjQ0MTQsMjQ0MTUsMjQ0MTYsMjQ0MTksMjQ0MjEsMjQ0MjMsMjQ0MjQsMjQ0MjcsMjQ0MzAsMjQ0''@;'; put 'put ''MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0MzgsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NDcsMjQ0NTEsMjQ0NTQsMjQ0NjEsMjQ0NjIsMjQ0NjMsMjQ0NjUsMjQ0NjcsMjQ0NjgsMjQ0NzAsMjQ0NzQsMjQ0NzUsMjQ0NzcsMjQ0NzgsMjQ0NzksMjQ0ODAsMjQ0ODIsMjQ0ODMsMjQ0ODQs''@;'; put 'put ''MjQ0ODUsMjQ0ODYsMjQ0ODcsMjQ0ODksMjQ0OTEsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ0OTgsMjQ0OTksMjQ1MDAsMjQ1MDIsMjQ1MDQsMjQ1MDUsMjQ1MDYsMjQ1MDcsMjQ1MTAsMjQ1MTEsMjQ1MTIsMjQ1MTMsMjQ1MTQsMjQ1MTksMjQ1MjAsMjQ1MjIsMjQ1MjMsMjQ1MjYsMjQ1''@;'; put 'put ''MzEsMjQ1MzIsMjQ1MzMsMjQ1MzgsMjQ1MzksMjQ1NDAsMjQ1NDIsMjQ1NDMsMjQ1NDYsMjQ1NDcsMjQ1NDksMjQ1NTAsMjQ1NTIsMjQ1NTMsMjQ1NTYsMjQ1NTksMjQ1NjAsMjQ1NjIsMjQ1NjMsMjQ1NjQsMjQ1NjYsMjQ1NjcsMjQ1NjksMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODQsMjQ1ODUs''@;'; put 'put ''MjQ1ODcsMjQ1ODgsMjQ1OTIsMjQ1OTMsMjQ1OTUsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDYsMjQ2MDcsMjQ2MTAsMjQ2MTEsMjQ2MTIsMjQ2MjAsMjQ2MjEsMjQ2MjIsMjQ2MjQsMjQ2MjUsMjQ2MjYsMjQ2MjcsMjQ2MjgsMjQ2MzAsMjQ2MzEsMjQ2MzIsMjQ2MzMsMjQ2MzQsMjQ2MzcsMjQ2''@;'; put 'put ''MzgsMjQ2NDAsMjQ2NDQsMjQ2NDUsMjQ2NDYsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTAsMjQ2NTIsMjQ2NTQsMjQ2NTUsMjQ2NTcsMjQ2NTksMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjQsMjQ2NjcsMjQ2NjgsMjQ2NzAsMjQ2NzEsMjQ2NzIsMjQ2NzMsMjQ2NzcsMjQ2NzgsMjQ2ODYsMjQ2ODks''@;'; put 'put ''MjQ2OTAsMjQ2OTIsMjQ2OTMsMjQ2OTUsMjQ3MDIsMjQ3MDQsMjQ3MDUsMjQ3MDYsMjQ3MDksMjQ3MTAsMjQ3MTEsMjQ3MTIsMjQ3MTQsMjQ3MTUsMjQ3MTgsMjQ3MTksMjQ3MjAsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjcsMjQ3MjgsMjQ3MjksMjQ3MzIsMjQ3MzQsMjQ3MzcsMjQ3MzgsMjQ3''@;'; put 'put ''NDAsMjQ3NDEsMjQ3NDMsMjQ3NDUsMjQ3NDYsMjQ3NTAsMjQ3NTIsMjQ3NTUsMjQ3NTcsMjQ3NTgsMjQ3NTksMjQ3NjEsMjQ3NjIsMjQ3NjUsMjQ3NjYsMjQ3NjcsMjQ3NjgsMjQ3NjksMjQ3NzAsMjQ3NzEsMjQ3NzIsMjQ3NzUsMjQ3NzYsMjQ3NzcsMjQ3ODAsMjQ3ODEsMjQ3ODIsMjQ3ODMs''@;'; put 'put ''MjQ3ODQsMjQ3ODYsMjQ3ODcsMjQ3ODgsMjQ3OTAsMjQ3OTEsMjQ3OTMsMjQ3OTUsMjQ3OTgsMjQ4MDEsMjQ4MDIsMjQ4MDMsMjQ4MDQsMjQ4MDUsMjQ4MTAsMjQ4MTcsMjQ4MTgsMjQ4MjEsMjQ4MjMsMjQ4MjQsMjQ4MjcsMjQ4MjgsMjQ4MjksMjQ4MzAsMjQ4MzEsMjQ4MzQsMjQ4MzUsMjQ4''@;'; put 'put ''MzYsMjQ4MzcsMjQ4MzksMjQ4NDIsMjQ4NDMsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTYsMjQ4NTcsMjQ4NTksMjQ4NjAsMjQ4NjEsMjQ4NjIsMjQ4NjUsMjQ4NjYsMjQ4NjksMjQ4NzIsMjQ4NzMsMjQ4NzQsMjQ4NzYsMjQ4NzcsMjQ4Nzgs''@;'; put 'put ''MjQ4NzksMjQ4ODAsMjQ4ODEsMjQ4ODIsMjQ4ODMsMjQ4ODQsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODgsMjQ4ODksMjQ4OTAsMjQ4OTEsMjQ4OTIsMjQ4OTMsMjQ4OTQsMjQ4OTYsMjQ4OTcsMjQ4OTgsMjQ4OTksMjQ5MDAsMjQ5MDEsMjQ5MDIsMjQ5MDMsMjQ5MDUsMjQ5MDcsMjQ5MDksMjQ5''@;'; put 'put ''MTEsMjQ5MTIsMjQ5MTQsMjQ5MTUsMjQ5MTYsMjQ5MTgsMjQ5MTksMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MjMsMjQ5MjQsMjQ5MjYsMjQ5MjcsMjQ5MjgsMjQ5MjksMjQ5MzEsMjQ5MzIsMjQ5MzMsMjQ5MzQsMjQ5MzcsMjQ5MzgsMjQ5MzksMjQ5NDAsMjQ5NDEsMjQ5NDIsMjQ5NDMsMjQ5NDUs''@;'; put 'put ''MjQ5NDYsMjQ5NDcsMjQ5NDgsMjQ5NTAsMjQ5NTIsMjQ5NTMsMjQ5NTQsMjQ5NTUsMjQ5NTYsMjQ5NTcsMjQ5NTgsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjIsMjQ5NjMsMjQ5NjQsMjQ5NjUsMjQ5NjYsMjQ5NjcsMjQ5NjgsMjQ5NjksMjQ5NzAsMjQ5NzIsMjQ5NzMsMjQ5NzUsMjQ5NzYsMjQ5''@;'; put 'put ''NzcsMjQ5NzgsMjQ5NzksMjQ5ODEsMjQ5ODIsMjQ5ODMsMjQ5ODQsMjQ5ODUsMjQ5ODYsMjQ5ODcsMjQ5ODgsMjQ5OTAsMjQ5OTEsMjQ5OTIsMjQ5OTMsMjQ5OTQsMjQ5OTUsMjQ5OTYsMjQ5OTcsMjQ5OTgsMjUwMDIsMjUwMDMsMjUwMDUsMjUwMDYsMjUwMDcsMjUwMDgsMjUwMDksMjUwMTAs''@;'; put 'put ''MjUwMTEsMjUwMTIsMjUwMTMsMjUwMTQsMjUwMTYsMjUwMTcsMjUwMTgsMjUwMTksMjUwMjAsMjUwMjEsMjUwMjMsMjUwMjQsMjUwMjUsMjUwMjcsMjUwMjgsMjUwMjksMjUwMzAsMjUwMzEsMjUwMzMsMjUwMzYsMjUwMzcsMjUwMzgsMjUwMzksMjUwNDAsMjUwNDMsMjUwNDUsMjUwNDYsMjUw''@;'; put 'put ''NDcsMjUwNDgsMjUwNDksMjUwNTAsMjUwNTEsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTYsMjUwNTcsMjUwNTgsMjUwNTksMjUwNjAsMjUwNjEsMjUwNjMsMjUwNjQsMjUwNjUsMjUwNjYsMjUwNjcsMjUwNjgsMjUwNjksMjUwNzAsMjUwNzEsMjUwNzIsMjUwNzMsMjUwNzQsMjUwNzUs''@;'; put 'put ''MjUwNzYsMjUwNzgsMjUwNzksMjUwODAsMjUwODEsMjUwODIsMjUwODMsMjUwODQsMjUwODUsMjUwODYsMjUwODgsMjUwODksMjUwOTAsMjUwOTEsMjUwOTIsMjUwOTMsMjUwOTUsMjUwOTcsMjUxMDcsMjUxMDgsMjUxMTMsMjUxMTYsMjUxMTcsMjUxMTgsMjUxMjAsMjUxMjMsMjUxMjYsMjUx''@;'; put 'put ''MjcsMjUxMjgsMjUxMjksMjUxMzEsMjUxMzMsMjUxMzUsMjUxMzYsMjUxMzcsMjUxMzgsMjUxNDEsMjUxNDIsMjUxNDQsMjUxNDUsMjUxNDYsMjUxNDcsMjUxNDgsMjUxNTQsMjUxNTYsMjUxNTcsMjUxNTgsMjUxNjIsMjUxNjcsMjUxNjgsMjUxNzMsMjUxNzQsMjUxNzUsMjUxNzcsMjUxNzgs''@;'; put 'put ''MjUxODAsMjUxODEsMjUxODIsMjUxODMsMjUxODQsMjUxODUsMjUxODYsMjUxODgsMjUxODksMjUxOTIsMjUyMDEsMjUyMDIsMjUyMDQsMjUyMDUsMjUyMDcsMjUyMDgsMjUyMTAsMjUyMTEsMjUyMTMsMjUyMTcsMjUyMTgsMjUyMTksMjUyMjEsMjUyMjIsMjUyMjMsMjUyMjQsMjUyMjcsMjUy''@;'; put 'put ''MjgsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyMzYsMjUyNDEsMjUyNDQsMjUyNDUsMjUyNDYsMjUyNTEsMjUyNTQsMjUyNTUsMjUyNTcsMjUyNTgsMjUyNjEsMjUyNjIsMjUyNjMsMjUyNjQsMjUyNjYsMjUyNjcsMjUyNjgsMjUyNzAsMjUyNzEsMjUyNzIsMjUyNzQsMjUyNzgsMjUyODAs''@;'; put 'put ''MjUyODEsMjUyODMsMjUyOTEsMjUyOTUsMjUyOTcsMjUzMDEsMjUzMDksMjUzMTAsMjUzMTIsMjUzMTMsMjUzMTYsMjUzMjIsMjUzMjMsMjUzMjgsMjUzMzAsMjUzMzMsMjUzMzYsMjUzMzcsMjUzMzgsMjUzMzksMjUzNDQsMjUzNDcsMjUzNDgsMjUzNDksMjUzNTAsMjUzNTQsMjUzNTUsMjUz''@;'; put 'put ''NTYsMjUzNTcsMjUzNTksMjUzNjAsMjUzNjIsMjUzNjMsMjUzNjQsMjUzNjUsMjUzNjcsMjUzNjgsMjUzNjksMjUzNzIsMjUzODIsMjUzODMsMjUzODUsMjUzODgsMjUzODksMjUzOTAsMjUzOTIsMjUzOTMsMjUzOTUsMjUzOTYsMjUzOTcsMjUzOTgsMjUzOTksMjU0MDAsMjU0MDMsMjU0MDQs''@;'; put 'put ''MjU0MDYsMjU0MDcsMjU0MDgsMjU0MDksMjU0MTIsMjU0MTUsMjU0MTYsMjU0MTgsMjU0MjUsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzAsMjU0MzEsMjU0MzIsMjU0MzMsMjU0MzQsMjU0MzUsMjU0MzYsMjU0MzcsMjU0NDAsMjU0NDQsMjU0NDUsMjU0NDYsMjU0NDgsMjU0NTAsMjU0NTEsMjU0''@;'; put 'put ''NTIsMjU0NTUsMjU0NTYsMjU0NTgsMjU0NTksMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjUsMjU0NjgsMjU0NjksMjU0NzAsMjU0NzEsMjU0NzMsMjU0NzUsMjU0NzYsMjU0NzcsMjU0NzgsMjU0ODMsMjU0ODUsMjU0ODksMjU0OTEsMjU0OTIsMjU0OTMsMjU0OTUsMjU0OTcsMjU0OTgsMjU0OTks''@;'; put 'put ''MjU1MDAsMjU1MDEsMjU1MDIsMjU1MDMsMjU1MDUsMjU1MDgsMjU1MTAsMjU1MTUsMjU1MTksMjU1MjEsMjU1MjIsMjU1MjUsMjU1MjYsMjU1MjksMjU1MzEsMjU1MzMsMjU1MzUsMjU1MzYsMjU1MzcsMjU1MzgsMjU1MzksMjU1NDEsMjU1NDMsMjU1NDQsMjU1NDYsMjU1NDcsMjU1NDgsMjU1''@;'; put 'put ''NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NTksMjU1NjAsMjU1NjEsMjU1NjIsMjU1NjMsMjU1NjQsMjU1NjUsMjU1NjcsMjU1NzAsMjU1NzIsMjU1NzMsMjU1NzQsMjU1NzUsMjU1NzYsMjU1NzksMjU1ODAsMjU1ODIsMjU1ODMsMjU1ODQsMjU1ODUsMjU1ODcsMjU1ODksMjU1OTEsMjU1OTMs''@;'; put 'put ''MjU1OTQsMjU1OTUsMjU1OTYsMjU1OTgsMjU2MDMsMjU2MDQsMjU2MDYsMjU2MDcsMjU2MDgsMjU2MDksMjU2MTAsMjU2MTMsMjU2MTQsMjU2MTcsMjU2MTgsMjU2MjEsMjU2MjIsMjU2MjMsMjU2MjQsMjU2MjUsMjU2MjYsMjU2MjksMjU2MzEsMjU2MzQsMjU2MzUsMjU2MzYsMjU2MzcsMjU2''@;'; put 'put ''MzksMjU2NDAsMjU2NDEsMjU2NDMsMjU2NDYsMjU2NDcsMjU2NDgsMjU2NDksMjU2NTAsMjU2NTEsMjU2NTMsMjU2NTQsMjU2NTUsMjU2NTYsMjU2NTcsMjU2NTksMjU2NjAsMjU2NjIsMjU2NjQsMjU2NjYsMjU2NjcsMjU2NzMsMjU2NzUsMjU2NzYsMjU2NzcsMjU2NzgsMjU2NzksMjU2ODAs''@;'; put 'put ''MjU2ODEsMjU2ODMsMjU2ODUsMjU2ODYsMjU2ODcsMjU2ODksMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTgsMjU2OTksMjU3MDAsMjU3MDEsMjU3MDIsMjU3MDQsMjU3MDYsMjU3MDcsMjU3MDgsMjU3MTAsMjU3MTEsMjU3MTIsMjU3MTMsMjU3MTQsMjU3''@;'; put 'put ''MTUsMjU3MTYsMjU3MTcsMjU3MTgsMjU3MTksMjU3MjMsMjU3MjQsMjU3MjUsMjU3MjYsMjU3MjcsMjU3MjgsMjU3MjksMjU3MzEsMjU3MzQsMjU3MzYsMjU3MzcsMjU3MzgsMjU3MzksMjU3NDAsMjU3NDEsMjU3NDIsMjU3NDMsMjU3NDQsMjU3NDcsMjU3NDgsMjU3NTEsMjU3NTIsMjU3NTQs''@;'; put 'put ''MjU3NTUsMjU3NTYsMjU3NTcsMjU3NTksMjU3NjAsMjU3NjEsMjU3NjIsMjU3NjMsMjU3NjUsMjU3NjYsMjU3NjcsMjU3NjgsMjU3NzAsMjU3NzEsMjU3NzUsMjU3NzcsMjU3NzgsMjU3NzksMjU3ODAsMjU3ODIsMjU3ODUsMjU3ODcsMjU3ODksMjU3OTAsMjU3OTEsMjU3OTMsMjU3OTUsMjU3''@;'; put 'put ''OTYsMjU3OTgsMjU3OTksMjU4MDAsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDcsMjU4MDksMjU4MTEsMjU4MTIsMjU4MTMsMjU4MTQsMjU4MTcsMjU4MTgsMjU4MTksMjU4MjAsMjU4MjEsMjU4MjMsMjU4MjQsMjU4MjUsMjU4MjcsMjU4MjksMjU4MzEsMjU4MzIsMjU4MzMsMjU4MzQs''@;'; put 'put ''MjU4MzUsMjU4MzYsMjU4MzcsMjU4MzgsMjU4MzksMjU4NDAsMjU4NDEsMjU4NDIsMjU4NDMsMjU4NDQsMjU4NDUsMjU4NDYsMjU4NDcsMjU4NDgsMjU4NDksMjU4NTAsMjU4NTEsMjU4NTIsMjU4NTMsMjU4NTQsMjU4NTUsMjU4NTcsMjU4NTgsMjU4NTksMjU4NjAsMjU4NjEsMjU4NjIsMjU4''@;'; put 'put ''NjMsMjU4NjQsMjU4NjYsMjU4NjcsMjU4NjgsMjU4NjksMjU4NzAsMjU4NzEsMjU4NzIsMjU4NzMsMjU4NzUsMjU4NzYsMjU4NzcsMjU4NzgsMjU4NzksMjU4ODEsMjU4ODIsMjU4ODMsMjU4ODQsMjU4ODUsMjU4ODYsMjU4ODcsMjU4ODgsMjU4ODksMjU4OTAsMjU4OTEsMjU4OTIsMjU4OTQs''@;'; put 'put ''MjU4OTUsMjU4OTYsMjU4OTcsMjU4OTgsMjU5MDAsMjU5MDEsMjU5MDQsMjU5MDUsMjU5MDYsMjU5MDcsMjU5MTEsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjAsMjU5MjEsMjU5MjIsMjU5MjMsMjU5MjQsMjU5MjYsMjU5MjcsMjU5MzAsMjU5MzEsMjU5MzMsMjU5MzQsMjU5MzYsMjU5MzgsMjU5''@;'; put 'put ''MzksMjU5NDAsMjU5NDMsMjU5NDQsMjU5NDYsMjU5NDgsMjU5NTEsMjU5NTIsMjU5NTMsMjU5NTYsMjU5NTcsMjU5NTksMjU5NjAsMjU5NjEsMjU5NjIsMjU5NjUsMjU5NjYsMjU5NjcsMjU5NjksMjU5NzEsMjU5NzMsMjU5NzQsMjU5NzYsMjU5NzcsMjU5NzgsMjU5NzksMjU5ODAsMjU5ODEs''@;'; put 'put ''MjU5ODIsMjU5ODMsMjU5ODQsMjU5ODUsMjU5ODYsMjU5ODcsMjU5ODgsMjU5ODksMjU5OTAsMjU5OTIsMjU5OTMsMjU5OTQsMjU5OTcsMjU5OTgsMjU5OTksMjYwMDIsMjYwMDQsMjYwMDUsMjYwMDYsMjYwMDgsMjYwMTAsMjYwMTMsMjYwMTQsMjYwMTYsMjYwMTgsMjYwMTksMjYwMjIsMjYw''@;'; put 'put ''MjQsMjYwMjYsMjYwMjgsMjYwMzAsMjYwMzMsMjYwMzQsMjYwMzUsMjYwMzYsMjYwMzcsMjYwMzgsMjYwMzksMjYwNDAsMjYwNDIsMjYwNDMsMjYwNDYsMjYwNDcsMjYwNDgsMjYwNTAsMjYwNTUsMjYwNTYsMjYwNTcsMjYwNTgsMjYwNjEsMjYwNjQsMjYwNjUsMjYwNjcsMjYwNjgsMjYwNjks''@;'; put 'put ''MjYwNzIsMjYwNzMsMjYwNzQsMjYwNzUsMjYwNzYsMjYwNzcsMjYwNzgsMjYwNzksMjYwODEsMjYwODMsMjYwODQsMjYwOTAsMjYwOTEsMjYwOTgsMjYwOTksMjYxMDAsMjYxMDEsMjYxMDQsMjYxMDUsMjYxMDcsMjYxMDgsMjYxMDksMjYxMTAsMjYxMTEsMjYxMTMsMjYxMTYsMjYxMTcsMjYx''@;'; put 'put ''MTksMjYxMjAsMjYxMjEsMjYxMjMsMjYxMjUsMjYxMjgsMjYxMjksMjYxMzAsMjYxMzQsMjYxMzUsMjYxMzYsMjYxMzgsMjYxMzksMjYxNDAsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjIsMjYxNjMs''@;'; put 'put ''MjYxNjcsMjYxNjgsMjYxNjksMjYxNzAsMjYxNzEsMjYxNzMsMjYxNzUsMjYxNzYsMjYxNzgsMjYxODAsMjYxODEsMjYxODIsMjYxODMsMjYxODQsMjYxODUsMjYxODYsMjYxODksMjYxOTAsMjYxOTIsMjYxOTMsMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDUsMjYyMDYsMjYyMDgsMjYy''@;'; put 'put ''MTAsMjYyMTEsMjYyMTMsMjYyMTUsMjYyMTcsMjYyMTgsMjYyMTksMjYyMjAsMjYyMjEsMjYyMjUsMjYyMjYsMjYyMjcsMjYyMjksMjYyMzIsMjYyMzMsMjYyMzUsMjYyMzYsMjYyMzcsMjYyMzksMjYyNDAsMjYyNDEsMjYyNDMsMjYyNDUsMjYyNDYsMjYyNDgsMjYyNDksMjYyNTAsMjYyNTEs''@;'; put 'put ''MjYyNTMsMjYyNTQsMjYyNTUsMjYyNTYsMjYyNTgsMjYyNTksMjYyNjAsMjYyNjEsMjYyNjQsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzAsMjYyNzEsMjYyNzIsMjYyNzMsMjYyNzQsMjYyNzUsMjYyNzYsMjYyNzcsMjYyNzgsMjYyODEsMjYyODIsMjYyODMsMjYyODQsMjYyODUsMjYy''@;'; put 'put ''ODcsMjYyODgsMjYyODksMjYyOTAsMjYyOTEsMjYyOTMsMjYyOTQsMjYyOTUsMjYyOTYsMjYyOTgsMjYyOTksMjYzMDAsMjYzMDEsMjYzMDMsMjYzMDQsMjYzMDUsMjYzMDYsMjYzMDcsMjYzMDgsMjYzMDksMjYzMTAsMjYzMTEsMjYzMTIsMjYzMTMsMjYzMTQsMjYzMTUsMjYzMTYsMjYzMTcs''@;'; put 'put ''MjYzMTgsMjYzMTksMjYzMjAsMjYzMjEsMjYzMjIsMjYzMjMsMjYzMjQsMjYzMjUsMjYzMjYsMjYzMjcsMjYzMjgsMjYzMzAsMjYzMzQsMjYzMzUsMjYzMzYsMjYzMzcsMjYzMzgsMjYzMzksMjYzNDAsMjYzNDEsMjYzNDMsMjYzNDQsMjYzNDYsMjYzNDcsMjYzNDgsMjYzNDksMjYzNTAsMjYz''@;'; put 'put ''NTEsMjYzNTMsMjYzNTcsMjYzNTgsMjYzNjAsMjYzNjIsMjYzNjMsMjYzNjUsMjYzNjksMjYzNzAsMjYzNzEsMjYzNzIsMjYzNzMsMjYzNzQsMjYzNzUsMjYzODAsMjYzODIsMjYzODMsMjYzODUsMjYzODYsMjYzODcsMjYzOTAsMjYzOTIsMjYzOTMsMjYzOTQsMjYzOTYsMjYzOTgsMjY0MDAs''@;'; put 'put ''MjY0MDEsMjY0MDIsMjY0MDMsMjY0MDQsMjY0MDUsMjY0MDcsMjY0MDksMjY0MTQsMjY0MTYsMjY0MTgsMjY0MTksMjY0MjIsMjY0MjMsMjY0MjQsMjY0MjUsMjY0MjcsMjY0MjgsMjY0MzAsMjY0MzEsMjY0MzMsMjY0MzYsMjY0MzcsMjY0MzksMjY0NDIsMjY0NDMsMjY0NDUsMjY0NTAsMjY0''@;'; put 'put ''NTIsMjY0NTMsMjY0NTUsMjY0NTYsMjY0NTcsMjY0NTgsMjY0NTksMjY0NjEsMjY0NjYsMjY0NjcsMjY0NjgsMjY0NzAsMjY0NzEsMjY0NzUsMjY0NzYsMjY0NzgsMjY0ODEsMjY0ODQsMjY0ODYsMjY0ODgsMjY0ODksMjY0OTAsMjY0OTEsMjY0OTMsMjY0OTYsMjY0OTgsMjY0OTksMjY1MDEs''@;'; put 'put ''MjY1MDIsMjY1MDQsMjY1MDYsMjY1MDgsMjY1MDksMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTQsMjY1MTUsMjY1MTYsMjY1MTgsMjY1MjEsMjY1MjMsMjY1MjcsMjY1MjgsMjY1MjksMjY1MzIsMjY1MzQsMjY1MzcsMjY1NDAsMjY1NDIsMjY1NDUsMjY1NDYsMjY1NDgsMjY1NTMsMjY1NTQsMjY1''@;'; put 'put ''NTUsMjY1NTYsMjY1NTcsMjY1NTgsMjY1NTksMjY1NjAsMjY1NjIsMjY1NjUsMjY1NjYsMjY1NjcsMjY1NjgsMjY1NjksMjY1NzAsMjY1NzEsMjY1NzIsMjY1NzMsMjY1NzQsMjY1ODEsMjY1ODIsMjY1ODMsMjY1ODcsMjY1OTEsMjY1OTMsMjY1OTUsMjY1OTYsMjY1OTgsMjY1OTksMjY2MDAs''@;'; put 'put ''MjY2MDIsMjY2MDMsMjY2MDUsMjY2MDYsMjY2MTAsMjY2MTMsMjY2MTQsMjY2MTUsMjY2MTYsMjY2MTcsMjY2MTgsMjY2MTksMjY2MjAsMjY2MjIsMjY2MjUsMjY2MjYsMjY2MjcsMjY2MjgsMjY2MzAsMjY2MzcsMjY2NDAsMjY2NDIsMjY2NDQsMjY2NDUsMjY2NDgsMjY2NDksMjY2NTAsMjY2''@;'; put 'put ''NTEsMjY2NTIsMjY2NTQsMjY2NTUsMjY2NTYsMjY2NTgsMjY2NTksMjY2NjAsMjY2NjEsMjY2NjIsMjY2NjMsMjY2NjQsMjY2NjcsMjY2NjgsMjY2NjksMjY2NzAsMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzYsMjY2NzcsMjY2NzgsMjY2ODIsMjY2ODMsMjY2ODcsMjY2OTUsMjY2OTksMjY3MDEs''@;'; put 'put ''MjY3MDMsMjY3MDYsMjY3MTAsMjY3MTEsMjY3MTIsMjY3MTMsMjY3MTQsMjY3MTUsMjY3MTYsMjY3MTcsMjY3MTgsMjY3MTksMjY3MzAsMjY3MzIsMjY3MzMsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3MzksMjY3NDEsMjY3NDQsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3''@;'; put 'put ''NDksMjY3NTAsMjY3NTEsMjY3NTIsMjY3NTQsMjY3NTYsMjY3NTksMjY3NjAsMjY3NjEsMjY3NjIsMjY3NjMsMjY3NjQsMjY3NjUsMjY3NjYsMjY3NjgsMjY3NjksMjY3NzAsMjY3NzIsMjY3NzMsMjY3NzQsMjY3NzYsMjY3NzcsMjY3NzgsMjY3NzksMjY3ODAsMjY3ODEsMjY3ODIsMjY3ODMs''@;'; put 'put ''MjY3ODQsMjY3ODUsMjY3ODcsMjY3ODgsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTUsMjY3OTYsMjY3OTgsMjY4MDEsMjY4MDIsMjY4MDQsMjY4MDYsMjY4MDcsMjY4MDgsMjY4MDksMjY4MTAsMjY4MTEsMjY4MTIsMjY4MTMsMjY4MTQsMjY4MTUsMjY4MTcsMjY4MTksMjY4MjAsMjY4MjEsMjY4''@;'; put 'put ''MjIsMjY4MjMsMjY4MjQsMjY4MjYsMjY4MjgsMjY4MzAsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzYsMjY4MzgsMjY4MzksMjY4NDEsMjY4NDMsMjY4NDQsMjY4NDUsMjY4NDYsMjY4NDcsMjY4NDksMjY4NTAsMjY4NTIsMjY4NTMsMjY4NTQsMjY4NTUsMjY4NTYsMjY4NTcsMjY4NTgs''@;'; put 'put ''MjY4NTksMjY4NjAsMjY4NjEsMjY4NjMsMjY4NjYsMjY4NjcsMjY4NjgsMjY4NzAsMjY4NzEsMjY4NzIsMjY4NzUsMjY4NzcsMjY4NzgsMjY4NzksMjY4ODAsMjY4ODIsMjY4ODMsMjY4ODQsMjY4ODYsMjY4ODcsMjY4ODgsMjY4ODksMjY4OTAsMjY4OTIsMjY4OTUsMjY4OTcsMjY4OTksMjY5''@;'; put 'put ''MDAsMjY5MDEsMjY5MDIsMjY5MDMsMjY5MDQsMjY5MDUsMjY5MDYsMjY5MDcsMjY5MDgsMjY5MDksMjY5MTAsMjY5MTMsMjY5MTQsMjY5MTUsMjY5MTcsMjY5MTgsMjY5MTksMjY5MjAsMjY5MjEsMjY5MjIsMjY5MjMsMjY5MjQsMjY5MjYsMjY5MjcsMjY5MjksMjY5MzAsMjY5MzEsMjY5MzMs''@;'; put 'put ''MjY5MzQsMjY5MzUsMjY5MzYsMjY5MzgsMjY5MzksMjY5NDAsMjY5NDIsMjY5NDQsMjY5NDUsMjY5NDcsMjY5NDgsMjY5NDksMjY5NTAsMjY5NTEsMjY5NTIsMjY5NTMsMjY5NTQsMjY5NTUsMjY5NTYsMjY5NTcsMjY5NTgsMjY5NTksMjY5NjAsMjY5NjEsMjY5NjIsMjY5NjMsMjY5NjUsMjY5''@;'; put 'put ''NjYsMjY5NjgsMjY5NjksMjY5NzEsMjY5NzIsMjY5NzUsMjY5NzcsMjY5NzgsMjY5ODAsMjY5ODEsMjY5ODMsMjY5ODQsMjY5ODUsMjY5ODYsMjY5ODgsMjY5ODksMjY5OTEsMjY5OTIsMjY5OTQsMjY5OTUsMjY5OTYsMjY5OTcsMjY5OTgsMjcwMDIsMjcwMDMsMjcwMDUsMjcwMDYsMjcwMDcs''@;'; put 'put ''MjcwMDksMjcwMTEsMjcwMTMsMjcwMTgsMjcwMTksMjcwMjAsMjcwMjIsMjcwMjMsMjcwMjQsMjcwMjUsMjcwMjYsMjcwMjcsMjcwMzAsMjcwMzEsMjcwMzMsMjcwMzQsMjcwMzcsMjcwMzgsMjcwMzksMjcwNDAsMjcwNDEsMjcwNDIsMjcwNDMsMjcwNDQsMjcwNDUsMjcwNDYsMjcwNDksMjcw''@;'; put 'put ''NTAsMjcwNTIsMjcwNTQsMjcwNTUsMjcwNTYsMjcwNTgsMjcwNTksMjcwNjEsMjcwNjIsMjcwNjQsMjcwNjUsMjcwNjYsMjcwNjgsMjcwNjksMjcwNzAsMjcwNzEsMjcwNzIsMjcwNzQsMjcwNzUsMjcwNzYsMjcwNzcsMjcwNzgsMjcwNzksMjcwODAsMjcwODEsMjcwODMsMjcwODUsMjcwODcs''@;'; put 'put ''MjcwODksMjcwOTAsMjcwOTEsMjcwOTMsMjcwOTQsMjcwOTUsMjcwOTYsMjcwOTcsMjcwOTgsMjcxMDAsMjcxMDEsMjcxMDIsMjcxMDUsMjcxMDYsMjcxMDcsMjcxMDgsMjcxMDksMjcxMTAsMjcxMTEsMjcxMTIsMjcxMTMsMjcxMTQsMjcxMTUsMjcxMTYsMjcxMTgsMjcxMTksMjcxMjAsMjcx''@;'; put 'put ''MjEsMjcxMjMsMjcxMjQsMjcxMjUsMjcxMjYsMjcxMjcsMjcxMjgsMjcxMjksMjcxMzAsMjcxMzEsMjcxMzIsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzgsMjcxMzksMjcxNDAsMjcxNDEsMjcxNDIsMjcxNDMsMjcxNDQsMjcxNDUsMjcxNDcsMjcxNDgsMjcxNDksMjcxNTAsMjcxNTEsMjcxNTIs''@;'; put 'put ''MjcxNTMsMjcxNTQsMjcxNTUsMjcxNTYsMjcxNTcsMjcxNTgsMjcxNjEsMjcxNjIsMjcxNjMsMjcxNjQsMjcxNjUsMjcxNjYsMjcxNjgsMjcxNzAsMjcxNzEsMjcxNzIsMjcxNzMsMjcxNzQsMjcxNzUsMjcxNzcsMjcxNzksMjcxODAsMjcxODEsMjcxODIsMjcxODQsMjcxODYsMjcxODcsMjcx''@;'; put 'put ''ODgsMjcxOTAsMjcxOTEsMjcxOTIsMjcxOTMsMjcxOTQsMjcxOTUsMjcxOTYsMjcxOTksMjcyMDAsMjcyMDEsMjcyMDIsMjcyMDMsMjcyMDUsMjcyMDYsMjcyMDgsMjcyMDksMjcyMTAsMjcyMTEsMjcyMTIsMjcyMTMsMjcyMTQsMjcyMTUsMjcyMTcsMjcyMTgsMjcyMTksMjcyMjAsMjcyMjEs''@;'; put 'put ''MjcyMjIsMjcyMjMsMjcyMjYsMjcyMjgsMjcyMjksMjcyMzAsMjcyMzEsMjcyMzIsMjcyMzQsMjcyMzUsMjcyMzYsMjcyMzgsMjcyMzksMjcyNDAsMjcyNDEsMjcyNDIsMjcyNDMsMjcyNDQsMjcyNDUsMjcyNDYsMjcyNDcsMjcyNDgsMjcyNTAsMjcyNTEsMjcyNTIsMjcyNTMsMjcyNTQsMjcy''@;'; put 'put ''NTUsMjcyNTYsMjcyNTgsMjcyNTksMjcyNjEsMjcyNjIsMjcyNjMsMjcyNjUsMjcyNjYsMjcyNjcsMjcyNjksMjcyNzAsMjcyNzEsMjcyNzIsMjcyNzMsMjcyNzQsMjcyNzUsMjcyNzYsMjcyNzcsMjcyNzksMjcyODIsMjcyODMsMjcyODQsMjcyODUsMjcyODYsMjcyODgsMjcyODksMjcyOTAs''@;'; put 'put ''MjcyOTEsMjcyOTIsMjcyOTMsMjcyOTQsMjcyOTUsMjcyOTcsMjcyOTgsMjcyOTksMjczMDAsMjczMDEsMjczMDIsMjczMDMsMjczMDQsMjczMDYsMjczMDksMjczMTAsMjczMTEsMjczMTIsMjczMTMsMjczMTQsMjczMTUsMjczMTYsMjczMTcsMjczMTgsMjczMTksMjczMjAsMjczMjEsMjcz''@;'; put 'put ''MjIsMjczMjMsMjczMjQsMjczMjUsMjczMjYsMjczMjcsMjczMjgsMjczMjksMjczMzAsMjczMzEsMjczMzIsMjczMzMsMjczMzQsMjczMzUsMjczMzYsMjczMzcsMjczMzgsMjczMzksMjczNDAsMjczNDEsMjczNDIsMjczNDMsMjczNDQsMjczNDUsMjczNDYsMjczNDcsMjczNDgsMjczNDks''@;'; put 'put ''MjczNTAsMjczNTEsMjczNTIsMjczNTMsMjczNTQsMjczNTUsMjczNTYsMjczNTcsMjczNTgsMjczNTksMjczNjAsMjczNjEsMjczNjIsMjczNjMsMjczNjQsMjczNjUsMjczNjYsMjczNjcsMjczNjgsMjczNjksMjczNzAsMjczNzEsMjczNzIsMjczNzMsMjczNzQsMjczNzUsMjczNzYsMjcz''@;'; put 'put ''NzcsMjczNzgsMjczNzksMjczODAsMjczODEsMjczODIsMjczODMsMjczODQsMjczODUsMjczODYsMjczODcsMjczODgsMjczODksMjczOTAsMjczOTEsMjczOTIsMjczOTMsMjczOTQsMjczOTUsMjczOTYsMjczOTcsMjczOTgsMjczOTksMjc0MDAsMjc0MDEsMjc0MDIsMjc0MDMsMjc0MDQs''@;'; put 'put ''Mjc0MDUsMjc0MDYsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTAsMjc0MTEsMjc0MTIsMjc0MTMsMjc0MTQsMjc0MTUsMjc0MTYsMjc0MTcsMjc0MTgsMjc0MTksMjc0MjAsMjc0MjEsMjc0MjIsMjc0MjMsMjc0MjksMjc0MzAsMjc0MzIsMjc0MzMsMjc0MzQsMjc0MzUsMjc0MzYsMjc0MzcsMjc0''@;'; put 'put ''MzgsMjc0MzksMjc0NDAsMjc0NDEsMjc0NDMsMjc0NDQsMjc0NDUsMjc0NDYsMjc0NDgsMjc0NTEsMjc0NTIsMjc0NTMsMjc0NTUsMjc0NTYsMjc0NTcsMjc0NTgsMjc0NjAsMjc0NjEsMjc0NjQsMjc0NjYsMjc0NjcsMjc0NjksMjc0NzAsMjc0NzEsMjc0NzIsMjc0NzMsMjc0NzQsMjc0NzUs''@;'; put 'put ''Mjc0NzYsMjc0NzcsMjc0NzgsMjc0NzksMjc0ODAsMjc0ODIsMjc0ODMsMjc0ODQsMjc0ODUsMjc0ODYsMjc0ODcsMjc0ODgsMjc0ODksMjc0OTYsMjc0OTcsMjc0OTksMjc1MDAsMjc1MDEsMjc1MDIsMjc1MDMsMjc1MDQsMjc1MDUsMjc1MDYsMjc1MDcsMjc1MDgsMjc1MDksMjc1MTAsMjc1''@;'; put 'put ''MTEsMjc1MTIsMjc1MTQsMjc1MTcsMjc1MTgsMjc1MTksMjc1MjAsMjc1MjUsMjc1MjgsMjc1MzIsMjc1MzQsMjc1MzUsMjc1MzYsMjc1MzcsMjc1NDAsMjc1NDEsMjc1NDMsMjc1NDQsMjc1NDUsMjc1NDgsMjc1NDksMjc1NTAsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NTYsMjc1NTcs''@;'; put 'put ''Mjc1NTgsMjc1NTksMjc1NjAsMjc1NjEsMjc1NjMsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjcsMjc1NjgsMjc1NjksMjc1NzAsMjc1NzQsMjc1NzYsMjc1NzcsMjc1NzgsMjc1NzksMjc1ODAsMjc1ODEsMjc1ODIsMjc1ODQsMjc1ODcsMjc1ODgsMjc1OTAsMjc1OTEsMjc1OTIsMjc1OTMsMjc1''@;'; put 'put ''OTQsMjc1OTYsMjc1OTgsMjc2MDAsMjc2MDEsMjc2MDgsMjc2MTAsMjc2MTIsMjc2MTMsMjc2MTQsMjc2MTUsMjc2MTYsMjc2MTgsMjc2MTksMjc2MjAsMjc2MjEsMjc2MjIsMjc2MjMsMjc2MjQsMjc2MjUsMjc2MjgsMjc2MjksMjc2MzAsMjc2MzIsMjc2MzMsMjc2MzQsMjc2MzYsMjc2Mzgs''@;'; put 'put ''Mjc2MzksMjc2NDAsMjc2NDIsMjc2NDMsMjc2NDQsMjc2NDYsMjc2NDcsMjc2NDgsMjc2NDksMjc2NTAsMjc2NTEsMjc2NTIsMjc2NTYsMjc2NTcsMjc2NTgsMjc2NTksMjc2NjAsMjc2NjIsMjc2NjYsMjc2NzEsMjc2NzYsMjc2NzcsMjc2NzgsMjc2ODAsMjc2ODMsMjc2ODUsMjc2OTEsMjc2''@;'; put 'put ''OTIsMjc2OTMsMjc2OTcsMjc2OTksMjc3MDIsMjc3MDMsMjc3MDUsMjc3MDYsMjc3MDcsMjc3MDgsMjc3MTAsMjc3MTEsMjc3MTUsMjc3MTYsMjc3MTcsMjc3MjAsMjc3MjMsMjc3MjQsMjc3MjUsMjc3MjYsMjc3MjcsMjc3MjksMjc3MzAsMjc3MzEsMjc3MzQsMjc3MzYsMjc3MzcsMjc3Mzgs''@;'; put 'put ''Mjc3NDYsMjc3NDcsMjc3NDksMjc3NTAsMjc3NTEsMjc3NTUsMjc3NTYsMjc3NTcsMjc3NTgsMjc3NTksMjc3NjEsMjc3NjMsMjc3NjUsMjc3NjcsMjc3NjgsMjc3NzAsMjc3NzEsMjc3NzIsMjc3NzUsMjc3NzYsMjc3ODAsMjc3ODMsMjc3ODYsMjc3ODcsMjc3ODksMjc3OTAsMjc3OTMsMjc3''@;'; put 'put ''OTQsMjc3OTcsMjc3OTgsMjc3OTksMjc4MDAsMjc4MDIsMjc4MDQsMjc4MDUsMjc4MDYsMjc4MDgsMjc4MTAsMjc4MTYsMjc4MjAsMjc4MjMsMjc4MjQsMjc4MjgsMjc4MjksMjc4MzAsMjc4MzEsMjc4MzQsMjc4NDAsMjc4NDEsMjc4NDIsMjc4NDMsMjc4NDYsMjc4NDcsMjc4NDgsMjc4NTEs''@;'; put 'put ''Mjc4NTMsMjc4NTQsMjc4NTUsMjc4NTcsMjc4NTgsMjc4NjQsMjc4NjUsMjc4NjYsMjc4NjgsMjc4NjksMjc4NzEsMjc4NzYsMjc4NzgsMjc4NzksMjc4ODEsMjc4ODQsMjc4ODUsMjc4OTAsMjc4OTIsMjc4OTcsMjc5MDMsMjc5MDQsMjc5MDYsMjc5MDcsMjc5MDksMjc5MTAsMjc5MTIsMjc5''@;'; put 'put ''MTMsMjc5MTQsMjc5MTcsMjc5MTksMjc5MjAsMjc5MjEsMjc5MjMsMjc5MjQsMjc5MjUsMjc5MjYsMjc5MjgsMjc5MzIsMjc5MzMsMjc5MzUsMjc5MzYsMjc5MzcsMjc5MzgsMjc5MzksMjc5NDAsMjc5NDIsMjc5NDQsMjc5NDUsMjc5NDgsMjc5NDksMjc5NTEsMjc5NTIsMjc5NTYsMjc5NTgs''@;'; put 'put ''Mjc5NTksMjc5NjAsMjc5NjIsMjc5NjcsMjc5NjgsMjc5NzAsMjc5NzIsMjc5NzcsMjc5ODAsMjc5ODQsMjc5ODksMjc5OTAsMjc5OTEsMjc5OTIsMjc5OTUsMjc5OTcsMjc5OTksMjgwMDEsMjgwMDIsMjgwMDQsMjgwMDUsMjgwMDcsMjgwMDgsMjgwMTEsMjgwMTIsMjgwMTMsMjgwMTYsMjgw''@;'; put 'put ''MTcsMjgwMTgsMjgwMTksMjgwMjEsMjgwMjIsMjgwMjUsMjgwMjYsMjgwMjcsMjgwMjksMjgwMzAsMjgwMzEsMjgwMzIsMjgwMzMsMjgwMzUsMjgwMzYsMjgwMzgsMjgwMzksMjgwNDIsMjgwNDMsMjgwNDUsMjgwNDcsMjgwNDgsMjgwNTAsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNTcsMjgwNTgs''@;'; put 'put ''MjgwNjAsMjgwNjYsMjgwNjksMjgwNzYsMjgwNzcsMjgwODAsMjgwODEsMjgwODMsMjgwODQsMjgwODYsMjgwODcsMjgwODksMjgwOTAsMjgwOTEsMjgwOTIsMjgwOTMsMjgwOTQsMjgwOTcsMjgwOTgsMjgwOTksMjgxMDQsMjgxMDUsMjgxMDYsMjgxMDksMjgxMTAsMjgxMTEsMjgxMTIsMjgx''@;'; put 'put ''MTQsMjgxMTUsMjgxMTYsMjgxMTcsMjgxMTksMjgxMjIsMjgxMjMsMjgxMjQsMjgxMjcsMjgxMzAsMjgxMzEsMjgxMzMsMjgxMzUsMjgxMzYsMjgxMzcsMjgxMzgsMjgxNDEsMjgxNDMsMjgxNDQsMjgxNDYsMjgxNDgsMjgxNDksMjgxNTAsMjgxNTIsMjgxNTQsMjgxNTcsMjgxNTgsMjgxNTks''@;'; put 'put ''MjgxNjAsMjgxNjEsMjgxNjIsMjgxNjMsMjgxNjQsMjgxNjYsMjgxNjcsMjgxNjgsMjgxNjksMjgxNzEsMjgxNzUsMjgxNzgsMjgxNzksMjgxODEsMjgxODQsMjgxODUsMjgxODcsMjgxODgsMjgxOTAsMjgxOTEsMjgxOTQsMjgxOTgsMjgxOTksMjgyMDAsMjgyMDIsMjgyMDQsMjgyMDYsMjgy''@;'; put 'put ''MDgsMjgyMDksMjgyMTEsMjgyMTMsMjgyMTQsMjgyMTUsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjEsMjgyMjIsMjgyMjMsMjgyMjQsMjgyMjUsMjgyMjYsMjgyMjksMjgyMzAsMjgyMzEsMjgyMzIsMjgyMzMsMjgyMzQsMjgyMzUsMjgyMzYsMjgyMzksMjgyNDAsMjgyNDEsMjgyNDIsMjgyNDUs''@;'; put 'put ''MjgyNDcsMjgyNDksMjgyNTAsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTYsMjgyNTcsMjgyNTgsMjgyNTksMjgyNjAsMjgyNjEsMjgyNjIsMjgyNjMsMjgyNjQsMjgyNjUsMjgyNjYsMjgyNjgsMjgyNjksMjgyNzEsMjgyNzIsMjgyNzMsMjgyNzQsMjgyNzUsMjgyNzYsMjgyNzcsMjgyNzgsMjgy''@;'; put 'put ''NzksMjgyODAsMjgyODEsMjgyODIsMjgyODMsMjgyODQsMjgyODUsMjgyODgsMjgyODksMjgyOTAsMjgyOTIsMjgyOTUsMjgyOTYsMjgyOTgsMjgyOTksMjgzMDAsMjgzMDEsMjgzMDIsMjgzMDUsMjgzMDYsMjgzMDcsMjgzMDgsMjgzMDksMjgzMTAsMjgzMTEsMjgzMTMsMjgzMTQsMjgzMTUs''@;'; put 'put ''MjgzMTcsMjgzMTgsMjgzMjAsMjgzMjEsMjgzMjMsMjgzMjQsMjgzMjYsMjgzMjgsMjgzMjksMjgzMzEsMjgzMzIsMjgzMzMsMjgzMzQsMjgzMzYsMjgzMzksMjgzNDEsMjgzNDQsMjgzNDUsMjgzNDgsMjgzNTAsMjgzNTEsMjgzNTIsMjgzNTUsMjgzNTYsMjgzNTcsMjgzNTgsMjgzNjAsMjgz''@;'; put 'put ''NjEsMjgzNjIsMjgzNjQsMjgzNjUsMjgzNjYsMjgzNjgsMjgzNzAsMjgzNzQsMjgzNzYsMjgzNzcsMjgzNzksMjgzODAsMjgzODEsMjgzODcsMjgzOTEsMjgzOTQsMjgzOTUsMjgzOTYsMjgzOTcsMjgzOTgsMjgzOTksMjg0MDAsMjg0MDEsMjg0MDIsMjg0MDMsMjg0MDUsMjg0MDYsMjg0MDcs''@;'; put 'put ''Mjg0MDgsMjg0MTAsMjg0MTEsMjg0MTIsMjg0MTMsMjg0MTQsMjg0MTUsMjg0MTYsMjg0MTcsMjg0MTksMjg0MjAsMjg0MjEsMjg0MjMsMjg0MjQsMjg0MjYsMjg0MjcsMjg0MjgsMjg0MjksMjg0MzAsMjg0MzIsMjg0MzMsMjg0MzQsMjg0MzgsMjg0MzksMjg0NDAsMjg0NDEsMjg0NDIsMjg0''@;'; put 'put ''NDMsMjg0NDQsMjg0NDUsMjg0NDYsMjg0NDcsMjg0NDksMjg0NTAsMjg0NTEsMjg0NTMsMjg0NTQsMjg0NTUsMjg0NTYsMjg0NjAsMjg0NjIsMjg0NjQsMjg0NjYsMjg0NjgsMjg0NjksMjg0NzEsMjg0NzIsMjg0NzMsMjg0NzQsMjg0NzUsMjg0NzYsMjg0NzcsMjg0NzksMjg0ODAsMjg0ODEs''@;'; put 'put ''Mjg0ODIsMjg0ODMsMjg0ODQsMjg0ODUsMjg0ODgsMjg0ODksMjg0OTAsMjg0OTIsMjg0OTQsMjg0OTUsMjg0OTYsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDAsMjg1MDEsMjg1MDIsMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDcsMjg1MDksMjg1MTEsMjg1MTIsMjg1MTMsMjg1MTUsMjg1MTYsMjg1''@;'; put 'put ''MTcsMjg1MTksMjg1MjAsMjg1MjEsMjg1MjIsMjg1MjMsMjg1MjQsMjg1MjcsMjg1MjgsMjg1MjksMjg1MzEsMjg1MzMsMjg1MzQsMjg1MzUsMjg1MzcsMjg1MzksMjg1NDEsMjg1NDIsMjg1NDMsMjg1NDQsMjg1NDUsMjg1NDYsMjg1NDcsMjg1NDksMjg1NTAsMjg1NTEsMjg1NTQsMjg1NTUs''@;'; put 'put ''Mjg1NTksMjg1NjAsMjg1NjEsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjUsMjg1NjYsMjg1NjcsMjg1NjgsMjg1NjksMjg1NzAsMjg1NzEsMjg1NzMsMjg1NzQsMjg1NzUsMjg1NzYsMjg1NzgsMjg1NzksMjg1ODAsMjg1ODEsMjg1ODIsMjg1ODQsMjg1ODUsMjg1ODYsMjg1ODcsMjg1ODgsMjg1''@;'; put 'put ''ODksMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTMsMjg1OTQsMjg1OTYsMjg1OTcsMjg1OTksMjg2MDAsMjg2MDIsMjg2MDMsMjg2MDQsMjg2MDUsMjg2MDYsMjg2MDcsMjg2MDksMjg2MTEsMjg2MTIsMjg2MTMsMjg2MTQsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MTksMjg2MjAsMjg2MjEsMjg2MjIs''@;'; put 'put ''Mjg2MjMsMjg2MjQsMjg2MjcsMjg2MjgsMjg2MjksMjg2MzAsMjg2MzEsMjg2MzIsMjg2MzMsMjg2MzQsMjg2MzUsMjg2MzYsMjg2MzcsMjg2MzksMjg2NDIsMjg2NDMsMjg2NDQsMjg2NDUsMjg2NDYsMjg2NDcsMjg2NDgsMjg2NDksMjg2NTAsMjg2NTEsMjg2NTIsMjg2NTMsMjg2NTYsMjg2''@;'; put 'put ''NTcsMjg2NTgsMjg2NTksMjg2NjAsMjg2NjEsMjg2NjIsMjg2NjMsMjg2NjQsMjg2NjUsMjg2NjYsMjg2NjcsMjg2NjgsMjg2NjksMjg2NzAsMjg2NzEsMjg2NzIsMjg2NzMsMjg2NzQsMjg2NzUsMjg2NzYsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODAsMjg2ODEsMjg2ODIsMjg2ODMsMjg2ODQs''@;'; put 'put ''Mjg2ODUsMjg2ODYsMjg2ODcsMjg2ODgsMjg2OTAsMjg2OTEsMjg2OTIsMjg2OTMsMjg2OTQsMjg2OTUsMjg2OTYsMjg2OTcsMjg3MDAsMjg3MDEsMjg3MDIsMjg3MDMsMjg3MDQsMjg3MDUsMjg3MDYsMjg3MDgsMjg3MDksMjg3MTAsMjg3MTEsMjg3MTIsMjg3MTMsMjg3MTQsMjg3MTUsMjg3''@;'; put 'put ''MTYsMjg3MTcsMjg3MTgsMjg3MTksMjg3MjAsMjg3MjEsMjg3MjIsMjg3MjMsMjg3MjQsMjg3MjYsMjg3MjcsMjg3MjgsMjg3MzAsMjg3MzEsMjg3MzIsMjg3MzMsMjg3MzQsMjg3MzUsMjg3MzYsMjg3MzcsMjg3MzgsMjg3MzksMjg3NDAsMjg3NDEsMjg3NDIsMjg3NDMsMjg3NDQsMjg3NDUs''@;'; put 'put ''Mjg3NDYsMjg3NDcsMjg3NDksMjg3NTAsMjg3NTIsMjg3NTMsMjg3NTQsMjg3NTUsMjg3NTYsMjg3NTcsMjg3NTgsMjg3NTksMjg3NjAsMjg3NjEsMjg3NjIsMjg3NjMsMjg3NjQsMjg3NjUsMjg3NjcsMjg3NjgsMjg3NjksMjg3NzAsMjg3NzEsMjg3NzIsMjg3NzMsMjg3NzQsMjg3NzUsMjg3''@;'; put 'put ''NzYsMjg3NzcsMjg3NzgsMjg3ODIsMjg3ODUsMjg3ODYsMjg3ODcsMjg3ODgsMjg3OTEsMjg3OTMsMjg3OTQsMjg3OTUsMjg3OTcsMjg4MDEsMjg4MDIsMjg4MDMsMjg4MDQsMjg4MDYsMjg4MDcsMjg4MDgsMjg4MTEsMjg4MTIsMjg4MTMsMjg4MTUsMjg4MTYsMjg4MTcsMjg4MTksMjg4MjMs''@;'; put 'put ''Mjg4MjQsMjg4MjYsMjg4MjcsMjg4MzAsMjg4MzEsMjg4MzIsMjg4MzMsMjg4MzQsMjg4MzUsMjg4MzYsMjg4MzcsMjg4MzgsMjg4MzksMjg4NDAsMjg4NDEsMjg4NDIsMjg4NDgsMjg4NTAsMjg4NTIsMjg4NTMsMjg4NTQsMjg4NTgsMjg4NjIsMjg4NjMsMjg4NjgsMjg4NjksMjg4NzAsMjg4''@;'; put 'put ''NzEsMjg4NzMsMjg4NzUsMjg4NzYsMjg4NzcsMjg4NzgsMjg4NzksMjg4ODAsMjg4ODEsMjg4ODIsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODcsMjg4OTAsMjg4OTIsMjg4OTMsMjg4OTQsMjg4OTYsMjg4OTcsMjg4OTgsMjg4OTksMjg5MDEsMjg5MDYsMjg5MTAsMjg5MTIsMjg5MTMs''@;'; put 'put ''Mjg5MTQsMjg5MTUsMjg5MTYsMjg5MTcsMjg5MTgsMjg5MjAsMjg5MjIsMjg5MjMsMjg5MjQsMjg5MjYsMjg5MjcsMjg5MjgsMjg5MjksMjg5MzAsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzYsMjg5MzksMjg5NDAsMjg5NDEsMjg5NDIsMjg5NDMsMjg5NDUsMjg5NDYsMjg5''@;'; put 'put ''NDgsMjg5NTEsMjg5NTUsMjg5NTYsMjg5NTcsMjg5NTgsMjg5NTksMjg5NjAsMjg5NjEsMjg5NjIsMjg5NjMsMjg5NjQsMjg5NjUsMjg5NjcsMjg5NjgsMjg5NjksMjg5NzAsMjg5NzEsMjg5NzIsMjg5NzMsMjg5NzQsMjg5NzgsMjg5NzksMjg5ODAsMjg5ODEsMjg5ODMsMjg5ODQsMjg5ODUs''@;'; put 'put ''Mjg5ODYsMjg5ODcsMjg5ODgsMjg5ODksMjg5OTAsMjg5OTEsMjg5OTIsMjg5OTMsMjg5OTQsMjg5OTUsMjg5OTYsMjg5OTgsMjg5OTksMjllMywyOTAwMSwyOTAwMywyOTAwNSwyOTAwNywyOTAwOCwyOTAwOSwyOTAxMCwyOTAxMSwyOTAxMiwyOTAxMywyOTAxNCwyOTAxNSwyOTAxNiwyOTAx''@;'; put 'put ''NywyOTAxOCwyOTAxOSwyOTAyMSwyOTAyMywyOTAyNCwyOTAyNSwyOTAyNiwyOTAyNywyOTAyOSwyOTAzMywyOTAzNCwyOTAzNSwyOTAzNiwyOTAzNywyOTAzOSwyOTA0MCwyOTA0MSwyOTA0NCwyOTA0NSwyOTA0NiwyOTA0NywyOTA0OSwyOTA1MSwyOTA1MiwyOTA1NCwyOTA1NSwyOTA1Niwy''@;'; put 'put ''OTA1NywyOTA1OCwyOTA1OSwyOTA2MSwyOTA2MiwyOTA2MywyOTA2NCwyOTA2NSwyOTA2NywyOTA2OCwyOTA2OSwyOTA3MCwyOTA3MiwyOTA3MywyOTA3NCwyOTA3NSwyOTA3NywyOTA3OCwyOTA3OSwyOTA4MiwyOTA4MywyOTA4NCwyOTA4NSwyOTA4NiwyOTA4OSwyOTA5MCwyOTA5MSwyOTA5''@;'; put 'put ''MiwyOTA5MywyOTA5NCwyOTA5NSwyOTA5NywyOTA5OCwyOTA5OSwyOTEwMSwyOTEwMiwyOTEwMywyOTEwNCwyOTEwNSwyOTEwNiwyOTEwOCwyOTExMCwyOTExMSwyOTExMiwyOTExNCwyOTExNSwyOTExNiwyOTExNywyOTExOCwyOTExOSwyOTEyMCwyOTEyMSwyOTEyMiwyOTEyNCwyOTEyNSwy''@;'; put 'put ''OTEyNiwyOTEyNywyOTEyOCwyOTEyOSwyOTEzMCwyOTEzMSwyOTEzMiwyOTEzMywyOTEzNSwyOTEzNiwyOTEzNywyOTEzOCwyOTEzOSwyOTE0MiwyOTE0MywyOTE0NCwyOTE0NSwyOTE0NiwyOTE0NywyOTE0OCwyOTE0OSwyOTE1MCwyOTE1MSwyOTE1MywyOTE1NCwyOTE1NSwyOTE1NiwyOTE1''@;'; put 'put ''OCwyOTE2MCwyOTE2MSwyOTE2MiwyOTE2MywyOTE2NCwyOTE2NSwyOTE2NywyOTE2OCwyOTE2OSwyOTE3MCwyOTE3MSwyOTE3MiwyOTE3MywyOTE3NCwyOTE3NSwyOTE3NiwyOTE3OCwyOTE3OSwyOTE4MCwyOTE4MSwyOTE4MiwyOTE4MywyOTE4NCwyOTE4NSwyOTE4NiwyOTE4NywyOTE4OCwy''@;'; put 'put ''OTE4OSwyOTE5MSwyOTE5MiwyOTE5MywyOTE5NCwyOTE5NSwyOTE5NiwyOTE5NywyOTE5OCwyOTE5OSwyOTIwMCwyOTIwMSwyOTIwMiwyOTIwMywyOTIwNCwyOTIwNSwyOTIwNiwyOTIwNywyOTIwOCwyOTIwOSwyOTIxMCwyOTIxMSwyOTIxMiwyOTIxNCwyOTIxNSwyOTIxNiwyOTIxNywyOTIx''@;'; put 'put ''OCwyOTIxOSwyOTIyMCwyOTIyMSwyOTIyMiwyOTIyMywyOTIyNSwyOTIyNywyOTIyOSwyOTIzMCwyOTIzMSwyOTIzNCwyOTIzNSwyOTIzNiwyOTI0MiwyOTI0NCwyOTI0NiwyOTI0OCwyOTI0OSwyOTI1MCwyOTI1MSwyOTI1MiwyOTI1MywyOTI1NCwyOTI1NywyOTI1OCwyOTI1OSwyOTI2Miwy''@;'; put 'put ''OTI2MywyOTI2NCwyOTI2NSwyOTI2NywyOTI2OCwyOTI2OSwyOTI3MSwyOTI3MiwyOTI3NCwyOTI3NiwyOTI3OCwyOTI4MCwyOTI4MywyOTI4NCwyOTI4NSwyOTI4OCwyOTI5MCwyOTI5MSwyOTI5MiwyOTI5MywyOTI5NiwyOTI5NywyOTI5OSwyOTMwMCwyOTMwMiwyOTMwMywyOTMwNCwyOTMw''@;'; put 'put ''NywyOTMwOCwyOTMwOSwyOTMxNCwyOTMxNSwyOTMxNywyOTMxOCwyOTMxOSwyOTMyMCwyOTMyMSwyOTMyNCwyOTMyNiwyOTMyOCwyOTMyOSwyOTMzMSwyOTMzMiwyOTMzMywyOTMzNCwyOTMzNSwyOTMzNiwyOTMzNywyOTMzOCwyOTMzOSwyOTM0MCwyOTM0MSwyOTM0MiwyOTM0NCwyOTM0NSwy''@;'; put 'put ''OTM0NiwyOTM0NywyOTM0OCwyOTM0OSwyOTM1MCwyOTM1MSwyOTM1MiwyOTM1MywyOTM1NCwyOTM1NSwyOTM1OCwyOTM2MSwyOTM2MiwyOTM2MywyOTM2NSwyOTM3MCwyOTM3MSwyOTM3MiwyOTM3MywyOTM3NCwyOTM3NSwyOTM3NiwyOTM4MSwyOTM4MiwyOTM4MywyOTM4NSwyOTM4NiwyOTM4''@;'; put 'put ''NywyOTM4OCwyOTM5MSwyOTM5MywyOTM5NSwyOTM5NiwyOTM5NywyOTM5OCwyOTQwMCwyOTQwMiwyOTQwMyw1ODU2Niw1ODU2Nyw1ODU2OCw1ODU2OSw1ODU3MCw1ODU3MSw1ODU3Miw1ODU3Myw1ODU3NCw1ODU3NSw1ODU3Niw1ODU3Nyw1ODU3OCw1ODU3OSw1ODU4MCw1ODU4MSw1ODU4Miw1''@;'; put 'put ''ODU4Myw1ODU4NCw1ODU4NSw1ODU4Niw1ODU4Nyw1ODU4OCw1ODU4OSw1ODU5MCw1ODU5MSw1ODU5Miw1ODU5Myw1ODU5NCw1ODU5NSw1ODU5Niw1ODU5Nyw1ODU5OCw1ODU5OSw1ODYwMCw1ODYwMSw1ODYwMiw1ODYwMyw1ODYwNCw1ODYwNSw1ODYwNiw1ODYwNyw1ODYwOCw1ODYwOSw1ODYx''@;'; put 'put ''MCw1ODYxMSw1ODYxMiw1ODYxMyw1ODYxNCw1ODYxNSw1ODYxNiw1ODYxNyw1ODYxOCw1ODYxOSw1ODYyMCw1ODYyMSw1ODYyMiw1ODYyMyw1ODYyNCw1ODYyNSw1ODYyNiw1ODYyNyw1ODYyOCw1ODYyOSw1ODYzMCw1ODYzMSw1ODYzMiw1ODYzMyw1ODYzNCw1ODYzNSw1ODYzNiw1ODYzNyw1''@;'; put 'put ''ODYzOCw1ODYzOSw1ODY0MCw1ODY0MSw1ODY0Miw1ODY0Myw1ODY0NCw1ODY0NSw1ODY0Niw1ODY0Nyw1ODY0OCw1ODY0OSw1ODY1MCw1ODY1MSw1ODY1Miw1ODY1Myw1ODY1NCw1ODY1NSw1ODY1Niw1ODY1Nyw1ODY1OCw1ODY1OSw1ODY2MCw1ODY2MSwxMjI4OCwxMjI4OSwxMjI5MCwxODMs''@;'; put 'put ''NzEzLDcxMSwxNjgsMTIyOTEsMTIyOTMsODIxMiw2NTM3NCw4MjE0LDgyMzAsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMxMCwxMjMxMSwxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4NzU4''@;'; put 'put ''LDg3NDMsODc0NCw4NzIxLDg3MTksODc0Niw4NzQ1LDg3MTIsODc1OSw4NzMwLDg4NjksODc0MSw4NzM2LDg5NzgsODg1Nyw4NzQ3LDg3NTAsODgwMSw4NzgwLDg3NzYsODc2NSw4NzMzLDg4MDAsODgxNCw4ODE1LDg4MDQsODgwNSw4NzM0LDg3NTcsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIs''@;'; put 'put ''ODI0Myw4NDUxLDY1Mjg0LDE2NCw2NTUwNCw2NTUwNSw4MjQwLDE2Nyw4NDcwLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw4MjUxLDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsNTg2NjIsNTg2NjMsNTg2NjQsNTg2NjUsNTg2NjYsNTg2''@;'; put 'put ''NjcsNTg2NjgsNTg2NjksNTg2NzAsNTg2NzEsNTg2NzIsNTg2NzMsNTg2NzQsNTg2NzUsNTg2NzYsNTg2NzcsNTg2NzgsNTg2NzksNTg2ODAsNTg2ODEsNTg2ODIsNTg2ODMsNTg2ODQsNTg2ODUsNTg2ODYsNTg2ODcsNTg2ODgsNTg2ODksNTg2OTAsNTg2OTEsNTg2OTIsNTg2OTMsNTg2OTQs''@;'; put 'put ''NTg2OTUsNTg2OTYsNTg2OTcsNTg2OTgsNTg2OTksNTg3MDAsNTg3MDEsNTg3MDIsNTg3MDMsNTg3MDQsNTg3MDUsNTg3MDYsNTg3MDcsNTg3MDgsNTg3MDksNTg3MTAsNTg3MTEsNTg3MTIsNTg3MTMsNTg3MTQsNTg3MTUsNTg3MTYsNTg3MTcsNTg3MTgsNTg3MTksNTg3MjAsNTg3MjEsNTg3''@;'; put 'put ''MjIsNTg3MjMsNTg3MjQsNTg3MjUsNTg3MjYsNTg3MjcsNTg3MjgsNTg3MjksNTg3MzAsNTg3MzEsNTg3MzIsNTg3MzMsNTg3MzQsNTg3MzUsNTg3MzYsNTg3MzcsNTg3MzgsNTg3MzksNTg3NDAsNTg3NDEsNTg3NDIsNTg3NDMsNTg3NDQsNTg3NDUsNTg3NDYsNTg3NDcsNTg3NDgsNTg3NDks''@;'; put 'put ''NTg3NTAsNTg3NTEsNTg3NTIsNTg3NTMsNTg3NTQsNTg3NTUsNTg3NTYsNTg3NTcsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw1OTIzOCw1OTIzOSw1OTI0MCw1OTI0MSw1OTI0Miw1OTI0Myw5MzUyLDkzNTMsOTM1NCw5MzU1LDkzNTYsOTM1Nyw5''@;'; put 'put ''MzU4LDkzNTksOTM2MCw5MzYxLDkzNjIsOTM2Myw5MzY0LDkzNjUsOTM2Niw5MzY3LDkzNjgsOTM2OSw5MzcwLDkzNzEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsOTM0Nyw5MzQ4LDkzNDksOTM1MCw5''@;'; put 'put ''MzUxLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsODM2NCw1OTI0NSwxMjgzMiwxMjgzMywxMjgzNCwxMjgzNSwxMjgzNiwxMjgzNywxMjgzOCwxMjgzOSwxMjg0MCwxMjg0MSw1OTI0Niw1OTI0Nyw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0''@;'; put 'put ''OSw4NTUwLDg1NTEsODU1Miw4NTUzLDg1NTQsODU1NSw1OTI0OCw1OTI0OSw1ODc1OCw1ODc1OSw1ODc2MCw1ODc2MSw1ODc2Miw1ODc2Myw1ODc2NCw1ODc2NSw1ODc2Niw1ODc2Nyw1ODc2OCw1ODc2OSw1ODc3MCw1ODc3MSw1ODc3Miw1ODc3Myw1ODc3NCw1ODc3NSw1ODc3Niw1ODc3Nyw1''@;'; put 'put ''ODc3OCw1ODc3OSw1ODc4MCw1ODc4MSw1ODc4Miw1ODc4Myw1ODc4NCw1ODc4NSw1ODc4Niw1ODc4Nyw1ODc4OCw1ODc4OSw1ODc5MCw1ODc5MSw1ODc5Miw1ODc5Myw1ODc5NCw1ODc5NSw1ODc5Niw1ODc5Nyw1ODc5OCw1ODc5OSw1ODgwMCw1ODgwMSw1ODgwMiw1ODgwMyw1ODgwNCw1ODgw''@;'; put 'put ''NSw1ODgwNiw1ODgwNyw1ODgwOCw1ODgwOSw1ODgxMCw1ODgxMSw1ODgxMiw1ODgxMyw1ODgxNCw1ODgxNSw1ODgxNiw1ODgxNyw1ODgxOCw1ODgxOSw1ODgyMCw1ODgyMSw1ODgyMiw1ODgyMyw1ODgyNCw1ODgyNSw1ODgyNiw1ODgyNyw1ODgyOCw1ODgyOSw1ODgzMCw1ODgzMSw1ODgzMiw1''@;'; put 'put ''ODgzMyw1ODgzNCw1ODgzNSw1ODgzNiw1ODgzNyw1ODgzOCw1ODgzOSw1ODg0MCw1ODg0MSw1ODg0Miw1ODg0Myw1ODg0NCw1ODg0NSw1ODg0Niw1ODg0Nyw1ODg0OCw1ODg0OSw1ODg1MCw1ODg1MSw1ODg1MiwxMjI4OCw2NTI4MSw2NTI4Miw2NTI4Myw2NTUwOSw2NTI4NSw2NTI4Niw2NTI4''@;'; put 'put ''Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2''@;'; put 'put ''NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTM0MCw2NTM0MSw2NTM0''@;'; put 'put ''Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2''@;'; put 'put ''NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1ODg1NCw1ODg1NSw1ODg1Niw1ODg1Nyw1ODg1OCw1ODg1OSw1ODg2MCw1ODg2MSw1ODg2Miw1ODg2Myw1ODg2NCw1ODg2NSw1ODg2Niw1ODg2Nyw1ODg2OCw1ODg2OSw1ODg3MCw1ODg3MSw1ODg3Miw1ODg3Myw1ODg3NCw1ODg3NSw1ODg3''@;'; put 'put ''Niw1ODg3Nyw1ODg3OCw1ODg3OSw1ODg4MCw1ODg4MSw1ODg4Miw1ODg4Myw1ODg4NCw1ODg4NSw1ODg4Niw1ODg4Nyw1ODg4OCw1ODg4OSw1ODg5MCw1ODg5MSw1ODg5Miw1ODg5Myw1ODg5NCw1ODg5NSw1ODg5Niw1ODg5Nyw1ODg5OCw1ODg5OSw1ODkwMCw1ODkwMSw1ODkwMiw1ODkwMyw1''@;'; put 'put ''ODkwNCw1ODkwNSw1ODkwNiw1ODkwNyw1ODkwOCw1ODkwOSw1ODkxMCw1ODkxMSw1ODkxMiw1ODkxMyw1ODkxNCw1ODkxNSw1ODkxNiw1ODkxNyw1ODkxOCw1ODkxOSw1ODkyMCw1ODkyMSw1ODkyMiw1ODkyMyw1ODkyNCw1ODkyNSw1ODkyNiw1ODkyNyw1ODkyOCw1ODkyOSw1ODkzMCw1ODkz''@;'; put 'put ''MSw1ODkzMiw1ODkzMyw1ODkzNCw1ODkzNSw1ODkzNiw1ODkzNyw1ODkzOCw1ODkzOSw1ODk0MCw1ODk0MSw1ODk0Miw1ODk0Myw1ODk0NCw1ODk0NSw1ODk0Niw1ODk0Nyw1ODk0OCw1ODk0OSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwx''@;'; put 'put ''MjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4''@;'; put 'put ''OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwx''@;'; put 'put ''MjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSw1OTI1MCw1OTI1MSw1OTI1Miw1OTI1Myw1OTI1NCw1OTI1NSw1OTI1Niw1OTI1Nyw1OTI1''@;'; put 'put ''OCw1OTI1OSw1OTI2MCw1ODk1MCw1ODk1MSw1ODk1Miw1ODk1Myw1ODk1NCw1ODk1NSw1ODk1Niw1ODk1Nyw1ODk1OCw1ODk1OSw1ODk2MCw1ODk2MSw1ODk2Miw1ODk2Myw1ODk2NCw1ODk2NSw1ODk2Niw1ODk2Nyw1ODk2OCw1ODk2OSw1ODk3MCw1ODk3MSw1ODk3Miw1ODk3Myw1ODk3NCw1''@;'; put 'put ''ODk3NSw1ODk3Niw1ODk3Nyw1ODk3OCw1ODk3OSw1ODk4MCw1ODk4MSw1ODk4Miw1ODk4Myw1ODk4NCw1ODk4NSw1ODk4Niw1ODk4Nyw1ODk4OCw1ODk4OSw1ODk5MCw1ODk5MSw1ODk5Miw1ODk5Myw1ODk5NCw1ODk5NSw1ODk5Niw1ODk5Nyw1ODk5OCw1ODk5OSw1OWUzLDU5MDAxLDU5MDAy''@;'; put 'put ''LDU5MDAzLDU5MDA0LDU5MDA1LDU5MDA2LDU5MDA3LDU5MDA4LDU5MDA5LDU5MDEwLDU5MDExLDU5MDEyLDU5MDEzLDU5MDE0LDU5MDE1LDU5MDE2LDU5MDE3LDU5MDE4LDU5MDE5LDU5MDIwLDU5MDIxLDU5MDIyLDU5MDIzLDU5MDI0LDU5MDI1LDU5MDI2LDU5MDI3LDU5MDI4LDU5MDI5LDU5''@;'; put 'put ''MDMwLDU5MDMxLDU5MDMyLDU5MDMzLDU5MDM0LDU5MDM1LDU5MDM2LDU5MDM3LDU5MDM4LDU5MDM5LDU5MDQwLDU5MDQxLDU5MDQyLDU5MDQzLDU5MDQ0LDU5MDQ1LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYw''@;'; put 'put ''LDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEy''@;'; put 'put ''NDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1''@;'; put 'put ''LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LDU5MjYxLDU5MjYyLDU5MjYzLDU5MjY0LDU5MjY1LDU5MjY2LDU5MjY3LDU5MjY4LDU5''@;'; put 'put ''MDQ2LDU5MDQ3LDU5MDQ4LDU5MDQ5LDU5MDUwLDU5MDUxLDU5MDUyLDU5MDUzLDU5MDU0LDU5MDU1LDU5MDU2LDU5MDU3LDU5MDU4LDU5MDU5LDU5MDYwLDU5MDYxLDU5MDYyLDU5MDYzLDU5MDY0LDU5MDY1LDU5MDY2LDU5MDY3LDU5MDY4LDU5MDY5LDU5MDcwLDU5MDcxLDU5MDcyLDU5MDcz''@;'; put 'put ''LDU5MDc0LDU5MDc1LDU5MDc2LDU5MDc3LDU5MDc4LDU5MDc5LDU5MDgwLDU5MDgxLDU5MDgyLDU5MDgzLDU5MDg0LDU5MDg1LDU5MDg2LDU5MDg3LDU5MDg4LDU5MDg5LDU5MDkwLDU5MDkxLDU5MDkyLDU5MDkzLDU5MDk0LDU5MDk1LDU5MDk2LDU5MDk3LDU5MDk4LDU5MDk5LDU5MTAwLDU5''@;'; put 'put ''MTAxLDU5MTAyLDU5MTAzLDU5MTA0LDU5MTA1LDU5MTA2LDU5MTA3LDU5MTA4LDU5MTA5LDU5MTEwLDU5MTExLDU5MTEyLDU5MTEzLDU5MTE0LDU5MTE1LDU5MTE2LDU5MTE3LDU5MTE4LDU5MTE5LDU5MTIwLDU5MTIxLDU5MTIyLDU5MTIzLDU5MTI0LDU5MTI1LDU5MTI2LDU5MTI3LDU5MTI4''@;'; put 'put ''LDU5MTI5LDU5MTMwLDU5MTMxLDU5MTMyLDU5MTMzLDU5MTM0LDU5MTM1LDU5MTM2LDU5MTM3LDU5MTM4LDU5MTM5LDU5MTQwLDU5MTQxLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkz''@;'; put 'put ''NSw5MzYsOTM3LDU5MjY5LDU5MjcwLDU5MjcxLDU5MjcyLDU5MjczLDU5Mjc0LDU5Mjc1LDU5Mjc2LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDU5Mjc3LDU5Mjc4''@;'; put 'put ''LDU5Mjc5LDU5MjgwLDU5MjgxLDU5MjgyLDU5MjgzLDY1MDc3LDY1MDc4LDY1MDgxLDY1MDgyLDY1MDg3LDY1MDg4LDY1MDg1LDY1MDg2LDY1MDg5LDY1MDkwLDY1MDkxLDY1MDkyLDU5Mjg0LDU5Mjg1LDY1MDgzLDY1MDg0LDY1MDc5LDY1MDgwLDY1MDczLDU5Mjg2LDY1MDc1LDY1MDc2LDU5''@;'; put 'put ''Mjg3LDU5Mjg4LDU5Mjg5LDU5MjkwLDU5MjkxLDU5MjkyLDU5MjkzLDU5Mjk0LDU5Mjk1LDU5MTQyLDU5MTQzLDU5MTQ0LDU5MTQ1LDU5MTQ2LDU5MTQ3LDU5MTQ4LDU5MTQ5LDU5MTUwLDU5MTUxLDU5MTUyLDU5MTUzLDU5MTU0LDU5MTU1LDU5MTU2LDU5MTU3LDU5MTU4LDU5MTU5LDU5MTYw''@;'; put 'put ''LDU5MTYxLDU5MTYyLDU5MTYzLDU5MTY0LDU5MTY1LDU5MTY2LDU5MTY3LDU5MTY4LDU5MTY5LDU5MTcwLDU5MTcxLDU5MTcyLDU5MTczLDU5MTc0LDU5MTc1LDU5MTc2LDU5MTc3LDU5MTc4LDU5MTc5LDU5MTgwLDU5MTgxLDU5MTgyLDU5MTgzLDU5MTg0LDU5MTg1LDU5MTg2LDU5MTg3LDU5''@;'; put 'put ''MTg4LDU5MTg5LDU5MTkwLDU5MTkxLDU5MTkyLDU5MTkzLDU5MTk0LDU5MTk1LDU5MTk2LDU5MTk3LDU5MTk4LDU5MTk5LDU5MjAwLDU5MjAxLDU5MjAyLDU5MjAzLDU5MjA0LDU5MjA1LDU5MjA2LDU5MjA3LDU5MjA4LDU5MjA5LDU5MjEwLDU5MjExLDU5MjEyLDU5MjEzLDU5MjE0LDU5MjE1''@;'; put 'put ''LDU5MjE2LDU5MjE3LDU5MjE4LDU5MjE5LDU5MjIwLDU5MjIxLDU5MjIyLDU5MjIzLDU5MjI0LDU5MjI1LDU5MjI2LDU5MjI3LDU5MjI4LDU5MjI5LDU5MjMwLDU5MjMxLDU5MjMyLDU5MjMzLDU5MjM0LDU5MjM1LDU5MjM2LDU5MjM3LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEw''@;'; put 'put ''MjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDU5Mjk2LDU5Mjk3LDU5Mjk4LDU5Mjk5LDU5MzAwLDU5''@;'; put 'put ''MzAxLDU5MzAyLDU5MzAzLDU5MzA0LDU5MzA1LDU5MzA2LDU5MzA3LDU5MzA4LDU5MzA5LDU5MzEwLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEw''@;'; put 'put ''OTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDU5MzExLDU5MzEyLDU5MzEzLDU5MzE0LDU5MzE1LDU5MzE2LDU5MzE3LDU5MzE4LDU5MzE5LDU5MzIwLDU5MzIxLDU5MzIyLDU5MzIzLDcxNCw3MTUsNzI5LDgyMTEsODIxMyw4MjI5LDgy''@;'; put 'put ''NDUsODQ1Myw4NDU3LDg1OTgsODU5OSw4NjAwLDg2MDEsODcyNSw4NzM1LDg3MzksODc4Niw4ODA2LDg4MDcsODg5NSw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1''@;'; put 'put ''NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTU4MSw5NTgyLDk1ODMsOTU4NCw5NTg1LDk1ODYsOTU4Nyw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYwOSw5NjEwLDk2MTEsOTYxMiw5NjEzLDk2MTQsOTYxNSw5NjE5LDk2''@;'; put 'put ''MjAsOTYyMSw5NjYwLDk2NjEsOTY5OCw5Njk5LDk3MDAsOTcwMSw5NzM3LDg4NTMsMTIzMDYsMTIzMTcsMTIzMTgsNTkzMjQsNTkzMjUsNTkzMjYsNTkzMjcsNTkzMjgsNTkzMjksNTkzMzAsNTkzMzEsNTkzMzIsNTkzMzMsNTkzMzQsMjU3LDIyNSw0NjIsMjI0LDI3NSwyMzMsMjgzLDIzMiwy''@;'; put 'put ''OTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLDIzNCw1OTMsNzc0MywzMjQsMzI4LDUwNSw2MDksNTkzMzcsNTkzMzgsNTkzMzksNTkzNDAsMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1''@;'; put 'put ''NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMs''@;'; put 'put ''MTI1ODQsMTI1ODUsNTkzNDEsNTkzNDIsNTkzNDMsNTkzNDQsNTkzNDUsNTkzNDYsNTkzNDcsNTkzNDgsNTkzNDksNTkzNTAsNTkzNTEsNTkzNTIsNTkzNTMsNTkzNTQsNTkzNTUsNTkzNTYsNTkzNTcsNTkzNTgsNTkzNTksNTkzNjAsNTkzNjEsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIz''@;'; put 'put ''MjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMTI5NjMsMTMxOTgsMTMxOTksMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTcsMTMyNTIsMTMyNjIsMTMyNjUsMTMyNjYsMTMyNjksNjUwNzIsNjU1MDYsNjU1MDgsNTkzNjIsODQ4MSwxMjg0OSw1OTM2Myw4MjA4LDU5MzY0LDU5MzY1LDU5MzY2LDEy''@;'; put 'put ''NTQwLDEyNDQzLDEyNDQ0LDEyNTQxLDEyNTQyLDEyMjk0LDEyNDQ1LDEyNDQ2LDY1MDk3LDY1MDk4LDY1MDk5LDY1MTAwLDY1MTAxLDY1MTAyLDY1MTAzLDY1MTA0LDY1MTA1LDY1MTA2LDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4''@;'; put 'put ''LDY1MTE5LDY1MTIwLDY1MTIxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1MTI4LDY1MTI5LDY1MTMwLDY1MTMxLDEyMzUwLDEyMjcyLDEyMjczLDEyMjc0LDEyMjc1LDEyMjc2LDEyMjc3LDEyMjc4LDEyMjc5LDEyMjgwLDEyMjgxLDEyMjgyLDEyMjgzLDEyMjk1LDU5MzgwLDU5''@;'; put 'put ''MzgxLDU5MzgyLDU5MzgzLDU5Mzg0LDU5Mzg1LDU5Mzg2LDU5Mzg3LDU5Mzg4LDU5Mzg5LDU5MzkwLDU5MzkxLDU5MzkyLDk0NzIsOTQ3Myw5NDc0LDk0NzUsOTQ3Niw5NDc3LDk0NzgsOTQ3OSw5NDgwLDk0ODEsOTQ4Miw5NDgzLDk0ODQsOTQ4NSw5NDg2LDk0ODcsOTQ4OCw5NDg5LDk0OTAs''@;'; put 'put ''OTQ5MSw5NDkyLDk0OTMsOTQ5NCw5NDk1LDk0OTYsOTQ5Nyw5NDk4LDk0OTksOTUwMCw5NTAxLDk1MDIsOTUwMyw5NTA0LDk1MDUsOTUwNiw5NTA3LDk1MDgsOTUwOSw5NTEwLDk1MTEsOTUxMiw5NTEzLDk1MTQsOTUxNSw5NTE2LDk1MTcsOTUxOCw5NTE5LDk1MjAsOTUyMSw5NTIyLDk1MjMs''@;'; put 'put ''OTUyNCw5NTI1LDk1MjYsOTUyNyw5NTI4LDk1MjksOTUzMCw5NTMxLDk1MzIsOTUzMyw5NTM0LDk1MzUsOTUzNiw5NTM3LDk1MzgsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LDk1NDcsNTkzOTMsNTkzOTQsNTkzOTUsNTkzOTYsNTkzOTcsNTkzOTgsNTkzOTksNTk0''@;'; put 'put ''MDAsNTk0MDEsNTk0MDIsNTk0MDMsNTk0MDQsNTk0MDUsNTk0MDYsNTk0MDcsMjk0MDQsMjk0MDUsMjk0MDcsMjk0MTAsMjk0MTEsMjk0MTIsMjk0MTMsMjk0MTQsMjk0MTUsMjk0MTgsMjk0MTksMjk0MjksMjk0MzAsMjk0MzMsMjk0MzcsMjk0MzgsMjk0MzksMjk0NDAsMjk0NDIsMjk0NDQs''@;'; put 'put ''Mjk0NDUsMjk0NDYsMjk0NDcsMjk0NDgsMjk0NDksMjk0NTEsMjk0NTIsMjk0NTMsMjk0NTUsMjk0NTYsMjk0NTcsMjk0NTgsMjk0NjAsMjk0NjQsMjk0NjUsMjk0NjYsMjk0NzEsMjk0NzIsMjk0NzUsMjk0NzYsMjk0NzgsMjk0NzksMjk0ODAsMjk0ODUsMjk0ODcsMjk0ODgsMjk0OTAsMjk0''@;'; put 'put ''OTEsMjk0OTMsMjk0OTQsMjk0OTgsMjk0OTksMjk1MDAsMjk1MDEsMjk1MDQsMjk1MDUsMjk1MDYsMjk1MDcsMjk1MDgsMjk1MDksMjk1MTAsMjk1MTEsMjk1MTIsMjk1MTMsMjk1MTQsMjk1MTUsMjk1MTYsMjk1MTgsMjk1MTksMjk1MjEsMjk1MjMsMjk1MjQsMjk1MjUsMjk1MjYsMjk1Mjgs''@;'; put 'put ''Mjk1MjksMjk1MzAsMjk1MzEsMjk1MzIsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzcsMjk1MzgsMjk1MzksMjk1NDAsMjk1NDEsMjk1NDIsMjk1NDMsMjk1NDQsMjk1NDUsMjk1NDYsMjk1NDcsMjk1NTAsMjk1NTIsMjk1NTMsNTczNDQsNTczNDUsNTczNDYsNTczNDcsNTczNDgsNTczNDksNTcz''@;'; put 'put ''NTAsNTczNTEsNTczNTIsNTczNTMsNTczNTQsNTczNTUsNTczNTYsNTczNTcsNTczNTgsNTczNTksNTczNjAsNTczNjEsNTczNjIsNTczNjMsNTczNjQsNTczNjUsNTczNjYsNTczNjcsNTczNjgsNTczNjksNTczNzAsNTczNzEsNTczNzIsNTczNzMsNTczNzQsNTczNzUsNTczNzYsNTczNzcs''@;'; put 'put ''NTczNzgsNTczNzksNTczODAsNTczODEsNTczODIsNTczODMsNTczODQsNTczODUsNTczODYsNTczODcsNTczODgsNTczODksNTczOTAsNTczOTEsNTczOTIsNTczOTMsNTczOTQsNTczOTUsNTczOTYsNTczOTcsNTczOTgsNTczOTksNTc0MDAsNTc0MDEsNTc0MDIsNTc0MDMsNTc0MDQsNTc0''@;'; put 'put ''MDUsNTc0MDYsNTc0MDcsNTc0MDgsNTc0MDksNTc0MTAsNTc0MTEsNTc0MTIsNTc0MTMsNTc0MTQsNTc0MTUsNTc0MTYsNTc0MTcsNTc0MTgsNTc0MTksNTc0MjAsNTc0MjEsNTc0MjIsNTc0MjMsNTc0MjQsNTc0MjUsNTc0MjYsNTc0MjcsNTc0MjgsNTc0MjksNTc0MzAsNTc0MzEsNTc0MzIs''@;'; put 'put ''NTc0MzMsNTc0MzQsNTc0MzUsNTc0MzYsNTc0MzcsMjk1NTQsMjk1NTUsMjk1NTYsMjk1NTcsMjk1NTgsMjk1NTksMjk1NjAsMjk1NjEsMjk1NjIsMjk1NjMsMjk1NjQsMjk1NjUsMjk1NjcsMjk1NjgsMjk1NjksMjk1NzAsMjk1NzEsMjk1NzMsMjk1NzQsMjk1NzYsMjk1NzgsMjk1ODAsMjk1''@;'; put 'put ''ODEsMjk1ODMsMjk1ODQsMjk1ODYsMjk1ODcsMjk1ODgsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTMsMjk1OTQsMjk1OTYsMjk1OTcsMjk1OTgsMjk2MDAsMjk2MDEsMjk2MDMsMjk2MDQsMjk2MDUsMjk2MDYsMjk2MDcsMjk2MDgsMjk2MTAsMjk2MTIsMjk2MTMsMjk2MTcsMjk2MjAsMjk2MjEs''@;'; put 'put ''Mjk2MjIsMjk2MjQsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzAsMjk2MzEsMjk2MzMsMjk2MzUsMjk2MzYsMjk2MzcsMjk2MzgsMjk2MzksMjk2NDMsMjk2NDQsMjk2NDYsMjk2NTAsMjk2NTEsMjk2NTIsMjk2NTMsMjk2NTQsMjk2NTUsMjk2NTYsMjk2NTgsMjk2NTksMjk2NjAsMjk2NjEsMjk2''@;'; put 'put ''NjMsMjk2NjUsMjk2NjYsMjk2NjcsMjk2NjgsMjk2NzAsMjk2NzIsMjk2NzQsMjk2NzUsMjk2NzYsMjk2NzgsMjk2NzksMjk2ODAsMjk2ODEsMjk2ODMsMjk2ODQsMjk2ODUsMjk2ODYsMjk2ODcsNTc0MzgsNTc0MzksNTc0NDAsNTc0NDEsNTc0NDIsNTc0NDMsNTc0NDQsNTc0NDUsNTc0NDYs''@;'; put 'put ''NTc0NDcsNTc0NDgsNTc0NDksNTc0NTAsNTc0NTEsNTc0NTIsNTc0NTMsNTc0NTQsNTc0NTUsNTc0NTYsNTc0NTcsNTc0NTgsNTc0NTksNTc0NjAsNTc0NjEsNTc0NjIsNTc0NjMsNTc0NjQsNTc0NjUsNTc0NjYsNTc0NjcsNTc0NjgsNTc0NjksNTc0NzAsNTc0NzEsNTc0NzIsNTc0NzMsNTc0''@;'; put 'put ''NzQsNTc0NzUsNTc0NzYsNTc0NzcsNTc0NzgsNTc0NzksNTc0ODAsNTc0ODEsNTc0ODIsNTc0ODMsNTc0ODQsNTc0ODUsNTc0ODYsNTc0ODcsNTc0ODgsNTc0ODksNTc0OTAsNTc0OTEsNTc0OTIsNTc0OTMsNTc0OTQsNTc0OTUsNTc0OTYsNTc0OTcsNTc0OTgsNTc0OTksNTc1MDAsNTc1MDEs''@;'; put 'put ''NTc1MDIsNTc1MDMsNTc1MDQsNTc1MDUsNTc1MDYsNTc1MDcsNTc1MDgsNTc1MDksNTc1MTAsNTc1MTEsNTc1MTIsNTc1MTMsNTc1MTQsNTc1MTUsNTc1MTYsNTc1MTcsNTc1MTgsNTc1MTksNTc1MjAsNTc1MjEsNTc1MjIsNTc1MjMsNTc1MjQsNTc1MjUsNTc1MjYsNTc1MjcsNTc1MjgsNTc1''@;'; put 'put ''MjksNTc1MzAsNTc1MzEsMjk2ODgsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTIsMjk2OTMsMjk2OTQsMjk2OTUsMjk2OTYsMjk2OTcsMjk2OTgsMjk3MDAsMjk3MDMsMjk3MDQsMjk3MDcsMjk3MDgsMjk3MDksMjk3MTAsMjk3MTMsMjk3MTQsMjk3MTUsMjk3MTYsMjk3MTcsMjk3MTgsMjk3MTks''@;'; put 'put ''Mjk3MjAsMjk3MjEsMjk3MjQsMjk3MjUsMjk3MjYsMjk3MjcsMjk3MjgsMjk3MjksMjk3MzEsMjk3MzIsMjk3MzUsMjk3MzcsMjk3MzksMjk3NDEsMjk3NDMsMjk3NDUsMjk3NDYsMjk3NTEsMjk3NTIsMjk3NTMsMjk3NTQsMjk3NTUsMjk3NTcsMjk3NTgsMjk3NTksMjk3NjAsMjk3NjIsMjk3''@;'; put 'put ''NjMsMjk3NjQsMjk3NjUsMjk3NjYsMjk3NjcsMjk3NjgsMjk3NjksMjk3NzAsMjk3NzEsMjk3NzIsMjk3NzMsMjk3NzQsMjk3NzUsMjk3NzYsMjk3NzcsMjk3NzgsMjk3NzksMjk3ODAsMjk3ODIsMjk3ODQsMjk3ODksMjk3OTIsMjk3OTMsMjk3OTQsMjk3OTUsMjk3OTYsMjk3OTcsMjk3OTgs''@;'; put 'put ''Mjk3OTksMjk4MDAsMjk4MDEsMjk4MDIsMjk4MDMsMjk4MDQsMjk4MDYsMjk4MDcsMjk4MDksMjk4MTAsMjk4MTEsMjk4MTIsMjk4MTMsMjk4MTYsMjk4MTcsMjk4MTgsNTc1MzIsNTc1MzMsNTc1MzQsNTc1MzUsNTc1MzYsNTc1MzcsNTc1MzgsNTc1MzksNTc1NDAsNTc1NDEsNTc1NDIsNTc1''@;'; put 'put ''NDMsNTc1NDQsNTc1NDUsNTc1NDYsNTc1NDcsNTc1NDgsNTc1NDksNTc1NTAsNTc1NTEsNTc1NTIsNTc1NTMsNTc1NTQsNTc1NTUsNTc1NTYsNTc1NTcsNTc1NTgsNTc1NTksNTc1NjAsNTc1NjEsNTc1NjIsNTc1NjMsNTc1NjQsNTc1NjUsNTc1NjYsNTc1NjcsNTc1NjgsNTc1NjksNTc1NzAs''@;'; put 'put ''NTc1NzEsNTc1NzIsNTc1NzMsNTc1NzQsNTc1NzUsNTc1NzYsNTc1NzcsNTc1NzgsNTc1NzksNTc1ODAsNTc1ODEsNTc1ODIsNTc1ODMsNTc1ODQsNTc1ODUsNTc1ODYsNTc1ODcsNTc1ODgsNTc1ODksNTc1OTAsNTc1OTEsNTc1OTIsNTc1OTMsNTc1OTQsNTc1OTUsNTc1OTYsNTc1OTcsNTc1''@;'; put 'put ''OTgsNTc1OTksNTc2MDAsNTc2MDEsNTc2MDIsNTc2MDMsNTc2MDQsNTc2MDUsNTc2MDYsNTc2MDcsNTc2MDgsNTc2MDksNTc2MTAsNTc2MTEsNTc2MTIsNTc2MTMsNTc2MTQsNTc2MTUsNTc2MTYsNTc2MTcsNTc2MTgsNTc2MTksNTc2MjAsNTc2MjEsNTc2MjIsNTc2MjMsNTc2MjQsNTc2MjUs''@;'; put 'put ''Mjk4MTksMjk4MjAsMjk4MjEsMjk4MjMsMjk4MjYsMjk4MjgsMjk4MjksMjk4MzAsMjk4MzIsMjk4MzMsMjk4MzQsMjk4MzYsMjk4MzcsMjk4MzksMjk4NDEsMjk4NDIsMjk4NDMsMjk4NDQsMjk4NDUsMjk4NDYsMjk4NDcsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTEsMjk4NTMsMjk4NTUsMjk4''@;'; put 'put ''NTYsMjk4NTcsMjk4NTgsMjk4NTksMjk4NjAsMjk4NjEsMjk4NjIsMjk4NjYsMjk4NjcsMjk4NjgsMjk4NjksMjk4NzAsMjk4NzEsMjk4NzIsMjk4NzMsMjk4NzQsMjk4NzUsMjk4NzYsMjk4NzcsMjk4NzgsMjk4NzksMjk4ODAsMjk4ODEsMjk4ODMsMjk4ODQsMjk4ODUsMjk4ODYsMjk4ODcs''@;'; put 'put ''Mjk4ODgsMjk4ODksMjk4OTAsMjk4OTEsMjk4OTIsMjk4OTMsMjk4OTQsMjk4OTUsMjk4OTYsMjk4OTcsMjk4OTgsMjk4OTksMjk5MDAsMjk5MDEsMjk5MDIsMjk5MDMsMjk5MDQsMjk5MDUsMjk5MDcsMjk5MDgsMjk5MDksMjk5MTAsMjk5MTEsMjk5MTIsMjk5MTMsMjk5MTQsMjk5MTUsMjk5''@;'; put 'put ''MTcsMjk5MTksMjk5MjEsMjk5MjUsMjk5MjcsMjk5MjgsMjk5MjksMjk5MzAsMjk5MzEsMjk5MzIsMjk5MzMsMjk5MzYsMjk5MzcsMjk5MzgsNTc2MjYsNTc2MjcsNTc2MjgsNTc2MjksNTc2MzAsNTc2MzEsNTc2MzIsNTc2MzMsNTc2MzQsNTc2MzUsNTc2MzYsNTc2MzcsNTc2MzgsNTc2Mzks''@;'; put 'put ''NTc2NDAsNTc2NDEsNTc2NDIsNTc2NDMsNTc2NDQsNTc2NDUsNTc2NDYsNTc2NDcsNTc2NDgsNTc2NDksNTc2NTAsNTc2NTEsNTc2NTIsNTc2NTMsNTc2NTQsNTc2NTUsNTc2NTYsNTc2NTcsNTc2NTgsNTc2NTksNTc2NjAsNTc2NjEsNTc2NjIsNTc2NjMsNTc2NjQsNTc2NjUsNTc2NjYsNTc2''@;'; put 'put ''NjcsNTc2NjgsNTc2NjksNTc2NzAsNTc2NzEsNTc2NzIsNTc2NzMsNTc2NzQsNTc2NzUsNTc2NzYsNTc2NzcsNTc2NzgsNTc2NzksNTc2ODAsNTc2ODEsNTc2ODIsNTc2ODMsNTc2ODQsNTc2ODUsNTc2ODYsNTc2ODcsNTc2ODgsNTc2ODksNTc2OTAsNTc2OTEsNTc2OTIsNTc2OTMsNTc2OTQs''@;'; put 'put ''NTc2OTUsNTc2OTYsNTc2OTcsNTc2OTgsNTc2OTksNTc3MDAsNTc3MDEsNTc3MDIsNTc3MDMsNTc3MDQsNTc3MDUsNTc3MDYsNTc3MDcsNTc3MDgsNTc3MDksNTc3MTAsNTc3MTEsNTc3MTIsNTc3MTMsNTc3MTQsNTc3MTUsNTc3MTYsNTc3MTcsNTc3MTgsNTc3MTksMjk5MzksMjk5NDEsMjk5''@;'; put 'put ''NDQsMjk5NDUsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NDksMjk5NTAsMjk5NTIsMjk5NTMsMjk5NTQsMjk5NTUsMjk5NTcsMjk5NTgsMjk5NTksMjk5NjAsMjk5NjEsMjk5NjIsMjk5NjMsMjk5NjQsMjk5NjYsMjk5NjgsMjk5NzAsMjk5NzIsMjk5NzMsMjk5NzQsMjk5NzUsMjk5NzksMjk5ODEs''@;'; put 'put ''Mjk5ODIsMjk5ODQsMjk5ODUsMjk5ODYsMjk5ODcsMjk5ODgsMjk5OTAsMjk5OTEsMjk5OTQsMjk5OTgsMzAwMDQsMzAwMDYsMzAwMDksMzAwMTIsMzAwMTMsMzAwMTUsMzAwMTcsMzAwMTgsMzAwMTksMzAwMjAsMzAwMjIsMzAwMjMsMzAwMjUsMzAwMjYsMzAwMjksMzAwMzIsMzAwMzMsMzAw''@;'; put 'put ''MzQsMzAwMzUsMzAwMzcsMzAwMzgsMzAwMzksMzAwNDAsMzAwNDUsMzAwNDYsMzAwNDcsMzAwNDgsMzAwNDksMzAwNTAsMzAwNTEsMzAwNTIsMzAwNTUsMzAwNTYsMzAwNTcsMzAwNTksMzAwNjAsMzAwNjEsMzAwNjIsMzAwNjMsMzAwNjQsMzAwNjUsMzAwNjcsMzAwNjksMzAwNzAsMzAwNzEs''@;'; put 'put ''MzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODAsMzAwODEsMzAwODIsMzAwODQsMzAwODUsMzAwODcsNTc3MjAsNTc3MjEsNTc3MjIsNTc3MjMsNTc3MjQsNTc3MjUsNTc3MjYsNTc3MjcsNTc3MjgsNTc3MjksNTc3MzAsNTc3MzEsNTc3MzIsNTc3MzMsNTc3MzQsNTc3MzUsNTc3''@;'; put 'put ''MzYsNTc3MzcsNTc3MzgsNTc3MzksNTc3NDAsNTc3NDEsNTc3NDIsNTc3NDMsNTc3NDQsNTc3NDUsNTc3NDYsNTc3NDcsNTc3NDgsNTc3NDksNTc3NTAsNTc3NTEsNTc3NTIsNTc3NTMsNTc3NTQsNTc3NTUsNTc3NTYsNTc3NTcsNTc3NTgsNTc3NTksNTc3NjAsNTc3NjEsNTc3NjIsNTc3NjMs''@;'; put 'put ''NTc3NjQsNTc3NjUsNTc3NjYsNTc3NjcsNTc3NjgsNTc3NjksNTc3NzAsNTc3NzEsNTc3NzIsNTc3NzMsNTc3NzQsNTc3NzUsNTc3NzYsNTc3NzcsNTc3NzgsNTc3NzksNTc3ODAsNTc3ODEsNTc3ODIsNTc3ODMsNTc3ODQsNTc3ODUsNTc3ODYsNTc3ODcsNTc3ODgsNTc3ODksNTc3OTAsNTc3''@;'; put 'put ''OTEsNTc3OTIsNTc3OTMsNTc3OTQsNTc3OTUsNTc3OTYsNTc3OTcsNTc3OTgsNTc3OTksNTc4MDAsNTc4MDEsNTc4MDIsNTc4MDMsNTc4MDQsNTc4MDUsNTc4MDYsNTc4MDcsNTc4MDgsNTc4MDksNTc4MTAsNTc4MTEsNTc4MTIsNTc4MTMsMzAwODgsMzAwODksMzAwOTAsMzAwOTIsMzAwOTMs''@;'; put 'put ''MzAwOTQsMzAwOTYsMzAwOTksMzAxMDEsMzAxMDQsMzAxMDcsMzAxMDgsMzAxMTAsMzAxMTQsMzAxMTgsMzAxMTksMzAxMjAsMzAxMjEsMzAxMjIsMzAxMjUsMzAxMzQsMzAxMzUsMzAxMzgsMzAxMzksMzAxNDMsMzAxNDQsMzAxNDUsMzAxNTAsMzAxNTUsMzAxNTYsMzAxNTgsMzAxNTksMzAx''@;'; put 'put ''NjAsMzAxNjEsMzAxNjMsMzAxNjcsMzAxNjksMzAxNzAsMzAxNzIsMzAxNzMsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODEsMzAxODUsMzAxODgsMzAxODksMzAxOTAsMzAxOTEsMzAxOTQsMzAxOTUsMzAxOTcsMzAxOTgsMzAxOTksMzAyMDAsMzAyMDIsMzAyMDMsMzAyMDUsMzAyMDYsMzAyMTAs''@;'; put 'put ''MzAyMTIsMzAyMTQsMzAyMTUsMzAyMTYsMzAyMTcsMzAyMTksMzAyMjEsMzAyMjIsMzAyMjMsMzAyMjUsMzAyMjYsMzAyMjcsMzAyMjgsMzAyMzAsMzAyMzQsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDEsMzAyNDMsMzAyNDcsMzAyNDgsMzAyNTIsMzAyNTQsMzAyNTUsMzAyNTcsMzAyNTgsMzAy''@;'; put 'put ''NjIsMzAyNjMsMzAyNjUsMzAyNjYsMzAyNjcsMzAyNjksMzAyNzMsMzAyNzQsMzAyNzYsNTc4MTQsNTc4MTUsNTc4MTYsNTc4MTcsNTc4MTgsNTc4MTksNTc4MjAsNTc4MjEsNTc4MjIsNTc4MjMsNTc4MjQsNTc4MjUsNTc4MjYsNTc4MjcsNTc4MjgsNTc4MjksNTc4MzAsNTc4MzEsNTc4MzIs''@;'; put 'put ''NTc4MzMsNTc4MzQsNTc4MzUsNTc4MzYsNTc4MzcsNTc4MzgsNTc4MzksNTc4NDAsNTc4NDEsNTc4NDIsNTc4NDMsNTc4NDQsNTc4NDUsNTc4NDYsNTc4NDcsNTc4NDgsNTc4NDksNTc4NTAsNTc4NTEsNTc4NTIsNTc4NTMsNTc4NTQsNTc4NTUsNTc4NTYsNTc4NTcsNTc4NTgsNTc4NTksNTc4''@;'; put 'put ''NjAsNTc4NjEsNTc4NjIsNTc4NjMsNTc4NjQsNTc4NjUsNTc4NjYsNTc4NjcsNTc4NjgsNTc4NjksNTc4NzAsNTc4NzEsNTc4NzIsNTc4NzMsNTc4NzQsNTc4NzUsNTc4NzYsNTc4NzcsNTc4NzgsNTc4NzksNTc4ODAsNTc4ODEsNTc4ODIsNTc4ODMsNTc4ODQsNTc4ODUsNTc4ODYsNTc4ODcs''@;'; put 'put ''NTc4ODgsNTc4ODksNTc4OTAsNTc4OTEsNTc4OTIsNTc4OTMsNTc4OTQsNTc4OTUsNTc4OTYsNTc4OTcsNTc4OTgsNTc4OTksNTc5MDAsNTc5MDEsNTc5MDIsNTc5MDMsNTc5MDQsNTc5MDUsNTc5MDYsNTc5MDcsMzAyNzcsMzAyNzgsMzAyNzksMzAyODAsMzAyODEsMzAyODIsMzAyODMsMzAy''@;'; put 'put ''ODYsMzAyODcsMzAyODgsMzAyODksMzAyOTAsMzAyOTEsMzAyOTMsMzAyOTUsMzAyOTYsMzAyOTcsMzAyOTgsMzAyOTksMzAzMDEsMzAzMDMsMzAzMDQsMzAzMDUsMzAzMDYsMzAzMDgsMzAzMDksMzAzMTAsMzAzMTEsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTYsMzAzMTcsMzAzMTgsMzAzMjAs''@;'; put 'put ''MzAzMjEsMzAzMjIsMzAzMjMsMzAzMjQsMzAzMjUsMzAzMjYsMzAzMjcsMzAzMjksMzAzMzAsMzAzMzIsMzAzMzUsMzAzMzYsMzAzMzcsMzAzMzksMzAzNDEsMzAzNDUsMzAzNDYsMzAzNDgsMzAzNDksMzAzNTEsMzAzNTIsMzAzNTQsMzAzNTYsMzAzNTcsMzAzNTksMzAzNjAsMzAzNjIsMzAz''@;'; put 'put ''NjMsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjcsMzAzNjgsMzAzNjksMzAzNzAsMzAzNzEsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzcsMzAzNzgsMzAzNzksMzAzODAsMzAzODEsMzAzODMsMzAzODQsMzAzODcsMzAzODksMzAzOTAsMzAzOTEsMzAzOTIsMzAzOTMsMzAzOTQsMzAzOTUs''@;'; put 'put ''MzAzOTYsMzAzOTcsMzAzOTgsMzA0MDAsMzA0MDEsMzA0MDMsMjE4MzQsMzg0NjMsMjI0NjcsMjUzODQsMjE3MTAsMjE3NjksMjE2OTYsMzAzNTMsMzAyODQsMzQxMDgsMzA3MDIsMzM0MDYsMzA4NjEsMjkyMzMsMzg1NTIsMzg3OTcsMjc2ODgsMjM0MzMsMjA0NzQsMjUzNTMsMjYyNjMsMjM3''@;'; put 'put ''MzYsMzMwMTgsMjY2OTYsMzI5NDIsMjYxMTQsMzA0MTQsMjA5ODUsMjU5NDIsMjkxMDAsMzI3NTMsMzQ5NDgsMjA2NTgsMjI4ODUsMjUwMzQsMjg1OTUsMzM0NTMsMjU0MjAsMjUxNzAsMjE0ODUsMjE1NDMsMzE0OTQsMjA4NDMsMzAxMTYsMjQwNTIsMjUzMDAsMzYyOTksMzg3NzQsMjUyMjYs''@;'; put 'put ''MzI3OTMsMjIzNjUsMzg3MTIsMzI2MTAsMjkyNDAsMzAzMzMsMjY1NzUsMzAzMzQsMjU2NzAsMjAzMzYsMzYxMzMsMjUzMDgsMzEyNTUsMjYwMDEsMjk2NzcsMjU2NDQsMjUyMDMsMzMzMjQsMzkwNDEsMjY0OTUsMjkyNTYsMjUxOTgsMjUyOTIsMjAyNzYsMjk5MjMsMjEzMjIsMjExNTAsMzI0''@;'; put 'put ''NTgsMzcwMzAsMjQxMTAsMjY3NTgsMjcwMzYsMzMxNTIsMzI0NjUsMjY4MzQsMzA5MTcsMzQ0NDQsMzgyMjUsMjA2MjEsMzU4NzYsMzM1MDIsMzI5OTAsMjEyNTMsMzUwOTAsMjEwOTMsMzA0MDQsMzA0MDcsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTksMzA0MjEsMzA0MjUsMzA0MjYsMzA0Mjgs''@;'; put 'put ''MzA0MjksMzA0MzAsMzA0MzIsMzA0MzMsMzA0MzQsMzA0MzUsMzA0MzYsMzA0MzgsMzA0MzksMzA0NDAsMzA0NDEsMzA0NDIsMzA0NDMsMzA0NDQsMzA0NDUsMzA0NDgsMzA0NTEsMzA0NTMsMzA0NTQsMzA0NTUsMzA0NTgsMzA0NTksMzA0NjEsMzA0NjMsMzA0NjQsMzA0NjYsMzA0NjcsMzA0''@;'; put 'put ''NjksMzA0NzAsMzA0NzQsMzA0NzYsMzA0NzgsMzA0NzksMzA0ODAsMzA0ODEsMzA0ODIsMzA0ODMsMzA0ODQsMzA0ODUsMzA0ODYsMzA0ODcsMzA0ODgsMzA0OTEsMzA0OTIsMzA0OTMsMzA0OTQsMzA0OTcsMzA0OTksMzA1MDAsMzA1MDEsMzA1MDMsMzA1MDYsMzA1MDcsMzA1MDgsMzA1MTAs''@;'; put 'put ''MzA1MTIsMzA1MTMsMzA1MTQsMzA1MTUsMzA1MTYsMzA1MjEsMzA1MjMsMzA1MjUsMzA1MjYsMzA1MjcsMzA1MzAsMzA1MzIsMzA1MzMsMzA1MzQsMzA1MzYsMzA1MzcsMzA1MzgsMzA1MzksMzA1NDAsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NDcsMzA1NDgsMzA1NDksMzA1NTAsMzA1''@;'; put 'put ''NTEsMzA1NTIsMzA1NTMsMzA1NTYsMzQxODAsMzg2NDksMjA0NDUsMjI1NjEsMzkyODEsMjM0NTMsMjUyNjUsMjUyNTMsMjYyOTIsMzU5NjEsNDAwNzcsMjkxOTAsMjY0NzksMzA4NjUsMjQ3NTQsMjEzMjksMjEyNzEsMzY3NDQsMzI5NzIsMzYxMjUsMzgwNDksMjA0OTMsMjkzODQsMjI3OTEs''@;'; put 'put ''MjQ4MTEsMjg5NTMsMzQ5ODcsMjI4NjgsMzM1MTksMjY0MTIsMzE1MjgsMjM4NDksMzI1MDMsMjk5OTcsMjc4OTMsMzY0NTQsMzY4NTYsMzY5MjQsNDA3NjMsMjc2MDQsMzcxNDUsMzE1MDgsMjQ0NDQsMzA4ODcsMzQwMDYsMzQxMDksMjc2MDUsMjc2MDksMjc2MDYsMjQwNjUsMjQxOTksMzAy''@;'; put 'put ''MDEsMzgzODEsMjU5NDksMjQzMzAsMjQ1MTcsMzY3NjcsMjI3MjEsMzMyMTgsMzY5OTEsMzg0OTEsMzg4MjksMzY3OTMsMzI1MzQsMzYxNDAsMjUxNTMsMjA0MTUsMjE0NjQsMjEzNDIsMzY3NzYsMzY3NzcsMzY3NzksMzY5NDEsMjY2MzEsMjQ0MjYsMzMxNzYsMzQ5MjAsNDAxNTAsMjQ5NzEs''@;'; put 'put ''MjEwMzUsMzAyNTAsMjQ0MjgsMjU5OTYsMjg2MjYsMjgzOTIsMjM0ODYsMjU2NzIsMjA4NTMsMjA5MTIsMjY1NjQsMTk5OTMsMzExNzcsMzkyOTIsMjg4NTEsMzA1NTcsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjQsMzA1NjcsMzA1NjksMzA1NzAsMzA1NzMsMzA1NzQsMzA1NzUsMzA1NzYsMzA1''@;'; put 'put ''NzcsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODEsMzA1ODIsMzA1ODMsMzA1ODQsMzA1ODYsMzA1ODcsMzA1ODgsMzA1OTMsMzA1OTQsMzA1OTUsMzA1OTgsMzA1OTksMzA2MDAsMzA2MDEsMzA2MDIsMzA2MDMsMzA2MDcsMzA2MDgsMzA2MTEsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTUsMzA2MTYs''@;'; put 'put ''MzA2MTcsMzA2MTgsMzA2MTksMzA2MjAsMzA2MjEsMzA2MjIsMzA2MjUsMzA2MjcsMzA2MjgsMzA2MzAsMzA2MzIsMzA2MzUsMzA2MzcsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDIsMzA2NDQsMzA2NDYsMzA2NDcsMzA2NDgsMzA2NDksMzA2NTAsMzA2NTIsMzA2NTQsMzA2NTYsMzA2NTcsMzA2''@;'; put 'put ''NTgsMzA2NTksMzA2NjAsMzA2NjEsMzA2NjIsMzA2NjMsMzA2NjQsMzA2NjUsMzA2NjYsMzA2NjcsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NzIsMzA2NzMsMzA2NzQsMzA2NzUsMzA2NzYsMzA2NzcsMzA2NzgsMzA2ODAsMzA2ODEsMzA2ODIsMzA2ODUsMzA2ODYsMzA2ODcsMzA2ODgsMzA2ODks''@;'; put 'put ''MzA2OTIsMzAxNDksMjQxODIsMjk2MjcsMzM3NjAsMjU3NzMsMjUzMjAsMzgwNjksMjc4NzQsMjEzMzgsMjExODcsMjU2MTUsMzgwODIsMzE2MzYsMjAyNzEsMjQwOTEsMzMzMzQsMzMwNDYsMzMxNjIsMjgxOTYsMjc4NTAsMzk1MzksMjU0MjksMjEzNDAsMjE3NTQsMzQ5MTcsMjI0OTYsMTk5''@;'; put 'put ''ODEsMjQwNjcsMjc0OTMsMzE4MDcsMzcwOTYsMjQ1OTgsMjU4MzAsMjk0NjgsMzUwMDksMjY0NDgsMjUxNjUsMzYxMzAsMzA1NzIsMzYzOTMsMzczMTksMjQ0MjUsMzM3NTYsMzQwODEsMzkxODQsMjE0NDIsMzQ0NTMsMjc1MzEsMjQ4MTMsMjQ4MDgsMjg3OTksMzM0ODUsMzMzMjksMjAxNzks''@;'; put 'put ''Mjc4MTUsMzQyNTUsMjU4MDUsMzE5NjEsMjcxMzMsMjYzNjEsMzM2MDksMjEzOTcsMzE1NzQsMjAzOTEsMjA4NzYsMjc5NzksMjM2MTgsMzY0NjEsMjU1NTQsMjE0NDksMzM1ODAsMzM1OTAsMjY1OTcsMzA5MDAsMjU2NjEsMjM1MTksMjM3MDAsMjQwNDYsMzU4MTUsMjUyODYsMjY2MTIsMzU5''@;'; put 'put ''NjIsMjU2MDAsMjU1MzAsMzQ2MzMsMzkzMDcsMzU4NjMsMzI1NDQsMzgxMzAsMjAxMzUsMzg0MTYsMzkwNzYsMjYxMjQsMjk0NjIsMzA2OTQsMzA2OTYsMzA2OTgsMzA3MDMsMzA3MDQsMzA3MDUsMzA3MDYsMzA3MDgsMzA3MDksMzA3MTEsMzA3MTMsMzA3MTQsMzA3MTUsMzA3MTYsMzA3MjMs''@;'; put 'put ''MzA3MjQsMzA3MjUsMzA3MjYsMzA3MjcsMzA3MjgsMzA3MzAsMzA3MzEsMzA3MzQsMzA3MzUsMzA3MzYsMzA3MzksMzA3NDEsMzA3NDUsMzA3NDcsMzA3NTAsMzA3NTIsMzA3NTMsMzA3NTQsMzA3NTYsMzA3NjAsMzA3NjIsMzA3NjMsMzA3NjYsMzA3NjcsMzA3NjksMzA3NzAsMzA3NzEsMzA3''@;'; put 'put ''NzMsMzA3NzQsMzA3ODEsMzA3ODMsMzA3ODUsMzA3ODYsMzA3ODcsMzA3ODgsMzA3OTAsMzA3OTIsMzA3OTMsMzA3OTQsMzA3OTUsMzA3OTcsMzA3OTksMzA4MDEsMzA4MDMsMzA4MDQsMzA4MDgsMzA4MDksMzA4MTAsMzA4MTEsMzA4MTIsMzA4MTQsMzA4MTUsMzA4MTYsMzA4MTcsMzA4MTgs''@;'; put 'put ''MzA4MTksMzA4MjAsMzA4MjEsMzA4MjIsMzA4MjMsMzA4MjQsMzA4MjUsMzA4MzEsMzA4MzIsMzA4MzMsMzA4MzQsMzA4MzUsMzA4MzYsMzA4MzcsMzA4MzgsMzA4NDAsMzA4NDEsMzA4NDIsMzA4NDMsMzA4NDUsMzA4NDYsMzA4NDcsMzA4NDgsMzA4NDksMzA4NTAsMzA4NTEsMjIzMzAsMjM1''@;'; put 'put ''ODEsMjQxMjAsMzgyNzEsMjA2MDcsMzI5MjgsMjEzNzgsMjU5NTAsMzAwMjEsMjE4MDksMjA1MTMsMzYyMjksMjUyMjAsMzgwNDYsMjYzOTcsMjIwNjYsMjg1MjYsMjQwMzQsMjE1NTcsMjg4MTgsMzY3MTAsMjUxOTksMjU3NjQsMjU1MDcsMjQ0NDMsMjg1NTIsMzcxMDgsMzMyNTEsMzY3ODQs''@;'; put 'put ''MjM1NzYsMjYyMTYsMjQ1NjEsMjc3ODUsMzg0NzIsMzYyMjUsMzQ5MjQsMjU3NDUsMzEyMTYsMjI0NzgsMjcyMjUsMjUxMDQsMjE1NzYsMjAwNTYsMzEyNDMsMjQ4MDksMjg1NDgsMzU4MDIsMjUyMTUsMzY4OTQsMzk1NjMsMzEyMDQsMjE1MDcsMzAxOTYsMjUzNDUsMjEyNzMsMjc3NDQsMzY4''@;'; put 'put ''MzEsMjQzNDcsMzk1MzYsMzI4MjcsNDA4MzEsMjAzNjAsMjM2MTAsMzYxOTYsMzI3MDksMjYwMjEsMjg4NjEsMjA4MDUsMjA5MTQsMzQ0MTEsMjM4MTUsMjM0NTYsMjUyNzcsMzcyMjgsMzAwNjgsMzYzNjQsMzEyNjQsMjQ4MzMsMzE2MDksMjAxNjcsMzI1MDQsMzA1OTcsMTk5ODUsMzMyNjEs''@;'; put 'put ''MjEwMjEsMjA5ODYsMjcyNDksMjE0MTYsMzY0ODcsMzgxNDgsMzg2MDcsMjgzNTMsMzg1MDAsMjY5NzAsMzA4NTIsMzA4NTMsMzA4NTQsMzA4NTYsMzA4NTgsMzA4NTksMzA4NjMsMzA4NjQsMzA4NjYsMzA4NjgsMzA4NjksMzA4NzAsMzA4NzMsMzA4NzcsMzA4NzgsMzA4ODAsMzA4ODIsMzA4''@;'; put 'put ''ODQsMzA4ODYsMzA4ODgsMzA4ODksMzA4OTAsMzA4OTEsMzA4OTIsMzA4OTMsMzA4OTQsMzA4OTUsMzA5MDEsMzA5MDIsMzA5MDMsMzA5MDQsMzA5MDYsMzA5MDcsMzA5MDgsMzA5MDksMzA5MTEsMzA5MTIsMzA5MTQsMzA5MTUsMzA5MTYsMzA5MTgsMzA5MTksMzA5MjAsMzA5MjQsMzA5MjUs''@;'; put 'put ''MzA5MjYsMzA5MjcsMzA5MjksMzA5MzAsMzA5MzEsMzA5MzQsMzA5MzUsMzA5MzYsMzA5MzgsMzA5MzksMzA5NDAsMzA5NDEsMzA5NDIsMzA5NDMsMzA5NDQsMzA5NDUsMzA5NDYsMzA5NDcsMzA5NDgsMzA5NDksMzA5NTAsMzA5NTEsMzA5NTMsMzA5NTQsMzA5NTUsMzA5NTcsMzA5NTgsMzA5''@;'; put 'put ''NTksMzA5NjAsMzA5NjEsMzA5NjMsMzA5NjUsMzA5NjYsMzA5NjgsMzA5NjksMzA5NzEsMzA5NzIsMzA5NzMsMzA5NzQsMzA5NzUsMzA5NzYsMzA5NzgsMzA5NzksMzA5ODAsMzA5ODIsMzA5ODMsMzA5ODQsMzA5ODUsMzA5ODYsMzA5ODcsMzA5ODgsMzA3ODQsMjA2NDgsMzA2NzksMjU2MTYs''@;'; put 'put ''MzUzMDIsMjI3ODgsMjU1NzEsMjQwMjksMzEzNTksMjY5NDEsMjAyNTYsMzMzMzcsMjE5MTIsMjAwMTgsMzAxMjYsMzEzODMsMjQxNjIsMjQyMDIsMzgzODMsMjEwMTksMjE1NjEsMjg4MTAsMjU0NjIsMzgxODAsMjI0MDIsMjYxNDksMjY5NDMsMzcyNTUsMjE3NjcsMjgxNDcsMzI0MzEsMzQ4''@;'; put 'put ''NTAsMjUxMzksMzI0OTYsMzAxMzMsMzM1NzYsMzA5MTMsMzg2MDQsMzY3NjYsMjQ5MDQsMjk5NDMsMzU3ODksMjc0OTIsMjEwNTAsMzYxNzYsMjc0MjUsMzI4NzQsMzM5MDUsMjIyNTcsMjEyNTQsMjAxNzQsMTk5OTUsMjA5NDUsMzE4OTUsMzcyNTksMzE3NTEsMjA0MTksMzY0NzksMzE3MTMs''@;'; put 'put ''MzEzODgsMjU3MDMsMjM4MjgsMjA2NTIsMzMwMzAsMzAyMDksMzE5MjksMjgxNDAsMzI3MzYsMjY0NDksMjMzODQsMjM1NDQsMzA5MjMsMjU3NzQsMjU2MTksMjU1MTQsMjUzODcsMzgxNjksMjU2NDUsMzY3OTgsMzE1NzIsMzAyNDksMjUxNzEsMjI4MjMsMjE1NzQsMjc1MTMsMjA2NDMsMjUx''@;'; put 'put ''NDAsMjQxMDIsMjc1MjYsMjAxOTUsMzYxNTEsMzQ5NTUsMjQ0NTMsMzY5MTAsMzA5ODksMzA5OTAsMzA5OTEsMzA5OTIsMzA5OTMsMzA5OTQsMzA5OTYsMzA5OTcsMzA5OTgsMzA5OTksMzFlMywzMTAwMSwzMTAwMiwzMTAwMywzMTAwNCwzMTAwNSwzMTAwNywzMTAwOCwzMTAwOSwzMTAxMCwz''@;'; put 'put ''MTAxMSwzMTAxMywzMTAxNCwzMTAxNSwzMTAxNiwzMTAxNywzMTAxOCwzMTAxOSwzMTAyMCwzMTAyMSwzMTAyMiwzMTAyMywzMTAyNCwzMTAyNSwzMTAyNiwzMTAyNywzMTAyOSwzMTAzMCwzMTAzMSwzMTAzMiwzMTAzMywzMTAzNywzMTAzOSwzMTA0MiwzMTA0MywzMTA0NCwzMTA0NSwzMTA0''@;'; put 'put ''NywzMTA1MCwzMTA1MSwzMTA1MiwzMTA1MywzMTA1NCwzMTA1NSwzMTA1NiwzMTA1NywzMTA1OCwzMTA2MCwzMTA2MSwzMTA2NCwzMTA2NSwzMTA3MywzMTA3NSwzMTA3NiwzMTA3OCwzMTA4MSwzMTA4MiwzMTA4MywzMTA4NCwzMTA4NiwzMTA4OCwzMTA4OSwzMTA5MCwzMTA5MSwzMTA5Miwz''@;'; put 'put ''MTA5MywzMTA5NCwzMTA5NywzMTA5OSwzMTEwMCwzMTEwMSwzMTEwMiwzMTEwMywzMTEwNiwzMTEwNywzMTExMCwzMTExMSwzMTExMiwzMTExMywzMTExNSwzMTExNiwzMTExNywzMTExOCwzMTEyMCwzMTEyMSwzMTEyMiwyNDYwOCwzMjgyOSwyNTI4NSwyMDAyNSwyMTMzMywzNzExMiwyNTUy''@;'; put 'put ''OCwzMjk2NiwyNjA4NiwyNzY5NCwyMDI5NCwyNDgxNCwyODEyOSwzNTgwNiwyNDM3NywzNDUwNywyNDQwMywyNTM3NywyMDgyNiwzMzYzMywyNjcyMywyMDk5MiwyNTQ0MywzNjQyNCwyMDQ5OCwyMzcwNywzMTA5NSwyMzU0OCwyMTA0MCwzMTI5MSwyNDc2NCwzNjk0NywzMDQyMywyNDUwMywy''@;'; put 'put ''NDQ3MSwzMDM0MCwzNjQ2MCwyODc4MywzMDMzMSwzMTU2MSwzMDYzNCwyMDk3OSwzNzAxMSwyMjU2NCwyMDMwMiwyODQwNCwzNjg0MiwyNTkzMiwzMTUxNSwyOTM4MCwyODA2OCwzMjczNSwyMzI2NSwyNTI2OSwyNDIxMywyMjMyMCwzMzkyMiwzMTUzMiwyNDA5MywyNDM1MSwzNjg4MiwzMjUz''@;'; put 'put ''MiwzOTA3MiwyNTQ3NCwyODM1OSwzMDg3MiwyODg1NywyMDg1NiwzODc0NywyMjQ0MywzMDAwNSwyMDI5MSwzMDAwOCwyNDIxNSwyNDgwNiwyMjg4MCwyODA5NiwyNzU4MywzMDg1NywyMTUwMCwzODYxMywyMDkzOSwyMDk5MywyNTQ4MSwyMTUxNCwzODAzNSwzNTg0MywzNjMwMCwyOTI0MSwz''@;'; put 'put ''MDg3OSwzNDY3OCwzNjg0NSwzNTg1MywyMTQ3MiwzMTEyMywzMTEyNCwzMTEyNSwzMTEyNiwzMTEyNywzMTEyOCwzMTEyOSwzMTEzMSwzMTEzMiwzMTEzMywzMTEzNCwzMTEzNSwzMTEzNiwzMTEzNywzMTEzOCwzMTEzOSwzMTE0MCwzMTE0MSwzMTE0MiwzMTE0NCwzMTE0NSwzMTE0NiwzMTE0''@;'; put 'put ''NywzMTE0OCwzMTE0OSwzMTE1MCwzMTE1MSwzMTE1MiwzMTE1MywzMTE1NCwzMTE1NiwzMTE1NywzMTE1OCwzMTE1OSwzMTE2MCwzMTE2NCwzMTE2NywzMTE3MCwzMTE3MiwzMTE3MywzMTE3NSwzMTE3NiwzMTE3OCwzMTE4MCwzMTE4MiwzMTE4MywzMTE4NCwzMTE4NywzMTE4OCwzMTE5MCwz''@;'; put 'put ''MTE5MSwzMTE5MywzMTE5NCwzMTE5NSwzMTE5NiwzMTE5NywzMTE5OCwzMTIwMCwzMTIwMSwzMTIwMiwzMTIwNSwzMTIwOCwzMTIxMCwzMTIxMiwzMTIxNCwzMTIxNywzMTIxOCwzMTIxOSwzMTIyMCwzMTIyMSwzMTIyMiwzMTIyMywzMTIyNSwzMTIyNiwzMTIyOCwzMTIzMCwzMTIzMSwzMTIz''@;'; put 'put ''MywzMTIzNiwzMTIzNywzMTIzOSwzMTI0MCwzMTI0MSwzMTI0MiwzMTI0NCwzMTI0NywzMTI0OCwzMTI0OSwzMTI1MCwzMTI1MSwzMTI1MywzMTI1NCwzMTI1NiwzMTI1NywzMTI1OSwzMTI2MCwxOTk2OSwzMDQ0NywyMTQ4NiwzODAyNSwzOTAzMCw0MDcxOCwzODE4OSwyMzQ1MCwzNTc0Niwy''@;'; put 'put ''MDAwMiwxOTk5NiwyMDkwOCwzMzg5MSwyNTAyNiwyMTE2MCwyNjYzNSwyMDM3NSwyNDY4MywyMDkyMywyNzkzNCwyMDgyOCwyNTIzOCwyNjAwNywzODQ5NywzNTkxMCwzNjg4NywzMDE2OCwzNzExNywzMDU2MywyNzYwMiwyOTMyMiwyOTQyMCwzNTgzNSwyMjU4MSwzMDU4NSwzNjE3MiwyNjQ2''@;'; put 'put ''MCwzODIwOCwzMjkyMiwyNDIzMCwyODE5MywyMjkzMCwzMTQ3MSwzMDcwMSwzODIwMywyNzU3MywyNjAyOSwzMjUyNiwyMjUzNCwyMDgxNywzODQzMSwyMzU0NSwyMjY5NywyMTU0NCwzNjQ2NiwyNTk1OCwzOTAzOSwyMjI0NCwzODA0NSwzMDQ2MiwzNjkyOSwyNTQ3OSwyMTcwMiwyMjgxMCwy''@;'; put 'put ''Mjg0MiwyMjQyNywzNjUzMCwyNjQyMSwzNjM0NiwzMzMzMywyMTA1NywyNDgxNiwyMjU0OSwzNDU1OCwyMzc4NCw0MDUxNywyMDQyMCwzOTA2OSwzNTc2OSwyMzA3NywyNDY5NCwyMTM4MCwyNTIxMiwzNjk0MywzNzEyMiwzOTI5NSwyNDY4MSwzMjc4MCwyMDc5OSwzMjgxOSwyMzU3MiwzOTI4''@;'; put 'put ''NSwyNzk1MywyMDEwOCwzMTI2MSwzMTI2MywzMTI2NSwzMTI2NiwzMTI2OCwzMTI2OSwzMTI3MCwzMTI3MSwzMTI3MiwzMTI3MywzMTI3NCwzMTI3NSwzMTI3NiwzMTI3NywzMTI3OCwzMTI3OSwzMTI4MCwzMTI4MSwzMTI4MiwzMTI4NCwzMTI4NSwzMTI4NiwzMTI4OCwzMTI5MCwzMTI5NCwz''@;'; put 'put ''MTI5NiwzMTI5NywzMTI5OCwzMTI5OSwzMTMwMCwzMTMwMSwzMTMwMywzMTMwNCwzMTMwNSwzMTMwNiwzMTMwNywzMTMwOCwzMTMwOSwzMTMxMCwzMTMxMSwzMTMxMiwzMTMxNCwzMTMxNSwzMTMxNiwzMTMxNywzMTMxOCwzMTMyMCwzMTMyMSwzMTMyMiwzMTMyMywzMTMyNCwzMTMyNSwzMTMy''@;'; put 'put ''NiwzMTMyNywzMTMyOCwzMTMyOSwzMTMzMCwzMTMzMSwzMTMzMiwzMTMzMywzMTMzNCwzMTMzNSwzMTMzNiwzMTMzNywzMTMzOCwzMTMzOSwzMTM0MCwzMTM0MSwzMTM0MiwzMTM0MywzMTM0NSwzMTM0NiwzMTM0NywzMTM0OSwzMTM1NSwzMTM1NiwzMTM1NywzMTM1OCwzMTM2MiwzMTM2NSwz''@;'; put 'put ''MTM2NywzMTM2OSwzMTM3MCwzMTM3MSwzMTM3MiwzMTM3NCwzMTM3NSwzMTM3NiwzMTM3OSwzMTM4MCwzMTM4NSwzMTM4NiwzMTM4NywzMTM5MCwzMTM5MywzMTM5NCwzNjE0NCwyMTQ1NywzMjYwMiwzMTU2NywyMDI0MCwyMDA0NywzODQwMCwyNzg2MSwyOTY0OCwzNDI4MSwyNDA3MCwzMDA1''@;'; put 'put ''OCwzMjc2MywyNzE0NiwzMDcxOCwzODAzNCwzMjMyMSwyMDk2MSwyODkwMiwyMTQ1MywzNjgyMCwzMzUzOSwzNjEzNywyOTM1OSwzOTI3NywyNzg2NywyMjM0NiwzMzQ1OSwyNjA0MSwzMjkzOCwyNTE1MSwzODQ1MCwyMjk1MiwyMDIyMywzNTc3NSwzMjQ0MiwyNTkxOCwzMzc3OCwzODc1MCwy''@;'; put 'put ''MTg1NywzOTEzNCwzMjkzMywyMTI5MCwzNTgzNywyMTUzNiwzMjk1NCwyNDIyMywyNzgzMiwzNjE1MywzMzQ1MiwzNzIxMCwyMTU0NSwyNzY3NSwyMDk5OCwzMjQzOSwyMjM2NywyODk1NCwyNzc3NCwzMTg4MSwyMjg1OSwyMDIyMSwyNDU3NSwyNDg2OCwzMTkxNCwyMDAxNiwyMzU1MywyNjUz''@;'; put 'put ''OSwzNDU2MiwyMzc5MiwzODE1NSwzOTExOCwzMDEyNywyODkyNSwzNjg5OCwyMDkxMSwzMjU0MSwzNTc3MywyMjg1NywyMDk2NCwyMDMxNSwyMTU0MiwyMjgyNywyNTk3NSwzMjkzMiwyMzQxMywyNTIwNiwyNTI4MiwzNjc1MiwyNDEzMywyNzY3OSwzMTUyNiwyMDIzOSwyMDQ0MCwyNjM4MSwz''@;'; put 'put ''MTM5NSwzMTM5NiwzMTM5OSwzMTQwMSwzMTQwMiwzMTQwMywzMTQwNiwzMTQwNywzMTQwOCwzMTQwOSwzMTQxMCwzMTQxMiwzMTQxMywzMTQxNCwzMTQxNSwzMTQxNiwzMTQxNywzMTQxOCwzMTQxOSwzMTQyMCwzMTQyMSwzMTQyMiwzMTQyNCwzMTQyNSwzMTQyNiwzMTQyNywzMTQyOCwzMTQy''@;'; put 'put ''OSwzMTQzMCwzMTQzMSwzMTQzMiwzMTQzMywzMTQzNCwzMTQzNiwzMTQzNywzMTQzOCwzMTQzOSwzMTQ0MCwzMTQ0MSwzMTQ0MiwzMTQ0MywzMTQ0NCwzMTQ0NSwzMTQ0NywzMTQ0OCwzMTQ1MCwzMTQ1MSwzMTQ1MiwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MCwzMTQ2MywzMTQ2NCwzMTQ2NSwz''@;'; put 'put ''MTQ2NiwzMTQ2NywzMTQ2OCwzMTQ3MCwzMTQ3MiwzMTQ3MywzMTQ3NCwzMTQ3NSwzMTQ3NiwzMTQ3NywzMTQ3OCwzMTQ3OSwzMTQ4MCwzMTQ4MywzMTQ4NCwzMTQ4NiwzMTQ4OCwzMTQ4OSwzMTQ5MCwzMTQ5MywzMTQ5NSwzMTQ5NywzMTUwMCwzMTUwMSwzMTUwMiwzMTUwNCwzMTUwNiwzMTUw''@;'; put 'put ''NywzMTUxMCwzMTUxMSwzMTUxMiwzMTUxNCwzMTUxNiwzMTUxNywzMTUxOSwzMTUyMSwzMTUyMiwzMTUyMywzMTUyNywzMTUyOSwzMTUzMywyODAxNCwyODA3NCwzMTExOSwzNDk5MywyNDM0MywyOTk5NSwyNTI0MiwzNjc0MSwyMDQ2MywzNzM0MCwyNjAyMywzMzA3MSwzMzEwNSwyNDIyMCwz''@;'; put 'put ''MzEwNCwzNjIxMiwyMTEwMywzNTIwNiwzNjE3MSwyMjc5NywyMDYxMywyMDE4NCwzODQyOCwyOTIzOCwzMzE0NSwzNjEyNywyMzUwMCwzNTc0NywzODQ2OCwyMjkxOSwzMjUzOCwyMTY0OCwyMjEzNCwyMjAzMCwzNTgxMywyNTkxMywyNzAxMCwzODA0MSwzMDQyMiwyODI5NywyNDE3OCwyOTk3''@;'; put 'put ''NiwyNjQzOCwyNjU3NywzMTQ4NywzMjkyNSwzNjIxNCwyNDg2MywzMTE3NCwyNTk1NCwzNjE5NSwyMDg3MiwyMTAxOCwzODA1MCwzMjU2OCwzMjkyMywzMjQzNCwyMzcwMywyODIwNywyNjQ2NCwzMTcwNSwzMDM0NywzOTY0MCwzMzE2NywzMjY2MCwzMTk1NywyNTYzMCwzODIyNCwzMTI5NSwy''@;'; put 'put ''MTU3OCwyMTczMywyNzQ2OCwyNTYwMSwyNTA5Niw0MDUwOSwzMzAxMSwzMDEwNSwyMTEwNiwzODc2MSwzMzg4MywyNjY4NCwzNDUzMiwzODQwMSwzODU0OCwzODEyNCwyMDAxMCwyMTUwOCwzMjQ3MywyNjY4MSwzNjMxOSwzMjc4OSwyNjM1NiwyNDIxOCwzMjY5NywzMTUzNSwzMTUzNiwzMTUz''@;'; put 'put ''OCwzMTU0MCwzMTU0MSwzMTU0MiwzMTU0MywzMTU0NSwzMTU0NywzMTU0OSwzMTU1MSwzMTU1MiwzMTU1MywzMTU1NCwzMTU1NSwzMTU1NiwzMTU1OCwzMTU2MCwzMTU2MiwzMTU2NSwzMTU2NiwzMTU3MSwzMTU3MywzMTU3NSwzMTU3NywzMTU4MCwzMTU4MiwzMTU4MywzMTU4NSwzMTU4Nywz''@;'; put 'put ''MTU4OCwzMTU4OSwzMTU5MCwzMTU5MSwzMTU5MiwzMTU5MywzMTU5NCwzMTU5NSwzMTU5NiwzMTU5NywzMTU5OSwzMTYwMCwzMTYwMywzMTYwNCwzMTYwNiwzMTYwOCwzMTYxMCwzMTYxMiwzMTYxMywzMTYxNSwzMTYxNywzMTYxOCwzMTYxOSwzMTYyMCwzMTYyMiwzMTYyMywzMTYyNCwzMTYy''@;'; put 'put ''NSwzMTYyNiwzMTYyNywzMTYyOCwzMTYzMCwzMTYzMSwzMTYzMywzMTYzNCwzMTYzNSwzMTYzOCwzMTY0MCwzMTY0MSwzMTY0MiwzMTY0MywzMTY0NiwzMTY0NywzMTY0OCwzMTY1MSwzMTY1MiwzMTY1MywzMTY2MiwzMTY2MywzMTY2NCwzMTY2NiwzMTY2NywzMTY2OSwzMTY3MCwzMTY3MSwz''@;'; put 'put ''MTY3MywzMTY3NCwzMTY3NSwzMTY3NiwzMTY3NywzMTY3OCwzMTY3OSwzMTY4MCwzMTY4MiwzMTY4MywzMTY4NCwyMjQ2NiwzMjgzMSwyNjc3NSwyNDAzNywyNTkxNSwyMTE1MSwyNDY4NSw0MDg1OCwyMDM3OSwzNjUyNCwyMDg0NCwyMzQ2NywyNDMzOSwyNDA0MSwyNzc0MiwyNTMyOSwzNjEy''@;'; put 'put ''OSwyMDg0OSwzODA1NywyMTI0NiwyNzgwNywzMzUwMywyOTM5OSwyMjQzNCwyNjUwMCwzNjE0MSwyMjgxNSwzNjc2NCwzMzczNSwyMTY1MywzMTYyOSwyMDI3MiwyNzgzNywyMzM5NiwyMjk5Myw0MDcyMywyMTQ3NiwzNDUwNiwzOTU5MiwzNTg5NSwzMjkyOSwyNTkyNSwzOTAzOCwyMjI2Niwz''@;'; put 'put ''ODU5OSwyMTAzOCwyOTkxNiwyMTA3MiwyMzUyMSwyNTM0NiwzNTA3NCwyMDA1NCwyNTI5NiwyNDYxOCwyNjg3NCwyMDg1MSwyMzQ0OCwyMDg5NiwzNTI2NiwzMTY0OSwzOTMwMiwzMjU5MiwyNDgxNSwyODc0OCwzNjE0MywyMDgwOSwyNDE5MSwzNjg5MSwyOTgwOCwzNTI2OCwyMjMxNywzMDc4''@;'; put 'put ''OSwyNDQwMiw0MDg2MywzODM5NCwzNjcxMiwzOTc0MCwzNTgwOSwzMDMyOCwyNjY5MCwyNjU4OCwzNjMzMCwzNjE0OSwyMTA1MywzNjc0NiwyODM3OCwyNjgyOSwzODE0OSwzNzEwMSwyMjI2OSwyNjUyNCwzNTA2NSwzNjgwNywyMTcwNCwzMTY4NSwzMTY4OCwzMTY4OSwzMTY5MCwzMTY5MSwz''@;'; put 'put ''MTY5MywzMTY5NCwzMTY5NSwzMTY5NiwzMTY5OCwzMTcwMCwzMTcwMSwzMTcwMiwzMTcwMywzMTcwNCwzMTcwNywzMTcwOCwzMTcxMCwzMTcxMSwzMTcxMiwzMTcxNCwzMTcxNSwzMTcxNiwzMTcxOSwzMTcyMCwzMTcyMSwzMTcyMywzMTcyNCwzMTcyNSwzMTcyNywzMTcyOCwzMTczMCwzMTcz''@;'; put 'put ''MSwzMTczMiwzMTczMywzMTczNCwzMTczNiwzMTczNywzMTczOCwzMTczOSwzMTc0MSwzMTc0MywzMTc0NCwzMTc0NSwzMTc0NiwzMTc0NywzMTc0OCwzMTc0OSwzMTc1MCwzMTc1MiwzMTc1MywzMTc1NCwzMTc1NywzMTc1OCwzMTc2MCwzMTc2MSwzMTc2MiwzMTc2MywzMTc2NCwzMTc2NSwz''@;'; put 'put ''MTc2NywzMTc2OCwzMTc2OSwzMTc3MCwzMTc3MSwzMTc3MiwzMTc3MywzMTc3NCwzMTc3NiwzMTc3NywzMTc3OCwzMTc3OSwzMTc4MCwzMTc4MSwzMTc4NCwzMTc4NSwzMTc4NywzMTc4OCwzMTc4OSwzMTc5MCwzMTc5MSwzMTc5MiwzMTc5MywzMTc5NCwzMTc5NSwzMTc5NiwzMTc5NywzMTc5''@;'; put 'put ''OCwzMTc5OSwzMTgwMSwzMTgwMiwzMTgwMywzMTgwNCwzMTgwNSwzMTgwNiwzMTgxMCwzOTYwOCwyMzQwMSwyODAyMywyNzY4NiwyMDEzMywyMzQ3NSwzOTU1OSwzNzIxOSwyNWUzLDM3MDM5LDM4ODg5LDIxNTQ3LDI4MDg1LDIzNTA2LDIwOTg5LDIxODk4LDMyNTk3LDMyNzUyLDI1Nzg4LDI1''@;'; put 'put ''NDIxLDI2MDk3LDI1MDIyLDI0NzE3LDI4OTM4LDI3NzM1LDI3NzIxLDIyODMxLDI2NDc3LDMzMzIyLDIyNzQxLDIyMTU4LDM1OTQ2LDI3NjI3LDM3MDg1LDIyOTA5LDMyNzkxLDIxNDk1LDI4MDA5LDIxNjIxLDIxOTE3LDMzNjU1LDMzNzQzLDI2NjgwLDMxMTY2LDIxNjQ0LDIwMzA5LDIxNTEy''@;'; put 'put ''LDMwNDE4LDM1OTc3LDM4NDAyLDI3ODI3LDI4MDg4LDM2MjAzLDM1MDg4LDQwNTQ4LDM2MTU0LDIyMDc5LDQwNjU3LDMwMTY1LDI0NDU2LDI5NDA4LDI0NjgwLDIxNzU2LDIwMTM2LDI3MTc4LDM0OTEzLDI0NjU4LDM2NzIwLDIxNzAwLDI4ODg4LDM0NDI1LDQwNTExLDI3OTQ2LDIzNDM5LDI0''@;'; put 'put ''MzQ0LDMyNDE4LDIxODk3LDIwMzk5LDI5NDkyLDIxNTY0LDIxNDAyLDIwNTA1LDIxNTE4LDIxNjI4LDIwMDQ2LDI0NTczLDI5Nzg2LDIyNzc0LDMzODk5LDMyOTkzLDM0Njc2LDI5MzkyLDMxOTQ2LDI4MjQ2LDMxODExLDMxODEyLDMxODEzLDMxODE0LDMxODE1LDMxODE2LDMxODE3LDMxODE4''@;'; put 'put ''LDMxODE5LDMxODIwLDMxODIyLDMxODIzLDMxODI0LDMxODI1LDMxODI2LDMxODI3LDMxODI4LDMxODI5LDMxODMwLDMxODMxLDMxODMyLDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODM5LDMxODQwLDMxODQxLDMxODQyLDMxODQzLDMxODQ0LDMxODQ1LDMxODQ2LDMx''@;'; put 'put ''ODQ3LDMxODQ4LDMxODQ5LDMxODUwLDMxODUxLDMxODUyLDMxODUzLDMxODU0LDMxODU1LDMxODU2LDMxODU3LDMxODU4LDMxODYxLDMxODYyLDMxODYzLDMxODY0LDMxODY1LDMxODY2LDMxODcwLDMxODcxLDMxODcyLDMxODczLDMxODc0LDMxODc1LDMxODc2LDMxODc3LDMxODc4LDMxODc5''@;'; put 'put ''LDMxODgwLDMxODgyLDMxODgzLDMxODg0LDMxODg1LDMxODg2LDMxODg3LDMxODg4LDMxODkxLDMxODkyLDMxODk0LDMxODk3LDMxODk4LDMxODk5LDMxOTA0LDMxOTA1LDMxOTA3LDMxOTEwLDMxOTExLDMxOTEyLDMxOTEzLDMxOTE1LDMxOTE2LDMxOTE3LDMxOTE5LDMxOTIwLDMxOTI0LDMx''@;'; put 'put ''OTI1LDMxOTI2LDMxOTI3LDMxOTI4LDMxOTMwLDMxOTMxLDI0MzU5LDM0MzgyLDIxODA0LDI1MjUyLDIwMTE0LDI3ODE4LDI1MTQzLDMzNDU3LDIxNzE5LDIxMzI2LDI5NTAyLDI4MzY5LDMwMDExLDIxMDEwLDIxMjcwLDM1ODA1LDI3MDg4LDI0NDU4LDI0NTc2LDI4MTQyLDIyMzUxLDI3NDI2''@;'; put 'put ''LDI5NjE1LDI2NzA3LDM2ODI0LDMyNTMxLDI1NDQyLDI0NzM5LDIxNzk2LDMwMTg2LDM1OTM4LDI4OTQ5LDI4MDY3LDIzNDYyLDI0MTg3LDMzNjE4LDI0OTA4LDQwNjQ0LDMwOTcwLDM0NjQ3LDMxNzgzLDMwMzQzLDIwOTc2LDI0ODIyLDI5MDA0LDI2MTc5LDI0MTQwLDI0NjUzLDM1ODU0LDI4''@;'; put 'put ''Nzg0LDI1MzgxLDM2NzQ1LDI0NTA5LDI0Njc0LDM0NTE2LDIyMjM4LDI3NTg1LDI0NzI0LDI0OTM1LDIxMzIxLDI0ODAwLDI2MjE0LDM2MTU5LDMxMjI5LDIwMjUwLDI4OTA1LDI3NzE5LDM1NzYzLDM1ODI2LDMyNDcyLDMzNjM2LDI2MTI3LDIzMTMwLDM5NzQ2LDI3OTg1LDI4MTUxLDM1OTA1''@;'; put 'put ''LDI3OTYzLDIwMjQ5LDI4Nzc5LDMzNzE5LDI1MTEwLDI0Nzg1LDM4NjY5LDM2MTM1LDMxMDk2LDIwOTg3LDIyMzM0LDIyNTIyLDI2NDI2LDMwMDcyLDMxMjkzLDMxMjE1LDMxNjM3LDMxOTM1LDMxOTM2LDMxOTM4LDMxOTM5LDMxOTQwLDMxOTQyLDMxOTQ1LDMxOTQ3LDMxOTUwLDMxOTUxLDMx''@;'; put 'put ''OTUyLDMxOTUzLDMxOTU0LDMxOTU1LDMxOTU2LDMxOTYwLDMxOTYyLDMxOTYzLDMxOTY1LDMxOTY2LDMxOTY5LDMxOTcwLDMxOTcxLDMxOTcyLDMxOTczLDMxOTc0LDMxOTc1LDMxOTc3LDMxOTc4LDMxOTc5LDMxOTgwLDMxOTgxLDMxOTgyLDMxOTg0LDMxOTg1LDMxOTg2LDMxOTg3LDMxOTg4''@;'; put 'put ''LDMxOTg5LDMxOTkwLDMxOTkxLDMxOTkzLDMxOTk0LDMxOTk2LDMxOTk3LDMxOTk4LDMxOTk5LDMyZTMsMzIwMDEsMzIwMDIsMzIwMDMsMzIwMDQsMzIwMDUsMzIwMDYsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTEsMzIwMTIsMzIwMTMsMzIwMTQsMzIwMTUsMzIwMTYsMzIwMTcsMzIwMTgsMzIw''@;'; put 'put ''MTksMzIwMjAsMzIwMjEsMzIwMjIsMzIwMjMsMzIwMjQsMzIwMjUsMzIwMjYsMzIwMjcsMzIwMjgsMzIwMjksMzIwMzAsMzIwMzEsMzIwMzMsMzIwMzUsMzIwMzYsMzIwMzcsMzIwMzgsMzIwNDAsMzIwNDEsMzIwNDIsMzIwNDQsMzIwNDUsMzIwNDYsMzIwNDgsMzIwNDksMzIwNTAsMzIwNTEs''@;'; put 'put ''MzIwNTIsMzIwNTMsMzIwNTQsMzI5MDgsMzkyNjksMzY4NTcsMjg2MDgsMzU3NDksNDA0ODEsMjMwMjAsMzI0ODksMzI1MjEsMjE1MTMsMjY0OTcsMjY4NDAsMzY3NTMsMzE4MjEsMzg1OTgsMjE0NTAsMjQ2MTMsMzAxNDIsMjc3NjIsMjEzNjMsMjMyNDEsMzI0MjMsMjUzODAsMjA5NjAsMzMw''@;'; put 'put ''MzQsMjQwNDksMzQwMTUsMjUyMTYsMjA4NjQsMjMzOTUsMjAyMzgsMzEwODUsMjEwNTgsMjQ3NjAsMjc5ODIsMjM0OTIsMjM0OTAsMzU3NDUsMzU3NjAsMjYwODIsMjQ1MjQsMzg0NjksMjI5MzEsMzI0ODcsMzI0MjYsMjIwMjUsMjY1NTEsMjI4NDEsMjAzMzksMjM0NzgsMjExNTIsMzM2MjYs''@;'; put 'put ''MzkwNTAsMzYxNTgsMzAwMDIsMzgwNzgsMjA1NTEsMzEyOTIsMjAyMTUsMjY1NTAsMzk1NTAsMjMyMzMsMjc1MTYsMzA0MTcsMjIzNjIsMjM1NzQsMzE1NDYsMzgzODgsMjkwMDYsMjA4NjAsMzI5MzcsMzMzOTIsMjI5MDQsMzI1MTYsMzM1NzUsMjY4MTYsMjY2MDQsMzA4OTcsMzA4MzksMjUz''@;'; put 'put ''MTUsMjU0NDEsMzE2MTYsMjA0NjEsMjEwOTgsMjA5NDMsMzM2MTYsMjcwOTksMzc0OTIsMzYzNDEsMzYxNDUsMzUyNjUsMzgxOTAsMzE2NjEsMjAyMTQsMzIwNTUsMzIwNTYsMzIwNTcsMzIwNTgsMzIwNTksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjMsMzIwNjQsMzIwNjUsMzIwNjYsMzIwNjcs''@;'; put 'put ''MzIwNjgsMzIwNjksMzIwNzAsMzIwNzEsMzIwNzIsMzIwNzMsMzIwNzQsMzIwNzUsMzIwNzYsMzIwNzcsMzIwNzgsMzIwNzksMzIwODAsMzIwODEsMzIwODIsMzIwODMsMzIwODQsMzIwODUsMzIwODYsMzIwODcsMzIwODgsMzIwODksMzIwOTAsMzIwOTEsMzIwOTIsMzIwOTMsMzIwOTQsMzIw''@;'; put 'put ''OTUsMzIwOTYsMzIwOTcsMzIwOTgsMzIwOTksMzIxMDAsMzIxMDEsMzIxMDIsMzIxMDMsMzIxMDQsMzIxMDUsMzIxMDYsMzIxMDcsMzIxMDgsMzIxMDksMzIxMTEsMzIxMTIsMzIxMTMsMzIxMTQsMzIxMTUsMzIxMTYsMzIxMTcsMzIxMTgsMzIxMjAsMzIxMjEsMzIxMjIsMzIxMjMsMzIxMjQs''@;'; put 'put ''MzIxMjUsMzIxMjYsMzIxMjcsMzIxMjgsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzIsMzIxMzMsMzIxMzQsMzIxMzUsMzIxMzYsMzIxMzcsMzIxMzgsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDIsMzIxNDMsMzIxNDQsMzIxNDUsMzIxNDYsMzIxNDcsMzIxNDgsMzIxNDksMzIxNTAsMzIxNTEsMzIx''@;'; put 'put ''NTIsMjA1ODEsMzMzMjgsMjEwNzMsMzkyNzksMjgxNzYsMjgyOTMsMjgwNzEsMjQzMTQsMjA3MjUsMjMwMDQsMjM1NTgsMjc5NzQsMjc3NDMsMzAwODYsMzM5MzEsMjY3MjgsMjI4NzAsMzU3NjIsMjEyODAsMzcyMzMsMzg0NzcsMzQxMjEsMjY4OTgsMzA5NzcsMjg5NjYsMzMwMTQsMjAxMzIs''@;'; put 'put ''MzcwNjYsMjc5NzUsMzk1NTYsMjMwNDcsMjIyMDQsMjU2MDUsMzgxMjgsMzA2OTksMjAzODksMzMwNTAsMjk0MDksMzUyODIsMzkyOTAsMzI1NjQsMzI0NzgsMjExMTksMjU5NDUsMzcyMzcsMzY3MzUsMzY3MzksMjE0ODMsMzEzODIsMjU1ODEsMjU1MDksMzAzNDIsMzEyMjQsMzQ5MDMsMzg0''@;'; put 'put ''NTQsMjUxMzAsMjExNjMsMzM0MTAsMjY3MDgsMjY0ODAsMjU0NjMsMzA1NzEsMzE0NjksMjc5MDUsMzI0NjcsMzUyOTksMjI5OTIsMjUxMDYsMzQyNDksMzM0NDUsMzAwMjgsMjA1MTEsMjAxNzEsMzAxMTcsMzU4MTksMjM2MjYsMjQwNjIsMzE1NjMsMjYwMjAsMzczMjksMjAxNzAsMjc5NDEs''@;'; put 'put ''MzUxNjcsMzIwMzksMzgxODIsMjAxNjUsMzU4ODAsMzY4MjcsMzg3NzEsMjYxODcsMzExMDUsMzY4MTcsMjg5MDgsMjgwMjQsMzIxNTMsMzIxNTQsMzIxNTUsMzIxNTYsMzIxNTcsMzIxNTgsMzIxNTksMzIxNjAsMzIxNjEsMzIxNjIsMzIxNjMsMzIxNjQsMzIxNjUsMzIxNjcsMzIxNjgsMzIx''@;'; put 'put ''NjksMzIxNzAsMzIxNzEsMzIxNzIsMzIxNzMsMzIxNzUsMzIxNzYsMzIxNzcsMzIxNzgsMzIxNzksMzIxODAsMzIxODEsMzIxODIsMzIxODMsMzIxODQsMzIxODUsMzIxODYsMzIxODcsMzIxODgsMzIxODksMzIxOTAsMzIxOTEsMzIxOTIsMzIxOTMsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcs''@;'; put 'put ''MzIxOTgsMzIxOTksMzIyMDAsMzIyMDEsMzIyMDIsMzIyMDMsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMDcsMzIyMDgsMzIyMDksMzIyMTAsMzIyMTEsMzIyMTIsMzIyMTMsMzIyMTQsMzIyMTUsMzIyMTYsMzIyMTcsMzIyMTgsMzIyMTksMzIyMjAsMzIyMjEsMzIyMjIsMzIyMjMsMzIyMjQsMzIy''@;'; put 'put ''MjUsMzIyMjYsMzIyMjcsMzIyMjgsMzIyMjksMzIyMzAsMzIyMzEsMzIyMzIsMzIyMzMsMzIyMzQsMzIyMzUsMzIyMzYsMzIyMzcsMzIyMzgsMzIyMzksMzIyNDAsMzIyNDEsMzIyNDIsMzIyNDMsMzIyNDQsMzIyNDUsMzIyNDYsMzIyNDcsMzIyNDgsMzIyNDksMzIyNTAsMjM2MTMsMjExNzAs''@;'; put 'put ''MzM2MDYsMjA4MzQsMzM1NTAsMzA1NTUsMjYyMzAsNDAxMjAsMjAxNDAsMjQ3NzgsMzE5MzQsMzE5MjMsMzI0NjMsMjAxMTcsMzU2ODYsMjYyMjMsMzkwNDgsMzg3NDUsMjI2NTksMjU5NjQsMzgyMzYsMjQ0NTIsMzAxNTMsMzg3NDIsMzE0NTUsMzE0NTQsMjA5MjgsMjg4NDcsMzEzODQsMjU1''@;'; put 'put ''NzgsMzEzNTAsMzI0MTYsMjk1OTAsMzg4OTMsMjAwMzcsMjg3OTIsMjAwNjEsMzcyMDIsMjE0MTcsMjU5MzcsMjYwODcsMzMyNzYsMzMyODUsMjE2NDYsMjM2MDEsMzAxMDYsMzg4MTYsMjUzMDQsMjk0MDEsMzAxNDEsMjM2MjEsMzk1NDUsMzM3MzgsMjM2MTYsMjE2MzIsMzA2OTcsMjAwMzAs''@;'; put 'put ''Mjc4MjIsMzI4NTgsMjUyOTgsMjU0NTQsMjQwNDAsMjA4NTUsMzYzMTcsMzYzODIsMzgxOTEsMjA0NjUsMjE0NzcsMjQ4MDcsMjg4NDQsMjEwOTUsMjU0MjQsNDA1MTUsMjMwNzEsMjA1MTgsMzA1MTksMjEzNjcsMzI0ODIsMjU3MzMsMjU4OTksMjUyMjUsMjU0OTYsMjA1MDAsMjkyMzcsMzUy''@;'; put 'put ''NzMsMjA5MTUsMzU3NzYsMzI0NzcsMjIzNDMsMzM3NDAsMzgwNTUsMjA4OTEsMjE1MzEsMjM4MDMsMzIyNTEsMzIyNTIsMzIyNTMsMzIyNTQsMzIyNTUsMzIyNTYsMzIyNTcsMzIyNTgsMzIyNTksMzIyNjAsMzIyNjEsMzIyNjIsMzIyNjMsMzIyNjQsMzIyNjUsMzIyNjYsMzIyNjcsMzIyNjgs''@;'; put 'put ''MzIyNjksMzIyNzAsMzIyNzEsMzIyNzIsMzIyNzMsMzIyNzQsMzIyNzUsMzIyNzYsMzIyNzcsMzIyNzgsMzIyNzksMzIyODAsMzIyODEsMzIyODIsMzIyODMsMzIyODQsMzIyODUsMzIyODYsMzIyODcsMzIyODgsMzIyODksMzIyOTAsMzIyOTEsMzIyOTIsMzIyOTMsMzIyOTQsMzIyOTUsMzIy''@;'; put 'put ''OTYsMzIyOTcsMzIyOTgsMzIyOTksMzIzMDAsMzIzMDEsMzIzMDIsMzIzMDMsMzIzMDQsMzIzMDUsMzIzMDYsMzIzMDcsMzIzMDgsMzIzMDksMzIzMTAsMzIzMTEsMzIzMTIsMzIzMTMsMzIzMTQsMzIzMTYsMzIzMTcsMzIzMTgsMzIzMTksMzIzMjAsMzIzMjIsMzIzMjMsMzIzMjQsMzIzMjUs''@;'; put 'put ''MzIzMjYsMzIzMjgsMzIzMjksMzIzMzAsMzIzMzEsMzIzMzIsMzIzMzMsMzIzMzQsMzIzMzUsMzIzMzYsMzIzMzcsMzIzMzgsMzIzMzksMzIzNDAsMzIzNDEsMzIzNDIsMzIzNDMsMzIzNDQsMzIzNDUsMzIzNDYsMzIzNDcsMzIzNDgsMzIzNDksMjA0MjYsMzE0NTksMjc5OTQsMzcwODksMzk1''@;'; put 'put ''NjcsMjE4ODgsMjE2NTQsMjEzNDUsMjE2NzksMjQzMjAsMjU1NzcsMjY5OTksMjA5NzUsMjQ5MzYsMjEwMDIsMjI1NzAsMjEyMDgsMjIzNTAsMzA3MzMsMzA0NzUsMjQyNDcsMjQ5NTEsMzE5NjgsMjUxNzksMjUyMzksMjAxMzAsMjg4MjEsMzI3NzEsMjUzMzUsMjg5MDAsMzg3NTIsMjIzOTEs''@;'; put 'put ''MzM0OTksMjY2MDcsMjY4NjksMzA5MzMsMzkwNjMsMzExODUsMjI3NzEsMjE2ODMsMjE0ODcsMjgyMTIsMjA4MTEsMjEwNTEsMjM0NTgsMzU4MzgsMzI5NDMsMjE4MjcsMjI0MzgsMjQ2OTEsMjIzNTMsMjE1NDksMzEzNTQsMjQ2NTYsMjMzODAsMjU1MTEsMjUyNDgsMjE0NzUsMjUxODcsMjM0''@;'; put 'put ''OTUsMjY1NDMsMjE3NDEsMzEzOTEsMzM1MTAsMzcyMzksMjQyMTEsMzUwNDQsMjI4NDAsMjI0NDYsMjUzNTgsMzYzMjgsMzMwMDcsMjIzNTksMzE2MDcsMjAzOTMsMjQ1NTUsMjM0ODUsMjc0NTQsMjEyODEsMzE1NjgsMjkzNzgsMjY2OTQsMzA3MTksMzA1MTgsMjYxMDMsMjA5MTcsMjAxMTEs''@;'; put 'put ''MzA0MjAsMjM3NDMsMzEzOTcsMzM5MDksMjI4NjIsMzk3NDUsMjA2MDgsMzIzNTAsMzIzNTEsMzIzNTIsMzIzNTMsMzIzNTQsMzIzNTUsMzIzNTYsMzIzNTcsMzIzNTgsMzIzNTksMzIzNjAsMzIzNjEsMzIzNjIsMzIzNjMsMzIzNjQsMzIzNjUsMzIzNjYsMzIzNjcsMzIzNjgsMzIzNjksMzIz''@;'; put 'put ''NzAsMzIzNzEsMzIzNzIsMzIzNzMsMzIzNzQsMzIzNzUsMzIzNzYsMzIzNzcsMzIzNzgsMzIzNzksMzIzODAsMzIzODEsMzIzODIsMzIzODMsMzIzODQsMzIzODUsMzIzODcsMzIzODgsMzIzODksMzIzOTAsMzIzOTEsMzIzOTIsMzIzOTMsMzIzOTQsMzIzOTUsMzIzOTYsMzIzOTcsMzIzOTgs''@;'; put 'put ''MzIzOTksMzI0MDAsMzI0MDEsMzI0MDIsMzI0MDMsMzI0MDQsMzI0MDUsMzI0MDYsMzI0MDcsMzI0MDgsMzI0MDksMzI0MTAsMzI0MTIsMzI0MTMsMzI0MTQsMzI0MzAsMzI0MzYsMzI0NDMsMzI0NDQsMzI0NzAsMzI0ODQsMzI0OTIsMzI1MDUsMzI1MjIsMzI1MjgsMzI1NDIsMzI1NjcsMzI1''@;'; put 'put ''NjksMzI1NzEsMzI1NzIsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzYsMzI1NzcsMzI1NzksMzI1ODIsMzI1ODMsMzI1ODQsMzI1ODUsMzI1ODYsMzI1ODcsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTEsMzI1OTQsMzI1OTUsMzkzMDQsMjQ4NzEsMjgyOTEsMjIzNzIsMjYxMTgsMjU0MTQsMjIyNTYs''@;'; put 'put ''MjUzMjQsMjUxOTMsMjQyNzUsMzg0MjAsMjI0MDMsMjUyODksMjE4OTUsMzQ1OTMsMzMwOTgsMzY3NzEsMjE4NjIsMzM3MTMsMjY0NjksMzYxODIsMzQwMTMsMjMxNDYsMjY2MzksMjUzMTgsMzE3MjYsMzg0MTcsMjA4NDgsMjg1NzIsMzU4ODgsMjU1OTcsMzUyNzIsMjUwNDIsMzI1MTgsMjg4''@;'; put 'put ''NjYsMjgzODksMjk3MDEsMjcwMjgsMjk0MzYsMjQyNjYsMzcwNzAsMjYzOTEsMjgwMTAsMjU0MzgsMjExNzEsMjkyODIsMzI3NjksMjAzMzIsMjMwMTMsMzcyMjYsMjg4ODksMjgwNjEsMjEyMDIsMjAwNDgsMzg2NDcsMzgyNTMsMzQxNzQsMzA5MjIsMzIwNDcsMjA3NjksMjI0MTgsMjU3OTQs''@;'; put 'put ''MzI5MDcsMzE4NjcsMjc4ODIsMjY4NjUsMjY5NzQsMjA5MTksMjE0MDAsMjY3OTIsMjkzMTMsNDA2NTQsMzE3MjksMjk0MzIsMzExNjMsMjg0MzUsMjk3MDIsMjY0NDYsMzczMjQsNDAxMDAsMzEwMzYsMzM2NzMsMzM2MjAsMjE1MTksMjY2NDcsMjAwMjksMjEzODUsMjExNjksMzA3ODIsMjEz''@;'; put 'put ''ODIsMjEwMzMsMjA2MTYsMjAzNjMsMjA0MzIsMzI1OTgsMzI2MDEsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDYsMzI2MDgsMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MTUsMzI2MTksMzI2MjAsMzI2MjEsMzI2MjMsMzI2MjQsMzI2MjcsMzI2MjksMzI2MzAsMzI2MzEsMzI2MzIsMzI2MzQs''@;'; put 'put ''MzI2MzUsMzI2MzYsMzI2MzcsMzI2MzksMzI2NDAsMzI2NDIsMzI2NDMsMzI2NDQsMzI2NDUsMzI2NDYsMzI2NDcsMzI2NDgsMzI2NDksMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NTgsMzI2NTksMzI2NjEsMzI2NjIsMzI2NjMsMzI2NjQsMzI2NjUsMzI2NjcsMzI2NjgsMzI2''@;'; put 'put ''NzIsMzI2NzQsMzI2NzUsMzI2NzcsMzI2NzgsMzI2ODAsMzI2ODEsMzI2ODIsMzI2ODMsMzI2ODQsMzI2ODUsMzI2ODYsMzI2ODksMzI2OTEsMzI2OTIsMzI2OTMsMzI2OTQsMzI2OTUsMzI2OTgsMzI2OTksMzI3MDIsMzI3MDQsMzI3MDYsMzI3MDcsMzI3MDgsMzI3MTAsMzI3MTEsMzI3MTIs''@;'; put 'put ''MzI3MTMsMzI3MTUsMzI3MTcsMzI3MTksMzI3MjAsMzI3MjEsMzI3MjIsMzI3MjMsMzI3MjYsMzI3MjcsMzI3MjksMzI3MzAsMzI3MzEsMzI3MzIsMzI3MzMsMzI3MzQsMzI3MzgsMzI3MzksMzAxNzgsMzE0MzUsMzE4OTAsMjc4MTMsMzg1ODIsMjExNDcsMjk4MjcsMjE3MzcsMjA0NTcsMzI4''@;'; put 'put ''NTIsMzM3MTQsMzY4MzAsMzgyNTYsMjQyNjUsMjQ2MDQsMjgwNjMsMjQwODgsMjU5NDcsMzMwODAsMzgxNDIsMjQ2NTEsMjg4NjAsMzI0NTEsMzE5MTgsMjA5MzcsMjY3NTMsMzE5MjEsMzMzOTEsMjAwMDQsMzY3NDIsMzczMjcsMjYyMzgsMjAxNDIsMzU4NDUsMjU3NjksMzI4NDIsMjA2OTgs''@;'; put 'put ''MzAxMDMsMjkxMzQsMjM1MjUsMzY3OTcsMjg1MTgsMjAxMDIsMjU3MzAsMzgyNDMsMjQyNzgsMjYwMDksMjEwMTUsMzUwMTAsMjg4NzIsMjExNTUsMjk0NTQsMjk3NDcsMjY1MTksMzA5NjcsMzg2NzgsMjAwMjAsMzcwNTEsNDAxNTgsMjgxMDcsMjA5NTUsMzYxNjEsMjE1MzMsMjUyOTQsMjk2''@;'; put 'put ''MTgsMzM3NzcsMzg2NDYsNDA4MzYsMzgwODMsMjAyNzgsMzI2NjYsMjA5NDAsMjg3ODksMzg1MTcsMjM3MjUsMzkwNDYsMjE0NzgsMjAxOTYsMjgzMTYsMjk3MDUsMjcwNjAsMzA4MjcsMzkzMTEsMzAwNDEsMjEwMTYsMzAyNDQsMjc5NjksMjY2MTEsMjA4NDUsNDA4NTcsMzI4NDMsMjE2NTcs''@;'; put 'put ''MzE1NDgsMzE0MjMsMzI3NDAsMzI3NDMsMzI3NDQsMzI3NDYsMzI3NDcsMzI3NDgsMzI3NDksMzI3NTEsMzI3NTQsMzI3NTYsMzI3NTcsMzI3NTgsMzI3NTksMzI3NjAsMzI3NjEsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzAsMzI3NzUsMzI3NzYsMzI3NzcsMzI3NzgsMzI3ODIsMzI3''@;'; put 'put ''ODMsMzI3ODUsMzI3ODcsMzI3OTQsMzI3OTUsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDEsMzI4MDMsMzI4MDQsMzI4MTEsMzI4MTIsMzI4MTMsMzI4MTQsMzI4MTUsMzI4MTYsMzI4MTgsMzI4MjAsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzMsMzI4MzYsMzI4MzcsMzI4Mzks''@;'; put 'put ''MzI4NDAsMzI4NDEsMzI4NDYsMzI4NDcsMzI4NDgsMzI4NDksMzI4NTEsMzI4NTMsMzI4NTQsMzI4NTUsMzI4NTcsMzI4NTksMzI4NjAsMzI4NjEsMzI4NjIsMzI4NjMsMzI4NjQsMzI4NjUsMzI4NjYsMzI4NjcsMzI4NjgsMzI4NjksMzI4NzAsMzI4NzEsMzI4NzIsMzI4NzUsMzI4NzYsMzI4''@;'; put 'put ''NzcsMzI4NzgsMzI4NzksMzI4ODAsMzI4ODIsMzI4ODMsMzI4ODQsMzI4ODUsMzI4ODYsMzI4ODcsMzI4ODgsMzI4ODksMzI4OTAsMzI4OTEsMzI4OTIsMzI4OTMsMzg1MzQsMjI0MDQsMjUzMTQsMzg0NzEsMjcwMDQsMjMwNDQsMjU2MDIsMzE2OTksMjg0MzEsMzg0NzUsMzM0NDYsMjEzNDYs''@;'; put 'put ''MzkwNDUsMjQyMDgsMjg4MDksMjU1MjMsMjEzNDgsMzQzODMsNDAwNjUsNDA1OTUsMzA4NjAsMzg3MDYsMzYzMzUsMzYxNjIsNDA1NzUsMjg1MTAsMzExMDgsMjQ0MDUsMzg0NzAsMjUxMzQsMzk1NDAsMjE1MjUsMzgxMDksMjAzODcsMjYwNTMsMjM2NTMsMjM2NDksMzI1MzMsMzQzODUsMjc2''@;'; put 'put ''OTUsMjQ0NTksMjk1NzUsMjgzODgsMzI1MTEsMjM3ODIsMjUzNzEsMjM0MDIsMjgzOTAsMjEzNjUsMjAwODEsMjU1MDQsMzAwNTMsMjUyNDksMzY3MTgsMjAyNjIsMjAxNzcsMjc4MTQsMzI0MzgsMzU3NzAsMzM4MjEsMzQ3NDYsMzI1OTksMzY5MjMsMzgxNzksMzE2NTcsMzk1ODUsMzUwNjQs''@;'; put 'put ''MzM4NTMsMjc5MzEsMzk1NTgsMzI0NzYsMjI5MjAsNDA2MzUsMjk1OTUsMzA3MjEsMzQ0MzQsMzk1MzIsMzk1NTQsMjIwNDMsMjE1MjcsMjI0NzUsMjAwODAsNDA2MTQsMjEzMzQsMzY4MDgsMzMwMzMsMzA2MTAsMzkzMTQsMzQ1NDIsMjgzODUsMzQwNjcsMjYzNjQsMjQ5MzAsMjg0NTksMzI4''@;'; put 'put ''OTQsMzI4OTcsMzI4OTgsMzI5MDEsMzI5MDQsMzI5MDYsMzI5MDksMzI5MTAsMzI5MTEsMzI5MTIsMzI5MTMsMzI5MTQsMzI5MTYsMzI5MTcsMzI5MTksMzI5MjEsMzI5MjYsMzI5MzEsMzI5MzQsMzI5MzUsMzI5MzYsMzI5NDAsMzI5NDQsMzI5NDcsMzI5NDksMzI5NTAsMzI5NTIsMzI5NTMs''@;'; put 'put ''MzI5NTUsMzI5NjUsMzI5NjcsMzI5NjgsMzI5NjksMzI5NzAsMzI5NzEsMzI5NzUsMzI5NzYsMzI5NzcsMzI5NzgsMzI5NzksMzI5ODAsMzI5ODEsMzI5ODQsMzI5OTEsMzI5OTIsMzI5OTQsMzI5OTUsMzI5OTgsMzMwMDYsMzMwMTMsMzMwMTUsMzMwMTcsMzMwMTksMzMwMjIsMzMwMjMsMzMw''@;'; put 'put ''MjQsMzMwMjUsMzMwMjcsMzMwMjgsMzMwMjksMzMwMzEsMzMwMzIsMzMwMzUsMzMwMzYsMzMwNDUsMzMwNDcsMzMwNDksMzMwNTEsMzMwNTIsMzMwNTMsMzMwNTUsMzMwNTYsMzMwNTcsMzMwNTgsMzMwNTksMzMwNjAsMzMwNjEsMzMwNjIsMzMwNjMsMzMwNjQsMzMwNjUsMzMwNjYsMzMwNjcs''@;'; put 'put ''MzMwNjksMzMwNzAsMzMwNzIsMzMwNzUsMzMwNzYsMzMwNzcsMzMwNzksMzMwODEsMzMwODIsMzMwODMsMzMwODQsMzMwODUsMzMwODcsMzU4ODEsMzM0MjYsMzM1NzksMzA0NTAsMjc2NjcsMjQ1MzcsMzM3MjUsMjk0ODMsMzM1NDEsMzgxNzAsMjc2MTEsMzA2ODMsMzgwODYsMjEzNTksMzM1''@;'; put 'put ''MzgsMjA4ODIsMjQxMjUsMzU5ODAsMzYxNTIsMjAwNDAsMjk2MTEsMjY1MjIsMjY3NTcsMzcyMzgsMzg2NjUsMjkwMjgsMjc4MDksMzA0NzMsMjMxODYsMzgyMDksMjc1OTksMzI2NTQsMjYxNTEsMjM1MDQsMjI5NjksMjMxOTQsMzgzNzYsMzgzOTEsMjAyMDQsMzM4MDQsMzM5NDUsMjczMDgs''@;'; put 'put ''MzA0MzEsMzgxOTIsMjk0NjcsMjY3OTAsMjMzOTEsMzA1MTEsMzcyNzQsMzg3NTMsMzE5NjQsMzY4NTUsMzU4NjgsMjQzNTcsMzE4NTksMzExOTIsMzUyNjksMjc4NTIsMzQ1ODgsMjM0OTQsMjQxMzAsMjY4MjUsMzA0OTYsMzI1MDEsMjA4ODUsMjA4MTMsMjExOTMsMjMwODEsMzI1MTcsMzg3''@;'; put 'put ''NTQsMzM0OTUsMjU1NTEsMzA1OTYsMzQyNTYsMzExODYsMjgyMTgsMjQyMTcsMjI5MzcsMzQwNjUsMjg3ODEsMjc2NjUsMjUyNzksMzAzOTksMjU5MzUsMjQ3NTEsMzgzOTcsMjYxMjYsMzQ3MTksNDA0ODMsMzgxMjUsMjE1MTcsMjE2MjksMzU4ODQsMjU3MjAsMzMwODgsMzMwODksMzMwOTAs''@;'; put 'put ''MzMwOTEsMzMwOTIsMzMwOTMsMzMwOTUsMzMwOTcsMzMxMDEsMzMxMDIsMzMxMDMsMzMxMDYsMzMxMTAsMzMxMTEsMzMxMTIsMzMxMTUsMzMxMTYsMzMxMTcsMzMxMTgsMzMxMTksMzMxMjEsMzMxMjIsMzMxMjMsMzMxMjQsMzMxMjYsMzMxMjgsMzMxMzAsMzMxMzEsMzMxMzIsMzMxMzUsMzMx''@;'; put 'put ''MzgsMzMxMzksMzMxNDEsMzMxNDIsMzMxNDMsMzMxNDQsMzMxNTMsMzMxNTUsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNTksMzMxNjEsMzMxNjMsMzMxNjQsMzMxNjUsMzMxNjYsMzMxNjgsMzMxNzAsMzMxNzEsMzMxNzIsMzMxNzMsMzMxNzQsMzMxNzUsMzMxNzcsMzMxNzgsMzMxODIsMzMxODMs''@;'; put 'put ''MzMxODQsMzMxODUsMzMxODYsMzMxODgsMzMxODksMzMxOTEsMzMxOTMsMzMxOTUsMzMxOTYsMzMxOTcsMzMxOTgsMzMxOTksMzMyMDAsMzMyMDEsMzMyMDIsMzMyMDQsMzMyMDUsMzMyMDYsMzMyMDcsMzMyMDgsMzMyMDksMzMyMTIsMzMyMTMsMzMyMTQsMzMyMTUsMzMyMjAsMzMyMjEsMzMy''@;'; put 'put ''MjMsMzMyMjQsMzMyMjUsMzMyMjcsMzMyMjksMzMyMzAsMzMyMzEsMzMyMzIsMzMyMzMsMzMyMzQsMzMyMzUsMjU3MjEsMzQzMjEsMjcxNjksMzMxODAsMzA5NTIsMjU3MDUsMzk3NjQsMjUyNzMsMjY0MTEsMzM3MDcsMjI2OTYsNDA2NjQsMjc4MTksMjg0NDgsMjM1MTgsMzg0NzYsMzU4NTEs''@;'; put 'put ''MjkyNzksMjY1NzYsMjUyODcsMjkyODEsMjAxMzcsMjI5ODIsMjc1OTcsMjI2NzUsMjYyODYsMjQxNDksMjEyMTUsMjQ5MTcsMjY0MDgsMzA0NDYsMzA1NjYsMjkyODcsMzEzMDIsMjUzNDMsMjE3MzgsMjE1ODQsMzgwNDgsMzcwMjcsMjMwNjgsMzI0MzUsMjc2NzAsMjAwMzUsMjI5MDIsMzI3''@;'; put 'put ''ODQsMjI4NTYsMjEzMzUsMzAwMDcsMzg1OTAsMjIyMTgsMjUzNzYsMzMwNDEsMjQ3MDAsMzgzOTMsMjgxMTgsMjE2MDIsMzkyOTcsMjA4NjksMjMyNzMsMzMwMjEsMjI5NTgsMzg2NzUsMjA1MjIsMjc4NzcsMjM2MTIsMjUzMTEsMjAzMjAsMjEzMTEsMzMxNDcsMzY4NzAsMjgzNDYsMzQwOTEs''@;'; put 'put ''MjUyODgsMjQxODAsMzA5MTAsMjU3ODEsMjU0NjcsMjQ1NjUsMjMwNjQsMzcyNDcsNDA0NzksMjM2MTUsMjU0MjMsMzI4MzQsMjM0MjEsMjE4NzAsMzgyMTgsMzgyMjEsMjgwMzcsMjQ3NDQsMjY1OTIsMjk0MDYsMjA5NTcsMjM0MjUsMzMyMzYsMzMyMzcsMzMyMzgsMzMyMzksMzMyNDAsMzMy''@;'; put 'put ''NDEsMzMyNDIsMzMyNDMsMzMyNDQsMzMyNDUsMzMyNDYsMzMyNDcsMzMyNDgsMzMyNDksMzMyNTAsMzMyNTIsMzMyNTMsMzMyNTQsMzMyNTYsMzMyNTcsMzMyNTksMzMyNjIsMzMyNjMsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzEsMzMyNzIsMzMyNzMsMzMyNzQsMzMyNzcs''@;'; put 'put ''MzMyNzksMzMyODMsMzMyODcsMzMyODgsMzMyODksMzMyOTAsMzMyOTEsMzMyOTQsMzMyOTUsMzMyOTcsMzMyOTksMzMzMDEsMzMzMDIsMzMzMDMsMzMzMDQsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTIsMzMzMTYsMzMzMTcsMzMzMTgsMzMzMTksMzMzMjEsMzMzMjYsMzMzMzAsMzMzMzgsMzMz''@;'; put 'put ''NDAsMzMzNDEsMzMzNDMsMzMzNDQsMzMzNDUsMzMzNDYsMzMzNDcsMzMzNDksMzMzNTAsMzMzNTIsMzMzNTQsMzMzNTYsMzMzNTcsMzMzNTgsMzMzNjAsMzMzNjEsMzMzNjIsMzMzNjMsMzMzNjQsMzMzNjUsMzMzNjYsMzMzNjcsMzMzNjksMzMzNzEsMzMzNzIsMzMzNzMsMzMzNzQsMzMzNzYs''@;'; put 'put ''MzMzNzcsMzMzNzgsMzMzNzksMzMzODAsMzMzODEsMzMzODIsMzMzODMsMzMzODUsMjUzMTksMjc4NzAsMjkyNzUsMjUxOTcsMzgwNjIsMzI0NDUsMzMwNDMsMjc5ODcsMjA4OTIsMjQzMjQsMjI5MDAsMjExNjIsMjQ1OTQsMjI4OTksMjYyNjIsMzQzODQsMzAxMTEsMjUzODYsMjUwNjIsMzE5''@;'; put 'put ''ODMsMzU4MzQsMjE3MzQsMjc0MzEsNDA0ODUsMjc1NzIsMzQyNjEsMjE1ODksMjA1OTgsMjc4MTIsMjE4NjYsMzYyNzYsMjkyMjgsMjQwODUsMjQ1OTcsMjk3NTAsMjUyOTMsMjU0OTAsMjkyNjAsMjQ0NzIsMjgyMjcsMjc5NjYsMjU4NTYsMjg1MDQsMzA0MjQsMzA5MjgsMzA0NjAsMzAwMzYs''@;'; put 'put ''MjEwMjgsMjE0NjcsMjAwNTEsMjQyMjIsMjYwNDksMzI4MTAsMzI5ODIsMjUyNDMsMjE2MzgsMjEwMzIsMjg4NDYsMzQ5NTcsMzYzMDUsMjc4NzMsMjE2MjQsMzI5ODYsMjI1MjEsMzUwNjAsMzYxODAsMzg1MDYsMzcxOTcsMjAzMjksMjc4MDMsMjE5NDMsMzA0MDYsMzA3NjgsMjUyNTYsMjg5''@;'; put 'put ''MjEsMjg1NTgsMjQ0MjksMzQwMjgsMjY4NDIsMzA4NDQsMzE3MzUsMzMxOTIsMjYzNzksNDA1MjcsMjU0NDcsMzA4OTYsMjIzODMsMzA3MzgsMzg3MTMsMjUyMDksMjUyNTksMjExMjgsMjk3NDksMjc2MDcsMzMzODYsMzMzODcsMzMzODgsMzMzODksMzMzOTMsMzMzOTcsMzMzOTgsMzMzOTks''@;'; put 'put ''MzM0MDAsMzM0MDMsMzM0MDQsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTMsMzM0MTQsMzM0MTUsMzM0MTcsMzM0MjAsMzM0MjQsMzM0MjcsMzM0MjgsMzM0MjksMzM0MzAsMzM0MzQsMzM0MzUsMzM0MzgsMzM0NDAsMzM0NDIsMzM0NDMsMzM0NDcsMzM0NTgsMzM0NjEsMzM0NjIsMzM0NjYsMzM0''@;'; put 'put ''NjcsMzM0NjgsMzM0NzEsMzM0NzIsMzM0NzQsMzM0NzUsMzM0NzcsMzM0NzgsMzM0ODEsMzM0ODgsMzM0OTQsMzM0OTcsMzM0OTgsMzM1MDEsMzM1MDYsMzM1MTEsMzM1MTIsMzM1MTMsMzM1MTQsMzM1MTYsMzM1MTcsMzM1MTgsMzM1MjAsMzM1MjIsMzM1MjMsMzM1MjUsMzM1MjYsMzM1Mjgs''@;'; put 'put ''MzM1MzAsMzM1MzIsMzM1MzMsMzM1MzQsMzM1MzUsMzM1MzYsMzM1NDYsMzM1NDcsMzM1NDksMzM1NTIsMzM1NTQsMzM1NTUsMzM1NTgsMzM1NjAsMzM1NjEsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjgsMzM1NjksMzM1NzAsMzM1NzEsMzM1NzIsMzM1NzMsMzM1NzQsMzM1NzcsMzM1NzgsMzM1''@;'; put 'put ''ODIsMzM1ODQsMzM1ODYsMzM1OTEsMzM1OTUsMzM1OTcsMjE4NjAsMzMwODYsMzAxMzAsMzAzODIsMjEzMDUsMzAxNzQsMjA3MzEsMjM2MTcsMzU2OTIsMzE2ODcsMjA1NTksMjkyNTUsMzk1NzUsMzkxMjgsMjg0MTgsMjk5MjIsMzEwODAsMjU3MzUsMzA2MjksMjUzNDAsMzkwNTcsMzYxMzks''@;'; put 'put ''MjE2OTcsMzI4NTYsMjAwNTAsMjIzNzgsMzM1MjksMzM4MDUsMjQxNzksMjA5NzMsMjk5NDIsMzU3ODAsMjM2MzEsMjIzNjksMjc5MDAsMzkwNDcsMjMxMTAsMzA3NzIsMzk3NDgsMzY4NDMsMzE4OTMsMjEwNzgsMjUxNjksMzgxMzgsMjAxNjYsMzM2NzAsMzM4ODksMzM3NjksMzM5NzAsMjI0''@;'; put 'put ''ODQsMjY0MjAsMjIyNzUsMjYyMjIsMjgwMDYsMzU4ODksMjYzMzMsMjg2ODksMjYzOTksMjc0NTAsMjY2NDYsMjUxMTQsMjI5NzEsMTk5NzEsMjA5MzIsMjg0MjIsMjY1NzgsMjc3OTEsMjA4NTQsMjY4MjcsMjI4NTUsMjc0OTUsMzAwNTQsMjM4MjIsMzMwNDAsNDA3ODQsMjYwNzEsMzEwNDgs''@;'; put 'put ''MzEwNDEsMzk1NjksMzYyMTUsMjM2ODIsMjAwNjIsMjAyMjUsMjE1NTEsMjI4NjUsMzA3MzIsMjIxMjAsMjc2NjgsMzY4MDQsMjQzMjMsMjc3NzMsMjc4NzUsMzU3NTUsMjU0ODgsMzM1OTgsMzM1OTksMzM2MDEsMzM2MDIsMzM2MDQsMzM2MDUsMzM2MDgsMzM2MTAsMzM2MTEsMzM2MTIsMzM2''@;'; put 'put ''MTMsMzM2MTQsMzM2MTksMzM2MjEsMzM2MjIsMzM2MjMsMzM2MjQsMzM2MjUsMzM2MjksMzM2MzQsMzM2NDgsMzM2NDksMzM2NTAsMzM2NTEsMzM2NTIsMzM2NTMsMzM2NTQsMzM2NTcsMzM2NTgsMzM2NjIsMzM2NjMsMzM2NjQsMzM2NjUsMzM2NjYsMzM2NjcsMzM2NjgsMzM2NzEsMzM2NzIs''@;'; put 'put ''MzM2NzQsMzM2NzUsMzM2NzYsMzM2NzcsMzM2NzksMzM2ODAsMzM2ODEsMzM2ODQsMzM2ODUsMzM2ODYsMzM2ODcsMzM2ODksMzM2OTAsMzM2OTMsMzM2OTUsMzM2OTcsMzM2OTgsMzM2OTksMzM3MDAsMzM3MDEsMzM3MDIsMzM3MDMsMzM3MDgsMzM3MDksMzM3MTAsMzM3MTEsMzM3MTcsMzM3''@;'; put 'put ''MjMsMzM3MjYsMzM3MjcsMzM3MzAsMzM3MzEsMzM3MzIsMzM3MzQsMzM3MzYsMzM3MzcsMzM3MzksMzM3NDEsMzM3NDIsMzM3NDQsMzM3NDUsMzM3NDYsMzM3NDcsMzM3NDksMzM3NTEsMzM3NTMsMzM3NTQsMzM3NTUsMzM3NTgsMzM3NjIsMzM3NjMsMzM3NjQsMzM3NjYsMzM3NjcsMzM3Njgs''@;'; put 'put ''MzM3NzEsMzM3NzIsMzM3NzMsMjQ2ODgsMjc5NjUsMjkzMDEsMjUxOTAsMzgwMzAsMzgwODUsMjEzMTUsMzY4MDEsMzE2MTQsMjAxOTEsMzU4NzgsMjAwOTQsNDA2NjAsMzgwNjUsMzgwNjcsMjEwNjksMjg1MDgsMzY5NjMsMjc5NzMsMzU4OTIsMjI1NDUsMjM4ODQsMjc0MjQsMjc0NjUsMjY1''@;'; put 'put ''MzgsMjE1OTUsMzMxMDgsMzI2NTIsMjI2ODEsMzQxMDMsMjQzNzgsMjUyNTAsMjcyMDcsMzgyMDEsMjU5NzAsMjQ3MDgsMjY3MjUsMzA2MzEsMjAwNTIsMjAzOTIsMjQwMzksMzg4MDgsMjU3NzIsMzI3MjgsMjM3ODksMjA0MzEsMzEzNzMsMjA5OTksMzM1NDAsMTk5ODgsMjQ2MjMsMzEzNjMs''@;'; put 'put ''MzgwNTQsMjA0MDUsMjAxNDYsMzEyMDYsMjk3NDgsMjEyMjAsMzM0NjUsMjU4MTAsMzExNjUsMjM1MTcsMjc3NzcsMzg3MzgsMzY3MzEsMjc2ODIsMjA1NDIsMjEzNzUsMjgxNjUsMjU4MDYsMjYyMjgsMjc2OTYsMjQ3NzMsMzkwMzEsMzU4MzEsMjQxOTgsMjk3NTYsMzEzNTEsMzExNzksMTk5''@;'; put 'put ''OTIsMzcwNDEsMjk2OTksMjc3MTQsMjIyMzQsMzcxOTUsMjc4NDUsMzYyMzUsMjEzMDYsMzQ1MDIsMjYzNTQsMzY1MjcsMjM2MjQsMzk1MzcsMjgxOTIsMzM3NzQsMzM3NzUsMzM3NzksMzM3ODAsMzM3ODEsMzM3ODIsMzM3ODMsMzM3ODYsMzM3ODcsMzM3ODgsMzM3OTAsMzM3OTEsMzM3OTIs''@;'; put 'put ''MzM3OTQsMzM3OTcsMzM3OTksMzM4MDAsMzM4MDEsMzM4MDIsMzM4MDgsMzM4MTAsMzM4MTEsMzM4MTIsMzM4MTMsMzM4MTQsMzM4MTUsMzM4MTcsMzM4MTgsMzM4MTksMzM4MjIsMzM4MjMsMzM4MjQsMzM4MjUsMzM4MjYsMzM4MjcsMzM4MzMsMzM4MzQsMzM4MzUsMzM4MzYsMzM4MzcsMzM4''@;'; put 'put ''MzgsMzM4MzksMzM4NDAsMzM4NDIsMzM4NDMsMzM4NDQsMzM4NDUsMzM4NDYsMzM4NDcsMzM4NDksMzM4NTAsMzM4NTEsMzM4NTQsMzM4NTUsMzM4NTYsMzM4NTcsMzM4NTgsMzM4NTksMzM4NjAsMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjUsMzM4NjYsMzM4NjcsMzM4NjgsMzM4NjksMzM4NzAs''@;'; put 'put ''MzM4NzEsMzM4NzIsMzM4NzQsMzM4NzUsMzM4NzYsMzM4NzcsMzM4NzgsMzM4ODAsMzM4ODUsMzM4ODYsMzM4ODcsMzM4ODgsMzM4OTAsMzM4OTIsMzM4OTMsMzM4OTQsMzM4OTUsMzM4OTYsMzM4OTgsMzM5MDIsMzM5MDMsMzM5MDQsMzM5MDYsMzM5MDgsMzM5MTEsMzM5MTMsMzM5MTUsMzM5''@;'; put 'put ''MTYsMjE0NjIsMjMwOTQsNDA4NDMsMzYyNTksMjE0MzUsMjIyODAsMzkwNzksMjY0MzUsMzcyNzUsMjc4NDksMjA4NDAsMzAxNTQsMjUzMzEsMjkzNTYsMjEwNDgsMjExNDksMzI1NzAsMjg4MjAsMzAyNjQsMjEzNjQsNDA1MjIsMjcwNjMsMzA4MzAsMzg1OTIsMzUwMzMsMzI2NzYsMjg5ODIs''@;'; put 'put ''MjkxMjMsMjA4NzMsMjY1NzksMjk5MjQsMjI3NTYsMjU4ODAsMjIxOTksMzU3NTMsMzkyODYsMjUyMDAsMzI0NjksMjQ4MjUsMjg5MDksMjI3NjQsMjAxNjEsMjAxNTQsMjQ1MjUsMzg4ODcsMjAyMTksMzU3NDgsMjA5OTUsMjI5MjIsMzI0MjcsMjUxNzIsMjAxNzMsMjYwODUsMjUxMDIsMzM1''@;'; put 'put ''OTIsMzM5OTMsMzM2MzUsMzQ3MDEsMjkwNzYsMjgzNDIsMjM0ODEsMzI0NjYsMjA4ODcsMjU1NDUsMjY1ODAsMzI5MDUsMzM1OTMsMzQ4MzcsMjA3NTQsMjM0MTgsMjI5MTQsMzY3ODUsMjAwODMsMjc3NDEsMjA4MzcsMzUxMDksMzY3MTksMzg0NDYsMzQxMjIsMjk3OTAsMzgxNjAsMzgzODQs''@;'; put 'put ''MjgwNzAsMzM1MDksMjQzNjksMjU3NDYsMjc5MjIsMzM4MzIsMzMxMzQsNDAxMzEsMjI2MjIsMzYxODcsMTk5NzcsMjE0NDEsMzM5MTcsMzM5MTgsMzM5MTksMzM5MjAsMzM5MjEsMzM5MjMsMzM5MjQsMzM5MjUsMzM5MjYsMzM5MzAsMzM5MzMsMzM5MzUsMzM5MzYsMzM5MzcsMzM5MzgsMzM5''@;'; put 'put ''MzksMzM5NDAsMzM5NDEsMzM5NDIsMzM5NDQsMzM5NDYsMzM5NDcsMzM5NDksMzM5NTAsMzM5NTEsMzM5NTIsMzM5NTQsMzM5NTUsMzM5NTYsMzM5NTcsMzM5NTgsMzM5NTksMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjMsMzM5NjQsMzM5NjUsMzM5NjYsMzM5NjgsMzM5NjksMzM5NzEsMzM5NzMs''@;'; put 'put ''MzM5NzQsMzM5NzUsMzM5NzksMzM5ODAsMzM5ODIsMzM5ODQsMzM5ODYsMzM5ODcsMzM5ODksMzM5OTAsMzM5OTEsMzM5OTIsMzM5OTUsMzM5OTYsMzM5OTgsMzM5OTksMzQwMDIsMzQwMDQsMzQwMDUsMzQwMDcsMzQwMDgsMzQwMDksMzQwMTAsMzQwMTEsMzQwMTIsMzQwMTQsMzQwMTcsMzQw''@;'; put 'put ''MTgsMzQwMjAsMzQwMjMsMzQwMjQsMzQwMjUsMzQwMjYsMzQwMjcsMzQwMjksMzQwMzAsMzQwMzEsMzQwMzMsMzQwMzQsMzQwMzUsMzQwMzYsMzQwMzcsMzQwMzgsMzQwMzksMzQwNDAsMzQwNDEsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNDYsMzQwNDgsMzQwNDksMzQwNTAsMjAyNTQsMjU5NTUs''@;'; put 'put ''MjY3MDUsMjE5NzEsMjAwMDcsMjU2MjAsMzk1NzgsMjUxOTUsMjMyMzQsMjk3OTEsMzMzOTQsMjgwNzMsMjY4NjIsMjA3MTEsMzM2NzgsMzA3MjIsMjY0MzIsMjEwNDksMjc4MDEsMzI0MzMsMjA2NjcsMjE4NjEsMjkwMjIsMzE1NzksMjYxOTQsMjk2NDIsMzM1MTUsMjY0NDEsMjM2NjUsMjEw''@;'; put 'put ''MjQsMjkwNTMsMzQ5MjMsMzgzNzgsMzg0ODUsMjU3OTcsMzYxOTMsMzMyMDMsMjE4OTIsMjc3MzMsMjUxNTksMzI1NTgsMjI2NzQsMjAyNjAsMjE4MzAsMzYxNzUsMjYxODgsMTk5NzgsMjM1NzgsMzUwNTksMjY3ODYsMjU0MjIsMzEyNDUsMjg5MDMsMzM0MjEsMjEyNDIsMzg5MDIsMjM1Njks''@;'; put 'put ''MjE3MzYsMzcwNDUsMzI0NjEsMjI4ODIsMzYxNzAsMzQ1MDMsMzMyOTIsMzMyOTMsMzYxOTgsMjU2NjgsMjM1NTYsMjQ5MTMsMjgwNDEsMzEwMzgsMzU3NzQsMzA3NzUsMzAwMDMsMjE2MjcsMjAyODAsMzY1MjMsMjgxNDUsMjMwNzIsMzI0NTMsMzEwNzAsMjc3ODQsMjM0NTcsMjMxNTgsMjk5''@;'; put 'put ''NzgsMzI5NTgsMjQ5MTAsMjgxODMsMjI3NjgsMjk5ODMsMjk5ODksMjkyOTgsMjEzMTksMzI0OTksMzQwNTEsMzQwNTIsMzQwNTMsMzQwNTQsMzQwNTUsMzQwNTYsMzQwNTcsMzQwNTgsMzQwNTksMzQwNjEsMzQwNjIsMzQwNjMsMzQwNjQsMzQwNjYsMzQwNjgsMzQwNjksMzQwNzAsMzQwNzIs''@;'; put 'put ''MzQwNzMsMzQwNzUsMzQwNzYsMzQwNzcsMzQwNzgsMzQwODAsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODYsMzQwODcsMzQwODgsMzQwODksMzQwOTAsMzQwOTMsMzQwOTQsMzQwOTUsMzQwOTYsMzQwOTcsMzQwOTgsMzQwOTksMzQxMDAsMzQxMDEsMzQxMDIsMzQxMTAsMzQxMTEsMzQx''@;'; put 'put ''MTIsMzQxMTMsMzQxMTQsMzQxMTYsMzQxMTcsMzQxMTgsMzQxMTksMzQxMjMsMzQxMjQsMzQxMjUsMzQxMjYsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzIsMzQxMzMsMzQxMzUsMzQxMzYsMzQxMzgsMzQxMzksMzQxNDAsMzQxNDEsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYs''@;'; put 'put ''MzQxNDcsMzQxNDksMzQxNTAsMzQxNTEsMzQxNTMsMzQxNTQsMzQxNTUsMzQxNTYsMzQxNTcsMzQxNTgsMzQxNTksMzQxNjAsMzQxNjEsMzQxNjMsMzQxNjUsMzQxNjYsMzQxNjcsMzQxNjgsMzQxNzIsMzQxNzMsMzQxNzUsMzQxNzYsMzQxNzcsMzA0NjUsMzA0MjcsMjEwOTcsMzI5ODgsMjIz''@;'; put 'put ''MDcsMjQwNzIsMjI4MzMsMjk0MjIsMjYwNDUsMjgyODcsMzU3OTksMjM2MDgsMzQ0MTcsMjEzMTMsMzA3MDcsMjUzNDIsMjYxMDIsMjAxNjAsMzkxMzUsMzQ0MzIsMjM0NTQsMzU3ODIsMjE0OTAsMzA2OTAsMjAzNTEsMjM2MzAsMzk1NDIsMjI5ODcsMjQzMzUsMzEwMzQsMjI3NjMsMTk5OTAs''@;'; put 'put ''MjY2MjMsMjAxMDcsMjUzMjUsMzU0NzUsMzY4OTMsMjExODMsMjYxNTksMjE5ODAsMjIxMjQsMzY4NjYsMjAxODEsMjAzNjUsMzczMjIsMzkyODAsMjc2NjMsMjQwNjYsMjQ2NDMsMjM0NjAsMzUyNzAsMzU3OTcsMjU5MTAsMjUxNjMsMzkzMTgsMjM0MzIsMjM1NTEsMjU0ODAsMjE4MDYsMjE0''@;'; put 'put ''NjMsMzAyNDYsMjA4NjEsMzQwOTIsMjY1MzAsMjY4MDMsMjc1MzAsMjUyMzQsMzY3NTUsMjE0NjAsMzMyOTgsMjgxMTMsMzAwOTUsMjAwNzAsMzYxNzQsMjM0MDgsMjkwODcsMzQyMjMsMjYyNTcsMjYzMjksMzI2MjYsMzQ1NjAsNDA2NTMsNDA3MzYsMjM2NDYsMjY0MTUsMzY4NDgsMjY2NDEs''@;'; put 'put ''MjY0NjMsMjUxMDEsMzE0NDYsMjI2NjEsMjQyNDYsMjU5NjgsMjg0NjUsMzQxNzgsMzQxNzksMzQxODIsMzQxODQsMzQxODUsMzQxODYsMzQxODcsMzQxODgsMzQxODksMzQxOTAsMzQxOTIsMzQxOTMsMzQxOTQsMzQxOTUsMzQxOTYsMzQxOTcsMzQxOTgsMzQxOTksMzQyMDAsMzQyMDEsMzQy''@;'; put 'put ''MDIsMzQyMDUsMzQyMDYsMzQyMDcsMzQyMDgsMzQyMDksMzQyMTAsMzQyMTEsMzQyMTMsMzQyMTQsMzQyMTUsMzQyMTcsMzQyMTksMzQyMjAsMzQyMjEsMzQyMjUsMzQyMjYsMzQyMjcsMzQyMjgsMzQyMjksMzQyMzAsMzQyMzIsMzQyMzQsMzQyMzUsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzks''@;'; put 'put ''MzQyNDAsMzQyNDIsMzQyNDMsMzQyNDQsMzQyNDUsMzQyNDYsMzQyNDcsMzQyNDgsMzQyNTAsMzQyNTEsMzQyNTIsMzQyNTMsMzQyNTQsMzQyNTcsMzQyNTgsMzQyNjAsMzQyNjIsMzQyNjMsMzQyNjQsMzQyNjUsMzQyNjYsMzQyNjcsMzQyNjksMzQyNzAsMzQyNzEsMzQyNzIsMzQyNzMsMzQy''@;'; put 'put ''NzQsMzQyNzUsMzQyNzcsMzQyNzgsMzQyNzksMzQyODAsMzQyODIsMzQyODMsMzQyODQsMzQyODUsMzQyODYsMzQyODcsMzQyODgsMzQyODksMzQyOTAsMzQyOTEsMzQyOTIsMzQyOTMsMzQyOTQsMzQyOTUsMzQyOTYsMjQ2NjEsMjEwNDcsMzI3ODEsMjU2ODQsMzQ5MjgsMjk5OTMsMjQwNjks''@;'; put 'put ''MjY2NDMsMjUzMzIsMzg2ODQsMjE0NTIsMjkyNDUsMzU4NDEsMjc3MDAsMzA1NjEsMzEyNDYsMjE1NTAsMzA2MzYsMzkwMzQsMzMzMDgsMzU4MjgsMzA4MDUsMjYzODgsMjg4NjUsMjYwMzEsMjU3NDksMjIwNzAsMjQ2MDUsMzExNjksMjE0OTYsMTk5OTcsMjc1MTUsMzI5MDIsMjM1NDYsMjE5''@;'; put 'put ''ODcsMjIyMzUsMjAyODIsMjAyODQsMzkyODIsMjQwNTEsMjY0OTQsMzI4MjQsMjQ1NzgsMzkwNDIsMzY4NjUsMjM0MzUsMzU3NzIsMzU4MjksMjU2MjgsMzMzNjgsMjU4MjIsMjIwMTMsMzM0ODcsMzcyMjEsMjA0MzksMzIwMzIsMzY4OTUsMzE5MDMsMjA3MjMsMjI2MDksMjgzMzUsMjM0ODcs''@;'; put 'put ''MzU3ODUsMzI4OTksMzcyNDAsMzM5NDgsMzE2MzksMzQ0MjksMzg1MzksMzg1NDMsMzI0ODUsMzk2MzUsMzA4NjIsMjM2ODEsMzEzMTksMzY5MzAsMzg1NjcsMzEwNzEsMjMzODUsMjU0MzksMzE0OTksMzQwMDEsMjY3OTcsMjE3NjYsMzI1NTMsMjk3MTIsMzIwMzQsMzgxNDUsMjUxNTIsMjI2''@;'; put 'put ''MDQsMjAxODIsMjM0MjcsMjI5MDUsMjI2MTIsMzQyOTcsMzQyOTgsMzQzMDAsMzQzMDEsMzQzMDIsMzQzMDQsMzQzMDUsMzQzMDYsMzQzMDcsMzQzMDgsMzQzMTAsMzQzMTEsMzQzMTIsMzQzMTMsMzQzMTQsMzQzMTUsMzQzMTYsMzQzMTcsMzQzMTgsMzQzMTksMzQzMjAsMzQzMjIsMzQzMjMs''@;'; put 'put ''MzQzMjQsMzQzMjUsMzQzMjcsMzQzMjgsMzQzMjksMzQzMzAsMzQzMzEsMzQzMzIsMzQzMzMsMzQzMzQsMzQzMzUsMzQzMzYsMzQzMzcsMzQzMzgsMzQzMzksMzQzNDAsMzQzNDEsMzQzNDIsMzQzNDQsMzQzNDYsMzQzNDcsMzQzNDgsMzQzNDksMzQzNTAsMzQzNTEsMzQzNTIsMzQzNTMsMzQz''@;'; put 'put ''NTQsMzQzNTUsMzQzNTYsMzQzNTcsMzQzNTgsMzQzNTksMzQzNjEsMzQzNjIsMzQzNjMsMzQzNjUsMzQzNjYsMzQzNjcsMzQzNjgsMzQzNjksMzQzNzAsMzQzNzEsMzQzNzIsMzQzNzMsMzQzNzQsMzQzNzUsMzQzNzYsMzQzNzcsMzQzNzgsMzQzNzksMzQzODAsMzQzODYsMzQzODcsMzQzODks''@;'; put 'put ''MzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTUsMzQzOTYsMzQzOTcsMzQzOTksMzQ0MDAsMzQ0MDEsMzQ0MDMsMzQ0MDQsMzQ0MDUsMzQ0MDYsMzQ0MDcsMzQ0MDgsMzQ0MDksMzQ0MTAsMjk1NDksMjUzNzQsMzY0MjcsMzYzNjcsMzI5NzQsMzM0OTIsMjUyNjAsMjE0ODgsMjc4ODgsMzcy''@;'; put 'put ''MTQsMjI4MjYsMjQ1NzcsMjc3NjAsMjIzNDksMjU2NzQsMzYxMzgsMzAyNTEsMjgzOTMsMjIzNjMsMjcyNjQsMzAxOTIsMjg1MjUsMzU4ODUsMzU4NDgsMjIzNzQsMjc2MzEsMzQ5NjIsMzA4OTksMjU1MDYsMjE0OTcsMjg4NDUsMjc3NDgsMjI2MTYsMjU2NDIsMjI1MzAsMjY4NDgsMzMxNzks''@;'; put 'put ''MjE3NzYsMzE5NTgsMjA1MDQsMzY1MzgsMjgxMDgsMzYyNTUsMjg5MDcsMjU0ODcsMjgwNTksMjgzNzIsMzI0ODYsMzM3OTYsMjY2OTEsMzY4NjcsMjgxMjAsMzg1MTgsMzU3NTIsMjI4NzEsMjkzMDUsMzQyNzYsMzMxNTAsMzAxNDAsMzU0NjYsMjY3OTksMjEwNzYsMzYzODYsMzgxNjEsMjU1''@;'; put 'put ''NTIsMzkwNjQsMzY0MjAsMjE4ODQsMjAzMDcsMjYzNjcsMjIxNTksMjQ3ODksMjgwNTMsMjEwNTksMjM2MjUsMjI4MjUsMjgxNTUsMjI2MzUsM2U0LDI5OTgwLDI0Njg0LDMzMzAwLDMzMDk0LDI1MzYxLDI2NDY1LDM2ODM0LDMwNTIyLDM2MzM5LDM2MTQ4LDM4MDgxLDI0MDg2LDIxMzgxLDIx''@;'; put 'put ''NTQ4LDI4ODY3LDM0NDEzLDM0NDE1LDM0NDE2LDM0NDE4LDM0NDE5LDM0NDIwLDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI0LDM0NDM1LDM0NDM2LDM0NDM3LDM0NDM4LDM0NDM5LDM0NDQwLDM0NDQxLDM0NDQ2LDM0NDQ3LDM0NDQ4LDM0NDQ5LDM0NDUwLDM0NDUyLDM0NDU0LDM0NDU1LDM0NDU2''@;'; put 'put ''LDM0NDU3LDM0NDU4LDM0NDU5LDM0NDYyLDM0NDYzLDM0NDY0LDM0NDY1LDM0NDY2LDM0NDY5LDM0NDcwLDM0NDc1LDM0NDc3LDM0NDc4LDM0NDgyLDM0NDgzLDM0NDg3LDM0NDg4LDM0NDg5LDM0NDkxLDM0NDkyLDM0NDkzLDM0NDk0LDM0NDk1LDM0NDk3LDM0NDk4LDM0NDk5LDM0NTAxLDM0''@;'; put 'put ''NTA0LDM0NTA4LDM0NTA5LDM0NTE0LDM0NTE1LDM0NTE3LDM0NTE4LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI1LDM0NTI4LDM0NTI5LDM0NTMwLDM0NTMxLDM0NTMzLDM0NTM0LDM0NTM1LDM0NTM2LDM0NTM4LDM0NTM5LDM0NTQwLDM0NTQzLDM0NTQ5LDM0NTUwLDM0NTUxLDM0NTU0LDM0NTU1''@;'; put 'put ''LDM0NTU2LDM0NTU3LDM0NTU5LDM0NTYxLDM0NTY0LDM0NTY1LDM0NTY2LDM0NTcxLDM0NTcyLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc3LDM0NTgwLDM0NTgyLDI3NzEyLDI0MzExLDIwNTcyLDIwMTQxLDI0MjM3LDI1NDAyLDMzMzUxLDM2ODkwLDI2NzA0LDM3MjMwLDMwNjQzLDIxNTE2LDM4''@;'; put 'put ''MTA4LDI0NDIwLDMxNDYxLDI2NzQyLDI1NDEzLDMxNTcwLDMyNDc5LDMwMTcxLDIwNTk5LDI1MjM3LDIyODM2LDM2ODc5LDIwOTg0LDMxMTcxLDMxMzYxLDIyMjcwLDI0NDY2LDM2ODg0LDI4MDM0LDIzNjQ4LDIyMzAzLDIxNTIwLDIwODIwLDI4MjM3LDIyMjQyLDI1NTEyLDM5MDU5LDMzMTUx''@;'; put 'put ''LDM0NTgxLDM1MTE0LDM2ODY0LDIxNTM0LDIzNjYzLDMzMjE2LDI1MzAyLDI1MTc2LDMzMDczLDQwNTAxLDM4NDY0LDM5NTM0LDM5NTQ4LDI2OTI1LDIyOTQ5LDI1Mjk5LDIxODIyLDI1MzY2LDIxNzAzLDM0NTIxLDI3OTY0LDIzMDQzLDI5OTI2LDM0OTcyLDI3NDk4LDIyODA2LDM1OTE2LDI0''@;'; put 'put ''MzY3LDI4Mjg2LDI5NjA5LDM5MDM3LDIwMDI0LDI4OTE5LDIzNDM2LDMwODcxLDI1NDA1LDI2MjAyLDMwMzU4LDI0Nzc5LDIzNDUxLDIzMTEzLDE5OTc1LDMzMTA5LDI3NzU0LDI5NTc5LDIwMTI5LDI2NTA1LDMyNTkzLDI0NDQ4LDI2MTA2LDI2Mzk1LDI0NTM2LDIyOTE2LDIzMDQxLDM0NTg1''@;'; put 'put ''LDM0NTg3LDM0NTg5LDM0NTkxLDM0NTkyLDM0NTk2LDM0NTk4LDM0NTk5LDM0NjAwLDM0NjAyLDM0NjAzLDM0NjA0LDM0NjA1LDM0NjA3LDM0NjA4LDM0NjEwLDM0NjExLDM0NjEzLDM0NjE0LDM0NjE2LDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjI0LDM0NjI1LDM0NjI2LDM0NjI3LDM0''@;'; put 'put ''NjI4LDM0NjI5LDM0NjMwLDM0NjM0LDM0NjM1LDM0NjM3LDM0NjM5LDM0NjQwLDM0NjQxLDM0NjQyLDM0NjQ0LDM0NjQ1LDM0NjQ2LDM0NjQ4LDM0NjUwLDM0NjUxLDM0NjUyLDM0NjUzLDM0NjU0LDM0NjU1LDM0NjU3LDM0NjU4LDM0NjYyLDM0NjYzLDM0NjY0LDM0NjY1LDM0NjY2LDM0NjY3''@;'; put 'put ''LDM0NjY4LDM0NjY5LDM0NjcxLDM0NjczLDM0Njc0LDM0Njc1LDM0Njc3LDM0Njc5LDM0NjgwLDM0NjgxLDM0NjgyLDM0Njg3LDM0Njg4LDM0Njg5LDM0NjkyLDM0Njk0LDM0Njk1LDM0Njk3LDM0Njk4LDM0NzAwLDM0NzAyLDM0NzAzLDM0NzA0LDM0NzA1LDM0NzA2LDM0NzA4LDM0NzA5LDM0''@;'; put 'put ''NzEwLDM0NzEyLDM0NzEzLDM0NzE0LDM0NzE1LDM0NzE2LDM0NzE3LDM0NzE4LDM0NzIwLDM0NzIxLDM0NzIyLDM0NzIzLDM0NzI0LDI0MDEzLDI0NDk0LDIxMzYxLDM4ODg2LDM2ODI5LDI2NjkzLDIyMjYwLDIxODA3LDI0Nzk5LDIwMDI2LDI4NDkzLDMyNTAwLDMzNDc5LDMzODA2LDIyOTk2''@;'; put 'put ''LDIwMjU1LDIwMjY2LDIzNjE0LDMyNDI4LDI2NDEwLDM0MDc0LDIxNjE5LDMwMDMxLDMyOTYzLDIxODkwLDM5NzU5LDIwMzAxLDI4MjA1LDM1ODU5LDIzNTYxLDI0OTQ0LDIxMzU1LDMwMjM5LDI4MjAxLDM0NDQyLDI1OTkxLDM4Mzk1LDMyNDQxLDIxNTYzLDMxMjgzLDMyMDEwLDM4MzgyLDIx''@;'; put 'put ''OTg1LDMyNzA1LDI5OTM0LDI1MzczLDM0NTgzLDI4MDY1LDMxMzg5LDI1MTA1LDI2MDE3LDIxMzUxLDI1NTY5LDI3Nzc5LDI0MDQzLDIxNTk2LDM4MDU2LDIwMDQ0LDI3NzQ1LDM1ODIwLDIzNjI3LDI2MDgwLDMzNDM2LDI2NzkxLDIxNTY2LDIxNTU2LDI3NTk1LDI3NDk0LDIwMTE2LDI1NDEw''@;'; put 'put ''LDIxMzIwLDMzMzEwLDIwMjM3LDIwMzk4LDIyMzY2LDI1MDk4LDM4NjU0LDI2MjEyLDI5Mjg5LDIxMjQ3LDIxMTUzLDI0NzM1LDM1ODIzLDI2MTMyLDI5MDgxLDI2NTEyLDM1MTk5LDMwODAyLDMwNzE3LDI2MjI0LDIyMDc1LDIxNTYwLDM4MTc3LDI5MzA2LDM0NzI1LDM0NzI2LDM0NzI3LDM0''@;'; put 'put ''NzI5LDM0NzMwLDM0NzM0LDM0NzM2LDM0NzM3LDM0NzM4LDM0NzQwLDM0NzQyLDM0NzQzLDM0NzQ0LDM0NzQ1LDM0NzQ3LDM0NzQ4LDM0NzUwLDM0NzUxLDM0NzUzLDM0NzU0LDM0NzU1LDM0NzU2LDM0NzU3LDM0NzU5LDM0NzYwLDM0NzYxLDM0NzY0LDM0NzY1LDM0NzY2LDM0NzY3LDM0NzY4''@;'; put 'put ''LDM0NzcyLDM0NzczLDM0Nzc0LDM0Nzc1LDM0Nzc2LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgxLDM0NzgyLDM0NzgzLDM0Nzg1LDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0NzkwLDM0NzkxLDM0NzkyLDM0NzkzLDM0Nzk1LDM0Nzk2LDM0Nzk3LDM0Nzk5LDM0ODAwLDM0ODAxLDM0ODAyLDM0ODAzLDM0''@;'; put 'put ''ODA0LDM0ODA1LDM0ODA2LDM0ODA3LDM0ODA4LDM0ODEwLDM0ODExLDM0ODEyLDM0ODEzLDM0ODE1LDM0ODE2LDM0ODE3LDM0ODE4LDM0ODIwLDM0ODIxLDM0ODIyLDM0ODIzLDM0ODI0LDM0ODI1LDM0ODI3LDM0ODI4LDM0ODI5LDM0ODMwLDM0ODMxLDM0ODMyLDM0ODMzLDM0ODM0LDM0ODM2''@;'; put 'put ''LDM0ODM5LDM0ODQwLDM0ODQxLDM0ODQyLDM0ODQ0LDM0ODQ1LDM0ODQ2LDM0ODQ3LDM0ODQ4LDM0ODUxLDMxMjMyLDI0Njg3LDI0MDc2LDI0NzEzLDMzMTgxLDIyODA1LDI0Nzk2LDI5MDYwLDI4OTExLDI4MzMwLDI3NzI4LDI5MzEyLDI3MjY4LDM0OTg5LDI0MTA5LDIwMDY0LDIzMjE5LDIx''@;'; put 'put ''OTE2LDM4MTE1LDI3OTI3LDMxOTk1LDM4NTUzLDI1MTAzLDMyNDU0LDMwNjA2LDM0NDMwLDIxMjgzLDM4Njg2LDM2NzU4LDI2MjQ3LDIzNzc3LDIwMzg0LDI5NDIxLDE5OTc5LDIxNDE0LDIyNzk5LDIxNTIzLDI1NDcyLDM4MTg0LDIwODA4LDIwMTg1LDQwMDkyLDMyNDIwLDIxNjg4LDM2MTMy''@;'; put 'put ''LDM0OTAwLDMzMzM1LDM4Mzg2LDI4MDQ2LDI0MzU4LDIzMjQ0LDI2MTc0LDM4NTA1LDI5NjE2LDI5NDg2LDIxNDM5LDMzMTQ2LDM5MzAxLDMyNjczLDIzNDY2LDM4NTE5LDM4NDgwLDMyNDQ3LDMwNDU2LDIxNDEwLDM4MjYyLDM5MzIxLDMxNjY1LDM1MTQwLDI4MjQ4LDIwMDY1LDMyNzI0LDMx''@;'; put 'put ''MDc3LDM1ODE0LDI0ODE5LDIxNzA5LDIwMTM5LDM5MDMzLDI0MDU1LDI3MjMzLDIwNjg3LDIxNTIxLDM1OTM3LDMzODMxLDMwODEzLDM4NjYwLDIxMDY2LDIxNzQyLDIyMTc5LDM4MTQ0LDI4MDQwLDIzNDc3LDI4MTAyLDI2MTk1LDM0ODUyLDM0ODUzLDM0ODU0LDM0ODU1LDM0ODU2LDM0ODU3''@;'; put 'put ''LDM0ODU4LDM0ODU5LDM0ODYwLDM0ODYxLDM0ODYyLDM0ODYzLDM0ODY0LDM0ODY1LDM0ODY3LDM0ODY4LDM0ODY5LDM0ODcwLDM0ODcxLDM0ODcyLDM0ODc0LDM0ODc1LDM0ODc3LDM0ODc4LDM0ODc5LDM0ODgxLDM0ODgyLDM0ODgzLDM0ODg2LDM0ODg3LDM0ODg4LDM0ODg5LDM0ODkwLDM0''@;'; put 'put ''ODkxLDM0ODk0LDM0ODk1LDM0ODk2LDM0ODk3LDM0ODk4LDM0ODk5LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA3LDM0OTA4LDM0OTA5LDM0OTEwLDM0OTExLDM0OTEyLDM0OTE4LDM0OTE5LDM0OTIyLDM0OTI1LDM0OTI3LDM0OTI5LDM0OTMxLDM0OTMyLDM0OTMzLDM0OTM0LDM0OTM2''@;'; put 'put ''LDM0OTM3LDM0OTM4LDM0OTM5LDM0OTQwLDM0OTQ0LDM0OTQ3LDM0OTUwLDM0OTUxLDM0OTUzLDM0OTU0LDM0OTU2LDM0OTU4LDM0OTU5LDM0OTYwLDM0OTYxLDM0OTYzLDM0OTY0LDM0OTY1LDM0OTY3LDM0OTY4LDM0OTY5LDM0OTcwLDM0OTcxLDM0OTczLDM0OTc0LDM0OTc1LDM0OTc2LDM0''@;'; put 'put ''OTc3LDM0OTc5LDM0OTgxLDM0OTgyLDM0OTgzLDM0OTg0LDM0OTg1LDM0OTg2LDIzNTY3LDIzMzg5LDI2NjU3LDMyOTE4LDIxODgwLDMxNTA1LDI1OTI4LDI2OTY0LDIwMTIzLDI3NDYzLDM0NjM4LDM4Nzk1LDIxMzI3LDI1Mzc1LDI1NjU4LDM3MDM0LDI2MDEyLDMyOTYxLDM1ODU2LDIwODg5''@;'; put 'put ''LDI2ODAwLDIxMzY4LDM0ODA5LDI1MDMyLDI3ODQ0LDI3ODk5LDM1ODc0LDIzNjMzLDM0MjE4LDMzNDU1LDM4MTU2LDI3NDI3LDM2NzYzLDI2MDMyLDI0NTcxLDI0NTE1LDIwNDQ5LDM0ODg1LDI2MTQzLDMzMTI1LDI5NDgxLDI0ODI2LDIwODUyLDIxMDA5LDIyNDExLDI0NDE4LDM3MDI2LDM0''@;'; put 'put ''ODkyLDM3MjY2LDI0MTg0LDI2NDQ3LDI0NjE1LDIyOTk1LDIwODA0LDIwOTgyLDMzMDE2LDIxMjU2LDI3NzY5LDM4NTk2LDI5MDY2LDIwMjQxLDIwNDYyLDMyNjcwLDI2NDI5LDIxOTU3LDM4MTUyLDMxMTY4LDM0OTY2LDMyNDgzLDIyNjg3LDI1MTAwLDM4NjU2LDM0Mzk0LDIyMDQwLDM5MDM1''@;'; put 'put ''LDI0NDY0LDM1NzY4LDMzOTg4LDM3MjA3LDIxNDY1LDI2MDkzLDI0MjA3LDMwMDQ0LDI0Njc2LDMyMTEwLDIzMTY3LDMyNDkwLDMyNDkzLDM2NzEzLDIxOTI3LDIzNDU5LDI0NzQ4LDI2MDU5LDI5NTcyLDM0OTg4LDM0OTkwLDM0OTkxLDM0OTkyLDM0OTk0LDM0OTk1LDM0OTk2LDM0OTk3LDM0''@;'; put 'put ''OTk4LDM1ZTMsMzUwMDEsMzUwMDIsMzUwMDMsMzUwMDUsMzUwMDYsMzUwMDcsMzUwMDgsMzUwMTEsMzUwMTIsMzUwMTUsMzUwMTYsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjMsMzUwMjQsMzUwMjUsMzUwMjcsMzUwMzAsMzUwMzEsMzUwMzQsMzUwMzUsMzUwMzYsMzUwMzcsMzUwMzgs''@;'; put 'put ''MzUwNDAsMzUwNDEsMzUwNDYsMzUwNDcsMzUwNDksMzUwNTAsMzUwNTEsMzUwNTIsMzUwNTMsMzUwNTQsMzUwNTUsMzUwNTgsMzUwNjEsMzUwNjIsMzUwNjMsMzUwNjYsMzUwNjcsMzUwNjksMzUwNzEsMzUwNzIsMzUwNzMsMzUwNzUsMzUwNzYsMzUwNzcsMzUwNzgsMzUwNzksMzUwODAsMzUw''@;'; put 'put ''ODEsMzUwODMsMzUwODQsMzUwODUsMzUwODYsMzUwODcsMzUwODksMzUwOTIsMzUwOTMsMzUwOTQsMzUwOTUsMzUwOTYsMzUxMDAsMzUxMDEsMzUxMDIsMzUxMDMsMzUxMDQsMzUxMDYsMzUxMDcsMzUxMDgsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMTMsMzUxMTYsMzUxMTcsMzUxMTgsMzUxMTks''@;'; put 'put ''MzUxMjEsMzUxMjIsMzUxMjMsMzUxMjUsMzUxMjcsMzY4NzMsMzAzMDcsMzA1MDUsMzI0NzQsMzg3NzIsMzQyMDMsMjMzOTgsMzEzNDgsMzg2MzQsMzQ4ODAsMjExOTUsMjkwNzEsMjQ0OTAsMjYwOTIsMzU4MTAsMjM1NDcsMzk1MzUsMjQwMzMsMjc1MjksMjc3MzksMzU3NTcsMzU3NTksMzY4''@;'; put 'put ''NzQsMzY4MDUsMjEzODcsMjUyNzYsNDA0ODYsNDA0OTMsMjE1NjgsMjAwMTEsMzM0NjksMjkyNzMsMzQ0NjAsMjM4MzAsMzQ5MDUsMjgwNzksMzg1OTcsMjE3MTMsMjAxMjIsMzU3NjYsMjg5MzcsMjE2OTMsMzg0MDksMjg4OTUsMjgxNTMsMzA0MTYsMjAwMDUsMzA3NDAsMzQ1NzgsMjM3MjEs''@;'; put 'put ''MjQzMTAsMzUzMjgsMzkwNjgsMzg0MTQsMjg4MTQsMjc4MzksMjI4NTIsMjU1MTMsMzA1MjQsMzQ4OTMsMjg0MzYsMzMzOTUsMjI1NzYsMjkxNDEsMjEzODgsMzA3NDYsMzg1OTMsMjE3NjEsMjQ0MjIsMjg5NzYsMjM0NzYsMzU4NjYsMzk1NjQsMjc1MjMsMjI4MzAsNDA0OTUsMzEyMDcsMjY0''@;'; put 'put ''NzIsMjUxOTYsMjAzMzUsMzAxMTMsMzI2NTAsMjc5MTUsMzg0NTEsMjc2ODcsMjAyMDgsMzAxNjIsMjA4NTksMjY2NzksMjg0NzgsMzY5OTIsMzMxMzYsMjI5MzQsMjk4MTQsMzUxMjgsMzUxMjksMzUxMzAsMzUxMzEsMzUxMzIsMzUxMzMsMzUxMzQsMzUxMzUsMzUxMzYsMzUxMzgsMzUxMzks''@;'; put 'put ''MzUxNDEsMzUxNDIsMzUxNDMsMzUxNDQsMzUxNDUsMzUxNDYsMzUxNDcsMzUxNDgsMzUxNDksMzUxNTAsMzUxNTEsMzUxNTIsMzUxNTMsMzUxNTQsMzUxNTUsMzUxNTYsMzUxNTcsMzUxNTgsMzUxNTksMzUxNjAsMzUxNjEsMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjUsMzUxNjgsMzUxNjksMzUx''@;'; put 'put ''NzAsMzUxNzEsMzUxNzIsMzUxNzMsMzUxNzUsMzUxNzYsMzUxNzcsMzUxNzgsMzUxNzksMzUxODAsMzUxODEsMzUxODIsMzUxODMsMzUxODQsMzUxODUsMzUxODYsMzUxODcsMzUxODgsMzUxODksMzUxOTAsMzUxOTEsMzUxOTIsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTcsMzUxOTgsMzUyMDAs''@;'; put 'put ''MzUyMDIsMzUyMDQsMzUyMDUsMzUyMDcsMzUyMDgsMzUyMDksMzUyMTAsMzUyMTEsMzUyMTIsMzUyMTMsMzUyMTQsMzUyMTUsMzUyMTYsMzUyMTcsMzUyMTgsMzUyMTksMzUyMjAsMzUyMjEsMzUyMjIsMzUyMjMsMzUyMjQsMzUyMjUsMzUyMjYsMzUyMjcsMzUyMjgsMzUyMjksMzUyMzAsMzUy''@;'; put 'put ''MzEsMzUyMzIsMzUyMzMsMjU2NzEsMjM1OTEsMzY5NjUsMzEzNzcsMzU4NzUsMjMwMDIsMjE2NzYsMzMyODAsMzM2NDcsMzUyMDEsMzI3NjgsMjY5MjgsMjIwOTQsMzI4MjIsMjkyMzksMzczMjYsMjA5MTgsMjAwNjMsMzkwMjksMjU0OTQsMTk5OTQsMjE0OTQsMjYzNTUsMzMwOTksMjI4MTIs''@;'; put 'put ''MjgwODIsMTk5NjgsMjI3NzcsMjEzMDcsMjU1NTgsMzgxMjksMjAzODEsMjAyMzQsMzQ5MTUsMzkwNTYsMjI4MzksMzY5NTEsMzEyMjcsMjAyMDIsMzMwMDgsMzAwOTcsMjc3NzgsMjM0NTIsMjMwMTYsMjQ0MTMsMjY4ODUsMzQ0MzMsMjA1MDYsMjQwNTAsMjAwNTcsMzA2OTEsMjAxOTcsMzM0''@;'; put 'put ''MDIsMjUyMzMsMjYxMzEsMzcwMDksMjM2NzMsMjAxNTksMjQ0NDEsMzMyMjIsMzY5MjAsMzI5MDAsMzAxMjMsMjAxMzQsMzUwMjgsMjQ4NDcsMjc1ODksMjQ1MTgsMjAwNDEsMzA0MTAsMjgzMjIsMzU4MTEsMzU3NTgsMzU4NTAsMzU3OTMsMjQzMjIsMzI3NjQsMzI3MTYsMzI0NjIsMzM1ODks''@;'; put 'put ''MzM2NDMsMjIyNDAsMjc1NzUsMzg4OTksMzg0NTIsMjMwMzUsMjE1MzUsMzgxMzQsMjgxMzksMjM0OTMsMzkyNzgsMjM2MDksMjQzNDEsMzg1NDQsMzUyMzQsMzUyMzUsMzUyMzYsMzUyMzcsMzUyMzgsMzUyMzksMzUyNDAsMzUyNDEsMzUyNDIsMzUyNDMsMzUyNDQsMzUyNDUsMzUyNDYsMzUy''@;'; put 'put ''NDcsMzUyNDgsMzUyNDksMzUyNTAsMzUyNTEsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNTYsMzUyNTcsMzUyNTgsMzUyNTksMzUyNjAsMzUyNjEsMzUyNjIsMzUyNjMsMzUyNjQsMzUyNjcsMzUyNzcsMzUyODMsMzUyODQsMzUyODUsMzUyODcsMzUyODgsMzUyODksMzUyOTEsMzUyOTMs''@;'; put 'put ''MzUyOTUsMzUyOTYsMzUyOTcsMzUyOTgsMzUzMDAsMzUzMDMsMzUzMDQsMzUzMDUsMzUzMDYsMzUzMDgsMzUzMDksMzUzMTAsMzUzMTIsMzUzMTMsMzUzMTQsMzUzMTYsMzUzMTcsMzUzMTgsMzUzMTksMzUzMjAsMzUzMjEsMzUzMjIsMzUzMjMsMzUzMjQsMzUzMjUsMzUzMjYsMzUzMjcsMzUz''@;'; put 'put ''MjksMzUzMzAsMzUzMzEsMzUzMzIsMzUzMzMsMzUzMzQsMzUzMzYsMzUzMzcsMzUzMzgsMzUzMzksMzUzNDAsMzUzNDEsMzUzNDIsMzUzNDMsMzUzNDQsMzUzNDUsMzUzNDYsMzUzNDcsMzUzNDgsMzUzNDksMzUzNTAsMzUzNTEsMzUzNTIsMzUzNTMsMzUzNTQsMzUzNTUsMzUzNTYsMzUzNTcs''@;'; put 'put ''MjEzNjAsMzM1MjEsMjcxODUsMjMxNTYsNDA1NjAsMjQyMTIsMzI1NTIsMzM3MjEsMzM4MjgsMzM4MjksMzM2MzksMzQ2MzEsMzY4MTQsMzYxOTQsMzA0MDgsMjQ0MzMsMzkwNjIsMzA4MjgsMjYxNDQsMjE3MjcsMjUzMTcsMjAzMjMsMzMyMTksMzAxNTIsMjQyNDgsMzg2MDUsMzYzNjIsMzQ1''@;'; put 'put ''NTMsMjE2NDcsMjc4OTEsMjgwNDQsMjc3MDQsMjQ3MDMsMjExOTEsMjk5OTIsMjQxODksMjAyNDgsMjQ3MzYsMjQ1NTEsMjM1ODgsMzAwMDEsMzcwMzgsMzgwODAsMjkzNjksMjc4MzMsMjgyMTYsMzcxOTMsMjYzNzcsMjE0NTEsMjE0OTEsMjAzMDUsMzczMjEsMzU4MjUsMjE0NDgsMjQxODgs''@;'; put 'put ''MzY4MDIsMjgxMzIsMjAxMTAsMzA0MDIsMjcwMTQsMzQzOTgsMjQ4NTgsMzMyODYsMjAzMTMsMjA0NDYsMzY5MjYsNDAwNjAsMjQ4NDEsMjgxODksMjgxODAsMzg1MzMsMjAxMDQsMjMwODksMzg2MzIsMTk5ODIsMjM2NzksMzExNjEsMjM0MzEsMzU4MjEsMzI3MDEsMjk1NzcsMjI0OTUsMzM0''@;'; put 'put ''MTksMzcwNTcsMjE1MDUsMzY5MzUsMjE5NDcsMjM3ODYsMjQ0ODEsMjQ4NDAsMjc0NDIsMjk0MjUsMzI5NDYsMzU0NjUsMzUzNTgsMzUzNTksMzUzNjAsMzUzNjEsMzUzNjIsMzUzNjMsMzUzNjQsMzUzNjUsMzUzNjYsMzUzNjcsMzUzNjgsMzUzNjksMzUzNzAsMzUzNzEsMzUzNzIsMzUzNzMs''@;'; put 'put ''MzUzNzQsMzUzNzUsMzUzNzYsMzUzNzcsMzUzNzgsMzUzNzksMzUzODAsMzUzODEsMzUzODIsMzUzODMsMzUzODQsMzUzODUsMzUzODYsMzUzODcsMzUzODgsMzUzODksMzUzOTEsMzUzOTIsMzUzOTMsMzUzOTQsMzUzOTUsMzUzOTYsMzUzOTcsMzUzOTgsMzUzOTksMzU0MDEsMzU0MDIsMzU0''@;'; put 'put ''MDMsMzU0MDQsMzU0MDUsMzU0MDYsMzU0MDcsMzU0MDgsMzU0MDksMzU0MTAsMzU0MTEsMzU0MTIsMzU0MTMsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MTcsMzU0MTgsMzU0MTksMzU0MjAsMzU0MjEsMzU0MjIsMzU0MjMsMzU0MjQsMzU0MjUsMzU0MjYsMzU0MjcsMzU0MjgsMzU0MjksMzU0MzAs''@;'; put 'put ''MzU0MzEsMzU0MzIsMzU0MzMsMzU0MzQsMzU0MzUsMzU0MzYsMzU0MzcsMzU0MzgsMzU0MzksMzU0NDAsMzU0NDEsMzU0NDIsMzU0NDMsMzU0NDQsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDgsMzU0NTAsMzU0NTEsMzU0NTIsMzU0NTMsMzU0NTQsMzU0NTUsMzU0NTYsMjgwMjAsMjM1MDcsMzUw''@;'; put 'put ''MjksMzkwNDQsMzU5NDcsMzk1MzMsNDA0OTksMjgxNzAsMjA5MDAsMjA4MDMsMjI0MzUsMzQ5NDUsMjE0MDcsMjU1ODgsMzY3NTcsMjIyNTMsMjE1OTIsMjIyNzgsMjk1MDMsMjgzMDQsMzI1MzYsMzY4MjgsMzM0ODksMjQ4OTUsMjQ2MTYsMzg0OTgsMjYzNTIsMzI0MjIsMzYyMzQsMzYyOTEs''@;'; put 'put ''MzgwNTMsMjM3MzEsMzE5MDgsMjYzNzYsMjQ3NDIsMzg0MDUsMzI3OTIsMjAxMTMsMzcwOTUsMjEyNDgsMzg1MDQsMjA4MDEsMzY4MTYsMzQxNjQsMzcyMTMsMjYxOTcsMzg5MDEsMjMzODEsMjEyNzcsMzA3NzYsMjY0MzQsMjY2ODUsMjE3MDUsMjg3OTgsMjM0NzIsMzY3MzMsMjA4NzcsMjIz''@;'; put 'put ''MTIsMjE2ODEsMjU4NzQsMjYyNDIsMzYxOTAsMzYxNjMsMzMwMzksMzM5MDAsMzY5NzMsMzE5NjcsMjA5OTEsMzQyOTksMjY1MzEsMjYwODksMjg1NzcsMzQ0NjgsMzY0ODEsMjIxMjIsMzY4OTYsMzAzMzgsMjg3OTAsMjkxNTcsMzYxMzEsMjUzMjEsMjEwMTcsMjc5MDEsMzYxNTYsMjQ1OTAs''@;'; put 'put ''MjI2ODYsMjQ5NzQsMjYzNjYsMzYxOTIsMjUxNjYsMjE5MzksMjgxOTUsMjY0MTMsMzY3MTEsMzU0NTcsMzU0NTgsMzU0NTksMzU0NjAsMzU0NjEsMzU0NjIsMzU0NjMsMzU0NjQsMzU0NjcsMzU0NjgsMzU0NjksMzU0NzAsMzU0NzEsMzU0NzIsMzU0NzMsMzU0NzQsMzU0NzYsMzU0NzcsMzU0''@;'; put 'put ''NzgsMzU0NzksMzU0ODAsMzU0ODEsMzU0ODIsMzU0ODMsMzU0ODQsMzU0ODUsMzU0ODYsMzU0ODcsMzU0ODgsMzU0ODksMzU0OTAsMzU0OTEsMzU0OTIsMzU0OTMsMzU0OTQsMzU0OTUsMzU0OTYsMzU0OTcsMzU0OTgsMzU0OTksMzU1MDAsMzU1MDEsMzU1MDIsMzU1MDMsMzU1MDQsMzU1MDUs''@;'; put 'put ''MzU1MDYsMzU1MDcsMzU1MDgsMzU1MDksMzU1MTAsMzU1MTEsMzU1MTIsMzU1MTMsMzU1MTQsMzU1MTUsMzU1MTYsMzU1MTcsMzU1MTgsMzU1MTksMzU1MjAsMzU1MjEsMzU1MjIsMzU1MjMsMzU1MjQsMzU1MjUsMzU1MjYsMzU1MjcsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzEsMzU1MzIsMzU1''@;'; put 'put ''MzMsMzU1MzQsMzU1MzUsMzU1MzYsMzU1MzcsMzU1MzgsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDIsMzU1NDMsMzU1NDQsMzU1NDUsMzU1NDYsMzU1NDcsMzU1NDgsMzU1NDksMzU1NTAsMzU1NTEsMzU1NTIsMzU1NTMsMzU1NTQsMzU1NTUsMzgxMTMsMzgzOTIsMzA1MDQsMjY2MjksMjcwNDgs''@;'; put 'put ''MjE2NDMsMjAwNDUsMjg4NTYsMzU3ODQsMjU2ODgsMjU5OTUsMjM0MjksMzEzNjQsMjA1MzgsMjM1MjgsMzA2NTEsMjc2MTcsMzU0NDksMzE4OTYsMjc4MzgsMzA0MTUsMjYwMjUsMzY3NTksMjM4NTMsMjM2MzcsMzQzNjAsMjY2MzIsMjEzNDQsMjUxMTIsMzE0NDksMjgyNTEsMzI1MDksMjcx''@;'; put 'put ''NjcsMzE0NTYsMjQ0MzIsMjg0NjcsMjQzNTIsMjU0ODQsMjgwNzIsMjY0NTQsMTk5NzYsMjQwODAsMzYxMzQsMjAxODMsMzI5NjAsMzAyNjAsMzg1NTYsMjUzMDcsMjYxNTcsMjUyMTQsMjc4MzYsMzYyMTMsMjkwMzEsMzI2MTcsMjA4MDYsMzI5MDMsMjE0ODQsMzY5NzQsMjUyNDAsMjE3NDYs''@;'; put 'put ''MzQ1NDQsMzY3NjEsMzI3NzMsMzgxNjcsMzQwNzEsMzY4MjUsMjc5OTMsMjk2NDUsMjYwMTUsMzA0OTUsMjk5NTYsMzA3NTksMzMyNzUsMzYxMjYsMzgwMjQsMjAzOTAsMjY1MTcsMzAxMzcsMzU3ODYsMzg2NjMsMjUzOTEsMzgyMTUsMzg0NTMsMzM5NzYsMjUzNzksMzA1MjksMjQ0NDksMjk0''@;'; put 'put ''MjQsMjAxMDUsMjQ1OTYsMjU5NzIsMjUzMjcsMjc0OTEsMjU5MTksMzU1NTYsMzU1NTcsMzU1NTgsMzU1NTksMzU1NjAsMzU1NjEsMzU1NjIsMzU1NjMsMzU1NjQsMzU1NjUsMzU1NjYsMzU1NjcsMzU1NjgsMzU1NjksMzU1NzAsMzU1NzEsMzU1NzIsMzU1NzMsMzU1NzQsMzU1NzUsMzU1NzYs''@;'; put 'put ''MzU1NzcsMzU1NzgsMzU1NzksMzU1ODAsMzU1ODEsMzU1ODIsMzU1ODMsMzU1ODQsMzU1ODUsMzU1ODYsMzU1ODcsMzU1ODgsMzU1ODksMzU1OTAsMzU1OTIsMzU1OTMsMzU1OTQsMzU1OTUsMzU1OTYsMzU1OTcsMzU1OTgsMzU1OTksMzU2MDAsMzU2MDEsMzU2MDIsMzU2MDMsMzU2MDQsMzU2''@;'; put 'put ''MDUsMzU2MDYsMzU2MDcsMzU2MDgsMzU2MDksMzU2MTAsMzU2MTEsMzU2MTIsMzU2MTMsMzU2MTQsMzU2MTUsMzU2MTYsMzU2MTcsMzU2MTgsMzU2MTksMzU2MjAsMzU2MjEsMzU2MjMsMzU2MjQsMzU2MjUsMzU2MjYsMzU2MjcsMzU2MjgsMzU2MjksMzU2MzAsMzU2MzEsMzU2MzIsMzU2MzMs''@;'; put 'put ''MzU2MzQsMzU2MzUsMzU2MzYsMzU2MzcsMzU2MzgsMzU2MzksMzU2NDAsMzU2NDEsMzU2NDIsMzU2NDMsMzU2NDQsMzU2NDUsMzU2NDYsMzU2NDcsMzU2NDgsMzU2NDksMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMjQxMDMsMzAxNTEsMzcwNzMsMzU3NzcsMzM0MzcsMjY1MjUsMjU5MDMsMjE1''@;'; put 'put ''NTMsMzQ1ODQsMzA2OTMsMzI5MzAsMzMwMjYsMjc3MTMsMjAwNDMsMzI0NTUsMzI4NDQsMzA0NTIsMjY4OTMsMjc1NDIsMjUxOTEsMjA1NDAsMjAzNTYsMjIzMzYsMjUzNTEsMjc0OTAsMzYyODYsMjE0ODIsMjYwODgsMzI0NDAsMjQ1MzUsMjUzNzAsMjU1MjcsMzMyNjcsMzMyNjgsMzI2MjIs''@;'; put 'put ''MjQwOTIsMjM3NjksMjEwNDYsMjYyMzQsMzEyMDksMzEyNTgsMzYxMzYsMjg4MjUsMzAxNjQsMjgzODIsMjc4MzUsMzEzNzgsMjAwMTMsMzA0MDUsMjQ1NDQsMzgwNDcsMzQ5MzUsMzI0NTYsMzExODEsMzI5NTksMzczMjUsMjAyMTAsMjAyNDcsMzMzMTEsMjE2MDgsMjQwMzAsMjc5NTQsMzU3''@;'; put 'put ''ODgsMzE5MDksMzY3MjQsMzI5MjAsMjQwOTAsMjE2NTAsMzAzODUsMjM0NDksMjYxNzIsMzk1ODgsMjk2NjQsMjY2NjYsMzQ1MjMsMjY0MTcsMjk0ODIsMzU4MzIsMzU4MDMsMzY4ODAsMzE0ODEsMjg4OTEsMjkwMzgsMjUyODQsMzA2MzMsMjIwNjUsMjAwMjcsMzM4NzksMjY2MDksMjExNjEs''@;'; put 'put ''MzQ0OTYsMzYxNDIsMzgxMzYsMzE1NjksMzU2NTQsMzU2NTUsMzU2NTYsMzU2NTcsMzU2NTgsMzU2NTksMzU2NjAsMzU2NjEsMzU2NjIsMzU2NjMsMzU2NjQsMzU2NjUsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NjksMzU2NzAsMzU2NzEsMzU2NzIsMzU2NzMsMzU2NzQsMzU2NzUsMzU2NzYsMzU2''@;'; put 'put ''NzcsMzU2NzgsMzU2NzksMzU2ODAsMzU2ODEsMzU2ODIsMzU2ODMsMzU2ODQsMzU2ODUsMzU2ODcsMzU2ODgsMzU2ODksMzU2OTAsMzU2OTEsMzU2OTMsMzU2OTQsMzU2OTUsMzU2OTYsMzU2OTcsMzU2OTgsMzU2OTksMzU3MDAsMzU3MDEsMzU3MDIsMzU3MDMsMzU3MDQsMzU3MDUsMzU3MDYs''@;'; put 'put ''MzU3MDcsMzU3MDgsMzU3MDksMzU3MTAsMzU3MTEsMzU3MTIsMzU3MTMsMzU3MTQsMzU3MTUsMzU3MTYsMzU3MTcsMzU3MTgsMzU3MTksMzU3MjAsMzU3MjEsMzU3MjIsMzU3MjMsMzU3MjQsMzU3MjUsMzU3MjYsMzU3MjcsMzU3MjgsMzU3MjksMzU3MzAsMzU3MzEsMzU3MzIsMzU3MzMsMzU3''@;'; put 'put ''MzQsMzU3MzUsMzU3MzYsMzU3MzcsMzU3MzgsMzU3MzksMzU3NDAsMzU3NDEsMzU3NDIsMzU3NDMsMzU3NTYsMzU3NjEsMzU3NzEsMzU3ODMsMzU3OTIsMzU4MTgsMzU4NDksMzU4NzAsMjAzMDMsMjc4ODAsMzEwNjksMzk1NDcsMjUyMzUsMjkyMjYsMjUzNDEsMTk5ODcsMzA3NDIsMzY3MTYs''@;'; put 'put ''MjU3NzYsMzYxODYsMzE2ODYsMjY3MjksMjQxOTYsMzUwMTMsMjI5MTgsMjU3NTgsMjI3NjYsMjkzNjYsMjY4OTQsMzgxODEsMzY4NjEsMzYxODQsMjIzNjgsMzI1MTIsMzU4NDYsMjA5MzQsMjU0MTcsMjUzMDUsMjEzMzEsMjY3MDAsMjk3MzAsMzM1MzcsMzcxOTYsMjE4MjgsMzA1MjgsMjg3''@;'; put 'put ''OTYsMjc5NzgsMjA4NTcsMjE2NzIsMzYxNjQsMjMwMzksMjgzNjMsMjgxMDAsMjMzODgsMzIwNDMsMjAxODAsMzE4NjksMjgzNzEsMjMzNzYsMzMyNTgsMjgxNzMsMjMzODMsMzk2ODMsMjY4MzcsMzYzOTQsMjM0NDcsMzI1MDgsMjQ2MzUsMzI0MzcsMzcwNDksMzYyMDgsMjI4NjMsMjU1NDks''@;'; put 'put ''MzExOTksMzYyNzUsMjEzMzAsMjYwNjMsMzEwNjIsMzU3ODEsMzg0NTksMzI0NTIsMzgwNzUsMzIzODYsMjIwNjgsMzcyNTcsMjYzNjgsMzI2MTgsMjM1NjIsMzY5ODEsMjYxNTIsMjQwMzgsMjAzMDQsMjY1OTAsMjA1NzAsMjAzMTYsMjIzNTIsMjQyMzEsNTk0MDgsNTk0MDksNTk0MTAsNTk0''@;'; put 'put ''MTEsNTk0MTIsMzU4OTYsMzU4OTcsMzU4OTgsMzU4OTksMzU5MDAsMzU5MDEsMzU5MDIsMzU5MDMsMzU5MDQsMzU5MDYsMzU5MDcsMzU5MDgsMzU5MDksMzU5MTIsMzU5MTQsMzU5MTUsMzU5MTcsMzU5MTgsMzU5MTksMzU5MjAsMzU5MjEsMzU5MjIsMzU5MjMsMzU5MjQsMzU5MjYsMzU5Mjcs''@;'; put 'put ''MzU5MjgsMzU5MjksMzU5MzEsMzU5MzIsMzU5MzMsMzU5MzQsMzU5MzUsMzU5MzYsMzU5MzksMzU5NDAsMzU5NDEsMzU5NDIsMzU5NDMsMzU5NDQsMzU5NDUsMzU5NDgsMzU5NDksMzU5NTAsMzU5NTEsMzU5NTIsMzU5NTMsMzU5NTQsMzU5NTYsMzU5NTcsMzU5NTgsMzU5NTksMzU5NjMsMzU5''@;'; put 'put ''NjQsMzU5NjUsMzU5NjYsMzU5NjcsMzU5NjgsMzU5NjksMzU5NzEsMzU5NzIsMzU5NzQsMzU5NzUsMzU5NzYsMzU5NzksMzU5ODEsMzU5ODIsMzU5ODMsMzU5ODQsMzU5ODUsMzU5ODYsMzU5ODcsMzU5ODksMzU5OTAsMzU5OTEsMzU5OTMsMzU5OTQsMzU5OTUsMzU5OTYsMzU5OTcsMzU5OTgs''@;'; put 'put ''MzU5OTksMzZlMywzNjAwMSwzNjAwMiwzNjAwMywzNjAwNCwzNjAwNSwzNjAwNiwzNjAwNywzNjAwOCwzNjAwOSwzNjAxMCwzNjAxMSwzNjAxMiwzNjAxMywyMDEwOSwxOTk4MCwyMDgwMCwxOTk4NCwyNDMxOSwyMTMxNywxOTk4OSwyMDEyMCwxOTk5OCwzOTczMCwyMzQwNCwyMjEyMSwyMDAw''@;'; put 'put ''OCwzMTE2MiwyMDAzMSwyMTI2OSwyMDAzOSwyMjgyOSwyOTI0MywyMTM1OCwyNzY2NCwyMjIzOSwzMjk5NiwzOTMxOSwyNzYwMywzMDU5MCw0MDcyNywyMDAyMiwyMDEyNyw0MDcyMCwyMDA2MCwyMDA3MywyMDExNSwzMzQxNiwyMzM4NywyMTg2OCwyMjAzMSwyMDE2NCwyMTM4OSwyMTQwNSwy''@;'; put 'put ''MTQxMSwyMTQxMywyMTQyMiwzODc1NywzNjE4OSwyMTI3NCwyMTQ5MywyMTI4NiwyMTI5NCwyMTMxMCwzNjE4OCwyMTM1MCwyMTM0NywyMDk5NCwyMWUzLDIxMDA2LDIxMDM3LDIxMDQzLDIxMDU1LDIxMDU2LDIxMDY4LDIxMDg2LDIxMDg5LDIxMDg0LDMzOTY3LDIxMTE3LDIxMTIyLDIxMTIx''@;'; put 'put ''LDIxMTM2LDIxMTM5LDIwODY2LDMyNTk2LDIwMTU1LDIwMTYzLDIwMTY5LDIwMTYyLDIwMjAwLDIwMTkzLDIwMjAzLDIwMTkwLDIwMjUxLDIwMjExLDIwMjU4LDIwMzI0LDIwMjEzLDIwMjYxLDIwMjYzLDIwMjMzLDIwMjY3LDIwMzE4LDIwMzI3LDI1OTEyLDIwMzE0LDIwMzE3LDM2MDE0LDM2''@;'; put 'put ''MDE1LDM2MDE2LDM2MDE3LDM2MDE4LDM2MDE5LDM2MDIwLDM2MDIxLDM2MDIyLDM2MDIzLDM2MDI0LDM2MDI1LDM2MDI2LDM2MDI3LDM2MDI4LDM2MDI5LDM2MDMwLDM2MDMxLDM2MDMyLDM2MDMzLDM2MDM0LDM2MDM1LDM2MDM2LDM2MDM3LDM2MDM4LDM2MDM5LDM2MDQwLDM2MDQxLDM2MDQy''@;'; put 'put ''LDM2MDQzLDM2MDQ0LDM2MDQ1LDM2MDQ2LDM2MDQ3LDM2MDQ4LDM2MDQ5LDM2MDUwLDM2MDUxLDM2MDUyLDM2MDUzLDM2MDU0LDM2MDU1LDM2MDU2LDM2MDU3LDM2MDU4LDM2MDU5LDM2MDYwLDM2MDYxLDM2MDYyLDM2MDYzLDM2MDY0LDM2MDY1LDM2MDY2LDM2MDY3LDM2MDY4LDM2MDY5LDM2''@;'; put 'put ''MDcwLDM2MDcxLDM2MDcyLDM2MDczLDM2MDc0LDM2MDc1LDM2MDc2LDM2MDc3LDM2MDc4LDM2MDc5LDM2MDgwLDM2MDgxLDM2MDgyLDM2MDgzLDM2MDg0LDM2MDg1LDM2MDg2LDM2MDg3LDM2MDg4LDM2MDg5LDM2MDkwLDM2MDkxLDM2MDkyLDM2MDkzLDM2MDk0LDM2MDk1LDM2MDk2LDM2MDk3''@;'; put 'put ''LDM2MDk4LDM2MDk5LDM2MTAwLDM2MTAxLDM2MTAyLDM2MTAzLDM2MTA0LDM2MTA1LDM2MTA2LDM2MTA3LDM2MTA4LDM2MTA5LDIwMzE5LDIwMzExLDIwMjc0LDIwMjg1LDIwMzQyLDIwMzQwLDIwMzY5LDIwMzYxLDIwMzU1LDIwMzY3LDIwMzUwLDIwMzQ3LDIwMzk0LDIwMzQ4LDIwMzk2LDIw''@;'; put 'put ''MzcyLDIwNDU0LDIwNDU2LDIwNDU4LDIwNDIxLDIwNDQyLDIwNDUxLDIwNDQ0LDIwNDMzLDIwNDQ3LDIwNDcyLDIwNTIxLDIwNTU2LDIwNDY3LDIwNTI0LDIwNDk1LDIwNTI2LDIwNTI1LDIwNDc4LDIwNTA4LDIwNDkyLDIwNTE3LDIwNTIwLDIwNjA2LDIwNTQ3LDIwNTY1LDIwNTUyLDIwNTU4''@;'; put 'put ''LDIwNTg4LDIwNjAzLDIwNjQ1LDIwNjQ3LDIwNjQ5LDIwNjY2LDIwNjk0LDIwNzQyLDIwNzE3LDIwNzE2LDIwNzEwLDIwNzE4LDIwNzQzLDIwNzQ3LDIwMTg5LDI3NzA5LDIwMzEyLDIwMzI1LDIwNDMwLDQwODY0LDI3NzE4LDMxODYwLDIwODQ2LDI0MDYxLDQwNjQ5LDM5MzIwLDIwODY1LDIy''@;'; put 'put ''ODA0LDIxMjQxLDIxMjYxLDM1MzM1LDIxMjY0LDIwOTcxLDIyODA5LDIwODIxLDIwMTI4LDIwODIyLDIwMTQ3LDM0OTI2LDM0OTgwLDIwMTQ5LDMzMDQ0LDM1MDI2LDMxMTA0LDIzMzQ4LDM0ODE5LDMyNjk2LDIwOTA3LDIwOTEzLDIwOTI1LDIwOTI0LDM2MTEwLDM2MTExLDM2MTEyLDM2MTEz''@;'; put 'put ''LDM2MTE0LDM2MTE1LDM2MTE2LDM2MTE3LDM2MTE4LDM2MTE5LDM2MTIwLDM2MTIxLDM2MTIyLDM2MTIzLDM2MTI0LDM2MTI4LDM2MTc3LDM2MTc4LDM2MTgzLDM2MTkxLDM2MTk3LDM2MjAwLDM2MjAxLDM2MjAyLDM2MjA0LDM2MjA2LDM2MjA3LDM2MjA5LDM2MjEwLDM2MjE2LDM2MjE3LDM2''@;'; put 'put ''MjE4LDM2MjE5LDM2MjIwLDM2MjIxLDM2MjIyLDM2MjIzLDM2MjI0LDM2MjI2LDM2MjI3LDM2MjMwLDM2MjMxLDM2MjMyLDM2MjMzLDM2MjM2LDM2MjM3LDM2MjM4LDM2MjM5LDM2MjQwLDM2MjQyLDM2MjQzLDM2MjQ1LDM2MjQ2LDM2MjQ3LDM2MjQ4LDM2MjQ5LDM2MjUwLDM2MjUxLDM2MjUy''@;'; put 'put ''LDM2MjUzLDM2MjU0LDM2MjU2LDM2MjU3LDM2MjU4LDM2MjYwLDM2MjYxLDM2MjYyLDM2MjYzLDM2MjY0LDM2MjY1LDM2MjY2LDM2MjY3LDM2MjY4LDM2MjY5LDM2MjcwLDM2MjcxLDM2MjcyLDM2Mjc0LDM2Mjc4LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg1LDM2Mjg4LDM2Mjg5LDM2MjkwLDM2''@;'; put 'put ''MjkzLDM2Mjk1LDM2Mjk2LDM2Mjk3LDM2Mjk4LDM2MzAxLDM2MzA0LDM2MzA2LDM2MzA3LDM2MzA4LDIwOTM1LDIwODg2LDIwODk4LDIwOTAxLDM1NzQ0LDM1NzUwLDM1NzUxLDM1NzU0LDM1NzY0LDM1NzY1LDM1NzY3LDM1Nzc4LDM1Nzc5LDM1Nzg3LDM1NzkxLDM1NzkwLDM1Nzk0LDM1Nzk1''@;'; put 'put ''LDM1Nzk2LDM1Nzk4LDM1ODAwLDM1ODAxLDM1ODA0LDM1ODA3LDM1ODA4LDM1ODEyLDM1ODE2LDM1ODE3LDM1ODIyLDM1ODI0LDM1ODI3LDM1ODMwLDM1ODMzLDM1ODM2LDM1ODM5LDM1ODQwLDM1ODQyLDM1ODQ0LDM1ODQ3LDM1ODUyLDM1ODU1LDM1ODU3LDM1ODU4LDM1ODYwLDM1ODYxLDM1''@;'; put 'put ''ODYyLDM1ODY1LDM1ODY3LDM1ODY0LDM1ODY5LDM1ODcxLDM1ODcyLDM1ODczLDM1ODc3LDM1ODc5LDM1ODgyLDM1ODgzLDM1ODg2LDM1ODg3LDM1ODkwLDM1ODkxLDM1ODkzLDM1ODk0LDIxMzUzLDIxMzcwLDM4NDI5LDM4NDM0LDM4NDMzLDM4NDQ5LDM4NDQyLDM4NDYxLDM4NDYwLDM4NDY2''@;'; put 'put ''LDM4NDczLDM4NDg0LDM4NDk1LDM4NTAzLDM4NTA4LDM4NTE0LDM4NTE2LDM4NTM2LDM4NTQxLDM4NTUxLDM4NTc2LDM3MDE1LDM3MDE5LDM3MDIxLDM3MDE3LDM3MDM2LDM3MDI1LDM3MDQ0LDM3MDQzLDM3MDQ2LDM3MDUwLDM2MzA5LDM2MzEyLDM2MzEzLDM2MzE2LDM2MzIwLDM2MzIxLDM2''@;'; put 'put ''MzIyLDM2MzI1LDM2MzI2LDM2MzI3LDM2MzI5LDM2MzMzLDM2MzM0LDM2MzM2LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQyLDM2MzQ4LDM2MzUwLDM2MzUxLDM2MzUyLDM2MzUzLDM2MzU0LDM2MzU1LDM2MzU2LDM2MzU4LDM2MzU5LDM2MzYwLDM2MzYzLDM2MzY1LDM2MzY2LDM2MzY4LDM2MzY5''@;'; put 'put ''LDM2MzcwLDM2MzcxLDM2MzczLDM2Mzc0LDM2Mzc1LDM2Mzc2LDM2Mzc3LDM2Mzc4LDM2Mzc5LDM2MzgwLDM2Mzg0LDM2Mzg1LDM2Mzg4LDM2Mzg5LDM2MzkwLDM2MzkxLDM2MzkyLDM2Mzk1LDM2Mzk3LDM2NDAwLDM2NDAyLDM2NDAzLDM2NDA0LDM2NDA2LDM2NDA3LDM2NDA4LDM2NDExLDM2''@;'; put 'put ''NDEyLDM2NDE0LDM2NDE1LDM2NDE5LDM2NDIxLDM2NDIyLDM2NDI4LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDMyLDM2NDM1LDM2NDM2LDM2NDM3LDM2NDM4LDM2NDM5LDM2NDQwLDM2NDQyLDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ3LDM2NDQ4LDM2NDQ5LDM2NDUwLDM2NDUxLDM2NDUy''@;'; put 'put ''LDM2NDUzLDM2NDU1LDM2NDU2LDM2NDU4LDM2NDU5LDM2NDYyLDM2NDY1LDM3MDQ4LDM3MDQwLDM3MDcxLDM3MDYxLDM3MDU0LDM3MDcyLDM3MDYwLDM3MDYzLDM3MDc1LDM3MDk0LDM3MDkwLDM3MDg0LDM3MDc5LDM3MDgzLDM3MDk5LDM3MTAzLDM3MTE4LDM3MTI0LDM3MTU0LDM3MTUwLDM3''@;'; put 'put ''MTU1LDM3MTY5LDM3MTY3LDM3MTc3LDM3MTg3LDM3MTkwLDIxMDA1LDIyODUwLDIxMTU0LDIxMTY0LDIxMTY1LDIxMTgyLDIxNzU5LDIxMjAwLDIxMjA2LDIxMjMyLDIxNDcxLDI5MTY2LDMwNjY5LDI0MzA4LDIwOTgxLDIwOTg4LDM5NzI3LDIxNDMwLDI0MzIxLDMwMDQyLDI0MDQ3LDIyMzQ4''@;'; put 'put ''LDIyNDQxLDIyNDMzLDIyNjU0LDIyNzE2LDIyNzI1LDIyNzM3LDIyMzEzLDIyMzE2LDIyMzE0LDIyMzIzLDIyMzI5LDIyMzE4LDIyMzE5LDIyMzY0LDIyMzMxLDIyMzM4LDIyMzc3LDIyNDA1LDIyMzc5LDIyNDA2LDIyMzk2LDIyMzk1LDIyMzc2LDIyMzgxLDIyMzkwLDIyMzg3LDIyNDQ1LDIy''@;'; put 'put ''NDM2LDIyNDEyLDIyNDUwLDIyNDc5LDIyNDM5LDIyNDUyLDIyNDE5LDIyNDMyLDIyNDg1LDIyNDg4LDIyNDkwLDIyNDg5LDIyNDgyLDIyNDU2LDIyNTE2LDIyNTExLDIyNTIwLDIyNTAwLDIyNDkzLDM2NDY3LDM2NDY5LDM2NDcxLDM2NDcyLDM2NDczLDM2NDc0LDM2NDc1LDM2NDc3LDM2NDc4''@;'; put 'put ''LDM2NDgwLDM2NDgyLDM2NDgzLDM2NDg0LDM2NDg2LDM2NDg4LDM2NDg5LDM2NDkwLDM2NDkxLDM2NDkyLDM2NDkzLDM2NDk0LDM2NDk3LDM2NDk4LDM2NDk5LDM2NTAxLDM2NTAyLDM2NTAzLDM2NTA0LDM2NTA1LDM2NTA2LDM2NTA3LDM2NTA5LDM2NTExLDM2NTEyLDM2NTEzLDM2NTE0LDM2''@;'; put 'put ''NTE1LDM2NTE2LDM2NTE3LDM2NTE4LDM2NTE5LDM2NTIwLDM2NTIxLDM2NTIyLDM2NTI1LDM2NTI2LDM2NTI4LDM2NTI5LDM2NTMxLDM2NTMyLDM2NTMzLDM2NTM0LDM2NTM1LDM2NTM2LDM2NTM3LDM2NTM5LDM2NTQwLDM2NTQxLDM2NTQyLDM2NTQzLDM2NTQ0LDM2NTQ1LDM2NTQ2LDM2NTQ3''@;'; put 'put ''LDM2NTQ4LDM2NTQ5LDM2NTUwLDM2NTUxLDM2NTUyLDM2NTUzLDM2NTU0LDM2NTU1LDM2NTU2LDM2NTU3LDM2NTU5LDM2NTYwLDM2NTYxLDM2NTYyLDM2NTYzLDM2NTY0LDM2NTY1LDM2NTY2LDM2NTY3LDM2NTY4LDM2NTY5LDM2NTcwLDM2NTcxLDM2NTcyLDM2NTczLDM2NTc0LDM2NTc1LDM2''@;'; put 'put ''NTc2LDM2NTc3LDM2NTc4LDM2NTc5LDM2NTgwLDIyNTM5LDIyNTQxLDIyNTI1LDIyNTA5LDIyNTI4LDIyNTU4LDIyNTUzLDIyNTk2LDIyNTYwLDIyNjI5LDIyNjM2LDIyNjU3LDIyNjY1LDIyNjgyLDIyNjU2LDM5MzM2LDQwNzI5LDI1MDg3LDMzNDAxLDMzNDA1LDMzNDA3LDMzNDIzLDMzNDE4''@;'; put 'put ''LDMzNDQ4LDMzNDEyLDMzNDIyLDMzNDI1LDMzNDMxLDMzNDMzLDMzNDUxLDMzNDY0LDMzNDcwLDMzNDU2LDMzNDgwLDMzNDgyLDMzNTA3LDMzNDMyLDMzNDYzLDMzNDU0LDMzNDgzLDMzNDg0LDMzNDczLDMzNDQ5LDMzNDYwLDMzNDQxLDMzNDUwLDMzNDM5LDMzNDc2LDMzNDg2LDMzNDQ0LDMz''@;'; put 'put ''NTA1LDMzNTQ1LDMzNTI3LDMzNTA4LDMzNTUxLDMzNTQzLDMzNTAwLDMzNTI0LDMzNDkwLDMzNDk2LDMzNTQ4LDMzNTMxLDMzNDkxLDMzNTUzLDMzNTYyLDMzNTQyLDMzNTU2LDMzNTU3LDMzNTA0LDMzNDkzLDMzNTY0LDMzNjE3LDMzNjI3LDMzNjI4LDMzNTQ0LDMzNjgyLDMzNTk2LDMzNTg4''@;'; put 'put ''LDMzNTg1LDMzNjkxLDMzNjMwLDMzNTgzLDMzNjE1LDMzNjA3LDMzNjAzLDMzNjMxLDMzNjAwLDMzNTU5LDMzNjMyLDMzNTgxLDMzNTk0LDMzNTg3LDMzNjM4LDMzNjM3LDM2NTgxLDM2NTgyLDM2NTgzLDM2NTg0LDM2NTg1LDM2NTg2LDM2NTg3LDM2NTg4LDM2NTg5LDM2NTkwLDM2NTkxLDM2''@;'; put 'put ''NTkyLDM2NTkzLDM2NTk0LDM2NTk1LDM2NTk2LDM2NTk3LDM2NTk4LDM2NTk5LDM2NjAwLDM2NjAxLDM2NjAyLDM2NjAzLDM2NjA0LDM2NjA1LDM2NjA2LDM2NjA3LDM2NjA4LDM2NjA5LDM2NjEwLDM2NjExLDM2NjEyLDM2NjEzLDM2NjE0LDM2NjE1LDM2NjE2LDM2NjE3LDM2NjE4LDM2NjE5''@;'; put 'put ''LDM2NjIwLDM2NjIxLDM2NjIyLDM2NjIzLDM2NjI0LDM2NjI1LDM2NjI2LDM2NjI3LDM2NjI4LDM2NjI5LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjMzLDM2NjM0LDM2NjM1LDM2NjM2LDM2NjM3LDM2NjM4LDM2NjM5LDM2NjQwLDM2NjQxLDM2NjQyLDM2NjQzLDM2NjQ0LDM2NjQ1LDM2NjQ2LDM2''@;'; put 'put ''NjQ3LDM2NjQ4LDM2NjQ5LDM2NjUwLDM2NjUxLDM2NjUyLDM2NjUzLDM2NjU0LDM2NjU1LDM2NjU2LDM2NjU3LDM2NjU4LDM2NjU5LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY0LDM2NjY1LDM2NjY2LDM2NjY3LDM2NjY4LDM2NjY5LDM2NjcwLDM2NjcxLDM2NjcyLDM2NjczLDM2Njc0''@;'; put 'put ''LDM2Njc1LDM2Njc2LDMzNjQwLDMzNTYzLDMzNjQxLDMzNjQ0LDMzNjQyLDMzNjQ1LDMzNjQ2LDMzNzEyLDMzNjU2LDMzNzE1LDMzNzE2LDMzNjk2LDMzNzA2LDMzNjgzLDMzNjkyLDMzNjY5LDMzNjYwLDMzNzE4LDMzNzA1LDMzNjYxLDMzNzIwLDMzNjU5LDMzNjg4LDMzNjk0LDMzNzA0LDMz''@;'; put 'put ''NzIyLDMzNzI0LDMzNzI5LDMzNzkzLDMzNzY1LDMzNzUyLDIyNTM1LDMzODE2LDMzODAzLDMzNzU3LDMzNzg5LDMzNzUwLDMzODIwLDMzODQ4LDMzODA5LDMzNzk4LDMzNzQ4LDMzNzU5LDMzODA3LDMzNzk1LDMzNzg0LDMzNzg1LDMzNzcwLDMzNzMzLDMzNzI4LDMzODMwLDMzNzc2LDMzNzYx''@;'; put 'put ''LDMzODg0LDMzODczLDMzODgyLDMzODgxLDMzOTA3LDMzOTI3LDMzOTI4LDMzOTE0LDMzOTI5LDMzOTEyLDMzODUyLDMzODYyLDMzODk3LDMzOTEwLDMzOTMyLDMzOTM0LDMzODQxLDMzOTAxLDMzOTg1LDMzOTk3LDM0ZTMsMzQwMjIsMzM5ODEsMzQwMDMsMzM5OTQsMzM5ODMsMzM5NzgsMzQw''@;'; put 'put ''MTYsMzM5NTMsMzM5NzcsMzM5NzIsMzM5NDMsMzQwMjEsMzQwMTksMzQwNjAsMjk5NjUsMzQxMDQsMzQwMzIsMzQxMDUsMzQwNzksMzQxMDYsMzY2NzcsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODEsMzY2ODIsMzY2ODMsMzY2ODQsMzY2ODUsMzY2ODYsMzY2ODcsMzY2ODgsMzY2ODksMzY2OTAs''@;'; put 'put ''MzY2OTEsMzY2OTIsMzY2OTMsMzY2OTQsMzY2OTUsMzY2OTYsMzY2OTcsMzY2OTgsMzY2OTksMzY3MDAsMzY3MDEsMzY3MDIsMzY3MDMsMzY3MDQsMzY3MDUsMzY3MDYsMzY3MDcsMzY3MDgsMzY3MDksMzY3MTQsMzY3MzYsMzY3NDgsMzY3NTQsMzY3NjUsMzY3NjgsMzY3NjksMzY3NzAsMzY3''@;'; put 'put ''NzIsMzY3NzMsMzY3NzQsMzY3NzUsMzY3NzgsMzY3ODAsMzY3ODEsMzY3ODIsMzY3ODMsMzY3ODYsMzY3ODcsMzY3ODgsMzY3ODksMzY3OTEsMzY3OTIsMzY3OTQsMzY3OTUsMzY3OTYsMzY3OTksMzY4MDAsMzY4MDMsMzY4MDYsMzY4MDksMzY4MTAsMzY4MTEsMzY4MTIsMzY4MTMsMzY4MTUs''@;'; put 'put ''MzY4MTgsMzY4MjIsMzY4MjMsMzY4MjYsMzY4MzIsMzY4MzMsMzY4MzUsMzY4MzksMzY4NDQsMzY4NDcsMzY4NDksMzY4NTAsMzY4NTIsMzY4NTMsMzY4NTQsMzY4NTgsMzY4NTksMzY4NjAsMzY4NjIsMzY4NjMsMzY4NzEsMzY4NzIsMzY4NzYsMzY4NzgsMzY4ODMsMzY4ODUsMzY4ODgsMzQx''@;'; put 'put ''MzQsMzQxMDcsMzQwNDcsMzQwNDQsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNDgsMzQxNDIsMzQxNzAsMzA2MjYsMzQxMTUsMzQxNjIsMzQxNzEsMzQyMTIsMzQyMTYsMzQxODMsMzQxOTEsMzQxNjksMzQyMjIsMzQyMDQsMzQxODEsMzQyMzMsMzQyMzEsMzQyMjQsMzQyNTksMzQyNDEsMzQyNjgs''@;'; put 'put ''MzQzMDMsMzQzNDMsMzQzMDksMzQzNDUsMzQzMjYsMzQzNjQsMjQzMTgsMjQzMjgsMjI4NDQsMjI4NDksMzI4MjMsMjI4NjksMjI4NzQsMjI4NzIsMjEyNjMsMjM1ODYsMjM1ODksMjM1OTYsMjM2MDQsMjUxNjQsMjUxOTQsMjUyNDcsMjUyNzUsMjUyOTAsMjUzMDYsMjUzMDMsMjUzMjYsMjUz''@;'; put 'put ''NzgsMjUzMzQsMjU0MDEsMjU0MTksMjU0MTEsMjU1MTcsMjU1OTAsMjU0NTcsMjU0NjYsMjU0ODYsMjU1MjQsMjU0NTMsMjU1MTYsMjU0ODIsMjU0NDksMjU1MTgsMjU1MzIsMjU1ODYsMjU1OTIsMjU1NjgsMjU1OTksMjU1NDAsMjU1NjYsMjU1NTAsMjU2ODIsMjU1NDIsMjU1MzQsMjU2Njks''@;'; put 'put ''MjU2NjUsMjU2MTEsMjU2MjcsMjU2MzIsMjU2MTIsMjU2MzgsMjU2MzMsMjU2OTQsMjU3MzIsMjU3MDksMjU3NTAsMzY4ODksMzY4OTIsMzY4OTksMzY5MDAsMzY5MDEsMzY5MDMsMzY5MDQsMzY5MDUsMzY5MDYsMzY5MDcsMzY5MDgsMzY5MTIsMzY5MTMsMzY5MTQsMzY5MTUsMzY5MTYsMzY5''@;'; put 'put ''MTksMzY5MjEsMzY5MjIsMzY5MjUsMzY5MjcsMzY5MjgsMzY5MzEsMzY5MzMsMzY5MzQsMzY5MzYsMzY5MzcsMzY5MzgsMzY5MzksMzY5NDAsMzY5NDIsMzY5NDgsMzY5NDksMzY5NTAsMzY5NTMsMzY5NTQsMzY5NTYsMzY5NTcsMzY5NTgsMzY5NTksMzY5NjAsMzY5NjEsMzY5NjQsMzY5NjYs''@;'; put 'put ''MzY5NjcsMzY5NjksMzY5NzAsMzY5NzEsMzY5NzIsMzY5NzUsMzY5NzYsMzY5NzcsMzY5NzgsMzY5NzksMzY5ODIsMzY5ODMsMzY5ODQsMzY5ODUsMzY5ODYsMzY5ODcsMzY5ODgsMzY5OTAsMzY5OTMsMzY5OTYsMzY5OTcsMzY5OTgsMzY5OTksMzcwMDEsMzcwMDIsMzcwMDQsMzcwMDUsMzcw''@;'; put 'put ''MDYsMzcwMDcsMzcwMDgsMzcwMTAsMzcwMTIsMzcwMTQsMzcwMTYsMzcwMTgsMzcwMjAsMzcwMjIsMzcwMjMsMzcwMjQsMzcwMjgsMzcwMjksMzcwMzEsMzcwMzIsMzcwMzMsMzcwMzUsMzcwMzcsMzcwNDIsMzcwNDcsMzcwNTIsMzcwNTMsMzcwNTUsMzcwNTYsMjU3MjIsMjU3ODMsMjU3ODQs''@;'; put 'put ''MjU3NTMsMjU3ODYsMjU3OTIsMjU4MDgsMjU4MTUsMjU4MjgsMjU4MjYsMjU4NjUsMjU4OTMsMjU5MDIsMjQzMzEsMjQ1MzAsMjk5NzcsMjQzMzcsMjEzNDMsMjE0ODksMjE1MDEsMjE0ODEsMjE0ODAsMjE0OTksMjE1MjIsMjE1MjYsMjE1MTAsMjE1NzksMjE1ODYsMjE1ODcsMjE1ODgsMjE1''@;'; put 'put ''OTAsMjE1NzEsMjE1MzcsMjE1OTEsMjE1OTMsMjE1MzksMjE1NTQsMjE2MzQsMjE2NTIsMjE2MjMsMjE2MTcsMjE2MDQsMjE2NTgsMjE2NTksMjE2MzYsMjE2MjIsMjE2MDYsMjE2NjEsMjE3MTIsMjE2NzcsMjE2OTgsMjE2ODQsMjE3MTQsMjE2NzEsMjE2NzAsMjE3MTUsMjE3MTYsMjE2MTgs''@;'; put 'put ''MjE2NjcsMjE3MTcsMjE2OTEsMjE2OTUsMjE3MDgsMjE3MjEsMjE3MjIsMjE3MjQsMjE2NzMsMjE2NzQsMjE2NjgsMjE3MjUsMjE3MTEsMjE3MjYsMjE3ODcsMjE3MzUsMjE3OTIsMjE3NTcsMjE3ODAsMjE3NDcsMjE3OTQsMjE3OTUsMjE3NzUsMjE3NzcsMjE3OTksMjE4MDIsMjE4NjMsMjE5''@;'; put 'put ''MDMsMjE5NDEsMjE4MzMsMjE4NjksMjE4MjUsMjE4NDUsMjE4MjMsMjE4NDAsMjE4MjAsMzcwNTgsMzcwNTksMzcwNjIsMzcwNjQsMzcwNjUsMzcwNjcsMzcwNjgsMzcwNjksMzcwNzQsMzcwNzYsMzcwNzcsMzcwNzgsMzcwODAsMzcwODEsMzcwODIsMzcwODYsMzcwODcsMzcwODgsMzcwOTEs''@;'; put 'put ''MzcwOTIsMzcwOTMsMzcwOTcsMzcwOTgsMzcxMDAsMzcxMDIsMzcxMDQsMzcxMDUsMzcxMDYsMzcxMDcsMzcxMDksMzcxMTAsMzcxMTEsMzcxMTMsMzcxMTQsMzcxMTUsMzcxMTYsMzcxMTksMzcxMjAsMzcxMjEsMzcxMjMsMzcxMjUsMzcxMjYsMzcxMjcsMzcxMjgsMzcxMjksMzcxMzAsMzcx''@;'; put 'put ''MzEsMzcxMzIsMzcxMzMsMzcxMzQsMzcxMzUsMzcxMzYsMzcxMzcsMzcxMzgsMzcxMzksMzcxNDAsMzcxNDEsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDcsMzcxNDgsMzcxNDksMzcxNTEsMzcxNTIsMzcxNTMsMzcxNTYsMzcxNTcsMzcxNTgsMzcxNTksMzcxNjAsMzcxNjEsMzcxNjIs''@;'; put 'put ''MzcxNjMsMzcxNjQsMzcxNjUsMzcxNjYsMzcxNjgsMzcxNzAsMzcxNzEsMzcxNzIsMzcxNzMsMzcxNzQsMzcxNzUsMzcxNzYsMzcxNzgsMzcxNzksMzcxODAsMzcxODEsMzcxODIsMzcxODMsMzcxODQsMzcxODUsMzcxODYsMzcxODgsMjE4MTUsMjE4NDYsMjE4NzcsMjE4NzgsMjE4NzksMjE4''@;'; put 'put ''MTEsMjE4MDgsMjE4NTIsMjE4OTksMjE5NzAsMjE4OTEsMjE5MzcsMjE5NDUsMjE4OTYsMjE4ODksMjE5MTksMjE4ODYsMjE5NzQsMjE5MDUsMjE4ODMsMjE5ODMsMjE5NDksMjE5NTAsMjE5MDgsMjE5MTMsMjE5OTQsMjIwMDcsMjE5NjEsMjIwNDcsMjE5NjksMjE5OTUsMjE5OTYsMjE5NzIs''@;'; put 'put ''MjE5OTAsMjE5ODEsMjE5NTYsMjE5OTksMjE5ODksMjIwMDIsMjIwMDMsMjE5NjQsMjE5NjUsMjE5OTIsMjIwMDUsMjE5ODgsMzY3NTYsMjIwNDYsMjIwMjQsMjIwMjgsMjIwMTcsMjIwNTIsMjIwNTEsMjIwMTQsMjIwMTYsMjIwNTUsMjIwNjEsMjIxMDQsMjIwNzMsMjIxMDMsMjIwNjAsMjIw''@;'; put 'put ''OTMsMjIxMTQsMjIxMDUsMjIxMDgsMjIwOTIsMjIxMDAsMjIxNTAsMjIxMTYsMjIxMjksMjIxMjMsMjIxMzksMjIxNDAsMjIxNDksMjIxNjMsMjIxOTEsMjIyMjgsMjIyMzEsMjIyMzcsMjIyNDEsMjIyNjEsMjIyNTEsMjIyNjUsMjIyNzEsMjIyNzYsMjIyODIsMjIyODEsMjIzMDAsMjQwNzks''@;'; put 'put ''MjQwODksMjQwODQsMjQwODEsMjQxMTMsMjQxMjMsMjQxMjQsMzcxODksMzcxOTEsMzcxOTIsMzcyMDEsMzcyMDMsMzcyMDQsMzcyMDUsMzcyMDYsMzcyMDgsMzcyMDksMzcyMTEsMzcyMTIsMzcyMTUsMzcyMTYsMzcyMjIsMzcyMjMsMzcyMjQsMzcyMjcsMzcyMjksMzcyMzUsMzcyNDIsMzcy''@;'; put 'put ''NDMsMzcyNDQsMzcyNDgsMzcyNDksMzcyNTAsMzcyNTEsMzcyNTIsMzcyNTQsMzcyNTYsMzcyNTgsMzcyNjIsMzcyNjMsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzAsMzcyNzEsMzcyNzIsMzcyNzMsMzcyNzYsMzcyNzcsMzcyNzgsMzcyNzksMzcyODAsMzcyODEsMzcyODQsMzcyODUsMzcyODYs''@;'; put 'put ''MzcyODcsMzcyODgsMzcyODksMzcyOTEsMzcyOTIsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDMsMzczMDQsMzczMDUsMzczMDcsMzczMDgsMzczMDksMzczMTAsMzczMTEsMzczMTIsMzczMTMsMzczMTQsMzczMTUsMzczMTYsMzczMTcsMzczMTgsMzczMjAsMzczMjMsMzcz''@;'; put 'put ''MjgsMzczMzAsMzczMzEsMzczMzIsMzczMzMsMzczMzQsMzczMzUsMzczMzYsMzczMzcsMzczMzgsMzczMzksMzczNDEsMzczNDIsMzczNDMsMzczNDQsMzczNDUsMzczNDYsMzczNDcsMzczNDgsMzczNDksMjQxMTksMjQxMzIsMjQxNDgsMjQxNTUsMjQxNTgsMjQxNjEsMjM2OTIsMjM2NzQs''@;'; put 'put ''MjM2OTMsMjM2OTYsMjM3MDIsMjM2ODgsMjM3MDQsMjM3MDUsMjM2OTcsMjM3MDYsMjM3MDgsMjM3MzMsMjM3MTQsMjM3NDEsMjM3MjQsMjM3MjMsMjM3MjksMjM3MTUsMjM3NDUsMjM3MzUsMjM3NDgsMjM3NjIsMjM3ODAsMjM3NTUsMjM3ODEsMjM4MTAsMjM4MTEsMjM4NDcsMjM4NDYsMjM4''@;'; put 'put ''NTQsMjM4NDQsMjM4MzgsMjM4MTQsMjM4MzUsMjM4OTYsMjM4NzAsMjM4NjAsMjM4NjksMjM5MTYsMjM4OTksMjM5MTksMjM5MDEsMjM5MTUsMjM4ODMsMjM4ODIsMjM5MTMsMjM5MjQsMjM5MzgsMjM5NjEsMjM5NjUsMzU5NTUsMjM5OTEsMjQwMDUsMjQ0MzUsMjQ0MzksMjQ0NTAsMjQ0NTUs''@;'; put 'put ''MjQ0NTcsMjQ0NjAsMjQ0NjksMjQ0NzMsMjQ0NzYsMjQ0ODgsMjQ0OTMsMjQ1MDEsMjQ1MDgsMzQ5MTQsMjQ0MTcsMjkzNTcsMjkzNjAsMjkzNjQsMjkzNjcsMjkzNjgsMjkzNzksMjkzNzcsMjkzOTAsMjkzODksMjkzOTQsMjk0MTYsMjk0MjMsMjk0MTcsMjk0MjYsMjk0MjgsMjk0MzEsMjk0''@;'; put 'put ''NDEsMjk0MjcsMjk0NDMsMjk0MzQsMzczNTAsMzczNTEsMzczNTIsMzczNTMsMzczNTQsMzczNTUsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjIsMzczNjMsMzczNjQsMzczNjUsMzczNjYsMzczNjcsMzczNjgsMzczNjksMzczNzAsMzczNzEsMzczNzIsMzczNzMs''@;'; put 'put ''MzczNzQsMzczNzUsMzczNzYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQsMzczODUsMzczODYsMzczODcsMzczODgsMzczODksMzczOTAsMzczOTEsMzczOTIsMzczOTMsMzczOTQsMzczOTUsMzczOTYsMzczOTcsMzczOTgsMzczOTksMzc0MDAsMzc0''@;'; put 'put ''MDEsMzc0MDIsMzc0MDMsMzc0MDQsMzc0MDUsMzc0MDYsMzc0MDcsMzc0MDgsMzc0MDksMzc0MTAsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTUsMzc0MTYsMzc0MTcsMzc0MTgsMzc0MTksMzc0MjAsMzc0MjEsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjUsMzc0MjYsMzc0MjcsMzc0Mjgs''@;'; put 'put ''Mzc0MjksMzc0MzAsMzc0MzEsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzUsMzc0MzYsMzc0MzcsMzc0MzgsMzc0MzksMzc0NDAsMzc0NDEsMzc0NDIsMzc0NDMsMzc0NDQsMzc0NDUsMjk0MzUsMjk0NjMsMjk0NTksMjk0NzMsMjk0NTAsMjk0NzAsMjk0NjksMjk0NjEsMjk0NzQsMjk0OTcsMjk0''@;'; put 'put ''NzcsMjk0ODQsMjk0OTYsMjk0ODksMjk1MjAsMjk1MTcsMjk1MjcsMjk1MzYsMjk1NDgsMjk1NTEsMjk1NjYsMzMzMDcsMjI4MjEsMzkxNDMsMjI4MjAsMjI3ODYsMzkyNjcsMzkyNzEsMzkyNzIsMzkyNzMsMzkyNzQsMzkyNzUsMzkyNzYsMzkyODQsMzkyODcsMzkyOTMsMzkyOTYsMzkzMDAs''@;'; put 'put ''MzkzMDMsMzkzMDYsMzkzMDksMzkzMTIsMzkzMTMsMzkzMTUsMzkzMTYsMzkzMTcsMjQxOTIsMjQyMDksMjQyMDMsMjQyMTQsMjQyMjksMjQyMjQsMjQyNDksMjQyNDUsMjQyNTQsMjQyNDMsMzYxNzksMjQyNzQsMjQyNzMsMjQyODMsMjQyOTYsMjQyOTgsMzMyMTAsMjQ1MTYsMjQ1MjEsMjQ1''@;'; put 'put ''MzQsMjQ1MjcsMjQ1NzksMjQ1NTgsMjQ1ODAsMjQ1NDUsMjQ1NDgsMjQ1NzQsMjQ1ODEsMjQ1ODIsMjQ1NTQsMjQ1NTcsMjQ1NjgsMjQ2MDEsMjQ2MjksMjQ2MTQsMjQ2MDMsMjQ1OTEsMjQ1ODksMjQ2MTcsMjQ2MTksMjQ1ODYsMjQ2MzksMjQ2MDksMjQ2OTYsMjQ2OTcsMjQ2OTksMjQ2OTgs''@;'; put 'put ''MjQ2NDIsMzc0NDYsMzc0NDcsMzc0NDgsMzc0NDksMzc0NTAsMzc0NTEsMzc0NTIsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTYsMzc0NTcsMzc0NTgsMzc0NTksMzc0NjAsMzc0NjEsMzc0NjIsMzc0NjMsMzc0NjQsMzc0NjUsMzc0NjYsMzc0NjcsMzc0NjgsMzc0NjksMzc0NzAsMzc0NzEsMzc0''@;'; put 'put ''NzIsMzc0NzMsMzc0NzQsMzc0NzUsMzc0NzYsMzc0NzcsMzc0NzgsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODIsMzc0ODMsMzc0ODQsMzc0ODUsMzc0ODYsMzc0ODcsMzc0ODgsMzc0ODksMzc0OTAsMzc0OTEsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTgsMzc0OTksMzc1MDAs''@;'; put 'put ''Mzc1MDEsMzc1MDIsMzc1MDMsMzc1MDQsMzc1MDUsMzc1MDYsMzc1MDcsMzc1MDgsMzc1MDksMzc1MTAsMzc1MTEsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTUsMzc1MTYsMzc1MTcsMzc1MTksMzc1MjAsMzc1MjEsMzc1MjIsMzc1MjMsMzc1MjQsMzc1MjUsMzc1MjYsMzc1MjcsMzc1MjgsMzc1''@;'; put 'put ''MjksMzc1MzAsMzc1MzEsMzc1MzIsMzc1MzMsMzc1MzQsMzc1MzUsMzc1MzYsMzc1MzcsMzc1MzgsMzc1MzksMzc1NDAsMzc1NDEsMzc1NDIsMzc1NDMsMjQ2ODIsMjQ3MDEsMjQ3MjYsMjQ3MzAsMjQ3NDksMjQ3MzMsMjQ3MDcsMjQ3MjIsMjQ3MTYsMjQ3MzEsMjQ4MTIsMjQ3NjMsMjQ3NTMs''@;'; put 'put ''MjQ3OTcsMjQ3OTIsMjQ3NzQsMjQ3OTQsMjQ3NTYsMjQ4NjQsMjQ4NzAsMjQ4NTMsMjQ4NjcsMjQ4MjAsMjQ4MzIsMjQ4NDYsMjQ4NzUsMjQ5MDYsMjQ5NDksMjUwMDQsMjQ5ODAsMjQ5OTksMjUwMTUsMjUwNDQsMjUwNzcsMjQ1NDEsMzg1NzksMzgzNzcsMzgzNzksMzgzODUsMzgzODcsMzgz''@;'; put 'put ''ODksMzgzOTAsMzgzOTYsMzgzOTgsMzg0MDMsMzg0MDQsMzg0MDYsMzg0MDgsMzg0MTAsMzg0MTEsMzg0MTIsMzg0MTMsMzg0MTUsMzg0MTgsMzg0MjEsMzg0MjIsMzg0MjMsMzg0MjUsMzg0MjYsMjAwMTIsMjkyNDcsMjUxMDksMjc3MDEsMjc3MzIsMjc3NDAsMjc3MjIsMjc4MTEsMjc3ODEs''@;'; put 'put ''Mjc3OTIsMjc3OTYsMjc3ODgsMjc3NTIsMjc3NTMsMjc3NjQsMjc3NjYsMjc3ODIsMjc4MTcsMjc4NTYsMjc4NjAsMjc4MjEsMjc4OTUsMjc4OTYsMjc4ODksMjc4NjMsMjc4MjYsMjc4NzIsMjc4NjIsMjc4OTgsMjc4ODMsMjc4ODYsMjc4MjUsMjc4NTksMjc4ODcsMjc5MDIsMzc1NDQsMzc1''@;'; put 'put ''NDUsMzc1NDYsMzc1NDcsMzc1NDgsMzc1NDksMzc1NTEsMzc1NTIsMzc1NTMsMzc1NTQsMzc1NTUsMzc1NTYsMzc1NTcsMzc1NTgsMzc1NTksMzc1NjAsMzc1NjEsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjYsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzIsMzc1NzMs''@;'; put 'put ''Mzc1NzQsMzc1NzUsMzc1NzcsMzc1NzgsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODMsMzc1ODQsMzc1ODUsMzc1ODYsMzc1ODcsMzc1ODgsMzc1ODksMzc1OTAsMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTQsMzc1OTUsMzc1OTYsMzc1OTcsMzc1OTgsMzc1OTksMzc2MDAsMzc2MDEsMzc2''@;'; put 'put ''MDIsMzc2MDMsMzc2MDQsMzc2MDUsMzc2MDYsMzc2MDcsMzc2MDgsMzc2MDksMzc2MTAsMzc2MTEsMzc2MTIsMzc2MTMsMzc2MTQsMzc2MTUsMzc2MTYsMzc2MTcsMzc2MTgsMzc2MTksMzc2MjAsMzc2MjEsMzc2MjIsMzc2MjMsMzc2MjQsMzc2MjUsMzc2MjYsMzc2MjcsMzc2MjgsMzc2Mjks''@;'; put 'put ''Mzc2MzAsMzc2MzEsMzc2MzIsMzc2MzMsMzc2MzQsMzc2MzUsMzc2MzYsMzc2MzcsMzc2MzgsMzc2MzksMzc2NDAsMzc2NDEsMjc5NjEsMjc5NDMsMjc5MTYsMjc5NzEsMjc5NzYsMjc5MTEsMjc5MDgsMjc5MjksMjc5MTgsMjc5NDcsMjc5ODEsMjc5NTAsMjc5NTcsMjc5MzAsMjc5ODMsMjc5''@;'; put 'put ''ODYsMjc5ODgsMjc5NTUsMjgwNDksMjgwMTUsMjgwNjIsMjgwNjQsMjc5OTgsMjgwNTEsMjgwNTIsMjc5OTYsMjhlMywyODAyOCwyODAwMywyODE4NiwyODEwMywyODEwMSwyODEyNiwyODE3NCwyODA5NSwyODEyOCwyODE3NywyODEzNCwyODEyNSwyODEyMSwyODE4MiwyODA3NSwyODE3Miwy''@;'; put 'put ''ODA3OCwyODIwMywyODI3MCwyODIzOCwyODI2NywyODMzOCwyODI1NSwyODI5NCwyODI0MywyODI0NCwyODIxMCwyODE5NywyODIyOCwyODM4MywyODMzNywyODMxMiwyODM4NCwyODQ2MSwyODM4NiwyODMyNSwyODMyNywyODM0OSwyODM0NywyODM0MywyODM3NSwyODM0MCwyODM2NywyODMw''@;'; put 'put ''MywyODM1NCwyODMxOSwyODUxNCwyODQ4NiwyODQ4NywyODQ1MiwyODQzNywyODQwOSwyODQ2MywyODQ3MCwyODQ5MSwyODUzMiwyODQ1OCwyODQyNSwyODQ1NywyODU1MywyODU1NywyODU1NiwyODUzNiwyODUzMCwyODU0MCwyODUzOCwyODYyNSwzNzY0MiwzNzY0MywzNzY0NCwzNzY0NSwz''@;'; put 'put ''NzY0NiwzNzY0NywzNzY0OCwzNzY0OSwzNzY1MCwzNzY1MSwzNzY1MiwzNzY1MywzNzY1NCwzNzY1NSwzNzY1NiwzNzY1NywzNzY1OCwzNzY1OSwzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NCwzNzY2NSwzNzY2NiwzNzY2NywzNzY2OCwzNzY2OSwzNzY3MCwzNzY3MSwzNzY3MiwzNzY3''@;'; put 'put ''MywzNzY3NCwzNzY3NSwzNzY3NiwzNzY3NywzNzY3OCwzNzY3OSwzNzY4MCwzNzY4MSwzNzY4MiwzNzY4MywzNzY4NCwzNzY4NSwzNzY4NiwzNzY4NywzNzY4OCwzNzY4OSwzNzY5MCwzNzY5MSwzNzY5MiwzNzY5MywzNzY5NSwzNzY5NiwzNzY5NywzNzY5OCwzNzY5OSwzNzcwMCwzNzcwMSwz''@;'; put 'put ''NzcwMiwzNzcwMywzNzcwNCwzNzcwNSwzNzcwNiwzNzcwNywzNzcwOCwzNzcwOSwzNzcxMCwzNzcxMSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNSwzNzcxNiwzNzcxNywzNzcxOCwzNzcxOSwzNzcyMCwzNzcyMSwzNzcyMiwzNzcyMywzNzcyNCwzNzcyNSwzNzcyNiwzNzcyNywzNzcyOCwzNzcy''@;'; put 'put ''OSwzNzczMCwzNzczMSwzNzczMiwzNzczMywzNzczNCwzNzczNSwzNzczNiwzNzczNywzNzczOSwyODYxNywyODU4MywyODYwMSwyODU5OCwyODYxMCwyODY0MSwyODY1NCwyODYzOCwyODY0MCwyODY1NSwyODY5OCwyODcwNywyODY5OSwyODcyOSwyODcyNSwyODc1MSwyODc2NiwyMzQyNCwy''@;'; put 'put ''MzQyOCwyMzQ0NSwyMzQ0MywyMzQ2MSwyMzQ4MCwyOTk5OSwzOTU4MiwyNTY1MiwyMzUyNCwyMzUzNCwzNTEyMCwyMzUzNiwzNjQyMywzNTU5MSwzNjc5MCwzNjgxOSwzNjgyMSwzNjgzNywzNjg0NiwzNjgzNiwzNjg0MSwzNjgzOCwzNjg1MSwzNjg0MCwzNjg2OSwzNjg2OCwzNjg3NSwzNjkw''@;'; put 'put ''MiwzNjg4MSwzNjg3NywzNjg4NiwzNjg5NywzNjkxNywzNjkxOCwzNjkwOSwzNjkxMSwzNjkzMiwzNjk0NSwzNjk0NiwzNjk0NCwzNjk2OCwzNjk1MiwzNjk2MiwzNjk1NSwyNjI5NywzNjk4MCwzNjk4OSwzNjk5NCwzN2UzLDM2OTk1LDM3MDAzLDI0NDAwLDI0NDA3LDI0NDA2LDI0NDA4LDIz''@;'; put 'put ''NjExLDIxNjc1LDIzNjMyLDIzNjQxLDIzNDA5LDIzNjUxLDIzNjU0LDMyNzAwLDI0MzYyLDI0MzYxLDI0MzY1LDMzMzk2LDI0MzgwLDM5NzM5LDIzNjYyLDIyOTEzLDIyOTE1LDIyOTI1LDIyOTUzLDIyOTU0LDIyOTQ3LDM3NzQwLDM3NzQxLDM3NzQyLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ2''@;'; put 'put ''LDM3NzQ3LDM3NzQ4LDM3NzQ5LDM3NzUwLDM3NzUxLDM3NzUyLDM3NzUzLDM3NzU0LDM3NzU1LDM3NzU2LDM3NzU3LDM3NzU4LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzYzLDM3NzY0LDM3NzY1LDM3NzY2LDM3NzY3LDM3NzY4LDM3NzY5LDM3NzcwLDM3NzcxLDM3NzcyLDM3NzczLDM3''@;'; put 'put ''Nzc0LDM3Nzc2LDM3Nzc3LDM3Nzc4LDM3Nzc5LDM3NzgwLDM3NzgxLDM3NzgyLDM3NzgzLDM3Nzg0LDM3Nzg1LDM3Nzg2LDM3Nzg3LDM3Nzg4LDM3Nzg5LDM3NzkwLDM3NzkxLDM3NzkyLDM3NzkzLDM3Nzk0LDM3Nzk1LDM3Nzk2LDM3Nzk3LDM3Nzk4LDM3Nzk5LDM3ODAwLDM3ODAxLDM3ODAy''@;'; put 'put ''LDM3ODAzLDM3ODA0LDM3ODA1LDM3ODA2LDM3ODA3LDM3ODA4LDM3ODA5LDM3ODEwLDM3ODExLDM3ODEyLDM3ODEzLDM3ODE0LDM3ODE1LDM3ODE2LDM3ODE3LDM3ODE4LDM3ODE5LDM3ODIwLDM3ODIxLDM3ODIyLDM3ODIzLDM3ODI0LDM3ODI1LDM3ODI2LDM3ODI3LDM3ODI4LDM3ODI5LDM3''@;'; put 'put ''ODMwLDM3ODMxLDM3ODMyLDM3ODMzLDM3ODM1LDM3ODM2LDM3ODM3LDIyOTM1LDIyOTg2LDIyOTU1LDIyOTQyLDIyOTQ4LDIyOTk0LDIyOTYyLDIyOTU5LDIyOTk5LDIyOTc0LDIzMDQ1LDIzMDQ2LDIzMDA1LDIzMDQ4LDIzMDExLDIzZTMsMjMwMzMsMjMwNTIsMjMwNDksMjMwOTAsMjMwOTIs''@;'; put 'put ''MjMwNTcsMjMwNzUsMjMwNTksMjMxMDQsMjMxNDMsMjMxMTQsMjMxMjUsMjMxMDAsMjMxMzgsMjMxNTcsMzMwMDQsMjMyMTAsMjMxOTUsMjMxNTksMjMxNjIsMjMyMzAsMjMyNzUsMjMyMTgsMjMyNTAsMjMyNTIsMjMyMjQsMjMyNjQsMjMyNjcsMjMyODEsMjMyNTQsMjMyNzAsMjMyNTYsMjMy''@;'; put 'put ''NjAsMjMzMDUsMjMzMTksMjMzMTgsMjMzNDYsMjMzNTEsMjMzNjAsMjM1NzMsMjM1ODAsMjMzODYsMjMzOTcsMjM0MTEsMjMzNzcsMjMzNzksMjMzOTQsMzk1NDEsMzk1NDMsMzk1NDQsMzk1NDYsMzk1NTEsMzk1NDksMzk1NTIsMzk1NTMsMzk1NTcsMzk1NjAsMzk1NjIsMzk1NjgsMzk1NzAs''@;'; put 'put ''Mzk1NzEsMzk1NzQsMzk1NzYsMzk1NzksMzk1ODAsMzk1ODEsMzk1ODMsMzk1ODQsMzk1ODYsMzk1ODcsMzk1ODksMzk1OTEsMzI0MTUsMzI0MTcsMzI0MTksMzI0MjEsMzI0MjQsMzI0MjUsMzc4MzgsMzc4MzksMzc4NDAsMzc4NDEsMzc4NDIsMzc4NDMsMzc4NDQsMzc4NDUsMzc4NDcsMzc4''@;'; put 'put ''NDgsMzc4NDksMzc4NTAsMzc4NTEsMzc4NTIsMzc4NTMsMzc4NTQsMzc4NTUsMzc4NTYsMzc4NTcsMzc4NTgsMzc4NTksMzc4NjAsMzc4NjEsMzc4NjIsMzc4NjMsMzc4NjQsMzc4NjUsMzc4NjYsMzc4NjcsMzc4NjgsMzc4NjksMzc4NzAsMzc4NzEsMzc4NzIsMzc4NzMsMzc4NzQsMzc4NzUs''@;'; put 'put ''Mzc4NzYsMzc4NzcsMzc4NzgsMzc4NzksMzc4ODAsMzc4ODEsMzc4ODIsMzc4ODMsMzc4ODQsMzc4ODUsMzc4ODYsMzc4ODcsMzc4ODgsMzc4ODksMzc4OTAsMzc4OTEsMzc4OTIsMzc4OTMsMzc4OTQsMzc4OTUsMzc4OTYsMzc4OTcsMzc4OTgsMzc4OTksMzc5MDAsMzc5MDEsMzc5MDIsMzc5''@;'; put 'put ''MDMsMzc5MDQsMzc5MDUsMzc5MDYsMzc5MDcsMzc5MDgsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTIsMzc5MTMsMzc5MTQsMzc5MTUsMzc5MTYsMzc5MTcsMzc5MTgsMzc5MTksMzc5MjAsMzc5MjEsMzc5MjIsMzc5MjMsMzc5MjQsMzc5MjUsMzc5MjYsMzc5MjcsMzc5MjgsMzc5MjksMzc5MzAs''@;'; put 'put ''Mzc5MzEsMzc5MzIsMzc5MzMsMzc5MzQsMzI0MjksMzI0MzIsMzI0NDYsMzI0NDgsMzI0NDksMzI0NTAsMzI0NTcsMzI0NTksMzI0NjAsMzI0NjQsMzI0NjgsMzI0NzEsMzI0NzUsMzI0ODAsMzI0ODEsMzI0ODgsMzI0OTEsMzI0OTQsMzI0OTUsMzI0OTcsMzI0OTgsMzI1MjUsMzI1MDIsMzI1''@;'; put 'put ''MDYsMzI1MDcsMzI1MTAsMzI1MTMsMzI1MTQsMzI1MTUsMzI1MTksMzI1MjAsMzI1MjMsMzI1MjQsMzI1MjcsMzI1MjksMzI1MzAsMzI1MzUsMzI1MzcsMzI1NDAsMzI1MzksMzI1NDMsMzI1NDUsMzI1NDYsMzI1NDcsMzI1NDgsMzI1NDksMzI1NTAsMzI1NTEsMzI1NTQsMzI1NTUsMzI1NTYs''@;'; put 'put ''MzI1NTcsMzI1NTksMzI1NjAsMzI1NjEsMzI1NjIsMzI1NjMsMzI1NjUsMjQxODYsMzAwNzksMjQwMjcsMzAwMTQsMzcwMTMsMjk1ODIsMjk1ODUsMjk2MTQsMjk2MDIsMjk1OTksMjk2NDcsMjk2MzQsMjk2NDksMjk2MjMsMjk2MTksMjk2MzIsMjk2NDEsMjk2NDAsMjk2NjksMjk2NTcsMzkw''@;'; put 'put ''MzYsMjk3MDYsMjk2NzMsMjk2NzEsMjk2NjIsMjk2MjYsMjk2ODIsMjk3MTEsMjk3MzgsMjk3ODcsMjk3MzQsMjk3MzMsMjk3MzYsMjk3NDQsMjk3NDIsMjk3NDAsMzc5MzUsMzc5MzYsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDEsMzc5NDIsMzc5NDMsMzc5NDQsMzc5NDUsMzc5NDYs''@;'; put 'put ''Mzc5NDcsMzc5NDgsMzc5NDksMzc5NTEsMzc5NTIsMzc5NTMsMzc5NTQsMzc5NTUsMzc5NTYsMzc5NTcsMzc5NTgsMzc5NTksMzc5NjAsMzc5NjEsMzc5NjIsMzc5NjMsMzc5NjQsMzc5NjUsMzc5NjYsMzc5NjcsMzc5NjgsMzc5NjksMzc5NzAsMzc5NzEsMzc5NzIsMzc5NzMsMzc5NzQsMzc5''@;'; put 'put ''NzUsMzc5NzYsMzc5NzcsMzc5NzgsMzc5NzksMzc5ODAsMzc5ODEsMzc5ODIsMzc5ODMsMzc5ODQsMzc5ODUsMzc5ODYsMzc5ODcsMzc5ODgsMzc5ODksMzc5OTAsMzc5OTEsMzc5OTIsMzc5OTMsMzc5OTQsMzc5OTYsMzc5OTcsMzc5OTgsMzc5OTksMzhlMywzODAwMSwzODAwMiwzODAwMywz''@;'; put 'put ''ODAwNCwzODAwNSwzODAwNiwzODAwNywzODAwOCwzODAwOSwzODAxMCwzODAxMSwzODAxMiwzODAxMywzODAxNCwzODAxNSwzODAxNiwzODAxNywzODAxOCwzODAxOSwzODAyMCwzODAzMywzODAzOCwzODA0MCwzODA4NywzODA5NSwzODA5OSwzODEwMCwzODEwNiwzODExOCwzODEzOSwzODE3''@;'; put 'put ''MiwzODE3NiwyOTcyMywyOTcyMiwyOTc2MSwyOTc4OCwyOTc4MywyOTc4MSwyOTc4NSwyOTgxNSwyOTgwNSwyOTgyMiwyOTg1MiwyOTgzOCwyOTgyNCwyOTgyNSwyOTgzMSwyOTgzNSwyOTg1NCwyOTg2NCwyOTg2NSwyOTg0MCwyOTg2MywyOTkwNiwyOTg4MiwzODg5MCwzODg5MSwzODg5Miwy''@;'; put 'put ''NjQ0NCwyNjQ1MSwyNjQ2MiwyNjQ0MCwyNjQ3MywyNjUzMywyNjUwMywyNjQ3NCwyNjQ4MywyNjUyMCwyNjUzNSwyNjQ4NSwyNjUzNiwyNjUyNiwyNjU0MSwyNjUwNywyNjQ4NywyNjQ5MiwyNjYwOCwyNjYzMywyNjU4NCwyNjYzNCwyNjYwMSwyNjU0NCwyNjYzNiwyNjU4NSwyNjU0OSwyNjU4''@;'; put 'put ''NiwyNjU0NywyNjU4OSwyNjYyNCwyNjU2MywyNjU1MiwyNjU5NCwyNjYzOCwyNjU2MSwyNjYyMSwyNjY3NCwyNjY3NSwyNjcyMCwyNjcyMSwyNjcwMiwyNjcyMiwyNjY5MiwyNjcyNCwyNjc1NSwyNjY1MywyNjcwOSwyNjcyNiwyNjY4OSwyNjcyNywyNjY4OCwyNjY4NiwyNjY5OCwyNjY5Nywy''@;'; put 'put ''NjY2NSwyNjgwNSwyNjc2NywyNjc0MCwyNjc0MywyNjc3MSwyNjczMSwyNjgxOCwyNjk5MCwyNjg3NiwyNjkxMSwyNjkxMiwyNjg3MywzODE4MywzODE5NSwzODIwNSwzODIxMSwzODIxNiwzODIxOSwzODIyOSwzODIzNCwzODI0MCwzODI1NCwzODI2MCwzODI2MSwzODI2MywzODI2NCwzODI2''@;'; put 'put ''NSwzODI2NiwzODI2NywzODI2OCwzODI2OSwzODI3MCwzODI3MiwzODI3MywzODI3NCwzODI3NSwzODI3NiwzODI3NywzODI3OCwzODI3OSwzODI4MCwzODI4MSwzODI4MiwzODI4MywzODI4NCwzODI4NSwzODI4NiwzODI4NywzODI4OCwzODI4OSwzODI5MCwzODI5MSwzODI5MiwzODI5Mywz''@;'; put 'put ''ODI5NCwzODI5NSwzODI5NiwzODI5NywzODI5OCwzODI5OSwzODMwMCwzODMwMSwzODMwMiwzODMwMywzODMwNCwzODMwNSwzODMwNiwzODMwNywzODMwOCwzODMwOSwzODMxMCwzODMxMSwzODMxMiwzODMxMywzODMxNCwzODMxNSwzODMxNiwzODMxNywzODMxOCwzODMxOSwzODMyMCwzODMy''@;'; put 'put ''MSwzODMyMiwzODMyMywzODMyNCwzODMyNSwzODMyNiwzODMyNywzODMyOCwzODMyOSwzODMzMCwzODMzMSwzODMzMiwzODMzMywzODMzNCwzODMzNSwzODMzNiwzODMzNywzODMzOCwzODMzOSwzODM0MCwzODM0MSwzODM0MiwzODM0MywzODM0NCwzODM0NSwzODM0NiwzODM0NywyNjkxNiwy''@;'; put 'put ''Njg2NCwyNjg5MSwyNjg4MSwyNjk2NywyNjg1MSwyNjg5NiwyNjk5MywyNjkzNywyNjk3NiwyNjk0NiwyNjk3MywyNzAxMiwyNjk4NywyNzAwOCwyNzAzMiwyN2UzLDI2OTMyLDI3MDg0LDI3MDE1LDI3MDE2LDI3MDg2LDI3MDE3LDI2OTgyLDI2OTc5LDI3MDAxLDI3MDM1LDI3MDQ3LDI3MDY3''@;'; put 'put ''LDI3MDUxLDI3MDUzLDI3MDkyLDI3MDU3LDI3MDczLDI3MDgyLDI3MTAzLDI3MDI5LDI3MTA0LDI3MDIxLDI3MTM1LDI3MTgzLDI3MTE3LDI3MTU5LDI3MTYwLDI3MjM3LDI3MTIyLDI3MjA0LDI3MTk4LDI3Mjk2LDI3MjE2LDI3MjI3LDI3MTg5LDI3Mjc4LDI3MjU3LDI3MTk3LDI3MTc2LDI3''@;'; put 'put ''MjI0LDI3MjYwLDI3MjgxLDI3MjgwLDI3MzA1LDI3Mjg3LDI3MzA3LDI5NDk1LDI5NTIyLDI3NTIxLDI3NTIyLDI3NTI3LDI3NTI0LDI3NTM4LDI3NTM5LDI3NTMzLDI3NTQ2LDI3NTQ3LDI3NTUzLDI3NTYyLDM2NzE1LDM2NzE3LDM2NzIxLDM2NzIyLDM2NzIzLDM2NzI1LDM2NzI2LDM2NzI4''@;'; put 'put ''LDM2NzI3LDM2NzI5LDM2NzMwLDM2NzMyLDM2NzM0LDM2NzM3LDM2NzM4LDM2NzQwLDM2NzQzLDM2NzQ3LDM4MzQ4LDM4MzQ5LDM4MzUwLDM4MzUxLDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzU2LDM4MzU3LDM4MzU4LDM4MzU5LDM4MzYwLDM4MzYxLDM4MzYyLDM4MzYzLDM4MzY0LDM4''@;'; put 'put ''MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzY5LDM4MzcwLDM4MzcxLDM4MzcyLDM4MzczLDM4Mzc0LDM4Mzc1LDM4MzgwLDM4Mzk5LDM4NDA3LDM4NDE5LDM4NDI0LDM4NDI3LDM4NDMwLDM4NDMyLDM4NDM1LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDM5LDM4NDQwLDM4NDQxLDM4NDQzLDM4NDQ0''@;'; put 'put ''LDM4NDQ1LDM4NDQ3LDM4NDQ4LDM4NDU1LDM4NDU2LDM4NDU3LDM4NDU4LDM4NDYyLDM4NDY1LDM4NDY3LDM4NDc0LDM4NDc4LDM4NDc5LDM4NDgxLDM4NDgyLDM4NDgzLDM4NDg2LDM4NDg3LDM4NDg4LDM4NDg5LDM4NDkwLDM4NDkyLDM4NDkzLDM4NDk0LDM4NDk2LDM4NDk5LDM4NTAxLDM4''@;'; put 'put ''NTAyLDM4NTA3LDM4NTA5LDM4NTEwLDM4NTExLDM4NTEyLDM4NTEzLDM4NTE1LDM4NTIwLDM4NTIxLDM4NTIyLDM4NTIzLDM4NTI0LDM4NTI1LDM4NTI2LDM4NTI3LDM4NTI4LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM1LDM4NTM3LDM4NTM4LDM2NzQ5LDM2NzUwLDM2NzUxLDM2NzYw''@;'; put 'put ''LDM2NzYyLDM2NTU4LDI1MDk5LDI1MTExLDI1MTE1LDI1MTE5LDI1MTIyLDI1MTIxLDI1MTI1LDI1MTI0LDI1MTMyLDMzMjU1LDI5OTM1LDI5OTQwLDI5OTUxLDI5OTY3LDI5OTY5LDI5OTcxLDI1OTA4LDI2MDk0LDI2MDk1LDI2MDk2LDI2MTIyLDI2MTM3LDI2NDgyLDI2MTE1LDI2MTMzLDI2''@;'; put 'put ''MTEyLDI4ODA1LDI2MzU5LDI2MTQxLDI2MTY0LDI2MTYxLDI2MTY2LDI2MTY1LDMyNzc0LDI2MjA3LDI2MTk2LDI2MTc3LDI2MTkxLDI2MTk4LDI2MjA5LDI2MTk5LDI2MjMxLDI2MjQ0LDI2MjUyLDI2Mjc5LDI2MjY5LDI2MzAyLDI2MzMxLDI2MzMyLDI2MzQyLDI2MzQ1LDM2MTQ2LDM2MTQ3''@;'; put 'put ''LDM2MTUwLDM2MTU1LDM2MTU3LDM2MTYwLDM2MTY1LDM2MTY2LDM2MTY4LDM2MTY5LDM2MTY3LDM2MTczLDM2MTgxLDM2MTg1LDM1MjcxLDM1Mjc0LDM1Mjc1LDM1Mjc2LDM1Mjc4LDM1Mjc5LDM1MjgwLDM1MjgxLDI5Mjk0LDI5MzQzLDI5Mjc3LDI5Mjg2LDI5Mjk1LDI5MzEwLDI5MzExLDI5''@;'; put 'put ''MzE2LDI5MzIzLDI5MzI1LDI5MzI3LDI5MzMwLDI1MzUyLDI1Mzk0LDI1NTIwLDM4NTQwLDM4NTQyLDM4NTQ1LDM4NTQ2LDM4NTQ3LDM4NTQ5LDM4NTUwLDM4NTU0LDM4NTU1LDM4NTU3LDM4NTU4LDM4NTU5LDM4NTYwLDM4NTYxLDM4NTYyLDM4NTYzLDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY4''@;'; put 'put ''LDM4NTY5LDM4NTcwLDM4NTcxLDM4NTcyLDM4NTczLDM4NTc0LDM4NTc1LDM4NTc3LDM4NTc4LDM4NTgwLDM4NTgxLDM4NTgzLDM4NTg0LDM4NTg2LDM4NTg3LDM4NTkxLDM4NTk0LDM4NTk1LDM4NjAwLDM4NjAyLDM4NjAzLDM4NjA4LDM4NjA5LDM4NjExLDM4NjEyLDM4NjE0LDM4NjE1LDM4''@;'; put 'put ''NjE2LDM4NjE3LDM4NjE4LDM4NjE5LDM4NjIwLDM4NjIxLDM4NjIyLDM4NjIzLDM4NjI1LDM4NjI2LDM4NjI3LDM4NjI4LDM4NjI5LDM4NjMwLDM4NjMxLDM4NjM1LDM4NjM2LDM4NjM3LDM4NjM4LDM4NjQwLDM4NjQxLDM4NjQyLDM4NjQ0LDM4NjQ1LDM4NjQ4LDM4NjUwLDM4NjUxLDM4NjUy''@;'; put 'put ''LDM4NjUzLDM4NjU1LDM4NjU4LDM4NjU5LDM4NjYxLDM4NjY2LDM4NjY3LDM4NjY4LDM4NjcyLDM4NjczLDM4Njc0LDM4Njc2LDM4Njc3LDM4Njc5LDM4NjgwLDM4NjgxLDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg3LDM4Njg4LDI1NjYzLDI1ODE2LDMyNzcyLDI3NjI2LDI3NjM1LDI3NjQ1LDI3''@;'; put 'put ''NjM3LDI3NjQxLDI3NjUzLDI3NjU1LDI3NjU0LDI3NjYxLDI3NjY5LDI3NjcyLDI3NjczLDI3Njc0LDI3NjgxLDI3Njg5LDI3Njg0LDI3NjkwLDI3Njk4LDI1OTA5LDI1OTQxLDI1OTYzLDI5MjYxLDI5MjY2LDI5MjcwLDI5MjMyLDM0NDAyLDIxMDE0LDMyOTI3LDMyOTI0LDMyOTE1LDMyOTU2''@;'; put 'put ''LDI2Mzc4LDMyOTU3LDMyOTQ1LDMyOTM5LDMyOTQxLDMyOTQ4LDMyOTUxLDMyOTk5LDMzZTMsMzMwMDEsMzMwMDIsMzI5ODcsMzI5NjIsMzI5NjQsMzI5ODUsMzI5NzMsMzI5ODMsMjYzODQsMzI5ODksMzMwMDMsMzMwMDksMzMwMTIsMzMwMDUsMzMwMzcsMzMwMzgsMzMwMTAsMzMwMjAsMjYz''@;'; put 'put ''ODksMzMwNDIsMzU5MzAsMzMwNzgsMzMwNTQsMzMwNjgsMzMwNDgsMzMwNzQsMzMwOTYsMzMxMDAsMzMxMDcsMzMxNDAsMzMxMTMsMzMxMTQsMzMxMzcsMzMxMjAsMzMxMjksMzMxNDgsMzMxNDksMzMxMzMsMzMxMjcsMjI2MDUsMjMyMjEsMzMxNjAsMzMxNTQsMzMxNjksMjgzNzMsMzMxODcs''@;'; put 'put ''MzMxOTQsMzMyMjgsMjY0MDYsMzMyMjYsMzMyMTEsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTIsMzg2OTMsMzg2OTQsMzg2OTUsMzg2OTYsMzg2OTcsMzg2OTksMzg3MDAsMzg3MDIsMzg3MDMsMzg3MDUsMzg3MDcsMzg3MDgsMzg3MDksMzg3MTAsMzg3MTEsMzg3MTQsMzg3MTUsMzg3MTYsMzg3''@;'; put 'put ''MTcsMzg3MTksMzg3MjAsMzg3MjEsMzg3MjIsMzg3MjMsMzg3MjQsMzg3MjUsMzg3MjYsMzg3MjcsMzg3MjgsMzg3MjksMzg3MzAsMzg3MzEsMzg3MzIsMzg3MzMsMzg3MzQsMzg3MzUsMzg3MzYsMzg3MzcsMzg3NDAsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDgsMzg3NDksMzg3NTEs''@;'; put 'put ''Mzg3NTUsMzg3NTYsMzg3NTgsMzg3NTksMzg3NjAsMzg3NjIsMzg3NjMsMzg3NjQsMzg3NjUsMzg3NjYsMzg3NjcsMzg3NjgsMzg3NjksMzg3NzAsMzg3NzMsMzg3NzUsMzg3NzYsMzg3NzcsMzg3NzgsMzg3NzksMzg3ODEsMzg3ODIsMzg3ODMsMzg3ODQsMzg3ODUsMzg3ODYsMzg3ODcsMzg3''@;'; put 'put ''ODgsMzg3OTAsMzg3OTEsMzg3OTIsMzg3OTMsMzg3OTQsMzg3OTYsMzg3OTgsMzg3OTksMzg4MDAsMzg4MDMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTEsMzg4MTIsMzg4MTMsMzMyMTcsMzMxOTAsMjc0MjgsMjc0NDcsMjc0NDksMjc0NTksMjc0NjIsMjc0ODEsMzkxMjEs''@;'; put 'put ''MzkxMjIsMzkxMjMsMzkxMjUsMzkxMjksMzkxMzAsMjc1NzEsMjQzODQsMjc1ODYsMzUzMTUsMjZlMyw0MDc4NSwyNjAwMywyNjA0NCwyNjA1NCwyNjA1MiwyNjA1MSwyNjA2MCwyNjA2MiwyNjA2NiwyNjA3MCwyODgwMCwyODgyOCwyODgyMiwyODgyOSwyODg1OSwyODg2NCwyODg1NSwyODg0''@;'; put 'put ''MywyODg0OSwyODkwNCwyODg3NCwyODk0NCwyODk0NywyODk1MCwyODk3NSwyODk3NywyOTA0MywyOTAyMCwyOTAzMiwyODk5NywyOTA0MiwyOTAwMiwyOTA0OCwyOTA1MCwyOTA4MCwyOTEwNywyOTEwOSwyOTA5NiwyOTA4OCwyOTE1MiwyOTE0MCwyOTE1OSwyOTE3NywyOTIxMywyOTIyNCwy''@;'; put 'put ''ODc4MCwyODk1MiwyOTAzMCwyOTExMywyNTE1MCwyNTE0OSwyNTE1NSwyNTE2MCwyNTE2MSwzMTAzNSwzMTA0MCwzMTA0NiwzMTA0OSwzMTA2NywzMTA2OCwzMTA1OSwzMTA2NiwzMTA3NCwzMTA2MywzMTA3MiwzMTA4NywzMTA3OSwzMTA5OCwzMTEwOSwzMTExNCwzMTEzMCwzMTE0MywzMTE1''@;'; put 'put ''NSwyNDUyOSwyNDUyOCwzODgxNCwzODgxNSwzODgxNywzODgxOCwzODgyMCwzODgyMSwzODgyMiwzODgyMywzODgyNCwzODgyNSwzODgyNiwzODgyOCwzODgzMCwzODgzMiwzODgzMywzODgzNSwzODgzNywzODgzOCwzODgzOSwzODg0MCwzODg0MSwzODg0MiwzODg0MywzODg0NCwzODg0NSwz''@;'; put 'put ''ODg0NiwzODg0NywzODg0OCwzODg0OSwzODg1MCwzODg1MSwzODg1MiwzODg1MywzODg1NCwzODg1NSwzODg1NiwzODg1NywzODg1OCwzODg1OSwzODg2MCwzODg2MSwzODg2MiwzODg2MywzODg2NCwzODg2NSwzODg2NiwzODg2NywzODg2OCwzODg2OSwzODg3MCwzODg3MSwzODg3MiwzODg3''@;'; put 'put ''MywzODg3NCwzODg3NSwzODg3NiwzODg3NywzODg3OCwzODg3OSwzODg4MCwzODg4MSwzODg4MiwzODg4MywzODg4NCwzODg4NSwzODg4OCwzODg5NCwzODg5NSwzODg5NiwzODg5NywzODg5OCwzODkwMCwzODkwMywzODkwNCwzODkwNSwzODkwNiwzODkwNywzODkwOCwzODkwOSwzODkxMCwz''@;'; put 'put ''ODkxMSwzODkxMiwzODkxMywzODkxNCwzODkxNSwzODkxNiwzODkxNywzODkxOCwzODkxOSwzODkyMCwzODkyMSwzODkyMiwzODkyMywzODkyNCwzODkyNSwzODkyNiwyNDYzNiwyNDY2OSwyNDY2NiwyNDY3OSwyNDY0MSwyNDY2NSwyNDY3NSwyNDc0NywyNDgzOCwyNDg0NSwyNDkyNSwyNTAw''@;'; put 'put ''MSwyNDk4OSwyNTAzNSwyNTA0MSwyNTA5NCwzMjg5NiwzMjg5NSwyNzc5NSwyNzg5NCwyODE1NiwzMDcxMCwzMDcxMiwzMDcyMCwzMDcyOSwzMDc0MywzMDc0NCwzMDczNywyNjAyNywzMDc2NSwzMDc0OCwzMDc0OSwzMDc3NywzMDc3OCwzMDc3OSwzMDc1MSwzMDc4MCwzMDc1NywzMDc2NCwz''@;'; put 'put ''MDc1NSwzMDc2MSwzMDc5OCwzMDgyOSwzMDgwNiwzMDgwNywzMDc1OCwzMDgwMCwzMDc5MSwzMDc5NiwzMDgyNiwzMDg3NSwzMDg2NywzMDg3NCwzMDg1NSwzMDg3NiwzMDg4MSwzMDg4MywzMDg5OCwzMDkwNSwzMDg4NSwzMDkzMiwzMDkzNywzMDkyMSwzMDk1NiwzMDk2MiwzMDk4MSwzMDk2''@;'; put 'put ''NCwzMDk5NSwzMTAxMiwzMTAwNiwzMTAyOCw0MDg1OSw0MDY5Nyw0MDY5OSw0MDcwMCwzMDQ0OSwzMDQ2OCwzMDQ3NywzMDQ1NywzMDQ3MSwzMDQ3MiwzMDQ5MCwzMDQ5OCwzMDQ4OSwzMDUwOSwzMDUwMiwzMDUxNywzMDUyMCwzMDU0NCwzMDU0NSwzMDUzNSwzMDUzMSwzMDU1NCwzMDU2OCwz''@;'; put 'put ''ODkyNywzODkyOCwzODkyOSwzODkzMCwzODkzMSwzODkzMiwzODkzMywzODkzNCwzODkzNSwzODkzNiwzODkzNywzODkzOCwzODkzOSwzODk0MCwzODk0MSwzODk0MiwzODk0MywzODk0NCwzODk0NSwzODk0NiwzODk0NywzODk0OCwzODk0OSwzODk1MCwzODk1MSwzODk1MiwzODk1MywzODk1''@;'; put 'put ''NCwzODk1NSwzODk1NiwzODk1NywzODk1OCwzODk1OSwzODk2MCwzODk2MSwzODk2MiwzODk2MywzODk2NCwzODk2NSwzODk2NiwzODk2NywzODk2OCwzODk2OSwzODk3MCwzODk3MSwzODk3MiwzODk3MywzODk3NCwzODk3NSwzODk3NiwzODk3NywzODk3OCwzODk3OSwzODk4MCwzODk4MSwz''@;'; put 'put ''ODk4MiwzODk4MywzODk4NCwzODk4NSwzODk4NiwzODk4NywzODk4OCwzODk4OSwzODk5MCwzODk5MSwzODk5MiwzODk5MywzODk5NCwzODk5NSwzODk5NiwzODk5NywzODk5OCwzODk5OSwzOWUzLDM5MDAxLDM5MDAyLDM5MDAzLDM5MDA0LDM5MDA1LDM5MDA2LDM5MDA3LDM5MDA4LDM5MDA5''@;'; put 'put ''LDM5MDEwLDM5MDExLDM5MDEyLDM5MDEzLDM5MDE0LDM5MDE1LDM5MDE2LDM5MDE3LDM5MDE4LDM5MDE5LDM5MDIwLDM5MDIxLDM5MDIyLDMwNTYyLDMwNTY1LDMwNTkxLDMwNjA1LDMwNTg5LDMwNTkyLDMwNjA0LDMwNjA5LDMwNjIzLDMwNjI0LDMwNjQwLDMwNjQ1LDMwNjUzLDMwMDEwLDMw''@;'; put 'put ''MDE2LDMwMDMwLDMwMDI3LDMwMDI0LDMwMDQzLDMwMDY2LDMwMDczLDMwMDgzLDMyNjAwLDMyNjA5LDMyNjA3LDM1NDAwLDMyNjE2LDMyNjI4LDMyNjI1LDMyNjMzLDMyNjQxLDMyNjM4LDMwNDEzLDMwNDM3LDM0ODY2LDM4MDIxLDM4MDIyLDM4MDIzLDM4MDI3LDM4MDI2LDM4MDI4LDM4MDI5''@;'; put 'put ''LDM4MDMxLDM4MDMyLDM4MDM2LDM4MDM5LDM4MDM3LDM4MDQyLDM4MDQzLDM4MDQ0LDM4MDUxLDM4MDUyLDM4MDU5LDM4MDU4LDM4MDYxLDM4MDYwLDM4MDYzLDM4MDY0LDM4MDY2LDM4MDY4LDM4MDcwLDM4MDcxLDM4MDcyLDM4MDczLDM4MDc0LDM4MDc2LDM4MDc3LDM4MDc5LDM4MDg0LDM4''@;'; put 'put ''MDg4LDM4MDg5LDM4MDkwLDM4MDkxLDM4MDkyLDM4MDkzLDM4MDk0LDM4MDk2LDM4MDk3LDM4MDk4LDM4MTAxLDM4MTAyLDM4MTAzLDM4MTA1LDM4MTA0LDM4MTA3LDM4MTEwLDM4MTExLDM4MTEyLDM4MTE0LDM4MTE2LDM4MTE3LDM4MTE5LDM4MTIwLDM4MTIyLDM5MDIzLDM5MDI0LDM5MDI1''@;'; put 'put ''LDM5MDI2LDM5MDI3LDM5MDI4LDM5MDUxLDM5MDU0LDM5MDU4LDM5MDYxLDM5MDY1LDM5MDc1LDM5MDgwLDM5MDgxLDM5MDgyLDM5MDgzLDM5MDg0LDM5MDg1LDM5MDg2LDM5MDg3LDM5MDg4LDM5MDg5LDM5MDkwLDM5MDkxLDM5MDkyLDM5MDkzLDM5MDk0LDM5MDk1LDM5MDk2LDM5MDk3LDM5''@;'; put 'put ''MDk4LDM5MDk5LDM5MTAwLDM5MTAxLDM5MTAyLDM5MTAzLDM5MTA0LDM5MTA1LDM5MTA2LDM5MTA3LDM5MTA4LDM5MTA5LDM5MTEwLDM5MTExLDM5MTEyLDM5MTEzLDM5MTE0LDM5MTE1LDM5MTE2LDM5MTE3LDM5MTE5LDM5MTIwLDM5MTI0LDM5MTI2LDM5MTI3LDM5MTMxLDM5MTMyLDM5MTMz''@;'; put 'put ''LDM5MTM2LDM5MTM3LDM5MTM4LDM5MTM5LDM5MTQwLDM5MTQxLDM5MTQyLDM5MTQ1LDM5MTQ2LDM5MTQ3LDM5MTQ4LDM5MTQ5LDM5MTUwLDM5MTUxLDM5MTUyLDM5MTUzLDM5MTU0LDM5MTU1LDM5MTU2LDM5MTU3LDM5MTU4LDM5MTU5LDM5MTYwLDM5MTYxLDM5MTYyLDM5MTYzLDM5MTY0LDM5''@;'; put 'put ''MTY1LDM5MTY2LDM5MTY3LDM5MTY4LDM5MTY5LDM5MTcwLDM5MTcxLDM5MTcyLDM5MTczLDM5MTc0LDM5MTc1LDM4MTIxLDM4MTIzLDM4MTI2LDM4MTI3LDM4MTMxLDM4MTMyLDM4MTMzLDM4MTM1LDM4MTM3LDM4MTQwLDM4MTQxLDM4MTQzLDM4MTQ3LDM4MTQ2LDM4MTUwLDM4MTUxLDM4MTUz''@;'; put 'put ''LDM4MTU0LDM4MTU3LDM4MTU4LDM4MTU5LDM4MTYyLDM4MTYzLDM4MTY0LDM4MTY1LDM4MTY2LDM4MTY4LDM4MTcxLDM4MTczLDM4MTc0LDM4MTc1LDM4MTc4LDM4MTg2LDM4MTg3LDM4MTg1LDM4MTg4LDM4MTkzLDM4MTk0LDM4MTk2LDM4MTk4LDM4MTk5LDM4MjAwLDM4MjA0LDM4MjA2LDM4''@;'; put 'put ''MjA3LDM4MjEwLDM4MTk3LDM4MjEyLDM4MjEzLDM4MjE0LDM4MjE3LDM4MjIwLDM4MjIyLDM4MjIzLDM4MjI2LDM4MjI3LDM4MjI4LDM4MjMwLDM4MjMxLDM4MjMyLDM4MjMzLDM4MjM1LDM4MjM4LDM4MjM5LDM4MjM3LDM4MjQxLDM4MjQyLDM4MjQ0LDM4MjQ1LDM4MjQ2LDM4MjQ3LDM4MjQ4''@;'; put 'put ''LDM4MjQ5LDM4MjUwLDM4MjUxLDM4MjUyLDM4MjU1LDM4MjU3LDM4MjU4LDM4MjU5LDM4MjAyLDMwNjk1LDMwNzAwLDM4NjAxLDMxMTg5LDMxMjEzLDMxMjAzLDMxMjExLDMxMjM4LDIzODc5LDMxMjM1LDMxMjM0LDMxMjYyLDMxMjUyLDM5MTc2LDM5MTc3LDM5MTc4LDM5MTc5LDM5MTgwLDM5''@;'; put 'put ''MTgyLDM5MTgzLDM5MTg1LDM5MTg2LDM5MTg3LDM5MTg4LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTkyLDM5MTkzLDM5MTk0LDM5MTk1LDM5MTk2LDM5MTk3LDM5MTk4LDM5MTk5LDM5MjAwLDM5MjAxLDM5MjAyLDM5MjAzLDM5MjA0LDM5MjA1LDM5MjA2LDM5MjA3LDM5MjA4LDM5MjA5LDM5MjEw''@;'; put 'put ''LDM5MjExLDM5MjEyLDM5MjEzLDM5MjE1LDM5MjE2LDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjIyLDM5MjIzLDM5MjI0LDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjI5LDM5MjMwLDM5MjMxLDM5MjMyLDM5MjMzLDM5MjM0LDM5MjM1LDM5MjM2LDM5MjM3LDM5MjM4LDM5''@;'; put 'put ''MjM5LDM5MjQwLDM5MjQxLDM5MjQyLDM5MjQzLDM5MjQ0LDM5MjQ1LDM5MjQ2LDM5MjQ3LDM5MjQ4LDM5MjQ5LDM5MjUwLDM5MjUxLDM5MjU0LDM5MjU1LDM5MjU2LDM5MjU3LDM5MjU4LDM5MjU5LDM5MjYwLDM5MjYxLDM5MjYyLDM5MjYzLDM5MjY0LDM5MjY1LDM5MjY2LDM5MjY4LDM5Mjcw''@;'; put 'put ''LDM5MjgzLDM5Mjg4LDM5Mjg5LDM5MjkxLDM5Mjk0LDM5Mjk4LDM5Mjk5LDM5MzA1LDMxMjg5LDMxMjg3LDMxMzEzLDQwNjU1LDM5MzMzLDMxMzQ0LDMwMzQ0LDMwMzUwLDMwMzU1LDMwMzYxLDMwMzcyLDI5OTE4LDI5OTIwLDI5OTk2LDQwNDgwLDQwNDgyLDQwNDg4LDQwNDg5LDQwNDkwLDQw''@;'; put 'put ''NDkxLDQwNDkyLDQwNDk4LDQwNDk3LDQwNTAyLDQwNTA0LDQwNTAzLDQwNTA1LDQwNTA2LDQwNTEwLDQwNTEzLDQwNTE0LDQwNTE2LDQwNTE4LDQwNTE5LDQwNTIwLDQwNTIxLDQwNTIzLDQwNTI0LDQwNTI2LDQwNTI5LDQwNTMzLDQwNTM1LDQwNTM4LDQwNTM5LDQwNTQwLDQwNTQyLDQwNTQ3''@;'; put 'put ''LDQwNTUwLDQwNTUxLDQwNTUyLDQwNTUzLDQwNTU0LDQwNTU1LDQwNTU2LDQwNTYxLDQwNTU3LDQwNTYzLDMwMDk4LDMwMTAwLDMwMTAyLDMwMTEyLDMwMTA5LDMwMTI0LDMwMTE1LDMwMTMxLDMwMTMyLDMwMTM2LDMwMTQ4LDMwMTI5LDMwMTI4LDMwMTQ3LDMwMTQ2LDMwMTY2LDMwMTU3LDMw''@;'; put 'put ''MTc5LDMwMTg0LDMwMTgyLDMwMTgwLDMwMTg3LDMwMTgzLDMwMjExLDMwMTkzLDMwMjA0LDMwMjA3LDMwMjI0LDMwMjA4LDMwMjEzLDMwMjIwLDMwMjMxLDMwMjE4LDMwMjQ1LDMwMjMyLDMwMjI5LDMwMjMzLDM5MzA4LDM5MzEwLDM5MzIyLDM5MzIzLDM5MzI0LDM5MzI1LDM5MzI2LDM5MzI3''@;'; put 'put ''LDM5MzI4LDM5MzI5LDM5MzMwLDM5MzMxLDM5MzMyLDM5MzM0LDM5MzM1LDM5MzM3LDM5MzM4LDM5MzM5LDM5MzQwLDM5MzQxLDM5MzQyLDM5MzQzLDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ3LDM5MzQ4LDM5MzQ5LDM5MzUwLDM5MzUxLDM5MzUyLDM5MzUzLDM5MzU0LDM5MzU1LDM5MzU2LDM5''@;'; put 'put ''MzU3LDM5MzU4LDM5MzU5LDM5MzYwLDM5MzYxLDM5MzYyLDM5MzYzLDM5MzY0LDM5MzY1LDM5MzY2LDM5MzY3LDM5MzY4LDM5MzY5LDM5MzcwLDM5MzcxLDM5MzcyLDM5MzczLDM5Mzc0LDM5Mzc1LDM5Mzc2LDM5Mzc3LDM5Mzc4LDM5Mzc5LDM5MzgwLDM5MzgxLDM5MzgyLDM5MzgzLDM5Mzg0''@;'; put 'put ''LDM5Mzg1LDM5Mzg2LDM5Mzg3LDM5Mzg4LDM5Mzg5LDM5MzkwLDM5MzkxLDM5MzkyLDM5MzkzLDM5Mzk0LDM5Mzk1LDM5Mzk2LDM5Mzk3LDM5Mzk4LDM5Mzk5LDM5NDAwLDM5NDAxLDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA1LDM5NDA2LDM5NDA3LDM5NDA4LDM5NDA5LDM5NDEwLDM5NDExLDM5''@;'; put 'put ''NDEyLDM5NDEzLDM5NDE0LDM5NDE1LDM5NDE2LDM5NDE3LDMwMjM1LDMwMjY4LDMwMjQyLDMwMjQwLDMwMjcyLDMwMjUzLDMwMjU2LDMwMjcxLDMwMjYxLDMwMjc1LDMwMjcwLDMwMjU5LDMwMjg1LDMwMzAyLDMwMjkyLDMwMzAwLDMwMjk0LDMwMzE1LDMwMzE5LDMyNzE0LDMxNDYyLDMxMzUy''@;'; put 'put ''LDMxMzUzLDMxMzYwLDMxMzY2LDMxMzY4LDMxMzgxLDMxMzk4LDMxMzkyLDMxNDA0LDMxNDAwLDMxNDA1LDMxNDExLDM0OTE2LDM0OTIxLDM0OTMwLDM0OTQxLDM0OTQzLDM0OTQ2LDM0OTc4LDM1MDE0LDM0OTk5LDM1MDA0LDM1MDE3LDM1MDQyLDM1MDIyLDM1MDQzLDM1MDQ1LDM1MDU3LDM1''@;'; put 'put ''MDk4LDM1MDY4LDM1MDQ4LDM1MDcwLDM1MDU2LDM1MTA1LDM1MDk3LDM1MDkxLDM1MDk5LDM1MDgyLDM1MTI0LDM1MTE1LDM1MTI2LDM1MTM3LDM1MTc0LDM1MTk1LDMwMDkxLDMyOTk3LDMwMzg2LDMwMzg4LDMwNjg0LDMyNzg2LDMyNzg4LDMyNzkwLDMyNzk2LDMyODAwLDMyODAyLDMyODA1''@;'; put 'put ''LDMyODA2LDMyODA3LDMyODA5LDMyODA4LDMyODE3LDMyNzc5LDMyODIxLDMyODM1LDMyODM4LDMyODQ1LDMyODUwLDMyODczLDMyODgxLDM1MjAzLDM5MDMyLDM5MDQwLDM5MDQzLDM5NDE4LDM5NDE5LDM5NDIwLDM5NDIxLDM5NDIyLDM5NDIzLDM5NDI0LDM5NDI1LDM5NDI2LDM5NDI3LDM5''@;'; put 'put ''NDI4LDM5NDI5LDM5NDMwLDM5NDMxLDM5NDMyLDM5NDMzLDM5NDM0LDM5NDM1LDM5NDM2LDM5NDM3LDM5NDM4LDM5NDM5LDM5NDQwLDM5NDQxLDM5NDQyLDM5NDQzLDM5NDQ0LDM5NDQ1LDM5NDQ2LDM5NDQ3LDM5NDQ4LDM5NDQ5LDM5NDUwLDM5NDUxLDM5NDUyLDM5NDUzLDM5NDU0LDM5NDU1''@;'; put 'put ''LDM5NDU2LDM5NDU3LDM5NDU4LDM5NDU5LDM5NDYwLDM5NDYxLDM5NDYyLDM5NDYzLDM5NDY0LDM5NDY1LDM5NDY2LDM5NDY3LDM5NDY4LDM5NDY5LDM5NDcwLDM5NDcxLDM5NDcyLDM5NDczLDM5NDc0LDM5NDc1LDM5NDc2LDM5NDc3LDM5NDc4LDM5NDc5LDM5NDgwLDM5NDgxLDM5NDgyLDM5''@;'; put 'put ''NDgzLDM5NDg0LDM5NDg1LDM5NDg2LDM5NDg3LDM5NDg4LDM5NDg5LDM5NDkwLDM5NDkxLDM5NDkyLDM5NDkzLDM5NDk0LDM5NDk1LDM5NDk2LDM5NDk3LDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAxLDM5NTAyLDM5NTAzLDM5NTA0LDM5NTA1LDM5NTA2LDM5NTA3LDM5NTA4LDM5NTA5LDM5NTEw''@;'; put 'put ''LDM5NTExLDM5NTEyLDM5NTEzLDM5MDQ5LDM5MDUyLDM5MDUzLDM5MDU1LDM5MDYwLDM5MDY2LDM5MDY3LDM5MDcwLDM5MDcxLDM5MDczLDM5MDc0LDM5MDc3LDM5MDc4LDM0MzgxLDM0Mzg4LDM0NDEyLDM0NDE0LDM0NDMxLDM0NDI2LDM0NDI4LDM0NDI3LDM0NDcyLDM0NDQ1LDM0NDQzLDM0''@;'; put 'put ''NDc2LDM0NDYxLDM0NDcxLDM0NDY3LDM0NDc0LDM0NDUxLDM0NDczLDM0NDg2LDM0NTAwLDM0NDg1LDM0NTEwLDM0NDgwLDM0NDkwLDM0NDgxLDM0NDc5LDM0NTA1LDM0NTExLDM0NDg0LDM0NTM3LDM0NTQ1LDM0NTQ2LDM0NTQxLDM0NTQ3LDM0NTEyLDM0NTc5LDM0NTI2LDM0NTQ4LDM0NTI3''@;'; put 'put ''LDM0NTIwLDM0NTEzLDM0NTYzLDM0NTY3LDM0NTUyLDM0NTY4LDM0NTcwLDM0NTczLDM0NTY5LDM0NTk1LDM0NjE5LDM0NTkwLDM0NTk3LDM0NjA2LDM0NTg2LDM0NjIyLDM0NjMyLDM0NjEyLDM0NjA5LDM0NjAxLDM0NjE1LDM0NjIzLDM0NjkwLDM0NTk0LDM0Njg1LDM0Njg2LDM0NjgzLDM0''@;'; put 'put ''NjU2LDM0NjcyLDM0NjM2LDM0NjcwLDM0Njk5LDM0NjQzLDM0NjU5LDM0Njg0LDM0NjYwLDM0NjQ5LDM0NjYxLDM0NzA3LDM0NzM1LDM0NzI4LDM0NzcwLDM5NTE0LDM5NTE1LDM5NTE2LDM5NTE3LDM5NTE4LDM5NTE5LDM5NTIwLDM5NTIxLDM5NTIyLDM5NTIzLDM5NTI0LDM5NTI1LDM5NTI2''@;'; put 'put ''LDM5NTI3LDM5NTI4LDM5NTI5LDM5NTMwLDM5NTMxLDM5NTM4LDM5NTU1LDM5NTYxLDM5NTY1LDM5NTY2LDM5NTcyLDM5NTczLDM5NTc3LDM5NTkwLDM5NTkzLDM5NTk0LDM5NTk1LDM5NTk2LDM5NTk3LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjAzLDM5NjA0LDM5NjA1LDM5NjA5LDM5NjExLDM5''@;'; put 'put ''NjEzLDM5NjE0LDM5NjE1LDM5NjE5LDM5NjIwLDM5NjIyLDM5NjIzLDM5NjI0LDM5NjI1LDM5NjI2LDM5NjI5LDM5NjMwLDM5NjMxLDM5NjMyLDM5NjM0LDM5NjM2LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQxLDM5NjQyLDM5NjQzLDM5NjQ0LDM5NjQ1LDM5NjQ2LDM5NjQ4LDM5NjUwLDM5NjUx''@;'; put 'put ''LDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU2LDM5NjU3LDM5NjU4LDM5NjYwLDM5NjYyLDM5NjY0LDM5NjY1LDM5NjY2LDM5NjY3LDM5NjY4LDM5NjY5LDM5NjcwLDM5NjcxLDM5NjcyLDM5Njc0LDM5Njc2LDM5Njc3LDM5Njc4LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5Njg0LDM5Njg1LDM5''@;'; put 'put ''Njg2LDM0NzU4LDM0Njk2LDM0NjkzLDM0NzMzLDM0NzExLDM0NjkxLDM0NzMxLDM0Nzg5LDM0NzMyLDM0NzQxLDM0NzM5LDM0NzYzLDM0NzcxLDM0NzQ5LDM0NzY5LDM0NzUyLDM0NzYyLDM0Nzc5LDM0Nzk0LDM0Nzg0LDM0Nzk4LDM0ODM4LDM0ODM1LDM0ODE0LDM0ODI2LDM0ODQzLDM0ODQ5''@;'; put 'put ''LDM0ODczLDM0ODc2LDMyNTY2LDMyNTc4LDMyNTgwLDMyNTgxLDMzMjk2LDMxNDgyLDMxNDg1LDMxNDk2LDMxNDkxLDMxNDkyLDMxNTA5LDMxNDk4LDMxNTMxLDMxNTAzLDMxNTU5LDMxNTQ0LDMxNTMwLDMxNTEzLDMxNTM0LDMxNTM3LDMxNTIwLDMxNTI1LDMxNTI0LDMxNTM5LDMxNTUwLDMx''@;'; put 'put ''NTE4LDMxNTc2LDMxNTc4LDMxNTU3LDMxNjA1LDMxNTY0LDMxNTgxLDMxNTg0LDMxNTk4LDMxNjExLDMxNTg2LDMxNjAyLDMxNjAxLDMxNjMyLDMxNjU0LDMxNjU1LDMxNjcyLDMxNjYwLDMxNjQ1LDMxNjU2LDMxNjIxLDMxNjU4LDMxNjQ0LDMxNjUwLDMxNjU5LDMxNjY4LDMxNjk3LDMxNjgx''@;'; put 'put ''LDMxNjkyLDMxNzA5LDMxNzA2LDMxNzE3LDMxNzE4LDMxNzIyLDMxNzU2LDMxNzQyLDMxNzQwLDMxNzU5LDMxNzY2LDMxNzU1LDM5Njg3LDM5Njg5LDM5NjkwLDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk3LDM5Njk4LDM5NzAwLDM5NzAxLDM5NzAyLDM5NzAzLDM5NzA0LDM5''@;'; put 'put ''NzA1LDM5NzA2LDM5NzA3LDM5NzA4LDM5NzA5LDM5NzEwLDM5NzEyLDM5NzEzLDM5NzE0LDM5NzE2LDM5NzE3LDM5NzE4LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzIzLDM5NzI0LDM5NzI1LDM5NzI2LDM5NzI4LDM5NzI5LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM0LDM5NzM1LDM5NzM2''@;'; put 'put ''LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzQyLDM5NzQzLDM5NzQ0LDM5NzUwLDM5NzU0LDM5NzU1LDM5NzU2LDM5NzU4LDM5NzYwLDM5NzYyLDM5NzYzLDM5NzY1LDM5NzY2LDM5NzY3LDM5NzY4LDM5NzY5LDM5NzcwLDM5NzcxLDM5NzcyLDM5NzczLDM5Nzc0LDM5Nzc1LDM5Nzc2LDM5Nzc3LDM5''@;'; put 'put ''Nzc4LDM5Nzc5LDM5NzgwLDM5NzgxLDM5NzgyLDM5NzgzLDM5Nzg0LDM5Nzg1LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5Nzg5LDM5NzkwLDM5NzkxLDM5NzkyLDM5NzkzLDM5Nzk0LDM5Nzk1LDM5Nzk2LDM5Nzk3LDM5Nzk4LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODAyLDM5ODAzLDMxNzc1LDMxNzg2''@;'; put 'put ''LDMxNzgyLDMxODAwLDMxODA5LDMxODA4LDMzMjc4LDMzMjgxLDMzMjgyLDMzMjg0LDMzMjYwLDM0ODg0LDMzMzEzLDMzMzE0LDMzMzE1LDMzMzI1LDMzMzI3LDMzMzIwLDMzMzIzLDMzMzM2LDMzMzM5LDMzMzMxLDMzMzMyLDMzMzQyLDMzMzQ4LDMzMzUzLDMzMzU1LDMzMzU5LDMzMzcwLDMz''@;'; put 'put ''Mzc1LDMzMzg0LDM0OTQyLDM0OTQ5LDM0OTUyLDM1MDMyLDM1MDM5LDM1MTY2LDMyNjY5LDMyNjcxLDMyNjc5LDMyNjg3LDMyNjg4LDMyNjkwLDMxODY4LDI1OTI5LDMxODg5LDMxOTAxLDMxOTAwLDMxOTAyLDMxOTA2LDMxOTIyLDMxOTMyLDMxOTMzLDMxOTM3LDMxOTQzLDMxOTQ4LDMxOTQ5''@;'; put 'put ''LDMxOTQ0LDMxOTQxLDMxOTU5LDMxOTc2LDMzMzkwLDI2MjgwLDMyNzAzLDMyNzE4LDMyNzI1LDMyNzQxLDMyNzM3LDMyNzQyLDMyNzQ1LDMyNzUwLDMyNzU1LDMxOTkyLDMyMTE5LDMyMTY2LDMyMTc0LDMyMzI3LDMyNDExLDQwNjMyLDQwNjI4LDM2MjExLDM2MjI4LDM2MjQ0LDM2MjQxLDM2''@;'; put 'put ''MjczLDM2MTk5LDM2MjA1LDM1OTExLDM1OTEzLDM3MTk0LDM3MjAwLDM3MTk4LDM3MTk5LDM3MjIwLDM5ODA0LDM5ODA1LDM5ODA2LDM5ODA3LDM5ODA4LDM5ODA5LDM5ODEwLDM5ODExLDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE2LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIwLDM5ODIx''@;'; put 'put ''LDM5ODIyLDM5ODIzLDM5ODI0LDM5ODI1LDM5ODI2LDM5ODI3LDM5ODI4LDM5ODI5LDM5ODMwLDM5ODMxLDM5ODMyLDM5ODMzLDM5ODM0LDM5ODM1LDM5ODM2LDM5ODM3LDM5ODM4LDM5ODM5LDM5ODQwLDM5ODQxLDM5ODQyLDM5ODQzLDM5ODQ0LDM5ODQ1LDM5ODQ2LDM5ODQ3LDM5ODQ4LDM5''@;'; put 'put ''ODQ5LDM5ODUwLDM5ODUxLDM5ODUyLDM5ODUzLDM5ODU0LDM5ODU1LDM5ODU2LDM5ODU3LDM5ODU4LDM5ODU5LDM5ODYwLDM5ODYxLDM5ODYyLDM5ODYzLDM5ODY0LDM5ODY1LDM5ODY2LDM5ODY3LDM5ODY4LDM5ODY5LDM5ODcwLDM5ODcxLDM5ODcyLDM5ODczLDM5ODc0LDM5ODc1LDM5ODc2''@;'; put 'put ''LDM5ODc3LDM5ODc4LDM5ODc5LDM5ODgwLDM5ODgxLDM5ODgyLDM5ODgzLDM5ODg0LDM5ODg1LDM5ODg2LDM5ODg3LDM5ODg4LDM5ODg5LDM5ODkwLDM5ODkxLDM5ODkyLDM5ODkzLDM5ODk0LDM5ODk1LDM5ODk2LDM5ODk3LDM5ODk4LDM5ODk5LDM3MjE4LDM3MjE3LDM3MjMyLDM3MjI1LDM3''@;'; put 'put ''MjMxLDM3MjQ1LDM3MjQ2LDM3MjM0LDM3MjM2LDM3MjQxLDM3MjYwLDM3MjUzLDM3MjY0LDM3MjYxLDM3MjY1LDM3MjgyLDM3MjgzLDM3MjkwLDM3MjkzLDM3Mjk0LDM3Mjk1LDM3MzAxLDM3MzAwLDM3MzA2LDM1OTI1LDQwNTc0LDM2MjgwLDM2MzMxLDM2MzU3LDM2NDQxLDM2NDU3LDM2Mjc3''@;'; put 'put ''LDM2Mjg3LDM2Mjg0LDM2MjgyLDM2MjkyLDM2MzEwLDM2MzExLDM2MzE0LDM2MzE4LDM2MzAyLDM2MzAzLDM2MzE1LDM2Mjk0LDM2MzMyLDM2MzQzLDM2MzQ0LDM2MzIzLDM2MzQ1LDM2MzQ3LDM2MzI0LDM2MzYxLDM2MzQ5LDM2MzcyLDM2MzgxLDM2MzgzLDM2Mzk2LDM2Mzk4LDM2Mzg3LDM2''@;'; put 'put ''Mzk5LDM2NDEwLDM2NDE2LDM2NDA5LDM2NDA1LDM2NDEzLDM2NDAxLDM2NDI1LDM2NDE3LDM2NDE4LDM2NDMzLDM2NDM0LDM2NDI2LDM2NDY0LDM2NDcwLDM2NDc2LDM2NDYzLDM2NDY4LDM2NDg1LDM2NDk1LDM2NTAwLDM2NDk2LDM2NTA4LDM2NTEwLDM1OTYwLDM1OTcwLDM1OTc4LDM1OTcz''@;'; put 'put ''LDM1OTkyLDM1OTg4LDI2MDExLDM1Mjg2LDM1Mjk0LDM1MjkwLDM1MjkyLDM5OTAwLDM5OTAxLDM5OTAyLDM5OTAzLDM5OTA0LDM5OTA1LDM5OTA2LDM5OTA3LDM5OTA4LDM5OTA5LDM5OTEwLDM5OTExLDM5OTEyLDM5OTEzLDM5OTE0LDM5OTE1LDM5OTE2LDM5OTE3LDM5OTE4LDM5OTE5LDM5''@;'; put 'put ''OTIwLDM5OTIxLDM5OTIyLDM5OTIzLDM5OTI0LDM5OTI1LDM5OTI2LDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5OTMxLDM5OTMyLDM5OTMzLDM5OTM0LDM5OTM1LDM5OTM2LDM5OTM3LDM5OTM4LDM5OTM5LDM5OTQwLDM5OTQxLDM5OTQyLDM5OTQzLDM5OTQ0LDM5OTQ1LDM5OTQ2LDM5OTQ3''@;'; put 'put ''LDM5OTQ4LDM5OTQ5LDM5OTUwLDM5OTUxLDM5OTUyLDM5OTUzLDM5OTU0LDM5OTU1LDM5OTU2LDM5OTU3LDM5OTU4LDM5OTU5LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTYzLDM5OTY0LDM5OTY1LDM5OTY2LDM5OTY3LDM5OTY4LDM5OTY5LDM5OTcwLDM5OTcxLDM5OTcyLDM5OTczLDM5OTc0LDM5''@;'; put 'put ''OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTc5LDM5OTgwLDM5OTgxLDM5OTgyLDM5OTgzLDM5OTg0LDM5OTg1LDM5OTg2LDM5OTg3LDM5OTg4LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTkyLDM5OTkzLDM5OTk0LDM5OTk1LDM1MzAxLDM1MzA3LDM1MzExLDM1MzkwLDM1NjIyLDM4NzM5LDM4NjMz''@;'; put 'put ''LDM4NjQzLDM4NjM5LDM4NjYyLDM4NjU3LDM4NjY0LDM4NjcxLDM4NjcwLDM4Njk4LDM4NzAxLDM4NzA0LDM4NzE4LDQwODMyLDQwODM1LDQwODM3LDQwODM4LDQwODM5LDQwODQwLDQwODQxLDQwODQyLDQwODQ0LDQwNzAyLDQwNzE1LDQwNzE3LDM4NTg1LDM4NTg4LDM4NTg5LDM4NjA2LDM4''@;'; put 'put ''NjEwLDMwNjU1LDM4NjI0LDM3NTE4LDM3NTUwLDM3NTc2LDM3Njk0LDM3NzM4LDM3ODM0LDM3Nzc1LDM3OTUwLDM3OTk1LDQwMDYzLDQwMDY2LDQwMDY5LDQwMDcwLDQwMDcxLDQwMDcyLDMxMjY3LDQwMDc1LDQwMDc4LDQwMDgwLDQwMDgxLDQwMDgyLDQwMDg0LDQwMDg1LDQwMDkwLDQwMDkx''@;'; put 'put ''LDQwMDk0LDQwMDk1LDQwMDk2LDQwMDk3LDQwMDk4LDQwMDk5LDQwMTAxLDQwMTAyLDQwMTAzLDQwMTA0LDQwMTA1LDQwMTA3LDQwMTA5LDQwMTEwLDQwMTEyLDQwMTEzLDQwMTE0LDQwMTE1LDQwMTE2LDQwMTE3LDQwMTE4LDQwMTE5LDQwMTIyLDQwMTIzLDQwMTI0LDQwMTI1LDQwMTMyLDQw''@;'; put 'put ''MTMzLDQwMTM0LDQwMTM1LDQwMTM4LDQwMTM5LDM5OTk2LDM5OTk3LDM5OTk4LDM5OTk5LDRlNCw0MDAwMSw0MDAwMiw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwNiw0MDAwNyw0MDAwOCw0MDAwOSw0MDAxMCw0MDAxMSw0MDAxMiw0MDAxMyw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxNyw0MDAxOCw0''@;'; put 'put ''MDAxOSw0MDAyMCw0MDAyMSw0MDAyMiw0MDAyMyw0MDAyNCw0MDAyNSw0MDAyNiw0MDAyNyw0MDAyOCw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzMiw0MDAzMyw0MDAzNCw0MDAzNSw0MDAzNiw0MDAzNyw0MDAzOCw0MDAzOSw0MDA0MCw0MDA0MSw0MDA0Miw0MDA0Myw0MDA0NCw0MDA0NSw0MDA0''@;'; put 'put ''Niw0MDA0Nyw0MDA0OCw0MDA0OSw0MDA1MCw0MDA1MSw0MDA1Miw0MDA1Myw0MDA1NCw0MDA1NSw0MDA1Niw0MDA1Nyw0MDA1OCw0MDA1OSw0MDA2MSw0MDA2Miw0MDA2NCw0MDA2Nyw0MDA2OCw0MDA3Myw0MDA3NCw0MDA3Niw0MDA3OSw0MDA4Myw0MDA4Niw0MDA4Nyw0MDA4OCw0MDA4OSw0''@;'; put 'put ''MDA5Myw0MDEwNiw0MDEwOCw0MDExMSw0MDEyMSw0MDEyNiw0MDEyNyw0MDEyOCw0MDEyOSw0MDEzMCw0MDEzNiw0MDEzNyw0MDE0NSw0MDE0Niw0MDE1NCw0MDE1NSw0MDE2MCw0MDE2MSw0MDE0MCw0MDE0MSw0MDE0Miw0MDE0Myw0MDE0NCw0MDE0Nyw0MDE0OCw0MDE0OSw0MDE1MSw0MDE1''@;'; put 'put ''Miw0MDE1Myw0MDE1Niw0MDE1Nyw0MDE1OSw0MDE2MiwzODc4MCwzODc4OSwzODgwMSwzODgwMiwzODgwNCwzODgzMSwzODgyNywzODgxOSwzODgzNCwzODgzNiwzOTYwMSwzOTYwMCwzOTYwNyw0MDUzNiwzOTYwNiwzOTYxMCwzOTYxMiwzOTYxNywzOTYxNiwzOTYyMSwzOTYxOCwzOTYyNywz''@;'; put 'put ''OTYyOCwzOTYzMywzOTc0OSwzOTc0NywzOTc1MSwzOTc1MywzOTc1MiwzOTc1NywzOTc2MSwzOTE0NCwzOTE4MSwzOTIxNCwzOTI1MywzOTI1MiwzOTY0NywzOTY0OSwzOTY1NCwzOTY2MywzOTY1OSwzOTY3NSwzOTY2MSwzOTY3MywzOTY4OCwzOTY5NSwzOTY5OSwzOTcxMSwzOTcxNSw0MDYz''@;'; put 'put ''Nyw0MDYzOCwzMjMxNSw0MDU3OCw0MDU4Myw0MDU4NCw0MDU4Nyw0MDU5NCwzNzg0Niw0MDYwNSw0MDYwNyw0MDY2Nyw0MDY2OCw0MDY2OSw0MDY3Miw0MDY3MSw0MDY3NCw0MDY4MSw0MDY3OSw0MDY3Nyw0MDY4Miw0MDY4Nyw0MDczOCw0MDc0OCw0MDc1MSw0MDc2MSw0MDc1OSw0MDc2NSw0''@;'; put 'put ''MDc2Niw0MDc3Miw0MDE2Myw0MDE2NCw0MDE2NSw0MDE2Niw0MDE2Nyw0MDE2OCw0MDE2OSw0MDE3MCw0MDE3MSw0MDE3Miw0MDE3Myw0MDE3NCw0MDE3NSw0MDE3Niw0MDE3Nyw0MDE3OCw0MDE3OSw0MDE4MCw0MDE4MSw0MDE4Miw0MDE4Myw0MDE4NCw0MDE4NSw0MDE4Niw0MDE4Nyw0MDE4''@;'; put 'put ''OCw0MDE4OSw0MDE5MCw0MDE5MSw0MDE5Miw0MDE5Myw0MDE5NCw0MDE5NSw0MDE5Niw0MDE5Nyw0MDE5OCw0MDE5OSw0MDIwMCw0MDIwMSw0MDIwMiw0MDIwMyw0MDIwNCw0MDIwNSw0MDIwNiw0MDIwNyw0MDIwOCw0MDIwOSw0MDIxMCw0MDIxMSw0MDIxMiw0MDIxMyw0MDIxNCw0MDIxNSw0''@;'; put 'put ''MDIxNiw0MDIxNyw0MDIxOCw0MDIxOSw0MDIyMCw0MDIyMSw0MDIyMiw0MDIyMyw0MDIyNCw0MDIyNSw0MDIyNiw0MDIyNyw0MDIyOCw0MDIyOSw0MDIzMCw0MDIzMSw0MDIzMiw0MDIzMyw0MDIzNCw0MDIzNSw0MDIzNiw0MDIzNyw0MDIzOCw0MDIzOSw0MDI0MCw0MDI0MSw0MDI0Miw0MDI0''@;'; put 'put ''Myw0MDI0NCw0MDI0NSw0MDI0Niw0MDI0Nyw0MDI0OCw0MDI0OSw0MDI1MCw0MDI1MSw0MDI1Miw0MDI1Myw0MDI1NCw0MDI1NSw0MDI1Niw0MDI1Nyw0MDI1OCw1NzkwOCw1NzkwOSw1NzkxMCw1NzkxMSw1NzkxMiw1NzkxMyw1NzkxNCw1NzkxNSw1NzkxNiw1NzkxNyw1NzkxOCw1NzkxOSw1''@;'; put 'put ''NzkyMCw1NzkyMSw1NzkyMiw1NzkyMyw1NzkyNCw1NzkyNSw1NzkyNiw1NzkyNyw1NzkyOCw1NzkyOSw1NzkzMCw1NzkzMSw1NzkzMiw1NzkzMyw1NzkzNCw1NzkzNSw1NzkzNiw1NzkzNyw1NzkzOCw1NzkzOSw1Nzk0MCw1Nzk0MSw1Nzk0Miw1Nzk0Myw1Nzk0NCw1Nzk0NSw1Nzk0Niw1Nzk0''@;'; put 'put ''Nyw1Nzk0OCw1Nzk0OSw1Nzk1MCw1Nzk1MSw1Nzk1Miw1Nzk1Myw1Nzk1NCw1Nzk1NSw1Nzk1Niw1Nzk1Nyw1Nzk1OCw1Nzk1OSw1Nzk2MCw1Nzk2MSw1Nzk2Miw1Nzk2Myw1Nzk2NCw1Nzk2NSw1Nzk2Niw1Nzk2Nyw1Nzk2OCw1Nzk2OSw1Nzk3MCw1Nzk3MSw1Nzk3Miw1Nzk3Myw1Nzk3NCw1''@;'; put 'put ''Nzk3NSw1Nzk3Niw1Nzk3Nyw1Nzk3OCw1Nzk3OSw1Nzk4MCw1Nzk4MSw1Nzk4Miw1Nzk4Myw1Nzk4NCw1Nzk4NSw1Nzk4Niw1Nzk4Nyw1Nzk4OCw1Nzk4OSw1Nzk5MCw1Nzk5MSw1Nzk5Miw1Nzk5Myw1Nzk5NCw1Nzk5NSw1Nzk5Niw1Nzk5Nyw1Nzk5OCw1Nzk5OSw1OGUzLDU4MDAxLDQwMjU5''@;'; put 'put ''LDQwMjYwLDQwMjYxLDQwMjYyLDQwMjYzLDQwMjY0LDQwMjY1LDQwMjY2LDQwMjY3LDQwMjY4LDQwMjY5LDQwMjcwLDQwMjcxLDQwMjcyLDQwMjczLDQwMjc0LDQwMjc1LDQwMjc2LDQwMjc3LDQwMjc4LDQwMjc5LDQwMjgwLDQwMjgxLDQwMjgyLDQwMjgzLDQwMjg0LDQwMjg1LDQwMjg2LDQw''@;'; put 'put ''Mjg3LDQwMjg4LDQwMjg5LDQwMjkwLDQwMjkxLDQwMjkyLDQwMjkzLDQwMjk0LDQwMjk1LDQwMjk2LDQwMjk3LDQwMjk4LDQwMjk5LDQwMzAwLDQwMzAxLDQwMzAyLDQwMzAzLDQwMzA0LDQwMzA1LDQwMzA2LDQwMzA3LDQwMzA4LDQwMzA5LDQwMzEwLDQwMzExLDQwMzEyLDQwMzEzLDQwMzE0''@;'; put 'put ''LDQwMzE1LDQwMzE2LDQwMzE3LDQwMzE4LDQwMzE5LDQwMzIwLDQwMzIxLDQwMzIyLDQwMzIzLDQwMzI0LDQwMzI1LDQwMzI2LDQwMzI3LDQwMzI4LDQwMzI5LDQwMzMwLDQwMzMxLDQwMzMyLDQwMzMzLDQwMzM0LDQwMzM1LDQwMzM2LDQwMzM3LDQwMzM4LDQwMzM5LDQwMzQwLDQwMzQxLDQw''@;'; put 'put ''MzQyLDQwMzQzLDQwMzQ0LDQwMzQ1LDQwMzQ2LDQwMzQ3LDQwMzQ4LDQwMzQ5LDQwMzUwLDQwMzUxLDQwMzUyLDQwMzUzLDQwMzU0LDU4MDAyLDU4MDAzLDU4MDA0LDU4MDA1LDU4MDA2LDU4MDA3LDU4MDA4LDU4MDA5LDU4MDEwLDU4MDExLDU4MDEyLDU4MDEzLDU4MDE0LDU4MDE1LDU4MDE2''@;'; put 'put ''LDU4MDE3LDU4MDE4LDU4MDE5LDU4MDIwLDU4MDIxLDU4MDIyLDU4MDIzLDU4MDI0LDU4MDI1LDU4MDI2LDU4MDI3LDU4MDI4LDU4MDI5LDU4MDMwLDU4MDMxLDU4MDMyLDU4MDMzLDU4MDM0LDU4MDM1LDU4MDM2LDU4MDM3LDU4MDM4LDU4MDM5LDU4MDQwLDU4MDQxLDU4MDQyLDU4MDQzLDU4''@;'; put 'put ''MDQ0LDU4MDQ1LDU4MDQ2LDU4MDQ3LDU4MDQ4LDU4MDQ5LDU4MDUwLDU4MDUxLDU4MDUyLDU4MDUzLDU4MDU0LDU4MDU1LDU4MDU2LDU4MDU3LDU4MDU4LDU4MDU5LDU4MDYwLDU4MDYxLDU4MDYyLDU4MDYzLDU4MDY0LDU4MDY1LDU4MDY2LDU4MDY3LDU4MDY4LDU4MDY5LDU4MDcwLDU4MDcx''@;'; put 'put ''LDU4MDcyLDU4MDczLDU4MDc0LDU4MDc1LDU4MDc2LDU4MDc3LDU4MDc4LDU4MDc5LDU4MDgwLDU4MDgxLDU4MDgyLDU4MDgzLDU4MDg0LDU4MDg1LDU4MDg2LDU4MDg3LDU4MDg4LDU4MDg5LDU4MDkwLDU4MDkxLDU4MDkyLDU4MDkzLDU4MDk0LDU4MDk1LDQwMzU1LDQwMzU2LDQwMzU3LDQw''@;'; put 'put ''MzU4LDQwMzU5LDQwMzYwLDQwMzYxLDQwMzYyLDQwMzYzLDQwMzY0LDQwMzY1LDQwMzY2LDQwMzY3LDQwMzY4LDQwMzY5LDQwMzcwLDQwMzcxLDQwMzcyLDQwMzczLDQwMzc0LDQwMzc1LDQwMzc2LDQwMzc3LDQwMzc4LDQwMzc5LDQwMzgwLDQwMzgxLDQwMzgyLDQwMzgzLDQwMzg0LDQwMzg1''@;'; put 'put ''LDQwMzg2LDQwMzg3LDQwMzg4LDQwMzg5LDQwMzkwLDQwMzkxLDQwMzkyLDQwMzkzLDQwMzk0LDQwMzk1LDQwMzk2LDQwMzk3LDQwMzk4LDQwMzk5LDQwNDAwLDQwNDAxLDQwNDAyLDQwNDAzLDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDA4LDQwNDA5LDQwNDEwLDQwNDExLDQwNDEyLDQw''@;'; put 'put ''NDEzLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDE3LDQwNDE4LDQwNDE5LDQwNDIwLDQwNDIxLDQwNDIyLDQwNDIzLDQwNDI0LDQwNDI1LDQwNDI2LDQwNDI3LDQwNDI4LDQwNDI5LDQwNDMwLDQwNDMxLDQwNDMyLDQwNDMzLDQwNDM0LDQwNDM1LDQwNDM2LDQwNDM3LDQwNDM4LDQwNDM5LDQwNDQw''@;'; put 'put ''LDQwNDQxLDQwNDQyLDQwNDQzLDQwNDQ0LDQwNDQ1LDQwNDQ2LDQwNDQ3LDQwNDQ4LDQwNDQ5LDQwNDUwLDU4MDk2LDU4MDk3LDU4MDk4LDU4MDk5LDU4MTAwLDU4MTAxLDU4MTAyLDU4MTAzLDU4MTA0LDU4MTA1LDU4MTA2LDU4MTA3LDU4MTA4LDU4MTA5LDU4MTEwLDU4MTExLDU4MTEyLDU4''@;'; put 'put ''MTEzLDU4MTE0LDU4MTE1LDU4MTE2LDU4MTE3LDU4MTE4LDU4MTE5LDU4MTIwLDU4MTIxLDU4MTIyLDU4MTIzLDU4MTI0LDU4MTI1LDU4MTI2LDU4MTI3LDU4MTI4LDU4MTI5LDU4MTMwLDU4MTMxLDU4MTMyLDU4MTMzLDU4MTM0LDU4MTM1LDU4MTM2LDU4MTM3LDU4MTM4LDU4MTM5LDU4MTQw''@;'; put 'put ''LDU4MTQxLDU4MTQyLDU4MTQzLDU4MTQ0LDU4MTQ1LDU4MTQ2LDU4MTQ3LDU4MTQ4LDU4MTQ5LDU4MTUwLDU4MTUxLDU4MTUyLDU4MTUzLDU4MTU0LDU4MTU1LDU4MTU2LDU4MTU3LDU4MTU4LDU4MTU5LDU4MTYwLDU4MTYxLDU4MTYyLDU4MTYzLDU4MTY0LDU4MTY1LDU4MTY2LDU4MTY3LDU4''@;'; put 'put ''MTY4LDU4MTY5LDU4MTcwLDU4MTcxLDU4MTcyLDU4MTczLDU4MTc0LDU4MTc1LDU4MTc2LDU4MTc3LDU4MTc4LDU4MTc5LDU4MTgwLDU4MTgxLDU4MTgyLDU4MTgzLDU4MTg0LDU4MTg1LDU4MTg2LDU4MTg3LDU4MTg4LDU4MTg5LDQwNDUxLDQwNDUyLDQwNDUzLDQwNDU0LDQwNDU1LDQwNDU2''@;'; put 'put ''LDQwNDU3LDQwNDU4LDQwNDU5LDQwNDYwLDQwNDYxLDQwNDYyLDQwNDYzLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY3LDQwNDY4LDQwNDY5LDQwNDcwLDQwNDcxLDQwNDcyLDQwNDczLDQwNDc0LDQwNDc1LDQwNDc2LDQwNDc3LDQwNDc4LDQwNDg0LDQwNDg3LDQwNDk0LDQwNDk2LDQwNTAwLDQw''@;'; put 'put ''NTA3LDQwNTA4LDQwNTEyLDQwNTI1LDQwNTI4LDQwNTMwLDQwNTMxLDQwNTMyLDQwNTM0LDQwNTM3LDQwNTQxLDQwNTQzLDQwNTQ0LDQwNTQ1LDQwNTQ2LDQwNTQ5LDQwNTU4LDQwNTU5LDQwNTYyLDQwNTY0LDQwNTY1LDQwNTY2LDQwNTY3LDQwNTY4LDQwNTY5LDQwNTcwLDQwNTcxLDQwNTcy''@;'; put 'put ''LDQwNTczLDQwNTc2LDQwNTc3LDQwNTc5LDQwNTgwLDQwNTgxLDQwNTgyLDQwNTg1LDQwNTg2LDQwNTg4LDQwNTg5LDQwNTkwLDQwNTkxLDQwNTkyLDQwNTkzLDQwNTk2LDQwNTk3LDQwNTk4LDQwNTk5LDQwNjAwLDQwNjAxLDQwNjAyLDQwNjAzLDQwNjA0LDQwNjA2LDQwNjA4LDQwNjA5LDQw''@;'; put 'put ''NjEwLDQwNjExLDQwNjEyLDQwNjEzLDQwNjE1LDQwNjE2LDQwNjE3LDQwNjE4LDU4MTkwLDU4MTkxLDU4MTkyLDU4MTkzLDU4MTk0LDU4MTk1LDU4MTk2LDU4MTk3LDU4MTk4LDU4MTk5LDU4MjAwLDU4MjAxLDU4MjAyLDU4MjAzLDU4MjA0LDU4MjA1LDU4MjA2LDU4MjA3LDU4MjA4LDU4MjA5''@;'; put 'put ''LDU4MjEwLDU4MjExLDU4MjEyLDU4MjEzLDU4MjE0LDU4MjE1LDU4MjE2LDU4MjE3LDU4MjE4LDU4MjE5LDU4MjIwLDU4MjIxLDU4MjIyLDU4MjIzLDU4MjI0LDU4MjI1LDU4MjI2LDU4MjI3LDU4MjI4LDU4MjI5LDU4MjMwLDU4MjMxLDU4MjMyLDU4MjMzLDU4MjM0LDU4MjM1LDU4MjM2LDU4''@;'; put 'put ''MjM3LDU4MjM4LDU4MjM5LDU4MjQwLDU4MjQxLDU4MjQyLDU4MjQzLDU4MjQ0LDU4MjQ1LDU4MjQ2LDU4MjQ3LDU4MjQ4LDU4MjQ5LDU4MjUwLDU4MjUxLDU4MjUyLDU4MjUzLDU4MjU0LDU4MjU1LDU4MjU2LDU4MjU3LDU4MjU4LDU4MjU5LDU4MjYwLDU4MjYxLDU4MjYyLDU4MjYzLDU4MjY0''@;'; put 'put ''LDU4MjY1LDU4MjY2LDU4MjY3LDU4MjY4LDU4MjY5LDU4MjcwLDU4MjcxLDU4MjcyLDU4MjczLDU4Mjc0LDU4Mjc1LDU4Mjc2LDU4Mjc3LDU4Mjc4LDU4Mjc5LDU4MjgwLDU4MjgxLDU4MjgyLDU4MjgzLDQwNjE5LDQwNjIwLDQwNjIxLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI1LDQwNjI2LDQw''@;'; put 'put ''NjI3LDQwNjI5LDQwNjMwLDQwNjMxLDQwNjMzLDQwNjM0LDQwNjM2LDQwNjM5LDQwNjQwLDQwNjQxLDQwNjQyLDQwNjQzLDQwNjQ1LDQwNjQ2LDQwNjQ3LDQwNjQ4LDQwNjUwLDQwNjUxLDQwNjUyLDQwNjU2LDQwNjU4LDQwNjU5LDQwNjYxLDQwNjYyLDQwNjYzLDQwNjY1LDQwNjY2LDQwNjcw''@;'; put 'put ''LDQwNjczLDQwNjc1LDQwNjc2LDQwNjc4LDQwNjgwLDQwNjgzLDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5LDQwNjkwLDQwNjkxLDQwNjkyLDQwNjkzLDQwNjk0LDQwNjk1LDQwNjk2LDQwNjk4LDQwNzAxLDQwNzAzLDQwNzA0LDQwNzA1LDQwNzA2LDQwNzA3LDQwNzA4LDQwNzA5LDQw''@;'; put 'put ''NzEwLDQwNzExLDQwNzEyLDQwNzEzLDQwNzE0LDQwNzE2LDQwNzE5LDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI1LDQwNzI2LDQwNzI4LDQwNzMwLDQwNzMxLDQwNzMyLDQwNzMzLDQwNzM0LDQwNzM1LDQwNzM3LDQwNzM5LDQwNzQwLDQwNzQxLDQwNzQyLDQwNzQzLDQwNzQ0LDQwNzQ1LDQwNzQ2''@;'; put 'put ''LDQwNzQ3LDQwNzQ5LDQwNzUwLDQwNzUyLDQwNzUzLDU4Mjg0LDU4Mjg1LDU4Mjg2LDU4Mjg3LDU4Mjg4LDU4Mjg5LDU4MjkwLDU4MjkxLDU4MjkyLDU4MjkzLDU4Mjk0LDU4Mjk1LDU4Mjk2LDU4Mjk3LDU4Mjk4LDU4Mjk5LDU4MzAwLDU4MzAxLDU4MzAyLDU4MzAzLDU4MzA0LDU4MzA1LDU4''@;'; put 'put ''MzA2LDU4MzA3LDU4MzA4LDU4MzA5LDU4MzEwLDU4MzExLDU4MzEyLDU4MzEzLDU4MzE0LDU4MzE1LDU4MzE2LDU4MzE3LDU4MzE4LDU4MzE5LDU4MzIwLDU4MzIxLDU4MzIyLDU4MzIzLDU4MzI0LDU4MzI1LDU4MzI2LDU4MzI3LDU4MzI4LDU4MzI5LDU4MzMwLDU4MzMxLDU4MzMyLDU4MzMz''@;'; put 'put ''LDU4MzM0LDU4MzM1LDU4MzM2LDU4MzM3LDU4MzM4LDU4MzM5LDU4MzQwLDU4MzQxLDU4MzQyLDU4MzQzLDU4MzQ0LDU4MzQ1LDU4MzQ2LDU4MzQ3LDU4MzQ4LDU4MzQ5LDU4MzUwLDU4MzUxLDU4MzUyLDU4MzUzLDU4MzU0LDU4MzU1LDU4MzU2LDU4MzU3LDU4MzU4LDU4MzU5LDU4MzYwLDU4''@;'; put 'put ''MzYxLDU4MzYyLDU4MzYzLDU4MzY0LDU4MzY1LDU4MzY2LDU4MzY3LDU4MzY4LDU4MzY5LDU4MzcwLDU4MzcxLDU4MzcyLDU4MzczLDU4Mzc0LDU4Mzc1LDU4Mzc2LDU4Mzc3LDQwNzU0LDQwNzU1LDQwNzU2LDQwNzU3LDQwNzU4LDQwNzYwLDQwNzYyLDQwNzY0LDQwNzY3LDQwNzY4LDQwNzY5''@;'; put 'put ''LDQwNzcwLDQwNzcxLDQwNzczLDQwNzc0LDQwNzc1LDQwNzc2LDQwNzc3LDQwNzc4LDQwNzc5LDQwNzgwLDQwNzgxLDQwNzgyLDQwNzgzLDQwNzg2LDQwNzg3LDQwNzg4LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzkzLDQwNzk0LDQwNzk1LDQwNzk2LDQwNzk3LDQwNzk4LDQwNzk5LDQw''@;'; put 'put ''ODAwLDQwODAxLDQwODAyLDQwODAzLDQwODA0LDQwODA1LDQwODA2LDQwODA3LDQwODA4LDQwODA5LDQwODEwLDQwODExLDQwODEyLDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE4LDQwODE5LDQwODIwLDQwODIxLDQwODIyLDQwODIzLDQwODI0LDQwODI1LDQwODI2LDQwODI3''@;'; put 'put ''LDQwODI4LDQwODI5LDQwODMwLDQwODMzLDQwODM0LDQwODQ1LDQwODQ2LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUwLDQwODUxLDQwODUyLDQwODUzLDQwODU0LDQwODU1LDQwODU2LDQwODYwLDQwODYxLDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY4LDQwODY5LDYzNzg4LDYzODY1LDYz''@;'; put 'put ''ODkzLDYzOTc1LDYzOTg1LDU4Mzc4LDU4Mzc5LDU4MzgwLDU4MzgxLDU4MzgyLDU4MzgzLDU4Mzg0LDU4Mzg1LDU4Mzg2LDU4Mzg3LDU4Mzg4LDU4Mzg5LDU4MzkwLDU4MzkxLDU4MzkyLDU4MzkzLDU4Mzk0LDU4Mzk1LDU4Mzk2LDU4Mzk3LDU4Mzk4LDU4Mzk5LDU4NDAwLDU4NDAxLDU4NDAy''@;'; put 'put ''LDU4NDAzLDU4NDA0LDU4NDA1LDU4NDA2LDU4NDA3LDU4NDA4LDU4NDA5LDU4NDEwLDU4NDExLDU4NDEyLDU4NDEzLDU4NDE0LDU4NDE1LDU4NDE2LDU4NDE3LDU4NDE4LDU4NDE5LDU4NDIwLDU4NDIxLDU4NDIyLDU4NDIzLDU4NDI0LDU4NDI1LDU4NDI2LDU4NDI3LDU4NDI4LDU4NDI5LDU4''@;'; put 'put ''NDMwLDU4NDMxLDU4NDMyLDU4NDMzLDU4NDM0LDU4NDM1LDU4NDM2LDU4NDM3LDU4NDM4LDU4NDM5LDU4NDQwLDU4NDQxLDU4NDQyLDU4NDQzLDU4NDQ0LDU4NDQ1LDU4NDQ2LDU4NDQ3LDU4NDQ4LDU4NDQ5LDU4NDUwLDU4NDUxLDU4NDUyLDU4NDUzLDU4NDU0LDU4NDU1LDU4NDU2LDU4NDU3''@;'; put 'put ''LDU4NDU4LDU4NDU5LDU4NDYwLDU4NDYxLDU4NDYyLDU4NDYzLDU4NDY0LDU4NDY1LDU4NDY2LDU4NDY3LDU4NDY4LDU4NDY5LDU4NDcwLDU4NDcxLDY0MDEyLDY0MDEzLDY0MDE0LDY0MDE1LDY0MDE3LDY0MDE5LDY0MDIwLDY0MDI0LDY0MDMxLDY0MDMyLDY0MDMzLDY0MDM1LDY0MDM2LDY0''@;'; put 'put ''MDM5LDY0MDQwLDY0MDQxLDExOTA1LDU5NDE0LDU5NDE1LDU5NDE2LDExOTA4LDEzNDI3LDEzMzgzLDExOTEyLDExOTE1LDU5NDIyLDEzNzI2LDEzODUwLDEzODM4LDExOTE2LDExOTI3LDE0NzAyLDE0NjE2LDU5NDMwLDE0Nzk5LDE0ODE1LDE0OTYzLDE0ODAwLDU5NDM1LDU5NDM2LDE1MTgy''@;'; put 'put ''LDE1NDcwLDE1NTg0LDExOTQzLDU5NDQxLDU5NDQyLDExOTQ2LDE2NDcwLDE2NzM1LDExOTUwLDE3MjA3LDExOTU1LDExOTU4LDExOTU5LDU5NDUxLDE3MzI5LDE3MzI0LDExOTYzLDE3MzczLDE3NjIyLDE4MDE3LDE3OTk2LDU5NDU5LDE4MjExLDE4MjE3LDE4MzAwLDE4MzE3LDExOTc4LDE4''@;'; put 'put ''NzU5LDE4ODEwLDE4ODEzLDE4ODE4LDE4ODE5LDE4ODIxLDE4ODIyLDE4ODQ3LDE4ODQzLDE4ODcxLDE4ODcwLDU5NDc2LDU5NDc3LDE5NjE5LDE5NjE1LDE5NjE2LDE5NjE3LDE5NTc1LDE5NjE4LDE5NzMxLDE5NzMyLDE5NzMzLDE5NzM0LDE5NzM1LDE5NzM2LDE5NzM3LDE5ODg2LDU5NDky''@;'; put 'put ''LDU4NDcyLDU4NDczLDU4NDc0LDU4NDc1LDU4NDc2LDU4NDc3LDU4NDc4LDU4NDc5LDU4NDgwLDU4NDgxLDU4NDgyLDU4NDgzLDU4NDg0LDU4NDg1LDU4NDg2LDU4NDg3LDU4NDg4LDU4NDg5LDU4NDkwLDU4NDkxLDU4NDkyLDU4NDkzLDU4NDk0LDU4NDk1LDU4NDk2LDU4NDk3LDU4NDk4LDU4''@;'; put 'put ''NDk5LDU4NTAwLDU4NTAxLDU4NTAyLDU4NTAzLDU4NTA0LDU4NTA1LDU4NTA2LDU4NTA3LDU4NTA4LDU4NTA5LDU4NTEwLDU4NTExLDU4NTEyLDU4NTEzLDU4NTE0LDU4NTE1LDU4NTE2LDU4NTE3LDU4NTE4LDU4NTE5LDU4NTIwLDU4NTIxLDU4NTIyLDU4NTIzLDU4NTI0LDU4NTI1LDU4NTI2''@;'; put 'put ''LDU4NTI3LDU4NTI4LDU4NTI5LDU4NTMwLDU4NTMxLDU4NTMyLDU4NTMzLDU4NTM0LDU4NTM1LDU4NTM2LDU4NTM3LDU4NTM4LDU4NTM5LDU4NTQwLDU4NTQxLDU4NTQyLDU4NTQzLDU4NTQ0LDU4NTQ1LDU4NTQ2LDU4NTQ3LDU4NTQ4LDU4NTQ5LDU4NTUwLDU4NTUxLDU4NTUyLDU4NTUzLDU4''@;'; put 'put ''NTU0LDU4NTU1LDU4NTU2LDU4NTU3LDU4NTU4LDU4NTU5LDU4NTYwLDU4NTYxLDU4NTYyLDU4NTYzLDU4NTY0LDU4NTY1XSwiZ2IxODAzMC1yYW5nZXMiOltbMCwxMjhdLFszNiwxNjVdLFszOCwxNjldLFs0NSwxNzhdLFs1MCwxODRdLFs4MSwyMTZdLFs4OSwyMjZdLFs5NSwyMzVdLFs5Niwy''@;'; put 'put ''MzhdLFsxMDAsMjQ0XSxbMTAzLDI0OF0sWzEwNCwyNTFdLFsxMDUsMjUzXSxbMTA5LDI1OF0sWzEyNiwyNzZdLFsxMzMsMjg0XSxbMTQ4LDMwMF0sWzE3MiwzMjVdLFsxNzUsMzI5XSxbMTc5LDMzNF0sWzIwOCwzNjRdLFszMDYsNDYzXSxbMzA3LDQ2NV0sWzMwOCw0NjddLFszMDksNDY5XSxb''@;'; put 'put ''MzEwLDQ3MV0sWzMxMSw0NzNdLFszMTIsNDc1XSxbMzEzLDQ3N10sWzM0MSw1MDZdLFs0MjgsNTk0XSxbNDQzLDYxMF0sWzU0NCw3MTJdLFs1NDUsNzE2XSxbNTU4LDczMF0sWzc0MSw5MzBdLFs3NDIsOTM4XSxbNzQ5LDk2Ml0sWzc1MCw5NzBdLFs4MDUsMTAyNl0sWzgxOSwxMTA0XSxbODIw''@;'; put 'put ''LDExMDZdLFs3OTIyLDgyMDldLFs3OTI0LDgyMTVdLFs3OTI1LDgyMThdLFs3OTI3LDgyMjJdLFs3OTM0LDgyMzFdLFs3OTQzLDgyNDFdLFs3OTQ0LDgyNDRdLFs3OTQ1LDgyNDZdLFs3OTUwLDgyNTJdLFs4MDYyLDgzNjVdLFs4MTQ4LDg0NTJdLFs4MTQ5LDg0NTRdLFs4MTUyLDg0NThdLFs4''@;'; put 'put ''MTY0LDg0NzFdLFs4MTc0LDg0ODJdLFs4MjM2LDg1NTZdLFs4MjQwLDg1NzBdLFs4MjYyLDg1OTZdLFs4MjY0LDg2MDJdLFs4Mzc0LDg3MTNdLFs4MzgwLDg3MjBdLFs4MzgxLDg3MjJdLFs4Mzg0LDg3MjZdLFs4Mzg4LDg3MzFdLFs4MzkwLDg3MzddLFs4MzkyLDg3NDBdLFs4MzkzLDg3NDJd''@;'; put 'put ''LFs4Mzk0LDg3NDhdLFs4Mzk2LDg3NTFdLFs4NDAxLDg3NjBdLFs4NDA2LDg3NjZdLFs4NDE2LDg3NzddLFs4NDE5LDg3ODFdLFs4NDI0LDg3ODddLFs4NDM3LDg4MDJdLFs4NDM5LDg4MDhdLFs4NDQ1LDg4MTZdLFs4NDgyLDg4NTRdLFs4NDg1LDg4NThdLFs4NDk2LDg4NzBdLFs4NTIxLDg4''@;'; put 'put ''OTZdLFs4NjAzLDg5NzldLFs4OTM2LDkzMjJdLFs4OTQ2LDkzNzJdLFs5MDQ2LDk1NDhdLFs5MDUwLDk1ODhdLFs5MDYzLDk2MTZdLFs5MDY2LDk2MjJdLFs5MDc2LDk2MzRdLFs5MDkyLDk2NTJdLFs5MTAwLDk2NjJdLFs5MTA4LDk2NzJdLFs5MTExLDk2NzZdLFs5MTEzLDk2ODBdLFs5MTMx''@;'; put 'put ''LDk3MDJdLFs5MTYyLDk3MzVdLFs5MTY0LDk3MzhdLFs5MjE4LDk3OTNdLFs5MjE5LDk3OTVdLFsxMTMyOSwxMTkwNl0sWzExMzMxLDExOTA5XSxbMTEzMzQsMTE5MTNdLFsxMTMzNiwxMTkxN10sWzExMzQ2LDExOTI4XSxbMTEzNjEsMTE5NDRdLFsxMTM2MywxMTk0N10sWzExMzY2LDExOTUx''@;'; put 'put ''XSxbMTEzNzAsMTE5NTZdLFsxMTM3MiwxMTk2MF0sWzExMzc1LDExOTY0XSxbMTEzODksMTE5NzldLFsxMTY4MiwxMjI4NF0sWzExNjg2LDEyMjkyXSxbMTE2ODcsMTIzMTJdLFsxMTY5MiwxMjMxOV0sWzExNjk0LDEyMzMwXSxbMTE3MTQsMTIzNTFdLFsxMTcxNiwxMjQzNl0sWzExNzIzLDEy''@;'; put 'put ''NDQ3XSxbMTE3MjUsMTI1MzVdLFsxMTczMCwxMjU0M10sWzExNzM2LDEyNTg2XSxbMTE5ODIsMTI4NDJdLFsxMTk4OSwxMjg1MF0sWzEyMTAyLDEyOTY0XSxbMTIzMzYsMTMyMDBdLFsxMjM0OCwxMzIxNV0sWzEyMzUwLDEzMjE4XSxbMTIzODQsMTMyNTNdLFsxMjM5MywxMzI2M10sWzEyMzk1''@;'; put 'put ''LDEzMjY3XSxbMTIzOTcsMTMyNzBdLFsxMjUxMCwxMzM4NF0sWzEyNTUzLDEzNDI4XSxbMTI4NTEsMTM3MjddLFsxMjk2MiwxMzgzOV0sWzEyOTczLDEzODUxXSxbMTM3MzgsMTQ2MTddLFsxMzgyMywxNDcwM10sWzEzOTE5LDE0ODAxXSxbMTM5MzMsMTQ4MTZdLFsxNDA4MCwxNDk2NF0sWzE0''@;'; put 'put ''Mjk4LDE1MTgzXSxbMTQ1ODUsMTU0NzFdLFsxNDY5OCwxNTU4NV0sWzE1NTgzLDE2NDcxXSxbMTU4NDcsMTY3MzZdLFsxNjMxOCwxNzIwOF0sWzE2NDM0LDE3MzI1XSxbMTY0MzgsMTczMzBdLFsxNjQ4MSwxNzM3NF0sWzE2NzI5LDE3NjIzXSxbMTcxMDIsMTc5OTddLFsxNzEyMiwxODAxOF0s''@;'; put 'put ''WzE3MzE1LDE4MjEyXSxbMTczMjAsMTgyMThdLFsxNzQwMiwxODMwMV0sWzE3NDE4LDE4MzE4XSxbMTc4NTksMTg3NjBdLFsxNzkwOSwxODgxMV0sWzE3OTExLDE4ODE0XSxbMTc5MTUsMTg4MjBdLFsxNzkxNiwxODgyM10sWzE3OTM2LDE4ODQ0XSxbMTc5MzksMTg4NDhdLFsxNzk2MSwxODg3''@;'; put 'put ''Ml0sWzE4NjY0LDE5NTc2XSxbMTg3MDMsMTk2MjBdLFsxODgxNCwxOTczOF0sWzE4OTYyLDE5ODg3XSxbMTkwNDMsNDA4NzBdLFszMzQ2OSw1OTI0NF0sWzMzNDcwLDU5MzM2XSxbMzM0NzEsNTkzNjddLFszMzQ4NCw1OTQxM10sWzMzNDg1LDU5NDE3XSxbMzM0OTAsNTk0MjNdLFszMzQ5Nyw1''@;'; put 'put ''OTQzMV0sWzMzNTAxLDU5NDM3XSxbMzM1MDUsNTk0NDNdLFszMzUxMyw1OTQ1Ml0sWzMzNTIwLDU5NDYwXSxbMzM1MzYsNTk0NzhdLFszMzU1MCw1OTQ5M10sWzM3ODQ1LDYzNzg5XSxbMzc5MjEsNjM4NjZdLFszNzk0OCw2Mzg5NF0sWzM4MDI5LDYzOTc2XSxbMzgwMzgsNjM5ODZdLFszODA2''@;'; put 'put ''NCw2NDAxNl0sWzM4MDY1LDY0MDE4XSxbMzgwNjYsNjQwMjFdLFszODA2OSw2NDAyNV0sWzM4MDc1LDY0MDM0XSxbMzgwNzYsNjQwMzddLFszODA3OCw2NDA0Ml0sWzM5MTA4LDY1MDc0XSxbMzkxMDksNjUwOTNdLFszOTExMyw2NTEwN10sWzM5MTE0LDY1MTEyXSxbMzkxMTUsNjUxMjddLFsz''@;'; put 'put ''OTExNiw2NTEzMl0sWzM5MjY1LDY1Mzc1XSxbMzkzOTQsNjU1MTBdLFsxODllMyw2NTUzNl1dLGppczAyMDg6WzEyMjg4LDEyMjg5LDEyMjkwLDY1MjkyLDY1Mjk0LDEyNTM5LDY1MzA2LDY1MzA3LDY1MzExLDY1MjgxLDEyNDQzLDEyNDQ0LDE4MCw2NTM0NCwxNjgsNjUzNDIsNjU1MDcsNjUz''@;'; put 'put ''NDMsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsODIxMyw4MjA4LDY1Mjk1LDY1MzQwLDY1Mzc0LDg3NDEsNjUzNzIsODIzMCw4MjI5LDgyMTYsODIxNyw4MjIwLDgyMjEsNjUyODgsNjUyODksMTIzMDgsMTIzMDksNjUzMzksNjUz''@;'; put 'put ''NDEsNjUzNzEsNjUzNzMsMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsNjUyOTEsNjUyOTMsMTc3LDIxNSwyNDcsNjUzMDksODgwMCw2NTMwOCw2NTMxMCw4ODA2LDg4MDcsODczNCw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQz''@;'; put 'put ''LDg0NTEsNjU1MDksNjUyODQsNjU1MDQsNjU1MDUsNjUyODUsNjUyODMsNjUyODYsNjUyOTAsNjUzMTIsMTY3LDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODI1MSwxMjMwNiw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3NDMsODc0NCw2NTUwNiw4NjU4LDg2NjAsODcw''@;'; put 'put ''NCw4NzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDg0OTEsODI0MCw5ODM5LDk4MzcsOTgzNCw4MjI0LDgyMjUsMTgyLG51bGwsbnVsbCxudWxsLG51bGwsOTcxMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTI5Niw2NTI5Nyw2NTI5OCw2''@;'; put 'put ''NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3''@;'; put 'put ''LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1''@;'; put 'put ''MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLG51bGwsbnVsbCxudWxsLG51bGwsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIz''@;'; put 'put ''NjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODks''@;'; put 'put ''MTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0''@;'; put 'put ''MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEy''@;'; put 'put ''NDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAz''@;'; put 'put ''LDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEy''@;'; put 'put ''NTMxLDEyNTMyLDEyNTMzLDEyNTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNDAsMTA0MSwx''@;'; put 'put ''MDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwx''@;'; put 'put ''MDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5''@;'; put 'put ''NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; 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 ''dWxsLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMyMiw5MzIzLDkzMjQsOTMyNSw5MzI2LDkzMjcsOTMyOCw5MzI5LDkzMzAsOTMzMSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsMTMxMjks''@;'; put 'put ''MTMwNzYsMTMwOTAsMTMxMzMsMTMwODAsMTMwOTUsMTMwNTksMTMxMTAsMTMxMzcsMTMxNDMsMTMwNjksMTMwOTQsMTMwOTEsMTMwOTksMTMxMzAsMTMxMTUsMTMyMTIsMTMyMTMsMTMyMTQsMTMxOTgsMTMxOTksMTMyNTIsMTMyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDEzMTc5LDEyMzE3LDEyMzE5LDg0NzAsMTMyNjEsODQ4MSwxMjk2NCwxMjk2NSwxMjk2NiwxMjk2NywxMjk2OCwxMjg0OSwxMjg1MCwxMjg1NywxMzE4MiwxMzE4MSwxMzE4MCw4Nzg2LDg4MDEsODc0Nyw4NzUwLDg3MjEsODczMCw4ODY5LDg3MzYsODczNSw4ODk1LDg3NTcsODc0''@;'; put 'put ''NSw4NzQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAxMjQsMjE3ODIsMjMwNDMsMzg0NjMsMjE2OTYsMjQ4''@;'; put 'put ''NTksMjUzODQsMjMwMzAsMzY4OTgsMzM5MDksMzM1NjQsMzEzMTIsMjQ3NDYsMjU1NjksMjgxOTcsMjYwOTMsMzM4OTQsMzM0NDYsMzk5MjUsMjY3NzEsMjIzMTEsMjYwMTcsMjUyMDEsMjM0NTEsMjI5OTIsMzQ0MjcsMzkxNTYsMzIwOTgsMzIxOTAsMzk4MjIsMjUxMTAsMzE5MDMsMzQ5OTks''@;'; put 'put ''MjM0MzMsMjQyNDUsMjUzNTMsMjYyNjMsMjY2OTYsMzgzNDMsMzg3OTcsMjY0NDcsMjAxOTcsMjAyMzQsMjAzMDEsMjAzODEsMjA1NTMsMjIyNTgsMjI4MzksMjI5OTYsMjMwNDEsMjM1NjEsMjQ3OTksMjQ4NDcsMjQ5NDQsMjYxMzEsMjY4ODUsMjg4NTgsMzAwMzEsMzAwNjQsMzEyMjcsMzIx''@;'; put 'put ''NzMsMzIyMzksMzI5NjMsMzM4MDYsMzQ5MTUsMzU1ODYsMzY5NDksMzY5ODYsMjEzMDcsMjAxMTcsMjAxMzMsMjI0OTUsMzI5NDYsMzcwNTcsMzA5NTksMTk5NjgsMjI3NjksMjgzMjIsMzY5MjAsMzEyODIsMzM1NzYsMzM0MTksMzk5ODMsMjA4MDEsMjEzNjAsMjE2OTMsMjE3MjksMjIyNDAs''@;'; put 'put ''MjMwMzUsMjQzNDEsMzkxNTQsMjgxMzksMzI5OTYsMzQwOTMsMzg0OTgsMzg1MTIsMzg1NjAsMzg5MDcsMjE1MTUsMjE0OTEsMjM0MzEsMjg4NzksMzI3MDEsMzY4MDIsMzg2MzIsMjEzNTksNDAyODQsMzE0MTgsMTk5ODUsMzA4NjcsMzMyNzYsMjgxOTgsMjIwNDAsMjE3NjQsMjc0MjEsMzQw''@;'; put 'put ''NzQsMzk5OTUsMjMwMTMsMjE0MTcsMjgwMDYsMjk5MTYsMzgyODcsMjIwODIsMjAxMTMsMzY5MzksMzg2NDIsMzM2MTUsMzkxODAsMjE0NzMsMjE5NDIsMjMzNDQsMjQ0MzMsMjYxNDQsMjYzNTUsMjY2MjgsMjc3MDQsMjc4OTEsMjc5NDUsMjk3ODcsMzA0MDgsMzEzMTAsMzg5NjQsMzM1MjEs''@;'; put 'put ''MzQ5MDcsMzU0MjQsMzc2MTMsMjgwODIsMzAxMjMsMzA0MTAsMzkzNjUsMjQ3NDIsMzU1ODUsMzYyMzQsMzgzMjIsMjcwMjIsMjE0MjEsMjA4NzAsMjIyOTAsMjI1NzYsMjI4NTIsMjM0NzYsMjQzMTAsMjQ2MTYsMjU1MTMsMjU1ODgsMjc4MzksMjg0MzYsMjg4MTQsMjg5NDgsMjkwMTcsMjkx''@;'; put 'put ''NDEsMjk1MDMsMzIyNTcsMzMzOTgsMzM0ODksMzQxOTksMzY5NjAsMzc0NjcsNDAyMTksMjI2MzMsMjYwNDQsMjc3MzgsMjk5ODksMjA5ODUsMjI4MzAsMjI4ODUsMjQ0NDgsMjQ1NDAsMjUyNzYsMjYxMDYsMjcxNzgsMjc0MzEsMjc1NzIsMjk1NzksMzI3MDUsMzUxNTgsNDAyMzYsNDAyMDYs''@;'; put 'put ''NDA2NDQsMjM3MTMsMjc3OTgsMzM2NTksMjA3NDAsMjM2MjcsMjUwMTQsMzMyMjIsMjY3NDIsMjkyODEsMjAwNTcsMjA0NzQsMjEzNjgsMjQ2ODEsMjgyMDEsMzEzMTEsMzg4OTksMTk5NzksMjEyNzAsMjAyMDYsMjAzMDksMjAyODUsMjAzODUsMjAzMzksMjExNTIsMjE0ODcsMjIwMjUsMjI3''@;'; put 'put ''OTksMjMyMzMsMjM0NzgsMjM1MjEsMzExODUsMjYyNDcsMjY1MjQsMjY1NTAsMjc0NjgsMjc4MjcsMjg3NzksMjk2MzQsMzExMTcsMzExNjYsMzEyOTIsMzE2MjMsMzM0NTcsMzM0OTksMzM1NDAsMzM2NTUsMzM3NzUsMzM3NDcsMzQ2NjIsMzU1MDYsMjIwNTcsMzYwMDgsMzY4MzgsMzY5NDIs''@;'; put 'put ''Mzg2ODYsMzQ0NDIsMjA0MjAsMjM3ODQsMjUxMDUsMjkyNzMsMzAwMTEsMzMyNTMsMzM0NjksMzQ1NTgsMzYwMzIsMzg1OTcsMzkxODcsMzkzODEsMjAxNzEsMjAyNTAsMzUyOTksMjIyMzgsMjI2MDIsMjI3MzAsMjQzMTUsMjQ1NTUsMjQ2MTgsMjQ3MjQsMjQ2NzQsMjUwNDAsMjUxMDYsMjUy''@;'; put 'put ''OTYsMjU5MTMsMzk3NDUsMjYyMTQsMjY4MDAsMjgwMjMsMjg3ODQsMzAwMjgsMzAzNDIsMzIxMTcsMzM0NDUsMzQ4MDksMzgyODMsMzg1NDIsMzU5OTcsMjA5NzcsMjExODIsMjI4MDYsMjE2ODMsMjM0NzUsMjM4MzAsMjQ5MzYsMjcwMTAsMjgwNzksMzA4NjEsMzM5OTUsMzQ5MDMsMzU0NDIs''@;'; put 'put ''Mzc3OTksMzk2MDgsMjgwMTIsMzkzMzYsMzQ1MjEsMjI0MzUsMjY2MjMsMzQ1MTAsMzczOTAsMjExMjMsMjIxNTEsMjE1MDgsMjQyNzUsMjUzMTMsMjU3ODUsMjY2ODQsMjY2ODAsMjc1NzksMjk1NTQsMzA5MDYsMzEzMzksMzUyMjYsMzUyODIsMzYyMDMsMzY2MTEsMzcxMDEsMzgzMDcsMzg1''@;'; put 'put ''NDgsMzg3NjEsMjMzOTgsMjM3MzEsMjcwMDUsMzg5ODksMzg5OTAsMjU0OTksMzE1MjAsMjcxNzksMjcyNjMsMjY4MDYsMzk5NDksMjg1MTEsMjExMDYsMjE5MTcsMjQ2ODgsMjUzMjQsMjc5NjMsMjgxNjcsMjgzNjksMzM4ODMsMzUwODgsMzY2NzYsMTk5ODgsMzk5OTMsMjE0OTQsMjY5MDcs''@;'; put 'put ''MjcxOTQsMzg3ODgsMjY2NjYsMjA4MjgsMzE0MjcsMzM5NzAsMzczNDAsMzc3NzIsMjIxMDcsNDAyMzIsMjY2NTgsMzM1NDEsMzM4NDEsMzE5MDksMjFlMywzMzQ3NywyOTkyNiwyMDA5NCwyMDM1NSwyMDg5NiwyMzUwNiwyMTAwMiwyMTIwOCwyMTIyMywyNDA1OSwyMTkxNCwyMjU3MCwyMzAx''@;'; put 'put ''NCwyMzQzNiwyMzQ0OCwyMzUxNSwyNDE3OCwyNDE4NSwyNDczOSwyNDg2MywyNDkzMSwyNTAyMiwyNTU2MywyNTk1NCwyNjU3NywyNjcwNywyNjg3NCwyNzQ1NCwyNzQ3NSwyNzczNSwyODQ1MCwyODU2NywyODQ4NSwyOTg3MiwyOTk3NiwzMDQzNSwzMDQ3NSwzMTQ4NywzMTY0OSwzMTc3Nywz''@;'; put 'put ''MjIzMywzMjU2NiwzMjc1MiwzMjkyNSwzMzM4MiwzMzY5NCwzNTI1MSwzNTUzMiwzNjAxMSwzNjk5NiwzNzk2OSwzODI5MSwzODI4OSwzODMwNiwzODUwMSwzODg2NywzOTIwOCwzMzMwNCwyMDAyNCwyMTU0NywyMzczNiwyNDAxMiwyOTYwOSwzMDI4NCwzMDUyNCwyMzcyMSwzMjc0NywzNjEw''@;'; put 'put ''NywzODU5MywzODkyOSwzODk5NiwzOWUzLDIwMjI1LDIwMjM4LDIxMzYxLDIxOTE2LDIyMTIwLDIyNTIyLDIyODU1LDIzMzA1LDIzNDkyLDIzNjk2LDI0MDc2LDI0MTkwLDI0NTI0LDI1NTgyLDI2NDI2LDI2MDcxLDI2MDgyLDI2Mzk5LDI2ODI3LDI2ODIwLDI3MjMxLDI0MTEyLDI3NTg5LDI3''@;'; put 'put ''NjcxLDI3NzczLDMwMDc5LDMxMDQ4LDIzMzk1LDMxMjMyLDMyZTMsMjQ1MDksMzUyMTUsMzUzNTIsMzYwMjAsMzYyMTUsMzY1NTYsMzY2MzcsMzkxMzgsMzk0MzgsMzk3NDAsMjAwOTYsMjA2MDUsMjA3MzYsMjI5MzEsMjM0NTIsMjUxMzUsMjUyMTYsMjU4MzYsMjc0NTAsMjkzNDQsMzAwOTcs''@;'; put 'put ''MzEwNDcsMzI2ODEsMzQ4MTEsMzU1MTYsMzU2OTYsMjU1MTYsMzM3MzgsMzg4MTYsMjE1MTMsMjE1MDcsMjE5MzEsMjY3MDgsMjcyMjQsMzU0NDAsMzA3NTksMjY0ODUsNDA2NTMsMjEzNjQsMjM0NTgsMzMwNTAsMzQzODQsMzY4NzAsMTk5OTIsMjAwMzcsMjAxNjcsMjAyNDEsMjE0NTAsMjE1''@;'; put 'put ''NjAsMjM0NzAsMjQzMzksMjQ2MTMsMjU5MzcsMjY0MjksMjc3MTQsMjc3NjIsMjc4NzUsMjg3OTIsMjk2OTksMzEzNTAsMzE0MDYsMzE0OTYsMzIwMjYsMzE5OTgsMzIxMDIsMjYwODcsMjkyNzUsMjE0MzUsMjM2MjEsMjQwNDAsMjUyOTgsMjUzMTIsMjUzNjksMjgxOTIsMzQzOTQsMzUzNzcs''@;'; put 'put ''MzYzMTcsMzc2MjQsMjg0MTcsMzExNDIsMzk3NzAsMjAxMzYsMjAxMzksMjAxNDAsMjAzNzksMjAzODQsMjA2ODksMjA4MDcsMzE0NzgsMjA4NDksMjA5ODIsMjEzMzIsMjEyODEsMjEzNzUsMjE0ODMsMjE5MzIsMjI2NTksMjM3NzcsMjQzNzUsMjQzOTQsMjQ2MjMsMjQ2NTYsMjQ2ODUsMjUz''@;'; put 'put ''NzUsMjU5NDUsMjcyMTEsMjc4NDEsMjkzNzgsMjk0MjEsMzA3MDMsMzMwMTYsMzMwMjksMzMyODgsMzQxMjYsMzcxMTEsMzc4NTcsMzg5MTEsMzkyNTUsMzk1MTQsMjAyMDgsMjA5NTcsMjM1OTcsMjYyNDEsMjY5ODksMjM2MTYsMjYzNTQsMjY5OTcsMjk1NzcsMjY3MDQsMzE4NzMsMjA2Nzcs''@;'; put 'put ''MjEyMjAsMjIzNDMsMjQwNjIsMzc2NzAsMjYwMjAsMjc0MjcsMjc0NTMsMjk3NDgsMzExMDUsMzExNjUsMzE1NjMsMzIyMDIsMzM0NjUsMzM3NDAsMzQ5NDMsMzUxNjcsMzU2NDEsMzY4MTcsMzczMjksMjE1MzUsMzc1MDQsMjAwNjEsMjA1MzQsMjE0NzcsMjEzMDYsMjkzOTksMjk1OTAsMzA2''@;'; put 'put ''OTcsMzM1MTAsMzY1MjcsMzkzNjYsMzkzNjgsMzkzNzgsMjA4NTUsMjQ4NTgsMzQzOTgsMjE5MzYsMzEzNTQsMjA1OTgsMjM1MDcsMzY5MzUsMzg1MzMsMjAwMTgsMjczNTUsMzczNTEsMjM2MzMsMjM2MjQsMjU0OTYsMzEzOTEsMjc3OTUsMzg3NzIsMzY3MDUsMzE0MDIsMjkwNjYsMzg1MzYs''@;'; put 'put ''MzE4NzQsMjY2NDcsMzIzNjgsMjY3MDUsMzc3NDAsMjEyMzQsMjE1MzEsMzQyMTksMzUzNDcsMzI2NzYsMzY1NTcsMzcwODksMjEzNTAsMzQ5NTIsMzEwNDEsMjA0MTgsMjA2NzAsMjEwMDksMjA4MDQsMjE4NDMsMjIzMTcsMjk2NzQsMjI0MTEsMjI4NjUsMjQ0MTgsMjQ0NTIsMjQ2OTMsMjQ5''@;'; put 'put ''NTAsMjQ5MzUsMjUwMDEsMjU1MjIsMjU2NTgsMjU5NjQsMjYyMjMsMjY2OTAsMjgxNzksMzAwNTQsMzEyOTMsMzE5OTUsMzIwNzYsMzIxNTMsMzIzMzEsMzI2MTksMzM1NTAsMzM2MTAsMzQ1MDksMzUzMzYsMzU0MjcsMzU2ODYsMzY2MDUsMzg5MzgsNDAzMzUsMzM0NjQsMzY4MTQsMzk5MTIs''@;'; put 'put ''MjExMjcsMjUxMTksMjU3MzEsMjg2MDgsMzg1NTMsMjY2ODksMjA2MjUsMjc0MjQsMjc3NzAsMjg1MDAsMzEzNDgsMzIwODAsMzQ4ODAsMzUzNjMsMjYzNzYsMjAyMTQsMjA1MzcsMjA1MTgsMjA1ODEsMjA4NjAsMjEwNDgsMjEwOTEsMjE5MjcsMjIyODcsMjI1MzMsMjMyNDQsMjQzMTQsMjUw''@;'; put 'put ''MTAsMjUwODAsMjUzMzEsMjU0NTgsMjY5MDgsMjcxNzcsMjkzMDksMjkzNTYsMjk0ODYsMzA3NDAsMzA4MzEsMzIxMjEsMzA0NzYsMzI5MzcsMzUyMTEsMzU2MDksMzYwNjYsMzY1NjIsMzY5NjMsMzc3NDksMzg1MjIsMzg5OTcsMzk0NDMsNDA1NjgsMjA4MDMsMjE0MDcsMjE0MjcsMjQxODcs''@;'; put 'put ''MjQzNTgsMjgxODcsMjgzMDQsMjk1NzIsMjk2OTQsMzIwNjcsMzMzMzUsMzUzMjgsMzU1NzgsMzg0ODAsMjAwNDYsMjA0OTEsMjE0NzYsMjE2MjgsMjIyNjYsMjI5OTMsMjMzOTYsMjQwNDksMjQyMzUsMjQzNTksMjUxNDQsMjU5MjUsMjY1NDMsMjgyNDYsMjkzOTIsMzE5NDYsMzQ5OTYsMzI5''@;'; put 'put ''MjksMzI5OTMsMzM3NzYsMzQzODIsMzU0NjMsMzYzMjgsMzc0MzEsMzg1OTksMzkwMTUsNDA3MjMsMjAxMTYsMjAxMTQsMjAyMzcsMjEzMjAsMjE1NzcsMjE1NjYsMjMwODcsMjQ0NjAsMjQ0ODEsMjQ3MzUsMjY3OTEsMjcyNzgsMjk3ODYsMzA4NDksMzU0ODYsMzU0OTIsMzU3MDMsMzcyNjQs''@;'; put 'put ''MjAwNjIsMzk4ODEsMjAxMzIsMjAzNDgsMjAzOTksMjA1MDUsMjA1MDIsMjA4MDksMjA4NDQsMjExNTEsMjExNzcsMjEyNDYsMjE0MDIsMjE0NzUsMjE1MjEsMjE1MTgsMjE4OTcsMjIzNTMsMjI0MzQsMjI5MDksMjMzODAsMjMzODksMjM0MzksMjQwMzcsMjQwMzksMjQwNTUsMjQxODQsMjQx''@;'; put 'put ''OTUsMjQyMTgsMjQyNDcsMjQzNDQsMjQ2NTgsMjQ5MDgsMjUyMzksMjUzMDQsMjU1MTEsMjU5MTUsMjYxMTQsMjYxNzksMjYzNTYsMjY0NzcsMjY2NTcsMjY3NzUsMjcwODMsMjc3NDMsMjc5NDYsMjgwMDksMjgyMDcsMjgzMTcsMzAwMDIsMzAzNDMsMzA4MjgsMzEyOTUsMzE5NjgsMzIwMDUs''@;'; put 'put ''MzIwMjQsMzIwOTQsMzIxNzcsMzI3ODksMzI3NzEsMzI5NDMsMzI5NDUsMzMxMDgsMzMxNjcsMzMzMjIsMzM2MTgsMzQ4OTIsMzQ5MTMsMzU2MTEsMzYwMDIsMzYwOTIsMzcwNjYsMzcyMzcsMzc0ODksMzA3ODMsMzc2MjgsMzgzMDgsMzg0NzcsMzg5MTcsMzkzMjEsMzk2NDAsNDAyNTEsMjEw''@;'; put 'put ''ODMsMjExNjMsMjE0OTUsMjE1MTIsMjI3NDEsMjUzMzUsMjg2NDAsMzU5NDYsMzY3MDMsNDA2MzMsMjA4MTEsMjEwNTEsMjE1NzgsMjIyNjksMzEyOTYsMzcyMzksNDAyODgsNDA2NTgsMjk1MDgsMjg0MjUsMzMxMzYsMjk5NjksMjQ1NzMsMjQ3OTQsMzk1OTIsMjk0MDMsMzY3OTYsMjc0OTIs''@;'; put 'put ''Mzg5MTUsMjAxNzAsMjIyNTYsMjIzNzIsMjI3MTgsMjMxMzAsMjQ2ODAsMjUwMzEsMjYxMjcsMjYxMTgsMjY2ODEsMjY4MDEsMjgxNTEsMzAxNjUsMzIwNTgsMzMzOTAsMzk3NDYsMjAxMjMsMjAzMDQsMjE0NDksMjE3NjYsMjM5MTksMjQwMzgsMjQwNDYsMjY2MTksMjc4MDEsMjk4MTEsMzA3''@;'; put 'put ''MjIsMzU0MDgsMzc3ODIsMzUwMzksMjIzNTIsMjQyMzEsMjUzODcsMjA2NjEsMjA2NTIsMjA4NzcsMjYzNjgsMjE3MDUsMjI2MjIsMjI5NzEsMjM0NzIsMjQ0MjUsMjUxNjUsMjU1MDUsMjY2ODUsMjc1MDcsMjgxNjgsMjg3OTcsMzczMTksMjkzMTIsMzA3NDEsMzA3NTgsMzEwODUsMjU5OTgs''@;'; put 'put ''MzIwNDgsMzM3NTYsMzUwMDksMzY2MTcsMzg1NTUsMjEwOTIsMjIzMTIsMjY0NDgsMzI2MTgsMzYwMDEsMjA5MTYsMjIzMzgsMzg0NDIsMjI1ODYsMjcwMTgsMzI5NDgsMjE2ODIsMjM4MjIsMjI1MjQsMzA4NjksNDA0NDIsMjAzMTYsMjEwNjYsMjE2NDMsMjU2NjIsMjYxNTIsMjYzODgsMjY2''@;'; put 'put ''MTMsMzEzNjQsMzE1NzQsMzIwMzQsMzc2NzksMjY3MTYsMzk4NTMsMzE1NDUsMjEyNzMsMjA4NzQsMjEwNDcsMjM1MTksMjUzMzQsMjU3NzQsMjU4MzAsMjY0MTMsMjc1NzgsMzQyMTcsMzg2MDksMzAzNTIsMzk4OTQsMjU0MjAsMzc2MzgsMzk4NTEsMzAzOTksMjYxOTQsMTk5NzcsMjA2MzIs''@;'; put 'put ''MjE0NDIsMjM2NjUsMjQ4MDgsMjU3NDYsMjU5NTUsMjY3MTksMjkxNTgsMjk2NDIsMjk5ODcsMzE2MzksMzIzODYsMzQ0NTMsMzU3MTUsMzYwNTksMzcyNDAsMzkxODQsMjYwMjgsMjYyODMsMjc1MzEsMjAxODEsMjAxODAsMjAyODIsMjAzNTEsMjEwNTAsMjE0OTYsMjE0OTAsMjE5ODcsMjIy''@;'; put 'put ''MzUsMjI3NjMsMjI5ODcsMjI5ODUsMjMwMzksMjMzNzYsMjM2MjksMjQwNjYsMjQxMDcsMjQ1MzUsMjQ2MDUsMjUzNTEsMjU5MDMsMjMzODgsMjYwMzEsMjYwNDUsMjYwODgsMjY1MjUsMjc0OTAsMjc1MTUsMjc2NjMsMjk1MDksMzEwNDksMzExNjksMzE5OTIsMzIwMjUsMzIwNDMsMzI5MzAs''@;'; put 'put ''MzMwMjYsMzMyNjcsMzUyMjIsMzU0MjIsMzU0MzMsMzU0MzAsMzU0NjgsMzU1NjYsMzYwMzksMzYwNjAsMzg2MDQsMzkxNjQsMjc1MDMsMjAxMDcsMjAyODQsMjAzNjUsMjA4MTYsMjMzODMsMjM1NDYsMjQ5MDQsMjUzNDUsMjYxNzgsMjc0MjUsMjgzNjMsMjc4MzUsMjkyNDYsMjk4ODUsMzAx''@;'; put 'put ''NjQsMzA5MTMsMzEwMzQsMzI3ODAsMzI4MTksMzMyNTgsMzM5NDAsMzY3NjYsMjc3MjgsNDA1NzUsMjQzMzUsMzU2NzIsNDAyMzUsMzE0ODIsMzY2MDAsMjM0MzcsMzg2MzUsMTk5NzEsMjE0ODksMjI1MTksMjI4MzMsMjMyNDEsMjM0NjAsMjQ3MTMsMjgyODcsMjg0MjIsMzAxNDIsMzYwNzQs''@;'; put 'put ''MjM0NTUsMzQwNDgsMzE3MTIsMjA1OTQsMjY2MTIsMzM0MzcsMjM2NDksMzQxMjIsMzIyODYsMzMyOTQsMjA4ODksMjM1NTYsMjU0NDgsMzYxOTgsMjYwMTIsMjkwMzgsMzEwMzgsMzIwMjMsMzI3NzMsMzU2MTMsMzY1NTQsMzY5NzQsMzQ1MDMsMzcwMzQsMjA1MTEsMjEyNDIsMjM2MTAsMjY0''@;'; put 'put ''NTEsMjg3OTYsMjkyMzcsMzcxOTYsMzczMjAsMzc2NzUsMzM1MDksMjM0OTAsMjQzNjksMjQ4MjUsMjAwMjcsMjE0NjIsMjM0MzIsMjUxNjMsMjY0MTcsMjc1MzAsMjk0MTcsMjk2NjQsMzEyNzgsMzMxMzEsMzYyNTksMzcyMDIsMzkzMTgsMjA3NTQsMjE0NjMsMjE2MTAsMjM1NTEsMjU0ODAs''@;'; put 'put ''MjcxOTMsMzIxNzIsMzg2NTYsMjIyMzQsMjE0NTQsMjE2MDgsMjM0NDcsMjM2MDEsMjQwMzAsMjA0NjIsMjQ4MzMsMjUzNDIsMjc5NTQsMzExNjgsMzExNzksMzIwNjYsMzIzMzMsMzI3MjIsMzMyNjEsMzMzMTEsMzM5MzYsMzQ4ODYsMzUxODYsMzU3MjgsMzY0NjgsMzY2NTUsMzY5MTMsMzcx''@;'; put 'put ''OTUsMzcyMjgsMzg1OTgsMzcyNzYsMjAxNjAsMjAzMDMsMjA4MDUsMjEzMTMsMjQ0NjcsMjUxMDIsMjY1ODAsMjc3MTMsMjgxNzEsMjk1MzksMzIyOTQsMzczMjUsMzc1MDcsMjE0NjAsMjI4MDksMjM0ODcsMjgxMTMsMzEwNjksMzIzMDIsMzE4OTksMjI2NTQsMjkwODcsMjA5ODYsMzQ4OTks''@;'; put 'put ''MzY4NDgsMjA0MjYsMjM4MDMsMjYxNDksMzA2MzYsMzE0NTksMzMzMDgsMzk0MjMsMjA5MzQsMjQ0OTAsMjYwOTIsMjY5OTEsMjc1MjksMjgxNDcsMjgzMTAsMjg1MTYsMzA0NjIsMzIwMjAsMjQwMzMsMzY5ODEsMzcyNTUsMzg5MTgsMjA5NjYsMjEwMjEsMjUxNTIsMjYyNTcsMjYzMjksMjgx''@;'; put 'put ''ODYsMjQyNDYsMzIyMTAsMzI2MjYsMjYzNjAsMzQyMjMsMzQyOTUsMzU1NzYsMjExNjEsMjE0NjUsMjI4OTksMjQyMDcsMjQ0NjQsMjQ2NjEsMzc2MDQsMzg1MDAsMjA2NjMsMjA3NjcsMjEyMTMsMjEyODAsMjEzMTksMjE0ODQsMjE3MzYsMjE4MzAsMjE4MDksMjIwMzksMjI4ODgsMjI5NzQs''@;'; put 'put ''MjMxMDAsMjM0NzcsMjM1NTgsMjM1NjcsMjM1NjksMjM1NzgsMjQxOTYsMjQyMDIsMjQyODgsMjQ0MzIsMjUyMTUsMjUyMjAsMjUzMDcsMjU0ODQsMjU0NjMsMjYxMTksMjYxMjQsMjYxNTcsMjYyMzAsMjY0OTQsMjY3ODYsMjcxNjcsMjcxODksMjc4MzYsMjgwNDAsMjgxNjksMjgyNDgsMjg5''@;'; put 'put ''ODgsMjg5NjYsMjkwMzEsMzAxNTEsMzA0NjUsMzA4MTMsMzA5NzcsMzEwNzcsMzEyMTYsMzE0NTYsMzE1MDUsMzE5MTEsMzIwNTcsMzI5MTgsMzM3NTAsMzM5MzEsMzQxMjEsMzQ5MDksMzUwNTksMzUzNTksMzUzODgsMzU0MTIsMzU0NDMsMzU5MzcsMzYwNjIsMzcyODQsMzc0NzgsMzc3NTgs''@;'; put 'put ''Mzc5MTIsMzg1NTYsMzg4MDgsMTk5NzgsMTk5NzYsMTk5OTgsMjAwNTUsMjA4ODcsMjExMDQsMjI0NzgsMjI1ODAsMjI3MzIsMjMzMzAsMjQxMjAsMjQ3NzMsMjU4NTQsMjY0NjUsMjY0NTQsMjc5NzIsMjkzNjYsMzAwNjcsMzEzMzEsMzM5NzYsMzU2OTgsMzczMDQsMzc2NjQsMjIwNjUsMjI1''@;'; put 'put ''MTYsMzkxNjYsMjUzMjUsMjY4OTMsMjc1NDIsMjkxNjUsMzIzNDAsMzI4ODcsMzMzOTQsMzUzMDIsMzkxMzUsMzQ2NDUsMzY3ODUsMjM2MTEsMjAyODAsMjA0NDksMjA0MDUsMjE3NjcsMjMwNzIsMjM1MTcsMjM1MjksMjQ1MTUsMjQ5MTAsMjUzOTEsMjYwMzIsMjYxODcsMjY4NjIsMjcwMzUs''@;'; put 'put ''MjgwMjQsMjgxNDUsMzAwMDMsMzAxMzcsMzA0OTUsMzEwNzAsMzEyMDYsMzIwNTEsMzMyNTEsMzM0NTUsMzQyMTgsMzUyNDIsMzUzODYsMzY1MjMsMzY3NjMsMzY5MTQsMzczNDEsMzg2NjMsMjAxNTQsMjAxNjEsMjA5OTUsMjI2NDUsMjI3NjQsMjM1NjMsMjk5NzgsMjM2MTMsMzMxMDIsMzUz''@;'; put 'put ''MzgsMzY4MDUsMzg0OTksMzg3NjUsMzE1MjUsMzU1MzUsMzg5MjAsMzcyMTgsMjIyNTksMjE0MTYsMzY4ODcsMjE1NjEsMjI0MDIsMjQxMDEsMjU1MTIsMjc3MDAsMjg4MTAsMzA1NjEsMzE4ODMsMzI3MzYsMzQ5MjgsMzY5MzAsMzcyMDQsMzc2NDgsMzc2NTYsMzg1NDMsMjk3OTAsMzk2MjAs''@;'; put 'put ''MjM4MTUsMjM5MTMsMjU5NjgsMjY1MzAsMzYyNjQsMzg2MTksMjU0NTQsMjY0NDEsMjY5MDUsMzM3MzMsMzg5MzUsMzg1OTIsMzUwNzAsMjg1NDgsMjU3MjIsMjM1NDQsMTk5OTAsMjg3MTYsMzAwNDUsMjYxNTksMjA5MzIsMjEwNDYsMjEyMTgsMjI5OTUsMjQ0NDksMjQ2MTUsMjUxMDQsMjU5''@;'; put 'put ''MTksMjU5NzIsMjYxNDMsMjYyMjgsMjY4NjYsMjY2NDYsMjc0OTEsMjgxNjUsMjkyOTgsMjk5ODMsMzA0MjcsMzE5MzQsMzI4NTQsMjI3NjgsMzUwNjksMzUxOTksMzU0ODgsMzU0NzUsMzU1MzEsMzY4OTMsMzcyNjYsMzg3MzgsMzg3NDUsMjU5OTMsMzEyNDYsMzMwMzAsMzg1ODcsMjQxMDks''@;'; put 'put ''MjQ3OTYsMjUxMTQsMjYwMjEsMjYxMzIsMjY1MTIsMzA3MDcsMzEzMDksMzE4MjEsMzIzMTgsMzMwMzQsMzYwMTIsMzYxOTYsMzYzMjEsMzY0NDcsMzA4ODksMjA5OTksMjUzMDUsMjU1MDksMjU2NjYsMjUyNDAsMzUzNzMsMzEzNjMsMzE2ODAsMzU1MDAsMzg2MzQsMzIxMTgsMzMyOTIsMzQ2''@;'; put 'put ''MzMsMjAxODUsMjA4MDgsMjEzMTUsMjEzNDQsMjM0NTksMjM1NTQsMjM1NzQsMjQwMjksMjUxMjYsMjUxNTksMjU3NzYsMjY2NDMsMjY2NzYsMjc4NDksMjc5NzMsMjc5MjcsMjY1NzksMjg1MDgsMjkwMDYsMjkwNTMsMjYwNTksMzEzNTksMzE2NjEsMzIyMTgsMzIzMzAsMzI2ODAsMzMxNDYs''@;'; put 'put ''MzMzMDcsMzMzMzcsMzQyMTQsMzU0MzgsMzYwNDYsMzYzNDEsMzY5ODQsMzY5ODMsMzc1NDksMzc1MjEsMzgyNzUsMzk4NTQsMjEwNjksMjE4OTIsMjg0NzIsMjg5ODIsMjA4NDAsMzExMDksMzIzNDEsMzMyMDMsMzE5NTAsMjIwOTIsMjI2MDksMjM3MjAsMjU1MTQsMjYzNjYsMjYzNjUsMjY5''@;'; put 'put ''NzAsMjk0MDEsMzAwOTUsMzAwOTQsMzA5OTAsMzEwNjIsMzExOTksMzE4OTUsMzIwMzIsMzIwNjgsMzQzMTEsMzUzODAsMzg0NTksMzY5NjEsNDA3MzYsMjA3MTEsMjExMDksMjE0NTIsMjE0NzQsMjA0ODksMjE5MzAsMjI3NjYsMjI4NjMsMjkyNDUsMjM0MzUsMjM2NTIsMjEyNzcsMjQ4MDMs''@;'; put 'put ''MjQ4MTksMjU0MzYsMjU0NzUsMjU0MDcsMjU1MzEsMjU4MDUsMjYwODksMjYzNjEsMjQwMzUsMjcwODUsMjcxMzMsMjg0MzcsMjkxNTcsMjAxMDUsMzAxODUsMzA0NTYsMzEzNzksMzE5NjcsMzIyMDcsMzIxNTYsMzI4NjUsMzM2MDksMzM2MjQsMzM5MDAsMzM5ODAsMzQyOTksMzUwMTMsMzYy''@;'; put 'put ''MDgsMzY4NjUsMzY5NzMsMzc3ODMsMzg2ODQsMzk0NDIsMjA2ODcsMjI2NzksMjQ5NzQsMzMyMzUsMzQxMDEsMzYxMDQsMzY4OTYsMjA0MTksMjA1OTYsMjEwNjMsMjEzNjMsMjQ2ODcsMjU0MTcsMjY0NjMsMjgyMDQsMzYyNzUsMzY4OTUsMjA0MzksMjM2NDYsMzYwNDIsMjYwNjMsMzIxNTQs''@;'; put 'put ''MjEzMzAsMzQ5NjYsMjA4NTQsMjU1MzksMjMzODQsMjM0MDMsMjM1NjIsMjU2MTMsMjY0NDksMzY5NTYsMjAxODIsMjI4MTAsMjI4MjYsMjc3NjAsMzU0MDksMjE4MjIsMjI1NDksMjI5NDksMjQ4MTYsMjUxNzEsMjY1NjEsMzMzMzMsMjY5NjUsMzg0NjQsMzkzNjQsMzk0NjQsMjAzMDcsMjI1''@;'; put 'put ''MzQsMjM1NTAsMzI3ODQsMjM3MjksMjQxMTEsMjQ0NTMsMjQ2MDgsMjQ5MDcsMjUxNDAsMjYzNjcsMjc4ODgsMjgzODIsMzI5NzQsMzMxNTEsMzM0OTIsMzQ5NTUsMzYwMjQsMzY4NjQsMzY5MTAsMzg1MzgsNDA2NjcsMzk4OTksMjAxOTUsMjE0ODgsMjI4MjMsMzE1MzIsMzcyNjEsMzg5ODgs''@;'; put 'put ''NDA0NDEsMjgzODEsMjg3MTEsMjEzMzEsMjE4MjgsMjM0MjksMjUxNzYsMjUyNDYsMjUyOTksMjc4MTAsMjg2NTUsMjk3MzAsMzUzNTEsMzc5NDQsMjg2MDksMzU1ODIsMzM1OTIsMjA5NjcsMzQ1NTIsMjE0ODIsMjE0ODEsMjAyOTQsMzY5NDgsMzY3ODQsMjI4OTAsMzMwNzMsMjQwNjEsMzE0''@;'; put 'put ''NjYsMzY3OTksMjY4NDIsMzU4OTUsMjk0MzIsNDAwMDgsMjcxOTcsMzU1MDQsMjAwMjUsMjEzMzYsMjIwMjIsMjIzNzQsMjUyODUsMjU1MDYsMjYwODYsMjc0NzAsMjgxMjksMjgyNTEsMjg4NDUsMzA3MDEsMzE0NzEsMzE2NTgsMzIxODcsMzI4MjksMzI5NjYsMzQ1MDcsMzU0NzcsMzc3MjMs''@;'; put 'put ''MjIyNDMsMjI3MjcsMjQzODIsMjYwMjksMjYyNjIsMjcyNjQsMjc1NzMsMzAwMDcsMzU1MjcsMjA1MTYsMzA2OTMsMjIzMjAsMjQzNDcsMjQ2NzcsMjYyMzQsMjc3NDQsMzAxOTYsMzEyNTgsMzI2MjIsMzMyNjgsMzQ1ODQsMzY5MzMsMzkzNDcsMzE2ODksMzAwNDQsMzE0ODEsMzE1NjksMzM5''@;'; put 'put ''ODgsMzY4ODAsMzEyMDksMzEzNzgsMzM1OTAsMjMyNjUsMzA1MjgsMjAwMTMsMjAyMTAsMjM0NDksMjQ1NDQsMjUyNzcsMjYxNzIsMjY2MDksMjc4ODAsMzQ0MTEsMzQ5MzUsMzUzODcsMzcxOTgsMzc2MTksMzkzNzYsMjcxNTksMjg3MTAsMjk0ODIsMzM1MTEsMzM4NzksMzYwMTUsMTk5Njks''@;'; put 'put ''MjA4MDYsMjA5MzksMjE4OTksMjM1NDEsMjQwODYsMjQxMTUsMjQxOTMsMjQzNDAsMjQzNzMsMjQ0MjcsMjQ1MDAsMjUwNzQsMjUzNjEsMjYyNzQsMjYzOTcsMjg1MjYsMjkyNjYsMzAwMTAsMzA1MjIsMzI4ODQsMzMwODEsMzMxNDQsMzQ2NzgsMzU1MTksMzU1NDgsMzYyMjksMzYzMzksMzc1''@;'; put 'put ''MzAsMzgyNjMsMzg5MTQsNDAxNjUsMjExODksMjU0MzEsMzA0NTIsMjYzODksMjc3ODQsMjk2NDUsMzYwMzUsMzc4MDYsMzg1MTUsMjc5NDEsMjI2ODQsMjY4OTQsMjcwODQsMzY4NjEsMzc3ODYsMzAxNzEsMzY4OTAsMjI2MTgsMjY2MjYsMjU1MjQsMjcxMzEsMjAyOTEsMjg0NjAsMjY1ODQs''@;'; put 'put ''MzY3OTUsMzQwODYsMzIxODAsMzc3MTYsMjY5NDMsMjg1MjgsMjIzNzgsMjI3NzUsMjMzNDAsMzIwNDQsMjkyMjYsMjE1MTQsMzczNDcsNDAzNzIsMjAxNDEsMjAzMDIsMjA1NzIsMjA1OTcsMjEwNTksMzU5OTgsMjE1NzYsMjI1NjQsMjM0NTAsMjQwOTMsMjQyMTMsMjQyMzcsMjQzMTEsMjQz''@;'; put 'put ''NTEsMjQ3MTYsMjUyNjksMjU0MDIsMjU1NTIsMjY3OTksMjc3MTIsMzA4NTUsMzExMTgsMzEyNDMsMzIyMjQsMzMzNTEsMzUzMzAsMzU1NTgsMzY0MjAsMzY4ODMsMzcwNDgsMzcxNjUsMzczMzYsNDA3MTgsMjc4NzcsMjU2ODgsMjU4MjYsMjU5NzMsMjg0MDQsMzAzNDAsMzE1MTUsMzY5Njks''@;'; put 'put ''Mzc4NDEsMjgzNDYsMjE3NDYsMjQ1MDUsMjU3NjQsMzY2ODUsMzY4NDUsMzc0NDQsMjA4NTYsMjI2MzUsMjI4MjUsMjM2MzcsMjQyMTUsMjgxNTUsMzIzOTksMjk5ODAsMzYwMjgsMzY1NzgsMzkwMDMsMjg4NTcsMjAyNTMsMjc1ODMsMjg1OTMsM2U0LDM4NjUxLDIwODE0LDIxNTIwLDIyNTgx''@;'; put 'put ''LDIyNjE1LDIyOTU2LDIzNjQ4LDI0NDY2LDI2MDA3LDI2NDYwLDI4MTkzLDMwMzMxLDMzNzU5LDM2MDc3LDM2ODg0LDM3MTE3LDM3NzA5LDMwNzU3LDMwNzc4LDIxMTYyLDI0MjMwLDIyMzAzLDIyOTAwLDI0NTk0LDIwNDk4LDIwODI2LDIwOTA4LDIwOTQxLDIwOTkyLDIxNzc2LDIyNjEyLDIy''@;'; put 'put ''NjE2LDIyODcxLDIzNDQ1LDIzNzk4LDIzOTQ3LDI0NzY0LDI1MjM3LDI1NjQ1LDI2NDgxLDI2NjkxLDI2ODEyLDI2ODQ3LDMwNDIzLDI4MTIwLDI4MjcxLDI4MDU5LDI4NzgzLDI5MTI4LDI0NDAzLDMwMTY4LDMxMDk1LDMxNTYxLDMxNTcyLDMxNTcwLDMxOTU4LDMyMTEzLDIxMDQwLDMzODkx''@;'; put 'put ''LDM0MTUzLDM0Mjc2LDM1MzQyLDM1NTg4LDM1OTEwLDM2MzY3LDM2ODY3LDM2ODc5LDM3OTEzLDM4NTE4LDM4OTU3LDM5NDcyLDM4MzYwLDIwNjg1LDIxMjA1LDIxNTE2LDIyNTMwLDIzNTY2LDI0OTk5LDI1NzU4LDI3OTM0LDMwNjQzLDMxNDYxLDMzMDEyLDMzNzk2LDM2OTQ3LDM3NTA5LDIz''@;'; put 'put ''Nzc2LDQwMTk5LDIxMzExLDI0NDcxLDI0NDk5LDI4MDYwLDI5MzA1LDMwNTYzLDMxMTY3LDMxNzE2LDI3NjAyLDI5NDIwLDM1NTAxLDI2NjI3LDI3MjMzLDIwOTg0LDMxMzYxLDI2OTMyLDIzNjI2LDQwMTgyLDMzNTE1LDIzNDkzLDM3MTkzLDI4NzAyLDIyMTM2LDIzNjYzLDI0Nzc1LDI1OTU4''@;'; put 'put ''LDI3Nzg4LDM1OTMwLDM2OTI5LDM4OTMxLDIxNTg1LDI2MzExLDM3Mzg5LDIyODU2LDM3MDI3LDIwODY5LDIwMDQ1LDIwOTcwLDM0MjAxLDM1NTk4LDI4NzYwLDI1NDY2LDM3NzA3LDI2OTc4LDM5MzQ4LDMyMjYwLDMwMDcxLDIxMzM1LDI2OTc2LDM2NTc1LDM4NjI3LDI3NzQxLDIwMTA4LDIz''@;'; put 'put ''NjEyLDI0MzM2LDM2ODQxLDIxMjUwLDM2MDQ5LDMyOTA1LDM0NDI1LDI0MzE5LDI2MDg1LDIwMDgzLDIwODM3LDIyOTE0LDIzNjE1LDM4ODk0LDIwMjE5LDIyOTIyLDI0NTI1LDM1NDY5LDI4NjQxLDMxMTUyLDMxMDc0LDIzNTI3LDMzOTA1LDI5NDgzLDI5MTA1LDI0MTgwLDI0NTY1LDI1NDY3''@;'; put 'put ''LDI1NzU0LDI5MTIzLDMxODk2LDIwMDM1LDI0MzE2LDIwMDQzLDIyNDkyLDIyMTc4LDI0NzQ1LDI4NjExLDMyMDEzLDMzMDIxLDMzMDc1LDMzMjE1LDM2Nzg2LDM1MjIzLDM0NDY4LDI0MDUyLDI1MjI2LDI1NzczLDM1MjA3LDI2NDg3LDI3ODc0LDI3OTY2LDI5NzUwLDMwNzcyLDIzMTEwLDMy''@;'; put 'put ''NjI5LDMzNDUzLDM5MzQwLDIwNDY3LDI0MjU5LDI1MzA5LDI1NDkwLDI1OTQzLDI2NDc5LDMwNDAzLDI5MjYwLDMyOTcyLDMyOTU0LDM2NjQ5LDM3MTk3LDIwNDkzLDIyNTIxLDIzMTg2LDI2NzU3LDI2OTk1LDI5MDI4LDI5NDM3LDM2MDIzLDIyNzcwLDM2MDY0LDM4NTA2LDM2ODg5LDM0Njg3''@;'; put 'put ''LDMxMjA0LDMwNjk1LDMzODMzLDIwMjcxLDIxMDkzLDIxMzM4LDI1MjkzLDI2NTc1LDI3ODUwLDMwMzMzLDMxNjM2LDMxODkzLDMzMzM0LDM0MTgwLDM2ODQzLDI2MzMzLDI4NDQ4LDI5MTkwLDMyMjgzLDMzNzA3LDM5MzYxLDQwNjE0LDIwOTg5LDMxNjY1LDMwODM0LDMxNjcyLDMyOTAzLDMx''@;'; put 'put ''NTYwLDI3MzY4LDI0MTYxLDMyOTA4LDMwMDMzLDMwMDQ4LDIwODQzLDM3NDc0LDI4MzAwLDMwMzMwLDM3MjcxLDM5NjU4LDIwMjQwLDMyNjI0LDI1MjQ0LDMxNTY3LDM4MzA5LDQwMTY5LDIyMTM4LDIyNjE3LDM0NTMyLDM4NTg4LDIwMjc2LDIxMDI4LDIxMzIyLDIxNDUzLDIxNDY3LDI0MDcw''@;'; put 'put ''LDI1NjQ0LDI2MDAxLDI2NDk1LDI3NzEwLDI3NzI2LDI5MjU2LDI5MzU5LDI5Njc3LDMwMDM2LDMyMzIxLDMzMzI0LDM0MjgxLDM2MDA5LDMxNjg0LDM3MzE4LDI5MDMzLDM4OTMwLDM5MTUxLDI1NDA1LDI2MjE3LDMwMDU4LDMwNDM2LDMwOTI4LDM0MTE1LDM0NTQyLDIxMjkwLDIxMzI5LDIx''@;'; put 'put ''NTQyLDIyOTE1LDI0MTk5LDI0NDQ0LDI0NzU0LDI1MTYxLDI1MjA5LDI1MjU5LDI2ZTMsMjc2MDQsMjc4NTIsMzAxMzAsMzAzODIsMzA4NjUsMzExOTIsMzIyMDMsMzI2MzEsMzI5MzMsMzQ5ODcsMzU1MTMsMzYwMjcsMzY5OTEsMzg3NTAsMzkxMzEsMjcxNDcsMzE4MDAsMjA2MzMsMjM2MTQs''@;'; put 'put ''MjQ0OTQsMjY1MDMsMjc2MDgsMjk3NDksMzA0NzMsMzI2NTQsNDA3NjMsMjY1NzAsMzEyNTUsMjEzMDUsMzAwOTEsMzk2NjEsMjQ0MjIsMzMxODEsMzM3NzcsMzI5MjAsMjQzODAsMjQ1MTcsMzAwNTAsMzE1NTgsMzY5MjQsMjY3MjcsMjMwMTksMjMxOTUsMzIwMTYsMzAzMzQsMzU2MjgsMjA0''@;'; put 'put ''NjksMjQ0MjYsMjcxNjEsMjc3MDMsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU0MTMsMzU5NjEsMjQyODcsMjU1NTEsMzAxNDksMzExODYsMzM0OTUsMzc2NzIsMzc2MTgsMzM5NDgsMzQ1NDEsMzk5ODEsMjE2OTcsMjQ0MjgsMjU5OTYsMjc5OTYsMjg2OTMsMzYwMDcsMzYwNTEsMzg5NzEs''@;'; put 'put ''MjU5MzUsMjk5NDIsMTk5ODEsMjAxODQsMjI0OTYsMjI4MjcsMjMxNDIsMjM1MDAsMjA5MDQsMjQwNjcsMjQyMjAsMjQ1OTgsMjUyMDYsMjU5NzUsMjYwMjMsMjYyMjIsMjgwMTQsMjkyMzgsMzE1MjYsMzMxMDQsMzMxNzgsMzM0MzMsMzU2NzYsMzZlMywzNjA3MCwzNjIxMiwzODQyOCwzODQ2''@;'; put 'put ''OCwyMDM5OCwyNTc3MSwyNzQ5NCwzMzMxMCwzMzg4OSwzNDE1NCwzNzA5NiwyMzU1MywyNjk2MywzOTA4MCwzMzkxNCwzNDEzNSwyMDIzOSwyMTEwMywyNDQ4OSwyNDEzMywyNjM4MSwzMTExOSwzMzE0NSwzNTA3OSwzNTIwNiwyODE0OSwyNDM0MywyNTE3MywyNzgzMiwyMDE3NSwyOTI4OSwz''@;'; put 'put ''OTgyNiwyMDk5OCwyMTU2MywyMjEzMiwyMjcwNywyNDk5NiwyNTE5OCwyODk1NCwyMjg5NCwzMTg4MSwzMTk2NiwzMjAyNywzODY0MCwyNTk5MSwzMjg2MiwxOTk5MywyMDM0MSwyMDg1MywyMjU5MiwyNDE2MywyNDE3OSwyNDMzMCwyNjU2NCwyMDAwNiwzNDEwOSwzODI4MSwzODQ5MSwzMTg1''@;'; put 'put ''OSwzODkxMywyMDczMSwyMjcyMSwzMDI5NCwzMDg4NywyMTAyOSwzMDYyOSwzNDA2NSwzMTYyMiwyMDU1OSwyMjc5MywyOTI1NSwzMTY4NywzMjIzMiwzNjc5NCwzNjgyMCwzNjk0MSwyMDQxNSwyMTE5MywyMzA4MSwyNDMyMSwzODgyOSwyMDQ0NSwzMzMwMywzNzYxMCwyMjI3NSwyNTQyOSwy''@;'; put 'put ''NzQ5NywyOTk5NSwzNTAzNiwzNjYyOCwzMTI5OCwyMTIxNSwyMjY3NSwyNDkxNywyNTA5OCwyNjI4NiwyNzU5NywzMTgwNywzMzc2OSwyMDUxNSwyMDQ3MiwyMTI1MywyMTU3NCwyMjU3NywyMjg1NywyMzQ1MywyMzc5MiwyMzc5MSwyMzg0OSwyNDIxNCwyNTI2NSwyNTQ0NywyNTkxOCwyNjA0''@;'; put 'put ''MSwyNjM3OSwyNzg2MSwyNzg3MywyODkyMSwzMDc3MCwzMjI5OSwzMjk5MCwzMzQ1OSwzMzgwNCwzNDAyOCwzNDU2MiwzNTA5MCwzNTM3MCwzNTkxNCwzNzAzMCwzNzU4NiwzOTE2NSw0MDE3OSw0MDMwMCwyMDA0NywyMDEyOSwyMDYyMSwyMTA3OCwyMjM0NiwyMjk1MiwyNDEyNSwyNDUzNiwy''@;'; put 'put ''NDUzNywyNTE1MSwyNjI5MiwyNjM5NSwyNjU3NiwyNjgzNCwyMDg4MiwzMjAzMywzMjkzOCwzMzE5MiwzNTU4NCwzNTk4MCwzNjAzMSwzNzUwMiwzODQ1MCwyMTUzNiwzODk1NiwyMTI3MSwyMDY5MywyMTM0MCwyMjY5NiwyNTc3OCwyNjQyMCwyOTI4NywzMDU2NiwzMTMwMiwzNzM1MCwyMTE4''@;'; put 'put ''NywyNzgwOSwyNzUyNiwyMjUyOCwyNDE0MCwyMjg2OCwyNjQxMiwzMjc2MywyMDk2MSwzMDQwNiwyNTcwNSwzMDk1MiwzOTc2NCw0MDYzNSwyMjQ3NSwyMjk2OSwyNjE1MSwyNjUyMiwyNzU5OCwyMTczNywyNzA5NywyNDE0OSwzMzE4MCwyNjUxNywzOTg1MCwyNjYyMiw0MDAxOCwyNjcxNywy''@;'; put 'put ''MDEzNCwyMDQ1MSwyMTQ0OCwyNTI3MywyNjQxMSwyNzgxOSwzNjgwNCwyMDM5NywzMjM2NSw0MDYzOSwxOTk3NSwyNDkzMCwyODI4OCwyODQ1OSwzNDA2NywyMTYxOSwyNjQxMCwzOTc0OSwyNDA1MSwzMTYzNywyMzcyNCwyMzQ5NCwzNDU4OCwyODIzNCwzNDAwMSwzMTI1MiwzMzAzMiwyMjkz''@;'; put 'put ''NywzMTg4NSwyNzY2NSwzMDQ5NiwyMTIwOSwyMjgxOCwyODk2MSwyOTI3OSwzMDY4MywzODY5NSw0MDI4OSwyNjg5MSwyMzE2NywyMzA2NCwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwzMDQzMSwzNjg1NSwzNzUyOCw0MDE4MCwyMzAxOCwyOTI3NywyODM1NywyMDgxMywyNjgyNSwzMjE5MSwz''@;'; put 'put ''MjIzNiwzODc1NCw0MDYzNCwyNTcyMCwyNzE2OSwzMzUzOCwyMjkxNiwyMzM5MSwyNzYxMSwyOTQ2NywzMDQ1MCwzMjE3OCwzMjc5MSwzMzk0NSwyMDc4NiwyNjQwOCw0MDY2NSwzMDQ0NiwyNjQ2NiwyMTI0NywzOTE3MywyMzU4OCwyNTE0NywzMTg3MCwzNjAxNiwyMTgzOSwyNDc1OCwzMjAx''@;'; put 'put ''MSwzODI3MiwyMTI0OSwyMDA2MywyMDkxOCwyMjgxMiwyOTI0MiwzMjgyMiwzNzMyNiwyNDM1NywzMDY5MCwyMTM4MCwyNDQ0MSwzMjAwNCwzNDIyMCwzNTM3OSwzNjQ5MywzODc0MiwyNjYxMSwzNDIyMiwzNzk3MSwyNDg0MSwyNDg0MCwyNzgzMywzMDI5MCwzNTU2NSwzNjY2NCwyMTgwNywy''@;'; put 'put ''MDMwNSwyMDc3OCwyMTE5MSwyMTQ1MSwyMzQ2MSwyNDE4OSwyNDczNiwyNDk2MiwyNTU1OCwyNjM3NywyNjU4NiwyODI2MywyODA0NCwyOTQ5NCwyOTQ5NSwzMDAwMSwzMTA1NiwzNTAyOSwzNTQ4MCwzNjkzOCwzNzAwOSwzNzEwOSwzODU5NiwzNDcwMSwyMjgwNSwyMDEwNCwyMDMxMywxOTk4''@;'; put 'put ''MiwzNTQ2NSwzNjY3MSwzODkyOCwyMDY1MywyNDE4OCwyMjkzNCwyMzQ4MSwyNDI0OCwyNTU2MiwyNTU5NCwyNTc5MywyNjMzMiwyNjk1NCwyNzA5NiwyNzkxNSwyODM0MiwyOTA3NiwyOTk5MiwzMTQwNywzMjY1MCwzMjc2OCwzMzg2NSwzMzk5MywzNTIwMSwzNTYxNywzNjM2MiwzNjk2NSwz''@;'; put 'put ''ODUyNSwzOTE3OCwyNDk1OCwyNTIzMywyNzQ0MiwyNzc3OSwyODAyMCwzMjcxNiwzMjc2NCwyODA5NiwzMjY0NSwzNDc0NiwzNTA2NCwyNjQ2OSwzMzcxMywzODk3MiwzODY0NywyNzkzMSwzMjA5NywzMzg1MywzNzIyNiwyMDA4MSwyMTM2NSwyMzg4OCwyNzM5NiwyODY1MSwzNDI1MywzNDM0''@;'; put 'put ''OSwzNTIzOSwyMTAzMywyMTUxOSwyMzY1MywyNjQ0NiwyNjc5MiwyOTcwMiwyOTgyNywzMDE3OCwzNTAyMywzNTA0MSwzNzMyNCwzODYyNiwzODUyMCwyNDQ1OSwyOTU3NSwzMTQzNSwzMzg3MCwyNTUwNCwzMDA1MywyMTEyOSwyNzk2OSwyODMxNiwyOTcwNSwzMDA0MSwzMDgyNywzMTg5MCwz''@;'; put 'put ''ODUzNCwzMTQ1Miw0MDg0NSwyMDQwNiwyNDk0MiwyNjA1MywzNDM5NiwyMDEwMiwyMDE0MiwyMDY5OCwyMDAwMSwyMDk0MCwyMzUzNCwyNjAwOSwyNjc1MywyODA5MiwyOTQ3MSwzMDI3NCwzMDYzNywzMTI2MCwzMTk3NSwzMzM5MSwzNTUzOCwzNjk4OCwzNzMyNywzODUxNywzODkzNiwyMTE0''@;'; put 'put ''NywzMjIwOSwyMDUyMywyMTQwMCwyNjUxOSwyODEwNywyOTEzNiwyOTc0NywzMzI1NiwzNjY1MCwzODU2Myw0MDAyMyw0MDYwNywyOTc5MiwyMjU5MywyODA1NywzMjA0NywzOTAwNiwyMDE5NiwyMDI3OCwyMDM2MywyMDkxOSwyMTE2OSwyMzk5NCwyNDYwNCwyOTYxOCwzMTAzNiwzMzQ5MSwz''@;'; put 'put ''NzQyOCwzODU4MywzODY0NiwzODY2Niw0MDU5OSw0MDgwMiwyNjI3OCwyNzUwOCwyMTAxNSwyMTE1NSwyODg3MiwzNTAxMCwyNDI2NSwyNDY1MSwyNDk3NiwyODQ1MSwyOTAwMSwzMTgwNiwzMjI0NCwzMjg3OSwzNDAzMCwzNjg5OSwzNzY3NiwyMTU3MCwzOTc5MSwyNzM0NywyODgwOSwzNjAz''@;'; put 'put ''NCwzNjMzNSwzODcwNiwyMTE3MiwyMzEwNSwyNDI2NiwyNDMyNCwyNjM5MSwyNzAwNCwyNzAyOCwyODAxMCwyODQzMSwyOTI4MiwyOTQzNiwzMTcyNSwzMjc2OSwzMjg5NCwzNDYzNSwzNzA3MCwyMDg0NSw0MDU5NSwzMTEwOCwzMjkwNywzNzY4MiwzNTU0MiwyMDUyNSwyMTY0NCwzNTQ0MSwy''@;'; put 'put ''NzQ5OCwzNjAzNiwzMzAzMSwyNDc4NSwyNjUyOCw0MDQzNCwyMDEyMSwyMDEyMCwzOTk1MiwzNTQzNSwzNDI0MSwzNDE1MiwyNjg4MCwyODI4NiwzMDg3MSwzMzEwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0MzMyLDE5OTg0LDE5OTg5LDIw''@;'; put 'put ''MDEwLDIwMDE3LDIwMDIyLDIwMDI4LDIwMDMxLDIwMDM0LDIwMDU0LDIwMDU2LDIwMDk4LDIwMTAxLDM1OTQ3LDIwMTA2LDMzMjk4LDI0MzMzLDIwMTEwLDIwMTI2LDIwMTI3LDIwMTI4LDIwMTMwLDIwMTQ0LDIwMTQ3LDIwMTUwLDIwMTc0LDIwMTczLDIwMTY0LDIwMTY2LDIwMTYyLDIwMTgz''@;'; put 'put ''LDIwMTkwLDIwMjA1LDIwMTkxLDIwMjE1LDIwMjMzLDIwMzE0LDIwMjcyLDIwMzE1LDIwMzE3LDIwMzExLDIwMjk1LDIwMzQyLDIwMzYwLDIwMzY3LDIwMzc2LDIwMzQ3LDIwMzI5LDIwMzM2LDIwMzY5LDIwMzM1LDIwMzU4LDIwMzc0LDIwNzYwLDIwNDM2LDIwNDQ3LDIwNDMwLDIwNDQwLDIw''@;'; put 'put ''NDQzLDIwNDMzLDIwNDQyLDIwNDMyLDIwNDUyLDIwNDUzLDIwNTA2LDIwNTIwLDIwNTAwLDIwNTIyLDIwNTE3LDIwNDg1LDIwMjUyLDIwNDcwLDIwNTEzLDIwNTIxLDIwNTI0LDIwNDc4LDIwNDYzLDIwNDk3LDIwNDg2LDIwNTQ3LDIwNTUxLDI2MzcxLDIwNTY1LDIwNTYwLDIwNTUyLDIwNTcw''@;'; put 'put ''LDIwNTY2LDIwNTg4LDIwNjAwLDIwNjA4LDIwNjM0LDIwNjEzLDIwNjYwLDIwNjU4LDIwNjgxLDIwNjgyLDIwNjU5LDIwNjc0LDIwNjk0LDIwNzAyLDIwNzA5LDIwNzE3LDIwNzA3LDIwNzE4LDIwNzI5LDIwNzI1LDIwNzQ1LDIwNzM3LDIwNzM4LDIwNzU4LDIwNzU3LDIwNzU2LDIwNzYyLDIw''@;'; put 'put ''NzY5LDIwNzk0LDIwNzkxLDIwNzk2LDIwNzk1LDIwNzk5LDIwODAwLDIwODE4LDIwODEyLDIwODIwLDIwODM0LDMxNDgwLDIwODQxLDIwODQyLDIwODQ2LDIwODY0LDIwODY2LDIyMjMyLDIwODc2LDIwODczLDIwODc5LDIwODgxLDIwODgzLDIwODg1LDIwODg2LDIwOTAwLDIwOTAyLDIwODk4''@;'; put 'put ''LDIwOTA1LDIwOTA2LDIwOTA3LDIwOTE1LDIwOTEzLDIwOTE0LDIwOTEyLDIwOTE3LDIwOTI1LDIwOTMzLDIwOTM3LDIwOTU1LDIwOTYwLDM0Mzg5LDIwOTY5LDIwOTczLDIwOTc2LDIwOTgxLDIwOTkwLDIwOTk2LDIxMDAzLDIxMDEyLDIxMDA2LDIxMDMxLDIxMDM0LDIxMDM4LDIxMDQzLDIx''@;'; put 'put ''MDQ5LDIxMDcxLDIxMDYwLDIxMDY3LDIxMDY4LDIxMDg2LDIxMDc2LDIxMDk4LDIxMTA4LDIxMDk3LDIxMTA3LDIxMTE5LDIxMTE3LDIxMTMzLDIxMTQwLDIxMTM4LDIxMTA1LDIxMTI4LDIxMTM3LDM2Nzc2LDM2Nzc1LDIxMTY0LDIxMTY1LDIxMTgwLDIxMTczLDIxMTg1LDIxMTk3LDIxMjA3''@;'; put 'put ''LDIxMjE0LDIxMjE5LDIxMjIyLDM5MTQ5LDIxMjE2LDIxMjM1LDIxMjM3LDIxMjQwLDIxMjQxLDIxMjU0LDIxMjU2LDMwMDA4LDIxMjYxLDIxMjY0LDIxMjYzLDIxMjY5LDIxMjc0LDIxMjgzLDIxMjk1LDIxMjk3LDIxMjk5LDIxMzA0LDIxMzEyLDIxMzE4LDIxMzE3LDE5OTkxLDIxMzIxLDIx''@;'; put 'put ''MzI1LDIwOTUwLDIxMzQyLDIxMzUzLDIxMzU4LDIyODA4LDIxMzcxLDIxMzY3LDIxMzc4LDIxMzk4LDIxNDA4LDIxNDE0LDIxNDEzLDIxNDIyLDIxNDI0LDIxNDMwLDIxNDQzLDMxNzYyLDM4NjE3LDIxNDcxLDI2MzY0LDI5MTY2LDIxNDg2LDIxNDgwLDIxNDg1LDIxNDk4LDIxNTA1LDIxNTY1''@;'; put 'put ''LDIxNTY4LDIxNTQ4LDIxNTQ5LDIxNTY0LDIxNTUwLDIxNTU4LDIxNTQ1LDIxNTMzLDIxNTgyLDIxNjQ3LDIxNjIxLDIxNjQ2LDIxNTk5LDIxNjE3LDIxNjIzLDIxNjE2LDIxNjUwLDIxNjI3LDIxNjMyLDIxNjIyLDIxNjM2LDIxNjQ4LDIxNjM4LDIxNzAzLDIxNjY2LDIxNjg4LDIxNjY5LDIx''@;'; put 'put ''Njc2LDIxNzAwLDIxNzA0LDIxNjcyLDIxNjc1LDIxNjk4LDIxNjY4LDIxNjk0LDIxNjkyLDIxNzIwLDIxNzMzLDIxNzM0LDIxNzc1LDIxNzgwLDIxNzU3LDIxNzQyLDIxNzQxLDIxNzU0LDIxNzMwLDIxODE3LDIxODI0LDIxODU5LDIxODM2LDIxODA2LDIxODUyLDIxODI5LDIxODQ2LDIxODQ3''@;'; put 'put ''LDIxODE2LDIxODExLDIxODUzLDIxOTEzLDIxODg4LDIxNjc5LDIxODk4LDIxOTE5LDIxODgzLDIxODg2LDIxOTEyLDIxOTE4LDIxOTM0LDIxODg0LDIxODkxLDIxOTI5LDIxODk1LDIxOTI4LDIxOTc4LDIxOTU3LDIxOTgzLDIxOTU2LDIxOTgwLDIxOTg4LDIxOTcyLDIyMDM2LDIyMDA3LDIy''@;'; put 'put ''MDM4LDIyMDE0LDIyMDEzLDIyMDQzLDIyMDA5LDIyMDk0LDIyMDk2LDI5MTUxLDIyMDY4LDIyMDcwLDIyMDY2LDIyMDcyLDIyMTIzLDIyMTE2LDIyMDYzLDIyMTI0LDIyMTIyLDIyMTUwLDIyMTQ0LDIyMTU0LDIyMTc2LDIyMTY0LDIyMTU5LDIyMTgxLDIyMTkwLDIyMTk4LDIyMTk2LDIyMjEw''@;'; put 'put ''LDIyMjA0LDIyMjA5LDIyMjExLDIyMjA4LDIyMjE2LDIyMjIyLDIyMjI1LDIyMjI3LDIyMjMxLDIyMjU0LDIyMjY1LDIyMjcyLDIyMjcxLDIyMjc2LDIyMjgxLDIyMjgwLDIyMjgzLDIyMjg1LDIyMjkxLDIyMjk2LDIyMjk0LDIxOTU5LDIyMzAwLDIyMzEwLDIyMzI3LDIyMzI4LDIyMzUwLDIy''@;'; put 'put ''MzMxLDIyMzM2LDIyMzUxLDIyMzc3LDIyNDY0LDIyNDA4LDIyMzY5LDIyMzk5LDIyNDA5LDIyNDE5LDIyNDMyLDIyNDUxLDIyNDM2LDIyNDQyLDIyNDQ4LDIyNDY3LDIyNDcwLDIyNDg0LDIyNDgyLDIyNDgzLDIyNTM4LDIyNDg2LDIyNDk5LDIyNTM5LDIyNTUzLDIyNTU3LDIyNjQyLDIyNTYx''@;'; put 'put ''LDIyNjI2LDIyNjAzLDIyNjQwLDI3NTg0LDIyNjEwLDIyNTg5LDIyNjQ5LDIyNjYxLDIyNzEzLDIyNjg3LDIyNjk5LDIyNzE0LDIyNzUwLDIyNzE1LDIyNzEyLDIyNzAyLDIyNzI1LDIyNzM5LDIyNzM3LDIyNzQzLDIyNzQ1LDIyNzQ0LDIyNzU3LDIyNzQ4LDIyNzU2LDIyNzUxLDIyNzY3LDIy''@;'; put 'put ''Nzc4LDIyNzc3LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzg2LDIyNzk0LDIyODAwLDIyODExLDI2NzkwLDIyODIxLDIyODI4LDIyODI5LDIyODM0LDIyODQwLDIyODQ2LDMxNDQyLDIyODY5LDIyODY0LDIyODYyLDIyODc0LDIyODcyLDIyODgyLDIyODgwLDIyODg3LDIyODkyLDIyODg5LDIyOTA0''@;'; put 'put ''LDIyOTEzLDIyOTQxLDIwMzE4LDIwMzk1LDIyOTQ3LDIyOTYyLDIyOTgyLDIzMDE2LDIzMDA0LDIyOTI1LDIzMDAxLDIzMDAyLDIzMDc3LDIzMDcxLDIzMDU3LDIzMDY4LDIzMDQ5LDIzMDY2LDIzMTA0LDIzMTQ4LDIzMTEzLDIzMDkzLDIzMDk0LDIzMTM4LDIzMTQ2LDIzMTk0LDIzMjI4LDIz''@;'; put 'put ''MjMwLDIzMjQzLDIzMjM0LDIzMjI5LDIzMjY3LDIzMjU1LDIzMjcwLDIzMjczLDIzMjU0LDIzMjkwLDIzMjkxLDIzMzA4LDIzMzA3LDIzMzE4LDIzMzQ2LDIzMjQ4LDIzMzM4LDIzMzUwLDIzMzU4LDIzMzYzLDIzMzY1LDIzMzYwLDIzMzc3LDIzMzgxLDIzMzg2LDIzMzg3LDIzMzk3LDIzNDAx''@;'; put 'put ''LDIzNDA4LDIzNDExLDIzNDEzLDIzNDE2LDI1OTkyLDIzNDE4LDIzNDI0LDIzNDI3LDIzNDYyLDIzNDgwLDIzNDkxLDIzNDk1LDIzNDk3LDIzNTA4LDIzNTA0LDIzNTI0LDIzNTI2LDIzNTIyLDIzNTE4LDIzNTI1LDIzNTMxLDIzNTM2LDIzNTQyLDIzNTM5LDIzNTU3LDIzNTU5LDIzNTYwLDIz''@;'; put 'put ''NTY1LDIzNTcxLDIzNTg0LDIzNTg2LDIzNTkyLDIzNjA4LDIzNjA5LDIzNjE3LDIzNjIyLDIzNjMwLDIzNjM1LDIzNjMyLDIzNjMxLDIzNDA5LDIzNjYwLDIzNjYyLDIwMDY2LDIzNjcwLDIzNjczLDIzNjkyLDIzNjk3LDIzNzAwLDIyOTM5LDIzNzIzLDIzNzM5LDIzNzM0LDIzNzQwLDIzNzM1''@;'; put 'put ''LDIzNzQ5LDIzNzQyLDIzNzUxLDIzNzY5LDIzNzg1LDIzODA1LDIzODAyLDIzNzg5LDIzOTQ4LDIzNzg2LDIzODE5LDIzODI5LDIzODMxLDIzOTAwLDIzODM5LDIzODM1LDIzODI1LDIzODI4LDIzODQyLDIzODM0LDIzODMzLDIzODMyLDIzODg0LDIzODkwLDIzODg2LDIzODgzLDIzOTE2LDIz''@;'; put 'put ''OTIzLDIzOTI2LDIzOTQzLDIzOTQwLDIzOTM4LDIzOTcwLDIzOTY1LDIzOTgwLDIzOTgyLDIzOTk3LDIzOTUyLDIzOTkxLDIzOTk2LDI0MDA5LDI0MDEzLDI0MDE5LDI0MDE4LDI0MDIyLDI0MDI3LDI0MDQzLDI0MDUwLDI0MDUzLDI0MDc1LDI0MDkwLDI0MDg5LDI0MDgxLDI0MDkxLDI0MTE4''@;'; put 'put ''LDI0MTE5LDI0MTMyLDI0MTMxLDI0MTI4LDI0MTQyLDI0MTUxLDI0MTQ4LDI0MTU5LDI0MTYyLDI0MTY0LDI0MTM1LDI0MTgxLDI0MTgyLDI0MTg2LDQwNjM2LDI0MTkxLDI0MjI0LDI0MjU3LDI0MjU4LDI0MjY0LDI0MjcyLDI0MjcxLDI0Mjc4LDI0MjkxLDI0Mjg1LDI0MjgyLDI0MjgzLDI0''@;'; put 'put ''MjkwLDI0Mjg5LDI0Mjk2LDI0Mjk3LDI0MzAwLDI0MzA1LDI0MzA3LDI0MzA0LDI0MzA4LDI0MzEyLDI0MzE4LDI0MzIzLDI0MzI5LDI0NDEzLDI0NDEyLDI0MzMxLDI0MzM3LDI0MzQyLDI0MzYxLDI0MzY1LDI0Mzc2LDI0Mzg1LDI0MzkyLDI0Mzk2LDI0Mzk4LDI0MzY3LDI0NDAxLDI0NDA2''@;'; put 'put ''LDI0NDA3LDI0NDA5LDI0NDE3LDI0NDI5LDI0NDM1LDI0NDM5LDI0NDUxLDI0NDUwLDI0NDQ3LDI0NDU4LDI0NDU2LDI0NDY1LDI0NDU1LDI0NDc4LDI0NDczLDI0NDcyLDI0NDgwLDI0NDg4LDI0NDkzLDI0NTA4LDI0NTM0LDI0NTcxLDI0NTQ4LDI0NTY4LDI0NTYxLDI0NTQxLDI0NzU1LDI0''@;'; put 'put ''NTc1LDI0NjA5LDI0NjcyLDI0NjAxLDI0NTkyLDI0NjE3LDI0NTkwLDI0NjI1LDI0NjAzLDI0NTk3LDI0NjE5LDI0NjE0LDI0NTkxLDI0NjM0LDI0NjY2LDI0NjQxLDI0NjgyLDI0Njk1LDI0NjcxLDI0NjUwLDI0NjQ2LDI0NjUzLDI0Njc1LDI0NjQzLDI0Njc2LDI0NjQyLDI0Njg0LDI0Njgz''@;'; put 'put ''LDI0NjY1LDI0NzA1LDI0NzE3LDI0ODA3LDI0NzA3LDI0NzMwLDI0NzA4LDI0NzMxLDI0NzI2LDI0NzI3LDI0NzIyLDI0NzQzLDI0NzE1LDI0ODAxLDI0NzYwLDI0ODAwLDI0Nzg3LDI0NzU2LDI0NTYwLDI0NzY1LDI0Nzc0LDI0NzU3LDI0NzkyLDI0OTA5LDI0ODUzLDI0ODM4LDI0ODIyLDI0''@;'; put 'put ''ODIzLDI0ODMyLDI0ODIwLDI0ODI2LDI0ODM1LDI0ODY1LDI0ODI3LDI0ODE3LDI0ODQ1LDI0ODQ2LDI0OTAzLDI0ODk0LDI0ODcyLDI0ODcxLDI0OTA2LDI0ODk1LDI0ODkyLDI0ODc2LDI0ODg0LDI0ODkzLDI0ODk4LDI0OTAwLDI0OTQ3LDI0OTUxLDI0OTIwLDI0OTIxLDI0OTIyLDI0OTM5''@;'; put 'put ''LDI0OTQ4LDI0OTQzLDI0OTMzLDI0OTQ1LDI0OTI3LDI0OTI1LDI0OTE1LDI0OTQ5LDI0OTg1LDI0OTgyLDI0OTY3LDI1MDA0LDI0OTgwLDI0OTg2LDI0OTcwLDI0OTc3LDI1MDAzLDI1MDA2LDI1MDM2LDI1MDM0LDI1MDMzLDI1MDc5LDI1MDMyLDI1MDI3LDI1MDMwLDI1MDE4LDI1MDM1LDMy''@;'; put 'put ''NjMzLDI1MDM3LDI1MDYyLDI1MDU5LDI1MDc4LDI1MDgyLDI1MDc2LDI1MDg3LDI1MDg1LDI1MDg0LDI1MDg2LDI1MDg4LDI1MDk2LDI1MDk3LDI1MTAxLDI1MTAwLDI1MTA4LDI1MTE1LDI1MTE4LDI1MTIxLDI1MTMwLDI1MTM0LDI1MTM2LDI1MTM4LDI1MTM5LDI1MTUzLDI1MTY2LDI1MTgy''@;'; put 'put ''LDI1MTg3LDI1MTc5LDI1MTg0LDI1MTkyLDI1MjEyLDI1MjE4LDI1MjI1LDI1MjE0LDI1MjM0LDI1MjM1LDI1MjM4LDI1MzAwLDI1MjE5LDI1MjM2LDI1MzAzLDI1Mjk3LDI1Mjc1LDI1Mjk1LDI1MzQzLDI1Mjg2LDI1ODEyLDI1Mjg4LDI1MzA4LDI1MjkyLDI1MjkwLDI1MjgyLDI1Mjg3LDI1''@;'; put 'put ''MjQzLDI1Mjg5LDI1MzU2LDI1MzI2LDI1MzI5LDI1MzgzLDI1MzQ2LDI1MzUyLDI1MzI3LDI1MzMzLDI1NDI0LDI1NDA2LDI1NDIxLDI1NjI4LDI1NDIzLDI1NDk0LDI1NDg2LDI1NDcyLDI1NTE1LDI1NDYyLDI1NTA3LDI1NDg3LDI1NDgxLDI1NTAzLDI1NTI1LDI1NDUxLDI1NDQ5LDI1NTM0''@;'; put 'put ''LDI1NTc3LDI1NTM2LDI1NTQyLDI1NTcxLDI1NTQ1LDI1NTU0LDI1NTkwLDI1NTQwLDI1NjIyLDI1NjUyLDI1NjA2LDI1NjE5LDI1NjM4LDI1NjU0LDI1ODg1LDI1NjIzLDI1NjQwLDI1NjE1LDI1NzAzLDI1NzExLDI1NzE4LDI1Njc4LDI1ODk4LDI1NzQ5LDI1NzQ3LDI1NzY1LDI1NzY5LDI1''@;'; put 'put ''NzM2LDI1Nzg4LDI1ODE4LDI1ODEwLDI1Nzk3LDI1Nzk5LDI1Nzg3LDI1ODE2LDI1Nzk0LDI1ODQxLDI1ODMxLDMzMjg5LDI1ODI0LDI1ODI1LDI1MjYwLDI1ODI3LDI1ODM5LDI1OTAwLDI1ODQ2LDI1ODQ0LDI1ODQyLDI1ODUwLDI1ODU2LDI1ODUzLDI1ODgwLDI1ODg0LDI1ODYxLDI1ODky''@;'; put 'put ''LDI1ODkxLDI1ODk5LDI1OTA4LDI1OTA5LDI1OTExLDI1OTEwLDI1OTEyLDMwMDI3LDI1OTI4LDI1OTQyLDI1OTQxLDI1OTMzLDI1OTQ0LDI1OTUwLDI1OTQ5LDI1OTcwLDI1OTc2LDI1OTg2LDI1OTg3LDM1NzIyLDI2MDExLDI2MDE1LDI2MDI3LDI2MDM5LDI2MDUxLDI2MDU0LDI2MDQ5LDI2''@;'; put 'put ''MDUyLDI2MDYwLDI2MDY2LDI2MDc1LDI2MDczLDI2MDgwLDI2MDgxLDI2MDk3LDI2NDgyLDI2MTIyLDI2MTE1LDI2MTA3LDI2NDgzLDI2MTY1LDI2MTY2LDI2MTY0LDI2MTQwLDI2MTkxLDI2MTgwLDI2MTg1LDI2MTc3LDI2MjA2LDI2MjA1LDI2MjEyLDI2MjE1LDI2MjE2LDI2MjA3LDI2MjEw''@;'; put 'put ''LDI2MjI0LDI2MjQzLDI2MjQ4LDI2MjU0LDI2MjQ5LDI2MjQ0LDI2MjY0LDI2MjY5LDI2MzA1LDI2Mjk3LDI2MzEzLDI2MzAyLDI2MzAwLDI2MzA4LDI2Mjk2LDI2MzI2LDI2MzMwLDI2MzM2LDI2MTc1LDI2MzQyLDI2MzQ1LDI2MzUyLDI2MzU3LDI2MzU5LDI2MzgzLDI2MzkwLDI2Mzk4LDI2''@;'; put 'put ''NDA2LDI2NDA3LDM4NzEyLDI2NDE0LDI2NDMxLDI2NDIyLDI2NDMzLDI2NDI0LDI2NDIzLDI2NDM4LDI2NDYyLDI2NDY0LDI2NDU3LDI2NDY3LDI2NDY4LDI2NTA1LDI2NDgwLDI2NTM3LDI2NDkyLDI2NDc0LDI2NTA4LDI2NTA3LDI2NTM0LDI2NTI5LDI2NTAxLDI2NTUxLDI2NjA3LDI2NTQ4''@;'; put 'put ''LDI2NjA0LDI2NTQ3LDI2NjAxLDI2NTUyLDI2NTk2LDI2NTkwLDI2NTg5LDI2NTk0LDI2NjA2LDI2NTUzLDI2NTc0LDI2NTY2LDI2NTk5LDI3MjkyLDI2NjU0LDI2Njk0LDI2NjY1LDI2Njg4LDI2NzAxLDI2Njc0LDI2NzAyLDI2ODAzLDI2NjY3LDI2NzEzLDI2NzIzLDI2NzQzLDI2NzUxLDI2''@;'; put 'put ''NzgzLDI2NzY3LDI2Nzk3LDI2NzcyLDI2NzgxLDI2Nzc5LDI2NzU1LDI3MzEwLDI2ODA5LDI2NzQwLDI2ODA1LDI2Nzg0LDI2ODEwLDI2ODk1LDI2NzY1LDI2NzUwLDI2ODgxLDI2ODI2LDI2ODg4LDI2ODQwLDI2OTE0LDI2OTE4LDI2ODQ5LDI2ODkyLDI2ODI5LDI2ODM2LDI2ODU1LDI2ODM3''@;'; put 'put ''LDI2OTM0LDI2ODk4LDI2ODg0LDI2ODM5LDI2ODUxLDI2OTE3LDI2ODczLDI2ODQ4LDI2ODYzLDI2OTIwLDI2OTIyLDI2OTA2LDI2OTE1LDI2OTEzLDI2ODIyLDI3MDAxLDI2OTk5LDI2OTcyLDI3ZTMsMjY5ODcsMjY5NjQsMjcwMDYsMjY5OTAsMjY5MzcsMjY5OTYsMjY5NDEsMjY5NjksMjY5''@;'; put 'put ''MjgsMjY5NzcsMjY5NzQsMjY5NzMsMjcwMDksMjY5ODYsMjcwNTgsMjcwNTQsMjcwODgsMjcwNzEsMjcwNzMsMjcwOTEsMjcwNzAsMjcwODYsMjM1MjgsMjcwODIsMjcxMDEsMjcwNjcsMjcwNzUsMjcwNDcsMjcxODIsMjcwMjUsMjcwNDAsMjcwMzYsMjcwMjksMjcwNjAsMjcxMDIsMjcxMTIs''@;'; put 'put ''MjcxMzgsMjcxNjMsMjcxMzUsMjc0MDIsMjcxMjksMjcxMjIsMjcxMTEsMjcxNDEsMjcwNTcsMjcxNjYsMjcxMTcsMjcxNTYsMjcxMTUsMjcxNDYsMjcxNTQsMjczMjksMjcxNzEsMjcxNTUsMjcyMDQsMjcxNDgsMjcyNTAsMjcxOTAsMjcyNTYsMjcyMDcsMjcyMzQsMjcyMjUsMjcyMzgsMjcy''@;'; put 'put ''MDgsMjcxOTIsMjcxNzAsMjcyODAsMjcyNzcsMjcyOTYsMjcyNjgsMjcyOTgsMjcyOTksMjcyODcsMzQzMjcsMjczMjMsMjczMzEsMjczMzAsMjczMjAsMjczMTUsMjczMDgsMjczNTgsMjczNDUsMjczNTksMjczMDYsMjczNTQsMjczNzAsMjczODcsMjczOTcsMzQzMjYsMjczODYsMjc0MTAs''@;'; put 'put ''Mjc0MTQsMzk3MjksMjc0MjMsMjc0NDgsMjc0NDcsMzA0MjgsMjc0NDksMzkxNTAsMjc0NjMsMjc0NTksMjc0NjUsMjc0NzIsMjc0ODEsMjc0NzYsMjc0ODMsMjc0ODcsMjc0ODksMjc1MTIsMjc1MTMsMjc1MTksMjc1MjAsMjc1MjQsMjc1MjMsMjc1MzMsMjc1NDQsMjc1NDEsMjc1NTAsMjc1''@;'; put 'put ''NTYsMjc1NjIsMjc1NjMsMjc1NjcsMjc1NzAsMjc1NjksMjc1NzEsMjc1NzUsMjc1ODAsMjc1OTAsMjc1OTUsMjc2MDMsMjc2MTUsMjc2MjgsMjc2MjcsMjc2MzUsMjc2MzEsNDA2MzgsMjc2NTYsMjc2NjcsMjc2NjgsMjc2NzUsMjc2ODQsMjc2ODMsMjc3NDIsMjc3MzMsMjc3NDYsMjc3NTQs''@;'; put 'put ''Mjc3NzgsMjc3ODksMjc4MDIsMjc3NzcsMjc4MDMsMjc3NzQsMjc3NTIsMjc3NjMsMjc3OTQsMjc3OTIsMjc4NDQsMjc4ODksMjc4NTksMjc4MzcsMjc4NjMsMjc4NDUsMjc4NjksMjc4MjIsMjc4MjUsMjc4MzgsMjc4MzQsMjc4NjcsMjc4ODcsMjc4NjUsMjc4ODIsMjc5MzUsMzQ4OTMsMjc5''@;'; put 'put ''NTgsMjc5NDcsMjc5NjUsMjc5NjAsMjc5MjksMjc5NTcsMjc5NTUsMjc5MjIsMjc5MTYsMjgwMDMsMjgwNTEsMjgwMDQsMjc5OTQsMjgwMjUsMjc5OTMsMjgwNDYsMjgwNTMsMjg2NDQsMjgwMzcsMjgxNTMsMjgxODEsMjgxNzAsMjgwODUsMjgxMDMsMjgxMzQsMjgwODgsMjgxMDIsMjgxNDAs''@;'; put 'put ''MjgxMjYsMjgxMDgsMjgxMzYsMjgxMTQsMjgxMDEsMjgxNTQsMjgxMjEsMjgxMzIsMjgxMTcsMjgxMzgsMjgxNDIsMjgyMDUsMjgyNzAsMjgyMDYsMjgxODUsMjgyNzQsMjgyNTUsMjgyMjIsMjgxOTUsMjgyNjcsMjgyMDMsMjgyNzgsMjgyMzcsMjgxOTEsMjgyMjcsMjgyMTgsMjgyMzgsMjgx''@;'; put 'put ''OTYsMjg0MTUsMjgxODksMjgyMTYsMjgyOTAsMjgzMzAsMjgzMTIsMjgzNjEsMjgzNDMsMjgzNzEsMjgzNDksMjgzMzUsMjgzNTYsMjgzMzgsMjgzNzIsMjgzNzMsMjgzMDMsMjgzMjUsMjgzNTQsMjgzMTksMjg0ODEsMjg0MzMsMjg3NDgsMjgzOTYsMjg0MDgsMjg0MTQsMjg0NzksMjg0MDIs''@;'; put 'put ''Mjg0NjUsMjgzOTksMjg0NjYsMjgzNjQsMjg0NzgsMjg0MzUsMjg0MDcsMjg1NTAsMjg1MzgsMjg1MzYsMjg1NDUsMjg1NDQsMjg1MjcsMjg1MDcsMjg2NTksMjg1MjUsMjg1NDYsMjg1NDAsMjg1MDQsMjg1NTgsMjg1NjEsMjg2MTAsMjg1MTgsMjg1OTUsMjg1NzksMjg1NzcsMjg1ODAsMjg2''@;'; put 'put ''MDEsMjg2MTQsMjg1ODYsMjg2MzksMjg2MjksMjg2NTIsMjg2MjgsMjg2MzIsMjg2NTcsMjg2NTQsMjg2MzUsMjg2ODEsMjg2ODMsMjg2NjYsMjg2ODksMjg2NzMsMjg2ODcsMjg2NzAsMjg2OTksMjg2OTgsMjg1MzIsMjg3MDEsMjg2OTYsMjg3MDMsMjg3MjAsMjg3MzQsMjg3MjIsMjg3NTMs''@;'; put 'put ''Mjg3NzEsMjg4MjUsMjg4MTgsMjg4NDcsMjg5MTMsMjg4NDQsMjg4NTYsMjg4NTEsMjg4NDYsMjg4OTUsMjg4NzUsMjg4OTMsMjg4ODksMjg5MzcsMjg5MjUsMjg5NTYsMjg5NTMsMjkwMjksMjkwMTMsMjkwNjQsMjkwMzAsMjkwMjYsMjkwMDQsMjkwMTQsMjkwMzYsMjkwNzEsMjkxNzksMjkw''@;'; put 'put ''NjAsMjkwNzcsMjkwOTYsMjkxMDAsMjkxNDMsMjkxMTMsMjkxMTgsMjkxMzgsMjkxMjksMjkxNDAsMjkxMzQsMjkxNTIsMjkxNjQsMjkxNTksMjkxNzMsMjkxODAsMjkxNzcsMjkxODMsMjkxOTcsMjkyMDAsMjkyMTEsMjkyMjQsMjkyMjksMjkyMjgsMjkyMzIsMjkyMzQsMjkyNDMsMjkyNDQs''@;'; put 'put ''MjkyNDcsMjkyNDgsMjkyNTQsMjkyNTksMjkyNzIsMjkzMDAsMjkzMTAsMjkzMTQsMjkzMTMsMjkzMTksMjkzMzAsMjkzMzQsMjkzNDYsMjkzNTEsMjkzNjksMjkzNjIsMjkzNzksMjkzODIsMjkzODAsMjkzOTAsMjkzOTQsMjk0MTAsMjk0MDgsMjk0MDksMjk0MzMsMjk0MzEsMjA0OTUsMjk0''@;'; put 'put ''NjMsMjk0NTAsMjk0NjgsMjk0NjIsMjk0NjksMjk0OTIsMjk0ODcsMjk0ODEsMjk0NzcsMjk1MDIsMjk1MTgsMjk1MTksNDA2NjQsMjk1MjcsMjk1NDYsMjk1NDQsMjk1NTIsMjk1NjAsMjk1NTcsMjk1NjMsMjk1NjIsMjk2NDAsMjk2MTksMjk2NDYsMjk2MjcsMjk2MzIsMjk2NjksMjk2Nzgs''@;'; put 'put ''Mjk2NjIsMjk4NTgsMjk3MDEsMjk4MDcsMjk3MzMsMjk2ODgsMjk3NDYsMjk3NTQsMjk3ODEsMjk3NTksMjk3OTEsMjk3ODUsMjk3NjEsMjk3ODgsMjk4MDEsMjk4MDgsMjk3OTUsMjk4MDIsMjk4MTQsMjk4MjIsMjk4MzUsMjk4NTQsMjk4NjMsMjk4OTgsMjk5MDMsMjk5MDgsMjk2ODEsMjk5''@;'; put 'put ''MjAsMjk5MjMsMjk5MjcsMjk5MjksMjk5MzQsMjk5MzgsMjk5MzYsMjk5MzcsMjk5NDQsMjk5NDMsMjk5NTYsMjk5NTUsMjk5NTcsMjk5NjQsMjk5NjYsMjk5NjUsMjk5NzMsMjk5NzEsMjk5ODIsMjk5OTAsMjk5OTYsMzAwMTIsMzAwMjAsMzAwMjksMzAwMjYsMzAwMjUsMzAwNDMsMzAwMjIs''@;'; put 'put ''MzAwNDIsMzAwNTcsMzAwNTIsMzAwNTUsMzAwNTksMzAwNjEsMzAwNzIsMzAwNzAsMzAwODYsMzAwODcsMzAwNjgsMzAwOTAsMzAwODksMzAwODIsMzAxMDAsMzAxMDYsMzAxMDksMzAxMTcsMzAxMTUsMzAxNDYsMzAxMzEsMzAxNDcsMzAxMzMsMzAxNDEsMzAxMzYsMzAxNDAsMzAxMjksMzAx''@;'; put 'put ''NTcsMzAxNTQsMzAxNjIsMzAxNjksMzAxNzksMzAxNzQsMzAyMDYsMzAyMDcsMzAyMDQsMzAyMDksMzAxOTIsMzAyMDIsMzAxOTQsMzAxOTUsMzAyMTksMzAyMjEsMzAyMTcsMzAyMzksMzAyNDcsMzAyNDAsMzAyNDEsMzAyNDIsMzAyNDQsMzAyNjAsMzAyNTYsMzAyNjcsMzAyNzksMzAyODAs''@;'; put 'put ''MzAyNzgsMzAzMDAsMzAyOTYsMzAzMDUsMzAzMDYsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTEsMzAzMTYsMzAzMjAsMzAzMjIsMzAzMjYsMzAzMjgsMzAzMzIsMzAzMzYsMzAzMzksMzAzNDQsMzAzNDcsMzAzNTAsMzAzNTgsMzAzNTUsMzAzNjEsMzAzNjIsMzAzODQsMzAzODgsMzAzOTIsMzAz''@;'; put 'put ''OTMsMzAzOTQsMzA0MDIsMzA0MTMsMzA0MjIsMzA0MTgsMzA0MzAsMzA0MzMsMzA0MzcsMzA0MzksMzA0NDIsMzQzNTEsMzA0NTksMzA0NzIsMzA0NzEsMzA0NjgsMzA1MDUsMzA1MDAsMzA0OTQsMzA1MDEsMzA1MDIsMzA0OTEsMzA1MTksMzA1MjAsMzA1MzUsMzA1NTQsMzA1NjgsMzA1NzEs''@;'; put 'put ''MzA1NTUsMzA1NjUsMzA1OTEsMzA1OTAsMzA1ODUsMzA2MDYsMzA2MDMsMzA2MDksMzA2MjQsMzA2MjIsMzA2NDAsMzA2NDYsMzA2NDksMzA2NTUsMzA2NTIsMzA2NTMsMzA2NTEsMzA2NjMsMzA2NjksMzA2NzksMzA2ODIsMzA2ODQsMzA2OTEsMzA3MDIsMzA3MTYsMzA3MzIsMzA3MzgsMzEw''@;'; put 'put ''MTQsMzA3NTIsMzEwMTgsMzA3ODksMzA4NjIsMzA4MzYsMzA4NTQsMzA4NDQsMzA4NzQsMzA4NjAsMzA4ODMsMzA5MDEsMzA4OTAsMzA4OTUsMzA5MjksMzA5MTgsMzA5MjMsMzA5MzIsMzA5MTAsMzA5MDgsMzA5MTcsMzA5MjIsMzA5NTYsMzA5NTEsMzA5MzgsMzA5NzMsMzA5NjQsMzA5ODMs''@;'; put 'put ''MzA5OTQsMzA5OTMsMzEwMDEsMzEwMjAsMzEwMTksMzEwNDAsMzEwNzIsMzEwNjMsMzEwNzEsMzEwNjYsMzEwNjEsMzEwNTksMzEwOTgsMzExMDMsMzExMTQsMzExMzMsMzExNDMsNDA3NzksMzExNDYsMzExNTAsMzExNTUsMzExNjEsMzExNjIsMzExNzcsMzExODksMzEyMDcsMzEyMTIsMzEy''@;'; put 'put ''MDEsMzEyMDMsMzEyNDAsMzEyNDUsMzEyNTYsMzEyNTcsMzEyNjQsMzEyNjMsMzExMDQsMzEyODEsMzEyOTEsMzEyOTQsMzEyODcsMzEyOTksMzEzMTksMzEzMDUsMzEzMjksMzEzMzAsMzEzMzcsNDA4NjEsMzEzNDQsMzEzNTMsMzEzNTcsMzEzNjgsMzEzODMsMzEzODEsMzEzODQsMzEzODIs''@;'; put 'put ''MzE0MDEsMzE0MzIsMzE0MDgsMzE0MTQsMzE0MjksMzE0MjgsMzE0MjMsMzY5OTUsMzE0MzEsMzE0MzQsMzE0MzcsMzE0MzksMzE0NDUsMzE0NDMsMzE0NDksMzE0NTAsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjIsMzE0NjksMzE0NzIsMzE0OTAsMzE1MDMsMzE0OTgsMzE0OTQsMzE1MzksMzE1''@;'; put 'put ''MTIsMzE1MTMsMzE1MTgsMzE1NDEsMzE1MjgsMzE1NDIsMzE1NjgsMzE2MTAsMzE0OTIsMzE1NjUsMzE0OTksMzE1NjQsMzE1NTcsMzE2MDUsMzE1ODksMzE2MDQsMzE1OTEsMzE2MDAsMzE2MDEsMzE1OTYsMzE1OTgsMzE2NDUsMzE2NDAsMzE2NDcsMzE2MjksMzE2NDQsMzE2NDIsMzE2Mjcs''@;'; put 'put ''MzE2MzQsMzE2MzEsMzE1ODEsMzE2NDEsMzE2OTEsMzE2ODEsMzE2OTIsMzE2OTUsMzE2NjgsMzE2ODYsMzE3MDksMzE3MjEsMzE3NjEsMzE3NjQsMzE3MTgsMzE3MTcsMzE4NDAsMzE3NDQsMzE3NTEsMzE3NjMsMzE3MzEsMzE3MzUsMzE3NjcsMzE3NTcsMzE3MzQsMzE3NzksMzE3ODMsMzE3''@;'; put 'put ''ODYsMzE3NzUsMzE3OTksMzE3ODcsMzE4MDUsMzE4MjAsMzE4MTEsMzE4MjgsMzE4MjMsMzE4MDgsMzE4MjQsMzE4MzIsMzE4MzksMzE4NDQsMzE4MzAsMzE4NDUsMzE4NTIsMzE4NjEsMzE4NzUsMzE4ODgsMzE5MDgsMzE5MTcsMzE5MDYsMzE5MTUsMzE5MDUsMzE5MTIsMzE5MjMsMzE5MjIs''@;'; put 'put ''MzE5MjEsMzE5MTgsMzE5MjksMzE5MzMsMzE5MzYsMzE5NDEsMzE5MzgsMzE5NjAsMzE5NTQsMzE5NjQsMzE5NzAsMzk3MzksMzE5ODMsMzE5ODYsMzE5ODgsMzE5OTAsMzE5OTQsMzIwMDYsMzIwMDIsMzIwMjgsMzIwMjEsMzIwMTAsMzIwNjksMzIwNzUsMzIwNDYsMzIwNTAsMzIwNjMsMzIw''@;'; put 'put ''NTMsMzIwNzAsMzIxMTUsMzIwODYsMzIwNzgsMzIxMTQsMzIxMDQsMzIxMTAsMzIwNzksMzIwOTksMzIxNDcsMzIxMzcsMzIwOTEsMzIxNDMsMzIxMjUsMzIxNTUsMzIxODYsMzIxNzQsMzIxNjMsMzIxODEsMzIxOTksMzIxODksMzIxNzEsMzIzMTcsMzIxNjIsMzIxNzUsMzIyMjAsMzIxODQs''@;'; put 'put ''MzIxNTksMzIxNzYsMzIyMTYsMzIyMjEsMzIyMjgsMzIyMjIsMzIyNTEsMzIyNDIsMzIyMjUsMzIyNjEsMzIyNjYsMzIyOTEsMzIyODksMzIyNzQsMzIzMDUsMzIyODcsMzIyNjUsMzIyNjcsMzIyOTAsMzIzMjYsMzIzNTgsMzIzMTUsMzIzMDksMzIzMTMsMzIzMjMsMzIzMTEsMzIzMDYsMzIz''@;'; put 'put ''MTQsMzIzNTksMzIzNDksMzIzNDIsMzIzNTAsMzIzNDUsMzIzNDYsMzIzNzcsMzIzNjIsMzIzNjEsMzIzODAsMzIzNzksMzIzODcsMzIyMTMsMzIzODEsMzY3ODIsMzIzODMsMzIzOTIsMzIzOTMsMzIzOTYsMzI0MDIsMzI0MDAsMzI0MDMsMzI0MDQsMzI0MDYsMzIzOTgsMzI0MTEsMzI0MTIs''@;'; put 'put ''MzI1NjgsMzI1NzAsMzI1ODEsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTIsMzI1OTMsMzI1OTcsMzI1OTYsMzI2MDAsMzI2MDcsMzI2MDgsMzI2MTYsMzI2MTcsMzI2MTUsMzI2MzIsMzI2NDIsMzI2NDYsMzI2NDMsMzI2NDgsMzI2NDcsMzI2NTIsMzI2NjAsMzI2NzAsMzI2NjksMzI2NjYsMzI2''@;'; put 'put ''NzUsMzI2ODcsMzI2OTAsMzI2OTcsMzI2ODYsMzI2OTQsMzI2OTYsMzU2OTcsMzI3MDksMzI3MTAsMzI3MTQsMzI3MjUsMzI3MjQsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTUsMzI3NjEsMzkxMzIsMzI3NzQsMzI3NzIsMzI3NzksMzI3ODYsMzI3OTIsMzI3OTMsMzI3OTYsMzI4MDEsMzI4MDgs''@;'; put 'put ''MzI4MzEsMzI4MjcsMzI4NDIsMzI4MzgsMzI4NTAsMzI4NTYsMzI4NTgsMzI4NjMsMzI4NjYsMzI4NzIsMzI4ODMsMzI4ODIsMzI4ODAsMzI4ODYsMzI4ODksMzI4OTMsMzI4OTUsMzI5MDAsMzI5MDIsMzI5MDEsMzI5MjMsMzI5MTUsMzI5MjIsMzI5NDEsMjA4ODAsMzI5NDAsMzI5ODcsMzI5''@;'; put 'put ''OTcsMzI5ODUsMzI5ODksMzI5NjQsMzI5ODYsMzI5ODIsMzMwMzMsMzMwMDcsMzMwMDksMzMwNTEsMzMwNjUsMzMwNTksMzMwNzEsMzMwOTksMzg1MzksMzMwOTQsMzMwODYsMzMxMDcsMzMxMDUsMzMwMjAsMzMxMzcsMzMxMzQsMzMxMjUsMzMxMjYsMzMxNDAsMzMxNTUsMzMxNjAsMzMxNjIs''@;'; put 'put ''MzMxNTIsMzMxNTQsMzMxODQsMzMxNzMsMzMxODgsMzMxODcsMzMxMTksMzMxNzEsMzMxOTMsMzMyMDAsMzMyMDUsMzMyMTQsMzMyMDgsMzMyMTMsMzMyMTYsMzMyMTgsMzMyMTAsMzMyMjUsMzMyMjksMzMyMzMsMzMyNDEsMzMyNDAsMzMyMjQsMzMyNDIsMzMyNDcsMzMyNDgsMzMyNTUsMzMy''@;'; put 'put ''NzQsMzMyNzUsMzMyNzgsMzMyODEsMzMyODIsMzMyODUsMzMyODcsMzMyOTAsMzMyOTMsMzMyOTYsMzMzMDIsMzMzMjEsMzMzMjMsMzMzMzYsMzMzMzEsMzMzNDQsMzMzNjksMzMzNjgsMzMzNzMsMzMzNzAsMzMzNzUsMzMzODAsMzMzNzgsMzMzODQsMzMzODYsMzMzODcsMzMzMjYsMzMzOTMs''@;'; put 'put ''MzMzOTksMzM0MDAsMzM0MDYsMzM0MjEsMzM0MjYsMzM0NTEsMzM0MzksMzM0NjcsMzM0NTIsMzM1MDUsMzM1MDcsMzM1MDMsMzM0OTAsMzM1MjQsMzM1MjMsMzM1MzAsMzM2ODMsMzM1MzksMzM1MzEsMzM1MjksMzM1MDIsMzM1NDIsMzM1MDAsMzM1NDUsMzM0OTcsMzM1ODksMzM1ODgsMzM1''@;'; put 'put ''NTgsMzM1ODYsMzM1ODUsMzM2MDAsMzM1OTMsMzM2MTYsMzM2MDUsMzM1ODMsMzM1NzksMzM1NTksMzM1NjAsMzM2NjksMzM2OTAsMzM3MDYsMzM2OTUsMzM2OTgsMzM2ODYsMzM1NzEsMzM2NzgsMzM2NzEsMzM2NzQsMzM2NjAsMzM3MTcsMzM2NTEsMzM2NTMsMzM2OTYsMzM2NzMsMzM3MDQs''@;'; put 'put ''MzM3ODAsMzM4MTEsMzM3NzEsMzM3NDIsMzM3ODksMzM3OTUsMzM3NTIsMzM4MDMsMzM3MjksMzM3ODMsMzM3OTksMzM3NjAsMzM3NzgsMzM4MDUsMzM4MjYsMzM4MjQsMzM3MjUsMzM4NDgsMzQwNTQsMzM3ODcsMzM5MDEsMzM4MzQsMzM4NTIsMzQxMzgsMzM5MjQsMzM5MTEsMzM4OTksMzM5''@;'; put 'put ''NjUsMzM5MDIsMzM5MjIsMzM4OTcsMzM4NjIsMzM4MzYsMzM5MDMsMzM5MTMsMzM4NDUsMzM5OTQsMzM4OTAsMzM5NzcsMzM5ODMsMzM5NTEsMzQwMDksMzM5OTcsMzM5NzksMzQwMTAsMzRlMywzMzk4NSwzMzk5MCwzNDAwNiwzMzk1MywzNDA4MSwzNDA0NywzNDAzNiwzNDA3MSwzNDA3Miwz''@;'; put 'put ''NDA5MiwzNDA3OSwzNDA2OSwzNDA2OCwzNDA0NCwzNDExMiwzNDE0NywzNDEzNiwzNDEyMCwzNDExMywzNDMwNiwzNDEyMywzNDEzMywzNDE3NiwzNDIxMiwzNDE4NCwzNDE5MywzNDE4NiwzNDIxNiwzNDE1NywzNDE5NiwzNDIwMywzNDI4MiwzNDE4MywzNDIwNCwzNDE2NywzNDE3NCwzNDE5''@;'; put 'put ''MiwzNDI0OSwzNDIzNCwzNDI1NSwzNDIzMywzNDI1NiwzNDI2MSwzNDI2OSwzNDI3NywzNDI2OCwzNDI5NywzNDMxNCwzNDMyMywzNDMxNSwzNDMwMiwzNDI5OCwzNDMxMCwzNDMzOCwzNDMzMCwzNDM1MiwzNDM2NywzNDM4MSwyMDA1MywzNDM4OCwzNDM5OSwzNDQwNywzNDQxNywzNDQ1MSwz''@;'; put 'put ''NDQ2NywzNDQ3MywzNDQ3NCwzNDQ0MywzNDQ0NCwzNDQ4NiwzNDQ3OSwzNDUwMCwzNDUwMiwzNDQ4MCwzNDUwNSwzNDg1MSwzNDQ3NSwzNDUxNiwzNDUyNiwzNDUzNywzNDU0MCwzNDUyNywzNDUyMywzNDU0MywzNDU3OCwzNDU2NiwzNDU2OCwzNDU2MCwzNDU2MywzNDU1NSwzNDU3NywzNDU2''@;'; put 'put ''OSwzNDU3MywzNDU1MywzNDU3MCwzNDYxMiwzNDYyMywzNDYxNSwzNDYxOSwzNDU5NywzNDYwMSwzNDU4NiwzNDY1NiwzNDY1NSwzNDY4MCwzNDYzNiwzNDYzOCwzNDY3NiwzNDY0NywzNDY2NCwzNDY3MCwzNDY0OSwzNDY0MywzNDY1OSwzNDY2NiwzNDgyMSwzNDcyMiwzNDcxOSwzNDY5MCwz''@;'; put 'put ''NDczNSwzNDc2MywzNDc0OSwzNDc1MiwzNDc2OCwzODYxNCwzNDczMSwzNDc1NiwzNDczOSwzNDc1OSwzNDc1OCwzNDc0NywzNDc5OSwzNDgwMiwzNDc4NCwzNDgzMSwzNDgyOSwzNDgxNCwzNDgwNiwzNDgwNywzNDgzMCwzNDc3MCwzNDgzMywzNDgzOCwzNDgzNywzNDg1MCwzNDg0OSwzNDg2''@;'; put 'put ''NSwzNDg3MCwzNDg3MywzNDg1NSwzNDg3NSwzNDg4NCwzNDg4MiwzNDg5OCwzNDkwNSwzNDkxMCwzNDkxNCwzNDkyMywzNDk0NSwzNDk0MiwzNDk3NCwzNDkzMywzNDk0MSwzNDk5NywzNDkzMCwzNDk0NiwzNDk2NywzNDk2MiwzNDk5MCwzNDk2OSwzNDk3OCwzNDk1NywzNDk4MCwzNDk5Miwz''@;'; put 'put ''NTAwNywzNDk5MywzNTAxMSwzNTAxMiwzNTAyOCwzNTAzMiwzNTAzMywzNTAzNywzNTA2NSwzNTA3NCwzNTA2OCwzNTA2MCwzNTA0OCwzNTA1OCwzNTA3NiwzNTA4NCwzNTA4MiwzNTA5MSwzNTEzOSwzNTEwMiwzNTEwOSwzNTExNCwzNTExNSwzNTEzNywzNTE0MCwzNTEzMSwzNTEyNiwzNTEy''@;'; put 'put ''OCwzNTE0OCwzNTEwMSwzNTE2OCwzNTE2NiwzNTE3NCwzNTE3MiwzNTE4MSwzNTE3OCwzNTE4MywzNTE4OCwzNTE5MSwzNTE5OCwzNTIwMywzNTIwOCwzNTIxMCwzNTIxOSwzNTIyNCwzNTIzMywzNTI0MSwzNTIzOCwzNTI0NCwzNTI0NywzNTI1MCwzNTI1OCwzNTI2MSwzNTI2MywzNTI2NCwz''@;'; put 'put ''NTI5MCwzNTI5MiwzNTI5MywzNTMwMywzNTMxNiwzNTMyMCwzNTMzMSwzNTM1MCwzNTM0NCwzNTM0MCwzNTM1NSwzNTM1NywzNTM2NSwzNTM4MiwzNTM5MywzNTQxOSwzNTQxMCwzNTM5OCwzNTQwMCwzNTQ1MiwzNTQzNywzNTQzNiwzNTQyNiwzNTQ2MSwzNTQ1OCwzNTQ2MCwzNTQ5NiwzNTQ4''@;'; put 'put ''OSwzNTQ3MywzNTQ5MywzNTQ5NCwzNTQ4MiwzNTQ5MSwzNTUyNCwzNTUzMywzNTUyMiwzNTU0NiwzNTU2MywzNTU3MSwzNTU1OSwzNTU1NiwzNTU2OSwzNTYwNCwzNTU1MiwzNTU1NCwzNTU3NSwzNTU1MCwzNTU0NywzNTU5NiwzNTU5MSwzNTYxMCwzNTU1MywzNTYwNiwzNTYwMCwzNTYwNywz''@;'; put 'put ''NTYxNiwzNTYzNSwzODgyNywzNTYyMiwzNTYyNywzNTY0NiwzNTYyNCwzNTY0OSwzNTY2MCwzNTY2MywzNTY2MiwzNTY1NywzNTY3MCwzNTY3NSwzNTY3NCwzNTY5MSwzNTY3OSwzNTY5MiwzNTY5NSwzNTcwMCwzNTcwOSwzNTcxMiwzNTcyNCwzNTcyNiwzNTczMCwzNTczMSwzNTczNCwzNTcz''@;'; put 'put ''NywzNTczOCwzNTg5OCwzNTkwNSwzNTkwMywzNTkxMiwzNTkxNiwzNTkxOCwzNTkyMCwzNTkyNSwzNTkzOCwzNTk0OCwzNTk2MCwzNTk2MiwzNTk3MCwzNTk3NywzNTk3MywzNTk3OCwzNTk4MSwzNTk4MiwzNTk4OCwzNTk2NCwzNTk5MiwyNTExNywzNjAxMywzNjAxMCwzNjAyOSwzNjAxOCwz''@;'; put 'put ''NjAxOSwzNjAxNCwzNjAyMiwzNjA0MCwzNjAzMywzNjA2OCwzNjA2NywzNjA1OCwzNjA5MywzNjA5MCwzNjA5MSwzNjEwMCwzNjEwMSwzNjEwNiwzNjEwMywzNjExMSwzNjEwOSwzNjExMiw0MDc4MiwzNjExNSwzNjA0NSwzNjExNiwzNjExOCwzNjE5OSwzNjIwNSwzNjIwOSwzNjIxMSwzNjIy''@;'; put 'put ''NSwzNjI0OSwzNjI5MCwzNjI4NiwzNjI4MiwzNjMwMywzNjMxNCwzNjMxMCwzNjMwMCwzNjMxNSwzNjI5OSwzNjMzMCwzNjMzMSwzNjMxOSwzNjMyMywzNjM0OCwzNjM2MCwzNjM2MSwzNjM1MSwzNjM4MSwzNjM4MiwzNjM2OCwzNjM4MywzNjQxOCwzNjQwNSwzNjQwMCwzNjQwNCwzNjQyNiwz''@;'; put 'put ''NjQyMywzNjQyNSwzNjQyOCwzNjQzMiwzNjQyNCwzNjQ0MSwzNjQ1MiwzNjQ0OCwzNjM5NCwzNjQ1MSwzNjQzNywzNjQ3MCwzNjQ2NiwzNjQ3NiwzNjQ4MSwzNjQ4NywzNjQ4NSwzNjQ4NCwzNjQ5MSwzNjQ5MCwzNjQ5OSwzNjQ5NywzNjUwMCwzNjUwNSwzNjUyMiwzNjUxMywzNjUyNCwzNjUy''@;'; put 'put ''OCwzNjU1MCwzNjUyOSwzNjU0MiwzNjU0OSwzNjU1MiwzNjU1NSwzNjU3MSwzNjU3OSwzNjYwNCwzNjYwMywzNjU4NywzNjYwNiwzNjYxOCwzNjYxMywzNjYyOSwzNjYyNiwzNjYzMywzNjYyNywzNjYzNiwzNjYzOSwzNjYzNSwzNjYyMCwzNjY0NiwzNjY1OSwzNjY2NywzNjY2NSwzNjY3Nywz''@;'; put 'put ''NjY3NCwzNjY3MCwzNjY4NCwzNjY4MSwzNjY3OCwzNjY4NiwzNjY5NSwzNjcwMCwzNjcwNiwzNjcwNywzNjcwOCwzNjc2NCwzNjc2NywzNjc3MSwzNjc4MSwzNjc4MywzNjc5MSwzNjgyNiwzNjgzNywzNjgzNCwzNjg0MiwzNjg0NywzNjk5OSwzNjg1MiwzNjg2OSwzNjg1NywzNjg1OCwzNjg4''@;'; put 'put ''MSwzNjg4NSwzNjg5NywzNjg3NywzNjg5NCwzNjg4NiwzNjg3NSwzNjkwMywzNjkxOCwzNjkxNywzNjkyMSwzNjg1NiwzNjk0MywzNjk0NCwzNjk0NSwzNjk0NiwzNjg3OCwzNjkzNywzNjkyNiwzNjk1MCwzNjk1MiwzNjk1OCwzNjk2OCwzNjk3NSwzNjk4MiwzODU2OCwzNjk3OCwzNjk5NCwz''@;'; put 'put ''Njk4OSwzNjk5MywzNjk5MiwzNzAwMiwzNzAwMSwzNzAwNywzNzAzMiwzNzAzOSwzNzA0MSwzNzA0NSwzNzA5MCwzNzA5MiwyNTE2MCwzNzA4MywzNzEyMiwzNzEzOCwzNzE0NSwzNzE3MCwzNzE2OCwzNzE5NCwzNzIwNiwzNzIwOCwzNzIxOSwzNzIyMSwzNzIyNSwzNzIzNSwzNzIzNCwzNzI1''@;'; put 'put ''OSwzNzI1NywzNzI1MCwzNzI4MiwzNzI5MSwzNzI5NSwzNzI5MCwzNzMwMSwzNzMwMCwzNzMwNiwzNzMxMiwzNzMxMywzNzMyMSwzNzMyMywzNzMyOCwzNzMzNCwzNzM0MywzNzM0NSwzNzMzOSwzNzM3MiwzNzM2NSwzNzM2NiwzNzQwNiwzNzM3NSwzNzM5NiwzNzQyMCwzNzM5NywzNzM5Mywz''@;'; put 'put ''NzQ3MCwzNzQ2MywzNzQ0NSwzNzQ0OSwzNzQ3NiwzNzQ0OCwzNzUyNSwzNzQzOSwzNzQ1MSwzNzQ1NiwzNzUzMiwzNzUyNiwzNzUyMywzNzUzMSwzNzQ2NiwzNzU4MywzNzU2MSwzNzU1OSwzNzYwOSwzNzY0NywzNzYyNiwzNzcwMCwzNzY3OCwzNzY1NywzNzY2NiwzNzY1OCwzNzY2NywzNzY5''@;'; put 'put ''MCwzNzY4NSwzNzY5MSwzNzcyNCwzNzcyOCwzNzc1NiwzNzc0MiwzNzcxOCwzNzgwOCwzNzgwNCwzNzgwNSwzNzc4MCwzNzgxNywzNzg0NiwzNzg0NywzNzg2NCwzNzg2MSwzNzg0OCwzNzgyNywzNzg1MywzNzg0MCwzNzgzMiwzNzg2MCwzNzkxNCwzNzkwOCwzNzkwNywzNzg5MSwzNzg5NSwz''@;'; put 'put ''NzkwNCwzNzk0MiwzNzkzMSwzNzk0MSwzNzkyMSwzNzk0NiwzNzk1MywzNzk3MCwzNzk1NiwzNzk3OSwzNzk4NCwzNzk4NiwzNzk4MiwzNzk5NCwzNzQxNywzOGUzLDM4MDA1LDM4MDA3LDM4MDEzLDM3OTc4LDM4MDEyLDM4MDE0LDM4MDE3LDM4MDE1LDM4Mjc0LDM4Mjc5LDM4MjgyLDM4Mjky''@;'; put 'put ''LDM4Mjk0LDM4Mjk2LDM4Mjk3LDM4MzA0LDM4MzEyLDM4MzExLDM4MzE3LDM4MzMyLDM4MzMxLDM4MzI5LDM4MzM0LDM4MzQ2LDI4NjYyLDM4MzM5LDM4MzQ5LDM4MzQ4LDM4MzU3LDM4MzU2LDM4MzU4LDM4MzY0LDM4MzY5LDM4MzczLDM4MzcwLDM4NDMzLDM4NDQwLDM4NDQ2LDM4NDQ3LDM4''@;'; put 'put ''NDY2LDM4NDc2LDM4NDc5LDM4NDc1LDM4NTE5LDM4NDkyLDM4NDk0LDM4NDkzLDM4NDk1LDM4NTAyLDM4NTE0LDM4NTA4LDM4NTQxLDM4NTUyLDM4NTQ5LDM4NTUxLDM4NTcwLDM4NTY3LDM4NTc3LDM4NTc4LDM4NTc2LDM4NTgwLDM4NTgyLDM4NTg0LDM4NTg1LDM4NjA2LDM4NjAzLDM4NjAx''@;'; put 'put ''LDM4NjA1LDM1MTQ5LDM4NjIwLDM4NjY5LDM4NjEzLDM4NjQ5LDM4NjYwLDM4NjYyLDM4NjY0LDM4Njc1LDM4NjcwLDM4NjczLDM4NjcxLDM4Njc4LDM4NjgxLDM4NjkyLDM4Njk4LDM4NzA0LDM4NzEzLDM4NzE3LDM4NzE4LDM4NzI0LDM4NzI2LDM4NzI4LDM4NzIyLDM4NzI5LDM4NzQ4LDM4''@;'; put 'put ''NzUyLDM4NzU2LDM4NzU4LDM4NzYwLDIxMjAyLDM4NzYzLDM4NzY5LDM4Nzc3LDM4Nzg5LDM4NzgwLDM4Nzg1LDM4Nzc4LDM4NzkwLDM4Nzk1LDM4Nzk5LDM4ODAwLDM4ODEyLDM4ODI0LDM4ODIyLDM4ODE5LDM4ODM1LDM4ODM2LDM4ODUxLDM4ODU0LDM4ODU2LDM4ODU5LDM4ODc2LDM4ODkz''@;'; put 'put ''LDQwNzgzLDM4ODk4LDMxNDU1LDM4OTAyLDM4OTAxLDM4OTI3LDM4OTI0LDM4OTY4LDM4OTQ4LDM4OTQ1LDM4OTY3LDM4OTczLDM4OTgyLDM4OTkxLDM4OTg3LDM5MDE5LDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI4LDM5MDI3LDM5MDgyLDM5MDg3LDM5MDg5LDM5MDk0LDM5MTA4LDM5MTA3LDM5''@;'; put 'put ''MTEwLDM5MTQ1LDM5MTQ3LDM5MTcxLDM5MTc3LDM5MTg2LDM5MTg4LDM5MTkyLDM5MjAxLDM5MTk3LDM5MTk4LDM5MjA0LDM5MjAwLDM5MjEyLDM5MjE0LDM5MjI5LDM5MjMwLDM5MjM0LDM5MjQxLDM5MjM3LDM5MjQ4LDM5MjQzLDM5MjQ5LDM5MjUwLDM5MjQ0LDM5MjUzLDM5MzE5LDM5MzIw''@;'; put 'put ''LDM5MzMzLDM5MzQxLDM5MzQyLDM5MzU2LDM5MzkxLDM5Mzg3LDM5Mzg5LDM5Mzg0LDM5Mzc3LDM5NDA1LDM5NDA2LDM5NDA5LDM5NDEwLDM5NDE5LDM5NDE2LDM5NDI1LDM5NDM5LDM5NDI5LDM5Mzk0LDM5NDQ5LDM5NDY3LDM5NDc5LDM5NDkzLDM5NDkwLDM5NDg4LDM5NDkxLDM5NDg2LDM5''@;'; put 'put ''NTA5LDM5NTAxLDM5NTE1LDM5NTExLDM5NTE5LDM5NTIyLDM5NTI1LDM5NTI0LDM5NTI5LDM5NTMxLDM5NTMwLDM5NTk3LDM5NjAwLDM5NjEyLDM5NjE2LDM5NjMxLDM5NjMzLDM5NjM1LDM5NjM2LDM5NjQ2LDM5NjQ3LDM5NjUwLDM5NjUxLDM5NjU0LDM5NjYzLDM5NjU5LDM5NjYyLDM5NjY4''@;'; put 'put ''LDM5NjY1LDM5NjcxLDM5Njc1LDM5Njg2LDM5NzA0LDM5NzA2LDM5NzExLDM5NzE0LDM5NzE1LDM5NzE3LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzI2LDM5NzI3LDM5NzMwLDM5NzQ4LDM5NzQ3LDM5NzU5LDM5NzU3LDM5NzU4LDM5NzYxLDM5NzY4LDM5Nzk2LDM5ODI3LDM5ODExLDM5''@;'; put 'put ''ODI1LDM5ODMwLDM5ODMxLDM5ODM5LDM5ODQwLDM5ODQ4LDM5ODYwLDM5ODcyLDM5ODgyLDM5ODY1LDM5ODc4LDM5ODg3LDM5ODg5LDM5ODkwLDM5OTA3LDM5OTA2LDM5OTA4LDM5ODkyLDM5OTA1LDM5OTk0LDM5OTIyLDM5OTIxLDM5OTIwLDM5OTU3LDM5OTU2LDM5OTQ1LDM5OTU1LDM5OTQ4''@;'; put 'put ''LDM5OTQyLDM5OTQ0LDM5OTU0LDM5OTQ2LDM5OTQwLDM5OTgyLDM5OTYzLDM5OTczLDM5OTcyLDM5OTY5LDM5OTg0LDQwMDA3LDM5OTg2LDQwMDA2LDM5OTk4LDQwMDI2LDQwMDMyLDQwMDM5LDQwMDU0LDQwMDU2LDQwMTY3LDQwMTcyLDQwMTc2LDQwMjAxLDQwMjAwLDQwMTcxLDQwMTk1LDQw''@;'; put 'put ''MTk4LDQwMjM0LDQwMjMwLDQwMzY3LDQwMjI3LDQwMjIzLDQwMjYwLDQwMjEzLDQwMjEwLDQwMjU3LDQwMjU1LDQwMjU0LDQwMjYyLDQwMjY0LDQwMjg1LDQwMjg2LDQwMjkyLDQwMjczLDQwMjcyLDQwMjgxLDQwMzA2LDQwMzI5LDQwMzI3LDQwMzYzLDQwMzAzLDQwMzE0LDQwMzQ2LDQwMzU2''@;'; put 'put ''LDQwMzYxLDQwMzcwLDQwMzg4LDQwMzg1LDQwMzc5LDQwMzc2LDQwMzc4LDQwMzkwLDQwMzk5LDQwMzg2LDQwNDA5LDQwNDAzLDQwNDQwLDQwNDIyLDQwNDI5LDQwNDMxLDQwNDQ1LDQwNDc0LDQwNDc1LDQwNDc4LDQwNTY1LDQwNTY5LDQwNTczLDQwNTc3LDQwNTg0LDQwNTg3LDQwNTg4LDQw''@;'; put 'put ''NTk0LDQwNTk3LDQwNTkzLDQwNjA1LDQwNjEzLDQwNjE3LDQwNjMyLDQwNjE4LDQwNjIxLDM4NzUzLDQwNjUyLDQwNjU0LDQwNjU1LDQwNjU2LDQwNjYwLDQwNjY4LDQwNjcwLDQwNjY5LDQwNjcyLDQwNjc3LDQwNjgwLDQwNjg3LDQwNjkyLDQwNjk0LDQwNjk1LDQwNjk3LDQwNjk5LDQwNzAw''@;'; put 'put ''LDQwNzAxLDQwNzExLDQwNzEyLDMwMzkxLDQwNzI1LDQwNzM3LDQwNzQ4LDQwNzY2LDQwNzc4LDQwNzg2LDQwNzg4LDQwODAzLDQwNzk5LDQwODAwLDQwODAxLDQwODA2LDQwODA3LDQwODEyLDQwODEwLDQwODIzLDQwODE4LDQwODIyLDQwODUzLDQwODYwLDQwODY0LDIyNTc1LDI3MDc5LDM2''@;'; put 'put ''OTUzLDI5Nzk2LDIwOTU2LDI5MDgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; 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 ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwy''@;'; put 'put ''MDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQy''@;'; put 'put ''NiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwy''@;'; put 'put ''MzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4''@;'; put 'put ''MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwy''@;'; put 'put ''NjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAx''@;'; put 'put ''NSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4Miwy''@;'; put 'put ''OTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUz''@;'; put 'put ''NCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwz''@;'; put 'put ''MzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4''@;'; put 'put ''NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1Nywz''@;'; put 'put ''NzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkz''@;'; put 'put ''NywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywz''@;'; put 'put ''OTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUx''@;'; put 'put ''LDg1NTIsODU1Myw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsODc1NywzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwy''@;'; put 'put ''MDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1''@;'; put 'put ''NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwy''@;'; put 'put ''MzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2''@;'; put 'put ''NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwy''@;'; put 'put ''NjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1''@;'; put 'put ''OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwy''@;'; put 'put ''ODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2''@;'; put 'put ''NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwz''@;'; put 'put ''MjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3''@;'; put 'put ''NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwz''@;'; put 'put ''NzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5''@;'; put 'put ''NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwz''@;'; put 'put ''OTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGppczAyMTI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDcyOCw3MTEsMTg0LDcyOSw3MzMsMTc1LDczMSw3MzAsNjUzNzQsOTAwLDkwMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTYxLDE2NiwxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE4NiwxNzAsMTY5LDE3NCw4NDgyLDE2NCw4''@;'; put 'put ''NDcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; 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 ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MDIsOTA0LDkwNSw5MDYs''@;'; put 'put ''OTM4LG51bGwsOTA4LG51bGwsOTEwLDkzOSxudWxsLDkxMSxudWxsLG51bGwsbnVsbCxudWxsLDk0MCw5NDEsOTQyLDk0Myw5NzAsOTEyLDk3Miw5NjIsOTczLDk3MSw5NDQsOTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEw''@;'; put 'put ''MzYsMTAzOCwxMDM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExOCwxMTE5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk4LDI3MixudWxsLDI5NCxudWxsLDMwNixudWxsLDMyMSwzMTksbnVsbCwzMzAsMjE2LDMzOCxudWxsLDM1OCwyMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIyLDMyMCwzMjksMzMxLDI0OCwzMzksMjIzLDM1OSwyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCwxOTMsMTkyLDE5NiwxOTQsMjU4LDQ2MSwyNTYsMjYwLDE5NywxOTUsMjYyLDI2NCwyNjgsMTk5LDI2NiwyNzAsMjAxLDIwMCwyMDMsMjAyLDI4MiwyNzgsMjc0LDI4MCxudWxsLDI4NCwyODYsMjkwLDI4OCwyOTIsMjA1LDIwNCwyMDcsMjA2LDQ2MywzMDQsMjk4LDMwMiwy''@;'; put 'put ''OTYsMzA4LDMxMCwzMTMsMzE3LDMxNSwzMjMsMzI3LDMyNSwyMDksMjExLDIxMCwyMTQsMjEyLDQ2NSwzMzYsMzMyLDIxMywzNDAsMzQ0LDM0MiwzNDYsMzQ4LDM1MiwzNTAsMzU2LDM1NCwyMTgsMjE3LDIyMCwyMTksMzY0LDQ2NywzNjgsMzYyLDM3MCwzNjYsMzYwLDQ3MSw0NzUsNDczLDQ2''@;'; put 'put ''OSwzNzIsMjIxLDM3NiwzNzQsMzc3LDM4MSwzNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMjUsMjI0LDIyOCwyMjYsMjU5LDQ2MiwyNTcsMjYxLDIyOSwyMjcsMjYzLDI2NSwyNjksMjMxLDI2NywyNzEsMjMzLDIzMiwyMzUsMjM0LDI4MywyNzksMjc1LDI4MSw1MDEs''@;'; put 'put ''Mjg1LDI4NyxudWxsLDI4OSwyOTMsMjM3LDIzNiwyMzksMjM4LDQ2NCxudWxsLDI5OSwzMDMsMjk3LDMwOSwzMTEsMzE0LDMxOCwzMTYsMzI0LDMyOCwzMjYsMjQxLDI0MywyNDIsMjQ2LDI0NCw0NjYsMzM3LDMzMywyNDUsMzQxLDM0NSwzNDMsMzQ3LDM0OSwzNTMsMzUxLDM1NywzNTUsMjUw''@;'; put 'put ''LDI0OSwyNTIsMjUxLDM2NSw0NjgsMzY5LDM2MywzNzEsMzY3LDM2MSw0NzIsNDc2LDQ3NCw0NzAsMzczLDI1MywyNTUsMzc1LDM3OCwzODIsMzgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; 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 ''bnVsbCxudWxsLG51bGwsbnVsbCwxOTk3MCwxOTk3MiwxOTk3MywxOTk4MCwxOTk4NiwxOTk5OSwyMDAwMywyMDAwNCwyMDAwOCwyMDAxMSwyMDAxNCwyMDAxNSwyMDAxNiwyMDAyMSwyMDAzMiwyMDAzMywyMDAzNiwyMDAzOSwyMDA0OSwyMDA1OCwyMDA2MCwyMDA2NywyMDA3MiwyMDA3Mywy''@;'; put 'put ''MDA4NCwyMDA4NSwyMDA4OSwyMDA5NSwyMDEwOSwyMDExOCwyMDExOSwyMDEyNSwyMDE0MywyMDE1MywyMDE2MywyMDE3NiwyMDE4NiwyMDE4NywyMDE5MiwyMDE5MywyMDE5NCwyMDIwMCwyMDIwNywyMDIwOSwyMDIxMSwyMDIxMywyMDIyMSwyMDIyMiwyMDIyMywyMDIyNCwyMDIyNiwyMDIy''@;'; put 'put ''NywyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0NSwyMDI0NiwyMDI0NywyMDI0OSwyMDI3MCwyMDI3MywyMDMyMCwyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4OCwyMDI5MCwyMDI5NiwyMDI5NywyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMxMiwy''@;'; put 'put ''MDMxOSwyMDMyMywyMDMzMCwyMDMzMiwyMDMzNCwyMDMzNywyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MCwyMDM1MywyMDM1NCwyMDM1NiwyMDM1NywyMDM2MSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MiwyMDM3NSwyMDM3NywyMDM3OCwyMDM4''@;'; put 'put ''MiwyMDM4MywyMDQwMiwyMDQwNywyMDQwOSwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQyMSwyMDQyMiwyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzMSwyMDQzNCwyMDQ0NCwyMDQ0OCwyMDQ1MCwyMDQ2NCwyMDQ2NiwyMDQ3NiwyMDQ3NywyMDQ3OSwy''@;'; put 'put ''MDQ4MCwyMDQ4MSwyMDQ4NCwyMDQ4NywyMDQ5MCwyMDQ5MiwyMDQ5NCwyMDQ5NiwyMDQ5OSwyMDUwMywyMDUwNCwyMDUwNywyMDUwOCwyMDUwOSwyMDUxMCwyMDUxNCwyMDUxOSwyMDUyNiwyMDUyOCwyMDUzMCwyMDUzMSwyMDUzMywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OSwyMDU1MCwyMDU1''@;'; put 'put ''NCwyMDU1NiwyMDU1OCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NywyMDU2OSwyMDU3NSwyMDU3NiwyMDU3OCwyMDU3OSwyMDU4MiwyMDU4MywyMDU4NiwyMDU4OSwyMDU5MiwyMDU5MywyMDUzOSwyMDYwOSwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxOCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNiwy''@;'; put 'put ''MDYyNywyMDYyOCwyMDYzMCwyMDYzNSwyMDYzNiwyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY1MCwyMDY1NSwyMDY1NiwyMDY2NSwyMDY2NiwyMDY2OSwyMDY3MiwyMDY3NSwyMDY3NiwyMDY3OSwyMDY4NCwyMDY4NiwyMDY4OCwyMDY5MSwyMDY5MiwyMDY5NiwyMDcwMCwyMDcw''@;'; put 'put ''MSwyMDcwMywyMDcwNiwyMDcwOCwyMDcxMCwyMDcxMiwyMDcxMywyMDcxOSwyMDcyMSwyMDcyNiwyMDczMCwyMDczNCwyMDczOSwyMDc0MiwyMDc0MywyMDc0NCwyMDc0NywyMDc0OCwyMDc0OSwyMDc1MCwyMDcyMiwyMDc1MiwyMDc1OSwyMDc2MSwyMDc2MywyMDc2NCwyMDc2NSwyMDc2Niwy''@;'; put 'put ''MDc3MSwyMDc3NSwyMDc3NiwyMDc4MCwyMDc4MSwyMDc4MywyMDc4NSwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MiwyMDc5MywyMDgwMiwyMDgxMCwyMDgxNSwyMDgxOSwyMDgyMSwyMDgyMywyMDgyNCwyMDgzMSwyMDgzNiwyMDgzOCwyMDg2MiwyMDg2NywyMDg2OCwyMDg3NSwyMDg3OCwyMDg4''@;'; put 'put ''OCwyMDg5MywyMDg5NywyMDg5OSwyMDkwOSwyMDkyMCwyMDkyMiwyMDkyNCwyMDkyNiwyMDkyNywyMDkzMCwyMDkzNiwyMDk0MywyMDk0NSwyMDk0NiwyMDk0NywyMDk0OSwyMDk1MiwyMDk1OCwyMDk2MiwyMDk2NSwyMDk3NCwyMDk3OCwyMDk3OSwyMDk4MCwyMDk4MywyMDk5MywyMDk5NCwy''@;'; put 'put ''MDk5NywyMTAxMCwyMTAxMSwyMTAxMywyMTAxNCwyMTAxNiwyMTAyNiwyMTAzMiwyMTA0MSwyMTA0MiwyMTA0NSwyMTA1MiwyMTA2MSwyMTA2NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MiwyMTA4NCwyMTA4NywyMTA4OCwyMTA4OSwyMTA5NCwyMTEwMiwyMTExMSwyMTExMiwyMTExMywyMTEy''@;'; put 'put ''MCwyMTEyMiwyMTEyNSwyMTEzMCwyMTEzMiwyMTEzOSwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NywyMTE2OCwyMTE3NCwyMTE3NSwyMTE3NiwyMTE3OCwyMTE3OSwyMTE4MSwyMTE4NCwyMTE4OCwyMTE5MCwyMTE5Miwy''@;'; put 'put ''MTE5NiwyMTE5OSwyMTIwMSwyMTIwNCwyMTIwNiwyMTIxMSwyMTIxMiwyMTIxNywyMTIyMSwyMTIyNCwyMTIyNSwyMTIyNiwyMTIyOCwyMTIzMiwyMTIzMywyMTIzNiwyMTIzOCwyMTIzOSwyMTI0OCwyMTI1MSwyMTI1OCwyMTI1OSwyMTI2MCwyMTI2NSwyMTI2NywyMTI3MiwyMTI3NSwyMTI3''@;'; put 'put ''NiwyMTI3OCwyMTI3OSwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NiwyMTI5OCwyMTMwMSwyMTMwOCwyMTMwOSwyMTMxMCwyMTMxNCwyMTMyNCwyMTMyMywyMTMzNywyMTMzOSwyMTM0NSwyMTM0NywyMTM0OSwyMTM1NiwyMTM1NywyMTM2MiwyMTM2OSwy''@;'; put 'put ''MTM3NCwyMTM3OSwyMTM4MywyMTM4NCwyMTM5MCwyMTM5NSwyMTM5NiwyMTQwMSwyMTQwNSwyMTQwOSwyMTQxMiwyMTQxOCwyMTQxOSwyMTQyMywyMTQyNiwyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzNCwyMTQzNywyMTQ0MCwyMTQ0NSwyMTQ1NSwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2''@;'; put 'put ''NiwyMTQ2OSwyMTQ3MCwyMTQ3MiwyMTQ3OCwyMTQ3OSwyMTQ5MywyMTUwNiwyMTUyMywyMTUzMCwyMTUzNywyMTU0MywyMTU0NCwyMTU0NiwyMTU1MSwyMTU1MywyMTU1NiwyMTU1NywyMTU3MSwyMTU3MiwyMTU3NSwyMTU4MSwyMTU4MywyMTU5OCwyMTYwMiwyMTYwNCwyMTYwNiwyMTYwNywy''@;'; put 'put ''MTYwOSwyMTYxMSwyMTYxMywyMTYxNCwyMTYyMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTY0MCwyMTY0MSwyMTY0NSwyMTY0OSwyMTY1MywyMTY1NCwyMTY2MCwyMTY2MywyMTY2NSwyMTY3MCwyMTY3MSwyMTY3MywyMTY3NCwyMTY3NywyMTY3OCwyMTY4MSwyMTY4NywyMTY4OSwyMTY5''@;'; put 'put ''MCwyMTY5MSwyMTY5NSwyMTcwMiwyMTcwNiwyMTcwOSwyMTcxMCwyMTcyOCwyMTczOCwyMTc0MCwyMTc0MywyMTc1MCwyMTc1NiwyMTc1OCwyMTc1OSwyMTc2MCwyMTc2MSwyMTc2NSwyMTc2OCwyMTc2OSwyMTc3MiwyMTc3MywyMTc3NCwyMTc4MSwyMTgwMiwyMTgwMywyMTgxMCwyMTgxMywy''@;'; put 'put ''MTgxNCwyMTgxOSwyMTgyMCwyMTgyMSwyMTgyNSwyMTgzMSwyMTgzMywyMTgzNCwyMTgzNywyMTg0MCwyMTg0MSwyMTg0OCwyMTg1MCwyMTg1MSwyMTg1NCwyMTg1NiwyMTg1NywyMTg2MCwyMTg2MiwyMTg4NywyMTg4OSwyMTg5MCwyMTg5NCwyMTg5NiwyMTkwMiwyMTkwMywyMTkwNSwyMTkw''@;'; put 'put ''NiwyMTkwNywyMTkwOCwyMTkxMSwyMTkyMywyMTkyNCwyMTkzMywyMTkzOCwyMTk1MSwyMTk1MywyMTk1NSwyMTk1OCwyMTk2MSwyMTk2MywyMTk2NCwyMTk2NiwyMTk2OSwyMTk3MCwyMTk3MSwyMTk3NSwyMTk3NiwyMTk3OSwyMTk4MiwyMTk4NiwyMTk5MywyMjAwNiwyMjAxNSwyMjAyMSwy''@;'; put 'put ''MjAyNCwyMjAyNiwyMjAyOSwyMjAzMCwyMjAzMSwyMjAzMiwyMjAzMywyMjAzNCwyMjA0MSwyMjA2MCwyMjA2NCwyMjA2NywyMjA2OSwyMjA3MSwyMjA3MywyMjA3NSwyMjA3NiwyMjA3NywyMjA3OSwyMjA4MCwyMjA4MSwyMjA4MywyMjA4NCwyMjA4NiwyMjA4OSwyMjA5MSwyMjA5MywyMjA5''@;'; put 'put ''NSwyMjEwMCwyMjExMCwyMjExMiwyMjExMywyMjExNCwyMjExNSwyMjExOCwyMjEyMSwyMjEyNSwyMjEyNywyMjEyOSwyMjEzMCwyMjEzMywyMjE0OCwyMjE0OSwyMjE1MiwyMjE1NSwyMjE1NiwyMjE2NSwyMjE2OSwyMjE3MCwyMjE3MywyMjE3NCwyMjE3NSwyMjE4MiwyMjE4MywyMjE4NCwy''@;'; put 'put ''MjE4NSwyMjE4NywyMjE4OCwyMjE4OSwyMjE5MywyMjE5NSwyMjE5OSwyMjIwNiwyMjIxMywyMjIxNywyMjIxOCwyMjIxOSwyMjIyMywyMjIyNCwyMjIyMCwyMjIyMSwyMjIzMywyMjIzNiwyMjIzNywyMjIzOSwyMjI0MSwyMjI0NCwyMjI0NSwyMjI0NiwyMjI0NywyMjI0OCwyMjI1NywyMjI1''@;'; put 'put ''MSwyMjI1MywyMjI2MiwyMjI2MywyMjI3MywyMjI3NCwyMjI3OSwyMjI4MiwyMjI4NCwyMjI4OSwyMjI5MywyMjI5OCwyMjI5OSwyMjMwMSwyMjMwNCwyMjMwNiwyMjMwNywyMjMwOCwyMjMwOSwyMjMxMywyMjMxNCwyMjMxNiwyMjMxOCwyMjMxOSwyMjMyMywyMjMyNCwyMjMzMywyMjMzNCwy''@;'; put 'put ''MjMzNSwyMjM0MSwyMjM0MiwyMjM0OCwyMjM0OSwyMjM1NCwyMjM3MCwyMjM3MywyMjM3NSwyMjM3NiwyMjM3OSwyMjM4MSwyMjM4MiwyMjM4MywyMjM4NCwyMjM4NSwyMjM4NywyMjM4OCwyMjM4OSwyMjM5MSwyMjM5MywyMjM5NCwyMjM5NSwyMjM5NiwyMjM5OCwyMjQwMSwyMjQwMywyMjQx''@;'; put 'put ''MiwyMjQyMCwyMjQyMywyMjQyNSwyMjQyNiwyMjQyOCwyMjQyOSwyMjQzMCwyMjQzMSwyMjQzMywyMjQyMSwyMjQzOSwyMjQ0MCwyMjQ0MSwyMjQ0NCwyMjQ1NiwyMjQ2MSwyMjQ3MSwyMjQ3MiwyMjQ3NiwyMjQ3OSwyMjQ4NSwyMjQ5MywyMjQ5NCwyMjUwMCwyMjUwMiwyMjUwMywyMjUwNSwy''@;'; put 'put ''MjUwOSwyMjUxMiwyMjUxNywyMjUxOCwyMjUyMCwyMjUyNSwyMjUyNiwyMjUyNywyMjUzMSwyMjUzMiwyMjUzNiwyMjUzNywyMjQ5NywyMjU0MCwyMjU0MSwyMjU1NSwyMjU1OCwyMjU1OSwyMjU2MCwyMjU2NiwyMjU2NywyMjU3MywyMjU3OCwyMjU4NSwyMjU5MSwyMjYwMSwyMjYwNCwyMjYw''@;'; put 'put ''NSwyMjYwNywyMjYwOCwyMjYxMywyMjYyMywyMjYyNSwyMjYyOCwyMjYzMSwyMjYzMiwyMjY0OCwyMjY1MiwyMjY1NSwyMjY1NiwyMjY1NywyMjY2MywyMjY2NCwyMjY2NSwyMjY2NiwyMjY2OCwyMjY2OSwyMjY3MSwyMjY3MiwyMjY3NiwyMjY3OCwyMjY4NSwyMjY4OCwyMjY4OSwyMjY5MCwy''@;'; put 'put ''MjY5NCwyMjY5NywyMjcwNSwyMjcwNiwyMjcyNCwyMjcxNiwyMjcyMiwyMjcyOCwyMjczMywyMjczNCwyMjczNiwyMjczOCwyMjc0MCwyMjc0MiwyMjc0NiwyMjc0OSwyMjc1MywyMjc1NCwyMjc2MSwyMjc3MSwyMjc4OSwyMjc5MCwyMjc5NSwyMjc5NiwyMjgwMiwyMjgwMywyMjgwNCwzNDM2''@;'; put 'put ''OSwyMjgxMywyMjgxNywyMjgxOSwyMjgyMCwyMjgyNCwyMjgzMSwyMjgzMiwyMjgzNSwyMjgzNywyMjgzOCwyMjg0NywyMjg1MSwyMjg1NCwyMjg2NiwyMjg2NywyMjg3MywyMjg3NSwyMjg3NywyMjg3OCwyMjg3OSwyMjg4MSwyMjg4MywyMjg5MSwyMjg5MywyMjg5NSwyMjg5OCwyMjkwMSwy''@;'; put 'put ''MjkwMiwyMjkwNSwyMjkwNywyMjkwOCwyMjkyMywyMjkyNCwyMjkyNiwyMjkzMCwyMjkzMywyMjkzNSwyMjk0MywyMjk0OCwyMjk1MSwyMjk1NywyMjk1OCwyMjk1OSwyMjk2MCwyMjk2MywyMjk2NywyMjk3MCwyMjk3MiwyMjk3NywyMjk3OSwyMjk4MCwyMjk4NCwyMjk4NiwyMjk4OSwyMjk5''@;'; put 'put ''NCwyMzAwNSwyMzAwNiwyMzAwNywyMzAxMSwyMzAxMiwyMzAxNSwyMzAyMiwyMzAyMywyMzAyNSwyMzAyNiwyMzAyOCwyMzAzMSwyMzA0MCwyMzA0NCwyMzA1MiwyMzA1MywyMzA1NCwyMzA1OCwyMzA1OSwyMzA3MCwyMzA3NSwyMzA3NiwyMzA3OSwyMzA4MCwyMzA4MiwyMzA4NSwyMzA4OCwy''@;'; put 'put ''MzEwOCwyMzEwOSwyMzExMSwyMzExMiwyMzExNiwyMzEyMCwyMzEyNSwyMzEzNCwyMzEzOSwyMzE0MSwyMzE0MywyMzE0OSwyMzE1OSwyMzE2MiwyMzE2MywyMzE2NiwyMzE3OSwyMzE4NCwyMzE4NywyMzE5MCwyMzE5MywyMzE5NiwyMzE5OCwyMzE5OSwyMzIwMCwyMzIwMiwyMzIwNywyMzIx''@;'; put 'put ''MiwyMzIxNywyMzIxOCwyMzIxOSwyMzIyMSwyMzIyNCwyMzIyNiwyMzIyNywyMzIzMSwyMzIzNiwyMzIzOCwyMzI0MCwyMzI0NywyMzI1OCwyMzI2MCwyMzI2NCwyMzI2OSwyMzI3NCwyMzI3OCwyMzI4NSwyMzI4NiwyMzI5MywyMzI5NiwyMzI5NywyMzMwNCwyMzMxOSwyMzM0OCwyMzMyMSwy''@;'; put 'put ''MzMyMywyMzMyNSwyMzMyOSwyMzMzMywyMzM0MSwyMzM1MiwyMzM2MSwyMzM3MSwyMzM3MiwyMzM3OCwyMzM4MiwyMzM5MCwyMzQwMCwyMzQwNiwyMzQwNywyMzQyMCwyMzQyMSwyMzQyMiwyMzQyMywyMzQyNSwyMzQyOCwyMzQzMCwyMzQzNCwyMzQzOCwyMzQ0MCwyMzQ0MSwyMzQ0MywyMzQ0''@;'; put 'put ''NCwyMzQ0NiwyMzQ2NCwyMzQ2NSwyMzQ2OCwyMzQ2OSwyMzQ3MSwyMzQ3MywyMzQ3NCwyMzQ3OSwyMzQ4MiwyMzQ4NCwyMzQ4OCwyMzQ4OSwyMzUwMSwyMzUwMywyMzUxMCwyMzUxMSwyMzUxMiwyMzUxMywyMzUxNCwyMzUyMCwyMzUzNSwyMzUzNywyMzU0MCwyMzU0OSwyMzU2NCwyMzU3NSwy''@;'; put 'put ''MzU4MiwyMzU4MywyMzU4NywyMzU5MCwyMzU5MywyMzU5NSwyMzU5NiwyMzU5OCwyMzYwMCwyMzYwMiwyMzYwNSwyMzYwNiwyMzY0MSwyMzY0MiwyMzY0NCwyMzY1MCwyMzY1MSwyMzY1NSwyMzY1NiwyMzY1NywyMzY2MSwyMzY2NCwyMzY2OCwyMzY2OSwyMzY3NCwyMzY3NSwyMzY3NiwyMzY3''@;'; put 'put ''NywyMzY4NywyMzY4OCwyMzY5MCwyMzY5NSwyMzY5OCwyMzcwOSwyMzcxMSwyMzcxMiwyMzcxNCwyMzcxNSwyMzcxOCwyMzcyMiwyMzczMCwyMzczMiwyMzczMywyMzczOCwyMzc1MywyMzc1NSwyMzc2MiwyMzc3MywyMzc2NywyMzc5MCwyMzc5MywyMzc5NCwyMzc5NiwyMzgwOSwyMzgxNCwy''@;'; put 'put ''MzgyMSwyMzgyNiwyMzg1MSwyMzg0MywyMzg0NCwyMzg0NiwyMzg0NywyMzg1NywyMzg2MCwyMzg2NSwyMzg2OSwyMzg3MSwyMzg3NCwyMzg3NSwyMzg3OCwyMzg4MCwyMzg5MywyMzg4OSwyMzg5NywyMzg4MiwyMzkwMywyMzkwNCwyMzkwNSwyMzkwNiwyMzkwOCwyMzkxNCwyMzkxNywyMzky''@;'; put 'put ''MCwyMzkyOSwyMzkzMCwyMzkzNCwyMzkzNSwyMzkzNywyMzkzOSwyMzk0NCwyMzk0NiwyMzk1NCwyMzk1NSwyMzk1NiwyMzk1NywyMzk2MSwyMzk2MywyMzk2NywyMzk2OCwyMzk3NSwyMzk3OSwyMzk4NCwyMzk4OCwyMzk5MiwyMzk5MywyNDAwMywyNDAwNywyNDAxMSwyNDAxNiwyNDAxNCwy''@;'; put 'put ''NDAyNCwyNDAyNSwyNDAzMiwyNDAzNiwyNDA0MSwyNDA1NiwyNDA1NywyNDA2NCwyNDA3MSwyNDA3NywyNDA4MiwyNDA4NCwyNDA4NSwyNDA4OCwyNDA5NSwyNDA5NiwyNDExMCwyNDEwNCwyNDExNCwyNDExNywyNDEyNiwyNDEzOSwyNDE0NCwyNDEzNywyNDE0NSwyNDE1MCwyNDE1MiwyNDE1''@;'; put 'put ''NSwyNDE1NiwyNDE1OCwyNDE2OCwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NiwyNDE5MiwyNDIwMywyNDIwNiwyNDIyNiwyNDIyOCwyNDIyOSwyNDIzMiwyNDIzNCwyNDIzNiwyNDI0MSwyNDI0MywyNDI1MywyNDI1NCwyNDI1NSwyNDI2MiwyNDI2OCwyNDI2NywyNDI3MCwy''@;'; put 'put ''NDI3MywyNDI3NCwyNDI3NiwyNDI3NywyNDI4NCwyNDI4NiwyNDI5MywyNDI5OSwyNDMyMiwyNDMyNiwyNDMyNywyNDMyOCwyNDMzNCwyNDM0NSwyNDM0OCwyNDM0OSwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MiwyNDM3NCwyNDM3''@;'; put 'put ''OSwyNDM4MSwyNDM4MywyNDM4NCwyNDM4OCwyNDM4OSwyNDM5MSwyNDM5NywyNDQwMCwyNDQwNCwyNDQwOCwyNDQxMSwyNDQxNiwyNDQxOSwyNDQyMCwyNDQyMywyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ1NywyNDQ2MSwyNDQ2MywyNDQ3MCwy''@;'; put 'put ''NDQ3NiwyNDQ3NywyNDQ4MiwyNDQ4NywyNDQ5MSwyNDQ4NCwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDUwNCwyNDUxNiwyNDUxOSwyNDUyMCwyNDUyMSwyNDUyMywyNDUyOCwyNDUyOSwyNDUzMCwyNDUzMSwyNDUzMiwyNDU0MiwyNDU0NSwyNDU0NiwyNDU1MiwyNDU1MywyNDU1NCwyNDU1''@;'; put 'put ''NiwyNDU1NywyNDU1OCwyNDU1OSwyNDU2MiwyNDU2MywyNDU2NiwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NiwyNDU4OSwyNDU5NSwyNDU5NiwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNywyNDYxMiwyNDYyMSwyNDYyNywyNDYyOSwyNDY0MCwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MiwyNDY1Nywy''@;'; put 'put ''NDY2MCwyNDY2MiwyNDY2MywyNDY2OSwyNDY3MywyNDY3OSwyNDY4OSwyNDcwMiwyNDcwMywyNDcwNiwyNDcxMCwyNDcxMiwyNDcxNCwyNDcxOCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyOCwyNDczMywyNDczNCwyNDczOCwyNDc0MCwyNDc0MSwyNDc0NCwyNDc1MiwyNDc1MywyNDc1OSwyNDc2''@;'; put 'put ''MywyNDc2NiwyNDc3MCwyNDc3MiwyNDc3NiwyNDc3NywyNDc3OCwyNDc3OSwyNDc4MiwyNDc4MywyNDc4OCwyNDc4OSwyNDc5MywyNDc5NSwyNDc5NywyNDc5OCwyNDgwMiwyNDgwNSwyNDgxOCwyNDgyMSwyNDgyNCwyNDgyOCwyNDgyOSwyNDgzNCwyNDgzOSwyNDg0MiwyNDg0NCwyNDg0OCwy''@;'; put 'put ''NDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NywyNDg2MCwyNDg2MiwyNDg2NiwyNDg3NCwyNDg3NSwyNDg4MCwyNDg4MSwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OSwyNDg5NywyNDkwMSwyNDkwMiwyNDkwNSwyNDkyNiwyNDkyOCwyNDk0MCwyNDk0NiwyNDk1MiwyNDk1''@;'; put 'put ''NSwyNDk1NiwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MywyNDk2NCwyNDk3MSwyNDk3MywyNDk3OCwyNDk3OSwyNDk4MywyNDk4NCwyNDk4OCwyNDk4OSwyNDk5MSwyNDk5MiwyNDk5NywyNWUzLDI1MDAyLDI1MDA1LDI1MDE2LDI1MDE3LDI1MDIwLDI1MDI0LDI1MDI1LDI1MDI2LDI1MDM4LDI1''@;'; put 'put ''MDM5LDI1MDQ1LDI1MDUyLDI1MDUzLDI1MDU0LDI1MDU1LDI1MDU3LDI1MDU4LDI1MDYzLDI1MDY1LDI1MDYxLDI1MDY4LDI1MDY5LDI1MDcxLDI1MDg5LDI1MDkxLDI1MDkyLDI1MDk1LDI1MTA3LDI1MTA5LDI1MTE2LDI1MTIwLDI1MTIyLDI1MTIzLDI1MTI3LDI1MTI5LDI1MTMxLDI1MTQ1''@;'; put 'put ''LDI1MTQ5LDI1MTU0LDI1MTU1LDI1MTU2LDI1MTU4LDI1MTY0LDI1MTY4LDI1MTY5LDI1MTcwLDI1MTcyLDI1MTc0LDI1MTc4LDI1MTgwLDI1MTg4LDI1MTk3LDI1MTk5LDI1MjAzLDI1MjEwLDI1MjEzLDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjU0LDI1MjU2LDI1MjY3LDI1MjcwLDI1''@;'; put 'put ''MjcxLDI1Mjc0LDI1Mjc4LDI1Mjc5LDI1Mjg0LDI1Mjk0LDI1MzAxLDI1MzAyLDI1MzA2LDI1MzIyLDI1MzMwLDI1MzMyLDI1MzQwLDI1MzQxLDI1MzQ3LDI1MzQ4LDI1MzU0LDI1MzU1LDI1MzU3LDI1MzYwLDI1MzYzLDI1MzY2LDI1MzY4LDI1Mzg1LDI1Mzg2LDI1Mzg5LDI1Mzk3LDI1Mzk4''@;'; put 'put ''LDI1NDAxLDI1NDA0LDI1NDA5LDI1NDEwLDI1NDExLDI1NDEyLDI1NDE0LDI1NDE4LDI1NDE5LDI1NDIyLDI1NDI2LDI1NDI3LDI1NDI4LDI1NDMyLDI1NDM1LDI1NDQ1LDI1NDQ2LDI1NDUyLDI1NDUzLDI1NDU3LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY4LDI1NDY5LDI1NDcxLDI1NDc0LDI1''@;'; put 'put ''NDc2LDI1NDc5LDI1NDgyLDI1NDg4LDI1NDkyLDI1NDkzLDI1NDk3LDI1NDk4LDI1NTAyLDI1NTA4LDI1NTEwLDI1NTE3LDI1NTE4LDI1NTE5LDI1NTMzLDI1NTM3LDI1NTQxLDI1NTQ0LDI1NTUwLDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTY0LDI1NTY4LDI1NTczLDI1NTc4LDI1NTgw''@;'; put 'put ''LDI1NTg2LDI1NTg3LDI1NTg5LDI1NTkyLDI1NTkzLDI1NjA5LDI1NjEwLDI1NjE2LDI1NjE4LDI1NjIwLDI1NjI0LDI1NjMwLDI1NjMyLDI1NjM0LDI1NjM2LDI1NjM3LDI1NjQxLDI1NjQyLDI1NjQ3LDI1NjQ4LDI1NjUzLDI1NjYxLDI1NjYzLDI1Njc1LDI1Njc5LDI1NjgxLDI1NjgyLDI1''@;'; put 'put ''NjgzLDI1Njg0LDI1NjkwLDI1NjkxLDI1NjkyLDI1NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk5LDI1NzA5LDI1NzE1LDI1NzE2LDI1NzIzLDI1NzI1LDI1NzMzLDI1NzM1LDI1NzQzLDI1NzQ0LDI1NzQ1LDI1NzUyLDI1NzUzLDI1NzU1LDI1NzU3LDI1NzU5LDI1NzYxLDI1NzYzLDI1NzY2''@;'; put 'put ''LDI1NzY4LDI1NzcyLDI1Nzc5LDI1Nzg5LDI1NzkwLDI1NzkxLDI1Nzk2LDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0LDI1ODA2LDI1ODA4LDI1ODA5LDI1ODEzLDI1ODE1LDI1ODI4LDI1ODI5LDI1ODMzLDI1ODM0LDI1ODM3LDI1ODQwLDI1ODQ1LDI1ODQ3LDI1ODUxLDI1ODU1LDI1ODU3LDI1''@;'; put 'put ''ODYwLDI1ODY0LDI1ODY1LDI1ODY2LDI1ODcxLDI1ODc1LDI1ODc2LDI1ODc4LDI1ODgxLDI1ODgzLDI1ODg2LDI1ODg3LDI1ODkwLDI1ODk0LDI1ODk3LDI1OTAyLDI1OTA1LDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIzLDI1OTI3LDI1OTI5LDI1OTM2LDI1OTM4LDI1OTQwLDI1OTUxLDI1OTUy''@;'; put 'put ''LDI1OTU5LDI1OTYzLDI1OTc4LDI1OTgxLDI1OTg1LDI1OTg5LDI1OTk0LDI2MDAyLDI2MDA1LDI2MDA4LDI2MDEzLDI2MDE2LDI2MDE5LDI2MDIyLDI2MDMwLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDQ3LDI2MDUwLDI2MDU2LDI2MDU3LDI2MDYyLDI2MDY0LDI2MDY4LDI2MDcwLDI2MDcyLDI2''@;'; put 'put ''MDc5LDI2MDk2LDI2MDk4LDI2MTAwLDI2MTAxLDI2MTA1LDI2MTEwLDI2MTExLDI2MTEyLDI2MTE2LDI2MTIwLDI2MTIxLDI2MTI1LDI2MTI5LDI2MTMwLDI2MTMzLDI2MTM0LDI2MTQxLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2''@;'; put 'put ''LDI2MTU4LDI2MTYwLDI2MTYxLDI2MTYzLDI2MTY5LDI2MTY3LDI2MTc2LDI2MTgxLDI2MTgyLDI2MTg2LDI2MTg4LDI2MTkzLDI2MTkwLDI2MTk5LDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA4LDI2MjA5LDI2MzYzLDI2MjE4LDI2MjE5LDI2MjIwLDI2MjM4LDI2MjI3LDI2MjI5LDI2''@;'; put 'put ''MjM5LDI2MjMxLDI2MjMyLDI2MjMzLDI2MjM1LDI2MjQwLDI2MjM2LDI2MjUxLDI2MjUyLDI2MjUzLDI2MjU2LDI2MjU4LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcxLDI2MjcyLDI2Mjc2LDI2Mjg1LDI2Mjg5LDI2MjkwLDI2MjkzLDI2Mjk5LDI2MzAzLDI2MzA0LDI2MzA2LDI2MzA3''@;'; put 'put ''LDI2MzEyLDI2MzE2LDI2MzE4LDI2MzE5LDI2MzI0LDI2MzMxLDI2MzM1LDI2MzQ0LDI2MzQ3LDI2MzQ4LDI2MzUwLDI2MzYyLDI2MzczLDI2Mzc1LDI2MzgyLDI2Mzg3LDI2MzkzLDI2Mzk2LDI2NDAwLDI2NDAyLDI2NDE5LDI2NDMwLDI2NDM3LDI2NDM5LDI2NDQwLDI2NDQ0LDI2NDUyLDI2''@;'; put 'put ''NDUzLDI2NDYxLDI2NDcwLDI2NDc2LDI2NDc4LDI2NDg0LDI2NDg2LDI2NDkxLDI2NDk3LDI2NTAwLDI2NTEwLDI2NTExLDI2NTEzLDI2NTE1LDI2NTE4LDI2NTIwLDI2NTIxLDI2NTIzLDI2NTQ0LDI2NTQ1LDI2NTQ2LDI2NTQ5LDI2NTU1LDI2NTU2LDI2NTU3LDI2NjE3LDI2NTYwLDI2NTYy''@;'; put 'put ''LDI2NTYzLDI2NTY1LDI2NTY4LDI2NTY5LDI2NTc4LDI2NTgzLDI2NTg1LDI2NTg4LDI2NTkzLDI2NTk4LDI2NjA4LDI2NjEwLDI2NjE0LDI2NjE1LDI2NzA2LDI2NjQ0LDI2NjQ5LDI2NjUzLDI2NjU1LDI2NjY0LDI2NjYzLDI2NjY4LDI2NjY5LDI2NjcxLDI2NjcyLDI2NjczLDI2Njc1LDI2''@;'; put 'put ''NjgzLDI2Njg3LDI2NjkyLDI2NjkzLDI2Njk4LDI2NzAwLDI2NzA5LDI2NzExLDI2NzEyLDI2NzE1LDI2NzMxLDI2NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzQxLDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzU0LDI2NzU2LDI2NzU4LDI2NzYwLDI2Nzc0LDI2Nzc2LDI2Nzc4''@;'; put 'put ''LDI2NzgwLDI2Nzg1LDI2Nzg3LDI2Nzg5LDI2NzkzLDI2Nzk0LDI2Nzk4LDI2ODAyLDI2ODExLDI2ODIxLDI2ODI0LDI2ODI4LDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM4LDI2ODQxLDI2ODQ0LDI2ODQ1LDI2ODUzLDI2ODU2LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODY0LDI2''@;'; put 'put ''ODY1LDI2ODY5LDI2ODcwLDI2ODc1LDI2ODc2LDI2ODc3LDI2ODg2LDI2ODg5LDI2ODkwLDI2ODk2LDI2ODk3LDI2ODk5LDI2OTAyLDI2OTAzLDI2OTI5LDI2OTMxLDI2OTMzLDI2OTM2LDI2OTM5LDI2OTQ2LDI2OTQ5LDI2OTUzLDI2OTU4LDI2OTY3LDI2OTcxLDI2OTc5LDI2OTgwLDI2OTgx''@;'; put 'put ''LDI2OTgyLDI2OTg0LDI2OTg1LDI2OTg4LDI2OTkyLDI2OTkzLDI2OTk0LDI3MDAyLDI3MDAzLDI3MDA3LDI3MDA4LDI3MDIxLDI3MDI2LDI3MDMwLDI3MDMyLDI3MDQxLDI3MDQ1LDI3MDQ2LDI3MDQ4LDI3MDUxLDI3MDUzLDI3MDU1LDI3MDYzLDI3MDY0LDI3MDY2LDI3MDY4LDI3MDc3LDI3''@;'; put 'put ''MDgwLDI3MDg5LDI3MDk0LDI3MDk1LDI3MTA2LDI3MTA5LDI3MTE4LDI3MTE5LDI3MTIxLDI3MTIzLDI3MTI1LDI3MTM0LDI3MTM2LDI3MTM3LDI3MTM5LDI3MTUxLDI3MTUzLDI3MTU3LDI3MTYyLDI3MTY1LDI3MTY4LDI3MTcyLDI3MTc2LDI3MTg0LDI3MTg2LDI3MTg4LDI3MTkxLDI3MTk1''@;'; put 'put ''LDI3MTk4LDI3MTk5LDI3MjA1LDI3MjA2LDI3MjA5LDI3MjEwLDI3MjE0LDI3MjE2LDI3MjE3LDI3MjE4LDI3MjIxLDI3MjIyLDI3MjI3LDI3MjM2LDI3MjM5LDI3MjQyLDI3MjQ5LDI3MjUxLDI3MjYyLDI3MjY1LDI3MjY3LDI3MjcwLDI3MjcxLDI3MjczLDI3Mjc1LDI3MjgxLDI3MjkxLDI3''@;'; put 'put ''MjkzLDI3Mjk0LDI3Mjk1LDI3MzAxLDI3MzA3LDI3MzExLDI3MzEyLDI3MzEzLDI3MzE2LDI3MzI1LDI3MzI2LDI3MzI3LDI3MzM0LDI3MzM3LDI3MzM2LDI3MzQwLDI3MzQ0LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzU2LDI3MzU3LDI3MzY0LDI3MzY3LDI3MzcyLDI3Mzc2LDI3Mzc3LDI3Mzc4''@;'; put 'put ''LDI3Mzg4LDI3Mzg5LDI3Mzk0LDI3Mzk1LDI3Mzk4LDI3Mzk5LDI3NDAxLDI3NDA3LDI3NDA4LDI3NDA5LDI3NDE1LDI3NDE5LDI3NDIyLDI3NDI4LDI3NDMyLDI3NDM1LDI3NDM2LDI3NDM5LDI3NDQ1LDI3NDQ2LDI3NDUxLDI3NDU1LDI3NDYyLDI3NDY2LDI3NDY5LDI3NDc0LDI3NDc4LDI3''@;'; put 'put ''NDgwLDI3NDg1LDI3NDg4LDI3NDk1LDI3NDk5LDI3NTAyLDI3NTA0LDI3NTA5LDI3NTE3LDI3NTE4LDI3NTIyLDI3NTI1LDI3NTQzLDI3NTQ3LDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTYwLDI3NTYxLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY4LDI3NTc2LDI3NTc3LDI3NTgxLDI3NTgy''@;'; put 'put ''LDI3NTg3LDI3NTg4LDI3NTkzLDI3NTk2LDI3NjA2LDI3NjEwLDI3NjE3LDI3NjE5LDI3NjIyLDI3NjIzLDI3NjMwLDI3NjMzLDI3NjM5LDI3NjQxLDI3NjQ3LDI3NjUwLDI3NjUyLDI3NjUzLDI3NjU3LDI3NjYxLDI3NjYyLDI3NjY0LDI3NjY2LDI3NjczLDI3Njc5LDI3Njg2LDI3Njg3LDI3''@;'; put 'put ''Njg4LDI3NjkyLDI3Njk0LDI3Njk5LDI3NzAxLDI3NzAyLDI3NzA2LDI3NzA3LDI3NzExLDI3NzIyLDI3NzIzLDI3NzI1LDI3NzI3LDI3NzMwLDI3NzMyLDI3NzM3LDI3NzM5LDI3NzQwLDI3NzU1LDI3NzU3LDI3NzU5LDI3NzY0LDI3NzY2LDI3NzY4LDI3NzY5LDI3NzcxLDI3NzgxLDI3Nzgy''@;'; put 'put ''LDI3NzgzLDI3Nzg1LDI3Nzk2LDI3Nzk3LDI3Nzk5LDI3ODAwLDI3ODA0LDI3ODA3LDI3ODI0LDI3ODI2LDI3ODI4LDI3ODQyLDI3ODQ2LDI3ODUzLDI3ODU1LDI3ODU2LDI3ODU3LDI3ODU4LDI3ODYwLDI3ODYyLDI3ODY2LDI3ODY4LDI3ODcyLDI3ODc5LDI3ODgxLDI3ODgzLDI3ODg0LDI3''@;'; put 'put ''ODg2LDI3ODkwLDI3ODkyLDI3OTA4LDI3OTExLDI3OTE0LDI3OTE4LDI3OTE5LDI3OTIxLDI3OTIzLDI3OTMwLDI3OTQyLDI3OTQzLDI3OTQ0LDI3NzUxLDI3OTUwLDI3OTUxLDI3OTUzLDI3OTYxLDI3OTY0LDI3OTY3LDI3OTkxLDI3OTk4LDI3OTk5LDI4MDAxLDI4MDA1LDI4MDA3LDI4MDE1''@;'; put 'put ''LDI4MDE2LDI4MDI4LDI4MDM0LDI4MDM5LDI4MDQ5LDI4MDUwLDI4MDUyLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDc0LDI4MDc2LDI4MDg0LDI4MDg3LDI4MDg5LDI4MDkzLDI4MDk1LDI4MTAwLDI4MTA0LDI4MTA2LDI4MTEwLDI4MTExLDI4MTE4LDI4MTIzLDI4MTI1LDI4MTI3LDI4MTI4LDI4''@;'; put 'put ''MTMwLDI4MTMzLDI4MTM3LDI4MTQzLDI4MTQ0LDI4MTQ4LDI4MTUwLDI4MTU2LDI4MTYwLDI4MTY0LDI4MTkwLDI4MTk0LDI4MTk5LDI4MjEwLDI4MjE0LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjI4LDI4MjI5LDI4MjMyLDI4MjMzLDI4MjM1LDI4MjM5LDI4MjQxLDI4MjQyLDI4MjQzLDI4MjQ0''@;'; put 'put ''LDI4MjQ3LDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU4LDI4MjU5LDI4MjY0LDI4Mjc1LDI4MjgzLDI4Mjg1LDI4MzAxLDI4MzA3LDI4MzEzLDI4MzIwLDI4MzI3LDI4MzMzLDI4MzM0LDI4MzM3LDI4MzM5LDI4MzQ3LDI4MzUxLDI4MzUyLDI4MzUzLDI4MzU1LDI4MzU5LDI4MzYwLDI4MzYyLDI4''@;'; put 'put ''MzY1LDI4MzY2LDI4MzY3LDI4Mzk1LDI4Mzk3LDI4Mzk4LDI4NDA5LDI4NDExLDI4NDEzLDI4NDIwLDI4NDI0LDI4NDI2LDI4NDI4LDI4NDI5LDI4NDM4LDI4NDQwLDI4NDQyLDI4NDQzLDI4NDU0LDI4NDU3LDI4NDU4LDI4NDYzLDI4NDY0LDI4NDY3LDI4NDcwLDI4NDc1LDI4NDc2LDI4NDYx''@;'; put 'put ''LDI4NDk1LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAzLDI4NTA1LDI4NTA2LDI4NTA5LDI4NTEwLDI4NTEzLDI4NTE0LDI4NTIwLDI4NTI0LDI4NTQxLDI4NTQyLDI4NTQ3LDI4NTUxLDI4NTUyLDI4NTU1LDI4NTU2LDI4NTU3LDI4NTYwLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY2LDI4NTcwLDI4''@;'; put 'put ''NTc1LDI4NTc2LDI4NTgxLDI4NTgyLDI4NTgzLDI4NTg0LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTk3LDI4NTk4LDI4NjA0LDI4NjEzLDI4NjE1LDI4NjE2LDI4NjE4LDI4NjM0LDI4NjM4LDI4NjQ4LDI4NjQ5LDI4NjU2LDI4NjYxLDI4NjY1LDI4NjY4LDI4NjY5LDI4NjcyLDI4Njc3LDI4Njc4''@;'; put 'put ''LDI4Njc5LDI4Njg1LDI4Njk1LDI4NzA0LDI4NzA3LDI4NzE5LDI4NzI0LDI4NzI3LDI4NzI5LDI4NzMyLDI4NzM5LDI4NzQwLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzU2LDI4NzU3LDI4NzY1LDI4NzY2LDI4NzUwLDI4NzcyLDI4NzczLDI4NzgwLDI4NzgyLDI4Nzg5LDI4NzkwLDI4''@;'; put 'put ''Nzk4LDI4ODAxLDI4ODA1LDI4ODA2LDI4ODIwLDI4ODIxLDI4ODIyLDI4ODIzLDI4ODI0LDI4ODI3LDI4ODM2LDI4ODQzLDI4ODQ4LDI4ODQ5LDI4ODUyLDI4ODU1LDI4ODc0LDI4ODgxLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg4LDI4ODkyLDI4OTAwLDI4OTIyLDI4OTMxLDI4OTMy''@;'; put 'put ''LDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM5LDI4OTQwLDI4OTQzLDI4OTU4LDI4OTYwLDI4OTcxLDI4OTczLDI4OTc1LDI4OTc2LDI4OTc3LDI4OTg0LDI4OTkzLDI4OTk3LDI4OTk4LDI4OTk5LDI5MDAyLDI5MDAzLDI5MDA4LDI5MDEwLDI5MDE1LDI5MDE4LDI5MDIwLDI5MDIyLDI5MDI0LDI5''@;'; put 'put ''MDMyLDI5MDQ5LDI5MDU2LDI5MDYxLDI5MDYzLDI5MDY4LDI5MDc0LDI5MDgyLDI5MDgzLDI5MDg4LDI5MDkwLDI5MTAzLDI5MTA0LDI5MTA2LDI5MTA3LDI5MTE0LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTI0LDI5MTMxLDI5MTMyLDI5MTM5LDI5MTQyLDI5MTQ1LDI5MTQ2LDI5MTQ4LDI5MTc2''@;'; put 'put ''LDI5MTgyLDI5MTg0LDI5MTkxLDI5MTkyLDI5MTkzLDI5MjAzLDI5MjA3LDI5MjEwLDI5MjEzLDI5MjE1LDI5MjIwLDI5MjI3LDI5MjMxLDI5MjM2LDI5MjQwLDI5MjQxLDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUzLDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY3LDI5MjY5LDI5MjcwLDI5Mjc0LDI5''@;'; put 'put ''Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg4LDI5MjkxLDI5Mjk0LDI5Mjk1LDI5Mjk3LDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzExLDI5MzE2LDI5MzIxLDI5MzI1LDI5MzI2LDI5MzMxLDI5MzM5LDI5MzUyLDI5MzU3LDI5MzU4LDI5MzYxLDI5MzY0LDI5Mzc0LDI5Mzc3LDI5Mzgz''@;'; put 'put ''LDI5Mzg1LDI5Mzg4LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDA3LDI5NDEzLDI5NDI3LDI5NDI4LDI5NDM0LDI5NDM1LDI5NDM4LDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ3LDI5NDUxLDI5NDUzLDI5NDU4LDI5NDU5LDI5NDY0LDI5NDY1LDI5NDcwLDI5NDc0LDI5NDc2LDI5NDc5LDI5NDgwLDI5''@;'; put 'put ''NDg0LDI5NDg5LDI5NDkwLDI5NDkzLDI5NDk4LDI5NDk5LDI5NTAxLDI5NTA3LDI5NTE3LDI5NTIwLDI5NTIyLDI5NTI2LDI5NTI4LDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTQyLDI5NTQzLDI5NTQ1LDI5NTQ3LDI5NTQ4LDI5NTUwLDI5NTUxLDI5NTUzLDI5NTU5LDI5NTYxLDI5NTY0''@;'; put 'put ''LDI5NTY4LDI5NTY5LDI5NTcxLDI5NTczLDI5NTc0LDI5NTgyLDI5NTg0LDI5NTg3LDI5NTg5LDI5NTkxLDI5NTkyLDI5NTk2LDI5NTk4LDI5NTk5LDI5NjAwLDI5NjAyLDI5NjA1LDI5NjA2LDI5NjEwLDI5NjExLDI5NjEzLDI5NjIxLDI5NjIzLDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMxLDI5''@;'; put 'put ''NjM3LDI5NjM4LDI5NjQxLDI5NjQzLDI5NjQ0LDI5NjQ3LDI5NjUwLDI5NjUxLDI5NjU0LDI5NjU3LDI5NjYxLDI5NjY1LDI5NjY3LDI5NjcwLDI5NjcxLDI5NjczLDI5Njg0LDI5Njg1LDI5Njg3LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkzLDI5Njk1LDI5Njk2LDI5Njk3LDI5NzAwLDI5NzAz''@;'; put 'put ''LDI5NzA2LDI5NzEzLDI5NzIyLDI5NzIzLDI5NzMyLDI5NzM0LDI5NzM2LDI5NzM3LDI5NzM4LDI5NzM5LDI5NzQwLDI5NzQxLDI5NzQyLDI5NzQzLDI5NzQ0LDI5NzQ1LDI5NzUzLDI5NzYwLDI5NzYzLDI5NzY0LDI5NzY2LDI5NzY3LDI5NzcxLDI5NzczLDI5Nzc3LDI5Nzc4LDI5NzgzLDI5''@;'; put 'put ''Nzg5LDI5Nzk0LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5ODAzLDI5ODA1LDI5ODA2LDI5ODA5LDI5ODEwLDI5ODI0LDI5ODI1LDI5ODI5LDI5ODMwLDI5ODMxLDI5ODMzLDI5ODM5LDI5ODQwLDI5ODQxLDI5ODQyLDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUyLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU5''@;'; put 'put ''LDI5ODYyLDI5ODY0LDI5ODY1LDI5ODY2LDI5ODY3LDI5ODcwLDI5ODcxLDI5ODczLDI5ODc0LDI5ODc3LDI5ODgxLDI5ODgzLDI5ODg3LDI5ODk2LDI5ODk3LDI5OTAwLDI5OTA0LDI5OTA3LDI5OTEyLDI5OTE0LDI5OTE1LDI5OTE4LDI5OTE5LDI5OTI0LDI5OTI4LDI5OTMwLDI5OTMxLDI5''@;'; put 'put ''OTM1LDI5OTQwLDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5OTUxLDI5OTU4LDI5OTcwLDI5OTc0LDI5OTc1LDI5OTg0LDI5OTg1LDI5OTg4LDI5OTkxLDI5OTkzLDI5OTk0LDI5OTk5LDMwMDA2LDMwMDA5LDMwMDEzLDMwMDE0LDMwMDE1LDMwMDE2LDMwMDE5LDMwMDIzLDMwMDI0LDMwMDMwLDMwMDMy''@;'; put 'put ''LDMwMDM0LDMwMDM5LDMwMDQ2LDMwMDQ3LDMwMDQ5LDMwMDYzLDMwMDY1LDMwMDczLDMwMDc0LDMwMDc1LDMwMDc2LDMwMDc3LDMwMDc4LDMwMDgxLDMwMDg1LDMwMDk2LDMwMDk4LDMwMDk5LDMwMTAxLDMwMTA1LDMwMTA4LDMwMTE0LDMwMTE2LDMwMTMyLDMwMTM4LDMwMTQzLDMwMTQ0LDMw''@;'; put 'put ''MTQ1LDMwMTQ4LDMwMTUwLDMwMTU2LDMwMTU4LDMwMTU5LDMwMTY3LDMwMTcyLDMwMTc1LDMwMTc2LDMwMTc3LDMwMTgwLDMwMTgzLDMwMTg4LDMwMTkwLDMwMTkxLDMwMTkzLDMwMjAxLDMwMjA4LDMwMjEwLDMwMjExLDMwMjEyLDMwMjE1LDMwMjE2LDMwMjE4LDMwMjIwLDMwMjIzLDMwMjI2''@;'; put 'put ''LDMwMjI3LDMwMjI5LDMwMjMwLDMwMjMzLDMwMjM1LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQzLDMwMjQ1LDMwMjQ2LDMwMjQ5LDMwMjUzLDMwMjU4LDMwMjU5LDMwMjYxLDMwMjY0LDMwMjY1LDMwMjY2LDMwMjY4LDMwMjgyLDMwMjcyLDMwMjczLDMwMjc1LDMwMjc2LDMwMjc3LDMwMjgxLDMw''@;'; put 'put ''MjgzLDMwMjkzLDMwMjk3LDMwMzAzLDMwMzA4LDMwMzA5LDMwMzE3LDMwMzE4LDMwMzE5LDMwMzIxLDMwMzI0LDMwMzM3LDMwMzQxLDMwMzQ4LDMwMzQ5LDMwMzU3LDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY3LDMwMzY4LDMwMzcwLDMwMzcxLDMwMzcyLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2''@;'; put 'put ''LDMwMzc4LDMwMzgxLDMwMzk3LDMwNDAxLDMwNDA1LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE0LDMwNDIwLDMwNDI1LDMwNDMyLDMwNDM4LDMwNDQwLDMwNDQ0LDMwNDQ4LDMwNDQ5LDMwNDU0LDMwNDU3LDMwNDYwLDMwNDY0LDMwNDcwLDMwNDc0LDMwNDc4LDMwNDgyLDMwNDg0LDMwNDg1LDMw''@;'; put 'put ''NDg3LDMwNDg5LDMwNDkwLDMwNDkyLDMwNDk4LDMwNTA0LDMwNTA5LDMwNTEwLDMwNTExLDMwNTE2LDMwNTE3LDMwNTE4LDMwNTIxLDMwNTI1LDMwNTI2LDMwNTMwLDMwNTMzLDMwNTM0LDMwNTM4LDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTUwLDMwNTUxLDMwNTU2LDMwNTU4LDMwNTU5''@;'; put 'put ''LDMwNTYwLDMwNTYyLDMwNTY0LDMwNTY3LDMwNTcwLDMwNTcyLDMwNTc2LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTg2LDMwNTg5LDMwNTkyLDMwNTk2LDMwNjA0LDMwNjA1LDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE4LDMwNjIzLDMwNjI2LDMwNjMxLDMwNjM0LDMwNjM4LDMwNjM5LDMwNjQxLDMw''@;'; put 'put ''NjQ1LDMwNjU0LDMwNjU5LDMwNjY1LDMwNjczLDMwNjc0LDMwNjc3LDMwNjgxLDMwNjg2LDMwNjg3LDMwNjg4LDMwNjkyLDMwNjk0LDMwNjk4LDMwNzAwLDMwNzA0LDMwNzA1LDMwNzA4LDMwNzEyLDMwNzE1LDMwNzI1LDMwNzI2LDMwNzI5LDMwNzMzLDMwNzM0LDMwNzM3LDMwNzQ5LDMwNzUz''@;'; put 'put ''LDMwNzU0LDMwNzU1LDMwNzY1LDMwNzY2LDMwNzY4LDMwNzczLDMwNzc1LDMwNzg3LDMwNzg4LDMwNzkxLDMwNzkyLDMwNzk2LDMwNzk4LDMwODAyLDMwODEyLDMwODE0LDMwODE2LDMwODE3LDMwODE5LDMwODIwLDMwODI0LDMwODI2LDMwODMwLDMwODQyLDMwODQ2LDMwODU4LDMwODYzLDMw''@;'; put 'put ''ODY4LDMwODcyLDMwODgxLDMwODc3LDMwODc4LDMwODc5LDMwODg0LDMwODg4LDMwODkyLDMwODkzLDMwODk2LDMwODk3LDMwODk4LDMwODk5LDMwOTA3LDMwOTA5LDMwOTExLDMwOTE5LDMwOTIwLDMwOTIxLDMwOTI0LDMwOTI2LDMwOTMwLDMwOTMxLDMwOTMzLDMwOTM0LDMwOTQ4LDMwOTM5''@;'; put 'put ''LDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTUwLDMwOTU0LDMwOTYyLDMwOTYzLDMwOTc2LDMwOTY2LDMwOTY3LDMwOTcwLDMwOTcxLDMwOTc1LDMwOTgyLDMwOTg4LDMwOTkyLDMxMDAyLDMxMDA0LDMxMDA2LDMxMDA3LDMxMDA4LDMxMDEzLDMxMDE1LDMxMDE3LDMxMDIxLDMxMDI1LDMxMDI4LDMx''@;'; put 'put ''MDI5LDMxMDM1LDMxMDM3LDMxMDM5LDMxMDQ0LDMxMDQ1LDMxMDQ2LDMxMDUwLDMxMDUxLDMxMDU1LDMxMDU3LDMxMDYwLDMxMDY0LDMxMDY3LDMxMDY4LDMxMDc5LDMxMDgxLDMxMDgzLDMxMDkwLDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAyLDMxMTE1LDMxMTE2LDMxMTIxLDMxMTIzLDMxMTI0''@;'; put 'put ''LDMxMTI1LDMxMTI2LDMxMTI4LDMxMTMxLDMxMTMyLDMxMTM3LDMxMTQ0LDMxMTQ1LDMxMTQ3LDMxMTUxLDMxMTUzLDMxMTU2LDMxMTYwLDMxMTYzLDMxMTcwLDMxMTcyLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgzLDMxMTg4LDMxMTkwLDMxMTk0LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAyLDMx''@;'; put 'put ''MjA1LDMxMjEwLDMxMjExLDMxMjEzLDMxMjE3LDMxMjI0LDMxMjI4LDMxMjM0LDMxMjM1LDMxMjM5LDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ5LDMxMjUzLDMxMjU5LDMxMjYyLDMxMjY1LDMxMjcxLDMxMjc1LDMxMjc3LDMxMjc5LDMxMjgwLDMxMjg0LDMxMjg1LDMxMjg4LDMxMjg5LDMxMjkw''@;'; put 'put ''LDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA4LDMxMzE3LDMxMzE4LDMxMzIxLDMxMzI0LDMxMzI1LDMxMzI3LDMxMzI4LDMxMzMzLDMxMzM1LDMxMzM4LDMxMzQxLDMxMzQ5LDMxMzUyLDMxMzU4LDMxMzYwLDMxMzYyLDMxMzY1LDMxMzY2LDMxMzcwLDMxMzcxLDMxMzc2LDMxMzc3LDMx''@;'; put 'put ''MzgwLDMxMzkwLDMxMzkyLDMxMzk1LDMxNDA0LDMxNDExLDMxNDEzLDMxNDE3LDMxNDE5LDMxNDIwLDMxNDMwLDMxNDMzLDMxNDM2LDMxNDM4LDMxNDQxLDMxNDUxLDMxNDY0LDMxNDY1LDMxNDY3LDMxNDY4LDMxNDczLDMxNDc2LDMxNDgzLDMxNDg1LDMxNDg2LDMxNDk1LDMxNTA4LDMxNTE5''@;'; put 'put ''LDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMwLDMxNTMxLDMxNTMzLDMxNTM0LDMxNTM1LDMxNTM2LDMxNTM3LDMxNTQwLDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU5LDMxNTY2LDMxNTczLDMxNTg0LDMxNTg4LDMxNTkwLDMxNTkzLDMxNTk0LDMxNTk3LDMxNTk5LDMxNjAyLDMxNjAzLDMx''@;'; put 'put ''NjA3LDMxNjIwLDMxNjI1LDMxNjMwLDMxNjMyLDMxNjMzLDMxNjM4LDMxNjQzLDMxNjQ2LDMxNjQ4LDMxNjUzLDMxNjYwLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY5LDMxNjcwLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjgyLDMxNjg1LDMxNjg4LDMxNjkwLDMxNzAwLDMxNzAyLDMxNzAz''@;'; put 'put ''LDMxNzA1LDMxNzA2LDMxNzA3LDMxNzIwLDMxNzIyLDMxNzMwLDMxNzMyLDMxNzMzLDMxNzM2LDMxNzM3LDMxNzM4LDMxNzQwLDMxNzQyLDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzUwLDMxNzUzLDMxNzU1LDMxNzU2LDMxNzU4LDMxNzU5LDMxNzY5LDMxNzcxLDMxNzc2LDMxNzgxLDMx''@;'; put 'put ''NzgyLDMxNzg0LDMxNzg4LDMxNzkzLDMxNzk1LDMxNzk2LDMxNzk4LDMxODAxLDMxODAyLDMxODE0LDMxODE4LDMxODI5LDMxODI1LDMxODI2LDMxODI3LDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODQxLDMxODQzLDMxODQ3LDMxODQ5LDMxODUzLDMxODU0LDMxODU2''@;'; put 'put ''LDMxODU4LDMxODY1LDMxODY4LDMxODY5LDMxODc4LDMxODc5LDMxODg3LDMxODkyLDMxOTAyLDMxOTA0LDMxOTEwLDMxOTIwLDMxOTI2LDMxOTI3LDMxOTMwLDMxOTMxLDMxOTMyLDMxOTM1LDMxOTQwLDMxOTQzLDMxOTQ0LDMxOTQ1LDMxOTQ5LDMxOTUxLDMxOTU1LDMxOTU2LDMxOTU3LDMx''@;'; put 'put ''OTU5LDMxOTYxLDMxOTYyLDMxOTY1LDMxOTc0LDMxOTc3LDMxOTc5LDMxOTg5LDMyMDAzLDMyMDA3LDMyMDA4LDMyMDA5LDMyMDE1LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIyLDMyMDI5LDMyMDMwLDMyMDM1LDMyMDM4LDMyMDQyLDMyMDQ1LDMyMDQ5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDY0''@;'; put 'put ''LDMyMDY1LDMyMDcxLDMyMDcyLDMyMDc3LDMyMDgxLDMyMDgzLDMyMDg3LDMyMDg5LDMyMDkwLDMyMDkyLDMyMDkzLDMyMTAxLDMyMTAzLDMyMTA2LDMyMTEyLDMyMTIwLDMyMTIyLDMyMTIzLDMyMTI3LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMzLDMyMTM0LDMyMTM2LDMyMTM5LDMyMTQwLDMy''@;'; put 'put ''MTQxLDMyMTQ1LDMyMTUwLDMyMTUxLDMyMTU3LDMyMTU4LDMyMTY2LDMyMTY3LDMyMTcwLDMyMTc5LDMyMTgyLDMyMTgzLDMyMTg1LDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMjA0LDMyMjA1LDMyMjA2LDMyMjE1LDMyMjE3LDMyMjU2LDMyMjI2LDMyMjI5LDMyMjMwLDMyMjM0''@;'; put 'put ''LDMyMjM1LDMyMjM3LDMyMjQxLDMyMjQ1LDMyMjQ2LDMyMjQ5LDMyMjUwLDMyMjY0LDMyMjcyLDMyMjczLDMyMjc3LDMyMjc5LDMyMjg0LDMyMjg1LDMyMjg4LDMyMjk1LDMyMjk2LDMyMzAwLDMyMzAxLDMyMzAzLDMyMzA3LDMyMzEwLDMyMzE5LDMyMzI0LDMyMzI1LDMyMzI3LDMyMzM0LDMy''@;'; put 'put ''MzM2LDMyMzM4LDMyMzQ0LDMyMzUxLDMyMzUzLDMyMzU0LDMyMzU3LDMyMzYzLDMyMzY2LDMyMzY3LDMyMzcxLDMyMzc2LDMyMzgyLDMyMzg1LDMyMzkwLDMyMzkxLDMyMzk0LDMyMzk3LDMyNDAxLDMyNDA1LDMyNDA4LDMyNDEwLDMyNDEzLDMyNDE0LDMyNTcyLDMyNTcxLDMyNTczLDMyNTc0''@;'; put 'put ''LDMyNTc1LDMyNTc5LDMyNTgwLDMyNTgzLDMyNTkxLDMyNTk0LDMyNTk1LDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA5LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjIxLDMyNjI1LDMyNjM3LDMyNjM4LDMyNjM5LDMyNjQwLDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjYyLDMy''@;'; put 'put ''NjYzLDMyNjY4LDMyNjczLDMyNjc0LDMyNjc4LDMyNjgyLDMyNjg1LDMyNjkyLDMyNzAwLDMyNzAzLDMyNzA0LDMyNzA3LDMyNzEyLDMyNzE4LDMyNzE5LDMyNzMxLDMyNzM1LDMyNzM5LDMyNzQxLDMyNzQ0LDMyNzQ4LDMyNzUwLDMyNzUxLDMyNzU0LDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3''@;'; put 'put ''LDMyNzc1LDMyNzc2LDMyNzc4LDMyNzgxLDMyNzgyLDMyNzgzLDMyNzg1LDMyNzg3LDMyNzg4LDMyNzkwLDMyNzk3LDMyNzk4LDMyNzk5LDMyODAwLDMyODA0LDMyODA2LDMyODEyLDMyODE0LDMyODE2LDMyODIwLDMyODIxLDMyODIzLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMy''@;'; put 'put ''ODM2LDMyODY0LDMyODY4LDMyODcwLDMyODc3LDMyODgxLDMyODg1LDMyODk3LDMyOTA0LDMyOTEwLDMyOTI0LDMyOTI2LDMyOTM0LDMyOTM1LDMyOTM5LDMyOTUyLDMyOTUzLDMyOTY4LDMyOTczLDMyOTc1LDMyOTc4LDMyOTgwLDMyOTgxLDMyOTgzLDMyOTg0LDMyOTkyLDMzMDA1LDMzMDA2''@;'; put 'put ''LDMzMDA4LDMzMDEwLDMzMDExLDMzMDE0LDMzMDE3LDMzMDE4LDMzMDIyLDMzMDI3LDMzMDM1LDMzMDQ2LDMzMDQ3LDMzMDQ4LDMzMDUyLDMzMDU0LDMzMDU2LDMzMDYwLDMzMDYzLDMzMDY4LDMzMDcyLDMzMDc3LDMzMDgyLDMzMDg0LDMzMDkzLDMzMDk1LDMzMDk4LDMzMTAwLDMzMTA2LDMz''@;'; put 'put ''MTExLDMzMTIwLDMzMTIxLDMzMTI3LDMzMTI4LDMzMTI5LDMzMTMzLDMzMTM1LDMzMTQzLDMzMTUzLDMzMTY4LDMzMTU2LDMzMTU3LDMzMTU4LDMzMTYzLDMzMTY2LDMzMTc0LDMzMTc2LDMzMTc5LDMzMTgyLDMzMTg2LDMzMTk4LDMzMjAyLDMzMjA0LDMzMjExLDMzMjI3LDMzMjE5LDMzMjIx''@;'; put 'put ''LDMzMjI2LDMzMjMwLDMzMjMxLDMzMjM3LDMzMjM5LDMzMjQzLDMzMjQ1LDMzMjQ2LDMzMjQ5LDMzMjUyLDMzMjU5LDMzMjYwLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcyLDMzMjczLDMzMjc3LDMzMjc5LDMzMjgwLDMzMjgzLDMzMjk1LDMzMjk5LDMzMzAwLDMzMzA1LDMz''@;'; put 'put ''MzA2LDMzMzA5LDMzMzEzLDMzMzE0LDMzMzIwLDMzMzMwLDMzMzMyLDMzMzM4LDMzMzQ3LDMzMzQ4LDMzMzQ5LDMzMzUwLDMzMzU1LDMzMzU4LDMzMzU5LDMzMzYxLDMzMzY2LDMzMzcyLDMzMzc2LDMzMzc5LDMzMzgzLDMzMzg5LDMzMzk2LDMzNDAzLDMzNDA1LDMzNDA3LDMzNDA4LDMzNDA5''@;'; put 'put ''LDMzNDExLDMzNDEyLDMzNDE1LDMzNDE3LDMzNDE4LDMzNDIyLDMzNDI1LDMzNDI4LDMzNDMwLDMzNDMyLDMzNDM0LDMzNDM1LDMzNDQwLDMzNDQxLDMzNDQzLDMzNDQ0LDMzNDQ3LDMzNDQ4LDMzNDQ5LDMzNDUwLDMzNDU0LDMzNDU2LDMzNDU4LDMzNDYwLDMzNDYzLDMzNDY2LDMzNDY4LDMz''@;'; put 'put ''NDcwLDMzNDcxLDMzNDc4LDMzNDg4LDMzNDkzLDMzNDk4LDMzNTA0LDMzNTA2LDMzNTA4LDMzNTEyLDMzNTE0LDMzNTE3LDMzNTE5LDMzNTI2LDMzNTI3LDMzNTMzLDMzNTM0LDMzNTM2LDMzNTM3LDMzNTQzLDMzNTQ0LDMzNTQ2LDMzNTQ3LDMzNjIwLDMzNTYzLDMzNTY1LDMzNTY2LDMzNTY3''@;'; put 'put ''LDMzNTY5LDMzNTcwLDMzNTgwLDMzNTgxLDMzNTgyLDMzNTg0LDMzNTg3LDMzNTkxLDMzNTk0LDMzNTk2LDMzNTk3LDMzNjAyLDMzNjAzLDMzNjA0LDMzNjA3LDMzNjEzLDMzNjE0LDMzNjE3LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjQ4LDMzNjU2LDMzNjYxLDMzNjYzLDMzNjY0LDMzNjY2LDMz''@;'; put 'put ''NjY4LDMzNjcwLDMzNjc3LDMzNjgyLDMzNjg0LDMzNjg1LDMzNjg4LDMzNjg5LDMzNjkxLDMzNjkyLDMzNjkzLDMzNzAyLDMzNzAzLDMzNzA1LDMzNzA4LDMzNzI2LDMzNzI3LDMzNzI4LDMzNzM1LDMzNzM3LDMzNzQzLDMzNzQ0LDMzNzQ1LDMzNzQ4LDMzNzU3LDMzNjE5LDMzNzY4LDMzNzcw''@;'; put 'put ''LDMzNzgyLDMzNzg0LDMzNzg1LDMzNzg4LDMzNzkzLDMzNzk4LDMzODAyLDMzODA3LDMzODA5LDMzODEzLDMzODE3LDMzNzA5LDMzODM5LDMzODQ5LDMzODYxLDMzODYzLDMzODY0LDMzODY2LDMzODY5LDMzODcxLDMzODczLDMzODc0LDMzODc4LDMzODgwLDMzODgxLDMzODgyLDMzODg0LDMz''@;'; put 'put ''ODg4LDMzODkyLDMzODkzLDMzODk1LDMzODk4LDMzOTA0LDMzOTA3LDMzOTA4LDMzOTEwLDMzOTEyLDMzOTE2LDMzOTE3LDMzOTIxLDMzOTI1LDMzOTM4LDMzOTM5LDMzOTQxLDMzOTUwLDMzOTU4LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTY3LDMzOTY5LDMzOTcyLDMzOTc4LDMzOTgxLDMzOTgy''@;'; put 'put ''LDMzOTg0LDMzOTg2LDMzOTkxLDMzOTkyLDMzOTk2LDMzOTk5LDM0MDAzLDM0MDEyLDM0MDIzLDM0MDI2LDM0MDMxLDM0MDMyLDM0MDMzLDM0MDM0LDM0MDM5LDM0MDk4LDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDUwLDM0MDUxLDM0MDU1LDM0MDYwLDM0MDYyLDM0MDY0LDM0MDc2LDM0MDc4LDM0''@;'; put 'put ''MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg3LDM0MDkwLDM0MDkxLDM0MDk1LDM0MDk5LDM0MTAwLDM0MTAyLDM0MTExLDM0MTE4LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTM0LDM0MTM3LDM0MTQwLDM0MTQxLDM0MTQyLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ4''@;'; put 'put ''LDM0MTU1LDM0MTU5LDM0MTY5LDM0MTcwLDM0MTcxLDM0MTczLDM0MTc1LDM0MTc3LDM0MTgxLDM0MTgyLDM0MTg1LDM0MTg3LDM0MTg4LDM0MTkxLDM0MTk1LDM0MjAwLDM0MjA1LDM0MjA3LDM0MjA4LDM0MjEwLDM0MjEzLDM0MjE1LDM0MjI4LDM0MjMwLDM0MjMxLDM0MjMyLDM0MjM2LDM0''@;'; put 'put ''MjM3LDM0MjM4LDM0MjM5LDM0MjQyLDM0MjQ3LDM0MjUwLDM0MjUxLDM0MjU0LDM0MjIxLDM0MjY0LDM0MjY2LDM0MjcxLDM0MjcyLDM0Mjc4LDM0MjgwLDM0Mjg1LDM0MjkxLDM0Mjk0LDM0MzAwLDM0MzAzLDM0MzA0LDM0MzA4LDM0MzA5LDM0MzE3LDM0MzE4LDM0MzIwLDM0MzIxLDM0MzIy''@;'; put 'put ''LDM0MzI4LDM0MzI5LDM0MzMxLDM0MzM0LDM0MzM3LDM0MzQzLDM0MzQ1LDM0MzU4LDM0MzYwLDM0MzYyLDM0MzY0LDM0MzY1LDM0MzY4LDM0MzcwLDM0Mzc0LDM0Mzg2LDM0Mzg3LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk3LDM0NDAwLDM0NDAxLDM0NDAyLDM0NDAzLDM0NDA0LDM0''@;'; put 'put ''NDA5LDM0NDEyLDM0NDE1LDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI2LDM0NDQ1LDM0NDQ5LDM0NDU0LDM0NDU2LDM0NDU4LDM0NDYwLDM0NDY1LDM0NDcwLDM0NDcxLDM0NDcyLDM0NDc3LDM0NDgxLDM0NDgzLDM0NDg0LDM0NDg1LDM0NDg3LDM0NDg4LDM0NDg5LDM0NDk1LDM0NDk2LDM0NDk3''@;'; put 'put ''LDM0NDk5LDM0NTAxLDM0NTEzLDM0NTE0LDM0NTE3LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI4LDM0NTMxLDM0NTMzLDM0NTM1LDM0NDQwLDM0NTU0LDM0NTU2LDM0NTU3LDM0NTY0LDM0NTY1LDM0NTY3LDM0NTcxLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc5LDM0NTgwLDM0NTg1LDM0NTkwLDM0''@;'; put 'put ''NTkxLDM0NTkzLDM0NTk1LDM0NjAwLDM0NjA2LDM0NjA3LDM0NjA5LDM0NjEwLDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjIyLDM0NjI0LDM0NjI3LDM0NjI5LDM0NjM3LDM0NjQ4LDM0NjUzLDM0NjU3LDM0NjYwLDM0NjYxLDM0NjcxLDM0NjczLDM0Njc0LDM0NjgzLDM0NjkxLDM0Njky''@;'; put 'put ''LDM0NjkzLDM0Njk0LDM0Njk1LDM0Njk2LDM0Njk3LDM0Njk5LDM0NzAwLDM0NzA0LDM0NzA3LDM0NzA5LDM0NzExLDM0NzEyLDM0NzEzLDM0NzE4LDM0NzIwLDM0NzIzLDM0NzI3LDM0NzMyLDM0NzMzLDM0NzM0LDM0NzM3LDM0NzQxLDM0NzUwLDM0NzUxLDM0NzUzLDM0NzYwLDM0NzYxLDM0''@;'; put 'put ''NzYyLDM0NzY2LDM0NzczLDM0Nzc0LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgzLDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0Nzk0LDM0Nzk1LDM0Nzk3LDM0ODAxLDM0ODAzLDM0ODA4LDM0ODEwLDM0ODE1LDM0ODE3LDM0ODE5LDM0ODIyLDM0ODI1LDM0ODI2LDM0ODI3LDM0ODMyLDM0ODQxLDM0ODM0''@;'; put 'put ''LDM0ODM1LDM0ODM2LDM0ODQwLDM0ODQyLDM0ODQzLDM0ODQ0LDM0ODQ2LDM0ODQ3LDM0ODU2LDM0ODYxLDM0ODYyLDM0ODY0LDM0ODY2LDM0ODY5LDM0ODc0LDM0ODc2LDM0ODgxLDM0ODgzLDM0ODg1LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk3LDM0OTAxLDM0OTAyLDM0''@;'; put 'put ''OTA0LDM0OTA2LDM0OTA4LDM0OTExLDM0OTEyLDM0OTE2LDM0OTIxLDM0OTI5LDM0OTM3LDM0OTM5LDM0OTQ0LDM0OTY4LDM0OTcwLDM0OTcxLDM0OTcyLDM0OTc1LDM0OTc2LDM0OTg0LDM0OTg2LDM1MDAyLDM1MDA1LDM1MDA2LDM1MDA4LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIy''@;'; put 'put ''LDM1MDI1LDM1MDI2LDM1MDI3LDM1MDM1LDM1MDM4LDM1MDQ3LDM1MDU1LDM1MDU2LDM1MDU3LDM1MDYxLDM1MDYzLDM1MDczLDM1MDc4LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDkzLDM1MDk0LDM1MDk2LDM1MDk3LDM1MDk4LDM1MTAwLDM1MTA0LDM1MTEwLDM1MTExLDM1MTEyLDM1MTIwLDM1''@;'; put 'put ''MTIxLDM1MTIyLDM1MTI1LDM1MTI5LDM1MTMwLDM1MTM0LDM1MTM2LDM1MTM4LDM1MTQxLDM1MTQyLDM1MTQ1LDM1MTUxLDM1MTU0LDM1MTU5LDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTc5LDM1MTgyLDM1MTg0LDM1MTg3LDM1MTg5LDM1MTk0LDM1MTk1LDM1MTk2''@;'; put 'put ''LDM1MTk3LDM1MjA5LDM1MjEzLDM1MjE2LDM1MjIwLDM1MjIxLDM1MjI3LDM1MjI4LDM1MjMxLDM1MjMyLDM1MjM3LDM1MjQ4LDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjYwLDM1Mjg0LDM1Mjg1LDM1Mjg2LDM1Mjg3LDM1Mjg4LDM1MzAxLDM1MzA1LDM1MzA3LDM1MzA5LDM1MzEzLDM1''@;'; put 'put ''MzE1LDM1MzE4LDM1MzIxLDM1MzI1LDM1MzI3LDM1MzMyLDM1MzMzLDM1MzM1LDM1MzQzLDM1MzQ1LDM1MzQ2LDM1MzQ4LDM1MzQ5LDM1MzU4LDM1MzYwLDM1MzYyLDM1MzY0LDM1MzY2LDM1MzcxLDM1MzcyLDM1Mzc1LDM1MzgxLDM1MzgzLDM1Mzg5LDM1MzkwLDM1MzkyLDM1Mzk1LDM1Mzk3''@;'; put 'put ''LDM1Mzk5LDM1NDAxLDM1NDA1LDM1NDA2LDM1NDExLDM1NDE0LDM1NDE1LDM1NDE2LDM1NDIwLDM1NDIxLDM1NDI1LDM1NDI5LDM1NDMxLDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ5LDM1NDUwLDM1NDUxLDM1NDU0LDM1NDU1LDM1NDU2LDM1NDU5LDM1NDYyLDM1NDY3LDM1NDcxLDM1NDcyLDM1''@;'; put 'put ''NDc0LDM1NDc4LDM1NDc5LDM1NDgxLDM1NDg3LDM1NDk1LDM1NDk3LDM1NTAyLDM1NTAzLDM1NTA3LDM1NTEwLDM1NTExLDM1NTE1LDM1NTE4LDM1NTIzLDM1NTI2LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTM3LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQzLDM1NTQ5LDM1NTUxLDM1NTY0LDM1NTY4''@;'; put 'put ''LDM1NTcyLDM1NTczLDM1NTc0LDM1NTgwLDM1NTgzLDM1NTg5LDM1NTkwLDM1NTk1LDM1NjAxLDM1NjEyLDM1NjE0LDM1NjE1LDM1NTk0LDM1NjI5LDM1NjMyLDM1NjM5LDM1NjQ0LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDM1NjU0LDM1NjU2LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjczLDM1''@;'; put 'put ''NjYxLDM1Njc4LDM1NjgzLDM1NjkzLDM1NzAyLDM1NzA0LDM1NzA1LDM1NzA4LDM1NzEwLDM1NzEzLDM1NzE2LDM1NzE3LDM1NzIzLDM1NzI1LDM1NzI3LDM1NzMyLDM1NzMzLDM1NzQwLDM1NzQyLDM1NzQzLDM1ODk2LDM1ODk3LDM1OTAxLDM1OTAyLDM1OTA5LDM1OTExLDM1OTEzLDM1OTE1''@;'; put 'put ''LDM1OTE5LDM1OTIxLDM1OTIzLDM1OTI0LDM1OTI3LDM1OTI4LDM1OTMxLDM1OTMzLDM1OTI5LDM1OTM5LDM1OTQwLDM1OTQyLDM1OTQ0LDM1OTQ1LDM1OTQ5LDM1OTU1LDM1OTU3LDM1OTU4LDM1OTYzLDM1OTY2LDM1OTc0LDM1OTc1LDM1OTc5LDM1OTg0LDM1OTg2LDM1OTg3LDM1OTkzLDM1''@;'; put 'put ''OTk1LDM1OTk2LDM2MDA0LDM2MDI1LDM2MDI2LDM2MDM3LDM2MDM4LDM2MDQxLDM2MDQzLDM2MDQ3LDM2MDU0LDM2MDUzLDM2MDU3LDM2MDYxLDM2MDY1LDM2MDcyLDM2MDc2LDM2MDc5LDM2MDgwLDM2MDgyLDM2MDg1LDM2MDg3LDM2MDg4LDM2MDk0LDM2MDk1LDM2MDk3LDM2MDk5LDM2MTA1''@;'; put 'put ''LDM2MTE0LDM2MTE5LDM2MTIzLDM2MTk3LDM2MjAxLDM2MjA0LDM2MjA2LDM2MjIzLDM2MjI2LDM2MjI4LDM2MjMyLDM2MjM3LDM2MjQwLDM2MjQxLDM2MjQ1LDM2MjU0LDM2MjU1LDM2MjU2LDM2MjYyLDM2MjY3LDM2MjY4LDM2MjcxLDM2Mjc0LDM2Mjc3LDM2Mjc5LDM2MjgxLDM2MjgzLDM2''@;'; put 'put ''Mjg4LDM2MjkzLDM2Mjk0LDM2Mjk1LDM2Mjk2LDM2Mjk4LDM2MzAyLDM2MzA1LDM2MzA4LDM2MzA5LDM2MzExLDM2MzEzLDM2MzI0LDM2MzI1LDM2MzI3LDM2MzMyLDM2MzM2LDM2Mjg0LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQ5LDM2MzUzLDM2MzU2LDM2MzU3LDM2MzU4LDM2MzYzLDM2MzY5''@;'; put 'put ''LDM2MzcyLDM2Mzc0LDM2Mzg0LDM2Mzg1LDM2Mzg2LDM2Mzg3LDM2MzkwLDM2MzkxLDM2NDAxLDM2NDAzLDM2NDA2LDM2NDA3LDM2NDA4LDM2NDA5LDM2NDEzLDM2NDE2LDM2NDE3LDM2NDI3LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDM2LDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ5LDM2''@;'; put 'put ''NDUwLDM2NDU3LDM2NDYwLDM2NDYxLDM2NDYzLDM2NDY0LDM2NDY1LDM2NDczLDM2NDc0LDM2NDc1LDM2NDgyLDM2NDgzLDM2NDg5LDM2NDk2LDM2NDk4LDM2NTAxLDM2NTA2LDM2NTA3LDM2NTA5LDM2NTEwLDM2NTE0LDM2NTE5LDM2NTIxLDM2NTI1LDM2NTI2LDM2NTMxLDM2NTMzLDM2NTM4''@;'; put 'put ''LDM2NTM5LDM2NTQ0LDM2NTQ1LDM2NTQ3LDM2NTQ4LDM2NTUxLDM2NTU5LDM2NTYxLDM2NTY0LDM2NTcyLDM2NTg0LDM2NTkwLDM2NTkyLDM2NTkzLDM2NTk5LDM2NjAxLDM2NjAyLDM2NTg5LDM2NjA4LDM2NjEwLDM2NjE1LDM2NjE2LDM2NjIzLDM2NjI0LDM2NjMwLDM2NjMxLDM2NjMyLDM2''@;'; put 'put ''NjM4LDM2NjQwLDM2NjQxLDM2NjQzLDM2NjQ1LDM2NjQ3LDM2NjQ4LDM2NjUyLDM2NjUzLDM2NjU0LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY2LDM2NjcyLDM2NjczLDM2Njc1LDM2Njc5LDM2Njg3LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk2LDM2NzAxLDM2NzAy''@;'; put 'put ''LDM2NzA5LDM2NzY1LDM2NzY4LDM2NzY5LDM2NzcyLDM2NzczLDM2Nzc0LDM2Nzg5LDM2NzkwLDM2NzkyLDM2Nzk4LDM2ODAwLDM2ODAxLDM2ODA2LDM2ODEwLDM2ODExLDM2ODEzLDM2ODE2LDM2ODE4LDM2ODE5LDM2ODIxLDM2ODMyLDM2ODM1LDM2ODM2LDM2ODQwLDM2ODQ2LDM2ODQ5LDM2''@;'; put 'put ''ODUzLDM2ODU0LDM2ODU5LDM2ODYyLDM2ODY2LDM2ODY4LDM2ODcyLDM2ODc2LDM2ODg4LDM2ODkxLDM2OTA0LDM2OTA1LDM2OTExLDM2OTA2LDM2OTA4LDM2OTA5LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTI3LDM2OTMxLDM2OTMyLDM2OTQwLDM2OTU1LDM2OTU3LDM2OTYyLDM2OTY2LDM2OTY3''@;'; put 'put ''LDM2OTcyLDM2OTc2LDM2OTgwLDM2OTg1LDM2OTk3LDM3ZTMsMzcwMDMsMzcwMDQsMzcwMDYsMzcwMDgsMzcwMTMsMzcwMTUsMzcwMTYsMzcwMTcsMzcwMTksMzcwMjQsMzcwMjUsMzcwMjYsMzcwMjksMzcwNDAsMzcwNDIsMzcwNDMsMzcwNDQsMzcwNDYsMzcwNTMsMzcwNjgsMzcwNTQsMzcw''@;'; put 'put ''NTksMzcwNjAsMzcwNjEsMzcwNjMsMzcwNjQsMzcwNzcsMzcwNzksMzcwODAsMzcwODEsMzcwODQsMzcwODUsMzcwODcsMzcwOTMsMzcwNzQsMzcxMTAsMzcwOTksMzcxMDMsMzcxMDQsMzcxMDgsMzcxMTgsMzcxMTksMzcxMjAsMzcxMjQsMzcxMjUsMzcxMjYsMzcxMjgsMzcxMzMsMzcxMzYs''@;'; put 'put ''MzcxNDAsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDgsMzcxNTAsMzcxNTIsMzcxNTcsMzcxNTQsMzcxNTUsMzcxNTksMzcxNjEsMzcxNjYsMzcxNjcsMzcxNjksMzcxNzIsMzcxNzQsMzcxNzUsMzcxNzcsMzcxNzgsMzcxODAsMzcxODEsMzcxODcsMzcxOTEsMzcxOTIsMzcxOTksMzcy''@;'; put 'put ''MDMsMzcyMDcsMzcyMDksMzcyMTAsMzcyMTEsMzcyMTcsMzcyMjAsMzcyMjMsMzcyMjksMzcyMzYsMzcyNDEsMzcyNDIsMzcyNDMsMzcyNDksMzcyNTEsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNjIsMzcyNjUsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzIsMzcyNzgsMzcyODEsMzcyODYsMzcyODgs''@;'; put 'put ''MzcyOTIsMzcyOTMsMzcyOTQsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDcsMzczMDgsMzczMDksMzczMTEsMzczMTQsMzczMTUsMzczMTcsMzczMzEsMzczMzIsMzczMzUsMzczMzcsMzczMzgsMzczNDIsMzczNDgsMzczNDksMzczNTMsMzczNTQsMzczNTYsMzczNTcsMzcz''@;'; put 'put ''NTgsMzczNTksMzczNjAsMzczNjEsMzczNjcsMzczNjksMzczNzEsMzczNzMsMzczNzYsMzczNzcsMzczODAsMzczODEsMzczODIsMzczODMsMzczODUsMzczODYsMzczODgsMzczOTIsMzczOTQsMzczOTUsMzczOTgsMzc0MDAsMzc0MDQsMzc0MDUsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQs''@;'; put 'put ''Mzc0MTYsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjcsMzc0MjksMzc0MzAsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzYsMzc0MzgsMzc0NDAsMzc0NDIsMzc0NDMsMzc0NDYsMzc0NDcsMzc0NTAsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTcsMzc0NjQsMzc0NjUsMzc0NjgsMzc0NjksMzc0NzIsMzc0''@;'; put 'put ''NzMsMzc0NzcsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODYsMzc0ODcsMzc0ODgsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDMsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTcsMzc1MTgsMzc1MjIsMzc1MjcsMzc1MjksMzc1MzUsMzc1MzYsMzc1NDAs''@;'; put 'put ''Mzc1NDEsMzc1NDMsMzc1NDQsMzc1NDcsMzc1NTEsMzc1NTQsMzc1NTgsMzc1NjAsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzYsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODQsMzc1ODcsMzc1''@;'; put 'put ''ODksMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTYsMzc1OTcsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDMsMzc2MDUsMzc2MDcsMzc2MDgsMzc2MTIsMzc2MTQsMzc2MTYsMzc2MjUsMzc2MjcsMzc2MzEsMzc2MzIsMzc2MzQsMzc2NDAsMzc2NDUsMzc2NDksMzc2NTIsMzc2NTMsMzc2NjAsMzc2NjEs''@;'; put 'put ''Mzc2NjIsMzc2NjMsMzc2NjUsMzc2NjgsMzc2NjksMzc2NzEsMzc2NzMsMzc2NzQsMzc2ODMsMzc2ODQsMzc2ODYsMzc2ODcsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTcsMzc3MTksMzc3MjAsMzc3MjIsMzc3MjYsMzc3MzIsMzc3MzMsMzc3MzUsMzc3MzcsMzc3''@;'; put 'put ''MzgsMzc3NDEsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDcsMzc3NDgsMzc3NTAsMzc3NTQsMzc3NTcsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjgsMzc3NzAsMzc3NzEsMzc3NzMsMzc3NzUsMzc3NzgsMzc3ODEsMzc3ODQsMzc3ODcsMzc3OTAsMzc3OTMsMzc3OTUsMzc3OTYsMzc3OTgs''@;'; put 'put ''Mzc4MDAsMzc4MDMsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTgsMzc4MDEsMzc4MjUsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzMsMzc4MzQsMzc4MzUsMzc4MzYsMzc4MzcsMzc4NDMsMzc4NDksMzc4NTIsMzc4NTQsMzc4NTUsMzc4NTgsMzc4NjIsMzc4NjMsMzc4ODEsMzc4NzksMzc4''@;'; put 'put ''ODAsMzc4ODIsMzc4ODMsMzc4ODUsMzc4ODksMzc4OTAsMzc4OTIsMzc4OTYsMzc4OTcsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTksMzc5MzQsMzc5MzUsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDcsMzc5NTEsMzc5NDksMzc5NTUsMzc5NTcsMzc5NjAs''@;'; put 'put ''Mzc5NjIsMzc5NjQsMzc5NzMsMzc5NzcsMzc5ODAsMzc5ODMsMzc5ODUsMzc5ODcsMzc5OTIsMzc5OTUsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDEsMzgwMDIsMzgwMjAsMzgwMTksMzgyNjQsMzgyNjUsMzgyNzAsMzgyNzYsMzgyODAsMzgyODQsMzgyODUsMzgyODYsMzgzMDEsMzgzMDIsMzgz''@;'; put 'put ''MDMsMzgzMDUsMzgzMTAsMzgzMTMsMzgzMTUsMzgzMTYsMzgzMjQsMzgzMjYsMzgzMzAsMzgzMzMsMzgzMzUsMzgzNDIsMzgzNDQsMzgzNDUsMzgzNDcsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNjEsMzgzNjIsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNzIsMzgzNzQsMzg0Mjks''@;'; put 'put ''Mzg0MzAsMzg0MzQsMzg0MzYsMzg0MzcsMzg0MzgsMzg0NDQsMzg0NDksMzg0NTEsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjAsMzg0NjEsMzg0NjUsMzg0ODIsMzg0ODQsMzg0ODYsMzg0ODcsMzg0ODgsMzg0OTcsMzg1MTAsMzg1MTYsMzg1MjMsMzg1MjQsMzg1MjYsMzg1MjcsMzg1''@;'; put 'put ''MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzcsMzg1NDUsMzg1NTAsMzg1NTQsMzg1NTcsMzg1NTksMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjksMzg1NzQsMzg1NzUsMzg1NzksMzg1ODYsMzg2MDIsMzg2MTAsMjM5ODYsMzg2MTYsMzg2MTgsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MzMsMzg2Mzks''@;'; put 'put ''Mzg2NDEsMzg2NTAsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjUsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTYsMzg3MDUsMzg3MDcsMzg3MjEsMzg3MjMsMzg3MzAsMzg3MzQsMzg3MzUsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDcsMzg3NTUsMzg3NTksMzg3''@;'; put 'put ''NjIsMzg3NjYsMzg3NzEsMzg3NzQsMzg3NzUsMzg3NzYsMzg3NzksMzg3ODEsMzg3ODMsMzg3ODQsMzg3OTMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTQsMzg4MTUsMzg4MTgsMzg4MjgsMzg4MzAsMzg4MzMsMzg4MzQsMzg4MzcsMzg4MzgsMzg4NDAsMzg4NDEsMzg4NDIs''@;'; put 'put ''Mzg4NDQsMzg4NDYsMzg4NDcsMzg4NDksMzg4NTIsMzg4NTMsMzg4NTUsMzg4NTcsMzg4NTgsMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjQsMzg4NjUsMzg4NjgsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzcsMzg4NzgsMzg4ODAsMzg4NzUsMzg4ODEsMzg4ODQsMzg4OTUsMzg4OTcsMzg5MDAsMzg5''@;'; put 'put ''MDMsMzg5MDQsMzg5MDYsMzg5MTksMzg5MjIsMzg5MzcsMzg5MjUsMzg5MjYsMzg5MzIsMzg5MzQsMzg5NDAsMzg5NDIsMzg5NDQsMzg5NDcsMzg5NTAsMzg5NTUsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjIsMzg5NjMsMzg5NjUsMzg5NDksMzg5NzQsMzg5ODAsMzg5ODMsMzg5ODYsMzg5OTMs''@;'; put 'put ''Mzg5OTQsMzg5OTUsMzg5OTgsMzg5OTksMzkwMDEsMzkwMDIsMzkwMTAsMzkwMTEsMzkwMTMsMzkwMTQsMzkwMTgsMzkwMjAsMzkwODMsMzkwODUsMzkwODYsMzkwODgsMzkwOTIsMzkwOTUsMzkwOTYsMzkwOTgsMzkwOTksMzkxMDMsMzkxMDYsMzkxMDksMzkxMTIsMzkxMTYsMzkxMzcsMzkx''@;'; put 'put ''MzksMzkxNDEsMzkxNDIsMzkxNDMsMzkxNDYsMzkxNTUsMzkxNTgsMzkxNzAsMzkxNzUsMzkxNzYsMzkxODUsMzkxODksMzkxOTAsMzkxOTEsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTksMzkyMDIsMzkyMDYsMzkyMDcsMzkyMTEsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjUs''@;'; put 'put ''MzkyMjYsMzkyMjcsMzkyMjgsMzkyMzIsMzkyMzMsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDUsMzkyNDYsMzkyNTIsMzkyNTYsMzkyNTcsMzkyNTksMzkyNjAsMzkyNjIsMzkyNjMsMzkyNjQsMzkzMjMsMzkzMjUsMzkzMjcsMzkzMzQsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDksMzkzNTMsMzkz''@;'; put 'put ''NTQsMzkzNTcsMzkzNTksMzkzNjMsMzkzNjksMzkzNzksMzkzODAsMzkzODUsMzkzODYsMzkzODgsMzkzOTAsMzkzOTksMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDgsMzk0MTIsMzk0MTMsMzk0MTcsMzk0MjEsMzk0MjIsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MzUsMzk0MzYsMzk0NDAsMzk0NDEs''@;'; put 'put ''Mzk0NDYsMzk0NTQsMzk0NTYsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjMsMzk0NjksMzk0NzAsMzk0NzUsMzk0NzcsMzk0NzgsMzk0ODAsMzk0OTUsMzk0ODksMzk0OTIsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDIsMzk1MDUsMzk1MDgsMzk1MTAsMzk1MTcsMzk1OTQsMzk1OTYsMzk1OTgsMzk1''@;'; put 'put ''OTksMzk2MDIsMzk2MDQsMzk2MDUsMzk2MDYsMzk2MDksMzk2MTEsMzk2MTQsMzk2MTUsMzk2MTcsMzk2MTksMzk2MjIsMzk2MjQsMzk2MzAsMzk2MzIsMzk2MzQsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDMsMzk2NDQsMzk2NDgsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTcsMzk2NjAsMzk2NjYs''@;'; put 'put ''Mzk2NjcsMzk2NjksMzk2NzMsMzk2NzQsMzk2NzcsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODMsMzk2ODQsMzk2ODUsMzk2ODgsMzk2ODksMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTgsMzk3MDIsMzk3MDUsMzk3MDcsMzk3MDgsMzk3MTIsMzk3MTgsMzk3MjMsMzk3''@;'; put 'put ''MjUsMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzUsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NTIsMzk3NTUsMzk3NTYsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NzEsMzk3NzQsMzk3NzcsMzk3NzksMzk3ODEsMzk3ODIsMzk3ODQsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTUsMzk3OTcs''@;'; put 'put ''Mzk3OTksMzk4MDAsMzk4MDEsMzk4MDcsMzk4MDgsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjEsMzk4MjMsMzk4MjQsMzk4MjgsMzk4MzQsMzk4MzcsMzk4MzgsMzk4NDYsMzk4NDcsMzk4NDksMzk4NTIsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NjMsMzk4''@;'; put 'put ''NjQsMzk4NjcsMzk4NjgsMzk4NzAsMzk4NzEsMzk4NzMsMzk4NzksMzk4ODAsMzk4ODYsMzk4ODgsMzk4OTUsMzk4OTYsMzk5MDEsMzk5MDMsMzk5MDksMzk5MTEsMzk5MTQsMzk5MTUsMzk5MTksMzk5MjMsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzMsMzk5MzUsMzk5MzYsMzk5Mzgs''@;'; put 'put ''Mzk5NDcsMzk5NTEsMzk5NTMsMzk5NTgsMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjQsMzk5NjYsMzk5NzAsMzk5NzEsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5ODUsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTcsNDAwMDEsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDksNDAwMTAsNDAw''@;'; put 'put ''MTQsNDAwMTUsNDAwMTYsNDAwMTksNDAwMjAsNDAwMjIsNDAwMjQsNDAwMjcsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzUsNDAwNDEsNDAwNDIsNDAwMjgsNDAwNDMsNDAwNDAsNDAwNDYsNDAwNDgsNDAwNTAsNDAwNTMsNDAwNTUsNDAwNTksNDAxNjYsNDAxNzgsNDAxODMsNDAxODUsNDAyMDMs''@;'; put 'put ''NDAxOTQsNDAyMDksNDAyMTUsNDAyMTYsNDAyMjAsNDAyMjEsNDAyMjIsNDAyMzksNDAyNDAsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNTAsNDAyNTIsNDAyNjEsNDAyNTMsNDAyNTgsNDAyNTksNDAyNjMsNDAyNjYsNDAyNzUsNDAyNzYsNDAyODcsNDAyOTEsNDAyOTAsNDAyOTMsNDAyOTcsNDAy''@;'; put 'put ''OTgsNDAyOTksNDAzMDQsNDAzMTAsNDAzMTEsNDAzMTUsNDAzMTYsNDAzMTgsNDAzMjMsNDAzMjQsNDAzMjYsNDAzMzAsNDAzMzMsNDAzMzQsNDAzMzgsNDAzMzksNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNTMsNDAzNjIsNDAzNjQsNDAzNjYsNDAzNjksNDAzNzMsNDAzNzcsNDAzODAs''@;'; put 'put ''NDAzODMsNDAzODcsNDAzOTEsNDAzOTMsNDAzOTQsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MTAsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MjEsNDA0MjMsNDA0MjUsNDA0MjcsNDA0MzAsNDA0MzIsNDA0MzUsNDA0MzYsNDA0NDYsNDA0NTgsNDA0NTAsNDA0NTUsNDA0NjIsNDA0NjQsNDA0''@;'; put 'put ''NjUsNDA0NjYsNDA0NjksNDA0NzAsNDA0NzMsNDA0NzYsNDA0NzcsNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzYsNDA1NzgsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODMsNDA1OTAsNDA1OTEsNDA1OTgsNDA2MDAsNDA2MDMsNDA2MDYsNDA2MTIsNDA2MTYsNDA2MjAsNDA2MjIsNDA2MjMsNDA2MjQs''@;'; put 'put ''NDA2MjcsNDA2MjgsNDA2MjksNDA2NDYsNDA2NDgsNDA2NTEsNDA2NjEsNDA2NzEsNDA2NzYsNDA2NzksNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTMsNDA2OTYsNDA3MDMsNDA3MDYsNDA3MDcsNDA3MTMsNDA3MTksNDA3MjAsNDA3MjEsNDA3MjIsNDA3MjQsNDA3''@;'; put 'put ''MjYsNDA3MjcsNDA3MjksNDA3MzAsNDA3MzEsNDA3MzUsNDA3MzgsNDA3NDIsNDA3NDYsNDA3NDcsNDA3NTEsNDA3NTMsNDA3NTQsNDA3NTYsNDA3NTksNDA3NjEsNDA3NjIsNDA3NjQsNDA3NjUsNDA3NjcsNDA3NjksNDA3NzEsNDA3NzIsNDA3NzMsNDA3NzQsNDA3NzUsNDA3ODcsNDA3ODks''@;'; put 'put ''NDA3OTAsNDA3OTEsNDA3OTIsNDA3OTQsNDA3OTcsNDA3OTgsNDA4MDgsNDA4MDksNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTksNDA4MjEsNDA4MjYsNDA4MjksNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTIsNDA4NTQsNDA4NTUsNDA4NjIsNDA4NjUsNDA4NjYsNDA4''@;'; put 'put ''NjcsNDA4NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; 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 ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxpYm04NjY6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEw''@;'; put 'put ''NjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDk2MTcsOTYxOCw5NjE5LDk0NzQsOTUwOCw5NTY5LDk1''@;'; put 'put ''NzAsOTU1OCw5NTU3LDk1NzEsOTU1Myw5NTU5LDk1NjUsOTU2NCw5NTYzLDk0ODgsOTQ5Miw5NTI0LDk1MTYsOTUwMCw5NDcyLDk1MzIsOTU2Niw5NTY3LDk1NjIsOTU1Niw5NTc3LDk1NzQsOTU2OCw5NTUyLDk1ODAsOTU3NSw5NTc2LDk1NzIsOTU3Myw5NTYxLDk1NjAsOTU1NCw5NTU1LDk1''@;'; put 'put ''NzksOTU3OCw5NDk2LDk0ODQsOTYwOCw5NjA0LDk2MTIsOTYxNiw5NjAwLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTAyNSwxMTA1LDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzOCwxMTE4LDE3''@;'; put 'put ''Niw4NzI5LDE4Myw4NzMwLDg0NzAsMTY0LDk2MzIsMTYwXSwiaXNvLTg4NTktMiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYs''@;'; put 'put ''MTU3LDE1OCwxNTksMTYwLDI2MCw3MjgsMzIxLDE2NCwzMTcsMzQ2LDE2NywxNjgsMzUyLDM1MCwzNTYsMzc3LDE3MywzODEsMzc5LDE3NiwyNjEsNzMxLDMyMiwxODAsMzE4LDM0Nyw3MTEsMTg0LDM1MywzNTEsMzU3LDM3OCw3MzMsMzgyLDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywy''@;'; put 'put ''NjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3''@;'; put 'put ''MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLCJpc28tODg1OS0zIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgs''@;'; put 'put ''MTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjk0LDcyOCwxNjMsMTY0LG51bGwsMjkyLDE2NywxNjgsMzA0LDM1MCwyODYsMzA4LDE3MyxudWxsLDM3OSwxNzYsMjk1LDE3OCwxNzksMTgwLDE4MSwyOTMsMTgzLDE4NCwzMDUsMzUxLDI4NywzMDksMTg5''@;'; put 'put ''LG51bGwsMzgwLDE5MiwxOTMsMTk0LG51bGwsMTk2LDI2NiwyNjQsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsbnVsbCwyMDksMjEwLDIxMSwyMTIsMjg4LDIxNCwyMTUsMjg0LDIxNywyMTgsMjE5LDIyMCwzNjQsMzQ4LDIyMywyMjQsMjI1LDIyNixudWxsLDIyOCwyNjcs''@;'; put 'put ''MjY1LDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LG51bGwsMjQxLDI0MiwyNDMsMjQ0LDI4OSwyNDYsMjQ3LDI4NSwyNDksMjUwLDI1MSwyNTIsMzY1LDM0OSw3MjldLCJpc28tODg1OS00IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwx''@;'; put 'put ''MzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDMxMiwzNDIsMTY0LDI5NiwzMTUsMTY3LDE2OCwzNTIsMjc0LDI5MCwzNTgsMTczLDM4MSwxNzUsMTc2LDI2MSw3MzEsMzQzLDE4''@;'; put 'put ''MCwyOTcsMzE2LDcxMSwxODQsMzUzLDI3NSwyOTEsMzU5LDMzMCwzODIsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDI5OCwyNzIsMzI1LDMzMiwzMTAsMjEyLDIxMywyMTQsMjE1LDIxNiwzNzAsMjE4LDIxOSwyMjAsMzYw''@;'; put 'put ''LDM2MiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywyMzgsMjk5LDI3MywzMjYsMzMzLDMxMSwyNDQsMjQ1LDI0NiwyNDcsMjQ4LDM3MSwyNTAsMjUxLDI1MiwzNjEsMzYzLDcyOV0sImlzby04ODU5LTUiOlsxMjgsMTI5LDEzMCwx''@;'; put 'put ''MzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywx''@;'; put 'put ''MDM0LDEwMzUsMTAzNiwxNzMsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEw''@;'; put 'put ''NjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDEx''@;'; put 'put ''MDAsMTEwMSwxMTAyLDExMDMsODQ3MCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxNjcsMTExOCwxMTE5XSwiaXNvLTg4NTktNiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwx''@;'; put 'put ''NDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsbnVsbCxudWxsLDE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NDgsMTczLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU2MyxudWxsLG51bGwsbnVsbCwxNTY3LG51bGwsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4''@;'; put 'put ''NywxNTg4LDE1ODksMTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjAwLDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLCJpc28tODg1OS03IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwx''@;'; put 'put ''NTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsODIxNiw4MjE3LDE2Myw4MzY0LDgzNjcsMTY2LDE2NywxNjgsMTY5LDg5MCwxNzEsMTcyLDE3MyxudWxsLDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCw5MDEsOTAyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAs''@;'; put 'put ''OTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEs''@;'; put 'put ''OTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSwiaXNvLTg4NTktOCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwx''@;'; put 'put ''NDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwx''@;'; put 'put ''ODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODIxNSwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMs''@;'; put 'put ''MTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLCJpc28tODg1OS0xMCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3''@;'; put 'put ''LDE1OCwxNTksMTYwLDI2MCwyNzQsMjkwLDI5OCwyOTYsMzEwLDE2NywzMTUsMjcyLDM1MiwzNTgsMzgxLDE3MywzNjIsMzMwLDE3NiwyNjEsMjc1LDI5MSwyOTksMjk3LDMxMSwxODMsMzE2LDI3MywzNTMsMzU5LDM4Miw4MjEzLDM2MywzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4''@;'; put 'put ''LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjA3LDIwOCwzMjUsMzMyLDIxMSwyMTIsMjEzLDIxNCwzNjAsMjE2LDM3MCwyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyMzks''@;'; put 'put ''MjQwLDMyNiwzMzMsMjQzLDI0NCwyNDUsMjQ2LDM2MSwyNDgsMzcxLDI1MCwyNTEsMjUyLDI1MywyNTQsMzEyXSwiaXNvLTg4NTktMTMiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwx''@;'; put 'put ''NDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjIxLDE2MiwxNjMsMTY0LDgyMjIsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSw4MjIwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5''@;'; put 'put ''LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEs''@;'; put 'put ''Mjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsODIxN10sImlzby04ODU5LTE0IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzks''@;'; put 'put ''MTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsNzY4Miw3NjgzLDE2MywyNjYsMjY3LDc2OTAsMTY3LDc4MDgsMTY5LDc4MTAsNzY5MSw3OTIyLDE3MywxNzQsMzc2LDc3MTAsNzcxMSwyODgs''@;'; put 'put ''Mjg5LDc3NDQsNzc0NSwxODIsNzc2Niw3ODA5LDc3NjcsNzgxMSw3Nzc2LDc5MjMsNzgxMiw3ODEzLDc3NzcsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDM3MiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCw3Nzg2LDIxNiwy''@;'; put 'put ''MTcsMjE4LDIxOSwyMjAsMjIxLDM3NCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDM3MywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0Niw3Nzg3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDM3NSwyNTVdLCJpc28tODg1''@;'; put 'put ''OS0xNSI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjQsMTY1LDM1Miwx''@;'; put 'put ''NjcsMzUzLDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMzgxLDE4MSwxODIsMTgzLDM4MiwxODUsMTg2LDE4NywzMzgsMzM5LDM3NiwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIw''@;'; put 'put ''OCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5''@;'; put 'put ''LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSwiaXNvLTg4NTktMTYiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgs''@;'; put 'put ''MTU5LDE2MCwyNjAsMjYxLDMyMSw4MzY0LDgyMjIsMzUyLDE2NywzNTMsMTY5LDUzNiwxNzEsMzc3LDE3MywzNzgsMzc5LDE3NiwxNzcsMjY4LDMyMiwzODEsODIyMSwxODIsMTgzLDM4MiwyNjksNTM3LDE4NywzMzgsMzM5LDM3NiwzODAsMTkyLDE5MywxOTQsMjU4LDE5NiwyNjIsMTk4LDE5''@;'; put 'put ''OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI3MiwzMjMsMjEwLDIxMSwyMTIsMzM2LDIxNCwzNDYsMzY4LDIxNywyMTgsMjE5LDIyMCwyODAsNTM4LDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDI2MywyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjcz''@;'; put 'put ''LDMyNCwyNDIsMjQzLDI0NCwzMzcsMjQ2LDM0NywzNjksMjQ5LDI1MCwyNTEsMjUyLDI4MSw1MzksMjU1XSwia29pOC1yIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYx''@;'; put 'put ''OSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsOTU3''@;'; put 'put ''MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkx''@;'; put 'put ''LDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2''@;'; put 'put ''LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSwia29pOC11IjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcy''@;'; put 'put ''OSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDExMDgsOTU1NiwxMTEwLDExMTEsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDExNjksMTExOCw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsMTAyOCw5NTcxLDEwMzAsMTAz''@;'; put 'put ''MSw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsMTE2OCwxMDM4LDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAw''@;'; put 'put ''LDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3''@;'; put 'put ''LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxtYWNpbnRvc2g6WzE5NiwxOTcsMTk5LDIwMSwyMDksMjE0LDIyMCwyMjUsMjI0LDIyNiwyMjgsMjI3LDIyOSwyMzEsMjMzLDIzMiwyMzQsMjM1LDIzNywyMzYsMjM4LDIzOSwyNDEsMjQzLDI0MiwyNDQsMjQ2LDI0NSwyNTAsMjQ5LDI1''@;'; put 'put ''MSwyNTIsODIyNCwxNzYsMTYyLDE2MywxNjcsODIyNiwxODIsMjIzLDE3NCwxNjksODQ4MiwxODAsMTY4LDg4MDAsMTk4LDIxNiw4NzM0LDE3Nyw4ODA0LDg4MDUsMTY1LDE4MSw4NzA2LDg3MjEsODcxOSw5NjAsODc0NywxNzAsMTg2LDkzNywyMzAsMjQ4LDE5MSwxNjEsMTcyLDg3MzAsNDAy''@;'; put 'put ''LDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDE5MiwxOTUsMjEzLDMzOCwzMzksODIxMSw4MjEyLDgyMjAsODIyMSw4MjE2LDgyMTcsMjQ3LDk2NzQsMjU1LDM3Niw4MjYwLDgzNjQsODI0OSw4MjUwLDY0MjU3LDY0MjU4LDgyMjUsMTgzLDgyMTgsODIyMiw4MjQwLDE5NCwyMDIsMTkzLDIw''@;'; put 'put ''MywyMDAsMjA1LDIwNiwyMDcsMjA0LDIxMSwyMTIsNjM3NDMsMjEwLDIxOCwyMTksMjE3LDMwNSw3MTAsNzMyLDE3NSw3MjgsNzI5LDczMCwxODQsNzMzLDczMSw3MTFdLCJ3aW5kb3dzLTg3NCI6WzgzNjQsMTI5LDEzMCwxMzEsMTMyLDgyMzAsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQw''@;'; put 'put ''LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDM1ODUsMzU4NiwzNTg3LDM1ODgsMzU4OSwzNTkwLDM1OTEsMzU5MiwzNTkzLDM1OTQsMzU5NSwzNTk2LDM1OTcsMzU5OCwzNTk5LDM2''@;'; put 'put ''MDAsMzYwMSwzNjAyLDM2MDMsMzYwNCwzNjA1LDM2MDYsMzYwNywzNjA4LDM2MDksMzYxMCwzNjExLDM2MTIsMzYxMywzNjE0LDM2MTUsMzYxNiwzNjE3LDM2MTgsMzYxOSwzNjIwLDM2MjEsMzYyMiwzNjIzLDM2MjQsMzYyNSwzNjI2LDM2MjcsMzYyOCwzNjI5LDM2MzAsMzYzMSwzNjMyLDM2''@;'; put 'put ''MzMsMzYzNCwzNjM1LDM2MzYsMzYzNywzNjM4LDM2MzksMzY0MCwzNjQxLDM2NDIsbnVsbCxudWxsLG51bGwsbnVsbCwzNjQ3LDM2NDgsMzY0OSwzNjUwLDM2NTEsMzY1MiwzNjUzLDM2NTQsMzY1NSwzNjU2LDM2NTcsMzY1OCwzNjU5LDM2NjAsMzY2MSwzNjYyLDM2NjMsMzY2NCwzNjY1LDM2''@;'; put 'put ''NjYsMzY2NywzNjY4LDM2NjksMzY3MCwzNjcxLDM2NzIsMzY3MywzNjc0LDM2NzUsbnVsbCxudWxsLG51bGwsbnVsbF0sIndpbmRvd3MtMTI1MCI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMzUyLDgyNDksMzQ2LDM1NiwzODEsMzc3LDE0NCw4MjE2''@;'; put 'put ''LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDM1Myw4MjUwLDM0NywzNTcsMzgyLDM3OCwxNjAsNzExLDcyOCwzMjEsMTY0LDI2MCwxNjYsMTY3LDE2OCwxNjksMzUwLDE3MSwxNzIsMTczLDE3NCwzNzksMTc2LDE3Nyw3MzEsMzIyLDE4MCwxODEsMTgyLDE4MywxODQs''@;'; put 'put ''MjYxLDM1MSwxODcsMzE3LDczMywzMTgsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwy''@;'; put 'put ''MjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sIndpbmRvd3MtMTI1MSI6WzEwMjYsMTAyNyw4MjE4LDExMDcsODIyMiw4MjMw''@;'; put 'put ''LDgyMjQsODIyNSw4MzY0LDgyNDAsMTAzMyw4MjQ5LDEwMzQsMTAzNiwxMDM1LDEwMzksMTEwNiw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDExMTMsODI1MCwxMTE0LDExMTYsMTExNSwxMTE5LDE2MCwxMDM4LDExMTgsMTAzMiwxNjQsMTE2OCwxNjYsMTY3''@;'; put 'put ''LDEwMjUsMTY5LDEwMjgsMTcxLDE3MiwxNzMsMTc0LDEwMzEsMTc2LDE3NywxMDMwLDExMTAsMTE2OSwxODEsMTgyLDE4MywxMTA1LDg0NzAsMTEwOCwxODcsMTExMiwxMDI5LDExMDksMTExMSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAs''@;'; put 'put ''MTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMs''@;'; put 'put ''MTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzXSwid2luZG93cy0xMjUyIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwz''@;'; put 'put ''NTIsODI0OSwzMzgsMTQxLDM4MSwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywzODIsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYs''@;'; put 'put ''MTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywy''@;'; put 'put ''MTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSwid2luZG93cy0xMjUz''@;'; put 'put ''IjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCw5MDEsOTAyLDE2Mywx''@;'; put 'put ''NjQsMTY1LDE2NiwxNjcsMTY4LDE2OSxudWxsLDE3MSwxNzIsMTczLDE3NCw4MjEzLDE3NiwxNzcsMTc4LDE3OSw5MDAsMTgxLDE4MiwxODMsOTA0LDkwNSw5MDYsMTg3LDkwOCwxODksOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQs''@;'; put 'put ''OTI1LDkyNiw5MjcsOTI4LDkyOSxudWxsLDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUs''@;'; put 'put ''OTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsbnVsbF0sIndpbmRvd3MtMTI1NCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMzUyLDgyNDksMzM4LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4''@;'; put 'put ''MjEyLDczMiw4NDgyLDM1Myw4MjUwLDMzOSwxNTcsMTU4LDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkx''@;'; put 'put ''LDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyODYsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMzA0LDM1MCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIs''@;'; put 'put ''MjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI4NywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwzMDUsMzUxLDI1NV0sIndpbmRvd3MtMTI1NSI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTM4LDgyNDks''@;'; put 'put ''MTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDE1NCw4MjUwLDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2MiwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4''@;'; put 'put ''LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3LDE4OCwxODksMTkwLDE5MSwxNDU2LDE0NTcsMTQ1OCwxNDU5LDE0NjAsMTQ2MSwxNDYyLDE0NjMsMTQ2NCwxNDY1LDE0NjYsMTQ2NywxNDY4LDE0NjksMTQ3MCwxNDcxLDE0NzIsMTQ3MywxNDc0LDE0NzUsMTUyMCwxNTIxLDE1''@;'; put 'put ''MjIsMTUyMywxNTI0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTQ4OCwxNDg5LDE0OTAsMTQ5MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5NywxNDk4LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUwOSwxNTEwLDE1''@;'; put 'put ''MTEsMTUxMiwxNTEzLDE1MTQsbnVsbCxudWxsLDgyMDYsODIwNyxudWxsXSwid2luZG93cy0xMjU2IjpbODM2NCwxNjYyLDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTY1Nyw4MjQ5LDMzOCwxNjcwLDE2ODgsMTY3MiwxNzExLDgyMTYsODIxNyw4MjIwLDgyMjEsODIy''@;'; put 'put ''Niw4MjExLDgyMTIsMTcwNSw4NDgyLDE2ODEsODI1MCwzMzksODIwNCw4MjA1LDE3MjIsMTYwLDE1NDgsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzI2LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE1NjMsMTg3''@;'; put 'put ''LDE4OCwxODksMTkwLDE1NjcsMTcyOSwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDIxNSwxNTkxLDE1OTIsMTU5MywxNTk0LDE2MDAsMTYw''@;'; put 'put ''MSwxNjAyLDE2MDMsMjI0LDE2MDQsMjI2LDE2MDUsMTYwNiwxNjA3LDE2MDgsMjMxLDIzMiwyMzMsMjM0LDIzNSwxNjA5LDE2MTAsMjM4LDIzOSwxNjExLDE2MTIsMTYxMywxNjE0LDI0NCwxNjE1LDE2MTYsMjQ3LDE2MTcsMjQ5LDE2MTgsMjUxLDI1Miw4MjA2LDgyMDcsMTc0Nl0sIndpbmRv''@;'; put 'put ''d3MtMTI1NyI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMTM4LDgyNDksMTQwLDE2OCw3MTEsMTg0LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDE1NCw4MjUwLDE1NiwxNzUsNzMxLDE1OSwxNjAsbnVsbCwx''@;'; put 'put ''NjIsMTYzLDE2NCxudWxsLDE2NiwxNjcsMjE2LDE2OSwzNDIsMTcxLDE3MiwxNzMsMTc0LDE5OCwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3Nywy''@;'; put 'put ''NzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMz''@;'; put 'put ''MywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsNzI5XSwid2luZG93cy0xMjU4IjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4''@;'; put 'put ''MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5''@;'; put 'put ''MCwxOTEsMTkyLDE5MywxOTQsMjU4LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsNzY4LDIwNSwyMDYsMjA3LDI3MiwyMDksNzc3LDIxMSwyMTIsNDE2LDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCw0MzEsNzcxLDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDIyOSwyMzAsMjMx''@;'; put 'put ''LDIzMiwyMzMsMjM0LDIzNSw3NjksMjM3LDIzOCwyMzksMjczLDI0MSw4MDMsMjQzLDI0NCw0MTcsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDQzMiw4MzYzLDI1NV0sIngtbWFjLWN5cmlsbGljIjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0''@;'; put 'put ''OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDgyMjQsMTc2LDExNjgsMTYzLDE2Nyw4MjI2LDE4MiwxMDMwLDE3NCwxNjksODQ4MiwxMDI2''@;'; put 'put ''LDExMDYsODgwMCwxMDI3LDExMDcsODczNCwxNzcsODgwNCw4ODA1LDExMTAsMTgxLDExNjksMTAzMiwxMDI4LDExMDgsMTAzMSwxMTExLDEwMzMsMTExMywxMDM0LDExMTQsMTExMiwxMDI5LDE3Miw4NzMwLDQwMiw4Nzc2LDg3MTAsMTcxLDE4Nyw4MjMwLDE2MCwxMDM1LDExMTUsMTAzNiwx''@;'; put 'put ''MTE2LDExMDksODIxMSw4MjEyLDgyMjAsODIyMSw4MjE2LDgyMTcsMjQ3LDgyMjIsMTAzOCwxMTE4LDEwMzksMTExOSw4NDcwLDEwMjUsMTEwNSwxMTAzLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEw''@;'; put 'put ''ODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsODM2NF19fSh0aGlzfHx7fSl9LDk5NTY1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIob3QsUnQs''@;'; put 'put ''Q3Qpe3JldHVybiBSdDw9b3QmJm90PD1DdH1YZS5leHBvcnRzJiYhZ2VbImVuY29kaW5nLWluZGV4ZXMiXSYmKGdlWyJlbmNvZGluZy1pbmRleGVzIl09TCg4NjM4OSlbImVuY29kaW5nLWluZGV4ZXMiXSk7dmFyIE1lPU1hdGguZmxvb3I7ZnVuY3Rpb24gVShvdCl7aWYodm9pZCAwPT09b3Qp''@;'; put 'put ''cmV0dXJue307aWYob3Q9PT1PYmplY3Qob3QpKXJldHVybiBvdDt0aHJvdyBUeXBlRXJyb3IoIkNvdWxkIG5vdCBjb252ZXJ0IGFyZ3VtZW50IHRvIGRpY3Rpb25hcnkiKX1mdW5jdGlvbiBpZShvdCl7cmV0dXJuIDA8PW90JiZvdDw9MTI3fXZhciBsZT1pZSxZPS0xO2Z1bmN0aW9uIFcob3Qp''@;'; put 'put ''e3RoaXMudG9rZW5zPVtdLnNsaWNlLmNhbGwob3QpLHRoaXMudG9rZW5zLnJldmVyc2UoKX1XLnByb3RvdHlwZT17ZW5kT2ZTdHJlYW06ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy50b2tlbnMubGVuZ3RofSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zLmxlbmd0aD90aGlzLnRv''@;'; put 'put ''a2Vucy5wb3AoKTpZfSxwcmVwZW5kOmZ1bmN0aW9uKG90KXtpZihBcnJheS5pc0FycmF5KG90KSlmb3IodmFyIFJ0PW90O1J0Lmxlbmd0aDspdGhpcy50b2tlbnMucHVzaChSdC5wb3AoKSk7ZWxzZSB0aGlzLnRva2Vucy5wdXNoKG90KX0scHVzaDpmdW5jdGlvbihvdCl7aWYoQXJyYXkuaXNB''@;'; put 'put ''cnJheShvdCkpZm9yKHZhciBSdD1vdDtSdC5sZW5ndGg7KXRoaXMudG9rZW5zLnVuc2hpZnQoUnQuc2hpZnQoKSk7ZWxzZSB0aGlzLnRva2Vucy51bnNoaWZ0KG90KX19O3ZhciBOPS0xO2Z1bmN0aW9uIGVlKG90LFJ0KXtpZihvdCl0aHJvdyBUeXBlRXJyb3IoIkRlY29kZXIgZXJyb3IiKTty''@;'; put 'put ''ZXR1cm4gUnR8fDY1NTMzfWZ1bmN0aW9uIHEob3Qpe3Rocm93IFR5cGVFcnJvcigiVGhlIGNvZGUgcG9pbnQgIitvdCsiIGNvdWxkIG5vdCBiZSBlbmNvZGVkLiIpfWZ1bmN0aW9uIGFlKG90KXtyZXR1cm4gb3Q9U3RyaW5nKG90KS50cmltKCkudG9Mb3dlckNhc2UoKSxPYmplY3QucHJvdG90''@;'; put 'put ''eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGUsb3QpP2RlW290XTpudWxsfXZhciBmZT1be2VuY29kaW5nczpbe2xhYmVsczpbInVuaWNvZGUtMS0xLXV0Zi04IiwidXRmLTgiLCJ1dGY4Il0sbmFtZToiVVRGLTgifV0saGVhZGluZzoiVGhlIEVuY29kaW5nIn0se2VuY29kaW5nczpbe2xhYmVs''@;'; put 'put ''czpbIjg2NiIsImNwODY2IiwiY3NpYm04NjYiLCJpYm04NjYiXSxuYW1lOiJJQk04NjYifSx7bGFiZWxzOlsiY3Npc29sYXRpbjIiLCJpc28tODg1OS0yIiwiaXNvLWlyLTEwMSIsImlzbzg4NTktMiIsImlzbzg4NTkyIiwiaXNvXzg4NTktMiIsImlzb184ODU5LTI6MTk4NyIsImwyIiwibGF0''@;'; put 'put ''aW4yIl0sbmFtZToiSVNPLTg4NTktMiJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluMyIsImlzby04ODU5LTMiLCJpc28taXItMTA5IiwiaXNvODg1OS0zIiwiaXNvODg1OTMiLCJpc29fODg1OS0zIiwiaXNvXzg4NTktMzoxOTg4IiwibDMiLCJsYXRpbjMiXSxuYW1lOiJJU08tODg1OS0zIn0se2xh''@;'; put 'put ''YmVsczpbImNzaXNvbGF0aW40IiwiaXNvLTg4NTktNCIsImlzby1pci0xMTAiLCJpc284ODU5LTQiLCJpc284ODU5NCIsImlzb184ODU5LTQiLCJpc29fODg1OS00OjE5ODgiLCJsNCIsImxhdGluNCJdLG5hbWU6IklTTy04ODU5LTQifSx7bGFiZWxzOlsiY3Npc29sYXRpbmN5cmlsbGljIiwi''@;'; put 'put ''Y3lyaWxsaWMiLCJpc28tODg1OS01IiwiaXNvLWlyLTE0NCIsImlzbzg4NTktNSIsImlzbzg4NTk1IiwiaXNvXzg4NTktNSIsImlzb184ODU5LTU6MTk4OCJdLG5hbWU6IklTTy04ODU5LTUifSx7bGFiZWxzOlsiYXJhYmljIiwiYXNtby03MDgiLCJjc2lzbzg4NTk2ZSIsImNzaXNvODg1OTZp''@;'; put 'put ''IiwiY3Npc29sYXRpbmFyYWJpYyIsImVjbWEtMTE0IiwiaXNvLTg4NTktNiIsImlzby04ODU5LTYtZSIsImlzby04ODU5LTYtaSIsImlzby1pci0xMjciLCJpc284ODU5LTYiLCJpc284ODU5NiIsImlzb184ODU5LTYiLCJpc29fODg1OS02OjE5ODciXSxuYW1lOiJJU08tODg1OS02In0se2xh''@;'; put 'put ''YmVsczpbImNzaXNvbGF0aW5ncmVlayIsImVjbWEtMTE4IiwiZWxvdF85MjgiLCJncmVlayIsImdyZWVrOCIsImlzby04ODU5LTciLCJpc28taXItMTI2IiwiaXNvODg1OS03IiwiaXNvODg1OTciLCJpc29fODg1OS03IiwiaXNvXzg4NTktNzoxOTg3Iiwic3VuX2V1X2dyZWVrIl0sbmFtZToi''@;'; put 'put ''SVNPLTg4NTktNyJ9LHtsYWJlbHM6WyJjc2lzbzg4NTk4ZSIsImNzaXNvbGF0aW5oZWJyZXciLCJoZWJyZXciLCJpc28tODg1OS04IiwiaXNvLTg4NTktOC1lIiwiaXNvLWlyLTEzOCIsImlzbzg4NTktOCIsImlzbzg4NTk4IiwiaXNvXzg4NTktOCIsImlzb184ODU5LTg6MTk4OCIsInZpc3Vh''@;'; put 'put ''bCJdLG5hbWU6IklTTy04ODU5LTgifSx7bGFiZWxzOlsiY3Npc284ODU5OGkiLCJpc28tODg1OS04LWkiLCJsb2dpY2FsIl0sbmFtZToiSVNPLTg4NTktOC1JIn0se2xhYmVsczpbImNzaXNvbGF0aW42IiwiaXNvLTg4NTktMTAiLCJpc28taXItMTU3IiwiaXNvODg1OS0xMCIsImlzbzg4NTkx''@;'; put 'put ''MCIsImw2IiwibGF0aW42Il0sbmFtZToiSVNPLTg4NTktMTAifSx7bGFiZWxzOlsiaXNvLTg4NTktMTMiLCJpc284ODU5LTEzIiwiaXNvODg1OTEzIl0sbmFtZToiSVNPLTg4NTktMTMifSx7bGFiZWxzOlsiaXNvLTg4NTktMTQiLCJpc284ODU5LTE0IiwiaXNvODg1OTE0Il0sbmFtZToiSVNP''@;'; put 'put ''LTg4NTktMTQifSx7bGFiZWxzOlsiY3Npc29sYXRpbjkiLCJpc28tODg1OS0xNSIsImlzbzg4NTktMTUiLCJpc284ODU5MTUiLCJpc29fODg1OS0xNSIsImw5Il0sbmFtZToiSVNPLTg4NTktMTUifSx7bGFiZWxzOlsiaXNvLTg4NTktMTYiXSxuYW1lOiJJU08tODg1OS0xNiJ9LHtsYWJlbHM6''@;'; put 'put ''WyJjc2tvaThyIiwia29pIiwia29pOCIsImtvaTgtciIsImtvaThfciJdLG5hbWU6IktPSTgtUiJ9LHtsYWJlbHM6WyJrb2k4LXJ1Iiwia29pOC11Il0sbmFtZToiS09JOC1VIn0se2xhYmVsczpbImNzbWFjaW50b3NoIiwibWFjIiwibWFjaW50b3NoIiwieC1tYWMtcm9tYW4iXSxuYW1lOiJt''@;'; put 'put ''YWNpbnRvc2gifSx7bGFiZWxzOlsiZG9zLTg3NCIsImlzby04ODU5LTExIiwiaXNvODg1OS0xMSIsImlzbzg4NTkxMSIsInRpcy02MjAiLCJ3aW5kb3dzLTg3NCJdLG5hbWU6IndpbmRvd3MtODc0In0se2xhYmVsczpbImNwMTI1MCIsIndpbmRvd3MtMTI1MCIsIngtY3AxMjUwIl0sbmFtZToi''@;'; put 'put ''d2luZG93cy0xMjUwIn0se2xhYmVsczpbImNwMTI1MSIsIndpbmRvd3MtMTI1MSIsIngtY3AxMjUxIl0sbmFtZToid2luZG93cy0xMjUxIn0se2xhYmVsczpbImFuc2lfeDMuNC0xOTY4IiwiYXNjaWkiLCJjcDEyNTIiLCJjcDgxOSIsImNzaXNvbGF0aW4xIiwiaWJtODE5IiwiaXNvLTg4NTkt''@;'; put 'put ''MSIsImlzby1pci0xMDAiLCJpc284ODU5LTEiLCJpc284ODU5MSIsImlzb184ODU5LTEiLCJpc29fODg1OS0xOjE5ODciLCJsMSIsImxhdGluMSIsInVzLWFzY2lpIiwid2luZG93cy0xMjUyIiwieC1jcDEyNTIiXSxuYW1lOiJ3aW5kb3dzLTEyNTIifSx7bGFiZWxzOlsiY3AxMjUzIiwid2lu''@;'; put 'put ''ZG93cy0xMjUzIiwieC1jcDEyNTMiXSxuYW1lOiJ3aW5kb3dzLTEyNTMifSx7bGFiZWxzOlsiY3AxMjU0IiwiY3Npc29sYXRpbjUiLCJpc28tODg1OS05IiwiaXNvLWlyLTE0OCIsImlzbzg4NTktOSIsImlzbzg4NTk5IiwiaXNvXzg4NTktOSIsImlzb184ODU5LTk6MTk4OSIsImw1IiwibGF0''@;'; put 'put ''aW41Iiwid2luZG93cy0xMjU0IiwieC1jcDEyNTQiXSxuYW1lOiJ3aW5kb3dzLTEyNTQifSx7bGFiZWxzOlsiY3AxMjU1Iiwid2luZG93cy0xMjU1IiwieC1jcDEyNTUiXSxuYW1lOiJ3aW5kb3dzLTEyNTUifSx7bGFiZWxzOlsiY3AxMjU2Iiwid2luZG93cy0xMjU2IiwieC1jcDEyNTYiXSxu''@;'; put 'put ''YW1lOiJ3aW5kb3dzLTEyNTYifSx7bGFiZWxzOlsiY3AxMjU3Iiwid2luZG93cy0xMjU3IiwieC1jcDEyNTciXSxuYW1lOiJ3aW5kb3dzLTEyNTcifSx7bGFiZWxzOlsiY3AxMjU4Iiwid2luZG93cy0xMjU4IiwieC1jcDEyNTgiXSxuYW1lOiJ3aW5kb3dzLTEyNTgifSx7bGFiZWxzOlsieC1t''@;'; put 'put ''YWMtY3lyaWxsaWMiLCJ4LW1hYy11a3JhaW5pYW4iXSxuYW1lOiJ4LW1hYy1jeXJpbGxpYyJ9XSxoZWFkaW5nOiJMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNoaW5lc2UiLCJjc2diMjMxMiIsImNzaXNvNThnYjIzMTI4MCIsImdiMjMxMiIs''@;'; put 'put ''ImdiXzIzMTIiLCJnYl8yMzEyLTgwIiwiZ2JrIiwiaXNvLWlyLTU4IiwieC1nYmsiXSxuYW1lOiJHQksifSx7bGFiZWxzOlsiZ2IxODAzMCJdLG5hbWU6ImdiMTgwMzAifV0saGVhZGluZzoiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzIn0se2VuY29k''@;'; put 'put ''aW5nczpbe2xhYmVsczpbImJpZzUiLCJiaWc1LWhrc2NzIiwiY24tYmlnNSIsImNzYmlnNSIsIngteC1iaWc1Il0sbmFtZToiQmlnNSJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNz''@;'; put 'put ''ZXVjcGtkZm10amFwYW5lc2UiLCJldWMtanAiLCJ4LWV1Yy1qcCJdLG5hbWU6IkVVQy1KUCJ9LHtsYWJlbHM6WyJjc2lzbzIwMjJqcCIsImlzby0yMDIyLWpwIl0sbmFtZToiSVNPLTIwMjItSlAifSx7bGFiZWxzOlsiY3NzaGlmdGppcyIsIm1zOTMyIiwibXNfa2FuamkiLCJzaGlmdC1qaXMi''@;'; put 'put ''LCJzaGlmdF9qaXMiLCJzamlzIiwid2luZG93cy0zMWoiLCJ4LXNqaXMiXSxuYW1lOiJTaGlmdF9KSVMifV0saGVhZGluZzoiTGVnYWN5IG11bHRpLWJ5dGUgSmFwYW5lc2UgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNzZXVja3IiLCJjc2tzYzU2MDExOTg3IiwiZXVjLWty''@;'; put 'put ''IiwiaXNvLWlyLTE0OSIsImtvcmVhbiIsImtzX2NfNTYwMS0xOTg3Iiwia3NfY181NjAxLTE5ODkiLCJrc2M1NjAxIiwia3NjXzU2MDEiLCJ3aW5kb3dzLTk0OSJdLG5hbWU6IkVVQy1LUiJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBLb3JlYW4gZW5jb2RpbmdzIn0se2VuY29kaW5n''@;'; put 'put ''czpbe2xhYmVsczpbImNzaXNvMjAyMmtyIiwiaHotZ2ItMjMxMiIsImlzby0yMDIyLWNuIiwiaXNvLTIwMjItY24tZXh0IiwiaXNvLTIwMjIta3IiXSxuYW1lOiJyZXBsYWNlbWVudCJ9LHtsYWJlbHM6WyJ1dGYtMTZiZSJdLG5hbWU6IlVURi0xNkJFIn0se2xhYmVsczpbInV0Zi0xNiIsInV0''@;'; put 'put ''Zi0xNmxlIl0sbmFtZToiVVRGLTE2TEUifSx7bGFiZWxzOlsieC11c2VyLWRlZmluZWQiXSxuYW1lOiJ4LXVzZXItZGVmaW5lZCJ9XSxoZWFkaW5nOiJMZWdhY3kgbWlzY2VsbGFuZW91cyBlbmNvZGluZ3MifV0sZGU9e307ZmUuZm9yRWFjaChmdW5jdGlvbihvdCl7b3QuZW5jb2RpbmdzLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oUnQpe1J0LmxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKEN0KXtkZVtDdF09UnR9KX0pfSk7dmFyIE8sbmUsdmU9e30sQWU9e307ZnVuY3Rpb24ga2Uob3QsUnQpe3JldHVybiBSdCYmUnRbb3RdfHxudWxsfWZ1bmN0aW9uIFNlKG90LFJ0KXt2YXIgQ3Q9UnQuaW5kZXhP''@;'; put 'put ''ZihvdCk7cmV0dXJuLTE9PT1DdD9udWxsOkN0fWZ1bmN0aW9uIEllKG90KXtpZighKCJlbmNvZGluZy1pbmRleGVzImluIGdlKSl0aHJvdyBFcnJvcigiSW5kZXhlcyBtaXNzaW5nLiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGVuY29kaW5nLWluZGV4ZXMuanMgZmlyc3Q/Iik7cmV0dXJu''@;'; put 'put ''IGdlWyJlbmNvZGluZy1pbmRleGVzIl1bb3RdfWZ1bmN0aW9uIHgob3QsUnQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHgpKXRocm93IFR5cGVFcnJvcigiQ2FsbGVkIGFzIGEgZnVuY3Rpb24uIERpZCB5b3UgZm9yZ2V0ICduZXcnPyIpO290PXZvaWQgMCE9PW90P1N0cmluZyhvdCk6InV0Zi04''@;'; put 'put ''IixSdD1VKFJ0KSx0aGlzLl9lbmNvZGluZz1udWxsLHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9pZ25vcmVCT009ITEsdGhpcy5fQk9Nc2Vlbj0hMSx0aGlzLl9lcnJvcl9tb2RlPSJyZXBsYWNlbWVudCIsdGhpcy5fZG9fbm90X2ZsdXNoPSExO3ZhciBDdD1hZShvdCk7aWYobnVsbD09PUN0''@;'; put 'put ''fHwicmVwbGFjZW1lbnQiPT09Q3QubmFtZSl0aHJvdyBSYW5nZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK290KTtpZighQWVbQ3QubmFtZV0pdGhyb3cgRXJyb3IoIkRlY29kZXIgbm90IHByZXNlbnQuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcyBm''@;'; put 'put ''aXJzdD8iKTt2YXIgY3Q9dGhpcztyZXR1cm4gY3QuX2VuY29kaW5nPUN0LEJvb2xlYW4oUnQuZmF0YWwpJiYoY3QuX2Vycm9yX21vZGU9ImZhdGFsIiksQm9vbGVhbihSdC5pZ25vcmVCT00pJiYoY3QuX2lnbm9yZUJPTT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5fHwodGhpcy5lbmNvZGlu''@;'; put 'put ''Zz1jdC5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpLHRoaXMuZmF0YWw9ImZhdGFsIj09PWN0Ll9lcnJvcl9tb2RlLHRoaXMuaWdub3JlQk9NPWN0Ll9pZ25vcmVCT00pLGN0fWZ1bmN0aW9uIFAob3QsUnQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFApKXRocm93IFR5cGVFcnJvcigiQ2Fs''@;'; put 'put ''bGVkIGFzIGEgZnVuY3Rpb24uIERpZCB5b3UgZm9yZ2V0ICduZXcnPyIpO2lmKFJ0PVUoUnQpLHRoaXMuX2VuY29kaW5nPW51bGwsdGhpcy5fZW5jb2Rlcj1udWxsLHRoaXMuX2RvX25vdF9mbHVzaD0hMSx0aGlzLl9mYXRhbD1Cb29sZWFuKFJ0LmZhdGFsKT8iZmF0YWwiOiJyZXBsYWNlbWVu''@;'; put 'put ''dCIsQm9vbGVhbihSdC5OT05TVEFOREFSRF9hbGxvd0xlZ2FjeUVuY29kaW5nKSl7dmFyIGN0PWFlKG90PXZvaWQgMCE9PW90P1N0cmluZyhvdCk6InV0Zi04Iik7aWYobnVsbD09PWN0fHwicmVwbGFjZW1lbnQiPT09Y3QubmFtZSl0aHJvdyBSYW5nZUVycm9yKCJVbmtub3duIGVuY29kaW5n''@;'; put 'put ''OiAiK290KTtpZighdmVbY3QubmFtZV0pdGhyb3cgRXJyb3IoIkVuY29kZXIgbm90IHByZXNlbnQuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcyBmaXJzdD8iKTt0aGlzLl9lbmNvZGluZz1jdH1lbHNlIHRoaXMuX2VuY29kaW5nPWFlKCJ1dGYtOCIpLHZv''@;'; put 'put ''aWQgMCE9PW90JiYiY29uc29sZSJpbiBnZSYmY29uc29sZS53YXJuKCJUZXh0RW5jb2RlciBjb25zdHJ1Y3RvciBjYWxsZWQgd2l0aCBlbmNvZGluZyBsYWJlbCwgd2hpY2ggaXMgaWdub3JlZC4iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5fHwodGhpcy5lbmNvZGluZz10aGlzLl9l''@;'; put 'put ''bmNvZGluZy5uYW1lLnRvTG93ZXJDYXNlKCkpLHRoaXN9ZnVuY3Rpb24gVihvdCl7dmFyIFJ0PW90LmZhdGFsLEN0PTAsY3Q9MCxOdD0wLHplPTEyOCxZZT0xOTE7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKEF0LGp0KXtpZihqdD09PVkmJjAhPT1OdClyZXR1cm4gTnQ9MCxlZShSdCk7aWYoanQ9''@;'; put 'put ''PT1ZKXJldHVybiBOO2lmKDA9PT1OdCl7aWYoQihqdCwwLDEyNykpcmV0dXJuIGp0O2lmKEIoanQsMTk0LDIyMykpTnQ9MSxDdD0zMSZqdDtlbHNlIGlmKEIoanQsMjI0LDIzOSkpMjI0PT09anQmJih6ZT0xNjApLDIzNz09PWp0JiYoWWU9MTU5KSxOdD0yLEN0PTE1Jmp0O2Vsc2V7aWYoIUIo''@;'; put 'put ''anQsMjQwLDI0NCkpcmV0dXJuIGVlKFJ0KTsyNDA9PT1qdCYmKHplPTE0NCksMjQ0PT09anQmJihZZT0xNDMpLE50PTMsQ3Q9NyZqdH1yZXR1cm4gbnVsbH1pZighQihqdCx6ZSxZZSkpcmV0dXJuIEN0PU50PWN0PTAsemU9MTI4LFllPTE5MSxBdC5wcmVwZW5kKGp0KSxlZShSdCk7aWYoemU9''@;'; put 'put ''MTI4LFllPTE5MSxDdD1DdDw8Nnw2MyZqdCwoY3QrPTEpIT09TnQpcmV0dXJuIG51bGw7dmFyIEp0PUN0O3JldHVybiBDdD1OdD1jdD0wLEp0fX1mdW5jdGlvbiBUKG90KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oQ3QsY3Qpe2lmKGN0PT09WSlyZXR1cm4gTjtpZihsZShjdCkpcmV0dXJuIGN0''@;'; put 'put ''O3ZhciBOdCx6ZTtCKGN0LDEyOCwyMDQ3KT8oTnQ9MSx6ZT0xOTIpOkIoY3QsMjA0OCw2NTUzNSk/KE50PTIsemU9MjI0KTpCKGN0LDY1NTM2LDExMTQxMTEpJiYoTnQ9Myx6ZT0yNDApO2Zvcih2YXIgWWU9WyhjdD4+NipOdCkremVdO050PjA7KVllLnB1c2goMTI4fDYzJmN0Pj42KihOdC0x''@;'; put 'put ''KSksTnQtPTE7cmV0dXJuIFllfX1mdW5jdGlvbiBTKG90LFJ0KXt2YXIgQ3Q9UnQuZmF0YWw7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGN0LE50KXtpZihOdD09PVkpcmV0dXJuIE47aWYoaWUoTnQpKXJldHVybiBOdDt2YXIgemU9b3RbTnQtMTI4XTtyZXR1cm4gbnVsbD09PXplP2VlKEN0KTp6''@;'; put 'put ''ZX19ZnVuY3Rpb24gRihvdCxSdCl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGN0LE50KXtpZihOdD09PVkpcmV0dXJuIE47aWYobGUoTnQpKXJldHVybiBOdDt2YXIgemU9U2UoTnQsb3QpO3JldHVybiBudWxsPT09emUmJnEoTnQpLHplKzEyOH19ZnVuY3Rpb24geWUob3Qpe3ZhciBSdD1vdC5m''@;'; put 'put ''YXRhbCxDdD0wLGN0PTAsTnQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oemUsWWUpe2lmKFllPT09WSYmMD09PUN0JiYwPT09Y3QmJjA9PT1OdClyZXR1cm4gTjt2YXIgQXQ7aWYoWWU9PT1ZJiYoMCE9PUN0fHwwIT09Y3R8fDAhPT1OdCkmJihDdD0wLGN0PTAsTnQ9MCxlZShSdCkpLDAhPT1O''@;'; put 'put ''dCl7QXQ9bnVsbCxCKFllLDQ4LDU3KSYmKEF0PWZ1bmN0aW9uIFRlKG90KXtpZihvdD4zOTQxOSYmb3Q8MTg5ZTN8fG90PjEyMzc1NzUpcmV0dXJuIG51bGw7aWYoNzQ1Nz09PW90KXJldHVybiA1OTMzNTt2YXIgTnQsUnQ9MCxDdD0wLGN0PUllKCJnYjE4MDMwLXJhbmdlcyIpO2ZvcihOdD0w''@;'; put 'put ''O050PGN0Lmxlbmd0aDsrK050KXt2YXIgemU9Y3RbTnRdO2lmKCEoemVbMF08PW90KSlicmVhaztSdD16ZVswXSxDdD16ZVsxXX1yZXR1cm4gQ3Qrb3QtUnR9KDEwKigxMjYqKDEwKihDdC0xMjkpK2N0LTQ4KStOdC0xMjkpK1llLTQ4KSk7dmFyIGp0PVtjdCxOdCxZZV07cmV0dXJuIEN0PTAs''@;'; put 'put ''Y3Q9MCxOdD0wLG51bGw9PT1BdD8oemUucHJlcGVuZChqdCksZWUoUnQpKTpBdH1pZigwIT09Y3QpcmV0dXJuIEIoWWUsMTI5LDI1NCk/KE50PVllLG51bGwpOih6ZS5wcmVwZW5kKFtjdCxZZV0pLEN0PTAsY3Q9MCxlZShSdCkpO2lmKDAhPT1DdCl7aWYoQihZZSw0OCw1NykpcmV0dXJuIGN0''@;'; put 'put ''PVllLG51bGw7dmFyIEp0PUN0LG1uPW51bGw7Q3Q9MDt2YXIgcG49WWU8MTI3PzY0OjY1O3JldHVybihCKFllLDY0LDEyNil8fEIoWWUsMTI4LDI1NCkpJiYobW49MTkwKihKdC0xMjkpKyhZZS1wbikpLG51bGw9PT0oQXQ9bnVsbD09PW1uP251bGw6a2UobW4sSWUoImdiMTgwMzAiKSkpJiZp''@;'; put 'put ''ZShZZSkmJnplLnByZXBlbmQoWWUpLG51bGw9PT1BdD9lZShSdCk6QXR9cmV0dXJuIGllKFllKT9ZZToxMjg9PT1ZZT84MzY0OkIoWWUsMTI5LDI1NCk/KEN0PVllLG51bGwpOmVlKFJ0KX19ZnVuY3Rpb24gQ2Uob3QsUnQpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihjdCxOdCl7aWYoTnQ9PT1Z''@;'; put 'put ''KXJldHVybiBOO2lmKGxlKE50KSlyZXR1cm4gTnQ7aWYoNTg4NTM9PT1OdClyZXR1cm4gcShOdCk7aWYoUnQmJjgzNjQ9PT1OdClyZXR1cm4gMTI4O3ZhciB6ZT1TZShOdCxJZSgiZ2IxODAzMCIpKTtpZihudWxsIT09emUpe3ZhciBBdD16ZSUxOTA7cmV0dXJuW01lKHplLzE5MCkrMTI5LEF0''@;'; put 'put ''KyhBdDw2Mz82NDo2NSldfWlmKFJ0KXJldHVybiBxKE50KTt6ZT1mdW5jdGlvbiBFZShvdCl7aWYoNTkzMzU9PT1vdClyZXR1cm4gNzQ1Nzt2YXIgTnQsUnQ9MCxDdD0wLGN0PUllKCJnYjE4MDMwLXJhbmdlcyIpO2ZvcihOdD0wO050PGN0Lmxlbmd0aDsrK050KXt2YXIgemU9Y3RbTnRdO2lm''@;'; put 'put ''KCEoemVbMV08PW90KSlicmVhaztSdD16ZVsxXSxDdD16ZVswXX1yZXR1cm4gQ3Qrb3QtUnR9KE50KTt2YXIgSnQ9TWUoemUvMTAvMTI2LzEwKSxtbj1NZSgoemUtPTEwKkp0KjEyNioxMCkvMTAvMTI2KSxwbj1NZSgoemUtPTEwKm1uKjEyNikvMTApO3JldHVybltKdCsxMjksbW4rNDgscG4r''@;'; put 'put ''MTI5LHplLTEwKnBuKzQ4XX19ZnVuY3Rpb24gRGUob3Qpe3ZhciBSdD1vdC5mYXRhbCxDdD0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihjdCxOdCl7aWYoTnQ9PT1ZJiYwIT09Q3QpcmV0dXJuIEN0PTAsZWUoUnQpO2lmKE50PT09WSYmMD09PUN0KXJldHVybiBOO2lmKDAhPT1DdCl7dmFyIHpl''@;'; put 'put ''PUN0LFllPW51bGw7Q3Q9MDt2YXIgQXQ9TnQ8MTI3PzY0Ojk4O3N3aXRjaCgoQihOdCw2NCwxMjYpfHxCKE50LDE2MSwyNTQpKSYmKFllPTE1NyooemUtMTI5KSsoTnQtQXQpKSxZZSl7Y2FzZSAxMTMzOnJldHVyblsyMDIsNzcyXTtjYXNlIDExMzU6cmV0dXJuWzIwMiw3ODBdO2Nhc2UgMTE2''@;'; put 'put ''NDpyZXR1cm5bMjM0LDc3Ml07Y2FzZSAxMTY2OnJldHVyblsyMzQsNzgwXX12YXIganQ9bnVsbD09PVllP251bGw6a2UoWWUsSWUoImJpZzUiKSk7cmV0dXJuIG51bGw9PT1qdCYmaWUoTnQpJiZjdC5wcmVwZW5kKE50KSxudWxsPT09anQ/ZWUoUnQpOmp0fXJldHVybiBpZShOdCk/TnQ6QihO''@;'; put 'put ''dCwxMjksMjU0KT8oQ3Q9TnQsbnVsbCk6ZWUoUnQpfX1mdW5jdGlvbiBQZShvdCl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKEN0LGN0KXtpZihjdD09PVkpcmV0dXJuIE47aWYobGUoY3QpKXJldHVybiBjdDt2YXIgTnQ9ZnVuY3Rpb24geihvdCl7dmFyIFJ0PW5lPW5lfHxJZSgiYmlnNSIpLm1h''@;'; put 'put ''cChmdW5jdGlvbihDdCxjdCl7cmV0dXJuIGN0PDUwMjQ/bnVsbDpDdH0pO3JldHVybiA5NTUyPT09b3R8fDk1NjY9PT1vdHx8OTU2OT09PW90fHw5NTc4PT09b3R8fDIxMzEzPT09b3R8fDIxMzE3PT09b3Q/UnQubGFzdEluZGV4T2Yob3QpOlNlKG90LFJ0KX0oY3QpO2lmKG51bGw9PT1OdCly''@;'; put 'put ''ZXR1cm4gcShjdCk7dmFyIHplPU1lKE50LzE1NykrMTI5O2lmKHplPDE2MSlyZXR1cm4gcShjdCk7dmFyIFllPU50JTE1NztyZXR1cm5bemUsWWUrKFllPDYzPzY0Ojk4KV19fWZ1bmN0aW9uIFFlKG90KXt2YXIgUnQ9b3QuZmF0YWwsQ3Q9ITEsY3Q9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24o''@;'; put 'put ''TnQsemUpe2lmKHplPT09WSYmMCE9PWN0KXJldHVybiBjdD0wLGVlKFJ0KTtpZih6ZT09PVkmJjA9PT1jdClyZXR1cm4gTjtpZigxNDI9PT1jdCYmQih6ZSwxNjEsMjIzKSlyZXR1cm4gY3Q9MCw2NTIxNit6ZTtpZigxNDM9PT1jdCYmQih6ZSwxNjEsMjU0KSlyZXR1cm4gQ3Q9ITAsY3Q9emUs''@;'; put 'put ''bnVsbDtpZigwIT09Y3Qpe3ZhciBZZT1jdDtjdD0wO3ZhciBBdD1udWxsO3JldHVybiBCKFllLDE2MSwyNTQpJiZCKHplLDE2MSwyNTQpJiYoQXQ9a2UoOTQqKFllLTE2MSkrKHplLTE2MSksSWUoQ3Q/ImppczAyMTIiOiJqaXMwMjA4IikpKSxDdD0hMSxCKHplLDE2MSwyNTQpfHxOdC5wcmVw''@;'; put 'put ''ZW5kKHplKSxudWxsPT09QXQ/ZWUoUnQpOkF0fXJldHVybiBpZSh6ZSk/emU6MTQyPT09emV8fDE0Mz09PXplfHxCKHplLDE2MSwyNTQpPyhjdD16ZSxudWxsKTplZShSdCl9fWZ1bmN0aW9uICRlKG90KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oQ3QsY3Qpe2lmKGN0PT09WSlyZXR1cm4gTjtp''@;'; put 'put ''ZihsZShjdCkpcmV0dXJuIGN0O2lmKDE2NT09PWN0KXJldHVybiA5MjtpZig4MjU0PT09Y3QpcmV0dXJuIDEyNjtpZihCKGN0LDY1Mzc3LDY1NDM5KSlyZXR1cm5bMTQyLGN0LTY1Mzc3KzE2MV07ODcyMj09PWN0JiYoY3Q9NjUyOTMpO3ZhciBOdD1TZShjdCxJZSgiamlzMDIwOCIpKTtyZXR1''@;'; put 'put ''cm4gbnVsbD09PU50P3EoY3QpOltNZShOdC85NCkrMTYxLE50JTk0KzE2MV19fWZ1bmN0aW9uIGd0KG90KXt2YXIgUnQ9b3QuZmF0YWwsY3Q9MCx6ZT0wLFllPSExO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihBdCxqdCl7c3dpdGNoKGN0KXtkZWZhdWx0OmNhc2UgMDpyZXR1cm4gMjc9PT1qdD8o''@;'; put 'put ''Y3Q9NSxudWxsKTpCKGp0LDAsMTI3KSYmMTQhPT1qdCYmMTUhPT1qdCYmMjchPT1qdD8oWWU9ITEsanQpOmp0PT09WT9OOihZZT0hMSxlZShSdCkpO2Nhc2UgMTpyZXR1cm4gMjc9PT1qdD8oY3Q9NSxudWxsKTo5Mj09PWp0PyhZZT0hMSwxNjUpOjEyNj09PWp0PyhZZT0hMSw4MjU0KTpCKGp0''@;'; put 'put ''LDAsMTI3KSYmMTQhPT1qdCYmMTUhPT1qdCYmMjchPT1qdCYmOTIhPT1qdCYmMTI2IT09anQ/KFllPSExLGp0KTpqdD09PVk/TjooWWU9ITEsZWUoUnQpKTtjYXNlIDI6cmV0dXJuIDI3PT09anQ/KGN0PTUsbnVsbCk6QihqdCwzMyw5NSk/KFllPSExLDY1MzQ0K2p0KTpqdD09PVk/TjooWWU9''@;'; put 'put ''ITEsZWUoUnQpKTtjYXNlIDM6cmV0dXJuIDI3PT09anQ/KGN0PTUsbnVsbCk6QihqdCwzMywxMjYpPyhZZT0hMSx6ZT1qdCxjdD00LG51bGwpOmp0PT09WT9OOihZZT0hMSxlZShSdCkpO2Nhc2UgNDppZigyNz09PWp0KXJldHVybiBjdD01LGVlKFJ0KTtpZihCKGp0LDMzLDEyNikpe2N0PTM7''@;'; put 'put ''dmFyIG1uPWtlKDk0Kih6ZS0zMykranQtMzMsSWUoImppczAyMDgiKSk7cmV0dXJuIG51bGw9PT1tbj9lZShSdCk6bW59cmV0dXJuIGp0PT09WT8oY3Q9MyxBdC5wcmVwZW5kKGp0KSxlZShSdCkpOihjdD0zLGVlKFJ0KSk7Y2FzZSA1OnJldHVybiAzNj09PWp0fHw0MD09PWp0Pyh6ZT1qdCxj''@;'; put 'put ''dD02LG51bGwpOihBdC5wcmVwZW5kKGp0KSxZZT0hMSxjdD0wLGVlKFJ0KSk7Y2FzZSA2OnZhciBwbj16ZTt6ZT0wO3ZhciBibj1udWxsO2lmKDQwPT09cG4mJjY2PT09anQmJihibj0wKSw0MD09PXBuJiY3ND09PWp0JiYoYm49MSksNDA9PT1wbiYmNzM9PT1qdCYmKGJuPTIpLDM2PT09cG4m''@;'; put 'put ''Jig2ND09PWp0fHw2Nj09PWp0KSYmKGJuPTMpLG51bGwhPT1ibil7Y3Q9Y3Q9Ym47dmFyIGxuPVllO3JldHVybiBZZT0hMCxsbj9lZShSdCk6bnVsbH1yZXR1cm4gQXQucHJlcGVuZChbcG4sanRdKSxZZT0hMSxjdD0wLGVlKFJ0KX19fWZ1bmN0aW9uIHl0KG90KXt2YXIgY3Q9MDt0aGlzLmhh''@;'; put 'put ''bmRsZXI9ZnVuY3Rpb24oTnQsemUpe2lmKHplPT09WSYmMCE9PWN0KXJldHVybiBOdC5wcmVwZW5kKHplKSxjdD0wLFsyNyw0MCw2Nl07aWYoemU9PT1ZJiYwPT09Y3QpcmV0dXJuIE47aWYoISgwIT09Y3QmJjEhPT1jdHx8MTQhPT16ZSYmMTUhPT16ZSYmMjchPT16ZSkpcmV0dXJuIHEoNjU1''@;'; put 'put ''MzMpO2lmKDA9PT1jdCYmbGUoemUpKXJldHVybiB6ZTtpZigxPT09Y3QmJihsZSh6ZSkmJjkyIT09emUmJjEyNiE9PXplfHwxNjU9PXplfHw4MjU0PT16ZSkpe2lmKGxlKHplKSlyZXR1cm4gemU7aWYoMTY1PT09emUpcmV0dXJuIDkyO2lmKDgyNTQ9PT16ZSlyZXR1cm4gMTI2fWlmKGxlKHpl''@;'; put 'put ''KSYmMCE9PWN0KXJldHVybiBOdC5wcmVwZW5kKHplKSxjdD0wLFsyNyw0MCw2Nl07aWYoKDE2NT09PXplfHw4MjU0PT09emUpJiYxIT09Y3QpcmV0dXJuIE50LnByZXBlbmQoemUpLGN0PTEsWzI3LDQwLDc0XTs4NzIyPT09emUmJih6ZT02NTI5Myk7dmFyIFllPVNlKHplLEllKCJqaXMwMjA4''@;'; put 'put ''IikpO3JldHVybiBudWxsPT09WWU/cSh6ZSk6MiE9PWN0PyhOdC5wcmVwZW5kKHplKSxjdD0yLFsyNywzNiw2Nl0pOltNZShZZS85NCkrMzMsWWUlOTQrMzNdfX1mdW5jdGlvbiBwdChvdCl7dmFyIFJ0PW90LmZhdGFsLEN0PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGN0LE50KXtpZihOdD09''@;'; put 'put ''PVkmJjAhPT1DdClyZXR1cm4gQ3Q9MCxlZShSdCk7aWYoTnQ9PT1ZJiYwPT09Q3QpcmV0dXJuIE47aWYoMCE9PUN0KXt2YXIgemU9Q3QsWWU9bnVsbDtDdD0wO3ZhciBBdD1OdDwxMjc/NjQ6NjUsanQ9emU8MTYwPzEyOToxOTM7aWYoKEIoTnQsNjQsMTI2KXx8QihOdCwxMjgsMjUyKSkmJihZ''@;'; put 'put ''ZT0xODgqKHplLWp0KStOdC1BdCksQihZZSw4ODM2LDEwNzE1KSlyZXR1cm4gNDg1MDgrWWU7dmFyIEp0PW51bGw9PT1ZZT9udWxsOmtlKFllLEllKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09SnQmJmllKE50KSYmY3QucHJlcGVuZChOdCksbnVsbD09PUp0P2VlKFJ0KTpKdH1yZXR1cm4g''@;'; put 'put ''aWUoTnQpfHwxMjg9PT1OdD9OdDpCKE50LDE2MSwyMjMpPzY1MjE2K050OkIoTnQsMTI5LDE1OSl8fEIoTnQsMjI0LDI1Mik/KEN0PU50LG51bGwpOmVlKFJ0KX19ZnVuY3Rpb24gbXQob3Qpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihDdCxjdCl7aWYoY3Q9PT1ZKXJldHVybiBOO2lmKGxlKGN0''@;'; put 'put ''KXx8MTI4PT09Y3QpcmV0dXJuIGN0O2lmKDE2NT09PWN0KXJldHVybiA5MjtpZig4MjU0PT09Y3QpcmV0dXJuIDEyNjtpZihCKGN0LDY1Mzc3LDY1NDM5KSlyZXR1cm4gY3QtNjUzNzcrMTYxOzg3MjI9PT1jdCYmKGN0PTY1MjkzKTt2YXIgTnQ9ZnVuY3Rpb24gaGUob3Qpe3JldHVybihPPU98''@;'; put 'put ''fEllKCJqaXMwMjA4IikubWFwKGZ1bmN0aW9uKEN0LGN0KXtyZXR1cm4gQihjdCw4MjcyLDg4MzUpP251bGw6Q3R9KSkuaW5kZXhPZihvdCl9KGN0KTtpZihudWxsPT09TnQpcmV0dXJuIHEoY3QpO3ZhciB6ZT1NZShOdC8xODgpLEF0PU50JTE4ODtyZXR1cm5bemUrKHplPDMxPzEyOToxOTMp''@;'; put 'put ''LEF0KyhBdDw2Mz82NDo2NSldfX1mdW5jdGlvbiB2dChvdCl7dmFyIFJ0PW90LmZhdGFsLEN0PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGN0LE50KXtpZihOdD09PVkmJjAhPT1DdClyZXR1cm4gQ3Q9MCxlZShSdCk7aWYoTnQ9PT1ZJiYwPT09Q3QpcmV0dXJuIE47aWYoMCE9PUN0KXt2YXIg''@;'; put 'put ''emU9Q3QsWWU9bnVsbDtDdD0wLEIoTnQsNjUsMjU0KSYmKFllPTE5MCooemUtMTI5KSsoTnQtNjUpKTt2YXIgQXQ9bnVsbD09PVllP251bGw6a2UoWWUsSWUoImV1Yy1rciIpKTtyZXR1cm4gbnVsbD09PVllJiZpZShOdCkmJmN0LnByZXBlbmQoTnQpLG51bGw9PT1BdD9lZShSdCk6QXR9cmV0''@;'; put 'put ''dXJuIGllKE50KT9OdDpCKE50LDEyOSwyNTQpPyhDdD1OdCxudWxsKTplZShSdCl9fWZ1bmN0aW9uIGZ0KG90KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oQ3QsY3Qpe2lmKGN0PT09WSlyZXR1cm4gTjtpZihsZShjdCkpcmV0dXJuIGN0O3ZhciBOdD1TZShjdCxJZSgiZXVjLWtyIikpO3JldHVy''@;'; put 'put ''biBudWxsPT09TnQ/cShjdCk6W01lKE50LzE5MCkrMTI5LE50JTE5MCs2NV19fWZ1bmN0aW9uIEZ0KG90LFJ0KXt2YXIgQ3Q9b3Q+PjgsY3Q9MjU1Jm90O3JldHVybiBSdD9bQ3QsY3RdOltjdCxDdF19ZnVuY3Rpb24gb24ob3QsUnQpe3ZhciBDdD1SdC5mYXRhbCxjdD1udWxsLE50PW51bGw7''@;'; put 'put ''dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHplLFllKXtpZihZZT09PVkmJihudWxsIT09Y3R8fG51bGwhPT1OdCkpcmV0dXJuIGVlKEN0KTtpZihZZT09PVkmJm51bGw9PT1jdCYmbnVsbD09PU50KXJldHVybiBOO2lmKG51bGw9PT1jdClyZXR1cm4gY3Q9WWUsbnVsbDt2YXIgQXQ7aWYoQXQ9b3Q/''@;'; put 'put ''KGN0PDw4KStZZTooWWU8PDgpK2N0LGN0PW51bGwsbnVsbCE9PU50KXt2YXIganQ9TnQ7cmV0dXJuIE50PW51bGwsQihBdCw1NjMyMCw1NzM0Myk/NjU1MzYrMTAyNCooanQtNTUyOTYpKyhBdC01NjMyMCk6KHplLnByZXBlbmQoRnQoQXQsb3QpKSxlZShDdCkpfXJldHVybiBCKEF0LDU1Mjk2''@;'; put 'put ''LDU2MzE5KT8oTnQ9QXQsbnVsbCk6QihBdCw1NjMyMCw1NzM0Myk/ZWUoQ3QpOkF0fX1mdW5jdGlvbiBfdChvdCxSdCl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGN0LE50KXtpZihOdD09PVkpcmV0dXJuIE47aWYoQihOdCwwLDY1NTM1KSlyZXR1cm4gRnQoTnQsb3QpO3ZhciB6ZT1GdCg1NTI5''@;'; put 'put ''NisoTnQtNjU1MzY+PjEwKSxvdCksWWU9RnQoNTYzMjArKE50LTY1NTM2JjEwMjMpLG90KTtyZXR1cm4gemUuY29uY2F0KFllKX19ZnVuY3Rpb24gbnQob3Qpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihDdCxjdCl7cmV0dXJuIGN0PT09WT9OOmllKGN0KT9jdDo2MzM2MCtjdC0xMjh9fWZ1bmN0''@;'; put 'put ''aW9uIHFlKG90KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oQ3QsY3Qpe3JldHVybiBjdD09PVk/TjpsZShjdCk/Y3Q6QihjdCw2MzM2MCw2MzQ4Nyk/Y3QtNjMzNjArMTI4OnEoY3QpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkmJihPYmplY3QuZGVmaW5lUHJvcGVydHkoeC5wcm90b3R5cGUsImVu''@;'; put 'put ''Y29kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeC5wcm90b3R5cGUsImZhdGFsIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuImZhdGFsIj09PXRoaXMuX2Vycm9yX21vZGV9fSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KHgucHJvdG90eXBlLCJpZ25vcmVCT00iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWdub3JlQk9NfX0pKSx4LnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oUnQsQ3Qpe3ZhciBjdDtjdD0ib2JqZWN0Ij09dHlwZW9mIFJ0JiZSdCBpbnN0YW5jZW9m''@;'; put 'put ''IEFycmF5QnVmZmVyP25ldyBVaW50OEFycmF5KFJ0KToib2JqZWN0Ij09dHlwZW9mIFJ0JiYiYnVmZmVyImluIFJ0JiZSdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uZXcgVWludDhBcnJheShSdC5idWZmZXIsUnQuYnl0ZU9mZnNldCxSdC5ieXRlTGVuZ3RoKTpuZXcgVWludDhB''@;'; put 'put ''cnJheSgwKSxDdD1VKEN0KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9kZWNvZGVyPUFlW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDoiZmF0YWwiPT09dGhpcy5fZXJyb3JfbW9kZX0pLHRoaXMuX0JPTXNlZW49ITEpLHRoaXMuX2RvX25vdF9mbHVzaD1Cb29sZWFuKEN0LnN0cmVh''@;'; put 'put ''bSk7Zm9yKHZhciBZZSxOdD1uZXcgVyhjdCksemU9W107Oyl7dmFyIEF0PU50LnJlYWQoKTtpZihBdD09PVl8fChZZT10aGlzLl9kZWNvZGVyLmhhbmRsZXIoTnQsQXQpKT09PU4pYnJlYWs7bnVsbCE9PVllJiYoQXJyYXkuaXNBcnJheShZZSk/emUucHVzaC5hcHBseSh6ZSxZZSk6emUucHVz''@;'; put 'put ''aChZZSkpfWlmKCF0aGlzLl9kb19ub3RfZmx1c2gpe2Rve2lmKChZZT10aGlzLl9kZWNvZGVyLmhhbmRsZXIoTnQsTnQucmVhZCgpKSk9PT1OKWJyZWFrO251bGwhPT1ZZSYmKEFycmF5LmlzQXJyYXkoWWUpP3plLnB1c2guYXBwbHkoemUsWWUpOnplLnB1c2goWWUpKX13aGlsZSghTnQuZW5k''@;'; put 'put ''T2ZTdHJlYW0oKSk7dGhpcy5fZGVjb2Rlcj1udWxsfXJldHVybiBmdW5jdGlvbiBqdChKdCl7cmV0dXJuIGZ1bmN0aW9uIEUob3QsUnQpe3JldHVybi0xIT09b3QuaW5kZXhPZihSdCl9KFsiVVRGLTgiLCJVVEYtMTZMRSIsIlVURi0xNkJFIl0sdGhpcy5fZW5jb2RpbmcubmFtZSkmJiF0aGlz''@;'; put 'put ''Ll9pZ25vcmVCT00mJiF0aGlzLl9CT01zZWVuJiYoSnQubGVuZ3RoPjAmJjY1Mjc5PT09SnRbMF0/KHRoaXMuX0JPTXNlZW49ITAsSnQuc2hpZnQoKSk6SnQubGVuZ3RoPjAmJih0aGlzLl9CT01zZWVuPSEwKSksZnVuY3Rpb24gWihvdCl7Zm9yKHZhciBSdD0iIixDdD0wO0N0PG90Lmxlbmd0''@;'; put 'put ''aDsrK0N0KXt2YXIgY3Q9b3RbQ3RdO2N0PD02NTUzNT9SdCs9U3RyaW5nLmZyb21DaGFyQ29kZShjdCk6KGN0LT02NTUzNixSdCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoY3Q+PjEwKSw1NjMyMCsoMTAyMyZjdCkpKX1yZXR1cm4gUnR9KEp0KX0uY2FsbCh0aGlzLHplKX0sT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoUC5wcm90b3R5cGUsImVuY29kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKX19KSxQLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oUnQsQ3Qpe1J0PXZvaWQg''@;'; put 'put ''MD09PVJ0PyIiOlN0cmluZyhSdCksQ3Q9VShDdCksdGhpcy5fZG9fbm90X2ZsdXNofHwodGhpcy5fZW5jb2Rlcj12ZVt0aGlzLl9lbmNvZGluZy5uYW1lXSh7ZmF0YWw6ImZhdGFsIj09PXRoaXMuX2ZhdGFsfSkpLHRoaXMuX2RvX25vdF9mbHVzaD1Cb29sZWFuKEN0LnN0cmVhbSk7Zm9yKHZh''@;'; put 'put ''ciB6ZSxjdD1uZXcgVyhmdW5jdGlvbiBRKG90KXtmb3IodmFyIFJ0PVN0cmluZyhvdCksQ3Q9UnQubGVuZ3RoLGN0PTAsTnQ9W107Y3Q8Q3Q7KXt2YXIgemU9UnQuY2hhckNvZGVBdChjdCk7aWYoemU8NTUyOTZ8fHplPjU3MzQzKU50LnB1c2goemUpO2Vsc2UgaWYoNTYzMjA8PXplJiZ6ZTw9''@;'; put 'put ''NTczNDMpTnQucHVzaCg2NTUzMyk7ZWxzZSBpZig1NTI5Njw9emUmJnplPD01NjMxOSlpZihjdD09PUN0LTEpTnQucHVzaCg2NTUzMyk7ZWxzZXt2YXIgWWU9UnQuY2hhckNvZGVBdChjdCsxKTs1NjMyMDw9WWUmJlllPD01NzM0Mz8oTnQucHVzaCg2NTUzNisoKDEwMjMmemUpPDwxMCkrKDEw''@;'; put 'put ''MjMmWWUpKSxjdCs9MSk6TnQucHVzaCg2NTUzMyl9Y3QrPTF9cmV0dXJuIE50fShSdCkpLE50PVtdOzspe3ZhciBZZT1jdC5yZWFkKCk7aWYoWWU9PT1ZfHwoemU9dGhpcy5fZW5jb2Rlci5oYW5kbGVyKGN0LFllKSk9PT1OKWJyZWFrO0FycmF5LmlzQXJyYXkoemUpP050LnB1c2guYXBwbHko''@;'; put 'put ''TnQsemUpOk50LnB1c2goemUpfWlmKCF0aGlzLl9kb19ub3RfZmx1c2gpe2Zvcig7KHplPXRoaXMuX2VuY29kZXIuaGFuZGxlcihjdCxjdC5yZWFkKCkpKSE9PU47KUFycmF5LmlzQXJyYXkoemUpP050LnB1c2guYXBwbHkoTnQsemUpOk50LnB1c2goemUpO3RoaXMuX2VuY29kZXI9bnVsbH1y''@;'; put 'put ''ZXR1cm4gbmV3IFVpbnQ4QXJyYXkoTnQpfSx2ZVsiVVRGLTgiXT1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyBUKG90KX0sQWVbIlVURi04Il09ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgVihvdCl9LCJlbmNvZGluZy1pbmRleGVzImluIGdlJiZmZS5mb3JFYWNoKGZ1bmN0aW9uKG90KXsiTGVn''@;'; put 'put ''YWN5IHNpbmdsZS1ieXRlIGVuY29kaW5ncyI9PT1vdC5oZWFkaW5nJiZvdC5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihSdCl7dmFyIEN0PVJ0Lm5hbWUsY3Q9SWUoQ3QudG9Mb3dlckNhc2UoKSk7QWVbQ3RdPWZ1bmN0aW9uKE50KXtyZXR1cm4gbmV3IFMoY3QsTnQpfSx2ZVtDdF09ZnVu''@;'; put 'put ''Y3Rpb24oTnQpe3JldHVybiBuZXcgRihjdCxOdCl9fSl9KSxBZS5HQks9ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgeWUob3QpfSx2ZS5HQks9ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgQ2Uob3QsITApfSx2ZS5nYjE4MDMwPWZ1bmN0aW9uKG90KXtyZXR1cm4gbmV3IENlKG90KX0sQWUuZ2Ix''@;'; put 'put ''ODAzMD1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyB5ZShvdCl9LHZlLkJpZzU9ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgUGUob3QpfSxBZS5CaWc1PWZ1bmN0aW9uKG90KXtyZXR1cm4gbmV3IERlKG90KX0sdmVbIkVVQy1KUCJdPWZ1bmN0aW9uKG90KXtyZXR1cm4gbmV3ICRlKG90KX0sQWVb''@;'; put 'put ''IkVVQy1KUCJdPWZ1bmN0aW9uKG90KXtyZXR1cm4gbmV3IFFlKG90KX0sdmVbIklTTy0yMDIyLUpQIl09ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgeXQob3QpfSxBZVsiSVNPLTIwMjItSlAiXT1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyBndChvdCl9LHZlLlNoaWZ0X0pJUz1mdW5jdGlvbihv''@;'; put 'put ''dCl7cmV0dXJuIG5ldyBtdChvdCl9LEFlLlNoaWZ0X0pJUz1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyBwdChvdCl9LHZlWyJFVUMtS1IiXT1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyBmdChvdCl9LEFlWyJFVUMtS1IiXT1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyB2dChvdCl9LHZlWyJVVEYt''@;'; put 'put ''MTZCRSJdPWZ1bmN0aW9uKG90KXtyZXR1cm4gbmV3IF90KCEwLG90KX0sQWVbIlVURi0xNkJFIl09ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgb24oITAsb3QpfSx2ZVsiVVRGLTE2TEUiXT1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyBfdCghMSxvdCl9LEFlWyJVVEYtMTZMRSJdPWZ1bmN0aW9u''@;'; put 'put ''KG90KXtyZXR1cm4gbmV3IG9uKCExLG90KX0sdmVbIngtdXNlci1kZWZpbmVkIl09ZnVuY3Rpb24ob3Qpe3JldHVybiBuZXcgcWUob3QpfSxBZVsieC11c2VyLWRlZmluZWQiXT1mdW5jdGlvbihvdCl7cmV0dXJuIG5ldyBudChvdCl9LGdlLlRleHRFbmNvZGVyfHwoZ2UuVGV4dEVuY29kZXI9''@;'; put 'put ''UCksZ2UuVGV4dERlY29kZXJ8fChnZS5UZXh0RGVjb2Rlcj14KSxYZS5leHBvcnRzJiYoWGUuZXhwb3J0cz17VGV4dEVuY29kZXI6Z2UuVGV4dEVuY29kZXIsVGV4dERlY29kZXI6Z2UuVGV4dERlY29kZXIsRW5jb2RpbmdJbmRleGVzOmdlWyJlbmNvZGluZy1pbmRleGVzIl19KX0odGhpc3x8''@;'; put 'put ''e30pfSwyMzUzMjpYZT0+e2Z1bmN0aW9uIEwoZ2Upe3RyeXtpZighZ2xvYmFsLmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaChFKXtyZXR1cm4hMX12YXIgQj1nbG9iYWwubG9jYWxTdG9yYWdlW2dlXTtyZXR1cm4gbnVsbCE9QiYmInRydWUiPT09U3RyaW5nKEIpLnRvTG93ZXJDYXNlKCl9''@;'; put 'put ''WGUuZXhwb3J0cz1mdW5jdGlvbiBKZShnZSxCKXtpZihMKCJub0RlcHJlY2F0aW9uIikpcmV0dXJuIGdlO3ZhciBFPSExO3JldHVybiBmdW5jdGlvbiBNZSgpe2lmKCFFKXtpZihMKCJ0aHJvd0RlcHJlY2F0aW9uIikpdGhyb3cgbmV3IEVycm9yKEIpO0woInRyYWNlRGVwcmVjYXRpb24iKT9j''@;'; put 'put ''b25zb2xlLnRyYWNlKEIpOmNvbnNvbGUud2FybihCKSxFPSEwfXJldHVybiBnZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0sNzMzOTM6KFhlLEplLEwpPT57IWZ1bmN0aW9uKGdlKXsidXNlIHN0cmljdCI7Z2UuZXhwb3J0cy5pc191cmk9RSxnZS5leHBvcnRzLmlzX2h0dHBfdXJpPU1lLGdl''@;'; put 'put ''LmV4cG9ydHMuaXNfaHR0cHNfdXJpPVUsZ2UuZXhwb3J0cy5pc193ZWJfdXJpPVEsZ2UuZXhwb3J0cy5pc1VyaT1FLGdlLmV4cG9ydHMuaXNIdHRwVXJpPU1lLGdlLmV4cG9ydHMuaXNIdHRwc1VyaT1VLGdlLmV4cG9ydHMuaXNXZWJVcmk9UTt2YXIgQj1mdW5jdGlvbihaKXtyZXR1cm4gWi5t''@;'; put 'put ''YXRjaCgvKD86KFteOlwvPyNdKyk6KT8oPzpcL1wvKFteXC8/I10qKSk/KFtePyNdKikoPzpcPyhbXiNdKikpPyg/OiMoLiopKT8vKX07ZnVuY3Rpb24gRShaKXtpZihaJiYhL1teYS16MC05XDpcL1w/XCNcW1xdXEBcIVwkXCZcJ1woXClcKlwrXCxcO1w9XC5cLVxfXH5cJV0vaS50ZXN0KFop''@;'; put 'put ''JiYhLyVbXjAtOWEtZl0vaS50ZXN0KFopJiYhLyVbMC05YS1mXSg6P1teMC05YS1mXXwkKS9pLnRlc3QoWikpe3ZhciBpZSxZLFcsTixlZSxsZT0iIixxPSIiO2lmKFk9KGllPUIoWikpWzJdLFc9aWVbM10sTj1pZVs0XSxlZT1pZVs1XSwobGU9aWVbMV0pJiZsZS5sZW5ndGgmJlcubGVuZ3Ro''@;'; put 'put ''Pj0wKXtpZihZJiZZLmxlbmd0aCl7aWYoMCE9PVcubGVuZ3RoJiYhL15cLy8udGVzdChXKSlyZXR1cm59ZWxzZSBpZigvXlwvXC8vLnRlc3QoVykpcmV0dXJuO2lmKC9eW2Etel1bYS16MC05XCtcLVwuXSokLy50ZXN0KGxlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBxKz1sZSsiOiIsWSYmWS5s''@;'; put 'put ''ZW5ndGgmJihxKz0iLy8iK1kpLHErPVcsTiYmTi5sZW5ndGgmJihxKz0iPyIrTiksZWUmJmVlLmxlbmd0aCYmKHErPSIjIitlZSkscX19fWZ1bmN0aW9uIE1lKFosaWUpe2lmKEUoWikpe3ZhciBsZSxOLHEsSixZPSIiLFc9IiIsZWU9IiIsc2U9IiI7aWYoVz0obGU9QihaKSlbMl0sTj1sZVsz''@;'; put 'put ''XSxxPWxlWzRdLEo9bGVbNV0sWT1sZVsxXSl7aWYoaWUpe2lmKCJodHRwcyIhPVkudG9Mb3dlckNhc2UoKSlyZXR1cm59ZWxzZSBpZigiaHR0cCIhPVkudG9Mb3dlckNhc2UoKSlyZXR1cm47aWYoVylyZXR1cm4vOihcZCspJC8udGVzdChXKSYmKGVlPVcubWF0Y2goLzooXGQrKSQvKVswXSxX''@;'; put 'put ''PVcucmVwbGFjZSgvOlxkKyQvLCIiKSksc2UrPVkrIjoiLHNlKz0iLy8iK1csZWUmJihzZSs9ZWUpLHNlKz1OLHEmJnEubGVuZ3RoJiYoc2UrPSI/IitxKSxKJiZKLmxlbmd0aCYmKHNlKz0iIyIrSiksc2V9fX1mdW5jdGlvbiBVKFope3JldHVybiBNZShaLCEwKX1mdW5jdGlvbiBRKFope3Jl''@;'; put 'put ''dHVybiBNZShaKXx8VShaKX19KFhlPUwubm1kKFhlKSl9LDI5MDM1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihnZSl7dmFyIEI9ZnVuY3Rpb24oWil7Wj12b2lkIDAhPT0oWj1afHx7fSk/Wjp7fTt2YXIgbGUsaWU9e307Zm9yKGxlIGluIFopWi5oYXNPd25Qcm9wZXJ0eShsZSkmJihp''@;'; put 'put ''ZVtsZV09WltsZV0pO1ouYXJndW1lbnRzPVtdLFoudGhpc1Byb2dyYW09Ii4vdGhpcy5wcm9ncmFtIixaLnF1aXQ9ZnVuY3Rpb24oZHQsRHQpe3Rocm93IER0fSxaLnByZVJ1bj1bXSxaLnBvc3RSdW49W107dmFyIHEsSixZPSExLFc9ITEsTj0hMSxlZT0hMTtpZihaLkVOVklST05NRU5UKWlm''@;'; put 'put ''KCJXRUIiPT09Wi5FTlZJUk9OTUVOVClZPSEwO2Vsc2UgaWYoIldPUktFUiI9PT1aLkVOVklST05NRU5UKVc9ITA7ZWxzZSBpZigiTk9ERSI9PT1aLkVOVklST05NRU5UKU49ITA7ZWxzZXtpZigiU0hFTEwiIT09Wi5FTlZJUk9OTUVOVCl0aHJvdyBuZXcgRXJyb3IoIk1vZHVsZVsnRU5WSVJP''@;'; put 'put ''Tk1FTlQnXSB2YWx1ZSBpcyBub3QgdmFsaWQuIG11c3QgYmUgb25lIG9mOiBXRUJ8V09SS0VSfE5PREV8U0hFTEwuIik7ZWU9ITB9ZWxzZSBZPSJvYmplY3QiPT10eXBlb2Ygd2luZG93LFc9ImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMsTj0ib2JqZWN0Ij09dHlwZW9mIHByb2Nl''@;'; put 'put ''c3MmJiFZJiYhVyxlZT0hWSYmIU4mJiFXO2ZvcihsZSBpbiBOPyhaLnJlYWQ9ZnVuY3Rpb24oRHQsWHQpe3ZhciB1ZTtyZXR1cm4odWU9SjIoRHQpKXx8KHF8fChxPUwoMzUxNTkpKSxKfHwoSj1MKDc1NzAxKSksRHQ9Si5ub3JtYWxpemUoRHQpLHVlPXEucmVhZEZpbGVTeW5jKER0KSksWHQ/''@;'; put 'put ''dWU6dWUudG9TdHJpbmcoKX0sWi5yZWFkQmluYXJ5PWZ1bmN0aW9uKER0KXt2YXIgWHQ9Wi5yZWFkKER0LCEwKTtyZXR1cm4gWHQuYnVmZmVyfHwoWHQ9bmV3IFVpbnQ4QXJyYXkoWHQpKSxPKFh0LmJ1ZmZlciksWHR9LHByb2Nlc3MuYXJndi5sZW5ndGg+MSYmKFoudGhpc1Byb2dyYW09cHJv''@;'; put 'put ''Y2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKSksWi5hcmd1bWVudHM9cHJvY2Vzcy5hcmd2LnNsaWNlKDIpLFhlLmV4cG9ydHM9Wixwcm9jZXNzLm9uKCJ1bmNhdWdodEV4Y2VwdGlvbiIsZnVuY3Rpb24oZHQpe2lmKCEoZHQgaW5zdGFuY2VvZiBnMykpdGhyb3cgZHR9KSxwcm9jZXNz''@;'; put 'put ''Lm9uKCJ1bmhhbmRsZWRSZWplY3Rpb24iLGZ1bmN0aW9uKGR0LER0KXtwcm9jZXNzLmV4aXQoMSl9KSxaLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4iW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0ifSk6ZWU/KCJ1bmRlZmluZWQiIT10eXBlb2YgcmVhZCYmKFoucmVhZD1mdW5jdGlvbihE''@;'; put 'put ''dCl7dmFyIFh0PUoyKER0KTtyZXR1cm4gWHQ/eW8oWHQpOnJlYWQoRHQpfSksWi5yZWFkQmluYXJ5PWZ1bmN0aW9uKER0KXt2YXIgWHQ7cmV0dXJuKFh0PUoyKER0KSl8fCgiZnVuY3Rpb24iPT10eXBlb2YgcmVhZGJ1ZmZlcj9uZXcgVWludDhBcnJheShyZWFkYnVmZmVyKER0KSk6KE8oIm9i''@;'; put 'put ''amVjdCI9PXR5cGVvZihYdD1yZWFkKER0LCJiaW5hcnkiKSkpLFh0KSl9LCJ1bmRlZmluZWQiIT10eXBlb2Ygc2NyaXB0QXJncz9aLmFyZ3VtZW50cz1zY3JpcHRBcmdzOnZvaWQgMCE9PWFyZ3VtZW50cyYmKFouYXJndW1lbnRzPWFyZ3VtZW50cyksImZ1bmN0aW9uIj09dHlwZW9mIHF1aXQm''@;'; put 'put ''JihaLnF1aXQ9ZnVuY3Rpb24oZHQsRHQpe3F1aXQoZHQpfSkpOihZfHxXKSYmKFoucmVhZD1mdW5jdGlvbihEdCl7dHJ5e3ZhciBYdD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIFh0Lm9wZW4oIkdFVCIsRHQsITEpLFh0LnNlbmQobnVsbCksWHQucmVzcG9uc2VUZXh0fWNhdGNoKFR0KXt2''@;'; put 'put ''YXIgdWU9SjIoRHQpO2lmKHVlKXJldHVybiB5byh1ZSk7dGhyb3cgVHR9fSxXJiYoWi5yZWFkQmluYXJ5PWZ1bmN0aW9uKER0KXt0cnl7dmFyIFh0PW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gWHQub3BlbigiR0VUIixEdCwhMSksWHQucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsWHQu''@;'; put 'put ''c2VuZChudWxsKSxuZXcgVWludDhBcnJheShYdC5yZXNwb25zZSl9Y2F0Y2goVHQpe3ZhciB1ZT1KMihEdCk7aWYodWUpcmV0dXJuIHVlO3Rocm93IFR0fX0pLFoucmVhZEFzeW5jPWZ1bmN0aW9uKER0LFh0LHVlKXt2YXIgVHQ9bmV3IFhNTEh0dHBSZXF1ZXN0O1R0Lm9wZW4oIkdFVCIsRHQs''@;'; put 'put ''ITApLFR0LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLFR0Lm9ubG9hZD1mdW5jdGlvbigpe2lmKDIwMD09VHQuc3RhdHVzfHwwPT1UdC5zdGF0dXMmJlR0LnJlc3BvbnNlKVh0KFR0LnJlc3BvbnNlKTtlbHNle3ZhciBidD1KMihEdCk7YnQ/WHQoYnQuYnVmZmVyKTp1ZSgpfX0sVHQub25l''@;'; put 'put ''cnJvcj11ZSxUdC5zZW5kKG51bGwpfSx2b2lkIDAhPT1hcmd1bWVudHMmJihaLmFyZ3VtZW50cz1hcmd1bWVudHMpLFouc2V0V2luZG93VGl0bGU9ZnVuY3Rpb24oZHQpe2RvY3VtZW50LnRpdGxlPWR0fSksWi5wcmludD0idW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGU/Y29uc29sZS5sb2c6''@;'; put 'put ''InVuZGVmaW5lZCIhPXR5cGVvZiBwcmludD9wcmludDpudWxsLFoucHJpbnRFcnI9InVuZGVmaW5lZCIhPXR5cGVvZiBwcmludEVycj9wcmludEVycjoidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2Fybnx8Wi5wcmludCxaLnByaW50PVoucHJpbnQsWi5wcmludEVycj1a''@;'; put 'put ''LnByaW50RXJyLGllKWllLmhhc093blByb3BlcnR5KGxlKSYmKFpbbGVdPWllW2xlXSk7aWU9dm9pZCAwO3ZhciBzZT0xNjtmdW5jdGlvbiBhZShkdCl7TyghanQpO3ZhciBEdD1BdDtyZXR1cm4gQXQ9QXQrZHQrMTUmLTE2LER0fWZ1bmN0aW9uIGZlKGR0KXtPKGxuKTt2YXIgRHQ9UnRbbG4+''@;'; put 'put ''PjJdLFh0PUR0K2R0KzE1Ji0xNjtyZXR1cm4gUnRbbG4+PjJdPVh0LFh0Pj11ciYmIWtuKCk/KFJ0W2xuPj4yXT1EdCwwKTpEdH1mdW5jdGlvbiBkZShkdCxEdCl7cmV0dXJuIER0fHwoRHQ9c2UpLE1hdGguY2VpbChkdC9EdCkqRHR9ZnVuY3Rpb24gdmUoZHQpe3N3aXRjaChkdCl7Y2FzZSJp''@;'; put 'put ''MSI6Y2FzZSJpOCI6cmV0dXJuIDE7Y2FzZSJpMTYiOnJldHVybiAyO2Nhc2UiaTMyIjpjYXNlImZsb2F0IjpyZXR1cm4gNDtjYXNlImk2NCI6Y2FzZSJkb3VibGUiOnJldHVybiA4O2RlZmF1bHQ6aWYoIioiPT09ZHRbZHQubGVuZ3RoLTFdKXJldHVybiA0O2lmKCJpIj09PWR0WzBdKXt2YXIg''@;'; put 'put ''RHQ9cGFyc2VJbnQoZHQuc3Vic3RyKDEpKTtyZXR1cm4gTyhEdCU4PT0wKSxEdC84fXJldHVybiAwfX1uZXcgQXJyYXkoMCk7dmFyIFRlPTgsRWU9MDtmdW5jdGlvbiBPKGR0LER0KXtkdHx8YTIoIkFzc2VydGlvbiBmYWlsZWQ6ICIrRHQpfWZ1bmN0aW9uIHooZHQpe3ZhciBEdD1aWyJfIitk''@;'; put 'put ''dF07cmV0dXJuIE8oRHQsIkNhbm5vdCBjYWxsIHVua25vd24gZnVuY3Rpb24gIitkdCsiLCBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWQiKSxEdH12YXIgbmU9e3N0YWNrU2F2ZTpmdW5jdGlvbigpe1lzKCl9LHN0YWNrUmVzdG9yZTpmdW5jdGlvbigpe2s4KCl9LGFycmF5VG9DOmZ1bmN0aW9u''@;'; put 'put ''KGR0KXt2YXIgRHQ9JGcoZHQubGVuZ3RoKTtyZXR1cm4gR24oZHQsRHQpLER0fSxzdHJpbmdUb0M6ZnVuY3Rpb24oZHQpe3ZhciBEdD0wO2lmKG51bGwhPWR0JiYwIT09ZHQpe3ZhciBYdD0xKyhkdC5sZW5ndGg8PDIpO1FlKGR0LER0PSRnKFh0KSxYdCl9cmV0dXJuIER0fX0sdGU9e3N0cmlu''@;'; put 'put ''ZzpuZS5zdHJpbmdUb0MsYXJyYXk6bmUuYXJyYXlUb0N9O2Z1bmN0aW9uIHgoZHQsRHQsWHQsdWUsVHQpe3ZhciBhPXooZHQpLGJ0PVtdLGFyPTA7aWYodWUpZm9yKHZhciBOaT0wO05pPHVlLmxlbmd0aDtOaSsrKXt2YXIgV249dGVbWHRbTmldXTtXbj8oMD09PWFyJiYoYXI9WXMoKSksYnRb''@;'; put 'put ''TmldPVduKHVlW05pXSkpOmJ0W05pXT11ZVtOaV19dmFyIF89YS5hcHBseShudWxsLGJ0KTtyZXR1cm4ic3RyaW5nIj09PUR0JiYoXz1GKF8pKSwwIT09YXImJms4KGFyKSxffWZ1bmN0aW9uIFAoZHQsRHQsWHQsdWUpe3N3aXRjaCgiKiI9PT0oWHQ9WHR8fCJpOCIpLmNoYXJBdChYdC5sZW5n''@;'; put 'put ''dGgtMSkmJihYdD0iaTMyIiksWHQpe2Nhc2UiaTEiOmNhc2UiaTgiOl90W2R0Pj4wXT1EdDticmVhaztjYXNlImkxNiI6cWVbZHQ+PjFdPUR0O2JyZWFrO2Nhc2UiaTMyIjpSdFtkdD4+Ml09RHQ7YnJlYWs7Y2FzZSJpNjQiOnRlbXBJNjQ9W0R0Pj4+MCwodGVtcERvdWJsZT1EdCwrUG4odGVt''@;'; put 'put ''cERvdWJsZSk+PTE/dGVtcERvdWJsZT4wPygwfE9yKCtvcih0ZW1wRG91YmxlLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpKT4+PjA6fn4rSm4oKHRlbXBEb3VibGUtKyh+fnRlbXBEb3VibGU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxSdFtkdD4+Ml09dGVtcEk2NFswXSxSdFtkdCs0Pj4y''@;'; put 'put ''XT10ZW1wSTY0WzFdO2JyZWFrO2Nhc2UiZmxvYXQiOmN0W2R0Pj4yXT1EdDticmVhaztjYXNlImRvdWJsZSI6TnRbZHQ+PjNdPUR0O2JyZWFrO2RlZmF1bHQ6YTIoImludmFsaWQgdHlwZSBmb3Igc2V0VmFsdWU6ICIrWHQpfX12YXIgVj0yLFQ9NDtmdW5jdGlvbiBTKGR0LER0LFh0LHVlKXt2''@;'; put 'put ''YXIgVHQsYTsibnVtYmVyIj09dHlwZW9mIGR0PyhUdD0hMCxhPWR0KTooVHQ9ITEsYT1kdC5sZW5ndGgpO3ZhciBhcixidD0ic3RyaW5nIj09dHlwZW9mIER0P0R0Om51bGw7aWYoYXI9WHQ9PVQ/dWU6WyJmdW5jdGlvbiI9PXR5cGVvZiBGcD9GcDphZSwkZyxhZSxmZV1bdm9pZCAwPT09WHQ/''@;'; put 'put ''VjpYdF0oTWF0aC5tYXgoYSxidD8xOkR0Lmxlbmd0aCkpLFR0KXt2YXIgTmk7Zm9yKHVlPWFyLE8oMD09KDMmYXIpKSxOaT1hcisoLTQmYSk7dWU8Tmk7dWUrPTQpUnRbdWU+PjJdPTA7Zm9yKE5pPWFyK2E7dWU8Tmk7KV90W3VlKys+PjBdPTA7cmV0dXJuIGFyfWlmKCJpOCI9PT1idClyZXR1''@;'; put 'put ''cm4gbnQuc2V0KGR0LnN1YmFycmF5fHxkdC5zbGljZT9kdDpuZXcgVWludDhBcnJheShkdCksYXIpLGFyO2Zvcih2YXIgXyx3byxraSxXbj0wO1duPGE7KTAhPT0oXz1idHx8RHRbV25dKT8oImk2NCI9PV8mJihfPSJpMzIiKSxQKGFyK1duLGR0W1duXSxfKSxraSE9PV8mJih3bz12ZShfKSxr''@;'; put 'put ''aT1fKSxXbis9d28pOlduKys7cmV0dXJuIGFyfWZ1bmN0aW9uIEYoZHQsRHQpe2lmKDA9PT1EdHx8IWR0KXJldHVybiIiO2Zvcih2YXIgdWUsWHQ9MCxUdD0wO1h0fD11ZT1udFtkdCtUdD4+MF0sKDAhPXVlfHxEdCkmJihUdCsrLCFEdHx8VHQhPUR0KTspO0R0fHwoRHQ9VHQpO3ZhciBhPSIi''@;'; put 'put ''O2lmKFh0PDEyOCl7Zm9yKHZhciBhcjtEdD4wOylhcj1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxudC5zdWJhcnJheShkdCxkdCtNYXRoLm1pbihEdCwxMDI0KSkpLGE9YT9hK2FyOmFyLGR0Kz0xMDI0LER0LT0xMDI0O3JldHVybiBhfXJldHVybiBEZShkdCl9dmFyIHllPSJ1''@;'; put 'put ''bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwO2Z1bmN0aW9uIENlKGR0LER0KXtmb3IodmFyIFh0PUR0O2R0W1h0XTspKytYdDtpZihYdC1EdD4xNiYmZHQuc3ViYXJyYXkmJnllKXJldHVybiB5ZS5kZWNvZGUoZHQuc3ViYXJyYXko''@;'; put 'put ''RHQsWHQpKTtmb3IodmFyIHVlLFR0LGEsYnQsYXIsV249IiI7Oyl7aWYoISh1ZT1kdFtEdCsrXSkpcmV0dXJuIFduO2lmKDEyOCZ1ZSlpZihUdD02MyZkdFtEdCsrXSwxOTIhPSgyMjQmdWUpKWlmKGE9NjMmZHRbRHQrK10sMjI0PT0oMjQwJnVlKT91ZT0oMTUmdWUpPDwxMnxUdDw8NnxhOihi''@;'; put 'put ''dD02MyZkdFtEdCsrXSwyNDA9PSgyNDgmdWUpP3VlPSg3JnVlKTw8MTh8VHQ8PDEyfGE8PDZ8YnQ6KGFyPTYzJmR0W0R0KytdLHVlPTI0OD09KDI1MiZ1ZSk/KDMmdWUpPDwyNHxUdDw8MTh8YTw8MTJ8YnQ8PDZ8YXI6KDEmdWUpPDwzMHxUdDw8MjR8YTw8MTh8YnQ8PDEyfGFyPDw2fDYzJmR0''@;'; put 'put ''W0R0KytdKSksdWU8NjU1MzYpV24rPVN0cmluZy5mcm9tQ2hhckNvZGUodWUpO2Vsc2V7dmFyIF89dWUtNjU1MzY7V24rPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Xz4+MTAsNTYzMjB8MTAyMyZfKX1lbHNlIFduKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZ1ZSk8PDZ8VHQpO2Vsc2Ug''@;'; put 'put ''V24rPVN0cmluZy5mcm9tQ2hhckNvZGUodWUpfX1mdW5jdGlvbiBEZShkdCl7cmV0dXJuIENlKG50LGR0KX1mdW5jdGlvbiBQZShkdCxEdCxYdCx1ZSl7aWYoISh1ZT4wKSlyZXR1cm4gMDtmb3IodmFyIFR0PVh0LGE9WHQrdWUtMSxidD0wO2J0PGR0Lmxlbmd0aDsrK2J0KXt2YXIgYXI9ZHQu''@;'; put 'put ''Y2hhckNvZGVBdChidCk7aWYoYXI+PTU1Mjk2JiZhcjw9NTczNDMmJihhcj02NTUzNisoKDEwMjMmYXIpPDwxMCl8MTAyMyZkdC5jaGFyQ29kZUF0KCsrYnQpKSxhcjw9MTI3KXtpZihYdD49YSlicmVhaztEdFtYdCsrXT1hcn1lbHNlIGlmKGFyPD0yMDQ3KXtpZihYdCsxPj1hKWJyZWFrO0R0''@;'; put 'put ''W1h0KytdPTE5Mnxhcj4+NixEdFtYdCsrXT0xMjh8NjMmYXJ9ZWxzZSBpZihhcjw9NjU1MzUpe2lmKFh0KzI+PWEpYnJlYWs7RHRbWHQrK109MjI0fGFyPj4xMixEdFtYdCsrXT0xMjh8YXI+PjYmNjMsRHRbWHQrK109MTI4fDYzJmFyfWVsc2UgaWYoYXI8PTIwOTcxNTEpe2lmKFh0KzM+PWEp''@;'; put 'put ''YnJlYWs7RHRbWHQrK109MjQwfGFyPj4xOCxEdFtYdCsrXT0xMjh8YXI+PjEyJjYzLER0W1h0KytdPTEyOHxhcj4+NiY2MyxEdFtYdCsrXT0xMjh8NjMmYXJ9ZWxzZSBpZihhcjw9NjcxMDg4NjMpe2lmKFh0KzQ+PWEpYnJlYWs7RHRbWHQrK109MjQ4fGFyPj4yNCxEdFtYdCsrXT0xMjh8YXI+''@;'; put 'put ''PjE4JjYzLER0W1h0KytdPTEyOHxhcj4+MTImNjMsRHRbWHQrK109MTI4fGFyPj42JjYzLER0W1h0KytdPTEyOHw2MyZhcn1lbHNle2lmKFh0KzU+PWEpYnJlYWs7RHRbWHQrK109MjUyfGFyPj4zMCxEdFtYdCsrXT0xMjh8YXI+PjI0JjYzLER0W1h0KytdPTEyOHxhcj4+MTgmNjMsRHRbWHQr''@;'; put 'put ''K109MTI4fGFyPj4xMiY2MyxEdFtYdCsrXT0xMjh8YXI+PjYmNjMsRHRbWHQrK109MTI4fDYzJmFyfX1yZXR1cm4gRHRbWHRdPTAsWHQtVHR9ZnVuY3Rpb24gUWUoZHQsRHQsWHQpe3JldHVybiBQZShkdCxudCxEdCxYdCl9ZnVuY3Rpb24gJGUoZHQpe2Zvcih2YXIgRHQ9MCxYdD0wO1h0PGR0''@;'; put 'put ''Lmxlbmd0aDsrK1h0KXt2YXIgdWU9ZHQuY2hhckNvZGVBdChYdCk7dWU+PTU1Mjk2JiZ1ZTw9NTczNDMmJih1ZT02NTUzNisoKDEwMjMmdWUpPDwxMCl8MTAyMyZkdC5jaGFyQ29kZUF0KCsrWHQpKSx1ZTw9MTI3PysrRHQ6RHQrPXVlPD0yMDQ3PzI6dWU8PTY1NTM1PzM6dWU8PTIwOTcxNTE/''@;'; put 'put ''NDp1ZTw9NjcxMDg4NjM/NTo2fXJldHVybiBEdH1mdW5jdGlvbiB5dChkdCl7dmFyIER0PSRlKGR0KSsxLFh0PUZwKER0KTtyZXR1cm4gWHQmJlBlKGR0LF90LFh0LER0KSxYdH1mdW5jdGlvbiBtdChkdCl7cmV0dXJuIGR0LnJlcGxhY2UoL19fWltcd1xkX10rL2csZnVuY3Rpb24oWHQpe3Jl''@;'; put 'put ''dHVybiBYdD09WHQ/WHQ6WHQrIiBbIitYdCsiXSJ9KX1mdW5jdGlvbiB2dCgpe3ZhciBkdD1uZXcgRXJyb3I7aWYoIWR0LnN0YWNrKXt0cnl7dGhyb3cgbmV3IEVycm9yKDApfWNhdGNoKER0KXtkdD1EdH1pZighZHQuc3RhY2spcmV0dXJuIihubyBzdGFjayB0cmFjZSBhdmFpbGFibGUpIn1y''@;'; put 'put ''ZXR1cm4gZHQuc3RhY2sudG9TdHJpbmcoKX1mdW5jdGlvbiBmdCgpe3ZhciBkdD12dCgpO3JldHVybiBaLmV4dHJhU3RhY2tUcmFjZSYmKGR0Kz0iXG4iK1ouZXh0cmFTdGFja1RyYWNlKCkpLG10KGR0KX0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyJiZuZXcgVGV4dERlY29kZXIo''@;'; put 'put ''InV0Zi0xNmxlIik7dmFyIG9uLF90LG50LHFlLFJ0LGN0LE50LEF0LGp0LEp0LG1uLHBuLGJuLGxuLEZ0PTE2Mzg0O2Z1bmN0aW9uIHplKCl7Wi5IRUFQOD1fdD1uZXcgSW50OEFycmF5KG9uKSxaLkhFQVAxNj1xZT1uZXcgSW50MTZBcnJheShvbiksWi5IRUFQMzI9UnQ9bmV3IEludDMyQXJy''@;'; put 'put ''YXkob24pLFouSEVBUFU4PW50PW5ldyBVaW50OEFycmF5KG9uKSxaLkhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KG9uKSxaLkhFQVBVMzI9bmV3IFVpbnQzMkFycmF5KG9uKSxaLkhFQVBGMzI9Y3Q9bmV3IEZsb2F0MzJBcnJheShvbiksWi5IRUFQRjY0PU50PW5ldyBGbG9hdDY0QXJyYXkob24p''@;'; put 'put ''fWZ1bmN0aW9uIE5uKCl7YTIoIkNhbm5vdCBlbmxhcmdlIG1lbW9yeSBhcnJheXMuIEVpdGhlciAoMSkgY29tcGlsZSB3aXRoICAtcyBUT1RBTF9NRU1PUlk9WCAgd2l0aCBYIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlICIrdXIrIiwgKDIpIGNvbXBpbGUgd2l0aCAgLXMgQUxMT1df''@;'; put 'put ''TUVNT1JZX0dST1dUSD0xICB3aGljaCBhbGxvd3MgaW5jcmVhc2luZyB0aGUgc2l6ZSBhdCBydW50aW1lIGJ1dCBwcmV2ZW50cyBzb21lIG9wdGltaXphdGlvbnMsICgzKSBzZXQgTW9kdWxlLlRPVEFMX01FTU9SWSB0byBhIGhpZ2hlciB2YWx1ZSBiZWZvcmUgdGhlIHByb2dyYW0gcnVucywg''@;'; put 'put ''b3IgKDQpIGlmIHlvdSB3YW50IG1hbGxvYyB0byByZXR1cm4gTlVMTCAoMCkgaW5zdGVhZCBvZiB0aGlzIGFib3J0LCBjb21waWxlIHdpdGggIC1zIEFCT1JUSU5HX01BTExPQz0wICIpfWZ1bmN0aW9uIGtuKCl7Tm4oKX1BdD1KdD1tbj1wbj1ibj1sbj0wLGp0PSExO3ZhciBlcj1aLlRPVEFM''@;'; put 'put ''X1NUQUNLfHw1MjQyODgwLHVyPVouVE9UQUxfTUVNT1JZfHwxNjc3NzIxNjtmdW5jdGlvbiBYbigpe3JldHVybiB1cn1pZih1cjxlciYmWi5wcmludEVycigiVE9UQUxfTUVNT1JZIHNob3VsZCBiZSBsYXJnZXIgdGhhbiBUT1RBTF9TVEFDSywgd2FzICIrdXIrIiEgKFRPVEFMX1NUQUNLPSIr''@;'; put 'put ''ZXIrIikiKSxaLmJ1ZmZlcj9vbj1aLmJ1ZmZlcjoob249bmV3IEFycmF5QnVmZmVyKHVyKSxaLmJ1ZmZlcj1vbiksemUoKSxSdFswXT0xNjY4NTA5MDI5LHFlWzFdPTI1NDU5LDExNSE9PW50WzJdfHw5OSE9PW50WzNdKXRocm93IlJ1bnRpbWUgZXJyb3I6IGV4cGVjdGVkIHRoZSBzeXN0ZW0g''@;'; put 'put ''dG8gYmUgbGl0dGxlLWVuZGlhbiEiO2Z1bmN0aW9uIEZyKGR0KXtmb3IoO2R0Lmxlbmd0aD4wOyl7dmFyIER0PWR0LnNoaWZ0KCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIER0KXt2YXIgWHQ9RHQuZnVuYzsibnVtYmVyIj09dHlwZW9mIFh0P3ZvaWQgMD09PUR0LmFyZz9aLmR5bkNhbGxfdihY''@;'; put 'put ''dCk6Wi5keW5DYWxsX3ZpKFh0LER0LmFyZyk6WHQodm9pZCAwPT09RHQuYXJnP251bGw6RHQuYXJnKX1lbHNlIER0KCl9fXZhciB4cj1bXSxlbj1bXSxkcj1bXSxucj1bXSx3bj1bXSwkbj0hMTtmdW5jdGlvbiBnbigpe2lmKFoucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2YgWi5wcmVS''@;'; put 'put ''dW4mJihaLnByZVJ1bj1bWi5wcmVSdW5dKTtaLnByZVJ1bi5sZW5ndGg7KV9uKFoucHJlUnVuLnNoaWZ0KCkpO0ZyKHhyKX1mdW5jdGlvbiBLbigpeyRufHwoJG49ITAsRnIoZW4pKX1mdW5jdGlvbiBWdCgpe0ZyKGRyKX1mdW5jdGlvbiBzbigpe0ZyKG5yKX1mdW5jdGlvbiBVbigpe2lmKFou''@;'; put 'put ''cG9zdFJ1bilmb3IoImZ1bmN0aW9uIj09dHlwZW9mIFoucG9zdFJ1biYmKFoucG9zdFJ1bj1bWi5wb3N0UnVuXSk7Wi5wb3N0UnVuLmxlbmd0aDspdG4oWi5wb3N0UnVuLnNoaWZ0KCkpO0ZyKHduKX1mdW5jdGlvbiBfbihkdCl7eHIudW5zaGlmdChkdCl9ZnVuY3Rpb24gdG4oZHQpe3duLnVu''@;'; put 'put ''c2hpZnQoZHQpfWZ1bmN0aW9uIEduKGR0LER0KXtfdC5zZXQoZHQsRHQpfWZ1bmN0aW9uIFRyKGR0LER0LFh0KXtmb3IodmFyIHVlPTA7dWU8ZHQubGVuZ3RoOysrdWUpX3RbRHQrKz4+MF09ZHQuY2hhckNvZGVBdCh1ZSk7WHR8fChfdFtEdD4+MF09MCl9KCFNYXRoLmltdWx8fC01IT09TWF0''@;'; put 'put ''aC5pbXVsKDQyOTQ5NjcyOTUsNSkpJiYoTWF0aC5pbXVsPWZ1bmN0aW9uKER0LFh0KXt2YXIgVHQ9NjU1MzUmRHQsYnQ9NjU1MzUmWHQ7cmV0dXJuIFR0KmJ0KygoRHQ+Pj4xNikqYnQrVHQqKFh0Pj4+MTYpPDwxNil8MH0pLE1hdGguaW11bD1NYXRoLmltdWwsTWF0aC5jbHozMnx8KE1hdGgu''@;'; put 'put ''Y2x6MzI9ZnVuY3Rpb24oZHQpe2R0Pj4+PTA7Zm9yKHZhciBEdD0wO0R0PDMyO0R0KyspaWYoZHQmMTw8MzEtRHQpcmV0dXJuIER0O3JldHVybiAzMn0pLE1hdGguY2x6MzI9TWF0aC5jbHozMixNYXRoLnRydW5jfHwoTWF0aC50cnVuYz1mdW5jdGlvbihkdCl7cmV0dXJuIGR0PDA/TWF0aC5j''@;'; put 'put ''ZWlsKGR0KTpNYXRoLmZsb29yKGR0KX0pLE1hdGgudHJ1bmM9TWF0aC50cnVuYzt2YXIgUG49TWF0aC5hYnMsTG49KE1hdGgsTWF0aCxNYXRoLE1hdGgsTWF0aCxNYXRoLE1hdGgsTWF0aCxNYXRoLE1hdGguc3FydCksSm49TWF0aC5jZWlsLG9yPU1hdGguZmxvb3IsZ3I9TWF0aC5wb3csT3I9''@;'; put 'put ''KE1hdGgsTWF0aCxNYXRoLE1hdGgubWluKSxlMD0oTWF0aCxNYXRoLE1hdGgsMCksZDA9bnVsbCxfMD1udWxsO2Z1bmN0aW9uIEJpKGR0KXtlMCsrLFoubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmWi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKGUwKX1mdW5jdGlvbiBqMChkdCl7aWYoZTAtLSxa''@;'; put 'put ''Lm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJloubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhlMCksMD09ZTAmJihudWxsIT09ZDAmJihjbGVhckludGVydmFsKGQwKSxkMD1udWxsKSxfMCkpe3ZhciBEdD1fMDtfMD1udWxsLER0KCl9fVoucHJlbG9hZGVkSW1hZ2VzPXt9LFoucHJlbG9hZGVkQXVk''@;'; put 'put ''aW9zPXt9O3ZhciBBbz1udWxsLEtvPSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIjtmdW5jdGlvbiBmYShkdCl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aD9kdC5zdGFydHNXaXRoKEtvKTowPT09ZHQuaW5kZXhPZihLbyl9dmFyIGVsPVtmdW5jdGlv''@;'; put 'put ''bihkdCxEdCl7dmFyIFh0PUYoZHQpLHVlPUYoRHQpO0FuLmNyZWF0ZVBhdGgoIi8iLHEwLmRpcm5hbWUoWHQpKSxBbi53cml0ZUZpbGUocTAuam9pbigiLyIsWHQpLHVlKX1dO2Z1bmN0aW9uIEppKGR0LER0LFh0KXtyZXR1cm4gZWxbZHRdKER0LFh0KX1BdD1UZSsxOTcyMzIsZW4ucHVzaCgp''@;'; put 'put ''LEFvPSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUFBQUFBQUE4RDhBQUFBQUFBRHdQd0FBQUFBQUFQQS9BQUFBQUFBQThEOEFBQUFBQUFEd1B3QUFBQUFBQVBBL0FBQUFBQUFBOEQ4QUFBQUFBQUR3UHdBQUFBQUFBUEEvQUFBQUFBQUE4RDhBQUFBQUFBRHdQd0FBQUFB''@;'; put 'put ''QUFQQS9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQUlNRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJTUUFBQUFBQUFBRkpB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZKQUFBQUFBQUFBVWtBQUlNRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUJTUUFBQUFBQUFBRkpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZKQUFBQUFBQUFBVWtBQ0VBQUFBQUFBQUFBQUFBQUFBQkJBb0M4QUFBZ0FBQUFCQUFBQUFBQUFBQUlRQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNXUUFBQUFBQUFnSlpBQkpEREFBQUFBQUFBQUFBQUFBQVFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXRUFBQUFB''@;'; put 'put ''QUFBQllRQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJZUUFBQUFBQUFBRmhBQUFBQUFBQUFBQUFBQUFBQUFBQVFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFVa0FBQUFBQUFBQlNRQUFnQXdJQUFBQUFBQUFBQUFBQUVFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUFBQUFBQUFBQUJDUUFBQUFBQUFBRUpBQUFBQUFBQWdnMEFBQUFBQUFNQ0lRQUFBQUFBQUFGSkFBQUFBQUFBQVVrQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUVKQUFBQUFBQUFBUWtBQUFBQUFBQ0NEUUFBQUFBQUF3SWhBQUFBQUFBQUFVa0FBQUFBQUFBQlNRQUN3d1FBQUFBQUFBQUFBQUFBQUVFQkFOZ0FBa3dBQUFBRUFBQUFBQUFBQVFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFG''@;'; put 'put ''SkFBQUFBQUFBQVVrQUFFQUFDQUFBQUFBQUFBQUFBQUJCQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCWVFBQUFBQUFBQUZoQUFMREJBQUFBQUFBQUFBQUFBQUFBQUJ3NkFBQVFBQUFBQVFB''@;'; put 'put ''QUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0VBQUFBQUFBQUJZUUVBZ1BnTUFBQUFBQUFBQUFBQUFFRUFrT3dBQWVnQUFBQUVBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBRkpBQUFBQUFBQUFVa0FBQUFBQUFBQUFBQUFBQUFBQUFCQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlNRQUFBQUFBQUFGSkEvLy8vLy8vLzczLy8v''@;'; put 'put ''Ly8vLy8vdmYvLy8vLy8vLysvLy8vLy8vLy8vNy84QUFBQUFBQUQ0UHpNek16TXpNOU0vUEFBQUFBQUFBQUNhbVptWm1abXBQd0VBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFEd1B3RUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUR3UHdJQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''RGdQd01BQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFEd1B3UUFBQUFBQUFBQUJRQUFBQUFBQUFBek16TXpNelB6UHdVQUFBQUFBQUFBQmdBQUFBQUFBQUNhbVptWm1abnBQd1lBQUFBQUFBQUFCd0FBQUFBQUFBQUFBQUFBQUFEd1B3Y0FBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQURnUHdn''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBRUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBTXpNek16TXowNzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFnRVpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQW1wbVptWm1aMmI4''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXpNek16TXpQalB3QUFBQUFBQUFBQUFBQUFBQUVBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBZXhTdVIrRjY1TDhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUZBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFFQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFB''@;'; put 'put ''QUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBQUFFQUFBQVRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCcjRWUUFBQVFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUlBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFB''@;'; put 'put ''QUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBREFBQUFBQUFBQUFBQUFBQUFnR1pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBZ0daQW1wbVptWm1aMmI4QUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFGQUFBQUFBQUFBQUFBQUFBQWdHWkFleFN1UitGNjVMOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBZ0VaQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBQVFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFRQUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0FBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkVBQUFBQUFB''@;'; put 'put ''QUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCTUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FBQUFBQUFBQUFBRUFBQUFF''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBMEFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4QUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQllBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJn''@;'; put 'put ''QUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmtBQUFBQUFBQUFBQUVBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEd1ZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBDL0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFB''@;'; put 'put ''QUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBE''@;'; put 'put ''OEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVAxaW9OYzA3VHRVL0pYVUNtZ2diMmo4QUFBQUFBQURnUHdBQUFBQUFBT0EvTE5TYTVoMm42ajlxM25H''@;'; put 'put ''S2p1VG9QMWlvTmMwN1R0VS9XS2cxelR0TzFUOVlxRFhOTzA3VlB3QUFBQUFBQU9BL1hkeEdBM2dMNGo4QUFBQUFBQURRUDFpb05jMDdUdFUvQUFBQUFBQUEwRC9Udk9NVUhjblJQd0FBQUFBQUFPQS9BQUFBQUFBQTREOEFBQUFBQUFEZ1B3QUFBQUFBQU9BL0FBQUFBQUFBNEQ4QUFBQUFBQURn''@;'; put 'put ''UHdBQUFBQUFBT0EvQUFBQUFBQUE0RDhBQUFBQUFBRGdQd0FBQUFBQUFPQS8wN3pqRkIzSjBUL1R2T01VSGNuUlAxM2NSZ040QytJL1hkeEdBM2dMNGo5ZDNFWURlQXZpUHcxeHJJdmJhTncvWkYzY1JnTjQ3VC9TYjE4SHpobm5QeEI2TnFzK1YrVS9FSG8ycXo1WDVUL1NiMThIemhublAzZ0xK''@;'; put 'put ''Q2grak9NL3RSWDd5KzdKNFQvU2IxOEh6aG5uUDlKdlh3Zk9HZWMvV0tnMXpUdE8xVCtJaFZyVHZPUFlQOUp2WHdmT0dlYy9lQXNrS0g2TTR6L0VRcTFwM25Ic1A5SnZYd2ZPR2VjLzBtOWZCODRaNXorMUZmdkw3c25oUDlKdlh3Zk9HZWMvRUhvMnF6NVg1VCsxRmZ2TDdzbmhQM2dMSkNoK2pP''@;'; put 'put ''TS8wbTlmQjg0WjV6L1NiMThIemhublA0WTQxc1Z0Tk80LzBtOWZCODRaNXovU2IxOEh6aG5uUDNnTEpDaCtqT00vV0tnMXpUdE8xVC9Udk9NVUhjblJQMWlvTmMwN1R0VS9wZ3BHSlhVQzNqOEFBQUFBQUFEZ1AxaW9OYzA3VHRVL0RYR3NpOXRvM0Q4QUFBQUFBQURnUHcxeHJJdmJhTncvQUFB''@;'; put 'put ''QUFBQUE0RDhOY2F5TDIyamNQMWlvTmMwN1R0VS9BQUFBQUFBQTREOEFBQUFBQUFEZ1A5Tzg0eFFkeWRFLzA3empGQjNKMFQ4QUFBQUFBQURnUDlPODR4UWR5ZEUvYXQ1eGlvN2s2RDhBQUFBQUFBRGdQd0FBQUFBQUFPQS9BQUFBQUFBQTREOEFBQUFBQUFEZ1AxaW9OYzA3VHRVL2lJVmEwN3pq''@;'; put 'put ''MkQvVHZPTVVIY25SUHdBQUFBQUFBT0EvQUFBQUFBQUE0RC9TYjE4SHpobm5Qd0FBQUFBQUFPQS9BQUFBQUFBQTREOE5jYXlMMjJqY1AvUnNWbjJ1dHQ0L0VUWTh2VktXeVQvMGJGWjlycmJlUHpzQlRZUU5UK0UvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFB''@;'; put 'put ''QUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFB''@;'; put 'put ''RFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ5WXFEWE5PMDdWUHdB''@;'; put 'put ''QUFBQUFBT0EvQUFBQUFBQUE0RDgrNk5tcytsekZQd0FBQUFBQUFPQS9BQUFBQUFBQTREOEFBQUFBQUFEZ1B3QUFBQUFBQU9BL2duTkdsUFlHeHo4TmNheUwyMmpjUHdBQUFBQUFBT0EvV0tnMXpUdE8xVDlZcURYTk8wN1ZQN1VWKzh2dXllRS90Ulg3eSs3SjRUOEFBQUFBQUFEUVB3QUFBQUFB''@;'; put 'put ''QU9BL0FBQUFBQUFBNEQ4QUFBQUFBQURnUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhIOEJaSVVQemNQNkswTi9qQ1pOWS9XS2cxelR0TzFUOE5jYXlMMjJqY1B3MXhySXZiYU53L0FBQUFBQUFBNEQ4QUFBQUFBQUR3UHdBQUFBQUFBUEEvQUFBQUFBQUEwRDhOY2F5TDIyamNQd0FBQUFBQUFOQS9X''@;'; put 'put ''S2cxelR0TzFUOVlxRFhOTzA3VlAxaW9OYzA3VHRVL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUDFpb05jMDdUdFUvV0tnMXpUdE8xVDlZcURYTk8wN1ZQd0FBQUFBQUFOQS9XS2cxelR0TzFUOVlxRFhOTzA3VlB3QUFBQUFBQU5BL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUDFpb05jMDdUdFUvQUFBQUFB''@;'; put 'put ''QUE4RDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4''@;'; put 'put ''QUFBQUFBQURRUDhSQ3JXbmVjZXcvQUFBQUFBQUEwRDkvMlQxNVdLalJQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL2VBc2tLSDZNNHovU2IxOEh6aG5uUDhSQ3JXbmVjZXcvRS9KQnoyYlYwejhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFB''@;'; put 'put ''QUFEUVB3QUFBQUFBQU5BL0VIbzJxejVYNVQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRC9Udk9NVUhjblJQd0FBQUFBQUFOQS9BQUFBQUFBQTBEL1R2T01VSGNuUlB3QUFBQUFBQU9BLzBtOWZCODRaNXo4QUFBQUFBQURnUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQ''@;'; put 'put ''d0FBQUFBQUFOQS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUcz''@;'; put 'put ''eGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVN''@;'; put 'put ''L1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9i''@;'; put 'put ''ZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0''@;'; put 'put ''ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJo''@;'; put 'put ''dDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRM''@;'; put 'put ''alAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhh''@;'; put 'put ''RzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhN''@;'; put 'put ''dU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vk''@;'; put 'put ''b2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdF''@;'; put 'put ''eTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlS''@;'; put 'put ''Mmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZ''@;'; put 'put ''VExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAx''@;'; put 'put ''SGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4''@;'; put 'put ''aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0v''@;'; put 'put ''VWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2Jm''@;'; put 'put ''R0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHovVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBU''@;'; put 'put ''L1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9N''@;'; put 'put ''VUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlAvUnNWbjJ1dHRZL3RSWDd5KzdKNFQrMUZmdkw3c25o''@;'; put 'put ''UDhSQ3JXbmVjZXcvRUhvMnF6NVg1VC8xMjllQmMwYk1QMWlvTmMwN1R0VS9XS2cxelR0TzFUK0loVnJUdk9QWVB3Rk5oQTFQcitJLzA3empGQjNKMFQ5WXFEWE5PMDdWUDlPODR4UWR5ZEUvMDd6akZCM0owVCsxRmZ2TDdzbmhQN1VWKzh2dXllRS90Ulg3eSs3SjRUKzFGZnZMN3NuaFA3VVYr''@;'; put 'put ''OHZ1eWVFL3RSWDd5KzdKNFQrMUZmdkw3c25oUDdVVis4dnV5ZUUvdFJYN3krN0o0VCsxRmZ2TDdzbmhQOU84NHhRZHlkRS8wN3pqRkIzSjBUOEJUWVFOVDYvaVB3Rk5oQTFQcitJL0FVMkVEVSt2NGorMUZmdkw3c25oUDh4ZFM4Z0hQZkEvRUhvMnF6NVg1VDhRZWphclBsZmxQOUp2WHdmT0dl''@;'; put 'put ''Yy8wbTlmQjg0WjV6OFFlamFyUGxmbFAzZ0xKQ2grak9NL2F0NXhpbzdrNkQvU2IxOEh6aG5uUDlPODR4UWR5ZEUvQUFBQUFBQUE0RDhRZWphclBsZmxQN1VWKzh2dXllRS9MTlNhNWgybjZqL1NiMThIemhublAycmVjWXFPNU9nL0VIbzJxejVYNVQ5cTNuR0tqdVRvUDlKdlh3Zk9HZWMvRUhv''@;'; put 'put ''MnF6NVg1VDk0Q3lRb2ZvempQOUp2WHdmT0dlYy9FSG8ycXo1WDVUK0dPTmJGYlRUdVB4QjZOcXMrVitVL0VIbzJxejVYNVQ5NEN5UW9mb3pqUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQNllLUmlWMUF0NC90Ulg3eSs3SjRUOUl2MzBkT0dmTVA3VVYrOHZ1eWVFL3RSWDd5KzdK''@;'; put 'put ''NFQ4QUFBQUFBQURnUDdVVis4dnV5ZUUvdFJYN3krN0o0VC9Udk9NVUhjblJQN1VWKzh2dXllRS90Ulg3eSs3SjRUOUl2MzBkT0dmTVAwaS9mUjA0Wjh3L0FBQUFBQUFBNEQ5SXYzMGRPR2ZNUHl6VW11WWRwK28vdFJYN3krN0o0VCsxRmZ2TDdzbmhQN1VWKzh2dXllRS90Ulg3eSs3SjRUOVlx''@;'; put 'put ''RFhOTzA3VlB3QUFBQUFBQU9BLzA3empGQjNKMFQrMUZmdkw3c25oUHdBQUFBQUFBT0EvMG05ZkI4NFo1ejhBQUFBQUFBRGdQd0FBQUFBQUFPQS9BQUFBQUFBQTREOENtZ2dibmw3VlArQytEcHd6b3RBL0Fwb0lHNTVlMVQ4QlRZUU5UNi9pUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhj''@;'; put 'put ''blJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlP''@;'; put 'put ''ODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFk''@;'; put 'put ''eWRFL1dLZzF6VHRPMVQrMUZmdkw3c25oUDdVVis4dnV5ZUUvUHVqWnJQcGN4VCsxRmZ2TDdzbmhQN1VWKzh2dXllRS90Ulg3eSs3SjRUKzFGZnZMN3NuaFB4MDRaMFJwYjhnL1dLZzF6VHRPMVQrMUZmdkw3c25oUDFpb05jMDdUdFUvV0tnMXpUdE8xVDhBQUFBQUFBRGdQd0FBQUFBQUFPQS8w''@;'; put 'put ''N3pqRkIzSjBUKzFGZnZMN3NuaFA3VVYrOHZ1eWVFL3RSWDd5KzdKNFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvNXgybjZFZ3U0VCtpdERmNHdtVFdQMGkvZlIwNFo4dy9XS2cxelR0TzFUOVlxRFhOTzA3VlA3VVYrOHZ1eWVFL0FBQUFBQUFBOEQ4QUFBQUFBQUR3UDlPODR4UWR5ZEUvZUFza0tI''@;'; put 'put ''Nk00ei9Udk9NVUhjblJQMWlvTmMwN1R0VS9XS2cxelR0TzFUOVlxRFhOTzA3VlAxaW9OYzA3VHRVL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUDFpb05jMDdUdFUvV0tnMXpUdE8xVC9Udk9NVUhjblJQMWlvTmMwN1R0VS9XS2cxelR0TzFUL1R2T01VSGNuUlAxaW9OYzA3VHRVL1dLZzF6VHRPMVQ5''@;'; put 'put ''WXFEWE5PMDdWUHdBQUFBQUFBUEEvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01V''@;'; put 'put ''SGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQ4QUFBQUFBQUR3UDlPODR4UWR5ZEUvNnBXeURIR3Mxei9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA3VVYrOHZ1eWVFL2F0NXhpbzdrNkQ4QUFBQUFBQUR3UDVqZGs0ZUZXdGMvMDd6akZCM0owVC9Udk9NVUhjblJQ''@;'; put 'put ''OU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA4UkNyV25lY2V3LzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS9TTDk5SFRobnpEOTRDeVFvZm96alA0WTQxc1Z0Tk80L2VBc2tLSDZNNHovVHZPTVVIY25SUDlPODR4''@;'; put 'put ''UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQMUdnVCtSSjBnNUF0TWgydnA4Nk5jQTZJdCtsMUNYVnYvT0NQa2VhTG9vL24rVjVjSGZXK2I5Ky9SQWJMSnptUDViczJBakU2OHcvemM2aWR5cmcwRCt3NDc5QUVDRHR2NjJoMUY1RTI5Zy9PNkY4NWxHV2RqL1RibkQ1ZW9SN1A0SE16cUozS3VT''@;'; put 'put ''LzBhM1g5S0NneUQ5cTN6Y1pzRCtFUDc3S2tCbGUvNFEvSEpZR2ZsVER4TCtsU1Nubzl1SWpRS25aQTYzQWtNRS9DTVNRUVpOcGlULzZSSjRrWFRQUXZ3SHdtVFl0d2w0L0RaeDlMOCtVbHorSnRmZ1VBT09KUCtXcFdFWTB5N0cvandESno2Rm5wcjljdGNiN3pMU0lQMDJrajFRNnM1QS81c2NF''@;'; put 'put ''b1dIV29ML0hhV2NjRS9lQ3Z5cC9hK1V0Y0Z5LzVGZGlWQWlhZFQvUjhZZFZjZ1MzUDVYVUNXZ2lQRFBBWkNNUXIrdDNFTUNuSWFyd1ozakhQOXIvQUd2VnJzRS9UaWhFd0NGVTk3K3FTSVd4aFNEMVA1MW9WeUhsSi9ZL1RTN0d3RHFPelQ5WmF5aTFGOUhjdndNL3FtRy9KOHcvcGtkVFBabC8y''@;'; put 'put ''aisyZ1R0UXB6eXVQMUZNM2dBejM3bS85WGFWLzlvTHBqL1VwVFc4RC9hVVB4K3RJTHdzM0pBL0tDenhnTExKSTBBald1Rk1Bb3EzUDBpalpWR1dLWDgvdTdTRzk4R2VrejhYcUh0VFIzMmd2eUVycnVCdGxJcy9NM1BjaE5ZZXRiK2dlSVNKOWZ5UFAyazFKTzZ4OUpHL3VNMHplbDYvYWorU1Bx''@;'; put 'put ''MmlQelROdjM2dzU4WlBQcGkvQnlPYlVDM0hwRDgrR01KN1dMbVJ2eTE4ZmExTGpjWS9BQUFBUVBzaCtUOEFBQUFBTFVSMFBnQUFBSUNZUnZnOEFBQUFZRkhNZURzQUFBQ0FneHZ3T1FBQUFFQWdKWG80QUFBQWdDS0M0ellBQUFBQUhmTnBOUUFBQUFBQUFQQy92QVFCQU9ncUFBQURBQUFBRUMw''@;'; put 'put ''QUFBTUFBQURvTHdBQUF3QUFBTEF3QUFBREFBQUFBRElBQUFNQUFBQjROUUFBQXdBQUFMUTRBQUFEQUFBQXhDNEFBQU1BQUFCOE9RQUFBd0FBQUlRNkFBQURBQUFBRUQ4QUFBTUFBQUEwUFFBQUFBQUFBTlFzQUFBQUFBQUF3QzhBQUFBQUFBQVFNQUFBQUFBQUFOZ3hBQUFBQUFBQUtESUFBQUFB''@;'; put 'put ''QUFDTU9BQUFBQUFBQUdBdUFBQUFBQUFBVkRrQUFBQUFBQUJjT2dBQUFBQUFBT2crQUFBQUFBQUFERDBBQUFRQUFBQTRQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFB''@;'; put 'put ''QUFBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFRQUFBQUVBQUFBREFBQUFBQUFBQUFBQUFBQUkyUUlBR05rQ0FDalpBZ0E0MlFJQVNOa0NBRmpaQWdCbzJRSUFlTmtDQUJqWkFnQVkyUUlBV05rQ0FGalpBZ0FmQUFBQVB3QUFBSDhBQUFBQUFBQUFvb1VCQUFF''@;'; put 'put ''QUFBQ29Ld0FBYUFBQUFBUUFBQURWQ0FFQUFRQUFBQ0FzQUFDSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBVUJBQUVBQUFBQUFBQUE0QUFBQUFBQUFBQjRCUUVBQVFBQUFBQUFBQURnQUFBQUFRQUFBSDhGQVFBQkFBQUFBQUFBQUtnQUFBQUNBQUFBaVFVQkFBRUFBQUFB''@;'; put 'put ''QUFBQTRBQUFBQU1BQUFDVEJRRUFBUUFBQUFBQUFBRGdBQUFBQkFBQUFLRUZBUUFCQUFBQUFBQUFBT0FBQUFBRkFBQUFxd1VCQUFFQUFBQUFBQUFBNEFBQUFBWUFBQUM0QlFFQUFRQUFBQUFBQUFEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBSEFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUEvLy8vL3dBQUFBQUFBQUFBQkFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyZ2dCQUFFQUFBREVMUUFBR0FFQUFBRUFBQURmQ0FFQUFRQUFBTVF0QUFBWUFRQUFBZ0FBQU9VSUFRQUJBQUFBeEMwQUFCZ0JBQUFEQUFBQTdnZ0JBQUVBQUFERUxRQUFHQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGdJQVFB''@;'; put 'put ''QkFBQUFBQUFBQUhBQkFBQUJBQUFBQWdrQkFBRUFBQUFBQUFBQWNBRUFBQUlBQUFBTkNRRUFBUUFBQUFBQUFBQTRBUUFBQXdBQUFCc0pBUUFCQUFBQUFBQUFBRGdCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQWtBQUFBQUFBQUFBQUFBQUFvQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBUUFBQUFZQUFBQUNBQUFBQWdBQUFBY0FBQUFDQUFBQUFBQUFBR0lZQWdCbkFRSUErQUlDQURnSkFnQXZFQUlBYmhRQ0FPNFhBZ0QvRndJQUFBQUFB''@;'; put 'put ''R0lKQVFBQkFBQUFLQzhBQUtnQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCbUNRRUFBUUFBQUFBQUFBRElBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFiZ2tCQUFFQUFBQTRNQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3QUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFLWUtBUUFCQUFB''@;'; put 'put ''QUFBQUFBQ0FDQUFBQ0FBQUFzQW9CQUFFQUFBQUFBQUFBV0FJQUFBQUFBQUM1Q2dFQUFRQUFBQUFBQUFCWUFnQUFBd0FBQU1JS0FRQUJBQUFBQUFBQUFGZ0NBQUFBQUFBQXpBb0JBQUVBQUFBQUFBQUFJQUlBQUFNQUFBRFlDZ0VBQVFBQUFBQUFBQUFnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFCRUFBQUFTQUFBQUFBQUFBQUFBQUFBVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBVkFBQUFGZ0FBQUJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQU1BQUFBSkFBQUFBd0FBQUFNQUFBQUtBQUFBQkFBQUFBQUFB''@;'; put 'put ''QUJpR0FJQVp3RUNBRGdKQWdENEFnSUFiaFFDQUM4UUFnRC9Gd0lBN2hjQ0FBQUFBQUFBQUFBQWxRd0JBUC8vLy84OE1RQUFrQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSmdNQVFELy8vLy9BQUFBQUxBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDb2pR''@;'; put 'put ''RUFBUUFBQUZBeUFBRG9BZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFHUUFBQUJvQUFBQUFBQUFBQkFBQUFBQUFBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCOEFBQUFnQUFBQUlRQUFBQ0lBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ3dB''@;'; put 'put ''QUFBQUFBQUFNQUFBQUJRQUFBQVFBQUFBTkFBQUFCUUFBQUFNQUFBQ1ZFQUVBb3hBQkFMa1FBUUR6K1FJQXh4QUJBTllRQVFEYkVBRUErUkFCQVBQNUFnQUxFUUVBT3hFQkFQUDVBZ0JaRVFFQWdSRUJBSThSQVFDK0VRRUE4aEVCQUFNU0FRQW9FZ0VBU3hJQkFGRVNBUUJ0RWdFQWloSUJBS1VT''@;'; put 'put ''QVFER0VnRUE0QklCQUFJVEFRQWhFd0VBUnhNQkFGOFRBUUIvRXdFQW5CTUJBTUFUQVFETUV3RUE4L2tDQU5jVEFRRDlFd0VBSVJRQkFFY1VBUUR6K1FJQWZSUUJBSlVVQVFDaUZBRUEwUlFCQU13VEFRRHorUUlBM2hRQkFPY1VBUUFJRlFFQVF4VUJBSTRWQVFEaUZRRUFCQllCQUJrV0FRQXdG''@;'; put 'put ''Z0VBUmhZQkFGNFdBUUR6K1FJQWRCWUJBSThXQVFDekZnRUExeFlCQVB3V0FRRHorUUlBSFJjQkFEY1hBUUJKRndFQVZoY0JBR01YQVFCM0Z3RUFoaGNCQUk0WEFRQ2pGd0VBc1JjQkFPOFhBUUQ2RndFQXpCTUJBUFA1QWdBQUdBRUFEQmdCQUJzWUFRQkxFZ0VBOC9rQ0FDNFlBUUJYR0FFQWRS''@;'; put 'put ''Z0JBSVVZQVFDV0dBRUFuUmdCQUt3WUFRQzhHQUVBQUJrQkFBY1pBUUJMRWdFQTgva0NBQkVaQVFBOUdRRUFTQmtCQUZFWkFRQmFHUUVBYXhrQkFId1pBUUNRR1FFQXpCTUJBUFA1QWdDY0dRRUFyQmtCQUxvWkFRRElHUUVBMVJrQkFPSVpBUUQ0R1FFQUFSb0JBQkFhQVFBZEdnRUFMaG9CQU13''@;'; put 'put ''VEFRRHorUUlBT1JvQkFGZ2FBUUR6K1FJQWFob0JBSGthQVFDcEdnRUFzeG9CQU1BYUFRRE5HZ0VBMmhvQkFPY2FBUURxR2dFQTgva0NBTzRhQVFEeitRSUFFUnNCQUVJYkFRQnhHd0VBaUJzQkFLTWJBUUMrR3dFQXpCTUJBUFA1QWdEYUd3RUE4L2tDQUFJY0FRQU9IQUVBSVJ3QkFEUWNBUUJK''@;'; put 'put ''SEFFQVhod0JBR0ljQVFCTEVnRUE4L2tDQUc0Y0FRRHorUUlBZmh3QkFJd2NBUUNZSEFFQXBSd0JBTVVjQVFEYkhBRUE4L2tDQU84Y0FRQTRIUUVBZmgwQkFLNGRBUURoSFFFQTZCMEJBQThlQVFBMkhnRUE4L2tDQURzZUFRQUFBQUFBQUFBQUFQQkhBUUFCQUFBQUFBQUFBQWdEQUFBQkFBQUFy''@;'; put 'put ''eDRCQUFFQUFBQUFBQUFBQ0FNQUFBSUFBQURwUndFQUFRQUFBQUFBQUFCQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFqQUFBQUFBQUFBQ1FBQUFBbEFBQUFCZ0FBQUNZQUFBQW5BQUFBS0FBQUFDa0FBQUFxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNzQUFBQXNBQUFBTFFBQUFD''@;'; put 'put ''NEFBQUFFQUFBQUx3QUFBQUFBQUFBQUFBQUFEZ0FBQUFBQUFBQVBBQUFBQndBQUFBVUFBQUFRQUFBQUJnQUFBQUFBQUFCL0FBSUFpUUFDQUhreEFRRE9BQUlBQ1FFQ0FDc0JBZ0F4QVFJQVloZ0NBRmdCQWdCbkFRSUFoQUVDQUk4QkFnQ3hBUUlBNXdFQ0FCMENBZ0JZQWdJQWpnSUNBTEFDQWdD''@;'; put 'put ''L0FnSUE4QUlDQVBnQ0FnQS9KUUVBU0NVQkFCVURBZ0JSSlFFQVh3TUNBRm9sQVFCcEF3SUFZeVVCQUhNREFnRENBd0lBL1FNQ0FHOGxBUUE0QkFJQVF3UUNBSWdFQWdDV0JBSUE0QVFDQU80RUFnRDhCQUlBQndVQ0FEZ0ZBZ0I0QlFJQWdBVUNBSWdGQWdEREJRSUErUVVDQUFVR0FnQitNUUVB''@;'; put 'put ''RVFZQ0FCc0dBZ0FtQmdJQVF3WUNBSGtHQWdBNENRSUFXZ2tDQUdZSkFnQWxEQUlBVmd3Q0FJSU1BZ0M0REFJQXhRd0NBT2NNQWdBSkRRSUFFZzBDQUZ3TkFnQm1EUUlBcXcwQ0FPRU5BZ0RzRFFJQWNRNENBSVlPQWdCM0pRRUFrQTRDQUpvT0FnRFFEZ0lBRUE4Q0FCNFBBZ0J5RHdJQWdROENB''@;'; put 'put ''SkFQQWdEZkR3SUFoakVCQUI4UUFnQXBFQUlBTHhBQ0FGc1FBZ0NDRUFJQWt4QUNBSjRRQWdEakVBSUFLQkVDQURjUkFnQkhFUUlBV1JFQ0FHa1JBZ0I1RVFJQWhoRUNBSkFSQWdER0VRSUF6eEVDQUE4U0FnQWlFZ0lBaXpFQkFDb1NBZ0JnRWdJQWh4SUNBTDBTQWdEa0VnSUE4aElDQUNnVEFn''@;'; put 'put ''QnlFd0lBdkJNQ0FNY1RBZ0Q5RXdJQUFoUUNBQjhVQWdBOEZBSUFSeFFDQUc0VUFnQ0dGQUlBdkJRQ0FQSVVBZ0QrRkFJQUpSVUNBREFWQWdCaEZRSUFraFVDQUhnOEFRQzVGUUlBNVJVQ0FCc1dBZ0JSRmdJQVd4WUNBSGdXQWdDNEZnSUE3aFlDQUpFeEFRQUdGd0lBTWhjQ0FGa1hBZ0NQRndJ''@;'; put 'put ''QXpCY0NBTzRYQWdEMEZ3SUEveGNDQUNZWUFnQUFBQUFBcTQwQkFBRUFBQURJTlFBQWVBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNZElBUUFCQUFBQUFBQUFBSmdEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUFBQUFBQUFBQU1RQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNZ0FBQUFBQUFBQXpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUkFBQUFBQUFBQUJJQUFBQUlBQUFBQmdBQUFCTUFBQUFIQUFBQUFBQUFBQUFBQUFDdEpnRUFBUUFBQU53NEFBRFFBd0FBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzQ1lCQUFFQUFBQUFBQUFBOEFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOQUFBQUFBQUFBQTFBQUFBTmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFCUUFBQURjQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUZRQUFBQWtBQUFBSEFBQUFGZ0FBQUFnQUFBQUFBQUFBZVRFQkFHSVlBZ0JuQVFJQWZqRUJBSGtHQWdBNENRSUFoakVCQUZzUUFnQVBFZ0lBaXpFQkFFY1VBZ0J1RkFJQWVEd0JBSkV4QVFEdUZ3SUEveGNDQUFBQUFBQ1dNUUVBQVFB''@;'; put 'put ''QUFLUTVBQUFvQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbWpFQkFBRUFBQUFBQUFBQVNBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBQUFBQUFBQUE1QUFBQU9nQUFBQW9BQUFBN0FBQUFQQUFBQUQwQUFBQStBQUFBUHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFCQUFBQUFRUUFBQUVJQUFBQkRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmNBQUFBQUFBQUFHQUFBQUFzQUFBQUlBQUFBR1FBQUFBa0FBQUFBQUFBQXpnQUNBQTQ3QVFCaUdBSUFad0VDQUlRQkFnQVpPd0VBSHpzQkFDbzdBUUF4T3dFQWp3RUNBT2NCQWdBNU93RUFQenNCQUVvN0FRQ09B''@;'; put 'put ''Z0lBc0FJQ0FQZ0NBZ0JST3dFQVh3TUNBSE1EQWdEOUF3SUFXenNCQUlnRUFnQ1dCQUlBNEFRQ0FHWTdBUUR1QkFJQWJqc0JBSGM3QVFDRk93RUFqenNCQU1NRkFnQ1lPd0VBQlFZQ0FDWUdBZ0JEQmdJQW5qc0JBSW9HQWdDMUJnSUEzZ1lDQUFFSEFnQXFCd0lBVFFjQ0FIWUhBZ0NaQndJQXdn''@;'; put 'put ''Y0NBT1VIQWdBT0NBSUFNUWdDQUZvSUFnQjlDQUlBcGdnQ0FNa0lBZ0R5Q0FJQUZRa0NBRGdKQWdDbE93RUFXZ2tDQUxFN0FRQ0NEQUlBNXd3Q0FLc05BZ0MrT3dFQWtBOENBTXM3QVFBZkVBSUFMeEFDQU5VN0FRQmJFQUlBZ2hBQ0FKTVFBZ0RrT3dFQTlqc0JBSjRRQWdBb0VRSUFOeEVDQUVj''@;'; put 'put ''UkFnQlpFUUlBYVJFQ0FBWThBUUFSUEFFQUhEd0JBSGtSQWdBUEVnSUFGQklDQUNFOEFRQXFQQUVBTXp3QkFFTThBUUJLUEFFQVlCSUNBSWNTQWdDOUVnSUE4aElDQUFJVUFnQWZGQUlBVWp3QkFHNFVBZ0JaUEFFQS9oUUNBR0k4QVFBd0ZRSUFhandCQUpJVkFnQjRQQUVBdVJVQ0FPVVZBZ0Iv''@;'; put 'put ''UEFFQWVCWUNBTGdXQWdDSlBBRUE3aFlDQUFZWEFnQlpGd0lBa3p3QkFLRThBUUNQRndJQWxoY0NBTXdYQWdEdUZ3SUEveGNDQUNZWUFnQUFBQUFBc3p3QkFBRUFBQUNzT2dBQWdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMYzhBUUFCQUFBQUFBQUFBS0FFQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJBQUFBRVVBQUFBQUFBQUFBQUFBQUVZQUFBQkhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYUFBQUFBQUFBQUJzQUFBQU1BQUFBQ1FBQUFC''@;'; put 'put ''d0FBQUFLQUFBQUFBQUFBRUZDQUFDd29RRUFRVWtBQUlxaEFRQkJVZ0FBWGFFQkFFRllBQURGb1FFQVFpQUFBQUdrQVFCQ1NRQUFFcVFCQUVOQ0FBQktvZ0VBUTA4QUFEaWlBUUJEV0FBQVY2SUJBRWdnQUFCN29nRUFTRUlBQUlXaUFRQklTUUFBRWFNQkFFaFlBQUNVb2dFQVNHSUFBTVdpQVFC''@;'; put 'put ''SWFRQUErS0lCQUVoeUFBQ3FvZ0VBU0hnQUFOdWlBUUJKSUFBQUk2UUJBRXRDQUFEY29RRUFTMGtBQUNTaUFRQkxVZ0FBRUtJQkFFdFlBQUQ5b1FFQVRrSUFBQ09qQVFCT1NRQUFhcU1CQUU1U0FBQ0Nvd0VBVGxnQUFFNmpBUUJRUVFBQTQ2TUJBRkJDQUFDZm93RUFVRWtBQU5PakFRQlFXQUFB''@;'; put 'put ''djZNQkFGSWdBQURhcFFFQVV5QUFBUEtqQVFCYVJBQUFZS1FCQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUJkUndFQS8vLy8vMXc5QUFEWUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlVY0JBUC8vLy84QUFBQUErQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3QUFB''@;'; put 'put ''R2xIQVFBQkFBQUFJRU1BQUFBQUFBQVFBQUFBY1VjQkFBRUFBQUFnUXdBQUFBQUFBQkVBQUFCNVJ3RUFBUUFBQUNCREFBQUFBQUFBRVFBQUFJSkhBUUFCQUFBQUlFTUFBQUFBQUFBUkFBQUFpa2NCQUFFQUFBQWdRd0FBQUFBQUFCTUFBQUNTUndFQUFRQUFBQ1JEQUFBQUFBQUFGQUFBQUpwSEFR''@;'; put 'put ''QUJBQUFBSkVNQUFBQUFBQUFWQUFBQW9rY0JBQUVBQUFBa1F3QUFBQUFBQUJVQUFBQ3JSd0VBQVFBQUFDUkRBQUFBQUFBQUZRQUFBTE5IQVFBQkFBQUFKRU1BQUFBQUFBQVdBQUFBdTBjQkFBRUFBQUFvUXdBQUFBQUFBQmNBQUFERVJ3RUFBUUFBQUNoREFBQUFBQUFBR0FBQUFNMUhBUUFCQUFB''@;'; put 'put ''QUtFTUFBQUFBQUFBWUFBQUExMGNCQUFFQUFBQW9Rd0FBQUFBQUFCZ0FBQURnUndFQUFRQUFBQ2hEQUFBQUFBQUFHUUFBQU9sSEFRQUJBQUFBTEVNQUFBQUFBQUFaQUFBQThFY0JBQUVBQUFBc1F3QUFBQUFBQUJvQUFBRDJSd0VBQVFBQUFEQkRBQUFBQUFBQUNnQUFBUDlIQVFBQkFBQUFORU1B''@;'; put 'put ''QUFBQUFBQUxBQUFBQjBnQkFBRUFBQUEwUXdBQUFBQUFBQXdBQUFBUFNBRUFBUUFBQURSREFBQUFBQUFBREFBQUFCaElBUUFCQUFBQU5FTUFBQUFBQUFBTUFBQUFJRWdCQUFFQUFBQTBRd0FBQUFBQUFBNEFBQUFvU0FFQUFRQUFBRFJEQUFBQUFBQUFEZ0FBQUM5SUFRQUJBQUFBTkVNQUFBQUFB''@;'; put 'put ''QUFOQUFBQU4wZ0JBQUVBQUFBMFF3QUFBQUFBQUFVQUFBQS9TQUVBQVFBQUFEUkRBQUFBQUFBQUJnQUFBRWRJQVFBQkFBQUFORU1BQUFBQUFBQUhBQUFBVDBnQkFBRUFBQUEwUXdBQUFBQUFBQWNBQUFCWVNBRUFBUUFBQURSREFBQUFBQUFBQndBQUFHQklBUUFCQUFBQU5FTUFBQUFBQUFBSkFB''@;'; put 'put ''QUFhRWdCQUFFQUFBQTBRd0FBQUFBQUFBa0FBQUJ2U0FFQUFRQUFBRFJEQUFBQUFBQUFDQUFBQUhkSUFRQUJBQUFBTkVNQUFBQUFBQUFBQUFBQWYwZ0JBQUVBQUFBNFF3QUFBQUFBQUFFQUFBQ0lTQUVBQVFBQUFEaERBQUFBQUFBQUFnQUFBSkZJQVFBQkFBQUFPRU1BQUFBQUFBQUNBQUFBbTBn''@;'; put 'put ''QkFBRUFBQUE0UXdBQUFBQUFBQUlBQUFDa1NBRUFBUUFBQURoREFBQUFBQUFBQkFBQUFLMUlBUUFCQUFBQU9FTUFBQUFBQUFBRUFBQUF0VWdCQUFFQUFBQTRRd0FBQUFBQUFBTUFBQUMrU0FFQUFRQUFBRGhEQUFBQUFBQUFFZ0FBQU1kSUFRQUJBQUFBSUVNQUFBQUFBQUFiQUFBQXowZ0JBQUVB''@;'; put 'put ''QUFBOFF3QUFBQUFBQUJ3QUFBRFhTQUVBQVFBQUFEeERBQUFBQUFBQUhRQUFBTjlJQVFBQkFBQUFQRU1BQUFBQUFBQWRBQUFBNkVnQkFBRUFBQUE4UXdBQUFBQUFBQjBBQUFEd1NBRUFBUUFBQUR4REFBQUFBQUFBSGdBQUFQaElBUUFCQUFBQVFFTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFHTk1BUUJNUXdBQUFRQUFBR2hEQUFBQUFBQUFBQUFBQUVnQUFBQkpBQUFBQVFBQUFBQUFBQUNpaFFFQUFBQUFBRnhEQUFCa1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFn''@;'; put 'put ''QUFBQUFBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFCQUFBQUFnQUFBQVFBQUFBWUFRQUFNQUVBQUxBQUFBQ0lWQUVBalZRQkFKRlVBUUNZVkFFQW5GUUJBQUFBQUFBQkFBQUFBZ0FBQUFNQUFBQUVBQUFBQlFBQUFBQUFBQUFkQUFBQUFBQUFBQUFBQUFBZUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQWZBQUFBQUFBQUFBQUFBQUNSV1FFQUtFUUFBQUVBQUFDQVJBQUFBQUFBQUFBQUFBQktBQUFBU3dBQUFFd0FBQUJOQUFBQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFFc0FBQUJWQUFBQVN3QUFBRllBQUFCWEFBQUFXQUFBQUZrQUFBQUFBQUFBbmxrQkFBQUFBQUE0''@;'; put 'put ''UkFBQUtOc0NBQUVBQUFDa1dRRUFBQUFBQUVCRUFBQW8yd0lBQWdBQUFLaFpBUUFBQUFBQVNFUUFBQ2piQWdBREFBQUFyVmtCQUFBQUFBQlFSQUFBS05zQ0FBUUFBQUN6V1FFQUFBQUFBRmhFQUFBbzJ3SUFCUUFBQUxsWkFRQUFBQUFBY0VRQUFDamJBZ0FHQUFBQXcxa0JBQUFBQUFCNFJBQUFL''@;'; put 'put ''TnNDQUFjQUFBREpXUUVBQUFBQUFHQkVBQUFvMndJQUJ3QUFBTTFaQVFBQUFBQUFZRVFBQUNqYkFnQUhBQUFBMGxrQkFBQUFBQUJvUkFBQUtOc0NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFEQUFBQUFBQUFBQUFRQUFBQ0FBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFB''@;'; put 'put ''UUFBQUFBQUFBQVBHY0JBRlJuQVFCelp3RUFrR2NCQUs5bkFRQzJad0VBdjJjQkFEeG5BUUJCWndFQVNHY0JBRTFuQVFEZVpnRUE4R1lCQVA1bUFRQU1ad0VBR21jQkFDRm5BUUF3WndFQVBHY0JBQUFBQUFEeitRSUFBQUFBQUIwU0FnQUJBQUFBK0drQkFBY0FBQUM4YVFFQUF3QUFBTVlsQWdB''@;'; put 'put ''RkFBQUFBR29CQUE4QUFBQ1FqUUVBQ0FBQUFKQ05BUUFRQUFBQUNHb0JBQVFBQUFBSWFnRUFFUUFBQUExcUFRQUZBQUFBRFdvQkFBSUFBQUFUYWdFQUJnQUFBQnBxQVFBRUFBQUFKbW9CQUFjQUFBQXVhZ0VBQndBQUFENXFBUUFGQUFBQVJHb0JBQWdBQUFCYmFnRUFDQUFBQUVScUFRQUpBQUFB''@;'; put 'put ''WkdvQkFBY0FBQUJzYWdFQUNnQUFBSVpxQVFBSEFBQUFqbW9CQUFzQUFBQ29hZ0VBQmdBQUFLOXFBUUFNQUFBQXpXb0JBQWtBQUFDdmFnRUFEUUFBQU5kcUFRQUlBQUFBNEdvQkFBNEFBQUFCYXdFQUNBQUFBQXByQVFBU0FBQUFLMnNCQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QWdBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFEQUFBQUFJQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBRUFBQUFBQUFBQUFNQUFBQWhBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBRUFBQUFBQUFBQUFRQUFB''@;'; put 'put ''QWlBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQUFCQUFBQUFpRWNBQUpoSEFBQUdBQUFBQkFBQUFLUkhBQUFHQUFBQUNBQUFBQVlBQUFBRUFBQUFyRWNBQUFBRUFBQUlBQUFBLy8vLy93QUFBQUFBQUFBQUl3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTFBQUFBQUFBQUFBQUFBQUFnQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBR0FBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vL0FBQUFBQUFBQUFBR0FBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vL0FBQUFBQUFBQUFBSUFBQUFBQUFB''@;'; put 'put ''QUFjQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBSkFBQUFBQUFBQUFjQUFBQUFBQUFBQ1FBQUFBc0FBQUFJQUFBQUNnQUFBREJKQUFDMFNBQUFHRWtBQUFFQUFBQUJBQUFBQ2dBQUFCWUFBQUFMQUFBQVdnQUFBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0FB''@;'; put 'put ''QUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBMEFBQUFBQUFBQUJ3QUFBQUFBQUFBSEFBQUFBZ0FBQUFVQUFBQUlBQUFBQUFBQUFBQUFBQUFHQUFBQUF3QUFBQTRBQUFBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUR3QUFBQUFBQUFBSEFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFsQUFBQUVBQUFBQUFBQUFBSEFBQUFBQUFBQUFnQUFBQUlBQUFBQUFBQUFBQUFBQUFtQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBRC8vLy8vQUFBQUFBQUFBQUFuQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFFQUFBQUFBQUFBQVFB''@;'; put 'put ''QUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUNBQUFBQXdBQUFBRUFBQUFCQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlB''@;'; put 'put ''QUFBQkFBQUFCQUFBQUFVQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBR0FBQUFBUUFBQUFFQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUNnQUFBQW9BQUFBS0FBQUFDZ0FBQUFvQUFBQUtBQUFBQ2dBQUFBb0FBQUFLQUFBQUFRQUFBQUVBQUFBTEFBQUFBUUFBQUF3QUFBQUJB''@;'; put 'put ''QUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBU0FBQUFFd0FBQUJRQUFBQVZBQUFBRmdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBWEFBQUFHQUFBQUJrQUFBQVRBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBQVFBQUFCNEFBQUFCQUFBQUFR''@;'; put 'put ''QUFBQk1BQUFBQkFBQUFId0FBQUNBQUFBQWhBQUFBSWdBQUFDTUFBQUFUQUFBQUpBQUFBQ1VBQUFBbUFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFDY0FBQUFvQUFBQUtRQUFBQk1BQUFBcUFBQUFLd0FBQUN3QUFBQXRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBQkFBQUFBUUFBQUFF''@;'; put 'put ''QUFBQUJBQUFBQVFBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFU''@;'; put 'put ''QUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFM''@;'; put 'put ''Z0FBQUJNQUFBQVRBQUFBRXdBQUFDOEFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFC''@;'; put 'put ''TUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBREFBQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFB''@;'; put 'put ''VEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUFBQUFBQUVBQUFBQkFBQUFBZ0FBQUFNQUFBQUJBQUFBQkFBQUFBRUFBQUFGQUFBQUFRQUFBQVlBQUFBSEFBQUFCd0FBQUFFQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFB''@;'; put 'put ''QmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFBd0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUlBQUFBQjVzd0VBV3JNQkFDQjhBUUNHc3dFQWZyTUJB''@;'; put 'put ''SXl6QVFBQUFBQUFKb0FCQUMrQUFRQTJnQUVBUklBQkFIcXlBUUNpc3dFQVM0QUJBRktBQVFBQkFBQUFDQUFBQVAvLy8vOEFBQUFBQUFBQUFDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4SUVCQUFnQUFBQURBQUFBK1lFQkFQMkJBUUFMQUFBQUJnQUFBS2lOQVFBSmdnRUFBZ0FBQUFFQUFB''@;'; put 'put ''QU1nZ0VBRUlJQkFBUUFBQUFDQUFBQUZZSUJBQm1DQVFBRUFBQUFCQUFBQUI2Q0FRQWpnZ0VBQlFBQUFBVUFBQUFwZ2dFQUxZSUJBQVFBQUFBSEFBQUFNb0lCQURhQ0FRQUZBQUFBQ1FBQUFEeUNBUUJBZ2dFQUJBQUFBQW9BQUFCRmdnRUFTb0lCQUFRQUFBQU1BQUFBVDRJQkFPS0dBUUFBQUFB''@;'; put 'put ''QUFRQUFBT3FHQVFBQkFBQUFBQUFBQUhXeUFRQUJBQUFBQVFBQUFCMFNBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU11RkFRQXhBQUFBQUFBQUFBQUFBQUNqclFFQUVBQUFBRVVlQWdDQUFBQUF4SVVCQUVBQUFBQU9vQUVBRUFBQUFNYUZBUUJBQUFBQUFBQUFBQUFBQUFDU2hRRUFBUUFB''@;'; put 'put ''QUptRkFRQUNBQUFBbm9VQkFBTUFBQURNcGdFQUJBQUFBRENkQVFBRkFBQUFvb1VCQUFZQUFBQWRFZ0lBQ0FBQUFLYUZBUUFoQUFBQXFvVUJBQ0lBQUFDdWhRRUFJZ0FBQUxLRkFRQUJBQUFBdDRVQkFBY0FBQUM5aFFFQUp3QUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBLy8vLy93QUFB''@;'; put 'put ''QUFwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAyS0FRQUVpd0VBQUFBQUFLV05BUUNvalFFQXE0MEJBQUFBQUFBQUFBQUFBUUFBQUFJQUFBRC8vLy8vYUkwQkFHNk5BUUFkRWdJQUFBQUFBR1FBQUFCbEFBQUFaZ0FBQUdRQUFBQUlBQUFBQ0FBQUFBQUFBQUFBQUFBQUtnQUFBQkVBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUlBQUFBQ0FBQUFBQUFBQUFKQUFBQUt3QUFBQkVBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBLy8vLy93QUFBQUFBQUFBQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRE1wZ0VBWUZVQUFJQUdBQUFBQUFBQStad0JBR0JWQUFDd0JnQUFBQUFBQU5LbEFRQmdWUUFBNEFZ''@;'; put 'put ''QUFBQUFBQUFCblFFQVlGVUFBT0FHQUFBQUFBQUFCcDBCQUdCVkFBQVFCd0FBQUFBQUFBMmRBUUI0VlFBQUVBY0FBQUFBQUFBVG5RRUFZRlVBQUVBSEFBQUFBQUFBRjUwQkFHQlZBQUJ3QndBQUFBQUFBQjBTQWdCZ1ZRQUFvQWNBQUFBQUFBQWduUUVBWUZVQUFLQUhBQUFBQUFBQUtwMEJBR0JW''@;'; put 'put ''QUFCUUJnQUFBQUFBQURDZEFRQmdWUUFBMEFjQUFBQUFBQUE0blFFQVlGVUFBQUFJQUFBQUFBQUFRcDBCQUdCVkFBQXdDQUFBQUFBQUFGQ2RBUUJnVlFBQVlBZ0FBQUFBQUFCV25RRUFZRlVBQUpBSUFBQUFBQUFBWDUwQkFHQlZBQURBQ0FBQUFBQUFBR2VkQVFCZ1ZRQUE4QWdBQUFBQUFBQndu''@;'; put 'put ''UUVBWUZVQUFDQUpBQUFBQUFBQWVKMEJBR0JWQUFCUUNRQUFBQUFBQUgyZEFRQmdWUUFBZ0FrQUFBQUFBQUNCblFFQVlGVUFBTEFKQUFBQUFBQUFpSjBCQUdCVkFBRGdDUUFBQUFBQUFJNmRBUUJnVlFBQUVBb0FBQUFBQUFDWW5RRUFrRlVBQUVBS0FBQUFBQUFBb1owQkFHQlZBQUNBQmdBQUFB''@;'; put 'put ''QUFBS2FkQVFCZ1ZRQUFnQVlBQUFBQUFBQ3duUUVBWUZVQUFIQUtBQUFBQUFBQXQ1MEJBR0JWQUFDZ0NnQUFBQUFBQU1TZEFRQmdWUUFBMEFvQUFBQUFBQURTblFFQVlGVUFBQUFMQUFBQUFBQUE0SjBCQUdCVkFBQXdDd0FBQUFBQUFPeWRBUUJnVlFBQVlBc0FBQUFBQUFENW5RRUFZRlVBQUpB''@;'; put 'put ''TEFBQUFBQUFBQXA0QkFHQlZBQURBQ3dBQUFBQUFBQXllQVFCZ1ZRQUE4QXNBQUFBQUFBQVZuZ0VBWUZVQUFDQU1BQUFBQUFBQUhaNEJBR0JWQUFCUURBQUFBQUFBQUNXZUFRQmdWUUFBZ0F3QUFBQUFBQUF1bmdFQVlGVUFBTEFNQUFBQUFBQUFNcDRCQUdCVkFBRGdEQUFBQUFBQUFEMmVBUUJn''@;'; put 'put ''VlFBQUVBMEFBQUFBQUFCQm5nRUFZRlVBQUVBTkFBQUFBQUFBUzU0QkFHQlZBQUJ3RFFBQUFBQUFBRlNlQVFCZ1ZRQUFvQTBBQUFBQUFBQmNuZ0VBWUZVQUFOQU5BQUFBQUFBQWFaNEJBR0JWQUFBQURnQUFBQUFBQUhXZUFRQmdWUUFBTUE0QUFBQUFBQUNBbmdFQVlGVUFBR0FPQUFBQUFBQUFr''@;'; put 'put ''SjRCQUdCVkFBQ1FEZ0FBQUFBQUFKNmVBUUJnVlFBQXdBNEFBQUFBQUFDdG5nRUFZRlVBQVBBT0FBQUFBQUFBdDU0QkFHQlZBQUFnRHdBQUFBQUFBTUNlQVFCZ1ZRQUFVQThBQUFBQUFBREtuZ0VBWUZVQUFJQVBBQUFBQUFBQTFKNEJBR0JWQUFDd0R3QUFBQUFBQU51ZUFRQmdWUUFBNEE4QUFB''@;'; put 'put ''QUFBQURpbmdFQVlGVUFBQkFRQUFBQUFBQUE3SjRCQUtoVkFBQUFBQUFBQUFBQUFQT2VBUUNvVlFBQUFBQUFBQUFBQUFEVm5BRUF3RlVBQUFBQUFBQUFBQUFBKzU0QkFOaFZBQUJBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmJBQUFBWEFBQUFCY0FBQUFFQUFBQUFnQUFBQXdBQUFC''@;'; put 'put ''ZEFBQUFYQUFBQUJjQUFBQUZBQUFBQUFBQUFBMEFBQUJiQUFBQVhBQUFBQmNBQUFBRUFBQUFBZ0FBQUF3QUFBQmVBQUFBWHdBQUFCZ0FBQUFHQUFBQUF3QUFBQTRBQUFCZ0FBQUFZUUFBQUJjQUFBQUhBQUFBQUFBQUFBOEFBQUJiQUFBQVhBQUFBQmNBQUFBSUFBQUFBZ0FBQUF3QUFBQVFBQUFB''@;'; put 'put ''RVFBQUFCSUFBQUFUQUFBQS9aOEJBQVNnQVFBQUFBQUFES0FCQUE2Z0FRQi9IZ0lBRUtBQkFBd0FBQUFFQUFBQUJnQUFBQUlBQUFBREFBQUFBUUFBQUFrQUFBQUlBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFBQUFFUUFBQUJJQUFBQVZBQUFBRmdBQUFCY0FBQUFZQUFBQUdRQUFB''@;'; put 'put ''Qm9BQUFBYkFBQUFIQUFBQUI4QUFBQWdBQUFBSVFBQUFDSUFBQUFqQUFBQUpBQUFBQ1VBQUFBbUFBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBekFBQUFOQUFBQURVQUFBQTJBQUFBTndBQUFEZ0FBQUE1QUFBQU9nQUFBRDBBQUFBK0FBQUFQd0FBQUVBQUFB''@;'; put 'put ''QkJBQUFBUWdBQUFFTUFBQUJFQUFBQVJ3QUFBRWdBQUFCSkFBQUFTZ0FBQUVzQUFBQk1BQUFBVFFBQUFFNEFBQUJSQUFBQVVnQUFBRk1BQUFCVUFBQUFWUUFBQUZZQUFBQlhBQUFBV0FBQUFGMmhBUUJ0b1FFQWVxRUJBQUFBQUFBQUFBQUFCQUFBQUgraEFRQUFBQUFBQUFBQUFJcWhBUUJ0b1FF''@;'; put 'put ''QWVxRUJBQUFBQUFDaG9RRUFCUUFBQUgraEFRQUFBQUFBcWFFQkFMQ2hBUUJ0b1FFQXdLRUJBQUFBQUFBQUFBQUFCZ0FBQUgraEFRRHJzUUVBQUFBQUFNV2hBUUJ0b1FFQXdLRUJBQUFBQUFDaG9RRUFCd0FBQUgraEFRRHJzUUVBcWFFQkFOeWhBUURwb1FFQXdLRUJBQUFBQUFBQUFBQUFDZ0FB''@;'; put 'put ''QVBlaEFRRHJzUUVBQUFBQUFQMmhBUURwb1FFQXdLRUJBQUFBQUFDcG9RRUFDd0FBQVBlaEFRRHJzUUVBcWFFQkFCQ2lBUURwb1FFQUhxSUJBQUFBQUFBQUFBQUFDQUFBQVBlaEFRQUFBQUFBQUFBQUFDU2lBUURwb1FFQUhxSUJBQUFBQUFDcG9RRUFDUUFBQVBlaEFRQUFBQUFBcWFFQkFEaWlB''@;'; put 'put ''UUE0b2dFQUFBQUFBQUFBQUFBQUFBQUFEQUFBQUVDaUFRQUFBQUFBQUFBQUFFcWlBUUE0b2dFQTY3RUJBQUFBQUFBQUFBQUFEZ0FBQUVDaUFRRHJzUUVBQUFBQUFGZWlBUUE0b2dFQTY3RUJBQUFBQUFDaG9RRUFEd0FBQUVDaUFRRHJzUUVBcWFFQkFHdWlBUUE0b2dFQUFBQUFBQUFBQUFDaG9R''@;'; put 'put ''RUFEUUFBQUVDaUFRQUFBQUFBcWFFQkFIdWlBUUI3b2dFQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUgraEFRQUFBQUFBQUFBQUFJV2lBUUI3b2dFQTY3RUJBQUFBQUFBQUFBQUFFZ0FBQUgraEFRRHJzUUVBQUFBQUFKU2lBUUI3b2dFQTY3RUJBQUFBQUFDaG9RRUFFd0FBQUgraEFRRHJzUUVBcWFF''@;'; put 'put ''QkFLcWlBUUI3b2dFQUFBQUFBTHVpQVFBQUFBQUFGQUFBQUgraEFRQUFBQUFBQUFBQUFNV2lBUUI3b2dFQTY3RUJBTHVpQVFBQUFBQUFGZ0FBQUgraEFRRHJzUUVBQUFBQUFOdWlBUUI3b2dFQTY3RUJBTHVpQVFDaG9RRUFGd0FBQUgraEFRRHJzUUVBcWFFQkFQaWlBUUI3b2dFQUFBQUFBTHVp''@;'; put 'put ''QVFDaG9RRUFGUUFBQUgraEFRQUFBQUFBcWFFQkFCR2pBUUI3b2dFQUFBQUFBQUFBQUFDaG9RRUFFUUFBQUgraEFRQUFBQUFBcWFFQkFDT2pBUUE1b3dFQTY3RUJBQUFBQUFBQUFBQUFHZ0FBQVBlaEFRRHJzUUVBQUFBQUFFNmpBUUE1b3dFQTY3RUJBQUFBQUFDcG9RRUFHd0FBQVBlaEFRRHJz''@;'; put 'put ''UUVBcWFFQkFHcWpBUUE1b3dFQUFBQUFBQUFBQUFDcG9RRUFHUUFBQVBlaEFRQUFBQUFBcWFFQkFJS2pBUUE1b3dFQW1hTUJBQUFBQUFBQUFBQUFHQUFBQVBlaEFRQUFBQUFBQUFBQUFKK2pBUUN0b3dFQTY3RUJBQUFBQUFBQUFBQUFIZ0FBQVBlaEFRRHJzUUVBQUFBQUFMK2pBUUN0b3dFQTY3''@;'; put 'put ''RUJBQUFBQUFDcG9RRUFId0FBQVBlaEFRRHJzUUVBcWFFQkFOT2pBUUN0b3dFQUFBQUFBQUFBQUFDcG9RRUFIUUFBQVBlaEFRQUFBQUFBcWFFQkFPT2pBUUN0b3dFQW1hTUJBQUFBQUFBQUFBQUFIQUFBQVBlaEFRQUFBQUFBQUFBQUFQS2pBUUR5b3dFQUFBQUFBQUFBQUFBQUFBQUFJQUFBQVBt''@;'; put 'put ''akFRQUFBQUFBQUFBQUFBR2tBUUFNcEFFQTY3RUJBQUFBQUFBQUFBQUFBZ0FBQVBlaEFRRHJzUUVBQUFBQUFCS2tBUUFNcEFFQTY3RUJBQUFBQUFDcG9RRUFBd0FBQVBlaEFRRHJzUUVBcWFFQkFDT2tBUUFNcEFFQUFBQUFBQUFBQUFDcG9RRUFBUUFBQVBlaEFRQUFBQUFBcWFFQkFOcWxBUUFN''@;'; put 'put ''cEFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBlaEFRQUFBQUFBQUFBQUFEQ2tBUUJLcEFFQVdhUUJBQUFBQUFDcG9RRUFJUUFBQVBlaEFRQUFBQUFBcWFFQkFHQ2tBUUJ0cEFFQUFBQUFBQUFBQUFBQUFBQUFJZ0FBQVBtakFRQUFBQUFBQUFBQUFBZ0FBQUFFQUFBQUFBQUFBQW9BQUFBdEFBQUFF''@;'; put 'put ''Z0FBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUQvLy8vL0FBQUFBQUFBQUFBdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbW5BUURHQUFBQUQ2Y0JBTUVBQUFBV3B3RUF3Z0FBQUJ5bkFRREFBQUFBSTZjQkFKRURBQUFwcHdFQXhRQUFBQytuQVFEREFBQUFOcWNCQU1RQUFBQTdwd0VBa2dNQUFF''@;'; put 'put ''Q25BUURIQUFBQVI2Y0JBS2NEQUFCTHB3RUFJU0FBQUZLbkFRQ1VBd0FBV0tjQkFOQUFBQUJjcHdFQXlRQUFBR09uQVFES0FBQUFhYWNCQU1nQUFBQndwd0VBbFFNQUFIaW5BUUNYQXdBQWZLY0JBTXNBQUFDQnB3RUFrd01BQUllbkFRRE5BQUFBanFjQkFNNEFBQUNVcHdFQXpBQUFBSnVuQVFD''@;'; put 'put ''WkF3QUFvS2NCQU04QUFBQ2xwd0VBbWdNQUFLdW5BUUNiQXdBQXNxY0JBSndEQUFDMXB3RUEwUUFBQUx5bkFRQ2RBd0FBdjZjQkFGSUJBQURGcHdFQTB3QUFBTXluQVFEVUFBQUEwcWNCQU5JQUFBRFpwd0VBcVFNQUFOK25BUUNmQXdBQTU2Y0JBTmdBQUFEdXB3RUExUUFBQVBXbkFRRFdBQUFB''@;'; put 'put ''K3FjQkFLWURBQUQrcHdFQW9BTUFBQUdvQVFBeklBQUFCNmdCQUtnREFBQUxxQUVBb1FNQUFBK29BUUJnQVFBQUZxZ0JBS01EQUFBY3FBRUEzZ0FBQUNLb0FRQ2tBd0FBSnFnQkFKZ0RBQUFzcUFFQTJnQUFBRE9vQVFEYkFBQUFPYWdCQU5rQUFBQkFxQUVBcFFNQUFFaW9BUURjQUFBQVRhZ0JB''@;'; put 'put ''SjREQUFCUXFBRUEzUUFBQUZlb0FRQjRBUUFBWEtnQkFKWURBQUJocUFFQTRRQUFBR2lvQVFEaUFBQUFicWdCQUxRQUFBQjBxQUVBNWdBQUFIcW9BUURnQUFBQWdhZ0JBRFVoQUFDSnFBRUFzUU1BQUkrb0FRQW1BQUFBazZnQkFDY2lBQUNYcUFFQUlDSUFBSnVvQVFEbEFBQUFvYWdCQUVnaUFB''@;'; put 'put ''Q25xQUVBNHdBQUFLNm9BUURrQUFBQXM2Z0JBQjRnQUFDNXFBRUFzZ01BQUw2b0FRQ21BQUFBeGFnQkFDSWdBQURLcUFFQUtTSUFBTTZvQVFEbkFBQUExYWdCQUxnQUFBRGJxQUVBb2dBQUFPQ29BUURIQXdBQTVLZ0JBTVlDQUFEcHFBRUFZeVlBQU8rb0FRQkZJZ0FBOUtnQkFLa0FBQUQ1cUFF''@;'; put 'put ''QXRTRUFBUCtvQVFBcUlnQUFBNmtCQUtRQUFBQUtxUUVBMHlFQUFBK3BBUUFnSUFBQUZxa0JBSk1oQUFBYnFRRUFzQUFBQUIrcEFRQzBBd0FBSmFrQkFHWW1BQUFycVFFQTl3QUFBREtwQVFEcEFBQUFPYWtCQU9vQUFBQS9xUUVBNkFBQUFFYXBBUUFGSWdBQVRLa0JBQU1nQUFCUnFRRUFBaUFB''@;'; put 'put ''QUZhcEFRQzFBd0FBWHFrQkFHRWlBQUJrcVFFQXR3TUFBR2lwQVFEd0FBQUFiS2tCQU9zQUFBQnhxUUVBckNBQUFIYXBBUUFESWdBQWZLa0JBSklCQUFDQnFRRUFBQ0lBQUlpcEFRQzlBQUFBajZrQkFMd0FBQUNXcVFFQXZnQUFBSjJwQVFCRUlBQUFvNmtCQUxNREFBQ3BxUUVBWlNJQUFLeXBB''@;'; put 'put ''UUErQUFBQXI2a0JBTlFoQUFDMHFRRUFsQ0VBQUxtcEFRQmxKZ0FBd0trQkFDWWdBQURIcVFFQTdRQUFBTTZwQVFEdUFBQUExS2tCQUtFQUFBRGFxUUVBN0FBQUFPR3BBUUFSSVFBQTU2a0JBQjRpQUFEdHFRRUFLeUlBQVBHcEFRQzVBd0FBOXFrQkFMOEFBQUQ5cVFFQUNDSUFBQUtxQVFEdkFB''@;'; put 'put ''QUFCNm9CQUxvREFBQU5xZ0VBMENFQUFCS3FBUUM3QXdBQUdhb0JBQ2tqQUFBZXFnRUFxd0FBQUNTcUFRQ1FJUUFBS2FvQkFBZ2pBQUF2cWdFQUhDQUFBRFdxQVFCa0lnQUFPS29CQUFvakFBQS9xZ0VBRnlJQUFFYXFBUURLSlFBQVNxb0JBQTRnQUFCT3FnRUFPU0FBQUZXcUFRQVlJQUFBVzZv''@;'; put 'put ''QkFEd0FBQUJlcWdFQXJ3QUFBR09xQVFBVUlBQUFhYW9CQUxVQUFBQnZxZ0VBdHdBQUFFYXpBUUFTSWdBQWRxb0JBTHdEQUFCNXFnRUFCeUlBQUgrcUFRQ2dBQUFBaEtvQkFCTWdBQUNLcWdFQVlDSUFBSTJxQVFBTElnQUFrS29CQUt3QUFBQ1VxZ0VBQ1NJQUFKcXFBUUNFSWdBQW42b0JBUEVB''@;'; put 'put ''QUFDbXFnRUF2UU1BQUttcUFRRHpBQUFBc0tvQkFQUUFBQUMycWdFQVV3RUFBTHlxQVFEeUFBQUF3Nm9CQUQ0Z0FBREpxZ0VBeVFNQUFNK3FBUUMvQXdBQTE2b0JBSlVpQUFEZHFnRUFLQ0lBQU9DcUFRQ3FBQUFBNWFvQkFMb0FBQURxcWdFQStBQUFBUEdxQVFEMUFBQUErS29CQUpjaUFBRC9x''@;'; put 'put ''Z0VBOWdBQUFBU3JBUUMyQUFBQUNhc0JBQUlpQUFBT3F3RUFNQ0FBQUJXckFRQ2xJZ0FBR3FzQkFNWURBQUFlcXdFQXdBTUFBQ0dyQVFEV0F3QUFKYXNCQUxFQUFBQXNxd0VBb3dBQUFES3JBUUF5SUFBQU9Lc0JBQThpQUFBOXF3RUFIU0lBQUVLckFRRElBd0FBUnFzQkFDSUFBQUJMcXdFQTBp''@;'; put 'put ''RUFBRkNyQVFBYUlnQUFWcXNCQUNvakFBQmJxd0VBdXdBQUFHR3JBUUNTSVFBQVpxc0JBQWtqQUFCc3F3RUFIU0FBQUhLckFRQWNJUUFBZDZzQkFLNEFBQUI3cXdFQUN5TUFBSUtyQVFEQkF3QUFocXNCQUE4Z0FBQ0txd0VBT2lBQUFKR3JBUUFaSUFBQWw2c0JBQm9nQUFDZHF3RUFZUUVBQUtT''@;'; put 'put ''ckFRREZJZ0FBcWFzQkFLY0FBQUN1cXdFQXJRQUFBTEtyQVFEREF3QUF1S3NCQU1JREFBQy9xd0VBUENJQUFNT3JBUUJnSmdBQXlxc0JBSUlpQUFET3F3RUFoaUlBQU5PckFRQVJJZ0FBMTZzQkFJTWlBQURicXdFQXVRQUFBT0NyQVFDeUFBQUE1YXNCQUxNQUFBRHFxd0VBaHlJQUFPK3JBUURm''@;'; put 'put ''QUFBQTlhc0JBTVFEQUFENXF3RUFOQ0lBQUFDc0FRQzRBd0FBQnF3QkFORURBQUFQckFFQUNTQUFBQmFzQVFEK0FBQUFIS3dCQU53Q0FBQWlyQUVBMXdBQUFDaXNBUUFpSVFBQUxxd0JBTkVoQUFBenJBRUErZ0FBQURxc0FRQ1JJUUFBUDZ3QkFQc0FBQUJGckFFQStRQUFBRXlzQVFDb0FBQUFV''@;'; put 'put ''S3dCQU5JREFBQldyQUVBeFFNQUFGNnNBUUQ4QUFBQVk2d0JBQmdoQUFCcXJBRUF2Z01BQUcyc0FRRDlBQUFBZEt3QkFLVUFBQUI0ckFFQS93QUFBSDJzQVFDMkF3QUFncXdCQUEwZ0FBQ0dyQUVBRENBQUFBY0FBQUFJQUFBQUFRRUFBQWdBQUFBSUFBQUFBQUFBQUFBQUFBQXZBQUFBRXdBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQWdBQUFBUUFBQUFBQUFBQUFBQUFBQXdBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQWF6QVFBSkFBQUFDTE1CQUFvQUFBQU5zd0VBQ2dBQUFCV3pBUUFMQUFBQUc3TUJBQXNBQUFBa3N3RUFEQUFBQUNlekFRQU1BQUFBTGJNQkFBMEFBQUF5c3dFQURRQUFBRHF6QVFB''@;'; put 'put ''T0FBQUFQN01CQUE0QUFBQkdzd0VBRHdBQUFFeXpBUUFQQUFBQVdMTUJBQkFBQUFCaUFBQUFNUUFBQURJQUFBQVVBQUFBTXdBQUFHTUFBQUEwQUFBQUZRQUFBRFVBQUFBSUFBQUFCQUFBQVAvLy8vOEFBQUFBQUFBQUFCVUFBQUFBQUFBQUFBQUFBQUFBQUFDanRBRUFWVjNKZjhsLy93Q3V0QUVB''@;'; put 'put ''dXkzVXZxN1Uvd0M1dEFFQUZIZjkvY0NHL3dERXRBRUFWVjNKZjhsLy93RFB0QUVBdXkzVXZxN1Uvd0RhdEFFQUZIZjkvY0NHL3dEbHRBRUFLbWIvLy8rWi93RHd0QUVBVlYzSmY4bC8vd0Q3dEFFQXV5M1V2cTdVL3dBR3RRRUFGSGY5L2NDRy93QVJ0UUVBS21iLy8vK1ovd0FjdFFFQWw2MndP''@;'; put 'put ''R3l3L3dBbnRRRUFWVjNKZjhsLy93QXl0UUVBdXkzVXZxN1Uvd0E5dFFFQUZIZjkvY0NHL3dCSXRRRUFLbWIvLy8rWi93QlR0UUVBbDYyd09HeXcvd0JldFFFQTZQenc4QUovL3dCcHRRRUFWVjNKZjhsLy93QjB0UUVBdXkzVXZxN1Uvd0IvdFFFQUZIZjkvY0NHL3dDS3RRRUFLbWIvLy8rWi93''@;'; put 'put ''Q1Z0UUVBbDYyd09HeXcvd0NndFFFQTZQenc4QUovL3dDcnRRRUFFZUMvdjFzWC93QzJ0UUVBVlYzSmY4bC8vd0RCdFFFQXV5M1V2cTdVL3dETXRRRUFGSGY5L2NDRy93RFh0UUVBS21iLy8vK1ovd0RpdFFFQWw2MndPR3l3L3dEdHRRRUE2UHp3OEFKLy93RDR0UUVBRWVDL3Yxc1gvd0FEdGdF''@;'; put 'put ''QUFBQm1abVptL3dBT3RnRUFreG4zM3V2My93QVl0Z0VBamt2aG5zcmgvd0FpdGdFQWtieTlNWUs5L3dBc3RnRUFueEQvNy9QLy93QTJ0Z0VBank3bnZkZm4vd0JBdGdFQWozL1dhNjdXL3dCS3RnRUFrOUMxSVhHMS93QlV0Z0VBbnhELzcvUC8vd0JldGdFQWp5N252ZGZuL3dCb3RnRUFqMy9X''@;'; put 'put ''YTY3Vy93Qnl0Z0VBa2J5OU1ZSzkvd0I4dGdFQWxmR2NDRkdjL3dDR3RnRUFueEQvNy9QLy93Q1F0Z0VBbEN2dnh0dnYvd0NhdGdFQWprdmhuc3JoL3dDa3RnRUFqMy9XYTY3Vy93Q3V0Z0VBa2J5OU1ZSzkvd0M0dGdFQWxmR2NDRkdjL3dEQ3RnRUFueEQvNy9QLy93RE10Z0VBbEN2dnh0dnYv''@;'; put 'put ''d0RXdGdFQWprdmhuc3JoL3dEZ3RnRUFqMy9XYTY3Vy93RHF0Z0VBa0tuR1FwTEcvd0QwdGdFQWs5QzFJWEcxL3dEK3RnRUFsL0dVQ0VXVS93QUl0d0VBbEFqLzkvdi8vd0FTdHdFQWt4bjMzdXYzL3dBY3R3RUFsQ3Z2eHR2di93QW10d0VBamt2aG5zcmgvd0F3dHdFQWozL1dhNjdXL3dBNnR3''@;'; put 'put ''RUFrS25HUXBMRy93QkV0d0VBazlDMUlYRzEvd0JPdHdFQWwvR1VDRVdVL3dCWXR3RUFsQWovOS92Ly93Qml0d0VBa3huMzN1djMvd0JzdHdFQWxDdnZ4dHZ2L3dCMnR3RUFqa3ZobnNyaC93Q0F0d0VBajMvV2E2N1cvd0NLdHdFQWtLbkdRcExHL3dDVXR3RUFrOUMxSVhHMS93Q2V0d0VBbGZH''@;'; put 'put ''Y0NGR2Mvd0NvdHdFQW1PdHJDREJyL3dDeXR3RUFGKzlVVkRBRi93Qzh0d0VBZC84OEFEd3cvd0RIdHdFQUYreU1qRkVLL3dEUnR3RUFHTUsvdjRFdC93RGJ0d0VBSFhEZjM4Sjkvd0RsdHdFQUhqVDI5dWpEL3dEdnR3RUFlU2JxeCtybC93RDV0d0VBZUYvTmdNM0Ivd0FEdUFFQWZLV1hOWmVQ''@;'; put 'put ''L3dBTnVBRUFmUHhtQVdaZS93QVh1QUVBRis5VVZEQUYvd0FodUFFQWZQeG1BV1plL3dBc3VBRUFkLzg4QUR3dy93QTN1QUVBRit5TWpGRUsvd0JCdUFFQUdNSy92NEV0L3dCTHVBRUFIWERmMzhKOS93QlZ1QUVBSGpUMjl1akQvd0JmdUFFQUFBRDE5ZlgxL3dCcHVBRUFlU2JxeCtybC93Qnp1''@;'; put 'put ''QUVBZUYvTmdNM0Ivd0I5dUFFQWZLV1hOWmVQL3dDSHVBRUFISWZZMkxObC93Q1F1QUVBQUFEMTlmWDEvd0NadUFFQWUzKzBXclNzL3dDaXVBRUFGZGVtcG1FYS93Q3J1QUVBSFhEZjM4Sjkvd0MwdUFFQWVGL05nTTNCL3dDOXVBRUFlZjJGQVlWeC93REd1QUVBRmRlbXBtRWEvd0RQdUFFQUhY''@;'; put 'put ''RGYzOEo5L3dEWXVBRUFBQUQxOWZYMS93RGh1QUVBZUYvTmdNM0Ivd0RxdUFFQWVmMkZBWVZ4L3dEenVBRUFGK3lNakZFSy93RDh1QUVBSElmWTJMTmwvd0FGdVFFQUhqVDI5dWpEL3dBT3VRRUFlU2JxeCtybC93QVh1UUVBZTMrMFdyU3Mvd0FndVFFQWZQeG1BV1plL3dBcHVRRUFGK3lNakZF''@;'; put 'put ''Sy93QXl1UUVBSElmWTJMTmwvd0E3dVFFQUhqVDI5dWpEL3dCRXVRRUFBQUQxOWZYMS93Qk51UUVBZVNicXgrcmwvd0JXdVFFQWUzKzBXclNzL3dCZnVRRUFmUHhtQVdaZS93Qm91UUVBRit5TWpGRUsvd0J4dVFFQUdNSy92NEV0L3dCNnVRRUFIWERmMzhKOS93Q0R1UUVBSGpUMjl1akQvd0NN''@;'; put 'put ''dVFFQWVTYnF4K3JsL3dDVnVRRUFlRi9OZ00zQi93Q2V1UUVBZktXWE5aZVAvd0NudVFFQWZQeG1BV1plL3dDd3VRRUFGK3lNakZFSy93QzV1UUVBR01LL3Y0RXQvd0RDdVFFQUhYRGYzOEo5L3dETHVRRUFIalQyOXVqRC93RFV1UUVBQUFEMTlmWDEvd0RkdVFFQWVTYnF4K3JsL3dEbXVRRUFl''@;'; put 'put ''Ri9OZ00zQi93RHZ1UUVBZktXWE5aZVAvd0Q0dVFFQWZQeG1BV1plL3dBQnVnRUFoeFQ1NWZYNS93QUt1Z0VBZFVyWW1kakovd0FUdWdFQVo3bWlMS0pmL3dBY3VnRUFpQTc3N2ZqNy93QWx1Z0VBZnpiaXN1TGkvd0F1dWdFQWNYakNac0trL3dBM3VnRUFZcjZMSTR0Ri93QkF1Z0VBaUE3Nzdm''@;'; put 'put ''ajcvd0JKdWdFQWZ6YmlzdUxpL3dCU3VnRUFjWGpDWnNLay93QmJ1Z0VBWjdtaUxLSmYvd0JrdWdFQVp2OXRBRzBzL3dCdHVnRUFpQTc3N2ZqNy93QjJ1Z0VBZHlMc3pPem0vd0IvdWdFQWRVclltZGpKL3dDSXVnRUFjWGpDWnNLay93Q1J1Z0VBWjdtaUxLSmYvd0NhdWdFQVp2OXRBRzBzL3dD''@;'; put 'put ''anVnRUFpQTc3N2ZqNy93Q3N1Z0VBZHlMc3pPem0vd0MxdWdFQWRVclltZGpKL3dDK3VnRUFjWGpDWnNLay93REh1Z0VBYVordVFhNTIvd0RRdWdFQVlyNkxJNHRGL3dEWnVnRUFadjlZQUZnay93RGl1Z0VBaGdiOTkvejkvd0RydWdFQWh4VDU1Zlg1L3dEMHVnRUFkeUxzek96bS93RDl1Z0VB''@;'; put 'put ''ZFVyWW1kakovd0FHdXdFQWNYakNac0trL3dBUHV3RUFhWit1UWE1Mi93QVl1d0VBWXI2TEk0dEYvd0FodXdFQVp2OVlBRmdrL3dBcXV3RUFoZ2I5OS96OS93QXp1d0VBaHhUNTVmWDUvd0E4dXdFQWR5THN6T3ptL3dCRnV3RUFkVXJZbWRqSi93Qk91d0VBY1hqQ1pzS2svd0JYdXdFQWFaK3VR''@;'; put 'put ''YTUyL3dCZ3V3RUFZcjZMSTR0Ri93QnB1d0VBWnY5dEFHMHMvd0J5dXdFQVpmOUVBRVFiL3dCN3V3RUFrQlQwNE96MC93Q0V1d0VBbEViYW5yemEvd0NOdXdFQXhIdW5pRmFuL3dDV3V3RUFpQTc3N2ZqNy93Q2Z1d0VBa2pYanM4M2ovd0NvdXdFQW9rckdqSmJHL3dDeHV3RUF5cFdkaUVHZC93''@;'; put 'put ''QzZ1d0VBaUE3Nzdmajcvd0REdXdFQWtqWGpzODNqL3dETXV3RUFva3JHakpiRy93RFZ1d0VBeEh1bmlGYW4vd0RldXdFQTF1R0JnUTk4L3dEbnV3RUFpQTc3N2ZqNy93RHd1d0VBbEN2bXY5UG0vd0Q1dXdFQWxFYmFucnphL3dBQ3ZBRUFva3JHakpiRy93QUx2QUVBeEh1bmlGYW4vd0FVdkFF''@;'; put 'put ''QTF1R0JnUTk4L3dBZHZBRUFpQTc3N2ZqNy93QW12QUVBbEN2bXY5UG0vd0F2dkFFQWxFYmFucnphL3dBNHZBRUFva3JHakpiRy93QkJ2QUVBdm1TeGpHdXgvd0JLdkFFQXlwV2RpRUdkL3dCVHZBRUExZnh1YmdGci93QmN2QUVBaGdiOTkvejkvd0JsdkFFQWtCVDA0T3owL3dCdXZBRUFsQ3Zt''@;'; put 'put ''djlQbS93QjN2QUVBbEViYW5yemEvd0NBdkFFQW9rckdqSmJHL3dDSnZBRUF2bVN4akd1eC93Q1N2QUVBeXBXZGlFR2Qvd0NidkFFQTFmeHViZ0ZyL3dDa3ZBRUFoZ2I5OS96OS93Q3R2QUVBa0JUMDRPejAvd0MydkFFQWxDdm12OVBtL3dDL3ZBRUFsRWJhbnJ6YS93REl2QUVBb2tyR2pKYkcv''@;'; put 'put ''d0RSdkFFQXZtU3hqR3V4L3dEYXZBRUF5cFdkaUVHZC93RGp2QUVBMXVHQmdROTgvd0RzdkFFQTFmOU5UUUJML3dEMXZBRUFjdE9lRzU1My93RC92QUVBRXZ6WjJWOEMvd0FKdlFFQXJWK3pkWEN6L3dBVHZRRUFjdE9lRzU1My93QWR2UUVBRXZ6WjJWOEMvd0FudlFFQXJWK3pkWEN6L3dBeHZR''@;'; put 'put ''RUE2ZEhuNXltSy93QTd2UUVBY3RPZUc1NTMvd0JGdlFFQUV2eloyVjhDL3dCUHZRRUFyVit6ZFhDei93Qlp2UUVBNmRIbjV5bUsvd0JqdlFFQVB0Q21acVllL3dCdHZRRUFjdE9lRzU1My93QjN2UUVBRXZ6WjJWOEMvd0NCdlFFQXJWK3pkWEN6L3dDTHZRRUE2ZEhuNXltSy93Q1Z2UUVBUHRD''@;'; put 'put ''bVpxWWUvd0NmdlFFQUgvem01cXNDL3dDcHZRRUFjdE9lRzU1My93Q3p2UUVBRXZ6WjJWOEMvd0M5dlFFQXJWK3pkWEN6L3dESHZRRUE2ZEhuNXltSy93RFJ2UUVBUHRDbVpxWWUvd0RidlFFQUgvem01cXNDL3dEbHZRRUFHOUttcG5ZZC93RHZ2UUVBY3RPZUc1NTMvd0Q1dlFFQUV2eloyVjhD''@;'; put 'put ''L3dBRHZnRUFyVit6ZFhDei93QU52Z0VBNmRIbjV5bUsvd0FYdmdFQVB0Q21acVllL3dBaHZnRUFIL3ptNXFzQy93QXJ2Z0VBRzlLbXBuWWQvd0ExdmdFQUFBQm1abVptL3dBL3ZnRUFUQm56NFBQYi93Qkl2Z0VBWHozZHFOMjEvd0JSdmdFQWpLcktRNkxLL3dCYXZnRUFRUkg1OFBuby93Qmp2''@;'; put 'put ''Z0VBVnk3a3V1Uzgvd0JzdmdFQWUyWE1lOHpFL3dCMXZnRUFqY1crSzR5Ky93Qit2Z0VBUVJINThQbm8vd0NIdmdFQVZ5N2t1dVM4L3dDUXZnRUFlMlhNZTh6RS93Q1p2Z0VBaktyS1E2TEsvd0NpdmdFQWtmT3NDR2lzL3dDcnZnRUFRUkg1OFBuby93QzB2Z0VBVFNucnpPdkYvd0M5dmdFQVh6''@;'; put 'put ''M2RxTjIxL3dER3ZnRUFlMlhNZTh6RS93RFB2Z0VBaktyS1E2TEsvd0RZdmdFQWtmT3NDR2lzL3dEaHZnRUFRUkg1OFBuby93RHF2Z0VBVFNucnpPdkYvd0R6dmdFQVh6M2RxTjIxL3dEOHZnRUFlMlhNZTh6RS93QUZ2d0VBaWFEVFRyUFQvd0FPdndFQWpjVytLNHkrL3dBWHZ3RUFrL0tlQ0Zp''@;'; put 'put ''ZS93QWd2d0VBUEF6ODkvencvd0FwdndFQVRCbno0UFBiL3dBeXZ3RUFUU25yek92Ri93QTd2d0VBWHozZHFOMjEvd0JFdndFQWUyWE1lOHpFL3dCTnZ3RUFpYURUVHJQVC93Qld2d0VBamNXK0s0eSsvd0JmdndFQWsvS2VDRmllL3dCb3Z3RUFQQXo4OS96dy93Qnh2d0VBVEJuejRQUGIvd0I2''@;'; put 'put ''dndFQVRTbnJ6T3ZGL3dDRHZ3RUFYejNkcU4yMS93Q012d0VBZTJYTWU4ekUvd0NWdndFQWlhRFRUclBUL3dDZXZ3RUFqY1crSzR5Ky93Q252d0VBa2ZPc0NHaXMvd0N3dndFQWx1K0JDRUNCL3dDNXZ3RUFTaFgxNWZYZy93REV2d0VBVUVqWm9kbWIvd0RQdndFQVlyS2pNYU5VL3dEYXZ3RUFT''@;'; put 'put ''US80N2ZqcC93RGx2d0VBVGpia3V1U3ovd0R3dndFQVZtakVkTVIyL3dEN3Z3RUFZcjZMSTR0Ri93QUd3QUVBU1EvNDdmanAvd0FSd0FFQVRqYmt1dVN6L3dBY3dBRUFWbWpFZE1SMi93QW53QUVBWXJLak1hTlUvd0F5d0FFQVp2OXRBRzBzL3dBOXdBRUFTUS80N2ZqcC93Qkl3QUVBVFN6cHgr''@;'; put 'put ''bkEvd0JUd0FFQVVFalpvZG1iL3dCZXdBRUFWbWpFZE1SMi93QnB3QUVBWXJLak1hTlUvd0Iwd0FFQVp2OXRBRzBzL3dCL3dBRUFTUS80N2ZqcC93Q0t3QUVBVFN6cHgrbkEvd0NWd0FFQVVFalpvZG1iL3dDZ3dBRUFWbWpFZE1SMi93Q3J3QUVBWUo2clFhdGQvd0Myd0FFQVlyNkxJNHRGL3dE''@;'; put 'put ''QndBRUFiUDlhQUZveS93RE13QUVBU0FmODkvejEvd0RYd0FFQVNoWDE1ZlhnL3dEaXdBRUFUU3pweCtuQS93RHR3QUVBVUVqWm9kbWIvd0Q0d0FFQVZtakVkTVIyL3dBRHdRRUFZSjZyUWF0ZC93QU93UUVBWXI2TEk0dEYvd0Fad1FFQWJQOWFBRm95L3dBa3dRRUFTQWY4OS96MS93QXZ3UUVB''@;'; put 'put ''U2hYMTVmWGcvd0E2d1FFQVRTenB4K25BL3dCRndRRUFVRWpab2RtYi93QlF3UUVBVm1qRWRNUjIvd0Jid1FFQVlKNnJRYXRkL3dCbXdRRUFZcjZMSTR0Ri93Qnh3UUVBWnY5dEFHMHMvd0I4d1FFQVpmOUVBRVFiL3dDSHdRRUFBQUR3OFBEdy93Q1J3UUVBQUFDOXZiMjkvd0Nid1FFQUFBQmpZ''@;'; put 'put ''Mk5qL3dDbHdRRUFBQUQzOS9mMy93Q3Z3UUVBQUFETXpNek0vd0M1d1FFQUFBQ1dscGFXL3dERHdRRUFBQUJTVWxKUy93RE53UUVBQUFEMzkvZjMvd0RYd1FFQUFBRE16TXpNL3dEaHdRRUFBQUNXbHBhVy93RHJ3UUVBQUFCalkyTmovd0Qxd1FFQUFBQWxKU1VsL3dEL3dRRUFBQUQzOS9mMy93''@;'; put 'put ''QUp3Z0VBQUFEWjJkblovd0FUd2dFQUFBQzl2YjI5L3dBZHdnRUFBQUNXbHBhVy93QW53Z0VBQUFCalkyTmovd0F4d2dFQUFBQWxKU1VsL3dBN3dnRUFBQUQzOS9mMy93QkZ3Z0VBQUFEWjJkblovd0JQd2dFQUFBQzl2YjI5L3dCWndnRUFBQUNXbHBhVy93Qmp3Z0VBQUFCemMzTnovd0J0d2dF''@;'; put 'put ''QUFBQlNVbEpTL3dCM3dnRUFBQUFsSlNVbC93Q0J3Z0VBQUFELy8vLy8vd0NMd2dFQUFBRHc4UER3L3dDVndnRUFBQURaMmRuWi93Q2Z3Z0VBQUFDOXZiMjkvd0Nwd2dFQUFBQ1dscGFXL3dDendnRUFBQUJ6YzNOei93Qzl3Z0VBQUFCU1VsSlMvd0RId2dFQUFBQWxKU1VsL3dEUndnRUFBQUQv''@;'; put 'put ''Ly8vLy93RGJ3Z0VBQUFEdzhQRHcvd0Rsd2dFQUFBRFoyZG5aL3dEdndnRUFBQUM5dmIyOS93RDV3Z0VBQUFDV2xwYVcvd0FEd3dFQUFBQnpjM056L3dBTnd3RUFBQUJTVWxKUy93QVh3d0VBQUFBbEpTVWwvd0Fod3dFQUFBQUFBQUFBL3dBcnd3RUFGVEQrL3ViTy93QTN3d0VBRTVQOS9hNXIv''@;'; put 'put ''d0JEd3dFQUR2RG01bFVOL3dCUHd3RUFFeUQrL3UzZS93QmJ3d0VBRkhqOS9iNkYvd0Jud3dFQUVjTDkvWTA4L3dCend3RUFEZjNaMlVjQi93Qi93d0VBRXlEKy91M2Uvd0NMd3dFQUZIajkvYjZGL3dDWHd3RUFFY0w5L1kwOC93Q2p3d0VBRHZEbTVsVU4vd0N2d3dFQURmcW1wallEL3dDN3d3''@;'; put 'put ''RUFFeUQrL3UzZS93REh3d0VBRlZ2OS9kQ2kvd0RUd3dFQUU1UDkvYTVyL3dEZnd3RUFFY0w5L1kwOC93RHJ3d0VBRHZEbTVsVU4vd0Qzd3dFQURmcW1wallEL3dBRHhBRUFFeUQrL3UzZS93QVB4QUVBRlZ2OS9kQ2kvd0FieEFFQUU1UDkvYTVyL3dBbnhBRUFFY0w5L1kwOC93QXp4QUVBRU9y''@;'; put 'put ''eDhXa1Qvd0EveEFFQURmM1oyVWdCL3dCTHhBRUFEUGVNakMwRS93Qlh4QUVBRlJULy8vWHIvd0JqeEFFQUZURCsvdWJPL3dCdnhBRUFGVnY5L2RDaS93Qjd4QUVBRTVQOS9hNXIvd0NIeEFFQUVjTDkvWTA4L3dDVHhBRUFFT3J4OFdrVC93Q2Z4QUVBRGYzWjJVZ0Ivd0NyeEFFQURQZU1qQzBF''@;'; put 'put ''L3dDM3hBRUFGUlQvLy9Yci93RER4QUVBRlREKy91Yk8vd0RQeEFFQUZWdjkvZENpL3dEYnhBRUFFNVA5L2E1ci93RG54QUVBRWNMOS9ZMDgvd0R6eEFFQUVPcng4V2tUL3dEL3hBRUFEZjNaMlVnQi93QUx4UUVBRGZxbXBqWUQvd0FYeFFFQURQWi9meWNFL3dBanhRRUFHVGIrL3VqSS93QXN4''@;'; put 'put ''UUVBRTNuOS9idUUvd0ExeFFFQUJjWGo0MG96L3dBK3hRRUFHaVgrL3ZEWi93Qkh4UUVBR0hQOS9jeUsvd0JReFFFQURhVDgvSTFaL3dCWnhRRUFBOXJYMXpBZi93Qml4UUVBR2lYKy92RFovd0JyeFFFQUdIUDkvY3lLL3dCMHhRRUFEYVQ4L0kxWi93Qjl4UUVBQmNYajQwb3ovd0NHeFFFQUFQ''@;'; put 'put ''K3pzd0FBL3dDUHhRRUFHaVgrL3ZEWi93Q1l4UUVBR0YvOS9kU2Uvd0NoeFFFQUUzbjkvYnVFL3dDcXhRRUFEYVQ4L0kxWi93Q3p4UUVBQmNYajQwb3ovd0M4eFFFQUFQK3pzd0FBL3dERnhRRUFHaVgrL3ZEWi93RE94UUVBR0YvOS9kU2Uvd0RYeFFFQUUzbjkvYnVFL3dEZ3hRRUFEYVQ4L0kx''@;'; put 'put ''Wi93RHB4UUVBQjdMdjcyVkkvd0R5eFFFQUE5clgxekFmL3dEN3hRRUFBUCtabVFBQS93QUV4Z0VBR0JMLy8vZnMvd0FOeGdFQUdUYisvdWpJL3dBV3hnRUFHRi85L2RTZS93QWZ4Z0VBRTNuOS9idUUvd0FveGdFQURhVDgvSTFaL3dBeHhnRUFCN0x2NzJWSS93QTZ4Z0VBQTlyWDF6QWYvd0JE''@;'; put 'put ''eGdFQUFQK1ptUUFBL3dCTXhnRUFHQkwvLy9mcy93QlZ4Z0VBR1RiKy91akkvd0JleGdFQUdGLzkvZFNlL3dCbnhnRUFFM245L2J1RS93Qnd4Z0VBRGFUOC9JMVovd0I1eGdFQUI3THY3MlZJL3dDQ3hnRUFBOXJYMXpBZi93Q0x4Z0VBQVArenN3QUEvd0NVeGdFQUFQOS9md0FBL3dDZHhnRUFq''@;'; put 'put ''a1RqcHM3ai93Q3B4Z0VBdnBtYWFqMmEvd0MyeGdFQWtOTzBIM2kwL3dEQ3hnRUFRV0hmc3QrSy93RE94Z0VBVXJpZ002QXMvd0RheGdFQUFHUDcrNXFaL3dEbXhnRUEvdUhqNHhvYy93RHl4Z0VBRjQvOS9iOXYvd0QreGdFQUZmLy8vMzhBL3dBS3h3RUF4aXJXeXJMVy93QVd4d0VBamtUanBz''@;'; put 'put ''N2ovd0FpeHdFQXZwbWFhajJhL3dBdnh3RUFLbWIvLy8rWi93QTh4d0VBa05PMEgzaTAvd0JJeHdFQVFXSGZzdCtLL3dCVXh3RUFVcmlnTTZBcy93Qmd4d0VBQUdQNys1cVovd0JzeHdFQS91SGo0eG9jL3dCNHh3RUFGNC85L2I5di93Q0V4d0VBRmYvLy8zOEEvd0NReHdFQXhpcld5ckxXL3dD''@;'; put 'put ''Y3h3RUFqa1RqcHM3ai93Q294d0VBdnBtYWFqMmEvd0MxeHdFQUttYi8vLytaL3dEQ3h3RUFEOFd4c1Zrby93RFB4d0VBa05PMEgzaTAvd0RieHdFQVFXSGZzdCtLL3dEbnh3RUFVcmlnTTZBcy93RHp4d0VBQUdQNys1cVovd0QveHdFQS91SGo0eG9jL3dBTHlBRUFGNC85L2I5di93QVh5QUVB''@;'; put 'put ''RmYvLy8zOEEvd0FqeUFFQXhpcld5ckxXL3dBdnlBRUFqa1RqcHM3ai93QTZ5QUVBa05PMEgzaTAvd0JGeUFFQVFXSGZzdCtLL3dCUXlBRUFqa1RqcHM3ai93QmJ5QUVBa05PMEgzaTAvd0JteUFFQVFXSGZzdCtLL3dCeHlBRUFVcmlnTTZBcy93Qjh5QUVBamtUanBzN2ovd0NIeUFFQWtOTzBI''@;'; put 'put ''M2kwL3dDU3lBRUFRV0hmc3QrSy93Q2R5QUVBVXJpZ002QXMvd0NveUFFQUFHUDcrNXFaL3dDenlBRUFqa1RqcHM3ai93Qyt5QUVBa05PMEgzaTAvd0RKeUFFQVFXSGZzdCtLL3dEVXlBRUFVcmlnTTZBcy93RGZ5QUVBQUdQNys1cVovd0RxeUFFQS91SGo0eG9jL3dEMXlBRUFqa1RqcHM3ai93''@;'; put 'put ''QUF5UUVBa05PMEgzaTAvd0FMeVFFQVFXSGZzdCtLL3dBV3lRRUFVcmlnTTZBcy93QWh5UUVBQUdQNys1cVovd0FzeVFFQS91SGo0eG9jL3dBM3lRRUFGNC85L2I5di93QkN5UUVBamtUanBzN2ovd0JOeVFFQWtOTzBIM2kwL3dCWXlRRUFRV0hmc3QrSy93Qmp5UUVBVXJpZ002QXMvd0J1eVFF''@;'; put 'put ''QUFHUDcrNXFaL3dCNXlRRUEvdUhqNHhvYy93Q0V5UUVBRjQvOS9iOXYvd0NQeVFFQUZmLy8vMzhBL3dDYXlRRUFqa1RqcHM3ai93Q2x5UUVBa05PMEgzaTAvd0N3eVFFQVFXSGZzdCtLL3dDN3lRRUFVcmlnTTZBcy93REd5UUVBQUdQNys1cVovd0RSeVFFQS91SGo0eG9jL3dEY3lRRUFGNC85''@;'; put 'put ''L2I5di93RG55UUVBRmYvLy8zOEEvd0R5eVFFQXhpcld5ckxXL3dEOXlRRUFBMDc3KzdTdS93QUp5Z0VBa2pYanM4M2ovd0FWeWdFQVRTbnJ6T3ZGL3dBaHlnRUFBMDc3KzdTdS93QXR5Z0VBa2pYanM4M2ovd0E1eWdFQVRTbnJ6T3ZGL3dCRnlnRUF5aHZrM3N2ay93QlJ5Z0VBQTA3Nys3U3Uv''@;'; put 'put ''d0JkeWdFQWtqWGpzODNqL3dCcHlnRUFUU25yek92Ri93QjF5Z0VBeWh2azNzdmsvd0NCeWdFQUdGaisvdG1tL3dDTnlnRUFBMDc3KzdTdS93Q1p5Z0VBa2pYanM4M2ovd0NseWdFQVRTbnJ6T3ZGL3dDeHlnRUF5aHZrM3N2ay93Qzl5Z0VBR0ZqKy90bW0vd0RKeWdFQUtqTC8vLy9NL3dEVnln''@;'; put 'put ''RUFBMDc3KzdTdS93RGh5Z0VBa2pYanM4M2ovd0R0eWdFQVRTbnJ6T3ZGL3dENXlnRUF5aHZrM3N2ay93QUZ5d0VBR0ZqKy90bW0vd0FSeXdFQUtqTC8vLy9NL3dBZHl3RUFIQ3psNWRpOS93QXB5d0VBQTA3Nys3U3Uvd0ExeXdFQWtqWGpzODNqL3dCQnl3RUFUU25yek92Ri93Qk55d0VBeWh2''@;'; put 'put ''azNzdmsvd0JaeXdFQUdGaisvdG1tL3dCbHl3RUFLakwvLy8vTS93Qnh5d0VBSEN6bDVkaTkvd0I5eXdFQTZTUDkvZHJzL3dDSnl3RUFBMDc3KzdTdS93Q1Z5d0VBa2pYanM4M2ovd0NoeXdFQVRTbnJ6T3ZGL3dDdHl3RUF5aHZrM3N2ay93QzV5d0VBR0ZqKy90bW0vd0RGeXdFQUtqTC8vLy9N''@;'; put 'put ''L3dEUnl3RUFIQ3psNWRpOS93RGR5d0VBNlNQOS9kcnMvd0RweXdFQUFBRHk4dkx5L3dEMXl3RUFiRFhpcytMTi93QUJ6QUVBRVZIOS9jMnMvd0FOekFFQW14L295OVhvL3dBWnpBRUFiRFhpcytMTi93QWx6QUVBRVZIOS9jMnMvd0F4ekFFQW14L295OVhvL3dBOXpBRUE1Q3YwOU1yay93Qkp6''@;'; put 'put ''QUVBYkRYaXMrTE4vd0JWekFFQUVWSDkvYzJzL3dCaHpBRUFteC9veTlYby93QnR6QUVBNUN2MDlNcmsvd0I1ekFFQU9DMzE1dlhKL3dDRnpBRUFiRFhpcytMTi93Q1J6QUVBRVZIOS9jMnMvd0NkekFFQW14L295OVhvL3dDcHpBRUE1Q3YwOU1yay93QzF6QUVBT0MzMTV2WEovd0RCekFFQUkx''@;'; put 'put ''SC8vL0t1L3dETnpBRUFiRFhpcytMTi93RFp6QUVBRVZIOS9jMnMvd0RsekFFQW14L295OVhvL3dEeHpBRUE1Q3YwOU1yay93RDl6QUVBT0MzMTV2WEovd0FKelFFQUkxSC8vL0t1L3dBVnpRRUFHU2Z4OGVMTS93QWh6UUVBYkRYaXMrTE4vd0F0elFFQUVWSDkvYzJzL3dBNXpRRUFteC9veTlY''@;'; put 'put ''by93QkZ6UUVBNUN2MDlNcmsvd0JSelFFQU9DMzE1dlhKL3dCZHpRRUFJMUgvLy9LdS93QnB6UUVBR1NmeDhlTE0vd0IxelFFQUFBRE16TXpNL3dDQnpRRUE1djJPamdGUy93Q0x6UUVBVGI5a0oyUVovd0NXelFFQTV0ekZ4UnQ5L3dDZ3pRRUE2SGJlM25ldS93Q3F6UUVBNVQ3eDhiYmEvd0Mw''@;'; put 'put ''elFFQTZSMzkvZUR2L3dDK3pRRUFPeWIxNXZYUS93REl6UUVBUFdmaHVPR0cvd0RTelFFQVA2YThmN3hCL3dEY3pRRUFSTVdTVFpJaC93RG16UUVBNXYyT2pnRlMvd0R3elFFQVJNV1NUWkloL3dEN3pRRUFUYjlrSjJRWi93QUd6Z0VBNXR6RnhSdDkvd0FRemdFQTZIYmUzbmV1L3dBYXpnRUE1''@;'; put 'put ''VDd4OGJiYS93QWt6Z0VBNlIzOS9lRHYvd0F1emdFQUFBRDM5L2YzL3dBNHpnRUFPeWIxNXZYUS93QkN6Z0VBUFdmaHVPR0cvd0JNemdFQVA2YThmN3hCL3dCV3pnRUE1MHpwNmFQSi93QmZ6Z0VBQUFEMzkvZjMvd0JvemdFQVA0SFhvZGRxL3dCeHpnRUE1TnpRMEJ5TC93QjZ6Z0VBNVQ3eDhi''@;'; put 'put ''YmEvd0NEemdFQVBXZmh1T0dHL3dDTXpnRUFTTWFzVGF3bS93Q1Z6Z0VBNU56UTBCeUwvd0NlemdFQTVUN3g4YmJhL3dDbnpnRUFBQUQzOS9mMy93Q3d6Z0VBUFdmaHVPR0cvd0M1emdFQVNNYXNUYXdtL3dEQ3pnRUE1dHpGeFJ0OS93REx6Z0VBNTB6cDZhUEovd0RVemdFQTZSMzkvZUR2L3dE''@;'; put 'put ''ZHpnRUFPeWIxNXZYUS93RG16Z0VBUDRIWG9kZHEvd0R2emdFQVJNV1NUWkloL3dENHpnRUE1dHpGeFJ0OS93QUJ6d0VBNTB6cDZhUEovd0FLendFQTZSMzkvZUR2L3dBVHp3RUFBQUQzOS9mMy93QWN6d0VBT3liMTV2WFEvd0FsendFQVA0SFhvZGRxL3dBdXp3RUFSTVdTVFpJaC93QTN6d0VB''@;'; put 'put ''NXR6RnhSdDkvd0JBendFQTZIYmUzbmV1L3dCSnp3RUE1VDd4OGJiYS93QlN6d0VBNlIzOS9lRHYvd0JiendFQU95YjE1dlhRL3dCa3p3RUFQV2ZodU9HRy93QnR6d0VBUDZhOGY3eEIvd0IyendFQVJNV1NUWkloL3dCL3p3RUE1dHpGeFJ0OS93Q0l6d0VBNkhiZTNuZXUvd0NSendFQTVUN3g4''@;'; put 'put ''YmJhL3dDYXp3RUE2UjM5L2VEdi93Q2p6d0VBQUFEMzkvZjMvd0NzendFQU95YjE1dlhRL3dDMXp3RUFQV2ZodU9HRy93Qyt6d0VBUDZhOGY3eEIvd0RIendFQVJNV1NUWkloL3dEUXp3RUF6djlMUUFCTC93RGF6d0VBWmY5RUFFUWIvd0RsendFQXpxMkRkaXFEL3dEdnp3RUF4MWVybVhDci93''@;'; put 'put ''RDV6d0VBeHpQUHdxWFAvd0FEMEFFQTBoWG81OVRvL3dBTjBBRUFUQjd3MmZEVC93QVgwQUVBVUVUYnB0dWcvd0FoMEFFQVdIdXVXcTVoL3dBcjBBRUFZY1Y0RzNnMy93QTEwQUVBenY5TFFBQkwvd0EvMEFFQVljVjRHM2czL3dCSzBBRUFaZjlFQUVRYi93QlYwQUVBenEyRGRpcUQvd0JmMEFF''@;'; put 'put ''QXgxZXJtWENyL3dCcDBBRUF4elBQd3FYUC93QnowQUVBMGhYbzU5VG8vd0I5MEFFQUFBRDM5L2YzL3dDSDBBRUFUQjd3MmZEVC93Q1IwQUVBVUVUYnB0dWcvd0NiMEFFQVdIdXVXcTVoL3dDbDBBRUF4RWJEcjQzRC93Q3UwQUVBQUFEMzkvZjMvd0MzMEFFQVVscS9mNzk3L3dEQTBBRUF5YWlV''@;'; put 'put ''ZXpLVS93REowQUVBeHpQUHdxWFAvd0RTMEFFQVVFVGJwdHVnL3dEYjBBRUFaditJQUlnMy93RGswQUVBeWFpVWV6S1Uvd0R0MEFFQXh6UFB3cVhQL3dEMjBBRUFBQUQzOS9mMy93RC8wQUVBVUVUYnB0dWcvd0FJMFFFQVp2K0lBSWczL3dBUjBRRUF6cTJEZGlxRC93QWEwUUVBeEViRHI0M0Qv''@;'; put 'put ''d0FqMFFFQTBoWG81OVRvL3dBczBRRUFUQjd3MmZEVC93QTEwUUVBVWxxL2Y3OTcvd0ErMFFFQVljVjRHM2czL3dCSDBRRUF6cTJEZGlxRC93QlEwUUVBeEViRHI0M0Qvd0JaMFFFQTBoWG81OVRvL3dCaTBRRUFBQUQzOS9mMy93QnIwUUVBVEI3dzJmRFQvd0IwMFFFQVVscS9mNzk3L3dCOTBR''@;'; put 'put ''RUFZY1Y0RzNnMy93Q0cwUUVBenEyRGRpcUQvd0NQMFFFQXgxZXJtWENyL3dDWTBRRUF4elBQd3FYUC93Q2gwUUVBMGhYbzU5VG8vd0NxMFFFQVRCN3cyZkRUL3dDejBRRUFVRVRicHR1Zy93QzgwUUVBV0h1dVdxNWgvd0RGMFFFQVljVjRHM2czL3dETzBRRUF6cTJEZGlxRC93RFgwUUVBeDFl''@;'; put 'put ''cm1YQ3Ivd0RnMFFFQXh6UFB3cVhQL3dEcDBRRUEwaFhvNTlUby93RHkwUUVBQUFEMzkvZjMvd0Q3MFFFQVRCN3cyZkRUL3dBRTBnRUFVRVRicHR1Zy93QU4wZ0VBV0h1dVdxNWgvd0FXMGdFQVljVjRHM2czL3dBZjBnRUF2UXZ5N09meS93QW8wZ0VBbHozYnByM2Ivd0F4MGdFQWpjVytLNHkr''@;'; put 'put ''L3dBNjBnRUF1UWoyOGU3Mi93QkQwZ0VBbXlqaHZjbmgvd0JNMGdFQWtYRFBkS25QL3dCVjBnRUFqL2V3QlhDdy93QmUwZ0VBdVFqMjhlNzIvd0JuMGdFQW15amh2Y25oL3dCdzBnRUFrWERQZEtuUC93QjUwZ0VBamNXK0s0eSsvd0NDMGdFQWovZU5CRnFOL3dDTDBnRUF1UWoyOGU3Mi93Q1Uw''@;'; put 'put ''Z0VBcUJqbTBOSG0vd0NkMGdFQWx6M2JwcjNiL3dDbTBnRUFrWERQZEtuUC93Q3YwZ0VBamNXK0s0eSsvd0M0MGdFQWovZU5CRnFOL3dEQjBnRUF1UWoyOGU3Mi93REswZ0VBcUJqbTBOSG0vd0RUMGdFQWx6M2JwcjNiL3dEYzBnRUFrWERQZEtuUC93RGwwZ0VBanJmQU5wREEvd0R1MGdFQWov''@;'; put 'put ''ZXdCWEN3L3dEMzBnRUFqL2g3QTA1Ny93QUEwd0VBNlFqLy8vZjcvd0FKMHdFQXZRdnk3T2Z5L3dBUzB3RUFxQmptME5IbS93QWIwd0VBbHozYnByM2Ivd0FrMHdFQWtYRFBkS25QL3dBdDB3RUFqcmZBTnBEQS93QTIwd0VBai9ld0JYQ3cvd0EvMHdFQWovaDdBMDU3L3dCSTB3RUE2UWovLy9m''@;'; put 'put ''Ny93QlIwd0VBdlF2eTdPZnkvd0JhMHdFQXFCam0wTkhtL3dCajB3RUFsejNicHIzYi93QnMwd0VBa1hEUGRLblAvd0IxMHdFQWpyZkFOcERBL3dCKzB3RUFqL2V3QlhDdy93Q0gwd0VBai9lTkJGcU4vd0NRMHdFQWovbFlBamhZL3dDWjB3RUF5QTd3N09Mdy93Q2swd0VBbHozYnByM2Ivd0N2''@;'; put 'put ''MHdFQWd0Q1pISkNaL3dDNjB3RUF6d2ozOXUvMy93REYwd0VBbXlqaHZjbmgvd0RRMHdFQWo0RFBaNm5QL3dEYjB3RUFndnVLQW9HSy93RG0wd0VBendqMzl1LzMvd0R4MHdFQW15amh2Y25oL3dEODB3RUFqNERQWjZuUC93QUgxQUVBZ3RDWkhKQ1ovd0FTMUFFQWQveHNBV3haL3dBZDFBRUF6''@;'; put 'put ''d2ozOXUvMy93QW8xQUVBcUJqbTBOSG0vd0F6MUFFQWx6M2JwcjNiL3dBKzFBRUFqNERQWjZuUC93QkoxQUVBZ3RDWkhKQ1ovd0JVMUFFQWQveHNBV3haL3dCZjFBRUF6d2ozOXUvMy93QnExQUVBcUJqbTBOSG0vd0IxMUFFQWx6M2JwcjNiL3dDQTFBRUFqNERQWjZuUC93Q0wxQUVBanJmQU5w''@;'; put 'put ''REEvd0NXMUFFQWd2dUtBb0dLL3dDaDFBRUFkdnhrQVdSUS93Q3MxQUVBNlFqLy8vZjcvd0MzMUFFQXlBN3c3T0x3L3dEQzFBRUFxQmptME5IbS93RE4xQUVBbHozYnByM2Ivd0RZMUFFQWo0RFBaNm5QL3dEajFBRUFqcmZBTnBEQS93RHUxQUVBZ3Z1S0FvR0svd0Q1MUFFQWR2eGtBV1JRL3dB''@;'; put 'put ''RTFRRUE2UWovLy9mNy93QVAxUUVBeUE3dzdPTHcvd0FhMVFFQXFCam0wTkhtL3dBbDFRRUFsejNicHIzYi93QXcxUUVBajREUFo2blAvd0E3MVFFQWpyZkFOcERBL3dCRzFRRUFndnVLQW9HSy93QlIxUUVBZC94c0FXeFovd0JjMVFFQWRmdEdBVVkyL3dCbjFRRUFFdTUvZnpzSS93QngxUUVB''@;'; put 'put ''dy85TExRQkwvd0I4MVFFQUZQYXpzMWdHL3dDRzFRRUFGdWpnNElJVS93Q1ExUUVBRjV2OS9iaGovd0NhMVFFQUdFaisvdUMyL3dDazFRRUFwUlRyMk5yci93Q3UxUUVBc1MvU3NxdlMvd0M0MVFFQXMxU3NnSE9zL3dEQzFRRUF2YldJVkNlSS93RE0xUUVBRXU1L2Z6c0kvd0RXMVFFQXZiV0lW''@;'; put 'put ''Q2VJL3dEaDFRRUF3LzlMTFFCTC93RHMxUUVBRlBhenMxZ0cvd0QyMVFFQUZ1amc0SUlVL3dBQTFnRUFGNXY5L2Joai93QUsxZ0VBR0VqKy91QzIvd0FVMWdFQUFBRDM5L2YzL3dBZTFnRUFwUlRyMk5yci93QW8xZ0VBc1MvU3NxdlMvd0F5MWdFQXMxU3NnSE9zL3dBODFnRUFGN3Z4OGFOQS93''@;'; put 'put ''QkYxZ0VBQUFEMzkvZjMvd0JPMWdFQXNrWERtWTdEL3dCWDFnRUFFZjNtNW1FQi93QmcxZ0VBRjV2OS9iaGovd0JwMWdFQXNTL1NzcXZTL3dCeTFnRUF1WnVaWGp5Wi93QjcxZ0VBRWYzbTVtRUIvd0NFMWdFQUY1djkvYmhqL3dDTjFnRUFBQUQzOS9mMy93Q1cxZ0VBc1MvU3NxdlMvd0NmMWdF''@;'; put 'put ''QXVadVpYanlaL3dDbzFnRUFGUGF6czFnRy93Q3gxZ0VBRjd2eDhhTkEvd0M2MWdFQUdFaisvdUMyL3dERDFnRUFwUlRyMk5yci93RE0xZ0VBc2tYRG1ZN0Qvd0RWMWdFQXZiV0lWQ2VJL3dEZTFnRUFGUGF6czFnRy93RG4xZ0VBRjd2eDhhTkEvd0R3MWdFQUdFaisvdUMyL3dENTFnRUFBQUQz''@;'; put 'put ''OS9mMy93QUMxd0VBcFJUcjJOcnIvd0FMMXdFQXNrWERtWTdEL3dBVTF3RUF2YldJVkNlSS93QWQxd0VBRlBhenMxZ0cvd0FtMXdFQUZ1amc0SUlVL3dBdjF3RUFGNXY5L2Joai93QTQxd0VBR0VqKy91QzIvd0JCMXdFQXBSVHIyTnJyL3dCSzF3RUFzUy9Tc3F2Uy93QlQxd0VBczFTc2dIT3Mv''@;'; put 'put ''d0JjMXdFQXZiV0lWQ2VJL3dCbDF3RUFGUGF6czFnRy93QnUxd0VBRnVqZzRJSVUvd0IzMXdFQUY1djkvYmhqL3dDQTF3RUFHRWorL3VDMi93Q0oxd0VBQUFEMzkvZjMvd0NTMXdFQXBSVHIyTnJyL3dDYjF3RUFzUy9Tc3F2Uy93Q2sxd0VBczFTc2dIT3Mvd0N0MXdFQXZiV0lWQ2VJL3dDMjF3''@;'; put 'put ''RUF2QTd2NStIdi93Qy8xd0VBMWtQSnlaVEgvd0RJMXdFQTZ0N2QzUngzL3dEUjF3RUF1UWoyOGU3Mi93RGExd0VBMHluWTE3WFkvd0RqMXdFQTVJdmYzMld3L3dEczF3RUE3K2pPemhKVy93RDExd0VBdVFqMjhlNzIvd0QrMXdFQTB5blkxN1hZL3dBSDJBRUE1SXZmMzJXdy93QVEyQUVBNnQ3''@;'; put 'put ''ZDNSeDMvd0FaMkFFQTdQK1ltQUJEL3dBaTJBRUF1UWoyOGU3Mi93QXIyQUVBekNiYTFMbmEvd0EwMkFFQTFrUEp5WlRIL3dBOTJBRUE1SXZmMzJXdy93QkcyQUVBNnQ3ZDNSeDMvd0JQMkFFQTdQK1ltQUJEL3dCWTJBRUF1UWoyOGU3Mi93QmgyQUVBekNiYTFMbmEvd0JxMkFFQTFrUEp5WlRI''@;'; put 'put ''L3dCejJBRUE1SXZmMzJXdy93QjgyQUVBNmRIbjV5bUsvd0NGMkFFQTcrak96aEpXL3dDTzJBRUE3UCtSa1FBLy93Q1gyQUVBd3dYNTkvVDUvd0NnMkFFQXZBN3Y1K0h2L3dDcDJBRUF6Q2JhMUxuYS93Q3kyQUVBMWtQSnlaVEgvd0M3MkFFQTVJdmYzMld3L3dERTJBRUE2ZEhuNXltSy93RE4y''@;'; put 'put ''QUVBNytqT3poSlcvd0RXMkFFQTdQK1JrUUEvL3dEZjJBRUF3d1g1OS9UNS93RG8yQUVBdkE3djUrSHYvd0R4MkFFQXpDYmExTG5hL3dENjJBRUExa1BKeVpUSC93QUQyUUVBNUl2ZjMyV3cvd0FNMlFFQTZkSG41eW1LL3dBVjJRRUE3K2pPemhKVy93QWUyUUVBN1ArWW1BQkQvd0FuMlFFQTh2''@;'; put 'put ''OW5ad0FmL3dBdzJRRUF0QWoxNyszMS93QTgyUUVBcUNYY3ZMM2Mvd0JJMlFFQXNHU3hkV3V4L3dCVTJRRUF0Z2YzOHZEMy93QmcyUUVBclJ6aXk4bmkvd0JzMlFFQXJUcklucHJJL3dCNDJRRUF0b0NqYWxHai93Q0UyUUVBdGdmMzh2RDMvd0NRMlFFQXJSeml5OG5pL3dDYzJRRUFyVHJJbnBy''@;'; put 'put ''SS93Q28yUUVBc0dTeGRXdXgvd0MwMlFFQXZMbVBWQ2VQL3dEQTJRRUF0Z2YzOHZEMy93RE0yUUVBcWhMcjJ0cnIvd0RZMlFFQXFDWGN2TDNjL3dEazJRRUFyVHJJbnBySS93RHcyUUVBc0dTeGRXdXgvd0Q4MlFFQXZMbVBWQ2VQL3dBSTJnRUF0Z2YzOHZEMy93QVUyZ0VBcWhMcjJ0cnIvd0Fn''@;'; put 'put ''MmdFQXFDWGN2TDNjL3dBczJnRUFyVHJJbnBySS93QTQyZ0VBckZPNmdIMjYvd0JFMmdFQXRvQ2phbEdqL3dCUTJnRUF2dGlHU2hTRy93QmMyZ0VBdndMOS9Qdjkvd0JvMmdFQXRBajE3KzMxL3dCMDJnRUFxaExyMnRyci93Q0EyZ0VBcUNYY3ZMM2Mvd0NNMmdFQXJUcklucHJJL3dDWTJnRUFy''@;'; put 'put ''Rk82Z0gyNi93Q2syZ0VBdG9DamFsR2ovd0N3MmdFQXZ0aUdTaFNHL3dDODJnRUF2d0w5L1B2OS93REkyZ0VBdEFqMTcrMzEvd0RVMmdFQXFoTHIydHJyL3dEZzJnRUFxQ1hjdkwzYy93RHMyZ0VBclRySW5wckkvd0Q0MmdFQXJGTzZnSDI2L3dBRTJ3RUF0b0NqYWxHai93QVEyd0VBdkxtUFZD''@;'; put 'put ''ZVAvd0FjMndFQXYvOTlQd0I5L3dBbzJ3RUE4djluWndBZi93QXkyd0VBbHZGaEJUQmgvd0E5MndFQStkeXlzaGdyL3dCSDJ3RUFCYVBXMW1CTi93QlIyd0VBRFhmMDlLV0Mvd0JiMndFQUR6YjkvZHZIL3dCbDJ3RUFqaUR3MGVYdy93QnYyd0VBalZmZWtzWGUvd0I1MndFQWo2ZkRRNVBEL3dD''@;'; put 'put ''RDJ3RUFsTTZzSVdhcy93Q04yd0VBOHY5blp3QWYvd0NYMndFQWxNNnNJV2FzL3dDaTJ3RUFsdkZoQlRCaC93Q3Qyd0VBK2R5eXNoZ3Ivd0MzMndFQUJhUFcxbUJOL3dEQjJ3RUFEWGYwOUtXQy93REwyd0VBRHpiOS9kdkgvd0RWMndFQUFBRDM5L2YzL3dEZjJ3RUFqaUR3MGVYdy93RHAyd0VB''@;'; put 'put ''alZmZWtzWGUvd0R6MndFQWo2ZkRRNVBEL3dEOTJ3RUFESmJ2NzRwaS93QUczQUVBQUFEMzkvZjMvd0FQM0FFQWo0RFBaNm5QL3dBWTNBRUErUC9LeWdBZy93QWgzQUVBRFhmMDlLV0Mvd0FxM0FFQWpWZmVrc1hlL3dBejNBRUFqL2V3QlhHdy93QTgzQUVBK1AvS3lnQWcvd0JGM0FFQURYZjA5''@;'; put 'put ''S1dDL3dCTzNBRUFBQUQzOS9mMy93QlgzQUVBalZmZWtzWGUvd0JnM0FFQWovZXdCWEd3L3dCcDNBRUErZHl5c2hnci93QnkzQUVBREpidjc0cGkvd0I3M0FFQUR6YjkvZHZIL3dDRTNBRUFqaUR3MGVYdy93Q04zQUVBajREUFo2blAvd0NXM0FFQWxNNnNJV2FzL3dDZjNBRUErZHl5c2hnci93''@;'; put 'put ''Q28zQUVBREpidjc0cGkvd0N4M0FFQUR6YjkvZHZIL3dDNjNBRUFBQUQzOS9mMy93REQzQUVBamlEdzBlWHcvd0RNM0FFQWo0RFBaNm5QL3dEVjNBRUFsTTZzSVdhcy93RGUzQUVBK2R5eXNoZ3Ivd0RuM0FFQUJhUFcxbUJOL3dEdzNBRUFEWGYwOUtXQy93RDUzQUVBRHpiOS9kdkgvd0FDM1FF''@;'; put 'put ''QWppRHcwZVh3L3dBTDNRRUFqVmZla3NYZS93QVUzUUVBajZmRFE1UEQvd0FkM1FFQWxNNnNJV2FzL3dBbTNRRUErZHl5c2hnci93QXYzUUVBQmFQVzFtQk4vd0E0M1FFQURYZjA5S1dDL3dCQjNRRUFEemI5L2R2SC93QkszUUVBQUFEMzkvZjMvd0JUM1FFQWppRHcwZVh3L3dCYzNRRUFqVmZl''@;'; put 'put ''a3NYZS93QmwzUUVBajZmRFE1UEQvd0J1M1FFQWxNNnNJV2FzL3dCMzNRRUE4djluWndBZi93Q0IzUUVBQUFBYUdob2Evd0NNM1FFQStkeXlzaGdyL3dDVzNRRUFCYVBXMW1CTi93Q2czUUVBRFhmMDlLV0Mvd0NxM1FFQUR6YjkvZHZIL3dDMDNRRUFBQURnNE9EZy93QyszUUVBQUFDNnVycTYv''@;'; put 'put ''d0RJM1FFQUFBQ0hoNGVIL3dEUzNRRUFBQUJOVFUxTi93RGMzUUVBOHY5blp3QWYvd0RtM1FFQUFBQk5UVTFOL3dEeDNRRUFBQUFhR2hvYS93RDgzUUVBK2R5eXNoZ3Ivd0FHM2dFQUJhUFcxbUJOL3dBUTNnRUFEWGYwOUtXQy93QWEzZ0VBRHpiOS9kdkgvd0FrM2dFQUFBRC8vLy8vL3dBdTNn''@;'; put 'put ''RUFBQURnNE9EZy93QTQzZ0VBQUFDNnVycTYvd0JDM2dFQUFBQ0hoNGVIL3dCTTNnRUFESmJ2NzRwaS93QlYzZ0VBQUFELy8vLy8vd0JlM2dFQUFBQ1ptWm1aL3dCbjNnRUErUC9LeWdBZy93QnczZ0VBRFhmMDlLV0Mvd0I1M2dFQUFBQzZ1cnE2L3dDQzNnRUFBQUJBUUVCQS93Q0wzZ0VBK1Av''@;'; put 'put ''S3lnQWcvd0NVM2dFQURYZjA5S1dDL3dDZDNnRUFBQUQvLy8vLy93Q20zZ0VBQUFDNnVycTYvd0N2M2dFQUFBQkFRRUJBL3dDNDNnRUErZHl5c2hnci93REIzZ0VBREpidjc0cGkvd0RLM2dFQUR6YjkvZHZIL3dEVDNnRUFBQURnNE9EZy93RGMzZ0VBQUFDWm1abVovd0RsM2dFQUFBQk5UVTFO''@;'; put 'put ''L3dEdTNnRUErZHl5c2hnci93RDMzZ0VBREpidjc0cGkvd0FBM3dFQUR6YjkvZHZIL3dBSjN3RUFBQUQvLy8vLy93QVMzd0VBQUFEZzRPRGcvd0FiM3dFQUFBQ1ptWm1aL3dBazN3RUFBQUJOVFUxTi93QXQzd0VBK2R5eXNoZ3Ivd0EyM3dFQUJhUFcxbUJOL3dBLzN3RUFEWGYwOUtXQy93Qkkz''@;'; put 'put ''d0VBRHpiOS9kdkgvd0JSM3dFQUFBRGc0T0RnL3dCYTN3RUFBQUM2dXJxNi93Qmozd0VBQUFDSGg0ZUgvd0JzM3dFQUFBQk5UVTFOL3dCMTN3RUErZHl5c2hnci93Qiszd0VBQmFQVzFtQk4vd0NIM3dFQURYZjA5S1dDL3dDUTN3RUFEemI5L2R2SC93Q1ozd0VBQUFELy8vLy8vd0NpM3dFQUFB''@;'; put 'put ''RGc0T0RnL3dDcjN3RUFBQUM2dXJxNi93QzAzd0VBQUFDSGg0ZUgvd0M5M3dFQUFBQk5UVTFOL3dERzN3RUFBeUQ5L2VEZC93RFAzd0VBOUZ6NitwKzEvd0RZM3dFQTQ5ekZ4UnVLL3dEaDN3RUFEUnorL3V2aS93RHEzd0VBL0VqNys3UzUvd0R6M3dFQTdwUDM5MmloL3dEODN3RUE0UDJ1cmdG''@;'; put 'put ''Ky93QUY0QUVBRFJ6Ky91dmkvd0FPNEFFQS9FajcrN1M1L3dBWDRBRUE3cFAzOTJpaC93QWc0QUVBNDl6RnhSdUsvd0FwNEFFQTFmeDZlZ0YzL3dBeTRBRUFEUnorL3V2aS93QTc0QUVBQXp6OC9NWEEvd0JFNEFFQTlGejYrcCsxL3dCTjRBRUE3cFAzOTJpaC93Qlc0QUVBNDl6RnhSdUsvd0Jm''@;'; put 'put ''NEFFQTFmeDZlZ0YzL3dCbzRBRUFEUnorL3V2aS93Qng0QUVBQXp6OC9NWEEvd0I2NEFFQTlGejYrcCsxL3dDRDRBRUE3cFAzOTJpaC93Q000QUVBNXNQZDNUU1gvd0NWNEFFQTRQMnVyZ0YrL3dDZTRBRUExZng2ZWdGMy93Q240QUVBRGd6Ly8vZnovd0N3NEFFQUF5RDkvZURkL3dDNTRBRUFB''@;'; put 'put ''eno4L01YQS93REM0QUVBOUZ6NitwKzEvd0RMNEFFQTdwUDM5MmloL3dEVTRBRUE1c1BkM1RTWC93RGQ0QUVBNFAydXJnRisvd0RtNEFFQTFmeDZlZ0YzL3dEdjRBRUFEZ3ovLy9mei93RDQ0QUVBQXlEOS9lRGQvd0FCNFFFQUF6ejgvTVhBL3dBSzRRRUE5Rno2K3ArMS93QVQ0UUVBN3BQMzky''@;'; put 'put ''aWgvd0FjNFFFQTVzUGQzVFNYL3dBbDRRRUE0UDJ1cmdGKy93QXU0UUVBMWZ4NmVnRjMvd0EzNFFFQXgvOXFTUUJxL3dCQTRRRUE5ZitscFFBbS93Qk00UUVBcDZ1Vk1UYVYvd0JaNFFFQUF0RFgxekFuL3dCbDRRRUFDcmowOUcxRC93Qng0UUVBRkozOS9hNWgvd0I5NFFFQUhtNysvdUNRL3dD''@;'; put 'put ''SjRRRUFpQmo0NFBQNC93Q1Y0UUVBaWtQcHE5bnAvd0NoNFFFQWozSFJkSzNSL3dDdDRRRUFsNTIwUlhXMC93QzU0UUVBOWYrbHBRQW0vd0RGNFFFQWw1MjBSWFcwL3dEUzRRRUFwNnVWTVRhVi93RGY0UUVBQXREWDF6QW4vd0RyNFFFQUNyajA5RzFEL3dEMzRRRUFGSjM5L2E1aC93QUQ0Z0VB''@;'; put 'put ''SG03Ky91Q1Evd0FQNGdFQUtrRC8vLysvL3dBYjRnRUFpQmo0NFBQNC93QW40Z0VBaWtQcHE5bnAvd0F6NGdFQWozSFJkSzNSL3dBLzRnRUFEYVQ4L0kxWi93Qks0Z0VBS2tELy8vKy8vd0JWNGdFQWoxYmJrYi9iL3dCZzRnRUEvdUhYMXhrYy93QnI0Z0VBRkozOS9hNWgvd0IyNGdFQWlrUHBx''@;'; put 'put ''OW5wL3dDQjRnRUFrY0cyTEh1Mi93Q000Z0VBL3VIWDF4a2Mvd0NYNGdFQUZKMzkvYTVoL3dDaTRnRUFLa0QvLy8rLy93Q3Q0Z0VBaWtQcHE5bnAvd0M0NGdFQWtjRzJMSHUyL3dERDRnRUFBdERYMXpBbi93RE80Z0VBRGFUOC9JMVovd0RaNGdFQUhtNysvdUNRL3dEazRnRUFpQmo0NFBQNC93''@;'; put 'put ''RHY0Z0VBajFiYmtiL2Ivd0Q2NGdFQWw1MjBSWFcwL3dBRjR3RUFBdERYMXpBbi93QVE0d0VBRGFUOC9JMVovd0FiNHdFQUhtNysvdUNRL3dBbTR3RUFLa0QvLy8rLy93QXg0d0VBaUJqNDRQUDQvd0E4NHdFQWoxYmJrYi9iL3dCSDR3RUFsNTIwUlhXMC93QlM0d0VBQXREWDF6QW4vd0JkNHdF''@;'; put 'put ''QUNyajA5RzFEL3dCbzR3RUFGSjM5L2E1aC93Qno0d0VBSG03Ky91Q1Evd0IrNHdFQWlCajQ0UFA0L3dDSjR3RUFpa1BwcTlucC93Q1U0d0VBajNIUmRLM1Ivd0NmNHdFQWw1MjBSWFcwL3dDcTR3RUFBdERYMXpBbi93QzE0d0VBQ3JqMDlHMUQvd0RBNHdFQUZKMzkvYTVoL3dETDR3RUFIbTcr''@;'; put 'put ''L3VDUS93RFc0d0VBS2tELy8vKy8vd0RoNHdFQWlCajQ0UFA0L3dEczR3RUFpa1BwcTlucC93RDM0d0VBajNIUmRLM1Ivd0FDNUFFQWw1MjBSWFcwL3dBTjVBRUE5ZitscFFBbS93QVo1QUVBYS85b0FHZzMvd0FtNUFFQUF0RFgxekFuL3dBeTVBRUFDcmowOUcxRC93QSs1QUVBRkozOS9hNWgv''@;'; put 'put ''d0JLNUFFQUgzUCsvdUNML3dCVzVBRUFNMnJ2MmUrTC93Qmk1QUVBUG9MWnB0bHEvd0J1NUFFQVUzbTlacjFqL3dCNjVBRUFaOU9ZR3BoUS93Q0c1QUVBOWYrbHBRQW0vd0NTNUFFQVo5T1lHcGhRL3dDZjVBRUFhLzlvQUdnMy93Q3M1QUVBQXREWDF6QW4vd0M0NUFFQUNyajA5RzFEL3dERTVB''@;'; put 'put ''RUFGSjM5L2E1aC93RFE1QUVBSDNQKy91Q0wvd0RjNUFFQUtrRC8vLysvL3dEbzVBRUFNMnJ2MmUrTC93RDA1QUVBUG9MWnB0bHEvd0FBNVFFQVUzbTlacjFqL3dBTTVRRUFEYVQ4L0kxWi93QVg1UUVBS2tELy8vKy8vd0FpNVFFQVFvalBrYzlnL3dBdDVRRUEvdUhYMXhrYy93QTQ1UUVBRkoz''@;'; put 'put ''OS9hNWgvd0JENVFFQVBvTFpwdGxxL3dCTzVRRUFZdEtXR3BaQi93Qlo1UUVBL3VIWDF4a2Mvd0JrNVFFQUZKMzkvYTVoL3dCdjVRRUFLa0QvLy8rLy93QjY1UUVBUG9MWnB0bHEvd0NGNVFFQVl0S1dHcFpCL3dDUTVRRUFBdERYMXpBbi93Q2I1UUVBRGFUOC9JMVovd0NtNVFFQUgzUCsvdUNM''@;'; put 'put ''L3dDeDVRRUFNMnJ2MmUrTC93Qzg1UUVBUW9qUGtjOWcvd0RINVFFQVo5T1lHcGhRL3dEUzVRRUFBdERYMXpBbi93RGQ1UUVBRGFUOC9JMVovd0RvNVFFQUgzUCsvdUNML3dEejVRRUFLa0QvLy8rLy93RCs1UUVBTTJydjJlK0wvd0FKNWdFQVFvalBrYzlnL3dBVTVnRUFaOU9ZR3BoUS93QWY1''@;'; put 'put ''Z0VBQXREWDF6QW4vd0FxNWdFQUNyajA5RzFEL3dBMTVnRUFGSjM5L2E1aC93QkE1Z0VBSDNQKy91Q0wvd0JMNWdFQU0ycnYyZStML3dCVzVnRUFQb0xacHRscS93Qmg1Z0VBVTNtOVpyMWovd0JzNWdFQVo5T1lHcGhRL3dCMzVnRUFBdERYMXpBbi93Q0M1Z0VBQ3JqMDlHMUQvd0NONWdFQUZK''@;'; put 'put ''MzkvYTVoL3dDWTVnRUFIM1ArL3VDTC93Q2o1Z0VBS2tELy8vKy8vd0N1NWdFQU0ycnYyZStML3dDNTVnRUFQb0xacHRscS93REU1Z0VBVTNtOVpyMWovd0RQNWdFQVo5T1lHcGhRL3dEYTVnRUFEU3orL3VEUy93RGo1Z0VBQ1l2OC9KSnkvd0RzNWdFQUFkUGUzaTBtL3dEMTVnRUFEU1grL3VY''@;'; put 'put ''Wi93RCs1Z0VBQzJ6OC9LNlIvd0FINXdFQUI3UDcrMnBLL3dBUTV3RUEvZURMeXhnZC93QVo1d0VBRFNYKy91WFovd0FpNXdFQUMyejgvSzZSL3dBcjV3RUFCN1A3KzJwSy93QTA1d0VBQWRQZTNpMG0vd0E5NXdFQS9lZWxwUThWL3dCRzV3RUFEU1grL3VYWi93QlA1d0VBREZ6OC9MdWgvd0JZ''@;'; put 'put ''NXdFQUNZdjgvSkp5L3dCaDV3RUFCN1A3KzJwSy93QnE1d0VBQWRQZTNpMG0vd0J6NXdFQS9lZWxwUThWL3dCODV3RUFEU1grL3VYWi93Q0Y1d0VBREZ6OC9MdWgvd0NPNXdFQUNZdjgvSkp5L3dDWDV3RUFCN1A3KzJwSy93Q2c1d0VBQTlEdjd6c3Mvd0NwNXdFQS9lREx5eGdkL3dDeTV3RUEr''@;'; put 'put ''LytabVFBTi93Qzc1d0VBRGcvLy8vWHcvd0RFNXdFQURTeisvdURTL3dETjV3RUFERno4L0x1aC93RFc1d0VBQ1l2OC9KSnkvd0RmNXdFQUI3UDcrMnBLL3dEbzV3RUFBOUR2N3pzcy93RHg1d0VBL2VETHl4Z2Qvd0Q2NXdFQSsvK1ptUUFOL3dBRDZBRUFEZy8vLy9Ydy93QU02QUVBRFN6Ky91''@;'; put 'put ''RFMvd0FWNkFFQURGejgvTHVoL3dBZTZBRUFDWXY4L0pKeS93QW42QUVBQjdQNysycEsvd0F3NkFFQUE5RHY3enNzL3dBNTZBRUEvZURMeXhnZC93QkM2QUVBL2VlbHBROFYvd0JMNkFFQStmOW5ad0FOL3dCVTZBRUEvdUhrNUJvYy93QmQ2QUVBa3JLNE4zNjQvd0JtNkFFQVU1T3ZUYTlLL3dC''@;'; put 'put ''djZBRUEvdUhrNUJvYy93QjQ2QUVBa3JLNE4zNjQvd0NCNkFFQVU1T3ZUYTlLL3dDSzZBRUF6NFNqbUU2ai93Q1Q2QUVBL3VIazVCb2Mvd0NjNkFFQWtySzROMzY0L3dDbDZBRUFVNU92VGE5Sy93Q3U2QUVBejRTam1FNmovd0MzNkFFQUZmLy8vMzhBL3dEQTZBRUEvdUhrNUJvYy93REo2QUVB''@;'; put 'put ''a3JLNE4zNjQvd0RTNkFFQVU1T3ZUYTlLL3dEYjZBRUF6NFNqbUU2ai93RGs2QUVBRmYvLy8zOEEvd0R0NkFFQUtzei8vLzh6L3dEMjZBRUEvdUhrNUJvYy93RC82QUVBa3JLNE4zNjQvd0FJNlFFQVU1T3ZUYTlLL3dBUjZRRUF6NFNqbUU2ai93QWE2UUVBRmYvLy8zOEEvd0FqNlFFQUtzei8v''@;'; put 'put ''Lzh6L3dBczZRRUFEOEdtcGxZby93QTE2UUVBL3VIazVCb2Mvd0ErNlFFQWtySzROMzY0L3dCSDZRRUFVNU92VGE5Sy93QlE2UUVBejRTam1FNmovd0JaNlFFQUZmLy8vMzhBL3dCaTZRRUFLc3ovLy84ei93QnI2UUVBRDhHbXBsWW8vd0IwNlFFQTZIbjM5NEcvL3dCOTZRRUEvdUhrNUJvYy93''@;'; put 'put ''Q0c2UUVBa3JLNE4zNjQvd0NQNlFFQVU1T3ZUYTlLL3dDWTZRRUF6NFNqbUU2ai93Q2g2UUVBRmYvLy8zOEEvd0NxNlFFQUtzei8vLzh6L3dDejZRRUFEOEdtcGxZby93Qzg2UUVBNkhuMzk0Ry8vd0RGNlFFQUFBQ1ptWm1aL3dETzZRRUFjbmpDWnNLbC93RFg2UUVBQzV2OC9JMWkvd0RnNlFF''@;'; put 'put ''QW5FM0xqYURML3dEcDZRRUFjbmpDWnNLbC93RHk2UUVBQzV2OC9JMWkvd0Q3NlFFQW5FM0xqYURML3dBRTZnRUE1R2JuNTRyRC93QU42Z0VBY25qQ1pzS2wvd0FXNmdFQUM1djgvSTFpL3dBZjZnRUFuRTNMamFETC93QW82Z0VBNUdibjU0ckQvd0F4NmdFQU9wdllwdGhVL3dBNjZnRUFjbmpD''@;'; put 'put ''WnNLbC93QkQ2Z0VBQzV2OC9JMWkvd0JNNmdFQW5FM0xqYURML3dCVjZnRUE1R2JuNTRyRC93QmU2Z0VBT3B2WXB0aFUvd0JuNmdFQUl0RC8vOWt2L3dCdzZnRUFjbmpDWnNLbC93QjU2Z0VBQzV2OC9JMWkvd0NDNmdFQW5FM0xqYURML3dDTDZnRUE1R2JuNTRyRC93Q1U2Z0VBT3B2WXB0aFUv''@;'; put 'put ''d0NkNmdFQUl0RC8vOWt2L3dDbTZnRUFHVnJsNWNTVS93Q3Y2Z0VBY25qQ1pzS2wvd0M0NmdFQUM1djgvSTFpL3dEQjZnRUFuRTNMamFETC93REs2Z0VBNUdibjU0ckQvd0RUNmdFQU9wdllwdGhVL3dEYzZnRUFJdEQvLzlrdi93RGw2Z0VBR1ZybDVjU1Uvd0R1NmdFQUFBQ3pzN096L3dEMzZn''@;'; put 'put ''RUFlRlRUamRQSC93QUI2d0VBMDFLOXZJQzkvd0FNNndFQUtrei8vLyt6L3dBVzZ3RUFyeVhhdnJyYS93QWc2d0VBQkl2Nys0Qnkvd0FxNndFQWtHVFRnTEhUL3dBMDZ3RUFGcHo5L2JSaS93QSs2d0VBT29iZXM5NXAvd0JJNndFQTZTLzgvTTNsL3dCUzZ3RUFBQURaMmRuWi93QmM2d0VBZUZU''@;'; put 'put ''VGpkUEgvd0JtNndFQTAxSzl2SUM5L3dCeDZ3RUFUU25yek92Ri93Qjg2d0VBS2t6Ly8vK3ovd0NHNndFQXJ5WGF2cnJhL3dDUTZ3RUFCSXY3KzRCeS93Q2E2d0VBa0dUVGdMSFQvd0NrNndFQUZwejkvYlJpL3dDdTZ3RUFPb2Jlczk1cC93QzQ2d0VBNlMvOC9NM2wvd0RDNndFQUFBRFoyZG5a''@;'; put 'put ''L3dETTZ3RUFlRlRUamRQSC93RFc2d0VBMDFLOXZJQzkvd0RoNndFQVRTbnJ6T3ZGL3dEczZ3RUFKWkQvLysxdi93RDM2d0VBS2t6Ly8vK3ovd0FCN0FFQXJ5WGF2cnJhL3dBTDdBRUFCSXY3KzRCeS93QVY3QUVBa0dUVGdMSFQvd0FmN0FFQUZwejkvYlJpL3dBcDdBRUFPb2Jlczk1cC93QXo3''@;'; put 'put ''QUVBNlMvOC9NM2wvd0E5N0FFQUFBRFoyZG5aL3dCSDdBRUFlRlRUamRQSC93QlE3QUVBS2t6Ly8vK3ovd0JaN0FFQXJ5WGF2cnJhL3dCaTdBRUFlRlRUamRQSC93QnI3QUVBS2t6Ly8vK3ovd0IwN0FFQXJ5WGF2cnJhL3dCOTdBRUFCSXY3KzRCeS93Q0c3QUVBZUZUVGpkUEgvd0NQN0FFQUtr''@;'; put 'put ''ei8vLyt6L3dDWTdBRUFyeVhhdnJyYS93Q2g3QUVBQkl2Nys0Qnkvd0NxN0FFQWtHVFRnTEhUL3dDejdBRUFlRlRUamRQSC93Qzg3QUVBS2t6Ly8vK3ovd0RGN0FFQXJ5WGF2cnJhL3dETzdBRUFCSXY3KzRCeS93RFg3QUVBa0dUVGdMSFQvd0RnN0FFQUZwejkvYlJpL3dEcDdBRUFlRlRUamRQ''@;'; put 'put ''SC93RHk3QUVBS2t6Ly8vK3ovd0Q3N0FFQXJ5WGF2cnJhL3dBRTdRRUFCSXY3KzRCeS93QU43UUVBa0dUVGdMSFQvd0FXN1FFQUZwejkvYlJpL3dBZjdRRUFPb2Jlczk1cC93QW83UUVBZUZUVGpkUEgvd0F4N1FFQUtrei8vLyt6L3dBNjdRRUFyeVhhdnJyYS93QkQ3UUVBQkl2Nys0Qnkvd0JN''@;'; put 'put ''N1FFQWtHVFRnTEhUL3dCVjdRRUFGcHo5L2JSaS93QmU3UUVBT29iZXM5NXAvd0JuN1FFQTZTLzgvTTNsL3dCdzdRRUFlRlRUamRQSC93QjU3UUVBS2t6Ly8vK3ovd0NDN1FFQXJ5WGF2cnJhL3dDTDdRRUFCSXY3KzRCeS93Q1U3UUVBa0dUVGdMSFQvd0NkN1FFQUZwejkvYlJpL3dDbTdRRUFP''@;'; put 'put ''b2Jlczk1cC93Q3Y3UUVBNlMvOC9NM2wvd0M0N1FFQUFBRFoyZG5aL3dEQjdRRUE3ZjJlbmdGQy93RFA3UUVBc1lLaVhrK2kvd0RlN1FFQStyVFYxVDVQL3dEczdRRUFDcmowOUcxRC93RDY3UUVBRkozOS9hNWgvd0FJN2dFQUgzUCsvdUNML3dBVzdnRUFNV0QxNXZXWS93QWs3Z0VBVDBIZHE5''@;'; put 'put ''Mmsvd0F5N2dFQWNuakNac0tsL3dCQTdnRUFqN3U5TW9pOS93Qk83Z0VBN2YyZW5nRkMvd0JjN2dFQWo3dTlNb2k5L3dCcjdnRUFzWUtpWGsraS93QjY3Z0VBK3JUVjFUNVAvd0NJN2dFQUNyajA5RzFEL3dDVzdnRUFGSjM5L2E1aC93Q2s3Z0VBSDNQKy91Q0wvd0N5N2dFQUtrRC8vLysvL3dE''@;'; put 'put ''QTdnRUFNV0QxNXZXWS93RE83Z0VBVDBIZHE5Mmsvd0RjN2dFQWNuakNac0tsL3dEcTdnRUFEYVQ4L0kxWi93RDM3Z0VBS2tELy8vKy8vd0FFN3dFQVVVM1ZtZFdVL3dBUjd3RUEvdUhYMXhrYy93QWU3d0VBRkozOS9hNWgvd0FyN3dFQVQwSGRxOTJrL3dBNDd3RUFqOFM2SzRPNi93QkY3d0VB''@;'; put 'put ''L3VIWDF4a2Mvd0JTN3dFQUZKMzkvYTVoL3dCZjd3RUFLa0QvLy8rLy93QnM3d0VBVDBIZHE5Mmsvd0I1N3dFQWo4UzZLNE82L3dDRzd3RUErclRWMVQ1UC93Q1Q3d0VBRGFUOC9JMVovd0NnN3dFQUgzUCsvdUNML3dDdDd3RUFNV0QxNXZXWS93QzY3d0VBVVUzVm1kV1Uvd0RIN3dFQWo3dTlN''@;'; put 'put ''b2k5L3dEVTd3RUErclRWMVQ1UC93RGg3d0VBRGFUOC9JMVovd0R1N3dFQUgzUCsvdUNML3dENzd3RUFLa0QvLy8rLy93QUk4QUVBTVdEMTV2V1kvd0FWOEFFQVVVM1ZtZFdVL3dBaThBRUFqN3U5TW9pOS93QXY4QUVBK3JUVjFUNVAvd0E4OEFFQUNyajA5RzFEL3dCSjhBRUFGSjM5L2E1aC93''@;'; put 'put ''Qlc4QUVBSDNQKy91Q0wvd0JqOEFFQU1XRDE1dldZL3dCdzhBRUFUMEhkcTkyay93Qjk4QUVBY25qQ1pzS2wvd0NLOEFFQWo3dTlNb2k5L3dDWDhBRUErclRWMVQ1UC93Q2s4QUVBQ3JqMDlHMUQvd0N4OEFFQUZKMzkvYTVoL3dDKzhBRUFIM1ArL3VDTC93REw4QUVBS2tELy8vKy8vd0RZOEFF''@;'; put 'put ''QU1XRDE1dldZL3dEbDhBRUFUMEhkcTkyay93RHk4QUVBY25qQ1pzS2wvd0QvOEFFQWo3dTlNb2k5L3dBTThRRUFrdy8vOFBqLy93QWI4UUVBR0NQNit1dlgvd0F0OFFFQWYvLy9BUC8vL3dBMzhRRUFjWUQvZi8vVS93Qkg4UUVBZncvLzhQLy8vd0JTOFFFQUtocjE5ZlhjL3dCZDhRRUFGenIv''@;'; put 'put ''LytURS93QnA4UUVBQUFBQUFBQUEvd0IwOFFFQUdUSC8vK3ZOL3dDSThRRUFxdi8vQUFELy93Q1M4UUVBd003aWlpdmkvd0NpOFFFQUFMNmxwU29xL3dDdDhRRUFGMlBlM3JpSC93Qzg4UUVBZ0dlZ1g1Nmcvd0RMOFFFQVAvLy9mLzhBL3dEYjhRRUFFZHJTMG1rZS93RHE4UUVBQzYvLy8zOVEv''@;'; put 'put ''d0QxOFFFQW1wUHRaSlh0L3dBSjhnRUFJU0wvLy9qYy93QVg4Z0VBOXVmYzNCUTgvd0FrOGdFQWYvLy9BUC8vL3dBdThnRUFxditMQUFDTC93QTg4Z0VBZi8rTEFJdUwvd0JLOGdFQUh1KzR1SVlML3dCZDhnRUFBQUNwcWFtcC93QnI4Z0VBVmY5a0FHUUEvd0I2OGdFQUFBQ3BxYW1wL3dDSThn''@;'; put 'put ''RUFKMjY5dmJkci93Q1g4Z0VBMVArTGl3Q0wvd0NvOGdFQU9vNXJWV3N2L3dDODhnRUFGLy8vLzR3QS93RE04Z0VBeHNETW1UTE0vd0RjOGdFQUFQK0xpd0FBL3dEcDhnRUFDbm5wNlpaNi93RDU4Z0VBVlQyOGo3eVAvd0FMOHdFQXI0K0xTRDJML3dBZTh3RUFmMmRQTDA5UC93QXg4d0VBZjJk''@;'; put 'put ''UEwwOVAvd0JFOHdFQWdQL1JBTTdSL3dCWDh3RUF4Ly9UbEFEVC93Qm44d0VBNk92Ly94U1Qvd0IxOHdFQWl2Ly9BTC8vL3dDRzh3RUFBQUJwYVdscC93Q1Q4d0VBQUFCcGFXbHAvd0NnOHdFQWxPSC9IcEQvL3dDdzh3RUFBTTZ5c2lJaS93Qy84d0VBSEEvLy8vcncvd0RROHdFQVZjQ0xJb3Np''@;'; put 'put ''L3dEaDh3RUExUC8vL3dELy93RHU4d0VBQUFEYzNOemMvd0Q5OHdFQXFnZi8rUGovL3dBTjlBRUFJLy8vLzljQS93QVg5QUVBSHRuYTJxVWcvd0FtOUFFQUFBQ0FnSUNBL3dBdzlBRUFWZitBQUlBQS93QTc5QUVBTzlEL3JmOHYvd0JNOUFFQUFBQ0FnSUNBL3dCVzlBRUFWUS8vOFAvdy93Qms5''@;'; put 'put ''QUVBNlpiLy8ybTAvd0J4OUFFQUFJek56VnhjL3dDQTlBRUF3ditDU3dDQy93Q005QUVBS2cvLy8vL3cvd0NYOUFFQUptcnc4T2FNL3dDaTlBRUFxaFQ2NXViNi93Q3c5QUVBOEEvLy8vRDEvd0REOUFFQVFQLzhmUHdBL3dEUzlBRUFKakgvLy9yTi93RGs5QUVBaVQvbXJkam0vd0R6OUFFQUFI''@;'; put 'put ''Znc4SUNBL3dBRDlRRUFmeC8vNFAvLy93QVM5UUVBS2lqNit2clMvd0FzOVFFQUFBRFQwOVBUL3dBNzlRRUFWV1R1a082US93Qkw5UUVBQUFEVDA5UFQvd0JhOVFFQStFbi8vN2JCL3dCcDlRRUFESVQvLzZCNi93QjY5UUVBZmRHeUlMS3Evd0NOOVFFQWozWDZoODc2L3dDZjlRRUFsRGlaZDRp''@;'; put 'put ''Wi93Q3o5UUVBbERpWmQ0aVovd0RIOVFFQWx6VGVzTVRlL3dEYjlRRUFLaC8vLy8vZy93RHM5UUVBVmYvL0FQOEEvd0QyOVFFQVZjRE5NczB5L3dBRjlnRUFGUlQ2K3ZEbS93QVE5Z0VBMVAvLy93RC8vd0FkOWdFQUFQK0FnQUFBL3dBcDlnRUFjWUROWnMycS93QS85Z0VBcXYvTkFBRE4vd0JQ''@;'; put 'put ''OWdFQXpKalR1bFhUL3dCaDlnRUF0M3piazNEYi93Qno5Z0VBWjZtelBMTngvd0NIOWdFQXNJL3VlMmp1L3dDYzlnRUFiLy82QVBxYS93Q3o5Z0VBZmFmUlNOSE0vd0RJOWdFQTVPVEh4eFdGL3dEZDlnRUFxc1p3R1Jsdy93RHY5Z0VBYWduLzlmLzYvd0QrOWdFQUJCNy8vK1RoL3dBTjl3RUFH''@;'; put 'put ''a24vLytTMS93QWI5d0VBR1ZILy85NnQvd0FzOXdFQXF2K0FBQUNBL3dBMjl3RUFHeGY5L2ZYbS93QkQ5d0VBS3YrQWdJQUEvd0JPOXdFQU9NQ09hNDRqL3dCZDl3RUFHLy8vLzZVQS93QnA5d0VBQy8vLy8wVUEvd0I0OXdFQTFudmEybkRXL3dDRTl3RUFKa2p1N3VpcS93Q1g5d0VBVldUN21Q''@;'; put 'put ''dVkvd0NtOXdFQWYwUHVyKzd1L3dDNTl3RUE4WHpiMjNDVC93RE05d0VBR2luLy8rL1Yvd0RjOXdFQUZFYi8vOXE1L3dEcjl3RUFGTEROellVLy93RDE5d0VBOXovLy84REwvd0QvOXdFQTFFYmQzYURkL3dBSitBRUFoRHZtc09EbS93QVorQUVBMVArQWdBQ0Evd0FsK0FFQUFQLy8vd0FBL3dB''@;'; put 'put ''dStBRUFBRDI4dkkrUC93QTkrQUVBbjdYaFFXbmgvd0JNK0FFQUVkeUxpMFVUL3dCZCtBRUFCSXI2K29CeS93QnArQUVBRTVyMDlLUmcvd0I1K0FFQVo2cUxMb3RYL3dDSCtBRUFFUkQvLy9YdS93Q1YrQUVBRGJlZ29GSXQvd0NoK0FFQUFBREF3TURBL3dDdCtBRUFpMnpyaDg3ci93QzYrQUVB''@;'; put 'put ''cjQvTmFsck4vd0RKK0FFQWxEaVFjSUNRL3dEWStBRUFsRGlRY0lDUS93RG4rQUVBQUFYLy8vcjYvd0R4K0FFQWF2Ly9BUDkvL3dBQytRRUFrcHUwUm9LMC93QVIrUUVBR0ZUUzByU00vd0FhK1FFQWYvK0FBSUNBL3dBaytRRUExQjNZMkwvWS93QXgrUUVBQnJqLy8yTkgvd0E5K1FFQWU3YmdR''@;'; put 'put ''T0RRL3dCTStRRUExSFB1N29MdS93QlkrUUVBRzBUMTlkNnovd0JqK1FFQUFBRC8vLy8vL3dCdStRRUFBQUQxOWZYMS93QisrUUVBS3YvLy8vOEEvd0NLK1FFQU9NRE5tczB5L3dDYitRRUFMVVA4OS95NS93Q2srUUVBUkZ2ZHJkMk8vd0N0K1FFQVlyS2pNYU5VL3dDMitRRUFLakwvLy8vTS93''@;'; put 'put ''Qy8rUUVBUGxYbXd1YVovd0RJK1FFQVZXVEdlTVo1L3dEUitRRUFZN3VFSTRSRC93RGErUUVBS2pMLy8vL00vd0RqK1FFQVBsWG13dWFaL3dEcytRRUFWV1RHZU1aNS93RDErUUVBWXJLak1hTlUvd0QrK1FFQWEvOW9BR2czL3dBSCtnRUFLakwvLy8vTS93QVErZ0VBTjFIdzJmQ2ovd0FaK2dF''@;'; put 'put ''QVJGdmRyZDJPL3dBaStnRUFWV1RHZU1aNS93QXIrZ0VBWXJLak1hTlUvd0EwK2dFQWEvOW9BR2czL3dBOStnRUFLakwvLy8vTS93QkcrZ0VBTjFIdzJmQ2ovd0JQK2dFQVJGdmRyZDJPL3dCWStnRUFWV1RHZU1aNS93QmgrZ0VBWUo2clFhdGQvd0JxK2dFQVk3dUVJNFJEL3dCeitnRUFiUDlh''@;'; put 'put ''QUZveS93QjgrZ0VBS2huLy8vL2wvd0NGK2dFQUxVUDg5L3k1L3dDTytnRUFOMUh3MmZDai93Q1grZ0VBUkZ2ZHJkMk8vd0NnK2dFQVZXVEdlTVo1L3dDcCtnRUFZSjZyUWF0ZC93Q3krZ0VBWTd1RUk0UkQvd0M3K2dFQWJQOWFBRm95L3dERStnRUFLaG4vLy8vbC93RE4rZ0VBTFVQODkveTUv''@;'; put 'put ''d0RXK2dFQU4xSHcyZkNqL3dEZitnRUFSRnZkcmQyTy93RG8rZ0VBVldUR2VNWjUvd0R4K2dFQVlKNnJRYXRkL3dENitnRUFZN3VFSTRSRC93QUQrd0VBYS85b0FHZzMvd0FNK3dFQWJ2OUZBRVVwL3dBVit3RUFNVW40N2ZpeC93QWcrd0VBZFdITmY4Mjcvd0FyK3dFQWtNSzRMSCs0L3dBMit3''@;'; put 'put ''RUFLakwvLy8vTS93QkIrd0VBWTBMYW9kcTAvd0JNK3dFQWhLckVRYmJFL3dCWCt3RUFsc3VvSWw2by93Qmkrd0VBS2pMLy8vL00vd0J0K3dFQVkwTGFvZHEwL3dCNCt3RUFoS3JFUWJiRS93Q0Qrd0VBa01LNExIKzQvd0NPK3dFQXBMK1VKVFNVL3dDWit3RUFLakwvLy8vTS93Q2srd0VBUlRy''@;'; put 'put ''cHgrbTAvd0N2K3dFQWRXSE5mODI3L3dDNit3RUFoS3JFUWJiRS93REYrd0VBa01LNExIKzQvd0RRK3dFQXBMK1VKVFNVL3dEYit3RUFLakwvLy8vTS93RG0rd0VBUlRycHgrbTAvd0R4K3dFQWRXSE5mODI3L3dEOCt3RUFoS3JFUWJiRS93QUgvQUVBaTlqQUhaSEEvd0FTL0FFQWxzdW9JbDZv''@;'; put 'put ''L3dBZC9BRUFudWVFREN5RS93QW8vQUVBS2liLy8vL1ovd0F6L0FFQU1VbjQ3Zml4L3dBKy9BRUFSVHJweCttMC93QkovQUVBZFdITmY4Mjcvd0JVL0FFQWhLckVRYmJFL3dCZi9BRUFpOWpBSFpIQS93QnEvQUVBbHN1b0lsNm8vd0IxL0FFQW51ZUVEQ3lFL3dDQS9BRUFLaWIvLy8vWi93Q0wv''@;'; put 'put ''QUVBTVVuNDdmaXgvd0NXL0FFQVJUcnB4K20wL3dDaC9BRUFkV0hOZjgyNy93Q3MvQUVBaEtyRVFiYkUvd0MzL0FFQWk5akFIWkhBL3dEQy9BRUFsc3VvSWw2by93RE4vQUVBcEwrVUpUU1Uvd0RZL0FFQW51ZFlDQjFZL3dEai9BRUFKVUwvLy9lOC93RHUvQUVBSEsvKy9zUlAvd0Q1L0FFQUVP''@;'; put 'put ''N1oyVjhPL3dBRS9RRUFLaXIvLy8vVS93QVAvUUVBSEhEKy90bU8vd0FhL1FFQUZ0WCsvcGtwL3dBbC9RRUFEL3pNekV3Qy93QXcvUUVBS2lyLy8vL1Uvd0E3L1FFQUhIRCsvdG1PL3dCRy9RRUFGdFgrL3BrcC93QlIvUUVBRU83WjJWOE8vd0JjL1FFQURmaVptVFFFL3dCbi9RRUFLaXIvLy8v''@;'; put 'put ''VS93QnkvUUVBSDIzKy91T1Ivd0I5L1FFQUhLLysvc1JQL3dDSS9RRUFGdFgrL3BrcC93Q1QvUUVBRU83WjJWOE8vd0NlL1FFQURmaVptVFFFL3dDcC9RRUFLaXIvLy8vVS93QzAvUUVBSDIzKy91T1Ivd0MvL1FFQUhLLysvc1JQL3dESy9RRUFGdFgrL3BrcC93RFYvUUVBRXVuczdIQVUvd0Rn''@;'; put 'put ''L1FFQUQvek16RXdDL3dEci9RRUFEUGVNakMwRS93RDIvUUVBS2huLy8vL2wvd0FCL2dFQUpVTC8vL2U4L3dBTS9nRUFIMjMrL3VPUi93QVgvZ0VBSEsvKy9zUlAvd0FpL2dFQUZ0WCsvcGtwL3dBdC9nRUFFdW5zN0hBVS93QTQvZ0VBRC96TXpFd0Mvd0JEL2dFQURQZU1qQzBFL3dCTy9nRUFL''@;'; put 'put ''aG4vLy8vbC93QlovZ0VBSlVMLy8vZTgvd0JrL2dFQUgyMysvdU9SL3dCdi9nRUFISy8rL3NSUC93QjYvZ0VBRnRYKy9wa3Avd0NGL2dFQUV1bnM3SEFVL3dDUS9nRUFEL3pNekV3Qy93Q2IvZ0VBRGZpWm1UUUUvd0NtL2dFQURmQm1aaVVHL3dDeC9nRUFJbC8vLysyZy93QzgvZ0VBR0xMKy9y''@;'; put 'put ''Sk0vd0RIL2dFQUJkM3c4RHNnL3dEUy9nRUFLazMvLy8reS93RGQvZ0VBSGFMKy9zeGMvd0RvL2dFQUVjTDkvWTA4L3dEei9nRUEvdUhqNHhvYy93RCsvZ0VBS2szLy8vK3kvd0FKL3dFQUhhTCsvc3hjL3dBVS93RUFFY0w5L1kwOC93QWYvd0VBQmQzdzhEc2cvd0FxL3dFQTl2Kzl2UUFtL3dB''@;'; put 'put ''MS93RUFLazMvLy8reS93QkEvd0VBSG9qKy90bDIvd0JML3dFQUdMTCsvckpNL3dCVy93RUFFY0w5L1kwOC93Qmgvd0VBQmQzdzhEc2cvd0JzL3dFQTl2Kzl2UUFtL3dCMy93RUFLazMvLy8reS93Q0Mvd0VBSG9qKy90bDIvd0NOL3dFQUdMTCsvckpNL3dDWS93RUFFY0w5L1kwOC93Q2ovd0VB''@;'; put 'put ''QjlUOC9FNHEvd0N1L3dFQS91SGo0eG9jL3dDNS93RUE5Zit4c1FBbS93REUvd0VBS2pMLy8vL00vd0RQL3dFQUlsLy8vKzJnL3dEYS93RUFIb2orL3RsMi93RGwvd0VBR0xMKy9ySk0vd0R3L3dFQUVjTDkvWTA4L3dENy93RUFCOVQ4L0U0cS93QUdBQUlBL3VIajR4b2Mvd0FSQUFJQTlmK3hz''@;'; put 'put ''UUFtL3dBY0FBSUFLakwvLy8vTS93QW5BQUlBSWwvLy8rMmcvd0F5QUFJQUhvaisvdGwyL3dBOUFBSUFHTEwrL3JKTS93QklBQUlBRWNMOS9ZMDgvd0JUQUFJQUI5VDgvRTRxL3dCZUFBSUEvdUhqNHhvYy93QnBBQUlBOXYrOXZRQW0vd0IwQUFJQTh2K0FnQUFtL3dCL0FBSUFrdy8vOFBqLy93''@;'; put 'put ''Q0pBQUlBR0NQNit1dlgvd0NXQUFJQUZ5VC8vKy9iL3dDa0FBSUFGeVR1N3QvTS93Q3lBQUlBRnlUTnpjQ3cvd0RBQUFJQUdDS0xpNE40L3dET0FBSUFjWUQvZi8vVS93RFpBQUlBY1lEL2YvL1Uvd0RsQUFJQWNZRHVkdTdHL3dEeEFBSUFjWUROWnMycS93RDlBQUlBY1lDTFJZdDAvd0FKQVFJ''@;'; put 'put ''QWZ3Ly84UC8vL3dBUEFRSUFmdy8vOFAvLy93QVdBUUlBZncvdTRPN3Uvd0FkQVFJQWZ3N053YzNOL3dBa0FRSUFmdzZMZzR1TC93QXJBUUlBS2hyMTlmWGMvd0F4QVFJQUZ6ci8vK1RFL3dBNEFRSUFGenIvLytURS93QkFBUUlBRnpydTd0VzMvd0JJQVFJQUZqck56YmVlL3dCUUFRSUFGenFM''@;'; put 'put ''aTMxci93QmlHQUlBQUFBQUFBQUEvd0JZQVFJQUdUSC8vK3ZOL3dCbkFRSUFxdi8vQUFELy93QnNBUUlBcXYvL0FBRC8vd0J5QVFJQXF2L3VBQUR1L3dCNEFRSUFxdi9OQUFETi93QitBUUlBcXYrTEFBQ0wvd0NFQVFJQXdNN2lpaXZpL3dDUEFRSUFBTDZscFNvcS93Q1ZBUUlBQUwvLy8wQkEv''@;'; put 'put ''d0NjQVFJQUFML3U3anM3L3dDakFRSUFBTC9OelRNei93Q3FBUUlBQUw2TGl5TWovd0N4QVFJQUYyUGUzcmlIL3dDN0FRSUFGMlQvLzlPYi93REdBUUlBRjJQdTdzV1Ivd0RSQVFJQUYyUE56YXA5L3dEY0FRSUFGMk9MaTNOVi93RG5BUUlBZ0dlZ1g1Nmcvd0R4QVFJQWcyZi9tUFgvL3dEOEFR''@;'; put 'put ''SUFnMmJ1anVYdS93QUhBZ0lBZzJmTmVzWE4vd0FTQWdJQWcyYUxVNGFML3dBZEFnSUFQLy8vZi84QS93QW9BZ0lBUC8vL2YvOEEvd0EwQWdJQVAvL3VkdTRBL3dCQUFnSUFQLy9OWnMwQS93Qk1BZ0lBUC8rTFJZc0Evd0JZQWdJQUVkclMwbWtlL3dCaUFnSUFFZHYvLzM4ay93QnRBZ0lBRWR2''@;'; put 'put ''dTduWWgvd0I0QWdJQUVkck56V1lkL3dDREFnSUFFZHlMaTBVVC93Q09BZ0lBQzYvLy8zOVEvd0NVQWdJQUI2bi8vM0pXL3dDYkFnSUFCcW51N21wUS93Q2lBZ0lBQnFuTnpWdEYvd0NwQWdJQUJxaUxpejR2L3dDd0FnSUFtcFB0WkpYdC93Qy9BZ0lBSVNMLy8vamMvd0RJQWdJQUlTTC8vL2pj''@;'; put 'put ''L3dEU0FnSUFJaVB1N3VqTi93RGNBZ0lBSWlMTnpjaXgvd0RtQWdJQUl5S0xpNGg0L3dEd0FnSUE5dWZjM0JROC93RDRBZ0lBZi8vL0FQLy8vd0Q5QWdJQWYvLy9BUC8vL3dBREF3SUFmLy91QU83dS93QUpBd0lBZi8vTkFNM04vd0FQQXdJQWYvK0xBSXVML3dBVkF3SUFIdSs0dUlZTC93QWpB''@;'; put 'put ''d0lBSHZELy83a1Avd0F5QXdJQUh2RHU3cTBPL3dCQkF3SUFIdkROelpVTS93QlFBd0lBSHZDTGkyVUkvd0JmQXdJQVZmOWtBR1FBL3dCcEF3SUFKMjY5dmJkci93QnpBd0lBT281clZXc3Yvd0NDQXdJQU9vLy95djl3L3dDU0F3SUFPby91dk81by93Q2lBd0lBT28vTm9zMWEvd0N5QXdJQU9v''@;'; put 'put ''K0xib3M5L3dEQ0F3SUFGLy8vLzR3QS93RE5Bd0lBRmYvLy8zOEEvd0RaQXdJQUZmL3U3bllBL3dEbEF3SUFGZi9OeldZQS93RHhBd0lBRmYrTGkwVUEvd0Q5QXdJQXhzRE1tVExNL3dBSUJBSUF4c0gvdno3Ly93QVVCQUlBeHNEdXNqcnUvd0FnQkFJQXhzRE5takxOL3dBc0JBSUF4c0NMYUNL''@;'; put 'put ''TC93QTRCQUlBQ25ucDZaWjYvd0JEQkFJQVZUMjhqN3lQL3dCUUJBSUFWVDcvd2YvQi93QmVCQUlBVlQ3dXRPNjAvd0JzQkFJQVZUN05tODJiL3dCNkJBSUFWVDZMYVl0cC93Q0lCQUlBcjQrTFNEMkwvd0NXQkFJQWYyZFBMMDlQL3dDa0JBSUFmMmovbC8vLy93Q3pCQUlBZjJmdWplN3Uvd0RD''@;'; put 'put ''QkFJQWYyak5lYzNOL3dEUkJBSUFmMmlMVW91TC93RGdCQUlBZjJkUEwwOVAvd0R1QkFJQWdQL1JBTTdSL3dEOEJBSUF4Ly9UbEFEVC93QUhCUUlBNk92Ly94U1Qvd0FRQlFJQTZPdi8veFNUL3dBYUJRSUE2T3Z1N2hLSi93QWtCUUlBNk92TnpSQjIvd0F1QlFJQTUreUxpd3BRL3dBNEJRSUFp''@;'; put 'put ''di8vQUwvLy93QkVCUUlBaXYvL0FMLy8vd0JSQlFJQWl2L3VBTEx1L3dCZUJRSUFpdi9OQUpyTi93QnJCUUlBaXYrTEFHaUwvd0I0QlFJQUFBQnBhV2xwL3dDQUJRSUFBQUJwYVdscC93Q0lCUUlBbE9IL0hwRC8vd0NUQlFJQWxPSC9IcEQvL3dDZkJRSUFsT0h1SElidS93Q3JCUUlBbE9ITkdI''@;'; put 'put ''VE4vd0MzQlFJQWxPR0xFRTZML3dEREJRSUFBTTZ5c2lJaS93RE5CUUlBQU0vLy96QXcvd0RZQlFJQUFNL3U3aXdzL3dEakJRSUFBTS9OelNZbS93RHVCUUlBQU0rTGl4b2Evd0Q1QlFJQUhBLy8vL3J3L3dBRkJnSUFWY0NMSW9zaS93QVJCZ0lBQUFEYzNOemMvd0FiQmdJQXFnZi8rUGovL3dB''@;'; put 'put ''bUJnSUFJLy8vLzljQS93QXJCZ0lBSS8vLy85Y0Evd0F4QmdJQUkvL3U3c2tBL3dBM0JnSUFJLy9OemEwQS93QTlCZ0lBSS8rTGkzVUEvd0JEQmdJQUh0bmEycVVnL3dCTkJnSUFIdHIvLzhFbC93QllCZ0lBSHRydTdyUWkvd0JqQmdJQUh0ck56WnNkL3dCdUJnSUFIdHFMaTJrVS93QjVCZ0lB''@;'; put 'put ''QUFEQXdNREEvd0IrQmdJQUFBQUFBQUFBL3dDRUJnSUFBQUFEQXdNRC93Q0tCZ0lBQUFBYUdob2Evd0NSQmdJQUFBRC8vLy8vL3dDWkJnSUFBQUFjSEJ3Yy93Q2dCZ0lBQUFBZkh4OGYvd0NuQmdJQUFBQWhJU0VoL3dDdUJnSUFBQUFrSkNRay93QzFCZ0lBQUFBbUppWW0vd0M4QmdJQUFBQXBL''@;'; put 'put ''U2twL3dEREJnSUFBQUFyS3lzci93REtCZ0lBQUFBdUxpNHUvd0RSQmdJQUFBQXdNREF3L3dEWUJnSUFBQUFGQlFVRi93RGVCZ0lBQUFBek16TXovd0RsQmdJQUFBQTJOalkyL3dEc0JnSUFBQUE0T0RnNC93RHpCZ0lBQUFBN096czcvd0Q2QmdJQUFBQTlQVDA5L3dBQkJ3SUFBQUJBUUVCQS93''@;'; put 'put ''QUlCd0lBQUFCQ1FrSkMvd0FQQndJQUFBQkZSVVZGL3dBV0J3SUFBQUJIUjBkSC93QWRCd0lBQUFCS1NrcEsvd0FrQndJQUFBQUlDQWdJL3dBcUJ3SUFBQUJOVFUxTi93QXhCd0lBQUFCUFQwOVAvd0E0QndJQUFBQlNVbEpTL3dBL0J3SUFBQUJVVkZSVS93QkdCd0lBQUFCWFYxZFgvd0JOQndJ''@;'; put 'put ''QUFBQlpXVmxaL3dCVUJ3SUFBQUJjWEZ4Yy93QmJCd0lBQUFCZVhsNWUvd0JpQndJQUFBQmhZV0ZoL3dCcEJ3SUFBQUJqWTJOai93QndCd0lBQUFBS0Nnb0svd0IyQndJQUFBQm1abVptL3dCOUJ3SUFBQUJwYVdscC93Q0VCd0lBQUFCcmEydHIvd0NMQndJQUFBQnVibTV1L3dDU0J3SUFBQUJ3''@;'; put 'put ''Y0hCdy93Q1pCd0lBQUFCemMzTnovd0NnQndJQUFBQjFkWFYxL3dDbkJ3SUFBQUI0ZUhoNC93Q3VCd0lBQUFCNmVucDYvd0MxQndJQUFBQjlmWDE5L3dDOEJ3SUFBQUFORFEwTi93RENCd0lBQUFCL2YzOS8vd0RKQndJQUFBQ0Nnb0tDL3dEUUJ3SUFBQUNGaFlXRi93RFhCd0lBQUFDSGg0ZUgv''@;'; put 'put ''d0RlQndJQUFBQ0tpb3FLL3dEbEJ3SUFBQUNNakl5TS93RHNCd0lBQUFDUGo0K1Avd0R6QndJQUFBQ1JrWkdSL3dENkJ3SUFBQUNVbEpTVS93QUJDQUlBQUFDV2xwYVcvd0FJQ0FJQUFBQVBEdzhQL3dBT0NBSUFBQUNabVptWi93QVZDQUlBQUFDY25KeWMvd0FjQ0FJQUFBQ2VucDZlL3dBakNB''@;'; put 'put ''SUFBQUNob2FHaC93QXFDQUlBQUFDam82T2ovd0F4Q0FJQUFBQ21wcWFtL3dBNENBSUFBQUNvcUtpby93QS9DQUlBQUFDcnE2dXIvd0JHQ0FJQUFBQ3RyYTJ0L3dCTkNBSUFBQUN3c0xDdy93QlVDQUlBQUFBU0VoSVMvd0JhQ0FJQUFBQ3pzN096L3dCaENBSUFBQUMxdGJXMS93Qm9DQUlBQUFD''@;'; put 'put ''NHVMaTQvd0J2Q0FJQUFBQzZ1cnE2L3dCMkNBSUFBQUM5dmIyOS93QjlDQUlBQUFDL3Y3Ky8vd0NFQ0FJQUFBREN3c0xDL3dDTENBSUFBQURFeE1URS93Q1NDQUlBQUFESHg4Zkgvd0NaQ0FJQUFBREp5Y25KL3dDZ0NBSUFBQUFVRkJRVS93Q21DQUlBQUFETXpNek0vd0N0Q0FJQUFBRFB6OC9Q''@;'; put 'put ''L3dDMENBSUFBQURSMGRIUi93QzdDQUlBQUFEVTFOVFUvd0RDQ0FJQUFBRFcxdGJXL3dESkNBSUFBQURaMmRuWi93RFFDQUlBQUFEYjI5dmIvd0RYQ0FJQUFBRGUzdDdlL3dEZUNBSUFBQURnNE9EZy93RGxDQUlBQUFEajQrUGovd0RzQ0FJQUFBQVhGeGNYL3dEeUNBSUFBQURsNWVYbC93RDVD''@;'; put 'put ''QUlBQUFEbzZPam8vd0FBQ1FJQUFBRHI2K3ZyL3dBSENRSUFBQUR0N2UzdC93QU9DUUlBQUFEdzhQRHcvd0FWQ1FJQUFBRHk4dkx5L3dBY0NRSUFBQUQxOWZYMS93QWpDUUlBQUFEMzkvZjMvd0FxQ1FJQUFBRDYrdnI2L3dBeENRSUFBQUQ4L1B6OC93QTRDUUlBVmYvL0FQOEEvd0ErQ1FJQVZm''@;'; put 'put ''Ly9BUDhBL3dCRkNRSUFWZi91QU80QS93Qk1DUUlBVmYvTkFNMEEvd0JUQ1FJQVZmK0xBSXNBL3dCYUNRSUFPOUQvcmY4di93Qm1DUUlBQUFEQXdNREEvd0JyQ1FJQUFBQUFBQUFBL3dCeENRSUFBQUFEQXdNRC93QjNDUUlBQUFBYUdob2Evd0IrQ1FJQUFBRC8vLy8vL3dDR0NRSUFBQUFjSEJ3''@;'; put 'put ''Yy93Q05DUUlBQUFBZkh4OGYvd0NVQ1FJQUFBQWhJU0VoL3dDYkNRSUFBQUFrSkNRay93Q2lDUUlBQUFBbUppWW0vd0NwQ1FJQUFBQXBLU2twL3dDd0NRSUFBQUFyS3lzci93QzNDUUlBQUFBdUxpNHUvd0MrQ1FJQUFBQXdNREF3L3dERkNRSUFBQUFGQlFVRi93RExDUUlBQUFBek16TXovd0RT''@;'; put 'put ''Q1FJQUFBQTJOalkyL3dEWkNRSUFBQUE0T0RnNC93RGdDUUlBQUFBN096czcvd0RuQ1FJQUFBQTlQVDA5L3dEdUNRSUFBQUJBUUVCQS93RDFDUUlBQUFCQ1FrSkMvd0Q4Q1FJQUFBQkZSVVZGL3dBRENnSUFBQUJIUjBkSC93QUtDZ0lBQUFCS1NrcEsvd0FSQ2dJQUFBQUlDQWdJL3dBWENnSUFB''@;'; put 'put ''QUJOVFUxTi93QWVDZ0lBQUFCUFQwOVAvd0FsQ2dJQUFBQlNVbEpTL3dBc0NnSUFBQUJVVkZSVS93QXpDZ0lBQUFCWFYxZFgvd0E2Q2dJQUFBQlpXVmxaL3dCQkNnSUFBQUJjWEZ4Yy93QklDZ0lBQUFCZVhsNWUvd0JQQ2dJQUFBQmhZV0ZoL3dCV0NnSUFBQUJqWTJOai93QmRDZ0lBQUFBS0Nn''@;'; put 'put ''b0svd0JqQ2dJQUFBQm1abVptL3dCcUNnSUFBQUJwYVdscC93QnhDZ0lBQUFCcmEydHIvd0I0Q2dJQUFBQnVibTV1L3dCL0NnSUFBQUJ3Y0hCdy93Q0dDZ0lBQUFCemMzTnovd0NOQ2dJQUFBQjFkWFYxL3dDVUNnSUFBQUI0ZUhoNC93Q2JDZ0lBQUFCNmVucDYvd0NpQ2dJQUFBQjlmWDE5L3dD''@;'; put 'put ''cENnSUFBQUFORFEwTi93Q3ZDZ0lBQUFCL2YzOS8vd0MyQ2dJQUFBQ0Nnb0tDL3dDOUNnSUFBQUNGaFlXRi93REVDZ0lBQUFDSGg0ZUgvd0RMQ2dJQUFBQ0tpb3FLL3dEU0NnSUFBQUNNakl5TS93RFpDZ0lBQUFDUGo0K1Avd0RnQ2dJQUFBQ1JrWkdSL3dEbkNnSUFBQUNVbEpTVS93RHVDZ0lB''@;'; put 'put ''QUFDV2xwYVcvd0QxQ2dJQUFBQVBEdzhQL3dEN0NnSUFBQUNabVptWi93QUNDd0lBQUFDY25KeWMvd0FKQ3dJQUFBQ2VucDZlL3dBUUN3SUFBQUNob2FHaC93QVhDd0lBQUFDam82T2ovd0FlQ3dJQUFBQ21wcWFtL3dBbEN3SUFBQUNvcUtpby93QXNDd0lBQUFDcnE2dXIvd0F6Q3dJQUFBQ3Ry''@;'; put 'put ''YTJ0L3dBNkN3SUFBQUN3c0xDdy93QkJDd0lBQUFBU0VoSVMvd0JIQ3dJQUFBQ3pzN096L3dCT0N3SUFBQUMxdGJXMS93QlZDd0lBQUFDNHVMaTQvd0JjQ3dJQUFBQzZ1cnE2L3dCakN3SUFBQUM5dmIyOS93QnFDd0lBQUFDL3Y3Ky8vd0J4Q3dJQUFBREN3c0xDL3dCNEN3SUFBQURFeE1URS93''@;'; put 'put ''Qi9Dd0lBQUFESHg4Zkgvd0NHQ3dJQUFBREp5Y25KL3dDTkN3SUFBQUFVRkJRVS93Q1RDd0lBQUFETXpNek0vd0NhQ3dJQUFBRFB6OC9QL3dDaEN3SUFBQURSMGRIUi93Q29Dd0lBQUFEVTFOVFUvd0N2Q3dJQUFBRFcxdGJXL3dDMkN3SUFBQURaMmRuWi93QzlDd0lBQUFEYjI5dmIvd0RFQ3dJ''@;'; put 'put ''QUFBRGUzdDdlL3dETEN3SUFBQURnNE9EZy93RFNDd0lBQUFEajQrUGovd0RaQ3dJQUFBQVhGeGNYL3dEZkN3SUFBQURsNWVYbC93RG1Dd0lBQUFEbzZPam8vd0R0Q3dJQUFBRHI2K3ZyL3dEMEN3SUFBQUR0N2UzdC93RDdDd0lBQUFEdzhQRHcvd0FDREFJQUFBRHk4dkx5L3dBSkRBSUFBQUQx''@;'; put 'put ''OWZYMS93QVFEQUlBQUFEMzkvZjMvd0FYREFJQUFBRDYrdnI2L3dBZURBSUFBQUQ4L1B6OC93QWxEQUlBVlEvLzhQL3cvd0F1REFJQVZRLy84UC93L3dBNERBSUFWUS91NE83Zy93QkNEQUlBVlE3TndjM0Ivd0JNREFJQVZRNkxnNHVEL3dCV0RBSUE2WmIvLzJtMC93QmVEQUlBNnBILy8yNjAv''@;'; put 'put ''d0JuREFJQTY0M3U3bXFuL3dCd0RBSUE3SWZOeldDUS93QjVEQUlBNnBTTGl6cGkvd0NDREFJQUFJek56VnhjL3dDTURBSUFBSlQvLzJwcS93Q1hEQUlBQUpUdTdtTmovd0NpREFJQUFKWE56VlZWL3dDdERBSUFBSlNMaXpvNi93QzREQUlBd3YrQ1N3Q0Mvd0MvREFJQUtnRC8vLy8rQUFERkRB''@;'; put 'put ''SUFLZy8vLy8vdy93RExEQUlBS2cvLy8vL3cvd0RTREFJQUtnL3U3dTdnL3dEWkRBSUFLZzdOemMzQi93RGdEQUlBS2c2TGk0dUQvd0RuREFJQUptcnc4T2FNL3dEdERBSUFKM0QvLy9hUC93RDBEQUlBSjNEdTd1YUYvd0Q3REFJQUoyL056Y1p6L3dBQ0RRSUFKMitMaTRaTy93QUpEUUlBcWhU''@;'; put 'put ''NjV1YjYvd0FTRFFJQThBLy8vL0QxL3dBZ0RRSUE4QS8vLy9EMS93QXZEUUlBN3cvdTd1RGwvd0ErRFFJQThBN056Y0hGL3dCTkRRSUE3dzZMaTRPRy93QmNEUUlBUVAvOGZQd0Evd0JtRFFJQUpqSC8vL3JOL3dCekRRSUFKakgvLy9yTi93Q0JEUUlBSlRMdTd1bS8vd0NQRFFJQUpqSE56Y21s''@;'; put 'put ''L3dDZERRSUFKekdMaTRsdy93Q3JEUUlBaVQvbXJkam0vd0MxRFFJQWlrRC92Ky8vL3dEQURRSUFpa0R1c3QvdS93RExEUUlBaWovTm1zRE4vd0RXRFFJQWlVQ0xhSU9ML3dEaERRSUFBSGZ3OElDQS93RHNEUUlBZngvLzRQLy8vd0QyRFFJQWZ4Ly80UC8vL3dBQkRnSUFmeC91MGU3dS93QU1E''@;'; put 'put ''Z0lBZngvTnRNM04vd0FYRGdJQWZ4K0xlb3VML3dBaURnSUFJM1B1N3QyQy93QXhEZ0lBSTNULy8reUwvd0JCRGdJQUkzUHU3dHlDL3dCUkRnSUFJM1BOemI1dy93QmhEZ0lBSTNPTGk0Rk0vd0J4RGdJQUtpajYrdnJTL3dDR0RnSUFBQURUMDlQVC93Q1FEZ0lBQUFEVDA5UFQvd0NhRGdJQStF''@;'; put 'put ''bi8vN2JCL3dDa0RnSUErVkgvLzY2NS93Q3ZEZ0lBK0ZIdTdxS3Qvd0M2RGdJQStWRE56WXlWL3dERkRnSUErVkNMaTE5bC93RFFEZ0lBRElULy82QjYvd0RjRGdJQURJVC8vNkI2L3dEcERnSUFDNFR1N3BWeS93RDJEZ0lBRElYTnpZRmkvd0FERHdJQURJV0xpMWRDL3dBUUR3SUFmZEd5SUxL''@;'; put 'put ''cS93QWVEd0lBajNYNmg4NzYvd0FyRHdJQWowLy9zT0wvL3dBNUR3SUFqMC91cE5QdS93QkhEd0lBamsvTmpiYk4vd0JWRHdJQWowNkxZSHVML3dCakR3SUFyNC8vaEhELy93QnlEd0lBbERpWmQ0aVovd0NCRHdJQWxEaVpkNGlaL3dDUUR3SUFselRlc01UZS93Q2ZEd0lBbHpYL3l1SC8vd0N2''@;'; put 'put ''RHdJQWx6WHV2Tkx1L3dDL0R3SUFselhOb3JYTi93RFBEd0lBbGpXTGJudUwvd0RmRHdJQUtoLy8vLy9nL3dEckR3SUFLaC8vLy8vZy93RDREd0lBS2gvdTd1N1Ivd0FGRUFJQUtoL056YzIwL3dBU0VBSUFLaCtMaTR0Ni93QWZFQUlBVmNETk1zMHkvd0FwRUFJQUZSVDYrdkRtL3dBdkVBSUEx''@;'; put 'put ''UC8vL3dELy93QTNFQUlBMVAvLy93RC8vd0JBRUFJQTFQL3U3Z0R1L3dCSkVBSUExUC9OelFETi93QlNFQUlBMVArTGl3Q0wvd0JiRUFJQTc3bXdzREJnL3dCaUVBSUE1TXYvL3pTei93QnFFQUlBNU12dTdqQ24vd0J5RUFJQTVNek56U21RL3dCNkVBSUE1TXVMaXh4aS93Q0NFQUlBY1lETlpz''@;'; put 'put ''MnEvd0NURUFJQXF2L05BQUROL3dDZUVBSUF6SmpUdWxYVC93Q3JFQUlBeTVuLzRHYi8vd0M1RUFJQXk1bnUwVi91L3dESEVBSUF5NW5OdEZMTi93RFZFQUlBeTVxTGVqZUwvd0RqRUFJQXQzemJrM0RiL3dEd0VBSUF0MzMvcTRMLy93RCtFQUlBdDMzdW4zbnUvd0FNRVFJQXQzM05pV2pOL3dB''@;'; put 'put ''YUVRSUF0M3lMWFVlTC93QW9FUUlBWjZtelBMTngvd0EzRVFJQXNJL3VlMmp1L3dCSEVRSUFiLy82QVBxYS93QlpFUUlBZmFmUlNOSE0vd0JwRVFJQTVPVEh4eFdGL3dCNUVRSUFxc1p3R1Jsdy93Q0dFUUlBYWduLzlmLzYvd0NRRVFJQUJCNy8vK1RoL3dDYUVRSUFCQjcvLytUaC93Q2xFUUlB''@;'; put 'put ''QkI3dTd0WFMvd0N3RVFJQUF4M056YmUxL3dDN0VRSUFCUjJMaTMxNy93REdFUUlBR2tuLy8rUzEvd0RQRVFJQUdWSC8vOTZ0L3dEYkVRSUFHVkgvLzk2dC93RG9FUUlBR1ZMdTdzK2gvd0QxRVFJQUdWTE56Yk9ML3dBQ0VnSUFHVktMaTNsZS93QVBFZ0lBcXYrQUFBQ0Evd0FVRWdJQXF2K0FB''@;'; put 'put ''QUNBL3dBZEVnSUFLZ0QvLy8vK0FBQWlFZ0lBR3hmOS9mWG0vd0FxRWdJQU9NQ09hNDRqL3dBMEVnSUFPTUgvd1A4Ky93QS9FZ0lBT01EdXMrNDYvd0JLRWdJQU9NRE5tczB5L3dCVkVnSUFPTUNMYVlzaS93QmdFZ0lBRy8vLy82VUEvd0JuRWdJQUcvLy8vNlVBL3dCdkVnSUFHLy91N3BvQS93''@;'; put 'put ''QjNFZ0lBRy8vTnpZVUEvd0IvRWdJQUcvK0xpMW9BL3dDSEVnSUFDLy8vLzBVQS93Q1JFZ0lBQy8vLy8wVUEvd0NjRWdJQUMvL3U3a0FBL3dDbkVnSUFDLy9OelRjQS93Q3lFZ0lBQy8rTGl5VUEvd0M5RWdJQTFudmEybkRXL3dERUVnSUExbnovLzRQNi93RE1FZ0lBMW56dTducnAvd0RVRWdJ''@;'; put 'put ''QTFuek56V25KL3dEY0VnSUExWHlMaTBlSi93RGtFZ0lBSmtqdTd1aXEvd0R5RWdJQVZXVDdtUHVZL3dEOEVnSUFWV1gvbXYrYS93QUhFd0lBVldUdWtPNlEvd0FTRXdJQVZXVE5mTTE4L3dBZEV3SUFWV1NMVkl0VS93QW9Fd0lBZjBQdXIrN3Uvd0EyRXdJQWYwVC91Ly8vL3dCRkV3SUFmMFR1''@;'; put 'put ''cnU3dS93QlVFd0lBZjBUTmxzM04vd0JqRXdJQWYwT0xab3VML3dCeUV3SUE4WHpiMjNDVC93Q0FFd0lBOFgzLy80S3Ivd0NQRXdJQThYM3U3bm1mL3dDZUV3SUE4WDNOeldpSi93Q3RFd0lBOFh5TGkwZGQvd0M4RXdJQUdpbi8vKy9WL3dESEV3SUFGRWIvLzlxNS93RFJFd0lBRkViLy85cTUv''@;'; put 'put ''d0RjRXdJQUUwWHU3c3V0L3dEbkV3SUFFMFhOemErVi93RHlFd0lBRkVXTGkzZGwvd0Q5RXdJQUZMRE56WVUvL3dBQ0ZBSUE5ei8vLzhETC93QUhGQUlBOVVuLy83WEYvd0FORkFJQTlVbnU3cW00L3dBVEZBSUE5VXJOelpHZS93QVpGQUlBOVVtTGkyTnMvd0FmRkFJQTFFYmQzYURkL3dBa0ZB''@;'; put 'put ''SUExRVQvLzd2Ly93QXFGQUlBMUVUdTdxN3Uvd0F3RkFJQTFFVE56WmJOL3dBMkZBSUExRU9MaTJhTC93QThGQUlBaER2bXNPRG0vd0JIRkFJQXhOM3dvQ0R3L3dCT0ZBSUF2OC8vbXpELy93QldGQUlBd00vdWtTenUvd0JlRkFJQXdNL05mU2JOL3dCbUZBSUF3TStMVlJxTC93QnVGQUlBQVAv''@;'; put 'put ''Ly93QUEvd0J5RkFJQUFQLy8vd0FBL3dCM0ZBSUFBUC91N2dBQS93QjhGQUlBQVAvTnpRQUEvd0NCRkFJQUFQK0xpd0FBL3dDR0ZBSUFBRDI4dkkrUC93Q1FGQUlBQUQ3Ly84SEIvd0NiRkFJQUFEN3U3clMwL3dDbUZBSUFBRDdOelp1Yi93Q3hGQUlBQUQ2TGkybHAvd0M4RkFJQW43WGhRV25o''@;'; put 'put ''L3dER0ZBSUFuN2YvU0hiLy93RFJGQUlBbjdmdVEyN3Uvd0RjRkFJQW43Yk5PbC9OL3dEbkZBSUFuN2VMSjBDTC93RHlGQUlBRWR5TGkwVVQvd0QrRkFJQUJJcjYrb0J5L3dBRkZRSUFDWmIvLzR4cC93QU5GUUlBQ1pidTdvSmkvd0FWRlFJQUNaYk56WEJVL3dBZEZRSUFDWmFMaTB3NS93QWxG''@;'; put 'put ''UUlBRTVyMDlLUmcvd0F3RlFJQVo2cUxMb3RYL3dBNUZRSUFaNnYvVlArZi93QkRGUUlBWjZ2dVR1NlUvd0JORlFJQVo2dk5RODJBL3dCWEZRSUFaNnFMTG90WC93QmhGUUlBRVJELy8vWHUvd0JxRlFJQUVSRC8vL1h1L3dCMEZRSUFFaEh1N3VYZS93QitGUUlBRWhITnpjVy8vd0NJRlFJQUVo''@;'; put 'put ''Q0xpNGFDL3dDU0ZRSUFEYmVnb0ZJdC93Q1pGUUlBRGJqLy80Skgvd0NoRlFJQURianU3bmxDL3dDcEZRSUFEYmpOeldnNS93Q3hGUUlBRGJtTGkwY20vd0M1RlFJQWkyenJoODdyL3dEQkZRSUFrSGovaDg3Ly93REtGUUlBa0hqdWZzRHUvd0RURlFJQWtIak5iS2JOL3dEY0ZRSUFrWGVMU25D''@;'; put 'put ''TC93RGxGUUlBcjQvTmFsck4vd0R2RlFJQXI1RC9nMi8vL3dENkZRSUFyNUR1ZW1mdS93QUZGZ0lBcjVETmFWbk4vd0FRRmdJQXI1Q0xSenlML3dBYkZnSUFsRGlRY0lDUS93QWxGZ0lBbFRqL3h1TC8vd0F3RmdJQWxUanV1ZFB1L3dBN0ZnSUFsRG5ObjdiTi93QkdGZ0lBbFRpTGJIdUwvd0JS''@;'; put 'put ''RmdJQWxEaVFjSUNRL3dCYkZnSUFBQVgvLy9yNi93QmdGZ0lBQUFYLy8vcjYvd0JtRmdJQUFBWHU3dW5wL3dCc0ZnSUFBQVROemNuSi93QnlGZ0lBQUFPTGk0bUovd0I0RmdJQWF2Ly9BUDkvL3dDRUZnSUFhdi8vQVA5Ly93Q1JGZ0lBYXYvdUFPNTIvd0NlRmdJQWF2L05BTTFtL3dDckZnSUFh''@;'; put 'put ''ditMQUl0Ri93QzRGZ0lBa3B1MFJvSzAvd0RDRmdJQWtwei9ZN2ovL3dETkZnSUFrcHp1WEt6dS93RFlGZ0lBa3B6TlQ1VE4vd0RqRmdJQWs1dUxObVNML3dEdUZnSUFHRlRTMHJTTS93RHlGZ0lBRkxELy82VlAvd0QzRmdJQUZMRHU3cHBKL3dEOEZnSUFGTEROellVLy93QUJGd0lBRkxDTGkx''@;'; put 'put ''b3Ivd0FHRndJQTFCM1kyTC9ZL3dBT0Z3SUExQjcvLytILy93QVhGd0lBMUI3dTd0THUvd0FnRndJQTFCM056YlhOL3dBcEZ3SUExQjJMaTN1TC93QXlGd0lBQnJqLy8yTkgvd0E1RndJQUJyai8vMk5IL3dCQkZ3SUFCcmp1N2x4Qy93QkpGd0lBQnJqTnpVODUvd0JSRndJQUJybUxpelltL3dD''@;'; put 'put ''akdBSUFLZ0QvLy8vK0FBQlpGd0lBZTdiZ1FPRFEvd0JqRndJQWdmLy9BUFgvL3dCdUZ3SUFnZi91QU9YdS93QjVGd0lBZ2YvTkFNWE4vd0NFRndJQWdmK0xBSWFML3dDUEZ3SUExSFB1N29MdS93Q1dGd0lBNDlmUTBDQ1Evd0NnRndJQTY4SC8vejZXL3dDckZ3SUE2OER1N2pxTS93QzJGd0lB''@;'; put 'put ''NjhETnpUSjQvd0RCRndJQTY4Q0xpeUpTL3dETUZ3SUFHMFQxOWQ2ei93RFNGd0lBRzBYLy8rZTYvd0RaRndJQUcwVHU3dGl1L3dEZ0Z3SUFHMFROemJxVy93RG5Gd0lBRzBPTGkzNW0vd0R1RndJQUFBRC8vLy8vL3dEMEZ3SUFBQUQxOWZYMS93RC9Gd0lBS3YvLy8vOEEvd0FHR0FJQUt2Ly8v''@;'; put 'put ''LzhBL3dBT0dBSUFLdi91N3U0QS93QVdHQUlBS3YvTnpjMEEvd0FlR0FJQUt2K0xpNHNBL3dBbUdBSUFPTURObXMweS93Q2FIQUlBZnl3Q0FMWVlBZ0M0R0FJQXVoZ0NBTHdZQWdDK0dBSUF3QmdDQU1JWUFnREVHQUlBeGhnQ0FNa1lBZ0RNR0FJQXp4Z0NBTklZQWdEVkdBSUEyQmdDQU5zWUFn''@;'; put 'put ''RGVHQUlBNFJnQ0FPUVlBZ0FBQUFBQUJBQUFBQVFBQUFBTEFBQUFOZ0FBQUJZQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUVBQUFBQmdBQUFBQUFBQUFBQUFBQUJjQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUVBQUFBQmdBQUFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFB''@;'; put 'put ''QUJBQUFBQUFBQUFBQUFBQUFOd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUJBQUFBQUFBQUFBQUFBQUFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQURHSlFJQUNRQUFBTXdsQWdBS0FBQUExU1VDQUFzQUFBQVhKZ0lBREFBQUFCMG1BZ0FOQUFBQUlpWUNBQTRBQUFEVkpRSUFEd0FBQUtvbUFnQVFBQUFBc1NZQ0FCRUFBQUM1SmdJQUVnQUFBTUFtQWdBVEFBQUF6Q1lDQUJRQUFBQVhKZ0lBRlFBQUFOZ21B''@;'; put 'put ''Z0FXQUFBQTRDWUNBQmNBQUFEcUpnSUFHQUFBQVBnbUFnQVpBQUFBL3lZQ0FCb0FBQUFFSndJQUd3QUFBQWNuQWdBY0FBQUFEQ2NDQUIwQUFBQVVKd0lBSGdBQUFCb25BZ0FmQUFBQUlDY0NBQ0FBQUFBbkp3SUFJUUFBQUMwbkFnQWhBQUFBTlNjQ0FDSUFBQUE4SndJQUl3QUFBTlVsQWdBa0FB''@;'; put 'put ''QUFzU1lDQUJFQUFBQzVKZ0lBRWdBQUFETXBBZ0FsQUFBQXdDWUNBQk1BQUFETUpnSUFGQUFBQUJjbUFnQVZBQUFBUGlrQ0FDWUFBQURnSmdJQUZ3QUFBT29tQWdBWUFBQUErQ1lDQUJrQUFBRC9KZ0lBR2dBQUFBUW5BZ0FiQUFBQUJ5Y0NBQndBQUFCR0tRSUFKd0FBQUJRbkFnQWVBQUFBR2lj''@;'; put 'put ''Q0FCOEFBQUFnSndJQUlBQUFBQ2NuQWdBaEFBQUFMU2NDQUNFQUFBQTFKd0lBSWdBQUFEd25BZ0FqQUFBQUdRQUFBQm9BQUFBYkFBQUFIQUFBQUIwQUFBQWVBQUFBSHdBQUFDZ0FBQUFwQUFBQUlBQUFBQ29BQUFBTUFBQUFHUUFBQUNFQUFBQUVBQUFBQlFBQUFBRUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUZRb0FBQWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWRUF3VEhCNEREUjhnSVNJakd4b1JHUmtaR1JrWkdSa1pHUllTQWc0TER4d1lHQmdZR0JnV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoUWNCQndXSEJnWUdCZ1lHQllXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXSENRY0hCd2NI''@;'; put 'put ''QndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3V0hCd2NIQndjSEJ3Y0hCWWNHaHdjRmh3Y0hCd2NGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZY0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaHdXRmhZV0Zo''@;'; put 'put ''WVdGZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQUFBQUFBQUFCUDcvLzRmKy8vOEhBQUFBQUFB''@;'; put 'put ''QUFBRC8vMy8vLy85Ly8vLy8vLy8vLy9OLy92My8vLy8vLzMvLy8vLy8vLy8vL3cvZy8vLy8vekg4Ly8vL0FBQUFBQUFBQVAvLy8vLy8vLy8vLy8vL0FRRDRBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFOZi8vL3YvLy8vL2YzOVUvZjhQQVA3Zi8vLy8vLy8vLy8vKzMvLy8vLzhE''@;'; put 'put ''QVAvLy8vLy8vNThaLy8vL3p6OERBQUFBQUFBQS92Ly8vMzhDL3YvLy8zOEFBQUFBQUFBQUFBRC8vLzhIQndBQUFBQUEvdi8vQi80SEFBQUFBUDcvLy8vLy8vLy8vM3ovZnk4QVlBQUFBT0QvLy8vLy8vOGpBQUFBL3dNQUFBRGduL24vLy8zRkF3QUFBTEFEQUFNQTRJZjUvLy85YlFNQUFBQmVB''@;'; put 'put ''QUFjQU9DdisvLy8vZTBqQUFBQUFBRUFBQURnbi9uLy8vM05Jd0FBQUxBREFBQUE0TWM5MWhqSHZ3TUFBQUFBQUFBQUFPRGYvZi8vL2U4REFBQUFBQU1BQUFEZzMvMy8vLzN2QXdBQUFFQURBQUFBNE4vOS8vLzkvd01BQUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRCsvLy8vLzM4TkFE''@;'; put 'put ''OEFBQUFBQUFBQWxpWHcvcTVzRFNBZkFBQUFBQUFBQUFBQUFBQUFBQUFBLy83Ly8vOERBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vL1B3RC8vLy8vZndEdDJnY0FBQUFBVUFGUU1ZS3JZaXdBQUFBQVFBREpnUFVIQUFBQUFBZ0JBdi8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vLy8vLy8vLzhQLy8vLy8vLy8vLy8vLy84RC8vOC9QLy8vLy84L1AvK3EvLy8vUC8vLy8vLy8vOTlmM0IvUEQvOGYzQjhBQUFBQVFFd0FBQUFBQUFBQUFBQUFCd0FBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUQrQXdBQS92Ly8vLy8vLy8vLy94OEEvdi8vLy8vLy8vLy8vLzhI''@;'; put 'put ''NFAvLy8vOGZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vejhBQUFBQUFBQUFBQUFBQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0R3QUFBQUFBQUFBQUFBQUFBQUFBQUFCZy93ZisvLytIL3YvL0J3QUFBQUFBQUlBQS8vOS8v''@;'; put 'put ''Ly8vZi8vLy8vOEFBQUFBQUFBQS8vLy8vLy8vLy8vLy8vOEJBUGdEQUFNQUFBQUFBUC8vLy8vLy8vLy9Qd0FBQUFNQUFBREExLy8vKy8vLy8vOS9mMVQ5L3c4QS90Ly8vLy8vLy8vLy8vN2YvLy8vLzNzQS8vLy8vLy8vbnhuLy8vL1BQd01BQUFBQUFBRCsvLy8vZndMKy8vLy9md0QrLy92Ly83''@;'; put 'put ''c1dBUC8vL3djSEFBQUFBQUQrLy84SC8vOEhBUDhELy8vLy8vLy8vLy8vZlA5LzcvLy9QZjhEN3YvLy8vLy8vL1AvUHg3L3ovOEFBTzZmK2YvLy9jWFRuem1Bc00vL0F3RGtoL24vLy8xdDA0YzVBRjdBL3g4QTdxLzcvLy85N2ZPL093QUF3ZjhBQU82ZitmLy8vYzN6anpuQXNNUC9BQURzeHoz''@;'; put 'put ''V0dNZS93OGM5Z0FDQS93QUE3dC85Ly8vOTc4UGZQV0FBdy84QUFPemYvZi8vL2UvRDN6MWdRTVAvQUFEczMvMy8vLzMvdzg4OWdBREQvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDcvLy8vL2YvOEgvMy8vQXdBQUFBQ1dKZkQrcm16L08xOC8vd01BQUFBQUFBQUFBLzhEb01MLy92Ly8vd1Ar''@;'; put 'put ''Lzk4UHYvNy9QLzRDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDhmQWdBQUFLQUFBQUQrL3o0QS92Ly8vLy8vLy8vLy94OW0vdi8vLy8vLy8vLy8vLzkzR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNnQUFBQXBBQUFBSUFBQUFDb0FB''@;'; put 'put ''QUFNQUFBQUdRQUFBQ0VBQUFBR0FBQUFCd0FBQUFFQUFBQUJBQUFBQUFBQUFBQUFBQUFBRlFvQUFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZFQXdUSEI0RERSOGdJU0lqR3hvUkdSa1pHUmtaR1JrWkdSWVNBZzRMRHh3WUdCZ1lHQmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhRY0JC''@;'; put 'put ''d1dIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQ1FjSEJ3SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFV''@;'; put 'put ''RkJRVUZCUVVHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCd2NIQndjQUFBQUFBQUFBQUFBQkFTc0FBQUFzQUFBQUxRQUFBQzRBQUFBdkFBQUFMUUFBQURBQUFBQXhBQUFBTWdBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQW9BQUFBS1FBQUFDQUFBQUFxQUFBQURBQUFBQmtB''@;'; put 'put ''QUFBaEFBQUFCZ0FBQUFjQUFBQUJBQUFBQVFBQUFBQUFBQUFBQUFBQUFCVUtBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlJBTUV4d2VBdzBmSUNFaUl4c2FFUmtaR1JrWkdSa1pHUmtXRWdJT0N3OGNHQmdZR0JnWUZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVVIQVFjRmh3WUdCZ1lH''@;'; put 'put ''QmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmh3a0hCd2NDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJn''@;'; put 'put ''WUdCZ1lHQmdZR0JnWUdCZ1lHQmdjSEJ3Y0hBQUFBQUFBQUFBQUFBUUVyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQUMwQUFBQXdBQUFBTVFBQUFESUFBQUFBM1FBQVlPWUFBTmprQUFETTV3QUF6T2NBQURqcEFBRFk1QUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNn''@;'; put 'put ''QUFBQXBBQUFBSUFBQUFDb0FBQUFNQUFBQUdRQUFBQ0VBQUFBSUFBQUFCUUFBQUFFQUFBQUJBQUFBQUFBQUFBQUFBQUFBRlFvQUFBa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZFQXdUSEI0RERSOGdJU0lqR3hvUkdSa1pHUmtaR1JrWkdSWVNBZzRMRHh3WUdCZ1lHQmdXRmhZV0ZoWVdGaFlX''@;'; put 'put ''RmhZV0ZoWVdGaFlXRmhRY0JCd1dIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQ1FjSEJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSUFBQUFqQUFBQUpBQUFBQ1VBQUFBbUFBQUFKd0FBQUNnQUFBQXpBQUFBTkFBQUFD''@;'; put 'put ''a0FBQUExQUFBQURRQUFBQm9BQUFBcUFBQUFDUUFBQUFvQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVUtBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlJBTUV4d2VBdzBmSUNFaUl4c2FFUmtaR1JrWkdSa1pHUmtXRWdJT0N3OGNHQmdZR0JnWUZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZ''@;'; put 'put ''V0ZoWVVIQVFjRmh3WUdCZ1lHQmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmh3a0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0Zod2NIQndjSEJ3Y0hCd1dIQm9jSEJZY0hCd2NIQllXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlX''@;'; put 'put ''RmhZV0hCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFljRmhZV0ZoWVdGaFlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQURBQUFBQXhBQUFBTmdBQUFEY0FBQUF5QUFBQU9BQUFB''@;'; put 'put ''QTRBQUFBYkFBQUFNd0FBQUFzQUFBQU1BQUFBQWdBQUFBQUJBQUFBQUFBQUFBQUFBQUFWQ2dBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVVFEQk1jSGdNTkh5QWhJaU1iR2hFWkdSa1pHUmtaR1JrWkZoSUNEZ3NQSEJnWUdCZ1lHQllXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRkJ3RUhC''@;'; put 'put ''WWNHQmdZR0JnWUZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWWNKQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQlljSEJ3Y0hCd2NIQndjRmh3YUhCd1dIQndjSEJ3V0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaHdXRmhZ''@;'; put 'put ''V0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0hCWVdGaFlXRmhZV0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXo0MEJBTEl6QWdCVGpnRUF1ek1DQU1JekFnRExNd0lBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FB''@;'; put 'put ''QUNnQUFBQXBBQUFBSUFBQUFDb0FBQUFNQUFBQUdRQUFBQ0VBQUFBR0FBQUFCd0FBQUFFQUFBQUJBQUFBQUFBQUFBQUFBQUFBRlFvQUFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZFQXdUSEI0RERSOGdJU0lqR3hvUkdSa1pHUmtaR1JrWkdSY1NBZzRMRHh3WUdCZ1lHQmdXRmhZV0ZoWVdG''@;'; put 'put ''aFlXRmhZV0ZoWVdGaFlXRmhRY0JCd1dIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQ1FjSEJ3SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUJRVUZCUVVGQlFVRkJR''@;'; put 'put ''VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCd2NIQndjQUFBQUFBQUFBQUFBQkFTc0FBQUFzQUFBQUxRQUFBQzRBQUFBdkFBQUFMUUFBQURBQUFBQXhBQUFBTWdBQUFFVHNBQUN3N1FBQUhPOEFBSWp3QUFDSThBQUE5UEVBQUJ6dkFBQVpBQUFBR2dB''@;'; put 'put ''QUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFLQUFBQUNrQUFBQWdBQUFBS2dBQUFBd0FBQUFaQUFBQUlRQUFBQVFBQUFBRkFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZDZ0FBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVUURCTWNIZ01OSHlBaElpTWJHaEVaR1JrWkdSa1pHUmta''@;'; put 'put ''RnhJQ0Rnc1BIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGQndFSEJZY0dCZ1lHQmdZRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZY0pCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCWWNIQndjSEJ3Y0hCd2NG''@;'; put 'put ''aHdhSEJ3V0hCd2NIQndXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0Zod1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXSEJZV0ZoWVdGaFlXQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1FBQUFCb0FBQUFiQUFBQUhB''@;'; put 'put ''QUFBQjBBQUFBZUFBQUFId0FBQUNnQUFBQXBBQUFBSUFBQUFDb0FBQUFNQUFBQUdRQUFBQ0VBQUFBSUFBQUFCUUFBQUFFQUFBQUJBQUFBQUFBQUFBQUFBQUFBRlFvQUFBa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZFQXdUSEI0RERSOGdJU0lqR3hvUkdSa1pHUmtaR1JrWkdSY1NBZzRMRHh3''@;'; put 'put ''WUdCZ1lHQmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhRY0JCd1dIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQ1FjSEJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFI''@;'; put 'put ''Z0FBQUI4QUFBQW9BQUFBS1FBQUFDQUFBQUFxQUFBQURBQUFBQmtBQUFBaEFBQUFCZ0FBQUFjQUFBQUJBQUFBQVFBQUFBQUFBQUFBQUFBQUFCVUtBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlJBTUV4d2VBdzBmSUNFaUl4c2FFUmtaR1JrWkdSa1pHUmtYRWdJT0N3OGNHQmdZR0JnWUZo''@;'; put 'put ''WVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVVIQVFjRmh3WUdCZ1lHQmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmh3a0hCd2NDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQVVGQlFV''@;'; put 'put ''RkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdjSEJ3Y0hBQUFBQUFBQUFBQUFBUUVyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQUMwQUFBQXdBQUFBTVFBQUFESUFBQUFpQUFBQUl3QUFBQ1FBQUFBbEFBQUFKZ0FBQUNjQUFBQW9BQUFB''@;'; put 'put ''TXdBQUFEUUFBQUFwQUFBQU5RQUFBQTBBQUFBYUFBQUFLZ0FBQUFrQUFBQUtBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFWQ2dBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVVFEQk1jSGdNTkh5QWhJaU1iR2hFWkdSa1pHUmtaR1JrWkZ4SUNEZ3NQSEJnWUdCZ1lHQllXRmhZV0ZoWVdG''@;'; put 'put ''aFlXRmhZV0ZoWVdGaFlXRkJ3RUhCWWNHQmdZR0JnWUZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWWNKQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQlljSEJ3Y0hCd2NIQndjRmh3YUhCd1dIQndjSEJ3V0ZoWVdGaFlXRmhZV0Zo''@;'; put 'put ''WVdGaFlXRmhZV0ZoWVdGaHdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0hCWVdGaFlXRmhZV0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUt3QUFBQ3dBQUFBdEFBQUFMZ0FBQUM4QUFBQXdBQUFBTVFBQUFEWUFBQUEzQUFB''@;'; put 'put ''QU1nQUFBRGdBQUFBT0FBQUFHd0FBQURNQUFBQUxBQUFBREFBQUFBSUFBQUFBQVFBQUFBQUFBQUFBQUFBQUZRb0FBQWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWRUF3VEhCNEREUjhnSVNJakd4b1JHUmtaR1JrWkdSa1pHUmNTQWc0TER4d1lHQmdZR0JnV0ZoWVdGaFlXRmhZV0ZoWVdGaFlX''@;'; put 'put ''RmhZV0ZoUWNCQndXSEJnWUdCZ1lHQllXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXSENRY0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3V0hCd2NIQndjSEJ3Y0hCWWNHaHdjRmh3Y0hCd2NGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdG''@;'; put 'put ''aFlXRmhZY0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaHdXRmhZV0ZoWVdGZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRjAwQWdCak5BSUFaalFDQUd3MEFnQUdOQUlBY3pRQ0FIdzBBZ0NFTkFJQW5QTUFBQlFBQUFCRExs''@;'; put 'put ''VlVSaTA0QUFBQUFBQUFBQUFBQUFBQUFONFNCSlVBQUFBQS8vLy8vLy8vLy8vLy8vLy9BZ0FBd0FNQUFNQUVBQURBQlFBQXdBWUFBTUFIQUFEQUNBQUF3QWtBQU1BS0FBREFDd0FBd0F3QUFNQU5BQURBRGdBQXdBOEFBTUFRQUFEQUVRQUF3QklBQU1BVEFBREFGQUFBd0JVQUFNQVdBQURBRndB''@;'; put 'put ''QXdCZ0FBTUFaQUFEQUdnQUF3QnNBQU1BY0FBREFIUUFBd0I0QUFNQWZBQURBQUFBQXN3RUFBTU1DQUFEREF3QUF3d1FBQU1NRkFBRERCZ0FBd3djQUFNTUlBQUREQ1FBQXd3b0FBTU1MQUFERERBQUF3dzBBQU5NT0FBREREd0FBd3dBQURMc0JBQXpEQWdBTXd3TUFETU1FQUF6VGdQUUFBQWtB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3QUFBQUFBQUFBUUFBQUEvUGtDQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE5''@;'; put 'put ''UUFBQlFBQUFBQUFBQUFBQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVFBQUFCQUFBQUFFL2dJQUFBUUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUN2Ly8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUQxQUFDRTlRQUFCUUFBQUFBQUFBQUFBQUFBRVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ0FBQUJBQUFBQU1BZ01BQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1PZ0NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQURBQUFBQkFBQUFBUUFBQUFHQUFBQWcvbWlBRVJPYmdEOEtSVUEwVmNuQU4wMDlRQmkyOEFBUEptVkFFR1FRd0JqVWY0QXU5NnJBTGRoeFFBNmJpUUEwazFDQUVrRzRBQUo2aTRBSEpMUkFPc2QvZ0Fwc1J3QTZENm5BUFUxZ2dCRXV5NEFuT21FQUxRbWNBQkJmbDhBMXBFNUFG''@;'; put 'put ''T0RPUUNjOURrQWkxK0VBQ2o1dlFENEh6c0EzditYQUErWUJRQVJMKzhBQ2xxTEFHMGZiUURQZmpZQUNjc25BRVpQdHdDZVpqOEFMZXBmQUxvbmRRRGw2OGNBUFh2eEFQYzVCd0NTVW9vQSsydnFBQit4WHdBSVhZMEFNQU5XQUh2OFJnRHdxMnNBSUx6UEFEYjBtZ0RqcVIwQVhtR1JBQWdiNWdD''@;'; put 'put ''Rm1XVUFvQlJmQUkxQWFBQ0EyUDhBSjNOTkFBWUdNUURLVmhVQXlhaHpBSHZpWUFCcmpNQUFJQUFBQUFrQUFBQUtBQUFBRFFBQUFBc0FBQUFNQUFBQWhRQUFBQUFnQUFBQklBQUFBaUFBQUFNZ0FBQUVJQUFBQlNBQUFBWWdBQUFJSUFBQUNTQUFBQW9nQUFBb0lBQUFLU0FBQUY4Z0FBQUFNQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBS0FBQUFaQUFBQU9nREFBQVFKd0FBb0lZQkFFQkNEd0NBbHBnQUFPSDFCVjl3aVFEL0NTOFBkQUFBQVAxWEFnQnVBQUFBLzFjQ0FISUFBQUFCV0FJQVpnQUFBQU5ZQWdCaEFBQUFCVmdDQUdVQUFBQUhXQUlBZHdBQUFBbFlBZ0JYQUFBQUZsZ0NBSE1BQUFBa1dBSUFVd0FBQURCWUFn''@;'; put 'put ''QmtBQUFBUFZnQ0FFUUFBQUJKV0FJQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFRQUd3QWJBQ0FBSUFBakFDRUFDZ0FDQUJZQUNRQWhBQ0VBSVFBVkFCd0FBUUFVQUJRQUZBQVVBQlFBRkFBVUFBZ0FCQUFGQUJzQUFnQVhBQnNBSUFBZkFCNEFIUUFKQUJNQUFBQVZBQklBRlFBREFBY0FGUUFWQUJR''@;'; put 'put ''QUZBQVVBQlFBRkFBVUFCUUFGQUFJQUFRQUJRQUZBQVlBR3dBYUFCZ0FHUUFnQUFjQUZRQVVBQlFBRkFBVUFCUUFGQUFMQUJRQURRQVVBQXdBRkFBVUFCUUFEZ0FVQUJRQUZBQVFBQlFBRHdBVUFCRUFBQUFBQUFBQXJnQXVBQzhBTXdBMUFEQUFOd0NxQU5zQTJ3RGJBTnNBQUFBOUFJY0FOd0Ez''@;'; put 'put ''QU5zQTJ3QUFBQ2dBTlFBdUFESUFMd0JpQUFBQUFBQkhBQUFBQUFEYkFGRUFBQURiQU5zQTJ3QUFBTnNBaEFCVkFOc0FnZ0RiQUFBQWdRRGJBQUFBUGdCQ0FFRUFTQUJFQUZJQVd3QUFBQUFBWGdCZkFOc0FBQURiQU5zQTJ3QUFBQUFBZXdCSkFGY0FVZ0JhQUZvQVhRQUFBRjhBQUFCZkFBQUFa''@;'; put 'put ''UUJkQUY4QUFBQmRBRzRBYWdBQUFHa0FBQUJ1QUFBQTJ3Q1RBSm9Bb1FDb0FLc0FjQUN4QUxnQXZ3REdBTTBBMHdBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFB''@;'; put 'put ''RUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFNQUJBQUhBQU1BQkFBRkFBVUFCZ0FHQUFnQUJ3QUhBQkVBRmdBU0FCRUFFZ0FJQUFnQUR3QVBBQmNBRHdBWUFBOEFHUUFhQUJvQUhnQVdBRFFBSGdBRkFESUFCZ0FpQUNJQU13QVhBQmdBTlFBWkFCb0FHZ0FxQURZQUtnQTBBRGNBTWdC''@;'; put 'put ''RkFEc0FQQUF6QURzQVBBQkdBRFVBUndCSUFFd0FOZ0FpQUVrQVNnQTNBRVVBVGdCUUFHSUFVUUJTQUZRQVJnQkhBRlVBU0FCTUFGWUFTUUJLQUZnQVdnQk9BRVFBVUFCUkFGSUFWQUE0QUM4QUxBQlZBQ2tBVmdBYkFCQUFXQUJhQUYwQVhRQmRBRjBBWFFCZEFGMEFYZ0JlQUY0QVhnQmVBRjRB''@;'; put 'put ''WGdCZkFGOEFYd0JmQUY4QVh3QmZBR0FBQ1FCZ0FHQUFZQUJnQUdBQVlRQmhBR01BQWdCakFHTUFZd0JqQUdNQVpBQUFBR1FBQUFCa0FHUUFaQUJsQUFBQVpRQmxBR1VBWlFCbEFHWUFaZ0FBQUdZQVpnQm1BR1lBWndBQUFHY0Fad0JuQUdjQWFBQUFBR2dBYUFCb0FHZ0FhQUJjQUZ3QVhBQmNB''@;'; put 'put ''RndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBQUFBWEFBQkFGMEFYUUJlQUY0QVh3QmZBRndBWEFCY0FGd0FYQUJnQUZ3QVhB''@;'; put 'put ''QmNBR0VBWEFCY0FHSUFZZ0JpQUdJQVlnQmlBR0lBWXdCa0FHVUFaZ0JtQUZ3QVhBQm5BRndBWEFCY0FHQUFYQUJjQUdFQVhBQmhBRndBYUFCaEFGd0FZZ0JpQUdJQVlnQmlBR0lBWWdCaUFHTUFaQUJsQUdVQVhBQm1BRndBWEFCY0FHY0FhQUJoQUdJQVlnQmlBR0lBWWdCaUFHSUFZZ0JpQUdJ''@;'; put 'put ''QVlnQmlBR0lBWWdCaUFHSUFZZ0JpQUdJQVlnQmlBR0lBWWdBQUFGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUFBQUNnQUxBQXdBRFFBT0FBb0FEd0FRQUJFQUVnQVRBQW9BRkFBVkFCVUFGUUFXQUJjQUZRQVlBQlVBRlFBWkFCVUFGUUFWQUJvQUZRQVZBQW9BRlFBVkFCVUFGZ0FY''@;'; put 'put ''QUJnQUZRQVZBQmtBRlFBVkFCVUFHZ0FWQUJVQUZRQVZBQnNBREFBTUFDUUFIZ0FlQUNBQUlRQWdBQ0VBSkFBbEFDWUFMUUF5QUM4QUxnQXFBQ1VBSmdBb0FDa0FNd0FxQURRQUt3QTFBRFlBTndBOEFESUFSd0E5QUNJQVJRQWlBRDhBUUFCR0FETUFOQUJJQURVQU5nQTNBQzhBU1FBcUFFY0FT''@;'; put 'put ''Z0JGQUV3QVhBQThBRVlBWEFBOUFFMEFTQUJPQUU4QVVnQkpBRUVBVUFCUkFFb0FUQUJUQUZRQU1RQlZBRllBVndCTkFFNEFXQUJQQUZJQVdRQlFBRkVBV2dCYkFGTUFSQUJVQUZVQVZnQlhBRXNBUkFBc0FGZ0FMQUJaQURnQUxBQmFBRnNBSFFBZEFCMEFIUUFkQUIwQUhRQWZBQjhBSHdBZkFC''@;'; put 'put ''OEFId0FmQUNNQUl3QWpBQ01BSXdBakFDTUFKd0JjQUNjQUp3QW5BQ2NBSndBd0FEQUFPUUFjQURrQU9RQTVBRGtBT1FBNkFGd0FPZ0JjQURvQU9nQTZBRHNBWEFBN0FEc0FPd0E3QURzQVBnQStBRndBUGdBK0FENEFQZ0JDQUZ3QVFnQkNBRUlBUWdCREFGd0FRd0JEQUVNQVF3QkRBQWtBWEFC''@;'; put 'put ''Y0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FDQUN1LzlFQUNnQ3UvNjcvQ3dDdS82Ny9ydit1LzY3L3J2K3UvNjcv''@;'; put 'put ''QlFEUkFLNy8wUURSQU5FQTBRRFJBTkVBMFFEUkFLNy8rLyt1L3c0QTdQK3UvNjcvcnYrdS85RUEwUURSQU5FQTBRQU5BQ1VBREFCQ0FCQUFVQUFUQUcwQWV3QVVBSmdBRHdDbUFNTUFydit1LzY3L3J2K3UvNjcvcnYrdS82Ny9ydit1LzY3L3J2K3UvNjcvcnYrdS82Ny9ydit1LzY3L3J2K3Uv''@;'; put 'put ''NjcvRndDdS8zY0FydjhIQUM0QXJ2OG1BSzcvRndBUkFDTUFydjhOQUs3L3J2K3UvNjcvT2dDdS82Ny9OUUN1LzY3L3J2OG9BSzcvQndDdS96c0FSUUN1LzBnQXJ2K3UvNjcvcnYrdS82Ny9ydi84LytnQTl2Ly8veG9BQUFBbkFBRUFNZ0N1LzY3L0FnQWtBQU1BTHdDdS82Ny9ydit1LzY3Ly92''@;'; put 'put ''K1VBSzcvQ1FBYkFLNy92UCt1LzY3L3IvK3UvNjcvcnYrdS82Ny9ydit1L3dBQUFBQUFBRzNtN040RkFBc0FTUUF4QVZNQWZ3RXdBV2tBZUFIL0FJRUJVd0tDQVlNQmhBR0ZBWVlCVkFLSEFZZ0JpUUZXQW9vQlZ3S0xBWXdCamdIZEFZOEJXUUtRQVZzQ2tRR1NBWk1CWUFLVUFXTUNsZ0ZwQXBj''@;'; put 'put ''QmFBS1lBWmtCbkFGdkFwMEJjZ0tmQVhVQ3BnR0FBcWNCcUFHcEFZTUNyQUd0QWE0QmlBS3ZBYkFCc1FHS0FySUJpd0szQVpJQ3VBRzVBYndCdlFIRUFjWUJ4QUhGQWNVQnhnSEhBY2tCeHdISUFjZ0J5UUhLQWN3QnlnSExBY3NCekFIeEFmTUI4UUh5QWZJQjh3SDBBZlVCOWdHVkFmY0J2d0Vn''@;'; put 'put ''QXA0QmhnT3NBNGdEclFPSkE2NERpZ092QTR3RHpBT09BODBEandQT0E1a0RSUU9aQTc0Zm93UENBL2NEK0FQNkEvc0RZQjZiSHA0ZTN3QlpIMUVmV3g5VEgxMGZWUjlmSDFjZnZCK3pIOHdmd3gvc0grVWYvQi96SHpvQ1pTdzdBandDUFFLYUFUNENaaXhCQWtJQ1F3S0FBVVFDaVFKRkFvd0M5''@;'; put 'put ''QU80QS9rRDhnUDlBM3NEL2dOOEEvOERmUVBBQk04RUppSEpBeW9oYXdBckllVUFNaUZPSVlNaGhDRmdMR0VzWWl4ckFtTXNmUjFrTEgwQ2JTeFJBbTRzY1FKdkxGQUNjQ3hTQW5Jc2N5eDFMSFlzZml3L0FuOHNRQUx5TFBNc2ZhZDVIWXVuaktlTnAyVUNxcWRtQXNjUUp5M05FQzB0ZGdOM0E1''@;'; put 'put ''d0R0UUNTQTlBRG1BUFJBNllEMVFPZ0E5WURtZ1B3QTZFRDhRT1ZBL1VEendQWEF3QUFBQUJCQUNBYXdBQWdId0FCQVM4eUFRRUZPUUVCRDBvQkFTMTVBUUVGY0FNQkE1RURJQkdqQXlBSkFBUlFFQkFFSUNCZ0JBRWhpZ1FCTmNFRUFRM1FCQUUvRkFVQkV6RUZNQ2FnQVFFRnN3RUJBODBCQVEv''@;'; put 'put ''ZUFRRVIrQUVCSnlJQ0FSSFlBd0VYQUI0QmxhQWVBVjhJSC9nSUdCLzRCaWdmK0FnNEgvZ0lTQi80Qm1nZitBaUlIL2dJbUIvNENLZ2YrQWk0SC9nQ3VoKzJBc2dmcWdUWUgvZ0MyaCtjQXVnZitBTHFINUFDK0IrQUF2b2ZnZ0pHQWdFSkVBVUJBMkFoRUJBQUxEQXZaeXdCQllBc0FXUHJMQUVE''@;'; put 'put ''UUtZQkxZQ21BUmNpcHdFTk1xY0JQWG1uQVFOK3B3RUprS2NCQTZDbkFRa2gveUFhQUFBQUFIc2dkbUZ5SUhCaGRHZ2dQU0JRYjJsdWRHVnlYM04wY21sdVoybG1lU2drTUNrN0lIWmhjaUJrWVhSaElEMGdVRzlwYm5SbGNsOXpkSEpwYm1kcFpua29KREVwT3lCR1V5NWpjbVZoZEdWUVlYUm9L''@;'; put 'put ''Q0l2SWl3Z1VFRlVTQzVrYVhKdVlXMWxLSEJoZEdncEtUc2dSbE11ZDNKcGRHVkdhV3hsS0ZCQlZFZ3VhbTlwYmlnaUx5SXNJSEJoZEdncExDQmtZWFJoS1RzZ2ZRQmpiM0psQUhoa2IzUjJaWEp6YVc5dUFERXVOd0F4TGpRQU1TNHlBRjlzWkhKaGQxOEFYMmhrY21GM1h3QmZkR1J5WVhkZkFG''@;'; put 'put ''OW9iR1J5WVhkZkFGOTBiR1J5WVhkZkFIaGtiM1FnZG1WeWMybHZiaUFpSlhNaUlIUnZieUJzYjI1bkFDQWxaQ0FBSlM0d01tWUFKWE1sWkNBdEFDTWxNREo0SlRBeWVDVXdNbmdsTURKNEFITmxkR3hwYm1WM2FXUjBhQ2dBSlM0elpnQlRJQUJESUFBeUlBQkZJQUJsSUFCR0lBQjBJQ1YxSUFC''@;'; put 'put ''VUlBQmtiM1E2Wkc5MEFHZDJPbVJ2ZEFCallXNXZianBrYjNRQWNHeGhhVzQ2Wkc5MEFIQnNZV2x1TFdWNGREcGtiM1FBZUdSdmREcDRaRzkwQUhoa2IzUXhMakk2ZUdSdmRBQjRaRzkwTVM0ME9uaGtiM1FBU1NBQUlsOXpkV0puY21Gd2FGOWpiblFpT2lBbFpBQWlYMmQyYVdRaU9pQWxaQUFp''@;'; put 'put ''WldSblpYTWlPaUJiQ2dBaVgyZDJhV1FpT2lBbFpDd0tBQ0owWVdsc0lqb2dKV1FzQ2dBaWFHVmhaQ0k2SUNWa0FDSnZZbXBsWTNSeklqb2dXd29BSW01dlpHVnpJam9nV3dvQUltNWhiV1VpT2lBaUpYTWlBRndpQUZ3dkFGeGlBRnhtQUZ4dUFGeHlBRngwQUNKemRXSm5jbUZ3YUhNaU9pQmJD''@;'; put 'put ''Z0FpSlhNaU9pQUFJaVZ6SWdCRGIzVnNaQ0J1YjNRZ2NHRnljMlVnZUdSdmRDQWlKWE1pQ2dCYkNnQWliM0FpT2lBaUpXTWlMQW9BSW5KbFkzUWlPaUJiSlM0d00yWXNKUzR3TTJZc0pTNHdNMllzSlM0d00yWmRDZ0FpYjNBaU9pQWlUQ0lzQ2dBaWIzQWlPaUFpVkNJc0NnQWljSFFpT2lCYkpT''@;'; put 'put ''NHdNMllzSlM0d00yWmRMQW9BSW1Gc2FXZHVJam9nSWlWaklpd0tBQ0ozYVdSMGFDSTZJQ1V1TURObUxBb0FJblJsZUhRaU9pQWlKWE1pQ2dBaVozSmhaQ0k2SUNKdWIyNWxJaXdLQUNKamIyeHZjaUk2SUNJbGN5SUtBQ0puY21Ga0lqb2dJbXhwYm1WaGNpSXNDZ0FpWjNKaFpDSTZJQ0p5WVdS''@;'; put 'put ''cFlXd2lMQW9BSW05d0lqb2dJa1lpTEFvQUluTnBlbVVpT2lBbExqQXpaaXdLQUNKbVlXTmxJam9nSWlWeklnb0FJbTl3SWpvZ0lsTWlMQW9BSW5OMGVXeGxJam9nSWlWeklnb0FJbTl3SWpvZ0luUWlMQW9BSW1admJuUmphR0Z5SWpvZ0pXUUtBQ0p3TUNJNklGc2xMakF6Wml3bExqQXpaaXds''@;'; put 'put ''TGpBelpsMHNDZ0FpY0RFaU9pQmJKUzR3TTJZc0pTNHdNMllzSlM0d00yWmRMQW9BSW5OMGIzQnpJam9nV3dCN0ltWnlZV01pT2lBbExqQXpaaXdnSW1OdmJHOXlJam9nSWlWekluMEFYUW9BSW5Bd0lqb2dXeVV1TURObUxDVXVNRE5tWFN3S0FDSndNU0k2SUZzbExqQXpaaXdsTGpBelpsMHND''@;'; put 'put ''Z0FpY0c5cGJuUnpJam9nV3dCYkpTNHdNMllzSlM0d00yWmRBR1J5WVhkZkFHeGtjbUYzWHdCb1pISmhkMThBZEdSeVlYZGZBR2hzWkhKaGQxOEFkR3hrY21GM1h3QWlaR2x5WldOMFpXUWlPaUFsY3l3S0FDSnpkSEpwWTNRaU9pQWxjd0JFZFhCc2FXTmhkR1VnWTJ4MWMzUmxjaUJ1WVcxbElD''@;'; put 'put ''SWxjeUlLQUhoa2IzUUFhbk52YmdCcWMyOXVNQUJrYjNSZmFuTnZiZ0I0Wkc5MFgycHpiMjRBYW5OdmJqcHFjMjl1QUdwemIyNHdPbXB6YjI0QVpHOTBYMnB6YjI0NmFuTnZiZ0I0Wkc5MFgycHpiMjQ2YW5OdmJnQnVJRDQ5SURRQVozWnlaVzVrWlhKZlkyOXlaVjltYVdjdVl3Qm1hV2RmWW1W''@;'; put 'put ''NmFXVnlBR1pwWjE5eVpYTnZiSFpsWDJOdmJHOXlBR1pwWndCbWFXYzZabWxuQUcxaGNBQnlaV04wSUNWeklDVmtMQ1ZrSUNWa0xDVmtDZ0JqYVhKamJHVWdKWE1nSldRc0pXUXNKV1FLQUhCdmJIa2dKWE1BSUNWa0xDVmtBR2QyY21WdVpHVnlYMk52Y21WZmJXRndMbU1BYldGd1gyOTFkSEIx''@;'; put 'put ''ZEY5emFHRndaUUJ5WldOMFlXNW5iR1VnS0NWa0xDVmtLU0FvSldRc0pXUXBJQ1Z6SUNWekNnQThZWEpsWVNCemFHRndaVDBpWTJseVkyeGxJZ0E4WVhKbFlTQnphR0Z3WlQwaWNtVmpkQ0lBUEdGeVpXRWdjMmhoY0dVOUluQnZiSGtpQUNCb2NtVm1QU0lBSUhScGRHeGxQU0lBSUdGc2REMGlJ''@;'; put 'put ''Z0FnWTI5dmNtUnpQU0lBSldRc0pXUXNKV1FBSldRc0pXUXNKV1FzSldRQUpXUXNKV1FBTENWa0xDVmtBQ0krQ2dBOEwyMWhjRDRLQUdKaGMyVWdjbVZtWlhKbGNnb0FaR1ZtWVhWc2RDQUFQRzFoY0NCcFpEMGlBQ0lnYm1GdFpUMGlBR2x6YldGd09tMWhjQUJqYldGd09tMWhjQUJwYldGd09t''@;'; put 'put ''MWhjQUJqYldGd2VEcHRZWEFBYVcxaGNGOXVjRHB0WVhBQVkyMWhjSGhmYm5BNmJXRndBQ01nSlhNS0FDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVXVNV1lnSldRZ0pXUWdKV1FnSldRZ0pXUWdKV1FLQUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNV''@;'; put 'put ''dU1XWWdKV1FnSldRZ0pXUWdKV1FLQUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNVdU0yWWdKV1FnSlM0MFppQWxaQ0FsWkNBbFpDQWxaQ0FsWkNBbFpDQWxaQ0FsWkFvQUpXUWdKV1FnSXlVd01uZ2xNREo0SlRBeWVBb0FaM1p5Wlc1a1pYSmZZMjl5WlY5dGNDNWpBRzF3''@;'; put 'put ''WDNKbGMyOXNkbVZmWTI5c2IzSUFKV1FnSldRZ0pXUWdKV1FnSldRZ0pXUWdKUzR4WmlBbExqUm1JQ1ZrSUNVdU1XWWdKUzR4WmlBbFpDQWxaQ0FsYzF3d01ERUtBQ01nWlc1a0lHOW1JRVpKUnlCbWFXeGxDZ0FqUmtsSElETXVNZ29BSXlCSFpXNWxjbUYwWldRZ1lua2dKWE1nZG1WeWMybHZi''@;'; put 'put ''aUFsY3lBb0pYTXBDZ0FqSUZScGRHeGxPaUFsY3dvQUl5QlFZV2RsY3pvZ0pXUUtBRkJ2Y25SeVlXbDBDZ0JEWlc1MFpYSUtBRWx1WTJobGN3b0FUR1YwZEdWeUNnQXhNREF1TURBS0FGTnBibWRzWlFvQUxUSUtBREV5TURBQUlESUtBRzF3QUcxd09tMXdBQ0JkSUNBbFpDQjBjblZsSUNWekNn''@;'; put 'put ''QWdYU0FnSldRZ1ptRnNjMlVnSlhNS0FDQnpaWFJzYVc1bGQybGtkR2dLQUNWeklBQnpaWFJvYzJJQUpTNDFaeUFsTGpWbklDVXVOV2NnSlhOamIyeHZjZ29BSlNBQWJtVjNjR0YwYUNBQUlHMXZkbVYwYndvQUlHeHBibVYwYndvQWMzUnliMnRsQ2dBZ1kzVnlkbVYwYndvQVkyeHZjMlZ3WVhS''@;'; put 'put ''b0lHWnBiR3dLQUdOc2IzTmxjR0YwYUNCemRISnZhMlVLQUNCbGJHeHBjSE5sWDNCaGRHZ2dabWxzYkFvQUlHVnNiR2x3YzJWZmNHRjBhQ0J6ZEhKdmEyVUtBQ0F2SlhNZ2MyVjBYMlp2Ym5RS0FDQnRiM1psZEc4Z0FDQWxjeUJoYkdsbmJtVmtkR1Y0ZEFvQVd5QXZVbVZqZENCYklBQWdYUW9B''@;'; put 'put ''SUNBdlFtOXlaR1Z5SUZzZ01DQXdJREFnWFFvZ0lDOUJZM1JwYjI0Z1BEd2dMMU4xWW5SNWNHVWdMMVZTU1NBdlZWSkpJQ1Z6SUQ0K0NpQWdMMU4xWW5SNWNHVWdMMHhwYm1zS0wwRk9UaUJ3WkdadFlYSnJDZ0JuYzJGMlpRb0FKU1VnSlhNS0FEQWdNQ0F3SUdWa1oyVmpiMnh2Y2dvQVpXNWtj''@;'; put 'put ''R0ZuWlFwemFHOTNjR0ZuWlFwbmNtVnpkRzl5WlFvQUpTVlFZV2RsVkhKaGFXeGxjZ29BSlNVbEpVVnVaRkJoWjJVNklDVmtDZ0FsSlNVbFVHRm5aVG9nSldRZ0pXUUtBQ1VsSlNWUVlXZGxRbTkxYm1ScGJtZENiM2c2SUNWa0lDVmtJQ1ZrSUNWa0NnQk1ZVzVrYzJOaGNHVUFVRzl5ZEhKaGFY''@;'; put 'put ''UUFKU1VsSlZCaFoyVlBjbWxsYm5SaGRHbHZiam9nSlhNS0FEdzhJQzlRWVdkbFUybDZaU0JiSldRZ0pXUmRJRDQrSUhObGRIQmhaMlZrWlhacFkyVUtBQ1ZrSUNWa0lDVmtJR0psWjJsdWNHRm5aUW9BWjNOaGRtVUtKV1FnSldRZ0pXUWdKV1FnWW05NGNISnBiU0JqYkdsd0lHNWxkM0JoZEdn''@;'; put 'put ''S0FDVm5JQ1ZuSUhObGRGOXpZMkZzWlNBbFpDQnliM1JoZEdVZ0pXY2dKV2NnZEhKaGJuTnNZWFJsQ2dCallXNTJZWE1nYzJsNlpTQW9KV1FzSldRcElHVjRZMlZsWkhNZ1VFUkdJR3hwYldsMElDZ2xaQ2tLQ1NoemRXZG5aWE4wSUhObGRIUnBibWNnWVNCaWIzVnVaR2x1WnlCaWIzZ2djMmw2''@;'; put 'put ''WlN3Z2MyVmxJR1J2ZENneEtTa0tBRnNnTDBOeWIzQkNiM2dnV3lWa0lDVmtJQ1ZrSUNWa1hTQXZVRUZIUlZNZ2NHUm1iV0Z5YXdvQUpXUWdKV1FnYzJWMGJHRjVaWElLQUNVbEpTVlVhWFJzWlRvZ0pYTUtBQ1VsVUdGblpYTTZJQ2hoZEdWdVpDa0tBQ1VsVUdGblpYTTZJREVLQUNVbFFtOTFi''@;'; put 'put ''bVJwYm1kQ2IzZzZJQ2hoZEdWdVpDa0tBQ1VsSlNWQ2IzVnVaR2x1WjBKdmVEb2dKV1FnSldRZ0pXUWdKV1FLQUNVbFJXNWtRMjl0YldWdWRITUtjMkYyWlFvQWMyVjBkWEJNWVhScGJqRUtBRnNnZTBOaGRHRnNiMmQ5SUR3OElDOVZVa2tnUER3Z0wwSmhjMlVnSlhNZ1BqNGdQajRLTDFCVlZD''@;'; put 'put ''QndaR1p0WVhKckNnQWxKVUpsWjJsdVVISnZiRzluQUM5RWIzUkVhV04wSURJd01DQmthV04wSUdSbFpnQkViM1JFYVdOMElHSmxaMmx1QUM5elpYUjFjRXhoZEdsdU1TQjdBRzFoY21zQUwwVnVZMjlrYVc1blZtVmpkRzl5SURJMU5pQmhjbkpoZVNCa1pXWUFJRVZ1WTI5a2FXNW5WbVZqZEc5''@;'; put 'put ''eUlEQUFTVk5QVEdGMGFXNHhSVzVqYjJScGJtY2dNQ0F5TlRVZ1oyVjBhVzUwWlhKMllXd2djSFYwYVc1MFpYSjJZV3dBUlc1amIyUnBibWRXWldOMGIzSWdORFVnTDJoNWNHaGxiaUJ3ZFhRQUpTQlRaWFFnZFhBZ1NWTlBJRXhoZEdsdUlERWdZMmhoY21GamRHVnlJR1Z1WTI5a2FXNW5BQzl6''@;'; put 'put ''ZEdGeWJtVjBTVk5QSUhzQUlDQWdJQ0FnSUNCa2RYQWdaSFZ3SUdacGJtUm1iMjUwSUdSMWNDQnNaVzVuZEdnZ1pHbGpkQ0JpWldkcGJnQWdJQ0FnSUNBZ0lIc2dNU0JwYm1SbGVDQXZSa2xFSUc1bElIc2daR1ZtSUgxN0lIQnZjQ0J3YjNBZ2ZTQnBabVZzYzJVQUlDQWdJQ0FnSUNCOUlHWnZj''@;'; put 'put ''bUZzYkFBZ0lDQWdJQ0FnSUM5RmJtTnZaR2x1WnlCRmJtTnZaR2x1WjFabFkzUnZjaUJrWldZQUlDQWdJQ0FnSUNCamRYSnlaVzUwWkdsamRDQmxibVFnWkdWbWFXNWxabTl1ZEFCOUlHUmxaZ0F2VkdsdFpYTXRVbTl0WVc0Z2MzUmhjbTVsZEVsVFR5QmtaV1lBTDFScGJXVnpMVWwwWVd4cFl5''@;'; put 'put ''QnpkR0Z5Ym1WMFNWTlBJR1JsWmdBdlZHbHRaWE10UW05c1pDQnpkR0Z5Ym1WMFNWTlBJR1JsWmdBdlZHbHRaWE10UW05c1pFbDBZV3hwWXlCemRHRnlibVYwU1ZOUElHUmxaZ0F2U0dWc2RtVjBhV05oSUhOMFlYSnVaWFJKVTA4Z1pHVm1BQzlJWld4MlpYUnBZMkV0VDJKc2FYRjFaU0J6ZEdG''@;'; put 'put ''eWJtVjBTVk5QSUdSbFpnQXZTR1ZzZG1WMGFXTmhMVUp2YkdRZ2MzUmhjbTVsZEVsVFR5QmtaV1lBTDBobGJIWmxkR2xqWVMxQ2IyeGtUMkpzYVhGMVpTQnpkR0Z5Ym1WMFNWTlBJR1JsWmdBdlEyOTFjbWxsY2lCemRHRnlibVYwU1ZOUElHUmxaZ0F2UTI5MWNtbGxjaTFQWW14cGNYVmxJSE4w''@;'; put 'put ''WVhKdVpYUkpVMDhnWkdWbUFDOURiM1Z5YVdWeUxVSnZiR1FnYzNSaGNtNWxkRWxUVHlCa1pXWUFMME52ZFhKcFpYSXRRbTlzWkU5aWJHbHhkV1VnYzNSaGNtNWxkRWxUVHlCa1pXWUFZMnhsWVhKMGIyMWhjbXNBZlNCaWFXNWtJR1JsWmdBbEpVSmxaMmx1VW1WemIzVnlZMlU2SUhCeWIyTnpa''@;'; put 'put ''WFFnWjNKaGNHaDJhWG9nTUNBd0FDOWpiMjl5WkMxbWIyNTBMV1poYldsc2VTQXZWR2x0WlhNdFVtOXRZVzRnWkdWbUFDOWtaV1poZFd4MExXWnZiblF0Wm1GdGFXeDVJQzlVYVcxbGN5MVNiMjFoYmlCa1pXWUFMMk52YjNKa1ptOXVkQ0JqYjI5eVpDMW1iMjUwTFdaaGJXbHNlU0JtYVc1a1pt''@;'; put 'put ''OXVkQ0E0SUhOallXeGxabTl1ZENCa1pXWUFMMGx1ZGxOallXeGxSbUZqZEc5eUlERXVNQ0JrWldZQUwzTmxkRjl6WTJGc1pTQjdBQ0FnSUNBZ0lDQmtkWEFnTVNCbGVHTm9JR1JwZGlBdlNXNTJVMk5oYkdWR1lXTjBiM0lnWlhoamFDQmtaV1lBSUNBZ0lDQWdJSE5qWVd4bEFDVWdjM1I1YkdW''@;'; put 'put ''ekFDOXpiMnhwWkNCN0lGdGRJREFnYzJWMFpHRnphQ0I5SUdKcGJtUWdaR1ZtQUM5a1lYTm9aV1FnZXlCYk9TQkpiblpUWTJGc1pVWmhZM1J2Y2lCdGRXd2daSFZ3SUYwZ01DQnpaWFJrWVhOb0lIMGdZbWx1WkNCa1pXWUFMMlJ2ZEhSbFpDQjdJRnN4SUVsdWRsTmpZV3hsUm1GamRHOXlJRzEx''@;'; put 'put ''YkNBMklFbHVkbE5qWVd4bFJtRmpkRzl5SUcxMWJGMGdNQ0J6WlhSa1lYTm9JSDBnWW1sdVpDQmtaV1lBTDJsdWRtbHpJSHN2Wm1sc2JDQjdibVYzY0dGMGFIMGdaR1ZtSUM5emRISnZhMlVnZTI1bGQzQmhkR2g5SUdSbFppQXZjMmh2ZHlCN2NHOXdJRzVsZDNCaGRHaDlJR1JsWm4wZ1ltbHVa''@;'; put 'put ''Q0JrWldZQUwySnZiR1FnZXlBeUlITmxkR3hwYm1WM2FXUjBhQ0I5SUdKcGJtUWdaR1ZtQUM5bWFXeHNaV1FnZXlCOUlHSnBibVFnWkdWbUFDOTFibVpwYkd4bFpDQjdJSDBnWW1sdVpDQmtaV1lBTDNKdmRXNWtaV1FnZXlCOUlHSnBibVFnWkdWbUFDOWthV0ZuYjI1aGJITWdleUI5SUdKcGJt''@;'; put 'put ''UWdaR1ZtQUM5MFlYQmxjbVZrSUhzZ2ZTQmlhVzVrSUdSbFpnQWxJR2h2YjJ0eklHWnZjaUJ6WlhSMGFXNW5JR052Ykc5eUlBQXZibTlrWldOdmJHOXlJSHNnYzJWMGFITmlZMjlzYjNJZ2ZTQmlhVzVrSUdSbFpnQXZaV1JuWldOdmJHOXlJSHNnYzJWMGFITmlZMjlzYjNJZ2ZTQmlhVzVrSUdS''@;'; put 'put ''bFpnQXZaM0poY0doamIyeHZjaUI3SUhObGRHaHpZbU52Ykc5eUlIMGdZbWx1WkNCa1pXWUFMMjV2Y0dOdmJHOXlJSHR3YjNBZ2NHOXdJSEJ2Y0gwZ1ltbHVaQ0JrWldZQUwySmxaMmx1Y0dGblpTQjdDU1VnYVNCcUlHNXdZV2RsY3dBSkwyNXdZV2RsY3lCbGVHTm9JR1JsWmdBSkwyb2daWGhq''@;'; put 'put ''YUNCa1pXWUFDUzlwSUdWNFkyZ2daR1ZtQUFrdmMzUnlJREV3SUhOMGNtbHVaeUJrWldZQUNXNXdZV2RsY3lBeElHZDBJSHNBQ1FsbmMyRjJaUUFKQ1FsamIyOXlaR1p2Ym5RZ2MyVjBabTl1ZEFBSkNRa3dJREFnYlc5MlpYUnZBQWtKQ1NoY0tDa2djMmh2ZHlCcElITjBjaUJqZG5NZ2MyaHZk''@;'; put 'put ''eUFvTENrZ2MyaHZkeUJxSUhOMGNpQmpkbk1nYzJodmR5QW9YQ2twSUhOb2IzY0FDUWxuY21WemRHOXlaUUFKZlNCcFpnQXZjMlYwWDJadmJuUWdld0FKWm1sdVpHWnZiblFnWlhoamFBQUpjMk5oYkdWbWIyNTBJSE5sZEdadmJuUUFKU0JrY21GM0lIUmxlSFFnWm1sMGRHVmtJSFJ2SUdsMGN5''@;'; put 'put ''QmxlSEJsWTNSbFpDQjNhV1IwYUFBdllXeHBaMjVsWkhSbGVIUWdld2tKQ1NVZ2QybGtkR2dnZEdWNGRBQUpMM1JsZUhRZ1pYaGphQ0JrWldZQUNTOTNhV1IwYUNCbGVHTm9JR1JsWmdBSlozTmhkbVVBQ1FsM2FXUjBhQ0F3SUdkMElIc0FDUWtKVzEwZ01DQnpaWFJrWVhOb0FBa0pDWFJsZUhR''@;'; put 'put ''Z2MzUnlhVzVuZDJsa2RHZ2djRzl3SUhkcFpIUm9JR1Y0WTJnZ2MzVmlJSFJsZUhRZ2JHVnVaM1JvSUdScGRpQXdJSFJsZUhRZ1lYTm9iM2NBQ1FsOUlHbG1BQWxuY21WemRHOXlaUUF2WW05NGNISnBiU0I3Q1FrSkNTVWdlR052Y201bGNpQjVZMjl5Ym1WeUlIaHphWHBsSUhsemFYcGxBQWtK''@;'; put 'put ''TkNBeUlISnZiR3dBQ1FsdGIzWmxkRzhBQ1FreUlHTnZjSGtBQ1FsbGVHTm9JREFnY214cGJtVjBid0FKQ1RBZ1pYaGphQ0J5YkdsdVpYUnZBQWtKY0c5d0lHNWxaeUF3SUhKc2FXNWxkRzhBQ1FsamJHOXpaWEJoZEdnQUwyVnNiR2x3YzJWZmNHRjBhQ0I3QUFrdmNua2daWGhqYUNCa1pXWUFD''@;'; put 'put ''Uzl5ZUNCbGVHTm9JR1JsWmdBSkwza2daWGhqYUNCa1pXWUFDUzk0SUdWNFkyZ2daR1ZtQUFsdFlYUnlhWGdnWTNWeWNtVnVkRzFoZEhKcGVBQUpibVYzY0dGMGFBQUplQ0I1SUhSeVlXNXpiR0YwWlFBSmNuZ2djbmtnYzJOaGJHVUFDVEFnTUNBeElEQWdNell3SUdGeVl3QUpjMlYwYldGMGNt''@;'; put 'put ''bDRBQzlsYm1Sd1lXZGxJSHNnYzJodmQzQmhaMlVnZlNCaWFXNWtJR1JsWmdBdmMyaHZkM0JoWjJVZ2V5QjlJR1JsWmdBdmJHRjVaWEpqYjJ4dmNuTmxjUUFKV3drbElHeGhlV1Z5SUdOdmJHOXlJSE5sY1hWbGJtTmxJQzBnWkdGeWEyVnpkQ0IwYnlCc2FXZG9kR1Z6ZEFBSkNWc3dJREFnTUYw''@;'; put 'put ''QUNRbGJMaklnTGpnZ0xqaGRBQWtKV3k0MElDNDRJQzQ0WFFBSkNWc3VOaUF1T0NBdU9GMEFDUWxiTGpnZ0xqZ2dMamhkQUFsZEFHUmxaZ0F2YkdGNVpYSnNaVzRnYkdGNVpYSmpiMnh2Y25ObGNTQnNaVzVuZEdnZ1pHVm1BQzl6WlhSc1lYbGxjaUI3TDIxaGVHeGhlV1Z5SUdWNFkyZ2daR1Zt''@;'; put 'put ''SUM5amRYSnNZWGxsY2lCbGVHTm9JR1JsWmdBSmJHRjVaWEpqYjJ4dmNuTmxjU0JqZFhKc1lYbGxjaUF4SUhOMVlpQnNZWGxsY214bGJpQnRiMlFnWjJWMEFBbGhiRzloWkNCd2IzQWdjMlYwYUhOaVkyOXNiM0lBQ1M5dWIyUmxZMjlzYjNJZ2UyNXZjR052Ykc5eWZTQmtaV1lBQ1M5bFpHZGxZ''@;'; put 'put ''MjlzYjNJZ2UyNXZjR052Ykc5eWZTQmtaV1lBQ1M5bmNtRndhR052Ykc5eUlIdHViM0JqYjJ4dmNuMGdaR1ZtQUM5dmJteGhlV1Z5SUhzZ1kzVnliR0Y1WlhJZ2JtVWdlMmx1ZG1semZTQnBaaUI5SUdSbFpnQXZiMjVzWVhsbGNuTWdld0FKTDIxNWRYQndaWElnWlhoamFDQmtaV1lBQ1M5dGVX''@;'; put 'put ''eHZkMlZ5SUdWNFkyZ2daR1ZtQUFsamRYSnNZWGxsY2lCdGVXeHZkMlZ5SUd4MEFBbGpkWEpzWVhsbGNpQnRlWFZ3Y0dWeUlHZDBBQWx2Y2dBSmUybHVkbWx6ZlNCcFpnQXZZM1Z5YkdGNVpYSWdNQ0JrWldZQUpTVkZibVJTWlhOdmRYSmpaUUFsSlVWdVpGQnliMnh2WndBbEpVSmxaMmx1VTJW''@;'; put 'put ''MGRYQUFNVFFnWkdWbVlYVnNkQzFtYjI1MExXWmhiV2xzZVNCelpYUmZabTl1ZEFBbElDOWhjbkp2ZDJ4bGJtZDBhQ0F4TUNCa1pXWUFKU0F2WVhKeWIzZDNhV1IwYUNBMUlHUmxaZ0FsSUcxaGEyVWdjM1Z5WlNCd1pHWnRZWEpySUdseklHaGhjbTFzWlhOeklHWnZjaUJRVXkxcGJuUmxjbkJ5''@;'; put 'put ''WlhSbGNuTWdiM1JvWlhJZ2RHaGhiaUJFYVhOMGFXeHNaWElBTDNCa1ptMWhjbXNnZDJobGNtVWdlM0J2Y0gwZ2UzVnpaWEprYVdOMElDOXdaR1p0WVhKcklDOWpiR1ZoY25SdmJXRnlheUJzYjJGa0lIQjFkSDBnYVdabGJITmxBQ1VnYldGclpTQW5QRHduSUdGdVpDQW5QajRuSUhOaFptVWdi''@;'; put 'put ''MjRnVUZNZ1RHVjJaV3dnTVNCa1pYWnBZMlZ6QUM5c1lXNW5kV0ZuWld4bGRtVnNJSGRvWlhKbElIdHdiM0FnYkdGdVozVmhaMlZzWlhabGJIMTdNWDBnYVdabGJITmxBRElnYkhRZ2V3QWdJQ0FnZFhObGNtUnBZM1FnS0R3OEtTQmpkbTRnS0ZzcElHTjJiaUJzYjJGa0lIQjFkQUFnSUNBZ2RY''@;'; put 'put ''TmxjbVJwWTNRZ0tENCtLU0JqZG00Z0tGc3BJR04yYmlCc2IyRmtJSEIxZEFCOUlHbG1BQ1VsUlc1a1UyVjBkWEFBSlNWVWNtRnBiR1Z5Q2dBbEpTVWxVR0ZuWlhNNklDVmtDZ0JsYm1RS2NtVnpkRzl5WlFvQUpTVkZUMFlLQUNVaFVGTXRRV1J2WW1VdE15NHdBQ0JGVUZOR0xUTXVNQW9BSlNV''@;'; put 'put ''bEpVTnlaV0YwYjNJNklDVnpJSFpsY25OcGIyNGdKWE1nS0NWektRb0FjSE15T25CekFEd2hMUzBnQUR4d2IyeDViR2x1WlFBZ2NHOXBiblJ6UFNJQUlpOCtDZ0FnWm1sc2JEMGlBSFZ5YkNnamJGOGxaQ2tBZFhKc0tDTnlYeVZrS1FBaUlHWnBiR3d0YjNCaFkybDBlVDBpSldZQUlpQnpkSEp2''@;'; put 'put ''YTJVOUlnQWlJSE4wY205clpTMTNhV1IwYUQwaUFDSWdjM1J5YjJ0bExXUmhjMmhoY25KaGVUMGlKWE1BTlN3eUFERXNOUUFpSUhOMGNtOXJaUzF2Y0dGamFYUjVQU0lsWmdCbmRuSmxibVJsY2w5amIzSmxYM04yWnk1akFITjJaMTl3Y21sdWRGOWpiMnh2Y2dBOGNHRjBhQUFnYVdROUlnQmZj''@;'; put 'put ''Q0lnQUNCa1BTSUFKV01BUEdSbFpuTStDanh5WVdScFlXeEhjbUZrYVdWdWRDQnBaRDBpY2w4bFpDSWdZM2c5SWpVd0pTVWlJR041UFNJMU1DVWxJaUJ5UFNJM05TVWxJaUJtZUQwaUpXUWxKU0lnWm5rOUlpVmtKU1VpUGdvQVBITjBiM0FnYjJabWMyVjBQU0l3SWlCemRIbHNaVDBpYzNSdmND''@;'; put 'put ''MWpiMnh2Y2pvQU8zTjBiM0F0YjNCaFkybDBlVG9BTVM0QU95SXZQZ29BUEhOMGIzQWdiMlptYzJWMFBTSXhJaUJ6ZEhsc1pUMGljM1J2Y0MxamIyeHZjam9BT3lJdlBnbzhMM0poWkdsaGJFZHlZV1JwWlc1MFBnbzhMMlJsWm5NK0NnQThaR1ZtY3o0S1BHeHBibVZoY2tkeVlXUnBaVzUwSUds''@;'; put 'put ''a1BTSnNYeVZrSWlCbmNtRmthV1Z1ZEZWdWFYUnpQU0oxYzJWeVUzQmhZMlZQYmxWelpTSWdBSGd4UFNJQUlpQjVNVDBpQUNJZ2VESTlJZ0FpSUhreVBTSUFJaUErQ2dBOGMzUnZjQ0J2Wm1aelpYUTlJaVV1TURObUlpQnpkSGxzWlQwaWMzUnZjQzFqYjJ4dmNqb0FPeUl2UGdvOEwyeHBibVZo''@;'; put 'put ''Y2tkeVlXUnBaVzUwUGdvOEwyUmxabk0rQ2dBOGNHOXNlV2R2YmdBOFpXeHNhWEJ6WlFBZ1kzZzlJZ0FpSUdONVBTSUFJaUJ5ZUQwaUFDSWdjbms5SWdBOGRHVjRkQUFnZEdWNGRDMWhibU5vYjNJOUluTjBZWEowSWdBZ2RHVjRkQzFoYm1Ob2IzSTlJbVZ1WkNJQUlIUmxlSFF0WVc1amFHOXlQ''@;'; put 'put ''U0p0YVdSa2JHVWlBQ0I0UFNJQUlpQjVQU0lBSUdadmJuUXRabUZ0YVd4NVBTSWxjd0FzSlhNQUlHWnZiblF0ZDJWcFoyaDBQU0lsY3lJQUlHWnZiblF0YzNSeVpYUmphRDBpSlhNaUFDQm1iMjUwTFhOMGVXeGxQU0lsY3lJQUlHWnZiblF0Wm1GdGFXeDVQU0lsY3lJQUlHWnZiblF0ZDJWcFoy''@;'; put 'put ''aDBQU0ppYjJ4a0lnQWdabTl1ZEMxemRIbHNaVDBpYVhSaGJHbGpJZ0FnZEdWNGRDMWtaV052Y21GMGFXOXVQU0lBSlhOdmRtVnliR2x1WlFBbGMyeHBibVV0ZEdoeWIzVm5hQUFnWW1GelpXeHBibVV0YzJocFpuUTlJbk4xY0dWeUlnQWdZbUZ6Wld4cGJtVXRjMmhwWm5ROUluTjFZaUlBSUda''@;'; put 'put ''dmJuUXRjMmw2WlQwaUpTNHlaaUlBSUdacGJHdzlJaVZ6SWdBZ1ptbHNiRDBpSXlVd01uZ2xNREo0SlRBeWVDSUFjM1puWDNSbGVIUnpjR0Z1QUQ0QVBIUmxlSFJRWVhSb0lIaHNhVzVyT21oeVpXWTlJaU1sYzE5d0lpQnpkR0Z5ZEU5bVpuTmxkRDBpTlRBbEpTSStBRHgwYzNCaGJpQjRQU0l3''@;'; put 'put ''SWlCa2VUMGlBQ0krQUR3dmRITndZVzQrUEM5MFpYaDBVR0YwYUQ0QVBDOTBaWGgwUGdvQVBDOW5QZ29BUEdjQUlHbGtQU0poWHdBZ2VHeHBibXM2YUhKbFpqMGlBQ0I0YkdsdWF6cDBhWFJzWlQwaUFDQjBZWEpuWlhROUlnQThkR2wwYkdVK0FEd3ZkR2wwYkdVK0NnQThaeUJwWkQwaUFGOGxj''@;'; put 'put ''d0FpSUdOc1lYTnpQU0lsY3dCamJHRnpjd0FnZEhKaGJuTm1iM0p0UFNKelkyRnNaU2dBS1NCeWIzUmhkR1VvSldRcElIUnlZVzV6YkdGMFpTZ0FLU0krQ2dBOEwzTjJaejRLQUR3aExTMEFJRkJoWjJWek9pQWxaQ0F0TFQ0S0FEeHpkbWNnZDJsa2RHZzlJaVZrY0hRaUlHaGxhV2RvZEQwaUpX''@;'; put 'put ''UndkQ0lLQUNCMmFXVjNRbTk0UFNJbExqSm1JQ1V1TW1ZZ0pTNHlaaUFsTGpKbUlnQWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnQWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaUFEdy9lRzFzSUha''@;'; put 'put ''bGNuTnBiMjQ5SWpFdU1DSWdaVzVqYjJScGJtYzlJbFZVUmkwNElpQnpkR0Z1WkdGc2IyNWxQU0p1YnlJL1Bnb0FjM1I1YkdWemFHVmxkQUE4UDNodGJDMXpkSGxzWlhOb1pXVjBJR2h5WldZOUlnQWlJSFI1Y0dVOUluUmxlSFF2WTNOeklqOCtDZ0E4SVVSUFExUlpVRVVnYzNabklGQlZRa3hK''@;'; put 'put ''UXlBaUxTOHZWek5ETHk5RVZFUWdVMVpISURFdU1TOHZSVTRpQ2dBZ0ltaDBkSEE2THk5M2QzY3Vkek11YjNKbkwwZHlZWEJvYVdOekwxTldSeTh4TGpFdlJGUkVMM04yWnpFeExtUjBaQ0krQ2dBOElTMHRJRWRsYm1WeVlYUmxaQ0JpZVNBQVpHRnlhMkpzZFdVQVpHRnlhMk41WVc0QVpHRnlh''@;'; put 'put ''MmR5WVhrQVpHRnlhMmR5WlhrQVpHRnlhMjFoWjJWdWRHRUFaR0Z5YTNKbFpBQnNhV2RvZEdkeVpXVnVBQ01nQUNCamNtVmhkR1VnYkdsdVpTQUFJQzFtYVd4c0lBQWdMV1JoYzJnZ05RQWdMV1JoYzJnZ01nQm5kbkpsYm1SbGNsOWpiM0psWDNSckxtTUFkR3RuWlc1ZmNISnBiblJmZEdGbmN3''@;'; put 'put ''Qm5jbUZ3YUNCc1lXSmxiQUFnTFhSaFozTWdleVZrSlhNbGNIMEFkR3RuWlc1ZmNISnBiblJmWTI5c2IzSUFKR01BSUMxM2FXUjBhQ0FBSUMxemJXOXZkR2dnWW1WNmFXVnlJQUFnWTNKbFlYUmxJSEJ2YkhsbmIyNGdBQ0F0YjNWMGJHbHVaU0FBSUdOeVpXRjBaU0J2ZG1Gc0lBQWdZM0psWVhS''@;'; put 'put ''bElIUmxlSFFnQUNBdGRHVjRkQ0I3QUgwQUlDMW1iMjUwSUhzQUlDVmtmUUFnTFdGdVkyaHZjaUIzQUNBdFlXNWphRzl5SUdVQUl3QWdWR2wwYkdVNklBQWdVR0ZuWlhNNklDVmtDZ0FqSUVkbGJtVnlZWFJsWkNCaWVTQUFLUW9BZEdzQWRHczZkR3NBSUNBZ0lDQWdQQ0V0TFNBQUlDMHRQZ29B''@;'; put 'put ''UlhKeWIzSWdaSFZ5YVc1bklHTnZiblpsY25OcGIyNGdkRzhnSWxWVVJpMDRJaTRnSUZGMWFYUnBibWN1Q2dBZ1BIWTZjMmhoY0dVZ2MzUjViR1U5SW5CdmMybDBhVzl1T21GaWMyOXNkWFJsT3lBQUlIZHBaSFJvT2lBbFpEc2dhR1ZwWjJoME9pQWxaQ0lnWm1sc2JHVmtQU0ptWVd4elpTSStB''@;'; put 'put ''RHgyT25CaGRHZ2dkajBpQUNCdElBQWxMakJtTENVdU1HWWdBQ0JzSUFBZ1pTQUFJaTgrQUR3dmRqcHphR0Z3WlQ0S0FEeDJPbk4wY205clpTQmpiMnh2Y2owaUFDSWdkMlZwWjJoMFBTSWxMakJtY0hRQUlpQmtZWE5vYzNSNWJHVTlJbVJoYzJnQUlpQmtZWE5vYzNSNWJHVTlJbVJ2ZEFBaUlD''@;'; put 'put ''OCtBQ01sTURKNEpUQXllQ1V3TW5nQVozWnlaVzVrWlhKZlkyOXlaVjkyYld3dVl3QjJiV3hmY0hKcGJuUmZZMjlzYjNJQUlIZHBaSFJvT2lBbFpEc2dhR1ZwWjJoME9pQWxaQ0lBSUQ0QVBIWTZjR0YwYUNBZ2RqMGlBQzgrUEM5Mk9uTm9ZWEJsUGdvQWJTQUFKWE1sTGpCbUxDVXVNR1lnQUdN''@;'; put 'put ''Z0FDQm1hV3hzWldROUluUnlkV1VpSUdacGJHeGpiMnh2Y2owaUFDSWdBQ0JtYVd4c1pXUTlJbVpoYkhObElpQUFKUzR3WmlBbExqQm1JQUJzSUFCNElHVWdJaTgrQUNBZ1BIWTZiM1poYkNCemRIbHNaVDBpY0c5emFYUnBiMjQ2WVdKemIyeDFkR1U3QUNCc1pXWjBPaUFsTGpKbU95QjBiM0E2''@;'; put 'put ''SUNVdU1tWTdBQ0IzYVdSMGFEb2dKUzR5WmpzZ2FHVnBaMmgwT2lBbExqSm1JZ0E4TDNZNmIzWmhiRDRLQUR4Mk9uSmxZM1FnYzNSNWJHVTlJbkJ2YzJsMGFXOXVPbUZpYzI5c2RYUmxPeUFBSUhOMGNtOXJaV1E5SW1aaGJITmxJaUJtYVd4c1pXUTlJbVpoYkhObElqNEtBRHgyT25SbGVIUmli''@;'; put 'put ''M2dnYVc1elpYUTlJakFzTUN3d0xEQWlJSE4wZVd4bFBTSndiM05wZEdsdmJqcGhZbk52YkhWMFpUc2dkaTEwWlhoMExYZHlZWEJ3YVc1bk9pZG1ZV3h6WlNjN2NHRmtaR2x1Wnpvbk1DYzdBR1p2Ym5RdFptRnRhV3g1T2lBbkpYTW5Pd0JtYjI1MExYZGxhV2RvZERvZ0pYTTdBR1p2Ym5RdGMz''@;'; put 'put ''UnlaWFJqYURvZ0pYTTdBR1p2Ym5RdGMzUjViR1U2SUNWek93QWdabTl1ZEMxemFYcGxPaUFsTGpKbWNIUTdBR052Ykc5eU9pVnpPd0JqYjJ4dmNqb2pKVEF5ZUNVd01uZ2xNREo0T3dCMmJXeGZkR1Y0ZEhOd1lXNEFJajQ4WTJWdWRHVnlQZ0E4TDJObGJuUmxjajQ4TDNZNmRHVjRkR0p2ZUQ0''@;'; put 'put ''S0FEd3ZkanB5WldOMFBnb0FQQzloUGdvQVBHRUFJR2h5WldZOUlpVnpJZ0FnZEdsMGJHVTlJaVZ6SWdBZ2RHRnlaMlYwUFNJbGN5SUFQZ29BUEM5Mk9tZHliM1Z3UGdvQVBDOUVTVlkrQ2dBOFJFbFdJR2xrUFNkZlZrMU1NbDhuSUhOMGVXeGxQU0p3YjNOcGRHbHZianB5Wld4aGRHbDJaVHQy''@;'; put 'put ''YVhOcFltbHNhWFI1T21ocFpHUmxiaUkrQ2dBOElTMHRJR2x1YzJWeWRDQmhibmtnYjNSb1pYSWdhSFJ0YkNCamIyNTBaVzUwSUdobGNtVWdMUzArQ2dBOFJFbFdJR2xrUFNkZmJtOTBWazFNTVY4bklITjBlV3hsUFNKd2IzTnBkR2x2YmpweVpXeGhkR2wyWlRzaVBnb0FQQ0V0TFNCMGFHbHpJ''@;'; put 'put ''SE5vYjNWc1pDQnZibXg1SUdScGMzQnNZWGtnYjI0Z1RrOU9MVWxGSUdKeWIzZHpaWEp6SUMwdFBnb0FQRWd5UGxOdmNuSjVMQ0IwYUdseklHUnBZV2R5WVcwZ2QybHNiQ0J2Ym14NUlHUnBjM0JzWVhrZ1kyOXljbVZqZEd4NUlHOXVJRWx1ZEdWeWJtVjBJRVY0Y0d4dmNtVnlJRFVnS0dGdVpD''@;'; put 'put ''QjFjQ2tnWW5KdmQzTmxjbk11UEM5SU1qNEtBRHhFU1ZZZ2FXUTlKMTl1YjNSV1RVd3lYeWNnYzNSNWJHVTlJbkJ2YzJsMGFXOXVPbkpsYkdGMGFYWmxPeUkrQ2dBOElTMHRJR2x1YzJWeWRDQmhibmtnYjNSb1pYSWdUazlPTFVsRklHaDBiV3dnWTI5dWRHVnVkQ0JvWlhKbElDMHRQZ29BUEM5''@;'; put 'put ''Q1QwUlpQZ284TDBoVVRVdytDZ0E4U0VWQlJENEFQRTFGVkVFZ2FIUjBjQzFsY1hWcGRqMGlRMjl1ZEdWdWRDMVVlWEJsSWlCamIyNTBaVzUwUFNKMFpYaDBMMmgwYld3N0lHTm9ZWEp6WlhROVZWUkdMVGdpUGdvQVBGUkpWRXhGUGdBOEwxUkpWRXhGUGdBOElTMHRJRkJoWjJWek9pQWxaQ0F0''@;'; put 'put ''TFQ0S0FDQWdJRHhUUTFKSlVGUWdURUZPUjFWQlIwVTlKMHBoZG1GelkzSnBjSFFuUGdvQUlDQWdablZ1WTNScGIyNGdZbkp2ZDNObGNtTm9aV05yS0NrS0FDQWdJSHNLQUNBZ0lDQWdJSFpoY2lCMVlTQTlJSGRwYm1SdmR5NXVZWFpwWjJGMGIzSXVkWE5sY2tGblpXNTBDZ0FnSUNBZ0lDQjJZ''@;'; put 'put ''WElnYlhOcFpTQTlJSFZoTG1sdVpHVjRUMllnS0NBblRWTkpSU0FuSUNrS0FDQWdJQ0FnSUhaaGNpQnBaWFpsY25NN0NnQWdJQ0FnSUNCMllYSWdhWFJsYlRzS0FDQWdJQ0FnSUhaaGNpQldUVXg1WlhNOWJtVjNJRUZ5Y21GNUtDZGZWazFNTVY4bkxDZGZWazFNTWw4bktUc0tBQ0FnSUNBZ0lI''@;'; put 'put ''WmhjaUJXVFV4dWJ6MXVaWGNnUVhKeVlYa29KMTl1YjNSV1RVd3hYeWNzSjE5dWIzUldUVXd5WHljcE93b0FJQ0FnSUNBZ2FXWWdLQ0J0YzJsbElENGdNQ0FwZXlBZ0lDQWdJQzh2SUVsbUlFbHVkR1Z5Ym1WMElFVjRjR3h2Y21WeUxDQnlaWFIxY200Z2RtVnljMmx2YmlCdWRXMWlaWElLQUNB''@;'; put 'put ''Z0lDQWdJQ0FnSUdsbGRtVnljejBnY0dGeWMyVkpiblFnS0hWaExuTjFZbk4wY21sdVp5QW9iWE5wWlNzMUxDQjFZUzVwYm1SbGVFOW1JQ2duTGljc0lHMXphV1VnS1NrcENnQWdJQ0FnSUNCOUNnQWdJQ0FnSUNCcFppQW9hV1YyWlhKelBqMDFLWHNLQUNBZ0lDQWdJQ0JtYjNJZ0tIZ2dhVzRn''@;'; put 'put ''VmsxTWVXVnpLWHNLQUNBZ0lDQWdJQ0FnSUdsMFpXMGdQU0JrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDaFdUVXg1WlhOYmVGMHBPd29BSUNBZ0lDQWdJQ0FnYVdZZ0tHbDBaVzBwSUhzS0FDQWdJQ0FnSUNBZ0lDQWdhWFJsYlM1emRIbHNaUzUyYVhOcFltbHNhWFI1UFNkMmFYTnBZ''@;'; put 'put ''bXhsSnpzS0FDQWdJQ0FnSUNBZ0lIMEtBQ0FnSUNBZ0lDQjlDZ0FnSUNBZ0lDQWdabTl5SUNoNElHbHVJRlpOVEc1dktYc0tBQ0FnSUNBZ0lDQWdJR2wwWlcwZ1BTQmtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNoV1RVeHViMXQ0WFNrN0NnQWdJQ0FnSUNBZ0lDQWdJR2wwWlcwdWMz''@;'; put 'put ''UjViR1V1ZG1semFXSnBiR2wwZVQwbmFHbGtaR1Z1SnpzS0FDQWdJQ0FnZldWc2MyVjdDZ0FnSUNBZ0lIMEtBQ0FnSUgwS0FDQWdJRHd2VTBOU1NWQlVQZ29BUEM5SVJVRkVQZ0E4UWs5RVdTQnZibXh2WVdROUoySnliM2R6WlhKamFHVmpheWdwT3ljK0NnQThSRWxXSUdsa1BTZGZWazFNTVY4''@;'; put 'put ''bklITjBlV3hsUFNKd2IzTnBkR2x2YmpweVpXeGhkR2wyWlRzZ1pHbHpjR3hoZVRwcGJteHBibVU3SUhacGMybGlhV3hwZEhrNmFHbGtaR1Z1QUNCM2FXUjBhRG9nSldSd2REc2dhR1ZwWjJoME9pQWxaSEIwSWo0S0FEeFRWRmxNUlQ0S0FIWmNPaW9nZXlCaVpXaGhkbWx2Y2pvZ2RYSnNLQ05r''@;'; put 'put ''WldaaGRXeDBJMVpOVENrN1pHbHpjR3hoZVRwcGJteHBibVV0WW14dlkydDlDZ0E4TDFOVVdVeEZQZ29BUEhodGJEcHVZVzFsYzNCaFkyVWdibk05SW5WeWJqcHpZMmhsYldGekxXMXBZM0p2YzI5bWRDMWpiMjA2ZG0xc0lpQndjbVZtYVhnOUluWWlJQzgrQ2dBZ1BIWTZaM0p2ZFhBZ2MzUjVi''@;'; put 'put ''R1U5SW5CdmMybDBhVzl1T25KbGJHRjBhWFpsT3lBQUlIZHBaSFJvT2lBbFpIQjBPeUJvWldsbmFIUTZJQ1ZrY0hRaUFDQmpiMjl5Wkc5eWFXZHBiajBpTUN3d0lpQmpiMjl5WkhOcGVtVTlJaVZrTENWa0lpQStBRHhJVkUxTVBnb0FDandoTFMwZ1IyVnVaWEpoZEdWa0lHSjVJQUFnZG1WeWMy''@;'; put 'put ''bHZiaUFBSUNnQUtRb3RMVDRLQUdGeGRXRUFablZqYUhOcFlRQnNhVzFsQUc5c2FYWmxBSFJsWVd3QWRtMXNBSFp0YkRwMmJXd0FMeThxS2lvZ1kyOXRiV1Z1ZERvZ0pYTUtBQzh2S2lvcUlIQnZiSGxzYVc1bENnQnpZMkZzWlNBZ0lDQThKVGt1TTJZc0lDVTVMak5tTENBbE9TNHpaajRLQUhK''@;'; put 'put ''dmRHRjBaU0FnSUR3bE9TNHpaaXdnSlRrdU0yWXNJQ1U1TGpObVBnb0FkSEpoYm5Oc1lYUmxQQ1U1TGpObUxDQWxPUzR6Wml3Z0pUa3VNMlkrQ2dCemNHaGxjbVZmYzNkbFpYQWdld29nSUNBZ0pYTUtJQ0FnSUNWa0xBb0FiR2x1WldGeVgzTndiR2x1WlFBOEpUa3VNMllzSUNVNUxqTm1MQ0Fs''@;'; put 'put ''T1M0elpqNHNJQ1V1TTJZS0FDVnpJQ0FnSUNWekFDQWdJQ0IwYjJ4bGNtRnVZMlVnTUM0d01Rb2dJQ0FnSlhNZ0lDQWdKWE1nSUNBZ0pYTWdJQ0FnSlhOOUNnQWxjeVZ6QUNWeklIUnlZVzV6YldsMElDVXVNMllBVW1Wa0FFZHlaV1Z1QUVKc2RXVUFjbWRpUENVNUxqTm1MQ0FsT1M0elppd2dK''@;'; put 'put ''VGt1TTJZK0lIUnlZVzV6YldsMElDVXVNMllBYjI5d2N5d2dhVzUwWlhKdVlXd2daWEp5YjNJNklIVnVhR0Z1Wkd4bFpDQmpiMnh2Y2lCMGVYQmxQU1ZrSUNWekNnQm5kbkpsYm1SbGNsOWpiM0psWDNCdmRpNWpBSEJ2ZGw5amIyeHZjbDloYzE5emRISUFjR2xuYldWdWRDQjdJR052Ykc5eUlD''@;'; put 'put ''VnpJSDBLQUhCdmRpQnlaVzVrWlhKbGNqcGxiQ0F0SUNWekNnQXZMeW9xS2lCaVpYcHBaWElLQUdKZmMzQnNhVzVsQUNBZ0lDQWdJQ0FnZEc5c1pYSmhibU5sSURBdU1ERUtJQ0FnSUNWeklDQWdJQ1Z6SUNBZ0lDVnpJQ0FnSUNWemZRb0FMeThxS2lvZ2NHOXNlV2R2YmdvQUlDQWdJSFJ2YkdW''@;'; put 'put ''eVlXNWpaU0F3TGpFS0lDQWdJQ1Z6SUNBZ0lDVnpJQ0FnSUNWeklDQWdJQ1Z6ZlFvQWNHOXNlV2R2YmlCN0lDVmtMQW9BUENVNUxqTm1MQ0FsT1M0elppd2dKVGt1TTJZK0FDVnpDaUFnSUNBbGN3QUtJQ0FnSUNWeklDQWdJQ1Z6SUNBZ0lDVnpJQ0FnSUNWemZRb0FMeThxS2lvZ1pXeHNhWEJ6''@;'; put 'put ''WlFvQWRHOXlkWE1nZXlBbExqTm1MQ0FsTGpObUNpQWdJQ0FsY3lBZ0lDQWxjeUFnSUNBbGN5QWdJQ0FsYzMwS0FITndhR1Z5WlNCN1BDVTVMak5tTENBbE9TNHpaaXdnSlRrdU0yWStMQ0F4TGpBS0lDQWdJQ1Z6SUNBZ0lDVnpJQ0FnSUNWeklDQWdJQ1Z6ZlFvQUx5OHFLaW9nZEdWNGRITndZ''@;'; put 'put ''VzQ2SUNWekxDQm1iMjUwYzJsNlpTQTlJQ1V1TTJZc0lHWnZiblJ1WVcxbElEMGdKWE1LQUhOallXeGxJQ1V1TTJZS0FIUmxlSFFnZXdvZ0lDQWdkSFJtSUNJbGN5SXNDaUFnSUNBaUpYTWlMQ0FsTGpObUxDQWxMak5tQ2lBZ0lDQWxjeUFnSUNBbGN5QWdJQ0FsY3lBZ0lDQWxjeUFnSUNBbGMz''@;'; put 'put ''MEtBQ0FnSUNCdWIxOXphR0ZrYjNjS0FDOHZLaW9xSUdWdVpGOWxaR2RsQ2dBdkx5b3FLaUJpWldkcGJsOWxaR2RsQ2dBdkx5b3FLaUJsYm1SZmJtOWtaUW9BTHk4cUtpb2dZbVZuYVc1ZmJtOWtaVG9nSlhNS0FDOHZLaW9xSUdWdVpGOWpiSFZ6ZEdWeUNnQXZMeW9xS2lCaVpXZHBibDlqYkhW''@;'; put 'put ''emRHVnlDZ0F2THlvcUtpQmxibVJmY0dGblpRb0FMeThxS2lvZ1ltVm5hVzVmY0dGblpRb0FMeThxS2lvZ1pXNWtYMnhoZVdWeUNnQXZMeW9xS2lCaVpXZHBibDlzWVhsbGNqb2dKWE1zSUNWa0x5VmtDZ0F2THlvcUtpQmxibVJmWjNKaGNHZ0tBQzh2S2lvcUlHSmxaMmx1WDJkeVlYQm9JQ1Z6''@;'; put 'put ''Q2dCallXMWxjbUVnZXlCc2IyTmhkR2x2YmlBOEpTNHpaaUFzSUNVdU0yWWdMQ0FsTGpObVBnb2dJQ0FnSUNBZ0lDQnNiMjlyWDJGMElDQThKUzR6WmlBc0lDVXVNMllnTENBbExqTm1QZ29nSUNBZ0lDQWdJQ0J5YVdkb2RDQjRJQ29nYVcxaFoyVmZkMmxrZEdnZ0x5QnBiV0ZuWlY5b1pXbG5h''@;'; put 'put ''SFFLSUNBZ0lDQWdJQ0FnWVc1bmJHVWdKUzR6WmdwOUNnQXZMM05yZVFwd2JHRnVaU0I3SUR3d0xDQXhMQ0F3UGl3Z01TQm9iMnhzYjNjS0lDQWdJSFJsZUhSMWNtVWdld29nSUNBZ0lDQWdJSEJwWjIxbGJuUWdleUJpYjNwdklIUjFjbUoxYkdWdVkyVWdNQzQ1TlFvZ0lDQWdJQ0FnSUNBZ0lD''@;'; put 'put ''QmpiMnh2Y2w5dFlYQWdld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdXekF1TURBZ2NtZGlJRHd3TGpBMUxDQXdMakl3TENBd0xqVXdQbDBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRnN3TGpVd0lISm5ZaUE4TUM0d05Td2dNQzR5TUN3Z01DNDFNRDVkQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JiTUM0''@;'; put 'put ''M05TQnlaMklnUERFdU1EQXNJREV1TURBc0lERXVNREErWFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnV3pBdU56VWdjbWRpSUR3d0xqSTFMQ0F3TGpJMUxDQXdMakkxUGwwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZzeExqQXdJSEpuWWlBOE1DNDFNQ3dnTUM0MU1Dd2dNQzQxTUQ1ZENpQWdJQ0Fn''@;'; put 'put ''SUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ2MyTmhiR1VnUERFdU1EQXNJREV1TURBc0lERXVOVEErSUNvZ01pNDFNQW9nSUNBZ0lDQWdJQ0FnSUNCMGNtRnVjMnhoZEdVZ1BEQXVNREFzSURBdU1EQXNJREF1TURBK0NpQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lHWnBibWx6YUNCN0lHRnRZ''@;'; put 'put ''bWxsYm5RZ01TQmthV1ptZFhObElEQWdmUW9nSUNBZ2ZRb2dJQ0FnYzJOaGJHVWdNVEF3TURBS2ZRb3ZMMjFwYzNRS1ptOW5JSHNnWm05blgzUjVjR1VnTWdvZ0lDQWdaR2x6ZEdGdVkyVWdOVEFLSUNBZ0lHTnZiRzl5SUhKbllpQThNUzR3TUN3Z01TNHdNQ3dnTVM0d01ENGdLaUF3TGpjMUNp''@;'; put 'put ''QWdJQ0JtYjJkZmIyWm1jMlYwSURBdU1UQUtJQ0FnSUdadloxOWhiSFFnTVM0MU1Bb2dJQ0FnZEhWeVluVnNaVzVqWlNBeExqYzFDbjBLTHk5bmJtUUtjR3hoYm1VZ2V5QThNQzR3TUN3Z01TNHdNQ3dnTUM0d01ENHNJREFLSUNBZ0lIUmxlSFIxY21VZ2V3b2dJQ0FnSUNBZ0lIQnBaMjFsYm5S''@;'; put 'put ''N0lHTnZiRzl5SUhKbllpQThNQzR5TlN3Z01DNDBOU3dnTUM0d01ENGdmUW9nSUNBZ0lDQWdJRzV2Y20xaGJDQjdJR0oxYlhCeklEQXVOelVnYzJOaGJHVWdNQzR3TVNCOUNpQWdJQ0FnSUNBZ1ptbHVhWE5vSUhzZ2NHaHZibWNnTUM0eE1DQjlDaUFnSUNCOUNuMEtBR3hwWjJoMFgzTnZkWEpq''@;'; put 'put ''WlNCN0lEd3hOVEF3TERNd01EQXNMVEkxTURBK0lHTnZiRzl5SUZkb2FYUmxJSDBLQUNOMlpYSnphVzl1SURNdU5qc0tBR2RzYjJKaGJGOXpaWFIwYVc1bmN5QjdJR0Z6YzNWdFpXUmZaMkZ0YldFZ01TNHdJSDBLQUNOa1pXWmhkV3gwSUhzZ1ptbHVhWE5vSUhzZ1lXMWlhV1Z1ZENBd0xqRWda''@;'; put 'put ''R2xtWm5WelpTQXdMamtnZlNCOUNnQWphVzVqYkhWa1pTQWlZMjlzYjNKekxtbHVZeUlLSTJsdVkyeDFaR1VnSW5SbGVIUjFjbVZ6TG1sdVl5SUtJMmx1WTJ4MVpHVWdJbk5vWVhCbGN5NXBibU1pQ2dBalpHVmpiR0Z5WlNBbGN5QTlJQ1Z6T3dvQVFteGhZMnNBVjJocGRHVUFZbUZyWlhKelky''@;'; put 'put ''aHZZd0JpY21GemN3QmljbWxuYUhSbmIyeGtBR0p5YjI1NlpRQmljbTl1ZW1VeUFHTnNaV0Z5QUdOdmIyeGpiM0J3WlhJQVkyOXdjR1Z5QUdSaGNtdGljbTkzYmdCa1lYSnJjSFZ5Y0d4bEFHUmhjbXQwWVc0QVpHRnlhM2R2YjJRQVpHdG5jbVZsYm1OdmNIQmxjZ0JrZFhOMGVYSnZjMlVBWm1W''@;'; put 'put ''c1pITndZWElBWm14bGMyZ0FaM0poZVRBMUFHZHlaV1Z1WTI5d2NHVnlBR2gxYm5SbGNuTm5jbVZsYmdCc2FXZG9kRjl3ZFhKd2JHVUFiR2xuYUhSM2IyOWtBRzFoYm1SaGNtbHViM0poYm1kbEFHMWxaR2wxYldadmNtVnpkR2R5WldWdUFHMWxaR2wxYldkdmJHUmxibkp2WkFCdFpXUnBkVzEz''@;'; put 'put ''YjI5a0FHMWxaRjl3ZFhKd2JHVUFiV2xqWVFCdVpXOXVZbXgxWlFCdVpXOXVjR2x1YXdCdVpYZHRhV1J1YVdkb2RHSnNkV1VBYm1WM2RHRnVBRzlzWkdkdmJHUUFjWFZoY25SNkFISnBZMmhpYkhWbEFITmpZWEpzWlhRQWMyVnRhVk4zWldWMFEyaHZZd0J6YVd4MlpYSUFjM0JwWTNsd2FXNXJB''@;'; put 'put ''SE4xYlcxbGNuTnJlUUIyWlhKNVpHRnlhMkp5YjNkdUFIWmxjbmxmYkdsbmFIUmZjSFZ5Y0d4bEFIQnZkZ0J3YjNZNmNHOTJBQ1Z6SUNWekNnQXVYQ0lnQUNBbFpDQWxaQUFnSlhNS0FDQWxaQUJtYVd4c0lBQmxiR3hwY0hObElHRjBkSEp6SldRZ0pYTjNhV1FnSlM0MVppQm9kQ0FsTGpWbUlH''@;'; put 'put ''RjBJQ2dsTGpWbUxDVXVOV1lwT3dvQUxtWjBJQ1Z6Q2dBdWNITWdKV1FxWEc0b1UwWjFMeVV1TUdaMUNnQWlKWE1pSUdGMElDZ2xMalZtTENVdU5XWXBPd29BSlRBemJ3QWxjeVZ6SUdseklHNXZkQ0JoSUhSeWIyWm1JR1p2Ym5RS0FHUnZkQ0J3YVdNZ2NHeDFaMmx1T2lBQVVnQmRDaTVRUlFv''@;'; put 'put ''QUxsQlRJQ1V1TldZZ0pTNDFaZ29BSlhNZ2RHOGdZMmhoYm1kbElHUnlZWGRwYm1jZ2MybDZaU3dnYlhWc2RHbHdiSGtnZEdobElIZHBaSFJvSUdGdVpDQm9aV2xuYUhRZ2IyNGdkR2hsSUM1UVV5QnNhVzVsSUdGaWIzWmxJR0Z1WkNCMGFHVWdiblZ0WW1WeUlHOXVJSFJvWlNCMGQyOGdiR2x1''@;'; put 'put ''WlhNZ1ltVnNiM2NnS0hKdmRXNWtaV1FnZEc4Z2RHaGxJRzVsWVhKbGMzUWdhVzUwWldkbGNpa2dZbmtnWVNCelkyRnNaU0JtWVdOMGIzSUtBQzV1Y2lCVFJpQWxMakJtQ25OallXeGxkR2hwWTJ0dVpYTnpJRDBnSlM0d1pnb0FKWE1nWkc5dUozUWdZMmhoYm1kbElHRnVlWFJvYVc1bklHSmxi''@;'; put 'put ''RzkzSUhSb2FYTWdiR2x1WlNCcGJpQjBhR2x6SUdSeVlYZHBibWNLQUNWeklHNXZiaTFtWVhSaGJDQnlkVzR0ZEdsdFpTQndhV01nZG1WeWMybHZiaUJrWlhSbGNtMXBibUYwYVc5dUxDQjJaWEp6YVc5dUlESUtBR0p2ZUhKaFpEMHlMakFnSlhNZ2QybHNiQ0JpWlNCeVpYTmxkQ0IwYnlBd0xq''@;'; put 'put ''QWdZbmtnWjNCcFl5QnZibXg1Q2dCelkyRnNaVDB4TGpBZ0pYTWdjbVZ4ZFdseVpXUWdabTl5SUdOdmJYQmhjbWx6YjI1ekNnQWxjeUJpYjNoeVlXUWdhWE1nYm05M0lEQXVNQ0JwYmlCbmNHbGpMQ0JsYkhObElHbDBJSEpsYldGcGJuTWdNaTR3Q2dBbGN5QmtZWE5vZDJsa0lHbHpJREF1TVNC''@;'; put 'put ''cGJpQXhNSFJvSUVWa2FYUnBiMjRzSURBdU1EVWdhVzRnUkZkQ0lESWdZVzVrSUdsdUlHZHdhV01LQUNWeklHWnBiR3gyWVd3Z2FYTWdNQzR6SUdsdUlERXdkR2dnUldScGRHbHZiaUFvWm1sc2JDQXdJRzFsWVc1eklHSnNZV05yS1N3Z01DNDFJR2x1SUdkd2FXTWdLR1pwYkd3Z01DQnRaV0Z1''@;'; put 'put ''Y3lCM2FHbDBaU2tzSUhWdVpHVm1hVzVsWkNCcGJpQkVWMElnTWdvQUpYTWdabWxzYkNCb1lYTWdibThnYldWaGJtbHVaeUJwYmlCRVYwSWdNaXdnWjNCcFl5QmpZVzRnZFhObElHWnBiR3dnYjNJZ1ptbHNiR1ZrTENBeE1IUm9JRVZrYVhScGIyNGdkWE5sY3lCbWFXeHNJRzl1YkhrS0FDVnpJ''@;'; put 'put ''RVJYUWlBeUlHUnZaWE51SjNRZ2RYTmxJR1pwYkd3Z1lXNWtJR1J2WlhOdUozUWdaR1ZtYVc1bElHWnBiR3gyWVd3S0FDVnpJSEpsYzJWMElIZHZjbXR6SUdsdUlHZHdhV01nWVc1a0lERXdkR2dnWldScGRHbHZiaXdnWW5WMElHbHpiaWQwSUdSbFptbHVaV1FnYVc0Z1JGZENJRElLQUNWeklF''@;'; put 'put ''UlhRaUF5SUdOdmJYQmhkR2xpYVd4cGRIa2daR1ZtYVc1cGRHbHZibk1LQUdsbUlHSnZlSEpoWkNBK0lERXVNQ0FtSmlCa1lYTm9kMmxrSUR3Z01DNHdOelVnZEdobGJpQllDZ2xtYVd4c2RtRnNJRDBnTVRzS0NXUmxabWx1WlNCbWFXeHNJRmtnV1RzS0NXUmxabWx1WlNCemIyeHBaQ0JaSUZr''@;'; put 'put ''N0NnbGtaV1pwYm1VZ2NtVnpaWFFnV1NCelkyRnNaVDB4TGpBZ1dUc0tXQW9BY21WelpYUWdKWE1nYzJWMElIUnZJR3R1YjNkdUlITjBZWFJsQ2dBbGN5QkhUbFVnY0dsaklIWnpMaUF4TUhSb0lFVmthWFJwYjI0Z1pGd29aU2QwWlc1MFpRb0FhV1lnWm1sc2JIWmhiQ0ErSURBdU5DQjBhR1Z1''@;'; put 'put ''SUZnS0NXUmxabWx1WlNCelpYUm1hV3hzZG1Gc0lGa2dabWxzYkhaaGJDQTlJREVnTFNCWk93b0paR1ZtYVc1bElHSnZiR1FnV1NCMGFHbGphMjVsYzNNZ01pQlpPd29BQ1NWeklHbG1JSGx2ZFNCMWMyVWdaM0JwWXlCaGJtUWdhWFFnWW1GeVpuTWdiMjRnWlc1amIzVnVkR1Z5YVc1bklDSnpi''@;'; put 'put ''MnhwWkNJc0NnQUpKWE1KYVc1emRHRnNiQ0JoSUcxdmNtVWdjbVZqWlc1MElIWmxjbk5wYjI0Z2IyWWdaM0JwWXlCdmNpQnpkMmwwWTJnZ2RHOGdSRmRDSUc5eUlERXdkR2dnUldScGRHbHZiaUJ3YVdNN0NnQUpKWE1KYzI5eWNua3NJSFJvWlNCbmNtOW1aaUJtYjJ4cmN5QmphR0Z1WjJWa0lH''@;'; put 'put ''ZHdhV003SUhObGJtUWdZVzU1SUdOdmJYQnNZV2x1ZENCMGJ5QjBhR1Z0T3dvQVdDQmxiSE5sSUZvS0NXUmxabWx1WlNCelpYUm1hV3hzZG1Gc0lGa2dabWxzYkhaaGJDQTlJRms3Q2dsa1pXWnBibVVnWW05c1pDQlpJRms3Q2dsa1pXWnBibVVnWm1sc2JHVmtJRmtnWm1sc2JDQlpPd3BhQ2dB''@;'; put 'put ''bGN5Qmhjbkp2ZDJobFlXUWdhR0Z6SUc1dklHMWxZVzVwYm1jZ2FXNGdSRmRDSURJc0lHRnljbTkzYUdWaFpDQTlJRGNnYldGclpYTWdabWxzYkdWa0lHRnljbTkzYUdWaFpITWdhVzRnWjNCcFl5QmhibVFnYVc0Z01UQjBhQ0JGWkdsMGFXOXVDZ0FsY3lCaGNuSnZkMmhsWVdRZ2FYTWdkVzVr''@;'; put 'put ''WldacGJtVmtJR2x1SUVSWFFpQXlMQ0JwYm1sMGFXRnNiSGtnTVNCcGJpQm5jR2xqTENBeUlHbHVJREV3ZEdnZ1JXUnBkR2x2YmdvQVlYSnliM2RvWldGa0lEMGdOeUFsY3lCdWIzUWdkWE5sWkNCaWVTQm5jbUZ3YUhacGVnb0FKWE1nUjA1VklIQnBZeUJ6ZFhCd2IzSjBjeUJoSUdKdmVISmha''@;'; put 'put ''Q0IyWVhKcFlXSnNaU0IwYnlCa2NtRjNJR0p2ZUdWeklIZHBkR2dnY205MWJtUmxaQ0JqYjNKdVpYSnpPeUJFVjBJZ1lXNWtJREV3ZEdnZ1JXUXVJR1J2SUc1dmRBb0FZbTk0Y21Ga0lEMGdNQ0FsY3lCdWJ5QnliM1Z1WkdWa0lHTnZjbTVsY25NZ2FXNGdaM0poY0doMmFYb0tBQ1Z6SUVkT1ZT''@;'; put 'put ''QndhV01nYzNWd2NHOXlkSE1nWVNCc2FXNWxkR2hwWTJzZ2RtRnlhV0ZpYkdVZ2RHOGdjMlYwSUd4cGJtVWdkR2hwWTJ0dVpYTnpPeUJFVjBJZ1lXNWtJREV3ZEdnZ1JXUXVJR1J2SUc1dmRBb0FiR2x1WlhSb2FXTnJJRDBnTURzZ2IyeGtiR2x1WlhSb2FXTnJJRDBnYkdsdVpYUm9hV05yQ2dB''@;'; put 'put ''bGN5QXVVRk1nZHk5dklHRnlaM01nWTJGMWMyVnpJRWRPVlNCd2FXTWdkRzhnYzJOaGJHVWdaSEpoZDJsdVp5QjBieUJtYVhRZ09DNDFlREV4SUhCaGNHVnlPeUJFVjBJZ1pHOWxjeUJ1YjNRS0FDVnpJRzFoZUhCemFIUWdZVzVrSUcxaGVIQnpkMmxrSUdoaGRtVWdibThnYldWaGJtbHVaeUJw''@;'; put 'put ''YmlCRVYwSWdNaTR3TENCelpYUWdjR0ZuWlNCaWIzVnVaR0Z5YVdWeklHbHVJR2R3YVdNZ1lXNWtJR2x1SURFd2RHZ2dSV1JwZEdsdmJnb0FKWE1nYldGNGNITm9kQ0JoYm1RZ2JXRjRjSE4zYVdRZ1lYSmxJSEJ5WldSbFptbHVaV1FnZEc4Z01URXVNQ0JoYm1RZ09DNDFJR2x1SUdkd2FXTUtB''@;'; put 'put ''RzFoZUhCemFIUWdQU0FsWmdwdFlYaHdjM2RwWkNBOUlDVm1DZ0JFYjNRNklGc0tBR1JsWm1sdVpTQmhkSFJ5Y3pBZ0pTVWdKU1U3SUdSbFptbHVaU0IxYm1acGJHeGxaQ0FsSlNBbEpUc2daR1ZtYVc1bElISnZkVzVrWldRZ0pTVWdKU1U3SUdSbFptbHVaU0JrYVdGbmIyNWhiSE1nSlNVZ0pT''@;'; put 'put ''VUtBQ1Z6SlhNZ2RXNXpkWEJ3YjNKMFpXUUtBQ1Z6SUhKbGMzUnZjbVVnY0c5cGJuUWdjMmw2WlNCaGJtUWdabTl1ZEFvdWNITWdYRzRvTGxNS0xtWjBJRnh1S0VSR0NnQWxjeUJEY21WaGRHOXlPaUFsY3lCMlpYSnphVzl1SUNWeklDZ2xjeWtLQUNWeklGUnBkR3hsT2lBbGN3b0FKWE1nYzJG''@;'; put 'put ''MlpTQndiMmx1ZENCemFYcGxJR0Z1WkNCbWIyNTBDaTV1Y2lBdVV5QmNiaWd1Y3dvdWJuSWdSRVlnWEc0b0xtWUtBSEJwWXdCd2FXTTZjR2xqQUhCdVp6cHpkbWNBWjJsbU9uTjJad0JxY0dWbk9uTjJad0JxY0dVNmMzWm5BR3B3WnpwemRtY0FjRzVuT21acFp3Qm5hV1k2Wm1sbkFHcHdaV2M2''@;'; put 'put ''Wm1sbkFHcHdaVHBtYVdjQWFuQm5PbVpwWndCd2JtYzZkbkp0YkFCbmFXWTZkbkp0YkFCcWNHVm5Pblp5Yld3QWFuQmxPblp5Yld3QWFuQm5Pblp5Yld3QVpYQnpPbkJ6QUhCek9uQnpBQ2hzYVdJcE9uQnpBSEJ1WnpwdFlYQUFaMmxtT20xaGNBQnFjR1ZuT20xaGNBQnFjR1U2YldGd0FHcHda''@;'; put 'put ''enB0WVhBQWNITTZiV0Z3QUdWd2N6cHRZWEFBYzNabk9tMWhjQUJ3Ym1jNlpHOTBBR2RwWmpwa2IzUUFhbkJsWnpwa2IzUUFhbkJsT21SdmRBQnFjR2M2Wkc5MEFIQnpPbVJ2ZEFCbGNITTZaRzkwQUhOMlp6cGtiM1FBY0c1bk9uaGtiM1FBWjJsbU9uaGtiM1FBYW5CbFp6cDRaRzkwQUdwd1pU''@;'; put 'put ''cDRaRzkwQUdwd1p6cDRaRzkwQUhCek9uaGtiM1FBWlhCek9uaGtiM1FBYzNabk9uaGtiM1FBYzNabk9uTjJad0J3Ym1jNmRtMXNBR2RwWmpwMmJXd0FhbkJsWnpwMmJXd0FhbkJsT25adGJBQnFjR2M2ZG0xc0FHZHBaanAwYXdCcGJXRm5aU0JqY21WaGRHVWdjR2h2ZEc4Z0luQm9iM1J2WHlW''@;'; put 'put ''eklpQXRabWxzWlNBaUpYTWlDZ0FrWXlCamNtVmhkR1VnYVcxaFoyVWdKUzR5WmlBbExqSm1JQzFwYldGblpTQWljR2h2ZEc5ZkpYTWlDZ0E4ZGpwcGJXRm5aU0J6Y21NOUlpVnpJaUJ6ZEhsc1pUMGlJSEJ2YzJsMGFXOXVPbUZpYzI5c2RYUmxPeUIzYVdSMGFEb2xMakptT3lCb1pXbG5hSFE2''@;'; put 'put ''SlM0eVpqc2diR1ZtZERvbExqSm1JRHNnZEc5d09pVXVNbVlpQUNBdlBnb0FaM1pzYjJGa2FXMWhaMlZmWTI5eVpTNWpBR052Y21WZmJHOWhaR2x0WVdkbFgzQnpiR2xpQUZzZ0FDVm5JQ1ZuSUFCZElDQWxaQ0IwY25WbElDVnpDZ0JkSUNBbFpDQm1ZV3h6WlNBbGN3b0FZMjl5WlY5c2IyRmth''@;'; put 'put ''VzFoWjJWZmNITUFaM05oZG1VZ0pXY2dKV2NnZEhKaGJuTnNZWFJsSUc1bGQzQmhkR2dLQUhWelpYSmZjMmhoY0dWZkpXUUtBR2R5WlhOMGIzSmxDZ0JqYjNKbFgyeHZZV1JwYldGblpWOTJjbTFzQUZOb1lYQmxJSHNLQUNBZ1lYQndaV0Z5WVc1alpTQkJjSEJsWVhKaGJtTmxJSHNLQUNBZ0lD''@;'; put 'put ''QnRZWFJsY21saGJDQk5ZWFJsY21saGJDQjdDZ0FnSUNBZ0lDQmhiV0pwWlc1MFNXNTBaVzV6YVhSNUlEQXVNek1LQUNBZ0lDQWdJQ0FnWkdsbVpuVnpaVU52Ykc5eUlERWdNU0F4Q2dBZ0lDQWdmUW9BSUNBZ0lIUmxlSFIxY21VZ1NXMWhaMlZVWlhoMGRYSmxJSHNnZFhKc0lDSWxjeUlnZlFv''@;'; put 'put ''QUlDQjlDZ0JqYjNKbFgyeHZZV1JwYldGblpWOW1hV2NBSldRZ0pXUWdKV1FnSldRZ0pXUWdKV1FnSldRZ0pXUWdKV1FnSlM0eFppQWxaQ0FsWkNBbFpDQWxaQ0FsWkNBbFpBb2dKV1FnSlhNS0FDQWxaQ0FsWkNBbFpDQWxaQ0FsWkNBbFpDQWxaQ0FsWkNBbFpDQWxaQW9BWTI5eVpWOXNiMkZr''@;'; put 'put ''YVcxaFoyVmZjM1puQUR4cGJXRm5aU0I0YkdsdWF6cG9jbVZtUFNJQUlpQjNhV1IwYUQwaUpXZHdlQ0lnYUdWcFoyaDBQU0lsWjNCNElpQndjbVZ6WlhKMlpVRnpjR1ZqZEZKaGRHbHZQU0o0VFdsa1dVMXBaQ0J0WldWMElpQjRQU0lsWnlJZ2VUMGlKV2NpQUNCMGNtRnVjMlp2Y20wOUluSnZk''@;'; put 'put ''R0YwWlNnbFpDQWxaeUFsWnlraUFDSWdkMmxrZEdnOUlpVm5jSGdpSUdobGFXZG9kRDBpSldkd2VDSWdjSEpsYzJWeWRtVkJjM0JsWTNSU1lYUnBiejBpZUUxcGJsbE5hVzRnYldWbGRDSWdlRDBpSldjaUlIazlJaVZuSWdBdlBnb0FaRzkwWDJ4aGVXOTFkQUJ3YUdGelpRQmtiM1FnWkc5bGN5''@;'; put 'put ''QnViM1FnYzNWd2NHOXlkQ0IwYUdVZ1lYTndaV04wSUdGMGRISnBZblYwWlNCbWIzSWdaR2x6WTI5dWJtVmpkR1ZrSUdkeVlYQm9jeUJ2Y2lCbmNtRndhSE1nZDJsMGFDQmpiSFZ6ZEdWeWN3b0FZMjl0Y0c5MWJtUUFkaUE5UFNCdUFHUnZkR2x1YVhRdVl3QnlaVzF2ZG1WZlpuSnZiVjl5WVc1''@;'; put 'put ''ckFHOXlaR1Z5QUdWa1oyVWdiR0ZpWld4eklIZHBkR2dnYzNCc2FXNWxjejFqZFhKMlpXUWdibTkwSUhOMWNIQnZjblJsWkNCcGJpQmtiM1FnTFNCMWMyVWdlR3hoWW1Wc2N3b0FSVVJmYkdGaVpXd29abVVwQUdSdmRITndiR2x1WlhNdVl3QmZaRzkwWDNOd2JHbHVaWE1BWm14aGRDQmxaR2Rs''@;'; put 'put ''SUdKbGRIZGxaVzRnWVdScVlXTmxiblFnYm05a1pYTWdiMjVsSUc5bUlIZG9hV05vSUdoaGN5QmhJSEpsWTI5eVpDQnphR0Z3WlNBdElISmxjR3hoWTJVZ2NtVmpiM0prY3lCM2FYUm9JRWhVVFV3dGJHbHJaU0JzWVdKbGJITUtBQ0FnUldSblpTQWxjeUFsY3lBbGN3b0FlSGg0QURFd01EQXdB''@;'; put 'put ''SHNsYzMwQVlYVjRad0JzWVdKbGJGOW1iRzloZEFCbWFYaGxaQUFvYkNBOUlFVkVYMnhoWW1Wc0tHWmxLU2tBYzJWMFJXUm5aVXhoWW1Wc1VHOXpBR1VnSVQwZ1RsVk1UQUJtWVhOMFozSXVZd0JrWld4bGRHVmZabUZ6ZEY5bFpHZGxBRzRnSVQwZ1RrUmZibVY0ZENodUtRQm1ZWE4wWDI1dlpH''@;'; put 'put ''VUFkU0FoUFNCMkFHWmhjM1JmYm05a1pXRndjQUJPUkY5dVpYaDBLSFlwSUQwOUlFNVZURXdBWm1sdVpGOW1ZWE4wWDI1dlpHVW9aeXdnYmlrQVpHVnNaWFJsWDJaaGMzUmZibTlrWlFCa1pXeGxkR1ZmWm14aGRGOWxaR2RsQUcxbGNtZGxYMjl1WlhkaGVTQm5iR2wwWTJnS0FHMWxjbWRsWDI5''@;'; put 'put ''dVpYZGhlUUJ6WVdabFgyUmxiR1YwWlY5bVlYTjBYMlZrWjJVQWJHY0FZMjl0Y0FCamJuUWdQVDBnYzNvQWJXbHVZM0p2YzNNdVl3Qm1hWGhNWVdKbGJFOXlaR1Z5QUhKbGJXbHVZM0p2YzNNQWJXbHVZM0p2YzNNZ0pYTTZJQ1ZrSUdOeWIzTnphVzVuY3l3Z0pTNHlaaUJ6WldOekxnb0FkZ0J1''@;'; put 'put ''WldsbmFHSnZjZ0FvY25ZZ1BUMGdNQ2tnZkh3Z0tFNUVYMjl5WkdWeUtISjJLUzFPUkY5dmNtUmxjaWgyS1NrcVpHbHlJRDRnTUFCamIyNXpkSEpoYVc1cGJtZGZabXhoZEY5bFpHZGxLR2NzZGl4bEtTQTlQU0JHUVV4VFJRQm1iR0YwWDNKbGIzSmtaWElBVGtSZmNtRnVheWgyS1NBOVBTQnlB''@;'; put 'put ''SEJ2YzNSdmNtUmxjZ0JtYkdGMGFXNWtaWGdvWVdkb1pXRmtLR1VwS1NBOElFMHRQbTV5YjNkekFHWnNZWFJmYzJWaGNtTm9BR1pzWVhScGJtUmxlQ2hoWjNSaGFXd29aU2twSUR3Z1RTMCtibU52YkhNQWIzVjBBRzl5WkdWeWFXNW5JQ2NsY3ljZ2JtOTBJSEpsWTI5bmJtbDZaV1F1Q2dCdmNt''@;'; put 'put ''UmxjbWx1WnlBbkpYTW5JRzV2ZENCeVpXTnZaMjVwZW1Wa0lHWnZjaUJ1YjJSbElDY2xjeWN1Q2dCdFpYSm5aVEk2SUdkeVlYQm9JQ1Z6TENCeVlXNXJJQ1ZrSUdoaGN5QnZibXg1SUNWa0lEd2dKV1FnYm05a1pYTUtBRzFwYm1OeWIzTnpPaUJ3WVhOeklDVmtJR2wwWlhJZ0pXUWdkSEo1YVc1''@;'; put 'put ''bklDVmtJR04xY2w5amNtOXpjeUFsWkNCaVpYTjBYMk55YjNOeklDVmtDZ0JPUkY5dmNtUmxjaWgyS1NBOElFNUVYMjl5WkdWeUtIY3BBR0poYkdGdVkyVUFkSEpoYm5Od2IzTmxYM04wWlhBQWMzVnljSEpwYzJVS0FHbHVjM1JoYkd4ZmFXNWZjbUZ1YXl3Z2JHbHVaU0FsWkRvZ0pYTWdKWE1n''@;'; put 'put ''Y21GdWF5QWxaQ0JwSUQwZ0pXUWdZVzRnUFNBd0NnQkhSRjl5WVc1cktHY3BXM0pkTG00Z1BEMGdSMFJmY21GdWF5aG5LVnR5WFM1aGJnQnBibk4wWVd4c1gybHVYM0poYm1zQWFXNXpkR0ZzYkY5cGJsOXlZVzVyTENCc2FXNWxJQ1ZrT2lCT1JGOXZjbVJsY2lnbGN5a2dXeVZrWFNBK0lFZEVY''@;'; put 'put ''M0poYm1zb1VtOXZkQ2xiSldSZExtRnVJRnNsWkYwS0FHbHVjM1JoYkd4ZmFXNWZjbUZ1YXl3Z2JHbHVaU0FsWkRvZ2NtRnVheUFsWkNCdWIzUWdhVzRnY21GdWF5QnlZVzVuWlNCYkpXUXNKV1JkQ2dCcGJuTjBZV3hzWDJsdVgzSmhibXNzSUd4cGJtVWdKV1E2SUVkRVgzSmhibXNvWnlsYkpX''@;'; put 'put ''UmRMbllnS3lCT1JGOXZjbVJsY2lnbGN5a2dXeVZrWFNBK0lFZEVYM0poYm1zb1p5bGJKV1JkTG1GMklDc2dSMFJmY21GdWF5aFNiMjkwS1ZzbFpGMHVZVzRnV3lWa1hRb0FYMjVsZDE5eVlXNXJBRzFqYkdsdGFYUUFjbUZ1YXlobkxDQXlMQ0J1YzJsMFpYSXlLR2NwS1NBOVBTQXdBSEJ2YzJs''@;'; put 'put ''MGFXOXVMbU1BWkc5MFgzQnZjMmwwYVc5dUFFRlNQU1V3TGpSc1pna2dRWEpsWVQwZ0pUQXVOR3htQ1FCRWRXMXRlVDBsWkFvQVIyOXBibWNnZEc4Z1lYQndiSGtnWVc1dmRHaGxjaUJsZUhCaGJuTnBiMjR1Q2dCdVpYaDBJMmwwWlhJOUpXUUtBR2h3QUdOdmJtNWxZM1JIY21Gd2FBQkZaR2Rs''@;'; put 'put ''SUd4bGJtZDBhQ0FsWmlCc1lYSm5aWElnZEdoaGJpQnRZWGhwYlhWdElDVjFJR0ZzYkc5M1pXUXVDa05vWldOcklHWnZjaUJ2ZG1WeWQybGtaU0J1YjJSbEtITXBMZ29BYm5Oc2FXMXBkQUJqYjI1MFlXbHVYMjV2WkdWeklHTnNkWE4wSUNWeklISmhibXNnSldRZ2JXbHpjMmx1WnlCdWIyUmxD''@;'; put 'put ''Z0J1YzJ4cGJXbDBNUUJ1WlhkeVlXNXJBRTFoZUhKaGJtc2dQU0FsWkN3Z2JXbHVjbUZ1YXlBOUlDVmtDZ0JzWldGa1pYSWdJVDBnVGxWTVRBQnlZVzVyTG1NQVkyeDFjM1JsY2w5c1pXRmtaWElBS0U1RVgxVkdYM05wZW1Vb2Jpa2dQRDBnTVNrZ2ZId2dLRzRnUFQwZ2JHVmhaR1Z5S1FCaFoy''@;'; put 'put ''aGxZV1FvWlNrZ1BUMGdWVVpmWm1sdVpDaGhaMmhsWVdRb1pTa3BBRzFwYm0xaGVGOWxaR2RsY3dCaFozUmhhV3dvWlNrZ1BUMGdWVVpmWm1sdVpDaGhaM1JoYVd3b1pTa3BBSEpoYm1zQWMyRnRaUUJ0YVc0QWMyOTFjbU5sQUcxaGVBQnphVzVyQUd4bGRtVnNJR0Z6YzJsbmJtMWxiblFnWTI5''@;'; put 'put ''dWMzUnlZV2x1ZEhNQWJHVjJaV3dnWjNKaGNHZ2djbVZqQUg5eWIyOTBBSDkwYjNBQWYySnZkQUJqYjIxd1lXTjBBRjkzWldGclh5VmtBSEpoYm10cGJtYzZJR1poYVd4MWNtVWdkRzhnWTNKbFlYUmxJSE4wY205dVp5QmpiMjV6ZEhKaGFXNTBJR1ZrWjJVZ1ltVjBkMlZsYmlCdWIyUmxjeUFs''@;'; put 'put ''Y3lCaGJtUWdKWE1LQUNWeklHaGhjeUIxYm5KbFkyOW5ibWw2WldRZ2NtRnVhejBsY3dCc1pYWmxiQ0JsWkdkbElISmxZd0JzWlhabGJDQnViMlJsSUhKbFl3QnpZVzFsYUdWaFpBQnpZVzFsZEdGcGJBQjBiMjhnYldGdWVTQW9QaUFsWkNrZ2MyRnRaWHRvWldGa0xIUmhhV3g5SUdkeWIzVndj''@;'; put 'put ''eUJtYjNJZ2JtOWtaU0FsY3dvQVkyOXRZbWxCVWlBOUlDVnNaZ29BSld4bUxDVmtBSFJvWlNCaGMzQmxZM1FnWVhSMGNtbGlkWFJsSUdoaGN5QmlaV1Z1SUdScGMyRmliR1ZrSUdSMVpTQjBieUJwYlhCc1pXMWxiblJoZEdsdmJpQm1iR0YzY3lBdElHRjBkSEpwWW5WMFpTQnBaMjV2Y21Wa0xn''@;'; put 'put ''b0FSVVJmZEc5ZmRtbHlkQ2hsS1NBOVBTQk9WVXhNQUdOc1lYTnpNaTVqQUcxbGNtZGxYMk5vWVdsdUFFVkVYM1J2WDNacGNuUW9iM0pwWnlrZ1BUMGdUbFZNVEFCdFlXdGxYMk5vWVdsdUFFVkVYM1J2WDNacGNuUW9iM0pwWnlrZ0lUMGdUbFZNVEFCT1JGOXlZVzVyS0daeWIyMHBJRHdnVGtS''@;'; put 'put ''ZmNtRnVheWgwYnlrQVkyeDFjM1JsY2k1akFHMWhjRjl3WVhSb0FDVnpJSGRoY3lCaGJISmxZV1I1SUdsdUlHRWdjbUZ1YTNObGRDd2daR1ZzWlhSbFpDQm1jbTl0SUdOc2RYTjBaWElnSlhNS0FHeG9aV0ZrQUd4MFlXbHNBQ1Z6SUMwK0lDVnpPaUJ6Y0d4cGJtVWdjMmw2WlNBK0lERWdibTkw''@;'; put 'put ''SUhOMWNIQnZjblJsWkFvQUpYTWdMVDRnSlhNNklHaGxZV1FnYm05MElHbHVjMmxrWlNCb1pXRmtJR05zZFhOMFpYSWdKWE1LQUNWeklDMCtJQ1Z6T2lCMFlXbHNJR2x6SUdsdWMybGtaU0JvWldGa0lHTnNkWE4wWlhJZ0pYTUtBR0psZWkwK2MyWnNZV2NBWTI5dGNHOTFibVF1WXdCdFlXdGxR''@;'; put 'put ''Mjl0Y0c5MWJtUkZaR2RsQUdKbGVpMCtaV1pzWVdjQUpYTWdMVDRnSlhNNklIUmhhV3dnYm05MElHbHVjMmxrWlNCMFlXbHNJR05zZFhOMFpYSWdKWE1LQUNWeklDMCtJQ1Z6T2lCb1pXRmtJR2x6SUdsdWMybGtaU0IwWVdsc0lHTnNkWE4wWlhJZ0pYTUtBSE5sWjIxbGJuUWdXeVZ6TENWelhT''@;'; put 'put ''QmtiMlZ6SUc1dmRDQnBiblJsY25ObFkzUWdZbTk0SUd4c1BTVnpMSFZ5UFNWekNnQmliM2hKYm5SbGNuTmxZM1JtQUNnbExqVm5MQ1V1TldjcEFHTnNkWE4wWlhJZ2JtRnRaV1FnSlhNZ2JtOTBJR1p2ZFc1a0NnQmpiMjVqWlc1MGNtRjBaVDEwY25WbElHMWhlU0J1YjNRZ2QyOXlheUJqYjNK''@;'; put 'put ''eVpXTjBiSGt1Q2dCeVpXSjFhV3gwWkY5MmJHbHpkSE02SUhKaGJtc2diR1ZoWkNBbGN5QnViM1FnYVc0Z2IzSmtaWElnSldRZ2IyWWdjbUZ1YXlBbFpBb0FaR1ZuWlc1bGNtRjBaU0JqYjI1alpXNTBjbUYwWldRZ2NtRnVheUFsY3l3bFpBb0FUa1JmYVc0b2NtbG5hSFFwTG5OcGVtVWdLeUJP''@;'; put 'put ''UkY5dmRYUW9jbWxuYUhRcExuTnBlbVVnUFQwZ01BQmpiMjVqTG1NQWJXVnlaMlYyYVhKMGRXRnNBR1J2ZERvZ1QzVjBJRzltSUcxbGJXOXllUW9BVGtSZmIzVjBLSFlwTG5OcGVtVWdQVDBnTWdCbWJHRjBMbU1BYzJWMFltOTFibVJ6QUVkRVgyMXBibkpoYm1zb1p5a2dQVDBnTUFCaFltOXRh''@;'; put 'put ''VzVoZEdsdmJnQnVaV0YwYjE5c1lYbHZkWFFBYm1WaGRHOEFabVJ3QUhObVpIQUFkSGR2Y0drQVkybHlZMjhBY0dGMFkyaDNiM0pyQUc5ellXZGxBRzV2Y0FCdWIzQXhBRzV2Y0RJQUpXeG1MQ1ZzWml3bGJHWWxZd0J1YjJSbElDVnpMQ0J3YjNOcGRHbHZiaUFsY3l3Z1pYaHdaV04wWldRZ2RI''@;'; put 'put ''ZHZJR1J2ZFdKc1pYTUtBRzV2ZEhKaGJuTnNZWFJsQUc1dlpHVWdKWE1nYVc0Z1ozSmhjR2dnSlhNZ2FHRnpJRzV2SUhCdmMybDBhVzl1Q2dCekxDVnNaaXdsYkdZbGJnQWdaU3dsYkdZc0pXeG1KVzRBY0c5eklHRjBkSEpwWW5WMFpTQm1iM0lnWldSblpTQW9KWE1zSlhNcElHUnZaWE51SjNR''@;'; put 'put ''Z2FHRjJaU0F6YmlzeElIQnZhVzUwY3dvQUpXeG1MQ1ZzWmlWdUFITjViblJoZUNCbGNuSnZjaUJwYmlCd2IzTWdZWFIwY21saWRYUmxJR1p2Y2lCbFpHZGxJQ2dsY3l3bGN5a0tBQ1ZzWml3bGJHWXNKV3htTENWc1pnQnpkR0Z5ZEFCelpXeG1BSEpoYm1SdmJRQnViMlJsSUhCdmMybDBhVzl1''@;'; put 'put ''Y3lCaGNtVWdhV2R1YjNKbFpDQjFibXhsYzNNZ2MzUmhjblE5Y21GdVpHOXRDZ0JoY3lCeVpYRjFhWEpsWkNCaWVTQjBhR1VnTFc0Z1pteGhad29BWDI1bFlYUnZYMk5qQUdkeVlYQm9JQ1Z6SUdseklHUnBjMk52Ym01bFkzUmxaQzRnU0dWdVkyVXNJSFJvWlNCamFYSmpkV2wwSUcxdlpHVnND''@;'; put 'put ''Z0JCYkhSbGNtNWhkR2wyWld4NUxDQmpiMjV6YVdSbGNpQnlkVzV1YVc1bklHNWxZWFJ2SUhWemFXNW5JQzFIY0dGamF6MTBjblZsSUc5eUlHUmxZMjl0Y0c5emFXNW5DZ0IwYUdVZ1ozSmhjR2dnYVc1MGJ5QmpiMjV1WldOMFpXUWdZMjl0Y0c5dVpXNTBjeTRLQUZOdmJIWnBibWNnYlc5a1pX''@;'; put 'put ''d2dKV1FnYVhSbGNtRjBhVzl1Y3lBbFpDQjBiMndnSldZS0FFNUVYMmxrS0c1d0tTQTlQU0JwQUc1bFlYUnZhVzVwZEM1akFHMWhhMlZIY21Gd2FFUmhkR0VBWmlBOElHZHlZWEJvVzJwZExtNWxaR2RsY3dCa1puTkRlV05zWlFCdGIyUmxiQ0FsWkNCemJXRnlkRjlwYm1sMElDVmtJSE4wY21W''@;'; put 'put ''emMzZDBJQ1ZrSUdsMFpYSmhkR2x2Ym5NZ0pXUWdkRzlzSUNWbUNnQmpiMjUyWlhKMElHZHlZWEJvT2lBQWJXRnFiM0pwZW1GMGFXOXVDZ0FsWkNCdWIyUmxjeUFsTGpKbUlITmxZd29BYkdWMlpXeHpaMkZ3QUd4aGVXOTFkQ0JoWW05eWRHVmtDZ0J6ZEhKbGMzTjNkQUFsY3lCaGRIUnlhV0ox''@;'; put 'put ''ZEdVZ2RtRnNkV1VnYlhWemRDQmlaU0F4SUc5eUlESWdMU0JwWjI1dmNtbHVad29BYlc5a1pXd0FZMmx5WTNWcGRBQnpkV0p6WlhRQWMyaHZjblJ3WVhSb0FHMWtjd0JsWkdkbGN5QnBiaUJuY21Gd2FDQWxjeUJvWVhabElHNXZJR3hsYmlCaGRIUnlhV0oxZEdVdUlFaGxibU5sTENCMGFHVWdi''@;'; put 'put ''V1J6SUcxdlpHVnNDZ0JwY3lCcGJtRndjSEp2Y0hKcFlYUmxMaUJTWlhabGNuUnBibWNnZEc4Z2RHaGxJSE5vYjNKMFpYTjBJSEJoZEdnZ2JXOWtaV3d1Q2dCVmJtdHViM2R1SUhaaGJIVmxJQ1Z6SUdadmNpQmhkSFJ5YVdKMWRHVWdJbTF2WkdWc0lpQnBiaUJuY21Gd2FDQWxjeUF0SUdsbmJt''@;'; put 'put ''OXlaV1FLQUcxdlpHVUFTMHNBYldGcWIzSUFhR2xsY2dCSmJHeGxaMkZzSUhaaGJIVmxJQ1Z6SUdadmNpQmhkSFJ5YVdKMWRHVWdJbTF2WkdVaUlHbHVJR2R5WVhCb0lDVnpJQzBnYVdkdWIzSmxaQW9BYldGclpWTndiR2x1WlRvZ1ptRnBiR1ZrSUhSdklHMWhhMlVnYzNCc2FXNWxJR1ZrWjJV''@;'; put 'put ''Z0tDVnpMQ1Z6S1FvQWMzQnNhVzVsSUNWeklDVnpDZ0JpSUQwOUlHNEFibVZoZEc5emNHeHBibVZ6TG1NQWJXRnJaVjlpWVhKeWFXVnljd0IwYUdVZ1ltOTFibVJwYm1jZ1ltOTRaWE1nYjJZZ2MyOXRaU0J1YjJSbGN5QjBiM1ZqYUNBdElHWmhiR3hwYm1jZ1ltRmpheUIwYnlCemRISmhhV2Rv''@;'; put 'put ''ZENCc2FXNWxJR1ZrWjJWekNnQnpiMjFsSUc1dlpHVnpJSGRwZEdnZ2JXRnlaMmx1SUNnbExqQXlaaXdsTGpBeVppa2dkRzkxWTJnZ0xTQm1ZV3hzYVc1bklHSmhZMnNnZEc4Z2MzUnlZV2xuYUhRZ2JHbHVaU0JsWkdkbGN3b0FjRzlzZVd4cGJtVnpBR3hwYm1VZ2MyVm5iV1Z1ZEhNQWIzSjBh''@;'; put 'put ''RzluYjI1aGJDQnNhVzVsY3dCRGNtVmhkR2x1WnlCbFpHZGxjeUIxYzJsdVp5QWxjd29BY0c5c2VXeHBibVVnSlhNZ0pYTUtBRzFrYzAxdlpHVnNPaUJrWld4MFlTQTlJQ1ZtQ2dCVFpYUjBhVzVuSUhWd0lITjBjbVZ6Y3lCbWRXNWpkR2x2YmdCVGIyeDJhVzVuSUcxdlpHVnNPaUFBQ21acGJt''@;'; put 'put ''RnNJR1VnUFNBbFppQWxaQ0JwZEdWeVlYUnBiMjV6SUNVdU1tWWdjMlZqQ2dCRVlXMXdhVzVuQUdSbFptRjFiSFJrYVhOMEFDQnBiaUFsY3lBdElITmxkSFJwYm1jZ2RHOGdKUzR3TW1ZS0FHSmhaQ0JsWkdkbElHeGxiaUFpSlhNaUFGTmxkSFJwYm1jZ2FXNXBkR2xoYkNCd2IzTnBkR2x2Ym5N''@;'; put 'put ''S0FITjBZWEowUFNWeklHNXZkQ0J6ZFhCd2IzSjBaV1FnZDJsMGFDQnRiMlJsUFhObGJHWWdMU0JwWjI1dmNtVmtDZ0JUWlhSMGFXNW5JSFZ3SUhOd2NtbHVaeUJ0YjJSbGJEb2dBQ1V1TW1ZZ2MyVmpDZ0FLWm1sdVlXd2daU0E5SUNWbUFDRUFJQ1ZrSlhNZ2FYUmxjbUYwYVc5dWN5QWxMakpt''@;'; put 'put ''SUhObFl3b0FUV0Y0TGlCcGRHVnlZWFJwYjI1eklDZ2xaQ2tnY21WaFkyaGxaQ0J2YmlCbmNtRndhQ0FsY3dvQUpYTWdKUzR6WmdvQUpTNHpaaUFBVGtSZmFHVmhjR2x1WkdWNEtIWXBJRHdnTUFCemRIVm1aaTVqQUc1bFlYUnZYMlZ1Y1hWbGRXVUFRMkZzWTNWc1lYUnBibWNnYzJodmNuUmxj''@;'; put 'put ''M1FnY0dGMGFITTZJQUJ6Y0dWamFXWnBaV1FnY205dmRDQnViMlJsSUNJbGN5SWdkMkZ6SUc1dmRDQm1iM1Z1WkM0QVZYTnBibWNnWkdWbVlYVnNkQ0JqWVd4amRXeGhkR2x2YmlCbWIzSWdjbTl2ZENCdWIyUmxDZ0J5WlhCdmMybDBhVzl1SUNWekNnQWxjeUE2SUNWbUlDVm1DZ0FsY3lBNklD''@;'; put 'put ''Vm1JQ1ZtSUNWbUlDVm1DZ0FnSUFCSGNtRndhQ0FsY3lCb1lYTWdZWEp5WVhrZ2NHRmphMmx1WnlCM2FYUm9JSFZ6WlhJZ2RtRnNkV1Z6SUdKMWRDQnVieUFpYzI5eWRIWWlJR0YwZEhKcFluVjBaWE1nWVhKbElHUmxabWx1WldRdUFIQnBiZ0JYWVhKdWFXNW5PaUJ1YjJSbElDVnpMQ0J3YjNO''@;'; put 'put ''cGRHbHZiaUFsY3l3Z1pYaHdaV04wWldRZ2RIZHZJR1pzYjJGMGN3b0FZMjl2Y21SekFHeGhlVzkxZENBbGN3b0FaVzVrSUNWekNnQnBaSGdnUFQwZ2Mzb0FiR0Y1YjNWMExtTUFaWGh3WVc1a1EyeDFjM1JsY2dCcElEMDlJR1JsWndCblpYUkZaR2RsVEdsemRBQmZaR2RmSldRQVpHVnlhWFps''@;'; put 'put ''SUdkeVlYQm9JQ1Z6SUc5bUlDVnpDZ0J1YjJSbElDSWxjeUlnYVhNZ1kyOXVkR0ZwYm1Wa0lHbHVJSFIzYnlCdWIyNHRZMjl0Y0dGeVlXSnNaU0JqYkhWemRHVnljeUFpSlhNaUlHRnVaQ0FpSlhNaUNnQmZjRzl5ZEY4bGMxOGxjMThsYzE4bGJHUUFYM0J2Y25SZkpYTmZLQ1ZrS1Y4b0pXUXBY''@;'; put 'put ''eVZzWkFBbGJHWXNKV3htTENWc1ppd2xiR1lsWXdCbmNtRndhQ0FsY3l3Z1kyOXZjbVFnSlhNc0lHVjRjR1ZqZEdWa0lHWnZkWElnWkc5MVlteGxjd29BYzNCc2FXNWxjeUJoYm1RZ1kyeDFjM1JsY2lCbFpHZGxjeUJ1YjNRZ2MzVndjRzl5ZEdWa0lDMGdkWE5wYm1jZ2JHbHVaU0J6WldkdFpX''@;'; put 'put ''NTBjd29BYldGNGFYUmxjZ0JVTUFCbVpIQWdaRzlsY3lCdWIzUWdjM1Z3Y0c5eWRDQnpkR0Z5ZEQxelpXeG1JQzBnYVdkdWIzSnBibWNLQUhoTVlYbHZkWFFnQURrNmNISnBjMjBBZEhKcFpYTWdQU0FsWkN3Z2JXOWtaU0E5SUNWekNnQmtaWEpwZG1Wa0FHbHVabThBYzJaa2NDQnZibXg1SUhO''@;'; put 'put ''MWNIQnZjblJ6SUhOMFlYSjBQWEpoYm1SdmJRb0FTd0J5WlhCMWJITnBkbVZtYjNKalpRQnNaWFpsYkhNQWMyMXZiM1JvYVc1bkFIRjFZV1IwY21WbEFHSmxZWFYwYVdaNUFHOTJaWEpzWVhCZmMyaHlhVzVyQUhKdmRHRjBhVzl1QUd4aFltVnNYM05qYUdWdFpRQnNZV0psYkY5elkyaGxiV1Vn''@;'; put 'put ''UFNBbFpDQStJRFFnT2lCcFoyNXZjbWx1WndvQVptRnpkQUJoZG1kZlpHbHpkQUJuY21Gd2FGOWthWE4wQUhCdmQyVnlYMlJwYzNRQWMzQnlhVzVuQUdScGJXVnVBR1JwYlFCemNISnBibWRmWld4bFkzUnlhV05oYkY5amIyNTBjbTlzT2dvQUlDQnlaWEIxYkhOcGRtVWdZVzVrSUdGMGRISmhZ''@;'; put 'put ''M1JwZG1VZ1pYaHdiMjVsYm5Sek9pQWxMakF6WmlBbExqQXpaZ29BSUNCeVlXNWtiMjBnYzNSaGNuUWdKV1FnYzJWbFpDQWxaQW9BSUNCTElEb2dKUzR3TTJZZ1F5QTZJQ1V1TURObUNnQWdJRzFoZUNCc1pYWmxiSE1nSldRZ1kyOWhjbk5sYmw5elkyaGxiV1VnSldRZ1kyOWhjbk5sYmw5dWIy''@;'; put 'put ''UmxJQ1ZrQ2dBZ0lIRjFZV1IwY21WbElITnBlbVVnSldRZ2JXRjRYMnhsZG1Wc0lDVmtDZ0FnSUVKaGNtNWxjeTFJZFhSMElHTnZibk4wWVc1MElDVXVNRE5tSUhSdmJHVnlZVzVqWlNBZ0pTNHdNMllnYldGNGFYUmxjaUFsWkFvQUlDQmpiMjlzYVc1bklDVXVNRE5tSUhOMFpYQWdjMmw2WlNB''@;'; put 'put ''Z0pTNHdNMllnWVdSaGNIUnBkbVVnSldRS0FDQWdZbVZoZFhScFpubGZiR1ZoZG1WeklDVmtJRzV2WkdVZ2QyVnBaMmgwY3lBbFpDQnliM1JoZEdsdmJpQWxMakF6WmdvQUlDQnpiVzl2ZEdocGJtY2dKWE1nYjNabGNteGhjQ0FsWkNCcGJtbDBhV0ZzWDNOallXeHBibWNnSlM0d00yWWdaRzlm''@;'; put 'put ''YzJoeWFXNXJhVzVuSUNWa0NnQWdJRzlqZEhKbFpTQnpZMmhsYldVZ0pYTWdiV1YwYUc5a0lDVnpDZ0FnSUdWa1oyVmZiR0ZpWld4cGJtZGZjMk5vWlcxbElDVmtDZ0JUVUZKSlRrZGZSVXhGUTFSU1NVTkJUQUJUVUZKSlRrZGZUVUZZUlU1VUFGTlVVa1ZUVTE5TlFWaEZUbFFBVTFSU1JWTlRY''@;'; put 'put ''MEZRVUZKUFdBQlRWRkpGVTFNQVZVNUpSazlTVFY5VFZGSkZVMU1BUmxWTVRGOVRWRkpGVTFNQVRrOU9SUUJPVDFKTlFVd0FSa0ZUVkFCSVdVSlNTVVFBVTFSU1JWTlRYMDFCU2s5U1NWcEJWRWxQVGw5SFVrRlFTRjlFU1ZOVUFGTlVVa1ZUVTE5TlFVcFBVa2xhUVZSSlQwNWZRVlpIWDBSSlUx''@;'; put 'put ''UUFVMVJTUlZOVFgwMUJTazlTU1ZwQlZFbFBUbDlRVDFkRlVsOUVTVk5VQUZOUVVrbE9Sd0JVVWtsQlRrZE1SUUJTVGtjQURTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRHVnlJRDBnSldRc0lITjBaWEFnUFNBbFppQkdibTl5YlNBOUlDVm1JRzU2SUQwZ0pXUWdJRXNnUFNBbFppQWdJQ0FnSUNB''@;'; put 'put ''Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBQWMzQnlhVzVuWDJWc1pXTjBjbWxqWVd4ZlpXMWlaV1JrYVc1blgzTnNiM2NBWkcxbFlXNGdQU0FsWml3Z2NtaHZJRDBnSldZS0FITmxibVFnY21GdVpHOXRJR052YjNKa2FXNWhkR1Z6Q2dCelkyRnNhVzVuSUdaaFkzUnZjaUE5''@;'; put 'put ''SUNWbUNnQlJWVUZFWDFSU1JVVmZTRmxDVWtsRUxDQnphWHBsSUd4aGNtZGxjaUIwYUdGdUlDVmtMQ0J6ZDJsMFkyZ2dkRzhnWm1GemRDQnhkV0ZrZEhKbFpRQmpkSEpzTFQ1dmRtVnliR0Z3UFNWa0NnQWxaQ0FsWkFvQWRXNXBabTl5YlY5emRISmxjM011WXdCVmJtbG1iM0p0VTNSeVpYTnpV''@;'; put 'put ''MjF2YjNSb1pYSmZibVYzQUZOd1lYSnpaVTFoZEhKcGVGOXBjMTl6ZVcxdFpYUnlhV01vUWl3Z1JrRk1VMFVwQUhWdWFXWnZjbTFmYzNSeVpYTnpBSHhsWkdkbGJHRmlaV3g4QUd4bGJnQnViM0p0WVd4cGVtVUFiM1psY214aGNBQlBkbVZ5YkdGd0lIWmhiSFZsSUNJbGN5SWdkVzV6ZFhCd2Iz''@;'; put 'put ''SjBaV1FnTFNCcFoyNXZjbVZrQ2dCVmJuSmxZMjluYm1sNlpXUWdiM1psY214aGNDQjJZV3gxWlNBaUpYTWlJQzBnZFhOcGJtY2dabUZzYzJVS0FGWnZjbTl1YjJrQWIzWmxjbXhoY0RvZ0pYTWdkbUZzZFdVZ0pXUWdjMk5oYkdsdVp5QWxMakEwWmdvQWIzWmxjbXhoY0Y5elkyRnNhVzVuQUha''@;'; put 'put ''dmNtOXViMmtBYzJOaGJHbHVad0IyY0hOakFHbHdjMlZ3QUc5elkyRnNaUUJ2YkdRZ2MyTmhiR2x1WndCelkyRnNaWGg1QUhnZ1lXNWtJSGtnYzJOaGJHbHVad0J2Y25Sb2J3QnZjblJvYjJkdmJtRnNJR052Ym5OMGNtRnBiblJ6QUc5eWRHaHZYM2w0QUc5eWRHaHZlSGtBZUhrZ2IzSjBhRzlu''@;'; put 'put ''YjI1aGJDQmpiMjV6ZEhKaGFXNTBjd0J2Y25Sb2IzbDRBSGw0SUc5eWRHaHZaMjl1WVd3Z1kyOXVjM1J5WVdsdWRITUFjRzl5ZEdodkFIQnpaWFZrYnkxdmNuUm9iMmR2Ym1Gc0lHTnZibk4wY21GcGJuUnpBSEJ2Y25Sb2IxOTVlQUJ3YjNKMGFHOTRlUUI0ZVNCd2MyVjFaRzh0YjNKMGFHOW5i''@;'; put 'put ''MjVoYkNCamIyNXpkSEpoYVc1MGN3QndiM0owYUc5NWVBQjVlQ0J3YzJWMVpHOHRiM0owYUc5bmIyNWhiQ0JqYjI1emRISmhhVzUwY3dCd2NtbHpiUUJCWkdwMWMzUnBibWNnSlhNZ2RYTnBibWNnSlhNS0FGVnVhR0Z1Wkd4bFpDQmhaR3AxYzNRZ2IzQjBhVzl1SUNWekNnQk9kVzFpWlhJZ2Iy''@;'; put 'put ''WWdhWFJsY21GMGFXOXVjeUE5SUNWa0NnQk9kVzFpWlhJZ2IyWWdhVzVqY21WaGMyVnpJRDBnSldRS0FHOTJaWEpzWVhBZ1d5VmtYU0E2SUNWa0NnQjJiM0p2WDIxaGNtZHBiZ0J6WlhBQVpYTmxjQUJPYjJSbElITmxjR0Z5WVhScGIyNDZJR0ZrWkQwbFpDQW9KV1lzSldZcENnQWxaaXdsWmdC''@;'; put 'put ''elkyRnNaU0E5SUNnbExqQXpaaXdsTGpBelppa0tBRVZrWjJVZ2MyVndZWEpoZEdsdmJqb2dZV1JrUFNWa0lDZ2xaaXdsWmlrS0FFTmhiR04xYkdGMGFXNW5JR05wY21OMWFYUWdiVzlrWld3QVkyOXVhblZuWVhSbFgyZHlZV1JwWlc1ME9pQjFibVY0Y0dWamRHVmtJR3hsYm1kMGFDQXdJSFps''@;'; put 'put ''WTNSdmNnb0FRMkZzWTNWc1lYUnBibWNnYzNWaWMyVjBJRzF2WkdWc0FHZHlZWEJvSUdseklHUnBjMk52Ym01bFkzUmxaQzRnU0dWdVkyVXNJSFJvWlNCamFYSmpkV2wwSUcxdlpHVnNDZ0JwY3lCMWJtUmxabWx1WldRdUlGSmxkbVZ5ZEdsdVp5QjBieUIwYUdVZ2MyaHZjblJsYzNRZ2NHRjBh''@;'; put 'put ''Q0J0YjJSbGJDNEtBRU5oYkdOMWJHRjBhVzVuSUUxRVV5QnRiMlJsYkFCRFlXeGpkV3hoZEdsdVp5QnphRzl5ZEdWemRDQndZWFJvY3dBNklDVXVNbVlnYzJWakNnQlRaWFIwYVc1bklHbHVhWFJwWVd3Z2NHOXphWFJwYjI1ekFEb2dKUzR5WmlCelpXTUFZMmNBWkdWc2RHRWdQRDBnTUhoR1Jr''@;'; put 'put ''WkdBR052Ym5OMGNtRnBiblF1WXdCdGEwNURiMjV6ZEhKaGFXNTBSd0IyWndCamIyMXdjbVZ6Y3lBbFp5QUtBSE5qWVd4bElHSjVJQ1ZuTENWbklBb0FZbVZ6ZEdOdmMzUWdQQ0JJVlVkRlgxWkJUQUJqYjIxd2RYUmxVMk5oYkdWWVdRQkhjbUZ3YUhacGVpQmlkV2xzZENCM2FYUm9iM1YwSUdG''@;'; put 'put ''dWVTQjBjbWxoYm1kMWJHRjBhVzl1SUd4cFluSmhjbmtLQUdSbGJHRjFibUY1WDNSeWFXRnVaM1ZzWVhScGIyNDZJQ1Z6Q2dCa1pXeGhkVzVoZVY5MGNtazZJQ1Z6Q2dCMGNubHBibWNnZEc4Z1pHVnNaWFJsSUdFZ2JtOXVMV3hwYm1VS0FBcHBiblJsY25ObFkzUnBiMjRnWVhRZ0pTNHpaaUFs''@;'; put 'put ''TGpObUNnQnpaV2NqSldRZ09pQW9KUzR6Wml3Z0pTNHpaaWtnS0NVdU0yWXNJQ1V1TTJZcENnQnlaVzF2ZG1WZmIzWmxjbXhoY0RvZ1IzSmhjR2gyYVhvZ2JtOTBJR0oxYVd4MElIZHBkR2dnZEhKcFlXNW5kV3hoZEdsdmJpQnNhV0p5WVhKNUNnQnRZV3RsUVdSa1VHOXNlVG9nZFc1cmJtOTNi''@;'; put 'put ''aUJ6YUdGd1pTQjBlWEJsSUNWekNnQnRZV3RsVUc5c2VUb2dkVzVyYm05M2JpQnphR0Z3WlNCMGVYQmxJQ1Z6Q2dCNElUMU9WVXhNQUhOdFlYSjBYMmx1YVY5NExtTUFTVTFFVTE5bmFYWmxibDlrYVcwQWFXeHNMV052Ym1ScGRHbHZibVZrQUhKdmIzUWdQU0FsY3lCdFlYZ2djM1JsY0hNZ2RH''@;'; put 'put ''OGdjbTl2ZENBOUlDVmtDZ0IwZDI5d2FUb2dkWE5sSUc5bUlIZGxhV2RvZEQwd0lHTnlaV0YwWlhNZ1pHbHpZMjl1Ym1WamRHVmtJR052YlhCdmJtVnVkQzRLQUZKaGJtc2djMlZ3WVhKaGRHbHZiaUE5SUFBbExqQXpiR1lnQUdGeVpXRUFhVzV6WlhRQUpYTWdZMjl2Y21RZ0pTNDFaeUFsTGpW''@;'; put 'put ''bklHaDBJQ1ZtSUhkcFpIUm9JQ1ZtQ2dBbExqQXpaZ0J5WldNZ0pXWWdKV1lnSldZZ0pXWUtBQ1ZtSUMwZ0pXWWdKV1lnSldZZ0pXWWdQU0FsWmlBb0pXWWdKV1lnSldZZ0pXWXBDZ0IwY25scGJtY2dkRzhnWVdSa0lIUnZJSEpsWTNRZ2V5Vm1JQ3N2TFNBbFppd2dKV1lnS3k4dElDVm1mUW9B''@;'; put 'put ''ZEc5MFlXd2dZV1JrWldRZ2MyOGdabUZ5SUQwZ0pXUUtBR0ZrWkdsdVp5QWxaQ0JwZEdWdGN5d2dkRzkwWVd3Z1lYSmxZU0E5SUNWbUxDQjNJRDBnSldZc0lHRnlaV0V2ZHowbFpnb0FZMjl0Y0c5MWJtUkZaR2RsY3pvZ1kyOTFiR1FnYm05MElHTnZibk4wY25WamRDQnZZbk4wWVdOc1pYTWdM''@;'; put 'put ''U0JtWVd4c2FXNW5JR0poWTJzZ2RHOGdjM1J5WVdsbmFIUWdiR2x1WlNCbFpHZGxjd29BWTI5dGNHOTFibVJGWkdkbGN6b2dibTlrWlhNZ2RHOTFZMmdnTFNCbVlXeHNhVzVuSUdKaFkyc2dkRzhnYzNSeVlXbG5hSFFnYkdsdVpTQmxaR2RsY3dvQWNHRmpheUIyWVd4MVpTQWxaQ0JwY3lCemJX''@;'; put 'put ''RnNiR1Z5SUhSb1lXNGdaWE5sY0NBb0pTNHdNMllzSlM0d00yWXBDZ0J6WlhBZ2RtRnNkV1VnS0NVdU1ETm1MQ1V1TURObUtTQnBjeUJ6YldGc2JHVnlJSFJvWVc0Z1pYTmxjQ0FvSlM0d00yWXNKUzR3TTJZcENnQmpZeVZ6WHlWa0FHTmpKWE1ySldRQVkxOWpiblFnUFQwZ01BQmpiMjF3TG1N''@;'; put 'put ''QVptbHVaRU5EYjIxd0FHZHlhV1FvSldRc0pXUXBPaUFsY3dvQWQyZDBJRDRnTUFCUmRXRmtWSEpsWlM1akFGRjFZV1JVY21WbFgzSmxjSFZzYzJsMlpWOW1iM0pqWlY5aFkyTjFiWFZzWVhSbEFIRjBNaTArYmlBK0lEQUFjWFF4TFQ1dUlENGdNQ0FtSmlCeGRESXRQbTRnUGlBd0FGRjFZV1JV''@;'; put 'put ''Y21WbFgzSmxjSFZzYzJsMlpWOW1iM0pqWlY5cGJuUmxjbUZqZEFCa2FYTjBJRDRnTUFBaEtIRXRQbXdwQUZGMVlXUlVjbVZsWDJGa1pGOXBiblJsY201aGJBQnBhU0E4SURFOFBHUnBiU0FtSmlCcGFTQStQU0F3QUhFdFBuRjBjMXRwYVYwQWNTMCtiaUE5UFNBeEFDRW9jUzArY1hSektRQnhM''@;'; put 'put ''VDVzQUhkcFpIUm9JRDRnTUFCUmRXRmtWSEpsWlY5dVpYY0FRUzArWm05eWJXRjBJRDA5SUVaUFVrMUJWRjlEVTFJQVUzQmhjbk5sVFdGMGNtbDRMbU1BVTNCaGNuTmxUV0YwY21sNFgzUnlZVzV6Y0c5elpRQkJJQ1ltSUVJQVUzQmhjbk5sVFdGMGNtbDRYMkZrWkFCQkxUNW1iM0p0WVhRZ1BU''@;'; put 'put ''MGdRaTArWm05eWJXRjBJQ1ltSUVFdFBtWnZjbTFoZENBOVBTQkdUMUpOUVZSZlExTlNBRUV0UG5SNWNHVWdQVDBnUWkwK2RIbHdaUUJUY0dGeWMyVk5ZWFJ5YVhoZmFYTmZjM2x0YldWMGNtbGpBRUV0UG1admNtMWhkQ0E5UFNCR1QxSk5RVlJmUTA5UFVrUUFVM0JoY25ObFRXRjBjbWw0WDJa''@;'; put 'put ''eWIyMWZZMjl2Y21ScGJtRjBaVjltYjNKdFlYUUFiU0ErSURBZ0ppWWdiaUErSURBZ0ppWWdibm9nUGowZ01BQlRjR0Z5YzJWTllYUnlhWGhmWm5KdmJWOWpiMjl5WkdsdVlYUmxYMkZ5Y21GNWMxOXBiblJsY201aGJBQkJBR3BoVzIxaGMydGJhbUZiYWwxZFhTQTlQU0JxWVZ0cVhRQlRjR0Z5''@;'; put 'put ''YzJWTllYUnlhWGhmYzNWdFgzSmxjR1ZoZEY5bGJuUnlhV1Z6QUdsa0lEd2diaW9vZVcxaGVDMTViV2x1S3pFcEFHcGhXMjFoYzJ0YmFXUmRYU0E5UFNCcVlWdHFYUUJUY0dGeWMyVk5ZWFJ5YVhoZmJYVnNkR2x3YkhsZlpHVnVjMlV5QUVFdFBuUjVjR1VnUFQwZ1RVRlVVa2xZWDFSWlVFVmZV''@;'; put 'put ''a1ZCVEFCVGNHRnljMlZOWVhSeWFYaGZiWFZzZEdsd2JIbGZkbVZqZEc5eUFFRXRQblI1Y0dVZ1BUMGdUVUZVVWtsWVgxUlpVRVZmVWtWQlRDQjhmQ0JCTFQ1MGVYQmxJRDA5SUUxQlZGSkpXRjlVV1ZCRlgwbE9WRVZIUlZJQVUzQmhjbk5sVFdGMGNtbDRYMjExYkhScGNHeDVYMlJsYm5ObE1R''@;'; put 'put ''QlRjR0Z5YzJWTllYUnlhWGhmYlhWc2RHbHdiSGtBYW1OYmJXRnphMXRxWWx0clhWMWRJRDA5SUdwaVcydGRBRk53WVhKelpVMWhkSEpwZUY5dGRXeDBhWEJzZVRNQWFtUmJiV0Z6YTF0cVkxdHJYVjFkSUQwOUlHcGpXMnRkQUZOd1lYSnpaVTFoZEhKcGVGOWpiMjl5WkdsdVlYUmxYMlp2Y20x''@;'; put 'put ''ZllXUmtYMlZ1ZEhKcFpYTUFVM0JoY25ObFRXRjBjbWw0WDJScGRtbGtaVjl5YjNkZllubGZaR1ZuY21WbEFHNGdQaUF4QUdkbGJtVnlZV3d1WXdCcGNtRnVaQUJ2Ym1WaWJHOWphd0J0YVc1a2FYTjBBR0Z5ZEdsamRXeGhkR2x2Ymw5d2IzTUFjbTl2ZEFCUWNtbHZjbWwwZVZGMVpYVmxMbU1B''@;'; put 'put ''VUhKcGIzSnBkSGxSZFdWMVpWOXdkWE5vQUdkaGFXNGdQRDBnY1MwK2JtZGhhVzRBVTNCaGNuTmxUV0YwY21sNFgybHpYM041YlcxbGRISnBZeWhCTENCR1FVeFRSU2tBY0c5emRGOXdjbTlqWlhOekxtTUFhV1JsWVd4ZlpHbHpkR0Z1WTJWZmJXRjBjbWw0QUd4bGJpQStJREFBVTNSeVpYTnpU''@;'; put 'put ''V0ZxYjNKcGVtRjBhVzl1VTIxdmIzUm9aWEl5WDI1bGR3QnVlaUErSURBQWFXUmxZV3hmWkdsemRGOXpZMmhsYldVZ2RtRnNkV1VnZDNKdmJtY0FVM0JoY25ObFRXRjBjbWw0WDJselgzTjViVzFsZEhKcFl5aEJMQ0JHUVV4VFJTa2dKaVlnUVMwK2RIbHdaU0E5UFNCTlFWUlNTVmhmVkZsUVJW''@;'; put 'put ''OVNSVUZNQUZOd1lYSnpaVk4wY21WemMwMWhhbTl5YVhwaGRHbHZibE50YjI5MGFHVnlYMjVsZHdCcFpHbGhaeUErUFNBd0FGTjBjbVZ6YzAxaGFtOXlhWHBoZEdsdmJsTnRiMjkwYUdWeVgzTnRiMjkwYUFBb0lXcGpiaWtnSmlZZ0tDRjJZV3dwQUdkbGRGOWxaR2RsWDJ4aFltVnNYMjFoZEhK''@;'; put 'put ''cGVBQlVjbWxoYm1kc1pWTnRiMjkwYUdWeVgyNWxkd0JxWkdsaFp5QStQU0F3QUZOd2NtbHVaMU50YjI5MGFHVnlYMjVsZHdBaFpteGhad0JUY0hKcGJtZFRiVzl2ZEdobGNsOXpiVzl2ZEdnQWJtVnBaMmhpUFNWa0NnQnliMjkwSUQwZ0pYTUtBRjlpYkc5amExOGxaQUJ6TFQ1emVpQStJREFB''@;'; put 'put ''WW14dlkydDBjbVZsTG1NQWNHOXdBR0ZqZEhWaGJBQnViMlJsYkdsemRDNWpBR2x1YzJWeWRFNXZaR1ZzYVhOMEFGOXpjR0Z1WHlWa0FGOWpiRzl1WlY4bFpBQnBjQUJrWldkc2FYTjBMbU1BY21WdGIzWmxSR1ZuYkdsemRBQkZjbkp2Y2dCWFlYSnVhVzVuQUNWek9pQUFkWE5sY205MWREb2dZ''@;'; put 'put ''MjkxYkdRZ2JtOTBJR0ZzYkc5allYUmxJRzFsYlc5eWVRb0FYMEZIWDNOMGNtUmhkR0VBWDBGSFgyUmhkR0ZrYVdOMEFHRm5aR2xqZEc5bU9pQjFibXR1YjNkdUlHdHBibVFnSldRS0FDVmpKV3hrQUcxbGJXOXllU0JoYkd4dlkyRjBhVzl1SUdaaGFXeDFjbVVBWVdka1pXeGxkR1VnYjI0Z2Qz''@;'; put 'put ''SnZibWNnWjNKaGNHZ0FYMEZIWDNCbGJtUnBibWNBWVdkeVpXTnZjbVJmWTJGc2JHSmhZMnNnYjJZZ1lTQmlZV1FnYjJKcVpXTjBBSEJsYm1RZ1pHbGpkRzltSUdFZ1ltRmtJRzlpYW1WamRBQnRiM1psSUhSdklHWnliMjUwSUd4dlkyc2dhVzVqYjI1emFYTjBaVzVqZVFCY1hBQm1ZWFJoYkNC''@;'; put 'put ''bWJHVjRJSE5qWVc1dVpYSWdhVzUwWlhKdVlXd2daWEp5YjNJdExXNXZJR0ZqZEdsdmJpQm1iM1Z1WkFBbGN3b0FabUYwWVd3Z1pteGxlQ0J6WTJGdWJtVnlJR2x1ZEdWeWJtRnNJR1Z5Y205eUxTMWxibVFnYjJZZ1luVm1abVZ5SUcxcGMzTmxaQUJtWVhSaGJDQmxjbkp2Y2lBdElITmpZVzV1''@;'; put 'put ''WlhJZ2FXNXdkWFFnWW5WbVptVnlJRzkyWlhKbWJHOTNBRzkxZENCdlppQmtlVzVoYldsaklHMWxiVzl5ZVNCcGJpQmhZV2RmWjJWMFgyNWxlSFJmWW5WbVptVnlLQ2tBYVc1d2RYUUFjM2x1ZEdGNElHRnRZbWxuZFdsMGVTQXRJR0poWkd4NUlHUmxiR2x0YVhSbFpDQnVkVzFpWlhJZ0p3QW5J''@;'; put 'put ''R2x1SUd4cGJtVWdKV1FnYjJZZ0FDQnpjR3hwZEhNZ2FXNTBieUIwZDI4Z2RHOXJaVzV6Q2dBbGN3QnNhVzVsQUNWa0lDVXhXeUpkSlc0QWIzVjBJRzltSUdSNWJtRnRhV01nYldWdGIzSjVJR2x1SUdGaFoxOWpjbVZoZEdWZlluVm1abVZ5S0NrQWIzVjBJRzltSUdSNWJtRnRhV01nYldWdGIz''@;'; put 'put ''SjVJR2x1SUdGaFoyVnVjM1Z5WlY5aWRXWm1aWEpmYzNSaFkyc29LUUE2SUFBZ2FXNGdiR2x1WlNBbFpBQWdibVZoY2lBbkFDQnpZMkZ1Ym1sdVp5QmhJSEYxYjNSbFpDQnpkSEpwYm1jZ0tHMXBjM05wYm1jZ1pXNWtjWFZ2ZEdVL0lHeHZibWRsY2lCMGFHRnVJQ1ZrUHlrQUNsTjBjbWx1WnlC''@;'; put 'put ''emRHRnlkR2x1WnpvaUFDQnpZMkZ1Ym1sdVp5QmhJRWhVVFV3Z2MzUnlhVzVuSUNodGFYTnphVzVuSUNjK0p6OGdZbUZrSUc1bGMzUnBibWMvSUd4dmJtZGxjaUIwYUdGdUlDVmtQeWtBQ2xOMGNtbHVaeUJ6ZEdGeWRHbHVaem84QUNCelkyRnVibWx1WnlCaElDOHFMaTR1S2k4Z1kyOXRiV1Z1''@;'; put 'put ''ZENBb2JXbHpjMmx1WnlBbktpOC9JR3h2Ym1kbGNpQjBhR0Z1SUNWa1B5a0FabXhsZUNCelkyRnVibVZ5SUhCMWMyZ3RZbUZqYXlCdmRtVnlabXh2ZHdBaUlnQnpkSEpwWTNRQWJHbHVaV3hsYm1kMGFBQTdDZ0FnVzJ0bGVUMEFYUUFnV3dBc0NnQTlBRjhsYkdSZlUxVlRVRVZEVkFCa2FRQnpk''@;'; put 'put ''SEpwWTNRZ0FIc0tBRjA3Q2dBUzd1NFVDUVB1L3U3dTdnSHU3dTRCN3U0Sy91NFRHUlh1RXdIdTd1N3VDeEh1N3U3dTd1N3U3dTRCN3U0V0NRRUJIUThYN3U0YUZ4dnU3aHp1N3U3dUFSbjc3dTd1QWU0UTd1NGU3dTd1N2dBQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn''@;'; put 'put ''SUNBZ0lDQWdJQ0FnSUNBZ0lYRVFJQ0FnSUNBZ0lDQWdJQ0FnSVNFQUlUQWdJV0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJVUFoVUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZzRDRHdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ''@;'; put 'put ''Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUJBZ01FQlFZSENBa0tDd3dOQ3dNRUJROEhBd3dO''@;'; put 'put ''Qmd3TkRnd05HaFVXQUFFQUF3Y09CZzhJREEwU0V5b1FFUWtRTHpBUk1oY1REUlFTTGhJVVFSTXlFeXhBS2tJWkxFSkdJZ3dORGlNUENSQVJDaEFSeVJBUkxVVkcvQUVHOWc4SDlpUUNFQkV2TURaTlRpZ21PendxTmpFNVBUOHZPa0RZUkRBK0pUZEROVXNyT0VsTUFBTUpBQUFBQVE0Q0N3d0lJ''@;'; put 'put ''eVFsTmpzOUFBMFFFaHNXSEJJbk1pSVhNeDQ4QmdjMUJROFJGQmdwQUJNcEFBQUFBQUEzRlNnZEhnQWhKalFmTUQ0WkxBQWJBQ0FhS2dBck9pNHZBREU0T1MwQUFnSUJBQU1EQVFBQkFBRUJBUUFDQVFFQUFnSURBUUVBQUFVQUFRTUJBd1VEQVFFQkFRSUFBUUFFQWdBQ0FRRURBZ0VBQXdJQkFB''@;'; put 'put ''RUJBQUVCQVFNQUdCa1pHUm9iSEJ3ZEhSNGVIeDhnSUNFaElpSWpKQ1FtSnlVbEtDZ3BLU2txS2lzckt5d3NMUzB1THk4d01URXlNelEyTlRjM056ZzRPRGs1T2pydTd2L3U3dTd1N3U0ZklPNEE3Kzd1N2d6dTd1NElEZTd1N3ZqdTd1N3U3dTcxN3Y4RENBUWhCUXNTRXljVUZSWXBNa0VYR0Jr''@;'; put 'put ''YUxETTBRa2RJRzBvY0hTNGVUeDhnYTJWNUFHRjBkSEpwWW5WMFpTQnRZV055YjNNZ2JtOTBJR2x0Y0d4bGJXVnVkR1ZrQUNWek9pVnpBRU52ZFd4a0lHNXZkQ0J2Y0dWdUlDSWxjeUlnWm05eUlIZHlhWFJwYm1jZ09pQWxjd29BVG04Z2JHbGllaUJ6ZFhCd2IzSjBMZ29BTGlWa0FHNXZibUZ0''@;'; put 'put ''WlM1bmRnQm5kbmR5YVhSbFgyNXZYM29nY0hKdllteGxiU0FsWkFvQWJXVnRiM0o1SUdGc2JHOWpZWFJwYjI0Z1ptRnBiSFZ5WlFvQVRtOGdiR2xpZWlCemRYQndiM0owQ2dCbmRuQnlhVzUwWmpvZ0pYTUtBQzA1T1RrNU9UazVPVGs1T1RrNU9Ua3VPVGtBWjNKaGNHaDJhWG9BTWk0ME1DNHhB''@;'; put 'put ''REl3TVRZeE1qSTFMakF6TURRQWNtVnVaR1Z5QUdSbGRtbGpaUUJzYjJGa2FXMWhaMlVBWkhsdVlXMXBZeUJzYjJGa2FXNW5JRzV2ZENCaGRtRnBiR0ZpYkdVS0FGVnphVzVuSUNWek9pQWxjem9sY3dvQVozWjFjMlZ5YzJoaGNHVXVZd0JuZG5WelpYSnphR0Z3WlY5bWFXNWtBR2QyZFhObGNu''@;'; put 'put ''Tm9ZWEJsWDJacGJHVmZZV05qWlhOekFFWnBiR1Z1WVcxbElDSWxjeUlnYVhNZ2RXNXpZV1psQ2dBbGN5QjNhR2xzWlNCdmNHVnVhVzVuSUNWekNnQjFjeTArWmdCbmRuVnpaWEp6YUdGd1pWOXZjR1Z1QUNJbGN5SWdkMkZ6SUc1dmRDQm1iM1Z1WkNCaGN5QmhJR1pwYkdVZ2IzSWdZWE1nWVNC''@;'; put 'put ''emFHRndaU0JzYVdKeVlYSjVJRzFsYldKbGNnb0FMMDFsWkdsaFFtOTRBQ2hiWVMxNlhWdGhMWHBCTFZwZEtpazlJaWhiWGlKZEtpa2lBR05oYm01dmRDQmpiMjF3YVd4bElISmxaM1ZzWVhJZ1pYaHdjbVZ6YzJsdmJpQWxjd0FsYkdZbE1uTUFjSFFBZG1sbGQwSnZlQUFsYkdZZ0pXeG1JQ1Zz''@;'; put 'put ''WmlBbGJHWUFhVzRBY0hnQWNHTUFJZ0JqYlFCdGJRQWxKVUp2ZFc1a2FXNW5RbTk0T2dBQjBOSFMwOVRWMXRmWTJRQThjM1puQUZkRlFsQUFkMlZpY0FBb2JHbGlLUUNKVUU1SERRb2FDZ0J3Ym1jQUpTRlFVeTFCWkc5aVpTMEFRazBBWW0xd0FFZEpSamdBWjJsbUFQL1kvK0FBYW5CbFp3QWxV''@;'; put 'put ''RVJHTFFCd1pHWUF4ZERUeGdCbGNITUFQRDk0Yld3QWVHMXNBRkpKUmtZQWNtbG1aZ0FBQUFFQUFHbGpid0FsWkNBbFpDQWxaQ0FsWkFCTVlYbHZkWFFnZDJGeklHNXZkQ0JrYjI1bENnQm1ZV2xzZFhKbElHMWhiR3h2WXlkcGJtY2dabTl5SUhKbGMzVnNkQ0J6ZEhKcGJtY0FaMk02SUU5MWRD''@;'; put 'put ''QnZaaUJ0WlcxdmNua0tBRjlqWTE4QWIzSnBad0J2Y0FCalkyOXRjSE11WXdCdFlYQkRiSFZ6ZEFCalkyZHlZWEJvYVc1bWJ3QmpZMmR1YjJSbGFXNW1id0FvSlRSc1pDa2dKVGRzWkNCdWIyUmxjeUFsTjJ4a0lHVmtaMlZ6Q2dBZ0lDQWdJQ0FnSlRka0lHNXZaR1Z6SUNVM1pDQmxaR2RsY3lB''@;'; put 'put ''bE4yeGtJR052YlhCdmJtVnVkSE1nSlhNS0FHUm5BRVZ5Y205eU9pQnViMlJsSUNJbGN5SWdZbVZzYjI1bmN5QjBieUIwZDI4Z2JtOXVMVzVsYzNSbFpDQmpiSFZ6ZEdWeWN5QWlKWE1pSUdGdVpDQWlKWE1pQ2dCemIzSjBkZ0J5YjNjZ2JXRnFiM0lBWTI5c2RXMXVJRzFoYW05eUFHRnljbUY1''@;'; put 'put ''SUhCaFkydHBibWM2SUNWeklDVmtJSEp2ZDNNZ0pXUWdZMjlzZFcxdWN3b0FZbUpiSlhOZElDVXVOV2NnSlM0MVp5QWxMalZuSUNVdU5XY0tBSE4wWlhBZ2MybDZaU0E5SUNWa0NnQndiM05iSldSZElDVmtJQ1ZrQ2dCall5QW9KV1FnWTJWc2JITXBJR0YwSUNnbFpDd2xaQ2tnS0NWa0xDVmtL''@;'; put 'put ''UW9BWTJNZ0tDVmtJR05sYkd4ektTQmhkQ0FvSldRc0pXUXBDZ0FsY3lCdWJ5NGdZMlZzYkhNZ0pXUWdWeUFsWkNCSUlDVmtDZ0FnSUNWa0lDVmtJR05sYkd3S0FHeHBZbkJoWTJzNklHUnBjMk1nUFNBbFppQW9JRHdnTUNrS0FGQmhZMnRwYm1jNklHTnZiWEIxZEdVZ1ozSnBaQ0J6YVhwbENn''@;'; put 'put ''QmhJQ1ZtSUdJZ0pXWWdZeUFsWmlCa0lDVm1JSElnSldZS0FISnZiM1FnSldRZ0tDVm1LU0FsWkNBb0pXWXBDZ0FnY2pFZ0pXWWdjaklnSldZS0FIQnBibVp2QUhCaFkyc3VZd0JuWlhSUVlXTnJTVzVtYndBZ0lHMWhjbWRwYmlBbFpBb0FjR0ZqYTIxdlpHVUFjR0Z5YzJWUVlXTnJUVzlrWlVs''@;'; put 'put ''dVptOEFZWEp5WVhrQVlYTndaV04wQUNWbUFIQmhZMnNnYVc1bWJ6b0tBQ0FnYlc5a1pTQWdJQ1Z6Q2dBZ0lHRnpjR1ZqZENBbFpnb0FJQ0J6YVhwbElDQWdKV1FLQUNBZ1pteGhaM01nSUNWa0NnQjFibVJsWm1sdVpXUUFjR0ZqYXdCQmNuSnZkeUIwZVhCbElDSWxjeUlnZFc1cmJtOTNiaUF0''@;'; put 'put ''SUdsbmJtOXlhVzVuQ2dCdWIzSnRZV3dBWTNKdmR3QjBaV1VBWkc5MEFHbHVkZ0IyWldVQWNHVnVBRzF3ZEhrQVkzVnlkbVVBYVdOMWNuWmxBR3dBYUdGc1pnQnBiblpsYlhCMGVRQmZZbUZqYTJkeWIzVnVaQUJmWkhKaGQxOEFRMjkxYkdRZ2JtOTBJSEJoY25ObElDSmZZbUZqYTJkeWIzVnVa''@;'; put 'put ''Q0lnWVhSMGNtbGlkWFJsSUdsdUlHZHlZWEJvSUNWekNnQWdJQ0lsY3lJS0FHNXZJRzFsYlc5eWVTQm1jbTl0SUhwdFlXeHNiMk1vS1FvQWIySnFBR1Z0YVhRdVl3QndiM0JmYjJKcVgzTjBZWFJsQUdOc2RYTjBBQ1ZzWkFCd1lXZGxKV1FzSldSZkFGUnZkR0ZzSUhOcGVtVWdQaUF4SUdsdUlD''@;'; put 'put ''SWxjeUlnWTI5c2IzSWdjM0JsWXlBQVNXeHNaV2RoYkNCc1pXNW5kR2dnZG1Gc2RXVWdhVzRnSWlWeklpQmpiMnh2Y2lCaGRIUnlhV0oxZEdVZ0FHeHVjbU52Ykc5eWMyTm9aVzFsQUdWdGFYUmZaV1JuWlY5c1lXSmxiQUFsY3kwbGN3Qm1iM0ozWVhKa0FHSmhZMnNBSUMwK0lBQWdMUzBnQUds''@;'; put 'put ''dUlHVmtaMlVnSlhNbGN5VnpDZ0JzWVdKbGJHRnNhV2R1WldRQVpXUm5aV2h5WldZQVpXUm5aVlZTVEFCc1lXSmxiR2h5WldZQWJHRmlaV3hWVWt3QWRHRnBiR2h5WldZQWRHRnBiRlZTVEFCb1pXRmthSEpsWmdCb1pXRmtWVkpNQUdWa1oyVjBZWEpuWlhRQWJHRmlaV3gwWVhKblpYUUFkR0Zw''@;'; put 'put ''YkhSaGNtZGxkQUJvWldGa2RHRnlaMlYwQUdWa1oyVjBiMjlzZEdsd0FHeGhZbVZzZEc5dmJIUnBjQUIwWVdsc2RHOXZiSFJwY0FCb1pXRmtkRzl2YkhScGNBQUJibVZ6ZEdsdVp5QnViM1FnWVd4c2IzZGxaQ0JwYmlCemRIbHNaVG9nSlhNS0FIVnViV0YwWTJobFpDQW5LU2NnYVc0Z2MzUjVi''@;'; put 'put ''R1U2SUNWekNnQjBjblZ1WTJGMGFXNW5JSE4wZVd4bElDY2xjeWNLQUhWdWJXRjBZMmhsWkNBbktDY2dhVzRnYzNSNWJHVTZJQ1Z6Q2dCaGJHd0FhVzRnWTJ4MWMzUmxjaUFsY3dvQVRXOXlaU0IwYUdGdUlESWdZMjlzYjNKeklITndaV05wWm1sbFpDQm1iM0lnWVNCbmNtRmthV1Z1ZENBdElH''@;'; put 'put ''bG5ibTl5YVc1bklISmxiV0ZwYm1sdVp3b0FaM0poWkdsbGJuUWdjR1Z1SUdOdmJHOXljeUJ1YjNRZ2VXVjBJSE4xY0hCdmNuUmxaQzRLQUVsdFlXZGxjeUIxYm5OMWNIQnZjblJsWkNCcGJpQWlZbUZqYTJkeWIzVnVaQ0lnWVhSMGNtbGlkWFJsQ2dCc1lYbGxjbk1nYm05MElITjFjSEJ2Y25S''@;'; put 'put ''bFpDQnBiaUFsY3lCdmRYUndkWFFLQUV4aGVXOTFkQ0IzWVhNZ2JtOTBJR1J2Ym1VdUlDQk5hWE56YVc1bklHeGhlVzkxZENCd2JIVm5hVzV6UHlBS0FHZDJVbVZ1WkdWeVNtOWljeUFsY3pvZ0pTNHlaaUJ6WldOekxnb0FiR0Y1YjNWMElIZGhjeUJ1YjNRZ1pHOXVaUW9BY21WdVpHVnlaWEln''@;'; put 'put ''Wm05eUlDVnpJR2x6SUhWdVlYWmhhV3hoWW14bENnQndZV2RsWkdseVBTVnpJR2xuYm05eVpXUUtBSFpwWlhkd2IzSjBBQ1ZzWml3bGJHWXNKV3htTENjbFcxNG5YU2NBSld4bUxDVnNaaXdsYkdZc0pWdGVMRjBsY3dBbGJHWXNKV3htTENWc1ppd2xiR1lzSld4bUFHOTFkSEIxZEc5eVpHVnlB''@;'; put 'put ''RzlrWlhObWFYSnpkQUJrWjJWelptbHljM1FBYkdGNVpYSnpBR3hoZVdWeWMyVnNaV04wQUZSb1pTQnNZWGxsY25ObGJHVmpkQ0JoZEhSeWFXSjFkR1VnSWlWeklpQmtiMlZ6SUc1dmRDQnRZWFJqYUNCaGJua2diR0Y1WlhJZ2MzQmxZMmxtWldRZ1lua2dkR2hsSUd4aGVXVnljeUJoZEhSeWFX''@;'; put 'put ''SjFkR1VnTFNCcFoyNXZjbVZrTGdvQWJHRjVaWEp6WlhBQU9na2dBR3hoZVdWeWJHbHpkSE5sY0FBc0FGUm9aU0JqYUdGeVlXTjBaWElnSnlWakp5QmhjSEJsWVhKeklHbHVJR0p2ZEdnZ2RHaGxJR3hoZVdWeWMyVndJR0Z1WkNCc1lYbGxjbXhwYzNSelpYQWdZWFIwY21saWRYUmxjeUF0SUd4''@;'; put 'put ''aGVXVnliR2x6ZEhObGNDQnBaMjV2Y21Wa0xnb0FjR0ZrQUVKTUFIQmhaMlZrYVhJQWMyOXNhV1FBQUhObGRHeHBibVYzYVdSMGFBQXhBQUJ6Y0d3dFBuTnBlbVVnUGlBd0FHbHVhWFJmYzNCc2FXNWxjMTlpWWdCaWVpNXphWHBsSUQ0Z01BQmlaWHBwWlhKZlltSUFZbm91YzJsNlpTQWxJRE1n''@;'; put 'put ''UFQwZ01RQWxiR1lBWm05dWRIQmhkR2dBUkU5VVJrOU9WRkJCVkVnQVIwUkdUMDVVVUVGVVNBQnBiV0ZuWlhCaGRHZ0FjWFZoYm5SMWJRQnlZVzVyWkdseUFFeFNBRUpVQUZKTUFHNXZaR1Z6WlhBQWNtRnVhM05sY0FCbGNYVmhiR3g1QUhOb2IzZGliM2hsY3dCbWIyNTBibUZ0WlhNQWMybDZa''@;'; put 'put ''UUJ3WVdkbEFHTmxiblJsY2dCeWIzUmhkR1VBYjNKcFpXNTBZWFJwYjI0QWJHRnVaSE5qWVhCbEFHTnNkWE4wWlhKeVlXNXJBR052Ym1ObGJuUnlZWFJsQUdSd2FRQnlaWE52YkhWMGFXOXVBRzl5WkdWeWFXNW5BR1pwYkd4amIyeHZjZ0JtYjI1MGMybDZaUUJtYjI1MGJtRnRaUUJtYjI1MFky''@;'; put 'put ''OXNiM0lBZUd4aFltVnNBSEJsYm5kcFpIUm9BSEJsY21sd2FHVnlhV1Z6QUhOclpYY0FaR2x6ZEc5eWRHbHZiZ0J1YjJwMWMzUnBabmtBYkdGNVpYSUFaM0p2ZFhBQVkyOXRiV1Z1ZEFCMlpYSjBhV05sY3dCNkFIZGxhV2RvZEFCc1lXSmxiR1pzYjJGMEFHUnBjZ0JoY25KdmQyaGxZV1FBWVhK''@;'; put 'put ''eWIzZDBZV2xzQUdobFlXUnNZV0psYkFCMFlXbHNiR0ZpWld3QWJHRmlaV3htYjI1MGMybDZaUUJzWVdKbGJHWnZiblJ1WVcxbEFHeGhZbVZzWm05dWRHTnZiRzl5QUd4aFltVnNaR2x6ZEdGdVkyVUFiR0ZpWld4aGJtZHNaUUJ0YVc1c1pXNEFaR1ZqYjNKaGRHVUFZWEp5YjNkemFYcGxBR052''@;'; put 'put ''Ym5OMGNtRnBiblFBZEdGcGJHTnNhWEFBYUdWaFpHTnNhWEFBYkdGaVpXeHFkWE4wQUd4dlkyRnNBR2RzYjJKaGJBQWxiR1lzSld4bUpXTUFKV3htSldNQWNtRjBhVzhBWVhWMGJ3QmpiMjF3Y21WemN3QmxlSEJoYm1RQVptbHNiQUJuWkFCd2N3QnpkbWNBWTJoaGNuTmxkQUIxZEdZdE9BQnNZ''@;'; put 'put ''WFJwYmkweEFHeGhkR2x1TVFCc01RQkpVMDh0T0RnMU9TMHhBRWxUVDE4NE9EVTVMVEVBU1ZOUE9EZzFPUzB4QUVsVFR5MUpVaTB4TURBQVltbG5MVFVBWW1sbk5RQjFkR1k0QUZWdWMzVndjRzl5ZEdWa0lHTm9ZWEp6WlhRZ0lpVnpJaUF0SUdGemMzVnRhVzVuSUhWMFppMDRDZ0JWYm5OMWNI''@;'; put 'put ''QnZjblJsWkNCamFHRnljMlYwSUhaaGJIVmxJQ1ZrQ2dCVlZFWXRPQUJDU1VjdE5RQnBiaUJzWVdKbGJDQnZaaUJuY21Gd2FDQWxjd29BYVc0Z2JHRmlaV3dnYjJZZ2JtOWtaU0FsY3dvQWFXNGdiR0ZpWld3Z2IyWWdaV1JuWlNBbGN5QWxjeUFsY3dvQWEybHVaQ0E5UFNCTVZGOU9UMDVGQUd4''@;'; put 'put ''aFltVnNjeTVqQUcxaGEyVmZiR0ZpWld3QVhFd0FYRWNBWEVVQVhFZ0FYRlFBSmlNeE16c0FKaU14TURzQUpuRjFiM1E3QUNZak1UWXdPd0FtWVcxd093QW1aM1E3QUNZak16azdBQ1lqTkRVN0FDWnNkRHNBSlhNZ0pXUWdibTlrWlhNZ0pXUWdaV1JuWlhNZ2JXRjRhWFJsY2owbFpDQmlZV3ho''@;'; put 'put ''Ym1ObFBTVmtDZ0J1WlhSM2IzSnJJSE5wYlhCc1pYZzZJQUFsWkNBQUpYTWxaQ0J1YjJSbGN5QWxaQ0JsWkdkbGN5QWxaQ0JwZEdWeUlDVXVNbVlnYzJWakNnQjFjR1JoZEdVNklHMXBjMjFoZEdOb1pXUWdiR05oSUdsdUlIUnlaV1YxY0dSaGRHVnpDZ0JVY21WbFgyVmtaMlV1YzJsNlpTQTlQ''@;'; put 'put ''U0JPWDI1dlpHVnpJQzBnTVFCdWN5NWpBR1psWVhOcFlteGxYM1J5WldVQUlWUlNSVVZmUlVSSFJTaGxLUUJ0WlhKblpWOTBjbVZsY3dBb2NqQXRQbWhsWVhCZmFXNWtaWGdnUGlBdE1Ta2dmSHdnS0hJeExUNW9aV0Z3WDJsdVpHVjRJRDRnTFRFcEFGTlVjMlYwVlc1cGIyNEFjaTArYUdWaGNG''@;'; put 'put ''OXBibVJsZUNBK1BTQXdBR0ZrWkY5MGNtVmxYMlZrWjJVNklHMXBjM05wYm1jZ2RISmxaU0JsWkdkbENnQmhaR1JmZEhKbFpWOWxaR2RsT2lCbGJYQjBlU0J2ZFhSbFpHZGxJR3hwYzNRS0FHRmtaRjkwY21WbFgyVmtaMlU2SUdWdGNIUjVJR2x1WldSblpTQnNhWE4wQ2dCMGNtOTFZbXhsSUds''@;'; put 'put ''dUlHbHVhWFJmY21GdWF3b0FDU1Z6SUNWa0NnQnpaV0Z5WTJoemFYcGxBR2R5WVhCb0lBQWdBRzV2WkdVZ0FITjBiM0FLQUNVdU5XY0FjRzl6QUhKbFkzUnpBSGhzY0FCc2NBQm9aV0ZrWDJ4d0FIUmhhV3hmYkhBQWJIZHBaSFJvQUd4b1pXbG5hSFFBWW1JQUpTNDFaeXdsTGpWbkxDVXVOV2NB''@;'; put 'put ''TENVdU5XY0FKUzQxWnl3bExqVm5BSE5oYlhCc1pYQnZhVzUwY3dBbExqVm5JQ1V1TldjQWN5d2xMalZuTENVdU5XY2dBR1VzSlM0MVp5d2xMalZuSUFBbExqVm5MQ1V1Tldjc0pTNDFaeXdsTGpWbkFDVXVNbVlBSlM0MVp5d2xMalZuTENVdU5XY3NKUzQxWnlBQUwzQmhkR2hpYjNnZ2V3b2dJ''@;'; put 'put ''Q0FnTDFnZ1pYaGphQ0J1WldjZ0pTNDFaeUJ6ZFdJZ1pHVm1DaUFnSUNBdldTQmxlR05vSUNVdU5XY2djM1ZpSUdSbFpnb2dJQ0FnTDNnZ1pYaGphQ0J1WldjZ0pTNDFaeUJ6ZFdJZ1pHVm1DaUFnSUNBdmVTQmxlR05vSUNVdU5XY2djM1ZpSUdSbFpnb2dJQ0FnYm1WM2NHRjBhQ0I0SUhrZ2JX''@;'; put 'put ''OTJaWFJ2Q2lBZ0lDQllJSGtnYkdsdVpYUnZDaUFnSUNCWUlGa2diR2x1WlhSdkNpQWdJQ0I0SUZrZ2JHbHVaWFJ2Q2lBZ0lDQmpiRzl6WlhCaGRHZ2djM1J5YjJ0bENuMGdaR1ZtQ2dBdmNHRjBhR0p2ZUNCN0NpQWdJQ0F2V1NCbGVHTm9JQ1V1TldjZ2MzVmlJR1JsWmdvZ0lDQWdMMWdnWlho''@;'; put 'put ''amFDQWxMalZuSUhOMVlpQmtaV1lLSUNBZ0lDOTVJR1Y0WTJnZ0pTNDFaeUJ6ZFdJZ1pHVm1DaUFnSUNBdmVDQmxlR05vSUNVdU5XY2djM1ZpSUdSbFpnb2dJQ0FnYm1WM2NHRjBhQ0I0SUhrZ2JXOTJaWFJ2Q2lBZ0lDQllJSGtnYkdsdVpYUnZDaUFnSUNCWUlGa2diR2x1WlhSdkNpQWdJQ0I0''@;'; put 'put ''SUZrZ2JHbHVaWFJ2Q2lBZ0lDQmpiRzl6WlhCaGRHZ2djM1J5YjJ0bENpQjlJR1JsWmdvdlpHSm5jM1JoY25RZ2V5Qm5jMkYyWlNBbExqVm5JQ1V1TldjZ2RISmhibk5zWVhSbElIMGdaR1ZtQ2k5aGNuSnZkMnhsYm1kMGFDQXhNQ0JrWldZS0wyRnljbTkzZDJsa2RHZ2dZWEp5YjNkc1pXNW5k''@;'; put 'put ''R2dnTWlCa2FYWWdaR1ZtQ2k5aGNuSnZkMmhsWVdRZ2V3b2dJQ0FnWjNOaGRtVUtJQ0FnSUhKdmRHRjBaUW9nSUNBZ1kzVnljbVZ1ZEhCdmFXNTBDaUFnSUNCdVpYZHdZWFJvQ2lBZ0lDQnRiM1psZEc4S0lDQWdJR0Z5Y205M2JHVnVaM1JvSUdGeWNtOTNkMmxrZEdnZ01pQmthWFlnY214cGJt''@;'; put 'put ''VjBid29nSUNBZ01DQmhjbkp2ZDNkcFpIUm9JRzVsWnlCeWJHbHVaWFJ2Q2lBZ0lDQmpiRzl6WlhCaGRHZ2dabWxzYkFvZ0lDQWdaM0psYzNSdmNtVUtmU0JpYVc1a0lHUmxaZ292YldGclpXRnljbTkzSUhzS0lDQWdJR04xY25KbGJuUndiMmx1ZENCbGVHTm9JSEJ2Y0NCemRXSWdaWGhqYUNC''@;'; put 'put ''amRYSnlaVzUwY0c5cGJuUWdjRzl3SUhOMVlpQmhkR0Z1Q2lBZ0lDQmhjbkp2ZDJobFlXUUtmU0JpYVc1a0lHUmxaZ292Y0c5cGJuUWdleUFnSUNCdVpYZHdZWFJvSUNBZ0lESWdNQ0F6TmpBZ1lYSmpJR1pwYkd4OUlHUmxaaTl0WVd0bGRtVmpJSHNLSUNBZ0lDOVpJR1Y0WTJnZ1pHVm1DaUFn''@;'; put 'put ''SUNBdldDQmxlR05vSUdSbFpnb2dJQ0FnTDNrZ1pYaGphQ0JrWldZS0lDQWdJQzk0SUdWNFkyZ2daR1ZtQ2lBZ0lDQnVaWGR3WVhSb0lIZ2dlU0J0YjNabGRHOEtJQ0FnSUZnZ1dTQnNhVzVsZEc4Z2MzUnliMnRsQ2lBZ0lDQllJRmtnYlc5MlpYUnZDaUFnSUNCNElIa2diV0ZyWldGeWNtOTND''@;'; put 'put ''bjBnWkdWbUNnQnNiM04wSUNWeklDVnpJR1ZrWjJVS0FHNXZJSEJ2YzJsMGFXOXVJR1p2Y2lCbFpHZGxJSGRwZEdnZ2JHRmlaV3dnSlhNQWJtOGdjRzl6YVhScGIyNGdabTl5SUdWa1oyVWdkMmwwYUNCMFlXbHNJR3hoWW1Wc0lDVnpBRzV2SUhCdmMybDBhVzl1SUdadmNpQmxaR2RsSUhkcGRH''@;'; put 'put ''Z2dhR1ZoWkNCc1lXSmxiQ0FsY3dCdWJ5QndiM05wZEdsdmJpQm1iM0lnWldSblpTQjNhWFJvSUhoc1lXSmxiQ0FsY3dCbWIzSmpaV3hoWW1Wc2N3QWxaQ0J2ZFhRZ2IyWWdKV1FnYkdGaVpXeHpJSEJ2YzJsMGFXOXVaV1F1Q2dBbFpDQnZkWFFnYjJZZ0pXUWdaWGgwWlhKcGIzSWdiR0ZpWld4''@;'; put 'put ''eklIQnZjMmwwYVc5dVpXUXVDZ0FsWkNCdlltcHpJQ1ZrSUhoc1lXSmxiSE1nWm05eVkyVTlKV1FnWW1JOUtDVXVNREptTENVdU1ESm1LU0FvSlM0d01tWXNKUzR3TW1ZcENnQnZZbXBsWTNSekNnQWdXeVZrWFNBb0pTNHdNbVlzSlM0d01tWXBJQ2dsTGpBeVppd2xMakF5WmlrZ0pYQWdJaVZ6''@;'; put 'put ''SWdvQWVHeGhZbVZzY3dvQUlGc2xaRjBnSlhBZ2MyVjBJQ1ZrSUNnbExqQXlaaXdsTGpBeVppa2dLQ1V1TURKbUxDVXVNREptS1NBbGN3b0FjMmhoY0dWbWFXeGxJRzV2ZENCelpYUWdiM0lnYm05MElHWnZkVzVrSUdadmNpQmxjSE5tSUc1dlpHVWdKWE1LQUdOdmRXeGtiaWQwSUc5d1pXNGda''@;'; put 'put ''WEJ6WmlCbWFXeGxJQ1Z6Q2dBbEpTVWxRbTkxYm1ScGJtZENiM2c2SUNWa0lDVmtJQ1ZrSUNWa0FISmxZV1FBUW05MWJtUnBibWRDYjNnZ2JtOTBJR1p2ZFc1a0lHbHVJR1Z3YzJZZ1ptbHNaU0FsY3dvQVkyRnVKM1FnWm1sdVpDQnNhV0p5WVhKNUlHWnBiR1VnSlhNS0FHTmhiaWQwSUc5d1pX''@;'; put 'put ''NGdiR2xpY21GeWVTQm1hV3hsSUNWekNnQkZUMFlBUWtWSFNVNEFSVTVFQUZSU1FVbE1SVklBTDNWelpYSmZjMmhoY0dWZkpXUWdld29BSlNWQ1pXZHBia1J2WTNWdFpXNTBPZ29BSlNWRmJtUkViMk4xYldWdWRBb0FmU0JpYVc1a0lHUmxaZ29BVlZSR0xUZ2dhVzV3ZFhRZ2RYTmxjeUJ1YjI0''@;'; put 'put ''dFRHRjBhVzR4SUdOb1lYSmhZM1JsY25NZ2QyaHBZMmdnWTJGdWJtOTBJR0psSUdoaGJtUnNaV1FnWW5rZ2RHaHBjeUJRYjNOMFUyTnlhWEIwSUdSeWFYWmxjZ29BWTJGdWJtOTBJSEpsTFdGc2JHOWpZWFJsSUhCekNnQnliM1YwWlhOd2JHbHVaWE5wYm1sME9pQmpZVzV1YjNRZ1lXeHNiMk5o''@;'; put 'put ''ZEdVZ2NITUtBSEp2ZFhSbGMzQnNhVzVsY3pvZ0pXUWdaV1JuWlhNc0lDVmtJR0p2ZUdWeklDVXVNbVlnYzJWakNnQnBiaUJ5YjNWMFpYTndiR2x1WlhNc0lHTmhibTV2ZENCbWFXNWtJRTVQVWsxQlRDQmxaR2RsQ2dCcGJpQnliM1YwWlhOd2JHbHVaWE1zSUdsc2JHVm5ZV3dnZG1Gc2RXVnpJ''@;'; put 'put ''RzltSUhCeVpYWWdKV1FnWVc1a0lHNWxlSFFnSldRc0lHeHBibVVnSldRS0FHbHVJSEp2ZFhSbGMzQnNhVzVsY3l3Z1pXUm5aU0JwY3lCaElHeHZiM0FnWVhRZ0pYTUtBR2x1SUhKdmRYUmxjM0JzYVc1bGN5d2dVSE5vYjNKMFpYTjBjR0YwYUNCbVlXbHNaV1FLQUdsdUlISnZkWFJsYzNCc2FX''@;'; put 'put ''NWxjeXdnVUhKdmRYUmxjM0JzYVc1bElHWmhhV3hsWkFvQVZXNWhZbXhsSUhSdklISmxZMnhoYVcwZ1ltOTRJSE53WVdObElHbHVJSE53YkdsdVpTQnliM1YwYVc1bklHWnZjaUJsWkdkbElDSWxjeUlnTFQ0Z0lpVnpJaTRnVTI5dFpYUm9hVzVuSUdseklIQnliMkpoWW14NUlITmxjbWx2ZFhO''@;'; put 'put ''c2VTQjNjbTl1Wnk0S0FHbHVJR05vWldOcmNHRjBhQ3dnWW05NElEQWdhR0Z6SUV4TUlHTnZiM0prSUQ0Z1ZWSWdZMjl2Y21RS0FHbHVJR05vWldOcmNHRjBhQ3dnWW05NElDVmtJR2hoY3lCTVRDQmpiMjl5WkNBK0lGVlNJR052YjNKa0NnQnBiaUJqYUdWamEzQmhkR2dzSUdKdmVHVnpJQ1Zr''@;'; put 'put ''SUdGdVpDQWxaQ0JrYjI0bmRDQjBiM1ZqYUFvQWFXNGdZMmhsWTJ0d1lYUm9MQ0J6ZEdGeWRDQndiM0owSUc1dmRDQnBiaUJtYVhKemRDQmliM2dLQUdsdUlHTm9aV05yY0dGMGFDd2daVzVrSUhCdmNuUWdibTkwSUdsdUlHeGhjM1FnWW05NENnQWxaQ0JpYjNobGN6b0tBQ1ZrSUNnbExqVm5M''@;'; put 'put ''Q0FsTGpWbktTd2dLQ1V1Tldjc0lDVXVOV2NwQ2dCamIyNXpkSEpoYVc1bFpBQnViM1FnWTI5dWMzUnlZV2x1WldRQWMzUmhjblFnY0c5eWREb2dLQ1V1Tldjc0lDVXVOV2NwTENCMFlXNW5aVzUwSUdGdVoyeGxPaUFsTGpWbkxDQWxjd29BWlc1a0lIQnZjblE2SUNnbExqVm5MQ0FsTGpWbktT''@;'; put 'put ''d2dkR0Z1WjJWdWRDQmhibWRzWlRvZ0pTNDFaeXdnSlhNS0FITnBaR1Z6SUQwOUlEUUFjMmhoY0dWekxtTUFjbTkxYm1SZlkyOXlibVZ5Y3dCaVlXUWdiR0ZpWld3Z1ptOXliV0YwSUNWekNnQmNUZ0J0WVhKbmFXNEFKV3htTENWc1pnQnlaV2QxYkdGeUFHTjFjM1J2YlFCemFHRndaV1pwYkdV''@;'; put 'put ''QVBHNXBiRDRBVG04Z2IzSWdhVzF3Y205d1pYSWdjMmhoY0dWbWFXeGxQU0lsY3lJZ1ptOXlJRzV2WkdVZ0lpVnpJZ29BVG04Z2IzSWdhVzF3Y205d1pYSWdhVzFoWjJVOUlpVnpJaUJtYjNJZ2JtOWtaU0FpSlhNaUNnQnNZV0psYkd4dll3QnViMlJsSUNjbGN5Y3NJR2R5WVhCb0lDY2xjeWNn''@;'; put 'put ''YzJsNlpTQjBiMjhnYzIxaGJHd2dabTl5SUd4aFltVnNDZ0JsY0hObUFIVnphVzVuSUNWeklHWnZjaUIxYm10dWIzZHVJSE5vWVhCbElDVnpDZ0J3YjJ4NVoyOXVBRzkyWVd3QVkybHlZMnhsQUhCdmFXNTBBR1ZuWndCMGNtbGhibWRzWlFCd2JHRnBiblJsZUhRQWNHeGhhVzRBWkdsaGJXOXVa''@;'; put 'put ''QUIwY21Gd1pYcHBkVzBBY0dGeVlXeHNaV3h2WjNKaGJRQm9iM1Z6WlFCd1pXNTBZV2R2YmdCb1pYaGhaMjl1QUhObGNIUmhaMjl1QUc5amRHRm5iMjRBYm05MFpRQjBZV0lBWm05c1pHVnlBR0p2ZUROa0FHTnZiWEJ2Ym1WdWRBQmplV3hwYm1SbGNnQnlaV04wQUhKbFkzUmhibWRzWlFCemNY''@;'; put 'put ''VmhjbVVBWkc5MVlteGxZMmx5WTJ4bEFHUnZkV0pzWlc5amRHRm5iMjRBZEhKcGNHeGxiMk4wWVdkdmJnQnBiblowY21saGJtZHNaUUJwYm5aMGNtRndaWHBwZFcwQWFXNTJhRzkxYzJVQWRXNWtaWEpzYVc1bEFFMWthV0Z0YjI1a0FFMXpjWFZoY21VQVRXTnBjbU5zWlFCd2NtOXRiM1JsY2dC''@;'; put 'put ''alpITUFkR1Z5YldsdVlYUnZjZ0IxZEhJQWFXNXpkV3hoZEc5eUFISnBZbTl6YVhSbEFISnVZWE4wWVdJQWNISnZkR1ZoYzJWemFYUmxBSEJ5YjNSbGFXNXpkR0ZpQUhCeWFXMWxjbk5wZEdVQWNtVnpkSEpwWTNScGIyNXphWFJsQUdacGRtVndiM1psY21oaGJtY0FkR2h5WldWd2IzWmxjbWho''@;'; put 'put ''Ym1jQWJtOTJaWEpvWVc1bkFHRnpjMlZ0WW14NUFITnBaMjVoZEhWeVpRQnljSEp2Ylc5MFpYSUFiR0Z5Y205M0FISmhjbkp2ZHdCc2NISnZiVzkwWlhJQWNtVmpiM0prQUUxeVpXTnZjbVFBYzNSaGNnQWpPREE0TURnd0FDTm1ZMlpqWm1NQUl6TXdNekF6TUFBalpUaGxPR1U0QUNObE1HVXda''@;'; put 'put ''VEFBSTJZd1pqQm1NQUFqTVRBeE1ERXdBQ05tT0dZNFpqZ0FhVzRnYm05a1pTQWxjd29BY205MWJtUmxaQUJrYVdGbmIyNWhiSE1BY21Ga2FXRnNBSE4wY21sd1pXUUFkMlZrWjJWa0FGOEFibTlrWlNBbGN5d2djRzl5ZENBbGN5d2dkVzV5WldOdloyNXBlbVZrSUdOdmJYQmhjM01nY0c5cGJu''@;'; put 'put ''UWdKeVZ6SnlBdElHbG5ibTl5WldRS0FHNXZaR1VnSlhNc0lIQnZjblFnSlhNZ2RXNXlaV052WjI1cGVtVmtDZ0FsTGpWbklDVXVOV2NnZEhKaGJuTnNZWFJsSUc1bGQzQmhkR2dnZFhObGNsOXphR0Z3WlY4bFpBb0FhVzUyYVhNQUFHWnBiR3hsWkFBQWN3QmxBSGNBYzNCc2FXNWxjeTVqQUdK''@;'; put 'put ''bFoybHVjR0YwYUFCUUxUNWxibVF1ZEdobGRHRWdQQ0F5SUNvZ1RWOVFTUUJsYm1Sd1lYUm9BRzFoYTJWVFpXeG1SV1JuWlFCblpYUnpjR3hwYm1Wd2IybHVkSE02SUc1dklITndiR2x1WlNCd2IybHVkSE1nWVhaaGFXeGhZbXhsSUdadmNpQmxaR2RsSUNnbGN5d2xjeWtLQUhCdmJIbHNhVzVs''@;'; put 'put ''VFdsa2NHOXBiblFBYzNCaGJpMCtabTl1ZEFCMFpYaDBjM0JoYmk1akFIUmxlSFJ6Y0dGdVgzTnBlbVVBWm05dWRDMCtibUZ0WlFCbWIyNTBibUZ0WlRvZ0lpVnpJaUJ5WlhOdmJIWmxaQ0IwYnpvZ0pYTUtBR1p2Ym5SdVlXMWxPaUIxYm1GaWJHVWdkRzhnY21WemIyeDJaU0FpSlhNaUNnQmpi''@;'; put 'put ''M1Z5QUdGeWFXRnNBR2hsYkhabGRHbGpZUUJiYVc1MFpYSnVZV3dnZEdsdFpYTmRBRnRwYm5SbGNtNWhiQ0JqYjNWeWFXVnlYUUJiYVc1MFpYSnVZV3dnWVhKcFlXeGRBRUYyWVc1MFIyRnlaR1V0UW05dmF3QlZVbGNnUjI5MGFHbGpJRXdBWW05dmF3QnpZVzV6TFZObGNtbG1BRUYyWVc1MFIy''@;'; put 'put ''RnlaR1V0UW05dmEwOWliR2x4ZFdVQWIySnNhWEYxWlFCcGRHRnNhV01BUVhaaGJuUkhZWEprWlMxRVpXMXBBR1JsYldrQVFYWmhiblJIWVhKa1pTMUVaVzFwVDJKc2FYRjFaUUJDYjI5cmJXRnVMVVJsYldrQVZWSlhJRUp2YjJ0dFlXNGdUQUJ6WlhKcFpnQkNiMjlyYldGdUxVUmxiV2xKZEdG''@;'; put 'put ''c2FXTUFRbTl2YTIxaGJpMU1hV2RvZEFCc2FXZG9kQUJDYjI5cmJXRnVMVXhwWjJoMFNYUmhiR2xqQUVOdmRYSnBaWElBYlc5dWIzTndZV05sQUVOdmRYSnBaWEl0UW05c1pBQkRiM1Z5YVdWeUxVSnZiR1JQWW14cGNYVmxBRU52ZFhKcFpYSXRUMkpzYVhGMVpRQklaV3gyWlhScFkyRUFTR1Zz''@;'; put 'put ''ZG1WMGFXTmhMVUp2YkdRQVNHVnNkbVYwYVdOaExVSnZiR1JQWW14cGNYVmxBRWhsYkhabGRHbGpZUzFPWVhKeWIzY0FZMjl1WkdWdWMyVmtBRWhsYkhabGRHbGpZUzFPWVhKeWIzY3RRbTlzWkFCSVpXeDJaWFJwWTJFdFRtRnljbTkzTFVKdmJHUlBZbXhwY1hWbEFFaGxiSFpsZEdsallTMU9Z''@;'; put 'put ''WEp5YjNjdFQySnNhWEYxWlFCSVpXeDJaWFJwWTJFdFQySnNhWEYxWlFCT1pYZERaVzUwZFhKNVUyTm9iR0pyTFVKdmJHUUFRMlZ1ZEhWeWVTQlRZMmh2YjJ4aWIyOXJJRXdBVG1WM1EyVnVkSFZ5ZVZOamFHeGlheTFDYjJ4a1NYUmhiR2xqQUU1bGQwTmxiblIxY25sVFkyaHNZbXN0U1hSaGJH''@;'; put 'put ''bGpBRTVsZDBObGJuUjFjbmxUWTJoc1ltc3RVbTl0WVc0QWNtOXRZVzRBVUdGc1lYUnBibTh0UW05c1pBQlFZV3hoZEdsdWJ5Qk1hVzV2ZEhsd1pRQlFZV3hoZEdsdWJ5MUNiMnhrU1hSaGJHbGpBRkJoYkdGMGFXNXZMVWwwWVd4cFl3QlFZV3hoZEdsdWJ5MVNiMjFoYmdCVGVXMWliMndBWm1G''@;'; put 'put ''dWRHRnplUUJVYVcxbGN5MUNiMnhrQUZScGJXVnpBRlJwYldWekxVSnZiR1JKZEdGc2FXTUFWR2x0WlhNdFNYUmhiR2xqQUZwaGNHWkRhR0Z1WTJWeWVTMU5aV1JwZFcxSmRHRnNhV01BVlZKWElFTm9ZVzVqWlhKNUlFd0FiV1ZrYVhWdEFGcGhjR1pFYVc1blltRjBjd0JFYVc1blltRjBjd0Jw''@;'; put 'put ''Ym5CMWRITmpZV3hsQUc1dkFIUnlkV1VBZVdWekFIVjBhV3h6TG1NQWRTQTlQU0JWUmw5bWFXNWtLSFVwQUZWR1gzTmxkRzVoYldVQUFXWnBiR1VnYkc5aFpHbHVaeUJwY3lCa2FYTmhZbXhsWkNCaVpXTmhkWE5sSUhSb1pTQmxiblpwY205dWJXVnVkQ0JqYjI1MFlXbHVjeUJUUlZKV1JWSmZU''@;'; put 'put ''a0ZOUlQwaUpYTWlDbUZ1WkNCMGFHVWdSMVpmUmtsTVJWOVFRVlJJSUhaaGNtbGhZbXhsSUdseklIVnVjMlYwSUc5eUlHVnRjSFI1TGdvQVVHRjBhQ0J3Y205MmFXUmxaQ0IwYnlCbWFXeGxPaUFpSlhNaUlHaGhjeUJpWldWdUlHbG5ibTl5WldRZ1ltVmpZWFZ6WlNCbWFXeGxjeUJoY21VZ2Iy''@;'; put 'put ''NXNlU0J3WlhKdGFYUjBaV1FnZEc4Z1ltVWdiRzloWkdWa0lHWnliMjBnZEdobElHUnBjbVZqZEc5eWFXVnpJR2x1SUNJbGN5SWdkMmhsYmlCeWRXNXVhVzVuSUdsdUlHRnVJR2gwZEhBZ2MyVnlkbVZ5TGdvQUpYTWxjeVZ6QUM4QU9nQmxiR3hwY0hObEFGUnBiV1Z6TFZKdmJXRnVBR05zZFhO''@;'; put 'put ''MFpYSUFYMTlqYkhWemRHVnlibTlrWlhNQVkyeDFjM1JsY2lCamVXTnNaU0FsY3lBdExTQWxjeUJ1YjNRZ2MzVndjRzl5ZEdWa0NnQjBZV2xzSUdOc2RYTjBaWElnSlhNZ2FXNXphV1JsSUdobFlXUWdZMngxYzNSbGNpQWxjd29BYUdWaFpDQmpiSFZ6ZEdWeUlDVnpJR2x1YzJsa1pTQjBZV2xz''@;'; put 'put ''SUdOc2RYTjBaWElnSlhNS0FIUmhhV3dnYm05a1pTQWxjeUJwYm5OcFpHVWdhR1ZoWkNCamJIVnpkR1Z5SUNWekNnQm9aV0ZrSUc1dlpHVWdKWE1nYVc1emFXUmxJSFJoYVd3Z1kyeDFjM1JsY2lBbGN3b0FYMThBYkdGaVpXd0FjMmhoY0dVQVltOTRBRlIzYnlCamJIVnpkR1Z5Y3lCdVlXMWxa''@;'; put 'put ''Q0FsY3lBdElIUm9aU0J6WldOdmJtUWdkMmxzYkNCaVpTQnBaMjV2Y21Wa0NnQnRZWEJPQUVGRmJHbG5BRUZoWTNWMFpRQkJZMmx5WXdCQlozSmhkbVVBUVd4d2FHRUFRWEpwYm1jQVFYUnBiR1JsQUVGMWJXd0FRbVYwWVFCRFkyVmthV3dBUTJocEFFUmhaMmRsY2dCRVpXeDBZUUJGVkVnQVJX''@;'; put 'put ''RmpkWFJsQUVWamFYSmpBRVZuY21GMlpRQkZjSE5wYkc5dUFFVjBZUUJGZFcxc0FFZGhiVzFoQUVsaFkzVjBaUUJKWTJseVl3QkpaM0poZG1VQVNXOTBZUUJKZFcxc0FFdGhjSEJoQUV4aGJXSmtZUUJOZFFCT2RHbHNaR1VBVG5VQVQwVnNhV2NBVDJGamRYUmxBRTlqYVhKakFFOW5jbUYyWlFC''@;'; put 'put ''UGJXVm5ZUUJQYldsamNtOXVBRTl6YkdGemFBQlBkR2xzWkdVQVQzVnRiQUJRYUdrQVVHa0FVSEpwYldVQVVITnBBRkpvYndCVFkyRnliMjRBVTJsbmJXRUFWRWhQVWs0QVZHRjFBRlJvWlhSaEFGVmhZM1YwWlFCVlkybHlZd0JWWjNKaGRtVUFWWEJ6YVd4dmJnQlZkVzFzQUZocEFGbGhZM1Yw''@;'; put 'put ''WlFCWmRXMXNBRnBsZEdFQVlXRmpkWFJsQUdGamFYSmpBR0ZqZFhSbEFHRmxiR2xuQUdGbmNtRjJaUUJoYkdWbWMzbHRBR0ZzY0doaEFHRnRjQUJoYm1RQVlXNW5BR0Z5YVc1bkFHRnplVzF3QUdGMGFXeGtaUUJoZFcxc0FHSmtjWFZ2QUdKbGRHRUFZbkoyWW1GeUFHSjFiR3dBWTJGd0FHTmpa''@;'; put 'put ''V1JwYkFCalpXUnBiQUJqWlc1MEFHTm9hUUJqYVhKakFHTnNkV0p6QUdOdmJtY0FZMjl3ZVFCamNtRnljZ0JqZFhBQVkzVnljbVZ1QUdSQmNuSUFaR0ZuWjJWeUFHUmhjbklBWkdWbkFHUmxiSFJoQUdScFlXMXpBR1JwZG1sa1pRQmxZV04xZEdVQVpXTnBjbU1BWldkeVlYWmxBR1Z0Y0hSNUFH''@;'; put 'put ''VnRjM0FBWlc1emNBQmxjSE5wYkc5dUFHVnhkV2wyQUdWMFlRQmxkR2dBWlhWdGJBQmxkWEp2QUdWNGFYTjBBR1p1YjJZQVptOXlZV3hzQUdaeVlXTXhNZ0JtY21Gak1UUUFabkpoWXpNMEFHWnlZWE5zQUdkaGJXMWhBR2RsQUdkMEFHaEJjbklBYUdGeWNnQm9aV0Z5ZEhNQWFHVnNiR2x3QUds''@;'; put 'put ''aFkzVjBaUUJwWTJseVl3QnBaWGhqYkFCcFozSmhkbVVBYVcxaFoyVUFhVzVtYVc0QWFXNTBBR2x2ZEdFQWFYRjFaWE4wQUdsemFXNEFhWFZ0YkFCcllYQndZUUJzUVhKeUFHeGhiV0prWVFCc1lXNW5BR3hoY1hWdkFHeGhjbklBYkdObGFXd0FiR1J4ZFc4QWJHVUFiR1pzYjI5eUFHeHZkMkZ6''@;'; put 'put ''ZEFCc2Izb0FiSEp0QUd4ellYRjFid0JzYzNGMWJ3QnNkQUJ0WVdOeUFHMWtZWE5vQUcxcFkzSnZBRzFwWkdSdmRBQnRkUUJ1WVdKc1lRQnVZbk53QUc1a1lYTm9BRzVsQUc1cEFHNXZkQUJ1YjNScGJnQnVjM1ZpQUc1MGFXeGtaUUJ1ZFFCdllXTjFkR1VBYjJOcGNtTUFiMlZzYVdjQWIyZHlZ''@;'; put 'put ''WFpsQUc5c2FXNWxBRzl0WldkaEFHOXRhV055YjI0QWIzQnNkWE1BYjNJQWIzSmtaZ0J2Y21SdEFHOXpiR0Z6YUFCdmRHbHNaR1VBYjNScGJXVnpBRzkxYld3QWNHRnlZUUJ3WVhKMEFIQmxjbTFwYkFCd1pYSndBSEJvYVFCd2FRQndhWFlBY0d4MWMyMXVBSEJ2ZFc1a0FIQnlhVzFsQUhCeWIy''@;'; put 'put ''UUFjSEp2Y0FCd2Mya0FjWFZ2ZEFCeVFYSnlBSEpoWkdsakFISmhibWNBY21GeGRXOEFjbUZ5Y2dCeVkyVnBiQUJ5WkhGMWJ3QnlaV0ZzQUhKbFp3QnlabXh2YjNJQWNtaHZBSEpzYlFCeWMyRnhkVzhBY25OeGRXOEFjMkp4ZFc4QWMyTmhjbTl1QUhOa2IzUUFjMlZqZEFCemFIa0FjMmxuYldF''@;'; put 'put ''QWMybG5iV0ZtQUhOcGJRQnpjR0ZrWlhNQWMzVmlBSE4xWW1VQWMzVnRBSE4xY0FCemRYQXhBSE4xY0RJQWMzVndNd0J6ZFhCbEFITjZiR2xuQUhSaGRRQjBhR1Z5WlRRQWRHaGxkR0VBZEdobGRHRnplVzBBZEdocGJuTndBSFJvYjNKdUFIUnBiR1JsQUhScGJXVnpBSFJ5WVdSbEFIVkJjbklB''@;'; put 'put ''ZFdGamRYUmxBSFZoY25JQWRXTnBjbU1BZFdkeVlYWmxBSFZ0YkFCMWNITnBhQUIxY0hOcGJHOXVBSFYxYld3QWQyVnBaWEp3QUhocEFIbGhZM1YwWlFCNVpXNEFlWFZ0YkFCNlpYUmhBSHAzYWdCNmQyNXFBRlZVUmpnZ1kyOWtaWE1nUGlBMElHSjVkR1Z6SUdGeVpTQnViM1FnWTNWeWNtVnVk''@;'; put 'put ''R3g1SUhOMWNIQnZjblJsWkNBb1ozSmhjR2dnSlhNcElDMGdkSEpsWVhSbFpDQmhjeUJNWVhScGJpMHhMaUJRWlhKb1lYQnpJQ0l0UjJOb1lYSnpaWFE5YkdGMGFXNHhJaUJwY3lCdVpXVmtaV1EvQ2dCSmJuWmhiR2xrSUNWa0xXSjVkR1VnVlZSR09DQm1iM1Z1WkNCcGJpQnBibkIxZENCdlpp''@;'; put 'put ''Qm5jbUZ3YUNBbGN5QXRJSFJ5WldGMFpXUWdZWE1nVEdGMGFXNHRNUzRnVUdWeWFHRndjeUFpTFVkamFHRnljMlYwUFd4aGRHbHVNU0lnYVhNZ2JtVmxaR1ZrUHdvQVlub3VjMmw2WlFCdmRtVnliR0Z3WDJKbGVtbGxjZ0IxY25abFpBQnZiWEJ2ZFc1a0FHRnNjMlVBYVc1bEFHOXVaUUJ2QUhK''@;'; put 'put ''MGFHOEFiMng1YkdsdVpRQndiR2x1WlFCeWRXVUFaWE1BVlc1cmJtOTNiaUFpYzNCc2FXNWxjeUlnZG1Gc2RXVTZJQ0lsY3lJZ0xTQnBaMjV2Y21Wa0NnQnpjR3hwYm1WekFHOWtZZ0JQY25Sb2IyZHZibUZzSUdWa1oyVnpJR1J2SUc1dmRDQmpkWEp5Wlc1MGJIa2dhR0Z1Wkd4bElHVmtaMlVn''@;'; put 'put ''YkdGaVpXeHpMaUJVY25rZ2RYTnBibWNnZUd4aFltVnNjeTRLQUc5eWRHaHZJQ1Z6SUNWekNnQmphR0Z1YVFCdmNuUm9ieTVqQUdOb1lXNVRaV0Z5WTJnQVkzQUFKU1VoVUZNdFFXUnZZbVV0TWk0d0NpVWxKU1ZDYjNWdVpHbHVaMEp2ZURvZ0tHRjBaVzVrS1FvdmNHOXBiblFnZXdvZ0lDOVpJ''@;'; put 'put ''R1Y0WTJnZ1pHVm1DaUFnTDFnZ1pYaGphQ0JrWldZS0lDQnVaWGR3WVhSb0NpQWdXQ0JaSURNZ01DQXpOakFnWVhKaklHWnBiR3dLZlNCa1pXWUtMMk5sYkd3Z2V3b2dJQzlaSUdWNFkyZ2daR1ZtQ2lBZ0wxZ2daWGhqYUNCa1pXWUtJQ0F2ZVNCbGVHTm9JR1JsWmdvZ0lDOTRJR1Y0WTJnZ1pH''@;'; put 'put ''Vm1DaUFnYm1WM2NHRjBhQW9nSUhnZ2VTQnRiM1psZEc4S0lDQjRJRmtnYkdsdVpYUnZDaUFnV0NCWklHeHBibVYwYndvZ0lGZ2dlU0JzYVc1bGRHOEtJQ0JqYkc5elpYQmhkR2dnYzNSeWIydGxDbjBnWkdWbUNpOXViMlJsSUhzS0lDOTFJR1Y0WTJnZ1pHVm1DaUF2Y2lCbGVHTm9JR1JsWmdv''@;'; put 'put ''Z0wyUWdaWGhqYUNCa1pXWUtJQzlzSUdWNFkyZ2daR1ZtQ2lCdVpYZHdZWFJvSUd3Z1pDQnRiM1psZEc4S0lISWdaQ0JzYVc1bGRHOGdjaUIxSUd4cGJtVjBieUJzSUhVZ2JHbHVaWFJ2Q2lCamJHOXpaWEJoZEdnZ1ptbHNiQXA5SUdSbFpnb0tBQ1ZrSUNWa0lIUnlZVzV6YkdGMFpRb0FNQzQ0''@;'; put 'put ''SURBdU9DQXdMamdnYzJWMGNtZGlZMjlzYjNJS0FITm9iM2R3WVdkbENpVWxKU1ZVY21GcGJHVnlDaVVsSlNWQ2IzVnVaR2x1WjBKdmVEb2dKV1FnSldRZ0pXUWdKV1FLQUc1bGQzQmhkR2dnSldRZ0pXUWdiVzkyWlhSdkNnQWxaQ0FsWkNCc2FXNWxkRzhLQUNWa0lDVmtJR3hwYm1WMGJ5Qnpk''@;'; put 'put ''SEp2YTJVS0FHTm9ZVzV1Wld3Z0pXUWdLQ1ZtTENWbUtRb0FJQzArQ2dBZ0lDQWdJQUFvS0NWbUxDVm1LU3dvSldZc0pXWXBLU0FsY3lBbGN3QkNYMUpKUjBoVUFFSmZSRTlYVGdCQ1gweEZSbFFBUWw5VlVBQkNYMDVQUkVVQWMyVm5BRzVsZUhSZmMyVm5BR1JsWTJsa1pWOXdiMmx1ZEFCcGJt''@;'; put 'put ''TnZiWEJoY21GaWJHVWdjMlZuYldWdWRITWdJU0VnTFMwZ1FXSnZjblJwYm1jS0FITXhMVDVqYjIxdFgyTnZiM0prUFQxek1pMCtZMjl0YlY5amIyOXlaQUJwYzE5d1lYSmhiR3hsYkFCbmNtRndhQ0JISUhzS0FDQnViMlJsVzNOb1lYQmxQWEJ2YVc1MFhRb0FJQ0FsWkNCYmNHOXpQU0lsWkN3''@;'; put 'put ''bFpDSmRDZ0FnSUNWa0lDMHRJQ1ZrVzJ4bGJqMGlKV1lpWFFvQWZRb0FZMjlzYjNJZ0pYTUFKWE1nYVhNZ2JtOTBJR0VnYTI1dmQyNGdZMjlzYjNJdUNnQmxjbkp2Y2lCcGJpQmpiMng0YkdGMFpTZ3BDZ0J6YjJ4cFpBQnBiblpwYzJsaWJHVUFZbTlzWkFCelpYUnNhVzVsZDJsa2RHZ0FabWxz''@;'; put 'put ''YkdWa0FIVnVabWxzYkdWa0FIUmhjR1Z5WldRQVozWnlaVzVrWlhKZmMyVjBYM04wZVd4bE9pQjFibk4xY0hCdmNuUmxaQ0J6ZEhsc1pTQWxjeUF0SUdsbmJtOXlhVzVuQ2dCbmRuSmxibVJsY2k1akFHZDJjbVZ1WkdWeVgzVnpaWEp6YUdGd1pRQnVZVzFsQUc1aGJXVmJNRjBBWW05MGFBQnNZ''@;'; put 'put ''WGx2ZFhRQVRHRjViM1YwSUhSNWNHVTZJQ0lsY3lJZ2JtOTBJSEpsWTI5bmJtbDZaV1F1SUZWelpTQnZibVVnYjJZNkpYTUtBR3B2WWdCbmRteHZZV1JwYldGblpTNWpBR2QyYkc5aFpHbHRZV2RsQUhWekFIVnpMVDV1WVcxbEFIVnpMVDV1WVcxbFd6QmRBRTV2SUd4dllXUnBiV0ZuWlNCd2JI''@;'; put 'put ''Vm5hVzRnWm05eUlDSWxjeUlLQUZFQVRHVm1kQUJMVUY5TVpXWjBBRkpwWjJoMEFFdFFYMUpwWjJoMEFGVndBRXRRWDFWd0FFUnZkMjRBUzFCZlJHOTNiZ0J3YkhWekFFdFFYMEZrWkFCdGFXNTFjd0JMVUY5VGRXSjBjbUZqZEFCR0FHVmtaMlVBZEdGcGJIQnZjblFBYUdWaFpIQnZjblFBYTJW''@;'; put 'put ''NUFGVlNUQUJ1YjJSbEFHUnBaM0poY0dnQVozSmhjR2dBYzNWaVozSmhjR2dBWDB4VVdGOXNhV0p5WVhKNUFIUmxlSFJzWVhsdmRYUUFiMkpxY0MwK2JHSnNBSGhzWVdKbGJITXVZd0I0YkdGa2FuVnpkQUI0YkdsdWRHVnljMlZqZEdsdmJuTUFiSEFnSVQwZ1kyeHdBR2RsZEdsdWRISnplR2tB''@;'; put 'put ''YjJKcWNERXRQbk42TG5nZ1BUMGdNQ0FtSmlCdlltcHdNUzArYzNvdWVTQTlQU0F3QUd4aWJHVnVZMnh2YzJsdVp3QjJjQUI0Ykdoa2VIVnViRzloWkFCemFYcGxQVDFtY21WbFpBQnlaV04wTG1KdmRXNWtZWEo1V3pKZElEd2dTVTVVWDAxQldBQnZZbXB3YkhCdGEzTUFjbVZqZEM1aWIzVnVa''@;'; put 'put ''R0Z5ZVZzelhTQThJRWxPVkY5TlFWZ0FiM1YwSUc5bUlHMWxiVzl5ZVFvQUl5VXllQ1V5ZUNVeWVDVXllQUFsYkdZbGJHWWxiR1lBTDJGalkyVnVkRE12TVFBdllXTmpaVzUwTXk4eUFDOWhZMk5sYm5Rekx6TUFMMkZqWTJWdWREUXZNUUF2WVdOalpXNTBOQzh5QUM5aFkyTmxiblEwTHpNQUwy''@;'; put 'put ''RmpZMlZ1ZERRdk5BQXZZV05qWlc1ME5TOHhBQzloWTJObGJuUTFMeklBTDJGalkyVnVkRFV2TXdBdllXTmpaVzUwTlM4MEFDOWhZMk5sYm5RMUx6VUFMMkZqWTJWdWREWXZNUUF2WVdOalpXNTBOaTh5QUM5aFkyTmxiblEyTHpNQUwyRmpZMlZ1ZERZdk5BQXZZV05qWlc1ME5pODFBQzloWTJO''@;'; put 'put ''bGJuUTJMellBTDJGalkyVnVkRGN2TVFBdllXTmpaVzUwTnk4eUFDOWhZMk5sYm5RM0x6TUFMMkZqWTJWdWREY3ZOQUF2WVdOalpXNTBOeTgxQUM5aFkyTmxiblEzTHpZQUwyRmpZMlZ1ZERjdk53QXZZV05qWlc1ME9DOHhBQzloWTJObGJuUTRMeklBTDJGalkyVnVkRGd2TXdBdllXTmpaVzUw''@;'; put 'put ''T0M4MEFDOWhZMk5sYm5RNEx6VUFMMkZqWTJWdWREZ3ZOZ0F2WVdOalpXNTBPQzgzQUM5aFkyTmxiblE0THpnQUwySnNkV1Z6TXk4eEFDOWliSFZsY3pNdk1nQXZZbXgxWlhNekx6TUFMMkpzZFdWek5DOHhBQzlpYkhWbGN6UXZNZ0F2WW14MVpYTTBMek1BTDJKc2RXVnpOQzgwQUM5aWJIVmxj''@;'; put 'put ''elV2TVFBdllteDFaWE0xTHpJQUwySnNkV1Z6TlM4ekFDOWliSFZsY3pVdk5BQXZZbXgxWlhNMUx6VUFMMkpzZFdWek5pOHhBQzlpYkhWbGN6WXZNZ0F2WW14MVpYTTJMek1BTDJKc2RXVnpOaTgwQUM5aWJIVmxjell2TlFBdllteDFaWE0yTHpZQUwySnNkV1Z6Tnk4eEFDOWliSFZsY3pjdk1n''@;'; put 'put ''QXZZbXgxWlhNM0x6TUFMMkpzZFdWek55ODBBQzlpYkhWbGN6Y3ZOUUF2WW14MVpYTTNMellBTDJKc2RXVnpOeTgzQUM5aWJIVmxjemd2TVFBdllteDFaWE00THpJQUwySnNkV1Z6T0M4ekFDOWliSFZsY3pndk5BQXZZbXgxWlhNNEx6VUFMMkpzZFdWek9DODJBQzlpYkhWbGN6Z3ZOd0F2WW14''@;'; put 'put ''MVpYTTRMemdBTDJKc2RXVnpPUzh4QUM5aWJIVmxjemt2TWdBdllteDFaWE01THpNQUwySnNkV1Z6T1M4MEFDOWliSFZsY3prdk5RQXZZbXgxWlhNNUx6WUFMMkpzZFdWek9TODNBQzlpYkhWbGN6a3ZPQUF2WW14MVpYTTVMemtBTDJKeVltY3hNQzh4QUM5aWNtSm5NVEF2TVRBQUwySnlZbWN4''@;'; put 'put ''TUM4eUFDOWljbUpuTVRBdk13QXZZbkppWnpFd0x6UUFMMkp5WW1jeE1DODFBQzlpY21Kbk1UQXZOZ0F2WW5KaVp6RXdMemNBTDJKeVltY3hNQzg0QUM5aWNtSm5NVEF2T1FBdlluSmlaekV4THpFQUwySnlZbWN4TVM4eE1BQXZZbkppWnpFeEx6RXhBQzlpY21Kbk1URXZNZ0F2WW5KaVp6RXhM''@;'; put 'put ''ek1BTDJKeVltY3hNUzgwQUM5aWNtSm5NVEV2TlFBdlluSmlaekV4THpZQUwySnlZbWN4TVM4M0FDOWljbUpuTVRFdk9BQXZZbkppWnpFeEx6a0FMMkp5WW1jekx6RUFMMkp5WW1jekx6SUFMMkp5WW1jekx6TUFMMkp5WW1jMEx6RUFMMkp5WW1jMEx6SUFMMkp5WW1jMEx6TUFMMkp5WW1jMEx6''@;'; put 'put ''UUFMMkp5WW1jMUx6RUFMMkp5WW1jMUx6SUFMMkp5WW1jMUx6TUFMMkp5WW1jMUx6UUFMMkp5WW1jMUx6VUFMMkp5WW1jMkx6RUFMMkp5WW1jMkx6SUFMMkp5WW1jMkx6TUFMMkp5WW1jMkx6UUFMMkp5WW1jMkx6VUFMMkp5WW1jMkx6WUFMMkp5WW1jM0x6RUFMMkp5WW1jM0x6SUFMMkp5WW1j''@;'; put 'put ''M0x6TUFMMkp5WW1jM0x6UUFMMkp5WW1jM0x6VUFMMkp5WW1jM0x6WUFMMkp5WW1jM0x6Y0FMMkp5WW1jNEx6RUFMMkp5WW1jNEx6SUFMMkp5WW1jNEx6TUFMMkp5WW1jNEx6UUFMMkp5WW1jNEx6VUFMMkp5WW1jNEx6WUFMMkp5WW1jNEx6Y0FMMkp5WW1jNEx6Z0FMMkp5WW1jNUx6RUFMMkp5''@;'; put 'put ''WW1jNUx6SUFMMkp5WW1jNUx6TUFMMkp5WW1jNUx6UUFMMkp5WW1jNUx6VUFMMkp5WW1jNUx6WUFMMkp5WW1jNUx6Y0FMMkp5WW1jNUx6Z0FMMkp5WW1jNUx6a0FMMkoxWjI0ekx6RUFMMkoxWjI0ekx6SUFMMkoxWjI0ekx6TUFMMkoxWjI0MEx6RUFMMkoxWjI0MEx6SUFMMkoxWjI0MEx6TUFM''@;'; put 'put ''MkoxWjI0MEx6UUFMMkoxWjI0MUx6RUFMMkoxWjI0MUx6SUFMMkoxWjI0MUx6TUFMMkoxWjI0MUx6UUFMMkoxWjI0MUx6VUFMMkoxWjI0Mkx6RUFMMkoxWjI0Mkx6SUFMMkoxWjI0Mkx6TUFMMkoxWjI0Mkx6UUFMMkoxWjI0Mkx6VUFMMkoxWjI0Mkx6WUFMMkoxWjI0M0x6RUFMMkoxWjI0M0x6''@;'; put 'put ''SUFMMkoxWjI0M0x6TUFMMkoxWjI0M0x6UUFMMkoxWjI0M0x6VUFMMkoxWjI0M0x6WUFMMkoxWjI0M0x6Y0FMMkoxWjI0NEx6RUFMMkoxWjI0NEx6SUFMMkoxWjI0NEx6TUFMMkoxWjI0NEx6UUFMMkoxWjI0NEx6VUFMMkoxWjI0NEx6WUFMMkoxWjI0NEx6Y0FMMkoxWjI0NEx6Z0FMMkoxWjI0''@;'; put 'put ''NUx6RUFMMkoxWjI0NUx6SUFMMkoxWjI0NUx6TUFMMkoxWjI0NUx6UUFMMkoxWjI0NUx6VUFMMkoxWjI0NUx6WUFMMkoxWjI0NUx6Y0FMMkoxWjI0NUx6Z0FMMkoxWjI0NUx6a0FMMkoxY0hVekx6RUFMMkoxY0hVekx6SUFMMkoxY0hVekx6TUFMMkoxY0hVMEx6RUFMMkoxY0hVMEx6SUFMMkox''@;'; put 'put ''Y0hVMEx6TUFMMkoxY0hVMEx6UUFMMkoxY0hVMUx6RUFMMkoxY0hVMUx6SUFMMkoxY0hVMUx6TUFMMkoxY0hVMUx6UUFMMkoxY0hVMUx6VUFMMkoxY0hVMkx6RUFMMkoxY0hVMkx6SUFMMkoxY0hVMkx6TUFMMkoxY0hVMkx6UUFMMkoxY0hVMkx6VUFMMkoxY0hVMkx6WUFMMkoxY0hVM0x6RUFM''@;'; put 'put ''MkoxY0hVM0x6SUFMMkoxY0hVM0x6TUFMMkoxY0hVM0x6UUFMMkoxY0hVM0x6VUFMMkoxY0hVM0x6WUFMMkoxY0hVM0x6Y0FMMkoxY0hVNEx6RUFMMkoxY0hVNEx6SUFMMkoxY0hVNEx6TUFMMkoxY0hVNEx6UUFMMkoxY0hVNEx6VUFMMkoxY0hVNEx6WUFMMkoxY0hVNEx6Y0FMMkoxY0hVNEx6''@;'; put 'put ''Z0FMMkoxY0hVNUx6RUFMMkoxY0hVNUx6SUFMMkoxY0hVNUx6TUFMMkoxY0hVNUx6UUFMMkoxY0hVNUx6VUFMMkoxY0hVNUx6WUFMMkoxY0hVNUx6Y0FMMkoxY0hVNUx6Z0FMMkoxY0hVNUx6a0FMMlJoY21zeU15OHhBQzlrWVhKck1qTXZNZ0F2WkdGeWF6SXpMek1BTDJSaGNtc3lOQzh4QUM5''@;'; put 'put ''a1lYSnJNalF2TWdBdlpHRnlhekkwTHpNQUwyUmhjbXN5TkM4MEFDOWtZWEpyTWpVdk1RQXZaR0Z5YXpJMUx6SUFMMlJoY21zeU5TOHpBQzlrWVhKck1qVXZOQUF2WkdGeWF6STFMelVBTDJSaGNtc3lOaTh4QUM5a1lYSnJNall2TWdBdlpHRnlhekkyTHpNQUwyUmhjbXN5Tmk4MEFDOWtZWEpy''@;'; put 'put ''TWpZdk5RQXZaR0Z5YXpJMkx6WUFMMlJoY21zeU55OHhBQzlrWVhKck1qY3ZNZ0F2WkdGeWF6STNMek1BTDJSaGNtc3lOeTgwQUM5a1lYSnJNamN2TlFBdlpHRnlhekkzTHpZQUwyUmhjbXN5Tnk4M0FDOWtZWEpyTWpndk1RQXZaR0Z5YXpJNEx6SUFMMlJoY21zeU9DOHpBQzlrWVhKck1qZ3ZO''@;'; put 'put ''QUF2WkdGeWF6STRMelVBTDJSaGNtc3lPQzgyQUM5a1lYSnJNamd2TndBdlpHRnlhekk0THpnQUwyZHVZblV6THpFQUwyZHVZblV6THpJQUwyZHVZblV6THpNQUwyZHVZblUwTHpFQUwyZHVZblUwTHpJQUwyZHVZblUwTHpNQUwyZHVZblUwTHpRQUwyZHVZblUxTHpFQUwyZHVZblUxTHpJQUwy''@;'; put 'put ''ZHVZblUxTHpNQUwyZHVZblUxTHpRQUwyZHVZblUxTHpVQUwyZHVZblUyTHpFQUwyZHVZblUyTHpJQUwyZHVZblUyTHpNQUwyZHVZblUyTHpRQUwyZHVZblUyTHpVQUwyZHVZblUyTHpZQUwyZHVZblUzTHpFQUwyZHVZblUzTHpJQUwyZHVZblUzTHpNQUwyZHVZblUzTHpRQUwyZHVZblUzTHpV''@;'; put 'put ''QUwyZHVZblUzTHpZQUwyZHVZblUzTHpjQUwyZHVZblU0THpFQUwyZHVZblU0THpJQUwyZHVZblU0THpNQUwyZHVZblU0THpRQUwyZHVZblU0THpVQUwyZHVZblU0THpZQUwyZHVZblU0THpjQUwyZHVZblU0THpnQUwyZHVZblU1THpFQUwyZHVZblU1THpJQUwyZHVZblU1THpNQUwyZHVZblU1''@;'; put 'put ''THpRQUwyZHVZblU1THpVQUwyZHVZblU1THpZQUwyZHVZblU1THpjQUwyZHVZblU1THpnQUwyZHVZblU1THprQUwyZHlaV1Z1Y3pNdk1RQXZaM0psWlc1ek15OHlBQzluY21WbGJuTXpMek1BTDJkeVpXVnVjelF2TVFBdlozSmxaVzV6TkM4eUFDOW5jbVZsYm5NMEx6TUFMMmR5WldWdWN6UXZO''@;'; put 'put ''QUF2WjNKbFpXNXpOUzh4QUM5bmNtVmxibk0xTHpJQUwyZHlaV1Z1Y3pVdk13QXZaM0psWlc1ek5TODBBQzluY21WbGJuTTFMelVBTDJkeVpXVnVjell2TVFBdlozSmxaVzV6Tmk4eUFDOW5jbVZsYm5NMkx6TUFMMmR5WldWdWN6WXZOQUF2WjNKbFpXNXpOaTgxQUM5bmNtVmxibk0yTHpZQUwy''@;'; put 'put ''ZHlaV1Z1Y3pjdk1RQXZaM0psWlc1ek55OHlBQzluY21WbGJuTTNMek1BTDJkeVpXVnVjemN2TkFBdlozSmxaVzV6Tnk4MUFDOW5jbVZsYm5NM0x6WUFMMmR5WldWdWN6Y3ZOd0F2WjNKbFpXNXpPQzh4QUM5bmNtVmxibk00THpJQUwyZHlaV1Z1Y3pndk13QXZaM0psWlc1ek9DODBBQzluY21W''@;'; put 'put ''bGJuTTRMelVBTDJkeVpXVnVjemd2TmdBdlozSmxaVzV6T0M4M0FDOW5jbVZsYm5NNEx6Z0FMMmR5WldWdWN6a3ZNUUF2WjNKbFpXNXpPUzh5QUM5bmNtVmxibk01THpNQUwyZHlaV1Z1Y3prdk5BQXZaM0psWlc1ek9TODFBQzluY21WbGJuTTVMellBTDJkeVpXVnVjemt2TndBdlozSmxaVzV6''@;'; put 'put ''T1M4NEFDOW5jbVZsYm5NNUx6a0FMMmR5Wlhsek15OHhBQzluY21WNWN6TXZNZ0F2WjNKbGVYTXpMek1BTDJkeVpYbHpOQzh4QUM5bmNtVjVjelF2TWdBdlozSmxlWE0wTHpNQUwyZHlaWGx6TkM4MEFDOW5jbVY1Y3pVdk1RQXZaM0psZVhNMUx6SUFMMmR5Wlhsek5TOHpBQzluY21WNWN6VXZO''@;'; put 'put ''QUF2WjNKbGVYTTFMelVBTDJkeVpYbHpOaTh4QUM5bmNtVjVjell2TWdBdlozSmxlWE0yTHpNQUwyZHlaWGx6Tmk4MEFDOW5jbVY1Y3pZdk5RQXZaM0psZVhNMkx6WUFMMmR5Wlhsek55OHhBQzluY21WNWN6Y3ZNZ0F2WjNKbGVYTTNMek1BTDJkeVpYbHpOeTgwQUM5bmNtVjVjemN2TlFBdloz''@;'; put 'put ''SmxlWE0zTHpZQUwyZHlaWGx6Tnk4M0FDOW5jbVY1Y3pndk1RQXZaM0psZVhNNEx6SUFMMmR5Wlhsek9DOHpBQzluY21WNWN6Z3ZOQUF2WjNKbGVYTTRMelVBTDJkeVpYbHpPQzgyQUM5bmNtVjVjemd2TndBdlozSmxlWE00THpnQUwyZHlaWGx6T1M4eEFDOW5jbVY1Y3prdk1nQXZaM0psZVhN''@;'; put 'put ''NUx6TUFMMmR5Wlhsek9TODBBQzluY21WNWN6a3ZOUUF2WjNKbGVYTTVMellBTDJkeVpYbHpPUzgzQUM5bmNtVjVjemt2T0FBdlozSmxlWE01THprQUwyOXlZVzVuWlhNekx6RUFMMjl5WVc1blpYTXpMeklBTDI5eVlXNW5aWE16THpNQUwyOXlZVzVuWlhNMEx6RUFMMjl5WVc1blpYTTBMeklB''@;'; put 'put ''TDI5eVlXNW5aWE0wTHpNQUwyOXlZVzVuWlhNMEx6UUFMMjl5WVc1blpYTTFMekVBTDI5eVlXNW5aWE0xTHpJQUwyOXlZVzVuWlhNMUx6TUFMMjl5WVc1blpYTTFMelFBTDI5eVlXNW5aWE0xTHpVQUwyOXlZVzVuWlhNMkx6RUFMMjl5WVc1blpYTTJMeklBTDI5eVlXNW5aWE0yTHpNQUwyOXlZ''@;'; put 'put ''VzVuWlhNMkx6UUFMMjl5WVc1blpYTTJMelVBTDI5eVlXNW5aWE0yTHpZQUwyOXlZVzVuWlhNM0x6RUFMMjl5WVc1blpYTTNMeklBTDI5eVlXNW5aWE0zTHpNQUwyOXlZVzVuWlhNM0x6UUFMMjl5WVc1blpYTTNMelVBTDI5eVlXNW5aWE0zTHpZQUwyOXlZVzVuWlhNM0x6Y0FMMjl5WVc1blpY''@;'; put 'put ''TTRMekVBTDI5eVlXNW5aWE00THpJQUwyOXlZVzVuWlhNNEx6TUFMMjl5WVc1blpYTTRMelFBTDI5eVlXNW5aWE00THpVQUwyOXlZVzVuWlhNNEx6WUFMMjl5WVc1blpYTTRMemNBTDI5eVlXNW5aWE00THpnQUwyOXlZVzVuWlhNNUx6RUFMMjl5WVc1blpYTTVMeklBTDI5eVlXNW5aWE01THpN''@;'; put 'put ''QUwyOXlZVzVuWlhNNUx6UUFMMjl5WVc1blpYTTVMelVBTDI5eVlXNW5aWE01THpZQUwyOXlZVzVuWlhNNUx6Y0FMMjl5WVc1blpYTTVMemdBTDI5eVlXNW5aWE01THprQUwyOXljbVF6THpFQUwyOXljbVF6THpJQUwyOXljbVF6THpNQUwyOXljbVEwTHpFQUwyOXljbVEwTHpJQUwyOXljbVEw''@;'; put 'put ''THpNQUwyOXljbVEwTHpRQUwyOXljbVExTHpFQUwyOXljbVExTHpJQUwyOXljbVExTHpNQUwyOXljbVExTHpRQUwyOXljbVExTHpVQUwyOXljbVEyTHpFQUwyOXljbVEyTHpJQUwyOXljbVEyTHpNQUwyOXljbVEyTHpRQUwyOXljbVEyTHpVQUwyOXljbVEyTHpZQUwyOXljbVEzTHpFQUwyOXlj''@;'; put 'put ''bVEzTHpJQUwyOXljbVEzTHpNQUwyOXljbVEzTHpRQUwyOXljbVEzTHpVQUwyOXljbVEzTHpZQUwyOXljbVEzTHpjQUwyOXljbVE0THpFQUwyOXljbVE0THpJQUwyOXljbVE0THpNQUwyOXljbVE0THpRQUwyOXljbVE0THpVQUwyOXljbVE0THpZQUwyOXljbVE0THpjQUwyOXljbVE0THpnQUwy''@;'; put 'put ''OXljbVE1THpFQUwyOXljbVE1THpJQUwyOXljbVE1THpNQUwyOXljbVE1THpRQUwyOXljbVE1THpVQUwyOXljbVE1THpZQUwyOXljbVE1THpjQUwyOXljbVE1THpnQUwyOXljbVE1THprQUwzQmhhWEpsWkRFd0x6RUFMM0JoYVhKbFpERXdMekV3QUM5d1lXbHlaV1F4TUM4eUFDOXdZV2x5WldR''@;'; put 'put ''eE1DOHpBQzl3WVdseVpXUXhNQzgwQUM5d1lXbHlaV1F4TUM4MUFDOXdZV2x5WldReE1DODJBQzl3WVdseVpXUXhNQzgzQUM5d1lXbHlaV1F4TUM4NEFDOXdZV2x5WldReE1DODVBQzl3WVdseVpXUXhNUzh4QUM5d1lXbHlaV1F4TVM4eE1BQXZjR0ZwY21Wa01URXZNVEVBTDNCaGFYSmxaREV4''@;'; put 'put ''THpJQUwzQmhhWEpsWkRFeEx6TUFMM0JoYVhKbFpERXhMelFBTDNCaGFYSmxaREV4THpVQUwzQmhhWEpsWkRFeEx6WUFMM0JoYVhKbFpERXhMemNBTDNCaGFYSmxaREV4THpnQUwzQmhhWEpsWkRFeEx6a0FMM0JoYVhKbFpERXlMekVBTDNCaGFYSmxaREV5THpFd0FDOXdZV2x5WldReE1pOHhN''@;'; put 'put ''UUF2Y0dGcGNtVmtNVEl2TVRJQUwzQmhhWEpsWkRFeUx6SUFMM0JoYVhKbFpERXlMek1BTDNCaGFYSmxaREV5THpRQUwzQmhhWEpsWkRFeUx6VUFMM0JoYVhKbFpERXlMellBTDNCaGFYSmxaREV5THpjQUwzQmhhWEpsWkRFeUx6Z0FMM0JoYVhKbFpERXlMemtBTDNCaGFYSmxaRE12TVFBdmNH''@;'; put 'put ''RnBjbVZrTXk4eUFDOXdZV2x5WldRekx6TUFMM0JoYVhKbFpEUXZNUUF2Y0dGcGNtVmtOQzh5QUM5d1lXbHlaV1EwTHpNQUwzQmhhWEpsWkRRdk5BQXZjR0ZwY21Wa05TOHhBQzl3WVdseVpXUTFMeklBTDNCaGFYSmxaRFV2TXdBdmNHRnBjbVZrTlM4MEFDOXdZV2x5WldRMUx6VUFMM0JoYVhK''@;'; put 'put ''bFpEWXZNUUF2Y0dGcGNtVmtOaTh5QUM5d1lXbHlaV1EyTHpNQUwzQmhhWEpsWkRZdk5BQXZjR0ZwY21Wa05pODFBQzl3WVdseVpXUTJMellBTDNCaGFYSmxaRGN2TVFBdmNHRnBjbVZrTnk4eUFDOXdZV2x5WldRM0x6TUFMM0JoYVhKbFpEY3ZOQUF2Y0dGcGNtVmtOeTgxQUM5d1lXbHlaV1Ez''@;'; put 'put ''THpZQUwzQmhhWEpsWkRjdk53QXZjR0ZwY21Wa09DOHhBQzl3WVdseVpXUTRMeklBTDNCaGFYSmxaRGd2TXdBdmNHRnBjbVZrT0M4MEFDOXdZV2x5WldRNEx6VUFMM0JoYVhKbFpEZ3ZOZ0F2Y0dGcGNtVmtPQzgzQUM5d1lXbHlaV1E0THpnQUwzQmhhWEpsWkRrdk1RQXZjR0ZwY21Wa09TOHlB''@;'; put 'put ''Qzl3WVdseVpXUTVMek1BTDNCaGFYSmxaRGt2TkFBdmNHRnBjbVZrT1M4MUFDOXdZV2x5WldRNUx6WUFMM0JoYVhKbFpEa3ZOd0F2Y0dGcGNtVmtPUzg0QUM5d1lXbHlaV1E1THprQUwzQmhjM1JsYkRFekx6RUFMM0JoYzNSbGJERXpMeklBTDNCaGMzUmxiREV6THpNQUwzQmhjM1JsYkRFMEx6''@;'; put 'put ''RUFMM0JoYzNSbGJERTBMeklBTDNCaGMzUmxiREUwTHpNQUwzQmhjM1JsYkRFMEx6UUFMM0JoYzNSbGJERTFMekVBTDNCaGMzUmxiREUxTHpJQUwzQmhjM1JsYkRFMUx6TUFMM0JoYzNSbGJERTFMelFBTDNCaGMzUmxiREUxTHpVQUwzQmhjM1JsYkRFMkx6RUFMM0JoYzNSbGJERTJMeklBTDNC''@;'; put 'put ''aGMzUmxiREUyTHpNQUwzQmhjM1JsYkRFMkx6UUFMM0JoYzNSbGJERTJMelVBTDNCaGMzUmxiREUyTHpZQUwzQmhjM1JsYkRFM0x6RUFMM0JoYzNSbGJERTNMeklBTDNCaGMzUmxiREUzTHpNQUwzQmhjM1JsYkRFM0x6UUFMM0JoYzNSbGJERTNMelVBTDNCaGMzUmxiREUzTHpZQUwzQmhjM1Js''@;'; put 'put ''YkRFM0x6Y0FMM0JoYzNSbGJERTRMekVBTDNCaGMzUmxiREU0THpJQUwzQmhjM1JsYkRFNEx6TUFMM0JoYzNSbGJERTRMelFBTDNCaGMzUmxiREU0THpVQUwzQmhjM1JsYkRFNEx6WUFMM0JoYzNSbGJERTRMemNBTDNCaGMzUmxiREU0THpnQUwzQmhjM1JsYkRFNUx6RUFMM0JoYzNSbGJERTVM''@;'; put 'put ''eklBTDNCaGMzUmxiREU1THpNQUwzQmhjM1JsYkRFNUx6UUFMM0JoYzNSbGJERTVMelVBTDNCaGMzUmxiREU1THpZQUwzQmhjM1JsYkRFNUx6Y0FMM0JoYzNSbGJERTVMemdBTDNCaGMzUmxiREU1THprQUwzQmhjM1JsYkRJekx6RUFMM0JoYzNSbGJESXpMeklBTDNCaGMzUmxiREl6THpNQUwz''@;'; put 'put ''QmhjM1JsYkRJMEx6RUFMM0JoYzNSbGJESTBMeklBTDNCaGMzUmxiREkwTHpNQUwzQmhjM1JsYkRJMEx6UUFMM0JoYzNSbGJESTFMekVBTDNCaGMzUmxiREkxTHpJQUwzQmhjM1JsYkRJMUx6TUFMM0JoYzNSbGJESTFMelFBTDNCaGMzUmxiREkxTHpVQUwzQmhjM1JsYkRJMkx6RUFMM0JoYzNS''@;'; put 'put ''bGJESTJMeklBTDNCaGMzUmxiREkyTHpNQUwzQmhjM1JsYkRJMkx6UUFMM0JoYzNSbGJESTJMelVBTDNCaGMzUmxiREkyTHpZQUwzQmhjM1JsYkRJM0x6RUFMM0JoYzNSbGJESTNMeklBTDNCaGMzUmxiREkzTHpNQUwzQmhjM1JsYkRJM0x6UUFMM0JoYzNSbGJESTNMelVBTDNCaGMzUmxiREkz''@;'; put 'put ''THpZQUwzQmhjM1JsYkRJM0x6Y0FMM0JoYzNSbGJESTRMekVBTDNCaGMzUmxiREk0THpJQUwzQmhjM1JsYkRJNEx6TUFMM0JoYzNSbGJESTRMelFBTDNCaGMzUmxiREk0THpVQUwzQmhjM1JsYkRJNEx6WUFMM0JoYzNSbGJESTRMemNBTDNCaGMzUmxiREk0THpnQUwzQnBlV2N4TUM4eEFDOXdh''@;'; put 'put ''WGxuTVRBdk1UQUFMM0JwZVdjeE1DOHlBQzl3YVhsbk1UQXZNd0F2Y0dsNVp6RXdMelFBTDNCcGVXY3hNQzgxQUM5d2FYbG5NVEF2TmdBdmNHbDVaekV3THpjQUwzQnBlV2N4TUM4NEFDOXdhWGxuTVRBdk9RQXZjR2w1WnpFeEx6RUFMM0JwZVdjeE1TOHhNQUF2Y0dsNVp6RXhMekV4QUM5d2FY''@;'; put 'put ''bG5NVEV2TWdBdmNHbDVaekV4THpNQUwzQnBlV2N4TVM4MEFDOXdhWGxuTVRFdk5RQXZjR2w1WnpFeEx6WUFMM0JwZVdjeE1TODNBQzl3YVhsbk1URXZPQUF2Y0dsNVp6RXhMemtBTDNCcGVXY3pMekVBTDNCcGVXY3pMeklBTDNCcGVXY3pMek1BTDNCcGVXYzBMekVBTDNCcGVXYzBMeklBTDNC''@;'; put 'put ''cGVXYzBMek1BTDNCcGVXYzBMelFBTDNCcGVXYzFMekVBTDNCcGVXYzFMeklBTDNCcGVXYzFMek1BTDNCcGVXYzFMelFBTDNCcGVXYzFMelVBTDNCcGVXYzJMekVBTDNCcGVXYzJMeklBTDNCcGVXYzJMek1BTDNCcGVXYzJMelFBTDNCcGVXYzJMelVBTDNCcGVXYzJMellBTDNCcGVXYzNMekVB''@;'; put 'put ''TDNCcGVXYzNMeklBTDNCcGVXYzNMek1BTDNCcGVXYzNMelFBTDNCcGVXYzNMelVBTDNCcGVXYzNMellBTDNCcGVXYzNMemNBTDNCcGVXYzRMekVBTDNCcGVXYzRMeklBTDNCcGVXYzRMek1BTDNCcGVXYzRMelFBTDNCcGVXYzRMelVBTDNCcGVXYzRMellBTDNCcGVXYzRMemNBTDNCcGVXYzRM''@;'; put 'put ''emdBTDNCcGVXYzVMekVBTDNCcGVXYzVMeklBTDNCcGVXYzVMek1BTDNCcGVXYzVMelFBTDNCcGVXYzVMelVBTDNCcGVXYzVMellBTDNCcGVXYzVMemNBTDNCcGVXYzVMemdBTDNCcGVXYzVMemtBTDNCeVoyNHhNQzh4QUM5d2NtZHVNVEF2TVRBQUwzQnlaMjR4TUM4eUFDOXdjbWR1TVRBdk13''@;'; put 'put ''QXZjSEpuYmpFd0x6UUFMM0J5WjI0eE1DODFBQzl3Y21kdU1UQXZOZ0F2Y0hKbmJqRXdMemNBTDNCeVoyNHhNQzg0QUM5d2NtZHVNVEF2T1FBdmNISm5iakV4THpFQUwzQnlaMjR4TVM4eE1BQXZjSEpuYmpFeEx6RXhBQzl3Y21kdU1URXZNZ0F2Y0hKbmJqRXhMek1BTDNCeVoyNHhNUzgwQUM5''@;'; put 'put ''d2NtZHVNVEV2TlFBdmNISm5iakV4THpZQUwzQnlaMjR4TVM4M0FDOXdjbWR1TVRFdk9BQXZjSEpuYmpFeEx6a0FMM0J5WjI0ekx6RUFMM0J5WjI0ekx6SUFMM0J5WjI0ekx6TUFMM0J5WjI0MEx6RUFMM0J5WjI0MEx6SUFMM0J5WjI0MEx6TUFMM0J5WjI0MEx6UUFMM0J5WjI0MUx6RUFMM0J5''@;'; put 'put ''WjI0MUx6SUFMM0J5WjI0MUx6TUFMM0J5WjI0MUx6UUFMM0J5WjI0MUx6VUFMM0J5WjI0Mkx6RUFMM0J5WjI0Mkx6SUFMM0J5WjI0Mkx6TUFMM0J5WjI0Mkx6UUFMM0J5WjI0Mkx6VUFMM0J5WjI0Mkx6WUFMM0J5WjI0M0x6RUFMM0J5WjI0M0x6SUFMM0J5WjI0M0x6TUFMM0J5WjI0M0x6UUFM''@;'; put 'put ''M0J5WjI0M0x6VUFMM0J5WjI0M0x6WUFMM0J5WjI0M0x6Y0FMM0J5WjI0NEx6RUFMM0J5WjI0NEx6SUFMM0J5WjI0NEx6TUFMM0J5WjI0NEx6UUFMM0J5WjI0NEx6VUFMM0J5WjI0NEx6WUFMM0J5WjI0NEx6Y0FMM0J5WjI0NEx6Z0FMM0J5WjI0NUx6RUFMM0J5WjI0NUx6SUFMM0J5WjI0NUx6''@;'; put 'put ''TUFMM0J5WjI0NUx6UUFMM0J5WjI0NUx6VUFMM0J5WjI0NUx6WUFMM0J5WjI0NUx6Y0FMM0J5WjI0NUx6Z0FMM0J5WjI0NUx6a0FMM0IxWW5Vekx6RUFMM0IxWW5Vekx6SUFMM0IxWW5Vekx6TUFMM0IxWW5VMEx6RUFMM0IxWW5VMEx6SUFMM0IxWW5VMEx6TUFMM0IxWW5VMEx6UUFMM0IxWW5V''@;'; put 'put ''MUx6RUFMM0IxWW5VMUx6SUFMM0IxWW5VMUx6TUFMM0IxWW5VMUx6UUFMM0IxWW5VMUx6VUFMM0IxWW5VMkx6RUFMM0IxWW5VMkx6SUFMM0IxWW5VMkx6TUFMM0IxWW5VMkx6UUFMM0IxWW5VMkx6VUFMM0IxWW5VMkx6WUFMM0IxWW5VM0x6RUFMM0IxWW5VM0x6SUFMM0IxWW5VM0x6TUFMM0Ix''@;'; put 'put ''WW5VM0x6UUFMM0IxWW5VM0x6VUFMM0IxWW5VM0x6WUFMM0IxWW5VM0x6Y0FMM0IxWW5VNEx6RUFMM0IxWW5VNEx6SUFMM0IxWW5VNEx6TUFMM0IxWW5VNEx6UUFMM0IxWW5VNEx6VUFMM0IxWW5VNEx6WUFMM0IxWW5VNEx6Y0FMM0IxWW5VNEx6Z0FMM0IxWW5VNUx6RUFMM0IxWW5VNUx6SUFM''@;'; put 'put ''M0IxWW5VNUx6TUFMM0IxWW5VNUx6UUFMM0IxWW5VNUx6VUFMM0IxWW5VNUx6WUFMM0IxWW5VNUx6Y0FMM0IxWW5VNUx6Z0FMM0IxWW5VNUx6a0FMM0IxWW5WbmJqTXZNUUF2Y0hWaWRXZHVNeTh5QUM5d2RXSjFaMjR6THpNQUwzQjFZblZuYmpRdk1RQXZjSFZpZFdkdU5DOHlBQzl3ZFdKMVoy''@;'; put 'put ''NDBMek1BTDNCMVluVm5ialF2TkFBdmNIVmlkV2R1TlM4eEFDOXdkV0oxWjI0MUx6SUFMM0IxWW5WbmJqVXZNd0F2Y0hWaWRXZHVOUzgwQUM5d2RXSjFaMjQxTHpVQUwzQjFZblZuYmpZdk1RQXZjSFZpZFdkdU5pOHlBQzl3ZFdKMVoyNDJMek1BTDNCMVluVm5iall2TkFBdmNIVmlkV2R1Tmk4''@;'; put 'put ''MUFDOXdkV0oxWjI0Mkx6WUFMM0IxWW5WbmJqY3ZNUUF2Y0hWaWRXZHVOeTh5QUM5d2RXSjFaMjQzTHpNQUwzQjFZblZuYmpjdk5BQXZjSFZpZFdkdU55ODFBQzl3ZFdKMVoyNDNMellBTDNCMVluVm5iamN2TndBdmNIVmlkV2R1T0M4eEFDOXdkV0oxWjI0NEx6SUFMM0IxWW5WbmJqZ3ZNd0F2''@;'; put 'put ''Y0hWaWRXZHVPQzgwQUM5d2RXSjFaMjQ0THpVQUwzQjFZblZuYmpndk5nQXZjSFZpZFdkdU9DODNBQzl3ZFdKMVoyNDRMemdBTDNCMVluVm5iamt2TVFBdmNIVmlkV2R1T1M4eUFDOXdkV0oxWjI0NUx6TUFMM0IxWW5WbmJqa3ZOQUF2Y0hWaWRXZHVPUzgxQUM5d2RXSjFaMjQ1THpZQUwzQjFZ''@;'; put 'put ''blZuYmprdk53QXZjSFZpZFdkdU9TODRBQzl3ZFdKMVoyNDVMemtBTDNCMWIzSXhNQzh4QUM5d2RXOXlNVEF2TVRBQUwzQjFiM0l4TUM4eUFDOXdkVzl5TVRBdk13QXZjSFZ2Y2pFd0x6UUFMM0IxYjNJeE1DODFBQzl3ZFc5eU1UQXZOZ0F2Y0hWdmNqRXdMemNBTDNCMWIzSXhNQzg0QUM5d2RX''@;'; put 'put ''OXlNVEF2T1FBdmNIVnZjakV4THpFQUwzQjFiM0l4TVM4eE1BQXZjSFZ2Y2pFeEx6RXhBQzl3ZFc5eU1URXZNZ0F2Y0hWdmNqRXhMek1BTDNCMWIzSXhNUzgwQUM5d2RXOXlNVEV2TlFBdmNIVnZjakV4THpZQUwzQjFiM0l4TVM4M0FDOXdkVzl5TVRFdk9BQXZjSFZ2Y2pFeEx6a0FMM0IxYjNJ''@;'; put 'put ''ekx6RUFMM0IxYjNJekx6SUFMM0IxYjNJekx6TUFMM0IxYjNJMEx6RUFMM0IxYjNJMEx6SUFMM0IxYjNJMEx6TUFMM0IxYjNJMEx6UUFMM0IxYjNJMUx6RUFMM0IxYjNJMUx6SUFMM0IxYjNJMUx6TUFMM0IxYjNJMUx6UUFMM0IxYjNJMUx6VUFMM0IxYjNJMkx6RUFMM0IxYjNJMkx6SUFMM0Ix''@;'; put 'put ''YjNJMkx6TUFMM0IxYjNJMkx6UUFMM0IxYjNJMkx6VUFMM0IxYjNJMkx6WUFMM0IxYjNJM0x6RUFMM0IxYjNJM0x6SUFMM0IxYjNJM0x6TUFMM0IxYjNJM0x6UUFMM0IxYjNJM0x6VUFMM0IxYjNJM0x6WUFMM0IxYjNJM0x6Y0FMM0IxYjNJNEx6RUFMM0IxYjNJNEx6SUFMM0IxYjNJNEx6TUFM''@;'; put 'put ''M0IxYjNJNEx6UUFMM0IxYjNJNEx6VUFMM0IxYjNJNEx6WUFMM0IxYjNJNEx6Y0FMM0IxYjNJNEx6Z0FMM0IxYjNJNUx6RUFMM0IxYjNJNUx6SUFMM0IxYjNJNUx6TUFMM0IxYjNJNUx6UUFMM0IxYjNJNUx6VUFMM0IxYjNJNUx6WUFMM0IxYjNJNUx6Y0FMM0IxYjNJNUx6Z0FMM0IxYjNJNUx6''@;'; put 'put ''a0FMM0IxY21Rekx6RUFMM0IxY21Rekx6SUFMM0IxY21Rekx6TUFMM0IxY21RMEx6RUFMM0IxY21RMEx6SUFMM0IxY21RMEx6TUFMM0IxY21RMEx6UUFMM0IxY21RMUx6RUFMM0IxY21RMUx6SUFMM0IxY21RMUx6TUFMM0IxY21RMUx6UUFMM0IxY21RMUx6VUFMM0IxY21RMkx6RUFMM0IxY21R''@;'; put 'put ''Mkx6SUFMM0IxY21RMkx6TUFMM0IxY21RMkx6UUFMM0IxY21RMkx6VUFMM0IxY21RMkx6WUFMM0IxY21RM0x6RUFMM0IxY21RM0x6SUFMM0IxY21RM0x6TUFMM0IxY21RM0x6UUFMM0IxY21RM0x6VUFMM0IxY21RM0x6WUFMM0IxY21RM0x6Y0FMM0IxY21RNEx6RUFMM0IxY21RNEx6SUFMM0Ix''@;'; put 'put ''Y21RNEx6TUFMM0IxY21RNEx6UUFMM0IxY21RNEx6VUFMM0IxY21RNEx6WUFMM0IxY21RNEx6Y0FMM0IxY21RNEx6Z0FMM0IxY21RNUx6RUFMM0IxY21RNUx6SUFMM0IxY21RNUx6TUFMM0IxY21RNUx6UUFMM0IxY21RNUx6VUFMM0IxY21RNUx6WUFMM0IxY21RNUx6Y0FMM0IxY21RNUx6Z0FM''@;'; put 'put ''M0IxY21RNUx6a0FMM0IxY25Cc1pYTXpMekVBTDNCMWNuQnNaWE16THpJQUwzQjFjbkJzWlhNekx6TUFMM0IxY25Cc1pYTTBMekVBTDNCMWNuQnNaWE0wTHpJQUwzQjFjbkJzWlhNMEx6TUFMM0IxY25Cc1pYTTBMelFBTDNCMWNuQnNaWE0xTHpFQUwzQjFjbkJzWlhNMUx6SUFMM0IxY25Cc1pY''@;'; put 'put ''TTFMek1BTDNCMWNuQnNaWE0xTHpRQUwzQjFjbkJzWlhNMUx6VUFMM0IxY25Cc1pYTTJMekVBTDNCMWNuQnNaWE0yTHpJQUwzQjFjbkJzWlhNMkx6TUFMM0IxY25Cc1pYTTJMelFBTDNCMWNuQnNaWE0yTHpVQUwzQjFjbkJzWlhNMkx6WUFMM0IxY25Cc1pYTTNMekVBTDNCMWNuQnNaWE0zTHpJ''@;'; put 'put ''QUwzQjFjbkJzWlhNM0x6TUFMM0IxY25Cc1pYTTNMelFBTDNCMWNuQnNaWE0zTHpVQUwzQjFjbkJzWlhNM0x6WUFMM0IxY25Cc1pYTTNMemNBTDNCMWNuQnNaWE00THpFQUwzQjFjbkJzWlhNNEx6SUFMM0IxY25Cc1pYTTRMek1BTDNCMWNuQnNaWE00THpRQUwzQjFjbkJzWlhNNEx6VUFMM0Ix''@;'; put 'put ''Y25Cc1pYTTRMellBTDNCMWNuQnNaWE00THpjQUwzQjFjbkJzWlhNNEx6Z0FMM0IxY25Cc1pYTTVMekVBTDNCMWNuQnNaWE01THpJQUwzQjFjbkJzWlhNNUx6TUFMM0IxY25Cc1pYTTVMelFBTDNCMWNuQnNaWE01THpVQUwzQjFjbkJzWlhNNUx6WUFMM0IxY25Cc1pYTTVMemNBTDNCMWNuQnNa''@;'; put 'put ''WE01THpnQUwzQjFjbkJzWlhNNUx6a0FMM0prWW5VeE1DOHhBQzl5WkdKMU1UQXZNVEFBTDNKa1luVXhNQzh5QUM5eVpHSjFNVEF2TXdBdmNtUmlkVEV3THpRQUwzSmtZblV4TUM4MUFDOXlaR0oxTVRBdk5nQXZjbVJpZFRFd0x6Y0FMM0prWW5VeE1DODRBQzl5WkdKMU1UQXZPUUF2Y21SaWRU''@;'; put 'put ''RXhMekVBTDNKa1luVXhNUzh4TUFBdmNtUmlkVEV4THpFeEFDOXlaR0oxTVRFdk1nQXZjbVJpZFRFeEx6TUFMM0prWW5VeE1TODBBQzl5WkdKMU1URXZOUUF2Y21SaWRURXhMellBTDNKa1luVXhNUzgzQUM5eVpHSjFNVEV2T0FBdmNtUmlkVEV4THprQUwzSmtZblV6THpFQUwzSmtZblV6THpJ''@;'; put 'put ''QUwzSmtZblV6THpNQUwzSmtZblUwTHpFQUwzSmtZblUwTHpJQUwzSmtZblUwTHpNQUwzSmtZblUwTHpRQUwzSmtZblUxTHpFQUwzSmtZblUxTHpJQUwzSmtZblUxTHpNQUwzSmtZblUxTHpRQUwzSmtZblUxTHpVQUwzSmtZblUyTHpFQUwzSmtZblUyTHpJQUwzSmtZblUyTHpNQUwzSmtZblUy''@;'; put 'put ''THpRQUwzSmtZblUyTHpVQUwzSmtZblUyTHpZQUwzSmtZblUzTHpFQUwzSmtZblUzTHpJQUwzSmtZblUzTHpNQUwzSmtZblUzTHpRQUwzSmtZblUzTHpVQUwzSmtZblUzTHpZQUwzSmtZblUzTHpjQUwzSmtZblU0THpFQUwzSmtZblU0THpJQUwzSmtZblU0THpNQUwzSmtZblU0THpRQUwzSmtZ''@;'; put 'put ''blU0THpVQUwzSmtZblU0THpZQUwzSmtZblU0THpjQUwzSmtZblU0THpnQUwzSmtZblU1THpFQUwzSmtZblU1THpJQUwzSmtZblU1THpNQUwzSmtZblU1THpRQUwzSmtZblU1THpVQUwzSmtZblU1THpZQUwzSmtZblU1THpjQUwzSmtZblU1THpnQUwzSmtZblU1THprQUwzSmtaM2t4TUM4eEFD''@;'; put 'put ''OXlaR2Q1TVRBdk1UQUFMM0prWjNreE1DOHlBQzl5WkdkNU1UQXZNd0F2Y21SbmVURXdMelFBTDNKa1oza3hNQzgxQUM5eVpHZDVNVEF2TmdBdmNtUm5lVEV3THpjQUwzSmtaM2t4TUM4NEFDOXlaR2Q1TVRBdk9RQXZjbVJuZVRFeEx6RUFMM0prWjNreE1TOHhNQUF2Y21SbmVURXhMekV4QUM5''@;'; put 'put ''eVpHZDVNVEV2TWdBdmNtUm5lVEV4THpNQUwzSmtaM2t4TVM4MEFDOXlaR2Q1TVRFdk5RQXZjbVJuZVRFeEx6WUFMM0prWjNreE1TODNBQzl5WkdkNU1URXZPQUF2Y21SbmVURXhMemtBTDNKa1oza3pMekVBTDNKa1oza3pMeklBTDNKa1oza3pMek1BTDNKa1ozazBMekVBTDNKa1ozazBMeklB''@;'; put 'put ''TDNKa1ozazBMek1BTDNKa1ozazBMelFBTDNKa1ozazFMekVBTDNKa1ozazFMeklBTDNKa1ozazFMek1BTDNKa1ozazFMelFBTDNKa1ozazFMelVBTDNKa1ozazJMekVBTDNKa1ozazJMeklBTDNKa1ozazJMek1BTDNKa1ozazJMelFBTDNKa1ozazJMelVBTDNKa1ozazJMellBTDNKa1ozazNM''@;'; put 'put ''ekVBTDNKa1ozazNMeklBTDNKa1ozazNMek1BTDNKa1ozazNMelFBTDNKa1ozazNMelVBTDNKa1ozazNMellBTDNKa1ozazNMemNBTDNKa1ozazRMekVBTDNKa1ozazRMeklBTDNKa1ozazRMek1BTDNKa1ozazRMelFBTDNKa1ozazRMelVBTDNKa1ozazRMellBTDNKa1ozazRMemNBTDNKa1oz''@;'; put 'put ''azRMemdBTDNKa1ozazVMekVBTDNKa1ozazVMeklBTDNKa1ozazVMek1BTDNKa1ozazVMelFBTDNKa1ozazVMelVBTDNKa1ozazVMellBTDNKa1ozazVMemNBTDNKa1ozazVMemdBTDNKa1ozazVMemtBTDNKa2NIVXpMekVBTDNKa2NIVXpMeklBTDNKa2NIVXpMek1BTDNKa2NIVTBMekVBTDNK''@;'; put 'put ''a2NIVTBMeklBTDNKa2NIVTBMek1BTDNKa2NIVTBMelFBTDNKa2NIVTFMekVBTDNKa2NIVTFMeklBTDNKa2NIVTFMek1BTDNKa2NIVTFMelFBTDNKa2NIVTFMelVBTDNKa2NIVTJMekVBTDNKa2NIVTJMeklBTDNKa2NIVTJMek1BTDNKa2NIVTJMelFBTDNKa2NIVTJMelVBTDNKa2NIVTJMellB''@;'; put 'put ''TDNKa2NIVTNMekVBTDNKa2NIVTNMeklBTDNKa2NIVTNMek1BTDNKa2NIVTNMelFBTDNKa2NIVTNMelVBTDNKa2NIVTNMellBTDNKa2NIVTNMemNBTDNKa2NIVTRMekVBTDNKa2NIVTRMeklBTDNKa2NIVTRMek1BTDNKa2NIVTRMelFBTDNKa2NIVTRMelVBTDNKa2NIVTRMellBTDNKa2NIVTRM''@;'; put 'put ''emNBTDNKa2NIVTRMemdBTDNKa2NIVTVMekVBTDNKa2NIVTVMeklBTDNKa2NIVTVMek1BTDNKa2NIVTVMelFBTDNKa2NIVTVMelVBTDNKa2NIVTVMellBTDNKa2NIVTVMemNBTDNKa2NIVTVMemdBTDNKa2NIVTVMemtBTDNKa2VXeGlkVEV3THpFQUwzSmtlV3hpZFRFd0x6RXdBQzl5Wkhsc1lu''@;'; put 'put ''VXhNQzh5QUM5eVpIbHNZblV4TUM4ekFDOXlaSGxzWW5VeE1DODBBQzl5Wkhsc1luVXhNQzgxQUM5eVpIbHNZblV4TUM4MkFDOXlaSGxzWW5VeE1DODNBQzl5Wkhsc1luVXhNQzg0QUM5eVpIbHNZblV4TUM4NUFDOXlaSGxzWW5VeE1TOHhBQzl5Wkhsc1luVXhNUzh4TUFBdmNtUjViR0oxTVRF''@;'; put 'put ''dk1URUFMM0prZVd4aWRURXhMeklBTDNKa2VXeGlkVEV4THpNQUwzSmtlV3hpZFRFeEx6UUFMM0prZVd4aWRURXhMelVBTDNKa2VXeGlkVEV4THpZQUwzSmtlV3hpZFRFeEx6Y0FMM0prZVd4aWRURXhMemdBTDNKa2VXeGlkVEV4THprQUwzSmtlV3hpZFRNdk1RQXZjbVI1YkdKMU15OHlBQzl5''@;'; put 'put ''Wkhsc1luVXpMek1BTDNKa2VXeGlkVFF2TVFBdmNtUjViR0oxTkM4eUFDOXlaSGxzWW5VMEx6TUFMM0prZVd4aWRUUXZOQUF2Y21SNWJHSjFOUzh4QUM5eVpIbHNZblUxTHpJQUwzSmtlV3hpZFRVdk13QXZjbVI1YkdKMU5TODBBQzl5Wkhsc1luVTFMelVBTDNKa2VXeGlkVFl2TVFBdmNtUjVi''@;'; put 'put ''R0oxTmk4eUFDOXlaSGxzWW5VMkx6TUFMM0prZVd4aWRUWXZOQUF2Y21SNWJHSjFOaTgxQUM5eVpIbHNZblUyTHpZQUwzSmtlV3hpZFRjdk1RQXZjbVI1YkdKMU55OHlBQzl5Wkhsc1luVTNMek1BTDNKa2VXeGlkVGN2TkFBdmNtUjViR0oxTnk4MUFDOXlaSGxzWW5VM0x6WUFMM0prZVd4aWRU''@;'; put 'put ''Y3ZOd0F2Y21SNWJHSjFPQzh4QUM5eVpIbHNZblU0THpJQUwzSmtlV3hpZFRndk13QXZjbVI1YkdKMU9DODBBQzl5Wkhsc1luVTRMelVBTDNKa2VXeGlkVGd2TmdBdmNtUjViR0oxT0M4M0FDOXlaSGxzWW5VNEx6Z0FMM0prZVd4aWRUa3ZNUUF2Y21SNWJHSjFPUzh5QUM5eVpIbHNZblU1THpN''@;'; put 'put ''QUwzSmtlV3hpZFRrdk5BQXZjbVI1YkdKMU9TODFBQzl5Wkhsc1luVTVMellBTDNKa2VXeGlkVGt2TndBdmNtUjViR0oxT1M4NEFDOXlaSGxzWW5VNUx6a0FMM0prZVd4bmJqRXdMekVBTDNKa2VXeG5iakV3THpFd0FDOXlaSGxzWjI0eE1DOHlBQzl5Wkhsc1oyNHhNQzh6QUM5eVpIbHNaMjR4''@;'; put 'put ''TUM4MEFDOXlaSGxzWjI0eE1DODFBQzl5Wkhsc1oyNHhNQzgyQUM5eVpIbHNaMjR4TUM4M0FDOXlaSGxzWjI0eE1DODRBQzl5Wkhsc1oyNHhNQzg1QUM5eVpIbHNaMjR4TVM4eEFDOXlaSGxzWjI0eE1TOHhNQUF2Y21SNWJHZHVNVEV2TVRFQUwzSmtlV3huYmpFeEx6SUFMM0prZVd4bmJqRXhM''@;'; put 'put ''ek1BTDNKa2VXeG5iakV4THpRQUwzSmtlV3huYmpFeEx6VUFMM0prZVd4bmJqRXhMellBTDNKa2VXeG5iakV4THpjQUwzSmtlV3huYmpFeEx6Z0FMM0prZVd4bmJqRXhMemtBTDNKa2VXeG5iak12TVFBdmNtUjViR2R1TXk4eUFDOXlaSGxzWjI0ekx6TUFMM0prZVd4bmJqUXZNUUF2Y21SNWJH''@;'; put 'put ''ZHVOQzh5QUM5eVpIbHNaMjQwTHpNQUwzSmtlV3huYmpRdk5BQXZjbVI1YkdkdU5TOHhBQzl5Wkhsc1oyNDFMeklBTDNKa2VXeG5ialV2TXdBdmNtUjViR2R1TlM4MEFDOXlaSGxzWjI0MUx6VUFMM0prZVd4bmJqWXZNUUF2Y21SNWJHZHVOaTh5QUM5eVpIbHNaMjQyTHpNQUwzSmtlV3huYmpZ''@;'; put 'put ''dk5BQXZjbVI1YkdkdU5pODFBQzl5Wkhsc1oyNDJMellBTDNKa2VXeG5iamN2TVFBdmNtUjViR2R1Tnk4eUFDOXlaSGxzWjI0M0x6TUFMM0prZVd4bmJqY3ZOQUF2Y21SNWJHZHVOeTgxQUM5eVpIbHNaMjQzTHpZQUwzSmtlV3huYmpjdk53QXZjbVI1YkdkdU9DOHhBQzl5Wkhsc1oyNDRMeklB''@;'; put 'put ''TDNKa2VXeG5iamd2TXdBdmNtUjViR2R1T0M4MEFDOXlaSGxzWjI0NEx6VUFMM0prZVd4bmJqZ3ZOZ0F2Y21SNWJHZHVPQzgzQUM5eVpIbHNaMjQ0THpnQUwzSmtlV3huYmprdk1RQXZjbVI1YkdkdU9TOHlBQzl5Wkhsc1oyNDVMek1BTDNKa2VXeG5iamt2TkFBdmNtUjViR2R1T1M4MUFDOXla''@;'; put 'put ''SGxzWjI0NUx6WUFMM0prZVd4bmJqa3ZOd0F2Y21SNWJHZHVPUzg0QUM5eVpIbHNaMjQ1THprQUwzSmxaSE16THpFQUwzSmxaSE16THpJQUwzSmxaSE16THpNQUwzSmxaSE0wTHpFQUwzSmxaSE0wTHpJQUwzSmxaSE0wTHpNQUwzSmxaSE0wTHpRQUwzSmxaSE0xTHpFQUwzSmxaSE0xTHpJQUwz''@;'; put 'put ''SmxaSE0xTHpNQUwzSmxaSE0xTHpRQUwzSmxaSE0xTHpVQUwzSmxaSE0yTHpFQUwzSmxaSE0yTHpJQUwzSmxaSE0yTHpNQUwzSmxaSE0yTHpRQUwzSmxaSE0yTHpVQUwzSmxaSE0yTHpZQUwzSmxaSE0zTHpFQUwzSmxaSE0zTHpJQUwzSmxaSE0zTHpNQUwzSmxaSE0zTHpRQUwzSmxaSE0zTHpV''@;'; put 'put ''QUwzSmxaSE0zTHpZQUwzSmxaSE0zTHpjQUwzSmxaSE00THpFQUwzSmxaSE00THpJQUwzSmxaSE00THpNQUwzSmxaSE00THpRQUwzSmxaSE00THpVQUwzSmxaSE00THpZQUwzSmxaSE00THpjQUwzSmxaSE00THpnQUwzSmxaSE01THpFQUwzSmxaSE01THpJQUwzSmxaSE01THpNQUwzSmxaSE01''@;'; put 'put ''THpRQUwzSmxaSE01THpVQUwzSmxaSE01THpZQUwzSmxaSE01THpjQUwzSmxaSE01THpnQUwzSmxaSE01THprQUwzTmxkREV6THpFQUwzTmxkREV6THpJQUwzTmxkREV6THpNQUwzTmxkREUwTHpFQUwzTmxkREUwTHpJQUwzTmxkREUwTHpNQUwzTmxkREUwTHpRQUwzTmxkREUxTHpFQUwzTmxk''@;'; put 'put ''REUxTHpJQUwzTmxkREUxTHpNQUwzTmxkREUxTHpRQUwzTmxkREUxTHpVQUwzTmxkREUyTHpFQUwzTmxkREUyTHpJQUwzTmxkREUyTHpNQUwzTmxkREUyTHpRQUwzTmxkREUyTHpVQUwzTmxkREUyTHpZQUwzTmxkREUzTHpFQUwzTmxkREUzTHpJQUwzTmxkREUzTHpNQUwzTmxkREUzTHpRQUwz''@;'; put 'put ''TmxkREUzTHpVQUwzTmxkREUzTHpZQUwzTmxkREUzTHpjQUwzTmxkREU0THpFQUwzTmxkREU0THpJQUwzTmxkREU0THpNQUwzTmxkREU0THpRQUwzTmxkREU0THpVQUwzTmxkREU0THpZQUwzTmxkREU0THpjQUwzTmxkREU0THpnQUwzTmxkREU1THpFQUwzTmxkREU1THpJQUwzTmxkREU1THpN''@;'; put 'put ''QUwzTmxkREU1THpRQUwzTmxkREU1THpVQUwzTmxkREU1THpZQUwzTmxkREU1THpjQUwzTmxkREU1THpnQUwzTmxkREU1THprQUwzTmxkREl6THpFQUwzTmxkREl6THpJQUwzTmxkREl6THpNQUwzTmxkREkwTHpFQUwzTmxkREkwTHpJQUwzTmxkREkwTHpNQUwzTmxkREkwTHpRQUwzTmxkREkx''@;'; put 'put ''THpFQUwzTmxkREkxTHpJQUwzTmxkREkxTHpNQUwzTmxkREkxTHpRQUwzTmxkREkxTHpVQUwzTmxkREkyTHpFQUwzTmxkREkyTHpJQUwzTmxkREkyTHpNQUwzTmxkREkyTHpRQUwzTmxkREkyTHpVQUwzTmxkREkyTHpZQUwzTmxkREkzTHpFQUwzTmxkREkzTHpJQUwzTmxkREkzTHpNQUwzTmxk''@;'; put 'put ''REkzTHpRQUwzTmxkREkzTHpVQUwzTmxkREkzTHpZQUwzTmxkREkzTHpjQUwzTmxkREk0THpFQUwzTmxkREk0THpJQUwzTmxkREk0THpNQUwzTmxkREk0THpRQUwzTmxkREk0THpVQUwzTmxkREk0THpZQUwzTmxkREk0THpjQUwzTmxkREk0THpnQUwzTmxkRE14TUM4eEFDOXpaWFF6TVRBdk1U''@;'; put 'put ''QUFMM05sZERNeE1DOHlBQzl6WlhRek1UQXZNd0F2YzJWME16RXdMelFBTDNObGRETXhNQzgxQUM5elpYUXpNVEF2TmdBdmMyVjBNekV3THpjQUwzTmxkRE14TUM4NEFDOXpaWFF6TVRBdk9RQXZjMlYwTXpFeEx6RUFMM05sZERNeE1TOHhNQUF2YzJWME16RXhMekV4QUM5elpYUXpNVEV2TWdB''@;'; put 'put ''dmMyVjBNekV4THpNQUwzTmxkRE14TVM4MEFDOXpaWFF6TVRFdk5RQXZjMlYwTXpFeEx6WUFMM05sZERNeE1TODNBQzl6WlhRek1URXZPQUF2YzJWME16RXhMemtBTDNObGRETXhNaTh4QUM5elpYUXpNVEl2TVRBQUwzTmxkRE14TWk4eE1RQXZjMlYwTXpFeUx6RXlBQzl6WlhRek1USXZNZ0F2''@;'; put 'put ''YzJWME16RXlMek1BTDNObGRETXhNaTgwQUM5elpYUXpNVEl2TlFBdmMyVjBNekV5THpZQUwzTmxkRE14TWk4M0FDOXpaWFF6TVRJdk9BQXZjMlYwTXpFeUx6a0FMM05sZERNekx6RUFMM05sZERNekx6SUFMM05sZERNekx6TUFMM05sZERNMEx6RUFMM05sZERNMEx6SUFMM05sZERNMEx6TUFM''@;'; put 'put ''M05sZERNMEx6UUFMM05sZERNMUx6RUFMM05sZERNMUx6SUFMM05sZERNMUx6TUFMM05sZERNMUx6UUFMM05sZERNMUx6VUFMM05sZERNMkx6RUFMM05sZERNMkx6SUFMM05sZERNMkx6TUFMM05sZERNMkx6UUFMM05sZERNMkx6VUFMM05sZERNMkx6WUFMM05sZERNM0x6RUFMM05sZERNM0x6''@;'; put 'put ''SUFMM05sZERNM0x6TUFMM05sZERNM0x6UUFMM05sZERNM0x6VUFMM05sZERNM0x6WUFMM05sZERNM0x6Y0FMM05sZERNNEx6RUFMM05sZERNNEx6SUFMM05sZERNNEx6TUFMM05sZERNNEx6UUFMM05sZERNNEx6VUFMM05sZERNNEx6WUFMM05sZERNNEx6Y0FMM05sZERNNEx6Z0FMM05sZERN''@;'; put 'put ''NUx6RUFMM05sZERNNUx6SUFMM05sZERNNUx6TUFMM05sZERNNUx6UUFMM05sZERNNUx6VUFMM05sZERNNUx6WUFMM05sZERNNUx6Y0FMM05sZERNNUx6Z0FMM05sZERNNUx6a0FMM053WldOMGNtRnNNVEF2TVFBdmMzQmxZM1J5WVd3eE1DOHhNQUF2YzNCbFkzUnlZV3d4TUM4eUFDOXpjR1Zq''@;'; put 'put ''ZEhKaGJERXdMek1BTDNOd1pXTjBjbUZzTVRBdk5BQXZjM0JsWTNSeVlXd3hNQzgxQUM5emNHVmpkSEpoYkRFd0x6WUFMM053WldOMGNtRnNNVEF2TndBdmMzQmxZM1J5WVd3eE1DODRBQzl6Y0dWamRISmhiREV3THprQUwzTndaV04wY21Gc01URXZNUUF2YzNCbFkzUnlZV3d4TVM4eE1BQXZj''@;'; put 'put ''M0JsWTNSeVlXd3hNUzh4TVFBdmMzQmxZM1J5WVd3eE1TOHlBQzl6Y0dWamRISmhiREV4THpNQUwzTndaV04wY21Gc01URXZOQUF2YzNCbFkzUnlZV3d4TVM4MUFDOXpjR1ZqZEhKaGJERXhMellBTDNOd1pXTjBjbUZzTVRFdk53QXZjM0JsWTNSeVlXd3hNUzg0QUM5emNHVmpkSEpoYkRFeEx6''@;'; put 'put ''a0FMM053WldOMGNtRnNNeTh4QUM5emNHVmpkSEpoYkRNdk1nQXZjM0JsWTNSeVlXd3pMek1BTDNOd1pXTjBjbUZzTkM4eEFDOXpjR1ZqZEhKaGJEUXZNZ0F2YzNCbFkzUnlZV3cwTHpNQUwzTndaV04wY21Gc05DODBBQzl6Y0dWamRISmhiRFV2TVFBdmMzQmxZM1J5WVd3MUx6SUFMM053WldO''@;'; put 'put ''MGNtRnNOUzh6QUM5emNHVmpkSEpoYkRVdk5BQXZjM0JsWTNSeVlXdzFMelVBTDNOd1pXTjBjbUZzTmk4eEFDOXpjR1ZqZEhKaGJEWXZNZ0F2YzNCbFkzUnlZV3cyTHpNQUwzTndaV04wY21Gc05pODBBQzl6Y0dWamRISmhiRFl2TlFBdmMzQmxZM1J5WVd3Mkx6WUFMM053WldOMGNtRnNOeTh4''@;'; put 'put ''QUM5emNHVmpkSEpoYkRjdk1nQXZjM0JsWTNSeVlXdzNMek1BTDNOd1pXTjBjbUZzTnk4MEFDOXpjR1ZqZEhKaGJEY3ZOUUF2YzNCbFkzUnlZV3czTHpZQUwzTndaV04wY21Gc055ODNBQzl6Y0dWamRISmhiRGd2TVFBdmMzQmxZM1J5WVd3NEx6SUFMM053WldOMGNtRnNPQzh6QUM5emNHVmpk''@;'; put 'put ''SEpoYkRndk5BQXZjM0JsWTNSeVlXdzRMelVBTDNOd1pXTjBjbUZzT0M4MkFDOXpjR1ZqZEhKaGJEZ3ZOd0F2YzNCbFkzUnlZV3c0THpnQUwzTndaV04wY21Gc09TOHhBQzl6Y0dWamRISmhiRGt2TWdBdmMzQmxZM1J5WVd3NUx6TUFMM053WldOMGNtRnNPUzgwQUM5emNHVmpkSEpoYkRrdk5R''@;'; put 'put ''QXZjM0JsWTNSeVlXdzVMellBTDNOd1pXTjBjbUZzT1M4M0FDOXpjR1ZqZEhKaGJEa3ZPQUF2YzNCbFkzUnlZV3c1THprQUwzTjJaeTloYkdsalpXSnNkV1VBTDNOMlp5OWhiblJwY1hWbGQyaHBkR1VBTDNOMlp5OWhjWFZoQUM5emRtY3ZZWEYxWVcxaGNtbHVaUUF2YzNabkwyRjZkWEpsQUM5''@;'; put 'put ''emRtY3ZZbVZwWjJVQUwzTjJaeTlpYVhOeGRXVUFMM04yWnk5aWJHRmphd0F2YzNabkwySnNZVzVqYUdWa1lXeHRiMjVrQUM5emRtY3ZZbXgxWlFBdmMzWm5MMkpzZFdWMmFXOXNaWFFBTDNOMlp5OWljbTkzYmdBdmMzWm5MMkoxY214NWQyOXZaQUF2YzNabkwyTmhaR1YwWW14MVpRQXZjM1pu''@;'; put 'put ''TDJOb1lYSjBjbVYxYzJVQUwzTjJaeTlqYUc5amIyeGhkR1VBTDNOMlp5OWpiM0poYkFBdmMzWm5MMk52Y201bWJHOTNaWEppYkhWbEFDOXpkbWN2WTI5eWJuTnBiR3NBTDNOMlp5OWpjbWx0YzI5dUFDOXpkbWN2WTNsaGJnQXZjM1puTDJSaGNtdGliSFZsQUM5emRtY3ZaR0Z5YTJONVlXNEFM''@;'; put 'put ''M04yWnk5a1lYSnJaMjlzWkdWdWNtOWtBQzl6ZG1jdlpHRnlhMmR5WVhrQUwzTjJaeTlrWVhKclozSmxaVzRBTDNOMlp5OWtZWEpyWjNKbGVRQXZjM1puTDJSaGNtdHJhR0ZyYVFBdmMzWm5MMlJoY210dFlXZGxiblJoQUM5emRtY3ZaR0Z5YTI5c2FYWmxaM0psWlc0QUwzTjJaeTlrWVhKcmIz''@;'; put 'put ''SmhibWRsQUM5emRtY3ZaR0Z5YTI5eVkyaHBaQUF2YzNabkwyUmhjbXR5WldRQUwzTjJaeTlrWVhKcmMyRnNiVzl1QUM5emRtY3ZaR0Z5YTNObFlXZHlaV1Z1QUM5emRtY3ZaR0Z5YTNOc1lYUmxZbXgxWlFBdmMzWm5MMlJoY210emJHRjBaV2R5WVhrQUwzTjJaeTlrWVhKcmMyeGhkR1ZuY21W''@;'; put 'put ''NUFDOXpkbWN2WkdGeWEzUjFjbkYxYjJselpRQXZjM1puTDJSaGNtdDJhVzlzWlhRQUwzTjJaeTlrWldWd2NHbHVhd0F2YzNabkwyUmxaWEJ6YTNsaWJIVmxBQzl6ZG1jdlpHbHRaM0poZVFBdmMzWm5MMlJwYldkeVpYa0FMM04yWnk5a2IyUm5aWEppYkhWbEFDOXpkbWN2Wm1seVpXSnlhV05y''@;'; put 'put ''QUM5emRtY3ZabXh2Y21Gc2QyaHBkR1VBTDNOMlp5OW1iM0psYzNSbmNtVmxiZ0F2YzNabkwyWjFZMmh6YVdFQUwzTjJaeTluWVdsdWMySnZjbThBTDNOMlp5OW5hRzl6ZEhkb2FYUmxBQzl6ZG1jdloyOXNaQUF2YzNabkwyZHZiR1JsYm5KdlpBQXZjM1puTDJkeVlYa0FMM04yWnk5bmNtVmxi''@;'; put 'put ''Z0F2YzNabkwyZHlaV1Z1ZVdWc2JHOTNBQzl6ZG1jdlozSmxlUUF2YzNabkwyaHZibVY1WkdWM0FDOXpkbWN2YUc5MGNHbHVhd0F2YzNabkwybHVaR2xoYm5KbFpBQXZjM1puTDJsdVpHbG5id0F2YzNabkwybDJiM0o1QUM5emRtY3ZhMmhoYTJrQUwzTjJaeTlzWVhabGJtUmxjZ0F2YzNabkwy''@;'; put 'put ''eGhkbVZ1WkdWeVlteDFjMmdBTDNOMlp5OXNZWGR1WjNKbFpXNEFMM04yWnk5c1pXMXZibU5vYVdabWIyNEFMM04yWnk5c2FXZG9kR0pzZFdVQUwzTjJaeTlzYVdkb2RHTnZjbUZzQUM5emRtY3ZiR2xuYUhSamVXRnVBQzl6ZG1jdmJHbG5hSFJuYjJ4a1pXNXliMlI1Wld4c2IzY0FMM04yWnk5''@;'; put 'put ''c2FXZG9kR2R5WVhrQUwzTjJaeTlzYVdkb2RHZHlaV1Z1QUM5emRtY3ZiR2xuYUhSbmNtVjVBQzl6ZG1jdmJHbG5hSFJ3YVc1ckFDOXpkbWN2YkdsbmFIUnpZV3h0YjI0QUwzTjJaeTlzYVdkb2RITmxZV2R5WldWdUFDOXpkbWN2YkdsbmFIUnphM2xpYkhWbEFDOXpkbWN2YkdsbmFIUnpiR0Yw''@;'; put 'put ''WldkeVlYa0FMM04yWnk5c2FXZG9kSE5zWVhSbFozSmxlUUF2YzNabkwyeHBaMmgwYzNSbFpXeGliSFZsQUM5emRtY3ZiR2xuYUhSNVpXeHNiM2NBTDNOMlp5OXNhVzFsQUM5emRtY3ZiR2x0WldkeVpXVnVBQzl6ZG1jdmJHbHVaVzRBTDNOMlp5OXRZV2RsYm5SaEFDOXpkbWN2YldGeWIyOXVB''@;'; put 'put ''Qzl6ZG1jdmJXVmthWFZ0WVhGMVlXMWhjbWx1WlFBdmMzWm5MMjFsWkdsMWJXSnNkV1VBTDNOMlp5OXRaV1JwZFcxdmNtTm9hV1FBTDNOMlp5OXRaV1JwZFcxd2RYSndiR1VBTDNOMlp5OXRaV1JwZFcxelpXRm5jbVZsYmdBdmMzWm5MMjFsWkdsMWJYTnNZWFJsWW14MVpRQXZjM1puTDIxbFpH''@;'; put 'put ''bDFiWE53Y21sdVoyZHlaV1Z1QUM5emRtY3ZiV1ZrYVhWdGRIVnljWFZ2YVhObEFDOXpkbWN2YldWa2FYVnRkbWx2YkdWMGNtVmtBQzl6ZG1jdmJXbGtibWxuYUhSaWJIVmxBQzl6ZG1jdmJXbHVkR055WldGdEFDOXpkbWN2YldsemRIbHliM05sQUM5emRtY3ZiVzlqWTJGemFXNEFMM04yWnk5''@;'; put 'put ''dVlYWmhhbTkzYUdsMFpRQXZjM1puTDI1aGRua0FMM04yWnk5dmJHUnNZV05sQUM5emRtY3ZiMnhwZG1VQUwzTjJaeTl2YkdsMlpXUnlZV0lBTDNOMlp5OXZjbUZ1WjJVQUwzTjJaeTl2Y21GdVoyVnlaV1FBTDNOMlp5OXZjbU5vYVdRQUwzTjJaeTl3WVd4bFoyOXNaR1Z1Y205a0FDOXpkbWN2''@;'; put 'put ''Y0dGc1pXZHlaV1Z1QUM5emRtY3ZjR0ZzWlhSMWNuRjFiMmx6WlFBdmMzWm5MM0JoYkdWMmFXOXNaWFJ5WldRQUwzTjJaeTl3WVhCaGVXRjNhR2x3QUM5emRtY3ZjR1ZoWTJod2RXWm1BQzl6ZG1jdmNHVnlkUUF2YzNabkwzQnBibXNBTDNOMlp5OXdiSFZ0QUM5emRtY3ZjRzkzWkdWeVlteDFa''@;'; put 'put ''UUF2YzNabkwzQjFjbkJzWlFBdmMzWm5MM0psWkFBdmMzWm5MM0p2YzNsaWNtOTNiZ0F2YzNabkwzSnZlV0ZzWW14MVpRQXZjM1puTDNOaFpHUnNaV0p5YjNkdUFDOXpkbWN2YzJGc2JXOXVBQzl6ZG1jdmMyRnVaSGxpY205M2JnQXZjM1puTDNObFlXZHlaV1Z1QUM5emRtY3ZjMlZoYzJobGJH''@;'; put 'put ''d0FMM04yWnk5emFXVnVibUVBTDNOMlp5OXphV3gyWlhJQUwzTjJaeTl6YTNsaWJIVmxBQzl6ZG1jdmMyeGhkR1ZpYkhWbEFDOXpkbWN2YzJ4aGRHVm5jbUY1QUM5emRtY3ZjMnhoZEdWbmNtVjVBQzl6ZG1jdmMyNXZkd0F2YzNabkwzTndjbWx1WjJkeVpXVnVBQzl6ZG1jdmMzUmxaV3hpYkhW''@;'; put 'put ''bEFDOXpkbWN2ZEdGdUFDOXpkbWN2ZEdWaGJBQXZjM1puTDNSb2FYTjBiR1VBTDNOMlp5OTBiMjFoZEc4QUwzTjJaeTkwZFhKeGRXOXBjMlVBTDNOMlp5OTJhVzlzWlhRQUwzTjJaeTkzYUdWaGRBQXZjM1puTDNkb2FYUmxBQzl6ZG1jdmQyaHBkR1Z6Ylc5clpRQXZjM1puTDNsbGJHeHZkd0F2''@;'; put 'put ''YzNabkwzbGxiR3h2ZDJkeVpXVnVBQzk1YkdkdU15OHhBQzk1YkdkdU15OHlBQzk1YkdkdU15OHpBQzk1YkdkdU5DOHhBQzk1YkdkdU5DOHlBQzk1YkdkdU5DOHpBQzk1YkdkdU5DODBBQzk1YkdkdU5TOHhBQzk1YkdkdU5TOHlBQzk1YkdkdU5TOHpBQzk1YkdkdU5TODBBQzk1YkdkdU5TODFB''@;'; put 'put ''Qzk1YkdkdU5pOHhBQzk1YkdkdU5pOHlBQzk1YkdkdU5pOHpBQzk1YkdkdU5pODBBQzk1YkdkdU5pODFBQzk1YkdkdU5pODJBQzk1YkdkdU55OHhBQzk1YkdkdU55OHlBQzk1YkdkdU55OHpBQzk1YkdkdU55ODBBQzk1YkdkdU55ODFBQzk1YkdkdU55ODJBQzk1YkdkdU55ODNBQzk1YkdkdU9D''@;'; put 'put ''OHhBQzk1YkdkdU9DOHlBQzk1YkdkdU9DOHpBQzk1YkdkdU9DODBBQzk1YkdkdU9DODFBQzk1YkdkdU9DODJBQzk1YkdkdU9DODNBQzk1YkdkdU9DODRBQzk1YkdkdU9TOHhBQzk1YkdkdU9TOHlBQzk1YkdkdU9TOHpBQzk1YkdkdU9TODBBQzk1YkdkdU9TODFBQzk1YkdkdU9TODJBQzk1Ykdk''@;'; put 'put ''dU9TODNBQzk1YkdkdU9TODRBQzk1YkdkdU9TODVBQzk1YkdkdVluVXpMekVBTDNsc1oyNWlkVE12TWdBdmVXeG5ibUoxTXk4ekFDOTViR2R1WW5VMEx6RUFMM2xzWjI1aWRUUXZNZ0F2ZVd4bmJtSjFOQzh6QUM5NWJHZHVZblUwTHpRQUwzbHNaMjVpZFRVdk1RQXZlV3huYm1KMU5TOHlBQzk1''@;'; put 'put ''YkdkdVluVTFMek1BTDNsc1oyNWlkVFV2TkFBdmVXeG5ibUoxTlM4MUFDOTViR2R1WW5VMkx6RUFMM2xzWjI1aWRUWXZNZ0F2ZVd4bmJtSjFOaTh6QUM5NWJHZHVZblUyTHpRQUwzbHNaMjVpZFRZdk5RQXZlV3huYm1KMU5pODJBQzk1YkdkdVluVTNMekVBTDNsc1oyNWlkVGN2TWdBdmVXeG5i''@;'; put 'put ''bUoxTnk4ekFDOTViR2R1WW5VM0x6UUFMM2xzWjI1aWRUY3ZOUUF2ZVd4bmJtSjFOeTgyQUM5NWJHZHVZblUzTHpjQUwzbHNaMjVpZFRndk1RQXZlV3huYm1KMU9DOHlBQzk1YkdkdVluVTRMek1BTDNsc1oyNWlkVGd2TkFBdmVXeG5ibUoxT0M4MUFDOTViR2R1WW5VNEx6WUFMM2xzWjI1aWRU''@;'; put 'put ''Z3ZOd0F2ZVd4bmJtSjFPQzg0QUM5NWJHZHVZblU1THpFQUwzbHNaMjVpZFRrdk1nQXZlV3huYm1KMU9TOHpBQzk1YkdkdVluVTVMelFBTDNsc1oyNWlkVGt2TlFBdmVXeG5ibUoxT1M4MkFDOTViR2R1WW5VNUx6Y0FMM2xzWjI1aWRUa3ZPQUF2ZVd4bmJtSjFPUzg1QUM5NWJHOXlZbkl6THpF''@;'; put 'put ''QUwzbHNiM0ppY2pNdk1nQXZlV3h2Y21KeU15OHpBQzk1Ykc5eVluSTBMekVBTDNsc2IzSmljalF2TWdBdmVXeHZjbUp5TkM4ekFDOTViRzl5WW5JMEx6UUFMM2xzYjNKaWNqVXZNUUF2ZVd4dmNtSnlOUzh5QUM5NWJHOXlZbkkxTHpNQUwzbHNiM0ppY2pVdk5BQXZlV3h2Y21KeU5TODFBQzk1''@;'; put 'put ''Ykc5eVluSTJMekVBTDNsc2IzSmljall2TWdBdmVXeHZjbUp5Tmk4ekFDOTViRzl5WW5JMkx6UUFMM2xzYjNKaWNqWXZOUUF2ZVd4dmNtSnlOaTgyQUM5NWJHOXlZbkkzTHpFQUwzbHNiM0ppY2pjdk1nQXZlV3h2Y21KeU55OHpBQzk1Ykc5eVluSTNMelFBTDNsc2IzSmljamN2TlFBdmVXeHZj''@;'; put 'put ''bUp5Tnk4MkFDOTViRzl5WW5JM0x6Y0FMM2xzYjNKaWNqZ3ZNUUF2ZVd4dmNtSnlPQzh5QUM5NWJHOXlZbkk0THpNQUwzbHNiM0ppY2pndk5BQXZlV3h2Y21KeU9DODFBQzk1Ykc5eVluSTRMellBTDNsc2IzSmljamd2TndBdmVXeHZjbUp5T0M4NEFDOTViRzl5WW5JNUx6RUFMM2xzYjNKaWNq''@;'; put 'put ''a3ZNZ0F2ZVd4dmNtSnlPUzh6QUM5NWJHOXlZbkk1THpRQUwzbHNiM0ppY2prdk5RQXZlV3h2Y21KeU9TODJBQzk1Ykc5eVluSTVMemNBTDNsc2IzSmljamt2T0FBdmVXeHZjbUp5T1M4NUFDOTViRzl5Y21Rekx6RUFMM2xzYjNKeVpETXZNZ0F2ZVd4dmNuSmtNeTh6QUM5NWJHOXljbVEwTHpF''@;'; put 'put ''QUwzbHNiM0p5WkRRdk1nQXZlV3h2Y25Ka05DOHpBQzk1Ykc5eWNtUTBMelFBTDNsc2IzSnlaRFV2TVFBdmVXeHZjbkprTlM4eUFDOTViRzl5Y21RMUx6TUFMM2xzYjNKeVpEVXZOQUF2ZVd4dmNuSmtOUzgxQUM5NWJHOXljbVEyTHpFQUwzbHNiM0p5WkRZdk1nQXZlV3h2Y25Ka05pOHpBQzk1''@;'; put 'put ''Ykc5eWNtUTJMelFBTDNsc2IzSnlaRFl2TlFBdmVXeHZjbkprTmk4MkFDOTViRzl5Y21RM0x6RUFMM2xzYjNKeVpEY3ZNZ0F2ZVd4dmNuSmtOeTh6QUM5NWJHOXljbVEzTHpRQUwzbHNiM0p5WkRjdk5RQXZlV3h2Y25Ka055ODJBQzk1Ykc5eWNtUTNMemNBTDNsc2IzSnlaRGd2TVFBdmVXeHZj''@;'; put 'put ''bkprT0M4eUFDOTViRzl5Y21RNEx6TUFMM2xzYjNKeVpEZ3ZOQUF2ZVd4dmNuSmtPQzgxQUM5NWJHOXljbVE0THpZQUwzbHNiM0p5WkRndk53QXZlV3h2Y25Ka09DODRBQzk1Ykc5eWNtUTVMekVBTDNsc2IzSnlaRGt2TWdBdmVXeHZjbkprT1M4ekFDOTViRzl5Y21RNUx6UUFMM2xzYjNKeVpE''@;'; put 'put ''a3ZOUUF2ZVd4dmNuSmtPUzgyQUM5NWJHOXljbVE1THpjQUwzbHNiM0p5WkRrdk9BQXZlV3h2Y25Ka09TODVBR0ZzYVdObFlteDFaUUJoYm5ScGNYVmxkMmhwZEdVQVlXNTBhWEYxWlhkb2FYUmxNUUJoYm5ScGNYVmxkMmhwZEdVeUFHRnVkR2x4ZFdWM2FHbDBaVE1BWVc1MGFYRjFaWGRvYVhS''@;'; put 'put ''bE5BQmhjWFZoYldGeWFXNWxBR0Z4ZFdGdFlYSnBibVV4QUdGeGRXRnRZWEpwYm1VeUFHRnhkV0Z0WVhKcGJtVXpBR0Z4ZFdGdFlYSnBibVUwQUdGNmRYSmxBR0Y2ZFhKbE1RQmhlblZ5WlRJQVlYcDFjbVV6QUdGNmRYSmxOQUJpWldsblpRQmlhWE54ZFdVQVltbHpjWFZsTVFCaWFYTnhkV1V5''@;'; put 'put ''QUdKcGMzRjFaVE1BWW1semNYVmxOQUJpYkdGdVkyaGxaR0ZzYlc5dVpBQmliSFZsQUdKc2RXVXhBR0pzZFdVeUFHSnNkV1V6QUdKc2RXVTBBR0pzZFdWMmFXOXNaWFFBWW5KdmQyNEFZbkp2ZDI0eEFHSnliM2R1TWdCaWNtOTNiak1BWW5KdmQyNDBBR0oxY214NWQyOXZaQUJpZFhKc2VYZHZi''@;'; put 'put ''MlF4QUdKMWNteDVkMjl2WkRJQVluVnliSGwzYjI5a013QmlkWEpzZVhkdmIyUTBBR05oWkdWMFlteDFaUUJqWVdSbGRHSnNkV1V4QUdOaFpHVjBZbXgxWlRJQVkyRmtaWFJpYkhWbE13QmpZV1JsZEdKc2RXVTBBR05vWVhKMGNtVjFjMlVBWTJoaGNuUnlaWFZ6WlRFQVkyaGhjblJ5WlhWelpU''@;'; put 'put ''SUFZMmhoY25SeVpYVnpaVE1BWTJoaGNuUnlaWFZ6WlRRQVkyaHZZMjlzWVhSbEFHTm9iMk52YkdGMFpURUFZMmh2WTI5c1lYUmxNZ0JqYUc5amIyeGhkR1V6QUdOb2IyTnZiR0YwWlRRQVkyOXlZV3dBWTI5eVlXd3hBR052Y21Gc01nQmpiM0poYkRNQVkyOXlZV3cwQUdOdmNtNW1iRzkzWlhK''@;'; put 'put ''aWJIVmxBR052Y201emFXeHJBR052Y201emFXeHJNUUJqYjNKdWMybHNheklBWTI5eWJuTnBiR3N6QUdOdmNtNXphV3hyTkFCamNtbHRjMjl1QUdONVlXNEFZM2xoYmpFQVkzbGhiaklBWTNsaGJqTUFZM2xoYmpRQVpHRnlhMmR2YkdSbGJuSnZaQUJrWVhKcloyOXNaR1Z1Y205a01RQmtZWEpy''@;'; put 'put ''WjI5c1pHVnVjbTlrTWdCa1lYSnJaMjlzWkdWdWNtOWtNd0JrWVhKcloyOXNaR1Z1Y205a05BQmtZWEpyWjNKbFpXNEFaR0Z5YTJ0b1lXdHBBR1JoY210dmJHbDJaV2R5WldWdUFHUmhjbXR2YkdsMlpXZHlaV1Z1TVFCa1lYSnJiMnhwZG1WbmNtVmxiaklBWkdGeWEyOXNhWFpsWjNKbFpXNHpB''@;'; put 'put ''R1JoY210dmJHbDJaV2R5WldWdU5BQmtZWEpyYjNKaGJtZGxBR1JoY210dmNtRnVaMlV4QUdSaGNtdHZjbUZ1WjJVeUFHUmhjbXR2Y21GdVoyVXpBR1JoY210dmNtRnVaMlUwQUdSaGNtdHZjbU5vYVdRQVpHRnlhMjl5WTJocFpERUFaR0Z5YTI5eVkyaHBaRElBWkdGeWEyOXlZMmhwWkRNQVpH''@;'; put 'put ''RnlhMjl5WTJocFpEUUFaR0Z5YTNOaGJHMXZiZ0JrWVhKcmMyVmhaM0psWlc0QVpHRnlhM05sWVdkeVpXVnVNUUJrWVhKcmMyVmhaM0psWlc0eUFHUmhjbXR6WldGbmNtVmxiak1BWkdGeWEzTmxZV2R5WldWdU5BQmtZWEpyYzJ4aGRHVmliSFZsQUdSaGNtdHpiR0YwWldkeVlYa0FaR0Z5YTNO''@;'; put 'put ''c1lYUmxaM0poZVRFQVpHRnlhM05zWVhSbFozSmhlVElBWkdGeWEzTnNZWFJsWjNKaGVUTUFaR0Z5YTNOc1lYUmxaM0poZVRRQVpHRnlhM05zWVhSbFozSmxlUUJrWVhKcmRIVnljWFZ2YVhObEFHUmhjbXQyYVc5c1pYUUFaR1ZsY0hCcGJtc0FaR1ZsY0hCcGJtc3hBR1JsWlhCd2FXNXJNZ0Jr''@;'; put 'put ''WldWd2NHbHVhek1BWkdWbGNIQnBibXMwQUdSbFpYQnphM2xpYkhWbEFHUmxaWEJ6YTNsaWJIVmxNUUJrWldWd2MydDVZbXgxWlRJQVpHVmxjSE5yZVdKc2RXVXpBR1JsWlhCemEzbGliSFZsTkFCa2FXMW5jbUY1QUdScGJXZHlaWGtBWkc5a1oyVnlZbXgxWlFCa2IyUm5aWEppYkhWbE1RQmti''@;'; put 'put ''MlJuWlhKaWJIVmxNZ0JrYjJSblpYSmliSFZsTXdCa2IyUm5aWEppYkhWbE5BQm1hWEpsWW5KcFkyc0FabWx5WldKeWFXTnJNUUJtYVhKbFluSnBZMnN5QUdacGNtVmljbWxqYXpNQVptbHlaV0p5YVdOck5BQm1iRzl5WVd4M2FHbDBaUUJtYjNKbGMzUm5jbVZsYmdCbllXbHVjMkp2Y204QVoy''@;'; put 'put ''aHZjM1IzYUdsMFpRQm5iMnhrQUdkdmJHUXhBR2R2YkdReUFHZHZiR1F6QUdkdmJHUTBBR2R2YkdSbGJuSnZaQUJuYjJ4a1pXNXliMlF4QUdkdmJHUmxibkp2WkRJQVoyOXNaR1Z1Y205a013Qm5iMnhrWlc1eWIyUTBBR2R5WVhrQVozSmhlVEFBWjNKaGVURUFaM0poZVRFd0FHZHlZWGt4TURB''@;'; put 'put ''QVozSmhlVEV4QUdkeVlYa3hNZ0JuY21GNU1UTUFaM0poZVRFMEFHZHlZWGt4TlFCbmNtRjVNVFlBWjNKaGVURTNBR2R5WVhreE9BQm5jbUY1TVRrQVozSmhlVElBWjNKaGVUSXdBR2R5WVhreU1RQm5jbUY1TWpJQVozSmhlVEl6QUdkeVlYa3lOQUJuY21GNU1qVUFaM0poZVRJMkFHZHlZWGt5''@;'; put 'put ''TndCbmNtRjVNamdBWjNKaGVUSTVBR2R5WVhrekFHZHlZWGt6TUFCbmNtRjVNekVBWjNKaGVUTXlBR2R5WVhrek13Qm5jbUY1TXpRQVozSmhlVE0xQUdkeVlYa3pOZ0JuY21GNU16Y0FaM0poZVRNNEFHZHlZWGt6T1FCbmNtRjVOQUJuY21GNU5EQUFaM0poZVRReEFHZHlZWGswTWdCbmNtRjVO''@;'; put 'put ''RE1BWjNKaGVUUTBBR2R5WVhrME5RQm5jbUY1TkRZQVozSmhlVFEzQUdkeVlYazBPQUJuY21GNU5Ea0FaM0poZVRVQVozSmhlVFV3QUdkeVlYazFNUUJuY21GNU5USUFaM0poZVRVekFHZHlZWGsxTkFCbmNtRjVOVFVBWjNKaGVUVTJBR2R5WVhrMU53Qm5jbUY1TlRnQVozSmhlVFU1QUdkeVlY''@;'; put 'put ''azJBR2R5WVhrMk1BQm5jbUY1TmpFQVozSmhlVFl5QUdkeVlYazJNd0JuY21GNU5qUUFaM0poZVRZMUFHZHlZWGsyTmdCbmNtRjVOamNBWjNKaGVUWTRBR2R5WVhrMk9RQm5jbUY1TndCbmNtRjVOekFBWjNKaGVUY3hBR2R5WVhrM01nQm5jbUY1TnpNQVozSmhlVGMwQUdkeVlYazNOUUJuY21G''@;'; put 'put ''NU56WUFaM0poZVRjM0FHZHlZWGszT0FCbmNtRjVOemtBWjNKaGVUZ0FaM0poZVRnd0FHZHlZWGs0TVFCbmNtRjVPRElBWjNKaGVUZ3pBR2R5WVhrNE5BQm5jbUY1T0RVQVozSmhlVGcyQUdkeVlYazROd0JuY21GNU9EZ0FaM0poZVRnNUFHZHlZWGs1QUdkeVlYazVNQUJuY21GNU9URUFaM0po''@;'; put 'put ''ZVRreUFHZHlZWGs1TXdCbmNtRjVPVFFBWjNKaGVUazFBR2R5WVhrNU5nQm5jbUY1T1RjQVozSmhlVGs0QUdkeVlYazVPUUJuY21WbGJnQm5jbVZsYmpFQVozSmxaVzR5QUdkeVpXVnVNd0JuY21WbGJqUUFaM0psWlc1NVpXeHNiM2NBWjNKbGVRQm5jbVY1TUFCbmNtVjVNUUJuY21WNU1UQUFa''@;'; put 'put ''M0psZVRFd01BQm5jbVY1TVRFQVozSmxlVEV5QUdkeVpYa3hNd0JuY21WNU1UUUFaM0psZVRFMUFHZHlaWGt4TmdCbmNtVjVNVGNBWjNKbGVURTRBR2R5WlhreE9RQm5jbVY1TWdCbmNtVjVNakFBWjNKbGVUSXhBR2R5WlhreU1nQm5jbVY1TWpNQVozSmxlVEkwQUdkeVpYa3lOUUJuY21WNU1q''@;'; put 'put ''WUFaM0psZVRJM0FHZHlaWGt5T0FCbmNtVjVNamtBWjNKbGVUTUFaM0psZVRNd0FHZHlaWGt6TVFCbmNtVjVNeklBWjNKbGVUTXpBR2R5Wlhrek5BQm5jbVY1TXpVQVozSmxlVE0yQUdkeVpYa3pOd0JuY21WNU16Z0FaM0psZVRNNUFHZHlaWGswQUdkeVpYazBNQUJuY21WNU5ERUFaM0psZVRR''@;'; put 'put ''eUFHZHlaWGswTXdCbmNtVjVORFFBWjNKbGVUUTFBR2R5WlhrME5nQm5jbVY1TkRjQVozSmxlVFE0QUdkeVpYazBPUUJuY21WNU5RQm5jbVY1TlRBQVozSmxlVFV4QUdkeVpYazFNZ0JuY21WNU5UTUFaM0psZVRVMEFHZHlaWGsxTlFCbmNtVjVOVFlBWjNKbGVUVTNBR2R5WlhrMU9BQm5jbVY1''@;'; put 'put ''TlRrQVozSmxlVFlBWjNKbGVUWXdBR2R5WlhrMk1RQm5jbVY1TmpJQVozSmxlVFl6QUdkeVpYazJOQUJuY21WNU5qVUFaM0psZVRZMkFHZHlaWGsyTndCbmNtVjVOamdBWjNKbGVUWTVBR2R5WlhrM0FHZHlaWGszTUFCbmNtVjVOekVBWjNKbGVUY3lBR2R5WlhrM013Qm5jbVY1TnpRQVozSmxl''@;'; put 'put ''VGMxQUdkeVpYazNOZ0JuY21WNU56Y0FaM0psZVRjNEFHZHlaWGszT1FCbmNtVjVPQUJuY21WNU9EQUFaM0psZVRneEFHZHlaWGs0TWdCbmNtVjVPRE1BWjNKbGVUZzBBR2R5WlhrNE5RQm5jbVY1T0RZQVozSmxlVGczQUdkeVpYazRPQUJuY21WNU9Ea0FaM0psZVRrQVozSmxlVGt3QUdkeVpY''@;'; put 'put ''azVNUUJuY21WNU9USUFaM0psZVRrekFHZHlaWGs1TkFCbmNtVjVPVFVBWjNKbGVUazJBR2R5WlhrNU53Qm5jbVY1T1RnQVozSmxlVGs1QUdodmJtVjVaR1YzQUdodmJtVjVaR1YzTVFCb2IyNWxlV1JsZHpJQWFHOXVaWGxrWlhjekFHaHZibVY1WkdWM05BQm9iM1J3YVc1ckFHaHZkSEJwYm1z''@;'; put 'put ''eEFHaHZkSEJwYm1zeUFHaHZkSEJwYm1zekFHaHZkSEJwYm1zMEFHbHVaR2xoYm5KbFpBQnBibVJwWVc1eVpXUXhBR2x1WkdsaGJuSmxaRElBYVc1a2FXRnVjbVZrTXdCcGJtUnBZVzV5WldRMEFHbHVaR2xuYndCcGJuWnBjd0JwZG05eWVRQnBkbTl5ZVRFQWFYWnZjbmt5QUdsMmIzSjVNd0Jw''@;'; put 'put ''ZG05eWVUUUFhMmhoYTJrQWEyaGhhMmt4QUd0b1lXdHBNZ0JyYUdGcmFUTUFhMmhoYTJrMEFHeGhkbVZ1WkdWeUFHeGhkbVZ1WkdWeVlteDFjMmdBYkdGMlpXNWtaWEppYkhWemFERUFiR0YyWlc1a1pYSmliSFZ6YURJQWJHRjJaVzVrWlhKaWJIVnphRE1BYkdGMlpXNWtaWEppYkhWemFEUUFi''@;'; put 'put ''R0YzYm1keVpXVnVBR3hsYlc5dVkyaHBabVp2YmdCc1pXMXZibU5vYVdabWIyNHhBR3hsYlc5dVkyaHBabVp2YmpJQWJHVnRiMjVqYUdsbVptOXVNd0JzWlcxdmJtTm9hV1ptYjI0MEFHeHBaMmgwWW14MVpRQnNhV2RvZEdKc2RXVXhBR3hwWjJoMFlteDFaVElBYkdsbmFIUmliSFZsTXdCc2FX''@;'; put 'put ''ZG9kR0pzZFdVMEFHeHBaMmgwWTI5eVlXd0FiR2xuYUhSamVXRnVBR3hwWjJoMFkzbGhiakVBYkdsbmFIUmplV0Z1TWdCc2FXZG9kR041WVc0ekFHeHBaMmgwWTNsaGJqUUFiR2xuYUhSbmIyeGtaVzV5YjJRQWJHbG5hSFJuYjJ4a1pXNXliMlF4QUd4cFoyaDBaMjlzWkdWdWNtOWtNZ0JzYVdk''@;'; put 'put ''b2RHZHZiR1JsYm5KdlpETUFiR2xuYUhSbmIyeGtaVzV5YjJRMEFHeHBaMmgwWjI5c1pHVnVjbTlrZVdWc2JHOTNBR3hwWjJoMFozSmhlUUJzYVdkb2RHZHlaWGtBYkdsbmFIUndhVzVyQUd4cFoyaDBjR2x1YXpFQWJHbG5hSFJ3YVc1ck1nQnNhV2RvZEhCcGJtc3pBR3hwWjJoMGNHbHVhelFB''@;'; put 'put ''YkdsbmFIUnpZV3h0YjI0QWJHbG5hSFJ6WVd4dGIyNHhBR3hwWjJoMGMyRnNiVzl1TWdCc2FXZG9kSE5oYkcxdmJqTUFiR2xuYUhSellXeHRiMjQwQUd4cFoyaDBjMlZoWjNKbFpXNEFiR2xuYUhSemEzbGliSFZsQUd4cFoyaDBjMnQ1WW14MVpURUFiR2xuYUhSemEzbGliSFZsTWdCc2FXZG9k''@;'; put 'put ''SE5yZVdKc2RXVXpBR3hwWjJoMGMydDVZbXgxWlRRQWJHbG5hSFJ6YkdGMFpXSnNkV1VBYkdsbmFIUnpiR0YwWldkeVlYa0FiR2xuYUhSemJHRjBaV2R5WlhrQWJHbG5hSFJ6ZEdWbGJHSnNkV1VBYkdsbmFIUnpkR1ZsYkdKc2RXVXhBR3hwWjJoMGMzUmxaV3hpYkhWbE1nQnNhV2RvZEhOMFpX''@;'; put 'put ''VnNZbXgxWlRNQWJHbG5hSFJ6ZEdWbGJHSnNkV1UwQUd4cFoyaDBlV1ZzYkc5M0FHeHBaMmgwZVdWc2JHOTNNUUJzYVdkb2RIbGxiR3h2ZHpJQWJHbG5hSFI1Wld4c2IzY3pBR3hwWjJoMGVXVnNiRzkzTkFCc2FXMWxaM0psWlc0QWJHbHVaVzRBYldGblpXNTBZUUJ0WVdkbGJuUmhNUUJ0WVdk''@;'; put 'put ''bGJuUmhNZ0J0WVdkbGJuUmhNd0J0WVdkbGJuUmhOQUJ0WVhKdmIyNEFiV0Z5YjI5dU1RQnRZWEp2YjI0eUFHMWhjbTl2YmpNQWJXRnliMjl1TkFCdFpXUnBkVzFoY1hWaGJXRnlhVzVsQUcxbFpHbDFiV0pzZFdVQWJXVmthWFZ0YjNKamFHbGtBRzFsWkdsMWJXOXlZMmhwWkRFQWJXVmthWFZ0''@;'; put 'put ''YjNKamFHbGtNZ0J0WldScGRXMXZjbU5vYVdRekFHMWxaR2wxYlc5eVkyaHBaRFFBYldWa2FYVnRjSFZ5Y0d4bEFHMWxaR2wxYlhCMWNuQnNaVEVBYldWa2FYVnRjSFZ5Y0d4bE1nQnRaV1JwZFcxd2RYSndiR1V6QUcxbFpHbDFiWEIxY25Cc1pUUUFiV1ZrYVhWdGMyVmhaM0psWlc0QWJXVmth''@;'; put 'put ''WFZ0YzJ4aGRHVmliSFZsQUcxbFpHbDFiWE53Y21sdVoyZHlaV1Z1QUcxbFpHbDFiWFIxY25GMWIybHpaUUJ0WldScGRXMTJhVzlzWlhSeVpXUUFiV2xrYm1sbmFIUmliSFZsQUcxcGJuUmpjbVZoYlFCdGFYTjBlWEp2YzJVQWJXbHpkSGx5YjNObE1RQnRhWE4wZVhKdmMyVXlBRzFwYzNSNWNt''@;'; put 'put ''OXpaVE1BYldsemRIbHliM05sTkFCdGIyTmpZWE5wYmdCdVlYWmhhbTkzYUdsMFpRQnVZWFpoYW05M2FHbDBaVEVBYm1GMllXcHZkMmhwZEdVeUFHNWhkbUZxYjNkb2FYUmxNd0J1WVhaaGFtOTNhR2wwWlRRQWJtRjJlUUJ1WVhaNVlteDFaUUJ1YjI1bEFHOXNaR3hoWTJVQWIyeHBkbVZrY21G''@;'; put 'put ''aUFHOXNhWFpsWkhKaFlqRUFiMnhwZG1Wa2NtRmlNZ0J2YkdsMlpXUnlZV0l6QUc5c2FYWmxaSEpoWWpRQWIzSmhibWRsQUc5eVlXNW5aVEVBYjNKaGJtZGxNZ0J2Y21GdVoyVXpBRzl5WVc1blpUUUFiM0poYm1kbGNtVmtBRzl5WVc1blpYSmxaREVBYjNKaGJtZGxjbVZrTWdCdmNtRnVaMlZ5''@;'; put 'put ''WldRekFHOXlZVzVuWlhKbFpEUUFiM0pqYUdsa0FHOXlZMmhwWkRFQWIzSmphR2xrTWdCdmNtTm9hV1F6QUc5eVkyaHBaRFFBY0dGc1pXZHZiR1JsYm5KdlpBQndZV3hsWjNKbFpXNEFjR0ZzWldkeVpXVnVNUUJ3WVd4bFozSmxaVzR5QUhCaGJHVm5jbVZsYmpNQWNHRnNaV2R5WldWdU5BQndZ''@;'; put 'put ''V3hsZEhWeWNYVnZhWE5sQUhCaGJHVjBkWEp4ZFc5cGMyVXhBSEJoYkdWMGRYSnhkVzlwYzJVeUFIQmhiR1YwZFhKeGRXOXBjMlV6QUhCaGJHVjBkWEp4ZFc5cGMyVTBBSEJoYkdWMmFXOXNaWFJ5WldRQWNHRnNaWFpwYjJ4bGRISmxaREVBY0dGc1pYWnBiMnhsZEhKbFpESUFjR0ZzWlhacGIy''@;'; put 'put ''eGxkSEpsWkRNQWNHRnNaWFpwYjJ4bGRISmxaRFFBY0dGd1lYbGhkMmhwY0FCd1pXRmphSEIxWm1ZQWNHVmhZMmh3ZFdabU1RQndaV0ZqYUhCMVptWXlBSEJsWVdOb2NIVm1aak1BY0dWaFkyaHdkV1ptTkFCd1pYSjFBSEJwYm1zQWNHbHVhekVBY0dsdWF6SUFjR2x1YXpNQWNHbHVhelFBY0d4''@;'; put 'put ''MWJRQndiSFZ0TVFCd2JIVnRNZ0J3YkhWdE13QndiSFZ0TkFCd2IzZGtaWEppYkhWbEFIQjFjbkJzWlFCd2RYSndiR1V4QUhCMWNuQnNaVElBY0hWeWNHeGxNd0J3ZFhKd2JHVTBBSEpsWkFCeVpXUXhBSEpsWkRJQWNtVmtNd0J5WldRMEFISnZjM2xpY205M2JnQnliM041WW5KdmQyNHhBSEp2''@;'; put 'put ''YzNsaWNtOTNiaklBY205emVXSnliM2R1TXdCeWIzTjVZbkp2ZDI0MEFISnZlV0ZzWW14MVpRQnliM2xoYkdKc2RXVXhBSEp2ZVdGc1lteDFaVElBY205NVlXeGliSFZsTXdCeWIzbGhiR0pzZFdVMEFITmhaR1JzWldKeWIzZHVBSE5oYkcxdmJnQnpZV3h0YjI0eEFITmhiRzF2YmpJQWMyRnNi''@;'; put 'put ''Vzl1TXdCellXeHRiMjQwQUhOaGJtUjVZbkp2ZDI0QWMyVmhaM0psWlc0QWMyVmhaM0psWlc0eEFITmxZV2R5WldWdU1nQnpaV0ZuY21WbGJqTUFjMlZoWjNKbFpXNDBBSE5sWVhOb1pXeHNBSE5sWVhOb1pXeHNNUUJ6WldGemFHVnNiRElBYzJWaGMyaGxiR3d6QUhObFlYTm9aV3hzTkFCemFX''@;'; put 'put ''VnVibUVBYzJsbGJtNWhNUUJ6YVdWdWJtRXlBSE5wWlc1dVlUTUFjMmxsYm01aE5BQnphM2xpYkhWbEFITnJlV0pzZFdVeEFITnJlV0pzZFdVeUFITnJlV0pzZFdVekFITnJlV0pzZFdVMEFITnNZWFJsWW14MVpRQnpiR0YwWldKc2RXVXhBSE5zWVhSbFlteDFaVElBYzJ4aGRHVmliSFZsTXdC''@;'; put 'put ''emJHRjBaV0pzZFdVMEFITnNZWFJsWjNKaGVRQnpiR0YwWldkeVlYa3hBSE5zWVhSbFozSmhlVElBYzJ4aGRHVm5jbUY1TXdCemJHRjBaV2R5WVhrMEFITnNZWFJsWjNKbGVRQnpibTkzQUhOdWIzY3hBSE51YjNjeUFITnViM2N6QUhOdWIzYzBBSE53Y21sdVoyZHlaV1Z1QUhOd2NtbHVaMmR5''@;'; put 'put ''WldWdU1RQnpjSEpwYm1kbmNtVmxiaklBYzNCeWFXNW5aM0psWlc0ekFITndjbWx1WjJkeVpXVnVOQUJ6ZEdWbGJHSnNkV1VBYzNSbFpXeGliSFZsTVFCemRHVmxiR0pzZFdVeUFITjBaV1ZzWW14MVpUTUFjM1JsWld4aWJIVmxOQUIwWVc0QWRHRnVNUUIwWVc0eUFIUmhiak1BZEdGdU5BQjBh''@;'; put 'put ''R2x6ZEd4bEFIUm9hWE4wYkdVeEFIUm9hWE4wYkdVeUFIUm9hWE4wYkdVekFIUm9hWE4wYkdVMEFIUnZiV0YwYndCMGIyMWhkRzh4QUhSdmJXRjBieklBZEc5dFlYUnZNd0IwYjIxaGRHODBBSFIxY25GMWIybHpaUUIwZFhKeGRXOXBjMlV4QUhSMWNuRjFiMmx6WlRJQWRIVnljWFZ2YVhObE13''@;'; put 'put ''QjBkWEp4ZFc5cGMyVTBBSFpwYjJ4bGRBQjJhVzlzWlhSeVpXUUFkbWx2YkdWMGNtVmtNUUIyYVc5c1pYUnlaV1F5QUhacGIyeGxkSEpsWkRNQWRtbHZiR1YwY21Wa05BQjNhR1ZoZEFCM2FHVmhkREVBZDJobFlYUXlBSGRvWldGME13QjNhR1ZoZERRQWQyaHBkR1VBZDJocGRHVnpiVzlyWlFC''@;'; put 'put ''NVpXeHNiM2NBZVdWc2JHOTNNUUI1Wld4c2IzY3lBSGxsYkd4dmR6TUFlV1ZzYkc5M05BQjVaV3hzYjNkbmNtVmxiZ0JzWVdOckFHaHBkR1VBYVdkb2RHZHlaWGtBV0RFeEx3QXZKWE12SlhNQWFXMWhaMlZ6WTJGc1pRQm1ZV3h6WlFCaWJHRmphd0JrYjNSMFpXUUFaR0Z6YUdWa0FHTndMVDV6''@;'; put 'put ''Y21NQWFIUnRiSFJoWW14bExtTUFaVzFwZEY5b2RHMXNYMmx0WndCamNDMCtjM0pqV3pCZEFIUnlZVzV6Y0dGeVpXNTBBRjhsWkFBbFpBQXlBRE1BTkFBMUFEWUFOd0E0QURrQU1UQUFNVEVBTVRJQU1UTUFNVFFBTVRVQU1UWUFNVGNBTVRnQU1Ua0FNakFBUVdkdWIyUmxhVzVtYjE5MEFFRm5a''@;'; put 'put ''V1JuWldsdVptOWZkQUJ5YjNkbkFHTnZiR2NBUVdkeVlYQm9hVzVtYjE5MEFHUmxiSGdnUGowZ01BQndiM05mYUhSdGJGOTBZbXdBWkdWc2VTQStQU0F3QUhSaFlteGxJSE5wZW1VZ2RHOXZJSE50WVd4c0lHWnZjaUJqYjI1MFpXNTBDZ0JtYVhobFpDQjBZV0pzWlNCemFYcGxJSGRwZEdnZ2RX''@;'; put 'put ''NXpjR1ZqYVdacFpXUWdkMmxrZEdnZ2IzSWdhR1ZwWjJoMENnQmpaV3hzSUhOcGVtVWdkRzl2SUhOdFlXeHNJR1p2Y2lCamIyNTBaVzUwQ2dCbWFYaGxaQ0JqWld4c0lITnBlbVVnZDJsMGFDQjFibk53WldOcFptbGxaQ0IzYVdSMGFDQnZjaUJvWldsbmFIUUtBRTV2SUc5eUlHbHRjSEp2Y0dW''@;'; put 'put ''eUlHbHRZV2RsSUdacGJHVTlJaVZ6SWdvQWNHVnVZMjlzYjNJQUxUNEFabEJSTG1NQVVGRmphR1ZqYXdCSVpXRndJRzkyWlhKbWJHOTNDZ0FsSVZCVExVRmtiMkpsTFRJdU1Bb3ZibTlrWlNCN0NpQWdMMWtnWlhoamFDQmtaV1lLSUNBdldDQmxlR05vSUdSbFpnb2dJQzk1SUdWNFkyZ2daR1Zt''@;'; put 'put ''Q2lBZ0wzZ2daWGhqYUNCa1pXWUtJQ0J1Wlhkd1lYUm9DaUFnZUNCNUlHMXZkbVYwYndvZ0lIZ2dXU0JzYVc1bGRHOEtJQ0JZSUZrZ2JHbHVaWFJ2Q2lBZ1dDQjVJR3hwYm1WMGJ3b2dJR05zYjNObGNHRjBhQ0JtYVd4c0NuMGdaR1ZtQ2k5alpXeHNJSHNLSUNBdldTQmxlR05vSUdSbFpnb2dJ''@;'; put 'put ''QzlZSUdWNFkyZ2daR1ZtQ2lBZ0wza2daWGhqYUNCa1pXWUtJQ0F2ZUNCbGVHTm9JR1JsWmdvZ0lHNWxkM0JoZEdnS0lDQjRJSGtnYlc5MlpYUnZDaUFnZUNCWklHeHBibVYwYndvZ0lGZ2dXU0JzYVc1bGRHOEtJQ0JZSUhrZ2JHbHVaWFJ2Q2lBZ1kyeHZjMlZ3WVhSb0lITjBjbTlyWlFwOUlH''@;'; put 'put ''UmxaZ29BYzJodmQzQmhaMlVLQUdaaGFXeGxaQ0JoZENCdWIyUmxJQ1ZrV3pCZENnQnVjQzArWTJWc2JITmJNRjBBYldGNlpTNWpBR05vYTFObmNtRndhQUJtWVdsc1pXUWdZWFFnYm05a1pTQWxaRnN4WFFvQWJuQXRQbU5sYkd4eld6RmRBR1JwZEdWdGN3Qm1hVzVrVTFabGNuUUFKU1VsSlZC''@;'; put 'put ''aFoyVTZJREVnTVFvbEpTVWxVR0ZuWlVKdmRXNWthVzVuUW05NE9pQWxaQ0FsWkNBbFpDQWxaQW9BSldZZ0pXWWdkSEpoYm5Oc1lYUmxDZ0F3SURBZ01TQnpaWFJ5WjJKamIyeHZjZ29BSldZZ0pXWWdKV1lnSldZZ2JtOWtaUW9BTUNBd0lEQWdjMlYwY21kaVkyOXNiM0lLQUNWbUlDVm1JQ1Zt''@;'; put 'put ''SUNWbUlHTmxiR3dLQURFZ01DQXdJSE5sZEhKblltTnZiRzl5Q2dCMWJtVjRjR1ZqZEdWa0lHTmhjMlVnYVc0Z2JHOWpZWFJsWDJWdVpIQnZhVzUwQ2dBd0FIUnlZWEJsZW05cFpDNWpBR3h2WTJGMFpWOWxibVJ3YjJsdWRBQmhaR1JmYzJWbmJXVnVkRG9nWlhKeWIzSUtBRzVsZDI1dlpHVTZJ''@;'; put 'put ''RkYxWlhKNUxYUmhZbXhsSUc5MlpYSm1iRzkzQ2dCdVpYZHViMlJsQUc1bGQzUnlZWEE2SUZSeVlYQmxlbTlwWkMxMFlXSnNaU0J2ZG1WeVpteHZkeUFsWkFvQWJtVjNkSEpoY0FCcGJtUmxlQzVqQUZKVWNtVmxVMlZoY21Ob0FHNHRQbXhsZG1Wc0lENDlJREFBVWxSeVpXVkpibk5sY25RQWJH''@;'; put 'put ''VjJaV3dnUGowZ01DQW1KaUJzWlhabGJDQThQU0FvS200cExUNXNaWFpsYkFCeUxUNWliM1Z1WkdGeWVWdHBYU0E4UFNCeUxUNWliM1Z1WkdGeWVWdE9WVTFFU1UxVElDc2dhVjBBY2lBbUppQnVJQ1ltSUc1bGR3QlNWSEpsWlVsdWMyVnlkRElBYkdWMlpXd2dQajBnTUNBbUppQnNaWFpsYkNB''@;'; put 'put ''OFBTQnVMVDVzWlhabGJBQkdRVXhUUlFCdWIyUmxMbU1BVG05a1pVTnZkbVZ5QUhJZ0ppWWdiZ0JRYVdOclFuSmhibU5vQUVGa1pFSnlZVzVqYUFCcElEd2dUazlFUlVOQlVrUUFibVYzQUc0Z0ppWWdhU0ErUFNBd0lDWW1JR2tnUENCT1QwUkZRMEZTUkFCRWFYTmpiMjVDY21GdVkyZ0FjZ0J5''@;'; put 'put ''WldOMFlXNW5iR1V1WXdCU1pXTjBRWEpsWVFCeUlDWW1JSEp5QUVOdmJXSnBibVZTWldOMEFISWdKaVlnY3dCUGRtVnliR0Z3QUc0QWMzQnNhWFF1Y1M1akFGTndiR2wwVG05a1pRQmlBRzR0UG1OdmRXNTBJQ3NnS0NwdWJpa3RQbU52ZFc1MElEMDlJRTVQUkVWRFFWSkVJQ3NnTVFCTWIyRmtU''@;'; put 'put ''bTlrWlhNQWNRQndBSEowY0MwK2MzQnNhWFF1VUdGeWRHbDBhVzl1YzFzd1hTNXdZWEowYVhScGIyNWJhVjBnUFQwZ01DQjhmQ0J5ZEhBdFBuTndiR2wwTGxCaGNuUnBkR2x2Ym5OYk1GMHVjR0Z5ZEdsMGFXOXVXMmxkSUQwOUlERUFjblJ3TFQ1emNHeHBkQzVRWVhKMGFYUnBiMjV6V3pCZExt''@;'; put 'put ''TnZkVzUwV3pCZElDc2djblJ3TFQ1emNHeHBkQzVRWVhKMGFYUnBiMjV6V3pCZExtTnZkVzUwV3pGZElEMDlJRTVQUkVWRFFWSkVJQ3NnTVFCTlpYUm9iMlJhWlhKdkFISjBjQzArYzNCc2FYUXVVR0Z5ZEdsMGFXOXVjMXN3WFM1amIzVnVkRnN3WFNBK1BTQnlkSEF0UGsxcGJrWnBiR3dnSmlZ''@;'; put 'put ''Z2NuUndMVDV6Y0d4cGRDNVFZWEowYVhScGIyNXpXekJkTG1OdmRXNTBXekZkSUQ0OUlISjBjQzArVFdsdVJtbHNiQUFoY25Sd0xUNXpjR3hwZEM1UVlYSjBhWFJwYjI1eld6QmRMblJoYTJWdVcybGRBRU5zWVhOemFXWjVBRWRsZEVKeVlXNWphR1Z6QUc0dFBtSnlZVzVqYUZ0cFhTNWphR2xz''@;'; put 'put ''WkFBQUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB''@;'; put 'put ''Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn''@;'; put 'put ''SUNBZ0lDQWdJQ0FnSUNBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb2JIQjBlSHlBaElpTWtKU1luS0FJQ0FnSUNBaEFNV1FFQUgxQUlBd2NTRXhSWEZoY0lDMmtNSHdvRkRBNHBFU3NQTFJBdk1DQXlCalExR3h3ZEhnc01JU0lqSkNVbUp5Z01HQmtYQkFvYkhCb2dLZ29oSWlN''@;'; put 'put ''a0pTWW5LQXdLRGxNS0xGZ3hXRmhZV0ZoWURCc2NEeTVZTXlFaUl5UWxKaWNvR3h6L1UvLy9JU0lqSkNVbUp5Z00vLzhGLy8vL0NSVC8vLy8vL3d3YkhQOFFGUlloSWlNa0pTWW5LQnNjLy8vLy95RWlJeVFsSmljb0RQOFNFeFFSRmhmLy8vLy8vLzhNR3h6Ly8vOFNJU0lqSkNVbUp5Z2JIUC8v''@;'; put 'put ''Ly84aElpTWtKU1luS0F6Ly8vLy8vLzhULy8vLy8vLy9EQnNjLy8vLy95RWlJeVFsSmljb0d4ei8vLy8vSVNJakpDVW1KeWdTRXhRVkZoY1lHZi8vLy8vLy8vLy8veU1rSlNZbkd4SVRGQllYSWpab0FSODRWaUVnQWhzYkcxNGJHemM1Y0RiU3drOEVQQ0pISWo4aVJDSWlXQ0psSWlJRkJsOWdP''@;'; put 'put ''UVFIQ0FrS0N3d05EZ1JtWjExcWJRVUdiMWc3Y1FjSUNRb0xEQTBPQkhJOFczTStZVVliRWhNVUZoY0VCUVkvUVdKSkJ3Z0pDZ3NNRFE0RkJnQmNBQUFIQ0FrS0N3d05EZ1FBQUU4QUFBQlRRZ0FBQUFBQUJBVUdBRVJVVlFjSUNRb0xEQTBPQlFZQUFBQUFCd2dKQ2dzTURRNEVBQ29zTGtjeE13''@;'; put 'put ''QUFBQUFBQUFRRkJnQUFBRW9IQ0FrS0N3d05EZ1VHQUFBQUFBY0lDUW9MREEwT0JBQUFBQUFBQUV3QUFBQUFBQUFFQlFZQUFBQUFCd2dKQ2dzTURRNEZCZ0FBQUFBSENBa0tDd3dORGlrckxTOHdNalExQUFBQUFBQUFBQUFBS1NzdE1ESUFCQzhBSkNNQUVoUVdHaHdlSUJnQUJRY3ZMeThBTHk4''@;'; put 'put ''QUFBa0lLQUFBQVNJQ0JnQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQWxBeVlUQ2lrVkN5b1hEaTBaRVJzTUt4ME5MQjhQSVJBQU13QXdBQzlEQURFQUx3QTFMaWRDTWtFQU9qZ0FQRFJGQURZQVFBQUFQd0JFTnpzNVBRQUNBd01CQVFJQkFRRURBd01EQXdNREF3RUJBUUVCQVFFQkFRRUJBUUVC''@;'; put 'put ''QVFFQ0FRRUNBQVlCQXdNREF3TUJBQUVDQXdBRUFRSURBQVFBQkFBRUFBTUNBUUlCQWdGVGVXNTBZWGdnWlhKeWIzSTZJRzV2YmkxemNHRmpaU0J6ZEhKcGJtY2dkWE5sWkNCaVpXWnZjbVVnUEZSQlFreEZQZ0JUZVc1MFlYZ2daWEp5YjNJNklHNXZiaTF6Y0dGalpTQnpkSEpwYm1jZ2RYTmxa''@;'; put 'put ''Q0JoWm5SbGNpQThMMVJCUWt4RlBnQUFLU29xS2lzc0xDMHRMUzB0TFMwdExTMHVMekF4TWpNME5UWTNPRGs2T3p3OVBqNC9QMEZBUWtKQ1FrSkNRME5FUkVSR1JVZEhSMGxJU2toTFNFeElUVTFPVGs5UC93TVBFQkVqT2lROUpVQVZReVpGSjBnWVN4bE5HaWdjVGgwZVVGRlNXVnBzYTI1alpG''@;'; put 'put ''ZHBiV1Z0YjNKNUlHVjRhR0YxYzNSbFpBQWxjeUJwYmlCc2FXNWxJQ1ZrSUFvQUxpNHVJQ1Z6SUM0dUxnb0FWRUZDVEVVQVZGSUFWRWdBVkVRQVNGUk5UQUJHVDA1VUFFSUFWUUJQQUVrQVUxVlFBRk5WUWdCVEFFSlNBRWhTQUZaU0FFbE5Sd0JWYm10dWIzZHVJRWhVVFV3Z1pXeGxiV1Z1ZENB''@;'; put 'put ''OEpYTStJRzl1SUd4cGJtVWdKV1FnQ2dBOFNVMUhQZ0JKYkd4bFoyRnNJR0YwZEhKcFluVjBaU0FsY3lCcGJpQWxjeUF0SUdsbmJtOXlaV1FLQUhOallXeGxBSE55WXdBOFFsSStBR0ZzYVdkdUFFbEhTRlFBUlVaVUFFVk9WRVZTQUVsc2JHVm5ZV3dnZG1Gc2RXVWdKWE1nWm05eUlFRk1TVWRP''@;'; put 'put ''SUMwZ2FXZHViM0psWkFvQVBFWlBUbFErQUdOdmJHOXlBR1poWTJVQWNHOXBiblF0YzJsNlpRQlFUMGxPVkMxVFNWcEZBRWx0Y0hKdmNHVnlJQ1Z6SUhaaGJIVmxJQ1Z6SUMwZ2FXZHViM0psWkFBbGN5QjJZV3gxWlNBbGN5QStJQ1ZrSUMwZ2RHOXZJR3hoY21kbElDMGdhV2R1YjNKbFpBQWxj''@;'; put 'put ''eUIyWVd4MVpTQWxjeUE4SUNWa0lDMGdkRzl2SUhOdFlXeHNJQzBnYVdkdWIzSmxaQUE4VkVRK0FHSmhiR2xuYmdCaVoyTnZiRzl5QUdKdmNtUmxjZ0JqWld4c2NHRmtaR2x1WndCalpXeHNjM0JoWTJsdVp3QmpiMnh6Y0dGdUFHWnBlR1ZrYzJsNlpRQm5jbUZrYVdWdWRHRnVaMnhsQUdobGFX''@;'; put 'put ''ZG9kQUJvY21WbUFHbGtBSEJ2Y25RQWNtOTNjM0JoYmdCemFXUmxjd0J6ZEhsc1pRQjBZWEpuWlhRQWRHbDBiR1VBZEc5dmJIUnBjQUIyWVd4cFoyNEFkMmxrZEdnQVYwbEVWRWdBVDFSVVQwMEFUMUFBU1VSRVRFVUFTV3hzWldkaGJDQjJZV3gxWlNBbGN5Qm1iM0lnVmtGTVNVZE9JQzBnYVdk''@;'; put 'put ''dWIzSmxaQW9BSUN3QVQxVk9SRVZFQUVGRVNVRk1BRWxzYkdWbllXd2dkbUZzZFdVZ0pYTWdabTl5SUZOVVdVeEZJQzBnYVdkdWIzSmxaQW9BVTA5TVNVUUFTVTVXU1ZOSlFreEZBRWxPVmtsVEFFUlBWRlJGUkFCRVFWTklSVVFBVlc1eVpXTnZaMjVwZW1Wa0lHTm9ZWEpoWTNSbGNpQW5KV01u''@;'; put 'put ''SUNnbFpDa2dhVzRnYzJsa1pYTWdZWFIwY21saWRYUmxDZ0JTVDFkVFVFRk9BRkpQVjFOUVFVNGdkbUZzZFdVZ1kyRnVibTkwSUdKbElEQWdMU0JwWjI1dmNtVmtDZ0JJUlVsSFNGUUFSMUpCUkVsRlRsUkJUa2RNUlFCU1ZVVUFRVXhUUlFCSmJHeGxaMkZzSUhaaGJIVmxJQ1Z6SUdadmNpQkdT''@;'; put 'put ''VmhGUkZOSldrVWdMU0JwWjI1dmNtVmtDZ0JEVDB4VFVFRk9BRU5QVEZOUVFVNGdkbUZzZFdVZ1kyRnVibTkwSUdKbElEQWdMU0JwWjI1dmNtVmtDZ0JEUlV4TVUxQkJRMGxPUndCRFJVeE1VRUZFUkVsT1J3QkNUMUpFUlZJQVNXeHNaV2RoYkNCMllXeDFaU0FsY3lCbWIzSWdRa0ZNU1VkT0lH''@;'; put 'put ''bHVJRlJFSUMwZ2FXZHViM0psWkFvQVJWaFVBRWxzYkdWbllXd2dkbUZzZFdVZ0pYTWdabTl5SUVGTVNVZE9JR2x1SUZSRUlDMGdhV2R1YjNKbFpBb0FQRlJCUWt4RlBnQmpaV3hzWW05eVpHVnlBR052YkhWdGJuTUFjbTkzY3dCVmJtdHViM2R1SUhaaGJIVmxJQ1Z6SUdadmNpQlNUMWRUSUMw''@;'; put 'put ''Z2FXZHViM0psWkFvQVZXNXJibTkzYmlCMllXeDFaU0FsY3lCbWIzSWdRMDlNVlUxT1V5QXRJR2xuYm05eVpXUUtBRU5GVEV4VFFrOVNSRVZTQUR4SVZFMU1QZ0E4TDBoVVRVdytBQzB0QUV4aFltVnNJR05zYjNObFpDQmlaV1p2Y21VZ1pXNWtJRzltSUVoVVRVd2daV3hsYldWdWRBb0FWVzVq''@;'; put 'put ''Ykc5elpXUWdZMjl0YldWdWRBb0FhaUE5UFNBd0FHTjJkQzVqQUZCdlluTndZWFJvQUhKdmRYUmxMbU1BYkdsaWNHRjBhQzhsY3pvbFpEb2dKWE1LQUhOb2IzSjBaWE4wTG1NQWMyOTFjbU5sSUhCdmFXNTBJRzV2ZENCcGJpQmhibmtnZEhKcFlXNW5iR1VBWkdWemRHbHVZWFJwYjI0Z2NHOXBi''@;'; put 'put ''blFnYm05MElHbHVJR0Z1ZVNCMGNtbGhibWRzWlFCallXNXViM1FnWm1sdVpDQjBjbWxoYm1kc1pTQndZWFJvQUdOaGJtNXZkQ0J0WVd4c2IyTWdiM0J6QUdOaGJtNXZkQ0J5WldGc2JHOWpJRzl3Y3dCMGNtbGhibWQxYkdGMGFXOXVJR1poYVd4bFpBQmpZVzV1YjNRZ2JXRnNiRzlqSUhSeWFY''@;'; put 'put ''TUFZMkZ1Ym05MElISmxZV3hzYjJNZ2RISnBjd0JqWVc1dWIzUWdiV0ZzYkc5aklHUnhMbkJ1YkhNQVkyRnVibTkwSUhKbFlXeHNiMk1nWkhFdWNHNXNjd0JqWVc1dWIzUWdiV0ZzYkc5aklIQnViSE1BWTJGdWJtOTBJRzFoYkd4dll5QndibXh3Y3dCallXNXViM1FnY21WaGJHeHZZeUJ3Ym14''@;'; put 'put ''ekFHTmhibTV2ZENCeVpXRnNiRzlqSUhCdWJIQnpBRU5FUVZSQkFFbEVBRWxFVWtWR0FFbEVVa1ZHVXdCRlRsUkpWRmtBUlU1VVNWUkpSVk1BVGsxVVQwdEZUZ0JPVFZSUFMwVk9Vd0JPVDFSQlZFbFBUaWdBS0FCOEFHaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxaE5UQzh4T1RrNEwyNWhiV1Z6''@;'; put 'put ''Y0dGalpRQm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNodGJHNXpMd0I0Yld3OWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdldFMU1MekU1T1RndmJtRnRaWE53WVdObEFDOWtaWFl2ZFhKaGJtUnZiUUJtWVd4c1ltRmpheWcwS1FCblpYUjBhVzFsYjJaa1lYbGZjbVZ6SUQwOUlEQUFl''@;'; put 'put ''RzFzY0dGeWMyVXVZd0JuWVhSb1pYSmZkR2x0WlY5bGJuUnliM0I1QUVWWVVFRlVYMFZPVkZKUFVGbGZSRVZDVlVjQU1RQkZiblJ5YjNCNU9pQWxjeUF0TFQ0Z01IZ2xNQ3BzZUNBb0pXeDFJR0o1ZEdWektRb0FhVzUyWVd4cFpDQmhjbWQxYldWdWRBQndjbVZtYVhnZ2JYVnpkQ0J1YjNRZ1lt''@;'; put 'put ''VWdZbTkxYm1RZ2RHOGdiMjVsSUc5bUlIUm9aU0J5WlhObGNuWmxaQ0J1WVcxbGMzQmhZMlVnYm1GdFpYTUFjbVZ6WlhKMlpXUWdjSEpsWm1sNElDaDRiV3h1Y3lrZ2JYVnpkQ0J1YjNRZ1ltVWdaR1ZqYkdGeVpXUWdiM0lnZFc1a1pXTnNZWEpsWkFCeVpYTmxjblpsWkNCd2NtVm1hWGdnS0ho''@;'; put 'put ''dGJDa2diWFZ6ZENCdWIzUWdZbVVnZFc1a1pXTnNZWEpsWkNCdmNpQmliM1Z1WkNCMGJ5QmhibTkwYUdWeUlHNWhiV1Z6Y0dGalpTQnVZVzFsQUdOaGJtNXZkQ0J6ZFhOd1pXNWtJR2x1SUdWNGRHVnlibUZzSUhCaGNtRnRaWFJsY2lCbGJuUnBkSGtBY0dGeWMybHVaeUJtYVc1cGMyaGxaQUJ3''@;'; put 'put ''WVhKemFXNW5JR0ZpYjNKMFpXUUFjR0Z5YzJWeUlHNXZkQ0J6ZFhOd1pXNWtaV1FBY0dGeWMyVnlJSE4xYzNCbGJtUmxaQUJwYkd4bFoyRnNJR05vWVhKaFkzUmxjaWh6S1NCcGJpQndkV0pzYVdNZ2FXUUFkR1Y0ZENCa1pXTnNZWEpoZEdsdmJpQnViM1FnZDJWc2JDMW1iM0p0WldRQVdFMU1J''@;'; put 'put ''R1JsWTJ4aGNtRjBhVzl1SUc1dmRDQjNaV3hzTFdadmNtMWxaQUJwYm1OdmJYQnNaWFJsSUcxaGNtdDFjQ0JwYmlCd1lYSmhiV1YwWlhJZ1pXNTBhWFI1QUcxMWMzUWdibTkwSUhWdVpHVmpiR0Z5WlNCd2NtVm1hWGdBZFc1aWIzVnVaQ0J3Y21WbWFYZ0FZMkZ1Ym05MElHTm9ZVzVuWlNCelpY''@;'; put 'put ''UjBhVzVuSUc5dVkyVWdjR0Z5YzJsdVp5Qm9ZWE1nWW1WbmRXNEFjbVZ4ZFdWemRHVmtJR1psWVhSMWNtVWdjbVZ4ZFdseVpYTWdXRTFNWDBSVVJDQnpkWEJ3YjNKMElHbHVJRVY0Y0dGMEFHVnVkR2wwZVNCa1pXTnNZWEpsWkNCcGJpQndZWEpoYldWMFpYSWdaVzUwYVhSNUFIVnVaWGh3WldO''@;'; put 'put ''MFpXUWdjR0Z5YzJWeUlITjBZWFJsSUMwZ2NHeGxZWE5sSUhObGJtUWdZU0JpZFdjZ2NtVndiM0owQUdSdlkzVnRaVzUwSUdseklHNXZkQ0J6ZEdGdVpHRnNiMjVsQUdWeWNtOXlJR2x1SUhCeWIyTmxjM05wYm1jZ1pYaDBaWEp1WVd3Z1pXNTBhWFI1SUhKbFptVnlaVzVqWlFCMWJtTnNiM05s''@;'; put 'put ''WkNCRFJFRlVRU0J6WldOMGFXOXVBR1Z1WTI5a2FXNW5JSE53WldOcFptbGxaQ0JwYmlCWVRVd2daR1ZqYkdGeVlYUnBiMjRnYVhNZ2FXNWpiM0p5WldOMEFIVnVhMjV2ZDI0Z1pXNWpiMlJwYm1jQVdFMU1JRzl5SUhSbGVIUWdaR1ZqYkdGeVlYUnBiMjRnYm05MElHRjBJSE4wWVhKMElHOW1J''@;'; put 'put ''R1Z1ZEdsMGVRQnlaV1psY21WdVkyVWdkRzhnWlhoMFpYSnVZV3dnWlc1MGFYUjVJR2x1SUdGMGRISnBZblYwWlFCeVpXWmxjbVZ1WTJVZ2RHOGdZbWx1WVhKNUlHVnVkR2wwZVFCeVpXWmxjbVZ1WTJVZ2RHOGdhVzUyWVd4cFpDQmphR0Z5WVdOMFpYSWdiblZ0WW1WeUFHRnplVzVqYUhKdmJt''@;'; put 'put ''OTFjeUJsYm5ScGRIa0FjbVZqZFhKemFYWmxJR1Z1ZEdsMGVTQnlaV1psY21WdVkyVUFkVzVrWldacGJtVmtJR1Z1ZEdsMGVRQnBiR3hsWjJGc0lIQmhjbUZ0WlhSbGNpQmxiblJwZEhrZ2NtVm1aWEpsYm1ObEFHcDFibXNnWVdaMFpYSWdaRzlqZFcxbGJuUWdaV3hsYldWdWRBQmtkWEJzYVdO''@;'; put 'put ''aGRHVWdZWFIwY21saWRYUmxBRzFwYzIxaGRHTm9aV1FnZEdGbkFIQmhjblJwWVd3Z1kyaGhjbUZqZEdWeUFIVnVZMnh2YzJWa0lIUnZhMlZ1QUc1dmRDQjNaV3hzTFdadmNtMWxaQ0FvYVc1MllXeHBaQ0IwYjJ0bGJpa0FibThnWld4bGJXVnVkQ0JtYjNWdVpBQnplVzUwWVhnZ1pYSnliM0lB''@;'; put 'put ''YjNWMElHOW1JRzFsYlc5eWVRQUNBd1FGQmdjSUFBQUpDZ3NNRFE0UEVCRUFBQUFBQUFBQUFBQUFBQUFTRXdBVUFBQUFBQUFBQUFBQUFBQUFBQUFWRmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJB''@;'; put 'put ''UUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFWEFBQUFBQUFBQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFSZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1FNYUd4d2RIZ0FBSHlBaElpTWtKUkFSQUFBQUFBQUFBQUFBQUFBQUVoTW1GQUFBQUFBQUFBQUFBQUFBQUFBQUp4WUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFF''@;'; put 'put ''QkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJGd0FBQUFBQUFBQUFBQUFBQUFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVZQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFTkVRVlJCVzFWVExVRlRRMGxKQUZWVVJpMHhOZ0JWVkVZdE1UWkNSUUJWVkVZdE1UWk1SUUIyWlhKemFXOXVBR1Z1WTI5a2FXNW5BSE4wWVc1a1lXeHZibVVBUkU5RFZGbFFSUUJUV1ZOVVJVMEFVRlZDVEVsREFFVk9W''@;'; put 'put ''RWxVV1FCQlZGUk1TVk5VQUVWTVJVMUZUbFFBVGs5VVFWUkpUMDRBU1U1RFRGVkVSUUJKUjA1UFVrVUFSVTFRVkZrQVFVNVpBRkJEUkVGVVFRQkpUVkJNU1VWRUFGSkZVVlZKVWtWRUFFWkpXRVZFQUVORVFWUkJBRWxFQUVsRVVrVkdBRWxFVWtWR1V3QkZUbFJKVkVsRlV3Qk9UVlJQUzBWT0FF''@;'; put 'put ''NU5WRTlMUlU1VEFFNUVRVlJCQUZRaEloa05BUUlERVVzY0RCQUVDeDBTSGlkb2JtOXdjV0lnQlFZUEV4UVZHZ2dXQnlna0Z4Z0pDZzRiSHlVamc0SjlKaW9yUEQwK1AwTkhTazFZV1ZwYlhGMWVYMkJoWTJSbFptZHBhbXRzY25OMGVYcDdmQUJKYkd4bFoyRnNJR0o1ZEdVZ2MyVnhkV1Z1WTJV''@;'; put 'put ''QVJHOXRZV2x1SUdWeWNtOXlBRkpsYzNWc2RDQnViM1FnY21Wd2NtVnpaVzUwWVdKc1pRQk9iM1FnWVNCMGRIa0FVR1Z5YldsemMybHZiaUJrWlc1cFpXUUFUM0JsY21GMGFXOXVJRzV2ZENCd1pYSnRhWFIwWldRQVRtOGdjM1ZqYUNCbWFXeGxJRzl5SUdScGNtVmpkRzl5ZVFCT2J5QnpkV05v''@;'; put 'put ''SUhCeWIyTmxjM01BUm1sc1pTQmxlR2x6ZEhNQVZtRnNkV1VnZEc5dklHeGhjbWRsSUdadmNpQmtZWFJoSUhSNWNHVUFUbThnYzNCaFkyVWdiR1ZtZENCdmJpQmtaWFpwWTJVQVQzVjBJRzltSUcxbGJXOXllUUJTWlhOdmRYSmpaU0JpZFhONUFFbHVkR1Z5Y25Wd2RHVmtJSE41YzNSbGJTQmpZ''@;'; put 'put ''V3hzQUZKbGMyOTFjbU5sSUhSbGJYQnZjbUZ5YVd4NUlIVnVZWFpoYVd4aFlteGxBRWx1ZG1Gc2FXUWdjMlZsYXdCRGNtOXpjeTFrWlhacFkyVWdiR2x1YXdCU1pXRmtMVzl1YkhrZ1ptbHNaU0J6ZVhOMFpXMEFSR2x5WldOMGIzSjVJRzV2ZENCbGJYQjBlUUJEYjI1dVpXTjBhVzl1SUhKbGMy''@;'; put 'put ''VjBJR0o1SUhCbFpYSUFUM0JsY21GMGFXOXVJSFJwYldWa0lHOTFkQUJEYjI1dVpXTjBhVzl1SUhKbFpuVnpaV1FBU0c5emRDQnBjeUJrYjNkdUFFaHZjM1FnYVhNZ2RXNXlaV0ZqYUdGaWJHVUFRV1JrY21WemN5QnBiaUIxYzJVQVFuSnZhMlZ1SUhCcGNHVUFTUzlQSUdWeWNtOXlBRTV2SUhO''@;'; put 'put ''MVkyZ2daR1YyYVdObElHOXlJR0ZrWkhKbGMzTUFRbXh2WTJzZ1pHVjJhV05sSUhKbGNYVnBjbVZrQUU1dklITjFZMmdnWkdWMmFXTmxBRTV2ZENCaElHUnBjbVZqZEc5eWVRQkpjeUJoSUdScGNtVmpkRzl5ZVFCVVpYaDBJR1pwYkdVZ1luVnplUUJGZUdWaklHWnZjbTFoZENCbGNuSnZjZ0JK''@;'; put 'put ''Ym5aaGJHbGtJR0Z5WjNWdFpXNTBBRUZ5WjNWdFpXNTBJR3hwYzNRZ2RHOXZJR3h2Ym1jQVUzbHRZbTlzYVdNZ2JHbHVheUJzYjI5d0FFWnBiR1Z1WVcxbElIUnZieUJzYjI1bkFGUnZieUJ0WVc1NUlHOXdaVzRnWm1sc1pYTWdhVzRnYzNsemRHVnRBRTV2SUdacGJHVWdaR1Z6WTNKcGNIUnZj''@;'; put 'put ''bk1nWVhaaGFXeGhZbXhsQUVKaFpDQm1hV3hsSUdSbGMyTnlhWEIwYjNJQVRtOGdZMmhwYkdRZ2NISnZZMlZ6Y3dCQ1lXUWdZV1JrY21WemN3QkdhV3hsSUhSdmJ5QnNZWEpuWlFCVWIyOGdiV0Z1ZVNCc2FXNXJjd0JPYnlCc2IyTnJjeUJoZG1GcGJHRmliR1VBVW1WemIzVnlZMlVnWkdWaFpH''@;'; put 'put ''eHZZMnNnZDI5MWJHUWdiMk5qZFhJQVUzUmhkR1VnYm05MElISmxZMjkyWlhKaFlteGxBRkJ5WlhacGIzVnpJRzkzYm1WeUlHUnBaV1FBVDNCbGNtRjBhVzl1SUdOaGJtTmxiR1ZrQUVaMWJtTjBhVzl1SUc1dmRDQnBiWEJzWlcxbGJuUmxaQUJPYnlCdFpYTnpZV2RsSUc5bUlHUmxjMmx5WldR''@;'; put 'put ''Z2RIbHdaUUJKWkdWdWRHbG1hV1Z5SUhKbGJXOTJaV1FBUkdWMmFXTmxJRzV2ZENCaElITjBjbVZoYlFCT2J5QmtZWFJoSUdGMllXbHNZV0pzWlFCRVpYWnBZMlVnZEdsdFpXOTFkQUJQZFhRZ2IyWWdjM1J5WldGdGN5QnlaWE52ZFhKalpYTUFUR2x1YXlCb1lYTWdZbVZsYmlCelpYWmxjbVZr''@;'; put 'put ''QUZCeWIzUnZZMjlzSUdWeWNtOXlBRUpoWkNCdFpYTnpZV2RsQUVacGJHVWdaR1Z6WTNKcGNIUnZjaUJwYmlCaVlXUWdjM1JoZEdVQVRtOTBJR0VnYzI5amEyVjBBRVJsYzNScGJtRjBhVzl1SUdGa1pISmxjM01nY21WeGRXbHlaV1FBVFdWemMyRm5aU0IwYjI4Z2JHRnlaMlVBVUhKdmRHOWpi''@;'; put 'put ''MndnZDNKdmJtY2dkSGx3WlNCbWIzSWdjMjlqYTJWMEFGQnliM1J2WTI5c0lHNXZkQ0JoZG1GcGJHRmliR1VBVUhKdmRHOWpiMndnYm05MElITjFjSEJ2Y25SbFpBQlRiMk5yWlhRZ2RIbHdaU0J1YjNRZ2MzVndjRzl5ZEdWa0FFNXZkQ0J6ZFhCd2IzSjBaV1FBVUhKdmRHOWpiMndnWm1GdGFX''@;'; put 'put ''eDVJRzV2ZENCemRYQndiM0owWldRQVFXUmtjbVZ6Y3lCbVlXMXBiSGtnYm05MElITjFjSEJ2Y25SbFpDQmllU0J3Y205MGIyTnZiQUJCWkdSeVpYTnpJRzV2ZENCaGRtRnBiR0ZpYkdVQVRtVjBkMjl5YXlCcGN5QmtiM2R1QUU1bGRIZHZjbXNnZFc1eVpXRmphR0ZpYkdVQVEyOXVibVZqZEds''@;'; put 'put ''dmJpQnlaWE5sZENCaWVTQnVaWFIzYjNKckFFTnZibTVsWTNScGIyNGdZV0p2Y25SbFpBQk9ieUJpZFdabVpYSWdjM0JoWTJVZ1lYWmhhV3hoWW14bEFGTnZZMnRsZENCcGN5QmpiMjV1WldOMFpXUUFVMjlqYTJWMElHNXZkQ0JqYjI1dVpXTjBaV1FBUTJGdWJtOTBJSE5sYm1RZ1lXWjBaWEln''@;'; put 'put ''YzI5amEyVjBJSE5vZFhSa2IzZHVBRTl3WlhKaGRHbHZiaUJoYkhKbFlXUjVJR2x1SUhCeWIyZHlaWE56QUU5d1pYSmhkR2x2YmlCcGJpQndjbTluY21WemN3QlRkR0ZzWlNCbWFXeGxJR2hoYm1Sc1pRQlNaVzF2ZEdVZ1NTOVBJR1Z5Y205eUFGRjFiM1JoSUdWNFkyVmxaR1ZrQUU1dklHMWxa''@;'; put 'put ''R2wxYlNCbWIzVnVaQUJYY205dVp5QnRaV1JwZFcwZ2RIbHdaUUJPYnlCbGNuSnZjaUJwYm1admNtMWhkR2x2YmdBQUVoQVRGQlVXRnhnWkdoc2NIUjRmSUNFUUVDSWpFQ1FsSmljb0tTb3JFQ3d0TGhFdk1CRVJNUkVSRVRJek5EVTJOemc1RVJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVC''@;'; put 'put ''QVFFQkE2RUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQTdFRHc5UGo5QVFSQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJB''@;'; put 'put ''UUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCQ0VCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJERUJCRUVFVkdSeEJJRUVrUUVCQVFTa3RNVFJBUVRoQlBVQkFRRUJCUkVCQVFFQkFRRUJBUUVCQVFFRklRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFR''@;'; put 'put ''RUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUZNUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFF''@;'; put 'put ''QkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJVVlZaWEVCQllXUkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJCYUVGdGNYVjVmWUdGaUVCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vL0FBQUFBUDcvQVB3QkFBRDRBUUFBZUFBQUFBRC8rOS83QUFDQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThBUHovNEsvLy8vLy8vLy8vLy8vLzMvLy8vLy8vSUVDd0FBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdEQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdBQUFBQUFJYisvLy8vQUVCSkFBQUFBQUFZQU4vL0FNZ0FBQUFBQUFBQUFRQThBQUFBQUFBQUFBQUFBQUFBRU9BQkhnQmcvNzhBQUFBQUFBRC9Cd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ0endNQUFBQURBQ0QvZndBQUFFNEFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFQd0FBQUFBQUFBQUFBQVFBQ0FlQURBQUFRQUFBQUFBQUFBQUVBQWdBQUFBQVB3UEFBQUFBQUFBQUJBQUlBQUFBQUFBQUFBQUFBQUFBQUFRQUNBQUFBQUFBd0FBQUFBQUFBQUFFQUFnQUFBQUFQMEFBQUFBQUFBQUFBQUFJQUFBQUFEL0J3QUFBQUFBQUFBQUFDQUFB''@;'; put 'put ''QUFBQVA4QUFBQUFBQUFBRUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQS9BZ0FBQUFBQUFBQUFBQVFBQUFBQUVBQUFBQUFBQUlBQWdNRGZBQXdBQUFBQUFBQUFBQUFBQUFBQUh3QUFBQUFBQVA3Ly8vOEEvUC8vQUFBQUFBQUFBQUQ4QUFBQUFBQUF3UC9mL3djQUFBQUFBQUFBQUFBQWdB''@;'; put 'put ''WUEvQUFBR0Q0QUFJQy9BTXdBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFHRC8vLzhmQUFEL0F3QUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FBQUFFQUFCZ0FBQUFBQUFBQUFBQTRBQUFBQUJB''@;'; put 'put ''QUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUEvbjh2QUFEL0EvOS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTR4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeFAvLy8vOEFBQURBQUFBQUFBQUFBQUFCQU9DZkFBQUFBSDgvQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQkFBRUFBQS9QLy8veDhBQUFBQUFBd0FBQUFBQUFCQUFBendBQUFBQUFBQXdQZ0FBQUFBQUFBQXdBQUFBQUFBQUFBQS93RC8vLzhoRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vL2Z3QUE4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BUGdB''@;'; put 'put ''T0FBNEFCZ2dQai8vLy84Ly8vLy8vOS9IL3p4Zi85L0FBRC8vLzhEQUFELy8vLy9BUUI3QTlEQnIwSUFEQis4Ly84QUFBQUFBQUwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vdzhBLy8vLy8zOEFBQUQvQndBQS8vLy8vLy8vLy8vLy96''@;'; put 'put ''OEFBQUFBQUFEOC8vLysvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3gvL0F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0NIQS80QUFBQUFBQUFBQUFBQUFBQUFBQUdBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBUC8vLy8vL2YvOFBBQUFBQUFBQUFBRC8vLy83Ly8vLy8vLy8vLy8vL3c4QS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84L0FBQUEvdzhlLy8vL0FmekI0QUFBQUFBQUFBQUFBQUFBSGdFQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFQLy9BQUFBQVAvLy8vOFBBQUFBLy8vL2YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8zOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vLy8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvLy8vLy8vMzhBQUFBQUFBREFBT0FBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUlBUGNBQUFBQUFBQUFBQUFBQUFBQUFBL3dELy8zOEFBd0FBQUFBQUFBQUFBQUFBQUFZQUFBQUFBQUFBQUFBQUFBQUFBRVFJQUFBQUQvOERBQUFBQUFBQThBQUFBQUFBQUFBQUFCREFBQUQvL3dNSEFBQUFBQUQ0QUFBQUFBaUFBQUFBQUFBQUFBQUFBQWdBL3o4QXdBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQVBBQUFJQUxBQUFBQUFBQUFJQUNBQURBQUFCREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FB''@;'; put 'put ''QUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBRDgvd01BQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURELy8vOERmd0QvLy8vLzkvOS9Ed0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFnUDcvQVB3QkFBRDRBUUFBK0Q4QUFBQUFBQUFBQUFBQUFBQUFBQUIv''@;'; put 'put ''ZndBd2gvLy8vLy8vai84QUFBQUFBQURnLy84SC93OEFBQUFBQUFELy8vLy8vejhBQUFBQUR3QUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQ0Evd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQWp3QUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQWgvOEEvd0VBQUFEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrQUFBQS93QUFBUDhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vL2Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BLy9QOC9BQUFBQXdBQUFB''@;'; put 'put ''QUFBUDREQUFBQUFBQUFBQUFBQUFBQUFCZ0FEd0FBQUFBQUFBQUFBQUFBQUFBQUFPRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QWdBY0FBQUFBQUFBQUFBQUFBQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1B3RC8vLy8vZi83Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOC9BQUFBQVAvLy8vLy8vLy8vUHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vLy8vLy8vMzhB''@;'; put 'put ''Ly84REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBSUFBQUFDQUFBSUFBQUFDQUFBSUFBQUFDQUFBQUFBZ0FBQUFJQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0QvLy8vLy93Ly8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vLzhQQVA5Ly9uLysvLzcvQUFBQUFQOEgvLy8vZi8vLy8vLy8vLzhQLy8vLy8vOEhBQUFBQUFBQUFBREEvLy8vQndELy8vLy8vd2YvQVFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8vLy8vQVFDLy8vLy8vLy8vLy84Zi8vOFBBUC8vLy8vZkJ3QUEvLzhCQVAvLy8v''@;'; put 'put ''Ly8vLzkvL2YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOGUvLy8vLy8vLy96OFBBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBqLy8vLy8vLy8vLytIL0FBQUFBQUFBLy8vLy8vLy8vLzgvQUFBQUFBQUFBUC8vLy8vLy8vLy8vLy8vLy8vL0R3QUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0FCQWdNRUJRWUhDQW4vLy8vLy8vLy9DZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb2JIQjBlSHlBaElpUC8vLy8vLy84S0N3d05EZzhRRVJJVEZCVVdGeGdaR2hzY0hSNGZJQ0Vp''@;'; put 'put ''SS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vLzhBQVFJRUJ3TUdCUUFTRVJNVUZSWVhHQmthR3h3ZEhoOGdJUkVpSXlRUkpTWW5LQ2txS3l3UkxTNHZFQkF3RUJBUUVCQVFFREV5TXhBME5SQVFFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVUWVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVS''@;'; put 'put ''RVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRTNFUkVSRVRnUk9UbzdQRDArRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFVDhRRUJBUUVCQVFFQkFRRUJB''@;'; put 'put ''UUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVJRRUVSUWtORVJVWkhTRWtRRUJCS1MweE5UaEFRRUU5UUVCQVFFRkVRRUJBUUVCQVFFQkFSRVJGU1V4QVFFQkFRRUJBUUVCQVFFUkVSRVZRUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFR''@;'; put 'put ''RUJBUUVCQVFFQkFSRVZVUUVCQVFWaEFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJYRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJZV1ZwYkVCQVFF''@;'; put 'put ''QkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFRndRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhBQUFBQUFBQUFBUDcvL3dmKy8vOEhBQUFBQUFBRUlB''@;'; put 'put ''VC8vMy8vLy85Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhQL0F3QWZVQUFBQUFBQUFBQUFBQUFnQUFBQUFBRGZQRURYLy8vNy8vLy8vLy8vLy8vL3YvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0Evei8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BUDcvLy85L0F2Ny8vLy8vQUFB''@;'; put 'put ''QUFBRC92N1lBLy8vL0J3Y0FBQUQvQi8vLy8vLy8vLy8rLzhQLy8vLy8vLy8vLy8vLy8vL3ZILzdoLzU4QUFQLy8vLy8vL3dEZy8vLy8vLy8vLy8vLy8vLy9Bd0QvLy8vLy93Y3dCUC8vLy96L0h3QUEvLy8vQVFBQUFBQUFBQUFBL1I4QUFBQUFBQUR3QS85Ly8vLy8vLy8vLysvLzMrSC96Ly8r''@;'; put 'put ''L3U2ZitmLy8vY1hqbjFtQXNNLy9Bd0R1aC9uLy8vMXR3NGNaQWw3QS96OEE3ci83Ly8vOTdlTy9Hd0VBei84QUFPNmYrZi8vL2Uzam54bkFzTS8vQWdEc3h6M1dHTWYvdzhjZGdRREEvd0FBN3QvOS8vLzk3K1BmSFdBRHovOEFBT3pmL2YvLy9lL2ozeDFnUU0vL0JnRHMzLzMvLy8vLzU5OWRn''@;'; put 'put ''QURQL3dEODdQOS8vUC8vK3k5L2dGLy9BQUFNQVA3Ly8vLy9mLzhIUHlEL0F3QUFBQUNXSmZEK3J1ei9PMThnLy9NQUFBQUFBUUFBQVA4REFBRC8vdi8vL3gvKy93UC8vLzcvLy84ZkFBQUFBQUFBQUFELy8vLy8vLzkvK2Y4RC8vL253Zi8vZjBEL00vLy8vLysvSVAvLy8vLy85Ly8vLy8vLy8v''@;'; put 'put ''Ly8vejEvUGYvLy8vLy9QZi8vLy84OWZ6My9mLy8vLy8vLy8vODkvLy8vLy8vLy8vK0hBQUFBQVAvL0FBRC8vLy8vLy8vLy8vLy9Id0QrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLytmLy8vKy8vOEgvLy8vLy8vLy8vLy94d0VBLzk4''@;'; put 'put ''UEFQLy9Ed0QvL3c4QS85OE5BUC8vLy8vLy84Ly8vd0dBRVA4REFBQUFBUDhELy8vLy8vLy8vLy8vLy84QS8vLy8vLzhILy8vLy8vLy8vLzgvQVAvLy94Ly9ELzhCd1AvLy8vOC9Id0QvLy8vLy93Ly8vLzhEL3dNQUFBQUEvLy8vRC8vLy8vLy8vLzkvL3Y4ZkFQOEQvd09BQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFELy8vLy8vLy92Lys4UC93TUFBQUFBLy8vLy8vL3ovLy8vLy8vL3YvOERBUC8vLy8vLy96OEEvK1AvLy8vLy96OEFBQUFBQUFBQUFBQUFBQUFBM204QS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQUFBQUFBQUFBQUQvL3o4Ly8vLy8vejgvLzZyLy8vOC8vLy8vLy8vLzMxL2NI''@;'; put 'put ''ODhQL3gvY0h3QUFBQUFBQUFBQUFBQUFBQUFBQW9BQUFQOGZBQUFBQUFBQUFBQUFBQUFBaFB3dlBsQzkvL1BnUXdBQS8vLy8vLzhCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd1AvLy8vLy8vd01BQVAvLy8vLy9mLy8vLy8vL2YvLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy84ZmVBd0EvLy8vLzc4Zy8vLy8vLy8vLzRBQUFQLy9md0IvZjM5L2YzOS9mLy8vLy84QUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBQUFEK0F6NGYvdi8vLy8vLy8vLy8vMy9nL3YvLy8vLy8vLy8vLy8vMzRQLy8vLzgvL3YvLy8vLy8vLy8vLy85''@;'; put 'put ''L0FBRC8vLzhIQUFBQUFBQUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1B3QUFBQUFBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84ZkFBQUFBQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhmQUFBQUFBQUFBQUQvLy8vLy96Ly9ILy8vL3c4QUFQLy8vLy8v''@;'; put 'put ''Zi9DUC8vLy9nUC8vLy8vLy8vLy8vLzhBQUFBQWdQLzgvLy8vLy8vLy8vLy8vLy8vZVE4QS93Y0FBQUFBQUFBQUFBRC91L2YvLy84QUFBRC8vLy8vLy84UEFQLy8vLy8vLy8vL0R3RC9Bd0FBL0FqLy8vLy8vd2YvLy8vL0J3RC8vLzhmLy8vLy8vLy85LzhBZ1A4REFBQUFBUC8vLy8vLy8zOEEv''@;'; put 'put ''ei8vQS8vL2Z3VC8vLy8vLy8vL2Z3VUFBRGovL3p3QWZuNStBSDkvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vOEgvd1AvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3c4QS8vOS8rUC8vLy8vL0QvLy8vLy8vLy8vLy8vLy8vLzgvLy8vLy8vLy8vLy8vLy8vLy93TUFBQUFBZndENDRQ''@;'; put 'put ''LzlmMS9iLy8vLy8vLy8vLy8vLy8vLy93TUFBQUQ0Ly8vLy8vLy8vLy8vLy8vL1B3QUEvLy8vLy8vLy8vLzgvLy8vLy8vL0FBQUFBQUQvRHdBQUFBQUFBQUFBQUFBQUFBQUEzLy8vLy8vLy8vLy8vLy8vLy8vLy8vOGZBQUQvQS83Ly93ZisvLzhId1AvLy8vLy8vLy8vLy85Ly9QejhIQUFBQUFE''@;'; put 'put ''LzcvLy9mLy8vdC84Ly96OEFBQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy9Cd0FBQUFBQUFBQUEvLy8vLy8vL0h3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvLy94Ly8vLy8vLy84QkFBQUFBQUQvLy85L0FBRC8vLzhIQUFBQUFBQUEvLy8vUC8vLy8vOFAvejRB''@;'; put 'put ''QUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOC8vd01BQUFBQUFBQUFBQUFBUC8zLy8vLy92NUgvL3o4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8vejhBLy8vL0F3QUFBQUFBQUFBQS8vLy8vLy8vLzhBQUFBQUFBQUFBQUcvdzcvNy8vdzhBQUFBQUFQLy8veDhBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUEvLy8vLy8vL1B3RC8vejhBLy84SEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vLy8vLy8vLy84QkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLy8vLy8vLy9Qd0FBQU1EL0FBRDgvLy8vLy8vL0FRQUEvLy8vQWY4RC8vLy8vLy8veC84QUFBQUFBQUFBQVAvLy8v''@;'; put 'put ''Ly8vLy8vSGdEL0F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vL1B3RC9Bd0FBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLzkvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vLy8vLy8vLy8vL0J3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8vLy8vLzM4QUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvLy8vLy8vLzhCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vLy8vOGZBUC8vLy8vL2Z3QUErUDhBQUFBQUFBQUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLy8vLy8vLy8vLy9m''@;'; put 'put ''Ly8vLy8vLy8vLy9mWk43LzYrLy8vLy8vLy8vL3YrZmYzLy8vLzN0Zi9QMy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3ovLy8vLzkvLy8zLy8vLzkvLy8zLy8vLzkvLy8zLy8vLzkvLy8vLy9mLy8vLzMvLy9mUC8vLy8vLy8vNy8vLy81Yis5''@;'; put 'put ''d3FFNnBhcWx2ZjNYdi83L3cvdSsvOFBBQUFBQUFBQUFBQk1RMTlCVEV3QVRFTmZRMVJaVUVVQUFBQUFURU5mVGxWTlJWSkpRd0FBVEVOZlZFbE5SUUFBQUFBQVRFTmZRMDlNVEVGVVJRQUFURU5mVFU5T1JWUkJVbGtBVEVOZlRVVlRVMEZIUlZNQVRFRk9Sd0JETGxWVVJpMDRBRkJQVTBsWUFF''@;'; put 'put ''MVZVMHhmVEU5RFVFRlVTQUFSQUFvQUVSRVJBQUFBQUFVQUFBQUFBQUFKQUFBQUFBc0FBQUFBQUFBQUFCRUFEd29SRVJFRENnY0FBUk1KQ3dzQUFBa0dDd0FBQ3dBR0VRQUFBQkVSRVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQUFBQUFBQUFBQUFSQUFvS0VSRVJBQW9BQUFJQUNRc0FBQUFKQUFz''@;'; put 'put ''QUFBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFEQUFBQUFBTUFBQUFBQWtNQUFBQUFBQU1BQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBQUFBQUFBQUFBQUFBQUEwQUFBQUVEUUFBQUFBSkRnQUFBQUFBRGdBQURnQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQVBBQUFBQUE4QUFBQUFDUkFBQUFBQUFCQUFBQkFBQUJJQUFBQVNFaElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ0FBQUJJU0VnQUFBQUFBQUFrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFzQUFBQUFBQUFBQUFBQUFBb0FBQUFBQ2dBQUFBQUpDd0FBQUFBQUN3QUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBQUFBQUFBQUFNQUFBQUFBd0FBQUFBQ1F3QUFBQUFBQXdBQUF3QUFDMHJJQ0FnTUZnd2VBQW9iblZzYkNrQUxU''@;'; put 'put ''QllLekJZSURCWUxUQjRLekI0SURCNEFHbHVaZ0JKVGtZQVRrRk9BREF4TWpNME5UWTNPRGxCUWtORVJVWXVBR0ZzYm5WdEFHRnNjR2hoQUdKc1lXNXJBR051ZEhKc0FHUnBaMmwwQUdkeVlYQm9BR3h2ZDJWeUFIQnlhVzUwQUhCMWJtTjBBSE53WVdObEFIVndjR1Z5QUhoa2FXZHBkQUJETGxW''@;'; put 'put ''VVJpMDRBQUFBQUFBQUFBQUFRd0F2Y0hKdll5OXpaV3htTDJaa0x3QnlkMkVBYVc1bWFXNXBkSGtBYm1GdUFBa0FDZ0FOQUF3QUJ3QWJBRnRiT21Gc2JuVnRPbDFmWFFCYlhsczZZV3h1ZFcwNlhWOWRBRnRiT25Od1lXTmxPbDFkQUZ0ZVd6cHpjR0ZqWlRwZFhRQmJXenBrYVdkcGREcGRYUUJi''@;'; put 'put ''WGxzNlpHbG5hWFE2WFYwQUwzUnRjQzkwYlhCbWFXeGxYMWhZV0ZoWVdBQjNLdz09Ijt2YXIgTWE9QXQ7ZnVuY3Rpb24geWwoZHQsRHQsWHQsdWUpe2EyKCJBc3NlcnRpb24gZmFpbGVkOiAiK0YoZHQpKyIsIGF0OiAiK1tEdD9GKER0KToidW5rbm93biBmaWxlbmFtZSIsWHQsdWU/Rih1ZSk6''@;'; put 'put ''InVua25vd24gZnVuY3Rpb24iXSl9ZnVuY3Rpb24gZmwoKXthMigpfWZ1bmN0aW9uIHBpKCl7cmV0dXJuIE58fCJ1bmRlZmluZWQiIT10eXBlb2YgZGF0ZU5vd3x8KFl8fFcpJiZzZWxmLnBlcmZvcm1hbmNlJiZzZWxmLnBlcmZvcm1hbmNlLm5vd31BdCs9MTY7dmFyIHdpPXtFUEVSTToxLEVO''@;'; put 'put ''T0VOVDoyLEVTUkNIOjMsRUlOVFI6NCxFSU86NSxFTlhJTzo2LEUyQklHOjcsRU5PRVhFQzo4LEVCQURGOjksRUNISUxEOjEwLEVBR0FJTjoxMSxFV09VTERCTE9DSzoxMSxFTk9NRU06MTIsRUFDQ0VTOjEzLEVGQVVMVDoxNCxFTk9UQkxLOjE1LEVCVVNZOjE2LEVFWElTVDoxNyxFWERFVjox''@;'; put 'put ''OCxFTk9ERVY6MTksRU5PVERJUjoyMCxFSVNESVI6MjEsRUlOVkFMOjIyLEVORklMRToyMyxFTUZJTEU6MjQsRU5PVFRZOjI1LEVUWFRCU1k6MjYsRUZCSUc6MjcsRU5PU1BDOjI4LEVTUElQRToyOSxFUk9GUzozMCxFTUxJTks6MzEsRVBJUEU6MzIsRURPTTozMyxFUkFOR0U6MzQsRU5PTVNH''@;'; put 'put ''OjQyLEVJRFJNOjQzLEVDSFJORzo0NCxFTDJOU1lOQzo0NSxFTDNITFQ6NDYsRUwzUlNUOjQ3LEVMTlJORzo0OCxFVU5BVENIOjQ5LEVOT0NTSTo1MCxFTDJITFQ6NTEsRURFQURMSzozNSxFTk9MQ0s6MzcsRUJBREU6NTIsRUJBRFI6NTMsRVhGVUxMOjU0LEVOT0FOTzo1NSxFQkFEUlFDOjU2''@;'; put 'put ''LEVCQURTTFQ6NTcsRURFQURMT0NLOjM1LEVCRk9OVDo1OSxFTk9TVFI6NjAsRU5PREFUQTo2MSxFVElNRTo2MixFTk9TUjo2MyxFTk9ORVQ6NjQsRU5PUEtHOjY1LEVSRU1PVEU6NjYsRU5PTElOSzo2NyxFQURWOjY4LEVTUk1OVDo2OSxFQ09NTTo3MCxFUFJPVE86NzEsRU1VTFRJSE9QOjcy''@;'; put 'put ''LEVET1RET1Q6NzMsRUJBRE1TRzo3NCxFTk9UVU5JUTo3NixFQkFERkQ6NzcsRVJFTUNIRzo3OCxFTElCQUNDOjc5LEVMSUJCQUQ6ODAsRUxJQlNDTjo4MSxFTElCTUFYOjgyLEVMSUJFWEVDOjgzLEVOT1NZUzozOCxFTk9URU1QVFk6MzksRU5BTUVUT09MT05HOjM2LEVMT09QOjQwLEVPUE5P''@;'; put 'put ''VFNVUFA6OTUsRVBGTk9TVVBQT1JUOjk2LEVDT05OUkVTRVQ6MTA0LEVOT0JVRlM6MTA1LEVBRk5PU1VQUE9SVDo5NyxFUFJPVE9UWVBFOjkxLEVOT1RTT0NLOjg4LEVOT1BST1RPT1BUOjkyLEVTSFVURE9XTjoxMDgsRUNPTk5SRUZVU0VEOjExMSxFQUREUklOVVNFOjk4LEVDT05OQUJPUlRF''@;'; put 'put ''RDoxMDMsRU5FVFVOUkVBQ0g6MTAxLEVORVRET1dOOjEwMCxFVElNRURPVVQ6MTEwLEVIT1NURE9XTjoxMTIsRUhPU1RVTlJFQUNIOjExMyxFSU5QUk9HUkVTUzoxMTUsRUFMUkVBRFk6MTE0LEVERVNUQUREUlJFUTo4OSxFTVNHU0laRTo5MCxFUFJPVE9OT1NVUFBPUlQ6OTMsRVNPQ0tUTk9T''@;'; put 'put ''VVBQT1JUOjk0LEVBRERSTk9UQVZBSUw6OTksRU5FVFJFU0VUOjEwMixFSVNDT05OOjEwNixFTk9UQ09OTjoxMDcsRVRPT01BTllSRUZTOjEwOSxFVVNFUlM6ODcsRURRVU9UOjEyMixFU1RBTEU6MTE2LEVOT1RTVVA6OTUsRU5PTUVESVVNOjEyMyxFSUxTRVE6ODQsRU9WRVJGTE9XOjc1LEVD''@;'; put 'put ''QU5DRUxFRDoxMjUsRU5PVFJFQ09WRVJBQkxFOjEzMSxFT1dORVJERUFEOjEzMCxFU1RSUElQRTo4Nn07ZnVuY3Rpb24gbTAoZHQpe3JldHVybiBaLl9fX2Vycm5vX2xvY2F0aW9uJiYoUnRbWi5fX19lcnJub19sb2NhdGlvbigpPj4yXT1kdCksZHR9ZnVuY3Rpb24gR28oZHQsRHQpe3ZhciBY''@;'; put 'put ''dDtpZigwPT09ZHQpWHQ9RGF0ZS5ub3coKTtlbHNle2lmKDEhPT1kdHx8IXBpKCkpcmV0dXJuIG0wKHdpLkVJTlZBTCksLTE7WHQ9ZmwoKX1yZXR1cm4gUnRbRHQ+PjJdPVh0LzFlM3wwLFJ0W0R0KzQ+PjJdPVh0JTFlMyoxZTMqMWUzfDAsMH1mdW5jdGlvbiBjMigpe3JldHVybiBHby5hcHBs''@;'; put 'put ''eShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gU2koKXt9ZnVuY3Rpb24gWGwoZHQsRHQpe3JldHVybiBtMCh3aS5FUEVSTSksLTF9dmFyIEl1PXswOiJTdWNjZXNzIiwxOiJOb3Qgc3VwZXItdXNlciIsMjoiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIsMzoiTm8gc3VjaCBwcm9jZXNzIiw0''@;'; put 'put ''OiJJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCIsNToiSS9PIGVycm9yIiw2OiJObyBzdWNoIGRldmljZSBvciBhZGRyZXNzIiw3OiJBcmcgbGlzdCB0b28gbG9uZyIsODoiRXhlYyBmb3JtYXQgZXJyb3IiLDk6IkJhZCBmaWxlIG51bWJlciIsMTA6Ik5vIGNoaWxkcmVuIiwxMToiTm8gbW9yZSBw''@;'; put 'put ''cm9jZXNzZXMiLDEyOiJOb3QgZW5vdWdoIGNvcmUiLDEzOiJQZXJtaXNzaW9uIGRlbmllZCIsMTQ6IkJhZCBhZGRyZXNzIiwxNToiQmxvY2sgZGV2aWNlIHJlcXVpcmVkIiwxNjoiTW91bnQgZGV2aWNlIGJ1c3kiLDE3OiJGaWxlIGV4aXN0cyIsMTg6IkNyb3NzLWRldmljZSBsaW5rIiwxOToi''@;'; put 'put ''Tm8gc3VjaCBkZXZpY2UiLDIwOiJOb3QgYSBkaXJlY3RvcnkiLDIxOiJJcyBhIGRpcmVjdG9yeSIsMjI6IkludmFsaWQgYXJndW1lbnQiLDIzOiJUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbSIsMjQ6IlRvbyBtYW55IG9wZW4gZmlsZXMiLDI1OiJOb3QgYSB0eXBld3JpdGVyIiwyNjoi''@;'; put 'put ''VGV4dCBmaWxlIGJ1c3kiLDI3OiJGaWxlIHRvbyBsYXJnZSIsMjg6Ik5vIHNwYWNlIGxlZnQgb24gZGV2aWNlIiwyOToiSWxsZWdhbCBzZWVrIiwzMDoiUmVhZCBvbmx5IGZpbGUgc3lzdGVtIiwzMToiVG9vIG1hbnkgbGlua3MiLDMyOiJCcm9rZW4gcGlwZSIsMzM6Ik1hdGggYXJnIG91dCBv''@;'; put 'put ''ZiBkb21haW4gb2YgZnVuYyIsMzQ6Ik1hdGggcmVzdWx0IG5vdCByZXByZXNlbnRhYmxlIiwzNToiRmlsZSBsb2NraW5nIGRlYWRsb2NrIGVycm9yIiwzNjoiRmlsZSBvciBwYXRoIG5hbWUgdG9vIGxvbmciLDM3OiJObyByZWNvcmQgbG9ja3MgYXZhaWxhYmxlIiwzODoiRnVuY3Rpb24gbm90''@;'; put 'put ''IGltcGxlbWVudGVkIiwzOToiRGlyZWN0b3J5IG5vdCBlbXB0eSIsNDA6IlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIiw0MjoiTm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUiLDQzOiJJZGVudGlmaWVyIHJlbW92ZWQiLDQ0OiJDaGFubmVsIG51bWJlciBvdXQgb2YgcmFuZ2UiLDQ1OiJMZXZl''@;'; put 'put ''bCAyIG5vdCBzeW5jaHJvbml6ZWQiLDQ2OiJMZXZlbCAzIGhhbHRlZCIsNDc6IkxldmVsIDMgcmVzZXQiLDQ4OiJMaW5rIG51bWJlciBvdXQgb2YgcmFuZ2UiLDQ5OiJQcm90b2NvbCBkcml2ZXIgbm90IGF0dGFjaGVkIiw1MDoiTm8gQ1NJIHN0cnVjdHVyZSBhdmFpbGFibGUiLDUxOiJMZXZl''@;'; put 'put ''bCAyIGhhbHRlZCIsNTI6IkludmFsaWQgZXhjaGFuZ2UiLDUzOiJJbnZhbGlkIHJlcXVlc3QgZGVzY3JpcHRvciIsNTQ6IkV4Y2hhbmdlIGZ1bGwiLDU1OiJObyBhbm9kZSIsNTY6IkludmFsaWQgcmVxdWVzdCBjb2RlIiw1NzoiSW52YWxpZCBzbG90Iiw1OToiQmFkIGZvbnQgZmlsZSBmbXQi''@;'; put 'put ''LDYwOiJEZXZpY2Ugbm90IGEgc3RyZWFtIiw2MToiTm8gZGF0YSAoZm9yIG5vIGRlbGF5IGlvKSIsNjI6IlRpbWVyIGV4cGlyZWQiLDYzOiJPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMiLDY0OiJNYWNoaW5lIGlzIG5vdCBvbiB0aGUgbmV0d29yayIsNjU6IlBhY2thZ2Ugbm90IGluc3RhbGxl''@;'; put 'put ''ZCIsNjY6IlRoZSBvYmplY3QgaXMgcmVtb3RlIiw2NzoiVGhlIGxpbmsgaGFzIGJlZW4gc2V2ZXJlZCIsNjg6IkFkdmVydGlzZSBlcnJvciIsNjk6IlNybW91bnQgZXJyb3IiLDcwOiJDb21tdW5pY2F0aW9uIGVycm9yIG9uIHNlbmQiLDcxOiJQcm90b2NvbCBlcnJvciIsNzI6Ik11bHRpaG9w''@;'; put 'put ''IGF0dGVtcHRlZCIsNzM6IkNyb3NzIG1vdW50IHBvaW50IChub3QgcmVhbGx5IGVycm9yKSIsNzQ6IlRyeWluZyB0byByZWFkIHVucmVhZGFibGUgbWVzc2FnZSIsNzU6IlZhbHVlIHRvbyBsYXJnZSBmb3IgZGVmaW5lZCBkYXRhIHR5cGUiLDc2OiJHaXZlbiBsb2cuIG5hbWUgbm90IHVuaXF1''@;'; put 'put ''ZSIsNzc6ImYuZC4gaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb24iLDc4OiJSZW1vdGUgYWRkcmVzcyBjaGFuZ2VkIiw3OToiQ2FuICAgYWNjZXNzIGEgbmVlZGVkIHNoYXJlZCBsaWIiLDgwOiJBY2Nlc3NpbmcgYSBjb3JydXB0ZWQgc2hhcmVkIGxpYiIsODE6Ii5saWIgc2VjdGlvbiBpbiBh''@;'; put 'put ''Lm91dCBjb3JydXB0ZWQiLDgyOiJBdHRlbXB0aW5nIHRvIGxpbmsgaW4gdG9vIG1hbnkgbGlicyIsODM6IkF0dGVtcHRpbmcgdG8gZXhlYyBhIHNoYXJlZCBsaWJyYXJ5Iiw4NDoiSWxsZWdhbCBieXRlIHNlcXVlbmNlIiw4NjoiU3RyZWFtcyBwaXBlIGVycm9yIiw4NzoiVG9vIG1hbnkgdXNl''@;'; put 'put ''cnMiLDg4OiJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiLDg5OiJEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkIiw5MDoiTWVzc2FnZSB0b28gbG9uZyIsOTE6IlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCIsOTI6IlByb3RvY29sIG5vdCBhdmFpbGFibGUiLDkzOiJV''@;'; put 'put ''bmtub3duIHByb3RvY29sIiw5NDoiU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCIsOTU6Ik5vdCBzdXBwb3J0ZWQiLDk2OiJQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCIsOTc6IkFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wgZmFtaWx5Iiw5ODoiQWRkcmVz''@;'; put 'put ''cyBhbHJlYWR5IGluIHVzZSIsOTk6IkFkZHJlc3Mgbm90IGF2YWlsYWJsZSIsMTAwOiJOZXR3b3JrIGludGVyZmFjZSBpcyBub3QgY29uZmlndXJlZCIsMTAxOiJOZXR3b3JrIGlzIHVucmVhY2hhYmxlIiwxMDI6IkNvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yayIsMTAzOiJDb25uZWN0aW9u''@;'; put 'put ''IGFib3J0ZWQiLDEwNDoiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIiwxMDU6Ik5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUiLDEwNjoiU29ja2V0IGlzIGFscmVhZHkgY29ubmVjdGVkIiwxMDc6IlNvY2tldCBpcyBub3QgY29ubmVjdGVkIiwxMDg6IkNhbid0IHNlbmQgYWZ0ZXIgc29ja2V0''@;'; put 'put ''IHNodXRkb3duIiwxMDk6IlRvbyBtYW55IHJlZmVyZW5jZXMiLDExMDoiQ29ubmVjdGlvbiB0aW1lZCBvdXQiLDExMToiQ29ubmVjdGlvbiByZWZ1c2VkIiwxMTI6Ikhvc3QgaXMgZG93biIsMTEzOiJIb3N0IGlzIHVucmVhY2hhYmxlIiwxMTQ6IlNvY2tldCBhbHJlYWR5IGNvbm5lY3RlZCIs''@;'; put 'put ''MTE1OiJDb25uZWN0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MiLDExNjoiU3RhbGUgZmlsZSBoYW5kbGUiLDEyMjoiUXVvdGEgZXhjZWVkZWQiLDEyMzoiTm8gbWVkaXVtIChpbiB0YXBlIGRyaXZlKSIsMTI1OiJPcGVyYXRpb24gY2FuY2VsZWQiLDEzMDoiUHJldmlvdXMgb3duZXIgZGllZCIs''@;'; put 'put ''MTMxOiJTdGF0ZSBub3QgcmVjb3ZlcmFibGUifSxxMD17c3BsaXRQYXRoOmZ1bmN0aW9uKGR0KXtyZXR1cm4vXihcLz98KShbXHNcU10qPykoKD86XC57MSwyfXxbXlwvXSs/fCkoXC5bXi5cL10qfCkpKD86W1wvXSopJC8uZXhlYyhkdCkuc2xpY2UoMSl9LG5vcm1hbGl6ZUFycmF5OmZ1bmN0''@;'; put 'put ''aW9uKGR0LER0KXtmb3IodmFyIFh0PTAsdWU9ZHQubGVuZ3RoLTE7dWU+PTA7dWUtLSl7dmFyIFR0PWR0W3VlXTsiLiI9PT1UdD9kdC5zcGxpY2UodWUsMSk6Ii4uIj09PVR0PyhkdC5zcGxpY2UodWUsMSksWHQrKyk6WHQmJihkdC5zcGxpY2UodWUsMSksWHQtLSl9aWYoRHQpZm9yKDtYdDtY''@;'; put 'put ''dC0tKWR0LnVuc2hpZnQoIi4uIik7cmV0dXJuIGR0fSxub3JtYWxpemU6ZnVuY3Rpb24oZHQpe3ZhciBEdD0iLyI9PT1kdC5jaGFyQXQoMCksWHQ9Ii8iPT09ZHQuc3Vic3RyKC0xKTtyZXR1cm4hKGR0PXEwLm5vcm1hbGl6ZUFycmF5KGR0LnNwbGl0KCIvIikuZmlsdGVyKGZ1bmN0aW9uKHVl''@;'; put 'put ''KXtyZXR1cm4hIXVlfSksIUR0KS5qb2luKCIvIikpJiYhRHQmJihkdD0iLiIpLGR0JiZYdCYmKGR0Kz0iLyIpLChEdD8iLyI6IiIpK2R0fSxkaXJuYW1lOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9cTAuc3BsaXRQYXRoKGR0KSxYdD1EdFswXSx1ZT1EdFsxXTtyZXR1cm4gWHR8fHVlPyh1ZSYmKHVl''@;'; put 'put ''PXVlLnN1YnN0cigwLHVlLmxlbmd0aC0xKSksWHQrdWUpOiIuIn0sYmFzZW5hbWU6ZnVuY3Rpb24oZHQpe2lmKCIvIj09PWR0KXJldHVybiIvIjt2YXIgRHQ9ZHQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PUR0P2R0OmR0LnN1YnN0cihEdCsxKX0sZXh0bmFtZTpmdW5jdGlvbihkdCl7''@;'; put 'put ''cmV0dXJuIHEwLnNwbGl0UGF0aChkdClbM119LGpvaW46ZnVuY3Rpb24oKXt2YXIgZHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBxMC5ub3JtYWxpemUoZHQuam9pbigiLyIpKX0sam9pbjI6ZnVuY3Rpb24oZHQsRHQpe3JldHVybiBxMC5ub3JtYWxp''@;'; put 'put ''emUoZHQrIi8iK0R0KX0scmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZHQ9IiIsRHQ9ITEsWHQ9YXJndW1lbnRzLmxlbmd0aC0xO1h0Pj0tMSYmIUR0O1h0LS0pe3ZhciB1ZT1YdD49MD9hcmd1bWVudHNbWHRdOkFuLmN3ZCgpO2lmKCJzdHJpbmciIT10eXBlb2YgdWUpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtpZighdWUpcmV0dXJuIiI7ZHQ9dWUrIi8iK2R0LER0PSIvIj09PXVlLmNoYXJBdCgwKX1yZXR1cm4oRHQ/Ii8iOiIiKSsoZHQ9cTAubm9ybWFsaXplQXJyYXkoZHQuc3BsaXQoIi8iKS5maWx0ZXIo''@;'; put 'put ''ZnVuY3Rpb24oVHQpe3JldHVybiEhVHR9KSwhRHQpLmpvaW4oIi8iKSl8fCIuIn0scmVsYXRpdmU6ZnVuY3Rpb24oZHQsRHQpe2Z1bmN0aW9uIFh0KFduKXtmb3IodmFyIF89MDtfPFduLmxlbmd0aCYmIiI9PT1XbltfXTtfKyspO2Zvcih2YXIgd289V24ubGVuZ3RoLTE7d28+PTAmJiIiPT09''@;'; put 'put ''V25bd29dO3dvLS0pO3JldHVybiBfPndvP1tdOlduLnNsaWNlKF8sd28tXysxKX1kdD1xMC5yZXNvbHZlKGR0KS5zdWJzdHIoMSksRHQ9cTAucmVzb2x2ZShEdCkuc3Vic3RyKDEpO2Zvcih2YXIgdWU9WHQoZHQuc3BsaXQoIi8iKSksVHQ9WHQoRHQuc3BsaXQoIi8iKSksYT1NYXRoLm1pbih1''@;'; put 'put ''ZS5sZW5ndGgsVHQubGVuZ3RoKSxidD1hLGFyPTA7YXI8YTthcisrKWlmKHVlW2FyXSE9PVR0W2FyXSl7YnQ9YXI7YnJlYWt9dmFyIE5pPVtdO2Zvcihhcj1idDthcjx1ZS5sZW5ndGg7YXIrKylOaS5wdXNoKCIuLiIpO3JldHVybihOaT1OaS5jb25jYXQoVHQuc2xpY2UoYnQpKSkuam9pbigi''@;'; put 'put ''LyIpfX0sU3M9e3R0eXM6W10saW5pdDpmdW5jdGlvbigpe30sc2h1dGRvd246ZnVuY3Rpb24oKXt9LHJlZ2lzdGVyOmZ1bmN0aW9uKGR0LER0KXtTcy50dHlzW2R0XT17aW5wdXQ6W10sb3V0cHV0OltdLG9wczpEdH0sQW4ucmVnaXN0ZXJEZXZpY2UoZHQsU3Muc3RyZWFtX29wcyl9LHN0cmVh''@;'; put 'put ''bV9vcHM6e29wZW46ZnVuY3Rpb24oZHQpe3ZhciBEdD1Tcy50dHlzW2R0Lm5vZGUucmRldl07aWYoIUR0KXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT0RFVik7ZHQudHR5PUR0LGR0LnNlZWthYmxlPSExfSxjbG9zZTpmdW5jdGlvbihkdCl7ZHQudHR5Lm9wcy5mbHVzaChkdC50dHkp''@;'; put 'put ''fSxmbHVzaDpmdW5jdGlvbihkdCl7ZHQudHR5Lm9wcy5mbHVzaChkdC50dHkpfSxyZWFkOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0KXtpZighZHQudHR5fHwhZHQudHR5Lm9wcy5nZXRfY2hhcil0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTlhJTyk7Zm9yKHZhciBhPTAsYnQ9MDtidDx1''@;'; put 'put ''ZTtidCsrKXt2YXIgYXI7dHJ5e2FyPWR0LnR0eS5vcHMuZ2V0X2NoYXIoZHQudHR5KX1jYXRjaChOaSl7dGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlPKX1pZih2b2lkIDA9PT1hciYmMD09PWEpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUFHQUlOKTtpZihudWxsPT1hcilicmVh''@;'; put 'put ''azthKyssRHRbWHQrYnRdPWFyfXJldHVybiBhJiYoZHQubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksYX0sd3JpdGU6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe2lmKCFkdC50dHl8fCFkdC50dHkub3BzLnB1dF9jaGFyKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOWElPKTtmb3Io''@;'; put 'put ''dmFyIGE9MDthPHVlO2ErKyl0cnl7ZHQudHR5Lm9wcy5wdXRfY2hhcihkdC50dHksRHRbWHQrYV0pfWNhdGNoKGJ0KXt0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU8pfXJldHVybiB1ZSYmKGR0Lm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLGF9fSxkZWZhdWx0X3R0eV9vcHM6e2dl''@;'; put 'put ''dF9jaGFyOmZ1bmN0aW9uKGR0KXtpZighZHQuaW5wdXQubGVuZ3RoKXt2YXIgRHQ9bnVsbDtpZihOKXt2YXIgdWU9bmV3IEJ1ZmZlcigyNTYpLFR0PTAsYT0id2luMzIiIT1wcm9jZXNzLnBsYXRmb3JtLGJ0PXByb2Nlc3Muc3RkaW4uZmQ7aWYoYSl7dmFyIGFyPSExO3RyeXtidD1tcy5vcGVu''@;'; put 'put ''U3luYygiL2Rldi9zdGRpbiIsInIiKSxhcj0hMH1jYXRjaChOaSl7fX10cnl7VHQ9bXMucmVhZFN5bmMoYnQsdWUsMCwyNTYsbnVsbCl9Y2F0Y2goTmkpe2lmKC0xPT1OaS50b1N0cmluZygpLmluZGV4T2YoIkVPRiIpKXRocm93IE5pO1R0PTB9YXImJm1zLmNsb3NlU3luYyhidCksRHQ9VHQ+''@;'; put 'put ''MD91ZS5zbGljZSgwLFR0KS50b1N0cmluZygidXRmLTgiKTpudWxsfWVsc2UidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5wcm9tcHQ/bnVsbCE9PShEdD13aW5kb3cucHJvbXB0KCJJbnB1dDogIikpJiYoRHQrPSJcbiIpOiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiByZWFkbGluZSYmbnVsbCE9PShEdD1yZWFkbGluZSgpKSYmKER0Kz0iXG4iKTtpZighRHQpcmV0dXJuIG51bGw7ZHQuaW5wdXQ9VjEoRHQsITApfXJldHVybiBkdC5pbnB1dC5zaGlmdCgpfSxwdXRfY2hhcjpmdW5jdGlvbihkdCxEdCl7bnVsbD09PUR0fHwxMD09PUR0PyhaLnBy''@;'; put 'put ''aW50KENlKGR0Lm91dHB1dCwwKSksZHQub3V0cHV0PVtdKTowIT1EdCYmZHQub3V0cHV0LnB1c2goRHQpfSxmbHVzaDpmdW5jdGlvbihkdCl7ZHQub3V0cHV0JiZkdC5vdXRwdXQubGVuZ3RoPjAmJihaLnByaW50KENlKGR0Lm91dHB1dCwwKSksZHQub3V0cHV0PVtdKX19LGRlZmF1bHRfdHR5''@;'; put 'put ''MV9vcHM6e3B1dF9jaGFyOmZ1bmN0aW9uKGR0LER0KXtudWxsPT09RHR8fDEwPT09RHQ/KFoucHJpbnRFcnIoQ2UoZHQub3V0cHV0LDApKSxkdC5vdXRwdXQ9W10pOjAhPUR0JiZkdC5vdXRwdXQucHVzaChEdCl9LGZsdXNoOmZ1bmN0aW9uKGR0KXtkdC5vdXRwdXQmJmR0Lm91dHB1dC5sZW5n''@;'; put 'put ''dGg+MCYmKFoucHJpbnRFcnIoQ2UoZHQub3V0cHV0LDApKSxkdC5vdXRwdXQ9W10pfX19LFcwPXtvcHNfdGFibGU6bnVsbCxtb3VudDpmdW5jdGlvbihkdCl7cmV0dXJuIFcwLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24oZHQsRHQsWHQsdWUpe2lm''@;'; put 'put ''KEFuLmlzQmxrZGV2KFh0KXx8QW4uaXNGSUZPKFh0KSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FUEVSTSk7VzAub3BzX3RhYmxlfHwoVzAub3BzX3RhYmxlPXtkaXI6e25vZGU6e2dldGF0dHI6VzAubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOlcwLm5vZGVfb3BzLnNldGF0dHIsbG9v''@;'; put 'put ''a3VwOlcwLm5vZGVfb3BzLmxvb2t1cCxta25vZDpXMC5ub2RlX29wcy5ta25vZCxyZW5hbWU6VzAubm9kZV9vcHMucmVuYW1lLHVubGluazpXMC5ub2RlX29wcy51bmxpbmsscm1kaXI6VzAubm9kZV9vcHMucm1kaXIscmVhZGRpcjpXMC5ub2RlX29wcy5yZWFkZGlyLHN5bWxpbms6VzAubm9k''@;'; put 'put ''ZV9vcHMuc3ltbGlua30sc3RyZWFtOntsbHNlZWs6VzAuc3RyZWFtX29wcy5sbHNlZWt9fSxmaWxlOntub2RlOntnZXRhdHRyOlcwLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpXMC5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06e2xsc2VlazpXMC5zdHJlYW1fb3BzLmxsc2VlayxyZWFkOlcw''@;'; put 'put ''LnN0cmVhbV9vcHMucmVhZCx3cml0ZTpXMC5zdHJlYW1fb3BzLndyaXRlLGFsbG9jYXRlOlcwLnN0cmVhbV9vcHMuYWxsb2NhdGUsbW1hcDpXMC5zdHJlYW1fb3BzLm1tYXAsbXN5bmM6VzAuc3RyZWFtX29wcy5tc3luY319LGxpbms6e25vZGU6e2dldGF0dHI6VzAubm9kZV9vcHMuZ2V0YXR0''@;'; put 'put ''cixzZXRhdHRyOlcwLm5vZGVfb3BzLnNldGF0dHIscmVhZGxpbms6VzAubm9kZV9vcHMucmVhZGxpbmt9LHN0cmVhbTp7fX0sY2hyZGV2Ontub2RlOntnZXRhdHRyOlcwLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpXMC5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06QW4uY2hyZGV2X3N0cmVh''@;'; put 'put ''bV9vcHN9fSk7dmFyIFR0PUFuLmNyZWF0ZU5vZGUoZHQsRHQsWHQsdWUpO3JldHVybiBBbi5pc0RpcihUdC5tb2RlKT8oVHQubm9kZV9vcHM9VzAub3BzX3RhYmxlLmRpci5ub2RlLFR0LnN0cmVhbV9vcHM9VzAub3BzX3RhYmxlLmRpci5zdHJlYW0sVHQuY29udGVudHM9e30pOkFuLmlzRmls''@;'; put 'put ''ZShUdC5tb2RlKT8oVHQubm9kZV9vcHM9VzAub3BzX3RhYmxlLmZpbGUubm9kZSxUdC5zdHJlYW1fb3BzPVcwLm9wc190YWJsZS5maWxlLnN0cmVhbSxUdC51c2VkQnl0ZXM9MCxUdC5jb250ZW50cz1udWxsKTpBbi5pc0xpbmsoVHQubW9kZSk/KFR0Lm5vZGVfb3BzPVcwLm9wc190YWJsZS5s''@;'; put 'put ''aW5rLm5vZGUsVHQuc3RyZWFtX29wcz1XMC5vcHNfdGFibGUubGluay5zdHJlYW0pOkFuLmlzQ2hyZGV2KFR0Lm1vZGUpJiYoVHQubm9kZV9vcHM9VzAub3BzX3RhYmxlLmNocmRldi5ub2RlLFR0LnN0cmVhbV9vcHM9VzAub3BzX3RhYmxlLmNocmRldi5zdHJlYW0pLFR0LnRpbWVzdGFtcD1E''@;'; put 'put ''YXRlLm5vdygpLGR0JiYoZHQuY29udGVudHNbRHRdPVR0KSxUdH0sZ2V0RmlsZURhdGFBc1JlZ3VsYXJBcnJheTpmdW5jdGlvbihkdCl7aWYoZHQuY29udGVudHMmJmR0LmNvbnRlbnRzLnN1YmFycmF5KXtmb3IodmFyIER0PVtdLFh0PTA7WHQ8ZHQudXNlZEJ5dGVzOysrWHQpRHQucHVzaChk''@;'; put 'put ''dC5jb250ZW50c1tYdF0pO3JldHVybiBEdH1yZXR1cm4gZHQuY29udGVudHN9LGdldEZpbGVEYXRhQXNUeXBlZEFycmF5OmZ1bmN0aW9uKGR0KXtyZXR1cm4gZHQuY29udGVudHM/ZHQuY29udGVudHMuc3ViYXJyYXk/ZHQuY29udGVudHMuc3ViYXJyYXkoMCxkdC51c2VkQnl0ZXMpOm5ldyBV''@;'; put 'put ''aW50OEFycmF5KGR0LmNvbnRlbnRzKTpuZXcgVWludDhBcnJheX0sZXhwYW5kRmlsZVN0b3JhZ2U6ZnVuY3Rpb24oZHQsRHQpe2lmKGR0LmNvbnRlbnRzJiZkdC5jb250ZW50cy5zdWJhcnJheSYmRHQ+ZHQuY29udGVudHMubGVuZ3RoJiYoZHQuY29udGVudHM9VzAuZ2V0RmlsZURhdGFBc1Jl''@;'; put 'put ''Z3VsYXJBcnJheShkdCksZHQudXNlZEJ5dGVzPWR0LmNvbnRlbnRzLmxlbmd0aCksIWR0LmNvbnRlbnRzfHxkdC5jb250ZW50cy5zdWJhcnJheSl7dmFyIFh0PWR0LmNvbnRlbnRzP2R0LmNvbnRlbnRzLmxlbmd0aDowO2lmKFh0Pj1EdClyZXR1cm47RHQ9TWF0aC5tYXgoRHQsWHQqKFh0PDEw''@;'; put 'put ''NDg1NzY/MjoxLjEyNSl8MCksMCE9WHQmJihEdD1NYXRoLm1heChEdCwyNTYpKTt2YXIgVHQ9ZHQuY29udGVudHM7cmV0dXJuIGR0LmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KER0KSx2b2lkKGR0LnVzZWRCeXRlcz4wJiZkdC5jb250ZW50cy5zZXQoVHQuc3ViYXJyYXkoMCxkdC51c2VkQnl0''@;'; put 'put ''ZXMpLDApKX1mb3IoIWR0LmNvbnRlbnRzJiZEdD4wJiYoZHQuY29udGVudHM9W10pO2R0LmNvbnRlbnRzLmxlbmd0aDxEdDspZHQuY29udGVudHMucHVzaCgwKX0scmVzaXplRmlsZVN0b3JhZ2U6ZnVuY3Rpb24oZHQsRHQpe2lmKGR0LnVzZWRCeXRlcyE9RHQpe2lmKDA9PUR0KXJldHVybiBk''@;'; put 'put ''dC5jb250ZW50cz1udWxsLHZvaWQoZHQudXNlZEJ5dGVzPTApO2lmKCFkdC5jb250ZW50c3x8ZHQuY29udGVudHMuc3ViYXJyYXkpe3ZhciBYdD1kdC5jb250ZW50cztyZXR1cm4gZHQuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKER0KSksWHQmJmR0LmNvbnRlbnRz''@;'; put 'put ''LnNldChYdC5zdWJhcnJheSgwLE1hdGgubWluKER0LGR0LnVzZWRCeXRlcykpKSx2b2lkKGR0LnVzZWRCeXRlcz1EdCl9aWYoZHQuY29udGVudHN8fChkdC5jb250ZW50cz1bXSksZHQuY29udGVudHMubGVuZ3RoPkR0KWR0LmNvbnRlbnRzLmxlbmd0aD1EdDtlbHNlIGZvcig7ZHQuY29udGVu''@;'; put 'put ''dHMubGVuZ3RoPER0OylkdC5jb250ZW50cy5wdXNoKDApO2R0LnVzZWRCeXRlcz1EdH19LG5vZGVfb3BzOntnZXRhdHRyOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9e307cmV0dXJuIER0LmRldj1Bbi5pc0NocmRldihkdC5tb2RlKT9kdC5pZDoxLER0Lmlubz1kdC5pZCxEdC5tb2RlPWR0Lm1vZGUs''@;'; put 'put ''RHQubmxpbms9MSxEdC51aWQ9MCxEdC5naWQ9MCxEdC5yZGV2PWR0LnJkZXYsRHQuc2l6ZT1Bbi5pc0RpcihkdC5tb2RlKT80MDk2OkFuLmlzRmlsZShkdC5tb2RlKT9kdC51c2VkQnl0ZXM6QW4uaXNMaW5rKGR0Lm1vZGUpP2R0LmxpbmsubGVuZ3RoOjAsRHQuYXRpbWU9bmV3IERhdGUoZHQu''@;'; put 'put ''dGltZXN0YW1wKSxEdC5tdGltZT1uZXcgRGF0ZShkdC50aW1lc3RhbXApLER0LmN0aW1lPW5ldyBEYXRlKGR0LnRpbWVzdGFtcCksRHQuYmxrc2l6ZT00MDk2LER0LmJsb2Nrcz1NYXRoLmNlaWwoRHQuc2l6ZS9EdC5ibGtzaXplKSxEdH0sc2V0YXR0cjpmdW5jdGlvbihkdCxEdCl7dm9pZCAw''@;'; put 'put ''IT09RHQubW9kZSYmKGR0Lm1vZGU9RHQubW9kZSksdm9pZCAwIT09RHQudGltZXN0YW1wJiYoZHQudGltZXN0YW1wPUR0LnRpbWVzdGFtcCksdm9pZCAwIT09RHQuc2l6ZSYmVzAucmVzaXplRmlsZVN0b3JhZ2UoZHQsRHQuc2l6ZSl9LGxvb2t1cDpmdW5jdGlvbihkdCxEdCl7dGhyb3cgQW4u''@;'; put 'put ''Z2VuZXJpY0Vycm9yc1t3aS5FTk9FTlRdfSxta25vZDpmdW5jdGlvbihkdCxEdCxYdCx1ZSl7cmV0dXJuIFcwLmNyZWF0ZU5vZGUoZHQsRHQsWHQsdWUpfSxyZW5hbWU6ZnVuY3Rpb24oZHQsRHQsWHQpe2lmKEFuLmlzRGlyKGR0Lm1vZGUpKXt2YXIgdWU7dHJ5e3VlPUFuLmxvb2t1cE5vZGUo''@;'; put 'put ''RHQsWHQpfWNhdGNoKGEpe31pZih1ZSlmb3IodmFyIFR0IGluIHVlLmNvbnRlbnRzKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT1RFTVBUWSl9ZGVsZXRlIGR0LnBhcmVudC5jb250ZW50c1tkdC5uYW1lXSxkdC5uYW1lPVh0LER0LmNvbnRlbnRzW1h0XT1kdCxkdC5wYXJlbnQ9RHR9''@;'; put 'put ''LHVubGluazpmdW5jdGlvbihkdCxEdCl7ZGVsZXRlIGR0LmNvbnRlbnRzW0R0XX0scm1kaXI6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD1Bbi5sb29rdXBOb2RlKGR0LER0KTtmb3IodmFyIHVlIGluIFh0LmNvbnRlbnRzKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT1RFTVBUWSk7ZGVs''@;'; put 'put ''ZXRlIGR0LmNvbnRlbnRzW0R0XX0scmVhZGRpcjpmdW5jdGlvbihkdCl7dmFyIER0PVsiLiIsIi4uIl07Zm9yKHZhciBYdCBpbiBkdC5jb250ZW50cykhZHQuY29udGVudHMuaGFzT3duUHJvcGVydHkoWHQpfHxEdC5wdXNoKFh0KTtyZXR1cm4gRHR9LHN5bWxpbms6ZnVuY3Rpb24oZHQsRHQs''@;'; put 'put ''WHQpe3ZhciB1ZT1XMC5jcmVhdGVOb2RlKGR0LER0LDQxNDcxLDApO3JldHVybiB1ZS5saW5rPVh0LHVlfSxyZWFkbGluazpmdW5jdGlvbihkdCl7aWYoIUFuLmlzTGluayhkdC5tb2RlKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU5WQUwpO3JldHVybiBkdC5saW5rfX0sc3RyZWFt''@;'; put 'put ''X29wczp7cmVhZDpmdW5jdGlvbihkdCxEdCxYdCx1ZSxUdCl7dmFyIGE9ZHQubm9kZS5jb250ZW50cztpZihUdD49ZHQubm9kZS51c2VkQnl0ZXMpcmV0dXJuIDA7dmFyIGJ0PU1hdGgubWluKGR0Lm5vZGUudXNlZEJ5dGVzLVR0LHVlKTtpZihPKGJ0Pj0wKSxidD44JiZhLnN1YmFycmF5KUR0''@;'; put 'put ''LnNldChhLnN1YmFycmF5KFR0LFR0K2J0KSxYdCk7ZWxzZSBmb3IodmFyIGFyPTA7YXI8YnQ7YXIrKylEdFtYdCthcl09YVtUdCthcl07cmV0dXJuIGJ0fSx3cml0ZTpmdW5jdGlvbihkdCxEdCxYdCx1ZSxUdCxhKXtpZighdWUpcmV0dXJuIDA7dmFyIGJ0PWR0Lm5vZGU7aWYoYnQudGltZXN0''@;'; put 'put ''YW1wPURhdGUubm93KCksRHQuc3ViYXJyYXkmJighYnQuY29udGVudHN8fGJ0LmNvbnRlbnRzLnN1YmFycmF5KSl7aWYoYSlyZXR1cm4gYnQuY29udGVudHM9RHQuc3ViYXJyYXkoWHQsWHQrdWUpLGJ0LnVzZWRCeXRlcz11ZSx1ZTtpZigwPT09YnQudXNlZEJ5dGVzJiYwPT09VHQpcmV0dXJu''@;'; put 'put ''IGJ0LmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KER0LnN1YmFycmF5KFh0LFh0K3VlKSksYnQudXNlZEJ5dGVzPXVlLHVlO2lmKFR0K3VlPD1idC51c2VkQnl0ZXMpcmV0dXJuIGJ0LmNvbnRlbnRzLnNldChEdC5zdWJhcnJheShYdCxYdCt1ZSksVHQpLHVlfWlmKFcwLmV4cGFuZEZpbGVTdG9y''@;'; put 'put ''YWdlKGJ0LFR0K3VlKSxidC5jb250ZW50cy5zdWJhcnJheSYmRHQuc3ViYXJyYXkpYnQuY29udGVudHMuc2V0KER0LnN1YmFycmF5KFh0LFh0K3VlKSxUdCk7ZWxzZSBmb3IodmFyIGFyPTA7YXI8dWU7YXIrKylidC5jb250ZW50c1tUdCthcl09RHRbWHQrYXJdO3JldHVybiBidC51c2VkQnl0''@;'; put 'put ''ZXM9TWF0aC5tYXgoYnQudXNlZEJ5dGVzLFR0K3VlKSx1ZX0sbGxzZWVrOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU9RHQ7aWYoMT09PVh0P3VlKz1kdC5wb3NpdGlvbjoyPT09WHQmJkFuLmlzRmlsZShkdC5ub2RlLm1vZGUpJiYodWUrPWR0Lm5vZGUudXNlZEJ5dGVzKSx1ZTwwKXRocm93''@;'; put 'put ''IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVJTlZBTCk7cmV0dXJuIHVlfSxhbGxvY2F0ZTpmdW5jdGlvbihkdCxEdCxYdCl7VzAuZXhwYW5kRmlsZVN0b3JhZ2UoZHQubm9kZSxEdCtYdCksZHQubm9kZS51c2VkQnl0ZXM9TWF0aC5tYXgoZHQubm9kZS51c2VkQnl0ZXMsRHQrWHQpfSxtbWFwOmZ1''@;'; put 'put ''bmN0aW9uKGR0LER0LFh0LHVlLFR0LGEsYnQpe2lmKCFBbi5pc0ZpbGUoZHQubm9kZS5tb2RlKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTk9ERVYpO3ZhciBhcixOaSxXbj1kdC5ub2RlLmNvbnRlbnRzO2lmKDImYnR8fFduLmJ1ZmZlciE9PUR0JiZXbi5idWZmZXIhPT1EdC5idWZm''@;'; put 'put ''ZXIpe2lmKChUdD4wfHxUdCt1ZTxkdC5ub2RlLnVzZWRCeXRlcykmJihXbj1Xbi5zdWJhcnJheT9Xbi5zdWJhcnJheShUdCxUdCt1ZSk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoV24sVHQsVHQrdWUpKSxOaT0hMCwhKGFyPUZwKHVlKSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2ku''@;'; put 'put ''RU5PTUVNKTtEdC5zZXQoV24sYXIpfWVsc2UgTmk9ITEsYXI9V24uYnl0ZU9mZnNldDtyZXR1cm57cHRyOmFyLGFsbG9jYXRlZDpOaX19LG1zeW5jOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0KXtpZighQW4uaXNGaWxlKGR0Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2ku''@;'; put 'put ''RU5PREVWKTtyZXR1cm4gMiZUdHx8VzAuc3RyZWFtX29wcy53cml0ZShkdCxEdCwwLHVlLFh0LCExKSwwfX19LHFvPXtkYnM6e30saW5kZXhlZERCOmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBpbmRleGVkREIpcmV0dXJuIGluZGV4ZWREQjt2YXIgZHQ9bnVsbDtyZXR1cm4i''@;'; put 'put ''b2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKGR0PXdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQiksTyhkdCwiSURCRlMgdXNlZCwgYnV0IGluZGV4ZWREQiBub3Qgc3VwcG9ydGVkIiksZHR9LERC''@;'; put 'put ''X1ZFUlNJT046MjEsREJfU1RPUkVfTkFNRToiRklMRV9EQVRBIixtb3VudDpmdW5jdGlvbihkdCl7cmV0dXJuIFcwLm1vdW50LmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc3luY2ZzOmZ1bmN0aW9uKGR0LER0LFh0KXtxby5nZXRMb2NhbFNldChkdCxmdW5jdGlvbih1ZSxUdCl7aWYodWUpcmV0''@;'; put 'put ''dXJuIFh0KHVlKTtxby5nZXRSZW1vdGVTZXQoZHQsZnVuY3Rpb24oYSxidCl7aWYoYSlyZXR1cm4gWHQoYSk7cW8ucmVjb25jaWxlKER0P2J0OlR0LER0P1R0OmJ0LFh0KX0pfSl9LGdldERCOmZ1bmN0aW9uKGR0LER0KXt2YXIgdWUsWHQ9cW8uZGJzW2R0XTtpZihYdClyZXR1cm4gRHQobnVs''@;'; put 'put ''bCxYdCk7dHJ5e3VlPXFvLmluZGV4ZWREQigpLm9wZW4oZHQscW8uREJfVkVSU0lPTil9Y2F0Y2goVHQpe3JldHVybiBEdChUdCl9aWYoIXVlKXJldHVybiBEdCgiVW5hYmxlIHRvIGNvbm5lY3QgdG8gSW5kZXhlZERCIik7dWUub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKFR0KXt2YXIgYXIs''@;'; put 'put ''YT1UdC50YXJnZXQucmVzdWx0LGJ0PVR0LnRhcmdldC50cmFuc2FjdGlvbjsoYXI9YS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKHFvLkRCX1NUT1JFX05BTUUpP2J0Lm9iamVjdFN0b3JlKHFvLkRCX1NUT1JFX05BTUUpOmEuY3JlYXRlT2JqZWN0U3RvcmUocW8uREJfU1RPUkVfTkFNRSkp''@;'; put 'put ''LmluZGV4TmFtZXMuY29udGFpbnMoInRpbWVzdGFtcCIpfHxhci5jcmVhdGVJbmRleCgidGltZXN0YW1wIiwidGltZXN0YW1wIix7dW5pcXVlOiExfSl9LHVlLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3FvLmRic1tkdF09WHQ9dWUucmVzdWx0LER0KG51bGwsWHQpfSx1ZS5vbmVycm9yPWZ1bmN0''@;'; put 'put ''aW9uKFR0KXtEdCh0aGlzLmVycm9yKSxUdC5wcmV2ZW50RGVmYXVsdCgpfX0sZ2V0TG9jYWxTZXQ6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD17fTtmdW5jdGlvbiB1ZShOaSl7cmV0dXJuIi4iIT09TmkmJiIuLiIhPT1OaX1mdW5jdGlvbiBUdChOaSl7cmV0dXJuIGZ1bmN0aW9uKFduKXtyZXR1''@;'; put 'put ''cm4gcTAuam9pbjIoTmksV24pfX1mb3IodmFyIGE9QW4ucmVhZGRpcihkdC5tb3VudHBvaW50KS5maWx0ZXIodWUpLm1hcChUdChkdC5tb3VudHBvaW50KSk7YS5sZW5ndGg7KXt2YXIgYXIsYnQ9YS5wb3AoKTt0cnl7YXI9QW4uc3RhdChidCl9Y2F0Y2goTmkpe3JldHVybiBEdChOaSl9QW4u''@;'; put 'put ''aXNEaXIoYXIubW9kZSkmJmEucHVzaC5hcHBseShhLEFuLnJlYWRkaXIoYnQpLmZpbHRlcih1ZSkubWFwKFR0KGJ0KSkpLFh0W2J0XT17dGltZXN0YW1wOmFyLm10aW1lfX1yZXR1cm4gRHQobnVsbCx7dHlwZToibG9jYWwiLGVudHJpZXM6WHR9KX0sZ2V0UmVtb3RlU2V0OmZ1bmN0aW9uKGR0''@;'; put 'put ''LER0KXt2YXIgWHQ9e307cW8uZ2V0REIoZHQubW91bnRwb2ludCxmdW5jdGlvbih1ZSxUdCl7aWYodWUpcmV0dXJuIER0KHVlKTt0cnl7dmFyIGE9VHQudHJhbnNhY3Rpb24oW3FvLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpO2Eub25lcnJvcj1mdW5jdGlvbihOaSl7RHQodGhpcy5lcnJv''@;'; put 'put ''ciksTmkucHJldmVudERlZmF1bHQoKX0sYS5vYmplY3RTdG9yZShxby5EQl9TVE9SRV9OQU1FKS5pbmRleCgidGltZXN0YW1wIikub3BlbktleUN1cnNvcigpLm9uc3VjY2Vzcz1mdW5jdGlvbihOaSl7dmFyIFduPU5pLnRhcmdldC5yZXN1bHQ7aWYoIVduKXJldHVybiBEdChudWxsLHt0eXBl''@;'; put 'put ''OiJyZW1vdGUiLGRiOlR0LGVudHJpZXM6WHR9KTtYdFtXbi5wcmltYXJ5S2V5XT17dGltZXN0YW1wOlduLmtleX0sV24uY29udGludWUoKX19Y2F0Y2goTmkpe3JldHVybiBEdChOaSl9fSl9LGxvYWRMb2NhbEVudHJ5OmZ1bmN0aW9uKGR0LER0KXt2YXIgWHQsdWU7dHJ5e3VlPUFuLmxvb2t1''@;'; put 'put ''cFBhdGgoZHQpLm5vZGUsWHQ9QW4uc3RhdChkdCl9Y2F0Y2goYSl7cmV0dXJuIER0KGEpfXJldHVybiBBbi5pc0RpcihYdC5tb2RlKT9EdChudWxsLHt0aW1lc3RhbXA6WHQubXRpbWUsbW9kZTpYdC5tb2RlfSk6QW4uaXNGaWxlKFh0Lm1vZGUpPyh1ZS5jb250ZW50cz1XMC5nZXRGaWxlRGF0''@;'; put 'put ''YUFzVHlwZWRBcnJheSh1ZSksRHQobnVsbCx7dGltZXN0YW1wOlh0Lm10aW1lLG1vZGU6WHQubW9kZSxjb250ZW50czp1ZS5jb250ZW50c30pKTpEdChuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpfSxzdG9yZUxvY2FsRW50cnk6ZnVuY3Rpb24oZHQsRHQsWHQpe3RyeXtp''@;'; put 'put ''ZihBbi5pc0RpcihEdC5tb2RlKSlBbi5ta2RpcihkdCxEdC5tb2RlKTtlbHNle2lmKCFBbi5pc0ZpbGUoRHQubW9kZSkpcmV0dXJuIFh0KG5ldyBFcnJvcigibm9kZSB0eXBlIG5vdCBzdXBwb3J0ZWQiKSk7QW4ud3JpdGVGaWxlKGR0LER0LmNvbnRlbnRzLHtjYW5Pd246ITB9KX1Bbi5jaG1v''@;'; put 'put ''ZChkdCxEdC5tb2RlKSxBbi51dGltZShkdCxEdC50aW1lc3RhbXAsRHQudGltZXN0YW1wKX1jYXRjaCh1ZSl7cmV0dXJuIFh0KHVlKX1YdChudWxsKX0scmVtb3ZlTG9jYWxFbnRyeTpmdW5jdGlvbihkdCxEdCl7dHJ5e0FuLmxvb2t1cFBhdGgoZHQpO3ZhciB1ZT1Bbi5zdGF0KGR0KTtBbi5p''@;'; put 'put ''c0Rpcih1ZS5tb2RlKT9Bbi5ybWRpcihkdCk6QW4uaXNGaWxlKHVlLm1vZGUpJiZBbi51bmxpbmsoZHQpfWNhdGNoKFR0KXtyZXR1cm4gRHQoVHQpfUR0KG51bGwpfSxsb2FkUmVtb3RlRW50cnk6ZnVuY3Rpb24oZHQsRHQsWHQpe3ZhciB1ZT1kdC5nZXQoRHQpO3VlLm9uc3VjY2Vzcz1mdW5j''@;'; put 'put ''dGlvbihUdCl7WHQobnVsbCxUdC50YXJnZXQucmVzdWx0KX0sdWUub25lcnJvcj1mdW5jdGlvbihUdCl7WHQodGhpcy5lcnJvciksVHQucHJldmVudERlZmF1bHQoKX19LHN0b3JlUmVtb3RlRW50cnk6ZnVuY3Rpb24oZHQsRHQsWHQsdWUpe3ZhciBUdD1kdC5wdXQoWHQsRHQpO1R0Lm9uc3Vj''@;'; put 'put ''Y2Vzcz1mdW5jdGlvbigpe3VlKG51bGwpfSxUdC5vbmVycm9yPWZ1bmN0aW9uKGEpe3VlKHRoaXMuZXJyb3IpLGEucHJldmVudERlZmF1bHQoKX19LHJlbW92ZVJlbW90ZUVudHJ5OmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU9ZHQuZGVsZXRlKER0KTt1ZS5vbnN1Y2Nlc3M9ZnVuY3Rpb24o''@;'; put 'put ''KXtYdChudWxsKX0sdWUub25lcnJvcj1mdW5jdGlvbihUdCl7WHQodGhpcy5lcnJvciksVHQucHJldmVudERlZmF1bHQoKX19LHJlY29uY2lsZTpmdW5jdGlvbihkdCxEdCxYdCl7dmFyIHVlPTAsVHQ9W107T2JqZWN0LmtleXMoZHQuZW50cmllcykuZm9yRWFjaChmdW5jdGlvbih3byl7dmFy''@;'; put 'put ''ICRvPUR0LmVudHJpZXNbd29dOyghJG98fGR0LmVudHJpZXNbd29dLnRpbWVzdGFtcD4kby50aW1lc3RhbXApJiYoVHQucHVzaCh3byksdWUrKyl9KTt2YXIgYT1bXTtpZihPYmplY3Qua2V5cyhEdC5lbnRyaWVzKS5mb3JFYWNoKGZ1bmN0aW9uKHdvKXtkdC5lbnRyaWVzW3dvXXx8KGEucHVz''@;'; put 'put ''aCh3byksdWUrKyl9KSwhdWUpcmV0dXJuIFh0KG51bGwpO3ZhciBidD0wLE5pPSgicmVtb3RlIj09PWR0LnR5cGU/ZHQuZGI6RHQuZGIpLnRyYW5zYWN0aW9uKFtxby5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIiksV249Tmkub2JqZWN0U3RvcmUocW8uREJfU1RPUkVfTkFNRSk7ZnVuY3Rp''@;'; put 'put ''b24gXyh3byl7cmV0dXJuIHdvP18uZXJyb3JlZD92b2lkIDA6KF8uZXJyb3JlZD0hMCxYdCh3bykpOisrYnQ+PXVlP1h0KG51bGwpOnZvaWQgMH1OaS5vbmVycm9yPWZ1bmN0aW9uKHdvKXtfKHRoaXMuZXJyb3IpLHdvLnByZXZlbnREZWZhdWx0KCl9LFR0LnNvcnQoKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKHdvKXsibG9jYWwiPT09RHQudHlwZT9xby5sb2FkUmVtb3RlRW50cnkoV24sd28sZnVuY3Rpb24oa2ksJG8pe2lmKGtpKXJldHVybiBfKGtpKTtxby5zdG9yZUxvY2FsRW50cnkod28sJG8sXyl9KTpxby5sb2FkTG9jYWxFbnRyeSh3byxmdW5jdGlvbihraSwkbyl7aWYoa2kpcmV0dXJu''@;'; put 'put ''IF8oa2kpO3FvLnN0b3JlUmVtb3RlRW50cnkoV24sd28sJG8sXyl9KX0pLGEuc29ydCgpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uKHdvKXsibG9jYWwiPT09RHQudHlwZT9xby5yZW1vdmVMb2NhbEVudHJ5KHdvLF8pOnFvLnJlbW92ZVJlbW90ZUVudHJ5KFduLHdvLF8pfSl9fSxLYT17''@;'; put 'put ''aXNXaW5kb3dzOiExLHN0YXRpY0luaXQ6ZnVuY3Rpb24oKXtLYS5pc1dpbmRvd3M9ISFwcm9jZXNzLnBsYXRmb3JtLm1hdGNoKC9ed2luLyk7dmFyIGR0PXByb2Nlc3MuYmluZGluZygiY29uc3RhbnRzIik7ZHQuZnMmJihkdD1kdC5mcyksS2EuZmxhZ3NGb3JOb2RlTWFwPXsxMDI0OmR0Lk9f''@;'; put 'put ''QVBQRU5ELDY0OmR0Lk9fQ1JFQVQsMTI4OmR0Lk9fRVhDTCwwOmR0Lk9fUkRPTkxZLDI6ZHQuT19SRFdSLDQwOTY6ZHQuT19TWU5DLDUxMjpkdC5PX1RSVU5DLDE6ZHQuT19XUk9OTFl9fSxidWZmZXJGcm9tOmZ1bmN0aW9uKGR0KXtyZXR1cm4gQnVmZmVyLmFsbG9jP0J1ZmZlci5mcm9tKGR0''@;'; put 'put ''KTpuZXcgQnVmZmVyKGR0KX0sbW91bnQ6ZnVuY3Rpb24oZHQpe3JldHVybiBPKE4pLEthLmNyZWF0ZU5vZGUobnVsbCwiLyIsS2EuZ2V0TW9kZShkdC5vcHRzLnJvb3QpLDApfSxjcmVhdGVOb2RlOmZ1bmN0aW9uKGR0LER0LFh0LHVlKXtpZighQW4uaXNEaXIoWHQpJiYhQW4uaXNGaWxlKFh0''@;'; put 'put ''KSYmIUFuLmlzTGluayhYdCkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlOVkFMKTt2YXIgVHQ9QW4uY3JlYXRlTm9kZShkdCxEdCxYdCk7cmV0dXJuIFR0Lm5vZGVfb3BzPUthLm5vZGVfb3BzLFR0LnN0cmVhbV9vcHM9S2Euc3RyZWFtX29wcyxUdH0sZ2V0TW9kZTpmdW5jdGlvbihk''@;'; put 'put ''dCl7dmFyIER0O3RyeXtEdD1tcy5sc3RhdFN5bmMoZHQpLEthLmlzV2luZG93cyYmKER0Lm1vZGU9RHQubW9kZXwoMjkyJkR0Lm1vZGUpPj4yKX1jYXRjaChYdCl7dGhyb3cgWHQuY29kZT9uZXcgQW4uRXJybm9FcnJvcih3aVtYdC5jb2RlXSk6WHR9cmV0dXJuIER0Lm1vZGV9LHJlYWxQYXRo''@;'; put 'put ''OmZ1bmN0aW9uKGR0KXtmb3IodmFyIER0PVtdO2R0LnBhcmVudCE9PWR0OylEdC5wdXNoKGR0Lm5hbWUpLGR0PWR0LnBhcmVudDtyZXR1cm4gRHQucHVzaChkdC5tb3VudC5vcHRzLnJvb3QpLER0LnJldmVyc2UoKSxxMC5qb2luLmFwcGx5KG51bGwsRHQpfSxmbGFnc0Zvck5vZGU6ZnVuY3Rp''@;'; put 'put ''b24oZHQpe2R0Jj0tMjA5NzE1MyxkdCY9LTIwNDksZHQmPS0zMjc2OSxkdCY9LTUyNDI4OTt2YXIgRHQ9MDtmb3IodmFyIFh0IGluIEthLmZsYWdzRm9yTm9kZU1hcClkdCZYdCYmKER0fD1LYS5mbGFnc0Zvck5vZGVNYXBbWHRdLGR0Xj1YdCk7aWYoZHQpdGhyb3cgbmV3IEFuLkVycm5vRXJy''@;'; put 'put ''b3Iod2kuRUlOVkFMKTtyZXR1cm4gRHR9LG5vZGVfb3BzOntnZXRhdHRyOmZ1bmN0aW9uKGR0KXt2YXIgWHQsRHQ9S2EucmVhbFBhdGgoZHQpO3RyeXtYdD1tcy5sc3RhdFN5bmMoRHQpfWNhdGNoKHVlKXt0aHJvdyB1ZS5jb2RlP25ldyBBbi5FcnJub0Vycm9yKHdpW3VlLmNvZGVdKTp1ZX1y''@;'; put 'put ''ZXR1cm4gS2EuaXNXaW5kb3dzJiYhWHQuYmxrc2l6ZSYmKFh0LmJsa3NpemU9NDA5NiksS2EuaXNXaW5kb3dzJiYhWHQuYmxvY2tzJiYoWHQuYmxvY2tzPShYdC5zaXplK1h0LmJsa3NpemUtMSkvWHQuYmxrc2l6ZXwwKSx7ZGV2Olh0LmRldixpbm86WHQuaW5vLG1vZGU6WHQubW9kZSxubGlu''@;'; put 'put ''azpYdC5ubGluayx1aWQ6WHQudWlkLGdpZDpYdC5naWQscmRldjpYdC5yZGV2LHNpemU6WHQuc2l6ZSxhdGltZTpYdC5hdGltZSxtdGltZTpYdC5tdGltZSxjdGltZTpYdC5jdGltZSxibGtzaXplOlh0LmJsa3NpemUsYmxvY2tzOlh0LmJsb2Nrc319LHNldGF0dHI6ZnVuY3Rpb24oZHQsRHQp''@;'; put 'put ''e3ZhciBYdD1LYS5yZWFsUGF0aChkdCk7dHJ5e2lmKHZvaWQgMCE9PUR0Lm1vZGUmJihtcy5jaG1vZFN5bmMoWHQsRHQubW9kZSksZHQubW9kZT1EdC5tb2RlKSx2b2lkIDAhPT1EdC50aW1lc3RhbXApe3ZhciB1ZT1uZXcgRGF0ZShEdC50aW1lc3RhbXApO21zLnV0aW1lc1N5bmMoWHQsdWUs''@;'; put 'put ''dWUpfXZvaWQgMCE9PUR0LnNpemUmJm1zLnRydW5jYXRlU3luYyhYdCxEdC5zaXplKX1jYXRjaChUdCl7dGhyb3cgVHQuY29kZT9uZXcgQW4uRXJybm9FcnJvcih3aVtUdC5jb2RlXSk6VHR9fSxsb29rdXA6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD1xMC5qb2luMihLYS5yZWFsUGF0aChkdCks''@;'; put 'put ''RHQpLHVlPUthLmdldE1vZGUoWHQpO3JldHVybiBLYS5jcmVhdGVOb2RlKGR0LER0LHVlKX0sbWtub2Q6ZnVuY3Rpb24oZHQsRHQsWHQsdWUpe3ZhciBUdD1LYS5jcmVhdGVOb2RlKGR0LER0LFh0LHVlKSxhPUthLnJlYWxQYXRoKFR0KTt0cnl7QW4uaXNEaXIoVHQubW9kZSk/bXMubWtkaXJT''@;'; put 'put ''eW5jKGEsVHQubW9kZSk6bXMud3JpdGVGaWxlU3luYyhhLCIiLHttb2RlOlR0Lm1vZGV9KX1jYXRjaChidCl7dGhyb3cgYnQuY29kZT9uZXcgQW4uRXJybm9FcnJvcih3aVtidC5jb2RlXSk6YnR9cmV0dXJuIFR0fSxyZW5hbWU6ZnVuY3Rpb24oZHQsRHQsWHQpe3ZhciB1ZT1LYS5yZWFsUGF0''@;'; put 'put ''aChkdCksVHQ9cTAuam9pbjIoS2EucmVhbFBhdGgoRHQpLFh0KTt0cnl7bXMucmVuYW1lU3luYyh1ZSxUdCl9Y2F0Y2goYSl7dGhyb3cgYS5jb2RlP25ldyBBbi5FcnJub0Vycm9yKHdpW2EuY29kZV0pOmF9fSx1bmxpbms6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD1xMC5qb2luMihLYS5yZWFs''@;'; put 'put ''UGF0aChkdCksRHQpO3RyeXttcy51bmxpbmtTeW5jKFh0KX1jYXRjaCh1ZSl7dGhyb3cgdWUuY29kZT9uZXcgQW4uRXJybm9FcnJvcih3aVt1ZS5jb2RlXSk6dWV9fSxybWRpcjpmdW5jdGlvbihkdCxEdCl7dmFyIFh0PXEwLmpvaW4yKEthLnJlYWxQYXRoKGR0KSxEdCk7dHJ5e21zLnJtZGly''@;'; put 'put ''U3luYyhYdCl9Y2F0Y2godWUpe3Rocm93IHVlLmNvZGU/bmV3IEFuLkVycm5vRXJyb3Iod2lbdWUuY29kZV0pOnVlfX0scmVhZGRpcjpmdW5jdGlvbihkdCl7dmFyIER0PUthLnJlYWxQYXRoKGR0KTt0cnl7cmV0dXJuIG1zLnJlYWRkaXJTeW5jKER0KX1jYXRjaChYdCl7dGhyb3cgWHQuY29k''@;'; put 'put ''ZT9uZXcgQW4uRXJybm9FcnJvcih3aVtYdC5jb2RlXSk6WHR9fSxzeW1saW5rOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU9cTAuam9pbjIoS2EucmVhbFBhdGgoZHQpLER0KTt0cnl7bXMuc3ltbGlua1N5bmMoWHQsdWUpfWNhdGNoKFR0KXt0aHJvdyBUdC5jb2RlP25ldyBBbi5FcnJub0Vy''@;'; put 'put ''cm9yKHdpW1R0LmNvZGVdKTpUdH19LHJlYWRsaW5rOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9S2EucmVhbFBhdGgoZHQpO3RyeXtyZXR1cm4gRHQ9bXMucmVhZGxpbmtTeW5jKER0KSxEdD1oMi5yZWxhdGl2ZShoMi5yZXNvbHZlKGR0Lm1vdW50Lm9wdHMucm9vdCksRHQpfWNhdGNoKFh0KXt0aHJv''@;'; put 'put ''dyBYdC5jb2RlP25ldyBBbi5FcnJub0Vycm9yKHdpW1h0LmNvZGVdKTpYdH19fSxzdHJlYW1fb3BzOntvcGVuOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9S2EucmVhbFBhdGgoZHQubm9kZSk7dHJ5e0FuLmlzRmlsZShkdC5ub2RlLm1vZGUpJiYoZHQubmZkPW1zLm9wZW5TeW5jKER0LEthLmZsYWdz''@;'; put 'put ''Rm9yTm9kZShkdC5mbGFncykpKX1jYXRjaChYdCl7dGhyb3cgWHQuY29kZT9uZXcgQW4uRXJybm9FcnJvcih3aVtYdC5jb2RlXSk6WHR9fSxjbG9zZTpmdW5jdGlvbihkdCl7dHJ5e0FuLmlzRmlsZShkdC5ub2RlLm1vZGUpJiZkdC5uZmQmJm1zLmNsb3NlU3luYyhkdC5uZmQpfWNhdGNoKER0''@;'; put 'put ''KXt0aHJvdyBEdC5jb2RlP25ldyBBbi5FcnJub0Vycm9yKHdpW0R0LmNvZGVdKTpEdH19LHJlYWQ6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe2lmKDA9PT11ZSlyZXR1cm4gMDt0cnl7cmV0dXJuIG1zLnJlYWRTeW5jKGR0Lm5mZCxLYS5idWZmZXJGcm9tKER0LmJ1ZmZlciksWHQsdWUsVHQp''@;'; put 'put ''fWNhdGNoKGEpe3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpW2EuY29kZV0pfX0sd3JpdGU6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe3RyeXtyZXR1cm4gbXMud3JpdGVTeW5jKGR0Lm5mZCxLYS5idWZmZXJGcm9tKER0LmJ1ZmZlciksWHQsdWUsVHQpfWNhdGNoKGEpe3Rocm93IG5ldyBB''@;'; put 'put ''bi5FcnJub0Vycm9yKHdpW2EuY29kZV0pfX0sbGxzZWVrOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU9RHQ7aWYoMT09PVh0KXVlKz1kdC5wb3NpdGlvbjtlbHNlIGlmKDI9PT1YdCYmQW4uaXNGaWxlKGR0Lm5vZGUubW9kZSkpdHJ5e3VlKz1tcy5mc3RhdFN5bmMoZHQubmZkKS5zaXplfWNh''@;'; put 'put ''dGNoKGEpe3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpW2EuY29kZV0pfWlmKHVlPDApdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlOVkFMKTtyZXR1cm4gdWV9fX0sc289e0RJUl9NT0RFOjE2ODk1LEZJTEVfTU9ERTozMzI3OSxyZWFkZXI6bnVsbCxtb3VudDpmdW5jdGlvbihkdCl7''@;'; put 'put ''TyhXKSxzby5yZWFkZXJ8fChzby5yZWFkZXI9bmV3IEZpbGVSZWFkZXJTeW5jKTt2YXIgRHQ9c28uY3JlYXRlTm9kZShudWxsLCIvIixzby5ESVJfTU9ERSwwKSxYdD17fTtmdW5jdGlvbiB1ZShhKXtmb3IodmFyIGJ0PWEuc3BsaXQoIi8iKSxhcj1EdCxOaT0wO05pPGJ0Lmxlbmd0aC0xO05p''@;'; put 'put ''Kyspe3ZhciBXbj1idC5zbGljZSgwLE5pKzEpLmpvaW4oIi8iKTtYdFtXbl18fChYdFtXbl09c28uY3JlYXRlTm9kZShhcixidFtOaV0sc28uRElSX01PREUsMCkpLGFyPVh0W1duXX1yZXR1cm4gYXJ9ZnVuY3Rpb24gVHQoYSl7dmFyIGJ0PWEuc3BsaXQoIi8iKTtyZXR1cm4gYnRbYnQubGVu''@;'; put 'put ''Z3RoLTFdfXJldHVybiBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGR0Lm9wdHMuZmlsZXN8fFtdLGZ1bmN0aW9uKGEpe3NvLmNyZWF0ZU5vZGUodWUoYS5uYW1lKSxUdChhLm5hbWUpLHNvLkZJTEVfTU9ERSwwLGEsYS5sYXN0TW9kaWZpZWREYXRlKX0pLChkdC5vcHRzLmJsb2JzfHxb''@;'; put 'put ''XSkuZm9yRWFjaChmdW5jdGlvbihhKXtzby5jcmVhdGVOb2RlKHVlKGEubmFtZSksVHQoYS5uYW1lKSxzby5GSUxFX01PREUsMCxhLmRhdGEpfSksKGR0Lm9wdHMucGFja2FnZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EubWV0YWRhdGEuZmlsZXMuZm9yRWFjaChmdW5jdGlvbihidCl7''@;'; put 'put ''dmFyIGFyPWJ0LmZpbGVuYW1lLnN1YnN0cigxKTtzby5jcmVhdGVOb2RlKHVlKGFyKSxUdChhciksc28uRklMRV9NT0RFLDAsYS5ibG9iLnNsaWNlKGJ0LnN0YXJ0LGJ0LmVuZCkpfSl9KSxEdH0sY3JlYXRlTm9kZTpmdW5jdGlvbihkdCxEdCxYdCx1ZSxUdCxhKXt2YXIgYnQ9QW4uY3JlYXRl''@;'; put 'put ''Tm9kZShkdCxEdCxYdCk7cmV0dXJuIGJ0Lm1vZGU9WHQsYnQubm9kZV9vcHM9c28ubm9kZV9vcHMsYnQuc3RyZWFtX29wcz1zby5zdHJlYW1fb3BzLGJ0LnRpbWVzdGFtcD0oYXx8bmV3IERhdGUpLmdldFRpbWUoKSxPKHNvLkZJTEVfTU9ERSE9PXNvLkRJUl9NT0RFKSxYdD09PXNvLkZJTEVf''@;'; put 'put ''TU9ERT8oYnQuc2l6ZT1UdC5zaXplLGJ0LmNvbnRlbnRzPVR0KTooYnQuc2l6ZT00MDk2LGJ0LmNvbnRlbnRzPXt9KSxkdCYmKGR0LmNvbnRlbnRzW0R0XT1idCksYnR9LG5vZGVfb3BzOntnZXRhdHRyOmZ1bmN0aW9uKGR0KXtyZXR1cm57ZGV2OjEsaW5vOnZvaWQgMCxtb2RlOmR0Lm1vZGUs''@;'; put 'put ''bmxpbms6MSx1aWQ6MCxnaWQ6MCxyZGV2OnZvaWQgMCxzaXplOmR0LnNpemUsYXRpbWU6bmV3IERhdGUoZHQudGltZXN0YW1wKSxtdGltZTpuZXcgRGF0ZShkdC50aW1lc3RhbXApLGN0aW1lOm5ldyBEYXRlKGR0LnRpbWVzdGFtcCksYmxrc2l6ZTo0MDk2LGJsb2NrczpNYXRoLmNlaWwoZHQu''@;'; put 'put ''c2l6ZS80MDk2KX19LHNldGF0dHI6ZnVuY3Rpb24oZHQsRHQpe3ZvaWQgMCE9PUR0Lm1vZGUmJihkdC5tb2RlPUR0Lm1vZGUpLHZvaWQgMCE9PUR0LnRpbWVzdGFtcCYmKGR0LnRpbWVzdGFtcD1EdC50aW1lc3RhbXApfSxsb29rdXA6ZnVuY3Rpb24oZHQsRHQpe3Rocm93IG5ldyBBbi5FcnJu''@;'; put 'put ''b0Vycm9yKHdpLkVOT0VOVCl9LG1rbm9kOmZ1bmN0aW9uKGR0LER0LFh0LHVlKXt0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FUEVSTSl9LHJlbmFtZTpmdW5jdGlvbihkdCxEdCxYdCl7dGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVBFUk0pfSx1bmxpbms6ZnVuY3Rpb24oZHQsRHQp''@;'; put 'put ''e3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVQRVJNKX0scm1kaXI6ZnVuY3Rpb24oZHQsRHQpe3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVQRVJNKX0scmVhZGRpcjpmdW5jdGlvbihkdCl7dmFyIER0PVsiLiIsIi4uIl07Zm9yKHZhciBYdCBpbiBkdC5jb250ZW50cykhZHQuY29u''@;'; put 'put ''dGVudHMuaGFzT3duUHJvcGVydHkoWHQpfHxEdC5wdXNoKFh0KTtyZXR1cm4gRHR9LHN5bWxpbms6ZnVuY3Rpb24oZHQsRHQsWHQpe3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVQRVJNKX0scmVhZGxpbms6ZnVuY3Rpb24oZHQpe3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVQRVJN''@;'; put 'put ''KX19LHN0cmVhbV9vcHM6e3JlYWQ6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe2lmKFR0Pj1kdC5ub2RlLnNpemUpcmV0dXJuIDA7dmFyIGE9ZHQubm9kZS5jb250ZW50cy5zbGljZShUdCxUdCt1ZSksYnQ9c28ucmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGEpO3JldHVybiBEdC5zZXQobmV3''@;'; put 'put ''IFVpbnQ4QXJyYXkoYnQpLFh0KSxhLnNpemV9LHdyaXRlOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0KXt0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU8pfSxsbHNlZWs6ZnVuY3Rpb24oZHQsRHQsWHQpe3ZhciB1ZT1EdDtpZigxPT09WHQ/dWUrPWR0LnBvc2l0aW9uOjI9PT1YdCYmQW4u''@;'; put 'put ''aXNGaWxlKGR0Lm5vZGUubW9kZSkmJih1ZSs9ZHQubm9kZS5zaXplKSx1ZTwwKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVJTlZBTCk7cmV0dXJuIHVlfX19O0F0Kz0xNixBdCs9MTYsQXQrPTE2O3ZhciBBbj17cm9vdDpudWxsLG1vdW50czpbXSxkZXZpY2VzOnt9LHN0cmVhbXM6W10s''@;'; put 'put ''bmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOiExLGlnbm9yZVBlcm1pc3Npb25zOiEwLHRyYWNraW5nRGVsZWdhdGU6e30sdHJhY2tpbmc6e29wZW5GbGFnczp7UkVBRDoxLFdSSVRFOjJ9fSxFcnJub0Vycm9yOm51bGwsZ2VuZXJpY0Vycm9y''@;'; put 'put ''czp7fSxmaWxlc3lzdGVtczpudWxsLHN5bmNGU1JlcXVlc3RzOjAsaGFuZGxlRlNFcnJvcjpmdW5jdGlvbihkdCl7aWYoIShkdCBpbnN0YW5jZW9mIEFuLkVycm5vRXJyb3IpKXRocm93IGR0KyIgOiAiK2Z0KCk7cmV0dXJuIG0wKGR0LmVycm5vKX0sbG9va3VwUGF0aDpmdW5jdGlvbihkdCxE''@;'; put 'put ''dCl7aWYoRHQ9RHR8fHt9LCEoZHQ9cTAucmVzb2x2ZShBbi5jd2QoKSxkdCkpKXJldHVybntwYXRoOiIiLG5vZGU6bnVsbH07dmFyIFh0PXtmb2xsb3dfbW91bnQ6ITAscmVjdXJzZV9jb3VudDowfTtmb3IodmFyIHVlIGluIFh0KXZvaWQgMD09PUR0W3VlXSYmKER0W3VlXT1YdFt1ZV0pO2lm''@;'; put 'put ''KER0LnJlY3Vyc2VfY291bnQ+OCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTE9PUCk7Zm9yKHZhciBUdD1xMC5ub3JtYWxpemVBcnJheShkdC5zcGxpdCgiLyIpLmZpbHRlcihmdW5jdGlvbihraSl7cmV0dXJuISFraX0pLCExKSxhPUFuLnJvb3QsYnQ9Ii8iLGFyPTA7YXI8VHQubGVu''@;'; put 'put ''Z3RoO2FyKyspe3ZhciBOaT1hcj09PVR0Lmxlbmd0aC0xO2lmKE5pJiZEdC5wYXJlbnQpYnJlYWs7aWYoYT1Bbi5sb29rdXBOb2RlKGEsVHRbYXJdKSxidD1xMC5qb2luMihidCxUdFthcl0pLEFuLmlzTW91bnRwb2ludChhKSYmKCFOaXx8TmkmJkR0LmZvbGxvd19tb3VudCkmJihhPWEubW91''@;'; put 'put ''bnRlZC5yb290KSwhTml8fER0LmZvbGxvdylmb3IodmFyIFduPTA7QW4uaXNMaW5rKGEubW9kZSk7KXt2YXIgXz1Bbi5yZWFkbGluayhidCk7aWYoYnQ9cTAucmVzb2x2ZShxMC5kaXJuYW1lKGJ0KSxfKSxhPUFuLmxvb2t1cFBhdGgoYnQse3JlY3Vyc2VfY291bnQ6RHQucmVjdXJzZV9jb3Vu''@;'; put 'put ''dH0pLm5vZGUsV24rKz40MCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTE9PUCl9fXJldHVybntwYXRoOmJ0LG5vZGU6YX19LGdldFBhdGg6ZnVuY3Rpb24oZHQpe2Zvcih2YXIgRHQ7Oyl7aWYoQW4uaXNSb290KGR0KSl7dmFyIFh0PWR0Lm1vdW50Lm1vdW50cG9pbnQ7cmV0dXJuIER0''@;'; put 'put ''PyIvIiE9PVh0W1h0Lmxlbmd0aC0xXT9YdCsiLyIrRHQ6WHQrRHQ6WHR9RHQ9RHQ/ZHQubmFtZSsiLyIrRHQ6ZHQubmFtZSxkdD1kdC5wYXJlbnR9fSxoYXNoTmFtZTpmdW5jdGlvbihkdCxEdCl7Zm9yKHZhciBYdD0wLHVlPTA7dWU8RHQubGVuZ3RoO3VlKyspWHQ9KFh0PDw1KS1YdCtEdC5j''@;'; put 'put ''aGFyQ29kZUF0KHVlKXwwO3JldHVybihkdCtYdD4+PjApJUFuLm5hbWVUYWJsZS5sZW5ndGh9LGhhc2hBZGROb2RlOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9QW4uaGFzaE5hbWUoZHQucGFyZW50LmlkLGR0Lm5hbWUpO2R0Lm5hbWVfbmV4dD1Bbi5uYW1lVGFibGVbRHRdLEFuLm5hbWVUYWJsZVtE''@;'; put 'put ''dF09ZHR9LGhhc2hSZW1vdmVOb2RlOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9QW4uaGFzaE5hbWUoZHQucGFyZW50LmlkLGR0Lm5hbWUpO2lmKEFuLm5hbWVUYWJsZVtEdF09PT1kdClBbi5uYW1lVGFibGVbRHRdPWR0Lm5hbWVfbmV4dDtlbHNlIGZvcih2YXIgWHQ9QW4ubmFtZVRhYmxlW0R0XTtY''@;'; put 'put ''dDspe2lmKFh0Lm5hbWVfbmV4dD09PWR0KXtYdC5uYW1lX25leHQ9ZHQubmFtZV9uZXh0O2JyZWFrfVh0PVh0Lm5hbWVfbmV4dH19LGxvb2t1cE5vZGU6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD1Bbi5tYXlMb29rdXAoZHQpO2lmKFh0KXRocm93IG5ldyBBbi5FcnJub0Vycm9yKFh0LGR0KTtm''@;'; put 'put ''b3IodmFyIHVlPUFuLmhhc2hOYW1lKGR0LmlkLER0KSxUdD1Bbi5uYW1lVGFibGVbdWVdO1R0O1R0PVR0Lm5hbWVfbmV4dClpZihUdC5wYXJlbnQuaWQ9PT1kdC5pZCYmVHQubmFtZT09PUR0KXJldHVybiBUdDtyZXR1cm4gQW4ubG9va3VwKGR0LER0KX0sY3JlYXRlTm9kZTpmdW5jdGlvbihk''@;'; put 'put ''dCxEdCxYdCx1ZSl7aWYoIUFuLkZTTm9kZSl7QW4uRlNOb2RlPWZ1bmN0aW9uKGFyLE5pLFduLF8pe2FyfHwoYXI9dGhpcyksdGhpcy5wYXJlbnQ9YXIsdGhpcy5tb3VudD1hci5tb3VudCx0aGlzLm1vdW50ZWQ9bnVsbCx0aGlzLmlkPUFuLm5leHRJbm9kZSsrLHRoaXMubmFtZT1OaSx0aGlz''@;'; put 'put ''Lm1vZGU9V24sdGhpcy5ub2RlX29wcz17fSx0aGlzLnN0cmVhbV9vcHM9e30sdGhpcy5yZGV2PV99LEFuLkZTTm9kZS5wcm90b3R5cGU9e307dmFyIGE9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEFuLkZTTm9kZS5wcm90b3R5cGUse3JlYWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiAz''@;'; put 'put ''NjU9PSgzNjUmdGhpcy5tb2RlKX0sc2V0OmZ1bmN0aW9uKGFyKXthcj90aGlzLm1vZGV8PTM2NTp0aGlzLm1vZGUmPS0zNjZ9fSx3cml0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZhKT09PWF9LHNldDpmdW5jdGlvbihhcil7YXI/dGhpcy5tb2RlfD1hOnRoaXMubW9kZSY9''@;'; put 'put ''fmF9fSxpc0ZvbGRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEFuLmlzRGlyKHRoaXMubW9kZSl9fSxpc0RldmljZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEFuLmlzQ2hyZGV2KHRoaXMubW9kZSl9fX0pfXZhciBidD1uZXcgQW4uRlNOb2RlKGR0LER0LFh0LHVlKTtyZXR1cm4gQW4uaGFz''@;'; put 'put ''aEFkZE5vZGUoYnQpLGJ0fSxkZXN0cm95Tm9kZTpmdW5jdGlvbihkdCl7QW4uaGFzaFJlbW92ZU5vZGUoZHQpfSxpc1Jvb3Q6ZnVuY3Rpb24oZHQpe3JldHVybiBkdD09PWR0LnBhcmVudH0saXNNb3VudHBvaW50OmZ1bmN0aW9uKGR0KXtyZXR1cm4hIWR0Lm1vdW50ZWR9LGlzRmlsZTpmdW5j''@;'; put 'put ''dGlvbihkdCl7cmV0dXJuIDMyNzY4PT0oNjE0NDAmZHQpfSxpc0RpcjpmdW5jdGlvbihkdCl7cmV0dXJuIDE2Mzg0PT0oNjE0NDAmZHQpfSxpc0xpbms6ZnVuY3Rpb24oZHQpe3JldHVybiA0MDk2MD09KDYxNDQwJmR0KX0saXNDaHJkZXY6ZnVuY3Rpb24oZHQpe3JldHVybiA4MTkyPT0oNjE0''@;'; put 'put ''NDAmZHQpfSxpc0Jsa2RldjpmdW5jdGlvbihkdCl7cmV0dXJuIDI0NTc2PT0oNjE0NDAmZHQpfSxpc0ZJRk86ZnVuY3Rpb24oZHQpe3JldHVybiA0MDk2PT0oNjE0NDAmZHQpfSxpc1NvY2tldDpmdW5jdGlvbihkdCl7cmV0dXJuIDQ5MTUyPT0oNDkxNTImZHQpfSxmbGFnTW9kZXM6e3I6MCxy''@;'; put 'put ''czoxMDUyNjcyLCJyKyI6Mix3OjU3Nyx3eDo3MDUseHc6NzA1LCJ3KyI6NTc4LCJ3eCsiOjcwNiwieHcrIjo3MDYsYToxMDg5LGF4OjEyMTcseGE6MTIxNywiYSsiOjEwOTAsImF4KyI6MTIxOCwieGErIjoxMjE4fSxtb2RlU3RyaW5nVG9GbGFnczpmdW5jdGlvbihkdCl7dmFyIER0PUFuLmZs''@;'; put 'put ''YWdNb2Rlc1tkdF07aWYodm9pZCAwPT09RHQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiAiK2R0KTtyZXR1cm4gRHR9LGZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9WyJyIiwidyIsInJ3Il1bMyZkdF07cmV0dXJuIDUxMiZkdCYm''@;'; put 'put ''KER0Kz0idyIpLER0fSxub2RlUGVybWlzc2lvbnM6ZnVuY3Rpb24oZHQsRHQpe3JldHVybiBBbi5pZ25vcmVQZXJtaXNzaW9uc3x8KC0xPT09RHQuaW5kZXhPZigiciIpfHwyOTImZHQubW9kZSkmJigtMT09PUR0LmluZGV4T2YoInciKXx8MTQ2JmR0Lm1vZGUpJiYoLTE9PT1EdC5pbmRleE9m''@;'; put 'put ''KCJ4Iil8fDczJmR0Lm1vZGUpPzA6d2kuRUFDQ0VTfSxtYXlMb29rdXA6ZnVuY3Rpb24oZHQpe3JldHVybiBBbi5ub2RlUGVybWlzc2lvbnMoZHQsIngiKXx8KGR0Lm5vZGVfb3BzLmxvb2t1cD8wOndpLkVBQ0NFUyl9LG1heUNyZWF0ZTpmdW5jdGlvbihkdCxEdCl7dHJ5e3JldHVybiBBbi5s''@;'; put 'put ''b29rdXBOb2RlKGR0LER0KSx3aS5FRVhJU1R9Y2F0Y2godWUpe31yZXR1cm4gQW4ubm9kZVBlcm1pc3Npb25zKGR0LCJ3eCIpfSxtYXlEZWxldGU6ZnVuY3Rpb24oZHQsRHQsWHQpe3ZhciB1ZTt0cnl7dWU9QW4ubG9va3VwTm9kZShkdCxEdCl9Y2F0Y2goYSl7cmV0dXJuIGEuZXJybm99dmFy''@;'; put 'put ''IFR0PUFuLm5vZGVQZXJtaXNzaW9ucyhkdCwid3giKTtpZihUdClyZXR1cm4gVHQ7aWYoWHQpe2lmKCFBbi5pc0Rpcih1ZS5tb2RlKSlyZXR1cm4gd2kuRU5PVERJUjtpZihBbi5pc1Jvb3QodWUpfHxBbi5nZXRQYXRoKHVlKT09PUFuLmN3ZCgpKXJldHVybiB3aS5FQlVTWX1lbHNlIGlmKEFu''@;'; put 'put ''LmlzRGlyKHVlLm1vZGUpKXJldHVybiB3aS5FSVNESVI7cmV0dXJuIDB9LG1heU9wZW46ZnVuY3Rpb24oZHQsRHQpe3JldHVybiBkdD9Bbi5pc0xpbmsoZHQubW9kZSk/d2kuRUxPT1A6QW4uaXNEaXIoZHQubW9kZSkmJigiciIhPT1Bbi5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhEdCl8fDUx''@;'; put 'put ''MiZEdCk/d2kuRUlTRElSOkFuLm5vZGVQZXJtaXNzaW9ucyhkdCxBbi5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhEdCkpOndpLkVOT0VOVH0sTUFYX09QRU5fRkRTOjQwOTYsbmV4dGZkOmZ1bmN0aW9uKGR0LER0KXtEdD1EdHx8QW4uTUFYX09QRU5fRkRTO2Zvcih2YXIgWHQ9ZHQ9ZHR8fDA7''@;'; put 'put ''WHQ8PUR0O1h0KyspaWYoIUFuLnN0cmVhbXNbWHRdKXJldHVybiBYdDt0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTUZJTEUpfSxnZXRTdHJlYW06ZnVuY3Rpb24oZHQpe3JldHVybiBBbi5zdHJlYW1zW2R0XX0sY3JlYXRlU3RyZWFtOmZ1bmN0aW9uKGR0LER0LFh0KXtBbi5GU1N0cmVh''@;'; put 'put ''bXx8KEFuLkZTU3RyZWFtPWZ1bmN0aW9uKCl7fSxBbi5GU1N0cmVhbS5wcm90b3R5cGU9e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQW4uRlNTdHJlYW0ucHJvdG90eXBlLHtvYmplY3Q6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHNldDpmdW5jdGlvbihidCl7dGhpcy5u''@;'; put 'put ''b2RlPWJ0fX0saXNSZWFkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMSE9KDIwOTcxNTUmdGhpcy5mbGFncyl9fSxpc1dyaXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9KDIwOTcxNTUmdGhpcy5mbGFncyl9fSxpc0FwcGVuZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEwMjQmdGhpcy5m''@;'; put 'put ''bGFnc319fSkpO3ZhciB1ZT1uZXcgQW4uRlNTdHJlYW07Zm9yKHZhciBUdCBpbiBkdCl1ZVtUdF09ZHRbVHRdO2R0PXVlO3ZhciBhPUFuLm5leHRmZChEdCxYdCk7cmV0dXJuIGR0LmZkPWEsQW4uc3RyZWFtc1thXT1kdCxkdH0sY2xvc2VTdHJlYW06ZnVuY3Rpb24oZHQpe0FuLnN0cmVhbXNb''@;'; put 'put ''ZHRdPW51bGx9LGNocmRldl9zdHJlYW1fb3BzOntvcGVuOmZ1bmN0aW9uKGR0KXt2YXIgRHQ9QW4uZ2V0RGV2aWNlKGR0Lm5vZGUucmRldik7ZHQuc3RyZWFtX29wcz1EdC5zdHJlYW1fb3BzLGR0LnN0cmVhbV9vcHMub3BlbiYmZHQuc3RyZWFtX29wcy5vcGVuKGR0KX0sbGxzZWVrOmZ1bmN0''@;'; put 'put ''aW9uKCl7dGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVNQSVBFKX19LG1ham9yOmZ1bmN0aW9uKGR0KXtyZXR1cm4gZHQ+Pjh9LG1pbm9yOmZ1bmN0aW9uKGR0KXtyZXR1cm4gMjU1JmR0fSxtYWtlZGV2OmZ1bmN0aW9uKGR0LER0KXtyZXR1cm4gZHQ8PDh8RHR9LHJlZ2lzdGVyRGV2aWNl''@;'; put 'put ''OmZ1bmN0aW9uKGR0LER0KXtBbi5kZXZpY2VzW2R0XT17c3RyZWFtX29wczpEdH19LGdldERldmljZTpmdW5jdGlvbihkdCl7cmV0dXJuIEFuLmRldmljZXNbZHRdfSxnZXRNb3VudHM6ZnVuY3Rpb24oZHQpe2Zvcih2YXIgRHQ9W10sWHQ9W2R0XTtYdC5sZW5ndGg7KXt2YXIgdWU9WHQucG9w''@;'; put 'put ''KCk7RHQucHVzaCh1ZSksWHQucHVzaC5hcHBseShYdCx1ZS5tb3VudHMpfXJldHVybiBEdH0sc3luY2ZzOmZ1bmN0aW9uKGR0LER0KXsiZnVuY3Rpb24iPT10eXBlb2YgZHQmJihEdD1kdCxkdD0hMSksQW4uc3luY0ZTUmVxdWVzdHMrKyxBbi5zeW5jRlNSZXF1ZXN0cz4xJiZjb25zb2xlLmxv''@;'; put 'put ''Zygid2FybmluZzogIitBbi5zeW5jRlNSZXF1ZXN0cysiIEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmsiKTt2YXIgWHQ9QW4uZ2V0TW91bnRzKEFuLnJvb3QubW91bnQpLHVlPTA7ZnVuY3Rpb24gVHQoYnQpe3Jl''@;'; put 'put ''dHVybiBPKEFuLnN5bmNGU1JlcXVlc3RzPjApLEFuLnN5bmNGU1JlcXVlc3RzLS0sRHQoYnQpfWZ1bmN0aW9uIGEoYnQpe2lmKGJ0KXJldHVybiBhLmVycm9yZWQ/dm9pZCAwOihhLmVycm9yZWQ9ITAsVHQoYnQpKTsrK3VlPj1YdC5sZW5ndGgmJlR0KG51bGwpfVh0LmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24oYnQpe2lmKCFidC50eXBlLnN5bmNmcylyZXR1cm4gYShudWxsKTtidC50eXBlLnN5bmNmcyhidCxkdCxhKX0pfSxtb3VudDpmdW5jdGlvbihkdCxEdCxYdCl7dmFyIGEsdWU9Ii8iPT09WHQsVHQ9IVh0O2lmKHVlJiZBbi5yb290KXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVCVVNZ''@;'; put 'put ''KTtpZighdWUmJiFUdCl7dmFyIGJ0PUFuLmxvb2t1cFBhdGgoWHQse2ZvbGxvd19tb3VudDohMX0pO2lmKFh0PWJ0LnBhdGgsQW4uaXNNb3VudHBvaW50KGE9YnQubm9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJVU1kpO2lmKCFBbi5pc0RpcihhLm1vZGUpKXRocm93IG5ldyBB''@;'; put 'put ''bi5FcnJub0Vycm9yKHdpLkVOT1RESVIpfXZhciBhcj17dHlwZTpkdCxvcHRzOkR0LG1vdW50cG9pbnQ6WHQsbW91bnRzOltdfSxOaT1kdC5tb3VudChhcik7cmV0dXJuIE5pLm1vdW50PWFyLGFyLnJvb3Q9TmksdWU/QW4ucm9vdD1OaTphJiYoYS5tb3VudGVkPWFyLGEubW91bnQmJmEubW91''@;'; put 'put ''bnQubW91bnRzLnB1c2goYXIpKSxOaX0sdW5tb3VudDpmdW5jdGlvbihkdCl7dmFyIER0PUFuLmxvb2t1cFBhdGgoZHQse2ZvbGxvd19tb3VudDohMX0pO2lmKCFBbi5pc01vdW50cG9pbnQoRHQubm9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlOVkFMKTt2YXIgWHQ9RHQubm9k''@;'; put 'put ''ZSx1ZT1YdC5tb3VudGVkLFR0PUFuLmdldE1vdW50cyh1ZSk7T2JqZWN0LmtleXMoQW4ubmFtZVRhYmxlKS5mb3JFYWNoKGZ1bmN0aW9uKGJ0KXtmb3IodmFyIGFyPUFuLm5hbWVUYWJsZVtidF07YXI7KXt2YXIgTmk9YXIubmFtZV9uZXh0Oy0xIT09VHQuaW5kZXhPZihhci5tb3VudCkmJkFu''@;'; put 'put ''LmRlc3Ryb3lOb2RlKGFyKSxhcj1OaX19KSxYdC5tb3VudGVkPW51bGw7dmFyIGE9WHQubW91bnQubW91bnRzLmluZGV4T2YodWUpO08oLTEhPT1hKSxYdC5tb3VudC5tb3VudHMuc3BsaWNlKGEsMSl9LGxvb2t1cDpmdW5jdGlvbihkdCxEdCl7cmV0dXJuIGR0Lm5vZGVfb3BzLmxvb2t1cChk''@;'; put 'put ''dCxEdCl9LG1rbm9kOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgVHQ9QW4ubG9va3VwUGF0aChkdCx7cGFyZW50OiEwfSkubm9kZSxhPXEwLmJhc2VuYW1lKGR0KTtpZighYXx8Ii4iPT09YXx8Ii4uIj09PWEpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlOVkFMKTt2YXIgYnQ9QW4ubWF5''@;'; put 'put ''Q3JlYXRlKFR0LGEpO2lmKGJ0KXRocm93IG5ldyBBbi5FcnJub0Vycm9yKGJ0KTtpZighVHQubm9kZV9vcHMubWtub2QpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVBFUk0pO3JldHVybiBUdC5ub2RlX29wcy5ta25vZChUdCxhLER0LFh0KX0sY3JlYXRlOmZ1bmN0aW9uKGR0LER0KXty''@;'; put 'put ''ZXR1cm4gRHQ9dm9pZCAwIT09RHQ/RHQ6NDM4LER0Jj00MDk1LEFuLm1rbm9kKGR0LER0fD0zMjc2OCwwKX0sbWtkaXI6ZnVuY3Rpb24oZHQsRHQpe3JldHVybiBEdD12b2lkIDAhPT1EdD9EdDo1MTEsRHQmPTEwMjMsQW4ubWtub2QoZHQsRHR8PTE2Mzg0LDApfSxta2RpclRyZWU6ZnVuY3Rp''@;'; put 'put ''b24oZHQsRHQpe2Zvcih2YXIgWHQ9ZHQuc3BsaXQoIi8iKSx1ZT0iIixUdD0wO1R0PFh0Lmxlbmd0aDsrK1R0KWlmKFh0W1R0XSl7dWUrPSIvIitYdFtUdF07dHJ5e0FuLm1rZGlyKHVlLER0KX1jYXRjaChhKXtpZihhLmVycm5vIT13aS5FRVhJU1QpdGhyb3cgYX19fSxta2RldjpmdW5jdGlv''@;'; put 'put ''bihkdCxEdCxYdCl7cmV0dXJuIHZvaWQgMD09PVh0JiYoWHQ9RHQsRHQ9NDM4KSxBbi5ta25vZChkdCxEdHw9ODE5MixYdCl9LHN5bWxpbms6ZnVuY3Rpb24oZHQsRHQpe2lmKCFxMC5yZXNvbHZlKGR0KSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTk9FTlQpO3ZhciB1ZT1Bbi5sb29r''@;'; put 'put ''dXBQYXRoKER0LHtwYXJlbnQ6ITB9KS5ub2RlO2lmKCF1ZSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTk9FTlQpO3ZhciBUdD1xMC5iYXNlbmFtZShEdCksYT1Bbi5tYXlDcmVhdGUodWUsVHQpO2lmKGEpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3IoYSk7aWYoIXVlLm5vZGVfb3BzLnN5''@;'; put 'put ''bWxpbmspdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVBFUk0pO3JldHVybiB1ZS5ub2RlX29wcy5zeW1saW5rKHVlLFR0LGR0KX0scmVuYW1lOmZ1bmN0aW9uKGR0LER0KXt2YXIgYXIsTmksWHQ9cTAuZGlybmFtZShkdCksdWU9cTAuZGlybmFtZShEdCksVHQ9cTAuYmFzZW5hbWUoZHQp''@;'; put 'put ''LGE9cTAuYmFzZW5hbWUoRHQpO3RyeXthcj1Bbi5sb29rdXBQYXRoKGR0LHtwYXJlbnQ6ITB9KS5ub2RlLE5pPUFuLmxvb2t1cFBhdGgoRHQse3BhcmVudDohMH0pLm5vZGV9Y2F0Y2gob2Upe3Rocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVCVVNZKX1pZighYXJ8fCFOaSl0aHJvdyBuZXcg''@;'; put 'put ''QW4uRXJybm9FcnJvcih3aS5FTk9FTlQpO2lmKGFyLm1vdW50IT09TmkubW91bnQpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVhERVYpO3ZhciB3byxXbj1Bbi5sb29rdXBOb2RlKGFyLFR0KSxfPXEwLnJlbGF0aXZlKGR0LHVlKTtpZigiLiIhPT1fLmNoYXJBdCgwKSl0aHJvdyBuZXcg''@;'; put 'put ''QW4uRXJybm9FcnJvcih3aS5FSU5WQUwpO2lmKCIuIiE9PShfPXEwLnJlbGF0aXZlKER0LFh0KSkuY2hhckF0KDApKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT1RFTVBUWSk7dHJ5e3dvPUFuLmxvb2t1cE5vZGUoTmksYSl9Y2F0Y2gob2Upe31pZihXbiE9PXdvKXt2YXIga2k9QW4u''@;'; put 'put ''aXNEaXIoV24ubW9kZSksJG89QW4ubWF5RGVsZXRlKGFyLFR0LGtpKTtpZigkbyl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcigkbyk7aWYoJG89d28/QW4ubWF5RGVsZXRlKE5pLGEsa2kpOkFuLm1heUNyZWF0ZShOaSxhKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcigkbyk7aWYoIWFyLm5vZGVf''@;'; put 'put ''b3BzLnJlbmFtZSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FUEVSTSk7aWYoQW4uaXNNb3VudHBvaW50KFduKXx8d28mJkFuLmlzTW91bnRwb2ludCh3bykpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJVU1kpO2lmKE5pIT09YXImJigkbz1Bbi5ub2RlUGVybWlzc2lvbnMoYXIs''@;'; put 'put ''InciKSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3IoJG8pO3RyeXtBbi50cmFja2luZ0RlbGVnYXRlLndpbGxNb3ZlUGF0aCYmQW4udHJhY2tpbmdEZWxlZ2F0ZS53aWxsTW92ZVBhdGgoZHQsRHQpfWNhdGNoKG9lKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbE1vdmVQ''@;'; put 'put ''YXRoJ10oJyIrZHQrIicsICciK0R0KyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrb2UubWVzc2FnZSl9QW4uaGFzaFJlbW92ZU5vZGUoV24pO3RyeXthci5ub2RlX29wcy5yZW5hbWUoV24sTmksYSl9Y2F0Y2gob2Upe3Rocm93IG9lfWZpbmFsbHl7QW4uaGFzaEFkZE5vZGUoV24pfXRyeXtB''@;'; put 'put ''bi50cmFja2luZ0RlbGVnYXRlLm9uTW92ZVBhdGgmJkFuLnRyYWNraW5nRGVsZWdhdGUub25Nb3ZlUGF0aChkdCxEdCl9Y2F0Y2gob2Upe2NvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWydvbk1vdmVQYXRoJ10oJyIrZHQrIicsICciK0R0KyInKSB0aHJldyBhbiBleGNlcHRpb246''@;'; put 'put ''ICIrb2UubWVzc2FnZSl9fX0scm1kaXI6ZnVuY3Rpb24oZHQpe3ZhciBYdD1Bbi5sb29rdXBQYXRoKGR0LHtwYXJlbnQ6ITB9KS5ub2RlLHVlPXEwLmJhc2VuYW1lKGR0KSxUdD1Bbi5sb29rdXBOb2RlKFh0LHVlKSxhPUFuLm1heURlbGV0ZShYdCx1ZSwhMCk7aWYoYSl0aHJvdyBuZXcgQW4u''@;'; put 'put ''RXJybm9FcnJvcihhKTtpZighWHQubm9kZV9vcHMucm1kaXIpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVBFUk0pO2lmKEFuLmlzTW91bnRwb2ludChUdCkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJVU1kpO3RyeXtBbi50cmFja2luZ0RlbGVnYXRlLndpbGxEZWxldGVQYXRo''@;'; put 'put ''JiZBbi50cmFja2luZ0RlbGVnYXRlLndpbGxEZWxldGVQYXRoKGR0KX1jYXRjaChidCl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJyIrZHQrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitidC5tZXNzYWdlKX1YdC5ub2RlX29wcy5ybWRpcihY''@;'; put 'put ''dCx1ZSksQW4uZGVzdHJveU5vZGUoVHQpO3RyeXtBbi50cmFja2luZ0RlbGVnYXRlLm9uRGVsZXRlUGF0aCYmQW4udHJhY2tpbmdEZWxlZ2F0ZS5vbkRlbGV0ZVBhdGgoZHQpfWNhdGNoKGJ0KXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIrZHQr''@;'; put 'put ''IicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitidC5tZXNzYWdlKX19LHJlYWRkaXI6ZnVuY3Rpb24oZHQpe3ZhciBYdD1Bbi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6ITB9KS5ub2RlO2lmKCFYdC5ub2RlX29wcy5yZWFkZGlyKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT1RESVIpO3Jl''@;'; put 'put ''dHVybiBYdC5ub2RlX29wcy5yZWFkZGlyKFh0KX0sdW5saW5rOmZ1bmN0aW9uKGR0KXt2YXIgWHQ9QW4ubG9va3VwUGF0aChkdCx7cGFyZW50OiEwfSkubm9kZSx1ZT1xMC5iYXNlbmFtZShkdCksVHQ9QW4ubG9va3VwTm9kZShYdCx1ZSksYT1Bbi5tYXlEZWxldGUoWHQsdWUsITEpO2lmKGEp''@;'; put 'put ''dGhyb3cgbmV3IEFuLkVycm5vRXJyb3IoYSk7aWYoIVh0Lm5vZGVfb3BzLnVubGluayl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FUEVSTSk7aWYoQW4uaXNNb3VudHBvaW50KFR0KSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FQlVTWSk7dHJ5e0FuLnRyYWNraW5nRGVsZWdhdGUu''@;'; put 'put ''d2lsbERlbGV0ZVBhdGgmJkFuLnRyYWNraW5nRGVsZWdhdGUud2lsbERlbGV0ZVBhdGgoZHQpfWNhdGNoKGJ0KXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitkdCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK2J0Lm1lc3NhZ2UpfVh0Lm5v''@;'; put 'put ''ZGVfb3BzLnVubGluayhYdCx1ZSksQW4uZGVzdHJveU5vZGUoVHQpO3RyeXtBbi50cmFja2luZ0RlbGVnYXRlLm9uRGVsZXRlUGF0aCYmQW4udHJhY2tpbmdEZWxlZ2F0ZS5vbkRlbGV0ZVBhdGgoZHQpfWNhdGNoKGJ0KXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxl''@;'; put 'put ''dGVQYXRoJ10oJyIrZHQrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitidC5tZXNzYWdlKX19LHJlYWRsaW5rOmZ1bmN0aW9uKGR0KXt2YXIgWHQ9QW4ubG9va3VwUGF0aChkdCkubm9kZTtpZighWHQpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRU5PRU5UKTtpZighWHQubm9kZV9vcHMu''@;'; put 'put ''cmVhZGxpbmspdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlOVkFMKTtyZXR1cm4gcTAucmVzb2x2ZShBbi5nZXRQYXRoKFh0LnBhcmVudCksWHQubm9kZV9vcHMucmVhZGxpbmsoWHQpKX0sc3RhdDpmdW5jdGlvbihkdCxEdCl7dmFyIHVlPUFuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzoh''@;'; put 'put ''RHR9KS5ub2RlO2lmKCF1ZSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTk9FTlQpO2lmKCF1ZS5ub2RlX29wcy5nZXRhdHRyKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVQRVJNKTtyZXR1cm4gdWUubm9kZV9vcHMuZ2V0YXR0cih1ZSl9LGxzdGF0OmZ1bmN0aW9uKGR0KXtyZXR1''@;'; put 'put ''cm4gQW4uc3RhdChkdCwhMCl9LGNobW9kOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU7aWYoISh1ZT0ic3RyaW5nIj09dHlwZW9mIGR0P0FuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohWHR9KS5ub2RlOmR0KS5ub2RlX29wcy5zZXRhdHRyKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVQ''@;'; put 'put ''RVJNKTt1ZS5ub2RlX29wcy5zZXRhdHRyKHVlLHttb2RlOjQwOTUmRHR8LTQwOTYmdWUubW9kZSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2htb2Q6ZnVuY3Rpb24oZHQsRHQpe0FuLmNobW9kKGR0LER0LCEwKX0sZmNobW9kOmZ1bmN0aW9uKGR0LER0KXt2YXIgWHQ9QW4uZ2V0U3RyZWFt''@;'; put 'put ''KGR0KTtpZighWHQpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJBREYpO0FuLmNobW9kKFh0Lm5vZGUsRHQpfSxjaG93bjpmdW5jdGlvbihkdCxEdCxYdCx1ZSl7dmFyIFR0O2lmKCEoVHQ9InN0cmluZyI9PXR5cGVvZiBkdD9Bbi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6IXVlfSkubm9k''@;'; put 'put ''ZTpkdCkubm9kZV9vcHMuc2V0YXR0cil0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FUEVSTSk7VHQubm9kZV9vcHMuc2V0YXR0cihUdCx7dGltZXN0YW1wOkRhdGUubm93KCl9KX0sbGNob3duOmZ1bmN0aW9uKGR0LER0LFh0KXtBbi5jaG93bihkdCxEdCxYdCwhMCl9LGZjaG93bjpmdW5j''@;'; put 'put ''dGlvbihkdCxEdCxYdCl7dmFyIHVlPUFuLmdldFN0cmVhbShkdCk7aWYoIXVlKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVCQURGKTtBbi5jaG93bih1ZS5ub2RlLER0LFh0KX0sdHJ1bmNhdGU6ZnVuY3Rpb24oZHQsRHQpe2lmKER0PDApdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2ku''@;'; put 'put ''RUlOVkFMKTt2YXIgWHQ7aWYoIShYdD0ic3RyaW5nIj09dHlwZW9mIGR0P0FuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohMH0pLm5vZGU6ZHQpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRVBFUk0pO2lmKEFuLmlzRGlyKFh0Lm1vZGUpKXRocm93IG5ldyBB''@;'; put 'put ''bi5FcnJub0Vycm9yKHdpLkVJU0RJUik7aWYoIUFuLmlzRmlsZShYdC5tb2RlKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU5WQUwpO3ZhciBUdD1Bbi5ub2RlUGVybWlzc2lvbnMoWHQsInciKTtpZihUdCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcihUdCk7WHQubm9kZV9vcHMuc2V0''@;'; put 'put ''YXR0cihYdCx7c2l6ZTpEdCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxmdHJ1bmNhdGU6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD1Bbi5nZXRTdHJlYW0oZHQpO2lmKCFYdCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FQkFERik7aWYoMD09KDIwOTcxNTUmWHQuZmxhZ3MpKXRocm93IG5l''@;'; put 'put ''dyBBbi5FcnJub0Vycm9yKHdpLkVJTlZBTCk7QW4udHJ1bmNhdGUoWHQubm9kZSxEdCl9LHV0aW1lOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgVHQ9QW4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiEwfSkubm9kZTtUdC5ub2RlX29wcy5zZXRhdHRyKFR0LHt0aW1lc3RhbXA6TWF0aC5tYXgoRHQs''@;'; put 'put ''WHQpfSl9LG9wZW46ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe2lmKCIiPT09ZHQpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRU5PRU5UKTt2YXIgYTtpZihYdD12b2lkIDA9PT1YdD80Mzg6WHQsWHQ9NjQmKER0PSJzdHJpbmciPT10eXBlb2YgRHQ/QW4ubW9kZVN0cmluZ1RvRmxhZ3Mo''@;'; put 'put ''RHQpOkR0KT80MDk1Jlh0fDMyNzY4OjAsIm9iamVjdCI9PXR5cGVvZiBkdClhPWR0O2Vsc2V7ZHQ9cTAubm9ybWFsaXplKGR0KTt0cnl7YT1Bbi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6ISgxMzEwNzImRHQpfSkubm9kZX1jYXRjaCh3byl7fX12YXIgYXI9ITE7aWYoNjQmRHQpaWYoYSl7aWYo''@;'; put 'put ''MTI4JkR0KXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVFWElTVCl9ZWxzZSBhPUFuLm1rbm9kKGR0LFh0LDApLGFyPSEwO2lmKCFhKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT0VOVCk7aWYoQW4uaXNDaHJkZXYoYS5tb2RlKSYmKER0Jj0tNTEzKSw2NTUzNiZEdCYmIUFuLmlz''@;'; put 'put ''RGlyKGEubW9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRU5PVERJUik7aWYoIWFyKXt2YXIgTmk9QW4ubWF5T3BlbihhLER0KTtpZihOaSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcihOaSl9NTEyJkR0JiZBbi50cnVuY2F0ZShhLDApLER0Jj0tNjQxO3ZhciBXbj1Bbi5jcmVhdGVT''@;'; put 'put ''dHJlYW0oe25vZGU6YSxwYXRoOkFuLmdldFBhdGgoYSksZmxhZ3M6RHQsc2Vla2FibGU6ITAscG9zaXRpb246MCxzdHJlYW1fb3BzOmEuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjohMX0sdWUsVHQpO1duLnN0cmVhbV9vcHMub3BlbiYmV24uc3RyZWFtX29wcy5vcGVuKFduKSxaLmxv''@;'; put 'put ''Z1JlYWRGaWxlcyYmISgxJkR0KSYmKEFuLnJlYWRGaWxlc3x8KEFuLnJlYWRGaWxlcz17fSksZHQgaW4gQW4ucmVhZEZpbGVzfHwoQW4ucmVhZEZpbGVzW2R0XT0xLFoucHJpbnRFcnIoInJlYWQgZmlsZTogIitkdCkpKTt0cnl7aWYoQW4udHJhY2tpbmdEZWxlZ2F0ZS5vbk9wZW5GaWxlKXt2''@;'; put 'put ''YXIgXz0wOzEhPSgyMDk3MTU1JkR0KSYmKF98PUFuLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEKSwwIT0oMjA5NzE1NSZEdCkmJihffD1Bbi50cmFja2luZy5vcGVuRmxhZ3MuV1JJVEUpLEFuLnRyYWNraW5nRGVsZWdhdGUub25PcGVuRmlsZShkdCxfKX19Y2F0Y2god28pe2NvbnNvbGUubG9n''@;'; put 'put ''KCJGUy50cmFja2luZ0RlbGVnYXRlWydvbk9wZW5GaWxlJ10oJyIrZHQrIicsIGZsYWdzKSB0aHJldyBhbiBleGNlcHRpb246ICIrd28ubWVzc2FnZSl9cmV0dXJuIFdufSxjbG9zZTpmdW5jdGlvbihkdCl7ZHQuZ2V0ZGVudHMmJihkdC5nZXRkZW50cz1udWxsKTt0cnl7ZHQuc3RyZWFtX29w''@;'; put 'put ''cy5jbG9zZSYmZHQuc3RyZWFtX29wcy5jbG9zZShkdCl9Y2F0Y2goRHQpe3Rocm93IER0fWZpbmFsbHl7QW4uY2xvc2VTdHJlYW0oZHQuZmQpfX0sbGxzZWVrOmZ1bmN0aW9uKGR0LER0LFh0KXtpZighZHQuc2Vla2FibGV8fCFkdC5zdHJlYW1fb3BzLmxsc2Vlayl0aHJvdyBuZXcgQW4uRXJy''@;'; put 'put ''bm9FcnJvcih3aS5FU1BJUEUpO3JldHVybiBkdC5wb3NpdGlvbj1kdC5zdHJlYW1fb3BzLmxsc2VlayhkdCxEdCxYdCksZHQudW5nb3R0ZW49W10sZHQucG9zaXRpb259LHJlYWQ6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe2lmKHVlPDB8fFR0PDApdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Io''@;'; put 'put ''d2kuRUlOVkFMKTtpZigxPT0oMjA5NzE1NSZkdC5mbGFncykpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJBREYpO2lmKEFuLmlzRGlyKGR0Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlTRElSKTtpZighZHQuc3RyZWFtX29wcy5yZWFkKXRocm93IG5ldyBB''@;'; put 'put ''bi5FcnJub0Vycm9yKHdpLkVJTlZBTCk7dmFyIGE9dm9pZCAwIT09VHQ7aWYoYSl7aWYoIWR0LnNlZWthYmxlKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVTUElQRSl9ZWxzZSBUdD1kdC5wb3NpdGlvbjt2YXIgYnQ9ZHQuc3RyZWFtX29wcy5yZWFkKGR0LER0LFh0LHVlLFR0KTtyZXR1''@;'; put 'put ''cm4gYXx8KGR0LnBvc2l0aW9uKz1idCksYnR9LHdyaXRlOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0LGEpe2lmKHVlPDB8fFR0PDApdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlOVkFMKTtpZigwPT0oMjA5NzE1NSZkdC5mbGFncykpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJB''@;'; put 'put ''REYpO2lmKEFuLmlzRGlyKGR0Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlTRElSKTtpZighZHQuc3RyZWFtX29wcy53cml0ZSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU5WQUwpOzEwMjQmZHQuZmxhZ3MmJkFuLmxsc2VlayhkdCwwLDIpO3ZhciBidD12''@;'; put 'put ''b2lkIDAhPT1UdDtpZihidCl7aWYoIWR0LnNlZWthYmxlKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVTUElQRSl9ZWxzZSBUdD1kdC5wb3NpdGlvbjt2YXIgYXI9ZHQuc3RyZWFtX29wcy53cml0ZShkdCxEdCxYdCx1ZSxUdCxhKTtidHx8KGR0LnBvc2l0aW9uKz1hcik7dHJ5e2R0LnBh''@;'; put 'put ''dGgmJkFuLnRyYWNraW5nRGVsZWdhdGUub25Xcml0ZVRvRmlsZSYmQW4udHJhY2tpbmdEZWxlZ2F0ZS5vbldyaXRlVG9GaWxlKGR0LnBhdGgpfWNhdGNoKE5pKXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Xcml0ZVRvRmlsZSddKCciK3BhdGgrIicpIHRocmV3IGFuIGV4''@;'; put 'put ''Y2VwdGlvbjogIitOaS5tZXNzYWdlKX1yZXR1cm4gYXJ9LGFsbG9jYXRlOmZ1bmN0aW9uKGR0LER0LFh0KXtpZihEdDwwfHxYdDw9MCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU5WQUwpO2lmKDA9PSgyMDk3MTU1JmR0LmZsYWdzKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5F''@;'; put 'put ''QkFERik7aWYoIUFuLmlzRmlsZShkdC5ub2RlLm1vZGUpJiYhQW4uaXNEaXIoZHQubm9kZS5tb2RlKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTk9ERVYpO2lmKCFkdC5zdHJlYW1fb3BzLmFsbG9jYXRlKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVPUE5PVFNVUFApO2R0LnN0''@;'; put 'put ''cmVhbV9vcHMuYWxsb2NhdGUoZHQsRHQsWHQpfSxtbWFwOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0LGEsYnQpe2lmKDE9PSgyMDk3MTU1JmR0LmZsYWdzKSl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FQUNDRVMpO2lmKCFkdC5zdHJlYW1fb3BzLm1tYXApdGhyb3cgbmV3IEFuLkVycm5v''@;'; put 'put ''RXJyb3Iod2kuRU5PREVWKTtyZXR1cm4gZHQuc3RyZWFtX29wcy5tbWFwKGR0LER0LFh0LHVlLFR0LGEsYnQpfSxtc3luYzpmdW5jdGlvbihkdCxEdCxYdCx1ZSxUdCl7cmV0dXJuIGR0JiZkdC5zdHJlYW1fb3BzLm1zeW5jP2R0LnN0cmVhbV9vcHMubXN5bmMoZHQsRHQsWHQsdWUsVHQpOjB9''@;'; put 'put ''LG11bm1hcDpmdW5jdGlvbihkdCl7cmV0dXJuIDB9LGlvY3RsOmZ1bmN0aW9uKGR0LER0LFh0KXtpZighZHQuc3RyZWFtX29wcy5pb2N0bCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FTk9UVFkpO3JldHVybiBkdC5zdHJlYW1fb3BzLmlvY3RsKGR0LER0LFh0KX0scmVhZEZpbGU6ZnVu''@;'; put 'put ''Y3Rpb24oZHQsRHQpe2lmKChEdD1EdHx8e30pLmZsYWdzPUR0LmZsYWdzfHwiciIsRHQuZW5jb2Rpbmc9RHQuZW5jb2Rpbmd8fCJiaW5hcnkiLCJ1dGY4IiE9PUR0LmVuY29kaW5nJiYiYmluYXJ5IiE9PUR0LmVuY29kaW5nKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBl''@;'; put 'put ''ICInK0R0LmVuY29kaW5nKyciJyk7dmFyIFh0LHVlPUFuLm9wZW4oZHQsRHQuZmxhZ3MpLGE9QW4uc3RhdChkdCkuc2l6ZSxidD1uZXcgVWludDhBcnJheShhKTtyZXR1cm4gQW4ucmVhZCh1ZSxidCwwLGEsMCksInV0ZjgiPT09RHQuZW5jb2Rpbmc/WHQ9Q2UoYnQsMCk6ImJpbmFyeSI9PT1E''@;'; put 'put ''dC5lbmNvZGluZyYmKFh0PWJ0KSxBbi5jbG9zZSh1ZSksWHR9LHdyaXRlRmlsZTpmdW5jdGlvbihkdCxEdCxYdCl7KFh0PVh0fHx7fSkuZmxhZ3M9WHQuZmxhZ3N8fCJ3Ijt2YXIgdWU9QW4ub3BlbihkdCxYdC5mbGFncyxYdC5tb2RlKTtpZigic3RyaW5nIj09dHlwZW9mIER0KXt2YXIgVHQ9''@;'; put 'put ''bmV3IFVpbnQ4QXJyYXkoJGUoRHQpKzEpLGE9UGUoRHQsVHQsMCxUdC5sZW5ndGgpO0FuLndyaXRlKHVlLFR0LDAsYSx2b2lkIDAsWHQuY2FuT3duKX1lbHNle2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcoRHQpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7QW4ud3Jp''@;'; put 'put ''dGUodWUsRHQsMCxEdC5ieXRlTGVuZ3RoLHZvaWQgMCxYdC5jYW5Pd24pfUFuLmNsb3NlKHVlKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIEFuLmN1cnJlbnRQYXRofSxjaGRpcjpmdW5jdGlvbihkdCl7dmFyIER0PUFuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohMH0pO2lmKG51bGw9PT1EdC5u''@;'; put 'put ''b2RlKXRocm93IG5ldyBBbi5FcnJub0Vycm9yKHdpLkVOT0VOVCk7aWYoIUFuLmlzRGlyKER0Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRU5PVERJUik7dmFyIFh0PUFuLm5vZGVQZXJtaXNzaW9ucyhEdC5ub2RlLCJ4Iik7aWYoWHQpdGhyb3cgbmV3IEFuLkVycm5v''@;'; put 'put ''RXJyb3IoWHQpO0FuLmN1cnJlbnRQYXRoPUR0LnBhdGh9LGNyZWF0ZURlZmF1bHREaXJlY3RvcmllczpmdW5jdGlvbigpe0FuLm1rZGlyKCIvdG1wIiksQW4ubWtkaXIoIi9ob21lIiksQW4ubWtkaXIoIi9ob21lL3dlYl91c2VyIil9LGNyZWF0ZURlZmF1bHREZXZpY2VzOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIGR0O2lmKEFuLm1rZGlyKCIvZGV2IiksQW4ucmVnaXN0ZXJEZXZpY2UoQW4ubWFrZWRldigxLDMpLHtyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LHdyaXRlOmZ1bmN0aW9uKFh0LHVlLFR0LGEsYnQpe3JldHVybiBhfX0pLEFuLm1rZGV2KCIvZGV2L251bGwiLEFuLm1ha2VkZXYoMSwz''@;'; put 'put ''KSksU3MucmVnaXN0ZXIoQW4ubWFrZWRldig1LDApLFNzLmRlZmF1bHRfdHR5X29wcyksU3MucmVnaXN0ZXIoQW4ubWFrZWRldig2LDApLFNzLmRlZmF1bHRfdHR5MV9vcHMpLEFuLm1rZGV2KCIvZGV2L3R0eSIsQW4ubWFrZWRldig1LDApKSxBbi5ta2RldigiL2Rldi90dHkxIixBbi5tYWtl''@;'; put 'put ''ZGV2KDYsMCkpLCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvKXt2YXIgRHQ9bmV3IFVpbnQ4QXJyYXkoMSk7ZHQ9ZnVuY3Rpb24oKXtyZXR1cm4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhEdCksRHRbMF19fWVsc2UgZHQ9Tj9mdW5jdGlvbigpe3JldHVybiBMKDQxMzQ4KS5yYW5kb21CeXRl''@;'; put 'put ''cygxKVswXX06ZnVuY3Rpb24oKXtyZXR1cm4gMjU2Kk1hdGgucmFuZG9tKCl8MH07QW4uY3JlYXRlRGV2aWNlKCIvZGV2IiwicmFuZG9tIixkdCksQW4uY3JlYXRlRGV2aWNlKCIvZGV2IiwidXJhbmRvbSIsZHQpLEFuLm1rZGlyKCIvZGV2L3NobSIpLEFuLm1rZGlyKCIvZGV2L3NobS90bXAi''@;'; put 'put ''KX0sY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzOmZ1bmN0aW9uKCl7QW4ubWtkaXIoIi9wcm9jIiksQW4ubWtkaXIoIi9wcm9jL3NlbGYiKSxBbi5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpLEFuLm1vdW50KHttb3VudDpmdW5jdGlvbigpe3ZhciBkdD1Bbi5jcmVhdGVOb2RlKCIvcHJvYy9zZWxm''@;'; put 'put ''IiwiZmQiLDE2ODk1LDczKTtyZXR1cm4gZHQubm9kZV9vcHM9e2xvb2t1cDpmdW5jdGlvbihEdCxYdCl7dmFyIFR0PUFuLmdldFN0cmVhbSgrWHQpO2lmKCFUdCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FQkFERik7dmFyIGE9e3BhcmVudDpudWxsLG1vdW50Onttb3VudHBvaW50OiJm''@;'; put 'put ''YWtlIn0sbm9kZV9vcHM6e3JlYWRsaW5rOmZ1bmN0aW9uKCl7cmV0dXJuIFR0LnBhdGh9fX07cmV0dXJuIGEucGFyZW50PWEsYX19LGR0fX0se30sIi9wcm9jL3NlbGYvZmQiKX0sY3JlYXRlU3RhbmRhcmRTdHJlYW1zOmZ1bmN0aW9uKCl7Wi5zdGRpbj9Bbi5jcmVhdGVEZXZpY2UoIi9kZXYi''@;'; put 'put ''LCJzdGRpbiIsWi5zdGRpbik6QW4uc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZGluIiksWi5zdGRvdXQ/QW4uY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3Rkb3V0IixudWxsLFouc3Rkb3V0KTpBbi5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0IiksWi5zdGRlcnI/QW4uY3JlYXRl''@;'; put 'put ''RGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLFouc3RkZXJyKTpBbi5zeW1saW5rKCIvZGV2L3R0eTEiLCIvZGV2L3N0ZGVyciIpO3ZhciBkdD1Bbi5vcGVuKCIvZGV2L3N0ZGluIiwiciIpO08oMD09PWR0LmZkLCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkaW4gKCIrZHQuZmQrIikiKTt2YXIg''@;'; put 'put ''RHQ9QW4ub3BlbigiL2Rldi9zdGRvdXQiLCJ3Iik7TygxPT09RHQuZmQsImludmFsaWQgaGFuZGxlIGZvciBzdGRvdXQgKCIrRHQuZmQrIikiKTt2YXIgWHQ9QW4ub3BlbigiL2Rldi9zdGRlcnIiLCJ3Iik7TygyPT09WHQuZmQsImludmFsaWQgaGFuZGxlIGZvciBzdGRlcnIgKCIrWHQuZmQr''@;'; put 'put ''IikiKX0sZW5zdXJlRXJybm9FcnJvcjpmdW5jdGlvbigpe0FuLkVycm5vRXJyb3J8fChBbi5FcnJub0Vycm9yPWZ1bmN0aW9uKER0LFh0KXt0aGlzLm5vZGU9WHQsdGhpcy5zZXRFcnJubz1mdW5jdGlvbih1ZSl7Zm9yKHZhciBUdCBpbiB0aGlzLmVycm5vPXVlLHdpKWlmKHdpW1R0XT09PXVl''@;'; put 'put ''KXt0aGlzLmNvZGU9VHQ7YnJlYWt9fSx0aGlzLnNldEVycm5vKER0KSx0aGlzLm1lc3NhZ2U9SXVbRHRdLHRoaXMuc3RhY2smJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzdGFjayIse3ZhbHVlOihuZXcgRXJyb3IpLnN0YWNrLHdyaXRhYmxlOiEwfSl9LEFuLkVycm5vRXJyb3IucHJv''@;'; put 'put ''dG90eXBlPW5ldyBFcnJvcixBbi5FcnJub0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1Bbi5FcnJub0Vycm9yLFt3aS5FTk9FTlRdLmZvckVhY2goZnVuY3Rpb24oZHQpe0FuLmdlbmVyaWNFcnJvcnNbZHRdPW5ldyBBbi5FcnJub0Vycm9yKGR0KSxBbi5nZW5lcmljRXJyb3JzW2R0XS5z''@;'; put 'put ''dGFjaz0iPGdlbmVyaWMgZXJyb3IsIG5vIHN0YWNrPiJ9KSl9LHN0YXRpY0luaXQ6ZnVuY3Rpb24oKXtBbi5lbnN1cmVFcnJub0Vycm9yKCksQW4ubmFtZVRhYmxlPW5ldyBBcnJheSg0MDk2KSxBbi5tb3VudChXMCx7fSwiLyIpLEFuLmNyZWF0ZURlZmF1bHREaXJlY3RvcmllcygpLEFuLmNy''@;'; put 'put ''ZWF0ZURlZmF1bHREZXZpY2VzKCksQW4uY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCksQW4uZmlsZXN5c3RlbXM9e01FTUZTOlcwLElEQkZTOnFvLE5PREVGUzpLYSxXT1JLRVJGUzpzb319LGluaXQ6ZnVuY3Rpb24oZHQsRHQsWHQpe08oIUFuLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQg''@;'; put 'put ''d2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSki''@;'; put 'put ''KSxBbi5pbml0LmluaXRpYWxpemVkPSEwLEFuLmVuc3VyZUVycm5vRXJyb3IoKSxaLnN0ZGluPWR0fHxaLnN0ZGluLFouc3Rkb3V0PUR0fHxaLnN0ZG91dCxaLnN0ZGVycj1YdHx8Wi5zdGRlcnIsQW4uY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9LHF1aXQ6ZnVuY3Rpb24oKXtBbi5pbml0Lmlu''@;'; put 'put ''aXRpYWxpemVkPSExO3ZhciBkdD1aLl9mZmx1c2g7ZHQmJmR0KDApO2Zvcih2YXIgRHQ9MDtEdDxBbi5zdHJlYW1zLmxlbmd0aDtEdCsrKXt2YXIgWHQ9QW4uc3RyZWFtc1tEdF07IVh0fHxBbi5jbG9zZShYdCl9fSxnZXRNb2RlOmZ1bmN0aW9uKGR0LER0KXt2YXIgWHQ9MDtyZXR1cm4gZHQm''@;'; put 'put ''JihYdHw9MzY1KSxEdCYmKFh0fD0xNDYpLFh0fSxqb2luUGF0aDpmdW5jdGlvbihkdCxEdCl7dmFyIFh0PXEwLmpvaW4uYXBwbHkobnVsbCxkdCk7cmV0dXJuIER0JiYiLyI9PVh0WzBdJiYoWHQ9WHQuc3Vic3RyKDEpKSxYdH0sYWJzb2x1dGVQYXRoOmZ1bmN0aW9uKGR0LER0KXtyZXR1cm4g''@;'; put 'put ''cTAucmVzb2x2ZShEdCxkdCl9LHN0YW5kYXJkaXplUGF0aDpmdW5jdGlvbihkdCl7cmV0dXJuIHEwLm5vcm1hbGl6ZShkdCl9LGZpbmRPYmplY3Q6ZnVuY3Rpb24oZHQsRHQpe3ZhciBYdD1Bbi5hbmFseXplUGF0aChkdCxEdCk7cmV0dXJuIFh0LmV4aXN0cz9YdC5vYmplY3Q6KG0wKFh0LmVy''@;'; put 'put ''cm9yKSxudWxsKX0sYW5hbHl6ZVBhdGg6ZnVuY3Rpb24oZHQsRHQpe3RyeXtkdD0oWHQ9QW4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiFEdH0pKS5wYXRofWNhdGNoKFR0KXt9dmFyIHVlPXtpc1Jvb3Q6ITEsZXhpc3RzOiExLGVycm9yOjAsbmFtZTpudWxsLHBhdGg6bnVsbCxvYmplY3Q6bnVs''@;'; put 'put ''bCxwYXJlbnRFeGlzdHM6ITEscGFyZW50UGF0aDpudWxsLHBhcmVudE9iamVjdDpudWxsfTt0cnl7dmFyIFh0PUFuLmxvb2t1cFBhdGgoZHQse3BhcmVudDohMH0pO3VlLnBhcmVudEV4aXN0cz0hMCx1ZS5wYXJlbnRQYXRoPVh0LnBhdGgsdWUucGFyZW50T2JqZWN0PVh0Lm5vZGUsdWUubmFt''@;'; put 'put ''ZT1xMC5iYXNlbmFtZShkdCksWHQ9QW4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiFEdH0pLHVlLmV4aXN0cz0hMCx1ZS5wYXRoPVh0LnBhdGgsdWUub2JqZWN0PVh0Lm5vZGUsdWUubmFtZT1YdC5ub2RlLm5hbWUsdWUuaXNSb290PSIvIj09PVh0LnBhdGh9Y2F0Y2goVHQpe3VlLmVycm9yPVR0''@;'; put 'put ''LmVycm5vfXJldHVybiB1ZX0sY3JlYXRlRm9sZGVyOmZ1bmN0aW9uKGR0LER0LFh0LHVlKXt2YXIgVHQ9cTAuam9pbjIoInN0cmluZyI9PXR5cGVvZiBkdD9kdDpBbi5nZXRQYXRoKGR0KSxEdCksYT1Bbi5nZXRNb2RlKFh0LHVlKTtyZXR1cm4gQW4ubWtkaXIoVHQsYSl9LGNyZWF0ZVBhdGg6''@;'; put 'put ''ZnVuY3Rpb24oZHQsRHQsWHQsdWUpe2R0PSJzdHJpbmciPT10eXBlb2YgZHQ/ZHQ6QW4uZ2V0UGF0aChkdCk7Zm9yKHZhciBUdD1EdC5zcGxpdCgiLyIpLnJldmVyc2UoKTtUdC5sZW5ndGg7KXt2YXIgYT1UdC5wb3AoKTtpZihhKXt2YXIgYnQ9cTAuam9pbjIoZHQsYSk7dHJ5e0FuLm1rZGly''@;'; put 'put ''KGJ0KX1jYXRjaChhcil7fWR0PWJ0fX1yZXR1cm4gYnR9LGNyZWF0ZUZpbGU6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe3ZhciBhPXEwLmpvaW4yKCJzdHJpbmciPT10eXBlb2YgZHQ/ZHQ6QW4uZ2V0UGF0aChkdCksRHQpLGJ0PUFuLmdldE1vZGUodWUsVHQpO3JldHVybiBBbi5jcmVhdGUo''@;'; put 'put ''YSxidCl9LGNyZWF0ZURhdGFGaWxlOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0LGEpe3ZhciBidD1EdD9xMC5qb2luMigic3RyaW5nIj09dHlwZW9mIGR0P2R0OkFuLmdldFBhdGgoZHQpLER0KTpkdCxhcj1Bbi5nZXRNb2RlKHVlLFR0KSxOaT1Bbi5jcmVhdGUoYnQsYXIpO2lmKFh0KXtpZigi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIFh0KXtmb3IodmFyIFduPW5ldyBBcnJheShYdC5sZW5ndGgpLF89MCx3bz1YdC5sZW5ndGg7Xzx3bzsrK18pV25bX109WHQuY2hhckNvZGVBdChfKTtYdD1Xbn1Bbi5jaG1vZChOaSwxNDZ8YXIpO3ZhciBraT1Bbi5vcGVuKE5pLCJ3Iik7QW4ud3JpdGUoa2ksWHQs''@;'; put 'put ''MCxYdC5sZW5ndGgsMCxhKSxBbi5jbG9zZShraSksQW4uY2htb2QoTmksYXIpfXJldHVybiBOaX0sY3JlYXRlRGV2aWNlOmZ1bmN0aW9uKGR0LER0LFh0LHVlKXt2YXIgVHQ9cTAuam9pbjIoInN0cmluZyI9PXR5cGVvZiBkdD9kdDpBbi5nZXRQYXRoKGR0KSxEdCksYT1Bbi5nZXRNb2RlKCEh''@;'; put 'put ''WHQsISF1ZSk7QW4uY3JlYXRlRGV2aWNlLm1ham9yfHwoQW4uY3JlYXRlRGV2aWNlLm1ham9yPTY0KTt2YXIgYnQ9QW4ubWFrZWRldihBbi5jcmVhdGVEZXZpY2UubWFqb3IrKywwKTtyZXR1cm4gQW4ucmVnaXN0ZXJEZXZpY2UoYnQse29wZW46ZnVuY3Rpb24oYXIpe2FyLnNlZWthYmxlPSEx''@;'; put 'put ''fSxjbG9zZTpmdW5jdGlvbihhcil7dWUmJnVlLmJ1ZmZlciYmdWUuYnVmZmVyLmxlbmd0aCYmdWUoMTApfSxyZWFkOmZ1bmN0aW9uKGFyLE5pLFduLF8sd28pe2Zvcih2YXIga2k9MCwkbz0wOyRvPF87JG8rKyl7dmFyIG9lO3RyeXtvZT1YdCgpfWNhdGNoKEFjKXt0aHJvdyBuZXcgQW4uRXJy''@;'; put 'put ''bm9FcnJvcih3aS5FSU8pfWlmKHZvaWQgMD09PW9lJiYwPT09a2kpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUFHQUlOKTtpZihudWxsPT1vZSlicmVhaztraSsrLE5pW1duKyRvXT1vZX1yZXR1cm4ga2kmJihhci5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxraX0sd3JpdGU6ZnVu''@;'; put 'put ''Y3Rpb24oYXIsTmksV24sXyx3byl7Zm9yKHZhciBraT0wO2tpPF87a2krKyl0cnl7dWUoTmlbV24ra2ldKX1jYXRjaCgkbyl7dGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlPKX1yZXR1cm4gXyYmKGFyLm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLGtpfX0pLEFuLm1rZGV2KFR0LGEs''@;'; put 'put ''YnQpfSxjcmVhdGVMaW5rOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0KXt2YXIgYT1xMC5qb2luMigic3RyaW5nIj09dHlwZW9mIGR0P2R0OkFuLmdldFBhdGgoZHQpLER0KTtyZXR1cm4gQW4uc3ltbGluayhYdCxhKX0sZm9yY2VMb2FkRmlsZTpmdW5jdGlvbihkdCl7aWYoZHQuaXNEZXZpY2V8''@;'; put 'put ''fGR0LmlzRm9sZGVyfHxkdC5saW5rfHxkdC5jb250ZW50cylyZXR1cm4hMDt2YXIgRHQ9ITA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdCl0aHJvdyBuZXcgRXJyb3IoIkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBp''@;'; put 'put ''biBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtzIGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2Mgb24gdGhlIG1haW4gdGhyZWFkLiIpO2lmKCFaLnJlYWQpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC4iKTt0cnl7ZHQuY29udGVudHM9VjEoWi5yZWFkKGR0LnVybCksITApLGR0LnVzZWRCeXRlcz1kdC5jb250ZW50cy5sZW5ndGh9Y2F0Y2goWHQpe0R0PSExfXJldHVybiBEdHx8bTAod2kuRUlPKSxEdH0sY3Jl''@;'; put 'put ''YXRlTGF6eUZpbGU6ZnVuY3Rpb24oZHQsRHQsWHQsdWUsVHQpe2Z1bmN0aW9uIGEoKXt0aGlzLmxlbmd0aEtub3duPSExLHRoaXMuY2h1bmtzPVtdfWlmKGEucHJvdG90eXBlLmdldD1mdW5jdGlvbihraSl7aWYoIShraT50aGlzLmxlbmd0aC0xfHxraTwwKSl7dmFyICRvPWtpJXRoaXMuY2h1''@;'; put 'put ''bmtTaXplO3JldHVybiB0aGlzLmdldHRlcihraS90aGlzLmNodW5rU2l6ZXwwKVskb119fSxhLnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uKGtpKXt0aGlzLmdldHRlcj1raX0sYS5wcm90b3R5cGUuY2FjaGVMZW5ndGg9ZnVuY3Rpb24oKXt2YXIga2k9bmV3IFhNTEh0dHBSZXF1''@;'; put 'put ''ZXN0O2lmKGtpLm9wZW4oIkhFQUQiLFh0LCExKSxraS5zZW5kKG51bGwpLCEoa2kuc3RhdHVzPj0yMDAmJmtpLnN0YXR1czwzMDB8fDMwND09PWtpLnN0YXR1cykpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrWHQrIi4gU3RhdHVzOiAiK2tpLnN0YXR1cyk7dmFyIG9lLCRvPU51''@;'; put 'put ''bWJlcihraS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1sZW5ndGgiKSksQWM9KG9lPWtpLmdldFJlc3BvbnNlSGVhZGVyKCJBY2NlcHQtUmFuZ2VzIikpJiYiYnl0ZXMiPT09b2UsSzI9KG9lPWtpLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUVuY29kaW5nIikpJiYiZ3ppcCI9PT1v''@;'; put 'put ''ZSxNbj0xMDQ4NTc2O0FjfHwoTW49JG8pO3ZhciBSMj10aGlzO1IyLnNldERhdGFHZXR0ZXIoZnVuY3Rpb24oXzIpe3ZhciAkMj1fMipNbixNcz0oXzIrMSkqTW4tMTtpZihNcz1NYXRoLm1pbihNcywkby0xKSx2b2lkIDA9PT1SMi5jaHVua3NbXzJdJiYoUjIuY2h1bmtzW18yXT1mdW5jdGlv''@;'; put 'put ''bihfMiwkMil7aWYoXzI+JDIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlICgiK18yKyIsICIrJDIrIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKCQyPiRvLTEpdGhyb3cgbmV3IEVycm9yKCJvbmx5ICIrJG8rIiBieXRlcyBhdmFpbGFibGUhIHByb2dyYW1tZXIgZXJyb3Ih''@;'; put 'put ''Iik7dmFyIE1zPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihNcy5vcGVuKCJHRVQiLFh0LCExKSwkbyE9PU1uJiZNcy5zZXRSZXF1ZXN0SGVhZGVyKCJSYW5nZSIsImJ5dGVzPSIrXzIrIi0iKyQyKSwidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJihNcy5yZXNwb25zZVR5cGU9ImFycmF5''@;'; put 'put ''YnVmZmVyIiksTXMub3ZlcnJpZGVNaW1lVHlwZSYmTXMub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpLE1zLnNlbmQobnVsbCksIShNcy5zdGF0dXM+PTIwMCYmTXMuc3RhdHVzPDMwMHx8MzA0PT09TXMuc3RhdHVzKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkNvdWxkbid0IGxvYWQgIitYdCsiLiBTdGF0dXM6ICIrTXMuc3RhdHVzKTtyZXR1cm4gdm9pZCAwIT09TXMucmVzcG9uc2U/bmV3IFVpbnQ4QXJyYXkoTXMucmVzcG9uc2V8fFtdKTpWMShNcy5yZXNwb25zZVRleHR8fCIiLCEwKX0oJDIsTXMpKSx2b2lkIDA9PT1SMi5jaHVua3NbXzJd''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiZG9YSFIgZmFpbGVkISIpO3JldHVybiBSMi5jaHVua3NbXzJdfSksKEsyfHwhJG8pJiYoTW49JG89MSwkbz10aGlzLmdldHRlcigwKS5sZW5ndGgsTW49JG8sY29uc29sZS5sb2coIkxhenlGaWxlcyBvbiBnemlwIGZvcmNlcyBkb3dubG9hZCBvZiB0aGUgd2hv''@;'; put 'put ''bGUgZmlsZSB3aGVuIGxlbmd0aCBpcyBhY2Nlc3NlZCIpKSx0aGlzLl9sZW5ndGg9JG8sdGhpcy5fY2h1bmtTaXplPU1uLHRoaXMubGVuZ3RoS25vd249ITB9LCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3Qpe2lmKCFXKXRocm93IkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5h''@;'; put 'put ''cnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciBidD1uZXcgYTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhidCx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5sZW5ndGhLbm93bnx8dGhpcy5jYWNoZUxlbmd0aCgpLHRoaXMuX2xlbmd0aH19LGNodW5rU2l6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RoS25vd258fHRoaXMuY2FjaGVMZW5ndGgoKSx0aGlzLl9jaHVua1NpemV9fX0pO3ZhciBhcj17aXNEZXZpY2U6ITEsY29udGVu''@;'; put 'put ''dHM6YnR9fWVsc2UgYXI9e2lzRGV2aWNlOiExLHVybDpYdH07dmFyIE5pPUFuLmNyZWF0ZUZpbGUoZHQsRHQsYXIsdWUsVHQpO2FyLmNvbnRlbnRzP05pLmNvbnRlbnRzPWFyLmNvbnRlbnRzOmFyLnVybCYmKE5pLmNvbnRlbnRzPW51bGwsTmkudXJsPWFyLnVybCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnRpZXMoTmkse3VzZWRCeXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudHMubGVuZ3RofX19KTt2YXIgV249e307cmV0dXJuIE9iamVjdC5rZXlzKE5pLnN0cmVhbV9vcHMpLmZvckVhY2goZnVuY3Rpb24od28pe3ZhciBraT1OaS5zdHJlYW1fb3BzW3dvXTtXblt3''@;'; put 'put ''b109ZnVuY3Rpb24oKXtpZighQW4uZm9yY2VMb2FkRmlsZShOaSkpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUlPKTtyZXR1cm4ga2kuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0pLFduLnJlYWQ9ZnVuY3Rpb24oa2ksJG8sb2UsQWMsSzIpe2lmKCFBbi5mb3JjZUxvYWRGaWxlKE5pKSl0''@;'; put 'put ''aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FSU8pO3ZhciBNbj1raS5ub2RlLmNvbnRlbnRzO2lmKEsyPj1Nbi5sZW5ndGgpcmV0dXJuIDA7dmFyIHhuPU1hdGgubWluKE1uLmxlbmd0aC1LMixBYyk7aWYoTyh4bj49MCksTW4uc2xpY2UpZm9yKHZhciBSMj0wO1IyPHhuO1IyKyspJG9bb2Ur''@;'; put 'put ''UjJdPU1uW0syK1IyXTtlbHNlIGZvcihSMj0wO1IyPHhuO1IyKyspJG9bb2UrUjJdPU1uLmdldChLMitSMik7cmV0dXJuIHhufSxOaS5zdHJlYW1fb3BzPVduLE5pfSxjcmVhdGVQcmVsb2FkZWRGaWxlOmZ1bmN0aW9uKGR0LER0LFh0LHVlLFR0LGEsYnQsYXIsTmksV24pe0Jyb3dzZXIuaW5p''@;'; put 'put ''dCgpO3ZhciBfPUR0P3EwLnJlc29sdmUocTAuam9pbjIoZHQsRHQpKTpkdDtmdW5jdGlvbiBraSgkbyl7ZnVuY3Rpb24gb2UoSzIpe1duJiZXbigpLGFyfHxBbi5jcmVhdGVEYXRhRmlsZShkdCxEdCxLMix1ZSxUdCxOaSksYSYmYSgpLGowKCl9dmFyIEFjPSExO1oucHJlbG9hZFBsdWdpbnMu''@;'; put 'put ''Zm9yRWFjaChmdW5jdGlvbihLMil7QWN8fEsyLmNhbkhhbmRsZShfKSYmKEsyLmhhbmRsZSgkbyxfLG9lLGZ1bmN0aW9uKCl7YnQmJmJ0KCksajAoKX0pLEFjPSEwKX0pLEFjfHxvZSgkbyl9QmkoKSwic3RyaW5nIj09dHlwZW9mIFh0P0Jyb3dzZXIuYXN5bmNMb2FkKFh0LGZ1bmN0aW9uKCRv''@;'; put 'put ''KXtraSgkbyl9LGJ0KTpraShYdCl9LGluZGV4ZWREQjpmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREJ9LERCX05BTUU6ZnVuY3Rpb24oKXtyZXR1cm4iRU1fRlNf''@;'; put 'put ''Iit3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9LERCX1ZFUlNJT046MjAsREJfU1RPUkVfTkFNRToiRklMRV9EQVRBIixzYXZlRmlsZXNUb0RCOmZ1bmN0aW9uKGR0LER0LFh0KXtEdD1EdHx8ZnVuY3Rpb24oKXt9LFh0PVh0fHxmdW5jdGlvbigpe307dmFyIHVlPUFuLmluZGV4ZWREQigpO3Ry''@;'; put 'put ''eXt2YXIgVHQ9dWUub3BlbihBbi5EQl9OQU1FKCksQW4uREJfVkVSU0lPTil9Y2F0Y2goYSl7cmV0dXJuIFh0KGEpfVR0Lm9udXBncmFkZW5lZWRlZD1mdW5jdGlvbigpe2NvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpLFR0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZShBbi5EQl9TVE9SRV9O''@;'; put 'put ''QU1FKX0sVHQub25zdWNjZXNzPWZ1bmN0aW9uKCl7dmFyIGFyPVR0LnJlc3VsdC50cmFuc2FjdGlvbihbQW4uREJfU1RPUkVfTkFNRV0sInJlYWR3cml0ZSIpLE5pPWFyLm9iamVjdFN0b3JlKEFuLkRCX1NUT1JFX05BTUUpLFduPTAsXz0wLHdvPWR0Lmxlbmd0aDtmdW5jdGlvbiBraSgpezA9''@;'; put 'put ''PV8/RHQoKTpYdCgpfWR0LmZvckVhY2goZnVuY3Rpb24oJG8pe3ZhciBvZT1OaS5wdXQoQW4uYW5hbHl6ZVBhdGgoJG8pLm9iamVjdC5jb250ZW50cywkbyk7b2Uub25zdWNjZXNzPWZ1bmN0aW9uKCl7KytXbitfPT13byYma2koKX0sb2Uub25lcnJvcj1mdW5jdGlvbigpe18rKyxXbitfPT13''@;'; put 'put ''byYma2koKX19KSxhci5vbmVycm9yPVh0fSxUdC5vbmVycm9yPVh0fSxsb2FkRmlsZXNGcm9tREI6ZnVuY3Rpb24oZHQsRHQsWHQpe0R0PUR0fHxmdW5jdGlvbigpe30sWHQ9WHR8fGZ1bmN0aW9uKCl7fTt2YXIgdWU9QW4uaW5kZXhlZERCKCk7dHJ5e3ZhciBUdD11ZS5vcGVuKEFuLkRCX05B''@;'; put 'put ''TUUoKSxBbi5EQl9WRVJTSU9OKX1jYXRjaChhKXtyZXR1cm4gWHQoYSl9VHQub251cGdyYWRlbmVlZGVkPVh0LFR0Lm9uc3VjY2Vzcz1mdW5jdGlvbigpe3ZhciBidD1UdC5yZXN1bHQ7dHJ5e3ZhciBhcj1idC50cmFuc2FjdGlvbihbQW4uREJfU1RPUkVfTkFNRV0sInJlYWRvbmx5Iil9Y2F0''@;'; put 'put ''Y2goJG8pe3JldHVybiB2b2lkIFh0KCRvKX12YXIgTmk9YXIub2JqZWN0U3RvcmUoQW4uREJfU1RPUkVfTkFNRSksV249MCxfPTAsd289ZHQubGVuZ3RoO2Z1bmN0aW9uIGtpKCl7MD09Xz9EdCgpOlh0KCl9ZHQuZm9yRWFjaChmdW5jdGlvbigkbyl7dmFyIG9lPU5pLmdldCgkbyk7b2Uub25z''@;'; put 'put ''dWNjZXNzPWZ1bmN0aW9uKCl7QW4uYW5hbHl6ZVBhdGgoJG8pLmV4aXN0cyYmQW4udW5saW5rKCRvKSxBbi5jcmVhdGVEYXRhRmlsZShxMC5kaXJuYW1lKCRvKSxxMC5iYXNlbmFtZSgkbyksb2UucmVzdWx0LCEwLCEwLCEwKSwrK1duK189PXdvJiZraSgpfSxvZS5vbmVycm9yPWZ1bmN0aW9u''@;'; put 'put ''KCl7XysrLFduK189PXdvJiZraSgpfX0pLGFyLm9uZXJyb3I9WHR9LFR0Lm9uZXJyb3I9WHR9fSxLMD17REVGQVVMVF9QT0xMTUFTSzo1LG1hcHBpbmdzOnt9LHVtYXNrOjUxMSxjYWxjdWxhdGVBdDpmdW5jdGlvbihkdCxEdCl7aWYoIi8iIT09RHRbMF0pe3ZhciBYdDtpZigtMTAwPT09ZHQp''@;'; put 'put ''WHQ9QW4uY3dkKCk7ZWxzZXt2YXIgdWU9QW4uZ2V0U3RyZWFtKGR0KTtpZighdWUpdGhyb3cgbmV3IEFuLkVycm5vRXJyb3Iod2kuRUJBREYpO1h0PXVlLnBhdGh9RHQ9cTAuam9pbjIoWHQsRHQpfXJldHVybiBEdH0sZG9TdGF0OmZ1bmN0aW9uKGR0LER0LFh0KXt0cnl7dmFyIHVlPWR0KER0''@;'; put 'put ''KX1jYXRjaChUdCl7aWYoVHQmJlR0Lm5vZGUmJnEwLm5vcm1hbGl6ZShEdCkhPT1xMC5ub3JtYWxpemUoQW4uZ2V0UGF0aChUdC5ub2RlKSkpcmV0dXJuLXdpLkVOT1RESVI7dGhyb3cgVHR9cmV0dXJuIFJ0W1h0Pj4yXT11ZS5kZXYsUnRbWHQrND4+Ml09MCxSdFtYdCs4Pj4yXT11ZS5pbm8s''@;'; put 'put ''UnRbWHQrMTI+PjJdPXVlLm1vZGUsUnRbWHQrMTY+PjJdPXVlLm5saW5rLFJ0W1h0KzIwPj4yXT11ZS51aWQsUnRbWHQrMjQ+PjJdPXVlLmdpZCxSdFtYdCsyOD4+Ml09dWUucmRldixSdFtYdCszMj4+Ml09MCxSdFtYdCszNj4+Ml09dWUuc2l6ZSxSdFtYdCs0MD4+Ml09NDA5NixSdFtYdCs0''@;'; put 'put ''ND4+Ml09dWUuYmxvY2tzLFJ0W1h0KzQ4Pj4yXT11ZS5hdGltZS5nZXRUaW1lKCkvMWUzfDAsUnRbWHQrNTI+PjJdPTAsUnRbWHQrNTY+PjJdPXVlLm10aW1lLmdldFRpbWUoKS8xZTN8MCxSdFtYdCs2MD4+Ml09MCxSdFtYdCs2ND4+Ml09dWUuY3RpbWUuZ2V0VGltZSgpLzFlM3wwLFJ0W1h0''@;'; put 'put ''KzY4Pj4yXT0wLFJ0W1h0KzcyPj4yXT11ZS5pbm8sMH0sZG9Nc3luYzpmdW5jdGlvbihkdCxEdCxYdCx1ZSl7dmFyIFR0PW5ldyBVaW50OEFycmF5KG50LnN1YmFycmF5KGR0LGR0K1h0KSk7QW4ubXN5bmMoRHQsVHQsMCxYdCx1ZSl9LGRvTWtkaXI6ZnVuY3Rpb24oZHQsRHQpe3JldHVybiIv''@;'; put 'put ''Ij09PShkdD1xMC5ub3JtYWxpemUoZHQpKVtkdC5sZW5ndGgtMV0mJihkdD1kdC5zdWJzdHIoMCxkdC5sZW5ndGgtMSkpLEFuLm1rZGlyKGR0LER0LDApLDB9LGRvTWtub2Q6ZnVuY3Rpb24oZHQsRHQsWHQpe3N3aXRjaCg2MTQ0MCZEdCl7Y2FzZSAzMjc2ODpjYXNlIDgxOTI6Y2FzZSAyNDU3''@;'; put 'put ''NjpjYXNlIDQwOTY6Y2FzZSA0OTE1MjpicmVhaztkZWZhdWx0OnJldHVybi13aS5FSU5WQUx9cmV0dXJuIEFuLm1rbm9kKGR0LER0LFh0KSwwfSxkb1JlYWRsaW5rOmZ1bmN0aW9uKGR0LER0LFh0KXtpZihYdDw9MClyZXR1cm4td2kuRUlOVkFMO3ZhciB1ZT1Bbi5yZWFkbGluayhkdCksVHQ9''@;'; put 'put ''TWF0aC5taW4oWHQsJGUodWUpKSxhPV90W0R0K1R0XTtyZXR1cm4gUWUodWUsRHQsWHQrMSksX3RbRHQrVHRdPWEsVHR9LGRvQWNjZXNzOmZ1bmN0aW9uKGR0LER0KXtpZigtOCZEdClyZXR1cm4td2kuRUlOVkFMO3ZhciB1ZT1Bbi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6ITB9KSxUdD0iIjty''@;'; put 'put ''ZXR1cm4gNCZEdCYmKFR0Kz0iciIpLDImRHQmJihUdCs9InciKSwxJkR0JiYoVHQrPSJ4IiksVHQmJkFuLm5vZGVQZXJtaXNzaW9ucyh1ZS5ub2RlLFR0KT8td2kuRUFDQ0VTOjB9LGRvRHVwOmZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU9QW4uZ2V0U3RyZWFtKFh0KTtyZXR1cm4gdWUmJkFu''@;'; put 'put ''LmNsb3NlKHVlKSxBbi5vcGVuKGR0LER0LDAsWHQsWHQpLmZkfSxkb1JlYWR2OmZ1bmN0aW9uKGR0LER0LFh0LHVlKXtmb3IodmFyIFR0PTAsYT0wO2E8WHQ7YSsrKXt2YXIgYXI9UnRbRHQrKDgqYSs0KT4+Ml0sTmk9QW4ucmVhZChkdCxfdCxSdFtEdCs4KmE+PjJdLGFyLHVlKTtpZihOaTww''@;'; put 'put ''KXJldHVybi0xO2lmKFR0Kz1OaSxOaTxhcilicmVha31yZXR1cm4gVHR9LGRvV3JpdGV2OmZ1bmN0aW9uKGR0LER0LFh0LHVlKXtmb3IodmFyIFR0PTAsYT0wO2E8WHQ7YSsrKXt2YXIgTmk9QW4ud3JpdGUoZHQsX3QsUnRbRHQrOCphPj4yXSxSdFtEdCsoOCphKzQpPj4yXSx1ZSk7aWYoTmk8''@;'; put 'put ''MClyZXR1cm4tMTtUdCs9Tml9cmV0dXJuIFR0fSx2YXJhcmdzOjAsZ2V0OmZ1bmN0aW9uKGR0KXtyZXR1cm4gSzAudmFyYXJncys9NCxSdFtLMC52YXJhcmdzLTQ+PjJdfSxnZXRTdHI6ZnVuY3Rpb24oKXtyZXR1cm4gRihLMC5nZXQoKSl9LGdldFN0cmVhbUZyb21GRDpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBkdD1Bbi5nZXRTdHJlYW0oSzAuZ2V0KCkpO2lmKCFkdCl0aHJvdyBuZXcgQW4uRXJybm9FcnJvcih3aS5FQkFERik7cmV0dXJuIGR0fSxnZXRTb2NrZXRGcm9tRkQ6ZnVuY3Rpb24oKXt2YXIgZHQ9U09DS0ZTLmdldFNvY2tldChLMC5nZXQoKSk7aWYoIWR0KXRocm93IG5ldyBBbi5FcnJu''@;'; put 'put ''b0Vycm9yKHdpLkVCQURGKTtyZXR1cm4gZHR9LGdldFNvY2tldEFkZHJlc3M6ZnVuY3Rpb24oZHQpe3ZhciBEdD1LMC5nZXQoKSxYdD1LMC5nZXQoKTtpZihkdCYmMD09PUR0KXJldHVybiBudWxsO3ZhciB1ZT1fX3JlYWRfc29ja2FkZHIoRHQsWHQpO2lmKHVlLmVycm5vKXRocm93IG5ldyBB''@;'; put 'put ''bi5FcnJub0Vycm9yKHVlLmVycm5vKTtyZXR1cm4gdWUuYWRkcj1ETlMubG9va3VwX2FkZHIodWUuYWRkcil8fHVlLmFkZHIsdWV9LGdldDY0OmZ1bmN0aW9uKCl7dmFyIGR0PUswLmdldCgpLER0PUswLmdldCgpO3JldHVybiBPKGR0Pj0wPzA9PT1EdDotMT09PUR0KSxkdH0sZ2V0WmVybzpm''@;'; put 'put ''dW5jdGlvbigpe08oMD09PUswLmdldCgpKX19O2Z1bmN0aW9uIGIyKGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAuZ2V0U3RyKCk7cmV0dXJuIEFuLnVubGluayhYdCksMH1jYXRjaCh1ZSl7cmV0dXJuKHZvaWQgMD09PUFufHwhKHVlIGluc3RhbmNlb2YgQW4uRXJybm9FcnJv''@;'; put 'put ''cikpJiZhMih1ZSksLXVlLmVycm5vfX1mdW5jdGlvbiBpdShkdCxEdCl7SzAudmFyYXJncz1EdDt0cnl7dmFyIFh0PUswLmdldFN0cmVhbUZyb21GRCgpLFR0PShLMC5nZXQoKSxLMC5nZXQoKSksYT1LMC5nZXQoKSxidD1LMC5nZXQoKSxhcj1UdDtyZXR1cm4gQW4ubGxzZWVrKFh0LGFyLGJ0''@;'; put 'put ''KSxSdFthPj4yXT1YdC5wb3NpdGlvbixYdC5nZXRkZW50cyYmMD09PWFyJiYwPT09YnQmJihYdC5nZXRkZW50cz1udWxsKSwwfWNhdGNoKE5pKXtyZXR1cm4odm9pZCAwPT09QW58fCEoTmkgaW5zdGFuY2VvZiBBbi5FcnJub0Vycm9yKSkmJmEyKE5pKSwtTmkuZXJybm99fWZ1bmN0aW9uIFJm''@;'; put 'put ''KGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAuZ2V0U3RyZWFtRnJvbUZEKCksdWU9SzAuZ2V0KCksVHQ9SzAuZ2V0KCk7cmV0dXJuIEswLmRvUmVhZHYoWHQsdWUsVHQpfWNhdGNoKGEpe3JldHVybih2b2lkIDA9PT1Bbnx8IShhIGluc3RhbmNlb2YgQW4uRXJybm9FcnJvcikp''@;'; put 'put ''JiZhMihhKSwtYS5lcnJub319ZnVuY3Rpb24gUXUoZHQsRHQpe0swLnZhcmFyZ3M9RHQ7dHJ5e3ZhciBYdD1LMC5nZXRTdHJlYW1Gcm9tRkQoKSx1ZT1LMC5nZXQoKSxUdD1LMC5nZXQoKTtyZXR1cm4gSzAuZG9Xcml0ZXYoWHQsdWUsVHQpfWNhdGNoKGEpe3JldHVybih2b2lkIDA9PT1Bbnx8''@;'; put 'put ''IShhIGluc3RhbmNlb2YgQW4uRXJybm9FcnJvcikpJiZhMihhKSwtYS5lcnJub319ZnVuY3Rpb24gS3MoZHQsRHQpe0swLnZhcmFyZ3M9RHQ7dHJ5e3ZhciBYdD1LMC5nZXQoKSx1ZT1LMC5nZXQoKSxUdD1LMC5nZXQoKSxhPUswLmdldCgpLGJ0PUswLmdldCgpLGFyPUswLmdldCgpO2FyPDw9''@;'; put 'put ''MTI7dmFyIE5pLFduPSExO2lmKC0xPT09YnQpe2lmKCEoTmk9UWcoRnQsdWUpKSlyZXR1cm4td2kuRU5PTUVNO0pnKE5pLDAsdWUpLFduPSEwfWVsc2V7dmFyIF89QW4uZ2V0U3RyZWFtKGJ0KTtpZighXylyZXR1cm4td2kuRUJBREY7dmFyIHdvPUFuLm1tYXAoXyxudCxYdCx1ZSxhcixUdCxh''@;'; put 'put ''KTtOaT13by5wdHIsV249d28uYWxsb2NhdGVkfXJldHVybiBLMC5tYXBwaW5nc1tOaV09e21hbGxvYzpOaSxsZW46dWUsYWxsb2NhdGVkOlduLGZkOmJ0LGZsYWdzOmF9LE5pfWNhdGNoKGtpKXtyZXR1cm4odm9pZCAwPT09QW58fCEoa2kgaW5zdGFuY2VvZiBBbi5FcnJub0Vycm9yKSkmJmEy''@;'; put 'put ''KGtpKSwta2kuZXJybm99fWZ1bmN0aW9uIE9wKGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAuZ2V0U3RyKCksdWU9SzAuZ2V0KCk7cmV0dXJuIEswLmRvU3RhdChBbi5zdGF0LFh0LHVlKX1jYXRjaChUdCl7cmV0dXJuKHZvaWQgMD09PUFufHwhKFR0IGluc3RhbmNlb2YgQW4u''@;'; put 'put ''RXJybm9FcnJvcikpJiZhMihUdCksLVR0LmVycm5vfX1mdW5jdGlvbiBKdShkdCxEdCl7SzAudmFyYXJncz1EdDt0cnl7dmFyIFh0PUswLmdldFN0cmVhbUZyb21GRCgpLHVlPUswLmdldCgpO3JldHVybiBLMC5kb1N0YXQoQW4uc3RhdCxYdC5wYXRoLHVlKX1jYXRjaChUdCl7cmV0dXJuKHZv''@;'; put 'put ''aWQgMD09PUFufHwhKFR0IGluc3RhbmNlb2YgQW4uRXJybm9FcnJvcikpJiZhMihUdCksLVR0LmVycm5vfX12YXIgJHM9e3BwaWQ6MSxwaWQ6NDIsc2lkOjQyLHBnaWQ6NDJ9O2Z1bmN0aW9uIERsKGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXtyZXR1cm4gJHMucGlkfWNhdGNoKFh0KXtyZXR1''@;'; put 'put ''cm4odm9pZCAwPT09QW58fCEoWHQgaW5zdGFuY2VvZiBBbi5FcnJub0Vycm9yKSkmJmEyKFh0KSwtWHQuZXJybm99fWZ1bmN0aW9uIFEyKGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAuZ2V0U3RyZWFtRnJvbUZEKCk7c3dpdGNoKEswLmdldCgpKXtjYXNlIDA6cmV0dXJuKFR0''@;'; put 'put ''PUswLmdldCgpKTwwPy13aS5FSU5WQUw6QW4ub3BlbihYdC5wYXRoLFh0LmZsYWdzLDAsVHQpLmZkO2Nhc2UgMTpjYXNlIDI6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTM6Y2FzZSAxNDpyZXR1cm4gMDtjYXNlIDM6cmV0dXJuIFh0LmZsYWdzO2Nhc2UgNDp2YXIgVHQ9SzAuZ2V0KCk7cmV0dXJu''@;'; put 'put ''IFh0LmZsYWdzfD1UdCwwO2Nhc2UgMTI6Y2FzZSAxMjpyZXR1cm4gVHQ9SzAuZ2V0KCkscWVbVHQrMD4+MV09MiwwO2Nhc2UgMTY6Y2FzZSA4OmRlZmF1bHQ6cmV0dXJuLXdpLkVJTlZBTDtjYXNlIDk6cmV0dXJuIG0wKHdpLkVJTlZBTCksLTF9fWNhdGNoKGFyKXtyZXR1cm4odm9pZCAwPT09''@;'; put 'put ''QW58fCEoYXIgaW5zdGFuY2VvZiBBbi5FcnJub0Vycm9yKSkmJmEyKGFyKSwtYXIuZXJybm99fWZ1bmN0aW9uIFh1KGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAuZ2V0U3RyZWFtRnJvbUZEKCksdWU9SzAuZ2V0KCksVHQ9SzAuZ2V0KCk7cmV0dXJuIEFuLnJlYWQoWHQsX3Qs''@;'; put 'put ''dWUsVHQpfWNhdGNoKGEpe3JldHVybih2b2lkIDA9PT1Bbnx8IShhIGluc3RhbmNlb2YgQW4uRXJybm9FcnJvcikpJiZhMihhKSwtYS5lcnJub319ZnVuY3Rpb24gZ2MoZHQsRHQpe0swLnZhcmFyZ3M9RHQ7dHJ5e3ZhciBYdD1LMC5nZXRTdHIoKSx1ZT1LMC5nZXQoKTtyZXR1cm4gSzAuZG9B''@;'; put 'put ''Y2Nlc3MoWHQsdWUpfWNhdGNoKFR0KXtyZXR1cm4odm9pZCAwPT09QW58fCEoVHQgaW5zdGFuY2VvZiBBbi5FcnJub0Vycm9yKSkmJmEyKFR0KSwtVHQuZXJybm99fWZ1bmN0aW9uIHRsKGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAuZ2V0U3RyKCksdWU9SzAuZ2V0KCksVHQ9''@;'; put 'put ''SzAuZ2V0KCk7cmV0dXJuIEFuLm9wZW4oWHQsdWUsVHQpLmZkfWNhdGNoKGJ0KXtyZXR1cm4odm9pZCAwPT09QW58fCEoYnQgaW5zdGFuY2VvZiBBbi5FcnJub0Vycm9yKSkmJmEyKGJ0KSwtYnQuZXJybm99fWZ1bmN0aW9uIGpvKGR0LER0KXtLMC52YXJhcmdzPUR0O3RyeXt2YXIgWHQ9SzAu''@;'; put 'put ''Z2V0U3RyZWFtRnJvbUZEKCksdWU9SzAuZ2V0KCk7c3dpdGNoKHVlKXtjYXNlIDIxNTA5OmNhc2UgMjE1MDU6Y2FzZSAyMTUxMDpjYXNlIDIxNTExOmNhc2UgMjE1MTI6Y2FzZSAyMTUwNjpjYXNlIDIxNTA3OmNhc2UgMjE1MDg6Y2FzZSAyMTUyMzpyZXR1cm4gWHQudHR5PzA6LXdpLkVOT1RU''@;'; put 'put ''WTtjYXNlIDIxNTE5OmlmKCFYdC50dHkpcmV0dXJuLXdpLkVOT1RUWTt2YXIgVHQ9SzAuZ2V0KCk7cmV0dXJuIFJ0W1R0Pj4yXT0wLDA7Y2FzZSAyMTUyMDpyZXR1cm4gWHQudHR5Py13aS5FSU5WQUw6LXdpLkVOT1RUWTtjYXNlIDIxNTMxOnJldHVybiBUdD1LMC5nZXQoKSxBbi5pb2N0bChY''@;'; put 'put ''dCx1ZSxUdCk7ZGVmYXVsdDphMigiYmFkIGlvY3RsIHN5c2NhbGwgIit1ZSl9fWNhdGNoKGEpe3JldHVybih2b2lkIDA9PT1Bbnx8IShhIGluc3RhbmNlb2YgQW4uRXJybm9FcnJvcikpJiZhMihhKSwtYS5lcnJub319ZnVuY3Rpb24gZGkoZHQsRHQpe0swLnZhcmFyZ3M9RHQ7dHJ5e3ZhciBY''@;'; put 'put ''dD1LMC5nZXRTdHJlYW1Gcm9tRkQoKTtyZXR1cm4gQW4uY2xvc2UoWHQpLDB9Y2F0Y2godWUpe3JldHVybih2b2lkIDA9PT1Bbnx8ISh1ZSBpbnN0YW5jZW9mIEFuLkVycm5vRXJyb3IpKSYmYTIodWUpLC11ZS5lcnJub319ZnVuY3Rpb24gTjAoZHQsRHQpe0swLnZhcmFyZ3M9RHQ7dHJ5e3Zh''@;'; put 'put ''ciBYdD1LMC5nZXQoKSx1ZT1LMC5nZXQoKSxUdD1LMC5tYXBwaW5nc1tYdF07aWYoIVR0KXJldHVybiAwO2lmKHVlPT09VHQubGVuKXt2YXIgYT1Bbi5nZXRTdHJlYW0oVHQuZmQpO0swLmRvTXN5bmMoWHQsYSx1ZSxUdC5mbGFncyksQW4ubXVubWFwKGEpLEswLm1hcHBpbmdzW1h0XT1udWxs''@;'; put 'put ''LFR0LmFsbG9jYXRlZCYmc2IoVHQubWFsbG9jKX1yZXR1cm4gMH1jYXRjaChidCl7cmV0dXJuKHZvaWQgMD09PUFufHwhKGJ0IGluc3RhbmNlb2YgQW4uRXJybm9FcnJvcikpJiZhMihidCksLWJ0LmVycm5vfX12YXIgdW89UyhbOCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAs''@;'; put 'put ''MSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw2LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwy''@;'; put 'put ''LDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDcsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEs''@;'; put 'put ''MCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMF0sImk4IixWKTtmdW5jdGlvbiBO''@;'; put 'put ''YSgpe31mdW5jdGlvbiBmMihkdCl7Wi5leGl0KGR0KX1mdW5jdGlvbiBvMihkdCl7ZjIoZHQpfXZhciB2aT1BdDtmdW5jdGlvbiBCZihkdCl7dmFyIHVlLFR0O0JmLmNhbGxlZD91ZT1SdFsoVHQ9UnRbdmk+PjJdKT4+Ml06KEJmLmNhbGxlZD0hMCxFYS5VU0VSPUVhLkxPR05BTUU9IndlYl91''@;'; put 'put ''c2VyIixFYS5QQVRIPSIvIixFYS5QV0Q9Ii8iLEVhLkhPTUU9Ii9ob21lL3dlYl91c2VyIixFYS5MQU5HPSJDLlVURi04IixFYS5fPVoudGhpc1Byb2dyYW0sdWU9YWUoMTAyNCksVHQ9YWUoMjU2KSxSdFtUdD4+Ml09dWUsUnRbdmk+PjJdPVR0KTt2YXIgYT1bXSxidD0wO2Zvcih2YXIgYXIg''@;'; put 'put ''aW4gZHQpInN0cmluZyI9PXR5cGVvZiBkdFthcl0mJihhLnB1c2goTmk9YXIrIj0iK2R0W2FyXSksYnQrPU5pLmxlbmd0aCk7aWYoYnQ+MTAyNCl0aHJvdyBuZXcgRXJyb3IoIkVudmlyb25tZW50IHNpemUgZXhjZWVkZWQgVE9UQUxfRU5WX1NJWkUhIik7Zm9yKHZhciBfPTA7XzxhLmxlbmd0''@;'; put 'put ''aDtfKyspe3ZhciBOaTtUcihOaT1hW19dLHVlKSxSdFtUdCs0Kl8+PjJdPXVlLHVlKz1OaS5sZW5ndGgrMX1SdFtUdCs0KmEubGVuZ3RoPj4yXT0wfUF0Kz0xNjt2YXIgRWE9e307ZnVuY3Rpb24gb3UoZHQpe3JldHVybiAwIT09ZHQmJihkdD1GKGR0KSxFYS5oYXNPd25Qcm9wZXJ0eShkdCkp''@;'; put 'put ''PyhvdS5yZXQmJnNiKG91LnJldCksb3UucmV0PXl0KEVhW2R0XSkpOjB9ZnVuY3Rpb24gcm8oZHQpe3ZhciBEdD1EYXRlLm5vdygpO3JldHVybiBSdFtkdD4+Ml09RHQvMWUzfDAsUnRbZHQrND4+Ml09RHQlMWUzKjFlM3wwLDB9dmFyIHNkPUpuLHFzPVBuLFlpPVBuLFdzPW9yLGdzPWdyLE4x''@;'; put 'put ''PUxuLEtsPUxuO2Z1bmN0aW9uIEwyKCl7YTIoInRyYXAhIil9ZnVuY3Rpb24geGkoZHQsRHQpe3Rocm93IFouc2V0VGhyZXcoZHQsRHR8fDEpLCJsb25nam1wIn1mdW5jdGlvbiBtMShkdCxEdCxYdCl7cmV0dXJuIG50LnNldChudC5zdWJhcnJheShEdCxEdCtYdCksZHQpLGR0fWZ1bmN0aW9u''@;'; put 'put ''IHYxKGR0LER0LFh0KXtpZigwPT09ZHQpcmV0dXJuIG0wKHdpLkVJTlZBTCksLTE7dmFyIHVlPUYoZHQpLFR0PUYoRHQpO3JldHVybiIiPT09dWV8fC0xIT09dWUuaW5kZXhPZigiPSIpPyhtMCh3aS5FSU5WQUwpLC0xKTooRWEuaGFzT3duUHJvcGVydHkodWUpJiYhWHR8fChFYVt1ZV09VHQs''@;'; put 'put ''QmYoRWEpKSwwKX1mdW5jdGlvbiBDMChkdCl7dmFyIER0PURhdGUubm93KCkvMWUzfDA7cmV0dXJuIGR0JiYoUnRbZHQ+PjJdPUR0KSxEdH1mdW5jdGlvbiBhdShkdCl7cmV0dXJuIDAhPT1kdCYmSmcoZHQsMCwxNiksMH1pZihmbD1OP2Z1bmN0aW9uKCl7dmFyIER0PXByb2Nlc3MuaHJ0aW1l''@;'; put 'put ''KCk7cmV0dXJuIDFlMypEdFswXStEdFsxXS8xZTZ9OiJ1bmRlZmluZWQiIT10eXBlb2YgZGF0ZU5vdz9kYXRlTm93OiJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZi5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHNlbGYucGVyZm9ybWFuY2Uubm93P2Z1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHNlbGYucGVyZm9ybWFuY2Uubm93KCl9OiJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3c/ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9OkRhdGUubm93LEFuLnN0YXRpY0luaXQoKSxlbi51bnNoaWZ0KGZ1''@;'; put 'put ''bmN0aW9uKCl7IVoubm9GU0luaXQmJiFBbi5pbml0LmluaXRpYWxpemVkJiZBbi5pbml0KCl9KSxkci5wdXNoKGZ1bmN0aW9uKCl7QW4uaWdub3JlUGVybWlzc2lvbnM9ITF9KSxuci5wdXNoKGZ1bmN0aW9uKCl7QW4ucXVpdCgpfSksZW4udW5zaGlmdChmdW5jdGlvbigpe1NzLmluaXQoKX0p''@;'; put 'put ''LG5yLnB1c2goZnVuY3Rpb24oKXtTcy5zaHV0ZG93bigpfSksTil7dmFyIG1zPUwoMzUxNTkpLGgyPUwoNzU3MDEpO0thLnN0YXRpY0luaXQoKX1CZihFYSksbG49YWUoNCksSnQ9bW49ZGUoQXQpLGJuPWRlKHBuPUp0K2VyKSxSdFtsbj4+Ml09Ym4sanQ9ITA7dmFyIEdnPSExO2Z1bmN0aW9u''@;'; put 'put ''IFYxKGR0LER0LFh0KXt2YXIgdWU9WHQ+MD9YdDokZShkdCkrMSxUdD1uZXcgQXJyYXkodWUpLGE9UGUoZHQsVHQsMCxUdC5sZW5ndGgpO3JldHVybiBEdCYmKFR0Lmxlbmd0aD1hKSxUdH1mdW5jdGlvbiB5byhkdCl7Zm9yKHZhciBEdD1bXSxYdD0wO1h0PGR0Lmxlbmd0aDtYdCsrKXt2YXIg''@;'; put 'put ''dWU9ZHRbWHRdO3VlPjI1NSYmKEdnJiZPKCExLCJDaGFyYWN0ZXIgY29kZSAiK3VlKyIgKCIrU3RyaW5nLmZyb21DaGFyQ29kZSh1ZSkrIikgIGF0IG9mZnNldCAiK1h0KyIgbm90IGluIDB4MDAtMHhGRi4iKSx1ZSY9MjU1KSxEdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodWUpKX1yZXR1''@;'; put 'put ''cm4gRHQuam9pbigiIil9dmFyIF9hPSJmdW5jdGlvbiI9PXR5cGVvZiBhdG9iP2F0b2I6ZnVuY3Rpb24oZHQpe3ZhciBUdCxhLGJ0LGFyLE5pLFduLER0PSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIsWHQ9IiIsXz0w''@;'; put 'put ''O2R0PWR0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCIiKTtkb3tidD1EdC5pbmRleE9mKGR0LmNoYXJBdChfKyspKSxUdD0oMTUmKGFyPUR0LmluZGV4T2YoZHQuY2hhckF0KF8rKykpKSk8PDR8KE5pPUR0LmluZGV4T2YoZHQuY2hhckF0KF8rKykpKT4+MixhPSgzJk5pKTw8Nnwo''@;'; put 'put ''V249RHQuaW5kZXhPZihkdC5jaGFyQXQoXysrKSkpLFh0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGJ0PDwyfGFyPj40KSw2NCE9PU5pJiYoWHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoVHQpKSw2NCE9PVduJiYoWHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfXdoaWxlKF88ZHQubGVuZ3RoKTty''@;'; put 'put ''ZXR1cm4gWHR9O2Z1bmN0aW9uIGhhKGR0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiBOJiZOKXt2YXIgRHQ7dHJ5e0R0PUJ1ZmZlci5mcm9tKGR0LCJiYXNlNjQiKX1jYXRjaChhKXtEdD1uZXcgQnVmZmVyKGR0LCJiYXNlNjQiKX1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoRHQuYnVmZmVyLER0LmJ5''@;'; put 'put ''dGVPZmZzZXQsRHQuYnl0ZUxlbmd0aCl9dHJ5e2Zvcih2YXIgWHQ9X2EoZHQpLHVlPW5ldyBVaW50OEFycmF5KFh0Lmxlbmd0aCksVHQ9MDtUdDxYdC5sZW5ndGg7KytUdCl1ZVtUdF09WHQuY2hhckNvZGVBdChUdCk7cmV0dXJuIHVlfWNhdGNoKGEpe3Rocm93IG5ldyBFcnJvcigiQ29udmVy''@;'; put 'put ''dGluZyBiYXNlNjQgc3RyaW5nIHRvIGJ5dGVzIGZhaWxlZC4iKX19ZnVuY3Rpb24gSjIoZHQpe2lmKGZhKGR0KSlyZXR1cm4gaGEoZHQuc2xpY2UoS28ubGVuZ3RoKSl9ZnVuY3Rpb24gdWQoZHQpe3RyeXtyZXR1cm4gWi5keW5DYWxsX2QoZHQpfWNhdGNoKER0KXtpZigibnVtYmVyIiE9dHlw''@;'; put 'put ''ZW9mIER0JiYibG9uZ2ptcCIhPT1EdCl0aHJvdyBEdDtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIFgyKGR0LER0LFh0LHVlKXt0cnl7cmV0dXJuIFouZHluQ2FsbF9kZGRkKGR0LER0LFh0LHVlKX1jYXRjaChUdCl7aWYoIm51bWJlciIhPXR5cGVvZiBUdCYmImxvbmdqbXAiIT09VHQpdGhy''@;'; put 'put ''b3cgVHQ7Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBMbChkdCxEdCl7dHJ5e3JldHVybiBaLmR5bkNhbGxfZGkoZHQsRHQpfWNhdGNoKFh0KXtpZigibnVtYmVyIiE9dHlwZW9mIFh0JiYibG9uZ2ptcCIhPT1YdCl0aHJvdyBYdDtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIE8yKGR0KXt0''@;'; put 'put ''cnl7cmV0dXJuIFouZHluQ2FsbF9pKGR0KX1jYXRjaChEdCl7aWYoIm51bWJlciIhPXR5cGVvZiBEdCYmImxvbmdqbXAiIT09RHQpdGhyb3cgRHQ7Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBScChkdCxEdCl7dHJ5e3JldHVybiBaLmR5bkNhbGxfaWkoZHQsRHQpfWNhdGNoKFh0KXtpZigi''@;'; put 'put ''bnVtYmVyIiE9dHlwZW9mIFh0JiYibG9uZ2ptcCIhPT1YdCl0aHJvdyBYdDtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIGI0KGR0LER0LFh0KXt0cnl7cmV0dXJuIFouZHluQ2FsbF9paWkoZHQsRHQsWHQpfWNhdGNoKHVlKXtpZigibnVtYmVyIiE9dHlwZW9mIHVlJiYibG9uZ2ptcCIhPT11''@;'; put 'put ''ZSl0aHJvdyB1ZTtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIHBvKGR0LER0LFh0LHVlLFR0KXt0cnl7cmV0dXJuIFouZHluQ2FsbF9paWlkZChkdCxEdCxYdCx1ZSxUdCl9Y2F0Y2goYSl7aWYoIm51bWJlciIhPXR5cGVvZiBhJiYibG9uZ2ptcCIhPT1hKXRocm93IGE7Wi5zZXRUaHJldygx''@;'; put 'put ''LDApfX1mdW5jdGlvbiBRMChkdCxEdCxYdCx1ZSl7dHJ5e3JldHVybiBaLmR5bkNhbGxfaWlpaShkdCxEdCxYdCx1ZSl9Y2F0Y2goVHQpe2lmKCJudW1iZXIiIT10eXBlb2YgVHQmJiJsb25nam1wIiE9PVR0KXRocm93IFR0O1ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gbnMoZHQsRHQsWHQs''@;'; put 'put ''dWUsVHQpe3RyeXtyZXR1cm4gWi5keW5DYWxsX2lpaWlpKGR0LER0LFh0LHVlLFR0KX1jYXRjaChhKXtpZigibnVtYmVyIiE9dHlwZW9mIGEmJiJsb25nam1wIiE9PWEpdGhyb3cgYTtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIEFhKGR0LER0LFh0LHVlLFR0LGEpe3RyeXtyZXR1cm4gWi5k''@;'; put 'put ''eW5DYWxsX2lpaWlpaShkdCxEdCxYdCx1ZSxUdCxhKX1jYXRjaChidCl7aWYoIm51bWJlciIhPXR5cGVvZiBidCYmImxvbmdqbXAiIT09YnQpdGhyb3cgYnQ7Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBlYShkdCxEdCxYdCx1ZSxUdCxhLGJ0KXt0cnl7cmV0dXJuIFouZHluQ2FsbF9paWlp''@;'; put 'put ''aWlpKGR0LER0LFh0LHVlLFR0LGEsYnQpfWNhdGNoKGFyKXtpZigibnVtYmVyIiE9dHlwZW9mIGFyJiYibG9uZ2ptcCIhPT1hcil0aHJvdyBhcjtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIEExKGR0LER0LFh0LHVlLFR0LGEsYnQsYXIsTmksV24sXyl7dHJ5e3JldHVybiBaLmR5bkNhbGxf''@;'; put 'put ''aWlpaWlpaWlpaWkoZHQsRHQsWHQsdWUsVHQsYSxidCxhcixOaSxXbixfKX1jYXRjaCh3byl7aWYoIm51bWJlciIhPXR5cGVvZiB3byYmImxvbmdqbXAiIT09d28pdGhyb3cgd287Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBqMShkdCl7dHJ5e1ouZHluQ2FsbF92KGR0KX1jYXRjaChEdCl7''@;'; put 'put ''aWYoIm51bWJlciIhPXR5cGVvZiBEdCYmImxvbmdqbXAiIT09RHQpdGhyb3cgRHQ7Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBtYyhkdCxEdCl7dHJ5e1ouZHluQ2FsbF92aShkdCxEdCl9Y2F0Y2goWHQpe2lmKCJudW1iZXIiIT10eXBlb2YgWHQmJiJsb25nam1wIiE9PVh0KXRocm93IFh0''@;'; put 'put ''O1ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gbHUoZHQsRHQsWHQpe3RyeXtaLmR5bkNhbGxfdmlpKGR0LER0LFh0KX1jYXRjaCh1ZSl7aWYoIm51bWJlciIhPXR5cGVvZiB1ZSYmImxvbmdqbXAiIT09dWUpdGhyb3cgdWU7Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBsZihkdCxEdCxYdCx1''@;'; put 'put ''ZSl7dHJ5e1ouZHluQ2FsbF92aWlpKGR0LER0LFh0LHVlKX1jYXRjaChUdCl7aWYoIm51bWJlciIhPXR5cGVvZiBUdCYmImxvbmdqbXAiIT09VHQpdGhyb3cgVHQ7Wi5zZXRUaHJldygxLDApfX1mdW5jdGlvbiB5aChkdCxEdCxYdCx1ZSxUdCxhLGJ0KXt0cnl7Wi5keW5DYWxsX3ZpaWlkZGko''@;'; put 'put ''ZHQsRHQsWHQsdWUsVHQsYSxidCl9Y2F0Y2goYXIpe2lmKCJudW1iZXIiIT10eXBlb2YgYXImJiJsb25nam1wIiE9PWFyKXRocm93IGFyO1ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gbmwoZHQsRHQsWHQsdWUsVHQpe3RyeXtaLmR5bkNhbGxfdmlpaWkoZHQsRHQsWHQsdWUsVHQpfWNhdGNo''@;'; put 'put ''KGEpe2lmKCJudW1iZXIiIT10eXBlb2YgYSYmImxvbmdqbXAiIT09YSl0aHJvdyBhO1ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gc3UoZHQsRHQsWHQsdWUsVHQsYSl7dHJ5e1ouZHluQ2FsbF92aWlpaWkoZHQsRHQsWHQsdWUsVHQsYSl9Y2F0Y2goYnQpe2lmKCJudW1iZXIiIT10eXBlb2Yg''@;'; put 'put ''YnQmJiJsb25nam1wIiE9PWJ0KXRocm93IGJ0O1ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gaDkoZHQsRHQsWHQsdWUsVHQsYSxidCl7dHJ5e1ouZHluQ2FsbF92aWlpaWlpKGR0LER0LFh0LHVlLFR0LGEsYnQpfWNhdGNoKGFyKXtpZigibnVtYmVyIiE9dHlwZW9mIGFyJiYibG9uZ2ptcCIh''@;'; put 'put ''PT1hcil0aHJvdyBhcjtaLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIEt1KGR0LER0LFh0LHVlLFR0LGEsYnQsYXIsTmksV24pe3RyeXtaLmR5bkNhbGxfdmlpaWlpaWlpaShkdCxEdCxYdCx1ZSxUdCxhLGJ0LGFyLE5pLFduKX1jYXRjaChfKXtpZigibnVtYmVyIiE9dHlwZW9mIF8mJiJsb25n''@;'; put 'put ''am1wIiE9PV8pdGhyb3cgXztaLnNldFRocmV3KDEsMCl9fVouYXNtR2xvYmFsQXJnPXtNYXRoLEludDhBcnJheSxJbnQxNkFycmF5LEludDMyQXJyYXksVWludDhBcnJheSxVaW50MTZBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5LE5hTjpOYU4sSW5maW5pdHk6''@;'; put 'put ''MS8wfSxaLmFzbUxpYnJhcnlBcmc9e2Fib3J0OmEyLGFzc2VydDpPLGVubGFyZ2VNZW1vcnk6a24sZ2V0VG90YWxNZW1vcnk6WG4sYWJvcnRPbkNhbm5vdEdyb3dNZW1vcnk6Tm4saW52b2tlX2Q6dWQsaW52b2tlX2RkZGQ6WDIsaW52b2tlX2RpOkxsLGludm9rZV9pOk8yLGludm9rZV9paTpS''@;'; put 'put ''cCxpbnZva2VfaWlpOmI0LGludm9rZV9paWlkZDpwbyxpbnZva2VfaWlpaTpRMCxpbnZva2VfaWlpaWk6bnMsaW52b2tlX2lpaWlpaTpBYSxpbnZva2VfaWlpaWlpaTplYSxpbnZva2VfaWlpaWlpaWlpaWk6QTEsaW52b2tlX3Y6ajEsaW52b2tlX3ZpOm1jLGludm9rZV92aWk6bHUsaW52b2tl''@;'; put 'put ''X3ZpaWk6bGYsaW52b2tlX3ZpaWlkZGk6eWgsaW52b2tlX3ZpaWlpOm5sLGludm9rZV92aWlpaWk6c3UsaW52b2tlX3ZpaWlpaWk6aDksaW52b2tlX3ZpaWlpaWlpaWk6S3UsX19fYXNzZXJ0X2ZhaWw6eWwsX19fYnVpbGRFbnZpcm9ubWVudDpCZixfX19jbG9ja19nZXR0aW1lOmMyLF9fX2xv''@;'; put 'put ''Y2s6U2ksX19fbWFwX2ZpbGU6WGwsX19fc2V0RXJyTm86bTAsX19fc3lzY2FsbDEwOmIyLF9fX3N5c2NhbGwxNDA6aXUsX19fc3lzY2FsbDE0NTpSZixfX19zeXNjYWxsMTQ2OlF1LF9fX3N5c2NhbGwxOTI6S3MsX19fc3lzY2FsbDE5NTpPcCxfX19zeXNjYWxsMTk3Okp1LF9fX3N5c2NhbGwy''@;'; put 'put ''MDpEbCxfX19zeXNjYWxsMjIxOlEyLF9fX3N5c2NhbGwzOlh1LF9fX3N5c2NhbGwzMzpnYyxfX19zeXNjYWxsNTp0bCxfX19zeXNjYWxsNTQ6am8sX19fc3lzY2FsbDY6ZGksX19fc3lzY2FsbDkxOk4wLF9fX3VubG9jazpOYSxfX2V4aXQ6ZjIsX2Nsb2NrX2dldHRpbWU6R28sX2Vtc2NyaXB0''@;'; put 'put ''ZW5fYXNtX2NvbnN0X2lpaTpKaSxfZW1zY3JpcHRlbl9nZXRfbm93OmZsLF9lbXNjcmlwdGVuX2dldF9ub3dfaXNfbW9ub3RvbmljOnBpLF9lbXNjcmlwdGVuX21lbWNweV9iaWc6bTEsX2V4aXQ6bzIsX2dldGVudjpvdSxfZ2V0dGltZW9mZGF5OnJvLF9sbHZtX2NlaWxfZjY0OnNkLF9sbHZt''@;'; put 'put ''X2ZhYnNfZjMyOnFzLF9sbHZtX2ZhYnNfZjY0OllpLF9sbHZtX2Zsb29yX2Y2NDpXcyxfbGx2bV9wb3dfZjY0OmdzLF9sbHZtX3NxcnRfZjMyOk4xLF9sbHZtX3NxcnRfZjY0OktsLF9sbHZtX3RyYXA6TDIsX2xvbmdqbXA6eGksX3NldGVudjp2MSxfdGltZTpDMCxfdGltZXM6YXUsRFlOQU1J''@;'; put 'put ''Q1RPUF9QVFI6bG4sdGVtcERvdWJsZVB0cjpNYSxBQk9SVDpFZSxTVEFDS1RPUDptbixTVEFDS19NQVg6cG4sY3R0el9pODp1b307dmFyIExhLFRvPWZ1bmN0aW9uKGR0LER0LFh0KXt2YXIgdWU9bmV3IGR0LkludDhBcnJheShYdCksVHQ9bmV3IGR0LkludDE2QXJyYXkoWHQpLGE9bmV3IGR0''@;'; put 'put ''LkludDMyQXJyYXkoWHQpLGJ0PW5ldyBkdC5VaW50OEFycmF5KFh0KSxhcj1uZXcgZHQuVWludDE2QXJyYXkoWHQpLFduPShuZXcgZHQuVWludDMyQXJyYXkoWHQpLG5ldyBkdC5GbG9hdDMyQXJyYXkoWHQpKSxfPW5ldyBkdC5GbG9hdDY0QXJyYXkoWHQpLHdvPTB8RHQuRFlOQU1JQ1RPUF9Q''@;'; put 'put ''VFIsa2k9MHxEdC50ZW1wRG91YmxlUHRyLG9lPTB8RHQuU1RBQ0tUT1AsSzI9MHxEdC5jdHR6X2k4LE1uPTAseG49MCxSMj0wLCQyPWR0Lk5hTixNcz1kdC5JbmZpbml0eSxPbj0wLHljPWR0Lk1hdGguZmxvb3IsZW89ZHQuTWF0aC5hYnMsRjA9ZHQuTWF0aC5zcXJ0LEdsPWR0Lk1hdGgucG93''@;'; put 'put ''LGxhPWR0Lk1hdGguY29zLElhPWR0Lk1hdGguc2luLE04PWR0Lk1hdGgudGFuLEU4PWR0Lk1hdGguYWNvcyxoZD1kdC5NYXRoLmFzaW4sVmY9ZHQuTWF0aC5hdGFuLHEyPWR0Lk1hdGguYXRhbjIsejE9ZHQuTWF0aC5leHAsd2w9ZHQuTWF0aC5jZWlsLHZyPWR0Lk1hdGguaW11bCxwZD1kdC5N''@;'; put 'put ''YXRoLmNsejMyLHAyPUR0LmFib3J0LGdkPUR0LmVubGFyZ2VNZW1vcnksWnA9RHQuZ2V0VG90YWxNZW1vcnksTmM9RHQuYWJvcnRPbkNhbm5vdEdyb3dNZW1vcnksYjk9RHQuaW52b2tlX2RpLGpmPUR0Lmludm9rZV9pLHFpPUR0Lmludm9rZV9paSxPbD1EdC5pbnZva2VfaWlpLEVzPUR0Lmlu''@;'; put 'put ''dm9rZV9paWlpLEpvPUR0Lmludm9rZV9paWlpaSxlMT1EdC5pbnZva2VfaWlpaWlpaSxtMz1EdC5pbnZva2VfdiwkbD1EdC5pbnZva2VfdmksVzE9RHQuaW52b2tlX3ZpaSxaZj1EdC5pbnZva2VfdmlpaSxWYz1EdC5pbnZva2VfdmlpaWksamM9RHQuaW52b2tlX3ZpaWlpaSxmZj1EdC5pbnZv''@;'; put 'put ''a2VfdmlpaWlpaSxCcj1EdC5fX19hc3NlcnRfZmFpbCx4OD1EdC5fX19jbG9ja19nZXR0aW1lLHJtPUR0Ll9fX2xvY2ssVDg9RHQuX19fbWFwX2ZpbGUsUzQ9RHQuX19fc2V0RXJyTm8sXzk9RHQuX19fc3lzY2FsbDEwLHkxPUR0Ll9fX3N5c2NhbGwxNDAsbWI9RHQuX19fc3lzY2FsbDE0NSxt''@;'; put 'put ''ZD1EdC5fX19zeXNjYWxsMTQ2LEk4PUR0Ll9fX3N5c2NhbGwxOTIsWmM9RHQuX19fc3lzY2FsbDE5NSx6Zj1EdC5fX19zeXNjYWxsMTk3LEQ4PUR0Ll9fX3N5c2NhbGwyMCxNND1EdC5fX19zeXNjYWxsMjIxLEM5PUR0Ll9fX3N5c2NhbGwzLGltPUR0Ll9fX3N5c2NhbGwzMyxMOD1EdC5fX19z''@;'; put 'put ''eXNjYWxsNSxFND1EdC5fX19zeXNjYWxsNTQsaGY9RHQuX19fc3lzY2FsbDYsR3A9RHQuX19fc3lzY2FsbDkxLF9oPUR0Ll9fX3VubG9jayxTOT1EdC5fZW1zY3JpcHRlbl9hc21fY29uc3RfaWlpLHQyPUR0Ll9lbXNjcmlwdGVuX21lbWNweV9iaWcsdXU9RHQuX2V4aXQscXU9RHQuX2dldGVu''@;'; put 'put ''dixPOD1EdC5fZ2V0dGltZW9mZGF5LGJsPUR0Ll9sbHZtX3RyYXAsV2U9RHQuX2xvbmdqbXAsT3Q9RHQuX3NldGVudixkbj1EdC5fdGltZSxCbj1EdC5fdGltZXM7ZnVuY3Rpb24gS3IobCxjKXtsfD0wLGN8PTA7dmFyIEJlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MDtCZT1vZSxvZT1vZSsxNnwwLGI9QmUrOHwwLExlPTQsT2U9MHxSMCg0MCksYVtPZT4+Ml09MCxLPUJlLE1uPTAsZj0wfHFpKDI5LDB8bCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxP''@;'; put 'put ''ZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMTtlOmRve2lmKDEhPSgwfG0pKWlmKE1uPTAsYmU9MHxxaSgyMyxmPDwzfDApLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KGY9MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSxmfHxXZSgwfHAsMHx4biksT249eG4pOmY9LTEs''@;'; put 'put ''MSE9KDB8Zikpe2lmKDB8dWVbMTk0OTU0XSl7aWYoTW49MCxmPTB8amYoMykscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxPT0oMHxtKSl7RD0wLGs9MCxNPTAsYj0wLHc9MCxjPWJl''@;'; put 'put ''LEE9YmUsZj1PbixtPTAsbWU9NzQ7YnJlYWt9cGU9Zn1lbHNlIHBlPTA7aWYoTW49MCxmPTB8T2woOTcsMHxsLDExMDA2NCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxIT0oMHxt''@;'; put 'put ''KSl7YVs0NzMyM109MDt0OmRve2lmKDB8ZiYmKHc9MHx1ZVtmPj4wXSx3PDwyND4+MjQpKWZvcihBPWYscD13LG09MDs7KXtpZih3PUErMXwwLCEocDw8MjQ+PjI0KSlicmVhayB0O3N3aXRjaChwPDwyND4+MjR8MCl7Y2FzZSA5OTpmPTgsbWU9MTY7YnJlYWs7Y2FzZSAxMDU6Zj0xOCxtZT0x''@;'; put 'put ''NjticmVhaztjYXNlIDEwOTpmPTEsbWU9MTY7YnJlYWs7Y2FzZSAxMTQ6Zj00LG1lPTE2O2JyZWFrO2Nhc2UgMTE1OmY9MixtZT0xNjticmVhaztkZWZhdWx0OmY9bX0xNj09KDB8bWUpJiYobWU9MCxhWzQ3MzIzXT1mfD1tKSxBPXcscD0wfHVlW3c+PjBdLG09Zn19d2hpbGUoMCk7aWYoMHxj''@;'; put 'put ''JiYoTW49MCxFcygyMCwwLDExMDA2OCwwfGIpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMT09KDB8cCkpKXtEPTAsaz1wZSxNPTAsYj0wLHc9MCxjPWJlLEE9YmUsZj1PbixtPTAs''@;'; put 'put ''bWU9NzQ7YnJlYWt9aWYoTW49MCxHPTB8T2woOTgsMHxsLDApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCkpe2lmKE09MHxhW0crMTY+PjJdLDImYVs0NzMyM118MCYm''@;'; put 'put ''KE1uPTAsVzEoMjYsMHxhWzE1NzEyXSwwfE0pLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMT09KDB8cCkpKXtEPTAsaz1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAs''@;'; put 'put ''bWU9NzQ7YnJlYWt9aWYoTW49MCxtPTB8cWkoMjUsMHxsKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpwPS0xLDEhPSgwfHApKXtmb3IoRD0wO207KXtpZihNbj0wLGY9MHxPbCg5OSwwfGws''@;'; put 'put ''MHxtKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPU9uLG09MCxtZT03NDticmVhayBlfWZvcih3PUQ7ZjspezI9''@;'; put 'put ''PSgwfGFbNDcxMzRdKSYmMCE9KDB8YVs4KygwfGFbZisxNj4+Ml0pPj4yXSl8fChtZT0zMik7dDpkb3tpZigzMj09KDB8bWUpKXttZT0wO2Rve2lmKDB8dWVbMTk0OTU0XSl7aWYoKGI9KDB8YVthWygzPT0oMHwoaz0zJmFbZj4+Ml0pKT9mOmYrNDh8MCkrNDA+PjJdPj4yXSk+Pj40KT4+PjA+''@;'; put 'put ''KGs9KDB8YVthWygyPT0oMHxrKT9mOmYrLTQ4fDApKzQwPj4yXT4+Ml0pPj4+NCk+Pj4wKXtpZihNbj0wLHA9MHxFcygzNCwwfHBlLDB8aywwfGIpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChjPTB8VGkoMHxhW0E+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfEEsMHx4biksT249eG4p''@;'; put 'put ''OmM9LTEsMT09KDB8Yykpe2s9cGUsTT0wLGI9MCx3PUcsYz1iZSxBPWJlLGY9T24sbT0wLG1lPTc0O2JyZWFrIGV9aWYoMHxwKWJyZWFrIHQ7aWYoTW49MCxaZig2NCwwfHBlLDB8aywwfGIpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW3A+PjJdLDB8T2UsMHxM''@;'; put 'put ''ZSkpfHxXZSgwfHAsMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe2s9cGUsTT0wLGI9MCx3PUcsYz1iZSxBPWJlLGY9T24sbT0wLG1lPTc0O2JyZWFrIGV9YnJlYWt9aWYoTW49MCxwPTB8RXMoMzQsMHxwZSwwfGIsMHxrKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoYz0wfFRp''@;'; put 'put ''KDB8YVtBPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpjPS0xLDE9PSgwfGMpKXtrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPU9uLG09MCxtZT03NDticmVhayBlfWlmKDB8cClicmVhayB0O2lmKE1uPTAsWmYoNjQsMHxwZSwwfGIsMHxrKSxwPU1uLE1uPTAsMCE9''@;'; put 'put ''KDB8cCkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPU9uLG09MCxtZT03NDticmVhayBlfWJyZWFrfX13aGlsZSgwKTtpZihhW2JlKyh3PDwzKSs0''@;'; put 'put ''Pj4yXT1mLE1uPTAsYz0wfHFpKDMwLDB8ZikscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7az1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzQ7''@;'; put 'put ''YnJlYWsgZX1hW2JlKyh3PDwzKT4+Ml09Yyx3PXcrMXwwfX13aGlsZSgwKTtpZihNbj0wLGY9MHxPbCgxMDAsMHxsLDB8ZikscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxB''@;'; put 'put ''KSl7az1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzQ7YnJlYWsgZX19aWYoTW49MCxtPTB8T2woODYsMHxsLDB8bSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxUaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6cD0t''@;'; put 'put ''MSwxPT0oMHxwKSl7az1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzQ7YnJlYWsgZX1EPXd9aWYoTW49MCxiPTB8cWkoMzEsRDw8M3wwKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxmLDB8eG4p''@;'; put 'put ''LE9uPXhuKTpwPS0xLDEhPSgwfHApKWlmKE1uPTAsVmMoMjgsMHxiZSwwfEQsOCwxMDEpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCkpaWYoTW49MCwkbCgxMTAsMiso''@;'; put 'put ''bT0wfGFbTT4+Ml0pfDApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCkpe2ZvcihjPSh3PTB8YVtNKzE2Pj4yXSkrKDQwKm18MCl8MCx3PXcrKDQwKihtKzF8MCl8MCl8''@;'; put 'put ''MCxSPTB8YVsxNTcxMl0sQT0wOyEoKDB8QSk+PSgwfEQpKTspe2lmKCgwfEEpPjAmJjE2JmFbNDczMjNdfDAmJihNbj0wLFcxKDI2LDB8UiwwfE0pLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4p''@;'; put 'put ''OnA9LTEsMT09KDB8cCkpKXtrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9T24sbT1SLG1lPTc0O2JyZWFrIGV9aWYoKDB8KG09MHxhWzExMisoMHxhWzE2KygwfGFbKDM9PSgwfChrPTMmYVsoZj0wfGFbYmUrKEE8PDMpKzQ+PjJdKT4+Ml0pKT9mOmYrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkp''@;'; put 'put ''PT0oMHwoZj0wfGFbMTEyKygwfGFbMTYrKDB8YVsoMj09KDB8ayk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSkpe2lmKE1uPTAsVmMoMjksMHxNLDB8bSwwfHcsMHxjKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8V2Uo''@;'; put 'put ''MHxmLDB8eG4pLE9uPXhuKTpwPS0xLDE9PSgwfHApKXtrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9T24sbT1SLG1lPTc0O2JyZWFrIGV9fWVsc2V7aWYoTW49MCxaZig2NSwwfE0sMHxmLDB8dyksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxUaSgwfGFbZj4+Ml0sMHxPZSww''@;'; put 'put ''fExlKSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6cD0tMSwxPT0oMHxwKSl7az1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPU9uLG09UixtZT03NDticmVhayBlfWlmKE1uPTAsWmYoNjUsMHxNLDB8bSwwfGMpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8''@;'; put 'put ''T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMT09KDB8cCkpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1PbixtPVIsbWU9NzQ7YnJlYWsgZX19aWYoTW49MCxmPTB8RXMoMzUsMHxNLDB8dywwfGMpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxh''@;'; put 'put ''W3A+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1PbixtPVIsbWU9NzQ7YnJlYWsgZX1pZigwfGYpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmU7YnJlYWsgZX1pZihmPWIrKEE8PDMpfDAsTW49MCxWYygz''@;'; put 'put ''MCwwfEssMHxNLDB8YywwfHcpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW3A+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1PbixtPVIsbWU9NzQ7YnJlYWsgZX1pZihr''@;'; put 'put ''PTB8YVsobT1LKSs0Pj4yXSxhW2Y+PjJdPWFbbT4+Ml0sYVtmKzQ+PjJdPWssTW49MCwkbCgxMTEsMHxNKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpwPS0xLDE9PSgwfHApKXtrPXBlLE09''@;'; put 'put ''Yix3PUcsYz1iZSxBPWJlLGY9T24sbT1SLG1lPTc0O2JyZWFrIGV9QT1BKzF8MH1Nbj0wLG0zKDgpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCk/KE1uPTAsZj0wfHFp''@;'; put 'put ''KDMyLDB8RykscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxIT0oMHxtKT8oYVtHKzIwPj4yXT1mLE1uPTAsZj0wfHFpKDMzLDB8RykscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhu''@;'; put 'put ''KT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxIT0oMHxtKT8oYVtHKzI0Pj4yXT1mLE1uPTAsWmYoNjYsMHxELDB8YiwwfEcpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkp''@;'; put 'put ''fHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCk/KE9lPTB8bzQoMTg5Mjk2LDEsMHxPZSwwfExlKSxMZT1PbixmPU1uPTAsTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8''@;'; put 'put ''cCk/KGs9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj0wLG09UixtZT03NCk6KGs9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1PbixtPVIsbWU9NzQpKTooaz1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPU9uLG09UixtZT03NCkpOihrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9T24sbT1SLG1lPTc0KSk6''@;'; put 'put ''KGs9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1PbixtPVIsbWU9NzQpKTooaz1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPU9uLG09UixtZT03NCl9ZWxzZSBrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9T24sbT0wLG1lPTc0O2Vsc2Ugaz1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPU9uLG09MCxtZT03''@;'; put 'put ''NDtlbHNlIGs9cGUsTT0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzR9ZWxzZSBEPTAsaz1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzR9ZWxzZSBEPTAsaz1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzR9ZWxzZSBEPTAsaz1wZSxNPTAs''@;'; put 'put ''Yj0wLHc9MCxjPWJlLEE9YmUsZj1PbixtPTAsbWU9NzR9ZWxzZSBEPTAsaz0wLE09MCxiPTAsdz0wLGM9MCxBPWJlLGY9T24sbT0wLG1lPTc0O2Vsc2UgRD0wLGs9MCxNPTAsYj0wLHc9MCxjPTAsQT0wLGY9T24sbT0wLG1lPTc0fXdoaWxlKDApO2U6Zm9yKDs7KXtpZig3ND09KDB8bWUpKXtp''@;'; put 'put ''ZihtZT0wLDB8Zil7Uj1tO2NvbnRpbnVlfWlmKE1uPTAsJGwoMTEyLDB8dyksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxUaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6cD0tMSwxPT0oMHxwKSl7Zj1PbixBPXA9QSxjPVI9Yyx3PUc9dyxi''@;'; put 'put ''PUs9YixNPXBlPU0saz1iZT1rLEQ9bWU9RCxtZT03NDtjb250aW51ZX1pZig0JmFbNDczMjNdfDAmJihNbj0wLGpjKDgsMHxtLDB8dywwfEQsMHxNLDB8YyksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxUaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fFdlKDB8ZiwwfHhuKSxP''@;'; put 'put ''bj14bik6cD0tMSwxPT0oMHxwKSkpe2Y9T24sbT1wPW0sQT1SPUEsYz1HPWMsdz1LPXcsYj1wZT1iLE09YmU9TSxEPW1lPUQsbWU9NzQ7Y29udGludWV9aWYoTW49MCxmZigxMCwwfGwsMHx3LDB8RCwwfE0sMHxjLDApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxh''@;'; put 'put ''W2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMT09KDB8cCkpe2Y9T24sbT1wPW0sQT1SPUEsYz1HPWMsdz1LPXcsYj1wZT1iLE09YmU9TSxEPW1lPUQsbWU9NzQ7Y29udGludWV9Uj1tfWlmKDB8dWVbMTk0OTU0XSl7aWYoTW49MCwkbCgxMTMsMHxrKSxmPU1u''@;'; put 'put ''LE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpwPS0xLDE9PSgwfHApKXtmPU9uLG09UixtZT03NDtjb250aW51ZX1mPTB9ZWxzZSBmPTA7Zm9yKDshKCgwfGYpPj0oMHxEKSk7KXtpZihNbj0wLCRsKDEw''@;'; put 'put ''NSwwfGFbTSsoZjw8MykrND4+Ml0pLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW3A+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe2Y9T24sbT1SLG1lPTc0O2NvbnRpbnVlIGV9Zj1mKzF8MH1pZihNbj0wLCRsKDEw''@;'; put 'put ''NSwwfGIpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCkpaWYoTW49MCwkbCgxMTQsMHx3KSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtm''@;'; put 'put ''Pj4yXSwwfE9lLDB8TGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpwPS0xLDEhPSgwfHApKXtpZihNbj0wLCRsKDEwNSwwfEEpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8''@;'; put 'put ''cCkpYnJlYWs7Zj1PbixtPVIsbWU9NzR9ZWxzZSBmPU9uLG09UixtZT03NDtlbHNlIGY9T24sbT1SLG1lPTc0fUh0KDB8T2UpLG9lPUJlfWZ1bmN0aW9uIHkzKGwsYyxmKXt2YXIgcDtsfD0wLF9bKGN8PTApPj4zXT0rX1tjPj4zXSsgK19bKGZ8PTApPj4zXSxfWyhwPWMrOHwwKT4+M109K19b''@;'; put 'put ''cD4+M10rICtfW2YrOD4+M10sYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19ZnVuY3Rpb24gWHAobCxjKXt2YXIgZixwO3JldHVybiBjPTB8S3AoMHxhWzI0KyhjfD0wKT4+Ml0sbHw9MCksKygrKDB8''@;'; put 'put ''YVtsKzQ0Pj4yXSkvKygxKygwfGFbYysyND4+Ml0pfDApKigrX1s1NisocD0wfGFbYyszNj4+Ml0pPj4zXS0oZj0rX1twKzQwPj4zXSkpK2YpfWZ1bmN0aW9uIEFkKGwsYyl7dmFyIGYscDtyZXR1cm4gcD0wfEtwKDB8YVsyMCsoY3w9MCk+PjJdLGx8PTApLDB8fn4oKDEtKygwfGFbbCs0ND4+''@;'; put 'put ''Ml0pLysoMSsoMHxhW3ArMjQ+PjJdKXwwKSkqKCtfWzY0KyhjPTB8YVtwKzM2Pj4yXSk+PjNdLShmPStfW2MrNDg+PjNdKSkrZil9ZnVuY3Rpb24gS3AobCxjKXtyZXR1cm4obD0wfG1pWzYzJmFbKGx8PTApPj4yXV0obCw4KyhjfD0wKXwwLDUxMikpfHxCcigxMTAxNTUsMTEwMTYxLDQyMywx''@;'; put 'put ''MTAxNjkpLChsPTB8bWlbNjMmYVsobD0wfGFbbCsxNj4+Ml0pPj4yXV0obCxjKzE2fDAsNTEyKSk/MHxsOihCcigxMTAxODAsMTEwMTYxLDQyNSwxMTAxNjkpLDApfWZ1bmN0aW9uIE9SKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsbXw9MCxBfD0wO3ZhciBELG1lLGJlLE9lLExlLEJlLEhlLGpl''@;'; put 'put ''LHc9MCxiPTAsaz0wLE09MCxSPTAsRz0wLEs9MCxwZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTA7Zm9yKGplPW9lLG9lPW9lKzMyfDAsSGU9amUrMTZ8MCxiZT1qZSs4fDAsaz1qZSx3PTB8YVsxMTIrKDB8YVsxNisoMHxhWygzPT0oMyZhWyhmfD0wKT4+Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSk+''@;'; put 'put ''PjJdKT4+Ml0sMHx1ZVsobWU9MHxhWzQrKHB8PTApPj4yXSk+PjBdPyh3PX5+KC41KigocGU9K19bdys0OD4+M10pKyhiPStfW3crNjQ+PjNdKSkpLGI9K1hwKG1lLG0pKTooYj0rX1t3KzU2Pj4zXSxwZT0rX1t3KzQwPj4zXSx3PTB8QWQobWUsbSksYj0uNSoocGUrYikpLF9bQT4+M109Uj0o''@;'; put 'put ''Uj0rX1tBPj4zXSk8KEs9KygwfChldD1+fmIpKSk/UjpLLF9bKE9lPUErOHwwKT4+M109Rz0oRz0rX1tPZT4+M10pPChwZT0rKDB8dykpP0c6cGUsX1soTGU9QSsxNnwwKT4+M109Sz0oYj0rX1tMZT4+M10pPks/YjpLLF9bKEJlPUErMjR8MCk+PjNdPXBlPShiPStfW0JlPj4zXSk+cGU/Yjpw''@;'; put 'put ''ZSxhW2s+PjJdPWV0LGFbays0Pj4yXT13LFQwKGMsMTEwNjgyLGspLEQ9MHxhW3A+PjJdLGs9bWUsTT0xLHA9ZXQ7ISgoMHxNKT49KDB8RCkpOykwfHVlWyhrPW1lKyg1NipNfDApfDApPj4wXT9wPX5+K1hwKGssbSk6dz0wfEFkKGssbSksX1tBPj4zXT1sdD1SPChydD0rKDB8cCkpP1I6cnQs''@;'; put 'put ''X1tPZT4+M109R2U9RzwoYj0rKDB8dykpP0c6YixfW0xlPj4zXT1ydD1LPnJ0P0s6cnQsX1tCZT4+M109Yj1wZT5iP3BlOmIsYVtiZT4+Ml09cCxhW2JlKzQ+PjJdPXcsVDAoYywxMTA3MDQsYmUpLE09TSsxfDAsUj1sdCxHPUdlLEs9cnQscGU9Yjt3PTB8YVsxMTIrKDB8YVsxNisoMHxhWygy''@;'; put 'put ''PT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSwwfHVlW2s+PjBdPyh3PX5+KC41KigobHQ9K19bdys0OD4+M10pKyhiPStfW3crNjQ+PjNdKSkpLGI9K1hwKGssbSkpOihiPStfW3crNTY+PjNdLGx0PStfW3crNDA+PjNdLHc9MHxBZChrLG0pLGI9LjUqKGx0K2Ip''@;'; put 'put ''KSxfW0E+PjNdPVI8KEdlPSsoMHwoZXQ9fn5iKSkpP1I6R2UsX1tPZT4+M109RzwobHQ9KygwfHcpKT9HOmx0LF9bTGU+PjNdPUs+R2U/SzpHZSxfW0JlPj4zXT1wZT5sdD9wZTpsdCxhW0hlPj4yXT1ldCxhW0hlKzQ+PjJdPXcsVDAoYywxMTA3MTgsSGUpLGFbbD4+Ml09YVtBPj4yXSxhW2wr''@;'; put 'put ''ND4+Ml09YVtBKzQ+PjJdLGFbbCs4Pj4yXT1hW0ErOD4+Ml0sYVtsKzEyPj4yXT1hW0ErMTI+PjJdLGFbbCsxNj4+Ml09YVtBKzE2Pj4yXSxhW2wrMjA+PjJdPWFbQSsyMD4+Ml0sYVtsKzI0Pj4yXT1hW0ErMjQ+PjJdLGFbbCsyOD4+Ml09YVtBKzI4Pj4yXSxvZT1qZX1mdW5jdGlvbiBSUihs''@;'; put 'put ''KXt2YXIgYz0wO2ZvcihsPTB8bzAobHw9MCk7bDspe2ZvcihjPTB8bzAoMHxhW2wrMTY+PjJdKTtjOylhW2MrMzI+PjJdPTB8Zm0oMHxhW2MrMjQ+PjJdKSxjPTB8YVtjPj4yXTtsPTB8YVtsPj4yXX19ZnVuY3Rpb24gQlIobCl7dmFyIGM9MDtmb3IobD0wfG8wKGx8PTApO2w7KXtmb3IoYz0w''@;'; put 'put ''fG8wKDB8YVtsKzE2Pj4yXSk7YzspMHxhW2MrMjQ+PjJdJiZ4OShjKSxjPTB8YVtjPj4yXTtsPTB8YVtsPj4yXX19ZnVuY3Rpb24gdmIobCxjKXtjfD0wO3ZhciBmPTA7Zm9yKGY9MHxvMChsfD0wKTtmOyl7Zm9yKGw9MHxvMCgwfGFbZisxNj4+Ml0pO2w7KXFNKGwsYyksbD0wfGFbbD4+Ml07''@;'; put 'put ''Zj0wfGFbZj4+Ml19fWZ1bmN0aW9uIHdjKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IocD0wfG8wKGx8PTApO3A7KXtmb3Iodz1wKzh8MCxtPTB8bzAoMHxhW3ArMTY+PjJdKTttOyl7bD1tKzI0fDA7ZTpkb3tpZigwfGFbbD4+Ml0pZm9yKDgmYVs0NzMyM118MCYmQWIobSx+''@;'; put 'put ''fitfW3c+PjNdKSxBPW0rMzJ8MCxJNCgwfGFbQT4+Ml0pLGM9MHxhW2w+PjJdLGY9bSsyOHwwLGw9MDs7KXtpZigoMHxsKT49KDB8YykpYnJlYWsgZTthWzQ0KygwfGFbKDB8YVtmPj4yXSkrKGw8PDIpPj4yXSk+PjJdPTErKDB8YVsoMHxhWzQrKDB8YVtBPj4yXSk+PjJdKSsoMTIqbHwwKSs0''@;'; put 'put ''Pj4yXSksbD1sKzF8MH19d2hpbGUoMCk7bT0wfGFbbT4+Ml19cD0wfGFbcD4+Ml19fWZ1bmN0aW9uIEFiKGwsYyl7Y3w9MDt2YXIgQSxiLGY9MCxwPTAsbT0wLHc9MCxrPTAsTT0wO2I9b2Usb2U9b2UrMzJ8MCxmPWIsQT0yNCsobHw9MCl8MDtlOmRve2lmKCgwfGFbQT4+Ml0pPj0yKWZvcih3''@;'; put 'put ''PTB8YVsxNTcxMl0sTT0rX1tsKzg+PjNdLGs9K19bbCsxNj4+M10sYVtmPj4yXT1jLF9bZis4Pj4zXT1NLF9bZisxNj4+M109ayxUMCh3LDExMDczOSxmKSxtPWwrMzJ8MCxsPWwrMjh8MCxjPTA7Oyl7aWYoKDB8Yyk+PSgwfGFbQT4+Ml0pKWJyZWFrIGU7cD0wfGFbKDB8YVs0KygwfGFbbT4+''@;'; put 'put ''Ml0pPj4yXSkrKDEyKmN8MCkrOD4+Ml07dDpkb3tpZigwfFB1KHApKWZvcigkcCh3LDB8YVsoMHxhW2w+PjJdKSsoYzw8Mik+PjJdKSxfdSgxMTA3NTksdyksZj0wfG1pWzYzJmFbcD4+Ml1dKHAsMCwxMjgpOzspe2lmKCFmKWJyZWFrIHQ7X3UoMTEwNzY0LHcpLCRwKHcsMHxhWygwfGFbbD4+''@;'; put 'put ''Ml0pKyhhW2Y+PjJdPDwyKT4+Ml0pLF91KDE1MzU5OSx3KSxmPTB8bWlbNjMmYVtwPj4yXV0ocCxmLDgpfX13aGlsZSgwKTtjPWMrMXwwfX13aGlsZSgwKTtvZT1ifWZ1bmN0aW9uICRwKGwsYyl7bHw9MDt2YXIgbSxmPTAscD0wLEE9MCx3PTAsYj0wLGs9MDttPW9lLG9lPW9lKzgwfDAscD1t''@;'; put 'put ''KzQwfDAsZj1tLDB8dWVbKGN8PTApPj4wXT8oYj0rX1tjKzg+PjNdLHc9K19bYysxNj4+M10saz0rX1tjKzI0Pj4zXSxwPTB8eWIoMHxhW2MrMzI+PjJdKSxBPTB8eWIoMHxhW2MrMzY+PjJdKSxfW2Y+PjNdPWIsX1tmKzg+PjNdPXcsX1tmKzE2Pj4zXT1iLF9bZisyND4+M109ayxhW2YrMzI+''@;'; put 'put ''PjJdPXAsYVtmKzM2Pj4yXT1BLFQwKGwsMTEwNzcwLGYpKTooaz0rX1tjKzE2Pj4zXSx3PStfW2MrOD4+M10sYj0rX1tjKzI0Pj4zXSxBPTB8eWIoMHxhW2MrMzI+PjJdKSxmPTB8eWIoMHxhW2MrMzY+PjJdKSxfW3A+PjNdPWssX1twKzg+PjNdPXcsX1twKzE2Pj4zXT1iLF9bcCsyND4+M109''@;'; put 'put ''dyxhW3ArMzI+PjJdPUEsYVtwKzM2Pj4yXT1mLFQwKGwsMTEwNzcwLHApKSxvZT1tfWZ1bmN0aW9uIHliKGwpe3N3aXRjaCgwfChsfD0wKSl7Y2FzZSAwOmw9MTEwODIxO2JyZWFrO2Nhc2UgMTpsPTExMDgxNjticmVhaztjYXNlIDI6bD0xMTA4MDk7YnJlYWs7Y2FzZSAzOmw9MTEwODAyO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgNDpsPTExMDc5NDticmVhaztkZWZhdWx0Omw9MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIHFNKGwsYyl7Y3w9MDt2YXIgTSxELEcscGUsYmUsT2UsTGUsQmUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLFI9MCxLPTAsbWU9MDtCZT1vZSxvZT1vZSsxNnwwLE9lPTB8YVszMiso''@;'; put 'put ''bHw9MCk+PjJdLExlPTB8YVtsKzI4Pj4yXSxNPTQrKHBlPUJlKzh8MCl8MCxEPShiZT1CZSkrNHwwLGI9MCxsPTB8YVsoRz1sKzI0fDApPj4yXTtlOmZvcig7Sz1iKzF8MCwhKCgwfEspPj0oMHxsKSk7KWZvcihSPUxlKyhiPDwyKXwwLGs9Szs7KXtpZigoMHxrKT49KDB8bCkpe2I9Sztjb250''@;'; put 'put ''aW51ZSBlfXQ6ZG97aWYoMD09KDB8VDQoT2UsYixrKSkmJjA9PSgwfFQ0KE9lLGssYikpJiYobWU9TGUrKGs8PDIpfDAsMHx3YigwfGFbUj4+Ml0sMHxhW21lPj4yXSkpKXN3aXRjaChtPTB8YVtSPj4yXSxsPTB8YVttKzQ4Pj4yXSx3PTB8YVttZT4+Ml0sZj0wfGFbdys0OD4+Ml0scD0wPT0o''@;'; put 'put ''MHxmKSxsPWw/cD8xOitfW2wrOD4+M10hPStfW2YrOD4+M106MV5wLEE9MSZsLGVFKHBlLG0sdywwLEEpLGw9MHxhW3BlPj4yXSx3PTB8YVtNPj4yXSxtPTFeQSxlRShiZSwwfGFbUj4+Ml0sMHxhW21lPj4yXSwxLG0pLGY9MHxhW2JlPj4yXSxwPTB8YVtEPj4yXSwwfHcpe2Nhc2UtMTppZihD''@;'; put 'put ''aCgwfGFbbWU+PjJdLDB8YVtSPj4yXSxBLDAsbCxjKSxDaCgwfGFbbWU+PjJdLDB8YVtSPj4yXSxtLDEsZixjKSwxIT0oMHxwKSlicmVhayB0O3RFKDB8YVtSPj4yXSwwfGFbbWU+PjJdLG0sYyk7YnJlYWsgdDtjYXNlIDA6c3dpdGNoKDB8cCl7Y2FzZS0xOkNoKDB8YVttZT4+Ml0sMHxhW1I+''@;'; put 'put ''PjJdLEEsMCxsLGMpLENoKDB8YVttZT4+Ml0sMHxhW1I+PjJdLG0sMSxmLGMpO2JyZWFrIHQ7Y2FzZSAwOmNhc2UgMTpDaCgwfGFbUj4+Ml0sMHxhW21lPj4yXSwwLEEsbCxjKSxDaCgwfGFbUj4+Ml0sMHxhW21lPj4yXSwxLG0sZixjKTticmVhayB0O2RlZmF1bHQ6YnJlYWsgdH1jYXNlIDE6''@;'; put 'put ''aWYoQ2goMHxhW1I+PjJdLDB8YVttZT4+Ml0sMCxBLGwsYyksQ2goMHxhW1I+PjJdLDB8YVttZT4+Ml0sMSxtLGYsYyksLTEhPSgwfHApKWJyZWFrIHQ7dEUoMHxhW1I+PjJdLDB8YVttZT4+Ml0sbSxjKTticmVhayB0O2RlZmF1bHQ6YnJlYWsgdH19d2hpbGUoMCk7az1rKzF8MCxsPTB8YVtH''@;'; put 'put ''Pj4yXX1vZT1CZX1mdW5jdGlvbiB3YihsLGMpe3JldHVybitfWzgrKGx8PTApPj4zXSE9K19bOCsoY3w9MCk+PjNdJiZCcigxMTA4OTIsMTEwMTYxLDg0MywxMTA5MjMpLDB8KCtfW2wrMTY+PjNdPT0rX1tjKzE2Pj4zXSYmK19bbCsyND4+M109PStfW2MrMjQ+PjNdJiYoMHxhW2wrMzI+PjJd''@;'; put 'put ''KT09KDB8YVtjKzMyPj4yXSk/KDB8YVtsKzM2Pj4yXSk9PSgwfGFbYyszNj4+Ml0pJjE6MCl9ZnVuY3Rpb24gZUUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wO2ZvcihBPTA7Oyl7aWYoIShjPTB8cXAoYyxwKSkpe3c9MDticmVha31pZighKGY9''@;'; put 'put ''MHxxcChmLG0pKSl7Yj02O2JyZWFrfWlmKCEoMHx3YihjLGYpKSl7Yj03O2JyZWFrfUE9QSsxfDB9Nj09KDB8Yik/QnIoMTM4Mzk0LDExMDE2MSw4NzEsMTEwODQxKTo3PT0oMHxiKSYmKHc9MHxmdW5jdGlvbiBFOShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9''@;'; put 'put ''MDtmb3Iodz0xOyEoKDB8dyk+KDB8ZikpOyl7QT0wfHFwKGwscCksbT0rX1tBKzg+PjNdPT0rX1tsKzE2Pj4zXTtkb3tpZigwfHVlW2w+PjBdKXtpZihtKXttPTQ9PSgwfGFbbCszMj4+Ml0pO2JyZWFrfW09Mj09KDB8YVtsKzM2Pj4yXSk7YnJlYWt9aWYobSl7bT0xPT0oMHxhW2wrMzI+PjJd''@;'; put 'put ''KTticmVha31tPTM9PSgwfGFbbCszNj4+Ml0pO2JyZWFrfXdoaWxlKDApO2w9QSx3PXcrMXwwLGM9bT8wLWN8MDpjfXJldHVybiAwfGN9KGMsMHxuRShjLGYpLEErMXwwLDEtcHwwKSksYVtsPj4yXT1BLGFbbCs0Pj4yXT13fWZ1bmN0aW9uIENoKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9''@;'; put 'put ''MCxtfD0wO3ZhciBELFIsdz0wLGI9MCxrPTAsTT0wLEc9MDtmb3IoUj0yMCsoQXw9MCl8MCxEPUErMjR8MCxBPTB8S3AoMHxhWygwPT0oMHx1ZVsobHw9MCk+PjBdKT9SOkQpPj4yXSxsKSxZMSgwfGFbQSszMj4+Ml0sMHxhW2wrNDA+PjJdLDB8YVtjKzQwPj4yXSksYj0xOyEoKDB8Yik+KDB8''@;'; put 'put ''bSkpOyl7az0wfHFwKGwsZiksTT0wfHFwKGMscCk7ZG97aWYoMHx1ZVtsPj4wXSl7aWYodz0wfEtwKDB8YVtSPj4yXSxrKSwrX1trKzg+PjNdPT0rX1tsKzE2Pj4zXSl7aWYoRz0yPT0oMHxhW2wrMzI+PjJdKSxBPTAhPSgwfFQ0KDB8YVtBKzMyPj4yXSwwfGFbbCs0MD4+Ml0sMHxhW2MrNDA+''@;'; put 'put ''PjJdKSksbD0wfGFbdyszMj4+Ml0sRyl7aWYoQSl7WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7YnJlYWt9aWYoQSl7WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7YnJlYWt9WTEo''@;'; put 'put ''bCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9aWYoRz0yPT0oMHxhW2wrMzY+PjJdKSxBPTAhPSgwfFQ0KDB8YVtBKzMyPj4yXSwwfGFbbCs0MD4+Ml0sMHxhW2MrNDA+PjJdKSksbD0wfGFbdyszMj4+Ml0sRyl7aWYoQSl7WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+''@;'; put 'put ''PjJdKSxBPXc7YnJlYWt9WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9aWYoQSl7WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7YnJlYWt9aWYodz0wfEtwKDB8YVtEPj4y''@;'; put 'put ''XSxrKSwrX1trKzg+PjNdPT0rX1tsKzE2Pj4zXSl7aWYoRz0xPT0oMHxhW2wrMzI+PjJdKSxBPTAhPSgwfFQ0KDB8YVtBKzMyPj4yXSwwfGFbbCs0MD4+Ml0sMHxhW2MrNDA+PjJdKSksbD0wfGFbdyszMj4+Ml0sRyl7aWYoQSl7WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7''@;'; put 'put ''YnJlYWt9WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9aWYoQSl7WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7YnJlYWt9aWYoRz0xPT0oMHxhW2wrMzY+PjJdKSxBPTAh''@;'; put 'put ''PSgwfFQ0KDB8YVtBKzMyPj4yXSwwfGFbbCs0MD4+Ml0sMHxhW2MrNDA+PjJdKSksbD0wfGFbdyszMj4+Ml0sRyl7aWYoQSl7WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9WTEobCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7YnJlYWt9aWYoQSl7WTEo''@;'; put 'put ''bCwwfGFbTSs0MD4+Ml0sMHxhW2srNDA+PjJdKSxBPXc7YnJlYWt9WTEobCwwfGFbays0MD4+Ml0sMHxhW00rNDA+PjJdKSxBPXc7YnJlYWt9d2hpbGUoMCk7bD1rLGM9TSxiPWIrMXwwfX1mdW5jdGlvbiB0RShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO2Zvcih2YXIgbT0wOzB8d2Io''@;'; put 'put ''bCxjKTspbT0wfHFwKGwsMSksYz0wfHFwKGMsZiksbD1tOyFmdW5jdGlvbiBhRShsLGMsZil7bHw9MCxjfD0wO3ZhciBwLG0sQTtwPW9lLG9lPW9lKzE2fDAsYVsobT1wKT4+Ml09Znw9MCxtaVs2MyZhWyhBPTB8YVsoMHxhWyhsPWwrNHwwKT4+Ml0pKygxMipjfDApKzg+PjJdKT4+Ml1dKEEs''@;'; put 'put ''bSwyKSxhW20+PjJdPWMsbWlbNjMmYVsoZj0wfGFbKDB8YVtsPj4yXSkrKDEyKmZ8MCkrOD4+Ml0pPj4yXV0oZixtLDIpLG9lPXB9KG09MHxhWzMyKygwfEtwKDB8YVsoMD09KDB8dWVbbD4+MF0pP3ArMjB8MDpwKzI0fDApPj4yXSxsKSk+PjJdLDB8YVtsKzQwPj4yXSwwfGFbYys0MD4+Ml0p''@;'; put 'put ''fWZ1bmN0aW9uIHFwKGwsYyl7cmV0dXJuKGx8PTApPzB8YVsoMD09KDB8KGN8PTApKT9sKzQ4fDA6bCs1MnwwKT4+Ml06KEJyKDExMDgyOCwxMTAxNjEsNzk4LDExMDgzMiksMCl9ZnVuY3Rpb24gbkUobCxjKXt2YXIgZixwLG07cmV0dXJuIG09b2Usb2U9b2UrMTZ8MCxwPW0sKGY9MHx1ZVso''@;'; put 'put ''bHw9MCk+PjBdKTw8MjQ+PjI0PT0oMHx1ZVsoY3w9MCk+PjBdKSYmK19bbCs4Pj4zXT09K19bYys4Pj4zXT8obD1mPDwyND4+MjQ/MHxzbShsLGMsNCwyKTowfHNtKGwsYywzLDEpLG9lPW0sMHxsKTooWHIoMSwxMTA4NTQscCksV2UoMTg5Mjk2LDEpLDApfWZ1bmN0aW9uIHNtKGwsYyxmLHAp''@;'; put 'put ''e2Z8PTAscHw9MDt2YXIgYixrLG09MCxBPTAsdz0wLE09MCxEPTAsUj0wLEc9MDtiPStfWzI0KyhsfD0wKT4+M10saz0rX1sxNisoY3w9MCk+PjNdO2Rve2lmKCEoYjxrfHwoQT0rX1tsKzE2Pj4zXSx3PStfW2MrMjQ+PjNdLEE+dykpKXtpZihrPGImQTxrKXtjPTB8UFIobCxjLGYscCk7YnJl''@;'; put 'put ''YWt9aWYoazxBJkE8dyl7Yz0wLSgwfFBSKGMsbCxmLHApKXwwO2JyZWFrfWlmKEEhPWspe2lmKGI9PWspcmV0dXJuIDB8KCgwfChmPTB8YVtsKzM2Pj4yXSkpPT0oMHxhW2MrMzI+PjJdKT8wOigwfGYpPT0oMHxwKT8xOi0xKTtjPSgwfChmPTB8YVtsKzMyPj4yXSkpPT0oMHxhW2MrMzY+PjJd''@;'; put 'put ''KT8wOigwfGYpPT0oMHxwKT8xOi0xO2JyZWFrfWlmKGIhPXcpe2lmKGI8dylyZXR1cm4gRz0oMHxhW2wrMzY+PjJdKT09KDB8ZiksZj0wfGU2KDB8YVtjKzMyPj4yXSwwfGFbbCszMj4+Ml0sZixwKSwwfChHP2Y6MC1mfDApO0c9KDB8YVtjKzM2Pj4yXSk9PSgwfHApLGM9MHxlNigwfGFbbCsz''@;'; put 'put ''Mj4+Ml0sMHxhW2MrMzI+PjJdLGYscCksYz1HP2M6MC1jfDA7YnJlYWt9aWYoKDB8KEc9MHxhW2wrMzI+PjJdKSk9PSgwfChSPTB8YVtjKzMyPj4yXSkpKXtpZigoMHxhW2wrMzY+PjJdKT09KDB8KGM9MHxhW2MrMzY+PjJdKSkpe2M9MDticmVha319ZWxzZSBjPTB8YVtjKzM2Pj4yXTtpZihE''@;'; put 'put ''PSgwfFIpPT0oMHxmKSwoMHxSKT09KDB8Yykpe2lmKEQpe2M9MTticmVha31pZigoMHxSKT09KDB8cCkpe2M9LTE7YnJlYWt9aWYoKDB8RykhPSgwfGYpJiYoMHxhW2wrMzY+PjJdKSE9KDB8Zikpe2M9MTticmVha31pZigoMHxHKSE9KDB8cCkmJigwfGFbbCszNj4+Ml0pIT0oMHxwKSl7Yz0t''@;'; put 'put ''MTticmVha31jPTA7YnJlYWt9aWYoRCYobT0oMHxjKT09KDB8cCkpKXtpZihjPSgwfGFbbCszNj4+Ml0pPT0oMHxwKSwoMHxHKT09KDB8Zikpe2lmKCFjKXtjPS0xO2JyZWFrfX1lbHNlIGlmKGMpe2M9MTticmVha31jPTA7YnJlYWt9aWYoKDB8Uik9PSgwfHApJihNPSgwfGMpPT0oMHxmKSkp''@;'; put 'put ''e2lmKGM9KDB8Ryk9PSgwfHApLCgwfGFbbCszNj4+Ml0pPT0oMHxmKSl7aWYoIWMpe2M9LTE7YnJlYWt9fWVsc2UgaWYoYyl7Yz0xO2JyZWFrfWM9MDticmVha31pZighUil7aWYoTSl7Yz0wfHg0KEcsMHxhW2wrMzY+PjJdLGYpO2JyZWFrfWlmKG0pe2M9MC0oMHx4NChHLDB8YVtsKzM2Pj4y''@;'; put 'put ''XSxwKSl8MDticmVha319aWYobT0wfGFbbCszNj4+Ml0sRCYwPT0oMHxjKSl7Yz0wfHg0KG0sRyxmKTticmVha31jPTAtKDB8eDQobSxHLHApKXwwO2JyZWFrfWM9MH13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIFBSKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgdyxiLG09MCxBPTA7dz0r''@;'; put 'put ''X1syNCsobHw9MCk+PjNdLGI9K19bMjQrKGN8PTApPj4zXTtkb3tpZih3PGIpe2lmKCgwfChsPTB8YVtsKzM2Pj4yXSkpPT0oMHxmKSYmKDB8YVtjKzMyPj4yXSk9PSgwfHApKXtsPS0xO2JyZWFrfWlmKCgwfGwpPT0oMHxwKSYmKDB8YVtjKzMyPj4yXSk9PSgwfGYpKXtsPTE7YnJlYWt9bD0w''@;'; put 'put ''fWVsc2V7aWYoQT0oMHwobT0wfGFbYyszMj4+Ml0pKT09KDB8cCksdz09Yil7aWYoQSl7bD0wfGU2KDB8YVtsKzM2Pj4yXSwwfGFbYyszNj4+Ml0sZixwKTticmVha31sPTAtKDB8ZTYoMHxhW2MrMzY+PjJdLDB8YVtsKzM2Pj4yXSxmLHApKXwwO2JyZWFrfWlmKEEmJigwfGFbYyszNj4+Ml0p''@;'; put 'put ''PT0oMHxwKSl7bD0tMTticmVha31pZigoMHxtKT09KDB8ZikmJigwfGFbYyszNj4+Ml0pPT0oMHxmKSl7bD0xO2JyZWFrfWw9MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiB4NChsLGMsZil7cmV0dXJuIDB8KCgwfChsfD0wKSk9PSgwfChmfD0wKSk/KCgwfChjfD0wKSk9PSgwfGYp''@;'; put 'put ''KTw8MzE+PjMxOjEpfWZ1bmN0aW9uIGU2KGwsYyxmLHApe2lmKGN8PTAsKDB8KGx8PTApKT09KDB8KHB8PTApKSl7aWYoYz0wPT0oMHxsKSlyZXR1cm4gMDtjJj0xfXJldHVybigwIT0oMHxsKXwoMHxjKSE9KDB8KGZ8PTApKSk8PDMxPj4zMXwwfWZ1bmN0aW9uIHg5KGwpe3ZhciBmLEEsdyxj''@;'; put 'put ''PTAscD0wLG09MDtBPTB8YVsyOCsobHw9MCk+PjJdLHc9MHxhW2wrMjQ+PjJdLGY9MHxhW2wrMzI+PjJdLGw9MDtlOmZvcig7cD1sKzF8MCwhKCgwfHApPj0oMHx3KSk7KWZvcihtPUErKGw8PDIpfDAsYz1wOzspe2lmKCgwfGMpPT0oMHx3KSl7bD1wO2NvbnRpbnVlIGV9c3dpdGNoKDB8bkUo''@;'; put 'put ''MHxhW20+PjJdLDB8YVtBKyhjPDwyKT4+Ml0pKXtjYXNlIDE6WTEoZixsLGMpO2JyZWFrO2Nhc2UtMTpZMShmLGMsbCl9Yz1jKzF8MH19ZnVuY3Rpb24gckUobCxjKXtjfD0wO3ZhciBmLG0scD0wO2FbKG09MjQrKGx8PTApfDApPj4yXT1mPTErKHA9MHxhW20+PjJdKXwwLGFbYys0MD4+Ml09''@;'; put 'put ''cCxsPShsPTB8YVsocD1sKzI4fDApPj4yXSk/MHxsMChsLGY8PDIpOjB8UW4oZjw8MiksYVtwPj4yXT1sLGFbbCsoKDB8YVttPj4yXSktMTw8Mik+PjJdPWN9ZnVuY3Rpb24gaUUobCxjLGYpe2x8PTAsY3w9MDt2YXIgQSxwPTAsbT0wO0E9b2Usb2U9b2UrMTZ8MCxfWyhtPUEpPj4zXT1mPStm''@;'; put 'put ''LChwPTB8bWlbNjMmYVtsPj4yXV0obCxtLDUxMikpfHwocD0wfG1yKDI0KSxfW3ArOD4+M109K19bbT4+M10sYVtwKzE2Pj4yXT0wfEFzKDI1NzI4LDB8YVs0NTgxXSksbWlbNjMmYVtsPj4yXV0obCxwLDEpKSxtaVs2MyZhWyhtPTB8YVtwKzE2Pj4yXSk+PjJdXShtLGMsMSksb2U9QX1mdW5j''@;'; put 'put ''dGlvbiBCOChsLGMsZil7bHw9MDt2YXIgQSx3LHA9MCxtPTA7QT0wIT0oMHx1ZVszNisoY3w9MCk+PjBdKSx3PTQwKyhmfD0wKXwwO2Rve2lmKCgwfGFbYysyND4+Ml0pPT0oMHxmKSl7aWYocD0rX1t3Pj4zXSxBKXttPS41KigrX1tmKzY0Pj4zXSsgK19bZis0OD4+M10pO2JyZWFrfW09K19b''@;'; put 'put ''Zis0OD4+M10scD0uNSooK19bZis1Nj4+M10rcCk7YnJlYWt9aWYoQSl7bT0uNSooK19bZis2ND4+M10rICtfW2YrNDg+PjNdKSxwPStfW2YrNTY+PjNdO2JyZWFrfW09K19bZis2ND4+M10scD0uNSooK19bZis1Nj4+M10rICtfW3c+PjNdKTticmVha313aGlsZSgwKTtfW2w+PjNdPXAsX1ts''@;'; put 'put ''Kzg+PjNdPW19ZnVuY3Rpb24gRWkobCxjKXt2YXIgZj0wO3JldHVybigwfChmPTB8YVsyMCsobHw9MCk+PjJdKSkhPSgwfGFbMjArKGN8PTApPj4yXSkmJigwfGYpIT0oMHxhW2MrMjQ+PjJdKSYmKGY9MHxhW2wrMjQ+PjJdKSwwfGZ9ZnVuY3Rpb24gY20obCxjKXt2YXIgZjtmPS41KigrX1s2''@;'; put 'put ''NCsoY3w9MCk+PjNdKyArX1tjKzQ4Pj4zXSksX1sobHw9MCk+PjNdPS41KigrX1tjKzU2Pj4zXSsgK19bYys0MD4+M10pLF9bbCs4Pj4zXT1mfWZ1bmN0aW9uIEMyKGwsYyxmLHAsbSxBLHcpe2Y9K2YscD0rcCxtPSttLEF8PTAsd3w9MDt2YXIgYj0wLGs9MDt1ZVsobHw9MCk+PjBdPWN8PTAs''@;'; put 'put ''X1tsKzg+PjNdPWYscDxtPyhiPTAsaz1BLGM9dyxmPXAscD1tKTooYj0xLGs9dyxjPUEsZj1tKSxfW2wrMjQ+PjNdPXAsX1tsKzE2Pj4zXT1mLGFbbCszNj4+Ml09YyxhW2wrMzI+PjJdPWssdWVbbCsxPj4wXT1ifWZ1bmN0aW9uIF9iKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MDtwPTB8YVsz''@;'; put 'put ''NisoY3w9MCk+PjJdO2Rve2lmKCgwfGFbcCs0Pj4yXSkhPSgwfGYpKXtpZigoMHxhW3ArMTI+PjJdKT09KDB8Zikpe3A9fn4oLjUqKCtfW2MrNTY+PjNdKyArX1tjKzQwPj4zXSkpLGY9fn4rX1tjKzQ4Pj4zXTticmVha31pZigoMHxhW3ArOD4+Ml0pPT0oMHxmKSl7cD1+fitfW2MrNDA+PjNd''@;'; put 'put ''LGY9fn4oLjUqKCtfW2MrNjQ+PjNdKyArX1tjKzQ4Pj4zXSkpO2JyZWFrfSgwfGFbcD4+Ml0pPT0oMHxmKT8ocD1+fitfW2MrNTY+PjNdLGY9fn4oLjUqKCtfW2MrNjQ+PjNdKyArX1tjKzQ4Pj4zXSkpKToocD0wLGY9MCl9ZWxzZSBwPX5+KC41KigrX1tjKzU2Pj4zXSsgK19bYys0MD4+M10p''@;'; put 'put ''KSxmPX5+K19bYys2ND4+M119d2hpbGUoMCk7YVtsPj4yXT1wLGFbbCs0Pj4yXT1mfWZ1bmN0aW9uIGZtKGwpe2x8PTA7dmFyIGYscCxjPTAsbT0wLEE9MDtmb3IoZj0wfG1yKDgpLGFbZj4+Ml09bCxhWyhwPWYrNHwwKT4+Ml09MHxtcigxMipsfDApLGM9MDshKCgwfGMpPj0oMHxsKSk7KUE9''@;'; put 'put ''MHxIRSgpLGFbKG09MHxhW3A+PjJdKSsoMTIqY3wwKSs4Pj4yXT1BLGFbbSsoMTIqY3wwKT4+Ml09MCxjPWMrMXwwO3JldHVybiAwfGZ9ZnVuY3Rpb24gWTEobCxjLGYpe3ZhciBwLG07bHw9MCxjfD0wLHA9b2Usb2U9b2UrMTZ8MCxhWyhtPXApPj4yXT1mfD0wLG1pWzYzJmFbKGY9MHxhWygw''@;'; put 'put ''fGFbbCs0Pj4yXSkrKDEyKmN8MCkrOD4+Ml0pPj4yXV0oZixtLDEpLG9lPXB9ZnVuY3Rpb24gVDQobCxjLGYpe3ZhciBwLG07cmV0dXJuIGx8PTAsY3w9MCxwPW9lLG9lPW9lKzE2fDAsYVsobT1wKT4+Ml09Znw9MCxmPTAhPSgwfG1pWzYzJmFbKGY9MHxhWygwfGFbbCs0Pj4yXSkrKDEyKmN8''@;'; put 'put ''MCkrOD4+Ml0pPj4yXV0oZixtLDUxMikpJjEsb2U9cCwwfGZ9ZnVuY3Rpb24gSTQobCl7dmFyIGM9MCxmPTAscD0wLG09MDtzd2l0Y2goMHwoYz0wfGFbKGx8PTApPj4yXSkpe2Nhc2UgMDpicmVhaztjYXNlIDE6YVs0KygwfGFbbCs0Pj4yXSk+PjJdPTA7YnJlYWs7ZGVmYXVsdDpmb3IocD0w''@;'; put 'put ''fGZ1bmN0aW9uIGxFKGwpe2x8PTA7dmFyIGM7cmV0dXJuIGM9MHxtcig4KSxhW2MrND4+Ml09MHxtcihsPDwyKSxhW2M+PjJdPS0xLDB8Y30oYyksbT1sKzR8MCxmPTAsYz0wOzspe2lmKCgwfGYpPj0oMHxhW2w+PjJdKSl7Yz0wO2JyZWFrfTB8YVsoMHxhW20+PjJdKSsoMTIqZnwwKT4+Ml18''@;'; put 'put ''fChjPTB8eWQobCxmLGMscCkpLGY9ZisxfDB9Zm9yKDshKCgwfChmPTB8SFIocCkpKTw9LTEpOylhWygwfGFbbT4+Ml0pKygxMipmfDApKzQ+PjJdPWMsYz1jKzF8MDshZnVuY3Rpb24gc0UobCl7SHQoMHxhWzQrKGx8PTApPj4yXSksSHQobCl9KHApfX1mdW5jdGlvbiB5ZChsLGMsZixwKXtm''@;'; put 'put ''fD0wLHB8PTA7dmFyIHcsYixrLG09MCxBPTA7Zm9yKGFbKGs9KEE9MHxhWyhiPTQrKGx8PTApfDApPj4yXSkrKDEyKihjfD0wKXwwKXwwKT4+Ml09MSx3PTQrKEE9MHxhW0ErKDEyKmN8MCkrOD4+Ml0pfDAsZj1mKzF8MCxBPTB8bzAoQSk7QTspMHxhWygwfGFbYj4+Ml0pKygxMioobT0wfGFb''@;'; put 'put ''KG09KDB8KG09MHxhWzgrKDB8YVt3Pj4yXSk+PjJdKSk8MD8wfGFbQSs4Pj4yXTpBKygwLW0pfDApPj4yXSl8MCk+PjJdfHwoZj0wfHlkKGwsbSxmLHApKSxBPTB8YVtBPj4yXTtyZXR1cm4gYVtrPj4yXT0yLGZ1bmN0aW9uIGhtKGwsYyl7Y3w9MDt2YXIgZjthWyhsfD0wKT4+Ml09Zj0xKygw''@;'; put 'put ''fGFbbD4+Ml0pfDAsYVsoMHxhW2wrND4+Ml0pKyhmPDwyKT4+Ml09Y30ocCxjKSxmKzF8MH1mdW5jdGlvbiBIUihsKXt2YXIgYyxmPTA7cmV0dXJuLTE9PSgwfChjPTB8YVsobHw9MCk+PjJdKSk/bD0tMTooZj0wfGFbKDB8YVtsKzQ+PjJdKSsoYzw8Mik+PjJdLGFbbD4+Ml09YystMSxsPWYp''@;'; put 'put ''LDB8bH1mdW5jdGlvbiBQOChsKXt2YXIgYyxmO3JldHVybiBhWyhmPTB8YVsxNisobHw9MCk+PjJdKSsoNDAqKGM9MHxhW2w+PjJdKXwwKSszMj4+Ml09YyxhW2w+PjJdPWMrMSxmKyg0MCpjfDApfDB9ZnVuY3Rpb24gemMobCxjLGYscCl7Y3w9MCxmfD0wLHA9K3A7dmFyIG0sQT0wO3JldHVy''@;'; put 'put ''biBhWyhBPTQrKGx8PTApfDApPj4yXT0xKyhtPTB8YVtBPj4yXSksbD0oQT0wfGFbbCsyMD4+Ml0pKygyNCptfDApfDAsYVtBKygyNCptfDApKzEyPj4yXT1hW2MrMzI+PjJdLGFbQSsoMjQqbXwwKSsxNj4+Ml09YVtmKzMyPj4yXSxfW2w+PjNdPXAsYVtBKygyNCptfDApKzg+PjJdPTAsY0Uo''@;'; put 'put ''YyxtKSxjRShmLG0pLDB8bH1mdW5jdGlvbiBjRShsLGMpe3ZhciBmLHA7YVsoMHxhWzI4KyhsfD0wKT4+Ml0pKygocD0wfFR0WyhmPWwrMTZ8MCk+PjFdKTw8MTY+PjE2PDwyKT4+Ml09Y3w9MCxUdFtmPj4xXT1wKzE8PDE2Pj4xNn1mdW5jdGlvbiBqUihsLGMsZil7dmFyIHA9MDtyZXR1cm4o''@;'; put 'put ''MHwocD0wfGFbMTIrKGN8PTApPj4yXSkpPT0oMHxhWzMyKyhmfD0wKT4+Ml0pJiYocD0wfGFbYysxNj4+Ml0pLCgwfGFbMTYrKGx8PTApPj4yXSkrKDQwKnB8MCl8MH1mdW5jdGlvbiBDYihsLGMpe3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtQNihBPTB8YVsobHw9MCk+PjJdLDMsY3w9''@;'; put 'put ''MCksYz0wfGFbQSs5Mj4+Ml07ZG97aWYoYyl7aWYoYVtsKzc2Pj4yXT13PTB8YVsxMisoZj0wfGFbYysxNj4+Ml0pPj4yXSxhW2wrODQ+PjJdPXA9MHxhW2YrMTY+PjJdLGFbKG09bCs4MHwwKT4+Ml09YVtmPj4yXSxhW2wrODg+PjJdPWFbYys0Pj4yXSxhWyhmPWwrMTUyfDApPj4yXT1wPWFb''@;'; put 'put ''Zj4+Ml18YVtwPj4yXSxjPTB8YVtBKzgwPj4yXSl7YVtsKzYwPj4yXT1hWzEyKyhBPTB8YVtjKzE2Pj4yXSk+PjJdLGFbbCs2OD4+Ml09Yj0wfGFbQSsxNj4+Ml0sYVtsKzcyPj4yXT1hW2MrND4+Ml0sYVtmPj4yXT1wfGFbYj4+Ml0sYVtsKzY0Pj4yXT1hWygwPT0oMHx3KT9tOkEpPj4yXSxj''@;'; put 'put ''PTMwMDticmVha31hW2wrNjA+PjJdPTAsYz05OTk7YnJlYWt9Yz05OTl9d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBaUihsKXt2YXIgYyxmPTA7cmV0dXJuIGM9MHxhWzYwKyhsfD0wKT4+Ml0sMHxmdW5jdGlvbiBlN2UobCl7dmFyIHcsayxjPTAsZj0wLHA9MCxtPTAsQT0wLGI9MDtr''@;'; put 'put ''PW9lLG9lPW9lKzE2fDAsYj1rKzh8MCx3PWsscD0wfGFbKGx8PTApPj4yXSwwIT0oMHwoYz0wfGFbbCs3Nj4+Ml0pKSYmMCE9KDB8KGY9MHxhW2M+PjJdKSk/KG5vWzEyNyZmXShsKSxtPTEyKTptPTQ7ZG97aWYoND09KDB8bSkpaWYoMD09KDB8YVtsKzQwPj4yXSkmJjA9PSgwfGFbKEE9bCsz''@;'; put 'put ''NnwwKT4+Ml0pKXtpZigwfHVlW3ArMTM+PjBdJiZTRihsKSwhKGY9MHxhWyhjPWwrMzJ8MCk+PjJdKSl7YVtBPj4yXT1hWzE1Njc5XSxtPTEyO2JyZWFrfXA9MHxnUyhmLDEwNjUxMiksYVtBPj4yXT1wLHA/bT0xMjooYj0wfGFbMTYrKDB8YVtsKzEyPj4yXSk+PjJdLEE9MHxhW2M+PjJdLGM9''@;'; put 'put ''MHxNTCgwfGFbNDc2NDNdKSxhW3c+PjJdPUEsYVt3KzQ+PjJdPWMseDJbNjMmYl0oOTgxNjksdyksYz0xKX1lbHNlIG09MTJ9d2hpbGUoMCk7cmV0dXJuIDEyPT0oMHxtKSYmKDEwMjQmYVtsKzE1Mj4+Ml0/KHgyWzYzJmFbMTYrKDB8YVtsKzEyPj4yXSk+PjJdXSg5ODIwNyxiKSxjPTEpOmM9''@;'; put 'put ''MCksb2U9aywwfGN9KGwpP2w9MTooMCE9KDB8YykmJjAhPSgwfChmPTB8YVtjPj4yXSkpJiZub1sxMjcmZl0obCksbD0wKSwwfGx9ZnVuY3Rpb24gSTkobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzQ+PjJdKSYmbm9bMTI3JmZdKGwpLGFbMjQrKDB8''@;'; put 'put ''YVtsPj4yXSk+PjJdPTAsd0MobCl9ZnVuY3Rpb24ga2IobCxjLGYpe2Z8PTA7dmFyIHcscD0wLG09MCxBPTA7cD0rX1s1MDQrKGN8PTApPj4zXSxtPStfW2MrNTEyPj4zXSwwfGFbYyszNjA+PjJdP0E9LShtKyArX1tmKzg+PjNdKTooQT0rX1tmPj4zXStwLGY9Zis4fDAscD1tKSxtPStfW2Mr''@;'; put 'put ''NTI4Pj4zXSoodz0rX1tjKzM1Mj4+M10pKigrX1tmPj4zXStwKSxfWyhsfD0wKT4+M109K19bYys1MjA+PjNdKncqQSxfW2wrOD4+M109bX1mdW5jdGlvbiBwZihsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbSxBLGIsdz0wLGs9MDttPStfWzUwNCsobHw9MCk+PjNdLEE9K19bbCs1MTI+''@;'; put 'put ''PjNdLGI9K19bbCs1MjA+PjNdKih3PStfW2wrMzUyPj4zXSksdyo9K19bbCs1Mjg+PjNdO2U6ZG97aWYoMHxhW2wrMzYwPj4yXSlmb3IobD0wOzspe2lmKCgwfGwpPj0oMHxwKSlicmVhayBlO2s9LWIqKCtfW2MrKGw8PDQpKzg+PjNdK0EpLF9bZisobDw8NCkrOD4+M109KCtfW2MrKGw8PDQp''@;'; put 'put ''Pj4zXSttKSp3LF9bZisobDw8NCk+PjNdPWssbD1sKzF8MH1lbHNlIGZvcihsPTA7Oyl7aWYoKDB8bCk+PSgwfHApKWJyZWFrIGU7X1tmKyhsPDw0KT4+M109KCtfW2MrKGw8PDQpPj4zXSttKSpiLF9bZisobDw8NCkrOD4+M109KCtfW2MrKGw8PDQpKzg+PjNdK0EpKncsbD1sKzF8MH19d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBwRShsKXt2YXIgYz0wLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYysxNj4+Ml0pJiZGYVszMSZmXShsLDB8YVsoMHxhWzMwOCsoMHxhW2w+PjJdKT4+Ml0pKygoYz0wfGFbbCsxNjA+PjJdKTw8Mik+PjJdLGMsMHxhW2wr''@;'; put 'put ''MTU2Pj4yXSl9ZnVuY3Rpb24geUcobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzIwPj4yXSkmJm5vWzEyNyZmXShsKX1mdW5jdGlvbiBEOShsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrNDA+PjJdKSYmbm9b''@;'; put 'put ''MTI3JmZdKGwpfWZ1bmN0aW9uIEY4KGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys0ND4+Ml0pJiZub1sxMjcmZl0obCl9ZnVuY3Rpb24gd2QobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzQ4Pj4yXSkmJm5v''@;'; put 'put ''WzEyNyZmXShsKX1mdW5jdGlvbiB3MyhsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrNTI+PjJdKSYmbm9bMTI3JmZdKGwpfWZ1bmN0aW9uIHcxKGwsYyxmLHAsbSl7dmFyIEEsdz0wOzB8KEE9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfCh3PTB8YVtBKzcy''@;'; put 'put ''Pj4yXSkmJm4zWzE1JnddKGwsY3w9MCxmfD0wLHB8PTAsbXw9MCl9ZnVuY3Rpb24ga2gobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzc2Pj4yXSkmJm5vWzEyNyZmXShsKX1mdW5jdGlvbiBOOChsLGMpe3ZhciBmLHA9MDswfChmPTB8YVs2MCsobHw9''@;'; put 'put ''MCk+PjJdKSYmMHwocD0wfGFbZis4MD4+Ml0pJiZ4Mls2MyZwXShsLGN8PTApfWZ1bmN0aW9uIHhiKGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys4ND4+Ml0pJiZub1sxMjcmZl0obCl9ZnVuY3Rpb24gU2gobCxjLGYpe2N8PTA7dmFyIHAsQSx3LGIs''@;'; put 'put ''ayxtPTAsTT0wO2s9b2Usb2U9b2UrNDh8MCxwPWsrMzJ8MCxBPWssdz1rKzE2fDAsYj0wfGFbNjArKGx8PTApPj4yXSxNPTB8YVsoZnw9MCk+PjJdO2Rve2lmKDB8TSYmMHx1ZVtNPj4wXSl7aWYoMHwoTT0wfGFbbCsxNj4+Ml0pJiYwPT0oMHxhW00rMTQ0Pj4yXSkpYnJlYWs7ODE5MiZhW2wr''@;'; put 'put ''MTUyPj4yXT8oYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0pOihhW3A+PjJdPWFbYz4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJdLGFbcCsxMj4+Ml09YVtjKzEyPj4y''@;'; put 'put ''XSxrYih3LGwscCksYVtBPj4yXT1hW3c+PjJdLGFbQSs0Pj4yXT1hW3crND4+Ml0sYVtBKzg+PjJdPWFbdys4Pj4yXSxhW0ErMTI+PjJdPWFbdysxMj4+Ml0pLDB8YiYmMHwobT0wfGFbYis4OD4+Ml0pJiYoYVtwPj4yXT1hW0E+PjJdLGFbcCs0Pj4yXT1hW0ErND4+Ml0sYVtwKzg+PjJdPWFb''@;'; put 'put ''QSs4Pj4yXSxhW3ArMTI+PjJdPWFbQSsxMj4+Ml0sTmxbMTI3Jm1dKGwscCxmKSl9fXdoaWxlKDApO29lPWt9ZnVuY3Rpb24gZ2EobCxjKXt2YXIgcCxtLEEsdyxmPTA7cD0wfGFbNjArKGx8PTApPj4yXSxtPTE2KygwfGFbbCsxNj4+Ml0pfDAsKEE9MCE9KDB8KHc9MHxVcyhjfD0wLDU4KSkp''@;'; put 'put ''KSYmKHVlW3c+PjBdPTApLDB8cCYmKHQ2KDB8YVtsKzY4Pj4yXSxjLG0pLDB8KGY9MHxhW3ArOTI+PjJdKSkmJngyWzYzJmZdKGwsbSksQSYmKHVlW3c+PjBdPTU4KX1mdW5jdGlvbiB0NihsLGMsZil7bHw9MDt2YXIgcCxtLEEsYixrLE0sdz0wO009b2Usb2U9b2UrMzJ8MCxBPU0rMTZ8MCxr''@;'; put 'put ''PU0rOHwwLGI9TSxhWyhmfD0wKT4+Ml09Y3w9MCxhW2YrMzI+PjJdPTUscD0wfFo4KGMpLDAhPSgwfChtPTB8YVtsKzE2Pj4yXSkpJiYwIT0oMHxjdyhwLG0sMHxhW2wrMjA+PjJdLDQsMTAyKSl8fCh3PTMpO2U6ZG97aWYoMz09KDB8dykpe3N3aXRjaCgwfHI2KGMsZiwwfGFbbCsyND4+Ml0p''@;'; put 'put ''KXtjYXNlIDA6YnJlYWsgZTtjYXNlIDE6YnJlYWs7ZGVmYXVsdDpYcigxLDExMTA0NixBKTticmVhayBlfWw9MHxRbigxNisoMHx6byhjKSl8MCksYVtiPj4yXT1jLGFvKGwsMTExMDExLGIpLDB8SG9lKGwpJiYoYVtrPj4yXT1jLFhyKDAsMTExMDIwLGspKSxIdChsKX19d2hpbGUoMCk7b2U9''@;'; put 'put ''TX1mdW5jdGlvbiBvbChsLGMpe3ZhciBwLG0sQSx3LGY9MDtwPTB8YVs2MCsobHw9MCk+PjJdLG09NTYrKDB8YVtsKzE2Pj4yXSl8MCwoQT0wIT0oMHwodz0wfFVzKGN8PTAsNTgpKSkpJiYodWVbdz4+MF09MCksMHxwJiYodDYoMHxhW2wrNjg+PjJdLGMsbSksMHwoZj0wfGFbcCs5Mj4+Ml0p''@;'; put 'put ''KSYmeDJbNjMmZl0obCxtKSxBJiYodWVbdz4+MF09NTgpfWZ1bmN0aW9uIEdmKGwsYyxmLHApe2Z8PTAscD0rcDt2YXIgQSx3LG09MCxiPTA7Yj05NisoMHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pfDAsMHwoQT0wfGFbbCs2MD4+Ml0pJiYodDYoMHxhW2wrNjg+PjJdLGN8PTAsYiksMHwobT0w''@;'; put 'put ''fGFbQSs5Mj4+Ml0pKSYmeDJbNjMmbV0obCxiKSxhWzEzNisoYj0wfGFbdz4+Ml0pPj4yXT1mLFduW2IrMTQwPj4yXT1wfWZ1bmN0aW9uIEdjKGwsYyl7dmFyIGIsayxmPTAscD0wLG09MCxBPTAsdz0wO2s9b2Usb2U9b2UrMTZ8MCxiPWssdz0wfGFbNjArKGx8PTApPj4yXSxhWzE2MCsobD0w''@;'; put 'put ''fGFbbCsxNj4+Ml0pPj4yXT1jfD0wO2U6ZG97aWYoMCE9KDB8YykmMCE9KDB8dykpe3c9bCsxNDR8MCxBPWwrMTUyfDAsbT1sKzE0OHwwLGw9Yzt0OmZvcig7Oyl7aWYocD1sKzR8MCwhKGw9MHxhW2w+PjJdKSlicmVhayBlO246ZG97c3dpdGNoKDB8dWVbbD4+MF0pe2Nhc2UgMTE1OmlmKCEo''@;'; put 'put ''MHxaaShsLDExMTA2NykpKXthW3c+PjJdPTMsbD1wO2NvbnRpbnVlIHR9aWYoISgwfFppKGwsMTExMDg4KSkpe2ZvcihmPTExNTtjPWwrMXwwLGY8PDI0Pj4yNDspbD1jLGY9MHx1ZVtjPj4wXTtfW0E+PjNdPStwcChjKSxsPXA7Y29udGludWUgdH1icmVhaztjYXNlIDEwMDppZighKDB8Wmko''@;'; put 'put ''bCwxMzczMjcpKSl7YVt3Pj4yXT0xLGw9cDtjb250aW51ZSB0fWlmKCEoMHxaaShsLDEzNzMyMCkpKXthW3c+PjJdPTIsbD1wO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMDU6aWYoMHxaaShsLDEzNDMzNSkmJjB8WmkobCwxMTEwNzMpKWJyZWFrIG47YVt3Pj4yXT0wLGw9cDtjb250aW51ZSB0''@;'; put 'put ''O2Nhc2UgOTg6aWYoISgwfFppKGwsMTExMDgzKSkpe19bQT4+M109MixsPXA7Y29udGludWUgdH1icmVhaztjYXNlIDEwMjppZighKDB8WmkobCwxMTExMDEpKSl7YVttPj4yXT0xLGw9cDtjb250aW51ZSB0fWJyZWFrO2Nhc2UgMTE3OmlmKCEoMHxaaShsLDExMTEwOCkpKXthW20+PjJdPTAs''@;'; put 'put ''bD1wO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMTY6aWYoISgwfFppKGwsMTExMTE3KSkpe2w9cDtjb250aW51ZSB0fX19d2hpbGUoMCk7YVtiPj4yXT1sLFhyKDAsMTExMTI1LGIpLGw9cH19fXdoaWxlKDApO29lPWt9ZnVuY3Rpb24gVTEobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEEs''@;'; put 'put ''YixtPTAsdz0wO2I9b2Usb2U9b2UrMzJ8MCxBPWIsMHwoZj0wfGFbNjArKGx8PTApPj4yXSkmJjB8KG09MHxhWyh3PWYrOTZ8MCk+PjJdKSYmMHxhWzE0NCsoMHxhW2wrMTY+PjJdKT4+Ml0mJihfW0E+PjNdPS41KigrX1soZj1jKzE2fDApPj4zXSsgK19bYz4+M10pLF9bQSs4Pj4zXT0uNSoo''@;'; put 'put ''K19bYysyND4+M10rICtfW2MrOD4+M10pLGFbKGM9QSsxNnwwKT4+Ml09YVtmPj4yXSxhW2MrND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLDgxOTImYVtsKzE1Mj4+Ml18fChwZihsLEEsQSwyKSxtPTB8YVt3Pj4yXSksTmxbMTI3Jm1d''@;'; put 'put ''KGwsQSxwKSksb2U9Yn1mdW5jdGlvbiBYbyhsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgRCxHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MDtpZihHPW9lLG9lPW9lKzQ4fDAsRD1HLDB8KG09MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfGFbKFI9bSsxMDB8MCk+PjJdJiYwfGFbMTQ0Kyhr''@;'; put 'put ''PTB8YVsoTT1sKzE2fDApPj4yXSk+PjJdKXtpZig0JnApe209LTUmcCx3PXA9aysxNnwwLGI9KEE9RCkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTt3PWsrNTZ8MCxiPShBPXApKzQwfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0''@;'; put 'put ''fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7QT0xfWVsc2UgbT1wLEE9MDtpZig4MTkyJmFbbCsxNTI+PjJdP0ZhWzMxJmFbUj4+Ml1dKGwsYyxmLG0pOihwPWYrMTB8MCwoMHxhWzQ3MzYzXSk8KDB8Zik/KGFbNDczNjNdPXAscD0wfGwwKDB8YVs0NzM2NF0scDw8NCksYVs0NzM2NF09''@;'; put 'put ''cCk6cD0wfGFbNDczNjRdLHBmKGwsYyxwLGYpLEZhWzMxJmFbUj4+Ml1dKGwscCxmLG0pKSwwfEEpe3c9RCxiPTQwKyhBPTE2KygwfGFbTT4+Ml0pfDApfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSl9fW9lPUd9ZnVuY3Rpb24gYjMobCxj''@;'; put 'put ''LGYpe3ZhciBwLG0sQTtsfD0wLGZ8PTAscD1vZSxvZT1vZSs2NHwwLGFbKG09cCk+PjJdPWFbKGN8PTApPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLGFbKEE9bSszMnwwKT4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW0Er''@;'; put 'put ''ND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLF9bbSsxNj4+M109K19bbT4+M10sX1ttKzI0Pj4zXT0rX1ttKzQwPj4zXSxfW20rNDg+PjNdPStfW0E+PjNdLF9bbSs1Nj4+M109K19bbSs4Pj4zXSxYbyhsLG0sNCxmKSxvZT1wfWZ1bmN0''@;'; put 'put ''aW9uIFdmKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIGIsdz0wLGs9MDtiPTB8YVs2MCsobHw9MCk+PjJdO2Rve2lmKDB8YiYmMHwodz0wfGFbKGs9YisxMDR8MCk+PjJdKSYmMHxhWzE0NCsoMHxhW2wrMTY+PjJdKT4+Ml0pe2lmKDgxOTImYVtsKzE1Mj4+Ml18''@;'; put 'put ''MCl7Z3dbMTUmd10obCxjLGYscCxtLDI1NSZBKTticmVha313PWYrMTB8MCwoMHxhWzQ3MzYzXSk8KDB8Zik/KGFbNDczNjNdPXcsdz0wfGwwKDB8YVs0NzM2NF0sdzw8NCksYVs0NzM2NF09dyk6dz0wfGFbNDczNjRdLHBmKGwsYyx3LGYpLGd3WzE1JmFbaz4+Ml1dKGwsdyxmLHAsbSwyNTUm''@;'; put 'put ''QSl9fXdoaWxlKDApfWZ1bmN0aW9uIFdvKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO3A9MHxhWzYwKyhsfD0wKT4+Ml07ZG97aWYoMHxwJiYwfChtPTB8YVsoQT1wKzEwOHwwKT4+Ml0pJiYwfGFbMTQ0KygwfGFbbCsxNj4+Ml0pPj4yXSl7aWYoODE5MiZhW2wrMTUyPj4yXXww''@;'; put 'put ''KXtObFsxMjcmbV0obCxjLGYpO2JyZWFrfXA9ZisxMHwwLCgwfGFbNDczNjNdKTwoMHxmKT8oYVs0NzM2M109cCxwPTB8bDAoMHxhWzQ3MzY0XSxwPDw0KSxhWzQ3MzY0XT1wKTpwPTB8YVs0NzM2NF0scGYobCxjLHAsZiksTmxbMTI3JmFbQT4+Ml1dKGwscCxmKX19d2hpbGUoMCl9ZnVuY3Rp''@;'; put 'put ''b24gZG0obCxjKXt2YXIgZixwPTA7Zj0wfGFbNjArKGx8PTApPj4yXSwwfChjfD0wKSYmISgwPT0oMHxmKXwwPT0oMHx1ZVtjPj4wXSkpJiYwfChwPTB8YVtmKzExMj4+Ml0pJiZ4Mls2MyZwXShsLGMpfWZ1bmN0aW9uIGdFKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7''@;'; put 'put ''dmFyIEJlLEhlLHJ0LEdlLGx0LE10LGt0LHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLGplPTAsZXQ9MCxhdD0wO2lmKGt0PW9lLG9lPW9lKzExMnwwLHJ0PWt0KzY0fDAsTXQ9a3QsTT1rdCs5NnwwLEJlPWt0KzQ4fDAsSGU9a3QrMzJ8''@;'; put 'put ''MCxHZT0wfGFbNjArKGx8PTApPj4yXSxsfHxCcigxMTEyODIsMTExMTc4LDY5MSwxMTExODkpLGN8fEJyKDExMTIwOCwxMTExNzgsNjkyLDExMTE4OSksMHx1ZVtjPj4wXXx8QnIoMTExMjEzLDExMTE3OCw2OTMsMTExMTg5KSxsdD0wfGNXKGMpKXtpZihhW3J0Pj4yXT1hWyhwZT1sKzQzMnww''@;'; put 'put ''KT4+Ml0sYVtydCs0Pj4yXT1hW3BlKzQ+PjJdLGFbcnQrOD4+Ml09YVtwZSs4Pj4yXSxhW3J0KzEyPj4yXT1hW3BlKzEyPj4yXSxJRihNLGx0LHJ0KSwhKCgwfChwZT0wfGFbTT4+Ml0pKTwxJigwfChrPTB8YVtNKzQ+PjJdKSk8MSkpe2ZvcihhWyhNPU10KzE2fDApPj4yXT1hW2Y+PjJdLGFb''@;'; put 'put ''TSs0Pj4yXT1hW2YrND4+Ml0sYVtNKzg+PjJdPWFbZis4Pj4yXSxhW00rMTI+PjJdPWFbZisxMj4+Ml0sYVtNdD4+Ml09YVtmPj4yXSxhW010KzQ+PjJdPWFbZis0Pj4yXSxhW010Kzg+PjJdPWFbZis4Pj4yXSxhW010KzEyPj4yXT1hW2YrMTI+PjJdLGplPU10Kzh8MCxldD1NdCsyNHwwLGM9''@;'; put 'put ''MTshKCgwfGMpPj0oMHxwKSk7KV9bTXQ+PjNdPStfWygrX1tNdD4+M108KE9lPStfWyhhdD1mKyhjPDw0KXwwKT4+M10pP010OmF0KT4+M10sX1tqZT4+M109K19bKCtfW2plPj4zXTwoTGU9K19bZisoYzw8NCkrOD4+M10pP010OmF0KSs4Pj4zXSxfW00+PjNdPStfWygrX1tNPj4zXT5PZT9N''@;'; put 'put ''OmF0KT4+M10sX1tldD4+M109K19bKCtfW2V0Pj4zXT5MZT9NOmF0KSs4Pj4zXSxjPWMrMXwwO0c9KG1lPShiPStfW00+PjNdKS0odz0rX1tNdD4+M10pKS8oUj0rKDB8cGUpKSxLPShMZT0oYmU9K19bZXQ+PjNdKS0oT2U9K19bamU+PjNdKSkvKEQ9KygwfGspKTtlOmRve3N3aXRjaCgwfFdS''@;'; put 'put ''KEEpKXtjYXNlIDE6aWYoRzxLKXtSKj1HLEQqPUc7YnJlYWsgZX1SKj1LLEQqPUs7YnJlYWsgZTtjYXNlIDI6Uio9RzticmVhaztjYXNlIDM6RCo9SzticmVhaztjYXNlIDQ6Uio9RyxEKj1LfX13aGlsZSgwKTtSPG1lJiYoX1tNdD4+M109dys9bWU9LjUqKG1lLVIpLF9bTT4+M109Yi09bWUp''@;'; put 'put ''LEQ8TGUmJihfW2plPj4zXT1PZSsoTGU9LjUqKExlLUQpKSxfW2V0Pj4zXT1iZS1MZSksODE5MiZhW2wrMTUyPj4yXXx8KGFbcnQ+PjJdPWFbTXQ+PjJdLGFbcnQrND4+Ml09YVtNdCs0Pj4yXSxhW3J0Kzg+PjJdPWFbTXQrOD4+Ml0sYVtydCsxMj4+Ml09YVtNdCsxMj4+Ml0sa2IoQmUsbCxy''@;'; put 'put ''dCksYVtNdD4+Ml09YVtCZT4+Ml0sYVtNdCs0Pj4yXT1hW0JlKzQ+PjJdLGFbTXQrOD4+Ml09YVtCZSs4Pj4yXSxhW010KzEyPj4yXT1hW0JlKzEyPj4yXSxhW3J0Pj4yXT1hW00+PjJdLGFbcnQrND4+Ml09YVtNKzQ+PjJdLGFbcnQrOD4+Ml09YVtNKzg+PjJdLGFbcnQrMTI+PjJdPWFbTSsx''@;'; put 'put ''Mj4+Ml0sa2IoSGUsbCxydCksYVtNPj4yXT1hW0hlPj4yXSxhW00rND4+Ml09YVtIZSs0Pj4yXSxhW00rOD4+Ml09YVtIZSs4Pj4yXSxhW00rMTI+PjJdPWFbSGUrMTI+PjJdLGI9K19bTT4+M10sdz0rX1tNdD4+M10pLHc+YiYmKF9bTXQ+PjNdPWIsX1tNPj4zXT13KSwodz0rX1tqZT4+M10p''@;'; put 'put ''PihiPStfW2V0Pj4zXSkmJihfW2plPj4zXT1iLF9bZXQ+PjNdPXcpLDB8R2UmJihhdD0wfGFbbCs3Mj4+Ml0sYVtydD4+Ml09YVtNdD4+Ml0sYVtydCs0Pj4yXT1hW010KzQ+PjJdLGFbcnQrOD4+Ml09YVtNdCs4Pj4yXSxhW3J0KzEyPj4yXT1hW010KzEyPj4yXSxhW3J0KzE2Pj4yXT1hW010''@;'; put 'put ''KzE2Pj4yXSxhW3J0KzIwPj4yXT1hW010KzIwPj4yXSxhW3J0KzI0Pj4yXT1hW010KzI0Pj4yXSxhW3J0KzI4Pj4yXT1hW010KzI4Pj4yXSxmdW5jdGlvbiBVUihsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEEsYixrLEQsdz0wLE09MDtEPW9lLG9lPW9lKzE3NnwwLGs9RCs4''@;'; put 'put ''fDAsYj1ELEE9RCs0MHwwLChsfD0wKXx8QnIoMTExMjgyLDExMTI4Niw1MiwxMTEzMDApLGN8fEJyKDExMTMxMiwxMTEyODYsNTMsMTExMzAwKSwodz0wfGFbYys4Pj4yXSl8fEJyKDExMTMxNSwxMTEyODYsNTQsMTExMzAwKSwwfHVlW3c+PjBdfHxCcigxMTEzMjQsMTExMjg2LDU1LDExMTMw''@;'; put 'put ''MCksJDMoQSwwfGFbYysyOD4+Ml0pLHc9QSsoMHx6byhBKSl8MCx1ZVt3Pj4wXT01OCx1ZVt3KzE+PjBdPTAsQXYoQSxtKSw5OTk9PSgwfGZ1bmN0aW9uIFFSKGwsYyl7cmV0dXJuKGM9MHxQNigwfGFbKGx8PTApPj4yXSw0LGN8PTApKT8oYVtsKzkyPj4yXT1hWzEyKyhjPTB8YVtjKzE2Pj4y''@;'; put 'put ''XSk+PjJdLGFbbCs5Nj4+Ml09YVtjPj4yXSxjPTMwMCk6Yz05OTksMHxjfShsLEEpKSYmKGFbYj4+Ml09QSxYcigwLDExMTMzNixiKSksMHwobT0wfGFbbCs5Mj4+Ml0pJiYwfChNPTB8YVttPj4yXSkmJihhW2s+PjJdPWFbZj4+Ml0sYVtrKzQ+PjJdPWFbZis0Pj4yXSxhW2srOD4+Ml09YVtm''@;'; put 'put ''Kzg+PjJdLGFbaysxMj4+Ml09YVtmKzEyPj4yXSxhW2srMTY+PjJdPWFbZisxNj4+Ml0sYVtrKzIwPj4yXT1hW2YrMjA+PjJdLGFbaysyND4+Ml09YVtmKzI0Pj4yXSxhW2srMjg+PjJdPWFbZisyOD4+Ml0sRmFbMzEmTV0obCxjLGsscCkpLG9lPUR9KGwsbHQscnQsbSxhdCkpfX1lbHNlIDAh''@;'; put 'put ''PSgwfEdlKSYwIT0oMHxCTihjKSkmJjB8KGs9MHxhW0dlKzExNj4+Ml0pJiZuM1sxNSZrXShsLGMsZixwLDI1NSZtKTtvZT1rdH1mdW5jdGlvbiBXUihsKXtyZXR1cm4gMHwoMHx1ZVsobHw9MCk+PjBdPzB8QTAobCwxNDExMTYpPzB8QTAobCwxNDEwNDgpPzB8QTAobCwxMTEyMjEpPygwfHIx''@;'; put 'put ''KGwpKTw8MjQ+PjI0IT0wJjE6NDozOjI6MCl9ZnVuY3Rpb24gWWYobCxjKXtjPStjLDB8YVs2MCsobHw9MCk+PjJdJiYoX1sxNTIrKDB8YVtsKzE2Pj4yXSk+PjNdPWMpfWZ1bmN0aW9uIG1FKGwsYyl7cmV0dXJuKGM9MHxQNihsfD0wLDEsY3w9MCkpPyhhW2wrMTg0Pj4yXT1hWzQrKGM9MHxh''@;'; put 'put ''W2MrMTY+PjJdKT4+Ml0sYVtsKzE3Mj4+Ml09YVtjKzEyPj4yXSxhW2wrMTc2Pj4yXT1hW2M+PjJdLGFbbCsxODA+PjJdPWFbYysxNj4+Ml0sYz0zMDApOmM9OTk5LDB8Y31mdW5jdGlvbiBPOShsLGMpe2x8PTA7dmFyIHAsbSxBLHcsYixrLGY9MDtwPW9lLG9lPW9lKzgwfDAsbT1wLGs9cCsz''@;'; put 'put ''MnwwLGFbKGY9cCs0OHwwKT4+Ml09YVsoY3w9MCk+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sZnVuY3Rpb24gS1IobCxjLGYpe2Z8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MDswfGFbMzYwKyhjfD0wKT4+Ml0/KG09LStf''@;'; put 'put ''W2Y+PjNdLEE9cD0rX1tjKzM1Mj4+M10sdz1jKzUyMHwwLHA9K19bZis4Pj4zXS8oK19bYys1Mjg+PjNdKnApLStfW2MrNTA0Pj4zXSk6KG09K19bZis4Pj4zXSxBPXA9K19bYyszNTI+PjNdLHc9Yys1Mjh8MCxwPStfW2Y+PjNdLygrX1tjKzUyMD4+M10qcCktK19bYys1MDQ+PjNdKSxBPW0v''@;'; put 'put ''KCtfW3c+PjNdKkEpLStfW2MrNTEyPj4zXSxfWyhsfD0wKT4+M109cCxfW2wrOD4+M109QX0oayxsLGYpLHc9K19bays4Pj4zXSxfW20rMTY+PjNdPShBPTEvK19bbCszNTI+PjNdKSsoYj0rX1trPj4zXSksX1ttKzI0Pj4zXT1BK3csX1ttPj4zXT1iLUEsX1ttKzg+PjNdPXctQSxjPTB8YVsx''@;'; put 'put ''NjgrKDB8YVtsPj4yXSk+PjJdLGFbZj4+Ml09YVttPj4yXSxhW2YrND4+Ml09YVttKzQ+PjJdLGFbZis4Pj4yXT1hW20rOD4+Ml0sYVtmKzEyPj4yXT1hW20rMTI+PjJdLGFbZisxNj4+Ml09YVttKzE2Pj4yXSxhW2YrMjA+PjJdPWFbbSsyMD4+Ml0sYVtmKzI0Pj4yXT1hW20rMjQ+PjJdLGFb''@;'; put 'put ''ZisyOD4+Ml09YVttKzI4Pj4yXSxjPTB8ZnVuY3Rpb24gJFIobCxjKXtjfD0wO3ZhciBtLEEsZj0wLHA9MDtBPW9lLG9lPW9lKzMyfDAsbT1BLHA9MHxMdChsfD0wKTtlOmZvcig7Oyl7aWYoIXApe3A9OTticmVha31mb3IoZj0wfHkwKGwscCk7Zjspe2lmKGFbbT4+Ml09YVtjPj4yXSxhW20r''@;'; put 'put ''ND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLGFbbSsxNj4+Ml09YVtjKzE2Pj4yXSxhW20rMjA+PjJdPWFbYysyMD4+Ml0sYVttKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbbSsyOD4+Ml09YVtjKzI4Pj4yXSwoMHxJbGUoZixtKSk8PDI0Pj4y''@;'; put 'put ''NCl7cD02O2JyZWFrIGV9Zj0wfGswKGwsZil9cD0wfHp0KGwscCl9ZG97aWYoNiE9KDB8cCkmJjk9PSgwfHApKXtmb3IoZj0wfGZuKGwpO2Y7KXtpZihhW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxh''@;'; put 'put ''W20rMTY+PjJdPWFbYysxNj4+Ml0sYVttKzIwPj4yXT1hW2MrMjA+PjJdLGFbbSsyND4+Ml09YVtjKzI0Pj4yXSxhW20rMjg+PjJdPWFbYysyOD4+Ml0sKDB8eGxlKGYsbSkpPDwyND4+MjQpe3A9MTI7YnJlYWt9Zj0wfEluKGwsZil9aWYoMTI9PSgwfHApfHwoYVttPj4yXT1hW2M+PjJdLGFb''@;'; put 'put ''bSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sYVttKzE2Pj4yXT1hW2MrMTY+PjJdLGFbbSsyMD4+Ml09YVtjKzIwPj4yXSxhW20rMjQ+PjJdPWFbYysyND4+Ml0sYVttKzI4Pj4yXT1hW2MrMjg+PjJdLGY9MHxPYihsLG0pKSlicmVh''@;'; put 'put ''aztmPWw7YnJlYWt9fXdoaWxlKDApO3JldHVybiBvZT1BLDB8Zn0oYyxmKSwoMHxjKSE9KDB8YVsoZj1sKzU3NnwwKT4+Ml0pJiYoZnVuY3Rpb24gYkUobCl7dmFyIGM9MDtjPTB8YVs1NzYrKGx8PTApPj4yXTtlOmRve2lmKDB8Yylzd2l0Y2goMHxNaShjKSl7Y2FzZSAwOnVlWyhjPTExMiso''@;'; put 'put ''MHxhW2MrMTY+PjJdKXwwKT4+MF09LTImdWVbYz4+MF07YnJlYWsgZTtjYXNlIDE6dWVbKGM9MTE3KygwfGFbYysxNj4+Ml0pfDApPj4wXT0tMiZ1ZVtjPj4wXTticmVhayBlO2Nhc2UgMjp1ZVsoYz0xMTUrKDB8YVtjKzE2Pj4yXSl8MCk+PjBdPS0yJnVlW2M+PjBdO2JyZWFrIGU7ZGVmYXVs''@;'; put 'put ''dDpicmVhayBlfX13aGlsZSgwKTthW2wrNTg0Pj4yXT0wfShsKSxhW2Y+PjJdPWMsZnVuY3Rpb24gUjkobCl7dmFyIGYsYz0wOzB8KGM9MHxhWyhmPTU4NCsobHw9MCl8MCk+PjJdKSYmKEh0KGMpLGFbZj4+Ml09MCksYz0wfGFbbCs1NzY+PjJdO2U6ZG97aWYoMHxjKXN3aXRjaCgwfE1pKGMp''@;'; put 'put ''KXtjYXNlIDA6aWYodWVbKGw9MTEyKygwfGFbYysxNj4+Ml0pfDApPj4wXT0xfHVlW2w+PjBdLCEobD0wfHNpKGMsMCwxNDExMDEsMCkpKWJyZWFrIGU7YVtmPj4yXT0wfHYyKDB8Rm8oYyxsKSxjKTticmVhayBlO2Nhc2UgMTppZih1ZVsobD0xMTcrKDB8YVtjKzE2Pj4yXSl8MCk+PjBdPTF8''@;'; put 'put ''dWVbbD4+MF0sIShsPTB8c2koMHxmcihjKSwxLDE0MTEwMSwwKSkpYnJlYWsgZTthW2Y+PjJdPTB8djIoMHxGbyhjLGwpLGMpO2JyZWFrIGU7Y2FzZSAyOmlmKHVlWyhsPTExNSsoMHxhW2MrMTY+PjJdKXwwKT4+MF09MXx1ZVtsPj4wXSwhKGw9MHxzaSgwfGZyKDB8YVsoMj09KDMmYVtjPj4y''@;'; put 'put ''XXwwKT9jOmMrLTQ4fDApKzQwPj4yXSksMiwxNDExMDEsMCkpKWJyZWFrIGU7YVtmPj4yXT0wfHYyKDB8Rm8oYyxsKSxjKTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCl9KGwpLHVlW2wrNTM3Pj4wXT0xKSxvZT1wfWZ1bmN0aW9uIE9iKGwsYyl7Y3w9MDt2YXIgcCxBLHcsYixN''@;'; put 'put ''LGY9MCxtPTAsaz0wO2ZvcihNPW9lLG9lPW9lKzMyfDAscD1NLHc9MHxhWzE4MCsoQT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLGI9QSsxODR8MCxmPTE7Oyl7aWYoKDB8Zik+KDB8dykpe2s9NDticmVha31pZihtPTB8YVsoMHxhW2I+PjJdKSsoZjw8Mik+PjJdLGFbcD4+Ml09YVtjPj4yXSxh''@;'; put 'put ''W3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0sYVtwKzEyPj4yXT1hW2MrMTI+PjJdLGFbcCsxNj4+Ml09YVtjKzE2Pj4yXSxhW3ArMjA+PjJdPWFbYysyMD4+Ml0sYVtwKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbcCsyOD4+Ml09YVtjKzI4Pj4yXSxtPTB8T2IobSxwKSl7bD1t''@;'; put 'put ''O2JyZWFrfWY9ZisxfDB9ZG97aWYoND09KDB8aykpe2lmKCtfW2MrMTY+PjNdPj0rX1tBKzE2Pj4zXSYmK19bQSszMj4+M10+PStfW2M+PjNdJiYrX1tjKzI0Pj4zXT49K19bQSsyND4+M10mJitfW0ErNDA+PjNdPj0rX1tjKzg+PjNdKWJyZWFrO2w9MH19d2hpbGUoMCk7cmV0dXJuIG9lPU0s''@;'; put 'put ''MHxsfWZ1bmN0aW9uIEI5KGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wLEE9MDtmPTU5MisobHw9MCl8MDtkb3tpZigoMHxoaShjKSk9PSgwfGMpKXtpZigwfGxjKGMpKXtGdShmLDAsMTExNDg2KTticmVha31GdShmLDAsMTExNDk0KTticmVha31GdShmLDAsMTExNTAwKX13aGlsZSgwKTtmb3Io''@;'; put 'put ''RnUoZiwxLDB8JHIoYykpLGFbbCs1OTY+PjJdPTIsbT1sKzYwNHwwLGY9MCxwPTI7Zj0wfFBzKGMsMCxmKTspRnUobSxwLDB8YVtmKzg+PjJdKSxGdShtLHArMXwwLDB8Rm8oYyxmKSksRnUobSxwKzJ8MCwwKSxwPXArM3wwO2FbbCs2MDg+PjJdPXAsKChmPTB8c2koYywwLDE0MTA1NSwwKSl8''@;'; put 'put ''fDB8KGY9MHxzaShjLDAsMTExNDc3LDApKSkmJihBPTExKSwxMT09KDB8QSkmJihhW2wrNTg4Pj4yXT0wfHYyKDB8Rm8oYyxmKSxjKSl9ZnVuY3Rpb24gV2wobCxjKXtjfD0wO3ZhciBBLGY9MCxwPTAsbT0wLHc9MDtmb3IoRnUobT01OTIrKGx8PTApfDAsMCwxMTE0ODEpLEZ1KG0sMSwwfCRy''@;'; put 'put ''KGMpKSxhW2wrNTk2Pj4yXT0yLG09bCs2MDR8MCxBPTB8aGkoMHxmcihjKSkscD0yLGY9MDtmPTB8UHMoQSwxLGYpOylGdShtLHAsMHxhW2YrOD4+Ml0pLEZ1KG0sMXxwLDB8Rm8oYyxmKSkscD1wKzJ8MDthW2wrNjA4Pj4yXT1wLCgoZj0wfHNpKDB8ZnIoYyksMSwxNDEwNTUsMCkpfHwwfChm''@;'; put 'put ''PTB8c2koMHxmcihjKSwxLDExMTQ3NywwKSkpJiYodz02KSw2PT0oMHx3KSYmKGFbbCs1ODg+PjJdPTB8djIoMHxGbyhjLGYpLGMpKX1mdW5jdGlvbiBtbShsLGMpe2N8PTA7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MCxNPTAsRD0wO0Z1KHc9NTkyKyhsfD0wKXwwLDAsMTExNDUwKSxNPWMr''@;'; put 'put ''NDh8MCxGdSh3LDEsMHwkcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpNKSs0MD4+Ml0pKSxGdSh3LDMsKE09MCE9KDB8bGMoMHxmcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpNKSs0MD4+Ml0pKSkpPzEzNzczODoxNDE3NDcpLE09YystNDh8MCxGdSh3LDQsMHwkcigwfGFbKDI9PSgzJmFb''@;'; put 'put ''Yz4+Ml18MCk/YzpNKSs0MD4+Ml0pKSxhW2wrNTk2Pj4yXT03LGI9bCs2MDR8MCxrPTB8aGkoMHxmcigwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpNKSs0MD4+Ml0pKSxBPTcsZj0wO2U6Zm9yKDs7KXtmb3IoOzspe2lmKCEoZj0wfFBzKGssMixmKSkpYnJlYWsgZTtpZighKDB8WmkobT0wfGFb''@;'; put 'put ''KHA9Zis4fDApPj4yXSwxMTE0NTUpKSl7RD01O2JyZWFrfWlmKCEoMHxaaShtLDExMTQ2NCkpKXtEPTc7YnJlYWt9aWYoMHxaaShtLDExMTQ3MykpYnJlYWs7RnUodyw2LDB8Rm8oYyxmKSl9NT09KDB8RCk/KEQ9MCxGdSh3LDIsMHxGbyhjLGYpKSk6Nz09KDB8RCkmJihEPTAsRnUodyw1LDB8''@;'; put 'put ''Rm8oYyxmKSkpLEZ1KGIsQSwwfGFbcD4+Ml0pLEZ1KGIsQSsxfDAsMHxGbyhjLGYpKSxBPUErMnwwfWFbbCs2MDg+PjJdPUEsKChmPTB8c2koMHxmcigwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpNKSs0MD4+Ml0pLDIsMTQxMDU1LDApKXx8MHwoZj0wfHNpKDB8ZnIoMHxhWygyPT0oMyZhW2M+''@;'; put 'put ''PjJdfDApP2M6TSkrNDA+PjJdKSwyLDExMTQ3NywwKSkpJiYoRD0xMyksMTM9PSgwfEQpJiYoYVtsKzU4OD4+Ml09MHx2MigwfEZvKGMsZiksYykpfWZ1bmN0aW9uIF9FKGwsYyxmKXt2YXIgQSxwPTAsbT0wO2ZvcihBPTB8ZnVuY3Rpb24gZ2YobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBw''@;'; put 'put ''O3JldHVybiBwPTB8UW4oMTIpLGM9Yz8wfG5hKGMpOjAsYVtwKzQ+PjJdPWMsYVtwKzg+PjJdPTB8bmEoZiksYVtwPj4yXT1hWyhmPWwrMTAwfDApPj4yXSxhW2Y+PjJdPXAsMHxwfShsfD0wLGN8PTAsMHxhWyhmfD0wKT4+Ml0pLGY9MHxhW2YrND4+Ml07bT0wfGFbZis0Pj4yXTspe2Zvcihj''@;'; put 'put ''PTA7cD0wfGFbbSsoMjAqY3wwKSs0Pj4yXTspaTdlKGwsMHxhW2Y+PjJdLHAsMHxhW20rKDIwKmN8MCkrOD4+Ml0sQSxtKygyMCpjfDApfDApLGM9YysxfDA7Zj1mKzh8MH19ZnVuY3Rpb24gdEIobCxjLGYpe2x8PTAsY3w9MDt2YXIgTGUsSGUsamUsZXQscnQsR2UsbHQsTXQsa3QsYXQsRXQs''@;'; put 'put ''WnQsdXQsd3Qscm4seW4sRm4scD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLEJlPTA7Rm49b2Usb2U9b2UrNDY0fDAsd3Q9Rm4rNDE2fDAseW49Rm4rNDAwfDAsRXQ9Rm4rMzg0fDAsTT1GbiszNTJ8MCxEPUZuKzMyMHwwLFI9''@;'; put 'put ''Rm4rMjg4fDAsRz1GbisyNTZ8MCxwZT1GbisyMjR8MCxtZT1GbisxOTJ8MCxiZT1GbisxNjB8MCxPZT1GbisxMjh8MCxMZT1Gbis5NnwwLEhlPUZuKzY0fDAsamU9Rm4rMzJ8MCxadD1GbixydD0uMTI1KigyKihwPStfWyhldD0wfGFbMzIrKGZ8PTApPj4yXSk+PjNdKSsgK19bKGx0PWYrMTZ8''@;'; put 'put ''MCk+PjNdKSxybj0uNSooMiorX1soTXQ9ZXQrOHwwKT4+M10rKHc9K19bKHV0PWYrMjR8MCk+PjNdKSksZXR8fEJyKDExMTUzMywxMTE1NDMsNDQ1LDExMTU1MyksQT0obT13dCkrMzZ8MDtkb3thW20+PjJdPTAsbT1tKzR8MH13aGlsZSgoMHxtKTwoMHxBKSk7X1soR2U9ZXQrMTZ8MCk+PjNd''@;'; put 'put ''PStfW2Y+PjNdLXAsX1soYXQ9ZXQrMjR8MCk+PjNdPXcrICtfWyhrdD1mKzh8MCk+PjNdLF9jKE0sYyxmLHd0KSxiPTB8YVtNPj4yXSxtPTB8YVtNKzQ+PjJdLHA9K19bTSs4Pj4zXSxhW3luPj4yXT1hWyhNPU0rMTZ8MCk+PjJdLGFbeW4rND4+Ml09YVtNKzQ+PjJdLGFbeW4rOD4+Ml09YVtN''@;'; put 'put ''Kzg+PjJdLGFbeW4rMTI+PjJdPWFbTSsxMj4+Ml07ZTpkb3tpZihiKXtpZihfW2F0Pj4zXT0rX1trdD4+M10sX2MoRCxjLGYsd3QpLEE9MHxhW0Q+PjJdLE09MHxhW0QrND4+Ml0sdz0rX1tEKzg+PjNdLGFbRXQ+PjJdPWFbKEQ9RCsxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW0QrND4+Ml0sYVtF''@;'; put 'put ''dCs4Pj4yXT1hW0QrOD4+Ml0sYVtFdCsxMj4+Ml09YVtEKzEyPj4yXSwhQSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1NLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEy''@;'; put 'put ''Pj4yXTticmVha31pZih3PHA/KGFbeW4+PjJdPWFbRXQ+PjJdLGFbeW4rND4+Ml09YVtFdCs0Pj4yXSxhW3luKzg+PjJdPWFbRXQrOD4+Ml0sYVt5bisxMj4+Ml09YVtFdCsxMj4+Ml0sbT1NLHA9dyk6QT1iLF9bYXQ+PjNdPStfW2t0Pj4zXS0rX1tNdD4+M10sX2MoUixjLGYsd3QpLE09MHxh''@;'; put 'put ''W1I+PjJdLGI9MHxhW1IrND4+Ml0sdz0rX1tSKzg+PjNdLGFbRXQ+PjJdPWFbKFI9UisxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW1IrND4+Ml0sYVtFdCs4Pj4yXT1hW1IrOD4+Ml0sYVtFdCsxMj4+Ml09YVtSKzEyPj4yXSwhTSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1iLF9bbCs4Pj4zXT13LGFb''@;'; put 'put ''KGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTticmVha31pZih3PHA/KGFbeW4+PjJdPWFbRXQ+PjJdLGFbeW4rND4+Ml09YVtFdCs0Pj4yXSxhW3luKzg+PjJdPWFbRXQrOD4+Ml0s''@;'; put 'put ''YVt5bisxMj4+Ml09YVtFdCsxMj4+Ml0sbT1iLHA9dyk6TT1BLF9bR2U+PjNdPStfW2Y+PjNdLF9bYXQ+PjNdPStfW3V0Pj4zXSsgK19ba3Q+PjNdLF9jKEcsYyxmLHd0KSxBPTB8YVtHPj4yXSxiPTB8YVtHKzQ+PjJdLHc9K19bRys4Pj4zXSxhW0V0Pj4yXT1hWyhHPUcrMTZ8MCk+PjJdLGFb''@;'; put 'put ''RXQrND4+Ml09YVtHKzQ+PjJdLGFbRXQrOD4+Ml09YVtHKzg+PjJdLGFbRXQrMTI+PjJdPWFbRysxMj4+Ml0sIUEpe2FbbD4+Ml09MCxhW2wrND4+Ml09YixfW2wrOD4+M109dyxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+''@;'; put 'put ''PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWt9aWYodzxwJiYoYVt5bj4+Ml09YVtFdD4+Ml0sYVt5bis0Pj4yXT1hW0V0KzQ+PjJdLGFbeW4rOD4+Ml09YVtFdCs4Pj4yXSxhW3luKzEyPj4yXT1hW0V0KzEyPj4yXSxNPUEsbT1iLHA9dyksX1thdD4+M109K19ba3Q+PjNdLStfW010''@;'; put 'put ''Pj4zXSxfYyhwZSxjLGYsd3QpLEE9MHxhW3BlPj4yXSxiPTB8YVtwZSs0Pj4yXSx3PStfW3BlKzg+PjNdLGFbRXQ+PjJdPWFbKHBlPXBlKzE2fDApPj4yXSxhW0V0KzQ+PjJdPWFbcGUrND4+Ml0sYVtFdCs4Pj4yXT1hW3BlKzg+PjJdLGFbRXQrMTI+PjJdPWFbcGUrMTI+PjJdLCFBKXthW2w+''@;'; put 'put ''PjJdPTAsYVtsKzQ+PjJdPWIsX1tsKzg+PjNdPXcsYVsobD1sKzE2fDApPj4yXT1hW0V0Pj4yXSxhW2wrND4+Ml09YVtFdCs0Pj4yXSxhW2wrOD4+Ml09YVtFdCs4Pj4yXSxhW2wrMTI+PjJdPWFbRXQrMTI+PjJdO2JyZWFrfWlmKHc8cCYmKGFbeW4+PjJdPWFbRXQ+PjJdLGFbeW4rND4+Ml09''@;'; put 'put ''YVtFdCs0Pj4yXSxhW3luKzg+PjJdPWFbRXQrOD4+Ml0sYVt5bisxMj4+Ml09YVtFdCsxMj4+Ml0sTT1BLG09YixwPXcpLF9bR2U+PjNdPStfW2x0Pj4zXSsgK19bZj4+M10sX1thdD4+M109K19bdXQ+PjNdKyArX1trdD4+M10sX2MobWUsYyxmLHd0KSxBPTB8YVttZT4+Ml0sYj0wfGFbbWUr''@;'; put 'put ''ND4+Ml0sdz0rX1ttZSs4Pj4zXSxhW0V0Pj4yXT1hWyhtZT1tZSsxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW21lKzQ+PjJdLGFbRXQrOD4+Ml09YVttZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW21lKzEyPj4yXSwhQSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1iLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnww''@;'; put 'put ''KT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTticmVha31pZih3PHAmJihhW3luPj4yXT1hW0V0Pj4yXSxhW3luKzQ+PjJdPWFbRXQrND4+Ml0sYVt5bis4Pj4yXT1hW0V0Kzg+PjJdLGFbeW4rMTI+''@;'; put 'put ''PjJdPWFbRXQrMTI+PjJdLE09QSxtPWIscD13KSxfW2F0Pj4zXT0rX1trdD4+M10sX2MoYmUsYyxmLHd0KSxBPTB8YVtiZT4+Ml0sYj0wfGFbYmUrND4+Ml0sdz0rX1tiZSs4Pj4zXSxhW0V0Pj4yXT1hWyhiZT1iZSsxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW2JlKzQ+PjJdLGFbRXQrOD4+Ml09''@;'; put 'put ''YVtiZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW2JlKzEyPj4yXSwhQSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1iLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTti''@;'; put 'put ''cmVha31pZih3PHAmJihhW3luPj4yXT1hW0V0Pj4yXSxhW3luKzQ+PjJdPWFbRXQrND4+Ml0sYVt5bis4Pj4yXT1hW0V0Kzg+PjJdLGFbeW4rMTI+PjJdPWFbRXQrMTI+PjJdLE09QSxtPWIscD13KSxfW2F0Pj4zXT0rX1trdD4+M10tK19bTXQ+PjNdLF9jKE9lLGMsZix3dCksQT0wfGFbT2U+''@;'; put 'put ''PjJdLGI9MHxhW09lKzQ+PjJdLHc9K19bT2UrOD4+M10sYVtFdD4+Ml09YVsoT2U9T2UrMTZ8MCk+PjJdLGFbRXQrND4+Ml09YVtPZSs0Pj4yXSxhW0V0Kzg+PjJdPWFbT2UrOD4+Ml0sYVtFdCsxMj4+Ml09YVtPZSsxMj4+Ml0sIUEpe2FbbD4+Ml09MCxhW2wrND4+Ml09YixfW2wrOD4+M109''@;'; put 'put ''dyxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWt9dzxwPyhhW3luPj4yXT1hW0V0Pj4yXSxhW3luKzQ+PjJdPWFbRXQrND4+Ml0sYVt5bis4Pj4yXT1hW0V0Kzg+PjJd''@;'; put 'put ''LGFbeW4rMTI+PjJdPWFbRXQrMTI+PjJdLG09YixwPXcpOkE9TSxiPTA9PSgwfGFbd3QrMjg+PjJdKTtkb3tpZigwfGFbd3QrMjQ+PjJdKUJlPWI/Mzg6NDY7ZWxzZSBpZihiKXtpZigwfGFbd3QrMzI+PjJdKXtCZT0zODticmVha30wPT0oMHxhW3d0KzEyPj4yXSkmMD09KDB8YVt3dD4+Ml0p''@;'; put 'put ''fHwoQmU9MzgpfWVsc2UgQmU9NDZ9d2hpbGUoMCk7dDpkb3tpZigzOD09KDB8QmUpKXtpZighKDB8YVt3dCszMj4+Ml0pKXtfW0dlPj4zXT0rX1tmPj4zXS0rX1tldD4+M10sRz1MZSs0fDAscGU9TGUrOHwwLG1lPUxlKzE2fDAsTT1hdCxiPWt0LHc9K19bdXQ+PjNdO246Zm9yKDs7KXtmb3Io''@;'; put 'put ''Ozspe2lmKF9bTT4+M109K19bYj4+M10rdywhKCtfW0dlPj4zXTw9K19bbHQ+PjNdKyArX1tmPj4zXSkpe0JlPTQ2O2JyZWFrIHR9aWYoX2MoTGUsYyxmLHd0KSxEPTB8YVtMZT4+Ml0sUj0wfGFbRz4+Ml0saz0rX1twZT4+M10sYVtFdD4+Ml09YVttZT4+Ml0sYVtFdCs0Pj4yXT1hW21lKzQ+''@;'; put 'put ''PjJdLGFbRXQrOD4+Ml09YVttZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW21lKzEyPj4yXSwhRClicmVhayBuO2lmKGs8cClicmVhaztNPUdlLGI9R2Usdz1ydH1hW3luPj4yXT1hW0V0Pj4yXSxhW3luKzQ+PjJdPWFbRXQrND4+Ml0sYVt5bis4Pj4yXT1hW0V0Kzg+PjJdLGFbeW4rMTI+PjJdPWFb''@;'; put 'put ''RXQrMTI+PjJdLE09R2UsYj1HZSx3PXJ0LEE9RCxtPVIscD1rfWFbbD4+Ml09MCxhW2wrND4+Ml09UixfW2wrOD4+M109ayxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJl''@;'; put 'put ''YWsgZX1CZT00Nn19d2hpbGUoMCk7dDpkb3tpZig0Nj09KDB8QmUpJiYwPT0oMHxhW3d0KzEyPj4yXSkmMD09KDB8YVt3dD4+Ml0pKXtmb3IoX1tHZT4+M109K19bZj4+M10tK19bZXQ+PjNdLEQ9SGUrNHwwLFI9SGUrOHwwLEc9SGUrMTZ8MCx3PWs9K19ba3Q+PjNdLGs9K19bdXQ+PjNdK2s7''@;'; put 'put ''Oyl7aWYoX1thdD4+M109aywhKGs+PXctK19bTXQ+PjNdKSlicmVhayB0O2lmKF9jKEhlLGMsZix3dCksYj0wfGFbSGU+PjJdLE09MHxhW0Q+PjJdLHc9K19bUj4+M10sYVtFdD4+Ml09YVtHPj4yXSxhW0V0KzQ+PjJdPWFbRys0Pj4yXSxhW0V0Kzg+PjJdPWFbRys4Pj4yXSxhW0V0KzEyPj4y''@;'; put 'put ''XT1hW0crMTI+PjJdLCFiKWJyZWFrO3c8cCYmKGFbeW4+PjJdPWFbRXQ+PjJdLGFbeW4rND4+Ml09YVtFdCs0Pj4yXSxhW3luKzg+PjJdPWFbRXQrOD4+Ml0sYVt5bisxMj4+Ml09YVtFdCsxMj4+Ml0sQT1iLG09TSxwPXcpLHc9K19ba3Q+PjNdLGs9K19bYXQ+PjNdLXJufWFbbD4+Ml09MCxh''@;'; put 'put ''W2wrND4+Ml09TSxfW2wrOD4+M109dyxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWsgZX19d2hpbGUoMCk7X1tHZT4+M109az0rX1tsdD4+M10rKHc9K19bZj4+M10p''@;'; put 'put ''LF9bYXQ+PjNdPStfW2t0Pj4zXS0oSz0rX1tNdD4+M10pLGI9MHxhW3d0KzQ+PjJdO2Rve2lmKDB8YVt3dCs4Pj4yXSlNPTB8YVt3dD4+Ml0sQmU9NTk7ZWxzZXtpZighKDA9PSgwfGIpJjA9PSgwfChNPTB8YVt3dD4+Ml0pKSkpe0JlPTU5O2JyZWFrfWlmKDB8YVt3dCsyMD4+Ml0pe2I9MCxN''@;'; put 'put ''PTAsQmU9NTk7YnJlYWt9MHxhW3d0KzMyPj4yXSYmKGI9MCxNPTAsQmU9NTkpfX13aGlsZSgwKTt0OmRve2lmKDU5PT0oMHxCZSkpe246ZG97aWYoMD09KDB8YikmMD09KDB8TSkpe19bR2U+PjNdPWssRz1qZSs0fDAscGU9amUrOHwwLG1lPWplKzE2fDAsTT1hdCxiPWt0LHc9SztyOmZvcig7''@;'; put 'put ''Oyl7Zm9yKDs7KXtpZihfW00+PjNdPStfW2I+PjNdLXcsISgrX1tHZT4+M10+PSh3PStfW2Y+PjNdKS0rX1tldD4+M10pKWJyZWFrIG47aWYoX2MoamUsYyxmLHd0KSxEPTB8YVtqZT4+Ml0sUj0wfGFbRz4+Ml0saz0rX1twZT4+M10sYVtFdD4+Ml09YVttZT4+Ml0sYVtFdCs0Pj4yXT1hW21l''@;'; put 'put ''KzQ+PjJdLGFbRXQrOD4+Ml09YVttZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW21lKzEyPj4yXSwhRClicmVhayByO2lmKGs8cClicmVhaztNPUdlLGI9R2Usdz1ydH1hW3luPj4yXT1hW0V0Pj4yXSxhW3luKzQ+PjJdPWFbRXQrND4+Ml0sYVt5bis4Pj4yXT1hW0V0Kzg+PjJdLGFbeW4rMTI+PjJd''@;'; put 'put ''PWFbRXQrMTI+PjJdLE09R2UsYj1HZSx3PXJ0LEE9RCxtPVIscD1rfWFbbD4+Ml09MCxhW2wrND4+Ml09UixfW2wrOD4+M109ayxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07''@;'; put 'put ''YnJlYWsgZX19d2hpbGUoMCk7aWYoMHxhW3d0KzIwPj4yXXx8MHxhW3d0KzMyPj4yXSlicmVhaztmb3IoX1tHZT4+M109K19bbHQ+PjNdK3csRD1adCs0fDAsUj1adCs4fDAsRz1adCsxNnwwLGs9dz0rX1trdD4+M10sdy09K19bTXQ+PjNdOzspe2lmKF9bYXQ+PjNdPXcsISh3PD0rX1t1dD4+''@;'; put 'put ''M10raykpYnJlYWsgdDtpZihfYyhadCxjLGYsd3QpLGI9MHxhW1p0Pj4yXSxNPTB8YVtEPj4yXSx3PStfW1I+PjNdLGFbRXQ+PjJdPWFbRz4+Ml0sYVtFdCs0Pj4yXT1hW0crND4+Ml0sYVtFdCs4Pj4yXT1hW0crOD4+Ml0sYVtFdCsxMj4+Ml09YVtHKzEyPj4yXSwhYilicmVhazt3PHAmJihh''@;'; put 'put ''W3luPj4yXT1hW0V0Pj4yXSxhW3luKzQ+PjJdPWFbRXQrND4+Ml0sYVt5bis4Pj4yXT1hW0V0Kzg+PjJdLGFbeW4rMTI+PjJdPWFbRXQrMTI+PjJdLEE9YixtPU0scD13KSxrPStfW2t0Pj4zXSx3PStfW2F0Pj4zXStybn1hW2w+PjJdPTAsYVtsKzQ+PjJdPU0sX1tsKzg+PjNdPXcsYVsobD1s''@;'; put 'put ''KzE2fDApPj4yXT1hW0V0Pj4yXSxhW2wrND4+Ml09YVtFdCs0Pj4yXSxhW2wrOD4+Ml09YVtFdCs4Pj4yXSxhW2wrMTI+PjJdPWFbRXQrMTI+PjJdO2JyZWFrIGV9fXdoaWxlKDApO2FbbD4+Ml09QSxhW2wrND4+Ml09bSxfW2wrOD4+M109cCxhWyhsPWwrMTZ8MCk+PjJdPWFbeW4+PjJdLGFb''@;'; put 'put ''bCs0Pj4yXT1hW3luKzQ+PjJdLGFbbCs4Pj4yXT1hW3luKzg+PjJdLGFbbCsxMj4+Ml09YVt5bisxMj4+Ml19ZWxzZSBhW2w+PjJdPTAsYVtsKzQ+PjJdPW0sX1tsKzg+PjNdPXAsbD1sKzE2fDAsYVtsPj4yXT1hW3luPj4yXSxhW2wrND4+Ml09YVt5bis0Pj4yXSxhW2wrOD4+Ml09YVt5bis4''@;'; put 'put ''Pj4yXSxhW2wrMTI+PjJdPWFbeW4rMTI+PjJdfXdoaWxlKDApO29lPUZufWZ1bmN0aW9uIF9jKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBSLEcsbWUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEs9MCxwZT0wO2ZvcihtZT1vZSxvZT1vZSs0OHwwLEc9bWUrMzJ8MCxwZT1tZSsx''@;'; put 'put ''NnwwLFI9bWUsKG09MHxhWzMyKyhmfD0wKT4+Ml0pfHxCcigxMTE1MzMsMTExNTQzLDM4MiwxMTE1NjIpLGFbUj4+Ml09YVsoRD1tKzE2fDApPj4yXSxhW1IrND4+Ml09YVtEKzQ+PjJdLGFbUis4Pj4yXT1hW0QrOD4+Ml0sYVtSKzEyPj4yXT1hW0QrMTI+PjJdLEQ9Yys0fDAsaz0wLG09MDsh''@;'; put 'put ''KCgwfGspPj0oMHxhW0Q+PjJdKSk7KXtiPSh3PTB8YVtjPj4yXSkrKDQwKmt8MCl8MDtkb3tpZigoMHxiKSE9KDB8Zikpe2lmKCtfW3crKDQwKmt8MCkrMTY+PjNdPjAmJitfW3crKDQwKmt8MCkrMjQ+PjNdPjApYnJlYWs7bT1tKygwIT0oMHxuNihmLGIpKSYxKXwwfX13aGlsZSgwKTtrPWsr''@;'; put 'put ''MXwwfWlmKFVmKGYsRyksaz0wfHJfKGs9MHxhW2MrMjQ+PjJdLDB8YVtrPj4yXSxHKSl7Zm9yKGI9ayxBPTA7YjspKDB8KHc9MHxhWzE2KygwfGFbYis0Pj4yXSk+PjJdKSkhPSgwfGYpJiYobWYodyxwZSksKE09K01oKEcscGUpKT4wJiYobT1tKzF8MCxBPStSYihmLHcsRyxNLHApK0EpLDAh''@;'; put 'put ''PSgwfChjPTB8YVt3KzMyPj4yXSkpJiYwIT0oMHx1ZVtjKzM2Pj4wXSkmJihVZih3LHBlKSwoSz0rTWgoRyxwZSkpPjApJiYobT1tKzF8MCxBPStTRShmLHcsRyxLLHApK0EpKSxiPTB8YVtiPj4yXTsoZnVuY3Rpb24gSkUobCl7bHw9MDt2YXIgYz0wO2Rve2M9bCxsPTB8YVtsPj4yXSxIdChj''@;'; put 'put ''KX13aGlsZSgwIT0oMHxsKSl9KShrKSxhW2w+PjJdPW0sX1tsKzg+PjNdPUEsYVsocGU9bCsxNnwwKT4+Ml09YVtSPj4yXSxhW3BlKzQ+PjJdPWFbUis0Pj4yXSxhW3BlKzg+PjJdPWFbUis4Pj4yXSxhW3BlKzEyPj4yXT1hW1IrMTI+PjJdfWVsc2UgYVtsPj4yXT1tLF9bbCs4Pj4zXT0wLGFb''@;'; put 'put ''KHBlPWwrMTZ8MCk+PjJdPWFbUj4+Ml0sYVtwZSs0Pj4yXT1hW1IrND4+Ml0sYVtwZSs4Pj4yXT1hW1IrOD4+Ml0sYVtwZSsxMj4+Ml09YVtSKzEyPj4yXTtvZT1tZX1mdW5jdGlvbiBuNihsLGMpe3ZhciBmPTAscD0wLG09MCxBPTA7cmV0dXJuIGw9MHxhWzMyKyhsfD0wKT4+Ml0sMD09K19b''@;'; put 'put ''MTYrKGN8PTApPj4zXSYmMD09K19bYysyND4+M10/MHwobD0wIT0oMHxsKSYmKGY9K19bYz4+M10pPihwPStfW2wrMTY+PjNdKSYmZjwrX1tsPj4zXStwJiYobT0rX1tjKzg+PjNdKT4oQT0rX1tsKzI0Pj4zXSk/bTwrX1tsKzg+PjNdK0EmMTowKTooQnIoMTExNTk5LDExMTU0MywyMTksMTEx''@;'; put 'put ''NjM2KSwwKX1mdW5jdGlvbiBVZihsLGMpe3ZhciBmLHA7YVsoY3w9MCk+PjJdPX5+KHA9K19bMTYrKGw9MHxhWzMyKyhsfD0wKT4+Ml0pPj4zXSksYVtjKzQ+PjJdPX5+KGY9K19bbCsyND4+M10pLGFbYys4Pj4yXT1+figrX1tsPj4zXStwKSxhW2MrMTI+PjJdPX5+KCtfW2wrOD4+M10rZil9''@;'; put 'put ''ZnVuY3Rpb24gbWYobCxjKXt2YXIgZixwO2FbKGN8PTApPj4yXT1+fihwPStfWyhsfD0wKT4+M10pLGFbYys0Pj4yXT1+fihmPStfW2wrOD4+M10pLGFbYys4Pj4yXT1+figrX1tsKzE2Pj4zXStwKSxhW2MrMTI+PjJdPX5+KCtfW2wrMjQ+PjNdK2YpfWZ1bmN0aW9uIE1oKGwsYyl7dmFyIGIs''@;'; put 'put ''ayxwPTAsbT0wLEE9MCx3PTAsTT0wLEQ9MDtyZXR1cm4rKCgwfChiPTB8YVs4KyhsfD0wKT4+Ml0pKT49KDB8KGs9MHxhWyhjfD0wKT4+Ml0pKSYmKDB8KE09MHxhW2w+PjJdKSk8PSgwfChEPTB8YVtjKzg+PjJdKSkmJigwfChwPTB8YVtsKzEyPj4yXSkpPj0oMHwobT0wfGFbYys0Pj4yXSkp''@;'; put 'put ''JiYoMHwoQT0wfGFbbCs0Pj4yXSkpPD0oMHwodz0wfGFbYysxMj4+Ml0pKT8oKygwfGFbKCgwfHApPCgwfHcpP2w6YykrMTI+PjJdKS0rKDB8YVsoKDB8QSk+KDB8bSk/bDpjKSs0Pj4yXSkpKigrKDB8YVsoKDB8Yik8KDB8RCk/bDpjKSs4Pj4yXSktKygwfGFbKCgwfE0pPigwfGspP2w6Yyk+''@;'; put 'put ''PjJdKSk6MCl9ZnVuY3Rpb24gUmIobCxjLGYscCxtKXtmfD0wLHA9K3AsbXw9MDt2YXIgYixrLEE9MCx3PTA7cmV0dXJuIGs9b2Usb2U9b2UrMTZ8MCxiPWssbD0wfEg5KGx8PTAsY3w9MCksKGw9MHxhWyhtPW0rKCgoMHxsKTwwPzU6bCk8PDIpfDApPj4yXSk/KG1mKGwsYiksQT0oQT0rTWgo''@;'; put 'put ''ZixiKSk+cD9BOjAsMCE9KDB8YVszMisobD0wfGFbbT4+Ml0pPj4yXSkmJihVZihsLGIpLCh3PStNaChmLGIpKT5wKSYmKEE9dz5BP3c6QSksQT4wfHwoYVttPj4yXT1jLEE9cCkpOihhW20+PjJdPWMsQT1wKSxvZT1rLCtBfWZ1bmN0aW9uIFNFKGwsYyxmLHAsbSl7Znw9MCxwPStwLG18PTA7''@;'; put 'put ''dmFyIGIsayxBPTAsdz0wO3JldHVybiBrPW9lLG9lPW9lKzE2fDAsYj1rLGw9MHxIOShsfD0wLGN8PTApLChsPTB8YVsobT1tKygoKDB8bCk8MD81OmwpPDwyKXwwKT4+Ml0pPyhtZihsLGIpLEE9KEE9K01oKGYsYikpPnA/QTowLDAhPSgwfGFbMzIrKGw9MHxhW20+PjJdKT4+Ml0pJiYoVWYo''@;'; put 'put ''bCxiKSwodz0rTWgoZixiKSk+cCkmJihBPXc+QT93OkEpLEE+MHx8KGFbbT4+Ml09YyxBPXApKTooYVttPj4yXT1jLEE9cCksb2U9aywrQX1mdW5jdGlvbiBIOShsLGMpe3ZhciBwLGY9MCxtPTAsQT0wLHc9MCxiPTA7KDB8KGY9MHxhWzMyKyhsfD0wKT4+Ml0pKT09KDB8KHA9MHxhWzMyKyhj''@;'; put 'put ''fD0wKT4+Ml0pKSYmQnIoMTExNTc4LDExMTU0MywyNzYsMTExNTg4KTtkb3tpZigwIT0oMHx1ZVtmKzM2Pj4wXSkmJjAhPSgwfHVlW3ArMzY+PjBdKSl7aWYoMD09KHc9K19bbD4+M10pJiYwPT0rX1tsKzg+PjNdKXtmPS0xO2JyZWFrfWlmKDA9PShiPStfW2M+PjNdKSYwPT0oQT0rX1tjKzg+''@;'; put 'put ''PjNdKSlmPS0xO2Vsc2V7aWYoQTwobT0rX1tsKzg+PjNdKSl7aWYoYjx3KXtmPTA7YnJlYWt9Zj1iPnc/MjoxO2JyZWFrfWlmKGY9Yjx3LEE+bSl7aWYoZil7Zj02O2JyZWFrfWY9Yj53Pzg6NzticmVha31mPWY/MzpiPnc/NTotMX19ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVu''@;'; put 'put ''Y3Rpb24gTjkobCxjKXtsfD0wO3ZhciBBLHcsYixrLE0sZj0wLHA9MCxtPTA7aWYoKGY9MHxhWzMyKyhjfD0wKT4+Ml0pPyhwPStfW2Y+PjNdLG09K19bZis4Pj4zXSk6KHA9MCxtPTApLGs9fn4reWMoKygoTT0rX1tjPj4zXSktcCkpLGI9fn4reWMoKygoQT0rX1tjKzg+PjNdKS1tKSksMjE0''@;'; put 'put ''NzQ4MzY0Nz09KDB8KHc9fn4rd2woKyhNK3ArICtfW2MrMTY+PjNdKSkpKSYmQnIoMTExNjc2LDExMTU0MywyNjQsMTExNzAzKSwyMTQ3NDgzNjQ3IT0oMHwoZj1+fit3bCgrKEErbSsgK19bYysyND4+M10pKSkpKXJldHVybiBhW2w+PjJdPWssYVtsKzQ+PjJdPWIsYVtsKzg+PjJdPXcsdm9p''@;'; put 'put ''ZChhW2wrMTI+PjJdPWYpO0JyKDExMTcxMywxMTE1NDMsMjY2LDExMTcwMyl9ZnVuY3Rpb24geW0obCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtmb3IobT0wLHA9MHxhWyhsfD0wKT4+Ml0sZj0wfGFbbCs0Pj4yXTtsPWMrLTF8MCwhKCgwfGMpPD0wKTspQT0oYz1mPj4+''@;'; put 'put ''bCYxKS0xfDAsbT0oYj1wPj4+bCYxKTw8MXxtPDwyfGJeYyxjPWwscD0odz1BJihwXmYpKV5wXihBJj0wLWIpLGY9d15mXkE7cmV0dXJuIDB8bX1mdW5jdGlvbiBaOChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO2lmKChjPTB8em8obHw9MCkpPj4+MD49KDB8YVs0NzM2NV0pPj4+MD8oYVs0NzM2''@;'; put 'put ''NV09Yz1jKzExfDAsYz0wfGwwKDB8YVs0NzM2Nl0sYyksYVs0NzM2Nl09YyxjP2Y9NDpjPTApOihjPTB8YVs0NzM2Nl0sZj00KSw0PT0oMHxmKSl7Zm9yKG09YzsoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0OykwfGIkKHA9MjU1JmYpJiYoZj0yNTUmKDB8ZHAocCkpKSx1ZVttPj4wXT1mLG09bSsx''@;'; put 'put ''fDAsbD1sKzF8MDt1ZVttPj4wXT0wfXJldHVybiAwfGN9ZnVuY3Rpb24gcjYobCxjLGYpe2x8PTA7dmFyIE0sRCxLLHBlLGJlLE9lLExlLEJlLEhlLGplLGV0LHJ0LEdlLGx0LE10LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLFI9MCxHPTAsbWU9MCxrdD0wO2ZvcihNdD1vZSxvZT1vZSsxNDR8''@;'; put 'put ''MCxLPU10Kzk2fDAsRD1NdCs4MHwwLGJlPU10KzEyNHwwLHBlPU10KzcyfDAsT2U9TXQrNjR8MCxMZT1NdCs1NnwwLHJ0PU10KzQ4fDAsR2U9TXQrNDB8MCxsdD1NdCszMnwwLEJlPU10KzI0fDAsSGU9TXQrMTZ8MCxqZT1NdCs4fDAsZXQ9TXQsbT1NdCsxMjB8MCxiPU10KzExNnwwLGs9TXQr''@;'; put 'put ''MTEyfDAsTT1NdCsxMDh8MCxhWzMyKyhjfD0wKT4+Ml09Znw9MCxHPWw7MzI9PSgwfHVlW0c+PjBdKTspRz1HKzF8MDthW00+PjJdPTI1NSxsPTB8dWVbRz4+MF07ZTpkb3tpZihsPDwyND4+MjQ9PTM1KXtpZihhW0Q+PjJdPW0sYVtEKzQ+PjJdPWIsYVtEKzg+PjJdPWssYVtEKzEyPj4yXT1N''@;'; put 'put ''LCgwfCRhKEcsMTExNzU1LEQpKTw9Mil7bD0wfHVlW0c+PjBdLFI9MTI7YnJlYWt9c3dpdGNoKDB8Zil7Y2FzZSAwOl9bcnQ+PjNdPWt0PS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbbT4+Ml0pPj4+MCksX1tHZT4+M109cD0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxhW2I+PjJdKT4+PjAp''@;'; put 'put ''LF9bbHQ+PjNdPUE9LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVtrPj4yXSk+Pj4wKSx3PS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbTT4+Ml0pPj4+MCksUGIoa3QscCxBLHBlLE9lLExlKSxfW2M+PjNdPStfW3BlPj4zXSxfW2MrOD4+M109K19bT2U+PjNdLF9bYysxNj4+M109K19bTGU+''@;'; put 'put ''PjNdLF9bYysyND4+M109dyxsPTA7YnJlYWsgZTtjYXNlIDE6dWVbYz4+MF09YVttPj4yXSx1ZVtjKzE+PjBdPWFbYj4+Ml0sdWVbYysyPj4wXT1hW2s+PjJdLHVlW2MrMz4+MF09YVtNPj4yXSxsPTA7YnJlYWsgZTtjYXNlIDM6X1tydD4+M109QT0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxh''@;'; put 'put ''W20+PjJdKT4+PjApLF9bR2U+PjNdPXc9LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVtiPj4yXSk+Pj4wKSxfW2x0Pj4zXT1rdD0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxhW2s+PjJdKT4+PjApLEw0KEEsdyxrdCxCZSxIZSxqZSxldCksdWVbYz4+MF09MjU1Kn5+K19bQmU+PjNdLHVlW2Mr''@;'; put 'put ''MT4+MF09MjU1Kn5+K19bSGU+PjNdLHVlW2MrMj4+MF09MjU1Kn5+K19bamU+PjNdLHVlW2MrMz4+MF09MjU1Kn5+K19bZXQ+PjNdLGw9MDticmVhayBlO2Nhc2UgMjphW2M+PjJdPSgoNjU1MzUqKDB8YVttPj4yXSl8MCk+Pj4wKS8yNTV8MCxhW2MrND4+Ml09KCg2NTUzNSooMHxhW2I+PjJd''@;'; put 'put ''KXwwKT4+PjApLzI1NXwwLGFbYys4Pj4yXT0oKDY1NTM1KigwfGFbaz4+Ml0pfDApPj4+MCkvMjU1fDAsYVtjKzEyPj4yXT0oKDY1NTM1KigwfGFbTT4+Ml0pfDApPj4+MCkvMjU1fDAsbD0wO2JyZWFrIGU7Y2FzZSA0Ol9bYz4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVttPj4yXSk+''@;'; put 'put ''Pj4wKSxfW2MrOD4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVtiPj4yXSk+Pj4wKSxfW2MrMTY+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbaz4+Ml0pPj4+MCksX1tjKzI0Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxhW00+PjJdKT4+PjApLGw9MDticmVhayBlO2Rl''@;'; put 'put ''ZmF1bHQ6bD0wO2JyZWFrIGV9fWVsc2UgUj0xMn13aGlsZSgwKTtlOmRve2lmKDEyPT0oMHxSKSl7aWYoIShsPDwyND4+MjQhPTQ2JiYoKDI1NSZsKS00OHwwKT4+PjA+PTEwKSl7aWYoKGw9MHx6byhHKSk+Pj4wPj0oMHxhWzQ3MzY3XSk+Pj4wKXtpZihhWzQ3MzY3XT1sPWwrMTF8MCxsPTB8''@;'; put 'put ''bDAoMHxhWzQ3MzY4XSxsKSxhWzQ3MzY4XT1sLCFsKXtsPS0xO2JyZWFrfX1lbHNlIGw9MHxhWzQ3MzY4XTtiPWwsbT1HO3Q6Zm9yKDs7KXtzd2l0Y2goaz1tKzF8MCwobT0wfHVlW20+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6YnJlYWsgdDtjYXNlIDQ0Om09MzJ9dWVbYj4+MF09bSxiPWIrMXww''@;'; put 'put ''LG09a31pZih1ZVtiPj4wXT0wLGFbSz4+Ml09cGUsYVtLKzQ+PjJdPU9lLGFbSys4Pj4yXT1MZSwzPT0oMHwkYShsLDExMTc2OSxLKSkpc3dpdGNoKHc9K19bcGU+PjNdLHc9dzwxP3c6MSx3PXc+MD93OjAsX1twZT4+M109dyxBPStfW09lPj4zXSxBPUE8MT9BOjEsQT1BPjA/QTowLF9bT2U+''@;'; put 'put ''PjNdPUEscD0rX1tMZT4+M10scD1wPDE/cDoxLHA9cD4wP3A6MCxfW0xlPj4zXT1wLDB8Zil7Y2FzZSAwOl9bYz4+M109dyxfW2MrOD4+M109QSxfW2MrMTY+PjNdPXAsX1tjKzI0Pj4zXT0xLGw9MDticmVhayBlO2Nhc2UgMTpXYyh3LEEscCxydCxHZSxsdCksdWVbYz4+MF09fn4oMjU1Kitf''@;'; put 'put ''W3J0Pj4zXSksdWVbYysxPj4wXT1+figyNTUqK19bR2U+PjNdKSx1ZVtjKzI+PjBdPX5+KDI1NSorX1tsdD4+M10pLHVlW2MrMz4+MF09LTEsbD0wO2JyZWFrIGU7Y2FzZSAzOldjKHcsQSxwLHJ0LEdlLGx0KSxMNCgrX1tydD4+M10sK19bR2U+PjNdLCtfW2x0Pj4zXSxCZSxIZSxqZSxldCks''@;'; put 'put ''dWVbYz4+MF09MjU1Kn5+K19bQmU+PjNdLHVlW2MrMT4+MF09MjU1Kn5+K19bSGU+PjNdLHVlW2MrMj4+MF09MjU1Kn5+K19bamU+PjNdLHVlW2MrMz4+MF09MjU1Kn5+K19bZXQ+PjNdLGw9MDticmVhayBlO2Nhc2UgMjpXYyh3LEEscCxydCxHZSxsdCksYVtjPj4yXT1+fig2NTUzNSorX1ty''@;'; put 'put ''dD4+M10pLGFbYys0Pj4yXT1+fig2NTUzNSorX1tHZT4+M10pLGFbYys4Pj4yXT1+fig2NTUzNSorX1tsdD4+M10pLGFbYysxMj4+Ml09NjU1MzUsbD0wO2JyZWFrIGU7Y2FzZSA0OldjKHcsQSxwLHJ0LEdlLGx0KSxfW2M+PjNdPStfW3J0Pj4zXSxfW2MrOD4+M109K19bR2U+PjNdLF9bYysx''@;'; put 'put ''Nj4+M109K19bbHQ+PjNdLF9bYysyND4+M109MSxsPTA7YnJlYWsgZTtkZWZhdWx0Omw9MDticmVhayBlfX1pZihtPTB8VjkoRyksYVtiZT4+Ml09bSxtKXtpZigoMD09KDB8KGw9MHxhWzQ3MzY5XSkpfHwoMHx1ZVsobWU9MHxhW2w+PjJdKT4+MF0pIT0oMHx1ZVttPj4wXSl8fDAhPSgwfFpp''@;'; put 'put ''KG1lLG0pKSkmJihsPTB8Y3coYmUsMjU5NDgsMjQ5MSwxMiwxMDMpLGFbNDczNjldPWwsIWwpKXN3aXRjaCgwfGYpe2Nhc2UgMDpjYXNlIDQ6YVtjPj4yXT0wLGFbYys0Pj4yXT0wLGFbYys4Pj4yXT0wLGFbYysxMj4+Ml09MCxhW2MrMTY+PjJdPTAsYVtjKzIwPj4yXT0wLF9bYysyND4+M109''@;'; put 'put ''MSxsPTE7YnJlYWsgZTtjYXNlIDE6dWVbYysyPj4wXT0wLHVlW2MrMT4+MF09MCx1ZVtjPj4wXT0wLHVlW2MrMz4+MF09LTEsbD0xO2JyZWFrIGU7Y2FzZSAzOmFbYz4+Ml09MCxsPTE7YnJlYWsgZTtjYXNlIDI6YVtjKzg+PjJdPTAsYVtjKzQ+PjJdPTAsYVtjPj4yXT0wLGFbYysxMj4+Ml09''@;'; put 'put ''NjU1MzUsbD0xO2JyZWFrIGU7ZGVmYXVsdDpsPTE7YnJlYWsgZX1zd2l0Y2goMHxmKXtjYXNlIDA6X1tjPj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfGJ0W2wrND4+MF0pLF9bYys4Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfGJ0W2wrNT4+MF0pLF9bYysxNj4+M109LjAwMzkyMTU2''@;'; put 'put ''ODYyNzQ1MDk4KisoMHxidFtsKzY+PjBdKSxfW2MrMjQ+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDB8YnRbbCsxMD4+MF0pLGw9MDticmVhayBlO2Nhc2UgMTp1ZVtjPj4wXT0wfHVlW2wrNz4+MF0sdWVbYysxPj4wXT0wfHVlW2wrOD4+MF0sdWVbYysyPj4wXT0wfHVlW2wrOT4+MF0sdWVb''@;'; put 'put ''YyszPj4wXT0wfHVlW2wrMTA+PjBdLGw9MDticmVhayBlO2Nhc2UgMzpfW3J0Pj4zXT1BPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDB8YnRbbCs3Pj4wXSksX1tHZT4+M109dz0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfGJ0W2wrOD4+MF0pLF9bbHQ+PjNdPWt0PS4wMDM5MjE1Njg2Mjc0NTA5OCor''@;'; put 'put ''KDB8YnRbbCs5Pj4wXSksTDQoQSx3LGt0LEJlLEhlLGplLGV0KSx1ZVtjPj4wXT0yNTUqfn4rX1tCZT4+M10sdWVbYysxPj4wXT0yNTUqfn4rX1tIZT4+M10sdWVbYysyPj4wXT0yNTUqfn4rX1tqZT4+M10sdWVbYyszPj4wXT0yNTUqfn4rX1tldD4+M10sbD0wO2JyZWFrIGU7Y2FzZSAyOmFb''@;'; put 'put ''Yz4+Ml09MjU3KigwfGJ0W2wrNz4+MF0pLGFbYys0Pj4yXT0yNTcqKDB8YnRbbCs4Pj4wXSksYVtjKzg+PjJdPTI1NyooMHxidFtsKzk+PjBdKSxhW2MrMTI+PjJdPTI1NyooMHxidFtsKzEwPj4wXSksbD0wO2JyZWFrIGU7Y2FzZSA0Ol9bYz4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMHxi''@;'; put 'put ''dFtsKzc+PjBdKSxfW2MrOD4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMHxidFtsKzg+PjBdKSxfW2MrMTY+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDB8YnRbbCs5Pj4wXSksX1tjKzI0Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfGJ0W2wrMTA+PjBdKSxsPTA7YnJlYWsgZTtkZWZh''@;'; put 'put ''dWx0Omw9MDticmVhayBlfX1lbHNlIGw9LTF9fXdoaWxlKDApO3JldHVybiBvZT1NdCwwfGx9ZnVuY3Rpb24gUGIobCxjLGYscCxtLEEpe3B8PTAsbXw9MCxBfD0wO3ZhciB3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtpZih3PShiPShSPShSPShjPStjKT4oZj0rZik/YzpmKTwobD0rbCk/bDpS''@;'; put 'put ''KS0oKGI9YzxmP2M6Zik+bD9sOmIpKS9SLFI+MClpZih3PjApe2s9KFItbCkvYixNPShSLWMpL2IsRD0oUi1mKS9iO2Rve2lmKFIhPWwpe2lmKFI9PWMpe2w9aysyLUQ7YnJlYWt9bD1SPT1mP00rNC1rOjB9ZWxzZSBsPShjLWYpL2J9d2hpbGUoMCk7KGwqPTYwKTwwJiYobCs9MzYwKX1lbHNl''@;'; put 'put ''IGw9MDtlbHNlIHc9MCxsPTA7X1twPj4zXT0uMDAyNzc3Nzc3Nzc3Nzc3Nzc4KmwsX1tBPj4zXT1SLF9bbT4+M109d31mdW5jdGlvbiBMNChsLGMsZixwLG0sQSx3KXtjPStjLGY9K2YsbXw9MCxBfD0wLHd8PTAsX1socHw9MCk+PjNdPTEtKGw9K2wpLF9bbT4+M109MS1jLF9bQT4+M109MS1m''@;'; put 'put ''LF9bdz4+M109Zj0oYz0rX1twPj4zXSk8KGY9K19bbT4+M10pP2M6ZixfW3c+PjNdPWY9KGM9K19bQT4+M10pPGY/YzpmLF9bcD4+M109K19bcD4+M10tZixfW20+PjNdPStfW20+PjNdLStfW3c+PjNdLF9bQT4+M109K19bQT4+M10tK19bdz4+M119ZnVuY3Rpb24gV2MobCxjLGYscCxtLEEp''@;'; put 'put ''e2w9K2wsYz0rYyxmPStmLHB8PTAsbXw9MCxBfD0wO3ZhciB3PTAsYj0wLGs9MCxNPTAsRD0wO2U6ZG97aWYoYzw9MCl3PWYsYj1mLGw9ZixNPTg7ZWxzZSBzd2l0Y2goYj1sPj0xPzA6NipsLEQ9fn5iLGItPSsoMHxEKSxsPSgxLWMpKmYsaz0oMS1iKmMpKmYsYz0oMS0oMS1iKSpjKSpmLDB8''@;'; put 'put ''RCl7Y2FzZSAwOnc9bCxiPWMsbD1mLE09ODticmVhayBlO2Nhc2UgMTp3PWwsYj1mLGw9ayxNPTg7YnJlYWsgZTtjYXNlIDI6dz1jLGI9ZixNPTg7YnJlYWsgZTtjYXNlIDM6dz1mLGI9ayxNPTg7YnJlYWsgZTtjYXNlIDQ6dz1mLGI9bCxsPWMsTT04O2JyZWFrIGU7Y2FzZSA1Onc9ayxiPWws''@;'; put 'put ''bD1mLE09ODticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCk7OD09KDB8TSkmJihfW3A+PjNdPWwsX1ttPj4zXT1iLF9bQT4+M109dyl9ZnVuY3Rpb24gVjkobCl7dmFyIGM9MCxmPTA7aWYoISgoYz0wfHVlWyhsfD0wKT4+MF0pPDwyND4+MjQ9PTk4fHwoZj1sKzF8MCxjPDwyND4+''@;'; put 'put ''MjQ9PTExOXwwPT0oMHxuMihmLDEzNzI2Niw0KSkpfHxjPDwyND4+MjQ9PTEwOHwwPT0oMHxuMihmLDEzNzI3MSw0KSl8fDA9PSgwfG4yKGYsMTM3Mjc2LDgpKSkpe2Rve2lmKGM8PDI0Pj4yND09NDcpaWYoYz0wfFVzKGYsNDcpKXtpZig0NyE9KDB8dWVbZj4+MF0pKXtsPShmPTA9PSgwfGk0''@;'; put 'put ''KDEzNzI4NSxmLDQpKSk/YysxfDA6bDticmVha31pZigwfChjPTB8YVs0NzM3MF0pJiYwfHVlW2M+PjBdJiYwfGk0KDEzNzI4NSxjLDMpKXtsPTB8aTYoYyxsKzJ8MCk7YnJlYWt9bD1sKzJ8MH1lbHNlIGw9ZjtlbHNlIDAhPSgwfChjPTB8YVs0NzM3MF0pKSYmMCE9KDB8dWVbYz4+MF0pJiYw''@;'; put 'put ''IT0oMHxpNCgxMzcyODUsYywzKSkmJihsPTB8aTYoYyxsKSl9d2hpbGUoMCk7bD0wfFo4KGwpfXJldHVybiAwfGx9ZnVuY3Rpb24gaTYobCxjKXtjfD0wO3ZhciBwLG0sZj0wLEE9MDtyZXR1cm4gbT1vZSxvZT1vZSsxNnwwLHA9bSxBPTB8em8obHw9MCksZj0xMysoQT0oMHx6byhjKSkrQXww''@;'; put 'put ''KXwwLChBKzN8MCk+Pj4wPCgwfGFbNDczNzFdKT4+PjA/Zj0wfGFbNDczNzJdOihhWzQ3MzcxXT1mLGY9MHxsMCgwfGFbNDczNzJdLGYpLGFbNDczNzJdPWYpLGFbcD4+Ml09bCxhW3ArND4+Ml09YyxhbyhmLDEzNzI5MCxwKSxvZT1tLDB8YVs0NzM3Ml19ZnVuY3Rpb24gWjkobCl7YVs0NzM3''@;'; put 'put ''MF09bHw9MH1mdW5jdGlvbiBGYihsLGMsZixwLG0pe3ZhciBBLHc7cmV0dXJuIEE9b2Usb2U9b2UrMjA4fDAsZnVuY3Rpb24gejgobCxjLGYscCxtLEEsdyl7Zj0rZixwPStwLG09K20sQT0rQSx3PSt3O3ZhciBiLGs7X1sobHw9MCk+PjNdPWM9K2MsX1tsKzg+PjNdPWYsX1soaz1sKzE2fDAp''@;'; put 'put ''Pj4zXT1wLF9bKGI9bCsyNHwwKT4+M109bSxfW2wrMzI+PjNdPTAsZj0rcTIoKyArSWEoK0EpL20sKyArbGEoK0EpL3ApLF9bbCs1Nj4+M109ZixtPStxMigrICtJYSgrdykvbSwrICtsYSgrdykvcCksX1tsKzQwPj4zXT0xLF9bbCs0OD4+M109MCxtLT02LjI4MzE4NTMwNzE3OTU4NioreWMo''@;'; put 'put ''LjE1OTE1NDk0MzA5MTg5NTM1KihtLWYpKSxfW2wrNjQ+PjNdPXctQT4zLjE0MTU5MjY1MzU4OTc5MyZtLWY8My4xNDE1OTI2NTM1ODk3OTM/bSs2LjI4MzE4NTMwNzE3OTU4NjptLGZ1bmN0aW9uIGJkKGwpe3ZhciBmLG0sYz0wLHA9MDtjPStGMCgrKChwPStfWzE2KyhsfD0wKT4+M10pKnAt''@;'; put 'put ''KGM9K19bbCsyND4+M10pKmMpKSxwPWMqK19bbCs0MD4+M10sYyo9K19bbCs0OD4+M10sX1tsKzEwND4+M109KG09K19bbD4+M10pLXAsX1tsKzExMj4+M109KGY9K19bbCs4Pj4zXSktYyxfW2wrMTIwPj4zXT1tK3AsX1tsKzEyOD4+M109ZitjfShsKSxmdW5jdGlvbiByQihsKXt2YXIgZixt''@;'; put 'put ''LEEsayxjPTAscD0wLHc9MCxiPTA7cD0rX1sxNisobHw9MCk+PjNdLGs9K2xhKCsoYj0rX1tsKzU2Pj4zXSkpKnAsYz0rX1tsKzI0Pj4zXSxiPStJYSgrYikqYyxwPStsYSgrKHc9K19bbCs2ND4+M10pKSpwLGM9K0lhKCt3KSpjLF9bbCs3Mj4+M109KGY9K19bbCs0MD4+M10pKmsrKHc9K19b''@;'; put 'put ''bD4+M10pLShtPStfW2wrNDg+PjNdKSpiLF9bbCs4MD4+M109bSprKyhBPStfW2wrOD4+M10pK2YqYixfW2wrODg+PjNdPXcrZipwLW0qYyxfW2wrOTY+PjNdPUErbSpwK2YqY30obCksZnVuY3Rpb24geEUobCl7dmFyIGIsayxNLEQsRyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxSPTA7bT0o''@;'; put 'put ''TT0rX1syNCsobHw9MCk+PjNdKS8oRD0rX1tsKzE2Pj4zXSksRz0rZW8oKyhSPStfW2wrNDg+PjNdKSk8LjEsaz0rX1tsKzQwPj4zXTtkb3tpZihHKXtpZihwPS0oZj0rVmYoKyhjPVIvaykqbSkpLGs8MCl7Yz0rVmYoK2MvbSksbT1wLHA9My4xNDE1OTI2NTM1ODk3OTMtZixmPTQuNzEyMzg4''@;'; put 'put ''OTgwMzg0NjktYyxjPTEuNTcwNzk2MzI2Nzk0ODk2Ni1jO2JyZWFrfWM9K1ZmKCtjL20pLG09LTMuMTQxNTkyNjUzNTg5NzkzLWYsZj0xLjU3MDc5NjMyNjc5NDg5NjYtYyxjPS0xLjU3MDc5NjMyNjc5NDg5NjYtYzticmVha31pZihwPTEuNTcwNzk2MzI2Nzk0ODk2NisoZj0rVmYoKyhjPWsv''@;'; put 'put ''UikvbSkpLFI8MCl7Yz0rVmYoK2MqbSksbT1mKy0xLjU3MDc5NjMyNjc5NDg5NjYsZj1jKzMuMTQxNTkyNjUzNTg5NzkzO2JyZWFrfWM9K1ZmKCtjKm0pLG09cCxwPWYrNC43MTIzODg5ODAzODQ2OSxmPWMsYys9LTMuMTQxNTkyNjUzNTg5NzkzO2JyZWFrfXdoaWxlKDApO20tPTYuMjgzMTg1''@;'; put 'put ''MzA3MTc5NTg2Kit5YyguMTU5MTU0OTQzMDkxODk1MzUqKG0tKHc9K19bbCs1Nj4+M10pKSksYy09Ni4yODMxODUzMDcxNzk1ODYqK3ljKC4xNTkxNTQ5NDMwOTE4OTUzNSooYy13KSksQT1wLTYuMjgzMTg1MzA3MTc5NTg2Kit5YyguMTU5MTU0OTQzMDkxODk1MzUqKHAtdykpLHc9Zi02LjI4''@;'; put 'put ''MzE4NTMwNzE3OTU4NioreWMoLjE1OTE1NDk0MzA5MTg5NTM1KihmLXcpKSxmPW08PShiPStfW2wrNjQ+PjNdKT8rbGEoK20pKkQqaysgK19bbD4+M10tTSorSWEoK20pKlI6KG09K19bbCs3Mj4+M10pPChmPStfW2wrODg+PjNdKT9tOmYsX1tsKzEzNj4+M109ZixwPWM8PWI/K2xhKCtjKSpE''@;'; put 'put ''KlIrICtfW2wrOD4+M10rICtJYSgrYykqTSprOihtPStfW2wrODA+PjNdKTwocD0rX1tsKzk2Pj4zXSk/bTpwLF9bbCsxNDQ+PjNdPXAsYz1BPD1iPytsYSgrQSkqRCprKyArX1tsPj4zXS1NKitJYSgrQSkqUjooQT0rX1tsKzcyPj4zXSk+KGM9K19bbCs4OD4+M10pP0E6YyxfW2wrMTUyPj4z''@;'; put 'put ''XT1jLWYsYz13PD1iPytsYSgrdykqRCpSKyArX1tsKzg+PjNdKyArSWEoK3cpKk0qazooUj0rX1tsKzgwPj4zXSk+KGM9K19bbCs5Nj4+M10pP1I6YyxfW2wrMTYwPj4zXT1jLXB9KGwpLF9bbCsxNjg+PjNdPXc9KCh3PStfW2s+PjNdKS0rX1tiPj4zXSkvdyxfW2wrMTc2Pj4zXT0oMi13KSp3''@;'; put 'put ''LF9bbCsxODQ+PjNdPXc9MS13LF9bbCsxOTI+PjNdPXcqd30odz1BLCtfWyhsfD0wKT4+M10sK19bbCs4Pj4zXSxjPStjLGY9K2YscD0rcCxtPSttKSxsPTB8ZnVuY3Rpb24gTUUobCl7bHw9MDt2YXIgayxNLEQsUixtZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsRz0wLEs9MCxwZT0w''@;'; put 'put ''LGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wO2ZvcihtZT0wfG1yKDgpLG09K19bbCs2ND4+M10tKEE9K19bbCs1Nj4+M10pLHBlPTEsYz0wO0s9bS8rKDB8cGUpLGM8PDI0Pj4yND09MCYoMHxwZSk8MTAyNDspe2U6ZG97aWYoSzw9MS41NzA3OTYzMjY3OTQ4''@;'; put 'put ''OTY2KWZvcihmPUEscD0wLGM9MTs7KXtpZighKGM8PDI0Pj4yNCE9MCYoMHxwKTwoMHxwZSkpKWJyZWFrIGU7Yz0rejkobCxmLEc9ZitLKTw9MWUtNSYxLGY9RyxwPXArMXwwfWVsc2UgYz0wfXdoaWxlKDApO3BlPDw9MX1mb3IoYj0rbGEoK0EpLEJlPStJYSgrQSksSGU9KE9lPStfWyhwPWwr''@;'; put 'put ''MTZ8MCk+PjNdKSpiLHc9KGY9K19bKGs9bCsyNHwwKT4+M10pKkJlLGIqPWYsbT0oTGU9K19bKE09bCs0MHwwKT4+M10pKkhlKyhmPStfW2w+PjNdKS0oYmU9K19bKEQ9bCs0OHwwKT4+M10pKncsdz1iZSpIZStMZSp3KyhHPStfWyhSPWwrOHwwKT4+M10pLE9lKj0tQmUsZnVuY3Rpb24gbkIo''@;'; put 'put ''bCxjLGYpe2x8PTAsYz0rYyxmPStmO3ZhciBwO2FbNDczNzNdPTEwMCxwPTB8bXIoMTYwMCksYVtsPj4yXT1wLF9bcD4+M109YyxfW3ArOD4+M109ZixhW2wrND4+Ml09MX0obWUsZixHKSxFRShtZSxtLHcpLEc9K004KC41KkspLEc9LjMzMzMzMzMzMzMzMzMzMzMqK0lhKCtLKSooK0YwKCso''@;'; put 'put ''RypHKjMrNCkpLTEpLGY9QSxBPXcsdz1iZSpPZStMZSpiLGI9TGUqT2UtYmUqYixjPTA7ISgoMHxjKT49KDB8cGUpKTspQmU9K2xhKCsoYmU9ZitLKSksSGU9K0lhKCtiZSksR2U9KGV0PStfW3A+PjNdKSpCZSxMZT0oamU9K19baz4+M10pKkhlLEJlKj1qZSxHOShtZSxtK2IqRyxBK3cqRywo''@;'; put 'put ''T2U9KGplPStfW00+PjNdKSpHZSsgK19bbD4+M10tKHJ0PStfW0Q+PjNdKSpMZSktKEhlPWplKihldCo9LUhlKS1ydCpCZSkqRywoTGU9cnQqR2UramUqTGUrICtfW1I+PjNdKS0oQmU9cnQqZXQramUqQmUpKkcsT2UsTGUpLGY9YmUsbT1PZSxBPUxlLHc9QmUsYj1IZSxjPWMrMXwwO3JldHVy''@;'; put 'put ''biBmdW5jdGlvbiBPNChsKXt2YXIgYztFRShsfD0wLCtfWyhjPTB8YVtsPj4yXSk+PjNdLCtfW2MrOD4+M10pLGFbbD4+Ml09MHxaYSgwfGFbbD4+Ml0sYVtsKzQ+PjJdPDw0KSxhWzQ3MzczXT0wfShtZSksMHxtZX0odyksb2U9QSwwfGx9ZnVuY3Rpb24gejkobCxjLGYpe3ZhciBtLEEsdyxi''@;'; put 'put ''LHA9MDtyZXR1cm4gbT0rX1syNCsobHw9MCk+PjNdLyhiPStfW2wrMTY+PjNdKSx3PStsYSgrKHA9KGY9K2YpKyhjPStjKSkpLEE9K2xhKDIqcCkscD0rbGEoMypwKSwrKCguMDAxKm0rNC45OCkqbSsuMjA3KS8obSsuMDA2NykqYiorejEoKygoKCtfWzMyKyhsPW08LjI1PzEwMzkyOjEwNjQ4''@;'; put 'put ''KT4+M10qbSsgK19bbCs0MD4+M10pKm0rICtfW2wrNDg+PjNdKS8oK19bbCs1Nj4+M10rbSkqdysoKCtfW2w+PjNdKm0rICtfW2wrOD4+M10pKm0rICtfW2wrMTY+PjNdKS8oK19bbCsyND4+M10rbSkrKCgrX1tsKzY0Pj4zXSptKyArX1tsKzcyPj4zXSkqbSsgK19bbCs4MD4+M10pLygrX1ts''@;'; put 'put ''Kzg4Pj4zXSttKSpBKygoK19bbCs5Nj4+M10qbSsgK19bbCsxMDQ+PjNdKSptKyArX1tsKzExMj4+M10pLygrX1tsKzEyMD4+M10rbSkqcCsoKCgrX1tsKzE2MD4+M10qbSsgK19bbCsxNjg+PjNdKSptKyArX1tsKzE3Nj4+M10pLygrX1tsKzE4ND4+M10rbSkqdysoKCtfW2wrMTI4Pj4zXSpt''@;'; put 'put ''KyArX1tsKzEzNj4+M10pKm0rICtfW2wrMTQ0Pj4zXSkvKCtfW2wrMTUyPj4zXSttKSsoKCtfW2wrMTkyPj4zXSptKyArX1tsKzIwMD4+M10pKm0rICtfW2wrMjA4Pj4zXSkvKCtfW2wrMjE2Pj4zXSttKSpBKygoK19bbCsyMjQ+PjNdKm0rICtfW2wrMjMyPj4zXSkqbSsgK19bbCsyNDA+PjNd''@;'; put 'put ''KS8oK19bbCsyNDg+PjNdK20pKnApKihmLWMpKSl9ZnVuY3Rpb24gRUUobCxjLGYpe3ZhciBwLG07RzkobHw9MCwrX1sobT0wfGFbbD4+Ml0pKygocD0oMHxhW2wrND4+Ml0pLTF8MCk8PDQpPj4zXSwrX1ttKyhwPDw0KSs4Pj4zXSxjPStjLGY9K2YsYyxmKX1mdW5jdGlvbiBHOShsLGMsZixw''@;'; put 'put ''LG0sQSx3KXtjPStjLGY9K2YscD0rcCxtPSttLEE9K0Esdz0rdzt2YXIgTSxELGI9MCxrPTA7KDMrKGI9MHxhWyhNPTQrKGx8PTApfDApPj4yXSl8MCk8KDB8KGs9MHxhWzQ3MzczXSkpP2w9MHxhW2w+PjJdOihhWzQ3MzczXT1rPDwxLGI9MHxaYSgwfGFbbD4+Ml0sazw8NSksYVtsPj4yXT1i''@;'; put 'put ''LGw9YixiPTB8YVtNPj4yXSksX1tsKyhiPDw0KT4+M109YyxEPWIrMXwwLF9bbCsoYjw8NCkrOD4+M109ZixfW2wrKEQ8PDQpPj4zXT1wLGs9YisyfDAsX1tsKyhEPDw0KSs4Pj4zXT1tLF9bbCsoazw8NCk+PjNdPUEsYVtNPj4yXT1iKzMsX1tsKyhrPDw0KSs4Pj4zXT13fWZ1bmN0aW9uIF9k''@;'; put 'put ''KGwpe3ZhciBjPTAsZj0wLHA9MDtzd2l0Y2goMHx1ZVs0KyhsfD0wKT4+MF0pe2Nhc2UgMTpsPTcyKyhmPTB8YVtsPj4yXSl8MCxmPWYrNTZ8MCxwPTU7YnJlYWs7Y2FzZSAzOmw9MjQrKGY9MHxhW2w+PjJdKXwwLGY9Zis4fDAscD01O2JyZWFrO2Nhc2UgMjpsPTMyKyhmPTB8YVtsPj4yXSl8''@;'; put 'put ''MCxmPWYrMTZ8MCxwPTU7YnJlYWs7ZGVmYXVsdDpjPTB9cmV0dXJuIDU9PSgwfHApJiYoYz0rX1tsPj4zXS0rX1tmPj4zXSksK2N9ZnVuY3Rpb24gVEUobCxjLGYpe2x8PTAsZnw9MDt2YXIgcCxtLEEsdyxiLGssTT0wLEQ9MCxSPTAsRz0wLEs9MDtrPW9lLG9lPW9lKzk2fDAsQT1rKzY0fDAs''@;'; put 'put ''bT1rKzMyfDAscD1rKzE2fDAsdz1rLChiPTB8VHRbNCsoY3w9MCk+PjFdKTw8MTY+PjE2Pj0xJiYoX1t3Pj4zXT0uNSooKE09K19bKEc9Yys4fDApPj4zXSkrKEQ9K19bYysyND4+M10pKSsgK19bZj4+M10sX1t3Kzg+PjNdPS41KigrX1tjKzE2Pj4zXSsgK19bYyszMj4+M10pKyArX1tmKzg+''@;'; put 'put ''PjNdLFI9MHxhW2M+PjJdLEs9ZisxNnwwLGY9MHx1ZVtjKzY+PjBdLGFbcD4+Ml09YVt3Pj4yXSxhW3ArND4+Ml09YVt3KzQ+PjJdLGFbcCs4Pj4yXT1hW3crOD4+Ml0sYVtwKzEyPj4yXT1hW3crMTI+PjJdLGFbbT4+Ml09YVtLPj4yXSxhW20rND4+Ml09YVtLKzQ+PjJdLGFbbSs4Pj4yXT1h''@;'; put 'put ''W0srOD4+Ml0sYVttKzEyPj4yXT1hW0srMTI+PjJdLGFbbSsxNj4+Ml09YVtLKzE2Pj4yXSxhW20rMjA+PjJdPWFbSysyMD4+Ml0sYVttKzI0Pj4yXT1hW0srMjQ+PjJdLGFbbSsyOD4+Ml09YVtLKzI4Pj4yXSxhW0E+PjJdPWFbRz4+Ml0sYVtBKzQ+PjJdPWFbRys0Pj4yXSxhW0ErOD4+Ml09''@;'; put 'put ''YVtHKzg+PjJdLGFbQSsxMj4+Ml09YVtHKzEyPj4yXSxhW0ErMTY+PjJdPWFbRysxNj4+Ml0sYVtBKzIwPj4yXT1hW0crMjA+PjJdLGFbQSsyND4+Ml09YVtHKzI0Pj4yXSxhW0ErMjg+PjJdPWFbRysyOD4+Ml0sZnVuY3Rpb24gTmIobCxjLGYscCxtLEEsdyxiKXtsfD0wLGN8PTAsZnw9MCxw''@;'; put 'put ''fD0wLG09K20sQXw9MCx3fD0wLGJ8PTA7dmFyIEsscGUsbWUsYmUsT2UsTGUsQmUsSGUsamUsR2UsbHQsTXQsa3QsYXQsRXQsdXQsd3Qscm4seW4sRm4sbHIsa3Isaz0wLE09MCxEPTAsUj0wLEc9MCxldD0wLHJ0PTAsWnQ9MCxOcj0wO2Zvcihrcj1vZSxvZT1vZSsxMjh8MCx1dD1rcisxMDR8''@;'; put 'put ''MCxGbj1rcis0OHwwLGxyPWtyKzE2fDAsYVsoWnQ9d3Q9a3IpPj4yXT0wLGFbWnQrND4+Ml09MCx5bj0ocm49K19bcD4+M10pLW0sRXQ9cm4rbSxfWyhadD13dCs4fDApPj4zXT0uNSooK19bdysyND4+M10tK19bdys4Pj4zXSkrICtfW3ArOD4+M10sTjgobCwxKSxHZT1scisxNnwwLGx0PWxy''@;'; put 'put ''KzR8MCxNdD1scisyNHwwLGt0PUZuKzR8MCxhdD1GbisxNnwwLEs9MD09KDB8YikscGU9Rm4rMjR8MCxtZT1Gbis4fDAsYmU9Rm4rMzJ8MCxPZT1Gbis0MHwwLExlPUZuKzQ4fDAsQmU9QSsxNnwwLEhlPUErNHwwLGplPWxyKzh8MCxSPTA7ISgoMHxSKT49KDB8YykpOyl7c3dpdGNoKDB8dWVb''@;'; put 'put ''ZisoMjQqUnwwKSs2Pj4wXSl7Y2FzZSAxMDg6bT15bjticmVhaztjYXNlIDExNDptPUV0LStfW2YrKDI0KlJ8MCkrOD4+M107YnJlYWs7ZGVmYXVsdDptPXJuLS41KitfW2YrKDI0KlJ8MCkrOD4+M119Zm9yKF9bcD4+M109bSxfW1p0Pj4zXT0rX1tadD4+M10tK19bKGV0PWYrKDI0KlJ8MCkr''@;'; put 'put ''MTZ8MCk+PjNdLHJ0PWYrKDI0KlJ8MCkrNHwwLEQ9MHxhW2YrKDI0KlJ8MCk+PjJdLEc9MDshKCgwfEcpPj0oMHxUdFtydD4+MV0pKTspKGI9MHxhWyhNPUQrNHwwKT4+Ml0pPyhfW0dlPj4zXT0rX1soK19bYisxNj4+M10+MD9iOkEpKzE2Pj4zXSxhW2xyPj4yXT1hWygwPT0oMHxhW2I+PjJd''@;'; put 'put ''KT9BOmIpPj4yXSxhW2x0Pj4yXT13PTB8YVsoMD09KDB8YVtiKzQ+PjJdKT9BOmIpKzQ+PjJdLChiPTEyNyZhW2IrMjQ+PjJdKT9ifD0tMTI4JmFbTXQ+PjJdOk5yPTEyKTooX1tHZT4+M109K19bQmU+PjNdLGFbbHI+PjJdPWFbQT4+Ml0sYVtsdD4+Ml09dz0wfGFbSGU+PjJdLE5yPTEyKSwx''@;'; put 'put ''Mj09KDB8TnIpJiYoTnI9MCxiPS0xMjgmYVtNdD4+Ml0pLGFbTXQ+PjJdPWIsZ2EobCx3KSxhW0ZuPj4yXT1hW0Q+PjJdLGFba3Q+PjJdPWxyLF9bYXQ+PjNdPStfW0QrMTY+PjNdLF9bcGU+PjNdPWs9Sz8xOitfW0QrMjQ+PjNdLGFbamU+PjJdPWFbOCsoMHxhW00+PjJdKT4+Ml0sYVttZT4+''@;'; put 'put ''Ml09YVtEKzg+PjJdLF9bYmU+PjNdPStfWyhNPUQrMzJ8MCk+PjNdLF9bT2U+PjNdPStfW2V0Pj4zXSx1ZVtMZT4+MF09MTA4LF9bd3Q+PjNdPW0sYVt1dD4+Ml09YVt3dD4+Ml0sYVt1dCs0Pj4yXT1hW3d0KzQ+PjJdLGFbdXQrOD4+Ml09YVt3dCs4Pj4yXSxhW3V0KzEyPj4yXT1hW3d0KzEy''@;'; put 'put ''Pj4yXSxTaChsLHV0LEZuKSxfW3A+PjNdPWs9K19bTT4+M10rbSxEPUQrNTZ8MCxHPUcrMXwwLG09aztSPVIrMXwwfXhiKGwpLG9lPWtyfShsLGI8PDE2Pj4xNixSLHAsLjUqKEQtTSksbSxBLGYpKSxvZT1rfWZ1bmN0aW9uIG82KGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHcsYixNLEQsSyxwZSxt''@;'; put 'put ''ZSxiZSxMZSxPZSxwPTAsbT0wLEE9MCxrPTAsUj0wLEc9MDtpZihMZT1vZSxvZT1vZSsxNzZ8MCxLPUxlKzk2fDAsYmU9TGUrMTM2fDAsTT1MZSxEPUxlKzEyOHwwLGFbKG1lPUxlKzY0fDApPj4yXT1hWyhSPTQ4KyhjfD0wKXwwKT4+Ml0sYVttZSs0Pj4yXT1hW1IrND4+Ml0sYVttZSs4Pj4y''@;'; put 'put ''XT1hW1IrOD4+Ml0sYVttZSsxMj4+Ml09YVtSKzEyPj4yXSxhW21lKzE2Pj4yXT1hW1IrMTY+PjJdLGFbbWUrMjA+PjJdPWFbUisyMD4+Ml0sYVttZSsyND4+Ml09YVtSKzI0Pj4yXSxhW21lKzI4Pj4yXT1hW1IrMjg+PjJdLHc9K19bZj4+M10sYj0rX1tmKzg+PjNdLHA9MHxhWyhSPWMrODR8''@;'; put 'put ''MCk+PjJdLE9lPTB8YVtjPj4yXT8xOjAhPSgwfGFbYys4Pj4yXSksMHwobT0wfGFbKHBlPWMrMTA4fDApPj4yXSkmJklFKGYsbSwxODY1NDQpLF9bbWU+PjNdPStfW21lPj4zXSt3LF9bKEc9bWUrMTZ8MCk+PjNdPStfW0c+PjNdK3csX1soRz1tZSs4fDApPj4zXT0rX1tHPj4zXStiLF9bKEc9''@;'; put 'put ''bWUrMjR8MCk+PjNdPStfW0c+PjNdK2IsT2UmJjA9PSg0JmFbbCsxNTI+PjJdfDApPyhhW0s+PjJdPWFbbWU+PjJdLGFbSys0Pj4yXT1hW21lKzQ+PjJdLGFbSys4Pj4yXT1hW21lKzg+PjJdLGFbSysxMj4+Ml09YVttZSsxMj4+Ml0sYVtLKzE2Pj4yXT1hW21lKzE2Pj4yXSxhW0srMjA+PjJd''@;'; put 'put ''PWFbbWUrMjA+PjJdLGFbSysyND4+Ml09YVttZSsyND4+Ml0sYVtLKzI4Pj4yXT1hW21lKzI4Pj4yXSxHPTB8SGIobCxmLGMsSyxiZSkpOkc9MCwhKDMyJihtPTB8VHRbKGs9Yys0MnwwKT4+MV0pKSl7Zm9yKChBPTB8YVtjKzIwPj4yXSkmJihtPTB8YTYobCxBLDB8YVtjKzI4Pj4yXSw2NTUz''@;'; put 'put ''NSZtLEQpLDQmVHRbaz4+MV0/KGs9MHxidFtjKzMzPj4wXSxhW0s+PjJdPWFbbWU+PjJdLGFbSys0Pj4yXT1hW21lKzQ+PjJdLGFbSys4Pj4yXT1hW21lKzg+PjJdLGFbSysxMj4+Ml09YVttZSsxMj4+Ml0sYVtLKzE2Pj4yXT1hW21lKzE2Pj4yXSxhW0srMjA+PjJdPWFbbWUrMjA+PjJdLGFb''@;'; put 'put ''SysyND4+Ml09YVttZSsyND4+Ml0sYVtLKzI4Pj4yXT1hW21lKzI4Pj4yXSxZMyhsLDB8RGEoTSxLLGspLDQsNCxtKSk6KGFbSz4+Ml09YVttZT4+Ml0sYVtLKzQ+PjJdPWFbbWUrND4+Ml0sYVtLKzg+PjJdPWFbbWUrOD4+Ml0sYVtLKzEyPj4yXT1hW21lKzEyPj4yXSxhW0srMTY+PjJdPWFb''@;'; put 'put ''bWUrMTY+PjJdLGFbSysyMD4+Ml09YVttZSsyMD4+Ml0sYVtLKzI0Pj4yXT1hW21lKzI0Pj4yXSxhW0srMjg+PjJdPWFbbWUrMjg+PjJdLGIzKGwsSyxtKSksSHQoMHxhW0Q+PjJdKSk7bT0wfGFbcD4+Ml07KW9CKGwsbSxmKSxwPXArNHwwO2ZvcihwPTB8YVtSPj4yXSxZZihsLDEpLG09Yysy''@;'; put 'put ''NHwwO0E9cCs0fDAscD0wfGFbcD4+Ml07KTB8dWVbcCsxMDA+PjBdPyhhQihsLHAsZiwwfGFbbT4+Ml0sMHxhW0E+PjJdKSxwPUEpOnA9QTswfHVlW2MrMzM+PjBdJiYoYVtLPj4yXT1hW21lPj4yXSxhW0srND4+Ml09YVttZSs0Pj4yXSxhW0srOD4+Ml09YVttZSs4Pj4yXSxhW0srMTI+PjJd''@;'; put 'put ''PWFbbWUrMTI+PjJdLGFbSysxNj4+Ml09YVttZSsxNj4+Ml0sYVtLKzIwPj4yXT1hW21lKzIwPj4yXSxhW0srMjQ+PjJdPWFbbWUrMjQ+PjJdLGFbSysyOD4+Ml09YVttZSsyOD4+Ml0sRzgobCxjLEspKX0wfEcmJlc5KGwsYmUpLE9lJiY0JmFbbCsxNTI+PjJdfDAmJihhW0s+PjJdPWFbbWU+''@;'; put 'put ''PjJdLGFbSys0Pj4yXT1hW21lKzQ+PjJdLGFbSys4Pj4yXT1hW21lKzg+PjJdLGFbSysxMj4+Ml09YVttZSsxMj4+Ml0sYVtLKzE2Pj4yXT1hW21lKzE2Pj4yXSxhW0srMjA+PjJdPWFbbWUrMjA+PjJdLGFbSysyND4+Ml09YVttZSsyND4+Ml0sYVtLKzI4Pj4yXT1hW21lKzI4Pj4yXSwwfEhi''@;'; put 'put ''KGwsZixjLEssYmUpKSYmVzkobCxiZSksMHxhW3BlPj4yXSYmWTkoZiwxODY1NDQpLG9lPUxlfWZ1bmN0aW9uIElFKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHcscD0wLG09MCxBPTA7MHwobT0wfGFbKHc9MTYrKGx8PTApfDApPj4yXSkmJigwfGFbYz4+Ml0/KGFbZj4+Ml09bSxtPTB8YVtjPj4y''@;'; put 'put ''XSxBPXcpOihtPTAsQT1mKSxhW0E+PjJdPW0pLDB8KG09MHxhW2wrMjA+PjJdKSYmKDB8YVsoQT1jKzR8MCk+PjJdPyhhW2YrND4+Ml09bSxtPTB8YVtBPj4yXSxBPXcpOihtPTAsQT1mKSxhW0ErND4+Ml09bSksKHA9K19bbCszMj4+M10pPj0wJiYoK19bKG09YysxNnwwKT4+M10+PTA/KF9b''@;'; put 'put ''ZisxNj4+M109cCxwPStfW20+PjNdLGY9dyk6cD0tMSxfW2YrMTY+PjNdPXApfWZ1bmN0aW9uIEhiKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLE0sRCxSLEcsSyxwZSxtZSxiZSxBPTA7YmU9b2Usb2U9b2UrMjI0fDAsTT1iZSs4fDAsYj1iZSxtZT1iZSs0MHwwLHc9YmUr''@;'; put 'put ''MTg0fDAsQT1iZSs1NnwwLGFbKG18PTApPj4yXT1hWyhEPTIwOCsoaz0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdLGFbbSs0Pj4yXT1hWyhSPWsrMjI4fDApPj4yXSxhW20rOD4+Ml09YVsoRz1rKzI0NHwwKT4+Ml0sYVttKzEyPj4yXT1hWyhLPWsrMjEyfDApPj4yXSx1ZVttKzE2Pj4wXT0o''@;'; put 'put ''VHRbKHBlPWsrMjYwfDApPj4xXTw8MTUmNjU1MzUpPDwxNj4+MTY+PjE1LDAhPSgwfChtPTB8YVtmKzE2Pj4yXSkpJiYwIT0oMHx1ZVttPj4wXSk/QT0wOihvcyhtZSwxMjgsQSksKG09MHxhWyhBPWMrNjB8MCk+PjJdKXx8KG09MHxuYSgwfHhDKGwsMHxhW2srOD4+Ml0sbWUpKSxhW0E+PjJd''@;'; put 'put ''PW0sdWVbYys2ND4+MF09MSksY28obWUsbSksYVs0NzM3NF09MSsoQT0wfGFbNDczNzRdKSxhW2I+PjJdPUEsYW8odywxMzczOTEsYiksY28obWUsdyksKG09MHxhWyhBPW1lKzR8MCk+PjJdKT4+PjA+PSgwfGFbbWUrOD4+Ml0pPj4+MCYmKEcwKG1lLDEpLG09MHxhW0E+PjJdKSx1ZVttPj4w''@;'; put 'put ''XT0wLGFbQT4+Ml09bT0wfGFbbWU+PjJdLEE9MSksbT0wfHpGKGwsMCwwfGFbZj4+Ml0sMHxhW2YrMTI+PjJdLDB8YVtmKzg+PjJdLG0sMHxhW2srOD4+Ml0pLEEmJmsyKG1lKTtkb3tpZigwfG0pe2lmKDA9PSgwfGFbRD4+Ml0pJiYwPT0oMSZUdFtwZT4+MV0pKWJyZWFrO2FbTT4+Ml09YVtw''@;'; put 'put ''Pj4yXSxhW00rND4+Ml09YVtwKzQ+PjJdLGFbTSs4Pj4yXT1hW3ArOD4+Ml0sYVtNKzEyPj4yXT1hW3ArMTI+PjJdLGFbTSsxNj4+Ml09YVtwKzE2Pj4yXSxhW00rMjA+PjJdPWFbcCsyMD4+Ml0sYVtNKzI0Pj4yXT1hW3ArMjQ+PjJdLGFbTSsyOD4+Ml09YVtwKzI4Pj4yXSxxVChsLE0pLHcx''@;'; put 'put ''KGwsMHxhW0Q+PjJdLDB8YVtSPj4yXSwwfGFbRz4+Ml0sMHxhW0s+PjJdKX19d2hpbGUoMCk7cmV0dXJuIG9lPWJlLDB8bX1mdW5jdGlvbiBhNihsLGMsZixwLG0pe3ZhciB3LGI7cmV0dXJuIGx8PTAsZnw9MCxwfD0wLGI9b2Usb2U9b2UrMTZ8MCwoMHx4MShjfD0wLG18PTAsdz1iKSk8PDI0''@;'; put 'put ''Pj4yND8ob2wobCwwfGFbbT4+Ml0pLEdmKGwsKGM9MHxhW20rND4+Ml0pfHwxMzczMTQsZiwrV25bdz4+Ml0pLGM9cD4+PjEmMXwyKToob2wobCxjKSxjPTEpLGdhKGwsMTM3Mzc5KSxvZT1iLDB8Y31mdW5jdGlvbiBEYShsLGMsZil7Znw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MDtyZXR1''@;'; put 'put ''cm4gYVsobHw9MCk+PjJdPWFbKGN8PTApPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdLGFbKHA9bCszMnwwKT4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0s''@;'; put 'put ''YVtwKzEyPj4yXT1hW2MrMTI+PjJdLCgwfGYpPjE/KF9bbD4+M109dz0rX1tsPj4zXSsoYj0uNSorKDB8ZikpLF9bKGY9bCs4fDApPj4zXT1BPStfW2Y+PjNdK2IsX1twPj4zXT1tPStfW3A+PjNdLWIsX1socD1sKzQwfDApPj4zXT1iPStfW3A+PjNdLWIpOihtPStfW3A+PjNdLEE9K19bbCs4''@;'; put 'put ''Pj4zXSx3PStfW2w+PjNdLGI9K19bbCs0MD4+M10pLF9bbCsxNj4+M109bSxfW2wrMjQ+PjNdPUEsX1tsKzQ4Pj4zXT13LF9bbCs1Nj4+M109YiwwfGx9ZnVuY3Rpb24gb0IobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxBLE0sRCxSLEcsSyxtZSxwPTAsdz0wLGI9MCxrPTAscGU9MDttZT1vZSxv''@;'; put 'put ''ZT1vZSsxNzZ8MCxSPW1lKzk2fDAsRz1tZSsxMzZ8MCxNPW1lLEQ9bWUrMTI4fDAsYVsoSz1tZSs2NHwwKT4+Ml09YVsocGU9NDgrKGN8PTApfDApPj4yXSxhW0srND4+Ml09YVtwZSs0Pj4yXSxhW0srOD4+Ml09YVtwZSs4Pj4yXSxhW0srMTI+PjJdPWFbcGUrMTI+PjJdLGFbSysxNj4+Ml09''@;'; put 'put ''YVtwZSsxNj4+Ml0sYVtLKzIwPj4yXT1hW3BlKzIwPj4yXSxhW0srMjQ+PjJdPWFbcGUrMjQ+PjJdLGFbSysyOD4+Ml09YVtwZSsyOD4+Ml0sQT0rX1tmKzg+PjNdLHBlPTB8YVtjPj4yXT8xOjAhPSgwfGFbYys4Pj4yXSksX1tLPj4zXT0rX1tLPj4zXSsobT0rX1tmPj4zXSksX1soaz1LKzE2''@;'; put 'put ''fDApPj4zXT0rX1trPj4zXSttLF9bKGs9Sys4fDApPj4zXT0rX1trPj4zXStBLF9bKGs9SysyNHwwKT4+M109K19baz4+M10rQSxwZSYmMD09KDQmYVtsKzE1Mj4+Ml18MCk/KGFbUj4+Ml09YVtLPj4yXSxhW1IrND4+Ml09YVtLKzQ+PjJdLGFbUis4Pj4yXT1hW0srOD4+Ml0sYVtSKzEyPj4y''@;'; put 'put ''XT1hW0srMTI+PjJdLGFbUisxNj4+Ml09YVtLKzE2Pj4yXSxhW1IrMjA+PjJdPWFbSysyMD4+Ml0sYVtSKzI0Pj4yXT1hW0srMjQ+PjJdLGFbUisyOD4+Ml09YVtLKzI4Pj4yXSxrPTB8SGIobCxmLGMsUixHKSk6az0wLHA9MHxUdFsoYj1jKzQyfDApPj4xXTtlOmRve2lmKCEoMzImcCkpc3dp''@;'; put 'put ''dGNoKHc9MHxhW2MrMjA+PjJdLDB8dyYmKHA9MHxhNihsLHcsMHxhW2MrMjg+PjJdLDY1NTM1JnAsRCksNCZUdFtiPj4xXT8oYj0wfGJ0W2MrMzM+PjBdLGFbUj4+Ml09YVtLPj4yXSxhW1IrND4+Ml09YVtLKzQ+PjJdLGFbUis4Pj4yXT1hW0srOD4+Ml0sYVtSKzEyPj4yXT1hW0srMTI+PjJd''@;'; put 'put ''LGFbUisxNj4+Ml09YVtLKzE2Pj4yXSxhW1IrMjA+PjJdPWFbSysyMD4+Ml0sYVtSKzI0Pj4yXT1hW0srMjQ+PjJdLGFbUisyOD4+Ml09YVtLKzI4Pj4yXSxZMyhsLDB8RGEoTSxSLGIpLDQsNCxwKSk6KGFbUj4+Ml09YVtLPj4yXSxhW1IrND4+Ml09YVtLKzQ+PjJdLGFbUis4Pj4yXT1hW0sr''@;'; put 'put ''OD4+Ml0sYVtSKzEyPj4yXT1hW0srMTI+PjJdLGFbUisxNj4+Ml09YVtLKzE2Pj4yXSxhW1IrMjA+PjJdPWFbSysyMD4+Ml0sYVtSKzI0Pj4yXT1hW0srMjQ+PjJdLGFbUisyOD4+Ml09YVtLKzI4Pj4yXSxiMyhsLFIscCkpLEh0KDB8YVtEPj4yXSkpLDB8dWVbYyszMz4+MF0mJihhW1I+PjJd''@;'; put 'put ''PWFbSz4+Ml0sYVtSKzQ+PjJdPWFbSys0Pj4yXSxhW1IrOD4+Ml09YVtLKzg+PjJdLGFbUisxMj4+Ml09YVtLKzEyPj4yXSxhW1IrMTY+PjJdPWFbSysxNj4+Ml0sYVtSKzIwPj4yXT1hW0srMjA+PjJdLGFbUisyND4+Ml09YVtLKzI0Pj4yXSxhW1IrMjg+PjJdPWFbSysyOD4+Ml0sRzgobCxj''@;'; put 'put ''LFIpKSxwPWMrODh8MCwwfHVlW2MrOTI+PjBdKXtjYXNlIDE6bzYobCwwfGFbcD4+Ml0sZik7YnJlYWsgZTtjYXNlIDM6bEIobCwwfGFbcD4+Ml0sZik7YnJlYWsgZTtkZWZhdWx0OlRFKGwsMHxhW3A+PjJdLGYpO2JyZWFrIGV9fXdoaWxlKDApOzB8ayYmVzkobCxHKSxwZSYmNCZhW2wrMTUy''@;'; put 'put ''Pj4yXXwwJiYoYVtSPj4yXT1hW0s+PjJdLGFbUis0Pj4yXT1hW0srND4+Ml0sYVtSKzg+PjJdPWFbSys4Pj4yXSxhW1IrMTI+PjJdPWFbSysxMj4+Ml0sYVtSKzE2Pj4yXT1hW0srMTY+PjJdLGFbUisyMD4+Ml09YVtLKzIwPj4yXSxhW1IrMjQ+PjJdPWFbSysyND4+Ml0sYVtSKzI4Pj4yXT1h''@;'; put 'put ''W0srMjg+PjJdLDB8SGIobCxmLGMsUixHKSkmJlc5KGwsRyksb2U9bWV9ZnVuY3Rpb24gYUIobCxjLGYscCxtKXtjfD0wLG18PTA7dmFyIGIsayxSLEcsSyxPZSxMZSxCZSxBPTAsdz0wLE09MCxEPTAscGU9MCxtZT0wLGJlPTAsSGU9MCxqZT0wO2lmKEJlPW9lLG9lPW9lKzMyfDAsT2U9QmUr''@;'; put 'put ''MTZ8MCxMZT1CZSxEPStfWyhmfD0wKT4+M10sYmU9K19bZis4Pj4zXSxvbChsfD0wLE09MD09KDB8KHB8PTApKT8xMzczMTQ6cCksZ2EobCxNKSxrPStfW2MrNzI+PjNdLFI9KEc9K19bYys0OD4+M10pK0QsRD0oSz0rX1tjKzY0Pj4zXSkrRCxiZT0oYj0rX1tjKzU2Pj4zXSkrYmUsMCE9KDEm''@;'; put 'put ''KGY9MHx1ZVsoTT1jKzEwMHwwKT4+MF0pKSYmKCgwfGFyW2MrODA+PjFdKSsoMHxhcltjKzg0Pj4xXSl8MCk8KDB8YVsxMDQrKHc9MHxhW2MrOTY+PjJdKT4+Ml0pKXtmPTB8VHRbYys4Nj4+MV07ZG97aWYoZjw8MTY+PjE2KXtpZigoKDB8YXJbYys4Mj4+MV0pKyg2NTUzNSZmKXwwKT09KDB8''@;'; put 'put ''YVt3KzEwMD4+Ml0pKXtmPXA9KChqZT0oKEhlPTB8dWVbdyszMj4+MF0pPDwyND4+MjQpLzJ8MCk8PDI0Pj4yNCkrKDB8YnRbdyszMz4+MF0pfDAscCY9MjU1LEE9YmUtKyhqZTw8MjQ+PjI0KSx3PUhlO2JyZWFrfWY9MCxwPSgoKHc9MHx1ZVt3KzMyPj4wXSk8PDI0Pj4yNCkvMnwwKTw8MjQ+''@;'; put 'put ''PjI0LEE9YmU7YnJlYWt9Zj0ocD0oKChqZT0wfHVlW3crMzI+PjBdKTw8MjQ+PjI0KS8yfDApPDwyND4+MjQpKygwfGJ0W3crMzM+PjBdKXwwLEE9YmUsdz1qZX13aGlsZSgwKTtfW0xlKzg+PjNdPUEtKygwfHApLF9bTGU+PjNdPUQrICsoKCh3PDwyND4+MjQpLzJ8MCk8PDI0Pj4yNCksYVtP''@;'; put 'put ''ZT4+Ml09YVtMZT4+Ml0sYVtPZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbT2UrOD4+Ml09YVtMZSs4Pj4yXSxhW09lKzEyPj4yXT1hW0xlKzEyPj4yXSxERShsLE9lLDAsay1iKyArKDI1NSZmfDApKyArKHc8PDI0Pj4yNCkpLGY9MHx1ZVtNPj4wXX1pZigyJmYmJigoMHxhcltjKzgyPj4xXSkrKDY1''@;'; put 'put ''NTM1JihwZT0wfFR0W2MrODY+PjFdKSl8MCk8KDB8YVsxMDArKG1lPTB8YVtjKzk2Pj4yXSk+PjJdKSl7Zj0wfFR0W2MrODQ+PjFdO2Rve2lmKGY8PDE2Pj4xNil7aWYoKCgwfGFyW2MrODA+PjFdKSsoNjU1MzUmZil8MCk9PSgwfGFbbWUrMTA0Pj4yXSkpe3A9KDI1NSYoamU9KChmPTB8dWVb''@;'; put 'put ''bWUrMzI+PjBdKTw8MjQ+PjI0KS8yfDApKSsoMHxidFttZSszMz4+MF0pJjI1NSxfW0xlPj4zXT1SLSsoamU8PDI0Pj4yNCk7YnJlYWt9X1tMZT4+M109Ui0oQT0rKCgoKGY9MHx1ZVttZSszMj4+MF0pPDwyND4+MjQpLzJ8MCk8PDI0Pj4yNCkpLHA9MCE9KDB8bSkmJigwfFR0W20rODY+PjFd''@;'; put 'put ''KSE9cGU8PDE2Pj4xNj8yNTUmfn4oK19bbWUrNjQ+PjNdLUstQSk6MH1lbHNle2lmKHA9MjU1Jih3PSgoamU9KChmPTB8dWVbbWUrMzI+PjBdKTw8MjQ+PjI0KS8yfDApPDwyND4+MjQpKygwfGJ0W21lKzMzPj4wXSl8MCksX1tMZT4+M109Ui0oQT0rKGplPDwyND4+MjQpKS0rKDB8KHcmPTI1''@;'; put 'put ''NSkpLCgwfGFbbWUrMTA0Pj4yXSk9PSgwfGFyW2MrODA+PjFdKSl7cD13PDwxJjI1NTticmVha30wIT0oMHxtKSYmKDB8VHRbbSs4Nj4+MV0pIT1wZTw8MTY+PjE2JiYocD0yNTUmfn4oKygyNTUmcCktSysgK19bbWUrNjQ+PjNdLUEpKX19d2hpbGUoMCk7X1tMZSs4Pj4zXT1iZS0rKCgoZjw8''@;'; put 'put ''MjQ+PjI0KS8yfDApPDwyND4+MjQpLGFbT2U+PjJdPWFbTGU+PjJdLGFbT2UrND4+Ml09YVtMZSs0Pj4yXSxhW09lKzg+PjJdPWFbTGUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtMZSsxMj4+Ml0sREUobCxPZSxLLUcrICsoMjU1JnApKyArKGY8PDI0Pj4yNCksMCl9b2U9QmV9ZnVuY3Rpb24gRzgo''@;'; put 'put ''bCxjLGYpe2Z8PTA7dmFyIE0scD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wO009b2Usb2U9b2UrMTYwfDAsaz1NKzExMnwwLGI9TSxtPU0rMTQ0fDAsZ2EobHw9MCwwPT0oMHwodz0wfGFbMjQrKGN8PTApPj4yXSkpPzEzNzMxNDp3KSwzODQmKHA9MHxUdFsodz1jKzQyfDApPj4xXSk/KGFb''@;'; put 'put ''bSs0Pj4yXT0wLGFbbT4+Ml09MCwyNTYmKHAmPTY1NTM1KT8ocD0xMzczMjcsQT00KToxMjgmcHwwJiYocD0xMzczMjAsQT00KSw0PT0oMHxBKSYmKGFbbT4+Ml09cCksR2MobCxtKSk6R2MobCwwfGFbMzM2KygwfGFbbD4+Ml0pPj4yXSksWWYobCwrKDB8YnRbKEE9YyszM3wwKT4+MF0pKTtl''@;'; put 'put ''OmRve2lmKDQmVHRbdz4+MV0pdz0wfGJ0W0E+PjBdLGFbaz4+Ml09YVtmPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+Ml09YVtmKzE2Pj4yXSxhW2srMjA+PjJdPWFbZisyMD4+Ml0sYVtrKzI0Pj4yXT1h''@;'; put 'put ''W2YrMjQ+PjJdLGFbaysyOD4+Ml09YVtmKzI4Pj4yXSxZMyhsLDB8RGEoYixrLHcpLDQsNCwwKTtlbHNle2lmKCEoKHA9MTUzNjAmVHRbYyszNj4+MV0pPDwxNj4+MTYpKXsoMjU1JihwPTB8dWVbQT4+MF0pKT4xJiYoX1tmPj4zXT0rX1tmPj4zXSsoRD0uNSorKDI1NSZwKSksX1soYj1mKzh8''@;'; put 'put ''MCk+PjNdPStfW2I+PjNdK0QsX1soYj1mKzE2fDApPj4zXT0rX1tiPj4zXS1ELF9bKGI9ZisyNHwwKT4+M109K19bYj4+M10tRCksYVtrPj4yXT1hW2Y+PjJdLGFbays0Pj4yXT1hW2YrND4+Ml0sYVtrKzg+PjJdPWFbZis4Pj4yXSxhW2srMTI+PjJdPWFbZisxMj4+Ml0sYVtrKzE2Pj4yXT1h''@;'; put 'put ''W2YrMTY+PjJdLGFbaysyMD4+Ml09YVtmKzIwPj4yXSxhW2srMjQ+PjJdPWFbZisyND4+Ml0sYVtrKzI4Pj4yXT1hW2YrMjg+PjJdLGIzKGwsaywwKTticmVha31zd2l0Y2gobT1iKzE2fDAsdz0wfGJ0W0E+PjBdLGFbaz4+Ml09YVtmPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4y''@;'; put 'put ''XT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+Ml09YVtmKzE2Pj4yXSxhW2srMjA+PjJdPWFbZisyMD4+Ml0sYVtrKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbaysyOD4+Ml09YVtmKzI4Pj4yXSxEYShtLGssdyksKCg2NTUzNSZwKS0xMDI0fDApPj4+MTAmNDE5NDMwM3ww''@;'; put 'put ''KXtjYXNlIDc6V28obCxtLDIpO2JyZWFrIGU7Y2FzZSAzOldvKGwsYiszMnwwLDIpO2JyZWFrIGU7Y2FzZSAxOldvKGwsYis0OHwwLDIpO2JyZWFrIGU7Y2FzZSAwOmFbYj4+Ml09YVsoZj1iKzY0fDApPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEy''@;'; put 'put ''Pj4yXT1hW2YrMTI+PjJdLFdvKGwsYiwyKTticmVhayBlO2Nhc2UgMTE6V28obCxtLDMpO2JyZWFrIGU7Y2FzZSA1OldvKGwsYiszMnwwLDMpO2JyZWFrIGU7Y2FzZSAyOmFbKGY9Yis4MHwwKT4+Ml09YVttPj4yXSxhW2YrND4+Ml09YVttKzQ+PjJdLGFbZis4Pj4yXT1hW20rOD4+Ml0sYVtm''@;'; put 'put ''KzEyPj4yXT1hW20rMTI+PjJdLFdvKGwsYis0OHwwLDMpO2JyZWFrIGU7Y2FzZSA4OmFbYj4+Ml09YVsoZj1iKzY0fDApPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLFdvKGwsYiwzKTticmVhayBlO2Nhc2UgMTM6V28o''@;'; put 'put ''bCxtLDQpO2JyZWFrIGU7Y2FzZSA2OmFbKGY9Yis4MHwwKT4+Ml09YVttPj4yXSxhW2YrND4+Ml09YVttKzQ+PjJdLGFbZis4Pj4yXT1hW20rOD4+Ml0sYVtmKzEyPj4yXT1hW20rMTI+PjJdLFdvKGwsYiszMnwwLDQpO2JyZWFrIGU7Y2FzZSAxMDphWyhmPWIrODB8MCk+PjJdPWFbbT4+Ml0s''@;'; put 'put ''YVtmKzQ+PjJdPWFbbSs0Pj4yXSxhW2YrOD4+Ml09YVttKzg+PjJdLGFbZisxMj4+Ml09YVttKzEyPj4yXSxhWyhmPWIrOTZ8MCk+PjJdPWFbKGs9YiszMnwwKT4+Ml0sYVtmKzQ+PjJdPWFbays0Pj4yXSxhW2YrOD4+Ml09YVtrKzg+PjJdLGFbZisxMj4+Ml09YVtrKzEyPj4yXSxXbyhsLGIr''@;'; put 'put ''NDh8MCw0KTticmVhayBlO2Nhc2UgMTI6YVtiPj4yXT1hWyhmPWIrNjR8MCk+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0sYVtiKzg+PjJdPWFbZis4Pj4yXSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0sV28obCxiLDQpO2JyZWFrIGU7Y2FzZSA5OldvKGwsbSwyKSxXbyhsLGIrNDh8MCwyKTticmVh''@;'; put 'put ''ayBlO2Nhc2UgNDphW2I+PjJdPWFbKGY9Yis2NHwwKT4+Ml0sYVtiKzQ+PjJdPWFbZis0Pj4yXSxhW2IrOD4+Ml09YVtmKzg+PjJdLGFbYisxMj4+Ml09YVtmKzEyPj4yXSxXbyhsLGIsMiksV28obCxiKzMyfDAsMik7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fX13aGlsZSgwKTtvZT1NfWZ1''@;'; put 'put ''bmN0aW9uIFc5KGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTA7MD09KDB8YVsoZj0yMDgrKG09MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSkmJjA9PSgxJlR0W20rMjYwPj4xXSk/bD0wOihraChsKSxsPTB8YVtmPj4yXSksKDB8bCkhPSgwfGFbYz4+Ml0pJiYoSHQobCksYVtmPj4yXT1hW2M+''@;'; put 'put ''PjJdKSwoMHwoZj0wfGFbKGw9bSsyMjh8MCk+PjJdKSkhPSgwfGFbKHA9Yys0fDApPj4yXSkmJihIdChmKSxhW2w+PjJdPWFbcD4+Ml0pLCgwfChmPTB8YVsobD1tKzI0NHwwKT4+Ml0pKSE9KDB8YVsocD1jKzh8MCk+PjJdKSYmKEh0KGYpLGFbbD4+Ml09YVtwPj4yXSksKDB8KGY9MHxhWyhs''@;'; put 'put ''PW0rMjEyfDApPj4yXSkpIT0oMHxhWyhwPWMrMTJ8MCk+PjJdKSYmKEh0KGYpLGFbbD4+Ml09YVtwPj4yXSksVHRbKG09bSsyNjB8MCk+PjFdPS0yJlR0W20+PjFdfDEmdWVbYysxNj4+MF19ZnVuY3Rpb24gWTkobCxjKXtsfD0wO3ZhciBmLHA9MDswfChwPTB8YVsoY3w9MCk+PjJdKSYmKGFb''@;'; put 'put ''bCsxNj4+Ml09cCksMHwocD0wfGFbYys0Pj4yXSkmJihhW2wrMjA+PjJdPXApLChmPStfW2MrMTY+PjNdKT49MCYmKF9bbCszMj4+M109Zil9ZnVuY3Rpb24gREUobCxjLGYscCl7dmFyIG0sQSx3O2x8PTAsZj0rZixwPStwLG09b2Usb2U9b2UrNjR8MCxBPW0rMzJ8MCxhWyh3PW0pPj4yXT1h''@;'; put 'put ''WyhjfD0wKT4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxfW3crMTY+PjNdPStfW2M+PjNdK2YsX1t3KzI0Pj4zXT0rX1tjKzg+PjNdK3AsYVtBPj4yXT1hW3c+PjJdLGFbQSs0Pj4yXT1hW3crND4+Ml0sYVtBKzg+PjJd''@;'; put 'put ''PWFbdys4Pj4yXSxhW0ErMTI+PjJdPWFbdysxMj4+Ml0sYVtBKzE2Pj4yXT1hW3crMTY+PjJdLGFbQSsyMD4+Ml09YVt3KzIwPj4yXSxhW0ErMjQ+PjJdPWFbdysyND4+Ml0sYVtBKzI4Pj4yXT1hW3crMjg+PjJdLGIzKGwsQSwxKSxvZT1tfWZ1bmN0aW9uIGxCKGwsYyxmKXtsfD0wO3ZhciBt''@;'; put 'put ''LEEsdyxNLHA9MCxiPTAsaz0wO2lmKEE9b2Usb2U9b2UrNjR8MCxNPShiPStfWyhmfD0wKT4+M10pKyArX1soY3w9MCk+PjNdLHc9KGs9K19bZis4Pj4zXSkrICtfW2MrOD4+M10says9K19bYysyND4+M10sX1sobT1BKT4+M109Yis9K19bYysxNj4+M10sX1ttKzg+PjNdPWssX1ttKzMyPj4z''@;'; put 'put ''XT1NLF9bbSs0MD4+M109dyxfW20rMTY+PjNdPU0sX1ttKzI0Pj4zXT1rLF9bbSs0OD4+M109YixfW20rNTY+PjNdPXcsKHA9MHxhW2MrMzY+PjJdKXx8KHA9MHxhW2YrNTY+PjJdKSwoZj0wfGFbYyszMj4+Ml0pfHxCcigxMzczMzQsMTM3MzQyLDYyMywxMzczNTQpLDB8dWVbZj4+MF0pcmV0''@;'; put 'put ''dXJuIGdFKGwsZixtLDQsMSxwKSx2b2lkKG9lPUEpO0JyKDEzNzM2OCwxMzczNDIsNjI0LDEzNzM1NCl9ZnVuY3Rpb24gVmIobCl7SHQoMHxhWyhsfD0wKT4+Ml0pLEh0KDB8YVtsKzQ+PjJdKSxIdCgwfGFbbCs4Pj4yXSksSHQoMHxhW2wrMTY+PjJdKSxIdCgwfGFbbCsxMj4+Ml0pLEh0KDB8''@;'; put 'put ''YVtsKzIwPj4yXSksSHQoMHxhW2wrMjQ+PjJdKX1mdW5jdGlvbiBzQihsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtpZigwfChsfD0wKSl7Zm9yKGI9bCs0fDAsZj0wLG09MHxhW2w+PjJdOyEoKDB8Zik+PSgwfFR0W2I+PjFdKSk7KXtmb3Ioaz1tKzR8MCxjPTAscD0w''@;'; put 'put ''fGFbbT4+Ml07ISgoMHxjKT49KDB8VHRbaz4+MV0pKTspSHQoMHxhW3A+PjJdKSwwfChBPTB8YVtwKzg+PjJdKSYmMHwodz0wfGFbcCsxMj4+Ml0pJiZub1sxMjcmd10oQSksYz1jKzF8MCxwPXArNTZ8MDtmPWYrMXwwLG09bSsyNHwwfTB8KGM9MHxhW2w+PjJdKSYmSHQoYyksSHQobCl9fWZ1''@;'; put 'put ''bmN0aW9uIExFKGwsYyl7c3dpdGNoKGN8PTAsMHx1ZVs0KyhsfD0wKT4+MF0pe2Nhc2UgMTohZnVuY3Rpb24ga0cobCl7dmFyIHAsYz0wLGY9MDtpZihwPTg0KyhsfD0wKXwwLC0xPT0oMHxhW2wrMTAwPj4yXSkpaXMoMHxhW3A+PjJdKTtlbHNle2ZvcihjPTB8YVtwPj4yXSxIdCgwfGFbbCs5''@;'; put 'put ''Mj4+Ml0pLEh0KDB8YVtsKzk2Pj4yXSk7Zj0wfGFbYz4+Ml07KXVCKGYpLGM9Yys0fDA7SHQoMHxhW3A+PjJdKX1WYihsKSxIdChsKX0oMHxhW2w+PjJdKTticmVhaztjYXNlIDM6IWZ1bmN0aW9uIGpiKGwpe0h0KDB8YVszMisobHw9MCk+PjJdKSxIdChsKX0oMHxhW2w+PjJdKTticmVhaztk''@;'; put 'put ''ZWZhdWx0OnNCKDB8YVtsPj4yXSl9MHxjJiZIdChsKX1mdW5jdGlvbiB1QihsKXtMRSg4OCsobHw9MCl8MCwwKSxWYihsKSxIdChsKX1mdW5jdGlvbiBTRyhsLGMsZil7Znw9MDt2YXIgcD0wO3JldHVybiAyIT0oMHx1ZVs0KyhsPTB8YVs3MisoMHxhWzEwNCsoMHxhWzE2KyhsfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdKT4+MF0pJiYwIT0oMHwocD0wfGNCKDB8YVtsPj4yXSxjfD0wKSkpPyhhW2Y+PjJdPWJ0W3ArMzU+PjBdLGw9cCs0OHwwKTpsPTAsMHxsfWZ1bmN0aW9uIGNCKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDswIT0oMHwoZj0wfGFbNCsobHw9MCk+PjJdKSkmJjA9PSgwfEEwKGYsYykp''@;'; put 'put ''fHwocD0zKTtlOmRve2lmKDM9PSgwfHApKWZvcihmPTB8YVtsKzg0Pj4yXTs7KXtpZighKGw9MHxhW2Y+PjJdKSl7bD0wO2JyZWFrIGV9aWYobD0wfGZCKGwsYykpYnJlYWs7Zj1mKzR8MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBmQihsLGMpe3ZhciBmO3JldHVybiBjfD0wLDAh''@;'; put 'put ''PSgwfChmPTB8YVs0KyhsfD0wKT4+Ml0pKSYmMD09KDB8QTAoZixjKSl8fChsPTE9PSgwfHVlW2wrOTI+PjBdKT8wfGNCKDB8YVtsKzg4Pj4yXSxjKTowKSwwfGx9ZnVuY3Rpb24gbDYobCl7dmFyIGMsZjtyZXR1cm4gZj1vZSxvZT1vZSsxNnwwLGM9ZiwobHw9MCk+Pj4wPDIxP2w9MHxhWzU1''@;'; put 'put ''ODQwKyhsPDwyKT4+Ml06KGFbYz4+Ml09bCxhbygxOTQ5NTksMTM3Mzk1LGMpLGw9MTk0OTU5KSxvZT1mLDB8bH1mdW5jdGlvbiBrMyhsLGMsZixwKXtwfD0wO3ZhciBtPTAsQT0wOyhtPTB8cmwobHw9MCxjfD0wLGZ8PTAsMCwwKSk/VHRbKEE9MTcwKygwfGFbbSsxNj4+Ml0pfDApPj4xXT0o''@;'; put 'put ''MHwoZj0wfGFyW0E+PjFdKSk+KDB8cCk/ZjpwOihmMChBPTB8cmwobCxjLGYsMCwxKSwxMzc0NjAsMTc2LDEpLFR0WzE3MCsoMHxhW0ErMTY+PjJdKT4+MV09cCxsPShtPTB8YVsxODArKGw9MHxhWyhjPWMrMTZ8MCk+PjJdKT4+Ml0pPzB8bDAobSw4KyhhW2wrMTg0Pj4yXTw8Mil8MCk6MHxR''@;'; put 'put ''big4KyhhW2wrMTg0Pj4yXTw8Mil8MCksYVsxODArKHA9MHxhW2M+PjJdKT4+Ml09bCxhWyhwPXArMTg0fDApPj4yXT0xKyhtPTB8YVtwPj4yXSksYVtsKyhtPDwyKT4+Ml09QSxhWygwfGFbMTgwKyhjPTB8YVtjPj4yXSk+PjJdKSsoYVtjKzE4ND4+Ml08PDIpPj4yXT0wLGw9KG09MHxhWzE3''@;'; put 'put ''MisobD0wfGFbKGM9ZisxNnwwKT4+Ml0pPj4yXSk/MHxsMChtLDgrKGFbbCsxNzY+PjJdPDwyKXwwKTowfFFuKDgrKGFbbCsxNzY+PjJdPDwyKXwwKSxhWzE3MisocD0wfGFbYz4+Ml0pPj4yXT1sLGFbKHA9cCsxNzZ8MCk+PjJdPTErKGY9MHxhW3A+PjJdKSxhW2wrKGY8PDIpPj4yXT1BLGFb''@;'; put 'put ''KDB8YVsxNzIrKEE9MHxhW2M+PjJdKT4+Ml0pKyhhW0ErMTc2Pj4yXTw8Mik+PjJdPTApfWZ1bmN0aW9uIFI0KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoYz0wfGFbMTkyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdO0E9MHxhWzE2NCsoMHxhWyhwPWMrMTZ8MCk+PjJdKT4+''@;'; put 'put ''Ml07KTB8cmwobCxjLEEsMCwwKXx8KGYwKG09MHxybChsLGMsQSwwLDEpLDEzNzQ2MCwxNzYsMSksVHRbMTcwKygwfGFbbSsxNj4+Ml0pPj4xXT0wLGM9KGY9MHxhWzE4MCsoYz0wfGFbcD4+Ml0pPj4yXSk/MHxsMChmLDgrKGFbYysxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFbYysxODQ+PjJd''@;'; put 'put ''PDwyKXwwKSxhWzE4MCsodz0wfGFbcD4+Ml0pPj4yXT1jLGFbKHc9dysxODR8MCk+PjJdPTErKGY9MHxhW3c+PjJdKSxhW2MrKGY8PDIpPj4yXT1tLGFbKDB8YVsxODArKHA9MHxhW3A+PjJdKT4+Ml0pKyhhW3ArMTg0Pj4yXTw8Mik+PjJdPTAsYz0oZj0wfGFbMTcyKyhjPTB8YVsocD1BKzE2''@;'; put 'put ''fDApPj4yXSk+PjJdKT8wfGwwKGYsOCsoYVtjKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVtjKzE3Nj4+Ml08PDIpfDApLGFbMTcyKyhmPTB8YVtwPj4yXSk+PjJdPWMsYVsoZj1mKzE3NnwwKT4+Ml09MSsodz0wfGFbZj4+Ml0pLGFbYysodzw8Mik+PjJdPW0sYVsoMHxhWzE3MisoYz0wfGFb''@;'; put 'put ''cD4+Ml0pPj4yXSkrKGFbYysxNzY+PjJdPDwyKT4+Ml09MCksYz1BfWZ1bmN0aW9uIE9FKGwsYyl7Y3w9MDt2YXIgcCxtLHcsYixELFIsZj0wLEE9MCxrPTAsTT0wLEc9MCxLPTA7c3dpdGNoKFI9b2Usb2U9b2UrMjcyfDAsTT1SKzEwNHwwLEQ9UisxMzZ8MCx3PVIrNzJ8MCxtPVIrMTQ0fDAs''@;'; put 'put ''YVsoYj1SKSs0OD4+Ml09bHw9MCwwfE1pKGwpKXtjYXNlIDA6Zj0wfGFbbCs2MD4+Ml07YnJlYWs7Y2FzZSAxOmY9MHxmcihsKTticmVhaztjYXNlIDI6Zj0wfGZyKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSl9cmV0dXJuIGFbKEE9Yis1MnwwKT4+Ml09ZixrPTB8''@;'; put 'put ''YVtmKzYwPj4yXSxfW2IrMzI+PjNdPStfW2MrMTY+PjNdLGFbYisxNj4+Ml09YVtjKzQ+PjJdLGFbYisyMD4+Ml09YVtjKzg+PjJdLGFbYis0MD4+Ml09MCxwPTB8ZnVuY3Rpb24gc3QobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwLG0sQTtyZXR1cm4gbT1vZSxvZT1vZSsxNjB8MCxwPW0r''@;'; put 'put ''OHwwLGFbKEE9bSk+PjJdPTAsYVtBKzQ+PjJdPTAsYVs0NzQwM109QSxhWzQ3NDAyXT0wLGFbNDc0MDBdPTAsYVs0NzQwNF09YVsxNDQrKDB8YVsxNisoMHxhW2YrNTI+PjJdKT4+Ml0pPj4yXSxhWzQ3NDA1XT0wfEFzKDU2MTA0LDB8YVs0NTgwXSksYVs0NzQwNl09MHxBcyg1NjE0MCwwfGFb''@;'; put 'put ''NDU4MF0pLG9zKHAsMTI4LG0rMjR8MCksYVs0NzQwMV09cCwwfGZ1bmN0aW9uIFJCKGwsYyxmKXtyZXR1cm4gbHw9MCxmfD0wLGFbNDc0MTBdPWN8PTAsb3MoMTg5NjQ0LDEyOCwwKSxhWzQ3NDA4XT1sLHVlWzE4OTY2M109MCx1ZVsxODk2NjBdPTAsdWVbMTg5NjYxXT0wLGFbNDc0MThdPTAs''@;'; put 'put ''YVs0NzQxOV09MCx1ZVsxODk2NjJdPTEsYz0wfGZ1bmN0aW9uIE5HKGwpe3JldHVybiAwfGZ1bmN0aW9uIG9QKGwsYyxmKXtyZXR1cm4gMHxmdW5jdGlvbiB3eChsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wOyhjfD0wKT8obT0wfHBhWzYzJmFbYz4+Ml1dKDQ5''@;'; put 'put ''NikpPyhhW20rMTI+PjJdPUE9MHxhW2M+PjJdLGFbbSsxNj4+Ml09YVtjKzQ+PjJdLGFbbSsyMD4+Ml09YVtjKzg+PjJdLGM9QSxBPTYpOm09MDoobT0wfFIwKDQ5NikpPyhhW20rMTI+PjJdPTM1LGFbbSsxNj4+Ml09MTA3LGFbbSsyMD4+Ml09MTA1LGM9MzUsQT02KTptPTA7ZG97aWYoNj09''@;'; put 'put ''KDB8QSkpe2lmKGFbbSs4Pj4yXT0wLGFbbSszMj4+Ml09MCxhW20rMzc2Pj4yXT0xNixiPW0rMTJ8MCx3PTB8cGFbNjMmY10oMjU2KSxhWyhjPW0rMzg4fDApPj4yXT13LCF3KXtub1sxMjcmYVttKzIwPj4yXV0obSksbT0wO2JyZWFrfWlmKEE9MHxwYVs2MyZhW2I+PjJdXSgxMDI0KSxhWyh3''@;'; put 'put ''PW0rNDR8MCk+PjJdPUEsIUEpe25vWzEyNyZhWyhmPW0rMjB8MCk+PjJdXSgwfGFbYz4+Ml0pLG5vWzEyNyZhW2Y+PjJdXShtKSxtPTA7YnJlYWt9aWYoYVttKzQ4Pj4yXT1BKzEwMjQscClhW20rMzUyPj4yXT1wO2Vsc2UgaWYocD0wfGFQKGIpLGFbbSszNTI+PjJdPXAsIXApe25vWzEyNyZh''@;'; put 'put ''WyhmPW0rMjB8MCk+PjJdXSgwfGFbdz4+Ml0pLG5vWzEyNyZhW2Y+PjJdXSgwfGFbYz4+Ml0pLG5vWzEyNyZhW2Y+PjJdXShtKSxtPTA7YnJlYWt9aWYoYVttKzM3Mj4+Ml09MCxhW20rMzY0Pj4yXT0wLGFbbSszMDA+PjJdPTAsYVttKzQ2ND4+Ml09MCxhW20rNDYwPj4yXT0wLGFbbSsxMjQ+''@;'; put 'put ''PjJdPTAsYVttKzI0ND4+Ml09MCx1ZVsoYz1tKzQ2OHwwKT4+MF09MzMsdWVbKEE9bSsyMzJ8MCk+PjBdPTAsdWVbbSsyMzM+PjBdPTAsYVttKzM5Mj4+Ml09MCxhW20rMzk2Pj4yXT0wLHVlW20rNDAwPj4wXT0wLGFbKHA9bSsyMjh8MCk+PjJdPTAsR20obSs0MTJ8MCxiKSxHbShtKzQzNnww''@;'; put 'put ''LGIpLE1fKG0sbCksMHxsJiYwPT0oMHxhW3A+PjJdKSl7RV8obSksbT0wO2JyZWFrfWlmKGYpe3VlW0E+PjBdPTEsYVttKzIyND4+Ml09NjAwOTIsdWVbYz4+MF09MHx1ZVtmPj4wXTticmVha31hW20rMjI0Pj4yXT01ODIyMDticmVha319d2hpbGUoMCk7cmV0dXJuIDB8bX0obHw9MCxjfD0w''@;'; put 'put ''LGZ8PTAsMCl9KGx8PTAsMCwwKX0oMHxmdW5jdGlvbiBZb2UobCl7dmFyIGMsZjtzd2l0Y2goZj1vZSxvZT1vZSsxNnwwLGM9ZiwwfChsfD0wKSl7Y2FzZSAwOmw9MTAxOTcxO2JyZWFrO2Nhc2UgMTpsPTEwMTgzOTticmVhaztjYXNlIDI6bD0xMDE5Nzc7YnJlYWs7ZGVmYXVsdDphW2M+PjJd''@;'; put 'put ''PWwsWHIoMSwxMDE5NDEsYyksbD0xMDE5NzF9cmV0dXJuIG9lPWYsMHxsfSgwfGJ0WzExNSsoMHxhWzE2KygwfGFbKGY9Zis1MnwwKT4+Ml0pPj4yXSk+PjBdKSksYVs0NzQwN109YyxmdW5jdGlvbiBUeChsLGMpe2N8PTA7dmFyIGY9MCxwPTA7MHwobHw9MCkmJihwPSgwfGFbKGY9bCs0fDAp''@;'; put 'put ''Pj4yXSk9PSgwfGFbbD4+Ml0pLGFbbD4+Ml09YyxwKSYmKGFbZj4+Ml09Yyl9KGMsMHxhWzE0NCsoMHxhWzE2KygwfGFbZj4+Ml0pPj4yXSk+PjJdKSxmdW5jdGlvbiBSbyhsLGMsZil7Znw9MCwwfChsfD0wKSYmKGFbbCs1Mj4+Ml09Y3w9MCxhW2wrNTY+PjJdPWYpfSgwfGFbNDc0MDddLDcw''@;'; put 'put ''LDI3KSxmdW5jdGlvbiBwUChsLGMpezB8KGx8PTApJiYoYVtsKzYwPj4yXT1jfD0wKX0oMHxhWzQ3NDA3XSw3MSksMH0obCxwLGYpPyhhW2M+PjJdPTIsbD0wKTooZnVuY3Rpb24gc18oKXt2YXIgRyxwZSxsPTAsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxL''@;'; put 'put ''PTA7cGU9b2Usb2U9b2UrMTIwMHwwLEc9cGUrODAwfDAsZj1wZSxhWzQ3Mzk3XT0wLGFbNDczOThdPS0yLGM9RyxtPTIwMCxrPWYsRD0wLFI9MCxNPUc7ZTpmb3IoOzspe2lmKFR0W00+PjFdPUQsKGMrKG08PDEpKy0yfDApPj4+MD5NPj4+MCl3PW07ZWxzZXtpZihsPTErKGI9TS1jPj4xKXww''@;'; put 'put ''LG0+Pj4wPjk5OTkpe0s9OTU7YnJlYWt9c3dpdGNoKChwPTB8UjAoNioodz0odz1tPDwxKT4+PjA8MWU0P3c6MWU0KXwzKSk/KERvKDB8cCwwfGMsbDw8MXwwKSxEbygwfChtPXArKHc+Pj4xPDwyKXwwKSwwfGssbDw8MnwwKSwoMHxjKT09KDB8Ryk/KGw9MCxjPXApOihIdChjKSxsPTAsYz1w''@;'; put 'put ''KSk6KGw9NCxtPWspLHA9YysoYjw8MSl8MCwxNSYoKEE9MD09KDB8bCkpPyhjKyh3PDwxKSstMnwwKT4+PjA+cD4+PjA/MDo5OmwpKXtjYXNlIDk6bD0xLEs9OTY7YnJlYWsgZTtjYXNlIDQ6Sz05NTticmVhayBlO2Nhc2UgMDpmPUE/bSsoYjw8Mil8MDpmLGs9bSxNPUE/cDpNO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6bD0wO2JyZWFrIGV9fWlmKDMxPT0oMHxEKSl7bD0wLEs9OTY7YnJlYWt9QT0obD0wfFR0WzY1NTM0KyhEPDwxKT4+MV0pPDwxNj4+MTY7ZG97aWYobDw8MTY+PjE2IT0tODIpe2lmKC0yPT0oMHwocD0wfGFbNDczOThdKSkmJihwPTB8VGgoKSxhWzQ3Mzk4XT1wKSwoMHxwKT49MT9t''@;'; put 'put ''PXA+Pj4wPDI5Nj8wfGJ0WzEzOTMyMStwPj4wXToyOihhWzQ3Mzk4XT0wLG09MCksKHA9bStBfDApPj4+MDw9MjcxJiYoMHxtKT09KDB8dWVbMTM5NjE3K3A+PjBdKSl7aWYobD0oRD0wfHVlWzEzOTg4OStwPj4wXSk8PDI0Pj4yNCxEPDwyND4+MjQ8MSl7cD0wLWx8MCxLPTIzO2JyZWFrfWFb''@;'; put 'put ''NDczOThdPS0yLGFbKGY9Zis0fDApPj4yXT1hWzQ3Mzk5XSxBPTA9PSgwfFIpPzA6UistMXwwLHA9TTticmVha31LPTIyfWVsc2UgSz0yMn13aGlsZSgwKTtpZigyMj09KDB8SykpaWYoSz0wLHA9MjU1JihEPTB8dWVbMTQwMTYxK0Q+PjBdKSxEPDwyND4+MjQpSz0yMztlbHNle3A9MHxhWzQ3''@;'; put 'put ''Mzk4XTt0OmRve3N3aXRjaCgwfFIpe2Nhc2UgMDphWzQ3Mzk3XT0xKygwfGFbNDczOTddKSxPbSgxNDM3NjEpLHA9TTticmVhaztjYXNlIDM6aWYoKDB8cCk8MSl7aWYocCl7cD1NO2JyZWFrIHR9bD0xLEs9OTY7YnJlYWsgZX1hWzQ3Mzk4XT0tMixwPU07YnJlYWsgdDtkZWZhdWx0OnA9TX19''@;'; put 'put ''d2hpbGUoMCk7Zm9yKDtsPDwxNj4+MTYhPTg7KXtpZigoMHxwKT09KDB8Yykpe2w9MSxLPTk2O2JyZWFrIGV9Zj1mKy00fDAscD1sPXArLTJ8MCxsPTB8VHRbNjU1MzQrKFR0W2w+PjFdPDwxKT4+MV19YVsoZj1mKzR8MCk+PjJdPWFbNDczOTldLGw9MSxBPTN9ZG97aWYoMjM9PSgwfEspKXtz''@;'; put 'put ''d2l0Y2goSz0wLGw9MHxhW2YrKDEtKEE9MHxidFsxNDAyNzcrcD4+MF0pPDwyKT4+Ml0sMHxwKXtjYXNlIDQ6Sz0yNjticmVhayBlO2Nhc2UgMjphWzQ3NDAwXT0wfHVfKDB8YVtmKy00Pj4yXSwyKTticmVhaztjYXNlIDM6YVs0NzQwMF09MHx1XygwfGFbZistND4+Ml0sMSk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSA1Omw9MHxEbSgpO2JyZWFrO2Nhc2UgODpjXygwfGFbNDc0MDFdKTticmVhaztjYXNlIDk6ZUEoMHxhW2Y+PjJdKTticmVhaztjYXNlIDE4OmNhc2UgMjA6Y2FzZSAyMjpjYXNlIDI0OmNhc2UgMjY6Y2FzZSAyODpjYXNlIDMwOmNhc2UgMzI6SDQoMHxhW2Y+PjJdKTticmVhaztjYXNlIDE5''@;'; put 'put ''OmNhc2UgMjE6Y2FzZSAyMzpjYXNlIDI1OmNhc2UgMjc6Y2FzZSAyOTpjYXNlIDMxOmNhc2UgMzM6TjQoKTticmVhaztjYXNlIDM0OmNhc2UgNDE6Y2FzZSA0MjpjYXNlIDQzOmNhc2UgNDQ6Y2FzZSA0NTpjYXNlIDY0Omw9MHxhW2YrLTQ+PjJdO2JyZWFrO2Nhc2UgMzU6Y2FzZSA0MDpjYXNl''@;'; put 'put ''IDQ4OmNhc2UgNDk6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNjU6bD0wfGFbZj4+Ml07YnJlYWs7Y2FzZSAzODppZigobT0wfGFbNCsobD0wfGFbNDc0MDFdKT4+Ml0pPj4+MD49KDB8YVtsKzg+PjJdKT4+PjAmJihHMChsLDEpLGw9bT0wfGFbNDc0MDFdLG09MHxhW20rND4+Ml0pLHVlW20+PjBd''@;'; put 'put ''PTAsYVtsKzQ+PjJdPUQ9MHxhW2w+PjJdLDB8QWYoRCkpe0s9NTE7YnJlYWsgZX1hWzgwKygwfGFbZj4+Ml0pPj4yXT1hWzQ3NDAyXSxsPTB8QXMoNTYwMzIsMHxhWzQ1ODBdKSxhWzg0KygwfGFbZj4+Ml0pPj4yXT1sLGFbNDc0MDJdPWFbZj4+Ml0sYVsxMDgrKDB8YVtmPj4yXSk+PjJdPWFb''@;'; put 'put ''YVs0NzQwM10+PjJdLGw9MHxhW2Y+PjJdO2JyZWFrO2Nhc2UgMzk6aWYoKG09MHxhWzQrKGw9MHxhWzQ3NDAxXSk+PjJdKT4+PjA+PSgwfGFbbCs4Pj4yXSk+Pj4wJiYoRzAobCwxKSxsPW09MHxhWzQ3NDAxXSxtPTB8YVttKzQ+PjJdKSx1ZVttPj4wXT0wLGFbbCs0Pj4yXT1EPTB8YVtsPj4y''@;'; put 'put ''XSwwfEFmKEQpKXtLPTU2O2JyZWFrIGV9YVs0NzQwMl09YVs4MCsobD0wfGFbNDc0MDJdKT4+Ml07YnJlYWs7Y2FzZSA1MDp1ZVsxMisoMHxhW2YrLTg+PjJdKT4+MF09MSxsPTB8YVtmPj4yXTticmVhaztjYXNlIDUxOmIxKCk7YnJlYWs7Y2FzZSA1MjpsPTB8a2QoKTticmVhaztjYXNlIDU1''@;'; put 'put ''OnVlWyhsPTEwMCsoMHxhW2YrLTg+PjJdKXwwKT4+MF09MXx1ZVtsPj4wXSxsPTB8YVtmPj4yXTticmVhaztjYXNlIDU2OkxtKDB8YVtmKy00Pj4yXSwwfGFbZj4+Ml0sMSk7YnJlYWs7Y2FzZSA1NzpjYXNlIDU5OmNhc2UgNjE6bD0wfGFbZistMTI+PjJdO2JyZWFrO2Nhc2UgNTg6TG0oMHxh''@;'; put 'put ''W2YrLTQ+PjJdLDB8YVtmPj4yXSwyKTticmVhaztjYXNlIDYwOkxtKDB8YVtmKy00Pj4yXSwwfGFbZj4+Ml0sMyk7YnJlYWs7Y2FzZSA2MjpMbSgwfGFbZj4+Ml0sMHxEbSgpLDIpO2JyZWFrO2Nhc2UgNjM6bD0wfGFbZistOD4+Ml19aWYoRD1mKygobT0wLUF8MCk8PDIpfDAsbT1NKyhtPDwx''@;'; put 'put ''KXwwLGY9RCs0fDAsYVtEKzQ+PjJdPWwsKHA9KEQ9MHxUdFttPj4xXSkrKDB8VHRbNjU3NjYrKChsPSgwfGJ0WzE0MDQ0OStwPj4wXSktNDF8MCk8PDEpPj4xXSl8MCk+Pj4wPDI3MiYmKDB8dWVbMTM5NjE3K3A+PjBdKT09KDB8RCkpe2w9MHx1ZVsxMzk4ODkrcD4+MF0sQT1SLHA9bTticmVh''@;'; put 'put ''a31sPTB8dWVbMTQwNTE5K2w+PjBdLEE9UixwPW19fXdoaWxlKDApO209dyxEPWwsUj1BLE09cCsyfDB9MjY9PSgwfEspPyhtNigpLGw9MSxLPTk2KTo1MT09KDB8Syk/KE9tKDE0MDM0NyksbTYoKSxsPTEsSz05Nik6NTY9PSgwfEspPyhPbSgxNDAzOTgpLG02KCksbD0xLEs9OTYpOjk1PT0o''@;'; put 'put ''MHxLKSYmKE9tKDE0MDU1OCksbD0yLEs9OTYpLDk2PT0oMHxLKSYmKDB8YykhPSgwfEcpJiZIdChjKSxvZT1wZX0oKSxhW2M+PjJdPTB8ZnVuY3Rpb24gckEoKXt2YXIgbDtyZXR1cm4gbD0odWVbMTg5NjYxXXx1ZVsxODk2NjBdKTw8MjQ+PjI0LEVfKDB8YVs0NzQwN10pLGsyKDE4OTY0NCks''@;'; put 'put ''MHxsfSgpLGw9MHxhWzQ3NDAwXSksaXMoMHxhWzQ3NDA1XSksaXMoMHxhWzQ3NDA2XSksYVs0NzQwNV09MCxhWzQ3NDA2XT0wLGFbNDc0MDNdPTAsazIocCksb2U9bSwwfGx9KDB8YVtjPj4yXSxELGIpLHA/KDE9PSgwfHVlWyhmPXArNHwwKT4+MF0pPygwPT0oMHxhWzI0KygwfGFbcD4+Ml0p''@;'; put 'put ''Pj4yXSkmJjB8X20obCkmJihBPTB8bmEoMHxfbShsKSksYVsyNCsoMHxhW3A+PjJdKT4+Ml09QSksaz0wfHpiKGssMHxhW3A+PjJdLDAsYiksYVtEPj4yXT1hW0Q+PjJdfGssUkUodywtKEs9LjUqK19bNjQrKGs9MHxhW3A+PjJdKT4+M10pLC0oRz0uNSorX1trKzcyPj4zXSksSyxHKSxrPTB8''@;'; put 'put ''YVtwPj4yXSxhW00+PjJdPWFbdz4+Ml0sYVtNKzQ+PjJdPWFbdys0Pj4yXSxhW00rOD4+Ml09YVt3Kzg+PjJdLGFbTSsxMj4+Ml09YVt3KzEyPj4yXSxhW00rMTY+PjJdPWFbdysxNj4+Ml0sYVtNKzIwPj4yXT1hW3crMjA+PjJdLGFbTSsyND4+Ml09YVt3KzI0Pj4yXSxhW00rMjg+PjJdPWFb''@;'; put 'put ''dysyOD4+Ml0sQkUoayxNLDE1KSk6KFBFKDB8YVsxNDQrKDB8YVtrKzE2Pj4yXSk+PjJdLDB8YVtwPj4yXSxiKSxSRSh3LC0oRz0uNSorX1syNCsoTT0wfGFbcD4+Ml0pPj4zXSksLShLPS41KitfW00rMzI+PjNdKSxHLEspLGFbKE09OCsoMHxhW3A+PjJdKXwwKT4+Ml09YVt3Pj4yXSxhW00r''@;'; put 'put ''ND4+Ml09YVt3KzQ+PjJdLGFbTSs4Pj4yXT1hW3crOD4+Ml0sYVtNKzEyPj4yXT1hW3crMTI+PjJdLGFbTSsxNj4+Ml09YVt3KzE2Pj4yXSxhW00rMjA+PjJdPWFbdysyMD4+Ml0sYVtNKzI0Pj4yXT1hW3crMjQ+PjJdLGFbTSsyOD4+Ml09YVt3KzI4Pj4yXSksX1tjKzI0Pj4zXT0rX1t3KzE2''@;'; put 'put ''Pj4zXS0rX1t3Pj4zXSxfW2MrMzI+PjNdPStfW3crMjQ+PjNdLStfW3crOD4+M10sYVtjKzcyPj4yXT1wLDE9PSgwfHVlW2Y+PjBdKSYmKEh0KDB8YVtjPj4yXSksYVtjPj4yXT0wfG5hKDE0MTYxMSkpLGY9MHxhW0Q+PjJdKToob3MoTSwxMjgsbSksdWVbYys4Mj4+MF09MCxmPTB8bmEoMHxm''@;'; put 'put ''dW5jdGlvbiBoQihsLGMpe2x8PTAsY3w9MDt2YXIgZj0wO2U6ZG97c3dpdGNoKDB8TWkobCkpe2Nhc2UgMDpjYXNlIDE6Y28oYywwfCRyKGwpKTticmVhaztjYXNlIDI6aWYoY28oYywwfCRyKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSksZj1sKy00OHwwLGNvKGMs''@;'; put 'put ''MHwkcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpmKSs0MD4+Ml0pKSwwfGxjKDB8ZnIoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6ZikrNDA+PjJdKSkpe2NvKGMsMTM3NzM4KTticmVhayBlfWNvKGMsMTQxNzQ3KTticmVhayBlfX13aGlsZSgwKTtyZXR1cm4obD0wfGFbKGY9Yys0fDApPj4y''@;'; put 'put ''XSk+Pj4wPj0oMHxhW2MrOD4+Ml0pPj4+MCYmKEcwKGMsMSksbD0wfGFbZj4+Ml0pLHVlW2w+PjBdPTAsYVtmPj4yXT1jPTB8YVtjPj4yXSwwfGN9KGwsTSkpLGFbYz4+Ml09ZixmPTE9PSgwfGFbYysxMj4+Ml0pPzB8U2soZik6MHwkNihmLDB8YVtBPj4yXSksSHQoMHxhW2M+PjJdKSxhW2M+''@;'; put 'put ''PjJdPWYsQU4oMHxhWzE0NCsoMHxhW2srMTY+PjJdKT4+Ml0sYyksazIoTSksZj0wfGFbRD4+Ml0pLG9lPVIsMHxmfWZ1bmN0aW9uIF9tKGwpe3ZhciBjPTAsZj0wOzAhPSgwfChjPTB8TGkobHw9MCwxMzc3MjkpKSkmJjAhPSgwfHVlW2M+PjBdKXx8KGY9Myk7ZG97aWYoMz09KDB8Zikpe2lm''@;'; put 'put ''KDB8KGM9MHxMaShsLDE0MDgyMykpJiYwfHVlW2M+PjBdKWJyZWFrO2M9MH19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiB6YihsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgYixNLEcscGUsbWUsbT0wLEE9MCx3PTAsaz0wLEQ9MCxSPTAsSz0wO2ZvcihtZT1vZSxvZT1vZSsxNnww''@;'; put 'put ''LEs9bWUrOHwwLEc9bWUsMHwobT0wfGFbKHBlPTEwOCsoY3w9MCl8MCk+PjJdKSYmSUUocCxtLDE4NjU3NiksYVtjKzgwPj4yXT1mLG09MHxmdW5jdGlvbiBnQihsLGMsZil7bHw9MCxmfD0wO3ZhciBtZSxiZSxPZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0w''@;'; put 'put ''LHBlPTA7Zm9yKG1lPTB8YVsoYj04NCsoY3w9MCl8MCk+PjJdLGJlPTB8UnkoKSxPZT0wfEhFKCksbT0wLHA9MCx3PTB8bzAobWUpO3c7KXtmb3IoQT0wfG8wKDB8YVt3Kzg+PjJdKTtBOylBPTB8YVtBPj4yXSxtPW0rMXwwO3A9cCsxfDAsMHx1ZVt3KzEyPj4wXSYmWWIoT2UscCksdz0wfGFb''@;'; put 'put ''dz4+Ml19Zm9yKHA9MHxtcig0KyhtPDwyKXwwKSxhW2I+PjJdPXAsbT0wLEE9MCx3PTAsRz0wLEs9MHxvMChtZSk7Szspe2ZvcihwZT02NTUzNSZHLFI9MCxEPTB8bzAoMHxhW0srOD4+Ml0pO0Q7KWFbcD4+Ml09TT0wfGFbRCs4Pj4yXSx3PTB8bUIobCxNLGMsZil8dyxiPTB8RkUoYmUsRyxS''@;'; put 'put ''LE0pLFR0W00rODY+PjFdPXBlLFR0W00rODQ+PjFdPWIsYj1iKygwfGFyW00rODA+PjFdKXwwLDB8dGMoT2Usaz1HKygwfGFyW00rODI+PjFdKXwwKSYmKHVlWyhSPU0rMTAwfDApPj4wXT0yfHVlW1I+PjBdKSxSPWIscD1wKzR8MCxEPTB8YVtEPj4yXSxtPSgwfGIpPigwfG0pP2I6bSxBPSgw''@;'; put 'put ''fGspPigwfEEpP2s6QTtHPUcrMXwwLEs9MHxhW0s+PjJdfXJldHVybiBhW2MrMTAwPj4yXT1BLGFbYysxMDQ+PjJdPW0saXMobWUpLGlzKE9lKSxCeShiZSksMHx3fShsLGMscCksMTI4JihsPTB8VHRbKEQ9YyszNnwwKT4+MV0pfHwodWVbYyszMj4+MF09MiksZj1jKzMzfDAsMzImbHx8KHVl''@;'; put 'put ''W2Y+PjBdPTEpLGZ1bmN0aW9uIFpiKGwpe2x8PTA7dmFyIGMsZixBLHA9MCxtPTA7QT1vZSxvZT1vZSsxNnwwLG09QSs0fDAsYVsoYz1BKT4+Ml09YVs0NjQ3XSwxIT0oMHwoZj0wfGFbbCsxMDA+PjJdKSkmJjEhPSgwfGFbKHA9bCsxMDR8MCk+PjJdKT8oYVtsKzkyPj4yXT0wfG1yKDQrKGY8''@;'; put 'put ''PDIpfDApLGFbbCs5Nj4+Ml09MHxtcig0KyhhW3A+PjJdPDwyKXwwKSx1ZVttPj4wXT0wfHVlW2M+PjBdLHVlW20rMT4+MF09MHx1ZVtjKzE+PjBdLHVlW20rMj4+MF09MHx1ZVtjKzI+PjBdLHVlW20rMz4+MF09MHx1ZVtjKzM+PjBdLHA9MHxFYygxMzc0NzMsbSwwKSx1ZVttPj4wXT0wfHVl''@;'; put 'put ''W2M+PjBdLHVlW20rMT4+MF09MHx1ZVtjKzE+PjBdLHVlW20rMj4+MF09MHx1ZVtjKzI+PjBdLHVlW20rMz4+MF09MHx1ZVtjKzM+PjBdLG09MHxFYygxMzc0NzgsbSwwKSxmMChwLDEzNzQ4MywyODAsMSksZjAobSwxMzc0ODMsMjgwLDEpLGZ1bmN0aW9uIFU5KGwsYyxmKXtjfD0wO3ZhciBi''@;'; put 'put ''LGsscD0wLG09MCxBPTAsdz0wLE09MCxEPTAsUj0wO2ZvcihiPTEwNCsobHw9MCl8MCxrPWwrMTAwfDAsdz0xNisoZnw9MCl8MCxwPTAsbT0wOyEoKDB8cCk+KDB8YVtiPj4yXSkpOylmMChBPTB8TXIoZiwwfGw2KHApLDEpLDEzNzQ0NywzMDQsMSksYVsxNzYrKDB8YVsoTT1BKzE2fDApPj4y''@;'; put 'put ''XSk+PjJdPTAsUj0wfG1yKDQrKGFbaz4+Ml08PDIpfDApLGFbMTcyKyhEPTB8YVtNPj4yXSk+PjJdPVIsYVtEKzE4ND4+Ml09MCxEPTB8bXIoNCsoYVtrPj4yXTw8Mil8MCksYVsxODArKDB8YVtNPj4yXSk+PjJdPUQsbT9hWzE2NCsoMHxhW20rMTY+PjJdKT4+Ml09QTphWzE5MisoMHxhW3c+''@;'; put 'put ''PjJdKT4+Ml09QSxwPXArMXwwLG09QTtmb3Iodz1jKzE2fDAscD0wLG09MDshKCgwfHApPigwfGFbaz4+Ml0pKTspZjAoQT0wfE1yKGMsMHxsNihwKSwxKSwxMzc0NDcsMzA0LDEpLGFbMTc2KygwfGFbKFI9QSsxNnwwKT4+Ml0pPj4yXT0wLE09MHxtcig0KyhhW2I+PjJdPDwyKXwwKSxhWzE3''@;'; put 'put ''MisoRD0wfGFbUj4+Ml0pPj4yXT1NLGFbRCsxODQ+PjJdPTAsRD0wfG1yKDQrKGFbYj4+Ml08PDIpfDApLGFbMTgwKygwfGFbUj4+Ml0pPj4yXT1ELG0/YVsxNjQrKDB8YVttKzE2Pj4yXSk+PjJdPUE6YVsxOTIrKDB8YVt3Pj4yXSk+PjJdPUEscD1wKzF8MCxtPUE7Zm9yKHA9MHxhW2wrODQ+''@;'; put 'put ''PjJdO209MHxhW3A+PjJdOylrMyhmLEQ9MHxNcihmLDB8bDYoMHxhclsoUj1tKzg0fDApPj4xXSksMCksUj0wfE1yKGYsMHxsNigoMHxhclttKzgwPj4xXSkrKDB8YXJbUj4+MV0pfDApLDApLH5+K19bbSs2ND4+M10pLGszKGMsRD0wfE1yKGMsMHxsNigwfGFyWyhSPW0rODZ8MCk+PjFdKSww''@;'; put 'put ''KSxSPTB8TXIoYywwfGw2KCgwfGFyW20rODI+PjFdKSsoMHxhcltSPj4xXSl8MCksMCksfn4rX1ttKzcyPj4zXSkscD1wKzR8MDtSNChmKSxSNChjKX0obCxwLG0pLFA3KHAsMiwyMTQ3NDgzNjQ3KSxQNyhtLDIsMjE0NzQ4MzY0NyksZnVuY3Rpb24gYm0obCxjLGYpe2Z8PTA7dmFyIEEscD0w''@;'; put 'put ''LG09MCx3PTA7Zm9yKEE9OTIrKGx8PTApfDAscD0wLG09MCxjPTB8YVsxNisoMHxhWzE5MisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjJdO2M9MHxhW2MrMTY0Pj4yXTspYVsoMHxhW0E+PjJdKSsobTw8Mik+PjJdPSgwfGFbKHc9MjMyKyhjPTB8YVtjKzE2Pj4yXSl8MCk+PjJdKS1wLHA9''@;'; put 'put ''MHxhW3c+PjJdLG09bSsxfDA7Zm9yKGw9bCs5NnwwLHA9MCxtPTAsYz0wfGFbMTYrKDB8YVsxOTIrKDB8YVtmKzE2Pj4yXSk+PjJdKT4+Ml07Yz0wfGFbYysxNjQ+PjJdOylhWygwfGFbbD4+Ml0pKyhtPDwyKT4+Ml09KDB8YVsodz0yMzIrKGM9MHxhW2MrMTY+PjJdKXwwKT4+Ml0pLXAscD0w''@;'; put 'put ''fGFbdz4+Ml0sbT1tKzF8MH0obCxwLG0pLGZ1bmN0aW9uIFk4KGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTA7Zm9yKGY9MTkyKygwfGFbMTYrKGN8PTApPj4yXSl8MDtmPTB8YVtmPj4yXTspKHA9MHxhWzE3MisoZj0wfGFbKG09ZisxNnwwKT4+Ml0pPj4yXSkmJihIdChwKSxmPTB8YVttPj4y''@;'; put 'put ''XSksKHA9MHxhW2YrMTgwPj4yXSkmJihIdChwKSxmPTB8YVttPj4yXSksZj1mKzE2NHwwO1ExKGwpLFExKGMpfShwLG0pKTpmdW5jdGlvbiBXOChsKXt2YXIgayxNLEQsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLFI9MCxHPTA7Zm9yKGFbKEQ9OTIrKGx8PTApfDApPj4yXT0wfG1yKDQr''@;'; put 'put ''KGFbbCsxMDA+PjJdPDwyKXwwKSxrPTB8bXIoNCsoYVtsKzEwND4+Ml08PDIpfDApLGFbbCs5Nj4+Ml09ayxNPWwrMzJ8MCxiPTB8YVtsKzg0Pj4yXTt3PTB8YVtiPj4yXTspe2ZvcihjPStfW3crNzI+PjNdLHA9KGw9MHxUdFt3KzgyPj4xXSk8PDE2Pj4xNj09MT9+fmM6KDB8KHA9fn4oKGMt''@;'; put 'put ''KygwfHZyKCgwfHVlW00+PjBdKS0xfDAsKDY1NTM1JmwpLTF8MCkpKS8rKDY1NTM1JmwpKSkpPjE/cDoxLGM9K19bdys2ND4+M10sQT0obT0wfFR0W3crODA+PjFdKTw8MTY+PjE2PT0xP35+YzooMHwoQT1+figoYy0rKDB8dnIoKDB8dWVbTT4+MF0pLTF8MCwoNjU1MzUmbSktMXwwKSkpLyso''@;'; put 'put ''NjU1MzUmbSkpKSk+MT9BOjEsZj0oNjU1MzUmbCkrKFI9MHxhclt3Kzg2Pj4xXSl8MCxsPVI7ISgoMHxsKT49KDB8ZikpOylhWyhSPSgwfGFbRD4+Ml0pKyhsPDwyKXwwKT4+Ml09KDB8KEc9MHxhW1I+PjJdKSk+KDB8cCk/RzpwLGw9bCsxfDA7Zm9yKGY9KDY1NTM1Jm0pKyhsPTB8YXJbdys4''@;'; put 'put ''ND4+MV0pfDA7ISgoMHxsKT49KDB8ZikpOylhWyhHPWsrKGw8PDIpfDApPj4yXT0oMHwoUj0wfGFbRz4+Ml0pKT4oMHxBKT9SOkEsbD1sKzF8MDtiPWIrNHwwfX0obCksb2U9QX0oYyksbD0wfHZyKDErKHc9MHxhW2MrMTA0Pj4yXSl8MCxrPTB8dWVbYyszMj4+MF0pLGI9YnRbZj4+MF08PDEs''@;'; put 'put ''az0wfHZyKDErKE09MHxhW2MrMTAwPj4yXSl8MCxrKSxBPWMrOTZ8MCxsPWIrbHwwLGY9MDshKCgwfGYpPj0oMHx3KSk7KWw9KDB8YVsoMHxhW0E+PjJdKSsoZjw8Mik+PjJdKStsfDAsZj1mKzF8MDtmb3Iodz1jKzkyfDAsZj1rK2J8MCxBPTA7ISgoMHxBKT49KDB8TSkpOylmPSgwfGFbKDB8''@;'; put 'put ''YVt3Pj4yXSkrKEE8PDIpPj4yXSkrZnwwLEE9QSsxfDA7dz1jKzM4fDA7ZG97aWYoMSZUdFtEPj4xXSl7aWYoQT02NTUzNSYoRD0wfFR0W3c+PjFdKSxEPDwxNj4+MTYmJihSPTB8VHRbYys0MD4+MV0pPDwxNj4+MTYpe2lmKCEoKDB8bCk+KDB8QSl8KDB8Zik+KDY1NTM1JlJ8MCkpKXtmPTAs''@;'; put 'put ''bD0wO2JyZWFrfVhyKDAsMTM3NTI5LEcpLG09MSxmPTAsbD0wO2JyZWFrfVhyKDAsMTM3NTYzLEspLG09MX19d2hpbGUoMCk7cmV0dXJuIF9bYys2ND4+M109KygwfCgoMHxsKT4oMHwoSz0wfGFyW3c+PjFdKSk/bDpLKSksX1tjKzcyPj4zXT0rKDB8KCgwfGYpPigwfChLPTB8YXJbYys0MD4+''@;'; put 'put ''MV0pKT9mOkspKSwwfGFbcGU+PjJdJiZZOShwLDE4NjU3Niksb2U9bWUsMHxtfWZ1bmN0aW9uIFJFKGwsYyxmLHAsbSl7Zj0rZixwPStwLG09K20sX1sobHw9MCk+PjNdPWM9K2MsX1tsKzg+PjNdPWYsX1tsKzE2Pj4zXT1wLF9bbCsyND4+M109bX1mdW5jdGlvbiBCRShsLGMsZil7Y3w9MCxm''@;'; put 'put ''fD0wO3ZhciBSLG1lLGJlLEJlLGplLGV0LHJ0LGx0LE10LGt0LGF0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLEs9MCxwZT0wLE9lPTAsTGU9MCxIZT0wLEdlPTAsRXQ9MCxadD0wO2F0PW9lLG9lPW9lKzY0fDAsTXQ9YXQrMzJ8MCxrdD1hdCxHZT0wfGFbODQrKGx8PTAp''@;'; put 'put ''Pj4yXSwwfChBPTB8YVtsKzgwPj4yXSkmJjB8KHA9MHxhW0ErMjQ+PjJdKSYmMD09KDB8YVsobT1sKzI0fDApPj4yXSkmJihhW20+PjJdPTB8bmEocCkpLGx0PWwrNDh8MCwoMHwoQT1+figoYj0rX1socD1jKzE2fDApPj4zXSktKHc9K19bYz4+M10pLSsoMHx+fitfW2wrNjQ+PjNdKSkpKTw9''@;'; put 'put ''LTEmJkJyKDEzNzQ5NiwxMzczNDIsMTc2MSwxMzc1MDYpLCgwfChHPX5+KChMZT0rX1soaz1jKzI0fDApPj4zXSktKEQ9K19bKE09Yys4fDApPj4zXSktKFI9KygwfH5+K19bbCs3Mj4+M10pKSkpKTw9LTEmJkJyKDEzNzUxOSwxMzczNDIsMTc2NCwxMzc1MDYpLG09NjU1MzUmKEs9MHxUdFts''@;'; put 'put ''KzM2Pj4xXSk7ZTpkb3tpZigxJm0pe3Q6ZG97aWYoKDB8QSk+MClzd2l0Y2goNiZtKXtjYXNlIDQ6X1twPj4zXT13K1I7YnJlYWsgdDtjYXNlIDI6X1twPj4zXT1iKyhFdD0rKDB8QSkpLF9bYz4+M109dys9RXQ7YnJlYWsgdDtkZWZhdWx0Ol9bYz4+M109dys9RXQ9KyhBPj4+MXwwKSxfW3A+''@;'; put 'put ''PjNdPWItRXQ7YnJlYWsgdH19d2hpbGUoMCk7aWYoKDB8Ryk+MClzd2l0Y2goMjQmSyl7Y2FzZSAxNjpfW2s+PjNdPUxlPUQrUixHPTAscD0wO2JyZWFrIGU7Y2FzZSA4Ol9baz4+M109TGUrPUV0PSsoMHxHKSxfW00+PjNdPUQrRXQsRz0wLHA9MDticmVhayBlO2RlZmF1bHQ6X1tNPj4zXT1E''@;'; put 'put ''KyhFdD0rKEc+Pj4xfDApKSxfW2s+PjNdPUxlLT1FdCxHPTAscD0wO2JyZWFrIGV9ZWxzZSBHPTAscD0wfWVsc2UgcD1BfXdoaWxlKDApO2ZvcihiPSsoMHxidFtsKzMzPj4wXSksRD0rKChwZT0wfHVlWyhldD1sKzMyfDApPj4wXSk8PDI0Pj4yNCksaz1+figrKDB8KGs9cC0oMHx2cihLPSgw''@;'; put 'put ''fHApLygwfChBPTB8YVsocnQ9bCsxMDR8MCk+PjJdKSl8MCxBKSl8MCkpKygoMHxrKT4tMT8uNTotLjUpKSxqZT1sKzk2fDAsTT1wZTw8MjQ+PjI0LHA9fn4odytiK0QpLG09MDshKCgwfG0pPigwfEEpKTspQT0wfGFbKEhlPSgwfGFbamU+PjJdKSsobTw8Mil8MCk+PjJdLGFbSGU+PjJdPXAs''@;'; put 'put ''cD1wK0srKCgwfG0pPCgwfGspJjEpK0ErTXwwLG09bSsxfDAsQT0wfGFbcnQ+PjJdO2ZvcihNPX5+KCsoMHwoTT1HLSgwfHZyKEs9KDB8RykvKDB8KEE9MHxhWyhIZT1sKzEwMHwwKT4+Ml0pKXwwLEEpKXwwKSkrKCgwfE0pPi0xPy41Oi0uNSkpLEJlPWwrOTJ8MCxrPXBlPDwyND4+MjQscD1+''@;'; put 'put ''fihMZS1iLUQpLG09MDshKCgwfG0pPigwfEEpKTspQT0wfGFbKE9lPSgwfGFbQmU+PjJdKSsobTw8Mil8MCk+PjJdLGFbT2U+PjJdPXAscD1wLUsrKCgoMHxtKTwoMHxNKSk8PDMxPj4zMSktQS1rfDAsbT1tKzF8MCxBPTB8YVtIZT4+Ml07Zm9yKHBlPTA9PSgwfGYpLG1lPWt0KzE2fDAsYmU9''@;'; put 'put ''a3QrMjR8MCxPZT1rdCs4fDAscD1HZTtrPTB8YVtwPj4yXTspQT0wfFR0W2srODQ+PjFdLHBlPyhtPTAsTT0wfFR0W2srODA+PjFdLEc9MHxUdFtrKzg2Pj4xXSxLPTB8VHRbays4Mj4+MV0pOihtPUE8PDE2Pj4xNj09MD84OjAsbT0oRz0wfFR0W2srODY+PjFdKTw8MTY+PjE2PT0wPzR8bTpt''@;'; put 'put ''LG09KCgoNjU1MzUmKE09MHxUdFtrKzgwPj4xXSkpKyg2NTUzNSZBKXwwKT09KDB8YVtydD4+Ml0pPzJ8bTptKXwoKDY1NTM1JihLPTB8VHRbays4Mj4+MV0pKSsoNjU1MzUmRyl8MCk9PSgwfGFbSGU+PjJdKSksX1trdD4+M109KygwfGFbKFp0PTB8YVtqZT4+Ml0pKygoQSY9NjU1MzUpPDwy''@;'; put 'put ''KT4+Ml0pLF9bbWU+PjNdPSsoKDB8YVtadCsoKDY1NTM1Jk0pK0E8PDIpPj4yXSktKEdlPTB8dWVbZXQ+PjBdKXwwKSxfW2JlPj4zXT0rKDB8YVsoTT0wfGFbQmU+PjJdKSsoKDY1NTM1JkcpPDwyKT4+Ml0pLF9bT2U+PjNdPSsoKDB8YVtNKygoNjU1MzUmSykrKDY1NTM1JkcpPDwyKT4+Ml0p''@;'; put 'put ''K0dlfDApLGFbTXQ+PjJdPWFba3Q+PjJdLGFbTXQrND4+Ml09YVtrdCs0Pj4yXSxhW010Kzg+PjJdPWFba3QrOD4+Ml0sYVtNdCsxMj4+Ml09YVtrdCsxMj4+Ml0sYVtNdCsxNj4+Ml09YVtrdCsxNj4+Ml0sYVtNdCsyMD4+Ml09YVtrdCsyMD4+Ml0sYVtNdCsyND4+Ml09YVtrdCsyND4+Ml0s''@;'; put 'put ''YVtNdCsyOD4+Ml09YVtrdCsyOD4+Ml0sZEIoayxNdCxtJmYpLHA9cCs0fDA7dWVbbCszNT4+MF09ZixhW2x0Pj4yXT1hW2M+PjJdLGFbbHQrND4+Ml09YVtjKzQ+PjJdLGFbbHQrOD4+Ml09YVtjKzg+PjJdLGFbbHQrMTI+PjJdPWFbYysxMj4+Ml0sYVtsdCsxNj4+Ml09YVtjKzE2Pj4yXSxh''@;'; put 'put ''W2x0KzIwPj4yXT1hW2MrMjA+PjJdLGFbbHQrMjQ+PjJdPWFbYysyND4+Ml0sYVtsdCsyOD4+Ml09YVtjKzI4Pj4yXSxvZT1hdH1mdW5jdGlvbiBQRShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIGJlLE9lLExlLEJlLEhlLGplLGV0LHJ0LEdlLGx0LE10LGt0LGF0LEV0LFp0LHV0LHd0LHJu''@;'; put 'put ''LHluLEZuLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGxyPTAsTnI9MCxrcj0wO2ZvcihGbj1vZSxvZT1vZSsxMTJ8MCxhdD1Gbis0OHwwLFp0PUZuLGFbKEV0PUZuKzE2fDApPj4yXT0wLGFbRXQrND4+Ml09MCxhW0V0Kzg+PjJdPTAsYVtF''@;'; put 'put ''dCsxMj4+Ml09MCxhW0V0KzE2Pj4yXT0wLGFbRXQrMjA+PjJdPTAsYVtFdCsyND4+Ml09MCxhW0V0KzI4Pj4yXT0wLHd0PWYrMTZ8MCxybj1mKzMyfDAseW49RXQrMTZ8MCxrPShHPTB8VHRbKHV0PWMrNHwwKT4+MV0pPDwxNj4+MTYscD0wLEE9LTEsYj0wOzspe2lmKCgwfGIpPj0oMHxrKSl7''@;'; put 'put ''cD0xO2JyZWFrfWlmKCgwfFR0WyhtPTB8YVtjPj4yXSkrKDI0KmJ8MCkrND4+MV0pPjEpe3A9MDticmVha31pZihtPTB8YVs0KygwfGFbbSsoMjQqYnwwKT4+Ml0pPj4yXSl7aWYoMTI3JmFbbSsyND4+Ml18MCl7cD0wO2JyZWFrfV9beW4+PjNdPXc9K19bKCtfW20rMTY+PjNdPjA/bTp3dCkr''@;'; put 'put ''MTY+PjNdLG09MD09KDB8YVttPj4yXSk/d3Q6bX1lbHNlIF9beW4+PjNdPXc9K19bcm4+PjNdLG09d3Q7aWYoYVtFdD4+Ml09bT0wfGFbbT4+Ml0sLTEhPUEpe2lmKHchPUEpe3A9MDticmVha319ZWxzZSBBPXc7aWYocCl7aWYoMHxaaShtLHApKXtwPTA7YnJlYWt9fWVsc2UgcD1tO2I9Yisx''@;'; put 'put ''fDB9Zm9yKHVlW2MrNj4+MF09cCxsdD1mKzQ4fDAsTXQ9ZisyMHwwLGt0PUV0KzR8MCxPZT1mKzQwfDAsTGU9RXQrMjR8MCxCZT1sKzE0NHwwLEhlPWF0KzR8MCxiZT1adCs4fDAsamU9YXQrMTZ8MCxldD1hdCsyNHwwLHJ0PWF0Kzh8MCxHZT1hdCsxMnwwLGY9MD09KDB8cCksQT0wLEs9MCxw''@;'; put 'put ''ZT0wLG1lPTAsaz0wLHA9RzshKCgwfGspPj0ocDw8MTY+PjE2fDApKTspe2Zvcih3PTAsUj0wLGI9MCxEPTAsQT0wLG09MHxhW2M+PjJdOyEoKDB8Yik+PSgwfFR0W20rKDI0Kmt8MCkrND4+MV0pKTspYVthdD4+Ml09MHx2MigwfGFbKDB8YVttKygyNCprfDApPj4yXSkrKDU2KmJ8MCk+PjJd''@;'; put 'put ''LDB8YVtsdD4+Ml0pLChwPTB8YVsoMHxhWyhtPSgwfGFbYz4+Ml0pKygyNCprfDApfDApPj4yXSkrKDU2KmJ8MCkrND4+Ml0pPygocD0xMjcmYVtwKzI0Pj4yXSl8fChwPTEyNyZhW09lPj4yXSksYVtMZT4+Ml09LTEyOCZhW0xlPj4yXXxwLF9beW4+PjNdPStfWygrX1sxNisoRz0wfGFbKDB8''@;'; put 'put ''YVttPj4yXSkrKDU2KmJ8MCkrND4+Ml0pPj4zXT4wP0c6d3QpKzE2Pj4zXSxhW0V0Pj4yXT1hWygwPT0oMHxhW0c+PjJdKT93dDpHKT4+Ml0sYVtrdD4+Ml09YVsoMD09KDB8YVtHKzQ+PjJdKT93dDpHKSs0Pj4yXSk6KF9beW4+PjNdPStfW3JuPj4zXSxhW0V0Pj4yXT1hW3d0Pj4yXSxhW2t0''@;'; put 'put ''Pj4yXT1hW010Pj4yXSxhW0xlPj4yXT0tMTI4JmFbTGU+PjJdfDEyNyZhW09lPj4yXSksYVtIZT4+Ml09MHxtaVs2MyZhWyhtPTB8YVtCZT4+Ml0pPj4yXV0obSxFdCwxKSxHTihadCxsLGF0KSxOcj0rX1tadD4+M10sTT0rX1tiZT4+M10sSHQoMHxhWygwfGFbKDB8YVtjPj4yXSkrKDI0Kmt8''@;'; put 'put ''MCk+PjJdKSsoNTYqYnwwKT4+Ml0pLGFbKEc9MHxhWyhtPTB8YVtjPj4yXSkrKDI0Kmt8MCk+PjJdKSsoNTYqYnwwKT4+Ml09YVthdD4+Ml0sX1tHKyg1NipifDApKzMyPj4zXT1OcixfW0crKDU2KmJ8MCkrMTY+PjNdPStfW2plPj4zXSxfW0crKDU2KmJ8MCkrMjQ+PjNdPStfW2V0Pj4zXSxh''@;'; put 'put ''W0crKDU2KmJ8MCkrND4+Ml09YVtIZT4+Ml0sYVtHKyg1NipifDApKzg+PjJdPWFbcnQ+PjJdLGFbRysoNTYqYnwwKSsxMj4+Ml09YVtHZT4+Ml0sdz0oa3I9K19bZXQ+PjNdKT53P2tyOncsUj1OcitSLGI9YisxfDAsRD0obHI9K19beW4+PjNdKT5EP2xyOkQsQT1NPkE/TTpBO19bbSsoMjQq''@;'; put 'put ''a3wwKSs4Pj4zXT1SLHA9MD09KDB8ayk7ZG97aWYoZil7aWYocCl7TT1ELHc9RC13LHA9bTticmVha31NPUQsdz1wZS1tZStELXcscD1tKygyNCprfDApfDA7YnJlYWt9TT1BLHc9cD9EOkEscD1tKygyNCprfDApfDB9d2hpbGUoMCk7X1twKzE2Pj4zXT13LEs9Uj5LP1I6SyxwZT1NK3BlLG1l''@;'; put 'put ''PStfW20rKDI0Kmt8MCkrMTY+PjNdK21lLGs9aysxfDAscD0wfFR0W3V0Pj4xXX1fW2MrMjQ+PjNdPUssX1tjKzMyPj4zXT1wPDwxNj4+MTY9PTE/QTpwZSxvZT1Gbn1mdW5jdGlvbiBkQihsLGMsZil7Y3w9MCxmfD0wO3ZhciBSLEssbWUsTGUsQmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAs''@;'; put 'put ''TT0wLEQ9MCxHPTAscGU9MCxiZT0wLE9lPTAsSGU9MDtMZT1vZSxvZT1vZSs2NHwwLG1lPUxlKzMyfDAsT2U9TGUsMD09KDB8YVsobT0yNCsobHw9MCl8MCk+PjJdKSYmMHwocD0wfGFbMjQrKDB8YVtsKzk2Pj4yXSk+PjJdKSYmKGFbbT4+Ml09MHxuYShwKSkscD02NTUzNSYoYmU9MHxUdFso''@;'; put 'put ''Sz1sKzM2fDApPj4xXSk7ZTpkb3tpZigxJnApe0Q9K19bbCs3Mj4+M10sYj0odz0rX1sobT1jKzE2fDApPj4zXSktKGs9K19bYz4+M10pLShBPStfW2wrNjQ+PjNdKTt0OmRve2lmKGI+MClzd2l0Y2goNiZwKXtjYXNlIDQ6X1ttPj4zXT13PWsrQSxBPWs7YnJlYWsgdDtjYXNlIDI6X1ttPj4z''@;'; put 'put ''XT13PWIrdyxfW2M+PjNdPUE9aytiO2JyZWFrIHQ7ZGVmYXVsdDpfW2M+PjNdPUE9KE09LjUqYikrayxfW20+PjNdPXctPU07YnJlYWsgdH1lbHNlIEE9a313aGlsZSgwKTtpZigoaz0oTT0rX1socD1jKzI0fDApPj4zXSktKGI9K19bKG09Yys4fDApPj4zXSktRCk+MClzd2l0Y2goMjQmYmUp''@;'; put 'put ''e2Nhc2UgMTY6X1twPj4zXT1rPWIrRDticmVhayBlO2Nhc2UgODpfW3A+PjNdPUQ9aytNLF9bbT4+M109Yis9ayxrPUQ7YnJlYWsgZTtkZWZhdWx0Ol9bbT4+M109Yj0oayo9LjUpK2IsX1twPj4zXT1rPU0tazticmVhayBlfWVsc2Ugaz1NfWVsc2UgQT0rX1tjPj4zXSxiPStfW2MrOD4+M10s''@;'; put 'put ''dz0rX1tjKzE2Pj4zXSxrPStfW2MrMjQ+PjNdfXdoaWxlKDApO3N3aXRjaChhWyhHPWwrNDh8MCk+PjJdPWFbYz4+Ml0sYVtHKzQ+PjJdPWFbYys0Pj4yXSxhW0crOD4+Ml09YVtjKzg+PjJdLGFbRysxMj4+Ml09YVtjKzEyPj4yXSxhW0crMTY+PjJdPWFbYysxNj4+Ml0sYVtHKzIwPj4yXT1h''@;'; put 'put ''W2MrMjA+PjJdLGFbRysyND4+Ml09YVtjKzI0Pj4yXSxhW0crMjg+PjJdPWFbYysyOD4+Ml0sdWVbbCszNT4+MF09ZixfW09lPj4zXT1NPUErKEhlPSsoMHxidFtsKzMzPj4wXSkpKyhCZT0rKDB8YnRbbCszND4+MF0pKSxfWyhHPU9lKzh8MCk+PjNdPUQ9YitIZStCZSxfWyhjPU9lKzE2fDAp''@;'; put 'put ''Pj4zXT1iPXctSGUtQmUsX1soUj1PZSsyNHwwKT4+M109az1rLUhlLUJlLG09bCs4OHwwLDB8dWVbbCs5Mj4+MF0pe2Nhc2UgMTpiZT0wfGFbbT4+Ml0sYVttZT4+Ml09YVtPZT4+Ml0sYVttZSs0Pj4yXT1hW09lKzQ+PjJdLGFbbWUrOD4+Ml09YVtPZSs4Pj4yXSxhW21lKzEyPj4yXT1hW09l''@;'; put 'put ''KzEyPj4yXSxhW21lKzE2Pj4yXT1hW09lKzE2Pj4yXSxhW21lKzIwPj4yXT1hW09lKzIwPj4yXSxhW21lKzI0Pj4yXT1hW09lKzI0Pj4yXSxhW21lKzI4Pj4yXT1hW09lKzI4Pj4yXSxCRShiZSxtZSxmKTticmVhaztjYXNlIDM6QT0rX1syNCsocD0wfGFbbT4+Ml0pPj4zXSx3PWItTS0rX1tw''@;'; put 'put ''KzE2Pj4zXTtlOmRve2lmKHc+MClzd2l0Y2goNiZiZSl7Y2FzZSA0Ol9bYz4+M109Yi13O2JyZWFrIGU7Y2FzZSAyOl9bT2U+PjNdPXcrTTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCk7QT1rLUQtQTtlOmRve2lmKEE+MClzd2l0Y2goMjQmYmUpe2Nhc2UgMTY6X1tSPj4zXT1r''@;'; put 'put ''LUE7YnJlYWsgZTtjYXNlIDg6X1tHPj4zXT1BK0Q7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKDApO2FbbWU+PjJdPWFbT2U+PjJdLGFbbWUrND4+Ml09YVtPZSs0Pj4yXSxhW21lKzg+PjJdPWFbT2UrOD4+Ml0sYVttZSsxMj4+Ml09YVtPZSsxMj4+Ml0sYVttZSsxNj4+Ml09YVtP''@;'; put 'put ''ZSsxNj4+Ml0sYVttZSsyMD4+Ml09YVtPZSsyMD4+Ml0sYVttZSsyND4+Ml09YVtPZSsyND4+Ml0sYVttZSsyOD4+Ml09YVtPZSsyOD4+Ml0sZnVuY3Rpb24gR2IobCxjKXthWyhsfD0wKT4+Ml09YVsoY3w9MCk+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxh''@;'; put 'put ''W2wrMTI+PjJdPWFbYysxMj4+Ml0sYVtsKzE2Pj4yXT1hW2MrMTY+PjJdLGFbbCsyMD4+Ml09YVtjKzIwPj4yXSxhW2wrMjQ+PjJdPWFbYysyND4+Ml0sYVtsKzI4Pj4yXT1hW2MrMjg+PjJdfShwLG1lKTticmVhaztkZWZhdWx0OkE9K19bMzIrKHA9MHxhW20+PjJdKT4+M10sdz1iLU0tK19b''@;'; put 'put ''cCsyND4+M107ZTpkb3tpZih3PjAmJihwZT02JmJlLHBlPDwxNj4+MTYhPTYpKXN3aXRjaCg3JnBlKXtjYXNlIDQ6X1tjPj4zXT1iLXc7YnJlYWsgZTtjYXNlIDI6X1tPZT4+M109dytNO2JyZWFrIGU7ZGVmYXVsdDpfW09lPj4zXT0oSGU9LjUqdykrTSxfW2M+PjNdPWItSGU7YnJlYWsgZX19''@;'; put 'put ''d2hpbGUoMCk7QT1rLUQtQTtlOmRve2lmKEE+MClzd2l0Y2goMjQmYmUpe2Nhc2UgMTY6X1tSPj4zXT1rLUE7YnJlYWsgZTtjYXNlIDg6X1tHPj4zXT1BK0Q7YnJlYWsgZTtkZWZhdWx0Ol9bRz4+M109KEhlPS41KkEpK0QsX1tSPj4zXT1rLUhlO2JyZWFrIGV9fXdoaWxlKDApO2FbKGJlPXAr''@;'; put 'put ''OHwwKT4+Ml09YVtPZT4+Ml0sYVtiZSs0Pj4yXT1hW09lKzQ+PjJdLGFbYmUrOD4+Ml09YVtPZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW09lKzEyPj4yXSxhW2JlKzE2Pj4yXT1hW09lKzE2Pj4yXSxhW2JlKzIwPj4yXT1hW09lKzIwPj4yXSxhW2JlKzI0Pj4yXT1hW09lKzI0Pj4yXSxhW2JlKzI4''@;'; put 'put ''Pj4yXT1hW09lKzI4Pj4yXSxmdW5jdGlvbiBwQihsLGMpe2N8PTA7dmFyIHAsZj0wLG09MDtmb3IocD0wfFR0WzQrKGx8PTApPj4xXSxmPTA7ISgoMHxmKT49KDB8cCkpOykwfHVlWyhtPSgwfGFbbD4+Ml0pKygyNCpmfDApKzZ8MCk+PjBdfHwodWVbbT4+MF09YyksZj1mKzF8MH0oMHxhW20+''@;'; put 'put ''PjJdLDUxMj09KDEwMjMmKE9lPTc2OCZUdFtLPj4xXSkpPzEwODoyNTY9PSgxMDIzJk9lKT8xMTQ6MTEwKX1vZT1MZX1mdW5jdGlvbiBtQihsLGMsZixwKXtsfD0wLHB8PTA7dmFyIGssTSxSLEcsSyxwZSxtPTAsQT0wLHc9MCxiPTAsRD0wO3N3aXRjaChLPW9lLG9lPW9lKzE2fDAsRz1LKzh8''@;'; put 'put ''MCxSPUssYVs5NisoY3w9MCk+PjJdPWZ8PTAsNjQmKGI9MHxUdFsoTT1jKzM2fDApPj4xXSl8fCh1ZVtjKzM0Pj4wXT13PTY0JlR0W2YrMzY+PjFdPzB8dWVbZiszND4+MF06MiksMzImYnx8KCh3PTB8dWVbZis4OD4+MF0pPDwyND4+MjQ8PS0xJiYodz0zMiZUdFtmKzM2Pj4xXT8wfHVlW2Yr''@;'; put 'put ''MzM+PjBdOjEpLHVlW2MrMzM+PjBdPXcpLHc9Yys4OHwwLDB8dWVbKGs9Yys5MnwwKT4+MF0pe2Nhc2UgMTpiPTB8emIobCwwfGFbdz4+Ml0sYyxwKSxmPTB8YVt3Pj4yXSx3PWIsYj1mKzY0fDAsZj1mKzcyfDA7YnJlYWs7Y2FzZSAzOmI9MHxmdW5jdGlvbiBNRyhsLGMpe3ZhciBtLHcsYixr''@;'; put 'put ''LGY9MCxwPTAsQT0wO3JldHVybiBrPW9lLG9lPW9lKzE2fDAsdz1rLGJDKEE9ays4fDAsMHxhWyhjPTUyKyhjfD0wKXwwKT4+Ml0sMHxhWyhtPTMyKyhsfD0wKXwwKT4+Ml0pLGI9MHxhW0E+PjJdLC0xPT0oKEE9MHxhW0ErND4+Ml0pJmJ8MCk/KGFbdz4+Ml09YVttPj4yXSxYcigxLDEzNzY5''@;'; put 'put ''Nyx3KSxjPTEscD0wLGY9MCk6KHVlWzExNCsoMHxhWzE2KygwfGFbYz4+Ml0pPj4yXSk+PjBdPTEsYz0wLHA9KygwfEEpLGY9KygwfGIpKSxhW2w+PjJdPTAsYVtsKzQ+PjJdPTAsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wLF9bbCsxNj4+M109ZixfW2wrMjQ+PjNdPXAsb2U9aywwfGN9KDB8''@;'; put 'put ''YVt3Pj4yXSxwKSxmPTB8YVt3Pj4yXSx3PWIsYj1mKzE2fDAsZj1mKzI0fDA7YnJlYWs7ZGVmYXVsdDpQRSgwfGFbMTQ0KygwfGFbbCsxNj4+Ml0pPj4yXSwwfGFbdz4+Ml0scCksZj0wfGFbdz4+Ml0sdz0wLGI9ZisyNHwwLGY9ZiszMnwwfUE9K19bYj4+M10rKG09KygoMHxidFtjKzMzPj4w''@;'; put 'put ''XSkrKDB8YnRbYyszND4+MF0pPDwxfDApKSxtPStfW2Y+PjNdK20sZj1jKzM4fDA7ZG97aWYoMSZUdFtNPj4xXSl7aWYoKGI9MHxUdFtmPj4xXSk8PDE2Pj4xNiYmKEQ9MHxUdFtjKzQwPj4xXSk8PDE2Pj4xNil7aWYoIShBPisoNjU1MzUmYil8bT4rKDY1NTM1JkQpKSl7QT0wLG09MDticmVh''@;'; put 'put ''a31pZigzPT0oMHx1ZVtrPj4wXSkpe0E9MCxtPTA7YnJlYWt9WHIoMCwxMzc2MTQsUiksdz0xLEE9MCxtPTA7YnJlYWt9WHIoMCwxMzc2NDcsRyksdz0xfX13aGlsZSgwKTtyZXR1cm4gX1tjKzY0Pj4zXT1BPihwZT0rKDB8YXJbZj4+MV0pKT9BOnBlLF9bYys3Mj4+M109bT4oQT0rKDB8YXJb''@;'; put 'put ''Yys0MD4+MV0pKT9tOkEsb2U9SywwfHd9ZnVuY3Rpb24gRkUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIGIsayxtPTAsQT0wLHc9MDtiPSgwfGFyWyhrPTgwKyhwfD0wKXwwKT4+MV0pLTF8MCx3PTA7ZTpmb3IoOzspZm9yKG09Zjs7KXtpZih3KWJyZWFrIGU7Zm9yKEE9YittfDA7Oyl7''@;'; put 'put ''aWYoKDB8QSk8KDB8bSkpe2Y9bSx3PTE7Y29udGludWUgZX1pZigwfHVRKGwsQSxjKSlicmVhaztBPUErLTF8MH1tPUErMXwwfWZvcih3PXArODJ8MCxtPWY7KDB8bSk8KGYrKDB8YXJbaz4+MV0pfDApOyl7Zm9yKEE9YzshKCgwfEEpPj0oKDB8YXJbdz4+MV0pK2N8MCkpOylscChsLG0sQSks''@;'; put 'put ''QT1BKzF8MDttPW0rMXwwfXJldHVybiAwfGZ9ZnVuY3Rpb24gSEUoKXtyZXR1cm4gMHxBcyg1NTkyNCwwfGFbNDU4MV0pfWZ1bmN0aW9uIFliKGwsYyl7dmFyIGYscDtsfD0wLGY9b2Usb2U9b2UrMTZ8MCxhWyhwPWYpPj4yXT1jfD0wLG1pWzYzJmFbbD4+Ml1dKGwscCwxKSxvZT1mfWZ1bmN0''@;'; put 'put ''aW9uIHRjKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxmPW9lLG9lPW9lKzE2fDAsYVsocD1mKT4+Ml09Y3w9MCxjPTAhPSgwfG1pWzYzJmFbbD4+Ml1dKGwscCw1MTIpKSYxLG9lPWYsMHxjfWZ1bmN0aW9uIFFiKCl7dmFyIGMsZixsPTA7Zm9yKGM9MHxhWzQ3Mzg3XSxmPTB8YVs0NzM3NV0s''@;'; put 'put ''bD0xOzspe2lmKCgwfGwpPigwfGMpKXtsPTU7YnJlYWt9aWYoKDB8YVs0KygwfGFbZisobDw8Mik+PjJdKT4+Ml0pIT0oMHxsKSl7bD00O2JyZWFrfWw9bCsxfDB9aWYoND09KDB8bCkpQnIoMTM4Mzk0LDEzNzc0MSw1OSwxMzc3NDcpO2Vsc2UgaWYoNT09KDB8bCkpcmV0dXJufWZ1bmN0aW9u''@;'; put 'put ''IGttKGwpe3ZhciBtLEEsdyxjPTAsZj0wLHA9MDtmb3Iodz0wfGFbKEE9MHxhWyhtPTB8YVs0NzM3NV0pKygobHw9MCk8PDIpPj4yXSk+PjJdO3A9bSsobDw8Mil8MCwhKCgwfGFbKGY9MHxhW20rKChjPSgwfGwpLzJ8MCk8PDIpPj4yXSk+PjJdKT49KDB8dykpOylhW3A+PjJdPWYsYVtmKzQ+''@;'; put 'put ''PjJdPWwsbD1jO2FbcD4+Ml09QSxhW0ErND4+Ml09bH1mdW5jdGlvbiBKYihsKXtsfD0wO3ZhciBmLGM9MDtyZXR1cm4gZj1vZSxvZT1vZSsxNnwwLCgwfChjPTB8YVs0NzM4N10pKT09KDB8YVs0NzM4Nl0pPyhYcigxLDEzNzc1NSxmKSxsPTEpOihhWzQ3Mzg3XT1jPWMrMXwwLGFbKDB8YVs0''@;'; put 'put ''NzM3NV0pKyhjPDwyKT4+Ml09bCxrbShjKSxRYigpLGw9MCksb2U9ZiwwfGx9ZnVuY3Rpb24gQUIoKXt2YXIgbD0wLGM9MCxmPTAscD0wO3JldHVybihjPTB8YVs0NzM4N10pPyhsPTB8YVsoZj00KyhwPTB8YVs0NzM3NV0pfDApPj4yXSxhW2Y+PjJdPWFbcCsoYzw8Mik+PjJdLGFbNDczODdd''@;'; put 'put ''PWM9YystMXwwLDB8YyYmZnVuY3Rpb24gVkUobCl7dmFyIHAsbSxBLHcsYixjPTAsZj0wLGs9MCxNPTAsRD0wO2ZvcihBPTB8YVsobT0wfGFbKHA9MHxhWzQ3Mzc1XSkrKChsfD0wKTw8Mik+PjJdKT4+Ml0sYj0oMHwodz0wfGFbNDczODddKSkvMnwwOyEoKDB8bCk+KDB8Yil8fChmPWw8PDEs''@;'; put 'put ''Yz0wfGFbcCsoZjw8Mik+PjJdLCgwfGYpPCgwfHcpJiYoRD0xfGYsaz0wfGFbcCsoRDw8Mik+PjJdLE09KDB8YVtjPj4yXSk8KDB8YVtrPj4yXSksZj1NP0Q6ZixjPU0/azpjKSwoMHxBKT49KDB8YVtjPj4yXSkpKTspYVtwKyhsPDwyKT4+Ml09YyxhW2MrND4+Ml09bCxsPWY7YVtwKyhsPDwy''@;'; put 'put ''KT4+Ml09bSxhW20rND4+Ml09bH0oMSksUWIoKSk6bD0wLDB8bH1mdW5jdGlvbiBqRShsLGMpe2FbKGx8PTApPj4yXT1jfD0wLGttKDB8YVtsKzQ+PjJdKSxRYigpfWZ1bmN0aW9uIHlCKGwsYyxmKXt2YXIgYixrLE0sRCxwPTAsbT0wLEE9MCx3PTAsUj0wO2Zvcih3PSgwfHVlWyh3PTB8YVso''@;'; put 'put ''TT0xNisobHw9MCl8MCk+PjJdKSsoNDAqKDB8YVsxMisoZnw9MCk+PjJdKXwwKSszNj4+MF0pIT0oMHx1ZVt3Kyg0MCooMHxhW2YrMTY+PjJdKXwwKSszNj4+MF0pLG09KDB8KGI9fn4oLjUqKCtfWzY0KyhjfD0wKT4+M10tMy0rX1tjKzQ4Pj4zXSkpKSk8KDB8KGs9fn4oLjUqKCtfW2MrNTY+''@;'; put 'put ''PjNdLTMtK19bYys0MD4+M10pKSkpP2I6ayxEPWMrNHwwLHA9MDs7KXtpZigoMHxwKT49KDB8KGw9MHxhW0Q+PjJdKSkpe209cDticmVha31pZigoMHx1ZVsoUj0wfGFbTT4+Ml0pKyg0MCooMHxhWzEyKyhBPTB8YVtjKzgrKHA8PDIpPj4yXSk+PjJdKXwwKSszNj4+MF0pPT0oMHx1ZVtSKyg0''@;'; put 'put ''MCooMHxhW0ErMTY+PjJdKXwwKSszNj4+MF0pKXttPXA7YnJlYWt9WkUoQSxtKSxwPXArMXwwfWZvcig7ISgoMHxtKT49KDB8bCkpOyl3fCgwfChwPTB8YVtjKzgrKG08PDIpPj4yXSkpPT0oMHxmKSYmKFpFKHAsMHx1ZVsoMHxhW00+PjJdKSsoNDAqKDB8YVtwKzEyPj4yXSl8MCkrMzY+PjBd''@;'; put 'put ''P2I6ayksbD0wfGFbRD4+Ml0pLG09bSsxfDB9ZnVuY3Rpb24gWkUobCxjKXt2YXIgZixwO2N8PTAsYVsoZj04KyhsfD0wKXwwKT4+Ml09MSsocD0wfGFbZj4+Ml0pLCgwfHApPj0oMHxjKSYmKGFbZj4+Ml09MCxfW2w+PjNdPStfW2w+PjNdKzE2Mzg0KX1mdW5jdGlvbiBZbChsLGMsZixwLG0p''@;'; put 'put ''e2x8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wO0E9MHxtaVs2MyZhWyhjfD0wKT4+Ml1dKGMsZnw9MCw1MTIpO2Rve2lmKEEpdz1BO2Vsc2V7aWYobD0wfFA4KGwpLHApe3c9cCsoKEE9MHxhW2wrMzI+PjJdKTw8NSl8MCxhWyhwPXArKEE8PDUpKzh8MCk+PjJdPWFbZj4+Ml0sYVtwKzQ+PjJd''@;'; put 'put ''PWFbZis0Pj4yXSxhW3ArOD4+Ml09YVtmKzg+PjJdLGFbcCsxMj4+Ml09YVtmKzEyPj4yXSxhW3c+PjJdPWwsdWVbbCszNj4+MF09bSxtaVs2MyZhW2M+PjJdXShjLHcsMSk7YnJlYWt9QnIoMTM4MTgzLDEzODEzMSwyOTEsMTM4MTkwKX19d2hpbGUoMCk7cmV0dXJuIDB8YVt3Pj4yXX1mdW5j''@;'; put 'put ''dGlvbiBCNChsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtlOmRve2lmKC41KigrX1tsKzY0Pj4zXS0zLStfW2wrNDg+PjNdKTwyKWZvcihBPTB8YVtsKzMyPj4yXSx3PWwrMzZ8MCxtPTA7Oyl7aWYoKDB8bSk+PSgwfEEpKWJyZWFrIGU7Yz0wfGFbKDB8YVt3Pj4yXSkrKG08''@;'; put 'put ''PDIpPj4yXTt0OmRve2lmKDB8dWVbYyszNj4+MF0paWYocD0wfGFbYysyMD4+Ml0sKDB8cCk9PSgwfGwpKXtjPWY9MHxhW2MrMjQ+PjJdLGY9MHxhW2Y+PjJdO2Rve2lmKGFbYz4+Ml09OHxmLCEoYz0wfGFbYVtjKzM2Pj4yXT4+Ml0pKWJyZWFrIHQ7Zj0wfGFbKGM9MHxhW2MrMjQ+PjJdKT4+''@;'; put 'put ''Ml19d2hpbGUoISgxJmZ8MCkpfWVsc2V7Zj1wLGM9MHxhW3A+PjJdO2Rve2lmKGFbZj4+Ml09OHxjLCEoYz0wfGFbOCsoMHxhW2YrMzY+PjJdKT4+Ml0pKWJyZWFrIHQ7Yz0wfGFbKGY9MHxhW2MrMjA+PjJdKT4+Ml19d2hpbGUoISgxJmN8MCkpfX13aGlsZSgwKTttPW0rMXwwfX13aGlsZSgw''@;'; put 'put ''KTtlOmRve2lmKC41KigrX1tsKzU2Pj4zXS0zLStfW2wrNDA+PjNdKTwyKWZvcihBPTB8YVtsKzMyPj4yXSx3PWwrMzZ8MCxtPTA7Oyl7aWYoKDB8bSk+PSgwfEEpKWJyZWFrIGU7Yz0wfGFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXTt0OmRve2lmKCEoMHx1ZVtjKzM2Pj4wXSkpaWYocD0wfGFb''@;'; put 'put ''YysyMD4+Ml0sKDB8cCk9PSgwfGwpKXtjPWY9MHxhW2MrMjQ+PjJdLGY9MHxhW2Y+PjJdO2Rve2lmKGFbYz4+Ml09MTZ8ZiwhKGM9MHxhWzQrKDB8YVtjKzM2Pj4yXSk+PjJdKSlicmVhayB0O2Y9MHxhWyhjPTB8YVtjKzI0Pj4yXSk+PjJdfXdoaWxlKCEoMSZmfDApKX1lbHNle2Y9cCxjPTB8''@;'; put 'put ''YVtwPj4yXTtkb3tpZihhW2Y+PjJdPTE2fGMsIShjPTB8YVsxMisoMHxhW2YrMzY+PjJdKT4+Ml0pKWJyZWFrIHQ7Yz0wfGFbKGY9MHxhW2MrMjA+PjJdKT4+Ml19d2hpbGUoISgxJmN8MCkpfX13aGlsZSgwKTttPW0rMXwwfX13aGlsZSgwKX1mdW5jdGlvbiB3QihsLGMpe2N8PTA7dmFyIEEs''@;'; put 'put ''Zj0wLHA9MCxtPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wO209LjUqKCh3PStfWzY0KyhsfD0wKT4+M10tK19bbCs0OD4+M10pKyhBPStfW2wrNTY+PjNdLStfW2wrNDA+PjNdKSkrNTAwLC41Kih3Ky0zKTwyPyhtPShNPTA9PSg4JmFbbD4+Ml18MCkpPzE2Mzg0Om0s''@;'; put 'put ''Sz1NPzE2Mzg0OkEpOks9QSwuNSooQSstMyk8MiYmKHc9KE09MD09KDE2JmFbbD4+Ml18MCkpPzE2Mzg0OncsbT1NPzE2Mzg0Om0pLDAhPSgwfChwPTB8YVs4KyhmPTB8YVsoTT1sKzM2fDApPj4yXSk+PjJdKSkmJjAhPSgwfChiPTB8YVtmKzQ+PjJdKSkmJihiPTB8emMoYyxwLGIsbSksYVso''@;'; put 'put ''cD1sKzR8MCk+PjJdPTErKGY9MHxhW3A+PjJdKSxhW2wrOCsoZjw8Mik+PjJdPWIsZj0wfGFbTT4+Ml0pLDAhPSgwfChwPTB8YVtmKzQ+PjJdKSkmJjAhPSgwfChrPTB8YVtmPj4yXSkpJiYoaz0wfHpjKGMscCxrLG0pLGFbKGI9bCs0fDApPj4yXT0xKyhmPTB8YVtiPj4yXSksYVtsKzgrKGY8''@;'; put 'put ''PDIpPj4yXT1rLGY9MHxhW00+PjJdKSwwIT0oMHwocD0wfGFbZis4Pj4yXSkpJiYwIT0oMHwoRD0wfGFbZisxMj4+Ml0pKSYmKEQ9MHx6YyhjLHAsRCxtKSxhWyhrPWwrNHwwKT4+Ml09MSsoZj0wfGFbaz4+Ml0pLGFbbCs4KyhmPDwyKT4+Ml09RCxmPTB8YVtNPj4yXSksMCE9KDB8KHA9MHxh''@;'; put 'put ''W2YrMTI+PjJdKSkmJjAhPSgwfChSPTB8YVtmPj4yXSkpJiYoUj0wfHpjKGMscCxSLG0pLGFbKEQ9bCs0fDApPj4yXT0xKyhmPTB8YVtEPj4yXSksYVtsKzgrKGY8PDIpPj4yXT1SLGY9MHxhW00+PjJdKSwwIT0oMHwocD0wfGFbZis0Pj4yXSkpJiYwIT0oMHwoRz0wfGFbZisxMj4+Ml0pKSYm''@;'; put 'put ''KEc9MHx6YyhjLHAsRyx3KSxhWyhSPWwrNHwwKT4+Ml09MSsoZj0wfGFbUj4+Ml0pLGFbbCs4KyhmPDwyKT4+Ml09RyxmPTB8YVtNPj4yXSksMHwocD0wfGFbZis4Pj4yXSkmJjB8KHBlPTB8YVtmPj4yXSkmJihjPTB8emMoYyxwLHBlLEspLGFbKEc9bCs0fDApPj4yXT0xKyhwZT0wfGFbRz4+''@;'; put 'put ''Ml0pLGFbbCs4KyhwZTw8Mik+PjJdPWMpfWZ1bmN0aW9uIGN1KGwsYyxmLHAsbSl7bHw9MCxjfD0wLHB8PTAsbXw9MDt2YXIgdyxiLGssQT0wLE09MDtmb3Ioaz1vZSxvZT1vZSs5NnwwLGI9ayxhWyh3PWsrNjR8MCk+PjJdPWFbKGZ8PTApPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4''@;'; put 'put ''Pj4yXT1hW2YrOD4+Ml0sYVt3KzEyPj4yXT1hW2YrMTI+PjJdLGFbdysxNj4+Ml09YVtmKzE2Pj4yXSxhW3crMjA+PjJdPWFbZisyMD4+Ml0sYVt3KzI0Pj4yXT1hW2YrMjQ+PjJdLGFbdysyOD4+Ml09YVtmKzI4Pj4yXSxKZih3LG0sMSxiKSxmPTB8SjkocCwxLGIpLEE9MDshKCgwfEEpPj0o''@;'; put 'put ''MHxjKSk7KWFbdz4+Ml09YVsoTT1sKyg3MipBfDApKzQwfDApPj4yXSxhW3crND4+Ml09YVtNKzQ+PjJdLGFbdys4Pj4yXT1hW00rOD4+Ml0sYVt3KzEyPj4yXT1hW00rMTI+PjJdLGFbdysxNj4+Ml09YVtNKzE2Pj4yXSxhW3crMjA+PjJdPWFbTSsyMD4+Ml0sYVt3KzI0Pj4yXT1hW00rMjQ+''@;'; put 'put ''PjJdLGFbdysyOD4+Ml09YVtNKzI4Pj4yXSxKZih3LG0sMCxiKSxmPTB8SjkocCxmLGIpLEE9QSsxfDA7b2U9a31mdW5jdGlvbiB1NihsLGMpe2x8PTAsY3w9MDt2YXIgQSxmPTAscD0wLG09MCx3PTA7Zm9yKGY9MDshKCgwfGYpPigwfGwpKTspYVtjKyhmPDwyKT4+Ml09ZixmPWYrMXwwO2Zv''@;'; put 'put ''cihBPWwrMXwwLGY9MTshKCgwfGYpPigwfGwpKTspcD1jKyhmPDwyKXwwLG09YysoKHc9fn4oKyRjKCkqKyhBLWZ8MCkrICsoMHxmKSkpPDwyKXwwLCgwfGYpIT0oMHx3KSYmKHc9MHxhW3A+PjJdLGFbcD4+Ml09YVttPj4yXSxhW20+PjJdPXcpLGY9ZisxfDB9ZnVuY3Rpb24gYzYobCxjLGYs''@;'; put 'put ''cCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3LGIsRCxBPTAsaz0wLE09MCxSPTAsRz0wLEs9MDtmb3IoRD0wfG1yKChrPTErKEE9NSoobHw9MCl8MCl8MCk8PDIpLGFbNDczODhdPTB8bXIoazw8NCksYVs0NzM4OV09MHxtcig1NisoNTYqbHwwKXwwKSxrPTB8bXIobDw8MiksYVs0NzM5''@;'; put 'put ''MF09ayxNPTA7ISgoMHxNKT4oMHxBKXx8MHxROShmKyg3MipNfDApfDAsYykpOylNPU0rMXwwO2Zvcih3PTB8YVs0NzM4OF0sYj0wfGFbNDczODldLEE9MTshKCgwfEEpPigwfGwpKTspYVt3KyhBPDw0KSs4Pj4yXT1hW2MrKDU2KkF8MCkrNDg+PjJdLGFbdysoQTw8NCkrND4+Ml09YVsoUj1j''@;'; put 'put ''Kyg1NipBfDApKzQ0fDApPj4yXSxhW3crKEE8PDQpPj4yXT1BLGFbKEc9YisoNTYqQXwwKXwwKT4+Ml09YVsoSz1jKyg1NipBfDApfDApPj4yXSxhW0crND4+Ml09YVtLKzQ+PjJdLGFbRys4Pj4yXT1hW0srOD4+Ml0sYVtHKzEyPj4yXT1hW0srMTI+PjJdLGFbYisoNTYqQXwwKSsxNj4+Ml09''@;'; put 'put ''YVtSPj4yXSxhW2IrKDU2KkF8MCkrMzI+PjJdPUEsYVtiKyg1NipBfDApKzQ4Pj4yXT0xLEE9QSsxfDA7cmV0dXJuIGFbNDczOTFdPWwsYVs0NzM5Ml09MCxhW2s+PjJdPTEsQT0oMHwoQT0wfGFbZisoNzIqTXwwKSs0MD4+Ml0pKTw9MD8oMHwoQT0wfGFbZisoNzIqTXwwKSs0OD4+Ml0pKT4w''@;'; put 'put ''PzB8SW8oRCxtLDAsYyxmLDAsTSxBLHAsMik6MDowfElvKEQsbSwwLGMsZiwwLE0sQSxwLDEpLEh0KEQpLEh0KDB8YVs0NzM4OF0pLEh0KDB8YVs0NzM4OV0pLEh0KDB8YVs0NzM5MF0pLDB8QX1mdW5jdGlvbiBmNihsLGMsZil7dmFyIHAsbSxBLHc7cmV0dXJuIHc9K19bKCtfWyhjfD0wKT4+''@;'; put 'put ''M10+K19bKGZ8PTApPj4zXT9jOmYpPj4zXSxfWzE2KyhsfD0wKT4+M109QT0rX1soK19bYysxNj4+M108K19bZisxNj4+M10/YzpmKSsxNj4+M10sX1tsPj4zXT13LG09K19bKCtfW2MrOD4+M10+K19bZis4Pj4zXT9jOmYpKzg+PjNdLF9bbCsyND4+M109cD0rX1soK19bYysyND4+M108K19b''@;'; put 'put ''ZisyND4+M10/YzpmKSsyND4+M10sX1tsKzg+PjNdPW0sISh3Pj1BKSYhKG0+PXApJjF8MH1mdW5jdGlvbiBROShsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MDttPTB8YVs0KyhsfD0wKT4+Ml07ZG97aWYoMj09KDB8YVtsKzY4Pj4yXSl8fCgwfG0pPDF8KDB8YVtsPj4yXSk8MSlsPTA7ZWxzZXtp''@;'; put 'put ''ZighKCgwfGFbbCs0MD4+Ml0pPDEmJigwfGFbbCs0ND4+Ml0pPDEpKXtpZigoMHxhW2wrNDg+PjJdKT49MSl7bD0wO2JyZWFrfWlmKCgwfGFbbCs1Mj4+Ml0pPj0xKXtsPTA7YnJlYWt9fWw9KGY9K19bYysoNTYqbXwwKSsyND4+M10pPjFlLTcrKHA9K19bYysoNTYqbXwwKSs4Pj4zXSk/MTpm''@;'; put 'put ''PHArLTFlLTc/MDorX1tjKyg1NiptfDApKzE2Pj4zXT4rX1tjKyg1NiptfDApPj4zXSYxfX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIElvKGwsYyxmLHAsbSxBLHcsYixrLE0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLGJ8PTAsTXw9MDt2YXIgTXQsRD0wLFI9MCxHPTAs''@;'; put 'put ''Sz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLGt0PTAsYXQ9MCxFdD0wLFp0PTAsdXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTAsTnI9MCxrcj0wO010PTA9PSgwfChrfD0wKSksbHQ9d3w9MDtlOmZvcig7ZXQ9bSsoNzIq''@;'; put 'put ''bHR8MCl8MCwhKCgwfGx0KTwxfHwodz1sKyhsdDw8Mil8MCwwfGFbdz4+Ml0pKTspe2Fbdz4+Ml09MSxCZT1tKyg3MipsdHwwKSs4fDAsSGU9bSsoNzIqbHR8MCkrMjR8MCwoSz0rX1soT2U9bSsoNzIqbHR8MCkrMTZ8MCk+PjNdKT4oRz0rX1soamU9bSsoNzIqbHR8MCkrMzJ8MCk+PjNdKSYm''@;'; put 'put ''KHV0PStfW3ArKDU2KihHZT0wfGFbZXQ+PjJdKXwwKT4+M10pPT0rX1twKyg1NipHZXwwKSsxNj4+M10mJihybj0rX1twKyg1NiooR2U9MHxhW20rKDcyKmx0fDApKzQ+PjJdKXwwKT4+M10pPT0rX1twKyg1NipHZXwwKSsxNj4+M10mJih3PWMrKGY8PDUpfDAsTXQ/KF9bdz4+M109dXQscGU9''@;'; put 'put ''SyxLPXJuKTooX1t3Pj4zXT1HLHBlPS11dCxHPS1ybiksX1tjKyhmPDw1KSs4Pj4zXT1HLF9bYysoZjw8NSkrMTY+PjNdPUssX1tjKyhmPDw1KSsyND4+M109cGUsZj1mKzF8MCkscnQ9MHxhWyh3PW0rKDcyKmx0fDApKzQwfDApPj4yXTtkb3tpZigoMHxydCk8MSYmKDB8YVsoeW49bSsoNzIq''@;'; put 'put ''bHR8MCkrNDR8MCk+PjJdKTwxKXtpZihSPW0rKDcyKmx0fDApKzUyfDAsKDB8YVsodz1tKyg3MipsdHwwKSs0OHwwKT4+Ml0pPjAmJigwfChGbj0wfGFbUj4+Ml0pKT4wKXtpZihEPTB8YVttKyg3MipGbnwwKT4+Ml0sTT0wfGFbZXQ+PjJdLCgwfEZuKT09KDB8Yikpe009MHx2cyhBLE0sRCks''@;'; put 'put ''Zj0wfElvKGwsYyxmLHAsbSxBLDB8YVtSPj4yXSxsdCxrLDEpLEE9TSxNPTE7YnJlYWt9TT0wfHZzKEEsRCxNKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGx0LGssMSksQT1NLHc9UixNPTE7YnJlYWt9Zj0wfElvKGwsYyxmLHAsbSxBLHJ0LGx0LGssMiksZj0wfElvKGwsYyxmLHAs''@;'; put 'put ''bSxBLDB8YVt5bj4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGx0LGssMSksdz1SLE09MX1lbHNlIGtyPTE5fXdoaWxlKDApO2Rve2lmKDE5PT0oMHxrcikpe2lmKGtyPTAsKDB8KG1lPTB8YVsoR2U9bSsoNzIqbHR8MCkrNDh8MCk+PjJdKSk8MSYmKDB8YVsobHI9''@;'; put 'put ''bSsoNzIqbHR8MCkrNTJ8MCk+PjJdKTwxKXtpZihSPW0rKDcyKmx0fDApKzQ0fDAsKDB8cnQpPjAmJigwfChOcj0wfGFbUj4+Ml0pKT4wKXtpZihEPTB8YVttKyg3MipsdHwwKSs0Pj4yXSxNPTB8YVttKyg3MipydHwwKSs0Pj4yXSwoMHxOcik9PSgwfGIpKXtNPTB8dnMoQSxNLEQpLGY9MHxJ''@;'; put 'put ''byhsLGMsZixwLG0sQSwwfGFbUj4+Ml0sbHQsaywyKSxBPU0sTT0yO2JyZWFrfU09MHx2cyhBLEQsTSksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxsdCxrLDIpLEE9TSx3PVIsTT0yO2JyZWFrfWY9MHxJbyhsLGMsZixwLG0sQSxydCxsdCxrLDIpLGY9MHxJbyhsLGMsZixwLG0sQSww''@;'; put 'put ''fGFbUj4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW0dlPj4yXSxsdCxrLDEpLHc9bHIsTT0xO2JyZWFrfWlmKEQ9KDB8KGJlPTB8YVsoTGU9bSsoNzIqbHR8MCkrNDR8MCk+PjJdKSk+MCwoMHxydCk+MCl7aWYoRCl7aWYoKDB8bWUpPjAmJigwfChhdD0wfGFbKGt0PW0rKDcy''@;'; put 'put ''Kmx0fDApKzUyfDApPj4yXSkpPjApe2lmKFI9MHxhW20rKDcyKmF0fDApPj4yXSxEPTB8YVttKyg3MipydHwwKSs0Pj4yXSwhKDI9PSgwfE0pJigwfGF0KT09KDB8Yil8fDE9PSgwfE0pJigwfGJlKT09KDB8YikpKXtNPTB8dnMoQSxSLEQpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbdz4+Ml0s''@;'; put 'put ''bHQsaywyKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW0dlPj4yXSxsdCxrLDEpLGY9MHxJbyhsLGMsZixwLG0sTSwwfGFbTGU+PjJdLGx0LGssMiksQT1NLHc9a3QsTT0xO2JyZWFrfU09MHx2cyhBLEQsUiksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVtMZT4+Ml0sbHQsaywyKSxmPTB8SW8obCxj''@;'; put 'put ''LGYscCxtLEEsMHxhW2t0Pj4yXSxsdCxrLDEpLGY9MHxJbyhsLGMsZixwLG0sTSwwfGFbdz4+Ml0sbHQsaywyKSxBPU0sdz1HZSxNPTE7YnJlYWt9aWYoK2VvKCsoK19bamU+PjNdLStfW3ArKDU2KihEPTB8YVtldD4+Ml0pfDApKzI0Pj4zXSkpPD0xZS03JiYrZW8oKygrX1tIZT4+M10tK19b''@;'; put 'put ''cCsoNTYqRHwwKSsxNj4+M10pKTw9MWUtNyl7aWYoUj0wfGFbbSsoNzIqcnR8MCkrND4+Ml0sRD0wfGFbcCsoNTYqRHwwKSs0ND4+Ml0sMT09KDB8TSkmKDB8cnQpPT0oMHxiKSl7TT0wfHZzKEEsRCxSKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGx0LGssMiksZj0wfElvKGwsYyxm''@;'; put 'put ''LHAsbSxNLDB8YVtHZT4+Ml0sbHQsaywxKSxmPTB8SW8obCxjLGYscCxtLE0sMHxhW0xlPj4yXSxsdCxrLDIpLEE9TSx3PW0rKDcyKmx0fDApKzUyfDAsTT0xO2JyZWFrfU09MHx2cyhBLFIsRCksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVtMZT4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxt''@;'; put 'put ''LEEsMHxhW0dlPj4yXSxsdCxrLDEpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbbSsoNzIqbHR8MCkrNTI+PjJdLGx0LGssMSksQT1NLE09MjticmVha31pZihSPTB8YVttKyg3MipsdHwwKSs0Pj4yXSxEPTB8YVttKyg3MipydHwwKSs0Pj4yXSwxPT0oMHxNKSYoMHxiZSk9PSgwfGIpKXtNPTB8''@;'; put 'put ''dnMoQSxELFIpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbTGU+PjJdLGx0LGssMiksZj0wfElvKGwsYyxmLHAsbSxNLDB8YVttKyg3MipsdHwwKSs1Mj4+Ml0sbHQsaywxKSxmPTB8SW8obCxjLGYscCxtLE0sMHxhW0dlPj4yXSxsdCxrLDEpLEE9TSxNPTI7YnJlYWt9TT0wfHZzKEEsUixEKSxm''@;'; put 'put ''PTB8SW8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGx0LGssMiksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVtHZT4+Ml0sbHQsaywxKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW20rKDcyKmx0fDApKzUyPj4yXSxsdCxrLDEpLEE9TSx3PUxlLE09MjticmVha319ZWxzZSBpZighRClicmVhayBlO2lm''@;'; put 'put ''KCgwfG1lKT4wJiYoMHwoWnQ9MHxhWyhFdD1tKyg3MipsdHwwKSs1MnwwKT4+Ml0pKT4wKXtpZigrZW8oKygrX1tPZT4+M10tK19bcCsoNTYqKFI9MHxhW2V0Pj4yXSl8MCkrOD4+M10pKTw9MWUtNyYmK2VvKCsoK19bQmU+PjNdLStfW3ArKDU2KlJ8MCk+PjNdKSk8PTFlLTcpe2lmKEQ9MHxh''@;'; put 'put ''W20rKDcyKlp0fDApPj4yXSwyPT0oMHxNKSYoMHxtZSk9PSgwfGIpKXtNPTB8dnMoQSxELFIpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbR2U+PjJdLGx0LGssMSksZj0wfElvKGwsYyxmLHAsbSxNLDB8YVt3Pj4yXSxsdCxrLDIpLGY9MHxJbyhsLGMsZixwLG0sTSwwfGFbbSsoNzIqbHR8MCkr''@;'; put 'put ''NDQ+PjJdLGx0LGssMiksQT1NLHc9RXQsTT0xO2JyZWFrfU09MHx2cyhBLFIsRCksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVttKyg3MipsdHwwKSs0ND4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW0V0Pj4yXSxsdCxrLDEpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbdz4+Ml0s''@;'; put 'put ''bHQsaywyKSxBPU0sdz1HZSxNPTE7YnJlYWt9aWYoRD0wfGFbbSsoNzIqWnR8MCk+PjJdLFI9MHxhW3ArKDU2KigwfGFbbSsoNzIqbHR8MCkrND4+Ml0pfDApKzQ0Pj4yXSwyPT0oMHxNKSYoMHxadCk9PSgwfGIpKXtNPTB8dnMoQSxSLEQpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbRXQ+PjJd''@;'; put 'put ''LGx0LGssMSksZj0wfElvKGwsYyxmLHAsbSxNLDB8YVttKyg3MipsdHwwKSs0ND4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxtLE0sMHxhW3c+PjJdLGx0LGssMiksQT1NLHc9R2UsTT0xO2JyZWFrfU09MHx2cyhBLEQsUiksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxsdCxrLDIp''@;'; put 'put ''LGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbR2U+PjJdLGx0LGssMSksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVttKyg3MipsdHwwKSs0ND4+Ml0sbHQsaywyKSxBPU0sdz1FdCxNPTE7YnJlYWt9aWYoK2VvKCsoKEc9K19bT2U+PjNdKS0rX1twKyg1NiooUj0wfGFbZXQ+PjJdKXwwKSs4Pj4zXSkp''@;'; put 'put ''PD0xZS03JiYrZW8oKygrX1tCZT4+M10tK19bcCsoNTYqUnwwKT4+M10pKTw9MWUtNyYmK2VvKCsoK19bamU+PjNdLStfW3ArKDU2Kih3dD0wfGFbbSsoNzIqbHR8MCkrND4+Ml0pfDApKzg+PjNdKSk8PTFlLTcmJitlbygrKCtfW0hlPj4zXS0rX1twKyg1Nip3dHwwKT4+M10pKTw9MWUtNyl7''@;'; put 'put ''aWYoMT09KDB8TSkpe009MHx2cyhBLFIsd3QpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbdz4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW20rKDcyKmx0fDApKzQ0Pj4yXSxsdCxrLDIpLGY9MHxJbyhsLGMsZixwLG0sTSwwfGFbbSsoNzIqbHR8MCkrNTI+PjJdLGx0LGssMSks''@;'; put 'put ''QT1NLHc9R2UsTT0xO2JyZWFrfU09MHx2cyhBLHd0LFIpLGY9MHxJbyhsLGMsZixwLG0sQSwwfGFbbSsoNzIqbHR8MCkrNTI+PjJdLGx0LGssMSksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVtHZT4+Ml0sbHQsaywxKSxmPTB8SW8obCxjLGYscCxtLE0sMHxhW3c+PjJdLGx0LGssMiksQT1NLHc9''@;'; put 'put ''bSsoNzIqbHR8MCkrNDR8MCxNPTI7YnJlYWt9aWYoK2VvKCsoRy0rX1twKyg1NiooYj0wfGFbbSsoNzIqbHR8MCkrND4+Ml0pfDApKzI0Pj4zXSkpPD0xZS03JiYrZW8oKygrX1tCZT4+M10tK19bcCsoNTYqYnwwKSsxNj4+M10pKTw9MWUtNyYmK2VvKCsoK19bamU+PjNdLStfW3ArKDU2KlJ8''@;'; put 'put ''MCkrMjQ+PjNdKSk8PTFlLTcmJitlbygrKCtfW0hlPj4zXS0rX1twKyg1NipSfDApKzE2Pj4zXSkpPD0xZS03KXtpZihEPTB8YVtwKyg1NipifDApKzQ0Pj4yXSxiPTB8YVtwKyg1NipSfDApKzQ0Pj4yXSwxPT0oMHxNKSl7TT0wfHZzKEEsYixEKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW3c+''@;'; put 'put ''PjJdLGx0LGssMiksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVttKyg3MipsdHwwKSs0ND4+Ml0sbHQsaywyKSxmPTB8SW8obCxjLGYscCxtLE0sMHxhW20rKDcyKmx0fDApKzUyPj4yXSxsdCxrLDEpLEE9TSx3PUdlLE09MTticmVha31NPTB8dnMoQSxELGIpLGY9MHxJbyhsLGMsZixwLG0sQSww''@;'; put 'put ''fGFbbSsoNzIqbHR8MCkrNTI+PjJdLGx0LGssMSksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVtHZT4+Ml0sbHQsaywxKSxmPTB8SW8obCxjLGYscCxtLE0sMHxhW3c+PjJdLGx0LGssMiksQT1NLHc9bSsoNzIqbHR8MCkrNDR8MCxNPTI7YnJlYWt9Zj0wfElvKGwsYyxmLHAsbSxBLHJ0LGx0LGss''@;'; put 'put ''MiksZj0wfElvKGwsYyxmLHAsbSxBLDB8YVtHZT4+Ml0sbHQsaywxKSxmPTB8SW8obCxjLGYscCxtLEEsMHxhW20rKDcyKmx0fDApKzQ0Pj4yXSxsdCxrLDIpLHc9bSsoNzIqbHR8MCkrNTJ8MCxNPTF9fXdoaWxlKDApO2I9bHQsbHQ9MHxhW3c+PjJdfXJldHVybiAwfGZ9ZnVuY3Rpb24gdnMo''@;'; put 'put ''bCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwLG0sQSx3LE0sRCxLLHBlLGI9MCxrPTAsUj0wLEc9MCxtZT0wO3JldHVybiBtPW9lLG9lPW9lKzE2fDAsbWU9bSs0fDAsYj1tLGFbNDczOTJdPXA9MSsoMHxhWzQ3MzkyXSl8MCxEPTB8YVs0NzM4OV0sZnVuY3Rpb24gJGIobCxjLGYscCl7Znw9''@;'; put 'put ''MCxwfD0wO3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtmb3IoUj0oRD0wfGFbNDczODldKSsoNTYqKGx8PTApfDApfDAsRz1EKyg1NiooY3w9MCl8MCl8MCxtPTAsQT0tNCxiPTA7NCE9KDB8Yik7KSgwfCh3PTB8YVtEKyg1NipsfDApKzE2KyhiPDwyKT4+Ml0pKT49MSYmKGs9''@;'; put 'put ''K1dFKFIsRCsoNTYqd3wwKXwwLEcpKT5BJiYobT1iLEE9ayksYj1iKzF8MDtmb3IoYVtmPj4yXT1tLG09MCxiPTAsQT0tNDs0IT0oMHxiKTspKDB8KHc9MHxhW0QrKDU2KmN8MCkrMTYrKGI8PDIpPj4yXSkpPj0xJiYoTT0rV0UoRyxEKyg1Nip3fDApfDAsUikpPkEmJihtPWIsQT1NKSxiPWIr''@;'; put 'put ''MXwwO2FbcD4+Ml09bX0oYyxmLG1lLGIpLHc9MHxhW0QrKDU2KmN8MCkrMzIrKChtZT0wfGFbbWU+PjJdKTw8Mik+PjJdLGI9MHxhW0QrKDU2KmZ8MCkrMzIrKGFbYj4+Ml08PDIpPj4yXSxBPTErKFI9MHxhWzQ3MzkxXSl8MCxhWzQ3MzkxXT1SPVIrMnwwLGFbKHBlPTB8YVs0NzM4OF0pKyhB''@;'; put 'put ''PDw0KT4+Ml09YyxhW3BlKyhSPDw0KT4+Ml09ZixhWyhLPXBlKyhBPDw0KSs0fDApPj4yXT1hWyhHPXBlKyh3PDw0KSs0fDApPj4yXSxhW3BlKyhhW0c+PjJdPDw0KSs4Pj4yXT1BLGFbcGUrKEE8PDQpKzg+PjJdPVIsYVtwZSsoUjw8NCkrND4+Ml09QSxhW3BlKyhSPDw0KSs4Pj4yXT1hWyhr''@;'; put 'put ''PXBlKyhiPDw0KSs4fDApPj4yXSxhW3BlKyhhW2s+PjJdPDw0KSs0Pj4yXT1SLGFbRz4+Ml09YixhW2s+PjJdPXcsRz0wfGFbKGs9RCsoNTYqY3wwKSs0OHwwKT4+Ml0sTT0wfGFbKGI9RCsoNTYqZnwwKSs0OHwwKT4+Ml0sYVtEKyg1NipjfDApKzE2KyhtZTw8Mik+PjJdPWYsYVtEKyg1Nipj''@;'; put 'put ''fDApKzMyKyhHPDwyKT4+Ml09QSxhW0QrKDU2KmN8MCkrMTYrKEc8PDIpPj4yXT1hW3BlKyhhW0s+PjJdPDw0KT4+Ml0sYVtEKyg1NipmfDApKzMyKyhNPDwyKT4+Ml09UixhW0QrKDU2KmZ8MCkrMTYrKE08PDIpPj4yXT1jLGFbaz4+Ml09MSsoMHxhW2s+PjJdKSxhW2I+PjJdPTErKDB8YVti''@;'; put 'put ''Pj4yXSksYVsoZj0wfGFbNDczOTBdKSsobDw8Mik+PjJdPXcsYVtmKyhwPDwyKT4+Ml09QSxvZT1tLDB8cH1mdW5jdGlvbiBXRShsLGMsZil7dmFyIG0sQSxiLHA9MCx3PTA7cmV0dXJuIGI9K19bKGN8PTApPj4zXS0odz0rX1sobHw9MCk+PjNdKSxBPStfW2MrOD4+M10tKHA9K19bbCs4Pj4z''@;'; put 'put ''XSksbT0ocD0rX1s4KyhmfD0wKT4+M10tcCkqQSsodz0rX1tmPj4zXS13KSpiLCsocD1wKmItdypBPj0wP20vKCtGMCgrKHAqcCt3KncpKSorRjAoKyhBKkErYipiKSkpOi1tLygrRjAoKyhwKnArdyp3KSkqK0YwKCsoQSpBK2IqYikpKS0yKX1mdW5jdGlvbiBKZihsLGMsZixwKXtjfD0wLGZ8''@;'; put 'put ''PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wLE09MDthWyhwfD0wKT4+Ml09YVsobHw9MCk+PjJdLGFbcCs0Pj4yXT1hW2wrND4+Ml0sYVtwKzg+PjJdPWFbbCs4Pj4yXSxhW3ArMTI+PjJdPWFbbCsxMj4+Ml0sYVsodz1wKzMyfDApPj4yXT1hWyhiPWwrMTZ8MCk+PjJdLGFbdys0Pj4yXT1hW2Ir''@;'; put 'put ''ND4+Ml0sYVt3Kzg+PjJdPWFbYis4Pj4yXSxhW3crMTI+PjJdPWFbYisxMj4+Ml0sZj8obT1sKzI0fDAsQT1sLHc9bCs4fDAsZj1iKToobT1sKzh8MCxBPWIsdz1sKzI0fDAsZj1sKSxrPStfW0E+PjNdLE09K19bdz4+M10sX1twKzE2Pj4zXT0rX1tmPj4zXSxfW3ArMjQ+PjNdPU0sX1twKzQ4''@;'; put 'put ''Pj4zXT1rLF9bcCs1Nj4+M109K19bbT4+M107ZTpkb3tpZigwfGMpZm9yKGY9MDs7KXtpZig0PT0oMHxmKSlicmVhayBlO009K19bKGI9cCsoZjw8NCkrOHwwKT4+M10sX1tiPj4zXT0rX1soYz1wKyhmPDw0KXwwKT4+M10sX1tjPj4zXT0tTSxmPWYrMXwwfX13aGlsZSgwKX1mdW5jdGlvbiBK''@;'; put 'put ''OShsLGMsZil7Znw9MDt2YXIgdyxiLGssTSxELHA9MCxtPTAsQT0wLFI9MCxHPTA7Zm9yKGI9MSsoY3w9MCl8MCxrPWMrMnwwLE09KGx8PTApKyg1NipjfDApKzQ0fDAsRD1sKyg1Nioodz1jKzN8MCl8MCkrNDR8MCxwPTAsbT1jOyEoKDB8bSk+KDB8dykpOyl7ZG97aWYoKDB8bSkhPSgwfGMp''@;'; put 'put ''KXtpZigoMHxtKT09KDB8dykpe2FbRD4+Ml09YyxBPWs7YnJlYWt9YVtsKyg1NiptfDApKzQ0Pj4yXT1tKzEsQT1tKy0xfDA7YnJlYWt9YVtNPj4yXT1iLEE9d313aGlsZSgwKTthW2wrKDU2Km18MCkrNDg+PjJdPUEsYVtsKyg1NiptfDApKzMyPj4yXT0wLGFbKEc9bCsoNTYqbXwwKXwwKT4+''@;'; put 'put ''Ml09YVsoUj1mKyhwPDw0KXwwKT4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4yXSxhW0crOD4+Ml09YVtSKzg+PjJdLGFbRysxMj4+Ml09YVtSKzEyPj4yXSxtcChsKyg1NipBfDApKzE2fDAsMHxSLDE2KSxwPXArMXwwLG09bSsxfDB9cmV0dXJuIGMrNHwwfWZ1bmN0aW9uIHFiKGwsYyxmLHAsbSl7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTAsbXw9MDt2YXIgayxNLEE9MCx3PTAsYj0wO2ZvcihhWzQ3MzkzXT0ocHw9MCk8PDEsYVs0NzM5NF09cCxNPTB8bXIoODAqcHwwKSxhWzQ3Mzk1XT0xLGFbNDczOTZdPTEscjIoMHxtLDAsNzIqcHwwKSxBPTB8ZnVuY3Rpb24gQ0IobCxjLGYscCl7bHw9MCxjfD0wLGZ8''@;'; put 'put ''PTAscHw9MDt2YXIgbSxBLHcsRCxSLEcsbWUsT2UsYj0wLGs9MCxNPTAsSz0wLHBlPTAsYmU9MDtyZXR1cm4gbT0wfHZmKCksYVtwKyg0MCptfDApPj4yXT0yLGZ1bmN0aW9uIFVFKGwsYyxmKXtsfD0wO3ZhciBwLG07cD0rX1s4KyhjfD0wKT4+M10sbT0rX1s4KyhmfD0wKT4+M107ZG97aWYo''@;'; put 'put ''IShwPm0rMWUtNykpe2lmKCEoK2VvKCsocC1tKSk8PTFlLTcpKXthW2w+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXTticmVha31pZigrX1tjPj4zXT4rX1tmPj4zXSsxZS03KXthW2w+PjJdPWFbYz4+Ml0s''@;'; put 'put ''YVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXTticmVha31hW2w+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXTticmVha31hW2w+PjJdPWFbYz4+''@;'; put 'put ''Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXX13aGlsZSgwKX0oYmU9cCsoNDAqbXwwKSs4fDAsaz1jKyg1NipsfDApfDAsTT1jKyg1NipsfDApKzE2fDApLFI9MHx2ZigpLGFbcCsoNDAqbXwwKSszNj4+Ml09UixhW3ArKDQw''@;'; put 'put ''KlJ8MCk+PjJdPTMsYVtwKyg0MCpSfDApKzI4Pj4yXT1tLGI9MHx2ZigpLGFbcCsoNDAqbXwwKSszMj4+Ml09YixhW3ArKDQwKmJ8MCk+PjJdPTIsZnVuY3Rpb24gUUUobCxjLGYpe2x8PTA7dmFyIHAsbTtwPStfWzgrKGN8PTApPj4zXSxtPStfWzgrKGZ8PTApPj4zXTtkb3tpZighKHA8bSst''@;'; put 'put ''MWUtNykpe2lmKCEoK2VvKCsocC1tKSk8PTFlLTcpKXthW2w+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXTticmVha31pZigrX1tjPj4zXTwrX1tmPj4zXSl7YVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1h''@;'; put 'put ''W2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml07YnJlYWt9YVtsPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml07YnJlYWt9YVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4y''@;'; put 'put ''XT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19d2hpbGUoMCl9KG1lPXArKDQwKmJ8MCkrOHwwLGssTSksYVtwKyg0MCpifDApKzI4Pj4yXT1tLE09MHx2ZigpLGFbcCsoNDAqYnwwKSszMj4+Ml09TSxhW3ArKDQwKk18MCk+PjJdPTMsYVtwKyg0''@;'; put 'put ''MCpNfDApKzI4Pj4yXT1iLGs9MHx2ZigpLGFbcCsoNDAqYnwwKSszNj4+Ml09ayxhW3ArKDQwKmt8MCk+PjJdPTEsYVtwKyg0MCprfDApKzQ+PjJdPWwsYVtwKyg0MCprfDApKzI4Pj4yXT1iLGI9MHx2ZigpLGFbcCsoNDAqa3wwKSszMj4+Ml09YixhW3ArKDQwKmJ8MCk+PjJdPTMsYVtwKyg0''@;'; put 'put ''MCpifDApKzI4Pj4yXT1rLEE9MHx2ZigpLGFbcCsoNDAqa3wwKSszNj4+Ml09QSxhW3ArKDQwKkF8MCk+PjJdPTMsYVtwKyg0MCpBfDApKzI4Pj4yXT1rLGs9MHxwNihmKSx3PTB8cDYoZiksRD0wfHA2KGYpLEc9MHxwNihmKSxLPWYrKDcyKmt8MCkrOHwwLHBlPWYrKDcyKnd8MCkrOHwwLGFb''@;'; put 'put ''KE9lPWYrKDcyKkd8MCkrMjR8MCk+PjJdPWFbYmU+PjJdLGFbT2UrND4+Ml09YVtiZSs0Pj4yXSxhW09lKzg+PjJdPWFbYmUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtiZSsxMj4+Ml0sbXAoMHxwZSwwfGJlLDE2KSxhW0s+PjJdPWFbcGU+PjJdLGFbSys0Pj4yXT1hW3BlKzQ+PjJdLGFbSys4Pj4y''@;'; put 'put ''XT1hW3BlKzg+PjJdLGFbSysxMj4+Ml09YVtwZSsxMj4+Ml0sSz1mKyg3MiprfDApKzI0fDAscGU9ZisoNzIqd3wwKSsyNHwwLGFbKGJlPWYrKDcyKkR8MCkrOHwwKT4+Ml09YVttZT4+Ml0sYVtiZSs0Pj4yXT1hW21lKzQ+PjJdLGFbYmUrOD4+Ml09YVttZSs4Pj4yXSxhW2JlKzEyPj4yXT1h''@;'; put 'put ''W21lKzEyPj4yXSxtcCgwfHBlLDB8bWUsMTYpLGFbSz4+Ml09YVtwZT4+Ml0sYVtLKzQ+PjJdPWFbcGUrND4+Ml0sYVtLKzg+PjJdPWFbcGUrOD4+Ml0sYVtLKzEyPj4yXT1hW3BlKzEyPj4yXSxfW2YrKDcyKkd8MCkrMTY+PjNdPTEwNzM3NDE4MjQsX1tmKyg3MipHfDApKzg+PjNdPTEwNzM3''@;'; put 'put ''NDE4MjQsX1tmKyg3MipEfDApKzMyPj4zXT0tMTA3Mzc0MTgyNCxfW2YrKDcyKkR8MCkrMjQ+PjNdPS0xMDczNzQxODI0LGFbZisoNzIqd3wwKT4+Ml09bCxhW2YrKDcyKmt8MCkrND4+Ml09bCxhW2YrKDcyKnd8MCkrNDA+PjJdPUcsYVtmKyg3MiprfDApKzQwPj4yXT1HLGFbZisoNzIqd3ww''@;'; put 'put ''KSs0OD4+Ml09RCxhW2YrKDcyKmt8MCkrNDg+PjJdPUQsYVtmKyg3MipEfDApKzQwPj4yXT1rLGFbZisoNzIqR3wwKSs0OD4+Ml09ayxhW2YrKDcyKkR8MCkrNDQ+PjJdPXcsYVtmKyg3MipHfDApKzUyPj4yXT13LGFbZisoNzIqa3wwKSs1Nj4+Ml09YixhW2YrKDcyKnd8MCkrNTY+PjJdPUEs''@;'; put 'put ''YVtmKyg3MipEfDApKzU2Pj4yXT1NLGFbZisoNzIqR3wwKSs1Nj4+Ml09UixhW2YrKDcyKnd8MCkrNjg+PjJdPTEsYVtmKyg3MiprfDApKzY4Pj4yXT0xLGFbZisoNzIqR3wwKSs2OD4+Ml09MSxhW2YrKDcyKkR8MCkrNjg+PjJdPTEsYVtwKyg0MCpSfDApKzI0Pj4yXT1HLGFbcCsoNDAqTXww''@;'; put 'put ''KSsyND4+Ml09RCxhW3ArKDQwKmJ8MCkrMjQ+PjJdPWssYVtwKyg0MCpBfDApKzI0Pj4yXT13LGFbYysoNTYqbHwwKSszMj4+Ml09MSwwfG19KDB8YVtmKzQ+PjJdLGMsbSxNKSxwPTE7ISgoMHxwKT4oMHxsKSk7KWFbYysoNTYqcHwwKSs0MD4+Ml09QSxhW2MrKDU2KnB8MCkrMzY+PjJdPUEs''@;'; put 'put ''cD1wKzF8MDtmb3Ioaz0wfGZ1bmN0aW9uIGg2KGwpe3ZhciBjPTA7Zm9yKGM9KygwfChsfD0wKSksbD0wO2M+PTE7KWM9K3AkKGMpLGw9bCsxfDA7cmV0dXJuIGwrLTF8MH0obCksQT0yLGI9MTshKCgwfGIpPigwfGspKTspe2ZvcihwPTB8TW0obCxiKy0xfDApLHc9MHxNbShsLGIpOzspe2lm''@;'; put 'put ''KCgwfHApPj0oMHx3KSl7cD0xO2JyZWFrfWVfKDB8YVtmKyhBPDwyKT4+Ml0sYyxtLE0pLHA9cCsxfDAsQT1BKzF8MH1mb3IoOyEoKDB8cCk+KDB8bCkpOylrQihwLGMsbSxNKSxwPXArMXwwO2I9YisxfDB9Zm9yKHA9MHxNbShsLGspOyEoKDB8cCk+PSgwfGwpKTspZV8oMHxhW2YrKEE8PDIp''@;'; put 'put ''Pj4yXSxjLG0sTSksQT1BKzF8MCxwPXArMXwwO3JldHVybiBIdChNKSwwfGFbNDczOTVdfWZ1bmN0aW9uIE1tKGwsYyl7Y3w9MDt2YXIgcCxmPTA7Zm9yKGY9cD0rKDB8KGx8PTApKSxsPTA7ISgoMHxsKT49KDB8YykpOylmPStwJChmKSxsPWwrMXwwO3JldHVybiAwfH5+K3dsKCtwL2YpfWZ1''@;'; put 'put ''bmN0aW9uIGVfKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgRXQsQ3IscXIsTHIsYTAsRmksbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTAsa3Q9MCxhdD0w''@;'; put 'put ''LFp0PTAsdXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTAsTnI9MCxrcj0wLGNyPTAsUGk9MDtGaT1vZSxvZT1vZSs5NnwwLG09RmkrMTZ8MCxxcj1GaSxrPShjfD0wKSsoNTYqKGx8PTApfDApfDAscGU9NTYrKG1lPUNyPUZpKzMyfDApfDA7ZG97YVttZT4+Ml09YVtrPj4yXSxtZT1tZSs0''@;'; put 'put ''fDAsaz1rKzR8MH13aGlsZSgoMHxtZSk8KDB8cGUpKTtMcj1DcisxNnwwLHc9K19bKGEwPUNyKzI0fDApPj4zXSxiPStfWyhFdD1Dcis4fDApPj4zXTtkb3tpZih3PmIrMWUtNylhdD00O2Vsc2V7aWYoISh3PGIrLTFlLTcpJiYrX1tMcj4+M10+K19bQ3I+PjNdKXthdD00O2JyZWFrfWF0PTA9''@;'; put 'put ''PSgwfFg5KGwsYywxKSksbT0wfGFbQ3IrMzY+PjJdLGF0PyhEPTAsYXQ9Nyk6KG09MHxDZChDcixMcixtLGMscCksYXQ9MjApfX13aGlsZSgwKTtpZig0PT0oMHxhdCkmJihhW20+PjJdPWFbQ3I+PjJdLGFbbSs0Pj4yXT1hW0NyKzQ+PjJdLGFbbSs4Pj4yXT1hW0NyKzg+PjJdLGFbbSsxMj4+''@;'; put 'put ''Ml09YVtDcisxMj4+Ml0sYVtDcj4+Ml09YVtMcj4+Ml0sYVtDcis0Pj4yXT1hW0xyKzQ+PjJdLGFbQ3IrOD4+Ml09YVtMcis4Pj4yXSxhW0NyKzEyPj4yXT1hW0xyKzEyPj4yXSxhW0xyPj4yXT1hW20+PjJdLGFbTHIrND4+Ml09YVttKzQ+PjJdLGFbTHIrOD4+Ml09YVttKzg+PjJdLGFbTHIr''@;'; put 'put ''MTI+PjJdPWFbbSsxMj4+Ml0sa3Q9MHxhWyhNdD1DciszNnwwKT4+Ml0sYVtNdD4+Ml09bT0wfGFbKGF0PUNyKzQwfDApPj4yXSxhW2F0Pj4yXT1rdCwwfFg5KGwsYywyKT8obT0wfENkKENyLExyLG0sYyxwKSxhdD0xOSk6KEQ9MSxhdD03KSksNz09KDB8YXQpKXtNPTB8Q2QoQ3IsTHIsbSxj''@;'; put 'put ''LHApLG09MHxwNihmKSxhW2YrKDcyKm18MCkrNjg+PjJdPTEsaz1mKyg3MipNfDApfDAscGU9NzIrKG1lPWYrKDcyKm18MCl8MCl8MDtkb3thW21lPj4yXT1hW2s+PjJdLG1lPW1lKzR8MCxrPWsrNHwwfXdoaWxlKCgwfG1lKTwoMHxwZSkpO19bZisoNzIqbXwwKSsxNj4+M109Sz0rX1tFdD4+''@;'; put 'put ''M10sX1tmKyg3MipNfDApKzMyPj4zXT1LLF9bZisoNzIqbXwwKSs4Pj4zXT1LPStfW0NyPj4zXSxfW2YrKDcyKk18MCkrMjQ+PjNdPUssYVtmKyg3MipNfDApKzQ4Pj4yXT1tLGFbZisoNzIqTXwwKSs1Mj4+Ml09MCxhW2YrKDcyKm18MCkrNDA+PjJdPU0sYVtmKyg3MiptfDApKzQ0Pj4yXT0w''@;'; put 'put ''LCgwfChBPTB8YVtmKyg3MiptfDApKzQ4Pj4yXSkpPjAmJigoMHxhWyhrPWYrKDcyKkF8MCkrNDB8MCk+PjJdKT09KDB8TSkmJihhW2s+PjJdPW0pLCgwfGFbKEE9ZisoNzIqQXwwKSs0NHwwKT4+Ml0pPT0oMHxNKSYmKGFbQT4+Ml09bSkpLCgwfChBPTB8YVtmKyg3MiptfDApKzUyPj4yXSkp''@;'; put 'put ''PjAmJigoMHxhWyhrPWYrKDcyKkF8MCkrNDB8MCk+PjJdKT09KDB8TSkmJihhW2s+PjJdPW0pLCgwfGFbKEE9ZisoNzIqQXwwKSs0NHwwKT4+Ml0pPT0oMHxNKSYmKGFbQT4+Ml09bSkpLE10PTB8dmYoKSxhdD0wfHZmKCksYVtwKyg0MCoobHQ9MHxhWyhrdD1mKyg3MipNfDApKzU2fDApPj4y''@;'; put 'put ''XSl8MCk+PjJdPTIsYVsoR2U9cCsoNDAqbHR8MCkrOHwwKT4+Ml09YVtDcj4+Ml0sYVtHZSs0Pj4yXT1hW0NyKzQ+PjJdLGFbR2UrOD4+Ml09YVtDcis4Pj4yXSxhW0dlKzEyPj4yXT1hW0NyKzEyPj4yXSxhW3ArKDQwKmx0fDApKzQ+PjJdPWwsYVtwKyg0MCpsdHwwKSszMj4+Ml09YXQsYVtw''@;'; put 'put ''Kyg0MCpsdHwwKSszNj4+Ml09TXQsYVtwKyg0MCpNdHwwKT4+Ml09MyxhW3ArKDQwKk10fDApKzI0Pj4yXT1NLGFbcCsoNDAqTXR8MCkrMjg+PjJdPWx0LGFbcCsoNDAqYXR8MCk+PjJdPTMsYVtwKyg0MCphdHwwKSsyND4+Ml09bSxhW3ArKDQwKmF0fDApKzI4Pj4yXT1sdCxhW2t0Pj4yXT1N''@;'; put 'put ''dCxhW2YrKDcyKm18MCkrNTY+PjJdPWF0LGF0PUQ/MTk6MjB9aWYoMTk9PSgwfGF0KT8wfFg5KGwsYywxKT8oQT0xLGF0PTMyKTooQT0xLGF0PTIxKToyMD09KDB8YXQpJiYoMHxYOShsLGMsMik/KEE9MCxhdD0zMik6KEE9MCxhdD0yMSkpLDIxPT0oMHxhdCkpe1I9MHxDZChMcixDciwwfGFb''@;'; put 'put ''Q3IrNDA+PjJdLGMscCksRD0wfHA2KGYpLGFbZisoNzIqRHwwKSs2OD4+Ml09MSxrPWYrKDcyKlJ8MCl8MCxwZT03MisobWU9ZisoNzIqRHwwKXwwKXwwO2Rve2FbbWU+PjJdPWFbaz4+Ml0sbWU9bWUrNHwwLGs9ays0fDB9d2hpbGUoKDB8bWUpPCgwfHBlKSk7X1tmKyg3MipEfDApKzE2Pj4z''@;'; put 'put ''XT1LPStfW2EwPj4zXSxfW2YrKDcyKlJ8MCkrMzI+PjNdPUssX1tmKyg3MipEfDApKzg+PjNdPUs9K19bTHI+PjNdLF9bZisoNzIqUnwwKSsyND4+M109SyxhW2YrKDcyKlJ8MCkrNDg+PjJdPUQsYVtmKyg3MipSfDApKzUyPj4yXT0wLGFbZisoNzIqRHwwKSs0MD4+Ml09UixhW2YrKDcyKkR8''@;'; put 'put ''MCkrNDQ+PjJdPTAsKDB8KGs9MHxhW2YrKDcyKkR8MCkrNDg+PjJdKSk+MCYmKCgwfGFbKE09ZisoNzIqa3wwKSs0MHwwKT4+Ml0pPT0oMHxSKSYmKGFbTT4+Ml09RCksKDB8YVsoaz1mKyg3MiprfDApKzQ0fDApPj4yXSk9PSgwfFIpJiYoYVtrPj4yXT1EKSksKDB8KGs9MHxhW2YrKDcyKkR8''@;'; put 'put ''MCkrNTI+PjJdKSk+MCYmKCgwfGFbKE09ZisoNzIqa3wwKSs0MHwwKT4+Ml0pPT0oMHxSKSYmKGFbTT4+Ml09RCksKDB8YVsoaz1mKyg3MiprfDApKzQ0fDApPj4yXSk9PSgwfFIpJiYoYVtrPj4yXT1EKSksbHQ9MHx2ZigpLGt0PTB8dmYoKSxhW3ArKDQwKihHZT0wfGFbKE10PWYrKDcyKlJ8''@;'; put 'put ''MCkrNTZ8MCk+PjJdKXwwKT4+Ml09MixhWyhydD1wKyg0MCpHZXwwKSs4fDApPj4yXT1hW0xyPj4yXSxhW3J0KzQ+PjJdPWFbTHIrND4+Ml0sYVtydCs4Pj4yXT1hW0xyKzg+PjJdLGFbcnQrMTI+PjJdPWFbTHIrMTI+PjJdLGFbcCsoNDAqR2V8MCkrND4+Ml09bCxhW3ArKDQwKkdlfDApKzMy''@;'; put 'put ''Pj4yXT1rdCxhW3ArKDQwKkdlfDApKzM2Pj4yXT1sdCxhW3ArKDQwKmx0fDApPj4yXT0zLGFbcCsoNDAqbHR8MCkrMjQ+PjJdPVIsYVtwKyg0MCpsdHwwKSsyOD4+Ml09R2UsYVtwKyg0MCprdHwwKT4+Ml09MyxhW3ArKDQwKmt0fDApKzI0Pj4yXT1ELGFbcCsoNDAqa3R8MCkrMjg+PjJdPUdl''@;'; put 'put ''LGFbTXQ+PjJdPWx0LGFbZisoNzIqRHwwKSs1Nj4+Ml09a3Qsa3Q9bSxtPTB9ZWxzZSAzMj09KDB8YXQpJiYoa3Q9bSxSPTB8Q2QoTHIsQ3IsMHxhW0NyKzQwPj4yXSxjLHApLG09MSk7ZTpkb3tpZigoMHxrdCk+MCl7bHQ9ZisoNzIqUnwwKSsyNHwwLE10PWYrKDcyKlJ8MCkrMzJ8MCxHZT0w''@;'; put 'put ''IT0oMHxtKSxqZT1BP2MrKDU2Kmx8MCkrNDh8MDpjKyg1NipsfDApKzQ0fDAsZXQ9cXIrOHwwLEE9MCxtPTAsSGU9a3Q7dDpmb3IoOzspe2lmKGs9ZisoNzIqSGV8MCl8MCwhKDB8WUUoTGU9ZisoNzIqSGV8MCkrMjR8MCxsdCkpKWJyZWFrIGU7T2U9MHxhWyhNPWYrKDcyKkhlfDApKzU2fDAp''@;'; put 'put ''Pj4yXSxEPTB8dmYoKSxHPTB8dmYoKSxhW3ArKDQwKk9lfDApPj4yXT0xLGFbcCsoNDAqT2V8MCkrND4+Ml09bCxhW3ArKDQwKk9lfDApKzMyPj4yXT1ELGFbcCsoNDAqT2V8MCkrMzY+PjJdPUcsYVtwKyg0MCpEfDApPj4yXT0zLGFbcCsoNDAqRHwwKSsyND4+Ml09SGUsYVtwKyg0MCpEfDAp''@;'; put 'put ''KzI4Pj4yXT1PZSxhW3ArKDQwKkd8MCk+PjJdPTMsQmU9MHxwNihmKSxhW3ArKDQwKkd8MCkrMjQ+PjJdPUJlLHJ0PWYrKDcyKkJlfDApfDAsYVtmKyg3MipCZXwwKSs2OD4+Ml09MSxhW3ArKDQwKkd8MCkrMjg+PjJdPU9lLEE9KDB8SGUpPT0oMHxrdCk/QmU6QSwrZW8oKygrX1soT2U9Ziso''@;'; put 'put ''NzIqSGV8MCkrMzJ8MCk+PjNdLStfW010Pj4zXSkpPD0xZS03JiYrZW8oKygrX1tMZT4+M10tK19bbHQ+PjNdKSk8PTFlLTcmJihtPUJlKSxwZT0obWU9cnQpKzcyfDA7ZG97YVttZT4+Ml09YVtrPj4yXSxtZT1tZSs0fDAsaz1rKzR8MH13aGlsZSgoMHxtZSk8KDB8cGUpKTthW00+PjJdPUQs''@;'; put 'put ''YVtmKyg3MipCZXwwKSs1Nj4+Ml09RyxiZT1mKyg3MipIZXwwKSs0OHwwLGs9KDB8YVsoTT1mKyg3MipIZXwwKSs1MnwwKT4+Ml0pPDE7ZG97aWYoKDB8YVtiZT4+Ml0pPDEpe2lmKGspYnJlYWsgdDtrPTB8YVsobWU9ZisoNzIqSGV8MCkrNDB8MCk+PjJdO2Rve2lmKCgwfGspPjAmJigwfChG''@;'; put 'put ''bj0wfGFbKHluPWYrKDcyKkhlfDApKzQ0fDApPj4yXSkpPjApe2lmKCgwfChrPTB8YVsocGU9ZisoNzIqSGV8MCkrNjB8MCk+PjJdKSk8PTApe2FbZisoNzIqQmV8MCkrNDA+PjJdPUZuLGFbZisoNzIqQmV8MCkrNDQ+PjJdPS0xLGFbeW4+PjJdPS0xLGFbZisoNzIqRm58MCkrNDg+PjJdPUJl''@;'; put 'put ''O2JyZWFrfTE9PSgwfGFbZisoNzIqSGV8MCkrNjQ+PjJdKT8oYVtmKyg3MipCZXwwKSs0MD4+Ml09Rm4sYVt5bj4+Ml09LTEsYVtmKyg3MipCZXwwKSs0ND4+Ml09ayxhW2YrKDcyKigwfGFbbWU+PjJdKXwwKSs0OD4+Ml09SGUsRz1CZSxEPUZuKTooYVtmKyg3MipCZXwwKSs0ND4+Ml09LTEs''@;'; put 'put ''YVsoYmU9ZisoNzIqQmV8MCkrNDB8MCk+PjJdPWFbeW4+PjJdLGFbeW4+PjJdPUQ9MHxhW21lPj4yXSxhW21lPj4yXT1rLGFbZisoNzIqa3wwKSs0OD4+Ml09SGUsRz1IZSxrPTB8YVtiZT4+Ml0pLGFbZisoNzIqRHwwKSs0OD4+Ml09RyxhW2YrKDcyKmt8MCkrNDg+PjJdPUJlLGFbZisoNzIq''@;'; put 'put ''QmV8MCkrNjA+PjJdPTAsYVtwZT4+Ml09MH1lbHNlIGF0PTc3fXdoaWxlKDApO2Rve2lmKDc3PT0oMHxhdCkpe2lmKGF0PTAsRD1mKyg3MiprfDApKzQ4fDAsaz1mKyg3MiprfDApKzUyfDAsKDB8KEc9MHxhW0Q+PjJdKSk+MCYmKDB8YVtrPj4yXSk+MCl7aWYoKDB8KGs9MHxhW2YrKDcyKkd8''@;'; put 'put ''MCkrND4+Ml0pKT4wJiYwPT0oMHxkNihrLGMsTHIpKSl7YVtmKyg3MipCZXwwKSs0ND4+Ml09LTEsYVtmKyg3MipIZXwwKSs0ND4+Ml09LTEsYVttZT4+Ml09LTEsYVtmKyg3MiooMHxhW2YrKDcyKkJlfDApKzQwPj4yXSl8MCkrNTI+PjJdPUJlO2JyZWFrfWFbZisoNzIqSGV8MCkrNDQ+PjJd''@;'; put 'put ''PS0xLGFbZisoNzIqQmV8MCkrNDQ+PjJdPS0xLGFbZisoNzIqQmV8MCkrNDA+PjJdPS0xLGFbZisoNzIqKDB8YVttZT4+Ml0pfDApKzQ4Pj4yXT1IZTticmVha31hW0Q+PjJdPUhlLGFbaz4+Ml09QmV9fXdoaWxlKDApO2lmKCtlbygrKCtfW09lPj4zXS0rX1tNdD4+M10pKTw9MWUtNyYmR2Um''@;'; put 'put ''K2VvKCsoK19bTGU+PjNdLStfW2x0Pj4zXSkpPD0xZS03KXsoMHwoaz0wfGFbamU+PjJdKSk+MCYmMCE9KDB8ZDYoayxjLENyKSk/KGFbZisoNzIqKDB8YVtNPj4yXSl8MCkrNDA+PjJdPUhlLEQ9ZisoNzIqQmV8MCkrNTJ8MCxrPUJlKTooYVtmKyg3MiooMHxhW2YrKDcyKkJlfDApKzUyPj4y''@;'; put 'put ''XSl8MCkrNDQ+PjJdPUJlLEQ9TSxrPUhlKSxhW0Q+PjJdPS0xLGFbZisoNzIqa3wwKSs0OD4+Ml09LTEsaz0wfGFbTT4+Ml07YnJlYWt9Rz1mKyg3Miooaz0wfGFbTT4+Ml0pfDApKzQ0fDAsKDB8KEQ9MHxhWyhNPWYrKDcyKmt8MCkrNDB8MCk+PjJdKSk+MCYmKE5yPSgwfEQpPT0oMHxIZSks''@;'; put 'put ''KDB8KGxyPTB8YVtHPj4yXSkpPjApJiYoYVtmKyg3MiprfDApKzYwPj4yXT1Ocj9scjpELGFbZisoNzIqa3wwKSs2ND4+Ml09TnI/MToyKSxhW00+PjJdPUhlLGFbRz4+Ml09QmV9ZWxzZXtpZighayl7K2VvKCsoSz0odz0rX1tPZT4+M10pLShiPStfW0V0Pj4zXSkpKTw9MWUtNz9tZT0rX1tM''@;'; put 'put ''ZT4+M10+K19bQ3I+PjNdOihfW2V0Pj4zXT13LF9bcXI+PjNdPUsvKCtfW2EwPj4zXS1iKSooK19bTHI+PjNdLSh3PStfW0NyPj4zXSkpK3csbWU9MCE9KDB8RUcocXIsTGUpKSksaz0wfGFbKHBlPWYrKDcyKkhlfDApKzQwfDApPj4yXTtkb3tpZigoMHxrKT4wJiYoMHwoY3I9MHxhWyhrcj1m''@;'; put 'put ''Kyg3MipIZXwwKSs0NHwwKT4+Ml0pKT4wKXtpZigoMHwoaz0wfGFbKEc9ZisoNzIqSGV8MCkrNjB8MCk+PjJdKSk8PTApe2FbZisoNzIqQmV8MCkrNDA+PjJdPWNyLGFbZisoNzIqQmV8MCkrNDQ+PjJdPS0xLGFba3I+PjJdPS0xLGFbZisoNzIqY3J8MCkrNDg+PjJdPUJlO2JyZWFrfTE9PSgw''@;'; put 'put ''fGFbZisoNzIqSGV8MCkrNjQ+PjJdKT8oYVtmKyg3MipCZXwwKSs0MD4+Ml09Y3IsYVtrcj4+Ml09LTEsYVtmKyg3MipCZXwwKSs0ND4+Ml09ayxhW2YrKDcyKigwfGFbcGU+PjJdKXwwKSs0OD4+Ml09SGUsRD1CZSxNPWNyKTooYVtmKyg3MipCZXwwKSs0ND4+Ml09LTEsYVsoUGk9ZisoNzIq''@;'; put 'put ''QmV8MCkrNDB8MCk+PjJdPWFba3I+PjJdLGFba3I+PjJdPU09MHxhW3BlPj4yXSxhW3BlPj4yXT1rLGFbZisoNzIqa3wwKSs0OD4+Ml09SGUsRD1IZSxrPTB8YVtQaT4+Ml0pLGFbZisoNzIqTXwwKSs0OD4+Ml09RCxhW2YrKDcyKmt8MCkrNDg+PjJdPUJlLGFbZisoNzIqQmV8MCkrNjA+PjJd''@;'; put 'put ''PTAsYVtHPj4yXT0wfWVsc2UgYXQ9MTA2fXdoaWxlKDApO2Rve2lmKDEwNj09KDB8YXQpKXtpZihhdD0wLE09ZisoNzIqa3wwKSs0OHwwLGs9ZisoNzIqa3wwKSs1MnwwLCgwfChEPTB8YVtNPj4yXSkpPjAmJigwfGFbaz4+Ml0pPjApe2lmKCgwfChrPTB8YVtmKyg3MipEfDApKzQ+PjJdKSk+''@;'; put 'put ''MCYmMD09KDB8ZDYoayxjLExyKSkpe2FbZisoNzIqQmV8MCkrNDQ+PjJdPS0xLGFbZisoNzIqSGV8MCkrNDQ+PjJdPS0xLGFbcGU+PjJdPS0xLGFbZisoNzIqKDB8YVtmKyg3MipCZXwwKSs0MD4+Ml0pfDApKzUyPj4yXT1CZTticmVha31hW2YrKDcyKkhlfDApKzQ0Pj4yXT0tMSxhW2YrKDcy''@;'; put 'put ''KkJlfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKkJlfDApKzQwPj4yXT0tMSxhW2YrKDcyKigwfGFbcGU+PjJdKXwwKSs0OD4+Ml09SGU7YnJlYWt9YVtNPj4yXT1IZSxhW2s+PjJdPUJlfX13aGlsZSgwKTsrZW8oKygrX1tPZT4+M10tK19bTXQ+PjNdKSk8PTFlLTcmJkdlJitlbygrKCtfW0xlPj4z''@;'; put 'put ''XS0rX1tsdD4+M10pKTw9MWUtNz8oYVtmKyg3Miooaz0wfGFbYmU+PjJdKXwwKSs0MD4+Ml09SGUsYVtmKyg3MiprfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKihQaT0wfGFbKGs9ZisoNzIqSGV8MCkrNTJ8MCk+PjJdKXwwKSs0MD4+Ml09QmUsYVtmKyg3MipQaXwwKSs0ND4+Ml09LTEsYVtmKyg3''@;'; put 'put ''MipCZXwwKSs0OD4+Ml09UGksYVtmKyg3MipCZXwwKSs1Mj4+Ml09LTEsYVtrPj4yXT0tMSxrPS0xKTphdD0xMTY7ZG97aWYoMTE2PT0oMHxhdCkpe2lmKGF0PTAsYVtmKyg3Miooaz0wfGFbYmU+PjJdKXwwKSs0MD4+Ml09SGUsTT1mKyg3MiprfDApKzQ0fDAsbWUpe2FbTT4+Ml09QmUsYVtm''@;'; put 'put ''Kyg3MiooTGU9MHxhWyhQaT1mKyg3MipIZXwwKSs1MnwwKT4+Ml0pfDApKzQwPj4yXT1CZSxhW2YrKDcyKkxlfDApKzQ0Pj4yXT0tMSxhW1BpPj4yXT0tMTticmVha31hW00+PjJdPS0xLGFbZisoNzIqKFBpPTB8YVsoaz1mKyg3MipIZXwwKSs1MnwwKT4+Ml0pfDApKzQwPj4yXT1IZSxhW2Yr''@;'; put 'put ''KDcyKlBpfDApKzQ0Pj4yXT1CZSxhW2YrKDcyKkJlfDApKzQ4Pj4yXT1QaSxhW2YrKDcyKkJlfDApKzUyPj4yXT0tMSxrPTB8YVtrPj4yXTticmVha319d2hpbGUoMCk7YnJlYWt9az0wfGFbKG1lPWYrKDcyKkhlfDApKzQwfDApPj4yXTtkb3tpZigoMHxrKT4wJiYoMHwodXQ9MHxhWyhadD1m''@;'; put 'put ''Kyg3MipIZXwwKSs0NHwwKT4+Ml0pKT4wKXtpZigoMHwoaz0wfGFbKHBlPWYrKDcyKkhlfDApKzYwfDApPj4yXSkpPD0wKXthW2YrKDcyKkJlfDApKzQwPj4yXT11dCxhW2YrKDcyKkJlfDApKzQ0Pj4yXT0tMSxhW1p0Pj4yXT0tMSxhW2YrKDcyKnV0fDApKzQ4Pj4yXT1CZTticmVha30xPT0o''@;'; put 'put ''MHxhW2YrKDcyKkhlfDApKzY0Pj4yXSk/KGFbZisoNzIqQmV8MCkrNDA+PjJdPXV0LGFbWnQ+PjJdPS0xLGFbZisoNzIqQmV8MCkrNDQ+PjJdPWssYVtmKyg3MiooMHxhW21lPj4yXSl8MCkrNDg+PjJdPUhlLEc9QmUsRD11dCk6KGFbZisoNzIqQmV8MCkrNDQ+PjJdPS0xLGFbKFBpPWYrKDcy''@;'; put 'put ''KkJlfDApKzQwfDApPj4yXT1hW1p0Pj4yXSxhW1p0Pj4yXT1EPTB8YVttZT4+Ml0sYVttZT4+Ml09ayxhW2YrKDcyKmt8MCkrNDg+PjJdPUhlLEc9SGUsaz0wfGFbUGk+PjJdKSxhW2YrKDcyKkR8MCkrNDg+PjJdPUcsYVtmKyg3MiprfDApKzQ4Pj4yXT1CZSxhW2YrKDcyKkJlfDApKzYwPj4y''@;'; put 'put ''XT0wLGFbcGU+PjJdPTB9ZWxzZSBhdD01MX13aGlsZSgwKTtkb3tpZig1MT09KDB8YXQpKXtpZihhdD0wLEQ9ZisoNzIqa3wwKSs0OHwwLGs9ZisoNzIqa3wwKSs1MnwwLCgwfChHPTB8YVtEPj4yXSkpPjAmJigwfGFbaz4+Ml0pPjApe2lmKCgwfChrPTB8YVtmKyg3MipHfDApKzQ+PjJdKSk+''@;'; put 'put ''MCYmMD09KDB8ZDYoayxjLExyKSkpe2FbZisoNzIqQmV8MCkrNDQ+PjJdPS0xLGFbZisoNzIqSGV8MCkrNDQ+PjJdPS0xLGFbbWU+PjJdPS0xLGFbZisoNzIqKDB8YVtmKyg3MipCZXwwKSs0MD4+Ml0pfDApKzUyPj4yXT1CZTticmVha31hW2YrKDcyKkhlfDApKzQ0Pj4yXT0tMSxhW2YrKDcy''@;'; put 'put ''KkJlfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKkJlfDApKzQwPj4yXT0tMSxhW2YrKDcyKigwfGFbbWU+PjJdKXwwKSs0OD4+Ml09SGU7YnJlYWt9YVtEPj4yXT1IZSxhW2s+PjJdPUJlfX13aGlsZSgwKTtpZigrZW8oKygrX1tPZT4+M10tK19bTXQ+PjNdKSk8PTFlLTcmJkdlJitlbygrKCtfW0xl''@;'; put 'put ''Pj4zXS0rX1tsdD4+M10pKTw9MWUtNyl7KDB8KGs9MHxhW2plPj4yXSkpPjAmJjAhPSgwfGQ2KGssYyxDcikpPyhhW2YrKDcyKigwfGFbYmU+PjJdKXwwKSs0MD4+Ml09SGUsTT1mKyg3MipCZXwwKSs1MnwwLGs9QmUpOihhW2YrKDcyKigwfGFbZisoNzIqQmV8MCkrNDg+PjJdKXwwKSs0ND4+''@;'; put 'put ''Ml09QmUsaz1IZSksYVtNPj4yXT0tMSxhW2YrKDcyKmt8MCkrNDg+PjJdPS0xLGs9MHxhW2JlPj4yXTticmVha31HPWYrKDcyKihrPTB8YVtiZT4+Ml0pfDApKzQ0fDAsKDB8KEQ9MHxhWyhNPWYrKDcyKmt8MCkrNDB8MCk+PjJdKSk+MCYmKHJuPSgwfEQpPT0oMHxIZSksKDB8KHd0PTB8YVtH''@;'; put 'put ''Pj4yXSkpPjApJiYoYVtmKyg3MiprfDApKzYwPj4yXT1ybj93dDpELGFbZisoNzIqa3wwKSs2ND4+Ml09cm4/MToyKSxhW00+PjJdPUhlLGFbRz4+Ml09QmV9fXdoaWxlKDApO2lmKGFbcnQ+PjJdPWwsYVtmKyg3MipIZXwwKSs0Pj4yXT1sLCEoKDB8ayk+MCkpYnJlYWsgZTtIZT1rfUN1KDEz''@;'; put 'put ''ODQyNCwxOSwxLDB8YVsxNTcxMl0pfWVsc2UgQT0wLG09MH13aGlsZSgwKTtLOShsLGt0LFIsMSxmLHApLEs5KGwsQSxtLDIsZixwKSxhW2MrKDU2Kmx8MCkrMzI+PjJdPTEsb2U9Rml9ZnVuY3Rpb24ga0IobCxjLGYscCl7Znw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MDswfGFbKGN8PTApKyg1''@;'; put 'put ''NioobHw9MCl8MCkrMzI+PjJdfHwoYVsodz1jKyg1NipsfDApKzM2fDApPj4yXT1hW2YrKDcyKigwfENkKG09YysoNTYqbHwwKXwwLEE9YysoNTYqbHwwKSsxNnwwLDB8YVt3Pj4yXSxjLHApKXwwKSs1Nj4+Ml0sYVsobD1jKyg1NipsfDApKzQwfDApPj4yXT1hW2YrKDcyKigwfENkKEEsbSww''@;'; put 'put ''fGFbbD4+Ml0sYyxwKSl8MCkrNTY+PjJdKX1mdW5jdGlvbiBDZChsLGMsZixwLG0pe2Z8PTAscHw9MCxtfD0wO3ZhciBHLHBlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxLPTAsbWU9MDtHPTgrKGx8PTApfDAscGU9OCsoY3w9MCl8MDtlOmZvcig7Oyl7dDpkb3tzd2l0Y2goMHxhW20r''@;'; put 'put ''KDQwKmZ8MCk+PjJdKXtjYXNlIDM6bWU9MzticmVhayBlO2Nhc2UgMjpBPStfW0c+PjNdLHc9bSsoNDAqZnwwKSs4fDAsaz0xZS03KyhiPStfW20rKDQwKmZ8MCkrMTY+PjNdKTtkb3tpZighKEE+aykpe2lmKCEoQTwoTT1iKy0xZS03KSkmJitfW2w+PjNdPitfW3c+PjNdKWJyZWFrO2lmKCtl''@;'; put 'put ''bygrKEEtYikpPD0xZS03JiYrZW8oKygrX1tsPj4zXS0oRD0rX1t3Pj4zXSkpKTw9MWUtNyl7QT0rX1twZT4+M107ZG97aWYoIShBPmspKXtpZighKEE8TSkmJitfW2M+PjNdPkQpYnJlYWs7Zj1tKyg0MCpmfDApKzMyfDA7YnJlYWsgdH19d2hpbGUoMCk7Zj1tKyg0MCpmfDApKzM2fDA7YnJl''@;'; put 'put ''YWsgdH1mPW0rKDQwKmZ8MCkrMzJ8MDticmVhayB0fX13aGlsZSgwKTtmPW0rKDQwKmZ8MCkrMzZ8MDticmVhaztjYXNlIDE6K2VvKCsoKEE9K19bRz4+M10pLStfW3ArKDU2Kih3PTB8YVttKyg0MCpmfDApKzQ+PjJdKXwwKSs4Pj4zXSkpPD0xZS03JiYrZW8oKygoUj0rX1tsPj4zXSktK19b''@;'; put 'put ''cCsoNTYqd3wwKT4+M10pKTw9MWUtNz9iPVI6bWU9MTk7ZG97aWYoMTk9PSgwfG1lKSl7aWYobWU9MCwrZW8oKyhBLStfW3ArKDU2Knd8MCkrMjQ+PjNdKSk8PTFlLTcmJitlbygrKChLPStfW2w+PjNdKS0rX1twKyg1Nip3fDApKzE2Pj4zXSkpPD0xZS03KXtiPUs7YnJlYWt9aWYoMHxkNih3''@;'; put 'put ''LHAsbCkpe2Y9bSsoNDAqZnwwKSszMnwwO2JyZWFrIHR9Zj1tKyg0MCpmfDApKzM2fDA7YnJlYWsgdH19d2hpbGUoMCk7aWYoK2VvKCsoQS0rX1twZT4+M10pKTw9MWUtNyl7aWYoK19bYz4+M108Yil7Zj1tKyg0MCpmfDApKzMyfDA7YnJlYWsgdH1mPW0rKDQwKmZ8MCkrMzZ8MDticmVhayB0''@;'; put 'put ''fWlmKDB8ZDYodyxwLGMpKXtmPW0rKDQwKmZ8MCkrMzJ8MDticmVhayB0fWY9bSsoNDAqZnwwKSszNnwwO2JyZWFrIHQ7ZGVmYXVsdDptZT0zMTticmVhayBlfX13aGlsZSgwKTtmPTB8YVtmPj4yXX1yZXR1cm4gMz09KDB8bWUpPzB8YVttKyg0MCpmfDApKzI0Pj4yXTooMzE9PSgwfG1lKSYm''@;'; put 'put ''KEN1KDEzODM1OCwzNSwxLDB8YVsxNTcxMl0pLEJyKDEzODM5NCwxMzgzOTYsMzQ5LDEzODQwOCkpLDApfWZ1bmN0aW9uIGQ2KGwsYyxmKXtmfD0wO3ZhciBtLEEsdyxiLHA9MCxrPTAsTT0wO0E9KGN8PTApKyg1NioobHw9MCl8MCkrMTZ8MCx3PStfW2MrKDU2Kmx8MCkrMjQ+PjNdLGI9Yyso''@;'; put 'put ''NTYqbHwwKXwwLG09K19bYysoNTYqbHwwKSs4Pj4zXTtkb3tpZighKHc+bSsxZS03KSl7aWYoISh3PG0rLTFlLTcpJiYrX1tBPj4zXT4rX1tiPj4zXSl7az00O2JyZWFrfWlmKCtlbygrKHctKHA9K19bZis4Pj4zXSkpKTw9MWUtNyl7cD0rX1tmPj4zXTwrX1tBPj4zXT8xOi0xO2JyZWFrfWlm''@;'; put 'put ''KCtlbygrKG0tcCkpPD0xZS03KXtwPStfW2Y+PjNdPCtfW2I+PjNdPzE6LTE7YnJlYWt9cD0oK19bYj4+M10tKE09K19bQT4+M10pKSoocC13KS0oK19bZj4+M10tTSkqKG0tdyk7YnJlYWt9az00fXdoaWxlKDApO2Rve2lmKDQ9PSgwfGspKXtpZigrZW8oKyh3LShwPStfW2YrOD4+M10pKSk8''@;'; put 'put ''PTFlLTcpe3A9K19bZj4+M108K19bQT4+M10/MTotMTticmVha31pZigrZW8oKyhtLXApKTw9MWUtNyl7cD0rX1tmPj4zXTwrX1tiPj4zXT8xOi0xO2JyZWFrfXA9KCtfW0E+PjNdLShNPStfW2I+PjNdKSkqKHAtbSktKCtfW2Y+PjNdLU0pKih3LW0pO2JyZWFrfX13aGlsZSgwKTtyZXR1cm4g''@;'; put 'put ''cD4wfDB9ZnVuY3Rpb24gWDkobCxjLGYpe3JldHVybiBsfD0wLDB8YVsoY3w9MCkrKDU2KigwfGFbKDE9PSgwfChmfD0wKSk/YysoNTYqbHwwKSs0OHwwOmMrKDU2Kmx8MCkrNDR8MCk+PjJdKXwwKSszMj4+Ml19ZnVuY3Rpb24gcDYobCl7bHw9MDt2YXIgYyxmLHA9MDtyZXR1cm4gcD1vZSxv''@;'; put 'put ''ZT1vZSsxNnwwLGY9cCwoMHwoYz0wfGFbNDczOTVdKSk8KDB8YVs0NzM5NF0pPyhhW2wrKDcyKmN8MCk+PjJdPS0xLGFbbCsoNzIqY3wwKSs0Pj4yXT0tMSxhW2wrKDcyKmN8MCkrNjg+PjJdPTEsYVs0NzM5NV09YysxLG9lPXAsMHxjKToocD0wfGFbMTU3MTJdLGFbZj4+Ml09YyxUMChwLDEz''@;'; put 'put ''ODQ4MyxmKSxCcigxMzgzOTQsMTM4Mzk2LDg4LDEzODUyMSksMCl9ZnVuY3Rpb24gdmYoKXt2YXIgbDtyZXR1cm4oMHwobD0wfGFbNDczOTZdKSk8KDB8YVs0NzM5M10pPyhhWzQ3Mzk2XT1sKzEsMHxsKTooQ3UoMTM4NDQ0LDMwLDEsMHxhWzE1NzEyXSksQnIoMTM4Mzk0LDEzODM5Niw3Miwx''@;'; put 'put ''Mzg0NzUpLDApfWZ1bmN0aW9uIFlFKGwsYyl7dmFyIGYscDtyZXR1cm4gMHwoKGY9K19bOCsobHw9MCk+PjNdKT4xZS03KyhwPStfWzgrKGN8PTApPj4zXSk/MTpmPHArLTFlLTc/MDorX1tsPj4zXT49K19bYz4+M10mMSl9ZnVuY3Rpb24gRUcobCxjKXt2YXIgZixwO3JldHVybiAwfCgoZj0r''@;'; put 'put ''X1s4KyhsfD0wKT4+M10pPChwPStfWzgrKGN8PTApPj4zXSktMWUtNz8xOmY+cCsxZS03PzA6K19bbD4+M108K19bYz4+M10mMSl9ZnVuY3Rpb24gSzkobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxBfD0wO3ZhciBwZSxtZSx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLGJlPTA7bWU9''@;'; put 'put ''KG18PTApKyg3MiooZnw9MCl8MCkrMjR8MCxwZT0xPT0oMHwocHw9MCkpO2U6Zm9yKDtLPW0rKDcyKmN8MCkrMjR8MCxrPW0rKDcyKmN8MCkrNDh8MCxNPW0rKDcyKmN8MCkrNTJ8MCxEPW0rKDcyKmN8MCl8MCxSPW0rKDcyKmN8MCkrNHwwLEc9bSsoNzIqY3wwKSs1NnwwLCEoKDB8Yyk8PTAp''@;'; put 'put ''Oylmb3IoOzspe2lmKCEoMHxZRShLLG1lKSkpYnJlYWsgZTtwPSgwfChmPTB8YVtrPj4yXSkpPjA7ZG97aWYocGUpe2lmKHAmJigwfGFbbSsoNzIqZnwwKSs0Pj4yXSk9PSgwfGwpKWJyZWFrO2lmKCgwfChmPTB8YVtNPj4yXSkpPD0wKXtjPWY7Y29udGludWUgZX1pZigoMHxhW20rKDcyKmZ8''@;'; put 'put ''MCkrND4+Ml0pIT0oMHxsKSl7Yz1mO2NvbnRpbnVlIGV9fWVsc2V7aWYocCYmKDB8YVttKyg3MipmfDApPj4yXSk9PSgwfGwpKWJyZWFrO2lmKCgwfChmPTB8YVtNPj4yXSkpPD0wKXtjPWY7Y29udGludWUgZX1pZigoMHxhW20rKDcyKmZ8MCk+PjJdKSE9KDB8bCkpe2M9Zjtjb250aW51ZSBl''@;'; put 'put ''fX19d2hpbGUoMCk7aWYoKDB8YVtEPj4yXSkhPSgwfGFbbSsoNzIqZnwwKT4+Ml0pKXtjPWY7Y29udGludWUgZX1pZigoMHxhW1I+PjJdKSE9KDB8YVttKyg3MipmfDApKzQ+PjJdKSl7Yz1mO2NvbnRpbnVlIGV9Yj0wfGFbRz4+Ml0sKDB8YVsodz1BKyg0MCoocD0wfGFbQSsoNDAqKGJlPTB8''@;'; put 'put ''YVttKyg3MipmfDApKzU2Pj4yXSl8MCkrMjg+PjJdKXwwKSszMnwwKT4+Ml0pPT0oMHxiZSk/YVt3Pj4yXT1iOmFbQSsoNDAqcHwwKSszNj4+Ml09YixhW2s+PjJdPXA9MHxhW20rKDcyKmZ8MCkrNDg+PjJdO2Rve2lmKCgwfHApPjApe2lmKCgwfGFbKHc9bSsoNzIqcHwwKSs0MHwwKT4+Ml0p''@;'; put 'put ''PT0oMHxmKSl7YVt3Pj4yXT1jO2JyZWFrfSgwfGFbKHA9bSsoNzIqcHwwKSs0NHwwKT4+Ml0pPT0oMHxmKSYmKGFbcD4+Ml09Yyl9fXdoaWxlKDApO2FbTT4+Ml09cD0wfGFbbSsoNzIqZnwwKSs1Mj4+Ml07ZG97aWYoKDB8cCk+MCl7aWYoKDB8YVsodz1tKyg3MipwfDApKzQwfDApPj4yXSk9''@;'; put 'put ''PSgwfGYpKXthW3c+PjJdPWM7YnJlYWt9KDB8YVsocD1tKyg3MipwfDApKzQ0fDApPj4yXSk9PSgwfGYpJiYoYVtwPj4yXT1jKX19d2hpbGUoMCk7YVtLPj4yXT1hWyhiZT1tKyg3MipmfDApKzI0fDApPj4yXSxhW0srND4+Ml09YVtiZSs0Pj4yXSxhW0srOD4+Ml09YVtiZSs4Pj4yXSxhW0sr''@;'; put 'put ''MTI+PjJdPWFbYmUrMTI+PjJdLGFbbSsoNzIqZnwwKSs2OD4+Ml09Mn19ZnVuY3Rpb24gU0IobCxjKXtyZXR1cm4gbHw9MCwoY3w9MCkmJihjPTB8ZnVuY3Rpb24gdF8obCl7dmFyIGM7cmV0dXJuIGx8PTAsMHwoYz0wfG1yKDgpKSYmKGFbYys0Pj4yXT1sLGFbYz4+Ml09MCksMHxjfShjKSxh''@;'; put 'put ''W2M+PjJdPWwsbD1jKSwwfGx9ZnVuY3Rpb24gJDkoKXt2YXIgbDtyZXR1cm4gMHwobD0wfG1yKDE5OTIpKSYmKGFbbD4+Ml09MHxmdW5jdGlvbiBYRShsKXt2YXIgYztyZXR1cm4gYz0wfGc2KGx8PTApLGFbYys0Pj4yXT0wLGFbKGw9bCsxOTcyfDApPj4yXT0xKygwfGFbbD4+Ml0pLDB8Y30o''@;'; put 'put ''bCkpLDB8bH1mdW5jdGlvbiBQNChsKXtyZXR1cm4gbl8obHw9MCwwfGFbbD4+Ml0pLEh0KDB8YVtsPj4yXSksSHQobCksMH1mdW5jdGlvbiBuXyhsLGMpe2N8PTA7dmFyIEEsdyxiLGY9MCxwPTAsbT0wO0E9MTk4MCsobHw9MCl8MCx3PWwrMTkxMnwwLGI9bCsxOTM2fDA7ZTpkb3tpZigoMHxh''@;'; put 'put ''W2MrND4+Ml0pPjApZm9yKGY9MDs7KXtpZig2ND09KDB8ZikpYnJlYWsgZTswfChtPTB8YVsocD1jKzgrKDIwKmZ8MCkrMTZ8MCk+PjJdKSYmKG5fKGwsbSksSHQoMHxhW3A+PjJdKSxvXyhjLGYpLGFbQT4+Ml09KDB8YVtBPj4yXSktMSwwfGFbdz4+Ml0pJiYoYVtiPj4yXT0xKygwfGFbYj4+''@;'; put 'put ''Ml0pKSxmPWYrMXwwfWVsc2UgZm9yKGY9MDs7KXtpZig2ND09KDB8ZikpYnJlYWsgZTswfGFbYys4KygyMCpmfDApKzE2Pj4yXSYmKG9fKGMsZiksYVtBPj4yXT0oMHxhW0E+PjJdKS0xLDB8YVt3Pj4yXSkmJihhW2I+PjJdPTErKDB8YVtiPj4yXSkpLGY9ZisxfDB9fXdoaWxlKDApfWZ1bmN0''@;'; put 'put ''aW9uIHJfKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTA7KGN8PTApfHxCcigxMzg4NzksMTM4NTI5LDE5NCwxMzg1MzcpLCgwfChwPTB8YVtjKzQ+PjJdKSk8PS0xJiZCcigxMzg1NDksMTM4NTI5LDE5NSwxMzg1MzcpLGZ8fEJyKDEzODgyMSwxMzg1MjksMTk2LDEz''@;'; put 'put ''ODUzNyksYVsoYj1sKzE5NTJ8MCk+PjJdPTErKDB8YVtiPj4yXSk7ZTpkb3tpZigoMHxwKT4wKWZvcihiPTAscD0wOzspe2lmKDY0PT0oMHxiKSlicmVhayBlO2lmKDAhPSgwfGFbKG09Yys4KygyMCpifDApKzE2fDApPj4yXSkmJjAhPSgwfGFfKGYsYys4KygyMCpifDApfDApKSlpZihBPTB8''@;'; put 'put ''cl8obCwwfGFbbT4+Ml0sZikscCl7Zm9yKG09cDt3PTB8YVttPj4yXTspbT13O2FbbT4+Ml09QX1lbHNlIHA9QTtiPWIrMXwwfWVsc2UgZm9yKEE9MCxwPTA7Oyl7aWYoNjQ9PSgwfEEpKWJyZWFrIGU7bT1jKzgrKDIwKkF8MCl8MCwwIT0oMHxhW2MrOCsoMjAqQXwwKSsxNj4+Ml0pJiYwIT0o''@;'; put 'put ''MHxhXyhmLG0pKSYmKHA9MHxTQihwLG0pKSxBPUErMXwwfX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIEtFKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBNLEQsUixHLEssQT0wLHc9MCxiPTAsaz0wLHBlPTA7aWYoSz1vZSxvZT1vZSs2NHwwLEQ9SyszMnww''@;'; put 'put ''LFI9SysxNnwwLEc9SyxhWyhNPUsrNTJ8MCk+PjJdPTAsMCE9KDB8YykmMCE9KDB8cCl8fEJyKDEzODczNSwxMzg1MjksMjQ3LDEzODU2MyksKDB8bSk+LTEmJigwfGFbNCsoaz0wfGFbcD4+Ml0pPj4yXSk+PSgwfG0pKXtmb3IoQT0wOyEoKDB8QSk+PTIpOyl7aWYoKDB8YVtjKyhBPDwyKT4+''@;'; put 'put ''Ml0pPigwfGFbYysoQSsyPDwyKT4+Ml0pKXt3PTg7YnJlYWt9QT1BKzF8MH1yZXR1cm4gOD09KDB8dykmJkJyKDEzODYxMCwxMzg1MjksMjUwLDEzODU2Myksdz0wfGFbKEE9bCsxOTA4fDApPj4yXSwwfGFbKGI9bCsxOTEyfDApPj4yXSYmKGFbKHBlPTB8dz9sKzE5MjR8MDpsKzE5MTZ8MCk+''@;'; put 'put ''PjJdPTErKDB8YVtwZT4+Ml0pKSx3fHwoYVsocGU9bCsxOTY0fDApPj4yXT0xKygwfGFbcGU+PjJdKSksMHxNQihsLGMsZixrLE0sbSk/KDB8YVtiPj4yXSYmKGFbKHBlPTB8YVtBPj4yXT9sKzE5NDh8MDpsKzE5NDR8MCk+PjJdPTErKDB8YVtwZT4+Ml0pKSxBPTB8ZzYobCksYVsocGU9bCsx''@;'; put 'put ''OTc2fDApPj4yXT0xKygwfGFbcGU+PjJdKSxhW0ErND4+Ml09MSsoMHxhWzQrKHBlPTB8YVtwPj4yXSk+PjJdKSxFbShSLHBlKSxhW0Q+PjJdPWFbUj4+Ml0sYVtEKzQ+PjJdPWFbUis0Pj4yXSxhW0QrOD4+Ml09YVtSKzg+PjJdLGFbRCsxMj4+Ml09YVtSKzEyPj4yXSxhWyhwZT1EKzE2fDAp''@;'; put 'put ''Pj4yXT1hW3A+PjJdLEY0KGwsRCxBLDApLEVtKEcsMHxhW00+PjJdKSxhW0Q+PjJdPWFbRz4+Ml0sYVtEKzQ+PjJdPWFbRys0Pj4yXSxhW0QrOD4+Ml09YVtHKzg+PjJdLGFbRCsxMj4+Ml09YVtHKzEyPj4yXSxhW3BlPj4yXT1hW00+PjJdLEY0KGwsRCxBLDApLGFbcD4+Ml09QSxhWyhBPWwr''@;'; put 'put ''MTk4MHwwKT4+Ml09MisoMHxhW0E+PjJdKSxBPTEpOkE9MCxvZT1LLDB8QX1yZXR1cm4gQnIoMTM4NTc1LDEzODUyOSwyNDgsMTM4NTYzKSwwfWZ1bmN0aW9uIE1CKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgTSxELFIsRyxLLHBlLHc9MCxiPTAsaz0w''@;'; put 'put ''O2lmKHBlPW9lLG9lPW9lKzgwfDAsRD1wZSs1MnwwLEc9cGUrMzJ8MCxLPXBlKzE2fDAsTT1wZSxhWyhSPXBlKzQ4fDApPj4yXT0wLDAhPSgwfGMpJjAhPSgwfHApJjAhPSgwfG0pfHxCcigxMzg2NTMsMTM4NTI5LDMxMSwxMzg2NjcpLCgwfEEpPi0xJiYoMHwodz0wfGFbKGI9cCs0fDApPj4y''@;'; put 'put ''XSkpPj0oMHxBKSl7MHxhW2wrMTkxMj4+Ml0mJihhWyh3PTB8YVtsKzE5MDg+PjJdP2wrMTk0OHwwOmwrMTk0NHwwKT4+Ml09MSsoMHxhW3c+PjJdKSx3PTB8YVtiPj4yXSk7ZG97aWYoKDB8dyk+KDB8QSkpe2lmKHc9cCs4KygyMCooYj0wfHFFKGMscCkpfDApKzE2fDAsYj1wKzgrKDIwKmJ8''@;'; put 'put ''MCl8MCwwfE1CKGwsYyxmLDB8YVt3Pj4yXSxSLEEpKXtFbShLLDB8YVt3Pj4yXSksYVtiPj4yXT1hW0s+PjJdLGFbYis0Pj4yXT1hW0srND4+Ml0sYVtiKzg+PjJdPWFbSys4Pj4yXSxhW2IrMTI+PjJdPWFbSysxMj4+Ml0sYVtEKzE2Pj4yXT1rPTB8YVtSPj4yXSxFbShNLGspLGFbRD4+Ml09''@;'; put 'put ''YVtNPj4yXSxhW0QrND4+Ml09YVtNKzQ+PjJdLGFbRCs4Pj4yXT1hW00rOD4+Ml0sYVtEKzEyPj4yXT1hW00rMTI+PjJdLGFbKGs9bCsxOTgwfDApPj4yXT0xKygwfGFbaz4+Ml0pLGs9MHxGNChsLEQscCxtKTticmVha31TMyhHLGMsYiksYVtiPj4yXT1hW0c+PjJdLGFbYis0Pj4yXT1hW0cr''@;'; put 'put ''ND4+Ml0sYVtiKzg+PjJdPWFbRys4Pj4yXSxhW2IrMTI+PjJdPWFbRysxMj4+Ml0saz0wO2JyZWFrfWlmKCgwfHcpPT0oMHxBKSl7YVtEPj4yXT1hW2M+PjJdLGFbRCs0Pj4yXT1hW2MrND4+Ml0sYVtEKzg+PjJdPWFbYys4Pj4yXSxhW0QrMTI+PjJdPWFbYysxMj4+Ml0sYVtEKzE2Pj4yXT1m''@;'; put 'put ''LGFbKGs9bCsxOTgwfDApPj4yXT0xKygwfGFbaz4+Ml0pLGs9MHxGNChsLEQscCxtKTticmVha31CcigxMzg3MTIsMTM4NTI5LDM0MSwxMzg2NjcpfXdoaWxlKDApO3JldHVybiBvZT1wZSwwfGt9cmV0dXJuIEJyKDEzODY4MCwxMzg1MjksMzEyLDEzODY2NyksMH1mdW5jdGlvbiBnNihsKXty''@;'; put 'put ''ZXR1cm4gYVsobD0xOTY4KyhsfD0wKXwwKT4+Ml09MSsoMHxhW2w+PjJdKSwkRShsPTB8UjAoMTI4OCkpLDB8bH1mdW5jdGlvbiAkRShsKXt2YXIgYz0wO2ZvcihhWyhsfD0wKT4+Ml09MCxhW2wrND4+Ml09LTEsYz0wOzY0IT0oMHxjKTspaV8obCs4KygyMCpjfDApfDApLGM9YysxfDB9ZnVu''@;'; put 'put ''Y3Rpb24gaV8obCl7eG0obHw9MCksYVtsKzE2Pj4yXT0wfWZ1bmN0aW9uIEVtKGwsYyl7bHw9MDt2YXIgQSx3LGIsZj0wLHA9MCxtPTA7Zm9yKGI9b2Usb2U9b2UrMzJ8MCxBPWIrMTZ8MCx3PWIsKGN8PTApfHxCcigxMzg4NzksMTM4NzE4LDk5LDEzODcyNSkseG0oQSksZj0xLG09MDs2NCE9''@;'; put 'put ''KDB8bSk7KXtkb3tpZigwfGFbYys4KygyMCptfDApKzE2Pj4yXSl7aWYocD1jKzgrKDIwKm18MCl8MCxmKXthW0E+PjJdPWFbcD4+Ml0sYVtBKzQ+PjJdPWFbcCs0Pj4yXSxhW0ErOD4+Ml09YVtwKzg+PjJdLGFbQSsxMj4+Ml09YVtwKzEyPj4yXSxmPTA7YnJlYWt9UzModyxBLHApLGFbQT4+''@;'; put 'put ''Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLGFbQSs4Pj4yXT1hW3crOD4+Ml0sYVtBKzEyPj4yXT1hW3crMTI+PjJdLGY9MDticmVha319d2hpbGUoMCk7bT1tKzF8MH1hW2w+PjJdPWFbQT4+Ml0sYVtsKzQ+PjJdPWFbQSs0Pj4yXSxhW2wrOD4+Ml09YVtBKzg+PjJdLGFbbCsxMj4+''@;'; put 'put ''Ml09YVtBKzEyPj4yXSxvZT1ifWZ1bmN0aW9uIHFFKGwsYyl7dmFyIGIsayxNLGY9MCxwPTAsbT0wLEE9MCx3PTAsRD0wLFI9MCxHPTAsSz0wO2ZvcihNPW9lLG9lPW9lKzMyfDAsYj1NKzE2fDAsaz1NLDAhPSgwfChsfD0wKSkmMCE9KDB8KGN8PTApKXx8QnIoMTM4NzM1LDEzODcxOCwxMjUs''@;'; put 'put ''MTM4NzQyKSxmPTAscD0wLG09MCxBPTEsdz0wOzY0IT0oMHx3KTspMHxhW2MrOCsoMjAqd3wwKSsxNj4+Ml0mJihLPTB8RWgoUj1jKzgrKDIwKnd8MCl8MCksUzMoayxsLFIpLGFbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4y''@;'; put 'put ''XT1hW2srMTI+PjJdLGY9KEc9KEQ9MCE9KDB8QSl8KDB8KFI9KDB8RWgoYikpLUt8MCkpPCgwfG0pKXwoMHxLKTwoMHxwKSYoMHxSKT09KDB8bSkpP3c6ZixwPUc/SzpwLG09Rz9SOm0sQT1EPzA6QSksdz13KzF8MDtyZXR1cm4gb2U9TSwwfGZ9ZnVuY3Rpb24gRjQobCxjLGYscCl7bHw9MCxm''@;'; put 'put ''fD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wOyhjfD0wKXx8QnIoMTM4OTAxLDEzODcxOCwxNjcsMTM4NzUzKSxmfHxCcigxMzg4NzksMTM4NzE4LDE2OCwxMzg3NTMpO2Rve2lmKCgwfGFbZj4+Ml0pPDY0KXtmb3IobD0wOzspe2lmKCgwfGwpPj02NCl7cD0xMDticmVha31pZighKDB8YVtmKzgr''@;'; put 'put ''KDIwKmx8MCkrMTY+PjJdKSl7cD04O2JyZWFrfWw9bCsxfDB9aWYoOD09KDB8cCkpe2FbKG09Zis4KygyMCpsfDApfDApPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sYVttKzE2Pj4yXT1hW2MrMTY+PjJd''@;'; put 'put ''LG09MCxBPWY7YnJlYWt9MTA9PSgwfHApJiZCcigxMzg3NjMsMTM4NzE4LDE3OCwxMzg3NTMpfWVsc2V7aWYoMHxhW2wrMTkxMj4+Ml0mJihhWyh3PTB8YVtsKzE5MDg+PjJdP2wrMTk0OHwwOmwrMTk0NHwwKT4+Ml09MSsoMHxhW3c+PjJdKSkscCl7bF8obCxmLGMscCksbT0xLEE9MD09KDB8''@;'; put 'put ''YVtmKzQ+PjJdKT9sKzE5NzJ8MDpsKzE5NzZ8MDticmVha31CcigxMzg3NzYsMTM4NzE4LDE4NywxMzg3NTMpfX13aGlsZSgwKTtyZXR1cm4gYVtBPj4yXT0xKygwfGFbQT4+Ml0pLDB8bX1mdW5jdGlvbiBvXyhsLGMpe2lmKDAhPSgwfChsfD0wKSkmKGN8PTApPj4+MDw2NHx8QnIoMTM4Nzgw''@;'; put 'put ''LDEzODcxOCwyMDEsMTM4ODA4KSwwfGFbbCs4KygyMCpjfDApKzE2Pj4yXSlyZXR1cm4gaV8obCs4KygyMCpjfDApfDApLHZvaWQoYVtsPj4yXT0oMHxhW2w+PjJdKS0xKTtCcigxMzkzMDIsMTM4NzE4LDIwMiwxMzg4MDgpfWZ1bmN0aW9uIHhtKGwpe2x8PTA7dmFyIGM9MDtmb3IoYz0wOzQh''@;'; put 'put ''PSgwfGMpOylhW2wrKGM8PDIpPj4yXT0wLGM9YysxfDB9ZnVuY3Rpb24gRWgobCl7dmFyIGM9MCxmPTA7KGx8PTApfHxCcigxMzg4MjEsMTM4ODIzLDEyOCwxMzg4MzUpO2U6ZG97aWYoKDB8YVtsPj4yXSk+KDB8YVtsKzg+PjJdKSljPTA7ZWxzZSBmb3IoYz0xLGY9MDs7KXtpZigyPT0oMHxm''@;'; put 'put ''KSlicmVhayBlO2M9KDB8dnIoMHxhW2wrKGYrMjw8Mik+PjJdLGMpKS0oMHxhW2wrKGY8PDIpPj4yXSl8MCxmPWYrMXwwfX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIFMzKGwsYyxmKXtsfD0wO3ZhciBtLEEscD0wLHc9MCxiPTAsaz0wO0E9b2Usb2U9b2UrMTZ8MCxtPUEsMCE9KDB8''@;'; put 'put ''KGN8PTApKSYwIT0oMHwoZnw9MCkpfHxCcigxMzg4NDQsMTM4ODIzLDE5NSwxMzg4NTIpO2Rve2lmKCgwfGFbYz4+Ml0pPigwfGFbYys4Pj4yXSkpYVtsPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml07ZWxz''@;'; put 'put ''ZXtpZigoMHxhW2Y+PjJdKT4oMHxhW2YrOD4+Ml0pKXthW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXTticmVha31mb3IocD0wOzIhPSgwfHApOylhW20rKHA8PDIpPj4yXT0oMHwoaz0wfGFbYysocDw8''@;'; put 'put ''Mik+PjJdKSk8KDB8KHc9MHxhW2YrKHA8PDIpPj4yXSkpP2s6dyxhW20rKCh3PXArMnwwKTw8Mik+PjJdPSgwfChrPTB8YVtjKyh3PDwyKT4+Ml0pKT4oMHwoYj0wfGFbZisodzw8Mik+PjJdKSk/azpiLHA9cCsxfDA7YVtsPj4yXT1hW20+PjJdLGFbbCs0Pj4yXT1hW20rND4+Ml0sYVtsKzg+''@;'; put 'put ''PjJdPWFbbSs4Pj4yXSxhW2wrMTI+PjJdPWFbbSsxMj4+Ml19fXdoaWxlKDApO29lPUF9ZnVuY3Rpb24gYV8obCxjKXt2YXIgZj0wLHA9MDtmb3IoMCE9KDB8KGx8PTApKSYwIT0oMHwoY3w9MCkpP2Y9MDpCcigxMzg4NjQsMTM4ODIzLDIxNiwxMzg4NzEpOzspe2lmKCgwfGYpPj0yKXtmPTE7''@;'; put 'put ''YnJlYWt9aWYoKDB8YVtsKyhmPDwyKT4+Ml0pPigwfGFbYysoKHA9ZisyfDApPDwyKT4+Ml0pKXtmPTA7YnJlYWt9aWYoKDB8YVtjKyhmPDwyKT4+Ml0pPigwfGFbbCsocDw8Mik+PjJdKSl7Zj0wO2JyZWFrfWY9ZisxfDB9cmV0dXJuIDB8Zn1mdW5jdGlvbiBsXyhsLGMsZixwKXtsfD0wLGZ8''@;'; put 'put ''PTAscHw9MDt2YXIgQSxtPTAsdz0wLGI9MDsoY3w9MCl8fEJyKDEzODg3OSwxMzg4ODEsNDAsMTM4ODkxKSxmfHxCcigxMzg5MDEsMTM4ODgxLDQxLDEzODg5MSksMHxhWyhiPWwrMTkxMnwwKT4+Ml0mJihhWyh3PTB8YVtsKzE5MDg+PjJdP2wrMTkzMnwwOmwrMTkyOHwwKT4+Ml09MSsoMHxh''@;'; put 'put ''W3c+PjJdKSksdz0wfGFbKEE9Yys0fDApPj4yXSxmdW5jdGlvbiBUbShsLGMsZil7bHw9MCxmfD0wO3ZhciBBLHcscD0wLG09MCxiPTAsaz0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsQT13LChjfD0wKXx8QnIoMTM4ODc5LDEzODg4MSwxMDYsMTM5MjkwKSxmP3A9MDpCcigxMzg5MDEsMTM4ODgx''@;'; put 'put ''LDEwNywxMzkyOTApOyEoKDB8cCk+PTY0KTspe2lmKCEoMHxhW2MrOCsoMjAqcHwwKSsxNj4+Ml0pKXttPTc7YnJlYWt9YVsoYj1sKzQrKDIwKnB8MCl8MCk+PjJdPWFbKGs9Yys4KygyMCpwfDApfDApPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEy''@;'; put 'put ''Pj4yXT1hW2srMTI+PjJdLGFbYisxNj4+Ml09YVtrKzE2Pj4yXSxwPXArMXwwfWZvcig3PT0oMHxtKSYmQnIoMTM5MzAyLDEzODg4MSwxMTEsMTM5MjkwKSxwPWwrNHwwLGFbKGs9bCsxMjg0fDApPj4yXT1hW2Y+PjJdLGFbays0Pj4yXT1hW2YrND4+Ml0sYVtrKzg+PjJdPWFbZis4Pj4yXSxh''@;'; put 'put ''W2srMTI+PjJdPWFbZisxMj4+Ml0sYVtrKzE2Pj4yXT1hW2YrMTY+PjJdLGFbKGY9bCsxMzA0fDApPj4yXT1hW3A+PjJdLGFbZis0Pj4yXT1hW3ArND4+Ml0sYVtmKzg+PjJdPWFbcCs4Pj4yXSxhW2YrMTI+PjJdPWFbcCsxMj4+Ml0scD0xOzY1IT0oMHxwKTspUzMoQSxmLGwrNCsoMjAqcHww''@;'; put 'put ''KXwwKSxhW2Y+PjJdPWFbQT4+Ml0sYVtmKzQ+PjJdPWFbQSs0Pj4yXSxhW2YrOD4+Ml09YVtBKzg+PjJdLGFbZisxMj4+Ml09YVtBKzEyPj4yXSxwPXArMXwwO2FbbCsxMzIwPj4yXT0wfEVoKGYpLCRFKGMpLG9lPXd9KGwsYyxmKSxmPWwrMTMyNHwwLGZ1bmN0aW9uIEVCKGwpe3ZhciBiLGss''@;'; put 'put ''TSxELFIsRyxLLHBlLGJlLE9lLExlLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLG1lPTAsQmU9MDtmb3IoTGU9b2Usb2U9b2UrNDh8MCxiPUxlKzMyfDAsTT1MZSsxNnwwLEQ9TGUsZnVuY3Rpb24geEIobCl7dmFyIGYscCxtLGM9MDtmb3IoZj1vZSxvZT1vZSsxNnwwLHA9ZixhWzE4NDgrKGx8''@;'; put 'put ''PTApPj4yXT0wLGFbbCsxODQ0Pj4yXT0wLGM9bCsxODUyfDAsbT1sKzE4Njh8MCxmdW5jdGlvbiBxOShsKXtsfD0wO3ZhciBmLHAsYz0wO2ZvcihwPW9lLG9lPW9lKzE2fDAsYVsoZj1wKT4+Ml09MSxhW2YrOD4+Ml09LTEsYz0xOzIhPSgwfGMpOylhW2YrKGMrMjw8Mik+PjJdPTAsYVtmKyhj''@;'; put 'put ''PDwyKT4+Ml09MCxjPWMrMXwwO2FbbD4+Ml09YVtmPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdLG9lPXB9KHApLGFbbT4+Ml09YVtwPj4yXSxhW20rND4+Ml09YVtwKzQ+PjJdLGFbbSs4Pj4yXT1hW3ArOD4+Ml0sYVtt''@;'; put 'put ''KzEyPj4yXT1hW3ArMTI+PjJdLGFbYz4+Ml09YVtwPj4yXSxhW2MrND4+Ml09YVtwKzQ+PjJdLGFbYys4Pj4yXT1hW3ArOD4+Ml0sYVtjKzEyPj4yXT1hW3ArMTI+PjJdLGFbbCsxODg4Pj4yXT0wLGFbbCsxODg0Pj4yXT0wLGM9MDs2NSE9KDB8Yyk7KWFbbCsxNTg0KyhjPDwyKT4+Ml09MCxh''@;'; put 'put ''W2wrMTMyNCsoYzw8Mik+PjJdPS0xLGM9YysxfDA7b2U9Zn0obHw9MCksZnVuY3Rpb24gVEIobCl7bHw9MDt2YXIgTSxELFIsRyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEs9MCxwZT0wLG1lPTA7Zm9yKEc9b2Usb2U9b2UrMzA0fDAsTT1HKzMyfDAsRD1HKzE2fDAsUj1HLGM9''@;'; put 'put ''MDs2NSE9KDB8Yyk7KWFbTSsoYzw8Mik+PjJdPTB8RWgobCs0KygyMCpjfDApfDApLGM9YysxfDA7Yz0wLGY9MCxwPTAsQT0wO2U6Zm9yKDs2NCE9KDB8QSk7KWZvcihiPUErMXwwLGs9bCs0KygyMCpBfDApfDAsdz1NKyhBPDwyKXwwLG09Yjs7KXtpZig2NT09KDB8bSkpe0E9Yjtjb250aW51''@;'; put 'put ''ZSBlfVMzKFIsayxsKzQrKDIwKm18MCl8MCksYVtEPj4yXT1hW1I+PjJdLGFbRCs0Pj4yXT1hW1IrND4+Ml0sYVtEKzg+PjJdPWFbUis4Pj4yXSxhW0QrMTI+PjJdPWFbUisxMj4+Ml0sbWU9KHBlPShLPShLPTB8RWgoRCkpLSgwfGFbdz4+Ml0pLSgwfGFbTSsobTw8Mik+PjJdKXwwKT4+PjA+''@;'; put 'put ''cD4+PjApP206YyxtPW0rMXwwLGM9bWUsZj1wZT9BOmYscD1wZT9LOnB9SW0obCxmLDApLEltKGwsYywxKSxvZT1HfShsKSxwZT1sKzE4NDR8MCxiZT1sKzE4NDh8MCxPZT1sKzE4OTJ8MCxSPWwrMTg1MnwwLEc9bCsxODg0fDAsSz1sKzE4Njh8MCxrPWwrMTg4OHwwLG09MCxwPTA7ISgoKGM9''@;'; put 'put ''MHxhW2JlPj4yXSkrKGY9MHxhW3BlPj4yXSl8MCk+PTY1KTspe2lmKCEoKDB8Zik8KDB8KHc9NjUtKDB8YVtPZT4+Ml0pfDApKSYoMHxjKTwoMHx3KSkpe21lPTEyO2JyZWFrfWZvcihBPS0xLHc9MDs2NSE9KDB8dyk7KTB8YVtsKzE1ODQrKHc8PDIpPj4yXT8oYz1BLGY9bSk6KFMzKE0sQmU9''@;'; put 'put ''bCs0KygyMCp3fDApfDAsUiksYVtiPj4yXT1hW00+PjJdLGFbYis0Pj4yXT1hW00rND4+Ml0sYVtiKzg+PjJdPWFbTSs4Pj4yXSxhW2IrMTI+PjJdPWFbTSsxMj4+Ml0sYz0wfEVoKGIpLGY9MHxhW0c+PjJdLFMzKEQsQmUsSyksYVtiPj4yXT1hW0Q+PjJdLGFbYis0Pj4yXT1hW0QrND4+Ml0s''@;'; put 'put ''YVtiKzg+PjJdPWFbRCs4Pj4yXSxhW2IrMTI+PjJdPWFbRCsxMj4+Ml0sYz0oZj0oMHwoYz0oQmU9MHxFaChiKSktKDB8YVtrPj4yXSkrKGYtYyl8MCkpPi0xKT9jOjAtY3wwLGY9MSYoMV5mKSwoMHxjKTw9KDB8QSk/KDB8Yyk9PSgwfEEpPyhjPUEsZj0oQmU9KDB8YVtsKzE4NDQrKGY8PDIp''@;'; put 'put ''Pj4yXSk8KDB8YVtsKzE4NDQrKG08PDIpPj4yXSkpP2Y6bSxwPUJlP3c6cCk6KGM9QSxmPW0pOnA9dyksQT1jLHc9dysxfDAsbT1mO0ltKGwscCxtKX1pZigxMj09KDB8bWUpKXtmb3IoYz0oMHxmKT49KDY1LSgwfGFbT2U+PjJdKXwwKSYxLGY9MDs2NSE9KDB8Zik7KTB8YVtsKzE1ODQrKGY8''@;'; put 'put ''PDIpPj4yXXx8SW0obCxmLGMpLGY9ZisxfDA7Zj0wfGFbcGU+PjJdLGM9MHxhW2JlPj4yXX02NSE9KGMrZnwwKSYmQnIoMTM5MDQ2LDEzODg4MSwyMTAsMTM5MTMyKSwoMHxmKTwoMHwoQmU9MHxhW09lPj4yXSkpfCgwfGMpPCgwfEJlKT9CcigxMzkxNDMsMTM4ODgxLDIxMiwxMzkxMzIpOm9l''@;'; put 'put ''PUxlfShsKSxtPTB8RWgobCsxODUyfDApLG09KDB8RWgobCsxODY4fDApKSttfDAsMHxhW2I+PjJdJiYwIT0oMHxtKSYwPT0oMHxhW2wrMTkwOD4+Ml0pJiYoV25bKGI9bCsxOTYwfDApPj4yXT0rKCgwfGFbbCsxMzIwPj4yXSk+Pj4wKS8rKDB8bSkrICtXbltiPj4yXSksYj0wfGc2KGwpLGFb''@;'; put 'put ''cD4+Ml09YixhW0E+PjJdPXcsYVtiKzQ+PjJdPXcsZnVuY3Rpb24gZXgobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG09MDtmb3IoKGN8PTApfHxCcigxMzg4NzksMTM4ODgxLDI5NywxMzg5NDMpLGZ8fEJyKDEzODk1MywxMzg4ODEsMjk4LDEzODk0MykscD9tPTA6QnIoMTM4OTU1LDEz''@;'; put 'put ''ODg4MSwyOTksMTM4OTQzKTs7KXtpZigoMHxtKT49NjUpe3A9MTQ7YnJlYWt9aWYoKHA9MHxhW2wrMTMyNCsobTw8Mik+PjJdKT4+PjA+PTIpe3A9OTticmVha31zd2l0Y2goMHxwKXtjYXNlIDA6RjQobCxsKzQrKDIwKm18MCl8MCxjLDApO2JyZWFrO2Nhc2UgMTpGNChsLGwrNCsoMjAqbXww''@;'; put 'put ''KXwwLGYsMCl9bT1tKzF8MH1pZig5PT0oMHxwKSlCcigxMzg5NTcsMTM4ODgxLDMwMywxMzg5NDMpO2Vsc2UgaWYoMTQ9PSgwfHApKTt9KGwsYyxiLGYpLDY1IT0oKDB8YVthW3A+PjJdPj4yXSkrKDB8YVtjPj4yXSl8MCkmJkJyKDEzODkwMywxMzg4ODEsODYsMTM4ODkxKX1mdW5jdGlvbiBJ''@;'; put 'put ''bShsLGMsZil7Znw9MDt2YXIgbSxBLHcsYixwPTA7Yj1vZSxvZT1vZSsxNnwwLHc9YiwwfGFbKHA9MTU4NCsobHw9MCkrKChjfD0wKTw8Mil8MCk+PjJdJiZCcigxMzkyNDYsMTM4ODgxLDI1NywxMzkyODEpLGFbbCsxMzI0KyhjPDwyKT4+Ml09ZixhW3A+PjJdPTEsbT1sKzE4NTIrKGY8PDQp''@;'; put 'put ''fDAscD1sKzQrKDIwKmN8MCl8MCwwfGFbKEE9bCsxODQ0KyhmPDwyKXwwKT4+Ml0/KFMzKHcscCxtKSxhW20+PjJdPWFbdz4+Ml0sYVttKzQ+PjJdPWFbdys0Pj4yXSxhW20rOD4+Ml09YVt3Kzg+PjJdLGFbbSsxMj4+Ml09YVt3KzEyPj4yXSk6KGFbbT4+Ml09YVtwPj4yXSxhW20rND4+Ml09''@;'; put 'put ''YVtwKzQ+PjJdLGFbbSs4Pj4yXT1hW3ArOD4+Ml0sYVttKzEyPj4yXT1hW3ArMTI+PjJdKSxhW2wrMTg4NCsoZjw8Mik+PjJdPTB8RWgobSksYVtBPj4yXT0xKygwfGFbQT4+Ml0pLG9lPWJ9ZnVuY3Rpb24gdV8obCxjKXt2YXIgZjtyZXR1cm4gbHw9MCxjfD0wLGY9MHxtcig4KSx1ZVtmKzQ+''@;'; put 'put ''PjBdPWMsYVtmPj4yXT1sLDB8Zn1mdW5jdGlvbiBtNigpe3ZhciBsPTAsYz0wO2ZvcihsPTB8YVs0NzQwMl0sMHwoYz0wfGFbNDc0MDBdKSYmKExFKGMsMSksYVs0NzQwMF09MCksYVsxNDAyMV09Njc7bDspYz0wfGFbbCs4MD4+Ml0sZl8obCksbD1jO2FbMTQwMjFdPTU2LGFbMTQwMzBdPTY4''@;'; put 'put ''LG1pWzYzJmFbKGM9MHxhWzQ3NDA1XSk+PjJdXShjLDAsNjQpLGFbMTQwMzBdPTU2LGFbMTQwMzldPTY5LG1pWzYzJmFbKGM9MHxhWzQ3NDA2XSk+PjJdXShjLDAsNjQpLGFbMTQwMzldPTU2LGZ1bmN0aW9uIE9CKCl7dmFyIGw9MCxjPTA7Zm9yKGw9MHxhWzQ3NDAzXTtjPTB8YVtsKzQ+PjJd''@;'; put 'put ''OylIdChsKSxsPWN9KCl9ZnVuY3Rpb24gRG0oKXt2YXIgZixwLGw9MCxjPTAsbT0wLEE9MDtmPTB8YVs0NzQwNl0scD0wfG1yKDQwKSwwfFB1KDB8YVs0NzQwNV0pJiZlQSgwKSxsPTB8UHUoZiksVHRbcCs0Pj4xXT1sO2U6ZG97aWYobClmb3IoYVtwPj4yXT0wfG1yKDI0Kmx8MCksbD0wLGM9''@;'; put 'put ''MHxtaVs2MyZhW2Y+PjJdXShmLDAsMTI4KTs7KXtpZighYyl7bD1mO2JyZWFrIGV9YVsobT0oMHxhW3A+PjJdKSsoMjQqbHwwKXwwKT4+Ml09YVsoQT1jKzh8MCk+PjJdLGFbbSs0Pj4yXT1hW0ErND4+Ml0sYVttKzg+PjJdPWFbQSs4Pj4yXSxhW20rMTI+PjJdPWFbQSsxMj4+Ml0sYVttKzE2''@;'; put 'put ''Pj4yXT1hW0ErMTY+PjJdLGFbbSsyMD4+Ml09YVtBKzIwPj4yXSxsPWwrMXwwLGM9MHxtaVs2MyZhW2Y+PjJdXShmLGMsOCl9ZWxzZSBsPWZ9d2hpbGUoMCk7cmV0dXJuIG1pWzYzJmFbbD4+Ml1dKGYsMCw2NCksMHxwfWZ1bmN0aW9uIGNfKGwpe2x8PTA7dmFyIGYsYz0wLHA9MDtmPTB8bXIo''@;'; put 'put ''NjQpLChjPTB8YVsocD1sKzR8MCk+PjJdKT4+PjA+PSgwfGFbbCs4Pj4yXSk+Pj4wJiYoRzAobCwxKSxjPTB8YVtwPj4yXSksdWVbYz4+MF09MCxhW3A+PjJdPWw9MHxhW2w+PjJdLGFbZis4Pj4yXT0wfG5hKGwpLGFbZisxMj4+Ml09YVthWzQ3NDAzXT4+Ml0sbWlbNjMmYVsocD0wfGFbNDc0''@;'; put 'put ''MDVdKT4+Ml1dKHAsZiwxKX1mdW5jdGlvbiBlQShsKXtsfD0wO3ZhciBBLHcsYz0wLGY9MCxwPTAsbT0wLGI9MDtBPTB8bXIoMzIpLGM9MHxQdSh3PTB8YVs0NzQwNV0pLGI9QSs4fDAsdWVbQSsxND4+MF09bDtlOmRve2lmKGMpZm9yKFR0W0ErMTI+PjFdPWMsYVtiPj4yXT0wfG1yKDU2KmN8''@;'; put 'put ''MCksbD0wLGM9MHxvMCh3KTs7KXtpZighYylicmVhayBlO3A9Yys4fDAsbT01NisoZj0oMHxhW2I+PjJdKSsoNTYqbHwwKXwwKXwwO2Rve2FbZj4+Ml09YVtwPj4yXSxmPWYrNHwwLHA9cCs0fDB9d2hpbGUoKDB8Zik8KDB8bSkpO2w9bCsxfDAsYz0wfGFbYz4+Ml19ZWxzZSBhW2I+PjJdPTB8''@;'; put 'put ''bXIoNTYpLFR0W0ErMTI+PjFdPTEsbT0wfG5hKDE5NTA1OSksYj0wfGFbYj4+Ml0sYVtiPj4yXT1tLGFbYis0Pj4yXT1hW2FbNDc0MDNdPj4yXX13aGlsZSgwKTttaVs2MyZhW3c+PjJdXSh3LDAsNjQpLG1pWzYzJmFbKGI9MHxhWzQ3NDA2XSk+PjJdXShiLEEsMSl9ZnVuY3Rpb24gSDQobCl7''@;'; put 'put ''bHw9MDt2YXIgQSx3LGIsYz0wLGY9MCxwPTAsbT0wO2I9b2Usb2U9b2UrMzJ8MCxBPWIsdz0wfG1yKDgpLG09MHxhW2FbNDc0MDNdPj4yXSxhW0E+PjJdPWFbbD4+Ml0sYVtBKzQ+PjJdPWFbbCs0Pj4yXSxhW0ErOD4+Ml09YVtsKzg+PjJdLGFbQSsxMj4+Ml09YVtsKzEyPj4yXSxhW0ErMTY+''@;'; put 'put ''PjJdPWFbbCsxNj4+Ml0sYVtBKzIwPj4yXT1hW2wrMjA+PjJdLGFbQSsyND4+Ml09YVtsKzI0Pj4yXSxhW0ErMjg+PjJdPWFbbCsyOD4+Ml0sMHxtJiYoMD09KDB8YVsobD1BKzR8MCk+PjJdKSYmMHwoYz0wfGFbbSs0Pj4yXSkmJihhW2w+PjJdPWMpLCtfWyhsPUErMTZ8MCk+PjNdPDAmJihm''@;'; put 'put ''PStfW20rMTY+PjNdKT49MCYmKF9bbD4+M109ZiksMD09KDB8YVtBPj4yXSkmJjB8KHA9MHxhW20+PjJdKSYmKGFbQT4+Ml09cCksMHwobD0xMjcmYVttKzI0Pj4yXSkmJihhWyhtPUErMjR8MCk+PjJdPTEyNyYocD0wfGFbbT4+Ml0pfGx8LTEyOCZwKSksYVt3Pj4yXT0wfG1pWzYzJmFbKG09''@;'; put 'put ''MHxhWzE0NCsoMHxhWzQ3NDA0XSk+PjJdKT4+Ml1dKG0sQSwxKSxhW3crND4+Ml09YVs0NzQwM10sYVs0NzQwM109dyxvZT1ifWZ1bmN0aW9uIE40KCl7dmFyIGwsYztsPTB8YVs0KyhjPTB8YVs0NzQwM10pPj4yXSxIdChjKSxhWzQ3NDAzXT1sfWZ1bmN0aW9uIEFmKGwpe2x8PTA7Zm9yKHZh''@;'; put 'put ''ciBjPTA7Oyl7aWYoISgoYz0wfHVlW2w+PjBdKTw8MjQ+PjI0KSl7bD0wO2JyZWFrfWlmKGM8PDI0Pj4yNCE9MzIpe2w9MTticmVha31sPWwrMXwwfXJldHVybiAwfGx9ZnVuY3Rpb24gYjEoKXt2YXIgbCxjLGY9MDtmPTB8QXMoNTYwNjgsMHxhWzQ1ODBdKSxsPTB8YVs0NzQwMl0sYz0wfG1y''@;'; put 'put ''KDE2KSxhW2MrOD4+Ml09ZiwyJnVlW2wrMTEyPj4wXSYmKHVlW2MrMTI+PjBdPTEpLG1pWzYzJmFbKGY9MHxhW2wrODQ+PjJdKT4+Ml1dKGYsYywxKX1mdW5jdGlvbiBrZCgpe3ZhciBsO3JldHVybiAwfG1pWzYzJmFbKGw9MHxhWzg0KygwfGFbNDc0MDJdKT4+Ml0pPj4yXV0obCwwLDI1Nil9''@;'; put 'put ''ZnVuY3Rpb24gTG0obCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwLG0sQT0wO209MHxtcigxNiksQT0wfGFbOCsoMHxtaVs2MyZhWyhBPTB8YVs4NCsocD0wfGFbNDc0MDJdKT4+Ml0pPj4yXV0oQSwwLDI1NikpPj4yXSxhW20rOD4+Ml09bCxtaVs2MyZhW0E+PjJdXShBLG0sMSksdWVbbCs5''@;'; put 'put ''Mj4+MF09ZiwxJnVlW3ArMTEyPj4wXSYmKHVlW2wrMTAwPj4wXT0xKSxhW2wrODg+PjJdPWN9ZnVuY3Rpb24gZl8obCl7aXMoMHxhWzg0KyhsfD0wKT4+Ml0pLFZiKGwpLEh0KGwpfWZ1bmN0aW9uIE9tKGwpe2x8PTA7dmFyIGMsZixwPTA7Zj1vZSxvZT1vZSsxNnwwLGM9ZiwwfHVlWzE4OTY2''@;'; put 'put ''MV18fCh1ZVsxODk2NjFdPTEscD0wfHRBKCksYVtjPj4yXT1sLGFbYys0Pj4yXT1wLFhyKDEsMTQwNTc1LGMpLHJ4KCkpLG9lPWZ9ZnVuY3Rpb24gdEEoKXtyZXR1cm4gMHxmdW5jdGlvbiBlNyhsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtyZXR1cm4obHw9MCk/KDB8KGY9MHxhWyhjPWwr''@;'; put 'put ''Mjg0fDApPj4yXSkmJmY+Pj4wPj0obT0wfGFbKHA9bCsyOTJ8MCk+PjJdKT4+PjAmJihGYVszMSZhWzQ4KyhBPTB8YVtsKzE0ND4+Ml0pPj4yXV0oQSxtLGYsbCs0MDR8MCksYVtwPj4yXT1hW2M+PjJdKSxsPTErKDB8YVtsKzQwND4+Ml0pfDApOmw9MCwwfGx9KDB8YVs0NzQwN10pfWZ1bmN0''@;'; put 'put ''aW9uIHJ4KCl7dmFyIGYscCxsPTAsYz0wO3A9b2Usb2U9b2UrMTZ8MCxmPXAsYVs0KyhsPTB8YVs0NzQxMF0pPj4yXT1hW2w+PjJdLCgwfChjPTB8YVs0NzQxOV0pKT4wJiYoSTYobCwwfGFbNDc0MTddLGMpLGw9MHxhWzQ3NDEwXSksSTYobCwwfGFbNDc0MTZdLDB8YVs0NzQxOF0pLChsPTB8''@;'; put 'put ''YVs0KyhjPTB8YVs0NzQxMF0pPj4yXSk+Pj4wPj0oMHxhW2MrOD4+Ml0pPj4+MCYmKEcwKGMsMSksYz1sPTB8YVs0NzQxMF0sbD0wfGFbbCs0Pj4yXSksYVtjKzQ+PjJdPWwrMSx1ZVtsPj4wXT0wLGFbNCsobD0wfGFbNDc0MTBdKT4+Ml09Yz0wfGFbbD4+Ml0sYVtmPj4yXT1jLFhyKDMsMTQw''@;'; put 'put ''NTkxLGYpLG9lPXB9ZnVuY3Rpb24gYXgobCl7dmFyIGMsZixwO2x8PTAsYz1vZSxvZT1vZSsxNnwwLGY9YyxhWzQ3NDA5XT0yNjgsdWVbMTg5NjYxXT0xLHA9MHx0QSgpLGFbZj4+Ml09bCxhW2YrND4+Ml09cCxYcigxLDE0MDY1OSxmKSxvZT1jfWZ1bmN0aW9uIFBCKGwpe3ZhciBjO3JldHVy''@;'; put 'put ''biBsfD0wLGM9MHxtcigxMjApLGFbYysxMDA+PjJdPS0xLHVlW2MrODg+PjBdPS0xLFJtKGMsNTY0MDAsMjIsbCwxNDE2MTEpLDB8Y31mdW5jdGlvbiB4RyhsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8bXIoMTA0KSxUdFtjKzgwPj4xXT0xLFR0W2MrODI+PjFdPTEsUm0oYyw1NjIyNCwyMixs''@;'; put 'put ''LDE0MDk2NSksMHxjfWZ1bmN0aW9uIE0zKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgbSxwPTA7cmV0dXJuIG09b2Usb2U9b2UrMzJ8MCxhWyhwPW0pPj4yXT0wLGFbcCs0Pj4yXT0wLGFbcCs4Pj4yXT0wLGFbcCsxMj4+Ml09MCxhW3ArMTY+PjJdPTAsYVtwKzIwPj4yXT0wLGFbcCsyND4+''@;'; put 'put ''Ml09MCxhW3ArMjg+PjJdPTAsX1twKzE2Pj4zXT0tMSxhW3ArMjQ+PjJdPTEyNyZmLDB8YyYmUm0ocCw1NjIwMCwzLGMsMTQwODE2KSxwPTB8bWlbNjMmYVsoZj0wfGFbbCsxNDQ+PjJdKT4+Ml1dKGYscCwxKSxvZT1tLDB8cH1mdW5jdGlvbiBseChsKXtsfD0wLGFbNDczOTldPTAsUm0oMTg5''@;'; put 'put ''NTk2LDU2MTkyLDEsbCwxNDA3NTIpfWZ1bmN0aW9uIHhzKGwpe3ZhciBjO3JldHVybiBsfD0wLFJtKGM9MHxtcig0MCksNTYxNzYsMixsLDE0MDY5OCksMHxjfWZ1bmN0aW9uIFJtKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBrLE0sRCxBPTAsdz0wLGI9MDtmb3Io''@;'; put 'put ''RD1vZSxvZT1vZSsxNnwwLE09RCxrPUQrOHwwO2I9MHxhW3A+PjJdOylBPTB8YVtwKzQ+PjJdLGFbaz4+Ml09Yiwodz0wfGN3KGssYyxmLDgsMTA0KSk/QT0yNTUmKDB8KEE9MHxSaVsxMjcmYVt3KzQ+PjJdXShsLEEpKXxidFsxODk2NjBdKTooYVtNPj4yXT1iLGFbTSs0Pj4yXT1tLFhyKDAs''@;'; put 'put ''MTQwNzA0LE0pLEE9MSksdWVbMTg5NjYwXT1BLHA9cCs4fDA7b2U9RH1mdW5jdGlvbiB4aChsLGMsZixwLG0pe3ZhciBBLHcsYixrLE0sRDtjfD0wLGZ8PTAscHw9MCxtfD0wLE09b2Usb2U9b2UrNDh8MCxrPU0rMjR8MCxiPU0rOHwwLHc9TSxBPTB8UEwobHw9MCxEPU0rMzZ8MCwxMCk7ZG97''@;'; put 'put ''aWYoKDB8YVtEPj4yXSkhPSgwfGwpKXtpZigoMHxBKT4oMHxwKSl7YVtiPj4yXT1jLGFbYis0Pj4yXT1sLGFbYis4Pj4yXT1wLFhyKDAsMTQwODg3LGIpLGw9MTticmVha31pZigoMHxBKTwoMHxmKSl7YVtrPj4yXT1jLGFbays0Pj4yXT1sLGFbays4Pj4yXT1mLFhyKDAsMTQwOTI2LGspLGw9''@;'; put 'put ''MTticmVha31hW20+PjJdPUEsbD0wO2JyZWFrfWFbdz4+Ml09YyxhW3crND4+Ml09bCxYcigwLDE0MDg1Nix3KSxsPTF9d2hpbGUoMCk7cmV0dXJuIG9lPU0sMHxsfWZ1bmN0aW9uIFRoKCl7dmFyIHcsYixsPTAsYz0wLGY9MCxwPTAsbT0wLEE9MDtiPW9lLG9lPW9lKzE2fDAsdz1iLGFbNDc0''@;'; put 'put ''MDldPTAsYz0wO2U6ZG97dDpkb3tzd2l0Y2goMHx1ZVsxODk2NjNdKXtjYXNlIDI6bD0tMTticmVhayBlO2Nhc2UgMDp1ZVsxODk2NjNdPTEsQT02LGw9MTQxNzMyLGM9MDticmVhaztkZWZhdWx0OmlmKDB8dWVbKGw9MHxhWzQ3NDA4XSk+PjBdKXtBPShjPTB8Z3gobCkpLWx8MDticmVhayB0''@;'; put 'put ''fXVlWzE4OTY2M109MixBPTcsbD0xNDE3Mzk7YnJlYWsgdH19d2hpbGUoMCk7YVs0NzQxN109YVs0NzQxNl0sYVs0NzQxOV09YVs0NzQxOF0sYVs0NzQxNl09bCxhWzQ3NDE4XT1BLG09MHxhWzQ3NDA3XSwocD0oZj0wfGFbNDc0MTJdKS0oMHxhWzQ3NDExXSl8MCk/KGY+Pj4wPCgwfGFbNDc0''@;'; put 'put ''MTNdKT4+PjA/bD1mOihHMCgxODk2NDQsMSksbD0wfGFbNDc0MTJdKSx1ZVtsPj4wXT0wLGFbNDc0MTJdPWw9MHxhWzQ3NDExXSxsPTB8a0EobSxsLHAsMCkpOmw9MHxrQShtLGwsQSwwPT0oMHxBKSYxKSwwIT0oMHxsKXwwIT0oMHx1ZVsxODk2NjFdKXx8KG09MHx5UCgwfFZHKDB8YVs0NzQw''@;'; put 'put ''N10pKSxBPTB8dEEoKSxhW3c+PjJdPW0sYVt3KzQ+PjJdPUEsWHIoMSwxNDA1NzUsdykscngoKSx1ZVsxODk2NjFdPTEsYVs0NzQwOV09MjY4KSwwfGMmJihhWzQ3NDA4XT1jKSxsPTB8YVs0NzQwOV19d2hpbGUoMD09KDB8bCkpO3JldHVybiBvZT1iLDB8bH1mdW5jdGlvbiBneChsKXt2YXIg''@;'; put 'put ''cCxBLGM9MCxmPTAsbT0wO0E9b2Usb2U9b2UrMTZ8MCxwPUEsYz0xKyhsfD0wKXwwLGY9MHx1ZVtsPj4wXTtlOmRve2lmKGY8PDI0Pj4yND09NjApeyhmPTB8dWVbYz4+MF0pPDwyND4+MjQ9PTMzPzB8bjIobCsyfDAsMTQxNzQ3LDIpPyhmPWMsbT01KTooYz1mPTB8SkIobCs0fDApLGY9MHx1''@;'; put 'put ''ZVtmPj4wXSxtPTgpOm09Njt0OmZvcig7OylpZig1IT0oMHxtKSlpZig2IT0oMHxtKSl7aWYoOD09KDB8bSkpe2lmKGY8PDI0Pj4yND09NjIpe209MTA7YnJlYWt9bT05O2JyZWFrfX1lbHNle3N3aXRjaChmPDwyND4+MjQpe2Nhc2UgNjI6Y2FzZSAwOm09ODtjb250aW51ZSB0fWY9YysxfDAs''@;'; put 'put ''bT01fWVsc2UgYz1mLGY9MHx1ZVtmPj4wXSxtPTY7aWYoOT09KDB8bSkpe1hyKDAsMTQxNzUwLHApLHVlWzE4OTY2MF09MTticmVha31pZigxMD09KDB8bSkpe2M9YysxfDA7YnJlYWt9fWVsc2UgZm9yKGM9bCxsPWY7Oyl7c3dpdGNoKGw8PDI0Pj4yNCl7Y2FzZSA2MDpjYXNlIDA6YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDM4OjM1PT0oMHx1ZVsoZj1jKzF8MCk+PjBdKT9tPTE1OmY9MHxNbGUoZiwxODk2NDQpO2JyZWFrO2RlZmF1bHQ6bT0xNX0xNT09KDB8bSkmJihtPTAsKGY9MHxhWzQ3NDEyXSk+Pj4wPj0oMHxhWzQ3NDEzXSk+Pj4wJiYoRzAoMTg5NjQ0LDEpLGY9MHxhWzQ3NDEyXSksYVs0NzQx''@;'; put 'put ''Ml09ZisxLHVlW2Y+PjBdPWwsZj1jKzF8MCksYz1mLGw9MHx1ZVtmPj4wXX19d2hpbGUoMCk7cmV0dXJuIG9lPUEsMHxjfWZ1bmN0aW9uIEpCKGwpe3ZhciBiLGssYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7az1vZSxvZT1vZSsxNnwwLGI9ayxtPTEsYz1sfD0wO2U6Zm9yKDs7KXtwPTA9PSgw''@;'; put 'put ''fG0pLGY9Yzt0OmZvcig7Oyl7aWYocClicmVhayBlO3N3aXRjaChBPWYrMXwwLDB8dWVbZj4+MF0pe2Nhc2UgMDpjPUE7YnJlYWsgZTtjYXNlIDYwOnc9NTticmVhayB0O2Nhc2UgNjI6Yz0tMTticmVhayB0O2RlZmF1bHQ6Zj1BfX01PT0oMHx3KSYmKHc9MCxjPTEpLG09bStjfDAsYz1BfWY9''@;'; put 'put ''YystMXwwO2Rve2lmKDB8dWVbZj4+MF0pe2lmKChjPWMrLTN8MCk+Pj4wPj1sPj4+MCYmMD09KDB8bjIoYywxNDE3NDcsMikpKWJyZWFrO1hyKDAsMTQxNzkxLGIpLHVlWzE4OTY2MF09MX19d2hpbGUoMCk7cmV0dXJuIG9lPWssMHxmfWZ1bmN0aW9uIGlBKGwsYyl7bHw9MCxjfD0wO3ZhciBm''@;'; put 'put ''PTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wO2lmKGY9MHxSMCgyOCkpe2ZvcihwPTAsbT0wOyEoKDB8cCk+PSgwfGMpKTspYmU9KDB8YVs0KygwfGFbbCsocDw8Mik+PjJdKT4+Ml0pK218MCxwPXArMXwwLG09YmU7Zm9y''@;'; put 'put ''KGFbKEs9Zis4fDApPj4yXT0wfFhmKG08PDQpLGFbKHBlPWYrMTJ8MCk+PjJdPTB8WGYoNCsoYzw8Mil8MCksYVsobWU9ZisxNnwwKT4+Ml09MHxYZihwPW08PDIpLHA9MHxYZihwKSxhWyhiZT1mKzIwfDApPj4yXT1wLGFbZis0Pj4yXT1tLGFbZj4+Ml09YyxtPTAsdz0wO2FbKDB8YVtwZT4+''@;'; put 'put ''Ml0pKyh3PDwyKT4+Ml09bSwhKCgwfHcpPj0oMHxjKSk7KXtmb3IoRD1tKy0xfDAsQT0wLGI9bSxSPU09MHxhWzQrKEc9MHxhWyhrPWwrKHc8PDIpfDApPj4yXSk+PjJdOyEoKDB8QSk+PSgwfFIpKTspYVsoUj0oMHxhW0s+PjJdKSsoYjw8NCl8MCk+PjJdPWFbKHA9KDB8YVtHPj4yXSkrKEE8''@;'; put 'put ''PDQpfDApPj4yXSxhW1IrND4+Ml09YVtwKzQ+PjJdLGFbUis4Pj4yXT1hW3ArOD4+Ml0sYVtSKzEyPj4yXT1hW3ArMTI+PjJdLGFbKDB8YVttZT4+Ml0pKyhiPDwyKT4+Ml09Uj1iKzF8MCxhWyhwPTB8YVtiZT4+Ml0pKyhiPDwyKT4+Ml09YistMSxBPUErMXwwLGI9UixSPTB8YVs0KyhPZT0w''@;'; put 'put ''fGFbaz4+Ml0pPj4yXSxHPU9lO2FbKDB8YVttZT4+Ml0pKygoT2U9RCtNfDApPDwyKT4+Ml09bSxhW3ArKG08PDIpPj4yXT1PZSxtPWIsdz13KzF8MH0hZnVuY3Rpb24gWm0obCl7YVsyNCsobHw9MCk+PjJdPTB8ZnVuY3Rpb24gRGgobCl7dmFyIHAsbSxjPTAsZj0wO2ZvcihtPTB8UjAoKHA9''@;'; put 'put ''MisobHw9MCl8MCk8PDIpLGM9MHxUZigwfHZyKGwsbCksOCksZj0wOyEoKDB8Zik+PSgwfGwpKTspYVttKyhmPDwyKT4+Ml09YyxjPWMrKGw8PDMpfDAsZj1mKzF8MDtmb3IoOyEoKDB8bCk+PSgwfHApKTspYVttKyhsPDwyKT4+Ml09MCxsPWwrMXwwO3JldHVybiAwfG19KDB8YVtsKzQ+PjJd''@;'; put 'put ''KSxmdW5jdGlvbiByUChsKXt2YXIgZixBLHcsYixNLEQsUixHLGM9MCxwPTAsbT0wLGs9MCxLPTAscGU9MDtmb3IoRz1vZSxvZT1vZSszMnwwLHc9RysxNnwwLEE9RyxiPTB8YVs0KyhsfD0wKT4+Ml0sTT0wfGFbbCs4Pj4yXSxEPTB8YVtsKzE2Pj4yXSxSPTB8YVtsKzIwPj4yXSxmPTB8YVts''@;'; put 'put ''KzI0Pj4yXSxjPTA7ISgoMHxjKT49KDB8YikpOyl7Zm9yKG09TSsoKEs9MHxhW1IrKGM8PDIpPj4yXSk8PDQpfDAsYVtBPj4yXT1hWyhwPU0rKGM8PDQpfDApPj4yXSxhW0ErND4+Ml09YVtwKzQ+PjJdLGFbQSs4Pj4yXT1hW3ArOD4+Ml0sYVtBKzEyPj4yXT1hW3ArMTI+PjJdLGFbdz4+Ml09''@;'; put 'put ''YVttPj4yXSxhW3crND4+Ml09YVttKzQ+PjJdLGFbdys4Pj4yXT1hW20rOD4+Ml0sYVt3KzEyPj4yXT1hW20rMTI+PjJdLHBlPStYOChBLHcpLF9bKG09MHxhW2YrKGM8PDIpPj4yXSkrKEs8PDMpPj4zXT1wZSxfWygwfGFbZisoSzw8Mik+PjJdKSsoYzw8Myk+PjNdPXBlLGw9KDB8Syk9PSgw''@;'; put 'put ''fChsPWMrLTF8MCkpP2MrLTJ8MDpsOyEoKDB8bCk8PS0xKTspMHxyYyhjLGwsTSxELFIpJiYwfHJjKGwsYyxNLEQsUikmJihrPU0rKGw8PDQpfDAsYVtBPj4yXT1hW3A+PjJdLGFbQSs0Pj4yXT1hW3ArND4+Ml0sYVtBKzg+PjJdPWFbcCs4Pj4yXSxhW0ErMTI+PjJdPWFbcCsxMj4+Ml0sYVt3''@;'; put 'put ''Pj4yXT1hW2s+PjJdLGFbdys0Pj4yXT1hW2srND4+Ml0sYVt3Kzg+PjJdPWFbays4Pj4yXSxhW3crMTI+PjJdPWFbaysxMj4+Ml0sMHx6NChBLHcsYixiLGIsTSxEKSkmJihhW0E+PjJdPWFbcD4+Ml0sYVtBKzQ+PjJdPWFbcCs0Pj4yXSxhW0ErOD4+Ml09YVtwKzg+PjJdLGFbQSsxMj4+Ml09''@;'; put 'put ''YVtwKzEyPj4yXSxhW3c+PjJdPWFbaz4+Ml0sYVt3KzQ+PjJdPWFbays0Pj4yXSxhW3crOD4+Ml09YVtrKzg+PjJdLGFbdysxMj4+Ml09YVtrKzEyPj4yXSxwZT0rWDgoQSx3KSxfW20rKGw8PDMpPj4zXT1wZSxfWygwfGFbZisobDw8Mik+PjJdKSsoYzw8Myk+PjNdPXBlKSxsPWwrLTF8MDtj''@;'; put 'put ''PWMrMXwwfW9lPUd9KGwpfShmKX1lbHNlIGY9MDtyZXR1cm4gMHxmfWZ1bmN0aW9uIFhmKGwpe3JldHVybiAwfCgobHw9MCk/MHxSMChsKTowKX1mdW5jdGlvbiBBNihsLGMpe2N8PTA7dmFyIGYscCxtLEEsdyxiLGssTT0wLEQ9MDtmb3Ioaz1vZSxvZT1vZSs0OHwwLHc9ayszMnwwLEE9aysx''@;'; put 'put ''NnwwLG09ayxiPTB8YVsobHw9MCk+PjJdLHA9KGY9MHxhW2wrND4+Ml0pLTF8MCxsPTA7Oyl7aWYoKDB8bCk+PSgwfGYpKXtsPTE7YnJlYWt9aWYoTT1iKyhsPDw0KXwwLGFbbT4+Ml09YVsoRD1iKygoKHArbHwwKSUoMHxmKXwwKTw8NCl8MCk+PjJdLGFbbSs0Pj4yXT1hW0QrND4+Ml0sYVtt''@;'; put 'put ''Kzg+PjJdPWFbRCs4Pj4yXSxhW20rMTI+PjJdPWFbRCsxMj4+Ml0sYVtBPj4yXT1hW00+PjJdLGFbQSs0Pj4yXT1hW00rND4+Ml0sYVtBKzg+PjJdPWFbTSs4Pj4yXSxhW0ErMTI+PjJdPWFbTSsxMj4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFb''@;'; put 'put ''Yys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sMT09KDB8bmMobSxBLHcpKSl7bD0wO2JyZWFrfWw9bCsxfDB9cmV0dXJuIG9lPWssMHxsfWZ1bmN0aW9uIHZ4KGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLE0sRCxSLEcsSyxiZSxBPTAsdz0wLGs9MCxwZT0w''@;'; put 'put ''LG1lPTA7Zm9yKGJlPW9lLG9lPW9lKzY0fDAsRD1iZSs0OHwwLE09YmUrMzJ8MCxwZT00LGs9MHxSMCg0MCksYVtrPj4yXT0wLFI9YmUrMTZ8MCxHPWJlLEs9MHxhW2Y+PjJdLGI9MHxhW2YrND4+Ml0scGU9MHxvNCgxODk2ODAsMSwwfGssMHxwZSksaz1PbixmPU1uPTAsTW49MCwwIT0oMHxm''@;'; put 'put ''KSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW2Y+PjJdLDB8cGUsMHxrKSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6QT0tMSxmPTE9PSgwfEEpP09uOjA7Oyl7aWYoMHxmKXtmPS0xO2JyZWFrfWlmKE1uPTAsYVtEPj4yXT1hW3A+PjJdLGFbRCs0Pj4yXT1hW3ArND4+Ml0sYVtEKzg+PjJdPWFbcCs4''@;'; put 'put ''Pj4yXSxhW0QrMTI+PjJdPWFbcCsxMj4+Ml0sVzEoMjgsMHxSLDB8RCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbZj4+Ml0sMHxwZSwwfGspKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKWlmKGFbcD4+Ml09YVtSPj4yXSxhW3ArND4+Ml09''@;'; put 'put ''YVtSKzQ+PjJdLGFbcCs4Pj4yXT1hW1IrOD4+Ml0sYVtwKzEyPj4yXT1hW1IrMTI+PjJdLE1uPTAsYVtEPj4yXT1hWyh3PXArMTZ8MCk+PjJdLGFbRCs0Pj4yXT1hW3crND4+Ml0sYVtEKzg+PjJdPWFbdys4Pj4yXSxhW0QrMTI+PjJdPWFbdysxMj4+Ml0sVzEoMjgsMHxHLDB8RCksZj1NbixN''@;'; put 'put ''bj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbZj4+Ml0sMHxwZSwwfGspKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKWlmKGFbdz4+Ml09YVtHPj4yXSxhW3crND4+Ml09YVtHKzQ+PjJdLGFbdys4Pj4yXT1hW0crOD4+Ml0sYVt3KzEyPj4yXT1hW0crMTI+''@;'; put 'put ''PjJdLGFbNDc0NTldPTAsTW49MCwkbCgxMTUsNCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbZj4+Ml0sMHxwZSwwfGspKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKXtpZihBPTB8YVs0NzQ2MF0sYVs0NzQ1OV09MSsoZj0wfGFbNDc0NTld''@;'; put 'put ''KSxhWyhmPUErKGY8PDQpfDApPj4yXT1hW0s+PjJdLGFbZis0Pj4yXT1hW0srND4+Ml0sYVtmKzg+PjJdPWFbSys4Pj4yXSxhW2YrMTI+PjJdPWFbSysxMj4+Ml0sTW49MCxhW00+PjJdPWFbcD4+Ml0sYVtNKzQ+PjJdPWFbcCs0Pj4yXSxhW00rOD4+Ml09YVtwKzg+PjJdLGFbTSsxMj4+Ml09''@;'; put 'put ''YVtwKzEyPj4yXSxhW0Q+PjJdPWFbdz4+Ml0sYVtEKzQ+PjJdPWFbdys0Pj4yXSxhW0QrOD4+Ml09YVt3Kzg+PjJdLGFbRCsxMj4+Ml09YVt3KzEyPj4yXSxmPTB8ZTEoMSwwfGwsMHxjLDB8SywwfGIsMHxNLDB8RCksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxUaSgwfGFb''@;'; put 'put ''QT4+Ml0sMHxwZSwwfGspKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTp3PS0xLDEhPSgwfHcpKXttZT04O2JyZWFrfWY9T259ZWxzZSBmPU9uO2Vsc2UgZj1PbjtlbHNlIGY9T259cmV0dXJuIDg9PSgwfG1lKSYmKC0xPT0oMHxmKT9mPS0xOihhW20rND4+Ml09YVs0NzQ1OV0sYVttPj4yXT1hWzQ3''@;'; put 'put ''NDYwXSxmPTApKSxIdCgwfHBlKSxvZT1iZSwwfGZ9ZnVuY3Rpb24gUG0obCxjKXt2YXIgZixwLG0sQSx3O2x8PTAsQT0rRjAoKyh3PShtPStfWyhwPTgrKGN8PTApfDApPj4zXSkqbSsoZj0rX1tjPj4zXSkqZikpLHc+MWUtNiYmKF9bYz4+M109Zi9BLF9bcD4+M109bS9BKSxhW2w+PjJdPWFb''@;'; put 'put ''Yz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXX1mdW5jdGlvbiBBeChsKXt2YXIgbSxjPTAsZj0wLHA9MDttPW9lLG9lPW9lKzMyfDAscD1tKzE2fDAsZj1tLCgwfGFbNDc0NjNdKTwoMHwobHw9MCkpJiYoKGM9MHxhWzQ3''@;'; put 'put ''NDYwXSk/KGY9MHxaYShjLGw8PDQpLGFbNDc0NjBdPWYsZnx8KGY9MHxhWzE1NzEyXSxhW3A+PjJdPTE0MTgzMSxhW3ArND4+Ml09NTM3LGFbcCs4Pj4yXT0xNDE5ODQsVDAoZiwxNDE4MzkscCksV2UoMTg5NjgwLDEpKSk6KHA9MHxSMChsPDw0KSxhWzQ3NDYwXT1wLHB8fChwPTB8YVsxNTcx''@;'; put 'put ''Ml0sYVtmPj4yXT0xNDE4MzEsYVtmKzQ+PjJdPTUzMSxhW2YrOD4+Ml09MTQxOTY2LFQwKHAsMTQxODM5LGYpLFdlKDE4OTY4MCwxKSkpLGFbNDc0NjNdPWwpLG9lPW19ZnVuY3Rpb24geTYobCxjKXt2YXIgZixwO3JldHVybisgK0YwKCsoKHA9K19bOCsoY3w9MCk+PjNdLStfWzgrKGx8PTAp''@;'; put 'put ''Pj4zXSkqcCsoZj0rX1tjPj4zXS0rX1tsPj4zXSkqZikpfWZ1bmN0aW9uIG9BKGwpe3ZhciBjO3JldHVybisoYz0xLShsPStsKSkqYyooMypsKX1mdW5jdGlvbiBLZihsLGMsZil7dmFyIHA7bHw9MCxfWyhjfD0wKT4+M109K19bYz4+M10qKGY9K2YpLF9bKHA9Yys4fDApPj4zXT0rX1twPj4z''@;'; put 'put ''XSpmLGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdfWZ1bmN0aW9uIFNkKGwpe3JldHVybisobD0rbCkqbCozKigxLWwpfWZ1bmN0aW9uIG1fKGwsYyxmKXt2YXIgcDtsfD0wLF9bKGN8PTApPj4zXT0r''@;'; put 'put ''X1tjPj4zXSsgK19bKGZ8PTApPj4zXSxfWyhwPWMrOHwwKT4+M109K19bcD4+M10rICtfW2YrOD4+M10sYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19ZnVuY3Rpb24gYUEobCxjLGYpe3ZhciBwO2x8''@;'; put 'put ''PTAsX1soY3w9MCk+PjNdPStfW2M+PjNdLStfWyhmfD0wKT4+M10sX1socD1jKzh8MCk+PjNdPStfW3A+PjNdLStfW2YrOD4+M10sYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19ZnVuY3Rpb24gS0Io''@;'; put 'put ''bCl7cmV0dXJuKyhsPTEtKGw9K2wpKSpsKmx9ZnVuY3Rpb24gdl8obCl7cmV0dXJuKyhsPStsKSpsKmx9ZnVuY3Rpb24geXgobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGY9MCxwPTE7ISgoMHxwKT49KDB8YykpOylmPStGMCgrKChBPStfW2wrKHA8PDQpKzg+''@;'; put 'put ''PjNdLStfW2wrKCh3PXArLTF8MCk8PDQpKzg+PjNdKSpBKyhtPStfW2wrKHA8PDQpPj4zXS0rX1tsKyh3PDw0KT4+M10pKm0pKStmLHA9cCsxfDA7cmV0dXJuK2Z9ZnVuY3Rpb24gZnUobCxjLGYpe2x8PTAsY3w9MDt2YXIgQSx3LGIsayxNLGJlLE9lLEJlLGplLGV0LHJ0LEdlLGx0LHA9MCxt''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxMZT0wLEhlPTAsTXQ9MCxrdD0wO2x0PW9lLG9lPW9lKzY0fDAsYmU9bHQrMzJ8MCxCZT0oT2U9bHQpKzE2fDAsamU9MTYrKGZ8PTApfDAsZXQ9ZiszMnwwLHJ0PWYrNDh8MCxHZT1mKzh8MCxBPWYrMjR8MCx3PWYrNDB8MCxiPWYrNTZ8MCxr''@;'; put 'put ''PU9lKzh8MCxNPU9lKzI0fDAsbT0wO2U6Zm9yKDs7KXtpZigoMHxtKT49KDB8Yykpe3A9MTticmVha31hW09lPj4yXT1hWyhEPWwrKG08PDUpfDApPj4yXSxhW09lKzQ+PjJdPWFbRCs0Pj4yXSxhW09lKzg+PjJdPWFbRCs4Pj4yXSxhW09lKzEyPj4yXT1hW0QrMTI+PjJdLGFbQmU+PjJdPWFb''@;'; put 'put ''KEQ9bCsobTw8NSkrMTZ8MCk+PjJdLGFbQmUrND4+Ml09YVtEKzQ+PjJdLGFbQmUrOD4+Ml09YVtEKzg+PjJdLGFbQmUrMTI+PjJdPWFbRCsxMj4+Ml0sRD0wfFJHKGYsT2UsYmUpO3Q6ZG97aWYoNCE9KDB8RCkpZm9yKFI9K19bT2U+PjNdLEc9K19baz4+M10sSz0rX1tCZT4+M10scGU9K19b''@;'; put 'put ''TT4+M10scD0wOzspe2lmKCgwfHApPj0oMHxEKSlicmVhayB0O2lmKCEoKG1lPStfW2JlKyhwPDwzKT4+M10pPDFlLTZ8bWU+Ljk5OTk5OXx8KEhlPW1lKm1lKm1lLGt0PTMqbWUsTXQ9MS1tZSxtZT1rdCptZSpNdCxMZT1NdCpNdCxrdCo9TGUsTXQqPUxlLExlPStfW2plPj4zXSprdCsgK19b''@;'; put 'put ''Zj4+M10qTXQrICtfW2V0Pj4zXSptZSsgK19bcnQ+PjNdKkhlLEhlPStfW0E+PjNdKmt0KyArX1tHZT4+M10qTXQrICtfW3c+PjNdKm1lKyArX1tiPj4zXSpIZSxtZT1MZS1SLE10PUhlLUcsTXQqTXQrbWUqbWU8LjAwMSl8fChrdD1MZS1LLE10PUhlLXBlLE10Kk10K2t0Kmt0PC4wMDEpKSl7''@;'; put 'put ''cD0wO2JyZWFrIGV9cD1wKzF8MH19d2hpbGUoMCk7bT1tKzF8MH1yZXR1cm4gb2U9bHQsMHxwfWZ1bmN0aW9uIFJHKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG1lLGJlLE9lLExlLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDtMZT1vZSxvZT1vZSs5Nnww''@;'; put 'put ''LG1lPUxlKzQ4fDAsYmU9TGUrMjR8MCxrPUxlLEE9K19bMTYrKGN8PTApPj4zXS0oRz0rX1tjPj4zXSksYj0rX1tjKzI0Pj4zXS0oSz0rX1tjKzg+PjNdKSxhWyhPZT1MZSs4MHwwKT4+Ml09MDtlOmRve2lmKDAhPUEpaWYoYi89QSxNPWwrMTZ8MCxEPWwrMzJ8MCxSPWwrNDh8MCxROCgrX1ts''@;'; put 'put ''Kzg+PjNdLStfW2w+PjNdKmIsK19bbCsyND4+M10tK19bTT4+M10qYiwrX1tsKzQwPj4zXS0rX1tEPj4zXSpiLCtfW2wrNTY+PjNdLStfW1I+PjNdKmIsbWUpLF9bbWU+PjNdPWIqRy1LKyArX1ttZT4+M10scD0wfHVBKG1lLGJlKSw0PT0oMHxwKSljPTQ7ZWxzZXtmb3IobT1tZSs4fDAsdz1t''@;'; put 'put ''ZSsxNnwwLGs9bWUrMjR8MCxBPTEvQSxjPTA7ISgoMHxjKT49KDB8cCkpOykoYj0rX1tiZSsoYzw8Myk+PjNdKT49MCZiPD0xJiYoUTgoK19bbD4+M10sK19bTT4+M10sK19bRD4+M10sK19bUj4+M10sbWUpLChLPSgrX1ttZT4+M10tRysoKCtfW2s+PjNdKmIrICtfW3c+PjNdKSpiKyArX1tt''@;'; put 'put ''Pj4zXSkqYikqQSk+PTAmSzw9MSkmJko4KGIsZixPZSksYz1jKzF8MDtjPTB8YVtPZT4+Ml19ZWxzZXtpZihROCgrX1tsPj4zXSwrX1tsKzE2Pj4zXSwrX1tsKzMyPj4zXSwrX1tsKzQ4Pj4zXSxtZSksX1ttZT4+M109K19bbWU+PjNdLUcscGU9MHx1QShtZSxiZSksMCE9Yil7aWYoND09KDB8''@;'; put 'put ''cGUpKXtjPTQ7YnJlYWt9Zm9yKE09bCs4fDAsRD1sKzI0fDAsUj1sKzQwfDAscD1sKzU2fDAsbT1tZSs4fDAsdz1tZSsxNnwwLGs9bWUrMjR8MCxBPTEvYixjPTA7ISgoMHxjKT49KDB8cGUpKTspKGI9K19bYmUrKGM8PDMpPj4zXSk+PTAmYjw9MSYmKFE4KCtfW00+PjNdLCtfW0Q+PjNdLCtf''@;'; put 'put ''W1I+PjNdLCtfW3A+PjNdLG1lKSwoRz0oK19bbWU+PjNdLUsrKCgrX1trPj4zXSpiKyArX1t3Pj4zXSkqYisgK19bbT4+M10pKmIpKkEpPj0wJkc8PTEpJiZKOChiLGYsT2UpLGM9YysxfDA7Yz0wfGFbT2U+PjJdO2JyZWFrfVE4KCtfW2wrOD4+M10sK19bbCsyND4+M10sK19bbCs0MD4+M10s''@;'; put 'put ''K19bbCs1Nj4+M10sbWUpLF9bbWU+PjNdPStfW21lPj4zXS1LLGM9ND09KDB8KHc9MHx1QShtZSxrKSkpO3Q6ZG97aWYoND09KDB8cGUpKXtpZihjKXtjPTQ7YnJlYWsgZX1mb3IoYz0wOzspe2lmKCgwfGMpPj0oMHx3KSlicmVhayB0O0o4KCtfW2srKGM8PDMpPj4zXSxmLE9lKSxjPWMrMXww''@;'; put 'put ''fX1lbHNle2lmKGMpZm9yKGM9MDs7KXtpZigoMHxjKT49KDB8cGUpKWJyZWFrIHQ7SjgoK19bYmUrKGM8PDMpPj4zXSxmLE9lKSxjPWMrMXwwfWVsc2UgcD0wO2Zvcig7Oyl7aWYoKDB8cCk+PSgwfHBlKSlicmVhayB0O2ZvcihtPWJlKyhwPDwzKXwwLGM9MDshKCgwfGMpPj0oMHx3KSk7KShB''@;'; put 'put ''PStfW20+PjNdKT09K19baysoYzw8Myk+PjNdJiZKOChBLGYsT2UpLGM9YysxfDA7cD1wKzF8MH19fXdoaWxlKDApO2M9MHxhW09lPj4yXX19d2hpbGUoMCk7cmV0dXJuIG9lPUxlLDB8Y31mdW5jdGlvbiBROChsLGMsZixwLG0pe19bMjQrKG18PTApPj4zXT0ocD0rcCktKGw9K2wpKzMqKChj''@;'; put 'put ''PStjKS0oZj0rZikpLF9bbSsxNj4+M109MyooZitsKS02KmMsX1ttKzg+PjNdPTMqKGMtbCksX1ttPj4zXT1sfWZ1bmN0aW9uIEo4KGwsYyxmKXtmfD0wO3ZhciBwPTA7KGw9K2wpPj0wJmw8PTEmJihfWyhjfD0wKSsoKHA9MHxhW2Y+PjJdKTw8Myk+PjNdPWwsYVtmPj4yXT1wKzEpfWZ1bmN0''@;'; put 'put ''aW9uIEhtKGwsYyl7cmV0dXJuKygrX1s4KyhjfD0wKT4+M10qK19bOCsobHw9MCk+PjNdKyArX1tjPj4zXSorX1tsPj4zXSl9ZnVuY3Rpb24gQV8obCl7dmFyIGM7cmV0dXJuKyhjPTEtKGw9K2wpKSpjKihjKzMqbCl9ZnVuY3Rpb24gQkcobCl7cmV0dXJuKyhsPStsKSpsKigzKigxLWwpK2wp''@;'; put 'put ''fWZ1bmN0aW9uIHlfKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgYmUsT2UsTGUsQmUsamUsZXQsTXQscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsSGU9MCxydD0wLEdlPTAsbHQ9MCxrdD0wO010PW9lLG9lPW9lKzExMnwwLHJ0PU10Kzgw''@;'; put 'put ''fDAsZXQ9TXQrNjR8MCxqZT1NdCs0OHwwLGx0PTQsR2U9MHxSMCg0MCksYVtHZT4+Ml09MCxiZT1NdCszMnwwLE9lPU10KzE2fDAsTGU9TXQsQmU9TXQrOTZ8MCxsdD0wfG80KDE4OTg1NiwxLDB8R2UsMHxsdCksR2U9T24scD1Nbj0wLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfFRp''@;'; put 'put ''KDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTptPS0xLHA9MT09KDB8bSk/T246MDtlOmZvcig7Oyl7aWYoMHxwKXtwPS0yO2JyZWFrfWlmKE1uPTAsJGwoMTE2LDB8YVsoQT1sKzR8MCk+PjJdKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfFRp''@;'; put 'put ''KDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTptPS0xLDEhPSgwfG0pKWlmKGFbNDc1MDNdPTAsYVs0NzUwNF09MCxNbj0wLCRsKDExNyxhW0E+PjJdPDwxfDApLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW3A+PjJdLDB8bHQsMHxH''@;'; put 'put ''ZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMSE9KDB8bSkpe2ZvcihhWzQ3NTA3XT1NPSgwfGFbNDc1MDZdKS8yfDAsYVs0NzUwOF09TSstMSxNPTB8YVtBPj4yXSxBPTB8YVtsPj4yXSxwPTAsbT0tMSx3PU1zOyEoKDB8cCk+PSgwfE0pKTspcGU9KG1lPXc+KGt0PStfW0ErKHA8PDQp''@;'; put 'put ''Pj4zXSkpP3A6bSxwPXArMXwwLG09cGUsdz1tZT9rdDp3O2FbT2U+PjJdPWFbKG1lPUErKG08PDQpfDApPj4yXSxhW09lKzQ+PjJdPWFbbWUrND4+Ml0sYVtPZSs4Pj4yXT1hW21lKzg+PjJdLGFbT2UrMTI+PjJdPWFbbWUrMTI+PjJdLGFbYmU+PjJdPWFbKG1lPUErKCgwPT0oMHxtKT9NOm0p''@;'; put 'put ''Ky0xPDw0KXwwKT4+Ml0sYVtiZSs0Pj4yXT1hW21lKzQ+PjJdLGFbYmUrOD4+Ml09YVttZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW21lKzEyPj4yXSxhW0xlPj4yXT1hWyhtZT1BKygoKDB8bSk9PShNKy0xfDApPzA6bSsxfDApPDw0KXwwKT4+Ml0sYVtMZSs0Pj4yXT1hW21lKzQ+PjJdLGFbTGUr''@;'; put 'put ''OD4+Ml09YVttZSs4Pj4yXSxhW0xlKzEyPj4yXT1hW21lKzEyPj4yXSxtZT0rX1tiZT4+M109PShrdD0rX1tPZT4+M10pJiZrdD09K19bTGU+PjNdJiYrX1tMZSs4Pj4zXT4rX1tPZSs4Pj4zXT8xNToxMjt0OmRve2lmKDEyPT0oMHxtZSkpe2lmKG1lPTAsTW49MCxwPTB8RXMoMzYsMHxiZSww''@;'; put 'put ''fE9lLDB8TGUpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe3A9T247Y29udGludWUgZX1pZigxPT0oMHxwKSlmb3IoQT0wfGFbNDc1MTBdLHA9MHxhWzQ3NTExXSxt''@;'; put 'put ''PTA7Oyl7aWYoKDB8bSk+PSgwfE0pKWJyZWFrIHQ7Yj0wfGFbbD4+Ml0sKDB8bSk+MCYmK19bYisobTw8NCk+PjNdPT0rX1tiKygoSGU9bSstMXwwKTw8NCk+PjNdJiYrX1tiKyhtPDw0KSs4Pj4zXT09K19bYisoSGU8PDQpKzg+PjNdfHwoYVtBKygocGU9MHxhWzQ3NTAzXSk8PDMpPj4yXT1i''@;'; put 'put ''KyhtPDw0KSxhW0ErKHBlPDwzKSs0Pj4yXT1BKygoKDB8cGUpJSgwfE0pfDApPDwzKSxhW3ArKHBlPDwyKT4+Ml09QSsocGU8PDMpLGFbNDc1MDNdPXBlKzEpLG09bSsxfDB9ZWxzZSBtZT0xNX19d2hpbGUoMCk7dDpkb3tpZigxNT09KDB8bWUpKWZvcihtZT0wLGI9MHxhWzQ3NTEwXSxwPTB8''@;'; put 'put ''YVs0NzUxMV0sQT1NOzspe2lmKG09QSstMXwwLCgwfEEpPD0wKWJyZWFrIHQ7az0wfGFbbD4+Ml0sKDB8QSk8KDB8TSkmJitfW2srKG08PDQpPj4zXT09K19baysoQTw8NCk+PjNdJiYrX1trKyhtPDw0KSs4Pj4zXT09K19baysoQTw8NCkrOD4+M118fChhW2IrKChBPTB8YVs0NzUwM10pPDwz''@;'; put 'put ''KT4+Ml09aysobTw8NCksYVtiKyhBPDwzKSs0Pj4yXT1iKygoKDB8QSklKDB8TSl8MCk8PDMpLGFbcCsoQTw8Mik+PjJdPWIrKEE8PDMpLGFbNDc1MDNdPUErMSksQT1tfX13aGlsZSgwKTtpZihNbj0wLFcxKDI5LDB8cCwwfGFbNDc1MDNdKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4p''@;'; put 'put ''PygobT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTptPS0xLDEhPSgwfG0pKXtiPTAscD0wfGFbNDc1MDRdO3Q6Zm9yKDs7KXtpZigoMHxiKT49KDB8cCkpe0s9MDticmVha31mb3IoQT1rPWIrMXwwOzspe2lmKCgwfEEpPj0oMHxwKSl7Yj1rO2NvbnRp''@;'; put 'put ''bnVlIHR9aWYoTW49MCxXMSgzMCwwfGIsMHxBKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTptPS0xLDE9PSgwfG0pKXtwPU9uO2NvbnRpbnVlIGV9QT1BKzF8MCxwPTB8YVs0NzUwNF19fWZv''@;'; put 'put ''cig7ISgoMHxLKT49KDB8cCkpOyl7aWYoTW49MCxtPTB8T2woMTA1LDB8SywwfGMpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChiPTB8VGkoMHxhW0E+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfEEsMHx4biksT249eG4pOmI9LTEsMT09KDB8Yikpe3A9T247Y29udGludWUgZX1pZigw''@;'; put 'put ''fG0pYnJlYWs7Sz1LKzF8MH1pZigoMHxLKT09KDB8cCkpe2lmKHA9MHxhWzE1NzEyXSxNbj0wLGFbamU+PjJdPTE0MTg1OCxhW2plKzQ+PjJdPTE5MixhW2plKzg+PjJdPTE0MTg2OSxFcygzMiwwfHAsMTQxODM5LDB8amUpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGko''@;'; put 'put ''MHxhW3A+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe3A9T247Y29udGludWV9bWU9NDE7YnJlYWt9Zm9yKHBlPWMrMTZ8MCxrPTA7ISgoMHxrKT49KDB8cCkpOyl7aWYoTW49MCxtPTB8T2woMTA1LDB8aywwfHBlKSxBPU1uLE1uPTAsMCE9KDB8''@;'; put 'put ''QSkmMCE9KDB8eG4pPygoYj0wfFRpKDB8YVtBPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpiPS0xLDE9PSgwfGIpKXtwPU9uO2NvbnRpbnVlIGV9aWYoMHxtKWJyZWFrO2s9aysxfDB9aWYoKDB8ayk9PSgwfHApKXtpZihwPTB8YVsxNTcxMl0sTW49MCxhW2V0Pj4yXT0x''@;'; put 'put ''NDE4NTgsYVtldCs0Pj4yXT0yMDAsYVtldCs4Pj4yXT0xNDE5MDIsRXMoMzIsMHxwLDE0MTgzOSwwfGV0KSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTptPS0xLDE9PSgwfG0pKXtwPU9uO2Nv''@;'; put 'put ''bnRpbnVlfW1lPTQ4O2JyZWFrfWlmKE1uPTAscD0wfE9sKDEwNiwwfEssMHxrKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKXtpZighcCl7aWYocD0wfGFbMTU3MTJd''@;'; put 'put ''LE1uPTAsYVtydD4+Ml09MTQxODU4LGFbcnQrND4+Ml09MjA3LGFbcnQrOD4+Ml09MTQxOTQwLEVzKDMyLDB8cCwxNDE4MzksMHxydCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxsdCwwfEdlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwx''@;'; put 'put ''PT0oMHxtKSl7cD1Pbjtjb250aW51ZX1pZihNbj0wLCRsKDExOCwyKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTptPS0xLDE9PSgwfG0pKXtwPU9uO2NvbnRpbnVlfW1lPTUzO2JyZWFrfWlm''@;'; put 'put ''KCgwfEspPT0oMHxrKSl7aWYoTW49MCwkbCgxMTgsMikscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxsdCwwfEdlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxPT0oMHxtKSl7cD1Pbjtjb250aW51ZX1tZT01NjticmVha31pZihhW0JlPj4y''@;'; put 'put ''XT1jLGFbQmUrND4+Ml09MCxhWyhtPUJlKzh8MCk+PjJdPXBlLGFbQmUrMTI+PjJdPTAsTW49MCxXMSgzMSwxLDB8QmUpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW3A+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfHAsMHx4biksT249eG4pOkE9LTEsMSE9KDB8QSkp''@;'; put 'put ''e2FbNDc1MDldPWFbNDc1MDddLFI9Szt0OmZvcig7Oyl7aWYoLTE9PSgwfFIpKXtBPW0scD0wO2JyZWFrfWZvcihhWyhHPTB8YVs0NzUxM10pKyg1MipSfDApPj4yXT0yLHA9MDs7KXtpZigoMHxwKT49Myl7bWU9NjU7YnJlYWt9aWYoMHwobWU9MHxhW0crKDUyKlJ8MCkrNCsocDw8NCkrMTI+''@;'; put 'put ''PjJdKSYmMT09KDB8YVttZT4+Ml0pKXttZT02ODticmVha31wPXArMXwwfWlmKDY1PT0oMHxtZSkpaWYobWU9MCwzPT0oMHxwKSl7aWYoTW49MCxwPTB8RXMoMzYsMHxwZSwwfGFbYVsocD0wfGFbNDc1MDVdKSsoYVs0NzUwN108PDIpPj4yXT4+Ml0sMHxhWyhrPTB8YVtwKyhhWzQ3NTA4XTw8''@;'; put 'put ''Mik+PjJdKT4+Ml0pLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChiPTB8VGkoMHxhW0E+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfEEsMHx4biksT249eG4pOmI9LTEsMT09KDB8Yikpe3A9T247Y29udGludWUgZX1EPShiPTE9PSgwfHApKT9tOmssYj1iP2s6bX1lbHNlIG1lPTY4O2lm''@;'; put 'put ''KDY4PT0oMHxtZSkpe2lmKG1lPTAsTW49MCxwPTB8RXMoMzYsMHxhWyhrPTB8YVtHKyg1MipSfDApKzQrKHA8PDQpPj4yXSk+PjJdLDB8YVthW0crKDUyKlJ8MCkrNCsoKChwKzF8MCklM3wwKTw8NCkrND4+Ml0+PjJdLDB8YVsoTT0wfGFbRysoNTIqUnwwKSs0KyhwPDw0KSs0Pj4yXSk+PjJd''@;'; put 'put ''KSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoYj0wfFRpKDB8YVtBPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpiPS0xLDE9PSgwfGIpKXtwPU9uO2NvbnRpbnVlIGV9RD0oYj0xPT0oMHxwKSk/azpNLGI9Yj9NOmt9ZG97aWYoKDB8Uik9PSgwfEspKXtpZihN''@;'; put 'put ''bj0wLFcxKDMxLDIsMHxiKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtwPU9uO2NvbnRpbnVlIGV9aWYoTW49MCxXMSgzMSwxLDB8RCkscD1NbixNbj0wLDAhPSgw''@;'; put 'put ''fHApJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbcD4+Ml0sMHxsdCwwfEdlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7cD1Pbjtjb250aW51ZSBlfXA9MH1lbHNle2lmKCgwfGFbKE09MHxhWzQ3NTA1XSkrKGFbNDc1MDddPDwyKT4+Ml0pIT0oMHxEKSYmKDB8YVtNKyhh''@;'; put 'put ''WzQ3NTA4XTw8Mik+PjJdKSE9KDB8RCkpe2lmKE1uPTAsYj0wfHFpKDM0LDB8RCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbcD4+Ml0sMHxsdCwwfEdlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7cD1Pbjtjb250aW51ZSBlfWlmKE1u''@;'; put 'put ''PTAsVzEoMzIsMiwwfGIpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW3A+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfHAsMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe3A9T247Y29udGludWUgZX1pZihNbj0wLFcxKDMxLDEsMHxEKSxwPU1uLE1uPTAsMCE9KDB8''@;'; put 'put ''cCkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtwPU9uO2NvbnRpbnVlIGV9aWYoKDB8Yik8PSgwfGFbNDc1MDldKSl7cD0wO2JyZWFrfWFbNDc1MDldPWIscD0wO2JyZWFrfWlmKE1uPTAsaz0wfHFp''@;'; put 'put ''KDM0LDB8YikscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbcD4+Ml0sMHxsdCwwfEdlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7cD1Pbjtjb250aW51ZSBlfWlmKE1uPTAsVzEoMzIsMSwwfGspLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0o''@;'; put 'put ''MHx4bik/KChBPTB8VGkoMHxhW3A+PjJdLDB8bHQsMHxHZSkpfHxXZSgwfHAsMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe3A9T247Y29udGludWUgZX1pZihNbj0wLFcxKDMxLDIsMHxiKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtwPj4yXSwwfGx0LDB8''@;'; put 'put ''R2UpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtwPU9uO2NvbnRpbnVlIGV9aWYoKDB8ayk+PSgwfGFbNDc1MDldKSl7cD0wO2JyZWFrfWFbNDc1MDldPWsscD0wfX13aGlsZSgwKTtmb3IoOzspe2lmKCgwfHApPj0zKXtSPS0xO2NvbnRpbnVlIHR9aWYoMHwoQT0wfGFb''@;'; put 'put ''RysoNTIqUnwwKSs0KyhwPDw0KSsxMj4+Ml0pJiYxPT0oMHxhW0E+PjJdKSlicmVhaztwPXArMXwwfVI9KEEtKDB8YVs0NzUxM10pfDApLzUyfDB9Zm9yKDtBOylBPTB8YVtBKzQ+PjJdLHA9cCsxfDA7aWYoTW49MCwkbCgxMTgsMHxwKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygo''@;'; put 'put ''Yj0wfFRpKDB8YVtBPj4yXSwwfGx0LDB8R2UpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpiPS0xLDEhPSgwfGIpKXttZT05NDticmVha31wPU9ufWVsc2UgcD1Pbn1lbHNlIHA9T259ZWxzZSBwPU9ufWVsc2UgcD1PbjtlbHNlIHA9T259aWYoNDE9PSgwfG1lKSlwPS0xO2Vsc2UgaWYoNDg9PSgw''@;'; put 'put ''fG1lKSlwPS0xO2Vsc2UgaWYoNTM9PSgwfG1lKSlhW2YrND4+Ml09MixhWyhwPTB8YVs0NzUxMl0pPj4yXT1hW2M+PjJdLGFbcCs0Pj4yXT1hW2MrND4+Ml0sYVtwKzg+PjJdPWFbYys4Pj4yXSxhW3ArMTI+PjJdPWFbYysxMj4+Ml0sYVsoR2U9cCsxNnwwKT4+Ml09YVtwZT4+Ml0sYVtHZSs0''@;'; put 'put ''Pj4yXT1hW3BlKzQ+PjJdLGFbR2UrOD4+Ml09YVtwZSs4Pj4yXSxhW0dlKzEyPj4yXT1hW3BlKzEyPj4yXSxhW2Y+PjJdPXAscD0wO2Vsc2UgaWYoNTY9PSgwfG1lKSlhW2YrND4+Ml09MixhWyhwPTB8YVs0NzUxMl0pPj4yXT1hW2M+PjJdLGFbcCs0Pj4yXT1hW2MrND4+Ml0sYVtwKzg+PjJd''@;'; put 'put ''PWFbYys4Pj4yXSxhW3ArMTI+PjJdPWFbYysxMj4+Ml0sYVsoR2U9cCsxNnwwKT4+Ml09YVtwZT4+Ml0sYVtHZSs0Pj4yXT1hW3BlKzQ+PjJdLGFbR2UrOD4+Ml09YVtwZSs4Pj4yXSxhW0dlKzEyPj4yXT1hW3BlKzEyPj4yXSxhW2Y+PjJdPXAscD0wO2Vsc2UgaWYoOTQ9PSgwfG1lKSl7Zm9y''@;'; put 'put ''KGFbZis0Pj4yXT1wLEE9MHxhWzQ3NTEyXTtwPXArLTF8MCxtOylhWyhHZT1BKyhwPDw0KXwwKT4+Ml09YVsocnQ9MHxhW20+PjJdKT4+Ml0sYVtHZSs0Pj4yXT1hW3J0KzQ+PjJdLGFbR2UrOD4+Ml09YVtydCs4Pj4yXSxhW0dlKzEyPj4yXT1hW3J0KzEyPj4yXSxtPTB8YVttKzQ+PjJdO2Fb''@;'; put 'put ''Zj4+Ml09QSxwPTB9cmV0dXJuIEh0KDB8bHQpLG9lPU10LDB8cH1mdW5jdGlvbiAkZihsLGMsZil7dmFyIG0scD0wO3JldHVybiAwfCgocD0oK19bKGZ8PTApPj4zXS0obT0rX1soY3w9MCk+PjNdKSkqKCtfWzgrKGx8PTApPj4zXS0ocD0rX1tjKzg+PjNdKSktKCtfW2w+PjNdLW0pKigrX1tm''@;'; put 'put ''Kzg+PjNdLXApKT4wPzE6cDwwPzI6Myl9ZnVuY3Rpb24gYl8obCxjLGYscCl7Y3w9MDt2YXIgYixrLE0sbT0wLEE9MCx3PTA7TT0xPT0oMHwkZihtPTB8YVthWyhmfD0wKSsoKCgobHw9MCktMSsocHw9MCl8MCklKDB8cCl8MCk8PDIpPj4yXT4+Ml0sYj0wfGFbYVtmKyhsPDwyKT4+Ml0+PjJd''@;'; put 'put ''LEE9MHxhW2FbZisoKChsKzF8MCklKDB8cCl8MCk8PDIpPj4yXT4+Ml0pKSxrPTB8YVthW2YrKGM8PDIpPj4yXT4+Ml0sTT8xPT0oMHwkZihiLGssbSkpPyhtPTB8JGYoayxiLEEpLEE9MSx3PTUpOm09MDoobT0wfCRmKGIsayxBKSxBPTIsdz01KTtlOmRve2lmKDU9PSgwfHcpKWlmKCgwfG0p''@;'; put 'put ''PT0oMHxBKSlmb3IobT0wOzspe2lmKCgwfG0pPj0oMHxwKSl7bT0xO2JyZWFrIGV9aWYoQT1tLCEoKDB8KHc9KDB8KG09bSsxfDApKSUoMHxwKXwwKSk9PSgwfGMpfCgwfEEpPT0oMHxjKXwoMHxBKT09KDB8bCl8KDB8dyk9PSgwfGwpKSYmMHxfXyhiLGssMHxhW2FbZisoQTw8Mik+PjJdPj4y''@;'; put 'put ''XSwwfGFbYVtmKyh3PDwyKT4+Ml0+PjJdKSl7bT0wO2JyZWFrfX1lbHNlIG09MH13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIHNBKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSxwPTAsbT0wLHc9MDtmb3IoKDB8KHA9MHxhWzQ3NTA0XSkpPCgwfChtPTB8YVs0NzUxNV0pKT93PXA6''@;'; put 'put ''KGZ1bmN0aW9uIFZtKGwpe3ZhciBtLGM9MCxmPTAscD0wO209b2Usb2U9b2UrMzJ8MCxwPW0rMTZ8MCxmPW0sKDB8YVs0NzUxNV0pPCgwfChsfD0wKSkmJigoYz0wfGFbNDc1MTNdKT8oZj0wfFphKGMsNTIqbHwwKSxhWzQ3NTEzXT1mLGZ8fChmPTB8YVsxNTcxMl0sYVtwPj4yXT0xNDE4NTgs''@;'; put 'put ''YVtwKzQ+PjJdPTU1OCxhW3ArOD4+Ml09MTQyMDQzLFQwKGYsMTQxODM5LHApLFdlKDE4OTg1NiwxKSkpOihwPTB8UjAoNTIqbHwwKSxhWzQ3NTEzXT1wLHB8fChwPTB8YVsxNTcxMl0sYVtmPj4yXT0xNDE4NTgsYVtmKzQ+PjJdPTU1MixhW2YrOD4+Ml09MTQyMDI0LFQwKHAsMTQxODM5LGYp''@;'; put 'put ''LFdlKDE4OTg1NiwxKSkpLGFbNDc1MTVdPWwpLG9lPW19KG0rMjB8MCksdz0wfGFbNDc1MDRdKSxBPTB8YVs0NzUxM10sYVs0NzUwNF09dysxLGFbKG09QSsoNTIqd3wwKXwwKT4+Ml09MCxhW0ErKDUyKnd8MCkrND4+Ml09bCxhW0ErKDUyKnd8MCkrOD4+Ml09YyxhW0ErKDUyKnd8MCkrMTY+''@;'; put 'put ''PjJdPTAsYVtBKyg1Mip3fDApKzIwPj4yXT1jLGFbQSsoNTIqd3wwKSsyND4+Ml09ZixhW0ErKDUyKnd8MCkrMzI+PjJdPTAsYVtBKyg1Mip3fDApKzM2Pj4yXT1mLGFbQSsoNTIqd3wwKSs0MD4+Ml09bCxhW0ErKDUyKnd8MCkrNDg+PjJdPTAscD0wOzMhPSgwfHApOylhW0ErKDUyKnd8MCkr''@;'; put 'put ''NCsocDw8NCkrOD4+Ml09bSxwPXArMXwwfWZ1bmN0aW9uIF9fKGwsYyxmLHApe3B8PTA7dmFyIEEsbT0wLHc9MCxiPTA7cmV0dXJuIDMhPSgwfChBPTB8JGYobHw9MCxjfD0wLGZ8PTApKSkmJjMhPSgwfCh3PTB8JGYobCxjLHApKSkmJjMhPSgwfChiPTB8JGYoZixwLGwpKSkmJjMhPSgwfCht''@;'; put 'put ''PTB8JGYoZixwLGMpKSk/KDE9PSgwfEEpXjE9PSgwfHcpKSYoMT09KDB8YileMT09KDB8bSkpJjF8MDowPT0oMHxqbShsLGMsZikpJiYwPT0oMHxqbShsLGMscCkpJiYwPT0oMHxqbShmLHAsbCkpPzAhPSgwfGptKGYscCxjKSl8MDoxfWZ1bmN0aW9uIGptKGwsYyxmKXt2YXIgcCx3LG09MCxB''@;'; put 'put ''PTA7cmV0dXJuIHc9K19bKGN8PTApPj4zXS0obT0rX1sobHw9MCk+PjNdKSxwPStfW2MrOD4+M10tKEE9K19bbCs4Pj4zXSksbT0rX1soZnw9MCk+PjNdLW0sQT0rX1tmKzg+PjNdLUEsMHwoMz09KDB8JGYobCxjLGYpKSYmQSpwK20qdz49MD9BKkErbSptPD1wKnArdyp3JjE6MCl9ZnVuY3Rp''@;'; put 'put ''b24gdUEobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7cD0rX1syNCsobHw9MCk+PjNdO2U6ZG97aWYocDwxZS03JnA+LTFlLTcpbD0wfHRQKGwsYyk7ZWxzZSBmb3Iodz0rX1tsKzE2Pj4zXS8oMypwKSxBPStfW2wrOD4+M10vcCxtPXcqdyxwPTIqdyptLXcqQSsg''@;'; put 'put ''K19bbD4+M10vcCxtPS4zMzMzMzMzMzMzMzMzMzMzKkEtbSxtKj1tKm0qNCxBPXAqcCttLEE8MD8oYj0rcTIoKyArRjAoKy1BKSwrLXApLHA9MiorUWooLjUqK0YwKCstbSkpLF9bYz4+M109cCorbGEoLjMzMzMzMzMzMzMzMzMzMzMqYiksX1tjKzg+PjNdPStsYSguMzMzMzMzMzMzMzMzMzMz''@;'; put 'put ''MyooYis2LjI4MzE4NTMwNzE3OTU4NikpKnAscD0rbGEoLjMzMzMzMzMzMzMzMzMzMzMqKGIrLTYuMjgzMTg1MzA3MTc5NTg2KSkqcCxsPTIsZj03KTooYj0uNSooK0YwKCtBKS1wKSxtPStRaihiKSxwPStRaigtcC1iKSttLF9bYz4+M109cCxBPjA/bD0xOihwKj0tLjUsX1tjKzE2Pj4zXT1w''@;'; put 'put ''LGw9MSxmPTcpKSw3PT0oMHxmKSYmKF9bYysobDw8Myk+PjNdPXAsbD0zKSxmPTA7Oyl7aWYoKDB8Zik+PSgwfGwpKWJyZWFrIGU7X1soaz1jKyhmPDwzKXwwKT4+M109K19baz4+M10tdyxmPWYrMXwwfX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHRQKGwsYyl7Y3w9MDt2YXIgZj0w''@;'; put 'put ''LHA9MDtmPStfWzE2KyhsfD0wKT4+M107ZG97aWYoZjwxZS03JmY+LTFlLTcpbD0wfGNBKGwsYyk7ZWxzZXtpZighKChmPShwPStfW2wrOD4+M10vKDIqZikpKnAtK19bbD4+M10vZik8MCkpe2lmKDA9PWYpe19bYz4+M109LXAsbD0xO2JyZWFrfWY9K0YwKCtmKS1wLF9bYz4+M109ZixfW2Mr''@;'; put 'put ''OD4+M109LTIqcC1mLGw9MjticmVha31sPTB9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gY0EobCxjKXt2YXIgZixwO3JldHVybiBmPStfWyhsfD0wKT4+M10sKHA9K19bbCs4Pj4zXSk8MWUtNyZwPi0xZS03P2w9ZjwxZS03JmY+LTFlLTc/NDowOihfWyhjfD0wKT4+M109LWYvcCxs''@;'; put 'put ''PTEpLDB8bH1mdW5jdGlvbiBuUChsKXtIdCgwfGFbKGx8PTApPj4yXSksSHQobCl9ZnVuY3Rpb24gTWQobCxjKXtjfD0wO3ZhciBtLGIsZj0wLHA9MCxBPTAsdz0wLGs9MCxNPTAsRD0wLFI9MDtmb3IoZj0wfGFbNDc1MThdLCgwfChiPSgzKihwPTB8YVs0KyhsfD0wKT4+Ml0pfDApLTJ8MCkp''@;'; put 'put ''PigwfGFbNDc1MTddKT8oZj1mPzB8WmEoZixiPDw0KTowfFIwKGI8PDQpLGFbNDc1MThdPWYsYVs0NzUxN109Yix3PWYsQT1mKToodz1mLEE9ZiksYVt3Pj4yXT1hWyhtPTB8YVtsPj4yXSk+PjJdLGFbdys0Pj4yXT1hW20rND4+Ml0sYVt3Kzg+PjJdPWFbbSs4Pj4yXSxhW3crMTI+PjJdPWFb''@;'; put 'put ''bSsxMj4+Ml0sbXAodysxNnwwLDB8bSwxNikscD1wKy0xfDAsZj0xLGw9MjshKCgwfGYpPj0oMHxwKSk7KWs9dysobCsyPDw0KXwwLE09dysobCsxPDw0KXwwLGFbKFI9dysobDw8NCl8MCk+PjJdPWFbKEQ9bSsoZjw8NCl8MCk+PjJdLGFbUis0Pj4yXT1hW0QrND4+Ml0sYVtSKzg+PjJdPWFb''@;'; put 'put ''RCs4Pj4yXSxhW1IrMTI+PjJdPWFbRCsxMj4+Ml0sbXAoMHxNLDB8RCwxNiksYVtrPj4yXT1hW00+PjJdLGFbays0Pj4yXT1hW00rND4+Ml0sYVtrKzg+PjJdPWFbTSs4Pj4yXSxhW2srMTI+PjJdPWFbTSsxMj4+Ml0sZj1mKzF8MCxsPWwrM3wwO2FbKEQ9dysobDw8NCl8MCk+PjJdPWFbKFI9''@;'; put 'put ''bSsoZjw8NCl8MCk+PjJdLGFbRCs0Pj4yXT1hW1IrND4+Ml0sYVtEKzg+PjJdPWFbUis4Pj4yXSxhW0QrMTI+PjJdPWFbUisxMj4+Ml0sbXAodysobCsxPDw0KXwwLDB8UiwxNiksYVtjKzQ+PjJdPWIsYVtjPj4yXT1BfWZ1bmN0aW9uIG5jKGwsYyxmKXt2YXIgbSxwPTA7cmV0dXJuIDB8KChw''@;'; put 'put ''PSgrX1soZnw9MCk+PjNdLShtPStfWyhjfD0wKT4+M10pKSooK19bOCsobHw9MCk+PjNdLShwPStfW2MrOD4+M10pKS0oK19bbD4+M10tbSkqKCtfW2YrOD4+M10tcCkpPjFlLTQ/MToocDwtMWUtNCk8PDMxPj4zMSl9ZnVuY3Rpb24gSWgobCxjLGYpe2Z8PTA7dmFyIHA9MCxtPTAsQT0wO3Jl''@;'; put 'put ''dHVybiAxJihsPShtPStfWyhsfD0wKT4+M10pIT0oQT0rX1soY3w9MCk+PjNdKT9tPChwPStfW2Y+PjNdKSZwPEE/MTpBPHA/cDxtOjA6KEE9K19bbCs4Pj4zXSk8KG09K19bZis4Pj4zXSkmbTwocD0rX1tjKzg+PjNdKT8xOnA8bT9tPEE6MCl8MH1mdW5jdGlvbiBFZChsLGMsZixwKXtjfD0w''@;'; put 'put ''LGZ8PTAscHw9MDt2YXIgQSx3LGIsayxELG09MCxNPTA7RD1vZSxvZT1vZSs0OHwwLGI9RCszMnwwLHc9RCsxNnwwLGFbKEE9RCk+PjJdPWFbKGx8PTApPj4yXSxhW0ErND4+Ml09YVtsKzQ+PjJdLGFbQSs4Pj4yXT1hW2wrOD4+Ml0sYVtBKzEyPj4yXT1hW2wrMTI+PjJdLGFbdz4+Ml09YVtj''@;'; put 'put ''Pj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLGFbYj4+Ml09YVtmPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLDA9PSgwfChrPTB8bmMoQSx3LGIp''@;'; put 'put ''KSkmJihhW0E+PjJdPWFbbD4+Ml0sYVtBKzQ+PjJdPWFbbCs0Pj4yXSxhW0ErOD4+Ml09YVtsKzg+PjJdLGFbQSsxMj4+Ml09YVtsKzEyPj4yXSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxhW2I+''@;'; put 'put ''PjJdPWFbZj4+Ml0sYVtiKzQ+PjJdPWFbZis0Pj4yXSxhW2IrOD4+Ml09YVtmKzg+PjJdLGFbYisxMj4+Ml09YVtmKzEyPj4yXSwwIT0oMHxJaChBLHcsYikpKT9tPTE6TT0zO2Rve2lmKDM9PSgwfE0pKXtpZihhW0E+PjJdPWFbbD4+Ml0sYVtBKzQ+PjJdPWFbbCs0Pj4yXSxhW0ErOD4+Ml09''@;'; put 'put ''YVtsKzg+PjJdLGFbQSsxMj4+Ml09YVtsKzEyPj4yXSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxhW2I+PjJdPWFbcD4+Ml0sYVtiKzQ+PjJdPWFbcCs0Pj4yXSxhW2IrOD4+Ml09YVtwKzg+PjJd''@;'; put 'put ''LGFbYisxMj4+Ml09YVtwKzEyPj4yXSwwPT0oMHwobT0wfG5jKEEsdyxiKSkpJiYoYVtBPj4yXT1hW2w+PjJdLGFbQSs0Pj4yXT1hW2wrND4+Ml0sYVtBKzg+PjJdPWFbbCs4Pj4yXSxhW0ErMTI+PjJdPWFbbCsxMj4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3''@;'; put 'put ''Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sYVtiPj4yXT1hW3A+PjJdLGFbYis0Pj4yXT1hW3ArND4+Ml0sYVtiKzg+PjJdPWFbcCs4Pj4yXSxhW2IrMTI+PjJdPWFbcCsxMj4+Ml0sMHxJaChBLHcsYikpKXttPTE7YnJlYWt9YVtBPj4yXT1hW2Y+PjJdLGFbQSs0Pj4y''@;'; put 'put ''XT1hW2YrND4+Ml0sYVtBKzg+PjJdPWFbZis4Pj4yXSxhW0ErMTI+PjJdPWFbZisxMj4+Ml0sYVt3Pj4yXT1hW3A+PjJdLGFbdys0Pj4yXT1hW3ArND4+Ml0sYVt3Kzg+PjJdPWFbcCs4Pj4yXSxhW3crMTI+PjJdPWFbcCsxMj4+Ml0sYVtiPj4yXT1hW2w+PjJdLGFbYis0Pj4yXT1hW2wrND4+''@;'; put 'put ''Ml0sYVtiKzg+PjJdPWFbbCs4Pj4yXSxhW2IrMTI+PjJdPWFbbCsxMj4+Ml0sbD0wfG5jKEEsdyxiKSxhW0E+PjJdPWFbZj4+Ml0sYVtBKzQ+PjJdPWFbZis0Pj4yXSxhW0ErOD4+Ml09YVtmKzg+PjJdLGFbQSsxMj4+Ml09YVtmKzEyPj4yXSxhW3c+PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFb''@;'; put 'put ''cCs0Pj4yXSxhW3crOD4+Ml09YVtwKzg+PjJdLGFbdysxMj4+Ml09YVtwKzEyPj4yXSxhW2I+PjJdPWFbYz4+Ml0sYVtiKzQ+PjJdPWFbYys0Pj4yXSxhW2IrOD4+Ml09YVtjKzg+PjJdLGFbYisxMj4+Ml09YVtjKzEyPj4yXSxNPSgwfHZyKG0saykpPDAsbT0oMHx2cigwfG5jKEEsdyxiKSxs''@;'; put 'put ''KSk+Pj4zMSxtPU0/bTowfX13aGlsZSgwKTtyZXR1cm4gb2U9RCwwfG19ZnVuY3Rpb24gWDgobCxjKXt2YXIgZixwLG0sQTtyZXR1cm4gY3w9MCxwPW9lLG9lPW9lKzMyfDAsbT1wKzE2fDAsYVsoQT1wKT4+Ml09YVsobHw9MCk+PjJdLGFbQSs0Pj4yXT1hW2wrND4+Ml0sYVtBKzg+PjJdPWFb''@;'; put 'put ''bCs4Pj4yXSxhW0ErMTI+PjJdPWFbbCsxMj4+Ml0sYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sZj0rRjAoKyArZnVuY3Rpb24geGQobCxjKXt2YXIgZixwO3JldHVybisoKHA9K19bOCsobHw9MCk+''@;'; put 'put ''PjNdLStfWzgrKGN8PTApPj4zXSkqcCsoZj0rX1tsPj4zXS0rX1tjPj4zXSkqZil9KEEsbSkpLG9lPXAsK2Z9ZnVuY3Rpb24gcmMobCxjLGYscCxtKXt2YXIgQSx3LGIsayxNLEQsUjtyZXR1cm4gQT1vZSxvZT1vZSs2NHwwLHc9QSs0OHwwLGI9QSszMnwwLGs9QSsxNnwwLFI9KGZ8PTApKyhh''@;'; put 'put ''WyhtfD0wKSsoKGx8PTApPDwyKT4+Ml08PDQpfDAsRD1mKyhsPDw0KXwwLHA9ZisoYVsocHw9MCkrKGw8PDIpPj4yXTw8NCl8MCxtPWYrKChjfD0wKTw8NCl8MCxhWyhNPUEpPj4yXT1hW1I+PjJdLGFbTSs0Pj4yXT1hW1IrND4+Ml0sYVtNKzg+PjJdPWFbUis4Pj4yXSxhW00rMTI+PjJdPWFb''@;'; put 'put ''UisxMj4+Ml0sYVtrPj4yXT1hW0Q+PjJdLGFbays0Pj4yXT1hW0QrND4+Ml0sYVtrKzg+PjJdPWFbRCs4Pj4yXSxhW2srMTI+PjJdPWFbRCsxMj4+Ml0sYVtiPj4yXT1hW3A+PjJdLGFbYis0Pj4yXT1hW3ArND4+Ml0sYVtiKzg+PjJdPWFbcCs4Pj4yXSxhW2IrMTI+PjJdPWFbcCsxMj4+Ml0s''@;'; put 'put ''YVt3Pj4yXT1hW20+PjJdLGFbdys0Pj4yXT1hW20rND4+Ml0sYVt3Kzg+PjJdPWFbbSs4Pj4yXSxhW3crMTI+PjJdPWFbbSsxMj4+Ml0sbT0wfHptKE0sayxiLHcpLG9lPUEsMHxtfWZ1bmN0aW9uIHo0KGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTA7''@;'; put 'put ''dmFyIGssTSxELFIsSyxiPTAsRz0wLHBlPTAsbWU9MDtmb3IoSz1vZSxvZT1vZSs2NHwwLFI9Sys0OHwwLEQ9SyszMnwwLE09SysxNnwwLGs9SyxiPTA7Oyl7aWYoKDB8Yik+PSgwfGYpKXtHPTQ7YnJlYWt9aWYobWU9QSsoYjw8NCl8MCxwZT1BKyhhW3crKGI8PDIpPj4yXTw8NCl8MCxhW2s+''@;'; put 'put ''PjJdPWFbbD4+Ml0sYVtrKzQ+PjJdPWFbbCs0Pj4yXSxhW2srOD4+Ml09YVtsKzg+PjJdLGFbaysxMj4+Ml09YVtsKzEyPj4yXSxhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW0Q+PjJdPWFbbWU+''@;'; put 'put ''PjJdLGFbRCs0Pj4yXT1hW21lKzQ+PjJdLGFbRCs4Pj4yXT1hW21lKzg+PjJdLGFbRCsxMj4+Ml09YVttZSsxMj4+Ml0sYVtSPj4yXT1hW3BlPj4yXSxhW1IrND4+Ml09YVtwZSs0Pj4yXSxhW1IrOD4+Ml09YVtwZSs4Pj4yXSxhW1IrMTI+PjJdPWFbcGUrMTI+PjJdLDB8RWQoayxNLEQsUikp''@;'; put 'put ''e3A9MDticmVha31iPWIrMXwwfWU6ZG97aWYoND09KDB8RykpZm9yKDs7KXtpZigoMHxwKT49KDB8bSkpe3A9MTticmVhayBlfWlmKHBlPUErKHA8PDQpfDAsbWU9QSsoYVt3KyhwPDwyKT4+Ml08PDQpfDAsYVtrPj4yXT1hW2w+PjJdLGFbays0Pj4yXT1hW2wrND4+Ml0sYVtrKzg+PjJdPWFb''@;'; put 'put ''bCs4Pj4yXSxhW2srMTI+PjJdPWFbbCsxMj4+Ml0sYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sYVtEPj4yXT1hW3BlPj4yXSxhW0QrND4+Ml09YVtwZSs0Pj4yXSxhW0QrOD4+Ml09YVtwZSs4Pj4y''@;'; put 'put ''XSxhW0QrMTI+PjJdPWFbcGUrMTI+PjJdLGFbUj4+Ml09YVttZT4+Ml0sYVtSKzQ+PjJdPWFbbWUrND4+Ml0sYVtSKzg+PjJdPWFbbWUrOD4+Ml0sYVtSKzEyPj4yXT1hW21lKzEyPj4yXSwwfEVkKGssTSxELFIpKXtwPTA7YnJlYWt9cD1wKzF8MCxHPTR9fXdoaWxlKDApO3JldHVybiBvZT1L''@;'; put 'put ''LDB8cH1mdW5jdGlvbiB6bShsLGMsZixwKXt2YXIgbSxBLHcsYixrO3JldHVybiBsfD0wLGN8PTAsZnw9MCxBPW9lLG9lPW9lKzQ4fDAsdz1BKzMyfDAsYj1BKzE2fDAsYVsoaz1BKT4+Ml09YVsocHw9MCk+PjJdLGFbays0Pj4yXT1hW3ArND4+Ml0sYVtrKzg+PjJdPWFbcCs4Pj4yXSxhW2sr''@;'; put 'put ''MTI+PjJdPWFbcCsxMj4+Ml0sYVtiPj4yXT1hW2w+PjJdLGFbYis0Pj4yXT1hW2wrND4+Ml0sYVtiKzg+PjJdPWFbbCs4Pj4yXSxhW2IrMTI+PjJdPWFbbCsxMj4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFb''@;'; put 'put ''YysxMj4+Ml0sbT0wfG5jKGssYix3KSxhW2s+PjJdPWFbcD4+Ml0sYVtrKzQ+PjJdPWFbcCs0Pj4yXSxhW2srOD4+Ml09YVtwKzg+PjJdLGFbaysxMj4+Ml09YVtwKzEyPj4yXSxhW2I+PjJdPWFbYz4+Ml0sYVtiKzQ+PjJdPWFbYys0Pj4yXSxhW2IrOD4+Ml09YVtjKzg+PjJdLGFbYisxMj4+''@;'; put 'put ''Ml09YVtjKzEyPj4yXSxhW3c+PjJdPWFbZj4+Ml0sYVt3KzQ+PjJdPWFbZis0Pj4yXSxhW3crOD4+Ml09YVtmKzg+PjJdLGFbdysxMj4+Ml09YVtmKzEyPj4yXSxwPTB8bmMoayxiLHcpLGFbaz4+Ml09YVtsPj4yXSxhW2srND4+Ml09YVtsKzQ+PjJdLGFbays4Pj4yXT1hW2wrOD4+Ml0sYVtr''@;'; put 'put ''KzEyPj4yXT1hW2wrMTI+PjJdLGFbYj4+Ml09YVtjPj4yXSxhW2IrND4+Ml09YVtjKzQ+PjJdLGFbYis4Pj4yXT1hW2MrOD4+Ml0sYVtiKzEyPj4yXT1hW2MrMTI+PjJdLGFbdz4+Ml09YVtmPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4Pj4yXT1hW2YrOD4+Ml0sYVt3KzEyPj4yXT1h''@;'; put 'put ''W2YrMTI+PjJdLGY9KDB8bmMoayxiLHcpKT4wLG9lPUEsKGY/cHxtOnAmbSk+Pj4zMV4xfDB9ZnVuY3Rpb24ga18obCxjLGYpe2N8PTAsZnw9MDt2YXIgQSx3LGIsayxNLEQsUixHLEsscGUsbWUscD0wLG09MCxiZT0wLE9lPTA7Zm9yKG1lPW9lLG9lPW9lKzgwfDAsYj1tZSs2NHwwLHc9bWUr''@;'; put 'put ''NDh8MCxBPW1lKzMyfDAsaz1tZSsxNnwwLFI9bWUsSz0wfGFbOCsobHw9MCk+PjJdLHBlPTB8YVtsKzE2Pj4yXSxNPTB8YVtsKzIwPj4yXSxEPTB8UjAoMTYrKChHPTB8YVtsKzQ+PjJdKTw8Myl8MCksLTIyMjI9PSgwfGMpJiYoYVtiPj4yXT1hW2Y+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0s''@;'; put 'put ''YVtiKzg+PjJdPWFbZis4Pj4yXSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0sYz0wfGZ1bmN0aW9uIFNfKGwsYyl7Y3w9MDt2YXIgcCxtLHcsYixrLE0sRCxmPTAsQT0wLFI9MCxHPTA7Zm9yKEQ9b2Usb2U9b2UrMzJ8MCxtPUQrOHwwLHA9RCxiPTgrKGx8PTApfDAsaz1sKzEyfDAsTT00Kyh3PUQr''@;'; put 'put ''MjR8MCl8MCxmPTA7Oyl7aWYoKDB8Zik+PSgwfGFbbD4+Ml0pKXtmPS0xMTExO2JyZWFrfWlmKGFbdz4+Ml09KDB8YVtiPj4yXSkrKChSPTB8YVsoRz0wfGFbaz4+Ml0pKyhmPDwyKT4+Ml0pPDw0KSxhW00+PjJdPSgwfGFbRysoKEE9ZisxfDApPDwyKT4+Ml0pLVIsYVtwPj4yXT1hW3c+PjJd''@;'; put 'put ''LGFbcCs0Pj4yXT1hW3crND4+Ml0sYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sMHxBNihwLG0pKWJyZWFrO2Y9QX1yZXR1cm4gb2U9RCwwfGZ9KGwsYikpLCgwfGMpPi0xPyhtPTB8YVsobD0wfGFb''@;'; put 'put ''bCsxMj4+Ml0pKyhjKzE8PDIpPj4yXSxsPTB8YVtsKyhjPDwyKT4+Ml0pOihtPUcsbD1HKSxjPTA7Oyl7aWYoKDB8Yyk+PSgwfGwpKXtjPWw7YnJlYWt9YVtSPj4yXT1hWyhPZT1LKyhjPDw0KXwwKT4+Ml0sYVtSKzQ+PjJdPWFbT2UrND4+Ml0sYVtSKzg+PjJdPWFbT2UrOD4+Ml0sYVtSKzEy''@;'; put 'put ''Pj4yXT1hW09lKzEyPj4yXSxiZT1LKyhhW3BlKyhjPDwyKT4+Ml08PDQpfDAsYVtrPj4yXT1hWyhPZT1LKyhhW00rKGM8PDIpPj4yXTw8NCl8MCk+PjJdLGFbays0Pj4yXT1hW09lKzQ+PjJdLGFbays4Pj4yXT1hW09lKzg+PjJdLGFbaysxMj4+Ml09YVtPZSsxMj4+Ml0sYVtBPj4yXT1hW1I+''@;'; put 'put ''PjJdLGFbQSs0Pj4yXT1hW1IrND4+Ml0sYVtBKzg+PjJdPWFbUis4Pj4yXSxhW0ErMTI+PjJdPWFbUisxMj4+Ml0sYVt3Pj4yXT1hW2JlPj4yXSxhW3crND4+Ml09YVtiZSs0Pj4yXSxhW3crOD4+Ml09YVtiZSs4Pj4yXSxhW3crMTI+PjJdPWFbYmUrMTI+PjJdLGFbYj4+Ml09YVtmPj4yXSxh''@;'; put 'put ''W2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLDAhPSgwfHptKGssQSx3LGIpKSYmKGFbdz4+Ml09YVtmPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4Pj4yXT1hW2YrOD4+Ml0sYVt3KzEyPj4yXT1hW2YrMTI+PjJdLGFbYj4+''@;'; put 'put ''Ml09YVtSPj4yXSxhW2IrND4+Ml09YVtSKzQ+PjJdLGFbYis4Pj4yXT1hW1IrOD4+Ml0sYVtiKzEyPj4yXT1hW1IrMTI+PjJdLDAhPSgwfHo0KHcsYixsLG0sRyxLLHBlKSkpPyhhW3c+PjJdPWFbZj4+Ml0sYVt3KzQ+PjJdPWFbZis0Pj4yXSxhW3crOD4+Ml09YVtmKzg+PjJdLGFbdysxMj4+''@;'; put 'put ''Ml09YVtmKzEyPj4yXSxhW2I+PjJdPWFbUj4+Ml0sYVtiKzQ+PjJdPWFbUis0Pj4yXSxhW2IrOD4+Ml09YVtSKzg+PjJdLGFbYisxMj4+Ml09YVtSKzEyPj4yXSxwPStYOCh3LGIpKTpwPTAsX1tEKyhjPDwzKT4+M109cCxjPWMrMXwwfWZvcig7Oyl7aWYoKDB8Yyk+PSgwfG0pKXtjPW07YnJl''@;'; put 'put ''YWt9X1tEKyhjPDwzKT4+M109MCxjPWMrMXwwfWZvcig7ISgoMHxjKT49KDB8RykpOylhW1I+PjJdPWFbKGJlPUsrKGM8PDQpfDApPj4yXSxhW1IrND4+Ml09YVtiZSs0Pj4yXSxhW1IrOD4+Ml09YVtiZSs4Pj4yXSxhW1IrMTI+PjJdPWFbYmUrMTI+PjJdLE9lPUsrKGFbcGUrKGM8PDIpPj4y''@;'; put 'put ''XTw8NCl8MCxhW2s+PjJdPWFbKGJlPUsrKGFbTSsoYzw8Mik+PjJdPDw0KXwwKT4+Ml0sYVtrKzQ+PjJdPWFbYmUrND4+Ml0sYVtrKzg+PjJdPWFbYmUrOD4+Ml0sYVtrKzEyPj4yXT1hW2JlKzEyPj4yXSxhW0E+PjJdPWFbUj4+Ml0sYVtBKzQ+PjJdPWFbUis0Pj4yXSxhW0ErOD4+Ml09YVtS''@;'; put 'put ''Kzg+PjJdLGFbQSsxMj4+Ml09YVtSKzEyPj4yXSxhW3c+PjJdPWFbT2U+PjJdLGFbdys0Pj4yXT1hW09lKzQ+PjJdLGFbdys4Pj4yXT1hW09lKzg+PjJdLGFbdysxMj4+Ml09YVtPZSsxMj4+Ml0sYVtiPj4yXT1hW2Y+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0sYVtiKzg+PjJdPWFbZis4Pj4y''@;'; put 'put ''XSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0sMCE9KDB8em0oayxBLHcsYikpJiYoYVt3Pj4yXT1hW2Y+PjJdLGFbdys0Pj4yXT1hW2YrND4+Ml0sYVt3Kzg+PjJdPWFbZis4Pj4yXSxhW3crMTI+PjJdPWFbZisxMj4+Ml0sYVtiPj4yXT1hW1I+PjJdLGFbYis0Pj4yXT1hW1IrND4+Ml0sYVtiKzg+''@;'; put 'put ''PjJdPWFbUis4Pj4yXSxhW2IrMTI+PjJdPWFbUisxMj4+Ml0sMCE9KDB8ejQodyxiLGwsbSxHLEsscGUpKSk/KGFbdz4+Ml09YVtmPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4Pj4yXT1hW2YrOD4+Ml0sYVt3KzEyPj4yXT1hW2YrMTI+PjJdLGFbYj4+Ml09YVtSPj4yXSxhW2IrND4+''@;'; put 'put ''Ml09YVtSKzQ+PjJdLGFbYis4Pj4yXT1hW1IrOD4+Ml0sYVtiKzEyPj4yXT1hW1IrMTI+PjJdLHA9K1g4KHcsYikpOnA9MCxfW0QrKGM8PDMpPj4zXT1wLGM9YysxfDA7cmV0dXJuIF9bRCsoRzw8Myk+PjNdPTAsX1tEKyhHKzE8PDMpPj4zXT0wLG9lPW1lLDB8RH1mdW5jdGlvbiBhUChsKXt2''@;'; put 'put ''YXIgYztyZXR1cm4gMHwoYz0wfHBhWzYzJmFbKGx8PTApPj4yXV0oMTg4KSkmJihHbShjKzgwfDAsbCksR20oYysxMDR8MCxsKSx4MyhjLGwpLHgzKGMrMjB8MCxsKSx4MyhjKzQwfDAsbCkseDMoYys2MHwwLGwpLHVlW2MrMTMxPj4wXT0wLHgzKGMrMTMyfDAsbCksYVtjKzE1Mj4+Ml09MCxh''@;'; put 'put ''W2MrMTU2Pj4yXT0wLHVlW2MrMTYwPj4wXT0wLGFbKGw9YysxNjR8MCk+PjJdPTAsYVtsKzQ+PjJdPTAsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wLGFbbCsxNj4+Ml09MCxhW2wrMjA+PjJdPTAsdWVbYysxMjg+PjBdPTEsdWVbYysxMjk+PjBdPTAsdWVbYysxMzA+PjBdPTApLDB8Y31mdW5j''@;'; put 'put ''dGlvbiBHbShsLGMpe2N8PTAsYVsobHw9MCk+PjJdPTAsYVtsKzQ+PjJdPTAsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wLGFbbCsxNj4+Ml09MCxhW2wrMjA+PjJdPWN9ZnVuY3Rpb24gTV8obCxjKXtjfD0wO3ZhciBmLHA9MCxtPTA7YVsyNzYrKGx8PTApPj4yXT01NixmdW5jdGlvbiBxMWUo''@;'; put 'put ''bCl7YVsobHw9MCk+PjJdPTE1LGFbbCsxNj4+Ml09MSxhW2wrMTI+PjJdPTAsYVtsKzIwPj4yXT0wfShsKzI1MnwwKSwwfGMmJihhW2wrMjI4Pj4yXT0wfGZ1bmN0aW9uIHNQKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wO2Y9MDtkb3twPWYsZj1mKzF8MH13aGlsZSgwIT0oMHx1ZVtsK3A+''@;'; put 'put ''PjBdKSk7cmV0dXJuKGM9MHxwYVs2MyZhW2M+PjJdXShmKSk/RG8oMHxjLDB8bCwwfGYpOmM9MCwwfGN9KGMsbCsxMnwwKSksYVtsKzM1Nj4+Ml09MCxWaihsKzE0OHwwLGwrMTQ0fDAsMCksYVtsPj4yXT0wLGFbbCs0Pj4yXT0wLGM9bCsxMTZ8MCxtPTY0KyhwPWwrNTJ8MCl8MDtkb3thW3A+''@;'; put 'put ''PjJdPTAscD1wKzR8MH13aGlsZSgoMHxwKTwoMHxtKSk7YVtjPj4yXT1sLGFbbCsxMjA+PjJdPTAsYVsoYz1sKzEyOHwwKT4+Ml09MCxhW2MrND4+Ml09MCxhW2MrOD4+Ml09MCxhW2MrMTI+PjJdPTAsYVtsKzI0Pj4yXT1jPTB8YVtsKzg+PjJdLGFbbCsyOD4+Ml09YyxhW2wrMzY+PjJdPTAs''@;'; put 'put ''YVtsKzQwPj4yXT0wLGM9bCszMTJ8MCxhWyhwPWwrNDA0fDApPj4yXT0wLGFbcCs0Pj4yXT0wLGY9bCszMDR8MCxhWyhwPWwrMjgwfDApPj4yXT0wLGFbcCs0Pj4yXT0wLGFbcCs4Pj4yXT0wLGFbcCsxMj4+Ml09MCxhW3ArMTY+PjJdPTAsbT0ocD1jKSszNnwwO2Rve2FbcD4+Ml09MCxwPXAr''@;'; put 'put ''NHwwfXdoaWxlKCgwfHApPCgwfG0pKTtUdFtjKzM2Pj4xXT0wLHVlW2Y+PjBdPTEsYVtsKzMwOD4+Ml09MCxhW2wrMzYwPj4yXT0wLGFbbCszNjg+PjJdPTAsYVtsKzM4MD4+Ml09MCxhW2wrMjM2Pj4yXT0wLGFbbCsyNDg+PjJdPTAsYVtsKzI0MD4+Ml09MCxhW2wrNDcyPj4yXT0wLGFbbCs0''@;'; put 'put ''NzY+PjJdPTAsdWVbbCs0ODQ+PjBdPTAsdWVbbCs0ODU+PjBdPTAsYVtsKzQ4OD4+Ml09MCxhW2wrNDkyPj4yXT0wfWZ1bmN0aW9uIEVfKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2lmKDB8KGx8PTApKXtmb3IoZj1sKzM2NHwwLG09bCsyMHwwLGM9MHxhW2wrMzYwPj4yXTs7KXtpZigh''@;'; put 'put ''Yyl7aWYoIShjPTB8YVtmPj4yXSkpYnJlYWs7YVtmPj4yXT0wfUE9MHxhW2M+PjJdLG5vWzEyNyZhW20+PjJdXSgwfGFbYyszNj4+Ml0pLGtjKDB8YVtjKzQ0Pj4yXSxsKSxub1sxMjcmYVttPj4yXV0oYyksYz1BfWZvcihmPWwrMzAwfDAsYz0wfGFbbCsyOTY+PjJdOzspe2lmKCFjKXtpZigh''@;'; put 'put ''KGM9MHxhW2Y+PjJdKSlicmVhazthW2Y+PjJdPTB9QT0wfGFbYys4Pj4yXSxub1sxMjcmYVttPj4yXV0oYyksYz1BfWtjKDB8YVtsKzM3Mj4+Ml0sbCksa2MoMHxhW2wrMzY4Pj4yXSxsKSxXbShsKzQxMnwwKSxXbShsKzQzNnwwKSxjPWwrMTJ8MCxub1sxMjcmYVttPj4yXV0oMHxhW2wrMjI4''@;'; put 'put ''Pj4yXSksMD09KDB8dWVbbCs0ODQ+PjBdKSYmMHwocD0wfGFbbCszNTI+PjJdKSYmZnVuY3Rpb24gbFAobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxBLHcscD0wO2Zvcih3PW9lLG9lPW9lKzE2fDAseF8obT13LEE9MjArKGx8PTApfDApLGY9Zis4fDA7cD0wfGZBKG0pOykhKDB8YVtwKzE2Pj4y''@;'; put 'put ''XSl8fG5vWzEyNyZhW2Y+PjJdXSgwfGFbcCsyMD4+Ml0pO3c2KGwpLHc2KGwrMTMyfDApLHc2KEEpLHc2KGwrNDB8MCksdzYobCs2MHwwKSxXbShsKzgwfDApLFdtKGwrMTA0fDApLGM8PDI0Pj4yNCYmKG5vWzEyNyZhW2Y+PjJdXSgwfGFbbCsxODQ+PjJdKSxub1sxMjcmYVtmPj4yXV0oMHxh''@;'; put 'put ''W2wrMTY0Pj4yXSkpLG5vWzEyNyZhW2Y+PjJdXShsKSxvZT13fShwLDA9PSgwfGFbbCs0NzI+PjJdKSYxLGMpLG5vWzEyNyZhW20+PjJdXSgwfGFbbCszODg+PjJdKSxub1sxMjcmYVttPj4yXV0oMHxhW2wrNDYwPj4yXSksbm9bMTI3JmFbbT4+Ml1dKDB8YVtsKzg+PjJdKSxub1sxMjcmYVtt''@;'; put 'put ''Pj4yXV0oMHxhW2wrNDQ+PjJdKSxub1sxMjcmYVttPj4yXV0oMHxhW2wrMzkyPj4yXSksbm9bMTI3JmFbbT4+Ml1dKDB8YVtsKzIzNj4+Ml0pLDB8KGM9MHxhW2wrMjQ4Pj4yXSkmJm5vWzEyNyZjXSgwfGFbbCsyNDA+PjJdKSxub1sxMjcmYVttPj4yXV0obCl9fWZ1bmN0aW9uIGtjKGwsYyl7''@;'; put 'put ''bHw9MDt2YXIgZj0wO2ZvcihjPTIwKyhjfD0wKXwwO2w7KWY9MHxhW2wrND4+Ml0sbm9bMTI3JmFbYz4+Ml1dKDB8YVtsKzE2Pj4yXSksbm9bMTI3JmFbYz4+Ml1dKGwpLGw9Zn1mdW5jdGlvbiBXbShsKXt2YXIgZixjPTAscD0wO2ZvcihmPTIwKyhsfD0wKXwwLGM9MHxhW2w+PjJdO2M7KXA9''@;'; put 'put ''MHxhW2M+PjJdLG5vWzEyNyZhWzgrKDB8YVtmPj4yXSk+PjJdXShjKSxjPXA7Zm9yKGM9MHxhW2wrND4+Ml07YzspcD0wfGFbYz4+Ml0sbm9bMTI3JmFbOCsoMHxhW2Y+PjJdKT4+Ml1dKGMpLGM9cH1mdW5jdGlvbiB4XyhsLGMpe3ZhciBmO2FbKGx8PTApPj4yXT1mPTB8YVsoY3w9MCk+PjJd''@;'; put 'put ''LGFbbCs0Pj4yXT1mKyhhW2MrOD4+Ml08PDIpfWZ1bmN0aW9uIGZBKGwpe3ZhciBmLGM9MCxwPTA7Zj0wfGFbNCsobHw9MCk+PjJdLHA9MHxhW2w+PjJdO2Rve2lmKCgwfHApPT0oMHxmKSl7Yz0wO2JyZWFrfWM9cCxhW2w+PjJdPXA9cCs0fDAsYz0wfGFbYz4+Ml19d2hpbGUoISgwfGMpKTty''@;'; put 'put ''ZXR1cm4gMHxjfWZ1bmN0aW9uIHc2KGwpe3ZhciBmLHAsYz0wLG09MCxBPTA7Zm9yKGY9OCsobHw9MCl8MCxwPWwrMTZ8MCxjPTA7bT0wfGFbOCsoMHxhW3A+PjJdKT4+Ml0sQT0wfGFbbD4+Ml0sIShjPj4+MD49KDB8YVtmPj4yXSk+Pj4wKTspbm9bMTI3Jm1dKDB8YVtBKyhjPDwyKT4+Ml0p''@;'; put 'put ''LGM9YysxfDA7bm9bMTI3Jm1dKEEpfWZ1bmN0aW9uIFRfKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBtLEEsYix3PTA7cmV0dXJuIG09b2Usb2U9b2UrMTZ8MCxhWyhBPW0pPj4yXT1jfD0wLHc9MHxEMFsxMjcmYVsodz0wfGFbKGI9bCsxNDR8MCk+PjJdKT4+Ml1dKHcsYyxmLEEpLHA9''@;'; put 'put ''MHxZbShsLDB8YVtiPj4yXSxjLGYsdywwfGFbQT4+Ml0scCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpLG9lPW0sMHxwfWZ1bmN0aW9uIFltKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLHd8PTAsYnw9MDt2YXIgSyxwZSxtZSxiZSxPZSxMZSxCZSxIZSxqZSxldCxy''@;'; put 'put ''dCxHZSxsdCxNdCxrdCxhdCxFdCxadCx1dCx3dCxybix5bixGbixscixOcixrcixjcixDcixxcixMcixhMCxGaSxQaSxIbyxsbyx5YSxWbCx3YSxDaSxIYSxmcyxqbCxCMCxTYSxXMixrdSxkaCxsbCxUMixVbCxBUyxsMSxsNCxTdSxPMSxMZixCYyxyMyxhcyxvcSxrPTAsTT0wLEQ9MCxSPTAs''@;'; put 'put ''Rz0wLHBoPTAsc2w9MCxBcD0wLG13PTAseVM9MCx3Wj0wLGJaPTAsdmw9MCxpMz0wLHdnPTA7b3E9b2Usb2U9b2UrMTZ8MCxhWyh2bD1vcSk+PjJdPUF8PTAsKDB8YVsocGU9bCsxNDR8MCk+PjJdKT09KDB8Yyk/KFI9bCsyODR8MCxHPWwrMjg4fDAscGg9bCsyOTZ8MCk6KFI9Rz0wfGFbKHBo''@;'; put 'put ''PWwrMjk2fDApPj4yXSxHPUcrNHwwKSxtZT1iPDwyND4+MjQhPTAsQVM9bCsyNTJ8MCxiZT1sKzgwfDAsT2U9bCs0NzZ8MCxMZT1sKzg0fDAsQmU9bCszMjB8MCxIZT1sKzQxMnwwLGplPWwrMzE2fDAsZXQ9bCs0MjR8MCxydD1sKzQyOHwwLEdlPWwrMzI0fDAsbDE9bCs0fDAsbHQ9bCs0ODV8''@;'; put 'put ''MCxNdD0xMzIrKEs9MHxhW2wrMzUyPj4yXSl8MCxrdD1sKzMxMnwwLGw0PUsrMTI5fDAsYXQ9SysxMjh8MCxFdD1LKzgwfDAsWnQ9Sys5MnwwLHV0PUsrOTZ8MCx3dD1sKzEzNnwwLHJuPWwrODh8MCx5bj1sKzQ4OHwwLFN1PWwrMTEyfDAsTzE9SysxMzF8MCxMZj1sKzExNnwwLEJjPUsrMTMw''@;'; put 'put ''fDAscjM9bCsxMDh8MCxhcz1sKzM1NnwwLEZuPWwrMzQwfDAsbHI9bCsxMzJ8MCxOcj1sKzM0NHwwLGtyPWwrMzQ4fDAsY3I9bCszMjh8MCxDcj1sKzM0OXwwLHFyPWwrNDIwfDAsTHI9SysxMjB8MCxhMD1LKzExNnwwLEZpPWwrOTJ8MCxQaT1sKzQ3MnwwLEhvPWwrMzM2fDAsbG89bCszMzJ8''@;'; put 'put ''MCx5YT1sKzk2fDAsVmw9bCsyNTZ8MCx3YT1sKzQ2NHwwLENpPWwrNDYwfDAsSGE9SysxNjB8MCxmcz1LKzE4NHwwLGpsPUsrMTgwfDAsQjA9SysxNjR8MCxTYT1sKzEyOHwwLFcyPWwrMTJ8MCxrdT1sKzE2fDAsZGg9bCsyNjh8MCxsbD1sKzEyMHwwLFQyPUsrMTc2fDAsVWw9SysxNjh8MCxE''@;'; put 'put ''PWMsTT1mLGM9bTtlOmZvcig7Oyl7YVtSPj4yXT1NLGFbRz4+Ml09Zj0wfGFbdmw+PjJdLEE9Zjt0OmRve2lmKCgwfGMpPDEpe2lmKG1lJjAhPSgwfGMpKXtrPTc7YnJlYWsgZX1zd2l0Y2goMHxjKXtjYXNlLTE6QT01LGs9MjgwO2JyZWFrIGU7Y2FzZSAwOms9OTticmVhayBlO2Nhc2UtMjpB''@;'; put 'put ''PTY7YnJlYWsgZTtjYXNlLTQ6az0xMDticmVhayBlO2Nhc2UtMTU6Yz0xNTticmVhayB0fWFbdmw+PjJdPXAsYz0wLWN8MCxBPXB9fXdoaWxlKDApO209MHxMMVsxMjcmYVtBUz4+Ml1dKEFTLGMsTSxBLEQpO3Q6ZG97c3dpdGNoKDB8bSl7Y2FzZSAyOms9NTg7YnJlYWsgZTtjYXNlLTE6az0x''@;'; put 'put ''ODQ7YnJlYWsgZTtjYXNlIDE6aWYoMHwoQT0wfF94KGwsMCxNLDB8YVt2bD4+Ml0pKSl7az0yODA7YnJlYWsgZX1BPTB8YVtwZT4+Ml07YnJlYWs7Y2FzZSA0OmlmKDB8YVtMZT4+Ml0pe2lmKGs9MHxsMihIZSxELE0sMHxhW3ZsPj4yXSksYVtqZT4+Ml09aywhayl7QT0xLGs9MjgwO2JyZWFr''@;'; put 'put ''IGV9YVtydD4+Ml09YVtldD4+Ml0sYVtHZT4+Ml09MCxBPTB9ZWxzZSBBPTE7YVtCZT4+Ml09MCxrPTI3NDticmVhaztjYXNlIDc6KEE9MHxhW0xlPj4yXSk/KG4zWzE1JkFdKDB8YVtsMT4+Ml0sMHxhW2plPj4yXSwwfGFbQmU+PjJdLDB8YVtHZT4+Ml0sMSksYVtqZT4+Ml09MCxxZihIZSks''@;'; put 'put ''QT1EKTprPTI3NTticmVhaztjYXNlIDU3OmlmKDB8KEE9MHxfeChsLDEsTSwwfGFbdmw+PjJdKSkpe2s9MjgwO2JyZWFrIGV9QT0wfGFbcGU+PjJdO2JyZWFrO2Nhc2UgNjppZih1ZVtsdD4+MF09MCxrPTB8XzEobCxNdCw3NTM5NSwzNiksYVtrdD4+Ml09aywhayl7QT0xLGs9MjgwO2JyZWFr''@;'; put 'put ''IGV9aWYodWVbbDQ+PjBdPTEsMHxhW0xlPj4yXSl7aWYoISgwfEQwWzEyNyZhW0QrNTI+PjJdXShELE0sMHxhW3ZsPj4yXSxSKSkpe0E9MzIsaz0yODA7YnJlYWsgZX1pZighKEE9MHxsMihIZSxELE0rKEE9MHxhW0QrNjQ+PjJdKXwwLDAtQSsoMHxhW3ZsPj4yXSl8MCkpKXtBPTEsaz0yODA7''@;'; put 'put ''YnJlYWsgZX1oQShBKSxhW3J0Pj4yXT1hW2V0Pj4yXSxhW0dlPj4yXT1BLEE9MCxrPTM0fWVsc2Ugaz0zMzticmVhaztjYXNlIDE0Oms9MzM7YnJlYWs7Y2FzZSA4OmlmKChBPTB8YVtqZT4+Ml0pPyhuM1sxNSZhW0xlPj4yXV0oMHxhW2wxPj4yXSxBLDB8YVtCZT4+Ml0sMHxhW0dlPj4yXSww''@;'; put 'put ''KSxxZihIZSksQT0wKTpBPTEsMCE9KDB8YVtCZT4+Ml0pfHwwfHVlW2x0Pj4wXSl7Zj0wfHVlW2w0Pj4wXSx1ZVtsND4+MF09MTtkb3tpZigwfGFbeW4+PjJdJiYwfGFbU3U+PjJdKXtpZighKG09MHxfMShsLE10LDc1Mzk1LDM2KSkpe0E9MSxrPTI4MDticmVhayBlfWlmKDB8dWVbbHQ+PjBd''@;'; put 'put ''P2FbKGM9bSsyMHwwKT4+Ml09YVthcz4+Ml06Yz1tKzIwfDAsdWVbTzE+PjBdPTAsISgwfEwxWzEyNyZhW1N1Pj4yXV0oMHxhW0xmPj4yXSwwLDB8YVtjPj4yXSwwfGFbbSsxNj4+Ml0sMHxhW20rMjQ+PjJdKSkpe0E9MjEsaz0yODA7YnJlYWsgZX1pZighKDB8dWVbTzE+PjBdKSl7aWYoMHxh''@;'; put 'put ''W0JlPj4yXSlicmVhazt1ZVtsND4+MF09ZjticmVha31pZigwPT0oMHx1ZVtCYz4+MF0pJiYwfChzbD0wfGFbcjM+PjJdKSYmMD09KDB8cGFbNjMmc2xdKDB8YVtsMT4+Ml0pKSl7QT0yMixrPTI4MDticmVhayBlfX19d2hpbGUoMCk7dWVbbHQ+PjBdPTB9KGM9MHxhW3JuPj4yXSk/KG5vWzEy''@;'; put 'put ''NyZjXSgwfGFbbDE+PjJdKSxBPUQpOms9Mjc0O2JyZWFrO2Nhc2UgMzQ6aWYoaz0wfFVtKGwsRCxNLDB8YVt2bD4+Ml0pLGFbRm4+PjJdPWssIWspe0E9MSxrPTI4MDticmVhayBlfWs9ODA7YnJlYWs7Y2FzZSAyMjppZihrPTB8TGgobCxELE0sMHxhW3ZsPj4yXSksYVtOcj4+Ml09aywhayl7''@;'; put 'put ''QT0xLGs9MjgwO2JyZWFrIGV9dWVba3I+PjBdPTAsYVtjcj4+Ml09MCx1ZVtDcj4+MF09MCxrPTgwO2JyZWFrO2Nhc2UgMjM6dWVba3I+PjBdPTEsYVtjcj4+Ml09MTQyMTg4LGs9ODA7YnJlYWs7Y2FzZSAyNDp1ZVtDcj4+MF09MSxhW2NyPj4yXT0xNDIxOTQsaz04MDticmVhaztjYXNlIDI1''@;'; put 'put ''OmFbY3I+PjJdPTE0MjE5NyxrPTgwO2JyZWFrO2Nhc2UgMjY6YVtjcj4+Ml09MTQyMjAzLGs9ODA7YnJlYWs7Y2FzZSAyNzphW2NyPj4yXT0xNDIyMTAsaz04MDticmVhaztjYXNlIDI4OmFbY3I+PjJdPTE0MjIxNyxrPTgwO2JyZWFrO2Nhc2UgMjk6YVtjcj4+Ml09MTQyMjI2LGs9ODA7YnJl''@;'; put 'put ''YWs7Y2FzZSAzMDphW2NyPj4yXT0xNDIyMzQsaz04MDticmVhaztjYXNlIDMyOmNhc2UgMzE6aWYoMCE9KDB8dWVbYXQ+PjBdKSYmMCE9KDB8YVtscj4+Ml0pKXtpZighKDB8SV8oSGUsMD09KDB8YVtjcj4+Ml0pPzMyPT0oMHxtKT8xNDIyNDM6MTQyMjUzOjE0MjI1NSkpKXtBPTEsaz0yODA7''@;'; put 'put ''YnJlYWsgZX1pZighKDB8cEEoSGUsRCxNLDB8YVt2bD4+Ml0pKSl7QT0xLGs9MjgwO2JyZWFrIGV9YVtjcj4+Ml09YVtydD4+Ml0sQT1EfWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSAzNjpjYXNlIDM1OmlmKDB8dWVbYXQ+PjBdKXtpZighKDB8Q3goMHxhW0ZuPj4yXSwwfGFbTnI+PjJdLDB8dWVb''@;'; put 'put ''a3I+PjBdLDB8dWVbQ3I+PjBdLDAsbCkpKXtBPTEsaz0yODA7YnJlYWsgZX1pZigwIT0oMHxhW2xyPj4yXSkmJjAhPSgwfChBcD0wfGFbY3I+PjJdKSkpe3N3aXRjaCgwfHVlW0FwPj4wXSl7Y2FzZSA0MDprPTkzO2JyZWFrO2Nhc2UgNzg6Nzk9PSgwfHVlW0FwKzE+PjBdKSYmKGs9OTMpfWlm''@;'; put 'put ''KDkzPT0oMHxrKSl7aWYoaz0wLCgwfChBPTB8YVtldD4+Ml0pKT09KDB8YVtxcj4+Ml0pKXtpZighKCgwfFJsKEhlKSk8PDI0Pj4yNCkpe0E9MSxrPTI4MDticmVhayBlfUE9MHxhW2V0Pj4yXX1pZihhW2V0Pj4yXT1BKzEsdWVbQT4+MF09NDEsKDB8KEE9MHxhW2V0Pj4yXSkpPT0oMHxhW3Fy''@;'; put 'put ''Pj4yXSkpe2lmKCEoKDB8UmwoSGUpKTw8MjQ+PjI0KSl7QT0xLGs9MjgwO2JyZWFrIGV9QT0wfGFbZXQ+PjJdfWFbZXQ+PjJdPUErMSx1ZVtBPj4wXT0wLGFbY3I+PjJdPWFbcnQ+PjJdLGFbcnQ+PjJdPWFbZXQ+PjJdfWFbRz4+Ml09TSxnd1sxNSZhW2xyPj4yXV0oMHxhW2wxPj4yXSwwfGFb''@;'; put 'put ''YVtGbj4+Ml0+PjJdLDB8YVthW05yPj4yXT4+Ml0sMHxhW2NyPj4yXSwwLDM2PT0oMHxtKSYxKSxxZihIZSksQT1EfWVsc2Ugaz0yNzV9ZWxzZSBrPTI3NTticmVhaztjYXNlIDM4OmNhc2UgMzc6aWYoMHx1ZVthdD4+MF0pe2lmKDB8KEE9MHxnQShsLEQsMHx1ZVtrcj4+MF0sTSsoQT0wfGFb''@;'; put 'put ''RCs2ND4+Ml0pfDAsMC1BKygwfGFbdmw+PjJdKXwwLEV0KSkpe2s9MjgwO2JyZWFrIGV9aWYoYz0wfGFbdXQ+PjJdLGFbdXQ+PjJdPWFbWnQ+PjJdLCEoMHxDeCgwfGFbRm4+PjJdLDB8YVtOcj4+Ml0sMHx1ZVtrcj4+MF0sMCxjLGwpKSl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoMCE9KDB8YVts''@;'; put 'put ''cj4+Ml0pJiYwIT0oMHwobXc9MHxhW2NyPj4yXSkpKXtzd2l0Y2goMHx1ZVttdz4+MF0pe2Nhc2UgNDA6az0xMDg7YnJlYWs7Y2FzZSA3ODo3OT09KDB8dWVbbXcrMT4+MF0pJiYoaz0xMDgpfWlmKDEwOD09KDB8aykpe2lmKGs9MCwoMHwoQT0wfGFbZXQ+PjJdKSk9PSgwfGFbcXI+PjJdKSl7''@;'; put 'put ''aWYoISgoMHxSbChIZSkpPDwyND4+MjQpKXtBPTEsaz0yODA7YnJlYWsgZX1BPTB8YVtldD4+Ml19aWYoYVtldD4+Ml09QSsxLHVlW0E+PjBdPTQxLCgwfChBPTB8YVtldD4+Ml0pKT09KDB8YVtxcj4+Ml0pKXtpZighKCgwfFJsKEhlKSk8PDI0Pj4yNCkpe0E9MSxrPTI4MDticmVhayBlfUE9''@;'; put 'put ''MHxhW2V0Pj4yXX1hW2V0Pj4yXT1BKzEsdWVbQT4+MF09MCxhW2NyPj4yXT1hW3J0Pj4yXSxhW3J0Pj4yXT1hW2V0Pj4yXX1hW0c+PjJdPU0sZ3dbMTUmYVtscj4+Ml1dKDB8YVtsMT4+Ml0sMHxhW2FbRm4+PjJdPj4yXSwwfGFbYVtOcj4+Ml0+PjJdLDB8YVtjcj4+Ml0sYywzOD09KDB8bSkm''@;'; put 'put ''MSkscWYoSGUpLEE9RH1lbHNlIGs9Mjc1fWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSAxMjppZigwfHVlW2F0Pj4wXSl7aWYoQT0wfERfKGwsRCxNKyhBPTB8YVtEKzY0Pj4yXSl8MCwwLUErKDB8YVt2bD4+Ml0pfDApLGY9MHxhW0xyPj4yXSwoYz0wfGFba3Q+PjJdKT8oYVtjKzQ+PjJdPWYsYVs4''@;'; put 'put ''KygwfGFba3Q+PjJdKT4+Ml09KDB8YVthMD4+Ml0pLSgwfGFbTHI+PjJdKSxhW0xyPj4yXT1hW2EwPj4yXSwwfGFbd3Q+PjJdPyhhW0c+PjJdPU0sVUxbMCZhW3d0Pj4yXV0oMHxhW2wxPj4yXSwwfGFbKGM9MHxhW2t0Pj4yXSk+PjJdLDB8YnRbYyszMz4+MF0sMHxhW2MrND4+Ml0sMHxhW2Mr''@;'; put 'put ''OD4+Ml0sMHxhW2FzPj4yXSwwLDAsMCksYz0wKTpjPTEpOihhW2EwPj4yXT1mLGM9MSksQSl7az0yODA7YnJlYWsgZX1BPWMsaz0yNzR9ZWxzZSBrPTI3NTticmVhaztjYXNlIDU6aWYodWVbbHQ+PjBdPTAsdWVbbDQ+PjBdPTEsMHxhW0xlPj4yXSl7aWYoaz0wfGwyKEhlLEQsTSsoaz0wfGFb''@;'; put 'put ''RCs2ND4+Ml0pfDAsMC1rKygwfGFbdmw+PjJdKXwwKSxhW0JlPj4yXT1rLCFrKXtBPTEsaz0yODA7YnJlYWsgZX1hW3J0Pj4yXT1hW2V0Pj4yXSxBPTB9ZWxzZSBhW0JlPj4yXT03NTM5NSxBPTE7aWYoMD09KDB8dWVbQmM+PjBdKSYmMD09KDB8YVt5bj4+Ml0pJiYwfCh5Uz0wfGFbcjM+PjJd''@;'; put 'put ''KSYmMD09KDB8cGFbNjMmeVNdKDB8YVtsMT4+Ml0pKSl7QT0yMixrPTI4MDticmVhayBlfWlmKDB8YVtrdD4+Ml0paz0xMzM7ZWxzZXtpZihjPTB8XzEobCxNdCw3NTM5NSwzNiksYVtrdD4+Ml09YywhYyl7QT0xLGs9MjgwO2JyZWFrIGV9YVtjKzI0Pj4yXT0wLGs9MTMzfWJyZWFrO2Nhc2Ug''@;'; put 'put ''MTM6QT0xLGs9MTMzO2JyZWFrO2Nhc2UgMTU6MCE9KDB8dWVbYXQ+PjBdKSYmMCE9KDB8YVtrdD4+Ml0pJiYwIT0oMHxhW3d0Pj4yXSk/KGFbRz4+Ml09TSxVTFswJmFbd3Q+PjJdXSgwfGFbbDE+PjJdLDB8YVsoQT0wfGFba3Q+PjJdKT4+Ml0sMHxidFtBKzMzPj4wXSwwLDAsMHxhW0ErMjA+''@;'; put 'put ''PjJdLDB8YVtBKzE2Pj4yXSwwfGFbQSsyND4+Ml0sMCksQT1EKTprPTI3NTticmVhaztjYXNlIDE2OmlmKDAhPSgwfHVlW2F0Pj4wXSkmJjAhPSgwfGFba3Q+PjJdKSl7aWYobT0wfGwyKEV0LEQsTSwwfGFbdmw+PjJdKSxhWzI4KygwfGFba3Q+PjJdKT4+Ml09bSwhKDB8YVsyOCsoMHxhW2t0''@;'; put 'put ''Pj4yXSk+PjJdKSl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoYVt1dD4+Ml09YVtadD4+Ml0sMHxhW0ZpPj4yXSl7YVtHPj4yXT1NLGd3WzE1JmFbRmk+PjJdXSgwfGFbbDE+PjJdLDB8YVsoQT0wfGFba3Q+PjJdKT4+Ml0sMHxhW0ErMjA+PjJdLDB8YVtBKzE2Pj4yXSwwfGFbQSsyND4+Ml0sMHxh''@;'; put 'put ''W0ErMjg+PjJdKSxBPUQ7YnJlYWsgdH0wfGFbd3Q+PjJdPyhhW0c+PjJdPU0sVUxbMCZhW3d0Pj4yXV0oMHxhW2wxPj4yXSwwfGFbKEE9MHxhW2t0Pj4yXSk+PjJdLDAsMCwwLDB8YVtBKzIwPj4yXSwwfGFbQSsxNj4+Ml0sMHxhW0ErMjQ+PjJdLDB8YVtBKzI4Pj4yXSksQT1EKTprPTI3NX1l''@;'; put 'put ''bHNlIGs9Mjc1O2JyZWFrO2Nhc2UgOTppZigwfG1pWzYzJmFbRCs0ND4+Ml1dKEQsTSwwfGFbdmw+PjJdKSl7YVtrdD4+Ml09MCxrPTI3NTticmVhayB0fWlmKCEoMHx1ZVthdD4+MF0pKXthW1p0Pj4yXT1hW3V0Pj4yXSxhW2t0Pj4yXT0wLGs9Mjc1O2JyZWFrIHR9aWYoIShBPTB8bDIoRXQs''@;'; put 'put ''RCxNLDB8YVt2bD4+Ml0pKSl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoYz0wfF8xKGwsSyxBLDM2KSxhW2t0Pj4yXT1jLCFjKXtBPTEsaz0yODA7YnJlYWsgZX1pZigoMHxhW2M+PjJdKSE9KDB8QSkpe2FbWnQ+PjJdPWFbdXQ+PjJdLGFba3Q+PjJdPTAsaz0yNzU7YnJlYWsgdH1hW3V0Pj4yXT1h''@;'; put 'put ''W1p0Pj4yXSxhWzI0KygwfGFba3Q+PjJdKT4+Ml09MCx1ZVszMysoMHxhW2t0Pj4yXSk+PjBdPTAsdWVbMzQrKDB8YVtrdD4+Ml0pPj4wXT0xJigxXihBPTB8YVtQaT4+Ml0/MTowIT0oMHxhW3BoPj4yXSkpKSwwfGFbd3Q+PjJdP0E9RDprPTI3NTticmVhaztjYXNlIDEwOmlmKCEoMHx1ZVth''@;'; put 'put ''dD4+MF0pKXthW1p0Pj4yXT1hW3V0Pj4yXSxhW2t0Pj4yXT0wLGs9Mjc1O2JyZWFrIHR9aWYoIShBPTB8bDIoRXQsRCxNLDB8YVt2bD4+Ml0pKSl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoYz0wfF8xKGwsTXQsQSwzNiksYVtrdD4+Ml09YywhYyl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoKDB8YVtj''@;'; put 'put ''Pj4yXSkhPSgwfEEpKXthW1p0Pj4yXT1hW3V0Pj4yXSxhW2t0Pj4yXT0wLGs9Mjc1O2JyZWFrIHR9YVt1dD4+Ml09YVtadD4+Ml0sYVsyNCsoMHxhW2t0Pj4yXSk+PjJdPTAsdWVbMzMrKDB8YVtrdD4+Ml0pPj4wXT0xLHVlWzM0KygwfGFba3Q+PjJdKT4+MF09MSYoMV4oQT0wfGFbUGk+PjJd''@;'; put 'put ''PzE6MCE9KDB8YVtwaD4+Ml0pKSksMHxhW3d0Pj4yXT9BPUQ6az0yNzU7YnJlYWs7Y2FzZSAxODppZihhW0hvPj4yXT0wLGFbbG8+PjJdPTAsMHxhW3lhPj4yXSl7aWYoTT0wfGwyKEhlLEQsTSwwfGFbdmw+PjJdKSxhW2xvPj4yXT1NLCFNKXtBPTEsaz0yODA7YnJlYWsgZX1hW3J0Pj4yXT1h''@;'; put 'put ''W2V0Pj4yXSxBPUR9ZWxzZSBrPTI3NTticmVhaztjYXNlIDIxOmlmKCEoMHxEMFsxMjcmYVtEKzUyPj4yXV0oRCxNLDB8YVt2bD4+Ml0sUikpKXtBPTMyLGs9MjgwO2JyZWFrIGV9aWYoMHxhW2xvPj4yXSl7aWYoIShBPTB8bDIoSGUsRCxNKyhBPTB8YVtEKzY0Pj4yXSl8MCwwLUErKDB8YVt2''@;'; put 'put ''bD4+Ml0pfDApKSl7QT0xLGs9MjgwO2JyZWFrIGV9aEEoQSksYVtIbz4+Ml09QSxhW3J0Pj4yXT1hW2V0Pj4yXSxBPUR9ZWxzZSBrPTI3NTticmVhaztjYXNlIDE5OmlmKDAhPSgwfGFbbG8+PjJdKSYmMCE9KDB8YVt5YT4+Ml0pKXtpZighKEE9MHxsMihIZSxELE0rKEE9MHxhW0QrNjQ+PjJd''@;'; put 'put ''KXwwLDAtQSsoMHxhW3ZsPj4yXSl8MCkpKXtBPTEsaz0yODA7YnJlYWsgZX1hW0c+PjJdPU0sbjNbMTUmYVt5YT4+Ml1dKDB8YVtsMT4+Ml0sMHxhW2xvPj4yXSwwfGFbYXM+PjJdLEEsMHxhW0hvPj4yXSksQT0wfWVsc2UgQT0xO3FmKEhlKSxrPTI3NDticmVhaztjYXNlIDIwOjAhPSgwfGFb''@;'; put 'put ''SG8+PjJdKSYmMCE9KDB8YVt5YT4+Ml0pPyhhW0c+PjJdPU0sbjNbMTUmYVt5YT4+Ml1dKDB8YVtsMT4+Ml0sMHxhW2xvPj4yXSwwfGFbYXM+PjJdLDAsMHxhW0hvPj4yXSksQT0wKTpBPTEscWYoSGUpLGs9Mjc0O2JyZWFrO2Nhc2UgNTg6aWYoMHxhW2JlPj4yXSYmczIobCxELE0sMHxhW3Zs''@;'; put 'put ''Pj4yXSksMHwoQT0wfExfKGwsRCx2bCxwLHcsYikpKXtrPTI4MDticmVhayBlfWlmKCEoMHxhW3ZsPj4yXSkpe2s9MTg5O2JyZWFrIGV9QT1EO2JyZWFrO2Nhc2UgNDQ6QT0wfGFbd2E+PjJdO2Rve2lmKCgwfGFbVmw+PjJdKT4+PjA+PUE+Pj4wKXtpZighQSl7aWYobT0wfGFbVzI+PjJdLGFb''@;'; put 'put ''d2E+PjJdPTMyLG09MHxwYVs2MyZtXSgzMiksYVtDaT4+Ml09bSxtKWJyZWFrO2s9MTk4O2JyZWFrIGV9aWYoZj0wfGFba3U+PjJdLG09MHxhW0NpPj4yXSxhW3dhPj4yXT1BPDw9MSwhKEE9MHxSaVsxMjcmZl0obSxBKSkpe2s9MTkzO2JyZWFrIGV9aWYoYVtDaT4+Ml09QSwwfChBPTB8YVtm''@;'; put 'put ''cz4+Ml0pKXtpZighKEE9MHxSaVsxMjcmYVtrdT4+Ml1dKEEsYVt3YT4+Ml08PDIpKSl7QT0xLGs9MjgwO2JyZWFrIGV9YVtmcz4+Ml09QX19fXdoaWxlKDApO2lmKHVlWygwfGFbQ2k+PjJdKSsoMHxhW1ZsPj4yXSk+PjBdPTAsMHx1ZVtIYT4+MF0pe2lmKCgwfChBPTB8a3gobCkpKTwwKXtB''@;'; put 'put ''PTEsaz0yODA7YnJlYWsgZX1hWygwfGFbZnM+PjJdKSsoYVtqbD4+Ml08PDIpPj4yXT1BLGFbamw+PjJdPTErKDB8YVtqbD4+Ml0pLGFbKDB8YVtCMD4+Ml0pKygyOCpBfDApPj4yXT02LDB8YVtTYT4+Ml0/QT1EOms9Mjc1fWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSA1MDppZigxMjQ9PSgwfHVl''@;'; put 'put ''WyhBPSgwfGFbQ2k+PjJdKSsoMHxhW1ZsPj4yXSl8MCk+PjBdKSl7QT0yLGs9MjgwO2JyZWFrIGV9dWVbQT4+MF09NDQsMCE9KDB8dWVbSGE+PjBdKSYmMCE9KDB8YVtTYT4+Ml0pP0E9RDprPTI3NTticmVhaztjYXNlIDQ5OmlmKChBPTB8dWVbKGY9MHxhW0NpPj4yXSkrKGM9MHxhW1ZsPj4y''@;'; put 'put ''XSk+PjBdKTw8MjQ+PjI0PT00NCl7QT0yLGs9MjgwO2JyZWFrIGV9QTw8MjQ+PjI0PT0wJjAhPSgwfHVlW0hhPj4wXSkmJjMhPSgwfGFbKHdaPSgwfGFbQjA+PjJdKSsoMjgqKDB8YVsoMHxhW2ZzPj4yXSkrKCgwfGFbamw+PjJdKS0xPDwyKT4+Ml0pfDApfDApPj4yXSk/KGFbd1o+PjJdPTUs''@;'; put 'put ''QT0wPT0oMHxhW1NhPj4yXSkmMSxmPTB8YVtDaT4+Ml0sYz0wfGFbVmw+PjJdKTpBPTEsdWVbZitjPj4wXT0xMjQsaz0yNzQ7YnJlYWs7Y2FzZSA1OTpjYXNlIDYwOmlmKHVlW2w0Pj4wXT0xLDB8YVt5bj4+Ml0pe2lmKCEoYz0wfGwyKEV0LEQsTSsoYz0wfGFbRCs2ND4+Ml0pfDAsMC1jKygw''@;'; put 'put ''fGFbdmw+PjJdKXwwKSkpe0E9MSxrPTI4MDticmVhayBlfWY9MHxfMShsLE10LGMsMCksYVtadD4+Ml09YVt1dD4+Ml07ZG97aWYoMHxhW2RoPj4yXSl7aWYoMHx1ZVtCYz4+MF0pe2lmKDB8YVtwaD4+Ml0pe2s9MjE5O2JyZWFrfX1lbHNlIGlmKDB8dWVbbDQ+PjBdKXtrPTIxOTticmVha31p''@;'; put 'put ''ZighZil7QT0xMSxrPTI4MDticmVhayBlfWlmKCEoMHx1ZVtmKzM0Pj4wXSkpe0E9MjQsaz0yODA7YnJlYWsgZX19ZWxzZSBrPTIxOX13aGlsZSgwKTtpZigyMTk9PSgwfGspJiYoaz0wLDA9PSgwfGYpKSl7aWYodWVbYXQ+PjBdPTB8dWVbQmM+PjBdLDYwIT0oMHxtKSl7az0yNzU7YnJlYWsg''@;'; put 'put ''dH1pZighKEE9MHxhW2xsPj4yXSkpe2s9Mjc1O2JyZWFrIHR9TmxbMTI3JkFdKDB8YVtsMT4+Ml0sYywxKSxBPUQ7YnJlYWsgdH1pZigwfHVlWyhBPWYrMzJ8MCk+PjBdKXtBPTEyLGs9MjgwO2JyZWFrIGV9aWYoMHxhW2YrND4+Ml0pe2lmKGM9MD09KDB8KEE9MHxTeChsLGYsNjA9PSgwfG0p''@;'; put 'put ''JjEpKSkpe0E9MSYoMV5jKSxrPTI3NDticmVhayB0fWs9MjgwO2JyZWFrIGV9aWYoISgwfGFbU3U+PjJdKSl7dWVbYXQ+PjBdPTB8dWVbQmM+PjBdLGs9Mjc1O2JyZWFrIHR9aWYodWVbTzE+PjBdPTAsdWVbQT4+MF09MSxtPTA9PSgwfEwxWzEyNyZhW1N1Pj4yXV0oMHxhW0xmPj4yXSwwLDB8''@;'; put 'put ''YVtmKzIwPj4yXSwwfGFbZisxNj4+Ml0sMHxhW2YrMjQ+PjJdKSksdWVbQT4+MF09MCxtKXtBPTIxLGs9MjgwO2JyZWFrIGV9aWYoYz0wfHVlW0JjPj4wXSwhKDB8dWVbTzE+PjBdKSl7dWVbYXQ+PjBdPWMsQT1EO2JyZWFrIHR9QT0wfWVsc2UgdWVbYXQ+PjBdPWM9MHx1ZVtCYz4+MF0sQT0x''@;'; put 'put ''O2lmKGM8PDI0Pj4yND09MCYmMCE9KDB8KGJaPTB8YVtyMz4+Ml0pKSYmMD09KDB8cGFbNjMmYlpdKDB8YVtsMT4+Ml0pKSl7QT0yMixrPTI4MDticmVhayBlfWs9Mjc0O2JyZWFrO2Nhc2UgNDA6aWYoMHxhW1NhPj4yXSl7aWYoTT0wfFVtKGwsRCxNLDB8YVt2bD4+Ml0pLGFbRm4+PjJdPU0s''@;'; put 'put ''IU0pe0E9MSxrPTI4MDticmVhayBlfWFbamw+PjJdPTAsYVtUMj4+Ml09MCx1ZVtIYT4+MF09MSxBPUR9ZWxzZSBrPTI3NTticmVhaztjYXNlIDQyOmNhc2UgNDE6aWYoMHx1ZVtIYT4+MF0pe2lmKDB8YVtTYT4+Ml0pe2lmKCEoQT0wfHBhWzYzJmFbVzI+PjJdXSgyMCkpKXtBPTEsaz0yODA7''@;'; put 'put ''YnJlYWsgZX1hWyhrPUErNHwwKT4+Ml09MCxhW2srND4+Ml09MCxhW2srOD4+Ml09MCxhW2srMTI+PjJdPTAsYVtBPj4yXT00MT09KDB8bSk/MjoxLGFbRz4+Ml09TSxObFsxMjcmYVtTYT4+Ml1dKDB8YVtsMT4+Ml0sMHxhW2FbRm4+PjJdPj4yXSxBKSxBPTB9ZWxzZSBBPTE7dWVbSGE+PjBd''@;'; put 'put ''PTAsaz0yNzR9ZWxzZSBrPTI3NTticmVhaztjYXNlIDQzOjAhPSgwfHVlW0hhPj4wXSkmJihhWygwfGFbQjA+PjJdKSsoMjgqKDB8YVsoMHxhW2ZzPj4yXSkrKCgwfGFbamw+PjJdKS0xPDwyKT4+Ml0pfDApPj4yXT0zLDAhPSgwfGFbU2E+PjJdKSk/QT1EOms9Mjc1O2JyZWFrO2Nhc2UgNTE6''@;'; put 'put ''Yz0wLGs9MjQ3O2JyZWFrO2Nhc2UgNTM6Yz0xLGs9MjQ3O2JyZWFrO2Nhc2UgNTI6Yz0yLGs9MjQ3O2JyZWFrO2Nhc2UgNTQ6Yz0zLGs9MjQ3O2JyZWFrO2Nhc2UgNDU6Zj0wLGs9MjU4O2JyZWFrO2Nhc2UgNDc6Zj0xLGs9MjU4O2JyZWFrO2Nhc2UgNDY6Zj0yLGs9MjU4O2JyZWFrO2Nhc2Ug''@;'; put 'put ''NDg6Zj0zLGs9MjU4O2JyZWFrO2Nhc2UgNTU6aWYoISgwfEs4KGwsRCxNLDB8YVt2bD4+Ml0pKSl7QT0xLGs9MjgwO2JyZWFrIGV9QT1EO2JyZWFrO2Nhc2UgNTY6aWYoISgwfFJfKGwsRCxNLDB8YVt2bD4+Ml0pKSl7QT0xLGs9MjgwO2JyZWFrIGV9QT1EO2JyZWFrO2Nhc2UgMDoxND09KDB8''@;'; put 'put ''Yyk/QT1EOms9Mjc1O2JyZWFrO2Nhc2UgMzowfGFbTGU+PjJdP0E9RDprPTI3NTticmVhaztjYXNlIDExOjAhPSgwfHVlW2F0Pj4wXSkmJjAhPSgwfGFbd3Q+PjJdKT9BPUQ6az0yNzU7YnJlYWs7Y2FzZSAxNzowfGFbeWE+PjJdP0E9RDprPTI3NTticmVhaztjYXNlIDMzOjAhPSgwfHVlW2F0''@;'; put 'put ''Pj4wXSkmJjAhPSgwfGFbbHI+PjJdKT9BPUQ6az0yNzU7YnJlYWs7Y2FzZSAzOTowfGFbU2E+PjJdP0E9RDprPTI3NTticmVhaztkZWZhdWx0Oms9Mjc1fX13aGlsZSgwKTtpZigzMz09KDB8aykpe2lmKCEoMHxEMFsxMjcmYVtEKzUyPj4yXV0oRCxNLDB8YVt2bD4+Ml0sUikpKXtBPTMyLGs9''@;'; put 'put ''MjgwO2JyZWFrfUE9MSxrPTM0fWVsc2UgaWYoODA9PSgwfGspKWs9MCwwIT0oMHx1ZVthdD4+MF0pJiYwIT0oMHxhW2xyPj4yXSk/QT1EOms9Mjc1O2Vsc2UgaWYoMTMzPT0oMHxrKSlpZihrPTAsMCE9KDB8dWVbYXQ+PjBdKSYmMCE9KDB8YVtrdD4+Ml0pKXtpZihjPTB8bDIoRXQsRCxNKyhj''@;'; put 'put ''PTB8YVtEKzY0Pj4yXSl8MCwwLWMrKDB8YVt2bD4+Ml0pfDApLGFbMTYrKDB8YVtrdD4+Ml0pPj4yXT1jLCEoMHxhWzE2KyhjPTB8YVtrdD4+Ml0pPj4yXSkpe0E9MSxrPTI4MDticmVha31hW2MrMjA+PjJdPWFbYXM+PjJdLGFbdXQ+PjJdPWFbWnQ+PjJdLDEzPT0oMHxtKSYwIT0oMHxhW3d0''@;'; put 'put ''Pj4yXSk/QT1EOms9Mjc0fWVsc2Ugaz0yNzQ7ZWxzZSBpZigyNDc9PSgwfGspKWlmKGs9MCwwfHVlW0hhPj4wXSl7aWYoQT0wfGFbdmw+PjJdLGMmJihBPUErKDAtKDB8YVtEKzY0Pj4yXSkpfDApLCgwfChmPTB8a3gobCkpKTwwKXtBPTEsaz0yODA7YnJlYWt9aWYoYVsoMHxhW0IwPj4yXSkr''@;'; put 'put ''KDI4KmZ8MCk+PjJdPTQsYVsoMHxhW0IwPj4yXSkrKDI4KmZ8MCkrND4+Ml09YywhKEE9MHxVbShsLEQsTSxBKSkpe0E9MSxrPTI4MDticmVha31hWygwfGFbQjA+PjJdKSsoMjgqZnwwKSs4Pj4yXT1jPTB8YVtBPj4yXSxBPTA7ZG97bT1BLEE9QSsxfDB9d2hpbGUoMCE9KDB8dWVbYyttPj4w''@;'; put 'put ''XSkpO2FbVWw+PjJdPSgwfGFbVWw+PjJdKStBLDB8YVtTYT4+Ml0/QT1EOms9Mjc1fWVsc2Ugaz0yNzU7ZWxzZSBpZigyNTg9PSgwfGspKWlmKDB8dWVbSGE+PjBdKWlmKEE9MSYoYz0wPT0oMHxhW1NhPj4yXSkpLGFbamw+PjJdPWs9KDB8YVtqbD4+Ml0pLTF8MCxhWygwfGFbQjA+PjJdKSso''@;'; put 'put ''MjgqKDB8YVsoMHxhW2ZzPj4yXSkrKGs8PDIpPj4yXSl8MCkrND4+Ml09ZiwwfGFbamw+PjJdKWs9Mjc0O2Vsc2V7aWYoIWMpe2lmKCEoYz0wfG1BKGwpKSl7QT0xLGs9MjgwO2JyZWFrfWFbRz4+Ml09TSxObFsxMjcmYVtTYT4+Ml1dKDB8YVtsMT4+Ml0sMHxhW2FbRm4+PjJdPj4yXSxjKX11''@;'; put 'put ''ZVtIYT4+MF09MCxhW1VsPj4yXT0wLGs9Mjc0fWVsc2Ugaz0yNzU7aWYoMzQ9PSgwfGspKWlmKGs9MCwwIT0oMHx1ZVthdD4+MF0pJiYwIT0oMHxhW2t0Pj4yXSkpe2lmKCEoYz0wfGwyKEV0LEQsTSsoYz0wfGFbRCs2ND4+Ml0pfDAsMC1jKygwfGFbdmw+PjJdKXwwKSkpe0E9MSxrPTI4MDti''@;'; put 'put ''cmVha31oQShjKSxhWzI0KygwfGFba3Q+PjJdKT4+Ml09YyxhW3V0Pj4yXT1hW1p0Pj4yXSwxND09KDB8bSkmMCE9KDB8YVt3dD4+Ml0pP0E9RDprPTI3NH1lbHNlIGs9Mjc0O3N3aXRjaCgyNzQ9PSgwfGspJiYoaz0wLEE8PDI0Pj4yND9rPTI3NTpBPUQpLDI3NT09KDB8aykmJihrPTAsMHxh''@;'; put 'put ''W2JlPj4yXSYmczIobCxELE0sMHxhW3ZsPj4yXSksQT1EKSwwfGFbT2U+PjJdKXtjYXNlIDM6az0yNzg7YnJlYWsgZTtjYXNlIDI6QT0zNSxrPTI4MDticmVhayBlfUQ9QSxNPWM9MHxhW3ZsPj4yXSxjPTB8RDBbMTI3JmFbQT4+Ml1dKEEsYyxwLHZsKX1lOnN3aXRjaCgwfGspe2Nhc2UgNzph''@;'; put 'put ''W3c+PjJdPU0sQT0wO2JyZWFrO2Nhc2UgOTphW1I+PjJdPWYsQT00O2JyZWFrO2Nhc2UgMTA6aWYoIShBPSgwfEQpPT0oMHxhW3BlPj4yXSkpJiYwPT0oMHx1ZVsyMCsoMHxhW3BoPj4yXSk+PjBdKSl7YVt3Pj4yXT1NLEE9MDticmVha30wIT0oMHx1ZVtsKzQ4ND4+MF0pfDFeQT8tMT09KDB8''@;'; put 'put ''TDFbMTI3JmFbQVM+PjJdXShBUywtNCxwLHAsRCkpP0E9Mjk6KGFbdz4+Ml09TSxBPTApOkE9MzticmVhaztjYXNlIDU4OmRve2lmKDB8dWVbbHQ+PjBdJiYoaTM9MHx1ZVtsND4+MF0sdWVbbDQ+PjBdPTEsMHxhW3luPj4yXSkmJjB8YVtTdT4+Ml0pe2lmKCEoQT0wfF8xKGwsTXQsNzUzOTUs''@;'; put 'put ''MzYpKSl7QT0xO2JyZWFrIGV9aWYoYVsodmw9QSsyMHwwKT4+Ml09YVthcz4+Ml0sdWVbTzE+PjBdPTAsISgwfEwxWzEyNyZhW1N1Pj4yXV0oMHxhW0xmPj4yXSwwLDB8YVt2bD4+Ml0sMHxhW0ErMTY+PjJdLDB8YVtBKzI0Pj4yXSkpKXtBPTIxO2JyZWFrIGV9aWYoISgwfHVlW08xPj4wXSkp''@;'; put 'put ''e3VlW2w0Pj4wXT1pMzticmVha31pZigwPT0oMHx1ZVtCYz4+MF0pJiYwfCh3Zz0wfGFbcjM+PjJdKSYmMD09KDB8cGFbNjMmd2ddKDB8YVtsMT4+Ml0pKSl7QT0yMjticmVhayBlfX19d2hpbGUoMCk7YVtsKzI3Nj4+Ml09NTgsQT0wfGRBKGwsTSxwLHcpO2JyZWFrO2Nhc2UgMTg0OkE9Mjg9''@;'; put 'put ''PSgwfGMpPzEwOjEyPT0oMHxjKT8xNzoyO2JyZWFrO2Nhc2UgMTg5OmFbbCsyNzY+PjJdPTU5LEE9MDticmVhaztjYXNlIDE5MzphW3dhPj4yXT0oMHxhW3dhPj4yXSk+Pj4xLEE9MTticmVhaztjYXNlIDE5ODphW3dhPj4yXT0wLEE9MTticmVhaztjYXNlIDI3ODphW3c+PjJdPWFbdmw+PjJd''@;'; put 'put ''LEE9MH1yZXR1cm4gb2U9b3EsMHxBfWZ1bmN0aW9uIF94KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIGIsRCxSLEcsSyxtPTAsQT0wLHc9MCxrPTAsTT0wO0s9b2Usb2U9b2UrMzJ8MCxNPUsrMTJ8MCx3PUsrOHwwLGI9Sys0fDAsaz1LLGFbKEc9SysxNnwwKT4+Ml09MCxhW00+''@;'; put 'put ''PjJdPTAsYVt3Pj4yXT0wLGFbaz4+Ml09LTEsRD1sKzE0NHwwLFI9bCsyODR8MCxtPTAhPSgwfGMpO2U6ZG97aWYoMHx5WlszJih1ZVtsKzIzMj4+MF08PDI0Pj4yND8yOjEpXShjLDB8YVtEPj4yXSxmLHAsUix3LGIsRyxNLGspKXtpZigxPT0oMHxhW2s+PjJdKSYoMV5tKSYmKHVlWzEzMCso''@;'; put 'put ''MHxhW2wrMzUyPj4yXSk+PjBdPTEsMT09KDB8YVsoQT1sKzQ4OHwwKT4+Ml0pKSYmKGFbQT4+Ml09MCksMHxhWyhBPWwrMTQwfDApPj4yXSl7aWYoYz0wfGFbRz4+Ml0pe2lmKCEoYz0wfGwyKGwrNDM2fDAscD0wfGFbRD4+Ml0sYyxjKygwfFJpWzEyNyZhW3ArMjg+PjJdXShwLGMpKXwwKSkp''@;'; put 'put ''e2M9MTticmVha31hW2wrNDUyPj4yXT1hW2wrNDQ4Pj4yXX1lbHNlIGM9MDtpZihtPTB8YVt3Pj4yXSl7aWYoIShtPTB8bDIobCs0MzZ8MCx3PTB8YVtEPj4yXSxtLDAtKDB8YVt3KzY0Pj4yXSkrKDB8YVtiPj4yXSl8MCkpKXtjPTE7YnJlYWt9fWVsc2UgbT0wO0ZhWzMxJmFbQT4+Ml1dKDB8''@;'; put 'put ''YVtsKzQ+PjJdLG0sYywwfGFbaz4+Ml0pLGY9bX1lbHNlIDB8YVtsKzgwPj4yXT8oczIobCwwfGFbRD4+Ml0sZixwKSxmPTAsYz0wKTooZj0wLGM9MCk7ZG97aWYoISgwfGFbbCsyMjg+PjJdKSl7aWYoQT1tPTB8YVtNPj4yXSwwfG0pe2lmKCgwfChrPTB8YVttKzY0Pj4yXSkpPT0oMHxhWzY0''@;'; put 'put ''KyhNPTB8YVtEPj4yXSk+PjJdKSYmMiE9KDB8ayl8KDB8bSk9PSgwfE0pKXthW0Q+PjJdPUE7YnJlYWt9YVtSPj4yXT1hW0c+PjJdLGM9MTk7YnJlYWsgZX1pZigwfChtPTB8YVtHPj4yXSkpe2lmKEE9bCs0MzZ8MCwhYyYmIShjPTB8bDIoQSxjPTB8YVtEPj4yXSxtLG0rKDB8UmlbMTI3JmFb''@;'; put 'put ''YysyOD4+Ml1dKGMsbSkpfDApKSl7Yz0xO2JyZWFrIGV9aWYoYz0wfCRtKGwsYykscWYoQSksMTghPSgwfGMpKWJyZWFrIGU7YVtSPj4yXT1hW0c+PjJdLGM9MTg7YnJlYWsgZX19fXdoaWxlKDApOzAhPSgwfGMpfDAhPSgwfGYpJiZxZihsKzQzNnwwKSxjPTB9ZWxzZSBjPW0/MzE6MzB9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIG9lPUssMHxjfWZ1bmN0aW9uIGwyKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7ZG97aWYoMHxwQShsLGMsZixwKSl7aWYoKDB8KGM9MHxhWyhmPWwrMTJ8MCk+PjJdKSk9PSgwfGFbbCs4Pj4yXSkpe2lmKCEoKDB8UmwobCkpPDwyND4+MjQpKXtjPTA7YnJlYWt9''@;'; put 'put ''Yz0wfGFbZj4+Ml19YVtmPj4yXT1jKzEsdWVbYz4+MF09MCxjPTB8YVtsKzE2Pj4yXX1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIHFmKGwpe3ZhciBwLGM9MCxmPTAsbT0wLEE9MDtjPTB8YVsocD00KyhsfD0wKXwwKT4+Ml07ZTpkb3tpZihjKWZvcihmPTB8YVtsPj4y''@;'; put 'put ''XTs7KXtpZighZil7Yz1sO2JyZWFrIGV9QT0wfGFbZj4+Ml0sYVtmPj4yXT1jLGFbcD4+Ml09ZixtPWYsZj1BLGM9bX1lbHNlIGFbcD4+Ml09YVtsPj4yXSxjPWx9d2hpbGUoMCk7YVtjPj4yXT0wLGFbbCsxNj4+Ml09MCxhW2wrMTI+PjJdPTAsYVtsKzg+PjJdPTB9ZnVuY3Rpb24gXzEobCxj''@;'; put 'put ''LGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wO0JlPTgrKGN8PTApfDA7ZTpkb3tpZigwfGFbQmU+PjJdKXtmb3IoTGU9MHxOXyhsLGYpLGs9MHxhW2M+PjJdLE09''@;'; put 'put ''TGUmMC0oYj0wfGFbQmU+PjJdKSxPZT1jKzR8MCxEPSh3PWIrLTF8MCk+Pj4yLEE9MCx3Jj1MZTttPTB8YVtrKyh3PDwyKT4+Ml07KXtpZigoMHxkUChmLDB8YVttPj4yXSkpPDwyND4+MjQpYnJlYWsgZTtBPW09QTw8MjQ+PjI0P0E6MjU1JihNPj4+KCgwfGJ0W09lPj4wXSktMXwwKSZEfDEp''@;'; put 'put ''LHc9dy0oYmU9MjU1Jm0pKyh3Pj4+MDxiZT4+PjA/YjowKXwwfWlmKHApe2lmKCEoKDB8YVtjKzEyPj4yXSk+Pj4oKG09MjU1JihBPTB8dWVbT2U+PjBdKSktMXwwKSkpe209YysxNnwwLEE9YyxSPTI3O2JyZWFrfWlmKEs9bSsxJjI1NSxwZT0obWU9MTw8KHc9QSsxJjI1NSkpLTF8MCxiZT0w''@;'; put 'put ''fHBhWzYzJmFbYVsobT1jKzE2fDApPj4yXT4+Ml1dKEE9bWU8PDIpKXtmb3IocjIoMHxiZSwwLDB8QSksRz0wLW1lfDAsRD13Ky0xfDAsUj1wZT4+PjIsTT0wOyEoTT4+PjA+PSgwfGFbQmU+PjJdKT4+PjApOyl7aWYoMHwoQT0wfGFbKDB8YVtjPj4yXSkrKE08PDIpPj4yXSkpe2ZvcihiPTI1''@;'; put 'put ''NSYoKChBPTB8Tl8obCwwfGFbQT4+Ml0pKSZHKT4+PkQmUnwxKSxBJj1wZSx3PTA7MHxhWyhrPWJlKyhBPDwyKXwwKT4+Ml07KUE9QSsoQT4+PjA8KEhlPTI1NSYoaz13PDwyND4+MjQ9PTA/Yjp3KSk+Pj4wP21lOjApLUhlfDAsdz1rO2Fbaz4+Ml09YVsoMHxhW2M+PjJdKSsoTTw8Mik+PjJd''@;'; put 'put ''fU09TSsxfDB9Zm9yKG5vWzEyNyZhWzgrKDB8YVttPj4yXSk+PjJdXSgwfGFbYz4+Ml0pLGFbYz4+Ml09YmUsdWVbT2U+PjBdPUssYVtCZT4+Ml09bWUsYj0yNTUmKChMZSZHKT4+PkQmUnwxKSxBPXBlJkxlLHc9MDs7KXtpZighKDB8YVtiZSsoQTw8Mik+PjJdKSl7dz1BLEE9YyxSPTI3O2Jy''@;'; put 'put ''ZWFrIGV9QT1BKyhBPj4+MDwoQmU9MjU1JihIZT13PDwyND4+MjQ9PTA/Yjp3KSk+Pj4wP21lOjApLUJlfDAsdz1IZX19ZWxzZSBtPTB9ZWxzZSBtPTB9ZWxzZXtpZihwKXtpZih1ZVtjKzQ+PjBdPTYsYVtCZT4+Ml09NjQsQT0wfHBhWzYzJmFbYVsobT1jKzE2fDApPj4yXT4+Ml1dKDI1Niks''@;'; put 'put ''YVtjPj4yXT1BLEEpe3IyKDB8QSwwLDI1Niksdz0wfE5fKGwsZiksdyY9KDB8YVtCZT4+Ml0pLTEsQT1jLFI9Mjc7YnJlYWt9YVtCZT4+Ml09MCxtPTA7YnJlYWt9bT0wfX13aGlsZSgwKTtyZXR1cm4gMjc9PSgwfFIpJiYobT0wfHBhWzYzJmFbYVttPj4yXT4+Ml1dKHApLGFbKDB8YVtBPj4y''@;'; put 'put ''XSkrKHc8PDIpPj4yXT1tLChtPTB8YVsoMHxhW0E+PjJdKSsodzw8Mik+PjJdKT8ocjIoMHxtLDAsMHxwKSxhW2FbKDB8YVtBPj4yXSkrKHc8PDIpPj4yXT4+Ml09ZixhWyhtPWMrMTJ8MCk+PjJdPTErKDB8YVttPj4yXSksbT0wfGFbKDB8YVtBPj4yXSkrKHc8PDIpPj4yXSk6bT0wKSwwfG19''@;'; put 'put ''ZnVuY3Rpb24gaEEobCl7dmFyIGM9MCxmPTAscD0wO2ZvcihwPWx8PTAsYz1sOyhmPTB8dWVbcD4+MF0pPDwyND4+MjQ7KXtzd2l0Y2goZjw8MjQ+PjI0fDApe2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOigwfGMpIT0oMHxsKT8zMiE9KDB8dWVbYystMT4+MF0pJiYodWVbYz4+MF09MzIsYz1j''@;'; put 'put ''KzF8MCk6Yz1sO2JyZWFrO2RlZmF1bHQ6dWVbYz4+MF09ZixjPWMrMXwwfXA9cCsxfDB9KDB8YykhPSgwfGwpJiYobD0zMj09KDB8dWVbKGw9YystMXwwKT4+MF0pP2w6YyksdWVbbD4+MF09MH1mdW5jdGlvbiBkQShsLGMsZixwKXtyZXR1cm4gMD09KDB8KGM9MHxBQShsfD0wLDAsMHxhW2wr''@;'; put 'put ''MTQ0Pj4yXSxjfD0wLGZ8PTAscHw9MCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpKSkmJigwfEUzKGwpKTw8MjQ+PjI0PT0wJiYoYz0xKSwwfGN9ZnVuY3Rpb24gVW0obCxjLGYscCl7dmFyIEEsbT0wO2M9MHxsMig4MCsoQT0wfGFbMzUyKyhsfD0wKT4+Ml0pfDAsY3w9MCxmfD0wLHB8PTApO2Rv''@;'; put 'put ''e2lmKDAhPSgwfGMpJiYwIT0oMHwobT0wfF8xKGwsQSsyMHwwLGMsMjQpKSkpaWYoKDB8YVttPj4yXSk9PSgwfGMpKXtpZihhW0ErOTY+PjJdPWFbQSs5Mj4+Ml0sISgwfEptKGwsbSkpKXttPTA7YnJlYWt9fWVsc2UgYVtBKzkyPj4yXT1hW0ErOTY+PjJdO2Vsc2UgbT0wfXdoaWxlKDApO3Jl''@;'; put 'put ''dHVybiAwfG19ZnVuY3Rpb24gTGgobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGssTSxELFIsbT0wLEE9MCx3PTAsYj0wO2s9ODArKEQ9MHxhWzM1MisobHw9MCk+PjJdKXwwLCgwfChBPTB8YVsoUj1EKzkyfDApPj4yXSkpPT0oMHxhWyhNPUQrODh8MCk+PjJdKT8oMHxSbChrKSk8PDI0''@;'; put 'put ''Pj4yND8oQT0wfGFbUj4+Ml0sdz00KTptPTA6dz00O2U6ZG97aWYoND09KDB8dykpaWYoYVtSPj4yXT1BKzEsdWVbQT4+MF09MCxjPTB8bDIoayxjLGYscCksMCE9KDB8YykmJihiPWMrMXwwLG09MHxfMShsLEQrNDB8MCxiLDEyKSwwIT0oMHxtKSkpe2lmKCgwfGFbbT4+Ml0pIT0oMHxiKSl7''@;'; put 'put ''YVtSPj4yXT1hW0QrOTY+PjJdO2JyZWFrfWlmKGFbKHc9RCs5NnwwKT4+Ml09QT0wfGFbUj4+Ml0sMHx1ZVtsKzIzMj4+MF0pe2Y9MHx1ZVtiPj4wXTt0OmRve2lmKGY8PDI0Pj4yND09MTIwKXtpZigxMDk9PSgwfHVlW2MrMj4+MF0pJiYxMDg9PSgwfHVlW2MrMz4+MF0pJiYxMTA9PSgwfHVl''@;'; put 'put ''W2MrND4+MF0pJiYxMTU9PSgwfHVlW2MrNT4+MF0pKXtzd2l0Y2goMHx1ZVtjKzY+PjBdKXtjYXNlIDA6QT1EKzE1MnwwO2JyZWFrO2Nhc2UgNTg6QT0wfF8xKGwsRCs2MHwwLGMrN3wwLDgpO2JyZWFrO2RlZmF1bHQ6cD0wLGM9MTIwO2JyZWFrIHR9YVttKzQ+PjJdPUEsdWVbbSs5Pj4wXT0x''@;'; put 'put ''O2JyZWFrIGV9cD0wLGM9MTIwfWVsc2UgcD0wLGM9Zn13aGlsZSgwKTt0OmZvcig7Oyl7c3dpdGNoKGM8PDI0Pj4yNCl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA1ODpmPTA7YnJlYWsgdH1wPWM9cCsxfDAsYz0wfHVlW2IrYz4+MF19Zm9yKDtjPSgwfEEpPT0oMHxhW00+PjJdKSwhKCgwfGYpPj0o''@;'; put 'put ''MHxwKSk7KXtpZihjKXtpZighKCgwfFJsKGspKTw8MjQ+PjI0KSl7bT0wO2JyZWFrIGV9QT0wfGFbUj4+Ml19Yz0wfHVlW2IrZj4+MF0sYVtSPj4yXT1BKzEsdWVbQT4+MF09YyxmPWYrMXwwLEE9MHxhW1I+PjJdfWlmKGMpe2lmKCEoKDB8UmwoaykpPDwyND4+MjQpKXttPTA7YnJlYWt9QT0w''@;'; put 'put ''fGFbUj4+Ml19aWYoYVtSPj4yXT1BKzEsdWVbQT4+MF09MCxBPTB8XzEobCxEKzYwfDAsMHxhW3c+PjJdLDgpLGFbbSs0Pj4yXT1BLEEpe2lmKCgwfGFbQT4+Ml0pPT0oMHwoYz0wfGFbdz4+Ml0pKSl7YVt3Pj4yXT1hW1I+PjJdO2JyZWFrfWFbUj4+Ml09YzticmVha31tPTB9fWVsc2UgbT0w''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gSV8obCxjKXtjfD0wO3ZhciBtLEEsZj0wLHA9MCx3PTA7Zm9yKG09MTIrKGx8PTApfDAsQT1sKzh8MDs7KXtpZighKChmPTB8dWVbYz4+MF0pPDwyND4+MjQpKXt3PTc7YnJlYWt9aWYoKDB8KHA9MHxhW20+PjJdKSk9PSgwfGFbQT4+Ml0p''@;'; put 'put ''KXtpZighKCgwfFJsKGwpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrfXA9MHxhW20+PjJdLGY9MHx1ZVtjPj4wXX1hW20+PjJdPXArMSx1ZVtwPj4wXT1mLGM9YysxfDB9cmV0dXJuIDc9PSgwfHcpJiYoYz0wfGFbbCsxNj4+Ml0pLDB8Y31mdW5jdGlvbiBwQShsLGMsZixwKXtsfD0wLGN8PTAscHw9''@;'; put 'put ''MDt2YXIgQSx3LGIsbT0wO2I9b2Usb2U9b2UrMTZ8MCxhWyh3PWIpPj4yXT1mfD0wLDA9PSgwfGFbKEE9bCsxMnwwKT4+Ml0pJiYoMHxSbChsKSk8PDI0Pj4yND09MD9mPTA6bT0zO2U6ZG97aWYoMz09KDB8bSkpe2ZvcihmPWMrNTZ8MCxtPWwrOHwwOyEoKDB8TDFbMTI3JmFbZj4+Ml1dKGMs''@;'; put 'put ''dyxwLEEsMHxhW20+PjJdKSk+Pj4wPDIpOylpZighKCgwfFJsKGwpKTw8MjQ+PjI0KSl7Zj0wO2JyZWFrIGV9Zj0wfGFbbCsxNj4+Ml19fXdoaWxlKDApO3JldHVybiBvZT1iLDB8Zn1mdW5jdGlvbiBDeChsLGMsZixwLG0sQSl7Y3w9MCxmfD0wLG18PTAsQXw9MDt2YXIgRCxSLHc9MCxiPTAs''@;'; put 'put ''az0wLE09MDt3PShwfD0wKTw8MjQ+PjI0PT0wLEQ9MHxhWyhSPTEyKyhsfD0wKXwwKT4+Ml07ZTpkb3tpZih3JjA9PSgwfG0pKU09OTtlbHNle2ZvcihiPWwrMjB8MCxwPTA7ISgoMHxwKT49KDB8RCkpOyl7aWYoKDB8YVsoMHxhW2I+PjJdKSsoMTIqcHwwKT4+Ml0pPT0oMHxjKSl7cD0xO2Jy''@;'; put 'put ''ZWFrIGV9cD1wKzF8MH0hdyYmMD09KDB8YVsoaz1sKzh8MCk+PjJdKSYmMD09KDB8dWVbYys5Pj4wXSkmJihhW2s+PjJdPWMpLE09OX19d2hpbGUoMCk7ZTpkb3tpZig5PT0oMHxNKSl7Yj1sKzE2fDA7ZG97aWYoKDB8RCk9PSgwfGFbYj4+Ml0pKXtpZihEKXtpZighKHA9MHxSaVsxMjcmYVtB''@;'; put 'put ''KzE2Pj4yXV0oMHxhWyh3PWwrMjB8MCk+PjJdLDI0KkR8MCkpKXtwPTA7YnJlYWsgZX1hW2I+PjJdPUQ8PDEsYVt3Pj4yXT1wO2JyZWFrfWlmKGFbYj4+Ml09OCxwPTB8cGFbNjMmYVtBKzEyPj4yXV0oOTYpLGFbbCsyMD4+Ml09cCwwfHApYnJlYWs7YVtiPj4yXT0wLHA9MDticmVhayBlfXA9''@;'; put 'put ''MHxhW2wrMjA+PjJdfXdoaWxlKDApO2FbcCsoMTIqKEE9MHxhW1I+PjJdKXwwKT4+Ml09YyxhW3ArKDEyKkF8MCkrOD4+Ml09bSx1ZVtwKygxMipBfDApKzQ+PjBdPWYsZjw8MjQ+PjI0fHwodWVbYys4Pj4wXT0xKSxhW1I+PjJdPTErKDB8YVtSPj4yXSkscD0xfX13aGlsZSgwKTtyZXR1cm4g''@;'; put 'put ''MHxwfWZ1bmN0aW9uIFJsKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7cD0wfGFbKGM9NCsobHw9MCl8MCk+PjJdO2Rve2lmKHApe2lmKCEoQT0wfGFbKG09bCsxNnwwKT4+Ml0pKXthW2w+PjJdPXAsYVtjPj4yXT1hW3A+PjJdLGFbcD4+Ml09MCxhW20+''@;'; put 'put ''PjJdPWM9OCsoRD0wfGFbbD4+Ml0pfDAsYVtsKzg+PjJdPSgwfGFbRCs0Pj4yXSkrKEQrOCksYVtsKzEyPj4yXT1jLGM9MTticmVha30oKDB8YVsoZj1sKzh8MCk+PjJdKS1BfDApPCgwfGFbcCs0Pj4yXSk/KE09MHxhW3A+PjJdLGFbcD4+Ml09YVtsPj4yXSxhW2w+PjJdPUQ9MHxhW2M+PjJd''@;'; put 'put ''LGFbYz4+Ml09TSxEbyhEKzh8MCwwfChjPTB8YVttPj4yXSksKDB8YVtmPj4yXSktY3wwKSxhWyhEPWwrMTJ8MCk+PjJdPSgwfGFbRD4+Ml0pLSgwfGFbbT4+Ml0pKyg4KyhjPTB8YVtsPj4yXSkpLGFbbT4+Ml09Yys4LGFbZj4+Ml09KDB8YVtjKzQ+PjJdKSsoYys4KSxjPTEpOnc9Nn1lbHNl''@;'; put 'put ''IHc9Nn13aGlsZSgwKTtlOmRve2lmKDY9PSgwfHcpKXtwPTB8YVtsPj4yXSxNPWwrMTZ8MDtkb3tpZihwKXtpZihjPWs9MHxhW00+PjJdLCgwfGspIT0ocCs4fDApKXtiPU07YnJlYWt9aWYoZj0oMHxhWyh3PWwrMTJ8MCk+PjJdKS1jfDAsKDB8KEE9KDB8YVsobT1sKzh8MCk+PjJdKS1jPDwx''@;'; put 'put ''KSk8MCl7Yz0wO2JyZWFrIGV9aWYoIShjPTB8SF8oQSkpKXtjPTA7YnJlYWsgZX1pZighKGM9MHxSaVsxMjcmYVs0KygwfGFbbCsyMD4+Ml0pPj4yXV0ocCxjKSkpe2M9MDticmVhayBlfWFbbD4+Ml09YyxhW2MrND4+Ml09QSxhW3c+PjJdPTgrKGM9MHxhW2w+PjJdKStmLGFbTT4+Ml09Yys4''@;'; put 'put ''LGFbbT4+Ml09Yys4K0EsYz0xO2JyZWFrIGV9Yj1NLGM9MHxhW00+PjJdfXdoaWxlKDApO2lmKCgwfChjPSgwfGFbKGs9bCs4fDApPj4yXSktY3wwKSk+PTApe2lmKCgwfGMpPj0xMDI0KXtpZigoMHwoYzw8PTEpKTwwKXtjPTA7YnJlYWt9fWVsc2UgYz0xMDI0OzAhPSgwfChmPTB8SF8oYykp''@;'; put 'put ''KSYmMCE9KDB8KEQ9MHxwYVs2MyZhW2FbbCsyMD4+Ml0+PjJdXShmKSkpPyhhW0QrND4+Ml09YyxhW0Q+PjJdPWFbbD4+Ml0sYVtsPj4yXT1ELGY9bD0wfGFbKHc9bCsxMnwwKT4+Ml0sbT1wPTB8YVtNPj4yXSwoMHxsKT09KDB8cCk/KEE9RCs4fDAscD1tKTooRG8oMHwoQT1EKzh8MCksMHxw''@;'; put 'put ''LGYtbXwwKSxwPTB8YVtiPj4yXSxmPTB8YVt3Pj4yXSksYVt3Pj4yXT1EKzgrKGYtcCksYVtNPj4yXT1BLGFbaz4+Ml09RCs4K2MsYz0xKTpjPTB9ZWxzZSBjPTB9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gZ0EobCxjLGYscCxtLEEpe3ZhciB3PTA7bD0wfHh4KGx8PTAsY3w9MCxm''@;'; put 'put ''fD0wLHB8PTAsbXw9MCxBfD0wKTtkb3tpZighbCl7aWYobD0wfGFbKGM9QSsxMnwwKT4+Ml0sZjw8MjQ+PjI0PT0wJiYoMHxhW0ErMTY+PjJdKSE9KDB8bCkmJjMyPT0oMHx1ZVsodz1sKy0xfDApPj4wXSkmJihhW2M+PjJdPXcsbD13KSwoMHxsKT09KDB8YVtBKzg+PjJdKSl7aWYoISgoMHxS''@;'; put 'put ''bChBKSk8PDI0Pj4yNCkpe2w9MTticmVha31sPTB8YVtjPj4yXX1hW2M+PjJdPWwrMSx1ZVtsPj4wXT0wLGw9MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBEXyhsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgR2UsbHQsTXQsa3QsYXQsWnQsbT0wLEE9MCx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsRXQ9MDtpZihadD1vZSxvZT1vZSsxNnwwLEdlPVp0LGx0PVp0KzR8MCxNdD0xMDQrKG09MHxhWzM1MisobHw9MCk+PjJdKXwwLGt0PTB8YVsoYXQ9bCsyNzJ8MCk+PjJd''@;'; put 'put ''LGFbYXQ+PjJdPTEsMD09KDB8YVtNdD4+Ml0pJiYoMHxSbChNdCkpPDwyND4+MjQ9PTApbT0xO2Vsc2V7RD1jKzIwfDAsUj1sKzQ4NHwwLEc9bCsxNDR8MCxLPWwrNDEyfDAscGU9Yys2NHwwLG1lPW0rMTMyfDAsYmU9bCs0Mjh8MCxPZT1sKzQyNHwwLExlPWwrMjI0fDAsQmU9bCsxMTJ8MCxN''@;'; put 'put ''PW0rMTMwfDAsSGU9bSsxMjh8MCxqZT1tKzEzMXwwLGV0PWwrMTE2fDAscnQ9bSsxMTJ8MCxiPW0rMTE2fDAsaz1jKzQwfDA7ZTpmb3IoOzspe3Q6ZG97c3dpdGNoKDB8RDBbMTI3JmFbRD4+Ml1dKGMsZixwLEdlKSl7Y2FzZS00Om09MDticmVhayBlO2Nhc2UtMTpFdD0zNzticmVhayBlO2Nh''@;'; put 'put ''c2UgMDpFdD0zOTticmVhayBlO2Nhc2UgMjg6aWYoMD09KDB8dWVbUj4+MF0pJiYoMHxhW0c+PjJdKT09KDB8Yykpe0V0PTE5O2JyZWFrIGV9aWYoIShtPTB8bDIoSyxjLGYrKG09MHxhW3BlPj4yXSl8MCwwLW0rKDB8YVtHZT4+Ml0pfDApKSl7bT0xO2JyZWFrIGV9aWYoQT0wfF8xKGwsbWUs''@;'; put 'put ''bSwwKSxhW09lPj4yXT1hW2JlPj4yXSwhQSl7RXQ9OTticmVhayBlfWlmKDB8dWVbKHc9QSszMnwwKT4+MF0pe0V0PTExO2JyZWFrIGV9aWYoISgwfGFbKG09QSsxNnwwKT4+Ml0pKXtpZih1ZVt3Pj4wXT0xLG09MHxEXyhsLDB8YVtMZT4+Ml0sbT0wfGFbQSs0Pj4yXSxtKygwfGFbQSs4Pj4y''@;'; put 'put ''XSl8MCksdWVbdz4+MF09MCxtKWJyZWFrIGU7YnJlYWsgdH1pZigwfGFbQmU+PjJdKXtpZih1ZVtqZT4+MF09MCx1ZVt3Pj4wXT0xLEE9MD09KDB8TDFbMTI3JmFbQmU+PjJdXSgwfGFbZXQ+PjJdLDAsMHxhW0ErMjA+PjJdLDB8YVttPj4yXSwwfGFbQSsyND4+Ml0pKSx1ZVt3Pj4wXT0wLEEp''@;'; put 'put ''e209MjE7YnJlYWsgZX1pZigwfHVlW2plPj4wXSlicmVhayB0fXVlW0hlPj4wXT0wfHVlW00+PjBdO2JyZWFrO2Nhc2UgNjpjYXNlIDk6aWYoISgwfHBBKE10LGMsZiwwfGFbR2U+PjJdKSkpe209MTticmVhayBlfWJyZWFrO2Nhc2UtMzphW0dlPj4yXT1mKygwfGFbcGU+PjJdKSxFdD0yMjti''@;'; put 'put ''cmVhaztjYXNlIDc6RXQ9MjI7YnJlYWs7Y2FzZSAxMDppZigoMHwobT0wfFJpWzEyNyZhW2s+PjJdXShjLGYpKSk8MCl7RXQ9Mjc7YnJlYWsgZX1mb3IoQT0wfEM2KG0sbHQpLGY9MDshKCgwfGYpPj0oMHxBKSk7KXtpZigoMHxhW3J0Pj4yXSk9PSgwfChtPTB8YVtiPj4yXSkpKXtpZighKCgw''@;'; put 'put ''fFJsKE10KSk8PDI0Pj4yNCkpe209MSxFdD0zNTticmVhayBlfW09MHxhW2I+PjJdfXc9MHx1ZVtsdCtmPj4wXSxhW2I+PjJdPW0rMSx1ZVttPj4wXT13LGY9ZisxfDB9YnJlYWs7ZGVmYXVsdDpFdD00MTticmVhayBlfX13aGlsZSgwKTtpZigyMj09KDB8RXQpKXtpZihFdD0wLCgwfGFbcnQ+''@;'; put 'put ''PjJdKT09KDB8KG09MHxhW2I+PjJdKSkpe2lmKCEoKDB8UmwoTXQpKTw8MjQ+PjI0KSl7bT0xO2JyZWFrfW09MHxhW2I+PjJdfWFbYj4+Ml09bSsxLHVlW20+PjBdPTEwfWY9MHxhW0dlPj4yXX05PT0oMHxFdCk/KHVlW0hlPj4wXT0wfHVlW00+PjBdLG09MCk6MTE9PSgwfEV0KT8oKDB8YVtH''@;'; put 'put ''Pj4yXSk9PSgwfGMpJiYoYVtsKzI4ND4+Ml09ZiksbT0xMik6MTk9PSgwfEV0KT8oYVtsKzI4ND4+Ml09ZixtPTEwKToyNz09KDB8RXQpPygwfGFbRz4+Ml0pPT0oMHxjKT8oYVtsKzI4ND4+Ml09ZixtPTE0LEV0PTM1KToobT0xNCxFdD0zNSk6Mzc9PSgwfEV0KT8oKDB8YVtHPj4yXSk9PSgw''@;'; put 'put ''fGMpJiYoYVtsKzI4ND4+Ml09ZiksbT00KTozOT09KDB8RXQpPygoMHxhW0c+PjJdKT09KDB8YykmJihhW2wrMjg0Pj4yXT1hW0dlPj4yXSksbT00KTo0MT09KDB8RXQpJiYoKDB8YVtHPj4yXSk9PSgwfGMpJiYoYVtsKzI4ND4+Ml09ZiksbT0yMyksYVthdD4+Ml09a3R9cmV0dXJuIG9lPVp0''@;'; put 'put ''LDB8bX1mdW5jdGlvbiBzMihsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgRCxSLEcsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsSz0wO2lmKEc9b2Usb2U9b2UrMTZ8MCxSPUcrNHwwLGFbKEQ9Ryk+PjJdPWZ8PTAsMHx1ZVtjKzY4Pj4wXSlObFsxMjcmYVtsKzgwPj4yXV0oMHxhW2wrND4+''@;'; put 'put ''Ml0sZixwLWZ8MCk7ZWxzZXsoMHxhW2wrMTQ0Pj4yXSk9PSgwfGMpPyhtPWwrMjg4fDAsQT1sKzI4NHwwKTptPTQrKEE9MHxhW2wrMjk2Pj4yXSl8MCx3PWwrNDR8MCxiPWMrNTZ8MCxrPWwrNDh8MCxNPWwrODB8MCxmPWwrNHwwO2Rve2FbUj4+Ml09YVt3Pj4yXSxsPTB8TDFbMTI3JmFbYj4+''@;'; put 'put ''Ml1dKGMsRCxwLFIsMHxhW2s+PjJdKSxhW20+PjJdPWFbRD4+Ml0sTmxbMTI3JmFbTT4+Ml1dKDB8YVtmPj4yXSxLPTB8YVt3Pj4yXSwoMHxhW1I+PjJdKS1LfDApLGFbQT4+Ml09YVtEPj4yXX13aGlsZShsPj4+MD4xKX1vZT1HfWZ1bmN0aW9uIExfKGwsYyxmLHAsbSxBKXtwfD0wLG18PTAs''@;'; put 'put ''QXw9MDt2YXIgayxNLEQsUix3PTAsYj0wO3N3aXRjaChEPW9lLG9lPW9lKzE2fDAsaz1ELE09MHxhWyhmfD0wKT4+Ml0sKDB8YVsxNDQrKGx8PTApPj4yXSk9PSgwfChjfD0wKSk/KGFbKGI9bCsyODR8MCk+PjJdPU0sdz1sKzI4OHwwKTp3PTQrKGI9MHxhW2wrMjk2Pj4yXSl8MCxhW2I+PjJd''@;'; put 'put ''PU0sYVtmPj4yXT0wLFI9MHxEMFsxMjcmYVtjKzEyPj4yXV0oYyxNLHAsayksYVt3Pj4yXT1wPTB8YVtrPj4yXSwwfFIpe2Nhc2UgNDI6MHxhW2wrODA+PjJdJiYoczIobCxjLE0scCkscD0wfGFbaz4+Ml0pLGFbZj4+Ml09cCxhW20+PjJdPXAscD0yPT0oMHxhW2wrNDc2Pj4yXSk/MzU6MDti''@;'; put 'put ''cmVhaztjYXNlIDA6YVtiPj4yXT1wLHA9NDticmVhaztjYXNlLTI6QTw8MjQ+PjI0PyhhW20+PjJdPU0scD0wKTpwPTY7YnJlYWs7Y2FzZS00OmNhc2UtMTpBPDwyND4+MjQ/KGFbbT4+Ml09TSxwPTApOnA9MjticmVhaztkZWZhdWx0OmFbYj4+Ml09cCxwPTIzfXJldHVybiBvZT1ELDB8cH1m''@;'; put 'put ''dW5jdGlvbiBreChsKXt2YXIgYixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxrPTA7MHxhWyhrPTE4NCsoYj0wfGFbMzUyKyhsfD0wKT4+Ml0pfDApPj4yXT9mPTQ6KGM9MHxwYVs2MyZhW2wrMTI+PjJdXShhW2wrNDY0Pj4yXTw8MiksYVtrPj4yXT1jLGM/KGFbYz4+Ml09MCxmPTQpOmM9LTEp''@;'; put 'put ''O2Rve2lmKDQ9PSgwfGYpKXtpZihwPTB8YVsobT1iKzE2NHwwKT4+Ml0sKGM9MHxhWyh3PWIrMTc2fDApPj4yXSk+Pj4wPChmPTB8YVsoQT1iKzE3MnwwKT4+Ml0pPj4+MClBPXA7ZWxzZXtpZihwKXtpZighKGM9MHxSaVsxMjcmYVtsKzE2Pj4yXV0ocCw1NipmfDApKSl7Yz0tMTticmVha31m''@;'; put 'put ''PWMsYz1hW0E+PjJdPDwxfWVsc2V7aWYoIShjPTB8cGFbNjMmYVtsKzEyPj4yXV0oODk2KSkpe2M9LTE7YnJlYWt9Zj1jLGM9MzJ9YVtBPj4yXT1jLGFbbT4+Ml09ZixjPTB8YVt3Pj4yXSxBPWZ9YVt3Pj4yXT1jKzEsMHwoZj0wfGFbYisxODA+PjJdKSYmKDB8KGY9MHxhWyhtPUErKDI4Kihs''@;'; put 'put ''PTB8YVsoMHxhW2s+PjJdKSsoZistMTw8Mik+PjJdKXwwKSsxNnwwKT4+Ml0pJiYoYVtBKygyOCpmfDApKzI0Pj4yXT1jKSwocD0wfGFbKGY9QSsoMjgqbHwwKSsyMHwwKT4+Ml0pfHwoYVtBKygyOCpsfDApKzEyPj4yXT1jKSxhW20+PjJdPWMsYVtmPj4yXT1wKzEpLGFbKGs9QSsoMjgqY3ww''@;'; put 'put ''KSsxMnwwKT4+Ml09MCxhW2srND4+Ml09MCxhW2srOD4+Ml09MCxhW2srMTI+PjJdPTB9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gU3gobCxjLGYpe2N8PTAsZnw9MDt2YXIgRCxSLEcscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO0c9b2Usb2U9b2UrMTZ8MCxEPUcsKHA9MHxh''@;'; put 'put ''WyhSPTMwMCsobHw9MCl8MCk+PjJdKT8oYVtSPj4yXT1hW3ArOD4+Ml0sTT1wLG09NCk6KHA9MHxwYVs2MyZhW2wrMTI+PjJdXSgyNCkpPyhNPXAsbT00KTpwPTE7ZG97aWYoND09KDB8bSkmJih1ZVsoQT1jKzMyfDApPj4wXT0xLGFbKHc9YysxMnwwKT4+Ml09MCxhWyhrPU0rOHwwKT4+Ml09''@;'; put 'put ''YVsoYj1sKzI5NnwwKT4+Ml0sYVtiPj4yXT1NLGFbTSsxMj4+Ml09YyxhW00rMTY+PjJdPWFbKHA9bCszMDh8MCk+PjJdLHVlW00rMjA+PjBdPWYsYVtNPj4yXT0wLGFbTSs0Pj4yXT0wLGY9KG09MHxhW2MrND4+Ml0pKygwfGFbYys4Pj4yXSl8MCxhW0Q+PjJdPW0sMHx1ZVtjKzMzPj4wXT8o''@;'; put 'put ''cD0wfEQwWzEyNyZhWyhwPTB8YVsoYz1sKzIyNHwwKT4+Ml0pPj4yXV0ocCxtLGYsRCkscD0wfFltKGwsMHxhW2M+PjJdLG0sZixwLDB8YVtEPj4yXSxELDApKTpwPTB8QUEobCwwfGFbcD4+Ml0sMHxhW2wrMjI0Pj4yXSxtLGYsRCwwKSwhcCkpe2lmKCgwfGYpIT0oMHwocD0wfGFbRD4+Ml0p''@;'; put 'put ''KSYmMz09KDB8YVtsKzQ3Nj4+Ml0pKXthW3c+PjJdPXAtbSxhW2wrMjc2Pj4yXT02MCxwPTA7YnJlYWt9dWVbQT4+MF09MCxhW2I+PjJdPWFbaz4+Ml0sYVtrPj4yXT1hW1I+PjJdLGFbUj4+Ml09TSxwPTB9fXdoaWxlKDApO3JldHVybiBvZT1HLDB8cH1mdW5jdGlvbiBtQShsKXt2YXIgZixw''@;'; put 'put ''LG0sQSxjPTA7cmV0dXJuIEE9b2Usb2U9b2UrMTZ8MCxmPUErNHwwLHA9QSwoYz0wfHBhWzYzJmFbMTIrKGx8PTApPj4yXV0oKDIwKigwfGFbKG09MTc2KyhjPTB8YVtsKzM1Mj4+Ml0pfDApPj4yXSl8MCkrKDB8YVtjKzE2OD4+Ml0pfDApKT8oYVtwPj4yXT1jKygyMCooMHxhW20+PjJdKXww''@;'; put 'put ''KSxhW2Y+PjJdPWMrMjAsQl8obCwwLGMsZixwKSk6Yz0wLG9lPUEsMHxjfWZ1bmN0aW9uIEs4KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBrLG09MCxBPTAsdz0wLGI9MDtyZXR1cm4gMHxhWyhrPTY0KyhsfD0wKXwwKT4+Ml0/MCE9KDB8KEE9MHxsMihtPWwrNDEyfDAsYyxBPWYrKGFb''@;'; put 'put ''KHc9Yys2NHwwKT4+Ml08PDEpfDAsZj1BKygwfFJpWzEyNyZhW2MrMjg+PjJdXShjLEEpKXwwKSkpJiYoYVtsKzQyOD4+Ml09YVtsKzQyND4+Ml0sMCE9KDB8KGI9MHxsMihtLGMsYj0wfFJpWzEyNyZhW2MrMzI+PjJdXShjLGYpLHArKDAtKGFbdz4+Ml08PDEpKXwwKSkpKT8odkEoYiksTmxb''@;'; put 'put ''MTI3JmFbaz4+Ml1dKDB8YVtsKzQ+PjJdLEEsYikscWYobSksZj0xKTpmPTA6KDB8YVtsKzgwPj4yXSYmczIobCxjLGYscCksZj0xKSwwfGZ9ZnVuY3Rpb24gUl8obCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEEsbT0wLHc9MDtyZXR1cm4gMHxhWyhBPTY4KyhsfD0wKXwwKT4+Ml0/KGM9''@;'; put 'put ''MHxsMihtPWwrNDEyfDAsYyxmKygodz0wfGFbYys2ND4+Ml0pPDwyKXwwLHArKDB8dnIodywtMykpfDApKT8odkEoYykseDJbNjMmYVtBPj4yXV0oMHxhW2wrND4+Ml0sYykscWYobSksYz0xKTpjPTA6KDB8YVtsKzgwPj4yXSYmczIobCxjLGYscCksYz0xKSwwfGN9ZnVuY3Rpb24gdkEobCl7''@;'; put 'put ''bHw9MDt2YXIgYz0wLGY9MCxwPTA7ZTpmb3IoOzspe3N3aXRjaCgwfHVlW2w+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDEzOmY9bCxjPTEzLHA9NDticmVhayBlfWw9bCsxfDB9aWYoND09KDB8cCkpe2Zvcig7Yzw8MjQ+PjI0PT0xMz8odWVbZj4+MF09MTAsbD0xMD09KDB8dWVbKHA9bCsx''@;'; put 'put ''fDApPj4wXSk/bCsyfDA6cCk6KHVlW2Y+PjBdPWMsbD1sKzF8MCksZj1mKzF8MCwoYz0wfHVlW2w+PjBdKTw8MjQ+PjI0OylwPTQ7dWVbZj4+MF09MH19ZnVuY3Rpb24gQl8obCxjLGYscCxtKXtwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MDtpZihhWyhmfD0wKT4+Ml09Yj0wfGFbKDB8''@;'; put 'put ''YVsoaz0xNjQrKDB8YVszNTIrKGx8PTApPj4yXSl8MCk+PjJdKSsoMjgqKGN8PTApfDApPj4yXSxhW2YrND4+Ml09YVsoMHxhW2s+PjJdKSsoMjgqY3wwKSs0Pj4yXSw0PT0oMHxiKSl7Zm9yKGFbZis4Pj4yXT1hW20+PjJdLGM9MHxhWygwfGFbaz4+Ml0pKygyOCpjfDApKzg+PjJdO2I9MHx1''@;'; put 'put ''ZVtjPj4wXSxhW20+PjJdPTErKGs9MHxhW20+PjJdKSx1ZVtrPj4wXT1iLDB8dWVbYz4+MF07KWM9YysxfDA7YVtmKzEyPj4yXT0wLGFbZisxNj4+Ml09MH1lbHNle2ZvcihhWyh3PWYrMTJ8MCk+PjJdPUE9MHxhWygwfGFbaz4+Ml0pKygyOCpjfDApKzIwPj4yXSxhWyhiPWYrMTZ8MCk+PjJd''@;'; put 'put ''PWFbcD4+Ml0sYVtwPj4yXT0oMHxhW3A+PjJdKSsoMjAqQXwwKSxjPSgwfGFbaz4+Ml0pKygyOCpjfDApKzEyfDAsQT0wO2M9MHxhW2M+PjJdLCEoQT4+PjA+PSgwfGFbdz4+Ml0pPj4+MCk7KUJfKGwsYywoMHxhW2I+PjJdKSsoMjAqQXwwKXwwLHAsbSksYz0oMHxhW2s+PjJdKSsoMjgqY3ww''@;'; put 'put ''KSsyNHwwLEE9QSsxfDA7YVtmKzg+PjJdPTB9fWZ1bmN0aW9uIEFBKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLG18PTAsQXw9MCx3fD0wO3ZhciBiZSxPZSxMZSxCZSxIZSxqZSxldCxydCxHZSxsdCxNdCxrdCxhdCxFdCxadCx1dCx3dCxybix5bixGbixscixOcixrcixjcixDcixx''@;'; put 'put ''cixMcixhMCxGaSxQaSxIbyx5YSxWbCx3YSxDaSxIYSxmcyxqbCxCMCxXMixrdSxkaCxsbCxUMixwaCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGxvPTAsU2E9MCxVbD0wLHNsPTA7cGg9b2Usb2U9b2UrNDh8MCxCMD1waCszMnwwLFQyPXBoKzI0fDAseWE9cGgsYVso''@;'; put 'put ''bGw9cGgrMjh8MCk+PjJdPXB8PTAsVmw9MHxhW2wrMzUyPj4yXSwoMHxhW2wrMTQ0Pj4yXSk9PSgwfGYpPyhTYT1sKzI4NHwwLGxvPWwrMjg4fDApOihTYT1sbz0wfGFbbCsyOTY+PjJdLGxvPWxvKzR8MCksYVtTYT4+Ml09cCxiZT1mKzR8MCxXMj1sKzgwfDAsT2U9bCs0NzZ8MCxMZT1mKzQ0''@;'; put 'put ''fDAsQmU9Zis2NHwwLEhlPVZsKzgwfDAsamU9VmwrOTZ8MCxldD1WbCs5MnwwLHJ0PVZsKzEyOXwwLEdlPWwrMTEyfDAsbHQ9bCsxMTZ8MCxNdD1sKzQyOHwwLGt0PWwrNDI0fDAsYXQ9bCszMDR8MCxFdD1sKzEyMHwwLGt1PWwrNHwwLFp0PVZsKzEzMHwwLHdhPWwrNjB8MCx1dD1sKzM2NHww''@;'; put 'put ''LHd0PWwrMTJ8MCxybj1sKzM2MHwwLHluPWYrMjh8MCxkaD1sKzMwOHwwLENpPWYrNTZ8MCxGbj1sKzE2fDAsbHI9bCs1MnwwLE5yPWwrNDEyfDAsa3I9bCszODh8MCxjcj1sKzU2fDAsQ3I9bCsyMzJ8MCxxcj1sKzIzM3wwLExyPWwrNDY4fDAsYTA9bCsxMDR8MCxGaT1sKzM3MnwwLFBpPWYr''@;'; put 'put ''NDB8MCxIbz1sKzcyfDAsSGE9Zis2OHwwLGZzPWwrNDR8MCxqbD1sKzQ4fDA7ZTpmb3IoOzspe2FbQjA+PjJdPW1lPTB8YVtsbD4+Ml0sbWU9MHxEMFsxMjcmYVtiZT4+Ml1dKGYsbWUsbSxCMCksYVtsbz4+Ml09cD0wfGFbQjA+PjJdLGs9cDt0OmRve3N3aXRjaCgwfG1lKXtjYXNlLTM6VWw9''@;'; put 'put ''NjticmVhayBlO2Nhc2UtNDpVbD0xNTticmVhayBlO2Nhc2UgMDpVbD0yMDticmVhayBlO2Nhc2UtMTpVbD0yMTticmVhayBlO2Nhc2UtMjpVbD0yMzticmVhayBlO2Nhc2UgMTI6cD0xNzticmVhayBlO2Nhc2UtNTpVbD0xMzQ7YnJlYWsgZTtjYXNlIDk6bWU9MjU1JigwfG1pWzYzJmFbTGU+''@;'; put 'put ''PjJdXShmLCgwfGFbbGw+PjJdKSsobWU9MHxhW0JlPj4yXSl8MCxrKygwLW1lKXwwKSksdWVbVDI+PjBdPW1lO2Rve2lmKCEobWU8PDI0Pj4yNCkpe2lmKCEoYj0wfGwyKEhlLGYsKDB8YVtsbD4+Ml0pKyhiPTB8YVtCZT4+Ml0pfDAsMC1iKygwfGFbQjA+PjJdKXwwKSkpe3A9MSxVbD01Njti''@;'; put 'put ''cmVhayBlfWlmKGs9MHxfMShsLFZsLGIsMCksYVtldD4+Ml09YVtqZT4+Ml0sMCE9KDB8dWVbcnQ+PjBdKSYmMD09KDB8dWVbWnQ+PjBdKSl7aWYoIWspe2lmKDB8KHA9MHxhW0V0Pj4yXSkpe05sWzEyNyZwXSgwfGFba3U+PjJdLGIsMCk7YnJlYWt9aWYoISgwfGFbVzI+PjJdKSlicmVhaztz''@;'; put 'put ''MihsLGYsMHxhW2xsPj4yXSwwfGFbQjA+PjJdKTticmVha319ZWxzZXtpZighayl7cD0xMSxVbD01NjticmVhayBlfWlmKCEoMHx1ZVtrKzM0Pj4wXSkpe3A9MjQsVWw9NTY7YnJlYWsgZX19aWYoMHx1ZVsocD1rKzMyfDApPj4wXSl7cD0xMixVbD01NjticmVhayBlfWlmKDB8YVtrKzI4Pj4y''@;'; put 'put ''XSl7cD0xNSxVbD01NjticmVhayBlfWlmKCEoMHxhW2srND4+Ml0pKXtpZighKDB8YVtHZT4+Ml0pKXtpZighKDB8YVtXMj4+Ml0pKWJyZWFrO3MyKGwsZiwwfGFbbGw+PjJdLDB8YVtCMD4+Ml0pO2JyZWFrfWlmKHVlW3A+PjBdPTEsYj0wfHlBKGwpLHVlW3A+PjBdPTAsIWIpe3A9MSxVbD01''@;'; put 'put ''NjticmVhayBlfWlmKCEoMHxMMVsxMjcmYVtHZT4+Ml1dKDB8YVtsdD4+Ml0sYiwwfGFbaysyMD4+Ml0sMHxhW2srMTY+PjJdLDB8YVtrKzI0Pj4yXSkpKXtwPTIxLFVsPTU2O2JyZWFrIGV9YVtrdD4+Ml09YVtNdD4+Ml07YnJlYWt9aWYoMHx1ZVthdD4+MF0pe2lmKHA9MHxTeChsLGssMCkp''@;'; put 'put ''e1VsPTU4O2JyZWFrIGV9YnJlYWt9KHA9MHxhW0V0Pj4yXSk/TmxbMTI3JnBdKDB8YVtrdT4+Ml0sMHxhW2s+PjJdLDApOjB8YVtXMj4+Ml0mJnMyKGwsZiwwfGFbbGw+PjJdLDB8YVtCMD4+Ml0pO2JyZWFrIHR9aWYoMHwocD0wfGFbd2E+PjJdKSl7TmxbMTI3JnBdKDB8YVtrdT4+Ml0sVDIs''@;'; put 'put ''MSk7YnJlYWt9MHxhW1cyPj4yXSYmczIobCxmLDB8YVtsbD4+Ml0sMHxhW0IwPj4yXSl9d2hpbGUoMCk7YnJlYWs7Y2FzZSAxOmNhc2UgMjppZihwPTB8YVt1dD4+Ml0pYVt1dD4+Ml09YVtwPj4yXTtlbHNle2lmKCEocD0wfHBhWzYzJmFbd3Q+PjJdXSg0OCkpKXtwPTEsVWw9NzU7YnJlYWsg''@;'; put 'put ''ZX1pZihiPTB8cGFbNjMmYVt3dD4+Ml1dKDMyKSxhW3ArMzY+PjJdPWIsIWIpe1VsPTYzO2JyZWFrIGV9YVtwKzQwPj4yXT1iKzMyfWZvcihhWyhSPXArNDR8MCk+PjJdPTAsYVtwPj4yXT1hW3JuPj4yXSxhW3JuPj4yXT1wLG1lPXArMTJ8MCxhW3ArMTY+PjJdPTAsYVtwKzIwPj4yXT0wLGFb''@;'; put 'put ''KEs9cCs0fDApPj4yXT1wZT0oMHxhW2xsPj4yXSkrKDB8YVtCZT4+Ml0pfDAsYVsoRz1wKzh8MCk+PjJdPTB8UmlbMTI3JmFbeW4+PjJdXShmLHBlKSxhW2RoPj4yXT0xKygwfGFbZGg+PjJdKSxHPShLPTB8YVtLPj4yXSkrKDB8YVtHPj4yXSl8MCxhW3lhPj4yXT1LLGFbVDI+PjJdPWFbKEs9''@;'; put 'put ''cCszNnwwKT4+Ml0sYj0wfGFbKHBlPXArNDB8MCk+PjJdO3NsPTB8TDFbMTI3JmFbQ2k+PjJdXShmLHlhLEcsVDIsYistMXwwKSxEPShiPTB8YVtUMj4+Ml0pLShrPU09MHxhW0s+PjJdKXwwLCEoMT09KDB8c2wpfHwoMHxhW3lhPj4yXSk+Pj4wPj1HPj4+MCk7KXtpZighKGI9MHxSaVsxMjcm''@;'; put 'put ''YVtGbj4+Ml1dKE0saz0oMHxhW3BlPj4yXSktazw8MSkpKXtVbD02OTticmVhayBlfWFbSz4+Ml09YixhW3BlPj4yXT1zbD1iK2t8MCxhW1QyPj4yXT1iK0QsYj1zbH1pZihhW3ArMjQ+PjJdPUQsYVttZT4+Ml09ayx1ZVtiPj4wXT0wLDB8KHA9MHxmUChsLGYsMHxhW2xsPj4yXSxtZSxSKSkp''@;'; put 'put ''e1VsPTc1O2JyZWFrIGV9KHA9MHxhW2xyPj4yXSk/TmxbMTI3JnBdKDB8YVtrdT4+Ml0sMHxhW21lPj4yXSwwfGFba3I+PjJdKTowfGFbVzI+PjJdJiZzMihsLGYsMHxhW2xsPj4yXSwwfGFbQjA+PjJdKSxxZihOcik7YnJlYWs7Y2FzZSAzOmNhc2UgNDppZihzbD0oMHxhW2xsPj4yXSkrKDB8''@;'; put 'put ''YVtCZT4+Ml0pfDAsYVtUMj4+Ml09MCxzbD0wfGwyKE5yLGYsc2wsc2wrKDB8UmlbMTI3JmFbeW4+PjJdXShmLHNsKSl8MCksYVt5YT4+Ml09c2wsIXNsKXtwPTEsVWw9ODk7YnJlYWsgZX1pZihhW010Pj4yXT1hW2t0Pj4yXSwwfChwPTB8ZlAobCxmLDB8YVtsbD4+Ml0seWEsVDIpKSl7VWw9''@;'; put 'put ''Nzk7YnJlYWsgZX1pZihhW010Pj4yXT1hW2t0Pj4yXSwocD0wfGFbbHI+PjJdKT8oTmxbMTI3JnBdKDB8YVtrdT4+Ml0sMHxhW3lhPj4yXSwwfGFba3I+PjJdKSxiPTApOmI9MSwocD0wfGFbY3I+PjJdKT8oMHxhW2xyPj4yXSYmKGFbU2E+PjJdPWFbbG8+PjJdLHA9MHxhW2NyPj4yXSkseDJb''@;'; put 'put ''NjMmcF0oMHxhW2t1Pj4yXSwwfGFbeWE+PjJdKSk6MHxiJiYwfGFbVzI+PjJdJiZzMihsLGYsMHxhW2xsPj4yXSwwfGFbQjA+PjJdKSxxZihOciksUF8obCwwfGFbVDI+PjJdKSwwPT0oMHxhW2RoPj4yXSkmJjIhPSgtMiZhW09lPj4yXXwwKSl7VWw9OTI7YnJlYWsgZX1icmVhaztjYXNlIDU6''@;'; put 'put ''aWYoKDB8YVtkaD4+Ml0pPT0oMHxjKSl7cD0xMzticmVhayBlfWlmKGFbcm4+PjJdPWFbKEQ9MHxhW3JuPj4yXSk+PjJdLGFbRD4+Ml09YVt1dD4+Ml0sYVt1dD4+Ml09RCwoMHwoYj0wfFJpWzEyNyZhW3luPj4yXV0oZixwPSgwfGFbbGw+PjJdKSsoYVtCZT4+Ml08PDEpfDApKSkhPSgwfGFb''@;'; put 'put ''RCs4Pj4yXSkpe1VsPTk2O2JyZWFrIGV9aWYoMHwkaCgwfGFbRCs0Pj4yXSxwLGIpKXtVbD05NjticmVhayBlfWlmKGFbZGg+PjJdPSgwfGFbZGg+PjJdKS0xLHA9MHxhW2NyPj4yXSl7aWYoTT1EKzEyfDAsMCE9KDB8KGI9MHxhW0QrMTY+PjJdKSkmMCE9KDB8dWVbQ3I+PjBdKSl7Zm9yKHA9''@;'; put 'put ''KDB8YVtNPj4yXSkrKDB8YVtEKzI4Pj4yXSl8MDsoaz0wfHVlW2I+PjBdKTw8MjQ+PjI0Oyl1ZVtwPj4wXT1rLHA9cCsxfDAsYj1iKzF8MDtiPTB8YVtEKzIwPj4yXTtuOmRve2lmKDAhPSgwfGIpJjAhPSgwfHVlW3FyPj4wXSkpZm9yKHVlW3A+PjBdPTB8dWVbTHI+PjBdOzspe2lmKHA9cCsx''@;'; put 'put ''fDAsISgoaz0wfHVlW2I+PjBdKTw8MjQ+PjI0KSlicmVhayBuO3VlW3A+PjBdPWssYj1iKzF8MH19d2hpbGUoMCk7dWVbcD4+MF09MCxwPTB8YVtjcj4+Ml19eDJbNjMmcF0oMHxhW2t1Pj4yXSwwfGFbTT4+Ml0pfWVsc2UgMHxhW1cyPj4yXSYmczIobCxmLDB8YVtsbD4+Ml0sMHxhW0IwPj4y''@;'; put 'put ''XSk7Zm9yKGs9RCs0NHwwO009MHxhW2s+PjJdOykocD0wfGFbYTA+PjJdKT8oeDJbNjMmcF0oMHxhW2t1Pj4yXSwwfGFbYVtNPj4yXT4+Ml0pLHA9TSxiPTB8YVtrPj4yXSk6KHA9TSxiPU0pLGFbaz4+Ml09YVtiKzQ+PjJdLGFbTSs0Pj4yXT1hW0ZpPj4yXSxhW0ZpPj4yXT1NLGFbNCsoMHxh''@;'; put 'put ''W3A+PjJdKT4+Ml09YVtNKzg+PjJdO2lmKCEoMHxhW2RoPj4yXSkpe1VsPTExNzticmVhayBlfWJyZWFrO2Nhc2UgMTA6aWYoKDB8KHA9MHxSaVsxMjcmYVtQaT4+Ml1dKGYsMHxhW2xsPj4yXSkpKTwwKXtwPTE0O2JyZWFrIGV9aWYoMHwoYj0wfGFbd2E+PjJdKSl7bWU9MHxhW2t1Pj4yXSxz''@;'; put 'put ''bD0wfEM2KHAsVDIpLE5sWzEyNyZiXShtZSxUMixzbCk7YnJlYWsgdH0wfGFbVzI+PjJdJiZzMihsLGYsMHxhW2xsPj4yXSwwfGFbQjA+PjJdKTticmVhaztjYXNlIDc6aWYoMHwocD0wfGFbd2E+PjJdKSl7dWVbVDI+PjBdPTEwLE5sWzEyNyZwXSgwfGFba3U+PjJdLFQyLDEpO2JyZWFrIHR9''@;'; put 'put ''MHxhW1cyPj4yXSYmczIobCxmLDB8YVtsbD4+Ml0sayk7YnJlYWs7Y2FzZSA4OmlmKChwPTB8YVtIbz4+Ml0pP25vWzEyNyZwXSgwfGFba3U+PjJdKTowfGFbVzI+PjJdJiZzMihsLGYsMHxhW2xsPj4yXSxrKSwwfChwPTB8YkEobCxmLEIwLG0sQSx3KSkpYnJlYWsgZTtpZighKDB8YVtCMD4+''@;'; put 'put ''Ml0pKXtVbD0xMzM7YnJlYWsgZX1icmVhaztjYXNlIDY6aWYoIShiPTB8YVt3YT4+Ml0pKXtpZighKDB8YVtXMj4+Ml0pKWJyZWFrIHQ7czIobCxmLDB8YVtsbD4+Ml0sayk7YnJlYWsgdH1pZigwfHVlW0hhPj4wXSl7TmxbMTI3JmJdKDB8YVtrdT4+Ml0sc2w9MHxhW2xsPj4yXSxwLXNsfDAp''@;'; put 'put ''O2JyZWFrIHR9Zm9yKHA9azthW1QyPj4yXT1hW2ZzPj4yXSxzbD0wfEwxWzEyNyZhW0NpPj4yXV0oZixsbCxwLFQyLDB8YVtqbD4+Ml0pLGFbbG8+PjJdPWFbbGw+PjJdLE5sWzEyNyZiXSgwfGFba3U+PjJdLG1lPTB8YVtmcz4+Ml0sKDB8YVtUMj4+Ml0pLW1lfDApLCEoc2w+Pj4wPDIpOylh''@;'; put 'put ''W1NhPj4yXT1hW2xsPj4yXSxwPTB8YVtCMD4+Ml07YnJlYWs7Y2FzZSAxMTppZighKDB8SzgobCxmLDB8YVtsbD4+Ml0saykpKXtwPTE7YnJlYWsgZX1icmVhaztjYXNlIDEzOmlmKCEoMHxSXyhsLGYsMHxhW2xsPj4yXSxrKSkpe3A9MTticmVhayBlfWJyZWFrO2RlZmF1bHQ6MHxhW1cyPj4y''@;'; put 'put ''XSYmczIobCxmLDB8YVtsbD4+Ml0sayl9fXdoaWxlKDApO3N3aXRjaChhW2xsPj4yXT1zbD0wfGFbQjA+PjJdLGFbU2E+PjJdPXNsLDB8YVtPZT4+Ml0pe2Nhc2UgMjpwPTM1O2JyZWFrIGU7Y2FzZSAzOlVsPTE2MDticmVhayBlfX1zd2l0Y2goMHxVbCl7Y2FzZSA2OmlmKHc8PDI0Pj4yNCl7''@;'; put 'put ''YVtBPj4yXT1hW2xsPj4yXSxwPTA7YnJlYWt9YVtsbz4+Ml09bSwocD0wfGFbd2E+PjJdKT8odWVbVDI+PjBdPTEwLE5sWzEyNyZwXSgwfGFba3U+PjJdLFQyLDEpKTowfGFbVzI+PjJdJiZzMihsLGYsMHxhW2xsPj4yXSxtKSxjPygwfGFbZGg+PjJdKT09KDB8Yyk/KGFbQT4+Ml09bSxwPTAp''@;'; put 'put ''OnA9MTM6cD0zO2JyZWFrO2Nhc2UgMTU6aWYodzw8MjQ+PjI0KXthW0E+PjJdPWFbbGw+PjJdLHA9MDticmVha30oMHxjKT4wPygwfGFbZGg+PjJdKT09KDB8Yyk/KGFbQT4+Ml09YVtsbD4+Ml0scD0wKTpwPTEzOnA9MzticmVhaztjYXNlIDIwOmFbU2E+PjJdPXAscD00O2JyZWFrO2Nhc2Ug''@;'; put 'put ''MjE6dzw8MjQ+PjI0PyhhW0E+PjJdPWFbbGw+PjJdLHA9MCk6cD01O2JyZWFrO2Nhc2UgMjM6dzw8MjQ+PjI0PyhhW0E+PjJdPWFbbGw+PjJdLHA9MCk6cD02O2JyZWFrO2Nhc2UgNTY6Y2FzZSA1ODpicmVhaztjYXNlIDYzOm5vWzEyNyZhW2wrMjA+PjJdXShwKSxwPTEsVWw9NzU7YnJlYWs7''@;'; put 'put ''Y2FzZSA2OTpwPTEsVWw9NzU7YnJlYWs7Y2FzZSA3OTpQXyhsLDB8YVtUMj4+Ml0pLFVsPTg5O2JyZWFrO2Nhc2UgOTI6Y2FzZSAxMTc6cD0wfHdBKGwsMHxhW0IwPj4yXSxtLEEpO2JyZWFrO2Nhc2UgOTY6YVtTYT4+Ml09cCxwPTc7YnJlYWs7Y2FzZSAxMzM6YVtsKzI3Nj4+Ml09NjEscD0w''@;'; put 'put ''O2JyZWFrO2Nhc2UgMTM0OmlmKHc8PDI0Pj4yNCl7YVtBPj4yXT1hW2xsPj4yXSxwPTA7YnJlYWt9cD0wfGFbd2E+PjJdO2Rve2lmKHApe2lmKDB8dWVbSGE+PjBdKXtObFsxMjcmcF0oMHxhW2t1Pj4yXSxzbD0wfGFbbGw+PjJdLG0tc2x8MCk7YnJlYWt9YVtUMj4+Ml09YVtmcz4+Ml0sTDFb''@;'; put 'put ''MTI3JmFbQ2k+PjJdXShmLGxsLG0sVDIsMHxhW2psPj4yXSksTmxbMTI3JmFbd2E+PjJdXSgwfGFba3U+PjJdLHNsPTB8YVtmcz4+Ml0sKDB8YVtUMj4+Ml0pLXNsfDApO2JyZWFrfTB8YVtXMj4+Ml0mJnMyKGwsZiwwfGFbbGw+PjJdLG0pfXdoaWxlKDApO2lmKCFjKXthW1NhPj4yXT1tLHA9''@;'; put 'put ''MzticmVha31pZigoMHxhW2RoPj4yXSk9PSgwfGMpKXthW0E+PjJdPW0scD0wO2JyZWFrfWFbU2E+PjJdPW0scD0xMzticmVhaztjYXNlIDE2MDphW0E+PjJdPWFbQjA+PjJdLHA9MH1yZXR1cm4gb2U9cGgsMHxwfWZ1bmN0aW9uIHlBKGwpe3ZhciBNLEQsUixHLEssYz0wLGY9MCxwPTAsbT0w''@;'; put 'put ''LEE9MCx3PTAsYj0wLGs9MDtLPW9lLG9lPW9lKzE2fDAsRD1LLEE9MTU2KyhNPTB8YVszNTIrKGx8PTApPj4yXSl8MCxSPWwrNDEyfDAsRz1sKzQyNHwwO2U6ZG97aWYoMHxhW0E+PjJdKXtpZigoMHwoYz0wfGFbRz4+Ml0pKT09KDB8YVsodz1sKzQyMHwwKT4+Ml0pKXtpZighKCgwfFJsKFIp''@;'; put 'put ''KTw8MjQ+PjI0KSl7Yz0wO2JyZWFrfWM9MHxhW0c+PjJdfWZvcihhW0c+PjJdPWMrMSx1ZVtjPj4wXT02MSxmPSgwfGFbMjArKDB8YVtBPj4yXSk+PjJdKSsoKDAhPSgwfHVlWyhtPWwrNDY4fDApPj4wXSkpPDwzMT4+MzEpfDAscD0wOzspe2lmKCgwfHApPj0oMHxmKSl7Yz0xLGs9bSxiPTEy''@;'; put 'put ''O2JyZWFrIGV9aWYoKDB8KGM9MHxhW0c+PjJdKSk9PSgwfGFbdz4+Ml0pKXtpZighKCgwfFJsKFIpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrIGV9Yz0wfGFbRz4+Ml19az0wfHVlWygwfGFbMTYrKDB8YVtBPj4yXSk+PjJdKStwPj4wXSxhW0c+PjJdPWMrMSx1ZVtjPj4wXT1rLHA9cCsxfDB9fWVs''@;'; put 'put ''c2UgYz0wLHc9bCs0MjB8MCxrPWwrNDY4fDAsYj0xMn13aGlsZSgwKTtlOmRve2lmKDEyPT0oMHxiKSl7eF8oRCxNKzYwfDApO3Q6Zm9yKDs7KXtkb3tpZighKGY9MHxmQShEKSkpYnJlYWsgdDtBPWYrNHwwfXdoaWxlKCEoMHxhW0E+PjJdKSk7aWYoYzw8MjQ+PjI0KXtpZigoMHwoYz0wfGFb''@;'; put 'put ''Rz4+Ml0pKT09KDB8YVt3Pj4yXSkpe2lmKCEoKDB8UmwoUikpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1jPTB8YVtHPj4yXX1hW0c+PjJdPWMrMSx1ZVtjPj4wXT0xMn1mb3IobT0wfGFbZj4+Ml07cD0oMHwoYz0wfGFbRz4+Ml0pKT09KDB8YVt3Pj4yXSksKGY9MHx1ZVttPj4wXSk8PDI0Pj4y''@;'; put 'put ''NDspe2lmKHApe2lmKCEoKDB8UmwoUikpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1jPTB8YVtHPj4yXSxmPTB8dWVbbT4+MF19YVtHPj4yXT1jKzEsdWVbYz4+MF09ZixtPW0rMXwwfWlmKHApe2lmKCEoKDB8UmwoUikpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1jPTB8YVtHPj4yXX1mb3IoYVtH''@;'; put 'put ''Pj4yXT1jKzEsdWVbYz4+MF09NjEscD0oMHxhWzIwKygwfGFbQT4+Ml0pPj4yXSkrKCgwIT0oMHx1ZVtrPj4wXSkpPDwzMT4+MzEpfDAsZj0wOzspe2lmKCgwfGYpPj0oMHxwKSl7Yz0xO2NvbnRpbnVlIHR9aWYoKDB8KGM9MHxhW0c+PjJdKSk9PSgwfGFbdz4+Ml0pKXtpZighKCgwfFJsKFIp''@;'; put 'put ''KTw8MjQ+PjI0KSl7Yz0wO2JyZWFrIGV9Yz0wfGFbRz4+Ml19Yj0wfHVlWygwfGFbMTYrKDB8YVtBPj4yXSk+PjJdKStmPj4wXSxhW0c+PjJdPWMrMSx1ZVtjPj4wXT1iLGY9ZisxfDB9fXhfKEQsTSk7dDpmb3IoOzspe2Rve2lmKCEoZj0wfGZBKEQpKSlicmVhayB0fXdoaWxlKCEoMHx1ZVtm''@;'; put 'put ''KzMyPj4wXSkpO2lmKGM8PDI0Pj4yNCl7aWYoKDB8KGM9MHxhW0c+PjJdKSk9PSgwfGFbdz4+Ml0pKXtpZighKCgwfFJsKFIpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrIGV9Yz0wfGFbRz4+Ml19YVtHPj4yXT1jKzEsdWVbYz4+MF09MTJ9Zm9yKHA9MHxhW2Y+PjJdOzspe2lmKCEoKGY9MHx1ZVtw''@;'; put 'put ''Pj4wXSk8PDI0Pj4yNCkpe2M9MTtjb250aW51ZSB0fWlmKCgwfChjPTB8YVtHPj4yXSkpPT0oMHxhW3c+PjJdKSl7aWYoISgoMHxSbChSKSk8PDI0Pj4yNCkpe2M9MDticmVhayBlfWM9MHxhW0c+PjJdLGY9MHx1ZVtwPj4wXX1hW0c+PjJdPWMrMSx1ZVtjPj4wXT1mLHA9cCsxfDB9fWlmKCgw''@;'; put 'put ''fChjPTB8YVtHPj4yXSkpPT0oMHxhW3c+PjJdKSl7aWYoISgoMHxSbChSKSk8PDI0Pj4yNCkpe2M9MDticmVha31jPTB8YVtHPj4yXX1hW0c+PjJdPWMrMSx1ZVtjPj4wXT0wLGM9MHxhW2wrNDI4Pj4yXX19d2hpbGUoMCk7cmV0dXJuIG9lPUssMHxjfWZ1bmN0aW9uIGZQKGwsYyxmLHAsbSl7''@;'; put 'put ''Y3w9MCxmfD0wLG18PTA7dmFyIHd0LHJuLHluLGxyLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTAsa3Q9MCxhdD0wLEV0PTAsWnQ9MCx1dD0wLEZuPTAsTnI9''@;'; put 'put ''MDtscj1vZSxvZT1vZSs4MHwwLHd0PWxyKzE2fDAscm49bHIsKEE9MHxfMShsfD0wLGI9MjArKHluPTB8YVtsKzM1Mj4+Ml0pfDAsMHxhWyhwfD0wKT4+Ml0sMCkpPyh3PUEsZXQ9Nik6MCE9KDB8KEE9MHxRbSh5bis4MHwwLDB8YVtwPj4yXSkpKSYmMCE9KDB8KHc9MHxfMShsLGIsQSwyNCkp''@;'; put 'put ''KT8wIT0oMHx1ZVtsKzIzMj4+MF0pJiYwPT0oMHxKbShsLHcpKT9BPTE6ZXQ9NjpBPTE7ZTpkb3tpZig2PT0oMHxldCkpe2lmKEJlPTB8YVt3KzEyPj4yXSwoMHwoQT0oYmU9MHxEMFsxMjcmYVsoYj1jKzM2fDApPj4yXV0oYyxmLDB8YVsoaz1sKzM3NnwwKT4+Ml0sMHxhWyhtZT1sKzM4OHww''@;'; put 'put ''KT4+Ml0pKStCZXwwKSk+KDB8KE09MHxhW2s+PjJdKSkpe2lmKGFbaz4+Ml09QT1BKzE2fDAsIShBPTB8UmlbMTI3JmFbbCsxNj4+Ml1dKDB8YVttZT4+Ml0sQTw8NCkpKXthW2s+PjJdPU0sQT0xO2JyZWFrfWFbbWU+PjJdPUEsKDB8YmUpPigwfE0pJiZEMFsxMjcmYVtiPj4yXV0oYyxmLGJl''@;'; put 'put ''LEEpfWZvcih1dD0wfGFbbWU+PjJdLEs9YysyOHwwLEV0PWwrNDEyfDAsWnQ9bCs0Mjh8MCxMZT13KzIwfDAsRz1sKzQyNHwwLHBlPTAsUj0wLGI9MDshKCgwfFIpPj0oMHxiZSkpOyl7aWYoIShEPTB8TGgobCxjLEQ9MHxhWygwfGFbbWU+PjJdKSsoUjw8NCk+PjJdLEQrKDB8UmlbMTI3JmFb''@;'; put 'put ''Sz4+Ml1dKGMsRCkpfDApKSl7QT0xO2JyZWFrIGV9aWYoMHx1ZVsoQT0oMHxhW0Q+PjJdKS0xfDApPj4wXSl7ZXQ9MTU7YnJlYWt9aWYodWVbQT4+MF09MSxmPXBlKzF8MCxhW3V0KyhwZTw8Mik+PjJdPWFbRD4+Ml0sMHx1ZVsoTT0wfGFbbWU+PjJdKSsoUjw8NCkrMTI+PjBdKXtpZihhdD0w''@;'; put 'put ''fGwyKEV0LGMsMHxhW00rKFI8PDQpKzQ+PjJdLDB8YVtNKyhSPDw0KSs4Pj4yXSksYVt1dCsoZjw8Mik+PjJdPWF0LCFhdCl7QT0xO2JyZWFrIGV9fWVsc2V7dDpkb3tpZigwfHVlW0QrOD4+MF0pe2ZvcihBPTA7Oyl7aWYoKDB8QSk+PSgwfEJlKSl7QT0xO2JyZWFrIHR9aWYoKDB8RCk9PSgw''@;'; put 'put ''fGFbKGs9MHxhW0xlPj4yXSkrKDEyKkF8MCk+PjJdKSlicmVhaztBPUErMXwwfUE9MHx1ZVtrKygxMipBfDApKzQ+PjBdfWVsc2UgQT0xfXdoaWxlKDApO2lmKDB8KEE9MHxnQShsLGMsQSwwfGFbTSsoUjw8NCkrND4+Ml0sMHxhW00rKFI8PDQpKzg+PjJdLEV0KSkpYnJlYWsgZTthW3V0Kyhm''@;'; put 'put ''PDwyKT4+Ml09YVtadD4+Ml19YVtadD4+Ml09YVtHPj4yXSxBPTB8YVtEKzQ+PjJdO2Rve2lmKEEpe2lmKDB8dWVbRCs5Pj4wXSl7aWYoQT0wfGI2KGwsQSxELDB8YVt1dCsoZjw8Mik+PjJdLG0pKWJyZWFrIGU7QT1wZTticmVha311ZVsoMHxhW0Q+PjJdKS0xPj4wXT0yLGI9YisxfDAsQT1w''@;'; put 'put ''ZSsyfDA7YnJlYWt9QT1wZSsyfDB9d2hpbGUoMCk7cGU9QSxSPVIrMXwwfWlmKDE1PT0oMHxldCkpe2lmKCgwfGFbbCsxNDQ+PjJdKSE9KDB8Yykpe0E9ODticmVha31hW2wrMjg0Pj4yXT1hWygwfGFbbWU+PjJdKSsoUjw8NCk+PjJdLEE9ODticmVha31hW2wrMzgwPj4yXT1wZSxBPTB8YVt3''@;'; put 'put ''Kzg+PjJdO3Q6ZG97aWYoMCE9KDB8QSkmJihPZT0wfGFbQT4+Ml0sMCE9KDB8dWVbT2UrLTE+PjBdKSkpZm9yKEE9MDs7KXtpZigoMHxBKT49KDB8cGUpKXtmPTAsUj1iLGF0PXBlO2JyZWFrIHR9aWYoKDB8YVt1dCsoQTw8Mik+PjJdKT09KDB8T2UpKXtldD0zNzticmVhayB0fUE9QSsyfDB9''@;'; put 'put ''ZWxzZSBBPS0xLGV0PTM3fXdoaWxlKDApO2ZvcigzNz09KDB8ZXQpJiYoYVtsKzM4ND4+Ml09QSxmPTAsUj1iLGF0PXBlKTshKCgwfGYpPj0oMHxCZSkpOyl7az0oMHxhWyhiPTB8YVsoTT0oQT0wfGFbTGU+PjJdKSsoMTIqZnwwKXwwKT4+Ml0pPj4yXSktMXwwO3Q6ZG97aWYoMD09KDB8dWVb''@;'; put 'put ''az4+MF0pJiYoSGU9QSsoMTIqZnwwKSs4fDAsamU9MHxhW0hlPj4yXSwwIT0oMHxqZSkpKXtBPTB8YVtiKzQ+PjJdO2Rve2lmKEEpe2lmKDB8dWVbYis5Pj4wXSl7aWYoQT0wfGI2KGwsQSxiLGplLG0pKWJyZWFrIGU7QT1SLGI9YXQ7YnJlYWsgdH11ZVtrPj4wXT0yLEE9UisxfDA7YnJlYWt9''@;'; put 'put ''dWVbaz4+MF09MSxBPVJ9d2hpbGUoMCk7YVt1dCsoYXQ8PDIpPj4yXT1hW2FbTT4+Ml0+PjJdLGFbdXQrKGF0KzE8PDIpPj4yXT1hW0hlPj4yXSxiPWF0KzJ8MH1lbHNlIEE9UixiPWF0fXdoaWxlKDApO2Y9ZisxfDAsUj1BLGF0PWJ9YVt1dCsoYXQ8PDIpPj4yXT0wO3Q6ZG97aWYoUil7TT0w''@;'; put 'put ''fGFbKEQ9bCszOTZ8MCk+PjJdLEE9MjU1JihmPTB8dWVbKGt0PWwrNDAwfDApPj4wXSk7ZG97aWYoUjw8MT4+QSl7QT1mO2Rve010PUEsQT1BKzE8PDI0Pj4yNH13aGlsZSgwIT0oUj4+KDI1NSZNdCl8MCkpO2lmKHVlW2t0Pj4wXT1BPSgyNTUmQSk+Mz9BOjMsYj0wfFJpWzEyNyZhW2wrMTY+''@;'; put 'put ''PjJdXSgwfGFbKGs9bCszOTJ8MCk+PjJdLDEyPDwoQSY9MjU1KSkpe2Fbaz4+Ml09YixiPTE8PEEsZXQ9NTU7YnJlYWt9dWVba3Q+PjBdPWYsQT0xO2JyZWFrIGV9QT0xPDxBLGs9bCszOTJ8MCxNPyhiPUEsQT1NKTooYj1BLGV0PTU1KX13aGlsZSgwKTtuOmRve2lmKDU1PT0oMHxldCkpZm9y''@;'; put 'put ''KEE9Yjs7KXtpZighQSl7QT0tMTticmVhayBufWFbKDB8YVtrPj4yXSkrKDEyKihNdD1BKy0xfDApfDApPj4yXT0tMSxBPU10fX13aGlsZSgwKTthW0Q+PjJdPU10PUErLTF8MCxMZT15bis0MHwwLEJlPWwrNDI0fDAsSGU9bCs0MjB8MCxldD0wLWJ8MCxydD0oamU9YistMXwwKT4+PjIsR2U9''@;'; put 'put ''bCsyMzN8MCxsdD1sKzQ2OHwwLEE9MCxPZT1SO246Zm9yKDs7KXtmb3IoOzspe2lmKCgwfEEpPj0oMHxhdCkpYnJlYWsgdDtpZigyPT0oMHx1ZVsoZj0oTT0wfGFbKGM9dXQrKEE8PDIpfDApPj4yXSktMXwwKT4+MF0pKWJyZWFrO3VlW2Y+PjBdPTAsQT1BKzJ8MH1pZihFeChsLHJuKSxYbSh3''@;'; put 'put ''dCxybiksdWVbZj4+MF09MCwhKGY9MHxfMShsLExlLE0sMCkpKXtBPTE7YnJlYWt9aWYoIShmPTB8YVtmKzQ+PjJdKSl7QT0xO2JyZWFrfWlmKCEoYmU9MHxhW2YrND4+Ml0pKXtBPTI3O2JyZWFrfWZvcihHPWJlKzIwfDAsSz1iZSsxNnwwLFI9MDtEPTB8YVtLPj4yXSwhKCgwfFIpPj0oMHwo''@;'; put 'put ''Zj0wfGFbRz4+Ml0pKSk7KXtpZihEPTB8dWVbRCtSPj4wXSwoMHwoZj0wfGFbQmU+PjJdKSk9PSgwfGFbSGU+PjJdKSl7aWYoISgoMHxSbChFdCkpPDwyND4+MjQpKXtBPTE7YnJlYWsgbn1mPTB8YVtCZT4+Ml19YVtCZT4+Ml09ZisxLHVlW2Y+PjBdPUQsUj1SKzF8MH1DQSh3dCxELGYpO2Rv''@;'; put 'put ''e21lPU0sTT1NKzF8MH13aGlsZSg1OCE9KDB8dWVbbWU+PjBdKSk7Zm9yKENBKHd0LE0sMHxLbShNKSk7Oyl7aWYoKDB8KGY9MHxhW0JlPj4yXSkpPT0oMHxhW0hlPj4yXSkpe2lmKCEoKDB8UmwoRXQpKTw8MjQ+PjI0KSl7QT0xO2JyZWFrIG59Zj0wfGFbQmU+PjJdfWlmKG1lPTB8dWVbTT4+''@;'; put 'put ''MF0sYVtCZT4+Ml09ZisxLHVlW2Y+PjBdPW1lLCEoMHx1ZVtNPj4wXSkpYnJlYWs7TT1NKzF8MH1mb3IobWU9MHxGXyh3dCksRz0wfGFbaz4+Ml0sSz1tZSZldCxNPTAscGU9amUmbWU7KDB8YVtHKygxMipwZXwwKT4+Ml0pPT0oMHxNdCk7KXtpZigoMHxhW0crKDEyKnBlfDApKzQ+PjJdKT09''@;'; put 'put ''KDB8bWUpKXtmb3IoZj0wfGFbRysoMTIqcGV8MCkrOD4+Ml0sRD0wfGFbWnQ+PjJdOyEoKFI9KE5yPTB8dWVbRD4+MF0pPDwyND4+MjQ9PTApfE5yPDwyND4+MjQhPSgwfHVlW2Y+PjBdKSk7KWY9ZisxfDAsRD1EKzF8MDtpZihSKXtBPTg7YnJlYWsgbn19TTw8MjQ+PjI0fHwoTT0yNTUmKEs+''@;'; put 'put ''Pj4oKDB8YnRba3Q+PjBdKS0xfDApJnJ0fDEpKSxwZT1wZSsoKDB8cGUpPCgwfChOcj0yNTUmTSkpP2I6MCktTnJ8MH1pZigwfHVlW0dlPj4wXSlmb3IodWVbKDB8YVtCZT4+Ml0pLTE+PjBdPTB8dWVbbHQ+PjBdLGY9MHxhW2FbYmU+PjJdPj4yXTs7KXtpZigoMHwoTT0wfGFbQmU+PjJdKSk9''@;'; put 'put ''PSgwfGFbSGU+PjJdKSl7aWYoISgoMHxSbChFdCkpPDwyND4+MjQpKXtBPTE7YnJlYWsgbn1NPTB8YVtCZT4+Ml19aWYoTnI9MHx1ZVtmPj4wXSxhW0JlPj4yXT1NKzEsdWVbTT4+MF09TnIsISgwfHVlW2Y+PjBdKSlicmVhaztmPWYrMXwwfWlmKE5yPTB8YVtadD4+Ml0sYVtadD4+Ml09YVtC''@;'; put 'put ''ZT4+Ml0sYVtjPj4yXT1OcixhWygwfGFbaz4+Ml0pKygxMipwZXwwKT4+Ml09TXQsYVsoMHxhW2s+PjJdKSsoMTIqcGV8MCkrND4+Ml09bWUsYVsoMHxhW2s+PjJdKSsoMTIqcGV8MCkrOD4+Ml09TnIsQT1BKzJ8MCwhKE9lPU9lKy0xfDApKWJyZWFrIHR9YnJlYWsgZX1BPTB9d2hpbGUoMCk7''@;'; put 'put ''Zm9yKDs7KXtpZigoMHxBKT49KDB8YXQpKXtBPW07YnJlYWt9dWVbKDB8YVt1dCsoQTw8Mik+PjJdKS0xPj4wXT0wLEE9QSsyfDB9Zm9yKDtBPTB8YVtBPj4yXTspdWVbKDB8YVthW0ErMTI+PjJdPj4yXSktMT4+MF09MCxBPUErNHwwO2lmKDB8dWVbbCsyMzI+PjBdKXtpZihBPTB8YVt3KzQ+''@;'; put 'put ''PjJdKXtpZighKEE9MHxhW0ErND4+Ml0pKXtBPTI3O2JyZWFrfWZvcih3PTB8YVtwPj4yXTtiPXcrMXwwLDU4IT0oMHx1ZVt3Pj4wXSk7KXc9Yn1lbHNle2lmKCEoQT0wfGFbeW4rMTU2Pj4yXSkpe0E9MDticmVha31iPTB8YVtwPj4yXX1pZigwIT0oMHx1ZVtsKzIzMz4+MF0pJiYwIT0oMHwo''@;'; put 'put ''Rm49MHxhW2FbQT4+Ml0+PjJdKSkpZm9yKHc9MDtrPXcrMXwwLDB8dWVbRm4rdz4+MF07KXc9aztlbHNlIGs9MDtmb3IoYVtwKzQ+PjJdPWIsYVtwKzE2Pj4yXT1hWyhSPUErMjB8MCk+PjJdLGFbcCs4Pj4yXT1hW2FbQT4+Ml0+PjJdLGFbcCsyMD4+Ml09ayxHPTA7Sz1HKzF8MCwwfHVlW2Ir''@;'; put 'put ''Rz4+MF07KUc9SztpZigoMHwoTT1LK2srKHc9MHxhW1I+PjJdKXwwKSk+KDB8YVsoZj1BKzI0fDApPj4yXSkpe2lmKCEoRD0wfHBhWzYzJmFbbCsxMj4+Ml1dKHc9TSsyNHwwKSkpe0E9MTticmVha31mb3IoYVtmPj4yXT13LERvKDB8RCwwfGFbKGY9QSsxNnwwKT4+Ml0sMHxhW1I+PjJdKSx3''@;'; put 'put ''PWwrMzYwfDA7dz0wfGFbdz4+Ml07KSgwfGFbKE09dysxMnwwKT4+Ml0pPT0oMHxhW2Y+PjJdKSYmKGFbTT4+Ml09RCk7bm9bMTI3JmFbbCsyMD4+Ml1dKDB8YVtmPj4yXSksYVtmPj4yXT1ELE09RCx3PTB8YVtSPj4yXX1lbHNlIGY9TT1BKzE2fDAsTT0wfGFbTT4+Ml07RG8oMHwodz1NK3d8''@;'; put 'put ''MCksMHxiLDB8SyksMHxrJiYodWVbKE5yPXcrR3wwKT4+MF09MHx1ZVtsKzQ2OD4+MF0sRG8oTnIrMXwwLDB8YVthW0E+PjJdPj4yXSwwfGspKSxhW3A+PjJdPWFbZj4+Ml0sQT0wfWVsc2UgQT0wfX13aGlsZSgwKTtyZXR1cm4gb2U9bHIsMHxBfWZ1bmN0aW9uIFBfKGwsYyl7Y3w9MDt2YXIg''@;'; put 'put ''ZixwLG0sQT0wLHc9MDtmb3IocD0xMDQrKGx8PTApfDAsbT1sKzM3MnwwLGY9bCs0fDA7YzspKGw9MHxhW3A+PjJdKSYmeDJbNjMmbF0oMHxhW2Y+PjJdLDB8YVthW2M+PjJdPj4yXSksbD1jLEE9MHxhWyh3PWMrNHwwKT4+Ml0sYVt3Pj4yXT1hW20+PjJdLGFbbT4+Ml09YyxhWzQrKDB8YVts''@;'; put 'put ''Pj4yXSk+PjJdPWFbYys4Pj4yXSxjPUF9ZnVuY3Rpb24gd0EobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLE0sRCxSLEssbT0wLEE9MCxHPTAscGU9MDtLPW9lLG9lPW9lKzE2fDAsYj1LLGFbMjc2KyhsfD0wKT4+Ml09NjIsYVsoaz1sKzI4NHwwKT4+Ml09YyxNPWwrMTQ0fDAs''@;'; put 'put ''RD1sKzI4OHwwLFI9bCs4MHwwLHc9bCs0NzZ8MCxtPWM7ZTpmb3IoOzspe3N3aXRjaChhW2I+PjJdPTAscGU9MHxEMFsxMjcmYVsocGU9MHxhW00+PjJdKT4+Ml1dKHBlLG0sZixiKSxhW0Q+PjJdPWM9MHxhW2I+PjJdLEE9YywwfHBlKXtjYXNlLTE1Okc9MzticmVhayBlO2Nhc2UtNDpHPTc7''@;'; put 'put ''YnJlYWsgZTtjYXNlIDA6Rz0xMjticmVhayBlO2Nhc2UtMTpHPTEzO2JyZWFrIGU7Y2FzZS0yOkc9MTU7YnJlYWsgZTtjYXNlIDE1OjB8YVtSPj4yXSYmczIobCwwfGFbTT4+Ml0sbSxBKTticmVhaztjYXNlIDExOmlmKCEoMHxLOChsLDB8YVtNPj4yXSxtLEEpKSl7Yz0xO2JyZWFrIGV9YnJl''@;'; put 'put ''YWs7Y2FzZSAxMzppZighKDB8Ul8obCwwfGFbTT4+Ml0sbSxBKSkpe2M9MTticmVhayBlfWJyZWFrO2RlZmF1bHQ6Yz05O2JyZWFrIGV9c3dpdGNoKGFbaz4+Ml09Yz0wfGFbYj4+Ml0sMHxhW3c+PjJdKXtjYXNlIDI6Yz0zNTticmVhayBlO2Nhc2UgMzpHPTE4O2JyZWFrIGV9bT1jfWRve2lm''@;'; put 'put ''KDM9PSgwfEcpKXtpZigwfGFbUj4+Ml0pe2lmKHMyKGwsMHxhW00+PjJdLG0sQSksMj09KDB8YVt3Pj4yXSkpe2M9MzU7YnJlYWt9Yz0wfGFbYj4+Ml19YVtwPj4yXT1jLGM9MH1lbHNlIDc9PSgwfEcpPyhhW3A+PjJdPW0sYz0wKToxMj09KDB8Ryk/KGFbaz4+Ml09YyxjPTQpOjEzPT0oMHxH''@;'; put 'put ''KT8wfHVlW2wrNDgwPj4wXT9jPTU6KGFbcD4+Ml09bSxjPTApOjE1PT0oMHxHKT8wfHVlW2wrNDgwPj4wXT9jPTY6KGFbcD4+Ml09bSxjPTApOjE4PT0oMHxHKSYmKGFbcD4+Ml09YyxjPTApfXdoaWxlKDApO3JldHVybiBvZT1LLDB8Y31mdW5jdGlvbiBiQShsLGMsZixwLG0sQSl7bHw9MCxj''@;'; put 'put ''fD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBrLE0sRCxSLEcsSyxPZSxMZSxCZSxIZSxqZSxldCxHZSx3PTAsYj0wLHBlPTAsbWU9MCxiZT0wLHJ0PTA7R2U9b2Usb2U9b2UrMTZ8MCxldD1HZSs0fDAsSGU9R2UsYVsoamU9R2UrOHwwKT4+Ml09dz0wfGFbKGZ8PTApPj4yXSwoMHxhW2wrMTQ0Pj4y''@;'; put 'put ''XSk9PSgwfGMpPyhhWyhtZT1sKzI4NHwwKT4+Ml09dyxiZT1sKzI4OHwwKToobWU9YmU9MHxhW2wrMjk2Pj4yXSxiZT1iZSs0fDApLGFbbWU+PjJdPXcsYVtmPj4yXT0wLGs9Yys4fDAsTT1sKzYwfDAsT2U9bCs4MHwwLExlPWwrNHwwLEJlPWwrNDc2fDAsRD1jKzY4fDAsUj1sKzQ0fDAsRz1j''@;'; put 'put ''KzU2fDAsSz1sKzQ4fDA7ZTpmb3IoOzspe2I9MHxEMFsxMjcmYVtrPj4yXV0oYywwfGFbamU+PjJdLHAsZXQpLGFbYmU+PjJdPXc9MHxhW2V0Pj4yXSxwZT13O3Q6ZG97c3dpdGNoKDB8Yil7Y2FzZSA0MDpydD02O2JyZWFrIGU7Y2FzZSAwOnJ0PTIzO2JyZWFrIGU7Y2FzZS0yOnJ0PTI0O2Jy''@;'; put 'put ''ZWFrIGU7Y2FzZS00OmNhc2UtMTpydD0yNjticmVhayBlO2Nhc2UgNzppZigwfCh3PTB8YVtNPj4yXSkpe3VlW0hlPj4wXT0xMCxObFsxMjcmd10oMHxhW0xlPj4yXSxIZSwxKTticmVhayB0fTB8YVtPZT4+Ml0mJnMyKGwsYywwfGFbamU+PjJdLHBlKTticmVhaztjYXNlIDY6aWYoIShiPTB8''@;'; put 'put ''YVtNPj4yXSkpe2lmKCEoMHxhW09lPj4yXSkpYnJlYWsgdDtzMihsLGMsMHxhW2plPj4yXSxwZSk7YnJlYWsgdH1pZigwfHVlW0Q+PjBdKXtObFsxMjcmYl0oMHxhW0xlPj4yXSxwZT0wfGFbamU+PjJdLHctcGV8MCk7YnJlYWsgdH1mb3Iodz1wZTthW0hlPj4yXT1hW1I+PjJdLHBlPTB8TDFb''@;'; put 'put ''MTI3JmFbRz4+Ml1dKGMsamUsdyxIZSwwfGFbSz4+Ml0pLGFbYmU+PjJdPWFbZXQ+PjJdLE5sWzEyNyZiXSgwfGFbTGU+PjJdLHc9MHxhW1I+PjJdLCgwfGFbSGU+PjJdKS13fDApLCEocGU+Pj4wPDIpOylhW21lPj4yXT1hW2plPj4yXSx3PTB8YVtldD4+Ml07YnJlYWs7ZGVmYXVsdDpydD0y''@;'; put 'put ''ODticmVhayBlfX13aGlsZSgwKTtzd2l0Y2goYVtqZT4+Ml09cGU9MHxhW2V0Pj4yXSxhW21lPj4yXT1wZSwwfGFbQmU+PjJdKXtjYXNlIDM6cnQ9MzA7YnJlYWsgZTtjYXNlIDI6dz0zNTticmVhayBlfX1yZXR1cm4gNj09KDB8cnQpPygodz0wfGFbbCs3Nj4+Ml0pP25vWzEyNyZ3XSgwfGFb''@;'; put 'put ''TGU+PjJdKTowfGFbT2U+PjJdJiZzMihsLGMsMHxhW2plPj4yXSxwZSksYVtmPj4yXT13PTB8YVtldD4+Ml0sYVttPj4yXT13LHc9Mj09KDB8YVtCZT4+Ml0pPzM1OjApOjIzPT0oMHxydCk/KGFbbWU+PjJdPXcsdz00KToyND09KDB8cnQpP0E8PDI0Pj4yND8oYVttPj4yXT1hW2plPj4yXSx3''@;'; put 'put ''PTApOnc9NjoyNj09KDB8cnQpP0E8PDI0Pj4yND8oYVttPj4yXT1hW2plPj4yXSx3PTApOnc9MjA6Mjg9PSgwfHJ0KT8oYVttZT4+Ml09dyx3PTIzKTozMD09KDB8cnQpJiYoYVttPj4yXT1hW2V0Pj4yXSx3PTApLG9lPUdlLDB8d31mdW5jdGlvbiBfQShsLGMsZixwKXtyZXR1cm4gMD09KDB8''@;'; put 'put ''KGM9MHxBQShsfD0wLDEsMHxhW2wrMTQ0Pj4yXSxjfD0wLGZ8PTAscHw9MCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpKSkmJigwfEUzKGwpKTw8MjQ+PjI0PT0wJiYoYz0xKSwwfGN9ZnVuY3Rpb24gRTMobCl7dmFyIFIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2Zv''@;'; put 'put ''cihSPTE2KyhsfD0wKXwwLGw9bCszNjB8MDs7KXtpZighKGw9MHxhW2w+PjJdKSl7bD0xO2JyZWFrfWlmKCgwfChmPTB8YVsoRD1sKzR8MCk+PjJdKSk9PSgwfChwPShtPTB8YVsoaz1sKzM2fDApPj4yXSkrKGI9MSsoMHxhW2wrMjQ+PjJdKXwwKXwwKSkpe2w9MTticmVha31pZigoMHwoQT0o''@;'; put 'put ''Yz0wfGFbKE09bCs4fDApPj4yXSkrYnwwKSk+KCgwfGFbKHc9bCs0MHwwKT4+Ml0pLW18MCkpe2lmKCEocD0wfFJpWzEyNyZhW1I+PjJdXShtLEEpKSl7bD0wO2JyZWFrfSgwfGFbKGM9bCsxMnwwKT4+Ml0pPT0oMHwobT0wfGFbaz4+Ml0pKSYmKGFbYz4+Ml09cCksMHwoZj0wfGFbKGM9bCsx''@;'; put 'put ''NnwwKT4+Ml0pJiYoYVtjPj4yXT1wKyhmLW0pKSxhW2s+PjJdPXAsYVt3Pj4yXT1wK0EscD1wK2J8MCxmPTB8YVtEPj4yXSxjPTB8YVtNPj4yXX1EbygwfHAsMHxmLDB8YyksYVtEPj4yXT1wfXJldHVybiAwfGx9ZnVuY3Rpb24gUW0obCxjKXtjfD0wO3ZhciBwLG0sZj0wLEE9MCx3PTA7Zm9y''@;'; put 'put ''KHA9MTIrKGx8PTApfDAsbT1sKzh8MDs7KXtpZigoMHwoZj0wfGFbcD4+Ml0pKT09KDB8YVttPj4yXSkpe2lmKCEoKDB8UmwobCkpPDwyND4+MjQpKXtjPTA7YnJlYWt9Zj0wfGFbcD4+Ml19aWYodz0wfHVlW2M+PjBdLGFbcD4+Ml09ZisxLHVlW2Y+PjBdPXcsISgwfHVlW2M+PjBdKSl7QT02''@;'; put 'put ''O2JyZWFrfWM9YysxfDB9cmV0dXJuIDY9PSgwfEEpJiYoYz0wfGFbKHc9bCsxNnwwKT4+Ml0sYVt3Pj4yXT1hW3A+PjJdKSwwfGN9ZnVuY3Rpb24gSm0obCxjKXt2YXIgdyxiLGssTSxELGY9MCxwPTAsbT0wLEE9MCxSPTA7Yj04MCsoUj0wfGFbMzUyKyhsfD0wKT4+Ml0pfDAsaz1SKzkyfDAs''@;'; put 'put ''TT1SKzg4fDAsRD1SKzYwfDAsUj1SKzk2fDAsdz00KyhjfD0wKXwwLEE9MHxhW2M+PjJdO2U6Zm9yKDs7KXtzd2l0Y2goMHx1ZVtBPj4wXSl7Y2FzZSAwOmY9MTticmVhayBlO2Nhc2UgNTg6Zm9yKG09MHxhW2M+PjJdO3A9KDB8KGY9MHxhW2s+PjJdKSk9PSgwfGFbTT4+Ml0pLCgwfG0pIT0o''@;'; put 'put ''MHxBKTspe2lmKHApe2lmKCEoKDB8UmwoYikpPDwyND4+MjQpKXtmPTA7YnJlYWsgZX1mPTB8YVtrPj4yXX1wPTB8dWVbbT4+MF0sYVtrPj4yXT1mKzEsdWVbZj4+MF09cCxtPW0rMXwwfWlmKHApe2lmKCEoKDB8UmwoYikpPDwyND4+MjQpKXtmPTA7YnJlYWsgZX1mPTB8YVtrPj4yXX1pZihh''@;'; put 'put ''W2s+PjJdPWYrMSx1ZVtmPj4wXT0wLCEoZj0wfF8xKGwsRCwwfGFbUj4+Ml0sOCkpKXtmPTA7YnJlYWsgZX0oMHxhW2Y+PjJdKT09KDB8KHA9MHxhW1I+PjJdKSk/YVtSPj4yXT1hW2s+PjJdOmFbaz4+Ml09cCxhW3c+PjJdPWZ9QT1BKzF8MH1yZXR1cm4gMHxmfWZ1bmN0aW9uIGI2KGwsYyxm''@;'; put 'put ''LHAsbSl7bHw9MCxmfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wO2s9MHx1ZVsocHw9MCk+PjBdLEE9MD09KDB8KHc9MHxhWyhjfD0wKT4+Ml0pKTtkb3tpZihrPDwyND4+MjQpaWYoQXx8MTIwIT0oMHx1ZVt3Pj4wXSl8fDEwOSE9KDB8dWVbdysxPj4w''@;'; put 'put ''XSl8fDEwOCE9KDB8dWVbdysyPj4wXSkpRD0wLGI9MTE7ZWxzZXtpZigoQT0wfHVlW3crMz4+MF0pPDwyND4+MjQ9PTExMCYmMTE1PT0oMHx1ZVt3KzQ+PjBdKSYmMD09KDB8dWVbdys1Pj4wXSkpe0E9Mzk7YnJlYWt9RD1BPDwyND4+MjQ9PTAmMSxiPTExfWVsc2UgQT8oRD0wLGI9MTEpOkE9''@;'; put 'put ''Mjh9d2hpbGUoMCk7ZTpkb3tpZigxMT09KDB8Yikpe2ZvcihNPUQ8PDI0Pj4yNCE9MCxBPTEsdz0xLFI9MDtiPXc8PDI0Pj4yNCE9MCxrPDwyND4+MjQ7KXtkb3tpZihiKXtpZigoMHxSKTw9MzYmJms8PDI0Pj4yND09KDB8dWVbMTQyMjU3K1I+PjBdKSlicmVhazt3PTB9ZWxzZSB3PTB9d2hp''@;'; put 'put ''bGUoMCk7ZG97aWYoIShNfEE8PDI0Pj4yND09MCkpe2lmKCgwfFIpPD0yOSYmazw8MjQ+PjI0PT0oMHx1ZVsxNDIyOTQrUj4+MF0pKWJyZWFrO0E9MH19d2hpbGUoMCk7Uj1rPVIrMXwwLGs9MHx1ZVtwK2s+PjBdfWlmKCgyNTUmRHwwKSE9KGImMzY9PSgwfFIpJjF8MCkpe0E9TT8zODo0MDti''@;'; put 'put ''cmVha31pZihBPDwyND4+MjQhPTAmMjk9PSgwfFIpKUE9NDA7ZWxzZXtSPVIrKDAhPSgwfHVlWyhHPWwrNDY4fDApPj4wXSkmMSl8MCxiPTB8YVsoQT1sKzM3MnwwKT4+Ml07ZG97aWYoIWIpe2lmKCEodz0wfHBhWzYzJmFbKEE9bCsxMnwwKT4+Ml1dKDI4KSkpe0E9MTticmVhayBlfWlmKEQ9''@;'; put 'put ''MHxwYVs2MyZhW0E+PjJdXShiPVIrMjR8MCksYVt3KzE2Pj4yXT1ELEQpe2FbdysyND4+Ml09YixiPXc7YnJlYWt9bm9bMTI3JmFbbCsyMD4+Ml1dKHcpLEE9MTticmVhayBlfWlmKCgwfFIpPigwfGFbKHc9YisyNHwwKT4+Ml0pKXtpZighKEQ9MHxSaVsxMjcmYVtsKzE2Pj4yXV0oMHxhWyhr''@;'; put 'put ''PWIrMTZ8MCk+PjJdLE09UisyNHwwKSkpe0E9MTticmVhayBlfWFbaz4+Ml09RCxhW3c+PjJdPU19YVtBPj4yXT1hW2IrND4+Ml19d2hpbGUoMCk7YVtiKzIwPj4yXT1SLERvKDB8YVsodz1iKzE2fDApPj4yXSwwfHAsMHxSKSwoQT0wfHVlW0c+PjBdKTw8MjQ+PjI0JiYodWVbKDB8YVt3Pj4y''@;'; put 'put ''XSkrKFIrLTEpPj4wXT1BKSxhW2I+PjJdPWMsYVtiKzEyPj4yXT1mLGFbYis4Pj4yXT1hWyh3PWMrNHwwKT4+Ml0sYVt3Pj4yXT1BPTA9PSgwfHVlW3A+PjBdKSYmKDE1MisoMHxhW2wrMzUyPj4yXSl8MCk9PSgwfGMpPzA6YixhW2IrND4+Ml09YVttPj4yXSxhW20+PjJdPWIsMCE9KDB8Zikm''@;'; put 'put ''JjAhPSgwfChLPTB8YVtsKzEwMD4+Ml0pKSYmTmxbMTI3JktdKDB8YVtsKzQ+PjJdLDB8YVtjPj4yXSwwfGFbdz4+Ml0/cDowKSxBPTB9fX13aGlsZSgwKTtyZXR1cm4gMHxBfWZ1bmN0aW9uIEV4KGwsYyl7dmFyIGY7bHw9MCxhWyhmPWN8PTApPj4yXT0wLGFbZis0Pj4yXT0wLGFbKGM9Yys4''@;'; put 'put ''fDApPj4yXT0wfGZ1bmN0aW9uIGhQKGwpe2x8PTA7Zm9yKHZhciBjPTA7Yz0wfGFbbCs0NzI+PjJdOylsPWM7cmV0dXJuIDB8YVtsKzQ5Mj4+Ml19KGwpLGFbYys0Pj4yXT0wfWZ1bmN0aW9uIFhtKGwsYyl7dmFyIGY9MCxwPTAsbT0wLEE9MDtBPTE5MzY2ODIzNDFeYVs0KyhmPWN8PTApPj4y''@;'; put 'put ''XSxhWyhwPWx8PTApPj4yXT0xODg2NjEwODA1XmFbZj4+Ml0sYVtwKzQ+PjJdPUEsZj0xNjg1MDI1Mzc3XmFbNCsoQT1wPWMrOHwwKT4+Ml0sYVsobT1sKzh8MCk+PjJdPTE4NTIwNzU4ODVeYVtBPj4yXSxhW20rND4+Ml09ZixjPTE4MTk4OTU2NTNeYVsobT1jKSs0Pj4yXSxhWyhmPWwrMTZ8''@;'; put 'put ''MCk+PjJdPTE4NTIxNDIxNzdeYVttPj4yXSxhW2YrND4+Ml09YyxmPTE5NTI4MDE4OTBeYVtwKzQ+PjJdLGFbKGM9bCsyNHwwKT4+Ml09MjAzNzY3MTI4M15hW3A+PjJdLGFbYys0Pj4yXT1mLGFbbCs0MD4+Ml09bCszMixhWyhjPWwrNDh8MCk+PjJdPTAsYVtjKzQ+PjJdPTB9ZnVuY3Rpb24g''@;'; put 'put ''Q0EobCxjLGYpe3ZhciBtLEEsdyxiLGssTSxELFIsRyxLLHBlLG1lLGJlLHA9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wO0Q9KGN8PTApKyhmfD0wKXwwLFI9NDArKGx8PTApfDAsRz1sKzQwfDAsSz1sKzMyfDAscGU9bCszM3wwLG1lPWwrMzR8MCxiZT1sKzM1fDAsbT1s''@;'; put 'put ''KzM2fDAsQT1sKzM3fDAsdz1sKzM4fDAsYj1sKzM5fDAsaz1sKzI0fDAsTT1sKzQ4fDAsZj1jO2Rve2Zvcig7Oyl7aWYocD0wfGFbUj4+Ml0sZj4+PjA+PUQ+Pj4wKXtjPTA7YnJlYWt9aWYocD4+PjA+PUc+Pj4wKXtjPTE7YnJlYWt9Yz0wfHVlW2Y+PjBdLGFbUj4+Ml09cCsxLHVlW3A+PjBd''@;'; put 'put ''PWMsZj1mKzF8MH1pZihwPj4+MDxHPj4+MClicmVhaztldD0wfGJ0W0s+PjBdLHJ0PTB8Y3MoMHxidFtwZT4+MF0sMCw4KSxwPU9uLGplPTB8Y3MoMHxidFttZT4+MF0sMCwxNikscHw9T24sQmU9MHxjcygwfGJ0W2JlPj4wXSwwLDI0KSxwPXB8T258MHxidFttPj4wXSxPZT0wfGNzKDB8YnRb''@;'; put 'put ''QT4+MF0sMCw0MCkscHw9T24sSGU9MHxjcygwfGJ0W3c+PjBdLDAsNDgpLHB8PU9uLExlPTB8Y3MoMHxidFtiPj4wXSwwLDU2KSxMZXw9cnR8ZXR8amV8QmV8T2V8SGUsT2U9KHB8PU9uKV5hWyhIZT1rKSs0Pj4yXSxhWyhCZT1rKT4+Ml09TGVeYVtIZT4+Ml0sYVtCZSs0Pj4yXT1PZSxHNChs''@;'; put 'put ''LDIpLHBePWFbKEJlPWwpKzQ+PjJdLGFbKE9lPWwpPj4yXT1hW0JlPj4yXV5MZSxhW09lKzQ+PjJdPXAsYVtSPj4yXT1LLE9lPTB8SGwoMHxhWyhPZT1NKT4+Ml0sMHxhW09lKzQ+PjJdLDgsMCksYVsocD1NKT4+Ml09T2UsYVtwKzQ+PjJdPU9ufXdoaWxlKGMpfWZ1bmN0aW9uIEttKGwpe2x8''@;'; put 'put ''PTA7dmFyIGM9MDtmb3IoYz0wOzB8dWVbbD4+MF07KWM9YysxfDAsbD1sKzF8MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIEZfKGwpe3ZhciB3LGM9MCxmPTAscD0wLG09MCxBPTA7c3dpdGNoKGY9MHxjcygwfChmPTB8SGwoMHxhWyhmPTQ4KyhsfD0wKXwwKT4+Ml0sMHxhW2YrND4+Ml0sMHwoQT0o''@;'; put 'put ''MHxhW2wrNDA+PjJdKS0ocD1sKzMyfDApfDApLDApKSwwfE9uLDU2KSxjPU9uLEE8PDI0Pj4yNHwwKXtjYXNlIDc6Zj0wfGNzKDB8YnRbbCszOD4+MF0sMCw0OCl8ZixjfD1PbixtPTM7YnJlYWs7Y2FzZSA2Om09MzticmVhaztjYXNlIDU6bT00O2JyZWFrO2Nhc2UgNDptPTU7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAzOm09NjticmVhaztjYXNlIDI6bT03O2JyZWFrO2Nhc2UgMTptPTh9cmV0dXJuIDM9PSgwfG0pJiYoZnw9QT0wfGNzKDB8YnRbbCszNz4+MF0sMCw0MCksY3w9T24sbT00KSw0PT0oMHxtKSYmKGN8PTB8YnRbbCszNj4+MF0sbT01KSw1PT0oMHxtKSYmKGZ8PUE9MHxjcygwfGJ0W2wrMzU+''@;'; put 'put ''PjBdLDAsMjQpLGN8PU9uLG09NiksNj09KDB8bSkmJihmfD1BPTB8Y3MoMHxidFtsKzM0Pj4wXSwwLDE2KSxjfD1PbixtPTcpLDc9PSgwfG0pJiYoQT0wfGNzKDB8YnRbbCszMz4+MF0sMCw4KSxjfD1PbixmfD1BLG09OCksOD09KDB8bSkmJihmPTB8ZnxidFtwPj4wXSksbT1hWzQrKHc9QT1s''@;'; put 'put ''KzI0fDApPj4yXV5jLGFbKHA9QSk+PjJdPWFbdz4+Ml1eZixhW3ArND4+Ml09bSxHNChsLDIpLGNePWFbKHA9bCkrND4+Ml0sYVsobT1sKT4+Ml09YVtwPj4yXV5mLGFbbSs0Pj4yXT1jLGY9MHxhWzQrKGM9bT1sKzE2fDApPj4yXSxhWyhwPW0pPj4yXT0yNTVeYVtjPj4yXSxhW3ArND4+Ml09''@;'; put 'put ''ZixHNChsLDQpLHA9bCxPbj1hWzQrKGw9bCs4fDApPj4yXV5hW3ArND4+Ml1eYVttKzQ+PjJdXmFbQSs0Pj4yXSxhW2w+PjJdXmFbcD4+Ml1eYVttPj4yXV5hW0E+PjJdfDB9ZnVuY3Rpb24gRzQobCxjKXtjfD0wO3ZhciBwLG0sQSxmPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9''@;'; put 'put ''MCxwZT0wLG1lPTA7Zm9yKHA9OCsobHw9MCl8MCxtPWwrMjR8MCxBPWwrMTZ8MCxmPTA7ISgoMHxmKT49KDB8YykpOylLPTB8SGwoMHxhWyhLPWwpPj4yXSwwfGFbSys0Pj4yXSwwfChHPTB8YVsodz1wKT4+Ml0pLDB8KHc9MHxhW3crND4+Ml0pKSxNPU9uLFI9MHxjcygwfEcsMHx3LDEzKSxE''@;'; put 'put ''PU9uLHc9KFJ8KHc9MHxadSgwfEcsMHx3LDUxKSkpXkssRD0oRHxPbileTSxrPTB8SGwoMHxhWyhrPUEpPj4yXSwwfGFbays0Pj4yXSwwfChHPTB8YVsoUj1tKT4+Ml0pLDB8KFI9MHxhW1IrND4+Ml0pKSxiPU9uLG1lPTB8Y3MoMHxHLDB8UiwxNikscGU9T24sSz0wfEhsKDB8TSwwfEssMHwo''@;'; put 'put ''Uj0obWV8KFI9MHxadSgwfEcsMHxSLDQ4KSkpXmspLDB8KHBlPShwZXxPbileYikpLE09T24sYVsobWU9bCk+PjJdPUssYVttZSs0Pj4yXT1NLG1lPTB8Y3MoMHxSLDB8cGUsMjEpLEc9T24scGU9MHxadSgwfFIsMHxwZSw0MyksYVsoUj1tKT4+Ml09KG1lfHBlKV5LLGFbUis0Pj4yXT0oR3xP''@;'; put 'put ''bileTSxiPTB8SGwoMHxrLDB8YiwwfHcsMHxEKSxrPU9uLFI9MHxjcygwfHcsMHxELDE3KSxNPU9uLEQ9MHxadSgwfHcsMHxELDQ3KSxhWyh3PXApPj4yXT0oUnxEKV5iLGFbdys0Pj4yXT0oTXxPbileayxhWyh3PUEpPj4yXT1rLGFbdys0Pj4yXT1iLGY9ZisxfDB9ZnVuY3Rpb24geHgobCxj''@;'; put 'put ''LGYscCxtLEEpe3B8PTAsbXw9MDt2YXIgUixHLEsscGUsbWUsYmUsTGUsQmUsSGUsamUsZXQscnQsR2UsbHQsTXQsa3QsYXQsRXQsWnQsdXQsd3Qscm4seW4sdz0wLGI9MCxrPTAsTT0wLEQ9MCxPZT0wLEZuPTA7eW49b2Usb2U9b2UrMTZ8MCx1dD15bix3dD15bis0fDAsUj0xNisoY3w9MCl8''@;'; put 'put ''MCxHPWMrNDB8MCxLPTE0NCsobHw9MCl8MCxwZT1sKzI4NHwwLG1lPShmfD0wKTw8MjQ+PjI0PT0wLGJlPTEyKyhBfD0wKXwwLExlPUErMTZ8MCxCZT1BKzh8MCxIZT1jKzQ0fDAsamU9Yys2NHwwLGV0PWwrNDM2fDAscnQ9bCs0NTJ8MCxHZT1sKzQ0OHwwLGx0PSg4MCsocm49MHxhW2wrMzUy''@;'; put 'put ''Pj4yXSl8MCk9PSgwfEEpLE10PWwrMjY4fDAsa3Q9cm4rMTMwfDAsYXQ9cm4rMTI5fDAsRXQ9bCsyOTZ8MCxadD1sKzIyNHwwLHc9MDtlOmZvcig7Oyl7dDpmb3IoOzspe3N3aXRjaCgwfEQwWzEyNyZhW1I+PjJdXShjLHAsbSx1dCkpe2Nhc2UtNDp3PTAsRD02MTticmVhayBlO2Nhc2UgMDpE''@;'; put 'put ''PTQ7YnJlYWsgZTtjYXNlLTE6RD02O2JyZWFrIGU7Y2FzZSA2OkQ9MjE7YnJlYWsgdDtjYXNlLTM6RD0yMjticmVhayB0O2Nhc2UgNzpjYXNlIDM5OkQ9MjM7YnJlYWsgdDtjYXNlIDEwOmI9MHxSaVsxMjcmYVtHPj4yXV0oYyxwKTtuOmRve2lmKCgwfGIpPDApKDB8YVtLPj4yXSk9PSgwfGMp''@;'; put 'put ''PyhhW3BlPj4yXT1wLGI9MSx3PTE0KTooYj0xLHc9MTQpO2Vsc2V7aWYobWUmMzI9PSgwfGIpKXtpZigoMHxhW0xlPj4yXSk9PSgwfChrPTB8YVtiZT4+Ml0pKSl7Yj00O2JyZWFrfWlmKDMyPT0oMHx1ZVtrKy0xPj4wXSkpe2I9NDticmVha319Zm9yKE09MHxDNihiLHd0KSxrPTA7Oyl7aWYo''@;'; put 'put ''KDB8ayk+PSgwfE0pKXtiPTA7YnJlYWsgbn1pZigoMHwoYj0wfGFbYmU+PjJdKSk9PSgwfGFbQmU+PjJdKSl7aWYoISgoMHxSbChBKSk8PDI0Pj4yNCkpe2I9MSx3PTE7YnJlYWsgbn1iPTB8YVtiZT4+Ml19Rm49MHx1ZVt3dCtrPj4wXSxhW2JlPj4yXT1iKzEsdWVbYj4+MF09Rm4saz1rKzF8''@;'; put 'put ''MH19fXdoaWxlKDApO3N3aXRjaCg3JmIpe2Nhc2UgNDpjYXNlIDA6YnJlYWsgdH1icmVhaztjYXNlIDk6aWYoKGI9MjU1JigwfG1pWzYzJmFbSGU+PjJdXShjLHArKGI9MHxhW2plPj4yXSl8MCwwLWIrKDB8YVt1dD4+Ml0pfDApKSk8PDI0Pj4yNCl7RD0zMTticmVhayB0fWlmKCEoYj0wfGwy''@;'; put 'put ''KGV0LGMscCsoYj0wfGFbamU+PjJdKXwwLDAtYisoMHxhW3V0Pj4yXSl8MCkpKXt3PTEsRD02MTticmVhayBlfU09MHxfMShsLHJuLGIsMCksYVtHZT4+Ml09YVtydD4+Ml07ZG97aWYobHQpe2lmKCEoMHxhW010Pj4yXSkpe2lmKE0pYnJlYWs7YnJlYWsgdH1pZigwfHVlW2t0Pj4wXSl7aWYo''@;'; put 'put ''Yj0wIT0oMHxNKSwwfGFbRXQ+PjJdKXtPZT1iLEQ9NDc7YnJlYWt9RD00NTticmVha31pZihiPTAhPSgwfE0pLDB8dWVbYXQ+PjBdKXtPZT1iLEQ9NDc7YnJlYWt9RD00NTticmVha31pZigwfHVlW2F0Pj4wXSl7aWYoYj0wIT0oMHxNKSwwfHVlW2t0Pj4wXSl7RD00NTticmVha31PZT1iLEQ9''@;'; put 'put ''NDc7YnJlYWt9aWYoTSl7RD00NjticmVha313PTExLEQ9NjE7YnJlYWsgZX13aGlsZSgwKTtpZig0NT09KDB8RCkpe2lmKCFiKXt3PTExLEQ9NjE7YnJlYWsgZX1EPTQ2fWVsc2UgaWYoNDc9PSgwfEQpJiYoRD0wLCFPZSkpYnJlYWsgdDtpZig0Nj09KDB8RCkmJihEPTAsMD09KDB8dWVbTSsz''@;'; put 'put ''ND4+MF0pKSl7dz0yNCxEPTYxO2JyZWFrIGV9aWYoMHx1ZVsoaz1NKzMyfDApPj4wXSl7RD00OTticmVhayBlfWlmKDB8YVtNKzI4Pj4yXSl7RD01MjticmVhayBlfWlmKCEoYj0wfGFbTSs0Pj4yXSkpe0Q9NTU7YnJlYWsgZX1pZihNPWIrKDB8YVtNKzg+PjJdKXwwLHVlW2s+PjBdPTEsTT0w''@;'; put 'put ''fHh4KGwsMHxhW1p0Pj4yXSxmLGIsTSxBKSx1ZVtrPj4wXT0wLGI9MD09KDB8TSkpYnJlYWsgdDtiPTEmKDFeYiksdz1NO2JyZWFrO2RlZmF1bHQ6RD01ODticmVhayBlfWlmKGIpYnJlYWsgZX1pZigyMT09KDB8RCkpe2lmKEQ9MCwhKDB8cEEoQSxjLHAsMHxhW3V0Pj4yXSkpKXt3PTEsRD02''@;'; put 'put ''MTticmVha319ZWxzZSBpZigyMj09KDB8RCkpYVt1dD4+Ml09cCsoMHxhW2plPj4yXSksRD0yMztlbHNlIGlmKDMxPT0oMHxEKSl7aWYoRD0wLCgwfChwPTB8YVtiZT4+Ml0pKT09KDB8YVtCZT4+Ml0pKXtpZighKCgwfFJsKEEpKTw8MjQ+PjI0KSl7dz0xLEQ9NjE7YnJlYWt9cD0wfGFbYmU+''@;'; put 'put ''PjJdfWFbYmU+PjJdPXArMSx1ZVtwPj4wXT1ifWRve2lmKDIzPT0oMHxEKSl7aWYoRD0wLHA9MHxhW2JlPj4yXSxtZSYmKCgwfGFbTGU+PjJdKT09KDB8cCl8fDMyPT0oMHx1ZVtwKy0xPj4wXSkpKWJyZWFrO2lmKCgwfHApPT0oMHxhW0JlPj4yXSkpe2lmKCEoKDB8UmwoQSkpPDwyND4+MjQp''@;'; put 'put ''KXt3PTEsRD02MTticmVhayBlfXA9MHxhW2JlPj4yXX1hW2JlPj4yXT1wKzEsdWVbcD4+MF09MzJ9fXdoaWxlKDApO3A9MHxhW3V0Pj4yXX1yZXR1cm4gND09KDB8RCk/KDB8YVtLPj4yXSk9PSgwfGMpPyhhW3BlPj4yXT1hW3V0Pj4yXSx3PTQsRD02MSk6KHc9NCxEPTYxKTo2PT0oMHxEKT8o''@;'; put 'put ''MHxhW0s+PjJdKT09KDB8Yyk/KGFbcGU+PjJdPXAsdz00LEQ9NjEpOih3PTQsRD02MSk6NDk9PSgwfEQpPygwfGFbSz4+Ml0pPT0oMHxjKT8oYVtwZT4+Ml09cCx3PTEyLEQ9NjEpOih3PTEyLEQ9NjEpOjUyPT0oMHxEKT8oMHxhW0s+PjJdKT09KDB8Yyk/KGFbcGU+PjJdPXAsdz0xNSxEPTYx''@;'; put 'put ''KToodz0xNSxEPTYxKTo1NT09KDB8RCk/KDB8YVtLPj4yXSk9PSgwfGMpPyhhW3BlPj4yXT1wLHc9MTYsRD02MSk6KHc9MTYsRD02MSk6NTg9PSgwfEQpJiYoKDB8YVtLPj4yXSk9PSgwfGMpPyhhW3BlPj4yXT1wLHc9MjMsRD02MSk6KHc9MjMsRD02MSkpLG9lPXluLDB8d31mdW5jdGlvbiBI''@;'; put 'put ''XyhsKXt2YXIgYztyZXR1cm4gYz04KyhsfD0wKXwwLDB8KCgwfGwpPDE/MDooMHxjKT4wP2M6MCl9ZnVuY3Rpb24gTl8obCxjKXt2YXIgZixwLG07cmV0dXJuIGN8PTAsZj1vZSxvZT1vZSs4MHwwLHA9ZisxNnwwLEV4KGx8PTAsbT1mKSxYbShwLG0pLENBKHAsYywwfEttKGMpKSxjPTB8Rl8o''@;'; put 'put ''cCksb2U9ZiwwfGN9ZnVuY3Rpb24gZFAobCxjKXtsfD0wLGN8PTA7Zm9yKHZhciBmPTA7Oyl7aWYoKGY9MHx1ZVtsPj4wXSk8PDI0Pj4yNCE9KDB8dWVbYz4+MF0pKXtjPTA7YnJlYWt9aWYoIShmPDwyND4+MjQpKXtjPTE7YnJlYWt9Yz1jKzF8MCxsPWwrMXwwfXJldHVybiAwfGN9ZnVuY3Rp''@;'; put 'put ''b24gJG0obCxjKXtjfD0wO3ZhciB3LGssZj0wLHA9MCxtPTAsQT0wLGI9MDtrPW9lLG9lPW9lKzEwNDB8MCx3PWsscD0wfGFbMTI0KyhsfD0wKT4+Ml07ZTpkb3tpZihwKXtmb3IoZj0wOzI1NiE9KDB8Zik7KWFbdysoZjw8Mik+PjJdPS0xLGY9ZisxfDA7YVsobT13KzEwMjh8MCk+PjJdPTAs''@;'; put 'put ''YVsoYj13KzEwMjR8MCk+PjJdPTAsYVsoQT13KzEwMzJ8MCk+PjJdPTA7ZG97aWYoMHxtaVs2MyZwXSgwfGFbbCsyNDQ+PjJdLGMsdykpe2lmKGY9MHxwYVs2MyYocD0wfGFbbCsxMj4+Ml0pXShmPTE5MDgpLGFbbCsyMzY+PjJdPWYsZil7aWYoIShmPTB8RDBbMTI3Jih1ZVtsKzIzMj4+MF08''@;'; put 'put ''PDI0Pj4yND82NTo2NCldKGYsdywwfGFbbT4+Ml0sMHxhW2I+PjJdKSkpYnJlYWs7YVtsKzI0MD4+Ml09YVtiPj4yXSxhW2wrMjQ4Pj4yXT1hW0E+PjJdLGFbbCsxNDQ+PjJdPWYsZj0wfWVsc2UoZj0wfGFbQT4+Ml0pJiZub1sxMjcmZl0oMHxhW2I+PjJdKSxmPTE7YnJlYWsgZX19d2hpbGUo''@;'; put 'put ''MCk7MHwoZj0wfGFbQT4+Ml0pJiZub1sxMjcmZl0oMHxhW2I+PjJdKSxmPTE4fWVsc2UgZj0xOH13aGlsZSgwKTtyZXR1cm4gb2U9aywwfGZ9ZnVuY3Rpb24geDMobCxjKXtjfD0wLHVlWzQrKGx8PTApPj4wXT0wLGFbbCs4Pj4yXT0wLGFbbCsxMj4+Ml09MCxhW2w+PjJdPTAsYVtsKzE2Pj4y''@;'; put 'put ''XT1jfWZ1bmN0aW9uIGtBKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7bT0wPT0oMHwobHw9MCkpO2U6ZG97aWYobXwoMHxmKTwwfHwwPT0oMHxjKSYwIT0oMHxmKSl3PTM7ZWxzZXtzd2l0Y2goMHxhWyhBPWwrNDc2fDApPj4yXSl7Y2FzZSAzOmFbbCsyODA+''@;'; put 'put ''PjJdPTMzLG09MDticmVhayBlO2Nhc2UgMjphW2wrMjgwPj4yXT0zNixtPTA7YnJlYWsgZTtjYXNlIDA6aWYoMD09KDB8YVtsKzQ3Mj4+Ml0pJiYoMHxJeChsKSk8PDI0Pj4yND09MCl7YVtsKzI4MD4+Ml09MSxtPTA7YnJlYWsgZX19aWYoYVtBPj4yXT0xLDB8Zil7aWYoIShtPTB8bVAobCxm''@;'; put 'put ''KSkpe209MDticmVha31EbygwfG0sMHxjLDB8ZiksbT0wfFNBKGwsZixwKTticmVha31pZih1ZVtsKzQ4MD4+MF09cCxwKXtpZihhWyhjPWwrMjkyfDApPj4yXT1iPTB8YVsobT1sKzI0fDApPj4yXSxhW2wrNDA+PjJdPXA9MHxhW2wrMjg+PjJdLHA9MHxEMFsxMjcmYVsoZj1sKzI3NnwwKT4+''@;'; put 'put ''Ml1dKGwsYixwLG0pLGFbbCsyODA+PjJdPXAsMHxwKXthW2wrMjg4Pj4yXT1hW2wrMjg0Pj4yXSxhW2Y+PjJdPTY2LG09MDticmVha31zd2l0Y2goMHxhW0E+PjJdKXtjYXNlIDM6RmFbMzEmYVs0OCsoYj0wfGFbbCsxNDQ+PjJdKT4+Ml1dKGIsMHxhW2M+PjJdLDB8YVttPj4yXSxsKzQwNHww''@;'; put 'put ''KSxhW2M+PjJdPWFbbT4+Ml0sbT0yO2JyZWFrIGU7Y2FzZSAxOmNhc2UgMDphW0E+PjJdPTIsbT0xO2JyZWFrIGU7ZGVmYXVsdDptPTE7YnJlYWsgZX19ZWxzZSBtPTF9fXdoaWxlKDApO3JldHVybiAzPT0oMHx3KSYmKG18fChhW2wrMjgwPj4yXT00MSksbT0wKSwwfG19ZnVuY3Rpb24gSXgo''@;'; put 'put ''bCl7dmFyIGM7cmV0dXJuIDB8YVsoYz00OTIrKGx8PTApfDApPj4yXXx8KGFbYz4+Ml09MHxmdW5jdGlvbiB2UCgpe3ZhciBjLGw9MCxmPTA7cmV0dXJuIGM9b2Usb2U9b2UrMTZ8MCwwfGZ1bmN0aW9uIEFQKGwpe2x8PTA7dmFyIHAsbSxjPTAsZj0wLEE9MDtpZihtPW9lLG9lPW9lKzE2fDAs''@;'; put 'put ''KDB8KHA9MHxmdW5jdGlvbiBSdWUobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxBLHcscD0wLGI9MDtyZXR1cm4gdz1vZSxvZT1vZSs0OHwwLEE9dysxNnwwLG09dyxwPXcrMzJ8MCw0MTk0MzY4JihjfD0wKT8oYVtwPj4yXT1mLGY9MHxhWyhiPTMrKDB8YVtwPj4yXSkmLTQpPj4yXSxhW3A+PjJd''@;'; put 'put ''PWIrNCxwPWYpOnA9MCxhW20+PjJdPWwsYVttKzQ+PjJdPTMyNzY4fGMsYVttKzg+PjJdPXAsMD09KDUyNDI4OCZjfDApfCgwfChwPTB8TDgoNSwwfG0pKSk8MHx8KGFbQT4+Ml09cCxhW0ErND4+Ml09MixhW0ErOD4+Ml09MSxNNCgyMjEsMHxBKSksYj0wfElmKHApLG9lPXcsMHxifSgxNDIz''@;'; put 'put ''NjUsMCxtKSkpPDApYz0wO2Vsc2V7Zm9yKGM9MDs7KXtpZihmPShBPTB8Z2NlKHAsbCtjfDAsNC1jfDApKStjfDAsKDB8QSk+MCl7aWYoIShmPj4+MDw0KSl7Yz0xO2JyZWFrfWM9Zn1pZig0IT0oMHxhWzQ3NjQzXSkpe2M9MDticmVha319IWZ1bmN0aW9uIGxjZShsKXt2YXIgYyxmO2M9b2Us''@;'; put 'put ''b2U9b2UrMTZ8MCxhWyhmPWMpPj4yXT0wfGMkKGx8PTApLGw9MHxJZigtND09KDB8KGw9MHxoZig2LDB8ZikpKT8wOmwpLG9lPWN9KHApfXJldHVybiBvZT1tLDB8Y30obD1jKT9sPTB8cW0oMTQyMzY1LDB8YVtsPj4yXSk6KGY9MHxmdW5jdGlvbiBfNigpe3ZhciBsLGM7cmV0dXJuIGM9b2Us''@;'; put 'put ''b2U9b2UrMTZ8MCwwfE84KDB8KGw9YyksMCk/KEJyKDE0MjM5MCwxNDI0MTIsODE5LDE0MjQyMyksMCk6KG9lPWMsMHxhW2wrND4+Ml0pfSgpLGY9KDB8Y1ooKSleZixhW2w+PjJdPWYsbD0wfHFtKDE0MjM3OCwwfHZyKGYsMjE0NzQ4MzY0NykpKSxvZT1jLDB8bH0oKSksbD0wfHVlW2wrMjMy''@;'; put 'put ''Pj4wXT8wfGZ1bmN0aW9uIFZfKGwsYyl7Y3w9MDt2YXIgYixrLE0sRCxSLEcsSyxwZSxtZSxmPTAscD0wLG09MCxBPTAsdz0wLGJlPTA7RD00MjQrKGx8PTApfDAsUj1sKzQyMHwwLEc9bCs0MTJ8MCxLPWwrNDI4fDAscGU9MTUyKyhNPTB8YVtsKzM1Mj4+Ml0pfDAsbWU9bCszNjh8MCxiPU0r''@;'; put 'put ''NjB8MCxrPU0rODB8MDtlOmZvcig7Oyl7QT1jO3Q6Zm9yKDs7KXtpZighKDB8dWVbYz4+MF0pKXtjPTE7YnJlYWsgZX1zd2l0Y2goKHA9MHx1ZVtBPj4wXSk8PDI0Pj4yNCl7Y2FzZSAwOmNhc2UgMTI6YmU9NTticmVhayB0O2Nhc2UgNjE6YnJlYWsgdH1pZigoMHwoZj0wfGFbRD4+Ml0pKT09''@;'; put 'put ''KDB8YVtSPj4yXSkpe2lmKCEoKDB8UmwoRykpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1mPTB8YVtEPj4yXSxwPTB8dWVbQT4+MF19YVtEPj4yXT1mKzEsdWVbZj4+MF09cCxBPUErMXwwfWlmKDUhPSgwfGJlKSl7aWYoKDB8YVtLPj4yXSk9PSgwfChjPTB8YVtEPj4yXSkpKXA9cGU7ZWxzZXtp''@;'; put 'put ''ZigoMHxjKT09KDB8YVtSPj4yXSkpe2lmKCEoKDB8UmwoRykpPDwyND4+MjQpKXtjPTA7YnJlYWt9Yz0wfGFbRD4+Ml19aWYoYVtEPj4yXT1jKzEsdWVbYz4+MF09MCwhKHA9MHxfMShsLGIsMHxhW0s+PjJdLDgpKSl7Yz0wO2JyZWFrfWlmKGM9dz0wfGFbSz4+Ml0sKDB8KGY9MHxhW3A+PjJd''@;'; put 'put ''KSk9PSgwfHcpKXtpZih3PTB8UW0oayxmKSxhW3A+PjJdPXcsIXcpe2M9MDticmVha31jPTB8YVtLPj4yXX1hW0Q+PjJdPWN9dDpmb3IoOzspe3N3aXRjaChtPSgwfGMpPT0oMHxhW1I+PjJdKSwoZj0wfHVlWyh3PUErMXwwKT4+MF0pPDwyND4+MjQpe2Nhc2UgMDpjYXNlIDEyOmJyZWFrIHR9''@;'; put 'put ''aWYobSl7aWYoISgoMHxSbChHKSk8PDI0Pj4yNCkpe2M9MDticmVhayBlfWM9MHxhW0Q+PjJdLGY9MHx1ZVt3Pj4wXX1hW0Q+PjJdPWMrMSx1ZVtjPj4wXT1mLEE9dyxjPTB8YVtEPj4yXX1pZihtKXtpZighKCgwfFJsKEcpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrfWM9MHxhW0Q+PjJdfWlmKGFb''@;'; put 'put ''RD4+Ml09YysxLHVlW2M+PjBdPTAsMHxiNihsLHAsMCwwfGFbSz4+Ml0sbWUpKXtjPTA7YnJlYWt9YVtEPj4yXT1hW0s+PjJdLGM9MD09KDB8dWVbdz4+MF0pP3c6QSsyfDB9ZWxzZXtpZihiZT0wLCgwfChjPTB8YVtEPj4yXSkpPT0oMHxhW1I+PjJdKSl7aWYoISgoMHxSbChHKSk8PDI0Pj4y''@;'; put 'put ''NCkpe2M9MDticmVha31jPTB8YVtEPj4yXX1hW0Q+PjJdPWMrMSx1ZVtjPj4wXT0wLDB8KGM9MHxfMShsLE0sMHxhW0s+PjJdLDApKSYmKHVlW2MrMzI+PjBdPTEpLGM9MD09KDB8dWVbQT4+MF0pP0E6QSsxfDAsYVtEPj4yXT1hW0s+PjJdfX1yZXR1cm4gMHxjfShsLDE0MjMyNCk6MSwwfGx9''@;'; put 'put ''ZnVuY3Rpb24gbVAobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MDtlOmRve2lmKGwpe2lmKCgwfGMpPDApe2FbbCsyODA+PjJdPTEsZj0wO2JyZWFrfXN3aXRjaCgwfGFbbCs0NzY+PjJdKXtjYXNlIDM6''@;'; put 'put ''YVtsKzI4MD4+Ml09MzMsZj0wO2JyZWFrIGU7Y2FzZSAyOmFbbCsyODA+PjJdPTM2LGY9MDticmVhayBlO2RlZmF1bHQ6aWYoZj1wPTB8YVsoRz1sKzI4fDApPj4yXSwoKGs9MHxhWyhSPWwrMzJ8MCk+PjJdKS1wfDApPj0oMHxjKSlicmVhayBlO2lmKCgwfChwPShiPXAtKE09MHxhWyhwZT1s''@;'; put 'put ''KzI0fDApPj4yXSl8MCkrY3wwKSk8MCl7YVtsKzI4MD4+Ml09MSxmPTA7YnJlYWsgZX1wPShjPSh3PSgwfChBPU0tKG1lPW09MHxhWyhEPWwrOHwwKT4+Ml0pfDApKT4xMDI0KT8xMDI0OkEpK3B8MDtkb3tpZigoMHxwKT4oay1tZXwwKSl7Zj0wPT0oMHwoZj1rLU18MCkpPzEwMjQ6Zjtkb3tm''@;'; put 'put ''PDw9MX13aGlsZSgoMHxmKTwoMHxwKSYoMHxmKT4wKTtpZigoMHxmKTwxKXthW2wrMjgwPj4yXT0xLGY9MDticmVhayBlfWlmKCEocD0wfHBhWzYzJmFbbCsxMj4+Ml1dKGYpKSl7YVtsKzI4MD4+Ml09MSxmPTA7YnJlYWsgZX1pZihhW1I+PjJdPXArZixmPTB8YVtwZT4+Ml0pe0RvKDB8cCxm''@;'; put 'put ''KygwLShLPSgwfChLPShtZT1mKS0oMHxhW0Q+PjJdKXwwKSk8MTAyND9LOjEwMjQpKXwwLCgwfGFbRz4+Ml0pLW1lK0t8MCksbm9bMTI3JmFbbCsyMD4+Ml1dKDB8YVtEPj4yXSksYVtEPj4yXT1wLGFbRz4+Ml09Zj1wKygoMHxhW0c+PjJdKS0oMHxhW3BlPj4yXSkpK0t8MCxwPXArS3wwLEs9''@;'; put 'put ''MjI7YnJlYWt9YVtHPj4yXT1mPXArKDB8YVtHPj4yXSl8MCxhW0Q+PjJdPXAsSz0yMjticmVha313JiYobXAoMHxtLG0rKHA9QS1jfDApfDAsYytifDApLGFbRz4+Ml09Zj0oMHxhW0c+PjJdKSsocD0wLXB8MCl8MCxwPSgwfGFbcGU+PjJdKStwfDAsSz0yMil9d2hpbGUoMCk7MjI9PSgwfEsp''@;'; put 'put ''JiYoYVtwZT4+Ml09cCksYVtsKzI4OD4+Ml09MCxhW2wrMjg0Pj4yXT0wLGFbbCsyOTI+PjJdPTA7YnJlYWsgZX19ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBTQShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2U6ZG97aWYo''@;'; put 'put ''bCl7c3dpdGNoKDB8YVsocD1sKzQ3NnwwKT4+Ml0pe2Nhc2UgMzphW2wrMjgwPj4yXT0zMyxjPTA7YnJlYWsgZTtjYXNlIDI6YVtsKzI4MD4+Ml09MzYsYz0wO2JyZWFrIGU7Y2FzZSAwOmlmKDA9PSgwfGFbbCs0NzI+PjJdKSYmKDB8SXgobCkpPDwyND4+MjQ9PTApe2FbbCsyODA+PjJdPTEs''@;'; put 'put ''Yz0wO2JyZWFrIGV9fWlmKGFbcD4+Ml09MSxhWyhBPWwrMjkyfDApPj4yXT1iPTB8YVsobT1sKzI0fDApPj4yXSxhWyhrPWwrMjh8MCk+PjJdPXc9KDB8YVtrPj4yXSkrY3wwLGFbbCs0MD4+Ml09dyxhWyhrPWwrMzZ8MCk+PjJdPSgwfGFbaz4+Ml0pK2MsdWVbbCs0ODA+PjBdPWYsdz0wfEQw''@;'; put 'put ''WzEyNyZhWyhjPWwrMjc2fDApPj4yXV0obCxiLHcsbSksYVtsKzI4MD4+Ml09dywwfHcpe2FbbCsyODg+PjJdPWFbbCsyODQ+PjJdLGFbYz4+Ml09NjYsYz0wO2JyZWFrfXN3aXRjaCgwfGFbcD4+Ml0pe2Nhc2UgMzpjPTI7YnJlYWs7Y2FzZSAxOmNhc2UgMDppZihmKXthW3A+PjJdPTIsYz0x''@;'; put 'put ''O2JyZWFrIGV9Yz0xO2JyZWFrO2RlZmF1bHQ6Yz0xfUZhWzMxJmFbNDgrKGs9MHxhW2wrMTQ0Pj4yXSk+PjJdXShrLDB8YVtBPj4yXSwwfGFbbT4+Ml0sbCs0MDR8MCksYVtBPj4yXT1hW20+PjJdfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gcW0obCxjKXtsfD0wLGN8''@;'; put 'put ''PTA7dmFyIHAsbSxmPTA7cmV0dXJuIG09b2Usb2U9b2UrMTZ8MCxwPW0sMHwoZj0wfHF1KDE0MjQ0MykpJiYwPT0oMHxaaShmLDE0MjQ2MykpJiYoZj0wfGFbMTU3MTJdLGFbcD4+Ml09bCxhW3ArND4+Ml09OCxhW3ArOD4+Ml09YyxhW3ArMTI+PjJdPTQsVDAoZiwxNDI0NjUscCkpLG9lPW0s''@;'; put 'put ''MHxjfWZ1bmN0aW9uIFZHKGwpe3JldHVybiAwfCgobHw9MCk/MHxhW2wrMjgwPj4yXTo0MSl9ZnVuY3Rpb24geVAobCl7c3dpdGNoKDB8KGx8PTApKXtjYXNlIDQxOmw9MTQyNTAyO2JyZWFrO2Nhc2UgMTpsPTE0Mzc3NDticmVhaztjYXNlIDI6bD0xNDM3NjE7YnJlYWs7Y2FzZSAzOmw9MTQz''@;'; put 'put ''NzQ0O2JyZWFrO2Nhc2UgNDpsPTE0MzcxMjticmVhaztjYXNlIDU6bD0xNDM2OTc7YnJlYWs7Y2FzZSA2Omw9MTQzNjc5O2JyZWFrO2Nhc2UgNzpsPTE0MzY2NDticmVhaztjYXNlIDg6bD0xNDM2NDQ7YnJlYWs7Y2FzZSA5Omw9MTQzNjE2O2JyZWFrO2Nhc2UgMTA6bD0xNDM1ODE7YnJlYWs7''@;'; put 'put ''Y2FzZSAxMTpsPTE0MzU2NDticmVhaztjYXNlIDEyOmw9MTQzNTM3O2JyZWFrO2Nhc2UgMTM6bD0xNDM1MTc7YnJlYWs7Y2FzZSAxNDpsPTE0MzQ3OTticmVhaztjYXNlIDE1Omw9MTQzNDUyO2JyZWFrO2Nhc2UgMTY6bD0xNDM0MTA7YnJlYWs7Y2FzZSAxNzpsPTE0MzM2MzticmVhaztjYXNl''@;'; put 'put ''IDE4Omw9MTQzMzQ2O2JyZWFrO2Nhc2UgMTk6bD0xNDMyOTU7YnJlYWs7Y2FzZSAyMDpsPTE0MzI3MjticmVhaztjYXNlIDIxOmw9MTQzMjI2O2JyZWFrO2Nhc2UgMjI6bD0xNDMxOTk7YnJlYWs7Y2FzZSAyMzpsPTE0MzE0ODticmVhaztjYXNlIDI0Omw9MTQzMTEyO2JyZWFrO2Nhc2UgMjU6''@;'; put 'put ''bD0xNDMwNjA7YnJlYWs7Y2FzZSAyNjpsPTE0MzAxNTticmVhaztjYXNlIDI3Omw9MTQzZTM7YnJlYWs7Y2FzZSAyODpsPTE0Mjk3NDticmVhaztjYXNlIDI5Omw9MTQyOTM2O2JyZWFrO2Nhc2UgMzA6bD0xNDI5MDQ7YnJlYWs7Y2FzZSAzMTpsPTE0Mjg3MTticmVhaztjYXNlIDMyOmw9MTQy''@;'; put 'put ''ODM3O2JyZWFrO2Nhc2UgMzM6bD0xNDI4MjA7YnJlYWs7Y2FzZSAzNDpsPTE0Mjc5OTticmVhaztjYXNlIDM1Omw9MTQyNzgzO2JyZWFrO2Nhc2UgMzY6bD0xNDI3NjY7YnJlYWs7Y2FzZSAzNzpsPTE0MjcyMjticmVhaztjYXNlIDM4Omw9MTQyNjQyO2JyZWFrO2Nhc2UgMzk6bD0xNDI1ODM7''@;'; put 'put ''YnJlYWs7Y2FzZSA0MDpsPTE0MjUxOTticmVhaztkZWZhdWx0Omw9MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIEM2KGwsYyl7bHw9MCxjfD0wO2Rve2lmKCgwfGwpPj0wKXtpZigoMHxsKTwxMjgpe3VlW2M+PjBdPWwsbD0xO2JyZWFrfWlmKCgwfGwpPDIwNDgpe3VlW2M+PjBdPWw+Pj42fDE5Mix1''@;'; put 'put ''ZVtjKzE+PjBdPTYzJmx8MTI4LGw9MjticmVha31pZigoMHxsKTw2NTUzNil7dWVbYz4+MF09bD4+PjEyfDIyNCx1ZVtjKzE+PjBdPWw+Pj42JjYzfDEyOCx1ZVtjKzI+PjBdPTYzJmx8MTI4LGw9MzticmVha30oMHxsKTwxMTE0MTEyPyh1ZVtjPj4wXT1sPj4+MTh8MjQwLHVlW2MrMT4+MF09''@;'; put 'put ''bD4+PjEyJjYzfDEyOCx1ZVtjKzI+PjBdPWw+Pj42JjYzfDEyOCx1ZVtjKzM+PjBdPTYzJmx8MTI4LGw9NCk6bD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gT2gobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAs''@;'; put 'put ''RD0wLFI9MCxHPTA7Zm9yKG09MDs7KXtpZigzNjQ9PSgwfG0pKXttPTA7YnJlYWt9dWVbbCttPj4wXT0wfHVlWzU2NTc2K20+PjBdLG09bSsxfDB9ZTpmb3IoOzspe2lmKCgwfG0pPj0xMjgpe0E9NTticmVha31zd2l0Y2goMHx1ZVs1NjY0OCttPj4wXSl7Y2FzZSAwOmNhc2UgMjg6YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDppZigoMHxhW2MrKG08PDIpPj4yXSkhPSgwfG0pKXtsPTA7YnJlYWsgZX19bT1tKzF8MH1lOmRve2lmKDU9PSgwfEEpKXtmb3IoRz1sKzcyfDAsaz1sKzM3MnwwLE09bCs4ODR8MCxEPTA9PSgwfGYpLGI9MDshKCgwfGIpPj0yNTYpOyl7Uj0wfGFbYysoYjw8Mik+PjJdO2Rve2lm''@;'; put 'put ''KC0xPT0oMHxSKSl1ZVtHK2I+PjBdPTEsVHRbaysoYjw8MSk+PjFdPS0xLHVlW00rKGI8PDIpPj4wXT0xLHVlW00rKGI8PDIpKzE+PjBdPTA7ZWxzZXtpZigoMHxSKTwwKXtpZihEfCgwfFIpPC00KXtsPTA7YnJlYWsgZX11ZVtHK2I+PjBdPTMtUix1ZVtNKyhiPDwyKT4+MF09MCxUdFtrKyhi''@;'; put 'put ''PDwxKT4+MV09MDticmVha31pZigoMHxSKTwxMjgpe3N3aXRjaCgobT0wfHVlWzU2NjQ4K1I+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6Y2FzZSAyODpicmVhaztkZWZhdWx0OmlmKCgwfFIpIT0oMHxiKSl7bD0wO2JyZWFrIGV9fXVlW0crYj4+MF09bSx1ZVtNKyhiPDwyKT4+MF09MSx1ZVtNKyhi''@;'; put 'put ''PDwyKSsxPj4wXT1SLFR0W2srKGI8PDEpPj4xXT0wPT0oMHxSKT8tMTo2NTUzNSZSO2JyZWFrfWlmKCgwfFRkKFIpKTwwKXt1ZVtHK2I+PjBdPTAsVHRbaysoYjw8MSk+PjFdPS0xLHVlW00rKGI8PDIpPj4wXT0xLHVlW00rKGI8PDIpKzE+PjBdPTA7YnJlYWt9aWYoKDB8Uik+NjU1MzUpe2w9''@;'; put 'put ''MDticmVhayBlfXVlW0crYj4+MF09YVs1Njk0MCsoKGJ0WzE0Mzc4OCsobT1SPj4+OCk+PjBdPDwzfChBPVI+Pj41JjcpKTw8Mik+PjJdJih3PTE8PCgzMSZSKSk/MjI6YVs1Njk0MCsoKGJ0WzE0NDA0NCttPj4wXTw8M3xBKTw8Mik+PjJdJnd8MD8yNjoyOCx1ZVtNKyhiPDwyKT4+MF09MHxD''@;'; put 'put ''NihSLE0rKGI8PDIpKzF8MCksVHRbaysoYjw8MSk+PjFdPVJ9fXdoaWxlKDApO2I9YisxfDB9YVtsKzM2OD4+Ml09cCxhW2wrMzY0Pj4yXT1mLER8fChhW2wrMzI4Pj4yXT0xMDgsYVtsKzMzMj4+Ml09MTA4LGFbbCszMzY+PjJdPTEwOCxhW2wrMzQwPj4yXT0xMDksYVtsKzM0ND4+Ml09MTA5''@;'; put 'put ''LGFbbCszNDg+PjJdPTEwOSxhW2wrMzUyPj4yXT0xMTAsYVtsKzM1Nj4+Ml09MTEwLGFbbCszNjA+PjJdPTExMCksYVtsKzU2Pj4yXT0xMyxhW2wrNjA+PjJdPTE0fX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIFRkKGwpe3N3aXRjaCgobHw9MCk+Pjh8MCl7Y2FzZSAyMjM6Y2FzZSAy''@;'; put 'put ''MjI6Y2FzZSAyMjE6Y2FzZSAyMjA6Y2FzZSAyMTk6Y2FzZSAyMTg6Y2FzZSAyMTc6Y2FzZSAyMTY6bD0tMTticmVhaztjYXNlIDA6MHx1ZVs1NjY0OCtsPj4wXXx8KGw9LTEpO2JyZWFrO2Nhc2UgMjU1OjY1NTM1IT0oMXxsKXx8KGw9LTEpfXJldHVybiAwfGx9ZnVuY3Rpb24gUzYobCxjLGYs''@;'; put 'put ''cCxtLEEsdyl7bHw9MCxjfD0wLGZ8PTAsbXw9MCxBfD0wLHd8PTAsKHB8PTApP2Z1bmN0aW9uIG81KGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIGssTSxELFIsdz0wLGI9MDtpZihSPW9lLG9lPW9lKzE2fDAsRD1SLDEhPSgwfGFbMzIrKGx8PTApPj4yXSkmJkJy''@;'; put 'put ''KDk0OTE5LDk0OTQzLDExNjMsOTUzMzUpLDEhPSgwfGFbbCsxNj4+Ml0pJiZCcig5NTM2NCw5NDk0MywxMTY0LDk1MzM1KSxrPTB8YVtsPj4yXSxNPTB8YVtsKzQ+PjJdLGI9MCE9KDB8KHc9MHxhW2Y+PjJdKSksbSl7Zm9yKGJ8fCh3PTB8UW4oMHx2cihwPDwzLE0pKSksYj0wOyEoKDB8Yik+''@;'; put 'put ''PSgwfHApKTspYVtEPj4yXT13KygoMHx2cihiLE0pKTw8MyksdGgobCxjKygoMHx2cihiLGspKTw8Myl8MCxELG0pLGI9YisxfDA7QXx8dDcodyxwLE0pfWVsc2V7Zm9yKGJ8fCh3PTB8UW4oMHx2cihwPDwzLGspKSksYj0wOyEoKDB8Yik+PSgwfHApKTspYVtEPj4yXT13KygoMHx2cihiLGsp''@;'; put 'put ''KTw8MyksdGgobCxjKygoMHx2cihiLE0pKTw8Myl8MCxELDApLGI9YisxfDA7QXx8dDcodyxwLGspfWFbZj4+Ml09dyxvZT1SfShsLGYsbSx3LGMsQSk6ZnVuY3Rpb24gcjUobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgSyxwZSxtZSxiZSx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAsT2U9MCxMZT0wO2lmKDEhPSgwfGFbMzIrKGx8PTApPj4yXSkmJkJyKDk0OTE5LDk0OTQzLDExMjEsOTU0ODMpLDEhPSgwfGFbbCsxNj4+Ml0pJiZCcig5NTM2NCw5NDk0MywxMTIyLDk1NDgzKSxLPTB8YVtsKzI4Pj4yXSxwZT0wfGFbbCsyMD4+Ml0sbWU9MHxhW2wr''@;'; put 'put ''MjQ+PjJdLGJlPTB8YVtsPj4yXSxHPTB8YVtsKzQ+PjJdLHc9MCE9KDB8KGw9MHxhW2Y+PjJdKSksbSl7Zm9yKHd8fChsPTB8UW4oMHx2cihwPDwzLEcpKSksbT0wfHZyKEcscCksdz0wOzspe2lmKCgwfHcpPj0oMHxtKSl7dz0wO2JyZWFrfV9bbCsodzw8Myk+PjNdPTAsdz13KzF8MH1lOmZv''@;'; put 'put ''cig7ISgoMHx3KT49KDB8YmUpKTspZm9yKE09dysxfDAsRD0wfGFbcGUrKE08PDIpPj4yXSxSPTB8dnIodyxwKSx3PTB8YVtwZSsodzw8Mik+PjJdOzspe2lmKCgwfHcpPj0oMHxEKSl7dz1NO2NvbnRpbnVlIGV9Zm9yKGI9Sysodzw8Myl8MCxrPW1lKyh3PDwyKXwwLG09MDshKCgwfG0pPj0o''@;'; put 'put ''MHxwKSk7KUxlPWwrKCgwfHZyKDB8YVtrPj4yXSxwKSkrbTw8Myl8MCxfW0xlPj4zXT0rX1tMZT4+M10rICtfW2MrKG0rUjw8Myk+PjNdKitfW2I+PjNdLG09bSsxfDA7dz13KzF8MH1BJiZ0NyhsLEcscCl9ZWxzZXt3fHwobD0wfFFuKDB8dnIocDw8MyxiZSkpKSxtPTA7ZTpmb3IoOyEoKDB8''@;'; put 'put ''bSk+PSgwfGJlKSk7KXtmb3IoUj0wfHZyKG0scCksdz0wOyEoKDB8dyk+PSgwfHApKTspX1tsKyh3K1I8PDMpPj4zXT0wLHc9dysxfDA7Zm9yKEQ9MHxhW3BlKygoTT1tKzF8MCk8PDIpPj4yXSx3PTB8YVtwZSsobTw8Mik+PjJdOzspe2lmKCgwfHcpPj0oMHxEKSl7bT1NO2NvbnRpbnVlIGV9''@;'; put 'put ''Zm9yKGI9Sysodzw8Myl8MCxrPW1lKyh3PDwyKXwwLG09MDshKCgwfG0pPj0oMHxwKSk7KU9lPStfW2MrKCgwfHZyKDB8YVtrPj4yXSxwKSkrbTw8Myk+PjNdKitfW2I+PjNdLF9bKEc9bCsobStSPDwzKXwwKT4+M109K19bRz4+M10rT2UsbT1tKzF8MDt3PXcrMXwwfX1BJiZ0NyhsLGJlLHAp''@;'; put 'put ''fWFbZj4+Ml09bH0obCxmLG0sdyxjLEEpfWZ1bmN0aW9uIHRoKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxLPTA7c3dpdGNoKDEhPSgwfGFbMzIrKGx8PTApPj4yXSkmJkJyKDk0OTE5LDk0OTQzLDEyMjIsOTUzOTIpLDB8KHc9MHxh''@;'; put 'put ''W2wrMTY+PjJdKSl7Y2FzZSA0OmNhc2UgMTpicmVhaztkZWZhdWx0OkJyKDk1NDIxLDk0OTQzLDEyMjMsOTUzOTIpfVI9MHxhW2wrMjA+PjJdLEQ9MHxhW2wrMjQ+PjJdLEc9MHxhW2w+PjJdLGs9MHxhW2wrND4+Ml0sYj0wfGFbZj4+Ml07ZTpkb3tzd2l0Y2goMHx3KXtjYXNlIDE6aWYoTT0w''@;'; put 'put ''fGFbbCsyOD4+Ml0sbD0wIT0oMHxwKSxtPTAhPSgwfGIpLGMpe2lmKCFsKXttPW0/YjowfFFuKEc8PDMpLGw9MDt0OmZvcig7Oyl7aWYoKDB8bCk+PSgwfEcpKWJyZWFrIGU7Zm9yKF9bKHc9bSsobDw8Myl8MCk+PjNdPTAscD0wfGFbUisoKGI9bCsxfDApPDwyKT4+Ml0sbD0wfGFbUisobDw8''@;'; put 'put ''Mik+PjJdLEE9MDs7KXtpZigoMHxsKT49KDB8cCkpe2w9Yjtjb250aW51ZSB0fV9bdz4+M109Sz1BKyArX1tjKyhhW0QrKGw8PDIpPj4yXTw8Myk+PjNdKitfW00rKGw8PDMpPj4zXSxsPWwrMXwwLEE9S319fWZvcihtPW0/YjowfFFuKGs8PDMpLGw9MDs7KXtpZigoMHxsKT49KDB8aykpe2w9''@;'; put 'put ''MDticmVha31fW20rKGw8PDMpPj4zXT0wLGw9bCsxfDB9dDpmb3IoOzspe2lmKCgwfGwpPj0oMHxHKSlicmVhayBlO2ZvcihiPTB8YVtSKygodz1sKzF8MCk8PDIpPj4yXSxwPWMrKGw8PDMpfDAsbD0wfGFbUisobDw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHxiKSl7bD13O2NvbnRpbnVlIHR9''@;'; put 'put ''X1soaz1tKyhhW0QrKGw8PDIpPj4yXTw8Myl8MCk+PjNdPStfW2s+PjNdKyArX1twPj4zXSorX1tNKyhsPDwzKT4+M10sbD1sKzF8MH19fWVsc2V7aWYoIWwpe209bT9iOjB8UW4oRzw8MyksbD0wO3Q6Zm9yKDs7KXtpZigoMHxsKT49KDB8RykpYnJlYWsgZTtmb3IoX1sodz1tKyhsPDwzKXww''@;'; put 'put ''KT4+M109MCxwPTB8YVtSKygoYj1sKzF8MCk8PDIpPj4yXSxsPTB8YVtSKyhsPDwyKT4+Ml0sQT0wOzspe2lmKCgwfGwpPj0oMHxwKSl7bD1iO2NvbnRpbnVlIHR9X1t3Pj4zXT1LPUErICtfW00rKGw8PDMpPj4zXSxsPWwrMXwwLEE9S319fWZvcihtfHwoYj0wfFFuKGs8PDMpKSxsPTA7Oyl7''@;'; put 'put ''aWYoKDB8bCk+PSgwfGspKXtsPTA7YnJlYWt9X1tiKyhsPDwzKT4+M109MCxsPWwrMXwwfXQ6Zm9yKDs7KXtpZigoMHxsKT49KDB8Rykpe209YjticmVhayBlfWZvcih3PTB8YVtSKygobT1sKzF8MCk8PDIpPj4yXSxsPTB8YVtSKyhsPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfHcpKXtsPW07''@;'; put 'put ''Y29udGludWUgdH1fWyhjPWIrKGFbRCsobDw8Mik+PjJdPDwzKXwwKT4+M109K19bYz4+M10rICtfW00rKGw8PDMpPj4zXSxsPWwrMXwwfX19Y2FzZSA0OmlmKE09MHxhW2wrMjg+PjJdLGw9MCE9KDB8cCksbT0wIT0oMHxiKSxjKXtpZighbCl7bT1tP2I6MHxRbihHPDwzKSxsPTA7dDpmb3Io''@;'; put 'put ''Ozspe2lmKCgwfGwpPj0oMHxHKSlicmVhayBlO2ZvcihfWyh3PW0rKGw8PDMpfDApPj4zXT0wLHA9MHxhW1IrKChiPWwrMXwwKTw8Mik+PjJdLGw9MHxhW1IrKGw8PDIpPj4yXSxBPTA7Oyl7aWYoKDB8bCk+PSgwfHApKXtsPWI7Y29udGludWUgdH1fW3c+PjNdPUs9QSsgK19bYysoYVtEKyhs''@;'; put 'put ''PDwyKT4+Ml08PDMpPj4zXSorKDB8YVtNKyhsPDwyKT4+Ml0pLGw9bCsxfDAsQT1LfX19Zm9yKG09bT9iOjB8UW4oazw8MyksbD0wOzspe2lmKCgwfGwpPj0oMHxrKSl7bD0wO2JyZWFrfV9bbSsobDw8Myk+PjNdPTAsbD1sKzF8MH10OmZvcig7Oyl7aWYoKDB8bCk+PSgwfEcpKWJyZWFrIGU7''@;'; put 'put ''Zm9yKGI9MHxhW1IrKCh3PWwrMXwwKTw8Mik+PjJdLHA9YysobDw8Myl8MCxsPTB8YVtSKyhsPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfGIpKXtsPXc7Y29udGludWUgdH1fWyhrPW0rKGFbRCsobDw8Mik+PjJdPDwzKXwwKT4+M109K19baz4+M10rICtfW3A+PjNdKisoMHxhW00rKGw8PDIp''@;'; put 'put ''Pj4yXSksbD1sKzF8MH19fWVsc2V7aWYoIWwpe209bT9iOjB8UW4oRzw8MyksbD0wO3Q6Zm9yKDs7KXtpZigoMHxsKT49KDB8RykpYnJlYWsgZTtmb3IoX1sodz1tKyhsPDwzKXwwKT4+M109MCxwPTB8YVtSKygoYj1sKzF8MCk8PDIpPj4yXSxsPTB8YVtSKyhsPDwyKT4+Ml0sQT0wOzspe2lm''@;'; put 'put ''KCgwfGwpPj0oMHxwKSl7bD1iO2NvbnRpbnVlIHR9X1t3Pj4zXT1LPUErICsoMHxhW00rKGw8PDIpPj4yXSksbD1sKzF8MCxBPUt9fX1mb3IobXx8KGI9MHxRbihrPDwzKSksbD0wOzspe2lmKCgwfGwpPj0oMHxrKSl7bD0wO2JyZWFrfV9bYisobDw8Myk+PjNdPTAsbD1sKzF8MH10OmZvcig7''@;'; put 'put ''Oyl7aWYoKDB8bCk+PSgwfEcpKXttPWI7YnJlYWsgZX1mb3Iodz0wfGFbUisoKG09bCsxfDApPDwyKT4+Ml0sbD0wfGFbUisobDw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHx3KSl7bD1tO2NvbnRpbnVlIHR9X1soYz1iKyhhW0QrKGw8PDIpPj4yXTw8Myl8MCk+PjNdPStfW2M+PjNdKyArKDB8''@;'; put 'put ''YVtNKyhsPDwyKT4+Ml0pLGw9bCsxfDB9fX1kZWZhdWx0OkJyKDEzODM5NCw5NDk0MywxMzE1LDk1MzkyKX19d2hpbGUoMCk7YVtmPj4yXT1tfWZ1bmN0aW9uIHQ3KGwsYyxmKXtsfD0wO3ZhciBBLHA9MCxtPTAsdz0wO2ZvcihEbygwfChBPTB8UW4ocD0wfHZyKChjfD0wKTw8MyxmfD0wKSkp''@;'; put 'put ''LDB8bCwwfHApLHA9MDshKCgwfHApPj0oMHxjKSk7KXtmb3Iodz0wfHZyKHAsZiksbT0wOyEoKDB8bSk+PSgwfGYpKTspX1tsKygoMHx2cihtLGMpKStwPDwzKT4+M109K19bQSsobSt3PDwzKT4+M10sbT1tKzF8MDtwPXArMXwwfUh0KEEpfWZ1bmN0aW9uIGpfKGwsYyl7dmFyIGplLGV0LHJ0''@;'; put 'put ''LEdlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsbHQ9MDtpZihqZT0wfGFbMjArKGx8PTApPj4yXSxldD0wfGFbbCsyND4+Ml0scnQ9MHxhWzIwKyhjfD0wKT4+Ml0sR2U9MHxhW2MrMjQ+''@;'; put 'put ''PjJdLDE9PSgwfChIZT0wfGFbbCszMj4+Ml0pKSYmKDB8SGUpPT0oMHxhW2MrMzI+PjJdKXx8QnIoOTUwMDUsOTQ5NDMsMTQwOCw5NTUxMiksSGU9MHxhW2w+PjJdLCgwfGFbbCs0Pj4yXSk9PSgwfGFbYz4+Ml0pJiYoMHwoUj0wfGFbbCsxNj4+Ml0pKT09KDB8YVtjKzE2Pj4yXSkmJjAhPSgw''@;'; put 'put ''fChsdD0wfFFuKGFbKEQ9Yys0fDApPj4yXTw8MikpKSl7Zm9yKGY9MDs7KXtpZigoMHxmKT49KDB8YVtEPj4yXSkpe3A9MCxmPTA7YnJlYWt9YVtsdCsoZjw8Mik+PjJdPS0xLGY9ZisxfDB9ZTpmb3IoOyEoKDB8Zik+PSgwfEhlKSk7KWZvcihiPWYrMXwwLGs9amUrKGI8PDIpfDAsTT0tMi1m''@;'; put 'put ''fDAsdz0wfGFbamUrKGY8PDIpPj4yXTs7KXtpZigoMHx3KT49KDB8YVtrPj4yXSkpe2Y9Yjtjb250aW51ZSBlfWZvcihBPXJ0KygxKyhtPTB8YVtldCsodzw8Mik+PjJdKTw8Mil8MCxtPTB8YVtydCsobTw8Mik+PjJdOyEoKDB8bSk+PSgwfGFbQT4+Ml0pKTspKDB8YVsoZj1sdCsoYVtHZSso''@;'; put 'put ''bTw8Mik+PjJdPDwyKXwwKT4+Ml0pIT0oMHxNKSYmKGFbZj4+Ml09TSxwPXArMXwwKSxtPW0rMXwwO3c9dysxfDB9Zj0wfFhoKEhlLDB8YVtEPj4yXSxwLFIsMSk7ZTpkb3tpZihmKXtPZT0wfGFbZisyMD4+Ml0sTGU9MHxhW2YrMjQ+PjJdO3Q6ZG97c3dpdGNoKDB8Uil7Y2FzZSAxOm1lPTB8''@;'; put 'put ''YVtsKzI4Pj4yXSxSPTB8YVtjKzI4Pj4yXSxjPTB8YVtmKzI4Pj4yXSxhW09lPj4yXT0wLHA9MCxtPTA7bjpmb3IoOzspe2lmKCgwfHApPj0oMHxIZSkpe0JlPW07YnJlYWsgdH1mb3IoSz1qZSsoKEc9cCsxfDApPDwyKXwwLHBlPU9lKyhwPDwyKXwwLGw9MHxhW2plKyhwPDwyKT4+Ml07ISgo''@;'; put 'put ''MHxsKT49KDB8YVtLPj4yXSkpOyl7Zm9yKE09cnQrKDErKGs9MHxhW2V0KyhsPDwyKT4+Ml0pPDwyKXwwLEQ9bWUrKGw8PDMpfDAsaz0wfGFbcnQrKGs8PDIpPj4yXTshKCgwfGspPj0oMHxhW00+PjJdKSk7KXtpZigoMHwoYj0wfGFbKHc9bHQrKChBPTB8YVsocD1HZSsoazw8Mil8MCk+PjJd''@;'; put 'put ''KTw8Mil8MCk+PjJdKSk8KDB8YVtwZT4+Ml0pKWFbdz4+Ml09bSxhW0xlKyhtPDwyKT4+Ml09YVtwPj4yXSxfW2MrKG08PDMpPj4zXT0rX1tSKyhrPDwzKT4+M10qK19bRD4+M10sbT1tKzF8MDtlbHNle2lmKCgwfGFbTGUrKGI8PDIpPj4yXSkhPSgwfEEpKWJyZWFrIG47X1soYmU9YysoYjw8''@;'; put 'put ''Myl8MCk+PjNdPStfW2JlPj4zXSsgK19bUisoazw8Myk+PjNdKitfW0Q+PjNdfWs9aysxfDB9bD1sKzF8MH1hW09lKyhHPDwyKT4+Ml09bSxwPUd9QnIoOTU1MzQsOTQ5NDMsMTQ2OCw5NTUxMik7YnJlYWs7Y2FzZSAyOmJlPTB8YVtsKzI4Pj4yXSxjPTB8YVtjKzI4Pj4yXSxHPTB8YVtmKzI4''@;'; put 'put ''Pj4yXSxhW09lPj4yXT0wLHA9MCxtPTA7bjpmb3IoOzspe2lmKCgwfHApPj0oMHxIZSkpe0JlPW07YnJlYWsgdH1mb3IocGU9amUrKChLPXArMXwwKTw8Mil8MCxtZT1PZSsocDw8Mil8MCxSPTB8YVtqZSsocDw8Mik+PjJdOyEoKDB8Uik+PSgwfGFbcGU+PjJdKSk7KXtmb3IoTT1ydCsoMSso''@;'; put 'put ''az0wfGFbZXQrKFI8PDIpPj4yXSk8PDIpfDAsRD1iZSsoKGw9Ujw8MSk8PDMpfDAsbD1iZSsoKDF8bCk8PDMpfDAsaz0wfGFbcnQrKGs8PDIpPj4yXTshKCgwfGspPj0oMHxhW00+PjJdKSk7KXtpZigoMHwoYj0wfGFbKHc9bHQrKChBPTB8YVsocD1HZSsoazw8Mil8MCk+PjJdKTw8Mil8MCk+''@;'; put 'put ''PjJdKSk8KDB8YVttZT4+Ml0pKWFbdz4+Ml09bSxhW0xlKyhtPDwyKT4+Ml09YVtwPj4yXSxfW0crKChiPW08PDEpPDwzKT4+M109K19bKEE9YysoKHc9azw8MSk8PDMpfDApPj4zXSorX1tEPj4zXS0rX1sodz1jKygoMXx3KTw8Myl8MCk+PjNdKitfW2w+PjNdLF9bRysoKDF8Yik8PDMpPj4z''@;'; put 'put ''XT0rX1tBPj4zXSorX1tsPj4zXSsgK19bdz4+M10qK19bRD4+M10sbT1tKzF8MDtlbHNle2lmKCgwfGFbTGUrKGI8PDIpPj4yXSkhPSgwfEEpKWJyZWFrIG47X1socD1HKygoYjw8PTEpPDwzKXwwKT4+M109K19bcD4+M10rICtfWyhBPWMrKCh3PWs8PDEpPDwzKXwwKT4+M10qK19bRD4+M10t''@;'; put 'put ''K19bKHc9YysoKDF8dyk8PDMpfDApPj4zXSorX1tsPj4zXSxfWyhiPUcrKCgxfGIpPDwzKXwwKT4+M109K19bQT4+M10qK19bbD4+M10rICtfW3c+PjNdKitfW0Q+PjNdKyArX1tiPj4zXX1rPWsrMXwwfVI9UisxfDB9YVtPZSsoSzw8Mik+PjJdPW0scD1LfUJyKDk1NTM0LDk0OTQzLDE0OTcs''@;'; put 'put ''OTU1MTIpO2JyZWFrO2Nhc2UgNDptZT0wfGFbbCsyOD4+Ml0sUj0wfGFbYysyOD4+Ml0sYz0wfGFbZisyOD4+Ml0sYVtPZT4+Ml09MCxwPTAsbT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8SGUpKXtCZT1wO2JyZWFrIHR9Zm9yKEs9amUrKChHPW0rMXwwKTw8Mil8MCxwZT1PZSsobTw8Mil8''@;'; put 'put ''MCxNPTB8YVtqZSsobTw8Mik+PjJdOyEoKDB8TSk+PSgwfGFbSz4+Ml0pKTspe2ZvcihEPXJ0KygxKyhrPTB8YVtldCsoTTw8Mik+PjJdKTw8Mil8MCxsPW1lKyhNPDwyKXwwLGs9MHxhW3J0KyhrPDwyKT4+Ml07ISgoMHxrKT49KDB8YVtEPj4yXSkpOyl7aWYoKDB8KGI9MHxhWyh3PWx0Kygo''@;'; put 'put ''QT0wfGFbKG09R2UrKGs8PDIpfDApPj4yXSk8PDIpfDApPj4yXSkpPCgwfGFbcGU+PjJdKSlhW3c+PjJdPXAsYVtMZSsocDw8Mik+PjJdPWFbbT4+Ml0sYVtjKyhwPDwyKT4+Ml09MHx2cigwfGFbUisoazw8Mik+PjJdLDB8YVtsPj4yXSkscD1wKzF8MDtlbHNle2lmKCgwfGFbTGUrKGI8PDIp''@;'; put 'put ''Pj4yXSkhPSgwfEEpKWJyZWFrIG47dz0wfHZyKDB8YVtSKyhrPDwyKT4+Ml0sMHxhW2w+PjJdKSxhWyhiZT1jKyhiPDwyKXwwKT4+Ml09KDB8YVtiZT4+Ml0pK3d9az1rKzF8MH1NPU0rMXwwfWFbT2UrKEc8PDIpPj4yXT1wLG09R31Ccig5NTUzNCw5NDk0MywxNTIzLDk1NTEyKTticmVhaztj''@;'; put 'put ''YXNlIDg6YVtPZT4+Ml09MCxwPTAsbT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8SGUpKXtCZT1wO2JyZWFrIHR9Zm9yKFI9amUrKChsPW0rMXwwKTw8Mil8MCxjPU9lKyhtPDwyKXwwLE09MHxhW2plKyhtPDwyKT4+Ml07ISgoMHxNKT49KDB8YVtSPj4yXSkpOyl7Zm9yKEQ9cnQrKDErKGs9''@;'; put 'put ''MHxhW2V0KyhNPDwyKT4+Ml0pPDwyKXwwLGs9MHxhW3J0KyhrPDwyKT4+Ml07ISgoMHxrKT49KDB8YVtEPj4yXSkpOyl7aWYoKDB8KGI9MHxhWyh3PWx0KygoQT0wfGFbKG09R2UrKGs8PDIpfDApPj4yXSk8PDIpfDApPj4yXSkpPj0oMHxhW2M+PjJdKSl7aWYoKDB8YVtMZSsoYjw8Mik+PjJd''@;'; put 'put ''KSE9KDB8QSkpYnJlYWsgbn1lbHNlIGFbdz4+Ml09cCxhW0xlKyhwPDwyKT4+Ml09YVttPj4yXSxwPXArMXwwO2s9aysxfDB9TT1NKzF8MH1hW09lKyhsPDwyKT4+Ml09cCxtPWx9QnIoOTU1MzQsOTQ5NDMsMTU0Myw5NTUxMik7YnJlYWs7ZGVmYXVsdDpKYShmKSxmPTA7YnJlYWsgZX19d2hp''@;'; put 'put ''bGUoMCk7YVtmKzg+PjJdPUJlfWVsc2UgZj0wfXdoaWxlKDApO0h0KGx0KX1lbHNlIGY9MDtyZXR1cm4gMHxmfWZ1bmN0aW9uIEVBKGwsYyxmKXt2YXIgbHQsTXQsa3QsRXQsWnQsdXQscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxP''@;'; put 'put ''ZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsYXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTA7aWYoRXQ9MHxhWzIwKyhsfD0wKT4+Ml0sWnQ9MHxhW2wrMjQ+PjJdLHV0PTB8YVsyMCsoY3w9MCk+PjJdLGx0PTB8YVtjKzI0Pj4yXSxNdD0wfGFbMjArKGZ8PTApPj4y''@;'; put 'put ''XSxrdD0wfGFbZisyND4+Ml0sMT09KDB8KGF0PTB8YVtsKzMyPj4yXSkpJiYoMHxhdCk9PSgwfGFbYyszMj4+Ml0pfHxCcig5NTAwNSw5NDk0MywxNTc0LDk1NTU5KSxhdD0wfGFbbD4+Ml0sKDB8YVtsKzQ+PjJdKT09KDB8YVtjPj4yXSkmJigwfGFbYys0Pj4yXSk9PSgwfGFbZj4+Ml0pJiYo''@;'; put 'put ''MHwocGU9MHxhW2wrMTY+PjJdKSk9PSgwfGFbYysxNj4+Ml0pJiYoMHxwZSk9PSgwfGFbZisxNj4+Ml0pJiYwIT0oMHwod3Q9MHxRbihhWyhLPWYrNHwwKT4+Ml08PDIpKSkpe2ZvcihwPTA7Oyl7aWYoKDB8cCk+PSgwfGFbSz4+Ml0pKXttPTAscD0wO2JyZWFrfWFbd3QrKHA8PDIpPj4yXT0t''@;'; put 'put ''MSxwPXArMXwwfWU6Zm9yKDshKCgwfHApPj0oMHxhdCkpOylmb3IoRD1wKzF8MCxSPUV0KyhEPDwyKXwwLEc9LTItcHwwLE09MHxhW0V0KyhwPDwyKT4+Ml07Oyl7aWYoKDB8TSk+PSgwfGFbUj4+Ml0pKXtwPUQ7Y29udGludWUgZX1mb3Ioaz11dCsoMSsoYj0wfGFbWnQrKE08PDIpPj4yXSk8''@;'; put 'put ''PDIpfDAsYj0wfGFbdXQrKGI8PDIpPj4yXTshKCgwfGIpPj0oMHxhW2s+PjJdKSk7KXtmb3Iodz1NdCsoMSsoQT0wfGFbbHQrKGI8PDIpPj4yXSk8PDIpfDAsQT0wfGFbTXQrKEE8PDIpPj4yXTshKCgwfEEpPj0oMHxhW3c+PjJdKSk7KSgwfGFbKHA9d3QrKGFba3QrKEE8PDIpPj4yXTw8Mil8''@;'; put 'put ''MCk+PjJdKSE9KDB8RykmJihhW3A+PjJdPUcsbT1tKzF8MCksQT1BKzF8MDtiPWIrMXwwfU09TSsxfDB9cD0wfFhoKGF0LDB8YVtLPj4yXSxtLHBlLDEpO2U6ZG97aWYocCl7ZXQ9MHxhW3ArMjA+PjJdLHJ0PTB8YVtwKzI0Pj4yXTt0OmRve3N3aXRjaCgwfHBlKXtjYXNlIDE6QmU9MHxhW2wr''@;'; put 'put ''Mjg+PjJdLExlPTB8YVtjKzI4Pj4yXSxmPTB8YVtmKzI4Pj4yXSxtZT0wfGFbcCsyOD4+Ml0sYVtldD4+Ml09MCxtPTAsQT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8YXQpKXtHZT1BO2JyZWFrIHR9Zm9yKE9lPUV0KygoYmU9bSsxfDApPDwyKXwwLGM9ZXQrKG08PDIpfDAscGU9MHxhW0V0''@;'; put 'put ''KyhtPDwyKT4+Ml07ISgoMHxwZSk+PSgwfGFbT2U+PjJdKSk7KXtmb3IoSz11dCsoMSsoRz0wfGFbWnQrKHBlPDwyKT4+Ml0pPDwyKXwwLGw9QmUrKHBlPDwzKXwwLEc9MHxhW3V0KyhHPDwyKT4+Ml07ISgoMHxHKT49KDB8YVtLPj4yXSkpOyl7Zm9yKEQ9TXQrKDErKE09MHxhW2x0KyhHPDwy''@;'; put 'put ''KT4+Ml0pPDwyKXwwLFI9TGUrKEc8PDMpfDAsTT0wfGFbTXQrKE08PDIpPj4yXTshKCgwfE0pPj0oMHxhW0Q+PjJdKSk7KXtpZigoMHwoaz0wfGFbKGI9d3QrKCh3PTB8YVsobT1rdCsoTTw8Mil8MCk+PjJdKTw8Mil8MCk+PjJdKSk8KDB8YVtjPj4yXSkpYVtiPj4yXT1BLGFbcnQrKEE8PDIp''@;'; put 'put ''Pj4yXT1hW20+PjJdLF9bbWUrKEE8PDMpPj4zXT0rX1tSPj4zXSorX1tsPj4zXSorX1tmKyhNPDwzKT4+M10sQT1BKzF8MDtlbHNle2lmKCgwfGFbcnQrKGs8PDIpPj4yXSkhPSgwfHcpKWJyZWFrIG47X1soamU9bWUrKGs8PDMpfDApPj4zXT0rX1tqZT4+M10rICtfW1I+PjNdKitfW2w+PjNd''@;'; put 'put ''KitfW2YrKE08PDMpPj4zXX1NPU0rMXwwfUc9RysxfDB9cGU9cGUrMXwwfWFbZXQrKGJlPDwyKT4+Ml09QSxtPWJlfUJyKDk1NTgyLDk0OTQzLDE2NDIsOTU1NTkpO2JyZWFrO2Nhc2UgMjpqZT0wfGFbbCsyOD4+Ml0sSGU9MHxhW2MrMjg+PjJdLG1lPTB8YVtmKzI4Pj4yXSxiZT0wfGFbcCsy''@;'; put 'put ''OD4+Ml0sYVtldD4+Ml09MCxtPTAsQT0wO246Zm9yKDs7KXtpZigoMHxBKT49KDB8YXQpKXtHZT1tO2JyZWFrIHR9Zm9yKExlPUV0KygoT2U9QSsxfDApPDwyKXwwLEJlPWV0KyhBPDwyKXwwLGw9MHxhW0V0KyhBPDwyKT4+Ml07ISgoMHxsKT49KDB8YVtMZT4+Ml0pKTspe2ZvcihwZT11dCso''@;'; put 'put ''MSsoRD0wfGFbWnQrKGw8PDIpPj4yXSk8PDIpfDAsYz1qZSsoKGY9bDw8MSk8PDMpfDAsZj1qZSsoKDF8Zik8PDMpfDAsRD0wfGFbdXQrKEQ8PDIpPj4yXTshKCgwfEQpPj0oMHxhW3BlPj4yXSkpOyl7Zm9yKFI9TXQrKDErKE09MHxhW2x0KyhEPDwyKT4+Ml0pPDwyKXwwLEc9SGUrKChLPUQ8''@;'; put 'put ''PDEpPDwzKXwwLEs9SGUrKCgxfEspPDwzKXwwLE09MHxhW010KyhNPDwyKT4+Ml07ISgoMHxNKT49KDB8YVtSPj4yXSkpOyl7aWYoKDB8KGs9MHxhWyhiPXd0Kygodz0wfGFbKEE9a3QrKE08PDIpfDApPj4yXSk8PDIpfDApPj4yXSkpPCgwfGFbQmU+PjJdKSlhW2I+PjJdPW0sYVtydCsobTw8''@;'; put 'put ''Mik+PjJdPWFbQT4+Ml0sX1tiZSsoKGs9bTw8MSk8PDMpPj4zXT0oKEZuPStfW0c+PjNdKSooeW49K19bYz4+M10pLShscj0rX1tLPj4zXSkqKHJuPStfW2Y+PjNdKSkqK19bKHc9bWUrKChiPU08PDEpPDwzKXwwKT4+M10tKGxyKnluK3JuKkZuKSorX1soYj1tZSsoKDF8Yik8PDMpfDApPj4z''@;'; put 'put ''XSxfW2JlKygoMXxrKTw8Myk+PjNdPSgobHI9K19bRz4+M10pKih5bj0rX1tmPj4zXSkrKHJuPStfW0s+PjNdKSooRm49K19bYz4+M10pKSorX1t3Pj4zXSsobHIqRm4teW4qcm4pKitfW2I+PjNdLG09bSsxfDA7ZWxzZXtpZigoMHxhW3J0KyhrPDwyKT4+Ml0pIT0oMHx3KSlicmVhayBuO19b''@;'; put 'put ''KEE9YmUrKChrPDw9MSk8PDMpfDApPj4zXT0rX1tBPj4zXSsoKHluPStfW0c+PjNdKSooRm49K19bYz4+M10pLShybj0rX1tLPj4zXSkqKGxyPStfW2Y+PjNdKSkqK19bKHc9bWUrKChiPU08PDEpPDwzKXwwKT4+M10tKHJuKkZuK2xyKnluKSorX1soYj1tZSsoKDF8Yik8PDMpfDApPj4zXSxf''@;'; put 'put ''WyhrPWJlKygoMXxrKTw8Myl8MCk+PjNdPSgocm49K19bRz4+M10pKihGbj0rX1tmPj4zXSkrKGxyPStfW0s+PjNdKSooeW49K19bYz4+M10pKSorX1t3Pj4zXSsocm4qeW4tRm4qbHIpKitfW2I+PjNdKyArX1trPj4zXX1NPU0rMXwwfUQ9RCsxfDB9bD1sKzF8MH1hW2V0KyhPZTw8Mik+PjJd''@;'; put 'put ''PW0sQT1PZX1Ccig5NTU4Miw5NDk0MywxNjc0LDk1NTU5KTticmVhaztjYXNlIDQ6QmU9MHxhW2wrMjg+PjJdLExlPTB8YVtjKzI4Pj4yXSxjPTB8YVtmKzI4Pj4yXSxmPTB8YVtwKzI4Pj4yXSxhW2V0Pj4yXT0wLG09MCxBPTA7bjpmb3IoOzspe2lmKCgwfEEpPj0oMHxhdCkpe0dlPW07YnJl''@;'; put 'put ''YWsgdH1mb3IoYmU9RXQrKChtZT1BKzF8MCk8PDIpfDAsT2U9ZXQrKEE8PDIpfDAsSz0wfGFbRXQrKEE8PDIpPj4yXTshKCgwfEspPj0oMHxhW2JlPj4yXSkpOyl7Zm9yKGw9dXQrKDErKEQ9MHxhW1p0KyhLPDwyKT4+Ml0pPDwyKXwwLHBlPUJlKyhLPDwyKXwwLEQ9MHxhW3V0KyhEPDwyKT4+''@;'; put 'put ''Ml07ISgoMHxEKT49KDB8YVtsPj4yXSkpOyl7Zm9yKFI9TXQrKDErKE09MHxhW2x0KyhEPDwyKT4+Ml0pPDwyKXwwLEc9TGUrKEQ8PDIpfDAsTT0wfGFbTXQrKE08PDIpPj4yXTshKCgwfE0pPj0oMHxhW1I+PjJdKSk7KXtpZigoMHwoaz0wfGFbKGI9d3QrKCh3PTB8YVsoQT1rdCsoTTw8Mil8''@;'; put 'put ''MCk+PjJdKTw8Mil8MCk+PjJdKSk8KDB8YVtPZT4+Ml0pKWFbYj4+Ml09bSxhW3J0KyhtPDwyKT4+Ml09YVtBPj4yXSxIZT0wfHZyKDB8YVtHPj4yXSwwfGFbcGU+PjJdKSxIZT0wfHZyKEhlLDB8YVtjKyhNPDwyKT4+Ml0pLGFbKGplPWYrKG08PDIpfDApPj4yXT0oMHxhW2plPj4yXSkrSGUs''@;'; put 'put ''bT1tKzF8MDtlbHNle2lmKCgwfGFbcnQrKGs8PDIpPj4yXSkhPSgwfHcpKWJyZWFrIG47SGU9MHx2cigwfGFbRz4+Ml0sMHxhW3BlPj4yXSksSGU9MHx2cihIZSwwfGFbYysoTTw8Mik+PjJdKSxhWyhqZT1mKyhrPDwyKXwwKT4+Ml09KDB8YVtqZT4+Ml0pK0hlfU09TSsxfDB9RD1EKzF8MH1L''@;'; put 'put ''PUsrMXwwfWFbZXQrKG1lPDwyKT4+Ml09bSxBPW1lfUJyKDk1NTgyLDk0OTQzLDE3MDYsOTU1NTkpO2JyZWFrO2Nhc2UgODphW2V0Pj4yXT0wLG09MCxBPTA7bjpmb3IoOzspe2lmKCgwfEEpPj0oMHxhdCkpe0dlPW07YnJlYWsgdH1mb3IocGU9RXQrKChsPUErMXwwKTw8Mil8MCxjPWV0KyhB''@;'; put 'put ''PDwyKXwwLEc9MHxhW0V0KyhBPDwyKT4+Ml07ISgoMHxHKT49KDB8YVtwZT4+Ml0pKTspe2ZvcihLPXV0KygxKyhEPTB8YVtadCsoRzw8Mik+PjJdKTw8Mil8MCxEPTB8YVt1dCsoRDw8Mik+PjJdOyEoKDB8RCk+PSgwfGFbSz4+Ml0pKTspe2ZvcihSPU10KygxKyhNPTB8YVtsdCsoRDw8Mik+''@;'; put 'put ''PjJdKTw8Mil8MCxNPTB8YVtNdCsoTTw8Mik+PjJdOyEoKDB8TSk+PSgwfGFbUj4+Ml0pKTspe2lmKCgwfChrPTB8YVsoYj13dCsoKHc9MHxhWyhBPWt0KyhNPDwyKXwwKT4+Ml0pPDwyKXwwKT4+Ml0pKT49KDB8YVtjPj4yXSkpe2lmKCgwfGFbcnQrKGs8PDIpPj4yXSkhPSgwfHcpKWJyZWFr''@;'; put 'put ''IG59ZWxzZSBhW2I+PjJdPW0sYVtydCsobTw8Mik+PjJdPWFbQT4+Ml0sbT1tKzF8MDtNPU0rMXwwfUQ9RCsxfDB9Rz1HKzF8MH1hW2V0KyhsPDwyKT4+Ml09bSxBPWx9QnIoOTU1ODIsOTQ5NDMsMTcyOSw5NTU1OSk7YnJlYWs7ZGVmYXVsdDpKYShwKSxwPTA7YnJlYWsgZX19d2hpbGUoMCk7''@;'; put 'put ''YVtwKzg+PjJdPUdlfWVsc2UgcD0wfXdoaWxlKDApO0h0KHd0KX1lbHNlIHA9MDtyZXR1cm4gMHxwfWZ1bmN0aW9uIGE1KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTA7aWYoMiE9KDB8YVszMisobHw9MCk+PjJdKSYmQnIoOTUxMDAsOTQ5NDMsMTk3MSw5''@;'; put 'put ''NTYwNyksKDB8Yyk+PTEpe2ZvcigoMHwoQT0odz0wfGFbbCs4Pj4yXSkrY3wwKSk+PSgwfGFbbCsxMj4+Ml0pJiZmdW5jdGlvbiBEeChsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wOzI9PSgwfGFbMzIrKGx8PTApPj4yXSk/KGFbKGY9bCsyMHwwKT4+Ml09MHxsMCgwfGFbZj4+Ml0sbT1jPDwy''@;'; put 'put ''KSxhWyhmPWwrMjR8MCk+PjJdPTB8bDAoMHxhW2Y+PjJdLG0pLCgwfChmPTB8YVtsKzQwPj4yXSkpPjAmJihwPTB8YVsobT1sKzI4fDApPj4yXSxmPTB8dnIoZixjKSxmPXA/MHxsMChwLGYpOjB8UW4oZiksYVttPj4yXT1mKSk6KGFbKGY9bCsyNHwwKT4+Ml09MHxsMCgwfGFbZj4+Ml0sYzw8''@;'; put 'put ''MiksKDB8KGY9MHxhW2wrNDA+PjJdKSk+MCYmKHA9MHxhWyhtPWwrMjh8MCk+PjJdLGY9MHx2cihmLGMpLGY9cD8wfGwwKHAsZik6MHxRbihmKSxhW20+PjJdPWYpKSxhW2wrMTI+PjJdPWN9KGwsQSsxMHwwKSxEbygoMHxhW2wrMjA+PjJdKSsoYj13PDwyKXwwLDB8ZiwwfChBPWM8PDIpKSxE''@;'; put 'put ''bygoMHxhW2wrMjQ+PjJdKStifDAsMHxwLDB8QSksMHwoQT0wfGFbbCs0MD4+Ml0pJiYoYj0wfHZyKEEsYyksdz0wfHZyKEEsdyksRG8oKDB8YVtsKzI4Pj4yXSkrd3wwLDB8bSwwfGIpKSxtPWwrNHwwLHc9MDshKCgwfHcpPj0oMHxjKSk7KSgwfChBPTB8YVtmKyh3PDwyKT4+Ml0pKT49KDB8''@;'; put 'put ''YVtsPj4yXSkmJihhW2w+PjJdPUErMSksKDB8KEE9MHxhW3ArKHc8PDIpPj4yXSkpPj0oMHxhW20+PjJdKSYmKGFbbT4+Ml09QSsxKSx3PXcrMXwwO2FbKGI9bCs4fDApPj4yXT0oMHxhW2I+PjJdKStjfXJldHVybiAwfGx9ZnVuY3Rpb24geEEobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTAsbT0w''@;'; put 'put ''LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtlOmRve2lmKGwpe009MHxhW2wrMjA+PjJdLGs9MHxhW2wrMjQ+PjJdO3Q6ZG97c3dpdGNoKDB8YVtsKzE2Pj4yXSl7Y2FzZSAxOnc9MHxhW2wrMjg+PjJdLHA9MHxhW2w+PjJdLGM9MDtuOmZvcig7Oyl7aWYoKDB8Yyk+PSgwfHApKWJyZWFr''@;'; put 'put ''IHQ7Zm9yKGY9MS8rKChBPTB8YVtNKygobT1jKzF8MCk8PDIpPj4yXSktKGM9MHxhW00rKGM8PDIpPj4yXSl8MCk7Oyl7aWYoKDB8Yyk+PSgwfEEpKXtjPW07Y29udGludWUgbn1fWyhrPXcrKGM8PDMpfDApPj4zXT0rX1trPj4zXSpmLGM9YysxfDB9fWNhc2UgMjptPTB8YVtsKzI4Pj4yXSxB''@;'; put 'put ''PTB8YVtsPj4yXSxjPTA7bjpmb3IoOzspe2lmKCgwfGMpPj0oMHxBKSlicmVhayB0O2ZvcihmPTEvKygoYj0wfGFbTSsoKHc9YysxfDApPDwyKT4+Ml0pLShwPTB8YVtNKyhjPDwyKT4+Ml0pfDApOzspe2lmKCgwfHApPj0oMHxiKSl7Yz13O2NvbnRpbnVlIG59KDB8YVtrKyhwPDwyKT4+Ml0p''@;'; put 'put ''IT0oMHxjKSYmKF9bKFI9bSsoKEQ9cDw8MSk8PDMpfDApPj4zXT0rX1tSPj4zXSpmLF9bKEQ9bSsoKDF8RCk8PDMpfDApPj4zXT0rX1tEPj4zXSpmKSxwPXArMXwwfX1jYXNlIDQ6QnIoMTM4Mzk0LDk0OTQzLDIxOTIsOTU2NDgpO2JyZWFrO2Nhc2UgODpicmVhaztkZWZhdWx0Omw9MDticmVh''@;'; put 'put ''ayBlfX13aGlsZSgwKX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIGw1KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2lmKDAhPSgwfChsfD0wKSkmJihmPTB8YVsoYz1sKzh8MCk+PjJdLCgwfChwPTB8YVtsKzQ+PjJdKSk9PSgwfGFbbD4+Ml0pKSl7Zm9yKEE9MHxh''@;'; put 'put ''W2wrMjQ+PjJdLGw9MHxhW2wrMjA+PjJdLG09MHxYaChwLHAsZiw4LDEpLERvKDB8YVttKzIwPj4yXSwwfGwsNCsocDw8Mil8MCksRG8oMHxhW20rMjQ+PjJdLDB8QSxmPDwyfDApLGFbbSs4Pj4yXT1hW2M+PjJdLGw9MHxzOChtLDEpLEphKG0pLGw9MHxsZyhsKSxmPTB8UW4oYVsocD1sKzh8''@;'; put 'put ''MCk+PjJdPDwzKSxhW2wrMjg+PjJdPWYscD0wfGFbcD4+Ml0sYz0wOyEoKDB8Yyk+PSgwfHApKTspX1tmKyhjPDwzKT4+M109MSxjPWMrMXwwO2FbbCsxNj4+Ml09MSxhW2wrNDA+PjJdPTh9ZWxzZSBsPTA7cmV0dXJuIDB8bH1mdW5jdGlvbiBSaCgpe3JldHVybiA0LjY1NjYxMjg3NTI0NTc5''@;'; put 'put ''N2UtMTAqKygwfEQxKCkpfWZ1bmN0aW9uIF9QKGwpe3JldHVybigwfChsfD0wKSk+MT8wfCgwfEQxKCkpJSgwfGwpOihCcig5NTY4Miw5NTY4OCw1OCw5NTY5OCksMCl9ZnVuY3Rpb24gVzQobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtlOmRve2lmKCgwfGwpPDEpYz0wO2Vsc2V7''@;'; put 'put ''Zm9yKGM9MHxRbihsPDwyKSxmPTA7KDB8ZikhPSgwfGwpOylhW2MrKGY8PDIpPj4yXT1mLGY9ZisxfDA7Zm9yKDs7KXtpZigoMHxsKTw9MSlicmVhayBlO3A9MHxfUChsKSxtPTB8YVsoQT1jKygoZj1sKy0xfDApPDwyKXwwKT4+Ml0sYVtBPj4yXT1hWyhwPWMrKHA8PDIpfDApPj4yXSxhW3A+''@;'; put 'put ''PjJdPW0sbD1mfX19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBuNyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2ZvcihwPTAsbT0wOyEoKDB8cCk+PSgwfGwpKTspQT0rX1tmKyhwPDwzKT4+M10qK19bYysocDw8Myk+PjNdK20scD1wKzF8MCxtPUE7cmV0dXJu''@;'; put 'put ''K219ZnVuY3Rpb24gdWEobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscD0rcDt2YXIgbT0wLEE9MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspX1soQT1mKyhtPDwzKXwwKT4+M109K19bQT4+M10qcCsgK19bYysobTw8Myk+PjNdLG09bSsxfDA7cmV0dXJuIDB8Zn1mdW5jdGlvbiB4dChsLGMs''@;'; put 'put ''ZixwKXtsfD0wLGN8PTAsZnw9MCxwPStwO3ZhciBtPTAsQT0wO2ZvcihtPTA7ISgoMHxtKT49KDB8bCkpOylfWyhBPWMrKG08PDMpfDApPj4zXT0rX1tmKyhtPDwzKT4+M10qcCsgK19bQT4+M10sbT1tKzF8MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIEMxKGwsYyxmLHApe2x8PTAscHw9MDt2YXIg''@;'; put 'put ''QSxtPTAsdz0wO2ZvcihBPTB8dnIoZnw9MCxjfD0wKSxwPTB8dnIocCxjKSxtPTAsZj0wOyEoKDB8Zik+PSgwfGMpKTspbT0odz0rX1tsKyhmK0E8PDMpPj4zXS0rX1tsKyhmK3A8PDMpPj4zXSkqdyttLGY9ZisxfDA7cmV0dXJuKygodz0rRjAoK20pKT4xZS0xNT93OjFlLTE1KX1mdW5jdGlv''@;'; put 'put ''biBTYyhsLGMsZixwKXtsfD0wLHB8PTA7dmFyIEEsbT0wLHc9MDtmb3IoQT0wfHZyKGZ8PTAsY3w9MCkscD0wfHZyKHAsYyksbT0wLGY9MDshKCgwfGYpPj0oMHxjKSk7KW09KHc9K19bbCsoZitBPDwzKT4+M10tK19bbCsoZitwPDwzKT4+M10pKncrbSxmPWYrMXwwO3JldHVybisgK0YwKCtt''@;'; put 'put ''KX1mdW5jdGlvbiB0dChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2ZvcihwPTAsbT0wOyEoKDB8bSk+PSgwfGYpKTspcD0oQT0rX1tsKyhtPDwzKT4+M10tK19bYysobTw8Myk+PjNdKSpBK3AsbT1tKzF8MDtyZXR1cm4rICtGMCgrcCl9ZnVuY3Rpb24gYnIobCxjKXtj''@;'; put 'put ''fD0wLDE9PSgwfE5vKGx8PTApKT8obD0wfGFbMTMyKygwfGFbMTYrKDB8THQobCkpPj4yXSk+PjJdLGFbbD4+Ml09MCxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MCxhW2wrMTI+PjJdPTApOihmdW5jdGlvbiBDUChsKXt2YXIgYzsoMHwoYz0wfGZyKDB8YVthWzExMisoMHxhWzE2KygwfEx0KGx8''@;'; put 'put ''PTApKT4+Ml0pPj4yXT4+Ml0pKSkhPSgwfChsPTB8YVs0NjkyNV0pKSYmKGFbNDY1NTVdPTAsYVs0NjkyNV09YyxhWzQ2OTI2XT0wfHNpKGMsMCw5NTcxMywwKSxhWzQ2OTI3XT0wfHNpKDB8YVs0NjkyNV0sMSw5NTcyMSwwKSxhWzQ2OTI4XT0wfHNpKDB8YVs0NjkyNV0sMSw5NTczOCwwKSxs''@;'; put 'put ''PTB8YVs0NjkyNV0pLGFbNDY5MjldPTB8TGkobCw5NTczOCksWF8oMTg2MjA4KSxhWzQ2NTU0XT0xLF9bMjMyODBdPStjbCgwfGFbNDY5MjVdLDB8YVs0NjkyNl0sMSwwKSxhWzQ2NTU2XT1hWzQ2OTI3XSxhWzQ2NTU3XT1hWzQ2OTI4XSxhWzQ2NTU4XT1hWzQ2OTI5XX0obCksYz0oMHxyMSgw''@;'; put 'put ''fExpKGMsOTU3MDQpKSk8PDI0Pj4yND8wfGZ1bmN0aW9uIEwwKGwpe2x8PTA7dmFyIG0sYz0wLGY9MCxwPTA7Zm9yKG09b2Usb2U9b2UrMTQ0fDAscD1tLGY9bSs4fDAsYVs0NjU1NV09MSsoYz0wfGFbNDY1NTVdKSxhW3A+PjJdPWMsYW8oZiw5NjIzNCxwKSxwPShmPTB8clQoMHx5cyhsLGYs''@;'; put 'put ''MSkpKSs4fDAsYz0wfEx0KGwpO2M7KVZuKDB8YVtwPj4yXSxjLDEpLGFbMTIrKDB8YVsxMTIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml09ZixjPTB8enQobCxjKTtyZXR1cm4gb2U9bSwwfGZ9KGwpOjB8ZnVuY3Rpb24gTlAobCxjKXt2YXIgayxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTA7''@;'; put 'put ''Zm9yKGZ1bmN0aW9uIFZQKGwsYyl7bHw9MDt2YXIgQSxiLGY9MCxwPTAsbT0wO2I9b2Usb2U9b2UrMTZ8MCxBPWIrOHwwLDAhPSgwfChwPTB8YVsyNCsoY3w9MCk+PjJdKSkmJjAhPSgwfChmPTB8TXIobCxwLDApKSl8fChtPTMpO2U6ZG97aWYoMz09KDB8bSkpe3A9YysyMHwwO3Q6ZG97aWYo''@;'; put 'put ''MHxhW3A+PjJdKWZvcihmPTB8THQobCk7Oyl7aWYoIWYpYnJlYWsgdDtpZigoMHxVTigwfGFbYVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdPj4yXSwwfGFbcD4+Ml0sMCkpPDwyND4+MjQpYnJlYWsgZTtmPTB8enQobCxmKX19d2hpbGUoMCk7Zj0wfEx0KGwpfX13aGlsZSgwKTthW0ErND4+Ml09''@;'; put 'put ''MCxhW0E+PjJdPTAsYVQobCxmLGMsMSxBKSxvZT1ifShsfD0wLGN8PTApLHc9MHxhWzQrKGs9MHxhW2M+PjJdKT4+Ml07dzspe2ZvcihiPTB8THQoTT0wfGFbdys4Pj4yXSksbD0wfGFbMTYrKGY9MHxhWzExMisoMHxhW2IrMTY+PjJdKT4+Ml0pKzQ+PjJdLGY9MHxhW2YrOD4+Ml0sbT1iLGI9''@;'; put 'put ''MHx6dChNLGIpO2I7KSgwfChBPTB8YVsxNisocD0wfGFbMTEyKygwfGFbYisxNj4+Ml0pPj4yXSkrND4+Ml0pKTwoMHxsKSYmKG09YixmPTB8YVtwKzg+PjJdLGw9QSksYj0wfHp0KE0sYik7YVsoTT00KyhiPTB8YVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdKXwwKT4+Ml09OHxhW00+PjJdLGFb''@;'; put 'put ''dz4+Ml09bSxNPTB8YVt3KzQ+PjJdLGlUKDM2KygwfGFbYisxMj4+Ml0pfDAsdyksdz1NfXJldHVybiBYXyhjKSwwfGt9KGwsMTg2MjA4KSxmdW5jdGlvbiBHUChsLGMsZil7dVQobHw9MCxjfD0wLCtfWzMyKyhmfD0wKT4+M10pfShsLGMsMTg2MjA4KSxmdW5jdGlvbiBPMChsKXtzVChsfD0w''@;'; put 'put ''KX0oYykpfWZ1bmN0aW9uIGgxKGwsYyl7dmFyIGY7cmV0dXJuIGx8PTAsY3w9MCxmPTB8UW4oMzIpLGFbZj4+Ml09NCxfW2YrOD4+M109Ljc1LGFbZisxNj4+Ml09MTA3Mzc0MTgyNCxhW2YrMjA+PjJdPTEsYVtmKzI0Pj4yXT1sLGFbZisyOD4+Ml09YywwfGZ9ZnVuY3Rpb24geWkobCl7SHQo''@;'; put 'put ''bHw9MCl9ZnVuY3Rpb24gczUobCl7dmFyIGM9MCxmPTA7aWYobHw9MCl7Zj0wfGFbbCs4Pj4yXTtkb3tpZigwfGYpe2lmKDB8YVtsPj4yXSl7aWYoSmEoZiksIShjPTB8YVtsKzEyPj4yXSkpYnJlYWs7SmEoYyk7YnJlYWt9MHxhW2wrMzY+PjJdJiYoSmEoZiksMHwoYz0wfGFbbCsxMj4+Ml0p''@;'; put 'put ''KSYmSmEoYyl9fXdoaWxlKDApO0phKDB8YVtsKzE2Pj4yXSksSmEoMHxhW2wrMjA+PjJdKSwwfChjPTB8YVtsKzI0Pj4yXSkmJigwfGFbbD4+Ml0pPjAmJkh0KGMpLHM1KDB8YVtsKzI4Pj4yXSksSHQobCl9fWZ1bmN0aW9uIFk0KGwsYyxmLHAsbSxBLHcsYixrLE0pe2x8PTAsY3w9MCxmfD0w''@;'; put 'put ''LHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wLE18PTA7dmFyIEdlLE10LGt0LGF0LEV0LFp0LEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLGx0PTA7WnQ9b2Usb2U9b2UrMzJ8MCxLPVp0KzI0fDAsR2U9WnQrMjB8''@;'; put 'put ''MCxrdD1adCsxNnwwLFI9WnQrMTJ8MCxhdD1adCs4fDAsRXQ9WnQrNHwwLExlPVp0LGFbKE10PVp0KzI4fDApPj4yXT0wLGFbSz4+Ml09MCxhW2t0Pj4yXT0wLGFbYXQ+PjJdPTAsYVtFdD4+Ml09MCxhW2M+PjJdPTAsYVtwPj4yXT0wLGFbdz4+Ml09MCxhW2I+PjJdPTAsbHQ9MHxhW2w+PjJd''@;'; put 'put ''LGFbTT4+Ml09YVsoRz1rKzI0fDApPj4yXSxEPTB8YVtHPj4yXTtlOmRve3N3aXRjaCgwfEQpe2Nhc2UgMTI6YVtHPj4yXT0zLGFbTT4+Ml09MyxZNChsLGMsZixwLG0sQSx3LGIsayxNKSwwPT0oMHxhW2M+PjJdKSYmKGFbRz4+Ml09NCxhW00+PjJdPTQsWTQobCxjLGYscCxtLEEsdyxiLGss''@;'; put 'put ''TSksMD09KDB8YVtjPj4yXSkpJiYoYVtHPj4yXT02LGFbTT4+Ml09NixZNChsLGMsZixwLG0sQSx3LGIsayxNKSwwPT0oMHxhW2M+PjJdKSkmJihhW0c+PjJdPTksYVtNPj4yXT05LFk0KGwsYyxmLHAsbSxBLHcsYixrLE0pLDA9PSgwfGFbYz4+Ml0pKSYmKGFbRz4+Ml09MixhW00+PjJdPTIs''@;'; put 'put ''WTQobCxjLGYscCxtLEEsdyxiLGssTSkpLGFbRz4+Ml09MTIsRz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWs7Y2FzZSA5OmNhc2UgMTA6aWYoZj0wfGFbaysyMD4+Ml0sOT09KDB8RCk/VXQobCxmLGt0LFIsR2UpOlNQKGwsZixrdCxSLEdlKSxPZT0wfGFbbCsyMD4+Ml0sTGU9MHxhW2wr''@;'; put 'put ''MjQ+PjJdLGJlPTB8YVtSPj4yXSwwfGFbaysyOD4+Ml0pe2lmKCgwfGJlKT09KDB8bHQpKXtHPTAsSz0wLGs9MCxSPTAsRD0wLE09MDticmVhayBlfX1lbHNlIGlmKCgwfGJlKT09KDB8bHQpfHwrX1trKzg+PjNdKisoMHxsdCk8KygwfGJlKSl7Rz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTA7YnJl''@;'; put 'put ''YWsgZX1pZigoMHxiZSk+PSgwfGFbaz4+Ml0pKXtIZT0wfFFuKGplPShldD0wfGFbR2U+PjJdKTw8MiksamU9MHxRbihqZSksZXQ9MHxRbihldDw8MyksYVtHZT4+Ml09MCxtZT0wfGFba3Q+PjJdLHBlPTAsUj0wO3Q6Zm9yKDshKCgwfHBlKT49KDB8bHQpKTspaWYoLTE9PSgwfGFbKGY9bWUr''@;'; put 'put ''KHBlPDwyKXwwKT4+Ml0pKXtmb3IoRz0wfGFbKGs9T2UrKChLPXBlKzF8MCk8PDIpfDApPj4yXSxmPTAsTT1EPTB8YVtPZSsocGU8PDIpPj4yXTshKCgwfE0pPj0oMHxHKSk7KWY9KCgwfGFbbWUrKGFbTGUrKE08PDIpPj4yXTw8Mik+PjJdKT4+PjMxXjEpK2Z8MCxNPU0rMXwwO2ZvcihCZT0x''@;'; put 'put ''LysoMHxmKSxmPUc7Oyl7aWYoKDB8RCk+PSgwfGYpKXtwZT1LO2NvbnRpbnVlIHR9KDB8YVttZSsoYVsoTT1MZSsoRDw8Mil8MCk+PjJdPDwyKT4+Ml0pPi0xPyhhW0hlKyhSPDwyKT4+Ml09cGUsYVtqZSsoYVtHZT4+Ml08PDIpPj4yXT1hW21lKyhhW00+PjJdPDwyKT4+Ml0sYVtHZT4+Ml09''@;'; put 'put ''TT0xKyhmPTB8YVtHZT4+Ml0pfDAsX1tldCsoZjw8Myk+PjNdPUJlLGY9MHxhW2s+PjJdKTpNPVIsRD1EKzF8MCxSPU19fWVsc2UgYVtIZSsoUjw8Mik+PjJdPXBlLGFbamUrKGFbR2U+PjJdPDwyKT4+Ml09YVtmPj4yXSxhW0dlPj4yXT1rPTErKEs9MHxhW0dlPj4yXSl8MCxfW2V0KyhLPDwz''@;'; put 'put ''KT4+M109MSxwZT1wZSsxfDAsUj1rO2x0PTB8c2coUixsdCxiZSxIZSxqZSxldCwxLDgpLGFbdz4+Ml09bHQsbHQ9MHxhZyhsdCksYVtiPj4yXT1sdCx3PTB8RUEobHQsbCwwfGFbdz4+Ml0pLGFbYz4+Ml09dyx3Pyh0aCgwfGFbYj4+Ml0sbSxBLDApLGFbKEs9MzYrKEc9MHxhW2M+PjJdKXww''@;'; put 'put ''KT4+Ml09M3xhW0s+PjJdLGFbYz4+Ml09MHxsZyhHKSxhW3A+PjJdPTAsRz1ldCxLPWplLGs9SGUsUj1IZSxEPWplLE09ZXQpOihHPWV0LEs9amUsaz1IZSxSPUhlLEQ9amUsTT1ldCl9ZWxzZSBHPTAsSz0wLGs9MCxSPTAsRD0wLE09MDticmVhaztjYXNlIDU6cnQ9MjY7YnJlYWs7Y2FzZSAx''@;'; put 'put ''OnpfKGwsMHxhWyhNPWsrMjB8MCk+PjJdLE10LEspLDI9PSgwfChmPTB8YVtHPj4yXSkpPyhmPU0scnQ9MjQpOnJ0PTI1O2JyZWFrO2Nhc2UgMjpmPWsrMjB8MCxydD0yNDticmVhaztjYXNlIDM6Wm4obCwwfGFbaysyMD4+Ml0sYXQsRXQsTGUpLHJ0PTEyO2JyZWFrO2Nhc2UgNDpaXyhsLDB8''@;'; put 'put ''YVtrKzIwPj4yXSxhdCxFdCxMZSkscnQ9MTI7YnJlYWs7Y2FzZSA2OmtQKGwsYXQsRXQsTGUpLHJ0PTEyO2JyZWFrO2RlZmF1bHQ6Rz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTB9fXdoaWxlKDApO2Rve2lmKDEyPT0oMHxydCkpe2lmKHBlPTB8YVtMZT4+Ml0sMHxhW2srMjg+PjJdKXtpZigoMHxw''@;'; put 'put ''ZSk9PSgwfGx0KSl7Rz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWt9fWVsc2UgaWYoKDB8cGUpPT0oMHxsdCl8fCtfW2srOD4+M10qKygwfGx0KTwrKDB8cGUpKXtHPTAsSz0wLGs9MCxSPTAsRD0wLE09MDticmVha31pZigoMHxwZSk+PSgwfGFbaz4+Ml0pKXttZT0wfFFuKGJlPWx0PDwy''@;'; put 'put ''KSxiZT0wfFFuKGJlKSxPZT0wfFFuKGx0PDwzKSxhW0dlPj4yXT0wLFI9MHxhW0V0Pj4yXSxHPTB8YVthdD4+Ml0sRD0wLGY9MDtlOmZvcig7ISgoMHxEKT49KDB8YVtMZT4+Ml0pKTspZm9yKEs9RCsxfDAsaz1SKyhLPDwyKXwwLE09MHxhW1IrKEQ8PDIpPj4yXTs7KXtpZigoMHxNKT49KDB8''@;'; put 'put ''YVtrPj4yXSkpe0Q9Sztjb250aW51ZSBlfWFbbWUrKGY8PDIpPj4yXT1hW0crKE08PDIpPj4yXSxhW2JlKyhhW0dlPj4yXTw8Mik+PjJdPUQsYVtHZT4+Ml09ZXQ9MSsoamU9MHxhW0dlPj4yXSl8MCxfW09lKyhqZTw8Myk+PjNdPTEsTT1NKzF8MCxmPWV0fWx0PTB8c2coZixsdCxwZSxtZSxi''@;'; put 'put ''ZSxPZSwxLDgpLGFbdz4+Ml09bHQsYVtiPj4yXT0wfGFnKGx0KSxhW3A+PjJdPTAsdz0wfEVBKDB8YVtiPj4yXSxsLDB8YVt3Pj4yXSksYVtjPj4yXT13LHc/KHRoKDB8YVtiPj4yXSxtLEEsMCksYVtiPj4yXT0wfHhBKDB8YVtiPj4yXSksYVsoSz0zNisoRz0wfGFbYz4+Ml0pfDApPj4yXT0z''@;'; put 'put ''fGFbSz4+Ml0sYVtjPj4yXT0wfGxnKEcpLEc9T2UsSz1iZSxrPW1lLFI9bWUsRD1iZSxNPU9lKTooRz1PZSxLPWJlLGs9bWUsUj1tZSxEPWJlLE09T2UpfWVsc2UgRz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTB9ZWxzZSAyND09KDB8cnQpJiYoUngobCwwfGFbZj4+Ml0sTXQsSyksZj0wfGFbRz4+''@;'; put 'put ''Ml0scnQ9MjUpfXdoaWxlKDApOzI1PT0oMHxydCkmJihydD01PT0oMHxmKT8yNjoyNyksMjY9PSgwfHJ0KSYmKGZ1bmN0aW9uIEJ4KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtZSxiZSxPZSxMZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDtmb3Io''@;'; put 'put ''YmU9MHxhWzIwKyhsfD0wKT4+Ml0sT2U9MHxhW2wrMjQ+PjJdLEE9MHxhW2wrND4+Ml0sSz0wfFFuKChMZT0wfGFbbD4+Ml0pPDwyKSxhW2Y+PjJdPUssbT0wOyEoKDB8bSk+PSgwfExlKSk7KWFbSysobTw8Mik+PjJdPW0sbT1tKzF8MDthW3A+PjJdPUEsbWU9MHxhW2wrMjg+PjJdO2U6ZG97''@;'; put 'put ''aWYoYyl7Zm9yKHBlPTB8VzQoTGUpLEs9MCxtPTAsdz0wOyEoKDB8Syk+PSgwfExlKSk7KXtpZigoMHxhWyhEPShNPTB8YVtmPj4yXSkrKChrPTB8YVtwZSsoSzw8Mik+PjJdKTw8Mil8MCk+PjJdKT09KDB8aykpe2ZvcihHPSsoKFI9MHxhW2JlKyhrKzE8PDIpPj4yXSktKGM9MHxhW2JlKyhr''@;'; put 'put ''PDwyKT4+Ml0pfDApLEE9MTshKCgwfGMpPj0oMHxSKSk7KSgwfGspIT0oMHwobD0wfGFbT2UrKGM8PDIpPj4yXSkpJiYoMHxhW00rKGw8PDIpPj4yXSk9PSgwfGwpJiYoYj0rX1ttZSsoYzw8Myk+PjNdLygrKCgwfGFbYmUrKGwrMTw8Mik+PjJdKS0oMHxhW2JlKyhsPDwyKT4+Ml0pfDApKkcp''@;'; put 'put ''LDAhPSgwfEEpfHxiPnc/KEE9MCxtPWwsdz1iKTpBPTApLGM9YysxfDA7QXx8KGFbTSsobTw8Mik+PjJdPWssYVtEPj4yXT1tLGFbcD4+Ml09KDB8YVtwPj4yXSktMSl9Sz1LKzF8MH1IdChwZSl9ZWxzZSBmb3IobT0wLHc9MCxrPTA7Oyl7aWYoKDB8ayk+PSgwfExlKSlicmVhayBlO2ZvcihS''@;'; put 'put ''PUsrKGs8PDIpfDAsRz0rKChEPTB8YVtiZSsoKE09aysxfDApPDwyKT4+Ml0pLShjPTB8YVtiZSsoazw8Mik+PjJdKXwwKSxBPTE7ISgoMHxjKT49KDB8RCkpOykoMHxrKSE9KDB8KGw9MHxhW09lKyhjPDwyKT4+Ml0pKSYmKDB8YVtLKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKDB8YVtSPj4yXSk9''@;'; put 'put ''PSgwfGspJiYoYj0rX1ttZSsoYzw8Myk+PjNdLygrKCgwfGFbYmUrKGwrMTw8Mik+PjJdKS0oMHxhW2JlKyhsPDwyKT4+Ml0pfDApKkcpLDAhPSgwfEEpfHxiPnc/KEE9MCxtPWwsdz1iKTpBPTApLGM9YysxfDA7MHxBfHwoYVtLKyhtPDwyKT4+Ml09ayxhW0srKGs8PDIpPj4yXT1tLGFbcD4+''@;'; put 'put ''Ml09KDB8YVtwPj4yXSktMSksaz1NfX13aGlsZSgwKX0obCwwfGFbaysyMD4+Ml0sTXQsSykscnQ9MjcpO2Rve2lmKDI3PT0oMHxydCkpe2lmKGY9MHxhW0s+PjJdLDB8YVtrKzI4Pj4yXSl7aWYoKDB8Zik9PSgwfGx0KSl7Rz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWt9fWVsc2UgaWYo''@;'; put 'put ''KDB8Zik9PSgwfGx0KXx8K19bays4Pj4zXSorKDB8bHQpPCsoMHxmKSl7Rz0wLEs9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWt9aWYoKDB8Zik+PSgwfGFbaz4+Ml0pKXtmb3IocGU9MHxRbihtZT1sdDw8MiksbWU9MHxRbihtZSksYmU9MHxRbihsdDw8MyksYVtHZT4+Ml09MCxLPTB8YVtNdD4+''@;'; put 'put ''Ml0sZj0wLEc9MDshKCgwfEcpPj0oMHxsdCkpOykoMHwoRD0wfGFbKE09SysoRzw8Mil8MCk+PjJdKSk+LTEmJihhW3BlKyhhW0dlPj4yXTw8Mik+PjJdPUcsYVttZSsoYVtHZT4+Ml08PDIpPj4yXT1mLGFbR2U+PjJdPVI9MSsocnQ9MHxhW0dlPj4yXSl8MCxfW2JlKyhydDw8Myk+PjNdPTEs''@;'; put 'put ''KDB8RCkhPSgwfEcpJiYoYVtwZSsoUjw8Mik+PjJdPWFbTT4+Ml0sYVttZSsoYVtHZT4+Ml08PDIpPj4yXT1mLGFbR2U+PjJdPTErKHJ0PTB8YVtHZT4+Ml0pLF9bYmUrKHJ0PDwzKT4+M109MSxhW0srKGFbTT4+Ml08PDIpPj4yXT0tMSksYVtNPj4yXT0tMSxmPWYrMXwwKSxHPUcrMXwwO2x0''@;'; put 'put ''PTB8c2coMHxhW0dlPj4yXSxsdCxmLHBlLG1lLGJlLDEsOCksYVt3Pj4yXT1sdCxsdD0wfGFnKGx0KSxhW2I+PjJdPWx0LHc9MHxFQShsdCxsLDB8YVt3Pj4yXSksYVtjPj4yXT13LHc/KHRoKDB8YVtiPj4yXSxtLEEsMCksYVtiPj4yXT0wfHhBKDB8YVtiPj4yXSksYVsoSz0zNisoRz0wfGFb''@;'; put 'put ''Yz4+Ml0pfDApPj4yXT0zfGFbSz4+Ml0sYVtjPj4yXT0wfGxnKEcpLGFbcD4+Ml09MCxHPWJlLEs9bWUsaz1wZSxSPXBlLEQ9bWUsTT1iZSk6KEc9YmUsSz1tZSxrPXBlLFI9cGUsRD1tZSxNPWJlKX1lbHNlIEc9MCxLPTAsaz0wLFI9MCxEPTAsTT0wfX13aGlsZSgwKTswfChmPTB8YVtNdD4+''@;'; put 'put ''Ml0pJiZIdChmKSwwfChmPTB8YVtrdD4+Ml0pJiZIdChmKSwwfGsmJkh0KFIpLDB8SyYmSHQoRCksMHxHJiZIdChNKSwwfChmPTB8YVthdD4+Ml0pJiZIdChmKSwwfChmPTB8YVtFdD4+Ml0pJiZIdChmKSxvZT1adH1mdW5jdGlvbiBabihsLGMsZixwLG0pe2N8PTAscHw9MCxtfD0wO3ZhciBi''@;'; put 'put ''ZSxIZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsT2U9MCxMZT0wLEJlPTA7Zm9yKE9lPTB8YVsyMCsobHw9MCk+PjJdLExlPTB8YVtsKzI0Pj4yXSxhWyhmfD0wKT4+Ml09MHxRbihCZT0oSGU9MHxhW2w+PjJdKTw8MiksYVtwPj4yXT0wfFFuKEJlKzR8''@;'; put 'put ''MCksQmU9MHxRbihCZSksQT0wOyEoKDB8QSk+PSgwfEhlKSk7KWFbQmUrKEE8PDIpPj4yXT1BLEE9QSsxfDA7YVttPj4yXT0wLGFbKG1lPTB8YVtwPj4yXSk+PjJdPTAsYmU9MHxhW2wrMjg+PjJdO2U6ZG97aWYoYyl7Zm9yKG1lPTB8VzQoSGUpLFI9MCxBPTA7Oyl7aWYoKDB8Uik+PSgwfEhl''@;'; put 'put ''KSl7cGU9MCxsPTAsYj0wO2JyZWFrfWw9MHxhW21lKyhSPDwyKT4+Ml07dDpkb3tpZigtMSE9KDB8YVtCZSsobDw8Mik+PjJdKSYmKEs9MHxhW09lKyhsPDwyKT4+Ml0sMT09KCgwfGFbT2UrKGwrMTw8Mik+PjJdKS1LfDApKSl7Zm9yKGFbQmUrKChrPTB8YVtMZSsoSzw8Mik+PjJdKTw8Mik+''@;'; put 'put ''PjJdPS0xLGFbKE09MHxhW2Y+PjJdKSsoQTw8Mik+PjJdPWssRD1PZSsoaysxPDwyKXwwLHc9MHxhW09lKyhrPDwyKT4+Ml0sQT1BKzF8MDshKCgwfHcpPj0oMHxhW0Q+PjJdKSk7KSgwfGspIT0oMHwoYz0wfGFbKGw9TGUrKHc8PDIpfDApPj4yXSkpJiYxPT0oKDB8YVtPZSsoYysxPDwyKT4+''@;'; put 'put ''Ml0pLSgwfGFbT2UrKGM8PDIpPj4yXSl8MCkmJihhW0JlKyhjPDwyKT4+Ml09LTEsYVtNKyhBPDwyKT4+Ml09YVtsPj4yXSxBPUErMXwwKSx3PXcrMXwwO2lmKChBLShjPTB8YVsodz0wfGFbcD4+Ml0pKygobD0wfGFbbT4+Ml0pPDwyKT4+Ml0pfDApPDUpe2FbbT4+Ml09cGU9bCsxfDAsYVt3''@;'; put 'put ''KyhwZTw8Mik+PjJdPUE7YnJlYWt9Zm9yKGM9YysxfDAsYVttPj4yXT1sPWwrMXwwLGFbdysobDw8Mik+PjJdPWMsbD1jOzspe2lmKCEoKDB8Yyk8KDB8QSkmKDB8bCk8KDB8QSkpKWJyZWFrIHQ7cGU9KDB8QSk8KDB8KHBlPWMrM3wwKSk/QTpwZSxhW20+PjJdPUQ9MSsoMHxhW20+PjJdKXww''@;'; put 'put ''LGFbdysoRDw8Mik+PjJdPXBlLGw9bCsxfDAsYz1wZX19fXdoaWxlKDApO1I9UisxfDB9Zm9yKDs7KXtpZigoMHxwZSk+PSgwfEhlKSl7bD0wO2JyZWFrfWlmKC0xIT0oMHwoYz0wfGFbKFI9QmUrKChEPTB8YVttZSsocGU8PDIpPj4yXSk8PDIpfDApPj4yXSkpKXtmb3IoSz0wfGFbT2UrKEQr''@;'; put 'put ''MTw8Mik+PjJdLGs9MSxNPTB8YVtPZSsoRDw8Mik+PjJdOyEoKDB8TSk+PSgwfEspKTspKDB8RCkhPSgwfCh3PTB8YVtMZSsoTTw8Mik+PjJdKSkmJi0xIT0oMHxhW0JlKyh3PDwyKT4+Ml0pJiYoLTEhPSgwfGMpPyhHPStfW2JlKyhNPDwzKT4+M10sMCE9KDB8ayl8fEc+Yj8oaz0wLGw9dyxi''@;'; put 'put ''PUcpOms9MCk6Yz0tMSksTT1NKzF8MDtrfHwoYVtCZSsobDw8Mik+PjJdPS0xLGFbUj4+Ml09LTEsYVsoUj0wfGFbZj4+Ml0pKyhBPDwyKT4+Ml09RCxLPUErMnwwLGFbUisoQSsxPDwyKT4+Ml09bCxSPTB8YVtwPj4yXSxhW20+PjJdPUE9MSsoMHxhW20+PjJdKXwwLGFbUisoQTw8Mik+PjJd''@;'; put 'put ''PUssQT1LKX1wZT1wZSsxfDB9Zm9yKDshKCgwfGwpPj0oMHxIZSkpOykoMHxhW0JlKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKExlPUErMXwwLGFbKDB8YVtmPj4yXSkrKEE8PDIpPj4yXT1sLE9lPTB8YVtwPj4yXSxhW20+PjJdPUE9MSsoMHxhW20+PjJdKXwwLGFbT2UrKEE8PDIpPj4yXT1MZSxB''@;'; put 'put ''PUxlKSxsPWwrMXwwO0h0KG1lKX1lbHNle0E9MCxsPTA7dDpmb3IoOzspe2Zvcig7Oyl7aWYoKDB8bCk+PSgwfEhlKSl7bD0wLGI9MCxjPTA7YnJlYWsgdH1pZihjPWwsbD1sKzF8MCwtMSE9KDB8YVtCZSsoYzw8Mik+PjJdKSYmMT09KCgwfGFbT2UrKGw8PDIpPj4yXSktKGM9MHxhW09lKyhj''@;'; put 'put ''PDwyKT4+Ml0pfDApKWJyZWFrfWZvcihhW0JlKygoTT0wfGFbTGUrKGM8PDIpPj4yXSk8PDIpPj4yXT0tMSxhWyhEPTB8YVtmPj4yXSkrKEE8PDIpPj4yXT1NLFI9T2UrKE0rMTw8Mil8MCxrPTB8YVtPZSsoTTw8Mik+PjJdLEE9QSsxfDA7ISgoMHxrKT49KDB8YVtSPj4yXSkpOykoMHxNKSE9''@;'; put 'put ''KDB8KHc9MHxhWyhjPUxlKyhrPDwyKXwwKT4+Ml0pKSYmMT09KCgwfGFbT2UrKHcrMTw8Mik+PjJdKS0oMHxhW09lKyh3PDwyKT4+Ml0pfDApJiYoYVtCZSsodzw8Mik+PjJdPS0xLGFbRCsoQTw8Mik+PjJdPWFbYz4+Ml0sQT1BKzF8MCksaz1rKzF8MDtpZigoQS0odz0wfGFbbWUrKChjPTB8''@;'; put 'put ''YVttPj4yXSk8PDIpPj4yXSl8MCk8NSlhW20+PjJdPXA9YysxfDAsYVttZSsocDw8Mik+PjJdPUE7ZWxzZSBmb3Iodz13KzF8MCxhW20+PjJdPWM9YysxfDAsYVttZSsoYzw8Mik+PjJdPXcsYz13Ozspe2lmKCEoKDB8dyk8KDB8QSkmKDB8Yyk8KDB8QSkpKWNvbnRpbnVlIHQ7cD0oMHxBKTwo''@;'; put 'put ''MHwocD13KzN8MCkpP0E6cCxhW20+PjJdPXBlPTErKDB8YVttPj4yXSl8MCxhW21lKyhwZTw8Mik+PjJdPXAsYz1jKzF8MCx3PXB9fXQ6Zm9yKDs7KXtkb3tmb3IoUj1jOzspe2lmKCgwfFIpPj0oMHxIZSkpe2w9MDticmVhayB0fWlmKC0xIT0oMHwodz0wfGFbKEs9QmUrKFI8PDIpfDApPj4y''@;'; put 'put ''XSkpKWJyZWFrO1I9UisxfDB9Zm9yKHBlPTB8YVtPZSsoKGM9UisxfDApPDwyKT4+Ml0sTT0xLEQ9MHxhW09lKyhSPDwyKT4+Ml07ISgoMHxEKT49KDB8cGUpKTspKDB8UikhPSgwfChrPTB8YVtMZSsoRDw8Mik+PjJdKSkmJi0xIT0oMHxhW0JlKyhrPDwyKT4+Ml0pJiYoLTEhPSgwfHcpPyhH''@;'; put 'put ''PStfW2JlKyhEPDwzKT4+M10sMCE9KDB8TSl8fEc+Yj8oTT0wLGw9ayxiPUcpOk09MCk6dz0tMSksRD1EKzF8MH13aGlsZSgwIT0oMHxNKSk7YVtCZSsobDw8Mik+PjJdPS0xLGFbSz4+Ml09LTEsYVsocGU9MHxhW2Y+PjJdKSsoQTw8Mik+PjJdPVIscD1BKzJ8MCxhW3BlKyhBKzE8PDIpPj4y''@;'; put 'put ''XT1sLGFbbT4+Ml09cGU9MSsoMHxhW20+PjJdKXwwLGFbbWUrKHBlPDwyKT4+Ml09cCxBPXB9Zm9yKDs7KXtpZigoMHxsKT49KDB8SGUpKWJyZWFrIGU7KDB8YVtCZSsobDw8Mik+PjJdKT09KDB8bCkmJihMZT1BKzF8MCxhWygwfGFbZj4+Ml0pKyhBPDwyKT4+Ml09bCxhW20+PjJdPUE9MSso''@;'; put 'put ''MHxhW20+PjJdKXwwLGFbbWUrKEE8PDIpPj4yXT1MZSxBPUxlKSxsPWwrMXwwfX19d2hpbGUoMCk7SHQoQmUpfWZ1bmN0aW9uIFpfKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiZSxCZSxqZSxldCxydCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9''@;'; put 'put ''MCxwZT0wLG1lPTAsT2U9MCxMZT0wLEhlPTA7Zm9yKHJ0PW9lLG9lPW9lKzE2fDAsSz1ydCs4fDAsZXQ9cnQsYVsoamU9cnQrNHwwKT4+Ml09MCxhW2V0Pj4yXT0wLExlPTB8YVtsKzIwPj4yXSxPZT0wfGFbbCsyND4+Ml0sYVtmPj4yXT0wfFFuKEhlPShCZT0wfGFbbD4+Ml0pPDwyKSxhW3A+''@;'; put 'put ''PjJdPTB8UW4oSGUrNHwwKSxIZT0wfFFuKEhlKSxBPTA7ISgoMHxBKT49KDB8QmUpKTspYVtIZSsoQTw8Mik+PjJdPUEsQT1BKzF8MDsoZnVuY3Rpb24gTHgobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEcsT2UsTGUsQmUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxLPTAs''@;'; put 'put ''cGU9MCxtZT0wLGJlPTAsSGU9MDtmb3IocGU9MHxhWzIwKyhsfD0wKT4+Ml0sbWU9MHxhW2wrMjQ+PjJdLEc9MHxhW2w+PjJdLE9lPTB8UW4oYmU9KEhlPTB8YVtsKzQ+PjJdKTw8MiksTGU9MHxRbihiZSs0fDApLEJlPTB8UW4oYmUpLGJlPTB8UW4oYmUpLEs9TGUrNHwwLGw9MDshKCgwfGwp''@;'; put 'put ''Pj0oMHxIZSkpOylhW09lKyhsPDwyKT4+Ml09MCxsPWwrMXwwO2ZvcihhW0s+PjJdPUhlLGw9MDs7KXtpZigoMHxsKT49KDB8SGUpKXt3PTEsTT0wO2JyZWFrfWFbQmUrKGw8PDIpPj4yXT0tMSxsPWwrMXwwfWU6Zm9yKDshKCgwfE0pPj0oMHxHKSk7KXtmb3IoUj1wZSsoKEQ9TSsxfDApPDwy''@;'; put 'put ''KXwwLGw9MHxhWyhBPXBlKyhNPDwyKXwwKT4+Ml07ISgoMHxsKT49KDB8KG09MHxhW1I+PjJdKSkpOylhWyhrPUsrKGFbT2UrKGFbbWUrKGw8PDIpPj4yXTw8Mik+PjJdPDwyKXwwKT4+Ml09KDB8YVtrPj4yXSktMSxsPWwrMXwwO2ZvcihsPXcsaz0wfGFbQT4+Ml07Oyl7aWYoKDB8ayk+PSgw''@;'; put 'put ''fG0pKXt3PWwsTT1EO2NvbnRpbnVlIGV9KDB8YVsoQT1CZSsoKGI9MHxhWyhtPU9lKyhhWyh3PW1lKyhrPDwyKXwwKT4+Ml08PDIpfDApPj4yXSk8PDIpfDApPj4yXSk8KDB8TSk/KGFbQT4+Ml09TSwwfGFbKG09SysoYjw8Mil8MCk+PjJdPyhhW2JlKyhiPDwyKT4+Ml09bCxhW0srKGw8PDIp''@;'; put 'put ''Pj4yXT0xLEE9bCsxfDAsbT1PZSsoYVt3Pj4yXTw8Mil8MCk6KGFbbT4+Ml09MSxBPWwsbD1iLG09YmUrKGI8PDIpfDApLGFbbT4+Ml09bCxsPUEpOihhW20+PjJdPWFbKGI9YmUrKGI8PDIpfDApPj4yXSxhWyhiPUsrKGFbYj4+Ml08PDIpfDApPj4yXT0xKygwfGFbYj4+Ml0pKSxrPWsrMXww''@;'; put 'put ''LG09MHxhW1I+PjJdfX1mb3IoYVtMZT4+Ml09MCxsPTAsbT0wOyEoKDB8bCk+PSgwfHcpKTspYVsoSz1MZSsoKHBlPWwrMXwwKTw8Mil8MCk+PjJdPW1lPSgwfGFbSz4+Ml0pK218MCxsPXBlLG09bWU7Zm9yKGFbZj4+Ml09YmUsbD0wOzspe2lmKCgwfGwpPj0oMHxIZSkpe2w9dzticmVha31h''@;'; put 'put ''WyhtZT1MZSsoYVtPZSsobDw8Mik+PjJdPDwyKXwwKT4+Ml09MSsoZj0wfGFbbWU+PjJdKSxhW2JlKyhmPDwyKT4+Ml09bCxsPWwrMXwwfWZvcig7ISgoMHxsKTw9MCk7KWFbTGUrKGw8PDIpPj4yXT1hW0xlKygoSGU9bCstMXwwKTw8Mik+PjJdLGw9SGU7YVtMZT4+Ml09MCxhW3A+PjJdPUxl''@;'; put 'put ''LGFbYz4+Ml09dyxIdChCZSksSHQoT2UpfSkobCxLLGplLGV0KSxhW20+PjJdPTAsYVsobWU9MHxhW3A+PjJdKT4+Ml09MCxiZT0wfGFbbCsyOD4+Ml0sQT0wLGw9MDtlOmZvcig7Oyl7az0wfGFbSz4+Ml0sTT0wfGFbZXQ+PjJdO2Rve2lmKCgwfGwpPj0oMHxrKSlicmVhayBlO0Q9bCxiPTB8''@;'; put 'put ''YVsoRz1NKygobD1sKzF8MCk8PDIpfDApPj4yXSxEPTB8YVtNKyhEPDwyKT4+Ml19d2hpbGUoKGItRHwwKTwyKTtmb3IoTT0wfGFbamU+PjJdLGs9MHxhW21lKyhhW20+PjJdPDwyKT4+Ml07ISgoMHxEKT49KDB8YikpOylhW0hlKyhhWyhwZT1NKyhEPDwyKXwwKT4+Ml08PDIpPj4yXT0tMSxi''@;'; put 'put ''PUErMXwwLGFbKDB8YVtmPj4yXSkrKEE8PDIpPj4yXT1hW3BlPj4yXSwoYi1rfDApPjM/KGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVttZSsoQTw8Mik+PjJdPWIsQT1iKTpBPWssaz1BLEQ9RCsxfDAsQT1iLGI9MHxhW0c+PjJdOygwfEEpPD0oMHxrKXx8KGFbbT4+Ml09cGU9MSsoMHxh''@;'; put 'put ''W20+PjJdKXwwLGFbbWUrKHBlPDwyKT4+Ml09QSl9ZTpkb3tpZihjKXtmb3IobWU9MHxXNChCZSkscGU9MCxsPTAsdz0wOzspe2lmKCgwfHBlKT49KDB8QmUpKXtsPTA7YnJlYWt9aWYoLTEhPSgwfChiPTB8YVsoYz1IZSsoKEc9MHxhW21lKyhwZTw8Mik+PjJdKTw8Mil8MCk+PjJdKSkpe2Zv''@;'; put 'put ''cihLPTB8YVtMZSsoRysxPDwyKT4+Ml0sTT0xLEQ9MHxhW0xlKyhHPDwyKT4+Ml07ISgoMHxEKT49KDB8SykpOykoMHxHKSE9KDB8KGs9MHxhW09lKyhEPDwyKT4+Ml0pKSYmLTEhPSgwfGFbSGUrKGs8PDIpPj4yXSkmJigtMSE9KDB8Yik/KFI9K19bYmUrKEQ8PDMpPj4zXSwwIT0oMHxNKXx8''@;'; put 'put ''Uj53PyhNPTAsbD1rLHc9Uik6TT0wKTpiPS0xKSxEPUQrMXwwO018fChhW0hlKyhsPDwyKT4+Ml09LTEsYVtjPj4yXT0tMSxhWyhjPTB8YVtmPj4yXSkrKEE8PDIpPj4yXT1HLEs9QSsyfDAsYVtjKyhBKzE8PDIpPj4yXT1sLGM9MHxhW3A+PjJdLGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAs''@;'; put 'put ''YVtjKyhBPDwyKT4+Ml09SyxBPUspfXBlPXBlKzF8MH1mb3IoOyEoKDB8bCk+PSgwfEJlKSk7KSgwfGFbSGUrKGw8PDIpPj4yXSk9PSgwfGwpJiYoTGU9QSsxfDAsYVsoMHxhW2Y+PjJdKSsoQTw8Mik+PjJdPWwsT2U9MHxhW3A+PjJdLGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVtPZSso''@;'; put 'put ''QTw8Mik+PjJdPUxlLEE9TGUpLGw9bCsxfDA7SHQobWUpfWVsc2V7bD0wLHc9MCxiPTA7dDpmb3IoOzspe2Rve2ZvcihjPWI7Oyl7aWYoKDB8Yyk+PSgwfEJlKSl7bD0wO2JyZWFrIHR9aWYoLTEhPSgwfChrPTB8YVsoSz1IZSsoYzw8Mil8MCk+PjJdKSkpYnJlYWs7Yz1jKzF8MH1mb3IocGU9''@;'; put 'put ''MHxhW0xlKygoYj1jKzF8MCk8PDIpPj4yXSxEPTEsRz0wfGFbTGUrKGM8PDIpPj4yXTshKCgwfEcpPj0oMHxwZSkpOykoMHxjKSE9KDB8KE09MHxhW09lKyhHPDwyKT4+Ml0pKSYmLTEhPSgwfGFbSGUrKE08PDIpPj4yXSkmJigtMSE9KDB8ayk/KFI9K19bYmUrKEc8PDMpPj4zXSwwIT0oMHxE''@;'; put 'put ''KXx8Uj53PyhEPTAsbD1NLHc9Uik6RD0wKTprPS0xKSxHPUcrMXwwfXdoaWxlKDAhPSgwfEQpKTthW0hlKyhsPDwyKT4+Ml09LTEsYVtLPj4yXT0tMSxhWyhwZT0wfGFbZj4+Ml0pKyhBPDwyKT4+Ml09YyxwPUErMnwwLGFbcGUrKEErMTw8Mik+PjJdPWwsYVttPj4yXT1wZT0xKygwfGFbbT4+''@;'; put 'put ''Ml0pfDAsYVttZSsocGU8PDIpPj4yXT1wLEE9cH1mb3IoOzspe2lmKCgwfGwpPj0oMHxCZSkpYnJlYWsgZTsoMHxhW0hlKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKExlPUErMXwwLGFbKDB8YVtmPj4yXSkrKEE8PDIpPj4yXT1sLGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVttZSsoQTw8Mik+''@;'; put 'put ''PjJdPUxlLEE9TGUpLGw9bCsxfDB9fX13aGlsZSgwKTtIdCgwfGFbamU+PjJdKSxIdCgwfGFbZXQ+PjJdKSxIdChIZSksb2U9cnR9ZnVuY3Rpb24ga1AobCxjLGYscCl7Znw9MCxwfD0wO3ZhciBLLHBlLE9lLEJlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLG1lPTAsYmU9''@;'; put 'put ''MCxMZT0wO2ZvcihtZT0wfGFbMjArKGx8PTApPj4yXSxiZT0wfGFbbCsyND4+Ml0sYVsoY3w9MCk+PjJdPTB8UW4oTGU9KEJlPTB8YVtsPj4yXSk8PDIpLGFbZj4+Ml09MHxRbihMZSs0fDApLExlPTB8UW4oTGUpLHBlPTB8UW4oQmU8PDQpLG09MDshKCgwfG0pPj0oMHxCZSkpOylhW0xlKyht''@;'; put 'put ''PDwyKT4+Ml09bSxtPW0rMXwwO2ZvcihhW3A+PjJdPTAsYVthW2Y+PjJdPj4yXT0wLEs9MHxhW2wrMjg+PjJdLE9lPTB8VzQoQmUpLG09MCxEPTA7Oyl7aWYoKDB8RCk+PSgwfEJlKSl7Rz0wO2JyZWFrfWw9MHxhW09lKyhEPDwyKT4+Ml07ZTpkb3tpZigtMSE9KDB8YVtMZSsobDw8Mik+PjJd''@;'; put 'put ''KSYmKFI9MHxhW21lKyhsPDwyKT4+Ml0sMT09KCgwfGFbbWUrKGwrMTw8Mik+PjJdKS1SfDApKSl7Zm9yKGFbTGUrKChiPTB8YVtiZSsoUjw8Mik+PjJdKTw8Mik+PjJdPS0xLGFbKGs9MHxhW2M+PjJdKSsobTw8Mik+PjJdPWIsTT1tZSsoYisxPDwyKXwwLHc9MHxhW21lKyhiPDwyKT4+Ml0s''@;'; put 'put ''bT1tKzF8MDshKCgwfHcpPj0oMHxhW00+PjJdKSk7KSgwfGIpIT0oMHwoQT0wfGFbKGw9YmUrKHc8PDIpfDApPj4yXSkpJiYxPT0oKDB8YVttZSsoQSsxPDwyKT4+Ml0pLSgwfGFbbWUrKEE8PDIpPj4yXSl8MCkmJihhW0xlKyhBPDwyKT4+Ml09LTEsYVtrKyhtPDwyKT4+Ml09YVtsPj4yXSxt''@;'; put 'put ''PW0rMXwwKSx3PXcrMXwwO2lmKChtLShBPTB8YVsodz0wfGFbZj4+Ml0pKygobD0wfGFbcD4+Ml0pPDwyKT4+Ml0pfDApPDUpe2FbcD4+Ml09Rz1sKzF8MCxhW3crKEc8PDIpPj4yXT1tO2JyZWFrfWZvcihBPUErMXwwLGFbcD4+Ml09bD1sKzF8MCxhW3crKGw8PDIpPj4yXT1BLGw9QTs7KXtp''@;'; put 'put ''ZighKCgwfEEpPCgwfG0pJigwfGwpPCgwfG0pKSlicmVhayBlO0c9KDB8bSk8KDB8KEc9QSszfDApKT9tOkcsYVtwPj4yXT1NPTErKDB8YVtwPj4yXSl8MCxhW3crKE08PDIpPj4yXT1HLGw9bCsxfDAsQT1HfX19d2hpbGUoMCk7RD1EKzF8MH1mb3IoOzspe2lmKCgwfEcpPj0oMHxCZSkpe2w9''@;'; put 'put ''MDticmVha31pZigtMSE9KDB8KGw9MHxhWyhSPUxlKygoRD0wfGFbT2UrKEc8PDIpPj4yXSk8PDIpfDApPj4yXSkpKXtmb3IoTT0wfGFbbWUrKEQrMTw8Mik+PjJdLEE9MCxrPTB8YVttZSsoRDw8Mik+PjJdOyEoKDB8ayk+PSgwfE0pKTspKDB8RCkhPSgwfChiPTB8YVtiZSsoazw8Mik+PjJd''@;'; put 'put ''KSkmJi0xIT0oMHxhW0xlKyhiPDwyKT4+Ml0pJiYodz1BPDwxLC0xPT0oMHxsKT9sPS0xOihfW3BlKyh3PDwzKT4+M109KygwfGIpLF9bcGUrKCgxfHcpPDwzKT4+M109K19bSysoazw8Myk+PjNdLEE9QSsxfDApKSxrPWsrMXwwO2lmKCgwfEEpPjApe2ZvcihJMShwZSxBLDE2LDgxKSxBPSgw''@;'; put 'put ''fEEpPDM/QTozLGw9MDshKCgwfGwpPj0oMHxBKSk7KWFbTGUrKChNPX5+K19bcGUrKGw8PDE8PDMpPj4zXSk8PDIpPj4yXT0tMSxhWygwfGFbYz4+Ml0pKyhtPDwyKT4+Ml09TSxsPWwrMXwwLG09bSsxfDA7YVtSPj4yXT0tMSxSPW0rMXwwLGFbKDB8YVtjPj4yXSkrKG08PDIpPj4yXT1ELEQ9''@;'; put 'put ''MHxhW2Y+PjJdLGFbcD4+Ml09bT0xKygwfGFbcD4+Ml0pfDAsYVtEKyhtPDwyKT4+Ml09UixtPVJ9fUc9RysxfDB9Zm9yKDshKCgwfGwpPj0oMHxCZSkpOykoMHxhW0xlKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKGJlPW0rMXwwLGFbKDB8YVtjPj4yXSkrKG08PDIpPj4yXT1sLG1lPTB8YVtmPj4y''@;'; put 'put ''XSxhW3A+PjJdPW09MSsoMHxhW3A+PjJdKXwwLGFbbWUrKG08PDIpPj4yXT1iZSxtPWJlKSxsPWwrMXwwO0h0KE9lKSxIdChMZSl9ZnVuY3Rpb24gel8obCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIE0scGUsbWUsYmUsbT0wLEE9MCx3PTAsYj0wLGs9MCxEPTAsUj0wLEc9MCxLPTA7Zm9y''@;'; put 'put ''KHBlPTB8YVsyMCsobHw9MCk+PjJdLG1lPTB8YVtsKzI0Pj4yXSxtPTB8YVtsKzQ+PjJdLE09MHxRbigoYmU9MHxhW2w+PjJdKTw8MiksYVtmPj4yXT1NLGw9MDshKCgwfGwpPj0oMHxiZSkpOylhW00rKGw8PDIpPj4yXT1sLGw9bCsxfDA7YVtwPj4yXT1tO2U6ZG97aWYoYyl7Zm9yKGM9MHxX''@;'; put 'put ''NChiZSksbD0wOyEoKDB8bCk+PSgwfGJlKSk7KXtmb3Iodz1wZSsoMSsoQT0wfGFbYysobDw8Mik+PjJdKTw8Mil8MCxtPTB8YVtwZSsoQTw8Mik+PjJdOyEoKDB8bSk+PSgwfGFbdz4+Ml0pKTspKDB8QSkhPSgwfChrPTB8YVsoYj1tZSsobTw8Mil8MCk+PjJdKSkmJigwfGFbKFI9KEQ9MHxh''@;'; put 'put ''W2Y+PjJdKSsoazw8Mil8MCk+PjJdKT09KDB8aykmJigwfGFbKEc9RCsoQTw8Mil8MCk+PjJdKT09KDB8QSkmJihhW1I+PjJdPUEsYVtHPj4yXT1hW2I+PjJdLGFbcD4+Ml09KDB8YVtwPj4yXSktMSksbT1tKzF8MDtsPWwrMXwwfUh0KGMpfWVsc2V7bT0wO3Q6Zm9yKDs7KXtpZigoMHxtKT49''@;'; put 'put ''KDB8YmUpKWJyZWFrIGU7Zm9yKEE9cGUrKChjPW0rMXwwKTw8Mil8MCx3PU0rKG08PDIpfDAsYj1NKyhtPDwyKXwwLGw9MHxhW3BlKyhtPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfGFbQT4+Ml0pKXttPWM7Y29udGludWUgdH0oMHxtKSE9KDB8KGY9MHxhWyhrPW1lKyhsPDwyKXwwKT4+Ml0p''@;'; put 'put ''KSYmKDB8YVsoSz1NKyhmPDwyKXwwKT4+Ml0pPT0oMHxmKSYmKDB8YVt3Pj4yXSk9PSgwfG0pJiYoYVtLPj4yXT1tLGFbYj4+Ml09YVtrPj4yXSxhW3A+PjJdPSgwfGFbcD4+Ml0pLTEpLGw9bCsxfDB9fX19d2hpbGUoMCl9ZnVuY3Rpb24gUngobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFy''@;'; put 'put ''IHBlLG1lLGJlLE9lLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MDtmb3IobWU9MHxhWzIwKyhsfD0wKT4+Ml0sYmU9MHxhW2wrMjQ+PjJdLEE9MHxhW2wrND4+Ml0sRz0wfFFuKChPZT0wfGFbbD4+Ml0pPDwyKSxhW2Y+PjJdPUcsbT0wOyEoKDB8bSk+PSgwfE9lKSk7''@;'; put 'put ''KWFbRysobTw8Mik+PjJdPW0sbT1tKzF8MDthW3A+PjJdPUEscGU9MHxhW2wrMjg+PjJdO2U6ZG97aWYoYyl7Zm9yKEs9MHxXNChPZSksRz0wLG09MCx3PTA7ISgoMHxHKT49KDB8T2UpKTspe2lmKCgwfGFbKEQ9KE09MHxhW2Y+PjJdKSsoKGs9MHxhW0srKEc8PDIpPj4yXSk8PDIpfDApPj4y''@;'; put 'put ''XSk9PSgwfGspKXtmb3IoUj0wfGFbbWUrKGsrMTw8Mik+PjJdLGM9MHxhW21lKyhrPDwyKT4+Ml0sQT0xOyEoKDB8Yyk+PSgwfFIpKTspKDB8aykhPSgwfChsPTB8YVtiZSsoYzw8Mik+PjJdKSkmJigwfGFbTSsobDw8Mik+PjJdKT09KDB8bCkmJihiPStfW3BlKyhjPDwzKT4+M10sMCE9KDB8''@;'; put 'put ''QSl8fGI+dz8oQT0wLG09bCx3PWIpOkE9MCksYz1jKzF8MDtBfHwoYVtNKyhtPDwyKT4+Ml09ayxhW0Q+PjJdPW0sYVtwPj4yXT0oMHxhW3A+PjJdKS0xKX1HPUcrMXwwfUh0KEspfWVsc2UgZm9yKG09MCx3PTAsaz0wOzspe2lmKCgwfGspPj0oMHxPZSkpYnJlYWsgZTtmb3IoRD0wfGFbbWUr''@;'; put 'put ''KChNPWsrMXwwKTw8Mik+PjJdLFI9Rysoazw8Mil8MCxBPTEsYz0wfGFbbWUrKGs8PDIpPj4yXTshKCgwfGMpPj0oMHxEKSk7KSgwfGspIT0oMHwobD0wfGFbYmUrKGM8PDIpPj4yXSkpJiYoMHxhW0crKGw8PDIpPj4yXSk9PSgwfGwpJiYoMHxhW1I+PjJdKT09KDB8aykmJihiPStfW3BlKyhj''@;'; put 'put ''PDwzKT4+M10sMCE9KDB8QSl8fGI+dz8oQT0wLG09bCx3PWIpOkE9MCksYz1jKzF8MDswfEF8fChhW0crKG08PDIpPj4yXT1rLGFbRysoazw8Mik+PjJdPW0sYVtwPj4yXT0oMHxhW3A+PjJdKS0xKSxrPU19fXdoaWxlKDApfWZ1bmN0aW9uIFV0KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAs''@;'; put 'put ''bXw9MDt2YXIgRCxSLEcsQT0wLHc9MCxiPTAsaz0wLE09MDtmb3IoUj0wfGFbMjArKGx8PTApPj4yXSxHPTB8YVtsKzI0Pj4yXSxrPTB8UW4oKEQ9MHxhW2w+PjJdKTw8MiksYVtmPj4yXT1rLGw9MDshKCgwfGwpPj0oMHxEKSk7KWFbaysobDw8Mik+PjJdPS0xMDAsbD1sKzF8MDthW3A+PjJd''@;'; put 'put ''PTAsYVttPj4yXT0wO2U6ZG97aWYoYyl7Zm9yKGI9MHxXNChEKSx3PTA7ISgoMHx3KT49KDB8RCkpOyl7bD0oTT0wfGFbZj4+Ml0pKygoaz0wfGFbYisodzw8Mik+PjJdKTw8Mil8MDt0OmRve2lmKC0xMDA9PSgwfGFbbD4+Ml0pKWZvcihjPTB8YVtwPj4yXSxhW3A+PjJdPWMrMSxhW2w+PjJd''@;'; put 'put ''PWMsYz1SKyhrKzE8PDIpfDAsbD0wfGFbUisoazw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHxhW2M+PjJdKSlicmVhayB0OygwfGspIT0oMHwoQT0wfGFbRysobDw8Mik+PjJdKSkmJihhW00rKEE8PDIpPj4yXT0tMSxhW20+PjJdPTErKDB8YVttPj4yXSkpLGw9bCsxfDB9fXdoaWxlKDApO3c9''@;'; put 'put ''dysxfDB9SHQoYil9ZWxzZXtjPTA7dDpmb3IoOzspe2lmKCgwfGMpPj0oMHxEKSlicmVhayBlO2lmKC0xMDA9PSgwfGFbaysoYzw8Mik+PjJdKSlmb3IoYVtwPj4yXT0xKyhBPTB8YVtwPj4yXSksYVtrKyhjPDwyKT4+Ml09QSx3PVIrKChBPWMrMXwwKTw8Mil8MCxsPTB8YVtSKyhjPDwyKT4+''@;'; put 'put ''Ml07Oyl7aWYoKDB8bCk+PSgwfGFbdz4+Ml0pKXtjPUE7Y29udGludWUgdH0oMHxjKSE9KDB8KGI9MHxhW0crKGw8PDIpPj4yXSkpJiYoYVtrKyhiPDwyKT4+Ml09LTEsYVttPj4yXT0xKygwfGFbbT4+Ml0pKSxsPWwrMXwwfWVsc2UgYz1jKzF8MH19fXdoaWxlKDApO2FbbT4+Ml09KDB8YVtt''@;'; put 'put ''Pj4yXSkrKDB8YVtwPj4yXSl9ZnVuY3Rpb24gU1AobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBNLEQsUixHLEsscGUsQT0wLHc9MCxiPTAsaz0wO2ZvcihwZT1vZSxvZT1vZSsxNnwwLFI9cGUrNHwwLEc9cGUsSz0wfGFbMjArKGx8PTApPj4yXSxEPTB8YVtsKzI0Pj4yXSxs''@;'; put 'put ''PTB8UW4oKHc9MHxhW2w+PjJdKTw8MiksYVtmPj4yXT1sLEE9MDthW1I+PjJdPUEsISgoMHxBKT49KDB8dykpOylhW2wrKEE8PDIpPj4yXT0tMTAwLEE9MSsoMHxhW1I+PjJdKXwwO2FbcD4+Ml09MCxhW20+PjJdPTAsTT0wfGZ1bmN0aW9uIFB4KGwsYyl7bHw9MCxjfD0wO3ZhciBtLGY9MCxw''@;'; put 'put ''PTA7Zm9yKG09MHxRbigyOCksYVttPj4yXT0wLGFbbSs0Pj4yXT1sLGFbbSs4Pj4yXT1jLGFbbSsxMj4+Ml09LTEsYVsocD1tKzE2fDApPj4yXT0wfFFuKDQrKGM8PDIpfDApLGY9MDshKCgwfGYpPigwfGMpKTspYVsoMHxhW3A+PjJdKSsoZjw8Mik+PjJdPTAsZj1mKzF8MDtmb3IoYVsocD1t''@;'; put 'put ''KzIwfDApPj4yXT0wfFFuKGM9NCsobDw8Mil8MCksZj0wOyEoKDB8Zik+KDB8bCkpOylhWygwfGFbcD4+Ml0pKyhmPDwyKT4+Ml09MCxmPWYrMXwwO2ZvcihjPTB8UW4oYyksYVttKzI0Pj4yXT1jLGY9MDshKCgwfGYpPigwfGwpKTspYVtjKyhmPDwyKT4+Ml09LTk5OSxmPWYrMXwwO3JldHVy''@;'; put 'put ''biAwfG19KHcsKHc8PDEpLTJ8MCk7ZTpkb3tpZihjKXtmb3IoQT0wfFc0KHcpLGw9MDshKCgwfGwpPj0oMHx3KSk7KWFbUj4+Ml09az0wfGFbQSsobDw8Mik+PjJdLElBKE0saywoMHxhW0srKGsrMTw8Mik+PjJdKS0oMHxhW0srKGs8PDIpPj4yXSl8MCksbD1sKzF8MDtIdChBKX1lbHNlIGZv''@;'; put 'put ''cihsPTA7Oyl7aWYoYVtSPj4yXT1sLCgwfGwpPj0oMHx3KSlicmVhayBlO0lBKE0sbCwoMHxhW0srKChrPWwrMXwwKTw8Mik+PjJdKS0oMHxhW0srKGw8PDIpPj4yXSl8MCksbD1rfX13aGlsZSgwKTtlOmZvcig7az0wPT0oMHxIeChNLFIsRykpLGw9MHxhW3A+PjJdLCFrOylmb3IoYVtwPj4y''@;'; put 'put ''XT1sKzEsYVsoMHxhW2Y+PjJdKSsoYVtSPj4yXTw8Mik+PjJdPWwsbD0wfGFbUj4+Ml0saz0wfGFbSysobDw8Mik+PjJdOzspe2lmKCgwfGspPj0oMHxhW0srKGwrMTw8Mik+PjJdKSljb250aW51ZSBlO2lmKCgwfGwpIT0oMHwoYj0wfGFbRCsoazw8Mik+PjJdKSkpe3Q6ZG97aWYoLTEwMD09''@;'; put 'put ''KDB8YVsoMHxhW2Y+PjJdKSsoYjw8Mik+PjJdKSlmb3IoVngoTSxiKSxhWygwfGFbZj4+Ml0pKyhiPDwyKT4+Ml09LTEsQT1LKyhiKzE8PDIpfDAsbD0wfGFbSysoYjw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHxhW0E+PjJdKSlicmVhayB0OygwfGIpIT0oMHwodz0wfGFbKGM9RCsobDw8Mil8''@;'; put 'put ''MCk+PjJdKSkmJi0xMDA9PSgwfGFbKDB8YVtmPj4yXSkrKHc8PDIpPj4yXSkmJih3PTB8TngoTSx3KSxhW0c+PjJdPXcsSUEoTSwwfGFbYz4+Ml0sdysxfDApKSxsPWwrMXwwfX13aGlsZSgwKTthW20+PjJdPTErKDB8YVttPj4yXSksbD0wfGFbUj4+Ml19az1rKzF8MH1hW20+PjJdPSgwfGFb''@;'; put 'put ''bT4+Ml0pK2wsZnVuY3Rpb24gRngobCl7dmFyIGM9MCxmPTAscD0wLG09MDtpZigwfChsfD0wKSl7aWYoMHwoYz0wfGFbKHA9bCsxNnwwKT4+Ml0pKXtmb3IobT1sKzh8MCxmPTA7ISgoMHxmKT4oMHxhW20+PjJdKSk7KWVUKDB8YVtjKyhmPDwyKT4+Ml0sMTA1KSxmPWYrMXwwLGM9MHxhW3A+''@;'; put 'put ''PjJdO0h0KGMpfTB8KGM9MHxhW2wrMjA+PjJdKSYmSHQoYyksSHQoMHxhW2wrMjQ+PjJdKSxIdChsKX19KE0pLG9lPXBlfWZ1bmN0aW9uIFZpKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtO209MCE9KDB8SzMobHw9MCwwKSkmJjE9PSgwfGFbbCsxNj4+Ml0pP2w6MHxsNShsKTtkb3tp''@;'; put 'put ''ZihjKXtpZigwfEszKGMsMCkmJjE9PSgwfGFbYysxNj4+Ml0pKWJyZWFrO2M9MHxFaihjLDApfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiBjPTB8UTQoZj0wfFU0KG0sYyxmKSxwKSwoMHxtKSE9KDB8bCkmJihhW2YrMzY+PjJdPTEpLDB8Y31mdW5jdGlvbiBVNChsLGMsZil7Y3w9MCxmfD0w''@;'; put 'put ''O3ZhciBwPTA7cmV0dXJuKGx8PTApPyhwPTB8UW4oNDQpLGFbcD4+Ml09MCxhW3ArND4+Ml09YVtsKzQ+PjJdLGFbcCs4Pj4yXT1sLGFbcCsxMj4+Ml09YyxhW3ArMTY+PjJdPTAsYVtwKzIwPj4yXT0wLGFbcCsyND4+Ml09ZixhW3ArMjg+PjJdPTAsYVtwKzMyPj4yXT0wLGFbcCszNj4+Ml09''@;'; put 'put ''MCxsPXApOmw9MCwwfGx9ZnVuY3Rpb24gUTQobCxjKXtsfD0wLGN8PTA7dmFyIHAsbSxBLHcsTSxmPTAsYj0wLGs9MDtyZXR1cm4gTT1vZSxvZT1vZSszMnwwLHA9TSsyMHwwLEE9TSsxMnwwLHc9TSs4fDAsYj1NKzR8MCxrPU0sYVsobT1NKzE2fDApPj4yXT0wLCgwfGFbbD4+Ml0pPCgoMHxh''@;'; put 'put ''W2MrMTY+PjJdKS0xfDApJiYoZnVuY3Rpb24gT3gobCxjLGYscCxtLEEsdyxiLGssTSl7dmFyIEQsUixHLEsscGUsbWUsYmUsT2UsTGU7Y3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wLE18PTAsTGU9b2Usb2U9b2UrMzJ8MCxSPUxlKzEyfDAsRz1MZSs4fDAsSz1MZSs0''@;'; put 'put ''fDAscGU9TGUsYVsoRD1MZSsxNnwwKT4+Ml09bHw9MCxhW1I+PjJdPTAsYVtHPj4yXT0wLGFbSz4+Ml09MCxhW3BlPj4yXT0wLGFbdz4+Ml09MCxhW2I+PjJdPTAsYVtjPj4yXT0wLGFbQT4+Ml09MCxhW3A+PjJdPTAsbWU9aysyOHwwLGJlPWsrOHwwLE9lPSsoMHxhW2wrND4+Ml0pLG09Zjtk''@;'; put 'put ''b3tpZihZNChsLEQsbSxSLDAscGUsRyxLLGssTSksISgobT0wfGFbRD4+Ml0pJiYoZj0wfGFbbSs0Pj4yXSxtPTB8YVt3Pj4yXSxtPyhsPTB8al8obSwwfGFbRz4+Ml0pLEphKDB8YVt3Pj4yXSksSmEoMHxhW0c+PjJdKSxhW3c+PjJdPWwsbD0wfGpfKDB8YVtLPj4yXSwwfGFbYj4+Ml0pLEph''@;'; put 'put ''KDB8YVtiPj4yXSksSmEoMHxhW0s+PjJdKSxhW2I+PjJdPWwpOihhW3c+PjJdPWFbRz4+Ml0sYVtiPj4yXT1hW0s+PjJdKSxtPTB8YVtjPj4yXSwwfG0mJkphKG0pLGFbYz4+Ml09YVtEPj4yXSxtPTB8YVtwPj4yXSwwfG0mJkphKG0pLG09MHxhW1I+PjJdLGFbcD4+Ml09bSxsPTB8YVtBPj4y''@;'; put 'put ''XSxsJiYoSHQobCksbT0wfGFbUj4+Ml0pLGFbQT4+Ml09YVtwZT4+Ml0sbD0wfGFbRD4+Ml0sYVtwZT4+Ml09MCwrX1tiZT4+M10qT2U8KygwfGYpKSkpYnJlYWt9d2hpbGUoMT09KDB8YVttZT4+Ml0pKTtvZT1MZX0oMHxhW2wrOD4+Ml0sYiwwfGFbbCsxMj4+Ml0saywwLG0sQSx3LGMscCks''@;'; put 'put ''MHwoZj0wfGFbYj4+Ml0pKSYmKGs9MHxVNChmLGI9MHxhW2s+PjJdLDB8YVttPj4yXSksYVtsKzI4Pj4yXT1rLGFbays0MD4+Ml09YVtwPj4yXSxhW2s+PjJdPTErKDB8YVtsPj4yXSksYVtrKzQ+PjJdPWFbZj4+Ml0sYVtrKzg+PjJdPWYsYVtrKzEyPj4yXT1iLGFbaysxNj4+Ml09YVtBPj4y''@;'; put 'put ''XSxhW2wrMjA+PjJdPWFbdz4+Ml0sYVtrKzMyPj4yXT1sLFE0KGssYykpLG9lPU0sMHxsfWZ1bmN0aW9uIFRBKGwpe2x8PTA7Zm9yKHZhciBjPTA7Yz0wfGFbbCsyOD4+Ml07KWw9YztyZXR1cm4gMHxsfWZ1bmN0aW9uIElBKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEsYixrLE0scD0wLG09MCx3''@;'; put 'put ''PTAsRD0wO2ZvcihBPTgrKGx8PTApfDAsaz1sKzIwfDAsYj1sKzI0fDAsTT1sKzE2fDAsbHx8QnIoMTM4OTUzLDk1NzQzLDY5LDk1NzU5KTs7KXtpZigoMHxhW0E+PjJdKTwoMHxmKSl7dz00O2JyZWFrfWlmKCEobT0wfGFbKHA9KDB8YVtrPj4yXSkrKGM8PDIpfDApPj4yXSkpYnJlYWs7RD0w''@;'; put 'put ''fGFbKDB8YVtiPj4yXSkrKGM8PDIpPj4yXSxhW3A+PjJdPTAsYVtsPj4yXT0oMHxhW2w+PjJdKS0xLEpfKG0sMTA1LCgwfGFbTT4+Ml0pKyhEPDwyKXwwKX1yZXR1cm4gND09KDB8dykmJkJyKDk1Nzc4LDk1NzQzLDcwLDk1NzU5KSxhW2w+PjJdPTErKDB8YVtsPj4yXSksKDB8YVsocD1sKzEy''@;'; put 'put ''fDApPj4yXSk8KDB8ZikmJihhW3A+PjJdPWYpLGFbKDB8YVtiPj4yXSkrKGM8PDIpPj4yXT1mLHA9MHxRbig0KSxhW3A+PjJdPWMscD0obT0wfGFbKDB8YVtNPj4yXSkrKGY8PDIpPj4yXSk/MHxmdW5jdGlvbiB0VChsLGMpe3JldHVybiBsfD0wLGM9MHxRXyhjfD0wKSwwfGwmJihhW2MrND4+''@;'; put 'put ''Ml09bCxhW2wrOD4+Ml09YyksMHxjfShtLHApOjB8UV8ocCksYVsoMHxhW2s+PjJdKSsoYzw8Mik+PjJdPXAsYVsoMHxhW00+PjJdKSsoZjw8Mik+PjJdPXAsMHxsfWZ1bmN0aW9uIEh4KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2lmKDAhPSgwfChsfD0wKSkmJigwfGFbbD4+''@;'; put 'put ''Ml0pPj0xKXtpZihhW2Y+PjJdPXA9MHxhWyhtPWwrMTJ8MCk+PjJdLGFbbD4+Ml09KDB8YVtsPj4yXSktMSxhW2M+PjJdPWFbKDB8ZnVuY3Rpb24gblQobCl7cmV0dXJuIDB8YVsobHw9MCk+PjJdfShBPTB8YVsoMHxhWyhmPWwrMTZ8MCk+PjJdKSsocDw8Mik+PjJdKSk+PjJdLEpfKEEsMTA1''@;'; put 'put ''LCgwfGFbZj4+Ml0pKyhwPDwyKXwwKSwhKDB8YVsoZj0wfGFbZj4+Ml0pKyhwPDwyKT4+Ml0pKXtmb3IoOyEoKDB8cCk8PS0xfHwwfGFbZisocDw8Mik+PjJdKTspcD1wKy0xfDA7YVttPj4yXT1wfWFbKDB8YVtsKzIwPj4yXSkrKChwPTB8YVtjPj4yXSk8PDIpPj4yXT0wLGFbKDB8YVtsKzI0''@;'; put 'put ''Pj4yXSkrKHA8PDIpPj4yXT0tOTk5LHA9MX1lbHNlIHA9MDtyZXR1cm4gMHxwfWZ1bmN0aW9uIE54KGwsYyl7cmV0dXJuIDB8YVsoMHxhWzI0KyhsfD0wKT4+Ml0pKygoY3w9MCk8PDIpPj4yXX1mdW5jdGlvbiBWeChsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTA7aWYoMCE9KDB8''@;'; put 'put ''KGx8PTApKSYmKDB8KHA9MHxhW2w+PjJdKSk+PTEpe2lmKGY9MHxhWygwfGFbKHc9bCsyNHwwKT4+Ml0pKyhjPDwyKT4+Ml0sYVtsPj4yXT1wKy0xLEpfKDB8YVsoMHxhWyhtPWwrMjB8MCk+PjJdKSsoYzw8Mik+PjJdLDEwNSwoMHxhWyhwPWwrMTZ8MCk+PjJdKSsoZjw8Mil8MCksKDB8Zik9''@;'; put 'put ''PSgwfGFbKGw9bCsxMnwwKT4+Ml0pJiYwPT0oMHxhWyhBPTB8YVtwPj4yXSkrKGY8PDIpPj4yXSkpe2Zvcig7ISgoMHxmKTw9LTF8fDB8YVtBKyhmPDwyKT4+Ml0pOylmPWYrLTF8MDthW2w+PjJdPWZ9YVsoMHxhW20+PjJdKSsoYzw8Mik+PjJdPTAsYVsoMHxhW3c+PjJdKSsoYzw8Mik+PjJd''@;'; put 'put ''PS05OTksZj0xfWVsc2UgZj0wO3JldHVybiAwfGZ9ZnVuY3Rpb24gR18obCxjLGYpe2N8PTAsZnw9MDt2YXIgbWUsSGUsamUsZXQscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTA7Zm9yKDB8SzMobHw9MCwwKXx8QnIo''@;'; put 'put ''OTU3OTUsOTU4MzEsMjYwLDk1ODQ2KSxIZT0wfGlTKGwpLGplPTB8YVtIZSsyMD4+Ml0sZXQ9MHxhW0hlKzI0Pj4yXSxsPUhlKzI4fDAsMT09KDB8YVsocD1IZSsxNnwwKT4+Ml0pP0JlPTB8YVtsPj4yXTooSHQoMHxhW2w+PjJdKSxhW3A+PjJdPTEsQmU9MHxRbihhW0hlKzg+PjJdPDwzKSxh''@;'; put 'put ''W2w+PjJdPUJlKSxtZT0wfFFuKGFbSGU+PjJdPDwyKSxsPTA7Oyl7aWYoKDB8bCk+PSgwfChwPTB8YVtIZT4+Ml0pKSl7cGU9MCxsPXA7YnJlYWt9YVttZSsobDw8Mik+PjJdPS0xLGw9bCsxfDB9ZTpmb3IoOzspe2lmKCgwfHBlKT49KDB8bCkpe0E9MCxrPTAsbT0wLExlPTAsT2U9bDticmVh''@;'; put 'put ''a31mb3IoYj0oMHxhWyh3PWplKygoSz1wZSsxfDApPDwyKXwwKT4+Ml0pLSgwfGFbKEQ9amUrKHBlPDwyKXwwKT4+Ml0pfDAsYVttZSsocGU8PDIpPj4yXT1wZSxwPTB8YVtEPj4yXTshKCgwfHApPj0oMHwoRz0wfGFbdz4+Ml0pKSk7KSgwfHBlKSE9KDB8KGw9MHxhW2V0KyhwPDwyKT4+Ml0p''@;'; put 'put ''KSYmKGFbbWUrKGw8PDIpPj4yXT1wZSkscD1wKzF8MDtmb3IoUj0rKDB8YikscD0wfGFbRD4+Ml07ISgoMHxwKT49KDB8RykpOyl7aWYoKDB8cGUpIT0oMHwobD0wfGFbZXQrKHA8PDIpPj4yXSkpKXtmb3IoTT0rKCh3PTB8YVtqZSsobCsxPDwyKT4+Ml0pLShsPTB8YVtqZSsobDw8Mik+PjJd''@;'; put 'put ''KXwwKStSOyEoKDB8bCk+PSgwfHcpKTspTT0oMHxhW21lKyhhW2V0KyhsPDwyKT4+Ml08PDIpPj4yXSk9PSgwfHBlKT9NKy0xOk0sbD1sKzF8MDtpZihfW0JlKyhwPDwzKT4+M109TSwhKE0+MCkpe2JlPTIzO2JyZWFrIGV9fXA9cCsxfDB9cGU9SyxsPTB8YVtIZT4+Ml19Zm9yKDIzPT0oMHxi''@;'; put 'put ''ZSkmJkJyKDk1ODY4LDk1ODMxLDI5MCw5NTg0Nik7ISgoMHxMZSk+PSgwfE9lKSk7KXtmb3IoYj1qZSsoKHc9TGUrMXwwKTw8Mil8MCxwPTB8YVtqZSsoTGU8PDIpPj4yXTshKCgwfHApPj0oMHxhW2I+PjJdKSk7KSgwfExlKT09KDB8KGw9MHxhW2V0KyhwPDwyKT4+Ml0pKT9sPW06KGs9K1Nj''@;'; put 'put ''KGYsYyxMZSxsKStrLEE9K19bQmUrKHA8PDMpPj4zXStBLGw9bSsxfDApLG09bCxwPXArMXwwO0xlPXcsT2U9MHxhW0hlPj4yXX1BPWsvKEEvKFI9KygwfG0pKSpSKSxsPTA7ZTpmb3IoOyEoKDB8bCk+PSgwfE9lKSk7KWZvcih3PWwrMXwwLGI9MHxhW2plKyh3PDwyKT4+Ml0scD0wfGFbamUr''@;'; put 'put ''KGw8PDIpPj4yXTs7KXtpZigoMHxwKT49KDB8Yikpe2w9dztjb250aW51ZSBlfW09QmUrKHA8PDMpfDAsKDB8bCkhPSgwfGFbZXQrKHA8PDIpPj4yXSkmJihfW20+PjNdPStfW20+PjNdKkEpLHA9cCsxfDB9cmV0dXJuIDB8SGV9ZnVuY3Rpb24gakcobCxjLGYscCxtKXtjfD0wLGY9K2YscHw9''@;'; put 'put ''MCxtfD0wO3ZhciBrdCxhdCxFdCxadCx1dCxybix5bixscixOcixrcixBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCxNdD0wLHd0PTAsRm49MCxjcj0wLENyPTA7Zm9y''@;'; put 'put ''KHJuPTB8YVsobHw9MCk+PjJdLHluPTB8YVtsKzIwPj4yXSxGbj0wfGFbbCsyND4+Ml0sMHxLMyhsLDApfHxCcig5NTc5NSw5NTgzMSwzMzMsOTU4NzYpLGxyPTB8R18obCxjLHApLE5yPTB8UW4oNTYpLF9bKGtyPU5yKzMyfDApPj4zXT0xLGFbTnIrMjA+PjJdPTAsYVtOcisyND4+Ml09MCxf''@;'; put 'put ''W05yKzQwPj4zXT0uMDEsYVtOcis0OD4+Ml09fn4rRjAoKyArKDB8YVtsPj4yXSkpLFp0PTB8UW4oQT1ybjw8MyksYVtOcisxMj4+Ml09WnQsbD0wOyEoKDB8bCk+PSgwfHJuKSk7KV9bWnQrKGw8PDMpPj4zXT1mLGw9bCsxfDA7Zm9yKHV0PTB8UW4ocm48PDIpLEV0PTB8UW4oQSksYj0wOzsp''@;'; put 'put ''e2lmKCgwfGIpPj0oMHxybikpe1I9MDticmVha31mb3IoX1soaz1FdCsoYjw8Myl8MCk+PjNdPTAsRD15bisoKE09YisxfDApPDwyKXwwLHc9MHxhW3luKyhiPDwyKT4+Ml0sbD0wLGY9MDshKCgwfHcpPj0oMHxhW0Q+PjJdKSk7KSgwfGIpIT0oMHwoQT0wfGFbRm4rKHc8PDIpPj4yXSkpJiYo''@;'; put 'put ''Zj0rU2MocCxjLGIsQSksX1trPj4zXT1mPStfW2s+PjNdK2YsbD1sKzF8MCksdz13KzF8MDtpZigoMHxsKTw9MCl7Sz0xNDticmVha31fW2s+PjNdPWYvKygwfGwpLGI9TX1mb3IoMTQ9PSgwfEspJiZCcig5NTkwOCw5NTgzMSwzNTgsOTU4NzYpOzspe2lmKCgwfFIpPj0oMHxybikpe2w9MCxN''@;'; put 'put ''PTA7YnJlYWt9YVt1dCsoUjw8Mik+PjJdPS0xLFI9UisxfDB9ZTpmb3IoOyEoKDB8TSk+PSgwfHJuKSk7KXtmb3IoYVt1dCsoTTw8Mik+PjJdPU0sUj15bisoKEQ9TSsxfDApPDwyKXwwLHc9MHxhWyhiPXluKyhNPDwyKXwwKT4+Ml07ISgoMHx3KT49KDB8KEE9MHxhW1I+PjJdKSkpOykoMHxh''@;'; put 'put ''WyhBPXV0KyhhW0ZuKyh3PDwyKT4+Ml08PDIpfDApPj4yXSkhPSgwfE0pJiYoYVtBPj4yXT1NLGw9bCsxfDApLHc9dysxfDA7Zm9yKGs9MHxhW2I+PjJdOzspe2lmKCgwfGspPj0oMHxBKSl7TT1EO2NvbnRpbnVlIGV9Zm9yKGI9eW4rKDErKHc9MHxhW0ZuKyhrPDwyKT4+Ml0pPDwyKXwwLHc9''@;'; put 'put ''MHxhW3luKyh3PDwyKT4+Ml07ISgoMHx3KT49KDB8YVtiPj4yXSkpOykoMHxhWyhBPXV0KyhhW0ZuKyh3PDwyKT4+Ml08PDIpfDApPj4yXSkhPSgwfE0pJiYoYVtBPj4yXT1NLGw9bCsxfDApLHc9dysxfDA7az1rKzF8MCxBPTB8YVtSPj4yXX19YVsoa3Q9TnIrNHwwKT4+Ml09MHxYaChybixy''@;'; put 'put ''bixBPWwrcm58MCwxLDEpLEE9MHxYaChybixybixBLDEsMSksYVsoYXQ9TnIrOHwwKT4+Ml09QSxsPTB8YVtrdD4+Ml07ZG97aWYoMD09KDB8QSl8MD09KDB8bCkpTTYoTnIpLHd0PTA7ZWxzZXtsdD0wfGFbbCsyMD4+Ml0sR2U9MHxhW2wrMjQ+PjJdLGV0PTB8YVtsKzI4Pj4yXSxNdD0wfGFb''@;'; put 'put ''QSsyOD4+Ml0sT2U9MHxhW0ErMjQ+PjJdLGFbKHJ0PTB8YVtBKzIwPj4yXSk+PjJdPTAsYVtsdD4+Ml09MCxmPTAsRz0wLEs9MCx3PTA7ZTpmb3IoOzspe2lmKCgwfEspPj0oMHxybikpe0s9NTg7YnJlYWt9Zm9yKGFbdXQrKEs8PDIpPj4yXT1MZT1LK3JufDAsSGU9eW4rKChCZT1LKzF8MCk8''@;'; put 'put ''PDIpfDAsamU9RXQrKEs8PDMpfDAscGU9MCxtZT0wLGI9MHxhWyhrPXluKyhLPDwyKXwwKT4+Ml07ISgoMHxiKT49KDB8KGw9MHxhW0hlPj4yXSkpKTspe2lmKCgwfGFbKGw9dXQrKChBPTB8YVtGbisoYjw8Mik+PjJdKTw8Mil8MCk+PjJdKSE9KDB8TGUpKXtzd2l0Y2goYVtsPj4yXT1MZSxh''@;'; put 'put ''W0dlKyh3PDwyKT4+Ml09QSwwfG0pe2Nhc2UgMDpiZT0xO2JyZWFrO2Nhc2UgMTpiZT0uNSooK19bRXQrKEE8PDMpPj4zXSsgK19bamU+PjNdKTticmVhaztjYXNlIDI6YmU9K0dsKCsgK0MxKHAsYyxLLEEpLC40KTticmVhaztkZWZhdWx0Oks9NDI7YnJlYWsgZX1fW2V0Kyh3PDwzKT4+M109''@;'; put 'put ''Q3I9LTEvKGJlKmJlKSxhW09lKyh3PDwyKT4+Ml09QSxfWyhSPU10Kyh3PDwzKXwwKT4+M109Y3I9Q3IqYmUsRz0rU2MocCxjLEssQSkqY3IrRyx3PXcrMXwwLHBlPUNyK3BlLG1lPShjcj0rX1tSPj4zXSkrbWUsZj1jcipiZStmfWI9YisxfDB9Zm9yKFI9MHxhW2s+PjJdOyEoKDB8Uik+PSgw''@;'; put 'put ''fGwpKTspe2ZvcihNPXluKygxKyhrPTB8YVtGbisoUjw8Mik+PjJdKTw8Mil8MCxEPUV0KyhrPDwzKXwwLGI9MHxhW3luKyhrPDwyKT4+Ml07ISgoMHxiKT49KDB8YVtNPj4yXSkpOyl7aWYoKDB8YVsobD11dCsoYVsoQT1GbisoYjw8Mil8MCk+PjJdPDwyKXwwKT4+Ml0pIT0oMHxMZSkpe3N3''@;'; put 'put ''aXRjaChhW2w+PjJdPUxlLDB8bSl7Y2FzZSAwOmJlPTI7YnJlYWs7Y2FzZSAxOmJlPS41KigyKitfW0Q+PjNdKyArX1tqZT4+M10rICtfW0V0KyhhW0E+PjJdPDwzKT4+M10pO2JyZWFrO2Nhc2UgMjpiZT0rR2woKyArQzEocCxjLEssMHxhW0E+PjJdKSwuNCk7YnJlYWs7ZGVmYXVsdDpLPTUz''@;'; put 'put ''O2JyZWFrIGV9YVtHZSsodzw8Mik+PjJdPWFbQT4+Ml0sX1tldCsodzw8Myk+PjNdPWNyPS0xLyhiZSpiZSksYVtPZSsodzw8Mik+PjJdPWFbQT4+Ml0sX1sobD1NdCsodzw8Myl8MCk+PjNdPUNyPWNyKmJlLEc9K1NjKHAsYywwfGFbQT4+Ml0saykqQ3IrRyx3PXcrMXwwLHBlPWNyK3BlLG1l''@;'; put 'put ''PShDcj0rX1tsPj4zXSkrbWUsZj1DcipiZStmfWI9YisxfDB9Uj1SKzF8MCxsPTB8YVtIZT4+Ml19YVtHZSsodzw8Mik+PjJdPUssX1soamU9WnQrKEs8PDMpfDApPj4zXT1Dcj0tcGUqK19bamU+PjNdLF9bZXQrKHc8PDMpPj4zXT1Dci1wZSxhW09lKyh3PDwyKT4+Ml09SyxfW010Kyh3PDwz''@;'; put 'put ''KT4+M109LW1lLGFbbHQrKEJlPDwyKT4+Ml09dz13KzF8MCxhW3J0KyhCZTw8Mik+PjJdPXcsSz1CZX1pZig0Mj09KDB8SykpQ3UoOTU5MTUsMjksMSwwfGFbMTU3MTJdKSxCcigxMzgzOTQsOTU4MzEsNDE4LDk1ODc2KTtlbHNlIGlmKDUzPT0oMHxLKSlDdSg5NTkxNSwyOSwxLDB8YVsxNTcx''@;'; put 'put ''Ml0pLEJyKDEzODM5NCw5NTgzMSw0NjAsOTU4NzYpO2Vsc2UgaWYoNTg9PSgwfEspKXtmb3IoZj1HL2YsbD0wOyEoKDB8bCk+PSgwfHcpKTspX1soRm49TXQrKGw8PDMpfDApPj4zXT0rX1tGbj4+M10qZixsPWwrMXwwO19ba3I+PjNdPWYsYVs4KygwfGFba3Q+PjJdKT4+Ml09dyxhWzgrKDB8''@;'; put 'put ''YVthdD4+Ml0pPj4yXT13LEh0KHV0KSxIdChFdCksSmEobHIpLHd0PU5yO2JyZWFrfX19d2hpbGUoMCk7cmV0dXJuIDB8d3R9ZnVuY3Rpb24gTTYobCl7dmFyIGM9MDswfChsfD0wKSYmKDB8KGM9MHxhW2wrND4+Ml0pJiZKYShjKSwwfChjPTB8YVtsKzg+PjJdKSYmSmEoYyksMHwoYz0wfGFb''@;'; put 'put ''bCsxMj4+Ml0pJiZIdChjKSwwfChjPTB8YVtsKzIwPj4yXSkmJm5vWzEyNyZhW2wrMTY+PjJdXShjKSxIdChsKSl9ZnVuY3Rpb24gbjEobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtPSttO3ZhciB3dCxybix5bixGbixOcixrcixjcixDcixBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAs''@;'; put 'put ''Rz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCxNdD0wLGt0PTAsYXQ9MCxFdD0wLFp0PTAsdXQ9MCxscj0wLHFyPTA7aWYoQ3I9b2Usb2U9b2UrMTZ8MCxjcj1Dcis4fDAsRD1Dcis0fDAsaz1DcixNPTB8YVs0KyhsfD0w''@;'; put 'put ''KT4+Ml0sdz0wfGFbbCs4Pj4yXSxhWyhOcj1DcisxMnwwKT4+Ml09MCxhW2NyPj4yXT0wLGFbRD4+Ml09MCx3dD0wfGFbbCsxMj4+Ml0sYVtrPj4yXT0wLHJuPTB8aVModyksMCE9KDB8KGtyPTB8UW4oQT0oRm49MHx2cih5bj0wfGFbTT4+Ml0sYykpPDwzKSkpJiYoRG8oMHxrciwwfGYsMHwo''@;'; put 'put ''bHI9MHx2cihjPDwzLHluKSkpLHV0PTB8UW4oQSksYVtjcj4+Ml09dXQsMCE9KDB8dXQpKSl7c3dpdGNoKFp0PTB8YVt3KzIwPj4yXSx1dD0wfGFbdysyND4+Ml0sTXQ9MHxhW3crMjg+PjJdLGt0PTB8YVtybisyOD4+Ml0sYXQ9MHxhW00rMjg+PjJdLDB8YVsoRXQ9bCsyNHwwKT4+Ml0pe2Nh''@;'; put 'put ''c2UgMTooZnVuY3Rpb24gWngobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgSGUsamUsZXQsR2Usdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxydD0wLGx0PTA7Sz0wfGFbOCsobHw9MCk+PjJdLEdl''@;'; put 'put ''PTB8YVtsKzEyPj4yXSxqZT0wfGFbbCsxNj4+Ml0sZXQ9MHxhWzIwKyhydD0wfGFbbCszMj4+Ml0pPj4yXSxydD0wfGFbcnQrMjQ+PjJdLG1lPTB8YVsoTT1sKzIwfDApPj4yXSxwZT0wfGFbKEQ9bCsyNHwwKT4+Ml0sRz0wfGFbKFI9bCsyOHwwKT4+Ml0sSGU9K19bbD4+M107ZTpkb3tpZigz''@;'; put 'put ''PT0oMnxLKSl7aWYoIW1lKXtmb3IoMCE9KDB8cGUpfDAhPSgwfEcpP0JyKDk2MDk0LDk1ODMxLDY5Miw5NjExMSk6KHc9MCxiPTApOyEoKDB8dyk+PSgwfEdlKSk7KUJlPTB8YVtqZSsodzw8Mik+PjJdLHc9dysxfDAsYj1iK35+KChiZT0rKCgwfGFbZXQrKEJlKzE8PDIpPj4yXSktKDB8YVtl''@;'; put 'put ''dCsoQmU8PDIpPj4yXSl8MCkrMSkqYmUpfDA7bWU9MHxRbihwZT1iPDwyKSxhW00+PjJdPW1lLHBlPTB8UW4ocGUpLGFbRD4+Ml09cGUsRz0wfFFuKGI8PDMpLGFbUj4+Ml09R31mb3IoTGU9MCxsPTA7ISgoMHxMZSk+PSgwfEdlKSk7KXt3PTB8YVtydCsoKGI9MHxhWyhPZT1ldCsoKEs9MHxh''@;'; put 'put ''W2plKyhMZTw8Mik+PjJdKTw8Mil8MCk+PjJdKTw8Mik+PjJdLGI9MHxhW3J0KyhiKzE8PDIpPj4yXTt0OmRve2lmKCgwfHcpIT0oMHxiKSl7Zm9yKGx0PStDMShwLGYsdyxiKSxsdCo9bHQsYmU9KygoMHxhWyhSPWV0KyhLKzE8PDIpfDApPj4yXSktKDB8YVtPZT4+Ml0pfDApLGFbbWUrKGw8''@;'; put 'put ''PDIpPj4yXT1LLGFbcGUrKGw8PDIpPj4yXT1LLF9bRysobDw8Myk+PjNdPUhlL2x0LGs9YmUqYmUqbHQsYmU9LUhlLyhsdCpiZSksYj0wfGFbT2U+PjJdO2w9bCsxfDAsISgoMHxiKT49KDB8KHc9MHxhW1I+PjJdKSkpOylhW21lKyhsPDwyKT4+Ml09SyxhW3BlKyhsPDwyKT4+Ml09YVtydCso''@;'; put 'put ''Yjw8Mik+PjJdLF9bRysobDw8Myk+PjNdPWJlLGI9YisxfDA7Zm9yKGs9SGUvayxEPTB8YVtPZT4+Ml07Oyl7aWYoKDB8RCk+PSgwfHcpKWJyZWFrIHQ7Zm9yKGFbbWUrKGw8PDIpPj4yXT1NPTB8YVtydCsoRDw8Mik+PjJdLGFbcGUrKGw8PDIpPj4yXT1LLF9bRysobDw8Myk+PjNdPWJlLGI9''@;'; put 'put ''MHxhW09lPj4yXTtsPWwrMXwwLCEoKDB8Yik+PSgwfCh3PTB8YVtSPj4yXSkpKTspQmU9MHxhW3J0KyhiPDwyKT4+Ml0sYVttZSsobDw8Mik+PjJdPU0sYVtwZSsobDw8Mik+PjJdPUJlLF9bRysobDw8Myk+PjNdPWssYj1iKzF8MDtEPUQrMXwwfX19d2hpbGUoMCk7TGU9TGUrMXwwfXc9MHxz''@;'; put 'put ''ZyhsLGMsYyxtZSxwZSxHLDEsOCksbD0wfWVsc2V7c3dpdGNoKDB8Syl7Y2FzZSAyOmNhc2UgNDpicmVhaztkZWZhdWx0Onc9MCxsPTA7YnJlYWsgZX1kb3tpZihtZSlPZT1HLExlPXBlLEJlPW1lO2Vsc2V7aWYoISgwIT0oMHxwZSl8MCE9KDB8RykpKXtCZT0wfFFuKExlPUdlPDwyKSxhW00+''@;'; put 'put ''PjJdPUJlLExlPTB8UW4oTGUpLGFbRD4+Ml09TGUsT2U9MHxRbihHZTw8MyksYVtSPj4yXT1PZTticmVha31Ccig5NjA5NCw5NTgzMSw3MzQsOTYxMTEpfX13aGlsZSgwKTtmb3IobD0wfFFuKDB8dnIoYzw8MyxmKSksYj0wfHZyKGYsYyksdz0wOzspe2lmKCgwfHcpPj0oMHxiKSl7Rz0wO2Jy''@;'; put 'put ''ZWFrfV9bbCsodzw8Myk+PjNdPTAsdz13KzF8MH1mb3IoOyEoKDB8Ryk+PSgwfEdlKSk7KXtmb3Ioaz0rQzEocCxmLDB8YVtydCsoKEQ9MHxhWyhNPWV0KygoSz0wfGFbamUrKEc8PDIpPj4yXSk8PDIpfDApPj4yXSk8PDIpPj4yXSwwfGFbcnQrKEQrMTw8Mik+PjJdKSxhW0JlKyhHPDwyKT4+''@;'; put 'put ''Ml09SyxhW0xlKyhHPDwyKT4+Ml09SyxfW09lKyhHPDwzKT4+M109az1IZS9rLE09MHxhW00+PjJdLEQ9MHxhW2V0KyhLKzE8PDIpPj4yXSxLPTB8dnIoSyxmKSxiPU07ISgoMHxiKT49KDB8RCkpOyl7Zm9yKFI9MHx2cigwfGFbcnQrKGI8PDIpPj4yXSxmKSx3PTA7ISgoMHx3KT49KDB8Zikp''@;'; put 'put ''OylfWyhtZT1sKyh3K0s8PDMpfDApPj4zXT0rX1ttZT4+M10rICtfW3ArKHcrUjw8Myk+PjNdLHc9dysxfDA7Yj1iKzF8MH1mb3Ioayo9MS8rKEQtTXwwKSx3PTA7ISgoMHx3KT49KDB8ZikpOylfWyhtZT1sKyh3K0s8PDMpfDApPj4zXT1rKitfW21lPj4zXSx3PXcrMXwwO0c9RysxfDB9dz0w''@;'; put 'put ''fHNnKEcsYyxjLEJlLExlLE9lLDEsOCl9fXdoaWxlKDApO2FbbT4+Ml09dyxhW0E+PjJdPWx9KSgwfGFbbCsyMD4+Ml0seW4sYyxmLGssRCksKEE9MHxhW2s+PjJdKT8oTT0wfG1MKE0sQSkscnQ9MCxHZT0wKToocnQ9MCxHZT0wLEE9MCk7YnJlYWs7Y2FzZSAyOnJ0PStfWzgrKEE9MHxhW2wr''@;'; put 'put ''MjA+PjJdKT4+M10sR2U9K19bQT4+M10sQT0wO2JyZWFrO2RlZmF1bHQ6cnQ9MCxHZT0wLEE9MH1qZT0wPT0oMHx3dCksZXQ9bCs0MHwwLEhlPWwrNDh8MCx3PTB8YVtEPj4yXSxiPTEsaz0wO2U6Zm9yKDtCZT1rKzF8MCwoMHxrKTwoMHxwKSZiPm07KXt0OmRve2lmKDQ9PSgwfGFbRXQ+PjJd''@;'; put 'put ''KSlmb3IoRD0wfGFbY3I+PjJdLGs9MDs7KXtpZigoMHxrKT49KDB8eW4pKWJyZWFrIHQ7Zm9yKFI9MHx2cihrLGMpLGw9MDshKCgwfGwpPj0oMHxjKSk7KV9bRCsobCtSPDwzKT4+M109MCxsPWwrMXwwO2s9aysxfDB9ZWxzZXtmb3IoSz0wOyEoKDB8Syk+PSgwfHluKSk7KXtmb3IoTGU9WnQr''@;'; put 'put ''KChPZT1LKzF8MCk8PDIpfDAsRz0wLGJlPTB8YVtadCsoSzw8Mik+PjJdLGs9LTE7ISgoMHxiZSk+PSgwfGFbTGU+PjJdKSk7KXtpZigoMHxLKT09KDB8KGw9MHxhWyhEPXV0KyhiZTw8Mil8MCk+PjJdKSkpaz1iZTtlbHNle2lmKG1lPStTYyhmLGMsSyxsKSwwPT0ocGU9K19bKFI9TXQrKGJl''@;'; put 'put ''PDwzKXwwKT4+M10pKXBlPTA7ZWxzZXtpZigwPT1tZSl7Zm9yKHBlPXBlLytfW2F0KyhiZTw8Myk+PjNdKjFlLTQsbD0wOyEoKDB8bCk+PSgwfGMpKTspbWU9cGUqKCtSaCgpKzFlLTQpLHFyPWYrKCgwfHZyKDB8YVtEPj4yXSxjKSkrbDw8Myl8MCxfW3FyPj4zXT1tZSsgK19bcXI+PjNdLGw9''@;'; put 'put ''bCsxfDA7bWU9K1NjKGYsYyxLLDB8YVtEPj4yXSkscGU9K19bUj4+M119cGUvPW1lfV9ba3QrKGJlPDwzKT4+M109cGUsRz1wZStHfWJlPWJlKzF8MH1pZigoMHxrKTw9LTEpe2x0PTI1O2JyZWFrIGV9X1trdCsoazw8Myk+PjNdPS1HLEs9T2V9UzYocm4sMCxmLDAsY3IsMCxjKX19d2hpbGUo''@;'; put 'put ''MCk7dDpkb3tpZighamUpZm9yKEQ9MHxhW2NyPj4yXSxrPTA7Oyl7aWYoKDB8ayk+PSgwfHluKSlicmVhayB0O2ZvcihSPXd0KyhrPDwzKXwwLEs9MHx2cihrLGMpLGw9MDshKCgwfGwpPj0oMHxjKSk7KV9bKHFyPUQrKChMZT1sK0t8MCk8PDMpfDApPj4zXT0rX1txcj4+M10rICtfW2tyKyhM''@;'; put 'put ''ZTw8Myk+PjNdKitfW1I+PjNdLGw9bCsxfDA7az1rKzF8MH19d2hpbGUoMCk7dDpkb3tzd2l0Y2goMHxhW0V0Pj4yXSl7Y2FzZSAxOmZvcihrPTB8YVtjcj4+Ml0sbD0wOzspe2lmKCgwfGwpPj0oMHx5bikpe2x0PTUwO2JyZWFrIHR9Zm9yKFI9MHx2cihsLGMpLEQ9MDshKCgwfEQpPj0oMHxj''@;'; put 'put ''KSk7KV9bKHFyPWsrKChsdD1EK1J8MCk8PDMpfDApPj4zXT0rX1txcj4+M10rICtfW3crKGx0PDwzKT4+M10sRD1EKzF8MDtsPWwrMXwwfWNhc2UgMjpaRyh5bixjLGYsMHxhW2NyPj4yXSxHZSxydCksaz0wfGFbY3I+PjJdLEc9K19bZXQ+PjNdLGw9MHxhW0hlPj4yXSwyPT0oMHxhW0V0Pj4y''@;'; put 'put ''XSk/eFAoTSxHZSxjLGYsayxHLGwsTnIpOmx0PTUxO2JyZWFrO2RlZmF1bHQ6az0wfGFbY3I+PjJdLGx0PTUwfX13aGlsZSgwKTtpZig1MD09KDB8bHQpJiYoRz0rX1tldD4+M10sbD0wfGFbSGU+PjJdLGx0PTUxKSw1MT09KDB8bHQpJiYobHQ9MCxKeChNLGMsZixrLEcsbCwwLE5yKSksMHxh''@;'; put 'put ''W05yPj4yXSlicmVhaztiPSt6eCh5bixjLGYsMHxhW2NyPj4yXSksYi89K0YwKCsgK243KEZuLGYsZikpLERvKDB8ZiwwfGFbY3I+PjJdLDB8bHIpLGs9QmV9MjU9PSgwfGx0KSYmQnIoOTYwNDksOTU4MzEsODk1LDk2MDYwKSxKYShybiksQSYmKEphKEEpLEphKE0pKX1lbHNlIEphKHJuKSxi''@;'; put 'put ''PTEsdz0wO3JldHVybiBIdChrciksMHwoQT0wfGFbY3I+PjJdKSYmSHQoQSksMHx3JiZIdCh3KSxvZT1DciwrYn1mdW5jdGlvbiBaRyhsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxBPStBO3ZhciB3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTA7QSo9bT0rbSx3''@;'; put 'put ''PTA7ZTpmb3IoOyEoKDB8dyk+PSgwfGwpKTspZm9yKEQ9dysxfDAsUj0wfHZyKHcsYyksYj1EOzspe2lmKCgwfGIpPT0oMHxsKSl7dz1EO2NvbnRpbnVlIGV9Zm9yKE09MHx2cihiLGMpLG09MS8rQzEoZixjLHcsYiksaz0wOyEoKDB8ayk+PSgwfGMpKTspSz1BKigoK19bZisoKHBlPWsrUnww''@;'; put 'put ''KTw8Myk+PjNdLStfW2YrKChHPWsrTXwwKTw8Myk+PjNdKSptKSxfWyhwZT1wKyhwZTw8Myl8MCk+PjNdPUsrICtfW3BlPj4zXSxfWyhHPXArKEc8PDMpfDApPj4zXT0rX1tHPj4zXS1LLGs9aysxfDA7Yj1iKzF8MH19ZnVuY3Rpb24geFAobCxjLGYscCxtLEEsdyxiKXt2YXIgayxNO2Z8PTAs''@;'; put 'put ''cHw9MCxtfD0wLEE9K0Esd3w9MCxifD0wLE09MHxmdW5jdGlvbiBVeChsLGMpe2x8PTAsYz0rYzt2YXIgZixwO3JldHVybiBmPTB8UW4oOCkscD0wfFFuKDE2KSxhW2Y+PjJdPXAsX1twPj4zXT1jLGFbcCs4Pj4yXT1sLGFbZis0Pj4yXT0yNSwwfGZ9KGx8PTAsYz0rYyksaz0wfGZ1bmN0aW9u''@;'; put 'put ''IExQKGwsYyl7Yz0rYzt2YXIgYixrLE0sRCxHLEsscGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxSPTA7RD0wfGFbKGx8PTApPj4yXSxHPTB8YVtsKzIwPj4yXSxLPTB8YVtsKzI0Pj4yXSxrPTB8YVtsKzI4Pj4yXSxNPTB8UW4oOCksdz0wfFFuKDgrKEQ8PDMpfDApLGFbTT4+Ml09dyxfW3c+PjNd''@;'; put 'put ''PSsoMHxEKSx3PXcrOHwwLGI9MS8ocGU9KyhEKy0xfDApKSxjKj1wZSxsPTA7ZTpmb3IoOyEoKDB8bCk+PSgwfEQpKTspZm9yKHA9dysobDw8Myl8MCxfW3A+PjNdPWIsbT1sKzF8MCxBPTB8YVtHKyhtPDwyKT4+Ml0sZj0wfGFbRysobDw8Mik+PjJdOzspe2lmKCgwfGYpPj0oMHxBKSl7bD1t''@;'; put 'put ''O2NvbnRpbnVlIGV9KDB8bCk9PSgwfGFbSysoZjw8Mik+PjJdKSYmKChSPStfW2srKGY8PDMpPj4zXSk+PTA/UjotUik+MCYmKF9bcD4+M109MS8oUitjKSksZj1mKzF8MH1yZXR1cm4gYVtNKzQ+PjJdPTI3LDB8TX0obCxjKSxuaChNLGssMHxhW2w+PjJdLGYscCxtLEEsdyxiKX1mdW5jdGlv''@;'; put 'put ''biB6eChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7Zm9yKEE9MCxiPTA7ISgoMHxBKT49KDB8bCkpOyl7Zm9yKGs9MHx2cihBLGMpLG09MCx3PTA7ISgoMHxtKT49KDB8YykpOylEPW0ra3wwLG09bSsxfDAsdz0oTT0rX1twKyhE''@;'; put 'put ''PDwzKT4+M10tK19bZisoRDw8Myk+PjNdKSpNK3c7QT1BKzF8MCxiPStGMCgrdykrYn1yZXR1cm4rYn1mdW5jdGlvbiBUUChsLGMsZixwLG0pe2N8PTAsZj0rZixwfD0wLG18PTA7dmFyIGplLGV0LGx0LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0w''@;'; put 'put ''LE9lPTAsTGU9MCxCZT0wLEhlPTAscnQ9MCxHZT0wLE10PTAsa3Q9MDtmb3IoR2U9MHxhWyhsfD0wKT4+Ml0sSz0wfGFbbCsyMD4+Ml0scGU9MHxhW2wrMjQ+PjJdLDB8SzMobCwwKXx8QnIoOTU3OTUsOTU4MzEsMTAzNCw5NjEzMyksbHQ9MHxRbihtZT1HZTw8MyksYj0wOyEoKDB8Yik+PSgw''@;'; put 'put ''fEdlKSk7KXtmb3IoX1soRD1sdCsoYjw8Myl8MCk+PjNdPTAsRz1LKygoUj1iKzF8MCk8PDIpfDAsTT0wfGFbSysoYjw8Mik+PjJdLEE9MCxrPTA7ISgoMHxNKT49KDB8YVtHPj4yXSkpOykoMHxiKSE9KDB8KHc9MHxhW3BlKyhNPDwyKT4+Ml0pKSYmKGs9K1NjKHAsYyxiLHcpLF9bRD4+M109''@;'; put 'put ''az0rX1tEPj4zXStrLEE9QSsxfDApLE09TSsxfDA7aWYoKDB8QSk8PTApe3J0PTExO2JyZWFrfV9bRD4+M109ay8rKDB8QSksYj1SfWZvcigxMT09KDB8cnQpJiZCcig5NTkwOCw5NTgzMSwxMDQ2LDk2MTMzKSxBPTB8UW4oNTYpLF9bKGV0PUErMzJ8MCk+PjNdPTEsYVtBKzIwPj4yXT0wLGFb''@;'; put 'put ''QSsyND4+Ml09MCxfW0ErNDA+PjNdPS4wMSxhW0ErNDg+PjJdPX5+K0YwKCsgKygwfGFbbD4+Ml0pKSxqZT0wfFFuKG1lKSxhW0ErMTI+PjJdPWplLHc9MDshKCgwfHcpPj0oMHxHZSkpOylfW2plKyh3PDwzKT4+M109Zix3PXcrMXwwO2Rve2lmKCgwfEdlKT4yKXtpZihtKXt3PTB8T1AoR2Us''@;'; put 'put ''YyxwKTticmVha313PTB8UlAoR2UsYyxwKTticmVha313PTB8aVMobCl9d2hpbGUoMCk7aWYoYVsobT1BKzR8MCk+PjJdPTB8bUwobCx3KSxKYSh3KSxiPTB8aVMoMHxhW20+PjJdKSxhW0ErOD4+Ml09YiwwPT0oMHxiKXwwPT0oMHwodz0wfGFbbT4+Ml0pKSlEQShBKSxBPTA7ZWxzZXtmb3Io''@;'; put 'put ''bWU9MHxhW3crMjA+PjJdLHBlPTB8YVt3KzI0Pj4yXSxLPTB8YVt3KzI4Pj4yXSxtPTB8YVtiKzI4Pj4yXSxCZT0wLEhlPTAsRD0wOyEoKDB8RCk+PSgwfEdlKSk7KXtmb3IoUj1tZSsoKEc9RCsxfDApPDwyKXwwLExlPTAsZj0wLGI9LTEsYmU9QmUsT2U9SGUsTT0wfGFbbWUrKEQ8PDIpPj4y''@;'; put 'put ''XTshKCgwfE0pPj0oMHxhW1I+PjJdKSk7KSgwfCh3PTB8YVtwZSsoTTw8Mik+PjJdKSk9PSgwfEQpPyhrPUxlLHc9TSk6KE10PStHbCgrICtDMShwLGMsRCx3KSwuNiksX1tLKyhNPDwzKT4+M109az0xLyhNdCpNdCksX1sobD1tKyhNPDwzKXwwKT4+M109a3Q9aypNdCxPZT1rdCorU2MocCxj''@;'; put 'put ''LEQsdykrT2Usays9TGUsZj0oa3Q9K19bbD4+M10pK2Ysdz1iLGJlPWt0Kk10K2JlKSxMZT1rLGI9dyxNPU0rMXwwO2lmKF9bKGw9amUrKEQ8PDMpfDApPj4zXT1rPS1MZSorX1tsPj4zXSwoMHxiKTw9LTEpe3J0PTMxO2JyZWFrfV9bSysoYjw8Myk+PjNdPWstTGUsX1ttKyhiPDwzKT4+M109''@;'; put 'put ''LWYsQmU9YmUsSGU9T2UsRD1HfWZvcigzMT09KDB8cnQpJiZCcig5NjE1NCw5NTgzMSwxMTEyLDk2MTMzKSxrPUhlL0JlLGI9MHxhW21lKyhHZTw8Mik+PjJdLHc9MDshKCgwfHcpPj0oMHxiKSk7KV9bKEdlPW0rKHc8PDMpfDApPj4zXT0rX1tHZT4+M10qayx3PXcrMXwwO19bZXQ+PjNdPWss''@;'; put 'put ''SHQobHQpfXJldHVybiAwfEF9ZnVuY3Rpb24gREEobCl7TTYobHw9MCl9ZnVuY3Rpb24gR3gobCxjLGYpe24xKGx8PTAsY3w9MCxmfD0wLDUwLC4wMDEpfWZ1bmN0aW9uIHU1KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBCZSxIZSxqZSxldCxydCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEdlPTAsbHQ9MDtmb3IocnQ9MHxhWyhsfD0wKT4+Ml0sR2U9MHxhW2wrMjA+PjJdLGx0PTB8YVtsKzI0Pj4yXSwwfEszKGwsMCl8fEJyKDk1Nzk1LDk1ODMxLDExNDksOTYxNjUpLEJlPTB8R18obCxjLHApLEhlPTB8''@;'; put 'put ''YVtCZSsyOD4+Ml0sbD0wfFFuKDgpLGplPTB8UW4ocnQ8PDIpLGV0PTB8UW4ocnQ8PDMpLHc9MDs7KXtpZigoMHx3KT49KDB8cnQpKXtHPTA7YnJlYWt9Zm9yKF9bKE09ZXQrKHc8PDMpfDApPj4zXT0wLFI9R2UrKChEPXcrMXwwKTw8Mil8MCxiPTB8YVtHZSsodzw8Mik+PjJdLG09MCxrPTA7''@;'; put 'put ''ISgoMHxiKT49KDB8YVtSPj4yXSkpOykoMHx3KSE9KDB8KEE9MHxhW2x0KyhiPDwyKT4+Ml0pKSYmKGs9K1NjKHAsYyx3LEEpLF9bTT4+M109az0rX1tNPj4zXStrLG09bSsxfDApLGI9YisxfDA7aWYoKDB8bSk8PTApe0s9MTE7YnJlYWt9X1tNPj4zXT1rLysoMHxtKSx3PUR9Zm9yKDExPT0o''@;'; put 'put ''MHxLKSYmQnIoOTU5MDgsOTU4MzEsMTE2Nyw5NjE2NSk7Oyl7aWYoKDB8Ryk+PSgwfHJ0KSl7RD0wLG09MDticmVha31hW2plKyhHPDwyKT4+Ml09LTEsRz1HKzF8MH1lOmZvcig7ISgoMHxEKT49KDB8cnQpKTspe2ZvcihhW2plKyhEPDwyKT4+Ml09RCxHPUdlKygoUj1EKzF8MCk8PDIpfDAs''@;'; put 'put ''dz0wfGFbKGI9R2UrKEQ8PDIpfDApPj4yXTshKCgwfHcpPj0oMHwoQT0wfGFbRz4+Ml0pKSk7KSgwfGFbKEE9amUrKGFbbHQrKHc8PDIpPj4yXTw8Mil8MCk+PjJdKSE9KDB8RCkmJihhW0E+PjJdPUQsbT1tKzF8MCksdz13KzF8MDtmb3IoTT0wfGFbYj4+Ml07Oyl7aWYoKDB8TSk+PSgwfEEp''@;'; put 'put ''KXtEPVI7Y29udGludWUgZX1mb3IoYj1HZSsoMSsodz0wfGFbbHQrKE08PDIpPj4yXSk8PDIpfDAsdz0wfGFbR2UrKHc8PDIpPj4yXTshKCgwfHcpPj0oMHxhW2I+PjJdKSk7KSgwfGFbKEE9amUrKGFbbHQrKHc8PDIpPj4yXTw8Mil8MCk+PjJdKSE9KDB8RCkmJihhW0E+PjJdPUQsbT1tKzF8''@;'; put 'put ''MCksdz13KzF8MDtNPU0rMXwwLEE9MHxhW0c+PjJdfX1pZihwPTB8WGgocnQscnQsbSwxLDEpLGFbbD4+Ml09cCxwKXtmb3IocGU9MHxhW3ArMjQ+PjJdLG1lPTB8YVtwKzI4Pj4yXSxhWyhLPTB8YVtwKzIwPj4yXSk+PjJdPTAsQT0wLG09MDshKCgwfEEpPj0oMHxydCkpOyl7Zm9yKGFbamUr''@;'; put 'put ''KEE8PDIpPj4yXT1iZT1BK3J0fDAsTGU9R2UrKChPZT1BKzF8MCk8PDIpfDAsYz1ldCsoQTw8Myl8MCxiPTB8YVsoTT1HZSsoQTw8Mil8MCk+PjJdOyEoKDB8Yik+PSgwfChBPTB8YVtMZT4+Ml0pKSk7KSgwfGFbKHc9amUrKChBPTB8YVtsdCsoYjw8Mik+PjJdKTw8Mil8MCk+PjJdKSE9KDB8''@;'; put 'put ''YmUpJiYoYVt3Pj4yXT1iZSxhW3BlKyhtPDwyKT4+Ml09QSxfWyhHPW1lKyhtPDwzKXwwKT4+M109LjUqKCtfW2V0KyhBPDwzKT4+M10rICtfW2M+PjNdKSxfW0c+PjNdPStfW0hlKyhiPDwzKT4+M10sbT1tKzF8MCksYj1iKzF8MDtmb3IoRz0wfGFbTT4+Ml07ISgoMHxHKT49KDB8QSkpOyl7''@;'; put 'put ''Zm9yKE09R2UrKDErKGI9MHxhW2x0KyhHPDwyKT4+Ml0pPDwyKXwwLEQ9ZXQrKGI8PDMpfDAsUj1IZSsoRzw8Myl8MCxiPTB8YVtHZSsoYjw8Mik+PjJdOyEoKDB8Yik+PSgwfGFbTT4+Ml0pKTspKDB8YVsodz1qZSsoYVsoQT1sdCsoYjw8Mil8MCk+PjJdPDwyKXwwKT4+Ml0pIT0oMHxiZSkm''@;'; put 'put ''JihhW3c+PjJdPWJlLGFbcGUrKG08PDIpPj4yXT1hW0E+PjJdLF9bKHc9bWUrKG08PDMpfDApPj4zXT0uNSooMiorX1tEPj4zXSsgK19bYz4+M10rICtfW2V0KyhhW0E+PjJdPDwzKT4+M10pLF9bdz4+M109K19bSGUrKGI8PDMpPj4zXSsgK19bUj4+M10sbT1tKzF8MCksYj1iKzF8MDtHPUcr''@;'; put 'put ''MXwwLEE9MHxhW0xlPj4yXX1hW0srKE9lPDwyKT4+Ml09bSxBPU9lfWFbcCs4Pj4yXT1tLEdlPTB8WHNlKCksYVsobHQ9bCs0fDApPj4yXT1HZSxEbygwfEdlLDB8ZiwxNjgpLGFbMTYrKGx0PTB8YVtsdD4+Ml0pPj4yXT0wLGFbbHQrNDA+PjJdPTEsX1soR2U9bHQrOTZ8MCk+PjNdPS41Kitf''@;'; put 'put ''W0dlPj4zXSxhW2x0KzgwPj4yXT0yMCxIdChqZSksSHQoZXQpLEphKEJlKX1lbHNlIFd4KGwpLGw9MDtyZXR1cm4gMHxsfWZ1bmN0aW9uIFd4KGwpe3ZhciBjPTA7MHwobHw9MCkmJigwfChjPTB8YVtsPj4yXSkmJkphKGMpLDB8KGw9MHxhW2wrND4+Ml0pJiZ6eShsKSl9ZnVuY3Rpb24gSVAo''@;'; put 'put ''bCxjLGYscCxtKXt2YXIgQSx3O2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBPW9lLG9lPW9lKzE2fDAsYVsodz1BKT4+Ml09MCxmdW5jdGlvbiBMOWUobCxjLGYscCxtLEEsdyl7bHw9MCxjfD0wLGZ8PTAsbXw9MCxBfD0wLHd8PTA7dmFyIHFyLExyLGEwLEZpLFBpLGxvLHlhLFZsLENpLEhh''@;'; put 'put ''LGZzLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCxNdD0wLGt0PTAsYXQ9MCxFdD0wLFp0PTAsdXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTAsTnI9MCxrcj0wLGNyPTAsQ3I9''@;'; put 'put ''MCxIbz0wLHdhPTAsamw9MCxCMD0wLFNhPTA7aWYoZnM9b2Usb2U9b2UrMzJ8MCx5YT1mcysyMHwwLFZsPWZzKzE2fDAsQ2k9ZnMrMTJ8MCxIYT1mcys4fDAscXI9ZnMscGU9K19bKHB8PTApPj4zXSxSPStfWyhHPXArMjR8MCk+PjNdLEQ9K19bKEs9cCszMnwwKT4+M10sTHI9K19bcCs3Mj4+''@;'; put 'put ''M10sYTA9MHxhW3ArODA+PjJdLEZpPStfW3ArODg+PjNdLExlPStfW3ArOTY+PjNdLFBpPTB8YVtwKzEwND4+Ml0sYVsobG89ZnMrMjR8MCk+PjJdPTAsYVt5YT4+Ml09MTAsYVtWbD4+Ml09MCxhW0NpPj4yXT0wLGFbSGE+PjJdPTAsX1txcj4+M109MCwhKDA9PSgwfGMpfCgwfGEwKTwxfHwo''@;'; put 'put ''SG89MHxhW2M+PjJdLCgwfGwpPDF8KDB8KE09MHxhW2MrND4+Ml0pKTwxKSkpe2lmKCgwfE0pPCgwfGFbcCs1Mj4+Ml0pPyhtZT0wLGI9MCxrPTApOihrPTB8UW4oODAqbHwwKSxhW1ZsPj4yXT1rLGFbQ2k+PjJdPTB8UW4oODApLGFbSGE+PjJdPTB8UW4oODApLG1lPTEsYj1rKSxhW3c+PjJd''@;'; put 'put ''PTAsKDB8SG8pPT0oMHxNKSl7bHI9MHxzOChjLDEpLE5yPTB8YVtscisyMD4+Ml0sa3I9MHxhW2xyKzI0Pj4yXSxjcj0wfGFbZisyMD4+Ml0sQ3I9MHxhW2YrMjQ+PjJdLEZuPTB8YVtmKzI4Pj4yXTtlOmRve2lmKDB8YVtwKzE2Pj4yXSlmb3IoZncoMHxhW3ArMTA4Pj4yXSksaz0wfHZyKEhv''@;'; put 'put ''LGwpLGI9MDs7KXtpZigoMHxiKT49KDB8aykpYnJlYWsgZTtfW0ErKGI8PDMpPj4zXT0rUmgoKSxiPWIrMXwwfX13aGlsZSgwKTtSPDAmJihSPStVRChscixsLEEpLF9bRz4+M109UiksRDwwJiYoX1tLPj4zXT0uMixEPS4yKSxwZT49MCYmKF9bcD4+M109LTEscGU9LTEpLHluPStHbCgrUiwr''@;'; put 'put ''KHJuPTEtcGUpKSxFdD0rR2woK0QsLjMzMzMzMzMzMzMzMzMzMzMqKDItcGUpKS9SLFp0PTB8UW4odXQ9bDw8Myksd3Q9MHxRbih1dD0wfHZyKEhvLHV0KSksbHQ9MCE9KDB8bWUpLE10PXArMTE2fDAsa3Q9LjIqRXQsYXQ9cCs2NHwwLHJ0PS0xPT1wZSxHZT0wIT0oMHxtKSxiPTAsamU9MCxl''@;'; put 'put ''dD0wO2U6Zm9yKDs7KXtqZT1qZSsxfDAsRG8oMHx3dCwwfEEsMHx1dCksbHQmJihiPTB8clMobCxIbywxMCxBLDA9PSgwfGFbTXQ+PjJdKT8wOm0pKSxtZT0wLFI9MDt0OmZvcig7KDB8bWUpPCgwfEhvKTspe2ZvcihrPTA7ISgoMHxrKT49KDB8bCkpOylfW1p0KyhrPDwzKT4+M109MCxrPWsr''@;'; put 'put ''MXwwO2ZvcihmPU5yKygoQmU9bWUrMXwwKTw8Mil8MCxIZT0wfHZyKG1lLGwpLE09MHxhW05yKyhtZTw8Mik+PjJdOyEoKDB8TSk+PSgwfGFbZj4+Ml0pKTspe2s9MHxhWyhHPWtyKyhNPDwyKXwwKT4+Ml07bjpkb3tpZigoMHxrKSE9KDB8bWUpKWZvcihEPStTYyhBLGwsbWUsaykqRXQsaz0w''@;'; put 'put ''Ozspe2lmKCgwfGspPj0oMHxsKSlicmVhayBuO3BlPUQqKCtfW0ErKGsrSGU8PDMpPj4zXS0rX1tBKygoMHx2cigwfGFbRz4+Ml0sbCkpK2s8PDMpPj4zXSksX1soT2U9WnQrKGs8PDMpfDApPj4zXT0rX1tPZT4+M10tcGUsaz1rKzF8MH19d2hpbGUoMCk7TT1NKzF8MH1mb3IoRz1jcisoQmU8''@;'; put 'put ''PDIpfDAsZj0wfGFbY3IrKG1lPDwyKT4+Ml07ISgoMHxmKT49KDB8YVtHPj4yXSkpOyl7az0wfGFbKEs9Q3IrKGY8PDIpfDApPj4yXTtuOmRve2lmKCgwfGspIT0oMHxtZSkpZm9yKEQ9K0MxKEEsbCxtZSxrKSxNPUZuKyhmPDwzKXwwLHBlPTEvRCxrPTA7Oyl7aWYoKDB8ayk+PSgwfGwpKWJy''@;'; put 'put ''ZWFrIG47amw9KGpsPUQtKEIwPStfW00+PjNdKSkqamwqa3QqKCtfW0ErKGsrSGU8PDMpPj4zXS0rX1tBKygoMHx2cigwfGFbSz4+Ml0sbCkpK2s8PDMpPj4zXSkqcGUsX1soT2U9WnQrKGs8PDMpfDApPj4zXT0oRDxCMD9qbDotamwpKyArX1tPZT4+M10saz1rKzF8MH19d2hpbGUoMCk7Zj1m''@;'; put 'put ''KzF8MH1uOmRve2lmKGx0KXtpZihrSyhiLCtfW2F0Pj4zXSxBKyhIZTw8Myl8MCxtZSxsbyx5YSxWbCxDaSxIYSxxcix3KSxmPTB8YVtsbz4+Ml0sMHxhW3c+PjJdKWJyZWFrIGU7Zm9yKEc9MHxhW0hhPj4yXSxLPTB8YVtDaT4+Ml0sbWU9MHxhW1ZsPj4yXSxrPTA7Oyl7aWYoKDB8ayk+PSgw''@;'; put 'put ''fGYpKXtEPTAsaz0wO2JyZWFrIG59Zm9yKEIwPShCMD0rX1tHKyhrPDwzKT4+M10pPjFlLTE1P0IwOjFlLTE1LGJlPUsrKGs8PDMpfDAsT2U9MHx2cihrLGwpLEQ9K0dsKCtCMCwrcm4pLEQ9MS8ocnQ/QjAqQjA6RCksTT0wOyEoKDB8TSk+PSgwfGwpKTspX1soU2E9WnQrKE08PDMpfDApPj4z''@;'; put 'put ''XT0rX1tiZT4+M10qeW4qKCtfW0ErKE0rSGU8PDMpPj4zXS0rX1ttZSsoTStPZTw8Myk+PjNdKSpEKyArX1tTYT4+M10sTT1NKzF8MDtrPWsrMXwwfX1lbHNlIGlmKEdlJjAhPSgwfGFbTXQ+PjJdKSlmb3Ioaz0wOzspe2lmKCgwfGspPT0oMHxIbykpe0Q9MCxrPTA7YnJlYWsgbn1yOmRve2lm''@;'; put 'put ''KCgwfGspIT0oMHxtZSkpZm9yKEIwPStDMShBLGwsbWUsayksZj1tKyhrPDwzKXwwLEc9MHx2cihrLGwpLEQ9K0dsKCtCMCwrcm4pLEQ9MS8ocnQ/QjAqQjA6RCksTT0wOzspe2lmKCgwfE0pPj0oMHxsKSlicmVhayByO19bKE9lPVp0KyhNPDwzKXwwKT4+M109K19bZj4+M10qeW4qKCtfW0Er''@;'; put 'put ''KE0rSGU8PDMpPj4zXS0rX1tBKyhNK0c8PDMpPj4zXSkqRCsgK19bT2U+PjNdLE09TSsxfDB9fXdoaWxlKDApO2s9aysxfDB9ZWxzZSBmb3Ioaz0wOzspe2lmKCgwfGspPT0oMHxIbykpe0Q9MCxrPTA7YnJlYWsgbn1yOmRve2lmKCgwfGspIT0oMHxtZSkpZm9yKEIwPStDMShBLGwsbWUsayks''@;'; put 'put ''Zj0wfHZyKGssbCksRD0rR2woK0IwLCtybiksRD0xLyhydD9CMCpCMDpEKSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGwpKWJyZWFrIHI7X1soT2U9WnQrKE08PDMpfDApPj4zXT0oK19bQSsoTStIZTw8Myk+PjNdLStfW0ErKE0rZjw8Myk+PjNdKSp5bipEKyArX1tPZT4+M10sTT1NKzF8MH19d2hp''@;'; put 'put ''bGUoMCk7az1rKzF8MH19d2hpbGUoMCk7Zm9yKDshKCgwfGspPj0oMHxsKSk7KUQ9KEIwPStfW1p0KyhrPDwzKT4+M10pKkIwK0Qsaz1rKzF8MDtSPShEPStGMCgrRCkpK1I7bjpkb3tpZihEPjApZm9yKEQ9MS9ELGs9MDs7KXtpZigoMHxrKT49KDB8bCkpe2s9MDticmVhayBufV9bKFNhPVp0''@;'; put 'put ''KyhrPDwzKXwwKT4+M109K19bU2E+PjNdKkQsaz1rKzF8MH1lbHNlIGs9MH13aGlsZSgwKTtmb3IoOzspe2lmKCgwfGspPj0oMHxsKSl7bWU9QmU7Y29udGludWUgdH1fWyhTYT1BKyhrK0hlPDwzKXwwKT4+M109K19bU2E+PjNdKyArX1tadCsoazw8Myk+PjNdKkxlLGs9aysxfDB9fWlmKDB8''@;'; put 'put ''YiYmZ0woYiksISgoMHxqZSk8KDB8YTApJihMZT0rTGsoUGksTGUsUixldCxGaSkpPkxyKSl7d2E9NzA7YnJlYWt9ZXQ9Un03MD09KDB8d2EpJiYwfGFbcCsxMTI+PjJdJiZRRChsLGxyLEEpLEh0KHd0KSwoMHxscikhPSgwfGMpJiZKYShsciksSHQoWnQpLGs9Yj0wfGFbVmw+PjJdfWVsc2Ug''@;'; put 'put ''YVt3Pj4yXT0tMTAwOzB8ayYmSHQoYiksMHwoYj0wfGFbQ2k+PjJdKSYmSHQoYiksMHwoYj0wfGFbSGE+PjJdKSYmSHQoYil9b2U9ZnN9KHAsYywwfGFbbD4+Ml0sMHxhW2wrND4+Ml0sZixtLHcpLDB8YVt3Pj4yXT9Ccig5NjE4NCw5NTgzMSwxMjYyLDk2MTkwKTpvZT1BfWZ1bmN0aW9uIFl4''@;'; put 'put ''KGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIHc9MCxiPTA7YVsoQXw9MCk+PjJdPTAsQT0wfGFbZisxMjA+PjJdO2U6ZG97c3dpdGNoKDB8QSl7Y2FzZSA1OmNhc2UgNjooMHxhW2M+PjJdKT4yJiYoR3goYz0wfFRQKGMsbCwwLG0sNiE9KDB8QSkmMSksbCxtKSxE''@;'; put 'put ''QShjKSk7YnJlYWs7Y2FzZSA0OmZvcihBPTA7Oyl7aWYoMT09KDB8QSkpYnJlYWsgZTtJUChiPTB8dTUoYyxsLGYsbSksYyxwLGwsbSksV3goYiksQT1BKzF8MH1jYXNlIDE6Zj0wLHc9NjticmVhaztjYXNlIDI6Zj0xLHc9NjticmVhaztjYXNlIDM6Zj0yLHc9Nn19d2hpbGUoMCk7ZTpkb3tp''@;'; put 'put ''Zig2PT0oMHx3KSlmb3IoQT0wOzspe2lmKDE9PSgwfEEpKWJyZWFrIGU7bjEoYj0wfGpHKGMsbCwuMDUsbSxmKSxsLG0sNTAsLjAwMSksTTYoYiksQT1BKzF8MH19d2hpbGUoMCl9ZnVuY3Rpb24gbmgobCxjLGYscCxtLEEsdyxiLGspe2x8PTAsY3w9MCxwfD0wLG18PTAsQXw9MCx3PSt3LGJ8''@;'; put 'put ''PTAsa3w9MDt2YXIgRyxNPTAsRD0wLFI9MCxLPTAscGU9MDtmb3IoRz0wfFFuKEs9KGZ8PTApPDwzKSxLPTB8UW4oSyksRD0wLFI9MDsoMHxEKTwoMHxwKTspe2ZvcihrPTA7ISgoMHxrKT49KDB8ZikpOylwZT0oMHx2cihrLHApKStEfDAsX1tHKyhrPDwzKT4+M109K19bbSsocGU8PDMpPj4z''@;'; put 'put ''XSxfW0srKGs8PDMpPj4zXT0rX1tBKyhwZTw8Myk+PjNdLGs9aysxfDA7Zm9yKE09K0JoKGwsYyxmLEcsSyx3LGIpLGs9MDshKCgwfGspPj0oMHxmKSk7KV9bQSsoKDB8dnIoayxwKSkrRDw8Myk+PjNdPStfW0crKGs8PDMpPj4zXSxrPWsrMXwwO0Q9RCsxfDAsUj1NK1J9cmV0dXJuIEh0KEcp''@;'; put 'put ''LEh0KEspLCtSfWZ1bmN0aW9uIEJoKGwsYyxmLHAsbSxBLHcpe3B8PTAsbXw9MCxBPStBLHd8PTA7dmFyIEcscGUsbWUsYmUsT2UsYj0wLGs9MCxNPTAsRD0wLFI9MCxLPTAsTGU9MCxCZT0wO2ZvcihiZT0wfGFbNCsobHw9MCk+PjJdLHBlPTB8YVs0KyhjfD0wKT4+Ml0sYj0wfFFuKG1lPShm''@;'; put 'put ''fD0wKTw8MyksTT0wfFFuKG1lKSxMZT0wfFFuKG1lKSxEPTB8UW4obWUpLFI9MHxmdW5jdGlvbiBubihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7Zm9yKHA9MDshKCgwfHApPj0oMHxsKSk7KV9bKG09ZisocDw8Myl8MCk+PjNdPStfW2MrKHA8PDMpPj4zXS0rX1ttPj4zXSxw''@;'; put 'put ''PXArMXwwO3JldHVybiAwfGZ9KGYsbSxNPTB8bWlbNjMmYmVdKGwscCxNKSksSz0rKDB8ZiksRz0oT2U9K0YwKCsgK243KGYsUixSKSkvSykqQSxLPTEvSyxSPTAsbT1MZSxrPTEsQT1PZTtBPkcmKDB8Uik8KDB8dyk7KUE9K243KGYsTSxiPTB8bWlbNjMmcGVdKGMsTSxiKSksKDB8Uik+MD91''@;'; put 'put ''YShmLGIsbSxBL2spOkRvKDB8bSwwfGIsMHxtZSkseHQoZixwLG0saz1BLytuNyhmLG0sQmU9MHxtaVs2MyZiZV0obCxtLEQpKSksTGU9MHx4dChmLE0sQmUsLWspLFI9UisxfDAsaz1BLEQ9QmUsQT0rRjAoKyArbjcoZixMZSxMZSkpKks7cmV0dXJuIEh0KGIpLEh0KE0pLEh0KG0pLEh0KEQp''@;'; put 'put ''LCtBfWZ1bmN0aW9uIEp4KGwsYyxmLHAsbSxBLHcsYil7dmFyIGs7c3dpdGNoKGN8PTAsZnw9MCxwfD0wLG09K20sQXw9MCx3fD0wLGs9MHxhWyhsfD0wKT4+Ml0sYVsoYnw9MCk+PjJdPTAsMHx3KXtjYXNlIDA6dz0wfGZ1bmN0aW9uIElkKGwpe3ZhciBjO3JldHVybiBsfD0wLGM9MHxRbig4''@;'; put 'put ''KSxhW2M+PjJdPWwsYVtjKzQ+PjJdPTI2LDB8Y30obCksYj0wfGZ1bmN0aW9uIFF4KGwpe3ZhciB3LGssTSxELFIsYz0wLGY9MCxwPTAsbT0wLEE9MCxiPTA7dz0wfGFbKGx8PTApPj4yXSxrPTB8YVtsKzIwPj4yXSxNPTB8YVtsKzI0Pj4yXSxEPTB8YVtsKzI4Pj4yXSxSPTB8UW4oOCksZj0w''@;'; put 'put ''fFFuKDgrKGFbbD4+Ml08PDMpfDApLGFbUj4+Ml09ZixfW2Y+PjNdPSsoMHx3KSxmPWYrOHwwLGw9MDtlOmZvcig7ISgoMHxsKT49KDB8dykpOylmb3IocD1mKyhsPDwzKXwwLF9bcD4+M109MSxtPWwrMXwwLEE9MHxhW2srKG08PDIpPj4yXSxjPTB8YVtrKyhsPDwyKT4+Ml07Oyl7aWYoKDB8''@;'; put 'put ''Yyk+PSgwfEEpKXtsPW07Y29udGludWUgZX0oMHxsKT09KDB8YVtNKyhjPDwyKT4+Ml0pJiYoKGI9K19bRCsoYzw8Myk+PjNdKT49MD9iOi1iKT4wJiYoX1twPj4zXT0xL2IpLGM9YysxfDB9cmV0dXJuIGFbUis0Pj4yXT0yNywwfFJ9KGwpLG09K25oKHcsYixrLGMsZixwLG0sQSwwKSxmdW5j''@;'; put 'put ''dGlvbiBIaShsKXswfChsfD0wKSYmSHQobCl9KHcpLGZ1bmN0aW9uIEkzKGwpe0h0KDB8YVsobHw9MCk+PjJdKSwwfGwmJkh0KGwpfShiKTticmVhaztjYXNlIDE6KGZ1bmN0aW9uIExBKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIG1lLGJlLE9lLExlLEJlLEhl''@;'; put 'put ''LGplLGV0LHJ0LEdlLGx0LHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDtmb3IobHQ9b2Usb2U9b2UrMTZ8MCxHZT1sdCxydD0wfFFuKGV0PShqZT0wfGFbNCsobHw9MCk+PjJdKTw8MyksT2U9MHxRbihldCksTGU9MHxRbihldCksQmU9MHxhW2wrMjA+PjJdLEhlPTB8YVts''@;'; put 'put ''KzI0Pj4yXSxtZT0wfGFbbCsyOD4+Ml0sYmU9MHxhWzE1NzEyXSxwZT0wOygwfHBlKTwoMHxjKTspe2ZvcihBPTA7Oyl7aWYoKDB8QSk+PSgwfGplKSl7bD0wO2JyZWFrfUs9KDB8dnIoQSxjKSkrcGV8MCxfW3J0KyhBPDwzKT4+M109K19bZisoSzw8Myk+PjNdLF9bTGUrKEE8PDMpPj4zXT0r''@;'; put 'put ''X1twKyhLPDwzKT4+M10sQT1BKzF8MH1mb3IoOzspe2lmKCEoKDB8bCk8KDB8bSkpKXtBPTA7YnJlYWt9Zm9yKEQ9MDshKCgwfEQpPj0oMHxqZSkpOyl7Zm9yKEs9MHxhW0JlKygoRz1EKzF8MCk8PDIpPj4yXSxNPVI9MHxhW0JlKyhEPDwyKT4+Ml0sYj0wLHc9MDshKCgwfE0pPj0oMHxLKSk7''@;'; put 'put ''KWs9K19bbWUrKE08PDMpPj4zXSwoMHwoQT0wfGFbSGUrKE08PDIpPj4yXSkpPT0oMHxEKT93PWs6Yj0rX1tydCsoQTw8Myk+PjNdKmsrYixNPU0rMXwwOzA9PWImJihhW0dlPj4yXT1LLVIsVDAoYmUsOTYyMTIsR2UpKSxfW09lKyhEPDwzKT4+M109KCtfW0xlKyhEPDwzKT4+M10tYikvdyxE''@;'; put 'put ''PUd9RG8oMHxydCwwfE9lLDB8ZXQpLGw9bCsxfDB9Zm9yKDshKCgwfEEpPj0oMHxqZSkpOylfW3ArKCgwfHZyKEEsYykpK3BlPDwzKT4+M109K19bcnQrKEE8PDMpPj4zXSxBPUErMXwwO3BlPXBlKzF8MH1IdChydCksSHQoT2UpLEh0KExlKSxvZT1sdH0pKGwsYyxmLHAsQSwwKSxtPTA7YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDptPTB9cmV0dXJuK219ZnVuY3Rpb24gT1AobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBtLEEsdyxrLE0sRCxSLHA9MCxiPTAsRz0wO2ZvcihSPW9lLG9lPW9lKzMyfDAsTT1SKzIwfDAsbT1SKzE2fDAsQT1SKzEyfDAsdz1SKzh8MCxfWyhrPVIpPj4zXT0xLEQ9MHxRbihi''@;'; put 'put ''PWw8PDMpLGI9MHxRbihiKSxjPTA7ISgoMHxjKT49KDB8bCkpOylfW0QrKGM8PDMpPj4zXT0rX1tmKygocD1jPDwxKTw8Myk+PjNdLF9bYisoYzw8Myk+PjNdPStfW2YrKCgxfHApPDwzKT4+M10sYz1jKzF8MDtmb3IoYVtNPj4yXT1jLCgwfGwpPjI/Zj0wfGZ1bmN0aW9uIEZYKGwsYyxmLHAp''@;'; put 'put ''e3JldHVybiBmfD0wLHB8PTAscD1vZSxvZT1vZSsxNnwwLGFbKGY9cCk+PjJdPTkzNjMxLFhyKDEsOTM3MDksZiksb2U9cCwwfSgwLDAsbCx3KTooYVt3Pj4yXT0wLGY9MCkscD0wfFhoKGwsbCwxLDEsMiksYz0wO2FbTT4+Ml09YywhKCgwfGMpPj0oMHxhW3c+PjJdKSk7KWFbbT4+Ml09YVtm''@;'; put 'put ''KygoRz1jPDwxKTw8Mik+PjJdLGFbQT4+Ml09YVtmKygoMXxHKTw8Mik+PjJdLGE1KHAsMSxtLEEsayksYz0xKygwfGFbTT4+Ml0pfDA7Zm9yKDI9PSgwfGwpJiYoYVttPj4yXT0wLGFbQT4+Ml09MSxhNShwLDEsbSxBLGspKSxjPTA7YVtNPj4yXT1jLCEoKDB8Yyk+PSgwfGwpKTspYTUocCwx''@;'; put 'put ''LE0sTSxrKSxjPTErKDB8YVtNPj4yXSl8MDtyZXR1cm4gbD0wfGsxZShwKSxKYShwKSxHPTB8czgobCwwKSxKYShsKSxIdChmKSxIdChEKSxIdChiKSxvZT1SLDB8R31mdW5jdGlvbiBSUChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEEsYixNLHA9MCxtPTAsdz0wLGs9MDtmb3IoTT1vZSxv''@;'; put 'put ''ZT1vZSsxNnwwLEE9TSs4fDAsX1sodz1NKT4+M109MSxiPTB8UW4oaz1sPDwzKSxrPTB8UW4oaykscD0wOyEoKDB8cCk+PSgwfGwpKTspbT0wfHZyKHAsYyksX1tiKyhwPDwzKT4+M109K19bZisobTw8Myk+PjNdLF9baysocDw8Myk+PjNdPStfW2YrKG0rMTw8Myk+PjNdLHA9cCsxfDA7Zm9y''@;'; put 'put ''KGFbQT4+Ml09cCxwPTB8ZnVuY3Rpb24gWGMobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG09MDtlOmRve3N3aXRjaCgwfGYpe2Nhc2UgMjpwPTB8UW4oMTYpLG09MHxRbigyNCksYVttKzg+PjJdPTAsYVttKzQ+PjJdPXAsYVttPj4yXT0yLGFbcD4+Ml09MCxhW3ArND4+Ml09MSxhW20r''@;'; put 'put ''MTY+PjJdPWY9cCs4fDAsYVttKzIwPj4yXT0wLGFbbSsxMj4+Ml09MixhW2Y+PjJdPTEsYVtwKzEyPj4yXT0wO2JyZWFrO2Nhc2UgMTpwPTB8UW4oNCksbT0wfFFuKDEyKSxhW20rOD4+Ml09MCxhW20rND4+Ml09cCxhW20+PjJdPTEsYVtwPj4yXT0wO2JyZWFrO2RlZmF1bHQ6aWYocTUoMCww''@;'; put 'put ''LDApLGw9KDB8Zik+MCxwKXtpZighbCl7bT0wO2JyZWFrIGV9YmwoKX1lbHNle2lmKCFsKXttPTA7YnJlYWsgZX1ibCgpfX19d2hpbGUoMCk7cmV0dXJuIDB8bX0oYiwwLGwsMCksbT0wfFhoKGwsbCwxLDEsMiksYz0wOzspe2lmKGFbQT4+Ml09YywhKCgwfGMpPCgwfGwpKSl7Yz0wO2JyZWFr''@;'; put 'put ''fWZvcihmPTE7ISgoMHxmKT49KDB8YVtwKygxMipjfDApPj4yXSkpOylhNShtLDEsQSwoMHxhW3ArKDEyKmN8MCkrND4+Ml0pKyhmPDwyKXwwLHcpLGY9ZisxfDAsYz0wfGFbQT4+Ml07Yz1jKzF8MH1mb3IoO2FbQT4+Ml09YywhKCgwfGMpPj0oMHxsKSk7KWE1KG0sMSxBLEEsdyksYz0xKygw''@;'; put 'put ''fGFbQT4+Ml0pfDA7cmV0dXJuIHc9MHxzOCgwfGsxZShtKSwwKSxKYShtKSxIdChiKSxIdChrKSxmdW5jdGlvbiBlZyhsKXt2YXIgYz0wOzB8KGx8PTApJiYoMHwoYz0wfGFbbCs0Pj4yXSkmJkh0KGMpLDB8KGM9MHxhW2wrOD4+Ml0pJiZIdChjKSxIdChsKSl9KHApLG9lPU0sMHx3fWZ1bmN0''@;'; put 'put ''aW9uIFdfKGwsYyxmKXtmfD0wO3ZhciBtLHA9MCxBPTAsdz0wLGI9MDtmb3IoQT0wfGFbKG09KGx8PTApKygyMCooY3w9MCl8MCl8MCk+PjJdLHc9MHxhW2wrKDIwKmN8MCkrND4+Ml0scD0wOzspe2lmKCgwfHApPj0oMHxBKSl7Yj00O2JyZWFrfWlmKCgwfGFbdysocDw8Mik+PjJdKT09KDB8''@;'; put 'put ''ZikpYnJlYWs7cD1wKzF8MH00PT0oMHxiKSYmKGFbbT4+Ml09QSsxLGFbdysoQTw8Mik+PjJdPWYsdz0wfGFbbCsoMjAqZnwwKSs0Pj4yXSxhWyhBPWwrKDIwKmZ8MCl8MCk+PjJdPTErKGI9MHxhW0E+PjJdKSxhW3crKGI8PDIpPj4yXT1jLDB8YVtsKzg+PjJdKSYmKFduWyhiPTB8YVtsKygy''@;'; put 'put ''MCpjfDApKzg+PjJdKT4+Ml09K1duW2I+PjJdLTEsV25bKGI9MHxhW2wrKDIwKmZ8MCkrOD4+Ml0pPj4yXT0rV25bYj4+Ml0tMSl9ZnVuY3Rpb24gJHgobCxjKXtjfD0wO3ZhciBmLHA9MDtyZXR1cm4gMHxhWyhmPTQrKGx8PTApfDApPj4yXT8oYVtjPj4yXT1hWyhwPTB8YVtsPj4yXSk+PjJd''@;'; put 'put ''LGFbYys0Pj4yXT1hW3ArND4+Ml0sYVtjKzg+PjJdPWFbcCs4Pj4yXSxhW2MrMTI+PjJdPWFbcCsxMj4+Ml0sYVsoYz0wfGFbbD4+Ml0pPj4yXT1hWyhwPWMrKCgwfGFbZj4+Ml0pLTE8PDQpfDApPj4yXSxhW2MrND4+Ml09YVtwKzQ+PjJdLGFbYys4Pj4yXT1hW3ArOD4+Ml0sYVtjKzEyPj4y''@;'; put 'put ''XT1hW3ArMTI+PjJdLGFbZj4+Ml09KDB8YVtmPj4yXSktMSxxeChsLDApLGw9MSk6bD0wLDB8bH1mdW5jdGlvbiBZXyhsLGMpe2N8PTA7dmFyIE0sRCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKEQ9b2Usb2U9b2UrMTZ8MCxNPUQsKDB8KEE9MHxhWyhiPTQrKGx8PTApfDApPj4y''@;'; put 'put ''XSkpPT0oMHxhWyhmPWwrOHwwKT4+Ml0pPyhhW2Y+PjJdPUE8PDEsZj0wfFphKDB8YVtsPj4yXSxBPDw1KSxhW2w+PjJdPWYsaz1sLHc9MHxhW2I+PjJdKTooaz1sLHc9QSxmPTB8YVtsPj4yXSksYVtiPj4yXT13KzEsYVsoYj1mKyhBPDw0KXwwKT4+Ml09YVtjPj4yXSxhW2IrND4+Ml09YVtj''@;'; put 'put ''KzQ+PjJdLGFbYis4Pj4yXT1hW2MrOD4+Ml0sYVtiKzEyPj4yXT1hW2MrMTI+PjJdOyEoKDB8QSk8PTApOyl7aWYoISgocD0rX1soZj0wfGFbaz4+Ml0pKyhBPDw0KSs4Pj4zXSk8KG09K19bZisoKGw9QT4+PjEpPDw0KSs4Pj4zXSkpKXtpZihwIT1tfHwhKDEmKDB8RDEoKSkpKWJyZWFrO2Y9''@;'; put 'put ''MHxhW2s+PjJdfWFbTT4+Ml09YVsoYj1mKyhBPDw0KXwwKT4+Ml0sYVtNKzQ+PjJdPWFbYis0Pj4yXSxhW00rOD4+Ml09YVtiKzg+PjJdLGFbTSsxMj4+Ml09YVtiKzEyPj4yXSxhW2I+PjJdPWFbKGM9ZisobDw8NCl8MCk+PjJdLGFbYis0Pj4yXT1hW2MrND4+Ml0sYVtiKzg+PjJdPWFbYys4''@;'; put 'put ''Pj4yXSxhW2IrMTI+PjJdPWFbYysxMj4+Ml0sYVsoYj0oMHxhW2s+PjJdKSsobDw8NCl8MCk+PjJdPWFbTT4+Ml0sYVtiKzQ+PjJdPWFbTSs0Pj4yXSxhW2IrOD4+Ml09YVtNKzg+PjJdLGFbYisxMj4+Ml09YVtNKzEyPj4yXSxBPWx9b2U9RH1mdW5jdGlvbiBxeChsLGMpe2N8PTA7dmFyIHcs''@;'; put 'put ''YixNLGY9MCxwPTAsbT0wLEE9MCxrPTAsRD0wO2ZvcihNPW9lLG9lPW9lKzE2fDAsdz1NLGI9NCsobHw9MCl8MDs7KXtBPTF8KGY9Yzw8MSksKDB8Zik8KDB8YVtiPj4yXSkmJigocD0rX1soRD0wfGFbbD4+Ml0pKyhmPDw0KSs4Pj4zXSk8KG09K19bRCsoYzw8NCkrOD4+M10pfHxwPT1tJiYw''@;'; put 'put ''IT0oMSYoMHxEMSgpKXwwKSl8fChrPTYpLDY9PSgwfGspJiYoaz0wLGY9Yyk7ZG97aWYoKDB8QSk8KDB8YVtiPj4yXSkpe2lmKCEoKHA9K19bKEQ9MHxhW2w+PjJdKSsoQTw8NCkrOD4+M10pPChtPStfW0QrKGY8PDQpKzg+PjNdKXx8cD09bSYmMSYoMHxEMSgpKSkpYnJlYWs7Zj1BfX13aGls''@;'; put 'put ''ZSgwKTtpZigoMHxmKT09KDB8YykpYnJlYWs7YVt3Pj4yXT1hWyhEPShBPTB8YVtsPj4yXSkrKGY8PDQpfDApPj4yXSxhW3crND4+Ml09YVtEKzQ+PjJdLGFbdys4Pj4yXT1hW0QrOD4+Ml0sYVt3KzEyPj4yXT1hW0QrMTI+PjJdLGFbRD4+Ml09YVsoQT1BKyhjPDw0KXwwKT4+Ml0sYVtEKzQ+''@;'; put 'put ''PjJdPWFbQSs0Pj4yXSxhW0QrOD4+Ml09YVtBKzg+PjJdLGFbRCsxMj4+Ml09YVtBKzEyPj4yXSxhWyhEPSgwfGFbbD4+Ml0pKyhjPDw0KXwwKT4+Ml09YVt3Pj4yXSxhW0QrND4+Ml09YVt3KzQ+PjJdLGFbRCs4Pj4yXT1hW3crOD4+Ml0sYVtEKzEyPj4yXT1hW3crMTI+PjJdLGM9Zn1vZT1N''@;'; put 'put ''fWZ1bmN0aW9uIFVfKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGY9K2YscD0rcCxBfD0wLHd8PTAsYnw9MDt2YXIgTSxrPTAsRD0wLFI9MDtpZigoTT0wIT0oMHwobXw9MCkpKT9EPTM6MHxBaihsLGMsbT0wfFFuKGM8PDMpLGMpPyhsPTEsRD0xNyk6RD0zLDM9PSgwfEQpKXtmb3Ioaz0w''@;'; put 'put ''fG1yKGM8PDIpLGFbQT4+Ml09ayxsPTA7ISgoMHxsKT49KDB8YykpOylhW2srKGw8PDIpPj4yXT1sLGw9bCsxfDA7Zm9yKGE4KG0saywwLGw9YystMXwwKSxwPShwPSgrX1ttKyhhW2srKGw8PDIpPj4yXTw8Myk+PjNdLShSPStfW20rKGFbaz4+Ml08PDMpPj4zXSkpKnAvKygwfGwpKTxmP2Y6''@;'; put 'put ''cCxsPTAsQT0xLGY9UjshKCgwfEEpPj0oMHxjKSk7KWw9bCsoKFI9K19bbSsoYVtrKyhBPDwyKT4+Ml08PDMpPj4zXSktZj5wJjEpfDAsQT1BKzF8MCxmPVI7YVtiPj4yXT1sO2U6ZG97aWYobClmb3IoYj0wfFFuKGw8PDIpLGFbdz4+Ml09YixsPTAsQT0xOzspe2lmKCgwfEEpPj0oMHxjKSli''@;'; put 'put ''cmVhayBlOytfW20rKGFbaysoQTw8Mik+PjJdPDwzKT4+M10tK19bbSsoYVtrKyhBKy0xPDwyKT4+Ml08PDMpPj4zXT5wJiYoYVtiKyhsPDwyKT4+Ml09QSxsPWwrMXwwKSxBPUErMXwwfWVsc2Ugaz0wfFFuKDQpLGFbdz4+Ml09ayxhW2s+PjJdPWN9d2hpbGUoMCk7TT9sPTA6KGw9MCxEPTE3''@;'; put 'put ''KX1yZXR1cm4gMTc9PSgwfEQpJiZIdChtKSwwfGx9ZnVuY3Rpb24gV3QobCxjKXtsfD0wLGN8PTA7dmFyIFIsRyxLLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLHBlPTA7Zm9yKDB8KGY9MHxhWzQ2OTMwXSkmJko1KGYpLGFbNDY5MzBdPTB8c2goYyxjLDApLDB8KGY9MHxh''@;'; put 'put ''WzQ2OTMxXSkmJkh0KGYpLGFbNDY5MzFdPTB8bXIoYzw8MiksMHwoZj0wfGFbNDY5MzJdKSYmSHQoZiksUj0wfG1yKGM8PDMpLGFbNDY5MzJdPVIsRz0wfGFbNDY5MzBdLEs9MHxhWzQ2OTMxXSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGMpKXtwPTEwO2JyZWFrfWZvcihwPWwrKHc8PDIpfDAsQT1H''@;'; put 'put ''Kyh3PDwyKXwwLG09MCxmPTA7KDB8ZikhPSgwfGMpOylfWygwfGFbQT4+Ml0pKyhmPDwzKT4+M109Yj0rX1soMHxhW3A+PjJdKSsoZjw8Myk+PjNdLG09bTwoYj0rZW8oK2IpKT9iOm0sZj1mKzF8MDtpZigwPT1tKXtwPTE1O2JyZWFrfV9bUisodzw8Myk+PjNdPTEvbSxhW0srKHc8PDIpPj4y''@;'; put 'put ''XT13LHc9dysxfDB9ZTpkb3tpZigxMD09KDB8cCkpe0Q9YystMXwwLGY9MCxNPTA7dDpmb3IoOygwfE0pPCgwfEQpOyl7Zm9yKHA9TSxrPWYsbT0wOyEoKDB8cCk+PSgwfGMpKTspYj0rZW8oKyArX1soMHxhW0crKChsPTB8YVtLKyhwPDwyKT4+Ml0pPDwyKT4+Ml0pKyhNPDwzKT4+M10pLHc9''@;'; put 'put ''KGw9bTwoYio9K19bUisobDw8Myk+PjNdKSk/cDprLHA9cCsxfDAsaz13LG09bD9iOm07aWYoMD09bSl7Zj0wO2JyZWFrIGV9Zm9yKGY9SysoTTw8Mil8MCwoMHxrKSE9KDB8TSkmJih3PTB8YVtmPj4yXSxhW2Y+PjJdPWFbKGw9Sysoazw8Mil8MCk+PjJdLGFbbD4+Ml09dyksbT0xLytfWyhB''@;'; put 'put ''PTB8YVtHKyhhW2Y+PjJdPDwyKT4+Ml0pKyhNPDwzKT4+M10scD1sPU0rMXwwOzspe2lmKCgwfHApPj0oMHxjKSl7Zj1rLE09bDtjb250aW51ZSB0fV9bKGY9KHc9MHxhW0crKGFbSysocDw8Mik+PjJdPDwyKT4+Ml0pKyhNPDwzKXwwKT4+M109Yj0rX1tmPj4zXSptO246ZG97aWYoMCE9Yilm''@;'; put 'put ''b3IoZj1sOzspe2lmKCgwfGYpPj0oMHxjKSlicmVhayBuO19bKHBlPXcrKGY8PDMpfDApPj4zXT0rX1twZT4+M10tK19bQSsoZjw8Myk+PjNdKmIsZj1mKzF8MH19d2hpbGUoMCk7cD1wKzF8MH19Zj0wIT0rX1soMHxhW0crKGFbSysoRDw8Mik+PjJdPDwyKT4+Ml0pKyhEPDwzKT4+M10mMX1l''@;'; put 'put ''bHNlIDE1PT0oMHxwKSYmKF9bUisodzw8Myk+PjNdPTAsZj0wKX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIGppKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgayxNLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKGs9MHxhWzQ2OTMwXSxNPTB8YVs0NjkzMV0sYj0wOzspe2lmKCgwfGIp''@;'; put 'put ''Pj0oMHxmKSl7cD1mO2JyZWFrfWZvcih3PWsrKChBPTB8YVtNKyhiPDwyKT4+Ml0pPDwyKXwwLG09MCxwPTA7KDB8cCkhPSgwfGIpOyltPStfW2wrKHA8PDMpPj4zXSorX1soMHxhW3c+PjJdKSsocDw8Myk+PjNdK20scD1wKzF8MDtfW2wrKGI8PDMpPj4zXT0rX1tjKyhBPDwzKT4+M10tbSxi''@;'; put 'put ''PWIrMXwwfWZvcig7Yz1wKy0xfDAsISgoMHxwKTw9MCk7KXtmb3IoQT1NKyhjPDwyKXwwLG09MDshKCgwfHApPj0oMHxmKSk7KW09K19bbCsocDw8Myk+PjNdKitfWygwfGFbaysoYVtBPj4yXTw8Mik+PjJdKSsocDw8Myk+PjNdK20scD1wKzF8MDtfWyhwPWwrKGM8PDMpfDApPj4zXT0oK19b''@;'; put 'put ''cD4+M10tbSkvK19bKDB8YVtrKyhhW0E+PjJdPDwyKT4+Ml0pKyhjPDwzKT4+M10scD1jfX1mdW5jdGlvbiBVaShsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8UW4oOCksYVtjPj4yXT1sLGFbYys0Pj4yXT0wLDB8Y31mdW5jdGlvbiByaChsLGMpe2N8PTA7dmFyIGY9MCxwPTA7aWYoMHwobHw9''@;'; put 'put ''MCkpZG97Zj1sLGw9MHxhW2wrND4+Ml0sMHwocD0wfGFbZj4+Ml0pJiZub1sxMjcmY10ocCksSHQoZil9d2hpbGUoMCE9KDB8bCkpfWZ1bmN0aW9uIFBoKGwsYyl7cmV0dXJuIGx8PTAsYz0wfFVpKGN8PTApLGFbYys0Pj4yXT1sLDB8Y31mdW5jdGlvbiBodShsKXtyZXR1cm4gMHxhWyhsfD0w''@;'; put 'put ''KT4+Ml19ZnVuY3Rpb24gaTcobCl7cmV0dXJuIDB8YVs0KyhsfD0wKT4+Ml19ZnVuY3Rpb24gUV8obCl7dmFyIGM7cmV0dXJuIGx8PTAsYz0wfFFuKDEyKSxhW2M+PjJdPWwsYVtjKzQ+PjJdPTAsYVtjKzg+PjJdPTAsMHxjfWZ1bmN0aW9uIGVUKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDtpZigw''@;'; put 'put ''fChsfD0wKSlkb3tmPWwsbD0wfGFbbCs0Pj4yXSwwfChwPTB8YVtmPj4yXSkmJm5vWzEyNyZjXShwKSxIdChmKX13aGlsZSgwIT0oMHxsKSl9ZnVuY3Rpb24gSl8obCxjLGYpe2Z8PTA7dmFyIHA9MCxtPTAsQT0wOzB8KGx8PTApJiYocD0wfGFbbCs0Pj4yXSxtPTB8YVtsKzg+PjJdLDB8KEE9''@;'; put 'put ''MHxhW2w+PjJdKSYmbm9bMTI3JihjfD0wKV0oQSksSHQobCksMHxwJiYoYVtwKzg+PjJdPW0pLGFbKDB8bT9tKzR8MDpmKT4+Ml09cCl9ZnVuY3Rpb24gWF8obCl7YVsobHw9MCk+PjJdPTAsYVtsKzQ+PjJdPTB9ZnVuY3Rpb24gclQobCl7dmFyIGM7cmV0dXJuIGx8PTAsWF8oMzYrKGM9MHxt''@;'; put 'put ''cig2NCkpfDApLGFbYys4Pj4yXT1sLDB8Y31mdW5jdGlvbiBIUChsKXtyZXR1cm4gMHxObygwfGFbOCsobHw9MCk+PjJdKX1mdW5jdGlvbiBpVChsLGMpe3ZhciBmLHA7bHw9MCxhWzQrKGN8PTApPj4yXT0wLGFbKDA9PSgwfChwPTB8YVsoZj1sKzR8MCk+PjJdKSk/bDpwKzR8MCk+PjJdPWMs''@;'; put 'put ''YVtmPj4yXT1jfWZ1bmN0aW9uIG9UKGwsYyl7dmFyIGY7Y3w9MCwoZj0wfGFbKGx8PTApPj4yXSk/YVtjKzQ+PjJdPWY6KGFbbD4+Ml09YyxsPWwrNHwwKSxhW2w+PjJdPWN9ZnVuY3Rpb24gYVQobCxjLGYscCxtKXtsfD0wLGN8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTAsTT0w''@;'; put 'put ''LEQ9MDtmb3IoYVsoRD04KyhmfD0wKXwwKT4+Ml09MSsoTT0wfGFbRD4+Ml0pLGFbMTYrKDB8YVsxMTIrKDB8YVsoRD1jKzE2fDApPj4yXSk+PjJdKSs0Pj4yXT1NLGFbMjQrKDB8YVsxMTIrKDB8YVtEPj4yXSk+PjJdKT4+Ml09TSxNPTA9PSgwfHApLGs9MHxGcyhsLGMpO2s7KXsoMHwoQT0w''@;'; put 'put ''fGFbKDI9PSgwfChwPTMmYVtrPj4yXSkpP2s6aystNDh8MCkrNDA+PjJdKSk9PSgwfGMpPyhwPTB8YVsoMz09KDB8cCk/azprKzQ4fDApKzQwPj4yXSwwfGFbKEE9MHxhWzEyMCsoMHxhW2srMTY+PjJdKT4+Ml0pPj4yXXx8KGFbQT4+Ml09LTEpKTooMHxhWyhwPTB8YVsxMjArKDB8YVtrKzE2''@;'; put 'put ''Pj4yXSk+PjJdKT4+Ml18fChhW3A+PjJdPTEpLHA9QSksYj0wfGFbMTYrKHc9MHxhWzExMisoMHxhWyhBPXArMTZ8MCk+PjJdKT4+Ml0pKzQ+PjJdO2Rve2lmKGIpKDB8YVs4KyhBPTB8YVsxMTIrKDB8YVtEPj4yXSk+PjJdKT4+Ml0pIT0oMHxwKSYmKGFbKHc9QSsyNHwwKT4+Ml09KDB8KEE9''@;'; put 'put ''MHxhW3c+PjJdKSk8KDB8Yik/QTpiKTtlbHNlIGlmKGFbdys4Pj4yXT1jLGpQKG0sayksYVQobCxwLGYsMCxtKSxhWyhiPTI0KygwfGFbMTEyKygwfGFbRD4+Ml0pPj4yXSl8MCk+PjJdPWFbMjQrKDB8YVsxMTIrKDB8YVsoKDB8YVtiPj4yXSk8KDB8YVsyNCsoMHxhWzExMisoMHxhW0E+PjJd''@;'; put 'put ''KT4+Ml0pPj4yXSk/YzpwKSsxNj4+Ml0pPj4yXSk+PjJdLCgwfGFbMjQrKDB8YVsxMTIrKDB8YVtBPj4yXSk+PjJdKT4+Ml0pPj0oMHxhWzE2KygwfGFbMTEyKygwfGFbRD4+Ml0pPj4yXSkrND4+Ml0pKXtwPTA7ZG97dz0wfFpQKG0pLDB8YVsxMisoMHxhWzExMisoMHxhWzE2KyhBPTB8YVso''@;'; put 'put ''KDMmYVt3Pj4yXXwwKT09KDB8KChBPTE9PSgwfGFbYVsxMjArKDB8YVt3KzE2Pj4yXSk+PjJdPj4yXSkpPzI6MykpP3c6dysoNDgqKEE/LTE6MSl8MCl8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdfHwocHx8KHA9MHxsVChsLGYpKSxLXyhwLEEpKX13aGlsZSgoMHx3KSE9KDB8aykpO2lmKDB8''@;'; put 'put ''cCl7aWYoMD09KDB8YVsxMisoMHxhWzExMisoMHxhW0Q+PjJdKT4+Ml0pPj4yXSkmJigwfEhQKHApKT4xJiZLXyhwLGMpLCFNJiYoMHxhWzEyKygwfGFbMTEyKygwfGFbRD4+Ml0pPj4yXSk+PjJdKT09KDB8cCkpe29UKGYscCk7YnJlYWt9aVQoZixwKX19fXdoaWxlKDApO2s9MHxUcyhsLGss''@;'; put 'put ''Yyl9IU0mJjA9PSgwfGFbMTIrKDB8YVsxMTIrKDB8YVtEPj4yXSk+PjJdKT4+Ml0pJiYoS18oRD0wfGxUKGwsZiksYyksb1QoZixEKSl9ZnVuY3Rpb24galAobCxjKXthWzQrKDB8YVsxMjArKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4yXT1hWyhsfD0wKT4+Ml0sYVtsPj4yXT1jLGFbKGM9''@;'; put 'put ''bCs0fDApPj4yXT0xKygwfGFbYz4+Ml0pfWZ1bmN0aW9uIFpQKGwpe3ZhciBjLGYscDtyZXR1cm4oYz0wfGFbKGx8PTApPj4yXSl8fEJyKDEzODM5NCw5NjI1NCw2NSw5NjI2NiksKDB8KHA9MHxhWyhmPWwrNHwwKT4+Ml0pKT4wPyhhW2w+PjJdPWFbNCsoMHxhWzEyMCsoMHxhW2MrMTY+PjJd''@;'; put 'put ''KT4+Ml0pPj4yXSxhW2Y+PjJdPXArLTEsMHxjKTooQnIoOTYyNDQsOTYyNTQsNjEsOTYyNjYpLDApfWZ1bmN0aW9uIGxUKGwsYyl7cmV0dXJuIDB8clQoMHxmdW5jdGlvbiB6UChsLGMpe2x8PTA7dmFyIGYscCxtLEE7cmV0dXJuIGY9b2Usb2U9b2UrMTQ0fDAsbT1mLHA9Zis4fDAsYVsoQT0x''@;'; put 'put ''MisoY3w9MCl8MCk+PjJdPTErKGM9MHxhW0E+PjJdKSxhW20+PjJdPWMsYW8ocCw5NjIzNCxtKSxmMChjPTB8eXMobCxwLDEpLDEzNzQ4MywyODAsMSksb2U9ZiwwfGN9KGx8PTAsY3w9MCkpfWZ1bmN0aW9uIEtfKGwsYyl7Vm4oMHxhWzgrKGx8PTApPj4yXSxjfD0wLDEpLGFbMTIrKDB8YVsx''@;'; put 'put ''MTIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml09bH1mdW5jdGlvbiBzVChsKXt2YXIgYz0wLGY9MDtmb3IoYz0wfGFbMzYrKGx8PTApPj4yXTtjOylmPTB8YVtjKzQ+PjJdLHNUKGMpLGM9ZjshZnVuY3Rpb24gRlAobCl7MHwobHw9MCkmJihvNygwfGFbbCszMj4+Ml0pLEh0KGwpKX0obCl9ZnVu''@;'; put 'put ''Y3Rpb24gdVQobCxjLGYpe2x8PTAsZj0rZjt2YXIgcD0wLG09MCxBPTAsdz0wO2ZvcihwPTM2KyhjfD0wKXwwLG09MDtwPTB8YVtwPj4yXTspdVQobCxwLGYpLHA9cCs0fDAsbT1tKzF8MDtwPTB8ZnVuY3Rpb24gZFQobCxjLGYpe2Y9K2Y7dmFyIEEsdyxiLGssTSxwPTAsbT0wLEQ9MCxSPTAs''@;'; put 'put ''Rz0wO2ZvcihEPTB8YVs4KyhjfD0wKT4+Ml0sZnVuY3Rpb24gZjUobCxjKXtsfD0wO3ZhciBtLGY9MCxwPTA7Zm9yKGY9MHxMdChtPTB8YVs4KyhjfD0wKT4+Ml0pO2Y7KXtmb3IocD0wfHkwKGwsZik7cDspKDB8YVsxMisoMHxhWzExMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbcD4+Ml18MCk/''@;'; put 'put ''cDpwKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+Ml0pPT0oMHxjKSYmT2QobSxwLDEpLHA9MHxrMChsLHApO2Y9MHx6dChtLGYpfX0obHw9MCxjKSxNPTB8ZnVuY3Rpb24gUEEobCl7dmFyIG0sdyxNLGM9MCxmPTAscD0wLEE9MCxiPTAsaz0wO2ZvcihNPW9lLG9lPW9lKzE2fDAsbT0wfGZ1''@;'; put 'put ''bmN0aW9uIEdHKGwsYyl7bHw9MCxjfD0wO3ZhciBrLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MCxEPTA7Zm9yKGs9b2Usb2U9b2UrMTQ0fDAsYj1rKzh8MCx3PWssZj1rKzE2fDAsYVs0NjkzNF09MSsoQT0wfGFbNDY5MzRdKSxhW3c+PjJdPUEsYW8oZiw5NjMxMix3KSxmMCh3PTB8eXMo''@;'; put 'put ''bCxmLDEpLDEzNzQ4MywyODAsMSksYVs0NjkzNF09MSsoQT0wfGFbNDY5MzRdKSxhW2I+PjJdPUEsYW8oZiw5NjMxMixiKSx1ZVtiPj4wXT0wfHVlWyhBPWwrMjR8MCk+PjBdLHVlW2IrMT4+MF09MHx1ZVtBKzE+PjBdLHVlW2IrMj4+MF09MHx1ZVtBKzI+PjBdLHVlW2IrMz4+MF09MHx1ZVtB''@;'; put 'put ''KzM+PjBdLGI9MHxFYyhmLGIsMCksZj0wfEx0KGwpO2Y7KVZuKHcsZiwxKSxmMChBPTB8TXIoYiwwfCRyKGYpLDEpLDEzNzQ0NywzMDQsMSksYVsxNisoMHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pPj4yXT1BLGY9MHx6dChsLGYpO2ZvcihwPTB8THQobCk7cDspe2ZvcihBPTE2KyhtPTB8''@;'; put 'put ''YVsxNisoMHxhWzExMisoMHxhW3ArMTY+PjJdKT4+Ml0pPj4yXSl8MCxmPTB8eTAobCxwKTtmOylPZCh3LGYsMSksZjAoRD0wfHJsKGIsbSxNPTB8YVsxNisoMHxhWzExMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+Ml0sMCwx''@;'; put 'put ''KSwxMzc0NjAsMTc2LDEpLGFbMTE2KygwfGFbRCsxNj4+Ml0pPj4yXT1mLGFbKEQ9MjM2KygwfGFbQT4+Ml0pfDApPj4yXT0xKygwfGFbRD4+Ml0pLGFbKE09MjM2KygwfGFbTSsxNj4+Ml0pfDApPj4yXT0xKygwfGFbTT4+Ml0pLGY9MHxrMChsLGYpO3A9MHx6dChsLHApfXJldHVybiBhW2M+''@;'; put 'put ''PjJdPWIsb2U9aywwfHd9KGx8PTAsQT1NKSxiPTB8Tm8oQT0wfGFbQT4+Ml0pLHc9MHxmdW5jdGlvbiBtVChsKXtsfD0wO3ZhciBmLGM9MDtmb3IoZj0wfGZ1bmN0aW9uIFhQKCl7cmV0dXJuIDB8QXMoMTgyNDAsMHxhWzQ1ODFdKX0oKSxjPTB8THQobCk7YzspbDcoZixjKSxjPTB8enQobCxj''@;'; put 'put ''KTtyZXR1cm4gMHxmfShBKSxiPWIrLTN8MCxwPTA7ISgoMHxwKT49KDB8YikpOyl7Zm9yKGY9MHxGcyhBLGs9MHwkUCh3KSk7ZjspKDB8ayk9PSgwfChsPTB8YVsoMj09KDB8KGM9MyZhW2Y+PjJdKSk/ZjpmKy00OHwwKSs0MD4+Ml0pKSYmKGw9MHxhWygzPT0oMHxjKT9mOmYrNDh8MCkrNDA+''@;'; put 'put ''PjJdKSxLUCh3LGwpLGY9MHxUcyhBLGYsayk7Zm9yKHZUKEEsayxtKSxmPTB8RnMoQSxrKTtmOykoMHxrKT09KDB8KGw9MHxhWygyPT0oMHwoYz0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSkpJiYobD0wfGFbKDM9PSgwfGMpP2Y6Zis0OHwwKSs0MD4+Ml0pLGFbKGM9MjM2KygwfGFb''@;'; put 'put ''bCsxNj4+Ml0pfDApPj4yXT0oMHxhW2M+PjJdKS0xLGw3KHcsbCksZj0wfFRzKEEsZixrKTtuaShBLGspLHA9cCsxfDB9cmV0dXJuIFExKEEpLGZ1bmN0aW9uIE5oKGwpe2lzKGx8PTApfSh3KSxvZT1NLDB8bX0oRCksbD0wfGZ1bmN0aW9uIFNvKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0w''@;'; put 'put ''O2lmKDEhPSgwfE5vKGx8PTApKSl7Zm9yKGY9MHxMdChsKTtmOyl7Zm9yKGM9MCxwPTB8RnMobCxmKTtwOyljPWMrMXwwLHA9MHxUcyhsLHAsZik7MT09KDB8YykmJkhBKGYsZiwwLDApLGY9MHx6dChsLGYpfWZvcihjPTAsbT0wLGY9MHxMdChsKTtmOyljPShwPSgwfChBPSgwfGFbMzIrKEE9''@;'; put 'put ''MHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pPj4yXSkrKDB8YVtBKzE2KzEyPj4yXSl8MCkpPigwfGMpKT9BOmMsbT1wP2Y6bSxmPTB8enQobCxmKTtmb3IoYz0wfGM1KCksZj0xNisoMHxhWzExMisoMHxhWyhwPW0rMTZ8MCk+PjJdKT4+Ml0pKzR8MDsoMHwoZj0wfGFbZj4+Ml0pKSE9KDB8''@;'; put 'put ''bSk7KUZoKGMsMCxmKSxhWyhBPTQrKGY9MHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDApPj4yXT0xNnxhW0E+PjJdLGY9ZisxNnwwO2lmKEZoKGMsMCxtKSxhWyhsPTQrKEE9MHxhWzExMisoMHxhW3A+PjJdKT4+Ml0pfDApPj4yXT0xNnxhW2w+PjJdLDB8YVtBKzMyPj4yXSl7Zm9yKGw9''@;'; put 'put ''MHxjNSgpLGY9MjQrKDB8YVsxMTIrKDB8YVtwPj4yXSk+PjJdKXwwOygwfChmPTB8YVtmPj4yXSkpIT0oMHxtKTspRmgobCwwLGYpLGFbKEE9NCsoZj0wfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXSl8MCk+PjJdPTE2fGFbQT4+Ml0sZj1mKzE2fDA7IWZ1bmN0aW9uIGhUKGwsYyl7KGZ1bmN0''@;'; put 'put ''aW9uIG9jKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTA7MHwoZj0wfGFbKGN8PTApPj4yXSkmJihhWzQrKG09MHxhWyhwPWwrNHwwKT4+Ml0pPj4yXT1mLGFbZis4Pj4yXT1tLGFbcD4+Ml09YVtjKzQ+PjJdLGFbKGY9bCs4fDApPj4yXT0oMHxhW2Y+PjJdKSsoMHxhW2MrOD4+Ml0pKX0pKGx8''@;'; put 'put ''PTAsMHxmdW5jdGlvbiBhNyhsKXt2YXIgZixjPTAscD0wLG09MCxBPTA7Zm9yKGY9Yz0wfGFbKGx8PTApPj4yXTtjOylwPTB8YVsoQT1jKzR8MCk+PjJdLGFbQT4+Ml09YVsobT1jKzh8MCk+PjJdLGFbbT4+Ml09cCxjPXA7cmV0dXJuIEE9MHxhWyhtPWwrNHwwKT4+Ml0sYVttPj4yXT1mLGFb''@;'; put 'put ''bD4+Ml09QSwwfGx9KGN8PTApKSxIdChjKX0oYyxsKX19ZWxzZSBGaChjPTB8YzUoKSwwLEE9MHxMdChsKSksYVsoQT00KygwfGFbMTEyKygwfGFbQSsxNj4+Ml0pPj4yXSl8MCk+PjJdPTE2fGFbQT4+Ml07cmV0dXJuIDB8Y30oMHxmdW5jdGlvbiBwVChsKXtsfD0wO3ZhciBtLGM9MCxmPTAs''@;'; put 'put ''cD0wO2ZvcihtPW9lLG9lPW9lKzE0NHwwLGM9bSxwPW0rOHwwLGFbNDY5MzNdPTErKGY9MHxhWzQ2OTMzXSksYVtjPj4yXT1mLGFvKHAsOTYzMDMsYyksZjAocD0wfHlzKGwscCwxKSwxMzc0ODMsMjgwLDEpLGM9MHxMdChsKTtjOylWbihwLGMsMSksYVsxNisoMHxhWzExMisoMHxhWyhmPWMr''@;'; put 'put ''MTZ8MCk+PjJdKT4+Ml0pKzEyPj4yXT0wLGFbMzIrKDB8YVsxMTIrKDB8YVtmPj4yXSk+PjJdKT4+Ml09MCxhWyhmPTQrKDB8YVsxMTIrKDB8YVtmPj4yXSk+PjJdKXwwKT4+Ml09LTImYVtmPj4yXSxjPTB8enQobCxjKTtmb3IoYz0wfEx0KGwpO2M7KTEmYVs0KyhmPTB8YVsxMTIrKDB8YVtj''@;'; put 'put ''KzE2Pj4yXSk+PjJdKT4+Ml18fChhW2YrMTY+PjJdPTAsQjIobCxjLHApKSxjPTB8enQobCxjKTtyZXR1cm4gb2U9bSwwfHB9KE0pKSxmdW5jdGlvbiBVUChsLGMpe2N8PTA7dmFyIGY9MDtmb3IoZj0wfEx0KGx8PTApO2Y7KTE2JmFbNCsoMHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pPj4y''@;'; put 'put ''XXx8RkEobCxmLGMpLGY9MHx6dChsLGYpfShELGwpLEQ9MHxmdW5jdGlvbiBRUChsLGMpe3ZhciBtLEEsZj0wLHA9MDtBPW9lLG9lPW9lKzE2fDAsbT1BLGY9MHx4NihsfD0wLGN8PTApLGFbbT4+Ml09ZjtlOmRve2lmKGYpZm9yKHA9MDs7KXtpZigoMHxwKT49MTApYnJlYWsgZTtpZihsPTB8''@;'; put 'put ''SlAobCxjLG0pLCgwfGYpPT0oMHwoZj0wfGFbbT4+Ml0pKXwwPT0oMHxmKSlicmVhaztwPXArMXwwfX13aGlsZSgwKTtyZXR1cm4gb2U9QSwwfGx9KGwsRCksbD0wfEhoKEQpLGI9K2Z1bmN0aW9uIGdUKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MDtmb3IoYz0wO2w9MHxhW2w+PjJdOylj''@;'; put 'put ''PShwPStfWzQwKyhtPTB8YVsxNisoMHxhW2FbMTEyKygwfGFbMTYrKDB8YVtsPj4yXSk+PjJdKT4+Ml0+PjJdKT4+Ml0pPj4zXSk+KGY9KGY9K19bbSszMj4+M10pPmM/ZjpjKT9wOmYsbD1sKzR8MDtyZXR1cm4rY30oRCksdz0uMTU5MTU0OTQzMDkxODk1MzUqKG09KygwfGwpKSooYitmKSxB''@;'; put 'put ''PShrPTE9PSgwfGwpKT8wOncsbD1EO2w9MHxhW2w+PjJdOyl7aWYoOCZhWzQrKDB8YVsxMTIrKDB8YVsxNisoMHxhW2w+PjJdKT4+Ml0pPj4yXSk+PjJdfDApe3A9NDticmVha31sPWwrNHwwfWZvcig0PT0oMHxwKSYmZnVuY3Rpb24gRTYobCxjKXt2YXIgZixwPTAsbT0wOygwfChmPTB8YVso''@;'; put 'put ''bHw9MCk+PjJdKSkhPSgwfChjfD0wKSkmJihwPTB8YVsobT1jKzh8MCk+PjJdLGFbbD4+Ml09YyxhW20+PjJdPTAsYVs0KyhsPTB8YVsoYz1sKzR8MCk+PjJdKT4+Ml09ZixhW2YrOD4+Ml09bCxhW2M+PjJdPXAsYVtwKzQ+PjJdPTApfShELGwpLGY9MS9tLHA9MCxsPUQ7bD0wfGFbbD4+Ml07''@;'; put 'put ''KWFbMTYrKDB8YVsxMTIrKDB8YVsoUj0xNisoMHxhW2w+PjJdKXwwKT4+Ml0pPj4yXSk+PjJdPXAsX1syNCsoMHxhWzExMisoMHxhW1I+PjJdKT4+Ml0pPj4zXT0wLEc9K2xhKCsobT02LjI4MzE4NTMwNzE3OTU4NipmKisoMHxwKSkpKkEsX1soUj0wfGFbMTMyKygwfGFbUj4+Ml0pPj4yXSk+''@;'; put 'put ''PjNdPUcsX1tSKzg+PjNdPStJYSgrbSkqQSxwPXArMXwwLGw9bCs0fDA7cmV0dXJuIF9bYysxNj4+M109Rz1rPy41KmI6dyxfW2MrMjQ+PjNdPUcsX1tjKzQ4Pj4zXT0tMSxRMShNKSwwfER9KGwsYyxmKSxhW2MrMzI+PjJdPXAsbD0wfEhoKHApLGY9KDB8bSk+MD8rZnVuY3Rpb24gY1QobCxj''@;'; put 'put ''LGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtPSttO3ZhciBHLEsscGUsbWUsYmUsTGUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLE9lPTA7Zm9yKExlPW9lLG9lPW9lKzQ4fDAsYmU9TGUsT2U9MHxtcig1NioobHw9MCl8MCksYVtiZSs0MD4+Ml09YVtwKzM2Pj4yXSxfWyhLPWJlKzh8MCk+''@;'; put 'put ''PjNdPWI9K19bKEc9cCsxNnwwKT4+M10sX1tiZT4+M109YixhW2JlKzQ0Pj4yXT1hW3A+PjJdLF9bYmUrMTY+PjNdPWI9Ni4yODMxODUzMDcxNzk1ODYvKygwfGMpLF9bKHBlPWJlKzI0fDApPj4zXT0tMSxfWyhtZT1iZSszMnwwKT4+M109LTEsaz0wLFI9MCxBPTA7dz0wfGFbZj4+Ml07KTgm''@;'; put 'put ''YVs0KygwfGFbMTEyKygwfGFbMTYrKGY9MHxhW3c+PjJdKT4+Ml0pPj4yXSk+PjJdPyhhWyhEPU9lKyg1NipSfDApfDApPj4yXT1mLF9bT2UrKDU2KlJ8MCkrOD4+M109YiorKDB8ayksZj1SKzF8MCxBPStmVChELGJlLG0pKTpmPVIsaz1rKzF8MCxSPWYsZj13KzR8MDtlOmRve3N3aXRjaCgw''@;'; put 'put ''fFIpe2Nhc2UgMTpfW09lKzQwPj4zXT0xLGY9MDticmVhaztjYXNlIDI6QkEoT2UsT2UrNTZ8MCwoYj0rX1tPZSs2ND4+M10tK19bT2UrOD4+M10pPjMuMTQxNTkyNjUzNTg5NzkzPzYuMjgzMTg1MzA3MTc5NTg2LWI6YiksZj0wO2JyZWFrO2RlZmF1bHQ6Zm9yKEQ9T2UrOHwwLE09T2UsZj0w''@;'; put 'put ''Ozspe2lmKCgwfGYpPj0oMHxSKSl7Zj0wO2JyZWFrIGV9KDB8KGY9ZisxfDApKT09KDB8Uik/KHc9T2UsYj0rX1tEPj4zXSs2LjI4MzE4NTMwNzE3OTU4Ni0rX1tNKzg+PjNdLGs9TSs1NnwwKToodz1rPU0rNTZ8MCxiPStfW00rNjQ+PjNdLStfW00rOD4+M10pLEJBKE0sdyxiKSxNPWt9fX13''@;'; put 'put ''aGlsZSgwKTtmb3IoOyEoKDB8Zik+PSgwfFIpKTspJF8oT2UrKDU2KmZ8MCl8MCxiZSxjLG0pLGY9ZisxfDA7cmV0dXJuIEh0KE9lKSwxPT0oMHxsKT8oQnUocCwtKG09QSsuNSptKSwwLDApLF9bRz4+M109K19bRz4+M10rbSxhWyhPZT1wKzU2fDApPj4yXT0xfGFbT2U+PjJdKTpfW0c+PjNd''@;'; put 'put ''PStfW0s+PjNdLG9lPUxlLCsoLjUqKCtfW21lPj4zXSsgK19bcGU+PjNdKS0zLjE0MTU5MjY1MzU4OTc5Myl9KG0sbCxwLGMsZik6My4xNDE1OTI2NTM1ODk3OTMsMT09KDB8bCkmJjB8KEE9MHxhW2M+PjJdKSYmMHxhWzgrKDB8YVsxMTIrKDB8YVtBKzE2Pj4yXSk+PjJdKT4+Ml0mJihfWyh3''@;'; put 'put ''PWMrNDh8MCk+PjNdPWYsZjwwKSYmKF9bdz4+M109Zis2LjI4MzE4NTMwNzE3OTU4Nil9ZnVuY3Rpb24gZlQobCxjLGYpe2x8PTAsZj0rZjt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKHc9MCxtPTAsQT0wLHA9NDArKGN8PTApfDA7Yj0wfGFbcD4+Ml07KSgwfChwPShwPTB8YVti''@;'; put 'put ''Pj4yXSk/MHxhWzgrKDB8YVsxMTIrKDB8YVtwKzE2Pj4yXSk+PjJdKT4+Ml06MCkpPT0oMHxhW2w+PjJdKT8ocD13KzF8MCxtPW0rZisyKihrPStfW2IrMTY+PjNdKSxBPUE8az9rOkEpOnA9dyx3PXAscD1iKzR8MDtyZXR1cm4gX1tsKzMyPj4zXT1tLGFbbCs0OD4+Ml09dyxfW2wrMTY+PjNd''@;'; put 'put ''PUErZisgK19bYz4+M10sX1tsKzI0Pj4zXT1BLCtBfWZ1bmN0aW9uIEJBKGwsYyxmKXt2YXIgcCxtOyhmPShmPSgocD0rX1sxNisobHw9MCk+PjNdKSorX1szMisoY3w9MCk+PjNdKyhtPStfW2MrMTY+PjNdKSorX1tsKzMyPj4zXSkvKDIqKGY9K2YpKm0qcCkpPDE/MTpmKT4rX1sobD1sKzQw''@;'; put 'put ''fDApPj4zXSYmKF9bbD4+M109ZiksZj4rX1sobD1jKzQwfDApPj4zXSYmKF9bbD4+M109Zil9ZnVuY3Rpb24gJF8obCxjLGYscCl7cD0rcDt2YXIgcGUsbWUsYmUsT2UsTGUsSGUsamUsZXQscnQsR2UsbHQsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLEJlPTAsTXQ9''@;'; put 'put ''MCxrdD0wLGF0PTA7Zm9yKGs9K19bKEdlPTI0KyhjfD0wKXwwKT4+M10sYj0rX1sobHQ9YyszMnwwKT4+M10sbT0rX1sxNisobHw9MCk+PjNdKitfW2wrNDA+PjNdLChqZT0xPT0oMHwoZnw9MCkpKT8obT02LjI4MzE4NTMwNzE3OTU4NiooQT1tPihBPS4xNTkxNTQ5NDMwOTE4OTUzNSooQmU9''@;'; put 'put ''K19bbCszMj4+M10pKT9tOkEpLUJlKT4wPyhwPW0vKygwfGFbbCs0OD4+Ml0pK3AsTT0wLG09QSk6KE09MCxtPUEpOk09K19bbCs4Pj4zXS0rX1tsKzMyPj4zXS8oMiptKSxtZT0ocGU9K19bbCsyND4+M10rbSk+KGV0PStfWyhydD1jKzh8MCk+PjNdKSxPZT0oMSsoMHxhWyhiZT1sKzQ4fDAp''@;'; put 'put ''Pj4yXSl8MCkvMnwwLExlPTEvbSxCZT1wL20qLjUsSGU9bCs4fDAsUj1jKzQwfDAsRz0wLEs9MCxBPU07Uj0wfGFbUj4+Ml07KXtpZigoMHwodz0odz0wfGFbUj4+Ml0pPzB8YVs4KygwfGFbMTEyKygwfGFbdysxNj4+Ml0pPj4yXSk+PjJdOjApKT09KDB8YVtsPj4yXSkmJigwfEhoKDB8YVtS''@;'; put 'put ''KzMyPj4yXSkpPj0xKXtEPShNPStfW1IrMTY+PjNdKSpMZTtkb3tpZighamUpe2lmKDE9PSgwfGFbYmU+PjJdKSl7QT0rX1tIZT4+M107YnJlYWt9QT1BK0JlK0Q7YnJlYWt9MCE9QSYmKEE9Mj09KDB8YVtiZT4+Ml0pPzMuMTQxNTkyNjUzNTg5NzkzOkQrQSksYj1BLGs9azwwP0E6a313aGls''@;'; put 'put ''ZSgwKTtCdShSLGF0PStsYSgrQSkqbSxrdD0rSWEoK0EpKm0sK3FfKFIsYXQsa3QsQSkpLEE9KGplPyhNK3ApKkxlOkQrQmUpK0Esdz1HPUcrMXwwLE09KDB8Ryk9PSgwfE9lKT9BOkt9ZWxzZSB3PUcsTT1LO1I9Uis0fDAsRz13LEs9TX1tPW1lP3BlOmV0LCgwfGYpPjEmJigwfChNdD0wfGFb''@;'; put 'put ''bD4+Ml0pKT09KDB8YVtjKzQ0Pj4yXSkmJihfWzI0KygwfGFbMTEyKygwfGFbTXQrMTY+PjJdKT4+Ml0pPj4zXT1LKSxfW3J0Pj4zXT1tLF9bR2U+PjNdPWssX1tsdD4+M109Yn1mdW5jdGlvbiBCdShsLGMsZixwKXtjPStjLGY9K2Y7dmFyIEQsUixtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxH''@;'; put 'put ''PTAsSz0wO2ZvcihSPTAhPShwPStwKSxtPTB8THQoRD0wfGFbOCsobHw9MCk+PjJdKTttOyl3PStfWyhrPTB8YVsxMzIrKDB8YVttKzE2Pj4yXSk+PjJdKT4+M10sQT0rX1soTT1rKzh8MCk+PjNdLFI/KGI9KEc9K2xhKCtwKSkqdy0oSz0rSWEoK3ApKSpBLEE9Syp3K0cqQSk6Yj13LF9baz4+''@;'; put 'put ''M109YitjLF9bTT4+M109QStmLG09MHx6dChELG0pO2ZvcihtPWwrMzZ8MDttPTB8YVttPj4yXTspQnUobSxjLGYscCksbT1tKzR8MH1mdW5jdGlvbiBxXyhsLGMsZixwKXtjPStjLGY9K2YscD0rcDt2YXIgRCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTAsRz0wO0Q9MHxhWzgrKGx8PTAp''@;'; put 'put ''Pj4yXSxtPStfW2wrNDg+PjNdO2Rve2lmKG0+PTApbT0obT0zLjE0MTU5MjY1MzU4OTc5My1tK3ApPDA/bSs2LjI4MzE4NTMwNzE3OTU4NjptO2Vsc2V7aWYoMj09KDB8SGgoMHxhW2wrMzI+PjJdKSkpe209cCstMS41NzA3OTYzMjY3OTQ4OTY2O2JyZWFrfWZvcihtPShrPStfWzgrKHc9MHxh''@;'; put 'put ''WzEzMisoMHxhWyhSPTE2KyhNPTB8YVtsPj4yXSl8MCk+PjJdKT4+Ml0pPj4zXStmKSprKyhtPStfW3c+PjNdK2MpKm0sdz0wfEx0KEQpLEE9TTt3OykoMHx3KSE9KDB8TSkmJihiPShrPStfWzgrKEc9MHxhWzEzMisoMHxhW3crMTY+PjJdKT4+Ml0pPj4zXStmKSprKyhiPStfW0c+PjNdK2Mp''@;'; put 'put ''KmIpPG0mJihtPWIsQT13KSx3PTB8enQoRCx3KTtpZigoMHxNKSE9KDB8QSkpe2lmKChtPStfWyh3PTB8YVsxMzIrKEE9MHxhW1I+PjJdKT4+Ml0pPj4zXSk+LShrPStfW2wrMTY+PjNdLShiPStfW2wrMjQ+PjNdKSkmJjAhPSgxJmFbbCs1Nj4+Ml18MCkpe2Y9K0YwKCsoZipmK2MqYykpLGM9''@;'; put 'put ''K3EyKCsgK19bdys4Pj4zXSwrKG0raykpLG09K2xhKCtjKSxtPXArMS41NzA3OTYzMjY3OTQ4OTY2LWMtK2hkKCsoay1iL20pL2YqbSk7YnJlYWt9bT0obT1wKzMuMTQxNTkyNjUzNTg5NzkzLShtPStxMigrICtfW3crOD4+M10sK20pKS0rX1syNCsoMHxhW0ErMTEyPj4yXSk+PjNdKT42LjI4''@;'; put 'put ''MzE4NTMwNzE3OTU4Nj9tKy02LjI4MzE4NTMwNzE3OTU4NjptO2JyZWFrfW09MH19d2hpbGUoMCk7cmV0dXJuK219ZnVuY3Rpb24gYzUoKXtyZXR1cm4gMHxtcigxMil9ZnVuY3Rpb24gbzcobCl7dmFyIGM9MCxmPTA7aWYoMHwobHw9MCkpe2ZvcihjPTB8YVtsPj4yXTtjOylmPTB8YVtjKzQ+''@;'; put 'put ''PjJdLEh0KGMpLGM9ZjtIdChsKX19ZnVuY3Rpb24gRmgobCxjLGYpe2x8PTAsY3w9MDt2YXIgbSxwPTA7bT0wfGZ1bmN0aW9uIEQzKGwpe2x8PTA7dmFyIGM7cmV0dXJuIGM9MHxtcigxMiksYVtjPj4yXT1sLDB8Y30oZnw9MCksYVsoZj1sKzh8MCk+PjJdPTErKDB8YVtmPj4yXSksMD09KDB8''@;'; put 'put ''Yyl8KDB8KHA9MHxhWyhmPWwrNHwwKT4+Ml0pKT09KDB8Yyk/KGFbKDB8cD9wKzR8MDpsKT4+Ml09bSxhW20rOD4+Ml09cCxwPTApOihmPTB8YVsocD1jKzR8MCk+PjJdLGFbcD4+Ml09bSxhW20rOD4+Ml09YyxwPWYsZj1mKzh8MCksYVtmPj4yXT1tLGFbbSs0Pj4yXT1wfWZ1bmN0aW9uIFdQ''@;'; put 'put ''KGwpe2x8PTA7dmFyIGYscCxjPTA7Zm9yKHA9NCsoZj0wfGM1KCkpfDAsYz0wO2w9MHxhW2w+PjJdOylGaChmLGMsMHxhW2w+PjJdKSxjPTB8YVtwPj4yXSxsPWwrNHwwO3JldHVybiAwfGZ9ZnVuY3Rpb24gWVAobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEEsdyxiLG09MCxrPTAsTT0w''@;'; put 'put ''O2ZvcihtPWx8PTA7Oyl7aWYoIShrPTB8YVttPj4yXSkpe009NjticmVha31pZigoMHxhW2s+PjJdKT09KDB8YykpYnJlYWs7bT1rKzR8MH1mb3IoNj09KDB8TSkmJkJyKDk2MjcwLDk2Mjc3LDIxNyw5NjI4OCksYVsoMHwobT0wfGFbKGI9ays4fDApPj4yXSk/bSs0fDA6bCk+PjJdPWM9MHxh''@;'; put 'put ''WyhBPWsrNHwwKT4+Ml0sdz1sKzR8MCxhWygwfGM/Yys4fDA6dyk+PjJdPW0sYz0wLG09bDttPTB8YVttPj4yXTspe2lmKCgwfGFbbT4+Ml0pPT0oMHxmKSl7TT05O2JyZWFrfWM9bSxtPW0rNHwwfWlmKDk9PSgwfE0pKXtkb3tpZihwKXtpZigoMHxtKT09KDB8YVt3Pj4yXSkpe2Fbdz4+Ml09''@;'; put 'put ''ayxhW0E+PjJdPTAsYVtiPj4yXT1tLG09bSs0fDA7YnJlYWt9YVtiPj4yXT1tLGFbQT4+Ml09YVsobT1tKzR8MCk+PjJdLGFbOCsoMHxhW20+PjJdKT4+Ml09azticmVha31pZigoMHxtKT09KDB8YVtsPj4yXSkpe2FbbD4+Ml09ayxhW0E+PjJdPW0sYVtiPj4yXT0wLG09bSs4fDA7YnJlYWt9''@;'; put 'put ''YVtjKzQ+PjJdPWssYVtiPj4yXT1jLGFbQT4+Ml09bSxtPW0rOHwwO2JyZWFrfXdoaWxlKDApO2FbbT4+Ml09a319ZnVuY3Rpb24gSGgobCl7cmV0dXJuIDB8YVs4KyhsfD0wKT4+Ml19ZnVuY3Rpb24geDYobCxjKXtsfD0wLGN8PTA7dmFyIE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0w''@;'; put 'put ''LEQ9MDtmb3IoTT0wfGZ1bmN0aW9uIERkKCl7cmV0dXJuIDB8QXMoMTgyNzYsMHxhWzQ1ODFdKX0oKSxwPTB8THQoYyk7cDspe2ZvcihmPTB8eTAoYyxwKTtmOylhW2FbMTIwKygwfGFbZisxNj4+Ml0pPj4yXT4+Ml09MCxmPTB8azAoYyxmKTtwPTB8enQoYyxwKX1mb3Ioaz0xLGY9MDt3PTB8''@;'; put 'put ''YVtsPj4yXTspe2ZvcihBPTB8RnMoYyxiPTB8YVt3Pj4yXSk7QTspe2lmKCgwfGFbYVsxMjArKDB8YVsobT1BKzE2fDApPj4yXSk+PjJdPj4yXSk+MCl7Zm9yKGw9MHxtaVs2MyZhW00+PjJdXShNLDAsMTI4KTtsOykoMHxhW2FbMTIwKygwfGFbMTYrKHA9MHxhW2wrOD4+Ml0pPj4yXSk+PjJd''@;'; put 'put ''Pj4yXSk+KDB8YVthWzEyMCsoMHxhW20+PjJdKT4+Ml0+PjJdKSYmKDB8YVsoMj09KDB8KEQ9MyZhW3A+PjJdKSk/cDpwKy00OHwwKSs0MD4+Ml0pIT0oMHxiKSYmKGY9ZisoKDB8YVsoMz09KDB8RCk/cDpwKzQ4fDApKzQwPj4yXSkhPSgwfGIpJjEpfDApLGw9MHxtaVs2MyZhW00+PjJdXShN''@;'; put 'put ''LGwsOCk7ZUMoTSxBKX1BPTB8VHMoYyxBLGIpfWZvcihwPTB8RnMoYyxiKTtwOykwfGFbKGw9MHxhWzEyMCsoMHxhW3ArMTY+PjJdKT4+Ml0pPj4yXXx8KGFbbD4+Ml09ayxUNihNLHApKSxwPTB8VHMoYyxwLGIpO2w9dys0fDAsaz1rKzF8MH1yZXR1cm4gZnVuY3Rpb24gVkEobCl7aXMobHw9''@;'; put 'put ''MCl9KE0pLDB8Zn1mdW5jdGlvbiBKUChsLGMsZil7bHw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO3A9MHxhWyhmfD0wKT4+Ml0sTT0wfEx0KGN8PTApO2U6Zm9yKDtNOyl7Zm9yKGs9MHxGcyhjLE0pO2s7KXtmb3IoKDB8KG09MHxhWygzPT0oMHwoQT0zJmFbaz4+Ml0pKT9r''@;'; put 'put ''OmsrNDh8MCkrNDA+PjJdKSk9PSgwfE0pJiYobT0wfGFbKDI9PSgwfEEpP2s6aystNDh8MCkrNDA+PjJdKSxiPTA7ISgoMHxiKT49Mik7KXtpZih3PTB8V1AobCksWVAobCxNLG0sYiksKDB8KEE9MHx4NihsLGMpKSk8KDB8cCkpe2lmKG83KHcpLCFBKXtwPTA7YnJlYWsgZX1wPUF9ZWxzZSBv''@;'; put 'put ''NyhsKSxsPXc7Yj1iKzF8MH1rPTB8VHMoYyxrLE0pfU09MHx6dChjLE0pfXJldHVybiBhW2Y+PjJdPXAsMHxsfWZ1bmN0aW9uIEZBKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxwPTAsbT0wLEE9MDtmb3Iodz0wfGM1KCkscD0wfHkwKGwsYyk7cDspbT1wKy00OHwwLEZoKHcsMCwwfGFb''@;'; put 'put ''KDI9PSgzJmFbcD4+Ml18MCk/cDptKSs0MD4+Ml0pLGFbKG09NCsoMHxhWzExMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDptKSs0MD4+Ml0pPj4yXSk+PjJdKXwwKT4+Ml09MzJ8YVttPj4yXSxwPTB8azAobCxwKTtmb3IocD0wfHdmKGwsYyk7cDspbT1wKzQ4fDAsRmgodyww''@;'; put 'put ''LDB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOm0pKzQwPj4yXSksYVsobT00KygwfGFbMTEyKygwfGFbMTYrKDB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOm0pKzQwPj4yXSk+PjJdKT4+Ml0pfDApPj4yXT0zMnxhW20+PjJdLHA9MHxPMyhsLHApO2U6ZG97aWYoKDB8SGgodykpPjEpe2ZvcihtPWYr''@;'; put 'put ''NHwwLGw9Zjs7KXtpZighKHA9MHxhW2w+PjJdKSl7QT0xMzticmVhayBlfWlmKGw9cCs0fDAsMzImYVs0KygwfGFbMTEyKygwfGFbMTYrKDB8YVtwPj4yXSk+PjJdKT4+Ml0pPj4yXSYmMzImYVs0KygwfGFbMTEyKygwfGFbMTYrKDB8YVthWygoMHxwKT09KDB8YVttPj4yXSk/ZjpsKT4+Ml0+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXSk+PjJdfDApYnJlYWt9RmgoZixwLGMpfWVsc2UgQT0xM313aGlsZSgwKTtlOmRve2lmKDEzPT0oMHxBKSl7dDpkb3tpZigoMHxIaCh3KSk+MCl7Zm9yKHA9Zjs7KXtpZighKHA9MHxhW3A+PjJdKSlicmVhayB0O2lmKDMyJmFbNCsoMHxhWzExMisoMHxhWzE2KygwfGFb''@;'; put 'put ''cD4+Ml0pPj4yXSk+PjJdKT4+Ml18MClicmVhaztwPXArNHwwfUZoKGYscCxjKTticmVhayBlfX13aGlsZSgwKTtGaChmLDAsYyl9fXdoaWxlKDApO2ZvcihwPXc7cD0wfGFbcD4+Ml07KWFbKGY9NCsoMHxhWzExMisoMHxhWzE2KygwfGFbcD4+Ml0pPj4yXSk+PjJdKXwwKT4+Ml09LTMzJmFb''@;'; put 'put ''Zj4+Ml0scD1wKzR8MDtvNyh3KX1mdW5jdGlvbiBIQShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO2Zvcih2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7QT0wfGFbMTYrKDB8YVsxMTIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml07KXtpZih3PWYrMXwwLG09MHxhWzEyKyhjPTE2Kyhr''@;'; put 'put ''PTB8YVsxMTIrKDB8YVsoYj1BKzE2fDApPj4yXSk+PjJdKXwwKT4+Ml0pe2lmKCgwfG0pPigwfGYpKXtNPTExO2JyZWFrfW09Yz0wfGFbYys0Pj4yXSwoMHxjKT09KDB8cCk/Yz1rOihmPWsrMjR8MCwwIT0oMHxhW2srMzI+PjJdKSYmKDB8YVtmPj4yXSk9PSgwfHApfHwocD1jKSxhW2Y+PjJd''@;'; put 'put ''PW0sYVszMisoYz0wfGFbMTEyKygwfGFbYj4+Ml0pPj4yXSk+PjJdPWFbYysxNisxMj4+Ml0sYz0wfGFbMTEyKygwfGFbYj4+Ml0pPj4yXSksYz1jKzE2fDB9YVtjKzQ+PjJdPWwsYVsxNisoMHxhWzExMisoMHxhW2I+PjJdKT4+Ml0pKzEyPj4yXT13LGM9QSxmPXd9MTE9PSgwfE0pJiYoMHxh''@;'; put 'put ''W2srMzI+PjJdKTw9KDB8ZikmJihhW2srMjQ+PjJdPWwsYVszMisoMHxhWzExMisoMHxhW2I+PjJdKT4+Ml0pPj4yXT13KX1mdW5jdGlvbiBCMihsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MDtmb3IoYVsoQT00KygwfGFbMTEyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKXwwKT4+''@;'; put 'put ''Ml09MXxhW0E+PjJdLEE9MHxGcyhsLGMpO0E7KSgwfChwPTB8YVsoMj09KDB8KG09MyZhW0E+PjJdKSk/QTpBKy00OHwwKSs0MD4+Ml0pKT09KDB8YykmJihwPTB8YVsoMz09KDB8bSk/QTpBKzQ4fDApKzQwPj4yXSksMSZhWzQrKDB8YVsxMTIrKDB8YVsobT1wKzE2fDApPj4yXSk+PjJdKT4+''@;'; put 'put ''Ml18fChPZChmLEEsMSksYVsxNisoMHxhWzExMisoMHxhW20+PjJdKT4+Ml0pPj4yXT1jLEIyKGwscCxmKSksQT0wfFRzKGwsQSxjKX1mdW5jdGlvbiB2VChsLGMsZil7bHw9MCxmfD0wO3ZhciBLLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxwZT0wO2ZvcihLPTB8''@;'; put 'put ''UW4ocGU9KFI9MHxhWzIzNisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk8PDIpLHBlPTB8UW4ocGUpLGI9MCxEPTB8RnMobCxjKSxHPTAsbT0wO0Q7KXtmb3IoKDB8KEE9MHxhWygyPT0oMHwocD0zJmFbRD4+Ml0pKT9EOkQrLTQ4fDApKzQwPj4yXSkpPT0oMHxjKSYmKEE9MHxhWygzPT0oMHxw''@;'; put 'put ''KT9EOkQrNDh8MCkrNDA+PjJdKSx3PTAsTT0wfEZzKGwsYyksaz1iO007KSgwfE0pIT0oMHxEKT8oKDB8KHA9MHxhWygyPT0oMHwoYj0zJmFbTT4+Ml0pKT9NOk0rLTQ4fDApKzQwPj4yXSkpPT0oMHxjKSYmKHA9MHxhWygzPT0oMHxiKT9NOk0rNDh8MCkrNDA+PjJdKSwoYj0wfHJsKGwsQSxw''@;'; put 'put ''LDAsMCkpP0E+Pj4wPHA+Pj4wPyhwPWsrMXwwLChiPTB8YVsxMTYrKDB8YVsodz1iKzE2fDApPj4yXSk+PjJdKSYmKG5pKGYsYiksYVsxMTYrKDB8YVt3Pj4yXSk+PjJdPTApLHc9MSk6KHc9MSxwPWspOnA9ayk6cD1rLE09MHxUcyhsLE0sYyksaz1wO3c/KGFbSysobTw8Mik+PjJdPUEscD1H''@;'; put 'put ''LG09bSsxfDApOihhW3BlKyhHPDwyKT4+Ml09QSxwPUcrMXwwKSxiPWssRD0wfFRzKGwsRCxjKSxHPXB9cD1SKy0xLWJ8MDtlOmRve2lmKCgwfHApPjApe2lmKCgwfHApPCgwfEcpKUE9MDtlbHNle2lmKCgwfHApIT0oMHxHKSlicmVhaztmb3IoQT0xNisobT0wfGFbSz4+Ml0pfDAscD0wOzsp''@;'; put 'put ''e2lmKCgwfHApPj0oMHxHKSlicmVhayBlO2YwKDB8cmwobCxtLFI9MHxhW3BlKyhwPDwyKT4+Ml0sMCwxKSwxMzc0NjAsMTc2LDEpLGFbKGY9MjM2KygwfGFbQT4+Ml0pfDApPj4yXT0xKygwfGFbZj4+Ml0pLGFbKFI9MjM2KygwfGFbUisxNj4+Ml0pfDApPj4yXT0xKygwfGFbUj4+Ml0pLHA9''@;'; put 'put ''cCsxfDB9fWZvcig7Oyl7aWYoKDB8QSk+PSgwfEcpKXttPTI7YnJlYWt9aWYoKDB8KG09MXxBKSk+PSgwfEcpKXttPTI7YnJlYWt9ZjAoMHxybChsLGY9MHxhW3BlKyhBPDwyKT4+Ml0sUj0wfGFbcGUrKG08PDIpPj4yXSwwLDEpLDEzNzQ2MCwxNzYsMSksYVsoZj0yMzYrKDB8YVtmKzE2Pj4y''@;'; put 'put ''XSl8MCk+PjJdPTErKDB8YVtmPj4yXSksYVsoUj0yMzYrKDB8YVtSKzE2Pj4yXSl8MCk+PjJdPTErKDB8YVtSPj4yXSksQT1BKzJ8MCxwPXArLTF8MH1mb3IoOzspe2lmKCgwfHApPD0wKWJyZWFrIGU7ZjAoMHxybChsLFI9MHxhW3BlPj4yXSxHPTB8YVtwZSsobTw8Mik+PjJdLDAsMSksMTM3''@;'; put 'put ''NDYwLDE3NiwxKSxhWyhSPTIzNisoMHxhW1IrMTY+PjJdKXwwKT4+Ml09MSsoMHxhW1I+PjJdKSxhWyhHPTIzNisoMHxhW0crMTY+PjJdKXwwKT4+Ml09MSsoMHxhW0c+PjJdKSxtPW0rMXwwLHA9cCstMXwwfX19d2hpbGUoMCk7SHQocGUpLEh0KEspfWZ1bmN0aW9uIGw3KGwsYyl7dmFyIGYs''@;'; put 'put ''cCxtO2x8PTAsZj1vZSxvZT1vZSsxNnwwLGFbKG09ZikrOD4+Ml09YVsyMzYrKDB8YVsocD0xNisoY3w9MCl8MCk+PjJdKT4+Ml0sbD0xMisoMHxtaVs2MyZhW2w+PjJdXShsLG0sMSkpfDAsYVsxNjQrKDB8YVtwPj4yXSk+PjJdPWFbbD4+Ml0sYVtsPj4yXT1jLG9lPWZ9ZnVuY3Rpb24gS1Ao''@;'; put 'put ''bCxjKXtsfD0wO3ZhciBtLHcsZj0wLHA9MCxBPTA7aWYodz1vZSxvZT1vZSsxNnwwLGFbKEE9dykrOD4+Ml09YVsyMzYrKDB8YVsobT0xNisoY3w9MCl8MCk+PjJdKT4+Ml0sKEE9MHxtaVs2MyZhW2w+PjJdXShsLEEsNCkpfHxCcig5NjMyMiw5NjMyNSwxMDcsOTYzMzUpLCgwfChmPTB8YVso''@;'; put 'put ''cD1BKzEyfDApPj4yXSkpPT0oMHxjKSlhW3A+PjJdPWM9MHxhWzE2NCsoMHxhW20+PjJdKT4+Ml0sY3x8bWlbNjMmYVtsPj4yXV0obCxBLDIpO2Vsc2V7ZG97cD0wIT0oMHwoZj0wfGFbKGw9MTY0KygwfGFbZisxNj4+Ml0pfDApPj4yXSkpfXdoaWxlKHAmKDB8ZikhPSgwfGMpKTtwJiYoYVts''@;'; put 'put ''Pj4yXT1hWzE2NCsoMHxhW2YrMTY+PjJdKT4+Ml0pfW9lPXd9ZnVuY3Rpb24gJFAobCl7dmFyIGYsYz0wLHA9MCxtPTA7cmV0dXJuKGY9MHxtaVs2MyZhWyhsfD0wKT4+Ml1dKGwsMCwxMjgpKT8oYVsobT1mKzEyfDApPj4yXT1wPTB8YVsxNjQrKDB8YVsxNisoYz0wfGFbbT4+Ml0pPj4yXSk+''@;'; put 'put ''PjJdLHB8fG1pWzYzJmFbbD4+Ml1dKGwsZiwyKSk6Yz0wLDB8Y31mdW5jdGlvbiBUNihsLGMpe3ZhciBmLHA7bHw9MCxmPW9lLG9lPW9lKzE2fDAsYVsocD1mKSs4Pj4yXT1jfD0wLG1pWzYzJmFbbD4+Ml1dKGwscCwxKSxvZT1mfWZ1bmN0aW9uIGVDKGwsYyl7dmFyIGYscDtsfD0wLGY9b2Us''@;'; put 'put ''b2U9b2UrMTZ8MCxhWyhwPWYpKzg+PjJdPWN8PTAsbWlbNjMmYVtsPj4yXV0obCxwLDIpLG9lPWZ9ZnVuY3Rpb24gaXMobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7ZG97aWYoMCE9KDB8bCkmJigwfGFbbCsyND4+Ml0pPD0wKXtpZihjPTB8YVsoQT0zMisodz0wfGFbbCs0''@;'; put 'put ''Pj4yXSl8MCk+PjJdKXtpZigoMHwoYz0wfEQwWzEyNyZjXShsLDIsMCx3KSkpPDApe2M9LTE7YnJlYWt9fWVsc2UgYz0wO2lmKDB8YVtsKzI4Pj4yXSYmTGQobCwwKSxtPTA9PSgwfGMpKXtpZihtaVs2MyZhW2FbbCsxNj4+Ml0+PjJdXShsLDAsNjQpLCgwfFB1KGwpKT4wKXtjPS0xO2JyZWFr''@;'; put 'put ''fSgwfGFbMTIrKGM9MHxhWyhmPWwrOHwwKT4+Ml0pPj4yXSk+MD8oRDBbMTI3JmFbKHA9bCsxMnwwKT4+Ml1dKGwsMHxhW2MrOD4+Ml0sMCx3KSxjPTB8YVtmPj4yXSk6cD1sKzEyfDAsRDBbMTI3JmFbcD4+Ml1dKGwsYywwLHcpfShjPTB8YVtsKzIwPj4yXSk/bSYxPT0oMHxjKSYmRDBbMTI3''@;'; put 'put ''JmFbbCsxMj4+Ml1dKGwsbCwwLHcpOkh0KGwpLChjPTB8YVtBPj4yXSkmJkQwWzEyNyZjXShsLDYsMCx3KSxjPTB9ZWxzZSBjPS0xfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gTDMobCl7dmFyIGM9MCxmPTAscD0wO2Y9MHxhWyhjPTB8YVsocD04KyhsfD0wKXwwKT4+Ml0pPj4yXTtl''@;'; put 'put ''OmRve2lmKDEyJmYpbD0wfGFbYys0Pj4yXTtlbHNle2lmKCEoMyZmKSl7bD0wfGFbKGY9Yys4fDApPj4yXSxhW2Y+PjJdPTA7YnJlYWt9Zm9yKGw9MHxvMChsKSxmPShjPTB8YVs4KyhmPTB8YVtwPj4yXSk+PjJdKSsoYVtmKzEyPj4yXTw8Mil8MDs7KXtpZihjPj4+MD49Zj4+PjApYnJlYWsg''@;'; put 'put ''ZTthW2M+PjJdPTAsYz1jKzR8MH19fXdoaWxlKDApO3JldHVybiBhWyhwPTB8YVtwPj4yXSk+PjJdPS00MDk3JmFbcD4+Ml0sYVtwKzE2Pj4yXT0wLGFbcCs0Pj4yXT0wLDB8bH1mdW5jdGlvbiBvMChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtpZig0MDk2JihjPTB8YVsobD0wfGFbKEE9''@;'; put 'put ''OCsobHw9MCl8MCk+PjJdKT4+Ml0pKWw9MHxhW2wrND4+Ml07ZWxzZXtlOmRve2lmKDMmYylmb3IocD0wfGFbbCs4Pj4yXSxtPXArKGFbbCsxMj4+Ml08PDIpfDAsYz0wLGw9MDs7KXtpZihwPj4+MD49bT4+PjApYnJlYWsgZTtpZihmPTB8YVtwPj4yXSl7Zm9yKGM/YVtjPj4yXT1mOihjPWYs''@;'; put 'put ''bD1mKTtmPTB8YVtjPj4yXTspYz1mO2FbcD4+Ml09Y31wPXArNHwwfWVsc2V7aWYoMTEyJmN8MCl7bD0wfGFbbCs4Pj4yXTticmVha31pZihsPTB8YVtsKzQ+PjJdKXtmb3IoOzspe2lmKCEoZj0wfGFbKGM9bCs0fDApPj4yXSkpe3A9bDticmVha31hW2M+PjJdPWFbZj4+Ml0sYVtmPj4yXT1s''@;'; put 'put ''LGw9Zn1mb3IoOzspe2lmKCEoYz0wfGFbcD4+Ml0pKWJyZWFrIGU7aWYoZj0wfGFbYys0Pj4yXSl7Zm9yKDthW2MrND4+Ml09YVtmPj4yXSxhW2Y+PjJdPWMsYz0wfGFbZis0Pj4yXTspbT1mLGY9YyxjPW07YVtwPj4yXT1mLHA9Zn1lbHNlIHA9Y319ZWxzZSBsPTB9fXdoaWxlKDApO2FbNCso''@;'; put 'put ''QT0wfGFbQT4+Ml0pPj4yXT1sLGFbQT4+Ml09NDA5NnxhW0E+PjJdfXJldHVybiAwfGx9ZnVuY3Rpb24gQXMobCxjKXtsfD0wLGN8PTA7dmFyIGssZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7az1vZSxvZT1vZSsxNnwwLEE9aztlOmRve2lmKDAhPSgwfGwpJjAhPSgwfGMpJiYobT0wfFIwKDQw''@;'; put 'put ''KSwwIT0oMHxtKSkpe2FbbT4+Ml09MCxhW20rMTY+PjJdPTAsYVttKzQ+PjJdPTAsdTcobSxsLDApLGI9bCszMnwwLGFbKGY9bSsyMHwwKT4+Ml09MCxhW2YrND4+Ml09MCxhW2YrOD4+Ml09MCxhW2YrMTI+PjJdPTAsYVtmKzE2Pj4yXT0wLGY9MHxhW2I+PjJdO2Rve2lmKGYpaWYoYVtBPj4y''@;'; put 'put ''XT0wLCgwfChmPTB8RDBbMTI3JmZdKG0sMSxBLGwpKSk+PTApaWYoZil7aWYoMHwocD0wfGFbQT4+Ml0pKXtpZihhW2MrND4+Ml0mYVtwPj4yXSl7Zj1tO2JyZWFrfWY9bSx3PTEyO2JyZWFrfWlmKDB8YVsoZj1sKzI4fDApPj4yXSl7aWYoSHQobSksIShwPTB8RDBbMTI3JmFbZj4+Ml1dKDAs''@;'; put 'put ''MCw0MCxsKSkpe2Y9MDticmVhayBlfWFbcD4+Ml09MCxhW3ArMTY+PjJdPTAsYVtwKzQ+PjJdPTAsdTcocCxsLDApLGFbcCsyMD4+Ml09MSxhW3ArMjQ+PjJdPTAsYVtwKzMyPj4yXT0wLGFbcCsyOD4+Ml09MCxmPXAsbT1wLHc9MTF9ZWxzZSBmPW0sdz0xMn1lbHNlIGY9bSx3PTExO2Vsc2Ug''@;'; put 'put ''Zj1tLHc9MTI7ZWxzZSBmPW0sdz0xMX13aGlsZSgwKTtpZigxMT09KDB8dykmJihwPTB8RDBbMTI3JmFbZisxMj4+Ml1dKGYsMCwyOCxsKSxhW0E+PjJdPXAscD8oYVtwPj4yXT1hW2MrND4+Ml0sYVsoQT1wKzR8MCk+PjJdPTAsYVtBKzQ+PjJdPTAsYVtBKzg+PjJdPTAsYVtBKzEyPj4yXT0w''@;'; put 'put ''LGFbQSsxNj4+Ml09MCxhW0ErMjA+PjJdPTApOihmPW0sdz0xMikpLDEyPT0oMHx3KSl7SHQoZiksZj0wO2JyZWFrfWFbZis4Pj4yXT1wLGFbZj4+Ml09YVtjPj4yXSxhW2YrMTY+PjJdPWMsKHA9MHxhW2I+PjJdKSYmRDBbMTI3JnBdKGYsNSxtLGwpfWVsc2UgZj0wfXdoaWxlKDApO3JldHVy''@;'; put 'put ''biBvZT1rLDB8Zn1mdW5jdGlvbiBZYyhsLGMpe3ZhciBtLEEsdyxmPTAscD0wLGI9MCxrPTA7bT0wfGFbYVsxNisobHw9MCk+PjJdPj4yXSxmPTQwOTYmKHc9MHxhWyhBPTB8YVsoaz1sKzh8MCk+PjJdKT4+Ml0pLChjfD0wKT8wfGFbQSsxNj4+Ml0/Yz0tMToocD0wLGI9NSk6Zj8ocD1mLGM9''@;'; put 'put ''MHxhW0ErND4+Ml0sYj01KTpjPS0xO2U6ZG97aWYoNT09KDB8Yikpe2lmKGFbQT4+Ml09LTQwOTcmdywhKDMmdykpe2lmKGY9QSs0fDAsMTImd3x8KGFbZj4+Ml09MCxmPUErOHwwKSxhW2Y+PjJdPWMsMHxwKXtjPTA7YnJlYWt9YVsxNisoMHxhW2s+PjJdKT4+Ml09LTEsYz0wO2JyZWFrfWlm''@;'; put 'put ''KGFbQSs0Pj4yXT0wLCFwKWZvcihhW0ErMTY+PjJdPTA7Oyl7aWYoIWMpe2M9MDticmVhayBlfWs9MHxhW2M+PjJdLG1pWzYzJm1dKGwsYywzMiksYz1rfWZvcihsPShwPTB8YVtBKzg+PjJdKSsoYVtBKzEyPj4yXTw8Mil8MDs7KXtpZihwPj4+MD49bD4+PjApe2M9MDticmVhayBlfShmPTB8''@;'; put 'put ''YVtwPj4yXSkmJihhW3A+PjJdPWMsYz0wfGFbZj4+Ml0sYVtmPj4yXT0wKSxwPXArNHwwfX19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBQdShsKXt2YXIgcCxjPTAsZj0wOzQwOTYmYVsoZj0wfGFbKGM9OCsobHw9MCl8MCk+PjJdKT4+Ml0mJihZYyhsLDApLGY9MHxhW2M+PjJdKSxs''@;'; put 'put ''PTB8YVsocD1mKzE2fDApPj4yXTtkb3tpZigoMHxsKTwwKXtpZigxMiYoYz0wfGFbZj4+Ml0pfDApe2w9MHxqQSgwfGFbZis0Pj4yXSksYVtwPj4yXT1sO2JyZWFrfWlmKDExMiZjKXtmb3IobD0wLGM9Zis4fDA7Yz0wfGFbYz4+Ml07KWw9bCsxfDA7YVtwPj4yXT1sfX19d2hpbGUoMCk7cmV0''@;'; put 'put ''dXJuIDB8bH1mdW5jdGlvbiBqQShsKXtyZXR1cm4obHw9MCk/MSsoMHxqQSgwfGFbbCs0Pj4yXSkpKygwfGpBKDB8YVtsPj4yXSkpfDA6MH1mdW5jdGlvbiBMZChsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MCxBPTA7NDA5NiZhW2FbOCsobHw9MCk+PjJdPj4yXXwwJiZZYyhsLDApLChtPTAhPSgw''@;'; put 'put ''fGMpKT8oNDA5NiZhW2FbYys4Pj4yXT4+Ml18MCYmWWMoYywwKSwoMHxhW2MrMTY+PjJdKT09KDB8YVtsKzE2Pj4yXSk/KGY9YyxwPTcpOmM9MCk6KGY9MCxwPTcpO2U6ZG97aWYoNz09KDB8cCkpe2Zvcig7Zjspe2lmKCgwfGYpPT0oMHxsKSl7Yz0wO2JyZWFrIGV9Zj0wfGFbZisyOD4+Ml0s''@;'; put 'put ''cD03fWlmKDB8KHA9MHxhWyhmPWwrMjh8MCk+PjJdKSYmKGFbKEE9cCsyNHwwKT4+Ml09KDB8YVtBPj4yXSktMSksYVtsKzMyPj4yXT0wLGFbZj4+Ml09MCxtKXthW2Y+PjJdPWMsYVtsPj4yXT0yOCxhWyhBPWMrMjR8MCk+PjJdPTErKDB8YVtBPj4yXSk7YnJlYWt9YVtsPj4yXT1hW2FbbCsx''@;'; put 'put ''Nj4+Ml0+PjJdLGM9cDticmVha319d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiB1NyhsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7Rz0wfGFbKG09NCsobHw9MCl8MCk+PjJdO2U6ZG97aWYoRylpZihjKXtpZihSPTB8YVth''@;'; put 'put ''W2wrMTY+PjJdPj4yXSw0MDk2JmFbYVsoQT1sKzh8MCk+PjJdPj4yXXwwJiZZYyhsLDApLDB8KHA9MHxhW0crMzI+PjJdKSYmKDB8RDBbMTI3JnBdKGwsMyxjLEcpKTwwKXtjPTA7YnJlYWt9aWYoYVttPj4yXT1jLGFbbCsxMj4+Ml09MD09KDB8KHA9MHxhW2MrMjg+PjJdKSk/NTI6cCwxMTIm''@;'; put 'put ''KHA9MHxhW2FbQT4+Ml0+PjJdKSljPUc7ZWxzZXtkb3tpZighKDImcCkpe2lmKDMmcCl7aWYoMz09KDMmZnwwKSl7Yz1HO2JyZWFrIGV9YnJlYWt9aWYoMSZmKXtjPUc7YnJlYWsgZX1icmVha31pZigyJmZ8MCl7Yz1HO2JyZWFrIGV9fXdoaWxlKDApO3c9MHxvMChsKSxhWyhwPTB8YVtBPj4y''@;'; put 'put ''XSk+PjJdPS00MDk3JihEPTB8YVtwPj4yXSksYVtwKzQ+PjJdPTAsYVtwKzE2Pj4yXT0wO3Q6ZG97aWYoMyZEfDApZm9yKEQ9MHxhW3ArOD4+Ml0sbT1EKyhhW3ArMTI+PjJdPDwyKXwwLHA9RDs7KXtpZihwPj4+MD49bT4+PjApYnJlYWsgdDthW3A+PjJdPTAscD1wKzR8MH19d2hpbGUoMCk7''@;'; put 'put ''Zm9yKGI9MD09KDImZnwwKSxrPWMrOHwwLE09Yys0fDAsRD1jKzI0fDA7Oyl7aWYoIXcpe2M9RzticmVhayBlfWY9MHxhW3c+PjJdLGImJihwPShwPSgwfChwPTB8YVtrPj4yXSkpPDA/MHxhW3crOD4+Ml06dysoMC1wKXwwKSsoMHxhW2M+PjJdKXwwLCgwfChBPTB8YVtNPj4yXSkpPDAmJihw''@;'; put 'put ''PTB8YVtwPj4yXSkscD0obT0wfGFbRD4+Ml0pPzB8bWlbNjMmbV0obCxwLGMpOjB8V0coMCxwLEEpLGFbdys0Pj4yXT1wKSxtaVs2MyZSXShsLHcsMzIpLHc9Zn19fWVsc2UgYz1HO2Vsc2UgYVttPj4yXT1jLEc9MHxhW2MrMjg+PjJdLGFbbCsxMj4+Ml09MD09KDB8Ryk/NTI6R313aGlsZSgw''@;'; put 'put ''KTtyZXR1cm4gMHxjfWZ1bmN0aW9uIFdHKGwsYyxmKXtsfD0wO3ZhciBwPTAsbT0wLEE9MDtpZihtPWN8PTAsKDB8KGZ8PTApKT49MSl7Zm9yKG09KChBPWMrZistMXwwKT4+PjA8Yz4+PjA/YzpBKSsoMS1tKSYtMixwPWM7IShwPj4+MD49QT4+PjApOylsPTB8dnIoKCgwfGJ0W3A+PjBdKTw8''@;'; put 'put ''OCkrbCsoMHxidFtwKzE+PjBdKXwwLDE3MTA5ODExKSxwPXArMnwwOyhwPWMrbXwwKT4+PjA+QT4+PjA/Yz1mOihjPWYsbD0wfHZyKCgoMHxidFtwPj4wXSk8PDgpK2x8MCwxNzEwOTgxMSkpfWVsc2V7Zm9yKDsocD0wfHVlW2M+PjBdKTw8MjQ+PjI0OylsPWY9MHx2cigoKDI1NSZwKTw8OCkr''@;'; put 'put ''bCsoMjU1JihBPTB8dWVbYysxPj4wXSkpfDAsMTcxMDk4MTEpLGM9YysoQTw8MjQ+PjI0PzI6MSl8MDtjPWMtbXwwfXJldHVybiAwfHZyKGwrY3wwLDE3MTA5ODExKX1mdW5jdGlvbiBYcihsLGMsZil7dmFyIHAsbTtyZXR1cm4gbHw9MCxjfD0wLHA9b2Usb2U9b2UrMTZ8MCxhWyhtPXApPj4y''@;'; put 'put ''XT1mfD0wLGY9MHx0QyhsLGMsbSksb2U9cCwwfGZ9ZnVuY3Rpb24gdEMobCxjLGYpe2N8PTAsZnw9MDt2YXIgcCxtLEEsdyxiPTA7QT1vZSxvZT1vZSsxNnwwLHA9QSxhWzQ2OTM4XT13PShtPTM9PSgwfChsfD0wKSkpPzB8YVs0NjkzOF06Mj09KDB8bCk/MTpsLGFbNDY5MzldPShiPTB8YVs0''@;'; put 'put ''NjkzOV0pPj4+MD53Pj4+MD9iOnc7ZG97aWYodz4+PjA8KDB8YVs0NjkzNl0pPj4+MCl7aWYoIShsPTB8YVs0NjkzN10pJiYobD0wfFhjZSgpLGFbNDY5MzddPWwsIWwpKXtsPTE7YnJlYWt9bXx8KEtjZShsKSxsPTB8YVs0NjkzN10pLERMKGwsYyxmKSxsPTB9ZWxzZXtpZigwfGFbNDY5MzVd''@;'; put 'put ''KXtaQShsLGMsZiksbD0wO2JyZWFrfW0/bD0wfGFbMTU3MTJdOihiPTB8YVsxNTcxMl0sYVtwPj4yXT0xPT0oMHxsKT85NjM0OTo5NjM1NSxUMChiLDk2MzYzLHApLGw9YiksREwobCxjLGYpLGw9MH19d2hpbGUoMCk7cmV0dXJuIG9lPUEsMHxsfWZ1bmN0aW9uIFpBKGwsYyxmKXtsfD0wLGN8''@;'; put 'put ''PTAsZnw9MDt2YXIgcD0wLG09MDswPT0oMHxhWzQ2OTQwXSkmJihtPTB8UjAoMHxhWzQ1OTBdKSxhWzQ2OTQwXT1tLDA9PSgwfG0pKT9fdSg5NjM2OCwwfGFbMTU3MTJdKTpwPTQ7ZG97aWYoND09KDB8cCkpe2ZvcigzIT0oMHxsKSYmKHBhWzYzJmFbNDY5MzVdXSgxPT0oMHxsKT85NjM0OTo5''@;'; put 'put ''NjM1NSkscGFbNjMmYVs0NjkzNV1dKDk3MDI3KSk7Oyl7aWYoKDB8KGw9MHxJTCgwfGFbNDY5NDBdLDB8YVs0NTkwXSxjLGYpKSk+LTEmKDB8bCk8KDB8KHA9MHxhWzQ1OTBdKSkpe3A9NzticmVha31pZihhWzQ1OTBdPW09KDB8KHA8PD0xKSk+KDB8KG09bCsxfDApKT9wOm0sISgwfFphKDB8''@;'; put 'put ''YVs0Njk0MF0sbSkpKXtwPTk7YnJlYWt9fWlmKDc9PSgwfHApKXtwYVs2MyZhWzQ2OTM1XV0oMHxhWzQ2OTQwXSk7YnJlYWt9aWYoOT09KDB8cCkpe191KDk2MzY4LDB8YVsxNTcxMl0pO2JyZWFrfX19d2hpbGUoMCl9ZnVuY3Rpb24gYzcobCxjKXt2YXIgZixwO2x8PTAsZj1vZSxvZT1vZSsx''@;'; put 'put ''NnwwLGFbKHA9Zik+PjJdPWN8PTAsdEMoMSxsLHApLG9lPWZ9ZnVuY3Rpb24gb3MobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wOyhmfD0wKT9wPTA6KGM9Zj0wPT0oMHxjKT8xMDI0OmMsZj0wfFIwKGYpLHA9MSksYVtsKzEyPj4yXT1wLGFbbD4+Ml09ZixhW2wrOD4+Ml09ZitjLGFbbCs0Pj4y''@;'; put 'put ''XT1mLHVlW2Y+PjBdPTB9ZnVuY3Rpb24gRzAobCxjKXt2YXIgZix3LHA9MCxtPTAsQT0wLGI9MDtyZXR1cm4gcD0oQT0oMHxhWyh3PTgrKGx8PTApfDApPj4yXSktKG09MHxhW2w+PjJdKXwwKTw8MSxwPShBPUErKGN8PTApfDApPj4+MD5wPj4+MD9BOnAsYz1tLG09KDB8YVsoQT1sKzR8MCk+''@;'; put 'put ''PjJdKS1tfDAsMHxhWyhmPWwrMTJ8MCk+PjJdP2M9MHxaYShjLHApOihEbygwfChiPTB8UjAocCkpLDB8YywwfG0pLGFbZj4+Ml09MSxjPWIpLGFbbD4+Ml09YyxhW0E+PjJdPWMrbSxhW3c+PjJdPWMrcCwwfWZ1bmN0aW9uIEk2KGwsYyxmKXtjfD0wO3ZhciBtLHA9MDtyZXR1cm4oKHA9MHxh''@;'; put 'put ''WyhtPTQrKGx8PTApfDApPj4yXSkrKGZ8PTApfDApPj4+MD4oMHxhW2wrOD4+Ml0pPj4+MCYmKEcwKGwsZikscD0wfGFbbT4+Ml0pLERvKDB8cCwwfGMsMHxmKSxhW20+PjJdPSgwfGFbbT4+Ml0pK2YsMHxmfWZ1bmN0aW9uIGNvKGwsYyl7cmV0dXJuIDB8STYobHw9MCxjfD0wLDB8em8oYykp''@;'; put 'put ''fWZ1bmN0aW9uIGsyKGwpezB8YVsxMisobHw9MCk+PjJdJiZIdCgwfGFbbD4+Ml0pfWZ1bmN0aW9uIHpBKGwpe3ZhciBjLGY7cmV0dXJuKGY9MHxhWyhjPTQrKGx8PTApfDApPj4yXSk+Pj4wPigwfGFbbD4+Ml0pPj4+MD8oYVtjPj4yXT1mKy0xLGw9MHxidFtmPj4wXSk6bD0tMSwwfGx9ZnVu''@;'; put 'put ''Y3Rpb24gVmgobCxjKXt2YXIgZj0wO3JldHVybiAwIT0oMHwoY3w9MCkpJjA9PSgwfChmPTB8QWkobHw9MCw5NjQxNiwwKSkpJiYoZnVuY3Rpb24gbkMobCl7dmFyIHAsYz0wLGY9MDtmb3IobTcocD0wfGhpKGx8PTApLHAsMTA3LDAsMSksZj0wfEx0KHApO2Y7KXtmb3IockMobCxmKSxjPTB8''@;'; put 'put ''eTAocCxmKTtjOylKNChsLGMpLGM9MHxrMChwLGMpO2Y9MHx6dChwLGYpfX0obCksZj0wfEFpKGwsOTY0MTYsMCkpLDB8Zn1mdW5jdGlvbiBDVChsKXt2YXIgYz0wO3VlWyhjPTI0KyhsfD0wKXwwKT4+MF09NjR8dWVbYz4+MF0sZnVuY3Rpb24gaUYobCl7dmFyIHAsbSxjPTAsZj0wO2Y9MHxm''@;'; put 'put ''MChsfD0wLDk2NDE2LDIwLDApLGFbKHA9Zis4fDApPj4yXT0wfEZkKGwsMTgzNjQsMHxhWzQ1ODldKSxhWyhtPWYrMTJ8MCk+PjJdPTB8RmQobCwxODM2NCwwfGFbNDU4OV0pLGFbKGY9ZisxNnwwKT4+Ml09MHxGZChsLDE4MzY0LDB8YVs0NTg5XSksKGM9MHxTMShsKSk/KGw9MHxWaChjLDAp''@;'; put 'put ''LExkKDB8YVtwPj4yXSwwfGFbbCs4Pj4yXSksTGQoMHxhW20+PjJdLDB8YVtsKzEyPj4yXSksTGQoMHxhW2Y+PjJdLDB8YVtsKzE2Pj4yXSkpOjA9PSgwfChjPTB8YVs0Njk0MV0pKXwoMHxjKT09KDB8bCl8fChjPTB8VmgoYywwKSxpaCgwfGFbYys4Pj4yXSwwfGFbcD4+Ml0sbCwxKSxpaCgw''@;'; put 'put ''fGFbYysxMj4+Ml0sMHxhW20+PjJdLGwsMiksaWgoMHxhW2MrMTY+PjJdLDB8YVtmPj4yXSxsLDApKX0obCksR0EoMD09KDB8KGM9MHxTMShsKSkpP2w6YyxsKX1mdW5jdGlvbiByQyhsLGMpe3ZhciBmO2x8PTAsMCE9KDB8KGY9MHxhYyhjfD0wKSkpJiYwIT0oMHxhW2YrOD4+Ml0pfHxHQShs''@;'; put 'put ''LGMpfWZ1bmN0aW9uIEo0KGwsYyl7dmFyIGY7bHw9MCwwIT0oMHwoZj0wfGFjKGN8PTApKSkmJjAhPSgwfGFbZis4Pj4yXSl8fEdBKGwsYyl9ZnVuY3Rpb24gYWMobCl7cmV0dXJuIDB8QWkobHw9MCw5NjQwNCwwKX1mdW5jdGlvbiBHQShsLGMpe2x8PTA7dmFyIG0sZj0wLHA9MDtmPTB8ZjAo''@;'; put 'put ''Y3w9MCw5NjQwNCwxNiwwKSxtPTB8WDQobCwzJmFbYz4+Ml0pLHA9Zis4fDA7ZTpkb3tpZighKDB8YVtwPj4yXSkpZm9yKGw9MHxoaShsKSxhW3A+PjJdPTB8WDQobCwzJmFbYz4+Ml0pLGw9MHxXQShjKSxmPWYrMTJ8MCxhW2Y+PjJdPTB8U3QoMHxmcihjKSwoKDB8bCk+ND9sOjQpPDwyKSxs''@;'; put 'put ''PTB8bWlbNjMmYVttPj4yXV0obSwwLDEyOCk7Oyl7aWYoIWwpYnJlYWsgZTtwPTB8dDAocD0wfGZyKGMpLDB8YVtsKzEyPj4yXSksYVsoMHxhW2Y+PjJdKSsoYVtsKzE2Pj4yXTw8Mik+PjJdPXAsbD0wfG1pWzYzJmFbbT4+Ml1dKG0sbCw4KX19d2hpbGUoMCl9ZnVuY3Rpb24gWDQobCxjKXt2''@;'; put 'put ''YXIgZixwO2N8PTAscD1vZSxvZT1vZSsxNnwwLGY9cCxsPTB8VmgobHw9MCwwKTtlOmRve2lmKGwpc3dpdGNoKDB8Yyl7Y2FzZSAwOmw9MHxhW2wrMTY+PjJdO2JyZWFrIGU7Y2FzZSAxOmw9MHxhW2wrOD4+Ml07YnJlYWsgZTtjYXNlIDI6Y2FzZSAzOmw9MHxhW2wrMTI+PjJdO2JyZWFrIGU7''@;'; put 'put ''ZGVmYXVsdDphW2Y+PjJdPWMsWHIoMSw5NjQyOSxmKSxsPTA7YnJlYWsgZX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9cCwwfGx9ZnVuY3Rpb24gV0EobCl7cmV0dXJuIDB8KChsPTB8WDQoMHxoaSgwfGZyKGx8PTApKSwzJmFbbD4+Ml0pKT8wfFB1KGwpOjApfWZ1bmN0aW9uIGloKGws''@;'; put 'put ''YyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wO2ZvcihtPTB8bWlbNjMmYVsobHw9MCk+PjJdXShsLDAsMTI4KTttOylBPTB8WUEoZiwwfGFbbSs4Pj4yXSwwfGFbbSsxMj4+Ml0sMHxhW20rMTY+PjJdLHApLHVlW0ErMjI+PjBdPTB8dWVbbSsyMj4+MF0sdWVbQSsyMT4+MF09MHx1''@;'; put 'put ''ZVttKzIxPj4wXSxtaVs2MyZhW2M+PjJdXShjLEEsMSksbT0wfG1pWzYzJmFbbD4+Ml1dKGwsbSw4KX1mdW5jdGlvbiBZQShsLGMsZixwLG0pe3ZhciBBO3JldHVybiBjfD0wLGZ8PTAscHw9MCxtfD0wLEE9MHxTdChsfD0wLDI0KSx1ZVtBKzIwPj4wXT1tLGFbQSs4Pj4yXT0wfHQwKGwsYyks''@;'; put 'put ''YVtBKzEyPj4yXT0wfHQwKGwsZiksYVtBKzE2Pj4yXT1wLDB8QX1mdW5jdGlvbiBoNShsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAsZj1vZSxvZT1vZSszMnwwLGFbKHA9ZikrOD4+Ml09Y3w9MCxjPTB8bWlbNjMmYVtsPj4yXV0obCxwLDQpLG9lPWYsMHxjfWZ1bmN0aW9uIGtUKGwsYyl7dmFy''@;'; put 'put ''IGY7cmV0dXJuIGN8PTAsZj0wfExkKGx8PTAsMCksYz0wfGg1KGwsYyksTGQobCxmKSwwfGN9ZnVuY3Rpb24gVUEobCxjKXtyZXR1cm4gY3w9MCwwfCgobD0wfGFjKGx8PTApKT8wfGg1KDB8YVtsKzg+PjJdLGMpOjApfWZ1bmN0aW9uIHNpKGwsYyxmLHApe3ZhciBtLEE7cmV0dXJuIGN8PTAs''@;'; put 'put ''Znw9MCxwfD0wLEE9b2Usb2U9b2UrMTZ8MCxtPUEsKGx8PTApfHwobD0wfGFbNDY5NDFdKXx8KHVlW20+PjBdPTB8dWVbMTg0MDBdLHVlW20rMT4+MF09MHx1ZVsxODQwMV0sdWVbbSsyPj4wXT0wfHVlWzE4NDAyXSx1ZVttKzM+PjBdPTB8dWVbMTg0MDNdLGw9MHxFYygwLG0sMCksYVs0Njk0''@;'; put 'put ''MV09bCksbD1wPzB8ZnVuY3Rpb24gb0YobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTA7Yj0wfGhpKGx8PTApLFZoKGwsMSksbT0wfGtUKEE9MHxYNChsLGMpLGYpO2U6ZG97aWYobSl3PW0rMTJ8MCwkaShsLDB8YVt3Pj4yXSksYVt3Pj4yXT0wfHQwKGwscCksdz0x''@;'; put 'put ''NjtlbHNle2lmKDB8KG09MHxoNShBLGYpKSl7bT0wfFlBKGwsZixwLDB8YVttKzE2Pj4yXSxjKSxtaVs2MyZhW0E+PjJdXShBLG0sMSksdz0xNjticmVha31zd2l0Y2gobT0wfFlBKGwsZixwLDB8UHUoQT0wfFg0KGIsYykpLGMpLG1pWzYzJmFbQT4+Ml1dKEEsbSwxKSwwfGMpe2Nhc2UgMDpt''@;'; put 'put ''NyhiLGIsNTcsbSwxKSx3PTE2O2JyZWFrIGU7Y2FzZSAxOmZvcihmPTB8THQoYik7Oyl7aWYoIWYpe3c9MTY7YnJlYWsgZX1pQyhsLGYsbSksZj0wfHp0KGIsZil9Y2FzZSAyOmNhc2UgMzpmb3IoQT0wfEx0KGIpOzspe2lmKCFBKXt3PTE2O2JyZWFrIGV9Zm9yKGY9MHx5MChiLEEpO2Y7KWlD''@;'; put 'put ''KGwsZixtKSxmPTB8azAoYixmKTtBPTB8enQoYixBKX1kZWZhdWx0OmJyZWFrIGV9fX13aGlsZSgwKTtyZXR1cm4gMTY9PSgwfHcpJiYwPT0oMHxjKSYwIT0oMHxtKSYmQmwobCxtLHApLGlvKGwsbCxtKSwwfG19KGwsYyxmLHApOjB8ZnVuY3Rpb24gYUYobCxjLGYpe3JldHVybiBmfD0wLDB8''@;'; put 'put ''KGw9KGw9MHxYNChsfD0wLGN8PTApKT8wfGg1KGwsZik6MCl9KGwsYyxmKSxvZT1BLDB8bH1mdW5jdGlvbiBpQyhsLGMsZil7bHw9MCxmfD0wO3ZhciBtLHA9MCxBPTA7Yz0wfGFjKGN8PTApLCgwfChwPTB8YVsobT1mKzE2fDApPj4yXSkpPjM/YVsoYz1jKzEyfDApPj4yXT0wfEQwWzEyNyZh''@;'; put 'put ''WzgrKDB8YVsoQT0wfGFbbCs2ND4+Ml0pPj4yXSk+PjJdXSgwfGFbQSsxMj4+Ml0sMHxhW2M+PjJdLHA8PD0yLHArNHwwKTpjPWMrMTJ8MCxBPTB8dDAobCwwfGFbZisxMj4+Ml0pLGFbKDB8YVtjPj4yXSkrKGFbbT4+Ml08PDIpPj4yXT1BfWZ1bmN0aW9uIEJsKGwsYyxmKXtjfD0wLGZ8PTA7''@;'; put 'put ''dmFyIHcscD0wLG09MCxBPTAsYj0wO3c9MHxmcihsfD0wKSxBPTEyKygwfGFjKGwpKXwwLCRpKHcsMHxhWygwfGFbQT4+Ml0pKyhhWyhiPWMrMTZ8MCk+PjJdPDwyKT4+Ml0pLG09MHx0MCh3LGYpLGFbKDB8YVtBPj4yXSkrKGFbYj4+Ml08PDIpPj4yXT1tO2Rve2lmKCEoMyZhW2w+PjJdKSl7''@;'; put 'put ''aWYoQT0wfGtUKHA9MHxhWzE2KygwfFZoKHcsMCkpPj4yXSwwfGFbKG09Yys4fDApPj4yXSkpeyRpKHcsMHxhWyhiPUErMTJ8MCk+PjJdKSxhW2I+PjJdPTB8dDAodyxmKTticmVha31iPTB8WUEodywwfGFbbT4+Ml0sZiwwfGFbYj4+Ml0sMyZhW2w+PjJdKSxtaVs2MyZhW3A+PjJdXShwLGIs''@;'; put 'put ''MSk7YnJlYWt9fXdoaWxlKDApO3JldHVybiBpbyh3LGwsYyksMH1mdW5jdGlvbiBQcyhsLGMsZil7Znw9MCxsPTB8WDQobHw9MCxjfD0wKTtkb3tpZihsKXtpZihjPTB8YVtsPj4yXSxmKXtsPTB8bWlbNjMmY10obCxmLDgpO2JyZWFrfWw9MHxtaVs2MyZjXShsLDAsMTI4KTticmVha31sPTB9''@;'; put 'put ''d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBvQyhsKXt2YXIgYz0wO3JldHVybiBhWzQ2OTQyXT1sfD0wLDB8KGM9MHxhYyhsKSkmJihTMihsLGMpLENhKGwsMHxhW2M+PjJdKSksKGM9MHxWaChsLDApKT8wPT0oMHxtNShsLDB8YVtjKzg+PjJdKSkmJjA9PSgwfG01KGwsMHxhW2MrMTI+''@;'; put 'put ''PjJdKSkmJjA9PSgwfG01KGwsMHxhW2MrMTY+PjJdKSk/KENhKGwsMHxhW2M+PjJdKSxjPTApOmM9MTpjPTAsMHxjfWZ1bmN0aW9uIFMyKGwsYyl7Y3w9MDt2YXIgcCxtLGY9MDtmb3IobT0wfGZyKGx8PTApLHA9MHxXQShsKSxjPWMrMTJ8MCxsPTA7Zj0wfGFbYz4+Ml0sISgoMHxsKT49KDB8''@;'; put 'put ''cCkpOykkaShtLDB8YVtmKyhsPDwyKT4+Ml0pLGw9bCsxfDA7SXQobSxmKX1mdW5jdGlvbiBMaShsLGMpe3JldHVybihjPTB8VUEobHw9MCxjfD0wKSk/KGw9MHxhWzEyKygwfGFjKGwpKT4+Ml0sYz0wfGFbbCsoYVtjKzE2Pj4yXTw8Mik+PjJdKTpjPTAsMHxjfWZ1bmN0aW9uIEZvKGwsYyl7''@;'; put 'put ''cmV0dXJuIGN8PTAsbD0wfGFbMTIrKDB8YWMobHw9MCkpPj4yXSwwfGFbbCsoYVtjKzE2Pj4yXTw8Mik+PjJdfWZ1bmN0aW9uIE1jKGwsYyxmKXtyZXR1cm4gZnw9MCwoYz0wfFVBKGx8PTAsY3w9MCkpPyhCbChsLGMsZiksYz0wKTpjPS0xLDB8Y31mdW5jdGlvbiBmNyhsLGMsZixwKXtjfD0w''@;'; put 'put ''LGZ8PTAscHw9MDt2YXIgbT0wO3JldHVybihtPTB8c2kobT0wfGZyKGx8PTApLDMmYVtsPj4yXSxjLDApKXx8KG09MHxzaShtPTB8ZnIobCksMyZhW2w+PjJdLGMscCkpLEJsKGwsbSxmKSwwfWZ1bmN0aW9uIEw2KGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09MDtBPTB8ZnIobHw9MCksbT0w''@;'; put 'put ''fGFbbD4+Ml07ZTpkb3tpZigzJihhW2M+PjJdXm0pKWY9MTtlbHNlIGZvcihmPTEscD0wOzspe2lmKCEocD0wfFBzKEEsMyZtLHApKSlicmVhayBlO2lmKCEoZj0wfFVBKGMsMHxhW3ArOD4+Ml0pKSl7Zj0xO2JyZWFrIGV9QmwoYyxmLG09MHxGbyhsLHApKSwwfE1vKG0pJiZNMCgwfEZvKGMs''@;'; put 'put ''ZikpLGY9MCxtPTB8YVtsPj4yXX19d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiB5MChsLGMpe3ZhciBmPTA7cmV0dXJuKGM9MHx5ZihsfD0wLGN8PTApKT8oWWMoMHxhWyhmPWwrNDR8MCk+PjJdLDB8YVsobD1jKzMyfDApPj4yXSksYz0wfG1pWzYzJmFbKGM9MHxhW2Y+PjJdKT4+Ml1d''@;'; put 'put ''KGMsMCwxMjgpLGFbbD4+Ml09MHxMMygwfGFbZj4+Ml0pKTpjPTAsMHxjfWZ1bmN0aW9uIHlmKGwsYyl7dmFyIGYscDtyZXR1cm4gcD1vZSxvZT1vZSs0OHwwLGY9cCwoMHxhWzI0KyhjfD0wKT4+Ml0pPT0oMHwobHw9MCkpP2w9YysyOHwwOihhW2YrMTY+PjJdPWMsbD0wfG1pWzYzJmFbKGw9''@;'; put 'put ''MHxhW2wrNDA+PjJdKT4+Ml1dKGwsZiw0KSksb2U9cCwwfGx9ZnVuY3Rpb24gazAobCxjKXt2YXIgZj0wLHA9MDtyZXR1cm4oZj0wfHlmKGx8PTAsMHxhWygzPT0oMyZhWyhjfD0wKT4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSkpPyhZYygwfGFbKHA9bCs0NHwwKT4+Ml0sMHxhWyhmPWYrMzJ8''@;'; put 'put ''MCk+PjJdKSxsPTB8bWlbNjMmYVsobD0wfGFbcD4+Ml0pPj4yXV0obCxjLDgpLGFbZj4+Ml09MHxMMygwfGFbcD4+Ml0pKTpsPTAsMHxsfWZ1bmN0aW9uIHdmKGwsYyl7dmFyIGY9MDtyZXR1cm4oYz0wfHlmKGx8PTAsY3w9MCkpPyhZYygwfGFbKGY9bCs0NHwwKT4+Ml0sMHxhWyhsPWMrMjh8''@;'; put 'put ''MCk+PjJdKSxjPTB8bWlbNjMmYVsoYz0wfGFbZj4+Ml0pPj4yXV0oYywwLDEyOCksYVtsPj4yXT0wfEwzKDB8YVtmPj4yXSkpOmM9MCwwfGN9ZnVuY3Rpb24gTzMobCxjKXt2YXIgZj0wLHA9MDtyZXR1cm4oZj0wfHlmKGx8PTAsMHxhWygyPT0oMyZhWyhjfD0wKT4+Ml18MCk/YzpjKy00OHww''@;'; put 'put ''KSs0MD4+Ml0pKT8oWWMoMHxhWyhwPWwrNDR8MCk+PjJdLDB8YVsoZj1mKzI4fDApPj4yXSksbD0wfG1pWzYzJmFbKGw9MHxhW3A+PjJdKT4+Ml1dKGwsYyw4KSxhW2Y+PjJdPTB8TDMoMHxhW3A+PjJdKSk6bD0wLDB8bH1mdW5jdGlvbiBGcyhsLGMpe3ZhciBmPTA7cmV0dXJuKGY9MHx5MChs''@;'; put 'put ''fD0wLGN8PTApKXx8KGY9MHx3ZihsLGMpKSwwfGZ9ZnVuY3Rpb24gVHMobCxjLGYpe2x8PTAsY3w9MCxmfD0wO2U6ZG97aWYoMj09KDMmYVtjPj4yXXwwKSl7aWYoIShjPTB8azAobCxjKSkpe2M9MDtkb3tpZighKGM9Yz8wfE8zKGwsYyk6MHx3ZihsLGYpKSl7Yz0wO2JyZWFrIGV9fXdoaWxl''@;'; put 'put ''KCgwfGFbYys0MD4+Ml0pPT0oMHxmKSl9fWVsc2UgZG97aWYoYz0wfE8zKGwsYyksIWMpe2M9MDticmVhayBlfX13aGlsZSgoMHxhW2MrNDA+PjJdKT09KDB8ZikpfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gRVQobCxjKXtkNShsfD0wLGN8PTApfWZ1bmN0aW9uIGQ1KGwsYyl7bHw9''@;'; put 'put ''MDt2YXIgZixwLG0sQSxiLHc9MCxrPTAsTT0wLEQ9MDtmb3IoYj1vZSxvZT1vZSsxNnwwLGY9YixBPTI9PSgwfCh3PTMmYVsoY3w9MCk+PjJdKSk/YzpjKy00OHwwLHA9MHxhWyh3PTM9PSgwfHcpP2M6Yys0OHwwKSs0MD4+Ml0sbT0wfGFbQSs0MD4+Ml07bCYmKGFbZj4+Ml09YVtjPj4yXSxh''@;'; put 'put ''W2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLCEoMHxLNChsLHAsbSxmKSkpOylrPTB8eWYobCxwKSxQMigwfGFbKEQ9bCs0NHwwKT4+Ml0sayszMnwwLEEpLFAyKDB8YVsoTT1sKzQ4fDApPj4yXSxrKzI0fDAsQSksaz0wfHlmKGws''@;'; put 'put ''bSksUDIoMHxhW0Q+PjJdLGsrMjh8MCx3KSxQMigwfGFbTT4+Ml0saysyMHwwLHcpLGw9MHxTMShsKTtvZT1ifWZ1bmN0aW9uIEs0KGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbSx3LEE9MDtyZXR1cm4gdz1vZSxvZT1vZSs0OHwwLG09dywwPT0oMHwoY3w9MCkpfDA9PSgwfChmfD0wKSl8fChh''@;'; put 'put ''W20+PjJdPWFbcD4+Ml0sYVttKzQ+PjJdPWFbcCs0Pj4yXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFbbSsxMj4+Ml09YVtwKzEyPj4yXSxhW20rNDA+PjJdPWMsMD09KDB8KEE9MHx5ZihsLGYpKSkpP2w9MDooWWMoMHxhWyhwPWwrNDh8MCk+PjJdLDB8YVsoQT1BKzIwfDApPj4yXSksbD0wfG1p''@;'; put 'put ''WzYzJmFbKGw9MHxhW3A+PjJdKT4+Ml1dKGwsbSw0KSxhW0E+PjJdPTB8TDMoMHxhW3A+PjJdKSksb2U9dywwfGx9ZnVuY3Rpb24gUDIobCxjLGYpe2Z8PTAsWWMobHw9MCwwfGFbKGN8PTApPj4yXSksbWlbNjMmYVtsPj4yXV0obCxmLDEpLGFbYz4+Ml09MHxMMyhsKX1mdW5jdGlvbiBybChs''@;'; put 'put ''LGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixrLE0sUixBPTAsdz0wLEQ9MCxHPTA7Uj1vZSxvZT1vZSs0OHwwLGI9UisyNHwwLE09UisxNnwwLGs9Ujtkb3tpZigwfCQ0KGwsMixwLE0sMCkpYVsoRz1rKT4+Ml09MCxhW0crND4+Ml09MCxBPTB8YVsoRz1NKSs0Pj4y''@;'; put 'put ''XSxhWyhEPWsrOHwwKT4+Ml09YVtHPj4yXSxhW0QrND4+Ml09QSxhW2s+PjJdPTIsRD03O2Vsc2UgaWYocClEPTE3O2Vsc2V7aWYoMHxtJiYwPT0oMHxYQShsKSkpe0Q9MTg7YnJlYWt9YVtrPj4yXT0wLGFbays0Pj4yXT0wLGFbays4Pj4yXT0wLGFbaysxMj4+Ml09MCxEPTd9fXdoaWxlKDAp''@;'; put 'put ''O2U6ZG97aWYoNz09KDB8RCkpe2FbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLEE9MHxLNChsLGMsZixiKTt0OmRve2lmKCFBKXtpZigwfGNDKGwpJiYoYVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1h''@;'; put 'put ''W2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sMHwodz0wfEs0KGwsZixjLGIpKSkpe0E9dzticmVha31kb3tpZigwfG0pe2lmKEE9MHxoaShsKSxhW2I+PjJdPWFbaz4+Ml0sYVtiKzQ+PjJdPWFbays0Pj4yXSxhW2IrOD4+Ml09YVtrKzg+PjJdLGFb''@;'; put 'put ''YisxMj4+Ml09YVtrKzEyPj4yXSwhKChBPTB8SzQoQSxjLGYsYikpfHwwfGNDKGwpJiYoQT0wfGhpKGwpLGFbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLEE9MHxLNChBLGYsYyxiKSxBKSkpYnJlYWs7''@;'; put 'put ''RVQobCxBKTticmVhayB0fX13aGlsZSgwKTtEPTE3O2JyZWFrIGV9fXdoaWxlKDApfX13aGlsZSgwKTtyZXR1cm4gMTc9PSgwfEQpJiYobT9EPTE4OkE9MCksMTg9PSgwfEQpJiYoMCE9KDB8ZnVuY3Rpb24gYUMobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxBLHA9MDtyZXR1cm4gQT1vZSxvZT1v''@;'; put 'put ''ZSszMnwwLHA9QSsxNnwwLG09QSxwPTAhPSgwfFhBKGx8PTApKSYmKGFbbT4+Ml09MCxhW20rND4+Ml09MCxhW20rOD4+Ml09MCxhW20rMTI+PjJdPTAsYVtwPj4yXT1hW20+PjJdLGFbcCs0Pj4yXT1hW20rND4+Ml0sYVtwKzg+PjJdPWFbbSs4Pj4yXSxhW3ArMTI+PjJdPWFbbSsxMj4+Ml0s''@;'; put 'put ''MCE9KDB8SzQobCxjLGYscCkpKT8wOjI1NSYoKDB8YnRbbCsyND4+MF0pPj4+MiYxXjEpfCgwfGMpIT0oMHxmKSxvZT1BLDB8cH0obCxjLGYpKSYmMCE9KDB8JDQobCwyLHAsTSwxKSk/KEE9MHxmdW5jdGlvbiBsQyhsLGMsZixwLG0pe2Z8PTAscHw9MCxtfD0wO3ZhciBBLHcsYixrLE0sRD0w''@;'; put 'put ''O3JldHVybiBWbihsfD0wLGN8PTAsMSksVm4obCxmLDEpLHc9NDgrKEE9MHxTdChsLDk2KSl8MCxNPTB8TzYobCwyKSxiPTB8YVt3Pj4yXSxrPTB8YVtBPj4yXSxhWyhEPUErOHwwKT4+Ml09cCxhW0QrND4+Ml09bSxhWyhEPUErNTZ8MCk+PjJdPXAsYVtEKzQ+PjJdPW0sYVtBPj4yXT0xMiZr''@;'; put 'put ''fChtPU08PDQpfDIsYVt3Pj4yXT0xMiZifG18MyxhW0ErODg+PjJdPWMsYVtBKzQwPj4yXT1mLGQ1KGwsQSksNjQmdWVbbCsyND4+MF0mJihmMChBLDk2NDA0LDE2LDApLEo0KGwsQSkpLHcwKGwsQSksMHxBfShsLGMsZiwwfGFbKEE9TSk+PjJdLDB8YVtBKzQ+PjJdKSxSNihsLDIsQSkpOkE9''@;'; put 'put ''MCksb2U9UiwwfEF9ZnVuY3Rpb24gZ28obCxjLGYpe3ZhciBwLG0sQSx3O2Z8PTAsQT0oZj0zPT0oMyZhWyhjfD0wKT4+Ml18MCkpP2MrLTQ4fDA6YyxmPWY/YzpjKzQ4fDAsYz0wfGFbQSs0MD4+Ml0sdz0wfHlmKGx8PTAsMHxhW2YrNDA+PjJdKSxSMygwfGFbKG09bCs0NHwwKT4+Ml0sdysz''@;'; put 'put ''MnwwLEEpLFIzKDB8YVsocD1sKzQ4fDApPj4yXSx3KzI0fDAsQSksYz0wfHlmKGwsYyksUjMoMHxhW20+PjJdLGMrMjh8MCxmKSxSMygwfGFbcD4+Ml0sYysyMHwwLGYpfWZ1bmN0aW9uIFIzKGwsYyxmKXtmfD0wLFljKGx8PTAsMHxhWyhjfD0wKT4+Ml0pLG1pWzYzJmFbbD4+Ml1dKGwsZiwy''@;'; put 'put ''KSxhW2M+PjJdPTB8TDMobCl9ZnVuY3Rpb24gUUEobCxjKXtsfD0wO3ZhciBmLHAsbT0wLEE9MDtyZXR1cm4gZj1vZSxvZT1vZSsxNnwwLEE9MHxhWygzPT0oMHwobT0zJmFbKGM9Mj09KDMmYVsoY3w9MCk+PjJdfDApP2M6YystNDh8MCk+PjJdKSk/YzpjKzQ4fDApKzQwPj4yXSxtPTB8YVso''@;'; put 'put ''Mj09KDB8bSk/YzpjKy00OHwwKSs0MD4+Ml0sYVsocD1mKT4+Ml09YVtjPj4yXSxhW3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0sYVtwKzEyPj4yXT1hW2MrMTI+PjJdLDB8SzQobCxBLG0scCk/KCgwfGhpKGwpKT09KDB8bCkmJig2NCZ1ZVtsKzI0Pj4wXSYmZnVuY3Rp''@;'; put 'put ''b24gU1QobCl7dmFyIGM7MHwoYz0wfGFjKGx8PTApKSYmKFMyKGwsYyksQ2EobCw5NjQwNCkpfShjKSxiaShsLGMpLGcyKGMpLHA1KGwsMiwwfGFbKEE9Yys4fDApPj4yXSwwfGFbQSs0Pj4yXSkpLDB8bTcobCxjLDU4LDAsMCk/Yz0tMTooKDB8aGkobCkpPT0oMHxsKSYmSXQobCxjKSxjPTAp''@;'; put 'put ''KTpjPS0xLG9lPWYsMHxjfWZ1bmN0aW9uIE9kKGwsYyxmKXt2YXIgQSx3LHA9MCxtPTA7dz1vZSxvZT1vZSsxNnwwLHA9dyxtPTB8Vm4obHw9MCwwfGFbKDM9PSgzJmFbKGN8PTApPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdLGZ8PTApLEE9MHxWbihsLDB8YVsoMj09KDMmYVtjPj4yXXwwKT9j''@;'; put 'put ''OmMrLTQ4fDApKzQwPj4yXSxmKTtkb3tpZigwIT0oMHxtKSYwIT0oMHxBKSl7aWYoYVtwPj4yXT1hW2M+PjJdLGFbcCs0Pj4yXT1hW2MrND4+Ml0sYVtwKzg+PjJdPWFbYys4Pj4yXSxhW3ArMTI+PjJdPWFbYysxMj4+Ml0sMCE9KDB8ZikmKG09MD09KDB8KHA9MHxLNChsLG0sQSxwKSkpKSlk''@;'; put 'put ''NShsLGMpLHA9YztlbHNlIGlmKG0pYnJlYWs7cmV0dXJuIG9lPXcsMHwoKDB8KGY9MyZhW3A+PjJdKSk9PSgzJmFbYz4+Ml18MCk/cDpwKyg0OCooMz09KDB8Zik/LTE6MSl8MCl8MCl9fXdoaWxlKDApO3JldHVybiBvZT13LDB9ZnVuY3Rpb24gRWMobCxjLGYpe2x8PTAsY3w9MDt2YXIgcCxt''@;'; put 'put ''LEEsdz0wLGI9MCxrPTA7cmV0dXJuIEE9b2Usb2U9b2UrMTZ8MCxtPUEsYj0wfGZ1bmN0aW9uIHNDKGwpe3ZhciBjLHAsZj0wLG09MDtyZXR1cm4gZj0oYz0wIT0oMHwobHw9MCkpKT8wPT0oMHwoZj0wfGFbbD4+Ml0pKT8xODczNjpmOjE4NzM2LG09MHxwYVs2MyZhW2Y+PjJdXShsKSxwPTB8''@;'; put 'put ''UmlbMTI3JmFbZis0Pj4yXV0obSw4MCksYVtwPj4yXT1mLGFbcCsxMj4+Ml09bSxjPyhhW3ArND4+Ml09MD09KDB8KG09MHxhW2wrND4+Ml0pKT8xODYxMjptLGw9MD09KDB8KGw9MHxhW2wrOD4+Ml0pKT8xODcxMjpsKTooYVtwKzQ+PjJdPTE4NjEyLGw9MTg3MTIpLGFbcCs4Pj4yXT1sLHVl''@;'; put 'put ''W3ArNTI+PjBdPTEsMHxwfShmfD0wKSxwPTB8UmlbMTI3JmFbNCsoMHxhW2I+PjJdKT4+Ml1dKDB8YVtiKzEyPj4yXSw3MiksYVtwPj4yXT0tNCZhW3A+PjJdLGFbKHc9cCs2NHwwKT4+Ml09YixhWyhrPXArMjR8MCk+PjJdPWM9MHxhW2M+PjJdLHVlW2s+PjBdPTI1NSZjfDgsYVtwKzYwPj4y''@;'; put 'put ''XT1wLGY9MHxSaVsxMjcmYVthW2IrND4+Ml0+PjJdXShwLGYpLGFbMTYrKDB8YVt3Pj4yXSk+PjJdPWYsMHwkNChwLDAsbCxtLDEpJiYoYj0wfGFbKHc9bSkrND4+Ml0sYVsoaz1wKzh8MCk+PjJdPWFbdz4+Ml0sYVtrKzQ+PjJdPWIpLFI2KGs9MHx1QyhwKSwwLHApLG9lPUEsMHxrfWZ1bmN0''@;'; put 'put ''aW9uIHVDKGwpe3ZhciBjPTAsZj0wO3JldHVybiBhWzM2KyhsfD0wKT4+Ml09MHxGZChsLDE4NzkyLDB8YVs0NTg5XSksYVtsKzQwPj4yXT0wfEZkKGwsMTg3NTYsMHxhWzQ1ODldKSxjPSgwfGhpKGwpKT09KDB8bCksYVtsKzQ0Pj4yXT0wfEZkKGwsYz8xODQwNDoxODQ0MCwwfGFbNDU4OV0p''@;'; put 'put ''LGM9KDB8aGkobCkpPT0oMHxsKSxhW2wrNDg+PjJdPTB8RmQobCxjPzE4NDc2OjE4NTEyLDB8YVs0NTg5XSksYVtsKzUyPj4yXT0wfEZkKGwsMTg1NDgsMHxhWzQ1ODldKSwwIT0oMHwoYz0wfFMxKGwpKSkmJihmPTB8TzYoYywwKSxhW2w+PjJdPTE1JmFbbD4+Ml18Zjw8NCxtaVs2MyZhWyhm''@;'; put 'put ''PTB8YVtjKzUyPj4yXSk+PjJdXShmLGwsMSksISg2NCZ1ZVtjKzI0Pj4wXSkpfHxDVChsKSx3MChsLGwpLDB8bH1mdW5jdGlvbiBPNihsLGMpe3ZhciBmO3JldHVybiBjPTB8SGwoMHxhWyhjPWY9MjQrKDB8YVs2NCsobHw9MCk+PjJdKSsoKGN8PTApPDwzKXwwKT4+Ml0sMHxhW2MrND4+Ml0s''@;'; put 'put ''MSwwKSxsPU9uLGFbZj4+Ml09YyxhW2YrND4+Ml09bCxPbj1sLDB8Y31mdW5jdGlvbiBRMShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wOyhtPTA9PSgwfChwPTB8UzEobHw9MCkpKSkmJjAhPSgwfGFbMTYrKDB8YVthWyhjPWwrNjR8MCk+PjJdPj4yXSk+PjJdKT8oYmkobCxsKSxwNShsLDAsMHxh''@;'; put 'put ''WyhtPWwrOHwwKT4+Ml0sMHxhW20rND4+Ml0pLG5vWzEyNyZhWzE2KygwfGFbKGM9MHxhW2M+PjJdKT4+Ml0pPj4yXV0oMHxhW2MrMTI+PjJdKSxjPTApOmY9NDtkb3tpZig0PT0oMHxmKSl7Zm9yKGM9MHx3cyhsKTtjOylmPTB8YnMoYyksUTEoYyksYz1mO2ZvcihjPTB8THQobCk7YzspZj0w''@;'; put 'put ''fHp0KGwsYyksYWkobCxjKSxjPWY7aWYoY0YobCksYmkobCxsKSwwPT0oMHxtNShsLDB8YVtsKzQwPj4yXSkpJiYwPT0oMHxtNShsLDB8YVtsKzM2Pj4yXSkpJiYwPT0oMHxtNShsLDB8YVtsKzQ4Pj4yXSkpJiYwPT0oMHxtNShsLDB8YVtsKzQ0Pj4yXSkpJiYwPT0oMHxtNShsLDB8YVtsKzUy''@;'; put 'put ''Pj4yXSkpKXtpZig2NCZ1ZVtsKzI0Pj4wXSYmMHxvQyhsKSl7Yz0tMTticmVha31pZihnMihsKSxwNShsLDAsMHxhWyhmPWwrOHwwKT4+Ml0sMHxhW2YrND4+Ml0pLCFtKXtwNyhwLGwpLEl0KHAsbCksYz0wO2JyZWFrfWZvcihjPWwrNjR8MDtwPTB8YVs0OCsoZj0wfGFbYz4+Ml0pPj4yXTsp''@;'; put 'put ''Y2kobCwwfGFbcD4+Ml0pO25vWzEyNyZhWzIwKygwfGFbZis0Pj4yXSk+PjJdXSgwfGFbZisxNj4+Ml0pLDB8cnIobCk/Yz0tMTooeDJbNjMmYVsocD0xMisoMHxhWyhjPTB8YVtjPj4yXSk+PjJdKXwwKT4+Ml1dKG09MHxhW2MrMTI+PjJdLGwpLHgyWzYzJmFbcD4+Ml1dKG0sYyksYz0wKX1l''@;'; put 'put ''bHNlIGM9LTF9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gTm8obCl7cmV0dXJuIDB8UHUoMHxhWzQwKyhsfD0wKT4+Ml0pfWZ1bmN0aW9uIGJmKGwpe3ZhciBjPTAsZj0wO2ZvcihjPTAsZj0wfEx0KGx8PTApO2Y7KWM9KDB8UmQobCxmLDAsMSkpK2N8MCxmPTB8enQobCxmKTtyZXR1''@;'; put 'put ''cm4gMHxjfWZ1bmN0aW9uIFJkKGwsYyxmLHApe3ZhciBtO3JldHVybiBmfD0wLHB8PTAsKG09MHx5ZihsfD0wLGN8PTApKT8oYz1wPzB8SkEoMHxhW2wrNDQ+PjJdLG0rMzJ8MCk6MCxmJiYoYz0oMHxKQSgwfGFbbCs0ND4+Ml0sbSsyOHwwKSkrY3wwKSk6Yz0wLDB8Y31mdW5jdGlvbiBKQShs''@;'; put 'put ''LGMpe3ZhciBmO3JldHVybiBZYyhsfD0wLDB8YVsoY3w9MCk+PjJdKSxmPTB8UHUobCksYVtjPj4yXT0wfEwzKGwpLDB8Zn1mdW5jdGlvbiBsYyhsKXtyZXR1cm4gMSZ1ZVsyNCsobHw9MCk+PjBdfDB9ZnVuY3Rpb24gY0MobCl7cmV0dXJuIDA9PSgwfGxjKGx8PTApKXwwfWZ1bmN0aW9uIFhB''@;'; put 'put ''KGwpe3JldHVybigwfGJ0WzI0KyhsfD0wKT4+MF0pPj4+MSYxfDB9ZnVuY3Rpb24gJDQobCxjLGYscCxtKXtsfD0wLGN8PTAscHw9MCxtfD0wO3ZhciB3LEE9MCxiPTA7dz0wIT0oMHwoZnw9MCkpO2Rve2lmKHcpe2lmKDM3IT0oMHx1ZVtmPj4wXSkmJjB8KEE9MHxMMVsxMjcmYVs0KygwfGFb''@;'; put 'put ''NCsoQT0wfGFbbCs2ND4+Ml0pPj4yXSk+PjJdXSgwfGFbQSsxNj4+Ml0sYyxmLHAsbSkpKWJyZWFrOyhBPTB8bHMobCxjLGYscCkpfHwoYj01KX1lbHNlIGI9NX13aGlsZSgwKTtyZXR1cm4gNT09KDB8YikmJihtP3cmMCE9KDB8KEE9MHxMMVsxMjcmYVs0KygwfGFbNCsoQT0wfGFbbCs2ND4+''@;'; put 'put ''Ml0pPj4yXSk+PjJdXSgwfGFbQSsxNj4+Ml0sYywwLHAsbSkpKSYmZnVuY3Rpb24gamgobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3LEE9MDt3PTB8U3QobHw9MCwzMiksYVsoQT13KzE2fDApPj4yXT1wLGFbQSs0Pj4yXT1tLGFbdysyND4+Ml09MHx0MChsLGYpLChjPTB8''@;'; put 'put ''YVs1NisoZj0wfGFbKEE9bCs2NHwwKT4+Ml0pKygocD0zPT0oMHxjKT8yOmMpPDwyKT4+Ml0pPyhtPWMsYz1mKToobT0wfEZkKGwsMTg2NDAsMHxhWzQ1ODldKSxhWzU2KygwfGFbQT4+Ml0pKyhwPDwyKT4+Ml09bSxjPTB8YVtBPj4yXSksKGM9MHxhW2MrNjgrKHA8PDIpPj4yXSl8fChjPTB8''@;'; put 'put ''RmQobCwxODY3NiwwfGFbNDU4OV0pLGFbNjgrKDB8YVtBPj4yXSkrKHA8PDIpPj4yXT1jKSxtaVs2MyZhW20+PjJdXShtLHcsMSksbWlbNjMmYVtjPj4yXV0oYyx3LDEpfShsLGMsZiwwfGFbKGI9cCk+PjJdLDB8YVtiKzQ+PjJdKTpBPTApLDB8QX1mdW5jdGlvbiBoQyhsLGMsZixwKXtyZXR1''@;'; put 'put ''cm4gMHxEMFsxMjcmYVs4KygwfGFbNCsobD0wfGFbNjQrKGx8PTApPj4yXSk+PjJdKT4+Ml1dKDB8YVtsKzE2Pj4yXSxjfD0wLGZ8PTAscHw9MCl9ZnVuY3Rpb24gcDUobCxjLGYscCl7RFQobHw9MCxjfD0wLGZ8PTAscHw9MCksRmFbMzEmYVsxMisoMHxhWzQrKGw9MHxhW2wrNjQ+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXV0oMHxhW2wrMTY+PjJdLGMsZixwKX1mdW5jdGlvbiAkcihsKXt2YXIgQSx3LGM9MCxmPTAscD0wLG09MDt3PW9lLG9lPW9lKzE2fDAsQT13LGM9MHxmdW5jdGlvbiBrMShsLGMsZixwKXtyZXR1cm4gMHwobD0obD0wfElUKGx8PTAsY3w9MCxmfD0wLHB8PTApKT8wfGFbbCsyND4+''@;'; put 'put ''Ml06MCl9KGY9MHxmcihsfD0wKSwzJmFbbD4+Ml0sMHxhWyhjPW09bCs4fDApPj4yXSwwfGFbYys0Pj4yXSk7ZG97aWYoIWMpe2lmKDB8KGY9MHxhWzE2KygwfGFbNCsoYz0wfGFbZis2ND4+Ml0pPj4yXSk+PjJdKSYmMHwocD0wfEQwWzEyNyZmXSgwfGFbYysxNj4+Ml0sMyZhW2w+PjJdLDB8''@;'; put 'put ''YVsocD1tKT4+Ml0sMHxhW3ArND4+Ml0pKSl7Yz1wO2JyZWFrfTI9PSgzJmFbbD4+Ml18MCk/Yz0wOihwPTB8YVttPj4yXSxtPTB8YVttKzQ+PjJdLGFbQT4+Ml09MzcsYVsoYz1BKzh8MCk+PjJdPXAsYVtjKzQ+PjJdPW0sYW8oMTk0NzczLDk2NDU2LEEpLGM9MTk0NzczKX19d2hpbGUoMCk7''@;'; put 'put ''cmV0dXJuIG9lPXcsMHxjfWZ1bmN0aW9uIFI2KGwsYyxmKXtObFsxMjcmYVsyNCsoMHxhWzQrKGw9MHxhWzY0KyhsfD0wKT4+Ml0pPj4yXSk+PjJdXSgwfGFbbCsxNj4+Ml0sY3w9MCxmfD0wKX1mdW5jdGlvbiBscyhsLGMsZixwKXtmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTA7cmV0dXJu''@;'; put 'put ''IGI9b2Usb2U9b2UrMzJ8MCx3PWIsMCE9KDB8KGM9MHxhWzU2KygwfGFbNjQrKGx8PTApPj4yXSkrKCgzPT0oMHwoY3w9MCkpPzI6Yyk8PDIpPj4yXSkpJiYwIT0oMHwobT0wfFVyKGwsZikpKSYmKGFbdysyND4+Ml09bSwwIT0oMHwoQT0wfG1pWzYzJmFbYz4+Ml1dKGMsdyw0KSkpKT8odz0w''@;'; put 'put ''fGFbNCsoZj1BKzE2fDApPj4yXSxhWyhjPXApPj4yXT1hW2Y+PjJdLGFbYys0Pj4yXT13LGM9MSk6Yz0wLG9lPWIsMHxjfWZ1bmN0aW9uIElUKGwsYyxmLHApe3ZhciBtLEE7cmV0dXJuIHB8PTAsQT1vZSxvZT1vZSszMnwwLG09QSwobD0wfGFbNjgrKDB8YVs2NCsobHw9MCk+PjJdKSsoKDM9''@;'; put 'put ''PSgwfChjfD0wKSk/MjpjKTw8Mik+PjJdKT8oYVsoYz1tKzE2fDApPj4yXT1mfD0wLGFbYys0Pj4yXT1wLGw9MHxtaVs2MyZhW2w+PjJdXShsLG0sNCkpOmw9MCxvZT1BLDB8bH1mdW5jdGlvbiBEVChsLGMsZixwKXt2YXIgbTtyZXR1cm4oYz0wfElUKGx8PTAsbT0zPT0oMHwoY3w9MCkpPzI6''@;'; put 'put ''YyxmfD0wLHB8PTApKT8obWlbNjMmYVsoZj0wfGFbNTYrKDB8YVsocD1sKzY0fDApPj4yXSkrKG08PDIpPj4yXSk+PjJdXShmLGMsMiksbWlbNjMmYVsocD0wfGFbNjgrKDB8YVtwPj4yXSkrKG08PDIpPj4yXSk+PjJdXShwLGMsMiksJGkobCwwfGFbYysyND4+Ml0pLEl0KGwsYyksYz0xKTpj''@;'; put 'put ''PTAsMHxjfWZ1bmN0aW9uIGNGKGwpe2FbNDY5NDJdPWx8PTAsZEMoNTYrKDB8YVsobD1sKzY0fDApPj4yXSl8MCksZEMoNjgrKDB8YVtsPj4yXSl8MCl9ZnVuY3Rpb24gZEMobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTA7Zm9yKGM9MDszIT0oMHxjKTspMHwocD0wfGFbKGY9bCsoYzw8Mil8MCk+''@;'; put 'put ''PjJdKSYmKGlzKHApLGFbZj4+Ml09MCksYz1jKzF8MH1mdW5jdGlvbiB3ZShsKXt2YXIgYyxmLHA7cmV0dXJuIGx8PTAsYz1vZSxvZT1vZSszMnwwLHA9YysxMnwwLGY9YyxhWzQ2ODJdPWFbNDY3OV0sYVs0NjgzXT1hWzQ2ODBdLGFbcD4+Ml09bCxhW3ArND4+Ml09MHx6byhsKSxhW3ArOD4+''@;'; put 'put ''Ml09MCxhW2Y+PjJdPTE4NzM2LGFbZis0Pj4yXT0xODYxMixhW2YrOD4+Ml09MTg3MjQsbD0wfFBUKHAsZiksZnVuY3Rpb24gbW8obCl7YVs0Njk2Nl09bHw9MCxhWzQ3MjVdPTF9KDApLG9lPWMsMHxsfWZ1bmN0aW9uIFN0KGwsYyl7dmFyIGY7cmV0dXJuIGY9b2Usb2U9b2UrMTZ8MCwobD0w''@;'; put 'put ''fFJpWzEyNyZhWzQrKDB8YVsobD0wfGFbNjQrKGx8PTApPj4yXSk+PjJdKT4+Ml1dKDB8YVtsKzEyPj4yXSxjfD0wKSl8fFhyKDEsOTY0NjIsZiksb2U9ZiwwfGx9ZnVuY3Rpb24gSXQobCxjKXtsfD0wLDB8KGN8PTApJiZ4Mls2MyZhWzEyKygwfGFbKGw9MHxhW2wrNjQ+PjJdKT4+Ml0pPj4y''@;'; put 'put ''XV0oMHxhW2wrMTI+PjJdLGMpfWZ1bmN0aW9uIENuKGwsYyxmKXtyZXR1cm4gbHw9MCxmfD0wLGFbNDY1NjRdPWN8PTAsYVs0NjU2NV09ZixhWzQ2OTQ3XT0xODYyNDgsMHwoKGw9MHxtaVs2MyZhWyhsPTB8YVtsKzQwPj4yXSk+PjJdXShsLDE4Nzc3Miw0KSk/MHxhW2wrMTY+PjJdOjApfWZ1''@;'; put 'put ''bmN0aW9uIEx0KGwpe3JldHVybiAwfCgobD0wfG1pWzYzJmFbKGw9MHxhWzM2KyhsfD0wKT4+Ml0pPj4yXV0obCwwLDEyOCkpPzB8YVtsKzE2Pj4yXTowKX1mdW5jdGlvbiB6dChsLGMpe3ZhciBmPTA7cmV0dXJuIDB8KDAhPSgwfChjPTB8eWYobHw9MCxjfD0wKSkpJiYwIT0oMHwoZj0wfG1p''@;'; put 'put ''WzYzJmFbKGY9MHxhW2wrMzY+PjJdKT4+Ml1dKGYsYyw4KSkpPzB8YVtmKzE2Pj4yXTowKX1mdW5jdGlvbiBmbihsKXtyZXR1cm4gMHwoKGw9MHxtaVs2MyZhWyhsPTB8YVszNisobHw9MCk+PjJdKT4+Ml1dKGwsMCwyNTYpKT8wfGFbbCsxNj4+Ml06MCl9ZnVuY3Rpb24gSW4obCxjKXt2YXIg''@;'; put 'put ''Zj0wO3JldHVybiAwfCgwIT0oMHwoYz0wfHlmKGx8PTAsY3w9MCkpKSYmMCE9KDB8KGY9MHxtaVs2MyZhWyhmPTB8YVtsKzM2Pj4yXSk+PjJdXShmLGMsMTYpKSk/MHxhW2YrMTY+PjJdOjApfWZ1bmN0aW9uIFJuKGwsYyxmLHApe3B8PTA7dmFyIG09MCxBPTA7bT0wfENuKGx8PTAsY3w9MCxm''@;'; put 'put ''fD0wKTtkb3tpZigwIT0oMHxwKSYwPT0oMHxtKSl7aWYoKDB8KG09MHxoaShsKSkpIT0oMHxsKSYmMHwoQT0wfENuKG0sYyxmKSkpe1ZuKGwsQSwxKSxtPUE7YnJlYWt9MHxoQyhsLDEsYyxmKT8oaWkobCxtPTB8SXIobCxjLGYsbT0wfE82KGwsMSksT24pKSx5cihsLG0pKTptPTB9fXdoaWxl''@;'; put 'put ''KDApO3JldHVybiAwfG19ZnVuY3Rpb24gVm4obCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wO2lmKCgwfChwPTB8aGkobHw9MCkpKT09KDB8YVtjKzI0Pj4yXSkpe2lmKDAhPSgwfGYpJjA9PSgwfChwPTB8Q24obCwwfGFbKHA9Yys4fDApPj4yXSwwfGFbcCs0Pj4yXSkpKSl7aWYocD0wfFMxKGwp''@;'; put 'put ''KXJldHVybiBvaShsLGY9MHxWbihwLGMsZikpLDB8ZjtwPTB9fWVsc2UgcD0wO3JldHVybiAwfHB9ZnVuY3Rpb24gSXIobCxjLGYscCxtKXt2YXIgQSx3O3JldHVybiBjfD0wLGZ8PTAscHw9MCxtfD0wLG09MHxTdChsfD0wLDY0KSxBPTB8YVttPj4yXSxhWyh3PW0rOHwwKT4+Ml09YyxhW3cr''@;'; put 'put ''ND4+Ml09ZixhW20+PjJdPTEyJkF8cDw8NHwxLGFbbSsyND4+Ml09MHxoaShsKSw2NCZ1ZVsyNCsoMHxoaShsKSk+PjBdJiZmMChtLDk2NDA0LDE2LDApLDB8bX1mdW5jdGlvbiBpaShsLGMpe2x8PTAsY3w9MDtkb3tvaShsLGMpLGw9MHxTMShsKX13aGlsZSgwIT0oMHxsKSl9ZnVuY3Rpb24g''@;'; put 'put ''eXIobCxjKXtjfD0wLDY0JnVlWzI0KygwfGhpKGx8PTApKT4+MF0mJnJDKGwsYyksdzAobCxjKX1mdW5jdGlvbiBvaShsLGMpe2N8PTA7dmFyIGYscD0wO1B1KDB8YVsocD00MCsobHw9MCl8MCk+PjJdKSxmPSgwfGhpKGwpKT09KDB8bCk/YysyOHwwOjB8U3QobCwzNiksYVtmKzE2Pj4yXT1j''@;'; put 'put ''LG1pWzYzJmFbKHA9MHxhW3A+PjJdKT4+Ml1dKHAsZiwxKSxtaVs2MyZhWyhwPTB8YVtsKzM2Pj4yXSk+PjJdXShwLGYsMSl9ZnVuY3Rpb24gTXIobCxjLGYpe2N8PTAsZnw9MDt2YXIgQSxrLHA9MCxtPTAsdz0wLGI9MDtyZXR1cm4gaz1vZSxvZT1vZSsxNnwwLEE9ayx3PTB8aGkobHw9MCks''@;'; put 'put ''MHwkNChsLDEsYyxBLDApPyhwPTB8Q24obCwwfGFbKHA9QSk+PjJdLDB8YVtwKzQ+PjJdKSl8fCgwPT0oMHxmKXwoMHx3KT09KDB8bCl8fDA9PSgwfChtPTB8Q24odywwfGFbKG09QSk+PjJdLDB8YVttKzQ+PjJdKSkpP2I9NjpwPTB8Vm4obCxtLDEpKTpiPTYsNj09KDB8YikmJigwIT0oMHxm''@;'; put 'put ''KSYmMCE9KDB8JDQobCwxLGMsQSwxKSk/KGlpKGwscD0wfElyKGwsdz0wfGFbKGI9QSk+PjJdLGI9MHxhW2IrND4+Ml0scD0wfE82KGwsMSksT24pKSx5cihsLHApLFI2KGwsMSxwKSk6cD0wKSxvZT1rLDB8cH1mdW5jdGlvbiBhaShsLGMpe3ZhciBwLGY9MCxtPTA7aWYoMHxDbihsfD0wLDB8''@;'; put 'put ''YVsoZj1wPTgrKGN8PTApfDApPj4yXSwwfGFbZis0Pj4yXSkpe2lmKCgwfGhpKGwpKT09KDB8bCkpe2ZvcihmPTB8RnMobCxjKTtmOyltPTB8VHMobCxmLGMpLFFBKGwsZiksZj1tOzY0JnVlW2wrMjQ+PjBdJiZmdW5jdGlvbiBENihsKXt2YXIgYzswfChjPTB8YWMobHw9MCkpJiYoUzIobCxj''@;'; put 'put ''KSxDYShsLDk2NDA0KSl9KGMpLGJpKGwsYyksZzIoYykscDUobCwxLDB8YVsobT1wKT4+Ml0sMHxhW20rND4+Ml0pfTB8bTcobCxjLDU5LDAsMCk/Zj0tMTooKDB8aGkobCkpPT0oMHxsKSYmSXQobCxjKSxmPTApfWVsc2UgZj0tMTtyZXR1cm4gMHxmfWZ1bmN0aW9uIG5pKGwsYyl7bHw9MDt2''@;'; put 'put ''YXIgcCx3LGY9MCxtPTAsQT0wO3c9b2Usb2U9b2UrMTZ8MCxwPXcsZj0wfGFbKGN8PTApPj4yXTtkb3tpZighKDMmZikpe2lmKCgwfFMxKGMpKT09KDB8bCkpe2Y9MHxhW2M+PjJdLEE9NTticmVha31YcigxLDk2NDg4LHApLG09LTE7YnJlYWt9QT01fXdoaWxlKDApO2U6ZG97aWYoNT09KDB8''@;'; put 'put ''QSkpc3dpdGNoKDMmZil7Y2FzZSAxOm09MHxhaShsLGMpO2JyZWFrIGU7Y2FzZSAyOmNhc2UgMzptPTB8UUEobCxjKTticmVhayBlO2Nhc2UgMDptPTB8UTEoYyk7YnJlYWsgZX19d2hpbGUoMCk7cmV0dXJuIG9lPXcsMHxtfWZ1bmN0aW9uIGZyKGwpe3ZhciBjPTA7c3dpdGNoKDMmYVsobHw9''@;'; put 'put ''MCk+PjJdKXtjYXNlIDI6Y2FzZSAzOmM9MHxhWzI0KygwfGFbbCs0MD4+Ml0pPj4yXTticmVhaztjYXNlIDE6Yz0wfGFbbCsyND4+Ml07YnJlYWs7Y2FzZSAwOmM9bH1yZXR1cm4gMHxjfWZ1bmN0aW9uIGhpKGwpe3ZhciBjPTA7c3dpdGNoKDMmYVsobHw9MCk+PjJdKXtjYXNlIDI6Y2FzZSAz''@;'; put 'put ''OmM9MjQrKDB8YVtsKzQwPj4yXSl8MDticmVhaztjYXNlIDE6Yz1sKzI0fDA7YnJlYWs7Y2FzZSAwOmM9bCs2MHwwfXJldHVybiAwfGFbYz4+Ml19ZnVuY3Rpb24gdzAobCxjKXt2YXIgZjtjfD0wLDB8dWVbNTIrKGY9MHxhWzY0KyhsfD0wKT4+Ml0pPj4wXT9KMChsLGMsMHxhW2YrNDg+PjJd''@;'; put 'put ''KTpaMChsLGMsMTAwLDApfWZ1bmN0aW9uIEowKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wO2U6ZG97aWYoMHxmKXtzd2l0Y2goSjAobCxjLDB8YVtmKzg+PjJdKSwzJmFbYz4+Ml0pe2Nhc2UgMDpwPTB8YVtmPj4yXTticmVhaztjYXNlIDE6cD0xMisoMHxhW2Y+PjJdKXwwO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjpwPTI0KygwfGFbZj4+Ml0pfDA7YnJlYWs7ZGVmYXVsdDpicmVhayBlfTB8KHA9MHxhW3A+PjJdKSYmTmxbMTI3JnBdKGwsYywwfGFbZis0Pj4yXSl9fXdoaWxlKDApfWZ1bmN0aW9uIGlvKGwsYyxmKXt2YXIgcDtjfD0wLGZ8PTAsMHx1ZVs1MisocD0wfGFbNjQrKGx8PTApPj4y''@;'; put 'put ''XSk+PjBdP2IwKGwsYyxmLDB8YVtwKzQ4Pj4yXSk6WjAobCxjLDEwMSxmKX1mdW5jdGlvbiBiMChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTA7ZTpkb3tpZigwfHApe3N3aXRjaChiMChsLGMsZiwwfGFbcCs4Pj4yXSksMyZhW2M+PjJdKXtjYXNlIDA6bT00KygwfGFbcD4+''@;'; put 'put ''Ml0pfDA7YnJlYWs7Y2FzZSAxOm09MTYrKDB8YVtwPj4yXSl8MDticmVhaztjYXNlIDI6bT0yOCsoMHxhW3A+PjJdKXwwO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX0wfChtPTB8YVttPj4yXSkmJkZhWzMxJm1dKGwsYywwfGFbcCs0Pj4yXSxmKX19d2hpbGUoMCl9ZnVuY3Rpb24gYmkobCxjKXt2''@;'; put 'put ''YXIgZjtjfD0wLDB8dWVbNTIrKGY9MHxhWzY0KyhsfD0wKT4+Ml0pPj4wXT96cihsLGMsMHxhW2YrNDg+PjJdKTpaMChsLGMsMTAyLDApfWZ1bmN0aW9uIHpyKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wO2U6ZG97aWYoMHxmKXtzd2l0Y2goenIobCxjLDB8YVtmKzg+PjJdKSwzJmFb''@;'; put 'put ''Yz4+Ml0pe2Nhc2UgMDpwPTgrKDB8YVtmPj4yXSl8MDticmVhaztjYXNlIDE6cD0yMCsoMHxhW2Y+PjJdKXwwO2JyZWFrO2Nhc2UgMjpwPTMyKygwfGFbZj4+Ml0pfDA7YnJlYWs7ZGVmYXVsdDpicmVhayBlfTB8KHA9MHxhW3A+PjJdKSYmTmxbMTI3JnBdKGwsYywwfGFbZis0Pj4yXSl9fXdo''@;'; put 'put ''aWxlKDApfWZ1bmN0aW9uIGNpKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTA7Zj0wfGFbKHA9NDgrKDB8YVs2NCsobHw9MCk+PjJdKXwwKT4+Ml07ZTpkb3tpZihmKXtpZigoMHxhW2Y+PjJdKSE9KDB8Yykpe2Zvcig7Oyl7aWYoIWYpe2Y9LTE7YnJlYWsgZX1pZigoMHxhWyhtPTB8YVsocD1m''@;'; put 'put ''Kzh8MCk+PjJdKT4+Ml0pPT0oMHxjKSlicmVhaztmPW19bSYmKGFbcD4+Ml09YVttKzg+PjJdKX1lbHNlIGFbcD4+Ml09YVtmKzg+PjJdO0l0KGwsZiksZj0wfWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIEhyKGwsYyl7dmFyIGY7Y3w9MCxmPTB8aGkobHw9MCk7ZTpk''@;'; put 'put ''b3tpZigoMHxmKT09KDB8aGkoYykpKXN3aXRjaCgzJmFbYz4+Ml0pe2Nhc2UgMDpmb3IoOzspe2lmKCgwfGMpPT0oMHxsKSl7Yz0xO2JyZWFrIGV9aWYoIShjPTB8UzEoYykpKXtjPTA7YnJlYWt9fWJyZWFrO2Nhc2UgMTpjPTAhPSgwfFJuKGwsMHxhWyhjPWMrOHwwKT4+Ml0sMHxhW2MrND4+''@;'; put 'put ''Ml0sMCkpO2JyZWFrIGU7ZGVmYXVsdDpjPTAhPSgwfE9kKGwsYywwKSk7YnJlYWsgZX1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gMSZjfDB9ZnVuY3Rpb24gTWkobCl7cmV0dXJuIDMmYVsobHw9MCk+PjJdfDB9ZnVuY3Rpb24gWjAobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEEsdyxi''@;'; put 'put ''LG09MDtzd2l0Y2goYj1vZSxvZT1vZSsxNnwwLHc9YixBPTB8ZjAobHw9MCw5NjUxMiw0NCwwKSwwfGYpe2Nhc2UgMTAwOjB8Zm8obT0wfG4wKEEsYywxMDApLGMpfHxpYShtLGwsYyxwKTticmVhaztjYXNlIDEwMTowPT0oMHxmbygwfG4wKEEsYywxMDApLGMpKSYmMD09KDB8Zm8oMHxuMChB''@;'; put 'put ''LGMsMTAyKSxjKSkmJjA9PSgwfGZvKG09MHxuMChBLGMsMTAxKSxjKSkmJmlhKG0sbCxjLHApO2JyZWFrO2Nhc2UgMTAyOlgwKDB8bjAoQSxjLDEwMCksYyksWDAoMHxuMChBLGMsMTAxKSxjKSwwfGZvKG09MHxuMChBLGMsMTAyKSxjKXx8aWEobSxsLGMscCk7YnJlYWs7ZGVmYXVsdDpYcigx''@;'; put 'put ''LDk2NTI0LHcpfW9lPWJ9ZnVuY3Rpb24gbjAobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwLEEsbT0wO0E9b2Usb2U9b2UrMTZ8MCxwPUE7ZTpkb3tzd2l0Y2goMyZhW2M+PjJdKXtjYXNlIDA6c3dpdGNoKDB8Zil7Y2FzZSAxMDA6Zj1sKzh8MDticmVhayBlO2Nhc2UgMTAxOmY9bCsyMHww''@;'; put 'put ''O2JyZWFrIGU7Y2FzZSAxMDI6Zj1sKzMyfDA7YnJlYWsgZTtkZWZhdWx0Om09MTQ7YnJlYWsgZX1jYXNlIDE6c3dpdGNoKDB8Zil7Y2FzZSAxMDA6Zj1sKzEyfDA7YnJlYWsgZTtjYXNlIDEwMTpmPWwrMjR8MDticmVhayBlO2Nhc2UgMTAyOmY9bCszNnwwO2JyZWFrIGU7ZGVmYXVsdDptPTE0''@;'; put 'put ''O2JyZWFrIGV9Y2FzZSAyOnN3aXRjaCgwfGYpe2Nhc2UgMTAwOmY9bCsxNnwwO2JyZWFrIGU7Y2FzZSAxMDE6Zj1sKzI4fDA7YnJlYWsgZTtjYXNlIDEwMjpmPWwrNDB8MDticmVhayBlO2RlZmF1bHQ6bT0xNDticmVhayBlfWRlZmF1bHQ6bT0xNH19d2hpbGUoMCk7cmV0dXJuIDE0PT0oMHxt''@;'; put 'put ''KSYmKFhyKDEsOTY1NTgscCksZj0wKSwobD0wfGFbZj4+Ml0pfHwobD0wfEZkKGw9MHxmcihjKSwxODgyOCwwfGFbNDU4OV0pLGFbZj4+Ml09bCksb2U9QSwwfGx9ZnVuY3Rpb24gZm8obCxjKXt2YXIgZixwLG07cmV0dXJuIGx8PTAsZj1vZSxvZT1vZSszMnwwLHA9ZixtPTB8emkoY3w9MCks''@;'; put 'put ''YVsoYz1wKzh8MCk+PjJdPW0sYVtjKzQ+PjJdPU9uLGM9MHxtaVs2MyZhW2w+PjJdXShsLHAsNCksb2U9ZiwwfGN9ZnVuY3Rpb24gaWEobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIG0sQT0wO3JldHVybiBtPTB8U3QoMHxmcihmfD0wKSwzMiksYVttKzIwPj4yXT1mLEE9MHx6aShmKSxh''@;'; put 'put ''WyhmPW0rOHwwKT4+Ml09QSxhW2YrND4+Ml09T24sYVttKzE2Pj4yXT1jLDB8cCYmKEE9MHxTdChjLDgpLGFbbSsyND4+Ml09QSxhW0E+PjJdPXApLG1pWzYzJmFbbD4+Ml1dKGwsbSwxKSwwfG19ZnVuY3Rpb24gWDAobCxjKXswfChjPTB8Zm8obHw9MCxjfD0wKSkmJm1pWzYzJmFbbD4+Ml1d''@;'; put 'put ''KGwsYywyKX1mdW5jdGlvbiB6aShsKXtyZXR1cm4gT249MHxhWzQrKGw9OCsobHw9MCl8MCk+PjJdLDB8YVtsPj4yXX1mdW5jdGlvbiBBaShsLGMsZil7Y3w9MCxmfD0wO3ZhciBBLHcsayxwPTAsbT0wLGI9MDtmb3Ioaz1vZSxvZT1vZSsxNnwwLHc9ayxwPUE9MHxhWzE2KyhsfD0wKT4+Ml07''@;'; put 'put ''Oyl7aWYoIXApe3A9MDticmVha31pZigoMHwobT0wfGFbcD4+Ml0pKT09KDB8Yykpe2I9NzticmVha31pZigoMHx1ZVtjPj4wXSk9PSgwfHVlW20+PjBdKSYmMD09KDB8WmkoYyxtKSkpe2I9NzticmVha31pZigoMHwocD0wfGFbcCs0Pj4yXSkpPT0oMHxBKSl7cD0wO2JyZWFrfX1kb3tpZig3''@;'; put 'put ''PT0oMHxiKSl7aWYoISg0JmFbbD4+Ml0pKXtpZigoMHxwKT09KDB8QSkmMD09KDB8Zikpe3A9QTticmVha314MChsLHAsZik7YnJlYWt9ZiYmKCgwfEEpPT0oMHxwKT9wPUE6WHIoMSw5NjU4Myx3KSl9fXdoaWxlKDApO3JldHVybiBvZT1rLDB8cH1mdW5jdGlvbiB4MChsLGMsZil7Znw9MDt2''@;'; put 'put ''YXIgcD0wO2FbMTYrKGx8PTApPj4yXT1jfD0wLGFbbD4+Ml09LTUmKHA9MHxhW2w+PjJdKXwoZj1mPDwyJjQpLDImcHwwJiYoYVtsKyg0OCoocD0zPT0oMyZwfDApPy0xOjEpfDApKzE2Pj4yXT1jLGFbKHA9bCsoNDgqcHwwKXwwKT4+Ml09LTUmYVtwPj4yXXxmKX1mdW5jdGlvbiBmMChsLGMs''@;'; put 'put ''ZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbSx3LEE9MDt3PTB8ZnIobHw9MCksbT0wfEFpKGwsYywwKTtlOmRve2lmKDAhPSgwfGYpJjA9PSgwfG0pKXN3aXRjaChmPTB8U3QodyxmKSxhW2Y+PjJdPTB8dDAodyxjKSwzJmFbbD4+Ml0pe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmNhc2UgMzpqcihs''@;'; put 'put ''LGYpLEE9ZjticmVhayBlfWVsc2UgQT1tfXdoaWxlKDApO3JldHVybiAwfHAmJkFpKGwsYywxKSwwfEF9ZnVuY3Rpb24ganIobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtmPTB8YVsxNisobHw9MCk+PjJdO2Rve2lmKGYpe2lmKCgwfChtPTB8YVsocD1mKzR8MCk+PjJdKSk9PSgwfGYpKXth''@;'; put 'put ''W3A+PjJdPWMscD1mLGY9YzticmVha31hW2MrND4+Ml09bSxwPWM7YnJlYWt9cD1jLGY9Y313aGlsZSgwKTthW2YrND4+Ml09cCw0JmFbbD4+Ml18fHgwKGwsYywwKX1mdW5jdGlvbiBDYShsLGMpe3ZhciBmLHA7cmV0dXJuIGN8PTAscD0wfGZyKGx8PTApLChmPTB8QWkobCxjLDApKT8oZnVu''@;'; put 'put ''Y3Rpb24gc3MobCxjKXtjfD0wO3ZhciBmPTA7bD0wfGFbMTYrKGx8PTApPj4yXTtkb3tsPTB8YVsoZj1sKzR8MCk+PjJdfXdoaWxlKCgwfGwpIT0oMHxjKSk7YVtmPj4yXT1hW2MrND4+Ml19KGwsZiksMyZhW2w+PjJdPyhtNygwfGhpKHApLGwsNjAsZiwwKSxjPWYpOihfbChwLGwsZiksYz1m''@;'; put 'put ''KSwkaShwLDB8YVtmPj4yXSksSXQocCxjKSxjPTApOmM9LTEsMHxjfWZ1bmN0aW9uIF9sKGwsYyxmKXtsfD0wLCgwfGFbMTYrKGN8PTApPj4yXSk9PSgwfChmfD0wKSkmJngwKGMsKDB8KGw9MHxhW2YrND4+Ml0pKT09KDB8Zik/MDpsLDApfWZ1bmN0aW9uIFFhKGwsYyxmLHAsbSl7bHw9MCxj''@;'; put 'put ''fD0wLGZ8PTAsbXw9MDt2YXIgdyxBPTA7dz0oQT0oMHwocHw9MCkpPi0xKT9wOjAtcHwwO2U6ZG97c3dpdGNoKDB8Yyl7Y2FzZSAwOmlmKGYwKGwsZix3LG0pLCFBKWZvcihjPTB8d3MobCk7Oyl7aWYoIWMpYnJlYWsgZTtRYShjLDAsZixwLG0pLGM9MHxicyhjKX1icmVhaztjYXNlIDM6Y2Fz''@;'; put 'put ''ZSAyOmNhc2UgMTpmb3IocD0xPT0oMHxjKSxjPTB8THQobCk7Oyl7aWYoIWMpYnJlYWsgZTt0OmRve2lmKHApZjAoYyxmLHcsbSk7ZWxzZSBmb3IoQT0wfHkwKGwsYyk7Oyl7aWYoIUEpYnJlYWsgdDtmMChBLGYsdyxtKSxBPTB8azAobCxBKX19d2hpbGUoMCk7Yz0wfHp0KGwsYyl9fX13aGls''@;'; put 'put ''ZSgwKX1mdW5jdGlvbiBocyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDA6bTcobCxsLDYxLGYsMSk7YnJlYWs7Y2FzZSAzOmNhc2UgMjpjYXNlIDE6Zm9yKG09MT09KDB8YykscD0wfEx0KGwpOzspe2lmKCFwKWJyZWFrIGU7dDpkb3tp''@;'; put 'put ''ZihtKUNhKHAsZik7ZWxzZSBmb3IoYz0wfHkwKGwscCk7Oyl7aWYoIWMpYnJlYWsgdDtDYShjLGYpLGM9MHxrMChsLGMpfX13aGlsZSgwKTtwPTB8enQobCxwKX19fXdoaWxlKDApfWZ1bmN0aW9uIGcyKGwpe3ZhciBjLGYscD0wO2lmKGY9MHxmcihsfD0wKSwwfChsPTB8YVsoYz1sKzE2fDAp''@;'; put 'put ''Pj4yXSkpZG97cD1sLGw9MHxhW2wrND4+Ml0sJGkoZiwwfGFbcD4+Ml0pLEl0KGYscCl9d2hpbGUoKDB8bCkhPSgwfGFbYz4+Ml0pKTthW2M+PjJdPTB9ZnVuY3Rpb24gcnIobCl7cmV0dXJuIDB8bTUobHw9MCwwfERyKGwpKX1mdW5jdGlvbiBEcihsKXt2YXIgZixjPTA7cmV0dXJuKGM9MHxh''@;'; put 'put ''WyhmPShsfD0wKT8yMCsoMHxhW2wrNjQ+PjJdKXwwOjE4Nzg0NCk+PjJdKXx8KGM9MHxGZChsLDE4ODY0LDB8YVs0NTg5XSksYVtmPj4yXT1jLGFbKGw9MTg2MzEyKT4+Ml09LTIxNDc0ODM2NDgsYVtsKzQ+PjJdPTAsYVsobD0xODYzMjApPj4yXT0yMTQ3NDgzNjQ3LGFbbCs0Pj4yXT0tMSks''@;'; put 'put ''MHxjfWZ1bmN0aW9uIFVyKGwsYyl7cmV0dXJuIGN8PTAsMHxmdW5jdGlvbiBoMChsLGMpe3JldHVybiAwfChsPShsPTB8ZWkobHw9MCxjfD0wKSk/MHxhW2wrMTY+PjJdOjApfSgwfERyKGx8PTApLGMpfWZ1bmN0aW9uIGVpKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxmPW9lLG9lPW9lKzMy''@;'; put 'put ''fDAsYVsocD1mKSsxNj4+Ml09Y3w9MCxjPTB8bWlbNjMmYVtsPj4yXV0obCxwLDQpLG9lPWYsMHxjfWZ1bmN0aW9uIHQwKGwsYyl7bHw9MDt2YXIgZj0wLHA9MDtyZXR1cm4oY3w9MCk/KChmPTB8ZWkocD0wfERyKGwpLGMpKT8oYz0wfEhsKDB8YVsoYz1wPWYrOHwwKT4+Ml0sMHxhW2MrND4+''@;'; put 'put ''Ml0sMSwwKSxhW3A+PjJdPWMsYVtwKzQ+PjJdPU9uKTooZj0yNCsoMHx6byhjKSl8MCxmPWw/MHxTdChsLGYpOjB8UjAoZiksYVsobD1mKzh8MCk+PjJdPTEsYVtsKzQ+PjJdPTAsJDMobD1mKzIwfDAsYyksYVtmKzE2Pj4yXT1sLG1pWzYzJmFbcD4+Ml1dKHAsZiwxKSksZj0wfGFbZisxNj4+''@;'; put 'put ''Ml0pOmY9MCwwfGZ9ZnVuY3Rpb24gJGkobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MCxBPTA7cmV0dXJuIDAhPSgwfChjfD0wKSkmJjAhPSgwfChwPTB8ZWkoZj0wfERyKGwpLGMpKSk/KCgwfGFbcCsxNj4+Ml0pPT0oMHxjKSYmKEE9MHxIbCgwfGFbKEE9Yz1wKzh8MCk+PjJdLDB8YVtBKzQ+''@;'; put 'put ''PjJdLC0xLC0xKSxtPU9uLGFbYz4+Ml09QSxhW2MrND4+Ml09bSwwPT0oMHxBKSYwPT0oMHxtKXwwPT0oMHxhWyhjPTE4NjMyMCk+PjJdKSYwPT0oMHxhW2MrND4+Ml0pKSYmZnVuY3Rpb24gUUcobCxjLGYpe2N8PTAsZnw9MCxhWzQ2OTg0XT1sfD0wLG1pWzYzJmFbYz4+Ml1dKGMsZiwyKX0o''@;'; put 'put ''bCxmLHApLGw9MCk6bD0tMSwwfGx9ZnVuY3Rpb24gTW8obCl7cmV0dXJuIDB8KGw9KGx8PTApP2FbNDY1NzhdJmFbKGw9bCstMTJ8MCk+PjJdOjApfWZ1bmN0aW9uIE0wKGwpe3ZhciBjPTAsZj0wLHA9MDswfChsfD0wKSYmKGM9YVs0KyhwPWw9bCstMTJ8MCk+PjJdfGFbNCsoZj0xODYzMTIp''@;'; put 'put ''Pj4yXSxhW2w+PjJdPWFbcD4+Ml18YVtmPj4yXSxhW2wrND4+Ml09Yyl9ZnVuY3Rpb24gQ2woKXt2YXIgbD0wLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wOzB8YVs0Njk3MF18fChhWzQ2OTcwXT0xLDB8YVs0Njk3MV18fChhWzQ2OTcxXT0xKSwwfGFbNDY5NjJdfHwoYVs0''@;'; put 'put ''Njk2Ml09YVsxNTY0N10pLDB8YVs0Njk2M118fChhWzQ2OTYzXT1hWzE1Njc5XSksMCE9KDB8KHc9MHxhWzQ2OTcyXSkpJiYwIT0oMHxhW3c+PjJdKXx8KGhsKCksdz0wfEYyKDB8YVs0Njk2Ml0sMTYzODQpLGFbYVs0Njk3Ml0+PjJdPXcpLE0yKCkpO2U6Zm9yKDs7KXt1ZVsoQT0wfGFbNDY5''@;'; put 'put ''NzNdKT4+MF09MHx1ZVsxOTQ4MDVdLGw9KDB8YVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdKSsoMHxhWzQ2OTcxXSl8MCxjPUE7dDpmb3IoOzspe2ZvcihwPWM7Oyl7Yz0wfGFbMTg5MDQrKGJ0W3A+PjBdPDwyKT4+Ml0sMHxUdFs2Mzg1NisobDw8MSk+PjFdJiYoYVs0Njk3NF09bCxhWzQ2''@;'; put 'put ''OTc1XT1wKTtuOmZvcig7Oyl7Zj0yNTUmYztkb3tpZigoMHxsKT09KDB8VHRbNjQyNTIrKChjPWYrKDB8VHRbNjQwNDIrKGw8PDEpPj4xXSl8MCk8PDEpPj4xXSkpYnJlYWsgbjtsPSh3PTB8VHRbNjQ3ODgrKGw8PDEpPj4xXSk8PDE2Pj4xNn13aGlsZSh3PDwxNj4+MTY8PTkyKTtjPTB8YVsx''@;'; put 'put ''OTkyOCsoZjw8Mik+PjJdfWlmKGw9MHxUdFs2NDk5OCsoYzw8MSk+PjFdLGM9cCsxfDAsMjE5PT0oMHxUdFs2NDA0MisobDw8MSk+PjFdKSlicmVhaztwPWN9bjpmb3IoOzspe3c9QTtyOmZvcig7Oyl7KGw9MHxUdFs2Mzg1NisobDw8MSk+PjFdKTw8MTY+PjE2P2w9bDw8MTY+PjE2OihsPTB8''@;'; put 'put ''VHRbNjM4NTYrKGFbNDY5NzRdPDwxKT4+MV0sYz0wfGFbNDY5NzVdKSxhWzQ2OTY0XT1BLGFbNDY5NjVdPShtPWMpLXcsdWVbMTk0ODA1XT0wfHVlW2M+PjBdLHVlW2M+PjBdPTAsYVs0Njk3M109YztpOmZvcig7Oyl7c3dpdGNoKDB8bCl7Y2FzZSAxOms9Mjc7YnJlYWsgZTtjYXNlIDEyOms9''@;'; put 'put ''NTM7YnJlYWsgZTtjYXNlIDEzOms9NTU7YnJlYWsgZTtjYXNlIDE0Oms9NTc7YnJlYWsgZTtjYXNlIDE1Oms9NjE7YnJlYWsgZTtjYXNlIDE2Oms9NjU7YnJlYWsgZTtjYXNlIDE3Oms9Njc7YnJlYWsgZTtjYXNlIDE4Oms9Njk7YnJlYWsgZTtjYXNlIDE5Oms9NzI7YnJlYWsgZTtjYXNlIDIw''@;'; put 'put ''Oms9NzU7YnJlYWsgZTtjYXNlIDIxOms9Nzg7YnJlYWsgZTtjYXNlIDIzOms9ODY7YnJlYWsgZTtjYXNlIDMzOms9MTE4O2JyZWFrIGU7Y2FzZSAzOTpjYXNlIDM4OmNhc2UgMzc6Y2FzZSAzNjpiPTA7YnJlYWsgZTtjYXNlIDI6az0yOTticmVhayB0O2Nhc2UgMzprPTMyO2JyZWFrIHQ7Y2Fz''@;'; put 'put ''ZSA0Oms9MzU7YnJlYWsgdDtjYXNlIDU6az0zNzticmVhayB0O2Nhc2UgNjprPTM5O2JyZWFrIHQ7Y2FzZSA3Oms9NDI7YnJlYWsgdDtjYXNlIDg6az00NDticmVhayB0O2Nhc2UgOTprPTQ3O2JyZWFrIHQ7Y2FzZSAxMDprPTQ5O2JyZWFrIHQ7Y2FzZSAxMTprPTUxO2JyZWFrIHQ7Y2FzZSAy''@;'; put 'put ''MjprPTgzO2JyZWFrIHQ7Y2FzZSAyNDprPTg5O2JyZWFrIHQ7Y2FzZSAyNTprPTkyO2JyZWFrIHQ7Y2FzZSAyNjprPTk1O2JyZWFrIHQ7Y2FzZSAyNzprPTk4O2JyZWFrIHQ7Y2FzZSAyODprPTEwMTticmVhayB0O2Nhc2UgMjk6az0xMDQ7YnJlYWsgdDtjYXNlIDMwOms9MTA5O2JyZWFrIHQ7''@;'; put 'put ''Y2FzZSAzMTprPTExMjticmVhayB0O2Nhc2UgMzI6az0xMTU7YnJlYWsgdDtjYXNlIDM0Oms9MTIxO2JyZWFrIHQ7Y2FzZSAwOmJyZWFrIGk7Y2FzZSAzNTpicmVhaztkZWZhdWx0Oms9MTM0O2JyZWFrIGV9aWYocD0wfGFbNDY5NjRdLHVlW2M+PjBdPTB8dWVbMTk0ODA1XSwwfGFbNDQrKGY9''@;'; put 'put ''MHxhWyhsPTB8YVs0Njk3Ml0pPj4yXSk+PjJdP2w9MHxhWzQ2OTc3XTooYVs0Njk3N109TT0wfGFbZisxNj4+Ml0sYVtmPj4yXT1hWzQ2OTYyXSxhWzQ0KyhmPTB8YVtsPj4yXSk+PjJdPTEsbD1NKSwoMHxhWzQ2OTczXSk+Pj4wPD0oKDB8YVtmKzQ+PjJdKStsfDApPj4+MCl7az0xMjg7YnJl''@;'; put 'put ''YWsgcn1zd2l0Y2goMHx3cigpKXtjYXNlIDA6az0xMzI7YnJlYWsgbjtjYXNlIDI6az0xMzM7YnJlYWsgcjtjYXNlIDE6YnJlYWs7ZGVmYXVsdDpjb250aW51ZSBlfWFbNDY5NzNdPWFbNDY5NjRdLGw9MzYrKCgoMHxhWzQ2OTcxXSktMXwwKS8yfDApfDB9dWVbYz4+MF09MHx1ZVsxOTQ4MDVd''@;'; put 'put ''LGM9MHxhWzQ2OTc1XSxsPTB8YVs0Njk3NF19aWYoMTI4IT0oMHxrKSkxMzMhPSgwfGspfHwoaz0wLGFbNDY5NzNdPWM9KDB8YVs0KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml0pKygwfGFbNDY5NzddKXwwLGw9MHxZbigpLEE9MHxhWzQ2OTY0XSk7ZWxzZSBpZihrPTAsZj1tLXB8MCxhWzQ2OTcz''@;'; put 'put ''XT1jPShwPTB8YVs0Njk2NF0pKyhmKy0xKXwwLG09MHxxbihsPTB8WW4oKSksQT0wfGFbNDY5NjRdLG0pe2s9MTI5O2JyZWFrfX0xMjkhPSgwfGspPzEzMiE9KDB8ayl8fChrPTAsYVs0Njk3M109Yz1tLXAtMSsoMHxhWzQ2OTY0XSl8MCxsPTB8WW4oKSxBPTB8YVs0Njk2NF0pOihrPTAsYVs0''@;'; put 'put ''Njk3M109Yz1wK2Z8MCxsPW0pfXN3aXRjaCgwfGspe2Nhc2UgMjk6Y2FzZSA5NTprPTAsMHwobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8dWVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGFbNDcyNV09MSsoMHxhWzQ3MjVdKTtjb250aW51''@;'; put 'put ''ZSBlO2Nhc2UgMzI6az0wLDB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxhWzQ2OTcxXT0zO2NvbnRpbnVlIGU7Y2FzZSAzNTpjYXNlIDM3OmNhc2UgNDI6Y2FzZSA0NzpjYXNlIDQ5OmNh''@;'; put 'put ''c2UgNTE6aWYoaz0wLCEobD0wfGFbNDY5NjVdKSljb250aW51ZSBlO2FbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8dWVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjE7Y29udGludWUgZTtjYXNlIDM5Oms9MCwwfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJd''@;'; put 'put ''Pj4yXSk+PjJdPTEwPT0oMHx1ZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksYVs0Njk3MV09MTtjb250aW51ZSBlO2Nhc2UgNDQ6az0wLDB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYx''@;'; put 'put ''KSxJcygpO2NvbnRpbnVlIGU7Y2FzZSA4MzprPTAsMHwobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8dWVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGFbNDY5NzFdPTUscTQoKTtjb250aW51ZSBlO2Nhc2UgODk6az0wLDB8KGw9MHxhWzQ2''@;'; put 'put ''OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxQcig5ODc0NCk7Y29udGludWUgZTtjYXNlIDkyOms9MCwwfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHx1ZVso''@;'; put 'put ''MHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksUHIoOTY2MTYpO2NvbnRpbnVlIGU7Y2FzZSA5ODpjYXNlIDExNTprPTAsbD0wfGFbNDY5NjRdLDB8KGM9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlW2wrKGMrLTEpPj4wXSkmMSksUHIobCk7Y29u''@;'; put 'put ''dGludWUgZTtjYXNlIDEwMTprPTAsMHwobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8dWVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGFbNDY5NzFdPTcsYVs0Njk3Nl09MSxxNCgpO2NvbnRpbnVlIGU7Y2FzZSAxMDQ6aWYoaz0wLDB8KGw9''@;'; put 'put ''MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxhWzQ2OTc2XT1NPSgwfGFbNDY5NzZdKS0xfDAsIU0pe2s9MTA4O2JyZWFrIGV9UHIoMHxhWzQ2OTY0XSk7Y29udGludWUgZTtjYXNlIDEwOTprPTAs''@;'; put 'put ''bD0wfGFbNDY5NjRdLDB8KGM9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlW2wrKGMrLTEpPj4wXSkmMSksYVs0Njk3Nl09MSsoMHxhWzQ2OTc2XSksUHIobCk7Y29udGludWUgZTtjYXNlIDExMjprPTAsbD0wfGFbNDY5NjRdLDB8KGM9MHxhWzQ2''@;'; put 'put ''OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlW2wrKGMrLTEpPj4wXSkmMSksUHIobCksYVs0NzI1XT0xKygwfGFbNDcyNV0pO2NvbnRpbnVlIGU7Y2FzZSAxMjE6az0wLGw9MHxhWzQ2OTY0XSwwfChjPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJd''@;'; put 'put ''Pj4yXSk+PjJdPTEwPT0oMHx1ZVtsKyhjKy0xKT4+MF0pJjEpLEN1KGwsYywxLDB8YVs0Njk2M10pO2NvbnRpbnVlIGV9fXN3aXRjaCgwfGspe2Nhc2UgMjc6KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+''@;'; put 'put ''PjBdKSYxKSxiPS0xO2JyZWFrO2Nhc2UgNTM6KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPTI1OTticmVhaztjYXNlIDU1OihsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJd''@;'; put 'put ''Pj4yXSk+PjJdPTEwPT0oMHx1ZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksYj0yNjA7YnJlYWs7Y2FzZSA1NzowfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHx1ZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksMHxhWzQ2OTY5XXx8''@;'; put 'put ''KGFbNDY5NjldPTI1OCksYj0yNTg7YnJlYWs7Y2FzZSA2MTowfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHx1ZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksMHxhWzQ2OTY5XXx8KGFbNDY5NjldPTI2MSksYj0yNjE7YnJlYWs7Y2FzZSA2''@;'; put 'put ''NToobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8dWVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGI9MjYzO2JyZWFrO2Nhc2UgNjc6KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFb''@;'; put 'put ''NDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPTI2MjticmVhaztjYXNlIDY5OjB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPTI2MT09KDB8YVs0Njk2OV0pPzI2NDo0NTticmVhaztjYXNl''@;'; put 'put ''IDcyOjB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPTI1OD09KDB8YVs0Njk2OV0pPzI2NDo0NTticmVhaztjYXNlIDc1Omw9MHxhWzQ2OTY0XSwwfChjPTB8YVs0Njk2NV0pJiYoYVsy''@;'; put 'put ''OCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHx1ZVtsKyhjKy0xKT4+MF0pJjEpLGFbNDY5OTJdPTB8dDAoMHxhWzQ2OTQyXSxsKSxiPTI2NzticmVhaztjYXNlIDc4OjB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfHVlWygwfGFbNDY5''@;'; put 'put ''NjRdKSsobCstMSk+PjBdKSYxKSwwfGZ1bmN0aW9uIGc1KCl7dmFyIGYscCxBLHcsYixsPTAsYz0wLG09MCxrPTA7cmV0dXJuIGI9b2Usb2U9b2UrMjA4MHwwLHc9Yis4fDAscD1iLGw9YisxMDU2fDAsYz1iKzMyfDAsQT1iKzE2fDAsKGY9KGs9MHx1ZVsoMHxhWzQ2OTY1XSktMSsoMHxhWzQ2''@;'; put 'put ''OTY0XSk+PjBdKTw8MjQ+PjI0PT00Nil8KCgyNTUmayktNDh8MCk+Pj4wPDEwP2YmJjAhPSgwfGZ1bmN0aW9uIFkwKCl7dmFyIGMsbD0wO2ZvcihjPTB8YVs0Njk2NF0sbD0oMHxhWzQ2OTY1XSktMnwwOzspe2lmKCgwfGwpPD0tMSl7bD0wO2JyZWFrfWlmKDQ2PT0oMHx1ZVtjK2w+PjBdKSl7''@;'; put 'put ''bD0xO2JyZWFrfWw9bCstMXwwfXJldHVybiAwfGx9KCkpP209NDpsPTA6bT00LDQ9PSgwfG0pJiYoaz0wfGFbNDY5NjZdLG9zKEEsMTAyNCxsKSxjbyhBLDk2ODI3KSxjbyhBLDB8YVs0Njk2NF0pLGFbcD4+Ml09YVs0NzI1XSxhbyhjLDk2ODcxLHApLGNvKEEsYyksY28oQSwwPT0oMHxrKT85''@;'; put 'put ''NjgyMTprKSxjbyhBLDk2ODg4KSwobD0wfGFbKGM9QSs0fDApPj4yXSk+Pj4wPj0oMHxhW0ErOD4+Ml0pPj4+MCYmKEcwKEEsMSksbD0wfGFbYz4+Ml0pLHVlW2w+PjBdPTAsYVtjPj4yXT1sPTB8YVtBPj4yXSxhW3c+PjJdPWwsWHIoMCw5NjkxMyx3KSxrMihBKSxsPTEpLG9lPWIsMHxsfSgp''@;'; put 'put ''JiYoaz0oMHxhWzQ2OTY1XSktMXwwLHVlW2M+PjBdPTB8dWVbMTk0ODA1XSxhWzQ2OTczXT1NPUEra3wwLGFbNDY5NjRdPUEsYVs0Njk2NV09ayx1ZVsxOTQ4MDVdPTB8dWVbTT4+MF0sdWVbTT4+MF09MCxhWzQ2OTczXT1NKSxhWzQ2OTkyXT0wfHQwKDB8YVs0Njk0Ml0sMHxhWzQ2OTY0XSks''@;'; put 'put ''Yj0yNjc7YnJlYWs7Y2FzZSA4NjowfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHx1ZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksYVs0Njk3MV09MSxmdW5jdGlvbiBzcigpe2FbNDY5OTJdPTB8dDAoMHxhWzQ2OTQyXSwwfGFbNDY5Nzhd''@;'; put 'put ''KSx1ZVthWzQ2OTc4XT4+MF09MH0oKSxiPTI2ODticmVhaztjYXNlIDEwODphWzQ2OTcxXT0xLGZ1bmN0aW9uIGhyKCl7YVs0Njk5Ml09MHxmdW5jdGlvbiBnaShsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtyZXR1cm4oY3w9MCk/KChmPTB8ZWkocD0wfERyKGwpLGMpKT8obT0wfEhs''@;'; put 'put ''KDB8YVsobT1BPWYrOHwwKT4+Ml0sMHxhW20rND4+Ml0sMSwwKSxhW0E+PjJdPW0sYVtBKzQ+PjJdPU9uKTooZj0yNCsoMHx6byhjKSl8MCxmPWw/MHxTdChsLGYpOjB8UjAoZiksbT0wfGFbNCsoQT0xODYzMTIpPj4yXSxhWyhsPWYrOHwwKT4+Ml09MXxhW0E+PjJdLGFbbCs0Pj4yXT1tLCQz''@;'; put 'put ''KGw9ZisyMHwwLGMpLGFbZisxNj4+Ml09bCxtaVs2MyZhW3A+PjJdXShwLGYsMSkpLGY9MHxhW2YrMTY+PjJdKTpmPTAsMHxmfSgwfGFbNDY5NDJdLDB8YVs0Njk3OF0pLHVlW2FbNDY5NzhdPj4wXT0wfSgpLGI9MjY4O2JyZWFrO2Nhc2UgMTE4Omw9MHxhWzQ2OTY0XSwwfChjPTB8YVs0Njk2''@;'; put 'put ''NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHx1ZVtsKyhjKy0xKT4+MF0pJjEpLGI9MHx1ZVtsPj4wXTticmVhaztjYXNlIDEzNDpacig5NjYxOSl9cmV0dXJuIDB8Yn1mdW5jdGlvbiBobCgpe3ZhciBsPTAsYz0wLGY9MDtjPTB8YVs0Njk3Ml07ZG97aWYoYyl7aWYo''@;'; put 'put ''MD49KChsPTB8YVs0Njk4M10pLTF8MCk+Pj4wKXtpZihjPTB8ZmkoYywobD1sKzh8MCk8PDIpLGFbNDY5NzJdPWMsYyl7YVsoZj1jKyhhWzQ2OTgzXTw8Mil8MCk+PjJdPTAsYVtmKzQ+PjJdPTAsYVtmKzg+PjJdPTAsYVtmKzEyPj4yXT0wLGFbZisxNj4+Ml09MCxhW2YrMjA+PjJdPTAsYVtm''@;'; put 'put ''KzI0Pj4yXT0wLGFbZisyOD4+Ml09MCxmPTk7YnJlYWt9WnIoOTY5NzcpfX1lbHNle2lmKGw9MHx0YSg0KSxhWzQ2OTcyXT1sLGwpe2FbbD4+Ml09MCxsPTEsZj05O2JyZWFrfVpyKDk2OTc3KX19d2hpbGUoMCk7OT09KDB8ZikmJihhWzQ2OTgzXT1sKX1mdW5jdGlvbiBGMihsLGMpe3ZhciBm''@;'; put 'put ''O3JldHVybiBsfD0wLGN8PTAsKGY9MHx0YSg0OCkpfHxacig5NjkzMiksYVtmKzEyPj4yXT1jLGM9MHx0YShjKzJ8MCksYVtmKzQ+PjJdPWMsYz8oYVtmKzIwPj4yXT0xLGMwKGYsbCksMHxmKTooWnIoOTY5MzIpLDApfWZ1bmN0aW9uIE0yKCl7dmFyIGMsbD0wO2FbNDY5NzddPWFbMTYrKGw9''@;'; put 'put ''MHxhWyhjPTB8YVs0Njk3Ml0pPj4yXSk+PjJdLGFbNDY5NzNdPWw9MHxhW2wrOD4+Ml0sYVs0Njk2NF09bCxhWzQ2OTYyXT1hW2FbYz4+Ml0+PjJdLHVlWzE5NDgwNV09MHx1ZVtsPj4wXX1mdW5jdGlvbiBJcygpe3ZhciBtLEEsbD0wLGM9MCxmPTAscD0wO2lmKG09b2Usb2U9b2UrMzJ8MCxw''@;'; put 'put ''PW0sYz1tKzE2fDAsZj1tKzEyfDAsbD0wPT0oMHxuMihsPTErKEE9MHxhWzQ2OTY0XSl8MCw5NjkxNiw0KSk/QSs1fDA6bCxhW3A+PjJdPWYsYVtwKzQ+PjJdPW0rMjAsYVtwKzg+PjJdPWMsKDB8KHA9MHwkYShsLDk2OTIxLHApKSk+MCYmKGFbNDcyNV09KDB8YVtmPj4yXSktMSwxIT0oMHxw''@;'; put 'put ''KSkpe2w9Yz1sKygwfGFbYz4+Ml0pfDA7ZTpmb3IoOzspe3N3aXRjaCgoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6Y2FzZSAzNDpicmVhayBlfWw9bCsxfDB9KDB8bCkhPSgwfGMpJmY8PDI0Pj4yND09MzQmJih1ZVtsPj4wXT0wLGZ1bmN0aW9uIEkwKGwsYyl7bHw9MDt2YXIgZj0w''@;'; put 'put ''OygwfChmPTB8YVs0Njk4MV0pKTwoMHwoY3w9MCkpPyhmPWY/MHxaYSgwfGFbNDY5ODJdLGMrMXwwKTowfFIwKGMrMXwwKSxhWzQ2OTgyXT1mLGFbNDY5ODFdPWMpOmY9MHxhWzQ2OTgyXSwkMyhmLGwpLGFbNDY5NjZdPWFbNDY5ODJdfShjLGwtY3wwKSl9b2U9bX1mdW5jdGlvbiBxNCgpe3Zh''@;'; put 'put ''ciBsPTA7KGw9MHxhWzQ2OTc4XSl8fChsPTB8UjAoMTAyNCksYVs0Njk3OF09bCxhWzQ2OTgwXT1sKzEwMjQpLGFbNDY5NzldPWwsdWVbbD4+MF09MH1mdW5jdGlvbiBQcihsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDsoZj0wfGFbNDY5NzldKT4+PjA+KGM9MHxhWzQ2OTc4''@;'; put 'put ''XSk+Pj4wJiYoZj1mKy0xfDAscD0zKTtlOmZvcig7Oyl7Mz09KDB8cCkmJihhWzQ2OTc5XT1mKSxtPXA9MHxhWzQ2OTgwXTtkb3tpZihBPWwsbD1sKzF8MCx3PWYsZj1mKzF8MCx1ZVt3Pj4wXT1BPTB8dWVbQT4+MF0sIShBPDwyND4+MjQpKWJyZWFrIGV9d2hpbGUoZj4+PjA8cD4+PjApO2Fb''@;'; put 'put ''NDY5NzldPWYsYz0wfFphKGMsdz1tLShwPWMpPDwxKSxhWzQ2OTc4XT1jLGFbNDY5ODBdPWMrdyxmPWMrKGYtcCl8MCxwPTN9YVs0Njk3OV09Zn1mdW5jdGlvbiBZbigpe3ZhciBtLGw9MCxjPTAsZj0wLHA9MDtmb3IobT0wfGFbNDY5NzNdLHA9MHxhWzQ2OTY0XSxjPSgwfGFbMjgrKDB8YVth''@;'; put 'put ''WzQ2OTcyXT4+Ml0pPj4yXSkrKDB8YVs0Njk3MV0pfDA7IShwPj4+MD49bT4+PjApOyl7bD0obD0wfHVlW3A+PjBdKTw8MjQ+PjI0PzB8YVsxODkwNCsoKDI1NSZsKTw8Mik+PjJdOjEsMHxUdFs2Mzg1NisoYzw8MSk+PjFdJiYoYVs0Njk3NF09YyxhWzQ2OTc1XT1wKTtlOmZvcig7Oyl7Zj0y''@;'; put 'put ''NTUmbDtkb3tpZigoMHxjKT09KDB8VHRbNjQyNTIrKChsPWYrKDB8VHRbNjQwNDIrKGM8PDEpPj4xXSl8MCk8PDEpPj4xXSkpYnJlYWsgZTtjPShsPTB8VHRbNjQ3ODgrKGM8PDEpPj4xXSk8PDE2Pj4xNn13aGlsZShsPDwxNj4+MTY8PTkyKTtsPTB8YVsxOTkyOCsoZjw8Mik+PjJdfXA9cCsx''@;'; put 'put ''fDAsYz0wfFR0WzY0OTk4KyhsPDwxKT4+MV19cmV0dXJuIDB8Y31mdW5jdGlvbiBxbihsKXt2YXIgYz0wO2ZvcigwfFR0WzYzODU2KygobHw9MCk8PDEpPj4xXSYmKGM9MHxhWzQ2OTczXSxhWzQ2OTc0XT1sLGFbNDY5NzVdPWMpOygwfGwpIT0oMHxUdFs2NDI1MisoKGM9MSsoMHxUdFs2NDA0''@;'; put 'put ''MisobDw8MSk+PjFdKXwwKTw8MSk+PjFdKTspbD0wfFR0WzY0Nzg4KyhsPDwxKT4+MV07cmV0dXJuIDB8KChjPTB8VHRbNjQ5OTgrKGM8PDEpPj4xXSk8PDE2Pj4xNj09OTI/MDpjPDwxNj4+MTYpfWZ1bmN0aW9uIHdyKCl7dmFyIGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0w''@;'; put 'put ''LE09MCxEPTAsUj0wLEc9MDtpZihwPTB8YVs0Njk2NF0saz1NPTB8YVs0Njk3M10sTT4+PjA+KCh3PTB8YVs0KyhtPTB8YVsoYj0wfGFbNDY5NzJdKT4+Ml0pPj4yXSkrKDErKDB8YVs0Njk3N10pKXwwKT4+PjAmJlpyKDk2Njc0KSxBPWstcHwwLDB8YVttKzQwPj4yXSl7Zm9yKE09QSstMXww''@;'; put 'put ''LEE9dyxtPTA7ISgoMHxtKT49KDB8TSkpOyl1ZVtBPj4wXT0wfHVlW3A+PjBdLEE9QSsxfDAscD1wKzF8MCxtPW0rMXwwO3A9MHxhW2I+PjJdO2Rve2lmKDI9PSgwfGFbcCs0ND4+Ml0pKWFbNDY5NzddPTAsYVtwKzE2Pj4yXT0wLGY9cCxEPTE3O2Vsc2V7Zm9yKDs7KXtpZigwfChtPShBPTB8''@;'; put 'put ''YVsodz1wKzEyfDApPj4yXSktTS0xfDApKXtEPTE2O2JyZWFrfWlmKGI9MHxhWyhtPXArNHwwKT4+Ml0sISgwfGFbcCsyMD4+Ml0pKXtEPTEyO2JyZWFrfWlmKGFbdz4+Ml09cD0wPT0oMHwocD1BPDwxKSk/KEE+Pj4zKStBfDA6cCxwPTB8ZmkoYixwKzJ8MCksYVttPj4yXT1wLCFwKWJyZWFr''@;'; put 'put ''O2FbNDY5NzNdPWI9cCsoay1iKXwwLHA9MHxhW2FbNDY5NzJdPj4yXSxrPWJ9aWYoMTI9PSgwfEQpKWFbbT4+Ml09MDtlbHNlIGlmKDE2PT0oMHxEKSl7aWYoYz0wfG1pWzYzJmFbYVs4KygwfGFbNDY5NjddKT4+Ml0+PjJdXSgwfGFbNDY5NjhdLCgwfGFbcCs0Pj4yXSkrTXwwLG0+Pj4wPDgx''@;'; put 'put ''OTI/bTo4MTkyKSxmPTB8YVthWzQ2OTcyXT4+Ml0sYVs0Njk3N109YyxhW2YrMTY+PjJdPWMsYyl7bD0wO2JyZWFrfUQ9MTc7YnJlYWt9WnIoOTY3MzApfX13aGlsZSgwKTtkb3tpZigxNz09KDB8RCkpe2lmKE0pe2FbZis0ND4+Ml09MixsPTIsYz0wO2JyZWFrfU9pKDB8YVs0Njk2Ml0pLGw9''@;'; put 'put ''MSxjPTB8YVs0Njk3N10sZj0wfGFbYVs0Njk3Ml0+PjJdO2JyZWFrfX13aGlsZSgwKTtwPWMrTXwwO2Rve2lmKHA+Pj4wPigwfGFbZisxMj4+Ml0pPj4+MCl7aWYoRD0wfGZpKDB8YVtmKzQ+PjJdLHArKGM+Pj4xKXwwKSxhWzQrKDB8YVsoYz0wfGFbNDY5NzJdKT4+Ml0pPj4yXT1ELGM9MHxh''@;'; put 'put ''WzQrKDB8YVtjPj4yXSk+PjJdKXtSPTB8YVs0Njk3N10sRz1jO2JyZWFrfVpyKDk2Nzc0KX1lbHNlIFI9YyxHPTB8YVtmKzQ+PjJdfXdoaWxlKDApO2FbNDY5NzddPVI9UitNfDAsdWVbRytSPj4wXT0wLHVlWzErKDB8YVs0Njk3N10pKygwfGFbNCsoMHxhWyhHPTB8YVs0Njk3Ml0pPj4yXSk+''@;'; put 'put ''PjJdKT4+MF09MCxhWzQ2OTY0XT1hWzQrKDB8YVtHPj4yXSk+PjJdfWVsc2UgbD0xPT0oMHxBKT8xOjI7cmV0dXJuIDB8bH1mdW5jdGlvbiBacihsKXt2YXIgYyxmO2M9b2Usb2U9b2UrMTZ8MCxmPTB8YVsxNTcxMl0sYVtjPj4yXT1sfD0wLFQwKGYsOTY2NzAsYyksdXUoMil9ZnVuY3Rpb24g''@;'; put 'put ''ZmkobCxjKXtyZXR1cm4gMHxaYShsfD0wLGN8PTApfWZ1bmN0aW9uIE9pKGwpe2x8PTA7dmFyIGM9MCxmPTA7MCE9KDB8KGY9MHxhWzQ2OTcyXSkpJiYwIT0oMHwoYz0wfGFbZj4+Ml0pKXx8KGhsKCksYz0wfEYyKDB8YVs0Njk2Ml0sMTYzODQpLGFbKGY9MHxhWzQ2OTcyXSk+PjJdPWMsZnx8''@;'; put 'put ''KGM9MCkpLGMwKGMsbCksTTIoKX1mdW5jdGlvbiBjMChsLGMpe3ZhciBmO2N8PTAsZj0wfGFbNDc2NDNdLFdpKGx8PTApLGFbbD4+Ml09YyxhW2wrNDA+PjJdPTEsKDB8KGM9KGM9MHxhWzQ2OTcyXSk/MHxhW2M+PjJdOjApKSE9KDB8bCkmJihhW2wrMzI+PjJdPTEsYVtsKzM2Pj4yXT0wKSxh''@;'; put 'put ''W2wrMjQ+PjJdPTAsYVs0NzY0M109Zn1mdW5jdGlvbiBXaShsKXt2YXIgYz0wOzB8KGx8PTApJiYoYVtsKzE2Pj4yXT0wLHVlW2FbKGM9bCs0fDApPj4yXT4+MF09MCx1ZVsxKygwfGFbYz4+Ml0pPj4wXT0wLGFbbCs4Pj4yXT1hW2M+PjJdLGFbbCsyOD4+Ml09MSxhW2wrNDQ+PjJdPTAsKDB8''@;'; put 'put ''KGM9KGM9MHxhWzQ2OTcyXSk/MHxhW2M+PjJdOjApKT09KDB8bCkmJk0yKCkpfWZ1bmN0aW9uIHRhKGwpe3JldHVybiAwfFIwKGx8PTApfWZ1bmN0aW9uIFpvKGwpe2x8PTA7dmFyIHAsbSxBLGIsayxNLGM9MCxmPTAsdz0wO009b2Usb2U9b2UrMjExMnwwLGs9TSszMnwwLHc9TSsyNHwwLEE9''@;'; put 'put ''TSsxNnwwLG09TSs4fDAscD1NLGM9TSs1NnwwLG9zKGI9TSs0MHwwLDEwMjQsTSsxMDgwfDApLDB8KGY9MHxhWzQ2OTY2XSkmJihjbyhiLGYpLGNvKGIsOTcwMjcpKSxjbyhiLGwpLGFbcD4+Ml09YVs0NzI1XSxhbyhjLDk3MDMwLHApLGNvKGIsYyk7ZTpkb3tpZigwfHVlW2FbNDY5NjRdPj4w''@;'; put 'put ''XSljbyhiLDk3MDQyKSxjbyhiLDB8YVs0Njk2NF0pLGM9Yis0fDAsbD0wfGFbYz4+Ml0sbD4+PjA+PSgwfGFbYis4Pj4yXSk+Pj4wJiYoRzAoYiwxKSxsPTB8YVtjPj4yXSksYVtjPj4yXT1sKzEsdWVbbD4+MF09Mzk7ZWxzZSBzd2l0Y2goMHwoKDB8YVs0Njk3MV0pLTF8MCkvMil7Y2FzZSAy''@;'; put 'put ''OmlmKGFbbT4+Ml09MTYzODQsYW8oYyw5NzA1MCxtKSxjbyhiLGMpLCEoMHx1ZVsobD0wfGFbNDY5NzhdKT4+MF0pKWJyZWFrIGU7dz0wfHpvKGwpLGNvKGIsOTcxMTIpLGw9MHxhWzQ2OTc4XSwoMHx3KT44MCYmKHVlW2wrODA+PjBdPTApLGNvKGIsbCk7YnJlYWsgZTtjYXNlIDM6aWYoYVtB''@;'; put 'put ''Pj4yXT0xNjM4NCxhbyhjLDk3MTMxLEEpLGNvKGIsYyksISgwfHVlWyhsPTB8YVs0Njk3OF0pPj4wXSkpYnJlYWsgZTt3PTB8em8obCksY28oYiw5NzE5OSksbD0wfGFbNDY5NzhdLCgwfHcpPjgwJiYodWVbbCs4MD4+MF09MCksY28oYixsKTticmVhayBlO2Nhc2UgMTphW3c+PjJdPTE2Mzg0''@;'; put 'put ''LGFvKGMsOTcyMTgsdyksY28oYixjKTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCk7KGw9MHxhWyhmPWIrNHwwKT4+Ml0pPj4+MD49KDB8YVsoYz1iKzh8MCk+PjJdKT4+PjAmJihHMChiLDEpLGw9MHxhW2Y+PjJdKSxhW2Y+PjJdPWwrMSx1ZVtsPj4wXT0xMCwobD0wfGFbZj4+''@;'; put 'put ''Ml0pPj4+MD49KDB8YVtjPj4yXSk+Pj4wJiYoRzAoYiwxKSxsPTB8YVtmPj4yXSksdWVbbD4+MF09MCxhW2Y+PjJdPXc9MHxhW2I+PjJdLGFbaz4+Ml09dyxYcigxLDk2OTEzLGspLGsyKGIpLG9lPU19ZnVuY3Rpb24geGMobCxjLGYpe3ZhciBwLG0sQTtyZXR1cm4gY3w9MCxmfD0wLHA9b2Us''@;'; put 'put ''b2U9b2UrODB8MCxtPXAsZnVuY3Rpb24gWW1lKGwsYyxmKXtjfD0wLDB8KGZ8PTApJiYoMHx1NyhjLDAsMCkpIT0oMHxmKSYmdTcoYyxmLDApfSgwLDB8YVsoQT01MisobHw9MCl8MCk+PjJdLDE4NTQ4KSxhWyhsPW0rOHwwKT4+Ml09YyxhW2wrND4+Ml09ZixmPTB8bWlbNjMmYVsoZj0wfGFb''@;'; put 'put ''QT4+Ml0pPj4yXV0oZixtLDQpLG9lPXAsMHxmfWZ1bmN0aW9uIHlzKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0sQSxwPTA7cmV0dXJuIEE9b2Usb2U9b2UrMTZ8MCxtPUEsMCE9KDB8KGN8PTApKSYmMCE9KDB8JDQobCwwLGMsbSwwKSkmJjAhPSgwfChwPTB8eGMobCwwfGFbKHA9bSk+PjJdLDB8''@;'; put 'put ''YVtwKzQ+PjJdKSkpfHwoMCE9KDB8ZikmJjAhPSgwfCQ0KGwsMCxjLG0sMSkpPyhwPTB8ZnVuY3Rpb24gZHUobCxjLGYpe3ZhciBwPTAsbT0wLEE9MDtyZXR1cm4ocD0wfHhjKGx8PTAsY3w9MCxmfD0wKSl8fChwPTB8U3QobCw3MiksYVtwKzY0Pj4yXT1hW2wrNjQ+PjJdLGFbKG09cCsyNHww''@;'; put 'put ''KT4+Ml09QT0wfGFbbCsyND4+Ml0sdWVbbT4+MF09MjU1JkEmLTksYVtwKzU2Pj4yXT1sLGFbcCs2MD4+Ml09YVtsKzYwPj4yXSxhWyhsPXArOHwwKT4+Ml09YyxhW2wrND4+Ml09Zix1QyhwKSksMHxwfShsLDB8YVsocD1tKT4+Ml0sMHxhW3ArND4+Ml0pLFI2KGwsMCxwKSk6cD0wKSxvZT1B''@;'; put 'put ''LDB8cH1mdW5jdGlvbiB3cyhsKXtyZXR1cm4gMHxtaVs2MyZhWyhsPTB8YVs1MisobHw9MCk+PjJdKT4+Ml1dKGwsMCwxMjgpfWZ1bmN0aW9uIGJzKGwpe3ZhciBjPTA7cmV0dXJuIDB8KGw9KGM9MHxTMShsfD0wKSk/MHxtaVs2MyZhWyhjPTB8YVtjKzUyPj4yXSk+PjJdXShjLGwsOCk6MCl9''@;'; put 'put ''ZnVuY3Rpb24gUzEobCl7cmV0dXJuIDB8YVs1NisobHw9MCk+PjJdfWZ1bmN0aW9uIHA3KGwsYyl7cmV0dXJuIDB8bWlbNjMmYVsobD0wfGFbNTIrKGx8PTApPj4yXSk+PjJdXShsLGN8PTAsMil9ZnVuY3Rpb24gRmQobCxjLGYpe3ZhciBwLG07cmV0dXJuIGx8PTAsZnw9MCxtPTB8YVsocD0y''@;'; put 'put ''OCsoY3w9MCl8MCk+PjJdLGFbcD4+Ml09NyxhWzQ2OTg0XT1sLGY9MHxBcyhjLGYpLGFbcD4+Ml09bSxhWzQ2OTg0XT0wLDB8Zn1mdW5jdGlvbiBtNShsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAsZj0yOCsoMHx1NyhjfD0wLDAsMCkpfDAscD0wfGFbZj4+Ml0sYVtmPj4yXT03LGFbNDY5ODRd''@;'; put 'put ''PWwsMHxpcyhjKT9sPTE6KGFbZj4+Ml09cCxhWzQ2OTg0XT0wLGw9MCksMHxsfWZ1bmN0aW9uIFhuZShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDtlOmRve2lmKDAhPSgwfGwpJiYwIT0oMHx1ZVtsPj4wXSkp''@;'; put 'put ''e3VlW2M+PjBdPTM0LHBlPTAsbT0xJigoKE09MHx1ZVtsPj4wXSktNDUmMjU1KTwyfCgoMjU1Jk0pLTQ4fDApPj4+MDwxMCksQT0wLHc9MCxiPTAsZj1jKzF8MCxwPWwrMXwwO3Q6Zm9yKDs7KXtmb3Ioaz1mOzspe2lmKCEoTTw8MjQ+PjI0KSlicmVhayB0O2Y9MjU1Jk07bjpkb3tpZihNPDwy''@;'; put 'put ''ND4+MjQ9PTM0KXVlW2s+PjBdPTkyLEQ9bSxSPTEsaz1rKzF8MDtlbHNle2lmKCFtKXtEPTAsUj0oUj1NPDwyND4+MjQ+LTEmTTw8MjQ+PjI0IT05NSYwPT0oMHxwdihmKSkpPzE6QTticmVha31zd2l0Y2goTTw8MjQ+PjI0KXtjYXNlIDQ1OkQ9KFI9MD09KDB8YikpP206MCxSPVI/QToxO2Jy''@;'; put 'put ''ZWFrIG47Y2FzZSA0NjpEPShSPTA9PSgwfHcpKT9tOjAsUj1SP0E6MSx3PXcrMXwwO2JyZWFrIG47ZGVmYXVsdDpEPShSPShmKy00OHwwKT4+PjA8MTApP206MCxSPVI/QToxO2JyZWFrIG59fX13aGlsZSgwKTtpZihmPWsrMXwwLHVlW2s+PjBdPU0sSz1wKzF8MCxHPTB8dWVbcD4+MF0sYj1i''@;'; put 'put ''KzF8MCxwPTB8YVs1MDMxXSl7aWYobT0yNTUmRyxwZSYoQT1HPDwyND4+MjQhPTApJiYhKE08PDI0Pj4yND09OTJ8TTw8MjQ+PjI0Pi0xJihNKy00NSYyNTUpPjEmMD09KDB8cHYoTTw8MjQ+PjI0KSleMSkmJiEoRzw8MjQ+PjI0Pi0xJihHKy00NSYyNTUpPjEmMD09KDB8cHYobSkpKSlicmVh''@;'; put 'put ''aztpZigoMHxiKTwoMHxwKXwxXkEpbT1ELEE9UixrPWYscD1LLE09RztlbHNle2lmKE08PDI0Pj4yND09OTJ8TTw8MjQ+PjI0Pi0xJjA9PSgwfHB2KE08PDI0Pj4yNCkpJihNKy00NSYyNTUpPjFeMSl7cGU9MSxtPUQsQT1SLE09RyxwPUs7Y29udGludWUgdH1pZihHPDwyND4+MjQ+LTEmKEcr''@;'; put 'put ''LTQ1JjI1NSk+MSYwPT0oMHxwdihtKSkpe3BlPTEsbT1ELEE9UixNPUcscD1LO2NvbnRpbnVlIHR9dWVbZj4+MF09OTIsdWVbaysyPj4wXT0xMCxtPUQsQT0xLGI9MCxrPWsrM3wwLHA9SyxNPUd9fWVsc2UgbT1ELEE9UixrPWYscD1LLE09R311ZVtmPj4wXT05Mix1ZVtrKzI+PjBdPTEwLHBl''@;'; put 'put ''PTAsbT1ELEE9MSxiPTAsTT1HLGY9ayszfDAscD1LfWlmKHVlW2s+PjBdPTM0LHVlW2srMT4+MF09MCxBKWw9YztlbHNle2lmKDE9PSgwfGIpJiYoKDB8dWVbbD4+MF0pLTQ1JjI1NSk8Mil7bD1jO2JyZWFrfWZvcihmPTIwMTI4Ozspe2lmKCEocD0wfGFbZj4+Ml0pKWJyZWFrIGU7aWYoISgw''@;'; put 'put ''fEEwKHAsbCkpKXtsPWM7YnJlYWt9Zj1mKzR8MH19fWVsc2UgbD05NzMwOX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHBDKGwpe3JldHVybiAwfGZ1bmN0aW9uIFVtZShsLGMpe3JldHVybiBjfD0wLDB8TW8obHw9MCk/ZnVuY3Rpb24gUW1lKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxt''@;'; put 'put ''PTA7Zm9yKHVlWyhjfD0wKT4+MF09NjAscD1jO2Y9cCsxfDAsKG09MHx1ZVtsPj4wXSk8PDI0Pj4yNDspdWVbZj4+MF09bSxsPWwrMXwwLHA9Zjt1ZVtmPj4wXT02Mix1ZVtwKzI+PjBdPTB9KGwsYyk6Yz0wfFhuZShsLGMpLDB8Y30obHw9MCwwfEtuZShsKSl9ZnVuY3Rpb24gS25lKGwpe3Zh''@;'; put 'put ''ciBjPTA7cmV0dXJuIGM9MisoKDB8em8obHw9MCkpPDwxKXwwLGw9MHxhWzQ2OTg2XSwoYz1jPj4+MD4xMDI0P2M6MTAyNCk+Pj4wPigwfGFbNDY5ODVdKT4+PjAmJihsPWw/MHxaYShsLGMpOjB8UjAoYyksYVs0Njk4Nl09bCxhWzQ2OTg1XT1jKSwwfGx9ZnVuY3Rpb24gJEEobCl7dmFyIGM9''@;'; put 'put ''MCxmPTAscD0wLG09MCxBPTAsdz0wOzAhPSgwfChBPTB8JHIobHw9MCkpKSYmMzchPSgwfHVlW0E+PjBdKT9jPTA6Zj0zO2U6ZG97aWYoMz09KDB8Zikpe2M9MHxhYyhsKTt0OmRve2lmKDB8YyYmKHA9MHxhYygwfFMxKGwpKSwwfHApKWZvcihBPTB8UHUoMHxhWzgrKDB8YWMoMHxoaShsKSkp''@;'; put 'put ''Pj4yXSksbT1jKzEyfDAsZj1wKzEyfDAsYz0wOzspe2lmKCgwfGMpPj0oMHxBKSlicmVhayB0O2lmKDB8KHA9MHxhWygwfGFbbT4+Ml0pKyhjPDwyKT4+Ml0pJiYwfCh3PTB8YVsoMHxhW2Y+PjJdKSsoYzw8Mik+PjJdKSYmMHxaaShwLHcpKXtjPTA7YnJlYWsgZX1jPWMrMXwwfX13aGlsZSgw''@;'; put 'put ''KTtpZihjPTB8VmgobCwwKSl7aWYoISgoMHxQdSgwfGFbYys4Pj4yXSkpPjApKXJldHVybigwfFB1KDB8YVtjKzEyPj4yXSkpPDF8MDtjPTB9ZWxzZSBjPTF9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gJG5lKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHA9MDtyZXR1cm4gYVs0Njk4N109''@;'; put 'put ''MCwwfChmPTB8TGkobCw5NzMxOSkpJiYoKDB8dWVbZj4+MF0pLTQ4fDApPj4+MDwxMCYmMD09KDB8KHA9MHxQTChmLDAsMTApKSl8KDB8cCk+NTkmJihhWzUwMzFdPXApLGdDKGwsMSksLTEhPSgwfG1DKGwsYywxKSkmJi0xIT0oMHxxQShsLGMpKSYmLTEhPSgwfGZGKGwsYykpPyhhWzUwMzFd''@;'; put 'put ''PTEyOCxsPTB8cGFbNjMmYVs4KygwfGFbOCsoMHxhW2wrNjQ+PjJdKT4+Ml0pPj4yXV0oYykpOmw9LTEsMHxsfWZ1bmN0aW9uIGdDKGwsYyl7Y3w9MDt2YXIgZj0wO2ZvcihhWyhsfD0wKT4+Ml09LTkmYVtsPj4yXSxmPTB8d3MobCk7ZjspZ0MoZiwwKSxmPTB8YnMoZik7ZTpkb3tpZigwfGMp''@;'; put 'put ''Zm9yKGM9MHxMdChsKTs7KXtpZighYylicmVhayBlO2ZvcihhW2M+PjJdPS05JmFbYz4+Ml0sZj0wfHkwKGwsYyk7ZjspYVtmPj4yXT0tOSZhW2Y+PjJdLGY9MHxrMChsLGYpO2M9MHx6dChsLGMpfX13aGlsZSgwKX1mdW5jdGlvbiBtQyhsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTAsbT0wLEE9''@;'; put 'put ''MCx3PTAsYj0wLGs9MDswPT0oMHwoZnw9MCkpJiYwIT0oMHxTMShsKSk/KHc9MCxtPTE5NTA1OSxrPTEwOTUxNCk6KGs9MD09KDEmdWVbbCsyND4+MF0pPzE5NTA1OTo5NzM2MyxtPTA9PSgwfFhBKGwpKSxhWzQ2OTg4XT0wfHNpKGwsMiwxMTE0NTUsMCksYVs0Njk4OV09MHxzaShsLDIsMTEx''@;'; put 'put ''NDY0LDApLHc9MSxtPW0/MTk1MDU5Ojk3MzY2KSwwIT0oMHwocD0wfCRyKGwpKSkmJjM3IT0oMHx1ZVtwPj4wXSk/KEE9MSxiPTEwMjYwNCk6KEE9MCxiPTE5NTA1OSxwPTE5NTA1OSk7ZG97aWYoLTEhPSgwfHY1KGwsYykpJiYtMSE9KDB8dTIobCxjLG0pKSl7aWYobT0wPT0oMHxBKSxBfHd8''@;'; put 'put ''MCl7aWYoLTE9PSgwfHUyKGwsYyxrKSkpe3A9LTE7YnJlYWt9aWYoLTE9PSgwfHUyKGwsYywxMDI1OTcpKSl7cD0tMTticmVha319aWYoIW0mJi0xPT0oMHxnNyhsLGMscCkpKXtwPS0xO2JyZWFrfS0xIT0oMHx1MihsLGMsYikpJiYtMSE9KDB8dTIobCxjLDk3Mzc0KSkmJihhWzQ2OTg3XT0x''@;'; put 'put ''KygwfGFbNDY5ODddKSwtMSE9KDB8S21lKGwsYyxmKSkpPyhhW2w+PjJdPTh8YVtsPj4yXSxwPTApOnA9LTF9ZWxzZSBwPS0xfXdoaWxlKDApO3JldHVybiAwfHB9ZnVuY3Rpb24gcUEobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7ZTpkb3tpZigt''@;'; put 'put ''MT09KDB8aEYobCxjKSkpZj0tMTtlbHNlIGZvcihNPTB8VmgoMHxoaShsKSwwKSxiPTA9PSgwfE0pLGs9TSsxMnwwLE09TSs4fDAsdz0wfEx0KGwpOzspe2lmKCF3KXtmPTA7YnJlYWsgZX1pZigwfEUyKGwsdywoMHxhW3c+PjJdKT4+PjQsMCkmJi0xPT0oMHxkRih3LGMsZj1iPzA6MHxhW00+''@;'; put 'put ''PjJdKSkpe2Y9LTE7YnJlYWsgZX1mb3IoQT0wfHkwKGwsdyksZj13O0E7KXtpZihtPUErLTQ4fDAsKDB8ZikhPSgwfChwPTB8YVsoMj09KDMmYVtBPj4yXXwwKT9BOm0pKzQwPj4yXSkpJiYwIT0oMHxFMihsLHAsKDB8YVt3Pj4yXSk+Pj40LDApKSl7aWYoLTE9PSgwfGRGKDB8YVsoMj09KDMm''@;'; put 'put ''YVtBPj4yXXwwKT9BOm0pKzQwPj4yXSxjLGY9Yj8wOjB8YVtNPj4yXSkpKXtmPS0xO2JyZWFrIGV9Zj0wfGFbKDI9PSgzJmFbQT4+Ml18MCk/QTptKSs0MD4+Ml19aWYoMHxYbWUobCxBKSYmLTE9PSgwfEpHKEEsYyxwPWI/MDowfGFbaz4+Ml0pKSl7Zj0tMTticmVhayBlfUE9MHxrMChsLEEp''@;'; put 'put ''fXc9MHx6dChsLHcpfX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIGZGKGwsYyl7cmV0dXJuIGx8PTAsY3w9MCxhWzQ2OTg3XT0oMHxhWzQ2OTg3XSktMSwwfCgtMT09KDB8djUobCxjKSk/LTE6KC0xPT0oMHx1MihsLGMsMTExMDA4KSkpPDwzMT4+MzEpfWZ1bmN0aW9uIHY1KGwsYyl7''@;'; put 'put ''bHw9MCxjfD0wO3ZhciBmPTA7Zm9yKGY9MHxhWzQ2OTg3XTs7KXtpZigoMHxmKTw9MCl7Zj0wO2JyZWFrfWlmKC0xPT0oMHx1MihsLGMsMTUzNTk3KSkpe2Y9LTE7YnJlYWt9Zj1mKy0xfDB9cmV0dXJuIDB8Zn1mdW5jdGlvbiB1MihsLGMsZil7cmV0dXJuIDB8UmlbMTI3JmFbNCsoMHxhWzgr''@;'; put 'put ''KDB8YVs2NCsobHw9MCk+PjJdKT4+Ml0pPj4yXV0oY3w9MCxmfD0wKX1mdW5jdGlvbiBoRihsLGMpe2ZvcihjfD0wLGw9MHx3cyhsfD0wKTs7KXtpZighbCl7bD0wO2JyZWFrfWlmKDB8JEEobCkpaEYobCxjKTtlbHNle2lmKC0xPT0oMHxtQyhsLGMsMCkpKXtsPS0xO2JyZWFrfWlmKC0xPT0o''@;'; put 'put ''MHxxQShsLGMpKSl7bD0tMTticmVha31pZigtMT09KDB8ZkYobCxjKSkpe2w9LTE7YnJlYWt9fWw9MHxicyhsKX1yZXR1cm4gMHxsfWZ1bmN0aW9uIEUyKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgbT0wO3JldHVybiAwPT0oMHxmdW5jdGlvbiBKbWUobCxjKXtmb3IoY3w9MCxsPTB8d3MobHw9''@;'; put 'put ''MCk7Oyl7aWYoIWwpe2w9MDticmVha31pZigwPT0oMHwkQShsKSkmJjB8Vm4obCxjLDApKXtsPTE7YnJlYWt9bD0wfGJzKGwpfXJldHVybiAwfGx9KGx8PTAsY3w9MCkpJiYwIT0oMHxmdW5jdGlvbiBlcmUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDtlOmRve2lmKDA8cD4+PjB8KDA9''@;'; put 'put ''PSgwfHApPygwfGFbYz4+Ml0pPj4+ND4+PjA8Zj4+PjA6MCkpYz0wO2Vsc2UgZm9yKGM9MHx3ZihsLGMpOzspe2lmKCFjKXtjPTE7YnJlYWsgZX1pZigwPHA+Pj4wfCgwPT0oMHxwKT8oMHxhW2FbYys0MD4+Ml0+PjJdKT4+PjQ+Pj4wPGY+Pj4wOjApKXtjPTA7YnJlYWsgZX1jPTB8TzMobCxj''@;'; put 'put ''KX19d2hpbGUoMCk7cmV0dXJuIDB8Y30obCxjLGYscCkpPzA9PSgwfGZ1bmN0aW9uIG1GKGwsYyl7cmV0dXJuIDB8KGw9MHx3ZihsfD0wLGN8PTApPzA6MD09KDB8eTAobCxjKSkmMSl9KGwsYykpJiYwPT0oMHxmdW5jdGlvbiB0cmUobCl7dmFyIGM9MCxmPTAscD0wO2w9MHxhYyhsfD0wKTtl''@;'; put 'put ''OmRve2lmKGwpZm9yKGY9bCs4fDAscD0wfGFbZj4+Ml0sYz1sKzEyfDAsbD0wfG1pWzYzJmFbcD4+Ml1dKHAsMCwxMjgpOzspe2lmKCFsKXtsPTA7YnJlYWsgZX1pZigoMHxhWygwfGFbYz4+Ml0pKyhhW2wrMTY+PjJdPDwyKT4+Ml0pIT0oMHxhW2wrMTI+PjJdKSl7bD0xO2JyZWFrIGV9bD0w''@;'; put 'put ''fG1pWzYzJmFbKHA9MHxhW2Y+PjJdKT4+Ml1dKHAsbCw4KX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfShjKSk/bT01Omw9MTptPTUsNT09KDB8bSkmJihsPTApLDB8bH1mdW5jdGlvbiBkRihsLGMsZil7dmFyIHA7Y3w9MCxmfD0wLHA9MHxmcihsfD0wKTtkb3tpZigtMSE9KDB8djUo''@;'; put 'put ''cCxjKSkmJi0xIT0oMHxwRihsLGMpKSl7aWYoMD09KDB8UDMobCkpJiYtMT09KDB8S0cobCxjLGYpKSl7bD0tMTticmVha31sPTB8dTIocCxjLDk3MzMwKX1lbHNlIGw9LTF9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBYbWUobCxjKXtmb3IoY3w9MCxsPTB8d3MobHw9MCk7Oyl7aWYo''@;'; put 'put ''IWwpe2w9MTticmVha31pZigwPT0oMHwkQShsKSkmJjB8T2QobCxjLDApKXtsPTA7YnJlYWt9bD0wfGJzKGwpfXJldHVybiAwfGx9ZnVuY3Rpb24gSkcobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxwPTAsQT0wO0E9MHxhWygzPT0oMHwocD0zJmFbKGx8PTApPj4yXSkpP2w6bCs0OHwwKSs0MD4+''@;'; put 'put ''Ml0scD0wfGFbKDI9PSgwfHApP2w6bCstNDh8MCkrNDA+PjJdLG09MHxmcihBKTtkb3tpZigtMSE9KDB8djUobSxjKSkmJi0xIT0oMHxwRihBLGMpKSYmLTEhPSgwfFhHKGwsYywwfGFbNDY5ODhdKSkmJi0xIT0oMHx1MihtLGMsKEE9MCE9KDB8bGMoMHxmcihBKSkpKT8xMDAwNzk6MTAwMDg0''@;'; put 'put ''KSkmJi0xIT0oMHxwRihwLGMpKSYmLTEhPSgwfFhHKGwsYywwfGFbNDY5ODldKSkpe2lmKDB8UDMobCkpe2lmKC0xPT0oMHxxbmUobCxjLDEpKSl7bD0tMTticmVha319ZWxzZSBpZigtMT09KDB8S0cobCxjLGYpKSl7bD0tMTticmVha31sPTB8dTIobSxjLDk3MzMwKX1lbHNlIGw9LTF9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBwRihsLGMpe2N8PTA7dmFyIGYsbSxBLGIscD0wLHc9MCxrPTA7cmV0dXJuIGI9b2Usb2U9b2UrMzJ8MCxBPWIsZj1iKzh8MCxwPTB8JHIobHw9MCksbT0wfGZyKGwpLHA/LTE9PSgwfGc3KG0sYyxwKSk/bD0tMTp3PTQ6KGw9MHxhWzQrKGs9bCs4''@;'; put 'put ''fDApPj4yXSxhWyhwPUEpPj4yXT1hW2s+PjJdLGFbcCs0Pj4yXT1sLGFvKGYsOTczNTAsQSksLTE9PSgwfHUyKG0sYyxmKSk/bD0tMTp3PTQpLDQ9PSgwfHcpJiYobD0wKSxvZT1iLDB8bH1mdW5jdGlvbiBYRyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7ZTpkb3tpZigwIT0o''@;'; put 'put ''MHxmKSYmKHA9MHxmcihsKSxtPTB8Rm8obCxmKSwwIT0oMHx1ZVttPj4wXSkpKWlmKC0xPT0oMHx1MihwLGMsMTA3OTg0KSkpbD0tMTtlbHNle2Rve2lmKDB8TW8obSkpe2lmKC0xPT0oMHxnNyhwLGMsbSkpKXtsPS0xO2JyZWFrIGV9fWVsc2V7aWYoIShsPTB8VXMobSw1OCkpKXtpZigtMT09''@;'; put 'put ''KDB8Z0YocCxjLG0sMCkpKXtsPS0xO2JyZWFrIGV9YnJlYWt9aWYodWVbbD4+MF09MCwtMT09KDB8Z0YocCxjLG0sMCkpKXtsPS0xO2JyZWFrIGV9aWYoLTE9PSgwfHUyKHAsYywxMDc5ODQpKSl7bD0tMTticmVhayBlfWlmKC0xPT0oMHxnRihwLGMsbCsxfDAsMCkpKXtsPS0xO2JyZWFrIGV9''@;'; put 'put ''dWVbbD4+MF09NTh9fXdoaWxlKDApO2w9MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIFAzKGwpe3JldHVybigwfGFbKGx8PTApPj4yXSk+Pj4zJjF8MH1mdW5jdGlvbiBLRyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MDtlOmRve2lmKDImYVtsPj4yXSl7c3dpdGNoKDB8cW5lKGwsYywwKSl7Y2FzZS0xOnA9LTE7YnJlYWsgZTtjYXNlIDA6cD0wLE09NDticmVhayBlfXA9MSxNPTR9ZWxzZSBwPTAsTT00fXdoaWxlKDApO2U6ZG97aWYoND09KDB8TSkpe209MHxhYyhsKSxrPTB8ZnIobCk7dDpkb3tpZihtKWZv''@;'; put 'put ''cihiPW0rMTJ8MCx3PTB8bWlbNjMmYVtmPj4yXV0oZiwwLDEyOCk7Oyl7aWYoIXcpYnJlYWsgdDtkb3tpZigyJmFbbD4+Ml0pe2lmKDB8KEE9MHxhWzQ2OTg4XSkmJigwfGFbdysxNj4+Ml0pPT0oMHxhW0ErMTY+PjJdKSlicmVhazswIT0oMHwoQT0wfGFbNDY5ODldKSkmJigwfGFbdysxNj4+''@;'; put 'put ''Ml0pPT0oMHxhW0ErMTY+PjJdKXx8KE09MTIpfWVsc2UgTT0xMn13aGlsZSgwKTtpZigxMj09KDB8TSkmJihNPTAsKDB8YVsoMHxhW2I+PjJdKSsoYVsobT13KzE2fDApPj4yXTw8Mik+PjJdKSE9KDB8YVt3KzEyPj4yXSkpKXtpZihBPXArMXwwLHApe2lmKC0xPT0oMHx1MihrLGMsOTczNDUp''@;'; put 'put ''KSl7cD0tMTticmVhayBlfWlmKC0xPT0oMHx2NShrLGMpKSl7cD0tMTticmVhayBlfX1lbHNle2lmKC0xPT0oMHx2NShrLGMpKSl7cD0tMTticmVhayBlfWlmKC0xPT0oMHx1MihrLGMsOTczNDIpKSl7cD0tMTticmVhayBlfWFbNDY5ODddPTErKDB8YVs0Njk4N10pfWlmKC0xPT0oMHxnNyhr''@;'; put 'put ''LGMsMHxhW3crOD4+Ml0pKSl7cD0tMTticmVhayBlfWlmKC0xPT0oMHx1MihrLGMsOTczNDgpKSl7cD0tMTticmVhayBlfWlmKC0xPT0oMHxnNyhrLGMsMHxhWygwfGFbYj4+Ml0pKyhhW20+PjJdPDwyKT4+Ml0pKSl7cD0tMTticmVhayBlfXA9QX13PTB8bWlbNjMmYVtmPj4yXV0oZix3LDgp''@;'; put 'put ''fX13aGlsZSgwKTtpZigoMHxwKT4wKXtpZigtMT09KDB8dTIoayxjLDk3MzQwKSkpe3A9LTE7YnJlYWt9YVs0Njk4N109KDB8YVs0Njk4N10pLTF9YVtsPj4yXT04fGFbbD4+Ml0scD0wfX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIHFuZShsLGMsZil7dmFyIHA7cmV0dXJuIGN8PTAs''@;'; put 'put ''Znw9MCxwPTB8JHIobHw9MCksbD0wfGZyKGwpLDB8KGw9MCE9KDB8cCkmJjAhPSgwfHVlW3A+PjBdKT8tMSE9KDB8dTIobCxjLDk3MzMzKSkmJi0xIT0oMHxnNyhsLGMscCkpPzAhPSgwfGYpJiYtMT09KDB8dTIobCxjLDk3MzQwKSk/LTE6MTotMTowKX1mdW5jdGlvbiBnNyhsLGMsZil7cmV0''@;'; put 'put ''dXJuIDB8Z0YobHw9MCxjfD0wLGZ8PTAsMSl9ZnVuY3Rpb24gZ0YobCxjLGYscCl7cmV0dXJuIGZ8PTAsMHx1MihsfD0wLGN8PTAsZj0ocHw9MCk/MHxwQyhmKTowfFhuZShmLDB8S25lKGYpKSl9ZnVuY3Rpb24gS21lKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbT0wO3JldHVybihwPTB8Vmgo''@;'; put 'put ''bHw9MCwwKSk/LTEhPSgwfHZGKGwsYywxMTE0OTQsMHxhW3ArMTY+PjJdLGYpKSYmLTEhPSgwfHZGKGwsYywxMTE0ODEsMHxhW3ArOD4+Ml0sZikpJiYtMSE9KDB8dkYobCxjLDExMTQ1MCwwfGFbcCsxMj4+Ml0sZikpP209NTpsPS0xOm09NSw1PT0oMHxtKSYmKGw9MCksMHxsfWZ1bmN0aW9u''@;'; put 'put ''IHZGKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgayxELE0sQT0wLHc9MCxiPTAsUj0wLEc9MDtmb3Ioaz0wPT0oMHwoTT0oRD0wIT0oMHwobXw9MCkpKT8wOjB8TGQocCwwKSkpLGI9MHxtaVs2MyZhW3A+PjJdXShwLDAsMTI4KSxtPTA7Oyl7aWYoIWIpe1I9MjM7YnJlYWt9''@;'; put 'put ''Uj0wIT0oMHwoUj0wfGFbKHc9YisxMnwwKT4+Ml0pKSYmMCE9KDB8dWVbUj4+MF0pPzEyOjc7ZG97aWYoNz09KDB8UikpaWYoUj0wLDB8dWVbYisyMj4+MF0pUj0xMjtlbHNlIGlmKCFrKXtpZihBPTB8bWlbNjMmYVtNPj4yXV0oTSxiLDQpLDB8KEc9MHxhW0ErMTI+PjJdKSYmMHx1ZVtHPj4w''@;'; put 'put ''XSl7Uj0xMjticmVha30wfHVlW0ErMjI+PjBdfHwoUj0xMil9fXdoaWxlKDApO2lmKDEyPT0oMHxSKSl7aWYoUj0wLEE9bSsxfDAsbSl7aWYoLTE9PSgwfHUyKGwsYyw5NzM0NSkpKXttPS0xO2JyZWFrfWlmKC0xPT0oMHx2NShsLGMpKSl7bT0tMTticmVha319ZWxzZXtpZigtMT09KDB8djUo''@;'; put 'put ''bCxjKSkpe209LTE7YnJlYWt9aWYoLTE9PSgwfHUyKGwsYyxmKSkpe209LTE7YnJlYWt9aWYoLTE9PSgwfHUyKGwsYyw5NzM0MikpKXttPS0xO2JyZWFrfWFbNDY5ODddPTErKDB8YVs0Njk4N10pfWlmKC0xPT0oMHxnNyhsLGMsMHxhW2IrOD4+Ml0pKSl7bT0tMTticmVha31pZigtMT09KDB8''@;'; put 'put ''dTIobCxjLDk3MzQ4KSkpe209LTE7YnJlYWt9aWYoLTE9PSgwfGc3KGwsYywwfGFbdz4+Ml0pKSl7bT0tMTticmVha31tPUF9Yj0wfG1pWzYzJmFbcD4+Ml1dKHAsYiw4KX1kb3tpZigyMz09KDB8Uikpe2lmKCgwfG0pPjApe2lmKGFbNDY5ODddPSgwfGFbNDY5ODddKS0xLDEhPSgwfG0pKXtp''@;'; put 'put ''ZigtMT09KDB8dTIobCxjLDE1MzU5OSkpKXttPS0xO2JyZWFrfWlmKC0xPT0oMHx2NShsLGMpKSl7bT0tMTticmVha319aWYoRHwobT0tMT09KDB8dTIobCxjLDk3Mzc3KSkpKXttPW08PDMxPj4zMTticmVha319ZWxzZSBpZihEKXttPTA7YnJlYWt9TGQocCxNKSxtPTB9fXdoaWxlKDApO3Jl''@;'; put 'put ''dHVybiAwfG19ZnVuY3Rpb24gbTcobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7c3dpdGNoKDMmYVsoY3w9MCk+PjJdKXtjYXNlIDA6QT04MjticmVhaztjYXNlIDE6QT04MzticmVhaztjYXNlIDM6Y2FzZSAyOkE9ODR9cmV0dXJuKGM9MHxSaVsxMjcmQV0obCxjKSk/''@;'; put 'put ''KHFHKGwsYyxmLHAsQSxtKSxjPTApOmM9LTEsMHxjfWZ1bmN0aW9uIHFHKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsdz0wLGs9MDtmb3IoKGI9MCE9KDB8KEF8PTApKSkmJk5sWzEyNyZmXShsLGMscCksdz0wfHdzKGwpO3c7KTB8KGs9MHxSaVsxMjcmbV0o''@;'; put 'put ''dyxjKSkmJnFHKHcsayxmLHAsbSxBKSx3PTB8YnModyk7Ynx8TmxbMTI3JmZdKGwsYyxwKX1mdW5jdGlvbiBlVygpe3ZhciBsPTAsYz0wO2ZvcihsPTB8YVs0Njk5NF07bDspc2MobCs4fDApLHNjKDI0KygwfGFbNDY5OTRdKXwwKSxzYygxNisoMHxhWzQ2OTk0XSl8MCksYz0wfFJUKDB8YVs0''@;'; put 'put ''Njk5NF0pLGFbNDY5OTRdPWMsbD1jfWZ1bmN0aW9uIGRsKCl7KGZ1bmN0aW9uIHZvKCl7IWZ1bmN0aW9uIFZhKGwpe2x8PTA7dmFyIHcsYz0wLGY9MCxwPTAsbT0wLEE9MCxiPTAsaz0wLE09MCxEPTA7aWYodWVbKGI9MHxhWzQ2OTczXSk+PjBdPTB8dWVbMTk0ODA1XSxiPj4+MDwoMisoYz0w''@;'; put 'put ''fGFbNCsoZj0wfGFbKHc9MHxhWzQ2OTcyXSk+PjJdKT4+Ml0pfDApPj4+MCl7Zm9yKHA9YysoMisoMHxhWzQ2OTc3XSkpfDAsbT1jKygyKygwfGFbZisxMj4+Ml0pKXwwLGs9YyxBPWY7IShwPj4+MDw9az4+PjApOyl1ZVsoaz1tKy0xfDApPj4wXT0wfHVlWyhmPXArLTF8MCk+PjBdLHA9Zixt''@;'; put 'put ''PWssaz0wfGFbNCsoQT0wfGFbdz4+Ml0pPj4yXTtjPWIrKGY9bS1wfDApfDAsYVs0Njk3N109Yj0wfGFbQSsxMj4+Ml0sYVtBKzE2Pj4yXT1iLGM+Pj4wPChrKzJ8MCk+Pj4wP1pyKDk3Mjc3KTooTT1sK2Z8MCxEPWMpfWVsc2UgTT1sLEQ9Yjt1ZVsobD1EKy0xfDApPj4wXT02NCxhWzQ2OTY0''@;'; put 'put ''XT1NLHVlWzE5NDgwNV09MHx1ZVtsPj4wXSxhWzQ2OTczXT1sfSgwfGFbNDY5NjRdKX0pKCksZnVuY3Rpb24gTFQobCl7dmFyIG0sYz0wLGY9MCxwPTAsQT0wLHc9MDtmb3IoYVs0Njk0Ml09bHw9MCxtPTB8YVtsKzY0Pj4yXSxwPTA7MyE9KDB8cCk7KXtjPTB8YVsoQT1tKzU2KyhwPDwyKXww''@;'; put 'put ''KT4+Ml07ZTpkb3tpZigwfGMpZm9yKGM9MHxtaVs2MyZhW2M+PjJdXShjLDAsMTI4KTs7KXtpZighYylicmVhayBlO2Y9MHxtaVs2MyZhWyhmPTB8YVtBPj4yXSk+PjJdXShmLGMsOCksMzc9PSgwfHVlW2FbYysyND4+Ml0+PjBdKT8oRFQobCxwLDB8YVsodz1jKzE2fDApPj4yXSwwfGFbdys0''@;'; put 'put ''Pj4yXSksYz1mKTpjPWZ9fXdoaWxlKDApO3A9cCsxfDB9fSgwfGFbNDY5OTNdKX1mdW5jdGlvbiBucmUobCxjLGYpe2x8PTA7dmFyIG0sQSxwPTA7QT1vZSxvZT1vZSsxNnwwLG09QSwocD0wfGFbNDY5OTNdKXx8KHVlWzE4Nzk4MF09MSYoY3w9MCl8KDI1NSYoZnw9MCkpPDwxJjJ8LTEyJnVl''@;'; put 'put ''WzE4Nzk4MF18OCxwPTB8YVs0Njk5Nl0sdWVbbT4+MF09MHx1ZVsxODc5ODBdLHVlW20rMT4+MF09MHx1ZVsxODc5ODFdLHVlW20rMj4+MF09MHx1ZVsxODc5ODJdLHVlW20rMz4+MF09MHx1ZVsxODc5ODNdLHA9MHxFYyhsLG0scCksYVs0Njk5M109cCksYVs0Njk0Ml09cCxhWzQ2OTk0XT0w''@;'; put 'put ''fEJUKDB8YVs0Njk5NF0scCksJGkoMCxsKSxvZT1BfWZ1bmN0aW9uIHlGKCl7dmFyIHAsbD0wLGM9MCxmPTAsbT0wLEE9MDtmb3IoQUMoMikscD0wfHVlWzk4MTI2XSxBPTAsbD0yNCsoZj0wfGFbNDY5OTRdKXwwO2M9MHxhW2w+PjJdOylBPWw9MjY3PT0oMHxhW2M+PjJdKSYmKDB8dWVbKG09''@;'; put 'put ''MHxhW2MrND4+Ml0pPj4wXSk9PXA8PDI0Pj4yNCYmMD09KDB8WmkobSw5ODEyNikpPzB8YVtjKzg+PjJdOkEsbD1jKzEyfDA7bD1mKzE2fDA7ZTpmb3IoO2Y9MHxhW2w+PjJdLGw9ZisxMnwwLDB8YVtsPj4yXTspaWYoYz1mKzR8MCwyNjI9PSgwfGFbZj4+Ml0pKWZvcihmPTB8YVtjPj4yXSxj''@;'; put 'put ''PTB8THQoZik7Oyl7aWYoIWMpY29udGludWUgZTtDRihtPTB8Vm4oMHxhW2FbNDY5OTRdPj4yXSxjLDApLDAsMHxhW2w+PjJdLEEpLGM9MHx6dChmLGMpfWVsc2UgZm9yKDs7KXtpZighKGM9MHxhW2M+PjJdKSljb250aW51ZSBlO0NGKDB8YVtjKzQ+PjJdLDB8YVtjKzg+PjJdLDB8YVtsPj4y''@;'; put 'put ''XSxBKSxjPWMrMTJ8MH1zYyg4KygwfGFbNDY5OTRdKXwwKSxzYygxNisoMHxhWzQ2OTk0XSl8MCksc2MoMjQrKDB8YVs0Njk5NF0pfDApLGFbNCsoMHxhWzQ2OTk0XSk+PjJdPTB9ZnVuY3Rpb24gcnJlKCl7dmFyIGw9MDtmb3IoQUMoMSksbD04KygwfGFbNDY5OTRdKXwwO2w9MHxhW2w+PjJd''@;'; put 'put ''OylvVygwfGFbbCs0Pj4yXSksbD1sKzEyfDA7c2MoOCsoMHxhWzQ2OTk0XSl8MCksc2MoMjQrKDB8YVs0Njk5NF0pfDApLHNjKDE2KygwfGFbNDY5OTRdKXwwKSxhWzQrKDB8YVs0Njk5NF0pPj4yXT0wfWZ1bmN0aW9uIHRXKCl7dmFyIGw9MCxjPTA7KGM9MHxhWzgrKGw9MHxhWzQ2OTk0XSk+''@;'; put 'put ''PjJdKT8oYz0wfGZ1bmN0aW9uIGlXKGwpe3JldHVybiAwfFpoKDI2NSxsfD0wLDApfShjKSxhWzEyKyhsPTB8YVs0Njk5NF0pPj4yXT0wLGFbbCs4Pj4yXT0wKTooKGM9MHxhW2wrND4+Ml0pPyhjPTB8ZnVuY3Rpb24gbHJlKGwpe3JldHVybiAwfFpoKDI2MixsfD0wLDApfShjKSxsPTB8YVs0''@;'; put 'put ''Njk5NF0pOmM9MCxhW2wrND4+Ml09MCksMHxjJiZ2NyhsKzE2fDAsYyl9ZnVuY3Rpb24gdkMobCxjLGYpe2x8PTAsY3w9MCwoZnw9MCkmJihjPTB8ZnVuY3Rpb24gcW1lKGwsYyl7Y3w9MDt2YXIgcCxtLEEsdyxmPTA7cmV0dXJuIHc9b2Usb2U9b2UrMTA0MHwwLG09dyxBPXcrOHwwLHA9KGY9''@;'; put 'put ''MisoZj0wfHpvKGx8PTApKSsoMHx6byhjKSl8MCk+Pj4wPDEwMjU/QTowfFIwKGYpLGFbbT4+Ml09bCxhW20rND4+Ml09YyxhbyhwLDk4MTYzLG0pLGY9MHx0MCgwfGFbNDY5OTNdLHApLCRpKDB8YVs0Njk5M10sbCksJGkoMHxhWzQ2OTkzXSxjKSwoMHxwKSE9KDB8QSkmJkh0KHApLG9lPXcs''@;'; put 'put ''MHxmfShjLGYpKSxmPTB8ZnVuY3Rpb24gYXJlKGwsYyl7cmV0dXJuIDB8WmgoMjU5LGx8PTAsY3w9MCl9KDB8TXIoMHxhW2FbNDY5OTRdPj4yXSxsLDEpLGMpLHY3KDgrKDB8YVs0Njk5NF0pfDAsZiksJGkoMHxhWzQ2OTkzXSxsKX1mdW5jdGlvbiB3RihsLGMpe2x8PTA7dmFyIG0sZj0wLHA9''@;'; put 'put ''MDtmb3IoMHwoY3w9MCkmJl9GKCksYz0yNCsoMHxhWzQ2OTk0XSl8MDtjPTB8YVtjPj4yXTspMHxhW2MrOD4+Ml18fF9GKCksYz1jKzEyfDA7Zm9yKEFDKG09MjYwPT0oMHxsKT8yOjI1OT09KDB8bCkmMSksYz0yNCsobD0wfGFbNDY5OTRdKXwwO3A9MHxhW2M+PjJdOyl7ZG97aWYoMjY3IT0o''@;'; put 'put ''MHxhW3A+PjJdKSl7aWYoISgwIT0oMHx1ZVsyMSsoYz0wfGFbcCs0Pj4yXSk+PjBdKSYoMHwoZj0wfGFbbD4+Ml0pKT09KDB8YVs0Njk5M10pKSYmKGM9MHxzaShmLG0sMHxhW2MrOD4+Ml0sMHxhW3ArOD4+Ml0pLCgwfGFbKGw9MHxhWzQ2OTk0XSk+PjJdKSE9KDB8YVs0Njk5M10pKSlicmVh''@;'; put 'put ''azt1ZVtjKzIyPj4wXT0xfX13aGlsZSgwKTtjPXArMTJ8MH1zYyhsKzI0fDApfWZ1bmN0aW9uIGJGKGwsYyl7Yz0wfGZ1bmN0aW9uIG9yZShsLGMpe3JldHVybiAwfFpoKDI2NyxsfD0wLGN8PTApfShsfD0wLGN8PTApLHY3KDI0KygwfGFbNDY5OTRdKXwwLGMpfWZ1bmN0aW9uIGlyZShsKXt2''@;'; put 'put ''YXIgYzthWzQ2OTk0XT0wfEJUKGM9MHxhWzQ2OTk0XSwwfHlzKDB8YVtjPj4yXSxsfD0wLDEpKSwkaSgwfGFbNDY5OTNdLGwpfWZ1bmN0aW9uIG5XKCl7dmFyIGMsbD0wO2M9MHxhWyhsPTB8YVs0Njk5NF0pPj4yXSxsPTB8UlQobCksYVs0Njk5NF09bCxhW2wrND4+Ml09Y31mdW5jdGlvbiBP''@;'; put 'put ''VChsLGMpe2N8PTA7dmFyIHAsbSxBLGY9MDtyZXR1cm4gQT1vZSxvZT1vZSsxMDI0fDAsbT1BLCQzKGY9KGY9MSsoZj0wfHpvKGx8PTApKSsoMHx6byhjKSl8MCk+Pj4wPDEwMjU/bTowfFIwKGYpLGwpLEF2KGYsYykscD0wfHQwKDB8YVs0Njk5M10sZiksJGkoMHxhWzQ2OTkzXSxsKSwkaSgw''@;'; put 'put ''fGFbNDY5OTNdLGMpLCgwfGYpIT0oMHxtKSYmSHQoZiksb2U9QSwwfHB9ZnVuY3Rpb24gUlQobCl7dmFyIGM7cmV0dXJuIGM9MHxhWzMyKygwfGFbNDY5OTRdKT4+Ml0sSXQoMHxhWzQ2OTkzXSxsfD0wKSwwfGN9ZnVuY3Rpb24gQlQobCxjKXt2YXIgZjtyZXR1cm4gbHw9MCxjfD0wLGY9MHxT''@;'; put 'put ''dCgwfGFbNDY5OTNdLDM2KSxhW2YrMzI+PjJdPWwsYVtmPj4yXT1jLDB8Zn1mdW5jdGlvbiB2NyhsLGMpe3ZhciBmLHA7Y3w9MCwwfChwPTB8YVsoZj00KyhsfD0wKXwwKT4+Ml0pJiYoYVtwKzEyPj4yXT1jKSxhW2Y+PjJdPWMsMHxhW2w+PjJdfHwoYVtsPj4yXT1jKX1mdW5jdGlvbiBaaChs''@;'; put 'put ''LGMsZil7dmFyIHA7cmV0dXJuIGx8PTAsY3w9MCxmfD0wLHA9MHxTdCgwfGFbNDY5OTNdLDE2KSxhW3A+PjJdPWwsYVtwKzQ+PjJdPWMsYVtwKzg+PjJdPWYsMHxwfWZ1bmN0aW9uIF9GKCl7dmFyIGw7bD1vZSxvZT1vZSsxNnwwLFhyKDAsOTgxMzAsbCksb2U9bH1mdW5jdGlvbiBBQyhsKXt2''@;'; put 'put ''YXIgbSxjPTAsZj0wLHA9MCxBPTA7Zm9yKG09Mj09KDB8KGx8PTApKSxjPTI0KygwfGFbNDY5OTRdKXwwO2M9MHxhW2M+PjJdOylwPTB8YVsoZj1jKzR8MCk+PjJdLG0mJigwfHVlW3A+PjBdKT09KDB8dWVbOTgxMjZdKSYmISgwfFppKHAsOTgxMjYpKXx8KEE9MHxzaSgwfGFbYVs0Njk5NF0+''@;'; put 'put ''PjJdLGwscCwwKSxhW2Y+PjJdPUEsQXx8KGFbZj4+Ml09MHxzaSgwfGFbYVs0Njk5NF0+PjJdLGwscCwxOTUwNTkpKSxhW2M+PjJdPTI2NiwkaSgwfGFbNDY5OTNdLHApKSxjPWMrMTJ8MH1mdW5jdGlvbiBzYyhsKXtyVygwfGFbKGx8PTApPj4yXSksYVtsKzQ+PjJdPTAsYVtsPj4yXT0wfWZ1''@;'; put 'put ''bmN0aW9uIHJXKGwpe2x8PTA7Zm9yKHZhciBjPTA7bDspe3N3aXRjaChjPTB8YVtsKzEyPj4yXSwwfGFbbD4+Ml0pe2Nhc2UgMjY1OnJXKDB8YVtsKzQ+PjJdKTticmVhaztjYXNlIDI2NjpjYXNlIDI2NzokaSgwfGFbNDY5OTNdLDB8YVtsKzg+PjJdKX1JdCgwfGFbNDY5OTNdLGwpLGw9Y319''@;'; put 'put ''ZnVuY3Rpb24gb1cobCl7bHw9MDt2YXIgYz0wLGY9MDtmb3IoYz0yNCsoMHxhWzQ2OTk0XSl8MDtjPTB8YVtjPj4yXTspMjY2PT0oMHxhW2M+PjJdKSYmMHwoZj0wfGFbYys0Pj4yXSkmJkJsKGwsZiwwfGFbYys4Pj4yXSksYz1jKzEyfDB9ZnVuY3Rpb24gQ0YobCxjLGYscCl7bHw9MCxjfD0w''@;'; put 'put ''LHB8PTA7dmFyIG09MDttPTQrKGZ8PTApfDA7ZTpkb3tpZigyNjI9PSgwfGFbZj4+Ml0pKWZvcihmPTB8YVttPj4yXSxtPTB8THQoZik7Oyl7aWYoIW0pYnJlYWsgZTtzcmUobCxjLDB8Vm4oMHxhW2FbNDY5OTRdPj4yXSxtLDApLDAscCksbT0wfHp0KGYsbSl9ZWxzZSBmb3IoOzspe2lmKCEo''@;'; put 'put ''bT0wfGFbbT4+Ml0pKWJyZWFrIGU7c3JlKGwsYyxmPTB8Vm4oMHxhW2FbNDY5OTRdPj4yXSwwfGFbbSs0Pj4yXSwwKSwwfGFbbSs4Pj4yXSxwKSxtPW0rMTJ8MH19d2hpbGUoMCl9ZnVuY3Rpb24gc3JlKGwsYyxmLHAsbSl7Y3w9MCxwfD0wO3ZhciBBPTA7MHwoZj0wfHJsKDB8YVthWzQ2OTk0''@;'; put 'put ''XT4+Ml0sbHw9MCxmfD0wLG18PTAsMSkpJiYoa0YoZiwxMTE0NTUsKGw9KDB8KG09MHxhWygyPT0oMHwoQT0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSkpPT0oMHxsKT8oMHxhWygzPT0oMHxBKT9mOmYrNDh8MCkrNDA+PjJdKSE9KDB8bSk6MCk/cDpjKSxrRihmLDExMTQ2NCxsP2M6''@;'; put 'put ''cCksb1coZikpfWZ1bmN0aW9uIGtGKGwsYyxmKXtsfD0wLGN8PTA7dmFyIHA9MDswfChmfD0wKSYmKChwPTB8c2koMHxhW2FbNDY5OTRdPj4yXSwyLGMsMCkpfHwocD0wfHNpKDB8YVthWzQ2OTk0XT4+Ml0sMixjLDE5NTA1OSkpLEJsKGwscCxmKSl9ZnVuY3Rpb24gUFQobCxjKXtyZXR1cm4g''@;'; put 'put ''MHxmdW5jdGlvbiB1cmUobCxjLGYpe3JldHVybiBsfD0wLGZ8PTAsYVs0Njk2Ml09Y3w9MCxhWzQ2OTkzXT1sLGFbNDY5NDJdPTAsYVs0Njk5Nl09bD0wfGY/ZjoxODYwMCxmdW5jdGlvbiB2MChsLGMpe2N8PTAsYVs0Njk2N109bHw9MCxhWzQ2OTY4XT1jLGFbNDY5NjldPTB9KGwsYyksZnVu''@;'; put 'put ''Y3Rpb24gQUYoKXt2YXIgRyxwZSxsPTAsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxLPTA7cGU9b2Usb2U9b2UrMTIwMHwwLEc9cGUrODAwfDAsZj1wZSxhWzQ2OTkwXT0wLGFbNDY5OTFdPS0yLGM9RyxtPTIwMCxrPWYsRD0wLFI9MCxNPUc7ZTpmb3IoOzsp''@;'; put 'put ''e2lmKFR0W00+PjFdPUQsKGMrKG08PDEpKy0yfDApPj4+MD5NPj4+MCl3PW07ZWxzZXtpZihsPTErKGI9TS1jPj4xKXwwLG0+Pj4wPjk5OTkpe0s9NzU7YnJlYWt9c3dpdGNoKChwPTB8UjAoNioodz0odz1tPDwxKT4+PjA8MWU0P3c6MWU0KXwzKSk/KERvKDB8cCwwfGMsbDw8MXwwKSxEbygw''@;'; put 'put ''fChtPXArKHc+Pj4xPDwyKXwwKSwwfGssbDw8MnwwKSwoMHxjKT09KDB8Ryk/KGw9MCxjPXApOihIdChjKSxsPTAsYz1wKSk6KGw9NCxtPWspLHA9YysoYjw8MSl8MCwxNSYoKEE9MD09KDB8bCkpPyhjKyh3PDwxKSstMnwwKT4+PjA+cD4+PjA/MDo5OmwpKXtjYXNlIDk6bD0xLEs9NzY7YnJl''@;'; put 'put ''YWsgZTtjYXNlIDQ6Sz03NTticmVhayBlO2Nhc2UgMDpmPUE/bSsoYjw8Mil8MDpmLGs9bSxNPUE/cDpNO2JyZWFrO2RlZmF1bHQ6bD0wO2JyZWFrIGV9fWlmKDY9PSgwfEQpKXtsPTAsSz03NjticmVha31BPShsPTB8dWVbOTczODErRD4+MF0pPDwyND4+MjQ7ZG97aWYobDw8MjQ+PjI0IT0t''@;'; put 'put ''MTgpe2lmKC0yPT0oMHwocD0wfGFbNDY5OTFdKSkmJihwPTB8Q2woKSxhWzQ2OTkxXT1wKSwoMHxwKT49MT9tPXA+Pj4wPDI2OT8wfGJ0Wzk3NDYxK3A+PjBdOjI6KGFbNDY5OTFdPTAsbT0wKSwocD1tK0F8MCk+Pj4wPD01OSYmKDB8bSk9PSgwfGJ0Wzk3NzMwK3A+PjBdKSl7aWYobD0oRD0w''@;'; put 'put ''fHVlWzk3NzkwK3A+PjBdKTw8MjQ+PjI0LEQ8PDI0Pj4yNDwxKXtwPTAtbHwwLEs9MjM7YnJlYWt9YVs0Njk5MV09LTIsYVsoZj1mKzR8MCk+PjJdPWFbNDY5OTJdLEE9MD09KDB8Uik/MDpSKy0xfDAscD1NO2JyZWFrfUs9MjJ9ZWxzZSBLPTIyfXdoaWxlKDApO2lmKDIyPT0oMHxLKSlpZihL''@;'; put 'put ''PTAscD0yNTUmKEQ9MHx1ZVs5Nzg1MCtEPj4wXSksRDw8MjQ+PjI0KUs9MjM7ZWxzZXtwPTB8YVs0Njk5MV07dDpkb3tzd2l0Y2goMHxSKXtjYXNlIDA6YVs0Njk5MF09MSsoMHxhWzQ2OTkwXSksWm8oMTQzNzYxKSxwPU07YnJlYWs7Y2FzZSAzOmlmKCgwfHApPDEpe2lmKHApe3A9TTticmVh''@;'; put 'put ''ayB0fWw9MSxLPTc2O2JyZWFrIGV9YVs0Njk5MV09LTIscD1NO2JyZWFrIHQ7ZGVmYXVsdDpwPU19fXdoaWxlKDApO2Zvcig7bDw8MjQ+PjI0IT0xODspe2lmKCgwfHApPT0oMHxjKSl7bD0xLEs9NzY7YnJlYWsgZX1mPWYrLTR8MCxwPWw9cCstMnwwLGw9MHx1ZVs5NzM4MSsoMHxUdFtsPj4x''@;'; put 'put ''XSk+PjBdfWFbKGY9Zis0fDApPj4yXT1hWzQ2OTkyXSxsPTEsQT0zfWRve2lmKDIzPT0oMHxLKSl7Sz0wLGw9MHxhW2YrKDEtKG09MHxidFs5NzkzMCtwPj4wXSk8PDIpPj4yXTt0OmRve3N3aXRjaCgwfHApe2Nhc2UgMjplVygpLGRsKCk7YnJlYWs7Y2FzZSAzOjB8YVs0Njk5M10mJihlVygp''@;'; put 'put ''LGRsKCksUTEoMHxhWzQ2OTkzXSksYVs0Njk0Ml09MCxhWzQ2OTkzXT0wKTticmVhaztjYXNlIDY6bnJlKDB8YVtmPj4yXSwwfGFbZistND4+Ml0sMHxhW2YrLTg+PjJdKTticmVhaztjYXNlIDc6Y2FzZSA1MzpjYXNlIDU5OmNhc2UgNjA6Y2FzZSA2MTpsPTB8YVtmPj4yXTticmVhaztjYXNl''@;'; put 'put ''IDg6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMjc6Y2FzZSAzOTpjYXNlIDU0OmNhc2UgNTU6bD0wO2JyZWFrO2Nhc2UgOTpjYXNlIDEyOmNhc2UgMjY6bD0xO2JyZWFrO2Nhc2UgMjE6aWYoMHxhW2YrLTQ+PjJdKXt5RigpO2JyZWFrIHR9cnJlKCk7YnJlYWsgdDtjYXNlIDI0OmNhc2UgMjU6dFco''@;'; put 'put ''KTticmVhaztjYXNlIDMwOnZDKDB8YVtmPj4yXSwwLDApO2JyZWFrO2Nhc2UgMzE6dkMoMHxhW2YrLTg+PjJdLDB8YVtmPj4yXSwwKTticmVhaztjYXNlIDMyOnZDKDB8YVtmKy0xNj4+Ml0sMHxhW2YrLTg+PjJdLDB8YVtmPj4yXSk7YnJlYWs7Y2FzZSAzMzp3RigwfGFbZistOD4+Ml0sMHxh''@;'; put 'put ''W2YrLTQ+PjJdKTticmVhaztjYXNlIDM0OndGKDI1OCwwKTticmVhaztjYXNlIDM1Omw9MjU4O2JyZWFrO2Nhc2UgMzY6bD0yNTk7YnJlYWs7Y2FzZSAzNzpsPTI2MDticmVhaztjYXNlIDM4Omw9MHxhW2YrLTQ+PjJdO2JyZWFrO2Nhc2UgNDg6YkYoMHxhW2YrLTg+PjJdLDB8YVtmPj4yXSk7''@;'; put 'put ''YnJlYWs7Y2FzZSA0OTpiRigwfGFbZj4+Ml0sMCk7YnJlYWs7Y2FzZSA1MTppcmUoMHxhW2Y+PjJdKTticmVhaztjYXNlIDUyOm5XKCk7YnJlYWs7Y2FzZSA2MjpsPTB8T1QoMHxhW2YrLTg+PjJdLDB8YVtmPj4yXSl9fXdoaWxlKDApO2lmKEQ9ZisoKG09MC1tfDApPDwyKXwwLG09TSsobTw8''@;'; put 'put ''MSl8MCxmPUQrNHwwLGFbRCs0Pj4yXT1sLChwPShEPTB8VHRbbT4+MV0pKygwfHVlWzk4MDU2KyhsPSgwfGJ0Wzk3OTkzK3A+PjBdKS0yNHwwKT4+MF0pfDApPj4+MDw2MCYmKDB8YnRbOTc3MzArcD4+MF0pPT0oMHxEKSl7bD0wfHVlWzk3NzkwK3A+PjBdLEE9UixwPW07YnJlYWt9bD0wfHVl''@;'; put 'put ''Wzk4MDkxK2w+PjBdLEE9UixwPW19fXdoaWxlKDApO209dyxEPWwsUj1BLE09cCsyfDB9NzU9PSgwfEspJiYoWm8oMTQwNTU4KSxsPTIsSz03NiksNzY9PSgwfEspJiYoMHxjKSE9KDB8RykmJkh0KGMpLG9lPXBlfSgpLChsPTB8YVs0Njk0Ml0pfHwoZnVuY3Rpb24gSHMoKXt2YXIgbD0wO1dp''@;'; put 'put ''KGw9KGw9MHxhWzQ2OTcyXSk/MHxhW2w+PjJdOjApfSgpLGw9MHxhWzQ2OTQyXSksMHxsfSgwLGx8PTAsY3w9MCl9ZnVuY3Rpb24gU0YobCl7dmFyIEEsYz0wLGY9MCxwPTAsbT0wLHc9MDtmb3IoQT1vZSxvZT1vZSsxMTJ8MCxmPUEsbT1BKzR8MCwoYz0wfGFbMjQrKGx8PTApPj4yXSk/KGFb''@;'; put 'put ''Zj4+Ml09YysxLGFvKG0sOTgyMjUsZikpOnVlW20+PjBdPTAsYz0xMSsodz0xKyhjPTB8em8oZj0wfChmPTB8YVtsKzIwPj4yXSk/Zjo5ODIyOSkpKyh3PTB8em8obSkpKygwfHpvKDB8YVsocD1sKzUyfDApPj4yXSkpfDApfDAsKDB8YVs0Njk5N10pPj4+MDwodysxfDApPj4+MD8oYVs0Njk5''@;'; put 'put ''N109YyxjPTB8WmEoMHxhWzQ2OTk4XSxjKSxhWzQ2OTk4XT1jKTpjPTB8YVs0Njk5OF0sJDMoYyxmKSxBdigwfGFbNDY5OThdLG0pLGM9KGM9MHxhWzQ2OTk4XSkrKDB8em8oYykpfDAsdWVbYz4+MF09NDYsdWVbYysxPj4wXT0wLGM9MHxuYSgwfGFbcD4+Ml0pLHA9MHxhWzQ2OTk4XTtmPTB8''@;'; put 'put ''RCQoYyw1OCk7KUF2KHAsZisxfDApLG09KHc9MHxhWzQ2OTk4XSkrKDB8em8odykpfDAsdWVbbT4+MF09NDYsdWVbbSsxPj4wXT0wLHVlW2Y+PjBdPTAscD13O0F2KHAsYyksSHQoYyksYVtsKzMyPj4yXT1hWzQ2OTk4XSxvZT1BfWZ1bmN0aW9uIEI2KGwsYyxmKXtsfD0wO3ZhciBBLHcscD0w''@;'; put 'put ''LG09MDtyZXR1cm4gdz1vZSxvZT1vZSsxNnwwLEE9dys4fDAsbT13LDAhPSgwfChjfD0wKSkmMCE9KDB8KGZ8PTApKT8oMTAyNCZhW2wrMTUyPj4yXXwwJiYoeDJbNjMmYVsxNisoMHxhW2wrMTI+PjJdKT4+Ml1dKDk4MjA3LG0pLHV1KDEpKSwoMHxmdW5jdGlvbiBhVyhsLGMsZil7Y3w9MCxm''@;'; put 'put ''fD0wO3ZhciBSLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7Uj1vZSxvZT1vZSsxNnwwLEQ9UixwPTB8YVsxMDQrKDB8YVsobHw9MCk+PjJdKT4+Ml07ZG97aWYocClmPTB8bWlbNjMmcF0obCxjLGYpO2Vsc2V7aWYoIShBPTB8YVsoYj1sKzQwfDApPj4yXSkpe2Y9MHxDdShjLDEs''@;'; put 'put ''ZiwwfGFbbCszNj4+Ml0pO2JyZWFrfXA9bCs0NHwwLG09MHxhWyh3PWwrNDh8MCk+PjJdO2Rve2lmKCgoMHxhW3A+PjJdKS0xLW18MCk+Pj4wPGY+Pj4wKXtpZihhW3A+PjJdPW09Zis0MDk2K20mLTQwOTYscD0wfFphKEEsbSksYVtiPj4yXT1wLHApe2s9cCxNPTB8YVt3Pj4yXTticmVha314''@;'; put 'put ''Mls2MyZhWzE2KygwfGFbbCsxMj4+Ml0pPj4yXV0oOTgyNjQsRCksdXUoMSl9ZWxzZSBrPUEsTT1tfXdoaWxlKDApO0RvKGsrTXwwLDB8YywwfGYpLGFbdz4+Ml09RD0oMHxhW3c+PjJdKStmfDAsdWVbKDB8YVtiPj4yXSkrRD4+MF09MH19d2hpbGUoMCk7cmV0dXJuIG9lPVIsMHxmfShsLGMs''@;'; put 'put ''ZikpPT0oMHxmKT9wPWY6KG09MHxhWzE2KygwfGFbbCsxMj4+Ml0pPj4yXSxhW0E+PjJdPWYseDJbNjMmbV0oOTgyMzksQSksdXUoMSkpKTpwPTAsb2U9dywwfHB9ZnVuY3Rpb24gVG4obCxjKXt2YXIgZjtyZXR1cm4gMHwoKGM9KDB8QjYobHw9MCxjfD0wLGY9MHx6byhjKSkpPT0oMHxmKSk/''@;'; put 'put ''MTotMSl9ZnVuY3Rpb24gTUYobCxjKXt2YXIgZixwO3JldHVybiBsfD0wLGY9b2Usb2U9b2UrMTZ8MCx1ZVsocD1mKT4+MF09Y3w9MCxsPTE9PSgwfEI2KGwscCwxKSksb2U9ZiwwfChsP2M6LTEpfWZ1bmN0aW9uIEZUKGwpe3ZhciBjO3JldHVybiAwfCgwIT0oMHwoYz0wfGFbMzYrKGx8PTAp''@;'; put 'put ''Pj4yXSkpJiYwPT0oMHx1ZVtsKzE0ND4+MF0pJiYwPT0oMHxhWzEwNCsoMHxhW2w+PjJdKT4+Ml0pPzB8RkwoYyk6MCl9ZnVuY3Rpb24gd0MobCl7dmFyIGYscCxjPTA7cD1vZSxvZT1vZSsxNnwwLGY9MHxhWzc2KyhsfD0wKT4+Ml0sMTAyNCZhW2wrMTUyPj4yXXwwJiYoeDJbNjMmYVsxNiso''@;'; put 'put ''MHxhW2wrMTI+PjJdKT4+Ml1dKDk4MjkxLHApLHV1KDEpKSwwIT0oMHxmKSYmMCE9KDB8KGM9MHxhW2YrOD4+Ml0pKT9ub1sxMjcmY10obCk6KEZUKGwpLGZ1bmN0aW9uIGxXKGwpe3ZhciBjLGY9MCxwPTA7MHxhWyhjPTMyKyhsfD0wKXwwKT4+Ml0mJigwfChwPTB8YVsoZj1sKzM2fDApPj4y''@;'; put 'put ''XSkpIT0oMHxhWzE1Njc5XSkmJjA9PSgwfHVlW2wrMTQ0Pj4wXSkmJigwfHAmJih1dyhwKSxhW2Y+PjJdPTApLGFbYz4+Ml09MCl9KGwpKSxvZT1wfWZ1bmN0aW9uIFJyKGwsYyxmKXtsfD0wLGN8PTA7dmFyIEEsdyxiLHA9MCxtPTA7Yj1vZSxvZT1vZSsxMDU2fDAsbT1iLHc9YisyNHwwLGFb''@;'; put 'put ''KEE9Yis4fDApPj4yXT1mfD0wLCgwfChwPTB8SUwodywxMDI0LGMsQSkpKT49MD8oKDB8cCk+MTAyMz8ocD0wfFFuKHArMXwwKSxhW0E+PjJdPWYsbT1wLHA9MHxuWihwLGMsQSkpOm09dyxCNihsLG0scCksKDB8bSkhPSgwfHcpJiZIdChtKSk6KGFbbT4+Ml09MHxNTCgwfGFbNDc2NDNdKSxY''@;'; put 'put ''cigxLDk4MzA4LG0pKSxvZT1ifWZ1bmN0aW9uIE5zKGwsYyl7dmFyIGYscDtmPW9lLG9lPW9lKzE2fDAsQjYobHw9MCwwfEhUKHA9ZixjPStjKSwwfGFbcD4+Ml0pLG9lPWZ9ZnVuY3Rpb24gSFQobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2lmKChjPStj''@;'; put 'put ''KTwtMWUxNSlwPTk4MzIyLGY9MTk7ZWxzZSBpZihjPjFlMTUpcD05ODMyMyxmPTE4O2Vsc2UgaWYocD1+figoKGMqPTFlNCk8MD8tLjU6LjUpK2MpKXtmb3Ioaz00LHc9MCxmPTE5NDgyNixwPShNPSgwfHApPDApPzAtcHwwOnA7MCE9KDB8cCl8KDB8ayk+MDspYj0oMHxwKS8xMHwwLEE9Zist''@;'; put 'put ''MXwwLDA9PSgwfChtPSgwfHApJTEwfDApKSZ3PDwyND4+MjQ9PTA/cD0wOih1ZVtBPj4wXT00OHxtLHA9MSxmPUEpLDE9PSgwfGspJiYocDw8MjQ+PjI0JiYodWVbKGY9ZistMXwwKT4+MF09NDYpLHA9MSksaz1rKy0xfDAsdz1wLHA9YjtNJiYodWVbKGY9ZistMXwwKT4+MF09NDUpLHA9Zixm''@;'; put 'put ''PTE5NDgyNi1mfDB9ZWxzZSBwPTEzODM5NCxmPTE7cmV0dXJuIGFbbD4+Ml09ZiwwfHB9ZnVuY3Rpb24gRjMobCxjKXt2YXIgZixwO2Y9b2Usb2U9b2UrMTZ8MCxCNihsfD0wLDB8SFQocD1mLCtfWyhjfD0wKT4+M10pLDB8YVtwPj4yXSksQjYobCwxMDI2MDQsMSksQjYobCxjPTB8SFQocCwr''@;'; put 'put ''X1tjKzg+PjNdKSwwfGFbcD4+Ml0pLG9lPWZ9ZnVuY3Rpb24gTmQobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBtLEEscD0wLHc9MDtmb3IoQT1vZSxvZT1vZSsxNnwwLG09QSxwPTA7YVttPj4yXT1hWyh3PWMrKHA8PDQpfDApPj4yXSxhW20rND4+Ml09YVt3KzQ+PjJdLGFbbSs4Pj4yXT1h''@;'; put 'put ''W3crOD4+Ml0sYVttKzEyPj4yXT1hW3crMTI+PjJdLEYzKGwsbSksISgoMHwocD1wKzF8MCkpPj0oMHxmKSk7KUI2KGwsMTAyNjA0LDEpO29lPUF9ZnVuY3Rpb24gRUYobCxjKXtjfD0wO3ZhciBmPTAscD0wO3JldHVybihmPTB8YVsocD0xNjArKGx8PTApfDApPj4yXSk/KHA9MHxhWzQ3ZTNd''@;'; put 'put ''KSYmKChmPTB8YVtwKzQ+PjJdKXx8KGY9MHxtcig2MzIpLGFbNCsoMHxhWzQ3ZTNdKT4+Ml09ZikpOihmPTB8bXIoNjMyKSxhW3A+PjJdPWYsYVtsKzE2ND4+Ml09ZiksYVs0N2UzXT1mLGFbZis1Mj4+Ml09YyxhW2Y+PjJdPWwsMCE9KDB8UDYobCwzLGMpKXwwfWZ1bmN0aW9uIGNyZShsKXt2''@;'; put 'put ''YXIgYztyZXR1cm4gYVsxNjQrKGx8PTApPj4yXT1jPTB8YVtsKzE2MD4+Ml0sMHxjfWZ1bmN0aW9uIHI3ZShsKXt2YXIgYyxmLHA9MDtyZXR1cm4gMHwoZj0wfGFbNCsoYz0wfGFbKGw9MTY0KyhsfD0wKXwwKT4+Ml0pPj4yXSkmJjA9PSgwfGFbKHA9Zis1MnwwKT4+Ml0pJiYoYVtwPj4yXT1h''@;'; put 'put ''W2MrNTI+PjJdKSxhW2w+PjJdPWYsMHxmfWZ1bmN0aW9uIEZ1KGwsYyxmKXtmfD0wO3ZhciBwLG09MDttPTEwKyhjfD0wKXwwLCgwfGFbKHA9OCsobHw9MCl8MCk+PjJdKT4oMHxjKT9sPTB8YVtsPj4yXTooYVtwPj4yXT1tLG09MHxsMCgwfGFbbD4+Ml0sbTw8MiksYVtsPj4yXT1tLGw9bSks''@;'; put 'put ''YVtsKyhjPDwyKT4+Ml09Zn1mdW5jdGlvbiBmcmUobCl7dmFyIGM7MHwoYz0wfGFbKGx8PTApPj4yXSkmJkh0KGMpLGFbbD4+Ml09MCxhW2wrOD4+Ml09MCxhW2wrND4+Ml09MH1mdW5jdGlvbiB4RihsKXt2YXIgZixjPTAscD0wO2ZvcihjPTB8YVsoZj0xNjArKGx8PTApfDApPj4yXTtjOylw''@;'; put 'put ''PTB8YVtjKzQ+PjJdLGZyZShjKzYwNHwwKSxmcmUoYys1OTJ8MCksSHQoMHxhW2MrNTg0Pj4yXSksSHQoMHxhW2MrNTg4Pj4yXSksSHQoYyksYz1wO2FbNDdlM109MCxhWzQ2OTk5XT0wLGFbbCsxOTI+PjJdPTAsYVtsKzE2ND4+Ml09MCxhW2Y+PjJdPTAsYVtsKzI4Pj4yXT0wfWZ1bmN0aW9u''@;'; put 'put ''IGk3ZShsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciB3LGssRCxiPTAsTT0wO2ZvcihEPW9lLG9lPW9lKzEyOHwwLE09RCxwUyhrPUQrNjR8MCxmfD0wLDYzKSwwfCh3PTB8VXMoayw1OCkpJiYodWVbdz4+MF09MCksbD1sKzYwKyhjPDwyKXwwOzspe2lmKCEoYz0w''@;'; put 'put ''fGFbbD4+Ml0pKXtjPWwsbD0wO2JyZWFrfWlmKHBTKE0sMHxhW2MrND4+Ml0sNjMpLDB8KGM9MHxVcyhNLDU4KSkmJih1ZVtjPj4wXT0wKSwoMHxaaShrLE0pKTwxKXtiPTk7YnJlYWt9bD0wfGFbbD4+Ml19Zm9yKDs5PT0oMHxiKSYmKGM9bCxsPTB8YVtsPj4yXSksISghbHx8KHBTKE0sMHxh''@;'; put 'put ''W2wrND4+Ml0sNjMpLGw9MHxVcyhNLDU4KSwwfGwmJih1ZVtsPj4wXT0wKSwwfFppKGssTSkpfHwobD0wfGFbYz4+Ml0sKDB8YVtsKzg+PjJdKTw9KDB8cCkpKTspYj05O3JldHVybiBNPTB8UW4oMjApLGFbTT4+Ml09YVtjPj4yXSxhW2M+PjJdPU0sYVtNKzQ+PjJdPWYsYVtNKzg+PjJdPXAs''@;'; put 'put ''YVtNKzEyPj4yXT1tLGFbTSsxNj4+Ml09QSxvZT1ELDF9ZnVuY3Rpb24gaHJlKGwsYyl7cmV0dXJuIGN8PTAsYz1vZSxvZT1vZSsxNnwwLFhyKDEsOTgzOTYsYyksb2U9YywwfWZ1bmN0aW9uIFA2KGwsYyxmKXtsfD0wO3ZhciB3LGIsayxELHBlLG1lLHA9MCxtPTAsQT0wLE09MCxSPTAsRz0w''@;'; put 'put ''LEs9MDttZT1vZSxvZT1vZSsxNDR8MCxwZT1tZSxHPW1lKzE2fDAsRD0oKGN8PTApLTN8MCk+Pj4wPDI/MDpjLHBTKFI9bWUrODB8MCxmfD0wLDYzKSwoZj0wfFVzKFIsNTgpKT8ocD1mKzF8MCx1ZVtmPj4wXT0wLChmPTB8VXMocCw1OCkpPyh1ZVtmPj4wXT0wLE09ZisxfDApOk09MCk6KE09''@;'; put 'put ''MCxwPTApLHc9MCE9KDB8cCksYj0wPT0oMHxNKSxrPSgwfEQpPT0oMHxjKSxBPWwrNjArKGM8PDIpfDA7ZTpmb3IoOzspe2lmKCEoZj0wfGFbQT4+Ml0pKXtmPTA7YnJlYWt9cFMoRywwfGFbZis0Pj4yXSw2MyksKGY9MHxVcyhHLDU4KSk/KHVlW2Y+PjBdPTAsZj1mKzF8MCk6Zj0wO2Rve2lm''@;'; put 'put ''KCEoMHxaaShHLFIpKSl7aWYodyYobT0wIT0oMHxmKSkmJjB8WmkoZixwKXx8IWImJjB8WmkoTSwwfGFbOCsoMHxhWzEyKygwfGFbQT4+Ml0pPj4yXSk+PjJdKSlicmVhaztpZihrfDFebSl7Sz0xNjticmVhayBlfWlmKDB8UDYobCxELGYpKXtLPTE2O2JyZWFrIGV9fX13aGlsZSgwKTtBPTB8''@;'; put 'put ''YVtBPj4yXX1kb3tpZigxNj09KDB8SykpaWYoZj0wfGFbQT4+Ml0pe2lmKDA9PSgwfGFbKHA9ZisxNnwwKT4+Ml0pJiYoaHJlKDAsMCksMD09KDB8YVtwPj4yXSkpKXtmPTA7YnJlYWt9KDB8YVtsKzg+PjJdKT4wJiYoSz0wfGFbMTU3MTJdLFI9MHxhW2YrND4+Ml0sRz0wfGFbOCsoMHxhW2Yr''@;'; put 'put ''MTI+PjJdKT4+Ml0sYVtwZT4+Ml09YVsyMDE2OCsoYzw8Mik+PjJdLGFbcGUrND4+Ml09UixhW3BlKzg+PjJdPUcsVDAoSyw5ODQyNyxwZSkpfWVsc2UgZj0wfXdoaWxlKDApO3JldHVybiBhW2wrODArKGM8PDIpPj4yXT1mLG9lPW1lLDB8Zn1mdW5jdGlvbiB1VyhsLGMsZil7bHw9MCxjfD0w''@;'; put 'put ''LGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MDtkb3tpZihmKXtpZigwfGFbNTA0N10mJihvcygxODgwMDQsMCwwKSxhWzUwNDddPTApLGY9MHxVcyhBPTB8bmEoZiksNTgpKXtmb3IodWVbZj4+MF09MCxmPTEsbT1wPWwrNjArKGM8PDIpfDA7bD0wfGFbbT4+Ml07KTB8KGw9MHxVcyhjPTB8bmEo''@;'; put 'put ''MHxhW2wrND4+Ml0pLDU4KSkmJih1ZVtsPj4wXT0wKSwwIT0oMHx1ZVtBPj4wXSkmJjAhPSgwfEEwKEEsYykpfHwoKGY9MHxhWzQ3MDAyXSk+Pj4wPj0oMHxhWzQ3MDAzXSk+Pj4wJiYoRzAoMTg4MDA0LDEpLGY9MHxhWzQ3MDAyXSksYVs0NzAwMl09ZisxLHVlW2Y+PjBdPTMyLGNvKDE4ODAw''@;'; put 'put ''NCwwfGFbNCsoMHxhW20+PjJdKT4+Ml0pLChmPTB8YVs0NzAwMl0pPj4+MD49KDB8YVs0NzAwM10pPj4+MCYmKEcwKDE4ODAwNCwxKSxmPTB8YVs0NzAwMl0pLGFbNDcwMDJdPWYrMSx1ZVtmPj4wXT01OCxjbygxODgwMDQsMHxhWzgrKDB8YVsxMisoMHxhW20+PjJdKT4+Ml0pPj4yXSksZj0w''@;'; put 'put ''KSxIdChjKSxtPTB8YVttPj4yXTtIdChBKSxmPDwyND4+MjQmJihtPTAsdz0xOSl9ZWxzZSBIdChBKSxtPTAscD1sKzYwKyhjPDwyKXwwLGY9MSx3PTE5O2lmKDE5PT0oMHx3KSl7Zm9yKDtsPTB8YVtwPj4yXTspMHwobD0wfFVzKGM9MHxuYSgwfGFbbCs0Pj4yXSksNTgpKSYmKHVlW2w+PjBd''@;'; put 'put ''PTApLDAhPSgwfG0pJiYwPT0oMHxBMChtLGMpKXx8KChmPTB8YVs0NzAwMl0pPj4+MD49KDB8YVs0NzAwM10pPj4+MCYmKEcwKDE4ODAwNCwxKSxmPTB8YVs0NzAwMl0pLGFbNDcwMDJdPWYrMSx1ZVtmPj4wXT0zMixjbygxODgwMDQsYyksZj0wKSxtPWMscD0wfGFbcD4+Ml0sdz0xOTtpZihm''@;'; put 'put ''PDwyND4+MjQpe2Y9MTk1MDU5O2JyZWFrfX0oZj0wfGFbNDcwMDJdKT4+PjA+PSgwfGFbNDcwMDNdKT4+PjAmJihHMCgxODgwMDQsMSksZj0wfGFbNDcwMDJdKSx1ZVtmPj4wXT0wLGFbNDcwMDJdPWY9MHxhWzQ3MDAxXX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIGNX''@;'; put 'put ''KGwpe3ZhciBjO3JldHVybihsfD0wKXx8QnIoMTExMjA4LDk4NDQ0LDU3Myw5ODQ1OCksMHx1ZVtsPj4wXXx8QnIoMTExMjEzLDk4NDQ0LDU3NCw5ODQ1OCksMHwoKGM9MHxhWzQ3MDA1XSk/MHxtaVs2MyZhW2M+PjJdXShjLGwsNTEyKTowKX1mdW5jdGlvbiBURihsKXt2YXIgZixwLG0sQSxi''@;'; put 'put ''LGssYz0wLHc9MDtrPW9lLG9lPW9lKzE2fDAsYj1rKzh8MCx3PWssKGx8PTApfHxCcigxMTEzMTIsOTg0NDQsNTg5LDk4NDc1KSwoZj0wfGFbKG09bCs4fDApPj4yXSl8fEJyKDExMTMxNSw5ODQ0NCw1OTAsOTg0NzUpLDB8dWVbZj4+MF18fEJyKDExMTMyNCw5ODQ0NCw1OTEsOTg0NzUpLHA9''@;'; put 'put ''MHxhWyhBPWwrMjB8MCk+PjJdO2Rve2lmKCFwKXtpZighKGM9MHx4RChmKSkpe2Fbdz4+Ml09YVttPj4yXSxYcigwLDk4NDk5LHcpLGM9MDticmVha31pZih3PTB8Z1MoYywxMzg4MjEpLGFbQT4+Ml09dywhdyl7YVtiPj4yXT0wfE1MKDB8YVs0NzY0M10pLGFbYis0Pj4yXT1jLFhyKDAsOTg1''@;'; put 'put ''MjQsYiksYz0wO2JyZWFrfWlmKCgwfChjPTB8YVs0NzAwNl0pKT40OSl7dWVbbCsxNz4+MF09MSxjPTE7YnJlYWt9YVs0NzAwNl09YysxLGM9MTticmVha31xaChwLDAsMCksMHxhW0E+PjJdP2M9MTpCcig5ODU0NSw5ODQ0NCw2MTQsOTg0NzUpfXdoaWxlKDApO3JldHVybiBvZT1rLDB8Y31m''@;'; put 'put ''dW5jdGlvbiBGNihsKXt2YXIgYz0wLGY9MDswfHVlWzE3KyhsfD0wKT4+MF0mJjB8KGY9MHxhWyhjPWwrMjB8MCk+PjJdKSYmKHV3KGYpLGFbYz4+Ml09MCl9ZnVuY3Rpb24gSUYobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTA7KGN8PTApPyhtPSsoMHwocD0wfGFbYys0OD4+Ml0p''@;'; put 'put ''KSxwPyhfW2YrOD4+M109bSxfW2Y+PjNdPW0sQT1tKTooQT0rX1tmPj4zXSxtPStfW2YrOD4+M10pLHA9fn4oKyg3MiooMHxhW2MrNDA+PjJdKXwwKS9BKSxmPX5+KCsoNzIqKDB8YVtjKzQ0Pj4yXSl8MCkvbSkpOihwPS0xLGY9LTEpLGFbbD4+Ml09cCxhW2wrND4+Ml09Zn1mdW5jdGlvbiBi''@;'; put 'put ''QyhsLGMsZil7bHw9MCxjfD0wO3ZhciB3LGIsayxwPTAsbT0wLEE9MCxNPTA7az1vZSxvZT1vZSs0OHwwLHA9aysxNnwwLHc9ayxiPWsrMzJ8MCwwIT0oMHwoZnw9MCkpJiYwIT0oMHx1ZVtmPj4wXSk/KCgwfGFbNDcwMDddKSE9KDB8KG09MHxhWzQ3MTMzXSkpJiYoYVs0NzAwN109bSwwfChB''@;'; put 'put ''PTB8YVs0NzAwNV0pKSYmKGlzKEEpLGFbNDcwMDVdPTApLF9bdys4Pj4zXT1NPShNPStfWzI0KygwfGFbOCsoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXSk+PTE/TTo5NixfW3c+PjNdPU0sYz0wfGZ1bmN0aW9uIERGKGwpe3ZhciBtLGM9MCxmPTAscD0wO209b2Usb2U9b2UrMTZ8MCxwPW0sKGx8''@;'; put 'put ''PTApfHxCcigxMTEyMDgsOTg0NDQsNjM4LDk4NTUxKSwwfGFbNDcwMDVdfHwoYVs0NzAwNV09MHxBcygyMDE5MiwwfGFbNDU4OV0pKSxjPTB8Y1cobCk7ZTpkb3tpZihjKUY2KGMpO2Vsc2UgaWYoYz0wfG1yKDY0KSxjKXtpZihhWyhmPWMrOHwwKT4+Ml09MHx0MCgwLGwpLCEoKDB8VEYoYykp''@;'; put 'put ''PDwyND4+MjQpKXtmVyhjKSxjPTA7YnJlYWt9c3dpdGNoKDB8YVtjKzIwPj4yXXx8QnIoOTg1NDUsOTg0NDQsNjUzLDk4NTUxKSwwfExGKGMpKXtjYXNlIDA6aWYobD0wfEJOKDB8YVtmPj4yXSksYVtjKzUyPj4yXT1sLCFsKXthW3A+PjJdPWFbZj4+Ml0sWHIoMCw5ODU2OCxwKSxmVyhjKSxj''@;'; put 'put ''PTA7YnJlYWsgZX1icmVhaztjYXNlIDI6T0YoYyk7YnJlYWs7Y2FzZSAzOk5UKGMpO2JyZWFrO2Nhc2UgMTpvN2UoYyk7YnJlYWs7Y2FzZSA0OmE3ZShjKTticmVhaztjYXNlIDY6bDdlKGMpO2JyZWFrO2Nhc2UgMTE6czdlKGMpO2JyZWFrO2Nhc2UgODpoVyhjKTticmVhaztjYXNlIDU6ZHJl''@;'; put 'put ''KGMpO2JyZWFrO2Nhc2UgMTI6cHJlKGMpfUY2KGMpLG1pWzYzJmFbKHA9MHxhWzQ3MDA1XSk+PjJdXShwLGMsMSl9ZWxzZSBjPTB9d2hpbGUoMCk7cmV0dXJuIG9lPW0sMHxjfShmKSxhW3A+PjJdPWFbdz4+Ml0sYVtwKzQ+PjJdPWFbdys0Pj4yXSxhW3ArOD4+Ml09YVt3Kzg+PjJdLGFbcCsx''@;'; put 'put ''Mj4+Ml09YVt3KzEyPj4yXSxJRihiLGMscCksYz0wfGFbYj4+Ml0scD0wfGFbYis0Pj4yXSk6KGM9LTEscD0tMSksYVtsPj4yXT1jLGFbbCs0Pj4yXT1wLG9lPWt9ZnVuY3Rpb24gZlcobCl7dmFyIGM7MHwoYz0wfGFbOCsobHw9MCk+PjJdKSYmJGkoMCxjKSxIdChsKX1mdW5jdGlvbiBMRihs''@;'; put 'put ''KXt2YXIgbSxBLHcsayxjPTAsZj0wLHA9MCxiPTA7az1vZSxvZT1vZSsyMjR8MCxtPWsrMjAwfDAsQT1rLGM9MHxhWyh3PTIwKyhsfD0wKXwwKT4+Ml07ZTpkb3tpZigwIT0oMHxjKSYmMjA9PSgwfFgkKG0sMSwyMCxjKSkpe2ZvcihmPTA7Oyl7aWYoZj4+PjA+PTEwKXtiPTEzO2JyZWFrIGV9''@;'; put 'put ''aWYoISgwfCRoKG0sMHxhWzIwMjI4KyhmPDw0KT4+Ml0sMHxhWzIwMjI4KyhmPDw0KSs0Pj4yXSkpKWJyZWFrO2Y9ZisxfDB9c3dpdGNoKGFbKHA9bCsyOHwwKT4+Ml09YVsyMDIyOCsoZjw8NCkrMTI+PjJdLGFbKGw9bCsyNHwwKT4+Ml09Yz0wfGFbMjAyMjgrKGY8PDQpKzg+PjJdLDB8Zil7''@;'; put 'put ''Y2FzZSA3OmJyZWFrO2Nhc2UgODppZigwfCRoKG0rOHwwLDk4Nzg0LDQpKWJyZWFrIGU7YVtwPj4yXT05ODc4OSxhW2w+PjJdPTExLGM9MTE7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9Zm9yKDs7KXtpZighKDB8bXYoQSwyMDAsMHxhW3c+PjJdKSkpe2I9MTE7YnJlYWt9aWYoISgwfCRoKEEs''@;'; put 'put ''OTg3NzksNCkpKXtiPTg7YnJlYWt9fWlmKDg9PSgwfGIpKXthW3A+PjJdPTEwMTgwMyxhW2w+PjJdPTgsYz04O2JyZWFrfWlmKDExPT0oMHxiKSl7Yz0wfGFbbD4+Ml07YnJlYWt9fWVsc2UgYj0xM313aGlsZSgwKTtyZXR1cm4gMTM9PSgwfGIpJiYoYVtsKzI4Pj4yXT05ODc5NCxhW2wrMjQ+''@;'; put 'put ''PjJdPTAsYz0wKSxvZT1rLDB8Y31mdW5jdGlvbiBPRihsKXt2YXIgYyxmLHAsbTttPW9lLG9lPW9lKzE2fDAsYz1tKzR8MCxmPW0sYVs0OCsobHw9MCk+PjJdPTAscWgoMHxhWyhwPWwrMjB8MCk+PjJdLDYsMCksKDB8X2YoMHxhW3A+PjJdLDIsYykpPDwyND4+MjQmJigwfF9mKDB8YVtwPj4y''@;'; put 'put ''XSwyLGYpKTw8MjQ+PjI0JiYoYVtsKzQwPj4yXT1hW2M+PjJdLGFbbCs0ND4+Ml09YVtmPj4yXSksb2U9bX1mdW5jdGlvbiBOVChsKXt2YXIgYyxmLHAsbTttPW9lLG9lPW9lKzE2fDAsYz1tKzR8MCxmPW0sYVs0OCsobHw9MCk+PjJdPTAscWgoMHxhWyhwPWwrMjB8MCk+PjJdLDE2LDApLCgw''@;'; put 'put ''fEgzKDB8YVtwPj4yXSw0LGMpKTw8MjQ+PjI0JiYoMHxIMygwfGFbcD4+Ml0sNCxmKSk8PDI0Pj4yNCYmKGFbbCs0MD4+Ml09YVtjPj4yXSxhW2wrNDQ+PjJdPWFbZj4+Ml0pLG9lPW19ZnVuY3Rpb24gbzdlKGwpe3ZhciBjLGYscCxtLEEsdzt3PW9lLG9lPW9lKzE2fDAsYz13KzEyfDAsZj13''@;'; put 'put ''Kzh8MCxwPXcrNHwwLG09dyxhWzQ4KyhsfD0wKT4+Ml09MCxxaCgwfGFbKEE9bCsyMHwwKT4+Ml0sMTYsMCksKDB8X2YoMHxhW0E+PjJdLDIsYykpPDwyND4+MjQmJigwfF9mKDB8YVtBPj4yXSwyLGYpKTw8MjQ+PjI0JiYoMHxfZigwfGFbQT4+Ml0sMixwKSk8PDI0Pj4yNCYmKDB8X2YoMHxh''@;'; put 'put ''W0E+PjJdLDIsbSkpPDwyND4+MjQmJihhW2wrNDA+PjJdPWFbYz4+Ml08PDE2fGFbZj4+Ml0sYVtsKzQ0Pj4yXT1hW3A+PjJdPDwxNnxhW20+PjJdKSxvZT13fWZ1bmN0aW9uIGE3ZShsKXt2YXIgYyxwLG0sdyxiLGssRCxmPTAsQT0wLE09MDtmb3IoRD1vZSxvZT1vZSszMnwwLGM9RCsxNnww''@;'; put 'put ''LHA9RCsxMnwwLG09RCs4fDAsdz1EKzR8MCxiPUQsYVs0OCsobHw9MCk+PjJdPTAsaz1sKzIwfDA7KDB8SDMoMHxhW2s+PjJdLDEsYykpPDwyND4+MjQ7KWlmKDI1NSE9KDB8KGY9MHxhW2M+PjJdKSkmJiEoMHxVcyg5ODc2NyxmKSkpe2lmKDE5Mj09KDB8Zikpe009NjticmVha31pZihBPTB8''@;'; put 'put ''YVtrPj4yXSwxOTQ9PSgwfGYpKXtNPTExO2JyZWFrfWlmKCEoKDB8SDMoQSwyLHApKTw8MjQ+PjI0KSlicmVhaztxaCgwfGFbaz4+Ml0sKDB8YVtwPj4yXSktMnwwLDEpfTY9PSgwfE0pPygwfEgzKDB8YVtrPj4yXSwzLGIpKTw8MjQ+PjI0JiYoMHxIMygwfGFbaz4+Ml0sMixtKSk8PDI0Pj4y''@;'; put 'put ''NCYmKDB8SDMoMHxhW2s+PjJdLDIsdykpPDwyND4+MjQmJihhW2wrNDQ+PjJdPWFbbT4+Ml0sYVtsKzQwPj4yXT1hW3c+PjJdKToxMT09KDB8TSkmJigwfEgzKEEsMyxiKSk8PDI0Pj4yNCYmKDB8SDMoMHxhW2s+PjJdLDIsbSkpPDwyND4+MjQmJigwfEgzKDB8YVtrPj4yXSwyLHcpKTw8MjQ+''@;'; put 'put ''PjI0JiYoYVtsKzQ0Pj4yXT1hW20+PjJdLGFbbCs0MD4+Ml09YVt3Pj4yXSksb2U9RH1mdW5jdGlvbiBsN2UobCl7dmFyIGMscCxtLEEsdyxiLEQsZj0wLGs9MCxNPTA7Zm9yKEQ9b2Usb2U9b2UrMTA1NnwwLGs9RCxjPUQrMzJ8MCxwPUQrMjh8MCxtPUQrMjR8MCxBPUQrMjB8MCx3PUQrMTZ8''@;'; put 'put ''MCxhWzQ4KyhsfD0wKT4+Ml09NzIscWgoMHxhWyhiPWwrMjB8MCk+PjJdLDAsMCk7MHxtdihjLDEwMjQsMHxhW2I+PjJdKTspaWYoKGY9MHxMTChjLDk4NzUyKSkmJihhW2s+PjJdPXAsYVtrKzQ+PjJdPW0sYVtrKzg+PjJdPUEsYVtrKzEyPj4yXT13LDQ9PSgwfCRhKGYsMTA0MzExLGspKSkp''@;'; put 'put ''e009NTticmVha301PT0oMHxNKSYmKGFbbCszMj4+Ml09az0wfGFbcD4+Ml0sYVtsKzM2Pj4yXT1NPTB8YVttPj4yXSxhW2wrNDA+PjJdPSgwfGFbQT4+Ml0pLWssYVtsKzQ0Pj4yXT0oMHxhW3c+PjJdKS1NKSxvZT1EfWZ1bmN0aW9uIHM3ZShsKXt2YXIgYyxmLHAsbSxBLHc7QT1vZSxvZT1v''@;'; put 'put ''ZSsxNnwwLGM9QSs0fDAsZj1BLGFbNDgrKGx8PTApPj4yXT0wLHFoKDB8YVsocD1sKzIwfDApPj4yXSwxNSwwKSx3PTg4PT0oMHx2WigwfGFbcD4+Ml0pKSxtPTB8YVtwPj4yXSx3PyhxaChtLDI0LDApLCgwfF9mKDB8YVtwPj4yXSw0LGMpKTw8MjQ+PjI0JiYoMHxfZigwfGFbcD4+Ml0sNCxm''@;'; put 'put ''KSk8PDI0Pj4yNCYmKGFbbCs0MD4+Ml09YVtjPj4yXSxhW2wrNDQ+PjJdPWFbZj4+Ml0pKToocWgobSwyNiwwKSwoMHxfZigwfGFbcD4+Ml0sMixjKSk8PDI0Pj4yNCYmKDB8X2YoMHxhW3A+PjJdLDIsZikpPDwyND4+MjQmJihhW2wrNDA+PjJdPWFbYz4+Ml0sYVtsKzQ0Pj4yXT1hW2Y+PjJd''@;'; put 'put ''KSksb2U9QX1mdW5jdGlvbiBoVyhsKXtsfD0wO3ZhciBrLE0sRCxSLEcsSyxwZSxtZSxiZSxPZSxMZSxCZSxIZSxqZSxldCxydCxHZSxsdCxNdCxrdCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7a3Q9b2Usb2U9b2UrMzUyfDAsR2U9a3QrODB8MCxydD1rdCs3MnwwLE10PWt0KzY0fDAs''@;'; put 'put ''bHQ9a3QrNTZ8MCxldD1rdCs0OHwwLGM9a3QrNDB8MCxwZT1rdCszMnwwLG1lPWt0KzI0fDAsYmU9a3QrMTZ8MCxPZT1rdCs4fDAsTGU9a3QsQmU9a3QrMzI4fDAsSGU9a3QrMTI4fDAsamU9a3QrOTZ8MCwwfGFbNDcwMDhdfHwoMHxmdW5jdGlvbiBEY2UobCxjLGYpe2x8PTAsY3w9MCxmfD0w''@;'; put 'put ''O3ZhciBPZSxCZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLExlPTAsSGU9MDtCZT1vZSxvZT1vZSs0OHwwLGI9QmUsT2U9MHxmdW5jdGlvbiBMY2UoKXt2YXIgbD0wLGM9MDtsPTB8UjAoMjApO2Rve2lmKGwpe2lmKGM9MHxSMCgy''@;'; put 'put ''MDQ4KSxhW2wrMTY+PjJdPWMsYyl7YVtsPj4yXT01MTIsYVtsKzQ+PjJdPTEwMjRlMyxhW2wrOD4+Ml09MTI4LGFbbCsxMj4+Ml09MDticmVha31IdChsKSxsPTA7YnJlYWt9fXdoaWxlKDApO3JldHVybiAwfGx9KCk7ZTpkb3tpZihPZSl7aWYoIShMZT0wfFYkKDAsMCkpKXtoWihPZSksYz0x''@;'; put 'put ''MjticmVha31hWyhwPWIrOHwwKT4+Ml09MCxhW3ArND4+Ml09MCxhW3ArOD4+Ml09MCxhW3ArMTI+PjJdPTAsYVtwKzE2Pj4yXT0wLGFbYj4+Ml09TGUsYVtiKzQ+PjJdPU9lLGFbYisxNj4+Ml09YyxhW2IrMzI+PjJdPWYsYVsocD1iKzI4fDApPj4yXT0tMSxjPTB8T2NlKGIpO3Q6ZG97aWYo''@;'; put 'put ''YylBPTAsdz0wLGI9MCxtPTAscD0wO2Vsc2UgaWYodz1iKzIwfDAsbT0wfGFbdz4+Ml0sYVtsPj4yXT1tKy0xLGs9MHxhW2IrOD4+Ml0sYz0wfGFbcD4+Ml0sKDB8Yyk8KDB8bSkpaWYoQT0wfFRmKDEsNjgpLEEpe2lmKGFbQSs2MD4+Ml09bWU9Yz4+PjMxXjEsYVtBKzI4Pj4yXT1tLDA9PSg4''@;'; put 'put ''JmZ8MCl8MCE9KDB8bWUpKXtpZigwfChjPTB8aiQoMCxPZSxrLEEpKSl7dz0wLGI9MCxtPTAscD0wO2JyZWFrfWlmKCgwfChtPTB8YVtBKzQwPj4yXSkpPjApe2lmKCEocD0wfFIwKGM9NCsobTw8Mil8MCkpKXt3PTAsYj0wLGM9MTIsbT0wLHA9MDticmVha31hW0ErMzI+PjJdPXAscjIoMHxw''@;'; put 'put ''LC0xLDB8Yyl9ZWxzZSBwPTA7aWYobWU9MHxUZihtPDwxfDEsNCksYVtBKzM2Pj4yXT1tZSwhbWUpe3c9MCxiPTAsYz0xMixtPTAscD0wO2JyZWFrfWlmKCEoYz0wfFRmKDB8YVt3Pj4yXSwxMikpKXt3PTAsYj0wLGM9MTIsbT0wLHA9MDticmVha31pZihhW0ErMTY+PjJdPWMsYz0wfGokKExl''@;'; put 'put ''LE9lLGssQSkpe3c9MCxiPTAsbT0wLHA9MDticmVha31jPXB9ZWxzZSBjPTA7aWYoYz0wfFJjZShMZSxPZSxrLG1lPWIrMjR8MCxjKSl3PTAsYj0wLG09MCxwPTA7ZWxzZSBpZihhW21lPj4yXT0xKyhjPTB8YVttZT4+Ml0pLDAhPSgwfChjPTB8YTEoTGUsMCwwLGMpKSkmJjAhPSgwfChiZT0w''@;'; put 'put ''fHl2KExlLGssYykpKSlpZihjPTB8QmNlKExlLE9lLGJlKSl3PTAsYj0wLG09MCxwPTA7ZWxzZSBpZihLPTB8UjAoYz0ocD0wfGFbbWU+PjJdKTw8MikpaWYocGU9MHxSMChjKSl7aWYoKDB8cCk+MCYmcjIoMHxLLDAscDw8MnwwKSxITChiZSwwLEssMCksKDB8KG09MHxhW21lPj4yXSkpPjAp''@;'; put 'put ''e2M9MCxwPTA7ZG97YVtwZSsocDw8Mik+PjJdPWMsYz1jKzErKDB8YVsoRz1LKyhwPDwyKXwwKT4+Ml0pfDAsYVtHPj4yXT0wLHA9cCsxfDB9d2hpbGUoKDB8cCk8KDB8bSkpO0Q9Y31lbHNlIEQ9MDtpZihSPTB8VGYoRCsxfDAsMzIpKWlmKGFbQT4+Ml09UixhWyhHPUErNHwwKT4+Ml09RCxj''@;'; put 'put ''PTB8SEwoYmUsUixLLHBlKSl3PUssYj1wZSxtPUsscD1wZTtlbHNle2ZvcihhW0ErMjA+PjJdPTAsYz0wfGFbKG09YmUrMjR8MCk+PjJdLHA9MDtwPXArMXwwLCEoKDB8YVtjPj4yXSk8PS0xKTspYz1jKzMyfDA7aWYoTT0wfFRmKHAsMzIpKXtpZihhW0ErOD4+Ml09TSwoMHwobT0wfGFbKHA9''@;'; put 'put ''MHxhW20+PjJdKT4+Ml0pKT4tMSl7Yz0wO2Rve2lmKGFbTSsoYzw8NSkrOD4+Ml09UisoYVtwZSsobTw8Mik+PjJdPDw1KSxhW00rKGM8PDUpKzEyPj4yXT1tLGFbKGI9TSsoYzw8NSkrMTZ8MCk+PjJdPTAsMHwodz0wfGFbKGs9cCsxMnwwKT4+Ml0pKXttPTA7ZG97SGU9bSxtPW0rMXwwfXdo''@;'; put 'put ''aWxlKCgwfGFbdysoSGU8PDIpPj4yXSk+LTEpO2lmKHc9MHxSMChtPDw9MiksYVtiPj4yXT13LCF3KXt3PUssYj1wZSxjPTEyLG09SyxwPXBlO2JyZWFrIHR9RG8oMHx3LDB8YVtrPj4yXSwwfG0pfWFbTSsoYzw8NSkrMjA+PjJdPWFbcCsxNj4+Ml0sYz1jKzF8MCxtPTB8YVsocD1wKzMyfDAp''@;'; put 'put ''Pj4yXX13aGlsZSgoMHxtKT4tMSl9ZWxzZSBjPTA7YVtNKyhjPDw1KSs4Pj4yXT0wLGFbRz4+Ml09RCxhW0ErMTI+PjJdPVIrKGFbcGUrKGFbYVtiZSsyOD4+Ml0+PjJdPDwyKT4+Ml08PDUpLGFbQSs1Mj4+Ml09YVttZT4+Ml0sYVtBKzU2Pj4yXT1mLGRnKExlKSxoWihPZSksSHQoSyksSHQo''@;'; put 'put ''cGUpLGFbbCs0Pj4yXT1BLGM9MDticmVhayBlfXc9SyxiPXBlLGM9MTIsbT1LLHA9cGV9ZWxzZSB3PUssYj1wZSxjPTEyLG09SyxwPXBlfWVsc2Ugdz1LLGI9cGUsYz0xMixtPUsscD0wO2Vsc2Ugdz1LLGI9MCxjPTEyLG09MCxwPTA7ZWxzZSB3PTAsYj0wLGM9MTIsbT0wLHA9MH1lbHNlIHc9''@;'; put 'put ''MCxiPTAsYz0xMixtPTAscD0wO2Vsc2UgQT0wLHc9MCxiPTAsYz02LG09MCxwPTB9d2hpbGUoMCk7ZGcoTGUpLGhaKE9lKSwwfHcmJkh0KG0pLDB8YiYmSHQocCksYVtsKzQ+PjJdPUEsUGNlKGwpfWVsc2UgYz0xMn13aGlsZSgwKTtyZXR1cm4gb2U9QmUsMHxjfSgxODgwMzYsOTg2MzcsMSkm''@;'; put 'put ''JihhW2M+PjJdPTk4NjM3LFhyKDEsOTg2NjQsYykpLGFbNDcwMDhdPTE4ODAzNikscWgoMHxhWyhrPWwrMjB8MCk+PjJdLDAsMCksTT1qZSsxMnwwLEQ9amUrMjB8MCxSPWplKzh8MCxHPWplKzE2fDAsSz1qZSs0fDAsYz0wLG09MCxwPTAsZj0wO2U6Zm9yKDswfG12KEhlLDIwMCwwfGFbaz4+''@;'; put 'put ''Ml0pJiZtPDwyND4+MjQ9PTB8Yzw8MjQ+PjI0PT0wOyl7QT1IZSxiPWY7dDpmb3IoOzspe3c9cDtuOmZvcig7Oyl7Zm9yKDs7KXtpZigwfFdjZSgxODgwMzYsQSw0LGplLDApKXtwPXcsZj1iO2NvbnRpbnVlIGV9aWYodWVbQSsoMHxhW00+PjJdKT4+MF09MCx1ZVtBKygwfGFbRD4+Ml0pPj4w''@;'; put 'put ''XT0wLGY9QSsoMHxhW1I+PjJdKXwwLHA9QSsoMHxhW0c+PjJdKXwwLEE9QSsoMSsoMHxhW0s+PjJdKSl8MCwhKDB8WmkoZiwxNDExMTYpKSlicmVhaztpZighKDB8WmkoZiwxNDEwNDgpKSlicmVhayBuO2lmKCEoMHxaaShmLDk4NzExKSkmJihhW0dlPj4yXT1tZSxhW0dlKzQ+PjJdPWJlLGFb''@;'; put 'put ''R2UrOD4+Ml09T2UsYVtHZSsxMj4+Ml09TGUsND09KDB8JGEocCw5ODcxOSxHZSkpKSlicmVhayB0fWlmKGFbZXQ+PjJdPXBlLGFbZXQrND4+Ml09QmUsMiE9KDB8JGEocCw5ODcwMSxldCkpPyhhW2x0Pj4yXT1wZSwxPT0oMHwkYShwLDEwMTIwOSxsdCkpPyhmPTEscD0wfF9DKCtfW3BlPj4z''@;'; put 'put ''XSw5ODcwOCkpOihmPW0scD13KSk6KGY9MSxwPTB8X0MoK19bcGU+PjNdLEJlKSksYzw8MjQ+PjI0KXttPWYsZj1iO2NvbnRpbnVlIGV9Yz0wLG09Zix3PXB9aWYoYVtNdD4+Ml09cGUsYVtNdCs0Pj4yXT1CZSwyIT0oMHwkYShwLDk4NzAxLE10KSk/KGFbcnQ+PjJdPXBlLDE9PSgwfCRhKHAs''@;'; put 'put ''MTAxMjA5LHJ0KSk/KGM9MSxmPTB8X0MoK19bcGU+PjNdLDk4NzA4KSk6Zj1iKTooYz0xLGY9MHxfQygrX1twZT4+M10sQmUpKSxtPDwyND4+MjQpe3A9dztjb250aW51ZSBlfW09MCxwPXcsYj1mfWM9MSxtPTEscD1+figrX1tPZT4+M10rMS0rX1ttZT4+M10pPj4+MCxmPX5+KCtfW0xlPj4z''@;'; put 'put ''XSsxLStfW2JlPj4zXSk+Pj4wfWFbbCs0OD4+Ml09MCxhW2wrNDA+PjJdPXAsYVtsKzQ0Pj4yXT1mLG9lPWt0fWZ1bmN0aW9uIGRyZShsKXt2YXIgYyxmLHAsbT0wLEE9MDtmPW9lLG9lPW9lKzMyfDAsYz1mLGFbNDgrKGx8PTApPj4yXT0wLHFoKDB8YVsocD1sKzIwfDApPj4yXSwwLDApLDB8''@;'; put 'put ''ZnVuY3Rpb24gZ3JlKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsdyxtPTAsQT0wO2Zvcih3PW9lLG9lPW9lKzEwNDB8MCxmPXcscD13KzE2fDA7Oyl7aWYoISgwfG12KHAsMTAyNCxsKSkpe2w9MTticmVha31pZigwfChtPTB8TEwocCw5ODYyNykpKXtBPTQ7YnJlYWt9fXJldHVybiA0PT0oMHxB''@;'; put 'put ''KSYmKGFbZis0Pj4yXT1wLGFbZj4+Ml09bSs5LGFbZis4Pj4yXT1sLGw9MHxmdW5jdGlvbiBkVyhsLGMpe2N8PTA7dmFyIHAsbSxmPTA7cmV0dXJuIG09b2Usb2U9b2UrMTAyNHwwLHA9bSxSRihsfD0wKSw5MT09KDB8KGY9KGY9MHx1ZVthW2w+PjJdPj4wXSk8PDI0Pj4yND9mPDwyND4+MjQ6''@;'; put 'put ''MjU1JigwfFZUKGwpKSkpJiYoYVtsPj4yXT0xKygwfGFbbD4+Ml0pLGpUKGwscCksMD09KDB8WlQocCxjKSkpJiYoalQobCxwKSwwPT0oMHxaVChwLGMrOHwwKSkpJiYoalQobCxwKSwwPT0oMHxaVChwLGMrMTZ8MCkpKT8oalQobCxwKSxmPTAhPSgwfFpUKHAsYysyNHwwKSkmMSk6Zj0xLG9l''@;'; put 'put ''PW0sMHxmfShmLGMpKSxvZT13LDB8bH0oMHxhW3A+PjJdLGMpfHwoYVtsKzMyPj4yXT1+fihBPStfW2M+PjNdKSxhW2wrMzY+PjJdPX5+KG09K19bYys4Pj4zXSksYVtsKzQwPj4yXT1+figrX1tjKzE2Pj4zXS1BKSxhW2wrNDQ+PjJdPX5+KCtfW2MrMjQ+PjNdLW0pKSxvZT1mfWZ1bmN0aW9u''@;'; put 'put ''IHByZShsKXt2YXIgYyxmLHAsbTttPW9lLG9lPW9lKzE2fDAsYz1tKzR8MCxmPW0sYVs0OCsobHw9MCk+PjJdPTAscWgoMHxhWyhwPWwrMjB8MCk+PjJdLDYsMCksKDB8SDMoMHxhW3A+PjJdLDEsYykpPDwyND4+MjQmJigwfEgzKDB8YVtwPj4yXSwxLGYpKTw8MjQ+PjI0JiYoYVtsKzQwPj4y''@;'; put 'put ''XT1hW2M+PjJdLGFbbCs0ND4+Ml09YVtmPj4yXSksb2U9bX1mdW5jdGlvbiBIMyhsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTAsbT0wO2ZvcihhWyhmfD0wKT4+Ml09MCxwPTA7Oyl7aWYocD4+PjA+PWM+Pj4wKXtwPTE7YnJlYWt9aWYobT0wfHZaKGwpLDB8TCQobCkpe3A9MDticmVha31hW2Y+''@;'; put 'put ''PjJdPWFbZj4+Ml08PDh8bSxwPXArMXwwfXJldHVybiAwfHB9ZnVuY3Rpb24gUkYobCl7dmFyIGM9MDtmb3IoYz0wfGFbKGx8PTApPj4yXTsoMjU1JihjPShjPTB8dWVbYz4+MF0pPDwyND4+MjQ/Yzw8MjQ+PjI0OjI1NSYoMHxWVChsKSkpKTw8MjQ+PjI0JiYwfEtjKDI1NSZjKTspYVtsPj4y''@;'; put 'put ''XT1jPTErKDB8YVtsPj4yXSl8MH1mdW5jdGlvbiBWVChsKXt2YXIgYz0wO3JldHVybiAwfG12KDB8YVsoYz00KyhsfD0wKXwwKT4+Ml0sMTAyNCwwfGFbbCs4Pj4yXSk/KGFbbD4+Ml09Yz0wfGFbYz4+Ml0sbD0wfHVlW2M+PjBdKTpsPTAsMHxsfWZ1bmN0aW9uIGpUKGwsYyl7Y3w9MDt2YXIg''@;'; put 'put ''Zj0wLHA9MCxtPTA7Zm9yKFJGKGx8PTApLGY9MCxwPTB8YVtsPj4yXTsocD0obT0ocD0wfHVlW3A+PjBdKTw8MjQ+PjI0P3A8PDI0Pj4yNDoyNTUmKDB8VlQobCkpKTw8MjQ+PjI0KSYmNDY9PSgwfHApfChwKy00OHwwKT4+PjA8MTA7KWlmKHVlW2MrZj4+MF09bSxmPWYrMXwwLGFbbD4+Ml09''@;'; put 'put ''cD0xKygwfGFbbD4+Ml0pfDAsMTAyMz09KDB8Zikpe2Y9MTAyMzticmVha311ZVtjK2Y+PjBdPTB9ZnVuY3Rpb24gWlQobCxjKXt2YXIgZixwLG07cmV0dXJuIGN8PTAscD1vZSxvZT1vZSsxNnwwLGY9K3QzKGx8PTAsbT1wKSwoMHxhW20+PjJdKT09KDB8bCk/bD0xOihfW2M+PjNdPWYsbD0w''@;'; put 'put ''KSxvZT1wLDB8bH1mdW5jdGlvbiBfQyhsLGMpe2w9K2wsY3w9MDt2YXIgZj0wO2Rve2lmKDB8WmkoYyw5ODczNSkpe2lmKCEoMHxaaShjLDk4NzM4KSkpe2Y9bCo9Ljc1LGw9bD49MD8uNTotLjU7YnJlYWt9aWYoISgwfFppKGMsOTg3NDEpKSl7Zj1sKj0xMixsPWw+PTA/LjU6LS41O2JyZWFr''@;'; put 'put ''fWlmKDB8WmkoYyw5ODcwOCkmJjB8WmkoYyw5ODc0NCkpe2lmKDB8WmkoYyw5ODc0NikpcmV0dXJuIGY9Mi44MzQ2NDU2NjYzOTk5OTk3KmwsMHwoKGM9MD09KDB8WmkoYyw5ODc0OSkpKT9+fihmKyhmPj0wPy41Oi0uNSkpOjApO2Y9bCo9MjguMzQ2NDU2NjY0LGw9bD49MD8uNTotLjU7YnJl''@;'; put 'put ''YWt9Zj1sPj0wPy41Oi0uNX1lbHNlIGY9bCo9NzIsbD1sPj0wPy41Oi0uNX13aGlsZSgwKTtyZXR1cm4gMHx+fihsK2YpfWZ1bmN0aW9uIF9mKGwsYyxmKXtsfD0wLGN8PTA7dmFyIHA9MCxtPTA7Zm9yKGFbKGZ8PTApPj4yXT0wLHA9MDs7KXtpZihwPj4+MD49Yz4+PjApe3A9MTticmVha31p''@;'; put 'put ''ZihtPTB8dloobCksMHxMJChsKSl7cD0wO2JyZWFrfWFbZj4+Ml09YVtmPj4yXXxtPDwocDw8MykscD1wKzF8MH1yZXR1cm4gMHxwfWZ1bmN0aW9uIHBXKCl7dmFyIGw7cmV0dXJuIHNpKDAsMSwxMDgyMjQsMTA1NDkzKSxmdW5jdGlvbiBDRShsLGMpeyhmdW5jdGlvbiB2bShsKXt2YXIgYz0w''@;'; put 'put ''LGY9MDtjPTB8YVszMisobHw9MCk+PjJdO2U6ZG97aWYoMHxjKWZvcig7Oyl7aWYoIShmPTB8YVtjPj4yXSkpYnJlYWsgZTsxMDM9PSgwfHVlW2Y+PjBdKSYmMHxMTChmLDExMTUwOSkmJl9FKGwsMCwwfGFbYys0Pj4yXSksYz1jKzh8MH19d2hpbGUoMCl9KShsfD0wKSx1ZVtsKzQ0Pj4wXT0w''@;'; put 'put ''LGZ1bmN0aW9uIGtFKGwpe3ZhciBjOyhjPTB8UDYobHw9MCwyLDExMTUyMikpPyhhW2wrMTQ4Pj4yXT1hWzEyKygwfGFbYysxNj4+Ml0pPj4yXSxsPTMwMCk6bD05OTl9KGwpLGZ1bmN0aW9uIHBsZShsKXt2YXIgYz0wO2FbKGM9MTA4KyhsfD0wKXwwKT4+Ml09MCxhW2wrMTEyPj4yXT0zMixh''@;'; put 'put ''W2wrMTE2Pj4yXT0tMSxhW2wrMTIwPj4yXT0zMyxhW2wrMTI0Pj4yXT02MyxhW2wrMTI4Pj4yXT01NSxhW2wrMTMyPj4yXT0wLGFbbCsxMzY+PjJdPTAsYVtsKzE0MD4+Ml09MCxjPTB8QXMoYywwfGFbNDU4MV0pLGFbbCsxNDQ+PjJdPWN9KGwpfShsPTB8ZnVuY3Rpb24gdDdlKGwsYyl7dmFy''@;'; put 'put ''IGY7cmV0dXJuIGx8PTAsY3w9MCwwfChmPTB8bXIoMzkyKSkmJihhW2Y+PjJdPTIwMTU2LGFbZisxNj4+Ml09MjMsYVtmKzMyPj4yXT1sLGFbZiszNj4+Ml09YyksMHxmfSgwLDEpKSwwfGx9ZnVuY3Rpb24gQTcobCxjLGYpe2N8PTA7dmFyIHAsbSxBLHcsYixrPTAsTT0wLEQ9MCxSPTA7cmV0''@;'; put 'put ''dXJuIGI9b2Usb2U9b2UrMzA0fDAsdz1iKzI0fDAsQT1iKzh8MCxwPWIsbT1iKzQwfDAsOTk5IT0oMHxtRShsfD0wLGZ8PTApKT8tMT09KDB8ZnVuY3Rpb24gWVIobCxjKXtsfD0wO3ZhciBtLEEsYixmPTAscD0wLHc9MDtyZXR1cm4gYj1vZSxvZT1vZSsxNnwwLG09YixmMChjfD0wLDEzNzQ4''@;'; put 'put ''MywyODAsMSksYVsxNDQrKDB8YVsoQT1jKzE2fDApPj4yXSk+PjJdPWwsKDB8aGkoYykpIT0oMHxjKSYmKGFbMTQ0KygwfGFbMTYrKDB8aGkoYykpPj4yXSk+PjJdPWwpLGY9bCsxNzJ8MCwwIT0oMHwocD0wfExpKGMsMTExMjI2KSkpJiYoYVtmPj4yXT0wLDk5OT09KDB8bUUobCxwKSkpPyhm''@;'; put 'put ''PTB8dVcobCwxLHApLGFbbT4+Ml09cCxhW20rND4+Ml09ZixYcigxLDExMTIzMyxtKSxmPS0xKToocD0wfGFbZj4+Ml0pPyhQNSgxKSxmdW5jdGlvbiBlOWUobCxjKXtsfD0wLGN8PTA7dmFyIG0sayxNLGY9MCxwPTAsQT0wLHc9MCxiPTA7TT1vZSxvZT1vZSsxNnwwLG09TSs4fDAsQT1NLGY9''@;'; put 'put ''MHxtcig5NiksYVs4KygwfGFbKGs9bCsxNnwwKT4+Ml0pPj4yXT1mLCgoZj0wfExpKGwsMTAxMjEzKSl8fDB8KGY9MHxxdSgxMDEyMjIpKSkmJihiPTMpLDM9PSgwfGIpJiZPdCgxMDEyMzQsMHxmLDEpLGY9MjU1JigwfGZ1bmN0aW9uIHQ5ZShsKXt2YXIgYyxmO3JldHVybiBmPW9lLG9lPW9l''@;'; put 'put ''KzE2fDAsYz1mLDAhPSgwfEEwKGw9MHxPYShsfD0wLDB8c2kobCwwLDEwMTgwNywwKSwxMDE4MTUpLDEwMTgyMSkpJiYwIT0oMHxBMChsLDEwMTgyOSkpJiYwIT0oMHxBMChsLDEwMTgzNikpJiYwIT0oMHxBMChsLDEwMTgzOSkpJiYwIT0oMHxBMChsLDEwMTg1MCkpJiYwIT0oMHxBMChsLDEw''@;'; put 'put ''MTg2MSkpJiYwIT0oMHxBMChsLDEwMTg3MSkpPzAhPSgwfEEwKGwsMTAxODgyKSkmJjAhPSgwfEEwKGwsMTAxODg4KSk/KDAhPSgwfEEwKGwsMTAxODE1KSkmJjAhPSgwfEEwKGwsMTAxODkzKSkmJihhW2M+PjJdPWwsWHIoMCwxMDE4OTgsYykpLGw9MCk6bD0yOmw9MSxvZT1mLDB8bH0obCkp''@;'; put 'put ''LHVlWzExNSsoMHxhW2s+PjJdKT4+MF09ZixmPTB8TGkobCwxMDEyNDUpLGFbNDcxMzNdPWYsMD09KDB8ZikmJihhWzQ3MTMzXT1hWzQ3MTMyXSkscD0rY2wobCwwfHNpKGwsMCwxMDEyNTUsMCksMCwwKSxfW2FbOCsoMHxhW2s+PjJdKT4+Ml0+PjNdPXAsZj0wfExpKGwsMTAxMjYzKTtlOmRv''@;'; put 'put ''e2lmKGYpe3N3aXRjaCgwfHVlW2Y+PjBdKXtjYXNlIDc2OmlmKCEoMHxaaShmLDEwMTI3MSkpKXtmPTE7YnJlYWsgZX1icmVhaztjYXNlIDY2OmlmKCEoMHxaaShmLDEwMTI3NCkpKXtmPTI7YnJlYWsgZX1icmVhaztjYXNlIDgyOmY9KGY9MD09KDB8WmkoZiwxMDEyNzcpKSk/MzowO2JyZWFr''@;'; put 'put ''IGU7ZGVmYXVsdDpmPTA7YnJlYWsgZX1mPTB9ZWxzZSBmPTB9d2hpbGUoMCk7YVsxMTYrKDB8YVtrPj4yXSk+PjJdPWY8PDJ8KGM8PDI0Pj4yND09MD8wOmYpLHA9K2NsKGwsMHxzaShsLDAsMTAxMjgwLDApLC4yNSwuMDIpLF9bQT4+M109cCxhWzI0OCsoMHxhW2s+PjJdKT4+Ml09fn4oKHAq''@;'; put 'put ''PTcyKSsocD49MD8uNTotLjUpKSwoZj0wfEEyKGwsMHxzaShsLDAsMTAxMjg4LDApLDApKT8oYVttPj4yXT1BLDB8JGEoZiwxMDEyMDksbSk/KHA9K19bQT4+M10pPC4wMiYmKF9bQT4+M109LjAyLHA9LjAyKTooX1tBPj4zXT0uNSxwPS41KSwwfExMKGYsMTAxMjk2KSYmKHVlWzI3NisoMHxh''@;'; put 'put ''W2s+PjJdKT4+MF09MSkpOihfW0E+PjNdPS41LHA9LjUpLGFbMjUyKygwfGFbaz4+Ml0pPj4yXT1+figocCo9NzIpKyhwPj0wPy41Oi0uNSkpLEE9MjU1JigwfGVzKGwsMHxzaShsLDAsMTAxMzA0LDApLDAsMCkpLHVlWzI0MysoMHxhW2s+PjJdKT4+MF09QSxBPTB8UU4oMHxBMihsLDB8c2ko''@;'; put 'put ''bCwwLDEwMTMxNCwwKSwwKSwyMDY3NiwyMDY5MiksYVsyNDQrKDB8YVtrPj4yXSk+PjJdPUEsZnVuY3Rpb24gbjllKGwpe3ZhciBmLGM9MCxwPTA7Zj0wfExpKGx8PTAsMTAxNzY1KTtlOmRve2lmKDB8ZiYmKHA9MHx1ZVtmPj4wXSxwPDwyND4+MjQpKXN3aXRjaChwPDwyND4+MjR8MCl7Y2Fz''@;'; put 'put ''ZSA5NzppZihwPDwyND4+MjQhPTk3fHwwfFppKGYsMTAxNzcxKSlicmVhayBlO2FbODQrKDB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSk+PjJdPTQ7YnJlYWsgZTtjYXNlIDk5OmlmKHA8PDI0Pj4yNCE9OTl8fDB8WmkoZiwxMDE3NzYpKWJyZWFrIGU7YVs4NCsoMHxhWzgrKDB8YVtsKzE2Pj4y''@;'; put 'put ''XSk+PjJdKT4+Ml09MzticmVhayBlO2Nhc2UgMTAxOmlmKHA8PDI0Pj4yNCE9MTAxfHwwfFppKGYsMTAxNzg1KSlicmVhayBlO2FbODQrKDB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSk+PjJdPTU7YnJlYWsgZTtjYXNlIDEwMjppZihwPDwyND4+MjQhPTEwMnx8MHxaaShmLDEwMTc5MikpYnJl''@;'; put 'put ''YWsgZTthWzg0KygwfGFbOCsoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXT0yO2JyZWFrIGU7ZGVmYXVsdDppZighKChjPStwcChmKSk+MCkpYnJlYWsgZTthWzg0KyhsPTB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSk+PjJdPTEsX1tsKzE2Pj4zXT1jO2JyZWFrIGV9fXdoaWxlKDApfShsKSxBPTB8''@;'; put 'put ''R29lKGwsMTAxMzI0LDY0KygwfGFbOCsoMHxhW2s+PjJdKT4+Ml0pfDApLHVlWzgwKyhmPTB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjBdPUEsR29lKGwsMTAxMzI5LGYrNDh8MCksZj0wfHIxKDB8TGkobCwxMDEzMzQpKSx1ZVs4MisoMHxhWzgrKDB8YVtrPj4yXSk+PjJdKT4+MF09ZixmPTB8''@;'; put 'put ''TGkobCwxMDEzNDEpO2Rve2lmKGYpZj05MD09KDB8ZTMoZikpJjEsYj0yNztlbHNle2lmKDB8KGY9MHxMaShsLDEwMTM0OCkpKXtmPSgzMnx1ZVtmPj4wXSk8PDI0Pj4yND09MTA4JjEsYj0yNzticmVha30wfChmPTB8TGkobCwxMDEzNjApKSYmKGY9MHxyMShmKSxiPTI3KX19d2hpbGUoMCk7''@;'; put 'put ''Mjc9PSgwfGIpJiYodWVbODErKDB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjBdPWYpLGFbNDcxMzVdPTB8UU4oMHxMaShsLDEwMTM3MCksMjA3MDgsMjA3MjQpLHVlWzE5NDk1NF09MHxyMSgwfExpKGwsMTAxMzgyKSksYVs0NzEzOF09MCxhWzQ3MTM5XT0wLF9bMjQrKDB8YVs4KygwfGFbaz4+''@;'; put 'put ''Ml0pPj4yXSk+PjNdPTAsMzA9PSgwfChiPTAhPSgwfChmPTB8TGkobCwxMDEzOTQpKSkmJjAhPSgwfHVlW2Y+PjBdKT8zMjozMCkpJiYwfCh3PTB8TGkobCwxMDEzOTgpKSYmMHx1ZVt3Pj4wXSYmKGY9dyxiPTMyKSwzMj09KDB8YikmJihwPStwcChmKSxfWzI0KygwfGFbOCsoMHxhW2s+PjJd''@;'; put 'put ''KT4+Ml0pPj4zXT1wKSx1RChsKSxfWzIzMjk1XT0xZTM3LGFbNDcxNDBdPTB8c2kobCwwLDEwMTQwOSwwKSxhWzQ3MTQzXT0wfHNpKGwsMCwxNDEwMzQsMCksYVs0NzE0NF09MHxzaShsLDAsMTA1NDk2LDApLGFbNDcxNDVdPTB8c2kobCwxLDE0MTA0OCwwKSxhWzQ3MTQ2XT0wfHNpKGwsMSwx''@;'; put 'put ''NDExMTYsMCksYVs0NzE0N109MHxzaShsLDEsMTA4MjMwLDApLGFbNDcxNDhdPTB8c2kobCwxLDE0MDgyMywwKSxhWzQ3MTQ5XT0wfHNpKGwsMSwxMDE0MTgsMCksYVs0NzE1N109MHxzaShsLDEsMTQxMDgyLDApLGFbNDcxNTBdPTB8c2kobCwxLDEwMTQyOCwwKSxhWzQ3MTUxXT0wfHNpKGws''@;'; put 'put ''MSwxMDE0MzcsMCksYVs0NzE1Ml09MHxzaShsLDEsMTAxNDQ2LDApLGI9MHxzaShsLDEsMTA4MjI0LDApLGFbNDcxNTRdPWIsYnx8KGFbNDcxNTRdPTB8c2kobCwxLDEwODIyNCwxMDU0OTMpKSxhWzQ3MTU1XT0wfHNpKGwsMSwxMDE0NTYsMCksYVs0NzE1OF09MHxzaShsLDEsMTAxMzA0LDAp''@;'; put 'put ''LGFbNDcxNzJdPTB8c2kobCwxLDEwMTQ2MywwKSxhWzQ3MTYxXT0wfHNpKGwsMSwxMDE0MDksMCksYVs0NzE1M109MHxzaShsLDEsMTA1NDk2LDApLGFbNDcxNTldPTB8c2kobCwxLDE0MTA3NiwwKSxhWzQ3MTYwXT0wfHNpKGwsMSwxMDE0NzIsMCksYVs0NzE2M109MHxzaShsLDEsMTAxNDg0''@;'; put 'put ''LDApLGFbNDcxNjJdPTB8c2kobCwxLDEwMTM0OCwwKSxhWzQ3MTY0XT0wfHNpKGwsMSwxMDE0ODksMCksYVs0NzE2NV09MHxzaShsLDEsMTQxMDI0LDApLGFbNDcxNjZdPTB8c2kobCwxLDEzNzI5NywwKSxhWzQ3MTU2XT0wfHNpKGwsMSwxMDE1MDAsMCksYVs0NzE2N109MHxzaShsLDEsMTAx''@;'; put 'put ''NTEwLDApLGFbNDcxNjhdPTB8c2kobCwxLDEwMTUxNiwwKSxhWzQ3MTY5XT0wfHNpKGwsMSwxMDE1MjIsMCksYVs0NzE3MF09MHxzaShsLDEsMTAxNTMwLDApLGFbNDcxNzFdPTB8c2kobCwxLDEwMTUzOSwwKSxhWzQ3MTczXT0wfHNpKGwsMSwxNDEwMzQsMCksYVs0NzE3NF09MHxzaShsLDIs''@;'; put 'put ''MTAxNTQxLDApLGFbNDcxNzZdPTB8c2kobCwyLDE0MDgyMywwKSxhWzQ3MTc3XT0wfHNpKGwsMiwxMDE0MTgsMCksYVs0NzE3OV09MHxzaShsLDIsMTAxNDI4LDApLGFbNDcxODBdPTB8c2kobCwyLDEwMTQzNywwKSxhWzQ3MTgxXT0wfHNpKGwsMiwxMDE0NDYsMCksYVs0NzE4Ml09MHxzaShs''@;'; put 'put ''LDIsMTA4MjI0LDApLGFbNDcxODNdPTB8c2kobCwyLDEwMTQ1NiwwKSxhWzQ3MTkyXT0wfHNpKGwsMiwxMDE1NDgsMCksYVs0NzE4NF09MHxzaShsLDIsMTAxNTU5LDApLGFbNDcxOTVdPTB8c2kobCwyLDEwMTU2MywwKSxhWzQ3MTk2XT0wfHNpKGwsMiwxMDE1NzMsMCksYVs0NzE5N109MHxz''@;'; put 'put ''aShsLDIsMTAxNTgzLDApLGFbNDcxOThdPTB8c2kobCwyLDEwMTU5MywwKSxhWzQ3MTk5XT0wfHNpKGwsMiwxMDE2MDMsMCksYVs0NzIwMF09MHxzaShsLDIsMTAxNjE3LDApLGFbNDcyMDFdPTB8c2kobCwyLDEwMTYzMSwwKSxhWzQ3MjAyXT0wfHNpKGwsMiwxMDE2NDYsMCksYVs0NzIwM109''@;'; put 'put ''MHxzaShsLDIsMTAxNjYwLDApLGFbNDcxNzVdPTB8c2kobCwyLDEwMTY3MSwwKSxhWzQ3MTg3XT0wfHNpKGwsMiwxMDEzMDQsMCksYVs0NzE4NV09MHxzaShsLDIsMTQxMDgyLDApLGFbNDcxODZdPTB8c2kobCwyLDEwMTY3OCwwKSxhWzQ3MTg4XT0wfHNpKGwsMiwxMDE2ODcsMCksYVs0NzE4''@;'; put 'put ''OV09MHxzaShsLDIsMTAxNjk3LDApLGFbNDcxOTBdPTB8c2kobCwyLDEwMTUxMCwwKSxhWzQ3MTkxXT0wfHNpKGwsMiwxMDE1MjIsMCksYVs0NzIwNF09MHxzaShsLDIsMTAxNzA4LDApLGFbNDcyMDVdPTB8c2kobCwyLDEwMTcxNywwKSxhWzQ3MjA2XT0wfHNpKGwsMiwxMDE0NjMsMCksZj0w''@;'; put 'put ''fGZ1bmN0aW9uIEJyZShsKXt2YXIgcCxtLHcsYz0wLGY9MCxBPTA7cmV0dXJuIHc9b2Usb2U9b2UrMTZ8MCxtPXcrOHwwLHA9dywwIT0oMHwoYz0wfExpKGx8PTAsOTk3OTYpKSkmJjAhPSgwfHVlW2M+PjBdKXx8MCE9KDB8KGM9MHxMaShsLDk5ODA4KSkpJiYwIT0oMHx1ZVtjPj4wXSk/KGY9''@;'; put 'put ''YyxBPTUpOmM9MCw1PT0oMHxBKSYmKChjPTB8RVcoZiwwLDEyMCkpfHwoYVtwPj4yXT0wfCRyKGwpLFhyKDAsOTk4MTUscCksYVttPj4yXT1mLFhyKDMsOTk4NjgsbSkpKSxvZT13LDB8Y30obCksYVs4OCsoMHxhWzgrKDB8YVtrPj4yXSk+PjJdKT4+Ml09ZiwwfChmPTB8TGkobCwxNDEwNjAp''@;'; put 'put ''KSYmMHx1ZVtmPj4wXSYmKGw9MHx2MihmLGwpLGFbOTIrKDB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjJdPWwpLG9lPU19KGMsMSZhW2FbbCsxODA+PjJdPj4yXSksZj0wfGFbOCsoMHxhW0E+PjJdKT4+Ml0sYVs4KygwfGFbMTYrKDB8aGkoYykpPj4yXSk+PjJdPWYsZnVuY3Rpb24gdGxlKCl7''@;'; put 'put ''dmFyIGwsYyxmO2w9b2Usb2U9b2UrMzJ8MCxjPWwrMTZ8MCxhWyhmPWwpPj4yXT0wLGFbZis0Pj4yXT0wLGFbZis4Pj4yXT0wLGFbZisxMj4+Ml09MCxhW2M+PjJdPWFbZj4+Ml0sYVtjKzQ+PjJdPWFbZis0Pj4yXSxhW2MrOD4+Ml09YVtmKzg+PjJdLGFbYysxMj4+Ml09YVtmKzEyPj4yXSxO''@;'; put 'put ''USgwLGMpLGFbYz4+Ml09YVtmPj4yXSxhW2MrND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLFZRKDAsYyksYVtjPj4yXT1hW2Y+PjJdLGFbYys0Pj4yXT1hW2YrND4+Ml0sYVtjKzg+PjJdPWFbZis4Pj4yXSxhW2MrMTI+PjJdPWFbZisx''@;'; put 'put ''Mj4+Ml0seFEoMCxjKSxvZT1sfSgpLDB8KGY9MHxhW3A+PjJdKSYmKG5vWzEyNyZmXShjKSwwfCh3PTB8YVtwKzQ+PjJdKSkmJihhWzE0OCsoMHxhW0E+PjJdKT4+Ml09dyksUDUoMCksZj0wKTpmPS0xLG9lPWIsMHxmfShsLGMpKT9sPS0xOihmPTE2KyhsPTB8YVtjKzE2Pj4yXSl8MCwwfHVl''@;'; put 'put ''WzgxKygwfGFbbCs4Pj4yXSk+PjBdPyhNPStfW2Y+PjNdLEQ9K19bbCs0MD4+M10sUj0rX1tsKzMyPj4zXSxhW0E+PjJdPX5+KChrPStfW2wrMjQ+PjNdKSsoaz49MD8uNTotLjUpKSxhW0ErND4+Ml09fn4oTSsoTT49MD8uNTotLjUpKSxhW0ErOD4+Ml09fn4oRCsoRD49MD8uNTotLjUpKSxh''@;'; put 'put ''W0ErMTI+PjJdPX5+KFIrKFI+PTA/LjU6LS41KSksYW8obSw5ODg5OSxBKSk6KEQ9K19bbCsyND4+M10sTT0rX1tsKzMyPj4zXSxrPStfW2wrNDA+PjNdLGFbdz4+Ml09fn4oKFI9K19bZj4+M10pKyhSPj0wPy41Oi0uNSkpLGFbdys0Pj4yXT1+fihEKyhEPj0wPy41Oi0uNSkpLGFbdys4Pj4y''@;'; put 'put ''XT1+fihNKyhNPj0wPy41Oi0uNSkpLGFbdysxMj4+Ml09fn4oaysoaz49MD8uNTotLjUpKSxhbyhtLDk4ODk5LHcpKSxmNyhjLDEwMjY3MSxtLDE5NTA1OSksbD0wKToobD0wfHVXKGwsMSxmKSxhW3A+PjJdPWYsYVtwKzQ+PjJdPWwsWHIoMSwxMTEyMzMscCksbD0tMSksb2U9YiwwfGx9ZnVu''@;'; put 'put ''Y3Rpb24gYzdlKGwsYyxmLHAsbSl7cHw9MCxtfD0wO3ZhciB3LGssRCxBPTAsYj0wLE09MDtEPW9lLG9lPW9lKzE2fDAsdz1EKzh8MCxBPUQsYz0wfGFbNjArKGN8PTApPj4yXSxFRihsfD0wLGZ8PTApLGFbNTYrKGs9MHxhW2wrMTY0Pj4yXSk+PjJdPTB8Q2IoaywwfGFbays1Mj4+Ml0pLDAh''@;'; put 'put ''PSgwfGYwKGMsMTM3NDgzLDAsMSkpJiYwIT0oMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdKXx8NjcxMDg4NjQmYVtrKzE1Mj4+Ml0/TT01OihjNyg5ODkxMSxBKSxjPS0xKTtkb3tpZig1PT0oMHxNKSl7aWYoMHxwJiYoYj0wfFIwKDQwOTYpLGFbcD4+Ml09YiwwfGIpKXthWyhBPWsrNDB8MCk+''@;'; put 'put ''PjJdPWIsYVtrKzQ0Pj4yXT00MDk2LGFbKGY9ays0OHwwKT4+Ml09MCxjPTB8ZE4obCxjKSxJOShrKSxjfHwoYVtwPj4yXT1hW0E+PjJdLGFbbT4+Ml09YVtmPj4yXSkseEYobCk7YnJlYWt9WHIoMSw5ODkzMix3KSxjPS0xfX13aGlsZSgwKTtyZXR1cm4gb2U9RCwwfGN9ZnVuY3Rpb24gZ1co''@;'; put 'put ''bCxjKXtfRShsfD0wLDAsY3w9MCl9ZnVuY3Rpb24gQXJlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEhlLGplLGV0LHJ0LEdlLGt0LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxsdD0wLE10PTA7''@;'; put 'put ''a3Q9b2Usb2U9b2UrNDI4OHwwLEdlPWt0Kzh8MCxydD1rdCxsdD00LE10PTB8UjAoNDApLGFbTXQ+PjJdPTAsSGU9a3QrNDE1MnwwLGplPWt0KzQxNDh8MCxldD1rdCs0MTI4fDAsYj1rdCs0MTEyfDAsaz1rdCsxNnwwLE1uPTAsdz0wfHFpKDI0LDB8bCksbT1NbixNbj0wLDAhPSgwfG0pJjAh''@;'; put 'put ''PSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMTtlOmRve2lmKDEhPSgwfEEpKXtpZighdyl7YVtjPj4yXT0wLG09MDticmVha31pZihNbj0wLEQ9MHxFcygyOSwwfGYsMHxqZSwwfEhlKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9''@;'; put 'put ''KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKWlmKE1uPTAsTT0wfHFpKDIzLDQwKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxtLDB8''@;'; put 'put ''eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKWlmKE1uPTAsamMoNywwfGV0LDB8YiwwfGssMjQsODUpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMSE9KDB8QSkpaWYoTW49MCxmPTB8''@;'; put 'put ''cWkoMjUsMHxsKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKXtmb3Iodz0wfGFbKGI9ZXQrMTZ8MCk+PjJdLG09ZjttOyl7aWYoTW49MCxPbCgwfHcsMHxtLDApLEE9''@;'; put 'put ''TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW0E+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfEEsMHx4biksT249eG4pOmY9LTEsMT09KDB8Zikpe0JlPTAsTGU9YixPZT1NLGJlPUQsbT1PbixNPTE1O2JyZWFrIGV9aWYoTW49MCxtPTB8T2woODYsMHxsLDB8bSksQT1NbixN''@;'; put 'put ''bj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGY9MHxUaSgwfGFbQT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8QSwwfHhuKSxPbj14bik6Zj0tMSwxPT0oMHxmKSl7QmU9MCxMZT1iLE9lPU0sYmU9RCxtPU9uLE09MTU7YnJlYWsgZX19TXQ9MHxvNCgxODgwNjgsMSwwfE10LDB8bHQpLGx0PU9uLG09''@;'; put 'put ''TW49MCxNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKT8oQmU9TSxMZT1iLE9lPU0sYmU9RCxtPU9uLE09MTUpOihCZT1NLExlPWIsT2U9TSxiZT1ELG09MCxNPTE1KX1lbHNlIEJl''@;'; put 'put ''PTAsTGU9MCxPZT1NLGJlPUQsbT1PbixNPTE1O2Vsc2UgQmU9MCxMZT0wLE9lPU0sYmU9RCxtPU9uLE09MTU7ZWxzZSBCZT0wLExlPTAsT2U9TSxiZT1ELG09T24sTT0xNTtlbHNlIEJlPTAsTGU9MCxPZT0wLGJlPUQsbT1PbixNPTE1fWVsc2UgQmU9MCxMZT0wLE9lPTAsYmU9MCxtPU9uLE09''@;'; put 'put ''MTV9d2hpbGUoMCk7ZG97aWYoMTU9PSgwfE0pKXtlOmZvcig7Oyl7dDpkb3tpZihtKU09MSxrPTAsRD1CZSxiPTAsdz1PZSxmPU9lO2Vsc2V7aWYoTW49MCxmPTB8cWkoMjUsMHxsKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfE10LDB8bHQpKXx8''@;'; put 'put ''V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXttPU9uLGJlPUs9YmUsT2U9cGU9T2UsTGU9bWU9TGUsQmU9TT1CZSxNPTE1O2NvbnRpbnVlIGV9Zm9yKG1lPWJlKygwfGFbamU+PjJdKXwwLGs9MCxNPTAsYj0wO2Y7KXtpZihNbj0wLG09MHxPbCgwfGFbTGU+PjJdLDB8ZiwtMSks''@;'; put 'put ''QT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxUaSgwfGFbQT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8QSwwfHhuKSxPbj14bik6dz0tMSwxPT0oMHx3KSl7bT1PbixiZT1LPWJlLE9lPXBlPU9lLExlPW1lPUxlLEJlPU09QmUsTT0xNTtjb250aW51ZSBlfWlmKDA9PSgwfG0pJiYz''@;'; put 'put ''PT0oMHx1ZVsxMTkrKDB8YVtmKzE2Pj4yXSk+PjBdKSl7aWYoTSl3PU07ZWxzZXtpZihNbj0wLGFbcnQ+PjJdPWIsRXMoMzAsMHxtZSwxMzczOTUsMHxydCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxP''@;'; put 'put ''bj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiZT1LPWJlLE9lPXBlPU9lLExlPW1lPUxlLEJlPU09QmUsTT0xNTtjb250aW51ZSBlfWlmKE1uPTAsdz0wfEVzKDMxLDB8bCwwfGJlLDEpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkp''@;'; put 'put ''fHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7Y29udGludWUgZX1pZihNbj0wLEpvKDUzLDB8dywxMzc0ODMsMjgwLDEpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxh''@;'; put 'put ''W20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7Y29udGludWUgZX1hW0JlKyhiPDwyKT4+Ml09dyxrPTEsYj1iKzF8MH1pZihNbj0wLEpvKDU0LDB8bCwwfGYsMHx3''@;'; put 'put ''LDB8ZXQpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7Y29udGludWUgZX19ZWxzZSB3''@;'; put 'put ''PU07aWYoTW49MCxmPTB8T2woODYsMHxsLDB8ZiksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiZT1LPWJlLE9lPXBlPU9lLExlPW1lPUxlLEJlPU09QmUs''@;'; put 'put ''TT0xNTtjb250aW51ZSBlfU09d31pZihNbj0wLGY9MHxxaSgyNSwwfGwpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1t''@;'; put 'put ''ZT1MZSxCZT1NPUJlLE09MTU7Y29udGludWUgZX1mb3Iodz0xMCxEPUJlLFI9T2UsRz1PZSxwZT1PZTs7KXtpZighZil7TT0wLHc9RyxmPXBlO2JyZWFrIHR9aWYoTW49MCxtPTB8T2woMHxhW0xlPj4yXSwwfGYsLTEpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChNPTB8VGkoMHxh''@;'; put 'put ''W0E+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfEEsMHx4biksT249eG4pOk09LTEsMT09KDB8TSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7Y29udGludWUgZX1pZihtKU09cGU7ZWxzZXtpZihNbj0wLGFbR2U+PjJdPWIsRXMoMzAsMHxtZSwxMzczOTUsMHxH''@;'; put 'put ''ZSksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiZT1LPWJlLE9lPXBlPU9lLExlPW1lPUxlLEJlPU09QmUsTT0xNTtjb250aW51ZSBlfWlmKE1uPTAsSz0w''@;'; put 'put ''fEVzKDMxLDB8bCwwfGJlLDEpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7Y29udGlu''@;'; put 'put ''dWUgZX1pZihNbj0wLEpvKDUzLDB8SywxMzc0ODMsMjgwLDEpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW0E+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfEEsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe209T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxC''@;'; put 'put ''ZT1NPUJlLE09MTU7Y29udGludWUgZX1pZihNbj0wLEpvKDU0LDB8bCwwfGYsMHxLLDB8ZXQpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYmU9Sz1iZSxP''@;'; put 'put ''ZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7Y29udGludWUgZX1pZigoMHxiKT09KDB8dykpe2lmKHc9Yjw8MSxNbj0wLE09MHxPbCg4NywwfFIsYjw8M3wwKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxtLDB8''@;'; put 'put ''eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXttPU9uLGJlPUs9YmUsT2U9cGU9T2UsTGU9bWU9TGUsQmU9TT1CZSxNPTE1O2NvbnRpbnVlIGV9bT1NLFI9TSxHPU0sQT1NfWVsc2UgbT1ELEE9cGU7YVttKyhiPDwyKT4+Ml09SyxEPW0sYj1iKzF8MCxNPUF9aWYoTW49MCxmPTB8T2woODYsMHxs''@;'; put 'put ''LDB8ZiksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiZT1LPWJlLE9lPXBlPU9lLExlPW1lPUxlLEJlPU09QmUsTT0xNTtjb250aW51ZSBlfXBlPU19fX13''@;'; put 'put ''aGlsZSgwKTtpZihNbj0wLCRsKDEwOCwwfGV0KSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKWlmKCgwfGJlKT09KDB8SGUpfHwoTW49MCwkbCgxMDUsMHxiZSksbT1N''@;'; put 'put ''bixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxNdCwwfGx0KSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxIT0oMHxBKSkpe2lmKCFNKXtpZihNbj0wLG09MHxPbCg4NywwfGYsYjw8MnwwKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoZj0w''@;'; put 'put ''fFRpKDB8YVtBPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKXttPU9uLGJlPUs9YmUsT2U9cGU9T2UsTGU9bWU9TGUsQmU9TT1CZSxNPTE1O2NvbnRpbnVlfU09NTg7YnJlYWt9Zm9yKGFbYz4+Ml09MCxtPTA7ISgoMHxtKT49KDB8YikpOyl7aWYo''@;'; put 'put ''TW49MCxxaSgyNiwwfGFbRCsobTw8Mik+PjJdKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoZj0wfFRpKDB8YVtBPj4yXSwwfE10LDB8bHQpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKXttPU9uLGJlPUs9YmUsT2U9cGU9T2UsTGU9bWU9TGUsQmU9TT1CZSxN''@;'; put 'put ''PTE1O2NvbnRpbnVlIGV9bT1tKzF8MH1pZihNbj0wLCRsKDEwNSwwfHcpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8TXQsMHxsdCkpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMSE9KDB8QSkpe009NTY7YnJlYWt9bT1PbixiZT1LPWJlLE9l''@;'; put 'put ''PXBlPU9lLExlPW1lPUxlLEJlPU09QmUsTT0xNX1lbHNlIG09T24sYmU9Sz1iZSxPZT1wZT1PZSxMZT1tZT1MZSxCZT1NPUJlLE09MTU7ZWxzZSBtPU9uLGJlPUs9YmUsT2U9cGU9T2UsTGU9bWU9TGUsQmU9TT1CZSxNPTE1fWlmKDU2PT0oMHxNKSl7bT0wO2JyZWFrfWlmKDU4PT0oMHxNKSl7''@;'; put 'put ''YVtjPj4yXT1iLHVlW3A+PjBdPWs7YnJlYWt9fX13aGlsZSgwKTtyZXR1cm4gSHQoMHxNdCksb2U9a3QsMHxtfWZ1bmN0aW9uIG1XKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbT0wO3JldHVybiAwIT0oMHwobHw9MCkpJiYwIT0oMHxmdW5jdGlvbiBwN2UobCl7bHw9MDt2YXIgYz0wO2U6Zm9y''@;'; put 'put ''KDs7KXtzd2l0Y2goYz1sLGw9bCsxfDAsKGM9MHx1ZVtjPj4wXSk8PDI0Pj4yNCl7Y2FzZSA5NTpjb250aW51ZSBlO2Nhc2UgMDpsPTE7YnJlYWsgZX1pZighKDB8cHYoMjU1JmMpKSl7bD0wO2JyZWFrfX1yZXR1cm4gMHxsfShsKSl8fChsPTk4OTg4KSwoMHwocD0wfHpvKGwpKSk+PTEwND8o''@;'; put 'put ''Zj0wfFFuKHArMjV8MCkpP209NjpmPTA6bT02LDY9PSgwfG0pJiYoJDMoZixsKSxhW2M+PjJdPXApLDB8Zn1mdW5jdGlvbiB5cmUobCxjLGYscCxtKXtsfD0wLHB8PTAsbXw9MCxhWyhjfD0wKT4+Ml09Znw9MCxhW2MrND4+Ml09Zis0MDk2LGFbYysxMj4+Ml09MCxhW2MrOD4+Ml09MCxhW2w+''@;'; put 'put ''PjJdPWMsYVtsKzQ+PjJdPWMsYVtsKzg+PjJdPWYsYVtsKzEyPj4yXT1wLGFbbCsxNj4+Ml09bX1mdW5jdGlvbiB3cmUobCxjLGYscCl7bHw9MCxmfD0wO3ZhciBiLGssbT0wLEE9MCx3PTAsTT0wO3ZXKHB8PTAsY3w9MCksYj1wKzEyfDAsaz1wKzE2fDAsYz0wO2U6Zm9yKDtNPTB8ZDdlKHAp''@;'; put 'put ''LE07KWZvcihjPWMrMXwwLG09MHxhW2I+PjJdLDB8bSYmeDJbNjMmbV0oTSxmKSx3PTB8RnMobCxNKTs7KXtpZighdyljb250aW51ZSBlOygwfChtPTB8YVsoMz09KDB8KEE9MyZhW3c+PjJdKSk/dzp3KzQ4fDApKzQwPj4yXSkpPT0oMHxNKSYmKG09MHxhWygyPT0oMHxBKT93OncrLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSksMHxSaVsxMjcmYVtrPj4yXV0obSwtMSl8fHZXKHAsbSksdz0wfFRzKGwsdyxNKX1yZXR1cm4gMHxjfWZ1bmN0aW9uIGJyZShsKXt2YXIgYz0wO2ZvcihsPTB8YVsxMisoMHxhWyhsfD0wKT4+Ml0pPj4yXTtsOyljPTB8YVtsKzEyPj4yXSxoN2UobCksbD1jfWZ1bmN0aW9uIGg3''@;'; put 'put ''ZShsKXtIdCgwfGFbKGx8PTApPj4yXSksSHQobCl9ZnVuY3Rpb24gdlcobCxjKXtjfD0wO3ZhciBtLEEsYixNLGY9MCxwPTAsdz0wLGs9MDtpZihNPW9lLG9lPW9lKzE2fDAsaz1NKzh8MCxtPU0sKDB8YVsoQT04KyhsfD0wKXwwKT4+Ml0pPT0oMHxhWzQrKGY9MHxhWyhiPWwrNHwwKT4+Ml0p''@;'; put 'put ''Pj4yXSkpe2Y9MHxhW2YrMTI+PjJdO2Rve2lmKGYpdz1mO2Vsc2V7aWYoKHA9MHxRbigxNikpfHwoWHIoMSw5ODk2OSxtKSxXZSgxODgwNjgsMSkpLGFbcCs4Pj4yXT1hW2I+PjJdLGFbcCsxMj4+Ml09MCxmPTB8UW4oNGU2KSxhW3A+PjJdPWYsZil7YVtwKzQ+PjJdPWYrNGU2LGFbMTIrKDB8''@;'; put 'put ''YVtiPj4yXSk+PjJdPXAsdz1wO2JyZWFrfVhyKDEsOTg5NjksayksV2UoMTg4MDY4LDEpfX13aGlsZSgwKTthW2I+PjJdPXcsYVtBPj4yXT1hW3c+PjJdfVJpWzEyNyZhW2wrMTY+PjJdXShjLDEpLGFbQT4+Ml09NCsoaz0wfGFbQT4+Ml0pLGFbaz4+Ml09YyxvZT1NfWZ1bmN0aW9uIGQ3ZShs''@;'; put 'put ''KXt2YXIgZixwLG0sYz0wLEE9MDtyZXR1cm4oMHwoYz0wfGFbKG09OCsobHw9MCl8MCk+PjJdKSk9PSgwfGFbKHA9MHxhWyhmPWwrNHwwKT4+Ml0pPj4yXSk/KDB8cCk9PSgwfGFbbD4+Ml0pP2M9MDooYVtmPj4yXT1jPTB8YVtwKzg+PjJdLGFbbT4+Ml09Yz0wfGFbYys0Pj4yXSxBPTQpOkE9''@;'; put 'put ''NCw0PT0oMHxBKSYmKGFbbT4+Ml09Yz1jKy00fDAsYz0wfGFbYz4+Ml0pLDB8Y31mdW5jdGlvbiBBVyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIGJlLE9lLExlLEJlLGV0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLEhlPTAsamU9MDtl''@;'; put 'put ''dD1vZSxvZT1vZSs0MjcyfDAsQmU9ZXQsSGU9NCxqZT0wfFIwKDQwKSxhW2plPj4yXT0wLGJlPWV0KzQxNDR8MCxPZT1ldCs0MTQwfDAsTGU9ZXQrNDEyMHwwLHc9ZXQrNDEwNHwwLGI9ZXQrOHwwLE1uPTAsbT0wfHFpKDI0LDB8bCksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHA9''@;'; put 'put ''MHxUaSgwfGFbQT4+Ml0sMHxqZSwwfEhlKSl8fFdlKDB8QSwwfHhuKSxPbj14bik6cD0tMTtlOmRve2lmKDEhPSgwfHApKWlmKG0paWYoTW49MCxNPTB8RXMoMjksMHxmLDB8T2UsMHxiZSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oZj0wfFRpKDB8YVtwPj4yXSwwfGplLDB8SGUp''@;'; put 'put ''LGZ8fFdlKDB8cCwwfHhuKSxPbj14bik6Zj0tMSwxIT0oMHxmKSlpZihNbj0wLGs9MHxxaSgyMyw0MCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oZj0wfFRpKDB8YVtwPj4yXSwwfGplLDB8SGUpLGZ8fFdlKDB8cCwwfHhuKSxPbj14bik6Zj0tMSwxIT0oMHxmKSlpZihNbj0wLGpj''@;'; put 'put ''KDcsMHxMZSwwfHcsMHxiLDI0LDg1KSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPyhmPTB8VGkoMHxhW3A+PjJdLDB8amUsMHxIZSksZnx8V2UoMHxwLDB8eG4pLE9uPXhuKTpmPS0xLDEhPSgwfGYpKWlmKE1uPTAsbT0wfHFpKDI1LDB8bCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgw''@;'; put 'put ''fHhuKT8oZj0wfFRpKDB8YVtwPj4yXSwwfGplLDB8SGUpLGZ8fFdlKDB8cCwwfHhuKSxPbj14bik6Zj0tMSwxIT0oMHxmKSl7Zm9yKEE9MHxhWyh3PUxlKzE2fDApPj4yXSxwPW07cDspe2lmKE1uPTAsT2woMHxBLDB8cCwwKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygobT0wfFRp''@;'; put 'put ''KDB8YVtmPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTptPS0xLDE9PSgwfG0pKXttZT13LHBlPWssSz1NLHA9T24saz0xNDticmVhayBlfWlmKE1uPTAscD0wfE9sKDg2LDB8bCwwfHApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW2Y+PjJd''@;'; put 'put ''LDB8amUsMHxIZSkpfHxXZSgwfGYsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe21lPXcscGU9ayxLPU0scD1PbixrPTE0O2JyZWFrIGV9fWplPTB8bzQoMTg4MDY4LDEsMHxqZSwwfEhlKSxIZT1PbixwPU1uPTAsTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW3A+PjJd''@;'; put 'put ''LDB8amUsMHxIZSkpfHxXZSgwfHAsMHx4biksT249eG4pOmY9LTEsMT09KDB8Zik/KG1lPXcscGU9ayxLPU0scD1PbixrPTE0KToobWU9dyxwZT1rLEs9TSxwPTAsaz0xNCl9ZWxzZSBtZT0wLHBlPWssSz1NLHA9T24saz0xNDtlbHNlIG1lPTAscGU9ayxLPU0scD1PbixrPTE0O2Vsc2UgbWU9''@;'; put 'put ''MCxwZT1rLEs9TSxwPU9uLGs9MTQ7ZWxzZSBtZT0wLHBlPTAsSz1NLHA9T24saz0xNDtlbHNlIGY9MCxwPTA7ZWxzZSBtZT0wLHBlPTAsSz0wLHA9T24saz0xNH13aGlsZSgwKTtlOmRve2lmKDE0PT0oMHxrKSl7dDpmb3IoOzspe2lmKDB8cCl7aWYoTW49MCwkbCgxMDgsMHxMZSkscD1NbixN''@;'; put 'put ''bj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKGY9MHxUaSgwfGFbcD4+Ml0sMHxqZSwwfEhlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6Zj0tMSwxPT0oMHxmKSl7cD1PbixLPVI9SyxwZT1HPXBlLG1lPWs9bWUsaz0xNDtjb250aW51ZX1pZihNbj0wLCRsKDEwNSwwfHBlKSxwPU1uLE1uPTAsMCE9''@;'; put 'put ''KDB8cCkmMCE9KDB8eG4pPygoZj0wfFRpKDB8YVtwPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxwLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKXtwPU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2NvbnRpbnVlfWlmKCgwfEspPT0oMHxiZSkpe2Y9MCxwPTA7YnJlYWsgZX1pZihNbj0w''@;'; put 'put ''LCRsKDEwNSwwfEspLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW3A+PjJdLDB8amUsMHxIZSkpfHxXZSgwfHAsMHx4biksT249eG4pOmY9LTEsMT09KDB8Zikpe3A9T24sSz1SPUsscGU9Rz1wZSxtZT1rPW1lLGs9MTQ7Y29udGludWV9az0xOTticmVha31pZihN''@;'; put 'put ''bj0wLG09MHxxaSgyNSwwfGwpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW3A+PjJdLDB8amUsMHxIZSkpfHxXZSgwfHAsMHx4biksT249eG4pOmY9LTEsMSE9KDB8Zikpe2ZvcihHPUsrKDB8YVtPZT4+Ml0pfDAsdz0xMCxNPXBlLHA9MCxrPXBlLFI9cGU7bTsp''@;'; put 'put ''e2lmKE1uPTAsZj0wfE9sKDB8YVttZT4+Ml0sMHxtLC0xKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoYj0wfFRpKDB8YVtBPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTpiPS0xLDE9PSgwfGIpKXtwPU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2Nv''@;'; put 'put ''bnRpbnVlIHR9aWYoZiliPVI7ZWxzZXtpZihNbj0wLGFbQmU+PjJdPXAsRXMoMzAsMHxHLDEzNzM5NSwwfEJlKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtmPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtwPU9u''@;'; put 'put ''LEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2NvbnRpbnVlIHR9aWYoTW49MCxEPTB8RXMoMzEsMHxsLDB8SywxKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtmPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtw''@;'; put 'put ''PU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2NvbnRpbnVlIHR9aWYoTW49MCxKbyg1MywwfEQsMTM3NDgzLDI4MCwxKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtmPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgw''@;'; put 'put ''fEEpKXtwPU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2NvbnRpbnVlIHR9aWYoTW49MCxKbyg1NCwwfGwsMHxtLDB8RCwwfExlKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtmPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0x''@;'; put 'put ''LDE9PSgwfEEpKXtwPU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2NvbnRpbnVlIHR9aWYoKDB8cCk9PSgwfHcpKXtpZih3PXA8PDEsTW49MCxiPTB8T2woODcsMHxrLHA8PDN8MCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbZj4+Ml0sMHxqZSwwfEhl''@;'; put 'put ''KSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7cD1PbixLPVI9SyxwZT1HPXBlLG1lPWs9bWUsaz0xNDtjb250aW51ZSB0fUE9YixrPWIsZj1ifWVsc2UgQT1NLGY9UjthW0ErKHA8PDIpPj4yXT1ELHA9cCsxfDAsTT1BLGI9Zn1pZihNbj0wLG09MHxPbCg4NiwwfGwsMHxt''@;'; put 'put ''KSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVtmPj4yXSwwfGplLDB8SGUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXtwPU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0O2NvbnRpbnVlIHR9Uj1ifWlmKE1uPTAsJGwoMTA4LDB8TGUp''@;'; put 'put ''LGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW2Y+PjJdLDB8amUsMHxIZSkpfHxXZSgwfGYsMHx4biksT249eG4pOm09LTEsMSE9KDB8bSkpaWYoTW49MCxmPTB8T2woODcsMHxSLHA8PDJ8MCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgw''@;'; put 'put ''fGFbbT4+Ml0sMHxqZSwwfEhlKSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxIT0oMHxBKSl7aWYoKDB8Syk9PSgwfGJlKSlicmVhayBlO2lmKE1uPTAsJGwoMTA1LDB8SyksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxqZSwwfEhlKSl8fFdl''@;'; put 'put ''KDB8bSwwfHhuKSxPbj14bik6QT0tMSwxIT0oMHxBKSl7az0zOTticmVha31wPU9uLEs9Uj1LLHBlPUc9cGUsbWU9az1tZSxrPTE0fWVsc2UgcD1PbixLPVI9SyxwZT1HPXBlLG1lPWs9bWUsaz0xNDtlbHNlIHA9T24sSz1SPUsscGU9Rz1wZSxtZT1rPW1lLGs9MTR9ZWxzZSBwPU9uLEs9Uj1L''@;'; put 'put ''LHBlPUc9cGUsbWU9az1tZSxrPTE0fWlmKDE5PT0oMHxrKSl7Zj0wLHA9MDticmVha31pZigzOT09KDB8aykpYnJlYWt9fXdoaWxlKDApO3JldHVybiBhW2M+PjJdPXAsSHQoMHxqZSksb2U9ZXQsMHxmfWZ1bmN0aW9uIF9yZShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wO2ZvcihmPTAsbT0w''@;'; put 'put ''fEx0KGx8PTApO207KXtmb3IocD0wfHkwKGMsbSk7cDspMHxWbihsLDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSwwKSYmKE9kKGwscCwxKSxmPWYrMXwwKSxwPTB8azAoYyxwKTttPTB8enQobCxtKX1yZXR1cm4gMHxmfWZ1bmN0aW9uIENyZShsKXtyZXR1cm4obD0w''@;'; put 'put ''fEFpKGx8PTAsOTg5OTMsMCkpPzB8YVtsKzg+PjJdOihCcig5ODk5OCw5OTAwMSw1MjksOTkwMTApLDApfWZ1bmN0aW9uIGc3ZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBHLEssYmUsT2UscD0wLEE9MCx3PTAsaz0wLE09MCxEPTAsUj0wLExlPTAsQmU9MDtpZihPZT1vZSxvZT1vZSs0MzIwfDAs''@;'; put 'put ''Sz1PZSxiZT1PZSs0MTg0fDAsRz1PZSs0MTYwfDAscD1PZSs0MHwwLDB8Tm8obHw9MCkpe2ZvcihRYShsLDAsOTkwMTksLTEyLDApLFFhKGwsMSw5OTAzMSwxNiwwKSxSPTB8bVcoZixwLGJlKSxrPTB8ZnVuY3Rpb24gelQobCl7bHw9MDt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wO2Zvcih3''@;'; put 'put ''PW9lLG9lPW9lKzE2fDAsdWVbKEE9dyk+PjBdPTB8dWVbMTg1OTZdLHVlW0ErMT4+MF09MHx1ZVsxODU5N10sdWVbQSsyPj4wXT0wfHVlWzE4NTk4XSx1ZVtBKzM+PjBdPTB8dWVbMTg1OTldLHlXKEE9MHxFYyg5OTEyMCxBLDApLGwpLGM9MHxMdChsKTtjOykwfGFbMTIrKDB8QWkoYyw5OTAz''@;'; put 'put ''MSwwKSk+PjJdfHwoZjAobT0wfE1yKEEsMHwkcihjKSwxKSw5OTAzMSwxNiwxKSxhWzEyKygwfGFbbSsxNj4+Ml0pPj4yXT1jLGFbMTIrKDB8QWkoYyw5OTAzMSwwKSk+PjJdPW0pLGM9MHx6dChsLGMpO2ZvcihmPTB8THQobCk7Zjspe2ZvcihwPTB8YVsxMisoMHxBaShmLDk5MDMxLDApKT4+''@;'; put 'put ''Ml0sYz0wfHkwKGwsZik7Yzspe209MHxhWzEyKygwfEFpKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSw5OTAzMSwwKSk+PjJdO2Rve2lmKCgwfG0pIT0oMHxwKSl7aWYobT4+PjA+cD4+PjApe3JsKEEscCxtLDAsMSk7YnJlYWt9cmwoQSxtLHAsMCwxKTticmVha319''@;'; put 'put ''d2hpbGUoMCk7Yz0wfGswKGwsYyl9Zj0wfHp0KGwsZil9cmV0dXJuIG9lPXcsMHxBfShsKSxNPTB8UW4oKDB8Tm8oaykpPDwyKSx5cmUoRyxPZSs0MTQ0fDAsT2UrNDh8MCwyNCw4OCksQT0wfEx0KGspLEQ9RysxNnwwLHc9UisoMHxhW3A+PjJdKXwwLGY9MDtBOykwfFJpWzEyNyZhW0Q+PjJd''@;'; put 'put ''XShBLC0xKXx8KGFbSz4+Ml09Zixhbyh3LDk5OTMzLEspLExlPTB8eXMoayxSLDEpLGYwKEJlPTB8eXMobCxSLDEpLDk5MDE5LDEyLDApLHVlWzgrKDB8QWkoQmUsOTkwMTksMCkpPj4wXT0xLHA9MHx3cmUoayxBLExlLEcpLG03ZShMZSxCZSksZXkoQmUpLGtyZShsLEJlKSxhW00rKGY8PDIp''@;'; put 'put ''Pj4yXT1CZSxuaShrLExlKSxmPWYrMXwwKSxBPTB8enQoayxBKTtRMShrKSxocyhsLDAsOTkwMTkpLGhzKGwsMSw5OTAzMSksYnJlKEcpLHA9MHxsMChNLGY8PDIpLCgwfFIpIT0oMHxiZSkmJkh0KFIpfWVsc2UgcD0wLGY9MDtyZXR1cm4gYVtjPj4yXT1mLG9lPU9lLDB8cH1mdW5jdGlvbiBt''@;'; put 'put ''N2UobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IocD0wfEx0KGx8PTApO3A7KXttPTB8YVsxMisoMHxhW3ArMTY+PjJdKT4+Ml07ZTpkb3tpZigxPT0oMyZhW20+PjJdfDApKVZuKGMsbSwxKTtlbHNlIGZvcihmPTB8THQobSk7Oyl7aWYoIWYpYnJlYWsgZTtWbihjLGYsMSksZj0wfHp0''@;'; put 'put ''KG0sZil9fXdoaWxlKDApO3A9MHx6dChsLHApfX1mdW5jdGlvbiBleShsKXtyZXR1cm4gMHxfcmUobHw9MCwwfGFbbCs2MD4+Ml0pfWZ1bmN0aW9uIGtyZShsLGMpe3VzKGx8PTAsY3w9MCwwKX1mdW5jdGlvbiB1cyhsLGMsZil7Y3w9MDt2YXIgQSxtPTA7Zm9yKEE9MD09KDB8KGZ8PTApKSxs''@;'; put 'put ''PTB8d3MobHw9MCk7bDspMD09KDB8dWVbOCsoMHxBaShsLDk5MDE5LDApKT4+MF0pJiYwfChtPTB8QkYobCxjLGYpKSYmdXMobCxtLDEmKEE/MD09KDB8bjIoMHwkcihsKSwxMDgwMDYsNykpOjEpKSxsPTB8YnMobCl9ZnVuY3Rpb24gQkYobCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wLG09MCxB''@;'; put 'put ''PTA7Zm9yKHA9MCxBPTB8THQobHw9MCk7QTspKG09MHxNcihjLDB8JHIoQSksMCkpJiYocHx8KHA9MHx5cyhjLDB8JHIobCksMSkpLFZuKHAsbSwxKSksQT0wfHp0KGwsQSk7cmV0dXJuIDAhPSgwfGYpJjA9PSgwfHApJiYocD0wfHlzKGMsMHwkcihsKSwxKSksMHxwJiYoX3JlKHAsbCksTDYo''@;'; put 'put ''bCxwKSwwPT0oMHxuMigwfCRyKHApLDEwODAwNiw3KSkpJiYoYVs4KygwfGYwKHAsOTg5OTMsMTIsMCkpPj4yXT1sKSwwfHB9ZnVuY3Rpb24geVcobCxjKXtsfD0wO3ZhciBwLEEsdyxmPTAsbT0wLGI9MCxrPTAsTT0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsQT13LGY9MHx3cyhjfD0wKSxwPTB8''@;'; put 'put ''YVsxNTcxMl07Zjspe2U6ZG97aWYoMHxuMigwfCRyKGYpLDEwODAwNiw3KSl5VyhsLGYpO2Vsc2UgZm9yKG09MHxNcihsLDB8JHIoZiksMSksZjAobSw5OTAzMSwxNiwxKSxhWzEyKygwfGFbbSsxNj4+Ml0pPj4yXT1mLGM9MHxMdChmKTs7KXtpZighYylicmVhayBlOzB8YVsxMisoMHxBaShj''@;'; put 'put ''LDk5MDMxLDApKT4+Ml0mJihNPTB8JHIoYyksaz0wfCRyKGYpLGI9MHwkcigwfGFbMTIrKDB8QWkoYyw5OTAzMSwwKSk+PjJdKSxhW0E+PjJdPU0sYVtBKzQ+PjJdPWssYVtBKzg+PjJdPWIsVDAocCw5OTEyMyxBKSksYVsxMisoMHxBaShjLDk5MDMxLDApKT4+Ml09bSxjPTB8enQoZixjKX19''@;'; put 'put ''d2hpbGUoMCk7Zj0wfGJzKGYpfW9lPXd9ZnVuY3Rpb24gR1QobCxjLGYpe2Z8PTA7dmFyIEEsdyxiLHA9MCxtPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtrPX5+KChHPStfWyhsfD0wKT4+M10pKyhHPj0wPy41Oi0uNSkpLGw9fn4oKEc9K19bbCs4Pj4zXSkrKEc+PTA/LjU6LS41KSksYj0oKDB8''@;'; put 'put ''KEQ9KHc9fn4oKEc9K19bKGN8PTApPj4zXSkrKEc+PTA/LjU6LS41KSkpLWt8MCkpPi0xP0Q6MC1EfDApPDwxLEQ9RD4+MzF8MSxNPSgoMHwoUj0oQT1+figoRz0rX1tjKzg+PjNdKSsoRz49MD8uNTotLjUpKSktbHwwKSk+LTE/UjowLVJ8MCk8PDEsUj1SPj4zMXwxO2U6ZG97aWYoKDB8Yik+''@;'; put 'put ''KDB8TSkpZm9yKG09MC1ifDAscD1NLShiPj4xKXwwLGM9azs7KXtpZihscChmLGMsbCksKDB8Yyk9PSgwfHcpKWJyZWFrIGU7cD1wK00rKChrPSgwfHApPi0xKT9tOjApfDAsYz1jK0R8MCxsPShrP1I6MCkrbHwwfWVsc2UgZm9yKG09MC1NfDAscD1rLGM9Yi0oTT4+MSl8MDs7KXtpZihscChm''@;'; put 'put ''LHAsbCksKDB8bCk9PSgwfEEpKWJyZWFrIGU7cD0oKE09KDB8Yyk+LTEpP0Q6MCkrcHwwLGM9YytiKyhNP206MCl8MCxsPWwrUnwwfX13aGlsZSgwKX1mdW5jdGlvbiBQRihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBrLE0sUixtPTAsQT0wLHc9MCxiPTAsRD0wO1I9b2Usb2U9''@;'; put 'put ''b2UrMTZ8MCxNPVIsaz1SKzR8MDtkb3tpZigoMHxsKTwxKWY9MDtlbHNle2lmKCgwfGFbKG09cCsxNnwwKT4+Ml0pPj4+MDw0KXtmPTB8d1cobCxjLGYscCk7YnJlYWt9Zm9yKEQ9MHxRbihsPDw1KSxmPTA7KDB8ZikhPSgwfGwpOylYNihBPTB8YVtjKyhmPDwyKT4+Ml0pLGFbKHc9RCsoZjw8''@;'; put 'put ''NSl8MCk+PjJdPWFbKEE9MTYrKDB8YVtBKzE2Pj4yXSl8MCk+PjJdLGFbdys0Pj4yXT1hW0ErND4+Ml0sYVt3Kzg+PjJdPWFbQSs4Pj4yXSxhW3crMTI+PjJdPWFbQSsxMj4+Ml0sYVt3KzE2Pj4yXT1hW0ErMTY+PjJdLGFbdysyMD4+Ml09YVtBKzIwPj4yXSxhW3crMjQ+PjJdPWFbQSsyND4+''@;'; put 'put ''Ml0sYVt3KzI4Pj4yXT1hW0ErMjg+PjJdLGY9ZisxfDA7aWYoND09KDB8YVttPj4yXSkpe3c9cCsyOHwwO2U6ZG97aWYoMiZhW3c+PjJdfDApZm9yKG09cCsyNHwwLGFbbT4+Ml09MHxtcihsPDwyKSxmPTA7Oyl7aWYoKDB8Zik9PSgwfGwpKWJyZWFrIGU7MHwoQT0wfExpKDB8YVtjKyhmPDwy''@;'; put 'put ''KT4+Ml0sOTkxOTApKSYmKGFbTT4+Ml09aywoQT0oMHwkYShBLDEzNzM5NSxNKSk+MCkmKDB8KGI9MHxhW2s+PjJdKSk+LTEpJiYoYVsoMHxhW20+PjJdKSsoZjw8Mik+PjJdPWIpLGY9ZisxfDB9fXdoaWxlKDApO2Y9MHxiVyhsLEQscCksMiZhW3c+PjJdJiZIdCgwfGFbcCsyND4+Ml0pfWVs''@;'; put 'put ''c2UgZj0wO0h0KEQpfX13aGlsZSgwKTtyZXR1cm4gb2U9UiwwfGZ9ZnVuY3Rpb24gd1cobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIGV0LHJ0LGF0LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLEdl''@;'; put 'put ''PTAsbHQ9MCxFdD0wO2lmKGF0PW9lLG9lPW9lKzE0NHwwLHJ0PWF0KzEzNnwwLGV0PWF0KzY0fDAsYmU9YXQsbWU9YXQrMTIwfDAsR2U9YXQrOTZ8MCxsdD0wfGFbMjArKHB8PTApPj4yXSxhWyhCZT1hdCsxMDR8MCk+PjJdPTAsYVtCZSs0Pj4yXT0wLGFbQmUrOD4+Ml09MCxhW0JlKzEyPj4y''@;'; put 'put ''XT0wLCgwfGwpPj0xKXtmb3IoRD0wPT0oMHxsdCksUj1tZSs0fDAsRz1tZSs4fDAsSz1tZSsxMnwwLEhlPUJlKzR8MCxMZT1CZSs4fDAsamU9QmUrMTJ8MCxNPTAsbT0wOygwfE0pIT0oMHxsKTspWDYocGU9MHxhW2MrKE08PDIpPj4yXSksIUQmJjAhPSgwfHVlW2x0K00+PjBdKSYmKGFbbWU+''@;'; put 'put ''PjJdPUE9fn4oKEV0PStfWzE2KyhrPTB8YVtwZSsxNj4+Ml0pPj4zXSkrKEV0Pj0wPy41Oi0uNSkpLGFbUj4+Ml09dz1+figoRXQ9K19baysyND4+M10pKyhFdD49MD8uNTotLjUpKSxhW0c+PjJdPWI9fn4oKEV0PStfW2srMzI+PjNdKSsoRXQ+PTA/LjU6LS41KSksYVtLPj4yXT1rPX5+KChF''@;'; put 'put ''dD0rX1trKzQwPj4zXSkrKEV0Pj0wPy41Oi0uNSkpLG0/KGFbQmU+PjJdPWFbKCgwfGFbQmU+PjJdKT4oMHxBKT9tZTpCZSk+PjJdLGFbSGU+PjJdPWFbKCgwfGFbSGU+PjJdKT4oMHx3KT9tZTpCZSkrND4+Ml0sYVtMZT4+Ml09YVsoKDB8YVtMZT4+Ml0pPCgwfGIpP21lOkJlKSs4Pj4yXSxh''@;'; put 'put ''W2plPj4yXT1hWygoMHxhW2plPj4yXSk8KDB8ayk/bWU6QmUpKzEyPj4yXSk6KGFbQmU+PjJdPWFbbWU+PjJdLGFbQmUrND4+Ml09YVttZSs0Pj4yXSxhW0JlKzg+PjJdPWFbbWUrOD4+Ml0sYVtCZSsxMj4+Ml09YVttZSsxMj4+Ml0pLG09bSsxfDApLE09TSsxfDA7Zm9yKEc9MHxRbihsPDw1''@;'; put 'put ''KSxtPTA7KDB8bSkhPSgwfGwpOylhWyhiZT1HKyhtPDw1KXwwKT4+Ml09YVsobWU9MTYrKDB8YVsxNisoMHxhW2MrKG08PDIpPj4yXSk+PjJdKXwwKT4+Ml0sYVtiZSs0Pj4yXT1hW21lKzQ+PjJdLGFbYmUrOD4+Ml09YVttZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW21lKzEyPj4yXSxhW2JlKzE2''@;'; put 'put ''Pj4yXT1hW21lKzE2Pj4yXSxhW2JlKzIwPj4yXT1hW21lKzIwPj4yXSxhW2JlKzI0Pj4yXT1hW21lKzI0Pj4yXSxhW2JlKzI4Pj4yXT1hW21lKzI4Pj4yXSxtPW0rMXwwO2lmKCgwfChSPTB8dHAobCxHLDB8YVsoRD1wKzh8MCk+PjJdKSkpPj0xKXtmb3IoKE09MCE9KDB8bHQpKT8oQT0oKDB8''@;'; put 'put ''YVtMZT4+Ml0pKygwfGFbQmU+PjJdKXwwKS8yfDAsbT0oKDB8YVtqZT4+Ml0pKygwfGFbSGU+PjJdKXwwKS8yfDApOihBPTAsbT0wKSxhW0dlKzQ+PjJdPW0sYVtHZT4+Ml09QSxrPTB8bXIobDw8NCksYj1wKzE2fDAsbT0wOyEoKDB8bSk+PSgwfGwpKTspQT0wfGFbYysobTw8Mik+PjJdLHc9''@;'; put 'put ''aysobTw8NCl8MCxhW2srKG08PDQpKzEyPj4yXT1tLDM9PSgwfGFbYj4+Ml0pPyhCZT0xNisoMHxhW0ErMTY+PjJdKXwwLEhlPTB8YVtEPj4yXSxqZT0wfCRyKEEpLGFbZXQ+PjJdPWFbQmU+PjJdLGFbZXQrND4+Ml09YVtCZSs0Pj4yXSxhW2V0Kzg+PjJdPWFbQmUrOD4+Ml0sYVtldCsxMj4+''@;'; put 'put ''Ml09YVtCZSsxMj4+Ml0sYVtldCsxNj4+Ml09YVtCZSsxNj4+Ml0sYVtldCsyMD4+Ml09YVtCZSsyMD4+Ml0sYVtldCsyND4+Ml09YVtCZSsyND4+Ml0sYVtldCsyOD4+Ml09YVtCZSsyOD4+Ml0sYVtydD4+Ml09YVtHZT4+Ml0sYVtydCs0Pj4yXT1hW0dlKzQ+PjJdLEE1KGV0LHcsUixIZSxy''@;'; put 'put ''dCkpOihhW3J0Pj4yXT1hW0dlPj4yXSxhW3J0KzQ+PjJdPWFbR2UrND4+Ml0sQ1coZixBLHcsUixwLHJ0KSksbT1tKzF8MDtmb3Iodz0wfG1yKGw8PDIpLG09MDshKCgwfG0pPj0oMHxsKSk7KWFbdysobTw8Mik+PjJdPWsrKG08PDQpLG09bSsxfDA7STEodyxsLDQsODkpLGI9MHxSeSgpLG09''@;'; put 'put ''MHxtcihsPDwzKTt0OmRve2lmKE0pe2ZvcihBPTA7Oyl7aWYoKDB8QSk+PSgwfGwpKXtBPTA7YnJlYWt9MHx1ZVtsdCtBPj4wXSYmKHA9bSsoYVsxMisoZj0wfGFbdysoQTw8Mik+PjJdKT4+Ml08PDMpfDAsYVtydD4+Ml09YVtHZT4+Ml0sYVtydCs0Pj4yXT1hW0dlKzQ+PjJdLFNyZShmLGIs''@;'; put 'put ''cCxydCkpLEE9QSsxfDB9Zm9yKDs7KXtpZigoMHxBKT49KDB8bCkpYnJlYWsgdDswfHVlW2x0K0E+PjBdfHxWZChBLEdlPTB8YVt3KyhBPDwyKT4+Ml0sYixtKyhhW0dlKzEyPj4yXTw8Myl8MCxSLDB8YVtEPj4yXSxHKSxBPUErMXwwfX1lbHNlIGZvcihBPTA7Oyl7aWYoKDB8QSk+PSgwfGwp''@;'; put 'put ''KWJyZWFrIHQ7VmQoQSxsdD0wfGFbdysoQTw8Mik+PjJdLGIsbSsoYVtsdCsxMj4+Ml08PDMpfDAsUiwwfGFbRD4+Ml0sRyksQT1BKzF8MH19d2hpbGUoMCk7Zm9yKEh0KHcpLEE9MDshKCgwfEEpPj0oMHxsKSk7KUh0KDB8YVtrKyhBPDw0KSs0Pj4yXSksQT1BKzF8MDtIdChrKSxCeShiKSxI''@;'; put 'put ''dChHKX1lbHNlIG09MH1lbHNlIG09MDtyZXR1cm4gb2U9YXQsMHxtfWZ1bmN0aW9uIGJXKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHBlLG1lLGJlLE9lLExlLEhlLGplLGV0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAsQmU9MDtldD1vZSxvZT1vZSsxNnwwLEE9''@;'; put 'put ''ZXQsSGU9MHxtcigobHw9MCk8PDMpLGplPWYrMjh8MCxwPSgwfChtPTB8YVtmKzQ+PjJdKSk+MDtkb3tpZigxJmFbamU+PjJdKXtpZihwKXtrPTAsQmU9bSxtPShsKy0xK218MCkvKDB8bSl8MDticmVha31rPTAsQmU9bT1+fit3bCgrICtGMCgrICsoMHxsKSkpLG09KGwrLTErbXwwKS8oMHxt''@;'; put 'put ''KXwwO2JyZWFrfWlmKHApe2s9MSxCZT0obCstMSttfDApLygwfG0pfDA7YnJlYWt9az0xLEJlPShsKy0xKyhtPX5+K3dsKCsgK0YwKCsgKygwfGwpKSkpfDApLygwfG0pfDA7YnJlYWt9d2hpbGUoMCk7Zm9yKGJlPTB8bXIoOCsobTw8Myl8MCksT2U9MHxtcig4KyhCZTw8Myl8MCksYj1mKzh8''@;'; put 'put ''MCxwPTAsQT1MZT0wfG1yKDI0Kmx8MCk7ISgoMHxwKT49KDB8bCkpOylHPStfW2MrKHA8PDUpKzg+PjNdLFI9K19bYysocDw8NSkrMjQ+PjNdLF9bQT4+M109K19bYysocDw8NSkrMTY+PjNdLStfW2MrKHA8PDUpPj4zXSsoSz0rKCgwfGFbYj4+Ml0pPj4+MCkpLF9bQSs4Pj4zXT1SLUcrSyxh''@;'; put 'put ''W0ErMTY+PjJdPXAscD1wKzF8MCxBPUErMjR8MDtmb3IobWU9MHxtcihsPDwyKSxwPTA7ISgoMHxwKT49KDB8bCkpOylhW21lKyhwPDwyKT4+Ml09TGUrKDI0KnB8MCkscD1wKzF8MDtmb3IoKHA9MHxhW2YrMjQ+PjJdKT8oYVs0NzA1Nl09cCxJMShtZSxsLDQsOTApKTo2NCZhW2plPj4yXXx8''@;'; put 'put ''STEobWUsbCw0LDkxKSxwZT0wPT0oMHxrKSxwPTAsQT0wLGI9MDs7KXtpZigoMHxiKT49KDB8bCkpe3c9MCxwPTA7YnJlYWt9X1soZj1iZSsoQTw8Myl8MCk+PjNdPShLPStfW2Y+PjNdKT4oRz0rX1soaz0wfGFbbWUrKGI8PDIpPj4yXSk+PjNdKT9LOkcsX1soZj1PZSsocDw8Myl8MCk+PjNd''@;'; put 'put ''PShHPStfW2Y+PjNdKT4oSz0rX1trKzg+PjNdKT9HOksscGU/KHA9KGY9KDB8KHA9cCsxfDApKT09KDB8QmUpKT8wOnAsQT1BKygxJmYpfDApOihwPXArKDEmKGY9KDB8KEE9QSsxfDApKT09KDB8bSkpKXwwLEE9Zj8wOkEpLGI9YisxfDB9Zm9yKDs7KXtpZigoMHxwKT4oMHxtKSl7dz0wLHA9''@;'; put 'put ''QmU7YnJlYWt9Sz0rX1soZj1iZSsocDw8Myl8MCk+PjNdLF9bZj4+M109dyx3PUsrdyxwPXArMXwwfWZvcig7ISgoMHxwKTw9MCk7KUs9K19bT2UrKChmPXArLTF8MCk8PDMpPj4zXSxfW09lKyhwPDwzKT4+M109dyx3PUsrdyxwPWY7Zm9yKF9bT2U+PjNdPXcscD0wLEE9MCxmPTA7ISgoMHxm''@;'; put 'put ''KT49KDB8bCkpOyl7TT0tKHc9K19bYysoKGs9MHxhWzE2KygwfGFbbWUrKGY8PDIpPj4yXSk+PjJdKTw8NSk+PjNdKSxLPS0oRz0rX1tjKyhrPDw1KSs4Pj4zXSksRD0rX1tjKyhrPDw1KSsxNj4+M10sUj0rX1tjKyhrPDw1KSsyND4+M10sYj0wfGFbamU+PjJdO2Rve2lmKCEoNCZiKSl7aWYo''@;'; put 'put ''OCZiKXt3PXctRCsgK19bYmUrKEErMTw8Myk+PjNdO2JyZWFrfXc9LjUqKE0tRCsgK19bYmUrKEE8PDMpPj4zXSsgK19bYmUrKEErMTw8Myk+PjNdKTticmVha313PStfW2JlKyhBPDwzKT4+M119d2hpbGUoMCk7YVtIZSsoazw8Myk+PjJdPX5+dztkb3tpZighKDE2JmIpKXtpZigzMiZiKXt3''@;'; put 'put ''PStfW09lKyhwKzE8PDMpPj4zXTticmVha313PS41KihLLVIrICtfW09lKyhwPDwzKT4+M10rICtfW09lKyhwKzE8PDMpPj4zXSk7YnJlYWt9dz1HLVIrICtfW09lKyhwPDwzKT4+M119d2hpbGUoMCk7YVtIZSsoazw8MykrND4+Ml09fn53LHBlPyhwPShrPSgwfChwPXArMXwwKSk9PSgwfEJl''@;'; put 'put ''KSk/MDpwLEE9QSsoMSZrKXwwKToocD1wKygxJihrPSgwfChBPUErMXwwKSk9PSgwfG0pKSl8MCxBPWs/MDpBKSxmPWYrMXwwfXJldHVybiBIdChMZSksSHQobWUpLEh0KGJlKSxIdChPZSksb2U9ZXQsMHxIZX1mdW5jdGlvbiB0cChsLGMsZil7Y3w9MDt2YXIgayxtZSxNLHA9MCxtPTAsQT0w''@;'; put 'put ''LHc9MCxiPTAsRD0wLFI9MDtmb3IobWU9b2Usb2U9b2UrOTZ8MCxNPW1lLGs9KDEwMCoobHw9MCl8MCktMXwwLHA9KygoZnw9MCk8PDF8MCksRD0wLFI9MCxmPTA7ISgoMHxmKT49KDB8bCkpOylEPUQtKGI9K19bYysoZjw8NSkrMTY+PjNdLStfW2MrKGY8PDUpPj4zXStwKS0odz0rX1tjKyhm''@;'; put 'put ''PDw1KSsyND4+M10tK19bYysoZjw8NSkrOD4+M10rcCksUi09dypiLGY9ZisxfDA7cmV0dXJuKGI9RCpELTQqKHc9KygwfGspKSpSKTwwPyhfW00+PjNdPWIsWHIoMSw5OTQxNyxNKSxmPS0xKToobT0oKHA9K0YwKCtiKSktRCkvKEE9Mip3KSxBPSgtRC1wKS9BLGY9MD09KDB8KGY9fn5tKSk/''@;'; put 'put ''MTpmKSxvZT1tZSwwfGZ9ZnVuY3Rpb24gQTUobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEQsUixHLEsscGUsT2UsTGUsQmUsdz0wLGI9MCxrPTAsTT0wO2ZvcihPZT1vZSxvZT1vZSszMnwwLEc9K19bKGx8PTApPj4zXSxLPStfW2wrOD4+M10sRD0rX1tsKzE2Pj4zXSxS''@;'; put 'put ''PStfW2wrMjQ+PjNdLHBlPTB8UnkoKSxrPTB8YVttKzQ+PjJdLG09KDB8KGw9KGI9MHxhW20+PjJdKS1wfDApKT4tMT8oMHxsKS8oMHxmKXwwOigobCsxfDApLygwfGYpfDApLTF8MCxNPSgwfCh3PWstcHwwKSk+LTE/KDB8dykvKDB8Zil8MDooKHcrMXwwKS8oMHxmKXwwKS0xfDAsYj0oMHwo''@;'; put 'put ''Yj1wLX5+KEcrKEc+PTA/LjU6LS41KSkrYit+fihEKyhEPj0wPy41Oi0uNSkpfDApKT4tMT8oMHxiKS8oMHxmKXwwOigoYisxfDApLygwfGYpfDApLTF8MCx3PSgwfChrPXAtfn4oSysoSz49MD8uNTotLjUpKStrK35+KFIrKFI+PTA/LjU6LS41KSl8MCkpPi0xPygwfGspLygwfGYpfDA6KChr''@;'; put 'put ''KzF8MCkvKDB8Zil8MCktMXwwOyEoKDB8bSk+KDB8YikpOyl7Zm9yKGw9TTshKCgwfGwpPigwfHcpKTspbHAocGUsbSxsKSxsPWwrMXwwO209bSsxfDB9YVsoaz1jKzR8MCk+PjJdPTB8ZlEocGUpLGI9MHxjUShwZSksYVsoTT1jKzh8MCk+PjJdPWIsdz1+fit3bCgrKEQrKEJlPSsocDw8MXww''@;'; put 'put ''KSktRykvKExlPSsoMHxmKSkpLGw9fn4rd2woKyhSK0JlLUspL0xlKSxhW2M+PjJdPWwrdyxCeShwZSksb2U9T2V9ZnVuY3Rpb24gQ1cobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLEF8PTA7dmFyIEJlLGplLGV0LHJ0LGx0LE10LGt0LGF0LEV0LFp0LHV0LHd0LHJuLHluLE5yLHc9MCxi''@;'; put 'put ''PTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEhlPTAsR2U9MCxrcj0wLGNyPTA7TnI9b2Usb2U9b2UrMTI4fDAsYXQ9TnIrMTEyfDAsa3Q9TnIrMTA0fDAsWnQ9TnIrNjR8MCx1dD1Ocis1NnwwLGV0PU5yKzQwfDAscnQ9TnIrOTZ8MCxqZT1Ocis4''@;'; put 'put ''OHwwLExlPU5yKzI0fDAsQmU9TnIrODB8MCxIZT1Ocis3MnwwLHJuPTB8YVs4KyhtfD0wKT4+Ml0sRXQ9MHxhW20rMTI+PjJdLGx0PTA9PSgwfChsfD0wKSk/YzpsLHluPTB8UnkoKSxNdD0oMHxhW0E+PjJdKS1+figoYmU9K19bMTYrKEdlPTB8YVsod3Q9YysxNnwwKT4+Ml0pPj4zXSkrKGJl''@;'; put 'put ''Pj0wPy41Oi0uNSkpfDAsR2U9KDB8YVtBKzQ+PjJdKS1+figoYmU9K19bR2UrMjQ+PjNdKSsoYmU+PTA/LjU6LS41KSl8MDtlOmRve2lmKDE9PSgwfGFbbSsxNj4+Ml0pKXtmb3IoTGU9MHxRbigoMHxObyhjKSk8PDIpLGw9MCxBPTB8THQoYyk7QTspYVtMZSsobDw8Mik+PjJdPWFbMTEyKygw''@;'; put 'put ''fGFbKEhlPUErMTZ8MCk+PjJdKT4+Ml0sYVsxMTIrKDB8YVtIZT4+Ml0pPj4yXT0wLGw9bCsxfDAsQT0wfHp0KGMsQSk7Zm9yKFI9TXQtcm58MCxHPUdlLXJufDAsSz1NdCtybnwwLHBlPUdlK3JufDAsRD0xOyEoKDB8RCk+KDB8YVsxODArKGw9MHxhW3d0Pj4yXSk+PjJdKSk7KXtsPX5+KChi''@;'; put 'put ''ZT0rX1sxNisodz0wfGFbMTYrKE09MHxhWygwfGFbbCsxODQ+PjJdKSsoRDw8Mik+PjJdKT4+Ml0pPj4zXSkrKGJlPj0wPy41Oi0uNSkpLEE9fn4oKGJlPStfW3crMjQ+PjNdKSsoYmU+PTA/LjU6LS41KSksbT1+figoYmU9K19bdyszMj4+M10pKyhiZT49MD8uNTotLjUpKSx3PX5+KChiZT0r''@;'; put 'put ''X1t3KzQwPj4zXSkrKGJlPj0wPy41Oi0uNSkpO3Q6ZG97aWYoKDB8bSk+KDB8bCkmKDB8dyk+KDB8QSkpe2ZvcihiPUcrQXwwLGs9cGUrd3wwLEE9KDB8KGw9UitsfDApKT4tMT8oMHxsKS8oMHxwKXwwOigobCsxfDApLygwfHApfDApLTF8MCxiPSgwfGIpPi0xPygwfGIpLygwfHApfDA6KChi''@;'; put 'put ''KzF8MCkvKDB8cCl8MCktMXwwLHc9KDB8KG09SyttfDApKT4tMT8oMHxtKS8oMHxwKXwwOigobSsxfDApLygwfHApfDApLTF8MCxtPSgwfGspPi0xPygwfGspLygwfHApfDA6KChrKzF8MCkvKDB8cCl8MCktMXwwOyEoKDB8QSk+KDB8dykpOyl7Zm9yKGw9YjshKCgwfGwpPigwfG0pKTspbHAo''@;'; put 'put ''eW4sQSxsKSxsPWwrMXwwO0E9QSsxfDB9Zm9yKGw9MHxMdChNKTs7KXtpZighbClicmVhayB0O2FbMjEyKygwfGFbbCsxNj4+Ml0pPj4yXT1NLGw9MHx6dChNLGwpfX19d2hpbGUoMCk7RD1EKzF8MH1mb3IocGU9ZXQrOHwwLG1lPVp0KzR8MCxiZT0rKDB8cm4pLE9lPXV0KzR8MCxLPXJ0KzR8''@;'; put 'put ''MCxHPWplKzR8MCxSPTB8THQoYyk7Ujspe0VEKGV0LFIpLGtyPStfW3BlPj4zXSxhW1p0Pj4yXT1NPU10K35+KChjcj0rX1tldD4+M10pKyhjcj49MD8uNTotLjUpKXwwLGFbbWU+PjJdPUQ9R2Urfn4oa3IrKGtyPj0wPy41Oi0uNSkpfDAsbD0wfGFbKEE9UisxNnwwKT4+Ml07dDpkb3tpZigw''@;'; put 'put ''fGFbbCsyMTI+PjJdKWZvcihsPSgwfE0pPi0xPygwfE0pLygwfHApfDA6KChNKzF8MCkvKDB8cCl8MCktMXwwLGFbWnQ+PjJdPWwsbD0oMHxEKT4tMT8oMHxEKS8oMHxwKXwwOigoRCsxfDApLygwfHApfDApLTF8MCxhW21lPj4yXT1sLGw9MHx5MChsdCxSKTs7KXtpZighbClicmVhayB0Oygw''@;'; put 'put ''fGFbMjEyKygwfGFbQT4+Ml0pPj4yXSkhPSgwfGFbMjEyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pJiYoYVthdD4+Ml09YVtadD4+Ml0sYVthdCs0Pj4yXT1hW1p0KzQ+PjJdLFdUKGwsYXQseW4sTXQsR2UscCxFdCkpLGw9MHxr''@;'; put 'put ''MChsdCxsKX1lbHNle2ZvcihhW3V0Pj4yXT1+figuNSooK19bbCs5Nj4+M10rICtfW2wrODg+PjNdKStiZSksYVtPZT4+Ml09fn4oLjUqK19bbCs4MD4+M10rYmUpLGFba3Q+PjJdPWFbWnQ+PjJdLGFba3QrND4+Ml09YVtadCs0Pj4yXSxhW2F0Pj4yXT1hW3V0Pj4yXSxhW2F0KzQ+PjJdPWFb''@;'; put 'put ''dXQrND4+Ml0sU1cocnQsa3QsYXQpLGw9MHxhW3J0Pj4yXSxtPTB8YVtLPj4yXSxhW2t0Pj4yXT1hW1p0Pj4yXSxhW2t0KzQ+PjJdPWFbWnQrND4+Ml0sYVthdD4+Ml09YVt1dD4+Ml0sYVthdCs0Pj4yXT1hW3V0KzQ+PjJdLEhGKGplLGt0LGF0KSxBPSgwfGwpPi0xPygwfGwpLygwfHApfDA6''@;'; put 'put ''KChsKzF8MCkvKDB8cCl8MCktMXwwLGs9KDB8bSk+LTE/KDB8bSkvKDB8cCl8MDooKG0rMXwwKS8oMHxwKXwwKS0xfDAsdz0oMHwodz0wfGFbamU+PjJdKSk+LTE/KDB8dykvKDB8cCl8MDooKHcrMXwwKS8oMHxwKXwwKS0xfDAsbT0oMHwoYj0wfGFbRz4+Ml0pKT4tMT8oMHxiKS8oMHxwKXww''@;'; put 'put ''OigoYisxfDApLygwfHApfDApLTF8MDshKCgwfEEpPigwfHcpKTspe2ZvcihsPWs7ISgoMHxsKT4oMHxtKSk7KWxwKHluLEEsbCksbD1sKzF8MDtBPUErMXwwfWZvcihhW1p0Pj4yXT1sPSgwfE0pPi0xPygwfE0pLygwfHApfDA6KChNKzF8MCkvKDB8cCl8MCktMXwwLGFbbWU+PjJdPWw9KDB8''@;'; put 'put ''RCk+LTE/KDB8RCkvKDB8cCl8MDooKEQrMXwwKS8oMHxwKXwwKS0xfDAsbD0wfHkwKGx0LFIpOzspe2lmKCFsKWJyZWFrIHQ7YVthdD4+Ml09YVtadD4+Ml0sYVthdCs0Pj4yXT1hW1p0KzQ+PjJdLFdUKGwsYXQseW4sTXQsR2UscCxFdCksbD0wfGswKGx0LGwpfX19d2hpbGUoMCk7Uj0wfHp0''@;'; put 'put ''KGMsUil9Zm9yKGw9MCxBPTB8THQoYyk7QTspYVsxMTIrKDB8YVtBKzE2Pj4yXSk+PjJdPWFbTGUrKGw8PDIpPj4yXSxsPWwrMXwwLEE9MHx6dChjLEEpO0h0KExlKX1lbHNlIGZvcihwZT1MZSs4fDAsbWU9WnQrNHwwLGJlPSsoMHxybiksT2U9dXQrNHwwLEs9QmUrNHwwLEc9SGUrNHwwLFI9''@;'; put 'put ''MHxMdChjKTs7KXtpZighUilicmVhayBlO2ZvcihFRChMZSxSKSxjcj0rX1twZT4+M10sYVtadD4+Ml09TT1NdCt+figoa3I9K19bTGU+PjNdKSsoa3I+PTA/LjU6LS41KSl8MCxhW21lPj4yXT1EPUdlK35+KGNyKyhjcj49MD8uNTotLjUpKXwwLGFbdXQ+PjJdPX5+KC41KigrX1s5NisobD0w''@;'; put 'put ''fGFbUisxNj4+Ml0pPj4zXSsgK19bbCs4OD4+M10pK2JlKSxhW09lPj4yXT1+figuNSorX1tsKzgwPj4zXStiZSksYVtrdD4+Ml09YVtadD4+Ml0sYVtrdCs0Pj4yXT1hW1p0KzQ+PjJdLGFbYXQ+PjJdPWFbdXQ+PjJdLGFbYXQrND4+Ml09YVt1dCs0Pj4yXSxTVyhCZSxrdCxhdCksbD0wfGFb''@;'; put 'put ''QmU+PjJdLG09MHxhW0s+PjJdLGFba3Q+PjJdPWFbWnQ+PjJdLGFba3QrND4+Ml09YVtadCs0Pj4yXSxhW2F0Pj4yXT1hW3V0Pj4yXSxhW2F0KzQ+PjJdPWFbdXQrND4+Ml0sSEYoSGUsa3QsYXQpLEE9KDB8bCk+LTE/KDB8bCkvKDB8cCl8MDooKGwrMXwwKS8oMHxwKXwwKS0xfDAsaz0oMHxt''@;'; put 'put ''KT4tMT8oMHxtKS8oMHxwKXwwOigobSsxfDApLygwfHApfDApLTF8MCx3PSgwfCh3PTB8YVtIZT4+Ml0pKT4tMT8oMHx3KS8oMHxwKXwwOigodysxfDApLygwfHApfDApLTF8MCxtPSgwfChiPTB8YVtHPj4yXSkpPi0xPygwfGIpLygwfHApfDA6KChiKzF8MCkvKDB8cCl8MCktMXwwOyEoKDB8''@;'; put 'put ''QSk+KDB8dykpOyl7Zm9yKGw9azshKCgwfGwpPigwfG0pKTspbHAoeW4sQSxsKSxsPWwrMXwwO0E9QSsxfDB9Zm9yKGFbWnQ+PjJdPWw9KDB8TSk+LTE/KDB8TSkvKDB8cCl8MDooKE0rMXwwKS8oMHxwKXwwKS0xfDAsYVttZT4+Ml09bD0oMHxEKT4tMT8oMHxEKS8oMHxwKXwwOigoRCsxfDAp''@;'; put 'put ''LygwfHApfDApLTF8MCxsPTB8eTAobHQsUik7bDspYVthdD4+Ml09YVtadD4+Ml0sYVthdCs0Pj4yXT1hW1p0KzQ+PjJdLFdUKGwsYXQseW4sTXQsR2UscCxFdCksbD0wfGswKGx0LGwpO1I9MHx6dChjLFIpfX13aGlsZSgwKTthWyh3PWYrNHwwKT4+Ml09MHxmUSh5biksYVsoYj1mKzh8MCk+''@;'; put 'put ''PjJdPTB8Y1EoeW4pLGw9fn4rd2woKygrX1szMisoQT0wfGFbd3Q+PjJdKT4+M10rKGtyPSsocm48PDF8MCkpLStfW0ErMTY+PjNdKS8oY3I9KygwfHApKSksQT1+fit3bCgrKCtfW0ErNDA+PjNdK2tyLStfW0ErMjQ+PjNdKS9jciksYVtmPj4yXT1BK2wsQnkoeW4pLG9lPU5yfWZ1bmN0aW9u''@;'; put 'put ''IFNyZShsLGMsZixwKXtjfD0wO3ZhciBBLHcsayxNO2ZvcihrPW9lLG9lPW9lKzMyfDAsdz1rKzE2fDAsTT0wfGFbNCsobHw9MCk+PjJdLEE9MHxhW2wrOD4+Ml0sYVsoZnw9MCk+PjJdPTAtKDB8YVsocHw9MCk+PjJdKSxhWyhmKzR8MCk+PjJdPTAtKDB8YVtwKzQ+PjJdKSxsPTAscD1NOyEo''@;'; put 'put ''KDB8bCk+PSgwfEEpKTspYVt3Pj4yXT1hW3A+PjJdLGFbdys0Pj4yXT1hW3ArND4+Ml0seE4oYyx3KSxsPWwrMXwwLHA9cCs4fDA7b2U9a31mdW5jdGlvbiBWZChsLGMsZixwLG0sQSx3KXtmfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBNLEQsUixHLGI9MCxrPTAsSz0wLHBlPTA7TT0rX1sod3w9''@;'; put 'put ''MCkrKChrPTB8YVsxMisoY3w9MCk+PjJdKTw8NSk+PjNdLEQ9K19bdysoazw8NSkrOD4+M10sUj0rX1t3KyhrPDw1KSsxNj4+M10sRz0rX1t3KyhrPDw1KSsyND4+M10sMD09KDB8KGx8PTApKSYmMCE9KDB8TjMoKDB8fn4rd2woKygocGU9KyhBPDwxfDApKS1NK1IpLyhLPSsoMHxtKSkpKS8t''@;'; put 'put ''MnwwLCgwfH5+K3dsKCsocGUtRCtHKS9LKSkvLTJ8MCxjLGYscCxtLHcpKXx8KGI9Myk7ZTpkb3tpZigzPT0oMHxiKSYmMD09KDB8TjMoMCwwLGMsZixwLG0sdykpKWlmKCgwfH5+K3dsKCsoUi1NKSkpPCgwfH5+K3dsKCsoRy1EKSkpKWZvcihrPTE7Oyl7Zm9yKGI9MC1rfDAsbD0wOzspe2lm''@;'; put 'put ''KCgwfGwpPD0oMHxiKSl7QT1iO2JyZWFrfWlmKDB8TjMoYixsLGMsZixwLG0sdykpYnJlYWsgZTtsPWwrLTF8MH1mb3IoOyEoKDB8QSk+PSgwfGspKTspe2lmKDB8TjMoQSxsLGMsZixwLG0sdykpYnJlYWsgZTtBPUErMXwwfWZvcig7ISgoMHxsKT49KDB8aykpOyl7aWYoMHxOMyhBLGwsYyxm''@;'; put 'put ''LHAsbSx3KSlicmVhayBlO2w9bCsxfDB9Zm9yKDshKCgwfEEpPD0oMHxiKSk7KXtpZigwfE4zKEEsbCxjLGYscCxtLHcpKWJyZWFrIGU7QT1BKy0xfDB9Zm9yKDshKCgwfGwpPD0wKTspe2lmKDB8TjMoQSxsLGMsZixwLG0sdykpYnJlYWsgZTtsPWwrLTF8MH1rPWsrMXwwfWVsc2UgZm9yKGs9''@;'; put 'put ''MTs7KXtmb3IoYj0wLWt8MCxsPTA7Oyl7aWYoKDB8bCk+PSgwfGspKXtBPWI7YnJlYWt9aWYoMHxOMyhsLGIsYyxmLHAsbSx3KSlicmVhayBlO2w9bCsxfDB9Zm9yKDshKCgwfEEpPj0oMHxrKSk7KXtpZigwfE4zKGwsQSxjLGYscCxtLHcpKWJyZWFrIGU7QT1BKzF8MH1mb3IoOyEoKDB8bCk8''@;'; put 'put ''PSgwfGIpKTspe2lmKDB8TjMobCxBLGMsZixwLG0sdykpYnJlYWsgZTtsPWwrLTF8MH1mb3IoOyEoKDB8QSk8PSgwfGIpKTspe2lmKDB8TjMobCxBLGMsZixwLG0sdykpYnJlYWsgZTtBPUErLTF8MH1mb3IoOyEoKDB8bCk+PTApOyl7aWYoMHxOMyhsLEEsYyxmLHAsbSx3KSlicmVhayBlO2w9''@;'; put 'put ''bCsxfDB9az1rKzF8MH19d2hpbGUoMCl9ZnVuY3Rpb24gTjMobCxjLGYscCxtLEEsdyl7bHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTA7dmFyIE0sUixHLEsscGUsYmUsYj0wLGs9MCxEPTAsT2U9MCxMZT0wLEJlPTAsSGU9MDtmb3IoYmU9b2Usb2U9b2UrNDh8MCxwZT1iZSszMnwwLFI9''@;'; put 'put ''MHxhWzgrKGZ8PTApPj4yXSxHPShLPWJlKSs0fDAsYj0wfGFbKE09Zis0fDApPj4yXSxrPTA7Oyl7aWYoKDB8ayk+PSgwfFIpKXtEPTU7YnJlYWt9aWYoT2U9MHxhWyhMZT1iKSs0Pj4yXSxhW0s+PjJdPSgwfGFbTGU+PjJdKStsLGFbRz4+Ml09T2UrYyxhW3BlPj4yXT1hW0s+PjJdLGFbcGUr''@;'; put 'put ''ND4+Ml09YVtLKzQ+PjJdLDB8c1EocCxwZSkpe2I9MDticmVha31iPWIrOHwwLGs9aysxfDB9aWYoNT09KDB8RCkpe2ZvcihIZT0rX1t3KygoZj0wfGFbZisxMj4+Ml0pPDw1KT4+M10sQmU9K19bdysoZjw8NSkrOD4+M10sYVttPj4yXT0oMHx2cihBLGwpKS1+fihIZSsoSGU+PTA/LjU6LS41''@;'; put 'put ''KSksYVsoZj1tKzR8MCk+PjJdPSgwfHZyKEEsYykpLX5+KEJlKyhCZT49MD8uNTotLjUpKSxiPTB8YVtNPj4yXSxrPTA7ISgoMHxrKT49KDB8UikpOylMZT0wfGFbKE9lPWIpKzQ+PjJdLGFbSz4+Ml09KDB8YVtPZT4+Ml0pK2wsYVtHPj4yXT1MZStjLGFbcGU+PjJdPWFbSz4+Ml0sYVtwZSs0''@;'; put 'put ''Pj4yXT1hW0srND4+Ml0seE4ocCxwZSksYj1iKzh8MCxrPWsrMXwwO2I9MX1yZXR1cm4gb2U9YmUsMHxifWZ1bmN0aW9uIFNXKGwsYyxmKXt2YXIgcDtwPSgwfGFbNCsoY3w9MCk+PjJdKS0oMHxhWzQrKGZ8PTApPj4yXSl8MCxhWyhsfD0wKT4+Ml09KDB8YVtjPj4yXSktKDB8YVtmPj4yXSks''@;'; put 'put ''YVtsKzQ+PjJdPXB9ZnVuY3Rpb24gSEYobCxjLGYpe3ZhciBwO3A9KDB8YVs0KyhmfD0wKT4+Ml0pKygwfGFbNCsoY3w9MCk+PjJdKXwwLGFbKGx8PTApPj4yXT0oMHxhW2Y+PjJdKSsoMHxhW2M+PjJdKSxhW2wrND4+Ml09cH1mdW5jdGlvbiBXVChsLGMsZixwLG0sQSx3KXtsfD0wLGZ8PTAs''@;'; put 'put ''cHw9MCxtfD0wLEF8PTAsd3w9MDt2YXIgcGUsbWUsYmUsQmUsSGUsamUsZXQscnQsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLE9lPTAsTGU9MDtydD1vZSxvZT1vZSsxMTJ8MCxIZT1ydCs5NnwwLEJlPXJ0KzgwfDAscGU9cnQrNDh8MCxtZT1ydCszMnwwLGV0PXJ0LEQ9cnQrNjR8MCxf''@;'; put 'put ''WyhqZT1ydCsxNnwwKT4+M109KygwfGFbKGN8PTApPj4yXSksX1soYmU9amUrOHwwKT4+M109KygwfGFbYys0Pj4yXSk7ZTpkb3tpZigwIT0oMHx3KSYmKE9lPWwrMTZ8MCxNPTB8YVs4KygwfGFbT2U+PjJdKT4+Ml0sMCE9KDB8TSkpKWZvcihLPSsoMHxwKSxHPSsoMHxtKSxSPTEvKygwfEEp''@;'; put 'put ''LEQ9ZXQrOHwwLHc9MDs7KXtpZigoMHx3KT49KDB8YVtNKzQ+PjJdKSlicmVhayBlO2ZvcihsPTB8YVsobT0wfGFbTT4+Ml0pKyg0OCp3fDApPj4yXSxjPTB8YVttKyg0OCp3fDApKzQ+PjJdLEE9MHxhW20rKDQ4Knd8MCkrOD4+Ml0scD0wfGFbbSsoNDgqd3wwKSsxMj4+Ml0sYVtwZT4+Ml09''@;'; put 'put ''YVsoTT1tKyg0OCp3fDApKzE2fDApPj4yXSxhW3BlKzQ+PjJdPWFbTSs0Pj4yXSxhW3BlKzg+PjJdPWFbTSs4Pj4yXSxhW3BlKzEyPj4yXT1hW00rMTI+PjJdLGFbbWU+PjJdPWFbKG09bSsoNDgqd3wwKSszMnwwKT4+Ml0sYVttZSs0Pj4yXT1hW20rND4+Ml0sYVttZSs4Pj4yXT1hW20rOD4+''@;'; put 'put ''Ml0sYVttZSsxMj4+Ml09YVttKzEyPj4yXSxBPyhhW2plPj4yXT1hW3BlPj4yXSxhW2plKzQ+PjJdPWFbcGUrND4+Ml0sYVtqZSs4Pj4yXT1hW3BlKzg+PjJdLGFbamUrMTI+PjJdPWFbcGUrMTI+PjJdLGFbZXQ+PjJdPWFbbD4+Ml0sYVtldCs0Pj4yXT1hW2wrND4+Ml0sYVtldCs4Pj4yXT1h''@;'; put 'put ''W2wrOD4+Ml0sYVtldCsxMj4+Ml09YVtsKzEyPj4yXSxNPTEpOihhW2plPj4yXT1hW2w+PjJdLGFbamUrND4+Ml09YVtsKzQ+PjJdLGFbamUrOD4+Ml09YVtsKzg+PjJdLGFbamUrMTI+PjJdPWFbbCsxMj4+Ml0sYVtldD4+Ml09YVsoTT1sKzE2fDApPj4yXSxhW2V0KzQ+PjJdPWFbTSs0Pj4y''@;'; put 'put ''XSxhW2V0Kzg+PjJdPWFbTSs4Pj4yXSxhW2V0KzEyPj4yXT1hW00rMTI+PjJdLE09MiksX1tqZT4+M109Yj0rX1tqZT4+M10rSyxfW2JlPj4zXT1rPStfW2JlPj4zXStHLGI+PTA/Yio9UjpiPShiKzEpKlItMSxfW2plPj4zXT1iLF9bYmU+PjNdPWI9az49MD9rKlI6KGsrMSkqUi0xLF9bZXQ+''@;'; put 'put ''PjNdPWI9K19bZXQ+PjNdK0ssX1tEPj4zXT1rPStfW0Q+PjNdK0csYj49MD9iKj1SOmI9KGIrMSkqUi0xLF9bZXQ+PjNdPWIsX1tEPj4zXT1iPWs+PTA/aypSOihrKzEpKlItMSxhW0JlPj4yXT1hW2plPj4yXSxhW0JlKzQ+PjJdPWFbamUrND4+Ml0sYVtCZSs4Pj4yXT1hW2plKzg+PjJdLGFb''@;'; put 'put ''QmUrMTI+PjJdPWFbamUrMTI+PjJdLGFbSGU+PjJdPWFbZXQ+PjJdLGFbSGUrND4+Ml09YVtldCs0Pj4yXSxhW0hlKzg+PjJdPWFbZXQrOD4+Ml0sYVtIZSsxMj4+Ml09YVtldCsxMj4+Ml0sR1QoQmUsSGUsZik7ISgoMHxNKT49KDB8YykpOylhW2plPj4yXT1hW2V0Pj4yXSxhW2plKzQ+PjJd''@;'; put 'put ''PWFbZXQrND4+Ml0sYVtqZSs4Pj4yXT1hW2V0Kzg+PjJdLGFbamUrMTI+PjJdPWFbZXQrMTI+PjJdLGFbZXQ+PjJdPWFbKEE9bCsoTTw8NCl8MCk+PjJdLGFbZXQrND4+Ml09YVtBKzQ+PjJdLGFbZXQrOD4+Ml09YVtBKzg+PjJdLGFbZXQrMTI+PjJdPWFbQSsxMj4+Ml0sX1tldD4+M109Yj0r''@;'; put 'put ''X1tldD4+M10rSyxfW0Q+PjNdPWs9K19bRD4+M10rRyxiPj0wP2IqPVI6Yj0oYisxKSpSLTEsX1tldD4+M109YixfW0Q+PjNdPWI9az49MD9rKlI6KGsrMSkqUi0xLGFbQmU+PjJdPWFbamU+PjJdLGFbQmUrND4+Ml09YVtqZSs0Pj4yXSxhW0JlKzg+PjJdPWFbamUrOD4+Ml0sYVtCZSsxMj4+''@;'; put 'put ''Ml09YVtqZSsxMj4+Ml0sYVtIZT4+Ml09YVtldD4+Ml0sYVtIZSs0Pj4yXT1hW2V0KzQ+PjJdLGFbSGUrOD4+Ml09YVtldCs4Pj4yXSxhW0hlKzEyPj4yXT1hW2V0KzEyPj4yXSxHVChCZSxIZSxmKSxNPU0rMXwwOzB8cCYmKGFbamU+PjJdPWFbZXQ+PjJdLGFbamUrND4+Ml09YVtldCs0Pj4y''@;'; put 'put ''XSxhW2plKzg+PjJdPWFbZXQrOD4+Ml0sYVtqZSsxMj4+Ml09YVtldCsxMj4+Ml0sYVtldD4+Ml09YVttZT4+Ml0sYVtldCs0Pj4yXT1hW21lKzQ+PjJdLGFbZXQrOD4+Ml09YVttZSs4Pj4yXSxhW2V0KzEyPj4yXT1hW21lKzEyPj4yXSxfW2V0Pj4zXT1iPStfW2V0Pj4zXStLLF9bRD4+M109''@;'; put 'put ''az0rX1tEPj4zXStHLGI+PTA/Yio9UjpiPShiKzEpKlItMSxfW2V0Pj4zXT1iLF9bRD4+M109Yj1rPj0wP2sqUjooaysxKSpSLTEsYVtCZT4+Ml09YVtqZT4+Ml0sYVtCZSs0Pj4yXT1hW2plKzQ+PjJdLGFbQmUrOD4+Ml09YVtqZSs4Pj4yXSxhW0JlKzEyPj4yXT1hW2plKzEyPj4yXSxhW0hl''@;'; put 'put ''Pj4yXT1hW2V0Pj4yXSxhW0hlKzQ+PjJdPWFbZXQrND4+Ml0sYVtIZSs4Pj4yXT1hW2V0Kzg+PjJdLGFbSGUrMTI+PjJdPWFbZXQrMTI+PjJdLEdUKEJlLEhlLGYpKSx3PXcrMXwwLE09MHxhWzgrKDB8YVtPZT4+Ml0pPj4yXX1lbHNlIExlPTR9d2hpbGUoMCk7ND09KDB8TGUpJiYoRUQoRCww''@;'; put 'put ''fGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pLGFbZXQ+PjJdPWFbRD4+Ml0sYVtldCs0Pj4yXT1hW0QrND4+Ml0sYVtldCs4Pj4yXT1hW0QrOD4+Ml0sYVtldCsxMj4+Ml09YVtEKzEyPj4yXSxfW2V0Pj4zXT1iPStfW2V0Pj4zXSsgKygwfHApLF9bKE09ZXQrOHwwKT4+''@;'; put 'put ''M109az0rX1tNPj4zXSsgKygwfG0pLGI+PTA/Yi89KygwfEEpOmI9KGIrMSkvKygwfEEpLTEsX1tldD4+M109YixfW00+PjNdPWI9az49MD9rLysoMHxBKTooaysxKS8rKDB8QSktMSxhW0JlPj4yXT1hW2plPj4yXSxhW0JlKzQ+PjJdPWFbamUrND4+Ml0sYVtCZSs4Pj4yXT1hW2plKzg+PjJd''@;'; put 'put ''LGFbQmUrMTI+PjJdPWFbamUrMTI+PjJdLGFbSGU+PjJdPWFbZXQ+PjJdLGFbSGUrND4+Ml09YVtldCs0Pj4yXSxhW0hlKzg+PjJdPWFbZXQrOD4+Ml0sYVtIZSsxMj4+Ml09YVtldCsxMj4+Ml0sR1QoQmUsSGUsZikpLG9lPXJ0fWZ1bmN0aW9uIHB1KGwsYyxmKXt2YXIgdyxrLE0sUixwPTAs''@;'; put 'put ''bT0wLEE9MCxiPTAsRz0wO2lmKFI9b2Usb2U9b2UrODB8MCxBPVIrNjR8MCxtPVIrMjR8MCxwPVIsdz1SKzU2fDAsKDB8KE09MHx0cChsfD0wLGN8PTAsMHxhWyhrPTgrKGZ8PTApfDApPj4yXSkpKT49MSl7Zm9yKGFbdys0Pj4yXT0wLGFbdz4+Ml09MCxiPTB8bXIobDw8NCksZj0wOyEoKDB8''@;'; put 'put ''Zik+PSgwfGwpKTspYVtiKyhmPDw0KSsxMj4+Ml09ZixwPTB8YVtrPj4yXSxhW20+PjJdPWFbKEc9YysoZjw8NSl8MCk+PjJdLGFbbSs0Pj4yXT1hW0crND4+Ml0sYVttKzg+PjJdPWFbRys4Pj4yXSxhW20rMTI+PjJdPWFbRysxMj4+Ml0sYVttKzE2Pj4yXT1hW0crMTY+PjJdLGFbbSsyMD4+''@;'; put 'put ''Ml09YVtHKzIwPj4yXSxhW20rMjQ+PjJdPWFbRysyND4+Ml0sYVttKzI4Pj4yXT1hW0crMjg+PjJdLGFbQT4+Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLEE1KG0sYisoZjw8NCl8MCxNLHAsQSksZj1mKzF8MDtmb3IobT0wfG1yKGw8PDIpLGY9MDshKCgwfGYpPj0oMHxsKSk7KWFb''@;'; put 'put ''bSsoZjw8Mik+PjJdPWIrKGY8PDQpLGY9ZisxfDA7Zm9yKEkxKG0sbCw0LDg5KSxBPTB8UnkoKSxmPTB8bXIobDw8MykscD0wOyEoKDB8cCk+PSgwfGwpKTspVmQocCxHPTB8YVttKyhwPDwyKT4+Ml0sQSxmKyhhW0crMTI+PjJdPDwzKXwwLE0sMHxhW2s+PjJdLGMpLHA9cCsxfDA7Zm9yKEh0''@;'; put 'put ''KG0pLHA9MDshKCgwfHApPj0oMHxsKSk7KUh0KDB8YVtiKyhwPDw0KSs0Pj4yXSkscD1wKzF8MDtIdChiKSxCeShBKX1lbHNlIGY9MDtyZXR1cm4gb2U9UiwwfGZ9ZnVuY3Rpb24gcGwobCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTA7MHwo''@;'; put 'put ''bD0wfGFbOTYrKHA9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkmJihfWyhEPWwrNTZ8MCk+PjNdPStfW0Q+PjNdKyArKDB8YyksX1soRD1sKzY0fDApPj4zXT0rX1tEPj4zXSsgKygwfGYpKSwwfChsPTB8YVtwKzEwOD4+Ml0pJiYoX1soRD1sKzU2fDApPj4zXT0rX1tEPj4zXSsgKygwfGMpLF9b''@;'; put 'put ''KEQ9bCs2NHwwKT4+M109K19bRD4+M10rICsoMHxmKSksMHwobD0wfGFbcCsxMDA+PjJdKSYmKF9bKEQ9bCs1NnwwKT4+M109K19bRD4+M10rICsoMHxjKSxfWyhEPWwrNjR8MCk+PjNdPStfW0Q+PjNdKyArKDB8ZikpLDB8KGw9MHxhW3ArMTA0Pj4yXSkmJihfWyhEPWwrNTZ8MCk+PjNdPStf''@;'; put 'put ''W0Q+PjNdKyArKDB8YyksX1soRD1sKzY0fDApPj4zXT0rX1tEPj4zXSsgKygwfGYpKSxEPTB8YVtwKzg+PjJdO2U6ZG97aWYoMHxEKWZvcihNPSsoMHxjKSxiPSsoMHxmKSxjPTB8YVtEKzQ+PjJdLGw9MDs7KXtpZigoMHxsKT49KDB8YykpYnJlYWsgZTtmb3IoZj0wfGFbKGs9MHxhW0Q+PjJd''@;'; put 'put ''KSsoNDgqbHwwKT4+Ml0sbT0wfGFbaysoNDgqbHwwKSs0Pj4yXSxBPTB8YVtrKyg0OCpsfDApKzg+PjJdLHc9MHxhW2srKDQ4Kmx8MCkrMTI+PjJdLHA9MDshKCgwfHApPj0oMHxtKSk7KV9bKFI9ZisocDw8NCl8MCk+PjNdPStfW1I+PjNdK00sX1soUj1mKyhwPDw0KSs4fDApPj4zXT0rX1tS''@;'; put 'put ''Pj4zXStiLHA9cCsxfDA7MHxBJiYoX1soUj1rKyg0OCpsfDApKzE2fDApPj4zXT0rX1tSPj4zXStNLF9bKFI9aysoNDgqbHwwKSsyNHwwKT4+M109K19bUj4+M10rYiksMHx3JiYoX1soUj1rKyg0OCpsfDApKzMyfDApPj4zXT0rX1tSPj4zXStNLF9bKFI9aysoNDgqbHwwKSs0MHwwKT4+M109''@;'; put 'put ''K19bUj4+M10rYiksbD1sKzF8MH19d2hpbGUoMCl9ZnVuY3Rpb24gTjIobCxjLGYpe3ZhciBtLEEsdyxiLGssTSxELHA9MCxSPTA7Zm9yKFI9MTYrKGw9MHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pfDAsaz0rX1socD1sKzMyfDApPj4zXSsobT0rKDB8KGN8PTApKSksRD0rX1soTT1sKzI0fDAp''@;'; put 'put ''Pj4zXSsoQT0rKDB8KGZ8PTApKSksYj0rX1sobD1sKzQwfDApPj4zXStBLF9bUj4+M109K19bUj4+M10rbSxfW00+PjNdPUQsX1twPj4zXT1rLF9bbD4+M109YiwwIT0oMHwocD0wfGFbMTIrKGw9MHxhW3c+PjJdKT4+Ml0pKSYmMCE9KDB8dWVbcCs4MT4+MF0pJiYoX1soUj1wKzU2fDApPj4z''@;'; put 'put ''XT0rX1tSPj4zXSttLF9bKHA9cCs2NHwwKT4+M109K19bcD4+M10rQSkscD0xOyEoKDB8cCk+KDB8YVtsKzE4MD4+Ml0pKTspTjIoMHxhWygwfGFbbCsxODQ+PjJdKSsocDw8Mik+PjJdLGMsZikscD1wKzF8MCxsPTB8YVt3Pj4yXX1mdW5jdGlvbiB4YShsLGMsZixwKXt2YXIgbTtyZXR1cm4o''@;'; put 'put ''bT0wfFBGKGx8PTAsY3w9MCxmfD0wLHB8PTApKT8obD0wfGZ1bmN0aW9uIEgyKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wO2U6ZG97aWYoKDB8bCk8MSltPTAtbHww''@;'; put 'put ''O2Vsc2UgZm9yKGJlPTA9PSgwfHApLHBlPTA9PSgwfG0pLGI9MDs7KXtpZigoMHxiKT09KDB8bCkpe209MDticmVhayBlfWZvcihtZT0wfGFbYysoYjw8Mik+PjJdLEE9YmU/bWU6cCxSPS4wMTM4ODg4ODg4ODg4ODg4ODgqKEQ9KygwfChrPTB8YVtmKyhiPDwzKT4+Ml0pKSksSz0uMDEzODg4''@;'; put 'put ''ODg4ODg4ODg4ODg4KihHPSsoMHwoTT0wfGFbZisoYjw8MykrND4+Ml0pKSksdz0wfEx0KG1lKTt3Oyl7X1soT2U9MHxhWzEzMisobT0wfGFbdysxNj4+Ml0pPj4yXSk+PjNdPStfW09lPj4zXStSLF9bKE9lPU9lKzh8MCk+PjNdPStfW09lPj4zXStLLF9bKE9lPW0rMTZ8MCk+PjNdPStfW09l''@;'; put 'put ''Pj4zXStELF9bKE9lPW0rMjR8MCk+PjNdPStfW09lPj4zXStHLDB8KG09MHxhW20rMTA4Pj4yXSkmJihfWyhPZT1tKzU2fDApPj4zXT0rX1tPZT4+M10rRCxfWyhPZT1tKzY0fDApPj4zXT0rX1tPZT4+M10rRyk7dDpkb3tpZighcGUpZm9yKG09MHx5MChBLHcpOzspe2lmKCFtKWJyZWFrIHQ7''@;'; put 'put ''cGwobSxrLE0pLG09MHxrMChBLG0pfX13aGlsZSgwKTt3PTB8enQobWUsdyl9TjIobWUsayxNKSxiPWIrMXwwfX13aGlsZSgwKTtyZXR1cm4gMHxtfShsLGMsbSxmLDB8YVtwKzEyPj4yXSksSHQobSkpOmw9MSwwfGx9ZnVuY3Rpb24gTkYobCxjLGYscCl7dmFyIEQsUixHLG09MCxBPTAsdz0w''@;'; put 'put ''LGI9MCxrPTAsTT0wLEs9MCxwZT0wO2lmKEc9b2Usb2U9b2UrMzJ8MCxSPUcsIShEPTB8eGEobHw9MCxjfD0wLGZ8PTAscHw9MCkpKXtmb3IoWDYoZiksYVtSPj4yXT1hWyhNPTE2KygwfGFbZisxNj4+Ml0pfDApPj4yXSxhW1IrND4+Ml09YVtNKzQ+PjJdLGFbUis4Pj4yXT1hW00rOD4+Ml0s''@;'; put 'put ''YVtSKzEyPj4yXT1hW00rMTI+PjJdLGFbUisxNj4+Ml09YVtNKzE2Pj4yXSxhW1IrMjA+PjJdPWFbTSsyMD4+Ml0sYVtSKzI0Pj4yXT1hW00rMjQ+PjJdLGFbUisyOD4+Ml09YVtNKzI4Pj4yXSxtPVIrOHwwLEE9UisxNnwwLHc9UisyNHwwLHA9MDshKCgwfHApPj0oMHxsKSk7KXtmb3IoYj0w''@;'; put 'put ''fGFbMTgwKyhrPTB8YVsxNisoMHxhW2MrKHA8PDIpPj4yXSk+PjJdKT4+Ml0saz1rKzE4NHwwLGY9MTshKCgwfGYpPigwfGIpKTspX1tSPj4zXT0rX1soK19bUj4+M108K19bKHBlPTE2KygwfGFbMTYrKDB8YVsoMHxhW2s+PjJdKSsoZjw8Mik+PjJdKT4+Ml0pfDApPj4zXT9SOnBlKT4+M10s''@;'; put 'put ''Sz0xNisocGU9MHxhWzE2KygwfGFbKDB8YVtrPj4yXSkrKGY8PDIpPj4yXSk+PjJdKXwwLF9bbT4+M109K19bKCtfW20+PjNdPCtfW3BlKzI0Pj4zXT9SOkspKzg+PjNdLF9bQT4+M109K19bKCtfW0E+PjNdPitfW3BlKzMyPj4zXT9SOkspKzE2Pj4zXSxfW3c+PjNdPStfWygrX1t3Pj4zXT4r''@;'; put 'put ''X1twZSs0MD4+M10/UjpLKSsyND4+M10sZj1mKzF8MDtwPXArMXwwfWFbTT4+Ml09YVtSPj4yXSxhW00rND4+Ml09YVtSKzQ+PjJdLGFbTSs4Pj4yXT1hW1IrOD4+Ml0sYVtNKzEyPj4yXT1hW1IrMTI+PjJdLGFbTSsxNj4+Ml09YVtSKzE2Pj4yXSxhW00rMjA+PjJdPWFbUisyMD4+Ml0sYVtN''@;'; put 'put ''KzI0Pj4yXT1hW1IrMjQ+PjJdLGFbTSsyOD4+Ml09YVtSKzI4Pj4yXX1yZXR1cm4gb2U9RywwfER9ZnVuY3Rpb24gdHkobCxjLGYscCl7dmFyIEE7cmV0dXJuIGx8PTAsY3w9MCxmfD0wLEE9b2Usb2U9b2UrMTZ8MCwocHw9MCl8fEJyKDk5NTM0LDk5NTQwLDE0MDAsOTk1NDcpLGY9MHxZVChs''@;'; put 'put ''LGYsZiksYVtwKzg+PjJdPWYsYVtwKzEyPj4yXT0wLGFbcCsyMD4+Ml09MCxDQyhsLGMscCksb2U9QSwwfGFbcCsxNj4+Ml19ZnVuY3Rpb24gWVQobCxjLGYpe2N8PTAsZnw9MDt2YXIgcCxtLHcsQT0wO3c9b2Usb2U9b2UrMTZ8MCxBPXcscD13KzR8MCxtPTB8TGkobHw9MCw5OTY4OSk7ZTpk''@;'; put 'put ''b3tpZihtKWlmKGFbQT4+Ml09cCxBPTE9PSgwfCRhKG0sMTM3Mzk1LEEpKSxsPTB8YVtwPj4yXSxBJigwfGwpPi0xKWM9bDtlbHNle3N3aXRjaCgwfHVlW20+PjBdKXtjYXNlIDg0OmNhc2UgMTE2OmJyZWFrO2RlZmF1bHQ6YnJlYWsgZX1jPWZ9fXdoaWxlKDApO3JldHVybiBvZT13LDB8Y31m''@;'; put 'put ''dW5jdGlvbiBDQyhsLGMsZil7cmV0dXJuIGN8PTAsZnw9MCwwfGZ1bmN0aW9uIFZGKGwsYyxmKXtsfD0wLGN8PTA7dmFyIG0sQSx3LGssRCxtZSxwPTAsYj0wLGJlPTA7bWU9b2Usb2U9b2UrNjR8MCxiPW1lKzh8MCx3PW1lLG09bWUrNDh8MCxBPW1lKzQ0fDAsKGZ8PTApfHxCcig5OTUzNCw5''@;'; put 'put ''OTU0MCwxMjkyLDk5NTgxKSxhWyhmKzI4fDApPj4yXT0wLGFbKEQ9ZisxNnwwKT4+Ml09YyxhWyhrPWYrNHwwKT4+Ml09MCxhW2YrMjQ+PjJdPTA7ZTpkb3tpZigwfGwmJihwPTB8dWVbbD4+MF0scDw8MjQ+PjI0KSlzd2l0Y2gocDw8MjQ+PjI0fDApe2Nhc2UgOTc6aWYoMHxuMihsLDk5NTk5''@;'; put 'put ''LDUpKXtpZigwfG4yKGwsOTk2MDUsNikpYnJlYWsgZTthW0Q+PjJdPTUsYVtiPj4yXT1tLGI9KDB8JGEobCs1fDAsOTk2MTIsYikpPjAsV25bZj4+Ml09YiYoYmU9K1duW20+PjJdKT4wP2JlOjE7YnJlYWsgZX1pZihhW0Q+PjJdPTQsYj0wfE1yZShsKzV8MCxmKSxhW3c+PjJdPUEsISgoYj0o''@;'; put 'put ''MHwkYShiLDEzNzM5NSx3KSk+MCkmKDB8KGM9MHxhW0E+PjJdKSk+MCkpYnJlYWsgZTthW2s+PjJdPWM7YnJlYWsgZTtjYXNlIDk5OmlmKHA8PDI0Pj4yNCE9OTl8fDB8WmkobCwxMDgwMDYpKWJyZWFrIGU7YVtEPj4yXT0xO2JyZWFrIGU7Y2FzZSAxMDM6aWYocDw8MjQ+PjI0IT0xMDN8fDB8''@;'; put 'put ''WmkobCwxMTE0OTQpKWJyZWFrIGU7YVtEPj4yXT0zO2JyZWFrIGU7Y2FzZSAxMTA6aWYocDw8MjQ+PjI0IT0xMTB8fDB8WmkobCwxMTE0ODEpKWJyZWFrIGU7YVtEPj4yXT0yO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKTtyZXR1cm4gb2U9bWUsMHxhW0Q+PjJdfSgwfExpKGx8''@;'; put 'put ''PTAsOTk1NzIpLGMsZil9ZnVuY3Rpb24gTXJlKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtlOmRve2lmKDk1PT0oMHx1ZVtsPj4wXSkpZm9yKHA9YysyOHwwLGY9MTs7KXtsPWwrMXwwO3Q6Zm9yKDs7KXtpZighKGYmJihjPTB8dWVbbD4+MF0sYzw8MjQ+PjI0KSkpYnJlYWsgZTtz''@;'; put 'put ''d2l0Y2goYzw8MjQ+PjI0fDApe2Nhc2UgOTk6bT0xMDticmVhayB0O2Nhc2UgMTA1Om09OTticmVhayB0O2Nhc2UgMTE3Om09MTE7YnJlYWsgdDtjYXNlIDExNjptPTEyO2JyZWFrIHQ7Y2FzZSA5ODpjPTMyO2JyZWFrIHQ7Y2FzZSAxMDg6bT03O2JyZWFrIHQ7Y2FzZSAxMTQ6bT04O2JyZWFr''@;'; put 'put ''IHQ7ZGVmYXVsdDpmPTB9fTc9PSgwfG0pPyhtPTAsYz00KTo4PT0oMHxtKT8obT0wLGM9OCk6OT09KDB8bSk/KG09MCxjPTY0KToxMD09KDB8bSk/KG09MCxjPTEpOjExPT0oMHxtKT8obT0wLGM9Mik6MTI9PSgwfG0pJiYobT0wLGM9MTYpLGFbcD4+Ml09YVtwPj4yXXxjfX13aGlsZSgwKTty''@;'; put 'put ''ZXR1cm4gMHxsfWZ1bmN0aW9uIGtDKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wO3ZhciB3LGIsbT0wLEE9MDtiPW9lLG9lPW9lKzgwfDAsQT1iKzY0fDAsdz1iLGFbKHB8PTApPj4yXT0wO2Rve209MHx1ZVtjPj4wXSxjPWMrMXwwfXdoaWxlKDAhPSgwfEtjKG0pKSk7ZTpkb3tzd2l0Y2goMHxt''@;'; put 'put ''KXtjYXNlIDY5OmlmKGFbbD4+Ml09MCwhKGM9MHxueShjLGwrOHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2Y+PjJdKTticmVhaztjYXNlIDEwMTppZihhW2w+PjJdPTEsIShjPTB8bnkoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFb''@;'; put 'put ''bCs3Mj4+Ml09YVtmPj4yXSk7YnJlYWs7Y2FzZSA4MDppZihhW2w+PjJdPTIsIShjPTB8eTUoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmKzQ+PjJdKTticmVhaztjYXNlIDExMjppZihhW2w+PjJdPTMsIShjPTB8eTUoYyxsKzh8MCkpKXthW3A+''@;'; put 'put ''PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmKzQ+PjJdKTticmVhaztjYXNlIDk4OmlmKGFbbD4+Ml09NCwhKGM9MHx5NShjLGwrOHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrOD4+Ml0pO2JyZWFrO2Nhc2UgNjY6aWYoYVtsPj4yXT01''@;'; put 'put ''LCEoYz0wfHk1KGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWYmJihhW2wrNzI+PjJdPWFbZis4Pj4yXSk7YnJlYWs7Y2FzZSA5OTppZighKGM9MHxIdShjLEEpKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKG09MHxVVCgwfGFbQT4+Ml0sdyksYVtBPj4yXT1tLCFtKXthW3A+''@;'; put 'put ''PjJdPTEsYz0wO2JyZWFrIGV9aWYoMHxhW3c+PjJdKXthW2w+PjJdPTE0LG09dyxBPTY0KyhwPWwrOHwwKXwwO2Rve2FbcD4+Ml09YVttPj4yXSxwPXArNHwwLG09bSs0fDB9d2hpbGUoKDB8cCk8KDB8QSkpO2lmKCFmKWJyZWFrIGU7YVtsKzcyPj4yXT1hW2YrNDA+PjJdO2JyZWFrIGV9aWYo''@;'; put 'put ''YVtsPj4yXT05LGFbbCs4Pj4yXT1hW3crOD4+Ml0sIWYpYnJlYWsgZTthW2wrNzI+PjJdPWFbZisyND4+Ml07YnJlYWsgZTtjYXNlIDY3OmlmKCEoYz0wfEh1KGMsQSkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9aWYobT0wfFVUKDB8YVtBPj4yXSx3KSxhW0E+PjJdPW0sIW0pe2FbcD4+Ml09''@;'; put 'put ''MSxjPTA7YnJlYWsgZX1pZigwfGFbdz4+Ml0pe2FbbD4+Ml09MTMsbT13LEE9NjQrKHA9bCs4fDApfDA7ZG97YVtwPj4yXT1hW20+PjJdLHA9cCs0fDAsbT1tKzR8MH13aGlsZSgoMHxwKTwoMHxBKSk7aWYoIWYpYnJlYWsgZTthW2wrNzI+PjJdPWFbZis0MD4+Ml07YnJlYWsgZX1pZihhW2w+''@;'; put 'put ''PjJdPTgsYVtsKzg+PjJdPWFbdys4Pj4yXSwhZilicmVhayBlO2FbbCs3Mj4+Ml09YVtmKzIwPj4yXTticmVhayBlO2Nhc2UgNzY6aWYoYVtsPj4yXT02LCEoYz0wfHk1KGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWYmJihhW2wrNzI+PjJdPWFbZisxMj4+Ml0pO2JyZWFrO2Nh''@;'; put 'put ''c2UgODQ6aWYoYVtsPj4yXT03LCEoYz0wfENmKGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfENmKGMsbCsxNnwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1pZighKGM9MHx5N2UoYyxsKzI0fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfENm''@;'; put 'put ''KGMsbCszMnwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1pZighKGM9MHxIdShjLGwrNDB8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmKzE2Pj4yXSk7YnJlYWs7Y2FzZSA3MDppZihhW2w+PjJdPTEwLCEoYz0wfENmKGMsbCs4fDApKSl7YVtwPj4yXT0x''@;'; put 'put ''LGM9MDticmVhayBlfWlmKCEoYz0wfEh1KGMsbCsxNnwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrMjg+PjJdKTticmVhaztjYXNlIDgzOmlmKGFbbD4+Ml09MTEsIShjPTB8SHUoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3''@;'; put 'put ''Mj4+Ml09YVtmKzMyPj4yXSk7YnJlYWs7Y2FzZSA3MzppZihhW2w+PjJdPTEyLCEoYz0wfG55KGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfEh1KGMsbCs0MHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrMzY+PjJdKTticmVh''@;'; put 'put ''aztjYXNlIDExNjppZihhW2w+PjJdPTE1LCEoYz0wfHc3ZShjLGwrOHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrNDQ+PjJdKTticmVhaztjYXNlIDA6Yz0wO2JyZWFrO2RlZmF1bHQ6YVtwPj4yXT0xLGM9MH19d2hpbGUoMCk7cmV0dXJuIG9lPWIsMHxj''@;'; put 'put ''fWZ1bmN0aW9uIG55KGwsYyl7dmFyIHAsbSx3LGY9MCxBPTA7cmV0dXJuIHc9b2Usb2U9b2UrMTZ8MCxfWyhjfD0wKT4+M109K3QzKGx8PTAscD13KSwoMHwobT0wfGFbcD4+Ml0pKSE9KDB8bCkmJihfW2MrOD4+M109K3QzKG0scCksKDB8bSkhPSgwfChBPTB8YVtwPj4yXSkpKSYmKF9bYysx''@;'; put 'put ''Nj4+M109K3QzKEEscCksKDB8QSkhPSgwfChmPTB8YVtwPj4yXSkpKT8oX1tjKzI0Pj4zXT0rdDMoZixwKSxsPSgwfGYpPT0oMHwobD0wfGFbcD4+Ml0pKT8wOmwpOmw9MCxvZT13LDB8bH1mdW5jdGlvbiB5NShsLGMpe2N8PTA7dmFyIEEsYixrLGY9MCxwPTAsbT0wLHc9MDtrPW9lLG9lPW9l''@;'; put 'put ''KzE2fDAsQT1rLGw9MHxTQyhsfD0wLGI9ays0fDApO2Rve2lmKGwpe2Zvcih3PTB8VGYoZj0wfGFbYj4+Ml0sMjQpLGFbYz4+Ml09ZixwPXcsbT0wOzspe2lmKCgwfG0pPj0oMHxmKSl7Zj05O2JyZWFrfWlmKF9bcD4+M109K3QzKGwsQSksKDB8bCk9PSgwfChmPTB8YVtBPj4yXSkpKXtmPTU7''@;'; put 'put ''YnJlYWt9aWYoX1twKzg+PjNdPSt0MyhmLEEpLCgwfGYpPT0oMHwobD0wfGFbQT4+Ml0pKSl7Zj03O2JyZWFrfV9bcCsxNj4+M109MCxwPXArMjR8MCxmPTB8YVtjPj4yXSxtPW0rMXwwfWlmKDU9PSgwfGYpKXthW2I+PjJdPW0sSHQodyksbD0wO2JyZWFrfWlmKDc9PSgwfGYpKXthW2I+PjJd''@;'; put 'put ''PW0sSHQodyksbD0wO2JyZWFrfWlmKDk9PSgwfGYpKXthW2I+PjJdPW0sYVtjKzQ+PjJdPXc7YnJlYWt9fWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBvZT1rLDB8bH1mdW5jdGlvbiBIdShsLGMpe2N8PTA7dmFyIHAsdyxiLGY9MCxtPTAsQT0wO2I9b2Usb2U9b2UrMTZ8MCxsPTB8U0MobHw9''@;'; put 'put ''MCx3PWIpLHA9MHxhW3c+PjJdO2Rve2lmKDA9PSgwfGwpfCgwfHApPDEpbD0wO2Vsc2V7Zm9yKDsoZj0oQT0wfHVlW2w+PjBdKTw8MjQ+PjI0PT0wKV5BPDwyND4+MjQhPTQ1OylsPWwrMXwwO2lmKGYpbD0wO2Vsc2V7Zm9yKG09QT0wfFRmKHArMXwwLDEpLGY9cDs7KXtpZihsPWwrMXwwLCgw''@;'; put 'put ''fGYpPD0wKXtmPTk7YnJlYWt9aWYoISgoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0KSl7Zj04O2JyZWFrfXVlW20+PjBdPWYsYVt3Pj4yXT1mPSgwfGFbdz4+Ml0pLTF8MCxtPW0rMXwwfWlmKDg9PSgwfGYpKXtIdChBKSxsPTA7YnJlYWt9aWYoOT09KDB8Zikpe3VlW20+PjBdPTAsYVtjPj4yXT1B''@;'; put 'put ''O2JyZWFrfX19fXdoaWxlKDApO3JldHVybiBvZT1iLDB8bH1mdW5jdGlvbiBVVChsLGMpe3ZhciBmO3N3aXRjaChjfD0wLDB8KGY9MHx1ZVsobHw9MCk+PjBdKSl7Y2FzZSA5MTpsPTB8ZnVuY3Rpb24gRXJlKGwsYyl7bHw9MDt2YXIgQSxrLE0sRCxmPTAscD0wLG09MCx3PTAsYj0wO0Q9b2Us''@;'; put 'put ''b2U9b2UrMTZ8MCxrPUQsYVsoY3w9MCk+PjJdPTEsQT0wfENmKGwsTT1jKzh8MCk7ZG97aWYoMCE9KDB8QSkmJjAhPSgwfCh3PTB8Q2YoQSxjKzE2fDApKSkmJjAhPSgwfChwPTB8Q2YodyxjKzI0fDApKSkmJjAhPSgwfChtPTB8Q2YocCxjKzMyfDApKSkmJjAhPSgwfChmPTB8U0MobSxiPWMr''@;'; put 'put ''NDB8MCkpKSl7Zm9yKG09MHxUZihjPTB8YVtiPj4yXSw4KSxwPTA7Oyl7aWYoKDB8cCk+PSgwfGMpKXtmPTEzO2JyZWFrfWlmKCEoZj0wfENmKGYsaykpKXtmPTk7YnJlYWt9aWYoV25bbSsocDw8Myk+PjJdPStfW2s+PjNdLCEoZj0wfEh1KGYsbSsocDw8MykrNHwwKSkpe2Y9MTI7YnJlYWt9''@;'; put 'put ''cD1wKzF8MCxjPTB8YVtiPj4yXX1pZig5PT0oMHxmKSl7SHQobSksbD0wO2JyZWFrfWlmKDEyPT0oMHxmKSl7SHQobSksbD0wO2JyZWFrfWlmKDEzPT0oMHxmKSl7YVtNKzM2Pj4yXT1tO2JyZWFrfX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9RCwwfGx9KGwrMXwwLGMpO2JyZWFrO2Nh''@;'; put 'put ''c2UgNDA6bD0wfGZ1bmN0aW9uIE1XKGwsYyl7bHw9MDt2YXIgYixNLFIsZj0wLHA9MCxtPTAsQT0wLHc9MCxrPTAsRD0wO1I9b2Usb2U9b2UrMTZ8MCxNPVIsYVsoY3w9MCk+PjJdPTIsYj0wfENmKGwsYys4fDApO2Rve2lmKDAhPSgwfGIpJiYwIT0oMHwoaz0wfENmKGIsYysxNnwwKSkpJiYw''@;'; put 'put ''IT0oMHwocD0wfENmKGssYysyNHwwKSkpJiYwIT0oMHwobT0wfENmKHAsYyszMnwwKSkpJiYwIT0oMHwoQT0wfENmKG0sYys0MHwwKSkpJiYwIT0oMHwodz0wfENmKEEsYys0OHwwKSkpJiYwIT0oMHwoZj0wfFNDKHcsRD1jKzU2fDApKSkpe2ZvcihBPTB8VGYocD0wfGFbRD4+Ml0sOCksbT0w''@;'; put 'put ''Ozspe2lmKCgwfG0pPj0oMHxwKSl7Zj0xNTticmVha31pZighKGY9MHxDZihmLE0pKSl7Zj0xMTticmVha31pZihXbltBKyhtPDwzKT4+Ml09K19bTT4+M10sIShmPTB8SHUoZixBKyhtPDwzKSs0fDApKSl7Zj0xNDticmVha31tPW0rMXwwLHA9MHxhW0Q+PjJdfWlmKDExPT0oMHxmKSl7SHQo''@;'; put 'put ''QSksbD0wO2JyZWFrfWlmKDE0PT0oMHxmKSl7SHQoQSksbD0wO2JyZWFrfWlmKDE1PT0oMHxmKSl7YVtjKzYwPj4yXT1BO2JyZWFrfX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9UiwwfGx9KGwrMXwwLGMpO2JyZWFrO2Nhc2UgNDc6Y2FzZSAzNTphW2M+PjJdPTAsYVtjKzg+PjJdPWw7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDowfHB2KGYpPyhhW2M+PjJdPTAsYVtjKzg+PjJdPWwpOmw9MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIENmKGwsYyl7Y3w9MDt2YXIgcCxtLGY9MDtyZXR1cm4gbT1vZSxvZT1vZSsxNnwwLHA9K3QzKGx8PTAsZj1tKSwoMHwoZj0wfGFbZj4+Ml0pKT09KDB8bCk/Zj0wOl9b''@;'; put 'put ''Yz4+M109cCxvZT1tLDB8Zn1mdW5jdGlvbiB5N2UobCxjKXtjfD0wO3ZhciBmLHA9MDtyZXR1cm4gZj1vZSxvZT1vZSsxNnwwLGw9MHxTQyhsfD0wLHA9ZiksYVtjPj4yXT0oMHwocD0wfGFbcD4+Ml0pKTwwPzA6MHxwPzI6MSxvZT1mLDB8bH1mdW5jdGlvbiB3N2UobCxjKXt2YXIgZixwO3Jl''@;'; put 'put ''dHVybiBmPW9lLG9lPW9lKzE2fDAsYVsoY3w9MCk+PjJdPTB8ZnVuY3Rpb24gWUFlKGwsYyxmKXtyZXR1cm4gMHx3JChsfD0wLGN8PTAsZnw9MCwtMSwwKX0obHw9MCxwPWYsMTApLG9lPWYsMHwoKDB8KGM9MHxhW3A+PjJdKSk9PSgwfGwpPzA6Yyl9ZnVuY3Rpb24gU0MobCxjKXt2YXIgZixw''@;'; put 'put ''O3JldHVybiBmPW9lLG9lPW9lKzE2fDAsYVsoY3w9MCk+PjJdPTB8UEwobHw9MCxwPWYsMTApLG9lPWYsMHwoKDB8KGM9MHxhW3A+PjJdKSk9PSgwfGwpPzA6Yyl9ZnVuY3Rpb24gRVcobCxjLGYpe3JldHVybiAwfGZ1bmN0aW9uIEE3ZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3Zh''@;'; put 'put ''ciBNLFIsbT0wLEE9MCx3PTAsYj0wLGs9MCxEPTA7Uj1vZSxvZT1vZSs5NnwwLE09UixEPVIrODB8MDtkb3tpZihsKXtmb3IocHx8KHA9MHxUZigxLDIwKSxhW3ArND4+Ml09Zj4+PjA+ODA/Zjo4MCksaz0wfGFbcCs0Pj4yXSwoZj0wfGFbcD4+Ml0pPyhyMigoYj0wfFphKDB8YVtwKzg+PjJd''@;'; put 'put ''LDB8dnIodz1mKzEwMHwwLGspKSkrKDB8dnIoayxmKSl8MCwwLDEwMCprfDApLGY9bCk6KHc9MTAwLGY9bCxiPTB8VGYoMTAwLGspKTtmPTB8a0MoTSxmLGMsRCk7KXtsPTB8YVtwPj4yXSxtPXc8PDEsQT0wfHZyKHcsayksKDB8bCk9PSgwfHcpPyhyMigoYj0wfFphKGIsMHx2cihtLGspKSkr''@;'; put 'put ''QXwwLDAsMHxBKSxsPTB8YVtwPj4yXSk6bT13LEE9TSx3PTgwKyhsPWIrKDB8dnIobCxrKSl8MCl8MDtkb3thW2w+PjJdPWFbQT4+Ml0sbD1sKzR8MCxBPUErNHwwfXdoaWxlKCgwfGwpPCgwfHcpKTthW3A+PjJdPTErKDB8YVtwPj4yXSksdz1tfWlmKDB8YVtEPj4yXSYmKGFbKEQ9cCsxNnww''@;'; put 'put ''KT4+Ml09MXxhW0Q+PjJdKSxmPTB8YVtwPj4yXSl7YVtwKzg+PjJdPTB8WmEoYiwwfHZyKGYsaykpO2JyZWFrfUh0KGIpLEh0KHApLHA9MDticmVha319d2hpbGUoMCk7cmV0dXJuIG9lPVIsMHxwfShsfD0wLGN8PTAsZnw9MCwwKX1mdW5jdGlvbiB4cmUobCl7cmV0dXJuIDB8RVcobHw9MCww''@;'; put 'put ''LDApfWZ1bmN0aW9uIFRyZShsKXt2YXIgcCxjPTAsZj0wLG09MCxBPTAsdz0wO2lmKHA9MHxhWzEyKyhsfD0wKT4+Ml0sMHxsKXtmb3IobT0wfGFbbCs4Pj4yXSxBPWwrNHwwLHc9MD09KDB8cCksYz0wOyEoKDB8Yyk+PSgwfGFbbD4+Ml0pKTspZj1tKygwfHZyKDB8YVtBPj4yXSxjKSl8MCx3''@;'; put 'put ''fHxub1sxMjcmcF0oZiksVjMoZiksYz1jKzF8MDtIdChtKSxIdChsKX19ZnVuY3Rpb24gVjMobCl7c3dpdGNoKDB8YVsobHw9MCk+PjJdKXtjYXNlIDM6Y2FzZSAyOmNhc2UgNTpjYXNlIDQ6Y2FzZSA2Okh0KDB8YVtsKzgrND4+Ml0pO2JyZWFrO2Nhc2UgNzpjYXNlIDEyOkh0KDB8YVtsKzQw''@;'; put 'put ''Pj4yXSk7YnJlYWs7Y2FzZSA5OmNhc2UgODpjYXNlIDExOkh0KDB8YVtsKzg+PjJdKTticmVhaztjYXNlIDE0OmNhc2UgMTM6IWZ1bmN0aW9uIGpGKGwpe3ZhciBjPTAsZj0wLHA9MDtzd2l0Y2goMHxhWyhsfD0wKT4+Ml0pe2Nhc2UgMTpmb3IocD1sKzQwfDAsYz1sKzgrMzZ8MCxsPTA7Zj0w''@;'; put 'put ''fGFbYz4+Ml0sISgoMHxsKT49KDB8YVtwPj4yXSkpOylIdCgwfGFbZisobDw8MykrND4+Ml0pLGw9bCsxfDA7SHQoZik7YnJlYWs7Y2FzZSAyOmZvcihwPWwrNTZ8MCxmPWwrNjB8MCxsPTA7Yz0wfGFbZj4+Ml0sISgoMHxsKT49KDB8YVtwPj4yXSkpOylIdCgwfGFbYysobDw8MykrND4+Ml0p''@;'; put 'put ''LGw9bCsxfDA7SHQoYyl9fShsKzh8MCk7YnJlYWs7Y2FzZSAxMDpIdCgwfGFbbCsxNj4+Ml0pfX1mdW5jdGlvbiBNQyhsLGMsZil7bHw9MCxmfD0wO3ZhciBrLEQsUixwPTAsbT0wLEE9MCx3PTAsYj0wLE09MDtSPW9lLG9lPW9lKzE2fDAsaz1SKzR8MCxEPVIsYVsoY3w9MCk+PjJdPTAsYVtm''@;'; put 'put ''Pj4yXT0wIT0oMHxsYygwfGZyKGwpKSkmMSxwPTB8YVs0NzE4NF07ZTpkb3tpZigwfHAmJihBPTB8Rm8obCxwKSx3PTB8dWVbQT4+MF0sdzw8MjQ+PjI0KSl7Zm9yKHA9MjAzODg7Oyl7aWYoIShtPTB8YVtwPj4yXSkpYnJlYWsgZTtpZih3PDwyND4+MjQ9PSgwfHVlW20+PjBdKSYmMD09KDB8''@;'; put 'put ''WmkoQSxtKSkpYnJlYWs7cD1wKzEyfDB9YVtjPj4yXT1hW3ArND4+Ml0sYVtmPj4yXT1hW3ArOD4+Ml19fXdoaWxlKDApOzB8KHA9MHxhWzQ3MTk1XSkmJjE9PSgwfGFbZj4+Ml0pJiYoYj0wfEZvKGwscCksMHx1ZVtiPj4wXSkmJnhXKGIsZiksMHwocD0wfGFbNDcxOTZdKSYmMT09KDB8YVtj''@;'; put 'put ''Pj4yXSkmJihNPTB8Rm8obCxwKSwwfHVlW00+PjBdKSYmeFcoTSxjKSwwfHVlWzE1MysoMHxhW2wrMTY+PjJdKT4+MF0mJihiPWwrLTQ4fDAsTUMoMHxybCh3PTB8ZnIoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6YikrNDA+PjJdKSwwfGFbKDI9PSgwfChNPTMmYVtsPj4yXSkpP2w6YikrNDA+''@;'; put 'put ''PjJdLDB8YVsoMz09KDB8TSk/bDpsKzQ4fDApKzQwPj4yXSwwLDApLGssRCksYVtmPj4yXT1hW2s+PjJdfGFbZj4+Ml0sYVtjPj4yXT1hW0Q+PjJdfGFbYz4+Ml0pLG9lPVJ9ZnVuY3Rpb24geFcobCxjKXtsfD0wLGN8PTA7dmFyIGssTSxSLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MDtS''@;'; put 'put ''PW9lLG9lPW9lKzE2fDAsTT1SLGs9Uis0fDAsYj0wLGY9MDtlOmZvcig7Oyl7Zm9yKGFbYz4+Ml09ZixtPSgwfGIpPDQsQT0zPT0oMHxiKSx3PTA9PSgwfGIpOzspe2lmKCEobSYwIT0oMHx1ZVtsPj4wXSkpKWJyZWFrIGU7aWYoYVtrPj4yXT0wLHA9MHxJcmUobCxrKSwhKGY9MHxhW2s+PjJd''@;'; put 'put ''KSl7RD01O2JyZWFrIGV9aWYoIShBJihsPTg9PSgwfGYpKSkmJighKHcmbCl8fDB8dWVbcD4+MF0pKWJyZWFrO2Fbaz4+Ml09MCxsPXB9Zj1hW2M+PjJdfGY8PChiPDwzKSxiPWIrMXwwLGw9cH01PT0oMHxEKSYmKGFbTT4+Ml09bCxYcigwLDk5Njk0LE0pKSxvZT1SfWZ1bmN0aW9uIElyZShs''@;'; put 'put ''LGMpe2x8PTAsY3w9MDt2YXIgcCxtLGY9MDtpZihtPW9lLG9lPW9lKzE2fDAsYVsocD1tKT4+Ml09MCwoMHwoZj0wfFpGKGwsMjA0NDgscCkpKT09KDB8bCkpe2Zvcig7KDB8bCkhPSgwfChmPTB8WkYobCwyMDQ2NCxwKSkpOylsPWY7Zj0wfFpGKGwsMjA1MTIscCl9cmV0dXJuIDAhPSgwfChs''@;'; put 'put ''PTB8YVtwPj4yXSkpJjA9PSgxNSZsfDApJiYoYVtwPj4yXT1sfD0xKSxhW2M+PjJdPWFbYz4+Ml18bCxvZT1tLDB8Zn1mdW5jdGlvbiBaRihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7Zm9yKHZhciBwPTAsbT0wLEE9MDtwPTB8YVtjPj4yXTspe2lmKCEoMHxuMihsLHAsbT0wfHpvKHApKSkpe0E9''@;'; put 'put ''NDticmVha31jPWMrOHwwfXJldHVybiA0PT0oMHxBKSYmKGFbZj4+Ml09YVtmPj4yXXxhW2MrND4+Ml0sbD1sK218MCksMHxsfWZ1bmN0aW9uIGpkKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihBPTAsZj0wOzQhPSgwfEEpOyl7Zm9yKG09Yz4+KEE8PDMpJjE1''@;'; put 'put ''LHA9MTQwMDswfGFbcCsxNj4+Ml07KXtpZigoMHxtKT09KDB8YVtwPj4yXSkpe3c9NjticmVha31wPXArMjR8MH02PT0oMHx3KSYmKHc9MCxmPStfW3ArOD4+M10rZiksQT1BKzF8MH1yZXR1cm4gMTAqZiorY2wobCwwfGFbNDcxODhdLDEsMCl9ZnVuY3Rpb24gemgobCxjLGYscCxtLEEpe2N8''@;'; put 'put ''PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsayxELEsscGUsbWUsdz0wLE09MCxSPTAsRz0wO3JldHVybiBEPW9lLG9lPW9lKzgwfDAsYj1EKzcyfDAsaz1EKzh8MCxNPUQsdz0ramQobHw9MCxBfD0wKSxfW00+PjNdPXcqPXcsYVttKzEyPj4yXT1BLGFbKEE9bSszMnwwKT4+Ml09YVsobT1jKygo''@;'; put 'put ''bD1wKzN8MCk8PDQpfDApPj4yXSxhW0ErND4+Ml09YVttKzQ+PjJdLGFbQSs4Pj4yXT1hW20rOD4+Ml0sYVtBKzEyPj4yXT1hW20rMTI+PjJdLCgwfHApPigwfGYpJiYoRz0rX1tjKyhwPDw0KSs4Pj4zXS0rX1tjKyhsPDw0KSs4Pj4zXSkqRysoUj0rX1tjKyhwPDw0KT4+M10tK19bbT4+M10p''@;'; put 'put ''KlI8dyYmKHA9cCstM3wwKSxhWyhtZT1rKzQ4fDApPj4yXT1hWyhwZT1jKyhwPDw0KXwwKT4+Ml0sYVttZSs0Pj4yXT1hW3BlKzQ+PjJdLGFbbWUrOD4+Ml09YVtwZSs4Pj4yXSxhW21lKzEyPj4yXT1hW3BlKzEyPj4yXSxhWyhLPWsrMzJ8MCk+PjJdPWFbKGw9YysocCsxPDw0KXwwKT4+Ml0s''@;'; put 'put ''YVtLKzQ+PjJdPWFbbCs0Pj4yXSxhW0srOD4+Ml09YVtsKzg+PjJdLGFbSysxMj4+Ml09YVtsKzEyPj4yXSxhWyhtPWsrMTZ8MCk+PjJdPWFbKGY9YysocCsyPDw0KXwwKT4+Ml0sYVttKzQ+PjJdPWFbZis0Pj4yXSxhW20rOD4+Ml09YVtmKzg+PjJdLGFbbSsxMj4+Ml09YVtmKzEyPj4yXSxh''@;'; put 'put ''W2s+PjJdPWFbQT4+Ml0sYVtrKzQ+PjJdPWFbQSs0Pj4yXSxhW2srOD4+Ml09YVtBKzg+PjJdLGFbaysxMj4+Ml09YVtBKzEyPj4yXSxhW2I+PjJdPWssYVtiKzQ+PjJdPU0sd0QoYiw5MixrLDEpLGFbcGU+PjJdPWFbbWU+PjJdLGFbcGUrND4+Ml09YVttZSs0Pj4yXSxhW3BlKzg+PjJdPWFb''@;'; put 'put ''bWUrOD4+Ml0sYVtwZSsxMj4+Ml09YVttZSsxMj4+Ml0sYVtsPj4yXT1hW0s+PjJdLGFbbCs0Pj4yXT1hW0srND4+Ml0sYVtsKzg+PjJdPWFbSys4Pj4yXSxhW2wrMTI+PjJdPWFbSysxMj4+Ml0sYVtmPj4yXT1hW20+PjJdLGFbZis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4y''@;'; put 'put ''XSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0sYVsoTT1jKyhwKzM8PDQpfDApPj4yXT1hW2s+PjJdLGFbTSs0Pj4yXT1hW2srND4+Ml0sYVtNKzg+PjJdPWFbays4Pj4yXSxhW00rMTI+PjJdPWFbaysxMj4+Ml0sb2U9RCwwfHB9ZnVuY3Rpb24gTTEobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0w''@;'; put 'put ''LG18PTA7dmFyIGssTSxSLHBlLG1lLHc9MCxiPTAsRD0wLEc9MCxLPTA7cmV0dXJuIFI9b2Usb2U9b2UrODB8MCxrPVIrNzJ8MCxNPVIrOHwwLEQ9UixiPStqZChsfD0wLEF8PTApLF9bRD4+M109Yio9YixhW20rOD4+Ml09QSxhWyhtPW0rMTZ8MCk+PjJdPWFbKGw9YysoZjw8NCl8MCk+PjJd''@;'; put 'put ''LGFbbSs0Pj4yXT1hW2wrND4+Ml0sYVttKzg+PjJdPWFbbCs4Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sKDB8cCk+KDB8ZikmJihLPStfW2MrKGY8PDQpKzg+PjNdLStfW2MrKCh3PWYrM3wwKTw8NCkrOD4+M10pKksrKEc9K19bbD4+M10tK19bYysodzw8NCk+PjNdKSpHPGJ8fCh3PWYp''@;'; put 'put ''LGFbTT4+Ml09YVsocD1jKyh3KzM8PDQpfDApPj4yXSxhW00rND4+Ml09YVtwKzQ+PjJdLGFbTSs4Pj4yXT1hW3ArOD4+Ml0sYVtNKzEyPj4yXT1hW3ArMTI+PjJdLGFbKEE9TSsxNnwwKT4+Ml09YVsoZj1jKyh3KzI8PDQpfDApPj4yXSxhW0ErND4+Ml09YVtmKzQ+PjJdLGFbQSs4Pj4yXT1h''@;'; put 'put ''W2YrOD4+Ml0sYVtBKzEyPj4yXT1hW2YrMTI+PjJdLGFbKHBlPU0rMzJ8MCk+PjJdPWFbKGw9YysodysxPDw0KXwwKT4+Ml0sYVtwZSs0Pj4yXT1hW2wrND4+Ml0sYVtwZSs4Pj4yXT1hW2wrOD4+Ml0sYVtwZSsxMj4+Ml09YVtsKzEyPj4yXSxhWyhtZT1NKzQ4fDApPj4yXT1hW20+PjJdLGFb''@;'; put 'put ''bWUrND4+Ml09YVttKzQ+PjJdLGFbbWUrOD4+Ml09YVttKzg+PjJdLGFbbWUrMTI+PjJdPWFbbSsxMj4+Ml0sYVtrPj4yXT1tZSxhW2srND4+Ml09RCx3RChrLDkyLE0sMCksYVsoRD1jKyh3PDw0KXwwKT4+Ml09YVttZT4+Ml0sYVtEKzQ+PjJdPWFbbWUrND4+Ml0sYVtEKzg+PjJdPWFbbWUr''@;'; put 'put ''OD4+Ml0sYVtEKzEyPj4yXT1hW21lKzEyPj4yXSxhW2w+PjJdPWFbcGU+PjJdLGFbbCs0Pj4yXT1hW3BlKzQ+PjJdLGFbbCs4Pj4yXT1hW3BlKzg+PjJdLGFbbCsxMj4+Ml09YVtwZSsxMj4+Ml0sYVtmPj4yXT1hW0E+PjJdLGFbZis0Pj4yXT1hW0ErND4+Ml0sYVtmKzg+PjJdPWFbQSs4Pj4y''@;'; put 'put ''XSxhW2YrMTI+PjJdPWFbQSsxMj4+Ml0sYVtwPj4yXT1hW00+PjJdLGFbcCs0Pj4yXT1hW00rND4+Ml0sYVtwKzg+PjJdPWFbTSs4Pj4yXSxhW3ArMTI+PjJdPWFbTSsxMj4+Ml0sb2U9UiwwfHd9ZnVuY3Rpb24gVnMobCxjLGYscCxtKXtsfD0wO3ZhciBBLGIsdz0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAsSz0wO009KGs9MTAqKHA9K3ApLygrRjAoKygoTT0rX1soZnw9MCk+PjNdLShHPStfWyhjfD0wKT4+M10pKSpNKyhEPStfW2YrOD4+M10tKEs9K19bYys4Pj4zXSkpKkQpKSsxZS00KSkqKChNPj0wPzFlLTQ6LTFlLTQpK00pLGI9Ry0oUj0uNSooayo9KEQ+PTA/MWUtNDotMWUtNCkr''@;'; put 'put ''RCkpLEE9Sy0oRD0uNSpNKSxEPUsrRCx3PShHPVIrRyk+KHc9KEs9YitNKT4oTT1HK00pP0s6TSk/Rzp3LHA9RD4ocD0oUj1BK2spPihrPUQrayk/UjprKT9EOnAsaz1EPChrPVI8az9SOmspP0Q6ayxfW2w+PjNdPWI8KE09RzwoTT1LPE0/SzpNKT9HOk0pP2I6TSxfW2wrOD4+M109QTxrP0E6''@;'; put 'put ''ayxfW2wrMTY+PjNdPWI+dz9iOncsX1tsKzI0Pj4zXT1BPnA/QTpwfWZ1bmN0aW9uIHc1KGwsYyxmLHAsbSxBLHcpe2Z8PTAscHw9MCxtPSttLEE9K0Esd3w9MDt2YXIgayxNLEQsUixHLEsscGUsbWUsYmUsYj0wO2ZvcihLPW9lLG9lPW9lKzQ4fDAsTT1LKzMyfDAsaz1LKzE2fDAsRz1LLFI9''@;'; put 'put ''MHxhWyhEPTEyKygwfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdLGFbRD4+Ml09Y3w9MCxHYyhsLDB8YVszMzYrKDB8YVtsPj4yXSk+PjJdKSxZZihsLEEpLHBlPTEwLygrRjAoKygoYmU9K19bcD4+M10tK19bZj4+M10pKmJlKyhtZT0rX1soYz1wKzh8MCk+PjNdLStfW2YrOD4+M10pKm1lKSkr''@;'; put 'put ''MWUtNCksX1twPj4zXT1wZSooKGJlPj0wPzFlLTQ6LTFlLTQpK2JlKSxfW2M+PjNdPSgobWU+PTA/MWUtNDotMWUtNCkrbWUpKnBlLGM9MDshKCgwfGMpPj00KSYmKGI9dz4+KGM8PDMpJjI1NSk7KWFbaz4+Ml09YVtmPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+''@;'; put 'put ''Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbTT4+Ml09YVtwPj4yXSxhW00rND4+Ml09YVtwKzQ+PjJdLGFbTSs4Pj4yXT1hW3ArOD4+Ml0sYVtNKzEyPj4yXT1hW3ArMTI+PjJdLFhUKEcsbCxrLE0sbSxBLGIpLGFbZj4+Ml09YVtHPj4yXSxhW2YrND4+Ml09YVtHKzQ+PjJdLGFbZis4Pj4y''@;'; put 'put ''XT1hW0crOD4+Ml0sYVtmKzEyPj4yXT1hW0crMTI+PjJdLGM9YysxfDA7YVtEPj4yXT1SLG9lPUt9ZnVuY3Rpb24gWFQobCxjLGYscCxtLEEsdyl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtPSttLEE9K0E7dmFyIGssTSxELEssYj0wLFI9MCxHPTAscGU9MDtmb3IoSz1vZSxvZT1vZSszMnwwLE09''@;'; put 'put ''SysxNnwwLGs9SyxEPTE1Jih3fD0wKSxiPTE0MDA7Uj0wfGFbYj4+Ml07KXtpZigoMHxEKT09KDB8Uikpe0c9NDticmVha31iPWIrMjR8MH00PT0oMHxHKSYmKF9bcD4+M109KHBlPStfW2IrOD4+M10qbSkqK19bcD4+M10sX1soUj1wKzh8MCk+PjNdPXBlKitfW1I+PjNdLEc9MHxhW2IrMTY+''@;'; put 'put ''PjJdLGFbaz4+Ml09YVtmPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbTT4+Ml09YVtwPj4yXSxhW00rND4+Ml09YVtwKzQ+PjJdLGFbTSs4Pj4yXT1hW3ArOD4+Ml0sYVtNKzEyPj4yXT1hW3ArMTI+PjJdLFlMWzE1''@;'; put 'put ''JkddKGMsayxNLG0sQSx3KSxfW2Y+PjNdPStfW3A+PjNdKyArX1tmPj4zXSxfWyhHPWYrOHwwKT4+M109K19bUj4+M10rICtfW0c+PjNdKSxhW2w+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXSxvZT1LfWZ1''@;'; put 'put ''bmN0aW9uIGI1KGwpe2x8PTA7dmFyIG0sQSxjPTAsZj0wLHA9MDtpZihBPW9lLG9lPW9lKzE2fDAsKG09MHxtcigzMDQpKXx8WHIoMSw5OTg3NixBKSxhW20+PjJdPWw9MHxhWyhwPWwrMTZ8MCk+PjJdLGFbcD4+Ml09bSxsKXtmPWwrMTZ8MCxwPTQwKyhjPW0rMTZ8MCl8MDtkb3thW2M+PjJd''@;'; put 'put ''PWFbZj4+Ml0sYz1jKzR8MCxmPWYrNHwwfXdoaWxlKCgwfGMpPCgwfHApKTtmPWwrNTZ8MCxwPTQwKyhjPW0rNTZ8MCl8MDtkb3thW2M+PjJdPWFbZj4+Ml0sYz1jKzR8MCxmPWYrNHwwfXdoaWxlKCgwfGMpPCgwfHApKTthW20rMTQ0Pj4yXT1hW2wrMTQ0Pj4yXSxhW20rMTQ4Pj4yXT1hW2wr''@;'; put 'put ''MTQ4Pj4yXSxfW20rMTUyPj4zXT0rX1tsKzE1Mj4+M10sYVttKzEzNj4+Ml09YVtsKzEzNj4+Ml0sZj1sKzk2fDAscD00MCsoYz1tKzk2fDApfDA7ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSl9ZWxzZSBhW20rMTQ0Pj4yXT0zLGFbbSsxNDg+''@;'; put 'put ''PjJdPTAsX1ttKzE1Mj4+M109MTtyZXR1cm4gb2U9QSwwfG19ZnVuY3Rpb24gRUMobCl7dmFyIGM7aWYoYz0wfGFbKGw9MTYrKGx8PTApfDApPj4yXSlyZXR1cm4gSHQoMHxhW2MrMjEyPj4yXSksSHQoMHxhW2MrMjA4Pj4yXSksSHQoMHxhW2MrMjE2Pj4yXSksSHQoMHxhW2MrMjIwPj4yXSks''@;'; put 'put ''SHQoMHxhW2MrMjI0Pj4yXSksSHQoMHxhW2MrMjI4Pj4yXSksSHQoMHxhW2MrMjMyPj4yXSksSHQoMHxhW2MrMjM2Pj4yXSksSHQoMHxhW2MrMjQwPj4yXSksSHQoMHxhW2MrMjQ0Pj4yXSksSHQoMHxhW2MrMjQ4Pj4yXSksSHQoMHxhW2MrMjUyPj4yXSksSHQoMHxhW2MrMjU2Pj4yXSksSHQo''@;'; put 'put ''MHxhW2MrMjcyPj4yXSksSHQoMHxhW2MrMjg0Pj4yXSksSHQoMHxhW2MrMjgwPj4yXSksYVtsPj4yXT1hW2M+PjJdLHZvaWQgSHQoYyk7QnIoOTk5MDIsOTk5MDYsMTE3LDk5OTEzKX1mdW5jdGlvbiB6RihsLGMsZixwLG0sQSx3KXt2YXIgYixrO2Z8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCxr''@;'; put 'put ''PTB8YVsxNisobHw9MCk+PjJdLDAhPSgwfChjfD0wKSkmMCE9KDMyNzY4JihiPTB8YVtsKzE1Mj4+Ml0pfDApJiYoYVtrKzE5Mj4+Ml09YyksMCE9KDY1NTM2JmJ8MCkmJihhW2srMjEyPj4yXT0wfHYyKEEsdyksMCE9KDB8ZikpJiYwIT0oMHx1ZVtmPj4wXSk/KGFbaysyMDg+PjJdPTB8djIo''@;'; put 'put ''Zix3KSxsPTEpOmw9MDtkb3tpZig0MTk0MzA0JmIpe2lmKDB8cCYmMHx1ZVtwPj4wXSl7YVtrKzIyOD4+Ml09MHx2MihwLHcpLFR0WyhsPWsrMjYwfDApPj4xXT0xfFR0W2w+PjFdLGw9MTticmVha30oYz0wfGFbaysxOTI+PjJdKSYmKGFbaysyMjg+PjJdPTB8bmEoYyksbD0xKX19d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIDAhPSgwfG0pJjAhPSg4Mzg4NjA4JmJ8MCkmJjAhPSgwfHVlW20+PjBdKSYmKGFbaysyNDQ+PjJdPTB8djIobSx3KSxsPTEpLDB8bH1mdW5jdGlvbiB4QyhsLGMsZil7Y3w9MDt2YXIgbSxBLHcsYixwPTA7aWYoYj1vZSxvZT1vZSs4MHwwLHc9YixBPWIrOHwwLHA9MHxhWzky''@;'; put 'put ''KygwfGFbOCsoMHxhWzE2KyhtPTB8YVsxNjgrKDB8YVsobHw9MCk+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0sVEMobCxmfD0wKSwwIT0oMHwobD0wfExpKGMsMTQxMDYwKSkpJiYwIT0oMHx1ZVtsPj4wXSkpY28oZixsKSwobD0wfGFbKHA9Zis0fDApPj4yXSk+Pj4wPj0oMHxhW2YrOD4+Ml0p''@;'; put 'put ''Pj4+MCYmKEcwKGYsMSksbD0wfGFbcD4+Ml0pLHVlW2w+PjBdPTAsYVtwPj4yXT1sPTB8YVtmPj4yXTtlbHNle3N3aXRjaCgoMHxtKSE9KDB8YykmMCE9KDB8cCkmJihjbyhmLHApLChsPTB8YVsocD1mKzR8MCk+PjJdKT4+PjA+PSgwfGFbZis4Pj4yXSk+Pj4wJiYoRzAoZiwxKSxsPTB8YVtw''@;'; put 'put ''Pj4yXSksYVtwPj4yXT1sKzEsdWVbbD4+MF09OTUpLDB8TWkoYykpe2Nhc2UgMDpwPSgwfG0pPT0oMHxjKT8xMTE0OTQ6OTk5MjcsbD0oMHxhW2M+PjJdKT4+PjQ7YnJlYWs7Y2FzZSAxOnA9MTExNDgxLGw9KDB8YVtjPj4yXSk+Pj40O2JyZWFrO2Nhc2UgMjpwPTExMTQ1MCxsPSgwfGFbYz4+''@;'; put 'put ''Ml0pPj4+NDticmVhaztkZWZhdWx0OnA9MCxsPTB9Y28oZixwKSxhW3c+PjJdPWwsYW8oQSw5OTkzMyx3KSxjbyhmLEEpLChsPTB8YVsocD1mKzR8MCk+PjJdKT4+PjA+PSgwfGFbZis4Pj4yXSk+Pj4wJiYoRzAoZiwxKSxsPTB8YVtwPj4yXSksdWVbbD4+MF09MCxhW3A+PjJdPWw9MHxhW2Y+''@;'; put 'put ''PjJdfXJldHVybiBvZT1iLDB8bH1mdW5jdGlvbiBUQyhsLGMpe2N8PTA7dmFyIG0sQSx3LGY9MCxwPTA7dz1vZSxvZT1vZSsxNDR8MCxBPXcsbT13Kzh8MCwoMHwoZj0wfGFbMTYwKyhsfD0wKT4+Ml0pKT4xJiY2NCZhW2wrMTUyPj4yXXwwJiYoY28oYywwfGFbKDB8YVszMDgrKDB8YVtsPj4y''@;'; put 'put ''XSk+PjJdKSsoZjw8Mik+PjJdKSwoZj0wfGFbKHA9Yys0fDApPj4yXSk+Pj4wPj0oMHxhW2MrOD4+Ml0pPj4+MCYmKEcwKGMsMSksZj0wfGFbcD4+Ml0pLGFbcD4+Ml09ZisxLHVlW2Y+PjBdPTk1KSwoMHwocD0wfGFbbCsxOTY+PjJdKSk+MHwoMHwoZj0wfGFbbCsyMDA+PjJdKSk+MCYmKGFb''@;'; put 'put ''QT4+Ml09cCxhW0ErND4+Ml09ZixhbyhtLDk5OTM3LEEpLGNvKGMsbSkpLG9lPXd9ZnVuY3Rpb24gS1QobCxjLGYpe2N8PTA7dmFyIEQsUixHLEsscGUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2lmKHBlPW9lLG9lPW9lKzQ4fDAsUj1wZSsxNnwwLEc9cGUsSz0rX1sxNTIrKDB8YVsx''@;'; put 'put ''NisobHw9MCk+PjJdKT4+M10sKChEPTB8JFQoZnw9MCwwLG09cGUrMzJ8MCkpLTF8MCk+Pj4wPj0yKXtmb3IoX1tHPj4zXT1iPS41KigocD0rX1tjKzE2Pj4zXSkrICtfW2M+PjNdKSxfW0crOD4+M109az0uNSooKEE9K19bYysyND4+M10pKyArX1tjKzg+PjNdKSxiPXAtYixrPUEtaywoTT1L''@;'; put 'put ''Pi41KSYmWWYobCwuNSksQT0wLG09MHxhWzgrKHc9MHxhW20+PjJdKT4+Ml07Zj0wfGFbbT4+Ml07KTA9PStXblsoYz1tKzR8MCk+PjJdP3A9QToob2wobCxmKSxwPTB8YVttKzEyPj4yXT82LjI4MzE4NTMwNzE3OTU4NiorV25bYz4+Ml0rQTo2LjI4MzE4NTMwNzE3OTU4NixhW1I+PjJdPWFb''@;'; put 'put ''Rz4+Ml0sYVtSKzQ+PjJdPWFbRys0Pj4yXSxhW1IrOD4+Ml09YVtHKzg+PjJdLGFbUisxMj4+Ml09YVtHKzEyPj4yXSxjPTB8RmIoUixiLGssQSxwKSxXZihsLDB8YVtjPj4yXSwwfGFbYys0Pj4yXSwwLDAsMSksblAoYykpLEE9cCxtPW0rMTJ8MDtNJiZZZihsLEspLHk3KHcpfXJldHVybiBv''@;'; put 'put ''ZT1wZSwwfER9ZnVuY3Rpb24gJFQobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBNLFIsRyxLLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtLPW9lLG9lPW9lKzE2fDAsRD1LKzh8MCxNPUssRz0wfG1yKDEyKSxBPTB8bmEobCk7ZTpkb3tpZighYylmb3IoYz0xLHA9QTs7KXtzd2l0Y2go''@;'; put 'put ''MHx1ZVtwPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA1ODpjPWMrMXwwfXA9cCsxfDB9fXdoaWxlKDApO2ZvcihhW0crND4+Ml09QSxSPTB8bXIoMTIrKDEyKmN8MCl8MCksYVtHKzg+PjJdPVIsaz0xLG09MCxjPTAscD1BOzspe2lmKCEocD0wfHZ2KHAsMTA3OTg0KSkpe3A9MjA7YnJlYWt9''@;'; put 'put ''aWYoISgodz0rUHJlKHApKT49MCkpe3A9MTc7YnJlYWt9aWYoKGI9dy1rKT4wJiYoMD09KDB8YVs1MTU2XSl8fGI8MWUtNSZiPi0xZS01P3c9azooYVtNPj4yXT1sLFhyKDAsOTk5NDgsTSksYVs1MTU2XT0wLHc9ayxjPTMpKSxiPWstdyx3PjAmJih1ZVtSKygxMiptfDApKzg+PjBdPTEpLDB8''@;'; put 'put ''dWVbcD4+MF0mJihhW1IrKDEyKm18MCk+PjJdPXApLHA9bSsxfDAsV25bUisoMTIqbXwwKSs0Pj4yXT13LGI8MWUtNSZiPi0xZS01KXttPXAscD0zMDticmVha31rPWIsbT1wLHA9MH1lOmRve2lmKDE3PT0oMHxwKSkwfGFbNTE1Nl0/KGFbRD4+Ml09bCxYcigxLDk5OTgzLEQpLGFbNTE1Nl09''@;'; put 'put ''MCxjPTIpOmM9MSx5NyhHKTtlbHNlIGlmKDIwPT0oMHxwKSlpZihrPjApe2ZvcihwPTAsQT0wOyEoKDB8cCk+PSgwfG0pKTspRD1BKygwPT0rV25bUisoMTIqcHwwKSs0Pj4yXSYxKXwwLHA9cCsxfDAsQT1EO2lmKCgwfEEpPD0wKXtXblsocD1SKygxMioobSstMXwwKXwwKSs0fDApPj4yXT1r''@;'; put 'put ''KyArV25bcD4+Ml0scD0zMDticmVha31mb3Iodz1rLysoMHxBKSxwPTA7Oyl7aWYoKDB8cCk+PSgwfG0pKXtwPTMwO2JyZWFrIGV9MD09K1duWyhBPVIrKDEyKnB8MCkrNHwwKT4+Ml0mJihXbltBPj4yXT13KSxwPXArMXwwfX1lbHNlIHA9MzB9d2hpbGUoMCk7aWYoMzA9PSgwfHApKXtmb3Io''@;'; put 'put ''O3A9bSstMXwwLCEoKDB8bSk8PTB8fCtXbltSKygxMipwfDApKzQ+PjJdPjApOyltPXA7YVtSKygxMiptfDApPj4yXT0wLGFbRz4+Ml09bSxhW2Y+PjJdPUd9cmV0dXJuIG9lPUssMHxjfWZ1bmN0aW9uIHk3KGwpe0h0KDB8YVs0KyhsfD0wKT4+Ml0pLEh0KDB8YVtsKzg+PjJdKSxIdChsKX1m''@;'; put 'put ''dW5jdGlvbiBQcmUobCl7dmFyIGYscCxjPTAsbT0wO3JldHVybiBwPW9lLG9lPW9lKzE2fDAsZj1wLChsPTB8VXMobHw9MCw1OSkpPyhtPWwrMXwwLHVlW2w+PjBdPTAsYz0oYz0rdDMobSxmKSk+PTAmJigwfGFbZj4+Ml0pIT0oMHxtKT9jOi0xKTpjPTAsb2U9cCwrY31mdW5jdGlvbiBHRihs''@;'; put 'put ''LGMsZixwKXtjfD0wLHB8PTA7dmFyIEcsSyxwZSxtZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO2lmKG1lPW9lLG9lPW9lKzgwfDAsSz1tZSxwZT0rX1sxNTIrKDB8YVsxNisobHw9MCk+PjJdKT4+M10sKChHPTB8JFQoZnw9MCwwLEE9bWUrNjR8MCkpLTF8MCk+Pj4wPj0yKXtm''@;'; put 'put ''b3IocD8oYVtLPj4yXT1hWyhSPWMrMzJ8MCk+PjJdLGFbSys0Pj4yXT1hW1IrND4+Ml0sYVtLKzg+PjJdPWFbUis4Pj4yXSxhW0srMTI+PjJdPWFbUisxMj4+Ml0sYVsoUj1LKzE2fDApPj4yXT1hWyhEPWMrNDh8MCk+PjJdLGFbUis0Pj4yXT1hW0QrND4+Ml0sYVtSKzg+PjJdPWFbRCs4Pj4y''@;'; put 'put ''XSxhW1IrMTI+PjJdPWFbRCsxMj4+Ml0sYVsoUj1LKzMyfDApPj4yXT1hW2M+PjJdLGFbUis0Pj4yXT1hW2MrND4+Ml0sYVtSKzg+PjJdPWFbYys4Pj4yXSxhW1IrMTI+PjJdPWFbYysxMj4+Ml0sYVsoUj1LKzQ4fDApPj4yXT1hWyhEPWMrMTZ8MCk+PjJdLGFbUis0Pj4yXT1hW0QrND4+Ml0s''@;'; put 'put ''YVtSKzg+PjJdPWFbRCs4Pj4yXSxhW1IrMTI+PjJdPWFbRCsxMj4+Ml0pOihhW0s+PjJdPWFbYz4+Ml0sYVtLKzQ+PjJdPWFbYys0Pj4yXSxhW0srOD4+Ml09YVtjKzg+PjJdLGFbSysxMj4+Ml09YVtjKzEyPj4yXSxhWyhSPUsrMTZ8MCk+PjJdPWFbKEQ9YysxNnwwKT4+Ml0sYVtSKzQ+PjJd''@;'; put 'put ''PWFbRCs0Pj4yXSxhW1IrOD4+Ml09YVtEKzg+PjJdLGFbUisxMj4+Ml09YVtEKzEyPj4yXSxhWyhSPUsrMzJ8MCk+PjJdPWFbKEQ9YyszMnwwKT4+Ml0sYVtSKzQ+PjJdPWFbRCs0Pj4yXSxhW1IrOD4+Ml09YVtEKzg+PjJdLGFbUisxMj4+Ml09YVtEKzEyPj4yXSxhWyhSPUsrNDh8MCk+PjJd''@;'; put 'put ''PWFbKEQ9Yys0OHwwKT4+Ml0sYVtSKzQ+PjJdPWFbRCs0Pj4yXSxhW1IrOD4+Ml09YVtEKzg+PjJdLGFbUisxMj4+Ml09YVtEKzEyPj4yXSksTT0oaz0rX1soYj1LKzE2fDApPj4zXSktKG09K19bSz4+M10pLF9bKEQ9SyszMnwwKT4+M109bSxfW2I+PjNdPW0sKFI9cGU+LjUpJiZZZihsLC41''@;'; put 'put ''KSx3PUsrNDh8MCxwPTB8YVs4KyhBPTB8YVtBPj4yXSk+PjJdO2Y9MHxhW3A+PjJdOykwIT0rV25bKGM9cCs0fDApPj4yXSYmKG9sKGwsZiksX1tEPj4zXT1tPTB8YVtwKzEyPj4yXT9NKitXbltjPj4yXSsgK19bSz4+M106ayxfW2I+PjNdPW0sWG8obCxLLDQsMSksX1t3Pj4zXT1tPStfW2I+''@;'; put 'put ''PjNdLF9bSz4+M109bSkscD1wKzEyfDA7UiYmWWYobCxwZSkseTcoQSl9cmV0dXJuIG9lPW1lLDB8R31mdW5jdGlvbiBxVChsLGMpe2N8PTA7dmFyIHAsZj0wLG09MCxBPTAsdz0wO2Y9MHxhWzE2KyhsfD0wKT4+Ml0sNDI1OTg0MCYocD0wfGFbbCsxNTI+PjJdKXwwJiYoYVtmKzI2ND4+Ml09''@;'; put 'put ''QT0obT0xMzEwNzImcCk+Pj4xNl4yLGFbKHc9ZisyNjh8MCk+PjJdPUErMixIdCgwfGFbKEE9ZisyNzJ8MCk+PjJdKSxmPTB8bXIoYVt3Pj4yXTw8NCksYVtBPj4yXT1mLGFbZj4+Ml09YVtjPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1h''@;'; put 'put ''W2MrMTI+PjJdLGFbKEE9ZisxNnwwKT4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLDgxOTImcHx8cGYobCxmLGYsMiksbXx8Y2soZikpfWZ1bmN0aW9uIGVJKGwsYyl7dmFyIEQsRyxwZSxm''@;'; put 'put ''PTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MCxLPTA7cGU9b2Usb2U9b2UrMTQ0fDAsZj1wZSs4MHwwLG09cGUrMTZ8MCxBPXBlLCEoKE09K19bKGN8PTApPj4zXSk+KEQ9K19bKEc9MTYrKGx8PTApfDApPj4zXSkpJiYhKE08KFI9K19bbD4+M10pKSYmISgocD0rX1tjKzg+PjNd''@;'; put 'put ''KT4oYj0rX1tsKzI0Pj4zXSkpJiYhKHA8KGs9K19bbCs4Pj4zXSkpJiYhKChNPStfW2MrMTY+PjNdKT5EfE08UikmJiEoKE09K19bYysyND4+M10pPmJ8TTxrKSYmISgoTT0rX1tjKzMyPj4zXSk+RHxNPFIpJiYhKChNPStfW2MrNDA+PjNdKT5ifE08aykmJiEoKE09K19bYys0OD4+M10pPkR8''@;'; put 'put ''TTxSKSYmISgoUj0rX1tjKzU2Pj4zXSk+YnxSPGspfHwoSz0xMSk7ZTpkb3tpZigxMT09KDB8Sykpe2lmKCEoMHxXRihjKSkpe3d1KEEsYywzLC41LGYsbSksZUkobCxmKSxlSShsLG0pO2JyZWFrfWZvcihBPWwrMjR8MCx3PWwrOHwwLG09MDs7KXtpZig0PT0oMHxtKSlicmVhayBlOyhwPStf''@;'; put 'put ''W2MrKG08PDQpPj4zXSk+K19bRz4+M10/KGY9RyxLPTE2KTpwPCtfW2w+PjNdJiYoZj1sLEs9MTYpLDE2PT0oMHxLKSYmKEs9MCxfW2Y+PjNdPXApLChwPStfW2MrKG08PDQpKzg+PjNdKT4rX1tBPj4zXT8oZj1HLEs9MTkpOnA8K19bdz4+M10mJihmPWwsSz0xOSksMTk9PSgwfEspJiYoSz0w''@;'; put 'put ''LF9bZis4Pj4zXT1wKSxtPW0rMXwwfX19d2hpbGUoMCk7b2U9cGV9ZnVuY3Rpb24gV0YobCl7dmFyIGMsZixwLG0sQSxiLHc9MDtyZXR1cm4gYz1vZSxvZT1vZSs0OHwwLGY9YyszMnwwLHA9YysxNnwwLGI9NDgrKGx8PTApfDAsdz1sKzE2fDAsYVsobT1jKT4+Ml09YVtsPj4yXSxhW20rND4+''@;'; put 'put ''Ml09YVtsKzQ+PjJdLGFbbSs4Pj4yXT1hW2wrOD4+Ml0sYVttKzEyPj4yXT1hW2wrMTI+PjJdLGFbcD4+Ml09YVtiPj4yXSxhW3ArND4+Ml09YVtiKzQ+PjJdLGFbcCs4Pj4yXT1hW2IrOD4+Ml0sYVtwKzEyPj4yXT1hW2IrMTI+PjJdLGFbZj4+Ml09YVt3Pj4yXSxhW2YrND4+Ml09YVt3KzQ+''@;'; put 'put ''PjJdLGFbZis4Pj4yXT1hW3crOD4+Ml0sYVtmKzEyPj4yXT1hW3crMTI+PjJdLEE9K1pvZShtLHAsZiksdz1sKzMyfDAsYVttPj4yXT1hW2w+PjJdLGFbbSs0Pj4yXT1hW2wrND4+Ml0sYVttKzg+PjJdPWFbbCs4Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sYVtwPj4yXT1hW2I+PjJdLGFb''@;'; put 'put ''cCs0Pj4yXT1hW2IrND4+Ml0sYVtwKzg+PjJdPWFbYis4Pj4yXSxhW3ArMTI+PjJdPWFbYisxMj4+Ml0sYVtmPj4yXT1hW3c+PjJdLGFbZis0Pj4yXT1hW3crND4+Ml0sYVtmKzg+PjJdPWFbdys4Pj4yXSxhW2YrMTI+PjJdPWFbdysxMj4+Ml0sbD1BPDQmK1pvZShtLHAsZik8NCYxLG9lPWMs''@;'; put 'put ''MHxsfWZ1bmN0aW9uIEZyZShsLGMpe2x8PTA7dmFyIHBlLGJlLE9lLExlLEJlLEhlLGplLGV0LHJ0LEdlLGx0LGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLG1lPTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MDtpZihsdD1vZSxvZT1v''@;'; put 'put ''ZSsyNzJ8MCxiZT1sdCsyNTZ8MCxPZT1sdCsyMjR8MCxMZT1sdCsxOTJ8MCxIZT1sdCs2NHwwLGplPWx0LGV0PWx0KzE2MHwwLHJ0PWx0Kzk2fDAsR2U9bHQrMzJ8MCxwZT0wfGFbMTQ0KyhtZT0wfGFbMTYrKGN8PTApPj4yXSk+PjJdLGFbKEJlPWx0KzEyOHwwKT4+Ml09YVsoSz1tZSsxNnww''@;'; put 'put ''KT4+Ml0sYVtCZSs0Pj4yXT1hW0srND4+Ml0sYVtCZSs4Pj4yXT1hW0srOD4+Ml0sYVtCZSsxMj4+Ml09YVtLKzEyPj4yXSxhW0JlKzE2Pj4yXT1hW0srMTY+PjJdLGFbQmUrMjA+PjJdPWFbSysyMD4+Ml0sYVtCZSsyND4+Ml09YVtLKzI0Pj4yXSxhW0JlKzI4Pj4yXT1hW0srMjg+PjJdLG1l''@;'; put 'put ''PTB8YVs4OCsoMHxhW21lKzg+PjJdKT4+Ml0sYVtqZT4+Ml09MCxhW2plKzQ+PjJdPTAsYVtqZSs4Pj4yXT0wLGFbamUrMTI+PjJdPTAsYVtqZSsxNj4+Ml09MCxhW2plKzIwPj4yXT0wLGFbamUrMjQ+PjJdPTAsYVtqZSsyOD4+Ml09MCxtZSl7Zm9yKCtfW0JlPj4zXT09K19bKGM9QmUrMTZ8''@;'; put 'put ''MCk+PjNdJiYrX1soZj1CZSs4fDApPj4zXT09K19bKHA9QmUrMjR8MCk+PjNdJiYoX1tmPj4zXT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsX1tCZT4+M109MTc5NzY5MzEzNDg2MjMxNTdlMjkyLF9bcD4+M109LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfW2M+PjNdPS0xNzk3NjkzMTM0ODYyMzE1''@;'; put 'put ''N2UyOTIpLHc9T2UrOHwwLGI9T2UrMTZ8MCxrPU9lKzI0fDAsTT1IZSsxNnwwLEQ9SGUrMjR8MCxSPXBlKzE0NHwwLEc9TGUrMTZ8MCxLPW1lKzEyfDAsYz0wLHA9MHxhW21lKzg+PjJdLGY9MCxtPTAsQT0wOyEoKDB8QSk+PSgwfGFbbWU+PjJdKSk7KXtzd2l0Y2goYVtIZT4+Ml09YVtqZT4+''@;'; put 'put ''Ml0sYVtIZSs0Pj4yXT1hW2plKzQ+PjJdLGFbSGUrOD4+Ml09YVtqZSs4Pj4yXSxhW0hlKzEyPj4yXT1hW2plKzEyPj4yXSxhW0hlKzE2Pj4yXT1hW2plKzE2Pj4yXSxhW0hlKzIwPj4yXT1hW2plKzIwPj4yXSxhW0hlKzI0Pj4yXT1hW2plKzI0Pj4yXSxhW0hlKzI4Pj4yXT1hW2plKzI4Pj4y''@;'; put 'put ''XSwwfGFbcD4+Ml0pe2Nhc2UgMTpjYXNlIDA6X1tPZT4+M109KEV0PStfW3ArOD4+M10pLShadD0rX1twKzI0Pj4zXSksX1t3Pj4zXT0oa3Q9K19bcCsxNj4+M10pLShhdD0rX1twKzMyPj4zXSksX1tiPj4zXT1adCtFdCxfW2s+PjNdPWF0K2t0LGFbKE10PXArODB8MCk+PjJdPWFbT2U+PjJd''@;'; put 'put ''LGFbTXQrND4+Ml09YVtPZSs0Pj4yXSxhW010Kzg+PjJdPWFbT2UrOD4+Ml0sYVtNdCsxMj4+Ml09YVtPZSsxMj4+Ml0sYVsoTXQ9cCs5NnwwKT4+Ml09YVtiPj4yXSxhW010KzQ+PjJdPWFbYis0Pj4yXSxhW010Kzg+PjJdPWFbYis4Pj4yXSxhW010KzEyPj4yXT1hW2IrMTI+PjJdLGFbYmU+''@;'; put 'put ''PjJdPWFbT2U+PjJdLGFbYmUrND4+Ml09YVtPZSs0Pj4yXSxhW2JlKzg+PjJdPWFbT2UrOD4+Ml0sYVtiZSsxMj4+Ml09YVtPZSsxMj4+Ml0sdzcoQmUsYmUpLGFbYmU+PjJdPWFbYj4+Ml0sYVtiZSs0Pj4yXT1hW2IrND4+Ml0sYVtiZSs4Pj4yXT1hW2IrOD4+Ml0sYVtiZSsxMj4+Ml09YVti''@;'; put 'put ''KzEyPj4yXSx3NyhCZSxiZSk7YnJlYWs7Y2FzZSAzOmNhc2UgMjpNdD1wKzgwfDAscnkoZXQsMHxhWzQrKHV0PXArOHwwKT4+Ml0sMHxhW3V0Pj4yXSxCZSksYVtNdD4+Ml09YVtldD4+Ml0sYVtNdCs0Pj4yXT1hW2V0KzQ+PjJdLGFbTXQrOD4+Ml09YVtldCs4Pj4yXSxhW010KzEyPj4yXT1h''@;'; put 'put ''W2V0KzEyPj4yXSxhW010KzE2Pj4yXT1hW2V0KzE2Pj4yXSxhW010KzIwPj4yXT1hW2V0KzIwPj4yXSxhW010KzI0Pj4yXT1hW2V0KzI0Pj4yXSxhW010KzI4Pj4yXT1hW2V0KzI4Pj4yXTticmVhaztjYXNlIDU6Y2FzZSA0OnV0PXArODB8MCxyeShydCwwfGFbNCsoTXQ9cCs4fDApPj4yXSww''@;'; put 'put ''fGFbTXQ+PjJdLEJlKSxhW3V0Pj4yXT1hW3J0Pj4yXSxhW3V0KzQ+PjJdPWFbcnQrND4+Ml0sYVt1dCs4Pj4yXT1hW3J0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbcnQrMTI+PjJdLGFbdXQrMTY+PjJdPWFbcnQrMTY+PjJdLGFbdXQrMjA+PjJdPWFbcnQrMjA+PjJdLGFbdXQrMjQ+PjJdPWFbcnQr''@;'; put 'put ''MjQ+PjJdLGFbdXQrMjg+PjJdPWFbcnQrMjg+PjJdO2JyZWFrO2Nhc2UgNjp1dD1wKzgwfDAscnkoR2UsMHxhWzQrKE10PXArOHwwKT4+Ml0sMHxhW010Pj4yXSxCZSksYVt1dD4+Ml09YVtHZT4+Ml0sYVt1dCs0Pj4yXT1hW0dlKzQ+PjJdLGFbdXQrOD4+Ml09YVtHZSs4Pj4yXSxhW3V0KzEy''@;'; put 'put ''Pj4yXT1hW0dlKzEyPj4yXSxhW3V0KzE2Pj4yXT1hW0dlKzE2Pj4yXSxhW3V0KzIwPj4yXT1hW0dlKzIwPj4yXSxhW3V0KzI0Pj4yXT1hW0dlKzI0Pj4yXSxhW3V0KzI4Pj4yXT1hW0dlKzI4Pj4yXTticmVhaztjYXNlIDc6YVsodXQ9cCsxMTJ8MCk+PjJdPTB8bXIoNTYpLE10PTB8bmEoMHxh''@;'; put 'put ''W3ArNDA+PjJdKSxhWyh3dD0wfGFbdXQ+PjJdKT4+Ml09TXQsdWVbd3QrNDg+PjBdPTB8dWVbMTAwMDI5KygwfGFbcCsyND4+Ml0pPj4wXSxhW0hlPj4yXT1mLF9bTT4+M109bSxhW0Q+PjJdPS0xMjgmYVtEPj4yXXwxMjcmYyx3dD0wfG1pWzYzJmFbKHd0PTB8YVtSPj4yXSk+PjJdXSh3dCxI''@;'; put 'put ''ZSwxKSxhWzQrKE10PTB8YVt1dD4+Ml0pPj4yXT13dCxHTihiZSxwZSxNdCksSUMoTGUsK19bcCs4Pj4zXSwrX1twKzE2Pj4zXSwwfGFbdXQ+PjJdKSxhWyh1dD1wKzgwfDApPj4yXT1hW0xlPj4yXSxhW3V0KzQ+PjJdPWFbTGUrND4+Ml0sYVt1dCs4Pj4yXT1hW0xlKzg+PjJdLGFbdXQrMTI+''@;'; put 'put ''PjJdPWFbTGUrMTI+PjJdLGFbdXQrMTY+PjJdPWFbTGUrMTY+PjJdLGFbdXQrMjA+PjJdPWFbTGUrMjA+PjJdLGFbdXQrMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbdXQrMjg+PjJdPWFbTGUrMjg+PjJdLGFbYmU+PjJdPWFbTGU+PjJdLGFbYmUrND4+Ml09YVtMZSs0Pj4yXSxhW2JlKzg+PjJdPWFb''@;'; put 'put ''TGUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtMZSsxMj4+Ml0sdzcoQmUsYmUpLGFbYmU+PjJdPWFbRz4+Ml0sYVtiZSs0Pj4yXT1hW0crND4+Ml0sYVtiZSs4Pj4yXT1hW0crOD4+Ml0sYVtiZSsxMj4+Ml09YVtHKzEyPj4yXSx3NyhCZSxiZSksMHxhW0s+PjJdfHwoYVtLPj4yXT0xMDkpO2JyZWFr''@;'; put 'put ''O2Nhc2UgMTA6Zj0wfGFbcCsxNj4+Ml0sbT0rX1twKzg+PjNdO2JyZWFrO2Nhc2UgMTU6Yz0wfGFbcCs4Pj4yXX1wPXArMTIwfDAsQT1BKzF8MH1hW2w+PjJdPWFbQmU+PjJdLGFbbCs0Pj4yXT1hW0JlKzQ+PjJdLGFbbCs4Pj4yXT1hW0JlKzg+PjJdLGFbbCsxMj4+Ml09YVtCZSsxMj4+Ml0s''@;'; put 'put ''YVtsKzE2Pj4yXT1hW0JlKzE2Pj4yXSxhW2wrMjA+PjJdPWFbQmUrMjA+PjJdLGFbbCsyND4+Ml09YVtCZSsyND4+Ml0sYVtsKzI4Pj4yXT1hW0JlKzI4Pj4yXX1lbHNlIGFbbD4+Ml09YVtCZT4+Ml0sYVtsKzQ+PjJdPWFbQmUrND4+Ml0sYVtsKzg+PjJdPWFbQmUrOD4+Ml0sYVtsKzEyPj4y''@;'; put 'put ''XT1hW0JlKzEyPj4yXSxhW2wrMTY+PjJdPWFbQmUrMTY+PjJdLGFbbCsyMD4+Ml09YVtCZSsyMD4+Ml0sYVtsKzI0Pj4yXT1hW0JlKzI0Pj4yXSxhW2wrMjg+PjJdPWFbQmUrMjg+PjJdO29lPWx0fWZ1bmN0aW9uIHc3KGwsYyl7dmFyIHAsZj0wOyhmPStfWyhjfD0wKT4+M10pPitfWyhwPTE2''@;'; put 'put ''KyhsfD0wKXwwKT4+M10mJihfW3A+PjNdPWYpLGY8K19bbD4+M10mJihfW2w+PjNdPWYpLChmPStfW2MrOD4+M10pPitfWyhjPWwrMjR8MCk+PjNdJiYoX1tjPj4zXT1mKSxmPCtfWyhjPWwrOHwwKT4+M10mJihfW2M+PjNdPWYpfWZ1bmN0aW9uIHJ5KGwsYyxmLHApe2x8PTAsZnw9MCxwfD0w''@;'; put 'put ''O3ZhciBrLE0sRCxSLEcscGUsbT0wLEE9MCx3PTAsYj0wLEs9MDtmb3IocGU9b2Usb2U9b2UrNDh8MCxrPXBlKzMyfDAsX1soUj0oRD1wZSkrMTZ8MCk+PjNdPW09K19bKGN8PTApPj4zXSxfW0Q+PjNdPW0sX1soRz1EKzI0fDApPj4zXT1tPStfW2MrOD4+M10sX1soTT1EKzh8MCk+PjNdPW0s''@;'; put 'put ''Yj0xOyEoKDB8Yik+PSgwfGYpKTspKG09K19bKHc9YysyNHwwKT4+M10pPCtfW0Q+PjNdPyhBPUQsSz01KTptPitfW1I+PjNdJiYoQT1SLEs9NSksNT09KDB8SykmJihLPTAsX1tBPj4zXT1tKSwobT0rX1tjKzMyPj4zXSk8K19bTT4+M10/KGM9RCxLPTgpOm0+K19bRz4+M10mJihjPVIsSz04''@;'; put 'put ''KSw4PT0oMHxLKSYmKEs9MCxfW2MrOD4+M109bSksYj1iKzF8MCxjPXc7YVtrPj4yXT1hW0Q+PjJdLGFbays0Pj4yXT1hW0QrND4+Ml0sYVtrKzg+PjJdPWFbRCs4Pj4yXSxhW2srMTI+PjJdPWFbRCsxMj4+Ml0sdzcocCxrKSxhW2s+PjJdPWFbUj4+Ml0sYVtrKzQ+PjJdPWFbUis0Pj4yXSxh''@;'; put 'put ''W2srOD4+Ml09YVtSKzg+PjJdLGFbaysxMj4+Ml09YVtSKzEyPj4yXSx3NyhwLGspLGFbbD4+Ml09YVtEPj4yXSxhW2wrND4+Ml09YVtEKzQ+PjJdLGFbbCs4Pj4yXT1hW0QrOD4+Ml0sYVtsKzEyPj4yXT1hW0QrMTI+PjJdLGFbbCsxNj4+Ml09YVtEKzE2Pj4yXSxhW2wrMjA+PjJdPWFbRCsy''@;'; put 'put ''MD4+Ml0sYVtsKzI0Pj4yXT1hW0QrMjQ+PjJdLGFbbCsyOD4+Ml09YVtEKzI4Pj4yXSxvZT1wZX1mdW5jdGlvbiBJQyhsLGMsZixwKXtsfD0wLGM9K2MsZj0rZjt2YXIgdyxiLGssRCxtPTAsQT0wLE09MDtzd2l0Y2goRD1vZSxvZT1vZSsxNnwwLHc9RCs4fDAsYj1ELG09K19bMzIrKHB8PTAp''@;'; put 'put ''Pj4zXSxrPStfW3ArNDA+PjNdLDB8dWVbcCs0OD4+MF0pe2Nhc2UgMTA4Ol9bdz4+M109YyxtKz1jLEE9YixNPTU7YnJlYWs7Y2FzZSAxMTA6X1t3Pj4zXT1jLShtKj0uNSksbSs9YyxBPWIsTT01O2JyZWFrO2Nhc2UgMTE0Ol9bYj4+M109YyxtPWMtbSxBPXcsTT01O2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''Yz0wLG09MH01PT0oMHxNKSYmKF9bQT4+M109bSxjPStfW3c+PjNdLG09K19bYj4+M10pLGY9K19bcCsxNj4+M10rZixfW2w+PjNdPWMsX1tsKzg+PjNdPWYtayxfW2wrMTY+PjNdPW0sX1tsKzI0Pj4zXT1mLG9lPUR9ZnVuY3Rpb24gVFcobCxjKXtjfD0wO3ZhciBwLHcsYixrLGY9MCxtPTAs''@;'; put 'put ''QT0wLE09MDtmb3Ioaz1vZSxvZT1vZSsxNnwwLGI9ayx3PTB8YVsxNTIrKGx8PTApPj4yXSxfW2wrNDg4Pj4zXT1wPShBPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bbCszNTI+PjNdKSooTT0rX1tsKzQzMj4+M10pLF9bbCs0OTY+PjNdPUEqPW09K19bbCs0NDA+PjNdLF9bbCs1MjA+PjNdPS4w''@;'; put 'put ''MTM4ODg4ODg4ODg4ODg4ODgqTSxfWyhmPWwrNTI4fDApPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4Km0sNDA5NiZ3fDAmJihfW2Y+PjNdPS0uMDEzODg4ODg4ODg4ODg4ODg4Km0pLE09KygoMHxhW2wrNDQ4Pj4yXSk+Pj4wKSxtPSsoKDB8YVtsKzQ1Mj4+Ml0pPj4+MCksX1tsKzM2OD4+M109''@;'; put 'put ''KChmPTA9PSgwfGFbbCszNjA+PjJdKSk/TTptKS9wLF9bbCszNzY+PjNdPShmP206TSkvQSxkbShsLDB8QTIoYywwfHNpKGMsMCwxMDE1MjIsMCksMTk1MDU5KSksYVtsKzE2MD4+Ml09MCxmdW5jdGlvbiBZRihsLGMpe2N8PTA7dmFyIGY7Zj0wfGI1KGx8PTApLGFbZis0Pj4yXT0wLGFbZis4''@;'; put 'put ''Pj4yXT1jLGFbZisxMj4+Ml09MCxSNyhsLDB8YVsxMisoMHxhW2MrMTY+PjJdKT4+Ml0sYyksZnVuY3Rpb24gaEUobCxjKXtjfD0wO3ZhciBmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrOD4+Ml0pJiZub1sxMjcmZl0obCl9KGwsYyl9KGwsYyksMiZ3fDAmJmZ1bmN0''@;'; put 'put ''aW9uIElXKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wO2ZvcihvbChsfD0wLDEzNDgwMCksMHwoZj0wfExpKGMsMTQwOTc3KSkmJjB8dWVbZj4+MF0mJm9sKGwsZiksMHwoZj0wfExpKGMsMTAxNDQ2KSkmJjB8dWVbZj4+MF0mJmdhKGwsZiksRm9lKGwsYyksQT0wfEx0KGMpO0E7KXsw''@;'; put 'put ''fChmPTB8TGkoQSwxNDA4MjMpKSYmMHx1ZVtmPj4wXSYmZ2EobCxmKSwwfChmPTB8TGkoQSwxMzc3MjkpKSYmMHx1ZVtmPj4wXSYmb2wobCxmKSxmPTB8TGkoQSwxMDE0MTgpO2Rve2lmKDB8ZiYmMHx1ZVtmPj4wXSl7aWYoISgwfFVzKGYsNTgpKSl7Z2EobCxmKTticmVha31mb3IoZj1wPTB8''@;'; put 'put ''bmEoZik7Zj0wfHZ2KGYsMTA3OTg0KTspMHx1ZVtmPj4wXT8oZ2EobCxmKSxmPTApOmY9MDtIdChwKX19d2hpbGUoMCk7Zm9yKDB8KGY9MHxMaShBLDEwMTQ0NikpJiYwfHVlW2Y+PjBdJiZnYShsLGYpLG09MHx5MChjLEEpO207KXtmPTB8TGkobSwxNDA4MjMpO2Rve2lmKDB8ZiYmMHx1ZVtm''@;'; put 'put ''Pj4wXSl7aWYoISgwfFVzKGYsNTgpKSl7Z2EobCxmKTticmVha31mb3IoZj1wPTB8bmEoZik7Zj0wfHZ2KGYsMTA3OTg0KTspMHx1ZVtmPj4wXT8oZ2EobCxmKSxmPTApOmY9MDtIdChwKX19d2hpbGUoMCk7MHwoZj0wfExpKG0sMTAxNDQ2KSkmJjB8dWVbZj4+MF0mJmdhKGwsZiksbT0wfGsw''@;'; put 'put ''KGMsbSl9QT0wfHp0KGMsQSl9fShsLGMpLGY9MHxMdChjKTtmOyl1ZVsxMTYrKDB8YVtmKzE2Pj4yXSk+PjBdPTAsZj0wfHp0KGMsZik7Zm9yKGZ1bmN0aW9uIE5yZShsLGMpe2N8PTA7dmFyIG0sQSxiLGY9MCxwPTAsdz0wO2I9b2Usb2U9b2UrMTZ8MCxwPWIrOHwwLEE9YixhWyhtPTE1Niso''@;'; put 'put ''bHw9MCl8MCk+PjJdPWY9MHxhWzMxMisodz0wfGFbbD4+Ml0pPj4yXSwodz0wfGFbdyszMTY+PjJdKT8oZj13KzR8MCwoMHxhW3c+PjJdKT4xJiYwPT0oNjQmYVtsKzE1Mj4+Ml18MCkmJihhW0E+PjJdPWFbbCs1Mj4+Ml0sWHIoMCwxMDA1NjcsQSksYVt3Kzg+PjJdPTErKDB8YVttPj4yXSkp''@;'; put 'put ''LHA9MHxhW2Y+PjJdLGY9dys4fDApOigwfGYpPjEmJjA9PSg2NCZhW2wrMTUyPj4yXXwwKT8oYVtwPj4yXT1hW2wrNTI+PjJdLFhyKDAsMTAwNTY3LHApLGFbbT4+Ml09MSxwPTEsZj0wKToocD0xLGY9MCksYVtsKzE2MD4+Ml09cCxhW2M+PjJdPWYsb2U9Yn0obCxiKTsoMHxVRihsKSk8PDI0''@;'; put 'put ''Pj4yNDspe2ZvcigoMHxEVyhsKSk+MSYmcEUobCksVnJlKGwpOygwfExXKGwpKTw8MjQ+PjI0OylRRihsLGMpLGpyZShsKTsoMHxEVyhsKSk+MSYmeUcobCksWnJlKGwsYil9KGZ1bmN0aW9uIHpyZShsKXsoZnVuY3Rpb24gelIobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0p''@;'; put 'put ''JiYwfChmPTB8YVtjKzEyPj4yXSkmJm5vWzEyNyZmXShsKSxmdW5jdGlvbiB5QyhsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNzYrKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrND4+Ml0pJiZub1sxMjcmZl0obCksRlQobCl9KGwpfSkobHw9MCksRUMobCl9KShsKSxvZT1rfWZ1bmN0aW9uIFVGKGwp''@;'; put 'put ''e3JldHVybigwfGFbMTYwKyhsfD0wKT4+Ml0pPD0oMHxhW2wrMTU2Pj4yXSl8MH1mdW5jdGlvbiBEVyhsKXt2YXIgYztyZXR1cm4gMHxhWygwPT0oMHwoYz0wfGFbMzE2KygwfGFbKGx8PTApPj4yXSk+PjJdKSk/bCsxNTZ8MDpjKT4+Ml19ZnVuY3Rpb24gVnJlKGwpe3ZhciBjLGY7Yz0wfGFb''@;'; put 'put ''NCsoZj0xNzIrKGx8PTApfDApPj4yXSxhWyhsPWwrMTk2fDApPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1jfWZ1bmN0aW9uIExXKGwpe3ZhciBmLGM9MDtyZXR1cm4gMHwoKDB8KGY9MHxhWzE5NisobHw9MCk+PjJdKSk+LTEmJigwfGYpPCgwfGFbbCsxNjQ+PjJdKSYmKDB8KGM9MHxhW2wrMjAw''@;'; put 'put ''Pj4yXSkpPi0xPygwfGMpPCgwfGFbbCsxNjg+PjJdKSYxOjApfWZ1bmN0aW9uIFFGKGwsYyl7Y3w9MDt2YXIgYixrLE0sRCxSLGY9MCxwPTAsbT0wLEE9MCx3PTAsRz0wO1I9b2Usb2U9b2UrMTc2fDAsYj1SLGY9Uis0OHwwLGs9UiszMnwwLE09MHxhWzE2KyhsfD0wKT4+Ml0sRD0wfGFbbCsx''@;'; put 'put ''NTI+PjJdLCgwfGFbbCsxNjA+PjJdKTw9MSYmKDB8YVtsKzE5Nj4+Ml0pPD0wP209MDoob3MoaywxMjgsZiksbT0wfGFbKHA9TSsyMTJ8MCk+PjJdLFRDKGwsayksY28oayxtKSwoZj0wfGFbKEE9ays0fDApPj4yXSk+Pj4wPj0oMHxhW2srOD4+Ml0pPj4+MCYmKEcwKGssMSksZj0wfGFbQT4+''@;'; put 'put ''Ml0pLHVlW2Y+PjBdPTAsYVtBPj4yXT1mPTB8YVtrPj4yXSxhW3A+PjJdPWYpLFo5KDB8TGkoYywxMDAwMzIpKSxmdW5jdGlvbiBKRihsKXt2YXIgRCxiZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsT2U9MDtiZT1vZSxvZT1vZSs0''@;'; put 'put ''OHwwLEQ9YmUrMzJ8MCxiPWJlKzh8MCxrPWJlKzE2fDAsTT1iZSxLPTB8YVsocGU9MTk2KyhsfD0wKXwwKT4+Ml0scGU9MHxhW3BlKzQ+PjJdLGFbKEc9bT1iZSsyNHwwKT4+Ml09SyxhW0crND4+Ml09cGUsdz0wfGFbKEc9bCsxNjR8MCk+PjJdLEc9MHxhW0crND4+Ml0sYVsobWU9Yik+PjJd''@;'; put 'put ''PXcsYVttZSs0Pj4yXT1HLDB8YVsobWU9bCszNjB8MCk+PjJdPyhhW0Q+PjJdPWFbbT4+Ml0sYVtEKzQ+PjJdPWFbbSs0Pj4yXSxHMyhrLEQpLGs9MHxhWyhwZT1rKT4+Ml0scGU9MHxhW3BlKzQ+PjJdLGFbKEc9bSk+PjJdPWssYVtHKzQ+PjJdPXBlLGFbRD4+Ml09YVtiPj4yXSxhW0QrND4+''@;'; put 'put ''Ml09YVtiKzQ+PjJdLEczKE0sRCksdz0wfGFbKEc9TSk+PjJdLEc9MHxhW0crND4+Ml0sYVtiPj4yXT13LGFbYis0Pj4yXT1HLGI9cGUpOihrPUssYj1wZSksX1tsKzI4OD4+M109QT0oZj0rX1tsKzMyMD4+M10pKisoMHxrKS0rX1tsKzI0MD4+M10sX1tsKzI5Nj4+M109Uj0ocD0rX1tsKzMy''@;'; put 'put ''OD4+M10pKisoMHxiKS0rX1tsKzI0OD4+M10sX1tsKzMwND4+M109ZitBLF9bbCszMTI+PjNdPXArUixtPWwrNDcyfDAsMHxhWzI4KygwfGFbbCsxMj4+Ml0pPj4yXT8oYVttPj4yXT1hWygoMHxhW20+PjJdKTwoMHxhWyhLPWwrNDU2fDApPj4yXSk/bTpLKT4+Ml0sYVsocGU9bCs0NzZ8MCk+''@;'; put 'put ''PjJdPWFbKCgwfGFbcGU+PjJdKTwoMHxhW2wrNDYwPj4yXSk/bTpLKSs0Pj4yXSxhWyhwZT1sKzQ4MHwwKT4+Ml09YVsoKDB8YVtwZT4+Ml0pPigwfGFbbCs0NjQ+PjJdKT9tOkspKzg+PjJdLGFbKHBlPWwrNDg0fDApPj4yXT1hWygoMHxhW3BlPj4yXSk+KDB8YVtsKzQ2OD4+Ml0pP206Sykr''@;'; put 'put ''MTI+PjJdKTooYVttPj4yXT1hWyhwZT1sKzQ1NnwwKT4+Ml0sYVttKzQ+PjJdPWFbcGUrND4+Ml0sYVttKzg+PjJdPWFbcGUrOD4+Ml0sYVttKzEyPj4yXT1hW3BlKzEyPj4yXSksYz0rX1tsKzMzNj4+M10sMTI4JihNPTB8YVtsKzE1Mj4+Ml0pPyhfW2wrMjU2Pj4zXT1wPWMtKGY9LjUqK19b''@;'; put 'put ''bCszNjg+PjNdKSxSPShBPStfW2wrMzQ0Pj4zXSktKE9lPS41KitfW2wrMzc2Pj4zXSksZis9YyxBPU9lK0EsYz1wKTooX1tsKzI1Nj4+M109Yz0oKygwfGspLS41KisoMHx3KSkqZitjLFI9QT0oKygwfGIpLS41KisoMHxHKSkqcCsgK19bbCszNDQ+PjNdLGYrPWMsQSs9cCksX1tsKzI2ND4+''@;'; put 'put ''M109UixfW2wrMjcyPj4zXT1mLF9bbCsyODA+PjNdPUEsMHxhW21lPj4yXT8obT1sKzM4NHwwLF9bbCs1MTI+PjNdPS1BLStfW2wrMzkyPj4zXS8ocD0rX1tsKzM1Mj4+M10pLDQwOTYmTT8oZj0tZixjPStfW20+PjNdL3ApOmY9K19bbT4+M10vcCxfW2wrNTA0Pj4zXT1mLWMpOihfW2wrNTA0''@;'; put 'put ''Pj4zXT0rX1tsKzM4ND4+M10vKHA9K19bbCszNTI+PjNdKS1jLDQwOTYmTT8oZj0tQSxjPStfW2wrMzkyPj4zXS9wKTooZj0rX1tsKzM5Mj4+M10vcCxjPVIpLF9bbCs1MTI+PjNdPWYtYyksb2U9YmV9KGwpLGZ1bmN0aW9uIGRFKGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJd''@;'; put 'put ''KSYmMHwoZj0wfGFbYysyND4+Ml0pJiZub1sxMjcmZl0obCl9KGwpLGdhKGwsMTM3MzE0KSxvbChsLDEzNDgwMCk7ZG97aWYoNDI1OTg0MCZEfDApe2lmKDA9PSgwfGFbTSsyMDg+PjJdKSYmMD09KDEmVHRbTSsyNjA+PjFdKSlicmVhazs2NTUzNjAmRD8oYVtNKzI2ND4+Ml09KEE9MTMxMDcy''@;'; put 'put ''JkQpPj4+MTZeMixmPTB8bXIoMzIrKEE+Pj4xMl4zMil8MCksYVtmPj4yXT1hWyhwPWwrMjg4fDApPj4yXSxhW2YrND4+Ml09YVtwKzQ+PjJdLGFbZis4Pj4yXT1hW3ArOD4+Ml0sYVtmKzEyPj4yXT1hW3ArMTI+PjJdLGFbKHA9ZisxNnwwKT4+Ml09YVsoRz1sKzMwNHwwKT4+Ml0sYVtwKzQ+''@;'; put 'put ''PjJdPWFbRys0Pj4yXSxhW3ArOD4+Ml09YVtHKzg+PjJdLGFbcCsxMj4+Ml09YVtHKzEyPj4yXSxBP3A9MjooY2soZikscD00KSk6KGY9MCxwPTApLDgxOTImRHx8cGYobCxmLGYscCksYVtNKzI3Mj4+Ml09ZixhW00rMjY4Pj4yXT1wfX13aGlsZSgwKTszMjc2OCZEfDAmJjB8KHc9MHxhWzEy''@;'; put 'put ''KygwfGFbYysxNj4+Ml0pPj4yXSkmJihhW00rMTkyPj4yXT1hW3c+PjJdKSxwPTAhPSg0JkR8MCk7ZG97aWYoIXApe2lmKDA9PSgwfGFbKGY9TSsyMDh8MCk+PjJdKSYmMD09KDEmVHRbTSsyNjA+PjFdKSlicmVhazthW2I+PjJdPWFbKEc9bCsyNTZ8MCk+PjJdLGFbYis0Pj4yXT1hW0crND4+''@;'; put 'put ''Ml0sYVtiKzg+PjJdPWFbRys4Pj4yXSxhW2IrMTI+PjJdPWFbRysxMj4+Ml0sYVtiKzE2Pj4yXT1hW0crMTY+PjJdLGFbYisyMD4+Ml09YVtHKzIwPj4yXSxhW2IrMjQ+PjJdPWFbRysyND4+Ml0sYVtiKzI4Pj4yXT1hW0crMjg+PjJdLHFUKGwsYiksdzEobCwwfGFbZj4+Ml0sMHxhW00rMjI4''@;'; put 'put ''Pj4yXSwwfGFbTSsyNDQ+PjJdLDB8YVtNKzIxMj4+Ml0pfX13aGlsZSgwKTsoZnVuY3Rpb24gT1cobCxjKXtsfD0wO3ZhciBELEcscGUsZj0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MCxLPTA7cGU9b2Usb2U9b2UrNDh8MCxHPXBlLEQ9cGUrNDB8MCxSPXBlKzM2fDAsSz1wZSszMnww''@;'; put 'put ''LChmPTB8TGkoY3w9MCwxNDA5NzcpKT8odz0xJihBPTA9PSgwfHVlW2Y+PjBdKSksZj1BPzEzNzE5ODpmKToodz0xLGY9MTM3MTk4KSxBPTExNj09KDB8dWVbZj4+MF0pLDI1NiYobT0wfGFbbCsxNTI+PjJdKT9BJiYhKDB8WmkoZiwxMzczNzkpKXx8KGI9ZixrPXcsTT04KTpBPyhiPShrPTA9''@;'; put 'put ''PSgwfFppKGYsMTM3Mzc5KSkpPzEzNzE5ODpmLGs9az8xOncsTT04KTooYj1mLGs9dyxNPTgpLDg9PSgwfE0pJiYhKDAhPSgwfGspJjAhPSgzMzU1NDQzMiZtfDApKSYmKCgwfHgxKGIsRCxSKSk8PDI0Pj4yND8oYVtLPj4yXT0wLG9sKGwsQT0wfGFbRD4+Ml0pLGdhKGwsMTM3Mzc5KSxmTihj''@;'; put 'put ''LEspLEdmKGwsKGY9MHxhW0QrND4+Ml0pfHwxMzczMTQsbT0wfGVzKGMsMHxhWzQ3MTQzXSwwLDApLCtXbltSPj4yXSksSz0oMHxhW0s+PjJdKT4+PjEmMXwyLGFbRz4+Ml09YVsoUj1sKzI1NnwwKT4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4yXSxhW0crOD4+Ml09YVtSKzg+PjJdLGFbRysxMj4+''@;'; put 'put ''Ml09YVtSKzEyPj4yXSxhW0crMTY+PjJdPWFbUisxNj4+Ml0sYVtHKzIwPj4yXT1hW1IrMjA+PjJdLGFbRysyND4+Ml09YVtSKzI0Pj4yXSxhW0crMjg+PjJdPWFbUisyOD4+Ml0sYjMobCxHLEspLEh0KEEpKToob2wobCxiKSxnYShsLDEzNzM3OSksYVtHPj4yXT1hWyhLPWwrMjU2fDApPj4y''@;'; put 'put ''XSxhW0crND4+Ml09YVtLKzQ+PjJdLGFbRys4Pj4yXT1hW0srOD4+Ml0sYVtHKzEyPj4yXT1hW0srMTI+PjJdLGFbRysxNj4+Ml09YVtLKzE2Pj4yXSxhW0crMjA+PjJdPWFbSysyMD4+Ml0sYVtHKzI0Pj4yXT1hW0srMjQ+PjJdLGFbRysyOD4+Ml09YVtLKzI4Pj4yXSxiMyhsLEcsMSkpKSww''@;'; put 'put ''fChmPTB8YVs4OCsoMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml0pJiZmdW5jdGlvbiBOVShsLGMpe2x8PTAsY3w9MDt2YXIgUixwZSxtZSxiZSxPZSxMZSxCZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxHPTAsSz0wLEhlPTAsamU9MCxldD0wO2ZvcihCZT1vZSxv''@;'; put 'put ''ZT1vZSs5NnwwLFI9QmUrNDh8MCxwZT1CZSsxNnwwLExlPUJlKzh8MCxPZT1CZSxhWyhtZT1CZSs4MHwwKT4+Ml09MWUzLG09MHxRbigxNmUzKSxiZT1sKzI1NnwwLHA9MSx3PTEsQT0wLEc9MCxLPTB8YVtjKzg+PjJdOyEoKDB8Ryk+PSgwfGFbYz4+Ml0pKTspe2Y9MHxhW0s+PjJdO2U6ZG97''@;'; put 'put ''c3dpdGNoKDB8Zil7Y2FzZSAxOmNhc2UgMDphW3BlPj4yXT1hWyhNPUsrODB8MCk+PjJdLGFbcGUrND4+Ml09YVtNKzQ+PjJdLGFbcGUrOD4+Ml09YVtNKzg+PjJdLGFbcGUrMTI+PjJdPWFbTSsxMj4+Ml0sYVtwZSsxNj4+Ml09YVtNKzE2Pj4yXSxhW3BlKzIwPj4yXT1hW00rMjA+PjJdLGFb''@;'; put 'put ''cGUrMjQ+PjJdPWFbTSsyND4+Ml0sYVtwZSsyOD4+Ml09YVtNKzI4Pj4yXSxhW1I+PjJdPWFbYmU+PjJdLGFbUis0Pj4yXT1hW2JlKzQ+PjJdLGFbUis4Pj4yXT1hW2JlKzg+PjJdLGFbUisxMj4+Ml09YVtiZSsxMj4+Ml0sYVtSKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW1IrMjA+PjJdPWFbYmUr''@;'; put 'put ''MjA+PjJdLGFbUisyND4+Ml09YVtiZSsyND4+Ml0sYVtSKzI4Pj4yXT1hW2JlKzI4Pj4yXSwwfFR5KHBlLFIpJiYoX1ttPj4zXT0rX1soamU9Sys4fDApPj4zXS0rX1soZXQ9SysyNHwwKT4+M10sX1ttKzg+PjNdPStfWyhNPUsrMTZ8MCk+PjNdLStfWyhIZT1LKzMyfDApPj4zXSxfW20rMTY+''@;'; put 'put ''PjNdPStfW2V0Pj4zXSsgK19bamU+PjNdLF9bbSsyND4+M109K19bSGU+PjNdKyArX1tNPj4zXSxVMShsLG0sMiwwPT0oMHxmKT93OjApKSxmPXc7YnJlYWs7Y2FzZSAzOmNhc2UgMjphW3BlPj4yXT1hWyhldD1LKzgwfDApPj4yXSxhW3BlKzQ+PjJdPWFbZXQrND4+Ml0sYVtwZSs4Pj4yXT1h''@;'; put 'put ''W2V0Kzg+PjJdLGFbcGUrMTI+PjJdPWFbZXQrMTI+PjJdLGFbcGUrMTY+PjJdPWFbZXQrMTY+PjJdLGFbcGUrMjA+PjJdPWFbZXQrMjA+PjJdLGFbcGUrMjQ+PjJdPWFbZXQrMjQ+PjJdLGFbcGUrMjg+PjJdPWFbZXQrMjg+PjJdLGFbUj4+Ml09YVtiZT4+Ml0sYVtSKzQ+PjJdPWFbYmUrND4+''@;'; put 'put ''Ml0sYVtSKzg+PjJdPWFbYmUrOD4+Ml0sYVtSKzEyPj4yXT1hW2JlKzEyPj4yXSxhW1IrMTY+PjJdPWFbYmUrMTY+PjJdLGFbUisyMD4+Ml09YVtiZSsyMD4+Ml0sYVtSKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW1IrMjg+PjJdPWFbYmUrMjg+PjJdLDB8VHkocGUsUikmJlhvKGwsbT0wfGlEKG0s''@;'; put 'put ''bWUsMHxhWzQrKGY9Sys4fDApPj4yXSwwfGFbZj4+Ml0pLDB8YVtmPj4yXSwyPT0oMHxhW0s+PjJdKT93OjApLGY9dzticmVhaztjYXNlIDU6Y2FzZSA0OmFbcGU+PjJdPWFbKGV0PUsrODB8MCk+PjJdLGFbcGUrND4+Ml09YVtldCs0Pj4yXSxhW3BlKzg+PjJdPWFbZXQrOD4+Ml0sYVtwZSsx''@;'; put 'put ''Mj4+Ml09YVtldCsxMj4+Ml0sYVtwZSsxNj4+Ml09YVtldCsxNj4+Ml0sYVtwZSsyMD4+Ml09YVtldCsyMD4+Ml0sYVtwZSsyND4+Ml09YVtldCsyND4+Ml0sYVtwZSsyOD4+Ml09YVtldCsyOD4+Ml0sYVtSPj4yXT1hW2JlPj4yXSxhW1IrND4+Ml09YVtiZSs0Pj4yXSxhW1IrOD4+Ml09YVti''@;'; put 'put ''ZSs4Pj4yXSxhW1IrMTI+PjJdPWFbYmUrMTI+PjJdLGFbUisxNj4+Ml09YVtiZSsxNj4+Ml0sYVtSKzIwPj4yXT1hW2JlKzIwPj4yXSxhW1IrMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbUisyOD4+Ml09YVtiZSsyOD4+Ml0sMHxUeShwZSxSKSYmV2YobCxtPTB8aUQobSxtZSwwfGFbNCsoZj1LKzh8''@;'; put 'put ''MCk+PjJdLDB8YVtmPj4yXSksMHxhW2Y+PjJdLDAsMCw0PT0oMHxhW0s+PjJdKT8yNTUmdzowKSxmPXc7YnJlYWs7Y2FzZSA2OmFbcGU+PjJdPWFbKGV0PUsrODB8MCk+PjJdLGFbcGUrND4+Ml09YVtldCs0Pj4yXSxhW3BlKzg+PjJdPWFbZXQrOD4+Ml0sYVtwZSsxMj4+Ml09YVtldCsxMj4+''@;'; put 'put ''Ml0sYVtwZSsxNj4+Ml09YVtldCsxNj4+Ml0sYVtwZSsyMD4+Ml09YVtldCsyMD4+Ml0sYVtwZSsyND4+Ml09YVtldCsyND4+Ml0sYVtwZSsyOD4+Ml09YVtldCsyOD4+Ml0sYVtSPj4yXT1hW2JlPj4yXSxhW1IrND4+Ml09YVtiZSs0Pj4yXSxhW1IrOD4+Ml09YVtiZSs4Pj4yXSxhW1IrMTI+''@;'; put 'put ''PjJdPWFbYmUrMTI+PjJdLGFbUisxNj4+Ml09YVtiZSsxNj4+Ml0sYVtSKzIwPj4yXT1hW2JlKzIwPj4yXSxhW1IrMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbUisyOD4+Ml09YVtiZSsyOD4+Ml0sMHxUeShwZSxSKSYmV28obCxtPTB8aUQobSxtZSwwfGFbNCsoZj1LKzh8MCk+PjJdLDB8YVtmPj4y''@;'; put 'put ''XSksMHxhW2Y+PjJdKSxmPXc7YnJlYWs7Y2FzZSA3OmFbcGU+PjJdPWFbKGV0PUsrODB8MCk+PjJdLGFbcGUrND4+Ml09YVtldCs0Pj4yXSxhW3BlKzg+PjJdPWFbZXQrOD4+Ml0sYVtwZSsxMj4+Ml09YVtldCsxMj4+Ml0sYVtwZSsxNj4+Ml09YVtldCsxNj4+Ml0sYVtwZSsyMD4+Ml09YVtl''@;'; put 'put ''dCsyMD4+Ml0sYVtwZSsyND4+Ml09YVtldCsyND4+Ml0sYVtwZSsyOD4+Ml09YVtldCsyOD4+Ml0sYVtSPj4yXT1hW2JlPj4yXSxhW1IrND4+Ml09YVtiZSs0Pj4yXSxhW1IrOD4+Ml09YVtiZSs4Pj4yXSxhW1IrMTI+PjJdPWFbYmUrMTI+PjJdLGFbUisxNj4+Ml09YVtiZSsxNj4+Ml0sYVtS''@;'; put 'put ''KzIwPj4yXT1hW2JlKzIwPj4yXSxhW1IrMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbUisyOD4+Ml09YVtiZSsyOD4+Ml0sMHxUeShwZSxSKSYmKF9bbT4+M109K19bSys4Pj4zXSxfW20rOD4+M109K19bSysxNj4+M10sZj0wfGFbSysxMTI+PjJdLGFbUj4+Ml09YVttPj4yXSxhW1IrND4+Ml09YVtt''@;'; put 'put ''KzQ+PjJdLGFbUis4Pj4yXT1hW20rOD4+Ml0sYVtSKzEyPj4yXT1hW20rMTI+PjJdLFNoKGwsUixmKSksZj13O2JyZWFrO2Nhc2UgODpvbChsLDB8YVtLKzg+PjJdKSxmPTE7YnJlYWs7Y2FzZSA5OmdhKGwsMHxhW0srOD4+Ml0pLGY9MTticmVhaztjYXNlIDEzOmlmKDIhPSgwfGFbSys4Pj4y''@;'; put 'put ''XSkpe2V0PTB8YVsxMisoamU9MHxhWzM2KyhmPUsrMTZ8MCk+PjJdKT4+Ml0sRD0rV25bamUrOD4+Ml0sZj1+fig1Ny4yOTU3Nzk1MTMwODIzMiorcTIoKygrX1tLKzQwPj4zXS0rX1tLKzI0Pj4zXSksKygrX1tLKzMyPj4zXS0rX1tmPj4zXSkpKSxvbChsLDB8YVtqZSs0Pj4yXSksR2YobCxl''@;'; put 'put ''dCxmLEQpLGY9MjticmVhayBlfXc9MHxhWzQrKGV0PTB8YVtLKzY4Pj4yXSk+PjJdLE09MHxhW2V0KzEyPj4yXSxEPStXbltldCs4Pj4yXSxmPShiPStfW0srNDA+PjNdKT09KGs9K19bSysxNj4+M10pJiYrX1tLKzQ4Pj4zXT09K19bSysyND4+M10/MDp+fig1Ny4yOTU3Nzk1MTMwODIzMior''@;'; put 'put ''RTgoKyhrLWIpLytfW0srMzI+PjNdKSksb2wobCx3KSxHZihsLE0sZixEKSxmPTM7YnJlYWs7Y2FzZSAxNDpYcigwLDEwMDQ4MSxPZSksZj13O2JyZWFrO2Nhc2UgMTI6cD8oWHIoMCwxMDA1MjEsTGUpLHA9MCxmPXcpOihwPTAsZj13KTticmVhaztjYXNlIDExOnFsKDB8YVtLKzg+PjJdKSxH''@;'; put 'put ''YyhsLDE4ODIyOCksQT0xODgyMjgsZj13O2JyZWFrO2RlZmF1bHQ6Zj13fX13aGlsZSgwKTt3PWYsRz1HKzF8MCxLPUsrMTIwfDB9MHxBJiZHYyhsLDB8YVszMzYrKDB8YVtsPj4yXSk+PjJdKSxIdChtKSxvZT1CZX0obCxmKSxvZT1wZX0pKGwsYyksMHwoZj0wfGFbMTIrKDB8YVtjKzE2Pj4y''@;'; put 'put ''XSk+PjJdKSYmQjcobCw0LGYpO2Rve2lmKCFwKXtpZigwPT0oMHxhW00rMjA4Pj4yXSkmJjA9PSgxJlR0W00rMjYwPj4xXSkpYnJlYWs7a2gobCl9fXdoaWxlKDApOyhmdW5jdGlvbiBHcmUobCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTA7YVsoQT0yOCsoMHxhWyhsfD0wKT4+Ml0p''@;'; put 'put ''fDApPj4yXT0xKygwfGFbQT4+Ml0pLChBPTAhPSg0JmZ8MCkpfHxuSShsLGMsZik7ZTpkb3tpZigxJmYpe2ZvcihEOShsKSxwPTB8THQoYyk7cDspYjcobCxwKSxwPTB8enQoYyxwKTtmb3IoRjgobCksd2QobCksbT0wfEx0KGMpO207KXtmb3IocD0wfHkwKGMsbSk7cDspRTEobCxwKSxwPTB8''@;'; put 'put ''azAoYyxwKTttPTB8enQoYyxtKX13MyhsKX1lbHNle2lmKDE2JmZ8MCl7Zm9yKHdkKGwpLG09MHxMdChjKTttOyl7Zm9yKHA9MHx5MChjLG0pO3A7KUUxKGwscCkscD0wfGswKGMscCk7bT0wfHp0KGMsbSl9Zm9yKHczKGwpLEQ5KGwpLHA9MHxMdChjKTtwOyliNyhsLHApLHA9MHx6dChjLHAp''@;'; put 'put ''O0Y4KGwpO2JyZWFrfWlmKCEoOCZmKSlmb3IobT0wfEx0KGMpOzspe2lmKCFtKWJyZWFrIGU7Zm9yKGI3KGwsbSkscD0wfHkwKGMsbSk7cDspYjcobCwwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pLEUxKGwscCkscD0wfGswKGMscCk7bT0wfHp0KGMsbSl9Zm9yKEQ5''@;'; put 'put ''KGwpLHA9MHxMdChjKTtwOykoMHxXcmUoYyxwKSk8PDI0Pj4yNCYmYjcobCxwKSxwPTB8enQoYyxwKTtmb3IoRjgobCksd2QobCksbT0wfEx0KGMpO207KXtmb3IocD0wfHkwKGMsbSk7cDspKDB8UlcoYyxwKSk8PDI0Pj4yNCYmRTEobCxwKSxwPTB8azAoYyxwKTttPTB8enQoYyxtKX13Myhs''@;'; put 'put ''KX19d2hpbGUoMCk7QSYmbkkobCxjLGYpfSkobCxjLEQpLGZ1bmN0aW9uIEFHKGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYysyOD4+Ml0pJiZub1sxMjcmZl0obCl9KGwpLDB8bSYmKGsyKGspLGFbTSsyMTI+PjJdPW0pLG9lPVJ9ZnVuY3Rpb24ganJl''@;'; put 'put ''KGwpe3ZhciBjLGYsbSxBLHcscD0wLGI9MCxrPTA7dz1vZSxvZT1vZSszMnwwLGY9dysyNHwwLGs9dys4fDAsbT13LGI9MTg4KyhsfD0wKXwwLGFbKGM9dysxNnwwKT4+Ml09YVsoQT1sKzE5NnwwKT4+Ml0sYVtjKzQ+PjJdPWFbQSs0Pj4yXSxhW2Y+PjJdPWFbYj4+Ml0sYVtmKzQ+PjJdPWFb''@;'; put 'put ''Yis0Pj4yXSx0SShrLGMsZiksYj0wfGFbays0Pj4yXSxhWyhwPUEpPj4yXT1hW2s+PjJdLGFbcCs0Pj4yXT1iLCgwfExXKGwpKTw8MjQ+PjI0fHwocD1sKzE4MHwwLDB8YVtsKzE4ND4+Ml0/YVtBPj4yXT1hW2wrMTcyPj4yXTphW2wrMjAwPj4yXT1hW2wrMTc2Pj4yXSxhW2M+PjJdPWFbQT4+''@;'; put 'put ''Ml0sYVtjKzQ+PjJdPWFbQSs0Pj4yXSxhW2Y+PjJdPWFbcD4+Ml0sYVtmKzQ+PjJdPWFbcCs0Pj4yXSx0SShtLGMsZiksYj0wfGFbbSs0Pj4yXSxhWyhrPUEpPj4yXT1hW20+PjJdLGFbays0Pj4yXT1iKSxvZT13fWZ1bmN0aW9uIFpyZShsLGMpe2x8PTA7dmFyIGY9MDsoZj0wfGFbKGN8PTAp''@;'; put 'put ''Pj4yXSk/KGFbbCsxNjA+PjJdPWFbZj4+Ml0sYVtjPj4yXT1mKzQpOmFbKGY9bCsxNjB8MCk+PjJdPTErKDB8YVtmPj4yXSl9ZnVuY3Rpb24gdEkobCxjLGYpe3ZhciBwO3A9KDB8YVs0KyhmfD0wKT4+Ml0pKygwfGFbNCsoY3w9MCk+PjJdKXwwLGFbKGx8PTApPj4yXT0oMHxhW2Y+PjJdKSso''@;'; put 'put ''MHxhW2M+PjJdKSxhW2wrND4+Ml09cH1mdW5jdGlvbiBuSShsLGMsZil7dmFyIG1lLGJlLE9lLEJlLEhlLGplLGV0LHJ0LEdlLGx0LE10LGt0LGF0LEV0LFp0LHV0LHd0LHluLHA9MCxtPTAsQT0wLHc9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLExlPTAscm49MCxGbj0wO2Zvcih5''@;'; put 'put ''bj1vZSxvZT1vZSsxMjh8MCxtZT15bis3MnwwLHd0PXluKzY0fDAsTXQ9eW4rMTEyfDAsRXQ9MTYrKGN8PTApfDAsWnQ9MCE9KDQmKGZ8PTApfDApLHV0PTE2KyhsfD0wKXwwLGJlPShrdD15bikrMzJ8MCxPZT1rdCsxNnwwLEJlPWt0Kzh8MCxIZT1rdCsyNHwwLGplPWt0KzQ4fDAsZXQ9a3Qr''@;'; put 'put ''NDB8MCxydD1rdCs1NnwwLEdlPTA9PSg4JmZ8MCksbHQ9NCsoYXQ9eW4rMTA0fDApfDAscGU9MTshKCgwfHBlKT4oMHxhWzE4MCsocD0wfGFbRXQ+PjJdKT4+Ml0pKTspe2lmKCgwfG11KGwsSz0wfGFbKDB8YVtwKzE4ND4+Ml0pKyhwZTw8Mik+PjJdKSk8PDI0Pj4yNCl7WnQmJm5JKGwsSyxm''@;'; put 'put ''KSxRZChsLEspLEc9MHxhWyhSPTIwOCsoRD0wfGFbdXQ+PjJdKXwwKT4+Ml0/MTowIT0oMSZUdFtEKzI2MD4+MV0pLFo5KDB8TGkoSywxMDAwMzIpKSxadHwxXkd8fChhW21lPj4yXT1hWyhNPTE2KygwfGFbSysxNj4+Ml0pfDApPj4yXSxhW21lKzQ+PjJdPWFbTSs0Pj4yXSxhW21lKzg+PjJd''@;'; put 'put ''PWFbTSs4Pj4yXSxhW21lKzEyPj4yXT1hW00rMTI+PjJdLGFbbWUrMTY+PjJdPWFbTSsxNj4+Ml0sYVttZSsyMD4+Ml09YVtNKzIwPj4yXSxhW21lKzI0Pj4yXT1hW00rMjQ+PjJdLGFbbWUrMjg+PjJdPWFbTSsyOD4+Ml0scVQobCxtZSksdzEobCwwfGFbUj4+Ml0sMHxhW0QrMjI4Pj4yXSww''@;'; put 'put ''fGFbRCsyNDQ+PjJdLDB8YVtEKzIxMj4+Ml0pKSxhW010Pj4yXT0wLChwPTB8Zk4oSyxNdCkpPyhHYyhsLHApLGs9MSZhW010Pj4yXSk6az0wLHA9MHxidFsxMTIrKDB8YVsoTT1LKzE2fDApPj4yXSk+PjBdO2Rve2lmKDEmcClwPTB8T2EoSywwLDEwNjI0MCksbT0wfE9hKEssMCwxMDYyNDgp''@;'; put 'put ''LHJuPTI5O2Vsc2V7aWYoMiZwfDApe3A9MHxPYShLLDAsMTA2MjU2KSxtPTB8T2EoSywwLDEwNjI2NCkscm49Mjk7YnJlYWt9aWYoOCZwfDApe3A9MHxPYShLLDAsMTA2MjcyKSxtPTB8T2EoSywwLDEwNjI4MCkscm49Mjk7YnJlYWt9aWYoNCZwfDApe3A9MHxPYShLLDAsMTA2Mjg4KSxtPTB8''@;'; put 'put ''T2EoSywwLDEwNjI5Nikscm49Mjk7YnJlYWt9aWYobT0ocD0wfExpKEssMTQwODIzKSk/MD09KDB8dWVbcD4+MF0pPzA6cDowLHA9KHA9MHxMaShLLDEzNzcyOSkpPzA9PSgwfHVlW3A+PjBdKT9tOnA6bSwoQT0wfExpKEssMTAxNDE4KSkmJihtPTA9PSgwfHVlW0E+PjBdKT9tOkEpLDAhPSgw''@;'; put 'put ''fGspJjAhPSgwfG0pKXJuPTI5O2Vsc2V7aWYoMHwoQT0wfExpKEssMTQwOTc3KSkmJjB8dWVbQT4+MF0pe209QSxybj0yOTticmVha31wPTA9PSgwfHApPzEzNzMxNDpwLHc9MD09KDB8bSk/MTM0ODAwOm0sYVthdD4+Ml09MCxrP3JuPTMxOm09MH19fXdoaWxlKDApOzI5PT0oMHxybikmJihh''@;'; put 'put ''W2F0Pj4yXT0wLHA9MD09KDB8cCk/MTM3MzE0OnAsdz0wPT0oMHxtKT8xMzQ4MDA6bSxybj0zMSksMzE9PSgwfHJuKSYmKHJuPTAsKDB8eDEodyxhdCxtZSkpPDwyND4+MjQ/KG9sKGwsMHxhW2F0Pj4yXSksR2YobCwobT0wfGFbbHQ+PjJdKXx8MTM3MzE0LEE9MHxlcyhLLDB8YVs0NzE0M10s''@;'; put 'put ''MCwwKSwrV25bbWU+PjJdKSxtPSgwfGFbTXQ+PjJdKT4+PjEmMXwyKToob2wobCx3KSxtPTEpKSwwfChBPTB8YVs0NzE0Ml0pJiYwfChMZT0wfEZvKEssQSkpJiYwfHVlW0xlPj4wXSYmWWYobCwrY2woSywwfGFbNDcxNDJdLDEsMCkpLGs9MHxhW010Pj4yXTtkb3tpZig0JmspKEE9MHxlcyhL''@;'; put 'put ''LDB8YVs0NzE0MV0sMSwwKSl8bXwwJiYoYVtrdD4+Ml09YVsoRm49MTYrKHc9MHxhW00+PjJdKXwwKT4+Ml0sYVtrdCs0Pj4yXT1hW0ZuKzQ+PjJdLGFba3QrOD4+Ml09YVtGbis4Pj4yXSxhW2t0KzEyPj4yXT1hW0ZuKzEyPj4yXSxhW2JlPj4yXT1hWyh3PXcrMzJ8MCk+PjJdLGFbYmUrND4+''@;'; put 'put ''Ml09YVt3KzQ+PjJdLGFbYmUrOD4+Ml09YVt3Kzg+PjJdLGFbYmUrMTI+PjJdPWFbdysxMj4+Ml0sX1tPZT4+M109K19bYmU+PjNdLF9bSGU+PjNdPStfW0JlPj4zXSxfW2plPj4zXT0rX1trdD4+M10sX1tydD4+M109K19bZXQ+PjNdLGdhKGwsQT9wOjEzNzM3OSksWTMobCxrdCw0LGssbSkp''@;'; put 'put ''O2Vsc2V7aWYoISg2NCZrKSl7aWYoMHxlcyhLLDB8YVs0NzE0MV0sMSwwKSl7Z2EobCxwKSxhW21lPj4yXT1hWyhGbj0xNisoMHxhW00+PjJdKXwwKT4+Ml0sYVttZSs0Pj4yXT1hW0ZuKzQ+PjJdLGFbbWUrOD4+Ml09YVtGbis4Pj4yXSxhW21lKzEyPj4yXT1hW0ZuKzEyPj4yXSxhW21lKzE2''@;'; put 'put ''Pj4yXT1hW0ZuKzE2Pj4yXSxhW21lKzIwPj4yXT1hW0ZuKzIwPj4yXSxhW21lKzI0Pj4yXT1hW0ZuKzI0Pj4yXSxhW21lKzI4Pj4yXT1hW0ZuKzI4Pj4yXSxiMyhsLG1lLG0pO2JyZWFrfWlmKCFtKWJyZWFrO2dhKGwsMTM3Mzc5KSxhW21lPj4yXT1hWyhGbj0xNisoMHxhW00+PjJdKXwwKT4+''@;'; put 'put ''Ml0sYVttZSs0Pj4yXT1hW0ZuKzQ+PjJdLGFbbWUrOD4+Ml09YVtGbis4Pj4yXSxhW21lKzEyPj4yXT1hW0ZuKzEyPj4yXSxhW21lKzE2Pj4yXT1hW0ZuKzE2Pj4yXSxhW21lKzIwPj4yXT1hW0ZuKzIwPj4yXSxhW21lKzI0Pj4yXT1hW0ZuKzI0Pj4yXSxhW21lKzI4Pj4yXT1hW0ZuKzI4Pj4y''@;'; put 'put ''XSxiMyhsLG1lLG0pO2JyZWFrfWFba3Q+PjJdPWFbKGs9MTYrKEZuPTB8YVtNPj4yXSl8MCk+PjJdLGFba3QrND4+Ml09YVtrKzQ+PjJdLGFba3QrOD4+Ml09YVtrKzg+PjJdLGFba3QrMTI+PjJdPWFbaysxMj4+Ml0sYVtiZT4+Ml09YVsoRm49Rm4rMzJ8MCk+PjJdLGFbYmUrND4+Ml09YVtG''@;'; put 'put ''bis0Pj4yXSxhW2JlKzg+PjJdPWFbRm4rOD4+Ml0sYVtiZSsxMj4+Ml09YVtGbisxMj4+Ml0sX1tPZT4+M109K19bYmU+PjNdLF9bSGU+PjNdPStfW0JlPj4zXSxfW2plPj4zXT0rX1trdD4+M10sX1tydD4+M109K19bZXQ+PjNdLDB8ZXMoSywwfGFbNDcxNDFdLDEsMCk/Z2EobCxwKTpnYShs''@;'; put 'put ''LDEzNzM3OSksKDB8R0YobCxrdCx3LDApKT4xJiYoYVt3dD4+Ml09MHwkcihLKSxYcigzLDEwMDQwMCx3dCkpLGFbbWU+PjJdPWFbKEZuPTE2KygwfGFbTT4+Ml0pfDApPj4yXSxhW21lKzQ+PjJdPWFbRm4rND4+Ml0sYVttZSs4Pj4yXT1hW0ZuKzg+PjJdLGFbbWUrMTI+PjJdPWFbRm4rMTI+''@;'; put 'put ''PjJdLGFbbWUrMTY+PjJdPWFbRm4rMTY+PjJdLGFbbWUrMjA+PjJdPWFbRm4rMjA+PjJdLGFbbWUrMjQ+PjJdPWFbRm4rMjQ+PjJdLGFbbWUrMjg+PjJdPWFbRm4rMjg+PjJdLGIzKGwsbWUsMCl9fXdoaWxlKDApO0h0KDB8YVthdD4+Ml0pLDB8KHA9MHxhWzEyKygwfGFbTT4+Ml0pPj4yXSkm''@;'; put 'put ''JkI3KGwsNSxwKSxHJiYoWnQmJihhW21lPj4yXT1hWyhGbj0xNisoMHxhW00+PjJdKXwwKT4+Ml0sYVttZSs0Pj4yXT1hW0ZuKzQ+PjJdLGFbbWUrOD4+Ml09YVtGbis4Pj4yXSxhW21lKzEyPj4yXT1hW0ZuKzEyPj4yXSxhW21lKzE2Pj4yXT1hW0ZuKzE2Pj4yXSxhW21lKzIwPj4yXT1hW0Zu''@;'; put 'put ''KzIwPj4yXSxhW21lKzI0Pj4yXT1hW0ZuKzI0Pj4yXSxhW21lKzI4Pj4yXT1hW0ZuKzI4Pj4yXSxxVChsLG1lKSx3MShsLDB8YVtSPj4yXSwwfGFbRCsyMjg+PjJdLDB8YVtEKzI0ND4+Ml0sMHxhW0QrMjEyPj4yXSkpLGtoKGwpKTtlOmRve2lmKCFHZSlmb3IobT0wfEx0KEspOzspe2lmKCFt''@;'; put 'put ''KWJyZWFrIGU7Zm9yKGI3KGwsbSkscD0wfHkwKEssbSk7cDspRTEobCxwKSxwPTB8azAoSyxwKTttPTB8enQoSyxtKX19d2hpbGUoMCk7aE4obCxjKSxadHx8bkkobCxLLGYpfXBlPXBlKzF8MH1vZT15bn1mdW5jdGlvbiBiNyhsLGMpe3ZhciBBLHcsYixmPTAscD0wLG09MCxrPTA7Yj1vZSxv''@;'; put 'put ''ZT1vZSszMnwwLGY9YixBPTB8YVsobHw9MCk+PjJdLHc9MTYrKGN8PTApfDA7ZTpkb3tpZigwfGFbOCsoMHxhW3c+PjJdKT4+Ml0mJigwfHNOKGwsMHxmcihjKSxjKSk8PDI0Pj4yNCYmKGs9bCsyNTZ8MCxhW2Y+PjJdPWFbaz4+Ml0sYVtmKzQ+PjJdPWFbays0Pj4yXSxhW2YrOD4+Ml09YVtr''@;'; put 'put ''Kzg+PjJdLGFbZisxMj4+Ml09YVtrKzEyPj4yXSxhW2YrMTY+PjJdPWFbaysxNj4+Ml0sYVtmKzIwPj4yXT1hW2srMjA+PjJdLGFbZisyND4+Ml09YVtrKzI0Pj4yXSxhW2YrMjg+PjJdPWFbaysyOD4+Ml0sKDB8Um9lKGMsZikpPDwyND4+MjQpJiYocD0xMTYrKDB8YVt3Pj4yXSl8MCxtPTB8''@;'; put 'put ''YVtBKzI4Pj4yXSwoMHxtKSE9KDB8dWVbcD4+MF0pKSl7dWVbcD4+MF09bSxkbShsLDB8JHIoYykpLGY9MHxBMihjLDB8YVs0NzE2OV0sMTk1MDU5KSwwfHVlW2Y+PjBdJiZkbShsLGYpLGY9MHxBMihjLDB8YVs0NzE1N10sMTk1MDU5KTt0OmRve2lmKDB8dWVbZj4+MF0pZm9yKHFsKGYpLGY9''@;'; put 'put ''MTg4MjI4Ozspe2lmKHA9ZixmPWYrNHwwLCEocD0wfGFbcD4+Ml0pKWJyZWFrIHQ7aWYoMTA1PT0oMHx1ZVtwPj4wXSkmJiEoMHxaaShwLDEzNDMzNSkpKWJyZWFrIGV9fXdoaWxlKDApO0hVKGwsYykseDJbNjMmYVsyMCsoMHxhWzQrKDB8YVs4KygwfGFbdz4+Ml0pPj4yXSk+PjJdKT4+Ml1d''@;'; put 'put ''KGwsYyksMHwoZj0wfGFbMTA4KygwfGFbdz4+Ml0pPj4yXSkmJjB8dWVbZis4MT4+MF0mJkI3KGwsMTAsZiksQm9lKGwpfX13aGlsZSgwKTtvZT1ifWZ1bmN0aW9uIEUxKGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09MCx3PTA7QT1vZSxvZT1vZSszMnwwLGFbKG09QSk+PjJdPWFbKGY9MjU2''@;'; put 'put ''KyhsfD0wKXwwKT4+Ml0sYVttKzQ+PjJdPWFbZis0Pj4yXSxhW20rOD4+Ml09YVtmKzg+PjJdLGFbbSsxMj4+Ml09YVtmKzEyPj4yXSxhW20rMTY+PjJdPWFbZisxNj4+Ml0sYVttKzIwPj4yXT1hW2YrMjA+PjJdLGFbbSsyND4+Ml09YVtmKzI0Pj4yXSxhW20rMjg+PjJdPWFbZisyOD4+Ml07''@;'; put 'put ''ZTpkb3tpZigoMHxCVyhjLG0pKTw8MjQ+PjI0JiYocD1jKy00OHwwLCgwfFlyZShsLGMpKTw8MjQ+PjI0KSl7dz1jKzQ4fDAsJDMoZj0wfFIwKDMrKGY9MHx6bygwfCRyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOncpKzQwPj4yXSkpKSsoMHx6bygwfCRyKDB8YVsoMj09KDMmYVtjPj4yXXww''@;'; put 'put ''KT9jOnApKzQwPj4yXSkpKXwwKSwwfCRyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOncpKzQwPj4yXSkpLHc9MD09KDB8bGMoMHxmcigwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpwKSs0MD4+Ml0pKSksbT1mKygwfHpvKGYpKXwwLHc/KHVlW20+PjBdPTB8dWVbMTQxNzQ3XSx1ZVttKzE+PjBd''@;'; put 'put ''PTB8dWVbMTQxNzQ4XSx1ZVttKzI+PjBdPTB8dWVbMTQxNzQ5XSk6KHVlW20+PjBdPTB8dWVbMTM3NzM4XSx1ZVttKzE+PjBdPTB8dWVbMTM3NzM5XSx1ZVttKzI+PjBdPTB8dWVbMTM3NzQwXSksQXYoZiwwfCRyKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOnApKzQwPj4yXSkpLGRtKGwsZiks''@;'; put 'put ''SHQoZiksZj0wfEEyKGMsMHxhWzQ3MTkxXSwxOTUwNTkpLDB8dWVbZj4+MF0mJmRtKGwsZiksZj0wfEEyKGMsMHxhWzQ3MTg1XSwxOTUwNTkpO3Q6ZG97aWYoMHx1ZVtmPj4wXSlmb3IocWwoZiksZj0xODgyMjg7Oyl7aWYocD1mLGY9Zis0fDAsIShwPTB8YVtwPj4yXSkpe2Y9MTg4MjI4O2Jy''@;'; put 'put ''ZWFrIHR9aWYoMTA1PT0oMHx1ZVtwPj4wXSkmJiEoMHxaaShwLDEzNDMzNSkpKWJyZWFrIGV9ZWxzZSBmPTB9d2hpbGUoMCk7X29lKGwsYyxmKSxEVShsLGMsZiksSnZlKGwpfX13aGlsZSgwKTtvZT1BfWZ1bmN0aW9uIFdyZShsLGMpe2N8PTA7dmFyIGYscD0wO2ZvcihmPTE2KyhsfD0wKXww''@;'; put 'put ''LGw9MTs7KXtpZigoMHxsKT4oMHxhWzE4MCsocD0wfGFbZj4+Ml0pPj4yXSkpe2w9MTticmVha31pZigwfEhyKDB8YVsoMHxhW3ArMTg0Pj4yXSkrKGw8PDIpPj4yXSxjKSl7bD0wO2JyZWFrfWw9bCsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBSVyhsLGMpe2N8PTA7dmFyIGYscD0wO2Zvcihm''@;'; put 'put ''PTE2KyhsfD0wKXwwLGw9MTs7KXtpZigoMHxsKT4oMHxhWzE4MCsocD0wfGFbZj4+Ml0pPj4yXSkpe2w9MTticmVha31pZigwfEhyKDB8YVsoMHxhW3ArMTg0Pj4yXSkrKGw8PDIpPj4yXSxjKSl7bD0wO2JyZWFrfWw9bCsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBCVyhsLGMpe2N8PTA7dmFy''@;'; put 'put ''IHAsbSx3LGIsZj0wLEE9MDtiPW9lLG9lPW9lKzY0fDAsdz1iKzMyfDAscD1iLDAhPSgwfChmPTB8YVs4KyhsPTB8YVsobT0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKSYmKGFbcD4+Ml09YVsoZj1mKzh8MCk+PjJdLGFbcCs0Pj4yXT1hW2YrND4+Ml0sYVtwKzg+PjJdPWFbZis4Pj4yXSxhW3Ar''@;'; put 'put ''MTI+PjJdPWFbZisxMj4+Ml0sYVtwKzE2Pj4yXT1hW2YrMTY+PjJdLGFbcCsyMD4+Ml09YVtmKzIwPj4yXSxhW3ArMjQ+PjJdPWFbZisyND4+Ml0sYVtwKzI4Pj4yXT1hW2YrMjg+PjJdLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3''@;'; put 'put ''KzEyPj4yXT1hW2MrMTI+PjJdLGFbdysxNj4+Ml09YVtjKzE2Pj4yXSxhW3crMjA+PjJdPWFbYysyMD4+Ml0sYVt3KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbdysyOD4+Ml09YVtjKzI4Pj4yXSwwIT0oMHxUeShwLHcpKSk/bD0xOkE9Mztkb3tpZigzPT0oMHxBKSl7aWYoZj0wfGFbbCs5Nj4+Ml0p''@;'; put 'put ''e2lmKGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLGFbdysxNj4+Ml09YVtjKzE2Pj4yXSxhW3crMjA+PjJdPWFbYysyMD4+Ml0sYVt3KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbdysyOD4+Ml09YVtjKzI4''@;'; put 'put ''Pj4yXSwoMHxMRChmLHcpKTw8MjQ+PjI0KXtsPTE7YnJlYWt9bD0wfGFbbT4+Ml19aWYoMHwobD0wfGFbbCsxMDg+PjJdKSYmMHx1ZVtsKzgxPj4wXSYmKGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJd''@;'; put 'put ''LGFbdysxNj4+Ml09YVtjKzE2Pj4yXSxhW3crMjA+PjJdPWFbYysyMD4+Ml0sYVt3KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbdysyOD4+Ml09YVtjKzI4Pj4yXSwoMHxMRChsLHcpKTw8MjQ+PjI0KSl7bD0xO2JyZWFrfWw9MH19d2hpbGUoMCk7cmV0dXJuIG9lPWIsMHxsfWZ1bmN0aW9uIFlyZShs''@;'; put 'put ''LGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MDtlOmRve2lmKCgwfGFbbCsxNTY+PjJdKT49MiYmKGY9MHxBMihjLDB8YVs0NzE5MF0sMTk1MDU5KSwoMHxzayhsLGYpKTw8MjQ+PjI0PT0wKSlpZigwfHVlW2Y+PjBdKWY9MDtlbHNlIGZvcihmPTA7Oyl7aWYoKDB8Zik+PTIpe2Y9MDticmVhayBl''@;'; put 'put ''fWlmKHA9MHxBMigwfGFbKCgzJmFbYz4+Ml18MCk9PSgwfCgocD0xPT0oMHxmKSk/MjozKSk/YzpjKyg0OCoocD8tMToxKXwwKXwwKSs0MD4+Ml0sMHxhWzQ3MTY3XSwxOTUwNTkpLCEoMHx1ZVtwPj4wXSkpe2Y9MTticmVhayBlfWlmKCgwfHNrKGwscCkpPDwyND4+MjQpe2Y9MTticmVha31m''@;'; put 'put ''PWYrMXwwfWVsc2UgZj0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gcWwobCl7bHw9MDt2YXIgbSxBLHcsYixrLE0sRCxSLEcsYz0wLGY9MCxwPTA7Rz1vZSxvZT1vZSsxOTJ8MCxSPUcrMjR8MCxEPUcrMTZ8MCxNPUcrOHwwLGs9RyxtPUcrNDh8MCxiPUcrMzJ8MCwwfHVlWzEwMDI4''@;'; put 'put ''Ml0mJihvcygxODg0OTIsMTI4LDE5NDgyNiksdWVbMTAwMjgyXT0wKSxvcyhiLDEyOCxHKzU2fDApLGFbbT4+Ml09bCxBPWIrNHwwLHc9Yis4fDAsYz0wLGY9MDtlOmZvcig7Oyl7cD1jO3Q6Zm9yKDs7KXN3aXRjaCgwfERvZShtLGIpKXtjYXNlIDA6Yz0yMTticmVhayBlO2Nhc2UgNDA6aWYo''@;'; put 'put ''cDw8MjQ+PjI0KXtjPTc7YnJlYWsgZX1wPTE7Y29udGludWUgdDtjYXNlIDQxOmlmKHA8PDI0Pj4yNCl7cD0wO2NvbnRpbnVlIHR9Yz05O2JyZWFrIGU7ZGVmYXVsdDpicmVhayB0fWlmKCEocDw8MjQ+PjI0KSl7aWYoNjM9PSgwfGYpKXtjPTEyO2JyZWFrfShjPTB8YVs0NzEyNF0pPj4+MD49''@;'; put 'put ''KDB8YVs0NzEyNV0pPj4+MCYmKEcwKDE4ODQ5MiwxKSxjPTB8YVs0NzEyNF0pLGFbNDcxMjRdPWMrMSx1ZVtjPj4wXT0wLGFbMTg4MjI4KyhmPDwyKT4+Ml09YVs0NzEyNF0sZj1mKzF8MH0oYz0wfGFbQT4+Ml0pPj4+MD49KDB8YVt3Pj4yXSk+Pj4wJiYoRzAoYiwxKSxjPTB8YVtBPj4yXSks''@;'; put 'put ''dWVbYz4+MF09MCxhW0E+PjJdPWM9MHxhW2I+PjJdLGNvKDE4ODQ5MixjKSwoYz0wfGFbNDcxMjRdKT4+PjA+PSgwfGFbNDcxMjVdKT4+PjAmJihHMCgxODg0OTIsMSksYz0wfGFbNDcxMjRdKSxhWzQ3MTI0XT1jKzEsdWVbYz4+MF09MCxjPXB9ZG97aWYoNz09KDB8YykpYVtrPj4yXT1sLFhy''@;'; put 'put ''KDEsMTAwMjgzLGspLGFbNDcwNTddPTAsazIoYik7ZWxzZSBpZig5PT0oMHxjKSlhW00+PjJdPWwsWHIoMSwxMDAzMTcsTSksYVs0NzA1N109MCxrMihiKTtlbHNlIGlmKDEyPT0oMHxjKSlhW0Q+PjJdPWwsWHIoMCwxMDAzNDUsRCksYVs0NzEyMF09MCxrMihiKTtlbHNlIGlmKDIxPT0oMHxj''@;'; put 'put ''KSl7aWYocDw8MjQ+PjI0KXthW1I+PjJdPWwsWHIoMSwxMDAzNjgsUiksYVs0NzA1N109MCxrMihiKTticmVha31hWzE4ODIyOCsoZjw8Mik+PjJdPTAsazIoYiksKGM9MHxhWzQ3MTI0XSk+Pj4wPj0oMHxhWzQ3MTI1XSk+Pj4wJiYoRzAoMTg4NDkyLDEpLGM9MHxhWzQ3MTI0XSksdWVbYz4+''@;'; put 'put ''MF09MCxhWzQ3MTI0XT1hWzQ3MTIzXX19d2hpbGUoMCk7cmV0dXJuIG9lPUcsMTg4MjI4fWZ1bmN0aW9uIGozKGwpe3ZhciBtLEEsYixjPTAsZj0wLHA9MCx3PTA7Yj1vZSxvZT1vZSsxMDQwfDAsQT1iLG09Yis4fDAscD0wLGM9bHw9MDtlOmZvcig7Oyl7ZG97aWYoZj1jLGM9YysxfDAsISgo''@;'; put 'put ''Zj0wfHVlW2Y+PjBdKTw8MjQ+PjI0KSlicmVhayBlfXdoaWxlKCgoZjw8MjQ+PjI0KS00OHwwKT4+PjA+PTEwKTtpZigoMHxwKT49MTAyMyl7dz03O2JyZWFrfXVlW20rcD4+MF09ZixwPXArMXwwfXJldHVybiA3PT0oMHx3KSYmKGFbQT4+Ml09bCxYcigwLDY2ODE5LEEpKSx1ZVttK3A+PjBd''@;'; put 'put ''PTAsdz02NTUzNSYoMHxlMyhtKSksb2U9YiwwfHd9ZnVuY3Rpb24gckkobCl7bHw9MDt2YXIgbSxrLE0sYz0wLGY9MCxwPTAsQT0wLHc9MCxiPTA7aWYoTT1vZSxvZT1vZSsxMTg0fDAsQT1NLHA9TSsyNHwwLG9zKGs9TSs4fDAsMTAyNCxNKzE1MnwwKSwobT0rX1sxNTIrKGM9MHxhWyh3PWwr''@;'; put 'put ''MTZ8MCk+PjJdKT4+M10pIT0rX1soZj04KyhhW2MrMTI+PjJdPDwzKXwwKT4+M10mJihfW2Y+PjNdPW0sY28oayw2Njg4MiksX1tBPj4zXT0rX1sxNTIrKDB8YVt3Pj4yXSk+PjNdLGFvKHAsNjY4OTYsQSksS0YocCwwKSxjbyhrLHApLChjPTB8YVsocD1rKzR8MCk+PjJdKT4+PjA+PSgwfGFb''@;'; put 'put ''KGY9ays4fDApPj4yXSk+Pj4wJiYoRzAoaywxKSxjPTB8YVtwPj4yXSksYVtwPj4yXT1jKzEsdWVbYz4+MF09NDEsKGM9MHxhW3A+PjJdKT4+PjA+PSgwfGFbZj4+Ml0pPj4+MCYmKEcwKGssMSksYz0wfGFbcD4+Ml0pLHVlW2M+PjBdPTAsYVtwPj4yXT1jPTB8YVtrPj4yXSxDNShsLDY2OTAx''@;'; put 'put ''LGMpLGM9MHxhW3c+PjJdKSwwfChjPTB8YVtjKzE2MD4+Ml0pKXt3PWsrNHwwLGI9ays4fDA7ZTpmb3IoO0E9Yys0fDAsYz0wfGFbYz4+Ml0sYzspe3N3aXRjaCgwfHVlW2M+PjBdKXtjYXNlIDEwMjppZighKDB8WmkoYywxMTExMDEpKSl7Yz1BO2NvbnRpbnVlIGV9YnJlYWs7Y2FzZSA5ODpp''@;'; put 'put ''ZighKDB8WmkoYywxMTEwODMpKSl7Yz1BO2NvbnRpbnVlIGV9YnJlYWs7Y2FzZSAxMTU6aWYoISgwfFppKGMsMTExMDg4KSkpe2M9QTtjb250aW51ZSBlfX1jbyhrLGMpO2Rve3A9YyxjPWMrMXwwfXdoaWxlKDAhPSgwfHVlW3A+PjBdKSk7aWYoMHx1ZVtjPj4wXSl7Zm9yKChmPTB8YVt3Pj4y''@;'; put 'put ''XSk+Pj4wPj0oMHxhW2I+PjJdKT4+PjAmJihHMChrLDEpLGY9MHxhW3c+PjJdKSxhW3c+PjJdPWYrMSx1ZVtmPj4wXT00MCxwPTA7MHx1ZVtjPj4wXTspezB8cCYmKChmPTB8YVt3Pj4yXSk+Pj4wPj0oMHxhW2I+PjJdKT4+PjAmJihHMChrLDEpLGY9MHxhW3c+PjJdKSxhW3c+PjJdPWYrMSx1''@;'; put 'put ''ZVtmPj4wXT00NCksY28oayxjKTtkb3tmPWMsYz1jKzF8MH13aGlsZSgwIT0oMHx1ZVtmPj4wXSkpO3A9cCsxfDB9KGM9MHxhW3c+PjJdKT4+PjA+PSgwfGFbYj4+Ml0pPj4+MCYmKEcwKGssMSksYz0wfGFbdz4+Ml0pLGFbdz4+Ml09YysxLHVlW2M+PjBdPTQxfShjPTB8YVt3Pj4yXSk+Pj4w''@;'; put 'put ''Pj0oMHxhW2I+PjJdKT4+PjAmJihHMChrLDEpLGM9MHxhW3c+PjJdKSx1ZVtjPj4wXT0wLGFbdz4+Ml09Yz0wfGFbaz4+Ml0sQzUobCw2NjkwMSxjKSxjPUF9azIoayl9b2U9TX1mdW5jdGlvbiBMQyhsKXtpSSgxNisoMHxhWzE2KyhsfD0wKT4+Ml0pfDApLEM1KGwsNzU4MzQsMTkzNzU4KX1m''@;'; put 'put ''dW5jdGlvbiBPQyhsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbSxBLGIsayx3PTA7Zm9yKGs9b2Usb2U9b2UrMTA0MHwwLGI9ayx3PWsrMTZ8MCwobD0wfGFbKG09NCsoQT0wfGFbMTE0MTYrKGFbMTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml08PDIpPj4yXSl8MCk+PjJdKT4+PjA+PSgw''@;'; put 'put ''fGFbQSs4Pj4yXSk+Pj4wJiYoRzAoQSwxKSxsPTB8YVttPj4yXSksYVttPj4yXT1sKzEsdWVbbD4+MF09YyxhW2I+PjJdPXAsYW8odyw2Njg0NixiKSxjbyhBLHcpLGw9MDshKCgwfGwpPj0oMHxwKSk7KWFbYj4+Ml09YVsodz1mKyhsPDw0KXwwKT4+Ml0sYVtiKzQ+PjJdPWFbdys0Pj4yXSxh''@;'; put 'put ''W2IrOD4+Ml09YVt3Kzg+PjJdLGFbYisxMj4+Ml09YVt3KzEyPj4yXSxfNShBLGIpLGw9bCsxfDA7b2U9a31mdW5jdGlvbiBfNShsLGMpe3ZhciBmLHA7bHw9MCxmPW9lLG9lPW9lKzEwMjR8MCxqNihwPWYsK19bKGN8PTApPj4zXSksY28obCxwKSxqNihwLCtmdW5jdGlvbiBkayhsKXtyZXR1''@;'; put 'put ''cm4rKGw9K2wpfSgrX1tjKzg+PjNdKSksY28obCxwKSxvZT1mfWZ1bmN0aW9uIGo2KGwsYyl7dmFyIGYscDtsfD0wLGY9b2Usb2U9b2UrMTZ8MCxfWyhwPWYpPj4zXT0oYz0rYyk+LTFlLTgmYzwxZS04PzA6YyxhbyhsLDY2ODUxLHApLEtGKGwsMSksb2U9Zn1mdW5jdGlvbiBLRihsLGMpe2N8''@;'; put 'put ''PTA7dmFyIGY9MCxwPTA7aWYoZj0wfFVzKGx8PTAsNDYpKXtmb3IoOzB8dWVbKGw9ZisxfDApPj4wXTspZj1sO2U6Zm9yKDs7KXtzd2l0Y2goMHx1ZVtmPj4wXSl7Y2FzZSA0NjpwPTU7YnJlYWsgZTtjYXNlIDQ4OmJyZWFrO2RlZmF1bHQ6cD02O2JyZWFrIGV9dWVbZj4+MF09MCxmPWYrLTF8''@;'; put 'put ''MH01PT0oMHxwKT91ZVtmPj4wXT0wOjY9PSgwfHApJiYoZj1mKzF8MCksMHxjJiYocD0xMCl9ZWxzZSAwfGMmJihmPWwrKDB8em8obCkpfDAscD0xMCk7MTA9PSgwfHApJiYodWVbZj4+MF09MzIsdWVbZisxPj4wXT0wKX1mdW5jdGlvbiBpSShsKXt2YXIgYyxmLHAsbSxBLHc7dz1vZSxvZT1v''@;'; put 'put ''ZSszMnwwLEE9dysxNnwwLG09dyxjPTB8dWVbMysobHw9MCk+PjBdLGY9MHxidFtsPj4wXSxwPTB8YnRbbCsxPj4wXSxsPTB8YnRbbCsyPj4wXSxjPDwyND4+MjQ9PS0xPyhhW20+PjJdPWYsYVttKzQ+PjJdPXAsYVttKzg+PjJdPWwsYW8oMTkzNzU4LDc1NzE0LG0pKTooYVtBPj4yXT1mLGFb''@;'; put 'put ''QSs0Pj4yXT1wLGFbQSs4Pj4yXT1sLGFbQSsxMj4+Ml09MjU1JmMsYW8oMTkzNzU4LDY2ODY0LEEpKSxvZT13fWZ1bmN0aW9uIEM1KGwsYyxmKXtvSSgwfGFbMTE0MTYrKGFbMTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml08PDIpPj4yXSxjfD0wLGZ8PTApfWZ1bmN0aW9uIG9JKGwsYyxmKXt2''@;'; put 'put ''YXIgcCxtLEEsdztsfD0wLGN8PTAscD1vZSxvZT1vZSsxMDQwfDAsQT1wLG09cCs4fDAsdz0wfHpvKGZ8PTApLGFbQT4+Ml09YyxhW0ErND4+Ml09dyxhbyhtLDY2ODU3LEEpLGNvKGwsbSksY28obCxmKSwoYz0wfGFbKGY9bCs0fDApPj4yXSk+Pj4wPj0oMHxhW2wrOD4+Ml0pPj4+MCYmKEcw''@;'; put 'put ''KGwsMSksYz0wfGFbZj4+Ml0pLGFbZj4+Ml09YysxLHVlW2M+PjBdPTMyLG9lPXB9ZnVuY3Rpb24gYUkobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIFIsSyxwZSxiZSxPZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLG1lPTAsTGU9MDtPZT1vZSxvZT1vZSsxMTIwfDAsSz1P''@;'; put 'put ''ZSs2NHwwLGJlPU9lKzgwfDAsQT1PZSszMnwwLFI9T2UrMTZ8MCxHPU9lLG09LjAxNzQ1MzI5MjUxOTk0MzI5NSorKDB8YVsxMzYrKHBlPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLCgwfGFyWzgyMzIrKDB8YVs0NjY5MF0pPj4xXSk8MTQ/bEkobCk6KG9zKGJlLDEwMjQsT2UrOTZ8MCksKG1l''@;'; put 'put ''PTI9PSgwfGMpKT8oY1YoZixBLHAsbSwyKSwoYz0wfGFbKGY9YmUrNHwwKT4+Ml0pPj4+MD49KDB8YVtiZSs4Pj4yXSk+Pj4wJiYoRzAoYmUsMSksYz0wfGFbZj4+Ml0pLGFbZj4+Ml09YysxLHVlW2M+PjBdPTkxLGFbSz4+Ml09YVtBPj4yXSxhW0srND4+Ml09YVtBKzQ+PjJdLGFbSys4Pj4y''@;'; put 'put ''XT1hW0ErOD4+Ml0sYVtLKzEyPj4yXT1hW0ErMTI+PjJdLF81KGJlLEspLGFbSz4+Ml09YVsoRz1BKzE2fDApPj4yXSxhW0srND4+Ml09YVtHKzQ+PjJdLGFbSys4Pj4yXT1hW0crOD4+Ml0sYVtLKzEyPj4yXT1hW0crMTI+PjJdLF81KGJlLEspKTooY1YoZixBLHAsMCwzKSxEPStfW0ErMjQ+''@;'; put 'put ''PjNdLGs9K19bQT4+M10sMD09bT8oTT0uMjUqRCxtPWI9K19bQSs4Pj4zXSx3PWspOihMZT1NPS4yNSpELHc9K2xhKCttKSpMZStrLGI9K19bQSs4Pj4zXSxtPStJYSgrbSkqTGUrYiksX1tSPj4zXT13LF9bUis4Pj4zXT1tLF9bRz4+M109ayxfW0crOD4+M109YiwoYz0wfGFbKGY9YmUrNHww''@;'; put 'put ''KT4+Ml0pPj4+MD49KDB8YVtiZSs4Pj4yXSk+Pj4wJiYoRzAoYmUsMSksYz0wfGFbZj4+Ml0pLGFbZj4+Ml09YysxLHVlW2M+PjBdPTQwLGFbSz4+Ml09YVtSPj4yXSxhW0srND4+Ml09YVtSKzQ+PjJdLGFbSys4Pj4yXT1hW1IrOD4+Ml0sYVtLKzEyPj4yXT1hW1IrMTI+PjJdLF81KGJlLEsp''@;'; put 'put ''LFZXKGJlLE0pLGFbSz4+Ml09YVtHPj4yXSxhW0srND4+Ml09YVtHKzQ+PjJdLGFbSys4Pj4yXT1hW0crOD4+Ml0sYVtLKzEyPj4yXT1hW0crMTI+PjJdLF81KGJlLEspLFZXKGJlLEQpKSxjbyhiZSw2NjkwNyksZj1wZSs1NnwwLChtPStXblsoYz1wZSsxNDB8MCk+PjJdKT4wPyhzSShiZSxt''@;'; put 'put ''LGYpLHNJKGJlLCtXbltjPj4yXSxwZSs5NnwwKSk6KHNJKGJlLDAsZiksc0koYmUsMSxwZSs5NnwwKSksekEoYmUpLGY9KGM9MHxhWyhBPWJlKzR8MCk+PjJdKT4+PjA+PSgwfGFbKHA9YmUrOHwwKT4+Ml0pPj4+MCxtZT8oZiYmKEcwKGJlLDEpLGM9MHxhW0E+PjJdKSxhW0E+PjJdPWMrMSx1''@;'; put 'put ''ZVtjPj4wXT05Myk6KGYmJihHMChiZSwxKSxjPTB8YVtBPj4yXSksYVtBPj4yXT1jKzEsdWVbYz4+MF09NDEpLChjPTB8YVtBPj4yXSk+Pj4wPj0oMHxhW3A+PjJdKT4+PjAmJihHMChiZSwxKSxjPTB8YVtBPj4yXSksdWVbYz4+MF09MCxhW0E+PjJdPW1lPTB8YVtiZT4+Ml0sQzUobCw2Njkw''@;'; put 'put ''NCxtZSksazIoYmUpKSxvZT1PZX1mdW5jdGlvbiBsSShsKXtpSSg1NisoMHxhWzE2KyhsfD0wKT4+Ml0pfDApLEM1KGwsNjY5MDQsMTkzNzU4KX1mdW5jdGlvbiBWVyhsLGMpe3ZhciBmLHA7bHw9MCxmPW9lLG9lPW9lKzEwMjR8MCxqNihwPWYsYz0rYyksY28obCxwKSxvZT1mfWZ1bmN0aW9u''@;'; put 'put ''IHNJKGwsYyxmKXt2YXIgcCxtLEE7bHw9MCxmfD0wLHA9b2Usb2U9b2UrMTA0MHwwLG09cCs4fDAsX1soQT1wKT4+M109Yz0rYyxhbyhtLDk0MTY4LEEpLEtGKG0sMSksaUkoZiksb0kobCxtLDE5Mzc1OCksb2U9cH1mdW5jdGlvbiBvaWUobCxjKXtjfD0wO3ZhciBmPTA7Zm9yKGFbKGx8PTAp''@;'; put 'put ''Pj4yXT0tOSZhW2w+PjJdLGY9MHx3cyhsKTtmOylvaWUoZiwwKSxmPTB8YnMoZik7ZTpkb3tpZigwfGMpZm9yKGM9MHxMdChsKTs7KXtpZighYylicmVhayBlO2ZvcihhW2M+PjJdPS05JmFbYz4+Ml0sZj0wfHkwKGwsYyk7ZjspYVtmPj4yXT0tOSZhW2Y+PjJdLGY9MHxrMChsLGYpO2M9MHx6''@;'; put 'put ''dChsLGMpfX13aGlsZSgwKX1mdW5jdGlvbiBhYShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgUixHLHBlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxLPTA7aWYocGU9b2Usb2U9b2UrMTZ8MCxLPXBlKzh8MCxHPXBlLFI9MCE9KDB8KGZ8PTApKSl7Zm9yKEQ9MHxBcygxMTgzNiww''@;'; put 'put ''fGFbNDU4MV0pLFFhKGwsMSwxNDEwNjAsMTIsMCksUWEobCwyLDE0MTA2MCwxMiwwKSxRYShsLDAsMTQxMDYwLC0xMiwwKSxtPTB8ZUgobCwwLEQpLGs9MHxMdChsKSxiPTAsQT0wO2s7KXtmb3IoMHxuMigwfCRyKGspLDEwODAwNiw3KT8oTT1BKzF8MCxBPUErbXwwKTooTT1BLEE9MHxhaWUo''@;'; put 'put ''RCwwfCRyKGspKSksYVs4KygwfEFpKGssMTQxMDYwLDApKT4+Ml09QSx3PTB8eTAobCxrKSxBPWI7dzspYVs4KygwfEFpKHcsMTQxMDYwLDApKT4+Ml09QSx3PTB8azAobCx3KSxBPUErMXwwO2s9MHx6dChsLGspLGI9QSxBPU19aXMoRCl9ZWxzZSBtPTA7YVtwPj4yXT0xKyhEPTB8YVtwPj4y''@;'; put 'put ''XSksbWEoYyxEKSxUbihjLDk3Mzc0KSxmdW5jdGlvbiBsaWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG0sQSx3LGIsaz0wO3c9b2Usb2U9b2UrMzJ8MCxBPXcrMTZ8MCxtPXcrOHwwLGI9dyxrPTB8JHIobHw9MCksbWEoYywwfGFbcD4+Ml0pLGFbYj4+Ml09MHxucChrLHApLFJyKGMs''@;'; put 'put ''NjcxMjQsYiksMHxmJiYoVG4oYyw5NzM0NSksbWEoYywwfGFbcD4+Ml0pLGs9MCE9KDB8bGMobCkpLGFbbT4+Ml09az8xMDc2NTI6MTM3MzA4LFJyKGMsNjc3MzgsbSksbWEoYywwfGFbcD4+Ml0pLGs9MCE9KDB8WEEobCkpLGFbQT4+Ml09az8xMDc2NTI6MTM3MzA4LFJyKGMsNjc3NTUsQSkp''@;'; put 'put ''LG9lPXd9KGwsYyxmLHApLGFsKGwsYyxwKSxUbihjLDk3MzQ1KSxtYShjLDB8YVtwPj4yXSksUj8oYVtHPj4yXT1tLFJyKGMsNjcwMTYsRykpOihhW0s+PjJdPWFbOCsoMHxBaShsLDE0MTA2MCwwKSk+PjJdLFJyKGMsNjcwMzYsSykpLGZ1bmN0aW9uIGs3ZShsLGMsZixwLG0pe2N8PTAsZnw9''@;'; put 'put ''MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7aWYoQT0wfEx0KGx8PTApKXtmb3IoVG4oYyw5NzM0NSksKHc9MCE9KDB8ZikpPyhwfHwoYVttPj4yXT0xKyhwPTB8YVttPj4yXSksbWEoYyxwKSxUbihjLDY3MDk4KSkscD0wKTooYVttPj4yXT0xKyhwPTB8YVttPj4yXSksbWEoYyxwKSxUbihjLDY3''@;'; put 'put ''MTEyKSxtYShjLDB8YVttPj4yXSkscD0wKTtBOyl7aWYoMHxuMigwfCRyKEEpLDEwODAwNiw3KSl7ZG97aWYocCl7aWYodyl7VG4oYyw5NzM0NSk7YnJlYWt9VG4oYywxMDA5OTkpO2JyZWFrfXA9MX13aGlsZSgwKTtzaWUoQSxjLGYsbSl9QT0wfHp0KGwsQSl9YVttPj4yXT0oMHxhW20+PjJd''@;'; put 'put ''KS0xLFRuKGMsMTUzNTk5KSxtYShjLDB8YVttPj4yXSksVG4oYyw5NzM0MCl9ZWxzZSAwIT0oMHxmKSYwIT0oMHxwKSYmKGFbbT4+Ml09KDB8YVttPj4yXSktMSxUbihjLDE1MzU5OSksbWEoYywwfGFbbT4+Ml0pLFRuKGMsOTczNDApKX0obCxjLGYsMHxmdW5jdGlvbiBDN2UobCxjLGYscCl7''@;'; put 'put ''Y3w9MCxmfD0wLHB8PTA7dmFyIG0sdyxiLEE9MDtpZihiPW9lLG9lPW9lKzE2fDAsdz1iLG09MHx3cyhsfD0wKSl7Zm9yKFRuKGMsOTczNDUpLGFbcD4+Ml09MSsoQT0wfGFbcD4+Ml0pLG1hKGMsQSksKEE9MCE9KDB8ZikpPyhUbihjLDY3MDk4KSxsPTAsZj1tKTooVG4oYyw2NzE1OCksbWEo''@;'; put 'put ''YywwfGFbcD4+Ml0pLGw9MCxmPW0pO2Y7KWw/VG4oYyw5NzM0NSk6bD0xLEE/dEgoZixjLHApOihhW3c+PjJdPWFbOCsoMHxBaShmLDE0MTA2MCwwKSk+PjJdLFJyKGMsMTM3Mzk1LHcpKSxmPTB8YnMoZik7QXx8KGFbcD4+Ml09KDB8YVtwPj4yXSktMSxUbihjLDE1MzU5OSksbWEoYywwfGFb''@;'; put 'put ''cD4+Ml0pLFRuKGMsOTczNDApKSxsPTF9ZWxzZSBsPTA7cmV0dXJuIG9lPWIsMHxsfShsLGMsZixwKSxwKSxmdW5jdGlvbiBTN2UobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MDttPTB8THQobHw9MCk7ZTpkb3tpZigwfG0pe2Zvcig7Oyl7aWYoIW0pYnJlYWsg''@;'; put 'put ''ZTtpZigwfHkwKGwsbSkpYnJlYWs7bT0wfHp0KGwsbSl9Zm9yKFRuKGMsOTczNDUpLGFbcD4+Ml09MSsoYj0wfGFbcD4+Ml0pLG1hKGMsYiksVG4oYyw2NzA0OCksKGI9MCE9KDB8ZikpfHxtYShjLDB8YVtwPj4yXSksQT0wO207KXtmb3Iodz0wfHkwKGwsbSk7dzspe2Rve2lmKEEpe2lmKGIp''@;'; put 'put ''e1RuKGMsOTczNDUpO2JyZWFrfVRuKGMsMTAwOTk5KTticmVha31BPTF9d2hpbGUoMCk7TTdlKHcsYyxmLHApLHc9MHxrMChsLHcpfW09MHx6dChsLG0pfWFbcD4+Ml09KDB8YVtwPj4yXSktMSxUbihjLDE1MzU5OSksbWEoYywwfGFbcD4+Ml0pLFRuKGMsOTczNDApfX13aGlsZSgwKX0obCxj''@;'; put 'put ''LGYscCksVG4oYywxNTM1OTkpLGFbcD4+Ml09Sz0oMHxhW3A+PjJdKS0xfDAsbWEoYyxLKSxUbihjLFI/MTExMDA4Ojc1MzU3KSxvZT1wZX1mdW5jdGlvbiBlSChsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTA7Zm9yKCgwfGhpKGx8PTApKSE9KDB8bCkmJihwPWMrMXwwLGFbOCsoMHxBaShsLDE0''@;'; put 'put ''MTA2MCwwKSk+PjJdPWMsMHxuMigwfCRyKGwpLDEwODAwNiw3KXx8ZnVuY3Rpb24gVDdlKGwsYyxmKXtmfD0wO3ZhciBwLEEsbT0wO0E9b2Usb2U9b2UrMTZ8MCxtPUEsKHA9MHxtaVs2MyZhWyhsfD0wKT4+Ml1dKGwsY3w9MCw1MTIpKT8oMHxhW3ArMTI+PjJdKSE9KDB8ZikmJihhW20+PjJd''@;'; put 'put ''PWMsWHIoMCw2Nzc2OCxtKSk6KG09MHxUZigxLDE2KSxhW20rOD4+Ml09MHxuYShjKSxhW20rMTI+PjJdPWYsbWlbNjMmYVtsPj4yXV0obCxtLDEpKSxvZT1BfShmLGM9MHwkcihsKSwwfGFbOCsoMHxBaShsLDE0MTA2MCwwKSk+PjJdKSxjPXApLHA9MHx3cyhsKTtwOylsPTB8ZUgocCxjLGYp''@;'; put 'put ''LHA9MHxicyhwKSxjPWw7cmV0dXJuIDB8Y31mdW5jdGlvbiBhaWUobCxjKXtyZXR1cm4gMHwoKGw9MHxtaVs2MyZhWyhsfD0wKT4+Ml1dKGwsY3w9MCw1MTIpKT8wfGFbbCsxMj4+Ml06LTEpfWZ1bmN0aW9uIG1hKGwsYyl7Zm9yKGx8PTAsY3w9MDshKCgwfGMpPD0wKTspVG4obCw5MDU3NCks''@;'; put 'put ''Yz1jKy0xfDB9ZnVuY3Rpb24gYWwobCxjLGYpe2N8PTAsZnw9MDt2YXIgdyxiLE0sRCxSLHA9MCxtPTAsQT0wLGs9MDtSPW9lLG9lPW9lKzE2fDAsRD1SKzh8MCxNPVIscD0wfFBzKHc9MHxoaShsfD0wKSxiPTMmYVtsPj4yXSwwKTtlOmRve2lmKDB8cClmb3Ioaz1mKzV8MDs7KXtpZighcCli''@;'; put 'put ''cmVhayBlO209MHxGbyhsLHApO2Rve2lmKDB8bSl7aWYoQT1wKzh8MCwhKDB8dWVbbT4+MF0pJiYoMTA4IT0oMHx1ZVsobT0wfGFbQT4+Ml0pPj4wXSl8fDB8WmkobSwxMDgyMjQpKSlicmVhaztpZihUbihjLDk3MzQ1KSxtYShjLDB8YVtmPj4yXSksYVtNPj4yXT0wfG5wKDB8YVtBPj4yXSxm''@;'; put 'put ''KSxScihjLDY3MTc0LE0pLDB8dWVbaz4+MF0mJjB8dWllKDB8YVtBPj4yXSkpe0U3ZSgwfEZvKGwscCksYyxmKTticmVha31hW0Q+PjJdPTB8bnAoMHxGbyhsLHApLGYpLFJyKGMsNjcxODEsRCl9fXdoaWxlKDApO3A9MHxQcyh3LGIscCl9fXdoaWxlKDApO29lPVJ9ZnVuY3Rpb24gTTdlKGws''@;'; put 'put ''YyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBtLEEsdyxrLGI9MDtrPW9lLG9lPW9lKzMyfDAsYj1rKzI0fDAsdz1rKzE2fDAsQT1rKzh8MCxtPWssKGZ8PTApPyhhW3A+PjJdPTErKGI9MHxhW3A+PjJdKSxtYShjLGIpLFRuKGMsOTczNzQpLG1hKGMsMHxhW3A+PjJdKSxhW20+PjJdPWFbOCso''@;'; put 'put ''MHxBaShsLDE0MTA2MCwwKSk+PjJdLFJyKGMsNjcwNjAsbSksbWEoYywwfGFbcD4+Ml0pLGFbQT4+Ml09YVs4KygwfEFpKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdLDE0MTA2MCwwKSk+PjJdLFJyKGMsNjcwNzQsQSksbWEoYywwfGFbcD4+Ml0pLGFbdz4+Ml09YVs4''@;'; put 'put ''KygwfEFpKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSwxNDEwNjAsMCkpPj4yXSxScihjLDY3MDg3LHcpLGFsKGwsYyxwKSxUbihjLDE1MzU5OSksYVtwPj4yXT1iPSgwfGFbcD4+Ml0pLTF8MCxtYShjLGIpLFRuKGMsNzUzNTcpKTooYVtiPj4yXT1hWzgrKDB8QWko''@;'; put 'put ''bCwxNDEwNjAsMCkpPj4yXSxScihjLDEzNzM5NSxiKSksb2U9a31mdW5jdGlvbiBzaWUobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIG0sQSxiLHc9MDtiPW9lLG9lPW9lKzMyfDAsdz1iKzE2fDAsQT1iKzh8MCxtPWIsKGZ8PTApPyhhW3A+PjJdPTErKHc9MHxhW3A+PjJdKSxtYShjLHcp''@;'; put 'put ''LFRuKGMsOTczNzQpLG1hKGMsMHxhW3A+PjJdKSxhW20+PjJdPWFbOCsoMHxBaShsLDE0MTA2MCwwKSk+PjJdLFJyKGMsNjcwNjAsbSksbWEoYywwfGFbcD4+Ml0pLGFbQT4+Ml09MHxucCgwfCRyKGwpLHApLFJyKGMsNjcxMjQsQSksYWwobCxjLHApLFRuKGMsMTUzNTk5KSxhW3A+PjJdPXc9''@;'; put 'put ''KDB8YVtwPj4yXSktMXwwLG1hKGMsdyksVG4oYyw3NTM1NykpOihhW3c+PjJdPWFbOCsoMHxBaShsLDE0MTA2MCwwKSk+PjJdLFJyKGMsMTM3Mzk1LHcpKSxvZT1ifWZ1bmN0aW9uIG5wKGwsYyl7bHw9MDt2YXIgbSxmPTAscD0wOzB8dWVbKG09NCsoY3w9MCl8MCk+PjBdJiYobD0wfFNrKGwp''@;'; put 'put ''KSwwfGFbNDY3MDZdfHxvcygxODY4MjQsMTAyNCwwKSxmPWw7ZTpmb3IoOzspe3N3aXRjaCgocD0wfHVlW2Y+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6YnJlYWsgZTtjYXNlIDM0OmNvKDE4NjgyNCw2NzEzNyk7YnJlYWs7Y2FzZSA5MjpjbygxODY4MjQsOTY2MTYpO2JyZWFrO2Nhc2UgNDc6Y28o''@;'; put 'put ''MTg2ODI0LDY3MTQwKTticmVhaztjYXNlIDg6Y28oMTg2ODI0LDY3MTQzKTticmVhaztjYXNlIDEyOmNvKDE4NjgyNCw2NzE0Nik7YnJlYWs7Y2FzZSAxMDpjbygxODY4MjQsNjcxNDkpO2JyZWFrO2Nhc2UgMTM6Y28oMTg2ODI0LDY3MTUyKTticmVhaztjYXNlIDk6Y28oMTg2ODI0LDY3MTU1''@;'; put 'put ''KTticmVhaztkZWZhdWx0OihjPTB8YVs0NjcwN10pPj4+MD49KDB8YVs0NjcwOF0pPj4+MCYmKEcwKDE4NjgyNCwxKSxjPTB8YVs0NjcwN10pLGFbNDY3MDddPWMrMSx1ZVtjPj4wXT1wfWY9ZisxfDB9cmV0dXJuKGM9MHxhWzQ2NzA3XSk+Pj4wPj0oMHxhWzQ2NzA4XSk+Pj4wJiYoRzAoMTg2''@;'; put 'put ''ODI0LDEpLGM9MHxhWzQ2NzA3XSksdWVbYz4+MF09MCxhWzQ2NzA3XT1jPTB8YVs0NjcwNl0sMHx1ZVttPj4wXSYmSHQobCksMHxjfWZ1bmN0aW9uIHRIKGwsYyxmKXtmb3IoYWEobHw9MCxjfD0wLDAsZnw9MCksbD0wfHdzKGwpO2w7KVRuKGMsOTczNDUpLHRIKGwsYyxmKSxsPTB8YnMobCl9''@;'; put 'put ''ZnVuY3Rpb24gdWllKGwpe3ZhciBjO2M9MSsobHw9MCl8MDtlOmRve2lmKDk1PT0oMHx1ZVtsPj4wXSkpe3N3aXRjaCgoKDI1NSYobD0oMHx1ZVtjPj4wXSktMTAwPDwyND4+MjQpKT4+PjJ8bDw8NiYyNTUpPDwyND4+MjQpe2Nhc2UgMDppZighKDB8WmkoYyw2NzY5NSkpKXtsPTE7YnJlYWsg''@;'; put 'put ''ZX1icmVhaztjYXNlIDI6aWYoISgwfFppKGMsNjc3MDEpKSl7bD0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxOmlmKCEoMHxaaShjLDY3NzA4KSkpe2w9MTticmVhayBlfXJldHVybiAwPT0oMHxaaShjLDY3NzIyKSl8MDtjYXNlIDQ6aWYoISgwfFppKGMsNjc3MTUpKSl7bD0xO2JyZWFrIGV9bD0w''@;'; put 'put ''PT0oMHxaaShjLDY3NzMwKSkmMTticmVhayBlO2RlZmF1bHQ6bD0wO2JyZWFrIGV9bD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gRTdlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxwPTAsbT0wLEE9MDt3PW9lLG9lPW9lKzE2fDAscD13O2Rve2lmKDB8bCYm''@;'; put 'put ''MHx1ZVtsPj4wXSl7aWYoIShBPTB8eHJlKGwpKSl7YVtwPj4yXT1sLFhyKDAsNjcxODYscCk7YnJlYWt9Zm9yKFRuKGMsMTUzNTk5KSxhW2Y+PjJdPTErKG09MHxhW2Y+PjJdKSxtYShjLG0pLFRuKGMsNjcyMTMpLG09QSs4fDAsbD0wLHA9MDshKCgwfHApPj0oMHxhW0E+PjJdKSk7KWw/VG4o''@;'; put 'put ''Yyw5NzM0NSk6bD0xLGpXKCgwfGFbbT4+Ml0pKyg4MCpwfDApfDAsYyxmKSxwPXArMXwwO2FbZj4+Ml09KDB8YVtmPj4yXSktMSxUbihjLDE1MzU5OSksbWEoYywwfGFbZj4+Ml0pLFRuKGMsOTczNDApLFRyZShBKX19d2hpbGUoMCk7b2U9d31mdW5jdGlvbiBqVyhsLGMsZil7bHw9MCxjfD0w''@;'; put 'put ''O3ZhciBtLEEsdyxiLGssTSxELFIsRyxLLHBlLG1lLGJlLE9lLExlLEJlLEhlLGplLHJ0LHA9MCxldD0wLEdlPTAsbHQ9MCxNdD0wO3J0PW9lLG9lPW9lKzI0MHwwLGplPXJ0KzIyNHwwLEhlPXJ0KzIxNnwwLEJlPXJ0KzIwOHwwLExlPXJ0KzIwMHwwLE9lPXJ0KzE5MnwwLGJlPXJ0KzE4NHww''@;'; put 'put ''LG1lPXJ0KzE3NnwwLHBlPXJ0KzE1MnwwLEs9cnQrMTM2fDAsRz1ydCsxMjh8MCxSPXJ0KzExMnwwLEQ9cnQrMTA0fDAsTT1ydCs5NnwwLGs9cnQrODh8MCxiPXJ0KzcyfDAsdz1ydCs0OHwwLGV0PXJ0KzQwfDAsQT1ydCs4fDAsbT1ydCxhWyhmfD0wKT4+Ml09MSsocD0wfGFbZj4+Ml0pLG1h''@;'; put 'put ''KGMscCksVG4oYyw5NzM3NCksbWEoYywwfGFbZj4+Ml0pLHA9MHxhW2w+PjJdO2U6ZG97c3dpdGNoKDB8cCl7Y2FzZSAxOmNhc2UgMDphW20+PjJdPTA9PSgwfHApPzY5OjEwMSxScihjLDY3MjE2LG0pLG1hKGMsMHxhW2Y+PjJdKSxNdD0rX1tsKzE2Pj4zXSxsdD0rX1tsKzI0Pj4zXSxHZT0r''@;'; put 'put ''X1tsKzMyPj4zXSxfW0E+PjNdPStfW2wrOD4+M10sX1tBKzg+PjNdPU10LF9bQSsxNj4+M109bHQsX1tBKzI0Pj4zXT1HZSxScihjLDY3MjI5LEEpO2JyZWFrO2Nhc2UgMzpjYXNlIDI6YVtldD4+Ml09Mj09KDB8cCk/ODA6MTEyLFJyKGMsNjcyMTYsZXQpLG1hKGMsMHxhW2Y+PjJdKSxaVyhj''@;'; put 'put ''LGwrOHwwKTticmVhaztjYXNlIDU6Y2FzZSA0OmFbdz4+Ml09ND09KDB8cCk/NjY6OTgsUnIoYyw2NzIxNix3KSxtYShjLDB8YVtmPj4yXSksWlcoYyxsKzh8MCk7YnJlYWs7Y2FzZSA2OlJyKGMsNjcyNjQscnQrNTZ8MCksbWEoYywwfGFbZj4+Ml0pLFpXKGMsbCs4fDApO2JyZWFrO2Nhc2Ug''@;'; put 'put ''NzpScihjLDY3Mjc2LHJ0KzY0fDApLG1hKGMsMHxhW2Y+PjJdKSxNdD0rX1tsKzE2Pj4zXSxfW2I+PjNdPStfW2wrOD4+M10sX1tiKzg+PjNdPU10LFJyKGMsNjcyODgsYiksbWEoYywwfGFbZj4+Ml0pLGFbaz4+Ml09MD09KDB8KGV0PTB8YVtsKzI0Pj4yXSkpPzEwODoxPT0oMHxldCk/OTk6''@;'; put 'put ''MTE0LFJyKGMsNjczMTAsayksbWEoYywwfGFbZj4+Ml0pLF9bTT4+M109K19bbCszMj4+M10sUnIoYyw2NzMyNixNKSxtYShjLDB8YVtmPj4yXSksYVtEPj4yXT0wfG5wKDB8YVtsKzQwPj4yXSxmKSxScihjLDY3MzQzLEQpO2JyZWFrO2Nhc2UgOTpjYXNlIDg6YVtSPj4yXT04PT0oMHxwKT82''@;'; put 'put ''Nzo5OSxScihjLDY3MjE2LFIpLG1hKGMsMHxhW2Y+PjJdKSxScihjLDY3MzU3LHJ0KzEyMHwwKSxtYShjLDB8YVtmPj4yXSksYVtHPj4yXT0wfG5wKDB8YVtsKzg+PjJdLGYpLFJyKGMsNjczNzQsRyk7YnJlYWs7Y2FzZSAxMzpjYXNlIDE0OnN3aXRjaChhW0s+PjJdPTEzPT0oMHxwKT82Nzo5''@;'; put 'put ''OSxScihjLDY3MjE2LEspLG1hKGMsMHxhW2Y+PjJdKSwwfGFbbCs4Pj4yXSl7Y2FzZSAwOlJyKGMsNjczNTcscnQrMTQ0fDApLG1hKGMsMHxhW2Y+PjJdKSxhW3BlPj4yXT0wfG5wKDB8YVtsKzE2Pj4yXSxmKSxScihjLDY3Mzc0LHBlKTticmVhayBlO2Nhc2UgMTpScihjLDY3Mzg5LHJ0KzE2''@;'; put 'put ''MHwwKSxtYShjLDB8YVtmPj4yXSksUWMoYyxsKzE2fDAsZik7YnJlYWsgZTtkZWZhdWx0OlJyKGMsNjc0MDgscnQrMTY4fDApLG1hKGMsMHxhW2Y+PjJdKSx4N2UoYyxsKzE2fDAsZik7YnJlYWsgZX1jYXNlIDEwOlJyKGMsNjc0MjcsbWUpLG1hKGMsMHxhW2Y+PjJdKSxfW2JlPj4zXT0rX1ts''@;'; put 'put ''Kzg+PjNdLFJyKGMsNjc0MzksYmUpLG1hKGMsMHxhW2Y+PjJdKSxhW09lPj4yXT0wfG5wKDB8YVtsKzE2Pj4yXSxmKSxScihjLDY3NDU1LE9lKTticmVhaztjYXNlIDExOlJyKGMsNjc0NjksTGUpLG1hKGMsMHxhW2Y+PjJdKSxhW0JlPj4yXT0wfG5wKDB8YVtsKzg+PjJdLGYpLFJyKGMsNjc0''@;'; put 'put ''ODEsQmUpO2JyZWFrO2Nhc2UgMTU6UnIoYyw2NzQ5NixIZSksbWEoYywwfGFbZj4+Ml0pLGFbamU+PjJdPWFbbCs4Pj4yXSxScihjLDY3NTA4LGplKX19d2hpbGUoMCk7YVtmPj4yXT1ldD0oMHxhW2Y+PjJdKS0xfDAsbWEoYyxldCksVG4oYyw3NTM1Nyksb2U9cnR9ZnVuY3Rpb24gWlcobCxj''@;'; put 'put ''KXt2YXIgZixwLG0sQSx3LGIsaz0wO2ZvcihiPW9lLG9lPW9lKzQ4fDAsdz1iKzMyfDAsQT1iKzE2fDAsbT1iKzh8MCxwPTB8YVsoY3w9MCk+PjJdLGY9MHxhW2MrND4+Ml0sUnIobHw9MCw2NzY2OSxiKSxjPTA7ISgoMHxjKT49KDB8cCkpOykoMHxjKT4wJiZScihsLDEwMDk5OSxtKSxrPStf''@;'; put 'put ''W2YrKDI0KmN8MCkrOD4+M10sX1tBPj4zXT0rX1tmKygyNCpjfDApPj4zXSxfW0ErOD4+M109ayxScihsLDY3NjgxLEEpLGM9YysxfDA7UnIobCw2NzYyMix3KSxvZT1ifWZ1bmN0aW9uIFFjKGwsYyxmKXtjfD0wO3ZhciBwLG0sdyxBPTA7cD1vZSxvZT1vZSszMnwwLG09cCsxNnwwLHc9cCxt''@;'; put 'put ''YShsfD0wLDB8YVsoZnw9MCk+PjJdKSxBPStfW2MrOD4+M10sX1t3Pj4zXT0rX1tjPj4zXSxfW3crOD4+M109QSxScihsLDY3NjI1LHcpLG1hKGwsMHxhW2Y+PjJdKSxBPStfW2MrMjQ+PjNdLF9bbT4+M109K19bYysxNj4+M10sX1ttKzg+PjNdPUEsUnIobCw2NzY0NyxtKSxtYShsLDB8YVtm''@;'; put 'put ''Pj4yXSksdUkobCwwfGFbYyszMj4+Ml0sMHxhW2MrMzY+PjJdLGYpLG9lPXB9ZnVuY3Rpb24geDdlKGwsYyxmKXtjfD0wO3ZhciBwLG0sYixBPTAsdz0wO3A9b2Usb2U9b2UrNDh8MCxtPXArMjR8MCxiPXAsbWEobHw9MCwwfGFbKGZ8PTApPj4yXSksQT0rX1tjKzg+PjNdLHc9K19bYysxNj4+''@;'; put 'put ''M10sX1tiPj4zXT0rX1tjPj4zXSxfW2IrOD4+M109QSxfW2IrMTY+PjNdPXcsUnIobCw2NzUyNCxiKSxtYShsLDB8YVtmPj4yXSksdz0rX1tjKzMyPj4zXSxBPStfW2MrNDA+PjNdLF9bbT4+M109K19bYysyND4+M10sX1ttKzg+PjNdPXcsX1ttKzE2Pj4zXT1BLFJyKGwsNjc1NTIsbSksbWEo''@;'; put 'put ''bCwwfGFbZj4+Ml0pLHVJKGwsMHxhW2MrNDg+PjJdLDB8YVtjKzUyPj4yXSxmKSxvZT1wfWZ1bmN0aW9uIHVJKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBBLHcsYixrLG09MCxNPTAsRD0wO2ZvcihrPW9lLG9lPW9lKzQ4fDAsYj1rKzMyfDAsdz1rKzE2fDAsQT1rKzh8MCxScihsfD0w''@;'; put 'put ''LDY3NTgwLGspLG09MDshKCgwfG0pPj0oMHxjKSk7KSgwfG0pPjAmJlJyKGwsMTAwOTk5LEEpLEQ9K1duW2YrKG08PDMpPj4yXSxNPTB8bnAoMHxhW2YrKG08PDMpKzQ+PjJdLHApLF9bdz4+M109RCxhW3crOD4+Ml09TSxScihsLDY3NTkxLHcpLG09bSsxfDA7UnIobCw2NzYyMixiKSxvZT1r''@;'; put 'put ''fWZ1bmN0aW9uIGZJKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MDtzd2l0Y2goMHxhWzE0NCsobHw9MCk+PjJdKXtjYXNlIDE6cD0xMCxsPTE7YnJlYWs7Y2FzZSAyOnA9MTAsbD0yO2JyZWFrO2RlZmF1bHQ6cD0wLGw9MH1hW2M+PjJdPWwsX1tmPj4zXT1wfWZ1bmN0aW9uIHlpZShsLGMsZixw''@;'; put 'put ''KXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBBLHcsYixtPTAsaz0wLE09MDtmb3IoYj1vZSxvZT1vZSsxNnwwLHc9Yis4fDAsQT1iLG09MDshKCgwfG0pPj0oMHxmKSk7KWs9K19bYysobTw8NCkrOD4+M10sYVtBPj4yXT1+figoTT0rX1tjKyhtPDw0KT4+M10pKyhNPj0wPy41Oi0uNSkpLGFb''@;'; put 'put ''QSs0Pj4yXT1+fihrKyhrPj0wPy41Oi0uNSkpLFJyKGwsODEwOTksQSksbT1tKzF8MDswfHAmJihNPStfW2MrOD4+M10sYVt3Pj4yXT1+figoaz0rX1tjPj4zXSkrKGs+PTA/LjU6LS41KSksYVt3KzQ+PjJdPX5+KE0rKE0+PTA/LjU6LS41KSksUnIobCw4MTA5OSx3KSksVG4obCwxNTM1OTkp''@;'; put 'put ''LG9lPWJ9ZnVuY3Rpb24gd2llKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBrLG09MCxBPTAsdz0wLGI9MCxNPTAsRD0wLFI9MDtmb3IoYVsobHw9MCk+PjJdPTAsaz0wfGFbNDY3MTFdLEE9MTk1MDc1LG09MCx3PS0xOzspe2lmKCgwfG0pPj0oMHxrKSl7TT02O2JyZWFrfWlmKEQ9KDB8''@;'; put 'put ''VHRbMTkwNjgwKyhtPDwxKT4+MV0pLWN8MCxiPSgwfFR0WzE5MTcwNCsobTw8MSk+PjFdKS1wfDAsKDB8KGI9KDB8dnIoUj0oMHxUdFsxOTExOTIrKG08PDEpPj4xXSktZnwwLFIpKSsoMHx2cihELEQpKSsoMHx2cihiLGIpKXwwKSk8KDB8QSkpe2lmKCFiKWJyZWFrO0E9Yix3PW19bT1tKzF8''@;'; put 'put ''MH1yZXR1cm4gNj09KDB8TSkmJihhWzQ2NzExXT1rKzEsMjU2PT0oMHxrKT9tPXc6KFR0WzE5MDY4MCsobTw8MSk+PjFdPWMsVHRbMTkxMTkyKyhtPDwxKT4+MV09ZixUdFsxOTE3MDQrKG08PDEpPj4xXT1wLGFbbD4+Ml09MSkpLDB8bX1mdW5jdGlvbiBoSShsLGMsZixwLG0sQSx3LGIpe2x8''@;'; put 'put ''PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MDt2YXIgUixHLEsscGUsbWUsYmUsSGUsaz0wLE09MCxEPTAsT2U9MCxMZT0wLEJlPTAsamU9MDtIZT1vZSxvZT1vZSsxMjh8MCxCZT1IZSsxMjB8MCxiZT1IZSsxMTJ8MCxtZT1IZSs5NnwwLHBlPUhlKzgwfDAsSz1IZSs1Nnww''@;'; put 'put ''LExlPUhlKzQ4fDAsRz1IZSs0MHwwLE9lPUhlKzI0fDAsUj1IZTtlOmRve2lmKDAhPSgwfGYpJjAhPSgwfHApKXtmb3Ioaz1wKzEwfDAsKDB8YVs0NjcxNF0pPCgwfHApPyhhWzQ2NzE0XT1rLEQ9MHxaYSgwfGFbNDY3MTVdLGs8PDMpLGFbNDY3MTVdPUQpOkQ9MHxhWzQ2NzE1XSxrPTA7ISgo''@;'; put 'put ''MHxrKT49KDB8cCkpOylhW0QrKGs8PDMpPj4yXT1+figoamU9K19bZisoazw8NCk+PjNdKSsoamU+PTA/LjU6LS41KSksYVtEKyhrPDwzKSs0Pj4yXT1+figoamU9K19bZisoazw8NCkrOD4+M10pKyhqZT49MD8uNTotLjUpKSxrPWsrMXwwO2lmKChmPTAhPSgwfG0pKSYwPT0oMHwoaz0wfGFb''@;'; put 'put ''KE09bCs2NHwwKT4+Ml0pKSl7aWYoISgwfHVlW20+PjBdKSlicmVhaztzd2l0Y2goMHxjKXtjYXNlIDA6T2U9MHxhW0Q+PjJdLExlPTB8YVtEKzEyPj4yXSxCZT0wfGFbRCs4Pj4yXSxwPTB8YVtEKzQ+PjJdLGFbUj4+Ml09bSxhW1IrND4+Ml09T2UsYVtSKzg+PjJdPUxlLGFbUisxMj4+Ml09''@;'; put 'put ''QmUsYVtSKzE2Pj4yXT1wLFJyKGwsNjc5NTQsUik7YnJlYWsgZTtjYXNlIDE6QmU9MHxhW0QrND4+Ml0scD0oMHxhW0QrOD4+Ml0pLShMZT0wfGFbRD4+Ml0pfDAsYVtPZT4+Ml09bSxhW09lKzQ+PjJdPUxlLGFbT2UrOD4+Ml09QmUsYVtPZSsxMj4+Ml09cCxScihsLDY3OTc1LE9lKTticmVh''@;'; put 'put ''ayBlO2Nhc2UgMjpmb3IoYVtHPj4yXT1tLFJyKGwsNjc5OTUsRyksaz0wOyEoKDB8ayk+PSgwfHApKTspQmU9MHxhWyhPZT0wfGFbNDY3MTVdKSsoazw8MykrND4+Ml0sYVtMZT4+Ml09YVtPZSsoazw8Myk+PjJdLGFbTGUrND4+Ml09QmUsUnIobCw2ODAwMyxMZSksaz1rKzF8MDtUbihsLDE1''@;'; put 'put ''MzU5OSk7YnJlYWsgZTtkZWZhdWx0OkJyKDEzODM5NCw2ODAxMCw2Myw2ODAzMCl9fWlmKGYmMT09KDB8aykpe2lmKCEoMHx1ZVttPj4wXSkpYnJlYWs7aWYoIWMpe0xlPTB8YVtEKzEyPj4yXSxCZT0wfGFbRCs4Pj4yXSxwPTB8YVtEKzQ+PjJdLGFbSz4+Ml09YVtEPj4yXSxhW0srND4+Ml09''@;'; put 'put ''TGUsYVtLKzg+PjJdPUJlLGFbSysxMj4+Ml09cCxhW0srMTY+PjJdPW0sYVtLKzIwPj4yXT1BLFJyKGwsNjgwNDcsSyk7YnJlYWt9QnIoMTM4Mzk0LDY4MDEwLDc1LDY4MDMwKX1pZigyPT0oLTIma3wwKSl7c3dpdGNoKDB8Yyl7Y2FzZSAxOlRuKGwsNjgwODApO2JyZWFrO2Nhc2UgMDpUbihs''@;'; put 'put ''LDY4MTAxKTticmVhaztjYXNlIDI6VG4obCw2ODEyMCk7YnJlYWs7ZGVmYXVsdDpCcigxMzgzOTQsNjgwMTAsOTEsNjgwMzApfTB8YiYmMHx1ZVtiPj4wXSYmKFRuKGwsNzM2MDApLFRuKGwsMHxVb2UoYikpLFRuKGwsOTg3NDQpKSxmJiYwfHVlW20+PjBdJiYoVG4obCw2ODEzOSksVG4obCww''@;'; put 'put ''fFVvZShtKSksVG4obCw5ODc0NCkpLDB8dyYmMHx1ZVt3Pj4wXSYmKFRuKGwsNzQ1NTkpLFRuKGwsMHxYMSh3KSksVG4obCw5ODc0NCkpLDB8QSYmMHx1ZVtBPj4wXSYmKFRuKGwsNjgxNDcpLFRuKGwsMHxYMShBKSksVG4obCw5ODc0NCkpLFRuKGwsNjgxNTYpLFRuKGwsNjgxNjQpO3Q6ZG97''@;'; put 'put ''c3dpdGNoKDB8Yyl7Y2FzZSAxOkJlPTB8YVs0KyhwPTB8YVs0NjcxNV0pPj4yXSxwPSgwfGFbcCs4Pj4yXSktKExlPTB8YVtwPj4yXSl8MCxhW3BlPj4yXT1MZSxhW3BlKzQ+PjJdPUJlLGFbcGUrOD4+Ml09cCxScihsLDY4MTc0LHBlKTticmVhaztjYXNlIDA6TGU9MHxhWzEyKyhPZT0wfGFb''@;'; put 'put ''NDY3MTVdKT4+Ml0sQmU9MHxhW09lKzg+PjJdLHA9MHxhW09lKzQ+PjJdLGFbbWU+PjJdPWFbT2U+PjJdLGFbbWUrND4+Ml09TGUsYVttZSs4Pj4yXT1CZSxhW21lKzEyPj4yXT1wLFJyKGwsNjgxODMsbWUpO2JyZWFrO2Nhc2UgMjpmb3Ioaz0wfGFbNCsoTGU9MHxhWzQ2NzE1XSk+PjJdLGFb''@;'; put 'put ''YmU+PjJdPWFbTGU+PjJdLGFbYmUrND4+Ml09ayxScihsLDY4MTk1LGJlKSxrPTE7Oyl7aWYoKDB8ayk+PSgwfHApKWJyZWFrIHQ7TGU9MHxhWyhPZT0wfGFbNDY3MTVdKSsoazw8MykrND4+Ml0sYVtCZT4+Ml09YVtPZSsoazw8Myk+PjJdLGFbQmUrND4+Ml09TGUsUnIobCw2ODIwMSxCZSks''@;'; put 'put ''az1rKzF8MH19fXdoaWxlKDApO2lmKDM9PSgwfGFbTT4+Ml0pKXtUbihsLDczNDI0KTticmVha31UbihsLDY4MjA4KTticmVha319fXdoaWxlKDApO29lPUhlfWZ1bmN0aW9uIHJIKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MDtzd2l0Y2goMHxhWzE0NCsobHw9MCk+PjJdKXtjYXNlIDE6cD0x''@;'; put 'put ''MCxsPTE7YnJlYWs7Y2FzZSAyOnA9MTAsbD0yO2JyZWFrO2RlZmF1bHQ6cD0wLGw9MH1hW2M+PjJdPWwsX1tmPj4zXT1wfWZ1bmN0aW9uIFdXKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEEsdyxiLG09MCxrPTAsTT0wO2ZvcihiPW9lLG9lPW9lKzE2fDAsdz1iKzh8MCxBPWIs''@;'; put 'put ''bT0wOyEoKDB8bSk+PSgwfGYpKTspaz0rX1tjKyhtPDw0KSs4Pj4zXSxhW0E+PjJdPX5+KChNPStfW2MrKG08PDQpPj4zXSkrKE0+PTA/LjU6LS41KSksYVtBKzQ+PjJdPX5+KGsrKGs+PTA/LjU6LS41KSksUnIobCw4MTA5OSxBKSxtPW0rMXwwOzB8cCYmKE09K19bYys4Pj4zXSxhW3c+PjJd''@;'; put 'put ''PX5+KChrPStfW2M+PjNdKSsoaz49MD8uNTotLjUpKSxhW3crND4+Ml09fn4oTSsoTT49MD8uNTotLjUpKSxScihsLDgxMDk5LHcpKSxUbihsLDE1MzU5OSksb2U9Yn1mdW5jdGlvbiBTaWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wLE09MCxEPTAsUj0w''@;'; put 'put ''O2ZvcihhWyhsfD0wKT4+Ml09MCxrPTB8YVs0NjcxN10sQT0xOTUwNzUsbT0wLHc9LTE7Oyl7aWYoKDB8bSk+PSgwfGspKXtNPTY7YnJlYWt9aWYoRD0oMHxUdFsxOTIyMTYrKG08PDEpPj4xXSktY3wwLGI9KDB8VHRbMTkzMjQwKyhtPDwxKT4+MV0pLXB8MCwoMHwoYj0oMHx2cihSPSgwfFR0''@;'; put 'put ''WzE5MjcyOCsobTw8MSk+PjFdKS1mfDAsUikpKygwfHZyKEQsRCkpKygwfHZyKGIsYikpfDApKTwoMHxBKSl7aWYoIWIpYnJlYWs7QT1iLHc9bX1tPW0rMXwwfXJldHVybiA2PT0oMHxNKSYmKGFbNDY3MTddPWsrMSwyNTY9PSgwfGspP209dzooVHRbMTkyMjE2KyhtPDwxKT4+MV09YyxUdFsx''@;'; put 'put ''OTI3MjgrKG08PDEpPj4xXT1mLFR0WzE5MzI0MCsobTw8MSk+PjFdPXAsYVtsPj4yXT0xKSksMHxtfWZ1bmN0aW9uIEdkKGwsYyl7bHw9MDt2YXIgcCxtLGY9MCxBPTAsdz0wO2lmKG09b2Usb2U9b2UrMzJ8MCxwPW0sMHwoY3w9MCkpe3N3aXRjaCgwfGFbNCsoMHxhW2wrMTY+PjJdKT4+Ml0p''@;'; put 'put ''e2Nhc2UgMTpjYXNlIDA6Zj0xMTE0OTQ7YnJlYWs7Y2FzZSAyOmY9MTExNDgxO2JyZWFrO2Nhc2UgMzpmPTExMTQ1MDticmVhaztkZWZhdWx0OmY9Njg4MTh9dz0rX1tjKzg+PjNdLEE9K19bYysxNj4+M10sX1twPj4zXT0rX1tjPj4zXSxfW3ArOD4+M109dyxfW3ArMTY+PjNdPUEsYVtwKzI0''@;'; put 'put ''Pj4yXT1mLFJyKGwsNjg4MjUscCl9b2U9bX1mdW5jdGlvbiBfNyhsKXt2YXIgbSx3LGIsayxjPTAsZj0wLHA9MCxBPTA7Zm9yKGs9b2Usb2U9b2UrMTZ8MCxiPWsrOHwwLHc9ayxjPTB8YVsxNjArKEE9MHxhWyhtPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSxOcyhsLCtfW0ErMTUyPj4zXSksVG4o''@;'; put 'put ''bCw2ODc5OSk7YyYmKEE9Yys0fDAscD0wfGFbYz4+Ml0pOylpZigwfFppKHAsMTExMDg4KSl7Zm9yKGY9cDtjPWYrMXwwLDB8dWVbZj4+MF07KWY9YztlOmZvcig7MHx1ZVtjPj4wXTspZm9yKGFbdz4+Ml09YyxScihsLDY4ODE0LHcpOzspe2lmKGY9YysxfDAsISgwfHVlW2M+PjBdKSl7Yz1m''@;'; put 'put ''O2NvbnRpbnVlIGV9Yz1mfTB8WmkocCwxMzQzMzUpfHwoX1sxNTIrKDB8YVttPj4yXSk+PjNdPTApLGFbYj4+Ml09cCxScihsLDk2NjcwLGIpLGM9QX1lbHNlIGM9QTtvZT1rfWZ1bmN0aW9uIEFJKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHcsYixrLE0sRCxSLEcscD0wLG09MCxBPTA7Rz1vZSxv''@;'; put 'put ''ZT1vZSs5NnwwLGI9Rys0OHwwLFI9Rys0MHwwLE09RyszMnwwLEQ9RysyNHwwLHc9RysxNnwwLG09Rys4fDAscD1HLGs9MHxhWzE2KyhsfD0wKT4+Ml0sVG4obCw3MzQyOSk7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDI6YVtwPj4yXT1mLFJyKGwsNzM0MzcscCk7YnJlYWs7Y2FzZSAzOmFbbT4+''@;'; put 'put ''Ml09ZixScihsLDczNDQ4LG0pO2JyZWFrO2Nhc2UgMDpUbihsLDEzNTcwOSk7YnJlYWs7ZGVmYXVsdDptPWM9ays1NnwwLEE9KHA9YikrNDB8MDtkb3thW3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0rNHwwfXdoaWxlKCgwfHApPCgwfEEpKTtpZihrNShsLGIpLDE9PSgwfGFbays4OD4+Ml0p''@;'; put 'put ''KXtzd2l0Y2goKGM9MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0KXtjYXNlLTE6Y2FzZSAwOmJyZWFrIGV9X1t3Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygyNTUmYyksUnIobCw3MzQ1OSx3KX19fXdoaWxlKDApO1RuKGwsNzM0NzgpLG09Zj1rKzE2fDAsQT0ocD1iKSs0MHwwO2Rve2FbcD4+Ml09''@;'; put 'put ''YVttPj4yXSxwPXArNHwwLG09bSs0fDB9d2hpbGUoKDB8cCk8KDB8QSkpO3N3aXRjaChrNShsLGIpLDEhPStfWyhjPWsrMTUyfDApPj4zXSYmKFRuKGwsNzM0ODkpLE5zKGwsK19bYz4+M10pKSwwfGFbaysxNDQ+PjJdKXtjYXNlIDE6YVtEPj4yXT03MzUyOSxScihsLDczNTA2LEQpO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjphW00+PjJdPTczNTMzLFJyKGwsNzM1MDYsTSl9ZTpkb3tpZigxPT0oMHxhW2srNDg+PjJdKSl7c3dpdGNoKChjPTB8dWVbZiszPj4wXSk8PDI0Pj4yNCl7Y2FzZS0xOmNhc2UgMDpicmVhayBlfV9bUj4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMjU1JmMpLFJyKGwsNzM1Mzcs''@;'; put 'put ''Uil9fXdoaWxlKDApO1RuKGwsOTg3NDQpLG9lPUd9ZnVuY3Rpb24gazUobCxjKXtsfD0wLGN8PTA7dmFyIGYscCxtPTAsQT0wO3A9b2Usb2U9b2UrMTZ8MCxmPXA7ZTpkb3tzd2l0Y2goMHxhW2MrMzI+PjJdKXtjYXNlIDU6VG4obCwwfGFbYz4+Ml0pO2JyZWFrO2Nhc2UgMTppZigwfHVlW2Mr''@;'; put 'put ''Mz4+MF0pe0E9MHxidFtjKzE+PjBdLG09MHxidFtjKzI+PjBdLGFbZj4+Ml09YnRbYz4+MF0sYVtmKzQ+PjJdPUEsYVtmKzg+PjJdPW0sUnIobCw3NTcxNCxmKTticmVhayBlfVRuKGwsMTM3Mzc5KTticmVhayBlO2RlZmF1bHQ6QnIoMTM4Mzk0LDczNTU4LDExNyw3MzU3OCl9fXdoaWxlKDAp''@;'; put 'put ''O29lPXB9ZnVuY3Rpb24gdFkobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBiLGssTSxELFIsRyxwZSxwPTAsbT0wLEE9MCx3PTAsSz0wO3BlPW9lLG9lPW9lKzExMnwwLE09cGUrNjR8MCxHPXBlKzU2fDAsaz1wZSs0OHwwLGI9cGUrNDB8MCxtPXBlKzMyfDAsdz1wZSxhWzQ2NzIyXT0xKyhS''@;'; put 'put ''PTB8YVs0NjcyMl0pLHA9LjAxNzQ1MzI5MjUxOTk0MzI5NSorKDB8YVsxMzYrKEQ9MHxhW2wrMTY+PjJdKT4+Ml0pLGFbdz4+Ml09MCxhW3crND4+Ml09MCxhW3crOD4+Ml09MCxhW3crMTI+PjJdPTAsYVt3KzE2Pj4yXT0wLGFbdysyMD4+Ml09MCxhW3crMjQ+PjJdPTAsYVt3KzI4Pj4yXT0w''@;'; put 'put ''LGNWKGMsdyxmLHAsMCksYVtNPj4yXT1SLFJyKGwsNzM4MzEsTSksVG4obCw3Mzg5NiksTnMobCwrX1t3Pj4zXSksVG4obCw3MzkwMSksTnMobCwrX1t3Kzg+PjNdKSxUbihsLDczOTA4KSxOcyhsLCtfW3crMTY+PjNdKSxUbihsLDczOTE1KSxOcyhsLCtfW3crMjQ+PjNdKSxUbihsLDczOTIy''@;'; put 'put ''KSwocD0rV25bKHc9RCsxNDB8MCk+PjJdKT4wPyhfW20+PjNdPXArLS4wMDEsUnIobCw3MzkyNyxtKSk6VG4obCw3MzcwMyksbT1jPUQrNTZ8MCxBPShmPU0pKzQwfDA7ZG97YVtmPj4yXT1hW20+PjJdLGY9Zis0fDAsbT1tKzR8MH13aGlsZSgoMHxmKTwoMHxBKSk7azUobCxNKSxUbihsLDcz''@;'; put 'put ''NzM5KTtlOmRve2lmKDE9PSgwfGFbRCs4OD4+Ml0pKXtzd2l0Y2goKGM9MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0KXtjYXNlLTE6Y2FzZSAwOks9NzticmVhayBlfV9bYj4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMjU1JmMpLFJyKGwsOTk2MTIsYil9ZWxzZSBLPTd9d2hpbGUoMCk7Nz09KDB8''@;'; put 'put ''SykmJlRuKGwsNzM3NTQpLFRuKGwsNzM3NTcpLChwPStXblt3Pj4yXSk+MD8oX1trPj4zXT1wLFJyKGwsNzM5MjcsaykpOlRuKGwsNzM3NjMpLG09Yz1EKzk2fDAsQT0oZj1NKSs0MHwwO2Rve2FbZj4+Ml09YVttPj4yXSxmPWYrNHwwLG09bSs0fDB9d2hpbGUoKDB8Zik8KDB8QSkpO2s1KGws''@;'; put 'put ''TSksVG4obCw3MzczOSk7ZTpkb3tpZigxPT0oMHxhW0QrMTI4Pj4yXSkpe3N3aXRjaCgoYz0wfHVlW2MrMz4+MF0pPDwyND4+MjQpe2Nhc2UtMTpjYXNlIDA6Sz0xNDticmVhayBlfV9bRz4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMjU1JmMpLFJyKGwsOTk2MTIsRyl9ZWxzZSBLPTE0fXdo''@;'; put 'put ''aWxlKDApO3JldHVybiAxND09KDB8SykmJlRuKGwsNzM3NTQpLFRuKGwsNzM5NjcpLG9lPXBlLDB8Un1mdW5jdGlvbiBuWShsKXtsfD0wO3ZhciBmLHcsYixrLE0sRCxHLEssYz0wLHA9MCxtPTAsQT0wLFI9MDtHPW9lLG9lPW9lKzY0fDAsYj1HKzE2fDAsRD1HKzh8MCx3PUcsYVs0NjcyMV09''@;'; put 'put ''MSsoTT0wfGFbNDY3MjFdKSxmPUs9LjAxNzQ1MzI5MjUxOTk0MzI5NSorKDB8YVsxMzYrKGs9MHxhW2wrMTY+PjJdKT4+Ml0pLDA9PUs/KHA9NTAsYz01MCk6KHA9fn4oNTAqKCtsYSgrZikrMSkpLGM9fn4oNTAqKDEtK0lhKCtmKSkpKSxhW2I+PjJdPU0sYVtiKzQ+PjJdPXAsYVtiKzg+PjJd''@;'; put 'put ''PWMsUnIobCw3MzYxOSxiKSxUbihsLDczNzAzKSxtPWM9ays1NnwwLEE9KHA9YikrNDB8MDtkb3thW3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0rNHwwfXdoaWxlKCgwfHApPCgwfEEpKTtrNShsLGIpLFRuKGwsNzM3MzkpO2U6ZG97aWYoMT09KDB8YVtrKzg4Pj4yXSkpe3N3aXRjaCgoYz0w''@;'; put 'put ''fHVlW2MrMz4+MF0pPDwyND4+MjQpe2Nhc2UtMTpjYXNlIDA6Uj02O2JyZWFrIGV9X1t3Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygyNTUmYyksUnIobCw5OTYxMix3KX1lbHNlIFI9Nn13aGlsZSgwKTs2PT0oMHxSKSYmVG4obCw3Mzc1NCksVG4obCw3Mzc1NyksVG4obCw3Mzc2MyksbT1j''@;'; put 'put ''PWsrOTZ8MCxBPShwPWIpKzQwfDA7ZG97YVtwPj4yXT1hW20+PjJdLHA9cCs0fDAsbT1tKzR8MH13aGlsZSgoMHxwKTwoMHxBKSk7azUobCxiKSxUbihsLDczNzM5KTtlOmRve2lmKDE9PSgwfGFbaysxMjg+PjJdKSl7c3dpdGNoKChjPTB8dWVbYyszPj4wXSk8PDI0Pj4yNCl7Y2FzZS0xOmNh''@;'; put 'put ''c2UgMDpSPTEwO2JyZWFrIGV9X1tEPj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygyNTUmYyksUnIobCw5OTYxMixEKX1lbHNlIFI9MTB9d2hpbGUoMCk7cmV0dXJuIDEwPT0oMHxSKSYmVG4obCw3Mzc1NCksVG4obCw3Mzc5OSksb2U9RywwfE19ZnVuY3Rpb24geUkobCxjLGYscCxtKXt2YXIg''@;'; put 'put ''QSx3LGI7Y3w9MCxmfD0wLHB8PTAsbXw9MCxiPW9lLG9lPW9lKzE2fDAsdz1iKzh8MCxBPWIsVG4obHw9MCw3NDU4NyksVG4obCwwfFgxKGMpKSwwfGYmJihhW0E+PjJdPTB8WDEoZiksUnIobCw3NDU5NSxBKSksYVt3Pj4yXT1wLFJyKGwsNzQ1OTksdyksMHwoYz0wfExpKG0sNzQ2MTEpKSYm''@;'; put 'put ''MHx1ZVtjPj4wXSYmKFRuKGwsMTAyNjA0KSxUbihsLDB8WDEoYykpKSxUbihsLDk4NzQ0KSxvZT1ifWZ1bmN0aW9uIEZDKGwpe3JldHVybiAwfGx9ZnVuY3Rpb24gd0kobCl7VG4obHw9MCwwfHVlW2wrMTQ0Pj4wXT8wfGFbbCsxNDg+PjJdOjc1MjYzKX1mdW5jdGlvbiBDNyhsLGMpe2x8PTAs''@;'; put 'put ''Y3w9MDt2YXIgZixwLG09MCxBPTA7cD1vZSxvZT1vZSsxNnwwLGY9cDtlOmRve3N3aXRjaCgwfGFbYyszMj4+Ml0pe2Nhc2UgNTpUbihsLDB8YVtjPj4yXSk7YnJlYWs7Y2FzZSAxOmlmKDB8dWVbYyszPj4wXSl7QT0wfGJ0W2MrMT4+MF0sbT0wfGJ0W2MrMj4+MF0sYVtmPj4yXT1idFtjPj4w''@;'; put 'put ''XSxhW2YrND4+Ml09QSxhW2YrOD4+Ml09bSxScihsLDc1NzE0LGYpO2JyZWFrIGV9VG4obCw5NzMwOSk7YnJlYWsgZTtkZWZhdWx0OkJyKDEzODM5NCw3NTE4MSw0OSw3NTI0NSl9fXdoaWxlKDApO29lPXB9ZnVuY3Rpb24gaXkobCl7dmFyIEEsdyxjPTAsZj0wLHA9MCxtPTA7c3dpdGNoKHc9''@;'; put 'put ''b2Usb2U9b2UrMTZ8MCxBPXcsMHxhWzEyKyhtPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0pe2Nhc2UgODpjPTEsZj0xMTE0ODEscD1tKzh8MDticmVhaztjYXNlIDEwOmM9MCxmPTExMTQ4MSxwPW0rOHwwO2JyZWFrO2Nhc2UgMzpjYXNlIDI6Y2FzZSA5OmM9MSxmPTExMTQ1MCxwPW0rOHwwO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgNzpjYXNlIDY6Y2FzZSAxMTpjPTAsZj0xMTE0NTAscD1tKzh8MDticmVhaztjYXNlIDA6Y2FzZSAxOmM9MSxmPTExMTQ5NCxwPW0rOHwwO2JyZWFrO2Nhc2UgNDpjPTAsZj03NTIxNyxwPW0rOHwwO2JyZWFrO2Nhc2UgNTpjPTAsZj0xMTE0OTQscD1tKzh8MDticmVhaztkZWZh''@;'; put 'put ''dWx0OkJyKDEzODM5NCw3NTE4MSwxMDYsNzUyMDApfW09MHxhWzgrKDB8YVtwPj4yXSk+PjJdLGFbQT4+Ml09YyxhW0ErND4+Ml09ZixhW0ErOD4+Ml09bSxScihsLDc1MjI5LEEpLG9lPXd9ZnVuY3Rpb24gTTUobCl7bHw9MDt2YXIgcGUsbWUsT2UsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLGJlPTA7T2U9b2Usb2U9b2UrMTZ8MCxmPU9lLChjPTB8YVs0NjcyNF0pfHwoYVs0NjcyNV09NjQsYz0wfFFuKDY0KSxhWzQ2NzI0XT1jKSxtZT1mKzE1fDAscGU9ZisxNHwwLG09MCxLPTAsUj0wLGY9MCxwPTA7ZTpmb3IoOzspe0Q9MCE9KDB8''@;'; put 'put ''Uiksaz1tLEc9bCxiPWY7dDpmb3IoOzspe2lmKCFHKXtiZT0zMjticmVhayBlfWlmKCEoKGY9MHx1ZVtHPj4wXSk8PDI0Pj4yNCkpe2JlPTMyO2JyZWFrIGV9c3dpdGNoKCgwfEspPigobD0wfGFbNDY3MjVdKS04fDApJiYoYVs0NjcyNV09Yz1sPDwxLGM9MHxsMCgwfGFbNDY3MjRdLGMpLGFb''@;'; put 'put ''NDY3MjRdPWMsYz1jK0t8MCxmPTB8dWVbRz4+MF0pLGY8PDI0Pj4yNCl7Y2FzZSA2MDpmPTQsbD0xMDIxNTMsYmU9MjY7YnJlYWsgdDtjYXNlIDYyOmY9NCxsPTEwMjEzNixiZT0yNzticmVhayB0O2Nhc2UgMzg6YmU9MTA7YnJlYWsgdDtjYXNlIDQ1OmY9NSxsPTEwMjE0Nyx3PWI7YnJlYWsg''@;'; put 'put ''dH1pZihEJmY8PDI0Pj4yND09MzIpe2JlPTEyO2JyZWFrfXN3aXRjaChmPDwyND4+MjQpe2Nhc2UgMzQ6Zj02LGw9MTAyMTE2LGJlPTI2O2JyZWFrIHQ7Y2FzZSAzOTpmPTUsbD0xMDIxNDEsYmU9Mjc7YnJlYWsgdH1pZighKGY8PDI0Pj4yNDwwKSl7Zj0xLGw9RyxiZT0yNjticmVha31mb3Io''@;'; put 'put ''dz0xMjcsbD0wOyEoKG09MjU1JncpPj4+MD49KEE9MjU1JmYpPj4+MCk7KWY9dyZBJjI1NSx3PW0+Pj4xLGw9bCsxfDA7aWYoKDB8bCk8PTEpe2lmKG09MHxIbCgwfChtPTB8Y3MoMHxiLDB8cCw2KSksMHxPbiwyNTUmZnwwLDApLHA9T24sTT1rKy0xfDAsISgoMHxrKT4xKSl7YmU9MjE7YnJl''@;'; put 'put ''YWt9bD1NLGY9bX1lbHNlIGw9bCstMXwwLGYmPTI1NSxwPTA7az1sLEc9RysxfDAsYj1mfWlmKDEwPT0oMHxiZSkpYmU9MCxmPShsPTA9PSgwfHR2ZShHKSkpPzU6MSxsPWw/MTAyMTMwOkcsdz1iO2Vsc2UgaWYoMTI9PSgwfGJlKSliZT0wLGY9KGw9MzI9PSgwfHVlW1I+PjBdKSk/NjoxLGw9''@;'; put 'put ''bD8xMDIxMjM6Ryx3PWI7ZWxzZSBpZigyMT09KDB8YmUpKXtmb3IoYmU9MCx1ZVttZT4+MF09NTksZj0zLEE9cGUsdz1tLGI9cDs7KXtpZihsPTB8dlMoMHx3LDB8YiwxMCwwKSxtPUErLTF8MCx1ZVtBPj4wXT00OHxsLGw9dyx3PTB8ZHcoMHx3LDB8YiwxMCwwKSxwPWIsYj1PbixSPWYsZj1m''@;'; put 'put ''KzF8MCwoMHxSKT4xMSl7YmU9MjM7YnJlYWsgZX1pZighKHA+Pj4wPjB8MD09KDB8cCkmbD4+PjA+OSkpYnJlYWs7QT1tfWw9QSstMnwwLHVlW20+PjBdPTM1LHVlW2w+PjBdPTM4LGs9TSxwPWJ9ZWxzZSgyNj09KDB8YmUpfHwyNz09KDB8YmUpKSYmKGJlPTAsdz1iKTtmb3IoQT1jK2Z8MCxt''@;'; put 'put ''PWY7bTspdWVbYz4+MF09MHx1ZVtsPj4wXSxtPW0rLTF8MCxsPWwrMXwwLGM9YysxfDA7bT1rLGw9RysxfDAsSz1mK0t8MCxSPUcsYz1BLGY9d31pZigyMz09KDB8YmUpKUN1KDc1NDY0LDQ2LDEsMHxhWzE1NzEyXSksdXUoMSk7ZWxzZSBpZigzMj09KDB8YmUpKXJldHVybiB1ZVtjPj4wXT0w''@;'; put 'put ''LG9lPU9lLDB8YVs0NjcyNF07cmV0dXJuIDB9ZnVuY3Rpb24gdHZlKGwpe3ZhciBjPTAsZj0wO2M9MHx1ZVsoZj0xKyhsfD0wKXwwKT4+MF07ZTpkb3tpZihjPDwyND4+MjQ9PTM1KXtzd2l0Y2goKGM9MHx1ZVsoZj1sKzJ8MCk+PjBdKTw8MjQ+PjI0KXtjYXNlIDg4OmNhc2UgMTIwOmJyZWFr''@;'; put 'put ''O2RlZmF1bHQ6Zm9yKGw9Zjs7KXtpZihmPWwrMXwwLChjKy00OCYyNTUpPj0xMClicmVhayBlO2w9ZixjPTB8dWVbZj4+MF19fWZvcihmPWwrM3wwOzspe2lmKCgoYz0wfHVlW2Y+PjBdKS00OCYyNTUpPj0xMClzd2l0Y2goYzw8MjQ+PjI0KXtjYXNlIDY1OmNhc2UgNjY6Y2FzZSA2NzpjYXNl''@;'; put 'put ''IDY4OmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDk3OmNhc2UgOTg6Y2FzZSA5OTpjYXNlIDEwMDpjYXNlIDEwMTpjYXNlIDEwMjpicmVhaztkZWZhdWx0OmJyZWFrIGV9Zj1mKzF8MH19ZWxzZSBmb3IoOzspe2lmKGw9ZisxfDAsKCgtMzMmYyktNjUmMjU1KT49MjYpYnJlYWsgZTtmPWwsYz0wfHVl''@;'; put 'put ''W2w+PjBdfX13aGlsZSgwKTtyZXR1cm4gYzw8MjQ+PjI0PT01OXwwfWZ1bmN0aW9uIGJJKGwpe3ZhciBjLGYsQSx3LGIsayxwPTAsbT0wO2s9b2Usb2U9b2UrNDh8MCxmPWsrOHwwLGI9ayx3PTB8YVsxNisobHw9MCk+PjJdLFRuKGwsNzU2MzkpLG09dysxNnwwLEE9KHA9ZikrNDB8MDtkb3th''@;'; put 'put ''W3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0rNHwwfXdoaWxlKCgwfHApPCgwfEEpKTtzd2l0Y2goS2llKGwsZiksMSE9KGM9K19bdysxNTI+PjNdKSYmKF9bYj4+M109YyxScihsLDc1NjU3LGIpKSwwfGFbdysxNDQ+PjJdKXtjYXNlIDE6VG4obCw3NTY3NCk7YnJlYWs7Y2FzZSAyOlRuKGws''@;'; put 'put ''NzU2OTIpfVRuKGwsNzU3MDkpLG9lPWt9ZnVuY3Rpb24gS2llKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsbT0wLEE9MDtwPW9lLG9lPW9lKzE2fDAsZj1wO2U6ZG97c3dpdGNoKDB8YVtjKzMyPj4yXSl7Y2FzZSA1OlRuKGwsMHxhW2M+PjJdKTticmVhaztjYXNlIDE6aWYoMHx1ZVtjKzM+PjBd''@;'; put 'put ''KXtBPTB8YnRbYysxPj4wXSxtPTB8YnRbYysyPj4wXSxhW2Y+PjJdPWJ0W2M+PjBdLGFbZis0Pj4yXT1BLGFbZis4Pj4yXT1tLFJyKGwsNzU3MTQsZik7YnJlYWsgZX1UbihsLDEzNTcwOSk7YnJlYWsgZTtkZWZhdWx0OkJyKDEzODM5NCw3NTcyOCw5NCw3NTc0OCl9fXdoaWxlKDApO29lPXB9''@;'; put 'put ''ZnVuY3Rpb24gZlkobCxjKXtsfD0wO3ZhciBtLEEsZj0wLHA9MDtpZihBPW9lLG9lPW9lKzQ4fDAsbT1BLGN8PTApe2Y9MHxhW2wrMTY+PjJdLFRuKGwsNzU4MzcpLGY9Zis1NnwwLHA9KGM9bSkrNDB8MDtkb3thW2M+PjJdPWFbZj4+Ml0sYz1jKzR8MCxmPWYrNHwwfXdoaWxlKCgwfGMpPCgw''@;'; put 'put ''fHApKTtLaWUobCxtKSxUbihsLDc1ODY0KX1lbHNlIFRuKGwsNzU4NjcpO29lPUF9ZnVuY3Rpb24ga2EobCxjLGYpe3ZhciBwLG0sQSx3LGI7bHw9MCxjfD0wLGI9b2Usb2U9b2UrMTA1NnwwLHc9YixwPWIrMjR8MCxhWyhtPWIrOHwwKT4+Ml09Znw9MCxBPTB8SUwocCwxMDI0LGMsbSk7ZG97''@;'; put 'put ''aWYoKDB8QSk+PTApe2lmKCgwfEEpPjEwMjMpe2w9MHxSMChBKzF8MCksYVttPj4yXT1mLG5aKGwsYyxtKTticmVha31sPTB8bmEocCk7YnJlYWt9bD0wfGFbMTYrKDB8YVtsKzEyPj4yXSk+PjJdLGFbdz4+Ml09MHxNTCgwfGFbNDc2NDNdKSx4Mls2MyZsXSg3ODY4Nyx3KSxsPTB8bmEoMTk1''@;'; put 'put ''MDU5KX13aGlsZSgwKTtyZXR1cm4gb2U9YiwwfGx9ZnVuY3Rpb24gb3kobCxjLGYpe2x8PTAsZj0rZjt2YXIgbSxBLHcsYixrLEQsRyxwPTAsTT0wLFI9MCxLPTAscGU9MDtHPW9lLG9lPW9lKzExMnwwLEQ9RysxMDR8MCx3PUcrOTZ8MCxBPUcrNjR8MCxNPUcrNDh8MCxSPUcrMzJ8MCxrPUcr''@;'; put 'put ''MTZ8MCxiPUcsbT0wfGFbMzIrKGN8PTApPj4yXTtlOmRve3N3aXRjaCgwfG0pe2Nhc2UgNTppZighKDB8WmkocD0wfGFbYz4+Ml0sMTM2MzAyKSkpe2FbYj4+Ml09Nzg1MjQsX1tiKzg+PjNdPWYscD0wfGthKGwsNzg1MDcsYik7YnJlYWsgZX1pZighKDB8WmkocCwxMzM0MzIpKSl7YVtrPj4y''@;'; put 'put ''XT03ODUyOCxfW2srOD4+M109ZixwPTB8a2EobCw3ODUwNyxrKTticmVhayBlfWlmKDB8WmkocCwxMzE0MzEpKXthW00+PjJdPXAsX1tNKzg+PjNdPWYscD0wfGthKGwsNzg1MDcsTSk7YnJlYWsgZX1hW1I+PjJdPTc4NTM0LF9bUis4Pj4zXT1mLHA9MHxrYShsLDc4NTA3LFIpO2JyZWFrIGU7''@;'; put 'put ''Y2FzZSAxOnBlPS4wMDM5MDYyNSorKDB8YnRbYysxPj4wXSksSz0uMDAzOTA2MjUqKygwfGJ0W2MrMj4+MF0pLF9bQT4+M109LjAwMzkwNjI1KisoMHxidFtjPj4wXSksX1tBKzg+PjNdPXBlLF9bQSsxNj4+M109SyxfW0ErMjQ+PjNdPWYscD0wfGthKGwsNzg1MzksQSk7YnJlYWs7ZGVmYXVs''@;'; put 'put ''dDpSPTB8YVsxNTcxMl0sTT0wfGFbYz4+Ml0sYVt3Pj4yXT1tLGFbdys0Pj4yXT1NLFQwKFIsNzg1NzgsdyksQnIoMTM4Mzk0LDc4NjI4LDQzNiw3ODY0OCl9fXdoaWxlKDApO3JldHVybiBhW0Q+PjJdPXAsUj0wfGthKGwsNzg2NjUsRCksSHQocCksb2U9RywwfFJ9ZnVuY3Rpb24gdUgobCxj''@;'; put 'put ''LGYpe2N8PTAsZnw9MDt2YXIgcD0wO3N3aXRjaCgwfGFbMTQ0KyhsfD0wKT4+Ml0pe2Nhc2UgMTpwPTEwLGw9MTticmVhaztjYXNlIDI6cD0xMCxsPTI7YnJlYWs7ZGVmYXVsdDpwPTAsbD0wfWFbYz4+Ml09bCxfW2Y+PjNdPXB9ZnVuY3Rpb24gRTUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAs''@;'; put 'put ''cHw9MDt2YXIgQSx3LGIsbT0wLGs9MCxNPTA7Zm9yKGI9b2Usb2U9b2UrMTZ8MCx3PWIrOHwwLEE9YixtPTA7ISgoMHxtKT49KDB8ZikpOylrPStfW2MrKG08PDQpKzg+PjNdLGFbQT4+Ml09fn4oKE09K19bYysobTw8NCk+PjNdKSsoTT49MD8uNTotLjUpKSxhW0ErND4+Ml09fn4oaysoaz49''@;'; put 'put ''MD8uNTotLjUpKSxScihsLDgxMDk5LEEpLG09bSsxfDA7MHxwJiYoTT0rX1tjKzg+PjNdLGFbdz4+Ml09fn4oKGs9K19bYz4+M10pKyhrPj0wPy41Oi0uNSkpLGFbdys0Pj4yXT1+fihNKyhNPj0wPy41Oi0uNSkpLFJyKGwsODEwOTksdykpLFRuKGwsMTUzNTk5KSxvZT1ifWZ1bmN0aW9uIEV2''@;'; put 'put ''ZShsKXtsfD0wO3ZhciBwLEEsYz0wLGY9MDtBPW9lLG9lPW9lKzE2fDAscD1BO2U6Zm9yKDs7KXtmb3IoYz0xNTgyODtmPTB8YVtjKzQ+PjJdOyl7aWYoISgwfFppKGYsbCkpKWJyZWFrIGU7Yz1jKzh8MH1pZihhW3A+PjJdPTgxMjU1LGFbcCs0Pj4yXT1sLFhyKDEsODEyMjkscCksIShjPTB8''@;'; put 'put ''RCQobCw0NSkpKXtjPTgxMjcyO2JyZWFrfXVlW2M+PjBdPTB9cmV0dXJuIG9lPUEsMHxjfWZ1bmN0aW9uIHJpKCl7dmFyIGwsYztsPW9lLG9lPW9lKzE2fDAsYVsoYz1sKT4+Ml09ODEyNTUsYVtjKzQ+PjJdPTkxMjY5LFhyKDAsODM2MzQsYyksb2U9bH1mdW5jdGlvbiB0byhsKXt2YXIgYz0w''@;'; put 'put ''LGY9MDtmb3IoYz0wfEx0KGx8PTApO2M7KU92ZShjKSxjPTB8enQobCxjKTtmb3IoZj0wfEx0KGwpO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspcFkoYyksYz0wfGswKGwsYyk7Zj0wfHp0KGwsZil9fWZ1bmN0aW9uIE92ZShsKXt2YXIgYz0wLGY9MDtmMChsfD0wLDEzNzQ0NywzMDQsMSksVnko''@;'; put 'put ''bCksUTcobCwxJmFbMTE2KygwfGFbMTYrKDB8ZnIobCkpPj4yXSk+PjJdKSxhWzE3NisoMHxhWyhsPWwrMTZ8MCk+PjJdKT4+Ml09MCxjPTB8bXIoMjApLGFbMTcyKyhmPTB8YVtsPj4yXSk+PjJdPWMsYVtmKzE4ND4+Ml09MCxmPTB8bXIoMjApLGFbMTgwKyhjPTB8YVtsPj4yXSk+PjJdPWYs''@;'; put 'put ''YVtjKzIwMD4+Ml09MCxjPTB8bXIoMTIpLGFbMTk2KyhmPTB8YVtsPj4yXSk+PjJdPWMsYVtmKzE5Mj4+Ml09MCxmPTB8bXIoMTIpLGFbMTg4KyhjPTB8YVtsPj4yXSk+PjJdPWYsYVtjKzIwOD4+Ml09MCxjPTB8bXIoMTIpLGFbMjA0KyhsPTB8YVtsPj4yXSk+PjJdPWMsYVtsKzIxNj4+Ml09''@;'; put 'put ''MX1mdW5jdGlvbiBwWShsKXt2YXIgYyxmLHAsbT0wLEE9MDtmMChsfD0wLDEzNzQ2MCwxNzYsMSksWTcobCksbT0wfGVzKGwsMHxhWzQ3MTc0XSwxLDApLGFbMTU2KygwfGFbKHA9bCsxNnwwKT4+Ml0pPj4yXT1tLG09MHxBMigwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4y''@;'; put 'put ''XSwwfGFbNDcxNjhdLDE5NTA1OSksQT0wfEEyKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSwwfGFbNDcxNjhdLDE5NTA1OSksVHRbKGY9MTU0KyhjPTB8YVtwPj4yXSl8MCk+PjFdPTEsVHRbYysxNjg+PjFdPTEsKDB8bSk9PSgwfEEpJjAhPSgwfHVlW20+PjBdKSYm''@;'; put 'put ''KFR0W2Y+PjFdPTFlMyxhWyhBPWMrMTU2fDApPj4yXT0xMDAqKDB8YVtBPj4yXSkpLDB8SkgobCkmJihUdFsxNTQrKEE9MHxhW3A+PjJdKT4+MV09MCxhW0ErMTU2Pj4yXT0wKSxBPTI1NSYoMHxlcyhsLDB8YVs0NzE4N10sMCwwKSksdWVbMTUyKygwfGFbcD4+Ml0pPj4wXT1BLEE9NjU1MzUm''@;'; put 'put ''KDB8ZXMobCwwfGFbNDcxNzVdLDEsMCkpLFR0WzE3MCsoMHxhW3A+PjJdKT4+MV09QX1mdW5jdGlvbiBuMGUobCl7dmFyIGM9MCxmPTA7Zm9yKGZ1bmN0aW9uIGdZKGwpe2x8PTA7Zm9yKHZhciBjPTAsZj0wLHA9MCxtPTA7bDspbT0wfGFbMTY0KygwfGFbKHA9bCsxNnwwKT4+Ml0pPj4yXSxS''@;'; put 'put ''dmUobCksMT09KDB8dWVbMTU2KyhjPTB8YVtwPj4yXSk+PjBdKT8oKGY9MHxhW2MrMTgwPj4yXSkmJihIdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrMTcyPj4yXSkmJihIdChmKSxjPTB8YVtwPj4yXSksSHQoYyksSHQobCksbD1tKTpsPW19KDB8YVsxOTIrKDB8YVsxNisobHw9MCk+PjJd''@;'; put 'put ''KT4+Ml0pLGY9MHxMdChsKTtmOyl7Zm9yKGM9MHx5MChsLGYpO2M7KVc1KGMpLGM9MHxrMChsLGMpO21ZKGYpLGY9MHx6dChsLGYpfXZZKGwpfWZ1bmN0aW9uIG1ZKGwpe3ZhciBwLGM9MCxmPTA7KGY9MHxhWzE3MisoYz0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSk+PjJdKSYmKEh0KGYpLGM9''@;'; put 'put ''MHxhW3A+PjJdKSwoZj0wfGFbYysxODA+PjJdKSYmKEh0KGYpLGM9MHxhW3A+PjJdKSwoZj0wfGFbYysxODg+PjJdKSYmKEh0KGYpLGM9MHxhW3A+PjJdKSwoZj0wfGFbYysxOTY+PjJdKSYmKEh0KGYpLGM9MHxhW3A+PjJdKSwoZj0wfGFbYysyMDQ+PjJdKSYmKEh0KGYpLGM9MHxhW3A+PjJd''@;'; put 'put ''KSxWdSgwfGFbYysxMDQ+PjJdKSxWdSgwfGFbMTA4KygwfGFbcD4+Ml0pPj4yXSksMHwoYz0wfGFbOCsoMHxhW3A+PjJdKT4+Ml0pJiZub1sxMjcmYVs0KygwfGFbYys0Pj4yXSk+PjJdXShsKSxDYShsLDEzNzQ0Nyl9ZnVuY3Rpb24gdlkobCl7dmFyIGM9MCxmPTAscD0wO2ZvcihjPTB8d3Mo''@;'; put 'put ''bHw9MCk7YzspdlkoYyksYz0wfGJzKGMpO2lmKDB8ZjAobCwxMzc0ODMsMCwxKSl7KGY9MHxhWzE4NCsoYz0wfGFbKHA9bCsxNnwwKT4+Ml0pPj4yXSkmJihIdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrMjY4Pj4yXSkmJihIdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrMjE2Pj4yXSkm''@;'; put 'put ''JihIdChmKSxjPTB8YVtwPj4yXSk7ZG97aWYoMHxhW2MrMTk2Pj4yXSl7Zm9yKGY9MHxUdFtjKzIzNj4+MV07ISgoMHxmKT4oMHxUdFtjKzIzOD4+MV0pKTspSHQoMHxhWygwfGFbYysxOTY+PjJdKSsoZjw8NikrMTI+PjJdKSxmPWYrMXwwLGM9MHxhW3A+PjJdO2lmKGY9MHxhW2MrMTk2Pj4y''@;'; put 'put ''XSwtMT09KDB8VHRbYysyMzY+PjFdKSl7SHQoZistNjR8MCk7YnJlYWt9SHQoZik7YnJlYWt9fXdoaWxlKDApOygwfGhpKGwpKSE9KDB8bCkmJihWdSgwfGFbMTIrKDB8YVtwPj4yXSk+PjJdKSxDYShsLDEzNzQ4MykpfX1mdW5jdGlvbiBSdmUobCl7dmFyIHAsYz0wLGY9MDtmb3IoYz0wfGFb''@;'; put 'put ''MTc2KyhmPTB8YVsocD0xNisobHw9MCl8MCk+PjJdKT4+Ml07bD1jKy0xfDAsISgoMHxjKTw9MCk7KVVkKGM9MHxhWygwfGFbZisxNzI+PjJdKSsobDw8Mik+PjJdKSxIdCgwfGFbYysxNj4+Ml0pLEh0KGMpLGM9bCxmPTB8YVtwPj4yXTtmb3IoYz0wfGFbZisxODQ+PjJdO2w9YystMXwwLCEo''@;'; put 'put ''KDB8Yyk8PTApOylVZChjPTB8YVsoMHxhWzE4MCsoMHxhW3A+PjJdKT4+Ml0pKyhsPDwyKT4+Ml0pLEh0KDB8YVtjKzE2Pj4yXSksSHQoYyksYz1sfWZ1bmN0aW9uIGZIKGwpe3ZhciBwLG0sQSxiLGssTSxjPTAsZj0wLHc9MCxEPTA7Zm9yKE09b2Usb2U9b2UrNDh8MCxrPU0rNDB8MCxmPU0s''@;'; put 'put ''dz0wfGVzKGx8PTAsMHxzaShsLDAsODUxMDIsMCksLTEsMSksWGQobCwxMCksYz0wfGZ1bmN0aW9uIEdJKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsbSxBO3JldHVybiBBPW9lLG9lPW9lKzMyfDAsbT1BKzE2fDAscD1BKzh8MCxhWyhmPUErMjB8MCk+PjJdPTUsMHwobD0wfExpKGwsOTk2MDUp''@;'; put 'put ''KSYmKGFbcD4+Ml09QSxhW3ArND4+Ml09ZiwoMHwkYShsLDg3NDk3LHApKT49MSkmJlhyKDAsODc1MDQsbSksYVtjKzI0Pj4yXT0wLGFbYyszMj4+Ml09MCxvZT1BLDB9KGwsZiksbzBlKGwsbCksdG8obCkscD0xPT0oMHx3KSxtPWYrMzJ8MCxBPTI9PSgwfHcpLHc9Mz09KDB8dyksYj1mKzI4''@;'; put 'put ''fDAsZj1mKzI0fDA7Oyl7aWYoYVUobCxjKSxwKXtjPTM7YnJlYWt9aWYoMHxhW20+PjJdJiYoWHIoMCw4NTEwOCxrKSxhW2Y+PjJdPTAsYz0wKSxQWShsLDAhPSgwfGMpJjEpLEEpe2M9NzticmVha31pZihYWShsLGMpLHcpe2M9OTticmVha31pZihhW2I+PjJdPUQ9KDB8YVtiPj4yXSktMXww''@;'; put 'put ''LCEoMCE9KDB8RCkmMCE9KDB8YVtmPj4yXSkpKXtjPTExO2JyZWFrfX0zPT0oMHxjKT9BWShsLDEpOjc9PSgwfGMpfHw5PT0oMHxjKT9BWShsLDIpOjExPT0oMHxjKSYmKDE2JlR0WzEzNisoMHxhW2wrMTY+PjJdKT4+MV0mJmZ1bmN0aW9uIE52ZShsKXt2YXIgZixjPTAscD0wO2lmKDB8KGY9''@;'; put 'put ''MHx5cyhsfD0wLDg2Njc1LDApKSl7Zm9yKGM9MHxMdChmKTtjOylwPTB8enQoZixjKSxENShsLGMpLFZ2ZShsLGMpLG1ZKGMpLGFpKGwsYyksYz1wO3A3KGwsZil9fShsKSxENyhsKSxmdW5jdGlvbiBqdmUobCl7SEMobHw9MCwxKX0obCksKDB8cjEoMHxMaShsLDg1MTk5KSkpPDwyND4+MjQm''@;'; put 'put ''JmZ1bmN0aW9uIGhvZShsKXt2YXIgcCxjPTAsZj0wO2ZvcihwPTB8aUoobHw9MCksZj0wfEx0KGwpO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspZG9lKGMscCksYz0wfGswKGwsYyk7Zj0wfHp0KGwsZil9aXMocCl9KGwpKSxvZT1NfWZ1bmN0aW9uIFB2ZShsLGMpe3ZhciBmLHA7Y3w9MCxmMChs''@;'; put 'put ''fD0wLDEzNzQ4MywyODAsMSksZj0wfG1yKDk2KSxhWzgrKGw9MHxhW2wrMTY+PjJdKT4+Ml09ZixfW2Y+PjNdPStfWyhwPTB8YVs4KyhjPTB8YVtjKzE2Pj4yXSk+PjJdKT4+M10sX1tmKzI0Pj4zXT0rX1twKzI0Pj4zXSxhW2wrMTQ0Pj4yXT1hW2MrMTQ0Pj4yXSx1ZVtsKzExNT4+MF09MHx1''@;'; put 'put ''ZVtjKzExNT4+MF0sYVtsKzExNj4+Ml09YVtjKzExNj4+Ml0sYVtsKzI0OD4+Ml09YVtjKzI0OD4+Ml0sYVtsKzI1Mj4+Ml09YVtjKzI1Mj4+Ml0sYVtsKzI0ND4+Ml09YVtjKzI0ND4+Ml19ZnVuY3Rpb24gRnZlKGwpe3ZhciBjPTAsZj0wLHA9MDtmb3IoYz0wfG1yKCgwfE5vKGx8PTApKTw8''@;'; put 'put ''NCksZj0wfEx0KGwpO2Y7KWFbMTMyKyhwPTB8YVtmKzE2Pj4yXSk+PjJdPWMsX1tjPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW3ArMTY+PjNdLF9bYys4Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW3ArMjQ+PjNdLGM9YysxNnwwLGY9MHx6dChsLGYpfWZ1bmN0aW9uIEh2ZShsKXt2''@;'; put 'put ''YXIgcCxjPTAsZj0wLG09MDtmb3IoYz1wPTB8YVsxMzIrKDB8YVsxNisoMHxMdChsfD0wKSk+PjJdKT4+Ml0sZj0wfEx0KGwpO2Y7KWFbMTMyKyhtPTB8YVtmKzE2Pj4yXSk+PjJdPTAsX1ttKzE2Pj4zXT03MiorX1tjPj4zXSxfW20rMjQ+PjNdPTcyKitfW2MrOD4+M10sYz1jKzE2fDAsZj0w''@;'; put 'put ''fHp0KGwsZik7SHQocCl9ZnVuY3Rpb24gcjBlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MDtmb3IocD0wLG09MDshKCgwfHApPj0oMHxsKSk7KWI9KDB8YVsxODArKDB8YVsxNisoMHxhW2MrKHA8PDIpPj4yXSk+PjJdKT4+Ml0pK218MCxwPXArMXwwLG09''@;'; put 'put ''Yjtmb3IoYVsxODArKDB8YVsoYj1mKzE2fDApPj4yXSk+PjJdPW0sQT0wfG1yKDQrKG08PDIpfDApLGFbMTg0KygwfGFbYj4+Ml0pPj4yXT1BLEE9MCxwPTE7ISgoMHxBKT49KDB8bCkpOyl7Zm9yKHc9MTYrKDB8YVtjKyhBPDwyKT4+Ml0pfDAsbT0xOyEoKDB8bSk+KDB8YVsxODArKGY9MHxh''@;'; put 'put ''W3c+PjJdKT4+Ml0pKTspZj0wfENyZSgwfGFbKDB8YVtmKzE4ND4+Ml0pKyhtPDwyKT4+Ml0pLGFbKDB8YVsxODQrKDB8YVtiPj4yXSk+PjJdKSsocDw8Mik+PjJdPWYsaTBlKDB8YVsoMHxhWzE4NCsoMHxhW3c+PjJdKT4+Ml0pKyhtPDwyKT4+Ml0sZiksbT1tKzF8MCxwPXArMXwwO0E9QSsx''@;'; put 'put ''fDB9fWZ1bmN0aW9uIGkwZShsLGMpe2x8PTA7dmFyIG0sZj0wLHA9MDtmMChjfD0wLDEzNzQ4MywyODAsMSksYVsoYz0xNisoMHxhWyhtPWMrMTZ8MCk+PjJdKXwwKT4+Ml09YVsobD0xNisoMHxhWyhwPWwrMTZ8MCk+PjJdKXwwKT4+Ml0sYVtjKzQ+PjJdPWFbbCs0Pj4yXSxhW2MrOD4+Ml09''@;'; put 'put ''YVtsKzg+PjJdLGFbYysxMj4+Ml09YVtsKzEyPj4yXSxhW2MrMTY+PjJdPWFbbCsxNj4+Ml0sYVtjKzIwPj4yXT1hW2wrMjA+PjJdLGFbYysyND4+Ml09YVtsKzI0Pj4yXSxhW2MrMjg+PjJdPWFbbCsyOD4+Ml0sdWVbMjc1KyhjPTB8YVttPj4yXSk+PjBdPTB8dWVbMjc1KyhsPTB8YVtwPj4y''@;'; put 'put ''XSk+PjBdLGw9bCs0OHwwLGY9NjQrKGM9Yys0OHwwKXwwO2Rve2FbYz4+Ml09YVtsPj4yXSxjPWMrNHwwLGw9bCs0fDB9d2hpbGUoKDB8Yyk8KDB8ZikpO2ZvcihhWzE4MCsoMHxhW20+PjJdKT4+Ml09bD0wfGFbMTgwKygwfGFbcD4+Ml0pPj4yXSxjPTB8bXIoNCsobDw8Mil8MCksYVsxODQr''@;'; put 'put ''KDB8YVttPj4yXSk+PjJdPWMsYz0xO2Y9MHxhW3A+PjJdLCEoKDB8Yyk+KDB8bCkpOylmPTB8Q3JlKDB8YVsoMHxhW2YrMTg0Pj4yXSkrKGM8PDIpPj4yXSksYVsoMHxhWzE4NCsoMHxhW20+PjJdKT4+Ml0pKyhjPDwyKT4+Ml09ZixpMGUoMHxhWygwfGFbMTg0KygwfGFbcD4+Ml0pPj4yXSkr''@;'; put 'put ''KGM8PDIpPj4yXSxmKSxjPWMrMXwwO2FbMTIrKDB8YVttPj4yXSk+PjJdPWFbKHA9ZisxMnwwKT4+Ml0sYVtwPj4yXT0wfWZ1bmN0aW9uIG8wZShsLGMpe2ZvcihjfD0wLCgwfGhpKGx8PTApKSE9KDB8bCkmJmYwKGwsMTM3NDgzLDI4MCwxKSwoMHxsKT09KDB8YykmJihhWzE4OCsoMHxhWzE2''@;'; put 'put ''KygwfGhpKGwpKT4+Ml0pPj4yXT1sKSxsPTB8d3MobCk7bDspbzBlKGwsYyksbD0wfGJzKGwpfWZ1bmN0aW9uIEFZKGwsYyl7Y3w9MDt2YXIgZixwLG0sQSx3LGssTSxELGI9MDtmb3IoRD1vZSxvZT1vZSsxMDQwfDAsTT1EKzh8MCxrPUQscD1EKzE2fDAsbT0wfHNpKGx8PTAsMSw4NzE3MSwx''@;'; put 'put ''OTUwNTkpLEE9MHxzaShsLDEsODUyNDIsMTk1MDU5KSx3PSgwfGMpPjAsZj0xPT0oMHxjKSxjPTB8THQobCk7YzspdyYmKGFbaz4+Ml09YVsyMzIrKDB8YVsoYj1jKzE2fDApPj4yXSk+PjJdLGFvKHAsMTM3Mzk1LGspLEJsKGMsbSxwKSwhZikmJihhW00+PjJdPWFbMjM2KygwfGFbYj4+Ml0p''@;'; put 'put ''Pj4yXSxhbyhwLDEzNzM5NSxNKSxCbChjLEEscCkpLGM9MHx6dChsLGMpO29lPUR9ZnVuY3Rpb24gVnZlKGwsYyl7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MDtmb3IoZj0wfGFbKGw9MHxhWzE5NisoMHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChrPTB8YVsyMzIrKDB8YVsxNiso''@;'; put 'put ''Y3w9MCk+PjJdKT4+Ml0pPDw2KT4+Ml0sdz1sKyhrPDw2KSs0fDAsQT0wLHA9MDs7KXtpZigoMHxwKT49KDB8Zikpe209NzticmVha31pZihtPTB8YVsoMHxhW3c+PjJdKSsocDw8Mik+PjJdLHA9cCsxfDAsKDB8bSk9PSgwfGMpKXttPTQ7YnJlYWt9QT1tfWlmKDQ9PSgwfG0pKXtmb3IoOyEo''@;'; put 'put ''KDB8cCk+PSgwfGYpKTspYVsobT0wfGFbbCsoazw8NikrND4+Ml0pKyhwKy0xPDwyKT4+Ml09YVttKyhwPDwyKT4+Ml0scD1wKzF8MCxmPTB8YVsobT0wfGFbMTk2KygwfGFbYj4+Ml0pPj4yXSkrKGs8PDYpPj4yXSxsPW0sbT00O2FbbCsoazw8Nik+PjJdPWYrLTF9ZWxzZSA3PT0oMHxtKSYm''@;'; put 'put ''KDB8QSkhPSgwfGMpJiZCcig4NTIwOCw4NTIxNSwyNDgsODUyMjUpfWZ1bmN0aW9uIFYwKGwpe3JldHVybiAwfGFbMTg4KygwfGFbMTYrKDB8aGkobHw9MCkpPj4yXSk+PjJdfWZ1bmN0aW9uIFNsKGwsYyl7dmFyIGY9MDtyZXR1cm4gZj0wfHVlWzI4KyhsfD0wKT4+MF0sMHx1ZVsyOCsoY3w9''@;'; put 'put ''MCk+PjBdP2Y8PDI0Pj4yND8oZj1+figrX1tsPj4zXS0rX1tjPj4zXSkpfHwoZj1+figrX1tsKzg+PjNdLStfW2MrOD4+M10pKTpmPS0xOmY9Zjw8MjQ+PjI0IT0wJjEsMHxmfWZ1bmN0aW9uIEhDKGwsYyl7Y3w9MDt2YXIgeW4sRm4sbHIsTnIsa3IsQ3IscXIsTHIsRmksUGksSG8sZj0wLHA9''@;'; put 'put ''MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCxybj0wLGNyPTAsYTA9MCxsbz0wO0hvPW9lLG9l''@;'; put 'put ''PW9lKzY1NnwwLEZuPUhvKzU5MnwwLHluPUhvKzU1MnwwLGY9SG8rNTQ0fDAscXI9SG8sUGk9SG8rNjMyfDAsbHI9NjU1MzUmKEZpPTE0JlR0WzEzNisoMHxhWyhMcj0xNisobHw9MCl8MCk+PjJdKT4+MV0pLGFbKE5yPTE2KyhDcj1Ibys5NnwwKXwwKT4+Ml09SG8rMzY4LGFbKGtyPXFyKzE2''@;'; put 'put ''fDApPj4yXT1IbysxOTI7ZG97aWYoRmk8PDE2Pj4xNil7Y3I9Rmk8PDE2Pj4xNj09NDtkb3tpZihjcil5WShsKSwxJnVlWzExMysoMHxhWzE2KygwfGFbbCs2MD4+Ml0pPj4yXSk+PjBdJiZYcigwLDg1MjQ4LGYpLGplPTk7ZWxzZXtpZihGaTw8MTY+PjE2PT04KXtpZih5WShsKSwxJnVlWzEx''@;'; put 'put ''MysoMHxhWzE2KygwfGFbbCs2MD4+Ml0pPj4yXSk+PjBdKXthMGUobCksS3IobCwxKSxrPTAsYj0wLHc9MDticmVha31LcihsLDApLGs9MCxiPTAsdz0wO2JyZWFrfWplPTl9fXdoaWxlKDApO2lmKDk9PSgwfGplKSl7aWYoVUkobCksMHxFYWUoKSlicmVhazthMD0wfG1yKDk2KSxhW1BpKzg+''@;'; put 'put ''PjJdPSgwfCh1dD0wfGFbMjQ4KygwfGFbTHI+PjJdKT4+Ml0pKS80fDAsYVtQaSsxMj4+Ml09dXQsdz0wfG1yKDUxMiksYVsoTXQ9UGkrNHwwKT4+Ml09MCxhW1BpPj4yXT0wLHJ0PTB8VHRbMjM2KyhBPTB8YVtMcj4+Ml0pPj4xXSxHZT0wLHd0PTAscm49dyxsdD13LGI9dyxrPXcsTT13LGF0''@;'; put 'put ''PTAsRXQ9MDtlOmZvcig7ISgoMHxydCk+KDB8VHRbQSsyMzg+PjFdKSk7KXtmb3Ioa3Q9KG09MHxhWyhEPTB8YVtBKzE5Nj4+Ml0pKyhydDw8Nik+PjJdKStHZXwwLGV0PShmPShmPTB8YVsocD0wfGFbRCsocnQ8PDYpKzQ+PjJdKT4+Ml0pP35+KChCZT0rX1sxNisoZj0wfGFbZisxNj4+Ml0p''@;'; put 'put ''Pj4zXS0rX1tmKzg4Pj4zXSk+KGxvPSsoMHxhdCkpP2xvOkJlKTphdCkrLTE2fDAsSGU9KHA9MCE9KDB8bSkmJjAhPSgwfChadD0wfGFbcCsobSstMTw8Mik+PjJdKSk/fn4oKGxvPStfWzk2KyhwPTB8YVtadCsxNj4+Ml0pPj4zXSsgK19bcCsxNj4+M10pPChCZT0rKDB8RXQpKT9CZTpsbyk6''@;'; put 'put ''RXQpKzE2fDAsTGU9MCxwZT13dCxHPXJuLFI9QSxtZT1sdCxiZT1iLHA9dyxmPUQ7ISgoMHxMZSk+PSgwfG0pKTspe2lmKG09MHxhWzExMisoZj0wfGFbKE9lPTE2Kyh3PTB8YVsoMHxhW2YrKHJ0PDw2KSs0Pj4yXSkrKExlPDwyKT4+Ml0pfDApPj4yXSk+PjJdKXtpZighKEE9MHxhWzk2Kygw''@;'; put 'put ''fGFbKG09bSsxNnwwKT4+Ml0pPj4yXSkpe2plPTIxO2JyZWFrIGV9YVsoSz1BKzU2fDApPj4yXT1hWyhmPWYrMTZ8MCk+PjJdLGFbSys0Pj4yXT1hW2YrND4+Ml0sYVtLKzg+PjJdPWFbZis4Pj4yXSxhW0srMTI+PjJdPWFbZisxMj4+Ml0sdWVbODErKDB8YVs5NisoMHxhW20+PjJdKT4+Ml0p''@;'; put 'put ''Pj4wXT0xLGY9MHxhW09lPj4yXX0wIT0oMHx1ZVtmKzE1Nj4+MF0pJiYoMHxwYVs2MyZhWzQzMjVdXSh3KSk8PDI0Pj4yND09MD8oUj1wZSxmPUcsQT1tZSx3PWJlLG09TSk6KEs9MCxSPXBlLEE9bWUsdz1iZSxqZT0yNSk7dDpkb3tpZigyNT09KDB8amUpKXtmb3IoO2plPTAsbT0wfGFbKDB8''@;'; put 'put ''YVsxODArKEQ9MHxhW09lPj4yXSk+PjJdKSsoSzw8Mik+PjJdOyl7c3dpdGNoKDB8dWVbMTEyKygwfGFbbSsxNj4+Ml0pPj4wXSl7Y2FzZSA2OmNhc2UgNDpmPVIsbT1HO2JyZWFrO2RlZmF1bHQ6aEgobSwxLDE2LDY0KSxmPVIrMXwwLGFbRysoUjw8Mik+PjJdPW0sMTI3JmY/bT1HOihtPXA9''@;'; put 'put ''MHxsMChwLDUxNisoUjw8Mil8MCksQT1wLHc9cCxrPXAsTT1wKX1LPUsrMXwwLFI9ZixHPW0samU9MjV9Zj0wfGFbRCsxODg+PjJdO246ZG97aWYoZilmb3IoSz0wLG09TTs7KXtpZighKGY9MHxhW2YrKEs8PDIpPj4yXSkpYnJlYWsgbjtoSChmLDIsMCwxMjgpLE09UisxfDAsYVtHKyhSPDwy''@;'; put 'put ''KT4+Ml09ZiwxMjcmTT9mPUc6KGY9cD0wfGwwKG0sNTE2KyhSPDwyKXwwKSxBPXAsdz1wLGs9cCxtPXApLEs9SysxfDAsUj1NLEc9ZixmPTB8YVsxODgrKEQ9MHxhW09lPj4yXSk+PjJdfWVsc2UgbT1NfXdoaWxlKDApO2lmKGY9MHxhW0QrMjA0Pj4yXSlmb3IoMHx1ZVtEKzE1Nj4+MF0/KEs9''@;'; put 'put ''MCxEPUcpOihsbz0rX1soYmU9RCs5NnwwKT4+M10sX1tiZT4+M109K19bKEs9RCsyNDB8MCk+PjNdLF9bSz4+M109bG8sSz0wLEQ9Ryk7Oyl7aWYoIShmPTB8YVtmKyhLPDwyKT4+Ml0pKXtmPUQ7YnJlYWsgdH1oSChmLDAsMCwxMjgpLE09UisxfDAsYVtEKyhSPDwyKT4+Ml09ZiwxMjcmTT9m''@;'; put 'put ''PUQ6KGY9cD0wfGwwKGssNTE2KyhSPDwyKXwwKSxBPXAsdz1wLGs9cCxtPXApLEs9SysxfDAsUj1NLEQ9ZixmPTB8YVsyMDQrKDB8YVtPZT4+Ml0pPj4yXX1lbHNlIGY9R319d2hpbGUoMCk7T2U9MHxhWzE5NisobWU9MHxhW0xyPj4yXSk+PjJdLExlPUxlKzF8MCxwZT1SLEc9ZixSPW1lLG1l''@;'; put 'put ''PUEsYmU9dyxNPW0sbT0wfGFbT2UrKHJ0PDw2KT4+Ml0sZj1PZX1ydD1ydCsxfDAsR2U9a3Qsd3Q9cGUscm49RyxsdD1tZSxBPVIsYj1iZSx3PXAsYXQ9ZXQsRXQ9SGV9MjE9PSgwfGplKSYmQnIoODUzMTYsODUzMjksMzEzLDg1MzQyKSxhW1BpPj4yXT1hdCxhW010Pj4yXT1FdCxJMShsdCx3''@;'; put 'put ''dCw0LDU4KSxhW2EwKzg0Pj4yXT0wfG1yKDExNTIwKyhHZTw8NSl8MCksYVtQaSsxNj4+Ml09MHxtcihydDw8NSk7ZTpkb3tpZihGaTw8MTY+PjE2PT0yKWZvcihmPTE5MisoMHxhW0xyPj4yXSl8MDs7KXtpZighKHA9MHxhW2Y+PjJdKSlicmVhayBlOzE9PSgwfHVlWzE1NisoZj0wfGFbKG09''@;'; put 'put ''cCsxNnwwKT4+Ml0pPj4wXSkmJjAhPSgwfGFbZisxMDQ+PjJdKSYmKGF5KHApLGY9MHxhW20+PjJdKSxmPWYrMTY0fDB9fXdoaWxlKDApO0hlPXFyKzQ4fDAsamU9cXIrLTQ4fDAsZXQ9Q3IrNDh8MCxydD1DcistNDh8MCxCZT0rKDB8dXQpLExlPTA7ZTpmb3IoOyEoKDB8TGUpPj0oMHx3dCkp''@;'; put 'put ''Oyl7aWYoSz0wfGx5KEc9MHxhWyhiZT1ybisoTGU8PDIpfDApPj4yXSksMHx1ZVs0NCsocD0wfGFbKHBlPUcrMTZ8MCk+PjJdKT4+MF0/Zj1HOihmPXA9MD09KDB8dWVbcCs4ND4+MF0pP0s6RyxwPTB8YVtwKzE2Pj4yXSksbT1mKzE2fDAsMzImYVtwKzE2ND4+Ml0pe0RvKDB8KHA9MHxhW05y''@;'; put 'put ''Pj4yXSksMHxhW20+PjJdLDE3NiksTT1mLEQ9KGs9Q3IpKzQ4fDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7YVtOcj4+Ml09cCxhWygzPT0oMHwoaz0zJmFbQ3I+PjJdKSk/Q3I6ZXQpKzQwPj4yXT1hWygyPT0oMHwoTT0zJmFbZj4+Ml0p''@;'; put 'put ''KT9mOmYrLTQ4fDApKzQwPj4yXSxhWygyPT0oMHxrKT9DcjpydCkrNDA+PjJdPWFbKDM9PSgwfE0pP2Y6Zis0OHwwKSs0MD4+Ml0sTT01NisoMHxhW20+PjJdKXwwLEQ9NDArKGs9cCsxNnwwKXwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8RCkp''@;'; put 'put ''O009MTYrKDB8YVttPj4yXSl8MCxEPTQwKyhrPXArNTZ8MCl8MDtkb3thW2s+PjJdPWFbTT4+Ml0saz1rKzR8MCxNPU0rNHwwfXdoaWxlKCgwfGspPCgwfEQpKTt1ZVtwKzExMj4+MF09MSxhW3ArMTE2Pj4yXT1mLGY9Q3J9Zm9yKFI9ZisxNnwwLE9lPTEsZj1MZTshKCgwfChtZT1mKzF8MCkp''@;'; put 'put ''Pj0oMHx3dCl8fChBPXJuKyhtZTw8Mil8MCxmPTB8YVtBPj4yXSwoMHxLKSE9KDB8bHkoZikpKSk7KXtpZighKDB8dWVbMTEzKygwfGFbcGU+PjJdKT4+MF0pKXtpZigwfHVlWzQ0KyhwPTB8YVsodz1mKzE2fDApPj4yXSk+PjBdfHwoZj1wPTA9PSgwfHVlW3ArODQ+PjBdKT9LOmYscD0wfGFb''@;'; put 'put ''cCsxNj4+Ml0pLG09ZisxNnwwLDMyJmFbcCsxNjQ+PjJdKXtEbygwfChwPTB8YVtrcj4+Ml0pLDB8YVttPj4yXSwxNzYpLE09ZixEPShrPXFyKSs0OHwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8RCkpO2Fba3I+PjJdPXAsYVsoMz09KDB8KGs9''@;'; put 'put ''MyZhW3FyPj4yXSkpP3FyOkhlKSs0MD4+Ml09YVsoMj09KDB8KE09MyZhW2Y+PjJdKSk/ZjpmKy00OHwwKSs0MD4+Ml0sYVsoMj09KDB8ayk/cXI6amUpKzQwPj4yXT1hWygzPT0oMHxNKT9mOmYrNDh8MCkrNDA+PjJdLE09NTYrKDB8YVttPj4yXSl8MCxEPTQwKyhrPXArMTZ8MCl8MDtkb3th''@;'; put 'put ''W2s+PjJdPWFbTT4+Ml0saz1rKzR8MCxNPU0rNHwwfXdoaWxlKCgwfGspPCgwfEQpKTtNPTE2KygwfGFbbT4+Ml0pfDAsRD00MCsoaz1wKzU2fDApfDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7dWVbcCsxMTI+PjBdPTEsYVtwKzExNj4+''@;'; put 'put ''Ml09Zn1mPXArMTZ8MCxNPTE2KyhtPTB8YVtSPj4yXSl8MCxEPShrPXluKSs0MHwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8RCkpO009ZixEPShrPUZuKSs0MHwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8''@;'; put 'put ''ayk8KDB8RCkpO2lmKDB8U2woeW4sRm4pKWJyZWFrO2Y9cCs1NnwwLE09bSs1NnwwLEQ9KGs9eW4pKzQwfDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7TT1mLEQ9KGs9Rm4pKzQwfDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1N''@;'; put 'put ''KzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7aWYoMHxTbCh5bixGbil8fDI9PSgxNSZhWzE2NCsodXQ9MHxhW3BlPj4yXSk+PjJdfDApJiYoMHxhW3V0Kzk2Pj4yXSkhPSgwfGFbOTYrKDB8YVt3Pj4yXSk+PjJdKXx8NjQmYVsxNjQrKDB8YVsxNisoMHxhW0E+PjJdKT4+Ml0pPj4yXXwwKWJyZWFr''@;'; put 'put ''fU9lPU9lKzF8MCxmPW1lfWlmKGNyKXtmb3IoZj0xPT0oMHxPZSk/Rm46MHxtcihPZTw8MiksYVtmPj4yXT0wfGx5KDB8YVtiZT4+Ml0pLHA9MTshKCgwfHApPj0oMHxPZSkpOylhW2YrKHA8PDIpPj4yXT1hW2JlKyhwPDwyKT4+Ml0scD1wKzF8MDtiUShsLGYsT2UsbHIsMTcyOTYpLCgwfE9l''@;'; put 'put ''KT4xJiZIdChmKSxMZT1tZX1lbHNlIGlmKG09MHxhWzIzMisocD0wfGFbMTYrKHV0PTB8YVsoMz09KDB8KGY9MyZhW0c+PjJdKSk/RzpHKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sKDB8dXQpPT0oMHwoZj0wfGFbKDI9PSgwfGYpP0c6RystNDh8MCkrNDA+PjJdKSkpe2Y9MHxhW0xyPj4yXTtk''@;'; put 'put ''b3tpZigoMHxtKT09KDB8VHRbZisyMzg+PjFdKSl7aWYoKDB8bSk+MCl7Zj1+figrX1syNCsoMHxhWzE2KygwfGFbYVsoMHxhW2YrMTk2Pj4yXSkrKG0rLTE8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bcCsyND4+M10pO2JyZWFrfWY9fn4rX1twKzgwPj4zXTticmVha31pZigoMHxtKT09''@;'; put 'put ''KDB8VHRbZisyMzY+PjFdKSl7Zj1+figrX1twKzI0Pj4zXS0rX1syNCsoMHxhWzE2KygwfGFbYVsoMHxhW2YrMTk2Pj4yXSkrKG0rMTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSk7YnJlYWt9Zj0oMHwodXQ9fn4oK19bMjQrKDB8YVsxNisoMHxhW2FbKGY9MHxhW2YrMTk2Pj4yXSkrKG0rLTE8''@;'; put 'put ''PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tKGxvPStfW3ArMjQ+PjNdKSkpKTwoMHwoZj1+fihsby0rX1syNCsoMHxhWzE2KygwfGFbYVtmKyhtKzE8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10pKSk/dXQ6ZjticmVha313aGlsZSgwKTtmb3IoVk4oYTAscm4sTGUsT2UsQmUsKygwfCgwfGYpLzIp''@;'; put 'put ''LDE3Mjk2KSxmPTA7Oyl7aWYoKDB8Zik+PSgwfE9lKSl7TGU9bWU7Y29udGludWUgZX0wfChwPTB8YVs5NisoMHxhWzE2KygwfGFbcm4rKGYrTGU8PDIpPj4yXSk+PjJdKT4+Ml0pJiZKZChsLHApLGY9ZisxfDB9fWVsc2V7aWYoKDB8bSk9PSgwfGFbMjMyKygwfGFbZisxNj4+Ml0pPj4yXSkp''@;'; put 'put ''e2wwZShsLFBpLGEwLHJuLExlLE9lLGxyKSxMZT1tZTtjb250aW51ZX1zMGUobCxQaSxhMCxybixMZSxPZSxsciksTGU9bWV9fWZvcihmPTE5MisoMHxhW0xyPj4yXSl8MDtwPTB8YVtmPj4yXTspMT09KDB8dWVbMTU2KyhmPTB8YVsobT1wKzE2fDApPj4yXSk+PjBdKSYmMCE9KDB8YVtmKzEw''@;'; put 'put ''ND4+Ml0pJiYoYXkocCksSmQobCwwfGFbMTA0KygwfGFbbT4+Ml0pPj4yXSksZj0wfGFbbT4+Ml0pLGY9ZisxNjR8MDtjPyhkSChsKSxrPWEwLHc9YTApOihrPWEwLHc9YTApfWU6ZG97aWYoMCE9KDB8YVs0NzE5N10pfDAhPSgwfGFbNDcxOThdKSYmMCE9KDB8YVs0NzIwM10pfDAhPSgwfGFb''@;'; put 'put ''NDcyMDJdKSlmb3IoQT0wfEx0KGwpOzspe2lmKCFBKWJyZWFrIGU7dDpkb3tpZigwfGFbNDcxOTddKWZvcihmPTB8d2YobCxBKTs7KXtpZighZilicmVhayB0O3A9ZistNDh8MCwwfGFbMTAwKygwfGFbKG09Mj09KDMmYVtmPj4yXXwwKT9mOnApKzE2Pj4yXSk+PjJdJiYoQ0QobSwxKSxKZChs''@;'; put 'put ''LDB8YVsxMDArKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOnApKzE2Pj4yXSk+PjJdKSksZj0wfE8zKGwsZil9fXdoaWxlKDApO3Q6ZG97aWYoMHxhWzQ3MTk4XSlmb3IoZj0wfHkwKGwsQSk7Oyl7aWYoIWYpYnJlYWsgdDswfGFbMTA0KygwfGFbKHA9ZisxNnwwKT4+Ml0pPj4yXSYmMHxDRChm''@;'; put 'put ''LDApJiZKZChsLDB8YVsxMDQrKDB8YVtwPj4yXSk+PjJdKSxmPTB8azAobCxmKX19d2hpbGUoMCk7QT0wfHp0KGwsQSl9fXdoaWxlKDApO3N3aXRjaCgxNSZGaSl7Y2FzZSA0OmNhc2UgODpicmVhaztkZWZhdWx0Okh0KGIpLEh0KDB8YVtrKzg0Pj4yXSksSHQodyksSHQoMHxhW1BpKzE2Pj4y''@;'; put 'put ''XSkseGFlKCl9YVs0NzEzOF09MSxhWzQ3MTM5XT0xfX13aGlsZSgwKTtvZT1Ib31mdW5jdGlvbiB5WShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO2ZvcihjPTB8THQobHw9MCk7YzspMHxhWzIwNCsoZj0wfGFbYysxNj4+Ml0pPj4yXSYmKHA9K19bKG09Zis5NnwwKT4+M10sX1ttPj4zXT0rX1so''@;'; put 'put ''Zj1mKzI0MHwwKT4+M10sX1tmPj4zXT1wKSxjPTB8enQobCxjKX1mdW5jdGlvbiBhMGUobCl7dmFyIGM9MCxmPTAscD0wLG09MDtjPTE5MisoMHxhWzE2KyhsfD0wKT4+Ml0pfDA7ZTpmb3IoOzspe2lmKCEocD0wfGFbYz4+Ml0pKXtjPTEyO2JyZWFrfWM9MHxhWyhtPXArMTZ8MCk+PjJdO2Rv''@;'; put 'put ''e2lmKDE9PSgwfHVlW2MrMTU2Pj4wXSkpe2lmKGY9MHxhW2MrMTEyPj4yXSl7aWYoIShmPTB8YVs5NisoMHxhW2YrMTY+PjJdKT4+Ml0pKXtjPTY7YnJlYWsgZX1hWyhwPWYrNTZ8MCk+PjJdPWFbKGM9YysxNnwwKT4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJd''@;'; put 'put ''LGFbcCsxMj4+Ml09YVtjKzEyPj4yXSx1ZVtmKzgxPj4wXT0xLGM9Zn1lbHNle2lmKCEoZj0wfGFbYysxMDQ+PjJdKSlicmVhaztheShwKSxjPWZ9SmQobCxjKSxjPTB8YVttPj4yXX19d2hpbGUoMCk7Yz1jKzE2NHwwfWlmKDY9PSgwfGMpKUJyKDg1NTE2LDg1MzI5LDIzNCw4NTUzNSk7ZWxz''@;'; put 'put ''ZSBpZigxMj09KDB8YykpcmV0dXJufWZ1bmN0aW9uIGhIKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MDtkb3tpZighYyl7aWYoKDB8KGM9MHxhWygzPT0oMHwobT0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKSkhPSgwfChtPTB8YVsoMj09KDB8bSk/bDpsKy00OHww''@;'; put 'put ''KSs0MD4+Ml0pKSl7Yz0oMHxhWzIzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPT0oMHxhWzIzMisoMHxhW20rMTY+PjJdKT4+Ml0pPzI6MTticmVha31jPTB8dWVbNDQrKGM9MHxhW2wrMTY+PjJdKT4+MF0/NDowPT0oMHx1ZVtjKzg0Pj4wXSk/ODo0fX13aGlsZSgwKTtlOmRve2lmKCFmKXN3aXRj''@;'; put 'put ''aCgwfGMpe2Nhc2UgMTpmPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8KGY9MyZhW2w+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8Zik/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT8xNjozMjticmVhayBlO2Nh''@;'; put 'put ''c2UgMjpmPSgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMz09KDB8KGY9MyZhW2w+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPCgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDB8Zik/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT8xNjozMjticmVhayBlO2RlZmF1bHQ6Zj0x''@;'; put 'put ''NjticmVhayBlfX13aGlsZSgwKTthWzE2NCsoMHxhW2wrMTY+PjJdKT4+Ml09Y3xwfGZ9ZnVuY3Rpb24gYXkobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7aWYoMHxhWzE3NisoYz0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSk+PjJdKXtmb3IoYz0wfGFbYysxODA+PjJdOzB8dWVbMTEyKyhm''@;'; put 'put ''PTB8YVsoYz0xNisoMHxhW2M+PjJdKXwwKT4+Ml0pPj4wXTspYz1mKzExNnwwO209K19bMjQrKGY9MHxhW2YrOTY+PjJdKT4+M10sQT0rX1tmKzMyPj4zXSxmPTAhPSgxJmFbMTE2KygwfGFbMTYrKDB8ZnIobCkpPj4yXSk+PjJdfDApLGw9MHxhW3A+PjJdLF9bNTYrKHA9MHxhWzk2KygwfGFb''@;'; put 'put ''Yz4+Ml0pPj4yXSk+PjNdPS41KihmP0E6bSkrICtfW2wrMTY+PjNdLF9bcCs2ND4+M109K19bbCsyND4+M10sdWVbcCs4MT4+MF09MX19ZnVuY3Rpb24gbHkobCl7bHw9MDtmb3IodmFyIGM9MCxmPTA7Zj0wfGFbMTcyKyhjPTB8YVtsKzE2Pj4yXSk+PjJdOylsPWY7Zm9yKDtjPTB8YVtjKzEx''@;'; put 'put ''Nj4+Ml07KWw9YyxjPTB8YVtjKzE2Pj4yXTtyZXR1cm4gMHxsfWZ1bmN0aW9uIGwwZShsLGMsZixwLG0sQSx3KXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wO3ZhciBCZSxIZSxqZSxydCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxM''@;'; put 'put ''ZT0wLGV0PTAsR2U9MCxsdD0wLE10PTAsa3Q9MCxhdD0wO2lmKHJ0PW9lLG9lPW9lKzE3MTJ8MCxCZT1ydCsxNjY0fDAsZXQ9cnQrMTY5NnwwLEhlPXJ0KzY5NnwwLGplPXJ0LGFbKFI9MTYrKG1lPXJ0KzEzOTJ8MCl8MCk+PjJdPXBlPXJ0KzE0ODh8MCxiZT0wfHVlWzExMysoYj0wfGFbKEs9''@;'; put 'put ''MTYrKEc9MHxhW3ArKG08PDIpPj4yXSl8MCk+PjJdKT4+MF0sMzImYVtiKzE2ND4+Ml0pe0RvKDB8cGUsMHxiLDE3NiksTT1HLEQ9KGI9bWUpKzQ4fDA7ZG97YVtiPj4yXT1hW00+PjJdLGI9Yis0fDAsTT1NKzR8MH13aGlsZSgoMHxiKTwoMHxEKSk7YVtSPj4yXT1wZSxhWygzPT0oMHwoYj0z''@;'; put 'put ''JmFbbWU+PjJdKSk/bWU6bWUrNDh8MCkrNDA+PjJdPWFbKDI9PSgzJmFbRz4+Ml18MCk/RzpHKy00OHwwKSs0MD4+Ml0sYVsoMj09KDB8Yik/bWU6bWUrLTQ4fDApKzQwPj4yXT1hWygzPT0oMyZhW0c+PjJdfDApP0c6Rys0OHwwKSs0MD4+Ml0sTT01NisoMHxhW0s+PjJdKXwwLEQ9NDArKGI9''@;'; put 'put ''cGUrMTZ8MCl8MDtkb3thW2I+PjJdPWFbTT4+Ml0sYj1iKzR8MCxNPU0rNHwwfXdoaWxlKCgwfGIpPCgwfEQpKTtNPTE2KygwfGFbSz4+Ml0pfDAsRD00MCsoYj1wZSs1NnwwKXwwO2Rve2FbYj4+Ml09YVtNPj4yXSxiPWIrNHwwLE09TSs0fDB9d2hpbGUoKDB8Yik8KDB8RCkpO3VlW3BlKzEx''@;'; put 'put ''Mj4+MF09MSxhW3BlKzExNj4+Ml09RyxHPW1lfWZvcihiPTE7Oyl7aWYoKDB8Yik+PSgwfEEpKXtMZT02O2JyZWFrfWlmKDB8dWVbMTEzKygwfGFbMTYrKDB8YVtwKyhiK208PDIpPj4yXSk+PjJdKT4+MF0pe0xlPTc7YnJlYWt9Yj1iKzF8MH1lOmRve2lmKDY9PSgwfExlKSlpZihiZTw8MjQ+''@;'; put 'put ''PjI0KUxlPTc7ZWxzZXtpZigwfGFbOTYrKGI9MHxhW0crMTY+PjJdKT4+Ml0pe2QwZShsLGMsZixHLHcpO2JyZWFrfWlmKDI9PSgwfHcpKXtFWSgwfGFbKDM9PSgwfChldD0zJmFbRz4+Ml0pKT9HOkcrNDh8MCkrNDA+PjJdLDB8YVsoMj09KDB8ZXQpP0c6RystNDh8MCkrNDA+PjJdLHAsbSxB''@;'; put 'put ''LDIpO2JyZWFrfWlmKCEoKG1lPTB8dWVbYis0OT4+MF0pPDwyND4+MjQ9PTEmKGJlPTB8dWVbYis4OT4+MF0pPDwyND4+MjQhPTR8fG1lPDwyND4+MjQhPTQmYmU8PDI0Pj4yND09MSkpZm9yKEQ9MHxhWygzPT0oMHwoUj0zJmFbRz4+Ml0pKT9HOkcrNDh8MCkrNDA+PjJdLFI9MHxhWygyPT0o''@;'; put 'put ''MHxSKT9HOkcrLTQ4fDApKzQwPj4yXSxrPSgwfChNPTB8YVsyMzIrKGI9MHxhW0QrMTY+PjJdKT4+Ml0pKT4wPytfWzI0KygwfGFbMTYrKDB8YVthWyhiZT0wfGFbMTk2KygwfGFbbCsxNj4+Ml0pPj4yXSkrKChtZT1NK34oMSZ1ZVsxMTMrKDB8YVsxNisoMHxhW2wrNjA+PjJdKT4+Ml0pPj4w''@;'; put 'put ''XSl8MCk8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bYmUrKG1lPDw2KSsxNj4+M10tK19bYisyND4+M10tK19bYmUrKE08PDYpKzI0Pj4zXTorKDB8YVsyNTIrKDB8YVtsKzE2Pj4yXSk+PjJdKSxPZT0rKDB8YVtjKzEyPj4yXSkvKEdlPSsoQSsxfDApKSxrLz1HZSxZZChsLGMsZixELEcs''@;'; put 'put ''SGUsMSksWWQobCxjLGYsUixHLGplLDApLHBlPUhlKzUyfDAsbWU9amUrNTJ8MCxSPTEwPT0oMHx3KSxHPWYrODB8MCxiPTA7Oyl7aWYoKDB8Yik+PSgwfEEpKWJyZWFrIGU7Zm9yKEs9MHxhW3ArKGIrbTw8Mik+PjJdLGt0PStfW0hlKzU2KygoTT0oRD0wfGFbcGU+PjJdKS0xfDApPDw1KSsx''@;'; put 'put ''Nj4+M10sTXQ9K19bSGUrNTYrKE08PDUpKzI0Pj4zXSxfWzE5MjE1XT1hdD0rX1tIZSs1NisoTTw8NSk+PjNdLF9bMTkyMTZdPU10LF9bMTkyMTddPWt0KyhsdD1PZSooR2U9KygwfChiPWIrMXwwKSkpKSxfWzE5MjE4XT1HZT1NdCtrKkdlLF9bMTkyMTldPWF0LF9bMTkyMjBdPUdlLF9bMTky''@;'; put 'put ''MjFdPWF0PStfW2plKzU2KygoTT0oMHxhW21lPj4yXSktMXwwKTw8NSkrMTY+PjNdLF9bMTkyMjJdPUdlK2ssTXQ9K19bamUrNTYrKE08PDUpPj4zXSxrdD0rX1tqZSs1NisoTTw8NSkrMjQ+PjNdLF9bMTkyMjVdPWF0LF9bMTkyMjRdPWt0LF9bMTkyMjNdPU10LWx0LF9bMTkyMjZdPUdlLE09''@;'; put 'put ''MDs7KXtpZigoMHxNKT49KDB8RCkpe009MDticmVha31hW0JlPj4yXT1hWyhEPUhlKzU2KyhNPDw1KXwwKT4+Ml0sYVtCZSs0Pj4yXT1hW0QrND4+Ml0sYVtCZSs4Pj4yXT1hW0QrOD4+Ml0sYVtCZSsxMj4+Ml09YVtEKzEyPj4yXSxhW0JlKzE2Pj4yXT1hW0QrMTY+PjJdLGFbQmUrMjA+PjJd''@;'; put 'put ''PWFbRCsyMD4+Ml0sYVtCZSsyND4+Ml09YVtEKzI0Pj4yXSxhW0JlKzI4Pj4yXT1hW0QrMjg+PjJdLFUzKGYsQmUpLE09TSsxfDAsRD0wfGFbcGU+PjJdfWZvcig7MyE9KDB8TSk7KWFbQmU+PjJdPWFbKHc9MTUzNzIwKyhNPDw1KXwwKT4+Ml0sYVtCZSs0Pj4yXT1hW3crND4+Ml0sYVtCZSs4''@;'; put 'put ''Pj4yXT1hW3crOD4+Ml0sYVtCZSsxMj4+Ml09YVt3KzEyPj4yXSxhW0JlKzE2Pj4yXT1hW3crMTY+PjJdLGFbQmUrMjA+PjJdPWFbdysyMD4+Ml0sYVtCZSsyND4+Ml09YVt3KzI0Pj4yXSxhW0JlKzI4Pj4yXT1hW3crMjg+PjJdLFUzKGYsQmUpLE09TSsxfDA7Zm9yKEQ9MHxhW21lPj4yXTtN''@;'; put 'put ''PUQrLTF8MCwhKCgwfEQpPD0wKTspYVtCZT4+Ml09YVsoRD1qZSs1NisoTTw8NSl8MCk+PjJdLGFbQmUrND4+Ml09YVtEKzQ+PjJdLGFbQmUrOD4+Ml09YVtEKzg+PjJdLGFbQmUrMTI+PjJdPWFbRCsxMj4+Ml0sYVtCZSsxNj4+Ml09YVtEKzE2Pj4yXSxhW0JlKzIwPj4yXT1hW0QrMjA+PjJd''@;'; put 'put ''LGFbQmUrMjQ+PjJdPWFbRCsyND4+Ml0sYVtCZSsyOD4+Ml09YVtEKzI4Pj4yXSxVMyhmLEJlKSxEPU07aWYoTT1SPzB8Z2soZixldCk6MHx2ayhmLGV0KSwhKEQ9MHxhW2V0Pj4yXSkpYnJlYWsgZTtBdShLLDB8YVsoMj09KDMmYVtLPj4yXXwwKT9LOksrLTQ4fDApKzQwPj4yXSxNLEQsMTcy''@;'; put 'put ''OTYpLGFbRz4+Ml09MH1pcChsLGMsZixwLG0sQSxHLDEwPT0oMHx3KSYxKX19d2hpbGUoMCk7Nz09KDB8TGUpJiZmdW5jdGlvbiBoMGUobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHB8PTAsQXw9MDt2YXIgR2UsbHQsTXQsa3QsYXQsRXQsWnQsdXQsd3Qscm4seW4sRm4sbHIsTnIsY3Is''@;'; put 'put ''dz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLGtyPTAsQ3I9MCxxcj0wO2NyPW9lLG9lPW9lKzI1NnwwLGx0PWNyKzIzMnwwLEdlPWNyKzIxNnwwLE5yPWNyKzg4fDAsbHI9Y3IrODB8MCx3dD1j''@;'; put 'put ''cis2NHwwLHJuPWNyKzIwMHwwLHluPWNyKzE4NHwwLEZuPWNyLE10PWNyKzE2OHwwLGt0PWNyKzE1MnwwLGF0PWNyKzEzNnwwLEV0PWNyKzEyMHwwLFp0PWNyKzEwNHwwLHV0PTB8YVsoMz09KDB8KHJ0PTMmYVsobXw9MCk+PjJdKSk/bTptKzQ4fDApKzQwPj4yXSxydD0wfGFbKDI9PSgwfHJ0''@;'; put 'put ''KT9tOm0rLTQ4fDApKzQwPj4yXTtkb3tpZigyIT0oMHxaNSh1dCkpJiYyIT0oMHxaNShydCkpKXtmb3IobT0wLHc9MCxiPTA7ISgoMHxiKT49KDB8cCkpOyltPW0rKDAhPSgwfGFbOTYrKGV0PTB8YVsxNisoMHxhW2MrKGIrZjw8Mik+PjJdKT4+Ml0pPj4yXSkmMSl8MCwwPT0oMHx1ZVtldCs0''@;'; put 'put ''ND4+MF0pJiYwPT0oMHx1ZVtldCs4ND4+MF0pfHwodz0xKSxiPWIrMXwwO2lmKCF3KXtpZihtKXtwMGUodXQscnQsYyxmLHAsQSxtKTticmVha31FWSh1dCxydCxjLGYscCxBKTticmVha31mb3IoZjAobWU9MHx5cyhqZT0wfGcwZShsLEhlPTB8bXIoMTU2KSksODU0NzgsMSksMTM3NDgzLDI4''@;'; put 'put ''MCwxKSxNYyhtZSw4NzE3MSw4NzE4NSksaz0rX1sxNisoMHxhW3J0KzE2Pj4yXSk+PjNdLHBlPStfWzE2KygwfGFbdXQrMTY+PjJdKT4+M10sSz0oRz0wPT0oMSZhWzExNisoMHxhWyhldD1sKzE2fDApPj4yXSk+PjJdfDApKT9ydDp1dCxtZT0wfEk1KG1lLEc9Rz91dDpydCksYmU9MHxJNShq''@;'; put 'put ''ZSxLKSxtPTAsUj0wOyEoKDB8Uik+PSgwfHApKTspe2Zvcih3PWMrKFIrZjw8Mil8MDswfHVlWzExMisodz0wfGFbKE09MTYrKEQ9MHxhW3c+PjJdKXwwKT4+Ml0pPj4wXTspdz13KzExNnwwO2I9KDB8YVsoMz09KDMmYVtEPj4yXXwwKT9EOkQrNDh8MCkrNDA+PjJdKT09KDB8Ryk/MHx4WShq''@;'; put 'put ''ZSxtZSxiZSxEKTowfHhZKGplLGJlLG1lLEQpLGFbMTIwKyh3PTB8YVtNPj4yXSk+PjJdPWIsbXx8KDA9PSgwfHVlW3crNDQ+PjBdKSYmMD09KDB8dWVbdys4ND4+MF0pPyhhWzEyMCsoMHxhW2IrMTY+PjJdKT4+Ml09RCxtPWIpOm09MCksUj1SKzF8MH1mb3IoQmwoQmU9bXx8MHxybChqZSxt''@;'; put 'put ''ZSxiZSwwLDEpLDB8YVs0NzE3NF0sODU0ODIpLGFbMTQ0KyhNPTB8YVsobT1qZSsxNnwwKT4+Ml0pPj4yXT1hWzE0NCsoMHxhW2V0Pj4yXSk+PjJdLGFbTSsxODg+PjJdPWplLFhkKGplLEEpLHRvKGplKSxhVShqZSwwKSxQWShqZSwwKSxYWShqZSwwKSxNPTB8YVtLKzE2Pj4yXSxPZT0rKDB8''@;'; put 'put ''fn5rKSxMZT0rKDB8fn4oLjUqKCtfWzE2KygwfGFbYmUrMTY+PjJdKT4+M10rICtfWyhSPTE2KyhEPTB8YVsoSz1tZSsxNnwwKT4+Ml0pfDApPj4zXSkpKSxrPSsoMHx+fnBlKSxwZT0rKDB8fn4oLjUqKCtfWzE2KyhBPTB8YVsoRz1HKzE2fDApPj4yXSk+PjNdLStfW0ErOTY+PjNdKyArX1tN''@;'; put 'put ''KzE2Pj4zXSsgK19bTSs4OD4+M10pKSksTT1EKzI0fDAsbT0xOTIrKDB8YVttPj4yXSl8MDt3PTB8YVttPj4yXTspe2Rve2lmKCgwfHcpIT0oMHxtZSkpe2lmKGI9MjQrKG09MHxhW3crMTY+PjJdKXwwLCgwfHcpPT0oMHxiZSkpe19bYj4+M109ayxfW20rMTY+PjNdPUxlO2JyZWFrfV9bYj4+''@;'; put 'put ''M109cGU7YnJlYWt9X1tNPj4zXT1PZSxfW1I+PjNdPUxlLG09RH13aGlsZSgwKTttPW0rMTY0fDB9Zm9yKEQ3KGplKSxIQyhqZSwwKSxqNyhqZSksYj0wfGFbRz4+Ml0sbT0wfGFbSz4+Ml0sMSZhWzExNisoMHxhW2V0Pj4yXSk+PjJdPyh3PW0rMjR8MCxrPStfW20rMTY+PjNdKyArX1tiKzI0''@;'; put 'put ''Pj4zXSk6KHc9bSsxNnwwLGs9K19bYisyND4+M10tK19bbSsyND4+M10pLF9bd3Q+PjNdPStfW2IrMTY+PjNdLStfW3c+PjNdLF9bd3QrOD4+M109ayxBPUZuKzE2fDAsbWU9Rm4rMzJ8MCxiZT1Gbis0OHwwLEs9MDshKCgwfEspPj0oMHxwKSk7KXtmb3IobT1jKyhLK2Y8PDIpfDA7MHx1ZVsx''@;'; put 'put ''MTIrKG09MHxhWyhHPTE2Kyh3PTB8YVttPj4yXSl8MCk+PjJdKT4+MF07KW09bSsxMTZ8MDtpZighKCgwfChEPTB8YVttKzEyMD4+Ml0pKT09KDB8QmUpJjA9PSgwfGFbMTIwKyhtPTB8YVsoUj1EKzE2fDApPj4yXSk+PjJdKSkpe2Zvcih3PTB8Tk4odywwfGFbKEQ9NCsoTT0wfGFbYVttKzg+''@;'; put 'put ''PjJdPj4yXSl8MCk+PjJdKSxhW3crOD4+Ml09YVtNKzg+PjJdLG09dysxNnwwLENyPTEmYVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhiPU0rMTZ8MCk+PjJdLGFbR2UrND4+Ml09YVtiKzQ+PjJdLGFbR2UrOD4+Ml09YVtiKzg+PjJdLGFbR2UrMTI+PjJdPWFbYisxMj4+Ml0s''@;'; put 'put ''YVtsdD4+Ml09YVt3dD4+Ml0sYVtsdCs0Pj4yXT1hW3d0KzQ+PjJdLGFbbHQrOD4+Ml09YVt3dCs4Pj4yXSxhW2x0KzEyPj4yXT1hW3d0KzEyPj4yXSxrNyhybixHZSxsdCxDciksYVttPj4yXT1hW3JuPj4yXSxhW20rND4+Ml09YVtybis0Pj4yXSxhW20rOD4+Ml09YVtybis4Pj4yXSxhW20r''@;'; put 'put ''MTI+PjJdPWFbcm4rMTI+PjJdLGFbdysxMj4+Ml09YVtNKzEyPj4yXSxtPXcrMzJ8MCxiPTEmYVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhDcj1NKzMyfDApPj4yXSxhW0dlKzQ+PjJdPWFbQ3IrND4+Ml0sYVtHZSs4Pj4yXT1hW0NyKzg+PjJdLGFbR2UrMTI+PjJdPWFbQ3Ir''@;'; put 'put ''MTI+PjJdLGFbbHQ+PjJdPWFbd3Q+PjJdLGFbbHQrND4+Ml09YVt3dCs0Pj4yXSxhW2x0Kzg+PjJdPWFbd3QrOD4+Ml0sYVtsdCsxMj4+Ml09YVt3dCsxMj4+Ml0sazcoeW4sR2UsbHQsYiksYVttPj4yXT1hW3luPj4yXSxhW20rND4+Ml09YVt5bis0Pj4yXSxhW20rOD4+Ml09YVt5bis4Pj4y''@;'; put 'put ''XSxhW20rMTI+PjJdPWFbeW4rMTI+PjJdLG09MDshKCgwfG0pPj0oMHxhW0Q+PjJdKSk7KXtpZihiPSgwfGFbdz4+Ml0pKyhtPDw0KXwwLENyPTEmYVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhxcj0oMHxhW00+PjJdKSsobTw8NCl8MCk+PjJdLGFbR2UrND4+Ml09YVtxcis0''@;'; put 'put ''Pj4yXSxhW0dlKzg+PjJdPWFbcXIrOD4+Ml0sYVtHZSsxMj4+Ml09YVtxcisxMj4+Ml0sYVtsdD4+Ml09YVt3dD4+Ml0sYVtsdCs0Pj4yXT1hW3d0KzQ+PjJdLGFbbHQrOD4+Ml09YVt3dCs4Pj4yXSxhW2x0KzEyPj4yXT1hW3d0KzEyPj4yXSxrNyhNdCxHZSxsdCxDciksYVtiPj4yXT1hW010''@;'; put 'put ''Pj4yXSxhW2IrND4+Ml09YVtNdCs0Pj4yXSxhW2IrOD4+Ml09YVtNdCs4Pj4yXSxhW2IrMTI+PjJdPWFbTXQrMTI+PjJdLGFbRm4+PjJdPWFbTXQ+PjJdLGFbRm4rND4+Ml09YVtNdCs0Pj4yXSxhW0ZuKzg+PjJdPWFbTXQrOD4+Ml0sYVtGbisxMj4+Ml09YVtNdCsxMj4+Ml0sKDB8KGI9bSsx''@;'; put 'put ''fDApKT49KDB8YVtEPj4yXSkpe2tyPTQ4O2JyZWFrfUNyPSgwfGFbdz4+Ml0pKyhiPDw0KXwwLHFyPTEmYVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhiPSgwfGFbTT4+Ml0pKyhiPDw0KXwwKT4+Ml0sYVtHZSs0Pj4yXT1hW2IrND4+Ml0sYVtHZSs4Pj4yXT1hW2IrOD4+Ml0s''@;'; put 'put ''YVtHZSsxMj4+Ml09YVtiKzEyPj4yXSxhW2x0Pj4yXT1hW3d0Pj4yXSxhW2x0KzQ+PjJdPWFbd3QrND4+Ml0sYVtsdCs4Pj4yXT1hW3d0Kzg+PjJdLGFbbHQrMTI+PjJdPWFbd3QrMTI+PjJdLGs3KGt0LEdlLGx0LHFyKSxhW0NyPj4yXT1hW2t0Pj4yXSxhW0NyKzQ+PjJdPWFba3QrND4+Ml0s''@;'; put 'put ''YVtDcis4Pj4yXT1hW2t0Kzg+PjJdLGFbQ3IrMTI+PjJdPWFba3QrMTI+PjJdLGFbQT4+Ml09YVtrdD4+Ml0sYVtBKzQ+PjJdPWFba3QrND4+Ml0sYVtBKzg+PjJdPWFba3QrOD4+Ml0sYVtBKzEyPj4yXT1hW2t0KzEyPj4yXSxxcj0oMHxhW3c+PjJdKSsoKENyPW0rMnwwKTw8NCl8MCxiPTEm''@;'; put 'put ''YVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhDcj0oMHxhW00+PjJdKSsoQ3I8PDQpfDApPj4yXSxhW0dlKzQ+PjJdPWFbQ3IrND4+Ml0sYVtHZSs4Pj4yXT1hW0NyKzg+PjJdLGFbR2UrMTI+PjJdPWFbQ3IrMTI+PjJdLGFbbHQ+PjJdPWFbd3Q+PjJdLGFbbHQrND4+Ml09YVt3''@;'; put 'put ''dCs0Pj4yXSxhW2x0Kzg+PjJdPWFbd3QrOD4+Ml0sYVtsdCsxMj4+Ml09YVt3dCsxMj4+Ml0sazcoYXQsR2UsbHQsYiksYVtxcj4+Ml09YVthdD4+Ml0sYVtxcis0Pj4yXT1hW2F0KzQ+PjJdLGFbcXIrOD4+Ml09YVthdCs4Pj4yXSxhW3FyKzEyPj4yXT1hW2F0KzEyPj4yXSxhW21lPj4yXT1h''@;'; put 'put ''W2F0Pj4yXSxhW21lKzQ+PjJdPWFbYXQrND4+Ml0sYVttZSs4Pj4yXT1hW2F0Kzg+PjJdLGFbbWUrMTI+PjJdPWFbYXQrMTI+PjJdLENyPTEmYVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhiPSgwfGFbTT4+Ml0pKygocXI9bSszfDApPDw0KXwwKT4+Ml0sYVtHZSs0Pj4yXT1h''@;'; put 'put ''W2IrND4+Ml0sYVtHZSs4Pj4yXT1hW2IrOD4+Ml0sYVtHZSsxMj4+Ml09YVtiKzEyPj4yXSxhW2x0Pj4yXT1hW3d0Pj4yXSxhW2x0KzQ+PjJdPWFbd3QrND4+Ml0sYVtsdCs4Pj4yXT1hW3d0Kzg+PjJdLGFbbHQrMTI+PjJdPWFbd3QrMTI+PjJdLGs3KEV0LEdlLGx0LENyKSxhW2JlPj4yXT1h''@;'; put 'put ''W0V0Pj4yXSxhW2JlKzQ+PjJdPWFbRXQrND4+Ml0sYVtiZSs4Pj4yXT1hW0V0Kzg+PjJdLGFbYmUrMTI+PjJdPWFbRXQrMTI+PjJdLGVJKDE2KygwfGFbZXQ+PjJdKXwwLEZuKSxtPXFyfTQ4PT0oMHxrcikmJihrcj0wKSwwfChtPTB8YVs5NisoMHxhW0c+PjJdKT4+Ml0pJiYocXI9bSs1Nnww''@;'; put 'put ''LENyPTEmYVsxMTYrKDB8YVtldD4+Ml0pPj4yXSxhW0dlPj4yXT1hWyhSPTU2KygwfGFbOTYrKDB8YVtSPj4yXSk+PjJdKXwwKT4+Ml0sYVtHZSs0Pj4yXT1hW1IrND4+Ml0sYVtHZSs4Pj4yXT1hW1IrOD4+Ml0sYVtHZSsxMj4+Ml09YVtSKzEyPj4yXSxhW2x0Pj4yXT1hW3d0Pj4yXSxhW2x0''@;'; put 'put ''KzQ+PjJdPWFbd3QrND4+Ml0sYVtsdCs4Pj4yXT1hW3d0Kzg+PjJdLGFbbHQrMTI+PjJdPWFbd3QrMTI+PjJdLGs3KFp0LEdlLGx0LENyKSxhW3FyPj4yXT1hW1p0Pj4yXSxhW3FyKzQ+PjJdPWFbWnQrND4+Ml0sYVtxcis4Pj4yXT1hW1p0Kzg+PjJdLGFbcXIrMTI+PjJdPWFbWnQrMTI+PjJd''@;'; put 'put ''LHVlWzgxKyhxcj0wfGFbOTYrKDB8YVtHPj4yXSk+PjJdKT4+MF09MSxKZChsLHFyKSl9Sz1LKzF8MH1UWShqZSxIZSl9ZWxzZSBrcj0zfXdoaWxlKDApOzM9PSgwfGtyKSYmMD09KDB8YVs0NjczOF0pJiYoYVs0NjczOF09MSxYcigwLDg1MzU1LGxyKSxrcj0wfCRyKHV0KSxDcj0wIT0oMHxs''@;'; put 'put ''YyhsKSkscXI9MHwkcihydCksYVtOcj4+Ml09a3IsYVtOcis0Pj4yXT1Dcj8xMzc3Mzg6MTQxNzQ3LGFbTnIrOD4+Ml09cXIsWHIoMyw4NTQ2MSxOcikpLG9lPWNyfShsLHAsbSxBLEcsdyksb2U9cnR9ZnVuY3Rpb24gczBlKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9''@;'; put 'put ''MCxBfD0wLHd8PTA7dmFyIEV0LHJuLHluLEZuLGxyLE5yLGtyLGNyLENyLHFyLExyLGEwLFBpLEhvLHlhLFZsLHdhLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCxNdD0wLGt0PTAs''@;'; put 'put ''YXQ9MCxadD0wLHV0PTAsd3Q9MCxGaT0wLGxvPTAsQ2k9MDtpZih3YT1vZSxvZT1vZSsyNTc2fDAsY3I9d2ErMjUyOHwwLGxvPXdhKzI1Njh8MCxNPXdhKzIxNzZ8MCxQaT13YSsxODA4fDAseWE9d2ErMTcxMnwwLENyPXdhKzEwMTZ8MCxxcj13YSszMjB8MCxMcj13YSsyNTZ8MCxGaT13YSsy''@;'; put 'put ''NTY0fDAsSG89d2ErMjU2MHwwLGplPXdhKzI4OHwwLGV0PXdhKzIyNHwwLHJuPXdhKzE5MnwwLHluPXdhKzE2MHwwLEZuPXdhKzEyOHwwLGxyPXdhKzk2fDAsTnI9d2ErNjR8MCxrcj13YSszMnwwLGEwPXdhLGFbKHBlPTE2KyhtZT13YSsxOTA0fDApfDApPj4yXT1iPXdhKzIzNTJ8MCxhWyhE''@;'; put 'put ''PVBpKzE2fDApPj4yXT1NLGFbKFZsPXlhKzE2fDApPj4yXT13YSsyZTMsMHxhWzQ2NzM0XXx8KGFbNDY3MzRdPTB8UW4oMzJlMyksYVs0NjczNV09MHxRbigzMmUzKSxhWzQ2NzM2XT0yZTMsYVs0NjczN109MmUzKSxSPTQ4KyhiZT0wfGFbcCsobTw8Mik+PjJdKXwwLEc9YmUrLTQ4fDAsSz1i''@;'; put 'put ''ZSsxNnwwLCgwfCgoMHwod3Q9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwod3Q9MyZhW2JlPj4yXSkpP2JlOlIpKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8d3QpP2JlOkcpKzQwPj4yXSk+PjJdKT4+Ml0pfDApKT4tMT93dDowLXd0fDApKTw9''@;'; put 'put ''MSlpZigzMiZhWzE2NCsoYj0wfGFbSz4+Ml0pPj4yXSl7RG8oMHwoTT0wfGFbcGU+PjJdKSwwfGIsMTc2KSxCZT1iZSxIZT0oTGU9bWUpKzQ4fDA7ZG97YVtMZT4+Ml09YVtCZT4+Ml0sTGU9TGUrNHwwLEJlPUJlKzR8MH13aGlsZSgoMHxMZSk8KDB8SGUpKTthW3BlPj4yXT1NLGFbKDM9PSgw''@;'; put 'put ''fChMZT0zJmFbbWU+PjJdKSk/bWU6bWUrNDh8MCkrNDA+PjJdPWFbKDI9PSgzJmFbYmU+PjJdfDApP2JlOkcpKzQwPj4yXSxhWygyPT0oMHxMZSk/bWU6bWUrLTQ4fDApKzQwPj4yXT1hWygzPT0oMyZhW2JlPj4yXXwwKT9iZTpSKSs0MD4+Ml0sQmU9NTYrKDB8YVtLPj4yXSl8MCxIZT00MCso''@;'; put 'put ''TGU9TSsxNnwwKXwwO2Rve2FbTGU+PjJdPWFbQmU+PjJdLExlPUxlKzR8MCxCZT1CZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSk7QmU9MTYrKDB8YVtLPj4yXSl8MCxIZT00MCsoTGU9NTYrKGI9MHxhW3BlPj4yXSl8MCl8MDtkb3thW0xlPj4yXT1hW0JlPj4yXSxMZT1MZSs0fDAsQmU9QmUr''@;'; put 'put ''NHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO3VlW2IrMTEyPj4wXT0xLE09MCx1dD0xMn1lbHNlIHd0PWJlLE09MDtlbHNle0RvKDB8YiwwfGFbSz4+Ml0sMTc2KSxCZT1iZSxIZT0oTGU9bWUpKzQ4fDA7ZG97YVtMZT4+Ml09YVtCZT4+Ml0sTGU9TGUrNHwwLEJlPUJlKzR8MH13aGlsZSgoMHxM''@;'; put 'put ''ZSk8KDB8SGUpKTtCZT1SLEhlPTQ4KyhMZT1tZSs0OHwwKXwwO2Rve2FbTGU+PjJdPWFbQmU+PjJdLExlPUxlKzR8MCxCZT1CZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSk7aWYoYVtwZT4+Ml09YiwzMiZhWzE2NCsoYj0wfGFbSz4+Ml0pPj4yXSl7RG8oMHwoTT0wfGFbRD4+Ml0pLDB8Yiwx''@;'; put 'put ''NzYpLEJlPWJlLEhlPShMZT1QaSkrNDh8MDtkb3thW0xlPj4yXT1hW0JlPj4yXSxMZT1MZSs0fDAsQmU9QmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO2FbRD4+Ml09TSxhWygzPT0oMHwoTGU9MyZhW1BpPj4yXSkpP1BpOlBpKzQ4fDApKzQwPj4yXT1hWygyPT0oMyZhW2JlPj4yXXwwKT9i''@;'; put 'put ''ZTpHKSs0MD4+Ml0sYVsoMj09KDB8TGUpP1BpOlBpKy00OHwwKSs0MD4+Ml09YVsoMz09KDMmYVtiZT4+Ml18MCk/YmU6UikrNDA+PjJdLEJlPTU2KygwfGFbSz4+Ml0pfDAsSGU9NDArKExlPU0rMTZ8MCl8MDtkb3thW0xlPj4yXT1hW0JlPj4yXSxMZT1MZSs0fDAsQmU9QmUrNHwwfXdoaWxl''@;'; put 'put ''KCgwfExlKTwoMHxIZSkpO0JlPTE2KygwfGFbSz4+Ml0pfDAsSGU9NDArKExlPTU2KyhiPTB8YVtEPj4yXSl8MCl8MDtkb3thW0xlPj4yXT1hW0JlPj4yXSxMZT1MZSs0fDAsQmU9QmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO3VlW2IrMTEyPj4wXT0xLGFbYisxMTY+PjJdPWJlLGFbKDM9''@;'; put 'put ''PSgzJihEPTB8YVttZT4+Ml0pfDApP21lOm1lKzQ4fDApKzQwPj4yXT1hWygyPT0oMyZhW2JlPj4yXXwwKT9iZTpHKSs0MD4+Ml0sQmU9NTYrKDB8YVtLPj4yXSl8MCxIZT00MCsoTGU9MTYrKDB8YVtwZT4+Ml0pfDApfDA7ZG97YVtMZT4+Ml09YVtCZT4+Ml0sTGU9TGUrNHwwLEJlPUJlKzR8''@;'; put 'put ''MH13aGlsZSgoMHxMZSk8KDB8SGUpKX1lbHNle0RvKDB8TSwwfGIsMTc2KSxCZT1iZSxIZT0oTGU9UGkpKzQ4fDA7ZG97YVtMZT4+Ml09YVtCZT4+Ml0sTGU9TGUrNHwwLEJlPUJlKzR8MH13aGlsZSgoMHxMZSk8KDB8SGUpKTthW0Q+PjJdPU0sYVsoMz09KDMmKEQ9MHxhW21lPj4yXSl8MCk/''@;'; put 'put ''bWU6bWUrNDh8MCkrNDA+PjJdPWFbKDM9PSgzJmFbYmU+PjJdfDApP2JlOlIpKzQwPj4yXSxCZT1SLEhlPTQ4KyhMZT1QaSs0OHwwKXwwO2Rve2FbTGU+PjJdPWFbQmU+PjJdLExlPUxlKzR8MCxCZT1CZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSl9Zm9yKGI9MHxseShiZSk7TT0wfGFbMTcy''@;'; put 'put ''KygwfGFbYisxNj4+Ml0pPj4yXTspYj1NO2FbKDI9PSgzJkR8MCk/bWU6bWUrLTQ4fDApKzQwPj4yXT1hWygyPT0oMyZhW2I+PjJdfDApP2I6YistNDh8MCkrNDA+PjJdLHVlWzg0KyhiPTB8YVtwZT4+Ml0pPj4wXT0wLHVlW2IrMTEyPj4wXT0xLGFbKE09Yis1NnwwKT4+Ml09MCxhW00rND4+''@;'; put 'put ''Ml09MCxhW00rOD4+Ml09MCxhW00rMTI+PjJdPTAsTT0xLHV0PTEyfTEyPT0oMHx1dCkmJihhW2IrMTE2Pj4yXT1iZSx3dD1tZSksdXQ9KEV0PTI9PSgwfHcpKSYmKE9lPTB8ZnVuY3Rpb24gdTBlKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBNLEQsRyxLLHBlLE9lLExlLEJlLG09MCxB''@;'; put 'put ''PTAsdz0wLGI9MCxrPTAsUj0wLG1lPTAsYmU9MCxIZT0wO2ZvcihCZT1vZSxvZT1vZSs5NnwwLEc9QmUrODB8MCxwZT1CZSs2NHwwLEs9QmUrNDh8MCxiZT1CZSszMnwwLE9lPUJlKzE2fDAsTGU9QmUsaz1jfD0wOzB8dWVbMTEyKyhtPTB8YVsobWU9aysxNnwwKT4+Ml0pPj4wXTspaz0wfGFb''@;'; put 'put ''bSsxMTY+PjJdO3N3aXRjaChEPTB8YVsoMj09KDB8KG09MyZhW2s+PjJdKSk/azprKy00OHwwKSs0MD4+Ml0sbT0wfGFbKDM9PSgwfG0pP2s6ays0OHwwKSs0MD4+Ml0sMHwoKDB8KEhlPSgwfGFbMjMyKygwfGFbKGs9RCsxNnwwKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsoTT1tKzE2fDAp''@;'; put 'put ''Pj4yXSk+PjJdKXwwKSk+LTE/SGU6MC1IZXwwKSl7Y2FzZSAxOm09MDticmVhaztjYXNlIDI6MSZ1ZVsxMTMrKDB8YVsxNisoMHxhW2wrNjA+PjJdKT4+Ml0pPj4wXT9tPTA6Uj02O2JyZWFrO2RlZmF1bHQ6Uj02fWRve2lmKDY9PSgwfFIpKXtpZigoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6''@;'; put 'put ''Yys0OHwwKSs0MD4+Ml0pPT0oMHxtKT8oYVtwPj4yXT1ELFI9MTYrKDB8YVttZT4+Ml0pfDAsYVtwZT4+Ml09YVsoSGU9MTYrKDB8YVtNPj4yXSl8MCk+PjJdLGFbcGUrND4+Ml09YVtIZSs0Pj4yXSxhW3BlKzg+PjJdPWFbSGUrOD4+Ml0sYVtwZSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtHPj4y''@;'; put 'put ''XT1hW1I+PjJdLGFbRys0Pj4yXT1hW1IrND4+Ml0sYVtHKzg+PjJdPWFbUis4Pj4yXSxhW0crMTI+PjJdPWFbUisxMj4+Ml0sV2QoYmUscGUsRyksSGU9NTYrKDB8YVttZT4+Ml0pfDAsYVtwZT4+Ml09YVsoUj0xNisoMHxhW2s+PjJdKXwwKT4+Ml0sYVtwZSs0Pj4yXT1hW1IrND4+Ml0sYVtw''@;'; put 'put ''ZSs4Pj4yXT1hW1IrOD4+Ml0sYVtwZSsxMj4+Ml09YVtSKzEyPj4yXSxhW0c+PjJdPWFbSGU+PjJdLGFbRys0Pj4yXT1hW0hlKzQ+PjJdLGFbRys4Pj4yXT1hW0hlKzg+PjJdLGFbRysxMj4+Ml09YVtIZSsxMj4+Ml0sV2QoT2UscGUsRykpOihhW3A+PjJdPW0sUj01NisoMHxhW21lPj4yXSl8''@;'; put 'put ''MCxhW3BlPj4yXT1hWyhIZT0xNisoMHxhW2s+PjJdKXwwKT4+Ml0sYVtwZSs0Pj4yXT1hW0hlKzQ+PjJdLGFbcGUrOD4+Ml09YVtIZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW0hlKzEyPj4yXSxhW0c+PjJdPWFbUj4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4yXSxhW0crOD4+Ml09YVtSKzg+PjJdLGFb''@;'; put 'put ''RysxMj4+Ml09YVtSKzEyPj4yXSxXZChiZSxwZSxHKSxIZT0xNisoMHxhW21lPj4yXSl8MCxhW3BlPj4yXT1hWyhSPTE2KygwfGFbTT4+Ml0pfDApPj4yXSxhW3BlKzQ+PjJdPWFbUis0Pj4yXSxhW3BlKzg+PjJdPWFbUis4Pj4yXSxhW3BlKzEyPj4yXT1hW1IrMTI+PjJdLGFbRz4+Ml09YVtI''@;'; put 'put ''ZT4+Ml0sYVtHKzQ+PjJdPWFbSGUrND4+Ml0sYVtHKzg+PjJdPWFbSGUrOD4+Ml0sYVtHKzEyPj4yXT1hW0hlKzEyPj4yXSxXZChPZSxwZSxHKSksIShtPTB8YVs5NisoMHxhW21lPj4yXSk+PjJdKSl7bT1mKzE2fDAsYVtmPj4yXT1hW2JlPj4yXSxhW2YrND4+Ml09YVtiZSs0Pj4yXSxhW2Yr''@;'; put 'put ''OD4+Ml09YVtiZSs4Pj4yXSxhW2YrMTI+PjJdPWFbYmUrMTI+PjJdLGFbbT4+Ml09YVtiZT4+Ml0sYVttKzQ+PjJdPWFbYmUrND4+Ml0sYVttKzg+PjJdPWFbYmUrOD4+Ml0sYVttKzEyPj4yXT1hW2JlKzEyPj4yXSxtPWYrNDh8MCxhWyhIZT1mKzMyfDApPj4yXT1hW09lPj4yXSxhW0hlKzQ+''@;'; put 'put ''PjJdPWFbT2UrND4+Ml0sYVtIZSs4Pj4yXT1hW09lKzg+PjJdLGFbSGUrMTI+PjJdPWFbT2UrMTI+PjJdLGFbbT4+Ml09YVtPZT4+Ml0sYVttKzQ+PjJdPWFbT2UrND4+Ml0sYVttKzg+PjJdPWFbT2UrOD4+Ml0sYVttKzEyPj4yXT1hW09lKzEyPj4yXSxtPTQ7YnJlYWt9dz0rX1ttKzI0Pj4z''@;'; put 'put ''XSxBPStfW20rMzI+PjNdLGI9KFI9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcihEKSk+PjJdKT4+Ml18MCkpP0E6dyxhW0xlPj4yXT1hWyhIZT01NisoMHxhWzk2KygwfGFbbWU+PjJdKT4+Ml0pfDApPj4yXSxhW0xlKzQ+PjJdPWFbSGUrND4+Ml0sYVtMZSs4Pj4yXT1hW0hlKzg+PjJdLGFb''@;'; put 'put ''TGUrMTI+PjJdPWFbSGUrMTI+PjJdLGFbSz4+Ml09YVtPZT4+Ml0sYVtLKzQ+PjJdPWFbT2UrND4+Ml0sYVtLKzg+PjJdPWFbT2UrOD4+Ml0sYVtLKzEyPj4yXT1hW09lKzEyPj4yXSxhW3BlPj4yXT1hW2JlPj4yXSxhW3BlKzQ+PjJdPWFbYmUrND4+Ml0sYVtwZSs4Pj4yXT1hW2JlKzg+PjJd''@;'; put 'put ''LGFbcGUrMTI+PjJdPWFbYmUrMTI+PjJdLGFbRz4+Ml09YVtIZT4+Ml0sYVtHKzQ+PjJdPWFbSGUrND4+Ml0sYVtHKzg+PjJdPWFbSGUrOD4+Ml0sYVtHKzEyPj4yXT1hW0hlKzEyPj4yXSxIZT0wPT0oMHxNWShLLHBlLEcpKSxBPS41KihSP3c6QSksdz0rX1tMZT4+M10sSGU/KF9bTGU+PjNd''@;'; put 'put ''PXctQSxfWyhIZT1MZSs4fDApPj4zXT0rX1tIZT4+M10rLjUqYik6KF9bTGU+PjNdPXcrQSxfWyhIZT1MZSs4fDApPj4zXT0rX1tIZT4+M10tLjUqYiksbT1mKzE2fDAsYVtmPj4yXT1hW2JlPj4yXSxhW2YrND4+Ml09YVtiZSs0Pj4yXSxhW2YrOD4+Ml09YVtiZSs4Pj4yXSxhW2YrMTI+PjJd''@;'; put 'put ''PWFbYmUrMTI+PjJdLGFbbT4+Ml09YVtiZT4+Ml0sYVttKzQ+PjJdPWFbYmUrND4+Ml0sYVttKzg+PjJdPWFbYmUrOD4+Ml0sYVttKzEyPj4yXT1hW2JlKzEyPj4yXSxtPWYrMzJ8MCxIZT1mKzQ4fDAsYVsoYmU9Zis2NHwwKT4+Ml09YVtMZT4+Ml0sYVtiZSs0Pj4yXT1hW0xlKzQ+PjJdLGFb''@;'; put 'put ''YmUrOD4+Ml09YVtMZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0hlPj4yXT1hW0xlPj4yXSxhW0hlKzQ+PjJdPWFbTGUrND4+Ml0sYVtIZSs4Pj4yXT1hW0xlKzg+PjJdLGFbSGUrMTI+PjJdPWFbTGUrMTI+PjJdLGFbbT4+Ml09YVtMZT4+Ml0sYVttKzQ+PjJdPWFbTGUrND4+''@;'; put 'put ''Ml0sYVttKzg+PjJdPWFbTGUrOD4+Ml0sYVttKzEyPj4yXT1hW0xlKzEyPj4yXSxtPWYrODB8MCxhWyhIZT1mKzk2fDApPj4yXT1hW09lPj4yXSxhW0hlKzQ+PjJdPWFbT2UrND4+Ml0sYVtIZSs4Pj4yXT1hW09lKzg+PjJdLGFbSGUrMTI+PjJdPWFbT2UrMTI+PjJdLGFbbT4+Ml09YVtPZT4+''@;'; put 'put ''Ml0sYVttKzQ+PjJdPWFbT2UrND4+Ml0sYVttKzg+PjJdPWFbT2UrOD4+Ml0sYVttKzEyPj4yXT1hW09lKzEyPj4yXSxtPTd9fXdoaWxlKDApO3JldHVybiBvZT1CZSwwfG19KGwsd3QsMHxhWzQ2NzM0XSxsbyksYVtIbz4+Ml09T2UsMCE9KDB8T2UpKT82MzoxNTtlOmRve2lmKDE1PT0oMHx1''@;'; put 'put ''dCkpe2F0PTEwPT0oMHx3KSxhW0hvPj4yXT0wLGI9MHxhWygzPT0oMHwoRD0zJmFbd3Q+PjJdKSk/d3Q6d3QrNDh8MCkrNDA+PjJdLGFbbG8+PjJdPUQ9MHxhWygyPT0oMHxEKT93dDp3dCstNDh8MCkrNDA+PjJdLHg1KGplLGwsYyxiLDAsd3QpLGFbQ3I+PjJdPWFbamU+PjJdLGFbQ3IrND4+''@;'; put 'put ''Ml09YVtqZSs0Pj4yXSxhW0NyKzg+PjJdPWFbamUrOD4+Ml0sYVtDcisxMj4+Ml09YVtqZSsxMj4+Ml0sYVtDcisxNj4+Ml09YVtqZSsxNj4+Ml0sYVtDcisyMD4+Ml09YVtqZSsyMD4+Ml0sYVtDcisyND4+Ml09YVtqZSsyND4+Ml0sYVtDcisyOD4+Ml09YVtqZSsyOD4+Ml0sYVtMcj4+Ml09''@;'; put 'put ''YVtqZT4+Ml0sYVtMcis0Pj4yXT1hW2plKzQ+PjJdLGFbTHIrOD4+Ml09YVtqZSs4Pj4yXSxhW0xyKzEyPj4yXT1hW2plKzEyPj4yXSxhW0xyKzE2Pj4yXT1hW2plKzE2Pj4yXSxhW0xyKzIwPj4yXT1hW2plKzIwPj4yXSxiRChmLHd0LDEsQ3IsMHxycChiKSksX1sobHQ9THIrMjR8MCk+PjNd''@;'; put 'put ''PStfW0NyKzU2KygoWnQ9KDB8YVsocnQ9Q3IrNTJ8MCk+PjJdKS0xfDApPDw1KSsyND4+M10sX1soTXQ9THIrOHwwKT4+M109K19bQ3IrNTYrKFp0PDw1KSs4Pj4zXSxrPStfWzI0KyhadD0wfGFbYisxNj4+Ml0pPj4zXS0rX1soMHxhWzE5NisoMHxhWyhrdD1sKzE2fDApPj4yXSk+PjJdKSso''@;'; put 'put ''YVtadCsyMzI+PjJdPDw2KSsxNj4+M10sYVtjcj4+Ml09YVtMcj4+Ml0sYVtjcis0Pj4yXT1hW0xyKzQ+PjJdLGFbY3IrOD4+Ml09YVtMcis4Pj4yXSxhW2NyKzEyPj4yXT1hW0xyKzEyPj4yXSxhW2NyKzE2Pj4yXT1hW0xyKzE2Pj4yXSxhW2NyKzIwPj4yXT1hW0xyKzIwPj4yXSxhW2NyKzI0''@;'; put 'put ''Pj4yXT1hW0xyKzI0Pj4yXSxhW2NyKzI4Pj4yXT1hW0xyKzI4Pj4yXSx1eShldCxjciwxLGspLGFbTHI+PjJdPWFbZXQ+PjJdLGFbTHIrND4+Ml09YVtldCs0Pj4yXSxhW0xyKzg+PjJdPWFbZXQrOD4+Ml0sYVtMcisxMj4+Ml09YVtldCsxMj4+Ml0sYVtMcisxNj4+Ml09YVtldCsxNj4+Ml0s''@;'; put 'put ''YVtMcisyMD4+Ml09YVtldCsyMD4+Ml0sYVtMcisyND4+Ml09YVtldCsyND4+Ml0sYVtMcisyOD4+Ml09YVtldCsyOD4+Ml0sK19bTHI+PjNdPCtfWyhldD1McisxNnwwKT4+M10mJitfW010Pj4zXTwrX1tsdD4+M10mJihhW3J0Pj4yXT0xKyhadD0wfGFbcnQ+PjJdKSxhWyhadD1Dcis1Niso''@;'; put 'put ''WnQ8PDUpfDApPj4yXT1hW0xyPj4yXSxhW1p0KzQ+PjJdPWFbTHIrND4+Ml0sYVtadCs4Pj4yXT1hW0xyKzg+PjJdLGFbWnQrMTI+PjJdPWFbTHIrMTI+PjJdLGFbWnQrMTY+PjJdPWFbTHIrMTY+PjJdLGFbWnQrMjA+PjJdPWFbTHIrMjA+PjJdLGFbWnQrMjQ+PjJdPWFbTHIrMjQ+PjJdLGFb''@;'; put 'put ''WnQrMjg+PjJdPWFbTHIrMjg+PjJdKSxMZT1sKzYwfDAsR2U9cXIrNTJ8MCxCZT1mKzU2fDAsSGU9Zis2OXwwLHc9ZisxNnwwLGplPWYrMjl8MCxadD13dCxHPTAsSz0tMTt0OmZvcig7Oyl7Zm9yKHBlPWIsbWU9MCxiPTAsYmU9WnQ7Oyl7aWYoT2U9RCwxIT0oMHx1ZVsxNTYrKDB8YVsoUj1E''@;'; put 'put ''KSsxNj4+Ml0pPj4wXSl8fCgwfHBhWzYzJmFbNDMyNV1dKFIpKTw8MjQ+PjI0KWJyZWFrIHQ7aWYoRD0xfG1lLENpPTE1MzcyMCsobWU8PDUpfDAsYWgocm4sYyxsLDB8YVsyMzIrKDB8YVtwZSsxNj4+Ml0pPj4yXSksYVtDaT4+Ml09YVtybj4+Ml0sYVtDaSs0Pj4yXT1hW3JuKzQ+PjJdLGFb''@;'; put 'put ''Q2krOD4+Ml09YVtybis4Pj4yXSxhW0NpKzEyPj4yXT1hW3JuKzEyPj4yXSxhW0NpKzE2Pj4yXT1hW3JuKzE2Pj4yXSxhW0NpKzIwPj4yXT1hW3JuKzIwPj4yXSxhW0NpKzI0Pj4yXT1hW3JuKzI0Pj4yXSxhW0NpKzI4Pj4yXT1hW3JuKzI4Pj4yXSxifHwoRz0oYj0oMHwoRz0wfGMwZShSKSkp''@;'; put 'put ''PCgzKyh1ZVsxMTMrKDB8YVsxNisoMHxhW0xlPj4yXSk+PjJdKT4+MF08PDEmMikmMjU1fDApKT9HOkcrLTJ8MCxLPWI/SzoxLGI9MSYoMV5iKSksISgwPT0oMHxiKXwoMHxLKT4wKSlicmVhaztDaT0xNTM3MjArKEQ8PDUpfDAseDUoeW4sbCxjLFIsYmUsMHxhW2FbMTgwKygwfGFbUisxNj4+''@;'; put 'put ''Ml0pPj4yXT4+Ml0pLGFbQ2k+PjJdPWFbeW4+PjJdLGFbQ2krND4+Ml09YVt5bis0Pj4yXSxhW0NpKzg+PjJdPWFbeW4rOD4+Ml0sYVtDaSsxMj4+Ml09YVt5bisxMj4+Ml0sYVtDaSsxNj4+Ml09YVt5bisxNj4+Ml0sYVtDaSsyMD4+Ml09YVt5bisyMD4+Ml0sYVtDaSsyND4+Ml09YVt5bisy''@;'; put 'put ''ND4+Ml0sYVtDaSsyOD4+Ml09YVt5bisyOD4+Ml0scGU9MHxhWygzPT0oMHwoRD0zJmFbKENpPTB8YVthWzE4MCsoMHxhW09lKzE2Pj4yXSk+PjJdPj4yXSk+PjJdKSk/Q2k6Q2krNDh8MCkrNDA+PjJdLGFbbG8+PjJdPUQ9MHxhWygyPT0oMHxEKT9DaTpDaSstNDh8MCkrNDA+PjJdLG1lPW1l''@;'; put 'put ''KzJ8MCxLPUsrLTF8MCxiZT1DaX1pZih4NShGbixsLGMsUixiZSwwfGFbYVsxODArKDB8YVtSKzE2Pj4yXSk+PjJdPj4yXSksYVtxcj4+Ml09YVtGbj4+Ml0sYVtxcis0Pj4yXT1hW0ZuKzQ+PjJdLGFbcXIrOD4+Ml09YVtGbis4Pj4yXSxhW3FyKzEyPj4yXT1hW0ZuKzEyPj4yXSxhW3FyKzE2''@;'; put 'put ''Pj4yXT1hW0ZuKzE2Pj4yXSxhW3FyKzIwPj4yXT1hW0ZuKzIwPj4yXSxhW3FyKzI0Pj4yXT1hW0ZuKzI0Pj4yXSxhW3FyKzI4Pj4yXT1hW0ZuKzI4Pj4yXSxfRChmLGJlLDEscXIsMHxycCgwfGFbKDI9PSgzJmFbYmU+PjJdfDApP2JlOmJlKy00OHwwKSs0MD4+Ml0pKSxrPStfWygwfGFbMTk2''@;'; put 'put ''KygwfGFba3Q+PjJdKT4+Ml0pKyhhWzIzMisobWU9MHxhW09lKzE2Pj4yXSk+PjJdPDw2KSsyND4+M10rICtfW21lKzI0Pj4zXSxhW2NyPj4yXT1hWyhDaT1xcis1NisoKDB8YVtHZT4+Ml0pLTE8PDUpfDApPj4yXSxhW2NyKzQ+PjJdPWFbQ2krND4+Ml0sYVtjcis4Pj4yXT1hW0NpKzg+PjJd''@;'; put 'put ''LGFbY3IrMTI+PjJdPWFbQ2krMTI+PjJdLGFbY3IrMTY+PjJdPWFbQ2krMTY+PjJdLGFbY3IrMjA+PjJdPWFbQ2krMjA+PjJdLGFbY3IrMjQ+PjJdPWFbQ2krMjQ+PjJdLGFbY3IrMjg+PjJdPWFbQ2krMjg+PjJdLHV5KExyLGNyLDQsayksK19bTHI+PjNdPCtfW2V0Pj4zXSYmK19bTXQ+PjNd''@;'; put 'put ''PCtfW2x0Pj4zXSYmKGFbR2U+PjJdPTErKENpPTB8YVtHZT4+Ml0pLGFbKENpPXFyKzU2KyhDaTw8NSl8MCk+PjJdPWFbTHI+PjJdLGFbQ2krND4+Ml09YVtMcis0Pj4yXSxhW0NpKzg+PjJdPWFbTHIrOD4+Ml0sYVtDaSsxMj4+Ml09YVtMcisxMj4+Ml0sYVtDaSsxNj4+Ml09YVtMcisxNj4+''@;'; put 'put ''Ml0sYVtDaSsyMD4+Ml09YVtMcisyMD4+Ml0sYVtDaSsyND4+Ml09YVtMcisyND4+Ml0sYVtDaSsyOD4+Ml09YVtMcisyOD4+Ml0pLF9bQmU+PjNdPTEuNTcwNzk2MzI2Nzk0ODk2Nix1ZVtIZT4+MF09MSxiWShmLFp0LGJlLENyLHFyLEQpLGF0PyhiPTB8Z2soZixGaSksRD0wfGFbRmk+PjJd''@;'; put 'put ''LHV0PTMzKTooYj0wfHZrKGYsRmkpLEV0JigwfChEPTB8YVtGaT4+Ml0pKT40PyhhWyhDaT1iKzE2fDApPj4yXT1hW2I+PjJdLGFbQ2krND4+Ml09YVtiKzQ+PjJdLGFbQ2krOD4+Ml09YVtiKzg+PjJdLGFbQ2krMTI+PjJdPWFbYisxMj4+Ml0sYVsoQ2k9YiszMnwwKT4+Ml09YVsoRD1iKyhE''@;'; put 'put ''Ky0xPDw0KXwwKT4+Ml0sYVtDaSs0Pj4yXT1hW0QrND4+Ml0sYVtDaSs4Pj4yXT1hW0QrOD4+Ml0sYVtDaSsxMj4+Ml09YVtEKzEyPj4yXSxtcChiKzQ4fDAsMHxELDE2KSxhW0ZpPj4yXT00LEQ9NCk6dXQ9MzMpLDMzPT0oMHx1dCkmJih1dD0wLCFEKSlicmVhayBlO2ZvcigoMHwoUj0oYmU9''@;'; put 'put ''MHxhW0hvPj4yXSkrRHwwKSk+KDB8YVs0NjczNl0pPyhhWzQ2NzM2XT1SPDwxLG1lPTB8bDAoMHxhWzQ2NzM0XSxSPDw1KSxhWzQ2NzM0XT1tZSxEPTB8YVtGaT4+Ml0pOm1lPTB8YVs0NjczNF0scGU9MCxSPWJlOyEoKDB8cGUpPj0oMHxEKSk7KWFbKENpPW1lKyhSPDw0KXwwKT4+Ml09YVso''@;'; put 'put ''YmU9YisocGU8PDQpfDApPj4yXSxhW0NpKzQ+PjJdPWFbYmUrND4+Ml0sYVtDaSs4Pj4yXT1hW2JlKzg+PjJdLGFbQ2krMTI+PjJdPWFbYmUrMTI+PjJdLHBlPXBlKzF8MCxSPVIrMXwwO2FbSG8+PjJdPVIsRD0wfFp2ZSgwfGFbYVsxODArKDB8YVtPZSsxNj4+Ml0pPj4yXT4+Ml0sRyxtZSxI''@;'; put 'put ''bykscEgoWnQsZiksYj0wfGFbKDM9PSgwfChSPTMmYVtEPj4yXSkpP0Q6RCs0OHwwKSs0MD4+Ml0sYVtsbz4+Ml09Uj0wfGFbKDI9PSgwfFIpP0Q6RCstNDh8MCkrNDA+PjJdLHg1KGxyLGwsYyxiLDB8YVthWzE3MisoMHxhWyhadD1iKzE2fDApPj4yXSk+PjJdPj4yXSxEKSxhW0NyPj4yXT1h''@;'; put 'put ''W2xyPj4yXSxhW0NyKzQ+PjJdPWFbbHIrND4+Ml0sYVtDcis4Pj4yXT1hW2xyKzg+PjJdLGFbQ3IrMTI+PjJdPWFbbHIrMTI+PjJdLGFbQ3IrMTY+PjJdPWFbbHIrMTY+PjJdLGFbQ3IrMjA+PjJdPWFbbHIrMjA+PjJdLGFbQ3IrMjQ+PjJdPWFbbHIrMjQ+PjJdLGFbQ3IrMjg+PjJdPWFbbHIr''@;'; put 'put ''Mjg+PjJdLGJEKGYsRCwxLENyLDB8cnAoYikpLGs9K19bMjQrKFp0PTB8YVtadD4+Ml0pPj4zXS0rX1soMHxhWzE5NisoMHxhW2t0Pj4yXSk+PjJdKSsoYVtadCsyMzI+PjJdPDw2KSsxNj4+M10sYVtjcj4+Ml09YVsoQ2k9Q3IrNTYrKCgwfGFbcnQ+PjJdKS0xPDw1KXwwKT4+Ml0sYVtjcis0''@;'; put 'put ''Pj4yXT1hW0NpKzQ+PjJdLGFbY3IrOD4+Ml09YVtDaSs4Pj4yXSxhW2NyKzEyPj4yXT1hW0NpKzEyPj4yXSxhW2NyKzE2Pj4yXT1hW0NpKzE2Pj4yXSxhW2NyKzIwPj4yXT1hW0NpKzIwPj4yXSxhW2NyKzI0Pj4yXT1hW0NpKzI0Pj4yXSxhW2NyKzI4Pj4yXT1hW0NpKzI4Pj4yXSx1eShMcixj''@;'; put 'put ''ciwxLGspLCtfW0xyPj4zXTwrX1tldD4+M10mJitfW010Pj4zXTwrX1tsdD4+M10mJihhW3J0Pj4yXT0xKyhDaT0wfGFbcnQ+PjJdKSxhWyhDaT1Dcis1NisoQ2k8PDUpfDApPj4yXT1hW0xyPj4yXSxhW0NpKzQ+PjJdPWFbTHIrND4+Ml0sYVtDaSs4Pj4yXT1hW0xyKzg+PjJdLGFbQ2krMTI+''@;'; put 'put ''PjJdPWFbTHIrMTI+PjJdLGFbQ2krMTY+PjJdPWFbTHIrMTY+PjJdLGFbQ2krMjA+PjJdPWFbTHIrMjA+PjJdLGFbQ2krMjQ+PjJdPWFbTHIrMjQ+PjJdLGFbQ2krMjg+PjJdPWFbTHIrMjg+PjJdKSxfW3c+PjNdPS0xLjU3MDc5NjMyNjc5NDg5NjYsdWVbamU+PjBdPTEsWnQ9RCxEPVJ9aWYo''@;'; put 'put ''Yj0xfG1lLEs9MTUzNzIwKyhtZTw8NSl8MCxhaChOcixjLGwsMHxhWzIzMisoMHxhW3BlKzE2Pj4yXSk+PjJdKSxhW0s+PjJdPWFbTnI+PjJdLGFbSys0Pj4yXT1hW05yKzQ+PjJdLGFbSys4Pj4yXT1hW05yKzg+PjJdLGFbSysxMj4+Ml09YVtOcisxMj4+Ml0sYVtLKzE2Pj4yXT1hW05yKzE2''@;'; put 'put ''Pj4yXSxhW0srMjA+PjJdPWFbTnIrMjA+PjJdLGFbSysyND4+Ml09YVtOcisyND4+Ml0sYVtLKzI4Pj4yXT1hW05yKzI4Pj4yXSx4NShrcixsLGMsUixiZSwwKSxhW3FyPj4yXT1hW2tyPj4yXSxhW3FyKzQ+PjJdPWFba3IrND4+Ml0sYVtxcis4Pj4yXT1hW2tyKzg+PjJdLGFbcXIrMTI+PjJd''@;'; put 'put ''PWFba3IrMTI+PjJdLGFbcXIrMTY+PjJdPWFba3IrMTY+PjJdLGFbcXIrMjA+PjJdPWFba3IrMjA+PjJdLGFbcXIrMjQ+PjJdPWFba3IrMjQ+PjJdLGFbcXIrMjg+PjJdPWFba3IrMjg+PjJdLGFbTHI+PjJdPWFba3I+PjJdLGFbTHIrND4+Ml09YVtrcis0Pj4yXSxhW0xyKzg+PjJdPWFba3Ir''@;'; put 'put ''OD4+Ml0sYVtMcisxMj4+Ml09YVtrcisxMj4+Ml0sYVtMcisxNj4+Ml09YVtrcisxNj4+Ml0sYVtMcisyMD4+Ml09YVtrcisyMD4+Ml0sYVtMcisyND4+Ml09YVtrcisyND4+Ml0sYVtMcisyOD4+Ml09YVtrcisyOD4+Ml0scGU9YmUrLTQ4fDAsX0QoZiwoSz0wIT0oMHxNKSk/UGk6YmUsMSxx''@;'; put 'put ''ciwwfHJwKDB8YVsoMj09KDMmYVtiZT4+Ml18MCk/YmU6cGUpKzQwPj4yXSkpLF9bbHQ+PjNdPStfW3FyKzU2KygoQ2k9KDB8YVtHZT4+Ml0pLTF8MCk8PDUpKzI0Pj4zXSxfW010Pj4zXT0rX1txcis1NisoQ2k8PDUpKzg+PjNdLGs9K19bKDB8YVsxOTYrKDB8YVtrdD4+Ml0pPj4yXSkrKGFb''@;'; put 'put ''MjMyKyhDaT0wfGFbT2UrMTY+PjJdKT4+Ml08PDYpKzI0Pj4zXSsgK19bQ2krMjQ+PjNdLGFbY3I+PjJdPWFbTHI+PjJdLGFbY3IrND4+Ml09YVtMcis0Pj4yXSxhW2NyKzg+PjJdPWFbTHIrOD4+Ml0sYVtjcisxMj4+Ml09YVtMcisxMj4+Ml0sYVtjcisxNj4+Ml09YVtMcisxNj4+Ml0sYVtj''@;'; put 'put ''cisyMD4+Ml09YVtMcisyMD4+Ml0sYVtjcisyND4+Ml09YVtMcisyND4+Ml0sYVtjcisyOD4+Ml09YVtMcisyOD4+Ml0sdXkoYTAsY3IsNCxrKSxhW0xyPj4yXT1hW2EwPj4yXSxhW0xyKzQ+PjJdPWFbYTArND4+Ml0sYVtMcis4Pj4yXT1hW2EwKzg+PjJdLGFbTHIrMTI+PjJdPWFbYTArMTI+''@;'; put 'put ''PjJdLGFbTHIrMTY+PjJdPWFbYTArMTY+PjJdLGFbTHIrMjA+PjJdPWFbYTArMjA+PjJdLGFbTHIrMjQ+PjJdPWFbYTArMjQ+PjJdLGFbTHIrMjg+PjJdPWFbYTArMjg+PjJdLCtfW0xyPj4zXTwrX1tldD4+M10mJitfW010Pj4zXTwrX1tsdD4+M10mJihhW0dlPj4yXT0xKyhDaT0wfGFbR2U+''@;'; put 'put ''PjJdKSxhWyhDaT1xcis1NisoQ2k8PDUpfDApPj4yXT1hW0xyPj4yXSxhW0NpKzQ+PjJdPWFbTHIrND4+Ml0sYVtDaSs4Pj4yXT1hW0xyKzg+PjJdLGFbQ2krMTI+PjJdPWFbTHIrMTI+PjJdLGFbQ2krMTY+PjJdPWFbTHIrMTY+PjJdLGFbQ2krMjA+PjJdPWFbTHIrMjA+PjJdLGFbQ2krMjQ+''@;'; put 'put ''PjJdPWFbTHIrMjQ+PjJdLGFbQ2krMjg+PjJdPWFbTHIrMjg+PjJdKSxiWShmLFp0LGJlLENyLHFyLGIpLEc9YXQ/MHxnayhmLEZpKTowfHZrKGYsRmkpLEV0JigwfChiPTB8YVtGaT4+Ml0pKT40KWFbKENpPUcrMTZ8MCk+PjJdPWFbRz4+Ml0sYVtDaSs0Pj4yXT1hW0crND4+Ml0sYVtDaSs4''@;'; put 'put ''Pj4yXT1hW0crOD4+Ml0sYVtDaSsxMj4+Ml09YVtHKzEyPj4yXSxhWyhDaT1HKzMyfDApPj4yXT1hWyhiPUcrKGIrLTE8PDQpfDApPj4yXSxhW0NpKzQ+PjJdPWFbYis0Pj4yXSxhW0NpKzg+PjJdPWFbYis4Pj4yXSxhW0NpKzEyPj4yXT1hW2IrMTI+PjJdLG1wKEcrNDh8MCwwfGIsMTYpLGFb''@;'; put 'put ''Rmk+PjJdPTQsYj00O2Vsc2UgaWYoIWIpYnJlYWs7Zm9yKCgwfChNPShEPTB8YVtIbz4+Ml0pK2J8MCkpPigwfGFbNDY3MzZdKT8oYVs0NjczNl09TTw8MSxSPTB8bDAoMHxhWzQ2NzM0XSxNPDw1KSxhWzQ2NzM0XT1SLGI9MHxhW0ZpPj4yXSk6Uj0wfGFbNDY3MzRdLE09MDshKCgwfE0pPj0o''@;'; put 'put ''MHxiKSk7KWFbKENpPVIrKEQ8PDQpfDApPj4yXT1hWyhGaT1HKyhNPDw0KXwwKT4+Ml0sYVtDaSs0Pj4yXT1hW0ZpKzQ+PjJdLGFbQ2krOD4+Ml09YVtGaSs4Pj4yXSxhW0NpKzEyPj4yXT1hW0ZpKzEyPj4yXSxNPU0rMXwwLEQ9RCsxfDA7YVtIbz4+Ml09RCxwSChadCxmKSxhW2xvPj4yXT1h''@;'; put 'put ''WyhiPUs/Mj09KDMmYVtQaT4+Ml18MCk/UGk6UGkrLTQ4fDA6Mj09KDMmYVtiZT4+Ml18MCk/YmU6cGUpKzQwPj4yXSxPZT1ELHV0PTYzfX13aGlsZSgwKTtlOmRve2lmKDYzPT0oMHx1dCkpe2lmKDE9PSgwfEEpKXtBdSh3dCwwfGFbbG8+PjJdLDB8YVs0NjczNF0sT2UsMTcyOTYpO2JyZWFr''@;'; put 'put ''fWZvcihiZT1PZSstMXwwLGs9KygwfCgwfHZyKDB8YVsobWU9YysxMnwwKT4+Ml0sQSstMXwwKSkvMiksTT0wfGFbNDY3MzRdLGI9MTshKCgwfGIpPj0oMHxiZSkpOylfWyhDaT1NKyhiPDw0KXwwKT4+M109K19bQ2k+PjNdLWssYj1iKzF8MDtmb3IoKDB8KGI9MHxhWzQ2NzM2XSkpPigwfGFb''@;'; put 'put ''NDY3MzddKT8oYVs0NjczN109YixEPTB8bDAoMHxhWzQ2NzM1XSxiPDw0KSxhWzQ2NzM1XT1ELE09MHxhWzQ2NzM0XSk6RD0wfGFbNDY3MzVdLGI9MDshKCgwfGIpPj0oMHxPZSkpOylhWyhDaT1EKyhiPDw0KXwwKT4+Ml09YVsoYz1NKyhiPDw0KXwwKT4+Ml0sYVtDaSs0Pj4yXT1hW2MrND4+''@;'; put 'put ''Ml0sYVtDaSs4Pj4yXT1hW2MrOD4+Ml0sYVtDaSsxMj4+Ml09YVtjKzEyPj4yXSxiPWIrMXwwO2ZvcihBdSh3dCwwfGFbbG8+PjJdLEQsT2UsMTcyOTYpLEs9eWErNDh8MCxwZT15YSstNDh8MCxHPTE7Oyl7aWYoKDB8Ryk+PSgwfEEpKWJyZWFrIGU7aWYoMzImYVsxNjQrKGI9MHxhWyhSPTE2''@;'; put 'put ''KyhEPTB8YVtwKyhHK208PDIpPj4yXSl8MCk+PjJdKT4+Ml0pe0RvKDB8KE09MHxhW1ZsPj4yXSksMHxiLDE3NiksQmU9RCxIZT0oTGU9eWEpKzQ4fDA7ZG97YVtMZT4+Ml09YVtCZT4+Ml0sTGU9TGUrNHwwLEJlPUJlKzR8MH13aGlsZSgoMHxMZSk8KDB8SGUpKTthW1ZsPj4yXT1NLGFbKDM9''@;'; put 'put ''PSgwfChMZT0zJmFbeWE+PjJdKSk/eWE6SykrNDA+PjJdPWFbKDI9PSgzJmFbRD4+Ml18MCk/RDpEKy00OHwwKSs0MD4+Ml0sYVsoMj09KDB8TGUpP3lhOnBlKSs0MD4+Ml09YVsoMz09KDMmYVtEPj4yXXwwKT9EOkQrNDh8MCkrNDA+PjJdLEJlPTU2KygwfGFbUj4+Ml0pfDAsSGU9NDArKExl''@;'; put 'put ''PU0rMTZ8MCl8MDtkb3thW0xlPj4yXT1hW0JlPj4yXSxMZT1MZSs0fDAsQmU9QmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO0JlPTE2KygwfGFbUj4+Ml0pfDAsSGU9NDArKExlPTU2KyhiPTB8YVtWbD4+Ml0pfDApfDA7ZG97YVtMZT4+Ml09YVtCZT4+Ml0sTGU9TGUrNHwwLEJlPUJlKzR8''@;'; put 'put ''MH13aGlsZSgoMHxMZSk8KDB8SGUpKTt1ZVtiKzExMj4+MF09MSxhW2IrMTE2Pj4yXT1ELEQ9eWF9Zm9yKFI9MHxhWzQ2NzM0XSxiPTE7ISgoMHxiKT49KDB8YmUpKTspX1soQ2k9UisoYjw8NCl8MCk+PjNdPStfW0NpPj4zXSsgKygwfGFbbWU+PjJdKSxiPWIrMXwwO2ZvcihNPTB8YVs0Njcz''@;'; put 'put ''NV0sYj0wOyEoKDB8Yik+PSgwfE9lKSk7KWFbKENpPU0rKGI8PDQpfDApPj4yXT1hWyhsbz1SKyhiPDw0KXwwKT4+Ml0sYVtDaSs0Pj4yXT1hW2xvKzQ+PjJdLGFbQ2krOD4+Ml09YVtsbys4Pj4yXSxhW0NpKzEyPj4yXT1hW2xvKzEyPj4yXSxiPWIrMXwwO0F1KEQsMHxhWygyPT0oMyZhW0Q+''@;'; put 'put ''PjJdfDApP0Q6RCstNDh8MCkrNDA+PjJdLE0sT2UsMTcyOTYpLEc9RysxfDB9fX13aGlsZSgwKTtvZT13YX1mdW5jdGlvbiBkSChsKXt2YXIgYz0wLGY9MCxwPTA7Zm9yKGM9MHxMdChsfD0wKTtjOyl7Zm9yKGY9MHx5MChsLGMpO2Y7KSgwfHBhWzYzJmFbNDMyNF1dKGYpKTw8MjQ+PjI0JiYw''@;'; put 'put ''fChwPTB8YVs4KygwfGFbZisxNj4+Ml0pPj4yXSkmJnN5KHApLGY9MHxrMChsLGYpO2M9MHx6dChsLGMpfX1mdW5jdGlvbiBzeShsKXt2YXIgbSxBLGM9MCxmPTAscD0wO2ZvcihjPUE9MHxRbig0OCoobT0wfGFbNCsobHw9MCk+PjJdKXwwKSxmPTAscD0oMHxhW2w+PjJdKSsoNDgqKG0rLTF8''@;'; put 'put ''MCl8MCl8MDs7KXtpZigoMHxmKT49KDB8bSkpe2M9MDticmVha31DSShwLGMpLGM9Yys0OHwwLGY9ZisxfDAscD1wKy00OHwwfWZvcig7Zj0wfGFbbD4+Ml0sISgoMHxjKT49KDB8bSkpOylIdCgwfGFbZisoNDgqY3wwKT4+Ml0pLGM9YysxfDA7SHQoZiksYVtsPj4yXT1BfWZ1bmN0aW9uIENJ''@;'; put 'put ''KGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoZj13PTB8UW4oKEE9MHxhWzQrKGx8PTApPj4yXSk8PDQpLHA9MCxtPSgwfGFbbD4+Ml0pKyhBKy0xPDw0KXwwOyEoKDB8cCk+PSgwfEEpKTspYVtmPj4yXT1hW20+PjJdLGFbZis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJd''@;'; put 'put ''PWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0sZj1mKzE2fDAscD1wKzF8MCxtPW0rLTE2fDA7YVtjPj4yXT13LGFbYys0Pj4yXT1BLGFbYys4Pj4yXT1hW2wrMTI+PjJdLGFbYysxMj4+Ml09YVtsKzg+PjJdLGFbKHc9YysxNnwwKT4+Ml09YVsoQT1sKzMyfDApPj4yXSxhW3crND4+''@;'; put 'put ''Ml09YVtBKzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4yXT1hW0ErMTI+PjJdLGFbKHc9YyszMnwwKT4+Ml09YVsoQT1sKzE2fDApPj4yXSxhW3crND4+Ml09YVtBKzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4yXT1hW0ErMTI+PjJdfWZ1bmN0aW9uIHg1KGws''@;'; put 'put ''YyxmLHAsbSxBKXtsfD0wLGZ8PTA7dmFyIHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTA7aWYoTT0odz0oRz0rX1sxNisoSz0wfGFbMTYrKHB8PTApPj4yXSk+PjNdKS0rX1tLKzg4Pj4zXSktNCxrPTB8a1koY3w9MCxwLG18PTAsQXw9MCwtMSkpe2I9MHxTWShjLHAsayk7ZG97aWYo''@;'; put 'put ''IWIpe2lmKHc9K19bMjQwKyhEPTB8YVtrKzE2Pj4yXSk+PjNdKyArX1tEKzE2Pj4zXSwwfHVlW0QrMTU2Pj4wXSl7dys9KygwfGFbZis4Pj4yXSk7YnJlYWt9dz0uNSorKDB8YVsyNDgrKDB8YVtjKzE2Pj4yXSk+PjJdKSt3O2JyZWFrfXc9K19bMzIrKDB8YVtiKzE2Pj4yXSk+PjNdKyArKDB8''@;'; put 'put ''YVtmKzg+PjJdKX13aGlsZSgwKTtiPX5+KChSPXc8TT93Ok0pKyhSPj0wPy41Oi0uNSkpfWVsc2UgYj0oMHwoYj0wfGFbZj4+Ml0pKT4oMHwoRD1+fih3KyhNPj0wPy0zLjU6LTQuNSkpKSk/RDpiO2lmKFI9KygwfGIpLE09KEQ9MT09KDB8dWVbSysxNTY+PjBdKSkmJjAhPSgwfGFbSysxMDQ+''@;'; put 'put ''PjJdKT9HKzEwOkcrNCsgK19bSys5Nj4+M10saz0wfGtZKGMscCxtLEEsMSkpe2I9MHxTWShjLHAsayk7ZG97aWYoIWIpe2lmKHc9K19bMTYrKHA9MHxhW2srMTY+PjJdKT4+M10tK19bcCs4OD4+M10sMHx1ZVtwKzE1Nj4+MF0pe3ctPSsoMHxhW2YrOD4+Ml0pO2JyZWFrfXctPS41KisoMHxh''@;'; put 'put ''WzI0OCsoMHxhW2MrMTY+PjJdKT4+Ml0pO2JyZWFrfXc9K19bMTYrKDB8YVtiKzE2Pj4yXSk+PjNdLSsoMHxhW2YrOD4+Ml0pfXdoaWxlKDApO2I9fn4oKE09dz5NP3c6TSkrKE0+PTA/LjU6LS41KSl9ZWxzZSBiPSgwfChiPTB8YVtmKzQ+PjJdKSk8KDB8KHA9fn4oTSsoTT49MD8uNTotLjUp''@;'; put 'put ''KSkpP3A6Yjt3PSsoMHxiKSxEJiYwIT0oMHxhW0srMTA0Pj4yXSkmJih3LT0rX1tLKzk2Pj4zXSk8UiYmKHc9RyksTT0oRz0rX1tLKzI0Pj4zXSktK19bKGM9MHxhWzE5NisoMHxhW2MrMTY+PjJdKT4+Ml0pKygoSz0wfGFbSysyMzI+PjJdKTw8NikrMTY+PjNdLEc9K19bYysoSzw8NikrMjQ+''@;'; put 'put ''PjNdK0csX1tsPj4zXT1SLF9bbCs4Pj4zXT1NLF9bbCsxNj4+M109dyxfW2wrMjQ+PjNdPUd9ZnVuY3Rpb24gcnAobCl7cmV0dXJuIDB8KDE9PSgwfHVlWzE1NisobD0wfGFbMTYrKGx8PTApPj4yXSk+PjBdKT8oMHxhW2wrMTc2Pj4yXSk+MT8xOigwfGFbbCsxODQ+PjJdKT4xJjE6MCl9ZnVu''@;'; put 'put ''Y3Rpb24gdXkobCxjLGYscCl7dmFyIG0sQTtzd2l0Y2gobHw9MCxjfD0wLHA9K3AsQT1vZSxvZT1vZSszMnwwLG09QSwwfChmfD0wKSl7Y2FzZSAxOm0yKG0sK19bYz4+M10scCwrX1tjKzE2Pj4zXSwrX1tjKzg+PjNdKTticmVhaztjYXNlIDQ6bTIobSwrX1tjPj4zXSwrX1tjKzI0Pj4zXSwr''@;'; put 'put ''X1tjKzE2Pj4zXSxwKX1hW2w+PjJdPWFbbT4+Ml0sYVtsKzQ+PjJdPWFbbSs0Pj4yXSxhW2wrOD4+Ml09YVttKzg+PjJdLGFbbCsxMj4+Ml09YVttKzEyPj4yXSxhW2wrMTY+PjJdPWFbbSsxNj4+Ml0sYVtsKzIwPj4yXT1hW20rMjA+PjJdLGFbbCsyND4+Ml09YVttKzI0Pj4yXSxhW2wrMjg+''@;'; put 'put ''PjJdPWFbbSsyOD4+Ml0sb2U9QX1mdW5jdGlvbiBhaChsLGMsZixwKXtsfD0wLGZ8PTA7dmFyIGssRCxSLG09MCxBPTAsdz0wLGI9MCxNPTAsRz0wO2s9KE09MHxhWzE2KyhjfD0wKT4+Ml0pKygocHw9MCk8PDUpfDAsQT0rX1soRD1NKyhwPDw1KSs4fDApPj4zXSxSPU0rKHA8PDUpKzE2fDAs''@;'; put 'put ''dz0rX1soTT1NKyhwPDw1KSsyNHwwKT4+M10sKGI9K19baz4+M10pPT0obT0rX1tSPj4zXSkmJihBPStfWyhmPTB8YVsxOTYrKDB8YVtmKzE2Pj4yXSk+PjJdKSsoKEc9cCsxfDApPDw2KSsyND4+M10rICtfWzI0KygwfGFbMTYrKDB8YVthW2YrKEc8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10s''@;'; put 'put ''bT0rKDB8YVtjKzQ+PjJdKSx3PStfWzI0KygwfGFbMTYrKDB8YVthW2YrKHA8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bZisocDw8NikrMTY+PjNdLF9baz4+M109Yj0rKDB8YVtjPj4yXSksX1tEPj4zXT1BLF9bUj4+M109bSxfW00+PjNdPXcpLF9bbD4+M109YixfW2wrOD4+M109QSxf''@;'; put 'put ''W2wrMTY+PjNdPW0sX1tsKzI0Pj4zXT13fWZ1bmN0aW9uIGMwZShsKXt2YXIgZixjPTA7Zm9yKGY9MTYrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pfDAsYz0wOzE9PSgwfHVlWzE1NisobD0wfGFbMTYrKDB8YVsoMj09KDMmYVsobD0wfGFbYVtsKzE4MD4+Ml0+PjJdKT4+Ml18MCk/bDpsKy00OHww''@;'; put 'put ''KSs0MD4+Ml0pPj4yXSk+PjBdKSYmMT09KDB8YVtsKzE4ND4+Ml0pJiYxPT0oMHxhW2wrMTc2Pj4yXSkmJitfW2wrMTY+PjNdPT0rX1tmPj4zXTspYz1jKzF8MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIGJZKGwsYyxmLHAsbSxBKXtsfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIGssTSx3PTAs''@;'; put 'put ''Yj0wO009b2Usb2U9b2UrMzJ8MCxrPU0sdz0wfF9ZKGN8PTAsLTEpLGM9MHxfWShjLDEpLDAhPSgwfHcpJiYhKDB8UTModykpfHwoYj0zKTtkb3tpZigzPT0oMHxiKSl7aWYoMHxjJiYwPT0oMHxRMyhjKSl8fCh3PTB8Q1koZiwtMSksYz0wfENZKGYsMSksMHx3JiYwPT0oMHxRMyh3KSkpfHww''@;'; put 'put ''fGMmJjA9PSgwfFEzKGMpKSlicmVhaztmb3Iodz1wKzUyfDAsYz0wOyEoKDB8Yyk+PSgwfGFbdz4+Ml0pKTspYVtrPj4yXT1hWyhmPXArNTYrKGM8PDUpfDApPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+''@;'; put 'put ''Ml09YVtmKzE2Pj4yXSxhW2srMjA+PjJdPWFbZisyMD4+Ml0sYVtrKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbaysyOD4+Ml09YVtmKzI4Pj4yXSxVMyhsLGspLGM9YysxfDA7Zm9yKHc9MHxhW2wrODA+PjJdLGI9QSstM3wwLGM9MDshKCgwfGMpPj0oMHxBKSk7KWFbaz4+Ml09YVsocD0xNTM3MjAr''@;'; put 'put ''KGM8PDUpfDApPj4yXSxhW2srND4+Ml09YVtwKzQ+PjJdLGFbays4Pj4yXT1hW3ArOD4+Ml0sYVtrKzEyPj4yXT1hW3ArMTI+PjJdLGFbaysxNj4+Ml09YVtwKzE2Pj4yXSxhW2srMjA+PjJdPWFbcCsyMD4+Ml0sYVtrKzI0Pj4yXT1hW3ArMjQ+PjJdLGFbaysyOD4+Ml09YVtwKzI4Pj4yXSxV''@;'; put 'put ''MyhsLGspLGM9YysxfDA7Zm9yKGI9YisoZj13KzF8MCl8MCx3PTB8YVttKzUyPj4yXTtjPXcrLTF8MCwhKCgwfHcpPD0wKTspYVtrPj4yXT1hWyh3PW0rNTYrKGM8PDUpfDApPj4yXSxhW2srND4+Ml09YVt3KzQ+PjJdLGFbays4Pj4yXT1hW3crOD4+Ml0sYVtrKzEyPj4yXT1hW3crMTI+PjJd''@;'; put 'put ''LGFbaysxNj4+Ml09YVt3KzE2Pj4yXSxhW2srMjA+PjJdPWFbdysyMD4+Ml0sYVtrKzI0Pj4yXT1hW3crMjQ+PjJdLGFbaysyOD4+Ml09YVt3KzI4Pj4yXSxVMyhsLGspLHc9YztjeShsLGYsYil9fXdoaWxlKDApO29lPU19ZnVuY3Rpb24gWnZlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wO3Zh''@;'; put 'put ''ciBBLG09MDtmb3IobT0wfGFbKHB8PTApPj4yXTtjOylsPTB8YVthWzE4MCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXSxjPWMrLTF8MDtyZXR1cm4gYVtwPj4yXT1tKzEsYVsoQT1mKyhtPDw0KXwwKT4+Ml09YVsoYz1mKyht''@;'; put 'put ''Ky0xPDw0KXwwKT4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4yXSxhW3A+PjJdPTErKG09MHxhW3A+PjJdKSxhWyhtPWYrKG08PDQpfDApPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4''@;'; put 'put ''Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sYVsobT1mKyhhW3A+PjJdPDw0KXwwKT4+Ml09YVsocD0xNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKXwwKT4+Ml0sYVttKzQ+PjJdPWFbcCs0Pj4yXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFb''@;'; put 'put ''bSsxMj4+Ml09YVtwKzEyPj4yXSwwfGx9ZnVuY3Rpb24gcEgobCxjKXt2YXIgayxNLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wO009ODQrKGN8PTApfDAsaz1jKzgwfDAsZj0wLGM9bHw9MDtlOmZvcig7dz0wfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0sYj13KzE2fDAs''@;'; put 'put ''ISgxIT0oMHx1ZVsxNTYrKDB8YVtiPj4yXSk+PjBdKXx8KDB8cGFbNjMmYVs0MzI1XV0odykpPDwyND4+MjQpOyl7Zm9yKGM9MHxhW2s+PjJdOzspe2lmKCgwfGYpPj0oMHxjKSlicmVhayBlO2lmKCEoK19bKDB8YVtNPj4yXSkrKGY8PDUpKzg+PjNdPitfWzI0KygwfGFbYj4+Ml0pPj4zXSkp''@;'; put 'put ''YnJlYWs7Zj1mKzF8MH1jPTB8YVtNPj4yXSxsPTB8YVtiPj4yXTtkb3tpZighKCtfW2MrKGY8PDUpKzI0Pj4zXTwrX1tsKzI0Pj4zXSkpe2lmKEE9fn4obT0rX1tjKyhmPDw1KT4+M10pLHA9K19bYysoZjw8NSkrMTY+PjNdLDB8YVtsKzEwND4+Ml0pe1Q1KHcsQSx+fnAsfn4oK19bbCs5Nj4+''@;'; put 'put ''M10rcCkpO2JyZWFrfVQ1KHcsQSx+figuNSoocCttKSksfn5wKTticmVha319d2hpbGUoMCk7Yz0wfGFbYVsxODArKDB8YVtiPj4yXSk+PjJdPj4yXX19ZnVuY3Rpb24gVDUobCxjLGYscCl7Y3w9MCxwfD0wLF9bMTYrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXT0rKDB8KGZ8PTApKSxfW2wr''@;'; put 'put ''ODg+PjNdPSsoZi1jfDApLF9bbCs5Nj4+M109KyhwLWZ8MCl9ZnVuY3Rpb24gX1kobCxjKXtjfD0wO3ZhciBiLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGI9MHxhWzE4MCsoMHxhWzE2KygwfGFbKDM9PSgwfCh3PTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0s''@;'; put 'put ''dz0oMj09KDB8dyk/bDpsKy00OHwwKSs0MHwwLEE9MCxsPTA7cD0wfGFbYisoQTw8Mik+PjJdOyl7bT0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml07ZG97aWYoKDB8dnIobS0oMHxhWzIzNisoMHxhWzE2KygwfGFbdz4+''@;'; put 'put ''Ml0pPj4yXSk+PjJdKXwwLGMpKT49MSl7aWYoISgwfGFbOCsoZj0wfGFbcCsxNj4+Ml0pPj4yXSkmJiEoKGY9MHxhW2YrMTE2Pj4yXSkmJjB8YVs4KygwfGFbZisxNj4+Ml0pPj4yXSl8fDB8bCYmKDB8dnIoKDB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8''@;'; put 'put ''MCkrNDA+PjJdKT4+Ml0pPj4yXSktbXwwLGMpKTw9MClicmVhaztsPXB9fXdoaWxlKDApO0E9QSsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBDWShsLGMpe2N8PTA7dmFyIGIsZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoYj0wfGFbMTcyKygwfGFbMTYrKDB8YVsoMj09KDB8KHc9MyZhWyhsfD0w''@;'; put 'put ''KT4+Ml0pKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sdz0oMz09KDB8dyk/bDpsKzQ4fDApKzQwfDAsQT0wLGw9MDtwPTB8YVtiKyhBPDwyKT4+Ml07KXttPTB8YVsyMzYrKDB8YVsxNisoMHxhWygzPT0oMyZhW3A+PjJdfDApP3A6cCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdO2Rve2lm''@;'; put 'put ''KCgwfHZyKG0tKDB8YVsyMzYrKDB8YVsxNisoMHxhW3c+PjJdKT4+Ml0pPj4yXSl8MCxjKSk+PTEpe2lmKCEoMHxhWzgrKGY9MHxhW3ArMTY+PjJdKT4+Ml0pJiYhKChmPTB8YVtmKzExNj4+Ml0pJiYwfGFbOCsoMHxhW2YrMTY+PjJdKT4+Ml0pfHwwfGwmJigwfHZyKCgwfGFbMjM2KygwfGFb''@;'; put 'put ''MTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktbXwwLGMpKTw9MClicmVhaztsPXB9fXdoaWxlKDApO0E9QSsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBjeShsLGMsZil7Znw9MDt2YXIgayxNLHA9MCxtPTAsQT0wLHc9MCxiPTAsRD0wO2ZvcihN''@;'; put 'put ''PTg0KyhsfD0wKXwwLHc9KGN8PTApLTF8MDshKCgwfHcpPigwfGYpKTspcD0rX1soYj0obT0wfGFbTT4+Ml0pKyh3PDw1KXwwKT4+M10sdy1jJjE/KEE9fn4oLjUqKChEPStfWyhtPW0rKHc8PDUpKzE2fDApPj4zXSkrcCkpLHArMTY+RCYmKF9bYj4+M109KyhBKy04fDApLF9bbT4+M109KyhB''@;'; put 'put ''Kzh8MCkpKTooQT1+figuNSooKEQ9K19bKG09bSsodzw8NSkrMTZ8MCk+PjNdKStwKSkscD49RCYmKF9bYj4+M109KyhBKy04fDApLF9bbT4+M109KyhBKzh8MCkpKSx3PXcrMXwwO2ZvcihrPSgwfGFbbCs4MD4+Ml0pLTF8MCxBPTA7ISgoMHxBKT49KDB8aykpOylpZihtPSh3PTB8YVtNPj4y''@;'; put 'put ''XSkrKEE8PDUpfDAsbD13KygoYj1BKzF8MCk8PDUpfDAsKDB8QSk8KDB8Yyl8KDB8QSk+KDB8Zil8fDAhPShBLWMmMXwwKSkoMHxBKTwoMHxmKSYoMHxiKT49KDB8Yyk/Yi1jJjF8MD9BPWI6KCtfW20+PjNdKzE2PihwPStfW3crKGI8PDUpKzE2Pj4zXSkmJihfW20+PjNdPXArLTE2KSwrX1so''@;'; put 'put ''bT13KyhBPDw1KSsxNnwwKT4+M10tMTY8KHA9K19bbD4+M10pPyhfW20+PjNdPXArMTYsQT1iKTpBPWIpOkE9YjtlbHNle2lmKChwPStfW20+PjNdKzE2KT4rX1sobT13KyhiPDw1KSsxNnwwKT4+M10mJihfW20+PjNdPXApLCEoKHA9K19bdysoQTw8NSkrMTY+PjNdLTE2KTwrX1tsPj4zXSkp''@;'; put 'put ''e0E9Yjtjb250aW51ZX1fW2w+PjNdPXAsQT1ifX1mdW5jdGlvbiBtMihsLGMsZixwLG0pe2Y9K2YscD0rcCxtPSttLF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mLF9bbCsxNj4+M109cCxfW2wrMjQ+PjNdPW19ZnVuY3Rpb24ga1kobCxjLGYscCxtKXtmfD0wLHB8PTAsbXw9MDt2YXIg''@;'; put 'put ''dyxBPTAsYj0wLGs9MDt3PShrPTB8YVsxOTYrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pKygoYj0wfGFbMjMyKyhBPTB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPDw2KXwwLGI9aysoYjw8NikrNHwwLEE9MHxhW0ErMjM2Pj4yXTtlOmRve2lmKCgwfChBPUErbXwwKSk8PS0xKXtsPTA7YnJlYWt9''@;'; put 'put ''aWYoKDB8QSk+PSgwfGFbdz4+Ml0pKXtsPTA7YnJlYWt9c3dpdGNoKDB8dWVbMTU2KyhrPTB8YVsxNisobD0wfGFbKDB8YVtiPj4yXSkrKEE8PDIpPj4yXSk+PjJdKT4+MF0pe2Nhc2UgMDpicmVhayBlO2Nhc2UgMTppZigwfGFbaysxMDQ+PjJdKWJyZWFrIGV9fXdoaWxlKCgwfGYwZShsLGMs''@;'; put 'put ''ZixwKSk8PDI0Pj4yNCE9MCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBTWShsLGMsZil7bHw9MDt2YXIgcCxtPTAsQT0wLHc9MDtpZigwfHVlWzE1NisoYz0wfGFbMTYrKGN8PTApPj4yXSk+PjBdPyhBPTB8YVsyMTIrKDB8YVsxNisoMHxhWygyPT0oMHwobT0zJmFbKHc9MHxhWzExNisoMHxhWzE2''@;'; put 'put ''KygwfGFbYVtjKzE4MD4+Ml0+PjJdKT4+Ml0pPj4yXSk+PjJdKSk/dzp3Ky00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdLHc9MHxhWzIxMisoMHxhWzE2KygwfGFbKDM9PSgwfG0pP3c6dys0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKTpBPXc9MHxhW2MrMjEyPj4yXSwhKDB8dWVbMTU2KyhjPTB8YVsx''@;'; put 'put ''NisoZnw9MCk+PjJdKT4+MF0pKXJldHVybiAwfCgoMHwoZj0oMHwoZj0wfGFbYysyMTI+PjJdKSk9PSgwfGwpPzA6ZikpPT0oMHxBKXwwPT0oMHxmKXwoMHxmKT09KDB8dyk/MDpmKTtpZigoMHwoYz0oMHwoYz0wfGFbMjEyKygwfGFbMTYrKDB8YVsoMz09KDB8KG09MyZhWyhwPTB8YVsxMTYr''@;'; put 'put ''KDB8YVsxNisoMHxhW2FbYysxODA+PjJdPj4yXSk+PjJdKT4+Ml0pPj4yXSkpP3A6cCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk9PSgwfGwpPzA6YykpPT0oMHxBKXwwPT0oMHxjKXwoMHxjKT09KDB8dyl8fDA9PSgwfE5DKGMsZikpKXtpZighKCgwfChjPSgwfChjPTB8YVsyMTIrKDB8YVsx''@;'; put 'put ''NisoMHxhWygyPT0oMHxtKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT09KDB8bCk/MDpjKSk9PSgwfEEpfDA9PSgwfGMpfCgwfGMpPT0oMHx3KSkpcmV0dXJuIDB8KChmPTA9PSgwfE5DKGMsZikpKT8wOmMpO2M9MH1yZXR1cm4gMHxjfWZ1bmN0aW9uIE5DKGwsYyl7dmFyIGYsbSxw''@;'; put 'put ''PTA7cmV0dXJuIDB8KCtfWzE2KyhmPTB8YVsxNisobHw9MCk+PjJdKT4+M108PShtPStfWzE2KyhsPTB8YVsxNisoY3w9MCk+PjJdKT4+M10pJiZtPD0rX1tmKzMyPj4zXSYmK19bZisyND4+M108PShwPStfW2wrMjQ+PjNdKT9wPD0rX1tmKzQwPj4zXSYxOjApfWZ1bmN0aW9uIGYwZShsLGMs''@;'; put 'put ''ZixwKXtmfD0wLHB8PTA7dmFyIHcsYixtPTAsQT0wO2I9KDB8YVsyMzYrKHc9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+KDB8YVsyMzYrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pO2U6ZG97aWYoMT09KDB8YVt3KzE4ND4+Ml0pKXt0OmRve2lmKDB8cClmb3IoQT0wLGw9MHxhW2FbdysxODA+''@;'; put 'put ''PjJdPj4yXTs7KXtpZigoMHxBKT49Mnx8KDB8KGw9MHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKSk9PSgwfChjPTB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSkpKWJyZWFrIHQ7aWYoYl4oMHxhWzIzNisobT0wfGFbbCsxNj4+Ml0pPj4yXSk+''@;'; put 'put ''KDB8YVsyMzYrKGw9MHxhW2MrMTY+PjJdKT4+Ml0pKXtsPTE7YnJlYWsgZX1pZighKDE9PSgwfGFbbSsxODQ+PjJdKSYmMHx1ZVttKzE1Nj4+MF0mJjE9PSgwfGFbbCsxODQ+PjJdKSYmMHx1ZVtsKzE1Nj4+MF0pKWJyZWFrIHQ7QT1BKzF8MCxwPTB8YVthW2wrMTgwPj4yXT4+Ml0sbD0wfGFb''@;'; put 'put ''YVttKzE4MD4+Ml0+PjJdfX13aGlsZSgwKTtpZigwfGYmJjE9PSgwfGFbdysxNzY+PjJdKSlmb3IobT0wLGM9ZixsPTB8YVthW3crMTcyPj4yXT4+Ml07Oyl7aWYoKDB8bSk+PTIpe2w9MDticmVhayBlfWlmKCgwfChsPTB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSk9''@;'; put 'put ''PSgwfChjPTB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKSkpe2w9MDticmVhayBlfWlmKGJeKDB8YVsyMzYrKHA9MHxhW2wrMTY+PjJdKT4+Ml0pPigwfGFbMjM2KyhsPTB8YVtjKzE2Pj4yXSk+PjJdKSl7bD0xO2JyZWFrIGV9aWYoMSE9KDB8YVtwKzE3Nj4+Ml0pKXts''@;'; put 'put ''PTA7YnJlYWsgZX1pZighKDB8dWVbcCsxNTY+PjBdKSl7bD0wO2JyZWFrIGV9aWYoMSE9KDB8YVtsKzE3Nj4+Ml0pKXtsPTA7YnJlYWsgZX1pZighKDB8dWVbbCsxNTY+PjBdKSl7bD0wO2JyZWFrIGV9bT1tKzF8MCxjPTB8YVthW2wrMTcyPj4yXT4+Ml0sbD0wfGFbYVtwKzE3Mj4+Ml0+PjJd''@;'; put 'put ''fWVsc2UgbD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gV2QobCxjLGYpe3ZhciBwO3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxfW2wrOD4+M109cH1mdW5jdGlvbiBNWShsLGMsZil7dmFy''@;'; put 'put ''IHAsbTtyZXR1cm4oMHx+figoK19bKGZ8PTApPj4zXS0obT0rX1soY3w9MCk+PjNdKSkqKCtfWzgrKGx8PTApPj4zXS0ocD0rX1tjKzg+PjNdKSktKCtfW2w+PjNdLW0pKigrX1tmKzg+PjNdLXApKSk+MHwwfWZ1bmN0aW9uIGQwZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLG18PTA7dmFy''@;'; put 'put ''IE0sRCxSLEsscGUsYmUsTGUsQmUsamUsQT0wLHc9MCxiPTAsaz0wLEc9MCxtZT0wLE9lPTAsSGU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTA7Zm9yKGplPW9lLG9lPW9lKzE2MDB8MCxiZT1qZSsxNTUyfDAsTT1qZSsxNTM2fDAsbWU9amUrODQwfDAsT2U9amUrMTQ0fDAsTGU9amUrMTU4''@;'; put 'put ''NHwwLHc9amUrMzJ8MCxwZT1qZSsxNnwwLEQ9amUsUj0wfGFbKDM9PSgwfChHPTMmYVsocHw9MCk+PjJdKSk/cDpwKzQ4fDApKzQwPj4yXSxCZT1wKy00OHwwLEc9MHxhWygyPT0oMHxHKT9wOkJlKSs0MD4+Ml0sQT0wfGFbMTcyKyhiPTB8YVsoSz1wKzE2fDApPj4yXSk+PjJdO2s9MHxhWzE3''@;'; put 'put ''MisoMHxhW0ErMTY+PjJdKT4+Ml07KUE9aztpZihhWyhiPTU2KygwfGFbYis5Nj4+Ml0pfDApPj4yXT1hWyhrPTE2KygwfGFbKEE9MTYrKDB8YVsoMz09KDMmYVtBPj4yXXwwKT9BOkErNDh8MCkrNDA+PjJdKXwwKT4+Ml0pfDApPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1h''@;'; put 'put ''W2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLHVlWzgxKygwfGFbOTYrKGI9MHxhW0s+PjJdKT4+Ml0pPj4wXT0xLDIhPSgwfG0pKXtmb3IoTXQ9KEdlPStfWzE2KyhiPTB8YVtBPj4yXSk+PjNdKS0rX1tiKzg4Pj4zXSxHZT0rX1tiKzk2Pj4zXStHZSxydD0obHQ9LjUqK19bYis4MD4+''@;'; put 'put ''M10rKHJ0PStfW2IrMjQ+PjNdKSktKChydD0rKDB8fn4oLjE2NjY2NjY2NjY2NjY2NjY2KisoMHx+fihydC0rX1soYj0wfGFbMTk2KygwfGFbbCsxNj4+Ml0pPj4yXSkrKCh3PTB8YVsyMzIrKGs9MHxhW1IrMTY+PjJdKT4+Ml0pPDw2KSsxNj4+M10tK19baysyND4+M10rICtfW2IrKHc8PDYp''@;'; put 'put ''KzI0Pj4zXSkpKSkpPDU/NTpydCksWWQobCxjLGYsUixwLG1lLDEpLFlkKGwsYyxmLEcscCxPZSwwKSxfWzE5MjE1XT1ldD0rX1ttZSs1NisoKGs9KGI9MHxhWyh3PW1lKzUyfDApPj4yXSktMXwwKTw8NSk+PjNdLF9bMTkyMTZdPStfW21lKzU2KyhrPDw1KSsyND4+M10sX1sxOTIxN109TXQs''@;'; put 'put ''X1sxOTIxOF09cnQsX1sxOTIxOV09ZXQsX1sxOTIyMF09cnQsX1sxOTIyMV09ZXQ9K19bT2UrNTYrKChBPSgwfGFbKGs9T2UrNTJ8MCk+PjJdKS0xfDApPDw1KSsxNj4+M10sX1sxOTIyMl09bHQsX1sxOTIyM109R2UsX1sxOTIyNl09cnQsX1sxOTIyNF09K19bT2UrNTYrKEE8PDUpKzI0Pj4z''@;'; put 'put ''XSxfWzE5MjI1XT1ldCxBPTA7Oyl7aWYoKDB8QSk+PSgwfGIpKXtBPTA7YnJlYWt9YVtiZT4+Ml09YVsoYj1tZSs1NisoQTw8NSl8MCk+PjJdLGFbYmUrND4+Ml09YVtiKzQ+PjJdLGFbYmUrOD4+Ml09YVtiKzg+PjJdLGFbYmUrMTI+PjJdPWFbYisxMj4+Ml0sYVtiZSsxNj4+Ml09YVtiKzE2''@;'; put 'put ''Pj4yXSxhW2JlKzIwPj4yXT1hW2IrMjA+PjJdLGFbYmUrMjQ+PjJdPWFbYisyND4+Ml0sYVtiZSsyOD4+Ml09YVtiKzI4Pj4yXSxVMyhmLGJlKSxBPUErMXwwLGI9MHxhW3c+PjJdfWZvcig7MyE9KDB8QSk7KWFbYmU+PjJdPWFbKG1lPTE1MzcyMCsoQTw8NSl8MCk+PjJdLGFbYmUrND4+Ml09''@;'; put 'put ''YVttZSs0Pj4yXSxhW2JlKzg+PjJdPWFbbWUrOD4+Ml0sYVtiZSsxMj4+Ml09YVttZSsxMj4+Ml0sYVtiZSsxNj4+Ml09YVttZSsxNj4+Ml0sYVtiZSsyMD4+Ml09YVttZSsyMD4+Ml0sYVtiZSsyND4+Ml09YVttZSsyND4+Ml0sYVtiZSsyOD4+Ml09YVttZSsyOD4+Ml0sVTMoZixiZSksQT1B''@;'; put 'put ''KzF8MDtmb3Iodz0wfGFbaz4+Ml07QT13Ky0xfDAsISgoMHx3KTw9MCk7KWFbYmU+PjJdPWFbKHc9T2UrNTYrKEE8PDUpfDApPj4yXSxhW2JlKzQ+PjJdPWFbdys0Pj4yXSxhW2JlKzg+PjJdPWFbdys4Pj4yXSxhW2JlKzEyPj4yXT1hW3crMTI+PjJdLGFbYmUrMTY+PjJdPWFbdysxNj4+Ml0s''@;'; put 'put ''YVtiZSsyMD4+Ml09YVt3KzIwPj4yXSxhW2JlKzI0Pj4yXT1hW3crMjQ+PjJdLGFbYmUrMjg+PjJdPWFbdysyOD4+Ml0sVTMoZixiZSksdz1BO3c9MTA9PSgwfG0pPzB8Z2soZixMZSk6MHx2ayhmLExlKSwwfChBPTB8YVtMZT4+Ml0pJiYoSGU9MTcpfWVsc2UgT2U9YisxNnwwLGFbTT4+Ml09''@;'; put 'put ''YVsoQT0xNisoMHxhW1IrMTY+PjJdKXwwKT4+Ml0sYVtNKzQ+PjJdPWFbQSs0Pj4yXSxhW00rOD4+Ml09YVtBKzg+PjJdLGFbTSsxMj4+Ml09YVtBKzEyPj4yXSxhW2JlPj4yXT1hW09lPj4yXSxhW2JlKzQ+PjJdPWFbT2UrND4+Ml0sYVtiZSs4Pj4yXT1hW09lKzg+PjJdLGFbYmUrMTI+PjJd''@;'; put 'put ''PWFbT2UrMTI+PjJdLFdkKHBlLE0sYmUpLEE9NTYrKDB8YVtLPj4yXSl8MCxhW00+PjJdPWFbKE9lPTE2KygwfGFbRysxNj4+Ml0pfDApPj4yXSxhW00rND4+Ml09YVtPZSs0Pj4yXSxhW00rOD4+Ml09YVtPZSs4Pj4yXSxhW00rMTI+PjJdPWFbT2UrMTI+PjJdLGFbYmU+PjJdPWFbQT4+Ml0s''@;'; put 'put ''YVtiZSs0Pj4yXT1hW0ErND4+Ml0sYVtiZSs4Pj4yXT1hW0ErOD4+Ml0sYVtiZSsxMj4+Ml09YVtBKzEyPj4yXSxXZChELE0sYmUpLGx0PStfWzU2KyhBPTB8YVs5NisoMHxhW0s+PjJdKT4+Ml0pPj4zXSxNdD0rX1tBKzY0Pj4zXS0uNSorX1tBKzMyPj4zXSxBPXcrMTZ8MCxhW3c+PjJdPWFb''@;'; put 'put ''cGU+PjJdLGFbdys0Pj4yXT1hW3BlKzQ+PjJdLGFbdys4Pj4yXT1hW3BlKzg+PjJdLGFbdysxMj4+Ml09YVtwZSsxMj4+Ml0sYVtBPj4yXT1hW3BlPj4yXSxhW0ErND4+Ml09YVtwZSs0Pj4yXSxhW0ErOD4+Ml09YVtwZSs4Pj4yXSxhW0ErMTI+PjJdPWFbcGUrMTI+PjJdLEE9dyszMnwwLE9l''@;'; put 'put ''PXcrNDh8MCxIZT13KzY0fDAsX1t3KzY0Pj4zXT1sdCxfW3crNzI+PjNdPU10LGFbT2U+PjJdPWFbSGU+PjJdLGFbT2UrND4+Ml09YVtIZSs0Pj4yXSxhW09lKzg+PjJdPWFbSGUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtBPj4yXT1hW0hlPj4yXSxhW0ErND4+Ml09YVtIZSs0''@;'; put 'put ''Pj4yXSxhW0ErOD4+Ml09YVtIZSs4Pj4yXSxhW0ErMTI+PjJdPWFbSGUrMTI+PjJdLEE9dys4MHwwLGFbKEhlPXcrOTZ8MCk+PjJdPWFbRD4+Ml0sYVtIZSs0Pj4yXT1hW0QrND4+Ml0sYVtIZSs4Pj4yXT1hW0QrOD4+Ml0sYVtIZSsxMj4+Ml09YVtEKzEyPj4yXSxhW0E+PjJdPWFbRD4+Ml0s''@;'; put 'put ''YVtBKzQ+PjJdPWFbRCs0Pj4yXSxhW0ErOD4+Ml09YVtEKzg+PjJdLGFbQSsxMj4+Ml09YVtEKzEyPj4yXSxhW0xlPj4yXT03LEE9NyxIZT0xNzsxNz09KDB8SGUpJiZBdShwLDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOkJlKSs0MD4+Ml0sdyxBLDE3Mjk2KSxvZT1qZX1mdW5jdGlvbiBFWShs''@;'; put 'put ''LGMsZixwLG0sQSl7Y3w9MCxtfD0wLEF8PTA7dmFyIGssTSxELFIsRyxwZSxiZSxydCxHZSxsdCxNdCxrdCxhdCxFdCxadCx1dCx3dCxybix5bixGbixscix3PTAsYj0wLEs9MCxtZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wO2Zvcihscj1vZSxvZT1vZSszNTJ8MCxIZT1scisz''@;'; put 'put ''MzZ8MCx5bj1scisxMjh8MCxPZT1sciszMDR8MCxqZT1scisyODh8MCxGbj1scisxMTJ8MCxrdD1scis5NnwwLGF0PWxyKzgwfDAsRXQ9bHIrNjR8MCxadD1scis0OHwwLHV0PWxyKzMyfDAsd3Q9bHIrMTZ8MCxybj1scixtZT0xNisoMHxhWyhMZT0xNisoMHxhWyhmfD0wKSsoKHB8PTApPDwy''@;'; put 'put ''KT4+Ml0pfDApPj4yXSl8MCxhWyhCZT1sciszMjB8MCk+PjJdPWFbKEs9MTYrKDB8YVsobD0xNisobHw9MCl8MCk+PjJdKXwwKT4+Ml0sYVtCZSs0Pj4yXT1hW0srND4+Ml0sYVtCZSs4Pj4yXT1hW0srOD4+Ml0sYVtCZSsxMj4+Ml09YVtLKzEyPj4yXSxhW0hlPj4yXT1hW21lPj4yXSxhW0hl''@;'; put 'put ''KzQ+PjJdPWFbbWUrND4+Ml0sYVtIZSs4Pj4yXT1hW21lKzg+PjJdLGFbSGUrMTI+PjJdPWFbbWUrMTI+PjJdLFdkKE9lLEJlLEhlKSxsdD0rX1tPZT4+M10sTXQ9K19bT2UrOD4+M10sTGU9NTYrKDB8YVtMZT4+Ml0pfDAsYVtCZT4+Ml09YVsoT2U9MTYrKDB8YVtjKzE2Pj4yXSl8MCk+PjJd''@;'; put 'put ''LGFbQmUrND4+Ml09YVtPZSs0Pj4yXSxhW0JlKzg+PjJdPWFbT2UrOD4+Ml0sYVtCZSsxMj4+Ml09YVtPZSsxMj4+Ml0sYVtIZT4+Ml09YVtMZT4+Ml0sYVtIZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbSGUrOD4+Ml09YVtMZSs4Pj4yXSxhW0hlKzEyPj4yXT1hW0xlKzEyPj4yXSxXZChqZSxCZSxI''@;'; put 'put ''ZSksR2U9K19bamUrOD4+M10sKDB8bSk+MT8odz0uNSooZXQ9K19bODArKDB8YVtsPj4yXSk+PjNdKSxldC89KyhtKy0xfDApKToodz0wLGV0PTApLEc9MTA9PSg4fEEpLE09eW4rOHwwLEs9eW4rMTZ8MCxwZT0uMzMzMzMzMzMzMzMzMzMzMyooKHJ0PStfW2plPj4zXSkrMipsdCksbWU9eW4r''@;'; put 'put ''MzJ8MCxiZT0uMzMzMzMzMzMzMzMzMzMzMyooMipydCtsdCksRD15bisyNHwwLE9lPXluKzQ4fDAsTGU9eW4rNjR8MCxCZT15bis4MHwwLEhlPXluKzk2fDAsamU9eW4rMTEyfDAsaz15bisxMjh8MCxSPXluKzEzNnwwLHc9TXQtdyxjPTA7ISgoMHxjKT49KDB8bSkpOyliPTB8YVtmKyhjK3A8''@;'; put 'put ''PDIpPj4yXSxfW3luPj4zXT1sdCxfW00+PjNdPU10LEc/KGoyKEZuLHBlLHcpLGFbSz4+Ml09YVtGbj4+Ml0sYVtLKzQ+PjJdPWFbRm4rND4+Ml0sYVtLKzg+PjJdPWFbRm4rOD4+Ml0sYVtLKzEyPj4yXT1hW0ZuKzEyPj4yXSxqMihrdCxiZSx3KSxhW21lPj4yXT1hW2t0Pj4yXSxhW21lKzQ+''@;'; put 'put ''PjJdPWFba3QrND4+Ml0sYVttZSs4Pj4yXT1hW2t0Kzg+PjJdLGFbbWUrMTI+PjJdPWFba3QrMTI+PjJdLGw9NCxBPTMpOihfW0s+PjNdPWx0LF9bRD4+M109TXQsajIoYXQscGUsdyksYVttZT4+Ml09YVthdD4+Ml0sYVttZSs0Pj4yXT1hW2F0KzQ+PjJdLGFbbWUrOD4+Ml09YVthdCs4Pj4y''@;'; put 'put ''XSxhW21lKzEyPj4yXT1hW2F0KzEyPj4yXSxqMihFdCxwZSx3KSxhW09lPj4yXT1hW0V0Pj4yXSxhW09lKzQ+PjJdPWFbRXQrND4+Ml0sYVtPZSs4Pj4yXT1hW0V0Kzg+PjJdLGFbT2UrMTI+PjJdPWFbRXQrMTI+PjJdLGoyKFp0LHBlLHcpLGFbTGU+PjJdPWFbWnQ+PjJdLGFbTGUrND4+Ml09''@;'; put 'put ''YVtadCs0Pj4yXSxhW0xlKzg+PjJdPWFbWnQrOD4+Ml0sYVtMZSsxMj4+Ml09YVtadCsxMj4+Ml0sajIodXQsYmUsdyksYVtCZT4+Ml09YVt1dD4+Ml0sYVtCZSs0Pj4yXT1hW3V0KzQ+PjJdLGFbQmUrOD4+Ml09YVt1dCs4Pj4yXSxhW0JlKzEyPj4yXT1hW3V0KzEyPj4yXSxqMih3dCxiZSx3''@;'; put 'put ''KSxhW0hlPj4yXT1hW3d0Pj4yXSxhW0hlKzQ+PjJdPWFbd3QrND4+Ml0sYVtIZSs4Pj4yXT1hW3d0Kzg+PjJdLGFbSGUrMTI+PjJdPWFbd3QrMTI+PjJdLGoyKHJuLGJlLHcpLGFbamU+PjJdPWFbcm4+PjJdLGFbamUrND4+Ml09YVtybis0Pj4yXSxhW2plKzg+PjJdPWFbcm4rOD4+Ml0sYVtq''@;'; put 'put ''ZSsxMj4+Ml09YVtybisxMj4+Ml0sX1trPj4zXT1ydCxfW1I+PjNdPUdlLGw9MTAsQT05KSxfW3luKyhBPDw0KT4+M109cnQsX1t5bisoQTw8NCkrOD4+M109R2UsQXUoYiwwfGFbKDI9PSgzJmFbYj4+Ml18MCk/YjpiKy00OHwwKSs0MD4+Ml0seW4sbCwxNzI5Niksdys9ZXQsYz1jKzF8MDtv''@;'; put 'put ''ZT1scn1mdW5jdGlvbiBpcChsLGMsZixwLG0sQSx3LGIpe3B8PTAsbXw9MCxifD0wO3ZhciBwZSxtZSxiZSxPZSxMZSxCZSxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MDtmb3IoQmU9b2Usb2U9b2UrMTQ0MHwwLG1lPUJlKzEzOTJ8MCxPZT1C''@;'; put 'put ''ZSsxNDI0fDAsYmU9QmUsRz0wfGFbKDM9PSgwfChLPTMmYVsod3w9MCk+PjJdKSk/dzp3KzQ4fDApKzQwPj4yXSxLPTB8YVsoMj09KDB8Syk/dzp3Ky00OHwwKSs0MD4+Ml0sTT0oMHwoRD0wfGFbMjMyKyhrPTB8YVtHKzE2Pj4yXSk+PjJdKSk8KDB8VHRbMjM4KyhSPTB8YVsxNisobHw9MCk+''@;'; put 'put ''PjJdKT4+MV0pPytfW2srMjQ+PjNdLStfWyhIZT0wfGFbUisxOTY+PjJdKSsoRDw8NikrMzI+PjNdLStfWzI0KygwfGFbMTYrKDB8YVthW0hlKygoUj1EKzF8MCk8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bSGUrKFI8PDYpKzQwPj4zXTorKDB8YVtSKzI1Mj4+Ml0pLHBlPSsoMHxhWzEy''@;'; put 'put ''KyhjfD0wKT4+Ml0pLyhqZT0rKDErKEF8PTApfDApKSxNLz1qZSxaNihsLGMsZnw9MCxHLHcsTGU9QmUrNjk2fDAsMSksWjYobCxjLGYsSyx3LGJlLDApLEs9TGUrNTJ8MCx3PWJlKzUyfDAsbD0wPT0oMHxiKSxjPWYrODB8MCxrPTA7ISgoMHxrKT49KDB8QSkpOyl7Zm9yKEc9MHxhW3ArKGsr''@;'; put 'put ''bTw8Mik+PjJdLHJ0PStfW0xlKzU2KygoRD0oUj0wfGFbSz4+Ml0pLTF8MCk8PDUpKzg+PjNdLEdlPStfW0xlKzU2KyhEPDw1KSsxNj4+M10sX1sxOTIxNV09bHQ9K19bTGUrNTYrKEQ8PDUpPj4zXSxfWzE5MjE4XT1ydCxfWzE5MjE3XT1HZSsoZXQ9cGUqKGplPSsoMHwoaz1rKzF8MCkpKSks''@;'; put 'put ''X1sxOTIxNl09amU9cnQtTSpqZSxfWzE5MjE5XT1sdCxfWzE5MjIyXT1qZSxfWzE5MjIxXT1sdD0rX1tiZSs1NisoKEQ9KDB8YVt3Pj4yXSktMXwwKTw8NSkrMTY+PjNdLF9bMTkyMjBdPWplLU0scnQ9K19bYmUrNTYrKEQ8PDUpPj4zXSxHZT0rX1tiZSs1NisoRDw8NSkrOD4+M10sX1sxOTIy''@;'; put 'put ''NV09bHQsX1sxOTIyNl09R2UsX1sxOTIyM109cnQtZXQsX1sxOTIyNF09amUsRD0wOzspe2lmKCgwfEQpPj0oMHxSKSl7RD0wO2JyZWFrfWFbbWU+PjJdPWFbKFI9TGUrNTYrKEQ8PDUpfDApPj4yXSxhW21lKzQ+PjJdPWFbUis0Pj4yXSxhW21lKzg+PjJdPWFbUis4Pj4yXSxhW21lKzEyPj4y''@;'; put 'put ''XT1hW1IrMTI+PjJdLGFbbWUrMTY+PjJdPWFbUisxNj4+Ml0sYVttZSsyMD4+Ml09YVtSKzIwPj4yXSxhW21lKzI0Pj4yXT1hW1IrMjQ+PjJdLGFbbWUrMjg+PjJdPWFbUisyOD4+Ml0sVTMoZixtZSksRD1EKzF8MCxSPTB8YVtLPj4yXX1mb3IoOzMhPSgwfEQpOylhW21lPj4yXT1hWyhIZT0x''@;'; put 'put ''NTM3MjArKEQ8PDUpfDApPj4yXSxhW21lKzQ+PjJdPWFbSGUrND4+Ml0sYVttZSs4Pj4yXT1hW0hlKzg+PjJdLGFbbWUrMTI+PjJdPWFbSGUrMTI+PjJdLGFbbWUrMTY+PjJdPWFbSGUrMTY+PjJdLGFbbWUrMjA+PjJdPWFbSGUrMjA+PjJdLGFbbWUrMjQ+PjJdPWFbSGUrMjQ+PjJdLGFbbWUr''@;'; put 'put ''Mjg+PjJdPWFbSGUrMjg+PjJdLFUzKGYsbWUpLEQ9RCsxfDA7Zm9yKFI9MHxhW3c+PjJdO0Q9UistMXwwLCEoKDB8Uik8PTApOylhW21lPj4yXT1hWyhSPWJlKzU2KyhEPDw1KXwwKT4+Ml0sYVttZSs0Pj4yXT1hW1IrND4+Ml0sYVttZSs4Pj4yXT1hW1IrOD4+Ml0sYVttZSsxMj4+Ml09YVtS''@;'; put 'put ''KzEyPj4yXSxhW21lKzE2Pj4yXT1hW1IrMTY+PjJdLGFbbWUrMjA+PjJdPWFbUisyMD4+Ml0sYVttZSsyND4+Ml09YVtSKzI0Pj4yXSxhW21lKzI4Pj4yXT1hW1IrMjg+PjJdLFUzKGYsbWUpLFI9RDtpZihEPWw/MHx2ayhmLE9lKTowfGdrKGYsT2UpLCEoUj0wfGFbT2U+PjJdKSlicmVhaztB''@;'; put 'put ''dShHLDB8YVsoMj09KDMmYVtHPj4yXXwwKT9HOkcrLTQ4fDApKzQwPj4yXSxELFIsMTcyOTYpLGFbYz4+Ml09MH1vZT1CZX1mdW5jdGlvbiBZZChsLGMsZixwLG0sQSx3KXtmfD0wLEF8PTAsd3w9MDt2YXIgYixrLE0sRCxHLFI9MDtEPW9lLG9lPW9lKzEyOHwwLGI9RCs5NnwwLGs9RCs2NHww''@;'; put 'put ''LE09RCx4NShSPUQrMzJ8MCxsfD0wLGN8PTAscHw9MCwwLG18PTApLGFbQT4+Ml09YVtSPj4yXSxhW0ErND4+Ml09YVtSKzQ+PjJdLGFbQSs4Pj4yXT1hW1IrOD4+Ml0sYVtBKzEyPj4yXT1hW1IrMTI+PjJdLGFbQSsxNj4+Ml09YVtSKzE2Pj4yXSxhW0ErMjA+PjJdPWFbUisyMD4+Ml0sYVtB''@;'; put 'put ''KzI0Pj4yXT1hW1IrMjQ+PjJdLGFbQSsyOD4+Ml09YVtSKzI4Pj4yXSxhW2s+PjJdPWFbUj4+Ml0sYVtrKzQ+PjJdPWFbUis0Pj4yXSxhW2srOD4+Ml09YVtSKzg+PjJdLGFbaysxMj4+Ml09YVtSKzEyPj4yXSxhW2srMTY+PjJdPWFbUisxNj4+Ml0sYVtrKzIwPj4yXT1hW1IrMjA+PjJdLGFb''@;'; put 'put ''aysyND4+Ml09YVtSKzI0Pj4yXSxhW2srMjg+PjJdPWFbUisyOD4+Ml0sYVtBKzQ4Pj4yXT00LHc8PDI0Pj4yND9iRChmLG0sMixBLDApOl9EKGYsbSwyLEEsMCksX1soUj1rKzI0fDApPj4zXT0rX1tBKzU2KygobT0oMHxhWyhjPUErNTJ8MCk+PjJdKS0xfDApPDw1KSsyND4+M10sX1sodz1r''@;'; put 'put ''Kzh8MCk+PjNdPStfW0ErNTYrKG08PDUpKzg+PjNdLEc9K19bKDB8YVsxOTYrKDB8YVtsKzE2Pj4yXSk+PjJdKSsoYVsyMzIrKHA9MHxhW3ArMTY+PjJdKT4+Ml08PDYpKzI0Pj4zXSsgK19bcCsyND4+M10sYVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFb''@;'; put 'put ''ays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sYVtiKzE2Pj4yXT1hW2srMTY+PjJdLGFbYisyMD4+Ml09YVtrKzIwPj4yXSxhW2IrMjQ+PjJdPWFbaysyND4+Ml0sYVtiKzI4Pj4yXT1hW2srMjg+PjJdLHV5KE0sYiw0LEcpLGFbaz4+Ml09YVtNPj4yXSxhW2srND4+Ml09YVtNKzQ+PjJd''@;'; put 'put ''LGFbays4Pj4yXT1hW00rOD4+Ml0sYVtrKzEyPj4yXT1hW00rMTI+PjJdLGFbaysxNj4+Ml09YVtNKzE2Pj4yXSxhW2srMjA+PjJdPWFbTSsyMD4+Ml0sYVtrKzI0Pj4yXT1hW00rMjQ+PjJdLGFbaysyOD4+Ml09YVtNKzI4Pj4yXSwrX1trPj4zXTwrX1trKzE2Pj4zXSYmK19bdz4+M108K19b''@;'; put 'put ''Uj4+M10mJihhW2M+PjJdPTErKFI9MHxhW2M+PjJdKSxhWyhSPUErNTYrKFI8PDUpfDApPj4yXT1hW2s+PjJdLGFbUis0Pj4yXT1hW2srND4+Ml0sYVtSKzg+PjJdPWFbays4Pj4yXSxhW1IrMTI+PjJdPWFbaysxMj4+Ml0sYVtSKzE2Pj4yXT1hW2srMTY+PjJdLGFbUisyMD4+Ml09YVtrKzIw''@;'; put 'put ''Pj4yXSxhW1IrMjQ+PjJdPWFbaysyND4+Ml0sYVtSKzI4Pj4yXT1hW2srMjg+PjJdKSxvZT1EfWZ1bmN0aW9uIFo2KGwsYyxmLHAsbSxBLHcpe2Z8PTAsQXw9MCx3fD0wO3ZhciBiLGssTSxELEcsUj0wO0Q9b2Usb2U9b2UrMTI4fDAsYj1EKzk2fDAsaz1EKzY0fDAsTT1ELHg1KFI9RCszMnww''@;'; put 'put ''LGx8PTAsY3w9MCxwfD0wLDAsbXw9MCksYVtBPj4yXT1hW1I+PjJdLGFbQSs0Pj4yXT1hW1IrND4+Ml0sYVtBKzg+PjJdPWFbUis4Pj4yXSxhW0ErMTI+PjJdPWFbUisxMj4+Ml0sYVtBKzE2Pj4yXT1hW1IrMTY+PjJdLGFbQSsyMD4+Ml09YVtSKzIwPj4yXSxhW0ErMjQ+PjJdPWFbUisyND4+''@;'; put 'put ''Ml0sYVtBKzI4Pj4yXT1hW1IrMjg+PjJdLGFbaz4+Ml09YVtSPj4yXSxhW2srND4+Ml09YVtSKzQ+PjJdLGFbays4Pj4yXT1hW1IrOD4+Ml0sYVtrKzEyPj4yXT1hW1IrMTI+PjJdLGFbaysxNj4+Ml09YVtSKzE2Pj4yXSxhW2srMjA+PjJdPWFbUisyMD4+Ml0sYVtrKzI0Pj4yXT1hW1IrMjQ+''@;'; put 'put ''PjJdLGFbaysyOD4+Ml09YVtSKzI4Pj4yXSxhW0ErNDg+PjJdPTEsdzw8MjQ+PjI0P2JEKGYsbSwyLEEsMCk6X0QoZixtLDIsQSwwKSxfWyhSPWsrMjR8MCk+PjNdPStfW0ErNTYrKChtPSgwfGFbKGM9QSs1MnwwKT4+Ml0pLTF8MCk8PDUpKzI0Pj4zXSxfWyh3PWsrOHwwKT4+M109K19bQSs1''@;'; put 'put ''NisobTw8NSkrOD4+M10sRz0rX1syNCsocD0wfGFbcCsxNj4+Ml0pPj4zXS0rX1soMHxhWzE5NisoMHxhW2wrMTY+PjJdKT4+Ml0pKyhhW3ArMjMyPj4yXTw8NikrMjQ+PjNdLGFbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4y''@;'; put 'put ''XT1hW2srMTI+PjJdLGFbYisxNj4+Ml09YVtrKzE2Pj4yXSxhW2IrMjA+PjJdPWFbaysyMD4+Ml0sYVtiKzI0Pj4yXT1hW2srMjQ+PjJdLGFbYisyOD4+Ml09YVtrKzI4Pj4yXSx1eShNLGIsMSxHKSxhW2s+PjJdPWFbTT4+Ml0sYVtrKzQ+PjJdPWFbTSs0Pj4yXSxhW2srOD4+Ml09YVtNKzg+''@;'; put 'put ''PjJdLGFbaysxMj4+Ml09YVtNKzEyPj4yXSxhW2srMTY+PjJdPWFbTSsxNj4+Ml0sYVtrKzIwPj4yXT1hW00rMjA+PjJdLGFbaysyND4+Ml09YVtNKzI0Pj4yXSxhW2srMjg+PjJdPWFbTSsyOD4+Ml0sK19baz4+M108K19baysxNj4+M10mJitfW3c+PjNdPCtfW1I+PjNdJiYoYVtjPj4yXT0x''@;'; put 'put ''KyhSPTB8YVtjPj4yXSksYVsoUj1BKzU2KyhSPDw1KXwwKT4+Ml09YVtrPj4yXSxhW1IrND4+Ml09YVtrKzQ+PjJdLGFbUis4Pj4yXT1hW2srOD4+Ml0sYVtSKzEyPj4yXT1hW2srMTI+PjJdLGFbUisxNj4+Ml09YVtrKzE2Pj4yXSxhW1IrMjA+PjJdPWFbaysyMD4+Ml0sYVtSKzI0Pj4yXT1h''@;'; put 'put ''W2srMjQ+PjJdLGFbUisyOD4+Ml09YVtrKzI4Pj4yXSksb2U9RH1mdW5jdGlvbiBqMihsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlvbiBwMGUobCxjLGYscCxtLEEsdyl7bHw9MCxjfD0wLEF8PTAsd3w9MDt2YXIgTGUsQmUsamUsZXQsbHQsTXQsa3Qs''@;'; put 'put ''YXQsRXQsWnQsdXQsd3Qscm4seW4sRm4sbHIsTnIsa3IsY3IsQ3IscXIsTHIsYTAsRmksUGksSG8sYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsSGU9MCxydD0wLEdlPTAsbG89MDtmb3IoSG89b2Usb2U9b2UrMjg4fDAsY3I9SG8rMjU2fDAsa3I9SG8r''@;'; put 'put ''MjQwfDAsTnI9SG8rMjI0fDAsYTA9SG8rMjgwfDAsRmk9SG8rMjcyfDAsUGk9SG8rMzJ8MCxDcj1IbysxNnwwLHFyPUhvLGs9SG8rMjA4fDAsTT1IbysxOTJ8MCxEPTB8YVsoZnw9MCkrKChwfD0wKTw8Mik+PjJdLExyPTB8bXIoKG18PTApPDwyKSxiPTA7ISgoMHxiKT49KDB8bSkpOylhW0xy''@;'; put 'put ''KyhiPDwyKT4+Ml09YVtmKyhiK3A8PDIpPj4yXSxiPWIrMXwwO2ZvcihJMShMcixtLDQsNTkpLEdlPTE2KygwfGFbKEQ9RCsxNnwwKT4+Ml0pfDAsYVtrcj4+Ml09YVsocD0xNisoMHxhWyhmPWwrMTZ8MCk+PjJdKXwwKT4+Ml0sYVtrcis0Pj4yXT1hW3ArND4+Ml0sYVtrcis4Pj4yXT1hW3Ar''@;'; put 'put ''OD4+Ml0sYVtrcisxMj4+Ml09YVtwKzEyPj4yXSxhW2NyPj4yXT1hW0dlPj4yXSxhW2NyKzQ+PjJdPWFbR2UrND4+Ml0sYVtjcis4Pj4yXT1hW0dlKzg+PjJdLGFbY3IrMTI+PjJdPWFbR2UrMTI+PjJdLFdkKGssa3IsY3IpLGFbQ3I+PjJdPWFbaz4+Ml0sYVtDcis0Pj4yXT1hW2srND4+Ml0s''@;'; put 'put ''YVtDcis4Pj4yXT1hW2srOD4+Ml0sYVtDcisxMj4+Ml09YVtrKzEyPj4yXSxEPTU2KygwfGFbRD4+Ml0pfDAsYVtrcj4+Ml09YVsocD0xNisoMHxhWyhHZT1jKzE2fDApPj4yXSl8MCk+PjJdLGFba3IrND4+Ml09YVtwKzQ+PjJdLGFba3IrOD4+Ml09YVtwKzg+PjJdLGFba3IrMTI+PjJdPWFb''@;'; put 'put ''cCsxMj4+Ml0sYVtjcj4+Ml09YVtEPj4yXSxhW2NyKzQ+PjJdPWFbRCs0Pj4yXSxhW2NyKzg+PjJdPWFbRCs4Pj4yXSxhW2NyKzEyPj4yXT1hW0QrMTI+PjJdLFdkKE0sa3IsY3IpLGFbcXI+PjJdPWFbTT4+Ml0sYVtxcis0Pj4yXT1hW00rND4+Ml0sYVtxcis4Pj4yXT1hW00rOD4+Ml0sYVtx''@;'; put 'put ''cisxMj4+Ml09YVtNKzEyPj4yXSxPZT0uNSooYmU9KEJlPStfW3FyPj4zXS0rX1s4OCsoMHxhW0dlPj4yXSk+PjNdKSsoTGU9K19bOTYrKDB8YVtmPj4yXSk+PjNdKyArX1tDcj4+M10pKSxHZT0wfGFbTHI+PjJdLGFbUGk+PjJdPWFbQ3I+PjJdLGFbUGkrND4+Ml09YVtDcis0Pj4yXSxhW1Bp''@;'; put 'put ''Kzg+PjJdPWFbQ3IrOD4+Ml0sYVtQaSsxMj4+Ml09YVtDcisxMj4+Ml0sYVsoRD1QaSsxNnwwKT4+Ml09YVtDcj4+Ml0sYVtEKzQ+PjJdPWFbQ3IrND4+Ml0sYVtEKzg+PjJdPWFbQ3IrOD4+Ml0sYVtEKzEyPj4yXT1hW0NyKzEyPj4yXSxhWyhmPVBpKzMyfDApPj4yXT1hW3FyPj4yXSxhW2Yr''@;'; put 'put ''ND4+Ml09YVtxcis0Pj4yXSxhW2YrOD4+Ml09YVtxcis4Pj4yXSxhW2YrMTI+PjJdPWFbcXIrMTI+PjJdLGFbKHA9UGkrNDh8MCk+PjJdPWFbcXI+PjJdLGFbcCs0Pj4yXT1hW3FyKzQ+PjJdLGFbcCs4Pj4yXT1hW3FyKzg+PjJdLGFbcCsxMj4+Ml09YVtxcisxMj4+Ml0sQXUoR2UsMHxhWygy''@;'; put 'put ''PT0oMyZhW0dlPj4yXXwwKT9HZTpHZSstNDh8MCkrNDA+PjJdLFBpLDQsMTcyOTYpLF9bNTYrKEdlPTB8YVs5NisoMHxhW0dlKzE2Pj4yXSk+PjJdKT4+M109T2UsX1tHZSs2ND4+M109LjUqKDYrKHBlPStfW0dlKzMyPj4zXSkpKyhLPStfWyhqZT1Dcis4fDApPj4zXSksdWVbR2UrODE+PjBd''@;'; put 'put ''PTEsZXQ9LjUqKGJlLShydD0rX1tHZSsyND4+M10pKSxydD0uNSoocnQrYmUpLEdlPVBpKzI0fDAsbHQ9UGkrNDB8MCxNdD1QaSs1NnwwLGt0PVBpKzY0fDAsYXQ9cXIrOHwwLEV0PVBpKzcyfDAsWnQ9UGkrODB8MCx1dD1QaSs4OHwwLHd0PVBpKzk2fDAscm49UGkrMTA0fDAseW49UGkrMTEy''@;'; put 'put ''fDAsRm49UGkrMTIwfDAsbHI9YTArNHwwLE09Nj09KDB8QSkmMSxHPTAsUj0wLHBlKz1LKz0zLGs9MTs7KXtpZigoMHxrKT49KDB8dykpe0hlPTY7YnJlYWt9aWYoYz0wfGFbTHIrKGs8PDIpPj4yXSwxJms/KGw9MHxhWzk2KygwfGFbKGI9YysxNnwwKT4+Ml0pPj4yXSwxPT0oMHxrKSYmKEc9''@;'; put 'put ''LjUqKChSPStfW2wrMjQ+PjNdKStiZSksUj0uNSooYmUtUikpLEs9SystNi0rX1tsKzMyPj4zXSxhW1BpPj4yXT1hW0NyPj4yXSxhW1BpKzQ+PjJdPWFbQ3IrND4+Ml0sYVtQaSs4Pj4yXT1hW0NyKzg+PjJdLGFbUGkrMTI+PjJdPWFbQ3IrMTI+PjJdLF9bRD4+M109K19bQ3I+PjNdLF9bR2U+''@;'; put 'put ''PjNdPW1lPUsrLTYsX1tmPj4zXT0rX1txcj4+M10sX1tsdD4+M109bWUsYVtwPj4yXT1hW3FyPj4yXSxhW3ArND4+Ml09YVtxcis0Pj4yXSxhW3ArOD4+Ml09YVtxcis4Pj4yXSxhW3ArMTI+PjJdPWFbcXIrMTI+PjJdLF9ba3Q+PjNdPUcsX1tFdD4+M109K19bYXQ+PjNdLF9bWnQ+PjNdPUcs''@;'; put 'put ''X1t1dD4+M109SyxfW3d0Pj4zXT1SLF9bcm4+PjNdPUssX1t5bj4+M109UixfW0ZuPj4zXT0rX1tqZT4+M10sbWU9LjUqK19bMzIrKDB8YVs5NisoMHxhW2I+PjJdKT4+Ml0pPj4zXStLKTooYVtQaT4+Ml09YVtDcj4+Ml0sYVtQaSs0Pj4yXT1hW0NyKzQ+PjJdLGFbUGkrOD4+Ml09YVtDcis4''@;'; put 'put ''Pj4yXSxhW1BpKzEyPj4yXT1hW0NyKzEyPj4yXSxfW0Q+PjNdPWV0LF9bR2U+PjNdPStfW2plPj4zXSxfW2Y+PjNdPWV0LF9bbHQ+PjNdPXBlLF9bcD4+M109cnQsX1tNdD4+M109cGUsX1trdD4+M109cnQsX1tFdD4+M109bWU9K19bYXQ+PjNdLF9bWnQ+PjNdPWxvPStfW3FyPj4zXSxfW3V0''@;'; put 'put ''Pj4zXT1tZSxfW3d0Pj4zXT1sbyxfW3JuPj4zXT1sbz1wZSs2LF9beW4+PjNdPStfW0NyPj4zXSxfW0ZuPj4zXT1sbyxtZT1sbysuNSoocGU9K19bMzIrKDB8YVs5NisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXSkscGU9bG8rcGUpLGFbbHI+PjJdPTgsYVthMD4+Ml09UGksYVtOcj4+Ml09YVtD''@;'; put 'put ''cj4+Ml0sYVtOcis0Pj4yXT1hW0NyKzQ+PjJdLGFbTnIrOD4+Ml09YVtDcis4Pj4yXSxhW05yKzEyPj4yXT1hW0NyKzEyPj4yXSxhW2tyPj4yXT1hW3FyPj4yXSxhW2tyKzQ+PjJdPWFbcXIrND4+Ml0sYVtrcis4Pj4yXT1hW3FyKzg+PjJdLGFba3IrMTI+PjJdPWFbcXIrMTI+PjJdLGFbY3I+''@;'; put 'put ''PjJdPWFbYTA+PjJdLGFbY3IrND4+Ml09YVthMCs0Pj4yXSxiPTB8WjcoTnIsa3IsY3IsRmksTSksIShsPTB8YVtGaT4+Ml0pKWJyZWFrO19bNTYrKEE9MHxhWzk2KygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdPU9lLF9bQSs2ND4+M109bWUsdWVbQSs4MT4+MF09MSxBdShjLDB8YVsoMj09KDMm''@;'; put 'put ''YVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSxiLGwsMTcyOTYpLGs9aysxfDB9ZTpkb3tpZig2PT0oMHxIZSkpe2ZvcihPZT0uMzMzMzMzMzMzMzMzMzMzMyooQmUrMipMZSksYmU9LjMzMzMzMzMzMzMzMzMzMzMqKDIqQmUrTGUpOyEoKDB8ayk+PSgwfG0pKTspe2lmKGM9MHxhW0xyKyhr''@;'; put 'put ''PDwyKT4+Ml0sMSZrPyhtZT0oSGU9MT09KDB8aykpP09lOlIsRz1IZT9iZTpHLFI9SystNixhW1BpPj4yXT1hW0NyPj4yXSxhW1BpKzQ+PjJdPWFbQ3IrND4+Ml0sYVtQaSs4Pj4yXT1hW0NyKzg+PjJdLGFbUGkrMTI+PjJdPWFbQ3IrMTI+PjJdLF9bRD4+M109K19bQ3I+PjNdLF9bR2U+PjNd''@;'; put 'put ''PUsrPS0xMixfW2Y+PjNdPStfW3FyPj4zXSxfW2x0Pj4zXT1LLGFbcD4+Ml09YVtxcj4+Ml0sYVtwKzQ+PjJdPWFbcXIrND4+Ml0sYVtwKzg+PjJdPWFbcXIrOD4+Ml0sYVtwKzEyPj4yXT1hW3FyKzEyPj4yXSxfW2t0Pj4zXT1HLF9bRXQ+PjNdPStfW2F0Pj4zXSxfW1p0Pj4zXT1HLF9bdXQ+''@;'; put 'put ''PjNdPVIsX1t3dD4+M109bWUsX1tybj4+M109UixfW3luPj4zXT1tZSxLPVIsUj0rX1tqZT4+M10pOihhW1BpPj4yXT1hW0NyPj4yXSxhW1BpKzQ+PjJdPWFbQ3IrND4+Ml0sYVtQaSs4Pj4yXT1hW0NyKzg+PjJdLGFbUGkrMTI+PjJdPWFbQ3IrMTI+PjJdLF9bRD4+M109ZXQsX1tHZT4+M109''@;'; put 'put ''K19bamU+PjNdLF9bZj4+M109ZXQsX1tsdD4+M109cGUsX1twPj4zXT1ydCxfW010Pj4zXT1wZSxfW2t0Pj4zXT1ydCxfW0V0Pj4zXT1tZT0rX1thdD4+M10sX1tadD4+M109bG89K19bcXI+PjNdLF9bdXQ+PjNdPW1lLF9bd3Q+PjNdPWxvLF9bcm4+PjNdPWxvPXBlKzYsX1t5bj4+M109K19b''@;'; put 'put ''Q3I+PjNdLHBlPWxvLG1lPVIsUj1sbyksX1tGbj4+M109UixhW2xyPj4yXT04LGFbYTA+PjJdPVBpLGFbTnI+PjJdPWFbQ3I+PjJdLGFbTnIrND4+Ml09YVtDcis0Pj4yXSxhW05yKzg+PjJdPWFbQ3IrOD4+Ml0sYVtOcisxMj4+Ml09YVtDcisxMj4+Ml0sYVtrcj4+Ml09YVtxcj4+Ml0sYVtr''@;'; put 'put ''cis0Pj4yXT1hW3FyKzQ+PjJdLGFba3IrOD4+Ml09YVtxcis4Pj4yXSxhW2tyKzEyPj4yXT1hW3FyKzEyPj4yXSxhW2NyPj4yXT1hW2EwPj4yXSxhW2NyKzQ+PjJdPWFbYTArND4+Ml0sYj0wfFo3KE5yLGtyLGNyLEZpLE0pLCEobD0wfGFbRmk+PjJdKSlicmVhayBlO0F1KGMsMHxhWygyPT0o''@;'; put 'put ''MyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLGIsbCwxNzI5Niksaz1rKzF8MCxSPW1lfUh0KExyKX19d2hpbGUoMCk7b2U9SG99ZnVuY3Rpb24gZzBlKGwsYyl7Y3w9MDt2YXIgbSxBLGIsZj0wLHA9MCx3PTA7Zm9yKG09b2Usb2U9b2UrMTZ8MCxwPW0sdz0wPT0oMHxsYyhsfD0wKSks''@;'; put 'put ''dWVbcD4+MF09MHx1ZVsodz13PzE4NTkyOjE4NTg0KT4+MF0sdWVbcCsxPj4wXT0wfHVlW3crMT4+MF0sdWVbcCsyPj4wXT0wfHVlW3crMj4+MF0sdWVbcCszPj4wXT0wfHVlW3crMz4+MF0sZjAocD0wfEVjKDg1NDkzLHAsMCksMTM3NDgzLDI4MCwxKSxzaShwLDAsODcxNzEsMTk1MDU5KSx3''@;'; put 'put ''PTB8bXIoOTYpLGFbOCsoZj0wfGFbcCsxNj4+Ml0pPj4yXT13LF9bdz4+M109K19bKGI9MHxhWzgrKEE9MHxhW2wrMTY+PjJdKT4+Ml0pPj4zXSxfW3crMjQ+PjNdPStfW2IrMjQ+PjNdLHVlW2YrMTE1Pj4wXT0wfHVlW0ErMTE1Pj4wXSxhW2YrMTE2Pj4yXT0xJmFbQSsxMTY+PjJdXjEsYVtm''@;'; put 'put ''KzI0OD4+Ml09YVtBKzI0OD4+Ml0sYVtmKzI1Mj4+Ml09YVtBKzI1Mj4+Ml0sZj0wfFBzKDB8aGkobCksMSwwKTtmOylzaShwLDEsMHxhW2YrOD4+Ml0sMHxhW2YrMTI+PjJdKSxmPTB8UHMoMHxoaShsKSwxLGYpO2ZvcihmPTB8UHMoMHxoaShsKSwyLDApO2Y7KXNpKHAsMiwwfGFbZis4Pj4y''@;'; put 'put ''XSwwfGFbZisxMj4+Ml0pLGY9MHxQcygwfGhpKGwpLDIsZik7cmV0dXJuIDB8c2kocCwyLDExMTQ2NCwwKXx8c2kocCwyLDExMTQ2NCwxOTUwNTkpLDB8c2kocCwyLDExMTQ1NSwwKXx8c2kocCwyLDExMTQ1NSwxOTUwNTkpLGZ1bmN0aW9uIG0wZShsLGMpe2x8PTAsYVsoY3w9MCk+PjJdPWFb''@;'; put 'put ''NDcxODldLGFbYys0Pj4yXT1hWzQ3MTkzXSxhW2MrOD4+Ml09YVs0NzE5NF0sYVtjKzEyPj4yXT1hWzQ3MTc0XSxhW2MrMTY+PjJdPWFbNDcxNzVdLGFbYysyMD4+Ml09YVs0NzE4MV0sYVtjKzI0Pj4yXT1hWzQ3MTgwXSxhW2MrMjg+PjJdPWFbNDcxNzldLGFbYyszMj4+Ml09YVs0NzIwNV0s''@;'; put 'put ''YVtjKzM2Pj4yXT1hWzQ3MTk3XSxhW2MrNDA+PjJdPWFbNDcxODJdLGFbYys0ND4+Ml09YVs0NzE5Ml0sYVtjKzQ4Pj4yXT1hWzQ3MjAxXSxhW2MrNTI+PjJdPWFbNDcyMDBdLGFbYys1Nj4+Ml09YVs0NzE5OV0sYVtjKzYwPj4yXT1hWzQ3MjA0XSxhW2MrNjQ+PjJdPWFbNDcxOThdLGFbYys2''@;'; put 'put ''OD4+Ml09YVs0NzE4M10sYVtjKzcyPj4yXT1hWzQ3MTQ1XSxhW2MrNzY+PjJdPWFbNDcxNDZdLGFbYys4MD4+Ml09YVs0NzE0N10sYVtjKzg0Pj4yXT1hWzQ3MTU3XSxhW2MrODg+PjJdPWFbNDcxNTBdLGFbYys5Mj4+Ml09YVs0NzE1MV0sYVtjKzk2Pj4yXT1hWzQ3MTUyXSxhW2MrMTAwPj4y''@;'; put 'put ''XT1hWzQ3MTU0XSxhW2MrMTA0Pj4yXT1hWzQ3MTU1XSxhW2MrMTA4Pj4yXT1hWzQ3MTU4XSxhW2MrMTEyPj4yXT1hWzQ3MTYxXSxhW2MrMTE2Pj4yXT1hWzQ3MTU5XSxhW2MrMTIwPj4yXT1hWzQ3MTYwXSxhW2MrMTI0Pj4yXT1hWzQ3MTYzXSxhW2MrMTI4Pj4yXT1hWzQ3MTYyXSxhW2MrMTMy''@;'; put 'put ''Pj4yXT1hWzQ3MTY0XSxhW2MrMTM2Pj4yXT1hWzQ3MTY1XSxhW2MrMTQwPj4yXT1hWzQ3MTU2XSxhW2MrMTQ0Pj4yXT1hWzQ3MTY4XSxhW2MrMTUyPj4yXT1hWzQ3MTM4XSxhW2MrMTQ4Pj4yXT1hWzQ3MTQwXSxhWzQ3MTg5XT0wLGFbNDcxOTNdPTB8c2kobCwyLDg3NDEyLDApLGFbNDcxOTRd''@;'; put 'put ''PTB8c2kobCwyLDg3NDIxLDApLGM9MHxzaShsLDIsMTAxNTQxLDApLGFbNDcxNzRdPWMsY3x8KGFbNDcxNzRdPTB8c2kobCwyLDEwMTU0MSwxOTUwNTkpKSxhWzQ3MTc1XT0wLGFbNDcxODFdPTAsYVs0NzE4MF09MHxzaShsLDIsMTAxNDM3LDApLGFbNDcxNzldPTB8c2kobCwyLDEwMTQyOCww''@;'; put 'put ''KSxhWzQ3MjA1XT0wfHNpKGwsMiwxMDE3MTcsMCksYVs0NzE5N109MCxhWzQ3MTgyXT0wfHNpKGwsMiwxMDgyMjQsMCksYVs0NzE5Ml09MHxzaShsLDIsODU0OTgsMCksYVs0NzIwMV09MCxhWzQ3MjAwXT0wfHNpKGwsMiwxMDE2MTcsMCksYVs0NzE5OV09MHxzaShsLDIsMTAxNjAzLDApLGFb''@;'; put 'put ''NDcyMDRdPTB8c2kobCwyLDEwMTcwOCwwKSxhWzQ3MTk4XT0wLGFbNDcxODNdPTAsYVs0NzE0NV09MHxzaShsLDEsMTQxMDQ4LDApLGFbNDcxNDZdPTB8c2kobCwxLDE0MTExNiwwKSxhWzQ3MTQ3XT0wfHNpKGwsMSwxMDgyMzAsMCksYVs0NzE1N109MCxhWzQ3MTUwXT0wfHNpKGwsMSwxMDE0''@;'; put 'put ''MjgsMCksYVs0NzE1MV09MHxzaShsLDEsMTAxNDM3LDApLGFbNDcxNTJdPTAsYVs0NzE1NF09MHxzaShsLDEsMTA4MjI0LDApLGFbNDcxNTVdPTAsYVs0NzE1OF09MCxhWzQ3MTYxXT0wfHNpKGwsMSwxMDE0MDksMCksYVs0NzE1OV09MHxzaShsLDEsMTQxMDc2LDApLGFbNDcxNjBdPTB8c2ko''@;'; put 'put ''bCwxLDEwMTQ3MiwwKSxhWzQ3MTYzXT0wfHNpKGwsMSwxMDE0ODQsMCksYVs0NzE2Ml09MHxzaShsLDEsMTAxMzQ4LDApLGFbNDcxNjRdPTB8c2kobCwxLDEwMTQ4OSwwKSxhWzQ3MTY1XT0wfHNpKGwsMSw4NTUxMCwwKSxhWzQ3MTU2XT0wLGFbNDcxNjhdPTAsYVs0NzE0MF09MHxzaShsLDAs''@;'; put 'put ''MTAxNDA5LDApfShwLGMpLG9lPW0sMHxwfWZ1bmN0aW9uIEk1KGwsYyl7dmFyIGYscCxtPTA7cmV0dXJuIHA9b2Usb2U9b2UrMTZ8MCxmPXAsZjAobD0wfE1yKGx8PTAsMHwkcihjfD0wKSwxKSwxMzc0NDcsMzA0LDEpLEw2KGMsbCksMj09KDB8WjUoYykpJiYoYz0wfFFuKDMrKDB8em8oMHxh''@;'; put 'put ''W2FbMTA0KygwfGFbKG09YysxNnwwKT4+Ml0pPj4yXT4+Ml0pKXwwKSxhW2Y+PjJdPWFbYVsxMDQrKDB8YVttPj4yXSk+PjJdPj4yXSxhbyhjLDg1NDg4LGYpLE1jKGwsMTA4MjI0LGMpKSxvZT1wLDB8bH1mdW5jdGlvbiB4WShsLGMsZixwKXtyZXR1cm4gcHw9MCxmMChmPTB8cmwobHw9MCxj''@;'; put 'put ''fD0wLGZ8PTAsMCwxKSwxMzc0NjAsMTc2LDEpLEw2KHAsZiksMHxmfWZ1bmN0aW9uIGs3KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wO3ZhciBtLEEsdyxiPTA7dz1vZSxvZT1vZSszMnwwLEE9dysxNnwwLG09dywwfChwfD0wKSYmKGI9K19bYz4+M10sX1tjPj4zXT0rX1socD1jKzh8MCk+PjNd''@;'; put 'put ''LF9bcD4+M109LWIpLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLGFbQT4+Ml09YVtmPj4yXSxhW0ErND4+Ml09YVtmKzQ+PjJdLGFbQSs4Pj4yXT1hW2YrOD4+Ml0sYVtBKzEyPj4yXT1hW2YrMTI+''@;'; put 'put ''PjJdLFdkKGwsbSxBKSxvZT13fWZ1bmN0aW9uIFRZKGwsYyl7bHw9MCxhWzQ3MTg5XT1hWyhjfD0wKT4+Ml0sYVs0NzE5M109YVtjKzQ+PjJdLGFbNDcxOTRdPWFbYys4Pj4yXSxhWzQ3MTc0XT1hW2MrMTI+PjJdLGFbNDcxNzVdPWFbYysxNj4+Ml0sYVs0NzE4MV09YVtjKzIwPj4yXSxhWzQ3''@;'; put 'put ''MTgwXT1hW2MrMjQ+PjJdLGFbNDcxNzldPWFbYysyOD4+Ml0sYVs0NzIwNV09YVtjKzMyPj4yXSxhWzQ3MTk3XT1hW2MrMzY+PjJdLGFbNDcxODJdPWFbYys0MD4+Ml0sYVs0NzE5Ml09YVtjKzQ0Pj4yXSxhWzQ3MjAxXT1hW2MrNDg+PjJdLGFbNDcyMDBdPWFbYys1Mj4+Ml0sYVs0NzE5OV09''@;'; put 'put ''YVtjKzU2Pj4yXSxhWzQ3MjA0XT1hW2MrNjA+PjJdLGFbNDcxOThdPWFbYys2ND4+Ml0sYVs0NzE4M109YVtjKzY4Pj4yXSxhWzQ3MTQ1XT1hW2MrNzI+PjJdLGFbNDcxNDZdPWFbYys3Nj4+Ml0sYVs0NzE0N109YVtjKzgwPj4yXSxhWzQ3MTU3XT1hW2MrODQ+PjJdLGFbNDcxNTBdPWFbYys4''@;'; put 'put ''OD4+Ml0sYVs0NzE1MV09YVtjKzkyPj4yXSxhWzQ3MTUyXT1hW2MrOTY+PjJdLGFbNDcxNTRdPWFbYysxMDA+PjJdLGFbNDcxNTVdPWFbYysxMDQ+PjJdLGFbNDcxNThdPWFbYysxMDg+PjJdLGFbNDcxNjFdPWFbYysxMTI+PjJdLGFbNDcxNTldPWFbYysxMTY+PjJdLGFbNDcxNjBdPWFbYysx''@;'; put 'put ''MjA+PjJdLGFbNDcxNjNdPWFbYysxMjQ+PjJdLGFbNDcxNjJdPWFbYysxMjg+PjJdLGFbNDcxNjRdPWFbYysxMzI+PjJdLGFbNDcxNjVdPWFbYysxMzY+PjJdLGFbNDcxNTZdPWFbYysxNDA+PjJdLGFbNDcxNjhdPWFbYysxNDQ+PjJdLGFbNDcxNDBdPWFbYysxNDg+PjJdLGFbNDcxMzhdPWFb''@;'; put 'put ''YysxNTI+PjJdLEh0KGMpLG4wZShsKSxRMShsKX1mdW5jdGlvbiBTNyhsLGMpe3ZhciBmLHAsbSxBLHc7cmV0dXJuIGY9b2Usb2U9b2UrMTZ8MCxwPWYrOHwwLEE9MTcyKygwfGFbMTYrKGN8PTApPj4yXSl8MCxhWyhtPWYpPj4yXT1hWyh3PTE4MCsoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4y''@;'; put 'put ''XSxhW20rND4+Ml09YVt3KzQ+PjJdLGFbcD4+Ml09YVtBPj4yXSxhW3ArND4+Ml09YVtBKzQ+PjJdLGM9MHxJWShsLG0sYyxwKSxvZT1mLDB8Y31mdW5jdGlvbiBJWShsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MDttPTB8YVs0KyhjfD0wKT4+Ml07ZTpkb3tpZigoMHxtKT4w''@;'; put 'put ''JiYoQT0wfGFbcCs0Pj4yXSwoMHxBKT4wKSlpZigoMHxtKTwoMHxBKSlmb3IobT0wfGFbYz4+Ml0scD0wOzspe2lmKCEoYz0wfGFbbSsocDw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9aWYoKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSk9PSgwfGYpKWJyZWFrO3A9cCsx''@;'; put 'put ''fDB9ZWxzZSBmb3IobT0wfGFbcD4+Ml0scD0wOzspe2lmKCEoYz0wfGFbbSsocDw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9aWYoKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKT09KDB8bCkpYnJlYWs7cD1wKzF8MH1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1''@;'; put 'put ''bmN0aW9uIG1IKGwsYyl7dmFyIGYscCxtLEEsdztyZXR1cm4gZj1vZSxvZT1vZSsxNnwwLHA9Zis4fDAsQT0xOTYrKDB8YVsxNisoY3w9MCk+PjJdKXwwLGFbKG09Zik+PjJdPWFbKHc9MTg4KygwfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdLGFbbSs0Pj4yXT1hW3crND4+Ml0sYVtwPj4yXT1h''@;'; put 'put ''W0E+PjJdLGFbcCs0Pj4yXT1hW0ErND4+Ml0sYz0wfElZKGwsbSxjLHApLG9lPWYsMHxjfWZ1bmN0aW9uIERZKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7cmV0dXJuIHA9NDgrKGx8PTApfDAsYz0oYz0wfGFbMTgwKyhmPTB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJd''@;'; put 'put ''KT4+Ml0pPj4yXSk/MHxsMChjLDgrKGFbZisxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFbZisxODQ+PjJdPDwyKXwwKSxhWzE4MCsoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdPWMsZj0wfGFbMTgwKyhtPTB8YVsxNisoMHxhWygzPT0oMyZhW2w+''@;'; put 'put ''PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhtPW0rMTg0fDApPj4yXT0xKyhjPTB8YVttPj4yXSksYVtmKyhjPDwyKT4+Ml09bCxhWygwfGFbMTgwKyhwPTB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbcCsxODQ+PjJdPDwyKT4+''@;'; put 'put ''Ml09MCxwPWwrLTQ4fDAsYz0oZj0wfGFbMTcyKyhjPTB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxsMChmLDgrKGFbYysxNzY+PjJdPDwyKXwwKTowfFFuKDgrKGFbYysxNzY+PjJdPDwyKXwwKSxhWzE3MisoMHxhWzE2KygwfGFbKDI9PSgz''@;'; put 'put ''JmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdPWMsZj0wfGFbMTcyKyhjPTB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhjPWMrMTc2fDApPj4yXT0xKyhtPTB8YVtjPj4yXSksYVtmKyhtPDwyKT4+Ml09bCxhWygwfGFbMTcyKyht''@;'; put 'put ''PTB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbbSsxNzY+PjJdPDwyKT4+Ml09MCwwfGx9ZnVuY3Rpb24gZnkobCxjKXtjfD0wO3ZhciBwLG0sZj0wLEE9MCx3PTAsYj0wO2ZvcihtPTB8YVsocD00KyhsfD0wKXwwKT4+Ml0sZj0wOyEoKDB8''@;'; put 'put ''Zik+PSgwfG0pKTspe2lmKCgwfGFbKHc9KEE9MHxhW2w+PjJdKSsoZjw8Mil8MCk+PjJdKT09KDB8Yykpe2I9NDticmVha31mPWYrMXwwfTQ9PSgwfGIpJiYoYVtwPj4yXT1iPW0rLTF8MCxhW3c+PjJdPWFbQSsoYjw8Mik+PjJdLGFbKDB8YVtsPj4yXSkrKGI8PDIpPj4yXT0wKX1mdW5jdGlv''@;'; put 'put ''biBVZChsKXtpZihsfD0wKXJldHVybiBmeSgxODArKDB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSl8MCxsKSx2b2lkIGZ5KDE3MisoMHxhWzE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSl8MCxsKTtCcig4''@;'; put 'put ''NTU1MSw4NTU2MSwxMTcsODU1NzApfWZ1bmN0aW9uIHo2KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7cD00OCsobHw9MCl8MCxjPShjPTB8YVsyMDQrKGY9MHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdKT8wfGwwKGMsOCsoYVtmKzIwOD4+Ml08PDIp''@;'; put 'put ''fDApOjB8UW4oOCsoYVtmKzIwOD4+Ml08PDIpfDApLGFbMjA0KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOnApKzQwPj4yXSk+PjJdKT4+Ml09YyxjPTB8YVsyMDQrKG09MHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdLGFbKG09bSsy''@;'; put 'put ''MDh8MCk+PjJdPTErKGY9MHxhW20+PjJdKSxhW2MrKGY8PDIpPj4yXT1sLGFbKDB8YVsyMDQrKHA9MHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVtwKzIwOD4+Ml08PDIpPj4yXT0wfWZ1bmN0aW9uIExZKGwpeyFmdW5jdGlvbiBBMGUobCxj''@;'; put 'put ''KXtsfD0wO3ZhciBwLHcsZj0wLG09MCxBPTA7Zm9yKHA9MHxhWyh3PTQrKGN8PTApfDApPj4yXSxtPTB8YVtjPj4yXSxmPTA7Oyl7aWYoKDB8Zik+PSgwfHApKXtBPTQ7YnJlYWt9aWYoKDB8YVttKyhmPDwyKT4+Ml0pPT0oMHxsKSlicmVhaztmPWYrMXwwfTQ9PSgwfEEpJiYoZj1tPzB8bDAo''@;'; put 'put ''bSw4KyhwPDwyKXwwKTowfFFuKDgrKHA8PDIpfDApLGFbYz4+Ml09ZixhW3c+PjJdPUE9MSsobT0wfGFbdz4+Ml0pfDAsYVtmKyhtPDwyKT4+Ml09bCxhWygwfGFbYz4+Ml0pKyhBPDwyKT4+Ml09MCl9KGx8PTAsMjA0KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkr''@;'; put 'put ''NDA+PjJdKT4+Ml0pfDApfWZ1bmN0aW9uIFZDKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxNLEQscD0wLG09MCxBPTAsYj0wLGs9MDtpZihEPTB8bXIoOTYpLGFbKHA9RCs0OHwwKT4+Ml09M3xhW3A+PjJdLGFbRD4+Ml09LTQmYVtEPj4yXXwyLG09MHxtcigxNzYpLGFbKE09RCsxNnww''@;'; put 'put ''KT4+Ml09bSxhWygzPT0oMyZhW0Q+PjJdfDApP0Q6cCkrNDA+PjJdPWwsdz1EKy00OHwwLGFbKDI9PSgzJmFbRD4+Ml18MCk/RDp3KSs0MD4+Ml09Yyx1ZVttKzExMj4+MF09MSxmKXtpZihhW0Q+PjJdPTE1JmFbRD4+Ml18LTE2JmFbZj4+Ml0sYVtwPj4yXT0xNSZhW3A+PjJdfC0xNiZhW2Y+''@;'; put 'put ''PjJdLFR0W20rMTY4Pj4xXT0wfFR0WzE2OCsoQT0wfGFbKGs9ZisxNnwwKT4+Ml0pPj4xXSxUdFttKzE1ND4+MV09MHxUdFtBKzE1ND4+MV0sYVttKzE1Nj4+Ml09YVtBKzE1Nj4+Ml0sVHRbbSsxNzA+PjFdPTB8VHRbQSsxNzA+PjFdLGI9Zis0OHwwLCgwfChsPTB8YVsoMz09KDMmYVtEPj4y''@;'; put 'put ''XXwwKT9EOnApKzQwPj4yXSkpIT0oMHxhWygzPT0oMHwoYz0zJmFbZj4+Ml0pKT9mOmIpKzQwPj4yXSkpe2lmKHA9ZistNDh8MCwoMHxsKT09KDB8YVsoMj09KDB8Yyk/ZjpwKSs0MD4+Ml0pKXtsPUErNTZ8MCxjPTQwKyhtPW0rMTZ8MCl8MDtkb3thW20+PjJdPWFbbD4+Ml0sbT1tKzR8MCxs''@;'; put 'put ''PWwrNHwwfXdoaWxlKCgwfG0pPCgwfGMpKX19ZWxzZXtsPUErMTZ8MCxjPTQwKyhtPW0rMTZ8MCl8MDtkb3thW20+PjJdPWFbbD4+Ml0sbT1tKzR8MCxsPWwrNHwwfXdoaWxlKCgwfG0pPCgwfGMpKTtwPWYrLTQ4fDB9aWYoKDB8KGw9MHxhWygyPT0oMyZhW0Q+PjJdfDApP0Q6dykrNDA+PjJd''@;'; put 'put ''KSkhPSgwfGFbKDI9PSgwfChjPTMmYVtmPj4yXSkpP2Y6cCkrNDA+PjJdKSl7aWYoKDB8bCk9PSgwfGFbKDM9PSgwfGMpP2Y6YikrNDA+PjJdKSl7bD0xNisoMHxhW2s+PjJdKXwwLGM9NDArKG09NTYrKDB8YVtNPj4yXSl8MCl8MDtkb3thW20+PjJdPWFbbD4+Ml0sbT1tKzR8MCxsPWwrNHww''@;'; put 'put ''fXdoaWxlKCgwfG0pPCgwfGMpKX19ZWxzZXtsPTU2KygwfGFbaz4+Ml0pfDAsYz00MCsobT01NisoMHxhW00+PjJdKXwwKXwwO2Rve2FbbT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8YykpfTB8YVsobD0xNzIrKDB8YVtrPj4yXSl8MCk+PjJdfHwoYVtsPj4y''@;'; put 'put ''XT1EKSxhWzExNisoMHxhW00+PjJdKT4+Ml09Zn1lbHNlIGFbbSsxNTY+PjJdPTEsVHRbbSsxNTQ+PjFdPTEsVHRbbSsxNjg+PjFdPTEsVHRbbSsxNzA+PjFdPTE7cmV0dXJuIDB8RH1mdW5jdGlvbiBrZihsLGMsZil7cmV0dXJuIDB8RFkoMHxWQyhsfD0wLGN8PTAsZnw9MCkpfWZ1bmN0aW9u''@;'; put 'put ''IHZIKGwsYyl7dmFyIGYscCxtO2FbMTY0KyhmPTB8YVsxNisoY3w9MCk+PjJdKT4+Ml09bT0wfGFbKGw9MTkyKygwfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdLHA9bSwwfG0mJihhWzE2OCsoMHxhW3ArMTY+PjJdKT4+Ml09YyksYVtsPj4yXT1jLGFbZisxNjg+PjJdPTAsKDB8cCk9PSgwfGMp''@;'; put 'put ''JiZCcig4NTU4Nyw4NTU2MSwyMTUsODU2MDMpfWZ1bmN0aW9uIEQ1KGwsYyl7dmFyIGYscDswfGZ1bmN0aW9uIHkwZShsLGMpe2ZvcihjfD0wLGw9MTkyKygwfGFbMTYrKGx8PTApPj4yXSl8MDshKDA9PSgwfChsPTB8YVtsPj4yXSkpfCgwfGwpPT0oMHxjKSk7KWw9MTY0KygwfGFbbCsxNj4+''@;'; put 'put ''Ml0pfDA7cmV0dXJuIDB8bH0obHw9MCxjfD0wKXx8QnIoODU2NTIsODU1NjEsMjMxLDg1NjczKSxwPWY9MHxhWzE2NCsoYz0wfGFbYysxNj4+Ml0pPj4yXSxjPWMrMTY4fDAsMHxmJiYoYVsxNjgrKDB8YVtmKzE2Pj4yXSk+PjJdPWFbYz4+Ml0pLChjPTB8YVtjPj4yXSk/YVsxNjQrKDB8YVtj''@;'; put 'put ''KzE2Pj4yXSk+PjJdPXA6YVsxOTIrKDB8YVtsKzE2Pj4yXSk+PjJdPXB9ZnVuY3Rpb24gU2YobCl7bHw9MDt2YXIgYyxmLHA9MCxtPTA7cmV0dXJuIGM9MHxtcig2NCksYVtjPj4yXT0tNCZhW2M+PjJdfDEsYVsoZj1jKzE2fDApPj4yXT0wfG1yKDMwNCksYVtjKzI0Pj4yXT0wfGhpKGwpLHVl''@;'; put 'put ''WzE1NisobT0wfGFbZj4+Ml0pPj4wXT0xLF9bbSs5Nj4+M109MSxfW20rODg+PjNdPTEsX1ttKzgwPj4zXT0xLGFbbSsyMTY+PjJdPTEsYVttKzE3Nj4+Ml09MCxtPTB8bXIoMjApLGFbMTcyKyhwPTB8YVtmPj4yXSk+PjJdPW0sYVtwKzE4ND4+Ml09MCxwPTB8bXIoMjApLGFbMTgwKygwfGFb''@;'; put 'put ''Zj4+Ml0pPj4yXT1wLHZIKGwsYyksYVsobD0yMzIrKDB8YVtsKzE2Pj4yXSl8MCk+PjJdPTErKDB8YVtsPj4yXSksMHxjfWZ1bmN0aW9uIGtJKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTAsQT0wO209NDgrKGN8PTApfDAsZj0ocD0wfGFbMTg4KyhmPTB8YVsxNisoMHxhWygzPT0oMyZhW2M+''@;'; put 'put ''PjJdfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxsMChwLDgrKGFbZisxOTI+PjJdPDwyKXwwKTowfFFuKDgrKGFbZisxOTI+PjJdPDwyKXwwKSxhWzE4OCsoMHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdPWYscD0wfGFbMTg4KyhBPTB8YVsx''@;'; put 'put ''NisoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhBPUErMTkyfDApPj4yXT0xKyhmPTB8YVtBPj4yXSksYVtwKyhmPDwyKT4+Ml09YyxhWygwfGFbMTg4KyhtPTB8YVsxNisoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXSkr''@;'; put 'put ''KGFbbSsxOTI+PjJdPDwyKT4+Ml09MCxtPWMrLTQ4fDAsZj0ocD0wfGFbMTk2KyhmPTB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxsMChwLDgrKGFbZisyMDA+PjJdPDwyKXwwKTowfFFuKDgrKGFbZisyMDA+PjJdPDwyKXwwKSxhWzE5Niso''@;'; put 'put ''MHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdPWYscD0wfGFbMTk2KyhmPTB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhmPWYrMjAwfDApPj4yXT0xKyhBPTB8YVtmPj4yXSksYVtwKyhBPDwyKT4+''@;'; put 'put ''Ml09YyxhWygwfGFbMTk2KyhBPTB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbQSsyMDA+PjJdPDwyKT4+Ml09MCx1ZVsyNDArKDB8YVtsKzE2Pj4yXSk+PjBdPTEsdWVbMjQwKygwfGFbMTYrKDB8VjAobCkpPj4yXSk+PjBdPTF9ZnVuY3Rp''@;'; put 'put ''b24gQUgobCl7dmFyIGMsZj0wOyhsfD0wKXx8QnIoODU1NTEsODU1NjEsMjY5LDg1NjkwKSwwfChjPTB8YVsxMTYrKDB8YVtsKzE2Pj4yXSk+PjJdKSYmKDB8YVsoZj0xNzIrKDB8YVtjKzE2Pj4yXSl8MCk+PjJdKT09KDB8bCkmJihhW2Y+PjJdPTApLGZ5KDE4OCsoMHxhWzE2KygwfGFbKDM9''@;'; put 'put ''PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKXwwLGwpLGZ5KDE5NisoMHxhWzE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSl8MCxsKX1mdW5jdGlvbiB1YyhsLGMpe3ZhciBmLHAsbTtjfD0wLG09b2Usb2U9b2UrMTZ8MCxwPTB8YVso''@;'; put 'put ''Zj0xNzIrKDB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml07ZG97aWYoKDB8cCkhPSgwfGMpKXtpZighcCl7YVtmPj4yXT1jLE9ZKGwsYyk7YnJlYWt9QnIoODc1OTMsODU1NjEsMzQwLDg1NzI4KX1lbHNlIFhyKDAsODU3MDcsbSl9d2hpbGUoMCk7b2U9bX1mdW5jdGlvbiBPWShsLGMpe3ZhciBw''@;'; put 'put ''LG0sZj0wLEE9MDtmb3IoKDB8YXJbKGY9MTcwKygwfGFbMTYrKGN8PTApPj4yXSl8MCk+PjFdKTwoNjU1MzUmKGw9MHxUdFsxNzArKEE9MHxhWzE2KyhsfD0wKT4+Ml0pPj4xXSkpJiYoVHRbZj4+MV09bCkscD1BKzE2OHwwLG09QSsxNTR8MCxmPUErMTU2fDAsbD1jO2w7KVR0WyhBPTE2OCso''@;'; put 'put ''Yz0wfGFbbCsxNj4+Ml0pfDApPj4xXT0oMHxhcltBPj4xXSkrKDB8YXJbcD4+MV0pLFR0WyhBPWMrMTU0fDApPj4xXT0oMHxhcltBPj4xXSkrKDB8YXJbbT4+MV0pLGFbKEE9YysxNTZ8MCk+PjJdPSgwfGFbQT4+Ml0pKygwfGFbZj4+Ml0pLGw9MHxhW2MrMTcyPj4yXX1mdW5jdGlvbiB5SChs''@;'; put 'put ''KXt2YXIgZixjPTAscD0wLG09MDtjPTB8YVsxNzIrKDB8YVsoZj0xNisobHw9MCl8MCk+PjJdKT4+Ml07ZTpmb3IoO2M7KWZvcih3SChjLGwpLG09MHxhW2MrMTY+PjJdLHA9MHxhW20rMTcyPj4yXSwwfFR0W20rMTY4Pj4xXXx8enZlKGMpOzspe2lmKDEhPSgwfHVlWzExMisoMHxhW2MrMTY+''@;'; put 'put ''PjJdKT4+MF0pKXtjPXA7Y29udGludWUgZX1pZigxIT0oMHx1ZVsxNTYrKGM9MHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjBdKSl7Yz1wO2NvbnRpbnVlIGV9aWYoMSE9KDB8YVtjKzE4ND4+Ml0pKXtjPXA7Y29udGludWUgZX13SChjPTB8''@;'; put 'put ''YVthW2MrMTgwPj4yXT4+Ml0sbCl9YVsxNzIrKDB8YVtmPj4yXSk+PjJdPTB9ZnVuY3Rpb24gd0gobCxjKXt2YXIgZjtmPTB8YVsxNisoY3w9MCk+PjJdLFR0WyhsPTE2OCsoYz0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjFdPSgwfGFyW2w+PjFdKS0oMHxhcltmKzE2OD4+MV0pLFR0WyhsPWMr''@;'; put 'put ''MTU0fDApPj4xXT0oMHxhcltsPj4xXSktKDB8YXJbZisxNTQ+PjFdKSxhWyhjPWMrMTU2fDApPj4yXT0oMHxhW2M+PjJdKS0oMHxhW2YrMTU2Pj4yXSl9ZnVuY3Rpb24genZlKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcigobHw9MCl8fEJyKDg1NTUxLDg1NTYxLDEyOCw4NTc0MSks''@;'; put 'put ''QT1sKzQ4fDAsZj0wO209MHxhWygwfGFbKHA9MTgwKygwfGFbMTYrKDB8YVsoMz09KDMmKGM9MHxhW2w+PjJdKXwwKT9sOkEpKzQwPj4yXSk+PjJdKXwwKT4+Ml0pKyhmPDwyKT4+Ml07KSgwfG0pPT0oMHxsKSYmZnkocCxsKSxmPWYrMXwwO2ZvcihBPWwrLTQ4fDAsbT0wO3A9MHxhWygwfGFb''@;'; put 'put ''KGY9MTcyKygwfGFbMTYrKDB8YVsoMj09KDMmY3wwKT9sOkEpKzQwPj4yXSk+PjJdKXwwKT4+Ml0pKyhtPDwyKT4+Ml07KSgwfHApPT0oMHxsKSYmKGZ5KGYsbCksYz0wfGFbbD4+Ml0pLG09bSsxfDB9ZnVuY3Rpb24gTDUobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxr''@;'; put 'put ''PTAsTT0wO2Y9MCx3PTB8THQobHw9MCk7ZTpmb3IoO3c7KWZvcihiPTB8enQobCx3KSxrPXcrMTZ8MCxBPWI7Oyl7aWYoIUEpe3c9Yjtjb250aW51ZSBlfSgwfGFbMTYrKG09MHxhW0ErMTY+PjJdKT4+Ml0pPigwfGFbMTIrKHA9MHxhW2s+PjJdKT4+Ml0pPygwfGFbcCsxNj4+Ml0pPD0oMHxh''@;'; put 'put ''W20rMTI+PjJdKSYmcmwobCx3LEEsMCwxKToocmwobCxBLHcsMCwxKSxmPTEpLEE9MHx6dChsLEEpfWRve2lmKDB8Zil7dz0wfHlzKGwsODU3NjYsMSksaz0wfG1yKCgwfE5vKGwpKTw8MiksYj0wfG1yKCgwfE5vKGwpKTw8MiksbT1jKzR8MCxwPTB8THQobCk7ZTpmb3IoOzspe2lmKCFwKXtm''@;'; put 'put ''PTIzO2JyZWFrfWlmKDA9PSgwfGFbOCsoMHxhW3ArMTY+PjJdKT4+Ml0pJiYwfFJkKGwscCwxLDEpKXt0OmRve2lmKDB8akMobCxwLHcsYikpe2lmKEE9MHxObyh3KSwoMHx3MGUobCx3LGspKSE9KDB8QSkpe2Y9MTc7YnJlYWsgZX1mb3IoSTEoYixBLDQsNjApLGY9MDs7KXtpZigoMHxmKT49''@;'; put 'put ''KDB8QSkpYnJlYWsgdDthWzIzNisoMHxhWzE2KyhNPTB8YVtrKyhmPDwyKT4+Ml0pPj4yXSk+PjJdPWFbKGM9YisoZjw8Mil8MCk+PjJdLGFbKDB8YVttPj4yXSkrKGFbYz4+Ml08PDIpPj4yXT1NLGY9ZisxfDB9fX13aGlsZSgwKTtSWSh3KX1wPTB8enQobCxwKX1pZigxNz09KDB8ZikpQnIo''@;'; put 'put ''ODU3NzEsODU3ODEsMjY1LDg1NzkyKTtlbHNlIGlmKDIzPT0oMHxmKSl7SHQoayk7YnJlYWt9fX13aGlsZSgwKX1mdW5jdGlvbiBqQyhsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoYVs4Kyh3PTB8YVsxNisoY3w9MCk+PjJdKT4+Ml09MSx3PTB8''@;'; put 'put ''YVsyMzYrKDB8YVsxNisoMHxhW3crMjA+PjJdKT4+Ml0pPj4yXSxhW3ArKCgwfE5vKGYpKTw8Mik+PjJdPXcsVm4oZixjLDEpLHc9MHx5MChsLGMpLG09MDt3OyltPW0rKCgwfGFbMjM2KygwfGFbMTYrKDB8YVsyMCsoYj0wfGFbMTYrKEE9MHxhWygyPT0oMHwoaz0zJmFbdz4+Ml0pKT93Oncr''@;'; put 'put ''LTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPj4yXSk+PjJdKT4oMHxhWzIzNisoMHxhWzE2KygwfGFbMjArKDB8YVsxNisoMHxhWygzPT0oMHxrKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pJjEpfDAsMHxhW2IrOD4+Ml18fChtPSgwfGpDKGwsQSxmLHApKSttfDApLHc9''@;'; put 'put ''MHxrMChsLHcpO2Zvcih3PTB8d2YobCxjKTt3OyltPW0rKCgwfGFbMjM2KygwfGFbMTYrKDB8YVsyMCsoMHxhWzE2KygwfGFbKDI9PSgwfChiPTMmYVt3Pj4yXSkpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjM2KygwfGFbMTYrKDB8YVsyMCsoaz0wfGFb''@;'; put 'put ''MTYrKEE9MHxhWygzPT0oMHxiKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pJjEpfDAsMHxhW2srOD4+Ml18fChtPSgwfGpDKGwsQSxmLHApKSttfDApLHc9MHxPMyhsLHcpO3JldHVybiAwfG19ZnVuY3Rpb24gdzBlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0w''@;'; put 'put ''LG09MCxBPTA7Zm9yKG09MDtwPTB8QlkobCxjKTspe2ZvcihhW2YrKG08PDIpPj4yXT1hWzIwKygwfGFbcCsxNj4+Ml0pPj4yXSxhaShjLHApLHA9MHx5MChsLHApO3A7KUE9MHxrMChsLHApLFFBKGwscCkscD1BO209bSsxfDB9cmV0dXJuIDB8bX1mdW5jdGlvbiBSWShsKXt2YXIgYz0wLGY9''@;'; put 'put ''MDtmb3IoYz0wfEx0KGx8PTApO2M7KWY9MHx6dChsLGMpLGFpKGwsYyksYz1mfWZ1bmN0aW9uIEJZKGwsYyl7bHw9MDt2YXIgZj0wO2ZvcihmPTB8THQoY3w9MCk7Oyl7aWYoIWYpe2Y9MDticmVha31pZighKDB8UmQobCxmLDEsMCkpKWJyZWFrO2Y9MHx6dChjLGYpfXJldHVybiAwfGZ9ZnVu''@;'; put 'put ''Y3Rpb24gUFkobCxjKXtjfD0wO3ZhciB3LGY9MCxwPTAsbT0wLEE9MDtmb3IoZnVuY3Rpb24gRlkobCl7bHw9MDt2YXIgYz0wO3VlWzE5Mzc2OV09MCxhWzQ2NzQxXT1sLGM9NCsoKDB8YmYoMHxWMChsKSkpPDwyKXwwLGFbNDY3NDBdPTB8bXIoYyksYVs0NjczOV09MHxtcihjKSxmdW5jdGlv''@;'; put 'put ''biB4MGUobCl7bHw9MDt2YXIgYz0wLGY9MDthWzQ2NzQ0XT04LGFbNDcxMzZdPTI0LF9bMjMyMTVdPS45OTUsMHwobD0wfExpKGwsODY2ODUpKSYmKGM9K3BwKGwpKT4wJiYoYVs0Njc0NF09fn4oKGY9YyorKDB8YVs0Njc0NF0pKT4xP2Y6MSksYVs0NzEzNl09fn4oKGMqPSsoMHxhWzQ3MTM2''@;'; put 'put ''XSkpPjE/YzoxKSl9KGwpLDE2JlR0WzEzNisoMHxhWyhjPWwrMTZ8MCk+PjJdKT4+MV0mJmZ1bmN0aW9uIFFZKGwpe3ZhciBjLGY7Yz0wfG1yKChmPTIrKDB8VHRbMjM4KygwfGFbMTYrKGx8PTApPj4yXSk+PjFdKXwwKTw8MiksVEkobCxjLGYsMCksSHQoYyl9KGwpLCRIKGwpLEw3KGwsMSks''@;'; put 'put ''SlkobCksR0MobCksYVs0Njc0Ml09VHRbMjM2KyhjPTB8YVtjPj4yXSk+PjFdLGFbNDY3NDNdPVR0W2MrMjM4Pj4xXX0obHw9MCksdz1sKzE2fDAscD0wLGY9MDshKCgwfHApPj0oMHxhWzIyMCsoMHxhW3c+PjJdKT4+Ml0pKTspXzBlKGwscCkscD1wKzF8MCxmPSgwfFNJKGwsMCxjKSkrZnww''@;'; put 'put ''O2ZvcihmdW5jdGlvbiBIWShsKXt2YXIgYyxHLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLFI9MDtmb3IoRz1vZSxvZT1vZSsxNnwwLGZ1bmN0aW9uIGswZShsKXt2YXIgcCxtLEEsYz0wLGY9MCx3PTAsYj0wO2lmKCgwfChBPTB8YVsobT0yMjArKHA9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4y''@;'; put 'put ''XSkpPj0yKXtmb3Iodz1wKzIxNnwwLGw9MCxmPTA7ISgoMHxmKT49KDB8QSkpOyl7Zm9yKGM9MHxhWygwfGFbdz4+Ml0pKyhmPDwyKT4+Ml0sMHxsJiYoYVsxNjQrKDB8YVtsKzE2Pj4yXSk+PjJdPWMpLGFbMTY4KyhiPTB8YVtjKzE2Pj4yXSk+PjJdPWwsbD1jLGM9YjtjPTB8YVtjKzE2ND4+''@;'; put 'put ''Ml07KWw9YyxjPTB8YVtjKzE2Pj4yXTtmPWYrMXwwfWFbbT4+Ml09MSxhW3ArMTkyPj4yXT1hW2FbcCsyMTY+PjJdPj4yXSxUdFtwKzIzNj4+MV09YVs0Njc0Ml0sVHRbcCsyMzg+PjFdPWFbNDY3NDNdfX0obHw9MCksYj0wfFR0WzIzNisoYz0wfGFbKGwrMTZ8MCk+PjJdKT4+MV07ISgoMHxi''@;'; put 'put ''KT4oMHxUdFtjKzIzOD4+MV0pKTspe2ZvcihhWyhmPTB8YVtjKzE5Nj4+Ml0pKyhiPDw2KT4+Ml09cD0wfGFbZisoYjw8NikrOD4+Ml0sYVtmKyhiPDw2KSs0Pj4yXT1tPTB8YVtmKyhiPDw2KSsxMj4+Ml0sdz0wOyEoKDB8dyk+PSgwfHApKTspe2lmKCEoQT0wfGFbbSsodzw8Mik+PjJdKSl7''@;'; put 'put ''Uj02O2JyZWFrfWFbMjM2KygwfGFbQSsxNj4+Ml0pPj4yXT13LHc9dysxfDB9Nj09KDB8UikmJihSPTAsYVtmKyhiPDw2KT4+Ml09dyksYj1iKzF8MH1vZT1HfShsKSxBPTE7ISgoMHxBKT4oMHwobT0wfGFbMTgwKyhwPTB8YVt3Pj4yXSk+PjJdKSkpOyltPSgwfFpDKDB8YVsoMHxhW3ArMTg0''@;'; put 'put ''Pj4yXSkrKEE8PDIpPj4yXSxjKSkrZnwwLEE9QSsxfDAsZj1tO2Rve2lmKCgwfG0pPjApe2lmKDB8KHA9MHxMaShsLDg1ODA2KSkmJigwfHIxKHApKTw8MjQ+PjI0PT0wKWJyZWFrO1VJKGwpLHVlWzE5Mzc2OV09MSxmPTB8U0kobCwyLGMpfX13aGlsZSgwKTshZnVuY3Rpb24gTTcobCxjKXts''@;'; put 'put ''fD0wO3ZhciBNLFIsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihSPW9lLG9lPW9lKzE2fDAsMHwoZj0wfGFbNDY3MzldKSYmKEh0KGYpLGFbNDY3MzldPTApLDB8KGY9MHxhWzQ2NzQwXSkmJihIdChmKSxhWzQ2NzQwXT0wKSxNPWwrMTZ8MCxmPTE7ISgoMHxmKT4oMHxhWzE4MCso''@;'; put 'put ''cD0wfGFbTT4+Ml0pPj4yXSkpOylNbCgwfGFbKDB8YVtwKzE4ND4+Ml0pKyhmPDwyKT4+Ml0pLGY9ZisxfDA7Zm9yKGs9MHxUdFtwKzIzNj4+MV0sZj1wOyEoKDB8ayk+KDB8VHRbZisyMzg+PjFdKSk7KXtmb3IoYj0wOyEoKDB8Yik+PSgwfGFbKGY9MHxhW2YrMTk2Pj4yXSkrKGs8PDYpPj4y''@;'; put 'put ''XSkpOyl7YVsyMzYrKGY9MHxhWyh3PTE2KygwfGFbKDB8YVtmKyhrPDw2KSs0Pj4yXSkrKGI8PDIpPj4yXSl8MCk+PjJdKT4+Ml09YixmPTB8YVtmKzE4OD4+Ml07ZTpkb3tpZigwfGYpZm9yKHA9MDs7KXtpZighKG09MHxhW2YrKHA8PDIpPj4yXSkpYnJlYWsgZTs0PT0oMHx1ZVsxMTIrKDB8''@;'; put 'put ''YVsoQT1tKzE2fDApPj4yXSk+PjBdKSYmKEFIKG0pLEh0KDB8YVtBPj4yXSksSHQobSkscD1wKy0xfDAsZj0wfGFbMTg4KygwfGFbdz4+Ml0pPj4yXSkscD1wKzF8MH19d2hpbGUoMCk7Yj1iKzF8MCxmPTB8YVtNPj4yXX16QygwfGFbZisoazw8NikrNTY+PjJdKSxrPWsrMXwwLGY9MHxhW00+''@;'; put 'put ''PjJdfW9lPVJ9KGwpfWZ1bmN0aW9uIF8wZShsLGMpe3ZhciBmPTAscD0wLG09MDthWzE5MisobD0wfGFbMTYrKGx8PTApPj4yXSk+PjJdPWFbKDB8YVtsKzIxNj4+Ml0pKygoY3w9MCk8PDIpPj4yXTtlOmRve2lmKCgwfGMpPjApZm9yKGM9MHxUdFtsKzIzOD4+MV0sZj1sKzE5NnwwLGw9MHxU''@;'; put 'put ''dFtsKzIzNj4+MV07Oyl7aWYoKDB8bCk+KDB8YykpYnJlYWsgZTthWyhtPShwPTB8YVtmPj4yXSkrKGw8PDYpKzR8MCk+PjJdPSgwfGFbbT4+Ml0pKyhhWyhwPXArKGw8PDYpfDApPj4yXTw8MiksYVtwPj4yXT0wLGw9bCsxfDB9fXdoaWxlKDApfWZ1bmN0aW9uIFNJKGwsYyxmKXtsfD0wLGZ8''@;'; put 'put ''PTA7dmFyIFIscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKFI9b2Usb2U9b2UrMzJ8MCwoMHwoY3w9MCkpPjE/KHA9MHxRQygwKSxTSChsKSk6cD0yMTQ3NDgzNjQ3LGs9YyxtPTAsYz1wOyEoKDB8ayk+PTMpOyl7Zm9yKG09MHxhWzQ3MTM2XSwyPT0oMHxrKT8oKDB8cCk+KDB8YykmJldZ''@;'; put 'put ''KGwpLHA9Yyk6KHA9KDB8bSk8ND9tOjQsKDB8VjAobCkpPT0oMHxsKSYmR1kobCxrKSxrfHxqWShsKSxXQyhsKSwoMHwoQT0wfFFDKDApKSk+KDB8Yyk/KG09cCxwPUEpOihTSChsKSxtPXAscD1BLGM9QSkpLEE9MCxiPTA7ISgoMHxiKT49KDB8bSl8fCh3PUErMXwwLDA9PSgwfHApfCgwfEEp''@;'; put 'put ''Pj0oMHxhWzQ2NzQ0XSkpKTspTUgobCxiKSwoMHwocD0wfFFDKDApKSk+KDB8Yyk/QT13OihTSChsKSxBPStfWzIzMjE1XSorKDB8Yyk+KygwfHApPzA6dyxjPXApLGI9YisxfDA7aWYoIXApe3A9MDticmVha31rPWsrMXwwfSgwfHApPigwfGMpJiZXWShsKSwoMHxjKT4wPyhkeShsLDApLHA9''@;'; put 'put ''MHxRQygwKSk6cD1jO2U6ZG97aWYoMHxmKWZvcihjPTA7Oyl7aWYoKDB8Yyk+PSgwfG0pKWJyZWFrIGU7UzBlKGwpLGM9YysxfDB9fXdoaWxlKDApO3JldHVybiBvZT1SLDB8cH1mdW5jdGlvbiBaQyhsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MCxBPTA7Zm9yKGZ1bmN0aW9uIGNvZShsKXt2YXIg''@;'; put 'put ''YzskSChsfD0wKSxhWzIyMCsoYz0wfGFbbCsxNj4+Ml0pPj4yXT0xLGFbYVtjKzIxNj4+Ml0+PjJdPWFbYysxOTI+PjJdLEpZKGwpLEdZKGwsMCksZnVuY3Rpb24gX1UobCl7dmFyIGIsayxNLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihiPTB8VjAobHw9MCksYz0odz0wfFR0WzIzNiso''@;'; put 'put ''Zj0wfGFbKGs9bCsxNnwwKT4+Ml0pPj4xXSk8PDE2Pj4xNixNPWIrMTZ8MCx3PDwxNj4+MTY+MCYmKHVlWygwfGFbMTk2KygwfGFbTT4+Ml0pPj4yXSkrKGMrLTE8PDYpKzQ5Pj4wXT0wKSx3PWM7ISgoMHx3KT4oMHxUdFtmKzIzOD4+MV0pKTspe2ZvcihiVShiLHcsQT0wfGFbMjM2KygwfGFb''@;'; put 'put ''MTYrKDB8YVsoMHxhW2YrMjY4Pj4yXSkrKHc8PDIpPj4yXSk+PjJdKT4+Ml0sMHxhWygwfGFbZisxOTY+PjJdKSsodzw8Nik+PjJdKSxwPTAsbT1BOyEoKDB8cCk+PSgwfGFbKGM9MHxhWzE5NisoZj0wfGFbaz4+Ml0pPj4yXSkrKHc8PDYpPj4yXSkpOylhWygwfGFbKDB8YVsxOTYrKDB8YVtN''@;'; put 'put ''Pj4yXSk+PjJdKSsodzw8NikrND4+Ml0pKyhtPDwyKT4+Ml09Yz0wfGFbKDB8YVtjKyh3PDw2KSs0Pj4yXSkrKHA8PDIpPj4yXSxhWzIzNisoZj0wfGFbYysxNj4+Ml0pPj4yXT1tLDE9PSgwfHVlW2YrMTU2Pj4wXSkmJihhW2MrMjQ+PjJdPTB8aGkoYikpLEQ1KGwsYyksdkgoYixjKSxhWyhm''@;'; put 'put ''PTIzMisoMHxhW00+PjJdKXwwKT4+Ml09MSsoMHxhW2Y+PjJdKSxwPXArMXwwLG09bSsxfDA7YVtjKyh3PDw2KSs0Pj4yXT0oMHxhWyhtPTB8YVsxOTYrKDB8YVtNPj4yXSk+PjJdKSsodzw8NikrND4+Ml0pKyhBPDwyKSx1ZVttKyh3PDw2KSs0OT4+MF09MCx3PXcrMXwwfSgwfHcpPCgwfFR0''@;'; put 'put ''WzIzOCsoYz0wfGFbTT4+Ml0pPj4xXSkmJih1ZVsoMHxhW2MrMTk2Pj4yXSkrKHc8PDYpKzQ5Pj4wXT0wKSx1ZVtmKzI3Mj4+MF09MX0obCksZnVuY3Rpb24gbG9lKGwpe3ZhciBrLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTAsRD0wLFI9MDtmb3Ioaz0wfFYwKGx8PTApLHc9MHxM''@;'; put 'put ''dChsKTt3Oyl7Zm9yKGM9MHxGcyhrLHcpLGI9MDtjOylpZihEPTB8VHMoayxjLHcpLDB8SHIobCxjKSljPUQsYj1NPWI7ZWxzZSBpZihSPTA9PSgwfEN5KGIsTT0yPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkpLEE9KDB8KGY9MHxhWzIzMisoMHxhWzE2KyhjPTB8YVsoMz09KDB8KHA9MyZh''@;'; put 'put ''W00+PjJdKSk/TTpNKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT09KDB8KG09MHxhWzIzMisoMHxhWzE2KyhwPTB8YVsoMj09KDB8cCk/TTpNKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSksUilpZihBKShjPTB8bUgoYyxwKSk/KDB8TSkhPSgwfGMpPyhMWShNKSwwfGFbMTcyKygwfGFbTSsx''@;'; put 'put ''Nj4+Ml0pPj4yXT8oYz1ELGI9Uj1iKToodWMoTSxjKSxjPUQsYj1SPWIpKTooYz1ELGI9Uj1iKTooa0koayxNKSxjPUQsYj1NKTtlbHNle2lmKCgwfG0pPigwfGYpKXt5VShjLHAsTSksYz1ELGI9TTtjb250aW51ZX15VShwLGMsTSksYz1ELGI9TX1lbHNle2lmKGFbMTcyKygwfGFbTSsxNj4+''@;'; put 'put ''Ml0pPj4yXT1BP2I6MCwhKGM9MHxhWzE3MisoMHxhW2IrMTY+PjJdKT4+Ml0pKXtjPUQsYj1SPWI7Y29udGludWV9UjUobCxNLGMsMCksTFkoTSksYz1ELGI9Uj1ifXc9MHx6dChsLHcpfX0obCksZnVuY3Rpb24gZm9lKGwpe3ZhciB3LGM9MCxmPTAscD0wLG09MCxBPTA7Zm9yKEE9MHxUdFsy''@;'; put 'put ''MzYrKGM9MHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTshKCgwfEEpPigwfFR0W2MrMjM4Pj4xXSkpOyl7Zm9yKG09MTYrKHA9MHxhWygwfGFbYysyNjg+PjJdKSsoQTw8Mik+PjJdKXwwO2Y9MHxhW2FbMTgwKyhjPTB8YVttPj4yXSk+PjJdPj4yXTspVWQoZik7Zm9yKDtjPTB8YVthW2Mr''@;'; put 'put ''MTcyPj4yXT4+Ml07KVVkKGMpLGM9MHxhW20+PjJdO0Q1KDB8VjAobCkscCksYVsoMHxhWzI2OCsoMHxhW3c+PjJdKT4+Ml0pKyhBPDwyKT4+Ml09MCxBPUErMXwwLGM9MHxhW3c+PjJdfX0obCl9KGx8PTApLEdDKGwpLGpZKGwpLFdDKGwpLG09bCsxNnwwLGY9MHxTSShsLDIsYykscD0xOyEo''@;'; put 'put ''KDB8cCk+KDB8YVsxODArKEE9MHxhW20+PjJdKT4+Ml0pKTspZj0oMHxaQygwfGFbKDB8YVtBKzE4ND4+Ml0pKyhwPDwyKT4+Ml0sYykpK2Z8MCxwPXArMXwwO3JldHVybiBoeShsKSwwfGZ9ZnVuY3Rpb24gTWwobCl7dmFyIG0sYz0wLGY9MCxwPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihtPTE2''@;'; put 'put ''KyhsfD0wKXwwLGM9MTshKCgwfGMpPigwfGFbMTgwKyhwPTB8YVttPj4yXSk+PjJdKSk7KU1sKDB8YVsoMHxhW3ArMTg0Pj4yXSkrKGM8PDIpPj4yXSksYz1jKzF8MDtlOmRve2lmKDB8YVtwKzI2OD4+Ml0pZm9yKGY9MHxUdFtwKzIzNj4+MV0sYz1wOzspe2lmKCgwfGYpPigwfFR0W2MrMjM4''@;'; put 'put ''Pj4xXSkpYnJlYWsgZTt3PTB8TlkobCxiPTB8YVsoMHxhW2MrMjY4Pj4yXSkrKGY8PDIpPj4yXSwtMSksYj0wfE5ZKGwsYiwxKSxhWygwfGFbMjY4KygwfGFbbT4+Ml0pPj4yXSkrKGY8PDIpPj4yXT13LGs9MHxhWygwfGFbMTk2KygwfGFbMTYrKDB8VjAobCkpPj4yXSk+PjJdKSsoZjw8Nikr''@;'; put 'put ''ND4+Ml0sYVsoQT0wfGFbMTk2KyhwPTB8YVttPj4yXSk+PjJdKSsoZjw8NikrND4+Ml09aysoKHc9MHxhWzIzNisoMHxhW3crMTY+PjJdKT4+Ml0pPDwyKSxhW0ErKGY8PDYpPj4yXT0xKygwfGFbMjM2KygwfGFbYisxNj4+Ml0pPj4yXSktdyxmPWYrMXwwLGM9cH19d2hpbGUoMCl9ZnVuY3Rp''@;'; put 'put ''b24gekMobCl7MHwobHw9MCkmJihIdCgwfGFbbCs4Pj4yXSksSHQobCkpfWZ1bmN0aW9uIE5ZKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MDtmb3IocD1jfD0wO2M9MHxFNyhjLGYpOylwPTB8VlkobCxjKT9jOjA9PSgwfGJIKGwsYykpP3A6YztyZXR1cm4gMHxwfWZ1bmN0aW9uIEU3KGwsYyl7''@;'; put 'put ''Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wO3JldHVybihsfD0wKXx8QnIoODU4NTYsODU3ODEsMTAyMyw4NTg1OCksKDB8Yyk8MD8oMHwocD0wfGFbMjM2KyhsPTB8YVtsKzE2Pj4yXSk+PjJdKSk+MD8obD0oMHxhWzE5NisoMHxhWzE2KygwfGFbNDY3NDFdKT4+Ml0pPj4yXSkrKGFbbCsyMzI+''@;'; put 'put ''PjJdPDw2KSs0fDAsZj1wKy0xfDAsbT03KTpBPTA6KHA9MHxhWzIzNisobD0wfGFbbCsxNj4+Ml0pPj4yXSxsPSgwfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsoYVtsKzIzMj4+Ml08PDYpKzR8MCxmPXArMXwwLG09NyksNz09KDB8bSkmJigobD0wfGFbKDB8YVtsPj4y''@;'; put 'put ''XSkrKGY8PDIpPj4yXSk/KDB8dnIoKDB8YVsyMzYrKDB8YVtsKzE2Pj4yXSk+PjJdKS1wfDAsYykpPjA/QT1sOkJyKDg1ODY3LDg1NzgxLDEwMjksODU4NTgpOkE9MCksMHxBfWZ1bmN0aW9uIFZZKGwsYyl7cmV0dXJuIGx8PTAsMHwoMHx1ZVsxNTYrKDB8YVsxNisoY3w9MCk+PjJdKT4+MF0/''@;'; put 'put ''MDowIT0oMHxIcihsLGMpKSYxKX1mdW5jdGlvbiBiSChsLGMpe2x8PTA7dmFyIGY9MCxwPTA7aWYoMT09KDB8dWVbMTU2KyhjPTB8YVsxNisoY3w9MCk+PjJdKT4+MF0pJiYxPT0oMHxhW2MrMTc2Pj4yXSkmJjE9PSgwfGFbYysxODQ+PjJdKSl7Zm9yKGM9MHxhW2MrMTgwPj4yXTswfHVlWzEx''@;'; put 'put ''MisoZj0wfGFbMTYrKGM9MHxhW2M+PjJdKT4+Ml0pPj4wXTspYz1mKzExNnwwOzB8SHIobCxjKT9jPTE6cD03fWVsc2UgcD03O3JldHVybiA3PT0oMHxwKSYmKGM9MCksMHxjfWZ1bmN0aW9uIEdDKGwpe2x8PTA7dmFyIGYscCxjPTA7cD1vZSxvZT1vZSsxNnwwLGY9cCxjPTB8YVs0NzE0MF07''@;'; put 'put ''ZTpkb3tpZigwIT0oMHxjKXwwIT0oMHxhWzQ3MTYxXSkpe2lmKDB8KGM9MHxBMihsLGMsMCkpKXtzd2l0Y2goMHx1ZVtjPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSAxMTE6aWYoISgwfFppKGMsODYwNjkpKSl7Q0gobCwxKTticmVhayBlfWJyZWFrO2Nhc2UgMTA1OmlmKCEoMHxaaShjLDk4''@;'; put 'put ''NzM1KSkpe0NIKGwsMCk7YnJlYWsgZX19YVtmPj4yXT1jLFhyKDEsODYwNzMsZik7YnJlYWt9Zm9yKGM9MHx3cyhsKTtjOykwfE5JKGMpfHxHQyhjKSxjPTB8YnMoYyk7MHxhWzQ3MTYxXSYmQzBlKGwpfX13aGlsZSgwKTtvZT1wfWZ1bmN0aW9uIGpZKGwpe3ZhciBiLGM9MCxmPTAscD0wLG09''@;'; put 'put ''MCxBPTAsdz0wO2Zvcih3PTB8VHRbMjM2KyhjPTB8YVsoYj0xNisobHw9MCl8MCk+PjJdKT4+MV07ISgoMHx3KT4oMHxUdFtjKzIzOD4+MV0pKTspe2ZvcihmPTAsQT0wOyEoKDB8QSk+PSgwfChtPTB8YVsocD0wfGFbYysxOTY+PjJdKSsodzw8Nik+PjJdKSkpOyl1ZVsxNTgrKHA9MHxhWzE2''@;'; put 'put ''KygwfGFbKDB8YVtwKyh3PDw2KSs0Pj4yXSkrKEE8PDIpPj4yXSk+PjJdKT4+MF09MCx1ZVtwKzE1Nz4+MF09MCxhW3ArMjg0Pj4yXT1BLDA9PSgwfGYpJigwfGFbcCsxOTI+PjJdKT4wJiYoZj0wfEVJKG0sbSksYVsoMHxhWzE5NisoYz0wfGFbYj4+Ml0pPj4yXSkrKHc8PDYpKzU2Pj4yXT1m''@;'; put 'put ''LGY9MSksQT1BKzF8MDtlOmRve2lmKGYpZm9yKEE9MCxmPW07Oyl7aWYoKDB8QSk+PSgwfGYpKWJyZWFrIGU7MHx1ZVsxNTcrKDB8YVsxNisobT0wfGFbKDB8YVtwKyh3PDw2KSs0Pj4yXSkrKEE8PDIpPj4yXSk+PjJdKT4+MF18fChfSChsLG0pLHA9Zj0wfGFbMTk2KyhjPTB8YVtiPj4yXSk+''@;'; put 'put ''PjJdLGY9MHxhW2YrKHc8PDYpPj4yXSksQT1BKzF8MH19d2hpbGUoMCk7dz13KzF8MH19ZnVuY3Rpb24gV0MobCl7dmFyIG1lLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLGJlPTA7aWYoMHx1ZVsyNDArKGM9MHxhWyhtZT0xNisobHw9''@;'; put 'put ''MCl8MCk+PjJdKT4+MF0pe209MCxwZT0wfFR0W2MrMjM2Pj4xXSxLPTAsQT0wO2U6Zm9yKDshKCgwfHBlKT4oMHxUdFtjKzIzOD4+MV0pKTspe2lmKHA9MHxhWyhmPTB8YVtjKzE5Nj4+Ml0pKyhwZTw8Nik+PjJdKXtmb3IoUj0wfGFbMjM2KygwfGFbMTYrKDB8YVsoZj0wfGFbZisocGU8PDYp''@;'; put 'put ''KzQ+PjJdKT4+Ml0pPj4yXSk+PjJdLGM9MDshKCgwfGMpPj0oMHxwKSk7KXVlWzE1NysoMHxhWzE2KygwfGFbZisoYzw8Mik+PjJdKT4+Ml0pPj4wXT0wLGM9YysxfDA7Zm9yKGM9NCsoYzw8Mil8MCxHPW0/MHxsMChBLGMpOjB8UW4oYyksTT0wLEQ9MDshKCgwfChwPTB8YVsoZj0wfGFbMTk2''@;'; put 'put ''KyhjPTB8YVttZT4+Ml0pPj4yXSkrKHBlPDw2KT4+Ml0pKTw9KDB8RCkpOyl7Zm9yKGs9MTYrKHc9MHxhWygwfGFbZisocGU8PDYpKzQ+PjJdKSsoKDA9PSgxJmFbYysxMTY+PjJdfDApP3ArfkR8MDpEKTw8Mik+PjJdKXwwLGM9MCxiPTA7Oyl7aWYoKDB8Yyk+PSgwfGFbMjAwKyhBPTB8YVtr''@;'; put 'put ''Pj4yXSk+PjJdKSl7Zj0wLHA9MCxjPUE7YnJlYWt9QT1iKygwIT0oMHxZQyhsLDB8YVsoMHxhW0ErMTk2Pj4yXSkrKGM8PDIpPj4yXSkpJjEpfDAsYz1jKzF8MCxiPUF9Zm9yKDshKCgwfHApPj0oMHxhW2MrMTkyPj4yXSkpOylmPUE9ZisoMCE9KDB8WUMobCwwfGFbKDB8YVtjKzE4OD4+Ml0p''@;'; put 'put ''KyhwPDwyKT4+Ml0pKSYxKXwwLHA9cCsxfDAsYz0wfGFbaz4+Ml07ZnxiP2M9MD09KDB8YikmMD09KDB8dWVbYysxNTc+PjBdKT8oMHxVQyhsLHcsRysoTTw8Mil8MCxwZSkpK018MDpNOihhW0crKE08PDIpPj4yXT13LGM9TSsxfDApLE09YyxEPUQrMXwwfXQ6ZG97aWYoTSl7bjpkb3tpZigx''@;'; put 'put ''JmFbYysxMTY+PjJdKXA9MDtlbHNlIGZvcihmPUcsYz1HKyhNPDwyKXwwOzspe2lmKGY+Pj4wPj0oYz1jKy00fDApPj4+MCl7cD0wO2JyZWFrIG59RD0wfGFbZj4+Ml0sYVtmPj4yXT1hW2M+PjJdLGFbYz4+Ml09RCxmPWYrNHwwfX13aGlsZSgwKTtmb3IoOzspe2lmKCgwfHApPj0oMHwoZj0w''@;'; put 'put ''fGFbKEE9MHxhWzE5NisoYz0wfGFbbWU+PjJdKT4+Ml0pKyhwZTw8Nik+PjJdKSkpe009MCxwPUE7YnJlYWt9YVsoMHxhW0ErKHBlPDw2KSs0Pj4yXSkrKHA8PDIpPj4yXT1EPTB8YVtHKyhwPDwyKT4+Ml0sYVsyMzYrKDB8YVtEKzE2Pj4yXSk+PjJdPXArUixwPXArMXwwfWZvcig7Oyl7aWYo''@;'; put 'put ''KDB8TSk+PSgwfGYpKWJyZWFrIHQ7aWYoQT0wfGFbMTg4KygwfGFbKGs9MTYrKDB8YVsoMHxhW3ArKHBlPDw2KSs0Pj4yXSkrKE08PDIpPj4yXSl8MCk+PjJdKT4+Ml0pe2ZvcihiPTAsZj1BO2M9MHxhW21lPj4yXSxwPTB8YVtmKyhiPDwyKT4+Ml07KXtpZihBPTB8YVsyMzYrKDB8YVsxNiso''@;'; put 'put ''MHxhWygyPT0oMHwodz0zJmFbcD4+Ml0pKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sdz0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMz09KDB8dyk/cDpwKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sMSZhW2MrMTE2Pj4yXT8oMHxBKT4oMHx3KT9iZT0zNjpjPWI6KDB8QSk8KDB8dyk/YmU9''@;'; put 'put ''MzY6Yz1iLDM2PT0oMHxiZSkpe2lmKGJlPTAsMHxZQyhsLHApKXtiZT0zNzticmVhayBlfUFIKHApLFpZKGwscCksYz1iKy0xfDAsZj0wfGFbMTg4KygwfGFbaz4+Ml0pPj4yXX1iPWMrMXwwfXA9Zj0wfGFbYysxOTY+PjJdLGY9MHxhW2YrKHBlPDw2KT4+Ml19TT1NKzF8MH19fXdoaWxlKDAp''@;'; put 'put ''O3VlWygwfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsocGU8PDYpKzQ5Pj4wXT0wLG09RyxwPUcsZj1HfWVsc2UgcD1LLGY9QTtwZT1wZSsxfDAsSz1wLEE9Zn0zNz09KDB8YmUpJiZCcig4NTkxNSw4NTc4MSwxNTYxLDg1OTU0KSwwfG0mJkh0KEspfX1mdW5jdGlvbiBo''@;'; put 'put ''eShsKXt2YXIgZixjPTA7bD0wfGFbKGY9MTYrKGx8PTApfDApPj4yXTtlOmRve2lmKDB8YVtsKzI2OD4+Ml0pZm9yKGM9MHxUdFtsKzIzNj4+MV07Oyl7aWYoKDB8Yyk+KDB8VHRbbCsyMzg+PjFdKSlicmVhayBlO2FbKDB8YVtsKzI2OD4+Ml0pKyhjPDwyKT4+Ml09YVthWygwfGFbbCsxOTY+''@;'; put 'put ''PjJdKSsoYzw8NikrND4+Ml0+PjJdLGM9YysxfDAsbD0wfGFbZj4+Ml19fXdoaWxlKDApfWZ1bmN0aW9uIFlDKGwsYyl7cmV0dXJuIGx8PTAsMHwoMCE9KDB8YVsxNTYrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pJiYwIT0oMHxNSShsLDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkr''@;'; put 'put ''NDA+PjJdKSk/MCE9KDB8TUkobCwwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pKSYxOjApfWZ1bmN0aW9uIFVDKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBNLG09MCxBPTAsdz0wLGI9MCxrPTA7dWVbMTU3KyhtPTB8YVsoTT0xNisoY3w9MCl8MCk+PjJdKT4+''@;'; put 'put ''MF09MTtlOmRve2lmKCgwfGFbbSsxOTI+PjJdKT4wKWZvcihBPTAsYj0wOzspe2lmKCEodz0wfGFbKDB8YVttKzE4OD4+Ml0pKyhiPDwyKT4+Ml0pKWJyZWFrIGU7MCE9KDB8WUMobCx3KSkmJjA9PSgwfHVlWzE1NysoMHxhWzE2KyhrPTB8YVsoMj09KDMmYVt3Pj4yXXwwKT93OncrLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSk+PjJdKT4+MF0pJiYoQT0oMHxVQyhsLGssZisoQTw8Mil8MCxwKSkrQXwwKSxiPWIrMXwwLG09MHxhW00+PjJdfWVsc2UgQT0wfXdoaWxlKDApO3JldHVybigwfGFbbSsyMzI+PjJdKT09KDB8cCk/KGFbZisoQTw8Mik+PjJdPWMsQSsxfDApOihCcig4NTk2Nyw4NTc4MSwxNDkw''@;'; put 'put ''LDg1OTgzKSwwKX1mdW5jdGlvbiBaWShsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO3A9MHxhWzE4OCsoMHxhWzE2KyhiPTB8YVsoMj09KDB8KHc9MyZhWyhjfD0wKT4+Ml0pKT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml07ZTpkb3tpZihwKXtm''@;'; put 'put ''b3IoTT1jKzQ4fDAsbT0oMz09KDB8dyk/YzpNKSs0MHwwLGY9MDs7KXtpZighKEE9MHxhW3ArKGY8PDIpPj4yXSkpe2Y9TSxEPTE1O2JyZWFrIGV9aWYoKDB8YVsoMj09KDMmYVtBPj4yXXwwKT9BOkErLTQ4fDApKzQwPj4yXSk9PSgwfGFbbT4+Ml0pKWJyZWFrO2Y9ZisxfDB9dWMoYyxBKSww''@;'; put 'put ''fGFbKGY9MTcyKygwfGFbYysxNj4+Ml0pfDApPj4yXXx8KGFbZj4+Ml09QSksND09KDB8dWVbMTEyKyhmPTB8YVtBKzE2Pj4yXSk+PjBdKSYmMD09KDB8YVsoaz1mKzExNnwwKT4+Ml0pJiYoYVtrPj4yXT1jKSxmPShwPTB8YVsyMDQrKGY9MHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/''@;'; put 'put ''YzpNKSs0MD4+Ml0pPj4yXSk+PjJdKT8wfGwwKHAsOCsoYVtmKzIwOD4+Ml08PDIpfDApOjB8UW4oOCsoYVtmKzIwOD4+Ml08PDIpfDApLGFbMjA0KygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOk0pKzQwPj4yXSk+PjJdKT4+Ml09ZixiPTB8YVsyMDQrKHc9MHxhWzE2KygwfGFb''@;'; put 'put ''KDM9PSgzJmFbYz4+Ml18MCk/YzpNKSs0MD4+Ml0pPj4yXSk+PjJdLGFbKHc9dysyMDh8MCk+PjJdPTErKGs9MHxhW3c+PjJdKSxhW2IrKGs8PDIpPj4yXT1jLGFbKDB8YVsyMDQrKGM9MHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpNKSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVtjKzIw''@;'; put 'put ''OD4+Ml08PDIpPj4yXT0wfWVsc2UgZj1jKzQ4fDAsRD0xNX13aGlsZSgwKTsxNT09KDB8RCkmJihEPTB8VkMoYiwwfGFbKDM9PSgwfHcpP2M6ZikrNDA+PjJdLGMpLE09MHxhW2MrMTY+PjJdLHVlWzExMisoYz0wfGFbRCsxNj4+Ml0pPj4wXT00PT0oMHx1ZVtNKzExMj4+MF0pPzQ6MyxhW2Mr''@;'; put 'put ''OTY+PjJdPWFbTSs5Nj4+Ml0sa0kobCxEKSl9ZnVuY3Rpb24gTUkobCxjKXt2YXIgZjtyZXR1cm4gZj0wfFZZKGx8PTAsY3w9MCksMHxiSChsLGMpfGZ8MH1mdW5jdGlvbiBFSShsLGMpe3ZhciBmO3JldHVybiBsfD0wLGN8PTAsZj0wfG1yKDEyKSxhW2Y+PjJdPWwsYVtmKzQ+PjJdPWMsYVtm''@;'; put 'put ''Kzg+PjJdPTB8bXIoMHx2cihjLGwpKSwwfGZ9ZnVuY3Rpb24gX0gobCxjKXt2YXIgayxHLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MCxEPTAsUj0wLEs9MCxwZT0wLG1lPTA7az0wfGFbKDB8YVsxOTYrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pKyhhWzIzMisoTT0wfGFbKEc9MTYrKGN8''@;'; put 'put ''PTApfDApPj4yXSk+PjJdPDw2KSs1Nj4+Ml0sdWVbTSsxNTc+PjBdPTEsdWVbTSsxNTg+PjBdPTEsTT0oMHxhWzE4MCsoMHxhWzE2KygwfFYwKGwpKT4+Ml0pPj4yXSk+MCxwPTB8YVsxODgrKGY9MHxhW0c+PjJdKT4+Ml07ZTpkb3tpZihwKXtEPWsrNHwwLFI9ays4fDAsYz0wO3Q6Zm9yKDs7''@;'; put 'put ''KXtpZighKGI9MHxhW3ArKGM8PDIpPj4yXSkpe0s9ZjticmVhayBlfU0/MCE9KDB8SHIobCwwfGFbKDM9PSgzJmFbYj4+Ml18MCk/YjpiKzQ4fDApKzQwPj4yXSkpJiYwIT0oMHxIcihsLDB8YVsoMj09KDMmYVtiPj4yXXwwKT9iOmIrLTQ4fDApKzQwPj4yXSkpJiYocGU9Nyk6cGU9Nztkb3tp''@;'; put 'put ''Zig3PT0oMHxwZSkmJihwZT0wLDB8YVsxNTYrKDB8YVsoQT1iKzE2fDApPj4yXSk+PjJdKSl7aWYobT1iKy00OHwwLHA9KDB8KHc9MHxhWzI4NCsobWU9MHxhWzE2KygwfGFbKDI9PSgwfChmPTMmYVtiPj4yXSkpP2I6bSkrNDA+PjJdKT4+Ml0pPj4yXSkpPCgwfGFbaz4+Ml0pLDE9PSgwfHVl''@;'; put 'put ''W21lKzE1OD4+MF0pKXtpZighcCl7cGU9MTA7YnJlYWsgdH1pZigoMHwoZj0wfGFbMjg0KygwfGFbMTYrKDB8YVsoMz09KDB8Zik/YjpiKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT49KDB8KHA9MHxhW0Q+PjJdKSkpe3BlPTEyO2JyZWFrIHR9aWYodWVbKDB8YVtSPj4yXSkrKCgwfHZyKHAs''@;'; put 'put ''dykpK2YpPj4wXT0xLEFIKGIpLGM9YystMXwwLDQ9PSgwfHVlWzExMisoMHxhW0E+PjJdKT4+MF0pKWJyZWFrO1pZKGwsYik7YnJlYWt9aWYoIXApe3BlPTE2O2JyZWFrIHR9aWYoKDB8KGY9MHxhWzI4NCsoMHxhWzE2KygwfGFbKDM9PSgwfGYpP2I6Yis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJd''@;'; put 'put ''KSk+PSgwfChwPTB8YVtEPj4yXSkpKXtwZT0xODticmVhayB0fWlmKHVlWygwfGFbUj4+Ml0pKygoMHx2cihwLGYpKSt3KT4+MF09MSwwfHVlWzE1NysoMHxhWzE2KyhmPTB8YVsoMj09KDMmYVtiPj4yXXwwKT9iOm0pKzQwPj4yXSk+PjJdKT4+MF0pYnJlYWs7X0gobCxmKTticmVha319d2hp''@;'; put 'put ''bGUoMCk7Yz1jKzF8MCxmPXA9MHxhW0c+PjJdLHA9MHxhW3ArMTg4Pj4yXX0xMD09KDB8cGUpP0JyKDg1OTkzLDg1NzgxLDEyNTEsODYwMjUpOjEyPT0oMHxwZSk/QnIoODYwMzcsODU3ODEsMTI1Miw4NjAyNSk6MTY9PSgwfHBlKT9Ccig4NTk5Myw4NTc4MSwxMjYwLDg2MDI1KToxOD09KDB8''@;'; put 'put ''cGUpJiZCcig4NjAzNyw4NTc4MSwxMjYxLDg2MDI1KX1lbHNlIEs9Zn13aGlsZSgwKTt1ZVtLKzE1OD4+MF09MH1mdW5jdGlvbiBDSChsLGMpe2N8PTA7dmFyIGY9MDtmb3IoZj0wfEx0KGx8PTApO2Y7KWtIKGwsZixjKSxmPTB8enQobCxmKX1mdW5jdGlvbiBDMGUobCl7dmFyIHAsbSxjPTAs''@;'; put 'put ''Zj0wLEE9MDtmb3IobT1vZSxvZT1vZSsxNnwwLHA9bSxjPTB8THQobHw9MCk7Yzspe2Y9MHxBMihjLDB8YVs0NzE2MV0sMCk7ZTpkb3tpZigwfGYpe3N3aXRjaCgwfHVlW2Y+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDExMTppZighKDB8WmkoZiw4NjA2OSkpKXtrSChsLGMsMSk7YnJlYWsg''@;'; put 'put ''ZX1icmVhaztjYXNlIDEwNTppZighKDB8WmkoZiw5ODczNSkpKXtrSChsLGMsMCk7YnJlYWsgZX19QT0wfCRyKGMpLGFbcD4+Ml09ZixhW3ArND4+Ml09QSxYcigxLDg2MTA0LHApfX13aGlsZSgwKTtjPTB8enQobCxjKX1vZT1tfWZ1bmN0aW9uIGtIKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGIs''@;'; put 'put ''cD0wLG09MCxBPTAsdz0wO2I9MHxhWzQ2NzQwXSxwPTB8YVsoQT0xNisoY3w9MCl8MCk+PjJdO2U6ZG97aWYoISgwfGFbcCsyMTI+PjJdKSl7dz0wIT0oMHxmKTt0OmRve2lmKHcpZm9yKG09MCxjPTAsZj1wOzspe2lmKCEocD0wfGFbKDB8YVtmKzE4MD4+Ml0pKyhtPDwyKT4+Ml0pKWJyZWFr''@;'; put 'put ''IHQ7MHx6WShwKXx8KGFbYisoYzw8Mik+PjJdPXAsYz1jKzF8MCxmPTB8YVtBPj4yXSksbT1tKzF8MH1lbHNlIGZvcihtPTAsYz0wLGY9cDs7KXtpZighKHA9MHxhWygwfGFbZisxNzI+PjJdKSsobTw8Mik+PjJdKSlicmVhayB0OzB8elkocCl8fChhW2IrKGM8PDIpPj4yXT1wLGM9YysxfDAs''@;'; put 'put ''Zj0wfGFbQT4+Ml0pLG09bSsxfDB9fXdoaWxlKDApO2lmKCgwfGMpPj0yKWZvcihhW2IrKGM8PDIpPj4yXT0wLEkxKGIsYyw0LDYxKSxBPXc/MjozLG09dz8tMToxLHA9MTs7KXtpZighKGM9MHxhW2IrKHA8PDIpPj4yXSl8fDB8bUgoZj0wfGFbKCgzJmFbKGY9MHxhW2IrKHArLTE8PDIpPj4y''@;'; put 'put ''XSk+PjJdfDApPT0oMHxBKT9mOmYrKDQ4Km18MCl8MCkrNDA+PjJdLGM9MHxhWygoMyZhW2M+PjJdfDApPT0oMHxBKT9jOmMrKDQ4Km18MCl8MCkrNDA+PjJdKSlicmVhayBlO3c9MHxWQyhmLGMsMCksdWVbMTEyKygwfGFbdysxNj4+Ml0pPj4wXT00LGtJKGwsdykscD1wKzF8MH19fXdoaWxl''@;'; put 'put ''KDApfWZ1bmN0aW9uIHpZKGwpe2x8PTA7Zm9yKHZhciBjPTA7Yz0wfGFbMTE2KygwfGFbbCsxNj4+Ml0pPj4yXTspbD1jO3JldHVybigwfGFbMjEyKygwfGFbMTYrKDB8YVsoMz09KDB8KGM9MyZhW2w+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pIT0oMHxhWzIxMisoMHxhWzE2''@;'; put 'put ''KygwfGFbKDI9PSgwfGMpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSl8MH1mdW5jdGlvbiBRQyhsKXtsfD0wO3ZhciBBLHcsYz0wLGY9MCxwPTAsbT0wO2ZvcihwPTAsbT0wfFR0WzIzNisoZj0wfGFbKHc9MTYrKEE9MHxhWzQ2NzQxXSl8MCk+PjJdKT4+MV07ISgoMHxtKT49KDB8VHRb''@;'; put 'put ''ZisyMzg+PjFdKSk7KTB8dWVbKGw9MHxhW2YrMTk2Pj4yXSkrKG08PDYpKzQ5Pj4wXT8oYz0wfGFbbCsobTw8NikrNTI+PjJdLGw9Zik6KGM9MHxteShBLG0pLGFbKGY9MHxhWzE5NisobD0wfGFbdz4+Ml0pPj4yXSkrKG08PDYpKzUyPj4yXT1jLHVlW2YrKG08PDYpKzQ5Pj4wXT0xKSxwPWMr''@;'; put 'put ''cHwwLG09bSsxfDAsZj1sO3JldHVybiAwfHB9ZnVuY3Rpb24gU0gobCl7dmFyIG0sQSxjPTAsZj0wLHA9MCx3PTA7Zm9yKG09MHxUdFsyMzgrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4xXSxBPWwrMTk2fDAsbD0wfFR0W2wrMjM2Pj4xXTshKCgwfGwpPigwfG0pKTspe2ZvcihmPTB8YVsocD0w''@;'; put 'put ''fGFbQT4+Ml0pKyhsPDw2KT4+Ml0scD1wKyhsPDw2KSs0fDAsYz0wOyEoKDB8Yyk+PSgwfGYpKTspX1sxNisodz0wfGFbMTYrKDB8YVsoMHxhW3A+PjJdKSsoYzw8Mik+PjJdKT4+Ml0pPj4zXT0rKDB8YVt3KzIzNj4+Ml0pLGM9YysxfDA7bD1sKzF8MH19ZnVuY3Rpb24gR1kobCxjKXtjfD0w''@;'; put 'put ''O3ZhciBrLE0sRCxLLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLFI9MCxHPTA7Zm9yKEs9b2Usb2U9b2UrMTZ8MCxrPUssRD0wfFhRKDB8YVsyMzIrKDB8YVsoTT0xNisobHw9MCl8MCk+PjJdKT4+Ml0pLHA9Zj0xOTIrKHc9MHxhW00+PjJdKXwwO3A9MHxhW3A+PjJdOyl1ZVsxNTcrKHA9MHxh''@;'; put 'put ''W3ArMTY+PjJdKT4+MF09MCxwPXArMTY0fDA7Zm9yKG09MHxUdFt3KzIzOD4+MV0sQT13KzE5NnwwLHA9MHxUdFt3KzIzNj4+MV07ISgoMHxwKT4oMHxtKSk7KWFbKDB8YVtBPj4yXSkrKHA8PDYpPj4yXT0wLHA9cCsxfDA7Zm9yKEE9MD09KDB8Yyk7cD0wfGFbZj4+Ml07KXtpZihmPTB8YVso''@;'; put 'put ''bT1wKzE2fDApPj4yXSwwPT0oMHxhW2FbKEE/ZisxNzJ8MDpmKzE4MHwwKT4+Ml0+PjJdKSYmMD09KDB8dWVbKGI9ZisxNTd8MCk+PjBdKSl7Zm9yKHVlW2I+PjBdPTEsX2soRCxwKTtmPTB8WU4oRCk7KTchPSgwfHVlWzE1OSsoMHxhW2YrMTY+PjJdKT4+MF0pPyh4SChsLGYpLFRIKEQsZixj''@;'; put 'put ''KSk6a1UobCxmLGMsRCk7Zj0wfGFbbT4+Ml19Zj1mKzE2NHwwfWZvcigwfFlOKEQpJiZYcigxLDg2MzEyLGspLHc9MHxUdFsyMzYrKGY9MHxhW00+PjJdKT4+MV07ISgoMHx3KT4oMHxUdFtmKzIzOD4+MV0pKTspe2lmKHVlWygwfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJd''@;'; put 'put ''KSsodzw8NikrNDk+PjBdPTAsMCE9KDEmYVtmKzExNj4+Ml18MCkmJigwfChHPTB8YVsoUj0wfGFbZisxOTY+PjJdKSsodzw8Nik+PjJdKSk+MCl7Zm9yKHA9MHxhW1IrKHc8PDYpKzQ+PjJdLEE9KDB8KG09RystMXwwKSkvMnwwLGY9MDshKCgwfGYpPigwfEEpKTspSkMoMHxhW3ArKGY8PDIp''@;'; put 'put ''Pj4yXSwwfGFbcCsobS1mPDwyKT4+Ml0pLGY9ZisxfDA7Zj0wfGFbTT4+Ml19dz13KzF8MH0oMHxWMChsKSk9PSgwfGwpJiYoMHxRQygwKSk+MCYmZHkobCwwKSxLUShEKSxvZT1LfWZ1bmN0aW9uIFdZKGwpe3ZhciBiLGssTSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxEPTA7Zm9yKGI9KGM9''@;'; put 'put ''MHxUdFsyMzgrKGw9MHxhWyhNPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXSk8PDE2Pj4xNixrPWwrMTk2fDAscD1mPTB8VHRbbCsyMzY+PjFdOyEoKDB8cCk+KDB8YikpOyl7Zm9yKEE9MHxhWyh3PTB8YVtrPj4yXSkrKHA8PDYpPj4yXSx3PXcrKHA8PDYpKzR8MCxtPTA7ISgoMHxtKT49KDB8QSkp''@;'; put 'put ''OylhWzIzNisoRD0wfGFbMTYrKDB8YVsoMHxhW3c+PjJdKSsobTw8Mik+PjJdKT4+Ml0pPj4yXT1+fitfW0QrMTY+PjNdLG09bSsxfDA7cD1wKzF8MH1mb3IoOyEoKDB8Zik+KGM8PDE2Pj4xNnwwKSk7KXVlWygwfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsoZjw8Nikr''@;'; put 'put ''NDk+PjBdPTAsSTEoMHxhWyhEPTB8YVtsKzE5Nj4+Ml0pKyhmPDw2KSs0Pj4yXSwwfGFbRCsoZjw8Nik+PjJdLDQsNjIpLGY9ZisxfDAsYz0wfFR0WzIzOCsoRD0wfGFbTT4+Ml0pPj4xXSxsPUR9ZnVuY3Rpb24gTUgobCxjKXt2YXIgbSxmPTAscD0wO2ZvcihtPSgwfCgwfChjfD0wKSklNCk8''@;'; put 'put ''MiYxLGY9MHxhWzE2KyhsfD0wKT4+Ml0sMSZjPyhjPTB8VHRbZisyMzg+PjFdLHA9LTEsZj0wfFR0W2YrMjM2Pj4xXSxjPSgoYzw8MTY+PjE2Pj0oMHxUdFsyMzgrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+MV0pKTw8MzE+PjMxKSsoYzw8MTY+PjE2KXwwKTooYz0wfFR0W2YrMjM2Pj4x''@;'; put 'put ''XSxwPTEsZj0wfFR0W2YrMjM4Pj4xXSxjPShjPDwxNj4+MTY8PSgwfFR0WzIzNisoMHxhWzE2KygwfGFbNDY3NDFdKT4+Ml0pPj4xXSkmMSkrKGM8PDE2Pj4xNil8MCksZj1wK2Z8MDsoMHxjKSE9KDB8Zik7KUtDKGwsYyxtLDI1NSYoMHxYQyhsLGMsYy1wfDApKSksYz1jK3B8MDtkeShsLDFe''@;'; put 'put ''bSl9ZnVuY3Rpb24gZHkobCxjKXtjfD0wO3ZhciBBLHcsYixmPTAscD0wLG09MDtmb3Iodz0wfFR0WzIzOCsocD0wfGFbKGI9MTYrKGx8PTApfDApPj4yXSk+PjFdLG09cCsxOTZ8MCxmPShBPTB8VHRbcCsyMzY+PjFdKTw8MTY+PjE2Ozspe2lmKCgwfGYpPigwfHcpKXttPUE7YnJlYWt9dWVb''@;'; put 'put ''KDB8YVttPj4yXSkrKGY8PDYpKzQ4Pj4wXT0xLGY9ZisxfDB9Zm9yKDs7KXtmb3IoZj0wLG09bTw8MTY+PjE2OyEoKDB8bSk+KDB8VHRbcCsyMzg+PjFdKSk7KTB8dWVbKDB8YVtwKzE5Nj4+Ml0pKyhtPDw2KSs0OD4+MF0mJihmPSgwfEUwZShsLG0sYykpK2Z8MCxwPTB8YVtiPj4yXSksbT1t''@;'; put 'put ''KzF8MDtpZigoMHxmKTw9MClicmVhazttPTB8VHRbcCsyMzY+PjFdfX1mdW5jdGlvbiBTMGUobCl7dmFyIFIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEc9MCxLPTA7RD0wfFR0WzIzOCsoYz0wfGFbKFI9MTYrKGx8PTApfDApPj4yXSk+PjFdO2U6Zm9yKDs7KXtp''@;'; put 'put ''ZigoMHxEKTwoMHxUdFtjKzIzNj4+MV0pKXtjPTE2O2JyZWFrfXVlWyhmPTB8YVtjKzE5Nj4+Ml0pKyhEPDw2KSs0OD4+MF09MCxHPSgwfEQpPjAsSz1EKzF8MCxwPTA7dDpmb3IoOzspe2ZvcihrPSgwfGFbZisoRDw8Nik+PjJdKS0xfDAsTT1mKyhEPDw2KSs0fDAsYj1mKyhLPDw2KXwwOzsp''@;'; put 'put ''e2lmKCgwfHApPj0oMHxrKSlicmVhayB0O2lmKCgwfGFbMjM2KygwfGFbMTYrKEE9MHxhWyh3PTB8YVtNPj4yXSkrKHA8PDIpPj4yXSk+PjJdKT4+Ml0pPj0oMHxhWzIzNisoMHxhWzE2Kyh3PTB8YVt3KygocD1wKzF8MCk8PDIpPj4yXSk+PjJdKT4+Ml0pKXtjPTc7YnJlYWsgZX1pZighKDB8''@;'; put 'put ''RzYobCxBLHcpKSYmKEc/KGY9MHxweShBLHcpLG09MHxweSh3LEEpKTooZj0wLG09MCksKDB8YVtiPj4yXSk+MCYmKGY9KDB8RUgoQSx3KSkrZnwwLG09KDB8RUgodyxBKSkrbXwwKSwoMHxtKTw9KDB8ZikpKWJyZWFrfU0wZShsLEQsQSx3KSxmPTB8YVsxOTYrKGM9MHxhW1I+PjJdKT4+Ml19''@;'; put 'put ''RD1EKy0xfDB9aWYoNz09KDB8YykpQnIoODYyNjMsODU3ODEsNzIxLDg2Mjg5KTtlbHNlIGlmKDE2PT0oMHxjKSlyZXR1cm59ZnVuY3Rpb24gRzYobCxjLGYpe2x8PTA7dmFyIG0sQSx3LHA9MCxiPTAsaz0wO0E9KDB8KHc9MHxhWzIxMisoYj0wfGFbMTYrKGN8PTApPj4yXSk+PjJdKSkhPSgw''@;'; put 'put ''fChtPTB8YVsyMTIrKHA9MHxhWzE2KyhmfD0wKT4+Ml0pPj4yXSkpO2Rve2lmKDB8dWVbMTkzNzY5XSlBP2w9MTprPTk7ZWxzZSBpZigwPT0oMHxtKXwwPT0oMHx3KXwxXkEpaz05O2Vsc2V7aWYoNz09KDB8dWVbYisxNTk+PjBdKSYmMT09KDB8dWVbYisxNTY+PjBdKSl7bD0wO2JyZWFrfWlm''@;'; put 'put ''KDc9PSgwfHVlW3ArMTU5Pj4wXSkmJjE9PSgwfHVlW3ArMTU2Pj4wXSkpe2w9MDticmVha31sPTF9fXdoaWxlKDApO3JldHVybiA5PT0oMHxrKSYmKChsPTB8YVsoMHxhWzE5NisocD0wfGFbbCsxNj4+Ml0pPj4yXSkrKGFbYisyMzI+PjJdPDw2KSs1Nj4+Ml0pPyhrPTB8dnIoMHxhW2wrND4+''@;'; put 'put ''Ml0sMHxhWzI4NCsoMHxhWygoYj0wPT0oMSZhW3ArMTE2Pj4yXXwwKSk/YzpmKSsxNj4+Ml0pPj4yXSksbD0wfHVlWygwfGFbbCs4Pj4yXSkrKCgwfGFbMjg0KygwfGFbKGI/ZjpjKSsxNj4+Ml0pPj4yXSkrayk+PjBdKTpsPTApLDB8bH1mdW5jdGlvbiBweShsLGMpe3ZhciBrLGY9MCxwPTAs''@;'; put 'put ''bT0wLEE9MCx3PTAsYj0wLE09MCxEPTA7Zm9yKGs9MTYrKGx8PTApfDAsdz0wfGFbMTcyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdLGM9MDtsPTB8YVt3Pj4yXTspe2ZvcihiPTB8VHRbMTU0KyhBPTB8YVtsKzE2Pj4yXSk+PjFdLG09MHxhWzIzNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+''@;'; put 'put ''Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sQT1BKzE2fDAscD0wfGFbMTcyKygwfGFbaz4+Ml0pPj4yXSxsPWM7Yz0wfGFbcD4+Ml07KSgwfChmPSgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktbXwwKSk8''@;'; put 'put ''PTA/MD09KDB8ZikmJitfWzE2KyhNPTB8YVtjKzE2Pj4yXSk+PjNdPitfW0E+PjNdJiYoYz1NLEQ9OSk6KGM9MHxhW2MrMTY+PjJdLEQ9OSksOT09KDB8RCkmJihEPTAsbD0oMHx2cigwfFR0W2MrMTU0Pj4xXSxiKSkrbHwwKSxwPXArNHwwO3c9dys0fDAsYz1sfXJldHVybiAwfGN9ZnVuY3Rp''@;'; put 'put ''b24gRUgobCxjKXt2YXIgayxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTAsRD0wO2ZvcihrPTE2KyhsfD0wKXwwLHc9MHxhWzE4MCsoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSxjPTA7bD0wfGFbdz4+Ml07KXtmb3IoYj0wfFR0WzE1NCsoQT0wfGFbbCsxNj4+Ml0pPj4xXSxtPTB8YVsyMzYr''@;'; put 'put ''KDB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSxBPUErNTZ8MCxwPTB8YVsxODArKDB8YVtrPj4yXSk+PjJdLGw9YztjPTB8YVtwPj4yXTspKDB8KGY9KDB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8''@;'; put 'put ''MCkrNDA+PjJdKT4+Ml0pPj4yXSktbXwwKSk8PTA/MD09KDB8ZikmJitfWzU2KyhNPTB8YVtjKzE2Pj4yXSk+PjNdPitfW0E+PjNdJiYoYz1NLEQ9OSk6KGM9MHxhW2MrMTY+PjJdLEQ9OSksOT09KDB8RCkmJihEPTAsbD0oMHx2cigwfFR0W2MrMTU0Pj4xXSxiKSkrbHwwKSxwPXArNHwwO3c9''@;'; put 'put ''dys0fDAsYz1sfXJldHVybiAwfGN9ZnVuY3Rpb24gTTBlKGwsYyxmLHApe2x8PTAsY3w9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7aWYoKHc9MHx1ZVsxNTYrKDB8YVsxNisoZnw9MCk+PjJdKT4+MF0pPDwyND4+MjQhPSgwfHVlWzE1NisoMHxhWzE2KyhwfD0w''@;'; put 'put ''KT4+Ml0pPj4wXSkpe2ZvcihrPTB8YVsoTT0wfGFbMTk2KygwfGFbKGI9bCsxNnwwKT4+Ml0pPj4yXSkrKGM8PDYpPj4yXSxNPU0rKGM8PDYpKzR8MCxsPTAsbT0wLEE9MDshKCgwfGwpPj0oMHxrKSk7KUc9MD09KDB8dWVbMTU2KygwfGFbMTYrKDB8YVsoMHxhW00+PjJdKSsobDw8Mik+PjJd''@;'; put 'put ''KT4+Ml0pPj4wXSksbD1sKzF8MCxtPW0rKDEmRyl8MCxBPUErKDEmKDFeRykpfDA7Zm9yKHc9dzw8MjQ+PjI0PT0wLEE9KDB8bSk8KDB8QSk/dz9mOnA6dz9wOmYsdz0wLGw9MDshKCgwfGwpPj0oMHxrKSk7KXc9KDB8YVsoMHxhW00+PjJdKSsobDw8Mik+PjJdKT09KDB8QSk/bDp3LGw9bCsx''@;'; put 'put ''fDA7Zm9yKEc9MD09KDB8dWVbMTU2KygwfGFbQSsxNj4+Ml0pPj4wXSkmMSxSPTAsbT13Ozspe2lmKGw9bSstMXwwLCgwfG0pPD0wKXtEPTAsbD13O2JyZWFrfWlmKCgwfHVlWzE1NisoMHxhWzE2KygwfGFbKDB8YVtNPj4yXSkrKGw8PDIpPj4yXSk+PjJdKT4+MF0pIT0oMHxHKSl7RD0wLGw9''@;'; put 'put ''dzticmVha31SPVIrMXwwLG09bH1mb3IoOyEoKDB8KGw9bCsxfDApKT49KDB8ayl8fCgwfHVlWzE1NisoMHxhWzE2KygwfGFbKDB8YVtNPj4yXSkrKGw8PDIpPj4yXSk+PjJdKT4+MF0pIT0oMHxHKSk7KUQ9RCsxfDA7Zm9yKEpDKGYscCksaz0wfGFbKGI9MHxhWzE5NisoMHxhW2I+PjJdKT4+''@;'; put 'put ''Ml0pKyhjPDw2KT4+Ml0sYj1iKyhjPDw2KSs0fDAsbD0wOzspe2lmKCgwfGwpPj0oMHxrKSl7QT0wLG09dzticmVha313PSgwfGFbKDB8YVtiPj4yXSkrKGw8PDIpPj4yXSk9PSgwfEEpP2w6dyxsPWwrMXwwfWZvcig7Oyl7aWYobD1tKy0xfDAsKDB8bSk8PTApe209MCxsPXc7YnJlYWt9aWYo''@;'; put 'put ''KDB8dWVbMTU2KygwfGFbMTYrKDB8YVsoMHxhW2I+PjJdKSsobDw8Mik+PjJdKT4+Ml0pPj4wXSkhPSgwfEcpKXttPTAsbD13O2JyZWFrfUE9QSsxfDAsbT1sfWZvcig7ISgoMHwobD1sKzF8MCkpPj0oMHxrKXx8KDB8dWVbMTU2KygwfGFbMTYrKDB8YVsoMHxhW2I+PjJdKSsobDw8Mik+PjJd''@;'; put 'put ''KT4+Ml0pPj4wXSkhPSgwfEcpKTspbT1tKzF8MDsoMHwoKDB8KGM9QS1tfDApKT4tMT9jOjAtY3wwKSk+KDB8KCgwfChHPVItRHwwKSk+LTE/RzowLUd8MCkpJiZKQyhmLHApfX1mdW5jdGlvbiBKQyhsLGMpe3ZhciBmLHAsQSx3LG09MDtwPTB8YVsyMzIrKG09MHxhWzE2KyhsfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXSxmPTB8YVsobT1tKzIzNnwwKT4+Ml0sYVttPj4yXT13PTB8YVsyMzYrKDB8YVsoQT0xNisoY3w9MCl8MCk+PjJdKT4+Ml0sYVsoMHxhWygwfGFbMTk2KygwfGFbKG09MTYrKDB8YVs0Njc0MV0pfDApPj4yXSk+PjJdKSsocDw8NikrND4+Ml0pKyh3PDwyKT4+Ml09bCxhWzIzNisoMHxh''@;'; put 'put ''W0E+PjJdKT4+Ml09ZixhWygwfGFbKDB8YVsxOTYrKDB8YVttPj4yXSk+PjJdKSsocDw8NikrND4+Ml0pKyhmPDwyKT4+Ml09Y31mdW5jdGlvbiBFMGUobCxjLGYpe2Z8PTA7dmFyIFIsRyxLLHBlLG1lLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7dWVbKEQ9MHxhWzE5NisoMHxh''@;'; put 'put ''WyhLPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChjfD0wKTw8NikrNDg+PjBdPTAscGU9KDB8Yyk+MCxtZT1jKzF8MCxSPTAhPSgwfGYpLEc9YystMXwwLHA9MCxBPTAsZj1EO2U6Zm9yKDs7KXtmb3Ioaz0oMHxhW2YrKGM8PDYpPj4yXSktMXwwLE09ZisoYzw8NikrNHwwLG09ZisobWU8PDYp''@;'; put 'put ''fDAsRD1wOzspe2lmKCgwfEQpPj0oMHxrKSl7Zj0xNzticmVhayBlfWlmKCgwfGFbMjM2KygwfGFbMTYrKHc9MHxhWyhiPTB8YVtNPj4yXSkrKEQ8PDIpPj4yXSk+PjJdKT4+Ml0pPj0oMHxhWzIzNisoMHxhWzE2KyhiPTB8YVtiKygoRD1EKzF8MCk8PDIpPj4yXSk+PjJdKT4+Ml0pKXtmPTU7''@;'; put 'put ''YnJlYWsgZX1pZighKDB8RzYobCx3LGIpKSl7aWYocGU/KGY9MHxweSh3LGIpLHA9MHxweShiLHcpKTooZj0wLHA9MCksKDB8YVttPj4yXSk+MCYmKGY9KDB8RUgodyxiKSkrZnwwLHA9KDB8RUgoYix3KSkrcHwwKSwoMHxmKT4oMHxwKSlicmVhaztpZigoMHxmKT09KDB8cCkmUiYoMHxmKT4w''@;'; put 'put ''KXtmPXA7YnJlYWt9fX1KQyh3LGIpLEE9Zi1wK0F8MCx1ZVsocD0wfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsoYzw8NikrNDk+PjBdPTAsdWVbKGY9MHxhWzE5NisobT0wfGFbSz4+Ml0pPj4yXSkrKGM8PDYpKzQ4Pj4wXT0xLCgwfFR0W20rMjM2Pj4xXSk8KDB8Yykm''@;'; put 'put ''Jih1ZVtwKyhHPDw2KSs0OT4+MF09MCx1ZVtmKyhHPDw2KSs0OD4+MF09MSksKDB8VHRbbSsyMzg+PjFdKTw9KDB8Yyl8fCh1ZVtwKyhtZTw8NikrNDk+PjBdPTAsdWVbZisobWU8PDYpKzQ4Pj4wXT0xKSxwPUR9aWYoNT09KDB8ZikpQnIoODYyNjMsODU3ODEsNzcwLDg2Mjk3KTtlbHNlIGlm''@;'; put 'put ''KDE3PT0oMHxmKSlyZXR1cm4gMHxBO3JldHVybiAwfWZ1bmN0aW9uIFhDKGwsYyxmKXt2YXIgTSxELEcsSyxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxSPTA7Zm9yKEs9MHxhWyhsPTB8YVsxOTYrKDB8YVsoRz0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKygoY3w9MCk8PDYpKzQ+PjJdLE09KDB8''@;'; put 'put ''KGZ8PTApKT4oMHxjKSxEPTQrKFI9MHxhWzQ2NzM5XSl8MCxrPTA7Oyl7aWYoKDB8ayk+PSgwfChmPTB8YVtsKyhjPDw2KT4+Ml0pKSl7bD0wLEE9MDticmVha31sPTB8YVsoYj0xNisoMHxhW0srKGs8PDIpPj4yXSl8MCk+PjJdO2U6ZG97aWYoTSlmb3Iodz0wfGFbbCsxODA+PjJdLGw9MCxB''@;'; put 'put ''PTA7Oyl7aWYoIShmPTB8YVt3KyhBPDwyKT4+Ml0pKWJyZWFrIGU7KDB8VHRbMTU0KyhwPTB8YVtmKzE2Pj4yXSk+PjFdKT4wJiYoYVtSKyhsPDwyKT4+Ml09YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXTw8OHxidFtwKzg4''@;'; put 'put ''Pj4wXSxsPWwrMXwwKSxBPUErMXwwfWVsc2UgZm9yKHc9MHxhW2wrMTcyPj4yXSxBPTAsbD0wOzspe2lmKCEoZj0wfGFbdysoQTw8Mik+PjJdKSlicmVhayBlOygwfFR0WzE1NCsocD0wfGFbZisxNj4+Ml0pPj4xXSk+MCYmKGFbUisobDw8Mik+PjJdPWFbMjM2KygwfGFbMTYrKDB8YVsoMz09''@;'; put 'put ''KDMmYVtmPj4yXXwwKT9mOmYrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXTw8OHxidFtwKzQ4Pj4wXSxsPWwrMXwwKSxBPUErMXwwfX13aGlsZSgwKTtlOmRve3N3aXRjaCgwfGwpe2Nhc2UgMDptPS0xO2JyZWFrO2Nhc2UgMTptPSsoMHxhW1I+PjJdKTticmVhaztjYXNlIDI6bT0rKDB8KCgwfGFb''@;'; put 'put ''RD4+Ml0pKygwfGFbUj4+Ml0pfDApLzIpO2JyZWFrO2RlZmF1bHQ6aWYoSTEoUixsLDQsNjApLGY9KDB8bCkvMnwwLDEmbHwwKXttPSsoMHxhW1IrKGY8PDIpPj4yXSk7YnJlYWsgZX1pZihwPSgwfGFbUisobCstMTw8Mik+PjJdKS0oQT0wfGFbUisoZjw8Mik+PjJdKXwwLCgwfChmPShsPTB8''@;'; put 'put ''YVtSKyhmKy0xPDwyKT4+Ml0pLSgwfGFbUj4+Ml0pfDApKT09KDB8cCkpe209KygwfChsK0F8MCkvMik7YnJlYWsgZX1tPSsoMHwoKDB8dnIoZixBKSkrKDB8dnIobCxwKSl8MCkvKGYrcHwwKSk7YnJlYWsgZX19d2hpbGUoMCk7X1syNDArKDB8YVtiPj4yXSk+PjNdPW0saz1rKzF8MCxsPTB8''@;'; put 'put ''YVsxOTYrKDB8YVtHPj4yXSk+PjJdfWZvcig7ISgoMHxBKT49KDB8ZikpOykwPT0oMHxhWzE4NCsoUj0wfGFbMTYrKHA9MHxhW0srKEE8PDIpPj4yXSk+PjJdKT4+Ml0pJiYwPT0oMHxhW1IrMTc2Pj4yXSkmJihsPTI1NSYoMHxneShwKXwyNTUmbCksZj0wfGFbKDB8YVsxOTYrKDB8YVtHPj4y''@;'; put 'put ''XSk+PjJdKSsoYzw8Nik+PjJdKSxBPUErMXwwO3JldHVybiAwfGx9ZnVuY3Rpb24gS0MobCxjLGYscCl7dmFyIEcsSyxtZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHBlPTA7Zm9yKG1lPTB8YVsoUj0wfGFbMTk2KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSsoKGN8PTApPDw2''@;'; put 'put ''KSs0Pj4yXSxLPTAhPSgwfChmfD0wKSksRz0wPT0oKHB8PTApfGZ8MCkscD0wLGY9Uj0wfGFbUisoYzw8Nik+PjJdLFI9bWUrKFI8PDIpfDA7RD1mKy0xfDAsKDB8Zik+MDspe2Y9bWU7ZTpmb3IoOzspe3Q6Zm9yKDs7KXtpZihmPj4+MD49Uj4+PjApYnJlYWsgZTtmb3IoOzspe2lmKGY+Pj4w''@;'; put 'put ''Pj1SPj4+MClicmVhayBlO2lmKCEoKE09K19bMjQwKygwfGFbMTYrKGs9MHxhW2Y+PjJdKT4+Ml0pPj4zXSk8MCkpYnJlYWs7Zj1mKzR8MH1mb3IoYj0wOzspe2ZvcihtPWI8PDI0Pj4yND09MDs7KXtpZigoZj1mKzR8MCk+Pj4wPj1SPj4+MClicmVhayBlO2lmKG0pe209MTE7YnJlYWt9aWYo''@;'; put 'put ''ISgwfGFbMjEyKygwfGFbMTYrKEE9MHxhW2Y+PjJdKT4+Ml0pPj4yXSkpe209MTM7YnJlYWt9fWlmKDExPT0oMHxtKT93PUE9MHxhW2Y+PjJdOjEzPT0oMHxtKSYmKHc9QSksMHxHNihsLGssdykpY29udGludWUgdDtpZigrX1syNDArKG09MHxhW0ErMTY+PjJdKT4+M10+PTApYnJlYWs7Yj0w''@;'; put 'put ''PT0oMHxhW20rMjEyPj4yXSk/YjoxfWlmKCgwfChtPX5+TSkpPigwfChiPX5+K19bMjQwKygwfGFbQSsxNj4+Ml0pPj4zXSkpfEsmKDB8bSk9PSgwfGIpKWJyZWFrfUpDKGssdykscD1wKzF8MH1mPUQsUj1HP1IrLTR8MDpSfTB8cCYmKHVlWyhwZT0wfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0''@;'; put 'put ''MV0pPj4yXSk+PjJdKSsoYzw8NikrNDk+PjBdPTAsKDB8Yyk+MCkmJih1ZVtwZSsoYystMTw8NikrNDk+PjBdPTApfWZ1bmN0aW9uIGd5KGwpe3ZhciBBLGM9MCxmPTAscD0wLG09MDtpZigoMHxhWzIwMCsoQT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdKT4wKXtmb3IobD0wfGFbKDM9PSgzJmFb''@;'; put 'put ''KGw9MHxhWyhtPTB8YVtBKzE5Nj4+Ml0pPj4yXSk+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0sZj0xO3A9MHxhW20rKGY8PDIpPj4yXTspbD0oMHxhWzIzNisoMHxhWzE2KyhwPTB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOnArNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+KDB8YVsyMzYrKDB8YVts''@;'; put 'put ''KzE2Pj4yXSk+PjJdKT9wOmwsZj1mKzF8MDsoYz0rX1syNDArKDB8YVtsKzE2Pj4yXSk+PjNdKT49MD8oX1tBKzI0MD4+M109YysxLGw9MCk6bD0xfWVsc2UgaWYoKDB8YVtBKzE5Mj4+Ml0pPjApe2ZvcihsPTEsZj0wfGFbKDI9PSgzJmFbKGY9MHxhWyhwPTB8YVtBKzE4OD4+Ml0pPj4yXSk+''@;'; put 'put ''PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdO209MHxhW3ArKGw8PDIpPj4yXTspbD1sKzF8MCxmPSgwfGFbMjM2KygwfGFbMTYrKG09MHxhWygyPT0oMyZhW20+PjJdfDApP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVsyMzYrKDB8YVtmKzE2Pj4yXSk+PjJdKT9tOmY7KGM9K19b''@;'; put 'put ''MjQwKygwfGFbZisxNj4+Ml0pPj4zXSk+MD8oX1tBKzI0MD4+M109YystMSxsPTApOmw9MX1lbHNlIGw9MTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHhIKGwsYyl7dmFyIEEsYixrLEcsZj0wLHA9MCxtPTAsdz0wLE09MCxEPTAsUj0wO0c9b2Usb2U9b2UrOTZ8MCxSPUcrNjR8MCxEPUcrNDh8MCxB''@;'; put 'put ''PUcrMjR8MCxwPUcsdz0wfGFbKGY9MHxhWzE5NisoMHxhWyhNPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChrPTB8YVsyMzIrKDB8YVsoYj0xNisoY3w9MCl8MCk+PjJdKT4+Ml0pPDw2KT4+Ml07ZG97aWYoKDB8YVtmKyhrPDw2KSs4Pj4yXSk+PTEpe2lmKGFbKDB8YVtmKyhrPDw2KSs0Pj4y''@;'; put 'put ''XSkrKHc8PDIpPj4yXT1jLGFbMjM2KygwfGFbYj4+Ml0pPj4yXT13LGFbKGY9KHA9MHxhWzE5NisobD0wfGFbTT4+Ml0pPj4yXSkrKGs8PDYpfDApPj4yXT0xKyhtPTB8YVtmPj4yXSksKDB8bSk+PSgwfGFbcCsoazw8NikrOD4+Ml0pJiZCcig4NjM3Nyw4NTc4MSwxMzQ2LDg2NDEzKSwoMHx3''@;'; put 'put ''KT4oMHwobT0wfGFbKDB8YVsxOTYrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+Ml0pKyhrPDw2KSs4Pj4yXSkpKXtNPTB8JHIoYyksRD0wfGFbMjM2KygwfGFbYj4+Ml0pPj4yXSxSPTB8YVsoMHxhWzE5NisoMHxhWzE2KygwfGFbNDY3NDFdKT4+Ml0pPj4yXSkrKGs8PDYpKzg+PjJdLGFb''@;'; put 'put ''QT4+Ml09MTM1OSxhW0ErND4+Ml09TSxhW0ErOD4+Ml09RCxhW0ErMTI+PjJdPWssYVtBKzE2Pj4yXT1SLFhyKDEsODY0MjksQSk7YnJlYWt9aWYoKDB8ayk8KDB8KGY9MHxUdFtsKzIzNj4+MV0pKXwoMHxrKT4oKGw9MHxUdFtsKzIzOD4+MV0pPDwxNj4+MTZ8MCkpe2FbRD4+Ml09MTM2NCxh''@;'; put 'put ''W0QrND4+Ml09ayxhW0QrOD4+Ml09ZixhW0QrMTI+PjJdPWw8PDE2Pj4xNixYcigxLDg2NTAyLEQpO2JyZWFrfSgoMHxhW3ArKGs8PDYpKzQ+PjJdKSsodzw8Mil8MCk+Pj4wPigoMHxhW3ArKGs8PDYpKzEyPj4yXSkrKG08PDIpfDApPj4+MCYmKHc9MHwkcihjKSxNPSgwfGFbKEQ9MHxhWzE5''@;'; put 'put ''NisoMHxhW00+PjJdKT4+Ml0pKyhrPDw2KSs0Pj4yXSkrKGFbMjM2KygwfGFbYj4+Ml0pPj4yXTw8Mil8MCxEPSgwfGFbRCsoazw8NikrMTI+PjJdKSsoYVsoMHxhWzE5NisoMHxhWzE2KygwfGFbNDY3NDFdKT4+Ml0pPj4yXSkrKGs8PDYpKzg+PjJdPDwyKXwwLGFbUj4+Ml09MTM3MCxhW1Ir''@;'; put 'put ''ND4+Ml09ayxhW1IrOD4+Ml09dyxhW1IrMTI+PjJdPU0sYVtSKzE2Pj4yXT1rLGFbUisyMD4+Ml09ayxhW1IrMjQ+PjJdPUQsWHIoMSw4NjU2MyxSKSl9ZWxzZSBEPTB8JHIobCksUj0wfCRyKGMpLGFbcD4+Ml09MTMzOSxhW3ArND4+Ml09RCxhW3ArOD4+Ml09UixhW3ArMTI+PjJdPWssYVtw''@;'; put 'put ''KzE2Pj4yXT13LFhyKDEsODYzMjIscCl9d2hpbGUoMCk7b2U9R31mdW5jdGlvbiBUSChsLGMsZil7bHw9MCxmfD0wO3ZhciBBLHA9MCxtPTA7QT0xNisoY3w9MCl8MDtlOmRve2lmKGYpZm9yKG09MDs7KXtpZigoMHxtKT49KDB8YVsxNzYrKGM9MHxhW0E+PjJdKT4+Ml0pKWJyZWFrIGU7Zj00''@;'; put 'put ''OCsoYz0wfGFbKDB8YVtjKzE3Mj4+Ml0pKyhtPDwyKT4+Ml0pfDAsMHx1ZVsocD0xNTcrKDB8YVsxNisoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6ZikrNDA+PjJdKT4+Ml0pfDApPj4wXXx8KHVlW3A+PjBdPTEsX2sobCwwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pKSxtPW0r''@;'; put 'put ''MXwwfWVsc2UgZm9yKG09MDs7KXtpZigoMHxtKT49KDB8YVsxODQrKGM9MHxhW0E+PjJdKT4+Ml0pKWJyZWFrIGU7Zj0oYz0wfGFbKDB8YVtjKzE4MD4+Ml0pKyhtPDwyKT4+Ml0pLTQ4fDAsMHx1ZVsocD0xNTcrKDB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6ZikrNDA+PjJdKT4+''@;'; put 'put ''Ml0pfDApPj4wXXx8KHVlW3A+PjBdPTEsX2sobCwwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pKSxtPW0rMXwwfX13aGlsZSgwKX1mdW5jdGlvbiBteShsLGMpe3ZhciBSLEsscGUsYmUsT2UsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLG1lPTA7Zm9y''@;'; put 'put ''KE9lPW9lLG9lPW9lKzE2fDAsYmU9T2UscGU9MHxhWyhmPTB8YVsxOTYrKDB8YVsocD0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKygoY3w9MCk8PDYpKzQ+PjJdLCgwfGFbNDY3NDVdKT4oMHwobD0wfGFbKDB8YVsxOTYrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+Ml0pKygobWU9YysxfDAp''@;'; put 'put ''PDw2KT4+Ml0pKT9HPTB8YVs0Njc0Nl06KGFbNDY3NDVdPWw9bCsxfDAsbD0oZj0wfGFbNDY3NDZdKT8wfGwwKGYsbDw8Mik6MHxRbihsPDwyKSxhWzQ2NzQ2XT1sLGY9MHxhWzE5NisoMHxhW3A+PjJdKT4+Ml0sRz1sKSxLPWYrKG1lPDw2KXwwLGw9MDshKCgwfGwpPj0oMHxhW0s+PjJdKSk7''@;'; put 'put ''KWFbRysobDw8Mik+PjJdPTAsbD1sKzF8MDtmb3IoUj1mKyhjPDw2KXwwLEQ9MCxtPTAsbD0wLHc9RzshKCgwfEQpPj0oMHwoYj0wfGFbUj4+Ml0pKSk7KXtNPTB8YVsxODArKDB8YVsxNisoMHxhW3BlKyhEPDwyKT4+Ml0pPj4yXSk+PjJdO2U6ZG97aWYoKDB8bSk+MClmb3Ioaz0wOzspe2lm''@;'; put 'put ''KCEocD0wfGFbTSsoazw8Mik+PjJdKSlicmVhayBlO2ZvcihiPXArMTZ8MCxBPTB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXTtwPUErMXwwLCEoKDB8QSk+PSgwfG0pKTspQT1wLGw9KDB8dnIoMHxhW3crKHA8PDIpPj4y''@;'; put 'put ''XSwwfFR0WzE1NCsoMHxhW2I+PjJdKT4+MV0pKStsfDA7az1rKzF8MH19d2hpbGUoMCk7Zm9yKEE9MDtwPTB8YVtNKyhBPDwyKT4+Ml07KWFbKGs9RysoKHc9MHxhWzIzNisoMHxhWzE2KygwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKTw8Mil8MCk+''@;'; put 'put ''PjJdPSgwfGFbaz4+Ml0pKygwfFR0WzE1NCsoMHxhW3ArMTY+PjJdKT4+MV0pLG09KDB8dyk+KDB8bSk/dzptLEE9QSsxfDAsdz1HO0Q9RCsxfDB9Zm9yKEE9ZisoYzw8NikrNHwwLG09MDshKCgwfG0pPj0oMHxiKSk7KTB8dWVbMTQ1KyhwPTB8YVsxNisoMHxhWygwfGFbQT4+Ml0pKyhtPDwy''@;'; put 'put ''KT4+Ml0pPj4yXSk+PjBdJiYoYVtiZT4+Ml09YVsoYz1wKzE4MHwwKT4+Ml0sYVtiZSs0Pj4yXT1hW2MrND4+Ml0sbD0oMHxVWShiZSwxKSkrbHwwKSxtPW0rMXwwO2ZvcihBPTB8YVtLPj4yXSxtPWYrKG1lPDw2KSs0fDAscD0wOyEoKDB8cCk+PSgwfEEpKTspMHx1ZVsxNDUrKGY9MHxhWzE2''@;'; put 'put ''KygwfGFbKDB8YVttPj4yXSkrKHA8PDIpPj4yXSk+PjJdKT4+MF0mJihhW2JlPj4yXT1hWyhtZT1mKzE3MnwwKT4+Ml0sYVtiZSs0Pj4yXT1hW21lKzQ+PjJdLGw9KDB8VVkoYmUsLTEpKStsfDApLHA9cCsxfDA7cmV0dXJuIG9lPU9lLDB8bH1mdW5jdGlvbiBVWShsLGMpe3ZhciBrLEQsZj0w''@;'; put 'put ''LHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wO0Q9KDB8KGN8PTApKTwxLGs9MHxhWyhsfD0wKT4+Ml0sYz0wLGw9MDtlOmZvcig7TT0wfGFbaysoYzw8Mik+PjJdLE07KWlmKGM9YysxfDAsRClmb3Iodz1NKzQ4fDAsYj1NKzE2fDAsQT1jOzspe2lmKCEoZj0wfGFbaysoQTw8Mik+PjJdKSljb250''@;'; put 'put ''aW51ZSBlOygrX1s1NisocD0wfGFbZisxNj4+Ml0pPj4zXS0rX1s1NisobT0wfGFbYj4+Ml0pPj4zXSkqKygoMHxhWzIzNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtNPj4y''@;'; put 'put ''XXwwKT9NOncpKzQwPj4yXSk+PjJdKT4+Ml0pfDApPDAmJihsPSgwfHZyKDB8VHRbcCsxNTQ+PjFdLDB8VHRbbSsxNTQ+PjFdKSkrbHwwKSxBPUErMXwwfWVsc2UgZm9yKHc9TSstNDh8MCxiPU0rMTZ8MCxBPWM7Oyl7aWYoIShmPTB8YVtrKyhBPDwyKT4+Ml0pKWNvbnRpbnVlIGU7KCtfWzE2''@;'; put 'put ''KyhwPTB8YVtmKzE2Pj4yXSk+PjNdLStfWzE2KyhtPTB8YVtiPj4yXSk+PjNdKSorKCgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtNPj4yXXwwKT9NOncpKzQw''@;'; put 'put ''Pj4yXSk+PjJdKT4+Ml0pfDApPDAmJihsPSgwfHZyKDB8VHRbcCsxNTQ+PjFdLDB8VHRbbSsxNTQ+PjFdKSkrbHwwKSxBPUErMXwwfXJldHVybiAwfGx9ZnVuY3Rpb24gSlkobCl7dmFyIEEsdyxjPTAsZj0wLHA9MCxtPTAsYj0wLGs9MDtmb3Iodz0wfG1yKDgrKFR0WzIzOCsoMHxhWyhBPTE2''@;'; put 'put ''KyhsfD0wKXwwKT4+Ml0pPj4xXTw8Mil8MCksbT0wfEx0KGwpO207KXtmb3IoYVsocD13KyhhWzIzMisoMHxhW20rMTY+PjJdKT4+Ml08PDIpfDApPj4yXT0xKygwfGFbcD4+Ml0pLHA9MHx5MChsLG0pO3A7KXtmb3IoZj0oaz0oMHwoYz0wfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8KGI9''@;'; put 'put ''MyZhW3A+PjJdKSk/cDpwKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT4oMHwoYj0wfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8Yik/cDpwKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSkpP2M6YixjPWs/YjpjOyEoKDB8KGM9YysxfDApKT49KDB8ZikpOylhWyhrPXcrKGM8PDIpfDApPj4y''@;'; put 'put ''XT0xKygwfGFbaz4+Ml0pO3A9MHxrMChsLHApfW09MHx6dChsLG0pfWZvcihwPTB8bXIoMTI4KyhUdFsyMzgrKDB8YVtBPj4yXSk+PjFdPDw2KXwwKSxhWzE5NisoZj0wfGFbQT4+Ml0pPj4yXT1wLGM9MHxUdFtmKzIzNj4+MV07ISgoMHxjKT4oMHxUdFtmKzIzOD4+MV0pKTspYVtwKyhjPDw2''@;'; put 'put ''KT4+Ml09Zj0wfGFbKGI9dysoYzw8Mil8MCk+PjJdLGFbcCsoYzw8NikrOD4+Ml09ZixiPTB8bXIoNCsoYVtiPj4yXTw8Mil8MCksYVsoaz0wfGFbMTk2KyhmPTB8YVtBPj4yXSk+PjJdKSsoYzw8NikrND4+Ml09YixhW2srKGM8PDYpKzEyPj4yXT1iLGM9YysxfDAscD1rO0h0KHcpfWZ1bmN0''@;'; put 'put ''aW9uIFRJKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBNLG09MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKE09MTYrKGx8PTApfDAsQT0xOyEoKDB8QSk+KDB8YVsxODArKG09MHxhW00+PjJdKT4+Ml0pKTspaz0wfFRJKDB8YVsoMHxhW20rMTg0Pj4yXSkrKEE8PDIpPj4yXSxjLGYscCksQT1B''@;'; put 'put ''KzF8MCxwPWs7ZTpkb3tpZigoMHxWMChsKSkhPSgwfGwpKXtmb3IocjIoMHxjLDAsZjw8MnwwKSxtPTB8THQobCk7bTspe2ZvcihhW2MrKGFbMjMyKygwfGFbKGI9bSsxNnwwKT4+Ml0pPj4yXTw8Mik+PjJdPTEsQT0wfHkwKGwsbSk7QTspe2ZvcihrPUErLTQ4fDAsdz0wfGFbMjMyKygwfGFb''@;'; put 'put ''Yj4+Ml0pPj4yXTtmPXcrMXwwLCEoKDB8dyk+PSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtBPj4yXXwwKT9BOmspKzQwPj4yXSk+PjJdKT4+Ml0pKTspYVtjKyhmPDwyKT4+Ml09MSx3PWY7QT0wfGswKGwsQSl9bT0wfHp0KGwsbSl9Zm9yKEE9MHxUdFsyMzYrKG09MHxhW00+PjJd''@;'; put 'put ''KT4+MV07Oyl7aWYoKDB8QSk+KDB8VHRbbSsyMzg+PjFdKSlicmVhayBlOzB8YVtjKyhBPDwyKT4+Ml18fChwfHwocD0wfHlzKDB8VjAobCksODY2NzUsMSkpLGYwKG09MHxNcihwLDAsMSksMTM3NDQ3LDMwNCwxKSxhWzIzMisodz0wfGFbKGs9bSsxNnwwKT4+Ml0pPj4yXT1BLF9bdys5Nj4+''@;'; put 'put ''M109LjUsX1t3Kzg4Pj4zXT0uNSxfW3crODA+PjNdPTEsYVt3KzIxNj4+Ml09MSxhW3crMTc2Pj4yXT0wLHc9MHxtcigyMCksYVsxNzIrKGI9MHxhW2s+PjJdKT4+Ml09dyxhW2IrMTg0Pj4yXT0wLGI9MHxtcigyMCksYVsxODArKDB8YVtrPj4yXSk+PjJdPWIsVm4obCxtLDEpLG09MHxhW00+''@;'; put 'put ''PjJdKSxBPUErMXwwfX19d2hpbGUoMCk7cmV0dXJuIDB8cH1mdW5jdGlvbiB2eShsKXt2YXIgYyxmPTA7Zm9yKGh5KGx8PTApLGM9bCsxNnwwLGw9MTshKCgwfGwpPigwfGFbMTgwKyhmPTB8YVtjPj4yXSk+PjJdKSk7KXZ5KDB8YVsoMHxhW2YrMTg0Pj4yXSkrKGw8PDIpPj4yXSksbD1sKzF8''@;'; put 'put ''MH1mdW5jdGlvbiBUMGUobCl7dmFyIGYsYz0wO2Y9MHxJSSgwfGFbKDM9PSgwfChjPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSksYz0wfGFbMTczMDgrKDEyKmZ8MCkrKCgwfElJKDB8YVsoMj09KDB8Yyk/bDpsKy00OHwwKSs0MD4+Ml0pKTw8Mik+PjJdLGFbKGw9MTU2Kygw''@;'; put 'put ''fGFbbCsxNj4+Ml0pfDApPj4yXT0wfHZyKDB8YVtsPj4yXSxjKX1mdW5jdGlvbiBJSShsKXtyZXR1cm4gMHwoMT09KDB8dWVbMTU2KyhsPTB8YVsxNisobHw9MCk+PjJdKT4+MF0pPzI6KDB8dWVbbCsxNjA+PjBdKTwyJjEpfWZ1bmN0aW9uIFhZKGwsYyl7Y3w9MCwwfGFbMTkyKygwfGFbMTYr''@;'; put 'put ''KGx8PTApPj4yXSk+PjJdJiYoVUkobCksSUgobCksMHx1ZVsxOTQ5NTRdJiZmdW5jdGlvbiBwb2UobCl7bHw9MDt2YXIgRyxLLGJlLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MCxtZT0wO2JlPW9lLG9lPW9lKzE2fDAsSz1iZSxtZT00LHBlPTB8UjAo''@;'; put 'put ''NDApLGFbcGU+PjJdPTAsZj0wfGFbKEc9bCsxNnwwKT4+Ml07ZTpkb3tpZigoKDB8VHRbZisyMzg+PjFdKS0oMHxUdFtmKzIzNj4+MV0pfDApPj0yKXtNPTEsYz1mLGY9MHxhW2YrMTk2Pj4yXTt0OmZvcig7Oyl7aWYoISgwfGFbZisoKEQ9TSsxfDApPDw2KT4+Ml0pKXtSPTE1O2JyZWFrfWZv''@;'; put 'put ''cihrPTA7Oyl7aWYoKDB8ayk+PSgwfChBPTB8YVtmKyhNPDw2KT4+Ml0pKSl7TT1EO2NvbnRpbnVlIHR9aWYoTW49MCxjPTB8cWkoMjAsMHwoYj0wfGFbKDB8YVtmKyhNPDw2KSs0Pj4yXSkrKGs8PDIpPj4yXSkpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW3A+''@;'; put 'put ''PjJdLDB8cGUsMHxtZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMT09KDB8bSkpe2M9T247YnJlYWsgdH1pZihjPDwyND4+MjQpe2Zvcih3PWssYz1BOyEoKDB8KG09dysxfDApKT49KDB8YykpOyl7aWYoTW49MCxjPTB8T2woNjUsMHxiLDB8YVsoMHxhW2YrKE08PDYpKzQ+PjJdKSso''@;'; put 'put ''bTw8Mik+PjJdKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfHBlLDB8bWUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpwPS0xLDE9PSgwfHApKXtjPU9uO2JyZWFrIHR9aWYoIShjPDwyND4+MjQpKWJyZWFrO3c9bSxmPWM9MHxhWzE5NisoMHxhW0c+''@;'; put 'put ''PjJdKT4+Ml0sYz0wfGFbYysoTTw8Nik+PjJdfWlmKChtLWt8MCk+MSYmKE1uPTAsamMoNiwwfGwsMHxNLDB8aywwfHcsMSksYz1NbixNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxUaSgwfGFbYz4+Ml0sMHxwZSwwfG1lKSl8fFdlKDB8YywwfHhuKSxPbj14bik6Zj0tMSwxPT0oMHxm''@;'; put 'put ''KSkpe2M9T247YnJlYWsgdH19az1rKzF8MCxjPWY9MHxhW0c+PjJdLGY9MHxhW2YrMTk2Pj4yXX19dDpkb3tpZigxNT09KDB8Uikpe2Zvcig7KDB8TSk+MDspe2ZvcihrPTA7ISgoMHxrKT49KDB8KEE9MHxhWyhmPTB8YVtjKzE5Nj4+Ml0pKyhNPDw2KT4+Ml0pKSk7KXtpZihNbj0wLGM9MHxx''@;'; put 'put ''aSgyMSwwfChiPTB8YVsoMHxhW2YrKE08PDYpKzQ+PjJdKSsoazw8Mik+PjJdKSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxwZSwwfG1lKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxPT0oMHxtKSl7Yz1PbjticmVhayB0fWlmKGM8PDI0''@;'; put 'put ''Pj4yNCl7Zm9yKHc9ayxjPUE7ISgoMHwobT13KzF8MCkpPj0oMHxjKSk7KXtpZihNbj0wLGM9MHxPbCg2NiwwfGIsMHxhWygwfGFbZisoTTw8NikrND4+Ml0pKyhtPDwyKT4+Ml0pLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8cGUsMHxtZSkpfHxX''@;'; put 'put ''ZSgwfGYsMHx4biksT249eG4pOnA9LTEsMT09KDB8cCkpe2M9T247YnJlYWsgdH1pZighKGM8PDI0Pj4yNCkpYnJlYWs7dz1tLGY9Yz0wfGFbMTk2KygwfGFbRz4+Ml0pPj4yXSxjPTB8YVtjKyhNPDw2KT4+Ml19aWYoKG0ta3wwKT4xJiYoTW49MCxqYyg2LDB8bCwwfE0sMHxrLDB8dywwKSxj''@;'; put 'put ''PU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfFRpKDB8YVtjPj4yXSwwfHBlLDB8bWUpKXx8V2UoMHxjLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKSl7Yz1PbjticmVhayB0fX1rPWsrMXwwLGM9MHxhW0c+PjJdfU09TSstMXwwLFI9MTV9cGU9MHxvNCgxODcwMTYsMSwwfHBl''@;'; put 'put ''LDB8bWUpLG1lPU9uLGM9TW49MCxNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxUaSgwfGFbYz4+Ml0sMHxwZSwwfG1lKSl8fFdlKDB8YywwfHhuKSxPbj14bik6Zj0tMSxjPTE9PSgwfGYpP09uOjB9fXdoaWxlKDApO3Q6Zm9yKDs7KXtpZihjKXtpZihNbj0wLEVzKDIwLDMsODgxNzcs''@;'; put 'put ''MHxLKSxjPU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfFRpKDB8YVtjPj4yXSwwfHBlLDB8bWUpKXx8V2UoMHxjLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKXtjPU9uO2NvbnRpbnVlfWJyZWFrfWZvcihwPTE7Oyl7aWYoKDB8cCk+KDB8YVsxODArKGM9MHxhW0c+PjJdKT4+''@;'; put 'put ''Ml0pKWJyZWFrIGU7aWYoTW49MCwkbCgxMDEsMHxhWygwfGFbYysxODQ+PjJdKSsocDw8Mik+PjJdKSxjPU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfFRpKDB8YVtjPj4yXSwwfHBlLDB8bWUpKXx8V2UoMHxjLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKXtjPU9uO2NvbnRp''@;'; put 'put ''bnVlIHR9cD1wKzF8MH19fX13aGlsZSgwKTtIdCgwfHBlKSxvZT1iZX0obCksZnVuY3Rpb24gS1kobCl7dmFyIGM9MCxmPTAscD0wO2ZvcihmdW5jdGlvbiBGMGUobCl7dmFyIGIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKHc9MHxUdFsyMzYrKGw9MHxhWyhiPTE2KyhsfD0wKXwwKT4+''@;'; put 'put ''Ml0pPj4xXTshKCgwfHcpPigwfFR0W2wrMjM4Pj4xXSkpOyl7Zm9yKHA9MHxhWyhtPTB8YVtsKzE5Nj4+Ml0pKyh3PDw2KT4+Ml0sbT1tKyh3PDw2KSs0fDAsQT0wLGY9MDshKCgwfGYpPj0oMHxwKSk7KWFbMjM2KyhjPTB8YVsxNisoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSk+''@;'; put 'put ''PjJdPUEsQT0oYz02PT0oMHx1ZVtjKzE1OT4+MF0pPzB8YVtjKzIxNj4+Ml06MSkrQXwwLGY9ZisxfDA7aWYoKDB8QSk+KDB8cCkpe2ZvcihsPShsPTB8YVttPj4yXSk/MHxsMChsLDQrKEE8PDIpfDApOjB8UW4oNCsoQTw8Mil8MCksYVsoZj0wfGFbMTk2KygwfGFbYj4+Ml0pPj4yXSkrKHc8''@;'; put 'put ''PDYpKzQ+PjJdPWwsYz0wfGFbZisodzw8Nik+PjJdO2w9YystMXwwLCEoKDB8Yyk8PTApOylhWyhtPTB8YVtmKyh3PDw2KSs0Pj4yXSkrKGFbMjM2KygwfGFbMTYrKGM9MHxhW20rKGw8PDIpPj4yXSk+PjJdKT4+Ml08PDIpPj4yXT1jLGM9bCxmPTB8YVsxOTYrKDB8YVtiPj4yXSk+PjJdO2Fb''@;'; put 'put ''Zisodzw8Nik+PjJdPUEsYVsoMHxhW2YrKHc8PDYpKzQ+PjJdKSsoQTw8Mik+PjJdPTAsbD0wfGFbYj4+Ml19dz13KzF8MH19KGx8PTApLGM9MTkyKygwfGFbbCsxNj4+Ml0pfDA7Yz0wfGFbYz4+Ml07KXtpZigoZj0wfGFbMjI0KyhjPTB8YVsocD1jKzE2fDApPj4yXSk+PjJdKSYmKCRDKGws''@;'; put 'put ''ZiksYz0wfGFbcD4+Ml0pLChmPTB8YVtjKzIyOD4+Ml0pPygkQyhsLGYpLGY9MHxhW3A+PjJdKTpmPWMsMHwocD0wfGFbZisyMDQ+PjJdKSlmb3IoYz0wOzB8YVtwKyhjPDwyKT4+Ml07KWM9YysxfDA7Yz1mKzE2NHwwfX0obCksMHxmdW5jdGlvbiBJVShsKXt2YXIgTSxjPTAsZj0wLHA9MCxt''@;'; put 'put ''PTAsQT0wLHc9MCxiPTAsaz0wLEQ9MCxSPTA7Zm9yKGM9MTkyKygwfGFbKE09MTYrKGx8PTApfDApPj4yXSl8MDtjPTB8YVtjPj4yXTspe2Y9MHxhWzE4OCsoYz0wfGFbKG09YysxNnwwKT4+Ml0pPj4yXTtlOmRve2lmKGYpZm9yKHA9MDs7KXtpZighKGY9MHxhW2YrKHA8PDIpPj4yXSkpe3A9''@;'; put 'put ''MDticmVhayBlfVk2KGYpLHA9cCsxfDAsZj0wfGFbMTg4KyhjPTB8YVttPj4yXSk+PjJdfWVsc2UgcD0wfXdoaWxlKDApO2Zvcig7ISgoMHxwKT49KDB8YVtjKzIwOD4+Ml0pKTspKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwoaz0zJmFbKGY9MHxhWygwfGFbYysyMDQ+PjJdKSsocDw8''@;'; put 'put ''Mik+PjJdKT4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPT0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfGspP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSYmKFk2KGYpLGM9MHxhW20+PjJdKSxwPXArMXwwO2M9YysxNjR8MH0wPT0oMHxhWzU2KyhjPTB8YVsxOTYr''@;'; put 'put ''KGs9MHxhW00+PjJdKT4+Ml0pPj4yXSkmJigwfGFbaysxODA+PjJdKTw9MHx8KEE9MTMpO2U6ZG97aWYoMTM9PSgwfEEpKXtBPTB8YVtjKzQ+PjJdLG09MDt0OmZvcig7Oyl7aWYoIShjPTB8YVtBKyhtPDwyKT4+Ml0pKWJyZWFrIGU7Zm9yKGY9MHxhWzE5NisoMHxhW2MrMTY+PjJdKT4+Ml0s''@;'; put 'put ''Yz0wO3A9MHxhW2YrKGM8PDIpPj4yXTspe2lmKDB8YVs5Nisoaz0wfGFbcCsxNj4+Ml0pPj4yXSYmMD09KDB8dWVbaysxMTM+PjBdKSlicmVhayB0O2M9YysxfDB9bT1tKzF8MH1PNyhsKX19d2hpbGUoMCk7Zm9yKHZ5KGwpLGY9MCxjPTE5MisoMHxhW00+PjJdKXwwO2M9MHxhW2M+PjJdOyl7''@;'; put 'put ''cD0wfGFbMTg4KyhjPTB8YVsoaz1jKzE2fDApPj4yXSk+PjJdO2U6ZG97aWYocCl7Zm9yKGI9MDs7KXtpZighKG09MHxhW3ArKGI8PDIpPj4yXSkpe2I9MDticmVha313PTB8YVs5NisoQT0wfGFbbSsxNj4+Ml0pPj4yXTtkb3tpZih3KXtpZigwfHVlW0ErMTEzPj4wXSl7X1tBKzEzNj4+M109''@;'; put 'put ''K19bKDA9PSgxJmFbMTE2KygwfGFbTT4+Ml0pPj4yXXwwKT93KzI0fDA6dyszMnwwKT4+M107YnJlYWt9RXkobSksZj0xLGM9cD0wfGFbaz4+Ml0scD0wfGFbcCsxODg+PjJdO2JyZWFrfX13aGlsZSgwKTtiPWIrMXwwfWZvcig7Oyl7aWYoKDB8Yik+PSgwfGFbYysyMDg+PjJdKSlicmVhayBl''@;'; put 'put ''O209MHxhWygzPT0oMHwodz0zJmFbKEE9MHxhWygwfGFbYysyMDQ+PjJdKSsoYjw8Mik+PjJdKT4+Ml0pKT9BOkErNDh8MCkrNDA+PjJdLHc9MHxhWygyPT0oMHx3KT9BOkErLTQ4fDApKzQwPj4yXTtkb3tpZigoMHxtKSE9KDB8dykmJigwfGFbMjMyKygwfGFbbSsxNj4+Ml0pPj4yXSk9PSgw''@;'; put 'put ''fGFbMjMyKygwfGFbdysxNj4+Ml0pPj4yXSkpe3A9QTtkb3twPTB8YVsxNzIrKHc9MHxhW3ArMTY+PjJdKT4+Ml19d2hpbGUoMCE9KDB8cCkpO2lmKHVlWzExMysobT0wfGFbQSsxNj4+Ml0pPj4wXT1wPTB8dWVbdysxMTM+PjBdLG09MHxhW20rOTY+PjJdKXtpZihwPDwyND4+MjQpe19bKHc9''@;'; put 'put ''dysxMzZ8MCk+PjNdPShSPStfWygwPT0oMSZhWzExNisoMHxhW00+PjJdKT4+Ml18MCk/bSsyNHwwOm0rMzJ8MCk+PjNdKT4oRD0rX1t3Pj4zXSk/UjpEO2JyZWFrfUV5KEEpLGY9MSxjPTB8YVtrPj4yXTticmVha319fXdoaWxlKDApO2I9YisxfDB9fX13aGlsZSgwKTtjPWMrMTY0fDB9cmV0''@;'; put 'put ''dXJuIDB8ZiYmKGZ1bmN0aW9uIFRjKGwpe3ZhciBiLGssTSxELFIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsRz0wLEs9MCxwZT0wLG1lPTA7Zm9yKFI9b2Usb2U9b2UrMTA0MHwwLE09UisxMDMyfDAsRD1SLGs9Uis4fDAsdz0wfFR0WzIzNisobD0wfGFbKGI9MTYrKGx8PTApfDApPj4yXSk+''@;'; put 'put ''PjFdOyEoKDB8dyk+KDB8VHRbbCsyMzg+PjFdKSk7KXtmb3IobT0oQT0wfGFbbCsxOTY+PjJdKSsodzw8Nil8MCxBPUErKHc8PDYpKzR8MCxwPTAsbD0wOyEoKDB8cCk+PSgwfGFbbT4+Ml0pKTspMHxhWzExMisoMHxhWyhmPTE2KyhjPTB8YVsoMHxhW0E+PjJdKSsocDw8Mik+PjJdKXwwKT4+''@;'; put 'put ''Ml0pPj4yXSYmKGx8fCh1ZVtNPj4wXT0wfHVlWzE4NTg4XSx1ZVtNKzE+PjBdPTB8dWVbMTg1ODldLHVlW00rMj4+MF09MHx1ZVsxODU5MF0sdWVbTSszPj4wXT0wfHVlWzE4NTkxXSxsPTB8RWMoODU3NjMsTSwwKSksYVtEPj4yXT1wLGFvKGssMTM3Mzk1LEQpLGYwKG1lPTB8TXIobCxrLDEp''@;'; put 'put ''LDkxMTY0LDI0LDEpLEc9MHxhWzE4MCsoMHxhW2Y+PjJdKT4+Ml0sYVsxMisoZj0wfGFbbWUrMTY+PjJdKT4+Ml09KHBlPSgwfChLPTB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhWyhLPTB8YVtHPj4yXSk+PjJdfDApP0s6SystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPigwfChHPTB8''@;'; put 'put ''YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhWyhHPTB8YVtHKzQ+PjJdKT4+Ml18MCk/RzpHKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSkpP0c6SyxhW2YrMTY+PjJdPXBlP0s6RyxhW2YrMjA+PjJdPWMpLHA9cCsxfDA7MHxsJiYoKDB8Tm8obCkpPjEmJkw1KGwsbSksUTEobCkpLHc9dysx''@;'; put 'put ''fDAsbD0wfGFbYj4+Ml19b2U9Un0obCksTWwobCkpLDB8Zn0obCkmJklIKGwpLGZ1bmN0aW9uIFc2KGwpeyhmdW5jdGlvbiBSMGUobCl7dmFyIGM9MCxmPTAscD0wLG09MDtmb3IobD0xOTIrKDB8YVsxNisobHw9MCk+PjJdKXwwO2w9MHxhW2w+PjJdOyl7Zm9yKGY9MHxhWzQrKGw9MTcyKyhw''@;'; put 'put ''PTB8YVsobT1sKzE2fDApPj4yXSl8MCk+PjJdLGFbKHA9cCsyNDh8MCk+PjJdPWFbbD4+Ml0sYVtwKzQ+PjJdPWYsbD0wfGFbNCsoZj0xODArKHA9MHxhW20+PjJdKXwwKT4+Ml0sYVsocD1wKzI1NnwwKT4+Ml09YVtmPj4yXSxhW3ArND4+Ml09bCxsPTB8YVsxODArKHA9MHxhW20+PjJdKT4+''@;'; put 'put ''Ml0sZj0wOzB8YVtsKyhmPDwyKT4+Ml07KWY9ZisxfDA7Zm9yKGM9MHxhW3ArMTcyPj4yXSxsPTA7MHxhW2MrKGw8PDIpPj4yXTspbD1sKzF8MDthW3ArMTc2Pj4yXT0wLGw9MHxtcigxNisobCtmPDwyKXwwKSxhWzE3MisocD0wfGFbbT4+Ml0pPj4yXT1sLGFbcCsxODQ+PjJdPTAscD0wfG1y''@;'; put 'put ''KDE2KSxhWzE4MCsobD0wfGFbbT4+Ml0pPj4yXT1wLGw9bCsxNjR8MH19KShsfD0wKSxmdW5jdGlvbiBCMGUobCl7dmFyIGJlLE9lLExlLEJlLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsSGU9MCxqZT0wO2ZvcihCZT1vZSxv''@;'; put 'put ''ZT1vZSsxNnwwLExlPTB8YVsxOTYrKHBlPTB8YVsoT2U9MTYrKGx8PTApfDApPj4yXSk+PjJdLGw9MCE9KDEmdWVbMTEzKygwfGFbMTYrKDB8YVtsKzYwPj4yXSk+PjJdKT4+MF0pLGFbKGJlPUJlKT4+Ml09bWU9MHxhW3BlKzI0OD4+Ml0sYVtiZSs0Pj4yXT1sPzU6bWUsbWU9MHxUdFtwZSsy''@;'; put 'put ''MzY+PjFdLGw9cGU7ISgoMHxtZSk+KDB8VHRbbCsyMzg+PjFdKSk7KXthWzIzMisoMHxhWzE2KygwfGFbYVsoUj1MZSsobWU8PDYpKzR8MCk+PjJdPj4yXSk+PjJdKT4+Ml09MCxHPUxlKyhtZTw8Nil8MCxLPSsoMHxhW2JlKygoMSZtZSk8PDIpPj4yXSksTT0wLEE9MDtlOmZvcig7ISgoMHxB''@;'; put 'put ''KT49KDB8YVtHPj4yXSkpOyl7aWYoX1syNDArKGw9MHxhWyhwZT0xNisodz0wfGFbKGM9MHxhW1I+PjJdKSsoQTw8Mik+PjJdKXwwKT4+Ml0pPj4zXT1wPStfW2wrOTY+PjNdLCgwfGFbbCsyMDg+PjJdKT4wKXtmb3IobT0wLGM9MDtmPTB8YVsoMHxhW2wrMjA0Pj4yXSkrKG08PDIpPj4yXTsp''@;'; put 'put ''KDB8YVsoMz09KDB8KEQ9MyZhW2Y+PjJdKSk/ZjpmKzQ4fDApKzQwPj4yXSk9PSgwfGFbKDI9PSgwfEQpP2Y6ZistNDh8MCkrNDA+PjJdKSYmKGM9KDB8WjIoZikpK2N8MCxsPTB8YVtwZT4+Ml0pLG09bSsxfDA7X1soRD1sKzk2fDApPj4zXT1wPStfW0Q+PjNdKyArKDB8YyksYz0wfGFbUj4+''@;'; put 'put ''Ml19Zm9yKChjPTB8YVtjKygoRD1BKzF8MCk8PDIpPj4yXSkmJihndSh3LGMscD1wK0srICtfWzg4KygwfGFbKGs9YysxNnwwKT4+Ml0pPj4zXSwwKSxhWzIzMisoMHxhW2s+PjJdKT4+Ml09bD1+fihwK00pLE09KygwfGwpLGw9MHxhW3BlPj4yXSksKGM9MHxhW2wrMTEyPj4yXSk/KGY9KGw9''@;'; put 'put ''KDB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhWyhBPTB8YVsobT0wfGFbbCsyNTY+PjJdKT4+Ml0pPj4yXXwwKT9BOkErLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVsobT0wfGFbbSs0Pj4yXSk+PjJdfDApP206bSstNDh8MCkrNDA+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXSkpP206QSxtPWw/QTptLHA9KygwfCgwfHZyKDB8YVsyNDgrKDB8YVtPZT4+Ml0pPj4yXSwwfGFyWzE3MCsobD0wfGFbKEE9YysxNnwwKT4+Ml0pPj4xXSkpLzIpLGM9MHxhWygyPT0oMHwoaz0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSwwfEoxKGY9MHxhWygz''@;'; put 'put ''PT0oMHxrKT9mOmYrNDh8MCkrNDA+PjJdLGMpfHxndShjLGYsKygwfH5+KCtfWzk2KygwfGFbYysxNj4+Ml0pPj4zXStwKyArX1s4OCsoMHxhW2YrMTY+PjJdKT4+M10pKSwwfGFbbCsxNTY+PjJdKSxjPTB8YVsoMz09KDB8KGw9MyZhW20+PjJdKSk/bTptKzQ4fDApKzQwPj4yXSwwfEoxKGw9''@;'; put 'put ''MHxhWygyPT0oMHxsKT9tOm0rLTQ4fDApKzQwPj4yXSxjKXx8Z3UoYyxsLCsoMHx+figrX1s5NisoMHxhW2MrMTY+PjJdKT4+M10rcCsgK19bODgrKDB8YVtsKzE2Pj4yXSk+PjNdKSksMHxhWzE1NisoMHxhW0E+PjJdKT4+Ml0pLGs9MCk6az0wOzspe2lmKCgwfGspPj0oMHxhWzE5MisobD0w''@;'; put 'put ''fGFbcGU+PjJdKT4+Ml0pKXtBPUQ7Y29udGludWUgZX1jPShtPSgwfGFbMjM2KygwfGFbMTYrKGY9MHxhWygzPT0oMHwoQT0zJmFbKHc9MHxhWygwfGFbbCsxODg+PjJdKSsoazw8Mik+PjJdKT4+Ml0pKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVsyMzYrKDB8YVsxNisoQT0w''@;'; put 'put ''fGFbKDI9PSgwfEEpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpP2Y6QSxtPX5+KChwPStfWzg4KygwfGFbKGY9bT9BOmYpKzE2Pj4yXSk+PjNdKyArX1s5NisoMHxhW2MrMTY+PjJdKT4+M10pKyArKDB8dnIoMHxhWzI0OCsoMHxhW09lPj4yXSk+PjJdLDB8YXJbMTcwKygwfGFbKEE9''@;'; put 'put ''dysxNnwwKT4+Ml0pPj4xXSkpKSwoYj0wfFM3KGMsZikpPygoMHwoYz1+figocD1wKyArKDB8YVsyNDgrKDB8YVtPZT4+Ml0pPj4yXSkrICsoMHx+figoamU9K19bMTM2KyhsPTB8YVtBPj4yXSk+PjNdKSsoamU+PTA/LjU6LS41KSkpKTwoSGU9KygwfG0pKT9IZTpwKSkpPjY1NTM1JiYoblUo''@;'; put 'put ''KygwfGMpKSxjPTY1NTM1LGw9MHxhW0E+PjJdKSxUdFsobT0xNzArKEE9MHxhW2IrMTY+PjJdKXwwKT4+MV09KDB8Yyk8KDB8KGY9MHxhclttPj4xXSkpP2Y6YyxhWyhBPUErMTU2fDApPj4yXT1hWzE1NisoMHxhWygoMHxhW0E+PjJdKT4oMHxhW2wrMTU2Pj4yXSk/Yjp3KSsxNj4+Ml0pPj4y''@;'; put 'put ''XSk6MHxhWzk2KyhsPTB8YVtBPj4yXSk+PjJdfHxndShjLGYsKygwfG0pLDB8YVtsKzE1Nj4+Ml0pLGs9aysxfDB9fW1lPW1lKzF8MCxsPTB8YVtPZT4+Ml19b2U9QmV9KGwpLGZ1bmN0aW9uIHJVKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7Zm9yKGM9''@;'; put 'put ''MTkyKygwfGFbMTYrKGx8PTApPj4yXSl8MDtjPTB8YVtjPj4yXTspe2Y9MHxhWzI1NisoYz0wfGFbKG09YysxNnwwKT4+Ml0pPj4yXTtlOmRve2lmKGYpZm9yKHA9MDs7KXtpZighKGY9MHxhW2YrKHA8PDIpPj4yXSkpYnJlYWsgZTtEPTB8U2YobCksdWVbMTU2KygwfGFbKGM9RCsxNnwwKT4+''@;'; put 'put ''Ml0pPj4wXT0yLHc9KE09KDB8KEE9fn4oK19bNTYrKGI9MHxhWyhrPWYrMTZ8MCk+PjJdKT4+M10tK19bYisxNj4+M10pKSk+MCk/MDowLUF8MCxBPU0/QTowLE09Zis0OHwwLGd1KEQsMHxhWygzPT0oMyZhW2Y+PjJdfDApP2Y6TSkrNDA+PjJdLCsoQSsxfDApLDB8YVtiKzE1Nj4+Ml0pLGI9''@;'; put 'put ''ZistNDh8MCxndShELDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmIpKzQwPj4yXSwrKHcrMXwwKSwwfGFbMTU2KygwfGFbaz4+Ml0pPj4yXSksYVsyMzIrKDB8YVtjPj4yXSk+PjJdPSgoMHwoQT0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfChrPTMmYVtmPj4yXSkpP2Y6TSkrNDA+PjJd''@;'; put 'put ''KT4+Ml0pPj4yXSktQXwwKSk8KDB8KGY9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHxrKT9mOmIpKzQwPj4yXSk+PjJdKT4+Ml0pLXd8MCkpP0E6ZikrLTEscD1wKzF8MCxmPTB8YVsyNTYrKGM9MHxhW20+PjJdKT4+Ml19fXdoaWxlKDApO2M9YysxNjR8MH19KGwpLGZ1bmN0aW9uIFAw''@;'; put 'put ''ZShsKXsoMHxhWzE4MCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+MCYmKG9wKGwpLHg3KGwpLERIKGwpLExIKGwpKX0obCksZnVuY3Rpb24gaVUobCl7dmFyIHAsYz0wLGY9MCxtPTA7Mz09KDB8YVs4NCsobT0wfGFbOCsoMHxhWyhwPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSk+PjJdKSYmISgo''@;'; put 'put ''Zj0rX1ttKzcyPj4zXSkqKGM9K19bbSs2ND4+M10pPD0xKSYmKE9JKGwpLGd1KDB8YVsyNTYrKG09MHxhW3A+PjJdKT4+Ml0sMHxhW20rMjYwPj4yXSwoZj0wPT0oMSZhW20rMTE2Pj4yXXwwKT9jOmYpPDY1NTM1P2Y6NjU1MzUsMWUzKSl9KGwpfShsKSwwfFA3KGwsMiwwfERJKGwpKSYmKGZ1''@;'; put 'put ''bmN0aW9uIE81KGwpe3ZhciBwZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAsbWU9MDtmb3IoSz0wfFR0WzIzNisoYz0wfGFbKHBlPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTs7KXtpZigoMHxLKT4oMHwoRz0wfFR0W2MrMjM4Pj4xXSkpKXttZT0x''@;'; put 'put ''OTticmVha31NPTB8YVsoUj0oRD0wfGFbYysxOTY+PjJdKSsoSzw8Nil8MCk+PjJdLEQ9RCsoSzw8NikrNHwwLGs9MCxmPTA7ZTpmb3IoOzspe2lmKCgwfGspPj0oMHxNKSl7bWU9MTQ7YnJlYWt9QT0wfGFbMjU2KyhtPTB8YVsxNisoZj0wfGFbKDB8YVtEPj4yXSkrKGs8PDIpPj4yXSk+PjJd''@;'; put 'put ''KT4+Ml07dDpkb3tpZigwfEEpZm9yKHA9MDs7KXtpZighKHc9MHxhW0ErKHA8PDIpPj4yXSkpYnJlYWsgdDtpZigoMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfChiPTMmYVt3Pj4yXSkpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+KDB8Syl8fCgwfGFbMjMyKygwfGFbMTYrKDB8''@;'; put 'put ''YVsoMz09KDB8Yik/dzp3KzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfEspKWJyZWFrIGU7cD1wKzF8MH19d2hpbGUoMCk7bT0wfGFbbSsyNDg+PjJdO3Q6ZG97aWYoMHxtKWZvcihwPTA7Oyl7aWYoIShBPTB8YVttKyhwPDwyKT4+Ml0pKWJyZWFrIHQ7aWYoKDB8YVsyMzIrKDB8YVsxNiso''@;'; put 'put ''MHxhWygzPT0oMHwodz0zJmFbQT4+Ml0pKT9BOkErNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+KDB8Syl8fCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8dyk/QTpBKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4oMHxLKSlicmVhayBlO3A9cCsxfDB9fXdoaWxlKDApO2s9aysxfDB9aWYo''@;'; put 'put ''MTQ9PSgwfG1lKSYmKG1lPTAsZikpe2lmKGY9MHxhW2FbRD4+Ml0+PjJdLCEoYz0wfGFbYVtSKygoKDB8Syk8KDB8Ryk/MTotMSk8PDYpKzQ+PjJdPj4yXSkpe21lPTE2O2JyZWFrfVI9MHxTZihsKSx1ZVsxNTYrKDB8YVsoRz1SKzE2fDApPj4yXSk+PjBdPTIsZ3UoUixmLDAsMCksZ3UoUixj''@;'; put 'put ''LDAsMCksYVsyMzIrKDB8YVtHPj4yXSk+PjJdPWFbMjMyKygwfGFbKCgwfGFbMjMyKygwfGFbZisxNj4+Ml0pPj4yXSk8KDB8YVsyMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT9mOmMpKzE2Pj4yXSk+PjJdLGM9MHxhW3BlPj4yXX1LPUsrMXwwfWlmKDE2PT0oMHxtZSkpQnIoODY4MjksODY3MjEs''@;'; put 'put ''MTExLDg2ODMyKTtlbHNlIGlmKDE5PT0oMHxtZSkpO30obCksMHxQNyhsLDIsMHxESShsKSkpJiZCcig4NjY5Myw4NjcyMSwxMzQsODY3MzIpLGZ1bmN0aW9uIExJKGwpe3ZhciBmLEEsYz0wLHA9MCxtPTAsdz0wLGI9MDtmb3IoQT0wfGFbMTk2KyhsPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0s''@;'; put 'put ''Zj0wfFR0W2wrMjM4Pj4xXSxsPTB8VHRbbCsyMzY+PjFdOyEoKDB8bCk+KDB8ZikpOyl7Zm9yKHA9MHxhW0ErKGw8PDYpPj4yXSxtPUErKGw8PDYpKzR8MCxjPTA7ISgoMHxjKT49KDB8cCkpOylfWzE2KyhiPTB8YVsxNisoMHxhWygwfGFbbT4+Ml0pKyhjPDwyKT4+Ml0pPj4yXSk+PjNdPSso''@;'; put 'put ''MHxhWyh3PWIrMjMyfDApPj4yXSksYVt3Pj4yXT1sLGM9YysxfDA7bD1sKzF8MH19KGwpLGZ1bmN0aW9uICRZKGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7cVkobHw9MCxsKSxiPTB8YVsobT1sKzE2fDApPj4yXTtlOmRve2lmKCgwfFR0''@;'; put 'put ''W2IrMjM4Pj4xXSk+MCYmKHc9MHxhW2IrOD4+Ml0sZj0wfGFbdys4ND4+Ml0sMHxmKSl7Uj1+figrX1tiKzMyPj4zXS0rX1tiKzE2Pj4zXSksTT1+figrX1tiKzQwPj4zXS0rX1tiKzI0Pj4zXSksRD0oRz0wPT0oMSZhW2IrMTE2Pj4yXXwwKSk/TTpSLE09Rz9SOk0sND09KDB8Zik/KGY9MHxE''@;'; put 'put ''MGUobCksdz0wfGFbOCsoYj0wfGFbbT4+Ml0pPj4yXSk6Zj0yPT0oMHxmKSYxO3Q6ZG97aWYoIShmPDwyND4+MjQpKXtzd2l0Y2goMHxhW3crODQ+PjJdKXtjYXNlIDU6aWYoKHA9K19bdys2ND4+M10pPD0wKWJyZWFrIGU7aWYocD0oQT1wLytfW2IrMzI+PjNdKTwoaz0rX1t3KzcyPj4zXS8r''@;'; put 'put ''X1tiKzQwPj4zXSk/QTprLEE+MSZrPjEpe2s9cDticmVhayB0fWJyZWFrIGU7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6YnJlYWsgZX1pZigocD0rKDB8RCkvKygwfE0pKTwoQT0rX1t3KzE2Pj4zXSkpe2s9MSxwPUEvcDticmVha31rPXAvQSxwPTE7YnJlYWt9aWYoKHA9K19bdys2ND4+M10pPD0w''@;'; put 'put ''KWJyZWFrIGU7aWYoKEE9cC8rKDB8TSkpPDF8KHA9K19bdys3Mj4+M10vKygwfEQpKTwxKXtpZihBPHApe2s9MSxwLz1BO2JyZWFrfWs9QS9wLHA9MTticmVha31rPUF9d2hpbGUoMCk7Zm9yKEE9KGY9MD09KDEmYVtiKzExNj4+Ml18MCkpP3A6ayxwPWY/azpwLGY9YisxOTJ8MDtmPTB8YVtm''@;'; put 'put ''Pj4yXTspX1soRz0xNisoZj0wfGFbZisxNj4+Ml0pfDApPj4zXT0rKDB8fn4oKGs9K19bRz4+M10qcCkrKGs+PTA/LjU6LS41KSkpLF9bKEc9ZisyNHwwKT4+M109KygwfH5+KChrPStfW0c+PjNdKkEpKyhrPj0wPy41Oi0uNSkpKSxmPWYrMTY0fDA7ZVUobCxwLEEpfX13aGlsZSgwKTswfGMm''@;'; put 'put ''JmZ1bmN0aW9uIEwwZShsLGMpe3ZhciBmLHcsTSxEO009b2Usb2U9b2UrMzJ8MCx3PSgrX1szMisoRD0wfGFbMTYrKGx8PTApPj4yXSk+PjNdLStfW0QrMTY+PjNdKS8oK19bRCs0MD4+M10tK19bRCsyND4+M10pLGY9K19bKGN8PTApPj4zXTtkb3tpZih3PjEuMSpmKWFbYysyND4+Ml09fn4o''@;'; put 'put ''ZiorKCgwfGFbYysyMD4+Ml0pLSgwfGFbYysxNj4+Ml0pfDApL3cpO2Vsc2V7aWYobD1jKzI0fDAsISh3PD0uOCpmKSl7YVtsPj4yXT0wO2JyZWFrfWFbbD4+Ml09LTF9fXdoaWxlKDApO29lPU19KGwsYyl9KGwsYyksZnVuY3Rpb24gSTBlKGwpe3ZhciBBLGM9MCxmPTAscD0wLG09MDtmb3Io''@;'; put 'put ''bD0xOTIrKDB8YVsoQT0xNisobHw9MCl8MCk+PjJdKXwwO2w9MHxhW2w+PjJdOyl7Zm9yKG09bCsxNnwwLGM9MDtmPTB8YVsocD0wfGFbMTgwKyhsPTB8YVttPj4yXSk+PjJdKSsoYzw8Mik+PjJdOylIdCgwfGFbZisxNj4+Ml0pLEh0KGYpLGM9YysxfDA7cCYmKEh0KHApLGw9MHxhW20+PjJd''@;'; put 'put ''KSwoYz0wfGFbbCsxNzI+PjJdKSYmKEh0KGMpLGw9MHxhW20+PjJdKSxmPTB8YVs0KyhwPWwrMjU2fDApPj4yXSxhWyhsPWwrMTgwfDApPj4yXT1hW3A+PjJdLGFbbCs0Pj4yXT1mLHA9MHxhWzQrKGY9MjQ4KyhsPTB8YVttPj4yXSl8MCk+PjJdLGFbKGw9bCsxNzJ8MCk+PjJdPWFbZj4+Ml0s''@;'; put 'put ''YVtsKzQ+PjJdPXAsbD0xNjQrKDB8YVttPj4yXSl8MH1sPTAsYz0wfGFbMTkyKygwfGFbQT4+Ml0pPj4yXTtlOmZvcig7Oylmb3IobT0wPT0oMHxsKSxwPWwrMTZ8MCxsPWM7Oyl7aWYoIWwpYnJlYWsgZTtpZihjPTB8YVsxNjQrKGY9MHxhW2wrMTY+PjJdKT4+Ml0sMiE9KDB8dWVbZisxNTY+''@;'; put 'put ''PjBdKSljb250aW51ZSBlO20/YVsxOTIrKDB8YVtBPj4yXSk+PjJdPWM6YVsxNjQrKDB8YVtwPj4yXSk+PjJdPWMsSHQoZiksSHQobCksbD1jfWFbMTY4KygwfGFbMTYrKDB8YVsxOTIrKDB8YVtBPj4yXSk+PjJdKT4+Ml0pPj4yXT0wfShsKSl9ZnVuY3Rpb24gSUgobCl7dmFyIE9lLExlLGM9''@;'; put 'put ''MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxCZT0wLEhlPTAsamU9MDtmb3IoTGU9MHxhWzE5NisoYz0wfGFbKE9lPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSxtZT0wfFR0W2MrMjM2Pj4xXTshKCgwfG1lKT4oMHxUdFtjKzIz''@;'; put 'put ''OD4+MV0pKTspe2ZvcihNPUxlKyhtZTw8Nil8MCxEPUxlKyhtZTw8NikrNHwwLFI9TGUrKG1lPDw2KSs0MHwwLEc9TGUrKG1lPDw2KSsyNHwwLEs9TGUrKG1lPDw2KSszMnwwLHBlPUxlKyhtZTw8NikrMTZ8MCxrPTA7ISgoMHxrKT49KDB8YVtNPj4yXSkpOyl7QT0uNSorX1s4MCsoYz0wfGFb''@;'; put 'put ''KGI9MTYrKDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdKXwwKT4+Ml0pPj4zXSxtPTB8YVtjKzIwND4+Ml07ZTpkb3tpZihtKWZvcihwPTA7Oyl7aWYoIShmPTB8YVttKyhwPDwyKT4+Ml0pKWJyZWFrIGU7KDB8YVsoMz09KDB8KEJlPTMmYVtmPj4yXSkpP2Y6Zis0OHwwKSs0MD4+Ml0pPT0o''@;'; put 'put ''MHxhWygyPT0oMHxCZSk/ZjpmKy00OHwwKSs0MD4+Ml0pJiYwIT0oMHwoYmU9MHxhWzk2KygwfGFbZisxNj4+Ml0pPj4yXSkpJiYoQT1BPih3PS41KitfW2JlKzMyPj4zXSk/QTp3KSxwPXArMXwwfX13aGlsZSgwKTsrX1tSPj4zXTxBJiYoX1tHPj4zXT1BLF9bUj4+M109QSksK19bSz4+M108''@;'; put 'put ''QSYmKF9bcGU+PjNdPUEsX1tLPj4zXT1BKSwwfChmPTB8YVtjKzIxMj4+Ml0pJiYoKDB8Zik9PSgwfGwpP3A9MDoocD0wfGVzKGYsMHxhWzQ3MTQ0XSw4LDApLGM9MHxhW2I+PjJdKSxtPTB8YVtjKzIzMj4+Ml0sYz0xMjgrKGY9MHxhW2YrMTY+PjJdKXwwLEErPSsoMHxwKSwoMHxtKT09KDB8''@;'; put 'put ''VHRbZisyMzY+PjFdKSYmKF9bYz4+M109KHc9K19bYz4+M10pPkE/dzpBKSxjPWYrMTIwfDAsKDB8bSk9PSgwfFR0W2YrMjM4Pj4xXSkmJihfW2M+PjNdPSh3PStfW2M+PjNdKT5BP3c6QSkpLGs9aysxfDB9bWU9bWUrMXwwLGM9MHxhW09lPj4yXX1mb3Ioaz0wfEJIKGwpLF9bMjQrKDB8YVsx''@;'; put 'put ''NisoMHxhW2FbTGUrKChjPTB8VHRbMjM4KyhwPTB8YVtPZT4+Ml0pPj4xXSk8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M109K19bTGUrKGM8PDYpKzE2Pj4zXSxmPTB8VHRbcCsyMzY+PjFdLG09cCsyNTJ8MCx3PTA7Yj1jKy0xfDAsISgoMHxjKTw9KDB8ZikpOylBPShIZT0rX1tMZSsoYjw8Nikr''@;'; put 'put ''MzI+PjNdKyArX1tMZSsoYzw8NikrNDA+PjNdKyArKDB8YVttPj4yXSkpPihBPStfW0xlKyhjPDw2KSsyND4+M10rOCsgK19bTGUrKGI8PDYpKzE2Pj4zXSk/SGU6QSwoMHxhW0xlKyhiPDw2KT4+Ml0pPjAmJihfWzI0KygwfGFbMTYrKDB8YVthW0xlKyhiPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+''@;'; put 'put ''PjNdPStfWzI0KygwfGFbMTYrKDB8YVthW0xlKyhjPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdK0EpLHc9dz5BP3c6QSxjPWI7ZTpkb3tpZigwIT0oMHxrKSYmMCE9KDEmYVtwKzExNj4+Ml18MCkmJihCSShsLDApLHA9MHxhW09lPj4yXSwwfHVlW3ArMjc2Pj4wXSkpZm9yKGM9MHxUdFtwKzIz''@;'; put 'put ''OD4+MV0sZj0wfFR0W3ArMjM2Pj4xXSxBPStfWzI0KygwfGFbMTYrKDB8YVthW0xlKyhjPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdLHc9MDs7KXtpZihtPWMrLTF8MCwoMHxjKTw9KDB8ZikpYnJlYWsgZTtIZT0oamU9K19bMjQrKDB8YVsxNisoMHxhW2FbTGUrKG08PDYpKzQ+PjJdPj4yXSk+''@;'; put 'put ''PjJdKT4+M10pLUEsQT1qZSx3PXc+SGU/dzpIZSxjPW19fXdoaWxlKDApO2U6ZG97aWYoMHx1ZVtwKzI3Nj4+MF0pZm9yKG09MHxUdFtwKzIzNj4+MV0sZj0wfFR0W3ArMjM4Pj4xXTs7KXtpZihjPWYrLTF8MCwoMHxmKTw9KDB8bSkpYnJlYWsgZTsoMHxhW0xlKyhjPDw2KT4+Ml0pPD0wfHwo''@;'; put 'put ''X1syNCsoMHxhWzE2KygwfGFbYVtMZSsoYzw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXT0rX1syNCsoMHxhWzE2KygwfGFbYVtMZSsoZjw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSt3KSxmPWN9fXdoaWxlKDApO2ZvcihjPXArMTkyfDA7Yz0wfGFbYz4+Ml07KV9bMjQrKGM9MHxhW2MrMTY+PjJd''@;'; put 'put ''KT4+M109K19bMjQrKDB8YVsxNisoMHxhW2FbTGUrKGFbYysyMzI+PjJdPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdLGM9YysxNjR8MH1mdW5jdGlvbiBESShsKXt2YXIgYztyZXR1cm4gMHwobD0oYz0wfExpKGx8PTAsODY5MjEpKT9+figrcHAoYykqKygwfE5vKGwpKSk6MjE0NzQ4MzY0Nyl9''@;'; put 'put ''ZnVuY3Rpb24gcVkobCxjKXtjfD0wO3ZhciBwLGY9MCxtPTA7Zm9yKHA9MTYrKGx8PTApfDAsZj0xOyEoKDB8Zik+KDB8YVsxODArKG09MHxhW3A+PjJdKT4+Ml0pKTspcVkoMHxhWygwfGFbbSsxODQ+PjJdKSsoZjw8Mik+PjJdLGMpLGY9ZisxfDA7IWZ1bmN0aW9uIE8wZShsLGMpe2N8PTA7''@;'; put 'put ''dmFyIE9lLExlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLEJlPTA7cGU9KDB8VjAobHw9MCkpPT0oMHxsKSxMZT0wfGFbKE9lPWwrMTZ8MCk+PjJdO2U6ZG97aWYocGUpe2ZvcihHPShsPTB8VHRbTGUrMjM4Pj4xXSk8PDE2''@;'; put 'put ''Pj4xNixLPUxlKzE5NnwwLHBlPUxlKzE5NnwwLFI9KGY9MHxUdFtMZSsyMzY+PjFdKTw8MTY+PjE2LG09LTIxNDc0ODM2NDcscD0yMTQ3NDgzNjQ3OyEoKDB8Uik+KDB8RykpOyl7aWYoMCE9KDB8KEQ9MHxhWyhBPTB8YVtLPj4yXSkrKFI8PDYpPj4yXSkpJiYwIT0oMHwoYmU9MHxhWyhtZT0w''@;'; put 'put ''fGFbQSsoUjw8NikrND4+Ml0pPj4yXSkpKXtmb3IoYj0xLEE9YmU7KDB8Yik8KDB8RCkmKHc9MHx1ZVsxNTYrKEE9MHxhW0ErMTY+PjJdKT4+MF0pPDwyND4+MjQhPTA7KUE9MHxhW21lKyhiPDwyKT4+Ml0sYj1iKzF8MDtpZighKHc8PDI0Pj4yNCkpe2ZvcihNPXA8KGs9K19bQSsxNj4+M10t''@;'; put 'put ''K19bQSs4OD4+M10pLGI9MHxhWygwfGFbcGU+PjJdKSsoUjw8NikrND4+Ml0sdz1EKy0yfDAsQT1EKy0xfDA7MHx1ZVsxNTYrKEE9MHxhWzE2KygwfGFbYisoQTw8Mik+PjJdKT4+Ml0pPj4wXTspQT13LHc9dystMXwwO209bT4oQmU9K19bQSs5Nj4+M10rICtfW0ErMTY+PjNdKT9tOkJlLHA9''@;'; put 'put ''TT9wOmt9fVI9UisxfDB9Zm9yKHc9MHxhW0xlKzE4MD4+Ml0sYj1MZSsxODR8MCxBPTE7Oyl7aWYoKDB8QSk+KDB8dykpYnJlYWsgZTtiZT0wfGFbMTYrKDB8YVsoMHxhW2I+PjJdKSsoQTw8Mik+PjJdKT4+Ml0sQT1BKzF8MCxtPW0+KGs9K19bYmUrMzI+PjNdKzgpP206ayxwPXA8KEJlPStf''@;'; put 'put ''W2JlKzE2Pj4zXS04KT9wOkJlfX1lbHNlIG09KygwfGFbMjMyKygwfGFbMTYrKDB8YVtMZSsyNjA+PjJdKT4+Ml0pPj4yXSkscD0rKDB8YVsyMzIrKDB8YVsxNisoMHxhW0xlKzI1Nj4+Ml0pPj4yXSk+PjJdKSxmPTB8VHRbTGUrMjM2Pj4xXSxsPTB8VHRbTGUrMjM4Pj4xXX13aGlsZSgwKTtr''@;'; put 'put ''PStfWzI0KygwfGFbMTYrKDB8YVthWyhjPTB8YVsxOTYrKDB8YVtjKzE2Pj4yXSk+PjJdKSsobDw8MTY+PjE2PDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdLStfW0xlKzEyMD4+M10sQmU9K19bTGUrMTI4Pj4zXSsgK19bMjQrKDB8YVsxNisoMHxhW2FbYysoZjw8MTY+PjE2PDw2KSs0Pj4yXT4+''@;'; put 'put ''Ml0pPj4yXSk+PjNdLF9bTGUrMTY+PjNdPXAsX1tMZSsyND4+M109ayxfWzMyKyhjPTB8YVtPZT4+Ml0pPj4zXT1tLF9bYys0MD4+M109QmV9KGwsYyl9ZnVuY3Rpb24gRDBlKGwpe3ZhciBjLGYscCxtLE0scGUsbWUsYmUsQT0wLHc9MCxiPTAsaz0wLEQ9MCxSPTAsRz0wLEs9MDtyZXR1cm4g''@;'; put 'put ''bWU9b2Usb2U9b2UrODB8MCxwPW1lKzY0fDAsZj1tZSs0OHwwLE09bWUscGU9bWUrMzJ8MCxhWyhtPW1lKzE2fDApPj4yXT1hWyhiZT00OCsoYz0wfGFbOCsoMHxhWyhsPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSl8MCk+PjJdLGFbbSs0Pj4yXT1hW2JlKzQ+PjJdLGFbbSs4Pj4yXT1hW2JlKzg+''@;'; put 'put ''PjJdLGFbbSsxMj4+Ml09YVtiZSsxMj4+Ml0sK19bbT4+M108LjAwMXx8K19bKEE9bSs4fDApPj4zXTwuMDAxfHwoYVtNPj4yXT1hWyh3PWMrMzJ8MCk+PjJdLGFbTSs0Pj4yXT1hW3crND4+Ml0sYVtNKzg+PjJdPWFbdys4Pj4yXSxhW00rMTI+PjJdPWFbdysxMj4+Ml0sYVtmPj4yXT1hW20+''@;'; put 'put ''PjJdLGFbZis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0sYVtwPj4yXT1hW3c+PjJdLGFbcCs0Pj4yXT1hW3crND4+Ml0sYVtwKzg+PjJdPWFbdys4Pj4yXSxhW3ArMTI+PjJdPWFbdysxMj4+Ml0sdFUocGUsZixwKSxhW20+PjJdPWFb''@;'; put 'put ''cGU+PjJdLGFbbSs0Pj4yXT1hW3BlKzQ+PjJdLGFbbSs4Pj4yXT1hW3BlKzg+PjJdLGFbbSsxMj4+Ml09YVtwZSsxMj4+Ml0sYVtmPj4yXT1hW3BlPj4yXSxhW2YrND4+Ml09YVtwZSs0Pj4yXSxhW2YrOD4+Ml09YVtwZSs4Pj4yXSxhW2YrMTI+PjJdPWFbcGUrMTI+PjJdLGFbcD4+Ml09YVtN''@;'; put 'put ''Pj4yXSxhW3ArND4+Ml09YVtNKzQ+PjJdLGFbcCs4Pj4yXT1hW00rOD4+Ml0sYVtwKzEyPj4yXT1hW00rMTI+PjJdLHRVKG0sZixwKSwoUj0oRD0rX1ttPj4zXSkvKGI9K19bMzIrKHc9MHxhW2w+PjJdKT4+M10pKT49MSYoSz0oRz0rX1tBPj4zXSkvKGs9K19bdys0MD4+M10pKT49MSk/bD0w''@;'; put 'put ''OihLPSt3bCgrKFI9KFI9UjxLP1I6Syk+LjU/UjouNSkqay9HKSpHL2ssRz0rd2woK1IqYi9EKSpEL2IqYixfWzY0KyhsPTB8YVt3Kzg+PjJdKT4+M109RyxfW2wrNzI+PjNdPUsqayxsPTEpLG9lPW1lLDB8bH1mdW5jdGlvbiBlVShsLGMsZil7Yz0rYyxmPStmO3ZhciBwPTAsbT0wO2Zvcihw''@;'; put 'put ''PTE2KyhsfD0wKXwwLGw9MTshKCgwfGwpPigwfGFbMTgwKyhtPTB8YVtwPj4yXSk+PjJdKSk7KWVVKDB8YVsoMHxhW20rMTg0Pj4yXSkrKGw8PDIpPj4yXSxjLGYpLGw9bCsxfDA7X1socD1tKzE2fDApPj4zXT0rX1twPj4zXSpjLF9bKHA9bSsyNHwwKT4+M109K19bcD4+M10qZixfWyhwPW0r''@;'; put 'put ''MzJ8MCk+PjNdPStfW3A+PjNdKmMsX1sobT1tKzQwfDApPj4zXT0rX1ttPj4zXSpmfWZ1bmN0aW9uIHRVKGwsYyxmKXt2YXIgcDtwPStfWzgrKGN8PTApPj4zXS0rX1s4KyhmfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2M+PjNdLStfW2Y+PjNdLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIGd1KGws''@;'; put 'put ''YyxmLHApe2x8PTAsY3w9MCxmPStmLHB8PTA7dmFyIEEsdyxiLG09MDtyZXR1cm4gdz0wfG1yKDk2KSxhWyhiPXcrNDh8MCk+PjJdPTN8YVtiPj4yXSxhW3c+PjJdPS00JmFbdz4+Ml18MixtPTB8bXIoMTc2KSxhWyhBPXcrMTZ8MCk+PjJdPW0sYVsoMz09KDMmYVt3Pj4yXXwwKT93OmIpKzQw''@;'; put 'put ''Pj4yXT1sLGFbKDI9PSgzJmFbdz4+Ml18MCk/dzp3Ky00OHwwKSs0MD4+Ml09YyxmPjY1NTM1JiYoblUoZiksZj02NTUzNSxtPTB8YVtBPj4yXSksVHRbbSsxNzA+PjFdPX5+KGYrKGY+PTA/LjU6LS41KSksYVttKzE1Nj4+Ml09cCxEWSh3KSwwfHd9ZnVuY3Rpb24gblUobCl7dmFyIGMsZjtj''@;'; put 'put ''PW9lLG9lPW9lKzE2fDAsX1soZj1jKT4+M109bD0rbCxhW2YrOD4+Ml09NjU1MzUsWHIoMSw4Njg0NSxmKSxvZT1jfWZ1bmN0aW9uIE9JKGwpe3ZhciBwLEEsdyxiLGssTSxjPTAsZj0wLG09MDtmb3IoTT1vZSxvZT1vZSsxNnwwLGs9TSxmPTB8ZXMobHw9MCwwfGFbNDcxNDRdLDgsMCksQXko''@;'; put 'put ''bCksdz0wfGFbMjU2KyhtPTB8YVsoQT1sKzE2fDApPj4yXSk+PjJdLGI9MHxhW20rMjYwPj4yXSxwPSsoMHxmKSxmPTB8VHRbbSsyMzY+PjFdOyEoKDB8Zik+KDB8VHRbbSsyMzg+PjFdKSk7KXtjPTB8YVttKzE5Nj4+Ml07ZG97aWYoMHxhW2MrKGY8PDYpPj4yXSl7aWYoYz0wfGFbYVtjKyhm''@;'; put 'put ''PDw2KSs0Pj4yXT4+Ml0pe2d1KHcsYywrX1s4OCsoMHxhW2MrMTY+PjJdKT4+M10rcCsgK19bbSs5Nj4+M10sMCksZ3UoYz0wfGFbKDB8YVsoYz0wfGFbMTk2KyhtPTB8YVtBPj4yXSk+PjJdKSsoZjw8NikrND4+Ml0pKygoMHxhW2MrKGY8PDYpPj4yXSktMTw8Mik+PjJdLGIsK19bOTYrKDB8''@;'; put 'put ''YVtjKzE2Pj4yXSk+PjNdK3ArICtfW20rNjQ+PjNdLDApO2JyZWFrfWFbaz4+Ml09MHwkcihsKSxhW2srND4+Ml09ZixYcigxLDg2OTI5LGspO2JyZWFrfX13aGlsZSgwKTtmPWYrMXwwLG09MHxhW0E+PjJdfW9lPU19ZnVuY3Rpb24gQXkobCl7dmFyIGM9MCxmPTAscD0wOzB8YVsyNTYrKDB8''@;'; put 'put ''YVsoYz0xNisobHw9MCl8MCk+PjJdKT4+Ml18fChwPTB8U2YoMHxWMChsKSksdWVbMTU2KygwfGFbcCsxNj4+Ml0pPj4wXT0yLGY9MHxTZigwfFYwKGwpKSx1ZVsxNTYrKDB8YVtmKzE2Pj4yXSk+PjBdPTIsMHxhWzEyKygwfGFbYz4+Ml0pPj4yXSYmKDB8VjAobCkpIT0oMHxsKSYmMD09KDEm''@;'; put 'put ''YVsxMTYrKDB8YVsxNisoMHxoaShsKSk+PjJdKT4+Ml18MCkmJmd1KHAsZiwrKDB8fn4rX1s0OCsobD0wfGFbYz4+Ml0pKygoK19bbCs0OD4+M10+K19bbCs4MD4+M10/MDoyKTw8NCk+PjNdKSwwKSxhWzI1NisoYz0wfGFbYz4+Ml0pPj4yXT1wLGFbYysyNjA+PjJdPWYpfWZ1bmN0aW9uIG9w''@;'; put 'put ''KGwpe2x8PTA7dmFyIGM9MCxmPTA7ZG97aWYoKDB8VjAobCkpIT0oMHxsKSl7aWYoT0kobCksYz0wfFM3KDB8YVsyNTYrKGM9MHxhWyhsPWwrMTZ8MCk+PjJdKT4+Ml0sMHxhW2MrMjYwPj4yXSkpe2FbKGY9MTU2KygwfGFbYysxNj4+Ml0pfDApPj4yXT0xMjgrKDB8YVtmPj4yXSk7YnJlYWt9''@;'; put 'put ''Z3UoMHxhWzI1NisoZj0wfGFbbD4+Ml0pPj4yXSwwfGFbZisyNjA+PjJdLDEsMTI4KTticmVha31sPWwrMTZ8MH13aGlsZSgwKTtmb3IoYz0xOyEoKDB8Yyk+KDB8YVsxODArKGY9MHxhW2w+PjJdKT4+Ml0pKTspb3AoMHxhWygwfGFbZisxODQ+PjJdKSsoYzw8Mik+PjJdKSxjPWMrMXwwfWZ1''@;'; put 'put ''bmN0aW9uIHg3KGwpe3ZhciBrLEQsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MDtmb3Ioaz0rKDB8KHc9MHxlcyhsfD0wLDB8YVs0NzE0NF0sOCwwKSkpLHc9MHxUdFsyMzYrKGM9MHxhWyhEPWwrMTZ8MCk+PjJdKT4+MV07Oyl7aWYoKDB8dyk+KDB8VHRbYysyMzg+PjFdKSl7Zj0x''@;'; put 'put ''O2JyZWFrfWM9MHxhW2MrMTk2Pj4yXTtlOmRve2lmKDB8YVtjKyh3PDw2KT4+Ml0mJihiPTB8YVthW2MrKHc8PDYpKzQ+PjJdPj4yXSwwfGIpKXtmb3IoZj0wfGFbMjM2KygwfGFbKG09YisxNnwwKT4+Ml0pPj4yXTshKCgwfGYpPD0wKTspe2lmKGY9ZistMXwwLEE9MHxhWygwfGFbKDB8YVsx''@;'; put 'put ''OTYrKDB8YVsxNisoMHxWMChsKSk+PjJdKT4+Ml0pKyh3PDw2KSs0Pj4yXSkrKGY8PDIpPj4yXSwhKDB8dWVbMTU2KyhjPTB8YVsocD1BKzE2fDApPj4yXSk+PjBdKSl7TT0xMDticmVha31pZigwfG9VKGwsQSkpe009OTticmVha319Zm9yKDk9PSgwfE0pJiYoYz0wfGFbcD4+Ml0sTT0xMCks''@;'; put 'put ''MTA9PSgwfE0pJiYoTT0wLGd1KEEsMHxhWzI1NisoMHxhW0Q+PjJdKT4+Ml0sK19bYys5Nj4+M10raywwKSksZj0oMHxhWygwfGFbMTk2KygwfGFbRD4+Ml0pPj4yXSkrKHc8PDYpPj4yXSkrKDB8YVsyMzYrKDB8YVttPj4yXSk+PjJdKXwwOzspe2lmKCgwfGYpPj0oMHxhWygwfGFbMTk2Kygw''@;'; put 'put ''fGFbMTYrKDB8VjAobCkpPj4yXSk+PjJdKSsodzw8Nik+PjJdKSlicmVhayBlO2lmKG09MHxhWygwfGFbKDB8YVsxOTYrKDB8YVsxNisoMHxWMChsKSk+PjJdKT4+Ml0pKyh3PDw2KSs0Pj4yXSkrKGY8PDIpPj4yXSwhKDB8dWVbMTU2KyhjPTB8YVsocD1tKzE2fDApPj4yXSk+PjBdKSlicmVh''@;'; put 'put ''aztpZigwfG9VKGwsbSkpe009MTU7YnJlYWt9Zj1mKzF8MH0xNT09KDB8TSkmJihNPTAsYz0wfGFbcD4+Ml0pLGd1KDB8YVsyNjArKDB8YVtEPj4yXSk+PjJdLG0sK19bYys4OD4+M10raywwKX19d2hpbGUoMCk7dz13KzF8MCxjPTB8YVtEPj4yXX1mb3IoOyEoKDB8Zik+KDB8YVtjKzE4MD4+''@;'; put 'put ''Ml0pKTspeDcoMHxhWygwfGFbYysxODQ+PjJdKSsoZjw8Mik+PjJdKSxmPWYrMXwwLGM9MHxhW0Q+PjJdfWZ1bmN0aW9uIERIKGwpe3ZhciBjLGYscD0wLG09MCxBPTA7Zm9yKHA9MHxlcyhsfD0wLDB8YVs0NzE0NF0sOCwwKSxBeShsKSxjPWwrMTZ8MCxmPSsoMHxwKSxsPTE7ISgoMHxsKT4o''@;'; put 'put ''MHxhWzE4MCsocD0wfGFbYz4+Ml0pPj4yXSkpOylBeShwPTB8YVsoMHxhW3ArMTg0Pj4yXSkrKGw8PDIpPj4yXSksZ3UoMHxhWzI1NisobT0wfGFbYz4+Ml0pPj4yXSwwfGFbMjU2KygwfGFbKEE9cCsxNnwwKT4+Ml0pPj4yXSwrX1ttKzk2Pj4zXStmLDApLGd1KDB8YVsyNjArKDB8YVtBPj4y''@;'; put 'put ''XSk+PjJdLDB8YVsyNjArKG09MHxhW2M+PjJdKT4+Ml0sK19bbSs2ND4+M10rZiwwKSxESChwKSxsPWwrMXwwfWZ1bmN0aW9uIExIKGwpe3ZhciBELFIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRz0wO2ZvcihjPTB8ZXMobHw9MCwwfGFbNDcxNDRdLDgsMCksUj1sKzE2''@;'; put 'put ''fDAsbD0xOyEoKDB8bCk+KDB8KGY9MHxhWzE4MCsocD0wfGFbUj4+Ml0pPj4yXSkpKTspQXkoMHxhWygwfGFbcCsxODQ+PjJdKSsobDw8Mik+PjJdKSxsPWwrMXwwO2ZvcihEPSsoMHxjKSxNPTEsbD1mLGM9cDshKCgwfE0pPigwfGwpKTspe2ZvcihiPWs9TSsxfDA7cD0wfGFbKGY9MHxhW2Mr''@;'; put 'put ''MTg0Pj4yXSkrKE08PDIpPj4yXSwhKCgwfGIpPigwfGwpKTspdz0obT0oMHxUdFsyMzYrKDB8YVtwKzE2Pj4yXSk+PjFdKT4oMHxUdFsyMzYrKDB8YVsxNisoZj0wfGFbZisoYjw8Mik+PjJdKT4+Ml0pPj4xXSkpP2Y6cCxBPShHPTB8VHRbMjM2KyhtPTB8YVsoZj1tP3A6ZikrMTY+PjJdKT4+''@;'; put 'put ''MV0pPDwxNj4+MTYsKDB8VHRbMjM4KyhwPTB8YVt3KzE2Pj4yXSk+PjFdKT49Rzw8MTY+PjE2JiYoZ3UoMHxhWzI2MCsoMHxhWygobD0oMHxhWzIzNisoMHxhWzE2KygwfGFbYVsoMHxhW3ArMTk2Pj4yXSkrKEE8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+Ml0pPCgwfGFbMjM2KygwfGFbMTYrKDB8''@;'; put 'put ''YVthWygwfGFbbSsxOTY+PjJdKSsoQTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4yXSkpP3c6ZikrMTY+PjJdKT4+Ml0sMHxhWzI1NisoMHxhWyhsP2Y6dykrMTY+PjJdKT4+Ml0sRCwwKSxjPWw9MHxhW1I+PjJdLGw9MHxhW2wrMTgwPj4yXSksYj1iKzF8MDtMSChwKSxNPWssbD0wfGFbMTgwKyhj''@;'; put 'put ''PTB8YVtSPj4yXSk+PjJdfX1mdW5jdGlvbiBvVShsLGMpe2x8PTA7dmFyIGY9MDtpZigxPT0oMHx1ZVsxNTYrKGM9MHxhWzE2KyhjfD0wKT4+Ml0pPj4wXSkpe2ZvcihjPTB8YVthW2MrMjU2Pj4yXT4+Ml07Zj0wfGFbMTE2KygwfGFbYysxNj4+Ml0pPj4yXTspYz1mO2M9MHxIcihsLDB8YVso''@;'; put 'put ''Mz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKT8wOjA9PSgwfEhyKGwsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKSkmMX1lbHNlIGM9MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIEoxKGwsYyl7cmV0dXJuIDB8T0gobHw9MCxjfD0wKX1mdW5jdGlvbiBPSChs''@;'; put 'put ''LGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MDtlOmRve2lmKCgwfGwpPT0oMHxjKSlsPTE7ZWxzZSBmb3IoZj0wfGFbMTgwKygwfGFbbCsxNj4+Ml0pPj4yXSxsPTA7Oyl7aWYoIShwPTB8YVtmKyhsPDwyKT4+Ml0pKXtsPTA7YnJlYWsgZX1pZigwfE9IKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9w''@;'; put 'put ''OnArLTQ4fDApKzQwPj4yXSxjKSl7bD0xO2JyZWFrfWw9bCsxfDB9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gJEMobCxjKXtsfD0wO3ZhciBNLEQsUixmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRz0wO1I9b2Usb2U9b2UrNDh8MCxEPVIrMzJ8MCxNPVIrOHwwLGY9UisyNHww''@;'; put 'put ''LGs9UisxNnwwLGI9UixtPTB8YVsocD0xNisoY3w9MCl8MCk+PjJdO2U6ZG97aWYoKDB8YVttKzIxNj4+Ml0pPj0yKWlmKGFbTT4+Ml09fn4oK19bbSsxNj4+M10tK19bbSs4OD4+M10pLGFbTSs0Pj4yXT1+fitfW20rMjQ+PjNdLGFbRD4+Ml09YVtNPj4yXSxhW0QrND4+Ml09YVtNKzQ+PjJd''@;'; put 'put ''LFJIKGYsYyxEKSxBPWYsdz0wfGFbQSs0Pj4yXSxmPU0sYVtmPj4yXT1hW0E+PjJdLGFbZis0Pj4yXT13LGY9MHxhW3A+PjJdLCgwfGFbZisxODQ+PjJdKT4wKWZvcihiPTB8YVthW2YrMTgwPj4yXT4+Ml0sZj0xKygwfGFbZisyMzY+PjJdKXwwLGI9MHx3ZihsLDB8YVsoMj09KDMmYVtiPj4y''@;'; put 'put ''XXwwKT9iOmIrLTQ4fDApKzQwPj4yXSk7Oyl7aWYoIWIpYnJlYWsgZTtwPSh3PTI9PSgzJmFbYj4+Ml18MCk/YjpiKy00OHwwKSs0OHwwLCgwfChtPTB8YVsoMz09KDMmYVt3Pj4yXXwwKT93OnApKzQwPj4yXSkpIT0oMHxjKSYmKDB8bzEobSkpPT0oMHxjKSYmKG09MHxhWygzPT0oMyZhW3c+''@;'; put 'put ''PjJdfDApP3c6cCkrNDA+PjJdLGFbRD4+Ml09YVtNPj4yXSxhW0QrND4+Ml09YVtNKzQ+PjJdLFJJKGssbCxtLEQsZikscD0wfGFbKG09aykrND4+Ml0sYVsoQT1NKT4+Ml09YVttPj4yXSxhW0ErND4+Ml09cCx5SCh3KSxBPXcrLTQ4fDAscD0obT0wfGFbMTcyKyhwPTB8YVsxNisoMHxhWygy''@;'; put 'put ''PT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxsMChtLDgrKGFbcCsxNzY+PjJdPDwyKXwwKTowfFFuKDgrKGFbcCsxNzY+PjJdPDwyKXwwKSxhWzE3MisoMHxhWzE2KygwfGFbKDI9PSgzJmFbdz4+Ml18MCk/dzpBKSs0MD4+Ml0pPj4yXSk+PjJdPXAscD0wfGFbMTcy''@;'; put 'put ''KyhHPTB8YVsxNisoMHxhWygyPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhHPUcrMTc2fDApPj4yXT0xKyhtPTB8YVtHPj4yXSksYVtwKyhtPDwyKT4+Ml09dyxhWygwfGFbMTcyKyh3PTB8YVsxNisoMHxhWygyPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXSkrKGFbdysxNzY+PjJdPDwyKT4+Ml09MCxmPWYrMXwwKSxiPTB8TzMobCxiKX1lbHNlIGZvcih3PTB8YVthW2YrMTcyPj4yXT4+Ml0sZj0xKygwfGFbZisyMzY+PjJdKXwwLHc9MHx5MChsLDB8YVsoMz09KDMmYVt3Pj4yXXwwKT93OncrNDh8MCkrNDA+PjJdKTs7KXtpZighdyli''@;'; put 'put ''cmVhayBlO3A9dystNDh8MCwoMHwobT0wfGFbKDI9PSgzJmFbdz4+Ml18MCk/dzpwKSs0MD4+Ml0pKSE9KDB8YykmJigwfG8xKG0pKT09KDB8YykmJihtPTB8YVsoMj09KDMmYVt3Pj4yXXwwKT93OnApKzQwPj4yXSxhW0Q+PjJdPWFbTT4+Ml0sYVtEKzQ+PjJdPWFbTSs0Pj4yXSxSSShiLGws''@;'; put 'put ''bSxELGYpLHA9MHxhWyhtPWIpKzQ+PjJdLGFbKEE9TSk+PjJdPWFbbT4+Ml0sYVtBKzQ+PjJdPXAseUgodyksQT13KzQ4fDAscD0obT0wfGFbMTgwKyhwPTB8YVsxNisoMHxhWygzPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxsMChtLDgrKGFbcCsxODQ+PjJdPDwy''@;'; put 'put ''KXwwKTowfFFuKDgrKGFbcCsxODQ+PjJdPDwyKXwwKSxhWzE4MCsoMHxhWzE2KygwfGFbKDM9PSgzJmFbdz4+Ml18MCk/dzpBKSs0MD4+Ml0pPj4yXSk+PjJdPXAsaz0wfGFbMTgwKyhtPTB8YVsxNisoMHxhWygzPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhtPW0r''@;'; put 'put ''MTg0fDApPj4yXT0xKyhHPTB8YVttPj4yXSksYVtrKyhHPDwyKT4+Ml09dyxhWygwfGFbMTgwKyhHPTB8YVsxNisoMHxhWygzPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbRysxODQ+PjJdPDwyKT4+Ml09MCxmPWYrMXwwKSx3PTB8azAobCx3KX19d2hpbGUoMCk7''@;'; put 'put ''b2U9Un1mdW5jdGlvbiBSSChsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wO1E3KGN8PTAsMSZhWzExNisoMHxhWzE2KygwfGZyKGMpKT4+Ml0pPj4yXSksX1syNCsocD0wfGFbYysxNj4+Ml0pPj4zXT0rKDB8YVtmKzQ+PjJdKSxfW3ArMTY+PjNdPW09K19bcCs4OD4+M10rICsoMHxhW2Y+''@;'; put 'put ''PjJdKSxhW2Y+PjJdPX5+KChtKz0rX1twKzk2Pj4zXSkrICsoMHxhWzI0OCsoMHxhWzE2KygwfGZyKGMpKT4+Ml0pPj4yXSkpLGM9MHxhWyhwPWYpKzQ+PjJdLGFbKGY9bCk+PjJdPWFbcD4+Ml0sYVtmKzQ+PjJdPWN9ZnVuY3Rpb24gUkkobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0w''@;'; put 'put ''O3ZhciB3LGIsayxBPTA7Yj1vZSxvZT1vZSsxNnwwLHc9YixjPTB8VjAoY3w9MCksKDB8KEE9MHxvMShmKSkpIT0oMHxmKSYmZnVuY3Rpb24gUGwobCxjKXt2YXIgcCxtLGY9MDsoMHwobHw9MCkpPT0oMHwoY3w9MCkpJiZCcig4NTYxMyw4NTU2MSwyMjAsODU2MjApLDB8YVsoZj0xNjQrKG09''@;'; put 'put ''MHxhW2MrMTY+PjJdKXwwKT4+Ml0mJkJyKDg1NjMzLDg1NTYxLDIyMSw4NTYyMCksYVtmPj4yXT1hWyhwPTE2NCsoMHxhW2wrMTY+PjJdKXwwKT4+Ml0sMHwoZj0wfGFbcD4+Ml0pJiYoYVsxNjgrKDB8YVtmKzE2Pj4yXSk+PjJdPWMpLGFbbSsxNjg+PjJdPWwsYVtwPj4yXT1jfShBLGYpLGFb''@;'; put 'put ''MjM2KyhrPTB8YVtmKzE2Pj4yXSk+PjJdPW0sYVtrKzIzMj4+Ml09QT0wfGFbMjMyKygwfGFbQSsxNj4+Ml0pPj4yXSxhWygwfGFbKDB8YVsxOTYrKDB8YVtjKzE2Pj4yXSk+PjJdKSsoQTw8NikrND4+Ml0pKyhtPDwyKT4+Ml09ZixhW3c+PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFbcCs0Pj4y''@;'; put 'put ''XSxSSChsLGYsdyksb2U9Yn1mdW5jdGlvbiBCSChsKXt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wLGI9MCxrPTAsTT0wLEQ9MDtmb3IoTT0wfGFbMTk2KygwfGFbMTYrKDB8VjAobHw9MCkpPj4yXSk+PjJdLHc9KDB8VjAobCkpPT0oMHxsKT84OisoMHxlcyhsLDB8YVs0NzE0NF0sOCwwKSks''@;'; put 'put ''cD0wLGI9MSxmPStfWzEyMCsobT0wfGFbKGs9bCsxNnwwKT4+Ml0pPj4zXSxjPStfW20rMTI4Pj4zXTshKCgwfGIpPigwfGFbbSsxODA+PjJdKSk7KXA9MHxCSChBPTB8YVsoMHxhW20rMTg0Pj4yXSkrKGI8PDIpPj4yXSl8cCwoMHxUdFsyMzgrKEE9MHxhW0ErMTY+PjJdKT4+MV0pPT0oMHxU''@;'; put 'put ''dFsyMzgrKG09MHxhW2s+PjJdKT4+MV0pJiYoZj1mPihEPStfW0ErMTIwPj4zXSt3KT9mOkQpLCgwfFR0W0ErMjM2Pj4xXSk9PSgwfFR0W20rMjM2Pj4xXSkmJihjPWM+KEQ9K19bQSsxMjg+PjNdK3cpP2M6RCksYj1iKzF8MDtyZXR1cm4oMHxWMChsKSkhPSgwfGwpJiYwIT0oMHxhWzEyKygw''@;'; put 'put ''fGFbaz4+Ml0pPj4yXSkmJigxJmFbMTE2KygwfGFbMTYrKDB8aGkobCkpPj4yXSk+PjJdP3A9MToocD0xLGY9K19bNTYrKGI9MHxhW2s+PjJdKT4+M10rZixjPStfW2IrODg+PjNdK2MpKSxfWzEyMCsoYj0wfGFbaz4+Ml0pPj4zXT1mLF9bYisxMjg+PjNdPWMsKDB8VjAobCkpIT0oMHxsKSYm''@;'; put 'put ''KF9bKGw9TSsoVHRbMjM2KyhrPTB8YVtrPj4yXSk+PjFdPDw2KSsyNHwwKT4+M109KEQ9K19bbD4+M10pPmM/RDpjLF9bKE09TSsoVHRbaysyMzg+PjFdPDw2KSsxNnwwKT4+M109KEQ9K19bTT4+M10pPmY/RDpmKSwwfHB9ZnVuY3Rpb24gQkkobCxjKXtjfD0wO3ZhciBiLGssZj0wLHA9MCxt''@;'; put 'put ''PTAsQT0wLHc9MCxNPTAsRD0wLFI9MCxHPTAsSz0wO2ZvcihSPTB8YVsxOTYrKDB8YVsxNisoMHxWMChsfD0wKSk+PjJdKT4+Ml0sTT0oZj0oMHxWMChsKSk9PSgwfGwpPzA6MHxlcyhsLDB8YVs0NzE0NF0sOCwwKSkrY3wwLGI9KygwfGYpLHc9MSxwPStfWzEyOCsoQT0wfGFbKGs9bCsxNnww''@;'; put 'put ''KT4+Ml0pPj4zXSxtPStfW0ErMTIwPj4zXSxmPUE7ISgoMHx3KT4oMHxhW2YrMTgwPj4yXSkpOylCSShBPTB8YVsoMHxhW2YrMTg0Pj4yXSkrKHc8PDIpPj4yXSxNKSwoMHxUdFsyMzgrKEE9MHxhW0ErMTY+PjJdKT4+MV0pPT0oMHxUdFsyMzgrKGY9MHxhW2s+PjJdKT4+MV0pJiYobT1tPihL''@;'; put 'put ''PStfW0ErMTIwPj4zXStiKT9tOkspLCgwfFR0W0ErMjM2Pj4xXSk9PSgwfFR0W2YrMjM2Pj4xXSkmJihwPXA+KEs9K19bQSsxMjg+PjNdK2IpP3A6Syksdz13KzF8MDtfW2YrMTIwPj4zXT1tLF9bZisxMjg+PjNdPXAsKDB8VjAobCkpIT0oMHxsKSYmMHxhWzEyKyhEPTB8YVtrPj4yXSk+PjJd''@;'; put 'put ''JiYoRz0tbS1wKyArX1tEKzQ4KygoK19bRCsxMDQ+PjNdPitfW0QrNzI+PjNdPzM6MSk8PDQpKzg+PjNdLStfWzI0KygwfGFbMTYrKDB8YVthW1IrKFR0W0QrMjM2Pj4xXTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSsgK19bMjQrKDB8YVsxNisoMHxhW2FbUisoVHRbRCsyMzg+PjFdPDw2KSs0''@;'; put 'put ''Pj4yXT4+Ml0pPj4yXSk+PjNdKT4wJiZmdW5jdGlvbiBQSChsLGMsZil7Y3w9MCxmfD0wO3ZhciBBLGIsayxNLEQsUixHLEsscD0wLG09MCx3PTAscGU9MDtpZihiPTB8YVsxNisoMHxWMChsfD0wKSk+PjJdLHA9MHxUdFsyMzYrKEc9MHxhW2wrMTY+PjJdKT4+MV0sKDB8KGY9fn4oKFI9Kygw''@;'; put 'put ''fChrPShjKzF8MCkvMnwwKSkpKyhBPSsoMHxmKSkrKEQ9K19bKE09RysxMjB8MCk+PjNdKS0rX1soSz0wfGFbYisxOTY+PjJdKSsoKGw9MHxUdFtHKzIzOD4+MV0pPDw2KSsxNj4+M10pKSk+MCl7Zm9yKG09KygwfGYpOyEoKDB8bCk8KDB8cCkpOykoMHxhW0srKGw8PDYpPj4yXSk+MCYmKF9b''@;'; put 'put ''KHBlPTI0KygwfGFbMTYrKDB8YVthW0srKGw8PDYpKzQ+PjJdPj4yXSk+PjJdKXwwKT4+M109K19bcGU+PjNdK20pLGw9bCstMXwwO2w9ZixtPSh3PStfW0crMTI4Pj4zXSkrICsoYy1rfDApfWVsc2UgbD1jLWt8MCxtPXc9K19bRysxMjg+PjNdO2w9fn4oKygwfGwpK0ErbS0rX1tLKyhwPDw2''@;'; put 'put ''KSsyND4+M10pO2U6ZG97aWYoKDB8bCk+MClmb3IoZj0wfFR0W2IrMjM2Pj4xXSxtPSsoMHxsKTs7KXtpZihsPXArLTF8MCwoMHxwKTw9KDB8ZikpYnJlYWsgZTsoMHxhW0srKGw8PDYpPj4yXSk8PTB8fChfWyhwPTI0KygwfGFbMTYrKDB8YVthW0srKGw8PDYpKzQ+PjJdPj4yXSk+PjJdKXww''@;'; put 'put ''KT4+M109K19bcD4+M10rbSkscD1sfX13aGlsZSgwKTtfW0crMTI4Pj4zXT13KyArKGMta3wwKSxfW00+PjNdPUQrUn0obCx+fkcsYyksKDB8VjAobCkpIT0oMHxsKSYmKF9bKE09UisoVHRbMjM2KyhEPTB8YVtrPj4yXSk+PjFdPDw2KSsyNHwwKT4+M109KEs9K19bTT4+M10pPihHPStfW0Qr''@;'; put 'put ''MTI4Pj4zXSk/SzpHLF9bKFI9UisoVHRbRCsyMzg+PjFdPDw2KSsxNnwwKT4+M109KEc9K19bUj4+M10pPihLPStfW0QrMTIwPj4zXSk/RzpLKX1mdW5jdGlvbiBxQyhsLGMpe3ZhciBmLHA7cD0wfHVlWzg0KyhmPTB8YVsxNisobHw9MCk+PjJdKT4+MF0sbD0wfGFbMTYrKGN8PTApPj4yXTtk''@;'; put 'put ''b3tpZihwPDwyND4+MjQ9PSgwfHVlW2wrODQ+PjBdKSl7aWYoK19bZis1Nj4+M109PStfW2wrNTY+PjNdKXtpZihwPDwyND4+MjQhPTAmJitfW2YrNjQ+PjNdIT0rX1tsKzY0Pj4zXSl7bD0wO2JyZWFrfX1lbHNlIGlmKHA8PDI0Pj4yNCl7bD0wO2JyZWFrfWlmKCtfW2YrMTY+PjNdPT0rX1ts''@;'; put 'put ''KzE2Pj4zXSYmK19bZisyND4+M109PStfW2wrMjQ+PjNdKXtsPTE7YnJlYWt9bD0wPT0oMHx1ZVtmKzQ0Pj4wXSkmMX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHl5KGwpe3ZhciB3LGM9MCxmPTAscD0wLG09MCxBPTA7Zm9yKFR0WzIzNisoYz0wfGFbKHc9MTYrKGx8''@;'; put 'put ''PTApfDApPj4yXSk+PjFdPTMyNzY3LFR0W2MrMjM4Pj4xXT0tMSxjPTAsQT0wfEx0KGwpO2Y9MHxhW3c+PjJdLEE7KSgwfChtPTB8YVsyMzIrKDB8YVtBKzE2Pj4yXSk+PjJdKSk+KDB8VHRbKHA9ZisyMzh8MCk+PjFdKSYmKFR0W3A+PjFdPW0pLCgwfG0pPCgwfFR0WyhmPWYrMjM2fDApPj4x''@;'; put 'put ''XSkmJihUdFtmPj4xXT1tKSxjPWM/KDB8bSk8KDB8YVsyMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT9BOmM6QSxBPTB8enQobCxBKTthW2YrMjY0Pj4yXT1jfWZ1bmN0aW9uIEZIKGwpe3ZhciBwLGM9MCxmPTAsbT0wO2ZvcihjPShjPTB8TGkobHw9MCw4Njk3NCkpP35+KCtwcChjKSorKDB8Tm8o''@;'; put 'put ''bCkpKToyMTQ3NDgzNjQ3LHA9bCsxNnwwLGY9MDshKCgwfGYpPj0oMHxhWzIyMCsobT0wfGFbcD4+Ml0pPj4yXSkpOylhW20rMTkyPj4yXT1hWygwfGFbbSsyMTY+PjJdKSsoZjw8Mik+PjJdLFA3KGwsMD09KDB8YVttKzE4MD4+Ml0pJjEsYyksZj1mKzF8MH1mdW5jdGlvbiBhVShsLGMpe2N8''@;'; put 'put ''PTA7dmFyIHAsbT0wO3A9b2Usb2U9b2UrMTZ8MCwwfExpKGx8PTAsODY5ODMpPyhUdFsobT0xMzYrKDB8YVtsKzE2Pj4yXSl8MCk+PjFdPTE2fFR0W20+PjFdLGZ1bmN0aW9uIEhIKGwsYyl7bHw9MCxjfD0wO3ZhciBtLHcsZj0wLHA9MCxBPTA7dz1vZSxvZT1vZSsxNnwwLEE9dyxhWzQ2NzQ3''@;'; put 'put ''XT0wLHVlW0E+PjBdPTB8dWVbMTg1ODhdLHVlW0ErMT4+MF09MHx1ZVsxODU4OV0sdWVbQSsyPj4wXT0wfHVlWzE4NTkwXSx1ZVtBKzM+PjBdPTB8dWVbMTg1OTFdLGYwKEE9MHxFYyg4NzIwMSxBLDApLDg3MjMwLDI4MCwxKSxmdW5jdGlvbiBEaShsLGMsZil7dmFyIHA7Y3w9MCxmfD0wLHA9''@;'; put 'put ''MHxTdChsfD0wLDEyKSxhW3A+PjJdPWMsYVtwKzQ+PjJdPWYsYVtwKzg+PjJdPWFbKGY9NDgrKDB8YVtsKzY0Pj4yXSl8MCk+PjJdLGFbZj4+Ml09cH0oQSwxNzQwNCwxNzM0NCksVkgobCksKGY9MHxMaShsLDg2OTc0KSk/cD1+figrcHAoZikqKygwfE5vKGwpKSk6cD0yMTQ3NDgzNjQ3LHNV''@;'; put 'put ''KGwsMCksZnVuY3Rpb24gajBlKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wO2ZvcihhWzQ2NzQ3XT0wLGY9MHxMdChsKTtmOykoMHx6MyhmKSk9PSgwfGYpJiYocD0wfG5rKGMsMHwkcihmKSksYVsxNDgrKDB8YVtmKzE2Pj4yXSk+PjJdPXApLGY9MHx6dChsLGYpO2ZvcihmPTB8THQobCk7''@;'; put 'put ''ZjspMHxhWzE0OCsoMHxhWyhjPWYrMTZ8MCk+PjJdKT4+Ml18fChwPTB8YVsxNDgrKDB8YVsxNisoMHx6MyhmKSk+PjJdKT4+Ml0sYVsxNDgrKDB8YVtjPj4yXSk+PjJdPXApLGY9MHx6dChsLGYpfShsLEEpLGZ1bmN0aW9uIFowZShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wLGs9MCxNPTA7Zm9yKHc9MHxMdChsfD0wKTt3Oyl7Zm9yKGY9MHxhWzE0OCsoMHxhW3crMTY+PjJdKT4+Ml0sYj0wfHkwKGwsdyk7Yjspe2Rve2lmKDA9PSgwfEcwZShiKSkmJihrPWIrLTQ4fDAsKDB8ZikhPSgwfChNPTB8YVsxNDgrKDB8YVsxNisoMHx6MygwfGFbKDI9PSgzJmFbYj4+''@;'; put 'put ''Ml18MCk/YjprKSs0MD4+Ml0pKT4+Ml0pPj4yXSkpKSl7aWYoQT1iKzQ4fDAscD0oMz09KDB8KG09MyZhW2I+PjJdKSk/YjpBKSs0MHwwLG09MHxhWzIxMisoMHxhWzE2KygwfGFbKDI9PSgwfG0pP2I6aykrNDA+PjJdKT4+Ml0pPj4yXSwwfHJrKGIpKXsoMHwobT0wfHozKDB8YVtwPj4yXSkp''@;'; put 'put ''KSE9KDB8YVsyMTIrKDB8YVsxNisoMHxhWzIxMisoMHxhWzE2KygwfGFbKDM9PSgwfChwPTMmYVtiPj4yXSkpP2I6QSkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pJiYoMHwoQT0wfHozKDB8YVsoMj09KDB8cCk/YjprKSs0MD4+Ml0pKSkhPSgwfGFbMjA4KygwfGFbMTYrKDB8YVsyMTIr''@;'; put 'put ''KDB8YVsxNisoMHxhWygyPT0oMyZhW2I+PjJdfDApP2I6aykrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pP3A9TToocD1mLGY9TSksX3koYyxmLHAsYik7YnJlYWt9aWYoMD09KDB8R0goMHxhWzIxMisoMHxhWzE2KygwfGFbcD4+Ml0pPj4yXSk+PjJdKSkmJjA9PSgwfEdIKG0pKSl7X3ko''@;'; put 'put ''YyxmLE0sYik7YnJlYWt9VzBlKGMsZixNLGIpO2JyZWFrfX13aGlsZSgwKTtiPTB8azAobCxiKX13PTB8enQobCx3KX19KGwsQSksVkkobCxBLDAsMCksZnVuY3Rpb24gWjMobCl7dmFyIGM9MCxmPTA7Zm9yKGM9MHxMdChsfD0wKTtjOyl1ZVsxNTgrKGY9MHxhW2MrMTY+PjJdKT4+MF09MCx1''@;'; put 'put ''ZVtmKzE1Nz4+MF09MCxjPTB8enQobCxjKTtmb3IoYz0wfEx0KGwpO2M7KWNVKGwsYyksYz0wfHp0KGwsYyl9KEEpLG09MHxmdW5jdGlvbiB1VShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO2ZvcihjPTB8THQobHw9MCk7YzspYVsxMjgrKDB8YVtjKzE2Pj4yXSk+PjJdPTAsYz0wfHp0KGwsYyk7''@;'; put 'put ''Zm9yKGM9MCxwPTB8THQobCk7cDspZj1jKzF8MCwwfGFbMTI4KygwfGFbcCsxNj4+Ml0pPj4yXXx8KHd5KGwscCxmKSxjPWYpLHA9MHx6dChsLHApO2U6ZG97aWYoKDB8Yyk+MSlmb3IobT0wfG5rKGwsODcyNDYpLGY9MSxwPTB8THQobCk7Oyl7aWYoIXApYnJlYWsgZTsoMHxhWzEyOCsoMHxh''@;'; put 'put ''W3ArMTY+PjJdKT4+Ml0pPT0oMHxmKSYmKHJsKGwsbSxwLDAsMSksZj1mKzF8MCkscD0wfHp0KGwscCl9fXdoaWxlKDApO3JldHVybiAwfGN9KEEpLGZ1bmN0aW9uIHRrKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKEE9MHxMdChsfD0wKTtBOyl7Zm9yKHc9QSsxNnww''@;'; put 'put ''LG09MHx5MChsLEEpO207KWM9KGY9MHxhWzE4MCsoYz0wfGFbdz4+Ml0pPj4yXSk/MHxsMChmLDgrKGFbYysxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFbYysxODQ+PjJdPDwyKXwwKSxhWzE4MCsoZj0wfGFbdz4+Ml0pPj4yXT1jLGFbKGY9ZisxODR8MCk+PjJdPTErKHA9MHxhW2Y+PjJdKSxh''@;'; put 'put ''W2MrKHA8PDIpPj4yXT1tLGFbKDB8YVsxODArKHA9MHxhW3c+PjJdKT4+Ml0pKyhhW3ArMTg0Pj4yXTw8Mik+PjJdPTAscD1tKy00OHwwLGM9KGY9MHxhWzE3MisoYz0wfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOnApKzQwPj4yXSk+PjJdKT4+Ml0pPzB8bDAoZiw4KyhhW2MrMTc2''@;'; put 'put ''Pj4yXTw8Mil8MCk6MHxRbig4KyhhW2MrMTc2Pj4yXTw8Mil8MCksYVsxNzIrKDB8YVsxNisoMHxhWygyPT0oMyZhW20+PjJdfDApP206cCkrNDA+PjJdKT4+Ml0pPj4yXT1jLGM9MHxhWzE3MisoYj0wfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOnApKzQwPj4yXSk+PjJdKT4+Ml0s''@;'; put 'put ''YVsoYj1iKzE3NnwwKT4+Ml09MSsoZj0wfGFbYj4+Ml0pLGFbYysoZjw8Mik+PjJdPW0sYVsoMHxhWzE3MisocD0wfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOnApKzQwPj4yXSk+PjJdKT4+Ml0pKyhhW3ArMTc2Pj4yXTw8Mik+PjJdPTAsbT0wfGswKGwsbSk7QT0wfHp0KGwsQSl9''@;'; put 'put ''fShBKSwwfGMmJihBVShBKSxnVShBKSksVVUoQSwxLHAsZj0oZj0wfExpKGwsMTAyNTg2KSk/MHxlMyhmKTotMSksZnVuY3Rpb24gejBlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO1R0WzIzNisoUj0wfGFbKEQ9MTYrKGx8PTApfDAp''@;'; put 'put ''Pj4yXSk+PjFdPTMyNzY3LFR0W1IrMjM4Pj4xXT0tMTtlOmRve2lmKCgwfGYpPjEpZm9yKG09MHxtcig0KyhmPDwyKXwwKSxwPWYrMXwwLGY9MTs7KXtpZigoMHxmKT09KDB8cCkpe009bSxSPW07YnJlYWsgZX1hW20rKGY8PDIpPj4yXT0zMjc2NyxmPWYrMXwwfWVsc2UgTT0wLFI9MH13aGls''@;'; put 'put ''ZSgwKTtmb3IoQT0wPT0oMHxNKSxtPTB8THQobCk7bTspdz0wfGFbMTYrKDB8YVsxNDgrKDB8YVsxNisoMHx6MyhtKSk+PjJdKT4+Ml0pPj4yXSxhWzIzMisoaz0wfGFbbSsxNj4+Ml0pPj4yXT1iPTB8YVt3KzIzMj4+Ml0sKDB8Yik+KDB8VHRbKHA9MjM4KyhmPTB8YVtEPj4yXSl8MCk+PjFd''@;'; put 'put ''KSYmKFR0W3A+PjFdPWIpLCgwfGIpPCgwfFR0WyhmPWYrMjM2fDApPj4xXSkmJihUdFtmPj4xXT1iKSxBfHwoYVtrKzEyOD4+Ml09dz0wfGFbdysxMjg+PjJdLGFbKGs9TSsodzw8Mil8MCk+PjJdPSgwfCh3PTB8YVtrPj4yXSkpPCgwfGIpP3c6YiksbT0wfHp0KGwsbSk7dz0wIT0oMHxNKTtl''@;'; put 'put ''OmRve2lmKHcpZm9yKGY9MHxMdChsKTs7KXtpZighZil7Zj0xO2JyZWFrIGV9YVsoRD0yMzIrKGs9MHxhW2YrMTY+PjJdKXwwKT4+Ml09KDB8YVtEPj4yXSktKDB8YVtNKyhhW2srMTI4Pj4yXTw8Mik+PjJdKSxmPTB8enQobCxmKX1lbHNlIGlmKE09MHxUdFsyMzYrKDB8YVtEPj4yXSk+PjFd''@;'; put 'put ''LHA9TTw8MTY+PjE2LE08PDE2Pj4xNj4wKXtmb3IoZj0wfEx0KGwpO2Y7KWFbKE09MjMyKygwfGFbZisxNj4+Ml0pfDApPj4yXT0oMHxhW00+PjJdKS1wLGY9MHx6dChsLGYpO1R0WyhEPTIzNisoZj0wfGFbRD4+Ml0pfDApPj4xXT0oMHxhcltEPj4xXSktcCxUdFsoZj1mKzIzOHwwKT4+MV09''@;'; put 'put ''KDB8YXJbZj4+MV0pLXAsZj0wfWVsc2UgZj0wfXdoaWxlKDApO2Zvcih6SChsLGYpLEE9MHxMdChjKTtBOykobT0wfGFbMTcyKyhmPTB8YVsocD1BKzE2fDApPj4yXSk+PjJdKSYmKEh0KG0pLGY9MHxhW3A+PjJdKSwwfChmPTB8YVtmKzE4MD4+Ml0pJiZIdChmKSxBPTB8enQoYyxBKTtmb3Io''@;'; put 'put ''SHQoMHxhWzExMisoMHxhWzE2KygwfEx0KGwpKT4+Ml0pPj4yXSksZj0wfEx0KGwpO2Y7KWFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXT0wLGY9MHx6dChsLGYpO3cmJkh0KFIpfShsLEEsbSksUTEoQSksb2U9d30obCxjKSk6TkgobCxjKSxvZT1wfWZ1bmN0aW9uIE5IKGwsYyl7Y3w9MDt2YXIg''@;'; put 'put ''cCxtLEEsZj0wLHc9MCxiPTA7QT1vZSxvZT1vZSszMnwwLG09QSsxNnwwLHA9QSs4fDAsZj1BLFZIKGx8PTApO2Rve2lmKGMpe2lmKEFVKGwpLGdVKGwpLFBJKGwsbCksWEgobCksakgoZixsKSxmPTB8YVsoYj1mKSs0Pj4yXSxhWyh3PXApPj4yXT1hW2I+PjJdLGFbdys0Pj4yXT1mLEw3KGws''@;'; put 'put ''MCksKDB8YVsyMjArKHc9MHxhW2wrMTY+PjJdKT4+Ml0pPD0xJiYoMHxhW3crMTgwPj4yXSk8PTApYnJlYWs7YVtjKzMyPj4yXT0xLGM9MH1lbHNlIFBJKGwsbCksWEgobCksakgoZixsKSxmPTB8YVsodz1mKSs0Pj4yXSxhWyhjPXApPj4yXT1hW3c+PjJdLGFbYys0Pj4yXT1mLEw3KGwsMCks''@;'; put 'put ''Yz0wfXdoaWxlKDApOyhmdW5jdGlvbiBLMGUobCl7dmFyIHAsYz0wLGY9MCxtPTA7Zm9yKHA9MTYrKGx8PTApfDAsZj0wOyEoKDB8Zik+PSgwfGFbMjIwKyhsPTB8YVtwPj4yXSk+PjJdKSk7KXtmb3IoYVtsKzE5Mj4+Ml09Yz0wfGFbKDB8YVtsKzIxNj4+Ml0pKyhmPDwyKT4+Ml0sYz1sPWM7''@;'; put 'put ''YzspdWVbMTU3KyhtPTB8YVtjKzE2Pj4yXSk+PjBdPTAsYz0wfGFbbSsxNjQ+PjJdO2Zvcig7bDspcFUobCksbD0wfGFbMTY0KygwfGFbbCsxNj4+Ml0pPj4yXTtmPWYrMXwwfX0pKGwpLGFbbT4+Ml09YVtwPj4yXSxhW20rND4+Ml09YVtwKzQ+PjJdLDB8ZnVuY3Rpb24gSDBlKGwsYyl7Y3w9''@;'; put 'put ''MDt2YXIgYixmPTAscD0wLG09MCxBPTAsdz0wLGs9MCxNPTA7MD09KDB8YVsyMjgrKHc9MHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkmJjA9PSgwfGFbdysyMjQ+PjJdKT9jPTA6Zj0zO2U6ZG97aWYoMz09KDB8ZikpZm9yKG09MHxMdChsKSx3PWMrNHwwLEE9NjU1MzUmYVtjPj4yXSxj''@;'; put 'put ''PTA7Oyl7aWYoIW0pYnJlYWsgZTsoMHxtKT09KDB8bzEobSkpJiYoMD09KDB8YVsxODQrKGY9MHxhWyhwPW0rMTZ8MCk+PjJdKT4+Ml0pJiYhKDA9PSgwfChrPTB8YVsyMjgrKDB8YVtiPj4yXSk+PjJdKSl8KDB8bSk9PSgwfGspKSYmKGM9MHxrZihtLGssMCksVHRbMTcwKyhmPTB8YVtjKzE2''@;'; put 'put ''Pj4yXSk+PjFdPWFbdz4+Ml0sYVtmKzE1Nj4+Ml09MCxmPTB8YVtwPj4yXSksMD09KDB8YVtmKzE3Nj4+Ml0pJiYhKDA9PSgwfChNPTB8YVsyMjQrKDB8YVtiPj4yXSk+PjJdKSl8KDB8bSk9PSgwfE0pKSYmKGM9MHxrZihNLG0sMCksVHRbMTcwKyhwPTB8YVtjKzE2Pj4yXSk+PjFdPUEsYVtw''@;'; put 'put ''KzE1Nj4+Ml09MCkpLG09MHx6dChsLG0pfX13aGlsZSgwKTtyZXR1cm4gMCE9KDB8Yyl8MH0obCxtKSYmTDcobCwwKSxjP2Z1bmN0aW9uICQwZShsLGMpe3ZhciB3LGIsayxNLEssZj0wLHA9MCxtPTAsQT0wLEc9MDtmb3IoSz1vZSxvZT1vZSsxNnwwLGI9MHxhWzI0KyhjfD0wKT4+Ml0sZnVu''@;'; put 'put ''Y3Rpb24gcTBlKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO2ZvcihhWzQ2NzUyXT0wfFFuKDI0KigwfE5vKGx8PTApKXwwKSxhWzQ2NzUxXT0wLGM9MHxMdChsKTtjOylhWzEyMCsoMHxhW2MrMTY+PjJdKT4+Ml09LTEsYz0wfHp0KGwsYyk7Zm9y''@;'; put 'put ''KHc9MHxMdChsKTt3Oyl7Yj13KzE2fDA7ZG97aWYoMHxhWzIxNisoMHxhW2I+PjJdKT4+Ml0pe2lmKEE9MHxvMSh3KSwoMHwoZj0wfGFbMTIwKyhjPTB8YVsoaz1BKzE2fDApPj4yXSk+PjJdKSk+LTEpe209MHxhWyhBPTB8YVs0Njc1Ml0pKygyNCpmfDApPj4yXSxhWyhwPUErKDI0KmZ8MCkr''@;'; put 'put ''NHwwKT4+Ml09MSsoaz0wfGFbcD4+Ml0pLGFbbSsoazw8Mik+PjJdPXcsaz0wfGFbYj4+Ml0sX1soYj1BKygyNCpmfDApKzh8MCk+PjNdPStfW2I+PjNdKyArX1trKzMyPj4zXSxfWyhiPUErKDI0KmZ8MCkrMTZ8MCk+PjNdPShNPStfW2I+PjNdKTwoRD0rX1trKzQwPj4zXSk/RDpNLGFbaysx''@;'; put 'put ''MjA+PjJdPWY7YnJlYWt9Zj0wfG1yKGFbYysyMTY+PjJdPDwyKSxhWyhjPShwPTB8YVs0Njc1Ml0pKygyNCoobT0wfGFbNDY3NTFdKXwwKXwwKT4+Ml09ZixhW2Y+PjJdPUEsKDB8QSk9PSgwfHcpPyhfW3ArKDI0Km18MCkrOD4+M109K19bMzIrKDB8YVtrPj4yXSk+PjNdLGY9MSxjPXcpOihh''@;'; put 'put ''WzQrKDB8YVtjPj4yXSk+PjJdPXcsX1twKygyNCptfDApKzg+PjNdPStfWzMyKyhjPTB8YVtiPj4yXSk+PjNdKyArX1szMisoUj0wfGFbaz4+Ml0pPj4zXSxmPTIsYz0rX1tSKzQwPj4zXTwrX1tjKzQwPj4zXT93OkEpLGFbcCsoMjQqbXwwKSs0Pj4yXT1mLF9bcCsoMjQqbXwwKSsxNj4+M109''@;'; put 'put ''K19bNDArKDB8YVtjKzE2Pj4yXSk+PjNdLGFbMTIwKygwfGFbaz4+Ml0pPj4yXT1tLGFbMTIwKygwfGFbYj4+Ml0pPj4yXT1tLGFbNDY3NTFdPW0rMX1lbHNlIG09MHxtcig0KSxhWyhBPTB8YVs0Njc1Ml0pKygyNCooaz0wfGFbNDY3NTFdKXwwKT4+Ml09bSxhW20+PjJdPXcsYVtBKygyNCpr''@;'; put 'put ''fDApKzQ+PjJdPTEsX1tBKygyNCprfDApKzg+PjNdPStfWzMyKyhiPTB8YVtiPj4yXSk+PjNdLF9bQSsoMjQqa3wwKSsxNj4+M109K19bYis0MD4+M10sYVtiKzEyMD4+Ml09ayxhWzQ2NzUxXT1rKzF9d2hpbGUoMCk7dz0wfHp0KGwsdyl9fShsfD0wKSxNPWMrOHwwLHc9MV4oaz0tMT09KDB8''@;'; put 'put ''YikpLG09MTc5NzY5MzEzNDg2MjMxNTdlMjkyLEE9MDtrfCgwfEEpPCgwfGIpOyl7Zm9yKGY9MHxMdChsKTtmOylhWzIzMisoMHxhW2YrMTY+PjJdKT4+Ml09MCxmPTB8enQobCxmKTtpZihGSChsKSxwPStVSChsKSxfW00+PjNdPXAsISghKHA8PStfW2M+PjNdKSYoIShtPD1wKXx3KSkpe0c9''@;'; put 'put ''OTticmVha31lb2UobCksbT1wLEE9QSsxfDB9OT09KDB8RykmJihhW2MrMTY+PjJdPWFbKEc9YysyMHwwKT4+Ml0sYVtHPj4yXT1BKSxGSChsKSxpayhsKSxmdW5jdGlvbiBtVSgpe3ZhciBNLEQsbD0wLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsUj0wO2ZvcihNPTB8YVs0Njc0''@;'; put 'put ''OV0sRD0wfGFbNDY3NTBdLGs9MCxjPTAsbD0wOyEoKDB8ayk+PSgwfE0pKTspe2Y9RCsoNDAqa3wwKXwwLGI9MHxhW0QrKDQwKmt8MCkrMTI+PjJdLHA9MD09KDB8Yyk7ZTpkb3tpZihiKXtpZihwKWM9MDtlbHNlIGlmKCgwfGFbZj4+Ml0pPigwfGwpKWZvcihtPUQrKDQwKmt8MCkrNHwwLGY9''@;'; put 'put ''MDs7KXtpZigoMHxmKT49KDB8YikpYnJlYWsgZTtmb3Iodz0wfGFbNCsoQT0wfGFbKDB8YVttPj4yXSkrKGY8PDIpPj4yXSk+PjJdLHA9MDshKCgwfHApPj0oMHx3KSk7KWFbKFI9MjMyKygwfGFbMTYrKDB8YVsoMHxhW0E+PjJdKSsocDw8Mik+PjJdKT4+Ml0pfDApPj4yXT0oMHxhW1I+PjJd''@;'; put 'put ''KS1jLHA9cCsxfDA7Zj1mKzF8MH19ZWxzZSBwJiYobD0wfGFbZj4+Ml0pLGM9YysxfDB9d2hpbGUoMCk7az1rKzF8MH19KCksX1tNPj4zXT0rVUgobCksb2U9S30obCxjKTpGSChsKSxmdW5jdGlvbiBlayhsLGMpe2N8PTA7dmFyIGIsZj0wLHA9MCxtPTAsQT0wLHc9MDtwPTB8THQobHw9MCks''@;'; put 'put ''Zj0wfGFbKGI9bCsxNnwwKT4+Ml07ZTpkb3tpZihwKXtmb3IoVHRbZisyMzY+PjFdPTMyNzY3LFR0W2YrMjM4Pj4xXT0tMSx3PTA9PSgwfGMpO3A7KXtmPTB8bzEocCksYz0wfGFbMjMyKyhBPTB8YVtwKzE2Pj4yXSk+PjJdO2Rve2lmKCgwfGYpIT0oMHxwKSl7aWYoIXcpe2lmKGMpYnJlYWs7''@;'; put 'put ''Yz0wfWFbQSsyMzI+PjJdPWM9YysoMHxhWzIzMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDB9fXdoaWxlKDApO3N3aXRjaCgoMHxjKT4oMHxUdFsobT0yMzgrKGY9MHxhW2I+PjJdKXwwKT4+MV0pJiYoVHRbbT4+MV09YyksKDB8Yyk8KDB8VHRbKGY9ZisyMzZ8MCk+PjFdKSYmKFR0W2Y+PjFdPWMp''@;'; put 'put ''LDB8dWVbQSsxNTk+PjBdKXtjYXNlIDY6Y2FzZSAwOmJyZWFrO2RlZmF1bHQ6cVEocCl9cD0wfHp0KGwscCl9aWYoKDB8VjAobCkpPT0oMHxsKSl7aWYoMTAwIT0oMHxhWzQ3MTM1XSkpe04wZShsKTticmVha31mb3IoYz0xOzspe2lmKCgwfGMpPigwfGFbMTgwKyhmPTB8YVtiPj4yXSk+PjJd''@;'; put 'put ''KSlicmVhayBlO2xVKDB8YVsoMHxhW2YrMTg0Pj4yXSkrKGM8PDIpPj4yXSksYz1jKzF8MH19fWVsc2UgVHRbZisyMzg+PjFdPTAsVHRbZisyMzY+PjFdPTB9d2hpbGUoMCl9KGwsYyksZnVuY3Rpb24gRkkobCl7dmFyIGIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsaz0wLE09MCxEPTA7Zm9y''@;'; put 'put ''KGI9MTYrKGx8PTApfDAsZj0wOyEoKDB8Zik+PSgwfGFbMjIwKyhjPTB8YVtiPj4yXSk+PjJdKSk7KXtmb3IoYVtjKzE5Mj4+Ml09dz0wfGFbKDB8YVtjKzIxNj4+Ml0pKyhmPDwyKT4+Ml0sYz13O2M7KVQ3KDE3MisoMHxhWyh3PWMrMTZ8MCk+PjJdKXwwKSxUNygxODArKDB8YVt3Pj4yXSl8''@;'; put 'put ''MCksdWVbMTU3Kyh3PTB8YVt3Pj4yXSk+PjBdPTAsYz0wfGFbdysxNjQ+PjJdO2Y9ZisxfDB9Zm9yKHc9MHxMdChsKTt3Oyl7Zm9yKEE9MHx5MChsLHcpO0E7KXtpZigwIT0oMHwobT0wfGFbMTcyKyhjPTB8YVsocD1BKzE2fDApPj4yXSk+PjJdKSkmJigwfEEpPT0oMHxhWzExNisoMHxhWyhr''@;'; put 'put ''PW0rMTZ8MCk+PjJdKT4+Ml0pKXtmb3IoYz0wfEx0KGwpO2M7KXtmb3IoZj0wfHkwKGwsYyk7ZjspKDB8QSkhPSgwfGYpJiYwIT0oMHwoRD0wfGFbKE09MTcyKygwfGFbZisxNj4+Ml0pfDApPj4yXSkpJigwfG0pPT0oMHxEKSYmKGFbTT4+Ml09MCksZj0wfGswKGwsZik7Yz0wfHp0KGwsYyl9''@;'; put 'put ''SHQoMHxhW2s+PjJdKSxIdChtKSxjPTB8YVtwPj4yXX1hW2MrMTcyPj4yXT0wLEE9MHxrMChsLEEpfXc9MHx6dChsLHcpfUh0KDB8YVsyMTYrKDB8YVtiPj4yXSk+PjJdKSxhWzIxNisoRD0wfGFbYj4+Ml0pPj4yXT0wLGFbRCsyMjA+PjJdPTB9KGwpLG9lPUF9ZnVuY3Rpb24gVkgobCl7dmFy''@;'; put 'put ''IGM9MCxmPTAscD0wO2lmKDEmdWVbMTEzKygwfGFbMTYrKDB8YVs2MCsobHw9MCk+PjJdKT4+Ml0pPj4wXSl7Zm9yKGY9MHxMdChsKTtmOyl7Zm9yKGM9MHx5MChsLGYpO2M7KVR0WyhwPTE3MCsoMHxhW2MrMTY+PjJdKXwwKT4+MV09KDB8YXJbcD4+MV0pPDwxLGM9MHxrMChsLGMpO2Y9MHx6''@;'; put 'put ''dChsLGYpfWFbKHA9MjUyKygwfGFbbCsxNj4+Ml0pfDApPj4yXT0oMSsoMHxhW3A+PjJdKXwwKS8yfDB9fWZ1bmN0aW9uIFBJKGwsYyl7bHw9MDt2YXIgZj0wO2ZvcihjPTB8d3MoY3w9MCk7Yzspe2Y9MHxXdmUoYyk7ZG97aWYoZil7aWYoNz09KDB8ZikmMTAwPT0oMHxhWzQ3MTM1XSkpe0hJ''@;'; put 'put ''KGwsYyk7YnJlYWt9WXZlKGwsYyxmKTticmVha31QSShsLGMpfXdoaWxlKDApO2M9MHxicyhjKX19ZnVuY3Rpb24gakgobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7Yz0wfGFbMjI4KyhmPTB8YVsodz0xNisoY3w9MCl8MCk+PjJdKT4+Ml0scD0wPT0oMHwoZj0w''@;'; put 'put ''fGFbZisyMjQ+PjJdKSksYz9tPXA/NTo0OnA/KGI9MCxrPTApOm09NCw0PT0oMHxtKSYmKGM9MHxvMShmKSxhWzIyNCsoZj0wfGFbdz4+Ml0pPj4yXT1jLChjPTB8YVtmKzIyOD4+Ml0pP209NTooQT0wLGM9ZixtPTEyKSk7ZG97aWYoNT09KDB8bSkpaWYoYz0wfG8xKGMpLGFbMjI4KyhmPTB8''@;'; put 'put ''YVt3Pj4yXSk+PjJdPWMsYyl7Zm9yKHA9NT09KDB8dWVbMTU5KyhjPTB8YVsoZj1jKzE2fDApPj4yXSk+PjBdKSYxOzspe2lmKCEoYz0wfGFbYVtjKzE4MD4+Ml0+PjJdKSl7bT0xMTticmVha31pZigoMHwoQT0wfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pKSE9KDB8''@;'; put 'put ''bzEoQSkpKXttPTk7YnJlYWt9WUgoYyksYz0wfGFbZj4+Ml19aWYoOT09KDB8bSkpQnIoODcwOTQsODcwMzQsMzQ2LDg3MTI2KTtlbHNlIGlmKDExPT0oMHxtKSl7QT1wLGM9MHxhW3c+PjJdLG09MTI7YnJlYWt9fWVsc2UgQT0wLGM9ZixtPTEyfXdoaWxlKDApO2U6ZG97aWYoMTI9PSgwfG0p''@;'; put 'put ''KWlmKGM9MHxhW2MrMjI0Pj4yXSxjKXtmb3IocD0zPT0oMHx1ZVsxNTkrKGM9MHxhWyhmPWMrMTZ8MCk+PjJdKT4+MF0pJjE7Oyl7aWYoIShjPTB8YVthW2MrMTcyPj4yXT4+Ml0pKXtiPXAsaz1BO2JyZWFrIGV9aWYoKDB8KHc9MHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+''@;'; put 'put ''Ml0pKSE9KDB8bzEodykpKWJyZWFrO1lIKGMpLGM9MHxhW2Y+PjJdfUJyKDg3MTM5LDg3MDM0LDM1Myw4NzEyNil9ZWxzZSBiPTAsaz1BfXdoaWxlKDApO2FbbD4+Ml09YixhW2wrND4+Ml09a31mdW5jdGlvbiBUNyhsKXt2YXIgZixjPTA7Zm9yKGM9MHxhWyhmPTQrKGx8PTApfDApPj4yXTsh''@;'; put 'put ''KCgwfGMpPD0tMSk7KWFbKDB8YVtsPj4yXSkrKGM8PDIpPj4yXT0wLGM9YystMXwwO2FbZj4+Ml09MH1mdW5jdGlvbiBsVShsKXt2YXIgYyxwLGY9MDtmb3IoVHRbKGw9MjM2KyhmPTB8YVsoYz0xNisobHw9MCl8MCk+PjJdKXwwKT4+MV09KHA9MHxhWzIzMisoMHxhWzE2KygwfGFbZisyNjQ+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXSkrKDB8YXJbbD4+MV0pLFR0WyhsPWYrMjM4fDApPj4xXT1wKygwfGFyW2w+PjFdKSxsPTE7ISgoMHxsKT4oMHxhW2YrMTgwPj4yXSkpOylsVSgwfGFbKDB8YVtmKzE4ND4+Ml0pKyhsPDwyKT4+Ml0pLGw9bCsxfDAsZj0wfGFbYz4+Ml19ZnVuY3Rpb24gTjBlKGwpe3Zh''@;'; put 'put ''ciBjPTA7Zm9yKGM9MHx3cygwfFYwKGx8PTApKTtjOyk3PT0oMHx1ZVsyNzQrKDB8YVtjKzE2Pj4yXSk+PjBdKSYmSEkobCxjKSxjPTB8YnMoYyl9ZnVuY3Rpb24gSEkobCxjKXt2YXIgZjtsfD0wLGY9MjAwKygwfGFbMTYrKGN8PTApPj4yXSl8MDtkb3tpZigwPT0oMHxhW2Y+PjJdKSYmKGFb''@;'; put 'put ''Zj4+Ml09bCxaSChsLGMpLDB8THQoYykpKXtpZihWMGUobCxjKSwxMDA9PSgwfGFbNDcxMzVdKSl7TkgoYywwKSxHdmUoYyk7YnJlYWt9eXkoYyk7YnJlYWt9fXdoaWxlKDApfWZ1bmN0aW9uIFpIKGwsYyl7dmFyIEEsZj0wLHA9MCxtPTAsdz0wLGI9MCxrPTA7Zm9yKEE9MTYrKGx8PTApfDAs''@;'; put 'put ''bT0wfEx0KGN8PTApO207KWlmKHc9MHx6dChjLG0pLDB8dWVbMTU5KygwfGFbKGI9bSsxNnwwKT4+Ml0pPj4wXSluaShjLG0pLG09dztlbHNle2ZvcihwPTE7ISgoMHxwKT49KDB8KGw9MHxhWzE4MCsoZj0wfGFbQT4+Ml0pPj4yXSkpKTspe2lmKDB8SHIoMHxhWygwfGFbZisxODQ+PjJdKSso''@;'; put 'put ''cDw8Mik+PjJdLG0pKXtrPTc7YnJlYWt9cD1wKzF8MH03PT0oMHxrKSYmKGs9MCxsPTB8YVsxODArKDB8YVtBPj4yXSk+PjJdKSwoMHxwKTwoMHxsKSYmbmkoYyxtKSxhWzIxMisoMHxhW2I+PjJdKT4+Ml09MCxtPXd9Zm9yKGY9MHxMdChjKTtmOyl7Zm9yKGw9MHx5MCgwfFYwKGMpLGYpO2w7''@;'; put 'put ''KTB8SHIoYywwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pJiZPZChjLGwsMSksbD0wfGswKDB8VjAoYyksbCk7Zj0wfHp0KGMsZil9fWZ1bmN0aW9uIFYwZShsLGMpe2N8PTA7dmFyIHAsbSxBLGY9MDthWyhBPTE4MCsoZj0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSl8''@;'; put 'put ''MCk+PjJdPW09MSsobD0wfGFbQT4+Ml0pfDAsbD0oZj0wfGFbZisxODQ+PjJdKT8wfEdoKGYsbCsyfDAsNCxtKTowfG1yKDgrKGw8PDIpfDApLGFbMTg0KygwfGFbcD4+Ml0pPj4yXT1sLGFbbCsobTw8Mik+PjJdPWMsdUQoYyl9ZnVuY3Rpb24gR3ZlKGwpe3ZhciBtLGM9MCxmPTAscD0wLEE9''@;'; put 'put ''MDtmb3IoYz0xOTIrKG09MHxhWzE2KyhsfD0wKT4+Ml0pfDAsQT0wO2M9MHxhW2M+PjJdOylmPTB8YVsyMzIrKHA9MHxhW2MrMTY+PjJdKT4+Ml0/QTowPT0oMHx1ZVtwKzE1Nj4+MF0pP2M6QSxjPXArMTY0fDAsQT1mO2ZvcihBfHxCcig4NzAxOSw4NzAzNCwyMzgsODcwNDEpLGFbbSsyNjQ+''@;'; put 'put ''PjJdPUEsYz0wfEx0KGwpOzspe2lmKCFjKXtjPTEzO2JyZWFrfWlmKGY9YysxNnwwLCEoKDB8Yyk9PSgwfEEpfHwoMHxhWzIxNisoMHxhW2Y+PjJdKT4+Ml0pPDIpKXtjPTExO2JyZWFrfU1EKGMsQSksdWVbMTU5KygwfGFbZj4+Ml0pPj4wXT03LGM9MHx6dChsLGMpfWlmKDExPT0oMHxjKSlC''@;'; put 'put ''cig4NzA1Niw4NzAzNCwyNDIsODcwNDEpO2Vsc2UgaWYoMTM9PSgwfGMpKXJldHVybn1mdW5jdGlvbiBXdmUobCl7dmFyIGM9MDtyZXR1cm4gMHxOSShsfD0wKT9sPTc6KGM9MHxRTigwfExpKGwsODcxNzEpLDE3MzU2LDE3MzgwKSx1ZVsyNzQrKDB8YVtsKzE2Pj4yXSk+PjBdPWMsbD1jKSww''@;'; put 'put ''fGx9ZnVuY3Rpb24gWXZlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTA7bT0wfEx0KGN8PTApO2U6ZG97aWYoMHxtKXtmb3Iodz1tKzE2fDAscD1tLEE9Yj0yNTUmZjt1ZVsxNTkrKDB8YVtwKzE2Pj4yXSk+PjBdPUEscD0wfHp0KGMscCk7KU1EKG0scCksQT0wfHVl''@;'; put 'put ''WzE1OSsoMHxhW3c+PjJdKT4+MF07c3dpdGNoKDB8Zil7Y2FzZSAzOmNhc2UgMjooQT0wfGFbMjI0KyhwPTB8YVsobD1sKzE2fDApPj4yXSk+PjJdKSYmKG09MHxNRChBLG0pLHA9MHxhW2w+PjJdKSxhW3ArMjI0Pj4yXT1tO2JyZWFrO2Nhc2UgNTpjYXNlIDQ6KEE9MHxhWzIyOCsocD0wfGFb''@;'; put 'put ''KGw9bCsxNnwwKT4+Ml0pPj4yXSkmJihtPTB8TUQoQSxtKSxwPTB8YVtsPj4yXSksYVtwKzIyOD4+Ml09bTticmVhaztkZWZhdWx0OmJyZWFrIGV9c3dpdGNoKDB8Zil7Y2FzZSAzOnA9cCsyMjR8MDticmVhaztjYXNlIDU6cD1wKzIyOHwwO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX11ZVsxNTkr''@;'; put 'put ''KDB8YVsxNisoMHxhW3A+PjJdKT4+Ml0pPj4wXT1ifX13aGlsZSgwKX1mdW5jdGlvbiBOSShsKXtyZXR1cm4gMD09KDB8bjIoMHwkcihsfD0wKSwxMDgwMDYsNykpfDB9ZnVuY3Rpb24gc1UobCxjKXtjfD0wO3ZhciBtLE0sZj0wLHA9MCxBPTAsdz0wLGI9MCxrPTA7aWYoTT1vZSxvZT1vZSsx''@;'; put 'put ''NnwwLG09TSwhKDB8ZnVuY3Rpb24gVTBlKGwpe3JldHVybiAwPT0oMHxMdChsfD0wKSl8MH0obHw9MCkpKXtkb3tpZigwfENrKGwpKXtpZihjKXthWzIwNCsoMHxhW2wrMTY+PjJdKT4+Ml09MSsoMHxhWzIwNCsoMHxhW2MrMTY+PjJdKT4+Ml0pLFEwZShsLGMpLGM9bDticmVha31hWzIwNCso''@;'; put 'put ''MHxhW2wrMTY+PjJdKT4+Ml09MCxjPWw7YnJlYWt9fXdoaWxlKDApO2ZvcihmPTB8d3MobCk7Zjspc1UoZixjKSxmPTB8YnMoZik7ZTpkb3tpZigwfENrKGwpKWZvcihmPTB8THQobCk7Oyl7aWYoIWYpYnJlYWsgZTswfGFbKHA9MjEyKygwfGFbZisxNj4+Ml0pfDApPj4yXXx8KGFbcD4+Ml09''@;'; put 'put ''bCksZj0wfHp0KGwsZil9fXdoaWxlKDApO3N3aXRjaCgwfGZ1bmN0aW9uIEowZShsKXt2YXIgYz0wO3JldHVybiAwIT0oMHwobD0wfExpKGx8PTAsODcxNzEpKSkmJjAhPSgwfHVlW2w+PjBdKT8wfFppKGwsODcxODEpPzB8WmkobCw4NzE4NSk/MHxaaShsLDg3MTkyKT8wfFppKGwsODcxOTYp''@;'; put 'put ''PzB8WmkobCw4NzE3Nik/Yz04Omw9MTpsPTU6bD00Omw9MzpsPTI6Yz04LDg9PSgwfGMpJiYobD02KSwwfGx9KGwpKXtjYXNlIDM6dWVbMjQxKygwfGFbKGM9YysxNnwwKT4+Ml0pPj4wXT0xLGs9MTk7YnJlYWs7Y2FzZSAyOmM9YysxNnwwLGs9MTk7YnJlYWs7Y2FzZSA1OnVlWzI0MisoMHxh''@;'; put 'put ''WyhjPWMrMTZ8MCk+PjJdKT4+MF09MSxrPTIxO2JyZWFrO2Nhc2UgNDpjPWMrMTZ8MCxrPTIxO2JyZWFrO2Nhc2UgMTpqSShsKTticmVhaztjYXNlIDY6YnJlYWs7ZGVmYXVsdDpmPTB8JHIobCkscD0wfExpKGwsODcxNzEpLGFbbT4+Ml09ZixhW20rND4+Ml09cCxYcigwLDg3MzU0LG0pfTE5''@;'; put 'put ''PT0oMHxrKT8oaz0wfGZVKGs9MHxqSShsKSwwfGFbMjA4KygwfGFbYz4+Ml0pPj4yXSksYVsyMDgrKDB8YVtjPj4yXSk+PjJdPWspOjIxPT0oMHxrKSYmKGs9MHxmVShrPTB8akkobCksMHxhWzIxMisoMHxhW2M+PjJdKT4+Ml0pLGFbMjEyKygwfGFbYz4+Ml0pPj4yXT1rKSwwfENrKGwpJiYw''@;'; put 'put ''fChiPTB8YVsyMDgrKHc9MHxhWyhBPWwrMTZ8MCk+PjJdKT4+Ml0pJiYoMHxiKT09KDB8YVt3KzIxMj4+Ml0pJiYoYj0wfGpJKGwpLGFbMjA4KyhrPTB8YVtBPj4yXSk+PjJdPWIsYVtrKzIxMj4+Ml09Yil9b2U9TX1mdW5jdGlvbiBWSShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbT0w''@;'; put 'put ''LEE9MDtpZigwIT0oMHxDayhsfD0wKSkmJjAhPSgwfEdIKGwpKSl7Zm9yKEE9MHxMdChsKTtBOykwfHdmKGwsQSl8fChtPTB8YVsxNDgrKDB8YVsxNisoMHx6MyhBKSk+PjJdKT4+Ml0sZnx8KGY9MHxuayhjLDg3MjUyKSkscmwoYyxmLG0sMCwxKSksMHx5MChsLEEpfHwobT0wfGFbMTQ4Kygw''@;'; put 'put ''fGFbMTYrKDB8ejMoQSkpPj4yXSk+PjJdLHB8fChwPTB8bmsoYyw4NzI1NykpLHJsKGMsbSxwLDAsMSkpLEE9MHx6dChsLEEpOzAhPSgwfHApJjAhPSgwfGYpJiZJNygwfHJsKGMsZixwLDAsMSksMCwxZTMpLG09Zn1lbHNlIG09Zjtmb3IoZj0wfHdzKGwpO2Y7KVZJKGYsYyxtLHApLGY9MHxi''@;'; put 'put ''cyhmKX1mdW5jdGlvbiB6MyhsKXt2YXIgYyxmLHA9MDtpZihwPTB8YVsoZj0xNTIrKDB8YVsoYz0xNisobHw9MCl8MCk+PjJdKXwwKT4+Ml0pe2lmKCgwfHApIT0oMHxsKSlyZXR1cm4gcD0wfHozKHApLGFbMTUyKygwfGFbYz4+Ml0pPj4yXT1wLDB8cH1lbHNlIGFbZj4+Ml09bDtyZXR1cm4g''@;'; put 'put ''MHxsfWZ1bmN0aW9uIHpIKGwsYyl7Y3w9MDt2YXIgdyxmPTAscD0wLG09MCxBPTA7Zm9yKHc9MTYrKGx8PTApfDAsZj0xOyEoKDB8Zik+KDB8YVsxODArKHA9MHxhW3c+PjJdKT4+Ml0pKTspekgoMHxhWygwfGFbcCsxODQ+PjJdKSsoZjw8Mik+PjJdLDApLGY9ZisxfDA7aWYoMCE9KDB8Yyl8''@;'; put 'put ''MCE9KDB8YVtwKzIwMD4+Ml0pKXtmb3IoVHRbcCsyMzY+PjFdPTMyNzY3LFR0W3ArMjM4Pj4xXT0tMSxmPTAsQT0wfEx0KGwpO0E7KSgwfChtPTB8YVsyMzIrKDB8YVtBKzE2Pj4yXSk+PjJdKSk+KDB8VHRbKHA9MjM4KyhjPTB8YVt3Pj4yXSl8MCk+PjFdKSYmKFR0W3A+PjFdPW0pLCgwfG0p''@;'; put 'put ''PCgwfFR0WyhjPWMrMjM2fDApPj4xXSkmJihUdFtjPj4xXT1tLGY9QSksQT0wfHp0KGwsQSk7YVsyNjQrKDB8YVt3Pj4yXSk+PjJdPWZ9fWZ1bmN0aW9uIHd5KGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MDtwPTEyOCsoMHxhWzE2KyhjfD0wKT4+Ml0pfDA7ZTpkb3tpZighKDB8YVtwPj4yXSkp''@;'; put 'put ''e2ZvcihhW3A+PjJdPWYscD0wfHkwKGwsYyk7cDspd3kobCwwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0sZikscD0wfGswKGwscCk7Zm9yKHA9MHx3ZihsLGMpOzspe2lmKCFwKWJyZWFrIGU7d3kobCwwfGFbKDM9PSgzJmFbcD4+Ml18MCk/cDpwKzQ4fDApKzQwPj4y''@;'; put 'put ''XSxmKSxwPTB8TzMobCxwKX19fXdoaWxlKDApfWZ1bmN0aW9uIG5rKGwsYyl7dmFyIG0sZj0wLHA9MDtyZXR1cm4gbT0wfE1yKGx8PTAsY3w9MCwxKSxhWzE3NisoMHxhWyhjPW0rMTZ8MCk+PjJdKT4+Ml09MCxwPTB8bXIoMjApLGFbMTcyKyhmPTB8YVtjPj4yXSk+PjJdPXAsYVtmKzE4ND4+''@;'; put 'put ''Ml09MCxmPTB8bXIoMjApLGFbMTgwKyhjPTB8YVtjPj4yXSk+PjJdPWYscD1jKzE2OHwwLChmPTB8YVs0Njc0N10pPyhhW3A+PjJdPWYsYVsxNjQrKDB8YVtmKzE2Pj4yXSk+PjJdPW0pOihhW3A+PjJdPTAsYVsxOTIrKDB8YVtsKzE2Pj4yXSk+PjJdPW0pLGFbNDY3NDddPW0sYVtjKzE2ND4+''@;'; put 'put ''Ml09MCwwfG19ZnVuY3Rpb24gY1UobCxjKXtsfD0wO3ZhciBBLGY9MCxwPTAsbT0wO2lmKCEoMHx1ZVsocD0xNTcrKGY9MHxhWyhBPTE2KyhjfD0wKXwwKT4+Ml0pfDApPj4wXSkpe2Zvcih1ZVtwPj4wXT0xLHVlW2YrMTU4Pj4wXT0xLGM9MHx5MChsLGMpO2M7KWY9MHxrMChsLGMpLDB8dWVb''@;'; put 'put ''MTU4KyhtPTB8YVsxNisocD0wfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjBdPyhieShsLGMpLGM9Zik6KDB8dWVbbSsxNTc+PjBdfHxjVShsLHApLGM9Zik7dWVbMTU4KygwfGFbQT4+Ml0pPj4wXT0wfX1mdW5jdGlvbiBieShsLGMpe3ZhciBwLGY9MCxt''@;'; put 'put ''PTA7bT0oY3w9MCktNDh8MCxwPWMrNDh8MCwoZj0wfHJsKGx8PTAsMHxhWygyPT0oMHwoZj0zJmFbYz4+Ml0pKT9jOm0pKzQwPj4yXSwwfGFbKDM9PSgwfGYpP2M6cCkrNDA+PjJdLDAsMCkpfHwoZj0wfHJsKGwsMHxhWygyPT0oMHwoZj0zJmFbYz4+Ml0pKT9jOm0pKzQwPj4yXSwwfGFbKDM9''@;'; put 'put ''PSgwfGYpP2M6cCkrNDA+PjJdLDAsMSkpLEk3KGYsMHxhclsxNzArKG09MHxhW2MrMTY+PjJdKT4+MV0sMHxhW20rMTU2Pj4yXSksbmkobCxjKX1mdW5jdGlvbiBJNyhsLGMsZil7dmFyIHAsbTtmfD0wLFR0WyhwPTE3MCsobD0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjFdPSgwfChtPTB8YXJb''@;'; put 'put ''cD4+MV0pKT4oMHwoY3w9MCkpP206YyxhWyhjPWwrMTU2fDApPj4yXT0oMHxhW2M+PjJdKStmfWZ1bmN0aW9uIEdIKGwpe3JldHVybiAyNTUmKDB8SjYoMHxMaShsfD0wLDg3MjYyKSwwKSl8MH1mdW5jdGlvbiBHMGUobCl7bHw9MDt2YXIgYyxmPTA7cmV0dXJuIDB8KDAhPSgwfChjPTB8YVs0''@;'; put 'put ''NzE4OV0pKSYmMCE9KDB8KGY9MHxGbyhsLGMpKSkmJjAhPSgwfHVlW2Y+PjBdKSYmKDB8cjEoZikpPDwyND4+MjQ9PTA/MTowKX1mdW5jdGlvbiByayhsKXt2YXIgYyxmPTA7cmV0dXJuKDB8KGM9MHxhWzIxMisoMHxhWzE2KygwfGFbKDM9PSgwfChmPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4''@;'; put 'put ''fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT09KDB8KGw9MHxhWzIxMisoMHxhWzE2KygwfGFbKDI9PSgwfGYpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPzE6KGY9MHxmdW5jdGlvbiBZMGUobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wO2U6Zm9yKDs7KXtmb3IocD1sKzE2fDA7''@;'; put 'put ''Oyl7aWYoKDB8bCk9PSgwfGMpKWJyZWFrIGU7aWYoKDB8YVsyMDQrKG09MHxhW3A+PjJdKT4+Ml0pPj0oMHxhWzIwNCsoZj0wfGFbYysxNj4+Ml0pPj4yXSkpYnJlYWs7Yz0wfGFbZisyMDA+PjJdfWw9MHxhW20rMjAwPj4yXX1yZXR1cm4gMHxsfShjLGwpLDEmKCgwfGYpPT0oMHxjKXwoMHxm''@;'; put 'put ''KT09KDB8bCkpfDApfWZ1bmN0aW9uIF95KGwsYyxmLHApe3B8PTA7dmFyIEEsYixtPTAsdz0wO2I9b2Usb2U9b2UrMTZ8MCxBPWIsKG09MHxybChsfD0wLGN8PTAsZnw9MCwwLDApKXx8KG09MHxybChsLGYsYywwLDApKXx8KG09MHxybChsLGMsZiwwLDEpKT93PTQ6KGM9MHwkcihjKSxwPTB8''@;'; put 'put ''JHIoZiksYVtBPj4yXT1jLGFbQSs0Pj4yXT1wLFhyKDEsODcyNzksQSkpLDQ9PSgwfHcpJiZJNyhtLDB8YXJbMTcwKyh3PTB8YVtwKzE2Pj4yXSk+PjFdLDB8YVt3KzE1Nj4+Ml0pLG9lPWJ9ZnVuY3Rpb24gVzBlKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgayxtPTAsQT0wLHc9MCxiPTAsTT0w''@;'; put 'put ''O2ZvcihrPW9lLG9lPW9lKzExMnwwLHc9ayxBPWsrNHwwLG09MHx3ZihsfD0wLGN8PTApOzspe2lmKCFtKXtiPTY7YnJlYWt9aWYoMHwoTT0wfHkwKGwsMHxhWygzPT0oMyZhW20+PjJdfDApP206bSs0OHwwKSs0MD4+Ml0pKSYmKDB8YVsoMj09KDMmYVtNPj4yXXwwKT9NOk0rLTQ4fDApKzQw''@;'; put 'put ''Pj4yXSk9PSgwfGYpKWJyZWFrO209MHxPMyhsLG0pfTY9PSgwfGIpJiYoYVs0Njc0OF09MSsoTT0wfGFbNDY3NDhdKSxhW3c+PjJdPU0sYW8oQSw4NzI3MCx3KSxNPTB8cmwobCxBPTB8bmsobCxBKSxjLDAsMSksQT0wfHJsKGwsQSxmLDAsMSksYVsoTT0xNTYrKDB8YVtNKzE2Pj4yXSl8MCk+''@;'; put 'put ''PjJdPSgwfGFbTT4+Ml0pKygxZTMqKDB8YVsoYj0xNTYrKGY9MHxhW3ArMTY+PjJdKXwwKT4+Ml0pfDApLFR0Wyh3PTE3MCsoTT0wfGFbQSsxNj4+Ml0pfDApPj4xXT0wfFR0WzE3MCsoMHxhWygoMHxhclt3Pj4xXSk+KDB8YXJbZisxNzA+PjFdKT9BOnApKzE2Pj4yXSk+PjFdLGFbKE09TSsx''@;'; put 'put ''NTZ8MCk+PjJdPSgwfGFbTT4+Ml0pKygwfGFbYj4+Ml0pKSxvZT1rfWZ1bmN0aW9uIFEwZShsLGMpe2FbMjAwKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdPWN8PTAsVjBlKGMsbCksWkgoYyxsKX1mdW5jdGlvbiBqSShsKXt2YXIgYz0wLGY9MDtmPTB8THQobHw9MCk7ZTpkb3tpZihmKWZvcihj''@;'; put 'put ''PTB8ejMoZik7Oyl7aWYoIShmPTB8enQobCxmKSkpYnJlYWsgZTtmVShjLGYpfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gZlUobCxjKXtyZXR1cm4gbHw9MCwoY3w9MCkmJihsPTB8ejMobCksYVsxNTIrKDB8YVsxNisoMHx6MyhjKSk+PjJdKT4+Ml09bCksMHxsfWZ1''@;'; put 'put ''bmN0aW9uIEQ3KGwpe3ZhciBNLEQsRyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLFI9MDtHPW9lLG9lPW9lKzI0MHwwLE09RysxMjB8MCxEPUcsYVs0NzE5M109MHxzaShsfD0wLDIsODc0MTIsMCksaz0wfHNpKGwsMiw4NzQyMSwwKSxhWzQ3MTk0XT1rO2U6ZG97aWYoMCE9KDB8''@;'; put 'put ''ayl8MCE9KDB8YVs0NzE5M10pKWZvcihrPTB8THQobCk7Oyl7aWYoIWspYnJlYWsgZTtmb3IoYj0wLGM9MCx3PTB8RnMobCxrKTs7KXtpZighdyl7cD0wO2JyZWFrfXA9MHxhWygyPT0oMHwobT0zJihmPTB8YVt3Pj4yXSkpKT93OncrLTQ4fDApKzQwPj4yXSxBPXcrNDh8MDt0OmRve2lmKCgw''@;'; put 'put ''fHApIT0oMHxhWygzPT0oMHxtKT93OkEpKzQwPj4yXSkpe209MHxhWzQ3MTkzXTtkb3tpZigoMHxwKT09KDB8aykmMCE9KDB8bSkpe2lmKHA9MHxGbyh3LG0pLDB8dWVbcD4+MF0pe2Y9YixjPTB8aFUoTSxjLGssdyxwKTticmVhayB0fWY9MHxhW3c+PjJdO2JyZWFrfX13aGlsZSgwKTtmPTB8''@;'; put 'put ''KHA9MHxhWzQ3MTk0XSkmJigwfGFbKDM9PSgzJmZ8MCk/dzpBKSs0MD4+Ml0pPT0oMHxrKSYmKFI9MHxGbyh3LHApLDAhPSgwfHVlW1I+PjBdKSk/MHxoVShELGIsayx3LFIpOmJ9ZWxzZSBmPWJ9d2hpbGUoMCk7Yj1mLHc9MHxUcyhsLHcsayl9Zm9yKDs7KXtpZigoMHxwKT49KDB8Yykpe2Y9''@;'; put 'put ''MDticmVha31mPU0rKDI0KnB8MCkrNHwwLCgwfGFbTSsoMjQqcHwwKSs4Pj4yXSk+MSYmZFUoayxmKSwwfChmPTB8YVtmPj4yXSkmJkh0KGYpLHA9cCsxfDB9Zm9yKDshKCgwfGYpPj0oMHxiKSk7KWM9RCsoMjQqZnwwKSs0fDAsKDB8YVtEKygyNCpmfDApKzg+PjJdKT4xJiZkVShrLGMpLDB8''@;'; put 'put ''KGM9MHxhW2M+PjJdKSYmSHQoYyksZj1mKzF8MDtrPTB8enQobCxrKX19d2hpbGUoMCk7b2U9R31mdW5jdGlvbiBoVShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgayxNLFIsQT0wLHc9MCxiPTAsRD0wLEc9MCxLPTAscGU9MDtmb3IoUj1vZSxvZT1vZSsxNnwwLGI9''@;'; put 'put ''UixrPVIrMTJ8MCxNPVIrOHwwLEQ9MDs7KXtpZigoMHxEKT49KDB8Yykpe3c9MTA7YnJlYWt9aWYoKDB8dWVbKHc9MHxhW2wrKDI0KkR8MCk+PjJdKT4+MF0pPT0oMHx1ZVttPj4wXSkmJjA9PSgwfFppKHcsbSkpKXt3PTU7YnJlYWt9RD1EKzF8MH1kb3tpZig1PT0oMHx3KSkodz0wfGFbKGI9''@;'; put 'put ''bCsoMjQqRHwwKSs0fDApPj4yXSk/KG09Rz1sKygyNCpEfDApKzh8MCx3PTB8bDAodyw4KyhhW0c+PjJdPDwyKXwwKSk6KG09dz1sKygyNCpEfDApKzh8MCx3PTB8UW4oOCsoYVt3Pj4yXTw8Mil8MCkpLGFbYj4+Ml09dyxhW20+PjJdPUc9MSsoSz0wfGFbbT4+Ml0pfDAsYVt3KyhLPDwyKT4+''@;'; put 'put ''Ml09cCxhWygwfGFbYj4+Ml0pKyhHPDwyKT4+Ml09MCx3PTEzO2Vsc2UgaWYoMTA9PSgwfHcpKXtpZigoMHxjKT40KXtLPTB8JHIoZiksYVtiPj4yXT01LGFbYis0Pj4yXT1LLFhyKDEsODc0MzAsYik7YnJlYWt9YVsocGU9bCsoMjQqRHwwKSs4fDApPj4yXT0wLGI9MHxtcig4KSxhWyhLPWwr''@;'; put 'put ''KDI0KkR8MCkrNHwwKT4+Ml09YixhW3BlPj4yXT13PTErKEc9MHxhW3BlPj4yXSl8MCxhW2IrKEc8PDIpPj4yXT1wLGFbKDB8YVtLPj4yXSkrKHc8PDIpPj4yXT0wLGFbbCsoMjQqRHwwKT4+Ml09bSxhW2wrKDI0KkR8MCkrMTI+PjJdPTAsX1tsKygyNCpEfDApKzE2Pj4zXT0wLGM9YysxfDAs''@;'; put 'put ''dz0xMzticmVha319d2hpbGUoMCk7cmV0dXJuIDEzPT0oMHx3KSYmKE1DKHAsayxNKSwodz0oMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdKT09KDB8Zik/MHxhW00+PjJdOjB8YVtrPj4yXSkmJihhWyhLPWwrKDI0KkR8MCkrMTJ8MCk+PjJdPTErKHBlPTB8YVtLPj4y''@;'; put 'put ''XSksQT1wZT8wOitqZChwLHcpLF9bbCsoMjQqRHwwKSsxNj4+M109QSkpLG9lPVIsMHxjfWZ1bmN0aW9uIGRVKGwsYyl7dmFyIG1lLGJlLE9lLExlLEJlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsSGU9MDtmb3IoQmU9b2Usb2U9b2UrODB8''@;'; put 'put ''MCxtZT1CZSs2OHwwLGJlPUJlKzY0fDAsSz1CZSxNPTB8YVsoT2U9NCsoY3w9MCl8MCk+PjJdLExlPTE2KyhsfD0wKXwwLEE9MCxSPTAsRz0wOyEoKDB8QSk+PSgwfE0pKTspKDB8KGY9MHxhWygyPT0oMHwobT0zJmFbKHA9MHxhWygwfGFbYz4+Ml0pKyhBPDwyKT4+Ml0pPj4yXSkpP3A6cCst''@;'; put 'put ''NDh8MCkrNDA+PjJdKSk9PSgwfGwpJiYoZj0wfGFbKDM9PSgwfG0pP3A6cCs0OHwwKSs0MD4+Ml0pLEE9QSsxfDAsUj0oYj0rX1sxNisobT0wfGFbZisxNj4+Ml0pPj4zXS0rX1sxNisocGU9MHxhW0xlPj4yXSk+PjNdKS8oRD0raFMoYixrPStfW20rMjQ+PjNdLStfW3BlKzI0Pj4zXSkpK1Is''@;'; put 'put ''Rz1rL0QrRztmb3Iodz0raFMoUixHKSxiPStfWzE2KyhwZT0wfGFbTGU+PjJdKT4+M10saz0rX1twZSsyND4+M10scGU9KEhlPStfW3BlKzk2Pj4zXSsgK19bcGUrODg+PjNdKT4oRD0rX1twZSs4MD4+M10pKyArKDB8YVsyNTIrKDB8YVsxNisoMHxmcihsKSk+PjJdKT4+Ml0pLGY9MHxhW0xl''@;'; put 'put ''Pj4yXSxwZT9EPStfW2YrOTY+PjNdKyArX1tmKzg4Pj4zXTooRD0rX1tmKzgwPj4zXSxEKz0rKDB8YVsyNTIrKDB8YVsxNisoMHxmcihsKSk+PjJdKT4+Ml0pLGY9MHxhW0xlPj4yXSksSGU9K19bZisxNj4+M10rRCooUi93KSx3PStfW2YrMjQ+PjNdK0QqKEcvdyksX1tLPj4zXT1iLF9bKE09''@;'; put 'put ''Sys4fDApPj4zXT1rLF9bSysxNj4+M109LjMzMzMzMzMzMzMzMzMzMzMqKEhlKzIqYiksX1tLKzI0Pj4zXT0uMzMzMzMzMzMzMzMzMzMzMyoodysyKmspLF9bSyszMj4+M109LjMzMzMzMzMzMzMzMzMzMzMqKDIqSGUrYiksX1tLKzQwPj4zXT0uMzMzMzMzMzMzMzMzMzMzMyooMip3K2spLF9b''@;'; put 'put ''Sys0OD4+M109SGUsX1tLKzU2Pj4zXT13LGZ1bmN0aW9uIG5sZShsLGMpe2N8PTA7dmFyIGYscCxtLEEsdyxiLE0saz0wLEQ9MDtNPW9lLG9lPW9lKzQ4fDAsZj1NKzE2fDAscD1NLG09TSszMnwwLDB8KGI9MHxhWzgrKHc9MHxhWyhBPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkmJjB8YVsxMiso''@;'; put 'put ''MHxhWyhrPWIrNHwwKT4+Ml0pPj4yXSYmKGFbbT4+Ml09bCxhW20rND4+Ml09MCxEPStfW3crOTY+PjNdLF9bcD4+M109K19bYz4+M10tK19bdysxNj4+M10sX1twKzg+PjNdPStfW2MrOD4+M10tK19bdysyND4+M10saz0wfGFbMTIrKDB8YVtrPj4yXSk+PjJdLGFbZj4+Ml09YVtwPj4yXSxh''@;'; put 'put ''W2YrND4+Ml09YVtwKzQ+PjJdLGFbZis4Pj4yXT1hW3ArOD4+Ml0sYVtmKzEyPj4yXT1hW3ArMTI+PjJdLGs9MHxSaVsxMjcma10obSxmKSxfWzk2KygwfGFbQT4+Ml0pPj4zXT1ELEhOKG0sbCxjLGspKSxvZT1NfShsLEspLGI9KygwfH5+KChiPStfW00+PjNdLStfWzI0KyhwZT0wfGFbTGU+''@;'; put 'put ''PjJdKT4+M10pKyhiPj0wPy41Oi0uNSkpKSxwZT0yNTUmfn4oMjU2KigoSGU9K19bcGUrODg+PjNdKSsodz0rKDB8fn4oKHc9K19bSz4+M10tK19bcGUrMTY+PjNdKSsodz49MD8uNTotLjUpKSkpKS8oK19bcGUrOTY+PjNdK0hlKSksSz0wOyEoKDB8Syk+PSgwfGFbT2U+PjJdKSk7KXtmb3Io''@;'; put 'put ''TUMoTT0wfGFbKDB8YVtjPj4yXSkrKEs8PDIpPj4yXSxtZSxiZSk7TTspe2ZvcihtPU07Oyl7aWYoIW0pe0E9TTticmVha31BPW0rLTQ4fDAsKDB8YVsoMj09KDMmKGY9MHxhW20+PjJdKXwwKT9tOkEpKzQwPj4yXSk9PSgwfGwpJiYoX1s1NisoZj0wfGFbbSsxNj4+Ml0pPj4zXT13LF9bZis2''@;'; put 'put ''ND4+M109YixfW2YrNzI+PjNdPTAsYVtmKzgwPj4yXT0wLHVlW2YrODQ+PjBdPTEsdWVbZis4NT4+MF09MCx1ZVtmKzg2Pj4wXT0wLHVlW2YrODc+PjBdPTAsdWVbZis4OD4+MF09cGUsdWVbZis4OT4+MF09MCxhW2YrOTI+PjJdPTAsZj0wfGFbbT4+Ml0pLHA9bSsxNnwwLCgwfGFbKDM9PSgz''@;'; put 'put ''JmZ8MCk/bTptKzQ4fDApKzQwPj4yXSk9PSgwfGwpJiYoX1sxNisoZj0wfGFbcD4+Ml0pPj4zXT13LF9bZisyND4+M109YixfW2YrMzI+PjNdPTAsYVtmKzQwPj4yXT0wLHVlW2YrNDQ+PjBdPTEsdWVbZis0NT4+MF09MCx1ZVtmKzQ2Pj4wXT0wLHVlW2YrNDc+PjBdPTAsdWVbZis0OD4+MF09''@;'; put 'put ''cGUsdWVbZis0OT4+MF09MCxhW2YrNTI+PjJdPTApLG09MT09KDB8dWVbMTEyKygwfGFbcD4+Ml0pPj4wXSkmJjE9PSgwfHVlWzE1NisoZj0wfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOkEpKzQwPj4yXSk+PjJdKT4+MF0pJiYxPT0oMHxhW2YrMTg0Pj4yXSk/MHxhW2FbZisxODA+''@;'; put 'put ''PjJdPj4yXTowfWZvcig7QTspKDB8YVsoMj09KDMmKGY9MHxhW0E+PjJdKXwwKT9BOkErLTQ4fDApKzQwPj4yXSk9PSgwfGwpJiYoX1s1NisoZj0wfGFbQSsxNj4+Ml0pPj4zXT13LF9bZis2ND4+M109YixfW2YrNzI+PjNdPTAsYVtmKzgwPj4yXT0wLHVlW2YrODQ+PjBdPTEsdWVbZis4NT4+''@;'; put 'put ''MF09MCx1ZVtmKzg2Pj4wXT0wLHVlW2YrODc+PjBdPTAsdWVbZis4OD4+MF09cGUsdWVbZis4OT4+MF09MCxhW2YrOTI+PjJdPTAsZj0wfGFbQT4+Ml0pLHA9QSs0OHwwLG09QSsxNnwwLCgwfGFbKDM9PSgzJmZ8MCk/QTpwKSs0MD4+Ml0pPT0oMHxsKSYmKF9bMTYrKGY9MHxhW20+PjJdKT4+''@;'; put 'put ''M109dyxfW2YrMjQ+PjNdPWIsX1tmKzMyPj4zXT0wLGFbZis0MD4+Ml09MCx1ZVtmKzQ0Pj4wXT0xLHVlW2YrNDU+PjBdPTAsdWVbZis0Nj4+MF09MCx1ZVtmKzQ3Pj4wXT0wLHVlW2YrNDg+PjBdPXBlLHVlW2YrNDk+PjBdPTAsYVtmKzUyPj4yXT0wKSxBPTE9PSgwfHVlWzExMisoMHxhW20+''@;'; put 'put ''PjJdKT4+MF0pJiYxPT0oMHx1ZVsxNTYrKGY9MHxhWzE2KygwfGFbKDM9PSgzJmFbQT4+Ml18MCk/QTpwKSs0MD4+Ml0pPj4yXSk+PjBdKSYmMT09KDB8YVtmKzE3Nj4+Ml0pPzB8YVthW2YrMTcyPj4yXT4+Ml06MDtNPTB8YVsxNzIrKDB8YVtNKzE2Pj4yXSk+PjJdfUs9SysxfDB9dWVbMTQ1''@;'; put 'put ''KygwfGFbTGU+PjJdKT4+MF09MSxvZT1CZX1mdW5jdGlvbiBZSChsKXt2YXIgZixwLGM9MDtVZChsfD0wKSxmPWwrLTQ4fDAscD1sKzQ4fDAsKGM9MHxTNygwfGFbKDI9PSgwfChjPTMmYVtsPj4yXSkpP2w6ZikrNDA+PjJdLDB8YVsoMz09KDB8Yyk/bDpwKSs0MD4+Ml0pKT91YyhsLGMpOmtm''@;'; put 'put ''KDB8YVsoMj09KDB8KGM9MyZhW2w+PjJdKSk/bDpmKSs0MD4+Ml0sMHxhWygzPT0oMHxjKT9sOnApKzQwPj4yXSxsKX1mdW5jdGlvbiBwVShsKXt2YXIgbSxjPTAsZj0wLHA9MDtpZighKDB8dWVbKGw9MTU3KyhjPTB8YVsobT0xNisobHw9MCl8MCk+PjJdKXwwKT4+MF0pKXtmb3IodWVbbD4+''@;'; put 'put ''MF09MSx1ZVtjKzE1OD4+MF09MSxsPTA7cD0wfGFbKDB8YVtjKzE4MD4+Ml0pKyhsPDwyKT4+Ml07KTB8dWVbMTU4KyhmPTB8YVsxNisoYz0wfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjBdPyhZSChwKSxsPWwrLTF8MCk6MHx1ZVtmKzE1Nz4+MF18fHBV''@;'; put 'put ''KGMpLGw9bCsxfDAsYz0wfGFbbT4+Ml07dWVbYysxNTg+PjBdPTB9fWZ1bmN0aW9uIGdVKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKGY9MHxMdChsfD0wKTtmOyl7Zm9yKHA9MHxhWzE3NisobT0wfGFbZisxNj4+Ml0pPj4yXSxtPW0rMTcyfDAsYz0wOyEoKDB8Yyk+PSgwfHApKTspdWVb''@;'; put 'put ''MTEyKygwfGFbMTYrKDB8YVsoMHxhW20+PjJdKSsoYzw8Mik+PjJdKT4+Ml0pPj4wXT0wLGM9YysxfDA7Zj0wfHp0KGwsZil9fWZ1bmN0aW9uIFVIKGwpe3ZhciBtLEEsYz0wLGY9MCxwPTAsdz0wLGI9MDtmb3IoaWsobHw9MCksYz0rKDB8dnIoMHxhWzI1MisocD0wfGFbbCsxNj4+Ml0pPj4y''@;'; put 'put ''XSwoQT0wfGFbNDY3NDldKS0xfDApKSxtPTB8YVs0Njc1MF0scD1wKzI0OHwwLGw9MCxmPTA7ISgoMHxsKT49KDB8QSkpOyl3PStfW20rKDQwKmx8MCkrMjQ+PjNdKyArKDB8dnIoMHxhW3A+PjJdLDB8YVttKyg0MCpsfDApKzE2Pj4yXSkpLGI9K19bbSsoNDAqbHwwKSszMj4+M10rYyxsPWwr''@;'; put 'put ''MXwwLGM9YixmPWY8dz93OmY7cmV0dXJuK2YvY31mdW5jdGlvbiBlb2UobCl7dmFyIGM9MDtmb3IoYVs0Njc1M109MHxtcigoMHxObyhsfD0wKSk8PDIpLGM9MDshKCgwfGMpPj0oMHxObyhsKSkpOylhWygwfGFbNDY3NTNdKSsoYzw8Mik+PjJdPWMsYz1jKzF8MDtpayhsKSxmdW5jdGlvbiBR''@;'; put 'put ''SChsKXtJMSgwfGFbNDY3NTNdLDB8Tm8obHw9MCksNCw2Myl9KGwpLGZ1bmN0aW9uIHpJKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTA7Zm9yKHc9MHxhWzQ2NzQ5XSxiPTB8YVs0Njc1MF0sbT0wfGFbNDY3''@;'; put 'put ''NTNdLEE9MDs7KXtpZigoMHxBKT49KDB8dykpe2Y9MCxjPTA7YnJlYWt9aWYocD1BKzF8MCwhKCgwfGFbYisoNDAqKGY9MHxhW20rKEE8PDIpPj4yXSl8MCkrMTI+PjJdKTwyKSl7az00O2JyZWFrfUE9cH00PT0oMHxrKSYmKGM9KDB8dyk+KDB8cCk/K19bYisoNDAqKDB8YVttKyhwPDwyKT4+''@;'; put 'put ''Ml0pfDApKzI0Pj4zXTowKTtlOmRve2lmKCgwfEEpIT0oMHx3KSlmb3IoSTEoMHxhW2IrKDQwKmZ8MCkrND4+Ml0sMHxhW2IrKDQwKmZ8MCkrMTI+PjJdLDQsNjQpLG09MHxhWzQ2NzUwXSxwZT0rX1ttKyg0MCpmfDApKzI0Pj4zXSxwZT0hKGM8PS4yNSpwZSkmIShjPj0uNzUqcGUpP2M6LjUq''@;'; put 'put ''cGUsbWU9MHxhW20rKDQwKmZ8MCkrMTI+PjJdLEs9bCsxNnwwLEQ9MCxSPTAsYz0wLHA9MCxHPTA7Oyl7aWYoKDB8Ryk+PShwK21lfDApKWJyZWFrIGU7ZG97aWYoMHxhWygwfGFbbSsoNDAqZnwwKSs4Pj4yXSkrKEc8PDIpPj4yXSl3PUQsQT1SLHA9cCsxfDA7ZWxzZXtpZighKChBPTAhPSgw''@;'; put 'put ''fFIpKSYhKChNPTcyKitfWyhsPTgrKGs9MHxhWygwfGFbbSsoNDAqZnwwKSs0Pj4yXSkrKEc8PDIpPj4yXSl8MCk+PjNdK2MrKGM+MD8rKDB8YVsyNDgrKDB8YVtLPj4yXSk+PjJdKTowKSk8PXBlKSkpe3c9QT9EOmssQT1BP1I6MSxjPU07YnJlYWt9Zm9yKHc9RCs0fDAsYj1rKzR8MCxBPTA7''@;'; put 'put ''KDB8QSk8KDB8YVt3Pj4yXSk7KXtmb3IobT0wOyEoKDB8bSk+PSgwfGFbYj4+Ml0pKTspdWVbMTEyKygwfGFbMTYrKDB8a2YoMHxhWygwfGFbRD4+Ml0pKyhBPDwyKT4+Ml0sMHxhWygwfGFbaz4+Ml0pKyhtPDwyKT4+Ml0sMCkpPj4yXSk+PjBdPTEsbT1tKzF8MDtBPUErMXwwfWFbKDB8YVso''@;'; put 'put ''bT0wfGFbNDY3NTBdKSsoNDAqZnwwKSs4Pj4yXSkrKEc8PDIpPj4yXT0xLGFbKHc9bSsoNDAqZnwwKSsxMnwwKT4+Ml09KDB8YVt3Pj4yXSktMSxhWyh3PW0rKDQwKmZ8MCkrMTZ8MCk+PjJdPTErKDB8YVt3Pj4yXSksX1sodz1tKyg0MCpmfDApKzI0fDApPj4zXT0tNzIqK19bbD4+M10tKygw''@;'; put 'put ''fGFbMjQ4KygwfGFbSz4+Ml0pPj4yXSkrICtfW3c+PjNdLHc9RCxBPVJ9fXdoaWxlKDApO0Q9dyxSPUEsRz1HKzF8MH19d2hpbGUoMCl9KGwpfWZ1bmN0aW9uIGlrKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2lmKGFbNDY3NDldPTAsMHwoYz0wfGFb''@;'; put 'put ''NDY3NTBdKSl7Zm9yKHA9MDshKCgwfHApPj0oMHxhWzQ2NzUxXSkpOykoZj0wfGFbYysoNDAqcHwwKSs0Pj4yXSkmJihIdChmKSxjPTB8YVs0Njc1MF0pLChmPTB8YVtjKyg0MCpwfDApKzg+PjJdKSYmKEh0KGYpLGM9MHxhWzQ2NzUwXSkscD1wKzF8MDtIdChjKX1mb3IoYVs0Njc1MF09MHxt''@;'; put 'put ''cig0MCooMHxhWzQ2NzUxXSl8MCksYz0wOyEoKDB8Yyk+PSgwfChmPTB8YVs0Njc1MV0pKSk7KWs9MHxtcihmPDwyKSxhWygwfGFbNDY3NTBdKSsoNDAqY3wwKSs0Pj4yXT1rLGs9MHxtcihhWzQ2NzUxXTw8MiksYVsoTT0wfGFbNDY3NTBdKSsoNDAqY3wwKSs4Pj4yXT1rLGFbTSsoNDAqY3ww''@;'; put 'put ''KT4+Ml09YyxhW00rKDQwKmN8MCkrMTI+PjJdPTAsYVtNKyg0MCpjfDApKzE2Pj4yXT0wLGFbKE09TSsoNDAqY3wwKSsyNHwwKT4+Ml09MCxhW00rND4+Ml09MCxhW00rOD4+Ml09MCxhW00rMTI+PjJdPTAsYz1jKzF8MDtmb3IocD0wfEx0KGwpO3A7KXtmb3IoZj0wfHkwKGwscCk7Zjspe2Zv''@;'; put 'put ''cihtPWYrLTQ4fDAsQT0wfGFbNDY3NTBdLGM9MHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgzJih3PTB8YVtmPj4yXSl8MCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml07ISgoMHwoYz1jKzF8MCkpPj0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgzJnd8MCk/ZjptKSs0MD4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdKSk7KWFbKHc9QSsoNDAqY3wwKSsxNnwwKT4+Ml09MSsoMHxhW3c+PjJdKSx3PTB8YVtmPj4yXTtmPTB8azAobCxmKX1wPTB8enQobCxwKX1mb3Iodz0wfGFbNDY3NTFdLGs9MHxhWzQ2NzUyXSxNPTB8YVs0Njc1MF0sZj1sKzE2fDAsYz0wOyEoKDB8Yyk+PSgwfHcpKTspKDB8KG09''@;'; put 'put ''MHxhWzIzMisoMHxhWyhwPTE2KygwfGFbYVtrKygyNCpjfDApPj4yXT4+Ml0pfDApPj4yXSk+PjJdKSk+PSgwfGFbNDY3NDldKSYmKGFbNDY3NDldPW0rMSksX1soQT1NKyg0MCptfDApKzI0fDApPj4zXT0oYj0rX1tBPj4zXSkrNzIqK19baysoMjQqY3wwKSs4Pj4zXSsoYj4wPysoMHxhWzI0''@;'; put 'put ''OCsoMHxhW2Y+PjJdKT4+Ml0pOjApLCtfWyhBPU0rKDQwKm18MCkrMzJ8MCk+PjNdPChiPTcyKitfW2srKDI0KmN8MCkrMTY+PjNdKSYmKF9bQT4+M109YiksYVsoMHxhW00rKDQwKm18MCkrND4+Ml0pKyhhW00rKDQwKm18MCkrMTI+PjJdPDwyKT4+Ml09aysoMjQqY3wwKSxhWyhsPU0rKDQw''@;'; put 'put ''KigwfGFbMjMyKygwfGFbcD4+Ml0pPj4yXSl8MCkrMTJ8MCk+PjJdPTErKDB8YVtsPj4yXSksYz1jKzF8MH1mdW5jdGlvbiB2VShsKXt2YXIgbSxjPTAsZj0wLHA9MCxBPTA7Zm9yKG09NCsobHw9MCl8MCxmPTAsYz0wOyEoKDB8Zik+PSgwfGFbbT4+Ml0pKTspe2ZvcihwPTB8eTAoQT0wfGZy''@;'; put 'put ''KHA9MHxhWygwfGFbbD4+Ml0pKyhmPDwyKT4+Ml0pLHApO3A7KXA9MHxrMChBLHApLGM9YysxfDA7Zj1mKzF8MH1yZXR1cm4gMHxjfWZ1bmN0aW9uIEFVKGwpe3ZhciBjPTA7Zm9yKGM9MHxMdChsfD0wKTtjOylhWzIxNisoMHxhW2MrMTY+PjJdKT4+Ml09MCxjPTB8enQobCxjKX1mdW5jdGlv''@;'; put 'put ''biBKSChsKXtsfD0wO3ZhciBjLGY9MDtyZXR1cm4gMHwoMCE9KDB8KGM9MHxhWzQ3MTg5XSkpJiYwIT0oMHwoZj0wfEZvKGwsYykpKSYmMCE9KDB8dWVbZj4+MF0pJiYoMHxyMShmKSk8PDI0Pj4yND09MD8xOjApfWZ1bmN0aW9uIFhIKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxi''@;'; put 'put ''PTA7Zm9yKHFIKGx8PTApLGM9MHxMdChsKTtjOyl7Zm9yKGY9MHx5MChsLGMpO2Y7KXtkb3tpZigwPT0oMHxhWzE3MisoMHxhW2YrMTY+PjJdKT4+Ml0pJiYwPT0oMHxKSChmKSkmJihwPWYrNDh8MCxBPWYrLTQ4fDAsKDB8KG09MHxvMSgwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpwKSs0MD4+''@;'; put 'put ''Ml0pKSkhPSgwfCh3PTB8bzEoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6QSkrNDA+PjJdKSkpKSl7aWYoMD09KDB8YVsyMTIrKDB8YVttKzE2Pj4yXSk+PjJdKSYmMD09KDB8YVsyMTIrKDB8YVt3KzE2Pj4yXSk+PjJdKSl7aWYoYj0wfFM3KG0sdykpe3VjKGYsYik7YnJlYWt9a2YobSx3LGYp''@;'; put 'put ''O2JyZWFrfVdJKGwsMHxhWygzPT0oMHwoYj0zJmFbZj4+Ml0pKT9mOnApKzQwPj4yXSwwfGFbKDI9PSgwfGIpP2Y6QSkrNDA+PjJdLGYpfX13aGlsZSgwKTtmPTB8azAobCxmKX1jPTB8enQobCxjKX19ZnVuY3Rpb24gV0kobCxjLGYscCl7Y3w9MCxmfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7''@;'; put 'put ''Yj0oQT0wfGFbMjEyKyhtPTB8YVsxNisoMHxhWygzPT0oMHwodz0zJmFbKHB8PTApPj4yXSkpP3A6cCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT8oMHxhW20rMjMyPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWzI2NCsoMHxhW0ErMTY+PjJdKT4+Ml0pPj4yXSk+PjJdKXwwOjAsYj0obT0o''@;'; put 'put ''QT0wfGFbMjEyKyhtPTB8YVsxNisoMHxhWygyPT0oMHx3KT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPygwfGFbMjMyKygwfGFbMTYrKDB8YVsyNjQrKDB8YVtBKzE2Pj4yXSk+PjJdKT4+Ml0pPj4yXSktKDB8YVttKzIzMj4+Ml0pfDA6MCkrYisoMHxhclsxNzArKDB8YVsodz1wKzE2''@;'; put 'put ''fDApPj4yXSk+PjFdKXwwLGw9MHxTZihsfD0wKSx1ZVsxNTYrKDB8YVtsKzE2Pj4yXSk+PjBdPTIsQT0wfG8xKGMpLGM9MHxvMShmKSxmPTB8Z3UobCxBLCgwfGIpPjA/MDorKDAtYnwwKSwxMCooMHxhWzE1NisoMHxhW3c+PjJdKT4+Ml0pfDApLGFbMTE2KygwfGFbMTYrKDB8Z3UobCxjLCso''@;'; put 'put ''MHwoKDB8Yik+MD9iOjApKSwwfGFbMTU2KygwfGFbdz4+Ml0pPj4yXSkpPj4yXSk+PjJdPXAsYVsxMTYrKDB8YVtmKzE2Pj4yXSk+PjJdPXB9ZnVuY3Rpb24gUjUobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG0sQT0wLHc9MCxiPTA7dz0wfGFbMjMyKygwfGFbMTYrKDB8YVsoKDB8YVsy''@;'; put 'put ''MzIrKDB8YVsxNisoMHxhWyhBPTM9PSgwfCh3PTMmYVsoY3w9MCk+PjJdKSk/YzpjKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjMyKygwfGFbMTYrKDB8YVsodz0yPT0oMHx3KT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pP0E6dykrNDA+PjJdKT4+Ml0pPj4yXSwwfGFbKGM9''@;'; put 'put ''MTcyKygwfGFbKEE9YysxNnwwKT4+Ml0pfDApPj4yXSYmQnIoODc1OTMsODc2MTUsMTQ4LDg3NjI0KSxhW2M+PjJdPWYsbT0wPT0oMHxwKTtkb3tpZihjPTB8YVtBPj4yXSxtP3A9MHxhW2YrMTY+PjJdOlR0WyhiPTE2OCsocD0wfGFbZisxNj4+Ml0pfDApPj4xXT0oMHxhcltiPj4xXSkrKDB8''@;'; put 'put ''YXJbYysxNjg+PjFdKSxUdFsoYj1wKzE1NHwwKT4+MV09KDB8YXJbYj4+MV0pKygwfGFyW2MrMTU0Pj4xXSksYVsocD1wKzE1NnwwKT4+Ml09KDB8YVtwPj4yXSkrKDB8YVtjKzE1Nj4+Ml0pLGM9ZistNDh8MCwoMHxhWzIzMisoMHxhWzE2KyhwPTB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmMp''@;'; put 'put ''KzQwPj4yXSk+PjJdKT4+Ml0pPT0oMHx3KSlicmVhaztLSChsLHApLGY9MHxhW2FbMTgwKygwfGFbMTYrKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmMpKzQwPj4yXSk+PjJdKT4+Ml0+PjJdfXdoaWxlKDAhPSgwfGYpKX1mdW5jdGlvbiBLSChsLGMpe3ZhciBmO2Y9KygwfCgwfGFbMjQ4Kygw''@;'; put 'put ''fGFbMTYrKGx8PTApPj4yXSk+PjJdKS8yKSxfWyhsPTg4KyhjPTB8YVsxNisoY3w9MCk+PjJdKXwwKT4+M109K19bbD4+M10rZixfWyhjPWMrOTZ8MCk+PjNdPStfW2M+PjNdK2Z9ZnVuY3Rpb24gQ3kobCxjKXt2YXIgZj0wLHA9MDtyZXR1cm4gMHwoMCE9KDB8KGx8PTApKSYwIT0oMHwoY3w9''@;'; put 'put ''MCkpJiYoMHxhWygzPT0oMHwocD0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT09KDB8YVsoMz09KDB8KGY9MyZhW2M+PjJdKSk/YzpjKzQ4fDApKzQwPj4yXSkmJigwfGFbKDI9PSgwfHApP2w6bCstNDh8MCkrNDA+PjJdKT09KDB8YVsoMj09KDB8Zik/YzpjKy00OHwwKSs0MD4+Ml0p''@;'; put 'put ''JiYoMHxhWzk2KygwfGFbbCsxNj4+Ml0pPj4yXSk9PSgwfGFbOTYrKDB8YVtjKzE2Pj4yXSk+PjJdKSYmMCE9KDB8cUMobCxjKSk/MTowKX1mdW5jdGlvbiAkSChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MDtmb3Io''@;'; put 'put ''YVsxOTIrKGM9MHxhWyhtZT0xNisobHw9MCl8MCk+PjJdKT4+Ml09MCxhW2MrMjMyPj4yXT0wLHFIKGwpLGM9MTshKCgwfGMpPigwfGFbMTgwKyhmPTB8YVttZT4+Ml0pPj4yXSkpOylDVShsLDB8YVsoMHxhW2YrMTg0Pj4yXSkrKGM8PDIpPj4yXSksYz1jKzF8MDtmb3IoQT0wfEx0KGwpO0E7''@;'; put 'put ''KXtmb3IobT0wfHkwKGwsQSk7bTspKHA9MHx1ZVsoZj0xNjArKDB8YVsxNisoMHxhWygyPT0oMyYoYz0wfGFbbT4+Ml0pfDApP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pfDApPj4wXSk8PDI0Pj4yNDwzJiYodWVbZj4+MF09cCsxPDwyND4+MjQsYz0wfGFbbT4+Ml0pLChmPTB8dWVbKGM9MTYw''@;'; put 'put ''KygwfGFbMTYrKDB8YVsoMz09KDMmY3wwKT9tOm0rNDh8MCkrNDA+PjJdKT4+Ml0pfDApPj4wXSk8PDI0Pj4yNDwzJiYodWVbYz4+MF09ZisxPDwyND4+MjQpLG09MHxrMChsLG0pO0E9MHx6dChsLEEpfWZvcihEPTB8THQobCk7RDspe2ZvcigwPT0oMHxhWzIxMisoMHxhW0QrMTY+PjJdKT4+''@;'; put 'put ''Ml0pJiYoMHxEKT09KDB8bzEoRCkpJiYodkgobCxEKSxhWyhNPTIzMisoMHxhW21lPj4yXSl8MCk+PjJdPTErKDB8YVtNPj4yXSkpLGM9MCxNPTB8eTAobCxEKTtNOyl7QT0wfGFbKGs9TSsxNnwwKT4+Ml07ZTpkb3tpZigwfGFbQSsxNzI+PjJdKWM9TTtlbHNle2lmKDB8cm9lKE0pKXtpZigh''@;'; put 'put ''KDB8Q3koYyxNKSkpe2lvZShsLE0pLGM9TTticmVha31pZigwfChmPTB8YVsxNzIrKDB8YVtjKzE2Pj4yXSk+PjJdKSl7UjUobCxNLGYsMCksejYoTSk7YnJlYWt9aWYoKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoaz0zJmFbTT4+Ml0pKT9NOk0rNDh8MCkrNDA+PjJdKT4+Ml0pPj4y''@;'; put 'put ''XSkhPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8ayk/TTpNKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSlicmVhazt1YyhNLGMpLHo2KE0pO2JyZWFrfWlmKGMpaWYoZj1NKzQ4fDAsKDB8KHA9MHxhWygzPT0oMHwodz0zJmFbTT4+Ml0pKT9NOmYpKzQwPj4yXSkpPT0oMHxhWygzPT0o''@;'; put 'put ''MHwobT0zJmFbYz4+Ml0pKT9jOmMrNDh8MCkrNDA+PjJdKSYmKDB8KFI9MHxhWygyPT0oMHx3KT9NOk0rLTQ4fDApKzQwPj4yXSkpPT0oMHxhWygyPT0oMHxtKT9jOmMrLTQ4fDApKzQwPj4yXSkpe2lmKCgwfGFbMjMyKygwfGFbcCsxNj4+Ml0pPj4yXSk9PSgwfGFbMjMyKygwfGFbUisxNj4+''@;'; put 'put ''Ml0pPj4yXSkpe3VjKE0sYyksejYoTSk7YnJlYWt9aWYoMD09KDB8YVtBKzk2Pj4yXSkmJjA9PSgwfGFbOTYrKDB8YVsoRz1jKzE2fDApPj4yXSk+PjJdKSYmMCE9KDB8cUMoTSxjKSkpe2lmKDB8dWVbMTk0OTU0XSl7dWVbMTEyKygwfGFbaz4+Ml0pPj4wXT02O2JyZWFrfVI1KGwsTSwwfGFb''@;'; put 'put ''MTcyKygwfGFbRz4+Ml0pPj4yXSwxKSx6NihNKTticmVha313PWZ9ZWxzZSB3PWY7ZWxzZSB3PU0rNDh8MDtpZihiPU0rLTQ4fDAsKDB8KGY9MHxhWygzPT0oMHwoQT0zJmFbTT4+Ml0pKT9NOncpKzQwPj4yXSkpPT0oMHxhWygyPT0oMHxBKT9NOmIpKzQwPj4yXSkpe3o2KE0pLGM9TTticmVh''@;'; put 'put ''a31pZihmPTB8bzEoZikscD0wfG8xKDB8YVsoMj09KDMmYVtNPj4yXXwwKT9NOmIpKzQwPj4yXSksKDB8YVsoMz09KDB8KEE9MyZhW00+PjJdKSk/TTp3KSs0MD4+Ml0pPT0oMHxmKSYmKDB8YVsoMj09KDB8QSk/TTpiKSs0MD4+Ml0pPT0oMHxwKSl7aWYoKDB8KG09MHxhWzIzMisoMHxhW2Yr''@;'; put 'put ''MTY+PjJdKT4+Ml0pKT09KDB8KEE9MHxhWzIzMisoMHxhW3ArMTY+PjJdKT4+Ml0pKSl7a0kobCxNKSxjPU07YnJlYWt9aWYoKDB8QSk+KDB8bSkpe1lJKGwsZixwLE0pLGM9TTticmVha31mPTB8cmwobCxwLGYsMCwwKTtkb3tpZigwfGYmJigwfChwZT0wfGFbKDI9PSgwfChLPTMmYVtmPj4y''@;'; put 'put ''XSkpP2Y6ZistNDh8MCkrNDA+PjJdKSkhPSgwfGFbKDI9PSgzJmFbTT4+Ml18MCk/TTpiKSs0MD4+Ml0pJiYoMHxhWzE3MisoMHxhWyhwPWYrMTZ8MCk+PjJdKT4+Ml18fFlJKGwsMHxhWygzPT0oMHxLKT9mOmYrNDh8MCkrNDA+PjJdLHBlLGYpLDA9PSgwfGFbOTYrKDB8YVtrPj4yXSk+PjJd''@;'; put 'put ''KSYmMD09KDB8YVs5NisoMHxhW3A+PjJdKT4+Ml0pKSl7aWYoISgwfHFDKE0sZikpKWJyZWFrO2lmKDB8dWVbMTk0OTU0XSl7dWVbMTEyKygwfGFbaz4+Ml0pPj4wXT02LHVlWzE1MysoMHxhW3A+PjJdKT4+MF09MTticmVhayBlfXo2KE0pLFI1KGwsTSwwfGFbMTcyKygwfGFbcD4+Ml0pPj4y''@;'; put 'put ''XSwxKTticmVhayBlfX13aGlsZSgwKTtZSShsLDB8YVsoMj09KDB8KGM9MyZhW00+PjJdKSk/TTpiKSs0MD4+Ml0sMHxhWygzPT0oMHxjKT9NOncpKzQwPj4yXSxNKSxjPU19fX13aGlsZSgwKTtNPTB8azAobCxNKX1EPTB8enQobCxEKX0oMHxWMChsKSkhPSgwfGwpJiYoYz0oYz0wfGFbMjE2''@;'; put 'put ''KygwfGFbbWU+PjJdKT4+Ml0pPzB8bDAoYyw0KTowfFFuKDQpLGFbMjE2KyhtZT0wfGFbbWU+PjJdKT4+Ml09YyxhW2M+PjJdPWFbbWUrMTkyPj4yXSl9ZnVuY3Rpb24gcm9lKGwpe3ZhciBjO3JldHVybiAwfCg3PT0oMHx1ZVsxNTkrKDB8YVsxNisoMHxhWygzPT0oMHwoYz0zJmFbKGx8PTAp''@;'; put 'put ''Pj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjBdKT8xOjc9PSgwfHVlWzE1OSsoMHxhWzE2KygwfGFbKDI9PSgwfGMpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4wXSkmMSl9ZnVuY3Rpb24gaW9lKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MDtwPTB8b2soMHxhWygz''@;'; put 'put ''PT0oMyZhWyhjfD0wKT4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSksbT0wfG9rKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSksZj0odz0oMHxhWzIzMisoMHxhW3ArMTY+PjJdKT4+Ml0pPigwfGFbMjMyKygwfGFbbSsxNj4+Ml0pPj4yXSkpP3A6bSxtPShwPXc/bTpw''@;'; put 'put ''KSsxNnwwLHc9ZisxNnwwO2U6ZG97aWYoKDB8YVsyMTIrKDB8YVttPj4yXSk+PjJdKSE9KDB8YVsyMTIrKDB8YVt3Pj4yXSk+PjJdKSl7aWYoMHwoQT0wfFM3KHAsZikpKXtSNShsLGMsQSwxKTticmVha31pZigoMHxhWzIzMisoMHxhW20+PjJdKT4+Ml0pIT0oMHxhWzIzMisoMHxhW3c+PjJd''@;'; put 'put ''KT4+Ml0pKWZvcihZSShsLHAsZixjKSxmPTE3MisoMHxhW2MrMTY+PjJdKXwwOzspe2lmKCEoZj0wfGFbZj4+Ml0pfHwocD1mKy00OHwwLCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOnApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjMyKygwfGFbdz4+Ml0pPj4y''@;'; put 'put ''XSkpKWJyZWFrIGU7dWVbMTEyKygwfGFbZisxNj4+Ml0pPj4wXT01LGY9MHxhWzE4MCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpwKSs0MD4+Ml0pPj4yXSk+PjJdfX19d2hpbGUoMCl9ZnVuY3Rpb24gWUkobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIGIsTSxrLG09MCxB''@;'; put 'put ''PTAsdz0wO2ZvcihrPTB8YVs5NisobT0wfGFbKE09MTYrKHB8PTApfDApPj4yXSk+PjJdPygoMHxhWzIzMisoMHxhW2YrMTY+PjJdKT4+Ml0pKygwfGFbMjMyKygwfGFbYysxNj4+Ml0pPj4yXSl8MCkvMnwwOi0xLDB8YVttKzE3Mj4+Ml0mJkJyKDg3NjM2LDg3NjE1LDg5LDg3NjYxKSxiPWYr''@;'; put 'put ''MTZ8MCx3PTB8YVsyMzIrKDB8YVtjKzE2Pj4yXSk+PjJdO0E9dysxfDAsISgoMHx3KT49KDB8KG09MHxhWzIzMisoMHxhW2I+PjJdKT4+Ml0pKSk7KSgwfEEpPCgwfG0pPyhtPSgwfEEpPT0oMHxrKT8wfG9vZShsLHApOjB8YW9lKGwpLGFbMjMyKygwfGFbbSsxNj4+Ml0pPj4yXT1BKTptPWYs''@;'; put 'put ''VDBlKDB8a2YoYyxtLHApKSx3PUEsYz1tOzB8YVsxNzIrKDB8YVtNPj4yXSk+PjJdfHxCcig4NzY3Miw4NzYxNSwxMDMsODc2NjEpfWZ1bmN0aW9uIG9vZShsLGMpe3ZhciBmLHAsdyxtPTAsQT0wO3JldHVybiBmPStfWzI0KyhtPTB8YVs5NisoMHxhWyhBPTE2KyhjfD0wKXwwKT4+Ml0pPj4y''@;'; put 'put ''XSk+PjNdLHA9K19bbSszMj4+M10sbT0wfFNmKGx8PTApLGFbMTA0KygwfGFbKGM9bSsxNnwwKT4+Ml0pPj4yXT1hWzk2KygwfGFbQT4+Ml0pPj4yXSx3PSsoMHxhWzI0OCsoMHxhWzE2KygwfGhpKG0pKT4+Ml0pPj4yXSksX1s4OCsoMHxhW2M+PjJdKT4+M109dywwfHVlWzExNCsoMHxhW0E+''@;'; put 'put ''PjJdKT4+MF18fChsPTA9PSgxJmFbMTE2KygwfGFbMTYrKDB8aGkobCkpPj4yXSk+PjJdfDApLF9bODArKEE9MHxhW2M+PjJdKT4+M109bD9wOmYsX1tBKzk2Pj4zXT1sP2Y6cCksMHxtfWZ1bmN0aW9uIGFvZShsKXt2YXIgYztyZXR1cm4gS0gobHw9MCxjPTB8U2YobCkpLDB8Y31mdW5jdGlv''@;'; put 'put ''biBvayhsKXt2YXIgYztyZXR1cm4gMHwoNz09KDB8dWVbMTU5KyhjPTB8YVsxNisobHw9MCk+PjJdKT4+MF0pPzB8YVsoMHxhWzI2OCsoMHxhWzE2KygwfGFbYysyMTI+PjJdKT4+Ml0pPj4yXSkrKGFbYysyMzI+PjJdPDwyKT4+Ml06MHxvMShsKSl9ZnVuY3Rpb24geVUobCxjLGYpe3ZhciBw''@;'; put 'put ''LG07Y3w9MCxmfD0wLGZ1bmN0aW9uIHNvZShsLGMsZixwLG0pe2Z8PTAscHw9MCxtfD0wO3ZhciBSLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wOygwfChBPTB8YVsyMzIrKDB8YVsoUj0xNisoY3w9MCl8MCk+PjJdKT4+Ml0pKTw9KDB8KGI9MHxhWzIzMisoMHxhWyhEPTE2KyhsfD0wKXwwKT4+''@;'; put 'put ''Ml0pPj4yXSkpJiZCcig4NzY5Nyw4NzcyNSw4MSw4NzczNSksKDB8YVsoMz09KDB8KE09MyZhW3A+PjJdKSk/cDpwKzQ4fDApKzQwPj4yXSk9PSgwfGwpJiYoMHxhWygyPT0oMHxNKT9wOnArLTQ4fDApKzQwPj4yXSk9PSgwfGMpfHwoaz01KTtlOmRve2lmKDU9PSgwfGspKXtpZigoMHxUdFsx''@;'; put 'put ''NjgrKDB8YVtwKzE2Pj4yXSk+PjFdKT4xKXtpZihhWzE3MisoMHxhW2YrMTY+PjJdKT4+Ml09MCwxPT0oQS1ifDApJiYwfCh3PTB8UzcobCxjKSkmJjB8cUMoZix3KSl7aWYodWMoZix3KSwwfHVlWzE1NisoMHxhW0Q+PjJdKT4+MF18fDB8dWVbMTU2KygwfGFbUj4+Ml0pPj4wXSlicmVhazt6''@;'; put 'put ''NihmKTticmVha31mb3IoTT0yNTUmbSxtPWwsaz0wfGFbMjMyKygwfGFbRD4+Ml0pPj4yXTs7KXtpZigoMHxrKT49KDB8KEE9MHxhWzIzMisoMHxhW1I+PjJdKT4+Ml0pKSlicmVhayBlOygwfGspPChBKy0xfDApPyh3PXArLTQ4fDAsQT0wfHVvZShBPTB8VjAobCksMHxhWygyPT0oMyZhW3A+''@;'; put 'put ''PjJdfDApP3A6dykrNDA+PjJdKSxiPXApOihBPWMsdz1wKy00OHwwLGI9cCksdWVbMTEyKygwfGFbMTYrKDB8a2YobSxBLGYpKT4+Ml0pPj4wXT1NLFR0WyhEPTE2OCsoMHxhW3ArMTY+PjJdKXwwKT4+MV09KDB8VHRbRD4+MV0pLTE8PDE2Pj4xNixtPUEsaz1rKzF8MCxwPTB8YVthWzE4MCso''@;'; put 'put ''MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/cDp3KSs0MD4+Ml0pPj4yXSk+PjJdPj4yXX19ZG97aWYoMT09KEEtYnwwKSl7aWYoMHwocD0wfFM3KGwsYykpJiYwfHFDKGYscCkpe2lmKGFbMTcyKygwfGFbZisxNj4+Ml0pPj4yXT1wLHVlWzExMisoTT0wfGFbcCsxNj4+Ml0pPj4wXT1t''@;'; put 'put ''LFR0WyhNPU0rMTY4fDApPj4xXT0xKygwfFR0W00+PjFdKTw8MTY+PjE2LDB8dWVbMTU2KygwfGFbRD4+Ml0pPj4wXXx8MHx1ZVsxNTYrKDB8YVtSPj4yXSk+PjBdKWJyZWFrO3o2KGYpO2JyZWFrfWFbMTcyKygwfGFbZisxNj4+Ml0pPj4yXT0wLHA9MHxrZihsLGMsZiksdWVbMTEyKygwfGFb''@;'; put 'put ''cCsxNj4+Ml0pPj4wXT1tfX13aGlsZSgwKTtpZigoKEE9MHxhWzIzMisoMHxhW1I+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbRD4+Ml0pPj4yXSl8MCk+MSl7Zm9yKCgwfGFbKDM9PSgzJmFbcD4+Ml18MCk/cDpwKzQ4fDApKzQwPj4yXSk9PSgwfGwpP2s9QTooYVsxNzIrKDB8YVsoRD1mKzE2''@;'; put 'put ''fDApPj4yXSk+PjJdPTAsaz0wfGtmKGwsMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdLGYpLGFbMTcyKygwfGFbRD4+Ml0pPj4yXT1rLFVkKHApLHA9ayxrPTB8YVsyMzIrKDB8YVtSPj4yXSk+PjJdKTsoMHxhWzIzMisoYj0wfGFbMTYrKHc9MHxhWygyPT0oMHwoQT0z''@;'; put 'put ''JmFbcD4+Ml0pKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pIT0oMHxrKTspcD0wfGFbYVtiKzE4MD4+Ml0+PjJdOygwfHcpIT0oMHxjKSYmKHVlWzExMisoMHxhWzE2KygwfGtmKDB8YVsoMz09KDB8QSk/cDpwKzQ4fDApKzQwPj4yXSxjLGYpKT4+Ml0pPj4wXT1tLFVkKHApKX19fXdo''@;'; put 'put ''aWxlKDApfShtPTB8d1UobHw9MCkscD0wfHdVKGMpLGYsMHxhWzE3MisoMHxhW2YrMTY+PjJdKT4+Ml0sKDB8bSk9PSgwfGwpJigwfHApPT0oMHxjKT8xOjUpfWZ1bmN0aW9uIHdVKGwpe3ZhciBjLGYscD0wO3JldHVybiAwIT0oMHwoZj0wfGFbMjEyKyhjPTB8YVsxNisobHw9MCk+PjJdKT4+''@;'; put 'put ''Ml0pKSYmMD09KDB8dWVbMjcyKyhwPTB8YVtmKzE2Pj4yXSk+PjBdKSYmKGw9MHxhWygwfGFbcCsyNjg+PjJdKSsoYVtjKzIzMj4+Ml08PDIpPj4yXSksMHxsfWZ1bmN0aW9uIHVvZShsLGMpe3ZhciBwLG0sZj0wO3JldHVybiBiVShsfD0wLHA9MHxhWzIzMisoYz0wfGFbKGY9MTYrKGN8PTAp''@;'; put 'put ''fDApPj4yXSk+PjJdLDB8YVtjKzIzNj4+Ml0sMiksYz0wfFNmKGwpLF9bODgrKG09MHxhW2MrMTY+PjJdKT4+M109K19bODgrKGY9MHxhW2Y+PjJdKT4+M10sX1ttKzk2Pj4zXT0rX1tmKzk2Pj4zXSxhW20rMjMyPj4yXT1hW2YrMjMyPj4yXSxhW20rMjM2Pj4yXT1mPTErKDB8YVtmKzIzNj4+''@;'; put 'put ''Ml0pfDAsYVsoMHxhWygwfGFbMTk2KygwfGFbbCsxNj4+Ml0pPj4yXSkrKHA8PDYpKzQ+PjJdKSsoZjw8Mik+PjJdPWMsMHxjfWZ1bmN0aW9uIGJVKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgdyxiLG09MCxBPTAsaz0wO2I9MHxhWyhtPTB8YVsxOTYrKDB8YVsodz0xNisobHw9MCl8MCk+PjJd''@;'; put 'put ''KT4+Ml0pKygoY3w9MCk8PDYpKzQ+PjJdO2U6ZG97aWYoKDB8cCk8MSl7Zm9yKGY9Zi1wfDA7ISgoMHwoQT1mKzF8MCkpPj0oMHwobD0wfGFbbSsoYzw8Nik+PjJdKSkpOylhWzIzNisoMHxhWzE2KyhsPTB8YVtiKyhBPDwyKT4+Ml0pPj4yXSk+PjJdPW09ZitwfDAsYVtiKyhtPDwyKT4+Ml09''@;'; put 'put ''bCxmPUEsbT0wfGFbMTk2KygwfGFbdz4+Ml0pPj4yXTtmb3IoZj0oQT1wKy0xfDApK2x8MDs7KXtpZigoMHxmKT49KDB8bCkpYnJlYWsgZTthW2IrKGY8PDIpPj4yXT0wLGY9ZisxfDAsbD0wfGFbKG09MHxhWzE5NisoMHxhW3c+PjJdKT4+Ml0pKyhjPDw2KT4+Ml19fWVsc2V7Zm9yKEE9cCst''@;'; put 'put ''MXwwLGw9MHxhW20rKGM8PDYpPj4yXTshKCgwfChsPWwrLTF8MCkpPD0oMHxmKSk7KWFbMjM2KygwfGFbMTYrKGs9MHxhW2IrKGw8PDIpPj4yXSk+PjJdKT4+Ml09bT1BK2x8MCxhW2IrKG08PDIpPj4yXT1rO2ZvcihtPXArZnwwLGw9ZjshKCgwfChsPWwrMXwwKSk+PSgwfG0pKTspYVtiKyhs''@;'; put 'put ''PDwyKT4+Ml09MDttPWw9MHxhWzE5NisoMHxhW3c+PjJdKT4+Ml0sbD0wfGFbbCsoYzw8Nik+PjJdfX13aGlsZSgwKTthW20rKGM8PDYpPj4yXT1BK2x9ZnVuY3Rpb24gcUgobCl7dmFyIE0sRCxSLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKFI9b2Usb2U9b2UrMTZ8MCxE''@;'; put 'put ''PVIscD0wfEx0KGx8PTApO3A7KTc9PSgwfHVlWzE1OSsoYz0wfGFbKGY9cCsxNnwwKT4+Ml0pPj4wXSkmJihxUShwKSxjPTB8YVtmPj4yXSksYVtjKzIxMj4+Ml09MCxwPTB8enQobCxwKTtmb3IoTT1sKzE2fDAsaz0xOyEoKDB8ayk+KDB8YVsxODArKGM9MHxhW00+PjJdKT4+Ml0pKTspe3c9''@;'; put 'put ''MTYrKEE9MHxhWygwfGFbYysxODQ+PjJdKSsoazw8Mik+PjJdKXwwLGM9MHxMdChBKTtlOmZvcig7YzspaWYoYj0wfHp0KEEsYyksMHx1ZVsxNTkrKDB8YVsoZj1jKzE2fDApPj4yXSk+PjBdKXA9MHwkcihjKSxtPTB8JHIobCksYVtEPj4yXT1wLGFbRCs0Pj4yXT1tLFhyKDAsODc3NDQsRCks''@;'; put 'put ''bmkoQSxjKSxjPWI7ZWxzZSBmb3IoQWxlKGMsMHxhWzI2NCsoMHxhW3c+PjJdKT4+Ml0pLGFbMjEyKyhtPTB8YVtmPj4yXSk+PjJdPUEsdWVbbSsxNTk+PjBdPTcsbT0wfHkwKEEsYyk7Oyl7aWYoIW0pe2M9Yjtjb250aW51ZSBlfWM9MHxhWzE3MisoMHxhW20rMTY+PjJdKT4+Ml07dDpkb3tp''@;'; put 'put ''ZigwfGMpZG97aWYoZj1jKy00OHwwLDEhPSgwfHVlWzE1NisocD0wfGFbMTYrKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSk+PjJdKT4+MF0pKWJyZWFrIHQ7YVtwKzIxMj4+Ml09QSxjPTB8YVthWzE4MCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+''@;'; put 'put ''Ml0pPj4yXSk+PjJdPj4yXX13aGlsZSgwIT0oMHxjKSl9d2hpbGUoMCk7bT0wfGswKEEsbSl9az1rKzF8MH1vZT1SfWZ1bmN0aW9uIENVKGwsYyl7bHw9MDt2YXIgYixmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihwPTB8bXIoOCsoVHRbMjM4KygwfGFbKGI9MTYrKGN8PTApfDApPj4yXSk+PjFd''@;'; put 'put ''PDwyKXwwKSxhWzI2OCsoZj0wfGFbYj4+Ml0pPj4yXT1wLHA9MCxtPTB8VHRbZisyMzY+PjFdOyEoKDB8bSk+KDB8VHRbZisyMzg+PjFdKSk7KWY9MHxTZihsKSxhWygwfGFbMjY4KygwfGFbYj4+Ml0pPj4yXSkrKG08PDIpPj4yXT1mLGFbMjMyKyh3PTB8YVtmKzE2Pj4yXSk+PjJdPW0sdWVb''@;'; put 'put ''dysxNTk+PjBdPTcsYVt3KzIxMj4+Ml09YywwfHAmJih3PTE1NCsoMHxhWzE2KygwfGtmKHAsZiwwKSk+PjJdKXwwLFR0W3c+PjFdPTFlMyooMHxUdFt3Pj4xXSkpLHA9ZixtPW0rMXwwLGY9MHxhW2I+PjJdO2Zvcih3PTB8THQoYyk7Zj0wfGFbYj4+Ml0sdzspe2ZvcihhWyhmPTIxNisoMHxh''@;'; put 'put ''WyhtPTE2KygwfGFbKDB8YVtmKzI2OD4+Ml0pKyhhWzIzMisoMHxhW3crMTY+PjJdKT4+Ml08PDIpPj4yXSl8MCk+PjJdKXwwKT4+Ml09MSsoMHxhW2Y+PjJdKSxmPTB8eTAoYyx3KTtmOyl7Zm9yKGw9ZistNDh8MCxwPTB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMyYoQT0wfGFbZj4+Ml0p''@;'; put 'put ''fDApP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdOyEoKDB8cCk+PSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDMmQXwwKT9mOmwpKzQwPj4yXSk+PjJdKT4+Ml0pKTspVHRbKEE9MTY4KygwfGFbMTYrKDB8YVthWzE4MCsoMHxhW20+PjJdKT4+Ml0+PjJdKT4+Ml0pfDApPj4xXT0xKygw''@;'; put 'put ''fFR0W0E+PjFdKTw8MTY+PjE2LHA9cCsxfDAsQT0wfGFbZj4+Ml07Zj0wfGswKGMsZil9dz0wfHp0KGMsdyl9Zm9yKGw9MHxUdFtmKzIzOD4+MV0sQT1mKzI2OHwwLGY9MHxUdFtmKzIzNj4+MV07ISgoMHxmKT4oMHxsKSk7KSgwfChtPTB8YVsocD0yMTYrKDB8YVsxNisoMHxhWygwfGFbQT4+''@;'; put 'put ''Ml0pKyhmPDwyKT4+Ml0pPj4yXSl8MCk+PjJdKSk+MSYmKGFbcD4+Ml09bSstMSksZj1mKzF8MH1mdW5jdGlvbiBrVShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIHcsYixtPTAsQT0wO2lmKCgwfCh3PTErKGZ8PTApfDApKSE9KDB8dWVbMjczKyhjPTB8YVsoYj0xNisoMHxhWzIxMisoMHxhWzE2''@;'; put 'put ''KyhjfD0wKT4+Ml0pPj4yXSl8MCk+PjJdKT4+MF0pKXtmb3IoQT0wfFR0W2MrMjM2Pj4xXTshKCgwfEEpPigobT0wfFR0W2MrMjM4Pj4xXSk8PDE2Pj4xNnwwKSk7KXhIKGwsMHxhWygwfGFbYysyNjg+PjJdKSsoQTw8Mik+PjJdKSxBPUErMXwwLGM9MHxhW2I+PjJdO2ZvcihBPTB8VHRbYysy''@;'; put 'put ''MzY+PjFdOyEoKDB8QSk+KG08PDE2Pj4xNnwwKSk7KVRIKHAsMHxhWygwfGFbYysyNjg+PjJdKSsoQTw8Mik+PjJdLGYpLEE9QSsxfDAsbT0wfFR0WzIzOCsobD0wfGFbYj4+Ml0pPj4xXSxjPWw7dWVbYysyNzM+PjBdPXd9fWZ1bmN0aW9uIFVJKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0w''@;'; put 'put ''O2ZvcihBPTB8THQobHw9MCk7QTspe2ZvcihhWzIxMisoMHxhW0ErMTY+PjJdKT4+Ml09MCxtPTB8eTAobCxBKTttOyl7Yz0wfGFbMTcyKygwfGFbbSsxNj4+Ml0pPj4yXTtlOmRve2lmKDB8Yylkb3tpZihmPWMrLTQ4fDAsMSE9KDB8dWVbMTU2KyhwPTB8YVsxNisoMHxhWygyPT0oMyZhW2M+''@;'; put 'put ''PjJdfDApP2M6ZikrNDA+PjJdKT4+Ml0pPj4wXSkpYnJlYWsgZTthW3ArMjEyPj4yXT0wLGM9MHxhW2FbMTgwKygwfGFbMTYrKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSk+PjJdKT4+Ml0+PjJdfXdoaWxlKDAhPSgwfGMpKX13aGlsZSgwKTttPTB8azAobCxtKX1BPTB8enQo''@;'; put 'put ''bCxBKX1lTihsKX1mdW5jdGlvbiBlTihsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGY9MTYrKGx8PTApfDAsYz0xOyEoKDB8Yyk+KDB8YVsxODArKHA9MHxhW2Y+PjJdKT4+Ml0pKTspZU4oMHxhWygwfGFbcCsxODQ+PjJdKSsoYzw8Mik+PjJdKSxjPWMrMXwwO2Zvcih3PTB8''@;'; put 'put ''THQobCk7dzspe2ZvcigwfGFbKGM9MjEyKygwfGFbdysxNj4+Ml0pfDApPj4yXXx8KGFbYz4+Ml09bCksQT0wfHkwKGwsdyk7QTspe2M9MHxhWzE3MisoMHxhW0ErMTY+PjJdKT4+Ml07ZTpkb3tpZigwfGMpZG97aWYobT1jKy00OHwwLDEhPSgwfHVlWzE1NisocD0wfGFbMTYrKDB8YVsoMj09''@;'; put 'put ''KDMmKGY9MHxhW2M+PjJdKXwwKT9jOm0pKzQwPj4yXSk+PjJdKT4+MF0pKWJyZWFrIGU7MHxhWyhwPXArMjEyfDApPj4yXXx8KGFbcD4+Ml09bCxmPTB8YVtjPj4yXSksYz0wfGFbYVsxODArKDB8YVsxNisoMHxhWygyPT0oMyZmfDApP2M6bSkrNDA+PjJdKT4+Ml0pPj4yXT4+Ml19d2hpbGUo''@;'; put 'put ''MCE9KDB8YykpfXdoaWxlKDApO0E9MHxrMChsLEEpfXc9MHx6dChsLHcpfX1mdW5jdGlvbiBkb2UobCxjKXtjfD0wO3ZhciBiLGssTSxwZSxIZSxldCxydCxscixmPTAscD0wLG09MCxBPTAsdz0wLEQ9MCxSPTAsRz0wLEs9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsamU9MCxHZT0wLGx0''@;'; put 'put ''PTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCxybj0wLHluPTAsRm49MDtscj1vZSxvZT1vZSszMjB8MCx1dD1scisyOTZ8MCxadD1scisyODB8MCxqZT1scisxMzZ8MCxIZT1scisxMjB8MCxSPWxyKzEwNHwwLGI9bHIrODh8MCxtPWxyKzgwfDAsYXQ9bHIrMTZ8MCxydD1s''@;'; put 'put ''cixrPWxyKzI2NHwwLE09bHIrMjQ4fDAsRD1scisyMzJ8MCxHPWxyKzIxNnwwLEdlPWxyKzIwMHwwLGx0PWxyKzE4NHwwLGV0PWxyKzE2OHwwLGt0PWxyKzE1MnwwLEE9MHxTVSgwfExpKGx8PTAsODc3OTgpLGMpLG1lPTAhPSgwfChwZT0wfFNVKDB8TGkobCw4NzgwNCksYykpKSxjPTAhPSgw''@;'; put 'put ''fEEpO2Rve2lmKGN8bWUmJjB8KHA9MHxhWzgrKDB8YVsoRm49bCsxNnwwKT4+Ml0pPj4yXSkpe2lmKCgwfGFbcCs0Pj4yXSk+MSl7eW49MHwkcigwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSksRm49MHwkcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0''@;'; put 'put ''MD4+Ml0pLGFbbT4+Ml09eW4sYVttKzQ+PjJdPUZuLFhyKDAsODc4MTAsbSk7YnJlYWt9cD0wfGFbNCsod3Q9MHxhW3A+PjJdKT4+Ml0sYmU9bCstNDh8MCxPZT0wfGFbKDI9PSgwfChLPTMmYVtsPj4yXSkpP2w6YmUpKzQwPj4yXSxMZT1sKzQ4fDAsSz0wfGFbKDM9PSgwfEspP2w6TGUpKzQw''@;'; put 'put ''Pj4yXSxybj0wfFFuKDQ4KSxhW3JuKzEyPj4yXT1hWyhCZT13dCsxMnwwKT4+Ml0sYVtybis4Pj4yXT1hWyhNdD13dCs4fDApPj4yXTtkb3tpZihjKXtpZih3PTE2KygwfGFbQSsxNj4+Ml0pfDAsYVt1dD4+Ml09YVsoQT0xNisoMHxhW09lKzE2Pj4yXSl8MCk+PjJdLGFbdXQrND4+Ml09YVtB''@;'; put 'put ''KzQ+PjJdLGFbdXQrOD4+Ml09YVtBKzg+PjJdLGFbdXQrMTI+PjJdPWFbQSsxMj4+Ml0sISgwfGt5KHV0LHcpKSl7Rz0wfCRyKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOkxlKSs0MD4+Ml0pLEV0PTB8JHIoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6YmUpKzQwPj4yXSkseW49MHxMaShsLDg3''@;'; put 'put ''Nzk4KSxhW2I+PjJdPUcsYVtiKzQ+PjJdPUV0LGFbYis4Pj4yXT15bixYcigwLDg3ODUxLGIpLHluPTI2O2JyZWFrfWlmKGFbdXQ+PjJdPWFbKGM9MHxhW3d0Pj4yXSk+PjJdLGFbdXQrND4+Ml09YVtjKzQ+PjJdLGFbdXQrOD4+Ml09YVtjKzg+PjJdLGFbdXQrMTI+PjJdPWFbYysxMj4+Ml0s''@;'; put 'put ''MHxreSh1dCx3KSl7aWYoYVt1dD4+Ml09YVsoRXQ9MTYrKDB8YVtLKzE2Pj4yXSl8MCk+PjJdLGFbdXQrND4+Ml09YVtFdCs0Pj4yXSxhW3V0Kzg+PjJdPWFbRXQrOD4+Ml0sYVt1dCsxMj4+Ml09YVtFdCsxMj4+Ml0sMHxreSh1dCx3KSl7Rz0wfCRyKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9s''@;'; put 'put ''OkxlKSs0MD4+Ml0pLEV0PTB8JHIoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6YmUpKzQwPj4yXSkseW49MHxMaShsLDg3Nzk4KSxhW1I+PjJdPUcsYVtSKzQ+PjJdPUV0LGFbUis4Pj4yXT15bixYcigwLDg3ODk0LFIpLHluPTI2O2JyZWFrfWlmKDB8YVtNdD4+Ml18fEJyKDg3OTM2LDg3OTQ3''@;'; put 'put ''LDM2OSw4Nzk1OCksRz13dCsxNnwwLGFbWnQ+PjJdPWFbYz4+Ml0sYVtadCs0Pj4yXT1hW2MrND4+Ml0sYVtadCs4Pj4yXT1hW2MrOD4+Ml0sYVtadCsxMj4+Ml09YVtjKzEyPj4yXSxhW3V0Pj4yXT1hW0c+PjJdLGFbdXQrND4+Ml09YVtHKzQ+PjJdLGFbdXQrOD4+Ml09YVtHKzg+PjJdLGFb''@;'; put 'put ''dXQrMTI+PjJdPWFbRysxMj4+Ml0sUUkocnQsWnQsdXQsdyksYVsoRXQ9NDgrKDB8YVt3dD4+Ml0pfDApPj4yXT1hW3J0Pj4yXSxhW0V0KzQ+PjJdPWFbcnQrND4+Ml0sYVtFdCs4Pj4yXT1hW3J0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbcnQrMTI+PjJdLEV0PTE2KygwfGFbd3Q+PjJdKXwwLGFb''@;'; put 'put ''WnQ+PjJdPWFbcnQ+PjJdLGFbWnQrND4+Ml09YVtydCs0Pj4yXSxhW1p0Kzg+PjJdPWFbcnQrOD4+Ml0sYVtadCsxMj4+Ml09YVtydCsxMj4+Ml0sYVt1dD4+Ml09YVtHPj4yXSxhW3V0KzQ+PjJdPWFbRys0Pj4yXSxhW3V0Kzg+PjJdPWFbRys4Pj4yXSxhW3V0KzEyPj4yXT1hW0crMTI+PjJd''@;'; put 'put ''LFN5KGssWnQsdXQpLGFbRXQ+PjJdPWFbaz4+Ml0sYVtFdCs0Pj4yXT1hW2srND4+Ml0sYVtFdCs4Pj4yXT1hW2srOD4+Ml0sYVtFdCsxMj4+Ml09YVtrKzEyPj4yXSxhW1p0Pj4yXT1hWyhjPTE2KyhFdD0wfGFbd3Q+PjJdKXwwKT4+Ml0sYVtadCs0Pj4yXT1hW2MrND4+Ml0sYVtadCs4Pj4y''@;'; put 'put ''XT1hW2MrOD4+Ml0sYVtadCsxMj4+Ml09YVtjKzEyPj4yXSxhW3V0Pj4yXT1hW0c+PjJdLGFbdXQrND4+Ml09YVtHKzQ+PjJdLGFbdXQrOD4+Ml09YVtHKzg+PjJdLGFbdXQrMTI+PjJdPWFbRysxMj4+Ml0sU3koTSxadCx1dCksYVtFdD4+Ml09YVtNPj4yXSxhW0V0KzQ+PjJdPWFbTSs0Pj4y''@;'; put 'put ''XSxhW0V0Kzg+PjJdPWFbTSs4Pj4yXSxhW0V0KzEyPj4yXT1hW00rMTI+PjJdLGM9MzIrKEV0PTB8YVt3dD4+Ml0pfDAsYVtadD4+Ml09YVsoRXQ9RXQrMTZ8MCk+PjJdLGFbWnQrND4+Ml09YVtFdCs0Pj4yXSxhW1p0Kzg+PjJdPWFbRXQrOD4+Ml0sYVtadCsxMj4+Ml09YVtFdCsxMj4+Ml0s''@;'; put 'put ''YVt1dD4+Ml09YVtydD4+Ml0sYVt1dCs0Pj4yXT1hW3J0KzQ+PjJdLGFbdXQrOD4+Ml09YVtydCs4Pj4yXSxhW3V0KzEyPj4yXT1hW3J0KzEyPj4yXSxTeShELFp0LHV0KSxhW2M+PjJdPWFbRD4+Ml0sYVtjKzQ+PjJdPWFbRCs0Pj4yXSxhW2MrOD4+Ml09YVtEKzg+PjJdLGFbYysxMj4+Ml09''@;'; put 'put ''YVtEKzEyPj4yXSwhKGM9MHxhW0JlPj4yXSkpe0V0PTM7YnJlYWt9RXQ9MysoMHx6aChsLDB8YVt3dD4+Ml0sMCwwLHJuLGMpKXwwO2JyZWFrfWZvcihBPXArLTF8MCxjPTA7ISgoMHxjKT49KDB8QSl8fDB8dE4oKDB8YVt3dD4+Ml0pKyhjPDw0KXwwLHcpKTspYz1jKzN8MDtpZihtPTAhPSgw''@;'; put 'put ''fChwPTB8YVtCZT4+Ml0pKSwoMHxjKSE9KDB8QSkpe20mJihjPTB8emgobCwwfGFbd3Q+PjJdLDAsYyxybixwKSksRXQ9YyszfDA7YnJlYWt9aWYobSl7RXQ9cm4rMzJ8MCxSPSgwfGFbd3Q+PjJdKSsoQTw8NCl8MCxhW1p0Pj4yXT1hWyhEPXd0KzMyfDApPj4yXSxhW1p0KzQ+PjJdPWFbRCs0''@;'; put 'put ''Pj4yXSxhW1p0Kzg+PjJdPWFbRCs4Pj4yXSxhW1p0KzEyPj4yXT1hW0QrMTI+PjJdLGFbdXQ+PjJdPWFbUj4+Ml0sYVt1dCs0Pj4yXT1hW1IrND4+Ml0sYVt1dCs4Pj4yXT1hW1IrOD4+Ml0sYVt1dCsxMj4+Ml09YVtSKzEyPj4yXSxRSShHLFp0LHV0LHcpLGFbRXQ+PjJdPWFbRz4+Ml0sYVtF''@;'; put 'put ''dCs0Pj4yXT1hW0crND4+Ml0sYVtFdCs4Pj4yXT1hW0crOD4+Ml0sYVtFdCsxMj4+Ml09YVtHKzEyPj4yXSxFdD1BO2JyZWFrfUJyKDg3OTc1LDg3OTQ3LDM4Nyw4Nzk1OCl9ZWxzZSB5bj0yNn13aGlsZSgwKTsyNj09KDB8eW4pJiYoYz1wKy0xfDAsMHxhW0JlPj4yXSYmKGFbKEV0PXJuKzMy''@;'; put 'put ''fDApPj4yXT1hWyhHPXd0KzMyfDApPj4yXSxhW0V0KzQ+PjJdPWFbRys0Pj4yXSxhW0V0Kzg+PjJdPWFbRys4Pj4yXSxhW0V0KzEyPj4yXT1hW0crMTI+PjJdKSxFdD1jKTtkb3tpZihtZSl7aWYobT0xNisoMHxhW3BlKzE2Pj4yXSl8MCxhW3V0Pj4yXT1hWyhtZT0xNisoMHxhW0srMTY+PjJd''@;'; put 'put ''KXwwKT4+Ml0sYVt1dCs0Pj4yXT1hW21lKzQ+PjJdLGFbdXQrOD4+Ml09YVttZSs4Pj4yXSxhW3V0KzEyPj4yXT1hW21lKzEyPj4yXSwhKDB8a3kodXQsbSkpKXtadD0wfCRyKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOkxlKSs0MD4+Ml0pLHV0PTB8JHIoMHxhWygyPT0oMyZhW2w+PjJdfDAp''@;'; put 'put ''P2w6YmUpKzQwPj4yXSkseW49MHxMaShsLDg3ODA0KSxhW0hlPj4yXT1adCxhW0hlKzQ+PjJdPXV0LGFbSGUrOD4+Ml09eW4sWHIoMCw4Nzk4NixIZSkseW49NTI7YnJlYWt9aWYoYVt1dD4+Ml09YVsoYz0oMHxhW3d0Pj4yXSkrKEV0PDw0KXwwKT4+Ml0sYVt1dCs0Pj4yXT1hW2MrND4+Ml0s''@;'; put 'put ''YVt1dCs4Pj4yXT1hW2MrOD4+Ml0sYVt1dCsxMj4+Ml09YVtjKzEyPj4yXSwwfGt5KHV0LG0pKXtpZihhW3V0Pj4yXT1hWyhhdD0xNisoMHxhW09lKzE2Pj4yXSl8MCk+PjJdLGFbdXQrND4+Ml09YVthdCs0Pj4yXSxhW3V0Kzg+PjJdPWFbYXQrOD4+Ml0sYVt1dCsxMj4+Ml09YVthdCsxMj4+''@;'; put 'put ''Ml0sMHxreSh1dCxtKSl7WnQ9MHwkcigwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpMZSkrNDA+PjJdKSx1dD0wfCRyKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmJlKSs0MD4+Ml0pLHluPTB8TGkobCw4NzgwNCksYVtqZT4+Ml09WnQsYVtqZSs0Pj4yXT11dCxhW2plKzg+PjJdPXluLFhyKDAs''@;'; put 'put ''ODgwMjksamUpLHluPTUyO2JyZWFrfWlmKDB8YVtCZT4+Ml18fEJyKDg3OTc1LDg3OTQ3LDQyOSw4Nzk1OCksamU9cm4rMzJ8MCxhW1p0Pj4yXT1hW2M+PjJdLGFbWnQrND4+Ml09YVtjKzQ+PjJdLGFbWnQrOD4+Ml09YVtjKzg+PjJdLGFbWnQrMTI+PjJdPWFbYysxMj4+Ml0sYVt1dD4+Ml09''@;'; put 'put ''YVtqZT4+Ml0sYVt1dCs0Pj4yXT1hW2plKzQ+PjJdLGFbdXQrOD4+Ml09YVtqZSs4Pj4yXSxhW3V0KzEyPj4yXT1hW2plKzEyPj4yXSxRSShydCxadCx1dCxtKSxhWyhhdD0oMHxhW3d0Pj4yXSkrKChmPUV0Ky0zfDApPDw0KXwwKT4+Ml09YVtydD4+Ml0sYVthdCs0Pj4yXT1hW3J0KzQ+PjJd''@;'; put 'put ''LGFbYXQrOD4+Ml09YVtydCs4Pj4yXSxhW2F0KzEyPj4yXT1hW3J0KzEyPj4yXSxjPSgwfGFbd3Q+PjJdKSsoKGF0PUV0Ky0xfDApPDw0KXwwLGFbWnQ+PjJdPWFbcnQ+PjJdLGFbWnQrND4+Ml09YVtydCs0Pj4yXSxhW1p0Kzg+PjJdPWFbcnQrOD4+Ml0sYVtadCsxMj4+Ml09YVtydCsxMj4+''@;'; put 'put ''Ml0sYVt1dD4+Ml09YVtqZT4+Ml0sYVt1dCs0Pj4yXT1hW2plKzQ+PjJdLGFbdXQrOD4+Ml09YVtqZSs4Pj4yXSxhW3V0KzEyPj4yXT1hW2plKzEyPj4yXSxTeShHZSxadCx1dCksYVtjPj4yXT1hW0dlPj4yXSxhW2MrND4+Ml09YVtHZSs0Pj4yXSxhW2MrOD4+Ml09YVtHZSs4Pj4yXSxhW2Mr''@;'; put 'put ''MTI+PjJdPWFbR2UrMTI+PjJdLGt0PShjPTB8YVt3dD4+Ml0pKyhFdDw8NCl8MCxhW1p0Pj4yXT1hWyhjPWMrKGF0PDw0KXwwKT4+Ml0sYVtadCs0Pj4yXT1hW2MrND4+Ml0sYVtadCs4Pj4yXT1hW2MrOD4+Ml0sYVtadCsxMj4+Ml09YVtjKzEyPj4yXSxhW3V0Pj4yXT1hW2plPj4yXSxhW3V0''@;'; put 'put ''KzQ+PjJdPWFbamUrND4+Ml0sYVt1dCs4Pj4yXT1hW2plKzg+PjJdLGFbdXQrMTI+PjJdPWFbamUrMTI+PjJdLFN5KGx0LFp0LHV0KSxhW2t0Pj4yXT1hW2x0Pj4yXSxhW2t0KzQ+PjJdPWFbbHQrND4+Ml0sYVtrdCs4Pj4yXT1hW2x0Kzg+PjJdLGFba3QrMTI+PjJdPWFbbHQrMTI+PjJdLGM9''@;'; put 'put ''KGt0PTB8YVt3dD4+Ml0pKyhFdCstMjw8NCl8MCxhW1p0Pj4yXT1hWyhhdD1rdCsoYXQ8PDQpfDApPj4yXSxhW1p0KzQ+PjJdPWFbYXQrND4+Ml0sYVtadCs4Pj4yXT1hW2F0Kzg+PjJdLGFbWnQrMTI+PjJdPWFbYXQrMTI+PjJdLGFbdXQ+PjJdPWFbcnQ+PjJdLGFbdXQrND4+Ml09YVtydCs0''@;'; put 'put ''Pj4yXSxhW3V0Kzg+PjJdPWFbcnQrOD4+Ml0sYVt1dCsxMj4+Ml09YVtydCsxMj4+Ml0sU3koZXQsWnQsdXQpLGFbYz4+Ml09YVtldD4+Ml0sYVtjKzQ+PjJdPWFbZXQrND4+Ml0sYVtjKzg+PjJdPWFbZXQrOD4+Ml0sYVtjKzEyPj4yXT1hW2V0KzEyPj4yXSwhKGM9MHxhW010Pj4yXSkpYnJl''@;'; put 'put ''YWs7Zj0wfE0xKGwsMHxhW3d0Pj4yXSxmLGYscm4sYyk7YnJlYWt9Zm9yKHA9RXQ7KDB8cCk+MDspe2ZvcihjPTA7NCE9KDB8Yyk7KWFbKGx0PWF0KyhjPDw0KXwwKT4+Ml09YVsoR2U9KDB8YVt3dD4+Ml0pKyhwLWM8PDQpfDApPj4yXSxhW2x0KzQ+PjJdPWFbR2UrND4+Ml0sYVtsdCs4Pj4y''@;'; put 'put ''XT1hW0dlKzg+PjJdLGFbbHQrMTI+PjJdPWFbR2UrMTI+PjJdLGM9YysxfDA7aWYoMHx0TihhdCxtKSl7Yz0wLHluPTQzO2JyZWFrfXA9cCstM3wwfWU6ZG97aWYoNDM9PSgwfHluKSlmb3IoOzspe2lmKHluPTAsND09KDB8YykpYnJlYWsgZTthWyh5bj0oMHxhW3d0Pj4yXSkrKHAtYzw8NCl8''@;'; put 'put ''MCk+PjJdPWFbKGx0PWF0KyhjPDw0KXwwKT4+Ml0sYVt5bis0Pj4yXT1hW2x0KzQ+PjJdLGFbeW4rOD4+Ml09YVtsdCs4Pj4yXSxhW3luKzEyPj4yXT1hW2x0KzEyPj4yXSxjPWMrMXwwLHluPTQzfX13aGlsZSgwKTtpZigwfHApe2lmKGY9cCstM3wwLCEoYz0wfGFbTXQ+PjJdKSlicmVhaztm''@;'; put 'put ''PTB8TTEobCwwfGFbd3Q+PjJdLGYsRXQrLTN8MCxybixjKTticmVha31pZigwfGFbTXQ+PjJdKXtmPXJuKzE2fDAsbD0wfGFbd3Q+PjJdLGFbWnQ+PjJdPWFbKGF0PXd0KzE2fDApPj4yXSxhW1p0KzQ+PjJdPWFbYXQrND4+Ml0sYVtadCs4Pj4yXT1hW2F0Kzg+PjJdLGFbWnQrMTI+PjJdPWFb''@;'; put 'put ''YXQrMTI+PjJdLGFbdXQ+PjJdPWFbbD4+Ml0sYVt1dCs0Pj4yXT1hW2wrND4+Ml0sYVt1dCs4Pj4yXT1hW2wrOD4+Ml0sYVt1dCsxMj4+Ml09YVtsKzEyPj4yXSxRSShrdCxadCx1dCxtKSxhW2Y+PjJdPWFba3Q+PjJdLGFbZis0Pj4yXT1hW2t0KzQ+PjJdLGFbZis4Pj4yXT1hW2t0Kzg+PjJd''@;'; put 'put ''LGFbZisxMj4+Ml09YVtrdCsxMj4+Ml0sZj0wO2JyZWFrfUJyKDg3OTM2LDg3OTQ3LDQ1Miw4Nzk1OCl9ZWxzZSB5bj01Mn13aGlsZSgwKTtmb3IoNTI9PSgwfHluKSYmKDB8YVtNdD4+Ml0mJihhWyhmPXJuKzE2fDApPj4yXT1hWyh5bj13dCsxNnwwKT4+Ml0sYVtmKzQ+PjJdPWFbeW4rND4+''@;'; put 'put ''Ml0sYVtmKzg+PjJdPWFbeW4rOD4+Ml0sYVtmKzEyPj4yXT1hW3luKzEyPj4yXSksZj0wKSxhWyhwPXJuKzR8MCk+PjJdPWM9RXQtZisxfDAsYVtybj4+Ml09MHxRbihjPDw0KSxjPTA7ISgoMHxjKT49KDB8YVtwPj4yXSkpOylhWyh5bj0oMHxhW3JuPj4yXSkrKGM8PDQpfDApPj4yXT1hWyhs''@;'; put 'put ''PSgwfGFbd3Q+PjJdKSsoZjw8NCl8MCk+PjJdLGFbeW4rND4+Ml09YVtsKzQ+PjJdLGFbeW4rOD4+Ml09YVtsKzg+PjJdLGFbeW4rMTI+PjJdPWFbbCsxMj4+Ml0sZj1mKzF8MCxjPWMrMXwwO0h0KDB8YVt3dD4+Ml0pLEh0KHd0KSxhW2FbOCsoMHxhW0ZuPj4yXSk+PjJdPj4yXT1ybn19d2hp''@;'; put 'put ''bGUoMCk7b2U9bHJ9ZnVuY3Rpb24gU1UobCxjKXt2YXIgZixwO3JldHVybiBjfD0wLHA9b2Usb2U9b2UrMTZ8MCxmPXAsMCE9KDB8KGx8PTApKSYmMCE9KDB8dWVbbD4+MF0pPyhjPTB8dFYoYyxsKSl8fChhW2Y+PjJdPWwsWHIoMCw4ODE0OSxmKSxjPTApOmM9MCxvZT1wLDB8Y31mdW5jdGlv''@;'; put 'put ''biBreShsLGMpe3ZhciBwLGY9MDtyZXR1cm4gMHwoK19bKGN8PTApPj4zXTw9KHA9K19bKGx8PTApPj4zXSkmJnA8PStfW2MrMTY+PjNdJiYrX1tjKzg+PjNdPD0oZj0rX1tsKzg+PjNdKT9mPD0rX1tjKzI0Pj4zXSYxOjApfWZ1bmN0aW9uIFFJKGwsYyxmLHApe2x8PTA7dmFyIGssRCxLLHBl''@;'; put 'put ''LG1lLGJlLE9lLExlLEdlLGx0LG09MCxBPTAsdz0wLGI9MCxNPTAsUj0wLEc9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTA7bHQ9b2Usb2U9b2UrNDY0fDAsRD1sdCs0OHwwLEdlPWx0KzMyfDAsTGU9bHQsQmU9bHQrMzY0fDAsSGU9bHQrMjY0fDAsZXQ9bHQrMTY0fDAscnQ9bHQrNjR8MCxL''@;'; put 'put ''PStfWyhjfD0wKT4+M10scGU9K19bYys4Pj4zXSxtZT0rX1soZnw9MCk+PjNdLGJlPStfW2YrOD4+M10sYVsoT2U9bHQrMTZ8MCk+PjJdPWFbKHB8PTApPj4yXSxhW09lKzQ+PjJdPWFbcCs0Pj4yXSxhW09lKzg+PjJdPWFbcCs4Pj4yXSxhW09lKzEyPj4yXT1hW3ArMTI+PjJdLGFbTGU+PjJd''@;'; put 'put ''PWFbKHA9cCsxNnwwKT4+Ml0sYVtMZSs0Pj4yXT1hW3ArND4+Ml0sYVtMZSs4Pj4yXT1hW3ArOD4+Ml0sYVtMZSsxMj4+Ml09YVtwKzEyPj4yXSxtZTwoaz0rX1tPZT4+M10pJiYobT1wZSsgKygwfH5+KChrLUspKihwZS1iZSkvKEstbWUpKSkpPj0rX1tPZSs4Pj4zXSYmbTw9K19bTGUrOD4+''@;'; put 'put ''M10/KFI9bSxHPWspOnc9NDtkb3tpZig0PT0oMHx3KSl7aWYobWU+KGI9K19bTGU+PjNdKSl7aWYoKEE9cGUrICsoMHx+figoYi1LKSoocGUtYmUpLyhLLW1lKSkpKT49KG09K19bT2UrOD4+M10pJiZBPD0rX1tMZSs4Pj4zXSl7Uj1BLEc9YjticmVha319ZWxzZSBtPStfW09lKzg+PjNdO2lm''@;'; put 'put ''KGJlPG0mJiEoISgoTT1LKyArKDB8fn4oKG0tcGUpKihLLW1lKS8ocGUtYmUpKSkpPj1rKXwhKE08PWIpKSl7Uj1tLEc9TTticmVha31pZihiZT4obT0rX1tMZSs4Pj4zXSkmJiEoISgoamU9SysgKygwfH5+KChtLXBlKSooSy1tZSkvKHBlLWJlKSkpKT49ayl8IShqZTw9YikpKXtSPW0sRz1q''@;'; put 'put ''ZTticmVha31hW0Q+PjJdPWFbYz4+Ml0sYVtEKzQ+PjJdPWFbYys0Pj4yXSxhW0QrOD4+Ml09YVtjKzg+PjJdLGFbRCsxMj4+Ml09YVtjKzEyPj4yXSxCZT0wfEpJKEQsQmUpLGFbRD4+Ml09YVtmPj4yXSxhW0QrND4+Ml09YVtmKzQ+PjJdLGFbRCs4Pj4yXT1hW2YrOD4+Ml0sYVtEKzEyPj4y''@;'; put 'put ''XT1hW2YrMTI+PjJdLEhlPTB8SkkoRCxIZSksYVtEPj4yXT1hW09lPj4yXSxhW0QrND4+Ml09YVtPZSs0Pj4yXSxhW0QrOD4+Ml09YVtPZSs4Pj4yXSxhW0QrMTI+PjJdPWFbT2UrMTI+PjJdLGV0PTB8SkkoRCxldCksYVtEPj4yXT1hW0xlPj4yXSxhW0QrND4+Ml09YVtMZSs0Pj4yXSxhW0Qr''@;'; put 'put ''OD4+Ml09YVtMZSs4Pj4yXSxhW0QrMTI+PjJdPWFbTGUrMTI+PjJdLHJ0PTB8SkkoRCxydCksYVtHZT4+Ml09QmUsYVtHZSs0Pj4yXT1IZSxhW0dlKzg+PjJdPWV0LGFbR2UrMTI+PjJdPXJ0LFhyKDEsODgwNzEsR2UpLEJyKDEzODM5NCw4Nzk0Nyw3OCw4ODEyMyl9fXdoaWxlKDApO19bbD4+''@;'; put 'put ''M109RyxfW2wrOD4+M109UixvZT1sdH1mdW5jdGlvbiBTeShsLGMsZil7dmFyIHA7cD0uNSooK19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10pLF9bKGx8PTApPj4zXT0uNSooK19bZj4+M10rICtfW2M+PjNdKSxfW2wrOD4+M109cH1mdW5jdGlvbiB0TihsLGMpe2x8PTAsY3w9MDt2''@;'; put 'put ''YXIgYixrLE0sZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoTT1vZSxvZT1vZSs4MHwwLGI9TSsxNnwwLGs9TSxwPTA7NCE9KDB8cCk7KWFbKHc9YisocDw8NCl8MCk+PjJdPWFbKEE9bCsocDw8NCl8MCk+PjJdLGFbdys0Pj4yXT1hW0ErND4+Ml0sYVt3Kzg+PjJdPWFbQSs4Pj4yXSxhW3crMTI+''@;'; put 'put ''PjJdPWFbQSsxMj4+Ml0scD1wKzF8MDtyZXR1cm4oZj0rTXkobCwwLDEsK19bYz4+M10sK19bKHA9Yys4fDApPj4zXSwrX1sodz1jKzI0fDApPj4zXSkpPj0wJmY8Mj93dShrLGIsMyxmLGwsMCk6Zj0yLChtPStNeShsLDAsZj4xPzE6ZiwrX1soQT1jKzE2fDApPj4zXSwrX1twPj4zXSwrX1t3''@;'; put 'put ''Pj4zXSkpPj0wJm08ZiYmKHd1KGssYiwzLG0sbCwwKSxmPW0pLChtPSthayhsLDAsZj4xPzE6ZiwrX1twPj4zXSwrX1tjPj4zXSwrX1tBPj4zXSkpPj0wJm08ZiYmKHd1KGssYiwzLG0sbCwwKSxmPW0pLChtPSthayhsLDAsZj4xPzE6ZiwrX1t3Pj4zXSwrX1tjPj4zXSwrX1tBPj4zXSkpPj0w''@;'; put 'put ''Jm08ZiYmKHd1KGssYiwzLG0sbCwwKSxmPW0pLG9lPU0sZjwyfDB9ZnVuY3Rpb24gTXkobCxjLGYscCxtLEEpe2x8PTAsYz0rYyxmPStmLHA9K3AsbT0rbSxBPStBO3ZhciBiLGssTSxELHc9MDtEPW9lLG9lPW9lKzE0NHwwLGs9RCs4MHwwLE09RCsxNnwwLGI9RDtlOmRve2lmKGMhPWYpe3N3''@;'; put 'put ''aXRjaCgwfFF2ZShsLHApKXtjYXNlIDA6Yz0tMTticmVhayBlO2Nhc2UgMTppZigrZW8oKygrX1tsKzQ4Pj4zXS1wKSk8PS4wMDUpe2M9ISgoYz0rX1tsKzU2Pj4zXSk+PW0pfCEoYzw9QSk/LTE6ZjticmVhayBlfX13dShiLGwsMywuNSxrLE0pLChjPStNeShrLGMsdz0uNSooZitjKSxwLG0s''@;'; put 'put ''QSkpPj0wfHwoYz0rTXkoTSx3LGYscCxtLEEpKX19d2hpbGUoMCk7cmV0dXJuIG9lPUQsK2N9ZnVuY3Rpb24gYWsobCxjLGYscCxtLEEpe2x8PTAsYz0rYyxmPStmLHA9K3AsbT0rbSxBPStBO3ZhciBiLGssTSxELHc9MDtEPW9lLG9lPW9lKzE0NHwwLGs9RCs4MHwwLE09RCsxNnwwLGI9RDtl''@;'; put 'put ''OmRve2lmKGMhPWYpe3N3aXRjaCgwfE1VKGwscCkpe2Nhc2UgMDpjPS0xO2JyZWFrIGU7Y2FzZSAxOmlmKCtlbygrKCtfW2wrNTY+PjNdLXApKTw9LjAwNSl7Yz0hKChjPStfW2wrNDg+PjNdKT49bSl8IShjPD1BKT8tMTpmO2JyZWFrIGV9fXd1KGIsbCwzLC41LGssTSksKGM9K2FrKGssYyx3''@;'; put 'put ''PS41KihmK2MpLHAsbSxBKSk+PTB8fChjPSthayhNLHcsZixwLG0sQSkpfX13aGlsZSgwKTtyZXR1cm4gb2U9RCwrY31mdW5jdGlvbiBNVShsLGMpe3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtmb3IoZj0xLHA9bT0oQT0rX1s4KyhsfD0wKT4+M10pPChjPStjKT8tMTpBPmMmMSxtPTA9''@;'; put 'put ''PSgwfG0pJjE7NCE9KDB8Zik7KXc9bSsoMCE9KDB8cCkmKDB8KGI9KEE9K19bbCsoZjw8NCkrOD4+M10pPGM/LTE6QT5jJjEpKSE9KDB8cCkmMSl8MCxmPWYrMXwwLHA9YixtPXc7cmV0dXJuIDB8bX1mdW5jdGlvbiBRdmUobCxjKXt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKGY9''@;'; put 'put ''MSxwPW09KEE9K19bKGx8PTApPj4zXSk8KGM9K2MpPy0xOkE+YyYxLG09MD09KDB8bSkmMTs0IT0oMHxmKTspdz1tKygwIT0oMHxwKSYoMHwoYj0oQT0rX1tsKyhmPDw0KT4+M10pPGM/LTE6QT5jJjEpKSE9KDB8cCkmMSl8MCxmPWYrMXwwLHA9YixtPXc7cmV0dXJuIDB8bX1mdW5jdGlvbiBK''@;'; put 'put ''SShsLGMpe3ZhciBmLHAsbTtyZXR1cm4gY3w9MCxmPW9lLG9lPW9lKzE2fDAsbT0rX1s4KyhsfD0wKT4+M10sX1socD1mKT4+M109K19bbD4+M10sX1twKzg+PjNdPW0sYW8oYyw4ODEzNyxwKSxvZT1mLDB8Y31mdW5jdGlvbiBFVShsKXtyZXR1cm4gMHwoMT09KDB8dWVbMTU2KyhsPTB8YVsx''@;'; put 'put ''NisobHw9MCk+PjJdKT4+MF0pJiYxPT0oMHxhW2wrMTc2Pj4yXSkmJjE9PSgwfGFbbCsxODQ+PjJdKT8wPT0oMHxhW2wrMTA0Pj4yXSkmMTowKX1mdW5jdGlvbiBuTihsKXtyZXR1cm4gMHwoMT09KDB8dWVbMTU2KyhsPTB8YVsxNisobHw9MCk+PjJdKT4+MF0pJiYxPT0oMHxhW2wrMTg0Pj4y''@;'; put 'put ''XSkmJjE9PSgwfGFbbCsxNzY+PjJdKT8wPT0oMHxhW2wrMTA0Pj4yXSkmMTowKX1mdW5jdGlvbiB4VShsLGMpe3ZhciBmLHA7MCE9KDB8KHA9MHxhWyhsPSgwfGFbMjY4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSsoYVsyMzIrKGY9MHxhWzE2KyhjfD0wKT4+Ml0pPj4yXTw8Mil8MCk+PjJd''@;'; put 'put ''KSkmJigwfGFbMjM2KygwfGFbcCsxNj4+Ml0pPj4yXSk8PSgwfGFbZisyMzY+PjJdKXx8KGFbbD4+Ml09Yyl9ZnVuY3Rpb24gVFUobCxjKXtsfD0wLGN8PTA7Zm9yKHZhciBmPTAscD0wOzB8dWVbMTEyKyhwPTB8YVtsKzE2Pj4yXSk+PjBdOylsPTB8YVtwKzExNj4+Ml07Zm9yKDswfHVlWzEx''@;'; put 'put ''MisoZj0wfGFbYysxNj4+Ml0pPj4wXTspYz0wfGFbZisxMTY+PjJdO3JldHVybiAwfChsPTA9PSgwfHVlW3ArMTUzPj4wXSkmJjA9PSgwfHVlW2YrMTUzPj4wXSk/KDB8dnIoKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoZj0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0p''@;'; put 'put ''Pj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDAsKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwocD0zJmFbYz4+Ml0pKT9jOmMrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygy''@;'; put 'put ''PT0oMHxwKT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDApKT4wJjE6MCl9ZnVuY3Rpb24gTDcobCxjKXtsfD0wLGN8PTA7dmFyIGIsayxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihrPW9lLG9lPW9lKzU0NHwwLGZ1bmN0aW9uIG1vZShsLGMsZil7bHw9MCxhWyhjfD0wKT4+Ml09Znw9''@;'; put 'put ''MCxhW2MrND4+Ml09Zis1MTIsYVtjKzEyPj4yXT0wLGFbYys4Pj4yXT0wLGFbbD4+Ml09YyxhW2wrND4+Ml09YyxhW2wrOD4+Ml09Zn0oYj1rKzUyOHwwLGsrNTEyfDAsayksdWVbMTkzNzcwXT0oZj0xKygwfHVlWzE5Mzc3MF0pPDwyND4+MjQpPDwyND4+MjQ9PTA/MTpmLGFbMjIwKyhmPTB8''@;'; put 'put ''YVtsKzE2Pj4yXSk+PjJdPTAsYVtmKzIzMj4+Ml09MCxmPSgwfGMpPjAsYz0wfEx0KGwpO2M7KWYmJjAhPSgwfCh3PTB8YVsyMTIrKEE9MHxhW2MrMTY+PjJdKT4+Ml0pKT8obT0wfGFbKDB8YVsyNjgrKDB8YVt3KzE2Pj4yXSk+PjJdKSsoYVtBKzIzMj4+Ml08PDIpPj4yXSxwPTcpOnA9Niw2''@;'; put 'put ''PT0oMHxwKSYmKHA9MCwoMHxjKT09KDB8bzEoYykpKSYmKG09YyxwPTcpLDc9PSgwfHApJiYoMHx1ZVsxNTcrKDB8YVttKzE2Pj4yXSk+PjBdKSE9KDB8dWVbMTkzNzcwXSkmJih2b2UobCksQW9lKGIsbCxtKSx5b2UobCkpLGM9MHx6dChsLGMpOyhmdW5jdGlvbiB3b2UobCl7dmFyIGM9MDtm''@;'; put 'put ''b3IobD0wfGFbMTIrKDB8YVsobHw9MCk+PjJdKT4+Ml07bDspYz0wfGFbbCsxMj4+Ml0sSHQoMHxhW2w+PjJdKSxIdChsKSxsPWN9KShiKSxvZT1rfWZ1bmN0aW9uIHZvZShsKXthWzE5MisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT0wLGFbNDY3OTNdPTB9ZnVuY3Rpb24gQW9lKGwsYyxmKXtj''@;'; put 'put ''fD0wO3ZhciBrLE0sRCxHLEsscD0wLG09MCxBPTAsdz0wLGI9MCxSPTA7Sz1vZSxvZT1vZSszMnwwLEc9SyxpTihsfD0wLGZ8PTApLGs9Rys4fDAsTT1HKzE2fDAsRD1HKzI0fDA7ZTpmb3IoO1I9MHxFbChsKSxSOylpZihmPVIrMTZ8MCwoMHx1ZVsxNTcrKDB8YVtmPj4yXSk+PjBdKSE9KDB8''@;'; put 'put ''dWVbMTkzNzcwXSkpZm9yKGJvZShjLFIpLEE9MHxhW2Y+PjJdLG09QSsxODB8MCxiPTB8YVttKzQ+PjJdLHc9RyxhW3c+PjJdPWFbbT4+Ml0sYVt3KzQ+PjJdPWIsdz1BKzE3MnwwLGI9MHxhW3crND4+Ml0sbT1rLGFbbT4+Ml09YVt3Pj4yXSxhW20rND4+Ml09YixtPUErMTg4fDAsYj0wfGFb''@;'; put 'put ''bSs0Pj4yXSx3PU0sYVt3Pj4yXT1hW20+PjJdLGFbdys0Pj4yXT1iLEE9QSsxOTZ8MCx3PTB8YVtBKzQ+PjJdLGI9RCxhW2I+PjJdPWFbQT4+Ml0sYVtiKzQ+PjJdPXcsYj0zOzspe2lmKCgwfGIpPD0tMSljb250aW51ZSBlO2Y9MHxhW0crKGI8PDMpPj4yXTt0OmRve2lmKDB8Zilmb3Iodz0o''@;'; put 'put ''MHxhW0crKGI8PDMpKzQ+PjJdKS0xfDAsQT1mKyh3PDwyKXwwOzspe2lmKCgwfHcpPD0tMSlicmVhayB0OygwfChmPTB8YVsoMj09KDB8KG09MyZhWyhwPTB8YVtBPj4yXSk+PjJdKSk/cDpwKy00OHwwKSs0MD4+Ml0pKT09KDB8UikmJihmPTB8YVsoMz09KDB8bSk/cDpwKzQ4fDApKzQwPj4y''@;'; put 'put ''XSksKDB8dWVbMTU3KygwfGFbZisxNj4+Ml0pPj4wXSkhPSgwfHVlWzE5Mzc3MF0pJiYoMHxmKT09KDB8bzEoZikpJiZpTihsLGYpLEE9QSstNHwwLHc9dystMXwwfX13aGlsZSgwKTtiPWIrLTF8MH1vZT1LfWZ1bmN0aW9uIHlvZShsKXt2YXIgZixwLGM9MCxtPTA7YVsobT0yMjArKGM9MHxh''@;'; put 'put ''WyhmPTE2KyhsfD0wKXwwKT4+Ml0pfDApPj4yXT1sPTErKHA9MHxhW20+PjJdKXwwLGw9KGM9MHxhW2MrMjE2Pj4yXSk/MHxsMChjLGw8PDIpOjB8UW4obDw8MiksYVsyMTYrKG09MHxhW2Y+PjJdKT4+Ml09bCxhW2wrKHA8PDIpPj4yXT1hW20rMTkyPj4yXX1mdW5jdGlvbiBpTihsLGMpe2N8''@;'; put 'put ''PTA7dmFyIHAsbSxBLHcsYixmPTA7Yj1vZSxvZT1vZSsxNnwwLG09Yis4fDAscD1iLCgwfChmPTB8YVsodz04KyhsfD0wKXwwKT4+Ml0pKT09KDB8YVs0KyhsPTB8YVsoQT1sKzR8MCk+PjJdKT4+Ml0pJiYoKGY9MHxhW2wrMTI+PjJdKXx8KChmPTB8bXIoMTYpKXx8WHIoMSw5ODk2OSxwKSxh''@;'; put 'put ''W2YrOD4+Ml09YVtBPj4yXSxhW2YrMTI+PjJdPTAsbD0wfG1yKDRlNiksYVtmPj4yXT1sLGx8fChYcigxLDg4Mzc3LG0pLGw9MHxhW2Y+PjJdKSxhW2YrND4+Ml09bCs0ZTYsYVsxMisoMHxhW0E+PjJdKT4+Ml09ZiksYVtBPj4yXT1mLGFbdz4+Ml09Zj0wfGFbZj4+Ml0pLHVlWzE1NysoMHxh''@;'; put 'put ''W2MrMTY+PjJdKT4+MF09MSsoMHxidFsxOTM3NzBdKSxhW3c+PjJdPWYrNCxhW2Y+PjJdPWMsb2U9Yn1mdW5jdGlvbiBFbChsKXt2YXIgZixwLG0sYz0wLEE9MDtyZXR1cm4oMHwoYz0wfGFbKG09OCsobHw9MCl8MCk+PjJdKSk9PSgwfGFbKHA9MHxhWyhmPWwrNHwwKT4+Ml0pPj4yXSk/KDB8''@;'; put 'put ''cCk9PSgwfGFbbD4+Ml0pP2M9MDooYVtmPj4yXT1jPTB8YVtwKzg+PjJdLGFbbT4+Ml09Yz0wfGFbYys0Pj4yXSxBPTQpOkE9NCw0PT0oMHxBKSYmKGFbbT4+Ml09Yz1jKy00fDAsYz0wfGFbYz4+Ml0pLDB8Y31mdW5jdGlvbiBib2UobCxjKXtjfD0wO3ZhciBmLHAsbT0wO2FbKG09MjMyKyhw''@;'; put 'put ''PTB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml09MSsoMHxhW20+PjJdKSx1ZVsxNTcrKG09MHxhW2MrMTY+PjJdKT4+MF09MHx1ZVsxOTM3NzBdLGY9bSsxNjh8MCwobD0wfGFbNDY3OTNdKT8oYVtmPj4yXT1sLGFbMTY0KygwfGFbbCsxNj4+Ml0pPj4yXT1jKTooYVtmPj4yXT0wLGFbcCsxOTI+''@;'; put 'put ''PjJdPWMpLGFbNDY3OTNdPWMsYVttKzE2ND4+Ml09MH1mdW5jdGlvbiBZNihsKXt2YXIgZixBLGM9MCxwPTAsbT0wLHc9MDtmPShBPSgwfChtPTB8YVsyMzYrKDB8YVsocD0xNisodz0wfGFbKDM9PSgwfChjPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSl8MCk+PjJdKT4+Ml0p''@;'; put 'put ''KTwoMHwoYz0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDB8Yyk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSkpP2M6bSxwPSh3PTB8YVsxOTYrKDB8YVsxNisoMHxWMCh3KSk+PjJdKT4+Ml0pKyhhWzIzMisoMHxhW3A+PjJdKT4+Ml08PDYpKzR8MCxjPUE/bTpjO2U6Zm9yKDtjPWMr''@;'; put 'put ''MXwwLCEoKDB8Yyk+PSgwfGYpKTspe3N3aXRjaCgwfHVlWzE1NisobT0wfGFbMTYrKDB8YVsoMHxhW3A+PjJdKSsoYzw8Mik+PjJdKT4+Ml0pPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6Y29udGludWUgZX1pZigwfGFbbSsxMDQ+PjJdKWJyZWFrfWlmKCgwfGMp''@;'; put 'put ''PT0oMHxmKSlkb3t1ZVsxMTMrKHc9MHxhW2wrMTY+PjJdKT4+MF09MSxsPTB8YVt3KzE3Mj4+Ml19d2hpbGUoMCE9KDB8bCkpfWZ1bmN0aW9uIE83KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKDB8VHRbMjM2KyhsPTB8YVsobT0xNisobHw9MCl8MCk+PjJdKT4+MV0mJkJyKDg4NDM0LDg4''@;'; put 'put ''NDE3LDE5MCw4ODQ1MyksYz0zKygwfFR0W2wrMjM4Pj4xXSl8MCxjPTY0KyhsPShsPTB8YVtsKzE5Nj4+Ml0pPzB8bDAobCxjPDw2KTowfFFuKGM8PDYpKXwwLGFbMTk2KyhsPTB8YVttPj4yXSk+PjJdPWMsbD0wfFR0W2wrMjM4Pj4xXTshKCgwfGwpPD0tMSk7KXtmPWMrKGw8PDYpfDAsbD1j''@;'; put 'put ''KygocD1sKy0xfDApPDw2KXwwLGM9Zis2NHwwO2Rve2FbZj4+Ml09YVtsPj4yXSxmPWYrNHwwLGw9bCs0fDB9d2hpbGUoKDB8Zik8KDB8YykpO2w9cCxjPTB8YVsxOTYrKDB8YVttPj4yXSk+PjJdfWFbYysobDw8NikrOD4+Ml09MCxhW2MrKGw8PDYpPj4yXT0wLGY9MHxtcig4KSxhWyhwPTB8''@;'; put 'put ''YVsxOTYrKG09MHxhW20+PjJdKT4+Ml0pKyhsPDw2KSsxMj4+Ml09ZixhW3ArKGw8PDYpKzQ+PjJdPWYsYVtwKyhsPDw2KSs1Nj4+Ml09MCxfW3ArKGw8PDYpKzI0Pj4zXT0xLF9bcCsobDw8NikrMTY+PjNdPTEsX1twKyhsPDw2KSs0MD4+M109MSxfW3ArKGw8PDYpKzMyPj4zXT0xLFR0Wyht''@;'; put 'put ''PW0rMjM2fDApPj4xXT0oMHxUdFttPj4xXSktMTw8MTY+PjE2fWZ1bmN0aW9uIEV5KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDswfGFbOTYrKDB8YVsodz0xNisobHw9MCl8MCk+PjJdKT4+Ml0mJihNPWwrNDh8MCxiPTB8''@;'; put 'put ''VjAoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6TSkrNDA+PjJdKSxjPTB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6TSkrNDA+PjJdKT4+Ml0pPj4yXSxrPTB8ZnVuY3Rpb24gdUoobCxjKXt2YXIgdyxiLGssRCxSLGY9MCxwPTAsbT0wLEE9MCxNPTA7Zm9yKFI9b2Us''@;'; put 'put ''b2U9b2UrMzJ8MCxtPVIrNHwwLEE9Uix3PTB8YVsobD0wfGFbMTk2KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSsoKE09KDB8YVsyMzIrKDB8YVsxNisocD0wfGFbKDM9PSgwfChmPTMmYVsoY3w9MCk+PjJdKSk/YzpjKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLTF8MCk8PDYpKzQ+PjJdLGw9''@;'; put 'put ''MHxhW2wrKE08PDYpPj4yXSxhWyhNPTgrKGs9Uis4fDApfDApPj4yXT0tMSxhW2s+PjJdPS0xLGFbKEQ9aysxMnwwKT4+Ml09bCxhWyhiPWsrNHwwKT4+Ml09bCxjSihwLDB8YVsoMj09KDB8Zik/YzpjKy00OHwwKSs0MD4+Ml0sbSxBKSxtPTB8YVttPj4yXSxBPTB8YVtBPj4yXSxmPTAscD1s''@;'; put 'put ''LGM9LTE7ISgoMHxmKT49KDB8cCl8fChwPXArLTF8MCxmSigwfGFbdysoZjw8Mik+PjJdLGssbSxBKSwoMHxmKSE9KDB8cCkmJmZKKDB8YVt3KyhwPDwyKT4+Ml0sayxtLEEpLGw9MHxhW2I+PjJdLGM9MHxhW2s+PjJdLChsLWN8MCk8MikpOylmPWYrMXwwO3JldHVybiBvZT1SLDB8KChsPSgw''@;'; put 'put ''fGMpPigwfGwpPygwfGFbRD4+Ml0pKygwfGFbTT4+Ml0pfDA6bCtjfDApKzF8MCkvMn0oYixsKSxwPShBPTB8YVthWyhtPTB8YVsxOTYrKGY9MHxhWyhEPWIrMTZ8MCk+PjJdKT4+Ml0pKygoUj1jKy0xfDApPDw2KSs0Pj4yXT4+Ml0pPytfWzI0KygwfGFbQSsxNj4+Ml0pPj4zXS0rX1ttKyhS''@;'; put 'put ''PDw2KSsxNj4+M106K19bbSsoYzw8NikrMjQ+PjNdKyArX1syNCsoMHxhWzE2KygwfGFbYVttKyhjPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdKyArKDB8YVtmKzI1Mj4+Ml0pLGM9MHxmdW5jdGlvbiBPbGUobCxjLGYpe2Z8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKHA9KG09MHxh''@;'; put 'put ''WzE5NisoMHxhWyhBPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChjfD0wKTw8Nil8MCxtPShtPTB8YVttKyhjPDw2KSs0Pj4yXSk/MHxsMChtLDgrKGFbcD4+Ml08PDIpfDApOjB8UW4oOCsoYVtwPj4yXTw8Mil8MCksYVsocD0wfGFbMTk2KygwfGFbQT4+Ml0pPj4yXSkrKGM8PDYpKzQ+PjJd''@;'; put 'put ''PW0scD0wfGFbcCsoYzw8Nik+PjJdOyEoKDB8cCk8PSgwfGYpKTspYVttKyhwPDwyKT4+Ml09Yj0wfGFbbSsoKHc9cCstMXwwKTw8Mik+PjJdLGFbKGI9MjM2KygwfGFbYisxNj4+Ml0pfDApPj4yXT0xKygwfGFbYj4+Ml0pLHA9dztyZXR1cm4gdz0wfFNmKGwpLGFbKGI9bSsoZjw8Mil8MCk+''@;'; put 'put ''PjJdPXcsYVsyMzYrKHc9MHxhW3crMTY+PjJdKT4+Ml09ZixhW3crMjMyPj4yXT1jLGFbKEE9KDB8YVsxOTYrKDB8YVtBPj4yXSk+PjJdKSsoYzw8Nil8MCk+PjJdPXc9MSsoMHxhW0E+PjJdKXwwLGFbbSsodzw8Mik+PjJdPTAsMHxhW2I+PjJdfShiLFIsayksSz0rX1syNCsoYj0wfGFbOTYr''@;'; put 'put ''KDB8YVt3Pj4yXSk+PjJdKT4+M10sRz0rX1tiKzMyPj4zXSxfWzgwKyhmPTB8YVsobT1jKzE2fDApPj4yXSk+PjNdPXBlPSh3PTA9PSgxJmFbMTE2KygwfGFbRD4+Ml0pPj4yXXwwKSk/RzpLLGs9fn4oLjUqcGUpLF9bZis5Nj4+M109Rz0uNSoodz9LOkcpLF9bZis4OD4+M109RyxhW2YrMTA0''@;'; put 'put ''Pj4yXT1iLF9bZisyND4+M109KyhrK35+cHwwKSxmPTB8a2YoYywwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpNKSs0MD4+Ml0sbCksX1sxNisoZj0wfGFbZisxNj4+Ml0pPj4zXT0tK19bODgrKDB8YVttPj4yXSk+PjNdLF9bZis1Nj4+M109K19bOTYrKDB8YVsxNisoMHxhWygzPT0oMyZhW2w+''@;'; put 'put ''PjJdfDApP2w6TSkrNDA+PjJdKT4+Ml0pPj4zXSx1ZVtmKzExMj4+MF09NCxmPWwrLTQ4fDAsYz0wfGtmKGMsMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6ZikrNDA+PjJdLGwpLF9bMTYrKGM9MHxhW2MrMTY+PjJdKT4+M109K19bOTYrKG09MHxhW20+PjJdKT4+M10sX1tjKzU2Pj4zXT0rX1s4''@;'; put 'put ''OCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpmKSs0MD4+Ml0pPj4yXSk+PjNdLHVlW2MrMTEyPj4wXT00LCtfWyhmPShjPTB8YVsxOTYrKDB8YVtEPj4yXSk+PjJdKSsoUjw8NikrMTZ8MCk+PjNdPChwPSsoMHxrKSkmJihfW2Y+PjNdPXApLCtfWyhjPWMrKFI8PDYpKzI0fDAp''@;'; put 'put ''Pj4zXTxwJiYoX1tjPj4zXT1wKSxhW20rMTEyPj4yXT1sKX1mdW5jdGlvbiBfb2UobCxjLGYpe2N8PTAsZnw9MDt2YXIgayxLLG1lLGJlLE9lLEJlLEhlLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MCxSPTAsRz0wLHBlPTAsTGU9MDtIZT1vZSxvZT1vZSsxNjB8MCxiZT1IZSsyMHwwLG1l''@;'; put 'put ''PUhlKzE2fDAsaz1IZSxNPUhlKzMyfDAsT2U9MHxhWzE1MisobHw9MCk+PjJdLGFbKExlPUhlKzI0fDApPj4yXT0wLGFbYmU+PjJdPTAsYVttZT4+Ml09MCxCZT0wfGI1KGwpLGFbQmUrND4+Ml09MyxhW0JlKzg+PjJdPWMsYVtCZSsxMj4+Ml09OSwwfChiPTB8YVs5NisoMHxhWyhLPWMrMTZ8''@;'; put 'put ''MCk+PjJdKT4+Ml0pJiYwPT0oMHx1ZVtiKzgyPj4wXSkmJigwfEo2KDB8TGkoYywxMDAxMDUpLDApKTw8MjQ+PjI0JiYoVHRbKGI9QmUrMjYwfDApPj4xXT01MTJ8VHRbYj4+MV0pLDB8ZiYmMHxhWzgrKDB8YVtLPj4yXSk+PjJdJiZHYyhsLGYpLDB8KGY9MHxhWzQ3MjA2XSkmJjB8KHA9MHxG''@;'; put 'put ''byhjLGYpKSYmMHx1ZVtwPj4wXSYmWWYobCwrY2woYywwfGFbNDcyMDZdLDEsMCkpO2Rve2lmKDE2Nzc3MjE2Jk9lfDApe2lmKGY9Yys0OHwwLCgwfGFyWzE3OCsoMHxhWzE2KygwfGZyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSkpPj4yXSk+PjFdKT4yKXtfW0JlKzE3Nj4+''@;'; put 'put ''M109KygwfH5+KCh3PTcyKitfWzE2KygwfGFbMTMyKygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSk+PjJdKT4+Ml0pPj4zXSkrKHc+PTA/LjU6LS41KSkpLF9bQmUrMTg0Pj4zXT0rKDB8fn4oKHc9NzIqK19bMTYrKDB8YVsxMzIrKDB8YVsxNisoMHxhWygyPT0o''@;'; put 'put ''MyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjNdKSsodz49MD8uNTotLjUpKSk7YnJlYWt9YVsoYj1CZSsxNzZ8MCk+PjJdPTAsYVtiKzQ+PjJdPTAsYVtiKzg+PjJdPTAsYVtiKzEyPj4yXT0wO2JyZWFrfX13aGlsZSgwKTtpZigzMjc2OCZPZXwwJiYoKGY9MHxh''@;'; put 'put ''Wzk2KyhiPTB8YVtLPj4yXSk+PjJdKT9hW0JlKzE5Mj4+Ml09Zj0wfGFbZj4+Ml06Zj0wfGFbQmUrMTkyPj4yXSxhWyhwPUJlKzE5NnwwKT4+Ml09ZixhWyhBPUJlKzIwNHwwKT4+Ml09ZixhWyhtPUJlKzIwMHwwKT4+Ml09ZiwwfChmPTB8YVtiKzEwOD4+Ml0pJiYoYVtwPj4yXT1hW2Y+PjJd''@;'; put 'put ''KSwwfChmPTB8YVtiKzEwND4+Ml0pJiYoYVttPj4yXT1hW2Y+PjJdKSwwfChmPTB8YVtiKzEwMD4+Ml0pJiYoYVtBPj4yXT1hW2Y+PjJdKSksNjU1MzYmT2Upe29zKGssMTI4LE0pLGFbQmUrMjEyPj4yXT0wfHYyKDB8eEMobCxjLGspLGMpLGsyKGspLDAhPSgwfChmPTB8TGkoYywxNDEwNTUp''@;'; put 'put ''KSkmJjAhPSgwfHVlW2Y+PjBdKXx8MCE9KDB8KGY9MHxMaShjLDExMTQ3NykpKSYmMCE9KDB8dWVbZj4+MF0pP0Q9MzE6cD0wLDMxPT0oMHxEKSYmKHA9MHx2MihmLGMpKSxEPTAhPSgwfChmPTB8TGkoYywxMDAxMTgpKSkmJjAhPSgwfHVlW2Y+PjBdKT8zNjozNDtkb3tpZigzND09KDB8RCkp''@;'; put 'put ''e2lmKDB8KGY9MHxMaShjLDEwMDEyNykpJiYwfHVlW2Y+PjBdKXtEPTM2O2JyZWFrfTB8cCYmKGY9MHxuYShwKSxEPTM5KX19d2hpbGUoMCk7MzY9PSgwfEQpJiYoZj0wfHYyKGYsYyksRD0zOSksMzk9PSgwfEQpJiYoYVtCZSsyMDg+PjJdPWYpLEQ9MCE9KDB8KGY9MHxMaShjLDEwMDEzNSkp''@;'; put 'put ''KSYmMCE9KDB8dWVbZj4+MF0pPzQ0OjQyO2Rve2lmKDQyPT0oMHxEKSl7aWYoMHwoZj0wfExpKGMsMTAwMTQ1KSkmJjB8dWVbZj4+MF0pe0Q9NDQ7YnJlYWt9MHxwJiYoZj0wfG5hKHApLEQ9NDcpfX13aGlsZSgwKTs0ND09KDB8RCkmJihmPTB8djIoZixjKSxEPTQ3KSw0Nz09KDB8RCkmJihh''@;'; put 'put ''W0JlKzIxNj4+Ml09ZiksRD0wIT0oMHwoZj0wfExpKGMsMTAwMTU0KSkpJiYwIT0oMHx1ZVtmPj4wXSk/NTI6NTA7ZG97aWYoNTA9PSgwfEQpKXtpZigwfChmPTB8TGkoYywxMDAxNjMpKSYmMHx1ZVtmPj4wXSl7RD01MjticmVha30wfHAmJihhW0JlKzIyMD4+Ml09MHxuYShwKSl9fXdoaWxl''@;'; put 'put ''KDApOzUyPT0oMHxEKSYmKGFbQmUrMjIwPj4yXT0wfHYyKGYsYyksVHRbKEQ9QmUrMjYwfDApPj4xXT0xMjh8VHRbRD4+MV0pLEQ9MCE9KDB8KGY9MHxMaShjLDEwMDE3MSkpKSYmMCE9KDB8dWVbZj4+MF0pPzU5OjU3O2Rve2lmKDU3PT0oMHxEKSl7aWYoMHwoZj0wfExpKGMsMTAwMTgwKSkm''@;'; put 'put ''JjB8dWVbZj4+MF0pe0Q9NTk7YnJlYWt9MHxwJiYoYVtCZSsyMjQ+PjJdPTB8bmEocCkpfX13aGlsZSgwKTs1OT09KDB8RCkmJihhW0JlKzIyND4+Ml09MHx2MihmLGMpLFR0WyhEPUJlKzI2MHwwKT4+MV09MjU2fFR0W0Q+PjFdKSxtPXB9ZWxzZSBtPTA7ZG97aWYoODM4ODYwOCZPZSl7aWYo''@;'; put 'put ''cD0wIT0oMHwoZj0wfExpKGMsMTQxMDg4KSkpJiYwIT0oMHx1ZVtmPj4wXSk/MHx2MihmLGMpOjAsMCE9KDB8KGY9MHxMaShjLDEwMDE4OCkpKSYmMCE9KDB8dWVbZj4+MF0pPyhUdFsoRD1CZSsyNjB8MCk+PjFdPTY0fFR0W0Q+PjFdLGY9MHx2MihmLGMpLEQ9NzIpOkQ9NzAsNzA9PSgwfEQp''@;'; put 'put ''JiYwfHAmJihmPTB8bmEocCksRD03MiksNzI9PSgwfEQpJiYoYVtCZSsyNDQ+PjJdPWYpLDAhPSgwfChmPTB8TGkoYywxMDAxOTkpKSkmJjAhPSgwfHVlW2Y+PjBdKT8oZj0wfHYyKGYsYyksRD03OCk6RD03Niw3Nj09KDB8RCkmJjB8cCYmKGY9MHxuYShwKSxEPTc4KSw3OD09KDB8RCkmJihh''@;'; put 'put ''W0JlKzI0OD4+Ml09ZiksMCE9KDB8KGY9MHxMaShjLDEwMDIxMSkpKSYmMCE9KDB8dWVbZj4+MF0pPyhhW0JlKzI1Mj4+Ml09MHx2MihmLGMpLFR0WyhNPUJlKzI2MHwwKT4+MV09MTZ8VHRbTT4+MV0pOkQ9ODIsODI9PSgwfEQpJiYwfHAmJihhW0JlKzI1Mj4+Ml09MHxuYShwKSksMHwoZj0w''@;'; put 'put ''fExpKGMsMTAwMjIyKSkmJjB8dWVbZj4+MF0pe1R0WyhEPUJlKzI2MHwwKT4+MV09MzJ8VHRbRD4+MV0sYVtCZSsyNTY+PjJdPTB8djIoZixjKTticmVha31wP2FbQmUrMjU2Pj4yXT0wfG5hKHApOnA9MH1lbHNlIHA9MH13aGlsZSgwKTtkb3tpZig0MTk0MzA0Jk9lfDApe0Q9MCE9KDB8KGY9''@;'; put 'put ''MHxMaShjLDE0MTEwMSkpKSYmMCE9KDB8dWVbZj4+MF0pPzk0OjkyO2Rve2lmKDkyPT0oMHxEKSl7aWYoMHwoZj0wfExpKGMsMTAwMjMzKSkmJjB8dWVbZj4+MF0pe0Q9OTQ7YnJlYWt9MHwoZj0wfGFbQmUrMTkyPj4yXSkmJihhW0JlKzIyOD4+Ml09MHxuYShmKSl9fXdoaWxlKDApO2lmKDk0''@;'; put 'put ''PT0oMHxEKSYmKE09MHx0RChmLGMpLGFbQmUrMjI4Pj4yXT0wfHYyKE0sYyksSHQoTSksVHRbKE09QmUrMjYwfDApPj4xXT0xfFR0W00+PjFdKSwwIT0oMHwoZj0wfExpKGMsMTAwMjQ1KSkpJiYwIT0oMHx1ZVtmPj4wXSk/KE09MHx0RChmLGMpLGFbQmUrMjMyPj4yXT0wfHYyKE0sYyksSHQo''@;'; put 'put ''TSksVHRbKE09QmUrMjYwfDApPj4xXT04fFR0W00+PjFdKTpEPTEwMCwxMDA9PSgwfEQpJiYwfChSPTB8YVtCZSsxOTI+PjJdKSYmKGFbQmUrMjMyPj4yXT0wfG5hKFIpKSwwIT0oMHwoZj0wfExpKGMsMTAwMjU4KSkpJiYwIT0oMHx1ZVtmPj4wXSk/KFI9MHx0RChmLGMpLGFbQmUrMjM2Pj4y''@;'; put 'put ''XT0wfHYyKFIsYyksSHQoUiksVHRbKFI9QmUrMjYwfDApPj4xXT0yfFR0W1I+PjFdKTpEPTEwNSwxMDU9PSgwfEQpJiYwfChHPTB8YVtCZSsyMDA+PjJdKSYmKGFbQmUrMjM2Pj4yXT0wfG5hKEcpKSwwfChmPTB8TGkoYywxMDAyNzApKSYmMHx1ZVtmPj4wXSl7Rz0wfHREKGYsYyksYVtCZSsy''@;'; put 'put ''NDA+PjJdPTB8djIoRyxjKSxIdChHKSxUdFsoRz1CZSsyNjB8MCk+PjFdPTR8VHRbRz4+MV07YnJlYWt9MHwoZj0wfGFbQmUrMjA0Pj4yXSkmJihhW0JlKzI0MD4+Ml09MHxuYShmKSl9fXdoaWxlKDApO0h0KG0pLEh0KHApO2Rve2lmKDQyNTk4NDAmT2V8MCYmMHwocGU9MHxhWzgrKDB8YVtL''@;'; put 'put ''Pj4yXSk+PjJdKSl7aWYoMHxhW0JlKzIwOD4+Ml0pe2lmKCEoNTI0Mjg4Jk9lKSlicmVha31lbHNlIGlmKDA9PSg1MjQyODgmT2V8MCl8MD09KDB8YVtCZSsyMjg+PjJdKSlicmVhaztmb3Iodz0odz0uNSorX1sxNTIrKDB8YVtsKzE2Pj4yXSk+PjNdKT4yP3c6MixwPTB8YVtwZSs0Pj4yXSxm''@;'; put 'put ''PTA7ISgoMHxmKT49KDB8cCkpOyluRChMZSxiZSxtZSwoMHxhW3BlPj4yXSkrKDQ4KmZ8MCl8MCx3KSxmPWYrMXwwO2lmKGFbQmUrMjc2Pj4yXT1tPTB8YVttZT4+Ml0sYVtCZSsyODA+PjJdPUE9MHxhW2JlPj4yXSw4MTkyJk9lKWY9MHxhW0xlPj4yXTtlbHNle2ZvcihmPTAscD0wOyEoKDB8''@;'; put 'put ''cCk+PSgwfG0pKTspZj0oMHxhW0ErKHA8PDIpPj4yXSkrZnwwLHA9cCsxfDA7cGYobCxMZT0wfGFbTGU+PjJdLExlLGYpLGY9TGV9YVtCZSsyODQ+PjJdPWYsYVtCZSsyNjQ+PjJdPTIsYVtCZSsyNzI+PjJdPWYsYVtCZSsyNjg+PjJdPWFbQT4+Ml19fXdoaWxlKDApOyhmdW5jdGlvbiBIOChs''@;'; put 'put ''LGMpe2N8PTA7dmFyIGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys2ND4+Ml0pJiZub1sxMjcmZl0obCl9KShsLGMpLDA9PSgwfChmPTB8YVtCZSsyMDg+PjJdKSkmJiEoMSZUdFtCZSsyNjA+PjFdKXx8dzEobCxmLDB8YVtCZSsyMjg+PjJdLDB8YVtCZSsyNDQ+PjJd''@;'; put 'put ''LDB8YVtCZSsyMTI+PjJdKSxvZT1IZX1mdW5jdGlvbiBEVShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIE9lLExlLEJlLGV0LHJ0LEdlLGx0LE10LGt0LGF0LHV0LHd0LHJuLGxyLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsSGU9''@;'; put 'put ''MCxqZT0wLEV0PTAsWnQ9MCx5bj0wLEZuPTAsTnI9MCxrcj0wLGNyPTA7bHI9b2Usb2U9b2UrMjQwfDAsd3Q9bHIrMjI0fDAsdXQ9bHIrMjA4fDAsTGU9bHIrMTI4fDAsT2U9bHIrMTEyfDAsRm49bHIrNjR8MCxydD1scis0OHwwLEdlPWxyKzMyfDAsTXQ9bHIsa3Q9bHIrMTkyfDAsYXQ9bHIr''@;'; put 'put ''MTc2fDAsQmU9bHIrMTYwfDAsZXQ9bHIrMTQ0fDAsYVsobHQ9bHIrMTZ8MCk+PjJdPTAsYVtsdCs0Pj4yXT0wLGFbbHQrOD4+Ml09MCxhW2x0KzEyPj4yXT0wLHJuPStfWzE1MisoMHxhW2wrMTY+PjJdKT4+M10sWjkoMHxMaShjLDEwMDAzMikpLFp0PWMrMTZ8MDtlOmRve2lmKDB8YVs4Kygw''@;'; put 'put ''fGFbWnQ+PjJdKT4+Ml0pe3luPStjbChjLDB8YVs0NzE4OF0sMSwwKSx3PTB8QTIoYywwfGFbNDcxNzZdLDE5NTA1OSksYmU9MCE9KDB8Zik7dDpkb3tpZihiZSlmb3IocD1mOzspe2lmKG09cCxwPXArNHwwLCEobT0wfGFbbT4+Ml0pKXtNPTA7YnJlYWsgdH1pZigxMTY9PSgwfHVlW20+PjBd''@;'; put 'put ''KSYmISgwfFppKG0sMTExMTE3KSkpe009MTticmVha319ZWxzZSBNPTB9d2hpbGUoMCk7QT13LFI9MCxtPTA7dDpmb3IoOzspe3N3aXRjaCgwfHVlW0E+PjBdKXtjYXNlIDA6YnJlYWsgdDtjYXNlIDU4OnA9UisxfDA7YnJlYWs7Y2FzZSA1OTpwPVIsbT1tKzF8MDticmVhaztkZWZhdWx0OnA9''@;'; put 'put ''Un1BPUErMXwwLFI9cH1pZigwIT0oMHxtKSYoaz0wIT0oMHxSKSkpe2lmKCEoMHxPVShsLGMsZix3LFIrMXwwLHluLHJuKSkpYnJlYWs7Yj0xMzczMTR9ZWxzZSBiPXc7aWYoMSYocD0wfGJ0WzExNSsoMHxhW1p0Pj4yXSk+PjBdKT8oQT0xMDYyNDgscD0xMDYyNDAsdz0xODg3MTIsbT0xODg3''@;'; put 'put ''MTIsRD0xOCk6MiZwPyhBPTEwNjI2NCxwPTEwNjI1Nix3PTE4ODcxMixtPTE4ODcxMixEPTE4KTo4JnA/KEE9MTA2MjgwLHA9MTA2MjcyLHc9MTg4NzEyLG09MTg4NzEyLEQ9MTgpOjQmcD8oQT0xMDYyOTYscD0xMDYyODgsdz0xODg3MTIsbT0xODg3MTIsRD0xOCk6KG09YixBPTB8T2EoYyww''@;'; put 'put ''fGFbNDcxNzddLGIpKSwxOD09KDB8RCkmJihtPTB8T2EoYyxtPTB8YVttPj4yXSwwfHh5KGIscCkpLHA9MHxPYShjLDB8YVt3Pj4yXSxBKSwoMHxtKT09KDB8Yik/KG09YixBPXApOihnYShsLG0pLEE9cCkpLCgwfEEpIT0oMHxiKSYmb2wobCxBKSxNPDwyND4+MjQpe209MD09KDB8dWVbbT4+''@;'; put 'put ''MF0pPzEzNzMxNDptLHA9MD09KDB8dWVbQT4+MF0pPzEzNzMxNDpBLGdhKGwsMTM3Mzc5KSxvbChsLG0pLEc9MHxhW2FbOCsoMHxhW1p0Pj4yXSk+PjJdPj4yXSxLPShtZT1GbikrNDh8MDtkb3thW21lPj4yXT1hW0c+PjJdLG1lPW1lKzR8MCxHPUcrNHwwfXdoaWxlKCgwfG1lKTwoMHxLKSk7''@;'; put 'put ''aWYoWnQ9MHxsbGUoRm4sMHxvTihjKSxybiwwLDApLFhvKGwsMHxhW1p0Kzg+PjJdLDB8YVtadD4+Ml0sMSksS3ZlKFp0KSxnYShsLG0pLCgwfHApIT0oMHxtKSYmb2wobCxwKSwwfChwPTB8YVtGbis4Pj4yXSkmJihadD0wfGFbRm4+PjJdLGFbdXQ+PjJdPWFbKEV0PUZuKzE2fDApPj4yXSxh''@;'; put 'put ''W3V0KzQ+PjJdPWFbRXQrND4+Ml0sYVt1dCs4Pj4yXT1hW0V0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbRXQrMTI+PjJdLGFbd3Q+PjJdPWFbWnQ+PjJdLGFbd3QrND4+Ml09YVtadCs0Pj4yXSxhW3d0Kzg+PjJdPWFbWnQrOD4+Ml0sYVt3dCsxMj4+Ml09YVtadCsxMj4+Ml0sdzUobCwyLHV0LHd0''@;'; put 'put ''LHluLHJuLHApKSwhKHA9MHxhW0ZuKzEyPj4yXSkpYnJlYWs7WnQ9Rm4rMzJ8MCxGbj0oMHxhW0ZuPj4yXSkrKCgwfGFbRm4rND4+Ml0pLTE8PDQpfDAsYVt1dD4+Ml09YVtadD4+Ml0sYVt1dCs0Pj4yXT1hW1p0KzQ+PjJdLGFbdXQrOD4+Ml09YVtadCs4Pj4yXSxhW3V0KzEyPj4yXT1hW1p0''@;'; put 'put ''KzEyPj4yXSxhW3d0Pj4yXT1hW0ZuPj4yXSxhW3d0KzQ+PjJdPWFbRm4rND4+Ml0sYVt3dCs4Pj4yXT1hW0ZuKzg+PjJdLGFbd3QrMTI+PjJdPWFbRm4rMTI+PjJdLHc1KGwsMyx1dCx3dCx5bixybixwKTticmVha31pZihwPTB8YVtadD4+Ml0sIWspe2Rve2lmKCEoMyZ1ZVtwKzExNT4+MF0p''@;'; put 'put ''KXtpZigwfHVlW20+PjBdKXtnYShsLG0pLG9sKGwsQSk7YnJlYWt9aWYoZ2EobCwxMzczMTQpLDB8dWVbQT4+MF0pe29sKGwsQSk7YnJlYWt9b2wobCwxMzczMTQpO2JyZWFrfX13aGlsZSgwKTtmb3Iodz1sKzE1MnwwLGI9Rm4rNHwwLGs9Rm4rOHwwLE09Rm4rMTJ8MCxEPUZuKzMyfDAsUj1G''@;'; put 'put ''bisxNnwwLEE9MDs7KXtpZigoMHxBKT49KDB8YVs0KyhwPTB8YVs4KygwfGFbWnQ+PjJdKT4+Ml0pPj4yXSkpYnJlYWsgZTtHPSgwfGFbcD4+Ml0pKyg0OCpBfDApfDAsSz0obWU9Rm4pKzQ4fDA7ZG97YVttZT4+Ml09YVtHPj4yXSxtZT1tZSs0fDAsRz1HKzR8MH13aGlsZSgoMHxtZSk8KDB8''@;'; put 'put ''SykpO3A9MHxhW0ZuPj4yXSxtPTB8YVtiPj4yXTtkb3tpZigxNjM4NCZhW3c+PjJdKVdmKGwscCxtLDB8YVtrPj4yXSwwfGFbTT4+Ml0sMCk7ZWxzZSBpZihXZihsLHAsbSwwLDAsMCksMHwocD0wfGFbaz4+Ml0pJiYoRXQ9MHxhW0ZuPj4yXSxhW3V0Pj4yXT1hW1I+PjJdLGFbdXQrND4+Ml09''@;'; put 'put ''YVtSKzQ+PjJdLGFbdXQrOD4+Ml09YVtSKzg+PjJdLGFbdXQrMTI+PjJdPWFbUisxMj4+Ml0sYVt3dD4+Ml09YVtFdD4+Ml0sYVt3dCs0Pj4yXT1hW0V0KzQ+PjJdLGFbd3QrOD4+Ml09YVtFdCs4Pj4yXSxhW3d0KzEyPj4yXT1hW0V0KzEyPj4yXSx3NShsLDIsdXQsd3QseW4scm4scCkpLDB8''@;'; put 'put ''KHA9MHxhW00+PjJdKSYmKEV0PSgwfGFbRm4+PjJdKSsoKDB8YVtiPj4yXSktMTw8NCl8MCxhW3V0Pj4yXT1hW0Q+PjJdLGFbdXQrND4+Ml09YVtEKzQ+PjJdLGFbdXQrOD4+Ml09YVtEKzg+PjJdLGFbdXQrMTI+PjJdPWFbRCsxMj4+Ml0sYVt3dD4+Ml09YVtFdD4+Ml0sYVt3dCs0Pj4yXT1h''@;'; put 'put ''W0V0KzQ+PjJdLGFbd3QrOD4+Ml09YVtFdCs4Pj4yXSxhW3d0KzEyPj4yXT1hW0V0KzEyPj4yXSx3NShsLDMsdXQsd3QseW4scm4scCkpLCgwfGFbNCsoMHxhWzgrKDB8YVtadD4+Ml0pPj4yXSk+PjJdKT4xKXtpZigwfGFbaz4+Ml0pe2lmKCFiZSlicmVha31lbHNlIGlmKCEoYmUmMCE9KDB8''@;'; put 'put ''YVtNPj4yXSkpKWJyZWFrO0djKGwsZil9fXdoaWxlKDApO0E9QSsxfDB9fWZvcihIZT0wfFIwKGplPTQ4KihFdD0wfGFbNCsoMHxhW3ArOD4+Ml0pPj4yXSl8MCksamU9MHxSMChqZSkscGU9LjUqKyhSKzJ8MCksYmU9Rm4rNHwwLEQ9cnQrOHwwLFI9R2UrOHwwLGM9bHQrOHwwLGY9TXQrOHww''@;'; put 'put ''LE09MDshKCgwfE0pPj0oMHxFdCkpOyl7Rz0oMHxhW2FbOCsoMHxhW1p0Pj4yXSk+PjJdPj4yXSkrKDQ4Kk18MCl8MCxLPShtZT1GbikrNDh8MDtkb3thW21lPj4yXT1hW0c+PjJdLG1lPW1lKzR8MCxHPUcrNHwwfXdoaWxlKCgwfG1lKTwoMHxLKSk7Zm9yKGFbSGUrKDQ4Kk18MCkrND4+Ml09''@;'; put 'put ''cD0wfGFbYmU+PjJdLGFbamUrKDQ4Kk18MCkrND4+Ml09cCxiPTB8UjAoaz1wPDw0KSxhW0hlKyg0OCpNfDApPj4yXT1iLGs9MHxSMChrKSxhW2plKyg0OCpNfDApPj4yXT1rLGFbTXQ+PjJdPWFbKHc9MHxhW0ZuPj4yXSk+PjJdLGFbTXQrND4+Ml09YVt3KzQ+PjJdLGFbTXQrOD4+Ml09YVt3''@;'; put 'put ''Kzg+PjJdLGFbTXQrMTI+PjJdPWFbdysxMj4+Ml0sdz0wOyEoKDB8dyk+PShwKy0xfDApKTspYVtydD4+Ml09YVtNdD4+Ml0sYVtydCs0Pj4yXT1hW010KzQ+PjJdLGFbcnQrOD4+Ml09YVtNdCs4Pj4yXSxhW3J0KzEyPj4yXT1hW010KzEyPj4yXSxhW0dlPj4yXT1hWyhBPSgwfGFbRm4+PjJd''@;'; put 'put ''KSsoKHA9dysxfDApPDw0KXwwKT4+Ml0sYVtHZSs0Pj4yXT1hW0ErND4+Ml0sYVtHZSs4Pj4yXT1hW0ErOD4+Ml0sYVtHZSsxMj4+Ml09YVtBKzEyPj4yXSxBPWIrKHc8PDQpfDAsdz8oYVt1dD4+Ml09YVtsdD4+Ml0sYVt1dCs0Pj4yXT1hW2x0KzQ+PjJdLGFbdXQrOD4+Ml09YVtsdCs4Pj4y''@;'; put 'put ''XSxhW3V0KzEyPj4yXT1hW2x0KzEyPj4yXSxhW3d0Pj4yXT1hW0dlPj4yXSxhW3d0KzQ+PjJdPWFbR2UrND4+Ml0sYVt3dCs4Pj4yXT1hW0dlKzg+PjJdLGFbd3QrMTI+PjJdPWFbR2UrMTI+PjJdLGVEKGF0LHV0LHd0KSxhW0E+PjJdPWFbYXQ+PjJdLGFbQSs0Pj4yXT1hW2F0KzQ+PjJdLGFb''@;'; put 'put ''QSs4Pj4yXT1hW2F0Kzg+PjJdLGFbQSsxMj4+Ml09YVthdCsxMj4+Ml0pOihhW3V0Pj4yXT1hW3J0Pj4yXSxhW3V0KzQ+PjJdPWFbcnQrND4+Ml0sYVt1dCs4Pj4yXT1hW3J0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbcnQrMTI+PjJdLGFbd3Q+PjJdPWFbR2U+PjJdLGFbd3QrND4+Ml09YVtHZSs0''@;'; put 'put ''Pj4yXSxhW3d0Kzg+PjJdPWFbR2UrOD4+Ml0sYVt3dCsxMj4+Ml09YVtHZSsxMj4+Ml0sZUQoa3QsdXQsd3QpLGFbQT4+Ml09YVtrdD4+Ml0sYVtBKzQ+PjJdPWFba3QrND4+Ml0sYVtBKzg+PjJdPWFba3QrOD4+Ml0sYVtBKzEyPj4yXT1hW2t0KzEyPj4yXSksYVtsdD4+Ml09YVsoY3I9KGty''@;'; put 'put ''PTB8YVtGbj4+Ml0pKygoSz13KzJ8MCk8PDQpfDApPj4yXSxhW2x0KzQ+PjJdPWFbY3IrND4+Ml0sYVtsdCs4Pj4yXT1hW2NyKzg+PjJdLGFbbHQrMTI+PjJdPWFbY3IrMTI+PjJdLGFbTXQ+PjJdPWFbKGtyPWtyKygobWU9dyszfDApPDw0KXwwKT4+Ml0sYVtNdCs0Pj4yXT1hW2tyKzQ+PjJd''@;'; put 'put ''LGFbTXQrOD4+Ml09YVtrcis4Pj4yXSxhW010KzEyPj4yXT1hW2tyKzEyPj4yXSxOcj1iKyhwPDw0KXwwLEc9YisoSzw8NCl8MCxhW09lPj4yXT1hW3J0Pj4yXSxhW09lKzQ+PjJdPWFbcnQrND4+Ml0sYVtPZSs4Pj4yXT1hW3J0Kzg+PjJdLGFbT2UrMTI+PjJdPWFbcnQrMTI+PjJdLGFbTGU+''@;'; put 'put ''PjJdPWFbR2U+PjJdLGFbTGUrND4+Ml09YVtHZSs0Pj4yXSxhW0xlKzg+PjJdPWFbR2UrOD4+Ml0sYVtMZSsxMj4+Ml09YVtHZSsxMj4+Ml0sYVt1dD4+Ml09YVtjcj4+Ml0sYVt1dCs0Pj4yXT1hW2NyKzQ+PjJdLGFbdXQrOD4+Ml09YVtjcis4Pj4yXSxhW3V0KzEyPj4yXT1hW2NyKzEyPj4y''@;'; put 'put ''XSxhW3d0Pj4yXT1hW2tyPj4yXSxhW3d0KzQ+PjJdPWFba3IrND4+Ml0sYVt3dCs4Pj4yXT1hW2tyKzg+PjJdLGFbd3QrMTI+PjJdPWFba3IrMTI+PjJdLFJVKEJlLE9lLExlLHV0LHd0KSxhW0c+PjJdPWFbQmU+PjJdLGFbRys0Pj4yXT1hW0JlKzQ+PjJdLGFbRys4Pj4yXT1hW0JlKzg+PjJd''@;'; put 'put ''LGFbRysxMj4+Ml09YVtCZSsxMj4+Ml0sYVtOcj4+Ml09YVtCZT4+Ml0sYVtOcis0Pj4yXT1hW0JlKzQ+PjJdLGFbTnIrOD4+Ml09YVtCZSs4Pj4yXSxhW05yKzEyPj4yXT1hW0JlKzEyPj4yXSxfW2srKHc8PDQpPj4zXT0rX1tydD4+M10tK19bQT4+M10qcGUsX1trKyh3PDw0KSs4Pj4zXT0r''@;'; put 'put ''X1tEPj4zXS0rX1tiKyh3PDw0KSs4Pj4zXSpwZSxfW2srKHA8PDQpPj4zXT0rX1tHZT4+M10tK19bTnI+PjNdKnBlLF9baysocDw8NCkrOD4+M109K19bUj4+M10tK19bYisocDw8NCkrOD4+M10qcGUsX1trKyhLPDw0KT4+M109K19bbHQ+PjNdLStfW0c+PjNdKnBlLF9baysoSzw8NCkrOD4+''@;'; put 'put ''M109K19bYz4+M10tK19bYisoSzw8NCkrOD4+M10qcGUsdz1tZSxwPTB8YVtiZT4+Ml07Y3I9Yisodzw8NCl8MCxhW3V0Pj4yXT1hW2x0Pj4yXSxhW3V0KzQ+PjJdPWFbbHQrND4+Ml0sYVt1dCs4Pj4yXT1hW2x0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbbHQrMTI+PjJdLGFbd3Q+PjJdPWFbTXQ+''@;'; put 'put ''PjJdLGFbd3QrND4+Ml09YVtNdCs0Pj4yXSxhW3d0Kzg+PjJdPWFbTXQrOD4+Ml0sYVt3dCsxMj4+Ml09YVtNdCsxMj4+Ml0sZUQoZXQsdXQsd3QpLGFbY3I+PjJdPWFbZXQ+PjJdLGFbY3IrND4+Ml09YVtldCs0Pj4yXSxhW2NyKzg+PjJdPWFbZXQrOD4+Ml0sYVtjcisxMj4+Ml09YVtldCsx''@;'; put 'put ''Mj4+Ml0sX1trKyh3PDw0KT4+M109K19bTXQ+PjNdLStfW2NyPj4zXSpwZSxfW2srKHc8PDQpKzg+PjNdPStfW2Y+PjNdLStfW2IrKHc8PDQpKzg+PjNdKnBlLE09TSsxfDB9Zm9yKGY9MCxHPW0scD1tLEE9bSxtPUs9MHxuYShtKTttPTB8dnYobSwxMDc5ODQpOyl7Zm9yKCgwfChjPTA9PSgw''@;'; put 'put ''fHVlW20+PjBdKT8xMzczMTQ6bSkpIT0oMHxBKSYmKDMmdWVbMTE1KygwfGFbWnQ+PjJdKT4+MF18fChnYShsLGMpLG9sKGwsYykpLEE9YyksYj0wPT0oMHxmKSxrPWY+Pj4wPDIsbT0wOyEoKDB8bSk+PSgwfEV0KSk7KXtmb3IoTT0wfGFbamUrKDQ4Km18MCk+PjJdLEQ9MHxhW0hlKyg0OCpt''@;'; put 'put ''fDApPj4yXSxSPTB8YVtqZSsoNDgqbXwwKSs0Pj4yXSx3PTA7ISgoMHx3KT49KDB8UikpOylfWyhjcj1NKyh3PDw0KXwwKT4+M109K19bY3I+PjNdKyArX1tEKyh3PDw0KT4+M10sX1soY3I9TSsodzw8NCkrOHwwKT4+M109K19bY3I+PjNdKyArX1tEKyh3PDw0KSs4Pj4zXSx3PXcrMXwwO1dm''@;'; put 'put ''KGwsTSxSLDAsMCwwKSxtPW0rMXwwfWY9ZisxfDAsRz1iP2M6RyxwPWs/YzpwLG09MH1mb3IoKG09MHxhW0ZuKzg+PjJdKT8ocD8zJnVlWzExNSsoMHxhW1p0Pj4yXSk+PjBdfHwoZ2EobCxwKSxvbChsLHApKTpwPTAsY3I9MHxhW0ZuPj4yXSxhW3V0Pj4yXT1hWyhrcj1GbisxNnwwKT4+Ml0s''@;'; put 'put ''YVt1dCs0Pj4yXT1hW2tyKzQ+PjJdLGFbdXQrOD4+Ml09YVtrcis4Pj4yXSxhW3V0KzEyPj4yXT1hW2tyKzEyPj4yXSxhW3d0Pj4yXT1hW2NyPj4yXSxhW3d0KzQ+PjJdPWFbY3IrND4+Ml0sYVt3dCs4Pj4yXT1hW2NyKzg+PjJdLGFbd3QrMTI+PjJdPWFbY3IrMTI+PjJdLHc1KGwsMix1dCx3''@;'; put 'put ''dCx5bixybixtKSxtPXApOm09MCwwfChwPTB8YVsoQT1GbisxMnwwKT4+Ml0pJiYoKDB8bSkhPSgwfEcpJiYwPT0oMyZ1ZVsxMTUrKDB8YVtadD4+Ml0pPj4wXSkmJihnYShsLEcpLG9sKGwsRykscD0wfGFbQT4+Ml0pLGNyPSgwfGFbRm4+PjJdKSsoKDB8YVtiZT4+Ml0pLTE8PDQpfDAsYVt1''@;'; put 'put ''dD4+Ml09YVsoa3I9Rm4rMzJ8MCk+PjJdLGFbdXQrND4+Ml09YVtrcis0Pj4yXSxhW3V0Kzg+PjJdPWFba3IrOD4+Ml0sYVt1dCsxMj4+Ml09YVtrcisxMj4+Ml0sYVt3dD4+Ml09YVtjcj4+Ml0sYVt3dCs0Pj4yXT1hW2NyKzQ+PjJdLGFbd3QrOD4+Ml09YVtjcis4Pj4yXSxhW3d0KzEyPj4y''@;'; put 'put ''XT1hW2NyKzEyPj4yXSx3NShsLDMsdXQsd3QseW4scm4scCkpLEh0KEspLHA9MDshKCgwfHApPj0oMHxFdCkpOylIdCgwfGFbSGUrKDQ4KnB8MCk+PjJdKSxIdCgwfGFbamUrKDQ4KnB8MCk+PjJdKSxwPXArMXwwO0h0KEhlKSxIdChqZSl9fXdoaWxlKDApO29lPWxyfWZ1bmN0aW9uIEp2ZShs''@;'; put 'put ''KXt2YXIgcGUsbWUsT2UsTGUsQmUsSGUsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLGJlPTAsamU9MDtIZT1vZSxvZT1vZSs2NHwwLHBlPUhlKzQ4fDAsT2U9SGUrMzJ8MCxiZT1IZSsxNnwwLG1lPUhlLExlPTB8YVs4KyhCZT0wfGFbMTYrKGx8''@;'; put 'put ''PTApPj4yXSk+PjJdLDA9PSgwfGFbKEs9QmUrMjA4fDApPj4yXSkmJiEoMSZUdFtCZSsyNjA+PjFdKXx8KGM9Myk7ZTpkb3tpZigzPT0oMHxjKSYmKGtoKGwpLEc9QmUrMjc2fDAsZj0wfGFbRz4+Ml0sMHxmKSlmb3IoQT1CZSsyODB8MCxjPTB8YVtBPj4yXSx3PUJlKzI2OHwwLGI9QmUrMjg0''@;'; put 'put ''fDAsaz1CZSsyNzJ8MCxNPUJlKzIyOHwwLEQ9QmUrMjQ0fDAsUj1CZSsyMTJ8MCxwPTB8YVtjPj4yXSxtPTE7Oyl7aWYoKDB8bSk+PSgwfGYpKWJyZWFrIGU7YVt3Pj4yXT1hW2MrKG08PDIpPj4yXSxhW2s+PjJdPSgwfGFbYj4+Ml0pKyhwPDw0KSx3MShsLDB8YVtLPj4yXSwwfGFbTT4+Ml0s''@;'; put 'put ''MHxhW0Q+PjJdLDB8YVtSPj4yXSksa2gobCkscD0oMHxhWyhqZT0wfGFbQT4+Ml0pKyhtPDwyKT4+Ml0pK3B8MCxtPW0rMXwwLGY9MHxhW0c+PjJdLGM9amV9fXdoaWxlKDApO2FbQmUrMjY4Pj4yXT0wLGFbQmUrMjcyPj4yXT0wLChmPTB8YVs4KyhjPTB8YVsoSz1MZSsxNnwwKT4+Ml0pPj4y''@;'; put 'put ''XSk/KGM9MHxhWyhHPTB8YVtmPj4yXSk+PjJdLGplPTB8YVtHKzg+PjJdLGFbYmU+PjJdPWFbKFI9RysxNnwwKT4+Ml0sYVtiZSs0Pj4yXT1hW1IrND4+Ml0sYVtiZSs4Pj4yXT1hW1IrOD4+Ml0sYVtiZSsxMj4+Ml09YVtSKzEyPj4yXSxhW21lPj4yXT1hWyhHPUcrMzJ8MCk+PjJdLGFbbWUr''@;'; put 'put ''ND4+Ml09YVtHKzQ+PjJdLGFbbWUrOD4+Ml09YVtHKzg+PjJdLGFbbWUrMTI+PjJdPWFbRysxMj4+Ml0samU/KGFbT2U+PjJdPWFbYmU+PjJdLGFbT2UrND4+Ml09YVtiZSs0Pj4yXSxhW09lKzg+PjJdPWFbYmUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtiZSsxMj4+Ml0pOihhW09lPj4yXT1hW2M+''@;'; put 'put ''PjJdLGFbT2UrND4+Ml09YVtjKzQ+PjJdLGFbT2UrOD4+Ml09YVtjKzg+PjJdLGFbT2UrMTI+PjJdPWFbYysxMj4+Ml0pLEc9MHxUdFsocD1CZSsyNjB8MCk+PjFdLFI9MHxhW0JlKzIyMD4+Ml0sYVtwZT4+Ml09YVtPZT4+Ml0sYVtwZSs0Pj4yXT1hW09lKzQ+PjJdLGFbcGUrOD4+Ml09YVtP''@;'; put 'put ''ZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW09lKzEyPj4yXSxDb2UobCxwZSwoRzw8OCY2NTUzNSk8PDE2Pj4xNj4+MTUmMjU1LFIsKEc8PDE0JjY1NTM1KTw8MTY+PjE2Pj4xNSYyNTUpLGM9MHxhWyhSPTB8YVsoRz0wfGFbOCsoMHxhW0s+PjJdKT4+Ml0pPj4yXSkrKDQ4KihHPSgwfGFbRys0Pj4y''@;'; put 'put ''XSktMXwwKXwwKT4+Ml0sZj0wfGFbUisoNDgqR3wwKSs0Pj4yXSxqZT0wfGFbUisoNDgqR3wwKSsxMj4+Ml0sYVtiZT4+Ml09YVsoRD1SKyg0OCpHfDApKzE2fDApPj4yXSxhW2JlKzQ+PjJdPWFbRCs0Pj4yXSxhW2JlKzg+PjJdPWFbRCs4Pj4yXSxhW2JlKzEyPj4yXT1hW0QrMTI+PjJdLGFb''@;'; put 'put ''bWU+PjJdPWFbKGJlPVIrKDQ4Kkd8MCkrMzJ8MCk+PjJdLGFbbWUrND4+Ml09YVtiZSs0Pj4yXSxhW21lKzg+PjJdPWFbYmUrOD4+Ml0sYVttZSsxMj4+Ml09YVtiZSsxMj4+Ml0samU/KGFbT2U+PjJdPWFbbWU+PjJdLGFbT2UrND4+Ml09YVttZSs0Pj4yXSxhW09lKzg+PjJdPWFbbWUrOD4+''@;'; put 'put ''Ml0sYVtPZSsxMj4+Ml09YVttZSsxMj4+Ml0pOihhW09lPj4yXT1hWyhqZT1jKyhmKy0xPDw0KXwwKT4+Ml0sYVtPZSs0Pj4yXT1hW2plKzQ+PjJdLGFbT2UrOD4+Ml09YVtqZSs4Pj4yXSxhW09lKzEyPj4yXT1hW2plKzEyPj4yXSksYz0wfFR0W3A+PjFdLGplPTB8YVtCZSsyMjQ+PjJdLGFb''@;'; put 'put ''cGU+PjJdPWFbT2U+PjJdLGFbcGUrND4+Ml09YVtPZSs0Pj4yXSxhW3BlKzg+PjJdPWFbT2UrOD4+Ml0sYVtwZSsxMj4+Ml09YVtPZSsxMj4+Ml0sQ29lKGwscGUsKGM8PDcmNjU1MzUpPDwxNj4+MTY+PjE1JjI1NSxqZSwoYzw8MTMmNjU1MzUpPDwxNj4+MTY+PjE1JjI1NSksYz0wfGFbSz4+''@;'; put 'put ''Ml0pOnA9QmUrMjYwfDAsJEkobCxmPTB8YVtjKzk2Pj4yXSwxMSxtPShUdFtwPj4xXTw8MTImNjU1MzUpPDwxNj4+MTY+PjE1PDwxNj4+MTYsQT0wfGFbKE09QmUrMjE2fDApPj4yXSx3PTB8YVsoRD1CZSsyMzJ8MCk+PjJdLGI9MHxhWyhSPUJlKzI0OHwwKT4+Ml0saz0wfGFbKEc9QmUrMjEy''@;'; put 'put ''fDApPj4yXSxjPSgwfHIxKDB8QTIoTGUsMHxhWzQ3MTg2XSwxMzczMDgpKSk8PDI0Pj4yND8wfGFbOCsoMHxhW0s+PjJdKT4+Ml06MCksJEkobCxiPTB8YVsxMDgrKDB8YVtLPj4yXSk+PjJdLDExLGs9KFR0W3A+PjFdPDwxMiY2NTUzNSk8PDE2Pj4xNj4+MTU8PDE2Pj4xNix3PTB8YVtNPj4y''@;'; put 'put ''XSxBPTB8YVtEPj4yXSxmPTB8YVtSPj4yXSxtPTB8YVtHPj4yXSxjPSgwfHIxKDB8QTIoTGUsMHxhWzQ3MTg2XSwxMzczMDgpKSk8PDI0Pj4yND8wfGFbOCsoMHxhW0s+PjJdKT4+Ml06MCksJEkobCwwfGFbMTAwKygwfGFbSz4+Ml0pPj4yXSw3LChUdFtwPj4xXTw8MTMmNjU1MzUpPDwxNj4+''@;'; put 'put ''MTY+PjE1PDwxNj4+MTYsMHxhW0JlKzIyND4+Ml0sMHxhW0JlKzI0MD4+Ml0sMHxhW0JlKzI1Nj4+Ml0sMHxhW0c+PjJdLDApLCRJKGwsMHxhWzEwNCsoMHxhW0s+PjJdKT4+Ml0sNiwoVHRbcD4+MV08PDE0JjY1NTM1KTw8MTY+PjE2Pj4xNTw8MTY+PjE2LDB8YVtCZSsyMjA+PjJdLDB8YVtC''@;'; put 'put ''ZSsyMzY+PjJdLDB8YVtCZSsyNTI+PjJdLDB8YVtHPj4yXSwwKSxmdW5jdGlvbiBMOShsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrNjg+PjJdKSYmbm9bMTI3JmZdKGwpfShsKSxFQyhsKSxvZT1IZX1mdW5jdGlvbiBDb2UobCxjLGYscCxtKXt2YXIg''@;'; put 'put ''QSx3LGI7Y3w9MCxwfD0wLGI9b2Usb2U9b2UrMTZ8MCxBPWIsdz0wfGFbMTYrKGx8PTApPj4yXSwoZnw9MCk8PDI0Pj4yNHx8KHA9MHxhW3crMjA4Pj4yXSksKG18PTApPDwyND4+MjQ9PTAmJjA9PSgwfHApJiYwPT0oMSZUdFt3KzI2MD4+MV0pfHwoYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4y''@;'; put 'put ''XT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sZnVuY3Rpb24gWHZlKGwsYyl7Y3w9MDt2YXIgcCxmPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmPTB8YVsxNisobHw9MCk+PjJdLDQyNTk4NDAmKHA9MHxhW2wrMTUyPj4yXSl8MCYmKGFbZisyNjQ+''@;'; put 'put ''PjJdPWI9KG09MTMxMDcyJnApPj4+MTZeMixhWyhrPWYrMjY4fDApPj4yXT1iKzIsSHQoMHxhWyhiPWYrMjcyfDApPj4yXSksZj0wfG1yKGFbaz4+Ml08PDQpLGFbYj4+Ml09ZixfW2Y+PjNdPSh3PStfW2M+PjNdKS0zLF9bZis4Pj4zXT0oQT0rX1tjKzg+PjNdKS0zLF9bZisxNj4+M109dysz''@;'; put 'put ''LF9bZisyND4+M109QSszLDgxOTImcHx8cGYobCxmLGYsMiksbXx8Y2soZikpfShsLEEpKSxvZT1ifWZ1bmN0aW9uICRJKGwsYyxmLHAsbSxBLHcsYixrKXtmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wO3ZhciBLLHBlLE09MCxEPTAsUj0wLEc9MDtpZihwZT1vZSxvZT1vZSsx''@;'; put 'put ''NnwwLFI9cGUsSz0wfGFbMTUyKyhsfD0wKT4+Ml0sMHwoY3w9MCkmJjB8dWVbYys4MT4+MF0pe2lmKGIpe3N3aXRjaChEPTB8bXIoMTErKDB8em8oYikpfDApLDB8Zil7Y2FzZSAxMTpNPTEwODIyNDticmVhaztjYXNlIDc6TT0xMDE1ODM7YnJlYWs7Y2FzZSA2Ok09MTAxNTkzO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6QnIoMTM4Mzk0LDk5OTA2LDI3MzAsMTAwMDQ0KX1hW1I+PjJdPWIsYVtSKzQ+PjJdPU0sYW8oRCwxMDAwNjAsUil9ZWxzZSBEPTA7Rz0wfGFbKGI9MTIrKDB8YVsoUj1sKzE2fDApPj4yXSl8MCk+PjJdLGFbYj4+Ml09ZiwoYj0wIT0oMHxwKXwwIT0oMHxtKSkmKE09MD09KDQmS3ww''@;'; put 'put ''KSkmJihxSShsLGMpLHcxKGwsbSxBLHcsRCkpLEI3KGwsZixjKSwwfGsmJmZ1bmN0aW9uIExVKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0sQSx3LGIsRCxwPTAsaz0wLE09MCxSPTA7Zm9yKEQ9b2Usb2U9b2UrOTZ8MCxtPUQrODB8MCxBPUQrMzJ8MCx3PUQrMTZ8MCxiPUQscD0wfGFbKGN8PTAp''@;'; put 'put ''Pj4yXTsoaz0wfHVlW3A+PjBdKTw8MjQ+PjI0Oyl7aWYoISgwfEtjKDI1NSZrKSkpe009NDticmVha31wPXArMXwwfTQ9PSgwfE0pJiYobGsoQSwrX1soaz1jKzU2fDApPj4zXSsuNSooUj0rX1tjKzI0Pj4zXSksK19bYys2ND4+M10tLjUqK19bYyszMj4+M10pLE09QSsxNnwwLGxrKHcsK19b''@;'; put 'put ''QT4+M10tUiwrX1tBKzg+PjNdKSxhW00+PjJdPWFbdz4+Ml0sYVtNKzQ+PjJdPWFbdys0Pj4yXSxhW00rOD4+Ml09YVt3Kzg+PjJdLGFbTSsxMj4+Ml09YVt3KzEyPj4yXSxNPUErMzJ8MCxhW20+PjJdPWFbaz4+Ml0sYVttKzQ+PjJdPWFbays0Pj4yXSxhW20rOD4+Ml09YVtrKzg+PjJdLGFb''@;'; put 'put ''bSsxMj4+Ml09YVtrKzEyPj4yXSxKTihiLGYsbSksYVtNPj4yXT1hW2I+PjJdLGFbTSs0Pj4yXT1hW2IrND4+Ml0sYVtNKzg+PjJdPWFbYis4Pj4yXSxhW00rMTI+PjJdPWFbYisxMj4+Ml0sR2MobCwwfGFbMzM2KygwfGFbbD4+Ml0pPj4yXSksZ2EobCwwfGFbYys4Pj4yXSksV28obCxBLDMp''@;'; put 'put ''KSxvZT1EfShsLGMsayksYiYmKE18fChxSShsLGMpLHcxKGwsbSxBLHcsRCkpLGtoKGwpKSxIdChEKSxhWzEyKygwfGFbUj4+Ml0pPj4yXT1HfW9lPXBlfWZ1bmN0aW9uIHFJKGwsYyl7Y3w9MDt2YXIgcCxmPTAsbT0wLEE9MCx3PTAsYj0wO2Y9MHxhWzE2KyhsfD0wKT4+Ml0sNDI1OTg0MCYo''@;'; put 'put ''cD0wfGFbbCsxNTI+PjJdKXwwJiYoYVtmKzI2ND4+Ml09dz0obT0xMzEwNzImcCk+Pj4xNl4yLGFbKGI9ZisyNjh8MCk+PjJdPXcrMixIdCgwfGFbKHc9ZisyNzJ8MCk+PjJdKSxmPTB8bXIoYVtiPj4yXTw8NCksYVt3Pj4yXT1mLF9bZj4+M109K19bKHc9Yys1NnwwKT4+M10tLjUqK19bKGI9''@;'; put 'put ''YysyNHwwKT4+M10sX1tmKzg+PjNdPStfWyhBPWMrNjR8MCk+PjNdLS41KitfWyhjPWMrMzJ8MCk+PjNdLF9bZisxNj4+M109LjUqK19bYj4+M10rICtfW3c+PjNdLF9bZisyND4+M109LjUqK19bYz4+M10rICtfW0E+PjNdLDgxOTImcHx8cGYobCxmLGYsMiksbXx8Y2soZikpfWZ1bmN0aW9u''@;'; put 'put ''IGxrKGwsYyxmKXtmPStmLF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mfWZ1bmN0aW9uIE9VKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLEE9K0Esdz0rdzt2YXIgbHQsTXQsa3QsYXQsRXQsWnQsd3QsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0w''@;'; put 'put ''LE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCx1dD0wO2lmKHd0PW9lLG9lPW9lKzI1NnwwLE10PXd0KzIyNHwwLGx0PXd0KzIwOHwwLGI9d3QrMTkyfDAsYXQ9d3QrMTQ0fDAsRXQ9d3QrOTZ8MCxadD13dCs0OHwwLGt0PXd0LCgwfChwPTB8JFQocHw9MCxtfD0wLGs9''@;'; put 'put ''d3QrMjQwfDApKSk+MT8oZXQ9Yys0OHwwLHJ0PTB8ZnIoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6ZXQpKzQwPj4yXSksZXQ9MHwkcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpldCkrNDA+PjJdKSxydD0wIT0oMHxsYyhydCkpLEdlPTB8JHIoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6Yyst''@;'; put 'put ''NDh8MCkrNDA+PjJdKSxhW2I+PjJdPWV0LGFbYis0Pj4yXT1ydD8xMDAwNzk6MTAwMDg0LGFbYis4Pj4yXT1HZSxYcigzLDEwMDA4OSxiKSwyPT0oMHxwKT9wPTE6dXQ9NCk6MT09KDB8cCk/cD0xOnV0PTQsND09KDB8dXQpKXtmb3IoR2U9YysxNnwwLG1lPTgrKHBlPTB8YVtrPj4yXSl8MCxi''@;'; put 'put ''ZT1adCs0fDAsT2U9YXQrOHwwLExlPWF0KzEyfDAsQmU9MCE9KDB8ZiksSz0wPT0oMHxmKSxIZT1hdCszMnwwLGplPWF0KzR8MCxldD1hdCsxNnwwLHJ0PWt0KzR8MCxwPTAsRz0wOyEoKDB8Ryk+PSgwfGFbNCsobT0wfGFbOCsoMHxhW0dlPj4yXSk+PjJdKT4+Ml0pKTspe209KDB8YVttPj4y''@;'; put 'put ''XSkrKDQ4Kkd8MCl8MCxjPShiPWF0KSs0OHwwO2Rve2FbYj4+Ml09YVttPj4yXSxiPWIrNHwwLG09bSs0fDB9d2hpbGUoKDB8Yik8KDB8YykpO2M9MSxNPTEsUj0wfGFbbWU+PjJdO2U6Zm9yKDttPTB8YVtSPj4yXSxtOyl7RD0rV25bKGs9Uis0fDApPj4yXTtkb3tpZihEPDFlLTUmRD4tMWUt''@;'; put 'put ''NSltPWM7ZWxzZXtpZihnYShsLG0pLE0tPUQ9K1duW2s+PjJdLHA9MHxhW1I+PjJdLDB8Yyl7aWYobE4oYXQsRCxadCxrdCksV2YobCxrPTB8YVtadD4+Ml0sMHxhW2JlPj4yXSwwLDAsMCksSHQoayksTTwxZS01Jk0+LTFlLTUpe3V0PTExO2JyZWFrIGV9bT0wO2JyZWFrfWlmKE08MWUtNSZN''@;'; put 'put ''Pi0xZS01KXt1dD0xMzticmVhayBlfW09a3QsYz0oYj1FdCkrNDh8MDtkb3thW2I+PjJdPWFbbT4+Ml0sYj1iKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGIpPCgwfGMpKTtsTihFdCwoRD0rV25baz4+Ml0pLyhNK0QpLFp0LGt0KSxIdCgwfGFbRXQ+PjJdKSxXZihsLG09MHxhW1p0Pj4yXSwwfGFb''@;'; put 'put ''YmU+PjJdLDAsMCwwKSxIdChtKSxtPTB9fXdoaWxlKDApO2M9bSxSPVIrMTJ8MH0xMT09KDB8dXQpPyh1dD0wLEh0KDB8YVtrdD4+Ml0pKToxMz09KDB8dXQpJiYodXQ9MCxXZihsLFI9MHxhW2t0Pj4yXSwwfGFbcnQ+PjJdLDAsMCwwKSxIdChSKSksMHxhW09lPj4yXSYmKGdhKGwsMHxhW2Fb''@;'; put 'put ''bWU+PjJdPj4yXSksb2wobCwwfGFbYVttZT4+Ml0+PjJdKSxrPTB8YVthdD4+Ml0sUj0wfGFbT2U+PjJdLGFbbHQ+PjJdPWFbZXQ+PjJdLGFbbHQrND4+Ml09YVtldCs0Pj4yXSxhW2x0Kzg+PjJdPWFbZXQrOD4+Ml0sYVtsdCsxMj4+Ml09YVtldCsxMj4+Ml0sYVtNdD4+Ml09YVtrPj4yXSxh''@;'; put 'put ''W010KzQ+PjJdPWFbays0Pj4yXSxhW010Kzg+PjJdPWFbays4Pj4yXSxhW010KzEyPj4yXT1hW2srMTI+PjJdLHc1KGwsMixsdCxNdCxBLHcsUikpLDB8YVtMZT4+Ml0mJihnYShsLHApLG9sKGwscCksaz0oMHxhW2F0Pj4yXSkrKCgwfGFbamU+PjJdKS0xPDw0KXwwLFI9MHxhW0xlPj4yXSxh''@;'; put 'put ''W2x0Pj4yXT1hW0hlPj4yXSxhW2x0KzQ+PjJdPWFbSGUrND4+Ml0sYVtsdCs4Pj4yXT1hW0hlKzg+PjJdLGFbbHQrMTI+PjJdPWFbSGUrMTI+PjJdLGFbTXQ+PjJdPWFbaz4+Ml0sYVtNdCs0Pj4yXT1hW2srND4+Ml0sYVtNdCs4Pj4yXT1hW2srOD4+Ml0sYVtNdCsxMj4+Ml09YVtrKzEyPj4y''@;'; put 'put ''XSx3NShsLDMsbHQsTXQsQSx3LFIpKTtkb3tpZigoMHxhWzQrKDB8YVs4KygwfGFbR2U+PjJdKT4+Ml0pPj4yXSk+MSl7aWYoMHxhW09lPj4yXSl7aWYoSylicmVha31lbHNlIGlmKCEoQmUmMCE9KDB8YVtMZT4+Ml0pKSlicmVhaztHYyhsLGYpfX13aGlsZSgwKTtHPUcrMXwwfXk3KHBlKSxw''@;'; put 'put ''PTB9cmV0dXJuIG9lPXd0LDB8cH1mdW5jdGlvbiB4eShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MDtmPTE7ZTpmb3IoOzspe3N3aXRjaCgwfHVlW2w+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDU4OmY9ZisxfDB9bD1sKzF8MH1mb3IobD0xMCsocD0wfHZyKDErKDB8em8oYykpfDAsZikp''@;'; put 'put ''fDAsKDB8YVs0NzEyMV0pPCgwfHApPyhhWzQ3MTIxXT1sLGw9MHxaYSgwfGFbNDcxMjJdLGwpLGFbNDcxMjJdPWwpOmw9MHxhWzQ3MTIyXSwkMyhsLGMpO2w9MHxhWzQ3MTIyXSxmPWYrLTF8MDspcD1sKygwfHpvKGwpKXwwLHVlW3A+PjBdPTU4LHVlW3ArMT4+MF09MCxBdihsLGMpO3JldHVy''@;'; put 'put ''biAwfGx9ZnVuY3Rpb24gb04obCl7bHw9MDt2YXIgYz0wLGY9MDtjPTB8YVs0NzE4NF07ZTpkb3tpZihjKXN3aXRjaChjPTB8Rm8obCxjKSwwfHVlW2M+PjBdKXtjYXNlIDExMDppZigwfFppKGMsMTM1NzA5KSl7Zj03O2JyZWFrIGV9Yz0xO2JyZWFrIGU7Y2FzZSAxMDI6aWYoMHxaaShjLDEw''@;'; put 'put ''MDA2Nikpe2Y9NzticmVhayBlfWM9MjticmVhayBlO2Nhc2UgOTg6aWYoISgwfFppKGMsMTAwMDc0KSkpe2M9MzticmVhayBlfWlmKDB8WmkoYywxMTEyMjEpKXtmPTc7YnJlYWsgZX1jPTQ7YnJlYWsgZTtkZWZhdWx0OmY9NzticmVhayBlfWVsc2UgZj03fXdoaWxlKDApO3JldHVybiA3PT0o''@;'; put 'put ''MHxmKSYmKGM9KGM9MCE9KDB8bGMoMHxmcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pKSkpPzI6MSksMHxjfWZ1bmN0aW9uIEt2ZShsKXswfChsfD0wKSYmKEh0KDB8YVtsKzg+PjJdKSxIdChsKSl9ZnVuY3Rpb24gZUQobCxjLGYpe3ZhciBwLG0sQTtsfD0wLHA9''@;'; put 'put ''Mi8rRjAoKygobT0rX1soY3w9MCk+PjNdLStfWyhmfD0wKT4+M10pKm0rMWUtNCsoQT0rX1tjKzg+PjNdLStfW2YrOD4+M10pKkEpKSxfW2w+PjNdPXAqQSxfW2wrOD4+M109LW0qcH1mdW5jdGlvbiBSVShsLGMsZixwLG0pe2x8PTAsY3w9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTA7KEE9''@;'; put 'put ''K0YwKCsoKGI9K19bOCsoZnw9MCk+PjNdLStfWzgrKHB8PTApPj4zXSkqYisodz0rX1tmPj4zXS0rX1twPj4zXSkqdykpKTwxZS00JiYoYj1BPStfW2MrOD4+M10tK19bbSs4Pj4zXSx3PWs9K19bYz4+M10tK19bbT4+M10sQT0rRjAoKyhrKmsrMWUtNCtBKkEpKSksX1tsPj4zXT1iKihrPTIv''@;'; put 'put ''QSksX1tsKzg+PjNdPS1rKnd9ZnVuY3Rpb24gbE4obCxjLGYscCl7Yz0rYyxmfD0wLHB8PTA7dmFyIFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsSz0wLHBlPTAsbWU9MDtpZihHPW9lLG9lPW9lKzE2fDAsUj1HLGI9KChEPTB8YVs0KyhsfD0wKT4+Ml0pLTF8MCkvM3wwLChEKy00''@;'; put 'put ''fDApPj4+MDwzKWFbZis0Pj4yXT00LGFbZj4+Ml09MHxtcig2NCksYVtwKzQ+PjJdPTQsRD0wfG1yKDY0KSxhW3A+PjJdPUQsd3UoUiwwfGFbbD4+Ml0sMyxjLDB8YVtmPj4yXSxEKTtlbHNle2ZvcihEPTB8bXIoYjw8MyksQT0wLHc9MHxhW2w+PjJdLG09MDshKCgwfEEpPj0oMHxiKSk7KUs9''@;'; put 'put ''K0VvZSh3KSxfW0QrKEE8PDMpPj4zXT1LLEE9QSsxfDAsdz13KzQ4fDAsbT1LK207Zm9yKGMqPW0sTT0wLG09MDshKCgwfGIpPD0oMHxNKXx8KG09K19bRCsoTTw8Myk+PjNdK20sbT49YykpOylNPU0rMXwwO2ZvcihhWyh3PWYrNHwwKT4+Ml09QT00KyhrPTMqTXwwKXwwLGFbZj4+Ml09MHxt''@;'; put 'put ''cihBPDw0KSxBPTErKDMqKGItTXwwKXwwKXwwLGFbKGI9cCs0fDApPj4yXT1BLGFbcD4+Ml09MHxtcihBPDw0KSxBPTA7ISgoMHxBKT49KDB8YVt3Pj4yXSkpOylhWyhwZT0oMHxhW2Y+PjJdKSsoQTw8NCl8MCk+PjJdPWFbKG1lPSgwfGFbbD4+Ml0pKyhBPDw0KXwwKT4+Ml0sYVtwZSs0Pj4y''@;'; put 'put ''XT1hW21lKzQ+PjJdLGFbcGUrOD4+Ml09YVttZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW21lKzEyPj4yXSxBPUErMXwwO2ZvcihBPUErLTR8MCx3PTA7ISgoMHx3KT49KDB8YVtiPj4yXSkpOylhWyhtZT0oMHxhW3A+PjJdKSsodzw8NCl8MCk+PjJdPWFbKHBlPSgwfGFbbD4+Ml0pKyhBPDw0KXww''@;'; put 'put ''KT4+Ml0sYVttZSs0Pj4yXT1hW3BlKzQ+PjJdLGFbbWUrOD4+Ml09YVtwZSs4Pj4yXSxhW21lKzEyPj4yXT1hW3BlKzEyPj4yXSxBPUErMXwwLHc9dysxfDA7d3UoUiwoMHxhW2w+PjJdKSsoazw8NCl8MCwzLChjLW0rKEs9K19bRCsoTTw8Myk+PjNdKSkvSywoMHxhW2Y+PjJdKSsoazw8NCl8''@;'; put 'put ''MCwwfGFbcD4+Ml0pLEh0KEQpfW9lPUd9ZnVuY3Rpb24gRW9lKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO3JldHVybiBwPStGMCgrKChjPStfWzgrKGx8PTApPj4zXS0oQT0rX1tsKzI0Pj4zXSkpKmMrKHA9K19bbD4+M10tKG09K19bbCsxNj4+M10pKSpwKSksKygocD0rRjAoKygoQS09''@;'; put 'put ''Zj0rX1tsKzQwPj4zXSkqQSsobS09Yz0rX1tsKzMyPj4zXSkqbSkpK3ApKyArRjAoKygoZi09K19bbCs1Nj4+M10pKmYrKGMtPStfW2wrNDg+PjNdKSpjKSkpfWZ1bmN0aW9uIHREKGwsYyl7cmV0dXJuIGx8PTAsYz0wfGhpKGN8PTApLDB8ZnVuY3Rpb24gSW9lKGwpe3ZhciBjPTAsZj0wLHA9''@;'; put 'put ''MCxtPTAsQT0wO2M9bHw9MCxtPWw7ZTpmb3IoOzspe2ZvcihwPTA7Oyl7aWYoZj1jLGM9YysxfDAsISgoZj0wfHVlW2Y+PjBdKTw8MjQ+PjI0KSlicmVhayBlO2lmKHA8PDI0Pj4yNCl7QT01O2JyZWFrfWlmKGY8PDI0Pj4yNCE9OTIpYnJlYWs7cD0xfXQ6ZG97aWYoNT09KDB8QSkpc3dpdGNo''@;'; put 'put ''KEE9MCxmPDwyND4+MjR8MCl7Y2FzZSAxMTQ6Zj0xMzticmVhayB0O2Nhc2UgMTA4OmNhc2UgMTEwOmY9MTA7YnJlYWsgdDtkZWZhdWx0OmJyZWFrIHR9fXdoaWxlKDApO3VlW20+PjBdPWYsbT1tKzF8MH1yZXR1cm4gdWVbbT4+MF09MCwwfGx9KGM9MT09KDB8dWVbMTE1KygwfGFbYysxNj4+''@;'; put 'put ''Ml0pPj4wXSk/MHxTayhsKTowfCQ2KGwsYykpfWZ1bmN0aW9uIG5EKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtPSttO3ZhciBELFIsRyxLLHBlLEE9MCx3PTAsYj0wLGs9MCxNPTAsbWU9MCxiZT0wO2ZvcihwZT1vZSxvZT1vZSsxNjY0fDAsRD1wZSsxNjAwfDAsUj1wZSs4MDB8''@;'; put 'put ''MCxHPXBlLEs9MHxRbigyNCksYVtLKzE2Pj4yXT0xLGs9KCgwfGFbcCs0Pj4yXSktMXwwKS8zfDAsdz0wLGI9SzshKCgwfHcpPj0oMHxrKSk7KXtmb3IoTT0zKnd8MCxBPTA7NCE9KDB8QSk7KWFbKG1lPUQrKEE8PDQpfDApPj4yXT1hWyhiZT0oMHxhW3A+PjJdKSsoQStNPDw0KXwwKT4+Ml0s''@;'; put 'put ''YVttZSs0Pj4yXT1hW2JlKzQ+PjJdLGFbbWUrOD4+Ml09YVtiZSs4Pj4yXSxhW21lKzEyPj4yXT1hW2JlKzEyPj4yXSxBPUErMXwwO3c9dysxfDAsYj0wfEJVKEQsYil9Zm9yKEE9MCx3PTAsYj1LOzspe2lmKCFiKXt3PUssQT1LO2JyZWFrfVBVKHcsYixrPTB8YVtiKzE2Pj4yXSxNPVIrKEE8''@;'; put 'put ''PDQpfDAscD1HKyhBPDw0KXwwLG0pLDUwPT0oMHwoQT1BKzF8MCkpfDA9PSgwfGspPyh4b2UobCxjLGYsQSxSLEcpLGFbUj4+Ml09YVtNPj4yXSxhW1IrND4+Ml09YVtNKzQ+PjJdLGFbUis4Pj4yXT1hW00rOD4+Ml0sYVtSKzEyPj4yXT1hW00rMTI+PjJdLGFbRz4+Ml09YVtwPj4yXSxhW0cr''@;'; put 'put ''ND4+Ml09YVtwKzQ+PjJdLGFbRys4Pj4yXT1hW3ArOD4+Ml0sYVtHKzEyPj4yXT1hW3ArMTI+PjJdLHc9YixBPTEsYj1rKToodz1iLGI9ayl9Zm9yKDt3OyliZT0wfGFbdysxNj4+Ml0sSHQoQSksdz1iZSxBPWJlO29lPXBlfWZ1bmN0aW9uIEJVKGwsYyl7Y3w9MDt2YXIgcCxtLEEsZj0wO3Jl''@;'; put 'put ''dHVybiBBPW9lLG9lPW9lKzE0NHwwLG09QSsxMjh8MCxmPUErNjR8MCxwPUEsMHxXRihsfD0wKT8oMT09KDB8YVsoZj1jKzE2fDApPj4yXSkmJihhW2Y+PjJdPTAsYVtjPj4yXT1hW2w+PjJdLGFbYys0Pj4yXT1hW2wrND4+Ml0sYVtjKzg+PjJdPWFbbCs4Pj4yXSxhW2MrMTI+PjJdPWFbbCsx''@;'; put 'put ''Mj4+Ml0pLGFbbT4+Ml09YVsoZj1sKzQ4fDApPj4yXSxhW20rND4+Ml09YVtmKzQ+PjJdLGFbbSs4Pj4yXT1hW2YrOD4+Ml0sYVttKzEyPj4yXT1hW2YrMTI+PjJdLGY9MHxmdW5jdGlvbiBCNShsLGMpe2x8PTAsY3w9MDt2YXIgZjtyZXR1cm4gZj0wfFFuKDI0KSxhW2YrMTY+PjJdPTAsYVtm''@;'; put 'put ''Pj4yXT1hW2w+PjJdLGFbZis0Pj4yXT1hW2wrND4+Ml0sYVtmKzg+PjJdPWFbbCs4Pj4yXSxhW2YrMTI+PjJdPWFbbCsxMj4+Ml0sYVtjKzE2Pj4yXT1mLDB8Zn0obSxjKSk6KHd1KG0sbCwzLC41LGYscCksZj0wfEJVKHAsMHxCVShmLGMpKSksb2U9QSwwfGZ9ZnVuY3Rpb24gUFUobCxjLGYs''@;'; put 'put ''cCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQT0rQTt2YXIgayxNLEQsUixHLEsscGUsbWUsYmUsdz0wLGI9MDtwZT1vZSxvZT1vZSs5NnwwLEQ9cGUrODB8MCxNPXBlKzY0fDAsaz1wZSs0OHwwLEc9cGUrMTZ8MCxLPXBlLGFbKFI9cGUrMzJ8MCk+PjJdPWFbKGN8PTApPj4yXSxhW1IrND4+''@;'; put 'put ''Ml09YVtjKzQ+PjJdLGFbUis4Pj4yXT1hW2MrOD4+Ml0sYVtSKzEyPj4yXT1hW2MrMTI+PjJdO2Rve2lmKGwpe2lmKGFbRz4+Ml09YVtsPj4yXSxhW0crND4+Ml09YVtsKzQ+PjJdLGFbRys4Pj4yXT1hW2wrOD4+Ml0sYVtHKzEyPj4yXT1hW2wrMTI+PjJdLGYpe2FbSz4+Ml09YVtmPj4yXSxh''@;'; put 'put ''W0srND4+Ml09YVtmKzQ+PjJdLGFbSys4Pj4yXT1hW2YrOD4+Ml0sYVtLKzEyPj4yXT1hW2YrMTI+PjJdLHc9K19bUj4+M10sYj0rX1tSKzg+PjNdO2JyZWFrfV9bSz4+M109Mioodz0rX1tSPj4zXSktK19bRz4+M10sX1tLKzg+PjNdPTIqKGI9K19bUis4Pj4zXSktK19bRys4Pj4zXTticmVh''@;'; put 'put ''a31hW0s+PjJdPWFbZj4+Ml0sYVtLKzQ+PjJdPWFbZis0Pj4yXSxhW0srOD4+Ml09YVtmKzg+PjJdLGFbSysxMj4+Ml09YVtmKzEyPj4yXSxfW0c+PjNdPTIqKHc9K19bUj4+M10pLStfW0s+PjNdLF9bRys4Pj4zXT0yKihiPStfW1IrOD4+M10pLStfW0srOD4+M119d2hpbGUoMCk7YVtrPj4y''@;'; put 'put ''XT1hW0c+PjJdLGFbays0Pj4yXT1hW0crND4+Ml0sYVtrKzg+PjJdPWFbRys4Pj4yXSxhW2srMTI+PjJdPWFbRysxMj4+Ml0sYVtNPj4yXT1hW1I+PjJdLGFbTSs0Pj4yXT1hW1IrND4+Ml0sYVtNKzg+PjJdPWFbUis4Pj4yXSxhW00rMTI+PjJdPWFbUisxMj4+Ml0sYVtEPj4yXT1hW0s+PjJd''@;'; put 'put ''LGFbRCs0Pj4yXT1hW0srND4+Ml0sYVtEKzg+PjJdPWFbSys4Pj4yXSxhW0QrMTI+PjJdPWFbSysxMj4+Ml0sYmU9K2Z1bmN0aW9uIFRvZShsLGMsZil7bHw9MDt2YXIgQSxwPTAsbT0wO3JldHVybiBtPStxMigrKCtfWzgrKGZ8PTApPj4zXS0oQT0rX1s4KyhjfD0wKT4+M10pKSwrKCtfW2Y+''@;'; put 'put ''PjNdLShwPStfW2M+PjNdKSkpLCsoLjUqKChtLT1wPStxMigrKCtfW2wrOD4+M10tQSksKygrX1tsPj4zXS1wKSkpPjA/bSstNi4yODMxODUzMDcxNzk1ODY6bSkrcCl9KGssTSxEKSxtZT0rbGEoK2JlKSpBLEE9K0lhKCtiZSkqQSxfW3A+PjNdPXcrbWUsX1twKzg+PjNdPWIrQSxfW20+PjNd''@;'; put 'put ''PXctbWUsX1ttKzg+PjNdPWItQSxvZT1wZX1mdW5jdGlvbiB4b2UobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxtfD0wLEF8PTA7dmFyIGIsdz0wLGs9MCxNPTAsRD0wO2ZvcihiPShwfD0wKTw8MSxrPTB8YVsoZnw9MCk+PjJdLHc9MCxNPTA7ISgoMHx3KT49KDB8aykpOylEPSgwfGFbKDB8YVtj''@;'; put 'put ''Pj4yXSkrKHc8PDIpPj4yXSkrTXwwLHc9dysxfDAsTT1EO2ZvcihhW2Y+PjJdPUQ9aysxfDAsRD0wfGwwKDB8YVtjPj4yXSxEPDwyKSxhW2M+PjJdPUQsYVtEKyh3PDwyKT4+Ml09YixhW2w+PjJdPTB8bDAoMHxhW2w+PjJdLE0rYjw8NCksYz1iKy0xK018MCx3PTA7ISgoMHx3KT49KDB8cCkp''@;'; put 'put ''OylhWyhEPSgwfGFbbD4+Ml0pKyh3K008PDQpfDApPj4yXT1hWyhrPW0rKHc8PDQpfDApPj4yXSxhW0QrND4+Ml09YVtrKzQ+PjJdLGFbRCs4Pj4yXT1hW2srOD4+Ml0sYVtEKzEyPj4yXT1hW2srMTI+PjJdLGFbKEQ9KDB8YVtsPj4yXSkrKGMtdzw8NCl8MCk+PjJdPWFbKGs9QSsodzw8NCl8''@;'; put 'put ''MCk+PjJdLGFbRCs0Pj4yXT1hW2srND4+Ml0sYVtEKzg+PjJdPWFbays4Pj4yXSxhW0QrMTI+PjJdPWFbaysxMj4+Ml0sdz13KzF8MH1mdW5jdGlvbiBEb2UobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihmPTB8YVsobHw9MCk+PjJdOzspe2lmKCEoKG09MHx1ZVtmPj4w''@;'; put 'put ''XSk8PDI0Pj4yNCkpe3A9MDticmVha31pZighKG08PDI0Pj4yND09NDR8MCE9KDB8S2MocD1tPDwyND4+MjQpKSkpe0E9NTticmVha31mPWYrMXwwfWU6ZG97aWYoNT09KDB8QSkpe3N3aXRjaCgwfHApe2Nhc2UgMDpwPTA7YnJlYWsgZTtjYXNlIDQxOmNhc2UgNDA6Zj1mKzF8MDticmVhayBl''@;'; put 'put ''fWZvcihBPWMrNHwwLHc9Yys4fDA7Oyl7aWYoKDB8TG9lKG08PDI0Pj4yNCkpPDwyND4+MjQpe3A9MTticmVhayBlfShwPTB8YVtBPj4yXSk+Pj4wPj0oMHxhW3c+PjJdKT4+PjAmJihHMChjLDEpLHA9MHxhW0E+PjJdKSxhW0E+PjJdPXArMSx1ZVtwPj4wXT1tLGY9cD1mKzF8MCxtPTB8dWVb''@;'; put 'put ''cD4+MF19fX13aGlsZSgwKTtyZXR1cm4gYVtsPj4yXT1mLDB8cH1mdW5jdGlvbiBMb2UobCl7c3dpdGNoKDB8KGx8PTApKXtjYXNlIDA6Y2FzZSA0NDpjYXNlIDQxOmNhc2UgNDA6bD0xO2JyZWFrO2RlZmF1bHQ6bD0wfXJldHVybiAwfGx9ZnVuY3Rpb24gc2sobCxjKXtyZXR1cm4gMHxGVSgw''@;'; put 'put ''fGFbKGx8PTApPj4yXSwwfGFbbCsxNjA+PjJdLDB8YVtsKzE1Nj4+Ml0sY3w9MCl9ZnVuY3Rpb24gRlUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgdyxiLGssTSxELFIsbT0wLEE9MDtSPW9lLG9lPW9lKzE2MHwwLE09UisxNnwwLEQ9UixhWyhrPVIrMjB8MCk+PjJdPTAsYVtN''@;'; put 'put ''Pj4yXT0wLG9zKEQsMTI4LFIrMjR8MCksY28oRCxwKSwocD0wfGFbKG09RCs0fDApPj4yXSk+Pj4wPj0oMHxhW0QrOD4+Ml0pPj4+MCYmKEcwKEQsMSkscD0wfGFbbT4+Ml0pLHVlW3A+PjBdPTAsYVttPj4yXT1BPTB8YVtEPj4yXSx3PWwrMzAwfDAsYj1sKzI5NnwwLHA9MCxtPUE7ZTpmb3Io''@;'; put 'put ''Ozspe2lmKHApe3A9MTticmVha31pZighKHA9MHxvWihtLDB8YVt3Pj4yXSxrKSkpe3A9MDticmVha31zd2l0Y2goKDAhPSgwfChwPShBPTAhPSgwfChtPTB8b1oocCwwfGFbYj4+Ml0sTSkpKSk/MHxvWigwLDB8YVtiPj4yXSxNKTowKSkmMSkrKDEmQSkmMyl7Y2FzZSAyOm09MHxyRChsLG0s''@;'; put 'put ''MCkscD0oKHA9MHxyRChsLHAsZikpJm18MCk+LTEmKDB8KChBPSgwfG0pPigwfHApKT9tOnApKT49KDB8YykmKDB8KEE/cDptKSk8PSgwfGMpLG09MDtjb250aW51ZSBlO2Nhc2UgMTpwPSgwfHJEKGwsbSxjKSk9PSgwfGMpLG09MDtjb250aW51ZSBlO2RlZmF1bHQ6cD0wLG09MDtjb250aW51''@;'; put 'put ''ZSBlfX1yZXR1cm4gazIoRCksb2U9UiwwfHB9ZnVuY3Rpb24gckQobCxjLGYpe2x8PTAsZnw9MDt2YXIgQSxwPTAsbT0wOyhBPTB8dWVbKGN8PTApPj4wXSk8PDI0Pj4yND09OTcmJjA9PSgwfFppKGMsMTAwMzk2KSl8fChwPTMpO2U6ZG97aWYoMz09KDB8cCkpe2lmKCgwfE9vZShjKSk8PDI0''@;'; put 'put ''Pj4yNCl7Zj0wfGUzKGMpO2JyZWFrfWlmKG09MHxhW2wrMzA4Pj4yXSlmb3IobD0wfGFbbCszMTI+PjJdLGY9MTs7KXtpZigoMHxmKT4oMHxsKSl7Zj0tMTticmVhayBlfWlmKEE8PDI0Pj4yND09KDB8dWVbKHA9MHxhW20rKGY8PDIpPj4yXSk+PjBdKSYmMD09KDB8WmkoYyxwKSkpYnJlYWsg''@;'; put 'put ''ZTtmPWYrMXwwfWVsc2UgZj0tMX19d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBPb2UobCl7bHw9MDtmb3IodmFyIGM9MDs7KXtpZighKChjPTB8dWVbbD4+MF0pPDwyND4+MjQpKXtsPTE7YnJlYWt9aWYoISgoKDI1NSZjKS00OHwwKT4+PjA8MTApKXtsPTA7YnJlYWt9bD1sKzF8MH1y''@;'; put 'put ''ZXR1cm4gMHxsfWZ1bmN0aW9uIFR5KGwsYyl7cmV0dXJuIDB8KCtfWzE2KyhsfD0wKT4+M10+PStfWyhjfD0wKT4+M10mJitfW2MrMTY+PjNdPj0rX1tsPj4zXSYmK19bbCsyND4+M10+PStfW2MrOD4+M10/K19bYysyND4+M10+PStfW2wrOD4+M10mMTowKX1mdW5jdGlvbiBzTihsLGMsZil7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7ZTpkb3tpZigoMHxhW2wrMTU2Pj4yXSk+PTImJihwPTB8QTIoZiwwfGFbNDcxNjddLDE5NTA1OSksKDB8c2sobCxwKSk8PDI0Pj4yND09MCkpaWYoMHx1ZVtwPj4wXSlwPTA7ZWxzZSBpZigwfEZzKGMsZikpZm9yKHA9MHxGcyhjLGYpOzspe2lm''@;'; put 'put ''KCFwKXtwPTA7YnJlYWsgZX1pZihtPTB8QTIocCwwfGFbNDcxOTBdLDE5NTA1OSksISgwfHVlW20+PjBdKSl7cD0xO2JyZWFrIGV9aWYoKDB8c2sobCxtKSk8PDI0Pj4yNCl7cD0xO2JyZWFrIGV9cD0wfFRzKGMscCxmKX1lbHNlIHA9MTtlbHNlIHA9MX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1''@;'; put 'put ''bmN0aW9uIFJvZShsLGMpe3ZhciBmLHAsbTtyZXR1cm4gY3w9MCxmPW9lLG9lPW9lKzY0fDAscD1mKzMyfDAsYVsobT1mKT4+Ml09YVsobD00OCsoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSxhW20rND4+Ml09YVtsKzQ+PjJdLGFbbSs4Pj4yXT1hW2wrOD4+Ml0sYVttKzEyPj4yXT1hW2wr''@;'; put 'put ''MTI+PjJdLGFbbSsxNj4+Ml09YVtsKzE2Pj4yXSxhW20rMjA+PjJdPWFbbCsyMD4+Ml0sYVttKzI0Pj4yXT1hW2wrMjQ+PjJdLGFbbSsyOD4+Ml09YVtsKzI4Pj4yXSxhW3A+PjJdPWFbYz4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJdLGFbcCsxMj4+Ml09YVtj''@;'; put 'put ''KzEyPj4yXSxhW3ArMTY+PjJdPWFbYysxNj4+Ml0sYVtwKzIwPj4yXT1hW2MrMjA+PjJdLGFbcCsyND4+Ml09YVtjKzI0Pj4yXSxhW3ArMjg+PjJdPWFbYysyOD4+Ml0sYz0yNTUmKDB8VHkobSxwKSksb2U9ZiwwfGN9ZnVuY3Rpb24gSFUobCxjKXtjfD0wO3ZhciBLLHBlLGY9MCxwPTAsbT0w''@;'; put 'put ''LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsbWU9MCxiZT0wLE9lPTA7Sz0wfGFbMTUyKyhsfD0wKT4+Ml0scGU9MHxiNShsKSxhW3BlKzQ+PjJdPTIsYVtwZSs4Pj4yXT1jLGFbcGUrMTI+PjJdPTgsMTY3NzcyMTYmS3wwJiYoZj0oMHxhclsxNzgrKDB8YVsxNisoMHxmcihjKSk+''@;'; put 'put ''PjJdKT4+MV0pPjI/KygwfH5+KChmPTcyKitfWzE2KygwfGFbMTMyKygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdKSsoZj49MD8uNTotLjUpKSk6MCxfW3BlKzE2OD4+M109ZiksUjcobCwwfGFbMTA0KygwfGFbKHc9YysxNnwwKT4+Ml0pPj4yXSxjKTtkb3tpZig0MjU5ODQwJkt8MCl7aWYoMD09''@;'; put 'put ''KDB8YVtwZSsyMDg+PjJdKSYmMD09KDEmVHRbcGUrMjYwPj4xXSkpYnJlYWs7Uj0wfFo1KGMpLGY9K19bMTYrKGI9MHxhW3c+PjJdKT4+M10sRz0rX1tiKzI0Pj4zXSxiPTB8UG9lKGMpO2U6ZG97aWYoMz09KDJ8UikpaWYoTT0wfGFbMTIrKDB8YVt3Pj4yXSk+PjJdLHA9KDB8dU4oTSkpPDwy''@;'; put 'put ''ND4+MjQ/MCE9KGFbTSs0Pj4yXXxifDApOjAsMD09KDUyNDI4OCZLfDApfDA9PSgwfE0pfHApbWU9MzE7ZWxzZXtpZihEPSgwfChEPTB8YVsobT1NKzh8MCk+PjJdKSk8Mz8xOkQsaz0oMHwoaz0wfGFbKEE9TSs0fDApPj4yXSkpPjE/azoxLFI9MHxhW00rNDQ+PjJdLHA9KChwPShwPTB8TGko''@;'; put 'put ''YywxMDI3MDUpKT8wfGUzKHApOjApLTR8MCk+Pj4wPjU2PzIwOnAsIShhW0E+PjJdfGIpKXthW3BlKzI2ND4+Ml09MCxtPTB8bXIoMzIpLF9bbT4+M109Zi0oT2U9K19bODgrKHA9MHxhW3c+PjJdKT4+M10pLF9bbSs4Pj4zXT1HLShiZT0uNSorX1twKzgwPj4zXSksX1ttKzE2Pj4zXT1PZStm''@;'; put 'put ''LF9bbSsyND4+M109YmUrRyxwPTI7YnJlYWt9aWYoKDB8KG09MHxhW20+PjJdKSk8MyYmMD09K19bTSszMj4+M10mJjA9PStfW00rMjQ+PjNdKXtpZihtPXBlKzI2NHwwLDB8YVtNPj4yXSl7YVttPj4yXT0xLG09MHxtcigzMiksX1ttPj4zXT1mLF9bbSs4Pj4zXT1HLF9bbSsxNj4+M109K19b''@;'; put 'put ''UisoKHA9KGs8PDEpLTF8MCk8PDQpPj4zXStmLF9bbSsyND4+M109K19bUisocDw8NCkrOD4+M10rRyxwPTI7YnJlYWt9Zm9yKGFbbT4+Ml09MixtPTB8Y04oK19bUisoKG09KGs8PDEpLTF8MCk8PDQpPj4zXSwrX1tSKyhtPDw0KSs4Pj4zXSxwKSxBPTA7Oyl7aWYoKDB8QSk+PSgwfHApKWJy''@;'; put 'put ''ZWFrIGU7X1soUj1tKyhBPDw0KXwwKT4+M109K19bUj4+M10rZixfWyhSPW0rKEE8PDQpKzh8MCk+PjNdPStfW1I+PjNdK0csQT1BKzF8MH19aWYoaz0wfHZyKG0saystMXwwKSxhW3BlKzI2ND4+Ml09MiwoMHxtKTwoMHxwKSlmb3IobT0wfG1yKEQ8PDQpLHA9MDs7KXtpZigoMHxwKT49KDB8''@;'; put 'put ''RCkpe3A9RDticmVhayBlfV9bbSsocDw8NCk+PjNdPStfW1IrKChNPXAra3wwKTw8NCk+PjNdK2YsX1ttKyhwPDw0KSs4Pj4zXT0rX1tSKyhNPDw0KSs4Pj4zXStHLHA9cCsxfDB9ZWxzZSBmb3IoYj0oMHxtKS8oMHxwKXwwLG09MHxtcihwPDw0KSxBPTAsdz0wOzspe2lmKCgwfEEpPj0oMHxw''@;'; put 'put ''KSlicmVhayBlO19bbSsoQTw8NCk+PjNdPStfW1IrKChEPXcra3wwKTw8NCk+PjNdK2YsX1ttKyhBPDw0KSs4Pj4zXT0rX1tSKyhEPDw0KSs4Pj4zXStHLEE9QSsxfDAsdz13K2J8MH19ZWxzZSBtZT0zMX13aGlsZSgwKTszMT09KDB8bWUpJiYoYVtwZSsyNjQ+PjJdPTAsbT0wfG1yKDMyKSxf''@;'; put 'put ''W20+PjNdPWYtK19bODgrKHA9MHxhW3c+PjJdKT4+M10sX1ttKzg+PjNdPUctKE9lPS41KitfW3ArODA+PjNdKSxfW20rMTY+PjNdPStfW3ArOTY+PjNdK2YsX1ttKzI0Pj4zXT1PZStHLHA9MiksODE5MiZLfHxwZihsLG0sbSxwKSxhW3BlKzI3Mj4+Ml09bSxhW3BlKzI2OD4+Ml09cH19d2hp''@;'; put 'put ''bGUoMCk7WjkoMHxMaShjLDEwMDAzMikpLGZ1bmN0aW9uIE1iKGwsYyl7Y3w9MDt2YXIgZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzU2Pj4yXSkmJm5vWzEyNyZmXShsKX0obCxjKX1mdW5jdGlvbiBCb2UobCl7KGZ1bmN0aW9uIEViKGwpe3ZhciBjLGY9MDswfChj''@;'; put 'put ''PTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys2MD4+Ml0pJiZub1sxMjcmZl0obCl9KShsfD0wKSxFQyhsKX1mdW5jdGlvbiBSNyhsLGMsZil7bHw9MCxjfD0wO3ZhciBtLHcsYixrLE0sQSxwPTA7TT1vZSxvZT1vZSsxNDR8MCxiPU0scD0wfExpKGZ8PTAsMTQxMDU1KSx3PTB8TGko''@;'; put 'put ''ZiwxNDExMDEpLGs9MHxMaShmLDE0MTA4OCksb3MoYiwxMjgsTSsxNnwwKSxBPWM/MHxhW2M+PjJdOjAsMCE9KDB8cCkmJjAhPSgwfHVlW3A+PjBdKXx8KHA9MHxMaShmLDExMTQ3NykpLG09MHx4QyhsLGYsYiksekYobCxBLHAsYz13PzB8dEQodyxmKTowLGssbSxmKSxIdChjKSxrMihiKSxv''@;'; put 'put ''ZT1NfWZ1bmN0aW9uIFBvZShsKXt2YXIgYz0wLGY9MDtsPTB8T2EobHw9MCwwfGFbNDcxNTddLDE5NTA1OSk7ZTpkb3tpZigwfHVlW2w+PjBdKWZvcihxbChsKSxsPTAsYz0xODgyMjg7Oyl7aWYoIShmPTB8YVtjPj4yXSkpYnJlYWsgZTtsPShmPTA9PSgwfFppKGYsMTExMTAxKSkpPzE6bCxj''@;'; put 'put ''PWMrNHwwfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gdU4obCl7dmFyIGM9MDtyZXR1cm4gMHwoND09KDB8YVs4KyhsfD0wKT4+Ml0pJiYwPT0oMHwoMHx+figoYz0rX1tsKzE2Pj4zXSkrKGM+PTA/LjU6LS41KSkpJTkwKSYmMD09K19bbCsyND4+M10/MD09K19bbCsz''@;'; put 'put ''Mj4+M10mMTowKX1mdW5jdGlvbiBjTihsLGMsZil7bD0rbCxjPStjO3ZhciBBLHcscD0wLG09MDtmb3IoQT02LjI4MzE4NTMwNzE3OTU4Ni8rKDB8KGZ8PTApKSx3PTB8bXIoZjw8NCkscD0wLG09MDshKCgwfG0pPj0oMHxmKSk7KV9bdysobTw8NCk+PjNdPStsYSgrcCkqbCxfW3crKG08PDQp''@;'; put 'put ''Kzg+PjNdPStJYSgrcCkqYyxwKz1BLG09bSsxfDA7cmV0dXJuIDB8d31mdW5jdGlvbiBtdShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wO2U6ZG97aWYoKDB8YVtsKzE1Nj4+Ml0pPj0yJiYoZj0wfEEyKGMsMHxzaShjLDAsMTAxNTEwLDApLDE5NTA1OSksKDB8c2sobCxmKSk8PDI0Pj4yND09MCkp''@;'; put 'put ''aWYoMHx1ZVtmPj4wXSlmPTA7ZWxzZSBmb3IoZj0wfEx0KGMpOzspe2lmKCFmKXtmPTA7YnJlYWsgZX1pZigoMHxzTihsLGMsZikpPDwyND4+MjQpe2Y9MTticmVhayBlfWY9MHx6dChjLGYpfWVsc2UgZj0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gUWQobCxjKXt2YXIgZjtjfD0w''@;'; put 'put ''LGY9MHxiNShsfD0wKSxhW2YrND4+Ml09MSxhW2YrOD4+Ml09YyxhW2YrMTI+PjJdPTEsUjcobCwwfGFbMTIrKDB8YVtjKzE2Pj4yXSk+PjJdLGMpLGZ1bmN0aW9uIFNiKGwsYyl7Y3w9MDt2YXIgZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzMyPj4yXSkmJm5vWzEy''@;'; put 'put ''NyZmXShsKX0obCxjKX1mdW5jdGlvbiBmTihsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtsPTB8TGkobHw9MCwxNDEwODIpO2U6ZG97aWYoMCE9KDB8bCkmJjAhPSgwfHVlW2w+PjBdKSlmb3IocWwobCksZj0xODgyMjgsbD0wOzspe2Zvcig7Oyl7aWYoIShwPTB8YVtmPj4yXSkpe2Y9''@;'; put 'put ''MTg4MjI4O2JyZWFrIGV9aWYoISgwfFppKHAsMTExMTAxKSkpe209MTA7YnJlYWt9aWYoISgwfFppKHAsMTA2MzM0KSkpe3A9ZixtPTEyO2JyZWFrfWlmKCEoMHxaaShwLDEwNjM0MSkpKXtwPWYsbT0xNDticmVha31pZighKDB8WmkocCwxMDYzMTYpKSl7cD1mLG09MTY7YnJlYWt9Zj1mKzR8''@;'; put 'put ''MH1pZigxMCE9KDB8bSkpaWYoMTIhPSgwfG0pKWlmKDE0IT0oMHxtKSlpZigxNiE9KDB8bSkpO2Vsc2V7Zm9yKDthWyhtPXApPj4yXT1BPTB8YVsocD1wKzR8MCk+PjJdLEE7KW09MTY7bHw9NH1lbHNle2Zvcig7YVsobT1wKT4+Ml09QT0wfGFbKHA9cCs0fDApPj4yXSxBOyltPTE0O2x8PTY0''@;'; put 'put ''fWVsc2V7Zm9yKDthWyhBPXApPj4yXT1tPTB8YVsocD1wKzR8MCk+PjJdLG07KW09MTI7bHw9M31lbHNlIGY9Zis0fDAsbHw9MX1lbHNlIGY9MCxsPTB9d2hpbGUoMCk7cmV0dXJuIGFbYz4+Ml09bCwwfGZ9ZnVuY3Rpb24geDEobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBBLGIscD0wLG09''@;'; put 'put ''MCx3PTAsaz0wO2lmKGI9b2Usb2U9b2UrMTZ8MCxBPWIsYVsodz1iKzR8MCk+PjJdPTAsaz0wPT0oMHwkVChsLDAsdykpLHc9MHxhW3c+PjJdLGsmJigwfChwPTB8YVt3Pj4yXSkpPj0yJiYwIT0oMHxhW2FbKG09dys4fDApPj4yXT4+Ml0pKXsoMHxwKT4yJiZYcigwLDEwMDQxNSxBKSxrPTB8''@;'; put 'put ''UW4oMSsoMHx6byhsKSl8MCksYVtjPj4yXT1rLCQzKGssMHxhW2FbbT4+Ml0+PjJdKSwwfGFbMTIrKDB8YVttPj4yXSk+PjJdPyhrPShrPTB8YVtjPj4yXSkrKDErKDB8em8oaykpKXwwLGFbYys0Pj4yXT1rLCQzKGssMHxhWzEyKygwfGFbbT4+Ml0pPj4yXSkpOmFbYys0Pj4yXT0wLGw9MHxh''@;'; put 'put ''W20+PjJdO2Rve2lmKCEoMHx1ZVtsKzg+PjBdKSl7aWYoMHx1ZVtsKzIwPj4wXSl7V25bZj4+Ml09MS0rV25bbCsxNj4+Ml07YnJlYWt9V25bZj4+Ml09MDticmVha31hW2Y+PjJdPWFbbCs0Pj4yXX13aGlsZSgwKTt5Nyh3KSxsPTF9ZWxzZSBhW2M+PjJdPTAseTcodyksbD0wO3JldHVybiBv''@;'; put 'put ''ZT1iLDB8bH1mdW5jdGlvbiBoTihsLGMpeyhmdW5jdGlvbiBHUihsLGMpe2N8PTA7dmFyIGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYyszNj4+Ml0pJiZub1sxMjcmZl0obCl9KShsfD0wLGN8PTApLEVDKGwpfWZ1bmN0aW9uIGlEKGwsYyxmLHApe2x8PTAsZnw9MDt2''@;'; put 'put ''YXIgQSxtPTA7Zm9yKG09KDB8KG09KEE9MHxhWyhjfD0wKT4+Ml0pPDwxKSk+KDB8KHB8PTApKT9tOnAsKDB8QSk8KDB8cCkmJihsPTB8bDAobCxtPDw0KSxhW2M+PjJdPW0pLGM9MDshKCgwfGMpPj0oMHxwKSk7KV9bbCsoYzw8NCk+PjNdPStfW2YrKDI0KmN8MCk+PjNdLF9bbCsoYzw8NCkr''@;'; put 'put ''OD4+M109K19bZisoMjQqY3wwKSs4Pj4zXSxjPWMrMXwwO3JldHVybiAwfGx9ZnVuY3Rpb24gRzMobCxjKXt2YXIgZjtmPTB8YVsoY3w9MCk+PjJdLGFbKGx8PTApPj4yXT1hW2MrND4+Ml0sYVtsKzQ+PjJdPWZ9ZnVuY3Rpb24gRm9lKGwsYyl7bHw9MDt2YXIgbSxmPTAscD0wO2ZvcihtPTE2''@;'; put 'put ''KyhjfD0wKXwwLHA9MTshKCgwfHApPigwfGFbMTgwKyhjPTB8YVttPj4yXSk+PjJdKSk7KUZvZShsLGY9MHxhWygwfGFbYysxODQ+PjJdKSsocDw8Mik+PjJdKSwwfChjPTB8TGkoZiwxNDA4MjMpKSYmMHx1ZVtjPj4wXSYmZ2EobCxjKSwwfChjPTB8TGkoZiwxMzc3MjkpKSYmMHx1ZVtjPj4w''@;'; put 'put ''XSYmZ2EobCxjKSwwfChjPTB8TGkoZiwxNDA5NzcpKSYmMHx1ZVtjPj4wXSYmZ2EobCxjKSwwfChjPTB8TGkoZiwxMDE0MTgpKSYmMHx1ZVtjPj4wXSYmb2wobCxjKSwwfChjPTB8TGkoZiwxMDE0NDYpKSYmMHx1ZVtjPj4wXSYmZ2EobCxjKSxwPXArMXwwfWZ1bmN0aW9uIEhvZShsKXtsfD0w''@;'; put 'put ''O3ZhciBjPTAsZj0wLHA9MDtyZXR1cm4oYz0wfGFbNDcxMjddKXx8KGM9MHxBcygyMDYyOCwwfGFbNDU4MV0pLGFbNDcxMjddPWMpLDB8bWlbNjMmYVtjPj4yXV0oYyxsLDQpP2M9MDoocD0wfGFbKGY9MHxhWzQ3MTI3XSk+PjJdLGM9MHxuYShsKSxtaVs2MyZwXShmLGMsMSksYz0xKSwwfGN9''@;'; put 'put ''ZnVuY3Rpb24gUDUobCl7dmFyIGM9MDtjPTB8YVs0NzEyOF0sKGx8PTApPyhhWzQ3MTI4XT1jKzEsY3x8KGFbNDcxMjldPTB8bmEoMHx0WigxLDApKSx0WigxLDE1MzU2MykpKTooMHxjKT4wJiYoYVs0NzEyOF09Yz1jKy0xfDAsMD09KDB8YykpJiYodFooMSwwfGFbNDcxMjldKSxIdCgwfGFb''@;'; put 'put ''NDcxMjldKSl9ZnVuY3Rpb24gZE4obCxjKXtsfD0wLGN8PTA7dmFyIEcsbWUsT2UsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO09lPW9lLG9lPW9lKzk2fDAsRz1PZSs0OHwwLG1lPU9lKzI0fDAscD1PZSs4fDAsZj1PZTtkb3tpZigwIT0oMHxmMChjLDEzNzQ4Myww''@;'; put 'put ''LDEpKSYmMCE9KDB8YVs4KygwfGFbKFI9YysxNnwwKT4+Ml0pPj4yXSkpe1ZVKGMpLG9EKGwsYyksRjUobCxjKSxQNSgxKSxiPWwrNTZ8MCxrPWwrMTg0fDAsTT1sKzE5MnwwLEQ9bCsyOHwwLHc9MHxjcmUobCk7ZTpmb3IoOzspe2lmKCF3KXtBPTMzO2JyZWFrfWlmKChmPTB8YVtiPj4yXSk/''@;'; put 'put ''KGFbdysyMD4+Ml09YVtmKzg+PjJdLGY9MHxhW2YrMTI+PjJdKTooYVt3KzIwPj4yXT0wLGY9MCksYVt3KzI0Pj4yXT1mLGFbdysxMj4+Ml09bCxhW3crMjg+PjJdPWFbaz4+Ml0sYVt3KzYyMD4+Ml09MjU3NjQsYVt3KzYyND4+Ml09MTQsISgwfGFbOCsoMHxhW1I+PjJdKT4+Ml0pKXtBPTEz''@;'; put 'put ''O2JyZWFrfXN3aXRjaChBPTB8Q2IodywwfGFbKHA9dys1MnwwKT4+Ml0pLGFbdys1Nj4+Ml09QSwwfEEpe2Nhc2UgOTk5OkE9MTY7YnJlYWsgZTtjYXNlIDIxOmY9MTticmVhaztjYXNlIDI0OmY9NTIwO2JyZWFrO2RlZmF1bHQ6Zj0wfCR2ZShjKX1hWyhtPXcrMTUyfDApPj4yXT1hW20+PjJd''@;'; put 'put ''fGYsZj0wfGFbTT4+Ml07ZG97aWYoZil7aWYoMzImYVtmKzE1Mj4+Ml18MCYmMD09KDB8WmkoMHxhW3A+PjJdLDB8YVtmKzUyPj4yXSkpKXtpZighKGY9MHxhWzQ3MTMwXSkpe0E9Mjc7YnJlYWt9YVtmKzg+PjJdPXcsYVt3KzM2Pj4yXT1hW2YrMzY+PjJdLEE9Mjk7YnJlYWt9STkoZiksYVtN''@;'; put 'put ''Pj4yXT0wLGFbRD4+Ml09MCxBPTI0fWVsc2UgQT0yNH13aGlsZSgwKTsyND09KDB8QSkmJihhWzQ3MTMwXT0wLEE9MjcpLDI3PT0oMHxBKSYmKEE9MCwwPT0oMHxaUih3KSkpJiYoYVtNPj4yXT13LEE9MjkpLDI5PT0oMHxBKSYmKGFbdys4Pj4yXT0wLGFbdysxMDQ+PjJdPTI1ODc2LFZvZSh3''@;'; put 'put ''KSxqb2UodyksalUodyxjKSxaVSh3LGMpLHpVKHcsYyksMTI4JmFbbT4+Ml18fFRXKHcsYyksYVs0NzEzMF09dyksdz0wfHI3ZShsKX1pZigxMz09KDB8QSkpe1hyKDEsMTAwNjc5LG1lKSxQNSgwKSxmPS0xO2JyZWFrfWlmKDE2PT0oMHxBKSl7YVtHPj4yXT1hW3A+PjJdLFhyKDEsMTAwNzAw''@;'; put 'put ''LEcpLFA1KDApLGY9LTE7YnJlYWt9aWYoMzM9PSgwfEEpKXtQNSgwKSxmPTA7YnJlYWt9fWVsc2UgQT01fXdoaWxlKDApO3JldHVybiA1PT0oMHxBKSYmKFhyKDEsMTAwNjAyLGYpLGY9LTEpLG9lPU9lLDB8Zn1mdW5jdGlvbiBWVShsKXt2YXIgYz0wO2ZvcihjPTB8THQobHw9MCk7YzspZ04o''@;'; put 'put ''bCxjKSxjPTB8enQobCxjKX1mdW5jdGlvbiBvRChsLGMpe3ZhciB3LGIsRCxmPTAscD0wLG09MCxBPTAsaz0wLE09MCxSPTA7RD1vZSxvZT1vZSszMnwwLGI9RCsyNHwwLHA9RCsxNnwwLHc9RCs4fDAsTT1ELGFbMTY4KyhsfD0wKT4+Ml09Y3w9MCx1ZVsobT1sKzI5M3wwKT4+MF09MCwwfChm''@;'; put 'put ''PTB8TGkoYywxMDU0OTYpKSYmKGFbcD4+Ml09dyxhW3ArND4+Ml09TSwoMHwoQT0wfCRhKGYsMTA1NTAzLHApKSk+MCkmJihfWyhmPWwrMjA4fDApPj4zXT1SPTcyKitfW3c+PjNdLF9bbCsyMDA+PjNdPVIsMSE9KDB8QSkmJihfW2Y+PjNdPTcyKitfW00+PjNdKSx1ZVttPj4wXT0xKSx1ZVso''@;'; put 'put ''cD1sKzI5MnwwKT4+MF09MCwwfChmPTB8TGkoYywxMDExMDIpKSYmKGFbYj4+Ml09dyxhW2IrND4+Ml09TSwoMHwoaz0wfCRhKGYsMTA1NTAzLGIpKSk+MCkmJihfWyhmPWwrMjI0fDApPj4zXT1SPTcyKitfW3c+PjNdLF9bbCsyMTY+PjNdPVIsMSE9KDB8aykmJihfW2Y+PjNdPTcyKitfW00+''@;'; put 'put ''PjNdKSx1ZVtwPj4wXT0xKSx1ZVsoZj1sKzI5NHwwKT4+MF09MCxhWyhwPWwrMjMyfDApPj4yXT1hWyhNPTQ4KygwfGFbOCsoMHxhWyhtPWMrMTZ8MCk+PjJdKT4+Ml0pfDApPj4yXSxhW3ArND4+Ml09YVtNKzQ+PjJdLGFbcCs4Pj4yXT1hW00rOD4+Ml0sYVtwKzEyPj4yXT1hW00rMTI+PjJd''@;'; put 'put ''LCtfWzQ4KyhwPTB8YVs4KygwfGFbbT4+Ml0pPj4yXSk+PjNdPi4wMDEmJitfW3ArNTY+PjNdPi4wMDEmJih1ZVtmPj4wXT0xKSxhW2wrMjg4Pj4yXT0wfHVlW3ArODE+PjBdPzkwOjAsYVsoZj1sKzE5NnwwKT4+Ml09MTAxMTA2LDB8KHA9MHxMaShjLDEwMTEwOSkpJiYwfHVlW3A+PjBdJiYo''@;'; put 'put ''YVtmPj4yXT1wKSxhWyhNPWwrMjU2fDApPj4yXT1hWyhrPTE2KygwfGFbbT4+Ml0pfDApPj4yXSxhW00rND4+Ml09YVtrKzQ+PjJdLGFbTSs4Pj4yXT1hW2srOD4+Ml0sYVtNKzEyPj4yXT1hW2srMTI+PjJdLGFbTSsxNj4+Ml09YVtrKzE2Pj4yXSxhW00rMjA+PjJdPWFbaysyMD4+Ml0sYVtN''@;'; put 'put ''KzI0Pj4yXT1hW2srMjQ+PjJdLGFbTSsyOD4+Ml09YVtrKzI4Pj4yXSxhWzQ3MTQxXT0wfHNpKGMsMCwxMDE0NzIsMCksYVs0NzE0Ml09MHxzaShjLDAsMTAxNDYzLDApLGFbbCszMjA+PjJdPTB8T2EoMCwwfGFbNDcxNTFdLDEwNzk5NCksX1tsKzMyOD4+M109K2NsKDAsMHxhWzQ3MTUwXSwx''@;'; put 'put ''NCwxKSxhW2wrMzM2Pj4yXT0yMDY2NCxhW2wrMTg4Pj4yXT0wfCRyKGMpLG9lPUR9ZnVuY3Rpb24gRjUobCxjKXtjfD0wO3ZhciBtLGY9MCxwPTA7MHwocD0wfGFbKGY9MzA0KyhsfD0wKXwwKT4+Ml0pJiYoSHQocCksYVtmPj4yXT0wKSwwfChmPTB8YVsocD1sKzMwOHwwKT4+Ml0pJiYoSHQo''@;'; put 'put ''ZiksYVtwPj4yXT0wKSwwfChmPTB8YVsobT1sKzMxNnwwKT4+Ml0pJiYoSHQoZiksYVttPj4yXT0wKSwoZj0wfExpKGMsMTAwODUzKSk/KGFbbCszMTI+PjJdPTB8ZnVuY3Rpb24gdnUobCxjLGYpe2x8PTAsZnw9MDt2YXIgQSxiLHA9MCxtPTAsdz0wO2ZvcihiPW9lLG9lPW9lKzE2fDAsbT1i''@;'; put 'put ''LHA9MHxMaShjfD0wLDEwMDk3MyksYVsodz1sKzI5NnwwKT4+Ml09MD09KDB8cCk/MTAwOTgyOnAsYz0wfExpKGMsMTAwOTg2KSxhWyhwPWwrMzAwfDApPj4yXT1jPTA9PSgwfGMpPzEwMDk5OTpjLDB8KGM9MHxmdW5jdGlvbiBjY2UobCxjKXtyZXR1cm4gYz0obHw9MCkrKDB8aVoobCxjfD0w''@;'; put 'put ''KSl8MCwwfCgwfHVlW2M+PjBdP2M6MCl9KDB8YVt3Pj4yXSxjKSkmJihhW20+PjJdPXVlW2M+PjBdLFhyKDAsMTAxMDAxLG0pLGFbcD4+Ml09MTk1MDU5KSxjPTB8bmEoZiksYVtsKzMwND4+Ml09YyxBPWwrMzA4fDAscD0wLGw9MDtmPTB8dnYoYywwfGFbdz4+Ml0pOyltPWwrMXwwLCgwfGwp''@;'; put 'put ''PCgwfHApP2M9MHxhW0E+PjJdOihwPXArMTI4fDAsYz0oYz0wfGFbQT4+Ml0pPzB8bDAoYyxwPDwyKTowfFFuKHA8PDIpLGFbQT4+Ml09YyksYVtjKyhtPDwyKT4+Ml09ZixsPW0sYz0wO3JldHVybiAwfGwmJih3PTB8bDAoMHxhW0E+PjJdLDgrKGw8PDIpfDApLGFbQT4+Ml09dyxhW3c+PjJd''@;'; put 'put ''PTAsYVsoMHxhW0E+PjJdKSsobCsxPDwyKT4+Ml09MCksb2U9YiwwfGx9KGwsYyxmKSwwfChmPTB8TGkoYywxMDA4NjApKSYmMHx1ZVtmPj4wXSYmKGFbbT4+Ml09MHxmdW5jdGlvbiBwTihsLGMpe2N8PTA7dmFyIGIsayxNLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKE09b2Usb2U9b2UrMTZ8''@;'; put 'put ''MCxrPU0sZj0wfFFuKDgrKGFbKGI9MzEyKyhsfD0wKXwwKT4+Ml08PDIpfDApLHA9MCx3PTE7ISgoMHx3KT4oMHwoQT0wfGFbYj4+Ml0pKSk7KW09cCsxfDAsKDB8RlUobCx3LEEsYykpPDwyND4+MjQmJihhW2YrKG08PDIpPj4yXT13LHA9bSksdz13KzF8MDtyZXR1cm4gcD8oYVtmPj4yXT1w''@;'; put 'put ''LGFbZisocCsxPDwyKT4+Ml09MSsoMHxhW2I+PjJdKSk6KGFbaz4+Ml09YyxYcigwLDEwMDg3MixrKSxIdChmKSxmPTApLG9lPU0sMHxmfShsLGYpKSk6KGFbcD4+Ml09MCxhW2wrMzEyPj4yXT0xKX1mdW5jdGlvbiAkdmUobCl7bD0wfExpKGx8PTAsMTAwODIxKTtlOmRve2lmKGwpc3dpdGNo''@;'; put 'put ''KDB8dWVbbD4+MF0pe2Nhc2UgMTEwOmlmKDB8WmkobCsxfDAsMTAwODMzKSl7bD0wO2JyZWFrIGV9bD0xO2JyZWFrO2Nhc2UgMTAxOmlmKDB8WmkobCsxfDAsMTAwODQzKSl7bD0wO2JyZWFrIGV9bD0xNjticmVhaztkZWZhdWx0Omw9MDticmVhayBlfWVsc2UgbD0wfXdoaWxlKDApO3JldHVy''@;'; put 'put ''biAwfGx9ZnVuY3Rpb24gVm9lKGwpe3ZhciBjPTAsZj0wOzB8dWVbMjkyKyhmPTB8YVsobHw9MCk+PjJdKT4+MF0/KGFbKGw9bCsyNDB8MCk+PjJdPWFbKGY9ZisyMTZ8MCk+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml0p''@;'; put 'put ''OihfW2wrMjQ4Pj4zXT1jPTMwMD09KDB8YVtsKzU2Pj4yXSk/K19bOCsoMHxhW2wrNjg+PjJdKT4+M106NCxfW2wrMjQwPj4zXT1jKX1mdW5jdGlvbiBqb2UobCl7dmFyIGM9MDtjPTB8YVsobHw9MCk+PjJdO2U6ZG97aWYoMHx1ZVtjKzI5Mz4+MF0pbD1sKzQxNnwwLGM9YysyMDB8MCxhW2w+''@;'; put 'put ''PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXTtlbHNlIHN3aXRjaCgwfGFbbCs1Nj4+Ml0pe2Nhc2UgMzAwOmFbKGM9bCs0MTZ8MCk+PjJdPWFbKGw9OCsoMHxhW2wrODQ+PjJdKXwwKT4+Ml0sYVtjKzQ+PjJd''@;'; put 'put ''PWFbbCs0Pj4yXSxhW2MrOD4+Ml09YVtsKzg+PjJdLGFbYysxMj4+Ml09YVtsKzEyPj4yXTticmVhayBlO2Nhc2UgMzA6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgNDpjYXNlIDM6Y2FzZSAyOl9bbCs0MjQ+PjNdPTM2LF9bbCs0MTY+PjNdPTM2O2JyZWFrIGU7ZGVmYXVsdDphWyhjPWwrNDE2fDAp''@;'; put 'put ''Pj4yXT0wLGFbYys0Pj4yXT0wLGFbYys4Pj4yXT0wLGFbYysxMj4+Ml09MDticmVhayBlfX13aGlsZSgwKX1mdW5jdGlvbiBqVShsLGMpe3ZhciBmLHA9MDtwPTB8YVsxOTIrKDB8YVsobHw9MCk+PjJdKT4+Ml0sZj0rX1syNCsoMHxhWzgrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4zXTtk''@;'; put 'put ''b3tpZigwPT1mKXtpZigwfHAmJjB8dWVbcCsxMjg+PjBdKXthWyhsPWwrNDMyfDApPj4yXT1hWyhwPXArMTEyfDApPj4yXSxhW2wrND4+Ml09YVtwKzQ+PjJdLGFbbCs4Pj4yXT1hW3ArOD4+Ml0sYVtsKzEyPj4yXT1hW3ArMTI+PjJdO2JyZWFrfWlmKGM9bCs0MzJ8MCwzMDA9PSgwfGFbbCs1''@;'; put 'put ''Nj4+Ml0pKXthW2M+PjJdPWFbKGw9NDArKDB8YVtsKzg0Pj4yXSl8MCk+PjJdLGFbYys0Pj4yXT1hW2wrND4+Ml0sYVtjKzg+PjJdPWFbbCs4Pj4yXSxhW2MrMTI+PjJdPWFbbCsxMj4+Ml07YnJlYWt9X1tsKzQ0MD4+M109OTYsX1tjPj4zXT05NjticmVha31fW2wrNDQwPj4zXT1mLF9bbCs0''@;'; put 'put ''MzI+PjNdPWZ9d2hpbGUoMCl9ZnVuY3Rpb24gWlUobCxjKXtjfD0wO3ZhciBELFIsRyxLLHBlLG1lLE9lLExlLEJlLEhlLGplLGV0LGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsYmU9MDtldD1vZSxvZT1vZSsxMTJ8MCxtZT1ldCs4MHwwLGJlPWV0KzU2fDAscGU9ZXQrNDB8MCxP''@;'; put 'put ''ZT1ldCszMnwwLExlPWV0KzI0fDAsQmU9ZXQrMTZ8MCxIZT1ldCs4fDAsamU9ZXQsRD0rX1syNzIrKGs9MHxhWyhsfD0wKT4+Ml0pPj4zXSxHPStfW2srMjgwPj4zXSxLPStfW2srMjY0Pj4zXSxfW2wrMjA4Pj4zXT1mPShSPStfW2srMjU2Pj4zXSktKHA9K19bbCsyNDA+PjNdKSxfW2wrMjE2''@;'; put 'put ''Pj4zXT13PUstKEE9K19bbCsyNDg+PjNdKSxfW2wrMjI0Pj4zXT1wKz1ELF9bbCsyMzI+PjNdPUErPUcsZj1wLWYsdz1BLXcsX1tCZT4+M109MSxBPStfWzY0KyhtPTB8YVs4KygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdO2Rve2lmKEE+LjAwMSYmKGI9K19bbSs3Mj4+M10pPi4wMDEpe2lmKCEo''@;'; put 'put ''QTwoZj0wPT1mP0E6Zil8YjwocD0wPT13P2I6dyl8fGI+cCZBPmYmMCE9KDB8dWVbbSs4MD4+MF0pKSl7Yj1mLHc9cCxBPTE7YnJlYWt9X1tCZT4+M109QT0oKE09QS9mPGIvcCk/QTpiKS8oTT9mOnApLGI9Zix3PXB9ZWxzZSBiPWYsQT0xfXdoaWxlKDApO2lmKF9bSGU+PjNdPXA9LjUqKFIr''@;'; put 'put ''RCksX1tqZT4+M109Zj0uNSooSytHKSxhW2wrMzYwPj4yXT1hW2srMjg4Pj4yXSxfW09lPj4zXT1iKj1BLF9bTGU+PjNdPXcqPUEsbT0wfExpKGMsMTAwNzUyKSl7az0wfFIwKDErKDB8em8obSkpfDApLE09MHxSMCgxKygwfHpvKG0pKXwwKSxhW3BlPj4yXT1PZSxhW3BlKzQ+PjJdPUxlLGFb''@;'; put 'put ''cGUrOD4+Ml09QmUsYVtwZSsxMj4+Ml09aztkb3tpZig0PT0oMHwkYShtLDEwMDc2MSxwZSkpKTB8KG09MHxNcigwfGFbYys2MD4+Ml0saywwKSkmJihfW0hlPj4zXT0rX1sxNisoYmU9MHxhW20rMTY+PjJdKT4+M10sX1tqZT4+M109K19bYmUrMjQ+PjNdKTtlbHNle2lmKGFbYmU+PjJdPU9l''@;'; put 'put ''LGFbYmUrND4+Ml09TGUsYVtiZSs4Pj4yXT1CZSxhW2JlKzEyPj4yXT1rLGFbYmUrMTY+PjJdPU0sNCE9KDB8JGEobSwxMDA3ODEsYmUpKSl7YVttZT4+Ml09T2UsYVttZSs0Pj4yXT1MZSxhW21lKzg+PjJdPUJlLGFbbWUrMTI+PjJdPUhlLGFbbWUrMTY+PjJdPWplLCRhKG0sMTAwODAxLG1l''@;'; put 'put ''KTticmVha30wfChtPTB8TXIoMHxhW2MrNjA+PjJdLGssMCkpJiYoX1tIZT4+M109K19bMTYrKGJlPTB8YVttKzE2Pj4yXSk+PjNdLF9bamU+PjNdPStfW2JlKzI0Pj4zXSl9fXdoaWxlKDApO0h0KGspLEh0KE0pLGI9K19bT2U+PjNdLHc9K19bTGU+PjNdLEE9K19bQmU+PjNdLHA9K19bSGU+''@;'; put 'put ''PjNdLGY9K19bamU+PjNdfV9bbCszNjg+PjNdPWIsX1tsKzM3Nj4+M109dyxfW2wrMzUyPj4zXT1BLF9bbCszMzY+PjNdPXAsX1tsKzM0ND4+M109ZixvZT1ldH1mdW5jdGlvbiB6VShsLGMpe2N8PTA7dmFyIEcscGUsamUsZXQscnQsR2UsbHQsTXQsa3QsYXQsdXQseW4sRm4sbHIsTnIsZj0w''@;'; put 'put ''LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEs9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxFdD0wLFp0PTAsd3Q9MCxybj0wO3luPW9lLG9lPW9lKzIyNHwwLHV0PXluKzIwMHwwLGplPXluKzE2OHwwLE10PXluKzE0NHwwLFp0PXluKzEyMHwwLGt0PXluKzk2''@;'; put 'put ''fDAsZj15bisxODR8MCxPZT15bisxNzZ8MCxMZT15bisxNjB8MCxIZT15bisxMzZ8MCxCZT15bisxMTJ8MCxldD15bis4MHwwLHJ0PXluKzQ4fDAsR2U9eW4rMzJ8MCxsdD15bisxNnwwLHd0PXluKzh8MCxybj15bixiZT0wfGFbKGx8PTApPj4yXSxhWyhhdD15bis2NHwwKT4+Ml09MCxhW2F0''@;'; put 'put ''KzQ+PjJdPTAsYVthdCs4Pj4yXT0wLGFbYXQrMTI+PjJdPTAsYVtadD4+Ml09YVsoRXQ9bCszNjh8MCk+PjJdLGFbWnQrND4+Ml09YVtFdCs0Pj4yXSxhW1p0Kzg+PjJdPWFbRXQrOD4+Ml0sYVtadCsxMj4+Ml09YVtFdCsxMj4+Ml0sMHxhWyhFdD1sKzM2MHwwKT4+Ml0mJihhW3V0Pj4yXT1h''@;'; put 'put ''W1p0Pj4yXSxhW3V0KzQ+PjJdPWFbWnQrND4+Ml0sYVt1dCs4Pj4yXT1hW1p0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbWnQrMTI+PjJdLHVrKGYsdXQpLGFbWnQ+PjJdPWFbZj4+Ml0sYVtadCs0Pj4yXT1hW2YrND4+Ml0sYVtadCs4Pj4yXT1hW2YrOD4+Ml0sYVtadCsxMj4+Ml09YVtmKzEyPj4y''@;'; put 'put ''XSksYVtrdD4+Ml09YVsobWU9bCs0MTZ8MCk+PjJdLGFba3QrND4+Ml09YVttZSs0Pj4yXSxhW2t0Kzg+PjJdPWFbbWUrOD4+Ml0sYVtrdCsxMj4+Ml09YVttZSsxMj4+Ml0sMCE9KDB8dWVbYmUrMjk0Pj4wXSkmJjAhPSgzMiZhW2wrMTUyPj4yXXwwKT8oX1tNdD4+M109QT0rX1tiZSsyMzI+''@;'; put 'put ''PjNdLTIqK19ba3Q+PjNdLF9bKFI9TXQrOHwwKT4+M109Yj0rX1tiZSsyNDA+PjNdLTIqK19ba3QrOD4+M10sQTwxZS00PyhhW2wrMTY0Pj4yXT0xLGY9MSk6KGFbKHA9bCsxNjR8MCk+PjJdPWY9fn4oKEQ9K19bWnQ+PjNdKS9BKSxELUEqKygwfGYpPjFlLTQmJihhW3A+PjJdPWY9ZisxfDAp''@;'; put 'put ''KSxiPDFlLTQ/KGFbbCsxNjg+PjJdPTEscD0xLG09K19bWnQrOD4+M10pOihhWyh3PWwrMTY4fDApPj4yXT1wPX5+KChtPStfW1p0Kzg+PjNdKS9iKSxtLWIqKygwfHApPjFlLTQmJihhW3c+PjJdPXA9cCsxfDApKSxhW2wrMjA0Pj4yXT0wfHZyKHAsZiksX1tadD4+M109RD0rX1soK19bWnQ+''@;'; put 'put ''PjNdPEE/WnQ6TXQpPj4zXSxmPVIscD1adCxrPStfWyhtPGI/WnQ6TXQpKzg+PjNdLG09RCx3PTIxKTooMHxhW2wrNjg+PjJdPyhfW010Pj4zXT1BPShBPStfWzI0KyhmPTB8YVtsKzg0Pj4yXSk+PjNdLTIqK19ba3Q+PjNdKTwwPzA6QSxEPStfW2YrMzI+PjNdLTIqK19ba3QrOD4+M10sX1so''@;'; put 'put ''Zj1NdCs4fDApPj4zXT1ELEQ8MD8ocD1NdCx3PTE3KTpmPU10KTooX1tNdCs4Pj4zXT0wLHA9TXQsZj1NdCx3PTE3KSwxNz09KDB8dykmJihfW2Y+PjNdPTAsZj1wLEE9K19bcD4+M10pLGFbbCsyMDQ+PjJdPTEsYVtsKzE2OD4+Ml09MSxhW2wrMTY0Pj4yXT0xLEE8KG09K19bWnQ+PjNdKSYm''@;'; put 'put ''KF9bZj4+M109bSxBPW0pLChiPStfWyhmPU10Kzh8MCk+PjNdKTwoaz0rX1tadCs4Pj4zXSk/KHA9TXQsdz0yMSk6KEs9ZixrPWIpKSwyMT09KDB8dykmJihfW3ArOD4+M109ayxLPWYsaz0rX1tmPj4zXSksYVtsKzQ0OD4+Ml09fn4oKGI9LjAxMzg4ODg4ODg4ODg4ODg4OCorX1socGU9bCs0''@;'; put 'put ''MzJ8MCk+PjNdKigyKihNPStfW2t0Pj4zXSkrQSkpKyhiPj0wPy41Oi0uNSkpLGFbbCs0NTI+PjJdPX5+KChEPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bKG1lPWwrNDQwfDApPj4zXSooMiooYj0rX1soRz1rdCs4fDApPj4zXSkraykpKyhEPj0wPy41Oi0uNSkpLHc9bCsxODh8MCxSPWwrMTgw''@;'; put 'put ''fDAscD1iZSsxOTZ8MCxhWyhmPWwrMTcyfDApPj4yXT0wLGFbZis0Pj4yXT0wLGFbZis4Pj4yXT0wLGFbZisxMj4+Ml09MCxhW2YrMTY+PjJdPTAsYVtmKzIwPj4yXT0wLEg1KE9lLGwsMHx1ZVthW3A+PjJdPj4wXSksT2U9MHxhWyhiZT1PZSkrND4+Ml0sYVsoZj1SKT4+Ml09YVtiZT4+Ml0s''@;'; put 'put ''YVtmKzQ+PjJdPU9lLEg1KExlLGwsMHx1ZVsxKygwfGFbcD4+Ml0pPj4wXSksTGU9MHxhWyhmPUxlKT4+Ml0sZj0wfGFbZis0Pj4yXSxhWyhPZT13KT4+Ml09TGUsYVtPZSs0Pj4yXT1mLDE9PSgwfCgoMHwoTGU9KDB8YVtSPj4yXSkrTGV8MCkpPi0xP0xlOjAtTGV8MCkpJiYxPT0oMHwoKDB8''@;'; put 'put ''KExlPSgwfGFbbCsxODQ+PjJdKStmfDApKT4tMT9MZTowLUxlfDApKXx8KEg1KEhlLGwsNjYpLEhlPTB8YVsoT2U9SGUpKzQ+PjJdLGFbKExlPVIpPj4yXT1hW09lPj4yXSxhW0xlKzQ+PjJdPUhlLEg1KEJlLGwsNzYpLEJlPTB8YVsoTGU9QmUpKzQ+PjJdLGFbKEhlPXcpPj4yXT1hW0xlPj4y''@;'; put 'put ''XSxhW0hlKzQ+PjJdPUJlLGFbamU+PjJdPWFbcD4+Ml0sWHIoMCwxMDA3MzIsamUpKSwwfHVlWzgyKygwfGFbOCsoMHxhW2MrMTY+PjJdKT4+Ml0pPj4wXT8oQT5tP19bYXQ+PjNdPWs9LjUqKEEtbSk6az0wLChBPStfW0s+PjNdKT4oRD0rX1tadCs4Pj4zXSk/X1thdCs4Pj4zXT1BPS41KihB''@;'; put 'put ''LUQpOkE9MCk6KEE9MCxrPTApLDB8YVtFdD4+Ml0/KGFbdXQ+PjJdPWFbWnQ+PjJdLGFbdXQrND4+Ml09YVtadCs0Pj4yXSxhW3V0Kzg+PjJdPWFbWnQrOD4+Ml0sYVt1dCsxMj4+Ml09YVtadCsxMj4+Ml0sdWsoZXQsdXQpLGFbWnQ+PjJdPWFbZXQ+PjJdLGFbWnQrND4+Ml09YVtldCs0Pj4y''@;'; put 'put ''XSxhW1p0Kzg+PjJdPWFbZXQrOD4+Ml0sYVtadCsxMj4+Ml09YVtldCsxMj4+Ml0sYVt1dD4+Ml09YVtNdD4+Ml0sYVt1dCs0Pj4yXT1hW010KzQ+PjJdLGFbdXQrOD4+Ml09YVtNdCs4Pj4yXSxhW3V0KzEyPj4yXT1hW010KzEyPj4yXSx1ayhydCx1dCksYVtNdD4+Ml09YVtydD4+Ml0sYVtN''@;'; put 'put ''dCs0Pj4yXT1hW3J0KzQ+PjJdLGFbTXQrOD4+Ml09YVtydCs4Pj4yXSxhW010KzEyPj4yXT1hW3J0KzEyPj4yXSxhW3V0Pj4yXT1hW2t0Pj4yXSxhW3V0KzQ+PjJdPWFba3QrND4+Ml0sYVt1dCs4Pj4yXT1hW2t0Kzg+PjJdLGFbdXQrMTI+PjJdPWFba3QrMTI+PjJdLHVrKEdlLHV0KSxhW2t0''@;'; put 'put ''Pj4yXT1hW0dlPj4yXSxhW2t0KzQ+PjJdPWFbR2UrND4+Ml0sYVtrdCs4Pj4yXT1hW0dlKzg+PjJdLGFba3QrMTI+PjJdPWFbR2UrMTI+PjJdLGFbdXQ+PjJdPWFbYXQ+PjJdLGFbdXQrND4+Ml09YVthdCs0Pj4yXSxhW3V0Kzg+PjJdPWFbYXQrOD4+Ml0sYVt1dCsxMj4+Ml09YVthdCsxMj4+''@;'; put 'put ''Ml0sdWsobHQsdXQpLGFbYXQ+PjJdPWFbbHQ+PjJdLGFbYXQrND4+Ml09YVtsdCs0Pj4yXSxhW2F0Kzg+PjJdPWFbbHQrOD4+Ml0sYVthdCsxMj4+Ml09YVtsdCsxMj4+Ml0sTT0rX1trdD4+M10saz0rX1thdD4+M10sYj0rX1tHPj4zXSxBPStfW2F0Kzg+PjNdLG09K19bWnQ+PjNdLHc9MD09''@;'; put 'put ''KDB8YVtFdD4+Ml0pKTp3PTEsX1tsKzM4ND4+M109RD1rK00sX1tsKzM5Mj4+M109bHI9QStiLF9bbCs0MDA+PjNdPUZuPWsrTSttLF9bbCs0MDg+PjNdPU09QStiKyhOcj0rX1tadCs4Pj4zXSksX1tsKzMyMD4+M109bS8oaz0rX1tsKzM1Mj4+M10pLF9bbCszMjg+PjNdPU5yL2ssYVsocD1s''@;'; put 'put ''KzQ1NnwwKT4+Ml09fn4oKEQ9LjAxMzg4ODg4ODg4ODg4ODg4OCpEKihrPStfW3BlPj4zXSkpKyhEPj0wPy41Oi0uNSkpLGFbbCs0NjA+PjJdPX5+KChiPS4wMTM4ODg4ODg4ODg4ODg4ODgqbHIqKEQ9K19bbWU+PjNdKSkrKGI+PTA/LjU6LS41KSksYVsoZj1sKzQ2NHwwKT4+Ml09fn4oKGsq''@;'; put 'put ''PS4wMTM4ODg4ODg4ODg4ODg4ODgqRm4pKyhrPj0wPy41Oi0uNSkpLGFbbCs0Njg+PjJdPX5+KChEKj0uMDEzODg4ODg4ODg4ODg4ODg4Kk0pKyhEPj0wPy41Oi0uNSkpLHd8fChhW3V0Pj4yXT1hW3A+PjJdLGFbdXQrND4+Ml09YVtwKzQ+PjJdLEczKHd0LHV0KSx3dD0wfGFbKFp0PXd0KSs0''@;'; put 'put ''Pj4yXSxhWyhsPXApPj4yXT1hW1p0Pj4yXSxhW2wrND4+Ml09d3QsYVt1dD4+Ml09YVtmPj4yXSxhW3V0KzQ+PjJdPWFbZis0Pj4yXSxHMyhybix1dCksd3Q9MHxhWyhsPXJuKSs0Pj4yXSxhWyhybj1mKT4+Ml09YVtsPj4yXSxhW3JuKzQ+PjJdPXd0KSxvZT15bn1mdW5jdGlvbiB1ayhsLGMp''@;'; put 'put ''e3ZhciBmO2Y9K19bKGN8PTApPj4zXSxfWyhsfD0wKT4+M109K19bYys4Pj4zXSxfW2wrOD4+M109Zn1mdW5jdGlvbiBINShsLGMsZil7c3dpdGNoKGx8PTAsY3w9MCwoZj0oKGZ8PTApPDwyND4+MjQpLTY2fDApPj4+MXxmPDwzMXwwKXtjYXNlIDk6YVtjKzE3Nj4+Ml09KDB8YVtjKzE2OD4+''@;'; put 'put ''Ml0pLTEsYz0wLGY9LTE7YnJlYWs7Y2FzZSAwOmM9MCxmPTE7YnJlYWs7Y2FzZSA1OmM9MSxmPTA7YnJlYWs7Y2FzZSA4OmFbYysxNzI+PjJdPSgwfGFbYysxNjQ+PjJdKS0xLGM9LTEsZj0wO2JyZWFrO2RlZmF1bHQ6Yz0wLGY9MH1hW2w+PjJdPWMsYVtsKzQ+PjJdPWZ9ZnVuY3Rpb24gZ04o''@;'; put 'put ''bCxjKXt2YXIgZixwLG0sQTtmb3IobHw9MCxfWzQ4KyhmPTB8YVsxNisoY3w9MCk+PjJdKT4+M109KEE9K19bZisxNj4+M10pLStfW2YrODg+PjNdLF9bZis1Nj4+M109KHA9K19bZisyND4+M10pLShtPS41KitfW2YrODA+PjNdKSxfW2YrNjQ+PjNdPStfW2YrOTY+PjNdK0EsX1tmKzcyPj4z''@;'; put 'put ''XT1tK3AsYz0wfHkwKGwsYyk7YzspYUQoYyksYz0wfGswKGwsYyl9ZnVuY3Rpb24gYUQobCl7MHwobD0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkmJmZ1bmN0aW9uIEdVKGwpe3ZhciB3LGIsayxNLEQsUixHLEsscGUsbWUsYmUsT2UsTGUsQmUsSGUsamUsZXQscnQsbHQsYz0wLGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MCxHZT0wO2x0PW9lLG9lPW9lKzI0MHwwLExlPWx0KzE5MnwwLE9lPWx0KzE3NnwwLEJlPWx0KzY0fDAsSGU9bHQrMzJ8MCxqZT1sdCxldD1sdCsxNDR8MCxydD1sdCsxMTJ8MCwoMHxhWyhHZT00KyhsfD0wKXwwKT4+Ml0pPD0wJiZCcigxMDExNDAsOTk5MDYsMzk5NCwx''@;'; put 'put ''MDExNTQpLHA9Yz0wfGFbbD4+Ml0sbT0oZj1CZSkrNDh8MDtkb3thW2Y+PjJdPWFbcD4+Ml0sZj1mKzR8MCxwPXArNHwwfXdoaWxlKCgwfGYpPCgwfG0pKTtwPWMsbT0oZj1MZSkrNDh8MDtkb3thW2Y+PjJdPWFbcD4+Ml0sZj1mKzR8MCxwPXArNHwwfXdoaWxlKCgwfGYpPCgwfG0pKTtmb3Io''@;'; put 'put ''bEQoSGUsTGUpLHc9SGUrOHwwLGI9amUrOHwwLGs9SGUrMTZ8MCxNPWplKzE2fDAsRD1IZSsyNHwwLFI9amUrMjR8MCxHPUJlKzh8MCxLPUJlKzEyfDAscGU9QmUrMzJ8MCxtZT1CZSs0fDAsYmU9QmUrMTZ8MCxBPTA7ISgoMHxBKT49KDB8YVtHZT4+Ml0pKTspe2lmKCgwfEEpPjApe3A9Yz0o''@;'; put 'put ''MHxhW2w+PjJdKSsoNDgqQXwwKXwwLG09KGY9QmUpKzQ4fDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7cD1jLG09KGY9TGUpKzQ4fDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7bEQo''@;'; put 'put ''amUsTGUpLF9bSGU+PjNdPStfWygrX1tIZT4+M108K19bamU+PjNdP0hlOmplKT4+M10sX1t3Pj4zXT0rX1soK19bdz4+M108K19bYj4+M10/SGU6amUpKzg+PjNdLF9baz4+M109K19bKCtfW2s+PjNdPitfW00+PjNdP0hlOmplKSsxNj4+M10sX1tEPj4zXT0rX1soK19bRD4+M10+K19bUj4+''@;'; put 'put ''M10/SGU6amUpKzI0Pj4zXX0wfChjPTB8YVtHPj4yXSkmJihtPTB8YVtCZT4+Ml0sYVtPZT4+Ml09YVtiZT4+Ml0sYVtPZSs0Pj4yXT1hW2JlKzQ+PjJdLGFbT2UrOD4+Ml09YVtiZSs4Pj4yXSxhW09lKzEyPj4yXT1hW2JlKzEyPj4yXSxhW0xlPj4yXT1hW20+PjJdLGFbTGUrND4+Ml09YVtt''@;'; put 'put ''KzQ+PjJdLGFbTGUrOD4+Ml09YVttKzg+PjJdLGFbTGUrMTI+PjJdPWFbbSsxMj4+Ml0sVnMoZXQsT2UsTGUsMSksYVtqZT4+Ml09YVtldD4+Ml0sYVtqZSs0Pj4yXT1hW2V0KzQ+PjJdLGFbamUrOD4+Ml09YVtldCs4Pj4yXSxhW2plKzEyPj4yXT1hW2V0KzEyPj4yXSxhW2plKzE2Pj4yXT1h''@;'; put 'put ''W2V0KzE2Pj4yXSxhW2plKzIwPj4yXT1hW2V0KzIwPj4yXSxhW2plKzI0Pj4yXT1hW2V0KzI0Pj4yXSxhW2plKzI4Pj4yXT1hW2V0KzI4Pj4yXSxfW0hlPj4zXT0rX1soK19bSGU+PjNdPCtfW2plPj4zXT9IZTpqZSk+PjNdLF9bdz4+M109K19bKCtfW3c+PjNdPCtfW2I+PjNdP0hlOmplKSs4''@;'; put 'put ''Pj4zXSxfW2s+PjNdPStfWygrX1trPj4zXT4rX1tNPj4zXT9IZTpqZSkrMTY+PjNdLF9bRD4+M109K19bKCtfW0Q+PjNdPitfW1I+PjNdP0hlOmplKSsyND4+M10pLDB8KGM9MHxhW0s+PjJdKSYmKG09KDB8YVtCZT4+Ml0pKygoMHxhW21lPj4yXSktMTw8NCl8MCxhW09lPj4yXT1hW3BlPj4y''@;'; put 'put ''XSxhW09lKzQ+PjJdPWFbcGUrND4+Ml0sYVtPZSs4Pj4yXT1hW3BlKzg+PjJdLGFbT2UrMTI+PjJdPWFbcGUrMTI+PjJdLGFbTGU+PjJdPWFbbT4+Ml0sYVtMZSs0Pj4yXT1hW20rND4+Ml0sYVtMZSs4Pj4yXT1hW20rOD4+Ml0sYVtMZSsxMj4+Ml09YVttKzEyPj4yXSxWcyhydCxPZSxMZSwx''@;'; put 'put ''KSxhW2plPj4yXT1hW3J0Pj4yXSxhW2plKzQ+PjJdPWFbcnQrND4+Ml0sYVtqZSs4Pj4yXT1hW3J0Kzg+PjJdLGFbamUrMTI+PjJdPWFbcnQrMTI+PjJdLGFbamUrMTY+PjJdPWFbcnQrMTY+PjJdLGFbamUrMjA+PjJdPWFbcnQrMjA+PjJdLGFbamUrMjQ+PjJdPWFbcnQrMjQ+PjJdLGFbamUr''@;'; put 'put ''Mjg+PjJdPWFbcnQrMjg+PjJdLF9bSGU+PjNdPStfWygrX1tIZT4+M108K19bamU+PjNdP0hlOmplKT4+M10sX1t3Pj4zXT0rX1soK19bdz4+M108K19bYj4+M10/SGU6amUpKzg+PjNdLF9baz4+M109K19bKCtfW2s+PjNdPitfW00+PjNdP0hlOmplKSsxNj4+M10sX1tEPj4zXT0rX1soK19b''@;'; put 'put ''RD4+M10+K19bUj4+M10/SGU6amUpKzI0Pj4zXSksQT1BKzF8MH1hWyhHZT1sKzh8MCk+PjJdPWFbSGU+PjJdLGFbR2UrND4+Ml09YVtIZSs0Pj4yXSxhW0dlKzg+PjJdPWFbSGUrOD4+Ml0sYVtHZSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtHZSsxNj4+Ml09YVtIZSsxNj4+Ml0sYVtHZSsyMD4+''@;'; put 'put ''Ml09YVtIZSsyMD4+Ml0sYVtHZSsyND4+Ml09YVtIZSsyND4+Ml0sYVtHZSsyOD4+Ml09YVtIZSsyOD4+Ml0sb2U9bHR9KGwpfWZ1bmN0aW9uIGxEKGwsYyl7bHw9MDt2YXIgZixwLG0sQSx3LGIsayxNLEQsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTA7Zm9yKEQ9b2Usb2U9b2UrNDh8MCx3''@;'; put 'put ''PUQrMzJ8MCxiPUQsKDB8KGs9MHxhWzQrKGN8PTApPj4yXSkpPD0wJiZCcigxMDExNzAsOTk5MDYsMzk2OCwxMDExODIpLDEhPSgwfChrPj4+MCklMykmJkJyKDEwMTE5Miw5OTkwNiwzOTY5LDEwMTE4MiksYVsoTT1iKzE2fDApPj4yXT1hWyhmPTB8YVtjPj4yXSk+PjJdLGFbTSs0Pj4yXT1h''@;'; put 'put ''W2YrND4+Ml0sYVtNKzg+PjJdPWFbZis4Pj4yXSxhW00rMTI+PjJdPWFbZisxMj4+Ml0sYVtiPj4yXT1hW2Y+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0sYVtiKzg+PjJdPWFbZis4Pj4yXSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0scD13Kzh8MCxtPWIrOHwwLEE9YisyNHwwLGM9MTshKCgwfGMp''@;'; put 'put ''Pj0oMHxrKSk7KUc9K19bZisoYzw8NCkrOD4+M10sUj0rX1tmKygoYmU9YysxfDApPDw0KSs4Pj4zXSxfW3c+PjNdPXBlPS41KigrX1tmKyhiZTw8NCk+PjNdKyArX1tmKyhjPDw0KT4+M10pLF9bcD4+M109Rz0uNSooUitHKSxfW2I+PjNdPVI9K19bKCtfW2I+PjNdPHBlP2I6dyk+PjNdLF9b''@;'; put 'put ''bT4+M109bWU9K19bKCtfW20+PjNdPEc/Yjp3KSs4Pj4zXSxfW00+PjNdPXBlPStfWygrX1tNPj4zXT5wZT9NOncpPj4zXSxfW0E+PjNdPUc9K19bKCtfW0E+PjNdPkc/TTp3KSs4Pj4zXSxhW3c+PjJdPWFbKGJlPWYrKGMrMjw8NCl8MCk+PjJdLGFbdys0Pj4yXT1hW2JlKzQ+PjJdLGFbdys4''@;'; put 'put ''Pj4yXT1hW2JlKzg+PjJdLGFbdysxMj4+Ml09YVtiZSsxMj4+Ml0sX1tiPj4zXT0rX1soUjwoSz0rX1t3Pj4zXSk/Yjp3KT4+M10sX1ttPj4zXT0rX1sobWU8KFI9K19bcD4+M10pP2I6dykrOD4+M10sX1tNPj4zXT0rX1socGU+Sz9NOncpPj4zXSxfW0E+PjNdPStfWyhHPlI/TTp3KSs4Pj4z''@;'; put 'put ''XSxjPWMrM3wwO2FbbD4+Ml09YVtiPj4yXSxhW2wrND4+Ml09YVtiKzQ+PjJdLGFbbCs4Pj4yXT1hW2IrOD4+Ml0sYVtsKzEyPj4yXT1hW2IrMTI+PjJdLGFbbCsxNj4+Ml09YVtiKzE2Pj4yXSxhW2wrMjA+PjJdPWFbYisyMD4+Ml0sYVtsKzI0Pj4yXT1hW2IrMjQ+PjJdLGFbbCsyOD4+Ml09''@;'; put 'put ''YVtiKzI4Pj4yXSxvZT1EfWZ1bmN0aW9uIG1OKGwsYyxmKXt2YXIgTSxiLHA9MCxtPTAsQT0wLHc9MCxrPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wO2I9IShNPSEoKG1lPStfWyhsfD0wKT4+M10pPj0oYmU9K19bKGZ8PTApPj4zXSkpKSYmbWU8PStfW2YrMTY+PjNdJiYobT0r''@;'; put 'put ''X1tsKzg+PjNdKT49K19bZis4Pj4zXT9tPD0rX1tmKzI0Pj4zXTowLChtPStfWyhjfD0wKT4+M10pPj1iZSYmbTw9K19bZisxNj4+M10mJihBPStfW2MrOD4+M10pPj0rX1tmKzg+PjNdP2JeKHA9QTw9K19bZisyND4+M10pP3A9MDpiJnA/cD0xOkQ9MTE6Yj9wPTA6RD0xMTtlOmRve2lmKDEx''@;'; put 'put ''PT0oMHxEKSl7cGU9K19bbCs4Pj4zXTtkb3tpZihtZT09bSl7aWYoIShNfHBlPj0oYmU9K19bZis4Pj4zXSleK19bYys4Pj4zXT49YmVeMSkmJm1lPD0rX1tmKzE2Pj4zXSl7cD0wO2JyZWFrIGV9fWVsc2V7aWYocGU9PShrPStfW2MrOD4+M10pKXtpZighKG1lPj1iZV5tPj1iZSYmcGU+PStf''@;'; put 'put ''W2YrOD4+M10pKWJyZWFrO2lmKHBlPD0rX1tmKzI0Pj4zXSl7cD0wO2JyZWFrIGV9YnJlYWt9aWYoSz0oay1wZSkvKG0tbWUpLCEoIShiZT49KHc9KEQ9bWU8bSk/bWU6bSkpfCEoYmU8PShtPUQ/bTptZSkpfCEoKEE9KGJlLW1lKSpLK3BlKT49KFI9K19bZis4Pj4zXSkpKSYmQTw9K19bZisy''@;'; put 'put ''ND4+M10pe3A9MDticmVhayBlfWlmKChBPSgoRz0rX1tmKzE2Pj4zXSktYmUpKksrQSk+PVImJiEoIShHPD1tKXwoRz49dz8hKEE8PStfW2YrMjQ+PjNdKToxKSkpe3A9MDticmVhayBlfWlmKHc9KEQ9cGU8ayk/cGU6ayxBPUQ/azpwZSwobT0oUi1wZSkvSyttZSk+PWJlJiYhKCEoUjw9QSl8''@;'; put 'put ''IShSPj13KXwhKG08PUcpKSl7cD0wO2JyZWFrIGV9aWYoKG1lPSgocGU9K19bZisyND4+M10pLVIpL0srbSk+PWJlJiYhKCEocGU8PUEpfCEocGU+PXcpfCEobWU8PUcpKSl7cD0wO2JyZWFrIGV9fX13aGlsZSgwKTtwPS0xfX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIGNrKGwpe3Zh''@;'; put 'put ''ciBjLGY7X1szMisobHw9MCk+PjNdPWY9K19bKGM9bCsxNnwwKT4+M10sX1tsKzQ4Pj4zXT1mLF9bbCs0MD4+M109K19bbCsyND4+M10sX1tsKzU2Pj4zXT0rX1tsKzg+PjNdLF9bYz4+M109K19bbD4+M119ZnVuY3Rpb24gdk4obCxjLGYpe3ZhciBwLG0sQSx3O2x8PTAsY3w9MCwoMHxhWzQ3''@;'; put 'put ''MTMxXSkhPSgwfChmfD0wKSkmJih4TCguMTU5MTU0OTQzMDkxODk1MzUqKygwfGYpLDE4NjMyOCwxODYzMzYpLGFbNDcxMzFdPWYpLF9bbD4+M109KHA9K19bMjMyOTJdKSooQT0rX1tjPj4zXSktKHc9K19bMjMyOTFdKSoobT0rX1tjKzg+PjNdKSxfW2wrOD4+M109dypBK20qcH1mdW5jdGlv''@;'; put 'put ''biBzRChsLGMsZil7bHw9MCxmfD0wO3ZhciBtLEEsdyxrLHA9MCxiPTA7az1vZSxvZT1vZSsxNnwwLG09ayxwPStfWyhjfD0wKT4+M10sQT0rX1sodz1jKzh8MCk+PjNdO2U6ZG97c3dpdGNoKDB8Zil7Y2FzZSAwOmI9MTE7YnJlYWs7Y2FzZSA5MDpfW2M+PjNdPUEscD0tcCxiPTEwO2JyZWFr''@;'; put 'put ''O2Nhc2UgMTgwOnA9LUEsYj0xMDticmVhaztjYXNlIDI3MDpfW2M+PjNdPUEsYj0xMDticmVhaztkZWZhdWx0OmlmKCgwfGYpPDApe2FbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLE41KGwsbSwwLWZ8''@;'; put 'put ''MCk7YnJlYWsgZX1pZigoMHxmKT4zNjApe2FbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLHNEKGwsbSwoZj4+PjApJTM2MHwwKTticmVhayBlfWFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+''@;'; put 'put ''PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLHZOKGwsbSxmKTticmVhayBlfX13aGlsZSgwKTsxMD09KDB8YikmJihfW3c+PjNdPXAsYj0xMSksMTE9PSgwfGIpJiYoYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4''@;'; put 'put ''Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml0pLG9lPWt9ZnVuY3Rpb24gTjUobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxBLHcsayxwPTAsYj0wO2s9b2Usb2U9b2UrMTZ8MCxtPWsscD0rX1soY3w9MCk+PjNdLEE9K19bKHc9Yys4fDApPj4zXTtlOmRve3N3aXRjaCgwfGYpe2Nhc2UgMDpiPTEx''@;'; put 'put ''O2JyZWFrO2Nhc2UgOTA6X1tjPj4zXT0tQSxiPTEwO2JyZWFrO2Nhc2UgMTgwOnA9LUEsYj0xMDticmVhaztjYXNlIDI3MDpfW2M+PjNdPUEsYj0xMDticmVhaztkZWZhdWx0OmlmKCgwfGYpPDApe2FbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+''@;'; put 'put ''Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLHNEKGwsbSwwLWZ8MCk7YnJlYWsgZX1pZigoMHxmKT4zNjApe2FbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLE41KGwsbSwoZj4+PjApJTM2MHwwKTticmVh''@;'; put 'put ''ayBlfWFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLHZOKGwsbSwzNjAtZnwwKTticmVhayBlfX13aGlsZSgwKTsxMD09KDB8YikmJihfW3c+PjNdPXAsYj0xMSksMTE9PSgwfGIpJiYoYVtsPj4yXT1h''@;'; put 'put ''W2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml0pLG9lPWt9ZnVuY3Rpb24gcXZlKGwsYyxmKXt2YXIgbSxBLHcscD0wO0E9KHA9K19bOCsoZnw9MCk+PjNdKSsgK19bKGN8PTApPj4zXSxtPSh3PStfW2Y+PjNdKSsgK19b''@;'; put 'put ''YysyND4+M10scCs9K19bYysxNj4+M10sX1sobHw9MCk+PjNdPXcrICtfW2MrOD4+M10sX1tsKzg+PjNdPUEsX1tsKzE2Pj4zXT1tLF9bbCsyND4+M109cH1mdW5jdGlvbiBab2UobCxjLGYpe3ZhciBwLG0sdyxBPTA7cmV0dXJuIEE9KCtfWzgrKGZ8PTApPj4zXS0odz0rX1s4KyhsfD0wKT4+''@;'; put 'put ''M10pKSoocD0rX1soY3w9MCk+PjNdLShBPStfW2w+PjNdKSktKCtfW2Y+PjNdLUEpKihtPStfW2MrOD4+M10tdyksKygoQSo9QSk8MWUtMTA/MDpBLyhtKm0rcCpwKSl9ZnVuY3Rpb24gem9lKGwsYyxmKXt2YXIgcCxtLEE7Znw9MCxBPW9lLG9lPW9lKzE2fDAsbT1BKzh8MCxwPUEsMHwobD0w''@;'; put 'put ''fExpKGx8PTAsY3w9MCkpJiYoYVttPj4yXT1wLCgwfCRhKGwsMTAxMjA5LG0pKT4wKSYmKF9bZj4+M109K19bcD4+M10pLG9lPUF9ZnVuY3Rpb24gR29lKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxiLE0sRCxwPTAsbT0wLEE9MCxrPTA7RD1vZSxvZT1vZSs0OHwwLGs9RCszMnwwLEE9''@;'; put 'put ''RCsxNnwwLGI9RCs4fDAsdz1ELHVlWyhNPUQrNDB8MCk+PjBdPTAsbD0wfExpKGwsYyk7ZG97aWYobCl7aWYoYVtBPj4yXT1iLGFbQSs0Pj4yXT13LGFbQSs4Pj4yXT1NLChBPSgwfCRhKGwsMTAxNzQ5LEEpKT4xKSYobT0rX1tiPj4zXSk+MCYocD0rX1t3Pj4zXSk+MCl7X1tmPj4zXT0rKDB8''@;'; put 'put ''fn4oKG0qPTcyKSsobT49MD8uNTotLjUpKSksX1tmKzg+PjNdPSsoMHx+figobT03MipwKSsobT49MD8uNTotLjUpKSksbD0zMz09KDB8dWVbTT4+MF0pO2JyZWFrfXVlW00+PjBdPTAsYVtrPj4yXT1iLGFbays0Pj4yXT1NLChrPSgwfCRhKGwsMTAxNzU5LGspKT4wKSYocD0rX1tiPj4zXSk+''@;'; put 'put ''MD8oX1tmPj4zXT1tPSsoMHx+figobT03MipwKSsobT49MD8uNTotLjUpKSksX1tmKzg+PjNdPW0sbD0zMz09KDB8dWVbTT4+MF0pKTpsPTB9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIG9lPUQsMSZsfDB9ZnVuY3Rpb24gdUQobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7Yz0wfExpKGx8''@;'; put 'put ''PTAsMTA4MjI0KTtkb3tpZigwfGMmJjB8dWVbYz4+MF0pe3VlWyhmPTExMysoMHxhWzE2KygwfGFbbCs2MD4+Ml0pPj4yXSl8MCk+PjBdPTh8dWVbZj4+MF0sYz0wfGFwKGwsYywoZj0wIT0oMHxNbyhjKSkpPzI6MCxtPStjbChsLDB8c2kobCwwLDEwMTQyOCwwKSwxNCwxKSxBPTB8T2EobCww''@;'; put 'put ''fHNpKGwsMCwxMDE0MzcsMCksMTA3OTk0KSwwfE9hKGwsMHxzaShsLDAsMTAxNDQ2LDApLDEzNzMxNCkpLGFbMTIrKDB8YVsoQT1sKzE2fDApPj4yXSk+PjJdPWMsZj0wIT0oMHwoYz0wfExpKGwsMTA1NjI4KSkpO2Rve2lmKCgwfGhpKGwpKT09KDB8bCkpe2lmKGYmJjExNj09KDB8dWVbYz4+''@;'; put 'put ''MF0pKXtjPTE7YnJlYWt9Yz0wfWVsc2V7aWYoZiYmOTg9PSgwfHVlW2M+PjBdKSl7Yz0wO2JyZWFrfWM9MX19d2hpbGUoMCk7Zj0wfExpKGwsMTAxNzI2KTtlOmRve2lmKGYpc3dpdGNoKDB8dWVbZj4+MF0pe2Nhc2UgMTA4OmN8PTI7YnJlYWsgZTtjYXNlIDExNDpjfD00O2JyZWFrIGU7ZGVm''@;'; put 'put ''YXVsdDpicmVhayBlfX13aGlsZSgwKTtpZih1ZVsyNzUrKDB8YVtBPj4yXSk+PjBdPWMsKDB8aGkobCkpIT0oMHxsKSl7aWYocD0rX1syNCsoYz0wfGFbMTIrKDB8YVtBPj4yXSk+PjJdKT4+M10rMTYsbT0rX1tjKzMyPj4zXSs4LGw9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxoaShsKSk+PjJd''@;'; put 'put ''KT4+Ml18MCksZj11ZVsyNzUrKGM9MHxhW0E+PjJdKT4+MF08PDEmMixsKXtfW2MrNDgrKChsPTI1NSZmKTw8NCk+PjNdPXAsX1tjKzQ4KyhsPDw0KSs4Pj4zXT1tO2JyZWFrfV9bYys0OCsoKGw9MjU1JigzXmYpKTw8NCk+PjNdPW0sX1tjKzQ4KyhsPDw0KSs4Pj4zXT1wO2JyZWFrfX19d2hp''@;'; put 'put ''bGUoMCl9ZnVuY3Rpb24gQU4obCxjKXtsfD0wO3ZhciBNLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtpZihwPTB8YVsoY3w9MCk+PjJdLGFbKE09YysyNHwwKT4+Ml09MCxhW00rND4+Ml09MCxhW00rOD4+Ml09MCxhW00rMTI+PjJdPTAsMHx1ZVtwPj4wXSl7dz0wfFFuKDErKDB8em8o''@;'; put 'put ''cCkpfDApLHVlW3c+PjBdPTAsYj1jKzEyfDAsZj13O2U6Zm9yKDs7KXt0OmZvcig7Oyl7aWYoQT1wKzF8MCwhKChtPTB8dWVbcD4+MF0pPDwyND4+MjQpKWJyZWFrIGU7aWYoIShtPDwyND4+MjQ9PS0xfCgyNTUmbSk8MTYxfDIhPSgwfGFbYj4+Ml0pKSl7aWYodWVbZj4+MF09bSxtPWYrMnww''@;'; put 'put ''LHVlW2YrMT4+MF09QT0wfHVlW0E+PjBdLEE8PDI0Pj4yNCl7Zj1tLHA9cCsyfDA7Y29udGludWV9Zj1tO2JyZWFrIGV9c3dpdGNoKG08PDI0Pj4yNCl7Y2FzZSA5MjpicmVhayB0O2Nhc2UgMTA6az0xMjticmVhayB0fXVlW2Y+PjBdPW0sZj1mKzF8MCxwPUF9aWYoMTIhPSgwfGspKXtzd2l0''@;'; put 'put ''Y2goKG09MHx1ZVtBPj4wXSk8PDI0Pj4yNHwwKXtjYXNlIDExNDpjYXNlIDEwODpjYXNlIDExMDptPWYrMXwwLHVlW2Y+PjBdPTAsZmsobCxjLHcsMHx1ZVtBPj4wXSksZj1tO2JyZWFrO2RlZmF1bHQ6dWVbZj4+MF09bSxmPWYrMXwwLG09d313PW0scD0wPT0oMHx1ZVtBPj4wXSk/QTpwKzJ8''@;'; put 'put ''MH1lbHNlIGs9MCxwPWYrMXwwLHVlW2Y+PjBdPTAsZmsobCxjLHcsMTEwKSxmPXAsdz1wLHA9QX0oMHx3KSE9KDB8ZikmJih1ZVtmPj4wXT0wLGZrKGwsYyx3LDExMCkpLGFbKGM9Yys0MHwwKT4+Ml09YVtNPj4yXSxhW2MrND4+Ml09YVtNKzQ+PjJdLGFbYys4Pj4yXT1hW00rOD4+Ml0sYVtj''@;'; put 'put ''KzEyPj4yXT1hW00rMTI+PjJdfX1mdW5jdGlvbiBmayhsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgTSxELFIsSyxrLG09MCxBPTAsdz0wLGI9MCxHPTA7Sz1vZSxvZT1vZSszMnwwLFI9SysxNnwwLEQ9Syx3PTB8VHRbKEc9NzYrKGN8PTApfDApPj4xXSxrPShiPTB8YVsoTT1jKzcyfDAp''@;'; put 'put ''Pj4yXSk/MHxHaChiLHcrMnwwLDU2LHcrMXwwKTowfG1yKDExMisoNTYqd3wwKXwwKSxhW00+PjJdPWssYVsoYj1rKyg1Nioodz0wfFR0W0c+PjFdKXwwKXwwKT4+Ml09Zix1ZVtrKyg1Nip3fDApKzQ4Pj4wXT1wLDAhPSgwfGYpJiYwIT0oMHx1ZVtmPj4wXSk/KGFbNDY1OTRdPWFbYys0Pj4y''@;'; put 'put ''XSxfWzIzMjk5XT0rX1tjKzE2Pj4zXSxhW2srKDU2Knd8MCkrND4+Ml09MHxtaVs2MyZhWyhwPTB8YVtsKzE0ND4+Ml0pPj4yXV0ocCwxODYzNzYsMSksR04oRCxsLGIpLF9bUj4+M109QT0rX1tEPj4zXSxtPStfW0QrOD4+M10pOihfW1I+PjNdPTAsX1trKyg1Nip3fDApKzQwPj4zXT1tPSso''@;'; put 'put ''MHx+figxLjIqK19bYysxNj4+M10pKSxBPTApLFR0W0c+PjFdPTErKDB8VHRbRz4+MV0pPDwxNj4+MTYsX1soRz1jKzI0fDApPj4zXT0rX1soK19bRz4+M10+QT9HOlIpPj4zXSxfWyhHPWMrMzJ8MCk+PjNdPStfW0c+PjNdK20sb2U9S31mdW5jdGlvbiBhcChsLGMsZixwLG0sQSl7bHw9MCxj''@;'; put 'put ''fD0wLGZ8PTAscD0rcCxtfD0wLEF8PTA7dmFyIHcsRyxwZSxtZSxiPTAsaz0wLE09MCxEPTAsUj0wLEs9MDtzd2l0Y2gobWU9b2Usb2U9b2UrMzJ8MCxHPW1lKzE2fDAsUj1tZSs4fDAsRD1tZSxwZT0wfG1yKDg4KSwwfE1pKGwpKXtjYXNlIDA6Yj0wLEs9MHxhW2wrNjA+PjJdLGs9bCxNPTA7''@;'; put 'put ''YnJlYWs7Y2FzZSAxOmI9MCxLPTB8aGkoMHxmcihsKSksaz0wLE09bDticmVhaztjYXNlIDI6Yj1sLEs9MHxoaSgwfGZyKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSkpLGs9MCxNPTA7YnJlYWs7ZGVmYXVsdDpiPTAsSz0wLGs9MCxNPTB9YVtwZSs0Pj4yXT1tLGFb''@;'; put 'put ''cGUrOD4+Ml09QSxfW3BlKzE2Pj4zXT1wLGFbKEE9cGUrMTJ8MCk+PjJdPWJ0WzExNSsoMHxhWyh3PUsrMTZ8MCk+PjJdKT4+MF07ZTpkb3tpZig0JmYpYVtwZT4+Ml09MHxuYShjKSwyJmZ8MCYmKHVlW3BlKzgyPj4wXT0xKTtlbHNlIHN3aXRjaCgwfGYpe2Nhc2UgMjppZihhW3BlPj4yXT0w''@;'; put 'put ''fG5hKGMpLHVlW3BlKzgyPj4wXT0xLCEoMHxPRShsLHBlKSkpYnJlYWsgZTtzd2l0Y2goMHxNaShsKSl7Y2FzZSAwOmFbRD4+Ml09MHwkcihrKSxYcigzLDEwMTk4MyxEKTticmVhayBlO2Nhc2UgMTphW1I+PjJdPTB8JHIoTSksWHIoMywxMDIwMDUsUik7YnJlYWsgZTtjYXNlIDI6RD0wfCRy''@;'; put 'put ''KDB8YVsoMz09KDMmYVtiPj4yXXwwKT9iOmIrNDh8MCkrNDA+PjJdKSxSPTAhPSgwfGxjKEspKSxLPTB8JHIoMHxhWygyPT0oMyZhW2I+PjJdfDApP2I6YistNDh8MCkrNDA+PjJdKSxhW0c+PjJdPUQsYVtHKzQ+PjJdPVI/MTM3NzM4OjE0MTc0NyxhW0crOD4+Ml09SyxYcigzLDEwMjAyNixH''@;'; put 'put ''KTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX1jYXNlIDA6bT0wfHlOKGMsbCwwKSxhW3BlPj4yXT1tLG09MT09KDB8YVtBPj4yXSk/MHxTayhtKTowfCQ2KG0sSyksSHQoMHxhW3BlPj4yXSksYVtwZT4+Ml09bSxBTigwfGFbMTQ0KygwfGFbdz4+Ml0pPj4yXSxwZSk7YnJlYWsgZTtkZWZhdWx0''@;'; put 'put ''OkJyKDEwMjA1MywxMDIwNjksMTY2LDEwMjA3OCl9fXdoaWxlKDApO3JldHVybiBvZT1tZSwwfHBlfWZ1bmN0aW9uIHlOKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAs''@;'; put 'put ''SGU9MCxqZT0wLGV0PTA7c3dpdGNoKDB8TWkoY3w9MCkpe2Nhc2UgMDptPTB8em8odz0wfCRyKGMpKSwocD0wfGFbMTIrKDB8YVtjKzE2Pj4yXSk+PjJdKT8ocD0wfGFbcD4+Ml0sbD8oQmU9MCxPZT0yLExlPTIsYmU9MixBPTIsZXQ9MTAyMTAxLEQ9MTAyMDk4LGI9MTA1NDkzLEc9MTk1MDU5''@;'; put 'put ''LHBlPTE5NTA1OSxLPTAsbWU9MCxSPTB8em8ocCksSGU9cCxqZT0xMDIwOTUpOihCZT0wLE9lPTIsTGU9MixiZT0yLEE9MixldD0xMDIxMDEsRD0xMDIwOTgsYj0xMDU0OTMsRz0xOTUwNTkscGU9MTk1MDU5LEs9MCxtZT0wLFI9MixIZT1wLGplPTEwMjA5NSkpOihCZT0wLE9lPTIsTGU9Mixi''@;'; put 'put ''ZT0yLEE9MixldD0xMDIxMDEsRD0xMDIwOTgsYj0xMDU0OTMsRz0xOTUwNTkscGU9MTk1MDU5LEs9MCxtZT0wLFI9MixIZT0xMDIwODksamU9MTAyMDk1KTticmVhaztjYXNlIDE6bT0wfHpvKHc9MHwkcigwfGZyKGMpKSksQT0wfHpvKGI9MHwkcihjKSksKHA9MHxhWzEwNCsoMHxhW2MrMTY+''@;'; put 'put ''PjJdKT4+Ml0pPyhwPTB8YVtwPj4yXSxsPyhCZT0wLE9lPTIsTGU9MixiZT0yLGV0PTEwMjEwMSxEPTEwMjA5OCxHPTE5NTA1OSxwZT0xOTUwNTksSz0wLG1lPTAsUj0wfHpvKHApLEhlPXAsamU9MTAyMDk1KTooQmU9MCxPZT0yLExlPTIsYmU9MixldD0xMDIxMDEsRD0xMDIwOTgsRz0xOTUw''@;'; put 'put ''NTkscGU9MTk1MDU5LEs9MCxtZT0wLFI9MixIZT1wLGplPTEwMjA5NSkpOihCZT0wLE9lPTIsTGU9MixiZT0yLGV0PTEwMjEwMSxEPTEwMjA5OCxHPTE5NTA1OSxwZT0xOTUwNTksSz0wLG1lPTAsUj0yLEhlPTEwMjA4OSxqZT0xMDIwOTUpO2JyZWFrO2Nhc2UgMjpBPWMrNDh8MCxtPTB8em8o''@;'; put 'put ''dz0wfCRyKDB8aGkoMHxmcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpBKSs0MD4+Ml0pKSkpLGs9MHx6byhNPTB8JHIoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6QSkrNDA+PjJdKSksbWU9KHBlPTB8YVs1MisoMHxhWyhwPWMrMTZ8MCk+PjJdKT4+Ml0pPzB8em8ocGUpOjAsRD0wfCRyKDB8''@;'; put 'put ''YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSksSz0oRz0wfGFbOTIrKHA9MHxhW3A+PjJdKT4+Ml0pPzB8em8oRyk6MCxiPTB8em8oRCksKHA9MHxhW3ArOTY+PjJdKT8ocD0wfGFbcD4+Ml0sUj1sPzB8em8ocCk6Mik6KFI9MixwPTEwMjA4OSksamU9MD09KDB8bGMoMHxo''@;'; put 'put ''aSgwfGZyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOkEpKzQwPj4yXSkpKSksQmU9MSxPZT1rLExlPWIsYmU9aysyKygwfG1lP21lKzF8MDowKStiKygwfEs/SysxfDA6MCl8MCxBPTIsZXQ9TSxiPTEwNTQ5MyxIZT1wLGplPWplPzE0MTc0NzoxMzc3Mzg7YnJlYWs7ZGVmYXVsdDpCZT0wLE9l''@;'; put 'put ''PTIsTGU9MixiZT0yLEE9MixtPTIsZXQ9MTAyMTAxLEQ9MTAyMDk4LGI9MTA1NDkzLHc9MTAyMDkyLEc9MTk1MDU5LHBlPTE5NTA1OSxLPTAsbWU9MCxSPTIsSGU9MTAyMDg5LGplPTEwMjA5NX1mPTA9PSgwfGYpLE09MCxwPWw7ZTpmb3IoOzspe2M9cCsxfDA7dDpkb3tzd2l0Y2goMHx1ZVtw''@;'; put 'put ''Pj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA5Mjpzd2l0Y2gocD1wKzJ8MCwwfHVlW2M+PjBdKXtjYXNlIDc4Oms9QTticmVhayB0O2Nhc2UgNzE6az1tO2JyZWFrIHQ7Y2FzZSA2OTprPWJlO2JyZWFrIHQ7Y2FzZSA3MjprPUxlO2JyZWFrIHQ7Y2FzZSA4NDprPU9lO2JyZWFrIHQ7Y2FzZSA3''@;'; put 'put ''NjprPVI7YnJlYWsgdDtjYXNlIDkyOmlmKCFmKXtrPTE7YnJlYWsgdH19az0yO2JyZWFrO2RlZmF1bHQ6az0xLHA9Y319d2hpbGUoMCk7TT1NK2t8MH1iZT0wfFFuKE0rMXwwKSxSPTA9PSgwfEJlKSxNPTA9PSgwfG1lKSxjPTA9PSgwfEspLHA9YmUsbT1sO2U6Zm9yKDs7KXtzd2l0Y2goaz1t''@;'; put 'put ''KzF8MCwoQT0wfHVlW20+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6YnJlYWsgZTtjYXNlIDkyOmJyZWFrO2RlZmF1bHQ6dWVbcD4+MF09QSxwPXArMXwwLG09aztjb250aW51ZSBlfXN3aXRjaChBPW0rMnwwLChtPTB8dWVbaz4+MF0pPDwyND4+MjR8MCl7Y2FzZSA3MTpmb3IobT13Ozspe2lmKHVl''@;'; put 'put ''W3A+PjBdPWw9MHx1ZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209QTtjb250aW51ZSBlfW09bSsxfDAscD1wKzF8MH1jYXNlIDc4OmZvcihtPWI7Oyl7aWYodWVbcD4+MF09bD0wfHVlW20+PjBdLCEobDw8MjQ+PjI0KSl7bT1BO2NvbnRpbnVlIGV9bT1tKzF8MCxwPXArMXwwfWNhc2UgNjk6aWYo''@;'; put 'put ''Uil7bT1BO2NvbnRpbnVlIGV9Zm9yKG09ZXQ7dWVbcD4+MF09bD0wfHVlW20+PjBdLGw8PDI0Pj4yNDspbT1tKzF8MCxwPXArMXwwO2lmKE0pbT1qZTtlbHNlIGZvcih1ZVtwPj4wXT01OCxtPXBlOzspe2lmKHVlWyhwPXArMXwwKT4+MF09bD0wfHVlW20+PjBdLCEobDw8MjQ+PjI0KSl7bT1q''@;'; put 'put ''ZTticmVha31tPW0rMXwwfWZvcig7Oyl7aWYodWVbcD4+MF09bD0wfHVlW20+PjBdLCEobDw8MjQ+PjI0KSl7bT1EO2JyZWFrfW09bSsxfDAscD1wKzF8MH1mb3IoO3VlW3A+PjBdPWw9MHx1ZVttPj4wXSxsPDwyND4+MjQ7KW09bSsxfDAscD1wKzF8MDtpZihjKXttPUE7Y29udGludWUgZX1m''@;'; put 'put ''b3IodWVbcD4+MF09NTgsbT1HOzspe2lmKHVlWyhwPXArMXwwKT4+MF09bD0wfHVlW20+PjBdLCEobDw8MjQ+PjI0KSl7bT1BO2NvbnRpbnVlIGV9bT1tKzF8MH1jYXNlIDg0OmZvcihtPWV0Ozspe2lmKHVlW3A+PjBdPWw9MHx1ZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209QTtjb250aW51ZSBl''@;'; put 'put ''fW09bSsxfDAscD1wKzF8MH1jYXNlIDcyOmZvcihtPUQ7Oyl7aWYodWVbcD4+MF09bD0wfHVlW20+PjBdLCEobDw8MjQ+PjI0KSl7bT1BO2NvbnRpbnVlIGV9cD1wKzF8MCxtPW0rMXwwfWNhc2UgNzY6Zm9yKG09SGU7Oyl7aWYodWVbcD4+MF09bD0wfHVlW20+PjBdLCEobDw8MjQ+PjI0KSl7''@;'; put 'put ''bT1BO2NvbnRpbnVlIGV9cD1wKzF8MCxtPW0rMXwwfWNhc2UgOTI6aWYoIWYpe3VlW3A+PjBdPTkyLHA9cCsxfDAsbT1BO2NvbnRpbnVlIGV9fXVlW3A+PjBdPTkyLHVlW3ArMT4+MF09bSxwPXArMnwwLG09QX1yZXR1cm4gdWVbcD4+MF09MCwwfGJlfWZ1bmN0aW9uIFdVKGwsYyl7Y3w9MDt2''@;'; put 'put ''YXIgZj0wLHA9MCxtPTAsQT0wO2lmKDB8KGx8PTApKXtmb3IoZj1sLHA9MDshKCgwfHApPj0oMHxjKSk7KXB8fEh0KDB8YVtmPj4yXSksMHwoQT0wfGFbZis4Pj4yXSkmJjB8KG09MHxhW2YrMTI+PjJdKSYmbm9bMTI3Jm1dKEEpLGY9Zis1NnwwLHA9cCsxfDA7SHQobCl9fWZ1bmN0aW9uIFZ1''@;'; put 'put ''KGwpe3ZhciBjPTA7MHwobHw9MCkmJihIdCgwfGFbbD4+Ml0pLGM9bCs3MnwwLDB8dWVbbCs4Mj4+MF0/MHwoYz0wfGFbYz4+Ml0pJiZMRShjLDEpOldVKDB8YVtjPj4yXSwwfFR0W2wrNzY+PjFdKSxIdChsKSl9ZnVuY3Rpb24gQjcobCxjLGYpe2Z8PTA7dmFyIFIsRyxLLHBlLG1lLHA9MCxt''@;'; put 'put ''PTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7aWYobWU9b2Usb2U9b2UrMzJ8MCxSPW1lKzE2fDAsRz1tZSxwZT0wfGFbKEs9MTIrKHc9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSxhW0s+PjJdPWN8PTAsMHx1ZVtmKzgyPj4wXSkoZnVuY3Rpb24gQ0cobCxjLGYpe2N8PTAsZnw9MDt2YXIg''@;'; put 'put ''QSxiLGssTSxwPTAsbT0wLHc9MDtzd2l0Y2goTT1vZSxvZT1vZSs4MHwwLGs9TSxmdW5jdGlvbiBpQihsKXt2YXIgYyxmLHA9MDtzd2l0Y2goYz0wfGI1KGx8PTApLGFbYys0Pj4yXT1sPTB8YVs0KyhmPTB8YVtjPj4yXSk+PjJdLGFbYysxMj4+Ml09YVtmKzEyPj4yXSwwfGwpe2Nhc2UgMjpj''@;'; put 'put ''YXNlIDA6Y2FzZSAxOmNhc2UgMzpsPWYrOHwwLHA9Nn02PT0oMHxwKSYmKGFbYys4Pj4yXT1hW2w+PjJdKSxhW2MrMjA4Pj4yXT1hW2YrMjA4Pj4yXSxhW2MrMjI4Pj4yXT1hW2YrMjI4Pj4yXSxhW2MrMjQ0Pj4yXT1hW2YrMjQ0Pj4yXSxUdFsocD1jKzI2MHwwKT4+MV09LTImVHRbcD4+MV18''@;'; put 'put ''MSZUdFtmKzI2MD4+MV19KGx8PTApLGI9K19bZis1Nj4+M10sbT0rX1tmKzY0Pj4zXSwwfHVlW2YrODA+PjBdKXtjYXNlIDExNjptPS41KigrX1tmKzQ4Pj4zXS0rX2QoYykpK20scD00O2JyZWFrO2Nhc2UgOTg6bS09LjUqKCtfW2YrNDg+PjNdLStfZChjKSkscD00fTQ9PSgwfHApJiYobSs9''@;'; put 'put ''LTEpLF9baz4+M109YixfW2srOD4+M109bSxhW2srMjA+PjJdPWFbZis4Pj4yXSxhW2srMTY+PjJdPWFbZis0Pj4yXSxfW2srMzI+PjNdPStfW2YrMTY+PjNdLHA9MHxMaSgwfGFbOCsoMHxhWyh3PWwrMTZ8MCk+PjJdKT4+Ml0sMTM3Mjk3KSxhWyhmPWsrNTZ8MCk+PjJdPXAsYVsoQT1rKzYw''@;'; put 'put ''fDApPj4yXT1hWzIxMisoMHxhW3c+PjJdKT4+Ml0sdWVbKHc9ays2NHwwKT4+MF09MCwwIT0oMHxwKSYmMCE9KDB8dWVbcD4+MF0pfHwoYVtmPj4yXT0xMzczMDgpLDE9PSgwfHVlW2MrND4+MF0pPyhmPTB8YVtjPj4yXSxHYyhsLDB8YVszMzYrKDB8YVtsPj4yXSk+PjJdKSxnYShsLChwPTB8''@;'; put 'put ''YVtmKzI0Pj4yXSl8fDEzNzMxNCksbzYobCxmLGspLDB8dWVbdz4+MF0mJkh0KDB8YVtBPj4yXSkpOlRFKGwsMHxhW2M+PjJdLGspLGZ1bmN0aW9uIF9vKGwpe3ZhciBjO2FbMjA4KyhjPTB8YVsxNisobHw9MCk+PjJdKT4+Ml09MCxhW2MrMjI4Pj4yXT0wLGFbYysyNDQ+PjJdPTAsYVtjKzIx''@;'; put 'put ''Mj4+Ml09MCxFQyhsKX0obCksb2U9TX0pKGwsMHxhW2YrNzI+PjJdLGYpLG09MTg7ZWxzZSBpZigoMHxUdFsoRD1mKzc2fDApPj4xXSk+PTEpe3N3aXRjaChOOChsLDApLGdhKGwsMHxhW2YrOD4+Ml0pLDB8dWVbZis4MD4+MF0pe2Nhc2UgMTE2OnA9LjUqK19bZis0OD4+M10rKEE9K19bZis2''@;'; put 'put ''ND4+M10pO2JyZWFrO2Nhc2UgOTg6cD0tLjUqK19bZis0OD4+M10rKEE9K19bZis2ND4+M10pKyArX1tmKzMyPj4zXTticmVhaztkZWZhdWx0OnA9LjUqK19bZiszMj4+M10rKEE9K19bZis2ND4+M10pfWZvcihfWyhNPUcrOHwwKT4+M109cC09K19bZisxNj4+M10sNTEyJlR0W3crMjYwPj4x''@;'; put 'put ''XSYmKF9bTT4+M109cC1BKSxiPWYrNzJ8MCxrPWYrNTZ8MCxtPWYrNDB8MCxjPTA7ISgoMHxjKT49KDB8VHRbRD4+MV0pKTspe3N3aXRjaCgwfHVlWyh3PTB8YVtiPj4yXSkrKDU2KmN8MCkrNDg+PjBdKXtjYXNlIDEwODpwPStfW2s+PjNdLS41KitfW20+PjNdO2JyZWFrO2Nhc2UgMTE0OnA9''@;'; put 'put ''LjUqK19bbT4+M10rICtfW2s+PjNdO2JyZWFrO2RlZmF1bHQ6cD0rX1trPj4zXX1fW0c+PjNdPXAsYVtSPj4yXT1hW0c+PjJdLGFbUis0Pj4yXT1hW0crND4+Ml0sYVtSKzg+PjJdPWFbRys4Pj4yXSxhW1IrMTI+PjJdPWFbRysxMj4+Ml0sU2gobCxSLHcrKDU2KmN8MCl8MCksX1tNPj4zXT0r''@;'; put 'put ''X1tNPj4zXS0rX1soMHxhW2I+PjJdKSsoNTYqY3wwKSs0MD4+M10sYz1jKzF8MH14YihsKSxtPTE4fTE4PT0oMHxtKSYmKGFbSz4+Ml09cGUpLG9lPW1lfWZ1bmN0aW9uIHYyKGwsYyl7cmV0dXJuIDB8eU4obHw9MCxjfD0wLDEpfWZ1bmN0aW9uIFgxKGwpe3JldHVybiAwfHdOKGx8PTAsMCl9''@;'; put 'put ''ZnVuY3Rpb24gd04obCxjKXtsfD0wLGN8PTA7dmFyIGIsZj0wLHA9MCxtPTAsQT0wLHc9MCxrPTA7Zm9yKChmPTB8YVs0NzIwN10pfHwoYVs0NzIwOF09NjQsZj0wfFFuKDY0KSxhWzQ3MjA3XT1mKSxiPWM8PDI0Pj4yND09MCx3PTAscD0wLEE9bDtBJiYoYz0wfHVlW0E+PjBdKTw8MjQ+PjI0''@;'; put 'put ''Oyl7KDB8dyk+KChsPTB8YVs0NzIwOF0pLTh8MCkmJihhWzQ3MjA4XT1mPWw8PDEsZj0wfGwwKDB8YVs0NzIwN10sZiksYVs0NzIwN109ZixmPWYrd3wwLGM9MHx1ZVtBPj4wXSk7ZTpkb3tzd2l0Y2goYzw8MjQ+PjI0KXtjYXNlIDM4OmImJjAhPSgwfFlVKEEpKT9rPTE4OihwPTUsYz0xMDIx''@;'; put 'put ''MzApO2JyZWFrO2Nhc2UgNjA6cD00LGM9MTAyMTUzO2JyZWFrO2Nhc2UgNjI6cD00LGM9MTAyMTM2O2JyZWFrO2Nhc2UgNDU6cD01LGM9MTAyMTQ3O2JyZWFrO2RlZmF1bHQ6aWYoMCE9KDB8cCkmYzw8MjQ+PjI0PT0zMil7aWYoMzI9PSgwfHVlW3A+PjBdKSl7cD02LGM9MTAyMTIzO2JyZWFr''@;'; put 'put ''IGV9az0xODticmVhayBlfXN3aXRjaChjPDwyND4+MjQpe2Nhc2UgMzQ6cD02LGM9MTAyMTE2O2JyZWFrIGU7Y2FzZSAzOTpwPTUsYz0xMDIxNDE7YnJlYWsgZTtjYXNlIDEwOmlmKGIpe2s9MTg7YnJlYWsgZX1wPTUsYz0xMDIxMTA7YnJlYWsgZTtkZWZhdWx0Oms9MTg7YnJlYWsgZX19fXdo''@;'; put 'put ''aWxlKDApO2ZvcigxOD09KDB8aykmJihrPTAscD0oYz1ifGM8PDI0Pj4yNCE9MTMpPzE6NSxjPWM/QToxMDIxMDQpLG09ZitwfDAsbD1wO2w7KXVlW2Y+PjBdPTB8dWVbYz4+MF0sbD1sKy0xfDAsYz1jKzF8MCxmPWYrMXwwO2w9QSx3PXArd3wwLGY9bSxBPUErMXwwLHA9bH1yZXR1cm4gdWVb''@;'; put 'put ''Zj4+MF09MCwwfGFbNDcyMDddfWZ1bmN0aW9uIFlVKGwpe3ZhciBjPTAsZj0wO2M9MHx1ZVsoZj0xKyhsfD0wKXwwKT4+MF07ZTpkb3tpZihjPDwyND4+MjQ9PTM1KXtzd2l0Y2goKGM9MHx1ZVsoZj1sKzJ8MCk+PjBdKTw8MjQ+PjI0KXtjYXNlIDg4OmNhc2UgMTIwOmJyZWFrO2RlZmF1bHQ6''@;'; put 'put ''Zm9yKGw9Zjs7KXtpZihmPWwrMXwwLChjKy00OCYyNTUpPj0xMClicmVhayBlO2w9ZixjPTB8dWVbZj4+MF19fWZvcihmPWwrM3wwOzspe2lmKCgoYz0wfHVlW2Y+PjBdKS00OCYyNTUpPj0xMClzd2l0Y2goYzw8MjQ+PjI0KXtjYXNlIDY1OmNhc2UgNjY6Y2FzZSA2NzpjYXNlIDY4OmNhc2Ug''@;'; put 'put ''Njk6Y2FzZSA3MDpjYXNlIDk3OmNhc2UgOTg6Y2FzZSA5OTpjYXNlIDEwMDpjYXNlIDEwMTpjYXNlIDEwMjpicmVhaztkZWZhdWx0OmJyZWFrIGV9Zj1mKzF8MH19ZWxzZSBmb3IoOzspe2lmKGw9ZisxfDAsKCgtMzMmYyktNjUmMjU1KT49MjYpYnJlYWsgZTtmPWwsYz0wfHVlW2w+PjBdfX13''@;'; put 'put ''aGlsZSgwKTtyZXR1cm4gYzw8MjQ+PjI0PT01OXwwfWZ1bmN0aW9uIFVvZShsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKChjPTB8YVs0NzIwOV0pfHwoYVs0NzIxMF09NjQsYz0wfFFuKDY0KSxhWzQ3MjA5XT1jKSx3PTA7bCYmKGY9MHx1ZVtsPj4wXSk8PDI0''@;'; put 'put ''Pj4yNDspe3N3aXRjaCgoMHx3KT4oKHA9MHxhWzQ3MjEwXSktOHwwKSYmKGFbNDcyMTBdPWM9cDw8MSxjPTB8bDAoMHxhWzQ3MjA5XSxjKSxhWzQ3MjA5XT1jLGM9Yyt3fDAsZj0wfHVlW2w+PjBdKSxmPDwyND4+MjQpe2Nhc2UgMzg6MHxZVShsKT9iPTEyOihtPTUsZj0xMDIxMzApO2JyZWFr''@;'; put 'put ''O2Nhc2UgNjA6bT00LGY9MTAyMTUzO2JyZWFrO2Nhc2UgNjI6bT00LGY9MTAyMTM2O2JyZWFrO2Nhc2UgMzQ6bT02LGY9MTAyMTE2O2JyZWFrO2Nhc2UgMzk6bT01LGY9MTAyMTQxO2JyZWFrO2RlZmF1bHQ6Yj0xMn1mb3IoMTI9PSgwfGIpJiYoYj0wLG09MSxmPWwpLEE9YyttfDAscD1tO3A7''@;'; put 'put ''KXVlW2M+PjBdPTB8dWVbZj4+MF0scD1wKy0xfDAsZj1mKzF8MCxjPWMrMXwwO3c9bSt3fDAsYz1BLGw9bCsxfDB9cmV0dXJuIHVlW2M+PjBdPTAsMHxhWzQ3MjA5XX1mdW5jdGlvbiBtcihsKXt2YXIgYz0wO3JldHVybihsfD0wKT8ocjIoMHwoYz0wfFFuKGwpKSwwLDB8bCksbD1jKTpsPTAs''@;'; put 'put ''MHxsfWZ1bmN0aW9uIFFuKGwpe3JldHVybihsfD0wKT8obD0wfFIwKGwpKXx8KEN1KDExMTc0MCwxNCwxLDB8YVsxNTcxMl0pLGw9MCk6bD0wLDB8bH1mdW5jdGlvbiBHaChsLGMsZixwKXtyZXR1cm4gcHw9MCwwIT0oMHwoY3w9MCkpJjA9PSgwfChsPTB8WmEobHw9MCwwfHZyKGZ8PTAsYykp''@;'; put 'put ''KSk/Q3UoMTExNzQwLDE0LDEsMHxhWzE1NzEyXSk6Yz4+PjA+cD4+PjAmJnIyKGwrKDB8dnIocCxmKSl8MCwwLDB8dnIoYy1wfDAsZikpLDB8bH1mdW5jdGlvbiBsMChsLGMpe3JldHVybiAwIT0oMHwoY3w9MCkpJjA9PSgwfChsPTB8WmEobHw9MCxjKSkpJiZDdSgxMTE3NDAsMTQsMSwwfGFb''@;'; put 'put ''MTU3MTJdKSwwfGx9ZnVuY3Rpb24gVVUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgRCxSLG1lLG09MCxBPTAsdz0wLGI9MCxNPTAsSz0wLHBlPTA7bWU9b2Usb2U9b2UrODB8MCxSPW1lKzMyfDAsRD1tZSsyNHwwLE09bWUsSz00LHBlPTB8UjAoNDApLGFbcGU+PjJdPTAsbT1t''@;'; put 'put ''ZSs2OHwwLEE9bWUrNjR8MCxiPTY7ZG97aWYoNj09KDB8Yikpe2lmKE1uPTAsbT0wfHFpKDI3LDB8bCksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxUaSgwfGFbQT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTp3PS0xLDEhPSgwfHcpKXtpZighbSYmKE1u''@;'; put 'put ''PTAsbTMoMiksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKSl7bT1PbixiPTE1O2JyZWFrfWlmKCgwfGYpPDEpe2lmKE1uPTAsbTMoMyksbT1NbixNbj0wLDAhPSgwfG0p''@;'; put 'put ''JjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXttPU9uLGI9MTU7YnJlYWt9bT0wO2JyZWFrfWlmKGFbNDcyMTFdPSgwfHApPi0xP3A6MzAscGU9MHxvNCgxODg4NDgsMSwwfHBlLDB8SyksSz1PbixtPU1u''@;'; put 'put ''PTAsTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8cGUsMHxLKSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiPTE1O2JyZWFrfW09MCxiPTE1O2JyZWFrfW09T24sYj0xNX19d2hpbGUoMCk7ZTpkb3tpZigxNT09KDB8Yikpe3Q6''@;'; put 'put ''Zm9yKDs7KXtpZigwfG0pe209MjticmVhayBlfWlmKE1uPTAsbTMoNCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDEhPSgwfEEpKXtmb3IobD0wfGFbMTU3MTJdLE09MDs7KXtpZihN''@;'; put 'put ''bj0wLGI9MHxqZigyKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfHBlLDB8SykpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYj0xNTtjb250aW51ZSB0fWlmKCFiKWJyZWFrO2lmKE1uPTAsbT0wfHFpKDI4LDB8Yiks''@;'; put 'put ''QT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxUaSgwfGFbQT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTp3PS0xLDE9PSgwfHcpKXttPU9uLGI9MTU7Y29udGludWUgdH1pZihNbj0wLFcxKDI1LDB8YiwwfG0pLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4''@;'; put 'put ''bik/KChBPTB8VGkoMHxhW20+PjJdLDB8cGUsMHxLKSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiPTE1O2NvbnRpbnVlIHR9TT1NKzF8MDtkb3tpZigwPT0oMHwoMHxNKSUxMDApJiExKXtpZigxMDA9PSgwfChtPSgwfE0pJTFlM3wwKSkpe2lmKE1uPTAsT2wo''@;'; put 'put ''OTMsMTAyMjAyLDB8bCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXttPU9uLGI9MTU7Y29udGludWUgdH1pZihNbj0wLGFbRD4+Ml09TSxFcygzMiwwfGwsMTAyMjIw''@;'; put 'put ''LDB8RCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxUaSgwfGFbbT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxtLDB8eG4pLE9uPXhuKTpBPS0xLDE9PSgwfEEpKXttPU9uLGI9MTU7Y29udGludWUgdH1icmVha31pZihNbj0wLGFbUj4+Ml09TSxFcygzMiwwfGwsMTAyMjIwLDB8''@;'; put 'put ''UiksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxUaSgwfGFbQT4+Ml0sMHxwZSwwfEspKXx8V2UoMHxBLDB8eG4pLE9uPXhuKTp3PS0xLDE9PSgwfHcpKXttPU9uLGI9MTU7Y29udGludWUgdH1pZighbSYmKE1uPTAsT2woOTQsMTAsMHxsKSxtPU1uLE1uPTAsMCE9KDB8bSkm''@;'; put 'put ''MCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfHBlLDB8SykpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpKXttPU9uLGI9MTU7Y29udGludWUgdH19fXdoaWxlKDApO2lmKCgwfE0pPj0oMHxmKSlicmVha31zd2l0Y2goMHxjKXtjYXNlIDE6aWYoTW49MCxtMyg1KSxt''@;'; put 'put ''PU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfHBlLDB8SykpfHxXZSgwfG0sMHx4biksT249eG4pOkE9LTEsMT09KDB8QSkpe209T24sYj0xNTtjb250aW51ZSB0fWJyZWFrO2Nhc2UgMjppZihNbj0wLG0zKDYpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0o''@;'; put 'put ''MHx4bik/KChBPTB8VGkoMHxhW20+PjJdLDB8cGUsMHxLKSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiPTE1O2NvbnRpbnVlIHR9YnJlYWs7ZGVmYXVsdDppZihNbj0wLG0zKDcpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8VGkoMHxhW20+''@;'; put 'put ''PjJdLDB8cGUsMHxLKSl8fFdlKDB8bSwwfHhuKSxPbj14bik6QT0tMSwxPT0oMHxBKSl7bT1PbixiPTE1O2NvbnRpbnVlIHR9aWYoTW49MCxtMygzKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfFRpKDB8YVttPj4yXSwwfHBlLDB8SykpfHxXZSgwfG0sMHx4biksT249eG4p''@;'; put 'put ''OkE9LTEsMT09KDB8QSkpe209T24sYj0xNTtjb250aW51ZSB0fX1tPTA7YnJlYWsgZX1tPU9uLGI9MTV9bT0wfX13aGlsZSgwKTtyZXR1cm4gSHQoMHxwZSksb2U9bWUsMHxtfWZ1bmN0aW9uIEpVKCl7dmFyIGw9MCxjPTAsZj0wO2ZvcihsPTE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0p''@;'; put 'put ''fDA7bD0wfGFbbD4+Ml07KShjPTB8YVsyNjQrKGw9MHxhWyhmPWwrMTZ8MCk+PjJdKT4+Ml0pJiYoSHQoYyksbD0wfGFbZj4+Ml0pLChjPTB8YVtsKzI3Mj4+Ml0pJiYoSHQoYyksbD0wfGFbZj4+Ml0pLHVlW2wrMTU3Pj4wXT0wLGw9bCsxNjR8MH1mdW5jdGlvbiBYVShsKXt2YXIgYz0wLGY9''@;'; put 'put ''MDtyZXR1cm4gbD0oYz0oMHxhWzI4OCsoMHxhWzE2KyhmPTB8YVsoMz09KDB8KGM9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVsyODgrKDB8YVsxNisobD0wfGFbKDI9PSgwfGMpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpP2Y6bCxhWzQ3''@;'; put 'put ''MjU3XT0wLGFbNDcyNThdPTIxNDc0ODM2NDcsYVs0NzI1OV09YVsyODQrKGY9MHxhW2wrMTY+PjJdKT4+Ml0sYVs0NzI2MF09YVtmKzI4OD4+Ml0sYz9JeShsKTpqNShsKSwwfGFbNDcyNTddfWZ1bmN0aW9uIEtVKCl7dmFyIEEsdyxsPTAsYz0wLGY9MCxwPTAsbT0wLGI9MDtmb3Iodz1vZSxv''@;'; put 'put ''ZT1vZSsxNnwwLGFbKEE9dyk+PjJdPTAsYVtBPj4yXT0yMTQ3NDgzNjQ3LGFbNDcyNTNdPS0yMTQ3NDgzNjQ3LGY9bD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwLG09MjE0NzQ4MzY0NyxwPS0yMTQ3NDgzNjQ3O2M9MHxhW2Y+PjJdOykwfHVlWzE1NisoZj0wfGFbYysxNj4+Ml0p''@;'; put 'put ''Pj4wXT9jPW06KGFbQT4+Ml09Yz0oMHxtKTwoMHwoYj0wfGFbZisyMzI+PjJdKSk/bTpiLGFbNDcyNTNdPXA9KDB8cCk+KDB8Yik/cDpiKSxmPWYrMTY0fDAsbT1jO2lmKDB8bSl7Zm9yKDtsPTB8YVtsPj4yXTspYVsoYj0yMzIrKGw9MHxhW2wrMTY+PjJdKXwwKT4+Ml09KDB8YVtiPj4yXSkt''@;'; put 'put ''bSxsPWwrMTY0fDA7YVs0NzI1M109cC1tLGFbQT4+Ml09MH1vZT13fWZ1bmN0aW9uIFY1KGwsYyl7dmFyIG0sZj0wLHA9MDtmb3IoYVsocD0yMzIrKGw9MHxhWyhtPTE2KyhsfD0wKXwwKT4+Ml0pfDApPj4yXT0oMHxhW3A+PjJdKS0oY3w9MCkscD0wOzspe2lmKCEoZj0wfGFbKDB8YVtsKzI3''@;'; put 'put ''Mj4+Ml0pKyhwPDwyKT4+Ml0pKXtwPTA7YnJlYWt9KDB8ZikhPSgwfGFbbCsyODA+PjJdKSYmKFY1KDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmYrLTQ4fDApKzQwPj4yXSxjKSxsPTB8YVttPj4yXSkscD1wKzF8MH1mb3IoO2Y9MHxhWygwfGFbbCsyNjQ+PjJdKSsocDw8Mik+PjJdOykoMHxm''@;'; put 'put ''KSE9KDB8YVtsKzI4MD4+Ml0pJiYoVjUoMHxhWygzPT0oMyZhW2Y+PjJdfDApP2Y6Zis0OHwwKSs0MD4+Ml0sYyksbD0wfGFbbT4+Ml0pLHA9cCsxfDB9ZnVuY3Rpb24gJFUobCxjLGYscCl7dmFyIG0sQSx3LGI9MCxrPTA7Zm9yKEE9MD09KDB8KHB8PTApKSYxLHc9MC0oZnw9MCl8MCxtPTB8''@;'; put 'put ''YVsyODgrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0sYz1sfD0wOyEoKDB8YVsyODQrKGw9MHxhW2MrMTY+PjJdKT4+Ml0pPD0oMHxtKSYmKDB8bSk8PSgwfGFbbCsyODg+PjJdKSk7KWI9NDgrKGw9MHxhW2wrMjgwPj4yXSl8MCxhWyhrPTE2MCsoMHxhW2wrMTY+PjJdKXwwKT4+Ml09KDB8KCgw''@;'; put 'put ''fGMpPT0oMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6YikrNDA+PjJdKT9wOkEpP2Y6dykrKDB8YVtrPj4yXSksYz0oMHxhWzI4OCsoMHxhWzE2KyhiPTB8YVsoMz09KDB8KGs9MyZhW2w+PjJdKSk/bDpiKSs0MD4+Ml0pPj4yXSk+PjJdKT4oMHxhWzI4OCsoMHxhWzE2KyhsPTB8YVsoMj09KDB8''@;'; put 'put ''ayk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT9iOmw7cmV0dXJuIDB8Y31mdW5jdGlvbiBmRChsLGMsZil7Znw9MDt2YXIgQSxwPTAsbT0wO2ZvcihhWzI4MCsobD0wfGFbKEE9MTYrKGx8PTApfDApPj4yXSk+PjJdPWN8PTAsYVtsKzI4ND4+Ml09ZixtPTA7Oyl7aWYoIShwPTB8YVso''@;'; put 'put ''MHxhW2wrMjcyPj4yXSkrKG08PDIpPj4yXSkpe209MDticmVha30oMHxwKSE9KDB8YykmJihmPTB8ZkQoMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdLHAsZiksbD0wfGFbQT4+Ml0pLG09bSsxfDB9Zm9yKDtwPTB8YVsoMHxhW2wrMjY0Pj4yXSkrKG08PDIpPj4yXTsp''@;'; put 'put ''KDB8cCkhPSgwfGMpJiYoZj0wfGZEKDB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOnArNDh8MCkrNDA+PjJdLHAsZiksbD0wfGFbQT4+Ml0pLG09bSsxfDA7cmV0dXJuIGFbbCsyODg+PjJdPWYsZisxfDB9ZnVuY3Rpb24gajUobCl7dmFyIHcsYz0wLGY9MCxwPTAsbT0wLEE9MCxiPTA7Zm9yKHc9''@;'; put 'put ''MTYrKGx8PTApfDAsbT0wOzspe2lmKCEoZj0wfGFbKDB8YVsxODArKGw9MHxhW3c+PjJdKT4+Ml0pKyhtPDwyKT4+Ml0pKXtmPTA7YnJlYWt9KDB8YVsxNjQrKHA9MHxhW2YrMTY+PjJdKT4+Ml0pPDA/KDB8YVs0NzI1OV0pPigwfChiPTB8YVsyODgrKGM9MHxhWzE2KygwfGFbKDI9PSgwfChs''@;'; put 'put ''PTMmYVtmPj4yXSkpP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpfCgwfGIpPigwfGFbNDcyNjBdKSYmKDB8KEE9KDB8YVtjKzIzMj4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8bCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFyW3ArMTcwPj4xXSl8MCkp''@;'; put 'put ''PCgwfGFbNDcyNThdKXwwPT0oMHxhWzQ3MjU3XSkmJihhWzQ3MjU3XT1mLGFbNDcyNThdPUEpOigwfGFbMjg4KygwfGFbMTYrKGM9MHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVtsKzI4OD4+Ml0pJiZqNShjKSxtPW0rMXwwfWZvcig7MCE9''@;'; put 'put ''KDB8KGM9MHxhWygwfGFbbCsyNjQ+PjJdKSsoZjw8Mik+PjJdKSkmKDB8YVs0NzI1OF0pPjA7KSgwfGFbMjg4KygwfGFbMTYrKGM9MHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKTwoMHxhW2wrMjg4Pj4yXSkmJihqNShjKSxsPTB8YVt3Pj4yXSksZj1m''@;'; put 'put ''KzF8MH1mdW5jdGlvbiBJeShsKXt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wLGI9MDtmb3Iodz0xNisobHw9MCl8MCxtPTA7Oyl7aWYoIShmPTB8YVsoMHxhWzE3MisobD0wfGFbdz4+Ml0pPj4yXSkrKG08PDIpPj4yXSkpe2Y9MDticmVha30oMHxhWzE2NCsocD0wfGFbZisxNj4+Ml0pPj4y''@;'; put 'put ''XSk8MD8oMHxhWzQ3MjU5XSk+KDB8KGI9MHxhWzI4OCsoYz0wfGFbMTYrKDB8YVsoMz09KDB8KGw9MyZhW2Y+PjJdKSk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKXwoMHxiKT4oMHxhWzQ3MjYwXSkmJigwfChBPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8bCk/ZjpmKy00OHww''@;'; put 'put ''KSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhW2MrMjMyPj4yXSktKDB8YXJbcCsxNzA+PjFdKXwwKSk8KDB8YVs0NzI1OF0pfDA9PSgwfGFbNDcyNTddKSYmKGFbNDcyNTddPWYsYVs0NzI1OF09QSk6KDB8YVsyODgrKDB8YVsxNisoYz0wfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpmKzQ4fDApKzQw''@;'; put 'put ''Pj4yXSk+PjJdKT4+Ml0pPCgwfGFbbCsyODg+PjJdKSYmSXkoYyksbT1tKzF8MH1mb3IoOzAhPSgwfChjPTB8YVsoMHxhW2wrMjcyPj4yXSkrKGY8PDIpPj4yXSkpJigwfGFbNDcyNThdKT4wOykoMHxhWzI4OCsoMHxhWzE2KyhjPTB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQw''@;'; put 'put ''Pj4yXSk+PjJdKT4+Ml0pPCgwfGFbbCsyODg+PjJdKSYmKEl5KGMpLGw9MHxhW3c+PjJdKSxmPWYrMXwwfWZ1bmN0aW9uIHRhZShsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8bXIoMTYpLGFbYz4+Ml09bCxhW2MrND4+Ml09MHxrTihsLGMpLGFbYysxMj4+Ml09YywwfGN9ZnVuY3Rpb24gcmFl''@;'; put 'put ''KGwpe3JldHVybiAwfGFbNCsobHw9MCk+PjJdfWZ1bmN0aW9uIGlhZShsKXt2YXIgYyxmLHAsbT0wO3JldHVybiBhWzgrKGM9MHxhWyhtPTB8YVsobHw9MCk+PjJdKT4+Ml0pPj4yXT0tMSxhW20+PjJdPWFbbSsoKHA9KDB8YVsoZj1sKzR8MCk+PjJdKS0xfDApPDwyKT4+Ml0sYVs4KygwfGFb''@;'; put 'put ''KG09MHxhW2w+PjJdKT4+Ml0pPj4yXT0wLGFbbSsocDw8Mik+PjJdPWMsYVtmPj4yXT1wLGJOKGwsMCksMHxjfWZ1bmN0aW9uIG9hZShsKXtyZXR1cm4gMHxoRCgwfGFbKGx8PTApPj4yXSwwLDApfWZ1bmN0aW9uIGFhZShsKXt2YXIgZixwLG0sQSx3LGM9MDtyZXR1cm4oMHxhWzE2NCsoMHxh''@;'; put 'put ''WyhjPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSk+LTEmJkJyKDEwMjM1MCwxMDIzMzEsNDYzLDEwMjM2NCksbT1sKzQ4fDAsZj0wfGhrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOm0pKzQwPj4yXSksdz1sKy00OHwwLHA9MHxoaygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDp3KSs0MD4+Ml0pLGM9''@;'; put 'put ''KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwoQT0zJmFbbD4+Ml0pKT9sOncpKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8QSk/bDptKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhclsxNzArKDB8YVtjPj4yXSk+PjFdKXwwLC0xPT0oMHxhW2YrOD4+''@;'; put 'put ''Ml0pP1doKDB8YVtmPj4yXSwwLGMpOldoKDB8YVtwPj4yXSwwLDAtY3wwKSxDTihsKSwwfGZ1bmN0aW9uIER5KGwsYyl7bHw9MCxjfD0wO2Zvcih2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wOyEoMD09KDB8KGY9MHxhWyhBPWwrMTJ8MCk+PjJdKSl8KDB8Zik9PSgwfGwpKTspbD1m''@;'; put 'put ''O2Zvcig7ISgwPT0oMHwoZj0wfGFbKG09YysxMnwwKT4+Ml0pKXwoMHxmKT09KDB8YykpOyljPWY7aWYoKDB8bCkhPSgwfGMpKXtwPTB8YVtsKzg+PjJdLGY9MHxhW2MrOD4+Ml07ZG97aWYoKDB8cCk+LTEpLTE9PSgwfGYpP3c9bDprPTEwO2Vsc2V7aWYoKDB8Zik+LTEpe2lmKC0xPT0oMHxw''@;'; put 'put ''KSl7dz1jO2JyZWFrfWs9MTA7YnJlYWt9QnIoMTAyMzc2LDEwMjMzMSwzMjcsMTAyNDIzKX19d2hpbGUoMCk7MTA9PSgwfGspJiYodz0oMHxhW2MrND4+Ml0pPCgwfGFbbCs0Pj4yXSk/bDpjKSxhW20+PjJdPXcsYVtBPj4yXT13LGFbdys0Pj4yXT0oMHxhW2MrND4+Ml0pKygwfGFbbCs0Pj4y''@;'; put 'put ''XSksKDB8YVt3Kzg+PjJdKT4tMT9iPXc6QnIoMTAyNDM0LDEwMjMzMSwzMzUsMTAyNDIzKX1lbHNlIGI9bDtyZXR1cm4gMHxifShmLHApfWZ1bmN0aW9uIGJOKGwsYyl7Y3w9MDt2YXIgQSx3LGY9MCxwPTAsbT0wLGI9MDtmb3Iodz0wfGFbKGx8PTApPj4yXSxBPTB8YVtsKzQ+PjJdO209Miso''@;'; put 'put ''bD1jPDwxKXwwLCgwfChsfD0xKSk8KDB8QSkmJigwfGFbNCsoMHxhW3crKGw8PDIpPj4yXSk+PjJdKTwoMHxhWzQrKDB8YVt3KyhjPDwyKT4+Ml0pPj4yXSl8fChsPWMpLCEoKDB8bSk+PSgwfEEpfHwoZj13KyhtPDwyKXwwLHA9MHxhW2Y+PjJdLCgwfG0pPT0oMHxjKXx8KDB8YVtwKzQ+PjJd''@;'; put 'put ''KT49KDB8YVs0KygwfGFbdysobDw8Mik+PjJdKT4+Ml0pKSk7KWw9MHxhWyhiPXcrKGM8PDIpfDApPj4yXSxhW2I+PjJdPXAsYVtmPj4yXT1sLGFbOCsoMHxhW2I+PjJdKT4+Ml09YyxhW2wrOD4+Ml09bSxjPW19ZnVuY3Rpb24gX04obCxjKXtjfD0wO3ZhciBtLGY9MCxwPTA7Zm9yKG09MTYr''@;'; put 'put ''KGx8PTApfDAsZj0wOzspe2lmKCEocD0wfGFbKDB8YVsyNzIrKGw9MHxhW20+PjJdKT4+Ml0pKyhmPDwyKT4+Ml0pKXtwPTA7YnJlYWt9KDB8cCkhPSgwfGMpJiZfTigwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0scCksZj1mKzF8MH1mb3IoO2Y9MHxhWygwfGFbbCsy''@;'; put 'put ''NjQ+PjJdKSsocDw8Mik+PjJdOykoMHxmKSE9KDB8YykmJihfTigwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSxmKSxsPTB8YVttPj4yXSkscD1wKzF8MDswfGMmJmZ1bmN0aW9uIHFVKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKCgwfGFbMjgw''@;'; put 'put ''KyhwPTB8YVsxNisoZj0wfGFbKDM9PSgwfChjPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPT0oMHxsKT9iPTE6KGI9LTEsZj1wPTB8YVsoMj09KDB8Yyk/bDpsKy00OHwwKSs0MD4+Ml0scD0wfGFbcCsxNj4+Ml0pLEE9MHxhW3ArMTgwPj4yXSxjPTAsbT0w''@;'; put 'put ''O3c9MHxhW0ErKG08PDIpPj4yXTspYz0oMHxlUSh3LGYsYikpK2N8MCxtPW0rMXwwO2ZvcihBPTB8YVtwKzE3Mj4+Ml0scD0wO209MHxhW0ErKHA8PDIpPj4yXTspYz0oMHxlUShtLGYsYikpK2N8MCxwPXArMXwwO2FbMTYwKygwfGFbbCsxNj4+Ml0pPj4yXT1jfShjKX1mdW5jdGlvbiBlUShs''@;'; put 'put ''LGMsZil7dmFyIHcscD0wLG09MCxBPTAsYj0wO3JldHVybigwfChwPTB8YVsoYj0zPT0oMHwodz0zJmFbKGx8PTApPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pKT09KDB8KGN8PTApKSYmKHA9MHxhWygyPT0oMHx3KT9sOmwrLTQ4fDApKzQwPj4yXSksKDB8YVsyODQrKEE9MHxhW2MrMTY+PjJd''@;'; put 'put ''KT4+Ml0pPD0oMHwobT0wfGFbMjg4KygwfGFbcCsxNj4+Ml0pPj4yXSkpJiYoMHxtKTw9KDB8YVtBKzI4OD4+Ml0pPyhBPTEscD0ocD0oMHxhWzE2NCsobT0wfGFbbCsxNj4+Ml0pPj4yXSk+LTE/MHxhW20rMTYwPj4yXTowKS0oMHxhW20rMTU2Pj4yXSl8MCk6KEE9MCxwPTB8YVsxNTYrKDB8''@;'; put 'put ''YVtsKzE2Pj4yXSk+PjJdKSxiPSgwfGFbKCgwfChmfD0wKSk+MD8yPT0oMHx3KT9sOmwrLTQ4fDA6YikrNDA+PjJdKT09KDB8Yyk/MTotMSwwfCgoMHwoQT9iOjAtYnwwKSk8MD8wLXB8MDpwKX1mdW5jdGlvbiBoayhsKXt2YXIgYz0wLGY9MDtmb3IobD0wfGFbMjgwKygwfGFbMTYrKGx8PTAp''@;'; put 'put ''Pj4yXSk+PjJdOygwfChmPTB8YVsoYz1sKzEyfDApPj4yXSkpIT0oMHxsKSYwIT0oMHxmKTspKGw9MHxhW2YrMTI+PjJdKT9hW2M+PjJdPWw6bD1mO3JldHVybiAwfGx9ZnVuY3Rpb24gV2gobCxjLGYpe2N8PTA7dmFyIHcscD0wLG09MCxBPTA7Zm9yKGFbKEE9MjMyKyhwPTB8YVsodz0xNiso''@;'; put 'put ''bHw9MCl8MCk+PjJdKXwwKT4+Ml09KDB8YVtBPj4yXSkrKGZ8PTApLEE9MDs7KXtpZighKG09MHxhWygwfGFbcCsyNjQ+PjJdKSsoQTw8Mik+PjJdKSl7QT0wO2JyZWFrfSgwfChtPTB8YVsoMz09KDMmYVttPj4yXXwwKT9tOm0rNDh8MCkrNDA+PjJdKSkhPSgwfGMpJiYoV2gobSxsLGYpLHA9''@;'; put 'put ''MHxhW3c+PjJdKSxBPUErMXwwfWZvcig7bT0wfGFbKDB8YVtwKzI3Mj4+Ml0pKyhBPDwyKT4+Ml07KSgwfChtPTB8YVsoMj09KDMmYVttPj4yXXwwKT9tOm0rLTQ4fDApKzQwPj4yXSkpIT0oMHxjKSYmKFdoKG0sbCxmKSxwPTB8YVt3Pj4yXSksQT1BKzF8MH1mdW5jdGlvbiBDTihsKXt2YXIg''@;'; put 'put ''QSxjPTAsZj0wLHA9MCxtPTAsdz0wO0E9b2Usb2U9b2UrMzJ8MCwoMHxhWyhjPTE2NCsoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSk+LTEmJihYcigxLDEwMjQ1MyxBKSxXZSgxODg4NDgsMSkpLGFbYz4+Ml09bT0wfGFbNDcyNTVdLGM9MHxhWzQ3MjU2XSxhWzQ3MjU1XT1tKzEsYVtjKyht''@;'; put 'put ''PDwyKT4+Ml09bCxtPWwrNDh8MCwwfHVlWzE1NysoMHxhWzE2KyhmPTB8YVsoMz09KDMmKGM9MHxhW2w+PjJdKXwwKT9sOm0pKzQwPj4yXSk+PjJdKT4+MF18fChwPTB8YVs0NzI2Ml0sYVs0NzI2M109MSsoYz0wfGFbNDcyNjNdKSxhW3ArKGM8PDIpPj4yXT1mLGM9MHxhW2w+PjJdKSxwPWwr''@;'; put 'put ''LTQ4fDAsMHx1ZVsxNTcrKDB8YVsxNisoZj0wfGFbKDI9PSgzJmN8MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjBdfHwodz0wfGFbNDcyNjJdLGFbNDcyNjNdPTErKGM9MHxhWzQ3MjYzXSksYVt3KyhjPDwyKT4+Ml09ZixjPTB8YVtsPj4yXSksdWVbMTU3KyhjPTB8YVsodz0xNisoMHxhWygzPT0o''@;'; put 'put ''MyZjfDApP2w6bSkrNDA+PjJdKXwwKT4+Ml0pPj4wXT0xLGY9MHxhW2MrMjcyPj4yXSxhWyhjPWMrMjc2fDApPj4yXT0xKyhtPTB8YVtjPj4yXSksYVtmKyhtPDwyKT4+Ml09bCxhWygwfGFbMjcyKyhtPTB8YVt3Pj4yXSk+PjJdKSsoYVttKzI3Nj4+Ml08PDIpPj4yXT0wLDB8YVsoMHxhWzE4''@;'; put 'put ''MCsodz0wfGFbdz4+Ml0pPj4yXSkrKCgwfGFbdysyNzY+PjJdKS0xPDwyKT4+Ml18fChYcigxLDEwMjQ4NyxBKzh8MCksV2UoMTg4ODQ4LDEpKSx1ZVsxNTcrKGY9MHxhWyh3PTE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pfDApPj4yXSk+PjBdPTEscD0wfGFbZisyNjQ+''@;'; put 'put ''PjJdLGFbKGY9ZisyNjh8MCk+PjJdPTErKG09MHxhW2Y+PjJdKSxhW3ArKG08PDIpPj4yXT1sLGFbKDB8YVsyNjQrKGw9MHxhW3c+PjJdKT4+Ml0pKyhhW2wrMjY4Pj4yXTw8Mik+PjJdPTAsMHxhWygwfGFbMTcyKyh3PTB8YVt3Pj4yXSk+PjJdKSsoKDB8YVt3KzI2OD4+Ml0pLTE8PDIpPj4y''@;'; put 'put ''XT9vZT1BOihYcigxLDEwMjUyMixBKzE2fDApLFdlKDE4ODg0OCwxKSl9ZnVuY3Rpb24gaEQobCxjLGYpe2N8PTAsZnw9MDt2YXIgTSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxEPTA7TT0wfGhrKGx8PTApLGY/KCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8KGs9MyZhW2Y+PjJdKSk/''@;'; put 'put ''ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfGspP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKXwwKSE9KDB8YXJbMTcwKygwfGFbZisxNj4+Ml0pPj4xXSkmJihwPTMpOihmPTAscD0zKTtlOmRve2lmKDM9PSgwfHApKXtmb3Ioaz1s''@;'; put 'put ''KzE2fDAsYj0wOzspe2lmKCEodz0wfGFbKDB8YVsxODArKHA9MHxhW2s+PjJdKT4+Ml0pKyhiPDwyKT4+Ml0pKXtiPTA7YnJlYWt9cD13KzE2fDAsbT13Ky00OHwwLEE9MHxhWygyPT0oMyZhW3c+PjJdfDApP3c6bSkrNDA+PjJdO2Rve2lmKCgwfGFbMTY0KygwfGFbcD4+Ml0pPj4yXSk+LTEp''@;'; put 'put ''KDB8QSkhPSgwfGMpJiYoZj0wfGhEKEEsbCxmKSk7ZWxzZSBpZigoMHxoayhBKSkhPSgwfE0pKXtpZigwfGYmJigoMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfChEPTMmYVt3Pj4yXSkpP3c6bSkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHxEKT93''@;'; put 'put ''OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YXJbMTcwKygwfGFbcD4+Ml0pPj4xXSl8MCk+PSgoMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfChBPTMmYVtmPj4yXSkpP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHxBKT9m''@;'; put 'put ''OmYrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YXJbMTcwKygwfGFbZisxNj4+Ml0pPj4xXSl8MCkpYnJlYWs7Zj13fX13aGlsZSgwKTtiPWIrMXwwfWZvcig7Oyl7aWYoIShwPTB8YVsoMHxhW3ArMTcyPj4yXSkrKGI8PDIpPj4yXSkpYnJlYWsgZTttPXArMTZ8MCxBPXArNDh8MCx3PTB8''@;'; put 'put ''YVsoMz09KDMmYVtwPj4yXXwwKT9wOkEpKzQwPj4yXTtkb3tpZigoMHxhWzE2NCsoMHxhW20+PjJdKT4+Ml0pPi0xKSgwfHcpIT0oMHxjKSYmKGY9MHxoRCh3LGwsZikpO2Vsc2UgaWYoKDB8aGsodykpIT0oMHxNKSl7aWYoMHxmJiYoKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwodz0z''@;'; put 'put ''JmFbcD4+Ml0pKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8dyk/cDpBKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhclsxNzArKDB8YVttPj4yXSk+PjFdKXwwKT49KCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8KEQ9MyZhW2Y+''@;'; put 'put ''PjJdKSk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfEQpP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhclsxNzArKDB8YVtmKzE2Pj4yXSk+PjFdKXwwKSlicmVhaztmPXB9fXdoaWxlKDApO2I9YisxfDAscD0wfGFbaz4+''@;'; put 'put ''Ml19fX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIGtOKGwsYyl7dmFyIE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MCxSPTAsRz0wO2ZvcihhWzI4MCsoZj0wfGFbKE09MTYrKGx8PTApfDApPj4yXSk+PjJdPWN8PTAsbD0xLEE9MDs7KXtpZighKG09MHxhWygwfGFbZisx''@;'; put 'put ''NzI+PjJdKSsoQTw8Mik+PjJdKSl7QT0wO2JyZWFrfSgwfGFbMTY0KyhwPTB8YVttKzE2Pj4yXSk+PjJdKTw9LTEmJihiPW0rNDh8MCwwPT0oMHxhWzI4MCsoaz0wfGFbMTYrKDB8YVsoMz09KDB8KHc9MyZhW20+PjJdKSk/bTpiKSs0MD4+Ml0pPj4yXSk+PjJdKSkmJigoMHxhWzIzMisoMHxh''@;'; put 'put ''WzE2KygwfGFbKDI9PSgwfHcpP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVtrKzIzMj4+Ml0pfDApPT0oMHxhcltwKzE3MD4+MV0pJiYoQ04obSksbD0oMHxrTigwfGFbKDM9PSgzJmFbbT4+Ml18MCk/bTpiKSs0MD4+Ml0sYykpK2x8MCxmPTB8YVtNPj4yXSksQT1BKzF8MH1m''@;'; put 'put ''b3IoO3A9MHxhWygwfGFbZisxODA+PjJdKSsoQTw8Mik+PjJdOykoMHxhWzE2NCsobT0wfGFbcCsxNj4+Ml0pPj4yXSk8PS0xJiYoUj1wKy00OHwwLDA9PSgwfGFbMjgwKyhHPTB8YVsxNisoMHxhWygyPT0oMHwoRD0zJmFbcD4+Ml0pKT9wOlIpKzQwPj4yXSk+PjJdKT4+Ml0pKSYmKCgwfGFb''@;'; put 'put ''RysyMzI+PjJdKS0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfEQpP3A6cCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKXwwKT09KDB8YXJbbSsxNzA+PjFdKSYmKENOKHApLGw9KDB8a04oMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6UikrNDA+PjJdLGMpKStsfDAsZj0wfGFbTT4+Ml0pLEE9''@;'; put 'put ''QSsxfDA7cmV0dXJuIDB8bH1mdW5jdGlvbiBQNyhsLGMsZil7dmFyIHA9MDtyZXR1cm4gMHxVVShsfD0wLGN8PTAsZnw9MCxwPShwPTB8TGkobCwxMDI1ODYpKT8wfGUzKHApOjMwKX1mdW5jdGlvbiB0UShsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgRCxHLEsscGUsbWUsbT0wLEE9MCx3''@;'; put 'put ''PTAsYj0wLGs9MCxNPTAsUj0wLGJlPTA7Zm9yKEs9b2Usb2U9b2UrMTZ8MCxHPUssYVs0NzI2NF09YVs0KygwfGFbOCsoMHxhWzY0KyhjfD0wKT4+Ml0pPj4yXSk+PjJdLG1lPStfWzMyKyhBPTB8YVtjKzE2Pj4yXSk+PjNdLHBlPStfW0ErNDA+PjNdLEY3KGYsMTAyNTk3LCtfW2wrMzUyPj4z''@;'; put 'put ''XSksRjcoZiwxMDI2MDQsLjAxMzg4ODg4ODg4ODg4ODg4OCptZSksRjcoZiwxMDI2MDQsLjAxMzg4ODg4ODg4ODg4ODg4OCpwZSksU04oZiksQT0wfEx0KGMpO0E7KTB8dWVbMTE4KygwfGFbKG09QSsxNnwwKT4+Ml0pPj4wXXx8KFczKGYsMTAyNjA2LDB8cEMoMHwkcihBKSkpLGFbRz4+Ml09''@;'; put 'put ''YVsoUj0xNisoMHxhW20+PjJdKXwwKT4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4yXSxhW0crOD4+Ml09YVtSKzg+PjJdLGFbRysxMj4+Ml09YVtSKzEyPj4yXSxNTihmLEcpLGw9MHx1ZVs4MisoMHxhWzEwNCsoMHxhW20+PjJdKT4+Ml0pPj4wXT8wfHBDKDB8Rm8oQSwwfGFbNDcxNTRdKSk6MHxF''@;'; put 'put ''TihsPTB8ZnIoQSksMHxhW2FbMTA0KygwfGFbbT4+Ml0pPj4yXT4+Ml0pLEY3KGYsMTAyNjA0LCtfWzMyKygwfGFbbT4+Ml0pPj4zXSksRjcoZiwxMDI2MDQsK19bNDArKDB8YVttPj4yXSk+PjNdKSxXMyhmLDEwMjYwNCxsKSxXMyhmLDEwMjYwNCwwfE9hKEEsMHxhWzQ3MTU3XSwxMTEwNjcp''@;'; put 'put ''KSxXMyhmLDEwMjYwNCwwfGFbYVs4KygwfGFbbT4+Ml0pPj4yXT4+Ml0pLFczKGYsMTAyNjA0LDB8T2EoQSwwfGFbNDcxNDhdLDEzNzMxNCkpLGw9MHxPYShBLDB8YVs0NzE0OV0sMTk1MDU5KSwwfHVlW2w+PjBdfHwobD0wfE9hKEEsMHxhWzQ3MTQ4XSwxMzQ4MDApKSxXMyhmLDEwMjYwNCxs''@;'; put 'put ''KSxTTihmKSksQT0wfHp0KGMsQSk7Zm9yKEQ9cDw8MjQ+PjI0PT0wLE09MHxMdChjKTtNOyl7Zm9yKGs9MHx5MChjLE0pO2s7KXtEPyhwPTE5NTA1OSx3PTE5NTA1OSk6KHc9MHxMaShrLDExMTQ1NSkscD0wfChwPTB8TGkoaywxMTE0NjQpKT9wOjE5NTA1OSx3PTB8dz93OjE5NTA1OSksYj0w''@;'; put 'put ''fGFbOCsobD0wfGFbKFI9aysxNnwwKT4+Ml0pPj4yXTtlOmRve2lmKGIpe2ZvcihBPTB8YVtiKzQ+PjJdLGw9MCxtPTA7ISgoMHxsKT49KDB8QSkpOyliZT0oMHxhWygwfGFbYj4+Ml0pKyg0OCpsfDApKzQ+PjJdKSttfDAsbD1sKzF8MCxtPWJlO2ZvcihXMyhmLDAsMTExNDUwKSxyUShmLDB8''@;'; put 'put ''YVsoMz09KDMmYVtrPj4yXXwwKT9rOmsrNDh8MCkrNDA+PjJdLHcpLHJRKGYsMHxhWygyPT0oMyZhW2s+PjJdfDApP2s6aystNDh8MCkrNDA+PjJdLHApLGlRKGYsbSkscD0wOzspe2lmKCgwfHApPj0oMHxhWzQrKG09MHxhWzgrKGw9MHxhW1I+PjJdKT4+Ml0pPj4yXSkpYnJlYWsgZTtmb3Io''@;'; put 'put ''bT0wfGFbKEE9MHxhW20+PjJdKSsoNDgqcHwwKT4+Ml0sQT0wfGFbQSsoNDgqcHwwKSs0Pj4yXSxsPTA7ISgoMHxsKT49KDB8QSkpOylhW0c+PjJdPWFbKGJlPW0rKGw8PDQpfDApPj4yXSxhW0crND4+Ml09YVtiZSs0Pj4yXSxhW0crOD4+Ml09YVtiZSs4Pj4yXSxhW0crMTI+PjJdPWFbYmUr''@;'; put 'put ''MTI+PjJdLE1OKGYsRyksbD1sKzF8MDtwPXArMXwwfX19d2hpbGUoMCk7MHxhW2wrOTY+PjJdJiYoVzMoZiwxMDI2MDQsMHxFTihiZT0wfGZyKDB8YVsoMz09KDMmYVtrPj4yXXwwKT9rOmsrNDh8MCkrNDA+PjJdKSwwfGFbYVs5NisoMHxhW1I+PjJdKT4+Ml0+PjJdKSksYVtHPj4yXT1hWyhi''@;'; put 'put ''ZT01NisoMHxhWzk2KygwfGFbUj4+Ml0pPj4yXSl8MCk+PjJdLGFbRys0Pj4yXT1hW2JlKzQ+PjJdLGFbRys4Pj4yXT1hW2JlKzg+PjJdLGFbRysxMj4+Ml09YVtiZSsxMj4+Ml0sTU4oZixHKSksVzMoZiwxMDI2MDQsMHxPYShrLDB8YVs0NzE4NV0sMTExMDY3KSksVzMoZiwxMDI2MDQsMHxP''@;'; put 'put ''YShrLDB8YVs0NzE3Nl0sMTM3MzE0KSksU04oZiksaz0wfGswKGMsayl9TT0wfHp0KGMsTSl9SDcoMTAyNjEyLGYpLG9lPUt9ZnVuY3Rpb24gRjcobCxjLGYpe3ZhciBwLG0sQTtsfD0wLGY9K2YsQT1vZSxvZT1vZSsxMDQwfDAsbT1BLHA9QSs4fDAsMHwoY3w9MCkmJkg3KGMsbCksX1ttPj4z''@;'; put 'put ''XT1mLGFvKHAsMTAyNjE4LG0pLEg3KHAsbCksb2U9QX1mdW5jdGlvbiBTTihsKXtsfD0wLHVlWzE5NDk1NV09MTAsUmlbMTI3JmFbNDcyNjRdXShsLDE5NDk1NSl9ZnVuY3Rpb24gVzMobCxjLGYpe2x8PTAsZnw9MCwwfChjfD0wKSYmSDcoYyxsKSxINyhmLGwpfWZ1bmN0aW9uIE1OKGwsYyl7''@;'; put 'put ''RjcobHw9MCwxMDI2MDQsLjAxMzg4ODg4ODg4ODg4ODg4OCorX1soY3w9MCk+PjNdKSxGNyhsLDEwMjYwNCwuMDEzODg4ODg4ODg4ODg4ODg4KitfW2MrOD4+M10pfWZ1bmN0aW9uIEVOKGwsYyl7dmFyIGY7cmV0dXJuIGM9MHxwQyhmPTB8dDAobHw9MCxjfD0wKSksJGkobCxmKSwwfGN9ZnVu''@;'; put 'put ''Y3Rpb24gclEobCxjLGYpe2Z8PTAsVzMobHw9MCwxMDI2MDQsYz0wfHVlWzExOCsoMHxhWzE2KyhjfD0wKT4+Ml0pPj4wXT8wfEVOKDB8ZnIoYyksMSsoMHxVcygwfCRyKGMpLDU4KSl8MCk6MHxwQygwfCRyKGMpKSksMHxmJiYwfHVlW2Y+PjBdJiZXMyhsLDEwNzk4NCwwfHBDKGYpKX1mdW5j''@;'; put 'put ''dGlvbiBpUShsLGMpe3ZhciBmLHAsbTtjfD0wLGY9b2Usb2U9b2UrMTA0MHwwLG09ZixwPWYrOHwwLEg3KDEwMjYwNCxsfD0wKSxhW20+PjJdPWMsYW8ocCwxMzczOTUsbSksSDcocCxsKSxvZT1mfWZ1bmN0aW9uIEg3KGwsYyl7UmlbMTI3JmFbNDcyNjRdXShjfD0wLGx8PTApfWZ1bmN0aW9u''@;'; put 'put ''IEx5KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEJlLEhlLGplLGV0LEdlLGx0LE10LGt0LGF0LEV0LFp0LHV0LHd0LHJuLHluLEZuLGxyLE5yLGtyLGNyLENyLHFyLExyLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLHJ0''@;'; put 'put ''PTA7Zm9yKExyPW9lLG9lPW9lKzIyODh8MCxDcj1McisyMDh8MCxjcj1McisxOTJ8MCxrcj1McisxNzZ8MCxOcj1McisxNjB8MCxscj1McisxNDR8MCxGbj1McisxMjh8MCxybj1McisxMTJ8MCx3dD1Mcis5NnwwLHV0PUxyKzgwfDAsWnQ9THIrNjR8MCxFdD1Mcis1NnwwLGF0PUxyKzQ4fDAs''@;'; put 'put ''cXI9THIrMzJ8MCx5bj1McisyNHwwLGt0PUxyLEdlPUxyKzEyNjR8MCxsdD1McisyMjR8MCxldD0oMHxhclsxNzgrKDB8YVsoTXQ9MTYrKGx8PTApfDApPj4yXSk+PjFdKT4yLFA1KDEpLG9zKGx0LDEwMjQsTHIrMjQwfDApLHoyKGwsMSwxMDI2MjMsMTk1MDU5KSx6MihsLDEsMTAyNjI3LDE5''@;'; put 'put ''NTA1OSksYVs0NzE0Nl09MHx6MihsLDEsMTQxMTE2LDE5NTA1OSksYVs0NzE0NV09MHx6MihsLDEsMTQxMDQ4LDE5NTA1OSksejIobCwyLDEwMjYyMywxOTUwNTkpLDE2JihwPTB8dWVbMTEzKygwfGFbTXQ+PjJdKT4+MF0pJiYoejIobCwxLDEwMjYzMywxOTUwNTkpLHA9MHx1ZVsxMTMrKDB8''@;'; put 'put ''YVtNdD4+Ml0pPj4wXSksMSZwJiYoejIobCwyLDEwMjYzNywxOTUwNTkpLHA9MHx1ZVsxMTMrKDB8YVtNdD4+Ml0pPj4wXSksMzImcCYmKHoyKGwsMiwxMDI2MzMsMTk1MDU5KSxwPTB8dWVbMTEzKygwfGFbTXQ+PjJdKT4+MF0pLDImcCYmKHoyKGwsMiwxMDI2NDAsMTk1MDU5KSxwPTB8dWVb''@;'; put 'put ''MTEzKygwfGFbTXQ+PjJdKT4+MF0pLDQmcCYmKHoyKGwsMiwxMDI2NDgsMTk1MDU5KSxwPTB8dWVbMTEzKygwfGFbTXQ+PjJdKT4+MF0pLDgmcD8oT2U9MHx6MihsLDAsMTAyNjM3LDE5NTA1OSksYmU9MHx6MihsLDAsMTAyNjU2LDE5NTA1OSksbWU9MHx6MihsLDAsMTAyNjYzLDE5NTA1OSkp''@;'; put 'put ''OihtZT0wLGJlPTAsT2U9MCksQmU9MHx6MihsLDAsMTAyNjcxLDE5NTA1OSksSGU9bHQrNHwwLGplPWx0Kzh8MCxwZT0wLHA9MCxMZT0wfEx0KGwpO0xlOyl7aWYoaz0rX1sxNisoQT0wfGFbKEs9TGUrMTZ8MCk+PjJdKT4+M10sbT0hMCxldCl7Zm9yKHc9bT8rX1tBKzI0Pj4zXTorX1syMzMw''@;'; put 'put ''MV0tK19bQSsyND4+M10sRD03MiorX1sxNisoMHxhW0ErMTMyPj4yXSk+PjNdLF9ba3Q+PjNdPWssX1trdCs4Pj4zXT13LF9ba3QrMTY+PjNdPUQsYW8oR2UsMTAyNjc0LGt0KSxjbyhsdCxHZSksbT0zOyEoKDB8bSk+PSgwfGFyWzE3OCsoMHxhW010Pj4yXSk+PjFdKSk7KV9beW4+PjNdPTcy''@;'; put 'put ''KitfWygwfGFbMTMyKygwfGFbSz4+Ml0pPj4yXSkrKG08PDMpPj4zXSxhbyhHZSwxMDI2ODkseW4pLGNvKGx0LEdlKSxtPW0rMXwwOyhtPTB8YVtIZT4+Ml0pPj4+MD49KDB8YVtqZT4+Ml0pPj4+MCYmKEcwKGx0LDEpLG09MHxhW0hlPj4yXSksdWVbbT4+MF09MCxhW0hlPj4yXT1HPTB8YVts''@;'; put 'put ''dD4+Ml0sTWMoTGUsMTAyNjIzLEcpLEc9TGV9ZWxzZSB3PW0/K19bQSsyND4+M106K19bMjMzMDFdLStfW0ErMjQ+PjNdLF9bcXI+PjNdPWssX1txcis4Pj4zXT13LGFvKEdlLDEwMjY5NSxxciksTWMoTGUsMTAyNjIzLEdlKSxHPUxlO2lmKF9bYXQ+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgq''@;'; put 'put ''K19bODArKDB8YVtLPj4yXSk+PjNdLGFvKEdlLDEwMjYxOCxhdCksQmwoRywwfGFbNDcxNDVdLEdlKSxfW0V0Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KigrX1s5NisobT0wfGFbSz4+Ml0pPj4zXSsgK19bbSs4OD4+M10pLGFvKEdlLDEwMjYxOCxFdCksQmwoRywwfGFbNDcxNDZdLEdlKSww''@;'; put 'put ''IT0oMHwoQT0wfGFbMTA4KyhtPTB8YVtLPj4yXSk+PjJdKSkmJjAhPSgwfHVlW0ErODE+PjBdKSYmKEQ9K19bQSs2ND4+M10sX1tadD4+M109K19bQSs1Nj4+M10sX1tadCs4Pj4zXT1ELGFvKEdlLDEwMjY5NSxadCksTWMoRywxMDI2MzMsR2UpLG09MHxhW0s+PjJdKSwwfFppKDB8YVthW20r''@;'; put 'put ''OD4+Ml0+PjJdLDEwNjIyMCkpe2lmKDB8YVs0NzE3MF0mJigwfEVRKExlKSk8PDI0Pj4yNCl7Zm9yKCgwfChtPTB8YVsoUj04KyhBPTB8YVsxMisoMHxhW0s+PjJdKT4+Ml0pfDApPj4yXSkpPDMmJihtPSgwfChtPShtPTB8TGkoRywxMDI3MDUpKT8wfGUzKG0pOjgpKTwzPzg6bSksTT1BKzQ0''@;'; put 'put ''fDAsRD0xLysoMHxtKSxiPTA7ISgoMHxiKT49KDB8bSkpOykoMHxiKT4wJiYoKEE9MHxhW0hlPj4yXSk+Pj4wPj0oMHxhW2plPj4yXSk+Pj4wJiYoRzAobHQsMSksQT0wfGFbSGU+PjJdKSxhW0hlPj4yXT1BKzEsdWVbQT4+MF09MzIpLCgwfGFbUj4+Ml0pPjI/KHc9LjAxMzg4ODg4ODg4ODg4''@;'; put 'put ''ODg4OCorX1soQT0wfGFbTT4+Ml0pKyhiPDw0KSs4Pj4zXSxfW3V0Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW0ErKGI8PDQpPj4zXSxfW3V0Kzg+PjNdPXcsYW8oR2UsMTAyNzE4LHV0KSk6KGs9LjUqK19bMzIrKEE9MHxhW0s+PjJdKT4+M10qK2xhKCsodz1EKisoMHxiKSo2LjI4MzE4''@;'; put 'put ''NTMwNzE3OTU4NikpLHc9LjUqK19bQSs0MD4+M10qK0lhKCt3KSxfW3d0Pj4zXT1rLF9bd3QrOD4+M109dyxhbyhHZSwxMDI3MTgsd3QpKSxjbyhsdCxHZSksYj1iKzF8MDtBPTB8YVs0NzE3MF0sKG09MHxhW0hlPj4yXSk+Pj4wPj0oMHxhW2plPj4yXSk+Pj4wJiYoRzAobHQsMSksbT0wfGFb''@;'; put 'put ''SGU+PjJdKSx1ZVttPj4wXT0wLGFbSGU+PjJdPUs9MHxhW2x0Pj4yXSxCbChHLEEsSyl9fWVsc2Ugb1EoTGUsMHxhW20rMTI+PjJdLGx0KSx6QShsdCksKG09MHxhW0hlPj4yXSk+Pj4wPj0oMHxhW2plPj4yXSk+Pj4wJiYoRzAobHQsMSksbT0wfGFbSGU+PjJdKSx1ZVttPj4wXT0wLGFbSGU+''@;'; put 'put ''PjJdPUs9MHxhW2x0Pj4yXSxNYyhHLDEwMjYyNyxLKTtlOmRve2lmKCgwfGFbNDcxMzhdKT4wKWZvcihLPTB8eTAobCxMZSksbT1wZTs7KXtpZighSylicmVhayBlO0E9MHxhWyhHPUsrMTZ8MCk+PjJdO2Rve2lmKDYhPSgwfHVlW0ErMTEyPj4wXSkmJjAhPSgwfChydD0wfGFbQSs4Pj4yXSkp''@;'; put 'put ''KXtmb3IoUj0wLEE9cnQ7ISgoMHxSKT49KDB8YVtBKzQ+PjJdKSk7KXtmb3IoKDB8Uik+MCYmKChBPTB8YVtIZT4+Ml0pPj4+MD49KDB8YVtqZT4+Ml0pPj4+MCYmKEcwKGx0LDEpLEE9MHxhW0hlPj4yXSksYVtIZT4+Ml09QSsxLHVlW0E+PjBdPTU5LEE9MHxhWzgrKDB8YVtHPj4yXSk+PjJd''@;'; put 'put ''KSwwfGFbKEE9MHxhW0E+PjJdKSsoNDgqUnwwKSs4Pj4yXSYmKHc9K19bQSsoNDgqUnwwKSsyND4+M10sX1tybj4+M109K19bQSsoNDgqUnwwKSsxNj4+M10sX1tybis4Pj4zXT13LGFvKEdlLDEwMjcyOCxybiksY28obHQsR2UpLHA9MSxBPTB8YVthWzgrKDB8YVtHPj4yXSk+PjJdPj4yXSks''@;'; put 'put ''MHxhW0ErKDQ4KlJ8MCkrMTI+PjJdJiYodz0rX1tBKyg0OCpSfDApKzQwPj4zXSxfW0ZuPj4zXT0rX1tBKyg0OCpSfDApKzMyPj4zXSxfW0ZuKzg+PjNdPXcsYW8oR2UsMTAyNzQxLEZuKSxjbyhsdCxHZSksbT0xKSxNPTA7ISgoMHxNKT49KDB8YVsoYj0wfGFbKEE9MHxhWzgrKDB8YVtHPj4y''@;'; put 'put ''XSk+PjJdKT4+Ml0pKyg0OCpSfDApKzQ+PjJdKSk7KSgwfE0pPjA/KChBPTB8YVtIZT4+Ml0pPj4+MD49KDB8YVtqZT4+Ml0pPj4+MCYmKEcwKGx0LDEpLEE9MHxhW0hlPj4yXSksYVtIZT4+Ml09QSsxLHVlW0E+PjBdPTMyLEE9MHxhW2FbOCsoMHxhW0c+PjJdKT4+Ml0+PjJdKTpBPWIsRD0r''@;'; put 'put ''X1socGU9MHxhW0ErKDQ4KlJ8MCk+PjJdKSsoTTw8NCkrOD4+M10sX1tscj4+M109K19bcGUrKE08PDQpPj4zXSxfW2xyKzg+PjNdPUQsYW8oR2UsMTAyNjk1LGxyKSxjbyhsdCxHZSksTT1NKzF8MDtSPVIrMXwwfShBPTB8YVtIZT4+Ml0pPj4+MD49KDB8YVtqZT4+Ml0pPj4+MCYmKEcwKGx0''@;'; put 'put ''LDEpLEE9MHxhW0hlPj4yXSksdWVbQT4+MF09MCxhW0hlPj4yXT1BPTB8YVtsdD4+Ml0sTWMoSywxMDI2MjMsQSksKGI9MHxhWzk2KyhBPTB8YVtHPj4yXSk+PjJdKSYmKEQ9K19bYis2ND4+M10sX1tOcj4+M109K19bYis1Nj4+M10sX1tOcis4Pj4zXT1ELGFvKEdlLDEwMjY5NSxOciksTWMo''@;'; put 'put ''SywxMDI2MzcsR2UpLEE9MHxhW0c+PjJdKSxiPTB8YVtBKzEwOD4+Ml07ZG97aWYoYil7aWYoISgwfHVlW2IrODE+PjBdKSlicmVhaztEPStfW2IrNjQ+PjNdLF9ba3I+PjNdPStfW2IrNTY+PjNdLF9ba3IrOD4+M109RCxhbyhHZSwxMDI2OTUsa3IpLE1jKEssMTAyNjMzLEdlKSxBPTB8YVtH''@;'; put 'put ''Pj4yXX19d2hpbGUoMCk7aWYoKGI9MHxhW0ErMTAwPj4yXSkmJihEPStfW2IrNjQ+PjNdLF9bY3I+PjNdPStfW2IrNTY+PjNdLF9bY3IrOD4+M109RCxhbyhHZSwxMDI2OTUsY3IpLE1jKEssMTAyNjQwLEdlKSxBPTB8YVtHPj4yXSksIShBPTB8YVtBKzEwND4+Ml0pKWJyZWFrO0Q9K19bQSs2''@;'; put 'put ''ND4+M10sX1tDcj4+M109K19bQSs1Nj4+M10sX1tDcis4Pj4zXT1ELGFvKEdlLDEwMjY5NSxDciksTWMoSywxMDI2NDgsR2UpfX13aGlsZSgwKTtLPTB8azAobCxLKX1lbHNlIG09cGV9d2hpbGUoMCk7cGU9bSxMZT0wfHp0KGwsTGUpfU95KGwsQmUsT2UsYmUsbWUpLGsyKGx0KSwxJlR0WzEz''@;'; put 'put ''NisoMHxhW010Pj4yXSk+PjFdJiZsVihsKSxhW2M+PjJdPXAsYVtmPj4yXT1wZSxQNSgwKSxvZT1Mcn1mdW5jdGlvbiBvUShsLGMsZil7bHw9MCxmfD0wO3ZhciBiLGssTSxELHA9MCxtPTAsQT0wLHc9MCxSPTA7Zm9yKEQ9b2Usb2U9b2UrMTA1NnwwLGs9RCxiPUQrMzJ8MCwwfGFbKE09NDgr''@;'; put 'put ''KGN8PTApfDApPj4yXXx8KG09KEE9K19bMjQrKHA9MHxhW2wrMTY+PjJdKT4+M10pKyArX1tjKzI0Pj4zXSxBKz0rX1tjKzQwPj4zXSxSPSh3PStfW3ArMTY+PjNdKSsgK19bYyszMj4+M10sX1trPj4zXT13KyArX1tjKzE2Pj4zXSxfW2srOD4+M109bSxfW2srMTY+PjNdPVIsX1trKzI0Pj4z''@;'; put 'put ''XT1BLGFvKGIsMTAyNzc5LGspLGNvKGYsYikpLGM9Yys1NnwwLHA9MDshKCgwfHApPj0oMHxhW00+PjJdKSk7KW9RKGwsMHxhWygwfGFbYz4+Ml0pKyhwPDwyKT4+Ml0sZikscD1wKzF8MDtvZT1EfWZ1bmN0aW9uIE95KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixrLE0s''@;'; put 'put ''RCxSLEcsSyxwZSxBPTAsdz0wLG1lPTA7Zm9yKHBlPW9lLG9lPW9lKzEwODh8MCxEPXBlKzU2fDAsRz1wZSs0OHwwLFI9cGUrMzJ8MCxNPXBlKzY0fDAsYj0rX1syNCsoQT0wfGFbKEs9MTYrKGx8PTApfDApPj4yXSk+PjNdLGs9K19bQSs0MD4+M10sbWU9K19bQSszMj4+M10sX1sodz1wZSk+''@;'; put 'put ''PjNdPStfW0ErMTY+PjNdLF9bdys4Pj4zXT1iLF9bdysxNj4+M109bWUsX1t3KzI0Pj4zXT1rLGFvKE0sMTAyNzU0LHcpLEJsKGwsYyxNKSwwIT0oMHwoQT0wfGFbMTIrKDB8YVtLPj4yXSk+PjJdKSkmJjAhPSgwfHVlW2FbQT4+Ml0+PjBdKSYmKG1lPStfW0ErNjQ+PjNdLF9bUj4+M109K19b''@;'; put 'put ''QSs1Nj4+M10sX1tSKzg+PjNdPW1lLGFvKE0sMTAyNjk1LFIpLEJsKGwsZixNKSxtZT0rX1szMisoQT0wfGFbMTIrKDB8YVtLPj4yXSk+PjJdKT4+M10sX1tHPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW0ErMjQ+PjNdLGFvKE0sMTAyNzc0LEcpLEJsKGwscCxNKSxfW0Q+PjNdPS4wMTM4''@;'; put 'put ''ODg4ODg4ODg4ODg4ODgqbWUsYW8oTSwxMDI3NzQsRCksQmwobCxtLE0pKSxBPTE7ISgoMHxBKT4oMHxhWzE4MCsodz0wfGFbSz4+Ml0pPj4yXSkpOylPeSgwfGFbKDB8YVt3KzE4ND4+Ml0pKyhBPDwyKT4+Ml0sYyxmLHAsbSksQT1BKzF8MDtvZT1wZX1mdW5jdGlvbiBhUShsKXt2YXIgYztj''@;'; put 'put ''PW9lLG9lPW9lKzE2fDAsTHkobHw9MCxjLGMrNHwwKSxvZT1jfWZ1bmN0aW9uIFJ5KCl7cmV0dXJuIDB8QXMoMjA3NDAsMHxhWzQ1ODFdKX1mdW5jdGlvbiBCeShsKXtpcyhsfD0wKX1mdW5jdGlvbiB4TihsLGMpe3ZhciBmLHA7bHw9MCxmPW9lLG9lPW9lKzE2fDAsYVsocD1mKT4+Ml09YVso''@;'; put 'put ''Y3w9MCk+PjJdLGFbcCs0Pj4yXT1hW2MrND4+Ml0sYz0wfGxRKHApLCgwfG1pWzYzJmFbbD4+Ml1dKGwsYywxKSkhPSgwfGMpJiZIdChjKSxvZT1mfWZ1bmN0aW9uIGxRKGwpe3ZhciBjLGYscDtyZXR1cm4gbHw9MCxjPTB8bXIoMTYpLGY9MHxhWyhwPWwpKzQ+PjJdLGFbKGw9Yys4fDApPj4y''@;'; put 'put ''XT1hW3A+PjJdLGFbbCs0Pj4yXT1mLDB8Y31mdW5jdGlvbiBscChsLGMsZil7dmFyIHAsbSxBO2x8PTAsZnw9MCxwPW9lLG9lPW9lKzE2fDAsbT1wKzh8MCxhWyhBPXApPj4yXT1jfD0wLGFbQSs0Pj4yXT1mLGFbbT4+Ml09YVtBPj4yXSxhW20rND4+Ml09YVtBKzQ+PjJdLGM9MHxsUShtKSwo''@;'; put 'put ''MHxtaVs2MyZhW2w+PjJdXShsLGMsMSkpIT0oMHxjKSYmSHQoYyksb2U9cH1mdW5jdGlvbiBzUShsLGMpe3ZhciBmLHAsbSxBO3JldHVybiBsfD0wLGY9b2Usb2U9b2UrMTZ8MCxtPTB8YVs0KyhBPWN8PTApPj4yXSxhWyhjPShwPWYpKzh8MCk+PjJdPWFbQT4+Ml0sYVtjKzQ+PjJdPW0sYz0w''@;'; put 'put ''IT0oMHxtaVs2MyZhW2w+PjJdXShsLHAsNCkpJjEsb2U9ZiwwfGN9ZnVuY3Rpb24gdVEobCxjLGYpe3ZhciBwLG07cmV0dXJuIGx8PTAsZnw9MCxwPW9lLG9lPW9lKzE2fDAsYVsobT1wKSs4Pj4yXT1jfD0wLGFbbSsxMj4+Ml09ZixmPTAhPSgwfG1pWzYzJmFbbD4+Ml1dKGwsbSw0KSkmMSxv''@;'; put 'put ''ZT1wLDB8Zn1mdW5jdGlvbiBjUShsKXtyZXR1cm4gMHxQdShsfD0wKX1mdW5jdGlvbiBmUShsKXt2YXIgZixjPTAscD0wLG09MCxBPTA7Zm9yKGM9Zj0wfG1yKCgwfFB1KGx8PTApKTw8MyksbD0wfG8wKGwpO2w7KW09MHxhWzQrKEE9bCs4fDApPj4yXSxhWyhwPWMpPj4yXT1hW0E+PjJdLGFb''@;'; put 'put ''cCs0Pj4yXT1tLGM9Yys4fDAsbD0wfGFbbD4+Ml07cmV0dXJuIDB8Zn1mdW5jdGlvbiBoYWUobCl7bWlbNjMmYVsobHw9MCk+PjJdXShsLDAsNjQpfWZ1bmN0aW9uIGhRKGwsYyl7dmFyIHAsbSxBLHcsYixrLE0sUixLLHBlLG1lLGJlLGY9MCxEPTAsRz0wO2ZvcihiZT1vZSxvZT1vZSsxNjB8''@;'; put 'put ''MCxLPWJlKzE0NHwwLGY9YmUrNDh8MCxiPWJlKzEyOHwwLGs9YmUrMTEyfDAsTT1iZSs5NnwwLEQ9YmUrODB8MCxSPWJlKzMyfDAsRz1iZSsxNnwwLHBlPWJlLHA9K19bMTYrKGw9MHxhWyhtZT0xNisobHw9MCl8MCk+PjJdKT4+M10sbT0rX1tsKzI0Pj4zXSxBPStfW2wrMzI+PjNdLHc9K19b''@;'; put 'put ''bCs0MD4+M10sKChjfD0wKS0xfDApPj4+MDwyPyhVNihiLHAsdyksYVtLPj4yXT1hW2I+PjJdLGFbSys0Pj4yXT1hW2IrND4+Ml0sYVtLKzg+PjJdPWFbYis4Pj4yXSxhW0srMTI+PjJdPWFbYisxMj4+Ml0sbGgoZixLKSxHPWYrMTZ8MCxVNihrLEEsbSksYVtLPj4yXT1hW2s+PjJdLGFbSys0''@;'; put 'put ''Pj4yXT1hW2srND4+Ml0sYVtLKzg+PjJdPWFbays4Pj4yXSxhW0srMTI+PjJdPWFbaysxMj4+Ml0sbGgoTSxLKSxhW0c+PjJdPWFbTT4+Ml0sYVtHKzQ+PjJdPWFbTSs0Pj4yXSxhW0crOD4+Ml09YVtNKzg+PjJdLGFbRysxMj4+Ml09YVtNKzEyPj4yXSk6KFU2KEQscCxtKSxhW0s+PjJdPWFb''@;'; put 'put ''RD4+Ml0sYVtLKzQ+PjJdPWFbRCs0Pj4yXSxhW0srOD4+Ml09YVtEKzg+PjJdLGFbSysxMj4+Ml09YVtEKzEyPj4yXSxsaChmLEspLEQ9ZisxNnwwLFU2KFIsQSx3KSxhW0s+PjJdPWFbUj4+Ml0sYVtLKzQ+PjJdPWFbUis0Pj4yXSxhW0srOD4+Ml09YVtSKzg+PjJdLGFbSysxMj4+Ml09YVtS''@;'; put 'put ''KzEyPj4yXSxsaChHLEspLGFbRD4+Ml09YVtHPj4yXSxhW0QrND4+Ml09YVtHKzQ+PjJdLGFbRCs4Pj4yXT1hW0crOD4+Ml0sYVtEKzEyPj4yXT1hW0crMTI+PjJdKSxhWyhsPTE2KygwfGFbbWU+PjJdKXwwKT4+Ml09YVtmPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2Yr''@;'; put 'put ''OD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdLGFbbCsxNj4+Ml09YVtmKzE2Pj4yXSxhW2wrMjA+PjJdPWFbZisyMD4+Ml0sYVtsKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbbCsyOD4+Ml09YVtmKzI4Pj4yXSwobD0wfGFbMTIrKDB8YVttZT4+Ml0pPj4yXSkmJihhW0s+PjJdPWFbKGw9bCs1Nnww''@;'; put 'put ''KT4+Ml0sYVtLKzQ+PjJdPWFbbCs0Pj4yXSxhW0srOD4+Ml09YVtsKzg+PjJdLGFbSysxMj4+Ml09YVtsKzEyPj4yXSxsaChwZSxLKSxhW2w+PjJdPWFbcGU+PjJdLGFbbCs0Pj4yXT1hW3BlKzQ+PjJdLGFbbCs4Pj4yXT1hW3BlKzg+PjJdLGFbbCsxMj4+Ml09YVtwZSsxMj4+Ml0pLGw9MTsh''@;'; put 'put ''KCgwfGwpPigwfGFbMTgwKyhmPTB8YVttZT4+Ml0pPj4yXSkpOyloUSgwfGFbKDB8YVtmKzE4ND4+Ml0pKyhsPDwyKT4+Ml0sYyksbD1sKzF8MDtvZT1iZX1mdW5jdGlvbiBVNihsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlvbiBsaChsLGMpe2x8PTA7''@;'; put 'put ''dmFyIGYsbSxBLHA9MDtmPW9lLG9lPW9lKzMyfDAscD1mLG09OTAqKDB8YVs0NzI2NV0pfDAsYVsoQT1mKzE2fDApPj4yXT1hWyhjfD0wKT4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4yXSxONShwLEEsbSksYVtjPj4yXT1h''@;'; put 'put ''W3A+PjJdLGFbYys0Pj4yXT1hW3ArND4+Ml0sYVtjKzg+PjJdPWFbcCs4Pj4yXSxhW2MrMTI+PjJdPWFbcCsxMj4+Ml0sX1tjPj4zXT0rX1tjPj4zXS0rX1syMzMwM10sX1socD1jKzh8MCk+PjNdPStfW3A+PjNdLStfWzIzMzA0XSxhW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4y''@;'; put 'put ''XSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXSxvZT1mfWZ1bmN0aW9uIGREKGwsYyl7bHw9MCxjfD0wO3ZhciBELFIsSyxwZSxtZSxMZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEc9MDtMZT1vZSxvZT1vZSsxMTY4fDAscGU9TGUrMTQ0fDAsRD1M''@;'; put 'put ''ZSszMnwwLFI9TGUrMTZ8MCxHPUxlLGFbKG1lPUxlKzQ4fDApPj4yXT0wLGFbbWUrND4+Ml09MCxhW21lKzg+PjJdPTAsYVttZSsxMj4+Ml09MCxhWzQ3MjY1XT0zJihrPTB8YVsxMTYrKDB8YVsoSz1sKzE2fDApPj4yXSk+PjJdKSx1ZVsxOTQ5NTddPWsmPTEsazw8MjQ+PjI0P2RRKGwpOnBR''@;'; put 'put ''KGwpLGZ1bmN0aW9uIGdhZShsKXt2YXIgRCxPZSxMZSxCZSxIZSxqZSxldCxydCxHZSxsdCxNdCxrdCxhdCxFdCxadCx1dCx3dCxybixscixrcixjcixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCx5bj0wLEZuPTA7aWYoY3I9''@;'; put 'put ''b2Usb2U9b2UrNTQ0fDAsd3Q9Y3IrNTA0fDAsa3I9Y3IrNDE2fDAsdXQ9Y3IrMzUyfDAsWnQ9Y3IrMzEyfDAsRXQ9Y3IrMjg4fDAsYXQ9Y3IrMjQ4fDAscm49Y3IrMjAwfDAsZXQ9Y3IrMTUyfDAsRm49Y3IrOTZ8MCxEPWNyKzQ4OHwwLHJ0PWNyKzQ1NnwwLEdlPWNyKzQyNHwwLGx0PWNyKzM4''@;'; put 'put ''NHwwLE10PWNyKzM2MHwwLGt0PWNyKzMyMHwwLE9lPWNyKzI5NnwwLExlPWNyKzI1NnwwLEJlPWNyKzIzMnwwLEhlPWNyKzE2OHwwLGplPWNyKzEzNnwwLGM9Y3IrNTZ8MCx5bj1jcisxNnwwLGxyPWNyLGY9MTQmVHRbMTM2KyhtZT0wfGFbKE09MTYrKGx8PTApfDApPj4yXSk+PjFdLCEoMD09''@;'; put 'put ''KDU0JihtZT0wfGJ0W21lKzExMz4+MF0pfDApJiYwPT0oMSZtZXwwKXwwIT0oMHxhWzQ3MTM5XSkpKXtmb3IobWU9Zjw8MTY+PjE2PT0wLGs9MHxMdChsKSxwPTAsQT0wLG09MDtrOyl7Zj0wfGFbMTA4KygwfGFbaysxNj4+Ml0pPj4yXTtkb3tpZihmKXtpZigwfHVlW2YrODE+PjBdKXtwPXAr''@;'; put 'put ''MXwwO2JyZWFrfW09bSsxfDA7YnJlYWt9fXdoaWxlKDApO2ZvcihiPTB8eTAobCxrKSxmPUE7Yjspe0E9MHxhWzEwOCsodz0wfGFbYisxNj4+Ml0pPj4yXTtkb3tpZihBKXtpZigwfHVlW0ErODE+PjBdKXtwPXArMXwwO2JyZWFrfW1lfHwoZj1mKygwIT0oMHxhW3crOD4+Ml0pJjEpfDApfX13''@;'; put 'put ''aGlsZSgwKTtBPTB8YVt3KzEwMD4+Ml07ZG97aWYoQSl7aWYoMHx1ZVtBKzgxPj4wXSl7cD1wKzF8MDticmVha31tZXx8KGY9ZisoMCE9KDB8YVt3Kzg+PjJdKSYxKXwwKX19d2hpbGUoMCk7QT0wfGFbdysxMDQ+PjJdO2Rve2lmKEEpe2lmKDB8dWVbQSs4MT4+MF0pe3A9cCsxfDA7YnJlYWt9''@;'; put 'put ''bWV8fChmPWYrKDAhPSgwfGFbdys4Pj4yXSkmMSl8MCl9fXdoaWxlKDApO0E9MHxhW3crOTY+PjJdO2Rve2lmKEEpe2lmKDB8dWVbQSs4MT4+MF0pe3A9cCsxfDA7YnJlYWt9bWV8fChmPWYrKDAhPSgwfGFbdys4Pj4yXSkmMSl8MCl9fXdoaWxlKDApO2I9MHxrMChsLGIpfWs9MHx6dChsLGsp''@;'; put 'put ''LEE9Zn1pZihNPTgmdWVbMTEzKygwfGFbTT4+Ml0pPj4wXT8wfGdRKGwpOjAsMHwocGU9QSttfDApKXtmb3IoRz0wfG1yKDQwKihSPXArQStNKygwfE5vKGwpKXwwKXwwKSxLPTB8bXIoNDAqcGV8MCksVTYocm4sMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3KSxmPXJuKzE2fDAsVTYoRCwtMjE0NzQ4''@;'; put 'put ''MzY0NywtMjE0NzQ4MzY0NyksYVtmPj4yXT1hW0Q+PjJdLGFbZis0Pj4yXT1hW0QrND4+Ml0sYVtmKzg+PjJdPWFbRCs4Pj4yXSxhW2YrMTI+PjJdPWFbRCsxMj4+Ml0sZj1LLG09RyxrPTB8THQobCk7azspe2Fbd3Q+PjJdPWFbcm4+PjJdLGFbd3QrND4+Ml09YVtybis0Pj4yXSxhW3d0Kzg+''@;'; put 'put ''PjJdPWFbcm4rOD4+Ml0sYVt3dCsxMj4+Ml09YVtybisxMj4+Ml0sYVt3dCsxNj4+Ml09YVtybisxNj4+Ml0sYVt3dCsyMD4+Ml09YVtybisyMD4+Ml0sYVt3dCsyND4+Ml09YVtybisyND4+Ml0sYVt3dCsyOD4+Ml09YVtybisyOD4+Ml0scGsocnQsayxtLHd0KSxhW3JuPj4yXT1hW3J0Pj4y''@;'; put 'put ''XSxhW3JuKzQ+PjJdPWFbcnQrND4+Ml0sYVtybis4Pj4yXT1hW3J0Kzg+PjJdLGFbcm4rMTI+PjJdPWFbcnQrMTI+PjJdLGFbcm4rMTY+PjJdPWFbcnQrMTY+PjJdLGFbcm4rMjA+PjJdPWFbcnQrMjA+PjJdLGFbcm4rMjQ+PjJdPWFbcnQrMjQ+PjJdLGFbcm4rMjg+PjJdPWFbcnQrMjg+PjJd''@;'; put 'put ''LHA9MHxhWzEwOCsoMHxhW2srMTY+PjJdKT4+Ml07ZG97aWYocCl7aWYoMHx1ZVtwKzgxPj4wXSl7bT1tKzQwfDAsYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxhW3d0KzE2Pj4yXT1h''@;'; put 'put ''W3JuKzE2Pj4yXSxhW3d0KzIwPj4yXT1hW3JuKzIwPj4yXSxhW3d0KzI0Pj4yXT1hW3JuKzI0Pj4yXSxhW3d0KzI4Pj4yXT1hW3JuKzI4Pj4yXSxQeShHZSxwLG0sd3QpLGFbcm4+PjJdPWFbR2U+PjJdLGFbcm4rND4+Ml09YVtHZSs0Pj4yXSxhW3JuKzg+PjJdPWFbR2UrOD4+Ml0sYVtybisx''@;'; put 'put ''Mj4+Ml09YVtHZSsxMj4+Ml0sYVtybisxNj4+Ml09YVtHZSsxNj4+Ml0sYVtybisyMD4+Ml09YVtHZSsyMD4+Ml0sYVtybisyND4+Ml09YVtHZSsyND4+Ml0sYVtybisyOD4+Ml09YVtHZSsyOD4+Ml07YnJlYWt9YVt3dD4+Ml09YVtldD4+Ml0sYVt3dCs0Pj4yXT1hW2V0KzQ+PjJdLGFbd3Qr''@;'; put 'put ''OD4+Ml09YVtldCs4Pj4yXSxhW3d0KzEyPj4yXT1hW2V0KzEyPj4yXSxRNihwLG0sZiwwLHd0KSxmPWYrNDB8MDticmVha319d2hpbGUoMCk7Zm9yKGI9MHx5MChsLGspLG09bSs0MHwwO2I7KXtBPTB8YVs5NisocD0wfGFbKHc9YisxNnwwKT4+Ml0pPj4yXTtlOmRve2lmKEEpe2Rve2lmKCEo''@;'; put 'put ''MHx1ZVtBKzgxPj4wXSkpe2lmKCFtZSYmMHxhW3ArOD4+Ml0pe1pOKE10LGwsYiksYVt3dD4+Ml09YVtNdD4+Ml0sYVt3dCs0Pj4yXT1hW010KzQ+PjJdLGFbd3QrOD4+Ml09YVtNdCs4Pj4yXSxhW3d0KzEyPj4yXT1hW010KzEyPj4yXSxRNihBLG0sZiwxLHd0KSxmPWYrNDB8MDticmVha31h''@;'; put 'put ''W2F0Pj4yXT1hW0E+PjJdLFhyKDAsMTAzODI3LGF0KTticmVhayBlfWFbd3Q+PjJdPWFbcm4+PjJdLGFbd3QrND4+Ml09YVtybis0Pj4yXSxhW3d0Kzg+PjJdPWFbcm4rOD4+Ml0sYVt3dCsxMj4+Ml09YVtybisxMj4+Ml0sYVt3dCsxNj4+Ml09YVtybisxNj4+Ml0sYVt3dCsyMD4+Ml09YVty''@;'; put 'put ''bisyMD4+Ml0sYVt3dCsyND4+Ml09YVtybisyND4+Ml0sYVt3dCsyOD4+Ml09YVtybisyOD4+Ml0sUHkobHQsQSxtLHd0KSxhW3JuPj4yXT1hW2x0Pj4yXSxhW3JuKzQ+PjJdPWFbbHQrND4+Ml0sYVtybis4Pj4yXT1hW2x0Kzg+PjJdLGFbcm4rMTI+PjJdPWFbbHQrMTI+PjJdLGFbcm4rMTY+''@;'; put 'put ''PjJdPWFbbHQrMTY+PjJdLGFbcm4rMjA+PjJdPWFbbHQrMjA+PjJdLGFbcm4rMjQ+PjJdPWFbbHQrMjQ+PjJdLGFbcm4rMjg+PjJdPWFbbHQrMjg+PjJdfXdoaWxlKDApO209bSs0MHwwLHA9MHxhW3c+PjJdLGJlPTUyfWVsc2UgYmU9NTJ9d2hpbGUoMCk7ZTpkb3tpZig1Mj09KDB8YmUpKXtp''@;'; put 'put ''ZihiZT0wLEE9MHxhW3ArMTA0Pj4yXSl7ZG97aWYoISgwfHVlW0ErODE+PjBdKSl7aWYoIW1lJiYwfGFbcCs4Pj4yXSl7QWFlKE9lLGIpLGFbd3Q+PjJdPWFbT2U+PjJdLGFbd3QrND4+Ml09YVtPZSs0Pj4yXSxhW3d0Kzg+PjJdPWFbT2UrOD4+Ml0sYVt3dCsxMj4+Ml09YVtPZSsxMj4+Ml0s''@;'; put 'put ''UTYoQSxtLGYsMSx3dCksZj1mKzQwfDA7YnJlYWt9YVtFdD4+Ml09YVtBPj4yXSxYcigwLDEwMzg2MixFdCk7YnJlYWsgZX1hW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLGFbd3QrMTY+''@;'; put 'put ''PjJdPWFbcm4rMTY+PjJdLGFbd3QrMjA+PjJdPWFbcm4rMjA+PjJdLGFbd3QrMjQ+PjJdPWFbcm4rMjQ+PjJdLGFbd3QrMjg+PjJdPWFbcm4rMjg+PjJdLFB5KGt0LEEsbSx3dCksYVtybj4+Ml09YVtrdD4+Ml0sYVtybis0Pj4yXT1hW2t0KzQ+PjJdLGFbcm4rOD4+Ml09YVtrdCs4Pj4yXSxh''@;'; put 'put ''W3JuKzEyPj4yXT1hW2t0KzEyPj4yXSxhW3JuKzE2Pj4yXT1hW2t0KzE2Pj4yXSxhW3JuKzIwPj4yXT1hW2t0KzIwPj4yXSxhW3JuKzI0Pj4yXT1hW2t0KzI0Pj4yXSxhW3JuKzI4Pj4yXT1hW2t0KzI4Pj4yXX13aGlsZSgwKTttPW0rNDB8MCxwPTB8YVt3Pj4yXX1pZihBPTB8YVtwKzEwMD4+''@;'; put 'put ''Ml0pe2Rve2lmKCEoMHx1ZVtBKzgxPj4wXSkpe2lmKCFtZSYmMHxhW3ArOD4+Ml0pe3lhZShCZSxiKSxhW3d0Pj4yXT1hW0JlPj4yXSxhW3d0KzQ+PjJdPWFbQmUrND4+Ml0sYVt3dCs4Pj4yXT1hW0JlKzg+PjJdLGFbd3QrMTI+PjJdPWFbQmUrMTI+PjJdLFE2KEEsbSxmLDEsd3QpLGY9Zis0''@;'; put 'put ''MHwwO2JyZWFrfWFbWnQ+PjJdPWFbQT4+Ml0sWHIoMCwxMDM5MDIsWnQpO2JyZWFrIGV9YVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxhW3d0KzE2Pj4yXT1hW3JuKzE2Pj4yXSxhW3d0''@;'; put 'put ''KzIwPj4yXT1hW3JuKzIwPj4yXSxhW3d0KzI0Pj4yXT1hW3JuKzI0Pj4yXSxhW3d0KzI4Pj4yXT1hW3JuKzI4Pj4yXSxQeShMZSxBLG0sd3QpLGFbcm4+PjJdPWFbTGU+PjJdLGFbcm4rND4+Ml09YVtMZSs0Pj4yXSxhW3JuKzg+PjJdPWFbTGUrOD4+Ml0sYVtybisxMj4+Ml09YVtMZSsxMj4+''@;'; put 'put ''Ml0sYVtybisxNj4+Ml09YVtMZSsxNj4+Ml0sYVtybisyMD4+Ml09YVtMZSsyMD4+Ml0sYVtybisyND4+Ml09YVtMZSsyND4+Ml0sYVtybisyOD4+Ml09YVtMZSsyOD4+Ml19d2hpbGUoMCk7bT1tKzQwfDAscD0wfGFbdz4+Ml19aWYoQT0wfGFbcCsxMDg+PjJdKXtkb3tpZighKDB8dWVbQSs4''@;'; put 'put ''MT4+MF0pKXtpZighbWUmJjB8YVtwKzg+PjJdKXtaTihqZSxsLGIpLGFbd3Q+PjJdPWFbamU+PjJdLGFbd3QrND4+Ml09YVtqZSs0Pj4yXSxhW3d0Kzg+PjJdPWFbamUrOD4+Ml0sYVt3dCsxMj4+Ml09YVtqZSsxMj4+Ml0sUTYoQSxtLGYsMSx3dCksZj1mKzQwfDA7YnJlYWt9YVt1dD4+Ml09''@;'; put 'put ''YVtBPj4yXSxYcigwLDEwMzk0Mix1dCk7YnJlYWsgZX1hW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLGFbd3QrMTY+PjJdPWFbcm4rMTY+PjJdLGFbd3QrMjA+PjJdPWFbcm4rMjA+PjJd''@;'; put 'put ''LGFbd3QrMjQ+PjJdPWFbcm4rMjQ+PjJdLGFbd3QrMjg+PjJdPWFbcm4rMjg+PjJdLFB5KEhlLEEsbSx3dCksYVtybj4+Ml09YVtIZT4+Ml0sYVtybis0Pj4yXT1hW0hlKzQ+PjJdLGFbcm4rOD4+Ml09YVtIZSs4Pj4yXSxhW3JuKzEyPj4yXT1hW0hlKzEyPj4yXSxhW3JuKzE2Pj4yXT1hW0hl''@;'; put 'put ''KzE2Pj4yXSxhW3JuKzIwPj4yXT1hW0hlKzIwPj4yXSxhW3JuKzI0Pj4yXT1hW0hlKzI0Pj4yXSxhW3JuKzI4Pj4yXT1hW0hlKzI4Pj4yXX13aGlsZSgwKTttPW0rNDB8MH19fXdoaWxlKDApO2I9MHxrMChsLGIpfWs9MHx6dChsLGspfWlmKDB8TSl7YVtjPj4yXT1hW3JuPj4yXSxhW2MrND4+''@;'; put 'put ''Ml09YVtybis0Pj4yXSxhW2MrOD4+Ml09YVtybis4Pj4yXSxhW2MrMTI+PjJdPWFbcm4rMTI+PjJdLGFbYysxNj4+Ml09YVtybisxNj4+Ml0sYVtjKzIwPj4yXT1hW3JuKzIwPj4yXSxhW2MrMjQ+PjJdPWFbcm4rMjQ+PjJdLGFbYysyOD4+Ml09YVtybisyOD4+Ml0sYVtjKzMyPj4yXT1tLGY9''@;'; put 'put ''KHA9d3QpKzQwfDA7ZG97YVtwPj4yXT1hW2M+PjJdLHA9cCs0fDAsYz1jKzR8MH13aGlsZSgoMHxwKTwoMHxmKSk7bVEoeW4sbCx3dCksYVtybj4+Ml09YVt5bj4+Ml0sYVtybis0Pj4yXT1hW3luKzQ+PjJdLGFbcm4rOD4+Ml09YVt5bis4Pj4yXSxhW3JuKzEyPj4yXT1hW3luKzEyPj4yXSxh''@;'; put 'put ''W3JuKzE2Pj4yXT1hW3luKzE2Pj4yXSxhW3JuKzIwPj4yXT1hW3luKzIwPj4yXSxhW3JuKzI0Pj4yXT1hW3luKzI0Pj4yXSxhW3JuKzI4Pj4yXT1hW3luKzI4Pj4yXX1mb3IodWVbRm4rMzI+PjBdPTB8VU4obCwwfHNpKGwsMCwxMDM5NzgsMCksMSksYVtGbj4+Ml09YVtybj4+Ml0sYVtGbis0''@;'; put 'put ''Pj4yXT1hW3JuKzQ+PjJdLGFbRm4rOD4+Ml09YVtybis4Pj4yXSxhW0ZuKzEyPj4yXT1hW3JuKzEyPj4yXSxhW0ZuKzE2Pj4yXT1hW3JuKzE2Pj4yXSxhW0ZuKzIwPj4yXT1hW3JuKzIwPj4yXSxhW0ZuKzI0Pj4yXT1hW3JuKzI0Pj4yXSxhW0ZuKzI4Pj4yXT1hW3JuKzI4Pj4yXSxmdW5jdGlv''@;'; put 'put ''biBGOShsLGMsZixwLG0pe3ZhciBSLEcsSyxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtpZihLPW9lLG9lPW9lKzMyfDAsRz1LLFI9MHxmdW5jdGlvbiBENChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgdyxBPTAsYj0wLGs9MDtBPTB8bXIoMjgpLGs9MHxBcygyNTkx''@;'; put 'put ''MiwwfGFbNDU4NF0pLGFbKHc9QSsyMHwwKT4+Ml09aztkb3tpZihrKXtpZihrPTB8JDkoKSxhW0ErMjQ+PjJdPWssayl7YVtBPj4yXT1sLGFbQSs0Pj4yXT1jLGFbQSs4Pj4yXT1mLGFbQSsxMj4+Ml09cCxhW0ErMTY+PjJdPW07YnJlYWt9Q3UoMTExNzQwLDE0LDEsMHxhWzE1NzEyXSksYj02''@;'; put 'put ''O2JyZWFrfUN1KDExMTc0MCwxNCwxLDB8YVsxNTcxMl0pLGI9Nn13aGlsZSgwKTtyZXR1cm4gNj09KDB8YikmJigwfChsPTB8YVt3Pj4yXSkmJmlzKGwpLDB8KGw9MHxhW0ErMjQ+PjJdKSYmUDQobCksSHQoQSksQT0wKSwwfEF9KGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCksZj0wfGZ1bmN0''@;'; put 'put ''aW9uIEFtKGwpe3ZhciBjPTA7cmV0dXJuKDB8KGM9MHxmdW5jdGlvbiBCYihsKXt2YXIgZixwLG0sQSx3LGIsayxNLGM9MCxEPTAsUj0wLEc9MDtmb3IoTT1vZSxvZT1vZSszMnwwLGY9TSsyNHwwLHA9TSsxNnwwLG09TSxBPTB8ZnVuY3Rpb24gdDEobCl7dmFyIGMsZjtyZXR1cm4gMSsoMHxm''@;'; put 'put ''dW5jdGlvbiBQOShsKXt2YXIgYz0wLGY9MDtyZXR1cm4obHw9MCk/KGw9KGY9bD4+PjA+NjU1MzUpP2w+Pj4xNjpsLGY9Zj8xNjowLGY9KGM9bD4+PjA+MjU1KT84fGY6ZixmPShjPShsPWM/bD4+Pjg6bCk+Pj4wPjE1KT80fGY6ZixsPSgoYz0obD1jP2w+Pj40OmwpPj4+MD4zKT8yfGY6Zikr''@;'; put 'put ''KChjP2w+Pj4yOmwpPj4+MD4xJjEpfDApOmw9LTEsMHxsfSh+figoZj0rX1sxNisobD0wfGFbMTYrKGx8PTApPj4yXSk+PjNdKT4oYz0rX1tsKzI0Pj4zXSk/ZjpjKT4+PjApKXwwfShsfD0wKSx3PWwrNHwwLGI9cCs0fDAsaz1sKzIwfDAsYz0wOzspe2lmKCgwfGMpPj0oMHxhW3c+PjJdKSl7''@;'; put 'put ''Yz0wO2JyZWFrfWlmKFI9MTIrKEQ9MHxtcigzMikpfDAsYVtEKzI4Pj4yXT1HPSgwfGFbbD4+Ml0pKyg0MCpjfDApfDAsTjkobSxHKSxhW1I+PjJdPWFbbT4+Ml0sYVtSKzQ+PjJdPWFbbSs0Pj4yXSxhW1IrOD4+Ml09YVttKzg+PjJdLGFbUisxMj4+Ml09YVttKzEyPj4yXSxhW3A+PjJdPSgo''@;'; put 'put ''KDB8YVtEKzIwPj4yXSktKFI9MHxhW1I+PjJdKXwwKS8yfDApK1IsYVtiPj4yXT0oKCgwfGFbRCsyND4+Ml0pLShSPTB8YVtEKzE2Pj4yXSl8MCkvMnwwKStSLGFbZj4+Ml09YVtwPj4yXSxhW2YrND4+Ml09YVtwKzQ+PjJdLGFbRCs4Pj4yXT0wfHltKGYsQSksISgwfG1pWzYzJmFbKFI9MHxh''@;'; put 'put ''W2s+PjJdKT4+Ml1dKFIsRCwxKSkpe2M9LTE7YnJlYWt9Yz1jKzF8MH1yZXR1cm4gb2U9TSwwfGN9KGx8PTApKSk+PTAmJihmdW5jdGlvbiBqOChsKXt2YXIgYyxmLHA9MDtmb3IoYz0yNCsobHw9MCl8MCxsPTB8bWlbNjMmYVsocD0wfGFbKGY9bCsyMHwwKT4+Ml0pPj4yXV0ocCwwLDEyOCk7''@;'; put 'put ''bDspS0UocD0wfGFbYz4+Ml0sbCsxMnwwLDB8YVtsKzI4Pj4yXSxwLDApLGw9MHxtaVs2MyZhWyhwPTB8YVtmPj4yXSk+PjJdXShwLGwsOCl9KGwpLGZ1bmN0aW9uIFFmKGwpe3ZhciBwLG0sYz0wLGY9MCxBPTAsdz0wO2ZvcihtPTB8UHUoMHxhWyhwPTIwKyhsfD0wKXwwKT4+Ml0pLGY9MDsw''@;'; put 'put ''fFB1KDB8YVtwPj4yXSk7KXtpZighKGw9MHxhWzQrKDB8YVs4KyhBPTB8YVtwPj4yXSk+PjJdKT4+Ml0pKXt3PTg7YnJlYWt9aWYoIShsPSgwfChjPTB8YVs4KygwfGFbQSs0Pj4yXSk+PjJdKSk8MD8wfGFbbCs4Pj4yXTpsKygwLWMpfDApKXt3PTg7YnJlYWt9bWlbNjMmYVtBPj4yXV0oQSxs''@;'; put 'put ''LDQwOTYpLEh0KGwpLGY9ZisxfDB9OD09KDB8dykmJkJyKDExMTY0OSwxMTE1NDMsNjE2LDExMTY1MiksKDB8bSkhPSgwfGYpJiZCcigxMTE2NjQsMTExNTQzLDYyMywxMTE2NTIpfShsKSxjPTB8aXMoMHxhW2wrMjA+PjJdKSksMHxjfShSKSwoMHxmKT49MCl7Zm9yKE09RysxNnwwLEQ9Rysy''@;'; put 'put ''NHwwLGs9Rys4fDAsYj1tKzMyfDAsZj0wLG09MDshKCgwfG0pPj0oMHxjKSk7KXtwPWwrKDQwKm18MCkrMzJ8MDtkb3tpZigwfGFbcD4+Ml0pe2lmKHRCKEcsUixsKyg0MCptfDApfDApLEE9K19bTT4+M10sdz0rX1tEPj4zXSwhKDB8YVtHPj4yXSkpe3VlWzM2KygwfGFbcD4+Ml0pPj4wXT0x''@;'; put 'put ''O2JyZWFrfWlmKDA9PStfW2s+PjNdKXtfWzE2KyhwPTB8YVtwPj4yXSk+PjNdPUEsX1twKzI0Pj4zXT13LHVlW3ArMzY+PjBdPTE7YnJlYWt9MT09KDB8dWVbYj4+MF0pPyhfWzE2KyhwPTB8YVtwPj4yXSk+PjNdPUEsX1twKzI0Pj4zXT13LHVlW3ArMzY+PjBdPTEpOmY9MX19d2hpbGUoMCk7''@;'; put 'put ''bT1tKzF8MH0hZnVuY3Rpb24gYmMobCl7UDQoMHxhWzI0KyhsfD0wKT4+Ml0pLEh0KGwpfShSKX1yZXR1cm4gb2U9SywwfGZ9KEcsUixLLHBlLEZuKSxjPTAsZj0wLHA9SzshKCgwfGYpPj0oMHxwZSkpOykwfHVlW3ArMzY+PjBdJiYodWVbODErKEZuPTB8YVtwKzMyPj4yXSk+PjBdPTEseW49''@;'; put 'put ''Rm4rNTZ8MCx3YWUobHIscCksYVt5bj4+Ml09YVtscj4+Ml0sYVt5bis0Pj4yXT1hW2xyKzQ+PjJdLGFbeW4rOD4+Ml09YVtscis4Pj4yXSxhW3luKzEyPj4yXT1hW2xyKzEyPj4yXSxKZChsLEZuKSxjPWMrMXwwKSxmPWYrMXwwLHA9cCs0MHwwOygwfGMpIT0oMHxwZSkmJihhW2tyPj4yXT1j''@;'; put 'put ''LGFba3IrND4+Ml09cGUsWHIoMCwxMDQwMjMsa3IpKSxIdChHKSxIdChLKX19b2U9Y3J9KGwpLGY9MHxhWzEyKyhrPTB8YVtLPj4yXSk+PjJdO2Rve2lmKDB8ZiYmMD09KDB8dWVbZis4MT4+MF0pKXtpZihhW21lPj4yXT1hWyhtPWYrMjR8MCk+PjJdLGFbbWUrND4+Ml09YVttKzQ+PjJdLGFb''@;'; put 'put ''bWUrOD4+Ml09YVttKzg+PjJdLGFbbWUrMTI+PjJdPWFbbSsxMj4+Ml0sX1ttZT4+M109TT0rX1ttZT4+M10rMTYsX1sobT1tZSs4fDApPj4zXT1wPStfW20+PjNdKzgsbT0wIT0oMSZ1ZVtrKzI3NT4+MF0pLDB8dWVbMTk0OTU3XSl7aWYobT9fWyhBPWsrMzJ8MCk+PjNdPStfW0E+PjNdK3A6''@;'; put 'put ''X1soQT1rKzE2fDApPj4zXT0rX1tBPj4zXS1wLCEoTT4oYj0ocD0rX1sobT1rKzQwfDApPj4zXSktKHc9K19bKEE9aysyNHwwKT4+M10pKSkpYnJlYWs7X1tBPj4zXT13LShNPS41KihNLWIpKSxfW20+PjNdPXArTTticmVha31BPTA9PSgwfGFbNDcyNjVdKTtkb3tpZihtKXtpZihBKXtfWyhB''@;'; put 'put ''PWsrNDB8MCk+PjNdPStfW0E+PjNdK3A7YnJlYWt9X1soQT1rKzI0fDApPj4zXT0rX1tBPj4zXS1wO2JyZWFrfWlmKEEpe19bKEE9aysyNHwwKT4+M109K19bQT4+M10tcDticmVha31fWyhBPWsrNDB8MCk+PjNdPStfW0E+PjNdK3A7YnJlYWt9d2hpbGUoMCk7TT4oYj0ocD0rX1sobT1rKzMy''@;'; put 'put ''fDApPj4zXSktKHc9K19bKEE9aysxNnwwKT4+M10pKSYmKF9bQT4+M109dy0oTT0uNSooTS1iKSksX1ttPj4zXT1wK00pfX13aGlsZSgwKTtpZihjKXtzd2l0Y2goMHxhWzQ3MjY1XSl7Y2FzZSAwOmFbNDY2MDZdPWFbKEc9aysxNnwwKT4+Ml0sYVs0NjYwN109YVtHKzQ+PjJdLGFbNDY2MDhd''@;'; put 'put ''PWFbRys4Pj4yXSxhWzQ2NjA5XT1hW0crMTI+PjJdO2JyZWFrO2Nhc2UgMTpVNihELC0rX1trKzQwPj4zXSwrX1trKzE2Pj4zXSksYVs0NjYwNl09YVtEPj4yXSxhWzQ2NjA3XT1hW0QrND4+Ml0sYVs0NjYwOF09YVtEKzg+PjJdLGFbNDY2MDldPWFbRCsxMj4+Ml07YnJlYWs7Y2FzZSAyOlU2''@;'; put 'put ''KFIsK19baysxNj4+M10sLStfW2srNDA+PjNdKSxhWzQ2NjA2XT1hW1I+PjJdLGFbNDY2MDddPWFbUis0Pj4yXSxhWzQ2NjA4XT1hW1IrOD4+Ml0sYVs0NjYwOV09YVtSKzEyPj4yXTticmVhaztjYXNlIDM6VTYoRywrX1trKzI0Pj4zXSwrX1trKzE2Pj4zXSksYVs0NjYwNl09YVtHPj4yXSxh''@;'; put 'put ''WzQ2NjA3XT1hW0crND4+Ml0sYVs0NjYwOF09YVtHKzg+PjJdLGFbNDY2MDldPWFbRysxMj4+Ml19KGZ1bmN0aW9uIG1hZShsKXtsfD0wO3ZhciBwLG0sQSx3LGM9MCxmPTAsYj0wO2lmKHc9b2Usb2U9b2UrNDh8MCxwPXcrMzJ8MCxtPXcrMTZ8MCxBPXcsMCE9K19bMjMzMDNdfDAhPStfWzIz''@;'; put 'put ''MzA0XXwwIT0oMHxhWzQ3MjY1XSkpe2ZvcihmPTB8THQobCk7ZjspezB8YVs0NzI2NV0mJlE3KGYsMCksYVtwPj4yXT1hWyhiPTE2KygwfGFbKGM9ZisxNnwwKT4+Ml0pfDApPj4yXSxhW3ArND4+Ml09YVtiKzQ+PjJdLGFbcCs4Pj4yXT1hW2IrOD4+Ml0sYVtwKzEyPj4yXT1hW2IrMTI+PjJd''@;'; put 'put ''LGxoKG0scCksYVtiPj4yXT1hW20+PjJdLGFbYis0Pj4yXT1hW20rND4+Ml0sYVtiKzg+PjJdPWFbbSs4Pj4yXSxhW2IrMTI+PjJdPWFbbSsxMj4+Ml0sMHwoYz0wfGFbMTA4KygwfGFbYz4+Ml0pPj4yXSkmJihhW3A+PjJdPWFbKGI9Yys1NnwwKT4+Ml0sYVtwKzQ+PjJdPWFbYis0Pj4yXSxh''@;'; put 'put ''W3ArOD4+Ml09YVtiKzg+PjJdLGFbcCsxMj4+Ml09YVtiKzEyPj4yXSxsaChBLHApLGFbYj4+Ml09YVtBPj4yXSxhW2IrND4+Ml09YVtBKzQ+PjJdLGFbYis4Pj4yXT1hW0ErOD4+Ml0sYVtiKzEyPj4yXT1hW0ErMTI+PjJdKTtlOmRve2lmKDE9PSgwfGFbNDcxMzhdKSlmb3IoYz0wfHkwKGws''@;'; put 'put ''Zik7Oyl7aWYoIWMpYnJlYWsgZTtWNyhjKSxjPTB8azAobCxjKX19d2hpbGUoMCk7Zj0wfHp0KGwsZil9aFEobCwzJmFbMTE2KygwfGFbbCsxNj4+Ml0pPj4yXSl9b2U9d30pKGwpLGY9MHxhWzEyKygwfGFbSz4+Ml0pPj4yXX0wfGYmJjA9PSgwfHVlW2YrODE+PjBdKSYmKGFbcGU+PjJdPWFb''@;'; put 'put ''bWU+PjJdLGFbcGUrND4+Ml09YVttZSs0Pj4yXSxhW3BlKzg+PjJdPWFbbWUrOD4+Ml0sYVtwZSsxMj4+Ml09YVttZSsxMj4+Ml0sZnVuY3Rpb24gdmFlKGwsYyl7Y3w9MDt2YXIgbSxBLGY9MCxwPTAsdz0wO2w9KG09MHx1ZVsyNzUrKHc9MHxhWyhBPTE2KyhsfD0wKXwwKT4+Ml0pPj4wXSk8''@;'; put 'put ''PDI0Pj4yNDtkb3tpZighKDQmbCkpe2lmKGY9K19bdysxNj4+M10sMiZsKXtwPS41KitfW2M+PjNdK2Y7YnJlYWt9cD0uNSooK19bdyszMj4+M10rZik7YnJlYWt9cD0rX1t3KzMyPj4zXS0uNSorX1tjPj4zXX13aGlsZSgwKTtmPTEmbT8rX1t3KzQwPj4zXS0uNSorX1tjKzg+PjNdOi41Kitf''@;'; put 'put ''W2MrOD4+M10rICtfW3crMjQ+PjNdLF9bNTYrKHc9MHxhW3crMTI+PjJdKT4+M109cCxfW3crNjQ+PjNdPWYsdWVbODErKDB8YVsxMisoMHxhW0E+PjJdKT4+Ml0pPj4wXT0xfShsLHBlKSksb2U9TGV9ZnVuY3Rpb24gZFEobCl7dmFyIHcsYz0wLGY9MCxwPTAsbT0wLEE9MDtpZih3PTE2Kyhs''@;'; put 'put ''fD0wKXwwLCgwfGhpKGwpKSE9KDB8bCkmJjAhPSgwfChBPTB8YVsxMisobT0wfGFbdz4+Ml0pPj4yXSkpJiYwPT0oMHx1ZVtBKzgxPj4wXSkpezEmKGM9MHx1ZVttKzI3NT4+MF0pPyhwPStfW20rMzI+PjNdLS41KitfW20rNjQ+PjNdLGw9bSs3MnwwKToocD0rX1ttKzE2Pj4zXSsuNSorX1tt''@;'; put 'put ''Kzk2Pj4zXSxsPW0rMTA0fDApLGY9K19bbD4+M10sbD1jPDwyND4+MjQ7ZG97aWYoISg0JmwpKXtpZigyJmwpe2Y9K19bbSs0MD4+M10tLjUqZjticmVha31mPS41KigrX1ttKzQwPj4zXSsgK19bbSsyND4+M10pO2JyZWFrfWY9K19bbSsyND4+M10rLjUqZn13aGlsZSgwKTtfW0ErNTY+PjNd''@;'; put 'put ''PXAsX1tBKzY0Pj4zXT1mLHVlWzgxKygwfGFbMTIrKDB8YVt3Pj4yXSk+PjJdKT4+MF09MSxsPTF9ZWxzZSBsPTE7Zm9yKDshKCgwfGwpPigwfGFbMTgwKyhjPTB8YVt3Pj4yXSk+PjJdKSk7KWRRKDB8YVsoMHxhW2MrMTg0Pj4yXSkrKGw8PDIpPj4yXSksbD1sKzF8MH1mdW5jdGlvbiBwUShs''@;'; put 'put ''KXt2YXIgYixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtpZihiPTE2KyhsfD0wKXwwLCgwfGhpKGwpKSE9KDB8bCkmJjAhPSgwfCh3PTB8YVsxMisoQT0wfGFbYj4+Ml0pPj4yXSkpJiYwPT0oMHx1ZVt3KzgxPj4wXSkpezEmKGM9MHx1ZVtBKzI3NT4+MF0pPyhtPStfW0ErNDA+PjNdLS41Kitf''@;'; put 'put ''W0ErODg+PjNdLGw9QSs4MHwwKToobT0rX1tBKzI0Pj4zXSsuNSorX1tBKzU2Pj4zXSxsPUErNDh8MCkscD0rX1tsPj4zXSxsPWM8PDI0Pj4yNDtkb3tpZighKDQmbCkpe2lmKGY9K19bQSsxNj4+M10sMiZsKXtmKz0uNSpwO2JyZWFrfWY9LjUqKCtfW0ErMzI+PjNdK2YpO2JyZWFrfWY9K19b''@;'; put 'put ''QSszMj4+M10tLjUqcH13aGlsZSgwKTtfW3crNTY+PjNdPWYsX1t3KzY0Pj4zXT1tLHVlWzgxKygwfGFbMTIrKDB8YVtiPj4yXSk+PjJdKT4+MF09MSxsPTF9ZWxzZSBsPTE7Zm9yKDshKCgwfGwpPigwfGFbMTgwKyhjPTB8YVtiPj4yXSk+PjJdKSk7KXBRKDB8YVsoMHxhW2MrMTg0Pj4yXSkr''@;'; put 'put ''KGw8PDIpPj4yXSksbD1sKzF8MH1mdW5jdGlvbiBWNyhsKXt2YXIgdyxiLGssTSxELFIsRyxtZSxjPTAsZj0wLHA9MCxtPTAsQT0wLEs9MCxwZT0wLGJlPTA7aWYobWU9b2Usb2U9b2UrMTQ0fDAsSz1tZSsxMjB8MCxmPW1lKzE2fDAsdz1tZSsxMDR8MCxiPW1lKzg4fDAsaz1tZSs3MnwwLE09''@;'; put 'put ''bWUrNTZ8MCxEPW1lKzQwfDAsUj1tZSsyNHwwLHBlPW1lLHA9MHxhWzgrKGM9MHxhWyhHPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSl7Zm9yKEE9MCxsPXA7ISgoMHxBKT49KDB8YVtsKzQ+PjJdKSk7KXtmb3IobD0wfGFbKG09MHxhW2w+PjJdKSsoNDgqQXwwKT4+Ml0sZj0wfGFbbSsoNDgqQXww''@;'; put 'put ''KSs0Pj4yXSxwPTB8YVttKyg0OCpBfDApKzg+PjJdLG09MHxhW20rKDQ4KkF8MCkrMTI+PjJdLGM9MDshKCgwfGMpPj0oMHxmKSk7KWFbSz4+Ml09YVsoYmU9bCsoYzw8NCl8MCk+PjJdLGFbSys0Pj4yXT1hW2JlKzQ+PjJdLGFbSys4Pj4yXT1hW2JlKzg+PjJdLGFbSysxMj4+Ml09YVtiZSsx''@;'; put 'put ''Mj4+Ml0sbGgodyxLKSxhW2JlPj4yXT1hW3c+PjJdLGFbYmUrND4+Ml09YVt3KzQ+PjJdLGFbYmUrOD4+Ml09YVt3Kzg+PjJdLGFbYmUrMTI+PjJdPWFbdysxMj4+Ml0sYz1jKzF8MDswfHAmJihhW0s+PjJdPWFbKGJlPSgwfGFbYVs4KygwfGFbRz4+Ml0pPj4yXT4+Ml0pKyg0OCpBfDApKzE2''@;'; put 'put ''fDApPj4yXSxhW0srND4+Ml09YVtiZSs0Pj4yXSxhW0srOD4+Ml09YVtiZSs4Pj4yXSxhW0srMTI+PjJdPWFbYmUrMTI+PjJdLGxoKGIsSyksYVtiZT4+Ml09YVtiPj4yXSxhW2JlKzQ+PjJdPWFbYis0Pj4yXSxhW2JlKzg+PjJdPWFbYis4Pj4yXSxhW2JlKzEyPj4yXT1hW2IrMTI+PjJdKSww''@;'; put 'put ''fG0mJihhW0s+PjJdPWFbKGJlPSgwfGFbYVs4KygwfGFbRz4+Ml0pPj4yXT4+Ml0pKyg0OCpBfDApKzMyfDApPj4yXSxhW0srND4+Ml09YVtiZSs0Pj4yXSxhW0srOD4+Ml09YVtiZSs4Pj4yXSxhW0srMTI+PjJdPWFbYmUrMTI+PjJdLGxoKGssSyksYVtiZT4+Ml09YVtrPj4yXSxhW2JlKzQ+''@;'; put 'put ''PjJdPWFbays0Pj4yXSxhW2JlKzg+PjJdPWFbays4Pj4yXSxhW2JlKzEyPj4yXT1hW2srMTI+PjJdKSxBPUErMXwwLGw9MHxhWzgrKGM9MHxhW0c+PjJdKT4+Ml19KGw9MHxhW2MrOTY+PjJdKSYmKGFbSz4+Ml09YVsoYz1sKzU2fDApPj4yXSxhW0srND4+Ml09YVtjKzQ+PjJdLGFbSys4Pj4y''@;'; put 'put ''XT1hW2MrOD4+Ml0sYVtLKzEyPj4yXT1hW2MrMTI+PjJdLGxoKE0sSyksYVtjPj4yXT1hW00+PjJdLGFbYys0Pj4yXT1hW00rND4+Ml0sYVtjKzg+PjJdPWFbTSs4Pj4yXSxhW2MrMTI+PjJdPWFbTSsxMj4+Ml0sYz0wfGFbRz4+Ml0pLChsPTB8YVtjKzEwOD4+Ml0pJiYoYVtLPj4yXT1hWyhj''@;'; put 'put ''PWwrNTZ8MCk+PjJdLGFbSys0Pj4yXT1hW2MrND4+Ml0sYVtLKzg+PjJdPWFbYys4Pj4yXSxhW0srMTI+PjJdPWFbYysxMj4+Ml0sbGgoRCxLKSxhW2M+PjJdPWFbRD4+Ml0sYVtjKzQ+PjJdPWFbRCs0Pj4yXSxhW2MrOD4+Ml09YVtEKzg+PjJdLGFbYysxMj4+Ml09YVtEKzEyPj4yXSxjPTB8''@;'; put 'put ''YVtHPj4yXSksKGw9MHxhW2MrMTAwPj4yXSkmJihhW0s+PjJdPWFbKGM9bCs1NnwwKT4+Ml0sYVtLKzQ+PjJdPWFbYys0Pj4yXSxhW0srOD4+Ml09YVtjKzg+PjJdLGFbSysxMj4+Ml09YVtjKzEyPj4yXSxsaChSLEspLGFbYz4+Ml09YVtSPj4yXSxhW2MrND4+Ml09YVtSKzQ+PjJdLGFbYys4''@;'; put 'put ''Pj4yXT1hW1IrOD4+Ml0sYVtjKzEyPj4yXT1hW1IrMTI+PjJdLGM9MHxhW0c+PjJdKSwwfChjPTB8YVtjKzEwND4+Ml0pJiYoYVtLPj4yXT1hWyhiZT1jKzU2fDApPj4yXSxhW0srND4+Ml09YVtiZSs0Pj4yXSxhW0srOD4+Ml09YVtiZSs4Pj4yXSxhW0srMTI+PjJdPWFbYmUrMTI+PjJdLGxo''@;'; put 'put ''KHBlLEspLGFbYmU+PjJdPWFbcGU+PjJdLGFbYmUrND4+Ml09YVtwZSs0Pj4yXSxhW2JlKzg+PjJdPWFbcGUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtwZSsxMj4+Ml0pfWVsc2UgMD09KDB8dWVbMTk0OTU0XSkmJjYhPSgwfHVlW2MrMTEyPj4wXSkmJihLPTB8JHIoMHxhWygzPT0oMyZhW2w+PjJd''@;'; put 'put ''fDApP2w6bCs0OHwwKSs0MD4+Ml0pLHBlPTB8JHIoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKSxhW2Y+PjJdPUssYVtmKzQ+PjJdPXBlLFhyKDEsMTAzODEwLGYpKTtvZT1tZX1mdW5jdGlvbiBnUShsKXt2YXIgcCxjPTAsZj0wO2ZvcihwPTE2KyhsfD0wKXwwLCgw''@;'; put 'put ''fGhpKGwpKSE9KDB8bCkmJjAhPSgwfChjPTB8YVsxMisoMHxhW3A+PjJdKT4+Ml0pKT8oZj0xLGw9MCE9KDB8dWVbYys4MT4+MF0pJjEpOihmPTEsbD0wKTshKCgwfGYpPigwfGFbMTgwKyhjPTB8YVtwPj4yXSk+PjJdKSk7KWM9KDB8Z1EoMHxhWygwfGFbYysxODQ+PjJdKSsoZjw8Mik+PjJd''@;'; put 'put ''KSkrbHwwLGY9ZisxfDAsbD1jO3JldHVybiAwfGx9ZnVuY3Rpb24gcGsobCxjLGYscCl7dmFyIG0sQSx3LGIsayxNO2x8PTAscHw9MCxtPW9lLG9lPW9lKzMyfDAsQT1tLGs9MHxhWyhjPTE2KyhjfD0wKXwwKT4+Ml0sX1sxNisoZnw9MCk+PjNdPTcyKihiPStfWygoTT0wPT0oMHx1ZVsxOTQ5''@;'; put 'put ''NTddKSk/ayszMnwwOmsrNDB8MCk+PjNdKSxfW2YrMjQ+PjNdPTcyKih3PStfWyhNP2srNDB8MDprKzMyfDApPj4zXSksYVtmPj4yXT1hWyhjPTE2KygwfGFbYz4+Ml0pfDApPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJd''@;'; put 'put ''LF9bZj4+M109K19bZj4+M10tMzYqYixfWyhjPWYrOHwwKT4+M109K19bYz4+M10tMzYqdyxhW0E+PjJdPWFbcD4+Ml0sYVtBKzQ+PjJdPWFbcCs0Pj4yXSxhW0ErOD4+Ml09YVtwKzg+PjJdLGFbQSsxMj4+Ml09YVtwKzEyPj4yXSxhW0ErMTY+PjJdPWFbcCsxNj4+Ml0sYVtBKzIwPj4yXT1h''@;'; put 'put ''W3ArMjA+PjJdLGFbQSsyND4+Ml09YVtwKzI0Pj4yXSxhW0ErMjg+PjJdPWFbcCsyOD4+Ml0sdlEobCxmLEEpLG9lPW19ZnVuY3Rpb24gUHkobCxjLGYscCl7dmFyIG0sQSx3LGIsayxNO2x8PTAscHw9MCxtPW9lLG9lPW9lKzMyfDAsQT1tLGs9MjQrKGN8PTApfDAsX1sxNisoZnw9MCk+PjNd''@;'; put 'put ''PWI9K19bKChNPTA9PSgwfHVlWzE5NDk1N10pKT9rOmMrMzJ8MCk+PjNdLF9bZisyND4+M109dz0rX1soTT9jKzMyfDA6ayk+PjNdLGFbZj4+Ml09YVsoYz1jKzU2fDApPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLF9b''@;'; put 'put ''Zj4+M109K19bZj4+M10tLjUqYixfWyhjPWYrOHwwKT4+M109K19bYz4+M10tLjUqdyxhW0E+PjJdPWFbcD4+Ml0sYVtBKzQ+PjJdPWFbcCs0Pj4yXSxhW0ErOD4+Ml09YVtwKzg+PjJdLGFbQSsxMj4+Ml09YVtwKzEyPj4yXSxhW0ErMTY+PjJdPWFbcCsxNj4+Ml0sYVtBKzIwPj4yXT1hW3Ar''@;'; put 'put ''MjA+PjJdLGFbQSsyND4+Ml09YVtwKzI0Pj4yXSxhW0ErMjg+PjJdPWFbcCsyOD4+Ml0sdlEobCxmLEEpLG9lPW19ZnVuY3Rpb24gUTYobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxtfD0wLDB8KHB8PTApJiYoYVsocD1jKzE2fDApPj4yXT0wLGFbcCs0Pj4yXT0wLGFbcCs4Pj4yXT0wLGFb''@;'; put 'put ''cCsxMj4+Ml09MCxhW2M+PjJdPWFbbT4+Ml0sYVtjKzQ+PjJdPWFbbSs0Pj4yXSxhW2MrOD4+Ml09YVttKzg+PjJdLGFbYysxMj4+Ml09YVttKzEyPj4yXSksMHx1ZVsxOTQ5NTddPyhfW2Y+PjNdPStfW2wrMzI+PjNdLF9bZis4Pj4zXT0rX1tsKzI0Pj4zXSk6KGFbZj4+Ml09YVsobT1sKzI0''@;'; put 'put ''fDApPj4yXSxhW2YrND4+Ml09YVttKzQ+PjJdLGFbZis4Pj4yXT1hW20rOD4+Ml0sYVtmKzEyPj4yXT1hW20rMTI+PjJdKSxhW2YrMzI+PjJdPWwsdWVbZiszNj4+MF09MCxhW2MrMzI+PjJdPWZ9ZnVuY3Rpb24gQWFlKGwsYyl7bHw9MCxjPTB8UTMoY3w9MCk7ZG97aWYoYyl7aWYoMHxhWzgr''@;'; put 'put ''KGM9MHxhW2M+PjJdKT4+Ml0pe2FbbD4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdO2JyZWFrfWFbbD4+Ml09YVsoYz0wfGFbYz4+Ml0pPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4''@;'; put 'put ''Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdO2JyZWFrfWFbbD4+Ml09MCxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MCxhW2wrMTI+PjJdPTB9d2hpbGUoMCl9ZnVuY3Rpb24geWFlKGwsYyl7bHw9MDt2YXIgZj0wO2M9MHxRMyhjfD0wKTtkb3tpZihjKXtpZigwfGFbKGY9MHxh''@;'; put 'put ''W2M+PjJdKSsoNDgqKGM9KDB8YVtjKzQ+PjJdKS0xfDApfDApKzEyPj4yXSl7YVtsPj4yXT1hWyhmPWYrKDQ4KmN8MCkrMzJ8MCk+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml07YnJlYWt9YVtsPj4yXT1hWyhmPSgwfGFb''@;'; put 'put ''ZisoNDgqY3wwKT4+Ml0pKygoMHxhW2YrKDQ4KmN8MCkrND4+Ml0pLTE8PDQpfDApPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdO2JyZWFrfWFbbD4+Ml09MCxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MCxhW2wrMTI+PjJd''@;'; put 'put ''PTB9d2hpbGUoMCl9ZnVuY3Rpb24gbVEobCxjLGYpe2x8PTAsZnw9MDt2YXIgayxSLEsscD0wLG09MCxBPTAsdz0wLGI9MCxNPTAsRD0wLEc9MDtmb3IoSz1vZSxvZT1vZSsxMTJ8MCxrPUsrNzJ8MCxEPUsrMzJ8MCxSPUssRz0xNisoY3w9MCl8MCxiPTE7ISgoMHxiKT4oMHxhWzE4MCsocD0w''@;'; put 'put ''fGFbRz4+Ml0pPj4yXSkpOyl7cD0wfGFbKDB8YVtwKzE4ND4+Ml0pKyhiPDwyKT4+Ml0sQT1mLHc9KG09aykrNDB8MDtkb3thW20+PjJdPWFbQT4+Ml0sbT1tKzR8MCxBPUErNHwwfXdoaWxlKCgwfG0pPCgwfHcpKTttUShELHAsayksQT1ELHc9KG09ZikrNDB8MDtkb3thW20+PjJdPWFbQT4+''@;'; put 'put ''Ml0sbT1tKzR8MCxBPUErNHwwfXdoaWxlKCgwfG0pPCgwfHcpKTtiPWIrMXwwfSgwfGhpKGMpKSE9KDB8YykmJjB8KE09MHxhWzEyKygwfGFbRz4+Ml0pPj4yXSkmJjB8dWVbTSs4MT4+MF0mJihEPTB8YVsoRz1mKzMyfDApPj4yXSxhW2s+PjJdPWFbZj4+Ml0sYVtrKzQ+PjJdPWFbZis0Pj4y''@;'; put 'put ''XSxhW2srOD4+Ml09YVtmKzg+PjJdLGFbaysxMj4+Ml09YVtmKzEyPj4yXSxhW2srMTY+PjJdPWFbZisxNj4+Ml0sYVtrKzIwPj4yXT1hW2YrMjA+PjJdLGFbaysyND4+Ml09YVtmKzI0Pj4yXSxhW2srMjg+PjJdPWFbZisyOD4+Ml0sUHkoUixNLEQsayksYVtmPj4yXT1hW1I+PjJdLGFbZis0''@;'; put 'put ''Pj4yXT1hW1IrND4+Ml0sYVtmKzg+PjJdPWFbUis4Pj4yXSxhW2YrMTI+PjJdPWFbUisxMj4+Ml0sYVtmKzE2Pj4yXT1hW1IrMTY+PjJdLGFbZisyMD4+Ml09YVtSKzIwPj4yXSxhW2YrMjQ+PjJdPWFbUisyND4+Ml0sYVtmKzI4Pj4yXT1hW1IrMjg+PjJdLGFbRz4+Ml09NDArKDB8YVtHPj4y''@;'; put 'put ''XSkpLEE9Zix3PShtPWwpKzQwfDA7ZG97YVttPj4yXT1hW0E+PjJdLG09bSs0fDAsQT1BKzR8MH13aGlsZSgoMHxtKTwoMHx3KSk7b2U9S31mdW5jdGlvbiB3YWUobCxjKXt2YXIgZjtmPS41KitfWzgrKGN8PTApPj4zXSsgK19bYysyND4+M10sX1sobHw9MCk+PjNdPS41KitfW2M+PjNdKyAr''@;'; put 'put ''X1tjKzE2Pj4zXSxfW2wrOD4+M109Zn1mdW5jdGlvbiB2UShsLGMsZil7bHw9MDt2YXIgcCxtLEE9MCx3PTAsYj0wO3A9b2Usb2U9b2UrMTZ8MCxtPXAsX1soZnw9MCk+PjNdPStfWygrX1tmPj4zXTwoYj0rX1soY3w9MCk+PjNdKT9mOmMpPj4zXSxfWyhBPWYrOHwwKT4+M109K19bKCtfW0E+''@;'; put 'put ''PjNdPCh3PStfW2MrOD4+M10pP2Y6YykrOD4+M10sX1ttPj4zXT1iPStfW2MrMTY+PjNdK2IsX1ttKzg+PjNdPXc9K19bYysyND4+M10rdyxfWyhBPWYrMTZ8MCk+PjNdPStfWygrX1tBPj4zXT5iP0E6bSk+PjNdLF9bKGM9ZisyNHwwKT4+M109K19bKCtfW2M+PjNdPnc/QTptKSs4Pj4zXSxh''@;'; put 'put ''W2w+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXSxhW2wrMTY+PjJdPWFbZisxNj4+Ml0sYVtsKzIwPj4yXT1hW2YrMjA+PjJdLGFbbCsyND4+Ml09YVtmKzI0Pj4yXSxhW2wrMjg+PjJdPWFbZisyOD4+Ml0s''@;'; put 'put ''b2U9cH1mdW5jdGlvbiBqNyhsKXtkRChsfD0wLDEpfWZ1bmN0aW9uIFROKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGIsayxNLEQscD0wLG09MCxBPTAsdz0wO0Q9b2Usb2U9b2UrMTZ8MCxNPUQrOHwwLGs9RCxiPTAhPSgwfChjfD0wKSk7ZTpkb3tpZihiKXtBPTAscD0wO3Q6Zm9yKDs7KWZvcig7''@;'; put 'put ''Oyl7aWYoQSlicmVhayBlO2lmKCEobT0wfGFbYysocDw8Mik+PjJdKSl7dz02O2JyZWFrIGV9aWYocD1wKzF8MCwhKDB8dWVbbT4+MF0pKXtBPTE7Y29udGludWUgdH19fWVsc2Ugdz02fXdoaWxlKDApO2U6ZG97aWYoNj09KDB8dykpZm9yKDs7KXtpZighKHA9MHxhW2Y+PjJdKSlicmVhayBl''@;'; put 'put ''O1RuKGwscCksVG4obCwxNTM1OTkpLGY9Zis0fDAsdz02fX13aGlsZSgwKTtlOmRve2lmKGIpZm9yKEE9MDs7KXtpZighKHA9MHxhW2MrKEE8PDIpPj4yXSkpYnJlYWsgZTtkb3tpZigwfHVlW3A+PjBdKXtpZighKGY9MHx4RChwKSkpe2Fbaz4+Ml09cCxYcigwLDEwNDM4NCxrKTticmVha31p''@;'; put 'put ''ZighKG09MHxnUyhmLDEzODgyMSkpKXthW00+PjJdPWYsWHIoMCwxMDQ0MTIsTSk7YnJlYWt9Zm9yKDtwPTB8eWxlKG0pOylUbihsLHApO1RuKGwsMTUzNTk5KSx1dyhtKX19d2hpbGUoMCk7QT1BKzF8MH19d2hpbGUoMCk7b2U9RH1mdW5jdGlvbiBBUShsLGMpe2x8PTA7dmFyIGY9MCxwPTAs''@;'; put 'put ''bT0wO2M9MHxhWzUyKyhjfD0wKT4+Ml07ZTpmb3IoOzspe2Y9MHx1ZVtjPj4wXTt0OmRve3N3aXRjaChmPDwyND4+MjQpe2Nhc2UgMDpicmVhayBlO2Nhc2UgMzc6aWYoMzc9PSgwfHVlW2MrMT4+MF0pKXtpZigwIT0oMHxpNChmPWMrMnwwLDEwNDQ0MCwzKSkmJjAhPSgwfGk0KGYsMTA0NDQ0''@;'; put 'put ''LDUpKSYmMCE9KDB8aTQoZiwxMDQ0NTAsMykpJiYwIT0oMHxpNChmLDEwNDQ1NCw3KSkpe2Y9Mzc7YnJlYWsgdH1tPTM3O246Zm9yKDs7KXtzd2l0Y2gobTw8MjQ+PjI0KXtjYXNlIDEzOnA9MTA7YnJlYWsgbjtjYXNlIDEwOmNhc2UgMDpwPTEyO2JyZWFrIG59Yz1tPWMrMXwwLG09MHx1ZVtt''@;'; put 'put ''Pj4wXX1pZigxMD09KDB8cCkpe2lmKDEwPT0oMHx1ZVsoZj1jKzF8MCk+PjBdKSl7Yz1jKzJ8MDtjb250aW51ZSBlfX1lbHNlIDEyPT0oMHxwKSYmKGY9YysxfDApO2M9bTw8MjQ+PjI0PT0wP2M6Zjtjb250aW51ZSBlfWY9Mzd9fXdoaWxlKDApO3Q6Zm9yKDs7KXtzd2l0Y2goZjw8MjQ+PjI0''@;'; put 'put ''KXtjYXNlIDEwOmNhc2UgMTM6Y2FzZSAwOmJyZWFrIHR9TUYobCxmPDwyND4+MjQpLGM9bT1jKzF8MCxmPTB8dWVbbT4+MF19cD1jKzF8MCxjPWY8PDI0Pj4yND09MTMmJjEwPT0oMHx1ZVtwPj4wXSk/YysyfDA6Zjw8MjQ+PjI0PT0wP2M6cCxNRihsLDEwKX19ZnVuY3Rpb24gSU4obCxjKXts''@;'; put 'put ''fD0wLGN8PTA7dmFyIG0sZj0wLHA9MCxBPTA7bT1vZSxvZT1vZSsxNnwwLGY9bTtlOmRve3N3aXRjaCgwfGMpe2Nhc2UgMDpwPWw7YnJlYWs7Y2FzZSAxOnA9MHxsSihsKTticmVhaztkZWZhdWx0OnN3aXRjaCgwfE1hZShsKSl7Y2FzZSAyOmJyZWFrO2Nhc2UgMTpwPTB8bEoobCk7YnJlYWsg''@;'; put 'put ''ZTtkZWZhdWx0OnA9bDticmVhayBlfTB8YVs0NzI2OF18fChYcigwLDEwNDUyNSxmKSxhWzQ3MjY4XT0xKSxwPWx9fXdoaWxlKDApOzB8YVs0NzI2OV18fG9zKDE4OTA3NiwwLDApLChjPTB8YVs0NzI3MF0pPj4+MD49KDB8YVs0NzI3MV0pPj4+MCYmKEcwKDE4OTA3NiwxKSxjPTB8YVs0NzI3''@;'; put 'put ''MF0pLGFbNDcyNzBdPWMrMSx1ZVtjPj4wXT00MCxmPXA7ZTpmb3IoOzspe3N3aXRjaCgwfHVlW2Y+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDkyOmNhc2UgNDE6Y2FzZSA0MDooYz0wfGFbNDcyNzBdKT4+PjA+PSgwfGFbNDcyNzFdKT4+PjAmJihHMCgxODkwNzYsMSksYz0wfGFbNDcyNzBd''@;'; put 'put ''KSxhWzQ3MjcwXT1jKzEsdWVbYz4+MF09OTJ9KGM9MHxhWzQ3MjcwXSk+Pj4wPj0oMHxhWzQ3MjcxXSk+Pj4wJiYoRzAoMTg5MDc2LDEpLGM9MHxhWzQ3MjcwXSksQT0wfHVlW2Y+PjBdLGFbNDcyNzBdPWMrMSx1ZVtjPj4wXT1BLGY9ZisxfDB9cmV0dXJuKGM9MHxhWzQ3MjcwXSk+Pj4wPj0o''@;'; put 'put ''MHxhWzQ3MjcxXSk+Pj4wJiYoRzAoMTg5MDc2LDEpLGM9MHxhWzQ3MjcwXSksYVs0NzI3MF09YysxLHVlW2M+PjBdPTQxLCgwfHApIT0oMHxsKSYmSHQocCksKGM9MHxhWzQ3MjcwXSk+Pj4wPj0oMHxhWzQ3MjcxXSk+Pj4wJiYoRzAoMTg5MDc2LDEpLGM9MHxhWzQ3MjcwXSksdWVbYz4+MF09''@;'; put 'put ''MCxhWzQ3MjcwXT1BPTB8YVs0NzI2OV0sb2U9bSwwfEF9ZnVuY3Rpb24gTWFlKGwpe2x8PTA7dmFyIGM9MCxmPTA7Yz0wO2U6Zm9yKDs7KXtmb3IoOzspe2lmKCEoKGY9MHx1ZVtsPj4wXSk8PDI0Pj4yNCkpYnJlYWsgZTtpZighKCgyNTUmZik8MTI3KSlicmVhaztsPWwrMXwwfWlmKCgtNCZm''@;'; put 'put ''KTw8MjQ+PjI0IT0tNjQpe2M9MjticmVha31jPTEsbD1sKzJ8MH1yZXR1cm4gMHxjfWZ1bmN0aW9uIFo3KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgdyxiLGssTSxELEE9MCxSPTAsRz0wO0Q9b2Usb2U9b2UrOTZ8MCx3PUQrODB8MCxiPUQrNzJ8MCxNPUQrNjR8MCxrPUQs''@;'; put 'put ''X1soQT1EKzMyfDApPj4zXT0rX1sobHw9MCk+PjNdLF9bQSs4Pj4zXT0rX1tsKzg+PjNdLF9bQSsxNj4+M109K19bYz4+M10sX1tBKzI0Pj4zXT0rX1tjKzg+PjNdO2Rve2lmKCgwfHlfKGYsQSxiKSk+PTApe2lmKG0pYVt3Pj4yXT1hW2I+PjJdLGFbdys0Pj4yXT1hW2IrND4+Ml0sTWQodyxN''@;'; put 'put ''KTtlbHNle2ZvcihtPTB8YVs0NzI3NF0sKDB8KGw9MHxhWyhjPWYrNHwwKT4+Ml0pKT4oMHxhWzQ3MjczXSk/KGw9bT8wfGwwKG0sbDw8NSk6MHxRbihsPDw1KSxhWzQ3Mjc0XT1sLGFbNDcyNzNdPUE9MHxhW2M+PjJdLG09bCk6QT1sLGM9MHxhW2Y+PjJdLGw9MDshKCgwfGwpPj0oMHxBKSk7''@;'; put 'put ''KWFbKFI9bSsobDw8NSl8MCk+PjJdPWFbKGY9YysobDw8NCl8MCk+PjJdLGFbUis0Pj4yXT1hW2YrND4+Ml0sYVtSKzg+PjJdPWFbZis4Pj4yXSxhW1IrMTI+PjJdPWFbZisxMj4+Ml0sYVsoUj1tKyhsPDw1KSsxNnwwKT4+Ml09YVsoRz1jKygoKDB8KGY9bCsxfDApKSUoMHxBKXwwKTw8NCl8''@;'; put 'put ''MCk+PjJdLGFbUis0Pj4yXT1hW0crND4+Ml0sYVtSKzg+PjJdPWFbRys4Pj4yXSxhW1IrMTI+PjJdPWFbRysxMj4+Ml0sbD1mO2lmKGFbaz4+Ml09MCxhW2srND4+Ml09MCxhW2srOD4+Ml09MCxhW2srMTI+PjJdPTAsYVtrKzE2Pj4yXT0wLGFbaysyMD4+Ml09MCxhW2srMjQ+PjJdPTAsYVtr''@;'; put 'put ''KzI4Pj4yXT0wLGFbdz4+Ml09YVtiPj4yXSxhW3crND4+Ml09YVtiKzQ+PjJdLCgwfHZ4KG0sQSx3LGssTSkpPDApe2w9MDticmVha319aWYoMHxETigwfGFbKGw9TSs0fDApPj4yXSkpbD0wO2Vsc2V7Zm9yKEE9MHxhW2w+PjJdLGw9MHxhWzQ3Mjc1XSxtPTB8YVtNPj4yXSxjPTA7ISgoMHxj''@;'; put 'put ''KT49KDB8QSkpOylhWyhHPWwrKGM8PDQpfDApPj4yXT1hWyhSPW0rKGM8PDQpfDApPj4yXSxhW0crND4+Ml09YVtSKzQ+PjJdLGFbRys4Pj4yXT1hW1IrOD4+Ml0sYVtHKzEyPj4yXT1hW1IrMTI+PjJdLGM9YysxfDA7YVtwPj4yXT1BfX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9RCww''@;'; put 'put ''fGx9ZnVuY3Rpb24gRE4obCl7bHw9MDt2YXIgZixwLGM9MDtwPW9lLG9lPW9lKzE2fDAsZj1wLGM9MHxhWzQ3Mjc2XTtkb3tpZigoMHxjKTwoMHxsKSl7aWYoYz0wfGwwKDB8YVs0NzI3NV0sKGw9bCszMDAtKCgwfGwpJTMwMHwwKStjfDApPDw0KSxhWzQ3Mjc1XT1jLGMpe2FbNDcyNzZdPWws''@;'; put 'put ''bD0wO2JyZWFrfVhyKDEsMTA0NjE1LGYpLGw9MTticmVha31sPTB9d2hpbGUoMCk7cmV0dXJuIG9lPXAsMHxsfWZ1bmN0aW9uIEVhZSgpe3ZhciBjLGw9MCxmPTA7Yz1vZSxvZT1vZSsxNnwwLGw9YyxhWzQ3Mjc3XT0xKyhmPTB8YVs0NzI3N10pO2Rve2lmKCgwfGYpPD0wKXtpZihmPTB8UW4o''@;'; put 'put ''NDgwMCksYVs0NzI3NV09ZiwhZil7WHIoMSwxMDQ2MzgsbCksbD0xO2JyZWFrfWFbNDcyNzZdPTMwMCxhWzQ3Mjc4XT0wLGFbNDcyNzldPTAsbD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBvZT1jLDB8bH1mdW5jdGlvbiB4YWUoKXt2YXIgYyxmO2M9b2Usb2U9b2UrMTZ8MCxhWzQ3Mjc3''@;'; put 'put ''XT0oZj0wfGFbNDcyNzddKS0xLCgwfGYpPD0xJiZIdCgwfGFbNDcyNzVdKSxvZT1jfWZ1bmN0aW9uIGdrKGwsYyl7cmV0dXJuIDB8eVEobHw9MCxjfD0wLDApfWZ1bmN0aW9uIHlRKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcGUsbWUsYmUsTGUsQmUsSGUsTXQsa3QsYXQsRXQsWnQsdXQs''@;'; put 'put ''cD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxPZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCx3dD0wLHJuPTA7Zm9yKHV0PW9lLG9lPW9lKzE3NnwwLE10PXV0KzE2OHwwLFp0PXV0KzEyOHwwLEJlPXV0KzEyMHwwLE9lPXV0KzExMnwwLEE9dXQrMTA0fDAs''@;'; put 'put ''cGU9dXQrODh8MCxNPXV0KzcyfDAsbT11dCs2NHwwLG1lPXV0KzE2MHwwLGF0PXV0KzE1MnwwLEhlPXV0KzE0NHwwLGJlPXV0KzMyfDAsTGU9dXQsRXQ9dXQrMTM2fDAsYVs0NzI3OF09MSsoMHxhWzQ3Mjc4XSksYVs0NzI3OV09KDB8YVs0NzI3OV0pKyhrdD0wfGFbbCs4MD4+Ml0pLHA9bCs4''@;'; put 'put ''OHwwOzspe2lmKCEoR2U9MHxhW3A+PjJdKSl7bHQ9NDticmVha31pZighKDB8dWVbMTEyKyhwPTB8YVtHZSsxNj4+Ml0pPj4wXSkpe2x0PTU7YnJlYWt9cD1wKzExNnwwfWRve2lmKDQ9PSgwfGx0KSlYcigxLDEwNDcxOSxtKSxwPTA7ZWxzZSBpZig1PT0oMHxsdCkpaWYoMHxUYWUoa3QscnQ9''@;'; put 'put ''MHxhW2wrODQ+PjJdLGwpKXA9MDtlbHNleygwfChtPWt0PDwzKSk+KDB8YVs0NzI4MF0pJiYocD0ocD0wfGFbNDcyODFdKT8wfGwwKHAsa3Q8PDcpOjB8UW4oa3Q8PDcpLGFbNDcyODFdPXAsYVs0NzI4MF09bSk7ZTpkb3tpZigoMHxrdCk+MSYmK19bcnQrOD4+M10+K19bcnQrNDA+PjNdKWZv''@;'; put 'put ''cihwPTA7Oyl7aWYoKDB8cCk9PSgwfGt0KSl7Uj0xO2JyZWFrIGV9az0rX1soamU9cnQrKHA8PDUpKzI0fDApPj4zXSxfW2plPj4zXT0tK19bKGV0PXJ0KyhwPDw1KSs4fDApPj4zXSxfW2V0Pj4zXT0tayxwPXArMXwwfWVsc2UgUj0wfXdoaWxlKDApO2lmKGplPUdlKzQ4fDAsZXQ9R2UrLTQ4''@;'; put 'put ''fDAsKDB8KHA9MHxhWygzPT0oMHwoSz0zJmFbR2U+PjJdKSk/R2U6amUpKzQwPj4yXSkpPT0oMHxhWygyPT0oMHxLKT9HZTpldCkrNDA+PjJdKSl7YVtBPj4yXT0wfCRyKHApLFhyKDEsMTA0ODI2LEEpLHA9MDticmVha31EPWt0Ky0xfDAsSz1HPTB8YVs0NzI4MV0scD0wLHc9MDtlOmZvcig7''@;'; put 'put ''Oyl7aWYoKDB8dyk+PSgwfGt0KSl7dz1ELE09cDticmVha31tPSgwfHcpPjA/K19bcnQrKHc8PDUpKzg+PjNdPitfW3J0Kyh3Ky0xPDw1KSs4Pj4zXT8tMToxOjAsQT0oMHx3KTwoMHxEKT8rX1tydCsodysxPDw1KSs4Pj4zXT4rX1tydCsodzw8NSkrOD4+M10/MTotMTowO3Q6ZG97aWYoKDB8''@;'; put 'put ''bSkhPSgwfEEpKXtpZigxPT0oMHxtKXwtMT09KDB8QSkpe19bRysocDw8NCk+PjNdPStfWyhtPXJ0Kyh3PDw1KXwwKT4+M10sQT1wKzF8MCxfW0crKHA8PDQpKzg+PjNdPStfW3J0Kyh3PDw1KSsyND4+M10sX1tHKyhBPDw0KT4+M109K19bbT4+M10sbT1ydCsodzw8NSkrOHwwLGx0PTI5O2Jy''@;'; put 'put ''ZWFrfV9bRysocDw8NCk+PjNdPStfWyhtPXJ0Kyh3PDw1KSsxNnwwKT4+M10sQT1wKzF8MCxfW0crKHA8PDQpKzg+PjNdPStfW3J0Kyh3PDw1KSs4Pj4zXSxfW0crKEE8PDQpPj4zXT0rX1ttPj4zXSxtPXJ0Kyh3PDw1KSsyNHwwLGx0PTI5O2JyZWFrfXN3aXRjaCgwfG0pe2Nhc2UtMTpicmVh''@;'; put 'put ''ayB0O2Nhc2UgMDpicmVhaztkZWZhdWx0Omx0PTI4O2JyZWFrIGV9X1tHKyhwPDw0KT4+M109K19bKG09cnQrKHc8PDUpfDApPj4zXSxBPXArMXwwLF9bRysocDw8NCkrOD4+M109K19bcnQrKHc8PDUpKzI0Pj4zXSxfW0crKEE8PDQpPj4zXT0rX1ttPj4zXSxtPXJ0Kyh3PDw1KSs4fDAsbHQ9''@;'; put 'put ''Mjl9d2hpbGUoMCk7Mjk9PSgwfGx0KSYmKGx0PTAsX1tHKyhBPDw0KSs4Pj4zXT0rX1ttPj4zXSxwPXArMnwwKSx3PXcrMXwwfWlmKDI4PT0oMHxsdCkpe2FbTT4+Ml09bSxhW00rND4+Ml09bSxhW00rOD4+Ml09NDgwLFhyKDEsMTA0NzYxLE0pLHA9MDticmVha31lOmZvcig7ISgoMHx3KTw9''@;'; put 'put ''LTEpOyl7cD0oMHx3KTwoMHxEKT8rX1tydCsodzw8NSkrOD4+M10+K19bcnQrKHcrMTw8NSkrOD4+M10/LTE6MTowLG09KDB8dyk+MD8rX1tydCsodystMTw8NSkrOD4+M10+K19bcnQrKHc8PDUpKzg+PjNdPzE6LTE6MDt0OmRve2lmKCgwfHApIT0oMHxtKSl7aWYoMT09KDB8cCl8LTE9PSgw''@;'; put 'put ''fG0pKXtfW0crKE08PDQpPj4zXT0rX1socD1ydCsodzw8NSl8MCk+PjNdLG09TSsxfDAsX1tHKyhNPDw0KSs4Pj4zXT0rX1tydCsodzw8NSkrMjQ+PjNdLF9bRysobTw8NCk+PjNdPStfW3A+PjNdLHA9cnQrKHc8PDUpKzh8MCxBPTI7YnJlYWt9X1tHKyhNPDw0KT4+M109K19bKHA9cnQrKHc8''@;'; put 'put ''PDUpKzE2fDApPj4zXSxtPU0rMXwwLF9bRysoTTw8NCkrOD4+M109K19bcnQrKHc8PDUpKzg+PjNdLF9bRysobTw8NCk+PjNdPStfW3A+PjNdLHA9cnQrKHc8PDUpKzI0fDAsQT0yO2JyZWFrfXN3aXRjaCgwfHApe2Nhc2UgMDpfW0crKE08PDQpPj4zXT0rX1socD1ydCsodzw8NSkrMTZ8MCk+''@;'; put 'put ''PjNdLG09TSsxfDAsX1tHKyhNPDw0KSs4Pj4zXT0rX1tydCsodzw8NSkrOD4+M10sX1tHKyhtPDw0KT4+M109K19bcD4+M10scD1ydCsodzw8NSkrMjR8MCxBPTI7YnJlYWsgdDtjYXNlLTE6X1tHKyhNPDw0KT4+M109K19bKHJuPXJ0Kyh3PDw1KSsxNnwwKT4+M10sQT1NKzF8MCxfW0crKE08''@;'; put 'put ''PDQpKzg+PjNdPStfWyhwPXJ0Kyh3PDw1KSs4fDApPj4zXSxfW0crKEE8PDQpPj4zXT0rX1tybj4+M10sd3Q9TSsyfDAsX1tHKyhBPDw0KSs4Pj4zXT0rX1socm49cnQrKHc8PDUpKzI0fDApPj4zXSxfW0crKHd0PDw0KT4+M109K19bKEE9cnQrKHc8PDUpfDApPj4zXSxtPU0rM3wwLF9bRyso''@;'; put 'put ''d3Q8PDQpKzg+PjNdPStfW3JuPj4zXSxfW0crKG08PDQpPj4zXT0rX1tBPj4zXSxBPTQ7YnJlYWsgdDtkZWZhdWx0Omx0PTQyO2JyZWFrIGV9fXdoaWxlKDApO19bRysobTw8NCkrOD4+M109K19bcD4+M10sdz13Ky0xfDAsTT1NK0F8MH1pZig0Mj09KDB8bHQpKXthW3BlPj4yXT1wLGFbcGUr''@;'; put 'put ''ND4+Ml09cCxhW3BlKzg+PjJdPTUxMyxYcigxLDEwNDc2MSxwZSkscD0wO2JyZWFrfWU6ZG97aWYoUil7Zm9yKHA9MDs7KXtpZigoMHxwKT49KDB8a3QpKXtwPTA7YnJlYWt9az0rX1sod3Q9cnQrKHA8PDUpKzI0fDApPj4zXSxfW3d0Pj4zXT0tK19bKHJuPXJ0KyhwPDw1KSs4fDApPj4zXSxf''@;'; put 'put ''W3JuPj4zXT0tayxwPXArMXwwfWZvcig7Oyl7aWYoKDB8cCk+PSgwfE0pKXtwPTA7YnJlYWsgZX1fWyhybj1HKyhwPDw0KSs4fDApPj4zXT0tK19bcm4+PjNdLHA9cCsxfDB9fWVsc2UgcD0wfXdoaWxlKDApO2Zvcig7ISgoMHxwKT49KDB8a3QpKTspX1tydCsocDw8NSk+PjNdPTIxNDc0ODM2''@;'; put 'put ''NDcsX1tydCsocDw8NSkrMTY+PjNdPS0yMTQ3NDgzNjQ4LHA9cCsxfDA7aWYoYVttZT4+Ml09SyxhWyhBPW1lKzR8MCk+PjJdPU0sX1tiZT4+M109K19bbD4+M10sX1tiZSs4Pj4zXT0rX1tsKzg+PjNdLF9bYmUrMTY+PjNdPStfW2wrNDA+PjNdLF9bYmUrMjQ+PjNdPStfW2wrNDg+PjNdLCgw''@;'; put 'put ''fHlfKG1lLGJlLGF0KSk8MCl7WHIoMSwxMDQ4NjUsT2UpLHA9MDticmVha31pZihmKWFbTXQ+PjJdPWFbYXQ+PjJdLGFbTXQrND4+Ml09YVthdCs0Pj4yXSxNZChNdCxIZSk7ZWxzZXtmb3IocD0wfGFbNDcyNzRdLCgwfChtPTB8YVtBPj4yXSkpPigwfGFbNDcyNzNdKSYmKHA9cD8wfGwwKHAs''@;'; put 'put ''bTw8NSk6MHxRbihtPDw1KSxhWzQ3Mjc0XT1wLGFbNDcyNzNdPW09MHxhW0E+PjJdKSx3PTB8YVs0NzI4MV0sQT0wOyEoKDB8QSk+PSgwfG0pKTspYVsod3Q9cCsoQTw8NSl8MCk+PjJdPWFbKHJuPXcrKEE8PDQpfDApPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3Ju''@;'; put 'put ''Kzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLGFbKHd0PXArKEE8PDUpKzE2fDApPj4yXT1hWyhPZT13KygoKDB8KHJuPUErMXwwKSklKDB8bSl8MCk8PDQpfDApPj4yXSxhW3d0KzQ+PjJdPWFbT2UrND4+Ml0sYVt3dCs4Pj4yXT1hW09lKzg+PjJdLGFbd3QrMTI+PjJdPWFbT2UrMTI+''@;'; put 'put ''PjJdLEE9cm47aWYoMHx1ZVtsKzI5Pj4wXT8oYj0rbGEoKyhrPStfW2wrMTY+PjNdKSksaz0rSWEoK2spKTooYj0wLGs9MCksX1tMZSs4Pj4zXT1rLF9bTGU+PjNdPWIsMHx1ZVtsKzY5Pj4wXT8oYj0tK2xhKCsoaz0rX1tsKzU2Pj4zXSkpLGs9LStJYSgraykpOihiPTAsaz0wKSxfW0xlKzI0''@;'; put 'put ''Pj4zXT1rLF9bTGUrMTY+PjNdPWIsYVtNdD4+Ml09YVthdD4+Ml0sYVtNdCs0Pj4yXT1hW2F0KzQ+PjJdLCgwfHZ4KHAsbSxNdCxMZSxIZSkpPDApe1hyKDEsMTA0OTA0LEJlKSxwPTA7YnJlYWt9fWlmKDB8RE4oMHxhWyhNPUhlKzR8MCk+PjJdKSlwPTA7ZWxzZXtmb3IocD0wOyEoKDB8cCk+''@;'; put 'put ''PSgwfGt0KSk7KV9bcnQrKHA8PDUpPj4zXT0yMTQ3NDgzNjQ3LF9bcnQrKHA8PDUpKzE2Pj4zXT0tMjE0NzQ4MzY0OCxwPXArMXwwO2ZvcihBPTB8YVtNPj4yXSx3PTB8YVs0NzI3NV0sbT0wfGFbSGU+PjJdLHA9MDs7KXtpZigoMHxwKT49KDB8QSkpe0E9MSxwPTEwLG09MDticmVha31hWyhy''@;'; put 'put ''bj13KyhwPDw0KXwwKT4+Ml09YVsod3Q9bSsocDw8NCl8MCk+PjJdLGFbcm4rND4+Ml09YVt3dCs0Pj4yXSxhW3JuKzg+PjJdPWFbd3QrOD4+Ml0sYVtybisxMj4+Ml09YVt3dCsxMj4+Ml0scD1wKzF8MH1mb3IoOygwfG0pPDE1JkE8PDI0Pj4yNCE9MDspe2ZvcihtayhydCxrdCwwfGFbNDcy''@;'; put 'put ''NzVdLDB8YVtNPj4yXSxwKSx3PTA7ISgoMHx3KT49KDB8a3QpKTspe2lmKDIxNDc0ODM2NDc9PStfW3J0Kyh3PDw1KT4+M10pe2x0PTgyO2JyZWFrfWlmKC0yMTQ3NDgzNjQ4PT0rX1tydCsodzw8NSkrMTY+PjNdKXtsdD04MjticmVha313PXcrMXwwfTgyPT0oMHxsdCkmJihsdD0wLHA9cm49''@;'; put 'put ''cDw8MSxtPSgwfHJuKT4oMHwyMTQ3NDgzNjQ3LygwfGt0KSk/MTU6bSksQT0oMHx3KT09KDB8a3QpPzA6QSxtPW0rMXwwfUE8PDI0Pj4yNCYmKHd0PTB8JHIoMHxhWygzPT0oMyZhW0dlPj4yXXwwKT9HZTpqZSkrNDA+PjJdKSxybj0wfCRyKDB8YVsoMj09KDMmYVtHZT4+Ml18MCk/R2U6ZXQp''@;'; put 'put ''KzQwPj4yXSksYVtadD4+Ml09d3QsYVtadCs0Pj4yXT1ybixYcigwLDEwNDk0MixadCksYVtNdD4+Ml09YVthdD4+Ml0sYVtNdCs0Pj4yXT1hW2F0KzQ+PjJdLE1kKE10LEV0KSxtayhydCxrdCwwfGFbRXQ+PjJdLDB8YVtFdCs0Pj4yXSwxMCksSHQoMHxhW0V0Pj4yXSkpLGFbYz4+Ml09YVtN''@;'; put 'put ''Pj4yXSxwPTB8YVs0NzI3NV19fX13aGlsZSgwKTtyZXR1cm4gb2U9dXQsMHxwfWZ1bmN0aW9uIFRhZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIFp0LHV0LHd0LENyLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0w''@;'; put 'put ''LEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxybj0wLHluPTAsRm49MCxscj0wLE5yPTAsa3I9MCxjcj0wO2ZvcihDcj1vZSxvZT1vZSszMnwwLHV0PUNyKzE2fDAsWnQ9Q3IrOHwwLGs9Q3IscD0wLGI9MDshKCgwfGIpPj0oMHxsKSk7KXc9''@;'; put 'put ''YysoYjw8NSl8MCwhKCgobWU9K19bYysoYjw8NSkrOD4+M10tK19bYysoYjw8NSkrMjQ+PjNdKT49MD9tZTotbWUpPC4wMSkmJiEoKChtZT0rX1t3Pj4zXS0rX1tjKyhiPDw1KSsxNj4+M10pPj0wP21lOi1tZSk8LjAxKSYmKCgwfHApIT0oMHxiKSYmKGFbKGtyPWMrKHA8PDUpfDApPj4yXT1h''@;'; put 'put ''W3c+PjJdLGFba3IrND4+Ml09YVt3KzQ+PjJdLGFba3IrOD4+Ml09YVt3Kzg+PjJdLGFba3IrMTI+PjJdPWFbdysxMj4+Ml0sYVtrcisxNj4+Ml09YVt3KzE2Pj4yXSxhW2tyKzIwPj4yXT1hW3crMjA+PjJdLGFba3IrMjQ+PjJdPWFbdysyND4+Ml0sYVtrcisyOD4+Ml09YVt3KzI4Pj4yXSks''@;'; put 'put ''cD1wKzF8MCksYj1iKzF8MDt3dD1jKzE2fDA7ZG97aWYoK19bYz4+M10+K19bd3Q+PjNdfHwrX1soeW49Yys4fDApPj4zXT4rX1sobHI9YysyNHwwKT4+M10pY3I9MTI7ZWxzZXtmb3Ioa3I9cCstMXwwLEZuPTB8YVsxNTcxMl0sQmU9MDshKCgwfEJlKT49KDB8a3IpKTspe2lmKChtPStfWyhr''@;'; put 'put ''dD1jKygoTXQ9QmUrMXwwKTw8NSl8MCk+PjNdKT4oQT0rX1soYXQ9YysoTXQ8PDUpKzE2fDApPj4zXSkpe2NyPTE2O2JyZWFrfWlmKChNPStfWyhydD1jKyhNdDw8NSkrOHwwKT4+M10pPihEPStfWyhHZT1jKyhNdDw8NSkrMjR8MCk+PjNdKSl7Y3I9MTY7YnJlYWt9ITB8MV4oUj0wIT0oMHwo''@;'; put 'put ''SGU9KGw9MSYoT2U9K19bKGx0PWMrKEJlPDw1KXwwKT4+M10+QSkpKyhwPTEmKExlPStfWyhFdD1jKyhCZTw8NSkrMTZ8MCk+PjNdPG0pKSsoYj0xJihiZT0rX1soZXQ9YysoQmU8PDUpKzI0fDApPj4zXTxNKSkrKHc9MSYoaz0rX1soamU9YysoQmU8PDUpKzh8MCk+PjNdPkQpKXwwKSkpfHwo''@;'; put 'put ''YVt1dD4+Ml09QmUsYVt1dCs0Pj4yXT1NdCxUMChGbiwxMDUxNDIsdXQpLExOKGYpKTtlOmRve2lmKFIpZm9yKExlPyhrPXcsUj0wLHA9a3Qsdz1FdCxjcj0yNCk6T2U/KGs9dyxsPTAsUj1wLHA9YXQsdz1sdCxjcj0yNCk6YmU/KGs9dyxiPTAsUj1wLHA9cnQsdz1ldCxjcj0yNCk6ayYmKGs9''@;'; put 'put ''MCxSPXAscD1HZSx3PWplLGNyPTI0KSwyND09KDB8Y3IpJiYoY3I9MCxCZT1+fitfW3c+PjNdLF9bdz4+M109K19bcD4+M10sX1twPj4zXT0rKDB8QmUpLHc9ayxwPVIpLFI9SGUrLTF8MCxrPTA7Oyl7aWYoKDB8ayk+PSgwfFIpKWJyZWFrIGU7ZG97aWYoMSE9KDB8cCkpe2lmKDE9PSgwfGwp''@;'; put 'put ''KXtfW2F0Pj4zXT1tZT0rKDB8fn4oLjUqKCtfW2F0Pj4zXSsgK19bbHQ+PjNdKSsuNSkpLF9bbHQ+PjNdPW1lLGw9MDticmVha31pZigxPT0oMHxiKSl7X1tydD4+M109bWU9KygwfH5+KC41KigrX1tydD4+M10rICtfW2V0Pj4zXSkrLjUpKSxfW2V0Pj4zXT1tZSxiPTA7YnJlYWt9MT09KDB8''@;'; put 'put ''dykmJihfW0dlPj4zXT1tZT0rKDB8fn4oLjUqKCtfW0dlPj4zXSsgK19bamU+PjNdKSsuNSkpLF9bamU+PjNdPW1lLHc9MCl9ZWxzZSBfW2t0Pj4zXT1tZT0rKDB8fn4oLjUqKCtfW2t0Pj4zXSsgK19bRXQ+PjNdKSsuNSkpLF9bRXQ+PjNdPW1lLHA9MH13aGlsZSgwKTtrPWsrMXwwfX13aGls''@;'; put 'put ''ZSgwKTswIT0oMHwodz0wfHdRKH5+KEc9K19bbHQ+PjNdKSx+fihLPStfW0V0Pj4zXSksfn4ocGU9K19ba3Q+PjNdKSx+fihtZT0rX1thdD4+M10pKSkpJjAhPSgwfChwPTB8d1Eofn4oRD0rX1tqZT4+M10pLH5+KE09K19bZXQ+PjNdKSx+fihBPStfW3J0Pj4zXSksfn4obT0rX1tHZT4+M10p''@;'; put 'put ''KSkpPygwfHcpPCgwfHApPyhCZT1LPG1lLF9bKChHZT1LLUc+bWUtcGUpP0JlP0V0Omx0OkJlP2t0OmF0KT4+M109R2U/QmU/cGU6bWU6QmU/SzpHLEJlPU10KTooQmU9TTxtLF9bKChHZT1NLUQ+bS1BKT9CZT9FdDpsdDpCZT9rdDphdCkrOD4+M109R2U/QmU/QTptOkJlP006RCxCZT1NdCk6''@;'; put 'put ''QmU9TXR9aWYoMTY9PSgwfGNyKSl7YVtadD4+Ml09TXQsWHIoMSwxMDUwOTYsWnQpLExOKGYpLHA9MTticmVha31pZighKChtPStfW2Y+PjNdKTwoQT0rX1tjPj4zXSkpJiYhKG0+K19bd3Q+PjNdKSYmISgocm49K19bZis4Pj4zXSk8K19beW4+PjNdKSYmIShybj4rX1tscj4+M10pfHwobTxB''@;'; put 'put ''P19bZj4+M109QTpBPW0sQT4obT0rX1t3dD4+M10pJiYoX1tmPj4zXT1tKSwoQT0rX1socD1mKzh8MCk+PjNdKTwobT0rX1t5bj4+M10pJiYoX1twPj4zXT1tLEE9bSksQT4obT0rX1tscj4+M10pJiYoX1twPj4zXT1tKSksISgobT0rX1sodz1mKzQwfDApPj4zXSk8KEE9K19bKHA9Yysoa3I8''@;'; put 'put ''PDUpfDApPj4zXSl8fG0+K19bYysoa3I8PDUpKzE2Pj4zXXx8KE5yPStfW2YrNDg+PjNdLE5yPCtfW2MrKGtyPDw1KSs4Pj4zXSl8fE5yPitfW2MrKGtyPDw1KSsyND4+M10pKXtwPTA7YnJlYWt9bTxBJiYoX1t3Pj4zXT1BLG09QSksbT4oQT0rX1tjKyhrcjw8NSkrMTY+PjNdKSYmKF9bdz4+''@;'; put 'put ''M109QSksKG09K19bKHA9Zis0OHwwKT4+M10pPChBPStfW2MrKGtyPDw1KSs4Pj4zXSk/X1twPj4zXT1BOkE9bSxBPihtPStfW2MrKGtyPDw1KSsyND4+M10pJiYoX1twPj4zXT1tKSxwPTB9fXdoaWxlKDApO3JldHVybiAxMj09KDB8Y3IpJiYoWHIoMSwxMDUwNTEsayksTE4oZikscD0xKSxv''@;'; put 'put ''ZT1DciwwfHB9ZnVuY3Rpb24gbWsobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MDt2YXIgT2UsTGUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTA7TGU9MS8rKDB8KE9lPTB8dnIobXw9MCxjfD0w''@;'; put 'put ''KSkpLG09MDtlOmZvcig7QmU9bSszfDAsISgoMHxCZSk+PSgwfHApKTspZm9yKEs9ZisobTw8NCl8MCxwZT1mKyhtPDw0KSs4fDAsYmU9bSsxfDAsbWU9ZisoYmU8PDQpfDAsYmU9ZisoYmU8PDQpKzh8MCxrPW0rMnwwLGI9Zisoazw8NCl8MCxrPWYrKGs8PDQpKzh8MCxNPWYrKEJlPDw0KXww''@;'; put 'put ''LEQ9ZisoQmU8PDQpKzh8MCx3PTA7Oyl7aWYoKDB8dyk+KDB8T2UpKXttPUJlO2NvbnRpbnVlIGV9Zm9yKFI9KChydD0rX1ttZT4+M10pLShSPStfW0s+PjNdKSkqKEhlPUxlKisoMHx3KSkrUixHPSgoamU9K19bYmU+PjNdKS0oRz0rX1twZT4+M10pKSpIZStHLFI9KCgoR2U9K19bYj4+M10p''@;'; put 'put ''LShydD0oR2UtcnQpKkhlK3J0KSsoK19bTT4+M10tR2UpKkhlKSpIZStydC0oUj0ocnQtUikqSGUrUikpKkhlK1IsRz0oKChldD0rX1trPj4zXSktKGplPShldC1qZSkqSGUramUpKygrX1tEPj4zXS1ldCkqSGUpKkhlK2plLShHPShqZS1HKSpIZStHKSkqSGUrRyxBPTA7ISgoMHxBKT49KDB8''@;'; put 'put ''YykpOylHPD0rX1tsKyhBPDw1KSsyND4+M10rMWUtNCYmRz49K19bbCsoQTw8NSkrOD4+M10tMWUtNCYmKCtfWyhtPWwrKEE8PDUpfDApPj4zXT5SJiYoX1ttPj4zXT1SKSwrX1sobT1sKyhBPDw1KSsxNnwwKT4+M108UiYmKF9bbT4+M109UikpLEE9QSsxfDA7dz13KzF8MH19ZnVuY3Rpb24g''@;'; put 'put ''TE4obCl7dmFyIGYscCxBLHcsYixrLGM9MCxtPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MDtmb3Ioaz1vZSxvZT1vZSsxMTJ8MCx3PWsrODB8MCxiPWsrNDh8MCxBPWsrOHwwLGY9MHxhWzE1NzEyXSxhWyhtPWspPj4yXT1hWyhwPTgwKyhsfD0wKXwwKT4+Ml0sVDAoZiwxMDUyNjgsbSksbT1sKzg0''@;'; put 'put ''fDAsYz0wOyEoKDB8Yyk+PSgwfGFbcD4+Ml0pKTspRz0rX1soSz0wfGFbbT4+Ml0pKyhjPDw1KT4+M10sUj0rX1tLKyhjPDw1KSs4Pj4zXSxEPStfW0srKGM8PDUpKzE2Pj4zXSxNPStfW0srKGM8PDUpKzI0Pj4zXSxhW0E+PjJdPWMsX1tBKzg+PjNdPUcsX1tBKzE2Pj4zXT1SLF9bQSsyND4+''@;'; put 'put ''M109RCxfW0ErMzI+PjNdPU0sVDAoZiwxMDUyNzksQSksYz1jKzF8MDtHPStfW2wrOD4+M10sUj0rX1tsKzE2Pj4zXSxLPTB8dWVbbCsyOT4+MF0/MTA1MzEwOjEwNTMyMixfW2I+PjNdPStfW2w+PjNdLF9bYis4Pj4zXT1HLF9bYisxNj4+M109UixhW2IrMjQ+PjJdPUssVDAoZiwxMDUzMzgs''@;'; put 'put ''YiksUj0rX1tsKzQ4Pj4zXSxHPStfW2wrNTY+PjNdLEs9MHx1ZVtsKzY5Pj4wXT8xMDUzMTA6MTA1MzIyLF9bdz4+M109K19bbCs0MD4+M10sX1t3Kzg+PjNdPVIsX1t3KzE2Pj4zXT1HLGFbdysyND4+Ml09SyxUMChmLDEwNTM4OSx3KSxvZT1rfWZ1bmN0aW9uIHdRKGwsYyxmLHApe2x8PTAs''@;'; put 'put ''Y3w9MCxmfD0wLHB8PTA7ZG97aWYoKDB8Yyk+KDB8ZikmKDB8cCk+KDB8bCkpe2lmKCEoKDB8Zik+KDB8bCl8KDB8cCk8KDB8bCkpKXtsPXAtbHwwO2JyZWFrfWlmKCgwfGMpPCgwfGYpfCgwfGMpPigwfHApKXtsPSgwfChjPWMtbHwwKSk8KDB8KGw9cC1mfDApKT9jOmw7YnJlYWt9bD1jLWZ8''@;'; put 'put ''MDticmVha31sPTB9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiB2ayhsLGMpe3JldHVybiAwfHlRKGx8PTAsY3w9MCwxKX1mdW5jdGlvbiBJYWUobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wO2ZvcihrPW9lLG9lPW9lKzgwfDAsQT1rLGI9MSxtPWN8''@;'; put 'put ''PTA7dz1tLDAhPSgwfChtPTB8YVsxNzIrKDB8YVttKzE2Pj4yXSk+PjJdKSkmKDB8dykhPSgwfG0pOyliPWIrMXwwO2ZvcigoMHxiKT49MjEmJihBPTB8bXIoYjw8MikpLHc9MCxtPWM7ISgoMHx3KT49KDB8YikpOylhW0ErKHc8PDIpPj4yXT1tLHc9dysxfDAsbT0wfGFbMTcyKygwfGFbbSsx''@;'; put 'put ''Nj4+Ml0pPj4yXTtiUShsLEEsYixmLHApLCgwfGIpPjIwJiZIdChBKSxvZT1rfWZ1bmN0aW9uIGJRKGwsYyxmLHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgbWUsamUsZXQscnQsR2UsbHQsa3QsYXQsRXQsWnQsdXQsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9''@;'; put 'put ''MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsTXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTA7dXQ9b2Usb2U9b2UrMzA0fDAsZXQ9dXQrMjcyfDAsYXQ9dXQrMzJ8MCxFdD11dCsxNnwwLFp0PXV0LEs9dXQrMTkyfDAsSGU9dXQrMTc2fDAsQT11dCsxNjB8MCxydD11dCsyOTZ8MCxHZT11''@;'; put 'put ''dCsyODh8MCxiPSh3PTB8YVsoY3w9MCk+PjJdKS00OHwwLGx0PTB8YVsoMj09KDB8KExlPTMmYVt3Pj4yXSkpP3c6YikrNDA+PjJdLG1lPTE2KyhrdD11dCs5NnwwKXwwLE10PTE2KygwfGFbKEJlPXcrMTZ8MCk+PjJdKXwwLGFbKGplPXV0KzIwOHwwKT4+Ml09YVsoTGU9MTYrKDB8YVsxNiso''@;'; put 'put ''MHxhWygzPT0oMHxMZSk/dzp3KzQ4fDApKzQwPj4yXSk+PjJdKXwwKT4+Ml0sYVtqZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbamUrOD4+Ml09YVtMZSs4Pj4yXSxhW2plKzEyPj4yXT1hW0xlKzEyPj4yXSxhW2V0Pj4yXT1hW010Pj4yXSxhW2V0KzQ+PjJdPWFbTXQrND4+Ml0sYVtldCs4Pj4yXT1h''@;'; put 'put ''W010Kzg+PjJdLGFbZXQrMTI+PjJdPWFbTXQrMTI+PjJdLF9RKEssamUsZXQpLGFba3Q+PjJdPWFbSz4+Ml0sYVtrdCs0Pj4yXT1hW0srND4+Ml0sYVtrdCs4Pj4yXT1hW0srOD4+Ml0sYVtrdCsxMj4+Ml09YVtLKzEyPj4yXSxhW21lPj4yXT1hW0s+PjJdLGFbbWUrND4+Ml09YVtLKzQ+PjJd''@;'; put 'put ''LGFbbWUrOD4+Ml09YVtLKzg+PjJdLGFbbWUrMTI+PjJdPWFbSysxMj4+Ml0sYVtFdD4+Ml09YVtLPj4yXSxhW0V0KzQ+PjJdPWFbSys0Pj4yXSxhW0V0Kzg+PjJdPWFbSys4Pj4yXSxhW0V0KzEyPj4yXT1hW0srMTI+PjJdLEs9a3QrMzJ8MCxNdD1rdCs0OHwwLEJlPTU2KygwfGFbQmU+PjJd''@;'; put 'put ''KXwwLGFbamU+PjJdPWFbKExlPTE2KygwfGFbbHQrMTY+PjJdKXwwKT4+Ml0sYVtqZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbamUrOD4+Ml09YVtMZSs4Pj4yXSxhW2plKzEyPj4yXT1hW0xlKzEyPj4yXSxhW2V0Pj4yXT1hW0JlPj4yXSxhW2V0KzQ+PjJdPWFbQmUrND4+Ml0sYVtldCs4Pj4yXT1h''@;'; put 'put ''W0JlKzg+PjJdLGFbZXQrMTI+PjJdPWFbQmUrMTI+PjJdLF9RKEhlLGplLGV0KSxhW010Pj4yXT1hW0hlPj4yXSxhW010KzQ+PjJdPWFbSGUrND4+Ml0sYVtNdCs4Pj4yXT1hW0hlKzg+PjJdLGFbTXQrMTI+PjJdPWFbSGUrMTI+PjJdLGFbSz4+Ml09YVtIZT4+Ml0sYVtLKzQ+PjJdPWFbSGUr''@;'; put 'put ''ND4+Ml0sYVtLKzg+PjJdPWFbSGUrOD4+Ml0sYVtLKzEyPj4yXT1hW0hlKzEyPj4yXSxhW1p0Pj4yXT1hW0hlPj4yXSxhW1p0KzQ+PjJdPWFbSGUrND4+Ml0sYVtadCs4Pj4yXT1hW0hlKzg+PjJdLGFbWnQrMTI+PjJdPWFbSGUrMTI+PjJdO2U6ZG97aWYoMSE9KDB8ZikmMD09KDB8dWVbMTk0''@;'; put 'put ''OTU0XSkpZm9yKGs9K19ba3Q+PjNdLE09K19bTXQ+PjNdLHd0PWstTSxEPStfW2t0Kzg+PjNdLFI9K19ba3QrNTY+PjNdLHBlPUQtUixHPXBlKnBlLEcrd3Qqd3Q8MWUtNj8oYVttZT4+Ml09YVtrdD4+Ml0sYVttZSs0Pj4yXT1hW2t0KzQ+PjJdLGFbbWUrOD4+Ml09YVtrdCs4Pj4yXSxhW21l''@;'; put 'put ''KzEyPj4yXT1hW2t0KzEyPj4yXSxhW0s+PjJdPWFbTXQ+PjJdLGFbSys0Pj4yXT1hW010KzQ+PjJdLGFbSys4Pj4yXT1hW010Kzg+PjJdLGFbSysxMj4+Ml09YVtNdCsxMj4+Ml0sSGU9a3QrMjR8MCxCZT1rdCs0MHwwLE09MCxrPTApOihybj1NLWssd3Q9K0YwKCsoRytybipybikpLExlPTB8''@;'; put 'put ''YVsyNDgrKDB8YVsxNisoMHxhW2wrNjA+PjJdKT4+Ml0pPj4yXSx5bj0rKDB8KDB8dnIoTGUsZistMXwwKSkvMiksRz1wZSp5bi93dCxfW21lPj4zXT1HK2ssaz1ybip5bi93dCxIZT1rdCsyNHwwLF9bSGU+PjNdPWsrRCxfW0s+PjNdPUcrTSxCZT1rdCs0MHwwLF9bQmU+PjNdPVIrayxrPSso''@;'; put 'put ''MC1MZXwwKSxNPXJuKmsvd3Qsaz1wZSprL3d0KSxwPTY9PSgwfHApLGJlPUdlKzR8MCxPZT1ydCs0fDAsdz0wOzspe2lmKCgwfHcpPj0oMHxmKSlicmVhayBlO2I9KExlPTB8YVtjKyh3PDwyKT4+Ml0pLTQ4fDA7dDpkb3tpZigoMHxhWygyPT0oMyZhW0xlPj4yXXwwKT9MZTpiKSs0MD4+Ml0p''@;'; put 'put ''PT0oMHxsdCkpZm9yKGFbRXQ+PjJdPWFba3Q+PjJdLGFbRXQrND4+Ml09YVtrdCs0Pj4yXSxhW0V0Kzg+PjJdPWFba3QrOD4+Ml0sYVtFdCsxMj4+Ml09YVtrdCsxMj4+Ml0sYVtadD4+Ml09YVtNdD4+Ml0sYVtadCs0Pj4yXT1hW010KzQ+PjJdLGFbWnQrOD4+Ml09YVtNdCs4Pj4yXSxhW1p0''@;'; put 'put ''KzEyPj4yXT1hW010KzEyPj4yXSxBPTA7Oyl7aWYoND09KDB8QSkpYnJlYWsgdDthWyhGbj1hdCsoQTw8NCl8MCk+PjJdPWFbKGxyPWt0KyhBPDw0KXwwKT4+Ml0sYVtGbis0Pj4yXT1hW2xyKzQ+PjJdLGFbRm4rOD4+Ml09YVtscis4Pj4yXSxhW0ZuKzEyPj4yXT1hW2xyKzEyPj4yXSxBPUEr''@;'; put 'put ''MXwwfWVsc2UgZm9yKGFbRXQ+PjJdPWFbTXQ+PjJdLGFbRXQrND4+Ml09YVtNdCs0Pj4yXSxhW0V0Kzg+PjJdPWFbTXQrOD4+Ml0sYVtFdCsxMj4+Ml09YVtNdCsxMj4+Ml0sYVtadD4+Ml09YVtrdD4+Ml0sYVtadCs0Pj4yXT1hW2t0KzQ+PjJdLGFbWnQrOD4+Ml09YVtrdCs4Pj4yXSxhW1p0''@;'; put 'put ''KzEyPj4yXT1hW2t0KzEyPj4yXSxBPTA7Oyl7aWYoND09KDB8QSkpYnJlYWsgdDthWyhscj1hdCsoMy1BPDw0KXwwKT4+Ml09YVsoRm49a3QrKEE8PDQpfDApPj4yXSxhW2xyKzQ+PjJdPWFbRm4rND4+Ml0sYVtscis4Pj4yXT1hW0ZuKzg+PjJdLGFbbHIrMTI+PjJdPWFbRm4rMTI+PjJdLEE9''@;'; put 'put ''QSsxfDB9fXdoaWxlKDApO2lmKHApe2ZvcihhW2JlPj4yXT00LGFbR2U+PjJdPWplLEE9MDs0IT0oMHxBKTspYVsobHI9amUrKEE8PDQpfDApPj4yXT1hWyhGbj1hdCsoQTw8NCl8MCk+PjJdLGFbbHIrND4+Ml09YVtGbis0Pj4yXSxhW2xyKzg+PjJdPWFbRm4rOD4+Ml0sYVtscisxMj4+Ml09''@;'; put 'put ''YVtGbisxMj4+Ml0sQT1BKzF8MDthW2V0Pj4yXT1hW0dlPj4yXSxhW2V0KzQ+PjJdPWFbR2UrND4+Ml0sTWQoZXQscnQpLEF1KExlLDB8YVsoMj09KDMmYVtMZT4+Ml18MCk/TGU6YikrNDA+PjJdLDB8YVtydD4+Ml0sMHxhW09lPj4yXSxtKX1lbHNlIEF1KExlLDB8YVsoMj09KDMmYVtMZT4+''@;'; put 'put ''Ml18MCk/TGU6YikrNDA+PjJdLGF0LDQsbSk7YVtqZT4+Ml09YVtFdD4+Ml0sYVtqZSs0Pj4yXT1hW0V0KzQ+PjJdLGFbamUrOD4+Ml09YVtFdCs4Pj4yXSxhW2plKzEyPj4yXT1hW0V0KzEyPj4yXSxhW2V0Pj4yXT1hW1p0Pj4yXSxhW2V0KzQ+PjJdPWFbWnQrND4+Ml0sYVtldCs4Pj4yXT1h''@;'; put 'put ''W1p0Kzg+PjJdLGFbZXQrMTI+PjJdPWFbWnQrMTI+PjJdLE55KDAsTGUpLF9bbWU+PjNdPStfW21lPj4zXStrLF9bSGU+PjNdPStfW0hlPj4zXStNLF9bSz4+M109K19bSz4+M10rayxfW0JlPj4zXT0rX1tCZT4+M10rTSx3PXcrMXwwfWVsc2UgND09KDB8cCkmJihEYWUoQSxsKSxhW2V0Pj4y''@;'; put 'put ''XT1hW0E+PjJdLGFbZXQrND4+Ml09YVtBKzQ+PjJdLGFbZXQrOD4+Ml09YVtBKzg+PjJdLGFbZXQrMTI+PjJdPWFbQSsxMj4+Ml0sTGFlKGt0LGV0KSksQXUodywwfGFbKDI9PSgzJmFbdz4+Ml18MCk/dzpiKSs0MD4+Ml0sa3QsNCxtKSxhW2plPj4yXT1hW0V0Pj4yXSxhW2plKzQ+PjJdPWFb''@;'; put 'put ''RXQrND4+Ml0sYVtqZSs4Pj4yXT1hW0V0Kzg+PjJdLGFbamUrMTI+PjJdPWFbRXQrMTI+PjJdLGFbZXQ+PjJdPWFbWnQ+PjJdLGFbZXQrND4+Ml09YVtadCs0Pj4yXSxhW2V0Kzg+PjJdPWFbWnQrOD4+Ml0sYVtldCsxMj4+Ml09YVtadCsxMj4+Ml0sTnkoMCx3KX13aGlsZSgwKTtvZT11dH1m''@;'; put 'put ''dW5jdGlvbiBfUShsLGMsZil7dmFyIHA7cD0rX1s4KyhmfD0wKT4+M10rICtfWzgrKGN8PTApPj4zXSxfWyhsfD0wKT4+M109K19bZj4+M10rICtfW2M+PjNdLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIERhZShsLGMpe2x8PTAsX1syMzMwNV09LjUqKCtfWzMyKyhjPTB8YVsxNisoY3w9MCk+PjJd''@;'; put 'put ''KT4+M10rICtfW2MrMTY+PjNdKSxfWzIzMzA2XT0uNSooK19bYys0MD4+M10rICtfW2MrMjQ+PjNdKSxhW2w+PjJdPWFbNDY2MTBdLGFbbCs0Pj4yXT1hWzQ2NjExXSxhW2wrOD4+Ml09YVs0NjYxMl0sYVtsKzEyPj4yXT1hWzQ2NjEzXX1mdW5jdGlvbiBMYWUobCxjKXtjfD0wO3ZhciBtLGY9''@;'; put 'put ''MCxwPTAsQT0wLHc9MCxiPTA7Yj0uNSooKHA9K19bNDgrKGx8PTApPj4zXSkrKEE9K19bbD4+M10pKSxtPS41KigoZj0rX1tsKzU2Pj4zXSkrKHc9K19bbCs4Pj4zXSkpLEE9LjIqK0YwKCsoKHc9Zi13KSp3KyhBPXAtQSkqQSkpLDAhPShwPStGMCgrKChmPStfW2MrOD4+M10tbSkqZisodz0r''@;'; put 'put ''X1tjPj4zXS1iKSp3KSkpJiYodz1iLXcvcCpBLGI9bS1mL3AqQSxfW2wrMzI+PjNdPXcsX1tsKzE2Pj4zXT13LF9bbCs0MD4+M109YixfW2wrMjQ+PjNdPWIpfWZ1bmN0aW9uIFkzKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAsbXw9MDt2YXIgTXQsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAs''@;'; put 'put ''Uj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsa3Q9MCxhdD0wLEV0PTAsWnQ9MCx1dD0wO2lmKE10PW9lLG9lPW9lKzIwOHwwLGJlPU10KzE5MnwwLG1lPU10KzE3NnwwLEdlPU10KzMyfDAsQmU9TXQrMTZ8MCxI''@;'; put 'put ''ZT1NdCxqZT1NdCsxNjB8MCxldD1NdCsxNDR8MCxPZT1NdCsxMjh8MCxMZT1NdCsxMTJ8MCxBPTIxMzA3MDY0MzImKHB8PTApLDQzNjIwNzYxNj09KDB8KHJ0PTA9PSg4JnB8MCk/MD09KDB8QSk/NDpBOjgpKSkhZnVuY3Rpb24gT2FlKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBtLEEs''@;'; put 'put ''dyxiLGs7bT1vZSxvZT1vZSsxMTJ8MCxrPTIqK19bOCsoY3w9MCk+PjNdLGFbKEE9bSk+PjJdPWFbYz4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4yXSxfW0ErMTY+PjNdPStfW2MrMTY+PjNdLF9bQSsyND4+M109ay0rX1tj''@;'; put 'put ''KzI0Pj4zXSxfW0ErMzI+PjNdPStfW2MrMzI+PjNdLF9bQSs0MD4+M109ay0rX1tjKzQwPj4zXSxfW0ErNDg+PjNdPStfW2MrNDg+PjNdLF9bQSs1Nj4+M109ay0rX1tjKzU2Pj4zXSxfW0ErNjQ+PjNdPStfW2MrNjQ+PjNdLF9bQSs3Mj4+M109ay0rX1tjKzcyPj4zXSxfW0ErODA+PjNdPStf''@;'; put 'put ''W2MrODA+PjNdLF9bQSs4OD4+M109ay0rX1tjKzg4Pj4zXSxhWyh3PUErOTZ8MCk+PjJdPWFbKGI9Yys5NnwwKT4+Ml0sYVt3KzQ+PjJdPWFbYis0Pj4yXSxhW3crOD4+Ml09YVtiKzg+PjJdLGFbdysxMj4+Ml09YVtiKzEyPj4yXSxXZihsLGMsZiwwLDAsMjU1JnApLFdmKGwsQSw3LDAsMCww''@;'; put 'put ''KSxvZT1tfShsLGMsZixtKTtlbHNle2ZvcihsdD0wfG1yKDY0KyhmPDw2KXwwKSxHPWYrLTF8MCxLPUhlKzh8MCxwZT1CZSs4fDAsUj0xMixwPTA7ISgoMHxwKT49KDB8ZikpOylhW0JlPj4yXT1hWyhEPWMrKHA8PDQpfDApPj4yXSxhW0JlKzQ+PjJdPWFbRCs0Pj4yXSxhW0JlKzg+PjJdPWFb''@;'; put 'put ''RCs4Pj4yXSxhW0JlKzEyPj4yXT1hW0QrMTI+PjJdLCgwfHApPCgwfEcpPyhhW0hlPj4yXT1hWyhEPWMrKChwPXArMXwwKTw8NCl8MCk+PjJdLGFbSGUrND4+Ml09YVtEKzQ+PjJdLGFbSGUrOD4+Ml09YVtEKzg+PjJdLGFbSGUrMTI+PjJdPWFbRCsxMj4+Ml0pOihhW0hlPj4yXT1hW2M+PjJd''@;'; put 'put ''LGFbSGUrND4+Ml09YVtjKzQ+PjJdLGFbSGUrOD4+Ml09YVtjKzg+PjJdLGFbSGUrMTI+PjJdPWFbYysxMj4+Ml0scD1wKzF8MCksUj1SPChNPS4zMzMzMzMzMzMzMzMzMzMzKitGMCgrKChrdD0rX1tLPj4zXS0rX1twZT4+M10pKmt0KyhNPStfW0hlPj4zXS0rX1tCZT4+M10pKk0pKSk/UjpN''@;'; put 'put ''O2ZvcihrPTgzODg2MDgwPT0oMTY3NzcyMTZ8QSksRD00PT0oMHxydCksYj0xNjc3NzIxNj09KDB8QSkscD0wLHc9MDshKCgwfHcpPj0oMHxmKSk7KWFbQmU+PjJdPWFbKEE9Yysodzw8NCl8MCk+PjJdLGFbQmUrND4+Ml09YVtBKzQ+PjJdLGFbQmUrOD4+Ml09YVtBKzg+PjJdLGFbQmUrMTI+''@;'; put 'put ''PjJdPWFbQSsxMj4+Ml0sKDB8dyk8KDB8Ryk/KGFbSGU+PjJdPWFbKEE9YysodysxPDw0KXwwKT4+Ml0sYVtIZSs0Pj4yXT1hW0ErND4+Ml0sYVtIZSs4Pj4yXT1hW0ErOD4+Ml0sYVtIZSsxMj4+Ml09YVtBKzEyPj4yXSk6KGFbSGU+PjJdPWFbYz4+Ml0sYVtIZSs0Pj4yXT1hW2MrND4+Ml0s''@;'; put 'put ''YVtIZSs4Pj4yXT1hW2MrOD4+Ml0sYVtIZSsxMj4+Ml09YVtjKzEyPj4yXSksTT1SLytGMCgrKChrdD0rX1tLPj4zXS0rX1twZT4+M10pKmt0KyhNPStfW0hlPj4zXS0rX1tCZT4+M10pKk0pKSxNPWs/LjMzMzMzMzMzMzMzMzMzMzMqTTpiPy41Kk06TSxBPWx0KyhwPDw0KXwwLEQ/KGFbbWU+''@;'; put 'put ''PjJdPWFbQmU+PjJdLGFbbWUrND4+Ml09YVtCZSs0Pj4yXSxhW21lKzg+PjJdPWFbQmUrOD4+Ml0sYVttZSsxMj4+Ml09YVtCZSsxMj4+Ml0sYVtiZT4+Ml09YVtIZT4+Ml0sYVtiZSs0Pj4yXT1hW0hlKzQ+PjJdLGFbYmUrOD4+Ml09YVtIZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW0hlKzEyPj4y''@;'; put 'put ''XSxwRChqZSwuNSpNLG1lLGJlKSxhW0E+PjJdPWFbamU+PjJdLGFbQSs0Pj4yXT1hW2plKzQ+PjJdLGFbQSs4Pj4yXT1hW2plKzg+PjJdLGFbQSsxMj4+Ml09YVtqZSsxMj4+Ml0pOihhW0E+PjJdPWFbQmU+PjJdLGFbQSs0Pj4yXT1hW0JlKzQ+PjJdLGFbQSs4Pj4yXT1hW0JlKzg+PjJdLGFb''@;'; put 'put ''QSsxMj4+Ml09YVtCZSsxMj4+Ml0pLEE9bHQrKHArMTw8NCl8MCxhW21lPj4yXT1hW0JlPj4yXSxhW21lKzQ+PjJdPWFbQmUrND4+Ml0sYVttZSs4Pj4yXT1hW0JlKzg+PjJdLGFbbWUrMTI+PjJdPWFbQmUrMTI+PjJdLGFbYmU+PjJdPWFbSGU+PjJdLGFbYmUrND4+Ml09YVtIZSs0Pj4yXSxh''@;'; put 'put ''W2JlKzg+PjJdPWFbSGUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtIZSsxMj4+Ml0scEQoZXQsTSxtZSxiZSksYVtBPj4yXT1hW2V0Pj4yXSxhW0ErND4+Ml09YVtldCs0Pj4yXSxhW0ErOD4+Ml09YVtldCs4Pj4yXSxhW0ErMTI+PjJdPWFbZXQrMTI+PjJdLEE9cCszfDAsYXQ9bHQrKHArMjw8NCl8''@;'; put 'put ''MCxhW21lPj4yXT1hW0JlPj4yXSxhW21lKzQ+PjJdPWFbQmUrND4+Ml0sYVttZSs4Pj4yXT1hW0JlKzg+PjJdLGFbbWUrMTI+PjJdPWFbQmUrMTI+PjJdLGFbYmU+PjJdPWFbSGU+PjJdLGFbYmUrND4+Ml09YVtIZSs0Pj4yXSxhW2JlKzg+PjJdPWFbSGUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtI''@;'; put 'put ''ZSsxMj4+Ml0scEQoT2UsMS1NLG1lLGJlKSxhW2F0Pj4yXT1hW09lPj4yXSxhW2F0KzQ+PjJdPWFbT2UrND4+Ml0sYVthdCs4Pj4yXT1hW09lKzg+PjJdLGFbYXQrMTI+PjJdPWFbT2UrMTI+PjJdLEQ/KGF0PWx0KyhBPDw0KXwwLGFbbWU+PjJdPWFbQmU+PjJdLGFbbWUrND4+Ml09YVtCZSs0''@;'; put 'put ''Pj4yXSxhW21lKzg+PjJdPWFbQmUrOD4+Ml0sYVttZSsxMj4+Ml09YVtCZSsxMj4+Ml0sYVtiZT4+Ml09YVtIZT4+Ml0sYVtiZSs0Pj4yXT1hW0hlKzQ+PjJdLGFbYmUrOD4+Ml09YVtIZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW0hlKzEyPj4yXSxwRChMZSwxLS41Kk0sbWUsYmUpLGFbYXQ+PjJd''@;'; put 'put ''PWFbTGU+PjJdLGFbYXQrND4+Ml09YVtMZSs0Pj4yXSxhW2F0Kzg+PjJdPWFbTGUrOD4+Ml0sYVthdCsxMj4+Ml09YVtMZSsxMj4+Ml0scD1wKzR8MCk6cD1BLHc9dysxfDA7YVsoaz1sdCsocDw8NCl8MCk+PjJdPWFbbHQ+PjJdLGFbays0Pj4yXT1hW2x0KzQ+PjJdLGFbays4Pj4yXT1hW2x0''@;'; put 'put ''Kzg+PjJdLGFbaysxMj4+Ml09YVtsdCsxMj4+Ml0sYVsoaz1sdCsocCsxPDw0KXwwKT4+Ml09YVsoYj1sdCsxNnwwKT4+Ml0sYVtrKzQ+PjJdPWFbYis0Pj4yXSxhW2srOD4+Ml09YVtiKzg+PjJdLGFbaysxMj4+Ml09YVtiKzEyPj4yXSxhWyhwPWx0KyhwKzI8PDQpfDApPj4yXT1hWyhrPWx0''@;'; put 'put ''KzMyfDApPj4yXSxhW3ArND4+Ml09YVtrKzQ+PjJdLGFbcCs4Pj4yXT1hW2srOD4+Ml0sYVtwKzEyPj4yXT1hW2srMTI+PjJdLHA9MjE0NzQ4MzY0NyZydDtlOmRve2lmKCgwfHApPDIwMTMyNjU5Mil7aWYoKDB8cCk+PTgzODg2MDgwKXtpZigoMHxwKTwxMzQyMTc3Mjgpe2lmKCgwfHApPDEw''@;'; put 'put ''MDY2MzI5Nil7aWYoODM4ODYwODAhPSgwfHApKWJyZWFrIGU7aWYoND09KDB8Zikpe2F0PTB8bXIoMTkyKSxhW2F0Pj4yXT1hW2M+PjJdLGFbYXQrND4+Ml09YVtjKzQ+PjJdLGFbYXQrOD4+Ml09YVtjKzg+PjJdLGFbYXQrMTI+PjJdPWFbYysxMj4+Ml0sYVsoRz1hdCsxNnwwKT4+Ml09YVso''@;'; put 'put ''YmU9YysxNnwwKT4+Ml0sYVtHKzQ+PjJdPWFbYmUrND4+Ml0sYVtHKzg+PjJdPWFbYmUrOD4+Ml0sYVtHKzEyPj4yXT1hW2JlKzEyPj4yXSxHPWx0KzQ4fDAsX1soRD1hdCszMnwwKT4+M109Uj0rX1soYmU9bHQrNjR8MCk+PjNdLEs9bHQrNTZ8MCxfWyhldD1hdCs0MHwwKT4+M109RXQ9K19b''@;'; put 'put ''KHBlPWx0KzcyfDApPj4zXSxfWyhPZT1hdCs0OHwwKT4+M109a3Q9K19bRz4+M10rUi0rX1trPj4zXSxfWyhIZT1hdCs1NnwwKT4+M109dXQ9K19bSz4+M10rRXQtK19bbHQrNDA+PjNdLFp0PStfW2JlPj4zXStrdC0rX1tHPj4zXSxfWyhHPWF0KzY0fDApPj4zXT1adCxNPStfW3BlPj4zXSt1''@;'; put 'put ''dC0rX1tLPj4zXSxfWyhLPWF0KzcyfDApPj4zXT1NLF9bKHBlPWF0KzgwfDApPj4zXT1SK1p0LWt0LF9bYXQrODg+PjNdPUV0K00tdXQsYmU9bHQrOTZ8MCxfWyhmPWF0KzE0NHwwKT4+M109dXQ9K19bKExlPWx0KzgwfDApPj4zXSxCZT1sdCsxMDR8MCxfW2F0KzE1Mj4+M109TT0rX1sobWU9''@;'; put 'put ''bHQrODh8MCk+PjNdLF9bKGplPWF0KzEyOHwwKT4+M109RXQ9K19bYmU+PjNdK3V0LStfW2x0KzExMj4+M10sX1socnQ9YXQrMTM2fDApPj4zXT1rdD0rX1tCZT4+M10rTS0rX1tsdCsxMjA+PjNdLFp0PStfW0xlPj4zXStFdC0rX1tiZT4+M10sX1soYmU9YXQrMTEyfDApPj4zXT1adCxSPStf''@;'; put 'put ''W21lPj4zXStrdC0rX1tCZT4+M10sX1soQmU9YXQrMTIwfDApPj4zXT1SLF9bKG1lPWF0Kzk2fDApPj4zXT11dCtadC1FdCxfWyhMZT1hdCsxMDR8MCk+PjNdPU0rUi1rdCxhWyhrPWF0KzE2MHwwKT4+Ml09YVsoYj1jKzMyfDApPj4yXSxhW2srND4+Ml09YVtiKzQ+PjJdLGFbays4Pj4yXT1h''@;'; put 'put ''W2IrOD4+Ml0sYVtrKzEyPj4yXT1hW2IrMTI+PjJdLGFbKGs9YXQrMTc2fDApPj4yXT1hWyhjPWMrNDh8MCk+PjJdLGFbays0Pj4yXT1hW2MrND4+Ml0sYVtrKzg+PjJdPWFbYys4Pj4yXSxhW2srMTI+PjJdPWFbYysxMj4+Ml0sWG8obCxhdCwxMixtKSxhW0dlPj4yXT1hW0Q+PjJdLGFbR2Ur''@;'; put 'put ''ND4+Ml09YVtEKzQ+PjJdLGFbR2UrOD4+Ml09YVtEKzg+PjJdLGFbR2UrMTI+PjJdPWFbRCsxMj4+Ml0sUj0rX1tPZT4+M10sX1soT2U9R2UrMTZ8MCk+PjNdPWt0PShrdD0rX1tEPj4zXSkra3QtUixFdD0rX1tIZT4+M10sX1soSGU9R2UrMjR8MCk+PjNdPU09KE09K19bZXQ+PjNdKStNLUV0''@;'; put 'put ''LF9bKGV0PUdlKzMyfDApPj4zXT0rX1tHPj4zXStrdC1SLF9bKGM9R2UrNDB8MCk+PjNdPStfW0s+PjNdK00tRXQsYVsobT1HZSs0OHwwKT4+Ml09YVtwZT4+Ml0sYVttKzQ+PjJdPWFbcGUrND4+Ml0sYVttKzg+PjJdPWFbcGUrOD4+Ml0sYVttKzEyPj4yXT1hW3BlKzEyPj4yXSxXbyhsLEdl''@;'; put 'put ''LDQpLGFbR2U+PjJdPWFbbWU+PjJdLGFbR2UrND4+Ml09YVttZSs0Pj4yXSxhW0dlKzg+PjJdPWFbbWUrOD4+Ml0sYVtHZSsxMj4+Ml09YVttZSsxMj4+Ml0sRXQ9K19bbWU+PjNdLF9bT2U+PjNdPUV0LT0oTT0rX1tiZT4+M10pLUV0LFI9K19bTGU+PjNdLF9bSGU+PjNdPVItPShrdD0rX1tC''@;'; put 'put ''ZT4+M10pLVIsX1tldD4+M109K19bamU+PjNdK0V0LU0sX1tjPj4zXT0rX1tydD4+M10rUi1rdCxhW20+PjJdPWFbZj4+Ml0sYVttKzQ+PjJdPWFbZis0Pj4yXSxhW20rOD4+Ml09YVtmKzg+PjJdLGFbbSsxMj4+Ml09YVtmKzEyPj4yXSxXbyhsLEdlLDQpLEh0KGF0KTticmVha31CcigxMDU0''@;'; put 'put ''MzgsMTA1NDQ5LDczNywxMDU0NTgpfWlmKCgwfHApPDExNzQ0MDUxMil7aWYoMTAwNjYzMjk2IT0oMHxwKSlicmVhayBlO2F0PTB8bXIoKGplPWYrNXwwKTw8NCksX1thdD4+M109RXQ9LjYyNSooK19bYz4+M10tKEV0PStfWyhldD1jKzE2fDApPj4zXSkpK0V0LExlPWx0KzQ4fDAsX1thdCs4''@;'; put 'put ''Pj4zXT11dD0uNSooK19bKGY9YysyNHwwKT4+M10tKHV0PStfWyhydD1jKzQwfDApPj4zXSkpK3V0KzEuNSooK19bKEJlPWx0KzU2fDApPj4zXS0rX1soSGU9bHQrNzJ8MCk+PjNdKSxfW2F0KzE2Pj4zXT1adD0uMjUqKCtfW2M+PjNdLShadD0rX1tldD4+M10pKStadCxfW2F0KzI0Pj4zXT11''@;'; put 'put ''dCxfW2F0KzMyPj4zXT1adCxfW2F0KzQwPj4zXT0uNSooK19bZj4+M10tKGt0PStfW3J0Pj4zXSkpK2t0LF9bYXQrNDg+PjNdPVp0PS41KigrX1trPj4zXS0rX1tMZT4+M10pK1p0LF9bYXQrNTY+PjNdPS41KigrX1tmPj4zXS0oa3Q9K19bcnQ+PjNdKSkra3QsX1thdCs2ND4+M109WnQsX1th''@;'; put 'put ''dCs3Mj4+M109WnQ9LjUqKCtfW2Y+PjNdLShadD0rX1tydD4+M10pKStadCsoK19bQmU+PjNdLStfW0hlPj4zXSksX1thdCs4MD4+M109RXQsX1thdCs4OD4+M109WnQsX1thdCs5Nj4+M109RXQsX1thdCsxMDQ+PjNdPVp0LT0uMjUqKCtfW0JlPj4zXS0rX1tIZT4+M10pLF9bYXQrMTEyPj4z''@;'; put 'put ''XT0rX1trPj4zXStFdC0rX1tMZT4+M10sX1thdCsxMjA+PjNdPS41KigrX1tCZT4+M10tK19bSGU+PjNdKStadCxfW2F0KzEyOD4+M109K19bYXQ+PjNdLF9bYXQrMTM2Pj4zXT0uMjUqKCtfW0JlPj4zXS0rX1tIZT4+M10pK3V0LFhvKGwsYXQsamUsbSksX1tHZT4+M109K19bZXQ+PjNdLF9b''@;'; put 'put ''R2UrOD4+M109LjUqKCtfW2Y+PjNdLSh1dD0rX1tydD4+M10pKSt1dCxfW0dlKzE2Pj4zXT0rX1tjPj4zXSxfW0dlKzI0Pj4zXT0uNSooK19bYys4Pj4zXS0rX1tjKzU2Pj4zXSkrdXQsV28obCxHZSwyKSxIdChhdCk7YnJlYWt9aWYoMTE3NDQwNTEyIT0oMHxwKSlicmVhayBlO2F0PTB8bXIo''@;'; put 'put ''KGY9ZisxfDApPDw0KSxfW2F0Pj4zXT0rX1tiPj4zXSxfW2F0Kzg+PjNdPStfW2x0KzI0Pj4zXS0uNSooK19bKGV0PWx0KzU2fDApPj4zXS0rX1socnQ9bHQrNzJ8MCk+PjNdKSxfW2F0KzE2Pj4zXT0rX1tsdCs0OD4+M10sX1thdCsyND4+M109KHV0PStfW2V0Pj4zXSktLjUqKHV0LStfW3J0''@;'; put 'put ''Pj4zXSksX1thdCszMj4+M109K19bYyszMj4+M10sX1thdCs0MD4+M109LjUqKCtfW2V0Pj4zXS0rX1tydD4+M10pKyArX1soR2U9Yys0MHwwKT4+M10sX1thdCs0OD4+M109K19bYj4+M10sX1thdCs1Nj4+M109LjUqKCtfW2V0Pj4zXS0rX1tydD4+M10pKyArX1tHZT4+M10sX1thdCs3Mj4+''@;'; put 'put ''M109KHV0PStfW2MrOD4+M10pLS41Kih1dC0rX1tjKzU2Pj4zXSksX1thdCs2ND4+M109K19bYz4+M10sWG8obCxhdCxmLG0pLEh0KGF0KTticmVha31pZigoMHxwKTwxNjc3NzIxNjApe2lmKCgwfHApPDE1MDk5NDk0NCl7aWYoMTM0MjE3NzI4IT0oMHxwKSlicmVhayBlO2F0PTB8bXIoKGpl''@;'; put 'put ''PWYrNHwwKTw8NCksX1thdD4+M109a3Q9LjUqKCtfW2M+PjNdLShrdD0rX1soZXQ9YysxNnwwKT4+M10pKStrdCsuMjUqKCtfW2s+PjNdLStfWyhIZT1sdCs0OHwwKT4+M10pLF9bYXQrOD4+M109dXQ9LjUqKCtfWyhmPWMrMjR8MCk+PjNdLSh1dD0rX1socnQ9Yys0MHwwKT4+M10pKSt1dCxf''@;'; put 'put ''W2F0KzE2Pj4zXT1rdCxfW2F0KzI0Pj4zXT1FdD0uNSooK19bKExlPWx0KzU2fDApPj4zXS0rX1soQmU9bHQrNzJ8MCk+PjNdKSt1dCxfW2F0KzMyPj4zXT1rdD0uNSooK19baz4+M10tK19bSGU+PjNdKStrdCxfW2F0KzQwPj4zXT1FdCxfW2F0KzQ4Pj4zXT1rdCxfW2F0KzU2Pj4zXT1rdD0u''@;'; put 'put ''NSooK19bTGU+PjNdLStfW0JlPj4zXSkrRXQsX1thdCs2ND4+M109WnQ9LjUqKCtfW2M+PjNdLShadD0rX1tldD4+M10pKStadCstLjc1KigrX1trPj4zXS0rX1tIZT4+M10pLF9bYXQrNzI+PjNdPWt0LF9bYXQrODA+PjNdPVp0LF9bYXQrODg+PjNdPUV0LF9bYXQrOTY+PjNdPVp0PS41Kigr''@;'; put 'put ''X1tjPj4zXS0oWnQ9K19bZXQ+PjNdKSkrWnQrLS4yNSooK19baz4+M10tK19bSGU+PjNdKSxfW2F0KzEwND4+M109RXQsX1thdCsxMTI+PjNdPVp0LF9bYXQrMTIwPj4zXT11dCxYbyhsLGF0LGplLG0pLF9bR2U+PjNdPStfW2V0Pj4zXSxfW0dlKzg+PjNdPS41KigrX1tmPj4zXS0odXQ9K19b''@;'; put 'put ''cnQ+PjNdKSkrdXQsX1tHZSsxNj4+M109K19bYz4+M10sX1tHZSsyND4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK3V0LFdvKGwsR2UsMiksSHQoYXQpO2JyZWFrfWlmKDE1MDk5NDk0NCE9KDB8cCkpYnJlYWsgZTthdD0wfG1yKChqZT1mKzJ8MCk8PDQpLF9bYXQ+PjNdPUV0PS41''@;'; put 'put ''KigrX1tjPj4zXS0oRXQ9K19bKGV0PWMrMTZ8MCk+PjNdKSkrRXQrLjc1KigrX1trPj4zXS0rX1soSGU9bHQrNDh8MCk+PjNdKSxfW2F0Kzg+PjNdPXV0PS41KigrX1soZj1jKzI0fDApPj4zXS0odXQ9K19bKHJ0PWMrNDB8MCk+PjNdKSkrdXQsX1thdCsxNj4+M109RXQsX1thdCsyND4+M109''@;'; put 'put ''RXQ9LjI1KigrX1soTGU9bHQrNTZ8MCk+PjNdLStfWyhCZT1sdCs3MnwwKT4+M10pK3V0LF9bYXQrMzI+PjNdPS41KigrX1tjPj4zXS0oWnQ9K19bZXQ+PjNdKSkrWnQrLjI1KigrX1trPj4zXS0rX1tIZT4+M10pLF9bYXQrNDA+PjNdPVp0PS41KigrX1tMZT4+M10tK19bQmU+PjNdKStFdCxf''@;'; put 'put ''W2F0KzQ4Pj4zXT0uNSooK19bYz4+M10tKGt0PStfW2V0Pj4zXSkpK2t0Ky0uMjUqKCtfW2s+PjNdLStfW0hlPj4zXSksX1thdCs1Nj4+M109WnQsX1thdCs2ND4+M109WnQ9LjUqKCtfW2M+PjNdLShadD0rX1tldD4+M10pKStadCstLjc1KigrX1trPj4zXS0rX1tIZT4+M10pLF9bYXQrNzI+''@;'; put 'put ''PjNdPUV0LF9bYXQrODA+PjNdPVp0LF9bYXQrODg+PjNdPXV0LFhvKGwsYXQsamUsbSksX1tHZT4+M109K19bZXQ+PjNdLF9bR2UrOD4+M109LjUqKCtfW2Y+PjNdLSh1dD0rX1tydD4+M10pKSt1dCxfW0dlKzE2Pj4zXT0rX1tjPj4zXSxfW0dlKzI0Pj4zXT0uNSooK19bYys4Pj4zXS0rX1tj''@;'; put 'put ''KzU2Pj4zXSkrdXQsV28obCxHZSwyKSxIdChhdCk7YnJlYWt9aWYoKDB8cCk8MTg0NTQ5Mzc2KXtpZigxNjc3NzIxNjAhPSgwfHApKWJyZWFrIGU7YXQ9MHxtcigoamU9ZisxfDApPDw0KSxfW2F0Pj4zXT1FdD0rX1trPj4zXSsoRXQ9K19bKGV0PWMrMTZ8MCk+PjNdKSsuNSooK19bYz4+M10t''@;'; put 'put ''RXQpLStfWyhMZT1sdCs0OHwwKT4+M10sX1thdCs4Pj4zXT11dD0uNSooK19bKGY9YysyNHwwKT4+M10tKHV0PStfWyhydD1jKzQwfDApPj4zXSkpK3V0Ky4yNSooK19bKEJlPWx0KzU2fDApPj4zXS0rX1soSGU9bHQrNzJ8MCk+PjNdKSxfW2F0KzE2Pj4zXT1FdD1FdC0rX1trPj4zXSsgK19b''@;'; put 'put ''TGU+PjNdLF9bYXQrMjQ+PjNdPStfW0JlPj4zXSt1dC0rX1tIZT4+M10sX1thdCszMj4+M109RXQsX1thdCs0MD4+M109RXQ9LjUqKCtfW0JlPj4zXS0rX1tIZT4+M10pK3V0LF9bYXQrNDg+PjNdPVp0PS4yNSooK19bYz4+M10tKFp0PStfW2V0Pj4zXSkpK1p0LF9bYXQrNTY+PjNdPUV0LF9b''@;'; put 'put ''YXQrNjQ+PjNdPVp0LF9bYXQrNzI+PjNdPXV0LFhvKGwsYXQsamUsbSksX1tHZT4+M109K19bZXQ+PjNdLF9bR2UrOD4+M109LjUqKCtfW2Y+PjNdLSh1dD0rX1tydD4+M10pKSt1dCxfW0dlKzE2Pj4zXT0rX1tjPj4zXSxfW0dlKzI0Pj4zXT0uNSooK19bYys4Pj4zXS0rX1tjKzU2Pj4zXSkr''@;'; put 'put ''dXQsV28obCxHZSwyKSxIdChhdCk7YnJlYWt9aWYoMTg0NTQ5Mzc2IT0oMHxwKSlicmVhayBlO2F0PTB8bXIoKGV0PWYrNHwwKTw8NCksX1thdD4+M109WnQ9LjEyNSooWnQ9K19bYz4+M10tKEV0PStfWyhqZT1jKzE2fDApPj4zXSkpK0V0Ky41KigrX1trPj4zXS0rX1soT2U9bHQrNDh8MCk+''@;'; put 'put ''PjNdK1p0KSxfW2F0Kzg+PjNdPUV0PS41KigrX1soSGU9YysyNHwwKT4+M10tKEV0PStfWyhCZT1jKzQwfDApPj4zXSkpK0V0Ky4yNSooK19bKGY9bHQrNTZ8MCk+PjNdLStfWyhMZT1sdCs3MnwwKT4+M10pLF9bYXQrMTY+PjNdPXV0PS4zNzUqKCtfW2M+PjNdLSh1dD0rX1tqZT4+M10pKSt1''@;'; put 'put ''dCxfW2F0KzI0Pj4zXT1FdCxfW2F0KzMyPj4zXT11dCxfW2F0KzQwPj4zXT1FdD0uNSooK19bZj4+M10tK19bTGU+PjNdKStFdCxfW2F0KzQ4Pj4zXT11dC09LjUqKCtfW2s+PjNdLStfW09lPj4zXSksX1thdCs1Nj4+M109RXQsX1socnQ9YXQrNjR8MCk+PjNdPXV0LF9bYXQrNzI+PjNdPXV0''@;'; put 'put ''PS41KigrX1tIZT4+M10tKHV0PStfW0JlPj4zXSkpK3V0Ky0uMjUqKCtfW2Y+PjNdLStfW0xlPj4zXSksX1thdCs4MD4+M109RXQ9WnQtLjUqKCtfW2s+PjNdLStfW09lPj4zXSksX1thdCs4OD4+M109dXQsX1thdCs5Nj4+M109RXQsX1thdCsxMDQ+PjNdPXV0LT0uNSooK19bZj4+M10tK19b''@;'; put 'put ''TGU+PjNdKSxfWyhMZT1hdCsxMTJ8MCk+PjNdPVp0LF9bYXQrMTIwPj4zXT11dCxYbyhsLGF0LGV0LG0pLF9bR2U+PjNdPStfW2plPj4zXSxfWyhqZT1HZSs4fDApPj4zXT0uNSooK19bSGU+PjNdLSh1dD0rX1tCZT4+M10pKSt1dCxfWyhldD1HZSsxNnwwKT4+M109K19bcnQ+PjNdLF9bKG09''@;'; put 'put ''R2UrMjR8MCk+PjNdPS41KigrX1socnQ9Yys4fDApPj4zXS0rX1soZj1jKzU2fDApPj4zXSkrdXQsV28obCxHZSwyKSxfW0dlPj4zXT0rX1tMZT4+M10sX1tqZT4+M109LjUqKCtfW0hlPj4zXS0odXQ9K19bQmU+PjNdKSkrdXQsX1tldD4+M109K19bYz4+M10sX1ttPj4zXT0uNSooK19bcnQ+''@;'; put 'put ''PjNdLStfW2Y+PjNdKSt1dCxXbyhsLEdlLDIpLEh0KGF0KTticmVha31pZigoMHxwKTwzMzU1NDQzMil7aWYoKDB8cCk8OCl7aWYoNCE9KDB8cCkpYnJlYWsgZTtmb3Iodz0wfFFuKDMyKyg5NipmfDApfDApLHA9MCxBPTA7Yj0xfEEsaz13KyhBPDw0KXwwLCEoKDB8cCk+PSgwfGYpKTspYVtr''@;'; put 'put ''Pj4yXT1hWyhhdD1sdCsoKGM9cDw8Mik8PDQpfDApPj4yXSxhW2srND4+Ml09YVthdCs0Pj4yXSxhW2srOD4+Ml09YVthdCs4Pj4yXSxhW2srMTI+PjJdPWFbYXQrMTI+PjJdLGFbKGF0PXcrKGI8PDQpfDApPj4yXT1hWyhHZT1sdCsoKDF8Yyk8PDQpfDApPj4yXSxhW2F0KzQ+PjJdPWFbR2Ur''@;'; put 'put ''ND4+Ml0sYVthdCs4Pj4yXT1hW0dlKzg+PjJdLGFbYXQrMTI+PjJdPWFbR2UrMTI+PjJdLGFbKGF0PXcrKEErMjw8NCl8MCk+PjJdPWFbR2U+PjJdLGFbYXQrND4+Ml09YVtHZSs0Pj4yXSxhW2F0Kzg+PjJdPWFbR2UrOD4+Ml0sYVthdCsxMj4+Ml09YVtHZSsxMj4+Ml0sYVsoYXQ9dysoQSsz''@;'; put 'put ''PDw0KXwwKT4+Ml09YVsoR2U9bHQrKCgyfGMpPDw0KXwwKT4+Ml0sYVthdCs0Pj4yXT1hW0dlKzQ+PjJdLGFbYXQrOD4+Ml09YVtHZSs4Pj4yXSxhW2F0KzEyPj4yXT1hW0dlKzEyPj4yXSxhWyhhdD13KyhBKzQ8PDQpfDApPj4yXT1hW0dlPj4yXSxhW2F0KzQ+PjJdPWFbR2UrND4+Ml0sYVth''@;'; put 'put ''dCs4Pj4yXT1hW0dlKzg+PjJdLGFbYXQrMTI+PjJdPWFbR2UrMTI+PjJdLGFbKGF0PXcrKEErNTw8NCl8MCk+PjJdPWFbKGM9bHQrKCgzfGMpPDw0KXwwKT4+Ml0sYVthdCs0Pj4yXT1hW2MrND4+Ml0sYVthdCs4Pj4yXT1hW2MrOD4+Ml0sYVthdCsxMj4+Ml09YVtjKzEyPj4yXSxwPXArMXww''@;'; put 'put ''LEE9QSs2fDA7YVtrPj4yXT1hW3c+PjJdLGFbays0Pj4yXT1hW3crND4+Ml0sYVtrKzg+PjJdPWFbdys4Pj4yXSxhW2srMTI+PjJdPWFbdysxMj4+Ml0sYVsoZj13KyhiPDw0KXwwKT4+Ml09YVsoYXQ9dysxNnwwKT4+Ml0sYVtmKzQ+PjJdPWFbYXQrND4+Ml0sYVtmKzg+PjJdPWFbYXQrOD4+''@;'; put 'put ''Ml0sYVtmKzEyPj4yXT1hW2F0KzEyPj4yXSxXZihsLGF0LGIsMCwwLDI1NSZtKSxIdCh3KTticmVha31pZigoMHxwKTwxNjc3NzIxNil7aWYoOCE9KDB8cCkpYnJlYWsgZTtmb3IoWG8obCxjLGYsbSksQT1HZSsxNnwwLHA9MDs7KXtpZigoMHxwKT49KDB8ZikpYnJlYWsgZTthW0dlPj4yXT1h''@;'; put 'put ''WyhtPWx0KygyKyhhdD0zKnB8MCk8PDQpfDApPj4yXSxhW0dlKzQ+PjJdPWFbbSs0Pj4yXSxhW0dlKzg+PjJdPWFbbSs4Pj4yXSxhW0dlKzEyPj4yXT1hW20rMTI+PjJdLGFbQT4+Ml09YVsoYXQ9bHQrKGF0KzQ8PDQpfDApPj4yXSxhW0ErND4+Ml09YVthdCs0Pj4yXSxhW0ErOD4+Ml09YVth''@;'; put 'put ''dCs4Pj4yXSxhW0ErMTI+PjJdPWFbYXQrMTI+PjJdLFdvKGwsR2UsMikscD1wKzF8MH19aWYoMTY3NzcyMTYhPSgwfHApKWJyZWFrIGU7Zm9yKHc9MHxtcigoQT1mKzF8MCk8PDQpLHA9MTshKCgwfHApPj0oMHxmKSk7KWFbKGF0PXcrKHA8PDQpfDApPj4yXT1hWyhydD1jKyhwPDw0KXwwKT4+''@;'; put 'put ''Ml0sYVthdCs0Pj4yXT1hW3J0KzQ+PjJdLGFbYXQrOD4+Ml09YVtydCs4Pj4yXSxhW2F0KzEyPj4yXT1hW3J0KzEyPj4yXSxwPXArMXwwO2Fbdz4+Ml09YVsocnQ9bHQrKDErKGM9MypmfDApPDw0KXwwKT4+Ml0sYVt3KzQ+PjJdPWFbcnQrND4+Ml0sYVt3Kzg+PjJdPWFbcnQrOD4+Ml0sYVt3''@;'; put 'put ''KzEyPj4yXT1hW3J0KzEyPj4yXSxhWyhmPXcrKGY8PDQpfDApPj4yXT1hWyhhdD1sdCsoYystMTw8NCl8MCk+PjJdLGFbZis0Pj4yXT1hW2F0KzQ+PjJdLGFbZis4Pj4yXT1hW2F0Kzg+PjJdLGFbZisxMj4+Ml09YVthdCsxMj4+Ml0sWG8obCx3LEEsbSksSHQodyksYVtHZT4+Ml09YVthdD4+''@;'; put 'put ''Ml0sYVtHZSs0Pj4yXT1hW2F0KzQ+PjJdLGFbR2UrOD4+Ml09YVthdCs4Pj4yXSxhW0dlKzEyPj4yXT1hW2F0KzEyPj4yXSxhWyhhdD1HZSsxNnwwKT4+Ml09YVtydD4+Ml0sYVthdCs0Pj4yXT1hW3J0KzQ+PjJdLGFbYXQrOD4+Ml09YVtydCs4Pj4yXSxhW2F0KzEyPj4yXT1hW3J0KzEyPj4y''@;'; put 'put ''XSxfWyhtPUdlKzMyfDApPj4zXT0rX1tHZT4+M10rICtfW2F0Pj4zXS0rX1tsdCsoYzw8NCk+PjNdLF9bR2UrNDA+PjNdPStfW0dlKzg+PjNdKyArX1tHZSsyND4+M10tK19bbHQrKGM8PDQpKzg+PjNdLFdvKGwsYXQsMiksYVthdD4+Ml09YVttPj4yXSxhW2F0KzQ+PjJdPWFbbSs0Pj4yXSxh''@;'; put 'put ''W2F0Kzg+PjJdPWFbbSs4Pj4yXSxhW2F0KzEyPj4yXT1hW20rMTI+PjJdLFdvKGwsR2UsMik7YnJlYWt9aWYoKDB8cCk8NTAzMzE2NDgpe2lmKDMzNTU0NDMyIT0oMHxwKSlicmVhayBlO2Zvcih3PTB8bXIoKEE9ZisyfDApPDw0KSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4y''@;'; put 'put ''XSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxhWyhiPXcrMTZ8MCk+PjJdPWFbaz4+Ml0sYVtiKzQ+PjJdPWFbays0Pj4yXSxhW2IrOD4+Ml09YVtrKzg+PjJdLGFbYisxMj4+Ml09YVtrKzEyPj4yXSxfW3crMzI+PjNdPS4zMzMzMzMzMzMzMzMzMzMzKigrX1so''@;'; put 'put ''Yj1sdCs0OHwwKT4+M10tK19bKGY9bHQrNjR8MCk+PjNdKSsgK19baz4+M10sX1t3KzQwPj4zXT0uMzMzMzMzMzMzMzMzMzMzMyooK19bKGF0PWx0KzU2fDApPj4zXS0rX1socD1sdCs3MnwwKT4+M10pKyArX1tsdCs0MD4+M10sX1t3KzQ4Pj4zXT0uMzMzMzMzMzMzMzMzMzMzMyooKHV0PStf''@;'; put 'put ''W2I+PjNdKS0rX1tmPj4zXSkrdXQsX1t3KzU2Pj4zXT0uMzMzMzMzMzMzMzMzMzMzMyooKHV0PStfW2F0Pj4zXSktK19bcD4+M10pK3V0LHA9NDshKCgwfHApPj0oMHxBKSk7KWFbKGF0PXcrKHA8PDQpfDApPj4yXT1hWyhmPWMrKHArLTI8PDQpfDApPj4yXSxhW2F0KzQ+PjJdPWFbZis0Pj4y''@;'; put 'put ''XSxhW2F0Kzg+PjJdPWFbZis4Pj4yXSxhW2F0KzEyPj4yXT1hW2YrMTI+PjJdLHA9cCsxfDA7WG8obCx3LEEsbSksSHQodyksYVtHZT4+Ml09YVtiPj4yXSxhW0dlKzQ+PjJdPWFbYis0Pj4yXSxhW0dlKzg+PjJdPWFbYis4Pj4yXSxhW0dlKzEyPj4yXT1hW2IrMTI+PjJdLGFbKGF0PUdlKzE2''@;'; put 'put ''fDApPj4yXT1hW2s+PjJdLGFbYXQrND4+Ml09YVtrKzQ+PjJdLGFbYXQrOD4+Ml09YVtrKzg+PjJdLGFbYXQrMTI+PjJdPWFbaysxMj4+Ml0sV28obCxHZSwyKTticmVha31pZigoMHxwKT49NjcxMDg4NjQpe2lmKDY3MTA4ODY0IT0oMHxwKSlicmVhayBlO2lmKDQ9PSgwfGYpKXthdD0wfG1y''@;'; put 'put ''KDk2KSxhW2F0Pj4yXT1hW2M+PjJdLGFbYXQrND4+Ml09YVtjKzQ+PjJdLGFbYXQrOD4+Ml09YVtjKzg+PjJdLGFbYXQrMTI+PjJdPWFbYysxMj4+Ml0sYVsoZj1hdCsxNnwwKT4+Ml09YVtrPj4yXSxhW2YrND4+Ml09YVtrKzQ+PjJdLGFbZis4Pj4yXT1hW2srOD4+Ml0sYVtmKzEyPj4yXT1h''@;'; put 'put ''W2srMTI+PjJdLGFbKGY9YXQrMzJ8MCk+PjJdPWFbKHJ0PWx0KzY0fDApPj4yXSxhW2YrND4+Ml09YVtydCs0Pj4yXSxhW2YrOD4+Ml09YVtydCs4Pj4yXSxhW2YrMTI+PjJdPWFbcnQrMTI+PjJdLGFbKGY9YXQrNDh8MCk+PjJdPWFbKGM9YyszMnwwKT4+Ml0sYVtmKzQ+PjJdPWFbYys0Pj4y''@;'; put 'put ''XSxhW2YrOD4+Ml09YVtjKzg+PjJdLGFbZisxMj4+Ml09YVtjKzEyPj4yXSxhWyhjPWF0KzY0fDApPj4yXT1hWyhmPWx0KzEyOHwwKT4+Ml0sYVtjKzQ+PjJdPWFbZis0Pj4yXSxhW2MrOD4+Ml09YVtmKzg+PjJdLGFbYysxMj4+Ml09YVtmKzEyPj4yXSxhWyhjPWF0KzgwfDApPj4yXT1hWyhl''@;'; put 'put ''dD1sdCsxNjB8MCk+PjJdLGFbYys0Pj4yXT1hW2V0KzQ+PjJdLGFbYys4Pj4yXT1hW2V0Kzg+PjJdLGFbYysxMj4+Ml09YVtldCsxMj4+Ml0sWG8obCxhdCw2LG0pLEh0KGF0KSxfW0dlPj4zXT0rX1tsdCsxNzY+PjNdKyArX1tiPj4zXS0rX1tsdD4+M10sX1tHZSs4Pj4zXT0rX1tsdCsxODQ+''@;'; put 'put ''PjNdKyArX1tsdCsyND4+M10tK19bbHQrOD4+M10sYVsoYXQ9R2UrMTZ8MCk+PjJdPWFbcnQ+PjJdLGFbYXQrND4+Ml09YVtydCs0Pj4yXSxhW2F0Kzg+PjJdPWFbcnQrOD4+Ml0sYVthdCsxMj4+Ml09YVtydCsxMj4+Ml0sV28obCxHZSwyKSxhW2F0Pj4yXT1hW2Y+PjJdLGFbYXQrND4+Ml09''@;'; put 'put ''YVtmKzQ+PjJdLGFbYXQrOD4+Ml09YVtmKzg+PjJdLGFbYXQrMTI+PjJdPWFbZisxMj4+Ml0sV28obCxHZSwyKSxhW2F0Pj4yXT1hW2x0Pj4yXSxhW2F0KzQ+PjJdPWFbbHQrND4+Ml0sYVthdCs4Pj4yXT1hW2x0Kzg+PjJdLGFbYXQrMTI+PjJdPWFbbHQrMTI+PjJdLFdvKGwsR2UsMik7YnJl''@;'; put 'put ''YWt9QnIoMTA1NDM4LDEwNTQ0OSw3MTQsMTA1NDU4KX1pZig1MDMzMTY0OCE9KDB8cCkpYnJlYWsgZTtmb3Iodz0wfG1yKChBPWYrM3wwKTw8NCksYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sX1t3''@;'; put 'put ''KzE2Pj4zXT0odXQ9K19bYz4+M10pLS4yNSoodXQtK19bYj4+M10pLF9bdysyND4+M109dXQ9LjMzMzMzMzMzMzMzMzMzMzMqKCtfWyhwPWx0KzU2fDApPj4zXS0rX1tsdCs3Mj4+M10pKyArX1tjKzg+PjNdLF9bdyszMj4+M109KFp0PStfW2M+PjNdKS0yKihadC0rX1tiPj4zXSksX1t3KzQw''@;'; put 'put ''Pj4zXT11dCxfW3crNDg+PjNdPSh1dD0rX1tjPj4zXSktMi4yNSoodXQtK19bYj4+M10pLF9bdys1Nj4+M109K19bcD4+M10sX1t3KzY0Pj4zXT0rX1tsdCs0OD4+M10sX1t3KzcyPj4zXT0rX1twPj4zXSxwPTQ7ISgoMHxwKT49KDB8QSkpOylhWyhhdD13KyhwPDw0KXwwKT4+Ml09YVsoZj1j''@;'; put 'put ''KyhwKy0zPDw0KXwwKT4+Ml0sYVthdCs0Pj4yXT1hW2YrND4+Ml0sYVthdCs4Pj4yXT1hW2YrOD4+Ml0sYVthdCsxMj4+Ml09YVtmKzEyPj4yXSxwPXArMXwwO1hvKGwsdyxBLG0pLEh0KHcpO2JyZWFrfWlmKCgwfHApPDMxODc2NzEwNCl7aWYoKDB8cCk8MjUxNjU4MjQwKXtpZigoMHxwKTwy''@;'; put 'put ''MTgxMDM4MDgpe2lmKDIwMTMyNjU5MiE9KDB8cCkpYnJlYWsgZTtPZT0wfG1yKGF0PWY8PDQpLF9bT2U+PjNdPXV0PStfWyhMZT1jKzE2fDApPj4zXSxqZT1sdCs0OHwwLF9bT2UrOD4+M109WnQ9LjUqKCtfWyhydD1jKzI0fDApPj4zXS0oWnQ9K19bKGV0PWMrNDB8MCk+PjNdKSkrWnQrLjEy''@;'; put 'put ''NSooK19bKEJlPWx0KzU2fDApPj4zXS0rX1soSGU9bHQrNzJ8MCk+PjNdKSxfW09lKzE2Pj4zXT1FdD0yKigrX1trPj4zXS0rX1tqZT4+M10pK3V0LF9bT2UrMjQ+PjNdPVp0LF9bT2UrMzI+PjNdPUV0LF9bT2UrNDA+PjNdPVp0PS41KigrX1tCZT4+M10tK19bSGU+PjNdKStadCxfW09lKzQ4''@;'; put 'put ''Pj4zXT11dCxfW09lKzU2Pj4zXT1adCxYbyhsLE9lLGYsbSksSHQoT2UpLGF0PTB8bXIoYXQpLF9bYXQ+PjNdPVp0PStfW2s+PjNdKyArX1tMZT4+M10tK19bamU+PjNdLF9bYXQrOD4+M109dXQ9LjUqKCtfW3J0Pj4zXS0odXQ9K19bZXQ+PjNdKSkrdXQrLS42MjUqKCtfW0JlPj4zXS0rX1tI''@;'; put 'put ''ZT4+M10pLEV0PStfW2s+PjNdLStfW2plPj4zXStadCxfWyhqZT1hdCsxNnwwKT4+M109RXQsX1thdCsyND4+M109dXQsX1thdCszMj4+M109RXQsX1thdCs0MD4+M109dXQ9LjUqKCtfW0JlPj4zXS0rX1tIZT4+M10pK3V0LF9bYXQrNDg+PjNdPVp0LF9bYXQrNTY+PjNdPXV0LFhvKGwsYXQs''@;'; put 'put ''ZixtKSxfW0dlPj4zXT0rX1tqZT4+M10sX1tHZSs4Pj4zXT0uNSooK19bcnQ+PjNdLSh1dD0rX1tldD4+M10pKSt1dCxfW0dlKzE2Pj4zXT0rX1tjPj4zXSxfW0dlKzI0Pj4zXT0uNSooK19bYys4Pj4zXS0rX1tjKzU2Pj4zXSkrdXQsV28obCxHZSwyKSxIdChhdCk7YnJlYWt9aWYoKDB8cCk8''@;'; put 'put ''MjM0ODgxMDI0KXtpZigyMTgxMDM4MDghPSgwfHApKWJyZWFrIGU7QmU9MHxtcihhdD1mPDw0KSxfW0JlPj4zXT11dD0rX1tjPj4zXSxfW0JlKzg+PjNdPVp0PS41KigrX1soZXQ9YysyNHwwKT4+M10tKFp0PStfWyhqZT1jKzQwfDApPj4zXSkpK1p0Ky4xMjUqKCtfWyhIZT1sdCs1NnwwKT4+''@;'; put 'put ''M10tK19bKHJ0PWx0KzcyfDApPj4zXSksX1tCZSsxNj4+M109dXQsX1tCZSsyND4+M109RXQ9LjUqKCtfW0hlPj4zXS0rX1tydD4+M10pK1p0LF9bQmUrMzI+PjNdPXV0LT0yKigrX1tIZT4+M10tK19bcnQ+PjNdKSxfW0JlKzQwPj4zXT1FdCxfW0JlKzQ4Pj4zXT11dCxfW0JlKzU2Pj4zXT1a''@;'; put 'put ''dCxYbyhsLEJlLGYsbSksSHQoQmUpLGF0PTB8bXIoYXQpLF9bYXQ+PjNdPVp0PStfW2M+PjNdLStfW2s+PjNdKyArX1tsdCs0OD4+M10sX1thdCs4Pj4zXT11dD0uNSooK19bZXQ+PjNdLSh1dD0rX1tqZT4+M10pKSt1dCstLjYyNSooK19bSGU+PjNdLStfW3J0Pj4zXSksX1thdCsxNj4+M109''@;'; put 'put ''WnQsX1thdCsyND4+M109RXQ9LjUqKCtfW0hlPj4zXS0rX1tydD4+M10pK3V0LF9bYXQrMzI+PjNdPVp0LT0rX1tIZT4+M10tK19bcnQ+PjNdLF9bYXQrNDA+PjNdPUV0LF9bKHJ0PWF0KzQ4fDApPj4zXT1adCxfW2F0KzU2Pj4zXT11dCxYbyhsLGF0LGYsbSksX1tHZT4+M109K19bYysxNj4+''@;'; put 'put ''M10sX1tHZSs4Pj4zXT0uNSooK19bZXQ+PjNdLSh1dD0rX1tqZT4+M10pKSt1dCxfW0dlKzE2Pj4zXT0rX1tydD4+M10sX1tHZSsyND4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK3V0LFdvKGwsR2UsMiksSHQoYXQpO2JyZWFrfWlmKDIzNDg4MTAyNCE9KDB8cCkpYnJlYWsgZTtq''@;'; put 'put ''ZT0wfG1yKGF0PWY8PDQpLF9bamU+PjNdPVp0PS41KigrX1tjPj4zXS0oWnQ9K19bKE9lPWMrMTZ8MCk+PjNdKSkrWnQrLTEuMTI1KigrX1trPj4zXS0rX1soTGU9bHQrNDh8MCk+PjNdKSxfW2plKzg+PjNdPXV0PS41KigrX1soSGU9YysyNHwwKT4+M10tKHV0PStfWyhCZT1jKzQwfDApPj4z''@;'; put 'put ''XSkpK3V0Ky4xMjUqKCtfWyhydD1sdCs1NnwwKT4+M10tK19bKGV0PWx0KzcyfDApPj4zXSksX1tqZSsxNj4+M109RXQ9K19baz4+M10tK19bTGU+PjNdK1p0LF9bamUrMjQ+PjNdPXV0LF9bamUrMzI+PjNdPUV0LF9bamUrNDA+PjNdPXV0PS41KigrX1tydD4+M10tK19bZXQ+PjNdKSt1dCxf''@;'; put 'put ''W2plKzQ4Pj4zXT1adCxfW2plKzU2Pj4zXT11dCxYbyhsLGplLGYsbSksSHQoamUpLGplPTB8bXIoYXQpLF9bamU+PjNdPXV0PS41KigrX1tjPj4zXS0odXQ9K19bT2U+PjNdKSkrdXQrLTEuMTI1KigrX1trPj4zXS0rX1tMZT4+M10pLF9bamUrOD4+M109WnQ9LjUqKCtfW0hlPj4zXS0oWnQ9''@;'; put 'put ''K19bQmU+PjNdKSkrWnQrLS42MjUqKCtfW3J0Pj4zXS0rX1tldD4+M10pLF9bamUrMTY+PjNdPUV0PStfW2s+PjNdLStfW0xlPj4zXSt1dCxfW2plKzI0Pj4zXT1adCxfW2plKzMyPj4zXT1FdCxfW2plKzQwPj4zXT1adD0uNSooK19bcnQ+PjNdLStfW2V0Pj4zXSkrWnQsX1tqZSs0OD4+M109''@;'; put 'put ''dXQsX1tqZSs1Nj4+M109WnQsWG8obCxqZSxmLG0pLEh0KGplKSxqZT0wfG1yKGF0KSxfW2plPj4zXT1adD0uNSooK19bYz4+M10tKFp0PStfW09lPj4zXSkpK1p0Ky4xMjUqKCtfW2s+PjNdLStfW0xlPj4zXSksX1tqZSs4Pj4zXT11dD0uNSooK19bSGU+PjNdLSh1dD0rX1tCZT4+M10pKSt1''@;'; put 'put ''dCstLjYyNSooK19bcnQ+PjNdLStfW2V0Pj4zXSksX1tqZSsxNj4+M109RXQ9K19baz4+M10tK19bTGU+PjNdK1p0LF9bamUrMjQ+PjNdPXV0LF9bamUrMzI+PjNdPUV0LF9bamUrNDA+PjNdPXV0PS41KigrX1tydD4+M10tK19bZXQ+PjNdKSt1dCxfW2plKzQ4Pj4zXT1adCxfW2plKzU2Pj4z''@;'; put 'put ''XT11dCxYbyhsLGplLGYsbSksSHQoamUpLGF0PTB8bXIoYXQpLF9bYXQ+PjNdPXV0PS41KigrX1tjPj4zXS0odXQ9K19bT2U+PjNdKSkrdXQrLjEyNSooK19baz4+M10tK19bTGU+PjNdKSxfW2F0Kzg+PjNdPVp0PS41KigrX1tIZT4+M10tKFp0PStfW0JlPj4zXSkpK1p0Ky4xMjUqKCtfW3J0''@;'; put 'put ''Pj4zXS0rX1tldD4+M10pLF9bKGplPWF0KzE2fDApPj4zXT1FdD0rX1trPj4zXS0rX1tMZT4+M10rdXQsX1thdCsyND4+M109WnQsX1thdCszMj4+M109RXQsX1thdCs0MD4+M109WnQ9LjUqKCtfW3J0Pj4zXS0rX1tldD4+M10pK1p0LF9bYXQrNDg+PjNdPXV0LF9bYXQrNTY+PjNdPVp0LFhv''@;'; put 'put ''KGwsYXQsZixtKSxfW0dlPj4zXT0rX1tqZT4+M10sX1soamU9R2UrOHwwKT4+M109LjUqKCtfW0hlPj4zXS0oWnQ9K19bQmU+PjNdKSkrWnQsX1soZXQ9R2UrMTZ8MCk+PjNdPStfW2M+PjNdLF9bKG09R2UrMjR8MCk+PjNdPS41KigrX1socnQ9Yys4fDApPj4zXS0rX1soZj1jKzU2fDApPj4z''@;'; put 'put ''XSkrWnQsV28obCxHZSwyKSxfW0dlPj4zXT0uNSooK19bYz4+M10tKFp0PStfW09lPj4zXSkpK1p0Ky0xLjEyNSooK19baz4+M10tK19bTGU+PjNdKSxfW2plPj4zXT0uNSooK19bSGU+PjNdLSh1dD0rX1tCZT4+M10pKSt1dCxfW2V0Pj4zXT1adCxfW20+PjNdPS41KigrX1tydD4+M10tK19b''@;'; put 'put ''Zj4+M10pK3V0LFdvKGwsR2UsMiksSHQoYXQpO2JyZWFrfWlmKCgwfHApPDI4NTIxMjY3Mil7aWYoKDB8cCk8MjY4NDM1NDU2KXtpZigyNTE2NTgyNDAhPSgwfHApKWJyZWFrIGU7T2U9MHxtcihhdD1mPDw0KSxfW09lPj4zXT11dD0odXQ9K19bKExlPWMrMTZ8MCk+PjNdKS0rX1trPj4zXSsu''@;'; put 'put ''NSooK19bYz4+M10tdXQpKyArX1soamU9bHQrNDh8MCk+PjNdLF9bT2UrOD4+M109WnQ9LjUqKCtfWyhIZT1jKzI0fDApPj4zXS0oWnQ9K19bKEJlPWMrNDB8MCk+PjNdKSkrWnQrLjEyNSooK19bKHJ0PWx0KzU2fDApPj4zXS0rX1soZXQ9bHQrNzJ8MCk+PjNdKSxfW09lKzE2Pj4zXT1FdD0y''@;'; put 'put ''KigrX1trPj4zXS0rX1tqZT4+M10pK3V0LF9bT2UrMjQ+PjNdPVp0LF9bT2UrMzI+PjNdPUV0LF9bT2UrNDA+PjNdPVp0PS41KigrX1tydD4+M10tK19bZXQ+PjNdKStadCxfW09lKzQ4Pj4zXT11dCxfW09lKzU2Pj4zXT1adCxYbyhsLE9lLGYsbSksSHQoT2UpLGF0PTB8bXIoYXQpLF9bYXQ+''@;'; put 'put ''PjNdPVp0PShadD0rX1tMZT4+M10pLStfW2s+PjNdKy41KigrX1tjPj4zXS1adCkrICtfW2plPj4zXSxfW2F0Kzg+PjNdPXV0PS41KigrX1tIZT4+M10tKHV0PStfW0JlPj4zXSkpK3V0Ky0uNjI1KigrX1tydD4+M10tK19bZXQ+PjNdKSxFdD0yKigrX1trPj4zXS0rX1tqZT4+M10pK1p0LF9b''@;'; put 'put ''KGplPWF0KzE2fDApPj4zXT1FdCxfW2F0KzI0Pj4zXT11dCxfW2F0KzMyPj4zXT1FdCxfW2F0KzQwPj4zXT11dD0uNSooK19bcnQ+PjNdLStfW2V0Pj4zXSkrdXQsX1thdCs0OD4+M109WnQsX1thdCs1Nj4+M109dXQsWG8obCxhdCxmLG0pLF9bR2U+PjNdPStfW2plPj4zXSxfWyhqZT1HZSs4''@;'; put 'put ''fDApPj4zXT0uNSooK19bSGU+PjNdLSh1dD0rX1tCZT4+M10pKSt1dCxfWyhldD1HZSsxNnwwKT4+M109K19bYz4+M10sX1sobT1HZSsyNHwwKT4+M109LjUqKCtfWyhydD1jKzh8MCk+PjNdLStfWyhmPWMrNTZ8MCk+PjNdKSt1dCxXbyhsLEdlLDIpLF9bR2U+PjNdPStfW0xlPj4zXSxfW2pl''@;'; put 'put ''Pj4zXT0uNSooK19bSGU+PjNdLSh1dD0rX1tCZT4+M10pKSt1dCxfW2V0Pj4zXT0rX1thdD4+M10sX1ttPj4zXT0uNSooK19bcnQ+PjNdLStfW2Y+PjNdKSt1dCxXbyhsLEdlLDIpLEh0KGF0KTticmVha31pZigyNjg0MzU0NTYhPSgwfHApKWJyZWFrIGU7YXQ9MHxtcihmPDw0KSxfW2F0Pj4z''@;'; put 'put ''XT0rX1tjPj4zXSxMZT1sdCs0OHwwLF9bYXQrOD4+M109K19bbHQrMjQ+PjNdLS41KigrX1soSGU9bHQrNTZ8MCk+PjNdLStfWyhqZT1sdCs3MnwwKT4+M10pLF9bYXQrMTY+PjNdPStfW0xlPj4zXSxfW2F0KzI0Pj4zXT0odXQ9K19bSGU+PjNdKS0uNSoodXQtK19bamU+PjNdKSxfW2F0KzMy''@;'; put 'put ''Pj4zXT0rX1tjKzMyPj4zXSxfW2F0KzQwPj4zXT0uNSooK19bSGU+PjNdLStfW2plPj4zXSkrICtfWyhldD1jKzQwfDApPj4zXSxfW2F0KzQ4Pj4zXT0rX1tjPj4zXSxfW2F0KzU2Pj4zXT0uNSooK19bSGU+PjNdLStfW2plPj4zXSkrICtfW2V0Pj4zXSxYbyhsLGF0LGYsbSksX1tHZT4+M109''@;'; put 'put ''WnQ9KHV0PS4yNSooK19baz4+M10tK19bTGU+PjNdKSkrICtfWyhCZT1jKzE2fDApPj4zXSxfWyhydD1HZSs4fDApPj4zXT1FdD0uNSooK19bKE9lPWMrMjR8MCk+PjNdLShFdD0rX1tldD4+M10pKStFdCsuMTI1KihrdD0rX1tIZT4+M10tK19bamU+PjNdKSxfWyhmPUdlKzE2fDApPj4zXT11''@;'; put 'put ''dCtadCxfWyhtPUdlKzI0fDApPj4zXT1FdC0uMjUqa3QsV28obCxHZSwyKSxfW0dlPj4zXT1FdD0oa3Q9LjI1KigrX1trPj4zXS0rX1tMZT4+M10pKSsgK19bQmU+PjNdLF9bcnQ+PjNdPVp0PS41KigrX1tPZT4+M10tKFp0PStfW2V0Pj4zXSkpK1p0Ky0uMTI1Kih1dD0rX1tIZT4+M10tK19b''@;'; put 'put ''amU+PjNdKSxfW2Y+PjNdPWt0K0V0LF9bbT4+M109LjI1KnV0K1p0LFdvKGwsR2UsMiksX1tHZT4+M109KFp0PS4yNSooK19baz4+M10tK19bTGU+PjNdKSkrICtfW0JlPj4zXSxfW3J0Pj4zXT11dD0uNzUqKCtfW0hlPj4zXS0rX1tqZT4+M10pKyArX1tldD4+M10sX1tmPj4zXT0rX1tjPj4z''@;'; put 'put ''XS1adCxfW20+PjNdPXV0LFdvKGwsR2UsMiksSHQoYXQpO2JyZWFrfWlmKCgwfHApPDMwMTk4OTg4OCl7aWYoMjg1MjEyNjcyIT0oMHxwKSlicmVhayBlO2plPTB8bXIoZjw8NCksX1tqZT4+M109WnQ9LjUqKCtfW2s+PjNdLStfWyhldD1sdCs0OHwwKT4+M10rKCtfW2M+PjNdLShadD0rX1so''@;'; put 'put ''TGU9YysxNnwwKT4+M10pKSkrWnQsX1tqZSs4Pj4zXT1rdD0uNSooK19baz4+M10tK19bZXQ+PjNdKygrX1soSGU9YysyNHwwKT4+M10tKGt0PStfWyhCZT1jKzQwfDApPj4zXSkpKStrdCxfW2plKzE2Pj4zXT1adCxfW2plKzI0Pj4zXT1adD0uNSooK19bSGU+PjNdLShadD0rX1tCZT4+M10p''@;'; put 'put ''LShSPStfW2s+PjNdLStfW2V0Pj4zXSkpK1p0LF9bamUrMzI+PjNdPXV0PS41KigrX1tjPj4zXS0odXQ9K19bTGU+PjNdKS1SKSt1dCxfW2plKzQwPj4zXT1adCxfW2plKzQ4Pj4zXT11dCxfW2plKzU2Pj4zXT1rdCxYbyhsLGplLGYsbSksSHQoamUpLF9bR2U+PjNdPVI9KGt0PS41KigrX1tj''@;'; put 'put ''Pj4zXS0oa3Q9K19bTGU+PjNdKSkra3QpKyhadD0uNzUqKHV0PStfW2s+PjNdLStfW2V0Pj4zXSkpLF9bKGplPUdlKzh8MCk+PjNdPVp0PShFdD0uNSooK19bSGU+PjNdLShFdD0rX1tCZT4+M10pKStFdCkrWnQsX1socnQ9R2UrMTZ8MCk+PjNdPVIsX1soYXQ9R2UrMjR8MCk+PjNdPUV0Kz11''@;'; put 'put ''dCo9LS43NSxfW0dlKzMyPj4zXT11dD1rdCt1dCxfW0dlKzQwPj4zXT1FdCxfW0dlKzQ4Pj4zXT11dCxfW0dlKzU2Pj4zXT1adCxhWyhmPUdlKzY0fDApPj4yXT1hW0dlPj4yXSxhW2YrND4+Ml09YVtHZSs0Pj4yXSxhW2YrOD4+Ml09YVtHZSs4Pj4yXSxhW2YrMTI+PjJdPWFbR2UrMTI+PjJd''@;'; put 'put ''LFdvKGwsR2UsNSksX1tHZT4+M109LjUqKCh1dD0rX1tjPj4zXSktKFp0PStfW0xlPj4zXSkpK1p0Ky43NSooK19baz4+M10tK19bZXQ+PjNdKSxfW2plPj4zXT0uNSooK19bSGU+PjNdLShadD0rX1tCZT4+M10pKStadCxfW3J0Pj4zXT11dCxfW2F0Pj4zXT0uNSooK19bKGY9Yys4fDApPj4z''@;'; put 'put ''XS0rX1sobT1jKzU2fDApPj4zXSkrWnQsV28obCxHZSwyKSxfW0dlPj4zXT1adD0rX1tMZT4+M10sX1tqZT4+M109LjUqKCtfW0hlPj4zXS0odXQ9K19bQmU+PjNdKSkrdXQsX1tydD4+M109LjUqKCtfW2M+PjNdLVp0KStadCstLjc1KigrX1trPj4zXS0rX1tldD4+M10pLF9bYXQ+PjNdPS41''@;'; put 'put ''KigrX1tmPj4zXS0rX1ttPj4zXSkrdXQsV28obCxHZSwyKTticmVha31pZigzMDE5ODk4ODghPSgwfHApKWJyZWFrIGU7YXQ9MHxtcigocnQ9ZisxMnwwKTw8NCksX1thdD4+M109TT0uNSooK19bYz4+M10tKE09K19bKEhlPWMrMTZ8MCk+PjNdKSkrTSsuMjUqKCtfW2s+PjNdLStfWyhtZT1s''@;'; put 'put ''dCs0OHwwKT4+M10pLF9bKE9lPWF0Kzh8MCk+PjNdPWt0PS41KigrX1soTGU9bHQrNTZ8MCk+PjNdLStfWyhCZT1sdCs3MnwwKT4+M10rKCtfWyhldD1jKzI0fDApPj4zXS0oa3Q9K19bKGplPWMrNDB8MCk+PjNdKSkpK2t0LF9bYXQrMTY+PjNdPU0sX1soYmU9YXQrMjR8MCk+PjNdPWt0PS4x''@;'; put 'put ''MjUqKCtfW0xlPj4zXS0rX1tCZT4+M10pK2t0LF9bKGY9YXQrMzJ8MCk+PjNdPUV0PU0tLjEyNSooK19baz4+M10tK19bbWU+PjNdKSxfW2F0KzQwPj4zXT1SPS4xMjUqKCtfW0xlPj4zXS0rX1tCZT4+M10pK2t0LF9bYXQrNDg+PjNdPU0sX1thdCs1Nj4+M109WnQ9LjEyNSooK19bTGU+PjNd''@;'; put 'put ''LStfW0JlPj4zXSkrUixfW2F0KzY0Pj4zXT1NLF9bYXQrNzI+PjNdPU09LjEyNSooK19bTGU+PjNdLStfW0JlPj4zXSkrWnQsX1thdCs4MD4+M109RXQsX1thdCs4OD4+M109TSxfW2F0Kzk2Pj4zXT1FdD0uNSooK19bYz4+M10tKEV0PStfW0hlPj4zXSkpK0V0LF9bYXQrMTA0Pj4zXT1adCxf''@;'; put 'put ''W2F0KzExMj4+M109dXQ9RXQtLjEyNSooK19baz4+M10tK19bbWU+PjNdKSxfW2F0KzEyMD4+M109TSxfW2F0KzEyOD4+M109dXQtPS4xMjUqKCtfW2s+PjNdLStfW21lPj4zXSksX1thdCsxMzY+PjNdPU0sX1thdCsxNDQ+PjNdPXV0LF9bYXQrMTUyPj4zXT1adCxfW2F0KzE2MD4+M109WnQ9''@;'; put 'put ''LjEyNSooK19baz4+M10tK19bbWU+PjNdKSt1dCxfW2F0KzE2OD4+M109UixfW2F0KzE3Nj4+M109dXQsX1thdCsxODQ+PjNdPWt0LF9bYXQrMTkyPj4zXT11dCxfW2F0KzIwMD4+M109dXQ9K19bT2U+PjNdLF9bYXQrMjA4Pj4zXT1adCxfW2F0KzIxNj4+M109dXQsX1soT2U9YXQrMjI0fDAp''@;'; put 'put ''Pj4zXT1FdCxfW2F0KzIzMj4+M109K19bYmU+PjNdLF9bYXQrMjQwPj4zXT0rX1tmPj4zXSxfW2F0KzI0OD4+M109dXQsWG8obCxhdCxydCxtKSxfW0dlPj4zXT11dD0rX1tPZT4+M10sX1socnQ9R2UrOHwwKT4+M109RXQ9LjUqKCtfW2V0Pj4zXS0oRXQ9K19bamU+PjNdKSkrRXQsX1soZj1H''@;'; put 'put ''ZSsxNnwwKT4+M109dXQsX1sobT1HZSsyNHwwKT4+M109LjEyNSooK19bTGU+PjNdLStfW0JlPj4zXSkrRXQsV28obCxHZSwyKSxfW0dlPj4zXT1FdD0rX1tPZT4+M10sX1tydD4+M109dXQ9LjUqKCtfW2V0Pj4zXS0odXQ9K19bamU+PjNdKSkrdXQrLjI1KihadD0rX1tMZT4+M10tK19bQmU+''@;'; put 'put ''PjNdKSxfW2Y+PjNdPUV0LF9bbT4+M109LjEyNSpadCt1dCxXbyhsLEdlLDIpLF9bR2U+PjNdPStfW0hlPj4zXSxfW3J0Pj4zXT0uNSooK19bZXQ+PjNdLSh1dD0rX1tqZT4+M10pKSt1dCxfW2Y+PjNdPStfW2M+PjNdLF9bbT4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK3V0LFdv''@;'; put 'put ''KGwsR2UsMiksSHQoYXQpO2JyZWFrfWlmKCgwfHApPDM2OTA5ODc1Mil7aWYoKDB8cCk8MzM1NTQ0MzIwKXtpZigzMTg3NjcxMDQhPSgwfHApKWJyZWFrIGU7YXQ9MHxtcigocnQ9Zis0fDApPDw0KSxfW2F0Pj4zXT1FdD0uNSooK19bYz4+M10tKEV0PStfWyhIZT1jKzE2fDApPj4zXSkpK0V0''@;'; put 'put ''Ky4xMjUqKCtfW2s+PjNdLStfWyhmPWx0KzQ4fDApPj4zXSksX1thdCs4Pj4zXT11dD0uNSooK19bKExlPWx0KzU2fDApPj4zXS0rX1soQmU9bHQrNzJ8MCk+PjNdKygrX1soZXQ9YysyNHwwKT4+M10tKHV0PStfWyhqZT1jKzQwfDApPj4zXSkpKSt1dCxfW2F0KzE2Pj4zXT1SPS4xMjUqKCtf''@;'; put 'put ''W2s+PjNdLStfW2Y+PjNdKStFdCxfW2F0KzI0Pj4zXT1adD0uMTI1KigrX1tMZT4+M10tK19bQmU+PjNdKSt1dCxfW2F0KzMyPj4zXT1SLF9bYXQrNDA+PjNdPVI9LjI1KigrX1tMZT4+M10tK19bQmU+PjNdKStadCxfW2F0KzQ4Pj4zXT1FdCxfW2F0KzU2Pj4zXT1rdD0uMTI1KigrX1tMZT4+''@;'; put 'put ''M10tK19bQmU+PjNdKStSLF9bYXQrNjQ+PjNdPUV0LT0uMjUqKCtfW2s+PjNdLStfW2Y+PjNdKSxfW2F0KzcyPj4zXT1rdCxfW2F0KzgwPj4zXT1rdD1FdC0uMTI1KigrX1trPj4zXS0rX1tmPj4zXSksX1thdCs4OD4+M109UixfW2F0Kzk2Pj4zXT1rdCxfW2F0KzEwND4+M109WnQsX1thdCsx''@;'; put 'put ''MTI+PjNdPUV0LF9bYXQrMTIwPj4zXT11dCxYbyhsLGF0LHJ0LG0pLF9bR2U+PjNdPXV0PS41KigrX1tjPj4zXS0odXQ9K19bSGU+PjNdKSkrdXQsX1socnQ9R2UrOHwwKT4+M109RXQ9LjUqKCtfW2V0Pj4zXS0oRXQ9K19bamU+PjNdKSkrRXQsX1soZj1HZSsxNnwwKT4+M109dXQsX1sobT1H''@;'; put 'put ''ZSsyNHwwKT4+M109LjEyNSooK19bTGU+PjNdLStfW0JlPj4zXSkrRXQsV28obCxHZSwyKSxfW0dlPj4zXT1FdD0uNSooK19bYz4+M10tKEV0PStfW0hlPj4zXSkpK0V0LF9bcnQ+PjNdPXV0PS41KigrX1tldD4+M10tKHV0PStfW2plPj4zXSkpK3V0Ky4yNSooWnQ9K19bTGU+PjNdLStfW0Jl''@;'; put 'put ''Pj4zXSksX1tmPj4zXT1FdCxfW20+PjNdPS4xMjUqWnQrdXQsV28obCxHZSwyKSxfW0dlPj4zXT0rX1tIZT4+M10sX1tydD4+M109LjUqKCtfW2V0Pj4zXS0odXQ9K19bamU+PjNdKSkrdXQsX1tmPj4zXT0rX1tjPj4zXSxfW20+PjNdPS41KigrX1tjKzg+PjNdLStfW2MrNTY+PjNdKSt1dCxX''@;'; put 'put ''byhsLEdlLDIpLEh0KGF0KTticmVha31pZigoMHxwKTwzNTIzMjE1MzYpe2lmKDMzNTU0NDMyMCE9KDB8cCkpYnJlYWsgZTthdD0wfG1yKChIZT1mKzEyfDApPDw0KSxfW2F0Pj4zXT1NPS41KigrX1tjPj4zXS0oTT0rX1soamU9YysxNnwwKT4+M10pKStNKy4yNSooK19baz4+M10tK19bKE9l''@;'; put 'put ''PWx0KzQ4fDApPj4zXSksX1soZj1hdCs4fDApPj4zXT1rdD0uNSooK19bKG1lPWx0KzU2fDApPj4zXS0rX1soYmU9bHQrNzJ8MCk+PjNdKygrX1socnQ9YysyNHwwKT4+M10tKGt0PStfWyhldD1jKzQwfDApPj4zXSkpKStrdCxfW2F0KzE2Pj4zXT1NLF9bKExlPWF0KzI0fDApPj4zXT1rdD0u''@;'; put 'put ''MTI1KigrX1ttZT4+M10tK19bYmU+PjNdKStrdCxfWyhCZT1hdCszMnwwKT4+M109WnQ9TS0uMTI1KigrX1trPj4zXS0rX1tPZT4+M10pLF9bYXQrNDA+PjNdPVI9LjEyNSooK19bbWU+PjNdLStfW2JlPj4zXSkra3QsX1thdCs0OD4+M109TSxfW2F0KzU2Pj4zXT1FdD0uMTI1KigrX1ttZT4+''@;'; put 'put ''M10tK19bYmU+PjNdKStSLF9bYXQrNjQ+PjNdPU0sX1thdCs3Mj4+M109TT0uMTI1KigrX1ttZT4+M10tK19bYmU+PjNdKStFdCxfW2F0KzgwPj4zXT1adCxfW2F0Kzg4Pj4zXT1NLF9bYXQrOTY+PjNdPVp0PS41KigrX1tjPj4zXS0oWnQ9K19bamU+PjNdKSkrWnQsX1thdCsxMDQ+PjNdPUV0''@;'; put 'put ''LF9bYXQrMTEyPj4zXT11dD1adC0uMTI1KigrX1trPj4zXS0rX1tPZT4+M10pLF9bYXQrMTIwPj4zXT1NLF9bYXQrMTI4Pj4zXT11dC09LjEyNSooK19baz4+M10tK19bT2U+PjNdKSxfW2F0KzEzNj4+M109TSxfW2F0KzE0ND4+M109dXQsX1thdCsxNTI+PjNdPUV0LF9bYXQrMTYwPj4zXT1F''@;'; put 'put ''dD0uMTI1KigrX1trPj4zXS0rX1tPZT4+M10pK3V0LF9bYXQrMTY4Pj4zXT1SLF9bYXQrMTc2Pj4zXT11dCxfW2F0KzE4ND4+M109a3QsX1thdCsxOTI+PjNdPXV0LF9bYXQrMjAwPj4zXT11dD0rX1tmPj4zXSxfW2F0KzIwOD4+M109RXQsX1thdCsyMTY+PjNdPXV0LF9bKGY9YXQrMjI0fDAp''@;'; put 'put ''Pj4zXT1adCxfW2F0KzIzMj4+M109K19bTGU+PjNdLF9bYXQrMjQwPj4zXT0rX1tCZT4+M10sX1thdCsyNDg+PjNdPXV0LFhvKGwsYXQsSGUsbSksYVtHZT4+Ml09YVtmPj4yXSxhW0dlKzQ+PjJdPWFbZis0Pj4yXSxhW0dlKzg+PjJdPWFbZis4Pj4yXSxhW0dlKzEyPj4yXT1hW2YrMTI+PjJd''@;'; put 'put ''LF9bKGY9R2UrMTZ8MCk+PjNdPStfW0dlPj4zXSxfWyhtPUdlKzI0fDApPj4zXT0uNSooK19bcnQ+PjNdLSh1dD0rX1tldD4+M10pKSt1dCxXbyhsLEdlLDIpLF9bR2U+PjNdPStfW2plPj4zXSxfW0dlKzg+PjNdPS41KigrX1tydD4+M10tKHV0PStfW2V0Pj4zXSkpK3V0LF9bZj4+M109K19b''@;'; put 'put ''Yz4+M10sX1ttPj4zXT0uNSooK19bYys4Pj4zXS0rX1tjKzU2Pj4zXSkrdXQsV28obCxHZSwyKSxIdChhdCk7YnJlYWt9aWYoMzUyMzIxNTM2IT0oMHxwKSlicmVhayBlO2F0PTB8bXIoKHJ0PWYrNHwwKTw8NCksX1thdD4+M109WnQ9LjUqKCtfW2M+PjNdLShadD0rX1soSGU9YysxNnwwKT4+''@;'; put 'put ''M10pKStadCsuMTI1KigrX1trPj4zXS0rX1soQmU9bHQrNDh8MCk+PjNdKSxfWyhmPWF0Kzh8MCk+PjNdPXV0PS41KigrX1soT2U9bHQrNTZ8MCk+PjNdLStfWyhMZT1sdCs3MnwwKT4+M10rKCtfWyhldD1jKzI0fDApPj4zXS0odXQ9K19bKGplPWMrNDB8MCk+PjNdKSkpK3V0LF9bYXQrMTY+''@;'; put 'put ''PjNdPVI9LjEyNSooK19baz4+M10tK19bQmU+PjNdKStadCxfW2F0KzI0Pj4zXT1FdD0uMTI1KigrX1tPZT4+M10tK19bTGU+PjNdKSt1dCxfW2F0KzMyPj4zXT1SLF9bYXQrNDA+PjNdPVI9LjI1KigrX1tPZT4+M10tK19bTGU+PjNdKStFdCxfW2F0KzQ4Pj4zXT1adCxfW2F0KzU2Pj4zXT1r''@;'; put 'put ''dD0uMTI1KigrX1tPZT4+M10tK19bTGU+PjNdKStSLF9bYXQrNjQ+PjNdPVp0LT0uMjUqKCtfW2s+PjNdLStfW0JlPj4zXSksX1thdCs3Mj4+M109a3QsX1thdCs4MD4+M109a3Q9WnQtLjEyNSooK19baz4+M10tK19bQmU+PjNdKSxfW2F0Kzg4Pj4zXT1SLF9bYXQrOTY+PjNdPWt0LF9bYXQr''@;'; put 'put ''MTA0Pj4zXT1FdCxfW2F0KzExMj4+M109WnQsX1thdCsxMjA+PjNdPXV0LFhvKGwsYXQscnQsbSksX1tHZT4+M109dXQ9LjUqKCtfW2M+PjNdLSh1dD0rX1tIZT4+M10pKSt1dCxfWyhydD1HZSs4fDApPj4zXT0rX1tmPj4zXSxfWyhmPUdlKzE2fDApPj4zXT11dCxfWyhtPUdlKzI0fDApPj4z''@;'; put 'put ''XT0uNSooK19bZXQ+PjNdLSh1dD0rX1tqZT4+M10pKSt1dCxXbyhsLEdlLDIpLF9bR2U+PjNdPStfW0hlPj4zXSxfW3J0Pj4zXT0uNSooK19bZXQ+PjNdLSh1dD0rX1tqZT4+M10pKSt1dCxfW2Y+PjNdPStfW2M+PjNdLF9bbT4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK3V0LFdv''@;'; put 'put ''KGwsR2UsMiksSHQoYXQpO2JyZWFrfWlmKCgwfHApPDQwMjY1MzE4NCl7aWYoKDB8cCk8Mzg1ODc1OTY4KXtpZigzNjkwOTg3NTIhPSgwfHApKWJyZWFrIGU7YXQ9MHxtcigoZj1mKzV8MCk8PDQpLF9bYXQ+PjNdPStfW2I+PjNdLS41KigrX1trPj4zXS0rX1soR2U9bHQrNDh8MCk+PjNdKSxf''@;'; put 'put ''W2F0Kzg+PjNdPStfW2x0KzI0Pj4zXS0uNSooK19bKGplPWx0KzU2fDApPj4zXS0rX1socnQ9bHQrNzJ8MCk+PjNdKSxfW2F0KzE2Pj4zXT0rX1tHZT4+M10sX1thdCsyND4+M109KHV0PStfW2plPj4zXSktLjUqKHV0LStfW3J0Pj4zXSksX1thdCszMj4+M109K19bYyszMj4+M10sX1thdCs0''@;'; put 'put ''MD4+M109K19bKGV0PWMrNDB8MCk+PjNdLF9bYXQrNDg+PjNdPS41KigodXQ9K19baz4+M10pLStfW0dlPj4zXSkrdXQsX1thdCs1Nj4+M109K19bZXQ+PjNdLF9bYXQrNjQ+PjNdPS41KigodXQ9K19baz4+M10pLStfW0dlPj4zXSkrdXQsX1thdCs3Mj4+M109LjUqKCtfW2plPj4zXS0rX1ty''@;'; put 'put ''dD4+M10pKyArX1tldD4+M10sX1thdCs4MD4+M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW0dlPj4zXSksX1thdCs4OD4+M109LjUqKCtfW2plPj4zXS0rX1tydD4+M10pKyArX1tldD4+M10sX1thdCs5Nj4+M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW0dlPj4zXSksX1thdCsxMDQ+''@;'; put 'put ''PjNdPStfWyhldD1jKzU2fDApPj4zXSxfW2F0KzEyMD4+M109KHV0PStfWyhydD1jKzh8MCk+PjNdKS0uNSoodXQtK19bZXQ+PjNdKSxfW2F0KzExMj4+M109K19bYz4+M10sX1thdCsxMzY+PjNdPStfW3J0Pj4zXSxfW2F0KzEyOD4+M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW0dlPj4z''@;'; put 'put ''XSksWG8obCxhdCxmLG0pLEh0KGF0KTticmVha31pZigzODU4NzU5NjghPSgwfHApKWJyZWFrIGU7YXQ9MHxtcigoZj1mKzN8MCk8PDQpLF9bYXQ+PjNdPStfW2I+PjNdLS41KigrX1trPj4zXS0rX1soR2U9bHQrNDh8MCk+PjNdKSxfW2F0Kzg+PjNdPStfW2x0KzI0Pj4zXS0uNSooK19bKGpl''@;'; put 'put ''PWx0KzU2fDApPj4zXS0rX1socnQ9bHQrNzJ8MCk+PjNdKSxfW2F0KzE2Pj4zXT0rX1tHZT4+M10sX1thdCsyND4+M109KHV0PStfW2plPj4zXSktLjUqKHV0LStfW3J0Pj4zXSksX1thdCszMj4+M109K19bYyszMj4+M10sX1thdCs0MD4+M109LjUqKCtfW2plPj4zXS0rX1tydD4+M10pKyAr''@;'; put 'put ''X1soZXQ9Yys0MHwwKT4+M10sX1thdCs0OD4+M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW0dlPj4zXSksX1thdCs1Nj4+M109LjUqKCtfW2plPj4zXS0rX1tydD4+M10pKyArX1tldD4+M10sX1thdCs2ND4+M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW0dlPj4zXSksX1thdCs3Mj4+''@;'; put 'put ''M109K19bKGV0PWMrNTZ8MCk+PjNdLF9bYXQrODg+PjNdPSh1dD0rX1socnQ9Yys4fDApPj4zXSktLjUqKHV0LStfW2V0Pj4zXSksX1thdCs4MD4+M109K19bYz4+M10sX1thdCsxMDQ+PjNdPStfW3J0Pj4zXSxfW2F0Kzk2Pj4zXT0rX1tiPj4zXS0uNSooK19baz4+M10tK19bR2U+PjNdKSxY''@;'; put 'put ''byhsLGF0LGYsbSksSHQoYXQpO2JyZWFrfWlmKCgwfHApPDQxOTQzMDQwMCl7aWYoNDAyNjUzMTg0IT0oMHxwKSlicmVhayBlO2F0PTB8bXIoKGY9ZiszfDApPDw0KSxfW2F0Pj4zXT0rX1tjPj4zXSxldD1sdCs0OHwwLF9bYXQrOD4+M109K19bKGplPWMrOHwwKT4+M10tLjUqKCtfWyhydD1s''@;'; put 'put ''dCs1NnwwKT4+M10tK19bKEdlPWx0KzcyfDApPj4zXSksX1thdCsxNj4+M109LjUqKCh1dD0rX1trPj4zXSktK19bZXQ+PjNdKSt1dCxfW2F0KzI0Pj4zXT0rX1tqZT4+M10tLjUqKCtfW3J0Pj4zXS0rX1tHZT4+M10pLF9bYXQrMzI+PjNdPS41KigodXQ9K19baz4+M10pLStfW2V0Pj4zXSkr''@;'; put 'put ''dXQsX1thdCs0MD4+M109K19bbHQrNDA+PjNdLF9bYXQrNDg+PjNdPStfW2MrMTY+PjNdLF9bYXQrNTY+PjNdPSh1dD0rX1tjKzI0Pj4zXSktLjUqKHV0LStfWyhqZT1jKzQwfDApPj4zXSksX1thdCs2ND4+M109LjUqKCh1dD0rX1trPj4zXSktK19bZXQ+PjNdKSt1dCxfW2F0KzcyPj4zXT0r''@;'; put 'put ''X1tqZT4+M10sX1thdCs4OD4+M109LjUqKCtfW3J0Pj4zXS0rX1tHZT4+M10pKyArX1tqZT4+M10sX1thdCs4MD4+M109LjUqKCh1dD0rX1trPj4zXSktK19bZXQ+PjNdKSt1dCxfW2F0KzEwND4+M109LjUqKCtfW3J0Pj4zXS0rX1tHZT4+M10pKyArX1tjKzU2Pj4zXSxfW2F0Kzk2Pj4zXT0r''@;'; put 'put ''X1tjPj4zXSxYbyhsLGF0LGYsbSksSHQoYXQpO2JyZWFrfWlmKDQxOTQzMDQwMCE9KDB8cCkpYnJlYWsgZTthdD0wfG1yKChmPWYrNXwwKTw8NCksX1thdD4+M109K19bYz4+M10scnQ9bHQrNDh8MCxfW2F0Kzg+PjNdPStfWyhHZT1jKzh8MCk+PjNdLS41KigrX1soamU9bHQrNTZ8MCk+PjNd''@;'; put 'put ''LStfWyhldD1sdCs3MnwwKT4+M10pLF9bYXQrMTY+PjNdPS41KigodXQ9K19baz4+M10pLStfW3J0Pj4zXSkrdXQsX1thdCsyND4+M109K19bR2U+PjNdLS41KigrX1tqZT4+M10tK19bZXQ+PjNdKSxfW2F0KzMyPj4zXT0uNSooKHV0PStfW2s+PjNdKS0rX1tydD4+M10pK3V0LF9bYXQrNDA+''@;'; put 'put ''PjNdPStfW2x0KzQwPj4zXSxfW2F0KzQ4Pj4zXT0rX1tjKzE2Pj4zXSxfW2F0KzU2Pj4zXT0odXQ9K19bYysyND4+M10pLS41Kih1dC0rX1soR2U9Yys0MHwwKT4+M10pLF9bYXQrNjQ+PjNdPS41KigodXQ9K19baz4+M10pLStfW3J0Pj4zXSkrdXQsX1thdCs3Mj4+M109K19bR2U+PjNdLF9b''@;'; put 'put ''YXQrODg+PjNdPS41KigrX1tqZT4+M10tK19bZXQ+PjNdKSsgK19bR2U+PjNdLF9bYXQrODA+PjNdPS41KigodXQ9K19baz4+M10pLStfW3J0Pj4zXSkrdXQsX1thdCsxMDQ+PjNdPS41KigrX1tqZT4+M10tK19bZXQ+PjNdKSsgK19bKEdlPWMrNTZ8MCk+PjNdLF9bYXQrOTY+PjNdPStfW2I+''@;'; put 'put ''PjNdLS41KigrX1trPj4zXS0rX1tydD4+M10pLF9bYXQrMTEyPj4zXT0rX1tiPj4zXS0uNSooK19baz4+M10tK19bcnQ+PjNdKSxfW2F0KzEyMD4+M109K19bR2U+PjNdLF9bYXQrMTI4Pj4zXT0rX1tjKzQ4Pj4zXSxfW2F0KzEzNj4+M109K19bR2U+PjNdLFhvKGwsYXQsZixtKSxIdChhdCk7''@;'; put 'put ''YnJlYWt9d2hpbGUoMCk7SHQobHQpfW9lPU10fWZ1bmN0aW9uIHBEKGwsYyxmLHApe3ZhciBBLG09MDttPSgrX1s4KyhwfD0wKT4+M10tKG09K19bOCsoZnw9MCk+PjNdKSkqKGM9K2MpK20sX1sobHw9MCk+PjNdPSgrX1twPj4zXS0oQT0rX1tmPj4zXSkpKmMrQSxfW2wrOD4+M109bX1mdW5j''@;'; put 'put ''dGlvbiBaNShsKXtpZihsPTB8YVs4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKWlmKDkxIT0oMHwobD0wfGFbYVtsKzQ+PjJdPj4yXSkpKXtpZig5NCE9KDB8bCkpcmV0dXJuIDB8KDkzPT0oMHxsKT8zOjk2PT0oMHxsKT80OjApO2w9Mn1lbHNlIGw9MTtlbHNlIGw9MDtyZXR1cm4gMHxsfWZ1''@;'; put 'put ''bmN0aW9uIE9OKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIE9lLExlLEJlLEhlLGplLGV0LHJ0LEdlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxsdD0wLE10PTAsa3Q9MDttPTB8bXIoNzIpLEQ9MHxhWzEwNCsoMHxhW2wr''@;'; put 'put ''MTY+PjJdKT4+Ml0sTT0wLEE9MSx3PTB8YVs0NzI4Ml07ZTpmb3IoOzspe3N3aXRjaCgoYj0wfHVlW3c+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6YnJlYWsgZTtjYXNlIDkyOnN3aXRjaCgoYj0wfHVlWyh3PXcrMXwwKT4+MF0pPDwyND4+MjQpe2Nhc2UgMTI0OmNhc2UgMTI1OmNhc2UgMTIzOmNh''@;'; put 'put ''c2UgOTI6az1NO2JyZWFrO2RlZmF1bHQ6a3Q9NH1icmVhaztkZWZhdWx0Omt0PTR9aWYoND09KDB8a3QpKXtzd2l0Y2goa3Q9MCxiPDwyND4+MjQpe2Nhc2UgMTIzOms9TSsxfDA7YnJlYWs7Y2FzZSAxMjU6az1NKy0xfDA7YnJlYWs7ZGVmYXVsdDprPU0sQT1BKygwPT0oMHxNKSZiPDwyND4+''@;'; put 'put ''MjQ9PTEyNCYxKXwwfWlmKCgwfGspPDApYnJlYWt9TT1rLHc9dysxfDB9YVsoR2U9bSs1NnwwKT4+Ml09MHxtcihBPDwyKSx1ZVttKzY0Pj4wXT1jLGplPTA9PSgwfGMpJjEsZXQ9RCs4MnwwLHJ0PXArMXwwLExlPTAhPSgwfGYpLEJlPUQrMTZ8MCxIZT1EKzR8MCxPZT1EKzh8MCxiPTAsTT0w''@;'; put 'put ''LGM9MCxiZT0wLGs9MCxmPTAsRD1wLEE9MCx3PTA7ZTpmb3IoOzspe0c9YixiPTA7dDpmb3IoOzspe246Zm9yKDs7KXttZT1mO3I6Zm9yKDs7KXtwZT1iLFI9QTtpOmZvcig7Oyl7Sz1NO286Zm9yKDs7KXtmb3IoOzspe2lmKGJlKXtrdD03ODticmVhayBlfWlmKCgoQT0wfHVlWyhNPTB8YVs0''@;'; put 'put ''NzI4Ml0pPj4wXSktMSYyNTUpPj0zMSlicmVhazthWzQ3MjgyXT1NKzF9c3dpdGNoKEE8PDI0Pj4yNHwwKXtjYXNlIDkyOmt0PTUzO2JyZWFrIG47Y2FzZSAwOmNhc2UgMTI0OmNhc2UgMTI1OmJyZWFrIHI7Y2FzZSA2MDpicmVhayBpO2Nhc2UgNjI6YnJlYWsgbztjYXNlIDEyMzpicmVhaztk''@;'; put 'put ''ZWZhdWx0OmI9YyxBPU07YnJlYWsgbn1pZihhWzQ3MjgyXT1BPU0rMXwwLDB8ayl7a3Q9MzQ7YnJlYWsgZX1pZighKDB8dWVbQT4+MF0pKXtrdD0zNDticmVhayBlfWlmKGY9MHxPTihsLGplLDAscCksYVsoMHxhW0dlPj4yXSkrKEs8PDIpPj4yXT1mLCFmKXtrdD0zNjticmVhayBlfUs9Sysx''@;'; put 'put ''fDAsaz00fWlmKDB8dWVbZXQ+PjBdKXtiPWMsQT1NO2JyZWFrIG59aWYoISgxNiZrKSl7a3Q9Mjc7YnJlYWsgZX1BPVI+Pj4wPnJ0Pj4+MCYmKDB8KGx0PVIrLTF8MCkpIT0oMHxtZSkmJjMyPT0oMHx1ZVtsdD4+MF0pP2x0OlIsdWVbQT4+MF09MCxwZT0wfG5hKHApLGFbNDcyODJdPTErKDB8''@;'; put 'put ''YVs0NzI4Ml0pLE09SyxrJj0tMTcsUj1BfWlmKDYma3wwKXtrdD0yMjticmVhayBlfWlmKDB8dWVbZXQ+PjBdKXtiPWMsQT1NO2JyZWFrIG59YVs0NzI4Ml09TSsxLE09SyxrfD0xOCxiPXBlLG1lPXAsQT1wfWlmKCEoMD09KDE2Jmt8MCkmKExlfEE8PDI0Pj4yNCE9MCkpKXtrdD0zODticmVh''@;'; put 'put ''ayBlfXN3aXRjaCg0Jms/KGI9RyxNPUspOihiPTB8bXIoNzIpLGFbKDB8YVtHZT4+Ml0pKyhLPDwyKT4+Ml09YixNPUsrMXwwKSwwfHBlJiYoYVtiKzYwPj4yXT1wZSksNSZrfHwodWVbcCt3Pj4wXT0zMixrfD0xLHc9dysxfDApLEE9cCt3fDAsMSZrJiYoKDB8dyk+MSYmKDB8KE10PUErLTF8''@;'; put 'put ''MCkpIT0oMHxEKSYmKEE9MzI9PSgwfHVlW010Pj4wXSk/TXQ6QSksdWVbQT4+MF09MCxEPTB8bmEocCksYVtiKzUyPj4yXT0wfGFwKGwsRCwwfHVlW2V0Pj4wXT8yOjAsK19bQmU+PjNdLDB8YVtIZT4+Ml0sMHxhW09lPj4yXSksdWVbYis2ND4+MF09MSxEPXAsdz0wKSwwfHVlWyhBPTB8YVs0''@;'; put 'put ''NzI4Ml0pPj4wXSl7Y2FzZSAwOmJlPTEsZj1tZSxBPVI7Y29udGludWUgZTtjYXNlIDEyNTprdD01MTticmVhayBlfWFbNDcyODJdPUErMSxHPWIsaz0wLGI9MCxmPW1lLEE9Un1uOmRve2lmKDUzPT0oMHxrdCkpe3N3aXRjaChrdD0wLGI9cCt3fDAsMHx1ZVsoQT1NKzF8MCk+PjBdKXtjYXNl''@;'; put 'put ''IDA6Yj1jLEE9TTticmVhayBuO2Nhc2UgNjI6Y2FzZSA2MDpjYXNlIDEyNDpjYXNlIDEyNTpjYXNlIDEyMzpiPWM7YnJlYWs7Y2FzZSAzMjowfHVlW2V0Pj4wXT9rdD01NTpiPTE7YnJlYWs7ZGVmYXVsdDprdD01NX01NT09KDB8a3QpJiYoa3Q9MCx1ZVtiPj4wXT05MixiPWMsa3w9OSx3PXcr''@;'; put 'put ''MXwwKSxhWzQ3MjgyXT1BfX13aGlsZSgwKTtpZihjPXArd3wwLDQma3wwJiYzMiE9KDB8dWVbQT4+MF0pKXtrdD01OTticmVhayBlfWZvcigyNCZrfHwoaz0zMj09KDB8dWVbQT4+MF0pP2s6OXxrKSw4Jms/KCEoKGY9MCE9KDB8YikpfChNPTB8dWVbQT4+MF0pPDwyND4+MjQhPTMyKSYmMzI9''@;'; put 'put ''PSgwfHVlW2MrLTE+PjBdKSYmMD09KDB8dWVbZXQ+PjBdKXx8KHVlW2M+PjBdPU0sdz13KzF8MCksZj8oZj1tZSxEPXArdystMXwwKTpmPW1lKToxNiZrPygoYz0wIT0oMHxiKSl8KE09MHx1ZVtBPj4wXSk8PDI0Pj4yNCE9MzI/a3Q9NzM6KDB8UikhPSgwfHApPzMyPT0oMHx1ZVtSKy0xPj4w''@;'; put 'put ''XSk/TT1SOmt0PTczOk09cCw3Mz09KDB8a3QpJiYoa3Q9MCx1ZVtSPj4wXT1NLE09UisxfDAsQT0wfGFbNDcyODJdKSxmPWM/TSstMXwwOm1lLFI9TSk6Zj1tZSxhWzQ3MjgyXT1BPUErMXwwOzspe2lmKCgwfHVlW0E+PjBdKT49MCl7TT1LLGM9YixiPXBlLEE9Ujtjb250aW51ZSB0fWFbNDcy''@;'; put 'put ''ODJdPW1lPUErMXwwLHVlW3Ardz4+MF09MHx1ZVtBPj4wXSx3PXcrMXwwLEE9bWV9fX1yZXR1cm4gMjI9PSgwfGt0KXx8Mjc9PSgwfGt0KXx8MzQ9PSgwfGt0KXx8MzY9PSgwfGt0KXx8Mzg9PSgwfGt0KT8oRzcobSxwZSksbT0wKTo1MT09KDB8a3QpPyhhWzQ3MjgyXT1BKzEsYVttKzQ4Pj4y''@;'; put 'put ''XT1NKTo1OT09KDB8a3QpPyhHNyhtLHBlKSxtPTApOjc4PT0oMHxrdCkmJihhW20rNDg+PjJdPUspLDB8bX1mdW5jdGlvbiBDUShsLGMsZil7bHw9MCxjfD0wO3ZhciBwZSxtZSxiZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wO2JlPW9lLG9lPW9lKzY0fDAs''@;'; put 'put ''Yj1iZSs0OHwwLGs9YmUrNDB8MCxNPWJlKzMyfDAsbWU9YmUrMTZ8MCxwZT1iZSx3PTB8YVs1MisoZnw9MCk+PjJdO2U6ZG97aWYodyl7aWYoKG09K19bdysyND4+M10pPjB8KHA9K19bdyszMj4+M10pPjApe3c9MHxMaShjLDEwNTQ5Nik7ZG97aWYodyl7aWYoYVtiPj4yXT1rLGFbYis0Pj4y''@;'; put 'put ''XT1NLCgwfCh3PTB8JGEodywxMDU1MDMsYikpKTw9MCl7QT04LG0rPTE2O2JyZWFrfW0rPUE9Kyh+figoQT03MiorX1trPj4zXSkrKEE+PTA/LjU6LS41KSk8PDF8MCksMSE9KDB8dykmJihBPSsofn4oKEE9NzIqK19bTT4+M10pKyhBPj0wPy41Oi0uNSkpPDwxfDApKX1lbHNlIEE9OCxtKz0x''@;'; put 'put ''Nn13aGlsZSgwKTtwPUErcH1fW21lPj4zXT1tLF9bbWUrOD4+M109cH1lbHNlIGZvcihNPW1lKzh8MCxEPWYrNDh8MCxSPWYrNTZ8MCxHPWYrNjR8MCxLPXBlKzh8MCxhW21lPj4yXT0wLGFbbWUrND4+Ml09MCxhW21lKzg+PjJdPTAsYVttZSsxMj4+Ml09MCx3PTA7Oyl7aWYoKDB8dyk+PSgw''@;'; put 'put ''fGFbRD4+Ml0pKWJyZWFrIGU7Q1EocGUsYywwfGFbKDB8YVtSPj4yXSkrKHc8PDIpPj4yXSksMHx1ZVtHPj4wXT8oX1ttZT4+M109K19bbWU+PjNdKyArX1twZT4+M10sYj1NLGs9KCtfW00+PjNdPitfW0s+PjNdP21lOnBlKSs4fDApOihfW00+PjNdPStfW00+PjNdKyArX1tLPj4zXSxiPW1l''@;'; put 'put ''LGs9K19bbWU+PjNdPitfW3BlPj4zXT9tZTpwZSksX1tiPj4zXT0rX1trPj4zXSx3PXcrMXwwfX13aGlsZSgwKTthW2Y+PjJdPWFbbWU+PjJdLGFbZis0Pj4yXT1hW21lKzQ+PjJdLGFbZis4Pj4yXT1hW21lKzg+PjJdLGFbZisxMj4+Ml09YVttZSsxMj4+Ml0sYVtsPj4yXT1hW21lPj4yXSxh''@;'; put 'put ''W2wrND4+Ml09YVttZSs0Pj4yXSxhW2wrOD4+Ml09YVttZSs4Pj4yXSxhW2wrMTI+PjJdPWFbbWUrMTI+PjJdLG9lPWJlfWZ1bmN0aW9uIGtRKGwsYyxmKXtmfD0wO3ZhciBBLGssRCxSLEcsSyxwZSxwPTAsbT0wLHc9MCxiPTAsTT0wO3BlPW9lLG9lPW9lKzMyfDAsRD1wZSsxNnwwLFI9cGUs''@;'; put 'put ''QT0oRz0rX1soY3w9MCk+PjNdKS0rX1sobHw9MCk+PjNdLHA9KEs9K19bYys4Pj4zXSktK19bbCs4Pj4zXSxhW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXSwwIT0oMHxmKXwwPT0oMHwoYz0wfGFbbCs1''@;'; put 'put ''Mj4+Ml0pKXx8KF9bKE09Yys0MHwwKT4+M109K19bTT4+M10rQSxfWyhNPWMrNDh8MCk+PjNdPStfW00+PjNdK3ApLGM9MHxhWyhrPWwrNDh8MCk+PjJdO2U6ZG97aWYoMHxjKWZvcihNPWwrNjR8MCxwPSgwPT0oMHx1ZVtNPj4wXSk/cDpBKS8rKDB8YyksYj1sKzU2fDAsdz0wOzspe2lmKCgw''@;'; put 'put ''fHcpPj0oMHxjKSlicmVhayBlO2w9MHxhWygwfGFbYj4+Ml0pKyh3PDwyKT4+Ml0sYz1+fihwKisoMHwobT13KzF8MCkpKS1+fihwKisoMHx3KSl8MCwwfHVlW00+PjBdP3o3KFIsK19bbD4+M10rICsoMHxjKSxLKTp6NyhSLEcsK19bbCs4Pj4zXSsgKygwfGMpKSxhW0Q+PjJdPWFbUj4+Ml0s''@;'; put 'put ''YVtEKzQ+PjJdPWFbUis0Pj4yXSxhW0QrOD4+Ml09YVtSKzg+PjJdLGFbRCsxMj4+Ml09YVtSKzEyPj4yXSxrUShsLEQsZiksdz1tLGM9MHxhW2s+PjJdfX13aGlsZSgwKTtvZT1wZX1mdW5jdGlvbiB6NyhsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlv''@;'; put 'put ''biBTUShsLGMsZil7Y3w9MDt2YXIgQSx3LEQsUixHLEsscGUscD0wLG09MCxiPTAsaz0wLE09MDtmb3IoRz1vZSxvZT1vZSs0OHwwLHc9RyszMnwwLE09RysxNnwwLGs9Ryx1ZVs2NSsobHw9MCk+PjBdPWZ8PTAsYj1sKzE2fDAsejcoTSxwZT0rX1tjPj4zXSwoSz0rX1soUj1jKzh8MCk+PjNd''@;'; put 'put ''KS0rX1tsKzg+PjNdKSxhW2I+PjJdPWFbTT4+Ml0sYVtiKzQ+PjJdPWFbTSs0Pj4yXSxhW2IrOD4+Ml09YVtNKzg+PjJdLGFbYisxMj4+Ml09YVtNKzEyPj4yXSxiPWwrMzJ8MCx6NyhrLCtfW2w+PjNdK3BlLEspLGFbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4y''@;'; put 'put ''XT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLGs9KGI9MHxhW2wrNDg+PjJdKS0xfDAsTT0wPT0oMHxmKSxEPWwrNTZ8MCxBPWwrNjR8MCxtPTA7ISgoMHxtKT49KDB8YikpOyl7ZG97aWYoIU0pe2lmKGw9MD09KDB8bSkscD0oMHxtKT09KDB8ayksMHx1ZVtBPj4wXSl7aWYobCl7''@;'; put 'put ''bD1wPzE1OjEzO2JyZWFrfWw9cD83OjU7YnJlYWt9aWYobCl7bD1wPzE1OjE0O2JyZWFrfWw9cD8xMToxMDticmVha31sPTB9d2hpbGUoMCk7cD0wfGFbKDB8YVtEPj4yXSkrKG08PDIpPj4yXSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJd''@;'; put 'put ''LGFbdysxMj4+Ml09YVtjKzEyPj4yXSxTUShwLHcsbCZmKSwwfHVlW0E+PjBdP19bYz4+M109K19bYVsoMHxhW0Q+PjJdKSsobTw8Mik+PjJdPj4zXSsgK19bYz4+M106X1tSPj4zXT0rX1tSPj4zXS0rX1s4KygwfGFbKDB8YVtEPj4yXSkrKG08PDIpPj4yXSk+PjNdLG09bSsxfDB9b2U9R31m''@;'; put 'put ''dW5jdGlvbiBHNyhsLGMpe2N8PTAsUk4obHw9MCksSHQoYyl9ZnVuY3Rpb24gUk4obCl7dmFyIGYscCxjPTA7Zm9yKGY9NDgrKGx8PTApfDAscD1sKzU2fDAsYz0wOyEoKDB8Yyk+PSgwfGFbZj4+Ml0pKTspUk4oMHxhWygwfGFbcD4+Ml0pKyhjPDwyKT4+Ml0pLGM9YysxfDA7SHQoMHxhW2wr''@;'; put 'put ''NjA+PjJdKSxWdSgwfGFbbCs1Mj4+Ml0pLEh0KDB8YVtwPj4yXSksSHQobCl9ZnVuY3Rpb24gUGFlKGwpe3ZhciBmLGM9MDtyZXR1cm4rICsoMHx+figoYz03MiooKGY9K2NsKGx8PTAsMHxhWzQ3MTQ2XSwwLC4wMSkpPihjPStjbChsLDB8YVs0NzE0NV0sMCwuMDIpKT9mOmMpKSsoYz49MD8u''@;'; put 'put ''NTotLjUpKSl9ZnVuY3Rpb24gTVEobCxjKXt2YXIgZjtyZXR1cm4rICsoKCsoMHwoZj1+figobD0rbCkvKGM9K2MpKSkpKmMrMWUtNTxsJjEpK2Z8MCkqY31mdW5jdGlvbiBFUShsKXtyZXR1cm4gMHwoKGw9MHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pPzkxPT0oMHxhW2FbbCs0Pj4y''@;'; put 'put ''XT4+Ml0pJjE6MCl9ZnVuY3Rpb24gQk4obCl7bHw9MDt2YXIgcCxjPTAsZj0wLG09MCxBPTA7cD0wfGFbNDcyODNdO2U6ZG97aWYocClmb3IobT0wfGFbNDcyODRdLGY9MDs7KXtpZigoMHxmKT49KDB8bSkpe2M9MDticmVhayBlfWlmKCgwfHVlWyhBPTB8YVsoYz0wfGFbcCsoZjw8Mik+PjJd''@;'; put 'put ''KT4+Ml0pPj4wXSk9PSgwfHVlW2w+PjBdKSYmMD09KDB8WmkoQSxsKSkpYnJlYWsgZTtmPWYrMXwwfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24geFEobCxjKXtjfD0wO3ZhciBrLE0sRCxSLEcsSyxwZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxtZT0wLGJlPTA7aWYo''@;'; put 'put ''cGU9b2Usb2U9b2UrMTEyfDAsRD1wZSs5NnwwLE09cGUrODB8MCxHPXBlKzY0fDAsaz1wZSs0OHwwLEs9cGUrMzJ8MCxSPXBlLG09cGUrMTZ8MCxsfD0wKXtBPTB8YVtsKzQ+PjJdLHc9OTAqKDMmYVsxMTYrKDB8YVsxNisoMHxmcihsPTB8YVtsPj4yXSkpPj4yXSk+PjJdKXwwLGFbRD4+Ml09''@;'; put 'put ''YVtjPj4yXSxhW0QrND4+Ml09YVtjKzQ+PjJdLGFbRCs4Pj4yXT1hW2MrOD4+Ml0sYVtEKzEyPj4yXT1hW2MrMTI+PjJdLE41KG0sRCx3KSxhW0s+PjJdPWFbbT4+Ml0sYVtLKzQ+PjJdPWFbbSs0Pj4yXSxhW0srOD4+Ml09YVttKzg+PjJdLGFbSysxMj4+Ml09YVttKzEyPj4yXTtlOmRve2lm''@;'; put 'put ''KEEpZj0rX1tBKzg+PjNdLHA9K19bQSsyND4+M10sbWU9K19bSz4+M10sbD0rX1tBPj4zXTw9bWUmJm1lPD0rX1tBKzE2Pj4zXSYmKGI9K19bSys4Pj4zXSxmPD1iKT9iPD1wJjE6MDtlbHNlIGZvcigoMHxsKT09KDB8YVs0NzI4N10pPyhtPTB8YVs0NzI4OF0sQT0wfGFbNDcyOTBdLHc9MHxh''@;'; put 'put ''WzQ3Mjg5XSk6KEE9MHxhWzEyKygwfGFbbCsxNj4+Ml0pPj4yXSxhWzQ3MjkxXT1BLHc9MHxhW0ErNDQ+PjJdLGFbNDcyODldPXcsbT0wfGFbQSs4Pj4yXSxhWzQ3Mjg4XT1tLEE9MHx2cigoMHxhW0ErND4+Ml0pLTF8MCxtKSxBPSgwfEEpPjA/QTowLGFbNDcyOTBdPUEsYVs0NzI4N109bCks''@;'; put 'put ''bD0wLGM9MDs7KXtpZigoMHxsKT49KDB8bSkpe2w9MTticmVhayBlfWlmKGFbUj4+Ml09YVsoYmU9dysoQStsPDw0KXwwKT4+Ml0sYVtSKzQ+PjJdPWFbYmUrND4+Ml0sYVtSKzg+PjJdPWFbYmUrOD4+Ml0sYVtSKzEyPj4yXT1hW2JlKzEyPj4yXSxiZT13KyhBKygobCs0fDApJSgwfG0pfDAp''@;'; put 'put ''PDw0KXwwLGFbaz4+Ml09YVtLPj4yXSxhW2srND4+Ml09YVtLKzQ+PjJdLGFbays4Pj4yXT1hW0srOD4+Ml0sYVtrKzEyPj4yXT1hW0srMTI+PjJdLGFbRz4+Ml09YVs0NjYxNF0sYVtHKzQ+PjJdPWFbNDY2MTVdLGFbRys4Pj4yXT1hWzQ2NjE2XSxhW0crMTI+PjJdPWFbNDY2MTddLGFbTT4+''@;'; put 'put ''Ml09YVtSPj4yXSxhW00rND4+Ml09YVtSKzQ+PjJdLGFbTSs4Pj4yXT1hW1IrOD4+Ml0sYVtNKzEyPj4yXT1hW1IrMTI+PjJdLGFbRD4+Ml09YVtiZT4+Ml0sYVtEKzQ+PjJdPWFbYmUrND4+Ml0sYVtEKzg+PjJdPWFbYmUrOD4+Ml0sYVtEKzEyPj4yXT1hW2JlKzEyPj4yXSwyPT0oMHwoYz1j''@;'; put 'put ''KygwPT0oMHxIeShrLEcsTSxEKSkmMSl8MCkpKXtsPTA7YnJlYWt9bD1sKzJ8MH19d2hpbGUoMCl9ZWxzZSBhWzQ3Mjg3XT0wLGw9MDtyZXR1cm4gb2U9cGUsMHxsfWZ1bmN0aW9uIERRKGwsYyl7bHw9MDt2YXIgcCxBLGY9MCxtPTA7cmV0dXJuIEE9b2Usb2U9b2UrMTZ8MCwwfChmPTB8T1Eo''@;'; put 'put ''Y3w9MCxwPUEpKSYmR2MobCxmKSwwfChmPTB8YVs0NzE3Ml0pJiYwfChtPTB8Rm8oYyxmKSkmJjB8dWVbbT4+MF0mJllmKGwsK2NsKGMsMHxhWzQ3MTcyXSwxLDApKSxvZT1BLDB8YVtwPj4yXX1mdW5jdGlvbiBQTihsKXtyZXR1cm4gMHxBRChsfD0wLDEzNDgwMCl9ZnVuY3Rpb24gbUQobCxj''@;'; put 'put ''KXtyZXR1cm4gbHw9MCxjPTB8T2EoY3w9MCwwfGFbNDcxNDhdLDE5NTA1OSksZ2EobCxjPTB8dWVbYz4+MF0/YzoxMzczMTQpLDB8Y31mdW5jdGlvbiBMUShsLGMpe2x8PTA7dmFyIGYscCx3LGIsayxNLG09MCxBPTA7Zj1vZSxvZT1vZSs5NnwwLGI9Zis4MHwwLGs9Zis2NHwwLHA9ZiszMnww''@;'; put 'put ''LEE9ZixfWzgrKE09ZisxNnwwKT4+M109LjM3NSoobT0rX1s4MCsoYz0wfGFbMTYrKGN8PTApPj4yXSk+PjNdKSxfW00+PjNdPS42NjE0Kih3PStfW2MrOTY+PjNdKSxjPWMrMTZ8MCxhW2s+PjJdPWFbTT4+Ml0sYVtrKzQ+PjJdPWFbTSs0Pj4yXSxhW2srOD4+Ml09YVtNKzg+PjJdLGFbaysx''@;'; put 'put ''Mj4+Ml09YVtNKzEyPj4yXSxhW2I+PjJdPWFbYz4+Ml0sYVtiKzQ+PjJdPWFbYys0Pj4yXSxhW2IrOD4+Ml09YVtjKzg+PjJdLGFbYisxMj4+Ml09YVtjKzEyPj4yXSx2RChBLGssYiksYVtwPj4yXT1hW0E+PjJdLGFbcCs0Pj4yXT1hW0ErND4+Ml0sYVtwKzg+PjJdPWFbQSs4Pj4yXSxhW3Ar''@;'; put 'put ''MTI+PjJdPWFbQSsxMj4+Ml0sX1soYz1wKzI0fDApPj4zXT0rX1soQT1wKzh8MCk+PjNdLF9bcCsxNj4+M109K19bcD4+M10tMS4zMjI4KncsV28obCxwLDIpLF9bQT4+M109bT0rX1tBPj4zXS0uNzUqbSxfW2M+PjNdPW0sV28obCxwLDIpLG9lPWZ9ZnVuY3Rpb24gdkQobCxjLGYpe3ZhciBw''@;'; put 'put ''O3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxfW2wrOD4+M109cH1mdW5jdGlvbiBBRChsLGMpe2N8PTA7dmFyIGY9MDtyZXR1cm4gZj0wfE9hKGx8PTAsMHxhWzQ3MTQ5XSwxOTUwNTkpLDB8dWVbZj4+MF0/MHxmOihm''@;'; put 'put ''PTB8T2EobCwwfGFbNDcxNDhdLDE5NTA1OSksMHwoMD09KDB8dWVbZj4+MF0pP2M6ZikpfWZ1bmN0aW9uIE9RKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zj0wfE9hKGx8PTAsMHxhWzQ3MTU3XSwxOTUwNTkpO2U6ZG97aWYoMHx1ZVtmPj4wXSl7QT1tPTB8cWwoZiks''@;'; put 'put ''Zj0wO3Q6Zm9yKDs7KXtpZighKHA9MHxhW0E+PjJdKSlicmVhayBlO3N3aXRjaCgwfHVlW3A+PjBdKXtjYXNlIDEwMjppZighKDB8WmkocCwxMTExMDEpKSl7QT1BKzR8MCxmfD0xO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMTQ6aWYoISgwfFppKHAsMTA2MzE2KSkpe3A9QTtkb3thWyhiPXAp''@;'; put 'put ''Pj4yXT13PTB8YVsocD1wKzR8MCk+PjJdfXdoaWxlKDAhPSgwfHcpKTtmfD00LEE9Yj1BO2NvbnRpbnVlIHR9aWYoISgwfFppKHAsMTA2MzM0KSkpe3A9QTtkb3thWyh3PXApPj4yXT1iPTB8YVsocD1wKzR8MCk+PjJdfXdoaWxlKDAhPSgwfGIpKTtmfD0zLEE9Yj1BO2NvbnRpbnVlIHR9YnJl''@;'; put 'put ''YWs7Y2FzZSAxMDA6aWYoISgwfFppKHAsMTA2MzI0KSkpe3A9QTtkb3thWyh3PXApPj4yXT1iPTB8YVsocD1wKzR8MCk+PjJdfXdoaWxlKDAhPSgwfGIpKTtmfD04LEE9Yj1BO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMDU6aWYoISgwfFppKHAsMTM0MzM1KSkpe0E9QSs0fDAsZnw9MzI7Y29u''@;'; put 'put ''dGludWUgdH1icmVhaztjYXNlIDExNTppZigwPT0oMHxaaShwLDEwNjM0MSkpJiYwfGphZShsKSl7cD1BO2Rve2FbKHc9cCk+PjJdPWI9MHxhWyhwPXArNHwwKT4+Ml19d2hpbGUoMCE9KDB8YikpO2Z8PTY0LEE9Yj1BO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMTk6aWYoMD09KDB8WmkocCwx''@;'; put 'put ''MDYzNDkpKSYmMHxSUShsKSl7cD1BO2Rve2FbKHc9cCk+PjJdPWI9MHxhWyhwPXArNHwwKT4+Ml19d2hpbGUoMCE9KDB8YikpO2Z8PTUxMixBPWI9QTtjb250aW51ZSB0fX1BPUErNHwwfX1lbHNlIG09MCxmPTB9d2hpbGUoMCk7cmV0dXJuKHA9MHxhWzgrKDB8YVs4KygwfGFbbCsxNj4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdKSYmKGZ8PWFbcCs0MD4+Ml0pLGFbYz4+Ml09ZiwwfG19ZnVuY3Rpb24gamFlKGwpe3ZhciBjPTA7cmV0dXJuIDB8KDAhPSgwfChsPTB8YVs4KygwfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+PjJdKSkmJjQ9PSgwfGFbbCs4Pj4yXSkmJjA9PSgwfCgwfH5+KChjPStf''@;'; put 'put ''W2wrMTY+PjNdKSsoYz49MD8uNTotLjUpKSklOTApJiYwPT0rX1tsKzI0Pj4zXT8wPT0rX1tsKzMyPj4zXSYxOjApfWZ1bmN0aW9uIFJRKGwpe3JldHVybiAwfCgobD0wfGFbOCsoMHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pPj4yXSk/KDB8YVtsKzg+PjJdKTwzJjE6MCl9ZnVuY3Rp''@;'; put 'put ''b24gSHkobCxjLGYscCl7dmFyIG0sdyxiLEE9MDtyZXR1cm4gMSYoK19bOCsobHw9MCk+PjNdKihtPStfWyhwfD0wKT4+M10tKEE9K19bKGZ8PTApPj4zXSkpKyArX1tsPj4zXSoodz0tKCtfW3ArOD4+M10tKGI9K19bZis4Pj4zXSkpKS0oQT1tKmIrQSp3KT49MF4rX1soY3w9MCk+PjNdKnct''@;'; put 'put ''QSsgK19bYys4Pj4zXSptPj0wXjEpfDB9ZnVuY3Rpb24geWsobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgT2UsTGUsQmUsamUsZXQscnQsbHQsTXQsYXQsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxIZT0wLEdlPTAsa3Q9''@;'; put 'put ''MCxFdD0wO2F0PW9lLG9lPW9lKzE5MnwwLHJ0PWF0KzE3NnwwLE10PWF0KzE2MHwwLGs9YXQrMTQ0fDAsamU9YXQrMTI4fDAsZXQ9YXQrMTEyfDAsTT1hdCs5NnwwLEQ9YXQrODB8MCxSPWF0KzY0fDAsT2U9YXQrNDh8MCxMZT1hdCszMnwwLEJlPWF0KzE2fDAsbHQ9YXQsKGN8PTApPyh6Nyhr''@;'; put 'put ''LC41KigoRz0rX1tjKzE2Pj4zXSkrKGI9K19bYz4+M10pKSwuNSooKEs9K19bYysyND4+M10pKyhtZT0rX1tjKzg+PjNdKSkpLGFbTXQ+PjJdPWFbaz4+Ml0sYVtNdCs0Pj4yXT1hW2srND4+Ml0sYVtNdCs4Pj4yXT1hW2srOD4+Ml0sYVtNdCsxMj4+Ml09YVtrKzEyPj4yXSxrPTEsR2U9TXQs''@;'; put 'put ''dz0rX1tNdD4+M10sa3Q9RXQ9TXQrOHwwLHBlPStfW0V0Pj4zXSk6KGFbTXQ+PjJdPTAsYVtNdCs0Pj4yXT0wLGFbTXQrOD4+Ml09MCxhW010KzEyPj4yXT0wLGs9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcihsKSk+PjJdKT4+Ml18MCksRz0uNSorX1s4MCsoR2U9MHxhW2wrMTY+PjJdKT4+''@;'; put 'put ''M10sdz0rX1tHZSs4OD4+M10sbWU9az9HOncsRz1rP3c6RyxrPTAsR2U9TXQsdz0wLGI9LUcsSz1tZSxrdD1NdCs4fDAscGU9MCxtZT0tbWUpLGJlPTQqKEc+Sz9HOkspO2U6ZG97aWYoMCE9KDB8cCkmJihIZT0wfHVlW3A+PjBdLEhlPDwyND4+MjQhPTApKXN3aXRjaChwPXArMXwwLEhlPDwy''@;'; put 'put ''ND4+MjR8MCl7Y2FzZSA5OTpSPTEsbT0wLHA9MCxNPTAsdz0wLEQ9MDticmVhayBlO2Nhc2UgMTAxOmlmKDB8dWVbcD4+MF0pe1I9MSxtPTAscD0wLE09MCx3PTAsRD0xO2JyZWFrIGV9QT8oejUoamUsQSxwZSxiZSksYVtNdD4+Ml09YVtqZT4+Ml0sYVtNdCs0Pj4yXT1hW2plKzQ+PjJdLGFb''@;'; put 'put ''TXQrOD4+Ml09YVtqZSs4Pj4yXSxhW010KzEyPj4yXT1hW2plKzEyPj4yXSk6X1tHZT4+M109RyxSPTAsbSY9MixwPTAsTT0xLHc9MCxEPTAsaz0xO2JyZWFrIGU7Y2FzZSAxMTU6c3dpdGNoKF9ba3Q+PjNdPW1lLDB8dWVbcD4+MF0pe2Nhc2UgMDpBPyh6NShldCxBLC1iZSx3KSxhW010Pj4y''@;'; put 'put ''XT1hW2V0Pj4yXSxhW010KzQ+PjJdPWFbZXQrND4+Ml0sYVtNdCs4Pj4yXT1hW2V0Kzg+PjJdLGFbTXQrMTI+PjJdPWFbZXQrMTI+PjJdKTpfW0dlPj4zXT13LFI9MCxtJj0xLHA9MCxNPTEsdz0tMS41NzA3OTYzMjY3OTQ4OTY2LEQ9MCxrPTE7YnJlYWsgZTtjYXNlIDEwMTpBPyh6NShNLEEs''@;'; put 'put ''LWJlLGJlKSxhW010Pj4yXT1hW00+PjJdLGFbTXQrND4+Ml09YVtNKzQ+PjJdLGFbTXQrOD4+Ml09YVtNKzg+PjJdLGFbTXQrMTI+PjJdPWFbTSsxMj4+Ml0pOl9bR2U+PjNdPUcsUj0wLG0mPTMscD0wLE09MSx3PS0uNzg1Mzk4MTYzMzk3NDQ4MyxEPTAsaz0xO2JyZWFrIGU7Y2FzZSAxMTk6''@;'; put 'put ''QT8oejUoRCxBLGJlPS1iZSxiZSksYVtNdD4+Ml09YVtEPj4yXSxhW010KzQ+PjJdPWFbRCs0Pj4yXSxhW010Kzg+PjJdPWFbRCs4Pj4yXSxhW010KzEyPj4yXT1hW0QrMTI+PjJdKTpfW0dlPj4zXT1iLFI9MCxtJj05LHA9MCxNPTEsdz0tMi4zNTYxOTQ0OTAxOTIzNDUsRD0wLGs9MTticmVh''@;'; put 'put ''ayBlO2RlZmF1bHQ6X1trdD4+M109cGUsUj0xLG09MCxwPTAsTT0wLHc9MCxEPTE7YnJlYWsgZX1jYXNlIDExOTppZigwfHVlW3A+PjBdKXtSPTEsbT0wLHA9MCxNPTAsdz0wLEQ9MTticmVhayBlfUE/KHo1KFIsQSxwZSwtYmUpLGFbTXQ+PjJdPWFbUj4+Ml0sYVtNdCs0Pj4yXT1hW1IrND4+''@;'; put 'put ''Ml0sYVtNdCs4Pj4yXT1hW1IrOD4+Ml0sYVtNdCsxMj4+Ml09YVtSKzEyPj4yXSk6X1tHZT4+M109YixSPTAsbSY9OCxwPTAsTT0xLHc9My4xNDE1OTI2NTM1ODk3OTMsRD0wLGs9MTticmVhayBlO2Nhc2UgMTEwOnN3aXRjaChfW2t0Pj4zXT1LLDB8dWVbcD4+MF0pe2Nhc2UgMDpBPyh6NShP''@;'; put 'put ''ZSxBLGJlLHcpLGFbTXQ+PjJdPWFbT2U+PjJdLGFbTXQrND4+Ml09YVtPZSs0Pj4yXSxhW010Kzg+PjJdPWFbT2UrOD4+Ml0sYVtNdCsxMj4+Ml09YVtPZSsxMj4+Ml0pOl9bR2U+PjNdPXcsUj0wLG0mPTQscD0wLE09MSx3PTEuNTcwNzk2MzI2Nzk0ODk2NixEPTAsaz0xO2JyZWFrIGU7Y2Fz''@;'; put 'put ''ZSAxMDE6QT8oejUoTGUsQSxiZSxiZSksYVtNdD4+Ml09YVtMZT4+Ml0sYVtNdCs0Pj4yXT1hW0xlKzQ+PjJdLGFbTXQrOD4+Ml09YVtMZSs4Pj4yXSxhW010KzEyPj4yXT1hW0xlKzEyPj4yXSk6X1tHZT4+M109RyxSPTAsbSY9NixwPTAsTT0xLHc9Ljc4NTM5ODE2MzM5NzQ0ODMsRD0wLGs9''@;'; put 'put ''MTticmVhayBlO2Nhc2UgMTE5OkE/KHo1KEJlLEEsYmUsLWJlKSxhW010Pj4yXT1hW0JlPj4yXSxhW010KzQ+PjJdPWFbQmUrND4+Ml0sYVtNdCs4Pj4yXT1hW0JlKzg+PjJdLGFbTXQrMTI+PjJdPWFbQmUrMTI+PjJdKTpfW0dlPj4zXT1iLFI9MCxtJj0xMixwPTAsTT0xLHc9Mi4zNTYxOTQ0''@;'; put 'put ''OTAxOTIzNDUsRD0wLGs9MTticmVhayBlO2RlZmF1bHQ6X1trdD4+M109cGUsUj0xLG09MCxwPTAsTT0wLHc9MCxEPTE7YnJlYWsgZX1jYXNlIDk1OlI9MSxwPTEsTT0wLHc9MCxEPTA7YnJlYWsgZTtkZWZhdWx0OlI9MSxtPTAscD0wLE09MCx3PTAsRD0xO2JyZWFrIGV9ZWxzZSBSPTEsbT0w''@;'; put 'put ''LHA9MCxNPTAsdz0wLEQ9MH13aGlsZSgwKTtyZXR1cm4gRXQ9OTAqKDMmYVsxMTYrKDB8YVsxNisoMHxmcihsKSk+PjJdKT4+Ml0pfDAsYVtydD4+Ml09YVtNdD4+Ml0sYVtydCs0Pj4yXT1hW010KzQ+PjJdLGFbcnQrOD4+Ml09YVtNdCs4Pj4yXSxhW3J0KzEyPj4yXT1hW010KzEyPj4yXSxz''@;'; put 'put ''RChsdCxydCxFdCksYVtNdD4+Ml09YVtsdD4+Ml0sYVtNdCs0Pj4yXT1hW2x0KzQ+PjJdLGFbTXQrOD4+Ml09YVtsdCs4Pj4yXSxhW010KzEyPj4yXT1hW2x0KzEyPj4yXSxwPDwyND4+MjR8fChtPTB8ZnVuY3Rpb24gWmFlKGwsYyl7bHw9MCxjfD0wO2U6ZG97c3dpdGNoKDB8Yyl7Y2FzZSAz''@;'; put 'put ''OnN3aXRjaCgwfGwpe2Nhc2UgNDpsPTI7YnJlYWsgZTtjYXNlIDE6bD04O2JyZWFrIGU7Y2FzZSA4Omw9MTticmVhayBlO2Nhc2UgMjpsPTQ7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9Y2FzZSAyOnN3aXRjaCgwfGwpe2Nhc2UgNDpsPTE7YnJlYWsgZTtjYXNlIDE6bD00O2JyZWFrIGU7ZGVm''@;'; put 'put ''YXVsdDpicmVhayBlfWNhc2UgMTpzd2l0Y2goMHxsKXtjYXNlIDQ6bD0yO2JyZWFrIGU7Y2FzZSAxOmw9ODticmVhayBlO2Nhc2UgODpsPTQ7YnJlYWsgZTtjYXNlIDI6bD0xO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX19d2hpbGUoMCk7cmV0dXJuIDB8bH0obSwzJmFbMTE2KygwfGFbMTYr''@;'; put 'put ''KDB8ZnIobCkpPj4yXSk+PjJdKSksdWVbZiszMz4+MF09bSxhW2YrMjQ+PjJdPWMsX1tmPj4zXT0rKDB8fn4oKGI9K19bR2U+PjNdKSsoYj49MD8uNTotLjUpKSksX1tmKzg+PjNdPSsoMHx+figoYj0rX1trdD4+M10pKyhiPj0wPy41Oi0uNSkpKSxfW2YrMTY+PjNdPStmdW5jdGlvbiBCUShs''@;'; put 'put ''LGMpe3N3aXRjaChsPStsLDB8KGN8PTApKXtjYXNlIDM6My4xNDE1OTI2NTM1ODk3OTMhPWw/Mi4zNTYxOTQ0OTAxOTIzNDUhPWw/MS41NzA3OTYzMjY3OTQ4OTY2IT1sPzAhPWw/LS43ODUzOTgxNjMzOTc0NDgzIT1sPy0xLjU3MDc5NjMyNjc5NDg5NjY9PWwmJihsPTMuMTQxNTkyNjUzNTg5''@;'; put 'put ''NzkzKTpsPTIuMzU2MTk0NDkwMTkyMzQ1Omw9MS41NzA3OTYzMjY3OTQ4OTY2Omw9MDpsPS0uNzg1Mzk4MTYzMzk3NDQ4MzpsPS0xLjU3MDc5NjMyNjc5NDg5NjY7YnJlYWs7Y2FzZSAyOmw9LWw7YnJlYWs7Y2FzZSAxOmwrPS0xLjU3MDc5NjMyNjc5NDg5NjZ9cmV0dXJuK2x9KHcsMyZhWzEx''@;'; put 'put ''NisoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4yXSksbT0wPT0oYj0rX1tHZT4+M10pJjA9PSh3PStfW2t0Pj4zXSk/LTEyODoyNTUmfn4oNDAuNzQzNjY1NDMxNTI1MjEqKChtZT00LjcxMjM4ODk4MDM4NDY5KyhiZT0rcTIoK3csK2IpKSk+PTYuMjgzMTg1MzA3MTc5NTg2P2JlKy0xLjU3MDc5''@;'; put 'put ''NjMyNjc5NDg5NjY6bWUpKSx1ZVtmKzMyPj4wXT1tLHVlW2YrMjk+PjBdPU0sdWVbZisyOD4+MF09ayx1ZVtmKzMwPj4wXT1SLHVlW2YrMzE+PjBdPXAsb2U9YXQsMHxEfWZ1bmN0aW9uIEZOKGwsYyl7dmFyIGYscDtjfD0wLGY9b2Usb2U9b2UrMTZ8MCxhWyhwPWYpPj4yXT0wfCRyKGx8PTAp''@;'; put 'put ''LGFbcCs0Pj4yXT1jLFhyKDAsMTA2NDE5LHApLG9lPWZ9ZnVuY3Rpb24gejUobCxjLGYscCl7bHw9MCxmPStmLHA9K3A7dmFyIG0sQSx3LGIsayxELFIsRyxLLE09MDtHPW9lLG9lPW9lKzEyOHwwLEE9RysxMTJ8MCxiPUcrNDh8MCxrPUcrMTZ8MCxNPUcrMzJ8MCxEPUcsdz0zJmFbMTE2Kygw''@;'; put 'put ''fGFbMTYrKDB8ZnIoUj0wfGFbKGN8PTApPj4yXSkpPj4yXSk+PjJdLF9baz4+M109cCxfW2srOD4+M109ZiwobT0wIT0oMHx3KSkmJihhW0E+PjJdPWFbaz4+Ml0sYVtBKzQ+PjJdPWFbays0Pj4yXSxhW0ErOD4+Ml09YVtrKzg+PjJdLGFbQSsxMj4+Ml09YVtrKzEyPj4yXSxzRChNLEEsOTAq''@;'; put 'put ''d3wwKSxhW2s+PjJdPWFbTT4+Ml0sYVtrKzQ+PjJdPWFbTSs0Pj4yXSxhW2srOD4+Ml09YVtNKzg+PjJdLGFbaysxMj4+Ml09YVtNKzEyPj4yXSksTT1iKzQ4fDAsSz1iKzMyfDAsYVtiPj4yXT0wLGFbYis0Pj4yXT0wLGFbYis4Pj4yXT0wLGFbYisxMj4+Ml09MCxhW2IrMTY+PjJdPTAsYVti''@;'; put 'put ''KzIwPj4yXT0wLGFbYisyND4+Ml09MCxhW2IrMjg+PjJdPTAsYVtLPj4yXT1hW2s+PjJdLGFbSys0Pj4yXT1hW2srND4+Ml0sYVtLKzg+PjJdPWFbays4Pj4yXSxhW0srMTI+PjJdPWFbaysxMj4+Ml0sYVtNPj4yXT1hW2s+PjJdLGFbTSs0Pj4yXT1hW2srND4+Ml0sYVtNKzg+PjJdPWFbays4''@;'; put 'put ''Pj4yXSxhW00rMTI+PjJdPWFbaysxMj4+Ml0sd0QoYywwfGFbMTIrKDB8YVs0KygwfGFbOCsoMHxhW1IrMTY+PjJdKT4+Ml0pPj4yXSk+PjJdLGIsMSksbSYmKGFbQT4+Ml09YVtiPj4yXSxhW0ErND4+Ml09YVtiKzQ+PjJdLGFbQSs4Pj4yXT1hW2IrOD4+Ml0sYVtBKzEyPj4yXT1hW2IrMTI+''@;'; put 'put ''PjJdLE41KEQsQSw5MCp3fDApLGFbYj4+Ml09YVtEPj4yXSxhW2IrND4+Ml09YVtEKzQ+PjJdLGFbYis4Pj4yXT1hW0QrOD4+Ml0sYVtiKzEyPj4yXT1hW0QrMTI+PjJdKSxhW2w+PjJdPWFbYj4+Ml0sYVtsKzQ+PjJdPWFbYis0Pj4yXSxhW2wrOD4+Ml09YVtiKzg+PjJdLGFbbCsxMj4+Ml09''@;'; put 'put ''YVtiKzEyPj4yXSxvZT1HfWZ1bmN0aW9uIEZRKGwsYyxmKXtsfD0wLGN8PTA7dmFyIEQsUixHLEsscGUsbWUsYmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2ZvcihiZT1vZSxvZT1vZSsxNDR8MCxSPWJlKzEyOHwwLEQ9YmUrMTEyfDAsRz1iZSsxNnwwLEs9YmUsbT1iZSs5NnwwLEE9''@;'; put 'put ''YmUrODB8MCxwZT1iZSs2NHwwLG1lPWJlKzQ4fDAsKHA9MHxhWyh3PTUyKyhmfD0wKXwwKT4+Ml0pPyhNPXArNTZ8MCxwPWYrMzJ8MCxhW0Q+PjJdPWFbKGs9ZisxNnwwKT4+Ml0sYVtEKzQ+PjJdPWFbays0Pj4yXSxhW0QrOD4+Ml09YVtrKzg+PjJdLGFbRCsxMj4+Ml09YVtrKzEyPj4yXSxh''@;'; put 'put ''W1I+PjJdPWFbcD4+Ml0sYVtSKzQ+PjJdPWFbcCs0Pj4yXSxhW1IrOD4+Ml09YVtwKzg+PjJdLGFbUisxMj4+Ml09YVtwKzEyPj4yXSxmdW5jdGlvbiBKYWUobCxjLGYpe3ZhciBwO3A9LjUqKCtfWzgrKGZ8PTApPj4zXSsgK19bOCsoY3w9MCk+PjNdKSxfWyhsfD0wKT4+M109LjUqKCtfW2Y+''@;'; put 'put ''PjNdKyArX1tjPj4zXSksX1tsKzg+PjNdPXB9KG0sRCxSKSxrPTE2KygwfGFbKHA9YysxNnwwKT4+Ml0pfDAsYVtEPj4yXT1hW20+PjJdLGFbRCs0Pj4yXT1hW20rND4+Ml0sYVtEKzg+PjJdPWFbbSs4Pj4yXSxhW0QrMTI+PjJdPWFbbSsxMj4+Ml0sYVtSPj4yXT1hW2s+PjJdLGFbUis0Pj4y''@;'; put 'put ''XT1hW2srND4+Ml0sYVtSKzg+PjJdPWFbays4Pj4yXSxhW1IrMTI+PjJdPWFbaysxMj4+Ml0sdkQoQSxELFIpLGFbTT4+Ml09YVtBPj4yXSxhW00rND4+Ml09YVtBKzQ+PjJdLGFbTSs4Pj4yXT1hW0ErOD4+Ml0sYVtNKzEyPj4yXT1hW0ErMTI+PjJdLEI3KGwsMTAsMHxhW3c+PjJdKSxtRChs''@;'; put 'put ''LGMpKTpwPWMrMTZ8MCxhW0s+PjJdPWFbKGI9MTYrKDB8YVtwPj4yXSl8MCk+PjJdLGFbSys0Pj4yXT1hW2IrND4+Ml0sYVtLKzg+PjJdPWFbYis4Pj4yXSxhW0srMTI+PjJdPWFbYisxMj4+Ml0sYj1mKzQ4fDAsaz1mKzY0fDAsTT1HKzE2fDAsdz1mKzU2fDAsZj1HKzE2fDAsQT0wOyEoKDB8''@;'; put 'put ''QSk+PSgwfGFbYj4+Ml0pKTspKDB8QSk+MCYmKG09MHxhWyhwPSgwfGFbdz4+Ml0pKyhBPDwyKXwwKT4+Ml0sMHx1ZVtrPj4wXT8oYVtHPj4yXT1hWyhtPW0rMTZ8MCk+PjJdLGFbRys0Pj4yXT1hW20rND4+Ml0sYVtHKzg+PjJdPWFbbSs4Pj4yXSxhW0crMTI+PjJdPWFbbSsxMj4+Ml0sX1tm''@;'; put 'put ''Pj4zXT0rX1tHPj4zXSxwPTMyKygwfGFbcD4+Ml0pfDAsbT0xKTooYVtNPj4yXT1hWyhtPW0rMzJ8MCk+PjJdLGFbTSs0Pj4yXT1hW20rND4+Ml0sYVtNKzg+PjJdPWFbbSs4Pj4yXSxhW00rMTI+PjJdPWFbbSsxMj4+Ml0sX1tHPj4zXT0rX1sxNisoMHxhW3A+PjJdKT4+M10scD1NLG09MCks''@;'; put 'put ''X1tHKyhtPDw0KSs4Pj4zXT0rX1twKzg+PjNdLGFbRD4+Ml09YVtHPj4yXSxhW0QrND4+Ml09YVtHKzQ+PjJdLGFbRCs4Pj4yXT1hW0crOD4+Ml0sYVtEKzEyPj4yXT1hW0crMTI+PjJdLGFbUj4+Ml09YVtLPj4yXSxhW1IrND4+Ml09YVtLKzQ+PjJdLGFbUis4Pj4yXT1hW0srOD4+Ml0sYVtS''@;'; put 'put ''KzEyPj4yXT1hW0srMTI+PjJdLHZEKHBlLEQsUiksYVtHPj4yXT1hW3BlPj4yXSxhW0crND4+Ml09YVtwZSs0Pj4yXSxhW0crOD4+Ml09YVtwZSs4Pj4yXSxhW0crMTI+PjJdPWFbcGUrMTI+PjJdLGFbRD4+Ml09YVtNPj4yXSxhW0QrND4+Ml09YVtNKzQ+PjJdLGFbRCs4Pj4yXT1hW00rOD4+''@;'; put 'put ''Ml0sYVtEKzEyPj4yXT1hW00rMTI+PjJdLGFbUj4+Ml09YVtLPj4yXSxhW1IrND4+Ml09YVtLKzQ+PjJdLGFbUis4Pj4yXT1hW0srOD4+Ml0sYVtSKzEyPj4yXT1hW0srMTI+PjJdLHZEKG1lLEQsUiksYVtNPj4yXT1hW21lPj4yXSxhW00rND4+Ml09YVttZSs0Pj4yXSxhW00rOD4+Ml09YVtt''@;'; put 'put ''ZSs4Pj4yXSxhW00rMTI+PjJdPWFbbWUrMTI+PjJdLFdvKGwsRywyKSksRlEobCxjLDB8YVsoMHxhW3c+PjJdKSsoQTw8Mik+PjJdKSxBPUErMXwwO29lPWJlfWZ1bmN0aW9uIEhRKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTA7MCE9KDB8KGY9MHxhWzYwKyhsfD0wKT4+Ml0pKSYmKDB8dWVb''@;'; put 'put ''Zj4+MF0pPT0oMHx1ZVtjPj4wXSkmJjA9PSgwfFppKGYsYykpfHwocD00KTtlOmRve2lmKDQ9PSgwfHApKWZvcihtPWwrNTZ8MCxwPTB8YVtsKzQ4Pj4yXSxmPTA7Oyl7aWYoKDB8Zik+PSgwfHApKXtsPTA7YnJlYWsgZX1pZihsPTB8SFEoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0sYykp''@;'; put 'put ''YnJlYWs7Zj1mKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBOUShsLGMpe2x8PTAsY3w9MDt2YXIgbWUsYmUsT2UsTGUsQmUsSGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDtIZT1vZSxvZT1vZSsxNDR8MCxPZT1IZSsxMTJ8''@;'; put 'put ''MCxiZT1IZSs5NnwwLExlPUhlKzgwfDAsbWU9SGUrNjR8MCxCZT1IZSszMnwwLEs9SGUrMTZ8MCxwZT1IZSxBPUhlKzQ4fDA7ZG97aWYobCl7aWYoYj0wfGFbbCs0Pj4yXSxSPTkwKigzJmFbMTE2KygwfGFbMTYrKDB8ZnIoaz0wfGFbbD4+Ml0pKT4+Ml0pPj4yXSl8MCxhW09lPj4yXT1hW2M+''@;'; put 'put ''PjJdLGFbT2UrND4+Ml09YVtjKzQ+PjJdLGFbT2UrOD4+Ml09YVtjKzg+PjJdLGFbT2UrMTI+PjJdPWFbYysxMj4+Ml0sTjUoQSxPZSxSKSxhW0JlPj4yXT1hW0E+PjJdLGFbQmUrND4+Ml09YVtBKzQ+PjJdLGFbQmUrOD4+Ml09YVtBKzg+PjJdLGFbQmUrMTI+PjJdPWFbQSsxMj4+Ml0sMHxi''@;'; put 'put ''KXtpZighKCtfW2I+PjNdPD0oZj0rX1tCZT4+M10pKSl7bD0wO2JyZWFrfWlmKCEoZjw9K19bYisxNj4+M10pKXtsPTA7YnJlYWt9aWYoISgrX1tiKzg+PjNdPD0oZj0rX1tCZSs4Pj4zXSkpKXtsPTA7YnJlYWt9bD1mPD0rX1tiKzI0Pj4zXTticmVha31pZigoMHxrKT09KDB8YVs0NzI5Ml0p''@;'; put 'put ''PyhmPStfWzIzMzA5XSxwPStfWzIzMzEwXSx3PStfWzIzMzExXSk6KGFbNDcyOTNdPWM9MHxhWzEyKygwfGFbKGw9aysxNnwwKT4+Ml0pPj4yXSxhWzQ3Mjk0XT1hW2MrNDQ+PjJdLGFbNDcyOTVdPWFbYys4Pj4yXSwyMDQ4JmFbYys0MD4+Ml0/KCROKE9lLGMpLHc9K19bT2UrMTY+PjNdLStf''@;'; put 'put ''W09lPj4zXSxtPStfW09lKzI0Pj4zXS0rX1tPZSs4Pj4zXSxSPTA9PSgxJmFbMTE2KygwfGFbMTYrKDB8ZnIoaykpPj4yXSk+PjJdfDApLF9bKFI/MTg2NDk2OjE4NjUwNCk+PjNdPXcsX1soUj8xODY1MDQ6MTg2NDk2KT4+M109bSk6KEQ9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcihrKSk+''@;'; put 'put ''PjJdKT4+Ml18MCksX1soRD8xODY0OTY6MTg2NTA0KT4+M109K19bOTYrKFI9MHxhW2w+PjJdKT4+M10rICtfW1IrODg+PjNdLF9bKEQ/MTg2NTA0OjE4NjQ5Nik+PjNdPStfW1IrODA+PjNdLG09KygwfH5+KChtPTcyKitfW1IrNDA+PjNdKSsobT49MD8uNTotLjUpKSksdz0rKDB8fn4oKHc9''@;'; put 'put ''NzIqK19bUiszMj4+M10pKyh3Pj0wPy41Oi0uNSkpKSksMD09KGY9K19bMjMzMTJdKSYmKF9bMjMzMTJdPTEsZj0xKSwwPT0ocD0rX1syMzMxM10pJiYoX1syMzMxM109MSxwPTEpLF9bMjMzMDldPWY9dy9mLF9bMjMzMTBdPXA9bS9wLF9bMjMzMTFdPXcqPS41LF9bMjMzMTRdPS41Km0sUj0w''@;'; put 'put ''fHZyKCgwfGFbNCsoMHxhWzQ3MjkzXSk+PjJdKS0xfDAsMHxhWzQ3Mjk1XSksYVs0NzI5Nl09KDB8Uik+MD9SOjAsYVs0NzI5Ml09ayksX1tCZT4+M109bT0rX1tCZT4+M10qZixfWyhSPUJlKzh8MCk+PjNdPWY9K19bUj4+M10qcCwrZW8oK20pPnd8fChwPStlbygrZikpPihHPStfWzIzMzE0''@;'; put 'put ''XSkpbD0wO2Vsc2V7aWYoKDB8KFI9MHxhWzQ3Mjk1XSkpPDMpe2w9K2hTKG0vdyxmL0cpPDE7YnJlYWt9aWYobD0oMSsoYz0oMHxhWzQ3Mjk3XSklKDB8Uil8MCl8MCklKDB8Uil8MCxhW0s+PjJdPWFbKEQ9KGs9MHxhWzQ3Mjk0XSkrKChNPTB8YVs0NzI5Nl0pK2M8PDQpfDApPj4yXSxhW0sr''@;'; put 'put ''ND4+Ml09YVtEKzQ+PjJdLGFbSys4Pj4yXT1hW0QrOD4+Ml0sYVtLKzEyPj4yXT1hW0QrMTI+PjJdLGFbcGU+PjJdPWFbKEQ9aysoTStsPDw0KXwwKT4+Ml0sYVtwZSs0Pj4yXT1hW0QrND4+Ml0sYVtwZSs4Pj4yXT1hW0QrOD4+Ml0sYVtwZSsxMj4+Ml09YVtEKzEyPj4yXSxhW21lPj4yXT1h''@;'; put 'put ''W0JlPj4yXSxhW21lKzQ+PjJdPWFbQmUrND4+Ml0sYVttZSs4Pj4yXT1hW0JlKzg+PjJdLGFbbWUrMTI+PjJdPWFbQmUrMTI+PjJdLGFbTGU+PjJdPWFbNDY2MzBdLGFbTGUrND4+Ml09YVs0NjYzMV0sYVtMZSs4Pj4yXT1hWzQ2NjMyXSxhW0xlKzEyPj4yXT1hWzQ2NjMzXSxhW2JlPj4yXT1h''@;'; put 'put ''W0s+PjJdLGFbYmUrND4+Ml09YVtLKzQ+PjJdLGFbYmUrOD4+Ml09YVtLKzg+PjJdLGFbYmUrMTI+PjJdPWFbSysxMj4+Ml0sYVtPZT4+Ml09YVtEPj4yXSxhW09lKzQ+PjJdPWFbRCs0Pj4yXSxhW09lKzg+PjJdPWFbRCs4Pj4yXSxhW09lKzEyPj4yXT1hW0QrMTI+PjJdLDB8SHkobWUsTGUs''@;'; put 'put ''YmUsT2UpKXtpZihhW21lPj4yXT1hW0JlPj4yXSxhW21lKzQ+PjJdPWFbQmUrND4+Ml0sYVttZSs4Pj4yXT1hW0JlKzg+PjJdLGFbbWUrMTI+PjJdPWFbQmUrMTI+PjJdLGFbTGU+PjJdPWFbSz4+Ml0sYVtMZSs0Pj4yXT1hW0srND4+Ml0sYVtMZSs4Pj4yXT1hW0srOD4+Ml0sYVtMZSsxMj4+''@;'; put 'put ''Ml09YVtLKzEyPj4yXSxhW2JlPj4yXT1hW3BlPj4yXSxhW2JlKzQ+PjJdPWFbcGUrND4+Ml0sYVtiZSs4Pj4yXT1hW3BlKzg+PjJdLGFbYmUrMTI+PjJdPWFbcGUrMTI+PjJdLGFbT2U+PjJdPWFbNDY2MzBdLGFbT2UrND4+Ml09YVs0NjYzMV0sYVtPZSs4Pj4yXT1hWzQ2NjMyXSxhW09lKzEy''@;'; put 'put ''Pj4yXT1hWzQ2NjMzXSwoRD0wIT0oMHxIeShtZSxMZSxiZSxPZSkpKSYmKGFbbWU+PjJdPWFbQmU+PjJdLGFbbWUrND4+Ml09YVtCZSs0Pj4yXSxhW21lKzg+PjJdPWFbQmUrOD4+Ml0sYVttZSsxMj4+Ml09YVtCZSsxMj4+Ml0sYVtMZT4+Ml09YVtwZT4+Ml0sYVtMZSs0Pj4yXT1hW3BlKzQ+''@;'; put 'put ''PjJdLGFbTGUrOD4+Ml09YVtwZSs4Pj4yXSxhW0xlKzEyPj4yXT1hW3BlKzEyPj4yXSxhW2JlPj4yXT1hWzQ2NjMwXSxhW2JlKzQ+PjJdPWFbNDY2MzFdLGFbYmUrOD4+Ml09YVs0NjYzMl0sYVtiZSsxMj4+Ml09YVs0NjYzM10sYVtPZT4+Ml09YVtLPj4yXSxhW09lKzQ+PjJdPWFbSys0Pj4y''@;'; put 'put ''XSxhW09lKzg+PjJdPWFbSys4Pj4yXSxhW09lKzEyPj4yXT1hW0srMTI+PjJdLDAhPSgwfEh5KG1lLExlLGJlLE9lKSkpKXtsPTE7YnJlYWt9Zm9yKGI9YyxjPTE7Oyl7aWYoKDB8Yyk+PSgwfFIpKXtjPTMxO2JyZWFrfWlmKEQ/KEE9bCxsPShsKzF8MCklKDB8Uil8MCk6KEE9KGIrLTErUnww''@;'; put 'put ''KSUoMHxSKXwwLGw9YiksSz1rKyhNK0E8PDQpfDAscGU9aysoTStsPDw0KXwwLGFbbWU+PjJdPWFbQmU+PjJdLGFbbWUrND4+Ml09YVtCZSs0Pj4yXSxhW21lKzg+PjJdPWFbQmUrOD4+Ml0sYVttZSsxMj4+Ml09YVtCZSsxMj4+Ml0sYVtMZT4+Ml09YVs0NjYzMF0sYVtMZSs0Pj4yXT1hWzQ2''@;'; put 'put ''NjMxXSxhW0xlKzg+PjJdPWFbNDY2MzJdLGFbTGUrMTI+PjJdPWFbNDY2MzNdLGFbYmU+PjJdPWFbSz4+Ml0sYVtiZSs0Pj4yXT1hW0srND4+Ml0sYVtiZSs4Pj4yXT1hW0srOD4+Ml0sYVtiZSsxMj4+Ml09YVtLKzEyPj4yXSxhW09lPj4yXT1hW3BlPj4yXSxhW09lKzQ+PjJdPWFbcGUrND4+''@;'; put 'put ''Ml0sYVtPZSs4Pj4yXT1hW3BlKzg+PjJdLGFbT2UrMTI+PjJdPWFbcGUrMTI+PjJdLCEoMHxIeShtZSxMZSxiZSxPZSkpKXtjPTMwO2JyZWFrfWI9QSxjPWMrMXwwfWlmKDMwPT0oMHxjKSl7YVs0NzI5N109QSxsPTA7YnJlYWt9aWYoMzE9PSgwfGMpKXthWzQ3Mjk3XT1iLGw9MTticmVha319''@;'; put 'put ''ZWxzZSBsPTB9fWVsc2UgYVs0NzI5Ml09MCxsPTB9d2hpbGUoMCk7cmV0dXJuIG9lPUhlLDEmbHwwfWZ1bmN0aW9uIFZRKGwsYyl7Y3w9MDt2YXIgbSxiLGY9MCxwPTAsQT0wLHc9MCxrPTA7cmV0dXJuIGI9b2Usb2U9b2UrMzJ8MCxtPWIrMTZ8MCx3PWIsKGx8PTApPyhrPTkwKigzJmFbMTE2''@;'; put 'put ''KygwfGFbMTYrKDB8ZnIobD0wfGFbbD4+Ml0pKT4+Ml0pPj4yXSl8MCxhW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxONSh3LG0sayksQT0rX1t3Pj4zXSxwPStfW3crOD4+M10sKDB8bCk9PSgwfGFb''@;'; put 'put ''NDczMDBdKT9mPStfWzIzMzE3XTooX1syMzMxN109Zj0rX1soMHxhWzQ0Kyh3PTB8YVsxMisoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSkrKCgxfCgoMHwoaz0oYVt3KzQ+PjJdPDwxKS0yfDApKT4wP2s6MCkpPDw0KT4+M10sYVs0NzMwMF09bCksbD0rZW8oK0EpPmZ8K2VvKCtwKT5mPzA6K2hT''@;'; put 'put ''KEEscCk8PWYmMSk6KGFbNDczMDBdPTAsbD0wKSxvZT1iLDB8bH1mdW5jdGlvbiB5RChsLGMsZixwKXt2YXIgbSxBO2x8PTAsbT1vZSxvZT1vZSs0OHwwLEE9bSxmPTB8ZnVuY3Rpb24gcWFlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIGplLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAs''@;'; put 'put ''Uj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxldD0wLHJ0PTAsR2U9MDtqZT1vZSxvZT1vZSszMnwwLEhlPWplLG09amUrMjR8MCxiPWplKzE2fDAsQmU9MyZhWzExNisoMHxhWzE2KygwfGFbNjArKDB8ZnIobHw9MCkpPj4yXSk+PjJdKT4+Ml0sYVtIZT4+''@;'; put 'put ''Ml09YVsoTGU9MTYrKDB8YVsocD1sKzE2fDApPj4yXSl8MCk+PjJdLGFbSGUrND4+Ml09YVtMZSs0Pj4yXSxhW0hlKzg+PjJdPWFbTGUrOD4+Ml0sYVtIZSsxMj4+Ml09YVtMZSsxMj4+Ml0salEobSxIZSxCZSksYVtIZT4+Ml09YVsoTGU9MTYrKDB8YVtjKzE2Pj4yXSl8MCk+PjJdLGFbSGUr''@;'; put 'put ''ND4+Ml09YVtMZSs0Pj4yXSxhW0hlKzg+PjJdPWFbTGUrOD4+Ml0sYVtIZSsxMj4+Ml09YVtMZSsxMj4+Ml0salEoYixIZSxCZSksSGU9MjU1JihCZT0wfHVlW2YrMzM+PjBdKTtlOmRve3N3aXRjaChCZTw8MjQ+PjI0KXtjYXNlIDA6Y2FzZSAxNTpjPTA7YnJlYWs7ZGVmYXVsdDpmb3IoKGM9''@;'; put 'put ''MHxhW2YrMjQ+PjJdKT8oTT0rX1tjPj4zXSxBPStfW2MrMTY+PjNdLGs9K19bYysyND4+M10sdz0rX1tjKzg+PjNdKTooQmU9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcihsKSk+PjJdKT4+Ml18MCksZXQ9LShydD0uNSorX1s4MCsoTGU9MHxhW3A+PjJdKT4+M10pLHc9LShrPStfW0xlKzg4''@;'; put 'put ''Pj4zXSksTT1CZT93OmV0LEE9QmU/azpydCxrPUJlP3J0Omssdz1CZT9ldDp3KSxCZT0wfGFbbT4+Ml0sT2U9MHxhW20rND4+Ml0sTGU9MHxhW2I+PjJdLHBlPTB8YVtiKzQ+PjJdLG1lPX5+dyxiZT1+figuNSooQStNKSksSz1+fkEsRz1+figuNSooayt3KSksUj1+fmssRD1+fk0sbT0wLGI9''@;'; put 'put ''MCxjPTAsZj0wLGw9MDs7KXtpZig0PT0oMHxiKSlicmVhayBlO2lmKDE8PGImSGUpe3N3aXRjaCgwfGIpe2Nhc2UgMDpmPWJlLGw9bWU7YnJlYWs7Y2FzZSAxOmY9SyxsPUc7YnJlYWs7Y2FzZSAyOmY9YmUsbD1SO2JyZWFrO2Nhc2UgMzpmPUQsbD1HfXA9KGY9QmUrZnwwKS1MZXwwLDA9PSgw''@;'; put 'put ''fGMpfCgwfChwPSgwfHZyKEdlPShsPU9lK2x8MCktcGV8MCxHZSkpKygwfHZyKHAscCkpfDApKTwoMHxtKT9jPTB8YVsyMjAyOCsoYjw8Mik+PjJdOnA9bX1lbHNlIHA9bTttPXAsYj1iKzF8MH19fXdoaWxlKDApO3JldHVybiBvZT1qZSwwfGN9KGN8PTAsZnw9MCxwfD0wKSxhW0ErMzY+PjJd''@;'; put 'put ''PWFbcCszNj4+Ml0seWsoYywwfGFbcCsyND4+Ml0sQSxmLDB8YnRbcCszMz4+MF0sMCksYz1BLGY9bCs0MHwwO2Rve2FbbD4+Ml09YVtjPj4yXSxsPWwrNHwwLGM9Yys0fDB9d2hpbGUoKDB8bCk8KDB8ZikpO29lPW19ZnVuY3Rpb24galEobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wLG09MDtz''@;'; put 'put ''d2l0Y2goMHwoZnw9MCkpe2Nhc2UgMDptPStfW2M+PjNdLHA9K19bYys4Pj4zXTticmVhaztjYXNlIDI6bT0rX1tjPj4zXSxwPS0rX1tjKzg+PjNdO2JyZWFrO2Nhc2UgMTptPS0rX1tjKzg+PjNdLHA9K19bYz4+M107YnJlYWs7Y2FzZSAzOm09K19bYys4Pj4zXSxwPStfW2M+PjNdO2JyZWFr''@;'; put 'put ''O2RlZmF1bHQ6bT0wLHA9MH1hW2w+PjJdPX5+KG0rKG0+PTA/LjU6LS41KSksYVtsKzQ+PjJdPX5+KHArKHA+PTA/LjU6LS41KSl9ZnVuY3Rpb24gZWxlKGwpe3ZhciBtLEEsdyxjPTAsZj0wLHA9MDtpZih3PW9lLG9lPW9lKzgwfDAscD13KzQwfDAsQT13LGM9MTYrKGY9MHxhWyhtPTE2Kyhs''@;'; put 'put ''fD0wKXwwKT4+Ml0pfDAsMHx1ZVtmKzQ3Pj4wXSl7eUQocCwwfGFbKDM9PSgwfChmPTMmYVtsPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0sMHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSxjKSxmPXAscD1jKzQwfDA7ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGls''@;'; put 'put ''ZSgoMHxjKTwoMHxwKSk7Zj0wfGFbbT4+Ml19aWYoYz1mKzU2fDAsMHx1ZVtmKzg3Pj4wXSl7eUQoQSwwfGFbKDI9PSgwfChmPTMmYVtsPj4yXSkpP2w6bCstNDh8MCkrNDA+PjJdLDB8YVsoMz09KDB8Zik/bDpsKzQ4fDApKzQwPj4yXSxjKSxmPUEscD1jKzQwfDA7ZG97YVtjPj4yXT1hW2Y+''@;'; put 'put ''PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSl9b2U9d31mdW5jdGlvbiB3RChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgSyxtZSxiZSxPZSxMZSxCZSxldCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxwZT0wLEhlPTAsamU9MCxydD0wO2Zvcihl''@;'; put 'put ''dD1vZSxvZT1vZSsxOTJ8MCxtZT1ldCsxNzZ8MCxIZT1ldCsxMTJ8MCxqZT1ldCs0OHwwLGJlPWV0KzMyfDAsT2U9ZXQrMjR8MCxMZT1ldCsxNnwwLEJlPWV0LChwfD0wKTw8MjQ+PjI0PyhhW2JlPj4yXT1hW2Y+PjJdLGFbYmUrND4+Ml09YVtmKzQ+PjJdLGFbYmUrOD4+Ml09YVtmKzg+PjJd''@;'; put 'put ''LGFbYmUrMTI+PjJdPWFbZisxMj4+Ml0saz1MZSxNPU9lLEQ9MCxSPUhlKTooYVtiZT4+Ml09YVsoaz1mKzQ4fDApPj4yXSxhW2JlKzQ+PjJdPWFbays0Pj4yXSxhW2JlKzg+PjJdPWFbays4Pj4yXSxhW2JlKzEyPj4yXT1hW2srMTI+PjJdLGs9T2UsTT1MZSxEPUhlLFI9MCksX1tPZT4+M109''@;'; put 'put ''MCxfW0xlPj4zXT0xLEs9YmUrOHwwLG09MCxBPTEsYj0wLEc9K19bYmU+PjNdOzspe3BlPStfW0s+PjNdLHd1KEJlLGYsMyxtPS41KihtK0EpLEQsUiksYVtiZT4+Ml09YVtCZT4+Ml0sYVtiZSs0Pj4yXT1hW0JlKzQ+PjJdLGFbYmUrOD4+Ml09YVtCZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW0Jl''@;'; put 'put ''KzEyPj4yXSxhW21lPj4yXT1hW0JlPj4yXSxhW21lKzQ+PjJdPWFbQmUrND4+Ml0sYVttZSs4Pj4yXT1hW0JlKzg+PjJdLGFbbWUrMTI+PjJdPWFbQmUrMTI+PjJdO2U6ZG97aWYoKDB8UmlbMTI3JmNdKGwsbWUpKTw8MjQ+PjI0KXA9TTtlbHNlIGZvcihwPTA7Oyl7aWYoND09KDB8cCkpe3A9''@;'; put 'put ''ayxiPTE7YnJlYWsgZX1hWyhiPWplKyhwPDw0KXwwKT4+Ml09YVsocnQ9SGUrKHA8PDQpfDApPj4yXSxhW2IrND4+Ml09YVtydCs0Pj4yXSxhW2IrOD4+Ml09YVtydCs4Pj4yXSxhW2IrMTI+PjJdPWFbcnQrMTI+PjJdLHA9cCsxfDB9fXdoaWxlKDApO2lmKF9bcD4+M109bSwhKCgoRy09dz0r''@;'; put 'put ''X1tiZT4+M10pPj0wP0c6LUcpPi41fHwocGUtPStfW0s+PjNdLChwZT49MD9wZTotcGUpPi41KSkpYnJlYWs7bT0rX1tPZT4+M10sQT0rX1tMZT4+M10sRz13fWU6ZG97aWYoYjw8MjQ+PjI0KWZvcihwPTA7Oyl7aWYoND09KDB8cCkpYnJlYWsgZTthWyhydD1mKyhwPDw0KXwwKT4+Ml09YVso''@;'; put 'put ''SGU9amUrKHA8PDQpfDApPj4yXSxhW3J0KzQ+PjJdPWFbSGUrND4+Ml0sYVtydCs4Pj4yXT1hW0hlKzg+PjJdLGFbcnQrMTI+PjJdPWFbSGUrMTI+PjJdLHA9cCsxfDB9ZWxzZSBmb3IocD0wOzspe2lmKDQ9PSgwfHApKWJyZWFrIGU7YVsocnQ9ZisocDw8NCl8MCk+PjJdPWFbKGplPUhlKyhw''@;'; put 'put ''PDw0KXwwKT4+Ml0sYVtydCs0Pj4yXT1hW2plKzQ+PjJdLGFbcnQrOD4+Ml09YVtqZSs4Pj4yXSxhW3J0KzEyPj4yXT1hW2plKzEyPj4yXSxwPXArMXwwfX13aGlsZSgwKTtvZT1ldH1mdW5jdGlvbiBITihsLGMsZixwKXt2YXIgbSxBLHcsYixrLE0sRDtmb3IobHw9MCxmfD0wLHB8PTAsRD1v''@;'; put 'put ''ZSxvZT1vZSs2NHwwLE09RCxrPStfWzk2KyhBPTB8YVsoYj0xNisoY3w9MCl8MCk+PjJdKT4+M10sdz1BKzE2fDAsbT1BKzI0fDAsYz0wOzQhPSgwfGMpOylfW00rKGM8PDQpPj4zXT0rX1tmKyhjPDw0KT4+M10tK19bdz4+M10sX1tNKyhjPDw0KSs4Pj4zXT0rX1tmKyhjPDw0KSs4Pj4zXS0r''@;'; put 'put ''X1ttPj4zXSxjPWMrMXwwO2Zvcih3RChsLDB8YVsxMisoMHxhWzQrKDB8YVtBKzg+PjJdKT4+Ml0pPj4yXSxNLHApLGM9MDs0IT0oMHxjKTspX1tmKyhjPDw0KT4+M109K19bMTYrKHA9MHxhW2I+PjJdKT4+M10rICtfW00rKGM8PDQpPj4zXSxfW2YrKGM8PDQpKzg+PjNdPStfW3ArMjQ+PjNd''@;'; put 'put ''KyArX1tNKyhjPDw0KSs4Pj4zXSxjPWMrMXwwO19bOTYrKDB8YVtiPj4yXSk+PjNdPWssb2U9RH1mdW5jdGlvbiBOTihsLGMpe2x8PTAsY3w9MDtmb3IodmFyIGY9MCxwPTA7MHx1ZVsxMTIrKGw9MHxhWyhwPWwrMTZ8MCk+PjJdKT4+MF07KWw9MHxhW2wrMTE2Pj4yXTsobD0wfGFbbCs4Pj4y''@;'; put 'put ''XSl8fChsPTB8bXIoNDApLGFbOCsoMHxhW3A+PjJdKT4+Ml09bCksbD0oZj0wfGFbbD4+Ml0pPzB8bDAoZiw0OCsoNDgqKDB8YVtsKzQ+PjJdKXwwKXwwKTowfFFuKDQ4Kyg0OCooMHxhW2wrND4+Ml0pfDApfDApLGFbKHA9MHxhWzgrKDB8YVtwPj4yXSk+PjJdKT4+Ml09bCxhWyhwPXArNHww''@;'; put 'put ''KT4+Ml09MSsoZj0wfGFbcD4+Ml0pLGFbKHA9bCsoNDgqZnwwKXwwKT4+Ml09MHxtcihjPDw0KSxhW2wrKDQ4KmZ8MCkrND4+Ml09YyxmPTQwKyhsPWwrKDQ4KmZ8MCkrOHwwKXwwO2Rve2FbbD4+Ml09MCxsPWwrNHwwfXdoaWxlKCgwfGwpPCgwfGYpKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIEF1''@;'; put 'put ''KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgbWUsTGUsamUsZXQsR2UsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxiZT0wLE9lPTAsQmU9MCxIZT0wLGx0PTAsTXQ9MDtmb3IoR2U9b2Usb2U9b2UrOTZ8MCxqZT1HZSsxNnwwLG1lPUdlLExlPUdl''@;'; put 'put ''KzkyfDAsQmU9R2UrODh8MCxiZT1HZSs4MHwwLEhlPTB8ZnIoYj0wfGFbKDM9PSgzJmFbKGx8PTApPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSxldD0wfE5OKGwscCksaz1sOzB8dWVbMTEyKyhNPTB8YVtrKzE2Pj4yXSk+PjBdOylrPTB8YVtNKzExNj4+Ml07aWYoMD09KDB8dWVbbSs4Pj4w''@;'; put 'put ''XSkmJigwfGFbMjMyKyhBPTB8YVtiKzE2Pj4yXSk+PjJdKT09KDB8YVsyMzIrKHc9MHxhW2MrMTY+PjJdKT4+Ml0pPyhPZT0oRD0oMHxhW0ErMjM2Pj4yXSk+KDB8YVt3KzIzNj4+Ml0pKT9iOmMsYj1EP2M6Yik6T2U9YywoMHxiKT09KDB8YVsoMz09KDMmYVtrPj4yXXwwKT9rOmsrNDh8MCkr''@;'; put 'put ''NDA+PjJdKT8oQT1NKzgwfDAsdz1NKzQwfDAsRD0wfGJ0W00rODY+PjBdLGM9MHxidFtNKzQ2Pj4wXSk6KEE9TSs0MHwwLHc9TSs4MHwwLEQ9MHxidFtNKzQ2Pj4wXSxjPTB8YnRbTSs4Nj4+MF0pLE09MHxhW0E+PjJdLEE9MHxhW3c+PjJdLDAhPSgwfGMpJiYwIT0oMHwoUj0wfGFbOCsoMHxh''@;'; put 'put ''WyhHPWIrMTZ8MCk+PjJdKT4+Ml0pKSYmMCE9KDB8YVsxMisoMHxhW1IrND4+Ml0pPj4yXSkpe2ZvcihhW2JlPj4yXT1iLGFbYmUrND4+Ml09QSxBPXArLTR8MCxjPW1lKzh8MCx3PTA7ISgoMHx3KT49KDB8QSkpJiYoX1ttZT4+M109K19bZisoKGs9dyszfDApPDw0KT4+M10tK19bMTYrKFI9''@;'; put 'put ''MHxhW0c+PjJdKT4+M10sX1tjPj4zXT0rX1tmKyhrPDw0KSs4Pj4zXS0rX1tSKzI0Pj4zXSxSPTB8YVsxMisoMHxhWzQrKDB8YVtSKzg+PjJdKT4+Ml0pPj4yXSxhW2plPj4yXT1hW21lPj4yXSxhW2plKzQ+PjJdPWFbbWUrND4+Ml0sYVtqZSs4Pj4yXT1hW21lKzg+PjJdLGFbamUrMTI+PjJd''@;'; put 'put ''PWFbbWUrMTI+PjJdLCgwfFJpWzEyNyZSXShiZSxqZSkpPDwyND4+MjQpOyl3PWs7YVtMZT4+Ml09dyxITihiZSxiLGYrKHc8PDQpfDAsMSl9ZWxzZSBhW0xlPj4yXT0wLHc9MDtpZigwIT0oMHxEKSYmMCE9KDB8KEs9MHxhWzgrKDB8YVsocGU9T2UrMTZ8MCk+PjJdKT4+Ml0pKSYmMCE9KDB8''@;'; put 'put ''YVsxMisoMHxhW0srND4+Ml0pPj4yXSkpe2ZvcihhW2JlPj4yXT1PZSxhW2JlKzQ+PjJdPU0sYz1tZSs4fDAsQT1iPXArLTR8MDshKCgwfEEpPD0wKSYmKF9bbWU+PjNdPStfW2YrKEE8PDQpPj4zXS0rX1sxNisocD0wfGFbcGU+PjJdKT4+M10sX1tjPj4zXT0rX1tmKyhBPDw0KSs4Pj4zXS0r''@;'; put 'put ''X1twKzI0Pj4zXSxwPTB8YVsxMisoMHxhWzQrKDB8YVtwKzg+PjJdKT4+Ml0pPj4yXSxhW2plPj4yXT1hW21lPj4yXSxhW2plKzQ+PjJdPWFbbWUrND4+Ml0sYVtqZSs4Pj4yXT1hW21lKzg+PjJdLGFbamUrMTI+PjJdPWFbbWUrMTI+PjJdLCgwfFJpWzEyNyZwXShiZSxqZSkpPDwyND4+MjQp''@;'; put 'put ''OylBPUErLTN8MDthW0JlPj4yXT1BLEhOKGJlLE9lLGYrKEE8PDQpfDAsMCl9ZWxzZSBhW0JlPj4yXT1iPXArLTR8MCxBPWI7Zm9yKDshKCgwfHcpPj0oMHxiKSkmJihNdD0rX1tmKyh3PDw0KSs4Pj4zXS0rX1tmKygoYz13KzN8MCk8PDQpKzg+PjNdKSpNdCsobHQ9K19bZisodzw8NCk+PjNd''@;'; put 'put ''LStfW2YrKGM8PDQpPj4zXSkqbHQ8MWUtNjspdz1jO2ZvcihhW0xlPj4yXT13OyEoKDB8QSk8PTApJiYobHQ9K19bZisoQTw8NCkrOD4+M10tK19bZisoKGJlPUErM3wwKTw8NCkrOD4+M10pKmx0KyhNdD0rX1tmKyhBPDw0KT4+M10tK19bZisoYmU8PDQpPj4zXSkqTXQ8MWUtNjspQT1BKy0z''@;'; put 'put ''fDA7Zm9yKGFbQmU+PjJdPUEsZnVuY3Rpb24gcmxlKGwsYyxmLHAsbSxBLHcpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wO3ZhciBNLEQsRyxiPTAsaz0wLFI9MDtmb3IoRz1vZSxvZT1vZSsxNnwwLE09Rys0fDAsRD1HLFI9bHw9MDtiPTB8YVsxMTYrKDB8YVtSKzE2Pj4yXSk+PjJd''@;'; put 'put ''OylSPWI7Yj0wfHVlW3crOD4+MF0/MDoyNTUmKDB8cGFbNjMmYVt3Pj4yXV0oUikpLE1DKFIsTSxEKSwoMHxwYVs2MyZhWyhrPXcrNHwwKT4+Ml1dKGMpKTw8MjQ+PjI0JiYoYVtEPj4yXT0wKSwoMHxwYVs2MyZhW2s+PjJdXSgwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4y''@;'; put 'put ''XSkpPDwyND4+MjQmJihhW00+PjJdPTApLDB8YiYmKGM9MHxhW00+PjJdLGFbTT4+Ml09YVtEPj4yXSxhW0Q+PjJdPWMpLDB8dWVbdys5Pj4wXT8oYj0wfGFbTT4+Ml0pfChrPTB8YVtEPj4yXSl8MCYmZnVuY3Rpb24gUnJlKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxtfD0wO3ZhciBiPTAs''@;'; put 'put ''az0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MDsoMHwocHw9MCkpPT0oMHwoZnw9MCkpJihMZT0wIT0oMHwoQXw9MCkpKSYoTT0wIT0oMHwod3w9MCkpKT8oYmU9K19bKG1lPWMrKHA8PDQpfDApPj4zXSxPZT0rX1tjKyhwPDw0KSs4Pj4z''@;'; put 'put ''XSxrPStfWyhMZT1jKygoTT1wKzN8MCk8PDQpfDApPj4zXSxiPStfWyhNPWMrKE08PDQpKzh8MCk+PjNdLEQ9K2pkKGwsQSksSGU9ISgocGU9K2pkKGwsdykpK0Q+PShSPStGMCgrKChLPU9lLWIpKksrKFI9YmUtaykqUikpKSksUio9LjMzMzMzMzMzMzMzMzMzMzMsRD1IZT9EOlIsUj1IZT9w''@;'; put 'put ''ZTpSLE9lPT1iPyhLPSgoSGU9YmU8ayk/LVI6UikrayxwZT0oSGU/RDotRCkrYmUsRz1PZSxEPU9lKTooSz1iZSxwZT1iZSxHPSgoSGU9T2U8Yik/RDotRCkrT2UsRD0oSGU/LVI6UikrYiksX1soQmU9YysoKEhlPXArMXwwKTw8NCl8MCk+PjNdPXBlLF9bYysoSGU8PDQpKzg+PjNdPUcsYVtt''@;'; put 'put ''ZT4+Ml09YVtCZT4+Ml0sYVttZSs0Pj4yXT1hW0JlKzQ+PjJdLGFbbWUrOD4+Ml09YVtCZSs4Pj4yXSxhW21lKzEyPj4yXT1hW0JlKzEyPj4yXSxCZT1jKyhwKzI8PDQpfDAsX1tMZT4+M109SyxfW00+PjNdPUQsYVtCZT4+Ml09YVtMZT4+Ml0sYVtCZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbQmUr''@;'; put 'put ''OD4+Ml09YVtMZSs4Pj4yXSxhW0JlKzEyPj4yXT1hW0xlKzEyPj4yXSxhW20rMTI+PjJdPXcsX1ttKzMyPj4zXT1iZSxfW20rNDA+PjNdPU9lLEJlPTE2KTooTSYmKG1lPWMrKChNPXArM3wwKTw8NCl8MCxiPShiPStqZChsLHcpKT49KE9lPS45KitGMCgrKChiZT0oSz0rX1tjKyhwPDw0KSs4''@;'; put 'put ''Pj4zXSktKEc9K19bKE09YysoTTw8NCkrOHwwKT4+M10pKSpiZSsoT2U9KGs9K19bYysocDw8NCk+PjNdKS0oUj0rX1ttZT4+M10pKSpPZSkpKT9PZTpiLEs9PUc/KEQ9KGs8Uj8tYjpiKStSLGI9Syk6KEQ9ayxiPShLPEc/LWI6YikrRyksX1tjKygoSGU9cCsxfDApPDw0KT4+M109ayxfW2Mr''@;'; put 'put ''KEhlPDw0KSs4Pj4zXT1LLHA9YysocCsyPDw0KXwwLF9bbWU+PjNdPUQsX1tNPj4zXT1iLGFbcD4+Ml09YVttZT4+Ml0sYVtwKzQ+PjJdPWFbbWUrND4+Ml0sYVtwKzg+PjJdPWFbbWUrOD4+Ml0sYVtwKzEyPj4yXT1hW21lKzEyPj4yXSxhW20rMTI+PjJdPXcsX1ttKzMyPj4zXT1SLF9bbSs0''@;'; put 'put ''MD4+M109RyksTGUmJihEPShEPStqZChsLEEpKT49KE9lPS45KitGMCgrKChiZT0oYj0rX1tjKyhmPDw0KSs4Pj4zXSktKEs9K19bYysoKEhlPWYrM3wwKTw8NCkrOD4+M10pKSpiZSsoT2U9KGs9K19bKE09YysoZjw8NCl8MCk+PjNdKS0oRz0rX1tjKyhIZTw8NCk+PjNdKSkqT2UpKSk/T2U6''@;'; put 'put ''RCxiPT1LPyhSPShrPEc/RDotRCkrayxEPWIpOihSPWssRD0oYjxLP0Q6LUQpK2IpLF9bKEJlPWMrKChIZT1mKzF8MCk8PDQpfDApPj4zXT1SLF9bYysoSGU8PDQpKzg+PjNdPUQsYVtNPj4yXT1hW0JlPj4yXSxhW00rND4+Ml09YVtCZSs0Pj4yXSxhW00rOD4+Ml09YVtCZSs4Pj4yXSxhW00r''@;'; put 'put ''MTI+PjJdPWFbQmUrMTI+PjJdLF9bYysoKEJlPWYrMnwwKTw8NCk+PjNdPUcsX1tjKyhCZTw8NCkrOD4+M109SyxCZT0xNikpLDE2PT0oMHxCZSkmJihhW20rOD4+Ml09QSxfW20rMTY+PjNdPWssX1ttKzI0Pj4zXT1iKX0oUixmLDB8YVtwPj4yXSwwfGFbbT4+Ml0sQSxiLGspOigwfChiPTB8''@;'; put 'put ''YVtNPj4yXSkmJihhW3A+PjJdPTB8TTEoUixmLDB8YVtwPj4yXSwwfGFbbT4+Ml0sQSxiKSksMHwoYj0wfGFbRD4+Ml0pJiYoYVttPj4yXT0wfHpoKFIsZiwwfGFbcD4+Ml0sMHxhW20+PjJdLEEsYikpKSxvZT1HfShsLE9lLGYsTGUsQmUsZXQsbSksYj00KyhrPTB8YVtCZT4+Ml0pfDAsaz1r''@;'; put 'put ''KzN8MCxNPWplKzE2fDAsRD1qZSszMnwwLFI9amUrNDh8MCx3PUhlKzE2fDAsQT1HPTB8YVtMZT4+Ml07ISgoMHxBKT49KDB8YikpJiYoYVsoSGU9KDB8YVtldD4+Ml0pKyhBLUc8PDQpfDApPj4yXT1hWyhjPWYrKEE8PDQpfDApPj4yXSxhW0hlKzQ+PjJdPWFbYys0Pj4yXSxhW0hlKzg+PjJd''@;'; put 'put ''PWFbYys4Pj4yXSxhW0hlKzEyPj4yXT1hW2MrMTI+PjJdLGFbamU+PjJdPWFbYz4+Ml0sYVtqZSs0Pj4yXT1hW2MrND4+Ml0sYVtqZSs4Pj4yXT1hW2MrOD4+Ml0sYVtqZSsxMj4+Ml09YVtjKzEyPj4yXSxjPUErMXwwLCEoKDB8QSk+PSgwfGspKSk7KWFbKEJlPSgwfGFbZXQ+PjJdKSsoYy1H''@;'; put 'put ''PDw0KXwwKT4+Ml09YVsoSGU9ZisoYzw8NCl8MCk+PjJdLGFbQmUrND4+Ml09YVtIZSs0Pj4yXSxhW0JlKzg+PjJdPWFbSGUrOD4+Ml0sYVtCZSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtNPj4yXT1hW0hlPj4yXSxhW00rND4+Ml09YVtIZSs0Pj4yXSxhW00rOD4+Ml09YVtIZSs4Pj4yXSxhW00r''@;'; put 'put ''MTI+PjJdPWFbSGUrMTI+PjJdLGFbKEJlPSgwfGFbZXQ+PjJdKSsoKEhlPUErMnwwKS1HPDw0KXwwKT4+Ml09YVsoSGU9ZisoSGU8PDQpfDApPj4yXSxhW0JlKzQ+PjJdPWFbSGUrND4+Ml0sYVtCZSs4Pj4yXT1hW0hlKzg+PjJdLGFbQmUrMTI+PjJdPWFbSGUrMTI+PjJdLGFbRD4+Ml09YVtI''@;'; put 'put ''ZT4+Ml0sYVtEKzQ+PjJdPWFbSGUrND4+Ml0sYVtEKzg+PjJdPWFbSGUrOD4+Ml0sYVtEKzEyPj4yXT1hW0hlKzEyPj4yXSxhW1I+PjJdPWFbKEJlPWYrKChIZT1BKzN8MCk8PDQpfDApPj4yXSxhW1IrND4+Ml09YVtCZSs0Pj4yXSxhW1IrOD4+Ml09YVtCZSs4Pj4yXSxhW1IrMTI+PjJdPWFb''@;'; put 'put ''QmUrMTI+PjJdLGVJKDE2KygwfGFbdz4+Ml0pfDAsamUpLEE9SGU7YVtldCs0Pj4yXT1iLUcsb2U9R2V9ZnVuY3Rpb24gVTMobCxjKXtsfD0wO3ZhciBmPTAscD0wOytfWyhjfD0wKT4+M108K19bYysxNj4+M10mJitfW2MrOD4+M108K19bYysyND4+M10mJihmPTB8YVtsKzg0Pj4yXSxhWyhw''@;'; put 'put ''PWwrODB8MCk+PjJdPTErKGw9MHxhW3A+PjJdKSxhWyhsPWYrKGw8PDUpfDApPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml0sYVtsKzE2Pj4yXT1hW2MrMTY+PjJdLGFbbCsyMD4+Ml09YVtjKzIwPj4yXSxh''@;'; put 'put ''W2wrMjQ+PjJdPWFbYysyND4+Ml0sYVtsKzI4Pj4yXT1hW2MrMjg+PjJdKX1mdW5jdGlvbiBiRChsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEQsUixtZSxiZSxMZSxCZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEc9MCxLPTAscGU9MCxPZT0wLEhlPTAsamU9MDtpZihCZT1vZSxv''@;'; put 'put ''ZT1vZSsxMTJ8MCxiZT1CZSs3MnwwLEQ9QmUrNTZ8MCxNPUJlKzE2fDAsRz1CZSxSPTQ4KyhjfD0wKXwwLExlPTB8YVsoMz09KDB8KHc9MyZhW2M+PjJdKSk/YzpSKSs0MD4+Ml0sQT0xNisoSz0wfGFbKG1lPWMrMTZ8MCk+PjJdKXwwLDB8dWVbSys0Nz4+MF0pe3lEKE0sTGUsMHxhWygyPT0o''@;'; put 'put ''MHx3KT9jOmMrLTQ4fDApKzQwPj4yXSxBKSx3PU0sTT1BKzQwfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxNKSl9c3dpdGNoKE09KEE9MHxhWzgrKHc9MHxhWyhLPUxlKzE2fDApPj4yXSk+PjJdKT8wfGFbMTYrKDB8YVtBKzQ+PjJdKT4+Ml06''@;'; put 'put ''MCxBPXcrMTZ8MCx3PTE2KygwfGFbbWU+PjJdKXwwLGFbRD4+Ml09YVtBPj4yXSxhW0QrND4+Ml09YVtBKzQ+PjJdLGFbRCs4Pj4yXT1hW0ErOD4+Ml0sYVtEKzEyPj4yXT1hW0ErMTI+PjJdLGFbYmU+PjJdPWFbdz4+Ml0sYVtiZSs0Pj4yXT1hW3crND4+Ml0sYVtiZSs4Pj4yXT1hW3crOD4+''@;'; put 'put ''Ml0sYVtiZSsxMj4+Ml09YVt3KzEyPj4yXSxaUShHLEQsYmUpLGFbbD4+Ml09YVtHPj4yXSxhW2wrND4+Ml09YVtHKzQ+PjJdLGFbbCs4Pj4yXT1hW0crOD4+Ml0sYVtsKzEyPj4yXT1hW0crMTI+PjJdLG08PDI0Pj4yND8oYj0relEoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6UikrNDA+PjJd''@;'; put 'put ''KSxPZT05KTowfHVlWzQ1KyhBPTB8YVttZT4+Ml0pPj4wXT8oYj0rX1tBKzMyPj4zXSxPZT05KTpBPTAsOT09KDB8T2UpJiYoX1tsKzE2Pj4zXT1iLEE9MSksdWVbbCsyOT4+MF09QSxhW2wrODA+PjJdPTAsYVtsKzg4Pj4yXT1jLGFbKEc9cCszMnwwKT4+Ml09YVtsPj4yXSxhW0crND4+Ml09''@;'; put 'put ''YVtsKzQ+PjJdLGFbRys4Pj4yXT1hW2wrOD4+Ml0sYVtHKzEyPj4yXT1hW2wrMTI+PjJdLDB8Zil7Y2FzZSAxOmlmKDA9PSgwfHVlWzE1Nisodz0wfGFbSz4+Ml0pPj4wXSkmJihwZT0yNTUmKEc9MHx1ZVs0OSsoMHxhW21lPj4yXSk+PjBdKSxHPDwyND4+MjQhPTApKXthW2JlPj4yXT1hW3A+''@;'; put 'put ''PjJdLGFbYmUrND4+Ml09YVtwKzQ+PjJdLGFbYmUrOD4+Ml09YVtwKzg+PjJdLGFbYmUrMTI+PjJdPWFbcCsxMj4+Ml0sYVtiZSsxNj4+Ml09YVtwKzE2Pj4yXSxhW2JlKzIwPj4yXT1hW3ArMjA+PjJdLGFbYmUrMjQ+PjJdPWFbcCsyND4+Ml0sYVtiZSsyOD4+Ml09YVtwKzI4Pj4yXTtkb3tp''@;'; put 'put ''Zig0JnBlKXtpZihhW3ArNDg+PjJdPTQsYj0rX1tiZT4+M10sK19bbD4+M108K19bdysxNj4+M10pe2plPWIrLTEsSGU9K19bbCs4Pj4zXSxiPStfWyhsPWJlKzE2fDApPj4zXSxrPS41KitfW3crODA+PjNdKyArX1t3KzI0Pj4zXSxrKz0rKDB8KDB8YVsyNTIrKDB8YVsxNisoMHxmcihMZSkp''@;'; put 'put ''Pj4yXSk+PjJdKS8yKSxfW2w+PjNdPStfWzE2KyhBPTB8YVtLPj4yXSk+PjNdLStfW0ErODg+PjNdLF9bYmUrMjQ+PjNdPUhlLF9bYmUrOD4+M109K19bQSsyND4+M10tLjUqK19bQSs4MD4+M10sX1tiZT4+M109amUsX1twKzU2Pj4zXT1qZSxfW3ArNjQ+PjNdPUhlLF9bcCs3Mj4+M109Yixf''@;'; put 'put ''W3ArODA+PjNdPWssYVsoQT1wKzg4fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUr''@;'; put 'put ''MjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0yO2JyZWFrfWs9K19bbCs4Pj4zXSxIZT0rX1soQT1iZSsxNnwwKT4+M10rMSxqZT0uNSorX1t3KzgwPj4zXSsgK19bdysyND4+M10samUrPSsoMHwoMHxhWzI1MisoMHxhWzE2KygwfGZyKExlKSk+PjJdKT4+Ml0pLzIpLF9bYmU+PjNd''@;'; put 'put ''PStfWzk2KyhsPTB8YVtLPj4yXSk+PjNdKyArX1tsKzE2Pj4zXSxfW2JlKzI0Pj4zXT1rLF9bYmUrOD4+M109K19bbCsyND4+M10tLjUqK19bbCs4MD4+M10sX1tBPj4zXT1IZSxfW3ArNTY+PjNdPWIsX1twKzY0Pj4zXT1rLF9bcCs3Mj4+M109SGUsX1twKzgwPj4zXT1qZSxhWyhBPXArODh8''@;'; put 'put ''MCk+PjJdPWFbYmU+PjJdLGFbQSs0Pj4yXT1hW2JlKzQ+PjJdLGFbQSs4Pj4yXT1hW2JlKzg+PjJdLGFbQSsxMj4+Ml09YVtiZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbYmUrMjA+PjJdLGFbQSsyND4+Ml09YVtiZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW2Jl''@;'; put 'put ''KzI4Pj4yXSxBPTI7YnJlYWt9aWYoMSZwZXwwKXthW3ArNDg+PjJdPTEsX1soQT1iZSsyNHwwKT4+M109K19bKCtfW0E+PjNdPitfW2wrOD4+M10/YmUrMTZ8MDpsKSs4Pj4zXSxhWyhBPXArNTZ8MCk+PjJdPWFbYmU+PjJdLGFbQSs0Pj4yXT1hW2JlKzQ+PjJdLGFbQSs4Pj4yXT1hW2JlKzg+''@;'; put 'put ''PjJdLGFbQSsxMj4+Ml09YVtiZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbYmUrMjA+PjJdLGFbQSsyND4+Ml09YVtiZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW2JlKzI4Pj4yXSxBPTE7YnJlYWt9aWYoQT1wKzQ4fDAsOCZwZSl7YVtBPj4yXT04LF9bYmUrMTY+''@;'; put 'put ''PjNdPStfW2w+PjNdLF9bYmUrOD4+M109K19bdysyND4+M10tLjUqK19bdys4MD4+M10sX1tiZSsyND4+M109K19bbCs4Pj4zXSxhWyhBPXArNTZ8MCk+PjJdPWFbYmU+PjJdLGFbQSs0Pj4yXT1hW2JlKzQ+PjJdLGFbQSs4Pj4yXT1hW2JlKzg+PjJdLGFbQSsxMj4+Ml09YVtiZSsxMj4+Ml0s''@;'; put 'put ''YVtBKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbYmUrMjA+PjJdLGFbQSsyND4+Ml09YVtiZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW2JlKzI4Pj4yXSxBPTE7YnJlYWt9YVtBPj4yXT0yLF9bYmU+PjNdPStfW2w+PjNdLF9bYmUrOD4+M109K19bdysyND4+M10tLjUqK19bdys4MD4+''@;'; put 'put ''M10sX1tiZSsyND4+M109K19bbCs4Pj4zXSxhWyhBPXArNTZ8MCk+PjJdPWFbYmU+PjJdLGFbQSs0Pj4yXT1hW2JlKzQ+PjJdLGFbQSs4Pj4yXT1hW2JlKzg+PjJdLGFbQSsxMj4+Ml09YVtiZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbYmUrMjA+PjJdLGFb''@;'; put 'put ''QSsyND4+Ml09YVtiZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW2JlKzI4Pj4yXSxBPTE7YnJlYWt9d2hpbGUoMCk7Zm9yKGFbcCs1Mj4+Ml09QTswfHVlWzExMisoQT0wfGFbYysxNj4+Ml0pPj4wXTspYz0wfGFbQSsxMTY+PjJdO3VlWzMwKygoMHxMZSk9PSgwfGFbKDM9PSgzJmFbYz4+Ml18MCk/''@;'; put 'put ''YzpjKzQ4fDApKzQwPj4yXSk/QSsxNnwwOkErNTZ8MCk+PjBdPTB9ZWxzZSB3PTEsT2U9NDc7YnJlYWs7Y2FzZSAyOmlmKHc9MjU1JihwZT0wfHVlWzQ5KygwfGFbbWU+PjJdKT4+MF0pLHBlPDwyND4+MjQpe2FbYmU+PjJdPWFbcD4+Ml0sYVtiZSs0Pj4yXT1hW3ArND4+Ml0sYVtiZSs4Pj4y''@;'; put 'put ''XT1hW3ArOD4+Ml0sYVtiZSsxMj4+Ml09YVtwKzEyPj4yXSxhW2JlKzE2Pj4yXT1hW3ArMTY+PjJdLGFbYmUrMjA+PjJdPWFbcCsyMD4+Ml0sYVtiZSsyND4+Ml09YVtwKzI0Pj4yXSxhW2JlKzI4Pj4yXT1hW3ArMjg+PjJdO2Rve2lmKCEoNCZ3KSl7aWYoMSZ3fDApe2lmKDQ9PSgwfGFbcCs0''@;'; put 'put ''OD4+Ml0pKXtqZT0rX1syNCsoQT0wfGFbSz4+Ml0pPj4zXS0uNSorX1tBKzgwPj4zXSxIZT0rX1soQT1iZSsxNnwwKT4+M10rMSxiPStfW2w+PjNdLGs9amUtKygwfCgwfGFbMjUyKygwfGFbMTYrKDB8ZnIoTGUpKT4+Ml0pPj4yXSkvMiksX1tiZT4+M109K19bOTYrKGw9MHxhW0s+PjJdKT4+''@;'; put 'put ''M10rICtfW2wrMTY+PjNdLF9bYmUrOD4+M109amUsX1tiZSsyND4+M109LjUqK19bbCs4MD4+M10rICtfW2wrMjQ+PjNdLF9bQT4+M109SGUsX1twKzU2Pj4zXT1iLF9bcCs2ND4+M109ayxfW3ArNzI+PjNdPUhlLF9bcCs4MD4+M109amUsYVsoQT1wKzg4fDApPj4yXT1hW2JlPj4yXSxhW0Er''@;'; put 'put ''ND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0yO2JyZWFrfV9b''@;'; put 'put ''KEE9YmUrMjR8MCk+PjNdPStfWygrX1tBPj4zXT4rX1tsKzg+PjNdP2JlKzE2fDA6bCkrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsx''@;'; put 'put ''Nj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xO2JyZWFrfWlmKGI9K19bbD4+M10sOCZ3KXtfWyhBPWJlKzE2fDApPj4zXT1iKzEsYj0rX1syNCsoZj0wfGFbSz4+Ml0pPj4zXSxrPS41KitfW2YrODA+''@;'; put 'put ''PjNdLDQ9PSgwfGFbcCs0OD4+Ml0pPyhfW2JlKzI0Pj4zXT1rK2IsYj0rX1tsKzg+PjNdLTEsQT1iZSk6KF9bYmUrOD4+M109Yi1rLGI9K19bbCs4Pj4zXSsxKSxfW0ErOD4+M109YixhWyhBPXArNTZ8MCk+PjJdPWFbYmU+PjJdLGFbQSs0Pj4yXT1hW2JlKzQ+PjJdLGFbQSs4Pj4yXT1hW2Jl''@;'; put 'put ''Kzg+PjJdLGFbQSsxMj4+Ml09YVtiZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbYmUrMjA+PjJdLGFbQSsyND4+Ml09YVtiZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW2JlKzI4Pj4yXSxBPTE7YnJlYWt9X1tiZT4+M109YixiPStfWzI0KyhmPTB8YVtLPj4yXSk+''@;'; put 'put ''PjNdLGs9LjUqK19bZis4MD4+M10sND09KDB8YVtwKzQ4Pj4yXSk/KF9bYmUrMjQ+PjNdPWsrYixiPStfW2wrOD4+M10sQT1iZSk6KF9bYmUrOD4+M109Yi1rLGI9K19bbCs4Pj4zXSsxLEE9YmUrMTZ8MCksX1tBKzg+PjNdPWIsYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09''@;'; put 'put ''YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xO2JyZWFrfV9bKEE9YmUr''@;'; put 'put ''OHwwKT4+M109K19bKCtfW0E+PjNdPCtfW2wrOD4+M10/YmU6bCkrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIw''@;'; put 'put ''Pj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xfXdoaWxlKDApO2ZvcihhW3ArNTI+PjJdPUE7MHx1ZVsxMTIrKEE9MHxhW2MrMTY+PjJdKT4+MF07KWM9MHxhW0ErMTE2Pj4yXTt1ZVszMCsoKDB8TGUpPT0oMHxhWygzPT0o''@;'; put 'put ''MyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pP0ErMTZ8MDpBKzU2fDApPj4wXT0wLGFbcCs0OD4+Ml09d31lbHNlIE9lPTQ2O2JyZWFrO2RlZmF1bHQ6T2U9NDZ9NDY9PSgwfE9lKSYmKHc9MHxhW3ArNDg+PjJdLE9lPTQ3KTtlOmRve2lmKDQ3PT0oMHxPZSkpe2lmKE0pe2lmKHc9MHxM''@;'; put 'put ''MVsxMjcmTV0oTGUsMTYrKDB8YVttZT4+Ml0pfDAsdyxjPXArNTZ8MCxBPXArNTJ8MCkpe2FbcCs0OD4+Ml09dzticmVha319ZWxzZSBBPXArNTJ8MCxjPXArNTZ8MDtzd2l0Y2goYVtjPj4yXT1hW3A+PjJdLGFbYys0Pj4yXT1hW3ArND4+Ml0sYVtjKzg+PjJdPWFbcCs4Pj4yXSxhW2MrMTI+''@;'; put 'put ''PjJdPWFbcCsxMj4+Ml0sYVtjKzE2Pj4yXT1hW3ArMTY+PjJdLGFbYysyMD4+Ml09YVtwKzIwPj4yXSxhW2MrMjQ+PjJdPWFbcCsyND4+Ml0sYVtjKzI4Pj4yXT1hW3ArMjg+PjJdLGFbQT4+Ml09MSwwfGYpe2Nhc2UgODpCcigxMzgzOTQsMTA2NTE0LDU2OSwxMDY1MjQpO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MjpfWzgrKDQ9PSgwfGFbcCs0OD4+Ml0pP3ArNTZ8MDpwKzcyfDApPj4zXT0rX1tsKzg+PjNdO2JyZWFrIGU7Y2FzZSAxOl9bcCs4MD4+M109K19bbCs4Pj4zXSxhW3ArNDg+PjJdPTE7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fX13aGlsZSgwKTtvZT1CZX1mdW5jdGlvbiBaUShsLGMsZil7''@;'; put 'put ''dmFyIHA7cD0rX1s4KyhmfD0wKT4+M10rICtfWzgrKGN8PTApPj4zXSxfWyhsfD0wKT4+M109K19bZj4+M10rICtfW2M+PjNdLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIHpRKGwpe3ZhciBwLHcsayxNLGM9MCxmPTAsbT0wLEE9MCxiPTA7Zm9yKGI9MHxhWzE3Misodz0wfGFbMTYrKGx8PTApPj4y''@;'; put 'put ''XSk+PjJdLG09MCxBPTA7bD0wfGFbYisoQTw8Mik+PjJdOyltPStfWzE2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4zXSttLEE9QSsxfDA7Zm9yKHA9MHxhW3crMTgwPj4yXSxjPTAsbD0wO2Y9MHxhW3ArKGw8PDIpPj4yXTspYz0rX1sx''@;'; put 'put ''NisoMHxhWzE2KygwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjNdK2MsbD1sKzF8MDtyZXR1cm4gbT0rcTIoKygoTT0rX1t3KzI0Pj4zXSktK19bMjQrKDB8YVsxNisoMHxhWygzPT0oMyZhWyhiPTB8YVtiPj4yXSk+PjJdfDApP2I6Yis0OHwwKSs0MD4+''@;'; put 'put ''Ml0pPj4yXSk+PjNdKSwrKChrPStfW3crMTY+PjNdKS1tLysoMHxBKSkpLC41KigrcTIoKygrX1syNCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbKGI9MHxhW3A+PjJdKT4+Ml18MCk/YjpiKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjNdLU0pLCsoYy8rKDB8bCktaykpK20pfWZ1bmN0aW9uIF9EKGws''@;'; put 'put ''YyxmLHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgUixLLGJlLExlLEhlLGplLEQsQT0wLHc9MCxiPTAsaz0wLE09MCxHPTAscGU9MCxtZT0wLE9lPTAsQmU9MCxldD0wLHJ0PTA7aWYoamU9b2Usb2U9b2UrMTEyfDAsTGU9amUrNzJ8MCxSPWplKzU2fDAsTT1qZSsxNnwwLG1lPWplLEs9''@;'; put 'put ''KGN8PTApLTQ4fDAsSGU9MHxhWygyPT0oMHwodz0zJmFbYz4+Ml0pKT9jOkspKzQwPj4yXSxBPTU2KyhwZT0wfGFbKGJlPWMrMTZ8MCk+PjJdKXwwLDB8dWVbcGUrODc+PjBdKXt5RChNLEhlLDB8YVsoMz09KDB8dyk/YzpjKzQ4fDApKzQwPj4yXSxBKSx3PU0sTT1BKzQwfDA7ZG97YVtBPj4y''@;'; put 'put ''XT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxNKSl9c3dpdGNoKEQ9KEE9MHxhWzgrKHc9MHxhWyhwZT1IZSsxNnwwKT4+Ml0pPj4yXSk/MHxhWzE2KygwfGFbQSs0Pj4yXSk+PjJdOjAsTT1sKzQwfDAsQT13KzE2fDAsdz01NisoMHxhW2JlPj4yXSl8MCxhW1I+PjJd''@;'; put 'put ''PWFbQT4+Ml0sYVtSKzQ+PjJdPWFbQSs0Pj4yXSxhW1IrOD4+Ml09YVtBKzg+PjJdLGFbUisxMj4+Ml09YVtBKzEyPj4yXSxhW0xlPj4yXT1hW3c+PjJdLGFbTGUrND4+Ml09YVt3KzQ+PjJdLGFbTGUrOD4+Ml09YVt3Kzg+PjJdLGFbTGUrMTI+PjJdPWFbdysxMj4+Ml0sWlEobWUsUixMZSks''@;'; put 'put ''YVtNPj4yXT1hW21lPj4yXSxhW00rND4+Ml09YVttZSs0Pj4yXSxhW00rOD4+Ml09YVttZSs4Pj4yXSxhW00rMTI+PjJdPWFbbWUrMTI+PjJdLG08PDI0Pj4yND8oaz0relEoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6SykrNDA+PjJdKSszLjE0MTU5MjY1MzU4OTc5MyxfW2wrNTY+PjNdPWss''@;'; put 'put ''azw2LjI4MzE4NTMwNzE3OTU4Nj9HPTE6QnIoMTA2NTM0LDEwNjUxNCw2MDYsMTA2NTU4KSk6MHx1ZVs4NSsoQT0wfGFbYmU+PjJdKT4+MF0/KF9bbCs1Nj4+M109K19bQSs3Mj4+M10sRz0xKTpHPTAsdWVbbCs2OT4+MF09RyxhWyhtZT1wKzMyfDApPj4yXT1hW00+PjJdLGFbbWUrND4+Ml09''@;'; put 'put ''YVtNKzQ+PjJdLGFbbWUrOD4+Ml09YVtNKzg+PjJdLGFbbWUrMTI+PjJdPWFbTSsxMj4+Ml0sMHxmKXtjYXNlIDE6aWYoMD09KDB8dWVbMTU2Kyh3PTB8YVtwZT4+Ml0pPj4wXSkmJihPZT0yNTUmKG1lPTB8dWVbODkrKDB8YVtiZT4+Ml0pPj4wXSksbWU8PDI0Pj4yNCE9MCkpe2FbTGU+PjJd''@;'; put 'put ''PWFbcD4+Ml0sYVtMZSs0Pj4yXT1hW3ArND4+Ml0sYVtMZSs4Pj4yXT1hW3ArOD4+Ml0sYVtMZSsxMj4+Ml09YVtwKzEyPj4yXSxhW0xlKzE2Pj4yXT1hW3ArMTY+PjJdLGFbTGUrMjA+PjJdPWFbcCsyMD4+Ml0sYVtMZSsyND4+Ml09YVtwKzI0Pj4yXSxhW0xlKzI4Pj4yXT1hW3ArMjg+PjJd''@;'; put 'put ''O2Rve2lmKCEoNCZPZSkpe2lmKDEmT2Upe2lmKGFbcCs0OD4+Ml09MSxiPStfW0xlPj4zXSwrX1tNPj4zXTwrX1t3KzE2Pj4zXSl7cnQ9YistMSxrPStfW2wrNDg+PjNdLGI9K19bKGw9TGUrMTZ8MCk+PjNdLGV0PS0uNSorX1t3KzgwPj4zXSsgK19bdysyND4+M10sZXQtPSsoMHwoMHxhWzI1''@;'; put 'put ''MisoMHxhWzE2KygwfGZyKEhlKSk+PjJdKT4+Ml0pLzIpLF9bbD4+M109K19bMTYrKEE9MHxhW3BlPj4yXSk+PjNdLStfW0ErODg+PjNdLF9bTGUrOD4+M109ayxfW0xlKzI0Pj4zXT0uNSorX1tBKzgwPj4zXSsgK19bQSsyND4+M10sX1tMZT4+M109cnQsX1twKzU2Pj4zXT1ydCxfW3ArNjQ+''@;'; put 'put ''PjNdPWV0LF9bcCs3Mj4+M109YixfW3ArODA+PjNdPWssYVsoQT1wKzg4fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIw''@;'; put 'put ''Pj4yXSxhW0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtMZSsyOD4+Ml0sQT0yO2JyZWFrfXJ0PStfW2wrNDg+PjNdLGV0PStfWyhBPUxlKzE2fDApPj4zXSsxLGs9LS41KitfW3crODA+PjNdKyArX1t3KzI0Pj4zXSxrLT0rKDB8KDB8YVsyNTIrKDB8YVsxNisoMHxmcihIZSkp''@;'; put 'put ''Pj4yXSk+PjJdKS8yKSxfW0xlPj4zXT0rX1s5NisobD0wfGFbcGU+PjJdKT4+M10rICtfW2wrMTY+PjNdLF9bTGUrOD4+M109cnQsX1tMZSsyND4+M109LjUqK19bbCs4MD4+M10rICtfW2wrMjQ+PjNdLF9bQT4+M109ZXQsX1twKzU2Pj4zXT1iLF9bcCs2ND4+M109ayxfW3ArNzI+PjNdPWV0''@;'; put 'put ''LF9bcCs4MD4+M109cnQsYVsoQT1wKzg4fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIwPj4yXSxhW0ErMjQ+PjJdPWFb''@;'; put 'put ''TGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtMZSsyOD4+Ml0sQT0yO2JyZWFrfWlmKEE9cCs0OHwwLDgmT2Upe2FbQT4+Ml09OCxfW0xlKzE2Pj4zXT0rX1tNPj4zXSxfW0xlKzI0Pj4zXT0uNSorX1t3KzgwPj4zXSsgK19bdysyND4+M10sX1tMZSs4Pj4zXT0rX1tsKzQ4Pj4zXSxhWyhBPXArNTZ8''@;'; put 'put ''MCk+PjJdPWFbTGU+PjJdLGFbQSs0Pj4yXT1hW0xlKzQ+PjJdLGFbQSs4Pj4yXT1hW0xlKzg+PjJdLGFbQSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbTGUrMjA+PjJdLGFbQSsyND4+Ml09YVtMZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW0xl''@;'; put 'put ''KzI4Pj4yXSxBPTE7YnJlYWt9YVtBPj4yXT0yLF9bTGU+PjNdPStfW00+PjNdLF9bTGUrMjQ+PjNdPS41KitfW3crODA+PjNdKyArX1t3KzI0Pj4zXSxfW0xlKzg+PjNdPStfW2wrNDg+PjNdLGFbKEE9cCs1NnwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJd''@;'; put 'put ''PWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0ErMTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MTticmVha31hW3ArNDg+PjJdPTQsX1soQT1MZSs4fDApPj4z''@;'; put 'put ''XT0rX1soK19bQT4+M108K19bbCs0OD4+M10/TGU6TSkrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1h''@;'; put 'put ''W0xlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtMZSsyOD4+Ml0sQT0xfXdoaWxlKDApO2ZvcihhW3ArNTI+PjJdPUE7MHx1ZVsxMTIrKEE9MHxhW2MrMTY+PjJdKT4+MF07KWM9MHxhW0ErMTE2Pj4yXTt1ZVszMCsoKDB8SGUpPT0oMHxhWygyPT0oMyZhW2M+''@;'; put 'put ''PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKT9BKzU2fDA6QSsxNnwwKT4+MF09MCxhW3ArNDg+PjJdPU9lfWVsc2Ugdz00LEJlPTQ3O2JyZWFrO2Nhc2UgMjppZih3PTI1NSYoT2U9MHx1ZVs4OSsoMHxhW2JlPj4yXSk+PjBdKSxPZTw8MjQ+PjI0KXthW0xlPj4yXT1hW3A+PjJdLGFbTGUrND4+''@;'; put 'put ''Ml09YVtwKzQ+PjJdLGFbTGUrOD4+Ml09YVtwKzg+PjJdLGFbTGUrMTI+PjJdPWFbcCsxMj4+Ml0sYVtMZSsxNj4+Ml09YVtwKzE2Pj4yXSxhW0xlKzIwPj4yXT1hW3ArMjA+PjJdLGFbTGUrMjQ+PjJdPWFbcCsyND4+Ml0sYVtMZSsyOD4+Ml09YVtwKzI4Pj4yXTtkb3tpZighKDQmdykpe2lm''@;'; put 'put ''KDEmd3wwKXtpZig0PT0oMHxhW3ArNDg+PjJdKSl7Yj0rX1tMZT4+M10tMSxldD0rX1tNPj4zXSxrPShydD0rX1syNCsoQT0wfGFbcGU+PjJdKT4+M10tLjUqK19bQSs4MD4+M10pLSsoMHwoMHxhWzI1MisoMHxhWzE2KygwfGZyKEhlKSk+PjJdKT4+Ml0pLzIpLF9bTGUrMTY+PjNdPStfWzE2''@;'; put 'put ''KyhBPTB8YVtwZT4+Ml0pPj4zXS0yLStfW0ErODg+PjNdLF9bTGUrOD4+M109cnQsX1tMZSsyND4+M109LjUqK19bQSs4MD4+M10rICtfW0ErMjQ+PjNdLF9bTGU+PjNdPWIsX1twKzU2Pj4zXT1iLF9bcCs2ND4+M109ayxfW3ArNzI+PjNdPWV0LF9bcCs4MD4+M109cnQsYVsoQT1wKzg4fDAp''@;'; put 'put ''Pj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtMZSsy''@;'; put 'put ''OD4+Ml0sQT0yO2JyZWFrfV9bKEE9TGUrMjR8MCk+PjNdPStfWygrX1tBPj4zXT4rX1tsKzg+PjNdP0xlKzE2fDA6bCkrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJd''@;'; put 'put ''LGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtMZSsyOD4+Ml0sQT0xO2JyZWFrfWlmKGI9K19bTT4+M10sOCZ3KXtfWyhBPUxlKzE2fDApPj4zXT1iKzEsYj0rX1syNCsoZj0wfGFbcGU+PjJd''@;'; put 'put ''KT4+M10saz0uNSorX1tmKzgwPj4zXSw0PT0oMHxhW3ArNDg+PjJdKT8oX1tMZSsyND4+M109aytiLGI9K19bbCs0OD4+M10tMSxBPUxlKTooX1tMZSs4Pj4zXT1iLWssYj0rX1tsKzQ4Pj4zXSsxKSxfW0ErOD4+M109YixhWyhBPXArNTZ8MCk+PjJdPWFbTGU+PjJdLGFbQSs0Pj4yXT1hW0xl''@;'; put 'put ''KzQ+PjJdLGFbQSs4Pj4yXT1hW0xlKzg+PjJdLGFbQSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbTGUrMjA+PjJdLGFbQSsyND4+Ml09YVtMZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW0xlKzI4Pj4yXSxBPTE7YnJlYWt9X1tMZT4+M109Yist''@;'; put 'put ''MSxiPStfWzI0KyhmPTB8YVtwZT4+Ml0pPj4zXSxrPS41KitfW2YrODA+PjNdLDQ9PSgwfGFbcCs0OD4+Ml0pPyhfW0xlKzI0Pj4zXT1rK2IsYj0rX1tsKzQ4Pj4zXS0xLEE9TGUpOihfW0xlKzg+PjNdPWItayxiPStfW2wrNDg+PjNdLEE9TGUrMTZ8MCksX1tBKzg+PjNdPWIsYVsoQT1wKzU2''@;'; put 'put ''fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtM''@;'; put 'put ''ZSsyOD4+Ml0sQT0xO2JyZWFrfV9bKEE9TGUrOHwwKT4+M109K19bKCtfW0E+PjNdPCtfW2wrNDg+PjNdP0xlOk0pKzg+PjNdLGFbKEE9cCs1NnwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxh''@;'; put 'put ''W0ErMTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MX13aGlsZSgwKTtmb3IoYVtwKzUyPj4yXT1BOzB8dWVbMTEyKyhBPTB8YVtjKzE2Pj4yXSk+PjBdOyljPTB8YVtBKzExNj4+''@;'; put 'put ''Ml07dWVbMzArKCgwfEhlKT09KDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSk/QSs1NnwwOkErMTZ8MCk+PjBdPTAsYVtwKzQ4Pj4yXT13fWVsc2UgQmU9NDY7YnJlYWs7ZGVmYXVsdDpCZT00Nn00Nj09KDB8QmUpJiYodz0wfGFbcCs0OD4+Ml0sQmU9NDcpO2U6ZG97''@;'; put 'put ''aWYoNDc9PSgwfEJlKSl7aWYoRCl7aWYodz0wfEwxWzEyNyZEXShIZSw1NisoMHxhW2JlPj4yXSl8MCx3LGM9cCs1NnwwLEE9cCs1MnwwKSl7YVtwKzQ4Pj4yXT13O2JyZWFrfX1lbHNlIEE9cCs1MnwwLGM9cCs1NnwwO3N3aXRjaChhW2M+PjJdPWFbcD4+Ml0sYVtjKzQ+PjJdPWFbcCs0Pj4y''@;'; put 'put ''XSxhW2MrOD4+Ml09YVtwKzg+PjJdLGFbYysxMj4+Ml09YVtwKzEyPj4yXSxhW2MrMTY+PjJdPWFbcCsxNj4+Ml0sYVtjKzIwPj4yXT1hW3ArMjA+PjJdLGFbYysyND4+Ml09YVtwKzI0Pj4yXSxhW2MrMjg+PjJdPWFbcCsyOD4+Ml0sYVtBPj4yXT0xLDB8Zil7Y2FzZSA4OkJyKDEzODM5NCwx''@;'; put 'put ''MDY1MTQsNzY1LDEwNjU1OCk7YnJlYWs7Y2FzZSAyOl9bOCsoND09KDB8YVtwKzQ4Pj4yXSk/cCs1NnwwOnArNzJ8MCk+PjNdPStfW2wrNDg+PjNdO2JyZWFrIGU7Y2FzZSAxOl9bcCs2ND4+M109K19bbCs0OD4+M10sYVtwKzQ4Pj4yXT00O2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX19d2hp''@;'; put 'put ''bGUoMCk7b2U9amV9ZnVuY3Rpb24gWjIobCl7dmFyIG0sQSxjPTAsZj0wLHA9MCx3PTA7cmV0dXJuIEE9MHxhWzk2KyhtPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0sMD09KDB8dWVbbSs0ND4+MF0pJiYwPT0oMHx1ZVttKzg0Pj4wXSk/dz02OjAhPSg4JihmPTI1NSYoYz0wfHVlW20rNDk+PjBd''@;'; put 'put ''KSl8MCl8fDAhPSg4JihwPTB8dWVbbSs4OT4+MF0pKXx8MCE9KDUmZnwwKSYmYzw8MjQ+PjI0PT1wPDwyND4+MjQ/bD0wOnc9Niw2PT0oMHx3KSYmKEE/KGw9MCE9KDEmYVsxMTYrKDB8YVsxNisoMHxmcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pKT4+Ml0pPj4y''@;'; put 'put ''XXwwKSxsPX5+KCtfWyhsP0ErMzJ8MDpBKzI0fDApPj4zXSsxOCkpOmw9MTgpLDB8bH1mdW5jdGlvbiBWTihsLGMsZixwLG0sQSx3KXtsfD0wLHB8PTAsbT0rbSxBPStBLHd8PTA7dmFyIGI9MCxrPTAsTT0wLEQ9MDtNPTA9PSgwfHVlWzQ0KyhsPTB8YVsxNisoMHxhWyhjfD0wKSsoKGZ8PTAp''@;'; put 'put ''PDwyKT4+Ml0pPj4yXSk+PjBdKSYmMD09KDB8dWVbbCs4ND4+MF0pPzY6Mztkb3tpZigzPT0oMHxNKSl7aWYoISg4JihrPTI1NSYoYj0wfHVlW2wrNDk+PjBdKSkpKXtpZigwPT0oOCYoRD0wfHVlW2wrODk+PjBdKSkmJigwPT0oNSZrfDApfHxiPDwyND4+MjQhPUQ8PDI0Pj4yNCkpe009Njti''@;'; put 'put ''cmVha31pZighKDgmdWVbbCs4OT4+MF0pKXtpZig0Jmt8MCl7R1EoYyxmLHAsbSxBLHcpO2JyZWFrfWlmKDEmayl7V1EoYyxmLHAsbSxBLHcpO2JyZWFrfUJyKDEzODM5NCwxMDY1MTQsMTIzMSwxMDY1NjYpfX1pZigwPT0oMiZiKSYmMD09KDImdWVbbCs4OT4+MF0pKXtqTihjLGYscCxtLEEs''@;'; put 'put ''dyk7YnJlYWt9R1EoYyxmLHAsbSxBLHcpfX13aGlsZSgwKTs2PT0oMHxNKSYmZnVuY3Rpb24gaWxlKGwsYyxmLHAsbSxBKXtwPStwLEF8PTA7dmFyIEsscGUsbWUsYmUsT2UsTGUsQmUsSGUscnQsR2UsbHQsTXQsa3QsWnQsdXQsd3Qscm4seW4sRm4sbHIsdz0wLGI9MCxrPTAsTT0wLEQ9MCxS''@;'; put 'put ''PTAsRz0wLGplPTAsZXQ9MCxhdD0wLEV0PTAsTnI9MCxrcj0wLGNyPTA7c3dpdGNoKGxyPW9lLG9lPW9lKzE2MDgwfDAsd3Q9bHIrODB8MCxybj1scis2NHwwLHluPWxyKzQ4fDAsRm49bHIrMzJ8MCxadD1scisxNnwwLHV0PWxyLGs9KGs9LjUqKG09K20pLysoMHwoZnw9MCkpKT4yP2s6MixH''@;'; put 'put ''ZT0xNisoMHxhWygzPT0oMyZhWyhldD0wfGFbKGx8PTApKygoY3w9MCk8PDIpPj4yXSk+PjJdfDApP2V0OmV0KzQ4fDApKzQwPj4yXSl8MCxsdD0oYj0rX1sxNisoZXQ9MHxhW2V0KzE2Pj4yXSk+PjNdKSsocnQ9K19bMTYrKGplPTB8YVtHZT4+Ml0pPj4zXSksa3Q9KG09K19bZXQrNTY+PjNd''@;'; put 'put ''KStydCx3PShNdD0rX1tldCsyND4+M10rKGF0PStfW2plKzI0Pj4zXSkpPj0oYXQ9K19bZXQrNjQ+PjNdK2F0KT8xOi0xLEQ9K19bamUrOTY+PjNdLDB8RzUoMHxidFtldCs0OT4+MF0sMHxidFtldCs4OT4+MF0pKXtjYXNlIDY1OmNhc2UgMzI6TXQ9PWF0JiYodz0wLXd8MCl9Zm9yKE5yPTMq''@;'; put 'put ''KEQtYiksYj0zKihELW0pLGJlPWsqKygwfHcpLG1lPXd0Kzh8MCxPZT13dCsxNnwwLExlPXd0KzMyfDAsQmU9d3QrNDh8MCxIZT0uNSooYXQrTXQpLGplPXd0KzY0fDAsZXQ9d3QrODB8MCxLPXd0Kzk2fDAscGU9d3QrMTA0fDAsRz0wLE09MCxtPUQsaz1EPE5yP0Q6TnIsYj1EPGI/RDpiOyEo''@;'; put 'put ''KDB8Ryk+PSgwfGYpKTspUj1jKzF8MCxjPTB8YVtsKyhjPDwyKT4+Ml0sRD1tK3Asays9cCxiKz1wLE0rPWJlLF9bd3Q+PjNdPWx0LF9bbWU+PjNdPU10LHl1KHJuLC4zMzMzMzMzMzMzMzMzMzMzKmsrbHQsTnI9TStNdCksYVtPZT4+Ml09YVtybj4+Ml0sYVtPZSs0Pj4yXT1hW3JuKzQ+PjJd''@;'; put 'put ''LGFbT2UrOD4+Ml09YVtybis4Pj4yXSxhW09lKzEyPj4yXT1hW3JuKzEyPj4yXSx5dSh5bixrcj1EK3J0LE5yKSxhW0xlPj4yXT1hW3luPj4yXSxhW0xlKzQ+PjJdPWFbeW4rND4+Ml0sYVtMZSs4Pj4yXT1hW3luKzg+PjJdLGFbTGUrMTI+PjJdPWFbeW4rMTI+PjJdLHl1KEZuLGtyLEhlKSxh''@;'; put 'put ''W0JlPj4yXT1hW0ZuPj4yXSxhW0JlKzQ+PjJdPWFbRm4rND4+Ml0sYVtCZSs4Pj4yXT1hW0ZuKzg+PjJdLGFbQmUrMTI+PjJdPWFbRm4rMTI+PjJdLHl1KFp0LGtyLE5yPWF0LU0pLGFbamU+PjJdPWFbWnQ+PjJdLGFbamUrND4+Ml09YVtadCs0Pj4yXSxhW2plKzg+PjJdPWFbWnQrOD4+Ml0s''@;'; put 'put ''YVtqZSsxMj4+Ml09YVtadCsxMj4+Ml0seXUodXQsLjMzMzMzMzMzMzMzMzMzMzMqYitrdCxOciksYVtldD4+Ml09YVt1dD4+Ml0sYVtldCs0Pj4yXT1hW3V0KzQ+PjJdLGFbZXQrOD4+Ml09YVt1dCs4Pj4yXSxhW2V0KzEyPj4yXT1hW3V0KzEyPj4yXSxfW0s+PjNdPWt0LF9bcGU+PjNdPWF0''@;'; put 'put ''LG09MCE9KDB8YVs5NisoMHxhWyh3PWMrMTZ8MCk+PjJdKT4+Ml0pJiYoY3I9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSkpPj4yXSk+PjJdfDApLF9bNTYrKHc9MHxhWzk2KygwfGFbdz4+Ml0pPj4yXSk+PjNdPS41KihF''@;'; put 'put ''dD0rX1soY3I/dysyNHwwOncrMzJ8MCk+PjNdKStEKyArX1sxNisoY3I9MHxhW0dlPj4yXSk+PjNdLF9bdys2ND4+M109K19bY3IrMjQ+PjNdLHVlW3crODE+PjBdPTEsRXQ+cCk/RXQrbTpELEF1KGMsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLHd0LDcsQSksYz1S''@;'; put 'put ''LEc9RysxfDA7b2U9bHJ9KGMsZixwLG0sQSx3KX1mdW5jdGlvbiBHUShsLGMsZixwLG0sQSl7bT0rbSxBfD0wO3ZhciBtZSxiZSxPZSxMZSxCZSxIZSxqZSxldCxHZSxsdCxNdCxrdCxFdCx1dCx3dCxybix5bixGbixscixOcix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAs''@;'; put 'put ''cnQ9MCxhdD0wLFp0PTAsa3I9MCxjcj0wO3N3aXRjaChOcj1vZSxvZT1vZSsxNjA4MHwwLHJuPU5yKzgwfDAseW49TnIrNjR8MCxGbj1Ocis0OHwwLGxyPU5yKzMyfDAsdXQ9TnIrMTZ8MCx3dD1OcixSPShSPS41KihwPStwKS8rKDB8KGZ8PTApKSk+Mj9SOjIsbHQ9MTYrKDB8YVsoMz09KDMm''@;'; put 'put ''YVsocnQ9MHxhWyhsfD0wKSsoKGN8PTApPDwyKT4+Ml0pPj4yXXwwKT9ydDpydCs0OHwwKSs0MD4+Ml0pfDAsa3Q9KEQ9K19bMjQrKHJ0PTB8YVtydCsxNj4+Ml0pPj4zXSkrKEdlPStfWzI0KyhiPTB8YVtsdD4+Ml0pPj4zXSksRXQ9KE09K19bcnQrNjQ+PjNdKStHZSxrPShNdD0odz0rX1ty''@;'; put 'put ''dCsxNj4+M10pKyhhdD0rX1tiKzE2Pj4zXSkpPj0oYXQ9KHA9K19bcnQrNTY+PjNdKSthdCk/MTotMSxLPS41KitfW2IrODA+PjNdLDB8RzUoMHxidFtydCs0OT4+MF0sMHxidFtydCs4OT4+MF0pKXtjYXNlIDE1Onc9KFItcCsgK19bYis5Nj4+M10pKms7YnJlYWs7Y2FzZSAzODp3PShwK1Ir''@;'; put 'put ''ICtfW2IrODg+PjNdKSprO2JyZWFrO2Nhc2UgNDE6Y2FzZSA0ODp3PShSLXcrICtfW2IrOTY+PjNdKSprO2JyZWFrO2Nhc2UgNTg6Y2FzZSA1NzpjYXNlIDUxOmNhc2UgNDc6Y2FzZSAzNzpjYXNlIDE0Onc9LjMzMzMzMzMzMzMzMzMzMzMqayoody1wKyArX1tiKzg4Pj4zXSsgK19bYis5Nj4+''@;'; put 'put ''M10pO2JyZWFrO2Nhc2UgNzM6dz0odytSKyArX1tiKzg4Pj4zXSkqazticmVhaztjYXNlIDgzOnc9KCtfW2IrODg+PjNdK3cpKms7YnJlYWs7Y2FzZSA4NDp3PSguNSoody1wKyArX1tiKzg4Pj4zXSsgK19bYis5Nj4+M10pK1IpKms7YnJlYWs7Y2FzZSA4NTpjYXNlIDc1OmNhc2UgNzQ6dz0o''@;'; put 'put ''LjUqKHctcCsgK19bYis4OD4+M10rICtfW2IrOTY+PjNdKSsyKlIpKms7YnJlYWs7ZGVmYXVsdDp3PTB9Zm9yKFIqPWssT2U9cm4rOHwwLExlPXJuKzE2fDAsQmU9cm4rMzJ8MCxIZT1ybis0OHwwLGplPS41KihhdCtNdCksZXQ9cm4rNjR8MCxydD1ybis4MHwwLG1lPXJuKzk2fDAsYmU9cm4r''@;'; put 'put ''MTA0fDAscGU9MCxwPUssRD1LPChEPTMqKEstRCkpP0s6RCxrPUs8KE09MyooSy1NKSk/SzpNOyEoKDB8cGUpPj0oMHxmKSk7KUc9YysxfDAsYz0wfGFbbCsoYzw8Mik+PjJdLE09cCttLEQrPW0says9bSx3Kz1SLF9bcm4+PjNdPU10LF9bT2U+PjNdPWt0LHl1KHluLEs9dytNdCwuMzMzMzMz''@;'; put 'put ''MzMzMzMzMzMzMypEK2t0KSxhW0xlPj4yXT1hW3luPj4yXSxhW0xlKzQ+PjJdPWFbeW4rND4+Ml0sYVtMZSs4Pj4yXT1hW3luKzg+PjJdLGFbTGUrMTI+PjJdPWFbeW4rMTI+PjJdLHl1KEZuLEssa3I9TStHZSksYVtCZT4+Ml09YVtGbj4+Ml0sYVtCZSs0Pj4yXT1hW0ZuKzQ+PjJdLGFbQmUr''@;'; put 'put ''OD4+Ml09YVtGbis4Pj4yXSxhW0JlKzEyPj4yXT1hW0ZuKzEyPj4yXSx5dShscixqZSxrciksYVtIZT4+Ml09YVtscj4+Ml0sYVtIZSs0Pj4yXT1hW2xyKzQ+PjJdLGFbSGUrOD4+Ml09YVtscis4Pj4yXSxhW0hlKzEyPj4yXT1hW2xyKzEyPj4yXSx5dSh1dCxLPWF0LXcsa3IpLGFbZXQ+PjJd''@;'; put 'put ''PWFbdXQ+PjJdLGFbZXQrND4+Ml09YVt1dCs0Pj4yXSxhW2V0Kzg+PjJdPWFbdXQrOD4+Ml0sYVtldCsxMj4+Ml09YVt1dCsxMj4+Ml0seXUod3QsSywuMzMzMzMzMzMzMzMzMzMzMyprK0V0KSxhW3J0Pj4yXT1hW3d0Pj4yXSxhW3J0KzQ+PjJdPWFbd3QrND4+Ml0sYVtydCs4Pj4yXT1hW3d0''@;'; put 'put ''Kzg+PjJdLGFbcnQrMTI+PjJdPWFbd3QrMTI+PjJdLF9bbWU+PjNdPWF0LF9bYmU+PjNdPUV0LHA9MCE9KDB8YVs5NisoMHxhWyhiPWMrMTZ8MCk+PjJdKT4+Ml0pJiYoY3I9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSkp''@;'; put 'put ''Pj4yXSk+PjJdfDApLF9bNjQrKGI9MHxhWzk2KygwfGFbYj4+Ml0pPj4yXSk+PjNdPS41KihadD0rX1soY3I/YiszMnwwOmIrMjR8MCk+PjNdKStNKyArX1syNCsoY3I9MHxhW2x0Pj4yXSk+PjNdLF9bYis1Nj4+M109K19bY3IrMTY+PjNdLHVlW2IrODE+PjBdPTEsWnQ+bSk/WnQrcDpNLEF1''@;'; put 'put ''KGMsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLHJuLDcsQSksYz1HLHBlPXBlKzF8MDtvZT1Ocn1mdW5jdGlvbiBqTihsLGMsZixwLG0sQSl7cD0rcCxBfD0wO3ZhciBLLHBlLG1lLGJlLE9lLExlLEJlLEhlLHJ0LEdlLGx0LE10LGt0LFp0LHV0LHd0LHJuLHluLEZu''@;'; put 'put ''LGxyLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxqZT0wLGV0PTAsYXQ9MCxFdD0wLE5yPTAsa3I9MCxjcj0wO3N3aXRjaChscj1vZSxvZT1vZSsxNjA4MHwwLHd0PWxyKzgwfDAscm49bHIrNjR8MCx5bj1scis0OHwwLEZuPWxyKzMyfDAsWnQ9bHIrMTZ8MCx1dD1scixrPShrPS41Kiht''@;'; put 'put ''PSttKS8rKDB8KGZ8PTApKSk+Mj9rOjIsR2U9MTYrKDB8YVsoMz09KDMmYVsoZXQ9MHxhWyhsfD0wKSsoKGN8PTApPDwyKT4+Ml0pPj4yXXwwKT9ldDpldCs0OHwwKSs0MD4+Ml0pfDAsbHQ9KGI9K19bMTYrKGV0PTB8YVtldCsxNj4+Ml0pPj4zXSkrKHJ0PStfWzE2KyhqZT0wfGFbR2U+PjJd''@;'; put 'put ''KT4+M10pLGt0PShtPStfW2V0KzU2Pj4zXSkrcnQsdz0oTXQ9K19bZXQrMjQ+PjNdKyhhdD0rX1tqZSsyND4+M10pKT49KGF0PStfW2V0KzY0Pj4zXSthdCk/MTotMSxEPStfW2plKzg4Pj4zXSwwfEc1KDB8YnRbZXQrNDk+PjBdLDB8YnRbZXQrODk+PjBdKSl7Y2FzZSA2NzpjYXNlIDEyOk10''@;'; put 'put ''PT1hdCYmKHc9MC13fDApfWZvcihOcj0zKihiK0QpLGI9MyoobStEKSxiZT1rKisoMHx3KSxtZT13dCs4fDAsT2U9d3QrMTZ8MCxMZT13dCszMnwwLEJlPXd0KzQ4fDAsSGU9LjUqKGF0K010KSxqZT13dCs2NHwwLGV0PXd0KzgwfDAsSz13dCs5NnwwLHBlPXd0KzEwNHwwLEc9MCxNPTAsbT1E''@;'; put 'put ''LGs9RDxOcj9EOk5yLGI9RDxiP0Q6YjshKCgwfEcpPj0oMHxmKSk7KVI9YysxfDAsYz0wfGFbbCsoYzw8Mik+PjJdLEQ9bStwLGsrPXAsYis9cCxNKz1iZSxfW3d0Pj4zXT1sdCxfW21lPj4zXT1NdCx5dShybixsdC0uMzMzMzMzMzMzMzMzMzMzMyprLE5yPU0rTXQpLGFbT2U+PjJdPWFbcm4+''@;'; put 'put ''PjJdLGFbT2UrND4+Ml09YVtybis0Pj4yXSxhW09lKzg+PjJdPWFbcm4rOD4+Ml0sYVtPZSsxMj4+Ml09YVtybisxMj4+Ml0seXUoeW4sa3I9cnQtRCxOciksYVtMZT4+Ml09YVt5bj4+Ml0sYVtMZSs0Pj4yXT1hW3luKzQ+PjJdLGFbTGUrOD4+Ml09YVt5bis4Pj4yXSxhW0xlKzEyPj4yXT1h''@;'; put 'put ''W3luKzEyPj4yXSx5dShGbixrcixIZSksYVtCZT4+Ml09YVtGbj4+Ml0sYVtCZSs0Pj4yXT1hW0ZuKzQ+PjJdLGFbQmUrOD4+Ml09YVtGbis4Pj4yXSxhW0JlKzEyPj4yXT1hW0ZuKzEyPj4yXSx5dShadCxrcixOcj1hdC1NKSxhW2plPj4yXT1hW1p0Pj4yXSxhW2plKzQ+PjJdPWFbWnQrND4+''@;'; put 'put ''Ml0sYVtqZSs4Pj4yXT1hW1p0Kzg+PjJdLGFbamUrMTI+PjJdPWFbWnQrMTI+PjJdLHl1KHV0LGt0LS4zMzMzMzMzMzMzMzMzMzMzKmIsTnIpLGFbZXQ+PjJdPWFbdXQ+PjJdLGFbZXQrND4+Ml09YVt1dCs0Pj4yXSxhW2V0Kzg+PjJdPWFbdXQrOD4+Ml0sYVtldCsxMj4+Ml09YVt1dCsxMj4+''@;'; put 'put ''Ml0sX1tLPj4zXT1rdCxfW3BlPj4zXT1hdCxtPTAhPSgwfGFbOTYrKDB8YVsodz1jKzE2fDApPj4yXSk+PjJdKSYmKGNyPTA9PSgxJmFbMTE2KygwfGFbMTYrKDB8ZnIoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pKT4+Ml0pPj4yXXwwKSxfWzU2Kyh3PTB8YVs5Niso''@;'; put 'put ''MHxhW3c+PjJdKT4+Ml0pPj4zXT0tLjUqKEV0PStfWyhjcj93KzI0fDA6dyszMnwwKT4+M10pLUQrICtfWzE2Kyhjcj0wfGFbR2U+PjJdKT4+M10sX1t3KzY0Pj4zXT0rX1tjcisyND4+M10sdWVbdys4MT4+MF09MSxFdD5wKT9FdCttOkQsQXUoYywwfGFbKDI9PSgzJmFbYz4+Ml18MCk/Yzpj''@;'; put 'put ''Ky00OHwwKSs0MD4+Ml0sd3QsNyxBKSxjPVIsRz1HKzF8MDtvZT1scn1mdW5jdGlvbiBXUShsLGMsZixwLG0sQSl7bT0rbSxBfD0wO3ZhciBLLHBlLGJlLE9lLExlLEJlLGplLGx0LE10LGt0LGF0LFp0LHV0LHd0LHJuLHluLEZuLGxyLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxtZT0w''@;'; put 'put ''LEhlPTAsZXQ9MCxydD0wLEdlPTAsRXQ9MCxOcj0wLGtyPTAsY3I9MDtmb3IobHI9b2Usb2U9b2UrMTYwODB8MCx3dD1scis4MHwwLHJuPWxyKzY0fDAseW49bHIrNDh8MCxGbj1sciszMnwwLFp0PWxyKzE2fDAsdXQ9bHIsT2U9MTYrKDB8YVsoMz09KDMmYVsocnQ9MHxhWyhsfD0wKSsoKGN8''@;'; put 'put ''PTApPDwyKT4+Ml0pPj4yXXwwKT9ydDpydCs0OHwwKSs0MD4+Ml0pfDAsQmU9KGI9K19bMjQrKHJ0PTB8YVtydCsxNj4+Ml0pPj4zXSkrKGJlPStfWzI0KyhHZT0wfGFbT2U+PjJdKT4+M10pLGplPShrPStfW3J0KzY0Pj4zXSkrYmUsbWU9KExlPStfW3J0KzE2Pj4zXSsoSGU9K19bR2UrMTY+''@;'; put 'put ''PjNdKSk+PShIZT0rX1tydCs1Nj4+M10rSGUpPzE6LTEsTT0uNSorX1tHZSs4MD4+M10sZXQ9KChldD0uNSoocD0rcCkvKygwfChmfD0wKSkpPjI/ZXQ6MikqKygwfCgocnQ9Njc9PSgwfEc1KDB8YnRbcnQrNDk+PjBdLDB8YnRbcnQrODk+PjBdKSkpPzAtbWV8MDptZSkpLG1lPXd0Kzh8MCxy''@;'; put 'put ''dD13dCsxNnwwLEdlPXd0KzMyfDAsbHQ9d3QrNDh8MCxNdD0uNSooSGUrTGUpLGt0PXd0KzY0fDAsYXQ9d3QrODB8MCxLPXd0Kzk2fDAscGU9d3QrMTA0fDAscD1NLHc9MCxiPU08KGI9MyooYitNKSk/TTpiLGs9TTwoaz0zKihrK00pKT9NOmssUj0wOyEoKDB8Uik+PSgwfGYpKTspRz1jKzF8''@;'; put 'put ''MCxEPTB8YVtsKyhjPDwyKT4+Ml0sTT1wK20sYis9bSxrKz1tLHcrPWV0LF9bd3Q+PjNdPUxlLF9bbWU+PjNdPUJlLHl1KHJuLE5yPXcrTGUsQmUtLjMzMzMzMzMzMzMzMzMzMzMqYiksYVtydD4+Ml09YVtybj4+Ml0sYVtydCs0Pj4yXT1hW3JuKzQ+PjJdLGFbcnQrOD4+Ml09YVtybis4Pj4y''@;'; put 'put ''XSxhW3J0KzEyPj4yXT1hW3JuKzEyPj4yXSx5dSh5bixOcixrcj1iZS1NKSxhW0dlPj4yXT1hW3luPj4yXSxhW0dlKzQ+PjJdPWFbeW4rND4+Ml0sYVtHZSs4Pj4yXT1hW3luKzg+PjJdLGFbR2UrMTI+PjJdPWFbeW4rMTI+PjJdLHl1KEZuLE10LGtyKSxhW2x0Pj4yXT1hW0ZuPj4yXSxhW2x0''@;'; put 'put ''KzQ+PjJdPWFbRm4rND4+Ml0sYVtsdCs4Pj4yXT1hW0ZuKzg+PjJdLGFbbHQrMTI+PjJdPWFbRm4rMTI+PjJdLHl1KFp0LE5yPUhlLXcsa3IpLGFba3Q+PjJdPWFbWnQ+PjJdLGFba3QrND4+Ml09YVtadCs0Pj4yXSxhW2t0Kzg+PjJdPWFbWnQrOD4+Ml0sYVtrdCsxMj4+Ml09YVtadCsxMj4+''@;'; put 'put ''Ml0seXUodXQsTnIsamUtLjMzMzMzMzMzMzMzMzMzMzMqayksYVthdD4+Ml09YVt1dD4+Ml0sYVthdCs0Pj4yXT1hW3V0KzQ+PjJdLGFbYXQrOD4+Ml09YVt1dCs4Pj4yXSxhW2F0KzEyPj4yXT1hW3V0KzEyPj4yXSxfW0s+PjNdPUhlLF9bcGU+PjNdPWplLHA9MCE9KDB8YVs5NisoMHxhWyhj''@;'; put 'put ''PUQrMTZ8MCk+PjJdKT4+Ml0pJiYoY3I9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxmcigwfGFbKDM9PSgzJmFbRD4+Ml18MCk/RDpEKzQ4fDApKzQwPj4yXSkpPj4yXSk+PjJdfDApLF9bNjQrKGM9MHxhWzk2KygwfGFbYz4+Ml0pPj4yXSk+PjNdPS0uNSooRXQ9K19bKGNyP2MrMzJ8MDpjKzI0''@;'; put 'put ''fDApPj4zXSktTSsgK19bMjQrKGNyPTB8YVtPZT4+Ml0pPj4zXSxfW2MrNTY+PjNdPStfW2NyKzE2Pj4zXSx1ZVtjKzgxPj4wXT0xLEV0Pm0pP0V0K3A6TSxBdShELDB8YVsoMj09KDMmYVtEPj4yXXwwKT9EOkQrLTQ4fDApKzQwPj4yXSx3dCw3LEEpLGM9RyxSPVIrMXwwO29lPWxyfWZ1bmN0''@;'; put 'put ''aW9uIEc1KGwsYyl7bHw9MCxjfD0wO3ZhciBmPTA7Zm9yKGY9MDs7KXtpZigoMHxmKT49OCl7Yz0tMTticmVha31pZigoMHxhWzIyMDQ0KyhmPDwyKT4+Ml0pPT0oMHxjKSl7Yz1mO2JyZWFrfWY9ZisxfDB9Zm9yKGY9MDs7KXtpZigoMHxmKT49OCl7Zj0tMTticmVha31pZigoMHxhWzIyMDQ0''@;'; put 'put ''KyhmPDwyKT4+Ml0pPT0oMHxsKSlicmVhaztmPWYrMXwwfXJldHVybiAwfCgoZnxjfDApPDA/MDowfGFbMjIwNzYrKGY8PDUpKyhjPDwyKT4+Ml0pfWZ1bmN0aW9uIHl1KGwsYyxmKXtmPStmLF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mfWZ1bmN0aW9uIHdrKGwpe2x8PTA7dmFyIGM9''@;'; put 'put ''MCxmPTA7MCE9KDB8YVs0NzIwM10pfDAhPSgwfGFbNDcyMDJdKSYmKDB8KGY9MHxhWzEwMCsoMHxhWyhjPWwrMTZ8MCk+PjJdKT4+Ml0pJiYwPT0oMHx1ZVtmKzgxPj4wXSkmJjB8Q0QobCwxKSYmSmQoZj0wfGZyKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSwwfGFb''@;'; put 'put ''MTAwKygwfGFbYz4+Ml0pPj4yXSksMHwoZj0wfGFbMTA0KygwfGFbYz4+Ml0pPj4yXSkmJjA9PSgwfHVlW2YrODE+PjBdKSYmMHxDRChsLDApJiZKZChmPTB8ZnIoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pLDB8YVsxMDQrKDB8YVtjPj4yXSk+PjJdKSl9ZnVuY3Rp''@;'; put 'put ''b24gQ0QobCxjKXtjfD0wO3ZhciBHLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxLPTA7Rz1vZSxvZT1vZSs5NnwwLEQ9RyszMnwwLGs9RysxNnwwLE09RyxBPTE2KyhsfD0wKXwwO2Rve2lmKDYhPSgwfHVlWzExMisoMHxhW0E+PjJdKT4+MF0pKXtpZigwPT0oMHwo''@;'; put 'put ''Zj0wfGFbNDcyMDNdKSl8fDA9PSgwfHVlWygwfEZvKGwsZikpPj4wXSkpe2lmKCEoZj0wfGFbNDcyMDJdKSl7Zj0wO2JyZWFrfWlmKCEoMHx1ZVsoMHxGbyhsLGYpKT4+MF0pKXtmPTA7YnJlYWt9fWlmKFI9MHxhW0E+PjJdLFI9MHxhWygoYz1jPDwyND4+MjQ9PTApP1IrMTA0fDA6UisxMDB8''@;'; put 'put ''MCk+PjJdLGY9MHxRMyhsKSl7Yj0wfGFbZj4+Ml07ZG97aWYoYyl7aWYoMHxhW2IrOD4+Ml0pe3c9K19bKGY9MHxhW2I+PjJdKT4+M10sbT0rX1tiKzE2Pj4zXSxmPWYrOHwwLHA9K19bYisyND4+M107YnJlYWt9Zm9yKG09K19bKGY9MHxhW2I+PjJdKT4+M10scD0rX1tmKzg+PjNdLGY9MDs0''@;'; put 'put ''IT0oMHxmKTspYVsoTT1EKyhmPDw0KXwwKT4+Ml09YVsoQT0oMHxhW2I+PjJdKSsoZjw8NCl8MCk+PjJdLGFbTSs0Pj4yXT1hW0ErND4+Ml0sYVtNKzg+PjJdPWFbQSs4Pj4yXSxhW00rMTI+PjJdPWFbQSsxMj4+Ml0sZj1mKzF8MDt3dShrLEQsMywuMSwwLDApLHc9K19baz4+M10sZj1rKzh8''@;'; put 'put ''MH1lbHNle2lmKEE9YisoNDgqKGM9KDB8YVtmKzQ+PjJdKS0xfDApfDApfDAsMHxhW2IrKDQ4KmN8MCkrMTI+PjJdKXt3PStfWyhEPTB8YVtBPj4yXSkrKChmPSgwfGFbYisoNDgqY3wwKSs0Pj4yXSktMXwwKTw8NCk+PjNdLG09K19bYisoNDgqY3wwKSszMj4+M10sZj1EKyhmPDw0KSs4fDAs''@;'; put 'put ''cD0rX1tiKyg0OCpjfDApKzQwPj4zXTticmVha31mb3IobT0rX1soaz0wfGFbQT4+Ml0pKygoZj0oMHxhWyhjPWIrKDQ4KmN8MCkrNHwwKT4+Ml0pLTF8MCk8PDQpPj4zXSxwPStfW2srKGY8PDQpKzg+PjNdLGY9MDs0IT0oMHxmKTspYVsoaz1EKyhmPDw0KXwwKT4+Ml09YVsoYj0oMHxhW0E+''@;'; put 'put ''PjJdKSsoZistNCsoMHxhW2M+PjJdKTw8NCl8MCk+PjJdLGFbays0Pj4yXT1hW2IrND4+Ml0sYVtrKzg+PjJdPWFbYis4Pj4yXSxhW2srMTI+PjJdPWFbYisxMj4+Ml0sZj1mKzF8MDt3dShNLEQsMywuOSwwLDApLHc9K19bTT4+M10sZj1NKzh8MH19d2hpbGUoMCk7Sz0rcTIoKygrX1tmPj4z''@;'; put 'put ''XS1wKSwrKHctbSkpLEs9LjAxNzQ1MzI5MjUxOTk0MzI5NSorY2wobCwwfGFbNDcyMDNdLC0yNSwtMTgwKStLLHc9MTAqK2NsKGwsMHxhWzQ3MjAyXSwxLDApLF9bUis1Nj4+M109dyorbGEoK0spK20sX1tSKzY0Pj4zXT0rSWEoK0spKncrcCx1ZVtSKzgxPj4wXT0xLGY9MX1lbHNlIGY9MH1l''@;'; put 'put ''bHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gb2U9RywwfGZ9ZnVuY3Rpb24gUTMobCl7dmFyIHAsQSxjPTAsZj0wLG09MDtmb3IoQT1vZSxvZT1vZSsxNnwwLHA9QSxjPWx8PTA7ISgwfChjPTB8YVs4KyhmPTB8YVtjKzE2Pj4yXSk+PjJdKSk7KXtpZighKDB8dWVbZisxMTI+PjBdKSl7bT01O2Jy''@;'; put 'put ''ZWFrfWM9MHxhW2YrMTE2Pj4yXX1yZXR1cm4gNT09KDB8bSkmJihtPTB8JHIoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pLGM9MHwkcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pLGFbcD4+Ml09bSxhW3ArND4+Ml09YyxYcigxLDEwNjU3''@;'; put 'put ''OSxwKSxjPTApLG9lPUEsMHxjfWZ1bmN0aW9uIFpOKGwsYyxmKXtsfD0wO3ZhciBwLG0sQSx3LGIsayxNLEQsUixLLHBlLG1lLGJlLEc9MDtwZT1vZSxvZT1vZSs5NnwwLGs9cGUrODB8MCxNPXBlKzY0fDAsRD1wZSs0OHwwLEs9cGUsYj0wfFR0WzEzNisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4x''@;'; put 'put ''XSxmdW5jdGlvbiBvbGUobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxBLHcscD0wLGI9MCxrPTAsTT0wO3c9b2Usb2U9b2UrMzJ8MCxtPXcscD0wfGFbKGs9MHxhWyhsfD0wKT4+Ml0pPj4yXSxiPTB8YVtrKzg+PjJdLGFbKEE9dysxNnwwKT4+Ml09YVsoTT1rKzE2fDApPj4yXSxhW0ErND4+Ml09''@;'; put 'put ''YVtNKzQ+PjJdLGFbQSs4Pj4yXT1hW00rOD4+Ml0sYVtBKzEyPj4yXT1hW00rMTI+PjJdLGFbbT4+Ml09YVsoaz1rKzMyfDApPj4yXSxhW20rND4+Ml09YVtrKzQ+PjJdLGFbbSs4Pj4yXT1hW2srOD4+Ml0sYVttKzEyPj4yXT1hW2srMTI+PjJdLGI/KGFbYz4+Ml09YVtBPj4yXSxhW2MrND4+''@;'; put 'put ''Ml09YVtBKzQ+PjJdLGFbYys4Pj4yXT1hW0ErOD4+Ml0sYVtjKzEyPj4yXT1hW0ErMTI+PjJdKTooYVtjPj4yXT1hW3A+PjJdLGFbYys0Pj4yXT1hW3ArND4+Ml0sYVtjKzg+PjJdPWFbcCs4Pj4yXSxhW2MrMTI+PjJdPWFbcCsxMj4+Ml0pLHA9MHxhWyhiPTB8YVtsPj4yXSkrKDQ4KihrPSgw''@;'; put 'put ''fGFbbCs0Pj4yXSktMXwwKXwwKT4+Ml0sbD0wfGFbYisoNDgqa3wwKSs0Pj4yXSxNPTB8YVtiKyg0OCprfDApKzEyPj4yXSxhW0E+PjJdPWFbKGM9YisoNDgqa3wwKSsxNnwwKT4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4y''@;'; put 'put ''XSxhW20+PjJdPWFbKGs9YisoNDgqa3wwKSszMnwwKT4+Ml0sYVttKzQ+PjJdPWFbays0Pj4yXSxhW20rOD4+Ml09YVtrKzg+PjJdLGFbbSsxMj4+Ml09YVtrKzEyPj4yXSxNPyhhW2Y+PjJdPWFbbT4+Ml0sYVtmKzQ+PjJdPWFbbSs0Pj4yXSxhW2YrOD4+Ml09YVttKzg+PjJdLGFbZisxMj4+''@;'; put 'put ''Ml09YVttKzEyPj4yXSk6KGFbZj4+Ml09YVsoTT1wKyhsKy0xPDw0KXwwKT4+Ml0sYVtmKzQ+PjJdPWFbTSs0Pj4yXSxhW2YrOD4+Ml09YVtNKzg+PjJdLGFbZisxMj4+Ml09YVtNKzEyPj4yXSksb2U9d30oMHxhWzgrKDB8YVsoYz0xNisoZnw9MCl8MCk+PjJdKT4+Ml0sUj1wZSszMnwwLEc9''@;'; put 'put ''cGUrMTZ8MCksbWU9KHA9K19bUj4+M10pLShtPStfW0c+PjNdKSxiZT0oQT0rX1tSKzg+PjNdKS0odz0rX1tHKzg+PjNdKTtlOmRve2lmKGJlKmJlK21lKm1lPDFlLTYpYVtEPj4yXT1hW1I+PjJdLGFbRCs0Pj4yXT1hW1IrND4+Ml0sYVtEKzg+PjJdPWFbUis4Pj4yXSxhW0QrMTI+PjJdPWFb''@;'; put 'put ''UisxMj4+Ml07ZWxzZSBzd2l0Y2goMTQmYil7Y2FzZSA0OmNhc2UgMTA6X1tNPj4zXT0uNSoobStwKSxfW00rOD4+M109LjUqKHcrQSksRz0wfGFbOCsoMHxhW2M+PjJdKT4+Ml0sYVtrPj4yXT1hW00+PjJdLGFbays0Pj4yXT1hW00rND4+Ml0sYVtrKzg+PjJdPWFbTSs4Pj4yXSxhW2srMTI+''@;'; put 'put ''PjJdPWFbTSsxMj4+Ml0sSk4oSyxHLGspLGFbRD4+Ml09YVtLPj4yXSxhW0QrND4+Ml09YVtLKzQ+PjJdLGFbRCs4Pj4yXT1hW0srOD4+Ml0sYVtEKzEyPj4yXT1hW0srMTI+PjJdO2JyZWFrIGU7ZGVmYXVsdDphbGUoRCwwfGFbOCsoMHxhW2M+PjJdKT4+Ml0sUixHKTticmVhayBlfX13aGls''@;'; put 'put ''ZSgwKTthW2w+PjJdPWFbRD4+Ml0sYVtsKzQ+PjJdPWFbRCs0Pj4yXSxhW2wrOD4+Ml09YVtEKzg+PjJdLGFbbCsxMj4+Ml09YVtEKzEyPj4yXSxvZT1wZX1mdW5jdGlvbiBhbGUobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG1lLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAs''@;'; put 'put ''Rz0wLEs9MCxwZT0wLGJlPTA7Zm9yKG1lPTB8YVs0KyhjfD0wKT4+Ml0sQT0wLG09MDshKCgwfG0pPj0oMHxtZSkpOyl7Zm9yKGs9MHxhWyhNPTB8YVtjPj4yXSkrKDQ4Km18MCk+PjJdLE09MHxhW00rKDQ4Km18MCkrND4+Ml0sdz0zLGI9MDshKCgwfHcpPj0oMHxNKSk7KXBlPStfW2srKGI8''@;'; put 'put ''PDQpPj4zXS0rX1trKyh3PDw0KT4+M10sSz0rX1trKyhiPDw0KSs4Pj4zXS0rX1trKyh3PDw0KSs4Pj4zXSx3PXcrM3wwLGI9YiszfDAsQT0rRjAoKyhLKksrcGUqcGUpKStBO209bSsxfDB9TT0wLEEqPS41O2U6Zm9yKDs7KXtpZigoMHxNKT49KDB8bWUpKXttPTE1O2JyZWFrfWZvcihiPTB8''@;'; put 'put ''YVsoaz0wfGFbYz4+Ml0pKyg0OCpNfDApPj4yXSxrPTB8YVtrKyg0OCpNfDApKzQ+PjJdLG09Myx3PTA7ISgoMHxtKT49KDB8aykpOyl7aWYoKHBlPStGMCgrKChiZT0oSz0rX1tiKyh3PDw0KSs4Pj4zXSktKEc9K19bYisobTw8NCkrOD4+M10pKSpiZSsocGU9KEQ9K19bYisodzw8NCk+PjNd''@;'; put 'put ''KS0oUj0rX1tiKyhtPDw0KT4+M10pKSpwZSkpKT49QSl7bT0xMjticmVhayBlfW09bSszfDAsdz13KzN8MCxBLT1wZX1NPU0rMXwwfWlmKDEyPT0oMHxtKSlyZXR1cm4gX1tmPj4zXT1ELF9bZis4Pj4zXT1LLF9bcD4+M109UixfW3ArOD4+M109RyxfW2w+PjNdPSgoYmU9cGUtQSkqRCtSKkEp''@;'; put 'put ''L3BlLHZvaWQoX1tsKzg+PjNdPShiZSpLK0cqQSkvcGUpOzE1PT0oMHxtKSYmQnIoMTM4NzEyLDEwNjUxNCwxMzE2LDEwNjY0MSl9ZnVuY3Rpb24gTnkobCxjLGYscCl7d2soY3w9MCl9ZnVuY3Rpb24gbGxlKGwsYyxmLHAsbSl7Y3w9MCxmPStmLHB8PTAsbXw9MDt2YXIgR2UsbHQsTXQsa3Qs''@;'; put 'put ''YXQsRXQsWnQsdXQsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCx3dD0wO2ZvcihadD0wfGZ1bmN0aW9uIHNsZShsKXtsfD0wO3ZhciBtLEEsdyxiLGssTSxELFIsRyxLLHBlLGM9MCxm''@;'; put 'put ''PTAscD0wLG1lPTAsYmU9MCxPZT0wO3BlPW9lLG9lPW9lKzE0NHwwLGI9cGUrMTI4fDAsdz1wZSsxMTJ8MCxrPXBlKzk2fDAsTT1wZSs2NHwwLEQ9cGUsUj1wZSs4MHwwLEc9MHxmdW5jdGlvbiB1bGUoKXt2YXIgbDtyZXR1cm4gbD0wfG1yKDEyKSxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MmUz''@;'; put 'put ''LGFbbD4+Ml09MHxtcigxMjhlMyksMHxsfSgpLEs9MHxhW2wrND4+Ml0sYVtiPj4yXT1hWyhtPTB8YVtsPj4yXSk+PjJdLGFbYis0Pj4yXT1hW20rND4+Ml0sYVtiKzg+PjJdPWFbbSs4Pj4yXSxhW2IrMTI+PjJdPWFbbSsxMj4+Ml0sUVEoRyxiLDApLGFbKEE9RCs0OHwwKT4+Ml09YVttPj4y''@;'; put 'put ''XSxhW0ErND4+Ml09YVttKzQ+PjJdLGFbQSs4Pj4yXT1hW20rOD4+Ml0sYVtBKzEyPj4yXT1hW20rMTI+PjJdLGY9MCxjPTA7ZTpmb3IoO3A9ZiszfDAsISgoMHxwKT49KDB8SykpOyl7Zm9yKGFbRD4+Ml09YVtBPj4yXSxhW0QrND4+Ml09YVtBKzQ+PjJdLGFbRCs4Pj4yXT1hW0ErOD4+Ml0s''@;'; put 'put ''YVtEKzEyPj4yXT1hW0ErMTI+PjJdLGw9MTs0IT0oMHxsKTspYVsobWU9RCsobDw8NCl8MCk+PjJdPWFbKGJlPW0rKGwrZjw8NCl8MCk+PjJdLGFbbWUrND4+Ml09YVtiZSs0Pj4yXSxhW21lKzg+PjJdPWFbYmUrOD4+Ml0sYVttZSsxMj4+Ml09YVtiZSsxMj4+Ml0sbD1sKzF8MDtmb3IoYVtr''@;'; put 'put ''Pj4yXT1hW0Q+PjJdLGFbays0Pj4yXT1hW0QrND4+Ml0sYVtrKzg+PjJdPWFbRCs4Pj4yXSxhW2srMTI+PjJdPWFbRCsxMj4+Ml0sbD0xOzspe2lmKDIxPT0oMHxsKSl7Zj1wO2NvbnRpbnVlIGV9d3UoUixELDMsLjA1KisoMHxsKSwwLDApLGFbTT4+Ml09YVtSPj4yXSxhW00rND4+Ml09YVtS''@;'; put 'put ''KzQ+PjJdLGFbTSs4Pj4yXT1hW1IrOD4+Ml0sYVtNKzEyPj4yXT1hW1IrMTI+PjJdLGFbdz4+Ml09YVtrPj4yXSxhW3crND4+Ml09YVtrKzQ+PjJdLGFbdys4Pj4yXT1hW2srOD4+Ml0sYVt3KzEyPj4yXT1hW2srMTI+PjJdLGFbYj4+Ml09YVtSPj4yXSxhW2IrND4+Ml09YVtSKzQ+PjJdLGFb''@;'; put 'put ''Yis4Pj4yXT1hW1IrOD4+Ml0sYVtiKzEyPj4yXT1hW1IrMTI+PjJdLE9lPStjbGUodyxiKStjLGFbYj4+Ml09YVtNPj4yXSxhW2IrND4+Ml09YVtNKzQ+PjJdLGFbYis4Pj4yXT1hW00rOD4+Ml0sYVtiKzEyPj4yXT1hW00rMTI+PjJdLFFRKEcsYixPZSksYVtrPj4yXT1hW00+PjJdLGFbays0''@;'; put 'put ''Pj4yXT1hW00rND4+Ml0sYVtrKzg+PjJdPWFbTSs4Pj4yXSxhW2srMTI+PjJdPWFbTSsxMj4+Ml0sbD1sKzF8MCxjPU9lfX1yZXR1cm4gZnVuY3Rpb24gZmxlKGwpe3ZhciBjOygwfGFbOCsobHw9MCk+PjJdKT4oMHwoYz0wfGFbbCs0Pj4yXSkpJiYoYVtsPj4yXT0wfGwwKDB8YVtsPj4yXSxj''@;'; put 'put ''PDw2KSl9KEcpLG9lPXBlLDB8R30obHw9MCksR2U9K19bKHV0PTB8YVtadD4+Ml0pKygoYXQ9KEV0PTB8YVtadCs0Pj4yXSktMXwwKTw8NikrMTY+PjNdLGx0PSsoMHxFdCksTXQ9Mj09KDB8bSksa3Q9MCE9KDB8cCksRD0wLHc9MCxBPTAsaz0wLE09MDshKCgwfEQpPj0oMHxFdCkpOyl7bD1+''@;'; put 'put ''fitiaygrKEQrLTF8MCksbHQpLHd0PX5+K2JrKCsoMHwocnQ9RCsxfDApKSxsdCksYmU9K19bKG1lPXV0KyhEPDw2KSsxNnwwKT4+M10sT2U9dXQrKEQ8PDYpKzI0fDAsTGU9dXQrKEQ8PDYpKzMyfDAsQmU9dXQrKEQ8PDYpKzQwfDAsSGU9dXQrKEQ8PDYpKzQ4fDAsamU9dXQrKEQ8PDYpKzU2''@;'; put 'put ''fDAsYj0rWVEoK19bdXQrKHd0PDw2KSs4Pj4zXS0oaz0rX1soZXQ9dXQrKEQ8PDYpKzh8MCk+PjNdKSwrX1t1dCsod3Q8PDYpPj4zXS0oTT0rX1soUj11dCsoRDw8Nil8MCk+PjNdKSksSz0rWVEoK19bdXQrKGw8PDYpKzg+PjNdLWssK19bdXQrKGw8PDYpPj4zXS1NKSxwZT0rTWZlWzcmY10o''@;'; put 'put ''YmUsR2UsZiksbD0wPT0oMHxEKTtkb3tpZihsfCgwfEQpPT0oMHxhdCkpe2lmKGwpe2lmKEE9YisxLjU3MDc5NjMyNjc5NDg5NjYsIU10KXtsPTAsRz1BLHc9cGU7YnJlYWt9bD0wLEc9QSx3PXBlLGstPStJYSgrYikqcGUsTS09K2xhKCtiKSpwZTticmVha31pZihBPUsrLTEuNTcwNzk2MzI2''@;'; put 'put ''Nzk0ODk2NiwhTXQpe2w9MCxHPUEsdz1wZTticmVha31sPTAsRz1BLHc9cGUsay09K0lhKCtLKSpwZSxNLT0rbGEoK0spKnBlO2JyZWFrfWI9KEc9MS41NzA3OTYzMjY3OTQ4OTY2LS41KigoRz1iLUspPDA/Rys2LjI4MzE4NTMwNzE3OTU4NjpHKSkrKEE9YisxLjU3MDc5NjMyNjc5NDg5NjYp''@;'; put 'put ''LGt0fCh3PTA9PSh3PStsYSgrRykpPzA6cGUvdyk+MTAqcGU/KEs9K2JrKEsrLTEuNTcwNzk2MzI2Nzk0ODk2Niw2LjI4MzE4NTMwNzE3OTU4NiksbD0xLEc9K2JrKEEsNi4yODMxODUzMDcxNzk1ODYpLHc9cGUsQT1LKToobD0wLEc9YixBPWIpfXdoaWxlKDApO19bUj4+M109TSxfW2V0Pj4z''@;'; put 'put ''XT1rLF9bbWU+PjNdPWJlLHVlW09lPj4wXT0xMDgsX1tMZT4+M109QSxfW0JlPj4zXT13LGFbSGU+PjJdPWwsX1tqZT4+M109RyxEPXJ0fWZvcihSPTB8bXIoMTIpLGw9MDshKCgwfGwpPj0oMHxFdCkpOylNPStfW3V0KyhsPDw2KT4+M10saz0rX1t1dCsobDw8NikrOD4+M10sdz0rX1t1dCso''@;'; put 'put ''bDw8NikrNDA+PjNdLHd0PTB8YVt1dCsobDw8NikrNDg+PjJdLGI9K19bdXQrKGw8PDYpKzU2Pj4zXSxXNyhSLCtsYSgrKEE9K19bdXQrKGw8PDYpKzMyPj4zXSkpKncrTSwrSWEoK0EpKncrayksMHx3dCYma0QoTSxrLHcsMSxBLGIscCxSKSxsPWwrMXwwO2ZvcihiPUErMy4xNDE1OTI2NTM1''@;'; put 'put ''ODk3OTMsKEQ9MT09KDB8bSkpP3pOKFIsTSxrLHcsQSxiKTooVzcoUiwrbGEoK2IpKncrTSwrSWEoK2IpKncrayksQT1iKSxsPUV0Ky0yfDAsYj1NOyEoKDB8bCk8PS0xKTspTT0rX1t1dCsobDw8Nik+PjNdLGs9K19bdXQrKGw8PDYpKzg+PjNdLHc9K19bdXQrKGw8PDYpKzQwPj4zXSx3dD0w''@;'; put 'put ''fGFbdXQrKGw8PDYpKzQ4Pj4yXSxBPStfW3V0KyhsPDw2KSszMj4+M10rMy4xNDE1OTI2NTM1ODk3OTMsVzcoUiwrbGEoKyhiPStfW3V0KyhsPDw2KSs1Nj4+M10rMy4xNDE1OTI2NTM1ODk3OTMpKSp3K00sK0lhKCtiKSp3K2spLDB8d3QmJmtEKE0sayx3LDAsQSxiLHAsUiksbD1sKy0xfDAs''@;'; put 'put ''Yj1NO3JldHVybiBEJiZ6TihSLGIsayx3LEEsQSszLjE0MTU5MjY1MzU4OTc5MyksZnVuY3Rpb24gVVEobCl7SHQoMHxhWyhsfD0wKT4+Ml0pLEh0KGwpfShadCksMHxSfWZ1bmN0aW9uIGJrKGwsYyl7dmFyIGY7cmV0dXJuIGY9KGw9K2wpLSt5YygrbC8oYz0rYykpKmMsKyghKGw8MCkmIShs''@;'; put 'put ''Pj1jKT9sOmYpfWZ1bmN0aW9uIFlRKGwsYyl7cmV0dXJuIDA9PShsPStsKSYwPT0oYz0rYyk/bD0wOihsPStxMigrbCwrYykpPj0wfHwobCs9Ni4yODMxODUzMDcxNzk1ODYpLCtsfWZ1bmN0aW9uIFc3KGwsYyxmKXtjPStjLGY9K2Y7dmFyIHA9MCxtPTA7KDB8KHA9MHxhWyhsfD0wKT4+Ml0p''@;'; put 'put ''KTwoMHxhWyhtPWwrNHwwKT4+Ml0pP209MHxhW2wrOD4+Ml06KGFbbT4+Ml09MmUzLG09MHxsMCgwfGFbKHA9bCs4fDApPj4yXSwzMmUzKSxhW3A+PjJdPW0scD0wfGFbbD4+Ml0pLGFbbD4+Ml09cCsxLF9bbSsocDw8NCk+PjNdPWMsX1ttKyhwPDw0KSs4Pj4zXT1mfWZ1bmN0aW9uIGtEKGws''@;'; put 'put ''YyxmLHAsbSxBLHcsYil7dmFyIGs7bD0rbCxjPStjLGY9K2YsbT0rbSxBPStBLHd8PTAsYnw9MCxrPShwPTA9PSgwfChwfD0wKSkpP206QTtkb3tpZigxPT0oMHx3KSl7aWYoKG09KG09KHA/QTptKS1rKTw9LjAwMTc0NTMyOTI1MTk5NDMyOTY/bSs2LjI4MzE4NTMwNzE3OTU4NjptKTwzLjE0''@;'; put 'put ''MTU5MjY1MzU4OTc5Myl7ek4oYixsLGMsZixtK2ssayk7YnJlYWt9VzcoYiwrbGEoK2spKmYrbCwrSWEoK2spKmYrbCk7YnJlYWt9VzcoYiwrbGEoK2spKmYrbCwrSWEoK2spKmYrbCl9d2hpbGUoMCl9ZnVuY3Rpb24gek4obCxjLGYscCxtLEEpe2M9K2MsZj0rZixwPStwLEE9K0E7dmFyIHc9''@;'; put 'put ''MCxiPTA7VzcobHw9MCwrbGEoKyhtPSttKSkqcCtjLCtJYSgrbSkqcCtmKTtlOmRve2lmKDAhPXApe2Zvcig7QT5tOylBKz0tNi4yODMxODUzMDcxNzk1ODY7Zm9yKEE9bS1BO0E+Ni4yODMxODUzMDcxNzk1ODY7KUErPS02LjI4MzE4NTMwNzE3OTU4Njtmb3IoQSo9LjA1MjYzMTU3ODk0NzM2''@;'; put 'put ''ODQyLHc9MTs7KXtpZigyMD09KDB8dykpYnJlYWsgZTtXNyhsLCtsYSgrKGI9bS1BKisoMHx3KSkpKnArYywrSWEoK2IpKnArZiksdz13KzF8MH19fXdoaWxlKDApfWZ1bmN0aW9uIFFRKGwsYyxmKXtjfD0wLGY9K2Y7dmFyIG0sQSx3LHA9MDsoMHwocD0wfGFbKHc9NCsobHw9MCl8MCk+PjJd''@;'; put 'put ''KSk8KDB8KEE9MHxhWyhtPWwrOHwwKT4+Ml0pKT9sPTB8YVtsPj4yXTooYVttPj4yXT1BPDwxLHA9MHxsMCgwfGFbbD4+Ml0sQTw8NyksYVtsPj4yXT1wLGw9cCxwPTB8YVt3Pj4yXSksX1tsKyhwPDw2KT4+M109K19bYz4+M10sX1tsKyhwPDw2KSs4Pj4zXT0rX1tjKzg+PjNdLGFbdz4+Ml09''@;'; put 'put ''cCsxLF9bbCsocDw8NikrMTY+PjNdPWZ9ZnVuY3Rpb24gY2xlKGwsYyl7dmFyIGYscDtyZXR1cm4rICtGMCgrKChwPStfWzgrKGx8PTApPj4zXS0rX1s4KyhjfD0wKT4+M10pKnArKGY9K19bbD4+M10tK19bYz4+M10pKmYpKX1mdW5jdGlvbiBHTihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFy''@;'; put 'put ''IEEsdyxiLE0scD0wLG09MCxrPTA7TT1vZSxvZT1vZSsxNnwwLGs9TSs4fDAsYj1NLGFbKEE9TSsxMnwwKT4+Ml09MCwodz0wfGFbZis0Pj4yXSl8fEJyKDEwNjY1OCwxMDY2NjksMjAzLDEwNjY4MCksKHA9MHxhW3c+PjJdKXx8QnIoMTA2Njk0LDEwNjY2OSwyMDYsMTA2NjgwKSwwfGFbKG09''@;'; put 'put ''dys4fDApPj4yXXx8KGFbbT4+Ml09MHxmdW5jdGlvbiBobGUobCl7bHw9MDt2YXIgYztyZXR1cm4gMCE9KDB8KGM9MHxhWzQ3MzAxXSkpJiYwPT0oMHxBMChjLGwpKT9sPTB8YVs0NzMxMF06KEh0KGMpLGFbNDczMDFdPTB8bmEobCksbD0wfGN3KDE4OTIwNCwyMjMzMiwzNSwzNiw5NSksYVs0''@;'; put 'put ''NzMxMF09bCksMHxsfShwKSksKDB8ZnVuY3Rpb24gcVIobCxjLGYpe3ZhciBwPTA7cmV0dXJuIDB8KDAhPSgwfChsPTB8YVsxNDgrKGx8PTApPj4yXSkpJiYwIT0oMHwocD0wfGFbbD4+Ml0pKT8wfFJpWzEyNyZwXShjfD0wLGZ8PTApOjApfShjLGYscD0wKSk8PDI0Pj4yNHx8ZnVuY3Rpb24g''@;'; put 'put ''ZGxlKGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09MCx3PTAsYj0wO2lmKGY9MHxhWyh3PTB8YVs0KyhsfD0wKT4+Ml0pPj4yXSxBPStfW3crMTY+PjNdLF9bKHc9bCszMnwwKT4+M109MCxfW2wrNDA+PjNdPTEuMipBLF9bbCsxNj4+M109MCxfW2wrMjQ+PjNdPS4xKkEsYVtsKzg+PjJdPTAs''@;'; put 'put ''YVtsKzEyPj4yXT0wLDB8aTQoZiwxMDY3NzEsNCk/MCE9KDB8aTQoZiwxMDY3NzYsNSkpJiYwIT0oMHxpNChmLDEwNjc4Miw5KSk/KG09NDI0OCxmPTEwNjc5Mik6KG09ODM0NCxmPTEwNjgyOCk6KG09NjI5NixmPTEwNjgwOSksMHxjJiYoYVtjPj4yXT1mKSwwfChmPTB8YVtsPj4yXSkpe2Zv''@;'; put 'put ''cihwPTA7KGw9MHx1ZVtmPj4wXSk8PDI0Pj4yNDspX1t3Pj4zXT1iPXArICtfW20rKCgyNTUmbCk8PDMpPj4zXSxmPWYrMXwwLHA9YjtfW3c+PjNdPXAqQX19KGYscCk7ZG97aWYoMHxwKXtpZihjPTB8YVsxNTcxMl0scD0wfGFbdz4+Ml0sbT0wfGFbQT4+Ml0pe2FbYj4+Ml09cCxhW2IrND4+''@;'; put 'put ''Ml09bSxUMChjLDEwNjcwNSxiKTticmVha31hW2s+PjJdPXAsVDAoYywxMDY3Mzcsayk7YnJlYWt9fXdoaWxlKDApO2FbbD4+Ml09YVsoaz1mKzMyfDApPj4yXSxhW2wrND4+Ml09YVtrKzQ+PjJdLGFbbCs4Pj4yXT1hW2srOD4+Ml0sYVtsKzEyPj4yXT1hW2srMTI+PjJdLG9lPU19ZnVuY3Rp''@;'; put 'put ''b24gWFEobCl7dmFyIGMsZjtyZXR1cm4gbHw9MCxjPTB8bXIoMTYpLGY9MHxtcigobD0oMHxsKT4yP2w6Mik8PDIpLGFbYz4+Ml09ZixhW2MrMTI+PjJdPWYsYVtjKzg+PjJdPWYsYVtjKzQ+PjJdPWYrKGw8PDIpLDB8Y31mdW5jdGlvbiBLUShsKXtIdCgwfGFbKGx8PTApPj4yXSksSHQobCl9''@;'; put 'put ''ZnVuY3Rpb24gX2sobCxjKXt2YXIgZixwO2N8PTAsYVsoZj0xMisobHw9MCl8MCk+PjJdPTQrKHA9MHxhW2Y+PjJdKSxhW3A+PjJdPWMsKDB8YVtmPj4yXSk+Pj4wPj0oMHxhW2wrND4+Ml0pPj4+MCYmKGFbZj4+Ml09YVtsPj4yXSl9ZnVuY3Rpb24gWU4obCl7dmFyIGYsYz0wLHA9MDtyZXR1''@;'; put 'put ''cm4oMHwoYz0wfGFbKGY9OCsobHw9MCl8MCk+PjJdKSkhPSgwfGFbbCsxMj4+Ml0pPyhhW2Y+PjJdPXA9Yys0fDAsYz0wfGFbYz4+Ml0scD4+PjA+PSgwfGFbbCs0Pj4yXSk+Pj4wJiYoYVtmPj4yXT1hW2w+PjJdKSk6Yz0wLDB8Y31mdW5jdGlvbiBlcyhsLGMsZixwKXtmfD0wLHB8PTA7dmFy''@;'; put 'put ''IG0sdyxBPTA7cmV0dXJuIHc9b2Usb2U9b2UrMTZ8MCxtPXcsMCE9KDB8KGN8PTApKSYmMCE9KDB8KEE9MHxGbyhsfD0wLGMpKSkmJjAhPSgwfHVlW0E+PjBdKSYmKGM9MHxQTChBLG0sMTApLGY9KDB8QSk9PSgwfGFbbT4+Ml0pP2Y6KDB8Yyk8KDB8cCk/cDpjKSxvZT13LDB8Zn1mdW5jdGlv''@;'; put 'put ''biBjbChsLGMsZixwKXtmPStmLHA9K3A7dmFyIG0sdyxBPTAsYj0wO3JldHVybiB3PW9lLG9lPW9lKzE2fDAsbT13LDAhPSgwfChsfD0wKSkmMCE9KDB8KGN8PTApKSYmMCE9KDB8KEE9MHxGbyhsLGMpKSkmJjAhPSgwfHVlW0E+PjBdKSYmKGI9K3QzKEEsbSksZj0oMHxBKT09KDB8YVttPj4y''@;'; put 'put ''XSk/ZjpiPHA/cDpiKSxvZT13LCtmfWZ1bmN0aW9uICRRKGwpe2x8PTA7dmFyIGM9MDtyZXR1cm4oYz0rX1syMzI5M10pPjB8fChjPTA9PShjPStjbChsLDB8c2kobCwwLDEwNzYzOCwwKSwtMSwwKSk/NzI6YyksK2N9ZnVuY3Rpb24gQTIobCxjLGYpe3JldHVybiBmfD0wLDAhPSgwfChsfD0w''@;'; put 'put ''KSkmMCE9KDB8KGN8PTApKSYmKGY9MHxGbyhsLGMpKSwwfGZ9ZnVuY3Rpb24gT2EobCxjLGYpe3JldHVybiAwIT0oMHwobD0wfEEyKGx8PTAsY3w9MCxmfD0wKSkpJiYwIT0oMHx1ZVtsPj4wXSkmJihmPWwpLDB8Zn1mdW5jdGlvbiBVTihsLGMsZil7cmV0dXJuIGx8PTAsZnw9MCwwfCgoY3w9''@;'; put 'put ''MCk/MHxyMSgwfEZvKGwsYykpOjI1NSZmKX1mdW5jdGlvbiByMShsKXtyZXR1cm4gMHxKNihsfD0wLDApfWZ1bmN0aW9uIEo2KGwsYyl7Y3w9MDt2YXIgZj0wO3JldHVybiAwIT0oMHwobHw9MCkpJiYoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0IT0wJiYoMCE9KDB8QTAobCwxMzczMDgpKSYmMCE9''@;'; put 'put ''KDB8QTAobCwxMDc2NDkpKT8wIT0oMHxBMChsLDEwNzY1MikpJiYwIT0oMHxBMChsLDEwNzY1NykpPygoZjw8MjQ+PjI0KS00OHwwKT4+PjA8MTAmJihjPTI1NSYoMHxlMyhsKSkpOmM9MTpjPTApLDB8Y31mdW5jdGlvbiBvMShsKXtsfD0wO2Zvcih2YXIgYz0wLGY9MDsoMHwoZj0wfGFbKGM9''@;'; put 'put ''MjIwKygwfGFbbCsxNj4+Ml0pfDApPj4yXSkpIT0oMHxsKSYwIT0oMHxmKTspKGw9MHxhWzIyMCsoMHxhW2YrMTY+PjJdKT4+Ml0pP2FbYz4+Ml09bDpsPWY7cmV0dXJuIDB8bH1mdW5jdGlvbiBNRChsLGMpe3ZhciBmPTAscD0wLG09MCxBPTAsdz0wO3JldHVybigwfChsfD0wKSkhPSgwfChj''@;'; put 'put ''fD0wKSkmJigwfGFbKHA9MjIwKyhmPTB8YVtsKzE2Pj4yXSl8MCk+PjJdP2w9MHxvMShsKTooYVtwPj4yXT1sLGFbZisyMTY+PjJdPTEpLDB8YVsocD0yMjArKGY9MHxhW2MrMTY+PjJdKXwwKT4+Ml0/KGM9Zj0wfG8xKGMpLGY9MHxhW2YrMTY+PjJdKTooYVtwPj4yXT1jLGFbZisyMTY+PjJd''@;'; put 'put ''PTEpLG09YysxNnwwLGFbKCh3PSgwfGFbMTIwKyhwPTB8YVsoQT1sKzE2fDApPj4yXSk+PjJdKT4oMHxhW2YrMTIwPj4yXSkpP3A6ZikrMjIwPj4yXT1sPXc/YzpsLGFbKHA9MjE2KygwfGFbKHc/bTpBKT4+Ml0pfDApPj4yXT0oMHxhW3A+PjJdKSsoMHxhWzIxNisoMHxhWyh3P0E6bSk+PjJd''@;'; put 'put ''KT4+Ml0pKSwwfGx9ZnVuY3Rpb24gcVEobCl7YVsyMTYrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT0xLGFbbCsyMjA+PjJdPTAsdWVbbCsxNTk+PjBdPTB9ZnVuY3Rpb24gQWxlKGwsYyl7aWYoY3w9MCwoMHxvMShsfD0wKSk9PSgwfGwpKXJldHVybiBhWzIyMCsobD0wfGFbbCsxNj4+Ml0p''@;'; put 'put ''Pj4yXT1jLHZvaWQoYVsoYz0yMTYrKDB8YVtjKzE2Pj4yXSl8MCk+PjJdPSgwfGFbYz4+Ml0pKygwfGFbbCsyMTY+PjJdKSk7QnIoMTA3NjY5LDEwNzY2MSwxOTQsMTA3Njg1KX1mdW5jdGlvbiBFRChsLGMpe3ZhciBmO2Y9NzIqK19bOCsoYz0wfGFbMTMyKygwfGFbMTYrKGN8PTApPj4yXSk+''@;'; put 'put ''PjJdKT4+M10sX1sobHw9MCk+PjNdPTcyKitfW2M+PjNdLF9bbCs4Pj4zXT1mfWZ1bmN0aW9uIHd1KGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwPStwLG18PTAsQXw9MDt2YXIgTSxELFIsdz0wLGI9MCxrPTAsRz0wO2ZvcihSPW9lLG9lPW9lKzU3NnwwLEQ9Uix3PTA7ISgoMHx3KT4o''@;'; put 'put ''MHxmKSk7KWFbKGs9RCsodzw8NCl8MCk+PjJdPWFbKGI9Yysodzw8NCl8MCk+PjJdLGFbays0Pj4yXT1hW2IrND4+Ml0sYVtrKzg+PjJdPWFbYis4Pj4yXSxhW2srMTI+PjJdPWFbYisxMj4+Ml0sdz13KzF8MDtmb3IoTT0xLXAsdz0xOyEoKDB8dyk+KDB8ZikpOyl7Zm9yKGI9Zi13fDAsaz13''@;'; put 'put ''Ky0xfDAsYz0wOyEoKDB8Yyk+KDB8YikpOylfW0QrKDk2Knd8MCkrKGM8PDQpPj4zXT0rX1tEKyg5NiprfDApKygoRz1jKzF8MCk8PDQpPj4zXSpwKyArX1tEKyg5NiprfDApKyhjPDw0KT4+M10qTSxfW0QrKDk2Knd8MCkrKGM8PDQpKzg+PjNdPStfW0QrKDk2Kmt8MCkrKEc8PDQpKzg+PjNd''@;'; put 'put ''KnArICtfW0QrKDk2Kmt8MCkrKGM8PDQpKzg+PjNdKk0sYz1HO3c9dysxfDB9ZTpkb3tpZigwfG0pZm9yKHc9MDs7KXtpZigoMHx3KT4oMHxmKSlicmVhayBlO2FbKEc9bSsodzw8NCl8MCk+PjJdPWFbKGs9RCsoOTYqd3wwKXwwKT4+Ml0sYVtHKzQ+PjJdPWFbays0Pj4yXSxhW0crOD4+Ml09''@;'; put 'put ''YVtrKzg+PjJdLGFbRysxMj4+Ml09YVtrKzEyPj4yXSx3PXcrMXwwfX13aGlsZSgwKTtlOmRve2lmKDB8QSlmb3Iodz0wOzspe2lmKCgwfHcpPigwfGYpKWJyZWFrIGU7YVsoRz1BKyh3PDw0KXwwKT4+Ml09YVsobT1EKyg5NiooZi13fDApfDApKyh3PDw0KXwwKT4+Ml0sYVtHKzQ+PjJdPWFb''@;'; put 'put ''bSs0Pj4yXSxhW0crOD4+Ml09YVttKzg+PjJdLGFbRysxMj4+Ml09YVttKzEyPj4yXSx3PXcrMXwwfX13aGlsZSgwKTthW2w+PjJdPWFbKEc9RCsoOTYqZnwwKXwwKT4+Ml0sYVtsKzQ+PjJdPWFbRys0Pj4yXSxhW2wrOD4+Ml09YVtHKzg+PjJdLGFbbCsxMj4+Ml09YVtHKzEyPj4yXSxvZT1S''@;'; put 'put ''fWZ1bmN0aW9uIHlsZShsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTA7Zj0wO2Rve2lmKHA9MTAyNCsoYz0wfGFbNDczMTVdKXwwLChjLWZ8MCk8MTAyND8oYVs0NzMxNV09cCxwPTB8bDAoMHxhWzQ3MzE2XSxwKSxhWzQ3MzE2XT1wLGM9MHxhWzQ3MzE1XSk6cD0wfGFbNDczMTZdLCEoYz0w''@;'; put 'put ''fG12KHArZnwwLGMtZnwwLGwpKSl7bT02O2JyZWFrfWY9KDB8em8oYykpK2Z8MCxjPTB8YVs0NzMxNl19d2hpbGUoMTAhPSgwfHVlW2MrKGYrLTEpPj4wXSkpO3JldHVybiA2PT0oMHxtKSYmKGM9MHxhWzQ3MzE2XSksMHwoKDB8Zik+MD9jOjApfWZ1bmN0aW9uIHhEKGwpe2x8PTA7dmFyIHAs''@;'; put 'put ''Yz0wLGY9MDtwPW9lLG9lPW9lKzE2fDA7ZG97aWYoMCE9KDB8bCkmJjAhPSgwfHVlW2w+PjBdKSl7aWYoZj0wfGFbNDczMThdLCgwfGFbNDczMTddKT09KDB8KGM9MHxhWzQ3MTMzXSkpKWM9ZjtlbHNle2lmKGYmJihIdCgwfGFbZj4+Ml0pLEh0KDB8YVs0NzMxOF0pLGFbNDczMThdPTAsYz0w''@;'; put 'put ''fGFbNDcxMzNdKSxhWzQ3MzE3XT1jLCEoYyYmMHx1ZVtjPj4wXSkpYnJlYWs7Yz0wfGVKKGMpLGFbNDczMThdPWN9aWYoISg0NyE9KDB8dWVbbD4+MF0pJjAhPSgwfGMpKSlicmVhaztsPTB8d2xlKGMsMHxhWzQ3MzE5XSxsKTticmVha31sPTB9d2hpbGUoMCk7cmV0dXJuIG9lPXAsMHxsfWZ1''@;'; put 'put ''bmN0aW9uIGVKKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcihwPTAsbT0wLEE9MCxjPTB8bmEobHw9MCksZj0wO2M9MHx2dihjLDEwNzk4NCk7KWw9OCsoQTw8Mil8MCxsPW0/MHxsMChmLGwpOjB8UW4obCksYVtsKyhBPDwyKT4+Ml09YyxwPXA+Pj4wPihtPTB8em8oYykpPj4+MD9w''@;'; put 'put ''Om0sbT1sLEE9QSsxfDAsYz0wLGY9bDtyZXR1cm4gYVttKyhBPDwyKT4+Ml09MCxhWzQ3MzE5XT1wLDB8bX1mdW5jdGlvbiB3bGUobCxjLGYpe2x8PTA7dmFyIHAsQSxtPTAsdz0wO2ZvcihBPW9lLG9lPW9lKzE2fDAscD1BLGFbNDczMjBdPTB8WmEodz0wfGFbNDczMjBdLDIrKGN8PTApKygw''@;'; put 'put ''fHpvKGZ8PTApKXwwKTs7KXtpZighKGM9MHxhW2w+PjJdKSl7bD0wO2JyZWFrfWlmKHc9MHxhWzQ3MzIwXSxhW3A+PjJdPWMsYVtwKzQ+PjJdPTEwNzk4MixhW3ArOD4+Ml09Zixhbyh3LDEwNzk3NSxwKSwhKDB8dmNlKDB8YVs0NzMyMF0sNCkpKXttPTQ7YnJlYWt9bD1sKzR8MH1yZXR1cm4g''@;'; put 'put ''ND09KDB8bSkmJihsPTB8YVs0NzMyMF0pLG9lPUEsMHxsfWZ1bmN0aW9uIFFOKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIG0scD0wLEE9MDtmb3IobT0wPT0oMHwobHw9MCkpLHA9MDsoQT0wfGFbYysocDw8Mik+PjJdKSYmKG18fCgwfHVlW2w+PjBdKSE9KDB8dWVbQT4+MF0pfHwwIT0oMHxaaShs''@;'; put 'put ''LEEpKSk7KXA9cCsxfDA7cmV0dXJuIDB8YVtmKyhwPDwyKT4+Ml19ZnVuY3Rpb24gSk4obCxjLGYpe2x8PTA7dmFyIFIsT2UsTGUsQmUsSGUsamUsZXQscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLHJ0PTAsR2U9MDtmb3IoZXQ9b2Usb2U9''@;'; put 'put ''b2UrODB8MCxIZT1ldCsxNnwwLGplPWV0LE9lPTB8YVs0KyhjfD0wKT4+Ml0sTGU9MHxhW2M+PjJdLEJlPTgrKGZ8PTApfDAsbT0wLHA9LTEsQT0xZTM4LGM9LTE7ISgoMHxtKT49KDB8T2UpKTspe2ZvcihtZT0wfGFbTGUrKDQ4Km18MCk+PjJdLGJlPTB8YVtMZSsoNDgqbXwwKSs0Pj4yXSxw''@;'; put 'put ''ZT0wOyEoKDB8cGUpPj0oMHxiZSkpOylHZT0ocnQ9LTE9PSgwfHApfChLPShHPStfW21lKyhwZTw8NCkrOD4+M10tK19bQmU+PjNdKSpHKyhLPStfW21lKyhwZTw8NCk+PjNdLStfW2Y+PjNdKSpLKTxBKT9wZTpwLHBlPXBlKzF8MCxjPXJ0P206YyxwPUdlLEE9cnQ/SzpBO209bSsxfDB9Zm9y''@;'; put 'put ''KG09MHxhW0xlKyg0OCpjfDApPj4yXSxwPShwPXArKCgoMHxwKT09KCgwfGFbTGUrKDQ4KmN8MCkrND4+Ml0pLTF8MCkpPDwzMT4+MzEpfDApLSgoMHxwKSUzfDApfDAsYz0wOzQhPSgwfGMpOylfW0hlKyhjPDw0KT4+M109K19bbSsoKEdlPWMrcHwwKTw8NCk+PjNdLF9bSGUrKGM8PDQpKzg+''@;'; put 'put ''PjNdPStfW20rKEdlPDw0KSs4Pj4zXSxjPWMrMXwwO2ZvcihjPWplKzh8MCxBPTEsdz0wLGI9KEQ9K19bSGUrNTY+PjNdLShSPStfW0JlPj4zXSkpKkQrKGI9K19bSGUrNDg+PjNdLShLPStfW2Y+PjNdKSkqYixrPShHPStfW0hlKzg+PjNdLVIpKkcrKGs9K19bSGU+PjNdLUspKms7d3UoamUs''@;'; put 'put ''SGUsMyxHPS41KihBK3cpLDAsMCksTT0rX1tqZT4+M10sRD0rX1tjPj4zXSwhKCtlbygrKGstYikpPDF8fCtlbygrKEEtdykpPDFlLTUpOylEPShELT1SKSpEKyhNLT1LKSpNLEE9KEdlPWs8Yik/RzpBLHc9R2U/dzpHLGI9R2U/RDpiLGs9R2U/azpEO19bbD4+M109TSxfW2wrOD4+M109RCxv''@;'; put 'put ''ZT1ldH1mdW5jdGlvbiBWeShsKXt2YXIgZixwLG0sYixjPTAsQT0wLHc9MCxrPTA7Yz0rY2wobHw9MCwwfGFbNDcxNDZdLC43NSwuMDEpLF9bMzIrKDB8YVsobT1sKzE2fDApPj4yXSk+PjNdPWMsYz0rY2wobCwwfGFbNDcxNDVdLC41LC4wMiksX1s0MCsoMHxhW20+PjJdKT4+M109YyxrPTB8''@;'; put 'put ''ZnVuY3Rpb24gZ0QobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MDswfHhEKDB8TGkoY3w9MCwxMDU1MjYpKT8xMDE9PSgwfHVlW2w+PjBdKSYmMD09KDB8WmkobCwxMDU2ODUpKT8oYz0xMDEsbT02KToobD0xMDU1MTksbT00KTptPTQsND09KDB8bSkmJigoYz0wfHVlW2w+PjBdKTw8MjQ+PjI0''@;'; put 'put ''PT05OT8wfFppKGwsMTA1NTE5KT8oYz05OSxtPTYpOm09MTE6bT02KTtlOmRve2lmKDY9PSgwfG0pKWZvcihmPTIwODQ4Ozspe2lmKCEocD0wfGFbZj4+Ml0pKXttPTExO2JyZWFrIGV9aWYoKDB8dWVbcD4+MF0pPT1jPDwyND4+MjQmJjA9PSgwfFppKHAsbCkpKXtsPWY7YnJlYWsgZX1mPWYr''@;'; put 'put ''MTZ8MH19d2hpbGUoMCk7cmV0dXJuIDExPT0oMHxtKSYmKGw9MHxmdW5jdGlvbiBGYWUobCl7dmFyIG0sQSxjPTAsZj0wLHA9MDtpZihBPW9lLG9lPW9lKzE2fDAsbT1BLCEoYz0wfEJOKGx8PTApKSl7YVs0NzI4NF09Yz0xKyhwPTB8YVs0NzI4NF0pfDAsYz0oZj0wfGFbNDcyODNdKT8wfGww''@;'; put 'put ''KGYsYzw8Mik6MHxRbihjPDwyKSxhWzQ3MjgzXT1jLGM9MHxtcigxNiksYVsoMHxhWzQ3MjgzXSkrKHA8PDIpPj4yXT1jLGFbYz4+Ml09YVs1MjEyXSxhW2MrND4+Ml09YVs1MjEzXSxhW2MrOD4+Ml09YVs1MjE0XSxhW2MrMTI+PjJdPWFbNTIxNV0sZj0wfG5hKGwpLGFbYz4+Ml09Zjtkb3tp''@;'; put 'put ''Zig5OT09KDB8dWVbbD4+MF0pJiYwPT0oMHxaaShsLDEwNTUxOSkpKXtmPTE7YnJlYWt9YVttPj4yXT1hWzUyMTJdLGFbbSs0Pj4yXT1mLFhyKDAsMTA1NjkwLG0pLGY9MH13aGlsZSgwKTt1ZVtjKzEyPj4wXT1mfXJldHVybiBvZT1BLDB8Y30obCkpLDB8bH0oMHxPYShsLDB8YVs0NzE0N10s''@;'; put 'put ''MTA3OTg2KSxsKSxhWzgrKDB8YVttPj4yXSk+PjJdPWssaz0wfEZvKGwsMHxhWzQ3MTU0XSksYz0rY2wobCwwfGFbNDcxNTBdLDE0LDEpLGY9MHxPYShsLDB8YVs0NzE1MV0sMTA3OTk0KSxwPTB8T2EobCwwfGFbNDcxNTJdLDEzNzMxNCksQT0wIT0oMHxNbyhrKSksQT0wfGFwKGwsaywoMj09''@;'; put 'put ''KDB8WjUobCkpPzQ6MCl8KEE/MjowKSxjLGYscCksYVsxMDQrKDB8YVttPj4yXSk+PjJdPUEsMHwoQT0wfGFbNDcxNTVdKSYmMHwodz0wfEZvKGwsQSkpJiYwfHVlW3c+PjBdJiYoaz0wfGFwKGwsdywoaz0wIT0oMHxNbyh3KSkpPzI6MCxjLGYscCksYVsxMDgrKDB8YVttPj4yXSk+PjJdPWss''@;'; put 'put ''az0xMTMrKDB8YVsxNisoMHxmcihsKSk+PjJdKXwwLHVlW2s+PjBdPTE2fHVlW2s+PjBdKSxiPTI1NSYoMHxlcyhsLDB8YVs0NzE1OF0sMCwwKSksdWVbMTQ0KyhrPTB8YVttPj4yXSk+PjBdPWIsbm9bMTI3JmFbYVs0KygwfGFbays4Pj4yXSk+PjJdPj4yXV0obCl9ZnVuY3Rpb24gWTcobCl7''@;'; put 'put ''dmFyIGssTSxSLEsscGUsYmUsT2UsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxHPTAsbWU9MDtPZT1vZSxvZT1vZSsxMTJ8MCxrPU9lKzk2fDAsTT1PZSs4MHwwLHBlPU9lKzQwfDAsYmU9T2UsSz00OCsobHw9MCl8MCxSPTB8ZnIoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6Sykr''@;'; put 'put ''NDA+PjJdKSxhWyhtPWsrOHwwKT4+Ml09MCxhWyhEPU0rOHwwKT4+Ml09MCwwIT0oMHwoYz0wfGFbNDcxODJdKSkmJjAhPSgwfChmPTB8Rm8obCxjKSkpJiYwIT0oMHx1ZVtmPj4wXSk/KFhOKGwsayksZj0wfGFwKGwsZiwobWU9MCE9KDB8TW8oZikpKT8yOjAsQT0rX1trPj4zXSxwPTB8YVtt''@;'; put 'put ''Pj4yXSxjPTB8YVtrKzEyPj4yXSksYVs5NisoMHxhWyhtZT1sKzE2fDApPj4yXSk+PjJdPWYsdWVbKGY9MTEzKygwfGFbUisxNj4+Ml0pfDApPj4wXT0xfHVlW2Y+PjBdLGY9MHxyMSgwfEEyKGwsMHxhWzQ3MTkyXSwxMzczMDgpKSx1ZVsxMTQrKDB8YVttZT4+Ml0pPj4wXT1mLG1lPTEsZj1w''@;'; put 'put ''KToobWU9MCxjPTAsQT0wLGY9MCksMHwocD0wfGFbNDcxODNdKSYmMHwodz0wfEZvKGwscCkpJiYwfHVlW3c+PjBdJiYoZnx8KFhOKGwsayksQT0rX1trPj4zXSxmPTB8YVttPj4yXSxjPTB8YVtrKzEyPj4yXSksdz0wfGFwKGwsdywobT0wIT0oMHxNbyh3KSkpPzI6MCxBLGYsYyksYVsxMDgr''@;'; put 'put ''KDB8YVtsKzE2Pj4yXSk+PjJdPXcsdWVbKHc9MTEzKygwfGFbUisxNj4+Ml0pfDApPj4wXT0zMnx1ZVt3Pj4wXSksMCE9KDB8KGM9MHxhWzQ3MTk3XSkpJiYwIT0oMHwoYj0wfEZvKGwsYykpKSYmMCE9KDB8dWVbYj4+MF0pPyh0SihsLGssTSksYj0wfGFwKGwsYiwodz0wIT0oMHxNbyhiKSkp''@;'; put 'put ''PzI6MCxBPStfW00+PjNdLGM9MHxhW0Q+PjJdLGY9MHxhW00rMTI+PjJdKSxhWzEwMCsoMHxhW2wrMTY+PjJdKT4+Ml09Yix1ZVsoYj0xMTMrKDB8YVtSKzE2Pj4yXSl8MCk+PjBdPTJ8dWVbYj4+MF0pOihmPTAsQT0wLGM9MCksMHwocD0wfGFbNDcxOThdKSYmMHwoRz0wfEZvKGwscCkpJiYw''@;'; put 'put ''fHVlW0c+PjBdJiYoY3x8KHRKKGwsayxNKSxmPTB8YVtNKzEyPj4yXSxBPStfW00+PjNdLGM9MHxhW0Q+PjJdKSxHPTB8YXAobCxHLChEPTAhPSgwfE1vKEcpKSk/MjowLEEsYyxmKSxhWzEwNCsoMHxhW2wrMTY+PjJdKT4+Ml09Ryx1ZVsoRz0xMTMrKDB8YVtSKzE2Pj4yXSl8MCk+PjBdPTR8''@;'; put 'put ''dWVbRz4+MF0pLGM9MHxMaShsLDExMTQ1NSksMHx1ZVsoYz0wfGM/YzoxOTUwNTkpPj4wXSYmKHVlWzE0NSsoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpLKSs0MD4+Ml0pPj4yXSk+PjBdPTEpLHA9MTYrKDB8YVsobT1sKzE2fDApPj4yXSl8MCxLTihwZSwwfGFbOCsoMHxhWzQr''@;'; put 'put ''KDB8YVs4KygwfGFbMTYrKGY9MHxhWygzPT0oMyZhW2w+PjJdfDApP2w6SykrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0sZixjKSxjPXBlLGY9cCs0MHwwO2Rve2FbcD4+Ml09YVtjPj4yXSxwPXArNHwwLGM9Yys0fDB9d2hpbGUoKDB8cCk8KDB8ZikpOygwfG5KKGwsMHxhWzQ3MjA0XSkp''@;'; put 'put ''PDwyND4+MjQmJih1ZVs0NisoMHxhW20+PjJdKT4+MF09MCksYz0wfExpKGwsMTExNDY0KSwwfHVlWyhjPTB8Yz9jOjE5NTA1OSk+PjBdPyhmPWwrLTQ4fDAsdWVbMTQ1KygwfGFbMTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmYpKzQwPj4yXSk+PjJdKT4+MF09MSk6Zj1sKy00OHwwLHA9''@;'; put 'put ''NTYrKDB8YVttPj4yXSl8MCxLTihiZSwwfGFbOCsoMHxhWzQrKDB8YVs4KygwfGFbMTYrKGY9MHxhWygyPT0oMyZhW2w+PjJdfDApP2w6ZikrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0sZixjKSxjPWJlLGY9cCs0MHwwO2Rve2FbcD4+Ml09YVtjPj4yXSxwPXArNHwwLGM9Yys0fDB9d2hp''@;'; put 'put ''bGUoKDB8cCk8KDB8ZikpO3JldHVybigwfG5KKGwsMHxhWzQ3MjA1XSkpPDwyND4+MjQmJih1ZVs4NisoMHxhW20+PjJdKT4+MF09MCksb2U9T2UsMHxtZX1mdW5jdGlvbiBYTihsLGMpe19bKGN8PTApPj4zXT0rY2wobHw9MCwwfGFbNDcxNzldLDE0LDEpLGFbYys4Pj4yXT0wfE9hKGwsMHxh''@;'; put 'put ''WzQ3MTgwXSwxMDc5OTQpLGFbYysxMj4+Ml09MHxPYShsLDB8YVs0NzE4MV0sMTM3MzE0KX1mdW5jdGlvbiB0SihsLGMsZil7dmFyIHA7bHw9MCxmfD0wLDB8YVsocD04KyhjfD0wKXwwKT4+Ml18fFhOKGwsYyksX1tmPj4zXT0rY2wobCwwfGFbNDcxOTldLCtfW2M+PjNdLDEpLGFbZis4Pj4y''@;'; put 'put ''XT0wfE9hKGwsMHxhWzQ3MjAwXSwwfGFbcD4+Ml0pLGFbZisxMj4+Ml09MHxPYShsLDB8YVs0NzIwMV0sMHxhW2MrMTI+PjJdKX1mdW5jdGlvbiBLTihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSxrLE0sbT0wLHc9MCxiPTA7aWYoTT1vZSxvZT1vZSsxMjh8MCxrPU0rODB8MCxBPU0r''@;'; put 'put ''NDB8MCxtPU0sMCE9KDB8KHB8PTApKSYmMCE9KDB8KGI9MHxVcyhwLDU4KSkpKXt1ZVtiPj4wXT0wLEZhWzMxJmNdKEEsZixwLHc9YisxfDApLG09QSxjPShmPWspKzM2fDA7ZG97YVtmPj4yXT1hW20+PjJdLGY9Zis0fDAsbT1tKzR8MH13aGlsZSgoMHxmKTwoMHxjKSk7dWVbYj4+MF09NTgs''@;'; put 'put ''cD13fWVsc2V7RmFbMzEmY10obSxmLHAsMCksYz0oZj1rKSszNnwwO2Rve2FbZj4+Ml09YVttPj4yXSxmPWYrNHwwLG09bSs0fDB9d2hpbGUoKDB8Zik8KDB8YykpfW09ayxjPShmPWwpKzM2fDA7ZG97YVtmPj4yXT1hW20+PjJdLGY9Zis0fDAsbT1tKzR8MH13aGlsZSgoMHxmKTwoMHxjKSk7''@;'; put 'put ''YVtsKzM2Pj4yXT1wLG9lPU19ZnVuY3Rpb24gbkoobCxjKXtsfD0wO3ZhciBmPTA7cmV0dXJuIDB8KDAhPSgwfChjfD0wKSkmJjAhPSgwfChmPTB8Rm8obCxjKSkpJiYwIT0oMHx1ZVtmPj4wXSk/KDB8cjEoZikpPDwyND4+MjQ9PTAmMTowKX1mdW5jdGlvbiAkTihsLGMpe2x8PTA7dmFyIHAs''@;'; put 'put ''bSxBLHcsYixrLGY9MCxNPTAsRD0wLFI9MDtmb3Ioaz1vZSxvZT1vZSszMnwwLHc9ayxmPSgwfGFbNDQrKGN8PTApPj4yXSkrKCgwfHZyKCgwfChmPTB8YVtjKzQ+PjJdKSk+MT9mKy0xfDA6MCxiPTB8YVtjKzg+PjJdKSk8PDQpfDAsYVsocD13KzE2fDApPj4yXT1hW2Y+PjJdLGFbcCs0Pj4y''@;'; put 'put ''XT1hW2YrND4+Ml0sYVtwKzg+PjJdPWFbZis4Pj4yXSxhW3ArMTI+PjJdPWFbZisxMj4+Ml0sYVt3Pj4yXT1hW2Y+PjJdLGFbdys0Pj4yXT1hW2YrND4+Ml0sYVt3Kzg+PjJdPWFbZis4Pj4yXSxhW3crMTI+PjJdPWFbZisxMj4+Ml0sbT13Kzh8MCxBPXcrMjR8MCxjPTE7ISgoMHxjKT49KDB8''@;'; put 'put ''YikpOylfW3c+PjNdPStfWygrX1t3Pj4zXTwoUj0rX1soTT1mKyhjPDw0KXwwKT4+M10pP3c6TSk+PjNdLF9bbT4+M109K19bKCtfW20+PjNdPChEPStfW00rOD4+M10pP3c6TSkrOD4+M10sX1twPj4zXT0rX1soK19bcD4+M10+Uj9wOk0pPj4zXSxfW0E+PjNdPStfWygrX1tBPj4zXT5EP3A6''@;'; put 'put ''TSkrOD4+M10sYz1jKzF8MDthW2w+PjJdPWFbdz4+Ml0sYVtsKzQ+PjJdPWFbdys0Pj4yXSxhW2wrOD4+Ml09YVt3Kzg+PjJdLGFbbCsxMj4+Ml09YVt3KzEyPj4yXSxhW2wrMTY+PjJdPWFbdysxNj4+Ml0sYVtsKzIwPj4yXT1hW3crMjA+PjJdLGFbbCsyND4+Ml09YVt3KzI0Pj4yXSxhW2wr''@;'; put 'put ''Mjg+PjJdPWFbdysyOD4+Ml0sb2U9a31mdW5jdGlvbiBKZChsLGMpe2N8PTA7dmFyIGYscCxBLG09MDtmPW9lLG9lPW9lKzY0fDAscD1mLGw9MTYrKG09MHxhWzE2KyhsfD0wKT4+Ml0pfDAsbT0xJmFbbSsxMTY+PjJdLGFbKEE9ZiszMnwwKT4+Ml09YVtsPj4yXSxhW0ErND4+Ml09YVtsKzQ+''@;'; put 'put ''PjJdLGFbQSs4Pj4yXT1hW2wrOD4+Ml0sYVtBKzEyPj4yXT1hW2wrMTI+PjJdLGFbQSsxNj4+Ml09YVtsKzE2Pj4yXSxhW0ErMjA+PjJdPWFbbCsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2wrMjQ+PjJdLGFbQSsyOD4+Ml09YVtsKzI4Pj4yXSxVNyhwLEEsYyxtKSxhW2w+PjJdPWFbcD4+Ml0sYVts''@;'; put 'put ''KzQ+PjJdPWFbcCs0Pj4yXSxhW2wrOD4+Ml09YVtwKzg+PjJdLGFbbCsxMj4+Ml09YVtwKzEyPj4yXSxhW2wrMTY+PjJdPWFbcCsxNj4+Ml0sYVtsKzIwPj4yXT1hW3ArMjA+PjJdLGFbbCsyND4+Ml09YVtwKzI0Pj4yXSxhW2wrMjg+PjJdPWFbcCsyOD4+Ml0sb2U9Zn1mdW5jdGlvbiBVNyhs''@;'; put 'put ''LGMsZixwKXtsfD0wO3ZhciB3LGIsayxNLEQsbT0wLEE9MDtNPStfWzY0KyhmfD0wKT4+M10saz0rX1tmKzI0Pj4zXSx3PStfW2YrMzI+PjNdLG09KEE9K19bZis1Nj4+M10pLShEPS41KigoYj0ocHw9MCk8PDI0Pj4yND09MCk/azp3KSksQT1EK0EsbTwrX1soY3w9MCk+PjNdJiYoX1tjPj4z''@;'; put 'put ''XT1tKSxBPitfWyhwPWMrMTZ8MCk+PjNdJiYoX1twPj4zXT1BKSxtPU0tKEE9LjUqKGI/dzprKSksQSs9TSxtPCtfWyhwPWMrOHwwKT4+M10mJihfW3A+PjNdPW0pLEE+K19bKHA9YysyNHwwKT4+M10mJihfW3A+PjNdPUEpLGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFb''@;'; put 'put ''bCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdLGFbbCsxNj4+Ml09YVtjKzE2Pj4yXSxhW2wrMjA+PjJdPWFbYysyMD4+Ml0sYVtsKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbbCsyOD4+Ml09YVtjKzI4Pj4yXX1mdW5jdGlvbiBYNihsKXt2YXIgbWUsYmUsT2UsTGUsQmUsSGUs''@;'; put 'put ''amUsZXQscnQsYXQsRXQsWnQscm4sYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsR2U9MCxsdD0wLE10PTAsa3Q9MCx1dD0wLHd0PTAseW49MCxGbj0wLGxyPTAsTnI9MDtpZihybj1vZSxvZT1vZSs0NDh8MCxFdD1ybis0MTZ8MCxtZT1y''@;'; put 'put ''biszODR8MCxiZT1ybiszMDR8MCx3dD1ybisyNTZ8MCxhdD1ybisxOTJ8MCxydD1ybisxNDR8MCxHZT1ybis5NnwwLGM9cm4rNDAwfDAsZj1ybiszNjh8MCxwPXJuKzM1MnwwLG09cm4rMzM2fDAsT2U9cm4rMjg4fDAsTGU9cm4rMjI0fDAsQmU9cm4rMTYwfDAsSGU9cm4rMTEyfDAsamU9cm4r''@;'; put 'put ''NjR8MCxldD1ybiszMnwwLFp0PXJuLHV0PTE2KyhsfD0wKXwwLDA9PSgwfE5vKGwpKSYmMD09KDB8YVsxODArKDB8YVt1dD4+Ml0pPj4yXSkpVEQoYywwLDApLGFbd3Q+PjJdPWFbYz4+Ml0sYVt3dCs0Pj4yXT1hW2MrND4+Ml0sYVt3dCs4Pj4yXT1hW2MrOD4+Ml0sYVt3dCsxMj4+Ml09YVtj''@;'; put 'put ''KzEyPj4yXSx3dD13dCsxNnwwLFREKGYsMCwwKSxhW3d0Pj4yXT1hW2Y+PjJdLGFbd3QrND4+Ml09YVtmKzQ+PjJdLGFbd3QrOD4+Ml09YVtmKzg+PjJdLGFbd3QrMTI+PjJdPWFbZisxMj4+Ml07ZWxzZXtmb3IoVEQocCwyMTQ3NDgzNjQ3LDIxNDc0ODM2NDcpLGFbd3Q+PjJdPWFbcD4+Ml0s''@;'; put 'put ''YVt3dCs0Pj4yXT1hW3ArND4+Ml0sYVt3dCs4Pj4yXT1hW3ArOD4+Ml0sYVt3dCsxMj4+Ml09YVtwKzEyPj4yXSxrdD13dCsxNnwwLFREKG0sLTIxNDc0ODM2NDcsLTIxNDc0ODM2NDcpLGFba3Q+PjJdPWFbbT4+Ml0sYVtrdCs0Pj4yXT1hW20rND4+Ml0sYVtrdCs4Pj4yXT1hW20rOD4+Ml0s''@;'; put 'put ''YVtrdCsxMj4+Ml09YVttKzEyPj4yXSxEPUdlKzh8MCxSPWJlKzE2fDAsbHQ9d3QrOHwwLEc9YmUrOHwwLE10PXd0KzI0fDAsSz1iZSsyNHwwLHBlPXJ0Kzh8MCxNPTB8THQobCk7TTspe2ZvcihFRChydCxNKSxfW0dlPj4zXT0uNSooK19bOTYrKGs9MHxhWyhjPU0rMTZ8MCk+PjJdKT4+M10r''@;'; put 'put ''ICtfW2srODg+PjNdKSxfW0Q+PjNdPS41KitfW2srODA+PjNdLGFbbWU+PjJdPWFbcnQ+PjJdLGFbbWUrND4+Ml09YVtydCs0Pj4yXSxhW21lKzg+PjJdPWFbcnQrOD4+Ml0sYVttZSsxMj4+Ml09YVtydCsxMj4+Ml0sYVtFdD4+Ml09YVtHZT4+Ml0sYVtFdCs0Pj4yXT1hW0dlKzQ+PjJdLGFb''@;'; put 'put ''RXQrOD4+Ml09YVtHZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW0dlKzEyPj4yXSxxTihiZSxtZSxFdCksYVttZT4+Ml09YVtydD4+Ml0sYVttZSs0Pj4yXT1hW3J0KzQ+PjJdLGFbbWUrOD4+Ml09YVtydCs4Pj4yXSxhW21lKzEyPj4yXT1hW3J0KzEyPj4yXSxhW0V0Pj4yXT1hW0dlPj4yXSxhW0V0''@;'; put 'put ''KzQ+PjJdPWFbR2UrND4+Ml0sYVtFdCs4Pj4yXT1hW0dlKzg+PjJdLGFbRXQrMTI+PjJdPWFbR2UrMTI+PjJdLHJKKE9lLG1lLEV0KSxhW1I+PjJdPWFbT2U+PjJdLGFbUis0Pj4yXT1hW09lKzQ+PjJdLGFbUis4Pj4yXT1hW09lKzg+PjJdLGFbUisxMj4+Ml09YVtPZSsxMj4+Ml0sX1t3dD4+''@;'; put 'put ''M109K19bKCtfW3d0Pj4zXTwrX1tiZT4+M10/d3Q6YmUpPj4zXSxfW2x0Pj4zXT0rX1soK19bbHQ+PjNdPCtfW0c+PjNdP3d0OmJlKSs4Pj4zXSxfW2t0Pj4zXT0rX1soK19ba3Q+PjNdPitfW1I+PjNdP3d0OmJlKSsxNj4+M10sX1tNdD4+M109K19bKCtfW010Pj4zXT4rX1tLPj4zXT93dDpi''@;'; put 'put ''ZSkrMjQ+PjNdLDB8KGM9MHxhWzEwOCsoMHxhW2M+PjJdKT4+Ml0pJiYwfHVlW2MrODE+PjBdJiYoaz0xJmFbMTE2KygwfGFbdXQ+PjJdKT4+Ml0sYVtFdD4+Ml09YVt3dD4+Ml0sYVtFdCs0Pj4yXT1hW3d0KzQ+PjJdLGFbRXQrOD4+Ml09YVt3dCs4Pj4yXSxhW0V0KzEyPj4yXT1hW3d0KzEy''@;'; put 'put ''Pj4yXSxhW0V0KzE2Pj4yXT1hW3d0KzE2Pj4yXSxhW0V0KzIwPj4yXT1hW3d0KzIwPj4yXSxhW0V0KzI0Pj4yXT1hW3d0KzI0Pj4yXSxhW0V0KzI4Pj4yXT1hW3d0KzI4Pj4yXSxVNyhMZSxFdCxjLGspLGFbd3Q+PjJdPWFbTGU+PjJdLGFbd3QrND4+Ml09YVtMZSs0Pj4yXSxhW3d0Kzg+PjJd''@;'; put 'put ''PWFbTGUrOD4+Ml0sYVt3dCsxMj4+Ml09YVtMZSsxMj4+Ml0sYVt3dCsxNj4+Ml09YVtMZSsxNj4+Ml0sYVt3dCsyMD4+Ml09YVtMZSsyMD4+Ml0sYVt3dCsyND4+Ml09YVtMZSsyND4+Ml0sYVt3dCsyOD4+Ml09YVtMZSsyOD4+Ml0pLGs9MHx5MChsLE0pO2s7KXtpZigwfChmPTB8YVsodz04''@;'; put 'put ''KyhjPTB8YVsoYj1rKzE2fDApPj4yXSl8MCk+PjJdKSl7Zm9yKEE9MDsoMHxBKTwoMHxhW2YrND4+Ml0pOyl7Zm9yKG09MDshKCgwfG0pPj0oMHxhWyhwPTB8YVtmPj4yXSkrKDQ4KkF8MCkrND4+Ml0pKTspYVtydD4+Ml09YVsoZj0oMHxhW3ArKDQ4KkF8MCk+PjJdKSsobTw8NCl8MCk+PjJd''@;'; put 'put ''LGFbcnQrND4+Ml09YVtmKzQ+PjJdLGFbcnQrOD4+Ml09YVtmKzg+PjJdLGFbcnQrMTI+PjJdPWFbZisxMj4+Ml0sX1t3dD4+M109K19bKCtfW3d0Pj4zXTwoRm49K19bcnQ+PjNdKT93dDpydCk+PjNdLF9bbHQ+PjNdPStfWygrX1tsdD4+M108KHluPStfW3BlPj4zXSk/d3Q6cnQpKzg+PjNd''@;'; put 'put ''LF9ba3Q+PjNdPStfWygrX1trdD4+M10+Rm4/a3Q6cnQpPj4zXSxfW010Pj4zXT0rX1soK19bTXQ+PjNdPnluP2t0OnJ0KSs4Pj4zXSxtPW0rMXwwLGY9MHxhW3c+PjJdO0E9QSsxfDB9MCE9KDB8KGY9MHxhW2MrOTY+PjJdKSkmJjAhPSgwfHVlW2YrODE+PjBdKSYmKGM9MSZhWzExNisoMHxh''@;'; put 'put ''W3V0Pj4yXSk+PjJdLGFbRXQ+PjJdPWFbd3Q+PjJdLGFbRXQrND4+Ml09YVt3dCs0Pj4yXSxhW0V0Kzg+PjJdPWFbd3QrOD4+Ml0sYVtFdCsxMj4+Ml09YVt3dCsxMj4+Ml0sYVtFdCsxNj4+Ml09YVt3dCsxNj4+Ml0sYVtFdCsyMD4+Ml09YVt3dCsyMD4+Ml0sYVtFdCsyND4+Ml09YVt3dCsy''@;'; put 'put ''ND4+Ml0sYVtFdCsyOD4+Ml09YVt3dCsyOD4+Ml0sVTcoQmUsRXQsZixjKSxhW3d0Pj4yXT1hW0JlPj4yXSxhW3d0KzQ+PjJdPWFbQmUrND4+Ml0sYVt3dCs4Pj4yXT1hW0JlKzg+PjJdLGFbd3QrMTI+PjJdPWFbQmUrMTI+PjJdLGFbd3QrMTY+PjJdPWFbQmUrMTY+PjJdLGFbd3QrMjA+PjJd''@;'; put 'put ''PWFbQmUrMjA+PjJdLGFbd3QrMjQ+PjJdPWFbQmUrMjQ+PjJdLGFbd3QrMjg+PjJdPWFbQmUrMjg+PjJdLGM9MHxhW2I+PjJdKSwwIT0oMHwoZj0wfGFbYysxMDA+PjJdKSkmJjAhPSgwfHVlW2YrODE+PjBdKSYmKGM9MSZhWzExNisoMHxhW3V0Pj4yXSk+PjJdLGFbRXQ+PjJdPWFbd3Q+PjJd''@;'; put 'put ''LGFbRXQrND4+Ml09YVt3dCs0Pj4yXSxhW0V0Kzg+PjJdPWFbd3QrOD4+Ml0sYVtFdCsxMj4+Ml09YVt3dCsxMj4+Ml0sYVtFdCsxNj4+Ml09YVt3dCsxNj4+Ml0sYVtFdCsyMD4+Ml09YVt3dCsyMD4+Ml0sYVtFdCsyND4+Ml09YVt3dCsyND4+Ml0sYVtFdCsyOD4+Ml09YVt3dCsyOD4+Ml0s''@;'; put 'put ''VTcoSGUsRXQsZixjKSxhW3d0Pj4yXT1hW0hlPj4yXSxhW3d0KzQ+PjJdPWFbSGUrND4+Ml0sYVt3dCs4Pj4yXT1hW0hlKzg+PjJdLGFbd3QrMTI+PjJdPWFbSGUrMTI+PjJdLGFbd3QrMTY+PjJdPWFbSGUrMTY+PjJdLGFbd3QrMjA+PjJdPWFbSGUrMjA+PjJdLGFbd3QrMjQ+PjJdPWFbSGUr''@;'; put 'put ''MjQ+PjJdLGFbd3QrMjg+PjJdPWFbSGUrMjg+PjJdLGM9MHxhW2I+PjJdKSwwIT0oMHwoZj0wfGFbYysxMDQ+PjJdKSkmJjAhPSgwfHVlW2YrODE+PjBdKSYmKGM9MSZhWzExNisoMHxhW3V0Pj4yXSk+PjJdLGFbRXQ+PjJdPWFbd3Q+PjJdLGFbRXQrND4+Ml09YVt3dCs0Pj4yXSxhW0V0Kzg+''@;'; put 'put ''PjJdPWFbd3QrOD4+Ml0sYVtFdCsxMj4+Ml09YVt3dCsxMj4+Ml0sYVtFdCsxNj4+Ml09YVt3dCsxNj4+Ml0sYVtFdCsyMD4+Ml09YVt3dCsyMD4+Ml0sYVtFdCsyND4+Ml09YVt3dCsyND4+Ml0sYVtFdCsyOD4+Ml09YVt3dCsyOD4+Ml0sVTcoamUsRXQsZixjKSxhW3d0Pj4yXT1hW2plPj4y''@;'; put 'put ''XSxhW3d0KzQ+PjJdPWFbamUrND4+Ml0sYVt3dCs4Pj4yXT1hW2plKzg+PjJdLGFbd3QrMTI+PjJdPWFbamUrMTI+PjJdLGFbd3QrMTY+PjJdPWFbamUrMTY+PjJdLGFbd3QrMjA+PjJdPWFbamUrMjA+PjJdLGFbd3QrMjQ+PjJdPWFbamUrMjQ+PjJdLGFbd3QrMjg+PjJdPWFbamUrMjg+PjJd''@;'; put 'put ''LGM9MHxhW2I+PjJdKSwwfChjPTB8YVtjKzEwOD4+Ml0pJiYwfHVlW2MrODE+PjBdJiYoYj0xJmFbMTE2KygwfGFbdXQ+PjJdKT4+Ml0sYVtFdD4+Ml09YVt3dD4+Ml0sYVtFdCs0Pj4yXT1hW3d0KzQ+PjJdLGFbRXQrOD4+Ml09YVt3dCs4Pj4yXSxhW0V0KzEyPj4yXT1hW3d0KzEyPj4yXSxh''@;'; put 'put ''W0V0KzE2Pj4yXT1hW3d0KzE2Pj4yXSxhW0V0KzIwPj4yXT1hW3d0KzIwPj4yXSxhW0V0KzI0Pj4yXT1hW3d0KzI0Pj4yXSxhW0V0KzI4Pj4yXT1hW3d0KzI4Pj4yXSxVNyhldCxFdCxjLGIpLGFbd3Q+PjJdPWFbZXQ+PjJdLGFbd3QrND4+Ml09YVtldCs0Pj4yXSxhW3d0Kzg+PjJdPWFbZXQr''@;'; put 'put ''OD4+Ml0sYVt3dCsxMj4+Ml09YVtldCsxMj4+Ml0sYVt3dCsxNj4+Ml09YVtldCsxNj4+Ml0sYVt3dCsyMD4+Ml09YVtldCsyMD4+Ml0sYVt3dCsyND4+Ml09YVtldCsyND4+Ml0sYVt3dCsyOD4+Ml09YVtldCsyOD4+Ml0pfWs9MHxrMChsLGspfU09MHx6dChsLE0pfWZvcihwPTB8YVsxODAr''@;'; put 'put ''KGM9MHxhW3V0Pj4yXSk+PjJdLG09YysxODR8MCxBPWF0Kzh8MCx3PWF0KzE2fDAsYj1hdCsyNHwwLGY9MTshKCgwfGYpPigwfHApKTspX1thdD4+M109TnI9K19bMTYrKDB8YVsxNisoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSk+PjNdLF9bQT4+M109bHI9K19bMjQrKEdlPTB8''@;'; put 'put ''YVsxNisoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSk+PjNdLF9bdz4+M109eW49K19bR2UrMzI+PjNdLF9bYj4+M109Rm49K19bR2UrNDA+PjNdLF9bd3Q+PjNdPStfWygrX1t3dD4+M108TnI/d3Q6YXQpPj4zXSxfW2x0Pj4zXT0rX1soK19bbHQ+PjNdPGxyP3d0OmF0KSs4Pj4z''@;'; put 'put ''XSxfW2t0Pj4zXT0rX1soK19ba3Q+PjNdPnluP3d0OmF0KSsxNj4+M10sX1tNdD4+M109K19bKCtfW010Pj4zXT5Gbj93dDphdCkrMjQ+PjNdLGY9ZisxfDA7MCE9KDB8KGY9MHxhW2MrMTI+PjJdKSkmJjAhPSgwfHVlW2YrODE+PjBdKSYmKGM9MSZhW2MrMTE2Pj4yXSxhW0V0Pj4yXT1hW3d0''@;'; put 'put ''Pj4yXSxhW0V0KzQ+PjJdPWFbd3QrND4+Ml0sYVtFdCs4Pj4yXT1hW3d0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbd3QrMTI+PjJdLGFbRXQrMTY+PjJdPWFbd3QrMTY+PjJdLGFbRXQrMjA+PjJdPWFbd3QrMjA+PjJdLGFbRXQrMjQ+PjJdPWFbd3QrMjQ+PjJdLGFbRXQrMjg+PjJdPWFbd3QrMjg+''@;'; put 'put ''PjJdLFU3KFp0LEV0LGYsYyksYVt3dD4+Ml09YVtadD4+Ml0sYVt3dCs0Pj4yXT1hW1p0KzQ+PjJdLGFbd3QrOD4+Ml09YVtadCs4Pj4yXSxhW3d0KzEyPj4yXT1hW1p0KzEyPj4yXSxhW3d0KzE2Pj4yXT1hW1p0KzE2Pj4yXSxhW3d0KzIwPj4yXT1hW1p0KzIwPj4yXSxhW3d0KzI0Pj4yXT1h''@;'; put 'put ''W1p0KzI0Pj4yXSxhW3d0KzI4Pj4yXT1hW1p0KzI4Pj4yXSxjPTB8YVt1dD4+Ml0pLGFbKHV0PWMrMTZ8MCk+PjJdPWFbd3Q+PjJdLGFbdXQrND4+Ml09YVt3dCs0Pj4yXSxhW3V0Kzg+PjJdPWFbd3QrOD4+Ml0sYVt1dCsxMj4+Ml09YVt3dCsxMj4+Ml0sYVt1dCsxNj4+Ml09YVt3dCsxNj4+''@;'; put 'put ''Ml0sYVt1dCsyMD4+Ml09YVt3dCsyMD4+Ml0sYVt1dCsyND4+Ml09YVt3dCsyND4+Ml0sYVt1dCsyOD4+Ml09YVt3dCsyOD4+Ml19b2U9cm59ZnVuY3Rpb24gVEQobCxjLGYpe2Y9K2YsX1sobHw9MCk+PjNdPWM9K2MsX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gcU4obCxjLGYpe3ZhciBwO3A9K19b''@;'; put 'put ''OCsoY3w9MCk+PjNdLStfWzgrKGZ8PTApPj4zXSxfWyhsfD0wKT4+M109K19bYz4+M10tK19bZj4+M10sX1tsKzg+PjNdPXB9ZnVuY3Rpb24gckoobCxjLGYpe3ZhciBwO3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxf''@;'; put 'put ''W2wrOD4+M109cH1mdW5jdGlvbiBDayhsKXtyZXR1cm4gMHwoKDB8YVs2MCsobHw9MCk+PjJdKT09KDB8bCk/MTowPT0oMHxpNCgwfCRyKGwpLDEwODAwNiw3KSkmMSl9ZnVuY3Rpb24gZVYobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7ZTpkb3tpZighbSlzd2l0Y2goMHxN''@;'; put 'put ''aShjKSl7Y2FzZSAwOm09MHxzaShsLDAsZiwxOTUwNTkpO2JyZWFrIGU7Y2FzZSAxOm09MHxzaShsLDEsZiwxOTUwNTkpO2JyZWFrIGU7Y2FzZSAyOm09MHxzaShsLDIsZiwxOTUwNTkpO2JyZWFrIGU7ZGVmYXVsdDptPTA7YnJlYWsgZX19d2hpbGUoMCk7cmV0dXJuIEJsKGMsbSxwKSwwfG19''@;'; put 'put ''ZnVuY3Rpb24gaUoobCl7dmFyIGM7cmV0dXJuIGFWKGx8PTAsYz0wfEFzKDIzNjI4LDB8YVs0NTgxXSkpLDB8Y31mdW5jdGlvbiBDbGUobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBrLE0sRyxiZSxBPTAsdz0wLGI9MCxEPTAsUj0wLEs9MCxwZT0wLG1lPTA7YmU9b2Usb2U9''@;'; put 'put ''b2UrNDh8MCxLPWJlKzMyfDAsRz1iZSsyNHwwLG1lPWJlKzE2fDAscGU9YmUrOHwwLGs9YmUsTT0wfGFbKDM9PSgwfChEPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSxEPTB8YVsoMj09KDB8RCk/bDpsKy00OHwwKSs0MD4+Ml07ZG97aWYoISgwfHVlWzExOCsoMHxhW0QrMTY+''@;'; put 'put ''PjJdKT4+MF0pJiYoQT0wIT0oMHwoUj0wfG4yKDB8JHIoTSksMTA4MDA2LDcpPzA6MHx0VihtLDB8JHIoTSkpKSkpfChiPTAhPSgwfCh3PTB8bjIoMHwkcihEKSwxMDgwMDYsNyk/MDowfHRWKG0sMHwkcihEKSkpKSkpe2lmKCgwfFIpPT0oMHx3KSl7cGU9MHwkcihNKSxtZT0wfCRyKE0pLGFb''@;'; put 'put ''az4+Ml09cGUsYVtrKzQ+PjJdPW1lLFhyKDAsMTA4MDI5LGspO2JyZWFrfWlmKDB8KG09MHxuVihwLGwpKSl7a2sobCwwfGFbbSsxNj4+Ml0sMHxhW20rMjA+PjJdKTticmVha31pZighYil7aWYoMHxIcihSLEQpKXtwZT0wfCRyKEQpLG1lPTB8JHIoUiksYVtLPj4yXT1wZSxhW0srND4+Ml09''@;'; put 'put ''bWUsWHIoMCwxMDgxODQsSyk7YnJlYWt9clYocCxNLEQsMHxrayhsLDB8ankoTSxSLGYsYyksRCkpO2JyZWFrfWlmKCFBKXtpZigwfEhyKHcsTSkpe3BlPTB8JHIoTSksbWU9MHwkcih3KSxhW0c+PjJdPXBlLGFbRys0Pj4yXT1tZSxYcigwLDEwODE0NyxHKTticmVha31yVihwLE0sRCwwfGtr''@;'; put 'put ''KGwsTSwwfGp5KEQsdyxmLGMpKSk7YnJlYWt9aWYoMHxIcih3LFIpKXtLPTB8JHIoUiksbWU9MHwkcih3KSxhW3BlPj4yXT1LLGFbcGUrND4+Ml09bWUsWHIoMCwxMDgwNjcscGUpO2JyZWFrfWlmKDB8SHIoUix3KSl7Sz0wfCRyKHcpLHBlPTB8JHIoUiksYVttZT4+Ml09SyxhW21lKzQ+PjJd''@;'; put 'put ''PXBlLFhyKDAsMTA4MTA3LG1lKTticmVha31yVihwLE0sRCwwfGtrKGwsbWU9MHxqeShNLFIsZixjKSwwfGp5KEQsdyxmLGMpKSk7YnJlYWt9fXdoaWxlKDApO29lPWJlfWZ1bmN0aW9uIHRWKGwsYyl7cmV0dXJuIDB8KChsPTB8bWlbNjMmYVsobHw9MCk+PjJdXShsLGN8PTAsNTEyKSk/MHxh''@;'; put 'put ''W2wrMTI+PjJdOjApfWZ1bmN0aW9uIG5WKGwsYyl7dmFyIGYscCxtO3JldHVybiBsfD0wLGY9b2Usb2U9b2UrMTZ8MCxhWyhwPWYpPj4yXT1hWygzPT0oMHwobT0zJmFbKGN8PTApPj4yXSkpP2M6Yys0OHwwKSs0MD4+Ml0sYVtwKzQ+PjJdPWFbKDI9PSgwfG0pP2M6YystNDh8MCkrNDA+PjJd''@;'; put 'put ''LGM9MHxtaVs2MyZhW2w+PjJdXShsLHAsNTEyKSxvZT1mLDB8Y31mdW5jdGlvbiBrayhsLGMsZil7cmV0dXJuIGx8PTAsZnw9MCxmMChmPTB8cmwoMHxmcihjfD0wKSxjLGYsMCwxKSwxMzc0NjAsMTc2LDEpLEw2KGwsZiksMHxmfWZ1bmN0aW9uIGp5KGwsYyxmLHApe2x8PTAsY3w9MCxwfD0w''@;'; put 'put ''O3ZhciBBLGssbT0wLHc9MCxiPTA7cmV0dXJuIGs9b2Usb2U9b2UrMTEyfDAsbT1rLGI9ays0fDAsY28oZnw9MCwxMDgyMjEpLGFbNDczMjFdPTErKHc9MHxhWzQ3MzIxXSksYVttPj4yXT13LGFvKGIsMTM3Mzk1LG0pLGNvKGYsYiksKG09MHxhWyhiPWYrNHwwKT4+Ml0pPj4+MD49KDB8YVso''@;'; put 'put ''dz1mKzh8MCk+PjJdKT4+PjAmJihHMChmLDEpLG09MHxhW2I+PjJdKSxhW2I+PjJdPW0rMSx1ZVttPj4wXT01OCxjbyhmLDB8JHIoYykpLEE9MHxoaShjKSwobT0wfGFbYj4+Ml0pPj4+MD49KDB8YVt3Pj4yXSk+Pj4wJiYoRzAoZiwxKSxtPTB8YVtiPj4yXSksdWVbbT4+MF09MCxhW2I+PjJd''@;'; put 'put ''PWY9MHxhW2Y+PjJdLGYwKGI9MHxNcihBLGYsMSksMTM3NDQ3LDMwNCwxKSx1ZVsxMTgrKDB8YVtiKzE2Pj4yXSk+PjBdPTEsVm4oYyxiLDEpLFZuKHAsbCwxKSxwPTB8ZnIoYiksYVs0NzE1NF09MHxlVihwLGIsMTA4MjI0LDE5NTA1OSwwfGFbNDcxNTRdKSxwPTB8ZnIoYiksYVs0NzE1N109''@;'; put 'put ''MHxlVihwLGIsMTQxMDgyLDEzNDMzNSwwfGFbNDcxNTddKSxwPTB8ZnIoYiksYVs0NzE0N109MHxlVihwLGIsMTA4MjMwLDEwODIzNiwwfGFbNDcxNDddKSxvZT1rLDB8Yn1mdW5jdGlvbiByVihsLGMsZixwKXt2YXIgbSxBLHcsYixrLE0sRCxSLEc7bHw9MCxmfD0wLHB8PTAsbT1vZSxvZT1v''@;'; put 'put ''ZSszMnwwLGFbKFI9KEE9bSkrOHwwKT4+Ml09Y3w9MCxhWyhEPUErMTJ8MCk+PjJdPWYsYj1wKzQ4fDAsYVsoaz1BKzE2fDApPj4yXT1hWygzPT0oMHwoRz0zJmFbcD4+Ml0pKT9wOmIpKzQwPj4yXSxNPXArLTQ4fDAsYVsodz1BKzIwfDApPj4yXT1hWygyPT0oMHxHKT9wOk0pKzQwPj4yXSxt''@;'; put 'put ''aVs2MyZhW2w+PjJdXShsLEEsMSksYVtSPj4yXT1mLGFbRD4+Ml09YyxhW2s+PjJdPWFbKDI9PSgwfChmPTMmYVtwPj4yXSkpP3A6TSkrNDA+PjJdLGFbdz4+Ml09YVsoMz09KDB8Zik/cDpiKSs0MD4+Ml0sbWlbNjMmYVtsPj4yXV0obCxBLDEpLG9lPW19ZnVuY3Rpb24gYVYobCxjKXtjfD0w''@;'; put 'put ''O3ZhciBtLEEsdyxmPTAscD0wLGI9MDtmb3Iodz1vZSxvZT1vZSsxNnwwLEE9dyxtPTE2KyhsfD0wKXwwLHA9MTshKCgwfHApPigwfGFbMTgwKyhsPTB8YVttPj4yXSk+PjJdKSk7KWY9MHwkcihsPTB8YVsoMHxhW2wrMTg0Pj4yXSkrKHA8PDIpPj4yXSksMHxtaVs2MyZhW2M+PjJdXShjLGYs''@;'; put 'put ''NTEyKT8oYVtBPj4yXT1mLFhyKDAsMTA4MjQwLEEpKTooYj0wfG1yKDE2KSxhW2IrOD4+Ml09ZixhW2IrMTI+PjJdPWwsbWlbNjMmYVtjPj4yXV0oYyxiLDEpKSxhVihsLGMpLHA9cCsxfDA7b2U9d31mdW5jdGlvbiBsVihsKXt2YXIgcCxjPTAsZj0wO2ZvcihmMChwPTB8eXMobHw9MCwxMDgw''@;'; put 'put ''MTQsMSksMTM3NDgzLDI4MCwxKSxjPTB8THQobCk7Yzspe2ZvcihmPTB8eTAobCxjKTtmOylvSihmLHApLGY9MHxrMChsLGYpO2M9MHx6dChsLGMpfWZvcihjPTB8THQocCk7YzspZj0wfHp0KHAsYyksSzYoYyksbmkobCxjKSxjPWY7UTEocCl9ZnVuY3Rpb24gb0oobCxjKXtjfD0wO3ZhciBm''@;'; put 'put ''PTAscD0wO3A9MHxhWygzPT0oMHwoZj0zJmFbKGx8PTApPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0sZj0wfGFbKDI9PSgwfGYpP2w6bCstNDh8MCkrNDA+PjJdLDA9PSgwfHVlWzExOCsoMHxhW3ArMTY+PjJdKT4+MF0pJiYhKDB8dWVbMTE4KygwfGFbZisxNj4+Ml0pPj4wXSl8fChmPTB8a2so''@;'; put 'put ''bCxwPTB8c1YocCxjKSwwfHNWKGYsYykpLGFbOCsoZj0wfGFbZisxNj4+Ml0pPj4yXT1hWyhjPTgrKHA9MHxhW2wrMTY+PjJdKXwwKT4+Ml0sYVtjPj4yXT0wLGFbZis5Nj4+Ml09YVsoYz1wKzk2fDApPj4yXSxhW2M+PjJdPTAsYVtmKzEwOD4+Ml09YVsoYz1wKzEwOHwwKT4+Ml0sYVtjPj4y''@;'; put 'put ''XT0wLGFbZisxMDA+PjJdPWFbKGM9cCsxMDB8MCk+PjJdLGFbYz4+Ml09MCxhW2YrMTA0Pj4yXT1hWyhwPXArMTA0fDApPj4yXSxhW3A+PjJdPTAsVzUobCkpfWZ1bmN0aW9uIEs2KGwpe3ZhciBwLGM9MCxmPTA7KGY9MHxhWzEzMisoYz0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSk+PjJdKSYm''@;'; put 'put ''KEh0KGYpLGM9MHxhW3A+PjJdKSwoZj0wfGFbYys4Pj4yXSkmJihub1sxMjcmYVs0KygwfGFbZis0Pj4yXSk+PjJdXShsKSxjPTB8YVtwPj4yXSksVnUoMHxhW2MrMTA0Pj4yXSksVnUoMHxhWzEwOCsoMHxhW3A+PjJdKT4+Ml0pLENhKGwsMTM3NDQ3KX1mdW5jdGlvbiBzVihsLGMpe2N8PTA7''@;'; put 'put ''dmFyIHAsZj0wO3A9MHxmcihsfD0wKTtlOmRve2lmKDB8dWVbMTE4KygwfGFbbCsxNj4+Ml0pPj4wXSYmKFZuKGMsbCwxKSxsPTB8VXMoMHwkcihsKSw1OCksbHx8QnIoMTExMjA4LDEwNzY2MSwxMjI1LDEwODI5MiksYz1sKzF8MCxsPTB8TXIocCxjLDApLCFsKSlmb3IobD0wfE1yKHAsYywx''@;'; put 'put ''KSxmMChsLDEzNzQ0NywzMDQsMSksYz0wfFBzKHAsMSwwKTs7KXtpZighYylicmVhayBlOygwfEZvKGwsYykpIT0oMHwoZj0wfGFbYysxMj4+Ml0pKSYmQmwobCxjLGYpLGM9MHxQcyhwLDEsYyl9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gVzUobCl7dmFyIGM7SHQoMHxhWzE0NCso''@;'; put 'put ''MHxhWyhjPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSksSUQobCksVnUoMHxhWzk2KygwfGFbYz4+Ml0pPj4yXSksVnUoMHxhWzEwOCsoMHxhW2M+PjJdKT4+Ml0pLFZ1KDB8YVsxMDArKDB8YVtjPj4yXSk+PjJdKSxWdSgwfGFbMTA0KygwfGFbYz4+Ml0pPj4yXSksQ2EobCwxMzc0NjApfWZ1bmN0''@;'; put 'put ''aW9uIElEKGwpe3ZhciBwLGM9MCxmPTA7aWYoYz0wfGFbOCsobD0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSk+PjJdKXtmb3IoZj0wO2w9MHxhW2M+PjJdLCEoKDB8Zik+PSgwfGFbYys0Pj4yXSkpOylIdCgwfGFbbCsoNDgqZnwwKT4+Ml0pLGY9ZisxfDAsYz0wfGFbOCsoMHxhW3A+PjJdKT4+''@;'; put 'put ''Ml07SHQobCksSHQoMHxhWzgrKDB8YVtwPj4yXSk+PjJdKSxsPTB8YVtwPj4yXX1hW2wrOD4+Ml09MH1mdW5jdGlvbiB6MihsLGMsZixwKXtwfD0wO3ZhciBtPTA7cmV0dXJuKG09MHxzaShsfD0wLGN8PTAsZnw9MCwwKSl8fChtPTB8c2kobCxjLGYscCkpLDB8bX1mdW5jdGlvbiBNbGUobCxj''@;'; put 'put ''KXtjfD0wO3ZhciBBLHcsYixrLE0sRCxSLGY9MCxwPTAsbT0wO3JldHVybiBSPW9lLG9lPW9lKzMyfDAsdz1SLEE9Uis4fDAsYj1SKzE2fDAsTT0wfFVzKGx8PTAsNTkpLChmPTB8YVsoRD1jKzR8MCk+PjJdKT4+PjA+PSgwfGFbKGs9Yys4fDApPj4yXSk+Pj4wJiYoRzAoYywxKSxmPTB8YVtE''@;'; put 'put ''Pj4yXSksYVtEPj4yXT1mKzEsdWVbZj4+MF09MzgsMCE9KDB8TSkmJigocD1NLWx8MCktMnwwKT4+PjA8PTYmJihwUyhiLGwscCksdWVbYitwPj4wXT0wLGFbQT4+Ml09YiwwIT0oMHwobT0wfGN3KEEsMjM2NjQsMjUyLDgsOTYpKSkpJiYoYVt3Pj4yXT1hW20rND4+Ml0sYW8oYiwxMzczOTUs''@;'; put 'put ''dyksKGw9MHxhW0Q+PjJdKT4+PjA+PSgwfGFbaz4+Ml0pPj4+MCYmKEcwKGMsMSksbD0wfGFbRD4+Ml0pLGFbRD4+Ml09bCsxLHVlW2w+PjBdPTM1LGNvKGMsYiksKGw9MHxhW0Q+PjJdKT4+PjA+PSgwfGFbaz4+Ml0pPj4+MCYmKEcwKGMsMSksbD0wfGFbRD4+Ml0pLGFbRD4+Ml09bCsxLHVl''@;'; put 'put ''W2w+PjBdPTU5LGw9TSsxfDApLG9lPVIsMHxsfWZ1bmN0aW9uICQ2KGwsYyl7Y3w9MDt2YXIgdyxiLGssUixLLGY9MCxwPTAsbT0wLEE9MCxNPTAsRD0wLEc9MDtmb3IoSz1vZSxvZT1vZSsxMDcyfDAsaz1LKzh8MCxiPUssUj1LKzI0fDAsYVsodz1LKzE2fDApPj4yXT1sfD0wLCgwfGFbNDcz''@;'; put 'put ''MjJdKSE9KDB8YykmJihhWzQ3MzIyXT1jLHVlWzE5NDk1OF09MCksb3MoUiwxMDI0LEsrNDB8MCksRz1SKzR8MCxEPVIrOHwwO2Fbdz4+Ml09cD1sKzF8MCwoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0Oyl7ZG97aWYoKDI1NSZmKTwxOTIpaWYoZjw8MjQ+PjI0PT0zOClpZihwPTB8YUoodykpe2lm''@;'; put 'put ''KHA+Pj4wPDEyNyl7Zj0yNTUmcDticmVha31pZihmPShsPTB8YVtHPj4yXSk+Pj4wPj0oMHxhW0Q+PjJdKT4+PjAscD4+PjA8MjA0Nyl7ZiYmKEcwKFIsMSksbD0wfGFbRz4+Ml0pLGFbRz4+Ml09bCsxLHVlW2w+PjBdPXA+Pj42fDE5MixmPTI1NSYoNjMmcHwxMjgpO2JyZWFrfWYmJihHMChS''@;'; put 'put ''LDEpLGw9MHxhW0c+PjJdKSxhW0c+PjJdPWwrMSx1ZVtsPj4wXT1wPj4+MTJ8MjI0LChsPTB8YVtHPj4yXSk+Pj4wPj0oMHxhW0Q+PjJdKT4+PjAmJihHMChSLDEpLGw9MHxhW0c+PjJdKSxhW0c+PjJdPWwrMSx1ZVtsPj4wXT1wPj4+NiY2M3wxMjgsZj0yNTUmKDYzJnB8MTI4KX1lbHNlIGY9''@;'; put 'put ''Mzg7ZWxzZSBBPTAsTT05O2Vsc2UoMjU1JmYpPj0yMjQ/KDI1NSZmKT49MjQwPygyNTUmZik8MjQ4PyhBPTMsTT05KTooMHx1ZVsxOTQ5NThdfHwoYVtiPj4yXT0wfCRyKGMpLFhyKDAsMTA5NzA3LGIpLHVlWzE5NDk1OF09MSksQT0tMSxmPTB8REQoZixSKSxNPTkpOihBPTIsTT05KTooQT0x''@;'; put 'put ''LE09OSl9d2hpbGUoMCk7ZG97aWYoOT09KDB8TSkpe2ZvcihNPTAsbT0wOzspe2lmKCgwfG0pPj0oMHxBKSl7TT0zNDticmVha31pZigoLTY0JnVlW3A+PjBdKTw8MjQ+PjI0IT0tMTI4KWJyZWFrOyhsPTB8YVtHPj4yXSk+Pj4wPj0oMHxhW0Q+PjJdKT4+PjAmJihHMChSLDEpLGw9MHxhW0c+''@;'; put 'put ''PjJdKSxhW0c+PjJdPWwrMSx1ZVtsPj4wXT1mLG09bSsxfDAsZj0wfHVlW3A+PjBdLHA9cCsxfDB9aWYoMzQ9PSgwfE0pKXtNPTAsYVt3Pj4yXT1wO2JyZWFrfWFbdz4+Ml09cCwwfHVlWzE5NDk1OF18fChtPTB8JHIoYyksYVtrPj4yXT1BKzEsYVtrKzQ+PjJdPW0sWHIoMCwxMDk4Mjgsayks''@;'; put 'put ''dWVbMTk0OTU4XT0xKSxmPTB8REQoZixSKX19d2hpbGUoMCk7KGw9MHxhW0c+PjJdKT4+PjA+PSgwfGFbRD4+Ml0pPj4+MCYmKEcwKFIsMSksbD0wfGFbRz4+Ml0pLGFbRz4+Ml09bCsxLHVlW2w+PjBdPWYsbD0wfGFbdz4+Ml19cmV0dXJuKGw9MHxhW0c+PjJdKT4+PjA+PSgwfGFbRD4+Ml0p''@;'; put 'put ''Pj4+MCYmKEcwKFIsMSksbD0wfGFbRz4+Ml0pLHVlW2w+PjBdPTAsYVtHPj4yXT1EPTB8YVtSPj4yXSxHPTB8bmEoRCksazIoUiksb2U9SywwfEd9ZnVuY3Rpb24gREQobCxjKXtjfD0wO3ZhciBBLHcsYixmPTAscD0wLG09MCxrPTA7Zm9yKGI9b2Usb2U9b2UrMTZ8MCx1ZVsobT1iKT4+MF09''@;'; put 'put ''bHw9MCx1ZVttKzE+PjBdPTAsQT1jKzR8MCx3PWMrOHwwLGY9MHx6byhtPTB8U2sobSkpLHA9bTshKCgwfGYpPD0xKTspKGw9MHxhW0E+PjJdKT4+PjA+PSgwfGFbdz4+Ml0pPj4+MCYmKEcwKGMsMSksbD0wfGFbQT4+Ml0pLGs9MHx1ZVtwPj4wXSxhW0E+PjJdPWwrMSx1ZVtsPj4wXT1rLGY9''@;'; put 'put ''ZistMXwwLHA9cCsxfDA7cmV0dXJuIGs9MHx1ZVtwPj4wXSxIdChtKSxvZT1iLDB8a31mdW5jdGlvbiBhSihsKXt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wO3c9b2Usb2U9b2UrMzJ8MCxBPXcsYz13Kzh8MCxmPTB8YVsobHw9MCk+PjJdO2U6ZG97aWYoMzUhPSgwfHVlW2Y+PjBdKSl7YVtB''@;'; put 'put ''Pj4yXT1jLG09MDt0OmZvcig7Oyl7aWYoKDB8bSk+PTgpe2M9MDticmVhayBlfXN3aXRjaCgocD0wfHVlW2YrbT4+MF0pPDwyND4+MjQpe2Nhc2UgMDpjPTA7YnJlYWsgZTtjYXNlIDU5OmJyZWFrIHR9dWVbYz4+MF09cCxjPWMrMXwwLG09bSsxfDB9dWVbYz4+MF09MCwoYz0wfGN3KEEsMjM2''@;'; put 'put ''NjQsMjUyLDgsOTYpKT8oZj1mKyhtKzEpfDAsYz0wfGFbYys0Pj4yXSk6Yz0wfWVsc2V7Yz0yNTUmKEE9MHx1ZVtmKzE+PjBdKTt0OmRve2lmKCgzMnxBKTw8MjQ+PjI0PT0xMjApZm9yKEE9MCxtPTI7Oyl7aWYoKDB8bSk+PTgpe3A9QTticmVhayB0fWlmKGM9MjU1JihwPTB8dWVbZittPj4w''@;'; put 'put ''XSksKHArLTY1JjI1NSk+PTYpaWYoKHArLTk3JjI1NSk+PTYpe2lmKCEoKHArLTQ4JjI1NSk8MTApKXtwPUE7YnJlYWsgdH1wPS00OH1lbHNlIHA9LTg3O2Vsc2UgcD0tNTU7QT0oYz1wK2N8MCkrKEE8PDQpfDAsbT1tKzF8MH1lbHNlIGZvcihwPTAsbT0xOzspe2lmKCgwfG0pPj04fHwoYz0y''@;'; put 'put ''NTUmKEE9MHx1ZVtmK20+PjBdKSwoQSstNDgmMjU1KT49MTApKWJyZWFrIHQ7cD0oMTAqcHwwKS00OCtjfDAsbT1tKzF8MH19d2hpbGUoMCk7Zj0oYz01OT09KDB8YykpP2YrKG0rMSl8MDpmLGM9Yz9wOjB9fXdoaWxlKDApO3JldHVybiBhW2w+PjJdPWYsb2U9dywwfGN9ZnVuY3Rpb24gU2so''@;'; put 'put ''bCl7dmFyIG0sdyxrLGM9MCxmPTAscD0wLEE9MCxiPTA7Zm9yKGs9b2Usb2U9b2UrMTA1NnwwLHc9ays4fDAsYVsobT1rKT4+Ml09bHw9MCxvcyh3LDEwMjQsaysyNHwwKSxiPXcrNHwwLEE9dys4fDA7YVttPj4yXT1sKzEsKGM9MHx1ZVtsPj4wXSk8PDI0Pj4yNDspe2w9MjU1JmMsYzw8MjQ+''@;'; put 'put ''PjI0PT0zOD8obD0wfGFKKG0pKT9wPTU6KGw9MzgscD02KTpwPTU7ZG97aWYoNT09KDB8cCkpaWYocD0wLGw+Pj4wPDEyNylwPTY7ZWxzZXtpZihmPShjPTB8YVtiPj4yXSk+Pj4wPj0oMHxhW0E+PjJdKT4+PjAsbD4+PjA8MjA0Nyl7ZiYmKEcwKHcsMSksYz0wfGFbYj4+Ml0pLGFbYj4+Ml09''@;'; put 'put ''YysxLHVlW2M+PjBdPWw+Pj42fDE5MiwoYz0wfGFbYj4+Ml0pPj4+MD49KDB8YVtBPj4yXSk+Pj4wJiYoRzAodywxKSxjPTB8YVtiPj4yXSksbD02MyZsfDEyODticmVha31mJiYoRzAodywxKSxjPTB8YVtiPj4yXSksYVtiPj4yXT1jKzEsdWVbYz4+MF09bD4+PjEyfDIyNCwoYz0wfGFbYj4+''@;'; put 'put ''Ml0pPj4+MD49KDB8YVtBPj4yXSk+Pj4wJiYoRzAodywxKSxjPTB8YVtiPj4yXSksYVtiPj4yXT1jKzEsdWVbYz4+MF09bD4+PjYmNjN8MTI4LChjPTB8YVtiPj4yXSk+Pj4wPj0oMHxhW0E+PjJdKT4+PjAmJihHMCh3LDEpLGM9MHxhW2I+PjJdKSxsPTYzJmx8MTI4fX13aGlsZSgwKTs2PT0o''@;'; put 'put ''MHxwKSYmKGM9MHxhW2I+PjJdKT4+PjA+PSgwfGFbQT4+Ml0pPj4+MCYmKEcwKHcsMSksYz0wfGFbYj4+Ml0pLGFbYj4+Ml09YysxLHVlW2M+PjBdPWwsbD0wfGFbbT4+Ml19cmV0dXJuKGw9MHxhW2I+PjJdKT4+PjA+PSgwfGFbQT4+Ml0pPj4+MCYmKEcwKHcsMSksbD0wfGFbYj4+Ml0pLHVl''@;'; put 'put ''W2w+PjBdPTAsYVtiPj4yXT1BPTB8YVt3Pj4yXSxiPTB8bmEoQSksazIodyksb2U9aywwfGJ9ZnVuY3Rpb24gbEoobCl7bHw9MDt2YXIgbSx3LGM9MCxmPTAscD0wLEE9MDtmb3Iodz1vZSxvZT1vZSsxMDQwfDAsb3MobT13LDEwMjQsdysxNnwwKSxBPW0rNHwwLHA9bSs4fDA7Yz1sKzF8MCwo''@;'; put 'put ''Zj0wfHVlW2w+PjBdKTw8MjQ+PjI0OykoMjU1JmYpPDEyNz8oKGw9MHxhW0E+PjJdKT4+PjA+PSgwfGFbcD4+Ml0pPj4+MCYmKEcwKG0sMSksbD0wfGFbQT4+Ml0pLGFbQT4+Ml09bCsxLHVlW2w+PjBdPWYsbD1jKTooZj02MyZ1ZVtjPj4wXXxmPDw2JjI1NSwoYz0wfGFbQT4+Ml0pPj4+MD49''@;'; put 'put ''KDB8YVtwPj4yXSk+Pj4wJiYoRzAobSwxKSxjPTB8YVtBPj4yXSksYVtBPj4yXT1jKzEsdWVbYz4+MF09ZixsPWwrMnwwKTtyZXR1cm4obD0wfGFbQT4+Ml0pPj4+MD49KDB8YVtwPj4yXSk+Pj4wJiYoRzAobSwxKSxsPTB8YVtBPj4yXSksdWVbbD4+MF09MCxhW0E+PjJdPXA9MHxhW20+PjJd''@;'; put 'put ''LEE9MHxuYShwKSxrMihtKSxvZT13LDB8QX1mdW5jdGlvbiB4bGUobCxjKXt2YXIgcCxtLEEsdyxiLGssRCxmPTAsTT0wO3JldHVybiBEPW9lLG9lPW9lKzgwfDAscD1EKzQ4fDAsZj1EKzMyfDAsbT1EKzY0fDAsQT1EKzE2fDAsdz1ELCtfWyhiPTE2KyhjfD0wKXwwKT4+M10+PStfWzQ4KyhN''@;'; put 'put ''PTB8YVsoaz0xNisobHw9MCl8MCk+PjJdKT4+M10mJitfW00rNjQ+PjNdPj0rX1tjPj4zXSYmK19bYysyND4+M10+PStfW00rNTY+PjNdJiYrX1tNKzcyPj4zXT49K19bYys4Pj4zXT8oTT1NKzE2fDAsYVtmPj4yXT1hW2I+PjJdLGFbZis0Pj4yXT1hW2IrND4+Ml0sYVtmKzg+PjJdPWFbYis4''@;'; put 'put ''Pj4yXSxhW2YrMTI+PjJdPWFbYisxMj4+Ml0sYVtwPj4yXT1hW2M+PjJdLGFbcCs0Pj4yXT1hW2MrND4+Ml0sYVtwKzg+PjJdPWFbYys4Pj4yXSxhW3ArMTI+PjJdPWFbYysxMj4+Ml0sZnVuY3Rpb24gVGxlKGwsYyxmKXt2YXIgcDtwPS41KigrX1s4KyhmfD0wKT4+M10rICtfWzgrKGN8PTAp''@;'; put 'put ''Pj4zXSksX1sobHw9MCk+PjNdPS41KigrX1tmPj4zXSsgK19bYz4+M10pLF9bbCs4Pj4zXT1wfShBLGYscCksYVtmPj4yXT1hW00+PjJdLGFbZis0Pj4yXT1hW00rND4+Ml0sYVtmKzg+PjJdPWFbTSs4Pj4yXSxhW2YrMTI+PjJdPWFbTSsxMj4+Ml0sYVtwPj4yXT1hW0E+PjJdLGFbcCs0Pj4y''@;'; put 'put ''XT1hW0ErND4+Ml0sYVtwKzg+PjJdPWFbQSs4Pj4yXSxhW3ArMTI+PjJdPWFbQSsxMj4+Ml0scU4odyxmLHApLGFbbT4+Ml09bCxhW20rND4+Ml09MCxmPTB8YVsxMisoMHxhWzQrKDB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjJdKT4+Ml0sYVtwPj4yXT1hW3c+PjJdLGFbcCs0Pj4yXT1hW3cr''@;'; put 'put ''ND4+Ml0sYVtwKzg+PjJdPWFbdys4Pj4yXSxhW3ArMTI+PjJdPWFbdysxMj4+Ml0sZj0wfFJpWzEyNyZmXShtLHApKTpmPTAsb2U9RCwwfGZ9ZnVuY3Rpb24gTEQobCxjKXt2YXIgcCxtLEEsdyxiLGssTSxEO3JldHVybiBjfD0wLHA9b2Usb2U9b2UrODB8MCxiPXArNjR8MCxrPXArNDh8MCxE''@;'; put 'put ''PXArMzJ8MCxBPXArMTZ8MCxfWyhNPXApPj4zXT0uNSorX1syNCsobHw9MCk+PjNdLF9bTSs4Pj4zXT0uNSorX1tsKzMyPj4zXSxhW2s+PjJdPWFbKGw9bCs1NnwwKT4+Ml0sYVtrKzQ+PjJdPWFbbCs0Pj4yXSxhW2srOD4+Ml09YVtsKzg+PjJdLGFbaysxMj4+Ml09YVtsKzEyPj4yXSxhW2I+''@;'; put 'put ''PjJdPWFbTT4+Ml0sYVtiKzQ+PjJdPWFbTSs0Pj4yXSxhW2IrOD4+Ml09YVtNKzg+PjJdLGFbYisxMj4+Ml09YVtNKzEyPj4yXSxxTihELGssYiksdz0rX1tEPj4zXSxtPStfW0QrOD4+M10sYVtrPj4yXT1hW2w+PjJdLGFbays0Pj4yXT1hW2wrND4+Ml0sYVtrKzg+PjJdPWFbbCs4Pj4yXSxh''@;'; put 'put ''W2srMTI+PjJdPWFbbCsxMj4+Ml0sYVtiPj4yXT1hW00+PjJdLGFbYis0Pj4yXT1hW00rND4+Ml0sYVtiKzg+PjJdPWFbTSs4Pj4yXSxhW2IrMTI+PjJdPWFbTSsxMj4+Ml0sckooQSxrLGIpLG9lPXAsMHwoK19bYysxNj4+M10+PXcmJitfW0E+PjNdPj0rX1tjPj4zXSYmK19bYysyND4+M10+''@;'; put 'put ''PW0/K19bQSs4Pj4zXT49K19bYys4Pj4zXSYxOjApfWZ1bmN0aW9uIElsZShsLGMpe2N8PTA7dmFyIHcsYixrLE0sUixmPTAscD0wLG09MCxBPTAsRD0wO1I9b2Usb2U9b2UrODB8MCxNPVIrNDh8MCxrPVIsYj0wfGFbOCsobD0wfGFbKHc9MTYrKGx8PTApfDApPj4yXSk+PjJdO2U6ZG97aWYo''@;'; put 'put ''MCE9KDB8YikmJihBPWIrOHwwLGFbaz4+Ml09YVtBPj4yXSxhW2srND4+Ml09YVtBKzQ+PjJdLGFbays4Pj4yXT1hW0ErOD4+Ml0sYVtrKzEyPj4yXT1hW0ErMTI+PjJdLGFbaysxNj4+Ml09YVtBKzE2Pj4yXSxhW2srMjA+PjJdPWFbQSsyMD4+Ml0sYVtrKzI0Pj4yXT1hW0ErMjQ+PjJdLGFb''@;'; put 'put ''aysyOD4+Ml09YVtBKzI4Pj4yXSxhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW00rMTY+PjJdPWFbYysxNj4+Ml0sYVtNKzIwPj4yXT1hW2MrMjA+PjJdLGFbTSsyND4+Ml09YVtjKzI0Pj4yXSxh''@;'; put 'put ''W00rMjg+PjJdPWFbYysyOD4+Ml0sMCE9KDB8dVYoayxNKSkpKXtmb3IoZj1iKzR8MCxsPTA7ISgoMHxsKT49KDB8YVtmPj4yXSkpOyl7bT0oMHxhW2I+PjJdKSsoNDgqbHwwKXwwLEE9KHA9aykrNDh8MDtkb3thW3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0rNHwwfXdoaWxlKCgwfHApPCgw''@;'; put 'put ''fEEpKTtpZihhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW00rMTY+PjJdPWFbYysxNj4+Ml0sYVtNKzIwPj4yXT1hW2MrMjA+PjJdLGFbTSsyND4+Ml09YVtjKzI0Pj4yXSxhW00rMjg+PjJdPWFb''@;'; put 'put ''YysyOD4+Ml0sKDB8RGxlKGssTSkpPDwyND4+MjQpe2w9MTticmVhayBlfWw9bCsxfDB9bD0wfGFbdz4+Ml0sRD03fWVsc2UgRD03fXdoaWxlKDApO2Rve2lmKDc9PSgwfEQpKXtpZigwfChsPTB8YVtsKzk2Pj4yXSkmJihhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00r''@;'; put 'put ''OD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW00rMTY+PjJdPWFbYysxNj4+Ml0sYVtNKzIwPj4yXT1hW2MrMjA+PjJdLGFbTSsyND4+Ml09YVtjKzI0Pj4yXSxhW00rMjg+PjJdPWFbYysyOD4+Ml0sKDB8TEQobCxNKSk8PDI0Pj4yNCkpe2w9MTticmVha31sPTB9fXdo''@;'; put 'put ''aWxlKDApO3JldHVybiBvZT1SLDB8bH1mdW5jdGlvbiB1VihsLGMpe3JldHVybiAwfCgrX1sxNisobHw9MCk+PjNdPj0rX1soY3w9MCk+PjNdJiYrX1tjKzE2Pj4zXT49K19bbD4+M10mJitfW2wrMjQ+PjNdPj0rX1tjKzg+PjNdPytfW2MrMjQ+PjNdPj0rX1tsKzg+PjNdJjE6MCl9ZnVuY3Rp''@;'; put 'put ''b24gRGxlKGwsYyl7Y3w9MDt2YXIgbSxiLGssTSxSLGY9MCxwPTAsQT0wLHc9MCxEPTA7Zm9yKFI9b2Usb2U9b2UrOTZ8MCxNPVIrNjR8MCxrPVIrNDh8MCxiPVIrMzJ8MCxtPVIrMTZ8MCxBPVIsKGY9MHxhWyhEPTQrKGx8PTApfDApPj4yXSl8fEJyKDEwOTkzNywxMDc2NjEsMTYzNywxMDk5''@;'; put 'put ''NDUpLGFbQT4+Ml09YVsocD0wfGFbbD4+Ml0pPj4yXSxhW0ErND4+Ml09YVtwKzQ+PjJdLGFbQSs4Pj4yXT1hW3ArOD4+Ml0sYVtBKzEyPj4yXT1hW3ArMTI+PjJdLHA9MTs7KXtpZigoMHxwKT49KDB8Zikpe3c9NzticmVha31pZihhW20+PjJdPWFbKGY9KDB8YVtsPj4yXSkrKHA8PDQpfDAp''@;'; put 'put ''Pj4yXSxhW20rND4+Ml09YVtmKzQ+PjJdLGFbbSs4Pj4yXT1hW2YrOD4+Ml0sYVttKzEyPj4yXT1hW2YrMTI+PjJdLGFbYj4+Ml09YVtmPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLGFbaz4+Ml09YVtBPj4yXSxhW2sr''@;'; put 'put ''ND4+Ml09YVtBKzQ+PjJdLGFbays4Pj4yXT1hW0ErOD4+Ml0sYVtrKzEyPj4yXT1hW0ErMTI+PjJdLGFbTT4+Ml09YVtjPj4yXSxhW00rND4+Ml09YVtjKzQ+PjJdLGFbTSs4Pj4yXT1hW2MrOD4+Ml0sYVtNKzEyPj4yXT1hW2MrMTI+PjJdLGFbTSsxNj4+Ml09YVtjKzE2Pj4yXSxhW00rMjA+''@;'; put 'put ''PjJdPWFbYysyMD4+Ml0sYVtNKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbTSsyOD4+Ml09YVtjKzI4Pj4yXSwtMSE9KDB8bU4oYixrLE0pKSl7Zj0xO2JyZWFrfWFbQT4+Ml09YVttPj4yXSxhW0ErND4+Ml09YVttKzQ+PjJdLGFbQSs4Pj4yXT1hW20rOD4+Ml0sYVtBKzEyPj4yXT1hW20rMTI+PjJd''@;'; put 'put ''LHA9cCsxfDAsZj0wfGFbRD4+Ml19ZG97aWYoNz09KDB8dykpe2lmKDB8KGY9MHxhW2wrOD4+Ml0pJiYodz0wfGFbbD4+Ml0sYVtiPj4yXT1hWyhBPWwrMTZ8MCk+PjJdLGFbYis0Pj4yXT1hW0ErND4+Ml0sYVtiKzg+PjJdPWFbQSs4Pj4yXSxhW2IrMTI+PjJdPWFbQSsxMj4+Ml0sYVtrPj4y''@;'; put 'put ''XT1hW3c+PjJdLGFbays0Pj4yXT1hW3crND4+Ml0sYVtrKzg+PjJdPWFbdys4Pj4yXSxhW2srMTI+PjJdPWFbdysxMj4+Ml0sYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sYVtNKzE2Pj4yXT1hW2Mr''@;'; put 'put ''MTY+PjJdLGFbTSsyMD4+Ml09YVtjKzIwPj4yXSxhW00rMjQ+PjJdPWFbYysyND4+Ml0sYVtNKzI4Pj4yXT1hW2MrMjg+PjJdLCgwfHNKKGIsaywwLE0pKTw8MjQ+PjI0KSl7Zj0xO2JyZWFrfWlmKDB8KGY9MHxhW2wrMTI+PjJdKSYmKEQ9KDB8YVtsPj4yXSkrKCgwfGFbRD4+Ml0pLTE8PDQp''@;'; put 'put ''fDAsYVtiPj4yXT1hWyh3PWwrMzJ8MCk+PjJdLGFbYis0Pj4yXT1hW3crND4+Ml0sYVtiKzg+PjJdPWFbdys4Pj4yXSxhW2IrMTI+PjJdPWFbdysxMj4+Ml0sYVtrPj4yXT1hW0Q+PjJdLGFbays0Pj4yXT1hW0QrND4+Ml0sYVtrKzg+PjJdPWFbRCs4Pj4yXSxhW2srMTI+PjJdPWFbRCsxMj4+''@;'; put 'put ''Ml0sYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sYVtNKzE2Pj4yXT1hW2MrMTY+PjJdLGFbTSsyMD4+Ml09YVtjKzIwPj4yXSxhW00rMjQ+PjJdPWFbYysyND4+Ml0sYVtNKzI4Pj4yXT1hW2MrMjg+''@;'; put 'put ''PjJdLCgwfHNKKGIsaywwLE0pKTw8MjQ+PjI0KSl7Zj0xO2JyZWFrfWY9MH19d2hpbGUoMCk7cmV0dXJuIG9lPVIsMHxmfWZ1bmN0aW9uIHNKKGwsYyxmLHApe2N8PTA7dmFyIEEsdyxiLGssTSxELG09MCxSPTA7cmV0dXJuIE09b2Usb2U9b2UrMTYwfDAsQT1NKzE0NHwwLEQ9TSs5NnwwLHc9''@;'; put 'put ''TSs2NHwwLGI9TSszMnwwLGs9TSxSPStfWzE2KyhwfD0wKT4+M10sYVsobT1NKzEyOHwwKT4+Ml09YVsobHw9MCk+PjJdLGFbbSs0Pj4yXT1hW2wrND4+Ml0sYVttKzg+PjJdPWFbbCs4Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+''@;'; put 'put ''Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sVnMoRCxtLEEsMSksbT1SPj0rX1tEPj4zXSYmKGFbbT4+Ml09YVtsPj4yXSxhW20rND4+Ml09YVtsKzQ+PjJdLGFbbSs4Pj4yXT1hW2wrOD4+Ml0sYVttKzEyPj4yXT1hW2wrMTI+PjJdLGFbQT4+Ml09YVtjPj4y''@;'; put 'put ''XSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLFZzKHcsbSxBLDEpLCtfW3crMTY+PjNdPj0rX1twPj4zXSkmJihSPStfW3ArMjQ+PjNdLGFbbT4+Ml09YVtsPj4yXSxhW20rND4+Ml09YVtsKzQ+PjJdLGFbbSs4Pj4yXT1hW2wr''@;'; put 'put ''OD4+Ml0sYVttKzEyPj4yXT1hW2wrMTI+PjJdLGFbQT4+Ml09YVtjPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLFZzKGIsbSxBLDEpLFI+PStfW2IrOD4+M10pJiYoYVttPj4yXT1hW2w+PjJdLGFbbSs0Pj4yXT1hW2wr''@;'; put 'put ''ND4+Ml0sYVttKzg+PjJdPWFbbCs4Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sVnMoayxtLEEsMSksK19baysyND4+M10+PStfW3ArOD4+M10pPzE6''@;'; put 'put ''MCxvZT1NLDB8bX1mdW5jdGlvbiBYZChsLGMpe3ZhciBmO2N8PTAsKGY9MHxMaShsfD0wLDExMDA1NikpJiYoYz0wfHVlW2Y+PjBdPzB8ZnVuY3Rpb24gTGxlKGwsYyl7bHw9MCxjfD0wO3ZhciBwLG0sZj0wO209b2Usb2U9b2UrMTZ8MCxwPW07ZTpkb3tpZigwIT0oMHxsKSYmKGY9MHx1ZVts''@;'; put 'put ''Pj4wXSxmPDwyND4+MjQhPTApKXtzd2l0Y2goZjw8MjQ+PjI0fDApe2Nhc2UgNDg6Yz0yO2JyZWFrIGU7Y2FzZSA1NzpjYXNlIDU2OmNhc2UgNTU6Y2FzZSA1NDpjYXNlIDUzOmNhc2UgNTI6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Yz0xMDticmVhayBlO2Nhc2UgNjc6Y2FzZSA5OTppZigh''@;'; put 'put ''KDB8QTAoZj1sKzF8MCwxMDk5NjApKSl7Yz00O2JyZWFrIGV9aWYoISgwfEEwKGYsMTA5OTY2KSkpe2M9MTI7YnJlYWsgZX1icmVhaztjYXNlIDcwOmNhc2UgMTAyOmlmKCEoMHxBMChsKzF8MCwxMDk5NzQpKSl7Yz0yO2JyZWFrIGV9YnJlYWs7Y2FzZSA3NjpjYXNlIDEwODppZighKDB8QTAo''@;'; put 'put ''bCsxfDAsMTA5OTc5KSkpe2M9MjticmVhayBlfWJyZWFrO2Nhc2UgNzg6Y2FzZSAxMTA6aWYoISgwfEEwKGY9bCsxfDAsMTA5OTgzKSkpe2M9MDticmVhayBlfWlmKCEoMHxBMChmLDEwOTk4NykpKXtjPTI7YnJlYWsgZX1icmVhaztjYXNlIDc5OmNhc2UgMTExOmlmKCEoMHxBMChsKzF8MCwx''@;'; put 'put ''MDk5ODkpKSl7Yz04O2JyZWFrIGV9YnJlYWs7Y2FzZSA4MDpjYXNlIDExMjppZighKDB8QTAobCsxfDAsMTA5OTk0KSkpe2M9NjticmVhayBlfWJyZWFrO2Nhc2UgODM6Y2FzZSAxMTU6aWYoISgwfEEwKGwrMXwwLDExMDAwMikpKXtjPTEwO2JyZWFrIGV9YnJlYWs7Y2FzZSA4NDpjYXNlIDEx''@;'; put 'put ''NjppZighKDB8QTAobCsxfDAsMTEwMDA4KSkpe2M9MTA7YnJlYWsgZX1icmVhaztjYXNlIDg5OmNhc2UgMTIxOmlmKCEoMHxBMChsKzF8MCwxMTAwMTIpKSl7Yz0xMDticmVhayBlfX1hW3A+PjJdPWwsWHIoMCwxMTAwMTUscCl9fXdoaWxlKDApO3JldHVybiBvZT1tLDB8Y30oZixjKTowKSxU''@;'; put 'put ''dFsobD0xMzYrKDB8YVtsKzE2Pj4yXSl8MCk+PjFdPWN8YXJbbD4+MV19ZnVuY3Rpb24gY1YobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwPStwO3ZhciBLLG1lLE9lLExlLEJlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscGU9MCxiZT0wLEhlPTA7QmU9b2Usb2U9b2UrMzJ8''@;'; put 'put ''MCxLPUJlKzE2fDAsbWU9QmUsT2U9MSYobXw9MCksTGU9MiZtO2U6ZG97aWYoMj09KDB8ZikpYmU9K19bbCsxNj4+M10sQT0rX1tsPj4zXSxrPStfW2wrMjQ+PjNdLGI9K19bbCs4Pj4zXSxBLT1iZS1BLF9bSz4+M109QSxfW21lPj4zXT1iZSxiLT1rLWIsX1tLKzg+PjNdPWIsX1ttZSs4Pj4z''@;'; put 'put ''XT1rO2Vsc2UgZm9yKHc9K19bbD4+M10sX1ttZT4+M109dyxfW0s+PjNdPXcsaz0rX1tsKzg+PjNdLEQ9bWUrOHwwLF9bRD4+M109ayxSPUsrOHwwLF9bUj4+M109ayxtPTAsQT13LGI9azs7KXtpZigoMHxtKT49KDB8Zikpe2JlPXc7YnJlYWsgZX1fW0s+PjNdPU09K19bKChwZT0rX1soSGU9''@;'; put 'put ''bCsobTw8NCl8MCk+PjNdKTxBP0hlOkspPj4zXSxfW1I+PjNdPUc9K19bKChiZT0rX1tsKyhtPDw0KSs4Pj4zXSk8Yj9IZTpLKSs4Pj4zXSxfW21lPj4zXT1wZT0rX1socGU+dz9IZTptZSk+PjNdLF9bRD4+M109YmU9K19bKGJlPms/SGU6bWUpKzg+PjNdLG09bSsxfDAsQT1NLGI9Ryx3PXBl''@;'; put 'put ''LGs9YmV9fXdoaWxlKDApO3BlPSh3PS41KihiZS1BKSkrQSxNPShHPS41KihrLWIpKStiLE9lPyhwPStGMCgrKEcqRyt3KncpKSxfW2MrOD4+M109MHxMZT9NOi1NLF9bYz4+M109cGUsX1tjKzE2Pj4zXT0uMjUqcCxfW2MrMjQ+PjNdPXApOihBPWstTSxiPStJYSgrKGs9cCkpLGs9K2xhKCtr''@;'; put 'put ''KSxMZT8odz1NLShBKj1iKSxBKz1NKToodz1iKkEtTSxBPS1NLUcqYiksX1tjKzg+PjNdPXcsX1tjKzI0Pj4zXT1BLF9bYz4+M109cGUtKHA9ayooYmUtcGUpKSxfW2MrMTY+PjNdPXArcGUpLG9lPUJlfWZ1bmN0aW9uIFE3KGwsYyl7dmFyIHAsbSxmPTA7bT0wfGFbKHA9MTYrKGx8PTApfDAp''@;'; put 'put ''Pj4yXSwoY3w9MCk8PDI0Pj4yND8oX1ttKzg4Pj4zXT1mPTM2KitfW20rNDA+PjNdLGw9bSszMnwwKTooX1ttKzg4Pj4zXT1mPTM2KitfW20rMzI+PjNdLGw9bSs0MHwwKSxfW20rOTY+PjNdPWYsX1s4MCsoMHxhW3A+PjJdKT4+M109NzIqK19bbD4+M119ZnVuY3Rpb24gY0oobCxjLGYscCl7''@;'; put 'put ''dmFyIG07cHw9MCxhWyhmfD0wKT4+Ml09KG09KDB8KGw9MHxhWzIzNisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkpPigwfChjPTB8YVsyMzYrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pKSk/YzpsLGFbcD4+Ml09bT9sOmN9ZnVuY3Rpb24gZkoobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFy''@;'; put 'put ''IE0sbT0wLEE9MCx3PTAsYj0wLGs9MCxEPTA7TT1vZSxvZT1vZSsxNnwwLEE9TSs0fDAsbT1NLGw9MHxhWzE2KyhsfD0wKT4+Ml07ZG97aWYoMT09KDB8dWVbbCsxNTY+PjBdKSl7aWYoaz0wfGFbbCsyMzY+PjJdLDB8YVtsKzE3Nj4+Ml0pe2Zvcih3PTB8YVtsKzE4MD4+Ml0sbD0wLG09MCxB''@;'; put 'put ''PTA7Yj0wfGFbdysoQTw8Mik+PjJdOylsPShiPSgwfChEPTB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2I+PjJdfDApP2I6YistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPigwfGYpKT8oMHxEKTwoMHxwKT9sOjE6bCxtPWI/bToxLEE9QSsxfDA7aWYobTw8MjQ+PjI0IT0wJmw8PDI0''@;'; put 'put ''Pj4yND09MCl7YVtjPj4yXT1rKzE7YnJlYWt9aWYoIShtPDwyND4+MjQ9PTAmbDw8MjQ+PjI0IT0wKSlicmVhazthW2MrND4+Ml09aystMTticmVha31pZigyIT0oMHxhW2wrMTg0Pj4yXSkmJkJyKDg4Mzk3LDg4NDE3LDYzLDg4NDI0KSxjSigwfGFbKDI9PSgzJmFbKEQ9MHxhWyh3PTB8YVts''@;'; put 'put ''KzE4MD4+Ml0pPj4yXSk+PjJdfDApP0Q6RCstNDh8MCkrNDA+PjJdLDB8YVsoMj09KDMmYVsodz0wfGFbdys0Pj4yXSk+PjJdfDApP3c6dystNDh8MCkrNDA+PjJdLEEsbSksKDB8KHc9MHxhW20+PjJdKSk8PSgwfGYpKXthW2M+PjJdPWssYVtjKzg+PjJdPWs7YnJlYWt9aWYoKDB8KGw9MHxh''@;'; put 'put ''W0E+PjJdKSk+PSgwfHApKXthW2MrND4+Ml09ayxhW2MrMTI+PjJdPWs7YnJlYWt9aWYoISgoQT0oMHx3KT4oMHxwKSkmKG09KDB8bCk8KDB8ZikpKSl7aWYoIW0mJiEoKDB8dyk8KDB8cCkmKDB8bCk9PSgwfGYpKXx8KGFbYys4Pj4yXT1rKSwhKEF8fCgwfHcpPT0oMHxwKSYoMHxsKT4oMHxm''@;'; put 'put ''KSkpYnJlYWs7YVtjKzEyPj4yXT1rfX19d2hpbGUoMCk7b2U9TX1mdW5jdGlvbiBNayhsKXt2YXIgYztmMChsfD0wLDEzNzQ0NywzMDQsMSksVnkobCksYz0wfG1yKCgwfGFyWzE3NisoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4xXSk8PDMpLGFbMTMyKygwfGFbbCsxNj4+Ml0pPj4yXT1jLFE3''@;'; put 'put ''KGwsMSZhWzExNisoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4yXSl9ZnVuY3Rpb24gUGxlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEEsdyxrLEcscGUsbT0wLGI9MCxNPTAsRD0wLFI9MCxLPTAsbWU9MCxiZT0wO3BlPW9lLG9lPW9lKzY0fDAsdz1wZSs0OHwwLEQ9cGUrNDB8''@;'; put 'put ''MCxiPXBlKzI0fDAsQT1wZSs4fDAsRz1wZSs1NnwwLGs9cGU7ZG97aWYoMCE9KDB8bCkmJihSPTB8YVsxMzIrKDB8YVsoSz1mKzE2fDApPj4yXSk+PjJdLG09MHxGbyhmLGwpLDAhPSgwfHVlW20+PjBdKSkpe2lmKHVlW0c+PjBdPTAsbD1SKzh8MCwoMHxhWzQ3MTM3XSk+MiYmKGFbQT4+Ml09''@;'; put 'put ''UixhW0ErND4+Ml09bCxhW0ErOD4+Ml09UisxNixhW0ErMTI+PjJdPUcsKDB8JGEobSw4ODUzNSxBKSk+Mikpe3VlWzExOSsoMHxhW0s+PjJdKT4+MF09MSxtPTB8YVs0NzEzN107ZTpkb3tpZigrX1syMzI5M10+MClmb3IobD0wOzspe2lmKCgwfGwpPj0oMHxtKSlicmVhayBlO19bKEQ9Uiso''@;'; put 'put ''bDw8Myl8MCk+PjNdPStfW0Q+PjNdLytfWzIzMjkzXSxsPWwrMXwwfX13aGlsZSgwKTtpZigoMHxtKT4zJiZWRChmLHAsMyksMzMhPSgwfHVlW0c+PjBdKSl7aWYoIWMpe2w9MTticmVha31pZighKCgwfHIxKDB8Rm8oZixjKSkpPDwyND4+MjQpKXtsPTE7YnJlYWt9fXVlWzExOSsoMHxhW0s+''@;'; put 'put ''PjJdKT4+MF09MyxsPTE7YnJlYWt9aWYoYVtiPj4yXT1SLGFbYis0Pj4yXT1sLGFbYis4Pj4yXT1HLCgwfCRhKG0sMTAxNzQ5LGIpKTw9MSl7YVt3Pj4yXT0wfCRyKGYpLGFbdys0Pj4yXT1tLFhyKDEsODg1NDksdyksbD0wO2JyZWFrfXVlWzExOSsoMHxhW0s+PjJdKT4+MF09MSxtPTB8YVs0''@;'; put 'put ''NzEzN107ZTpkb3tpZigrX1syMzI5M10+MClmb3IobD0wOzspe2lmKCgwfGwpPj0oMHxtKSlicmVhayBlO19bKGI9UisobDw8Myl8MCk+PjNdPStfW2I+PjNdLytfWzIzMjkzXSxsPWwrMXwwfX13aGlsZSgwKTtkb3tpZigoMHxtKT4yKXtpZigwfChsPTB8YVs0NzE3MV0pJiYwfChNPTB8Rm8o''@;'; put 'put ''ZixsKSkmJihhW0Q+PjJdPWssMT09KDB8JGEoTSwxMDEyMDksRCkpKSl7bWU9K19baz4+M10sX1tSKzE2Pj4zXT0oYmU9K19bMjMyOTNdKT4wP21lL2JlOm1lLFZEKGYscCwzKTticmVha314ayhmLHApfX13aGlsZSgwKTtpZigzMyE9KDB8dWVbRz4+MF0pKXtpZighYyl7bD0xO2JyZWFrfWlm''@;'; put 'put ''KCEoKDB8cjEoMHxGbyhmLGMpKSk8PDI0Pj4yNCkpe2w9MTticmVha319dWVbMTE5KygwfGFbSz4+Ml0pPj4wXT0zLGw9MX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9cGUsMHxsfWZ1bmN0aW9uIE5sZShsLGMpe2N8PTA7dmFyIGIsayxNLEcsZj0wLHA9MCxtPTAsQT0wLHc9MCxEPTAs''@;'; put 'put ''Uj0wO2ZvcihHPW9lLG9lPW9lKzQ4fDAsaz1HKzMyfDAsRD1HLGI9MHxzaShsfD0wLDAsMTAyNjM3LDApLGY9MHxzaShsLDAsMTAyNjcxLDApLFI9KDB8SjYoMHxMaShsLDg4NTkzKSwwKSk8PDI0Pj4yNCE9MCxmfHwoZj0wfHNpKGwsMCwxMDI2NzEsMTk1MDU5KSksZnVuY3Rpb24gTkQobCl7''@;'; put 'put ''T0oobHw9MCwwKX0obCksTT1sKzE2fDAsQT0wOzspe2lmKCEodz0wfGFbKDB8YVsxNTIrKDB8YVtNPj4yXSk+PjJdKSsoQTw8Mik+PjJdKSl7cD0xMjticmVha31pZighKDB8dWVbMTE5KyhwPTB8YVsobT13KzE2fDApPj4yXSk+PjBdKSl7aWYoMHxuMigwfCRyKHcpLDEwODAwNiw3KSl7cD04''@;'; put 'put ''O2JyZWFrfXA9MHxhW20+PjJdfTB8KHA9MHxhW3ArMTA4Pj4yXSkmJkVrKHcscCwxMDI2MzMpLEE9QSsxfDB9ZTpkb3tpZig4PT0oMHxwKSlSPTB8JHIodyksZj0wfCRyKGwpLGFbaz4+Ml09UixhW2srND4+Ml09ZixYcigxLDg4NjA1LGspLGY9LTE7ZWxzZSBpZigxMj09KDB8cCkpe2lmKGhK''@;'; put 'put ''KGwsYixmKSx3PTB8VmxlKGwpLDB8YVs4OCsoZj0wfGFbOCsoMHxhW00+PjJdKT4+Ml0pPj4yXT8oYVtmKzg0Pj4yXT0wLGY9MSk6Zj0wLChBPTAhPSgwfGYpKXwobT0wIT0oMHxjKSkmMT09KDB8YVs0NzEzNF0pXjF8fDA9PSgwfEs1KGwpKT9wPTA6KChwPTB8YVsxMisoMHxhW00+PjJdKT4+''@;'; put 'put ''Ml0pJiYodWVbcCs4MT4+MF09MCkscD0xKSxYNihsKSxBJiYoYz0xNisoMHxhW00+PjJdKXwwLEZyZShELGwpLGFbYz4+Ml09YVtEPj4yXSxhW2MrND4+Ml09YVtEKzQ+PjJdLGFbYys4Pj4yXT1hW0QrOD4+Ml0sYVtjKzEyPj4yXT1hW0QrMTI+PjJdLGFbYysxNj4+Ml09YVtEKzE2Pj4yXSxh''@;'; put 'put ''W2MrMjA+PjJdPWFbRCsyMD4+Ml0sYVtjKzI0Pj4yXT1hW0QrMjQ+PjJdLGFbYysyOD4+Ml09YVtEKzI4Pj4yXSksIW0pZm9yKGFbNDcxMzhdPTEscD0wfEx0KGwpOzspe2lmKCFwKWJyZWFrIGU7X1sxNisoUj0wfGFbcCsxNj4+Ml0pPj4zXT03MiorX1soRD0wfGFbUisxMzI+PjJdKT4+M10s''@;'; put 'put ''X1tSKzI0Pj4zXT03MiorX1tEKzg+PjNdLHA9MHx6dChsLHApfWRve2lmKCEoUnxBKSl7aWYoMD09K19bMTYrKFI9MHxhW00+PjJdKT4+M10mJjA9PStfW1IrMjQ+PjNdKWJyZWFrO1NKKGwpfX13aGlsZSgwKTtpZigwIT0oMHx3KSYocHwoMHx2VihsKSk8PDI0Pj4yNCE9MCkpamxlKGwpO2Vs''@;'; put 'put ''c2UgaWYoMj09KDB8dykpe2FbNDcxMzhdPTE7YnJlYWt9UEQobCwwKX19d2hpbGUoMCk7cmV0dXJuIG9lPUcsMHxmfWZ1bmN0aW9uIEVrKGwsYyxmKXtjfD0wO3ZhciBwLG0sQSxiLHc9MDtiPW9lLG9lPW9lKzQ4fDAsdz1iKzMyfDAscD1iKzI0fDAsbT1iKzE2fDAsQT1iLDB8KGw9MHxMaShs''@;'; put 'put ''fD0wLGZ8PTApKSYmKGFbdz4+Ml09cCxhW3crND4+Ml09bSwyPT0oMHwkYShsLDEwNTUwMyx3KSkpJiYodz1jKzU2fDAsZEooQSwrX1twPj4zXSwrX1ttPj4zXSksYVt3Pj4yXT1hW0E+PjJdLGFbdys0Pj4yXT1hW0ErND4+Ml0sYVt3Kzg+PjJdPWFbQSs4Pj4yXSxhW3crMTI+PjJdPWFbQSsx''@;'; put 'put ''Mj4+Ml0sdWVbYys4MT4+MF09MSksb2U9Yn1mdW5jdGlvbiBoSihsLGMsZil7Znw9MDt2YXIgbSxBLHcsYixrLHA9MCxNPTA7az1vZSxvZT1vZSs0OHwwLGI9ayszMnwwLHA9aysyNHwwLG09aysxNnwwLEE9ayx3PTE2KyhsfD0wKXwwLDB8KGN8PTApJiYwIT0oMHxhWzEyKygwfGFbdz4+Ml0p''@;'; put 'put ''Pj4yXSkmJihNPTB8Rm8obCxjKSxhW2I+PjJdPXAsYVtiKzQ+PjJdPW0sMj09KDB8JGEoTSwxMDU1MDMsYikpKSYmKE09NTYrKDB8YVsxMisoMHxhW3c+PjJdKT4+Ml0pfDAsZEooQSwrX1twPj4zXSwrX1ttPj4zXSksYVtNPj4yXT1hW0E+PjJdLGFbTSs0Pj4yXT1hW0ErND4+Ml0sYVtNKzg+''@;'; put 'put ''PjJdPWFbQSs4Pj4yXSxhW00rMTI+PjJdPWFbQSsxMj4+Ml0sdWVbODErKDB8YVsxMisoMHxhW3c+PjJdKT4+Ml0pPj4wXT0xKTtlOmRve2lmKDB8Zilmb3IocD0wfHdzKGwpOzspe2lmKCFwKWJyZWFrIGU7cEoocCxsLGMsZikscD0wfGJzKHApfX13aGlsZSgwKTtvZT1rfWZ1bmN0aW9uIFZs''@;'; put 'put ''ZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtpZigwfGJmKGx8PTApKWlmKDA9PSgwfChtPTB8c2kobCwyLDEwMjYyMywwKSkpfCgwfGFbNDcxMzRdKTwyKWM9MDtlbHNle2ZvcihjPTAscD0wfEx0KGwpO3A7KXtmb3IoZj0wfHkwKGwscCk7ZjspQT1jKygwIT0oMHxabGUobSxmKSkmMSl8''@;'; put 'put ''MCxmPTB8azAobCxmKSxjPUE7cD0wfHp0KGwscCl9Yz1jPyhjPSgwfGMpPT0oMHxiZihsKSkpPzI6MTowfWVsc2UgYz0yO3JldHVybiAwfGN9ZnVuY3Rpb24gamxlKGwpe3ZhciBjPTAsZj0wLHA9MDtmb3IoZj0wfEx0KGx8PTApO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspSUQoYyksVnUoMHxh''@;'; put 'put ''Wzk2KygwfGFbKHA9YysxNnwwKT4+Ml0pPj4yXSksVnUoMHxhWzEwOCsoMHxhW3A+PjJdKT4+Ml0pLFZ1KDB8YVsxMDArKDB8YVtwPj4yXSk+PjJdKSxWdSgwfGFbMTA0KygwfGFbcD4+Ml0pPj4yXSksYz0wfGswKGwsYyk7Zj0wfHp0KGwsZil9fWZ1bmN0aW9uIFpsZShsLGMpe3ZhciBLLHBl''@;'; put 'put ''LG1lLGJlLE9lLExlLEJlLEhlLGplLGV0LHJ0LGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsR2U9MCxsdD0wO3J0PW9lLG9lPW9lKzk2fDAsamU9cnQrNzJ8MCxCZT1ydCs1NnwwLGV0PXJ0KzQ4fDAsSGU9cnQrMzJ8MCxMZT1ydCsxNnwwLEs9cnQrODh8MCxw''@;'; put 'put ''ZT1ydCs4fDAsbWU9cnQsYmU9cnQrODR8MCxPZT1ydCs4MHwwLGw9MHxGbyhjfD0wLGx8PTApO2Rve2lmKDB8dWVbbD4+MF0pe01DKGMsYmUsT2UpLEc9MSxwPTAsZj0wLHc9MCxBPTAsYj0wLG09MDtlOmZvcig7Oyl7aWYoYVtMZT4+Ml09cGUsYVtMZSs0Pj4yXT1tZSxhW0xlKzg+PjJdPUss''@;'; put 'put ''Mj09KDB8JGEobCw4ODY0MixMZSkpPyhSPTEsbD1sKygwfGFbSz4+Ml0pfDAsQT0rX1twZT4+M10sbT0rX1ttZT4+M10pOlI9ZixhW0hlPj4yXT1wZSxhW0hlKzQ+PjJdPW1lLGFbSGUrOD4+Ml09SywyPT0oMHwkYShsLDg4NjU0LEhlKSk/KEQ9MSxsPWwrKDB8YVtLPj4yXSl8MCx3PStfW3Bl''@;'; put 'put ''Pj4zXSxiPStfW21lPj4zXSk6RD1wLCEoKDB8KGs9MHx6bGUobCkpKT4zJjE9PSgwfCgwfGspJTMpKSl7Zj04O2JyZWFrfWZvcihmPU09MHxRbihrPDw0KSxwPWs7cDspe2lmKGFbQmU+PjJdPXBlLGFbQmUrND4+Ml09bWUsYVtCZSs4Pj4yXT1LLCgwfCRhKGwsODg3MjQsQmUpKTwyKXtmPTEz''@;'; put 'put ''O2JyZWFrIGV9R2U9bCsoMHxhW0s+PjJdKXwwLF9bZj4+M109K19bcGU+PjNdLF9bZis4Pj4zXT0rX1ttZT4+M10sZj1mKzE2fDAscD1wKy0xfDAsbD1HZX1mb3IoO3A9bCsxfDAsMHxLYygoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0KTspbD1wO2ZvcihsPShHZT1mPDwyND4+MjQ9PTApP2w6cCxH''@;'; put 'put ''PUdlPzA6RyxwPTB8Tk4oYyxrKSwwfFImJihhW3ArOD4+Ml09YVtiZT4+Ml0sX1twKzE2Pj4zXT1BLF9bcCsyND4+M109bSksMHxEJiYoYVtwKzEyPj4yXT1hW09lPj4yXSxfW3ArMzI+PjNdPXcsX1twKzQwPj4zXT1iKSxmPTA7ISgoMHxmKT49KDB8aykpOylhWyhHZT0oMHxhW3A+PjJdKSso''@;'; put 'put ''Zjw8NCl8MCk+PjJdPWFbKGx0PU0rKGY8PDQpfDApPj4yXSxhW0dlKzQ+PjJdPWFbbHQrND4+Ml0sYVtHZSs4Pj4yXT1hW2x0Kzg+PjJdLGFbR2UrMTI+PjJdPWFbbHQrMTI+PjJdLGY9ZisxfDA7aWYoSHQoTSksIUcpe2Y9MjY7YnJlYWt9cD1ELGY9Un1pZig4PT0oMHxmKSl7aWYoSUQoYyks''@;'; put 'put ''MHx1ZVsxOTM3NzFdKXtsPTA7YnJlYWt9dWVbMTkzNzcxXT0xLGx0PTB8JHIoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pLGw9MHwkcigwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pLGFbZXQ+PjJdPWx0LGFbZXQrND4+Ml09bCxYcigwLDg4''@;'; put 'put ''NjY3LGV0KSxsPTA7YnJlYWt9aWYoMTM9PSgwfGYpKXswfHVlWzE5Mzc3MV18fCh1ZVsxOTM3NzFdPTEsR2U9MHwkcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSksbHQ9MHwkcigwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pLGFbamU+PjJd''@;'; put 'put ''PUdlLGFbamUrND4+Ml09bHQsWHIoMCw4ODczNCxqZSkpLEh0KE0pLElEKGMpLGw9MDticmVha31pZigyNj09KDB8Zikpe2lmKChmPTB8YVs5NisobD0wfGFbKHA9YysxNnwwKT4+Ml0pPj4yXSkmJihFayhjLGYsMTAyNjM3KSxsPTB8YVtwPj4yXSksKGY9MHxhW2wrMTA4Pj4yXSkmJihFayhj''@;'; put 'put ''LGYsMTAyNjMzKSxsPTB8YVtwPj4yXSksKGY9MHxhW2wrMTAwPj4yXSkmJihFayhjLGYsMTAyNjQwKSxsPTB8YVtwPj4yXSksIShsPTB8YVtsKzEwND4+Ml0pKXtsPTE7YnJlYWt9RWsoYyxsLDEwMjY0OCksbD0xO2JyZWFrfX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9cnQsMHxsfWZ1''@;'; put 'put ''bmN0aW9uIHpsZShsKXtsfD0wO3ZhciBjPTAsZj0wO2Y9MDtkb3tmb3IoOzB8S2MoMjU1JihjPTB8dWVbbD4+MF0pKTspbD1sKzF8MDtlOmRve2lmKGM8PDI0Pj4yNClmb3IoZj1mKzF8MDs7KXtpZighKGM8PDI0Pj4yNCkpe2M9MDticmVhayBlfWlmKGM8PDI0Pj4yND09NTl8MCE9KDB8S2Mo''@;'; put 'put ''MjU1JmMpKSlicmVhayBlO2w9Yz1sKzF8MCxjPTB8dWVbYz4+MF19ZWxzZSBjPTB9d2hpbGUoMCl9d2hpbGUoMCE9KDB8S2MoMjU1JmMpKSk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBkSihsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlvbiBwSihsLGMsZixw''@;'; put 'put ''KXtjfD0wLGZ8PTAscHw9MDt2YXIgbSx3LEE9MCxiPTA7dz1vZSxvZT1vZSszMnwwLG09dywwPT0oMHxuMigwfCRyKGx8PTApLDEwODAwNiw3KSkmJjAhPSgwfGZ1bmN0aW9uIEdsZShsLGMsZil7Znw9MDt2YXIgQSx3LGIsayxwPTAsbT0wO3JldHVybiB3PW9lLG9lPW9lKzQ4fDAsYj13KzMy''@;'; put 'put ''fDAsQT13LGs9MHxGbyhsfD0wLGN8PTApLGw9QSs4fDAsYz1BKzI0fDAsYVtiPj4yXT1BLGFbYis0Pj4yXT1sLGFbYis4Pj4yXT1BKzE2LGFbYisxMj4+Ml09Yyw0PT0oMHwkYShrLDg4NzgyLGIpKT8oKHA9K19bbD4+M10pPihtPStfW2M+PjNdKSYmKF9bbD4+M109bSxfW2M+PjNdPXApLGFb''@;'; put 'put ''Zj4+Ml09YVtBPj4yXSxhW2YrND4+Ml09YVtBKzQ+PjJdLGFbZis4Pj4yXT1hW0ErOD4+Ml0sYVtmKzEyPj4yXT1hW0ErMTI+PjJdLGFbZisxNj4+Ml09YVtBKzE2Pj4yXSxhW2YrMjA+PjJdPWFbQSsyMD4+Ml0sYVtmKzI0Pj4yXT1hW0ErMjQ+PjJdLGFbZisyOD4+Ml09YVtBKzI4Pj4yXSxs''@;'; put 'put ''PTEpOmw9MCxvZT13LDB8bH0obCxwLG0pKT8oZjAobCwxMzc0ODMsMjgwLDEpLGFbKGI9MTYrKDB8YVtsKzE2Pj4yXSl8MCk+PjJdPWFbbT4+Ml0sYVtiKzQ+PjJdPWFbbSs0Pj4yXSxhW2IrOD4+Ml09YVttKzg+PjJdLGFbYisxMj4+Ml09YVttKzEyPj4yXSxhW2IrMTY+PjJdPWFbbSsxNj4+''@;'; put 'put ''Ml0sYVtiKzIwPj4yXT1hW20rMjA+PjJdLGFbYisyND4+Ml09YVttKzI0Pj4yXSxhW2IrMjg+PjJdPWFbbSsyOD4+Ml0sZnVuY3Rpb24gV2xlKGwsYyl7Y3w9MDt2YXIgcCxtLEEsZj0wO2FbKEE9MTgwKyhmPTB8YVsocD0xNisobHw9MCl8MCk+PjJdKXwwKT4+Ml09bT0xKyhsPTB8YVtBPj4y''@;'; put 'put ''XSl8MCxsPShmPTB8YVtmKzE4ND4+Ml0pPzB8R2goZixsKzJ8MCw0LG0pOjB8bXIoOCsobDw8Mil8MCksYVsxODQrKDB8YVtwPj4yXSk+PjJdPWwsYVtsKyhtPDwyKT4+Ml09Yyx1RChjKX0oYyxsKSxoSihsLGYscCkpOkE9NDtlOmRve2lmKDQ9PSgwfEEpKWZvcihsPTB8d3MobCk7Oyl7aWYo''@;'; put 'put ''IWwpYnJlYWsgZTtwSihsLGMsZixwKSxsPTB8YnMobCl9fXdoaWxlKDApO29lPXd9ZnVuY3Rpb24gZlYobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxBLHcsayxNLHA9MCxiPTA7TT1vZSxvZT1vZSs0OHwwLGs9TSs4fDAsYj1NLEE9TSsxNnwwLHc9TSsxMnwwLG09MHxMaShsfD0wLDg4Nzk4KTtk''@;'; put 'put ''b3tpZigwIT0oMHxtKSYmKHA9MHx1ZVttPj4wXSk8PDI0Pj4yNCE9MCl7aWYoMHxUTChwJj0yNTUpKXtpZighKDB8bjIobSw4ODgwNCw0KSkpe2M9MDticmVha31pZighKDB8bjIobSwxMDU1MTEsNykpKXtjPTE7YnJlYWt9aWYoMHxuMihtLDg4ODA5LDYpKXtpZigyIT0oMHxjKSlicmVhaztj''@;'; put 'put ''PW19ZWxzZSBjPW0rNnwwfWVsc2V7aWYoISgyPT0oMHxjKXwocCstNDh8MCk+Pj4wPDEwKSlicmVhaztjPW19KCgwfGJ0W2M+PjBdKS00OHwwKT4+PjA8MTAmJihhW2I+PjJdPXcsKDB8JGEoYyw5OTkzMyxiKSk+PTEpfHwoYj0wfGNaKCksYj0oMHxkbigwKSleYixhW3c+PjJdPWIsYVtrPj4y''@;'; put 'put ''XT1iLGFvKEEsOTk5MzMsayksTWMobCw4ODc5OCxBKSksYVtmPj4yXT1hW3c+PjJdLGM9Mn19d2hpbGUoMCk7cmV0dXJuIG9lPU0sMHxjfWZ1bmN0aW9uIGdKKGwsYyxmKXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAsZnw9MCxtPW9lLG9lPW9lKzE2fDAsYVsocD1tKzR8MCk+PjJdPTEsMiE9''@;'; put 'put ''KDB8KGY9MHxmVihsLGYscCkpKSYwIT0oMHxhWzQ2Nzk2XSkmJlhyKDAsODg4MTYsbSksMT09KDB8ZikmJmZ1bmN0aW9uIFlsZShsLGMpe3ZhciBtLEEsZj0wLHA9MCx3PTAsYj0wLGs9MDtmb3IoQT02LjI4MzE4NTMwNzE3OTU4Ni8obT0rKDB8KGN8PTApKSksZj0wfEx0KGx8PTApLHA9MDtm''@;'; put 'put ''OylrPStsYSgrcCkqbSxfWyhiPTB8YVsxMzIrKHc9MHxhW2YrMTY+PjJdKT4+Ml0pPj4zXT1rLF9bYis4Pj4zXT0rSWEoK3ApKm0sdWVbdysxMTk+PjBdPTEsKDB8YVs0NzEzN10pPjImJnhrKGYsYyksZj0wfHp0KGwsZikscCs9QX0obCxjKSxmWigwfGFbcD4+Ml0pLG9lPW0sMHxmfWZ1bmN0''@;'; put 'put ''aW9uIGhWKGwpe2x8PTA7dmFyIGIsayxSLEcsSyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxNPTAsRD0wO0s9b2Usb2U9b2UrODB8MCxjPUsrMjR8MCxNPUsrMzJ8MCxiPUssUj1LKzI4fDAsaz1LKzY0fDAsRz0rX1syMzI5M107ZG97aWYoMHxhWzQ3MTM0XSl7aWYoX1syMzI5M109NzIsbUoo''@;'; put 'put ''bCksT0QobCksKDB8TmxlKGwsMSkpPDApe1hyKDMsODg4NjQsYyk7YnJlYWt9ZEQobCwwKSxwPTMyO2JyZWFrfUQ9MHxKNigwfExpKGwsODg1OTMpLDApLF9bMjMyOTNdPSskUShsKSxtSihsKSxtPTB8VWxlKGwpLFNYKGwsYiwwKSxBPTB8UWxlKGwpLHc9MHxDQyhsLDAsTSksYz0wfFlUKGws''@;'; put 'put ''LTEsOCksYVs0Njc5NV09YyxmPSgwfGMpPDA7ZG97aWYodylmJiYoYVs0Njc5NV09OCkscD0xMTtlbHNle2lmKDAhPSgwfG0pJmYpe2FbNDY3OTVdPTgsYVtNKzE2Pj4yXT0yLHA9MTE7YnJlYWt9aWYoYVtNKzE2Pj4yXT0yLCgwfGMpPD0tMSl7aWYoZFYobCxtLEEpLHE3KGwsYiksT0QobCks''@;'; put 'put ''RDw8MjQ+PjI0KXtwVihsKTticmVha31RNShsKTticmVha31wPTExfX13aGlsZSgwKTtpZigxMT09KDB8cCkpe3c9MHxBcmUobCxSLDg4ODkyLGspLGM9MHxhW1I+PjJdO2Rve2lmKCgwfGMpPD0xKXtpZihkVihsLG0sQSkscTcobCxiKSxEPDwyND4+MjQpe3BWKGwpO2JyZWFrfVE1KGwpO2Jy''@;'; put 'put ''ZWFrfWZvcihwPUQ8PDI0Pj4yND09MCxmPTA7ISgoMHxmKT49KDB8YykpOylleShjPTB8YVt3KyhmPDwyKT4+Ml0pLGRWKGMsbSxBKSxxNyhjLGIpLFhkKGMsMikscD9RNShjKTpwVihjKSxmPWYrMXwwLGM9MHxhW1I+PjJdOzB8dWVbaz4+MF0/KGY9MHxtcihjKSx1ZVtmPj4wXT0xLGM9MHxh''@;'; put 'put ''W1I+PjJdKTpmPTAsYVtNKzg+PjJdPWFbNDY3OTVdLGFbTSsyMD4+Ml09ZixhW00rMTI+PjJdPTEseGEoYyx3LGwsTSksSHQoZil9d2hpbGUoMCk7Zm9yKFg2KGwpLE9EKGwpLGM9MDshKCgwfGMpPj0oMHxhW1I+PjJdKSk7KXdWKE09MHxhW3crKGM8PDIpPj4yXSksQ2EoTSwxMzc0ODMpLG5p''@;'; put 'put ''KGwsTSksYz1jKzF8MDtIdCh3KX1kRChsLEQ8PDI0Pj4yND09MCYxKSxwPTMyfXdoaWxlKDApOzMyPT0oMHxwKSYmKF9bMjMyOTNdPUcpLG9lPUt9ZnVuY3Rpb24gbUoobCl7dmFyIHAsbSxjPTAsZj0wO1hkKGx8PTAsMikscD0wfGVzKGwsMHxzaShsLDAsOTEzNjgsMCksMiwyKSxjPTY1NTM1''@;'; put 'put ''JigwfGVzKGwsMHxzaShsLDAsOTEzNzQsMCkscCwyKSksVHRbMTc2KygwfGFbMTYrKDB8aGkobCkpPj4yXSk+PjFdPWMsVHRbKG09MTc2KyhjPTB8YVsxNisoMHxhW2wrNjA+PjJdKT4+Ml0pfDApPj4xXT1mPSg2NTUzNSYoZj0wfFR0W20+PjFdKSk8MTA/ZjoxMCxhWzQ3MTM3XT1mJj02NTUz''@;'; put 'put ''NSxUdFtjKzE3OD4+MV09KDB8cCk8KDB8Zik/cDpmLGZ1bmN0aW9uIHdKKGwpe3ZhciBwLGM9MCxmPTA7Zm9yKGY9MHxObyhsfD0wKSxhWzQ2Nzk2XT0wfHNpKGwsMSwxMDI2MjMsMCkscD0wfHNpKGwsMSw5MDY2MCwwKSxjPTB8THQobCk7YzspTWsoYyksUGxlKDB8YVs0Njc5Nl0scCxjLGYp''@;'; put 'put ''LGM9MHx6dChsLGMpO2ZvcihmPTB8THQobCk7Zjspe2ZvcihjPTB8eTAobCxmKTtjOyl0c2UoYyksYz0wfGswKGwsYyk7Zj0wfHp0KGwsZil9fShsKX1mdW5jdGlvbiBPRChsKXtsfD0wO3ZhciBmLHAsbSxjPTA7bT1vZSxvZT1vZSsxMDQwfDAscD1tLGY9bSs4fDA7ZTpkb3tpZigoMHxhWzQ3''@;'; put 'put ''MTM3XSk+MiYwIT0oMHxhWzQ3MTcxXSkpZm9yKGM9MHxMdChsKTs7KXtpZighYylicmVhayBlO19bcD4+M109NzIqK19bMTYrKDB8YVsxMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M10sYW8oZiwxMDEyMDkscCksQmwoYywwfGFbNDcxNzFdLGYpLGM9MHx6dChsLGMpfX13aGlsZSgwKTtvZT1t''@;'; put 'put ''fWZ1bmN0aW9uIFVsZShsKXt2YXIgYyxmLHA7cD1vZSxvZT1vZSsxNnwwLGY9cCxjPTB8TGkobHw9MCw4OTU3Nyk7ZTpkb3tpZihjKXtzd2l0Y2goMHx1ZVtjPj4wXSl7Y2FzZSAwOmw9MTticmVhayBlO2Nhc2UgNzU6aWYoISgwfFppKGMsODk1ODIpKSl7bD0wO2JyZWFrIGV9YnJlYWs7Y2Fz''@;'; put 'put ''ZSAxMDk6aWYoISgwfFppKGMsODk1ODUpKSl7bD0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMDQ6aWYoISgwfFppKGMsODk1OTEpKSl7bD0yO2JyZWFrIGV9fWw9MHwkcihsKSxhW2Y+PjJdPWMsYVtmKzQ+PjJdPWwsWHIoMCw4OTU5NixmKSxsPTF9ZWxzZSBsPTF9d2hpbGUoMCk7cmV0dXJuIG9l''@;'; put 'put ''PXAsMHxsfWZ1bmN0aW9uIFFsZShsKXt2YXIgYyxmLHAsbSxBO0E9b2Usb2U9b2UrMzJ8MCxtPUErMTZ8MCxwPUErOHwwLGY9QSxjPTB8TGkobHw9MCw4OTM2MCk7ZTpkb3tpZihjKXtzd2l0Y2goMHx1ZVtjPj4wXSl7Y2FzZSAwOmw9MDticmVhayBlO2Nhc2UgOTk6aWYoISgwfFppKGMsODkz''@;'; put 'put ''NjYpKSl7bD0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMTU6aWYoISgwfFppKGMsODkzNzQpKSl7bD0yO2JyZWFrIGV9aWYoISgwfFppKGMsODkzODEpKSl7bD0wO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMDk6aWYoISgwfFppKGMsODkzOTEpKSl7aWYoMHxzaShsLDIsOTI0OTMsMCkpe2w9MzticmVh''@;'; put 'put ''ayBlfWFbZj4+Ml09MHwkcihsKSxYcigwLDg5Mzk1LGYpLFhyKDMsODk0NTgscCksbD0wO2JyZWFrIGV9fWw9MHwkcihsKSxhW20+PjJdPWMsYVttKzQ+PjJdPWwsWHIoMCw4OTUxNSxtKSxsPTB9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIG9lPUEsMHxsfWZ1bmN0aW9uIGRWKGwsYyxmKXtj''@;'; put 'put ''fD0wLGZ8PTA7dmFyIHA9MDtwPShwPTB8TGkobHw9MCw5MTA2MSkpPzB8ZTMocCk6MT09KDB8Yyk/MjAwOjEwMCooMHxObyhsKSl8MCxhWzQ3MTM2XT1wLHA9MHxPSihsLGMpO2Rve2lmKCEoKDB8cCk8MnwoMHxhWzQ3MTM2XSk8MCkpe2lmKGMpe0psZShsLHAsYyxmLDB8YVs0NzEzN10pO2Jy''@;'; put 'put ''ZWFrfVhsZShsLHAsZik7YnJlYWt9fXdoaWxlKDApfWZ1bmN0aW9uIHBWKGwpe1g2KGx8PTApLFBEKGwsMSl9ZnVuY3Rpb24gSmxlKGwsYyxmLHAsbSl7cHw9MCxtfD0wO3ZhciBELEcsSyxwZSxtZSxiZSxPZSxBPTAsdz0wLGI9MCxrPTAsTT0wO2ZvcihPZT1vZSxvZT1vZSs2NHwwLHBlPU9l''@;'; put 'put ''KzQwfDAsRz1PZSs0OHwwLGJlPU9lKzQ0fDAsdz0wfGdKKGx8PTAsY3w9MCwoSz0yPT0oMHwoZnw9MCkpKT8wOjIpLGI9MHxmdW5jdGlvbiBlc2UobCl7dmFyIGMsZjtyZXR1cm4gZj1vZSxvZT1vZSsxNnwwLGM9ZiwwPT0oMHwobD0wfGVzKGx8PTAsMHxzaShsLDAsODkzMDUsMCksMiwwKSkp''@;'; put 'put ''fCgwfGwpPjImJihhW2M+PjJdPTg5MzA1LFhyKDAsODkzMTQsYyksbD0yKSxvZT1mLDB8bH0obCksaz00fGIsbWU9MHxRbihtPDwyKSxhW21lPj4yXT0wfFFuKDB8dnIoYzw8MyxtKSksQT0wfGFbNDcxMzddLG09MTshKCgwfG0pPj0oMHxBKSk7KWFbbWUrKG08PDIpPj4yXT0oMHxhW21lPj4y''@;'; put 'put ''XSkrKCgwfHZyKG0sYykpPDwzKSxtPW0rMXwwO209KEE9MD09KDB8dykpP2s6YixEPTB8QUoobCxjLEcsZixwLGJlKSwxIT0oMHxmKT8oTT0rY2wobCwwfHNpKGwsMCw4OTI3OSwwKSwwLC0xNzk3NjkzMTM0ODYyMzE1N2UyOTIpLEs/KG09MHxmdW5jdGlvbiB3MmUobCxjLGYscCxtLEEsdyxi''@;'; put 'put ''LGssTSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsYnw9MCxrfD0wLE09K007dmFyIFp0LHV0LHJuLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCxNdD0wLGt0PTAsYXQ9MCxFdD0wLHd0PTAs''@;'; put 'put ''eW49MDtybj1vZSxvZT1vZSs0OHwwLE10PXJuKzI0fDAsbHQ9cm4rMTZ8MCxHZT1ybis4fDAscnQ9cm4sdXQ9cm4rMzZ8MCxhdD1ybiszMnwwLHBlPTQmKHd8PTApLGFbKFp0PXJuKzQwfDApPj4yXT0wLGFbdXQ+PjJdPTA7ZTpkb3tpZigwfGFbbCsxNj4+Ml0pe2ZvcihSPTAsRD0wOyEoKDB8''@;'; put 'put ''Uik+PSgwfGMpKTspe2ZvcihtZT0wfGFbbCsoMjAqUnwwKT4+Ml0sYmU9bCsoMjAqUnwwKSsxNnwwLEs9MTshKCgwfEspPj0oMHxtZSkpOylEPUQ8PDI0Pj4yND8xOjAhPStXblsoMHxhW2JlPj4yXSkrKEs8PDIpPj4yXSxLPUsrMXwwLEQmPTE7Uj1SKzF8MH1pZihEPDwyND4+MjQpe2lmKGpl''@;'; put 'put ''PTAhPSgwfHBlKSl7Sz1wKzR8MDt0OmRve2lmKCgwfEEpPjIpe2lmKCgwfEZEKGwsYyxmLEssbSxEPUErLTF8MCx3LGIsMTUpKTwwKXtEPS0xO2JyZWFrIGV9Zm9yKFI9cCsoRDw8Mil8MCxEPTA7Oyl7aWYoKDB8RCk+PSgwfGMpKWJyZWFrIHQ7X1soMHxhW1I+PjJdKSsoRDw8Myk+PjNdPStf''@;'; put 'put ''WygwfGFbSz4+Ml0pKyhEPDwzKT4+M10sRD1EKzF8MH19fXdoaWxlKDApO2lmKEhlPTB8YVtwPj4yXSwwPT0oMHxBaihsLGMsTGU9MHxhW0s+PjJdLGMpKSYmMD09KDB8VV8obCxjLC4wMSwuMSxMZSxadCx1dCxhdCkpKXtpZigoMHwoQmU9MHxhW2F0Pj4yXSkpPDEpe0Q9MHxGRChsLGMsZixw''@;'; put 'put ''LG0sQSx3LGIsayk7YnJlYWt9dDpkb3tpZihNPjApZm9yKHBlPTB8YVtadD4+Ml0sbWU9MHxhW3V0Pj4yXSxiZT1CZSstMXwwLEc9MCxLPTA7Oyl7aWYoKDB8Syk+PSgwfEJlKSlicmVhayB0O2ZvcihHPSgoZXQ9TS1HLStfW0xlKyhhW3BlKygoRD0wfGFbbWUrKEs8PDIpPj4yXSk8PDIpPj4y''@;'; put 'put ''XTw8Myk+PjNdKyArX1tMZSsoYVtwZSsoRCstMTw8Mik+PjJdPDwzKT4+M10pPDA/MDpldCkrRyxSPSgwfEspPCgwfGJlKT8wfGFbbWUrKEsrMTw8Mik+PjJdOmM7ISgoMHxEKT49KDB8UikpOylfWyhFdD1MZSsoYVtwZSsoRDw8Mik+PjJdPDwzKXwwKT4+M109K19bRXQ+PjNdK0csRD1EKzF8''@;'; put 'put ''MDtLPUsrMXwwfX13aGlsZSgwKTsyPT0oMHxBKSYmMCE9KDB8RzJlKGwsYyxMZSxIZSwrX1syMzI5NF0pKT8oUj0wLEQ9LTEpOnd0PTMzfWVsc2UgUj0wLEQ9LTF9ZWxzZSBUSihsLGMsQSxwLG0pLDB8VV8obCxjLC4wMSwuMSwwLFp0LHV0LGF0KT8oUj0wLEQ9LTEpOnd0PTMzO3Q6ZG97aWYo''@;'; put 'put ''MzM9PSgwfHd0KSl7aWYoMT09KDB8Yykpe0Q9MDticmVhayBlfWlmKEV0PTB8UW4oYVthdD4+Ml08PDIpLCFrKXtEPTA7YnJlYWsgZX1zd2l0Y2goMHxiKXtjYXNlIDI6RD0wfERKKGwsYyksd3Q9NDY7YnJlYWs7Y2FzZSAxOihEPTB8SUoobCxjKSk/a3Q9RDooWHIoMCw5MzMxNSxydCksWHIo''@;'; put 'put ''Myw5MzM2NCxHZSksd3Q9NDcpO2JyZWFrO2Nhc2UgMzpEPTB8eTIobCxjKSx3dD00NjticmVhaztkZWZhdWx0Ond0PTQ3fTQ2PT0oMHx3dCkmJihEP2t0PUQ6d3Q9NDcpLDQ3PT0oMHx3dCkmJihrdD0wfEFWKGwsYykpLGx0PShIZT0oMHx2cihsPWMrLTF8MCxjKSkvMnwwKStjfDA7bjpkb3tp''@;'; put 'put ''ZighamUpe2ZvcihHPTEsUj0wOyEoKDB8Uik+PSgwfEEpKTspe2ZvcihLPXArKFI8PDIpfDAsRD0wOyEoKDB8RCk+PSgwfGMpKTspRz0oZXQ9K2VvKCsgK19bKDB8YVtLPj4yXSkrKEQ8PDMpPj4zXSkpPkc/ZXQ6RyxEPUQrMXwwO1I9UisxfDB9Zm9yKEc9MS9HLFI9MDs7KXtpZigoMHxSKT49''@;'; put 'put ''KDB8QSkpYnJlYWsgbjtmb3IoSz1wKyhSPDwyKXwwLEQ9MDshKCgwfEQpPj0oMHxjKSk7KV9bKEdlPSgwfGFbSz4+Ml0pKyhEPDwzKXwwKT4+M109MTAqRyorX1tHZT4+M10sRD1EKzF8MDtSPVIrMXwwfX19d2hpbGUoMCk7bjpkb3tpZihNPjApe09lPSsoMHxIZSksRD0wLEc9MCxwZT0wO3I6''@;'; put 'put ''Zm9yKDshKCgwfHBlKT49KDB8bCkpOylmb3IobWU9cGUrMXwwLEs9RCxSPW1lOzspe2lmKEQ9SysxfDAsKDB8Uik+PSgwfGMpKXtwZT1tZTtjb250aW51ZSByfUs9RCxHPShldD0raWoocCxBLHBlLFIpKS8rV25ba3QrKEQ8PDIpPj4yXStHLFI9UisxfDB9Zm9yKEcvPU9lLEQ9MDs7KXtpZigo''@;'; put 'put ''MHxEKT49KDB8bHQpKXtEPTA7YnJlYWsgbn1XblsoR2U9a3QrKEQ8PDIpfDApPj4yXT0rV25bR2U+PjJdKkcsRD1EKzF8MH19ZWxzZSBEPTB9d2hpbGUoMCk7Zm9yKDshKCgwfEQpPj0oMHxBKSk7KWF2KGMsMHxhW3ArKEQ8PDIpPj4yXSksRD1EKzF8MDtmb3IoRz0rX1soUj0wfGFbcCs0Pj4y''@;'; put 'put ''XSk+PjNdLEQ9MDshKCgwfEQpPj0oMHxjKSk7KV9bKEdlPVIrKEQ8PDMpfDApPj4zXT0rX1tHZT4+M10tRyxEPUQrMXwwO2ZvcihHZT0wfFFuKGJlPUE8PDIpLEs9MHxRbihMZT0wfHZyKEJlPWM8PDIsQSkpLEQ9MDshKCgwfEQpPj0oMHxBKSk7KXtmb3IocGU9SysoKDB8dnIoRCxjKSk8PDIp''@;'; put 'put ''fDAsYVtHZSsoRDw8Mik+PjJdPXBlLG1lPXArKEQ8PDIpfDAsUj0wOyEoKDB8Uik+PSgwfGMpKTspV25bcGUrKFI8PDIpPj4yXT0rX1soMHxhW21lPj4yXSkrKFI8PDMpPj4zXSxSPVIrMXwwO0Q9RCsxfDB9Zm9yKE9lPSsoMHxIZSksc0wobHQsa3QpLGdqKGx0LGt0KSxQMmUoYywwLHJ0PTB8''@;'; put 'put ''UW4oYzw8MykpLEQ9MCxLPTA7Oyl7aWYoKDB8Syk+PSgwfGwpKXtEPWMsUj0wLEs9MDticmVha31mb3IocGU9Yy1LfDAsRz0wLFI9MTtEPUQrMXwwLCEoKDB8Uik+PSgwfHBlKSk7KV9bKE10PXJ0KyhSK0s8PDMpfDApPj4zXT0rX1tNdD4+M10tKGV0PStXbltrdCsoRDw8Mik+PjJdKSxHKz1l''@;'; put 'put ''dCxSPVIrMXwwO19bKE10PXJ0KyhLPDwzKXwwKT4+M109K19bTXQ+PjNdLUcsSz1LKzF8MH1mb3IoOyEoKDB8Uik+PSgwfGMpKTspV25ba3QrKEs8PDIpPj4yXT0rX1tydCsoUjw8Myk+PjNdLE10PUQrS3wwLEQ9RCstMXwwLFI9UisxfDAsSz1NdDtmb3IoYj0wfFFuKGJlKSxhW2I+PjJdPTB8''@;'; put 'put ''UW4oTGUpLEQ9MTshKCgwfEQpPj0oMHxBKSk7KWFbYisoRDw8Mik+PjJdPSgwfGFbYj4+Ml0pKygoMHx2cihELGMpKTw8MiksRD1EKzF8MDtmb3IoamU9MHxRbihCZSksbT0wfFFuKEJlKSx3PTB8UW4obHQ8PDIpLFI9MHxKMyhrdCxjKSxmPTB8S2soa3QsYywwfGFbWnQ+PjJdLDB8YVt1dD4+''@;'; put 'put ''Ml0sMHxhW2F0Pj4yXSksSGU9Yis0fDAsSz0wLGV0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixEPTA7Szw8MjQ+PjI0PT0wJigwfEQpPCgwfGspOyl7Zm9yKFAyZShjLDAscnQpLF9zKGx0LGt0LHcpLExlPTAsbWU9MDs7KXtpZigoMHxMZSk+PSgwfGwpKXtLPTAscGU9YyxtZT0wO2JyZWFrfWZv''@;'; put 'put ''cihCZT1jLUxlLTF8MCxZayhjLDAsbSksSz0wOyEoKDB8Syk+PSgwfEEpKTspWWsoQmUsK1duWygwfGFbKGF0PUdlKyhLPDwyKXwwKT4+Ml0pKyhMZTw8Mik+PjJdLGplKSxXayhCZSxqZSwtMSwoMHxhW2F0Pj4yXSkrKExlPDwyKSs0fDApLHNMKEJlLGplKSxkaihCZSxqZSxtLG0pLEs9Sysx''@;'; put 'put ''fDA7Zm9yKG9nKEJlLG0pLEs9MDshKCgwfEspPj0oMHxCZSkpOykoRz0rV25bKHBlPW0rKEs8PDIpfDApPj4yXSk+PTM0MDI4MjM0NjYzODUyODg2ZTIyfEc8MCYmKFduW3BlPj4yXT0wKSxLPUsrMXwwO2ZvcihiZT1MZSsxfDAsRz0wLEs9bWUscGU9MDtLPUsrMXwwLCEoKDB8cGUpPj0oMHxC''@;'; put 'put ''ZSkpOylXblsoYXQ9dysoSzw8Mil8MCk+PjJdPXluPStXblthdD4+Ml0qK1duW20rKHBlPDwyKT4+Ml0sX1soYXQ9cnQrKGJlK3BlPDwzKXwwKT4+M109K19bYXQ+PjNdLXluLEcrPXluLHBlPXBlKzF8MDtfWyhtZT1ydCsoTGU8PDMpfDApPj4zXT0rX1ttZT4+M10tRyxMZT1iZSxtZT1LfWZv''@;'; put 'put ''cig7Oyl7aWYoKDB8Syk+PSgwfGMpKXtLPTA7YnJlYWt9V25bdysobWU8PDIpPj4yXT0rX1tydCsoSzw8Myk+PjNdLGF0PXBlK21lfDAsSz1LKzF8MCxwZT1wZSstMXwwLG1lPWF0fWZvcig7Oyl7aWYoKDB8Syk+PSgwfEEpKXtHPTAsSz0wO2JyZWFrfWlnKHcsYywwfGFbR2UrKEs8PDIpPj4y''@;'; put 'put ''XSwwfGFbYisoSzw8Mik+PjJdKSxLPUsrMXwwfWZvcig7ISgoMHxLKT49KDB8QSkpOylHPStKeShjLDB8YVtHZSsoSzw8Mik+PjJdLDB8YVtiKyhLPDwyKT4+Ml0pK0csSz1LKzF8MDtmb3IoRz0yKkcrT2UsSz0wOyEoKDB8Syk+PSgwfEEpKTspaWcoa3QsYywwfGFbKGF0PUdlKyhLPDwyKXww''@;'; put 'put ''KT4+Ml0samUpLEctPStKeShjLDB8YVthdD4+Ml0samUpLEs9SysxfDA7Zm9yKEs9MSYoKDB8RCk+MSZHPmV0fCh5bj0rZW8oKyhHLWV0KSkvK2VvKCsoZXQrMWUtMTApKSk8K19bMjMyOTRdKSxwZT0wOyEoKDB8cGUpPj0oMHxBKSk7KXtpZigxIT0oMHxwZSkpe2lmKDB8R3koa3QsMHxhW0dl''@;'; put 'put ''KyhwZTw8Mik+PjJdLDB8YVtiKyhwZTw8Mik+PjJdLGMsLjAwMSxjKSl7RD0tMTticmVhayB0fX1lbHNlIFoyZShmLDB8YVtIZT4+Ml0sR2UsQSwxLDE1LEV0LE0pO3BlPXBlKzF8MH1ldD1HLEQ9RCsxfDB9aWYoSHQoRXQpLHE5ZShmKSwwfEdlKXtmb3IoSz0wOyEoKDB8Syk+PSgwfEEpKTsp''@;'; put 'put ''e2ZvcihtZT1HZSsoSzw8Mil8MCxiZT1wKyhLPDwyKXwwLHBlPTA7ISgoMHxwZSk+PSgwfGMpKTspX1soMHxhW2JlPj4yXSkrKHBlPDwzKT4+M109K1duWygwfGFbbWU+PjJdKSsocGU8PDIpPj4yXSxwZT1wZSsxfDA7Sz1LKzF8MH1IdCgwfGFbR2U+PjJdKSxIdChHZSl9MHxiJiYoSHQoMHxh''@;'; put 'put ''W2I+PjJdKSxIdChiKSksSHQoamUpLEh0KG0pLEh0KHJ0KSxIdChrdCksSHQodyl9fXdoaWxlKDApO0h0KDB8YVtadD4+Ml0pLEh0KDB8YVt1dD4+Ml0pLFImJihIdCgwfGFbUj4+Ml0pLEh0KFIpKX1lbHNlIHd0PTEwfWVsc2Ugd3Q9MTB9d2hpbGUoMCk7cmV0dXJuIDEwPT0oMHx3dCkmJihE''@;'; put 'put ''PTB8RkQobCxjLGYscCxtLEEsdyxiLGspKSxvZT1ybiwwfER9KEQsYywwfGFbRz4+Ml0sbWUsMHxhW2JlPj4yXSwwfGFbNDcxMzddLG0scCwwfGFbNDcxMzZdLE0pLEE9MTIpOkE9MTQpOihtPTB8RkQoRCxjLDB8YVtHPj4yXSxtZSwwfGFbYmU+PjJdLDB8YVs0NzEzN10sbSxwLDB8YVs0NzEz''@;'; put 'put ''Nl0pLEE9MTIpLDEyPT0oMHxBKSYmKCgwfG0pPDA/WHIoMyw4OTI4OSxwZSk6QT0xNCk7ZTpkb3tpZigxND09KDB8QSkpZm9yKEE9MHxMdChsKTs7KXtpZighQSlicmVhayBlO2Zvcih3PTB8YVsxMjArKGs9MHxhW0ErMTY+PjJdKT4+Ml0sYj0wfGFbNDcxMzddLGs9aysxMzJ8MCxtPTA7ISgo''@;'; put 'put ''MHxtKT49KDB8YikpOylfWygwfGFbaz4+Ml0pKyhtPDwzKT4+M109K19bKDB8YVttZSsobTw8Mik+PjJdKSsodzw8Myk+PjNdLG09bSsxfDA7QT0wfHp0KGwsQSl9fXdoaWxlKDApO0hYKEQpLEh0KDB8YVttZT4+Ml0pLEh0KG1lKSxIdCgwfGFbYmU+PjJdKSxvZT1PZX1mdW5jdGlvbiBYbGUo''@;'; put 'put ''bCxjLGYpe3ZhciBwLEE7c3dpdGNoKGx8PTAsY3w9MCxBPW9lLG9lPW9lKzQ4fDAscD1BLDB8KGZ8PTApKXtjYXNlIDI6IWZ1bmN0aW9uIEtsZShsLGMpe3ZhciBwLEEsdyxiLGY9MCxtPTA7Zm9yKGI9b2Usb2U9b2UrMTZ8MCx3PTB8ZnVuY3Rpb24gWXkobCxjKXt2YXIgZixwO3JldHVybiBw''@;'; put 'put ''PTB8YVs4KyhsfD0wKT4+Ml0saXYobCxjfD0wKSxmPTB8V3kobCxjKSxqayhsLGMscCksMHxmfShBPTB8QUoobHw9MCxjfD0wLGIsMCwyLDApLGMpLHA9bCsxNnwwLGw9MDshKCgwfGwpPj0oMHxjKSk7KXtmb3IobT13KyhsPDwyKXwwLGY9MDsoMHxmKSE9KDB8Yyk7KV9bKDB8YVsoMHxhWzE2''@;'; put 'put ''MCsoMHxhW3A+PjJdKT4+Ml0pKyhsPDwyKT4+Ml0pKyhmPDwzKT4+M109KygwfGFbKDB8YVttPj4yXSkrKGY8PDIpPj4yXSksZj1mKzF8MDtsPWwrMXwwfUh0KDB8YVt3Pj4yXSksSHQodyksSFgoQSksb2U9Yn0obCxjKTticmVhaztjYXNlIDE6MHxmdW5jdGlvbiBWOWUobCxjKXtsfD0wO3Zh''@;'; put 'put ''ciB3LGIsayxmPTAscD0wLG09MCxBPTAsTT0wO2ZvcihiPTB8c2goY3w9MCxjLDApLGs9MHxzaChjLGMsMCkscD0wfEx0KGwpO3A7KXtmb3IoZj0wfEZzKGwscCk7ZjspKDB8KG09KDB8YVthWygzPT0oMHwoQT0zJmFbZj4+Ml0pKT9mOmYrNDh8MCkrNDA+PjJdPj4yXSk+Pj40KSkhPSgwfChB''@;'; put 'put ''PSgwfGFbYVsoMj09KDB8QSk/ZjpmKy00OHwwKSs0MD4+Ml0+PjJdKT4+PjQpKSYmKF9bKDB8YVtiKyhBPDwyKT4+Ml0pKyhtPDwzKT4+M109TT0tMS8rX1sxMzYrKDB8YVtmKzE2Pj4yXSk+PjNdLF9bKDB8YVtiKyhtPDwyKT4+Ml0pKyhBPDwzKT4+M109TSksZj0wfFRzKGwsZixwKTtwPTB8''@;'; put 'put ''enQobCxwKX13PTB8ZmMoYyxiLGspO2U6ZG97aWYoMHx3KWZvcihtPWwrMTZ8MCxwPTA7Oyl7aWYoKDB8cCk+PSgwfGMpKWJyZWFrIGU7Zm9yKEE9aysocDw8Mil8MCxmPTA7KDB8ZikhPSgwfGMpOylfWygwfGFbKDB8YVsxNjArKDB8YVttPj4yXSk+PjJdKSsocDw8Mik+PjJdKSsoZjw8Myk+''@;'; put 'put ''PjNdPStfWygwfGFbaysoZjw8Mik+PjJdKSsoZjw8Myk+PjNdKyArX1sobD0wfGFbQT4+Ml0pKyhwPDwzKT4+M10rLTIqK19bbCsoZjw8Myk+PjNdLGY9ZisxfDA7cD1wKzF8MH19d2hpbGUoMCk7cmV0dXJuIEo1KGIpLEo1KGspLDB8d30obCxjKXx8KGFbcD4+Ml09MHwkcihsKSxYcigwLDg4''@;'; put 'put ''OTAyLHApLFhyKDMsOTMzNjQsQSs4fDApLFhyKDMsODg5NTQsQSsxNnwwKSxYcigzLDg5MDI2LEErMjR8MCksRkoobCxjKSk7YnJlYWs7ZGVmYXVsdDpGSihsLGMpLDM9PSgwfGYpJiZmdW5jdGlvbiB2SihsKXt2YXIgbSxjPTAsZj0wLHA9MCxBPTAsdz0wLGI9MDtmb3IobT0xNisobHw9MCl8''@;'; put 'put ''MCxmPTB8THQobCk7Zjspe2ZvcihjPTB8eTAobCxmKTtjOykoMHwocD0oMHxhW2FbKDM9PSgwfChBPTMmYVtjPj4yXSkpP2M6Yys0OHwwKSs0MD4+Ml0+PjJdKT4+PjQpKSE9KDB8KEE9KDB8YVthWygyPT0oMHxBKT9jOmMrLTQ4fDApKzQwPj4yXT4+Ml0pPj4+NCkpJiYoX1soMHxhWyh3PTB8''@;'; put 'put ''YVsxNjArKDB8YVttPj4yXSk+PjJdKSsoQTw8Mik+PjJdKSsocDw8Myk+PjNdPWI9K19bMTM2KygwfGFbYysxNj4+Ml0pPj4zXSxfWygwfGFbdysocDw8Mik+PjJdKSsoQTw8Myk+PjNdPWIpLGM9MHxrMChsLGMpO2Y9MHx6dChsLGYpfX0obCl9KGZ1bmN0aW9uIGJWKGwsYyl7dmFyIHAsZj0w''@;'; put 'put ''O3A9b2Usb2U9b2UrMTZ8MCxmPXAsYz0wfGdKKGx8PTAsY3w9MCwyKTtlOmRve2lmKDEhPSgwfGMpKWZvcihhWzQ2Nzk3XXxjfHwoWHIoMCw5MDE5MixmKSxhWzQ2Nzk3XT0xKSxmPWwrMTZ8MCxjPTA7Oyl7aWYoIShsPTB8YVsoMHxhWzE1MisoMHxhW2Y+PjJdKT4+Ml0pKyhjPDwyKT4+Ml0p''@;'; put 'put ''KWJyZWFrIGU7MHx1ZVsxMTkrKDB8YVtsKzE2Pj4yXSk+PjBdfHxSSihsLDEpLGM9YysxfDB9fXdoaWxlKDApO29lPXB9KShsLGMpLGZ1bmN0aW9uIG1zZShsLGMpe2N8PTA7dmFyIGssRCxSLEssZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLHBlPTA7Zm9yKEs9b2Usb2U9b2UrOTZ8MCxE''@;'; put 'put ''PUssaz0wfGFbMTY0KyhtPTB8YVsoUj0xNisobHw9MCl8MCk+PjJdKT4+Ml0sbT0wfGFbbSsxNjA+PjJdLE09MDshKCgwfE0pPj0oMHxjKSk7KXtmb3Iodz1tKyhNPDwyKXwwLGI9aysoTTw8Mil8MCxwPTA7KDB8cCkhPSgwfE0pOylBPTEvKChBPStfWygwfGFbdz4+Ml0pKyhwPDwzKT4+M10p''@;'; put 'put ''KkEpLChmPTB8cmwobCwwfGFbKGY9MHxhWzE1MisoMHxhW1I+PjJdKT4+Ml0pKyhNPDwyKT4+Ml0sMHxhW2YrKHA8PDIpPj4yXSwwLDApKSYmKEEqPStfWzEyOCsoMHxhW2YrMTY+PjJdKT4+M10pLF9bKDB8YVtrKyhwPDwyKT4+Ml0pKyhNPDwzKT4+M109QSxfWygwfGFbYj4+Ml0pKyhwPDwz''@;'; put 'put ''KT4+M109QSxwPXArMXwwO009TSsxfDB9Zm9yKGw9MHxhWzQ3MTM3XSxwPTA7KDB8cCk8KDB8Yyk7KXtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspX1soMHxhWygwfGFbMTY4KygwfGFbUj4+Ml0pPj4yXSkrKHA8PDIpPj4yXSkrKGY8PDMpPj4zXT0wLGY9ZisxfDA7cD1wKzF8MH1mb3Iodz0w''@;'; put 'put ''O2Y9MHxhWygwfGFbMTUyKygwfGFbUj4+Ml0pPj4yXSkrKHc8PDIpPj4yXTspe2ZvcihsPWYrMTZ8MCxmPTA7ISgoMHxmKT49KDB8YykpOyl7ZTpkb3tpZigoMHx3KSE9KDB8ZikpZm9yKEE9K2NjKDB8YVsxMzIrKDB8YVtsPj4yXSk+PjJdLDB8YVsxMzIrKDB8YVsxNisoMHxhWygwfGFbMTUy''@;'; put 'put ''KygwfGFbUj4+Ml0pPj4yXSkrKGY8PDIpPj4yXSk+PjJdKT4+Ml0sRCksbT0wfGFbNDcxMzddLEE9MS9BLHA9MDs7KXtpZigoMHxwKT49KDB8bSkpYnJlYWsgZTtfWygwfGFbKDB8YVsoMHxhWzE3MisoTT0wfGFbUj4+Ml0pPj4yXSkrKHc8PDIpPj4yXSkrKGY8PDIpPj4yXSkrKHA8PDMpPj4z''@;'; put 'put ''XT1wZT0oKHBlPStfW0QrKHA8PDMpPj4zXSktK19bKDB8YVsoMHxhW00rMTYwPj4yXSkrKHc8PDIpPj4yXSkrKGY8PDMpPj4zXSpwZSpBKSorX1soMHxhWygwfGFbTSsxNjQ+PjJdKSsodzw8Mik+PjJdKSsoZjw8Myk+PjNdLF9bKE09KDB8YVsoMHxhW00rMTY4Pj4yXSkrKHc8PDIpPj4yXSkr''@;'; put 'put ''KHA8PDMpfDApPj4zXT0rX1tNPj4zXStwZSxwPXArMXwwfX13aGlsZSgwKTtmPWYrMXwwfXc9dysxfDB9b2U9S30obCxjKSxmdW5jdGlvbiB2c2UobCxjKXtsfD0wLGN8PTA7dmFyIEEsdyxiLGY9MCxrPTA7Zm9yKHc9b2Usb2U9b2UrMzJ8MCxBPXcrMjR8MCxfWzIzMjE2XT0oYj0rX1syMzI5''@;'; put 'put ''NF0pKmI7Zj0wfEFzZShsLGMpOylCSihsLGMsZik7KDB8KGM9MHxhWzE1NisoMHxhWyhjPWwrMTZ8MCk+PjJdKT4+Ml0pKT09KDB8YVs0NzEzNl0pJiYoaz0wfCRyKGwpLGFbQT4+Ml09YyxhW0ErND4+Ml09ayxYcigwLDkwMzIwLEEpKSxvZT13fShsLGMpLG9lPUF9ZnVuY3Rpb24gQUoobCxj''@;'; put 'put ''LGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgZXQscnQsbHQsa3QsYXQsRXQsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsR2U9MCxNdD0wLFp0PTAsdXQ9MDtmb3Iodz0wfGJmKGx8PTAp''@;'; put 'put ''LEV0PTB8ZnVuY3Rpb24gY2FlKCl7dmFyIGwscCxjPTAsZj0wO2Y9MjA3NzYscD0zNisoYz1sPTB8UW4oNDApKXwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9d2hpbGUoKDB8Yyk8KDB8cCkpO3JldHVybiBhW2wrMzY+PjJdPTAsMHxBcyhsLDB8YVs0NTgxXSl9KCksMj09''@;'; put 'put ''KDB8bSk/KGI9MCxNdD0wKTooTXQ9MHxzaShsLDIsOTI0OTMsMCksYj0wIT0oMHxhWzQ3MTc0XSkmMSxNdD0wIT0oMHxNdCkpLHJ0PTM9PSgxfHApLGt0PTB8UW4oMjAqY3wwKSxhdD0wfFFuKGM8PDIpLE09MHxRbihrPSh3PDwxKStjPDwyKSxtPShldD1ydHxNdCk/MHxRbihrKTowLHc9KGx0''@;'; put 'put ''PTAhPSgwfGIpKT8wfFFuKGspOjAsYj1ydD8wfFFuKGspOjAsaz0wLEhlPTB8THQobCksamU9MDtIZTspe2lmKGhhZShFdCksKDB8YVsxMjArKDB8YVtIZSsxNj4+Ml0pPj4yXSkhPSgwfGplKSl7R2U9MTI7YnJlYWt9Zm9yKGFbYXQrKGplPDwyKT4+Ml09SGUsYVsoT2U9a3QrKDIwKmplfDAp''@;'; put 'put ''KzR8MCk+PjJdPU0sYVsoTGU9a3QrKDIwKmplfDApKzh8MCk+PjJdPWV0P206MCxhWyhCZT1rdCsoMjAqamV8MCkrMTJ8MCk+PjJdPWx0P3c6MCxhW2t0KygyMCpqZXwwKSsxNj4+Ml09cnQ/YjowLHBlPTEsYmU9MHxGcyhsLEhlKSxtZT0xLEs9ayxNPU0rNHwwLG09ZXQ/bSs0fDA6bSx3PWx0''@;'; put 'put ''P3crNHwwOncsYj1ydD9iKzR8MDpiO2JlOyl7RD0zJmFbYmU+PjJdLEc9YmUrLTQ4fDAsaz1iZSs0OHwwO2Rve2lmKCgwfGFbKDI9PSgwfEQpP2JlOkcpKzQwPj4yXSk9PSgwfGFbKDM9PSgwfEQpP2JlOmspKzQwPj4yXSkpRD1wZSxHPW1lLGs9SztlbHNle2lmKCgwfChEPTB8JGxlKEV0LGJl''@;'; put 'put ''LHBlKSkpIT0oMHxwZSkpe2lmKGx0JiYoV25bKEc9KDB8YVtCZT4+Ml0pKyhEPDwyKXwwKT4+Ml09K19bMTI4KygwfGFbYmUrMTY+PjJdKT4+M10rICtXbltHPj4yXSksIU10KXtEPXBlLEc9bWUsaz1LO2JyZWFrfVduWyhEPSgwfGFbTGU+PjJdKSsoRDw8Mil8MCk+PjJdPShadD0rX1sxMzYr''@;'; put 'put ''KDB8YVtiZSsxNj4+Ml0pPj4zXSk+KFI9KygwfH5+K1duW0Q+PjJdKSk/WnQ6UixEPXBlLEc9bWUsaz1LO2JyZWFrfUs9SysxfDAsRD1wZSsxfDAscGU9TSs0fDAsYVtNPj4yXT1hWzEyMCsoMHxhWzE2KygwfGFbKCgwfGFbKGs9Mz09KDB8KHV0PTMmYVtiZT4+Ml0pKT9iZTprKSs0MD4+Ml0p''@;'; put 'put ''PT0oMHxIZSk/Mj09KDB8dXQpP2JlOkc6aykrNDA+PjJdKT4+Ml0pPj4yXSxsdCYmKFduW3c+PjJdPStfWzEyOCsoMHxhW2JlKzE2Pj4yXSk+PjNdLHc9dys0fDApLE10PyhrPW0rNHwwLFduW20+PjJdPStfWzEzNisoMHxhW2JlKzE2Pj4yXSk+PjNdLHJ0PyhtPWssR2U9MjcpOm09ayk6cnQm''@;'; put 'put ''JihXblttPj4yXT0xLG09bSs0fDAsR2U9MjcpLDI3PT0oMHxHZSkmJihHZT0wLFI9MCE9KDB8KGs9MHxMaShiZSwxMDE1NTkpKSkmJjA9PSgwfG4yKGssMTM1NzA5LDQpKT8wOigwfEhlKT09KDB8YVsoMj09KDMmYVtiZT4+Ml18MCk/YmU6RykrNDA+PjJdKT8xOi0xLFduW2I+PjJdPVIsYj1i''@;'; put 'put ''KzR8MCksRz1tZSsxfDAsaz1LLE09cGV9fXdoaWxlKDApO3BlPUQsYmU9MHxUcyhsLGJlLEhlKSxtZT1HLEs9a31hW2t0KygyMCpqZXwwKT4+Ml09bWUsYVthW09lPj4yXT4+Ml09amUsaz1LLEhlPTB8enQobCxIZSksamU9amUrMXwwfTEyPT0oMHxHZSkmJkJyKDg5MTAzLDg5MTE4LDgxOSw4''@;'; put 'put ''OTEzMCkscnQmJmZ1bmN0aW9uIHFsZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wO2ZvcihtPTA7Oyl7aWYoKDB8bSk+PSgwfGMpKXttPTA7YnJlYWt9dWVbMTU3KyhBPTB8YVsxNisoMHxhW3ArKG08PDIpPj4yXSk+PjJdKT4+MF09MCx1ZVtBKzE1OD4+MF09MCxt''@;'; put 'put ''PW0rMXwwfWZvcig7ISgoMHxtKT49KDB8YykpOykwfHVlWzE1NysoMHxhWzE2KygwfGFbcCsobTw8Mik+PjJdKT4+Ml0pPj4wXXx8eUoobCxtLGYscCksbT1tKzF8MH0oa3QsYyxwLGF0KSxEPSgwfGspLzJ8MDtlOmRve2lmKCgwfEQpIT0oMHxiZihsKSkpZm9yKGs9KEQ8PDEpK2M8PDIsYj0w''@;'; put 'put ''fGwwKDB8YVtrdCs0Pj4yXSxrKSxNdCYmKG09MHxsMCgwfGFba3QrOD4+Ml0saykpLGx0PyhNPTAsdz0wfGwwKDB8YVtrdCsxMj4+Ml0saykpOk09MDs7KXtpZigoMHxNKT49KDB8YykpYnJlYWsgZTtrPTB8YVtrdCsoMjAqTXwwKT4+Ml0sYVtrdCsoMjAqTXwwKSs0Pj4yXT1iLE10JiYoYVtr''@;'; put 'put ''dCsoMjAqTXwwKSs4Pj4yXT1tLG09bSsoazw8Mil8MCksbHQmJihhW2t0KygyMCpNfDApKzEyPj4yXT13LHc9dysoazw8Mil8MCksTT1NKzF8MCxiPWIrKGs8PDIpfDB9fXdoaWxlKDApO3JldHVybiBhW2Y+PjJdPUQsQT9hW0E+PjJdPWF0Okh0KGF0KSxmdW5jdGlvbiBkYWUobCl7dmFyIGMs''@;'; put 'put ''Zj0wO2ZvcihjPTB8YVs0KyhsfD0wKT4+Ml0saXMobCksbD0wfGFbYyszNj4+Ml07bDspZj0wfGFbbD4+Ml0sSHQobCksbD1mO0h0KGMpfShFdCksMHxrdH1mdW5jdGlvbiAkbGUobCxjLGYpe3ZhciBwLG09MDtyZXR1cm4gMHxmdW5jdGlvbiBwYWUobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4g''@;'; put 'put ''bHw9MCxmfD0wLHB8PTAsbT1vZSxvZT1vZSszMnwwLGFbKEE9bSkrOD4+Ml09Y3w9MCxhW0ErMTI+PjJdPWYsYVtBKzE2Pj4yXT1wLHA9MHxhWzE2KygwfG1pWzYzJmFbbD4+Ml1dKGwsQSwxKSk+PjJdLG9lPW0sMHxwfShsfD0wLChtPSgwfChwPTB8YVsxMjArKDB8YVsxNisoMHxhWygzPT0o''@;'; put 'put ''MHwobT0zJmFbKGN8PTApPj4yXSkpP2M6Yys0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk+KDB8KGM9MHxhWzEyMCsoMHxhWzE2KygwfGFbKDI9PSgwfG0pP2M6YystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpKT9jOnAsbT9wOmMsZnw9MCl9ZnVuY3Rpb24geUoobCxjLGYscCl7bHw9MCxmfD0w''@;'; put 'put ''O3ZhciBNLEQsUixLLG09MCxBPTAsdz0wLGI9MCxrPTAsRz0wO3VlWzE1Nysoaz0wfGFbKEs9MTYrKDB8YVsocHw9MCkrKChjfD0wKTw8Mik+PjJdKXwwKT4+Ml0pPj4wXT0xLHVlW2srMTU4Pj4wXT0xLGs9bCsoMjAqY3wwKXwwLE09bCsoMjAqY3wwKSsxNnwwLEQ9bCsoMjAqY3wwKSs0fDAs''@;'; put 'put ''Uj0zPT0oMHxmKT8tMToxLGI9MTtlOmZvcig7Oyl7aWYoKDB8Yik+PSgwfGFbaz4+Ml0pKXttPTE0O2JyZWFrfW09KDB8YVtNPj4yXSkrKGI8PDIpfDA7ZG97aWYoMSE9K1duW20+PjJdKXtpZighKDB8dWVbMTU4KyhBPTB8YVsxNisoMHxhW3ArKChHPTB8YVsoMHxhW0Q+PjJdKSsoYjw8Mik+''@;'; put 'put ''PjJdKTw8Mik+PjJdKT4+Ml0pPj4wXSkpe2lmKDB8dWVbQSsxNTc+PjBdKWJyZWFrO3lKKGwsRyxmLHApO2JyZWFrfWZvcihXblttPj4yXT1SLEE9bCsoMjAqR3wwKSs0fDAsdz0wfGFbbCsoMjAqR3wwKT4+Ml0sbT0xOzspe2lmKCgwfG0pPj0oMHx3KSl7bT05O2JyZWFrIGV9aWYoKDB8YVso''@;'; put 'put ''MHxhW0E+PjJdKSsobTw8Mik+PjJdKT09KDB8YykpYnJlYWs7bT1tKzF8MH1XblsoMHxhW2wrKDIwKkd8MCkrMTY+PjJdKSsobTw8Mik+PjJdPS0xfX13aGlsZSgwKTtiPWIrMXwwfWlmKDk9PSgwfG0pKUJyKDg5MTQ0LDg5MTE4LDcyMSw4OTE2NCk7ZWxzZSBpZigxND09KDB8bSkpcmV0dXJu''@;'; put 'put ''IHZvaWQodWVbMTU4KygwfGFbSz4+Ml0pPj4wXT0wKX1mdW5jdGlvbiB0c2UobCl7dmFyIGM7ZjAobHw9MCwxMzc0NjAsMTc2LDEpLFk3KGwpLGM9K2NsKGwsMHxhWzQ3MTc0XSwxLDEpLF9bMTI4KygwfGFbbCsxNj4+Ml0pPj4zXT1jfWZ1bmN0aW9uIGJKKGwsYyxmKXtsfD0wLGZ8PTA7dmFy''@;'; put 'put ''IGIscD0wLG09MCxBPTAsdz0wLGs9MDtpZihiPW9lLG9lPW9lKzE2fDAscD1iLHc9KEE9MHxUdFsxNjgrKDB8YVsobT0xNisoY3w9MCl8MCk+PjJdKT4+MV0pPDwxNj4+MTYsQTw8MTY+PjE2IT0xJjA9PSgwfHVlWzE5NDk1NF0pKXtmb3IoQT0wfFFuKHc8PDIpLHA9MDshKCgwfHApPj0oMHx3''@;'; put 'put ''KSk7KWFbQSsocDw8Mik+PjJdPWMsYz0wfGFbMTcyKygwfGFbYysxNj4+Ml0pPj4yXSxwPXArMXwwO2ZvcihWTihsLEEsMCx3LGs9KygwfGYpLGssMTc3OTIpLGM9MDshKCgwfGMpPj0oMHx3KSk7KTB8YVs5NisoMHxhWyhtPTE2KyhwPTB8YVtBKyhjPDwyKT4+Ml0pfDApPj4yXSk+PjJdJiZK''@;'; put 'put ''ZChmPTB8ZnIoMHxhWygzPT0oMyZhW3A+PjJdfDApP3A6cCs0OHwwKSs0MD4+Ml0pLDB8YVs5NisoMHxhW20+PjJdKT4+Ml0pLHdrKHApLGM9YysxfDA7SHQoQSl9ZWxzZSBhW3A+PjJdPWMsVk4obCxwLDAsMSxrPSsoMHxmKSxrLDE3NzkyKSwwfGFbOTYrKDB8YVttPj4yXSk+PjJdJiZKZCh3''@;'; put 'put ''PTB8ZnIoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pLDB8YVs5NisoMHxhW20+PjJdKT4+Ml0pLHdrKGMpO29lPWJ9ZnVuY3Rpb24gQ0oobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBqZSxldCxydCxsdCxNdCx5bixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAs''@;'; put 'put ''RD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsR2U9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCxybj0wO3luPW9lLG9lPW9lKzM4NHwwLHd0PXluKzM2OHwwLHJuPXluKzExMnwwLEE9eW4rMzJ8MCxHPXluKzMzNnwwLGF0PXluKzMyMHww''@;'; put 'put ''LEV0PXluKzMwNHwwLFp0PXluKzI4OHwwLHV0PXluKzI3MnwwLG09eW4rMjU2fDAsbHQ9eW4rMjQwfDAsTXQ9eW4rMjI0fDAsa3Q9eW4rMjA4fDAscGU9eW4rMTkyfDAsbWU9eW4rMTc2fDAsYmU9eW4rMTYwfDAsSGU9eW4rMTQ0fDAsamU9eW4rMTI4fDAsZXQ9eW4rOTZ8MCxydD15bisxNnww''@;'; put 'put ''LEdlPXluO2U6ZG97c3dpdGNoKDB8WjUobCkpe2Nhc2UgMzpjYXNlIDE6cD0wfG1yKDgpLG09MHxhWzEyKyhsPTB8YVsoSGU9bCsxNnwwKT4+Ml0pPj4yXTtkb3tpZihmPDwyND4+MjQpe2lmKDIwNDgmYVttKzQwPj4yXSl7JE4oRyxtKSxMZT0rX1tHKzg+PjNdLFI9K19bRysxNj4+M10sQmU9''@;'; put 'put ''K19bRysyND4+M10sX1tBPj4zXT1EPStfW0c+PjNdLF9bQSs4Pj4zXT1MZSxfW0ErMTY+PjNdPVIsX1tBKzI0Pj4zXT1MZSxfW0ErMzI+PjNdPVIsX1tBKzQwPj4zXT1CZSxfW0ErNDg+PjNdPUQsX1tBKzU2Pj4zXT1CZSxCZT0wLGw9NCxmPTAsRD0wLFI9MDticmVha31MZT0tLjUqKEJlPStf''@;'; put 'put ''W2wrODA+PjNdKSxfW0E+PjNdPUQ9LShSPStfW2wrODg+PjNdKSxfW0ErOD4+M109TGUsX1tBKzE2Pj4zXT1SLF9bQSsyND4+M109TGUsQmUqPS41LF9bQSszMj4+M109UixfW0ErNDA+PjNdPUJlLF9bQSs0OD4+M109RCxfW0ErNTY+PjNdPUJlLEJlPTAsbD00LGY9MCxEPTAsUj0wO2JyZWFr''@;'; put 'put ''fWlmKCgwfChsPTB8YVttKzg+PjJdKSk+Mil7QmU9MCxBPTB8YVttKzQ0Pj4yXSxmPTAsRD0rV25bYz4+Ml0sUj0rV25bYys0Pj4yXTticmVha31CZT0uMDEqKyRjKCksbD04LEE9MCxmPTEsRD0wLFI9MDticmVha313aGlsZSgwKTtmb3IoYVtwKzQ+PjJdPWwsRz0wfG1yKGw8PDQpLGFbcD4+''@;'; put 'put ''Ml09RyxLPTEvKygwfGwpLHBlPWMrOHwwLG1lPWMrNHwwLGJlPTQ9PSgwfGwpLE9lPS1ELExlPS1SLG09MDs7KXtpZigoMHxsKTw9KDB8bSkpYnJlYWsgZTtkb3tpZihmKWI9K2xhKCsodz02LjI4MzE4NTMwNzE3OTU4NiorKDB8bSkqSytCZSkpLHc9K0lhKCt3KSwwfHVlW3BlPj4wXT8oaz0o''@;'; put 'put ''K19bODArKHJuPTB8YVtIZT4+Ml0pPj4zXSsgK1duW21lPj4yXSkqdyx3PSgrX1tybis5Nj4+M10rICtfW3JuKzg4Pj4zXSsgK1duW2M+PjJdKSpiKTooaz13KitXblttZT4+Ml0qK19bODArKHJuPTB8YVtIZT4+Ml0pPj4zXSx3PWIqK1duW2M+PjJdKigrX1tybis5Nj4+M10rICtfW3JuKzg4''@;'; put 'put ''Pj4zXSkpLE09LjUqdyx3PS41Kms7ZWxzZXtpZighKDB8dWVbcGU+PjBdKSl7TT0rX1tBKyhtPDw0KT4+M10qRCx3PStfW0ErKG08PDQpKzg+PjNdKlI7YnJlYWt9aWYoIWJlKXtNPStfW0ErKG08PDQpPj4zXSxNKj1ELyhrPStGMCgrKCh3PStfW0ErKG08PDQpKzg+PjNdKSp3K00qTSkpKSsx''@;'; put 'put ''LHcqPVIvaysxO2JyZWFrfXN3aXRjaCgwfG0pe2Nhc2UgMDpiPVIsdz1EO2JyZWFrO2Nhc2UgMTpiPVIsdz1PZTticmVhaztjYXNlIDI6Yj1MZSx3PU9lO2JyZWFrO2Nhc2UgMzpiPUxlLHc9RDticmVhaztkZWZhdWx0OmI9MCx3PTB9TT0rX1tBKyhtPDw0KT4+M10rdyx3PStfW0ErKG08PDQp''@;'; put 'put ''Kzg+PjNdK2J9fXdoaWxlKDApO19bRysoKHJuPWwtbS0xfDApPDw0KT4+M109K19bMTYrKHd0PTB8YVtIZT4+Ml0pPj4zXStNLF9bRysocm48PDQpKzg+PjNdPStfW3d0KzI0Pj4zXSt3LG09bSsxfDB9Y2FzZSAyOmlmKHc9K19bMTYrKHA9MHxhWzEyKygwfGFbKEdlPWwrMTZ8MCk+PjJdKT4+''@;'; put 'put ''Ml0pPj4zXSxNPStfW3ArMjQ+PjNdLGI9K19bcCszMj4+M10saz0rX1twKzQwPj4zXSxwPTB8bXIoOCksYVtwKzQ+PjJdPTQsbD0wfG1yKDY0KSxhW3A+PjJdPWwsYVtybj4+Ml09YVsoR2U9MTYrKDB8YVtHZT4+Ml0pfDApPj4yXSxhW3JuKzQ+PjJdPWFbR2UrND4+Ml0sYVtybis4Pj4yXT1h''@;'; put 'put ''W0dlKzg+PjJdLGFbcm4rMTI+PjJdPWFbR2UrMTI+PjJdLDB8dWVbYys4Pj4wXSl7QmU9dy0rV25bYz4+Ml0sTGU9TS0rV25bKGt0PWMrNHwwKT4+Ml0sYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3Ju''@;'; put 'put ''KzEyPj4yXSxZNShhdCxCZSxMZSx3dCksYVtsPj4yXT1hW2F0Pj4yXSxhW2wrND4+Ml09YVthdCs0Pj4yXSxhW2wrOD4+Ml09YVthdCs4Pj4yXSxhW2wrMTI+PjJdPWFbYXQrMTI+PjJdLGF0PTE2KygwfGFbcD4+Ml0pfDAsTGU9dy0rV25bYz4+Ml0sQmU9aysgK1duW2t0Pj4yXSxhW3d0Pj4y''@;'; put 'put ''XT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLFk1KEV0LExlLEJlLHd0KSxhW2F0Pj4yXT1hW0V0Pj4yXSxhW2F0KzQ+PjJdPWFbRXQrND4+Ml0sYVthdCs4Pj4yXT1hW0V0Kzg+PjJdLGFbYXQrMTI+''@;'; put 'put ''PjJdPWFbRXQrMTI+PjJdLEV0PTMyKygwfGFbcD4+Ml0pfDAsQmU9YisgK1duW2M+PjJdLExlPWsrICtXbltrdD4+Ml0sYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxZNShadCxCZSxM''@;'; put 'put ''ZSx3dCksYVtFdD4+Ml09YVtadD4+Ml0sYVtFdCs0Pj4yXT1hW1p0KzQ+PjJdLGFbRXQrOD4+Ml09YVtadCs4Pj4yXSxhW0V0KzEyPj4yXT1hW1p0KzEyPj4yXSxadD00OCsoMHxhW3A+PjJdKXwwLExlPWIrICtXbltjPj4yXSxCZT1NLStXbltrdD4+Ml0sYVt3dD4+Ml09YVtybj4+Ml0sYVt3''@;'; put 'put ''dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxZNSh1dCxMZSxCZSx3dCksYVtadD4+Ml09YVt1dD4+Ml0sYVtadCs0Pj4yXT1hW3V0KzQ+PjJdLGFbWnQrOD4+Ml09YVt1dCs4Pj4yXSxhW1p0KzEyPj4yXT1hW3V0KzEyPj4y''@;'; put 'put ''XTticmVhayBlfWFbd3Q+PjJdPWFbcm4+PjJdLGFbd3QrND4+Ml09YVtybis0Pj4yXSxhW3d0Kzg+PjJdPWFbcm4rOD4+Ml0sYVt3dCsxMj4+Ml09YVtybisxMj4+Ml0sVTUobSx3LE0sd3QsYyksYVtsPj4yXT1hW20+PjJdLGFbbCs0Pj4yXT1hW20rND4+Ml0sYVtsKzg+PjJdPWFbbSs4Pj4y''@;'; put 'put ''XSxhW2wrMTI+PjJdPWFbbSsxMj4+Ml0sdXQ9MTYrKDB8YVtwPj4yXSl8MCxhW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLFU1KGx0LHcsayx3dCxjKSxhW3V0Pj4yXT1hW2x0Pj4yXSxh''@;'; put 'put ''W3V0KzQ+PjJdPWFbbHQrND4+Ml0sYVt1dCs4Pj4yXT1hW2x0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbbHQrMTI+PjJdLHV0PTMyKygwfGFbcD4+Ml0pfDAsYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3Ju''@;'; put 'put ''KzEyPj4yXSxVNShNdCxiLGssd3QsYyksYVt1dD4+Ml09YVtNdD4+Ml0sYVt1dCs0Pj4yXT1hW010KzQ+PjJdLGFbdXQrOD4+Ml09YVtNdCs4Pj4yXSxhW3V0KzEyPj4yXT1hW010KzEyPj4yXSx1dD00OCsoMHxhW3A+PjJdKXwwLGFbd3Q+PjJdPWFbcm4+PjJdLGFbd3QrND4+Ml09YVtybis0''@;'; put 'put ''Pj4yXSxhW3d0Kzg+PjJdPWFbcm4rOD4+Ml0sYVt3dCsxMj4+Ml09YVtybisxMj4+Ml0sVTUoa3QsYixNLHd0LGMpLGFbdXQ+PjJdPWFba3Q+PjJdLGFbdXQrND4+Ml09YVtrdCs0Pj4yXSxhW3V0Kzg+PjJdPWFba3QrOD4+Ml0sYVt1dCsxMj4+Ml09YVtrdCsxMj4+Ml07YnJlYWsgZTtjYXNl''@;'; put 'put ''IDQ6aWYobD1sKzE2fDAscD0wfG1yKDgpLGFbcCs0Pj4yXT00LG09MHxtcig2NCksYVtwPj4yXT1tLGFbcm4+PjJdPWFbKHV0PTE2KyhBPTB8YVtsPj4yXSl8MCk+PjJdLGFbcm4rND4+Ml09YVt1dCs0Pj4yXSxhW3JuKzg+PjJdPWFbdXQrOD4+Ml0sYVtybisxMj4+Ml09YVt1dCsxMj4+Ml0s''@;'; put 'put ''dz0tK19bQSs4OD4+M10sMHx1ZVtjKzg+PjBdKXtCZT13LStXbltjPj4yXSxMZT0tK19bQSs4MD4+M10tK1duWyhadD1jKzR8MCk+PjJdLGFbd3Q+PjJdPWFbcm4+PjJdLGFbd3QrND4+Ml09YVtybis0Pj4yXSxhW3d0Kzg+PjJdPWFbcm4rOD4+Ml0sYVt3dCsxMj4+Ml09YVtybisxMj4+Ml0s''@;'; put 'put ''WTUocGUsQmUsTGUsd3QpLGFbbT4+Ml09YVtwZT4+Ml0sYVttKzQ+PjJdPWFbcGUrND4+Ml0sYVttKzg+PjJdPWFbcGUrOD4+Ml0sYVttKzEyPj4yXT1hW3BlKzEyPj4yXSx1dD0xNisoMHxhW3A+PjJdKXwwLExlPS0rX1s4OCsoRXQ9MHxhW2w+PjJdKT4+M10tK1duW2M+PjJdLEJlPStfW0V0''@;'; put 'put ''KzgwPj4zXSsgK1duW1p0Pj4yXSxhW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLFk1KG1lLExlLEJlLHd0KSxhW3V0Pj4yXT1hW21lPj4yXSxhW3V0KzQ+PjJdPWFbbWUrND4+Ml0sYVt1''@;'; put 'put ''dCs4Pj4yXT1hW21lKzg+PjJdLGFbdXQrMTI+PjJdPWFbbWUrMTI+PjJdLHV0PTMyKygwfGFbcD4+Ml0pfDAsQmU9K19bOTYrKEV0PTB8YVtsPj4yXSk+PjNdKyArV25bYz4+Ml0sTGU9K19bRXQrODA+PjNdKyArV25bWnQ+PjJdLGFbd3Q+PjJdPWFbcm4+PjJdLGFbd3QrND4+Ml09YVtybis0''@;'; put 'put ''Pj4yXSxhW3d0Kzg+PjJdPWFbcm4rOD4+Ml0sYVt3dCsxMj4+Ml09YVtybisxMj4+Ml0sWTUoYmUsQmUsTGUsd3QpLGFbdXQ+PjJdPWFbYmU+PjJdLGFbdXQrND4+Ml09YVtiZSs0Pj4yXSxhW3V0Kzg+PjJdPWFbYmUrOD4+Ml0sYVt1dCsxMj4+Ml09YVtiZSsxMj4+Ml0sdXQ9NDgrKDB8YVtw''@;'; put 'put ''Pj4yXSl8MCxMZT0rX1s5NisoRXQ9MHxhW2w+PjJdKT4+M10rICtXbltjPj4yXSxCZT0tK19bRXQrODA+PjNdLStXbltadD4+Ml0sYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxZNShI''@;'; put 'put ''ZSxMZSxCZSx3dCksYVt1dD4+Ml09YVtIZT4+Ml0sYVt1dCs0Pj4yXT1hW0hlKzQ+PjJdLGFbdXQrOD4+Ml09YVtIZSs4Pj4yXSxhW3V0KzEyPj4yXT1hW0hlKzEyPj4yXTticmVhayBlfUxlPS0rX1tBKzgwPj4zXSxhW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3''@;'; put 'put ''dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLFU1KGplLHcsTGUsd3QsYyksYVttPj4yXT1hW2plPj4yXSxhW20rND4+Ml09YVtqZSs0Pj4yXSxhW20rOD4+Ml09YVtqZSs4Pj4yXSxhW20rMTI+PjJdPWFbamUrMTI+PjJdLHV0PTE2KygwfGFbcD4+Ml0pfDAsTGU9''@;'; put 'put ''LStfWzg4KyhadD0wfGFbbD4+Ml0pPj4zXSxCZT0rX1tadCs4MD4+M10sYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxVNShldCxMZSxCZSx3dCxjKSxhW3V0Pj4yXT1hW2V0Pj4yXSxh''@;'; put 'put ''W3V0KzQ+PjJdPWFbZXQrND4+Ml0sYVt1dCs4Pj4yXT1hW2V0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbZXQrMTI+PjJdLHV0PTMyKygwfGFbcD4+Ml0pfDAsQmU9K19bOTYrKFp0PTB8YVtsPj4yXSk+PjNdLExlPStfW1p0KzgwPj4zXSxhW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4r''@;'; put 'put ''ND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLFU1KHJ0LEJlLExlLHd0LGMpLGFbdXQ+PjJdPWFbcnQ+PjJdLGFbdXQrND4+Ml09YVtydCs0Pj4yXSxhW3V0Kzg+PjJdPWFbcnQrOD4+Ml0sYVt1dCsxMj4+Ml09YVtydCsxMj4+Ml0sdXQ9NDgrKDB8''@;'; put 'put ''YVtwPj4yXSl8MCxMZT0rX1s5NisoWnQ9MHxhW2w+PjJdKT4+M10sQmU9LStfW1p0KzgwPj4zXSxhW3d0Pj4yXT1hW3JuPj4yXSxhW3d0KzQ+PjJdPWFbcm4rND4+Ml0sYVt3dCs4Pj4yXT1hW3JuKzg+PjJdLGFbd3QrMTI+PjJdPWFbcm4rMTI+PjJdLFU1KEdlLExlLEJlLHd0LGMpLGFbdXQ+''@;'; put 'put ''PjJdPWFbR2U+PjJdLGFbdXQrND4+Ml09YVtHZSs0Pj4yXSxhW3V0Kzg+PjJdPWFbR2UrOD4+Ml0sYVt1dCsxMj4+Ml09YVtHZSsxMj4+Ml07YnJlYWsgZTtkZWZhdWx0OnA9MH19d2hpbGUoMCk7cmV0dXJuIG9lPXluLDB8cH1mdW5jdGlvbiBZNShsLGMsZixwKXtmPStfWzgrKHB8PTApPj4z''@;'; put 'put ''XSsoZj0rZiksX1sobHw9MCk+PjNdPStfW3A+PjNdKyhjPStjKSxfW2wrOD4+M109Zn1mdW5jdGlvbiBVNShsLGMsZixwLG0pe2Y9K1duWzQrKG18PTApPj4yXSooZj0rZikrICtfWzgrKHB8PTApPj4zXSxfWyhsfD0wKT4+M109K1duW20+PjJdKihjPStjKSsgK19bcD4+M10sX1tsKzg+PjNd''@;'; put 'put ''PWZ9ZnVuY3Rpb24gZ1YobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgdyxiLGssTSxELFIsRyxLPTAscGU9MCxtZT0wO0c9b2Usb2U9b2UrMTEyfDAsaz1HKzg4fDAsTT1HKzMyfDAsRD1HKzE2fDAsUj1HLG09Rys1NnwwLEE9Rys0MHwwLHc9NDgrKGN8PTApfDAs''@;'; put 'put ''cGU9MTYrKDB8YVsoSz1jKzE2fDApPj4yXSl8MCxhWyhiPUcrNzJ8MCk+PjJdPWFbKG1lPTE2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOncpKzQwPj4yXSk+PjJdKXwwKT4+Ml0sYVtiKzQ+PjJdPWFbbWUrND4+Ml0sYVtiKzg+PjJdPWFbbWUrOD4+Ml0sYVtiKzEyPj4yXT1h''@;'; put 'put ''W21lKzEyPj4yXSxhW2s+PjJdPWFbcGU+PjJdLGFbays0Pj4yXT1hW3BlKzQ+PjJdLGFbays4Pj4yXT1hW3BlKzg+PjJdLGFbaysxMj4+Ml09YVtwZSsxMj4+Ml0sUkQobSxiLGspLGFbRD4+Ml09YVttPj4yXSxhW0QrND4+Ml09YVttKzQ+PjJdLGFbRCs4Pj4yXT1hW20rOD4+Ml0sYVtEKzEy''@;'; put 'put ''Pj4yXT1hW20rMTI+PjJdLG09YystNDh8MCxLPTU2KygwfGFbSz4+Ml0pfDAsYVtiPj4yXT1hWyhwZT0xNisoMHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSl8MCk+PjJdLGFbYis0Pj4yXT1hW3BlKzQ+PjJdLGFbYis4Pj4yXT1hW3BlKzg+PjJdLGFbYisx''@;'; put 'put ''Mj4+Ml09YVtwZSsxMj4+Ml0sYVtrPj4yXT1hW0s+PjJdLGFbays0Pj4yXT1hW0srND4+Ml0sYVtrKzg+PjJdPWFbSys4Pj4yXSxhW2srMTI+PjJdPWFbSysxMj4+Ml0sUkQoQSxiLGspLGFbUj4+Ml09YVtBPj4yXSxhW1IrND4+Ml09YVtBKzQ+PjJdLGFbUis4Pj4yXT1hW0ErOD4+Ml0sYVtS''@;'; put 'put ''KzEyPj4yXT1hW0ErMTI+PjJdLHA/KEE9MHxhWzI4OCsoMHxhWzE2KygwfGFbKDI9PSgwfChtZT0zJmFbYz4+Ml0pKT9jOm0pKzQwPj4yXSk+PjJdKT4+Ml0sbT0wfGFbMjg4KygwfGFbMTYrKDB8YVsoMz09KDB8bWUpP2M6dykrNDA+PjJdKT4+Ml0pPj4yXSk6KEE9LTExMTEsbT0tMTExMSks''@;'; put 'put ''YVtiPj4yXT1hW0Q+PjJdLGFbYis0Pj4yXT1hW0QrND4+Ml0sYVtiKzg+PjJdPWFbRCs4Pj4yXSxhW2IrMTI+PjJdPWFbRCsxMj4+Ml0sYVtrPj4yXT1hW1I+PjJdLGFbays0Pj4yXT1hW1IrND4+Ml0sYVtrKzg+PjJdPWFbUis4Pj4yXSxhW2srMTI+PjJdPWFbUisxMj4+Ml0sZnVuY3Rpb24g''@;'; put 'put ''bXgobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgYixSLEcsSyx3PTAsaz0wLE09MCxEPTA7Zm9yKEs9b2Usb2U9b2UrMzJ8MCxrPUssYVsoRD1LKzE2fDApPj4yXT1hWyhjfD0wKT4+Ml0sYVtEKzQ+PjJdPWFbYys0Pj4yXSxhW0QrOD4+Ml09YVtjKzg+PjJdLGFb''@;'; put 'put ''RCsxMj4+Ml09YVtjKzEyPj4yXSxSPTB8a18obCxmLEQpLGFbRD4+Ml09YVtwPj4yXSxhW0QrND4+Ml09YVtwKzQ+PjJdLGFbRCs4Pj4yXT1hW3ArOD4+Ml0sYVtEKzEyPj4yXT1hW3ArMTI+PjJdLEc9MHxrXyhsLG0sRCksYVtrPj4yXT1hW2M+PjJdLGFbays0Pj4yXT1hW2MrND4+Ml0sYVtr''@;'; put 'put ''Kzg+PjJdPWFbYys4Pj4yXSxhW2srMTI+PjJdPWFbYysxMj4+Ml0sYVtEPj4yXT1hW3A+PjJdLGFbRCs0Pj4yXT1hW3ArND4+Ml0sYVtEKzg+PjJdPWFbcCs4Pj4yXSxhW0QrMTI+PjJdPWFbcCsxMj4+Ml0sRD0wfGZ1bmN0aW9uIENfKGwsYyxmLHAsbSxBLHcpe2N8PTAsZnw9MCxwfD0wLG18''@;'; put 'put ''PTAsQXw9MDt2YXIgYixrLE0sRD0wO3JldHVybiBrPW9lLG9lPW9lKzMyfDAsTT1rKzE2fDAsYj0wfGFbNCsod3w9MCk+PjJdLGFbKEQ9ayk+PjJdPWFbKGx8PTApPj4yXSxhW0QrND4+Ml09YVtsKzQ+PjJdLGFbRCs4Pj4yXT1hW2wrOD4+Ml0sYVtEKzEyPj4yXT1hW2wrMTI+PjJdLGFbTT4+''@;'; put 'put ''Ml09YVtwPj4yXSxhW00rND4+Ml09YVtwKzQ+PjJdLGFbTSs4Pj4yXT1hW3ArOD4+Ml0sYVtNKzEyPj4yXT1hW3ArMTI+PjJdLDB8ZnVuY3Rpb24gaVAobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MDt2YXIgRCxSLEcsSyxwZSxtZSxiZSxPZSxBPTAsdz0wLGI9MCxrPTAsTT0wO09lPW9lLG9l''@;'; put 'put ''PW9lKzY0fDAsUj1PZSs0OHwwLEQ9T2UrMzJ8MCxLPU9lKzE2fDAsRz1PZSxtZT0wfGFbNCsobXw9MCk+PjJdLGJlPTB8YVttKzg+PjJdLHBlPTB8YVttKzE2Pj4yXSxBPSgwfChwfD0wKSk8MDtkb3tpZighKCgwfGMpPDApKXtpZihBKXtNPTB8YVttKzEyPj4yXSxtPTAsdz0wLGI9YyxrPU0s''@;'; put 'put ''Yz1NKyhjPDwyKXwwLE09OTticmVha31pZihBPTB8YVttKzEyPj4yXSwoMHxjKT4oMHxwKSl7bT0wfGFbQSsocCsxPDwyKT4+Ml0sdz0wfGFbQSsocDw8Mik+PjJdLGI9YyxrPUEsYz1BKyhjPDwyKXwwLE09OTticmVha31tPTB8YVtBKyhjKzE8PDIpPj4yXSx3PTB8YVtBKyhjPDwyKT4+Ml0s''@;'; put 'put ''Yj1wLGs9QSxjPUErKHA8PDIpfDAsTT05O2JyZWFrfUE/KEE9MCxiPTAsbT0wLHc9MCk6KGM9MHxhW20rMTI+PjJdLG09MCx3PTAsYj1wLGs9YyxjPWMrKHA8PDIpfDAsTT05KX13aGlsZSgwKTtmb3IoOT09KDB8TSkmJihBPTB8YVtrKyhiKzE8PDIpPj4yXSxiPTB8YVtjPj4yXSksYz0wOzsp''@;'; put 'put ''e2lmKCgwfGMpPj0oMHx3KSl7TT0xMzticmVha31pZihrPWJlKyhjPDw0KXwwLHA9YmUrKGFbcGUrKGM8PDIpPj4yXTw8NCl8MCxhW0c+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSxhW0s+PjJdPWFbZj4+''@;'; put 'put ''Ml0sYVtLKzQ+PjJdPWFbZis0Pj4yXSxhW0srOD4+Ml09YVtmKzg+PjJdLGFbSysxMj4+Ml09YVtmKzEyPj4yXSxhW0Q+PjJdPWFbaz4+Ml0sYVtEKzQ+PjJdPWFbays0Pj4yXSxhW0QrOD4+Ml09YVtrKzg+PjJdLGFbRCsxMj4+Ml09YVtrKzEyPj4yXSxhW1I+PjJdPWFbcD4+Ml0sYVtSKzQ+''@;'; put 'put ''PjJdPWFbcCs0Pj4yXSxhW1IrOD4+Ml09YVtwKzg+PjJdLGFbUisxMj4+Ml09YVtwKzEyPj4yXSwwfEVkKEcsSyxELFIpKXtBPTA7YnJlYWt9Yz1jKzF8MH1lOmRve2lmKDEzPT0oMHxNKSl7Zm9yKDshKCgwfG0pPj0oMHxiKSk7KXtpZihwPWJlKyhtPDw0KXwwLE09YmUrKGFbcGUrKG08PDIp''@;'; put 'put ''Pj4yXTw8NCl8MCxhW0c+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSxhW0s+PjJdPWFbZj4+Ml0sYVtLKzQ+PjJdPWFbZis0Pj4yXSxhW0srOD4+Ml09YVtmKzg+PjJdLGFbSysxMj4+Ml09YVtmKzEyPj4y''@;'; put 'put ''XSxhW0Q+PjJdPWFbcD4+Ml0sYVtEKzQ+PjJdPWFbcCs0Pj4yXSxhW0QrOD4+Ml09YVtwKzg+PjJdLGFbRCsxMj4+Ml09YVtwKzEyPj4yXSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSwwfEVkKEcs''@;'; put 'put ''SyxELFIpKXtBPTA7YnJlYWsgZX1tPW0rMXwwLE09MTN9Zm9yKDs7KXtpZigoMHxBKT49KDB8bWUpKXtBPTE7YnJlYWsgZX1pZihwPWJlKyhBPDw0KXwwLE09YmUrKGFbcGUrKEE8PDIpPj4yXTw8NCl8MCxhW0c+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVts''@;'; put 'put ''Kzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSxhW0s+PjJdPWFbZj4+Ml0sYVtLKzQ+PjJdPWFbZis0Pj4yXSxhW0srOD4+Ml09YVtmKzg+PjJdLGFbSysxMj4+Ml09YVtmKzEyPj4yXSxhW0Q+PjJdPWFbcD4+Ml0sYVtEKzQ+PjJdPWFbcCs0Pj4yXSxhW0QrOD4+Ml09YVtwKzg+PjJdLGFb''@;'; put 'put ''RCsxMj4+Ml09YVtwKzEyPj4yXSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSwwfEVkKEcsSyxELFIpKXtBPTA7YnJlYWt9QT1BKzF8MH19fXdoaWxlKDApO3JldHVybiBvZT1PZSwwfEF9KEQsYyxN''@;'; put 'put ''LG0sdyk/KGw9MHxSMCg4KyhiPDwyKXwwKSxhW2wrKGI8PDIpPj4yXT1EPWIrMXwwLGFbbCsoRDw8Mik+PjJdPS0xKTooYVsobD0wfGFbdysyND4+Ml0pKyhiPDwyKT4+Ml09QSxhW2wrKChEPWIrMXwwKTw8Mik+PjJdPWYsbD0wfGZ1bmN0aW9uIFo0KGwsYyxmLHApe2x8PTAsY3w9MCxwfD0w''@;'; put 'put ''O3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxLPTAscGU9MDtmb3IoRD0wfFIwKChmfD0wKTw8MiksRz04KyhSPTB8UjAoOCsoZjw8Myl8MCkpfDAsbT0wOyEoKDB8bSk+PSgwfGYpKTspYVtEKyhtPDwyKT4+Ml09LTEsX1tHKyhtPDwzKT4+M109LTIxNDc0ODM2NDcsbT1tKzF8''@;'; put 'put ''MDtfW1I+PjNdPS0yMTQ3NDgzNjQ4O2U6Zm9yKDsoMHxsKSE9KDB8Yyk7KWZvcihNPUcrKGw8PDMpfDAsYj0rX1tNPj4zXSxfW00+PjNdPS0yMTQ3NDgzNjQ3PT1iPzA6LWIsaz0wLG09LTE7Oyl7aWYoKDB8ayk+PSgwfGYpKXtsPW07Y29udGludWUgZX0oQT0rX1sodz1HKyhrPDwzKXwwKT4+''@;'; put 'put ''M10pPDAmJigwIT0oSz0rX1soMHxhW3ArKCgocGU9KDB8bCk8KDB8aykpP2s6bCk8PDIpPj4yXSkrKChwZT9sOmspPDwzKT4+M10pJkE8KGI9LShLKyArX1tNPj4zXSkpJiYoX1t3Pj4zXT1iLGFbRCsoazw8Mik+PjJdPWwsQT1iKSxtPUE+K19bRysobTw8Myk+PjNdP2s6bSksaz1rKzF8MH1y''@;'; put 'put ''ZXR1cm4gSHQoUiksMHxEfShELGIsYisyfDAsbCkpLG9lPWssMHxsfShrLGYsUixELG0sRyxsKSxrPTErKGY9MHxhW2wrND4+Ml0pfDAsbT0xLHc9ZjtNPW0rMXwwLCgwfCh3PTB8YVtEKyh3PDwyKT4+Ml0pKSE9KDB8ayk7KW09TTtmb3IoYj0wfFIwKE08PDQpLGFbKHc9YisobTw8NCl8MCk+''@;'; put 'put ''PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFbcCs0Pj4yXSxhW3crOD4+Ml09YVtwKzg+PjJdLGFbdysxMj4+Ml09YVtwKzEyPj4yXSxsPWwrOHwwO3c9YisoKG09bSstMXwwKTw8NCl8MCwoMHwoZj0wfGFbRCsoZjw8Mik+PjJdKSkhPSgwfGspOylhW3c+PjJdPWFbKHA9KDB8YVtsPj4yXSkrKGY8''@;'; put 'put ''PDQpfDApPj4yXSxhW3crND4+Ml09YVtwKzQ+PjJdLGFbdys4Pj4yXT1hW3ArOD4+Ml0sYVt3KzEyPj4yXT1hW3ArMTI+PjJdO3JldHVybiBhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSwwfG0mJkJy''@;'; put 'put ''KDE0MTgwOSwxNDE4MTYsMTQ4LDE0MTgyMiksMHxSJiZIdChSKSwwfEcmJkh0KEcpLGFbQSs0Pj4yXT1NLGFbQT4+Ml09YixIdChEKSxvZT1LLDF9KGYsYixtLGssQSxNKSxwZT0wfGFbKEs9TSkrND4+Ml0sYVsobWU9bCk+PjJdPWFbSz4+Ml0sYVttZSs0Pj4yXT1wZSxvZT1HfWZ1bmN0aW9u''@;'; put 'put ''IFJEKGwsYyxmKXt2YXIgcDtwPStfWzgrKGZ8PTApPj4zXSsgK19bOCsoY3w9MCk+PjNdLF9bKGx8PTApPj4zXT0rX1tmPj4zXSsgK19bYz4+M10sX1tsKzg+PjNdPXB9ZnVuY3Rpb24ga0oobCxjLGYscCxtKXtmfD0wLHB8PTAsbXw9MDt2YXIgYixrLE0sRCxLLHBlLG1lLGJlLExlLFIsQT0w''@;'; put 'put ''LHc9MCxPZT0wLEJlPTA7TGU9b2Usb2U9b2UrMTQ0fDAsSz1MZSsxMDR8MCxwZT1MZSs4OHwwLFI9TGUrNzJ8MCxiZT1MZSsxMjh8MCxNPUxlKzMyfDAsRD1MZSsxMjR8MCxPZT1MZSsxNnwwLG1lPUxlLGI9TGUrMTIwfDAsQT0wfGFbKHc9MTQ0KygwfGFbMTYrKGN8PTApPj4yXSl8MCk+PjJd''@;'; put 'put ''LHc9MHxhW3crND4+Ml0sYVsoQmU9az1MZSs2NHwwKT4+Ml09QSxhW0JlKzQ+PjJdPXcsYVtPZT4+Ml09YVsoQmU9QSk+PjJdLGFbT2UrND4+Ml09YVtCZSs0Pj4yXSxhW09lKzg+PjJdPWFbQmUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtCZSsxMj4+Ml0sYVttZT4+Ml09YVsodz1BKyh3Ky0xPDw0''@;'; put 'put ''KXwwKT4+Ml0sYVttZSs0Pj4yXT1hW3crND4+Ml0sYVttZSs4Pj4yXT1hW3crOD4+Ml0sYVttZSsxMj4+Ml09YVt3KzEyPj4yXTtlOmRve2lmKG08PDI0Pj4yNClmb3IoQT0tMTExMSxtPS0xMTExLHc9MDs7KXtpZigoMHx3KT49KDB8cCkpYnJlYWsgZTstMTExMT09KDB8bSkmJihhW3BlPj4y''@;'; put 'put ''XT1hWyhtPTB8YVtmKyh3PDwyKT4+Ml0pPj4yXSxhW3BlKzQ+PjJdPWFbbSs0Pj4yXSxhW0s+PjJdPWFbT2U+PjJdLGFbSys0Pj4yXT1hW09lKzQ+PjJdLGFbSys4Pj4yXT1hW09lKzg+PjJdLGFbSysxMj4+Ml09YVtPZSsxMj4+Ml0sbT0obT0wPT0oMHxBNihwZSxLKSkpPy0xMTExOncpLC0x''@;'; put 'put ''MTExPT0oMHxBKSYmKGFbcGU+PjJdPWFbKEE9MHxhW2YrKHc8PDIpPj4yXSk+PjJdLGFbcGUrND4+Ml09YVtBKzQ+PjJdLGFbSz4+Ml09YVttZT4+Ml0sYVtLKzQ+PjJdPWFbbWUrND4+Ml0sYVtLKzg+PjJdPWFbbWUrOD4+Ml0sYVtLKzEyPj4yXT1hW21lKzEyPj4yXSxBPShBPTA9PSgwfEE2''@;'; put 'put ''KHBlLEspKSk/LTExMTE6dyksdz13KzF8MH1lbHNlIEE9LTExMTEsbT0tMTExMX13aGlsZSgwKTsoZnVuY3Rpb24gYXNlKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgSyx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscGU9MCxtZT0wO2ZvcihiPTAs''@;'; put 'put ''dz0wOyEoKDB8Yik+PSgwfGMpKTspKDB8Yik9PSgwfGYpfCgwfGIpPT0oMHxwKXx8KHc9KDB8YVs0KygwfGFbbCsoYjw8Mik+PjJdKT4+Ml0pK3d8MCksYj1iKzF8MDtmb3IoSz0wfFFuKHc8PDUpLGI9MCxHPTA7ISgoMHxHKT49KDB8YykpOyl7ZTpkb3tpZighKCgwfEcpPT0oMHxmKXwoMHxH''@;'; put 'put ''KT09KDB8cCkpKWZvcihSPWwrKEc8PDIpfDAsRD0wOzspe2lmKCgwfEQpPj0oMHwoTT0wfGFbNCsoaz0wfGFbUj4+Ml0pPj4yXSkpKWJyZWFrIGU7cGU9RCsxfDAsYVsobWU9SysoYjw8NSl8MCk+PjJdPWFbKGs9KDB8YVtrPj4yXSkrKEQ8PDQpfDApPj4yXSxhW21lKzQ+PjJdPWFbays0Pj4y''@;'; put 'put ''XSxhW21lKzg+PjJdPWFbays4Pj4yXSxhW21lKzEyPj4yXT1hW2srMTI+PjJdLGFbKGs9SysoYjw8NSkrMTZ8MCk+PjJdPWFbKE09KDB8YVthW1I+PjJdPj4yXSkrKCgoMHxwZSk8KDB8TSk/cGU6MCk8PDQpfDApPj4yXSxhW2srND4+Ml09YVtNKzQ+PjJdLGFbays4Pj4yXT1hW00rOD4+Ml0s''@;'; put 'put ''YVtrKzEyPj4yXT1hW00rMTI+PjJdLEQ9cGUsYj1iKzF8MH19d2hpbGUoMCk7Rz1HKzF8MH1pZigoMHxiKT09KDB8dykpcmV0dXJuIGFbbT4+Ml09Syx2b2lkKGFbQT4+Ml09dyk7QnIoODk3MTksODk3MjYsNzcsODk3NDEpfSkoZixwLG0sQSxiLEQpLGFbTT4+Ml09MCxhW00rND4+Ml09MCxh''@;'; put 'put ''W00rOD4+Ml09MCxhW00rMTI+PjJdPTAsYVtNKzE2Pj4yXT0wLGFbTSsyMD4+Ml09MCxhW00rMjQ+PjJdPTAsYVtNKzI4Pj4yXT0wLHc9MHxhW2I+PjJdLEJlPTB8YVtEPj4yXSxhW0s+PjJdPWFbaz4+Ml0sYVtLKzQ+PjJdPWFbays0Pj4yXSwoMHx2eCh3LEJlLEssTSxiZSkpPDA/KE9lPTB8''@;'; put 'put ''JHIoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pLEJlPTB8JHIoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKSxhW1I+PjJdPU9lLGFbUis0Pj4yXT1CZSxYcigxLDg5NjU3LFIpKToobT1jKy00OHwwLEF1KGMsMHxhWygyPT0oMyZhWyhBPWMp''@;'; put 'put ''Pj4yXXwwKT9jOm0pKzQwPj4yXSwwfGFbYmU+PjJdLDB8YVtiZSs0Pj4yXSwxNzc5MiksSHQodyksYVtwZT4+Ml09YVtPZT4+Ml0sYVtwZSs0Pj4yXT1hW09lKzQ+PjJdLGFbcGUrOD4+Ml09YVtPZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW09lKzEyPj4yXSxhW0s+PjJdPWFbbWU+PjJdLGFbSys0''@;'; put 'put ''Pj4yXT1hW21lKzQ+PjJdLGFbSys4Pj4yXT1hW21lKzg+PjJdLGFbSysxMj4+Ml09YVttZSsxMj4+Ml0sTnkoMCxjKSksb2U9TGV9ZnVuY3Rpb24gbVYobCxjLGYpe2N8PTAsZnw9MDt2YXIgQSxrLEQscD0wLG09MCx3PTAsYj0wLE09MCxSPTAsRz0wO2ZvcihEPW9lLG9lPW9lKzMyfDAsaz1E''@;'; put 'put ''KzEyfDAsZnVuY3Rpb24gQTJlKGwsYyl7bHw9MDt2YXIgZixtLHcscD0wO3c9b2Usb2U9b2UrNDh8MCxtPXcrMjR8MCwwIT0oMHwoZj0wfExpKGN8PTAsOTMxMTYpKSkmJjAhPSgwfEhWKGYsbSwxLDApKXx8KHA9Myk7ZG97aWYoMz09KDB8cCkpe2lmKDB8KGM9MHxMaShjLDkzMTEyKSkmJjB8''@;'; put 'put ''SFYoYyxtLDEuMjUsMy4yMDAwMDAwNDc2ODM3MTYpKWJyZWFrO1duW20rND4+Ml09My4yMDAwMDAwNDc2ODM3MTYsV25bbT4+Ml09My4yMDAwMDAwNDc2ODM3MTYsdWVbbSs4Pj4wXT0xfX13aGlsZSgwKTthW2w+PjJdPWFbbT4+Ml0sYVtsKzQ+PjJdPWFbbSs0Pj4yXSxhW2wrOD4+Ml09YVtt''@;'; put 'put ''Kzg+PjJdLG9lPXd9KHA9RCxsfD0wKSxhW2s+PjJdPWFbcD4+Ml0sYVtrKzQ+PjJdPWFbcCs0Pj4yXSxhW2srOD4+Ml09YVtwKzg+PjJdLHA9MHxMdChsKTtwOyl7Zm9yKG09MHx5MChsLHApO207KWVsZShtKSxtPTB8azAobCxtKTtwPTB8enQobCxwKX1mb3IoQT0wfEFzKDE3NzU2LDB8YVs0''@;'; put 'put ''NTgxXSkscD0wfEx0KGwpO3A7KXtmb3IobT0wfHkwKGwscCk7bTspKDB8YVs0NzEzNF0pPjEmJjAhPSgwfGFbOCsodz0wfGFbbSsxNj4+Ml0pPj4yXSk/VHRbKFI9dysxNjh8MCk+PjFdPTErKDB8VHRbUj4+MV0pPDwxNj4+MTY6TT0xNCwxND09KDB8TSkmJihNPTAsKDB8KGI9MHxsc2UoQSxt''@;'; put 'put ''KSkpIT0oMHxtKSkmJihUdFsoRz0xNjgrKFI9MHxhW2IrMTY+PjJdKXwwKT4+MV09MSsoMHxUdFtHPj4xXSk8PDE2Pj4xNixhWzE3MisoMHxhW20rMTY+PjJdKT4+Ml09YVsoUj1SKzE3MnwwKT4+Ml0sYVtSPj4yXT1tKSxtPTB8azAobCxtKTtwPTB8enQobCxwKX1yZXR1cm4gaXMoQSksMHxt''@;'; put 'put ''aVs2MyZjXShsLGssZik/cD0xOihhWzQ3MTM4XT0xLHA9MCksb2U9RCwwfHB9ZnVuY3Rpb24gbHNlKGwsYyl7bHw9MDt2YXIgdyxLLGY9MCxwPTAsbT0wLEE9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtLPW9lLG9lPW9lKzY0fDAsRz1LLHc9MHxhWygzPT0oMHwocD0zJmFbKGN8PTApPj4y''@;'; put 'put ''XSkpP2M6Yys0OHwwKSs0MD4+Ml0scD0wfGFbKDI9PSgwfHApP2M6YystNDh8MCkrNDA+PjJdO2Rve2lmKHc+Pj4wPj1wPj4+MCl7aWYoZj1jKzE2fDAsdz4+PjA+cD4+PjApe1I9cCxwPXcsaz0rX1sxNisoZj0wfGFbZj4+Ml0pPj4zXSxNPStfW2YrMjQ+PjNdLEE9K19bZis1Nj4+M10sbT0r''@;'; put 'put ''X1tmKzY0Pj4zXTticmVha31EPStfWzY0KyhSPTB8YVtmPj4yXSk+PjNdLG09K19bUisyND4+M10sKEE9K19bUisxNj4+M10pPChiPStfW1IrNTY+PjNdKT8oUj13LHA9dyxrPWIsTT1EKTpBPmI/KFI9dyxwPXcsaz1BLE09bSxBPWIsbT1EKTooZj1tPkQsbTxEPyhSPXcscD13LGs9YixNPUQp''@;'; put 'put ''OihSPXcscD13LGs9QSxNPW0sQT1mP2I6QSxtPWY/RDptKSl9ZWxzZSBSPXcsaz0rX1s1NisoZj0wfGFbYysxNj4+Ml0pPj4zXSxNPStfW2YrNjQ+PjNdLEE9K19bZisxNj4+M10sbT0rX1tmKzI0Pj4zXX13aGlsZSgwKTtyZXR1cm4gYVtHKzg+PjJdPVIsX1tHKzE2Pj4zXT1BLF9bRysyND4+''@;'; put 'put ''M109bSxhW0crMzI+PjJdPXAsX1tHKzQwPj4zXT1rLF9bRys0OD4+M109TSxhW0crNTY+PjJdPWMsRz0wfGFbNTYrKDB8bWlbNjMmYVtsPj4yXV0obCxHLDEpKT4+Ml0sb2U9SywwfEd9ZnVuY3Rpb24gQkQobCxjKXtyZXR1cm4gMHxtVihsfD0wLDIxLGN8PTApfWZ1bmN0aW9uIHVzZShsLGMp''@;'; put 'put ''e3ZhciBtLEEsdyxiLGssTSxmLFIscD0wLEQ9MCxHPTA7TT1vZSxvZT1vZSs5NnwwLEE9TSs2NHwwLG09TSs0OHwwLHc9TSs4MHwwLGI9TSsxNnwwLGs9TSxSPTB8YVsoRD0xNDQrKDB8YVsxNisoY3w9MCk+PjJdKXwwKT4+Ml0sRD0wfGFbRCs0Pj4yXSxhWyhHPXA9TSszMnwwKT4+Ml09Uixh''@;'; put 'put ''W0crND4+Ml09RCxhW2I+PjJdPWFbKEc9Uik+PjJdLGFbYis0Pj4yXT1hW0crND4+Ml0sYVtiKzg+PjJdPWFbRys4Pj4yXSxhW2IrMTI+PjJdPWFbRysxMj4+Ml0sYVtrPj4yXT1hWyhEPVIrKEQrLTE8PDQpfDApPj4yXSxhW2srND4+Ml09YVtEKzQ+PjJdLGFbays4Pj4yXT1hW0QrOD4+Ml0s''@;'; put 'put ''YVtrKzEyPj4yXT1hW0QrMTI+PjJdLGFbQT4+Ml09YVtwPj4yXSxhW0ErND4+Ml09YVtwKzQ+PjJdLE1kKEEsdyksZj1jKy00OHwwLEF1KGMsMHxhWygyPT0oMyZhWyhwPWMpPj4yXXwwKT9jOmYpKzQwPj4yXSwwfGFbdz4+Ml0sMHxhW3crND4+Ml0sMTc3OTIpLGFbbT4+Ml09YVtiPj4yXSxh''@;'; put 'put ''W20rND4+Ml09YVtiKzQ+PjJdLGFbbSs4Pj4yXT1hW2IrOD4+Ml0sYVttKzEyPj4yXT1hW2IrMTI+PjJdLGFbQT4+Ml09YVtrPj4yXSxhW0ErND4+Ml09YVtrKzQ+PjJdLGFbQSs4Pj4yXT1hW2srOD4+Ml0sYVtBKzEyPj4yXT1hW2srMTI+PjJdLE55KDAsYyksb2U9TX1mdW5jdGlvbiBQRChs''@;'; put 'put ''LGMpe3ZhciBmO2Y9MTQmVHRbMTM2KygwfGFbMTYrKGx8PTApPj4yXSk+PjFdLChjfD0wKTw8MjQ+PjI0JiZ2VihsKSxmPDwxNj4+MTYmJkJEKGwsNjU1MzUmZil9ZnVuY3Rpb24gdlYobCl7dmFyIGYsYz0wLHA9MCxtPTA7Zm9yKGY9MHxmdW5jdGlvbiBjc2UobCl7bHw9MDt2YXIgYz0wLGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtlOmRve2lmKCgwfGFbbCs2MD4+Ml0pPT0oMHxsKSYmKGY9bCsxNnwwLHA9MHxhW2Y+PjJdLDAhPSgwfGFbODQrKDB8YVtwKzg+PjJdKT4+Ml0pKSl7MD09K19bcCsxNj4+M10mJjA9PStfW3ArMjQ+PjNdP2M9MDooU0oobCksYz0xLHA9MHxhW2Y+''@;'; put 'put ''PjJdKSwoYj0wPT0oMSZhW3ArMTE2Pj4yXXwwKSl8fCh3PStfWyhrPXArMzJ8MCk+PjNdLF9baz4+M109K19bKGY9cCs0MHwwKT4+M10sX1tmPj4zXT13KSxmPTB8YVtwKzg+PjJdO3Q6ZG97c3dpdGNoKDB8YVtmKzg0Pj4yXSl7Y2FzZSAyOmlmKChtPStfW2YrNjQ+PjNdKTw9MClicmVhayBl''@;'; put 'put ''O2lmKChBPW0vK19bcCszMj4+M10pPDF8KG09K19bZis3Mj4+M10vK19bcCs0MD4+M10pPDEpe2lmKEE8bSl7dz0xLG0vPUE7YnJlYWsgdH13PUEvbSxtPTE7YnJlYWsgdH13PUE7YnJlYWs7Y2FzZSA1OmlmKChtPStfW2YrNjQ+PjNdKTw9MHx8ISgoQT1tLytfW3ArMzI+PjNdKT4xJihtPStf''@;'; put 'put ''W2YrNzI+PjNdLytfW3ArNDA+PjNdKT4xKSlicmVhayBlO3c9bT1BPG0/QTptO2JyZWFrO2Nhc2UgMTppZigobT0rX1twKzQwPj4zXS8rX1twKzMyPj4zXSk8KEE9K19bZisxNj4+M10pKXt3PTEsbT1BL207YnJlYWsgdH13PW0vQSxtPTE7YnJlYWsgdDtkZWZhdWx0OmJyZWFrIGV9fXdoaWxl''@;'; put 'put ''KDApO0E9Yj9tOncsbT1iP3c6bTt0OmRve2lmKCgwfGFbNDcxMzRdKT4xKWZvcihmPTB8THQobCk7Oyl7aWYoIWYpYnJlYWsgdDtmb3IoYz0wfHkwKGwsZik7YzspMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdJiZmc2UoYyxtLEEpLGM9MHxrMChsLGMpO2Y9MHx6dChsLGYpfX13aGlsZSgwKTtm''@;'; put 'put ''b3IoYz0wfEx0KGwpO2M7KV9bKGs9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1trPj4zXSptLF9bKGs9ays4fDApPj4zXT0rX1trPj4zXSpBLGM9MHx6dChsLGMpO01KKGwsbSxBKSxjPTF9ZWxzZSBjPTB9d2hpbGUoMCk7cmV0dXJuIDB8Y30obHw9MCksYz0wfEx0KGwpO2M7''@;'; put 'put ''KV9bMTYrKHA9MHxhW2MrMTY+PjJdKT4+M109NzIqK19bKG09MHxhW3ArMTMyPj4yXSk+PjNdLF9bcCsyND4+M109NzIqK19bbSs4Pj4zXSxjPTB8enQobCxjKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFNKKGwpe3ZhciBwLG0sQSx3LGIsayxNLGM9MCxmPTAsRD0wO2ZvcihNPW9lLG9lPW9lKzMy''@;'; put 'put ''fDAsYj1NKzE2fDAsYVsoaz1NKT4+Ml09YVsoYz0xNisoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSxhW2srND4+Ml09YVtjKzQ+PjJdLGFbays4Pj4yXT1hW2MrOD4+Ml0sYVtrKzEyPj4yXT1hW2MrMTI+PjJdLG09LjAxMzg4ODg4ODg4ODg4ODg4OCoocD0rX1trPj4zXSksdz0uMDEzODg4''@;'; put 'put ''ODg4ODg4ODg4ODg4KihBPStfW2srOD4+M10pLGM9MHxMdChsKTtjOylfWyhEPTB8YVsxMzIrKGY9MHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1tEPj4zXS1tLF9bKEQ9RCs4fDApPj4zXT0rX1tEPj4zXS13LDB8KGY9MHxhW2YrMTA4Pj4yXSkmJjB8dWVbZis4MT4+MF0mJihfWyhEPWYrNTZ8''@;'; put 'put ''MCk+PjNdPStfW0Q+PjNdLXAsX1soRD1mKzY0fDApPj4zXT0rX1tEPj4zXS1BKSxjPTB8enQobCxjKTtmb3IoZj0wfEx0KGwpO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdJiYoYVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+''@;'; put 'put ''PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0saHNlKGMsYikpLGM9MHxrMChsLGMpO2Y9MHx6dChsLGYpfWFbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLEVKKGwsYiksb2U9TX1mdW5j''@;'; put 'put ''dGlvbiBmc2UobCxjLGYpe3ZhciB3LGIsSyxwZSxwPTAsbT0wLEE9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLG1lPTAsYmU9MCxPZT0wO2ZvcihLPShtZT03MiooKGM9K2MpLTEpKSorX1soQT0wfGFbMTMyKygwfGFbMTYrKDB8YVsoMj09KDB8KEc9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSk+PjJdKT4+Ml0pPj4zXSxwZT0oYmU9NzIqKChmPStmKS0xKSkqK19bQSs4Pj4zXSxtZSo9K19bKEc9MHxhWzEzMisoMHxhWzE2KygwfGFbKDM9PSgwfEcpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+M10sYmUqPStfW0crOD4+M10sYj0odz0wfGFbNCsoQT0wfGFbOCso''@;'; put 'put ''Rz0wfGFbbCsxNj4+Ml0pPj4yXSk+PjJdKS0xfDAsbD0wLEE9MHxhW0E+PjJdOyEoKDB8bCk+PSgwfHcpKTspe2ZvcihNPShrPTB8YVtBKzQ+PjJdKS0xfDAsRD0oMHxsKT09KDB8YikscD0wLG09MHxhW0E+PjJdOyEoKDB8cCk+PSgwfGspKTspe2Rve2lmKHB8bCl7aWYoUj0rX1ttPj4zXSwo''@;'; put 'put ''MHxwKT09KDB8TSkmRCl7X1ttPj4zXT1SK0ssX1soT2U9bSs4fDApPj4zXT0rX1tPZT4+M10rcGU7YnJlYWt9X1ttPj4zXT1SKmMsX1soT2U9bSs4fDApPj4zXT0rX1tPZT4+M10qZjticmVha31fW20+PjNdPStfW20+PjNdK21lLF9bKE9lPW0rOHwwKT4+M109K19bT2U+PjNdK2JlfXdoaWxl''@;'; put 'put ''KDApO3A9cCsxfDAsbT1tKzE2fDB9MHxhW0ErOD4+Ml0mJihfWyhPZT1BKzE2fDApPj4zXT0rX1tPZT4+M10rbWUsX1soT2U9QSsyNHwwKT4+M109K19bT2U+PjNdK2JlKSwwfGFbQSsxMj4+Ml0mJihfWyhPZT1BKzMyfDApPj4zXT0rX1tPZT4+M10rSyxfWyhPZT1BKzQwfDApPj4zXT0rX1tP''@;'; put 'put ''ZT4+M10rcGUpLGw9bCsxfDAsQT1BKzQ4fDB9MHwobD0wfGFbRys5Nj4+Ml0pJiYwfHVlW2wrODE+PjBdJiYoX1soT2U9bCs1NnwwKT4+M109K19bT2U+PjNdKmMsX1soT2U9bCs2NHwwKT4+M109K19bT2U+PjNdKmYpLDB8KGw9MHxhW0crMTAwPj4yXSkmJjB8dWVbbCs4MT4+MF0mJihfWyhP''@;'; put 'put ''ZT1sKzU2fDApPj4zXT0rX1tPZT4+M10rSyxfWyhPZT1sKzY0fDApPj4zXT0rX1tPZT4+M10rcGUpLDB8KGw9MHxhW0crMTA0Pj4yXSkmJjB8dWVbbCs4MT4+MF0mJihfWyhPZT1sKzU2fDApPj4zXT0rX1tPZT4+M10rbWUsX1soT2U9bCs2NHwwKT4+M109K19bT2U+PjNdK2JlKX1mdW5jdGlv''@;'; put 'put ''biBNSihsLGMsZil7Zj0rZjt2YXIgbSxBLHA9MDtmb3IoX1sobD0zMisobT0wfGFbKEE9MTYrKGx8PTApfDApPj4yXSl8MCk+PjNdPStfW2w+PjNdKihjPStjKSxfWyhsPW0rNDB8MCk+PjNdPStfW2w+PjNdKmYsX1sobD1tKzE2fDApPj4zXT0rX1tsPj4zXSpjLF9bKGw9bSsyNHwwKT4+M109''@;'; put 'put ''K19bbD4+M10qZiwwIT0oMHwobD0wfGFbbSsxMj4+Ml0pKSYmMCE9KDB8dWVbbCs4MT4+MF0pPyhfWyhwPWwrNTZ8MCk+PjNdPStfW3A+PjNdKmMsX1socD1sKzY0fDApPj4zXT0rX1twPj4zXSpmLHA9MSxsPW0pOihwPTEsbD1tKTshKCgwfHApPigwfGFbbCsxODA+PjJdKSk7KU1KKDB8YVso''@;'; put 'put ''MHxhW2wrMTg0Pj4yXSkrKHA8PDIpPj4yXSxjLGYpLHA9cCsxfDAsbD0wfGFbQT4+Ml19ZnVuY3Rpb24gaHNlKGwsYyl7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MCxNPTA7Zm9yKHc9MHxhWzQrKGw9MHxhWzgrKGI9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+PjJdLGs9OCsoY3w9MCl8MCxs''@;'; put 'put ''PTB8YVtsPj4yXSxtPTA7ISgoMHxtKT49KDB8dykpOyl7Zm9yKEE9MHxhW2wrND4+Ml0sZj0wfGFbbD4+Ml0scD0wOyEoKDB8cCk+PSgwfEEpKTspX1tmPj4zXT0rX1tmPj4zXS0rX1tjPj4zXSxfWyhNPWYrOHwwKT4+M109K19bTT4+M10tK19baz4+M10sZj1mKzE2fDAscD1wKzF8MDswfGFb''@;'; put 'put ''bCs4Pj4yXSYmKF9bKE09bCsxNnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzI0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHxhW2wrMTI+PjJdJiYoX1soTT1sKzMyfDApPj4zXT0rX1tNPj4zXS0rX1tjPj4zXSxfWyhNPWwrNDB8MCk+PjNdPStfW00+PjNdLStfW2s+PjNd''@;'; put 'put ''KSxsPWwrNDh8MCxtPW0rMXwwfTB8KGw9MHxhW2IrOTY+PjJdKSYmMHx1ZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHwobD0wfGFbYisxMDg+PjJdKSYmMHx1ZVtsKzgxPj4wXSYmKF9b''@;'; put 'put ''KE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHwobD0wfGFbYisxMDA+PjJdKSYmMHx1ZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4z''@;'; put 'put ''XS0rX1trPj4zXSksMHwobD0wfGFbYisxMDQ+PjJdKSYmMHx1ZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSl9ZnVuY3Rpb24gRUoobCxjKXt2YXIgcCxtLEEsdyxiLGY9MCxrPTA7Zm9yKGI9''@;'; put 'put ''b2Usb2U9b2UrMTZ8MCx3PWIsX1soZj0zMisobD0wfGFbKEE9MTYrKGx8PTApfDApPj4yXSl8MCk+PjNdPStfW2Y+PjNdLShtPStfWyhjfD0wKT4+M10pLF9bKGY9bCs0MHwwKT4+M109K19bZj4+M10tKHA9K19bYys4Pj4zXSksX1soZj1sKzE2fDApPj4zXT0rX1tmPj4zXS1tLF9bKGY9bCsy''@;'; put 'put ''NHwwKT4+M109K19bZj4+M10tcCwwIT0oMHwoZj0wfGFbbCsxMj4+Ml0pKSYmMCE9KDB8dWVbZis4MT4+MF0pJiYoX1soaz1mKzU2fDApPj4zXT0rX1trPj4zXS1tLF9bKGY9Zis2NHwwKT4+M109K19bZj4+M10tcCksZj0xOyEoKDB8Zik+KDB8YVtsKzE4MD4+Ml0pKTspaz0wfGFbKDB8YVts''@;'; put 'put ''KzE4ND4+Ml0pKyhmPDwyKT4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sRUooayx3KSxmPWYrMXwwLGw9MHxhW0E+PjJdO29lPWJ9ZnVuY3Rpb24gUTUobCl7dmFyIGYscCxtLEEsdyxjPTAs''@;'; put 'put ''Yj0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsZj13LFg2KGx8PTApLG09LjAxMzg4ODg4ODg4ODg4ODg4OCorX1sxNisoYz0wfGFbKHA9bCsxNnwwKT4+Ml0pPj4zXSxBPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bYysyND4+M10sYz0wfEx0KGwpO2M7KV9bKGI9MHxhWzEzMisoMHxhW2MrMTY+PjJd''@;'; put 'put ''KT4+Ml0pPj4zXT0rX1tiPj4zXS1tLF9bKGI9Yis4fDApPj4zXT0rX1tiPj4zXS1BLGM9MHx6dChsLGMpO2FbZj4+Ml09YVsoYj0xNisoMHxhW3A+PjJdKXwwKT4+Ml0sYVtmKzQ+PjJdPWFbYis0Pj4yXSxhW2YrOD4+Ml09YVtiKzg+PjJdLGFbZisxMj4+Ml09YVtiKzEyPj4yXSx4SihsLGYp''@;'; put 'put ''LFBEKGwsMSksb2U9d31mdW5jdGlvbiB4SihsLGMpe2N8PTA7dmFyIGYsQSx3LGIscD0wLG09MDtmb3IoQT1vZSxvZT1vZSsxNnwwLG09QSxmPTE2KyhsfD0wKXwwLGw9MTshKCgwfGwpPigwfGFbMTgwKyhwPTB8YVtmPj4yXSk+PjJdKSk7KXA9MHxhWygwfGFbcCsxODQ+PjJdKSsobDw8Mik+''@;'; put 'put ''PjJdLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLHhKKHAsbSksbD1sKzF8MDtfWyhtPXArMzJ8MCk+PjNdPStfW20+PjNdLShiPStfW2M+PjNdKSx3PStfW2MrOD4+M10sX1soYz1wKzQwfDApPj4z''@;'; put 'put ''XT0rX1tjPj4zXS13LF9bKGM9cCsxNnwwKT4+M109K19bYz4+M10tYixfWyhjPXArMjR8MCk+PjNdPStfW2M+PjNdLXcsb2U9QX1mdW5jdGlvbiBUSihsLGMsZixwLG0pe2x8PTAsY3w9MCxtfD0wO3ZhciBHLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxLPTA7Zm9yKEc9KDB8KGZ8PTAp''@;'; put 'put ''KT4yLEQ9MCxSPTAsdz0wfGFbNCsocHw9MCk+PjJdLGw9MHxhW3A+PjJdOzspe2lmKCgwfFIpPj0oMHxjKSl7bD0wO2JyZWFrfWs9MHx1ZVsxMTkrKEE9MHxhWzE2KygwfGFbbSsoUjw8Mik+PjJdKT4+Ml0pPj4wXTtlOmRve2lmKGs8PDI0Pj4yNCl7TT1sKzh8MCxfW2w+PjNdPStfWyhiPTB8''@;'; put 'put ''YVtBKzEzMj4+Ml0pPj4zXSxBPXcrOHwwLF9bdz4+M109K19bYis4Pj4zXTt0OmRve2lmKEcpZm9yKHc9MixsPWIrMTZ8MDs7KXtpZigoMHx3KT09KDB8ZikpYnJlYWsgdDtfWygwfGFbcCsodzw8Mik+PjJdKSsoUjw8Myk+PjNdPStfW2w+PjNdLHc9dysxfDAsbD1sKzh8MH19d2hpbGUoMCk7''@;'; put 'put ''dz0oMjU1JmspPjE/MTpELGw9TX1lbHNlIGlmKGI9bCs4fDAsX1tsPj4zXT0rJGMoKSxBPXcrOHwwLF9bdz4+M109KyRjKCksRylmb3IobD0yOzspe2lmKCgwfGwpPT0oMHxmKSl7dz1ELGw9YjticmVhayBlfUs9KyRjKCksX1soMHxhW3ArKGw8PDIpPj4yXSkrKFI8PDMpPj4zXT1LLGw9bCsx''@;'; put 'put ''fDB9ZWxzZSB3PUQsbD1ifXdoaWxlKDApO0Q9dyxSPVIrMXwwLHc9QX1mb3IoOyEoKDB8bCk+PSgwfGYpKTspYXYoYywwfGFbcCsobDw8Mik+PjJdKSxsPWwrMXwwO3JldHVybiAwfER9ZnVuY3Rpb24gSUoobCxjKXtsfD0wO3ZhciBELFIsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MCxHPTA7Zj0wfG1yKCgoMHx2cigxKyhjfD0wKXwwLGMpKS8yfDApPDwyKSxEPTB8c2goYyxjLDApLFI9MHxzaChjLGMsMCk7ZTpkb3tpZigwfGFbbCs4Pj4yXSlmb3IocD0wOzspe2lmKCgwfHApPj0oMHxjKSlicmVhayBlO2ZvcihBPTB8YVtsKygyMCpwfDApPj4yXSx3PWwrKDIwKnB8MCkr''@;'; put 'put ''NHwwLGI9bCsoMjAqcHwwKSs4fDAsTT1EKyhwPDwyKXwwLG09MTshKCgwfG0pPj0oMHxBKSk7KV9bKDB8YVtEKygoRz0wfGFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSk8PDIpPj4yXSkrKHA8PDMpPj4zXT1rPS0xLytXblsoMHxhW2I+PjJdKSsobTw8Mik+PjJdLF9bKDB8YVtNPj4yXSkrKEc8''@;'; put 'put ''PDMpPj4zXT1rLG09bSsxfDA7cD1wKzF8MH1lbHNlIGZvcihwPTA7Oyl7aWYoKDB8cCk+PSgwfGMpKWJyZWFrIGU7Zm9yKEE9MHxhW2wrKDIwKnB8MCk+PjJdLHc9bCsoMjAqcHwwKSs0fDAsYj1EKyhwPDwyKXwwLG09MTshKCgwfG0pPj0oMHxBKSk7KV9bKDB8YVtEKygoTT0wfGFbKDB8YVt3''@;'; put 'put ''Pj4yXSkrKG08PDIpPj4yXSk8PDIpPj4yXSkrKHA8PDMpPj4zXT0tMSxfWygwfGFbYj4+Ml0pKyhNPDwzKT4+M109LTEsbT1tKzF8MDtwPXArMXwwfX13aGlsZSgwKTtlOmRve2lmKDB8ZmMoYyxELFIpKWZvcihtPTAsdz0wLE09Yzs7KXtpZigoMHx3KT49KDB8YykpYnJlYWsgZTtmb3IoYj1S''@;'; put 'put ''Kyh3PDwyKXwwLHA9dyxBPW07KDB8cCkhPSgwfGMpOylrPSgwfHcpPT0oMHxwKT8wOitfWygwfGFbUisocDw8Mik+PjJdKSsocDw8Myk+PjNdKyArX1soRz0wfGFbYj4+Ml0pKyh3PDwzKT4+M10rLTIqK19bRysocDw8Myk+PjNdLFduW2YrKEE8PDIpPj4yXT1rLHA9cCsxfDAsQT1BKzF8MDtt''@;'; put 'put ''PW0rTXwwLHc9dysxfDAsTT1NKy0xfDB9ZWxzZSBIdChmKSxmPTB9d2hpbGUoMCk7cmV0dXJuIEo1KEQpLEo1KFIpLDB8Zn1mdW5jdGlvbiB5MihsLGMpe2N8PTA7dmFyIEssZj0wLHA9MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MDtpZihLPW9lLG9lPW9lKzE2fDAsMHxhWzgr''@;'; put 'put ''KGx8PTApPj4yXSlmb3IoZj0wfFp5KGwsYykscD0wLFI9MDshKCgwfFIpPj0oMHxjKSk7KXtmb3IocD1wK1J8MCxEPTB8YVtsKygyMCpSfDApPj4yXSxiPWwrKDIwKlJ8MCkrNHwwLGs9KDB8dnIoUixjKSktcHwwLE09bCsoMjAqUnwwKSs4fDAsdz0xOyEoKDB8dyk+PSgwfEQpKTspKDB8KEE9''@;'; put 'put ''MHxhWygwfGFbYj4+Ml0pKyh3PDwyKT4+Ml0pKT49KDB8UikmJihlbygrKCtXblsoQT1mKyhrK0E8PDIpfDApPj4yXS0ocGU9K1duWygwfGFbTT4+Ml0pKyh3PDwyKT4+Ml0pKSksV25bQT4+Ml09cGUpLHc9dysxfDA7Uj1SKzF8MH1lbHNlIGY9MDtyZXR1cm4gb2U9SywwfGZ9ZnVuY3Rpb24g''@;'; put 'put ''WnkobCxjKXtsfD0wO3ZhciB3LGIsayxELGY9MCxwPTAsbT0wLEE9MCxNPTA7Zm9yKEQ9b2Usb2U9b2UrMTZ8MCx3PUQsYj0wfG1yKCgoMHx2cigxKyhjfD0wKXwwLGMpKS8yfDApPDwyKSxrPTB8bXIoYzw8MiksUWgodyxjKSxmPTAsbT0wLE09YzshKCgwfGYpPj0oMHxjKSk7KXtmb3IoWlgo''@;'; put 'put ''ZixsLGMsaykscD1mLEE9bTsoMHxwKSE9KDB8Yyk7KWFbYisoQTw8Mik+PjJdPWFbaysocDw8Mik+PjJdLHA9cCsxfDAsQT1BKzF8MDtmPWYrMXwwLG09bStNfDAsTT1NKy0xfDB9cmV0dXJuIEh0KGspLEpjKHcpLG9lPUQsMHxifWZ1bmN0aW9uIEFWKGwsYyl7bHw9MDt2YXIgdyxiLGssRCxm''@;'; put 'put ''PTAscD0wLG09MCxBPTAsTT0wO2ZvcihEPW9lLG9lPW9lKzE2fDAsdz1ELGI9MHxtcigoKDB8dnIoMSsoY3w9MCl8MCxjKSkvMnwwKTw8Miksaz0wfG1yKGM8PDIpLFFoKHcsYyksZj0wLG09MCxNPWM7ISgoMHxmKT49KDB8YykpOyl7Zm9yKGk4KGYsbCxjLGssdykscD1mLEE9bTsoMHxwKSE9''@;'; put 'put ''KDB8Yyk7KVduW2IrKEE8PDIpPj4yXT0rKDB8YVtrKyhwPDwyKT4+Ml0pLHA9cCsxfDAsQT1BKzF8MDtmPWYrMXwwLG09bStNfDAsTT1NKy0xfDB9cmV0dXJuIEh0KGspLEpjKHcpLG9lPUQsMHxifWZ1bmN0aW9uIERKKGwsYyl7Y3w9MDt2YXIgcGUsbWUsZj0wLHA9MCxtPTAsQT0wLHc9MCxi''@;'; put 'put ''PTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAsYmU9MDtmb3IoZj0wfGFbKG1lPTgrKGx8PTApfDApPj4yXSxwPTAsbT0wOyEoKDB8bSk+PSgwfGMpKTspcD0oMHxhW2wrKDIwKm18MCk+PjJdKStwfDAsbT1tKzF8MDtmb3IobT0wfG1yKHA8PDIpLHBlPTB8bXIoYzw8MikscD0wOyEoKDB8cCk+''@;'; put 'put ''PSgwfGMpKTspYVtwZSsocDw8Mik+PjJdPTAscD1wKzF8MDtpZigwfGFbbWU+PjJdKXtmb3IoYj0wOyEoKDB8Yik+PSgwfGMpKTspe2Zvcih0aihsLGIscGUpLFI9bCsoMjAqYnwwKSs0fDAsRz0oRD0wfGFbKGs9bCsoMjAqYnwwKXwwKT4+Ml0pLTJ8MCxLPWwrKDIwKmJ8MCkrOHwwLHc9MTsh''@;'; put 'put ''KCgwfHcpPj0oMHxEKSk7KWJlPSsoKEE9RysoMHxhW2wrKDIwKihwPTB8YVsoMHxhW1I+PjJdKSsodzw8Mik+PjJdKXwwKT4+Ml0pfDApLSgoMHxuTChsLGIscCxwZSkpPDwxKXwwKSwoTT0rV25bKDB8YVtLPj4yXSkrKHc8PDIpPj4yXSk8YmUmJihNPSsoQS0oKDB8bkwobCxiLHAscGUpKTw8''@;'; put 'put ''MSl8MCkpLFduW20rKHc8PDIpPj4yXT1NLHc9dysxfDA7bmoobCxiLHBlKSxhW0s+PjJdPW0sbT1tKyhhW2s+PjJdPDwyKXwwLGI9YisxfDB9bT0wfFp5KGwsYyl9ZWxzZXtmb3IoQT0wOyEoKDB8QSk+PSgwfGMpKTspe2ZvcihhW2wrKDIwKkF8MCkrOD4+Ml09bSx0aihsLEEscGUpLGs9bCso''@;'; put 'put ''MjAqQXwwKSs0fDAsTT0rKChiPTB8YVsodz1sKygyMCpBfDApfDApPj4yXSktMXwwKSxwPTE7ISgoMHxwKT49KDB8YikpOylXblttKyhwPDwyKT4+Ml09KGJlPSsoKDB8YVtsKygyMCooSz0wfGFbKDB8YVtrPj4yXSkrKHA8PDIpPj4yXSl8MCk+PjJdKS0xfDApK00pLSsoKDB8bkwobCxBLEss''@;'; put 'put ''cGUpKTw8MXwwKSxwPXArMXwwO25qKGwsQSxwZSksbT1tKyhhW3c+PjJdPDwyKXwwLEE9QSsxfDB9bT0wfEFWKGwsYyl9SHQocGUpLEh0KDB8YVttZT4+Ml0pLGFbbWU+PjJdPTA7ZTpkb3tpZigwfGYpZm9yKHA9MDs7KXtpZigoMHxwKT49KDB8YykpYnJlYWsgZTthW2wrKDIwKnB8MCkrOD4+''@;'; put 'put ''Ml09ZixmPWYrKGFbbCsoMjAqcHwwKT4+Ml08PDIpfDAscD1wKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiBGRChsLGMsZixwLG0sQSx3LGIsayl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsYnw9MCxrfD0wO3ZhciBFdCxadCx3dCxNPTAsRD0wLFI9MCxHPTAsSz0w''@;'; put 'put ''LHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTAsa3Q9MCxhdD0wLHJuPTAseW49MDt3dD1vZSxvZT1vZSs4MHwwLFp0PXd0KzQ4fDAsamU9d3QrNDB8MCxtZT13dCszMnwwLHBlPXd0KzI0fDAsSz13dCsxNnwwLEQ9d3QrOHww''@;'; put 'put ''LE09d3QsUj00Jih3fD0wKSxFdD0zJnc7ZTpkb3tpZigoMHxrKTwwKWY9MDtlbHNle3c9Mj09KDB8Yik7dDpkb3tpZih3KWY9MHxESihsLGMpLE9lPTE0O2Vsc2V7c3dpdGNoKDB8Yil7Y2FzZSAxOmlmKDB8KGY9MHxJSihsLGMpKSl7YXQ9ZjticmVhayB0fVhyKDAsOTMzMTUsTSksWHIoMyw5''@;'; put 'put ''MzM2NCxEKSxPZT0xNTticmVhayB0O2Nhc2UgMzpicmVhaztkZWZhdWx0Ok9lPTE1O2JyZWFrIHR9Zj0wfHkyKGwsYyksT2U9MTR9fXdoaWxlKDApOzE0PT0oMHxPZSkmJihmP2F0PWY6T2U9MTUpO2Rve2lmKDE1PT0oMHxPZSkpe2lmKDB8YVtsKzg+PjJdKXthdD0wfFp5KGwsYyk7YnJlYWt9''@;'; put 'put ''YXQ9MHxBVihsLGMpO2JyZWFrfX13aGlsZSgwKTt0OmRve2lmKCgwfGMpPjEmMCE9KDB8UikpaWYoKDB8ZHNlKGwsYyxwLEEsUixFdCwxJncpKTwwKW1lPTAscGU9MCxmPS0xLGw9MCxLPTAsUj0wLEQ9MCxNPTAsYj0wLHc9MDtlbHNlIGZvcih3PTA7Oyl7aWYoKDB8dyk+PSgwfEEpKXtCZT0w''@;'; put 'put ''LE9lPTM1O2JyZWFrIHR9Zm9yKGI9cCsodzw8Mil8MCxHPTEsZj0wOygwfGYpIT0oMHxjKTspRz0oTGU9K2VvKCsgK19bKDB8YVtiPj4yXSkrKGY8PDMpPj4zXSkpPkc/TGU6RyxmPWYrMXwwO2ZvcihHPTEvRyxmPTA7Oyl7aWYoKDB8Zik9PSgwfGMpKXtmPTA7YnJlYWt9X1soa3Q9KDB8YVti''@;'; put 'put ''Pj4yXSkrKGY8PDMpfDApPj4zXT0rX1trdD4+M10qRyxmPWYrMXwwfWZvcig7KDB8ZikhPSgwfGMpOylMZT0xZS02KigrJGMoKS0uNSksX1soa3Q9KDB8YVtiPj4yXSkrKGY8PDMpfDApPj4zXT0rX1trdD4+M10rTGUsZj1mKzF8MDthdihjLDB8YVtiPj4yXSksdz13KzF8MH1lbHNlIEJlPTB8''@;'; put 'put ''VEooMCxjLEEscCxtKSxPZT0zNX13aGlsZSgwKTt0OmRve2lmKDM1PT0oMHxPZSkpe2lmKDE9PSgwfGMpfDA9PSgwfGspKXtmPTA7YnJlYWsgZX1mb3Ioa3Q9MHxtcihLPUE8PDIpLE10PTB8bXIobD0wfHZyKHBlPWM8PDIsQSkpLGY9MDshKCgwfGYpPj0oMHxBKSk7KXtmb3IoYj1NdCsoKDB8''@;'; put 'put ''dnIoZixjKSk8PDIpfDAsYVtrdCsoZjw8Mik+PjJdPWIsTT1wKyhmPDwyKXwwLHc9MDshKCgwfHcpPj0oMHxjKSk7KVduW2IrKHc8PDIpPj4yXT0rX1soMHxhW00+PjJdKSsodzw8Myk+PjNdLHc9dysxfDA7Zj1mKzF8MH1uOmRve2lmKEV0KUc9LjUqKygwfGMpKisoYystMXwwKTtlbHNlIGZv''@;'; put 'put ''cihEPWMrLTF8MCxmPTAsRz0wLE09MDs7KXtpZigoMHxNKT49KDB8RCkpYnJlYWsgbjtmb3IoUj1jLU18MCxiPWYsdz0xO2Y9YisxfDAsISgoMHx3KT49KDB8UikpOyliPWYsRz0rV25bYXQrKGY8PDIpPj4yXStHLHc9dysxfDA7TT1NKzF8MH19d2hpbGUoMCk7Zm9yKGV0PSgwfHZyKGMrMXww''@;'; put 'put ''LGMpKS8yfDAsKHJ0PTI9PSgwfEV0KSkmJnNMKGV0LGF0KSxnaihldCxhdCkscjIoMHwoYj0wfG1yKEdlPWM8PDMpKSwwLDB8R2UpLGx0PWMrLTF8MCxmPTAsTT0wOzspe2lmKCgwfE0pPj0oMHxsdCkpe2Y9Yyx3PTAsTT0wO2JyZWFrfWZvcihEPWMtTXwwLGJlPTAsdz0xO2Y9ZisxfDAsISgo''@;'; put 'put ''MHx3KT49KDB8RCkpOylfWyhIZT1iKyh3K008PDMpfDApPj4zXT0rX1tIZT4+M10tKExlPStXblthdCsoZjw8Mik+PjJdKSxiZSs9TGUsdz13KzF8MDtfWyhIZT1iKyhNPDwzKXwwKT4+M109K19bSGU+PjNdLWJlLE09TSsxfDB9Zm9yKDshKCgwfHcpPj0oMHxjKSk7KVduW2F0KyhNPDwyKT4+''@;'; put 'put ''Ml09K19bYisodzw8Myk+PjNdLEhlPWYrTXwwLGY9ZistMXwwLHc9dysxfDAsTT1IZTtmb3IoSGU9MHxtcihLKSxhW0hlPj4yXT0wfG1yKGwpLGY9MTshKCgwfGYpPj0oMHxBKSk7KWFbSGUrKGY8PDIpPj4yXT0oMHxhW0hlPj4yXSkrKCgwfHZyKGYsYykpPDwyKSxmPWYrMXwwO2ZvcihEPTB8''@;'; put 'put ''bXIocGUpLE09MHxtcihwZSksdz0wfG1yKGV0PDwyKSxPZT0wPT0oMHxCZSksQmU9MHxhWzE1NzEyXSxmPTAsUj0wLExlPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtSPDwyND4+MjQ9PTAmKDB8Zik8KDB8ayk7KXtmb3IocjIoMHxiLDAsMHxHZSkscnQ/KF9zKGV0LGF0LHcpLG1lPTAsbD0wKToo''@;'; put 'put ''bWU9MCxsPTApOzspe2lmKCgwfG1lKT49KDB8bHQpKXtSPWMsSz0wLGw9MDticmVha31mb3IoWWsocGU9Yy1tZS0xfDAsMCxNKSxSPTA7ISgoMHxSKT49KDB8QSkpOylZayhwZSwrV25bKDB8YVsoamU9a3QrKFI8PDIpfDApPj4yXSkrKG1lPDwyKT4+Ml0sRCksV2socGUsRCwtMSwoMHxhW2pl''@;'; put 'put ''Pj4yXSkrKG1lPDwyKSs0fDApLHNMKHBlLEQpLGRqKHBlLEQsTSxNKSxSPVIrMXwwO2ZvcihvZyhwZSxNKSxSPTA7ISgoMHxSKT49KDB8cGUpKTspKGJlPStXblsoSz1NKyhSPDwyKXwwKT4+Ml0pPj0zNDAyODIzNDY2Mzg1Mjg4NmUyMnxiZTwwJiYoV25bSz4+Ml09MCksUj1SKzF8MDtSPWwr''@;'; put 'put ''MXwwLGw9bWUrMXwwO246ZG97aWYocnQpZm9yKGJlPTAsSz0wOzspe2lmKCgwfEspPj0oMHxwZSkpYnJlYWsgbjtXblsoamU9dysoUjw8Mil8MCk+PjJdPXJuPStXbltqZT4+Ml0qK1duW00rKEs8PDIpPj4yXSxfWyhqZT1iKyhsK0s8PDMpfDApPj4zXT0rX1tqZT4+M10tcm4sYmUrPXJuLFI9''@;'; put 'put ''UisxfDAsSz1LKzF8MH1lbHNlIGZvcihiZT0wLEs9MDs7KXtpZigoMHxLKT49KDB8cGUpKWJyZWFrIG47V25bdysoUjw8Mik+PjJdPXJuPStXbltNKyhLPDwyKT4+Ml0sX1soamU9YisobCtLPDwzKXwwKT4+M109K19bamU+PjNdLXJuLGJlKz1ybixSPVIrMXwwLEs9SysxfDB9fXdoaWxlKDAp''@;'; put 'put ''O19bKGplPWIrKG1lPDwzKXwwKT4+M109K19bamU+PjNdLWJlLG1lPWwsbD1SfWZvcig7Oyl7aWYoKDB8Syk+PSgwfGMpKXtSPTA7YnJlYWt9V25bdysobDw8Mik+PjJdPStfW2IrKEs8PDMpPj4zXSxqZT1SK2x8MCxSPVIrLTF8MCxLPUsrMXwwLGw9amV9Zm9yKDs7KXtpZigoMHxSKT49KDB8''@;'; put 'put ''QSkpe2JlPTAsUj0wO2JyZWFrfWlnKHcsYywwfGFba3QrKFI8PDIpPj4yXSwwfGFbSGUrKFI8PDIpPj4yXSksUj1SKzF8MH1mb3IoOyEoKDB8Uik+PSgwfEEpKTspYmU9K0p5KGMsMHxhW2t0KyhSPDwyKT4+Ml0sMHxhW0hlKyhSPDwyKT4+Ml0pK2JlLFI9UisxfDA7Zm9yKGJlPTIqYmUrRyxS''@;'; put 'put ''PTA7ISgoMHxSKT49KDB8QSkpOylpZyhhdCxjLDB8YVsoamU9a3QrKFI8PDIpfDApPj4yXSxEKSxiZS09K0p5KGMsMHxhW2plPj4yXSxEKSxSPVIrMXwwO2Zvcih5bj1MZS1iZSxSPTEmKGJlPChybj0rX1syMzI5NF0pPzE6KHluPj0wP3luOi15bikvTGU8cm4pLGw9MDshKCgwfGwpPj0oMHxB''@;'; put 'put ''KSk7KXtLPTB8YVsocGU9a3QrKGw8PDIpfDApPj4yXTtuOmRve2lmKE9lKXtpZigoMHxHeShhdCxLLDB8YVtIZSsobDw8Mik+PjJdLGMsLjAwMSxjKSk8MCl7bWU9SGUscGU9YXQsZj0tMSxsPU10LEs9a3QsUj1IZTticmVhayB0fX1lbHNle2lmKEIyZShjLEssRCksKDB8R3koYXQsRCwwfGFb''@;'; put 'put ''SGUrKGw8PDIpPj4yXSxjLC4wMDEsYykpPDApe21lPUhlLHBlPWF0LGY9LTEsbD1NdCxLPWt0LFI9SGU7YnJlYWsgdH1mb3IoSz0wOzspe2lmKCgwfEspPj0oMHxjKSlicmVhayBuOygwfGJ0WzExOSsoMHxhWzE2KygwfGFbbSsoSzw8Mik+PjJdKT4+Ml0pPj4wXSk8PTEmJihhWygwfGFbcGU+''@;'; put 'put ''PjJdKSsoSzw8Mik+PjJdPWFbRCsoSzw8Mik+PjJdKSxLPUsrMXwwfX19d2hpbGUoMCk7bD1sKzF8MH0wPT0oMHwoMHxmKSU1KSYhMSYmKF9bWnQ+PjNdPWJlLFQwKEJlLDkwMzcxLFp0KSwwPT0oMHwoZis1fDApJTUwKSkmJkFaKDEwLEJlKSxmPWYrMXwwLExlPWJlfWZvcihSPTA7Oyl7aWYo''@;'; put 'put ''KDB8Uik+PSgwfEEpKXttZT1IZSxwZT1hdCxsPU10LEs9a3QsUj1IZTticmVhayB0fWZvcihsPWt0KyhSPDwyKXwwLHBlPXArKFI8PDIpfDAsSz0wOyEoKDB8Syk+PSgwfGMpKTspX1soMHxhW3BlPj4yXSkrKEs8PDMpPj4zXT0rV25bKDB8YVtsPj4yXSkrKEs8PDIpPj4yXSxLPUsrMXwwO1I9''@;'; put 'put ''UisxfDB9fX13aGlsZSgwKTtIdChsKSxIdChLKSxIdChwZSksMHxtZSYmKEh0KDB8YVttZT4+Ml0pLEh0KFIpKSxIdChEKSxIdChNKSxIdChiKSxIdCh3KX19d2hpbGUoMCk7cmV0dXJuIG9lPXd0LDB8Zn1mdW5jdGlvbiBkc2UobCxjLGYscCxtLEEsdyl7bHw9MCxmfD0wLHB8PTAsbXw9MCxB''@;'; put 'put ''fD0wLHd8PTA7dmFyIE10LGt0LGF0LEV0LFp0LHV0LHd0LHJuLHluLEZuLGxyLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MDtmb3IobHI9b2Usb2U9b2UrMzJ8MCxNPWxyKzI0fDAs''@;'; put 'put ''Rm49bHIrOHwwLGt0PWxyKzR8MCxybj1scix5bj0wfFFuKCh3dD0oMHwoY3w9MCkpPDUwP2M6NTApPDwyKSxrPTB8UW4oMHx2cihNdD1jPDwzLHd0KSksYj0wOyEoKDB8Yik+PSgwfHd0KSk7KWFbeW4rKGI8PDIpPj4yXT1rKygoMHx2cihiLGMpKTw8MyksYj1iKzF8MDtmb3IoR2U9KDB8KEdl''@;'; put 'put ''PSgwfChHZT13dDw8MSkpPjUwP0dlOjUwKSk+KDB8Yyk/YzpHZSxhW00+PjJdPTAsZnVuY3Rpb24gV1gobCxjLGYscCxtKXtsfD0wLHB8PTAsbXw9MDt2YXIgayxNLFIsRyxLLEE9MCx3PTAsYj0wLEQ9MCxwZT0wLG1lPTAsYmU9MDtmb3IoSz1vZSxvZT1vZSsxNnwwLEc9Syx3PTB8UW4oMHx2''@;'; put 'put ''cihEPShjfD0wKTw8MixmfD0wKSksQT0wfGFbcD4+Ml0sRD0wfFFuKEQpLFI9MHxhW2wrOD4+Ml0sMHxBJiYoSHQoMHxhW0E+PjJdKSxIdChBKSksTT0wfFFuKGY8PDIpLGFbcD4+Ml09TSxBPTA7ISgoMHxBKT49KDB8ZikpOylhW00rKEE8PDIpPj4yXT13KygoMHx2cihBLGMpKTw8MiksQT1B''@;'; put 'put ''KzF8MDtmb3IoKGs9MCE9KDB8bSkpJiZpdihsLGMpLHA9KDB8RDEoKSklKDB8Yyl8MCxRaChHLGMpLEE9MHxhW00+PjJdLGs/KFhEKHAsbCxjLEEpLG09MCxBPTApOihpOChwLGwsYyxBLEcpLG09MCxBPTApOzspe2lmKCgwfEEpPj0oMHxjKSl7Yj0xO2JyZWFrfWFbRCsoQTw8Mik+PjJdPXc9''@;'; put 'put ''MHxhWygwfGFbTT4+Ml0pKyhBPDwyKT4+Ml0sbT0oYj0oMHx3KT4oMHxtKSk/dzptLHA9Yj9BOnAsQT1BKzF8MH1mb3IoOyEoKDB8Yik+PSgwfGYpKTspe2ZvcihBPTB8YVsodz1NKyhiPDwyKXwwKT4+Ml0saz8oWEQocCxsLGMsQSksQT0wLG09MCk6KGk4KHAsbCxjLEEsRyksQT0wLG09MCk7''@;'; put 'put ''ISgoMHxBKT49KDB8YykpOylhWyhiZT1EKyhBPDwyKXwwKT4+Ml09bWU9KDB8KHBlPTB8YVtiZT4+Ml0pKTwoMHwobWU9MHxhWygwfGFbdz4+Ml0pKyhBPDwyKT4+Ml0pKT9wZTptZSxwZT0oYmU9KDB8bWUpPigwfG0pKT9BOnAsQT1BKzF8MCxtPWJlP21lOm0scD1wZTtiPWIrMXwwfUh0KEQp''@;'; put 'put ''LGsmJmprKGwsYyxSKSxvZT1LfShsLGMsR2UsTSx3KSxmdW5jdGlvbiBRVihsLGMsZil7bHw9MCxmfD0wO3ZhciBiLHA9MCxtPTAsQT0wLHc9MCxrPTAsTT0wO2ZvcihiPTEvKygwfChjfD0wKSksdz0wOyEoKDB8dyk+PSgwfGYpKTspe2ZvcihrPWwrKHc8PDIpfDAscD0wLG09MDshKCgwfG0p''@;'; put 'put ''Pj0oMHxjKSk7KXArPSsoMHxhWygwfGFbaz4+Ml0pKyhtPDwyKT4+Ml0pLG09bSsxfDA7Zm9yKEE9fn4ocCpiKSxtPTA7ISgoMHxtKT49KDB8YykpOylhWyhNPSgwfGFbaz4+Ml0pKyhtPDwyKXwwKT4+Ml09KDB8YVtNPj4yXSktQSxtPW0rMXwwO3c9dysxfDB9fSgwfGFbTT4+Ml0sYyxHZSks''@;'; put 'put ''ZnVuY3Rpb24gSDJlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgSyxwZSxtZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLGJlPTA7Zm9yKG1lPTB8UW4oKG18PTApPDwyKSx3PWM8PDMsQT0wOyEoKDB8QSk+PSgwfG0pKTspYVttZSsoQTw8Mik+PjJdPTB8UW4o''@;'; put 'put ''dyksQT1BKzF8MDtmb3IoSz0wfFFuKG08PDMpLHBlPTB8UW4oYzw8MiksQT0wfFFuKDB8dnIodyxjKSksdz0wOyEoKDB8dyk+PSgwfGMpKTspYVtwZSsodzw8Mik+PjJdPUEsQT1BKyhjPDwzKXwwLHc9dysxfDA7Zm9yKGs9MCxHPTE7ISgoMHxrKT49KDB8YykpOyl7Zm9yKE09bCsoazw8Mil8''@;'; put 'put ''MCxEPXBlKyhrPDwyKXwwLHc9MDsoMHx3KSE9KDB8Ryk7KXtmb3IoUj1sKyh3PDwyKXwwLEE9MCxiPTA7ISgoMHxBKT49KDB8ZikpOyliZT1iKyArKDB8dnIoMHxhWygwfGFbUj4+Ml0pKyhBPDwyKT4+Ml0sMHxhWygwfGFbTT4+Ml0pKyhBPDwyKT4+Ml0pKSxBPUErMXwwLGI9YmU7X1soMHxh''@;'; put 'put ''W3BlKyh3PDwyKT4+Ml0pKyhrPDwzKT4+M109YixfWygwfGFbRD4+Ml0pKyh3PDwzKT4+M109Yix3PXcrMXwwfWs9aysxfDAsRz1HKzF8MH1mb3IoemsocGUsYyxtLG1lLEssMSksdz0wOzspe2lmKCgwfHcpPj0oMHxtKSl7QT0wO2JyZWFrfWZvcihNPW1lKyh3PDwyKXwwLEQ9cCsodzw8Mil8''@;'; put 'put ''MCxrPTA7KDB8ayk8KDB8Zik7KXtmb3IoQT0wLGI9MDshKCgwfEEpPj0oMHxjKSk7KWJlPStfWygwfGFbTT4+Ml0pKyhBPDwzKT4+M10qKygwfGFbKDB8YVtsKyhBPDwyKT4+Ml0pKyhrPDwyKT4+Ml0pK2IsQT1BKzF8MCxiPWJlO19bKDB8YVtEPj4yXSkrKGs8PDMpPj4zXT1iLGs9aysxfDB9''@;'; put 'put ''dz13KzF8MH1mb3IoOyEoKDB8QSk+PSgwfG0pKTspSHQoMHxhW21lKyhBPDwyKT4+Ml0pLEE9QSsxfDA7SHQobWUpLEh0KEspLEh0KDB8YVtwZT4+Ml0pLEh0KHBlKX0oMHxhW00+PjJdLEdlLGMseW4sd3QpLEh0KDB8YVthW00+PjJdPj4yXSksSHQoMHxhW00+PjJdKSx1dD0wfFFuKEdlPWM8''@;'; put 'put ''PDIpLGI9MDshKCgwfGIpPj0oMHxjKSk7KWFbdXQrKGI8PDIpPj4yXT0tMSxiPWIrMXwwO2ZvcihRaChGbixjKSxFdD0wfGFbbCs4Pj4yXSwoYXQ9MCE9KDB8dykpJiZpdihsLGMpLGV0PTB8UW4oR2UpLFp0PTB8UW4oMTYwKSxrPTB8UW4oMTYwKmN8MCkscnQ9MHxRbigxNjApLGI9MDs0MCE9''@;'; put 'put ''KDB8Yik7KWFbcnQrKGI8PDIpPj4yXT1rKygoMHx2cihiLGMpKTw8MiksYj1iKzF8MDtmb3IoYj0oMHxEMSgpKSUoMHxjKXwwLGFbdXQrKGI8PDIpPj4yXT0wLGFbWnQ+PjJdPWIsaz0wfGFbcnQ+PjJdLGF0PyhYRChiLGwsYyxrKSxrPTAsTT0wKTooaTgoYixsLGMsayxGbiksaz0wLE09MCk7''@;'; put 'put ''Oyl7aWYoKDB8TSk+PSgwfGMpKXtHPTE7YnJlYWt9YVtldCsoTTw8Mik+PjJdPWx0PTB8YVsoMHxhW3J0Pj4yXSkrKE08PDIpPj4yXSxiPShqZT0oMHxsdCk+KDB8aykpP006YixrPWplP2x0OmssTT1NKzF8MH1mb3IoOzspe2lmKDQwPT0oMHxHKSl7Yj0wO2JyZWFrfWZvcihhW3V0KyhiPDwy''@;'; put 'put ''KT4+Ml09RyxhW1p0KyhHPDwyKT4+Ml09YixrPTB8YVsocGU9cnQrKEc8PDIpfDApPj4yXSxhdD8oWEQoYixsLGMsayksUj0wLGs9MCk6KGk4KGIsbCxjLGssRm4pLFI9MCxrPTApOyEoKDB8Uik+PSgwfGMpKTspYVsoTT1ldCsoUjw8Mil8MCk+PjJdPXc9KDB8KGx0PTB8YVtNPj4yXSkpPCgw''@;'; put 'put ''fCh3PTB8YVsoMHxhW3BlPj4yXSkrKFI8PDIpPj4yXSkpP2x0OncsKDB8dyk8PSgwfGspPygwfHcpPT0oMHxrKSYmMD09KDB8KDB8RDEoKSklKFIrMXwwKSkmJihrPTB8YVtNPj4yXSxiPVIpOihrPXcsYj1SKSxSPVIrMXwwO0c9RysxfDB9Zm9yKDshKCgwfGIpPj0oMHxjKSk7KWFbZXQrKGI8''@;'; put 'put ''PDIpPj4yXT0tMSxiPWIrMXwwO2ZvcihPZT0wfFFuKEdlKSxsdD0wfFFuKGM8PDQpLEJlPShMZT1jKy0xfDApPDwyLGplPTAsTT0wLHc9MCxrPTAsSGU9MDshKCgwfEhlKT49KDB8YykpOyl7Yj11dCsoSGU8PDIpfDA7ZTpkb3tpZigoMHxhW2I+PjJdKT4tMSl7Zm9yKGFbKHBlPWx0KyhIZTw8''@;'; put 'put ''NCkrNHwwKT4+Ml09MHxRbihCZSksYmU9MHxRbihCZSksYVtsdCsoSGU8PDQpKzg+PjJdPWJlLGFbbHQrKEhlPDw0KT4+Ml09TGUsdWVbbHQrKEhlPDw0KSsxMj4+MF09MSxHPXJ0KyhhW2I+PjJdPDwyKXwwLGI9MDs7KXtpZigoMHxiKT09KDB8SGUpKXtSPUhlO2JyZWFrfWFbKDB8YVtwZT4+''@;'; put 'put ''Ml0pKyhiPDwyKT4+Ml09YixhW2JlKyhiPDwyKT4+Ml09YVsoMHxhW0c+PjJdKSsoYjw8Mik+PjJdLGI9YisxfDB9Zm9yKDs7KXtpZihiPVIrMXwwLCgwfFIpPT0oMHxMZSkpe2I9TGU7YnJlYWsgZX1hWygwfGFbcGU+PjJdKSsoUjw8Mik+PjJdPWIsYVtiZSsoUjw8Mik+PjJdPWFbKDB8YVtH''@;'; put 'put ''Pj4yXSkrKGI8PDIpPj4yXSxSPWJ9fWVsc2V7Zm9yKCgwfGspPDQwPyh3PTB8UW4oR2UpLE09MHxRbihHZSksaz1jLGI9MSk6Yj0wLHVlW2x0KyhIZTw8NCkrMTI+PjBdPWIsYVtsdCsoSGU8PDQpKzQ+PjJdPXcsYVtsdCsoSGU8PDQpKzg+PjJdPU0sYVtsdCsoSGU8PDQpPj4yXT00MCxiPTA7''@;'; put 'put ''NDAhPSgwfGIpOylhW3crKGI8PDIpPj4yXT1hW1p0KyhiPDwyKT4+Ml0sYVtNKyhiPDwyKT4+Ml09YVsoMHxhW3J0KyhiPDwyKT4+Ml0pKyhIZTw8Mik+PjJdLGI9YisxfDA7TT1NKzE2MHwwLHc9dysxNjB8MCxrPWsrLTQwfDAsYj00MH19d2hpbGUoMCk7amU9YitqZXwwLEhlPUhlKzF8MH1m''@;'; put 'put ''b3IoSHQoZXQpLEh0KE9lKSwwfHJ0JiYoSHQoMHxhW3J0Pj4yXSksSHQocnQpKSxydD0wfFFuKDIwKmN8MCksRz0wfFFuKFI9amUrYzw8MiksYmU9Mj09KDB8QSksUj0wfFFuKFIpLHBlPTA7ISgoMHxwZSk+PSgwfGMpKTspe2FbcnQrKDIwKnBlfDApKzQ+PjJdPUcsYVtydCsoMjAqcGV8MCkr''@;'; put 'put ''OD4+Ml09UixhWyhPZT1ydCsoMjAqcGV8MCl8MCk+PjJdPWI9MSsoMHxhW2x0KyhwZTw8NCk+PjJdKXwwLE09KDB8YVtsdCsocGU8PDQpKzg+PjJdKS00fDAsdz1sdCsocGU8PDQpKzR8MDtlOmRve2lmKGJlKWZvcihEPTAsaz0xOzspe2lmKCgwfGspPj0oMHxiKSlicmVhayBlO2FbRysoazw8''@;'; put 'put ''Mik+PjJdPWFbKDB8YVt3Pj4yXSkrKGsrLTE8PDIpPj4yXSxXbltSKyhrPDwyKT4+Ml09bWU9LTEvKChtZT0rKDB8YVtNKyhrPDwyKT4+Ml0pKSptZSksRC09bWUsaz1rKzF8MCxiPTB8YVtPZT4+Ml19ZWxzZSBmb3IoRD0wLGs9MTs7KXtpZigoMHxrKT49KDB8YikpYnJlYWsgZTthW0crKGs8''@;'; put 'put ''PDIpPj4yXT1hWygwfGFbdz4+Ml0pKyhrKy0xPDwyKT4+Ml0sV25bUisoazw8Mik+PjJdPW1lPS0xLysoMHxhW00rKGs8PDIpPj4yXSksRC09bWUsaz1rKzF8MCxiPTB8YVtPZT4+Ml19fXdoaWxlKDApO2FbRz4+Ml09cGUsV25bUj4+Ml09RCxSPVIrKChHZT0wfGFbT2U+PjJdKTw8Mil8MCxH''@;'; put 'put ''PUcrKEdlPDwyKXwwLHBlPXBlKzF8MH1mb3IoZXQ9MHxRbihwPDwyKSxhW2V0Pj4yXT0wfFFuKDB8dnIocDw8Myx3dCkpLGI9MTshKCgwfGIpPj0oMHxwKSk7KWFbZXQrKGI8PDIpPj4yXT0oMHxhW2V0Pj4yXSkrKCgwfHZyKGIsd3QpKTw8MyksYj1iKzF8MDtlOmRve2lmKG0pe2ZvcihiPTA7''@;'; put 'put ''ISgoMHxiKT49KDB8cCkpOyl7Zm9yKE09ZXQrKGI8PDIpfDAsaz0wOyEoKDB8ayk+PSgwfHd0KSk7KV9bKDB8YVtNPj4yXSkrKGs8PDMpPj4zXT0wLGs9aysxfDA7Yj1iKzF8MH1pZigyIT0oMHxwKSlmb3IoYj0wOzspe2lmKCgwfGIpPj0oMHxwKSl7Yj0wO2JyZWFrIGV9X1soMHxhW2V0Kyhi''@;'; put 'put ''PDwyKT4+Ml0pKyhiPDwzKT4+M109MSxiPWIrMXwwfWlmKF9bYVtldD4+Ml0+PjNdPTEsKDB8ZUsoeW4sd3QsYywwfGFbKGI9ZXQrNHwwKT4+Ml0pKTw8MjQ+PjI0KWI9MDtlbHNle2ZvcihrPTB8YVtiPj4yXSxiPTA7ISgoMHxiKT49KDB8d3QpKTspX1trKyhiPDwzKT4+M109MCxiPWIrMXww''@;'; put 'put ''O19bays4Pj4zXT0xLGI9MH19ZWxzZSBmb3Ioaz0wOzspe2lmKCgwfGspPj0oMHxwKSl7Yj0wO2JyZWFrIGV9Zm9yKE09ZXQrKGs8PDIpfDAsYj0wOyEoKDB8Yik+PSgwfHd0KSk7KW1lPTQuNjU2NjEyODc1MjQ1Nzk3ZS0xMCorKDB8RDEoKSksX1soMHxhW00+PjJdKSsoYjw8Myk+PjNdPW1l''@;'; put 'put ''LGI9YisxfDA7az1rKzF8MH19d2hpbGUoMCk7Zm9yKDshKCgwfGIpPj0oMHxwKSk7KWhqKHluLGMsd3QsMHxhW2V0KyhiPDwyKT4+Ml0sMHxhW2YrKGI8PDIpPj4yXSksYj1iKzF8MDthW2t0Pj4yXT0wLGFbcm4+PjJdPTAsdWoocnQseW4sYyx3dCxrdCksZnVuY3Rpb24gWDllKGwsYyxmLHAs''@;'; put 'put ''bSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtmb3IoKGI9MHxhWyhBfD0wKT4+Ml0pPyh3PTB8WmEoMHxhW2I+PjJdLDB8dnIoUj1mPDwyLG0pKSxSPTB8WmEoYixSKSk6KHc9MHxSMCgwfHZyKFI9Zjw8MixtKSksUj0wfFIwKFIp''@;'; put 'put ''KSxhW0E+PjJdPVIsYj0wOzspe2lmKCgwfGIpPj0oMHxmKSl7QT0wO2JyZWFrfWFbUisoYjw8Mik+PjJdPXcsYj1iKzF8MCx3PXcrKG08PDIpfDB9Zm9yKDshKCgwfEEpPj0oMHxmKSk7KXtmb3IoTT1sKyhBPDwyKXwwLEQ9UisoQTw8Mil8MCxiPTA7KDB8Yik8KDB8bSk7KXtmb3Iodz0wLGs9''@;'; put 'put ''MDshKCgwfHcpPj0oMHxwKSk7KUc9K19bKDB8YVtNPj4yXSkrKHc8PDMpPj4zXSorV25bKDB8YVtjKyh3PDwyKT4+Ml0pKyhiPDwyKT4+Ml0rayx3PXcrMXwwLGs9RztXblsoMHxhW0Q+PjJdKSsoYjw8Mik+PjJdPWssYj1iKzF8MH1BPUErMXwwfX0oeW4sMHxhW2t0Pj4yXSx3dCxjLHd0LHJu''@;'; put 'put ''KSxIdCgwfGFbYVtrdD4+Ml0+PjJdKSxIdCgwfGFba3Q+PjJdKSxIZT0wfFFuKE10KSxqZT0wfFFuKHd0PDwzKSxiPTAsaz0wLEQ9K0xKKGYsbHQscCxjLEEpO2U6Zm9yKDsoMHxrKTw1MCZiPDwyND4+MjQ9PTA7KXtmb3IoTGU9MDshKCgwfExlKT49KDB8cCkpOyl7Zm9yKEJlPWYrKExlPDwy''@;'; put 'put ''KXwwLE09MDshKCgwfE0pPj0oMHxjKSk7KXtmb3IoX1soUj1IZSsoTTw8Myl8MCk+PjNdPTAsRz0oMHxhW2x0KyhNPDw0KSs4Pj4yXSktNHwwLHBlPTB8YVtydCsoMjAqTXwwKSs0Pj4yXSxiZT0wfGFbcnQrKDIwKk18MCkrOD4+Ml0sT2U9cnQrKDIwKk18MCl8MCxLPTAsdz0xOyEoKDB8dyk+''@;'; put 'put ''PSgwfGFbT2U+PjJdKSk7KShtZT0raWooZixwLE0sYj0wfGFbcGUrKHc8PDIpPj4yXSkpPjFlLTMwJiYoX1tSPj4zXT0obWU9LStXbltiZSsodzw8Mik+PjJdKisoMHxhW0crKHc8PDIpPj4yXSkvbWUpKitfWygwfGFbQmU+PjJdKSsoYjw8Myk+PjNdKyArX1tSPj4zXSxLLT1tZSksdz13KzF8''@;'; put 'put ''MDtfW1I+PjNdPStfW1I+PjNdKyArX1soMHxhW0JlPj4yXSkrKE08PDMpPj4zXSpLLE09TSsxfDB9aWYoJFgoeW4sd3QsYyxIZSxqZSksMHx4bCgwfGFbcm4+PjJdLDB8YVsoYj1ldCsoTGU8PDIpfDApPj4yXSxqZSx3dCwuMDAxLHd0LDApKXtrPS0xO2JyZWFrIGV9aGooeW4sYyx3dCwwfGFb''@;'; put 'put ''Yj4+Ml0sMHxhW0JlPj4yXSksTGU9TGUrMXwwfTEmaz9iPTA6KG1lPStMSihmLGx0LHAsYyxBKSxiPShEPStlbygrKG1lLUQpKS8obWUrMWUtMTApKTwrX1syMzI5NF0mMSxEPW1lKSxrPWsrMXwwfWZvcihIdChqZSksSHQoSGUpLGF0JiZqayhsLGMsRXQpLGI9MDshKCgwfGIpPj0oMHxjKSk7''@;'; put 'put ''KTB8dWVbbHQrKGI8PDQpKzEyPj4wXSYmKEh0KDB8YVtsdCsoYjw8NCkrND4+Ml0pLEh0KDB8YVtsdCsoYjw8NCkrOD4+Ml0pKSxiPWIrMXwwO3JldHVybiBIdChsdCksSHQoMHxhW3J0KzQ+PjJdKSxIdCgwfGFbcnQrOD4+Ml0pLEh0KHJ0KSxIdCh1dCksSHQoWnQpLEh0KDB8YVtldD4+Ml0p''@;'; put 'put ''LEh0KGV0KSwwfChiPTB8YVtybj4+Ml0pJiYoSHQoMHxhW2I+PjJdKSxIdCgwfGFbcm4+PjJdKSksSHQoMHxhW3luPj4yXSksSHQoeW4pLEpjKEZuKSxvZT1sciwwfGt9ZnVuY3Rpb24gTEoobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAsSz0wLHBlPTA7ZTpkb3tpZigyPT0oMHxtKSlmb3IoQT0wLE09MDs7KXtpZigoMHxNKT49KDB8cCkpYnJlYWsgZTtmb3IoUj0wfGFbYysoTTw8NCk+PjJdLEc9YysoTTw8NCkrNHwwLEQ9YysoTTw8NCkrOHwwLGs9MDshKCgwfGspPj0oMHxSKSk7KXtpZigoMHwoYj0w''@;'; put 'put ''fGFbKDB8YVtHPj4yXSkrKGs8PDIpPj4yXSkpPigwfE0pKXtmb3Iodz0wLG09MDshKCgwfG0pPj0oMHxmKSk7KXc9KEs9K19bKHBlPTB8YVtsKyhtPDwyKT4+Ml0pKyhNPDwzKT4+M10tK19bcGUrKGI8PDMpPj4zXSkqSyt3LG09bSsxfDA7dz0rRjAoK3cpLEE9KHc9KEs9KygwfGFbKDB8YVtE''@;'; put 'put ''Pj4yXSkrKGs8PDIpPj4yXSkpLXcpKncvKEsqSykrQX1rPWsrMXwwfU09TSsxfDB9ZWxzZSBmb3IoTT0wLEE9MDs7KXtpZigoMHxNKT49KDB8cCkpYnJlYWsgZTtmb3IoRD0wfGFbYysoTTw8NCk+PjJdLFI9YysoTTw8NCkrNHwwLEc9YysoTTw8NCkrOHwwLGs9MDshKCgwfGspPj0oMHxEKSk7''@;'; put 'put ''KXtpZigoMHwoYj0wfGFbKDB8YVtSPj4yXSkrKGs8PDIpPj4yXSkpPigwfE0pKXtmb3Iodz0wLG09MDshKCgwfG0pPj0oMHxmKSk7KXc9KEs9K19bKHBlPTB8YVtsKyhtPDwyKT4+Ml0pKyhNPDwzKT4+M10tK19bcGUrKGI8PDMpPj4zXSkqSyt3LG09bSsxfDA7dz0rRjAoK3cpLEE9KHc9KEs9''@;'; put 'put ''KygwfGFbKDB8YVtHPj4yXSkrKGs8PDIpPj4yXSkpLXcpKncvSytBfWs9aysxfDB9TT1NKzF8MH19d2hpbGUoMCk7cmV0dXJuK0F9ZnVuY3Rpb24geVYobCl7cmV0dXJuKyArRjAoKyhsPStsKSkqbH1mdW5jdGlvbiBjYyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEEscD0wLG09MCx3PTA7''@;'; put 'put ''Zm9yKEE9MHxhWzQ3MTM3XSxwPTAsbT0wOyEoKDB8bSk+PSgwfEEpKTspX1tmKyhtPDwzKT4+M109dz0rX1tsKyhtPDwzKT4+M10tK19bYysobTw8Myk+PjNdLHA9dyp3K3AsbT1tKzF8MDtyZXR1cm4rICtGMCgrcCl9ZnVuY3Rpb24gc2gobCxjLGYpe2N8PTAsZj0rZjt2YXIgdyxwPTAsbT0w''@;'; put 'put ''LEE9MDtmb3Iodz0wfG1yKChsfD0wKTw8MiksbT0wLEE9MHxtcigwfHZyKGw8PDMsYykpOyEoKDB8bSk+PSgwfGwpKTspe2ZvcihhW3crKG08PDIpPj4yXT1BLHA9MDshKCgwfHApPj0oMHxjKSk7KV9bQSsocDw8Myk+PjNdPWYscD1wKzF8MDttPW0rMXwwLEE9QSsoYzw8Myl8MH1yZXR1cm4g''@;'; put 'put ''MHx3fWZ1bmN0aW9uIEo1KGwpezB8KGx8PTApJiYoSHQoMHxhW2w+PjJdKSxIdChsKSl9ZnVuY3Rpb24gT0oobCxjKXtjfD0wO3ZhciBiLGssTSxELGY9MCxwPTAsbT0wLEE9MCx3PTAsUj0wO0Q9b2Usb2U9b2UrMTZ8MCxNPTB8Tm8obHw9MCksaz0wfGJmKGwpLGI9MHxzaShsLDIsOTI0OTMs''@;'; put 'put ''MCk7ZTpkb3tpZihjKWZvcihfWzIzMjk0XT0xZS00LHpvZShsLDEwODg4NiwxODYzNTIpLG09MCxmPTAsQT0wfEx0KGwpOzspe2lmKCFBKWJyZWFrIGU7YVsxMjArKDB8YVtBKzE2Pj4yXSk+PjJdPW0sbT1tKzF8MCxmPXA9K0tkKGwsQSxiKStmLEE9MHx6dChsLEEpfWVsc2UgZm9yKF9bMjMy''@;'; put 'put ''OTRdPTFlLTQqKygwfE0pLHpvZShsLDEwODg4NiwxODYzNTIpLG09MHxMaSgwfGFbbCs2MD4+Ml0sOTAxMDApLGY9bT8rcHAobSk6Ljk5LF9bMjMyOTZdPWYsbT0wfG1yKDQrKE08PDIpfDApLHc9bCsxNnwwLGFbMTUyKygwfGFbdz4+Ml0pPj4yXT1tLG09MCxmPTAsQT0wfEx0KGwpOzspe2lm''@;'; put 'put ''KCFBKWJyZWFrIGU7YVsoMHxhWzE1MisoMHxhW3c+PjJdKT4+Ml0pKyhtPDwyKT4+Ml09QSxhWzEyMCsoUj0wfGFbQSsxNj4+Ml0pPj4yXT1tLGFbUisxMjQ+PjJdPS0xLG09bSsxfDAsZj1wPStLZChsLEEsYikrZixBPTB8enQobCxBKX19d2hpbGUoMCk7cmV0dXJuIDAhPSgwfChtPTB8TGko''@;'; put 'put ''bCw5MDEwOCkpKSYmMCE9KDB8dWVbbT4+MF0pPyhmPStfWzIzMjk0XSk+KHA9K3BwKG0pKXx8KGY9cCk6Zj1mLysoMHwoKDB8ayk+MT9rOjEpKSorRjAoKyArKDB8TSkpKzEsX1syMzI5NV09ZixhWzQ3MTM0XXxjfHwoYz0wfHNoKE0sTSxmKSxhWzE2MCsoMHxhWyhSPWwrMTZ8MCk+PjJdKT4+''@;'; put 'put ''Ml09YyxjPTB8c2goTSxNLDEpLGFbMTY0KygwfGFbUj4+Ml0pPj4yXT1jLGM9MHxzaChNLDB8YVs0NzEzN10sMSksYVsxNjgrKDB8YVtSPj4yXSk+PjJdPWMsYz0wfGZ1bmN0aW9uIHBzZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBiLGssTSxwPTAsbT0wLEE9MCx3PTA7Zm9yKGI9MHxtcig0Kygo''@;'; put 'put ''bHw9MCk8PDIpfDApLGs9NCsoYzw8Mil8MCxNPWY8PDMsQT0wOyEoKDB8QSk+PSgwfGwpKTspe2ZvcihhWyh3PWIrKEE8PDIpfDApPj4yXT0wfG1yKGspLG09MDshKCgwfG0pPj0oMHxjKSk7KXtmb3IocD0wfG1yKE0pLGFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXT1wLHA9MDshKCgwfHApPj0o''@;'; put 'put ''MHxmKSk7KV9bKDB8YVsoMHxhW3c+PjJdKSsobTw8Mik+PjJdKSsocDw8Myk+PjNdPTAscD1wKzF8MDttPW0rMXwwfWFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXT0wLEE9QSsxfDB9cmV0dXJuIGFbYisoQTw8Mik+PjJdPTAsMHxifShNLE0sMHxhWzQ3MTM3XSksYVsxNzIrKDB8YVtSPj4yXSk+''@;'; put 'put ''PjJdPWMpLG9lPUQsMHxNfWZ1bmN0aW9uIEtkKGwsYyxmKXtmfD0wO3ZhciBBLHcsayxwPTAsbT0wLGI9MDtmb3Ioaz1vZSxvZT1vZSszMnwwLHc9ays4fDAsQT1rLGM9MHx5MChsfD0wLGN8PTApLHA9MDtjOyl7c3dpdGNoKDB8SEQoYyxmLEEpKXtjYXNlIDA6bT0rX1tBPj4zXTticmVhaztj''@;'; put 'put ''YXNlIDI6YVt3Pj4yXT0wfCRyKGwpLF9bdys4Pj4zXT0xLFhyKDMsOTAxMjAsdyksYj02O2JyZWFrO2RlZmF1bHQ6Yj02fTY9PSgwfGIpJiYoYj0wLF9bQT4+M109MSxtPTEpLF9bMTM2KygwfGFbYysxNj4+Ml0pPj4zXT1tLGM9MHxrMChsLGMpLHA9bStwfXJldHVybiBvZT1rLCtwfWZ1bmN0''@;'; put 'put ''aW9uIEhEKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSx3LGIscD0wLG09MDtiPW9lLG9lPW9lKzE2fDAsdz1iKzh8MCxBPWI7ZG97aWYoMCE9KDB8YykmJihwPTB8Rm8obCxjKSwwIT0oMHx1ZVtwPj4wXSkpKXtpZihhW0E+PjJdPWYsKDB8JGEocCwxMDEyMDksQSkpPj0xJiYhKChtPStf''@;'; put 'put ''W2Y+PjNdKTwwKSYmMCE9bXwwIT0oMHxhWzQ3MTM0XSkpe2w9MDticmVha31hW3c+PjJdPXAsWHIoMCw5MDE0Nyx3KSxsPTJ9ZWxzZSBsPTF9d2hpbGUoMCk7cmV0dXJuIG9lPWIsMHxsfWZ1bmN0aW9uIHdWKGwpe0h0KDB8YVsxNTIrKDB8YVsobD0xNisobHw9MCl8MCk+PjJdKT4+Ml0pLDB8''@;'; put 'put ''YVs0NzEzNF18fChKNSgwfGFbMTYwKygwfGFbbD4+Ml0pPj4yXSksSjUoMHxhWzE2NCsoMHxhW2w+PjJdKT4+Ml0pLEo1KDB8YVsxNjgrKDB8YVtsPj4yXSk+PjJdKSxmdW5jdGlvbiBnc2UobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7aWYoMHwobHw9MCkpe2ZvcihtPTA7Yz0wfGFbKEE9''@;'; put 'put ''bCsobTw8Mil8MCk+PjJdOyl7Zm9yKHA9MDtmPTB8YVtjKyhwPDwyKT4+Ml07KUh0KGYpLHA9cCsxfDAsYz0wfGFbQT4+Ml07SHQoYyksbT1tKzF8MH1IdChsKX19KDB8YVsxNzIrKDB8YVtsPj4yXSk+PjJdKSxhWzE3MisoMHxhW2w+PjJdKT4+Ml09MCl9ZnVuY3Rpb24gVkQobCxjLGYpe2Z8''@;'; put 'put ''PTA7dmFyIHAsbT0wO2ZvcihwPSsoMHwoY3w9MCkpLGM9MTYrKGx8PTApfDA7ISgoMHxmKT49KDB8YVs0NzEzN10pKTspbT0rJGMoKSpwLF9bKDB8YVsxMzIrKDB8YVtjPj4yXSk+PjJdKSsoZjw8Myk+PjNdPW0sZj1mKzF8MH1mdW5jdGlvbiB4ayhsLGMpe1ZEKGx8PTAsY3w9MCwyKX1mdW5j''@;'; put 'put ''dGlvbiBSSihsLGMpe2x8PTA7dmFyIGYsbSxwPTA7cD0rKDB8KGN8PTApKSxtPSskYygpKnAsX1thWzEzMisoMHxhWyhmPWwrMTZ8MCk+PjJdKT4+Ml0+PjNdPW0scD0rJGMoKSpwLF9bOCsoMHxhWzEzMisoMHxhW2Y+PjJdKT4+Ml0pPj4zXT1wLCgwfGFbNDcxMzddKT4yJiZ4ayhsLGMpfWZ1''@;'; put 'put ''bmN0aW9uIEFzZShsLGMpe2x8PTAsY3w9MDt2YXIgRCxHLEssZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTAscGU9MDtpZihLPW9lLG9lPW9lKzE2fDAsRz1LLGFbNDY3OTldPUQ9MSsoMHxhWzQ2Nzk5XSl8MCwoMHxhWzE1NisobD0wfGFbbCsxNj4+Ml0pPj4yXSk8KDB8YVs0''@;'; put 'put ''NzEzNl0pKXtmb3Ioaz0wfGFbNDcxMzddLE09bCsxNTJ8MCxiPWwrMTY4fDAsbD0wLGY9MCx3PTA7ISgoMHx3KT49KDB8YykpOyl7aWYoKDB8YnRbMTE5KygwfGFbMTYrKG09MHxhWygwfGFbTT4+Ml0pKyh3PDwyKT4+Ml0pPj4yXSk+PjBdKTw9MSl7Zm9yKEE9MCxwPTA7ISgoMHxwKT49KDB8''@;'; put 'put ''aykpOylBPShwZT0rX1soMHxhWygwfGFbYj4+Ml0pKyh3PDwyKT4+Ml0pKyhwPDwzKT4+M10pKnBlK0EscD1wKzF8MDtBPmYmJihsPW0sZj1BKX13PXcrMXwwfWY8K19bMjMyMTZdP2w9MDohMSYwPT0oMHwoMHxEKSUxMDApJiYoUj0wfGFbMTU3MTJdLF9bRz4+M109K0YwKCtmKSxUMChSLDkw''@;'; put 'put ''MzcxLEcpLDA9PSgwfCgwfGFbNDY3OTldKSUxZTMpKSYmQVooMTAsUil9ZWxzZSBsPTA7cmV0dXJuIG9lPUssMHxsfWZ1bmN0aW9uIEJKKGwsYyxmKXtsfD0wLGN8PTA7dmFyIGIsUixNLHA9MCxtPTAsQT0wLHc9MCxrPTA7Zm9yKFI9b2Usb2U9b2UrMTZ8MCxNPTB8YVsxMjArKDB8YVsoaz0x''@;'; put 'put ''NisoZnw9MCl8MCk+PjJdKT4+Ml0sQT0obT0wfGFbNDY3OThdKT8wfGwwKG0sMHx2cigoQT0wfGFbNDcxMzddKTw8MyxBKSk6MHxRbigwfHZyKChBPTB8YVs0NzEzN10pPDwzLEEpKSxhWzQ2Nzk4XT1BLGZ1bmN0aW9uIHdzZShsLGMsZixwKXtjfD0wLHB8PTA7dmFyIG1lLGJlLE9lLEJlLEhl''@;'; put 'put ''LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLExlPTA7Zm9yKEhlPW9lLG9lPW9lKzgwfDAsQmU9SGUsaz0wfGFbMTY0KyhMZT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLE09MHxhW0xlKzE2MD4+Ml0sYj0wfGFbKExlPTB8YVtMZSsxNTI+PjJdKSsoKGZ8PTAp''@;'; put 'put ''PDwyKT4+Ml0sQT0wfGFbNDcxMzddLGw9MDshKCgwfGwpPj0oMHxBKSk7KXtmb3Iodz0wfHZyKEEsbCksbT0wOygwfG0pIT0oMHxBKTspX1twKyh3K208PDMpPj4zXT0wLG09bSsxfDA7bD1sKzF8MH1mb3IoT2U9MHxhWzQ3MTM3XSxiZT1iKzE2fDAsbWU9aysoZjw8Mil8MCxrPU0rKGY8PDIp''@;'; put 'put ''fDAsYj0wOyEoKDB8Yik+PSgwfGMpKTspe2U6ZG97aWYoKDB8YikhPSgwfGYpKXtmb3IobT0xNisoMHxhW0xlKyhiPDwyKT4+Ml0pfDAscGU9MCxsPTA7ISgoMHxsKT49KDB8T2UpKTspX1tCZSsobDw8Myk+PjNdPUs9K19bKDB8YVsxMzIrKDB8YVtiZT4+Ml0pPj4yXSkrKGw8PDMpPj4zXS0r''@;'; put 'put ''X1soMHxhWzEzMisoMHxhW20+PjJdKT4+Ml0pKyhsPDwzKT4+M10scGU9SypLK3BlLGw9bCsxfDA7Zm9yKEQ9MS8reVYocGUpLHc9MDs7KXtpZigoMHx3KT49KDB8T2UpKWJyZWFrIGU7Zm9yKG09KDB8YVttZT4+Ml0pKyhiPDwzKXwwLEE9KDB8YVtrPj4yXSkrKGI8PDMpfDAsUj0rX1tCZSso''@;'; put 'put ''dzw8Myk+PjNdLGw9MDtHPStfW20+PjNdLEs9K19bQT4+M10sKDB8bCkhPSgwfHcpOylNPXArKCgwfHZyKE9lLGwpKSt3PDwzKXwwLF9bTT4+M109K19bTT4+M10rRypEKksqUiorX1tCZSsobDw8Myk+PjNdLGw9bCsxfDA7TT1wKygoMHx2cihPZSx3KSkrdzw8Myl8MCxfW00+PjNdPSgxLUsq''@;'; put 'put ''RCoocGUtUipSKSkqRysgK19bTT4+M10sdz13KzF8MH19fXdoaWxlKDApO2I9YisxfDB9Zm9yKG09MHxhWzQ3MTM3XSx3PTE7ISgoMHx3KT49KDB8bSkpOyl7Zm9yKEE9MHx2cihtLHcpLGw9MDsoMHxsKSE9KDB8dyk7KV9bcCsoQStsPDwzKT4+M109K19bcCsoKDB8dnIobSxsKSkrdzw8Myk+''@;'; put 'put ''PjNdLGw9bCsxfDA7dz13KzF8MH1vZT1IZX0obCxjLE0sQSksdz0wfGFbNDcxMzddLGI9bCsxNnwwLG09MDshKCgwfG0pPj0oMHx3KSk7KV9bMTg1NzM2KyhtPDwzKT4+M109LStfWygwfGFbKDB8YVsxNjgrKDB8YVtiPj4yXSk+PjJdKSsoTTw8Mik+PjJdKSsobTw8Myk+PjNdLG09bSsxfDA7''@;'; put 'put ''Zm9yKGZ1bmN0aW9uIGZLKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wO3ZhciBwZSxtZSxiZSxPZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAsTGU9MCxCZT0wO2ZvcihiZT0wfFFuKChtZT0wfHZyKHB8PTAscCkpPDwzKSxPZT0wfFFuKHA8PDMpLG09MDshKCgwfG0p''@;'; put 'put ''Pj0oMHxwKSk7KV9bT2UrKG08PDMpPj4zXT0rX1tmKyhtPDwzKT4+M10sbT1tKzF8MDtmb3IobT0wOyEoKDB8bSk+PSgwfG1lKSk7KV9bYmUrKG08PDMpPj4zXT0rX1tsKyhtPDwzKT4+M10sbT1tKzF8MDtwZT1wKy0xfDAsdz0wLEs9MDtlOmZvcig7Oyl7aWYoISgoMHxLKTwoMHxwZSkpKXtE''@;'; put 'put ''PTIxO2JyZWFrfWZvcihBPTAsbT1LOyEoKDB8bSk+PSgwfHApKTspRz0oUj0oTGU9K2VvKCsgK19bbCsoKDB8dnIobSxwKSkrSzw8Myk+PjNdKSk8QSk/dzptLEE9Uj9BOkxlLG09bSsxfDAsdz1HO2lmKEE8MWUtMTApe0Q9MzM7YnJlYWt9Zm9yKGI9MHx2cih3LHApLEc9MHx2cihLLHApLG09''@;'; put 'put ''SzshKCgwfG0pPj0oMHxwKSk7KUxlPStfWyhEPWwrKG0rYjw8Myl8MCk+PjNdLF9bRD4+M109K19bKFI9bCsobStHPDwzKXwwKT4+M10sX1tSPj4zXT1MZSxtPW0rMXwwO2ZvcihMZT0rX1soUj1mKyh3PDwzKXwwKT4+M10sX1tSPj4zXT0rX1soaz1mKyhLPDwzKXwwKT4+M10sX1trPj4zXT1M''@;'; put 'put ''ZSxNPWwrKEcrSzw8Myl8MCxtPVI9SysxfDA7Oyl7aWYoKDB8bSk+PSgwfHApKXtLPVI7Y29udGludWUgZX1mb3IoRD0wfHZyKG0scCksX1soYj1mKyhtPDwzKXwwKT4+M109K19bYj4+M10tK19baz4+M10qKEE9K19bbCsoRCtLPDwzKT4+M10vK19bTT4+M10pLGI9MDshKCgwfGIpPj0oMHxw''@;'; put 'put ''KSk7KV9bKEJlPWwrKGIrRDw8Myl8MCk+PjNdPStfW0JlPj4zXS0rX1tsKyhiK0c8PDMpPj4zXSpBLGI9YisxfDA7bT1tKzF8MH19aWYoMjE9PSgwfEQpKWlmKCtlbygrKEE9K19bbCsobWUrLTE8PDMpPj4zXSkpPDFlLTEwKUQ9MzM7ZWxzZXtmb3IoX1tjKyhwZTw8Myk+PjNdPStfW2YrKHBl''@;'; put 'put ''PDwzKT4+M10vQSxtPTA7Oyl7aWYoKDB8bSk+PSgwfHBlKSl7bT0wO2JyZWFrfWZvcihfWyhrPWMrKChiPSh3PXAtbXwwKS0yfDApPDwzKXwwKT4+M109QT0rX1tmKyhiPDwzKT4+M10sTT0wfHZyKGIscCksdz13Ky0xfDA7ISgoMHx3KT49KDB8cCkpOylfW2s+PjNdPUxlPUEtK19bYysodzw8''@;'; put 'put ''Myk+PjNdKitfW2wrKHcrTTw8Myk+PjNdLHc9dysxfDAsQT1MZTtfW2s+PjNdPUEvK19bbCsoTStiPDwzKT4+M10sbT1tKzF8MH1mb3IoOzspe2lmKCgwfG0pPj0oMHxwKSl7bT0wO2JyZWFrfV9bZisobTw8Myk+PjNdPStfW09lKyhtPDwzKT4+M10sbT1tKzF8MH1mb3IoOyEoKDB8bSk+PSgw''@;'; put 'put ''fG1lKSk7KV9bbCsobTw8Myk+PjNdPStfW2JlKyhtPDwzKT4+M10sbT1tKzF8MDtIdChiZSksSHQoT2UpfTMzPT0oMHxEKSYmKGZ1bmN0aW9uIEpjZShsKXtsfD0wO3ZhciBwLG0sYz0wLGY9MDttPSgwfGFbNzYrKHA9MHxhWzE1Njc5XSk+PjJdKT4tMT8wfGZoKCk6MDtkb3tpZigoMHxfdShs''@;'; put 'put ''LHApKTwwKWw9LTE7ZWxzZXtpZigxMCE9KDB8dWVbcCs3NT4+MF0pJiYoZj0wfGFbKGM9cCsyMHwwKT4+Ml0pPj4+MDwoMHxhW3ArMTY+PjJdKT4+PjApe2FbYz4+Ml09ZisxLHVlW2Y+PjBdPTEwLGw9MDticmVha31sPSgwfHVaKHAsMTApKT4+MzF9fXdoaWxlKDApOzB8bSYmcTMoKX0oOTM5''@;'; put 'put ''ODkpLEh0KGJlKSxIdChPZSkpfShBLDE4NTgxNiwxODU3MzYsdyksbT0wOyEoKDB8bSk+PSgwfGFbNDcxMzddKSk7KXA9MiooMS0ocD0rX1syMzI5Nl0pKSorJGMoKStwLF9bKHc9MTg1ODE2KyhtPDwzKXwwKT4+M109cCo9K19bdz4+M10sX1sodz0oMHxhWzEzMisoMHxhW2s+PjJdKT4+Ml0p''@;'; put 'put ''KyhtPDwzKXwwKT4+M109K19bdz4+M10rcCxtPW0rMXwwO2FbKGs9MTU2KygwfGFbYj4+Ml0pfDApPj4yXT0xKygwfGFbaz4+Ml0pLGZ1bmN0aW9uIGJzZShsLGMsZil7Y3w9MDt2YXIgYixrLE0scD0wLG09MCxBPTAsdz0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTA7Zm9yKE09b2Usb2U9''@;'; put 'put ''b2UrODB8MCxrPU0sQT0wfGFbKDB8YVsxNTIrKG09MHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChmfD0wKTw8Mik+PjJdLHA9MHxhWzQ3MTM3XSxtPW0rMTY4fDAsbD0wOyEoKDB8bCk+PSgwfHApKTspX1soMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pKyhsPDwzKT4+M109MCxs''@;'; put 'put ''PWwrMXwwO2ZvcihtPUErMTZ8MCxsPTA7ISgoMHxsKT49KDB8YykpOyl7ZTpkb3tpZigoMHxsKSE9KDB8ZikpZm9yKHc9K2NjKDB8YVsxMzIrKDB8YVttPj4yXSk+PjJdLDB8YVsxMzIrKDB8YVsxNisoMHxhWygwfGFbMTUyKygwfGFbYj4+Ml0pPj4yXSkrKGw8PDIpPj4yXSk+PjJdKT4+Ml0s''@;'; put 'put ''ayksQT0wfGFbNDcxMzddLHc9MS93LHA9MDs7KXtpZigoMHxwKT49KDB8QSkpYnJlYWsgZTtfWyhwZT0oMHxhWygwfGFbKEs9MHxhWzE3MisoRD0wfGFbYj4+Ml0pPj4yXSkrKGY8PDIpPj4yXSkrKGw8PDIpPj4yXSkrKHA8PDMpfDApPj4zXT1SPSgoUj0rX1trKyhwPDwzKT4+M10pLStfWygw''@;'; put 'put ''fGFbKDB8YVtEKzE2MD4+Ml0pKyhmPDwyKT4+Ml0pKyhsPDwzKT4+M10qUip3KSorX1soMHxhWygwfGFbRCsxNjQ+PjJdKSsoZjw8Mik+PjJdKSsobDw8Myk+PjNdLF9bKG1lPSgwfGFbKEQ9MHxhW0QrMTY4Pj4yXSkrKGY8PDIpPj4yXSkrKHA8PDMpfDApPj4zXT0rX1ttZT4+M10rUixSPStf''@;'; put 'put ''WyhLPSgwfGFbKDB8YVtLKyhsPDwyKT4+Ml0pKyhmPDwyKT4+Ml0pKyhwPDwzKXwwKT4+M10sX1tLPj4zXT1HPS0rX1twZT4+M10sX1soRD0oMHxhW0QrKGw8PDIpPj4yXSkrKHA8PDMpfDApPj4zXT1HLVIrICtfW0Q+PjNdLHA9cCsxfDB9fXdoaWxlKDApO2w9bCsxfDB9b2U9TX0obCxjLE0p''@;'; put 'put ''LG9lPVJ9ZnVuY3Rpb24gakQobCl7dmFyIGYsQSxjPTAscD0wLG09MCx3PTAsYj0wO2ZvcihBPTB8YVs0NjgwMF0sYz0wfGFbMTI0KygwfGFbKGY9MTYrKGx8PTApfDApPj4yXSk+PjJdOyEoKDB8Yyk8PTB8fCh3PShjKy0xfDApLzJ8MCxiPUErKHc8PDIpfDAscD0wfGFbYj4+Ml0sbT1wKzE2''@;'; put 'put ''fDAsK19bMTM2KygwfGFbbT4+Ml0pPj4zXTw9K19bMTM2KygwfGFbZj4+Ml0pPj4zXSkpOylhW2I+PjJdPWwsYVsxMjQrKDB8YVtmPj4yXSk+PjJdPXcsYVtBKyhjPDwyKT4+Ml09cCxhWzEyNCsoMHxhW20+PjJdKT4+Ml09YyxjPXd9ZnVuY3Rpb24gX1YobCl7dmFyIGMsZjsoMHxhWyhjPTEy''@;'; put 'put ''NCsoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSk+PTAmJkJyKDkwMzc3LDkwMzk3LDY0Myw5MDQwNSksYVs0NjgwMV09MSsoZj0wfGFbNDY4MDFdKSxhW2M+PjJdPWYsYVsoMHxhWzQ2ODAwXSkrKGY8PDIpPj4yXT1sLCgwfGYpPjAmJmpEKGwpfWZ1bmN0aW9uIFBKKCl7dmFyIGMsbD0wLGY9''@;'; put 'put ''MCxwPTA7cmV0dXJuKGM9MHxhWzQ2ODAxXSk/KGw9MHxhWyhwPTB8YVs0NjgwMF0pPj4yXSxhWzQ2ODAxXT1mPWMrLTF8MCxhW3A+PjJdPWY9MHxhW3ArKGY8PDIpPj4yXSxhWzEyNCsoMHxhW2YrMTY+PjJdKT4+Ml09MCwoMHxjKT4yJiZmdW5jdGlvbiBfc2UobCl7dmFyIHcsYixrLGM9MCxm''@;'; put 'put ''PTAscD0wLG09MCxBPTAsTT0wO2ZvcihiPTB8YVs0NjgwMV0saz0wfGFbNDY4MDBdLEE9MHxhWzEyNCsoMHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pPj4yXTshKCgwfChwPUE8PDF8MSkpPj0oMHxiKXx8KGY9cCsxfDAsKDB8Zik8KDB8Yik/KG09MHxhW2srKGY8PDIpPj4yXSxjPTB8YVtrKyhw''@;'; put 'put ''PDwyKT4+Ml0sK19bMTM2KygwfGFbbSsxNj4+Ml0pPj4zXTwrX1sxMzYrKDB8YVtjKzE2Pj4yXSk+PjNdPyhwPWYsYz1tKTpNPTYpOihjPTB8YVtrKyhwPDwyKT4+Ml0sTT02KSw2PT0oMHxNKSYmKE09MCksZj1jKzE2fDAsK19bMTM2KygwfGFbdz4+Ml0pPj4zXTw9K19bMTM2KygwfGFbZj4+''@;'; put 'put ''Ml0pPj4zXSkpOylhW2srKHA8PDIpPj4yXT1sLGFbMTI0KygwfGFbdz4+Ml0pPj4yXT1wLGFbaysoQTw8Mik+PjJdPWMsYVsxMjQrKDB8YVtmPj4yXSk+PjJdPUEsQT1wfShmKSxhWzEyNCsoMHxhW2wrMTY+PjJdKT4+Ml09LTEpOmw9MCwwfGx9ZnVuY3Rpb24gRkoobCxjKXt2YXIgcDtmb3Io''@;'; put 'put ''bHw9MCxwPW9lLG9lPW9lKzE2fDAsYVs0NjgwMF09MHxtcig0KygoY3w9MCk8PDIpfDApLGM9MHxMdChsKTtjOylDc2UobCxjKSxjPTB8enQobCxjKTtIdCgwfGFbNDY4MDBdKSxvZT1wfWZ1bmN0aW9uIENzZShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3Io''@;'; put 'put ''cD0wfGFbMTUyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdLG09K19bMjMyOTVdLGY9MDtBPTB8YVtwKyhmPDwyKT4+Ml07KV9bMTM2KygwfGFbQSsxNj4+Ml0pPj4zXT1tLGY9ZisxfDA7YVs0NjgwMl09YyxfWzEzNisoaz0wfGFbYysxNj4+Ml0pPj4zXT0wLGFbaysxMjg+PjJdPTAsX1YoYyk7''@;'; put 'put ''ZTpmb3IoO2s9MHxQSigpLGs7KWZvcihmPTB8YVs0NjgwMl0sYj1rKzE2fDAsKDB8aykhPSgwfGYpJiZDVihsLGYsaywrX1sxMzYrKDB8YVtiPj4yXSk+PjNdKSx3PTB8RnMobCxrKTs7KXtpZighdyljb250aW51ZSBlOygwfChjPTB8YVsoMz09KDB8KGY9MyZhW3c+PjJdKSk/dzp3KzQ4fDAp''@;'; put 'put ''KzQwPj4yXSkpPT0oMHxrKSYmKGM9MHxhWygyPT0oMHxmKT93OncrLTQ4fDApKzQwPj4yXSksbT0rX1sxMzYrKDB8YVt3KzE2Pj4yXSk+PjNdKyArX1sxMzYrKGY9MHxhW2I+PjJdKT4+M10sQT0xMzYrKHA9MHxhW2MrMTY+PjJdKXwwO2Rve2lmKCtfW0E+PjNdPm0pe2lmKF9bQT4+M109bSwo''@;'; put 'put ''MHxhW3ArMTI0Pj4yXSk+LTEpe2pEKGMpO2JyZWFrfWFbcCsxMjg+PjJdPTErKDB8YVtmKzEyOD4+Ml0pLF9WKGMpO2JyZWFrfX13aGlsZSgwKTt3PTB8VHMobCx3LGspfX1mdW5jdGlvbiBDVihsLGMsZixwKXtfWygwfGFbKGw9MHxhWzE2MCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkrKChm''@;'; put 'put ''PTB8YVsxMjArKDB8YVsxNisoZnw9MCk+PjJdKT4+Ml0pPDwyKT4+Ml0pKygoYz0wfGFbMTIwKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKTw8Myk+PjNdPXA9K3AsX1soMHxhW2wrKGM8PDIpPj4yXSkrKGY8PDMpPj4zXT1wfWZ1bmN0aW9uIE5KKGwpe3ZhciBjO2YwKGx8PTAsMTM3NDYwLDE3''@;'; put 'put ''NiwxKSxZNyhsKSxjPStjbChsLDB8YVs0NzE3NF0sMSwwKSxfWzEyOCsoMHxhW2wrMTY+PjJdKT4+M109Y31mdW5jdGlvbiBWSihsLGMpe2N8PTA7dmFyIGY9MDtmb3IoZj0wfEx0KGx8PTApOzspe2lmKCFmKXtmPTA7YnJlYWt9aWYoKDB8cjEoMHxGbyhmLGMpKSk8PDI0Pj4yNClicmVhaztm''@;'; put 'put ''PTB8enQobCxmKX1yZXR1cm4gMHxmfWZ1bmN0aW9uIHNwKGwsYyl7bHw9MDt2YXIgQSxiLGY9MCxwPTAsbT0wLHc9MDtmb3IoYj1vZSxvZT1vZSsxNnwwLEE9Yiwodz0wPT0oMHwoY3w9MCkpKSYmKGZ1bmN0aW9uIG85ZShsKXthWyhsfD0wKT4+Ml09MCxhW2wrND4+Ml09MCxhW2wrOD4+Ml09''@;'; put 'put ''MH0oQSksYz1BKSxmPTB8d3MobCk7ZjspMHxuMigwfCRyKGYpLDEwODAwNiw3KT9zcChmLGMpOihmMChmLDEzNzQ4MywyODAsMSksWkQoYyxmKSxzcChmLDApKSxmPTB8YnMoZik7dyYmKGFbMTgwKygwfGFbKG09bCsxNnwwKT4+Ml0pPj4yXT1wPTB8YVtBKzg+PjJdLDB8cCkmJih3PTB8bDAo''@;'; put 'put ''MHxhW0E+PjJdLDQrKHA8PDIpfDApLGFbMTg0KygwfGFbbT4+Ml0pPj4yXT13KSxvZT1ifWZ1bmN0aW9uIHpKKGwpe01jKGx8PTAsMTA4MjMwLDEwODIzNil9ZnVuY3Rpb24gTXNlKGwpe2YwKGx8PTAsMTM3NDYwLDMwNCwxKX1mdW5jdGlvbiBaRChsLGMpe2N8PTA7dmFyIHAsbSxBLHcsZj0w''@;'; put 'put ''O2FbKEE9OCsobHw9MCl8MCk+PjJdPWY9MSsoMHxhW0E+PjJdKXwwLG09MTArKHc9MHxhWyhwPWwrNHwwKT4+Ml0pfDAsKDB8Zik8KDB8dyk/bD0wfGFbbD4+Ml06KGFbcD4+Ml09bSxmPTB8bDAoMHxhW2w+PjJdLG08PDIpLGFbbD4+Ml09ZixsPWYsZj0wfGFbQT4+Ml0pLGFbbCsoZjw8Mik+''@;'; put 'put ''PjJdPWN9ZnVuY3Rpb24gTVYobCxjKXtsfD0wO3ZhciBBLGIsZj0wLHA9MCxtPTAsdz0wO2ZvcihiPW9lLG9lPW9lKzE2fDAsQT1iLCh3PTA9PSgwfChjfD0wKSkpJiYoZnVuY3Rpb24gVHNlKGwpe2FbKGx8PTApPj4yXT0wLGFbbCs0Pj4yXT0wLGFbbCs4Pj4yXT0wfShBKSxjPUEpLGY9MHx3''@;'; put 'put ''cyhsKTtmOykwfG4yKDB8JHIoZiksMTA4MDA2LDcpP01WKGYsYyk6KGYwKGYsMTM3NDgzLDI4MCwxKSx1RChmKSxJc2UoYyxmKSxNVihmLDApKSxmPTB8YnMoZik7dyYmKGFbMTgwKygwfGFbKG09bCsxNnwwKT4+Ml0pPj4yXT1wPTB8YVtBKzg+PjJdLDB8cCkmJih3PTB8bDAoMHxhW0E+PjJd''@;'; put 'put ''LDQrKHA8PDIpfDApLGFbMTg0KygwfGFbbT4+Ml0pPj4yXT13KSxvZT1ifWZ1bmN0aW9uIHhzZShsLGMpe3ZhciBMZSxCZSxhdCxFdCxadCx1dCx3dCxybix5bixGbixjcixHZSxrdCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9''@;'; put 'put ''MCxPZT0wLGV0PTAscnQ9MCxsdD0wLE10PTAsTnI9MCxrcj0wO2Zvcihjcj1vZSxvZT1vZSs0NDh8MCxFdD1jcis0MDB8MCxhdD1jciszODR8MCxrcj1jciszNDR8MCxOcj1jciszMDR8MCxNdD1jcisxOTJ8MCxSPWNyKzcyfDAsZj1jcis2NHwwLHV0PWNyKzMyfDAsd3Q9Y3IsR2U9Y3IrNDE2''@;'; put 'put ''fDAsT2U9Y3IrMzI4fDAsQmU9Y3IrMjg4fDAscm49Y3IrMjMyfDAseW49Y3IrMTc2fDAsRm49Y3IrMTM2fDAsWnQ9Y3IrODB8MCxEPTB8YVs2MCsobHw9MCk+PjJdLGt0PWwrMTZ8MCxtPTErKGN8PTApfDAsZj0xLHA9MDshKCgwfGYpPigwfGFbMTgwKyhBPTB8YVtrdD4+Ml0pPj4yXSkpOyl4''@;'; put 'put ''c2UobHQ9MHxhWygwfGFbQSsxODQ+PjJdKSsoZjw8Mik+PjJdLG0pLGY9ZisxfDAscD0oMHxObyhsdCkpK3B8MDtpZihHPSgwfE5vKGwpKS1wfDAsKExlPTA9PSgwfChsdD0oMHxhWzE4MCsoZj0wfGFba3Q+PjJdKT4+Ml0pK0d8MCkpKSYmMD09KDB8YVtmKzEyPj4yXSkpYVsoa3I9ZisxNnww''@;'; put 'put ''KT4+Ml09MCxhW2tyKzQ+PjJdPTAsYVtrcis4Pj4yXT0wLGFba3IrMTI+PjJdPTAsX1tmKzQwPj4zXT0xOCxfW2YrMzI+PjNdPTE4O2Vsc2V7Zj1HZSsxNnwwO2Rve2lmKCgwfHR5KGwsNCw0LEdlKSk+Pj4wPj0zKXtpZig0PT0oMHxhW2Y+PjJdKSYmMCE9KDImYVtHZSsyOD4+Ml18MCkpe2lm''@;'; put 'put ''KDAhPSgwfChwPTB8c2koRCwwLDk5MTkwLDApKSl8MCE9KDB8KGY9MHxzaShELDEsOTkxOTAsMCkpKSl7YVtHZSsyND4+Ml09MHxtcihsdDw8Mik7YnJlYWt9YVtSPj4yXT0wfCRyKGwpLFhyKDAsOTA1NzcsUiksZj0wLHA9MDticmVha31mPTAscD0wfWVsc2UgYVtmPj4yXT0zLGY9MCxwPTB9''@;'; put 'put ''d2hpbGUoMCk7Zm9yKGV0PTB8bXIobHQ8PDUpLHJ0PTB8bXIobHQ8PDIpLG1lPUdlKzI0fDAsRD0wIT0oMHxwKSxwZT0wLEE9MTshKCgwfEEpPigwfGFbMTgwKyhtPTB8YVtrdD4+Ml0pPj4yXSkpOylhWyhiZT1ldCsocGU8PDUpfDApPj4yXT1hWyhLPTE2KygwfGFbMTYrKG09MHxhWygwfGFb''@;'; put 'put ''bSsxODQ+PjJdKSsoQTw8Mik+PjJdKT4+Ml0pfDApPj4yXSxhW2JlKzQ+PjJdPWFbSys0Pj4yXSxhW2JlKzg+PjJdPWFbSys4Pj4yXSxhW2JlKzEyPj4yXT1hW0srMTI+PjJdLGFbYmUrMTY+PjJdPWFbSysxNj4+Ml0sYVtiZSsyMD4+Ml09YVtLKzIwPj4yXSxhW2JlKzI0Pj4yXT1hW0srMjQ+''@;'; put 'put ''PjJdLGFbYmUrMjg+PjJdPWFbSysyOD4+Ml0sRCYwIT0oMHxhW21lPj4yXSkmJihiZT0wfGVzKG0scCwwLDApLGFbKDB8YVttZT4+Ml0pKyhwZTw8Mik+PjJdPWJlKSxhW3J0KyhwZTw8Mik+PjJdPW0scGU9cGUrMXwwLEE9QSsxfDA7ZTpkb3tpZigoMHxHKT4wKWZvcihSPXV0KzE2fDAsRz11''@;'; put 'put ''dCsyNHwwLEs9MCE9KDB8ZiksRD0wfEx0KGwpLHA9cGU7Oyl7aWYoIUQpYnJlYWsgZTswfGFbKEE9MTEyKyhtPTB8YVtEKzE2Pj4yXSl8MCk+PjJdfHwoYVtBPj4yXT1sLGFbdXQ+PjJdPTAsYVt1dCs0Pj4yXT0wLGFbdXQrOD4+Ml09MCxhW3V0KzEyPj4yXT0wLF9bUj4+M109K19bbSs5Nj4+''@;'; put 'put ''M10rICtfW20rODg+PjNdLF9bRz4+M109K19bbSs4MD4+M10sYVsoYmU9ZXQrKHA8PDUpfDApPj4yXT1hW3V0Pj4yXSxhW2JlKzQ+PjJdPWFbdXQrND4+Ml0sYVtiZSs4Pj4yXT1hW3V0Kzg+PjJdLGFbYmUrMTI+PjJdPWFbdXQrMTI+PjJdLGFbYmUrMTY+PjJdPWFbdXQrMTY+PjJdLGFbYmUr''@;'; put 'put ''MjA+PjJdPWFbdXQrMjA+PjJdLGFbYmUrMjQ+PjJdPWFbdXQrMjQ+PjJdLGFbYmUrMjg+PjJdPWFbdXQrMjg+PjJdLEsmMCE9KDB8YVttZT4+Ml0pJiYoYmU9MHxlcyhELGYsMCwwKSxhWygwfGFbbWU+PjJdKSsocDw8Mik+PjJdPWJlKSxhW3J0KyhwPDwyKT4+Ml09RCxwPXArMXwwKSxEPTB8''@;'; put 'put ''enQobCxEKX19d2hpbGUoMCk7Zm9yKGJlPTB8ZnVuY3Rpb24gb2gobCxjLGYpe2x8PTAsY3w9MCxmfD0wO2U6ZG97aWYoKDB8bCk8MSlsPTA7ZWxzZSBzd2l0Y2goMHxhW2YrMTY+PjJdKXtjYXNlIDQ6bD0wfGJXKGwsYyxmKTticmVhayBlO2Nhc2UgMzpsPTB8cHUobCxjLGYpO2JyZWFrIGU7''@;'; put 'put ''ZGVmYXVsdDpsPTA7YnJlYWsgZX19d2hpbGUoMCk7cmV0dXJuIDB8bH0obHQsZXQsR2UpLDB8KGY9MHxhW21lPj4yXSkmJkh0KGYpLFVKKHd0LDIxNDc0ODM2NDcsMjE0NzQ4MzY0NyksbWU9d3QrMTZ8MCxVSihPZSwtMjE0NzQ4MzY0NywtMjE0NzQ4MzY0NyksYVttZT4+Ml09YVtPZT4+Ml0s''@;'; put 'put ''YVttZSs0Pj4yXT1hW09lKzQ+PjJdLGFbbWUrOD4+Ml09YVtPZSs4Pj4yXSxhW21lKzEyPj4yXT1hW09lKzEyPj4yXSxBPXV0KzE2fDAsRD11dCs4fDAsUj11dCsyNHwwLEc9d3QrOHwwLEs9d3QrMjR8MCxwZT0wfGFbMTU3MTJdLGY9MDshKCgwfGYpPj0oMHxsdCkpOyliPSsoMHxhW2JlKyhm''@;'; put 'put ''PDwzKT4+Ml0pLE09KygwfGFbYmUrKGY8PDMpKzQ+PjJdKSxhW3V0Pj4yXT1hWyhwPWV0KyhmPDw1KXwwKT4+Ml0sYVt1dCs0Pj4yXT1hW3ArND4+Ml0sYVt1dCs4Pj4yXT1hW3ArOD4+Ml0sYVt1dCsxMj4+Ml09YVtwKzEyPj4yXSxhW3V0KzE2Pj4yXT1hW3ArMTY+PjJdLGFbdXQrMjA+PjJd''@;'; put 'put ''PWFbcCsyMD4+Ml0sYVt1dCsyND4+Ml09YVtwKzI0Pj4yXSxhW3V0KzI4Pj4yXT1hW3ArMjg+PjJdLF9bdXQ+PjNdPXc9K19bdXQ+PjNdK2IsX1tBPj4zXT1iPStfW0E+PjNdK2IsX1tEPj4zXT1rPStfW0Q+PjNdK00sX1tSPj4zXT1NPStfW1I+PjNdK00sX1t3dD4+M109K19bKCtfW3d0Pj4z''@;'; put 'put ''XTx3P3d0OnV0KT4+M10sX1tHPj4zXT0rX1soK19bRz4+M108az93dDp1dCkrOD4+M10sX1ttZT4+M109K19bKCtfW21lPj4zXT5iP3d0OnV0KSsxNj4+M10sX1tLPj4zXT0rX1soK19bSz4+M10+TT93dDp1dCkrMjQ+PjNdLG09MTYrKHA9MHxhW3J0KyhmPDwyKT4+Ml0pfDAsKDB8Zik8KDB8''@;'; put 'put ''YVsxODArKDB8YVtrdD4+Ml0pPj4yXSk/KGFbKE9lPTE2KygwfGFbbT4+Ml0pfDApPj4yXT1hW3V0Pj4yXSxhW09lKzQ+PjJdPWFbdXQrND4+Ml0sYVtPZSs4Pj4yXT1hW3V0Kzg+PjJdLGFbT2UrMTI+PjJdPWFbdXQrMTI+PjJdLGFbT2UrMTY+PjJdPWFbdXQrMTY+PjJdLGFbT2UrMjA+PjJd''@;'; put 'put ''PWFbdXQrMjA+PjJdLGFbT2UrMjQ+PjJdPWFbdXQrMjQ+PjJdLGFbT2UrMjg+PjJdPWFbdXQrMjg+PjJdKTooT2U9MTYrKDB8YVttPj4yXSl8MCxhW2F0Pj4yXT1hW3V0Pj4yXSxhW2F0KzQ+PjJdPWFbdXQrND4+Ml0sYVthdCs4Pj4yXT1hW3V0Kzg+PjJdLGFbYXQrMTI+PjJdPWFbdXQrMTI+''@;'; put 'put ''PjJdLGFbRXQ+PjJdPWFbQT4+Ml0sYVtFdCs0Pj4yXT1hW0ErND4+Ml0sYVtFdCs4Pj4yXT1hW0ErOD4+Ml0sYVtFdCsxMj4+Ml09YVtBKzEyPj4yXSxRSihCZSxhdCxFdCksYVtPZT4+Ml09YVtCZT4+Ml0sYVtPZSs0Pj4yXT1hW0JlKzQ+PjJdLGFbT2UrOD4+Ml09YVtCZSs4Pj4yXSxhW09l''@;'; put 'put ''KzEyPj4yXT1hW0JlKzEyPj4yXSksZj1mKzF8MDtmb3IoMHwoZj0wfGFbMTIrKHA9MHxhW2t0Pj4yXSk+PjJdKSYmKHc9K19bZisyND4+M10sTGU/KGI9K19bZiszMj4+M10sYVt3dD4+Ml09MCxhW3d0KzQ+PjJdPTAsYVt3dCs4Pj4yXT0wLGFbd3QrMTI+PjJdPTAsX1ttZT4+M109dyxfW0s+''@;'; put 'put ''PjNdPWIsYj0wLGs9dyk6KGI9K19bd3Q+PjNdLGs9K19bbWU+PjNdKSx3PS41KihNPXctKGstYikpLE0+MCYmKF9bd3Q+PjNdPWItdyxfW21lPj4zXT1rK3cpKSxfW3d0Pj4zXT1iPStfW3d0Pj4zXS0odz0oMHxjKT4wPy41KisoKDB8YVtHZSs4Pj4yXSk+Pj4wKTowKSxfW21lPj4zXT1rPStf''@;'; put 'put ''W21lPj4zXSt3LF9bRz4+M109TT0tdy0rX1twKzU2Pj4zXSsgK19bRz4+M10sX1tLPj4zXT13PStfW3ArODg+PjNdK3crICtfW0s+PjNdLGY9MDshKCgwfGYpPj0oMHxsdCkpOyltPTE2KyhwPTB8YVtydCsoZjw8Mik+PjJdKXwwLCgwfGYpPCgwfGFbMTgwKygwfGFba3Q+PjJdKT4+Ml0pPyhh''@;'; put 'put ''W3V0Pj4yXT1hWyhNdD0xNisoMHxhW20+PjJdKXwwKT4+Ml0sYVt1dCs0Pj4yXT1hW010KzQ+PjJdLGFbdXQrOD4+Ml09YVtNdCs4Pj4yXSxhW3V0KzEyPj4yXT1hW010KzEyPj4yXSxhW3V0KzE2Pj4yXT1hW010KzE2Pj4yXSxhW3V0KzIwPj4yXT1hW010KzIwPj4yXSxhW3V0KzI0Pj4yXT1h''@;'; put 'put ''W010KzI0Pj4yXSxhW3V0KzI4Pj4yXT1hW010KzI4Pj4yXSxhW2F0Pj4yXT1hW010Pj4yXSxhW2F0KzQ+PjJdPWFbTXQrND4+Ml0sYVthdCs4Pj4yXT1hW010Kzg+PjJdLGFbYXQrMTI+PjJdPWFbTXQrMTI+PjJdLGFbRXQ+PjJdPWFbd3Q+PjJdLGFbRXQrND4+Ml09YVt3dCs0Pj4yXSxhW0V0''@;'; put 'put ''Kzg+PjJdPWFbd3QrOD4+Ml0sYVtFdCsxMj4+Ml09YVt3dCsxMj4+Ml0sSWsodXQsYXQsRXQpLGFbYXQ+PjJdPWFbQT4+Ml0sYVthdCs0Pj4yXT1hW0ErND4+Ml0sYVthdCs4Pj4yXT1hW0ErOD4+Ml0sYVthdCsxMj4+Ml09YVtBKzEyPj4yXSxhW0V0Pj4yXT1hW3d0Pj4yXSxhW0V0KzQ+PjJd''@;'; put 'put ''PWFbd3QrND4+Ml0sYVtFdCs4Pj4yXT1hW3d0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbd3QrMTI+PjJdLElrKHJuLGF0LEV0KSxhW0E+PjJdPWFbcm4+PjJdLGFbQSs0Pj4yXT1hW3JuKzQ+PjJdLGFbQSs4Pj4yXT1hW3JuKzg+PjJdLGFbQSsxMj4+Ml09YVtybisxMj4+Ml0sYVsoTXQ9MTYrKDB8''@;'; put 'put ''YVttPj4yXSl8MCk+PjJdPWFbdXQ+PjJdLGFbTXQrND4+Ml09YVt1dCs0Pj4yXSxhW010Kzg+PjJdPWFbdXQrOD4+Ml0sYVtNdCsxMj4+Ml09YVt1dCsxMj4+Ml0sYVtNdCsxNj4+Ml09YVt1dCsxNj4+Ml0sYVtNdCsyMD4+Ml09YVt1dCsyMD4+Ml0sYVtNdCsyND4+Ml09YVt1dCsyND4+Ml0s''@;'; put 'put ''YVtNdCsyOD4+Ml09YVt1dCsyOD4+Ml0pOihhW2F0Pj4yXT1hWyhNdD0xNisoMHxhW20+PjJdKXwwKT4+Ml0sYVthdCs0Pj4yXT1hW010KzQ+PjJdLGFbYXQrOD4+Ml09YVtNdCs4Pj4yXSxhW2F0KzEyPj4yXT1hW010KzEyPj4yXSxhW0V0Pj4yXT1hW3d0Pj4yXSxhW0V0KzQ+PjJdPWFbd3Qr''@;'; put 'put ''ND4+Ml0sYVtFdCs4Pj4yXT1hW3d0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbd3QrMTI+PjJdLElrKHluLGF0LEV0KSxhW010Pj4yXT1hW3luPj4yXSxhW010KzQ+PjJdPWFbeW4rND4+Ml0sYVtNdCs4Pj4yXT1hW3luKzg+PjJdLGFbTXQrMTI+PjJdPWFbeW4rMTI+PjJdKSxmPWYrMXwwO2FbYXQ+''@;'; put 'put ''PjJdPWFbbWU+PjJdLGFbYXQrND4+Ml09YVttZSs0Pj4yXSxhW2F0Kzg+PjJdPWFbbWUrOD4+Ml0sYVthdCsxMj4+Ml09YVttZSsxMj4+Ml0sYVtFdD4+Ml09YVt3dD4+Ml0sYVtFdCs0Pj4yXT1hW3d0KzQ+PjJdLGFbRXQrOD4+Ml09YVt3dCs4Pj4yXSxhW0V0KzEyPj4yXT1hW3d0KzEyPj4y''@;'; put 'put ''XSxJayhGbixhdCxFdCksYVttZT4+Ml09YVtGbj4+Ml0sYVttZSs0Pj4yXT1hW0ZuKzQ+PjJdLGFbbWUrOD4+Ml09YVtGbis4Pj4yXSxhW21lKzEyPj4yXT1hW0ZuKzEyPj4yXSxhW2F0Pj4yXT1hW3d0Pj4yXSxhW2F0KzQ+PjJdPWFbd3QrND4+Ml0sYVthdCs4Pj4yXT1hW3d0Kzg+PjJdLGFb''@;'; put 'put ''YXQrMTI+PjJdPWFbd3QrMTI+PjJdLGFbRXQ+PjJdPWFbd3Q+PjJdLGFbRXQrND4+Ml09YVt3dCs0Pj4yXSxhW0V0Kzg+PjJdPWFbd3QrOD4+Ml0sYVtFdCsxMj4+Ml09YVt3dCsxMj4+Ml0sSWsoWnQsYXQsRXQpLGFbd3Q+PjJdPWFbWnQ+PjJdLGFbd3QrND4+Ml09YVtadCs0Pj4yXSxhW3d0''@;'; put 'put ''Kzg+PjJdPWFbWnQrOD4+Ml0sYVt3dCsxMj4+Ml09YVtadCsxMj4+Ml0sYVsoTnI9MTYrKDB8YVtrdD4+Ml0pfDApPj4yXT1hW3d0Pj4yXSxhW05yKzQ+PjJdPWFbd3QrND4+Ml0sYVtOcis4Pj4yXT1hW3d0Kzg+PjJdLGFbTnIrMTI+PjJdPWFbd3QrMTI+PjJdLGFbTnIrMTY+PjJdPWFbd3Qr''@;'; put 'put ''MTY+PjJdLGFbTnIrMjA+PjJdPWFbd3QrMjA+PjJdLGFbTnIrMjQ+PjJdPWFbd3QrMjQ+PjJdLGFbTnIrMjg+PjJdPWFbd3QrMjg+PjJdLEh0KGV0KSxIdChydCksSHQoYmUpfW9lPWNyfWZ1bmN0aW9uIFlKKGwsYyl7dmFyIEcsSyxwZSxiZSxmPTAscD0wLG09MCxBPTAsdz0wLGs9MCxNPTAs''@;'; put 'put ''RD0wLFI9MCxPZT0wO2JlPW9lLG9lPW9lKzgwfDAsdz1iZSs4fDAsZj1iZSxHPStfWzE2KyhSPTB8YVsocGU9MTYrKGx8PTApfDApPj4yXSk+PjNdLEs9K19bUisyND4+M10sUj0wIT0oMHwoY3w9MCkpO2U6ZG97aWYoUilmb3IoZj0wfEx0KGwpLHA9MHxhWzE1NzEyXTs7KXtpZighZilicmVh''@;'; put 'put ''ayBlOygwfGFbMTEyKyhBPTB8YVsobT1mKzE2fDApPj4yXSk+PjJdKT09KDB8bCkmJihfWyhPZT1BKzE2fDApPj4zXT0rX1tPZT4+M10rRyxfWyhBPUErMjR8MCk+PjNdPStfW0E+PjNdK0ssITEpJiYoJGQoYyksT2U9MHwkcihmKSxNPStfWzE2KyhBPTB8YVttPj4yXSk+PjNdLEQ9K19bQSsy''@;'; put 'put ''ND4+M10sYVt3Pj4yXT1PZSxfW3crOD4+M109TSxfW3crMTY+PjNdPUQsVDAocCw5MDU0NCx3KSksZj0wfHp0KGwsZil9ZWxzZSBwPTB8YVsxNTcxMl19d2hpbGUoMCk7Zm9yKHc9YysxfDAsbD0xOyEoKDB8bCk+KDB8YVsxODArKGY9MHxhW3BlPj4yXSk+PjJdKSk7KUE9MHxhWygwfGFbZisx''@;'; put 'put ''ODQ+PjJdKSsobDw8Mik+PjJdLFImJihrPStfWzI0KyhmPTB8YVsobT1BKzE2fDApPj4yXSk+PjNdK0ssTT0rX1tmKzMyPj4zXStHLEQ9K19bZis0MD4+M10rSyxfW2YrMTY+PjNdPStfW2YrMTY+PjNdK0csX1tmKzI0Pj4zXT1rLF9bZiszMj4+M109TSxfW2YrNDA+PjNdPUQpLFlKKEEsdyks''@;'; put 'put ''bD1sKzF8MDtvZT1iZX1mdW5jdGlvbiAkZChsKXt2YXIgYztmb3IobHw9MCxjPTB8YVsxNTcxMl07ISgoMHxsKTw9MCk7KV91KDkwNTc0LGMpLGw9bCstMXwwfWZ1bmN0aW9uIFVKKGwsYyxmKXtmPStmLF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mfWZ1bmN0aW9uIFFKKGwsYyxmKXt2''@;'; put 'put ''YXIgcDtwPS41KigrX1s4KyhmfD0wKT4+M10rICtfWzgrKGN8PTApPj4zXSksX1sobHw9MCk+PjNdPS41KigrX1tmPj4zXSsgK19bYz4+M10pLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIElrKGwsYyxmKXt2YXIgcDtwPStfWzgrKGN8PTApPj4zXS0rX1s4KyhmfD0wKT4+M10sX1sobHw9MCk+PjNd''@;'; put 'put ''PStfW2M+PjNdLStfW2Y+PjNdLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIElzZShsLGMpe2N8PTA7dmFyIHAsbSxBLHcsZj0wO2FbKEE9OCsobHw9MCl8MCk+PjJdPWY9MSsoMHxhW0E+PjJdKXwwLG09MTArKHc9MHxhWyhwPWwrNHwwKT4+Ml0pfDAsKDB8Zik8KDB8dyk/bD0wfGFbbD4+Ml06KGFb''@;'; put 'put ''cD4+Ml09bSxmPTB8bDAoMHxhW2w+PjJdLG08PDIpLGFbbD4+Ml09ZixsPWYsZj0wfGFbQT4+Ml0pLGFbbCsoZjw8Mik+PjJdPWN9ZnVuY3Rpb24gRHNlKGwpe3ZhciBjLGY9MCxwPTA7Zm9yKGM9MTYrKGx8PTApfDAsbD0xO2Y9MHxhWzE4NCsocD0wfGFbYz4+Ml0pPj4yXSwhKCgwfGwpPigw''@;'; put 'put ''fGFbcCsxODA+PjJdKSk7KVZ1KDB8YVsxMisoMHxhWzE2KyhwPTB8YVtmKyhsPDwyKT4+Ml0pPj4yXSk+PjJdKSxEc2UocCksbD1sKzF8MDtIdChmKX1mdW5jdGlvbiBMc2UobCl7dmFyIGM7VnkobHw9MCksYz0wfG1yKCgwfGFyWzE3NisoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4xXSk8PDMp''@;'; put 'put ''LGFbMTMyKygwfGFbbCsxNj4+Ml0pPj4yXT1jLFE3KGwsMSZhWzExNisoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4yXSl9ZnVuY3Rpb24gT3NlKGwsYyl7Y3w9MDt2YXIgZixwPTA7ZjAobHw9MCwxMzc0NjAsMTc2LDEpLHA9K2NsKGwsMHxhWzQ3MTc0XSwxLDApLF9bMTI4KygwfGFbKGY9bCsx''@;'; put 'put ''NnwwKT4+Ml0pPj4zXT1wLHA9K2NsKGwsYywrX1sxMzcxXSwwKSxfWzEzNisoMHxhW2Y+PjJdKT4+M109cCxZNyhsKX1mdW5jdGlvbiBSc2UobCl7dmFyIEEsYz0wLGY9MCxwPTAsbT0wO2ZvcihBPTE2KyhsfD0wKXwwLG09MTtjPTB8YVsxODQrKHA9MHxhW0E+PjJdKT4+Ml0sISgoMHxtKT4o''@;'; put 'put ''MHxhW3ArMTgwPj4yXSkpOylWdSgwfGFbMTIrKDB8YVsoYz0xNisocD0wfGFbYysobTw8Mik+PjJdKXwwKT4+Ml0pPj4yXSksMHwoZj0wfGFbMTQwKygwfGFbYz4+Ml0pPj4yXSkmJihIdCgwfGFbZj4+Ml0pLEh0KDB8YVsxNDArKDB8YVtjPj4yXSk+PjJdKSksUnNlKHApLG09bSsxfDA7SHQo''@;'; put 'put ''YyksKDB8aGkobCkpIT0oMHxsKSYmQ2EobCwxMzc0ODMpfWZ1bmN0aW9uIERrKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0sYixrLE0scD0wLEE9MCx3PTAsRD0wLFI9MCxHPTA7Zm9yKE09b2Usb2U9b2UrMTZ8MCxiPU0sKGs9MD09KDB8KGN8PTApKSkmJihmdW5jdGlvbiBFVihsKXthWyhsfD0w''@;'; put 'put ''KT4+Ml09MCxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MH0oYiksYz1iKSxtPWYrMTZ8MCxwPTB8d3MobCk7cDspMHxuMigwfCRyKHApLDEwODAwNiw3KT9EayhwLGMsZik6KGYwKHAsMTM3NDgzLDI4MCwxKSxEPTB8bXIoNTYpLGFbMTQwKyhHPTB8YVtwKzE2Pj4yXSk+PjJdPUQsVHRbRysxNzY+''@;'; put 'put ''PjFdPTB8VHRbMTc2KyhSPTB8YVttPj4yXSk+PjFdLGFbRCs0ND4+Ml09MSsoMHxhWzQ0KygwfGFbUisxNDA+PjJdKT4+Ml0pLGFbRCs0OD4+Ml09ZiwkSihjLHApLERrKHAsMCxwKSkscD0wfGJzKHApO2smJihhWzE4MCsoMHxhWyh3PWwrMTZ8MCk+PjJdKT4+Ml09QT0wfGFbYis4Pj4yXSww''@;'; put 'put ''fEEpJiYoRz0wfGwwKDB8YVtiPj4yXSw0KyhBPDwyKXwwKSxhWzE4NCsoMHxhW3c+PjJdKT4+Ml09Ryksb2U9TX1mdW5jdGlvbiAkSihsLGMpe2N8PTA7dmFyIHAsbSxBLHcsZj0wO2FbKEE9OCsobHw9MCl8MCk+PjJdPWY9MSsoMHxhW0E+PjJdKXwwLG09MTArKHc9MHxhWyhwPWwrNHwwKT4+''@;'; put 'put ''Ml0pfDAsKDB8Zik8KDB8dyk/bD0wfGFbbD4+Ml06KGFbcD4+Ml09bSxmPTB8bDAoMHxhW2w+PjJdLG08PDIpLGFbbD4+Ml09ZixsPWYsZj0wfGFbQT4+Ml0pLGFbbCsoZjw8Mik+PjJdPWN9ZnVuY3Rpb24geFYobCxjKXtjfD0wO3ZhciBrLE0sUixHLHBlLGY9MCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wLEQ9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTA7Zm9yKHBlPW9lLG9lPW9lKzY0fDAsZj1wZSs0MHwwLEQ9cGUrNTZ8MCxNPXBlKzUyfDAsaz1wZSxmPTB8THQobHw9MCk7ZjspYVsxNjQrKDB8YVtmKzE2Pj4yXSk+PjJdPTAsZj0wfHp0KGwsZik7Zm9yKFI9MHxmdW5jdGlvbiB1OWUo''@;'; put 'put ''bCxjKXtsfD0wO3ZhciBELFIsRyxCZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTA7Zm9yKEJlPW9lLG9lPW9lKzE2MHwwLEs9QmUrMjR8MCxwZT1CZSs4fDAscD1CZSxmPUJlKzU2fDAsYVsoT2U9MTYrKGN8PTApfDApPj4yXT0x''@;'; put 'put ''KyhMZT0wfGFbT2U+PjJdKSxhW0s+PjJdPUxlLGFvKGYsOTA3OTYsSyksdWVbSz4+MF09MHx1ZVsxODU4OF0sdWVbSysxPj4wXT0wfHVlWzE4NTg5XSx1ZVtLKzI+PjBdPTB8dWVbMTg1OTBdLHVlW0srMz4+MF09MHx1ZVsxODU5MV0sZjAoTGU9MHxFYyg5MTE1NixLLDApLDEzNzQ4MywyODAs''@;'; put 'put ''MSksYmU9MHxtcig1NiksYVsxNDArKE09MHxhWyhPZT1MZSsxNnwwKT4+Ml0pPj4yXT1iZSxUdFtNKzE3Nj4+MV09MHxUdFsxNzYrKDB8YVsoYmU9bCsxNnwwKT4+Ml0pPj4xXSxpWChsLExlLDkyNTA3KSxpWChsLExlLDkzMTEyKSxpWChsLExlLDkxMjAyKSxNPWMrNHwwLEQ9SysxNnwwLFI9''@;'; put 'put ''Sys4fDAsRz1LKzI0fDAsQT0wLGs9MTshKCgwfGspPigwfGFbMTgwKyhmPTB8YVtiZT4+Ml0pPj4yXSkpOyl7Zm9yKGFbSz4+Ml09YVszMzJdLGFbSys0Pj4yXT1hWzMzM10sYVtLKzg+PjJdPWFbMzM0XSxhW0srMTI+PjJdPWFbMzM1XSxhW0srMTY+PjJdPWFbMzM2XSxhW0srMjA+PjJdPWFb''@;'; put 'put ''MzM3XSxhW0srMjQ+PjJdPWFbMzM4XSxhW0srMjg+PjJdPWFbMzM5XSx1RChwPTB8YVsoMHxhW2YrMTg0Pj4yXSkrKGs8PDIpPj4yXSksbT0wfG9YKExlLDB8JHIocCkpLGFbMjEyKyhmPTB8YVsodz1tKzE2fDApPj4yXSk+PjJdPXAsYj1BKzF8MCxhW2YrMTIwPj4yXT1BLDB8YVtNPj4yXSYm''@;'; put 'put ''ZDllKHAsbSxjLEspLGY9MHxMdChwKTtmOylhWzE2NCsoMHxhW2YrMTY+PjJdKT4+Ml09bSxmPTB8enQocCxmKTswfHVlWzExOSsoZj0wfGFbdz4+Ml0pPj4wXSYmKF9bKHc9MHxhW2YrMTMyPj4yXSk+PjNdPS41KigrX1tEPj4zXSsgK19bSz4+M10pLF9bdys4Pj4zXT0uNSooK19bRz4+M10r''@;'; put 'put ''ICtfW1I+PjNdKSksQT1iLGs9aysxfDB9Zm9yKHc9MHxMdChsKTt3Oyl7aWYoMHxhWzE2NCsocD0wfGFbKGY9dysxNnwwKT4+Ml0pPj4yXSlmPUE7ZWxzZXtpZigwfChLPTB8YVsobT1wKzIxMnwwKT4+Ml0pJiYoMHxLKSE9KDB8YVs0OCsoMHxhWzE0MCsoMHxhW2JlPj4yXSk+PjJdKT4+Ml0p''@;'; put 'put ''KXttZT0xODticmVha31hW20+PjJdPWwsMHx1ZVtwKzExOD4+MF0/Zj1BOihtPTB8b1goTGUsMHwkcih3KSksYVsxNjQrKHA9MHxhW2Y+PjJdKT4+Ml09bSxhWzEyMCsobT0wfGFbbSsxNj4+Ml0pPj4yXT1BLF9bbSszMj4+M109K19bcCszMj4+M10sX1ttKzQwPj4zXT0rX1twKzQwPj4zXSxf''@;'; put 'put ''W20rODg+PjNdPStfW3ArODg+PjNdLF9bbSs5Nj4+M109K19bcCs5Nj4+M10sX1ttKzgwPj4zXT0rX1twKzgwPj4zXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFbbSsxMj4+Ml09YVtwKzEyPj4yXSwoZj0wfHVlW3ArMTE5Pj4wXSk8PDI0Pj4yNCYmKF9bKEs9MHxhW20rMTMyPj4yXSk+PjNdPStf''@;'; put 'put ''WyhjPTB8YVtwKzEzMj4+Ml0pPj4zXSxfW0srOD4+M109K19bYys4Pj4zXSx1ZVttKzExOT4+MF09ZiksYVs4KygwfGFbbSsxMTI+PjJdKT4+Ml09dyxmPUErMXwwKX13PTB8enQobCx3KSxBPWZ9Zm9yKDE4PT0oMHxtZSkmJihjPTB8JHIodyksSz0wfCRyKGwpLG1lPTB8JHIoMHxhWzIxMiso''@;'; put 'put ''MHxhW2Y+PjJdKT4+Ml0pLGFbcGU+PjJdPWMsYVtwZSs0Pj4yXT1LLGFbcGUrOD4+Ml09bWUsWHIoMSw5MDgyNixwZSksV2UoMTg3MjEyLDEpKSxiPTB8THQobCk7Yjspe2ZvcihNPTE2KyhrPTB8YVsxNjQrKDB8YVtiKzE2Pj4yXSk+PjJdKXwwLG09MHx5MChsLGIpO207KSgwfChmPTB8YVsx''@;'; put 'put ''NjQrKDB8YVsxNisoMHxhWygyPT0oMyZhW20+PjJdfDApP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpIT0oMHxrKSYmKGYwKHc9Zj4+PjA+az4+PjA/MHxybChMZSxrLGYsMCwxKTowfHJsKExlLGYsaywwLDEpLDEzNzQ2MCwxNzYsMSksX1sxMzYrKG1lPTB8YVt3KzE2Pj4yXSk+PjNd''@;'; put 'put ''PStfWzEzNisocD0wfGFbbSsxNj4+Ml0pPj4zXSxfW21lKzEyOD4+M109K19bcCsxMjg+PjNdLGFbKHA9NCsoZj0wfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXSl8MCk+PjJdPTErKDB8YVtwPj4yXSksYVsocGU9NCsocD0wfGFbMTEyKygwfGFbTT4+Ml0pPj4yXSl8MCk+PjJdPTErKDB8YVtw''@;'; put 'put ''ZT4+Ml0pLDB8YVttZSsxNzI+PjJdfHwoYVtmPj4yXT0xKygwfGFbZj4+Ml0pLGFbcD4+Ml09MSsoMHxhW3A+PjJdKSksR0QodyxtKSksbT0wfGswKGwsbSk7Yj0wfHp0KGwsYil9aWYoMHwocD0wfGFbKGY9MHxhWzE0MCsoMHxhW2JlPj4yXSk+PjJdKT4+Ml0pKXtmb3IobT0wfG1yKDE2Kyhh''@;'; put 'put ''W2YrND4+Ml08PDQpfDApLGFbYVsxNDArKDB8YVtPZT4+Ml0pPj4yXT4+Ml09bSxmPTA7MHxhW3A+PjJdOykoYj0wfGFbMTY0KygwfGFbMTYrKDB8YVtwKzQ+PjJdKT4+Ml0pPj4yXSkmJihwOWUobCxwKSxrPTB8b1goTGUsMTkzNzcyKSxhWzEyMCsoMHxhWyhNPWsrMTZ8MCk+PjJdKT4+Ml09''@;'; put 'put ''QSxmMCh3PWs+Pj4wPmI+Pj4wPzB8cmwoTGUsYixrLDAsMSk6MHxybChMZSxrLGIsMCwxKSwxMzc0NjAsMTc2LDEpLF9bMTM2KyhiZT0wfGFbdysxNj4+Ml0pPj4zXT0rX1sxMzYrKHBlPTB8YVsxNisobWU9MHxhW3A+PjJdKT4+Ml0pPj4zXSxfW2JlKzEyOD4+M109K19bcGUrMTI4Pj4zXSxH''@;'; put 'put ''RCh3LG1lKSxhWyhiZT00KyhtZT0wfGFbMTEyKygwfGFbTT4+Ml0pPj4yXSl8MCk+PjJdPTErKDB8YVtiZT4+Ml0pLGFbKHBlPTQrKGJlPTB8YVsxMTIrKDB8YVtiKzE2Pj4yXSk+PjJdKXwwKT4+Ml09MSsoMHxhW3BlPj4yXSksYVttZT4+Ml09MSsoMHxhW21lPj4yXSksYVtiZT4+Ml09MSso''@;'; put 'put ''MHxhW2JlPj4yXSksYVttKzQ+PjJdPWssX1ttKzg+PjNdPStfW3ArOD4+M10sYVttPj4yXT13LGY9ZisxfDAsbT1tKzE2fDAsQT1BKzF8MCkscD1wKzE2fDA7YVs0KygwfGFbMTQwKygwfGFbT2U+PjJdKT4+Ml0pPj4yXT1mfXJldHVybiBvZT1CZSwwfExlfShsLGMpLEc9MHxmdW5jdGlvbiBh''@;'; put 'put ''MWUobCxjLGYpe2N8PTAsZnw9MDt2YXIgayxNLEQsUixwPTAsbT0wLEE9MCx3PTAsYj0wLEc9MDtSPW9lLG9lPW9lKzE2MHwwLEQ9UisxNnwwLGI9Uis4fDAsbT1SLGs9UisyNHwwLE09MHxtcigwfE5vKGx8PTApKSxwPTB8YVthWzE0MCsoMHxhWyhBPWwrMTZ8MCk+PjJdKT4+Ml0+PjJdO2U6''@;'; put 'put ''ZG97aWYocClmb3IoRz0wfCRyKGwpLHc9MHxhWzQ2OTIzXSxhW20+PjJdPUcsYVttKzQ+PjJdPXcsYW8oayw5NDYxMixtKSx3PTB8eXMobCxrLDEpLGYwKHcsMTM3NDgzLDI4MCwxKSxtPTB8bXIoNTYpLGFbMTQwKygwfGFbdysxNj4+Ml0pPj4yXT1tLGFbbT4+Ml09cCxhW20rND4+Ml09YVs0''@;'; put 'put ''KygwfGFbMTQwKygwfGFbQT4+Ml0pPj4yXSk+PjJdOzspe2lmKCEobT0wfGFbcCs0Pj4yXSkpe209dyxwPTE7YnJlYWsgZX0wfHVlW00rKDB8YVsxMjArKDB8YVttKzE2Pj4yXSk+PjJdKT4+MF18fGRMKGwsbSx3LE0pLHA9cCsxNnwwfWVsc2UgbT0wLHA9MH13aGlsZSgwKTtmb3IoQT0wLHc9''@;'; put 'put ''MHxMdChsKTt3OykwPT0oMHx1ZVtNKygwfGFbMTIwKyhHPTB8YVt3KzE2Pj4yXSk+PjJdKT4+MF0pJiYzPT0oMHx1ZVtHKzExOT4+MF0pJiYobXx8KEc9MHwkcihsKSxtPSgwfGFbNDY5MjNdKStwfDAsYVtiPj4yXT1HLGFbYis0Pj4yXT1tLGFvKGssOTQ2MTIsYiksZjAobT0wfHlzKGwsaywx''@;'; put 'put ''KSwxMzc0ODMsMjgwLDEpLEc9MHxtcig1NiksYVsxNDArKDB8YVttKzE2Pj4yXSk+PjJdPUcscD1wKzF8MCksZEwobCx3LG0sTSksQT0xKSx3PTB8enQobCx3KTtmb3IoMHxtJiZleShtKSxtPTB8THQobCk7bTspMHx1ZVtNKygwfGFbMTIwKygwfGFbbSsxNj4+Ml0pPj4yXSk+PjBdfHwoYj0w''@;'; put 'put ''fCRyKGwpLEc9KDB8YVs0NjkyM10pK3B8MCxhW0Q+PjJdPWIsYVtEKzQ+PjJdPUcsYW8oayw5NDYyMCxEKSxmMChHPTB8eXMobCxrLDEpLDEzNzQ4MywyODAsMSksYj0wfG1yKDU2KSxhWzE0MCsoMHxhW0crMTY+PjJdKT4+Ml09YixkTChsLG0sRyxNKSxleShHKSxwPXArMXwwKSxtPTB8enQo''@;'; put 'put ''bCxtKTtmb3IoSHQoTSksYVs0NjkyM109KDB8YVs0NjkyM10pK3AsMHxjJiYoYVtjPj4yXT1wKSwwfGYmJihhW2Y+PjJdPUEpLEE9dz0wfG1yKDQrKHA8PDIpfDApLG09MHx3cyhsKTttOylhW0E+PjJdPW0sQT1BKzR8MCxtPTB8YnMobSkscD1wKy0xfDA7cmV0dXJuIHA/KEJyKDk0NjI4LDk0''@;'; put 'put ''NjM5LDEzNCw5NDY0NiksMCk6KGFbQT4+Ml09MCxvZT1SLDB8dyl9KFIsRCxNKSxmPUc7Yj1mKzR8MCxwPTB8YVtmPj4yXTspe2Zvcih2OWUocCxrKSxmPTB8THQocCk7ZjspbT0wfHp0KHAsZiksMHxhWzIxMisodz0wfGFbKEE9ZisxNnwwKT4+Ml0pPj4yXT8oeFYoT2U9MHxjOWUoZixwKSxj''@;'; put 'put ''KSxfWzMyKyh3PTB8YVtBPj4yXSk+PjNdPWJlPStfWzI0KyhPZT0wfGFbMTQwKygwfGFbT2UrMTY+PjJdKT4+Ml0pPj4zXSxfW3crNDA+PjNdPW1lPStfW09lKzMyPj4zXSxfW3crODg+PjNdPWJlKj0zNixfW3crOTY+PjNdPWJlLF9bdys4MD4+M109NzIqbWUsZj1tKTooMHxhWzgrKDB8YVt3''@;'; put 'put ''KzExMj4+Ml0pPj4yXXx8bmkocCxmKSxmPW0pOygwfE5vKHApKTw9MXx8KCgwfGFbYz4+Ml0pPT0oMHxsKSYma1gocCksVnNlKHAsaykpLGY9Yn1mb3IoKDB8KGY9MHxhW0Q+PjJdKSk8PTE/KDE9PSgwfGYpJiZYNigwfGFbRz4+Ml0pLGY9MCk6KDB8YVtNPj4yXT8ocD0wfG1yKGYpLHVlW3A+''@;'; put 'put ''PjBdPTEsZj0wfGFbRD4+Ml0pOnA9MCxhW2MrNDA+PjJdPXAsZj0wfFBGKGYsRywwLGMrMjB8MCksSHQocCkpLGZ1bmN0aW9uIFg3KGwsYyxmLHAsbSxBKXtsfD0wLGZ8PTAscHw9MDt2YXIgSGUsamUsZXQscnQsR2Usdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAs''@;'; put 'put ''YmU9MCxPZT0wLExlPTAsQmU9MCxsdD0wLE10PTAsa3Q9MCxhdD0wLEV0PTAsWnQ9MDtHZT1vZSxvZT1vZSszMnwwLEhlPUdlKzE2fDAscnQ9R2UsTT0wfGFbOCsoQXw9MCk+PjJdLGI9MHxhW0ErMTI+PjJdLGplPSgwfGFbQT4+Ml0pPT0oMHwobXw9MCkpLGV0PTAhPSgwfChjfD0wKSk7ZTpk''@;'; put 'put ''b3tpZihldClpZihHPTB8YVsxNisoMHxhW2Y+PjJdKT4+Ml0saz0rX1tHKzE2Pj4zXSxNPX5+KGsrKGs+PTA/LjU6LS41KSksYVtydD4+Ml09TSxrPStfW0crMjQ+PjNdLEE9fn4oaysoaz49MD8uNTotLjUpKSxPZT1ydCs0fDAsYVtPZT4+Ml09QSxrPStfW0crMzI+PjNdLEQ9fn4oaysoaz49''@;'; put 'put ''MD8uNTotLjUpKSxMZT1ydCs4fDAsYVtMZT4+Ml09RCxrPStfW0crNDA+PjNdLEc9fn4oaysoaz49MD8uNTotLjUpKSxCZT1ydCsxMnwwLGFbQmU+PjJdPUcsKDB8Yyk+MSlmb3IoSz0wfGFbcD4+Ml0sYmU9MHxhW3ArND4+Ml0sTT1LK018MCxhW3J0Pj4yXT1NLGM9YmUrQXwwLGFbT2U+PjJd''@;'; put 'put ''PWMsRD1LK0R8MCxhW0xlPj4yXT1ELEs9SGUrNHwwLHBlPUhlKzh8MCxtZT1IZSsxMnwwLFI9cCxBPWYsYmU9YmUrR3wwLEc9Yzs7KXtpZihBPUErNHwwLGI9Uis4fDAsYVtCZT4+Ml09YmUsIShjPTB8YVtBPj4yXSkpe2I9MCxwZT1HLG1lPWJlO2JyZWFrIGV9RXQ9K19bMTYrKGt0PTB8YVtj''@;'; put 'put ''KzE2Pj4yXSk+PjNdLHc9K19ba3QrMjQ+PjNdLGs9K19ba3QrMzI+PjNdLGFbbWU+PjJdPWt0PX5+KChadD0rX1trdCs0MD4+M10pKyhadD49MD8uNTotLjUpKSxhdD0wfGFbUisxMj4+Ml0sYVtIZT4+Ml09TXQ9KGM9MHxhW2I+PjJdKSt+fihFdCsoRXQ+PTA/LjU6LS41KSl8MCxhW0s+PjJd''@;'; put 'put ''PWx0PWF0K35+KHcrKHc+PTA/LjU6LS41KSl8MCxhW3BlPj4yXT1jPWMrfn4oaysoaz49MD8uNTotLjUpKXwwLGFbbWU+PjJdPWt0PWF0K2t0fDAsYVtydD4+Ml09TXQ9MHxhWygoMHxNKTwoMHxNdCk/cnQ6SGUpPj4yXSxhW09lPj4yXT1sdD0wfGFbKCgwfEcpPCgwfGx0KT9ydDpIZSkrND4+''@;'; put 'put ''Ml0sYVtMZT4+Ml09Yz0wfGFbKCgwfEQpPigwfGMpP3J0OkhlKSs4Pj4yXSxSPWIsYmU9MHxhWygoMHxiZSk+KDB8a3QpP3J0OkhlKSsxMj4+Ml0sTT1NdCxHPWx0LEQ9Y31lbHNlIGI9MCxwZT1BLG1lPUc7ZWxzZSBhW3J0Pj4yXT0wLGFbcnQrND4+Ml09MCxEPTB8ZXMobSxNLDU0LDMpLGFb''@;'; put 'put ''cnQrOD4+Ml09RCxtZT0wfGVzKG0sYiwzNiwzKSxhW3J0KzEyPj4yXT1tZSxiPTEsTT0wLHBlPTB9d2hpbGUoMCk7KEE9MHxhWzEyKyhSPTB8YVsoYz1tKzE2fDApPj4yXSk+PjJdKT8oKDB8KEE9TS1EK35+KChadD0rX1tBKzI0Pj4zXSkrKFp0Pj0wPy41Oi0uNSkpfDApKT4wJiYoYVtydD4+''@;'; put 'put ''Ml09TT1NLShBPj4+PTEpfDAsYVtydCs4Pj4yXT1EPUQrQXwwKSxBPTApOkE9YixqZXwwIT0oMHxBKT8oYj0wLEE9Uik6KGI9MHxlcyhsLDB8YVs0NzE0NF0sOCwwKSxBPTB8YVtjPj4yXSksSz1iLU18MCxHPX5+KCtfW0ErNTY+PjNdKyArKGItcGV8MCkpLGFbcnQ+PjJdPTAsYVtydCs0Pj4y''@;'; put 'put ''XT0wLGFbcnQrOD4+Ml09Uj1LK2IrRHwwLGFbcnQrMTI+PjJdPWM9fn4oK19bQSs4OD4+M10rICsoYitHfDApKyArKDB8bWUpKTtlOmRve2lmKGV0KXtBPXA7dDpmb3IoOzspe2lmKEQ9Zis0fDAsIShiPTB8YVtmPj4yXSkpYnJlYWsgZTtmb3IoQT8oTT1BKzh8MCxmPSgwfGFbQT4+Ml0pK0t8''@;'; put 'put ''MCxBPSgwfGFbQSs0Pj4yXSkrR3wwKTooTT0wLGY9SyxBPUcpLGs9LjAxMzg4ODg4ODg4ODg4ODg4OCorKDB8Ziksdz0uMDEzODg4ODg4ODg4ODg4ODg4KisoMHxBKSxmPTB8THQoYik7Oyl7aWYoIWYpe2Y9RCxBPU07Y29udGludWUgdH1fWyhhdD0wfGFbMTMyKygwfGFbZisxNj4+Ml0pPj4y''@;'; put 'put ''XSk+PjNdPStfW2F0Pj4zXStrLF9bKGF0PWF0Kzh8MCk+PjNdPStfW2F0Pj4zXSt3LGY9MHx6dChiLGYpfX19fXdoaWxlKDApO2FbKGt0PTgrKGF0PTB8YVsxNDArKDB8YVtsKzE2Pj4yXSk+PjJdKXwwKT4+Ml09MCxhW2t0KzQ+PjJdPTAsYVtrdCs4Pj4yXT0wLGFba3QrMTI+PjJdPTAsX1th''@;'; put 'put ''dCsyND4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorKDB8UiksX1thdCszMj4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorKDB8Yyksb2U9R2V9KFIsMHxhW0Q+PjJdLEcsZixsLGMpLEh0KGYpLHA9MHxMdChSKTtwOykoZj0wfGFbMjEyKyhtPTB8YVtwKzE2Pj4yXSk+PjJdKT8oX1s4KyhPZT0w''@;'; put 'put ''fGFbMTQwKygwfGFbZisxNj4+Ml0pPj4yXSk+PjNdPUxlPStfWyhEPTB8YVttKzEzMj4+Ml0pPj4zXS0uNSooQmU9K19bbSszMj4+M10pLF9bT2UrMTY+PjNdPWJlPStfW0QrOD4+M10tLjUqKG1lPStfW20rNDA+PjNdKSxfW09lKzI0Pj4zXT1CZStMZSxfW09lKzMyPj4zXT1tZStiZSk6MHwo''@;'; put 'put ''Zj0wfGFbOCsoMHxhW20rMTEyPj4yXSk+PjJdKSYmKF9bKE9lPTB8YVsxMzIrKDB8YVtmKzE2Pj4yXSk+PjJdKT4+M109K19bKEQ9MHxhW20rMTMyPj4yXSk+PjNdLF9bT2UrOD4+M109K19bRCs4Pj4zXSkscD0wfHp0KFIscCk7YVsoT2U9OCsoMHxhWzE0MCsoMHxhW2wrMTY+PjJdKT4+Ml0p''@;'; put 'put ''fDApPj4yXT1hWyhEPTgrKDB8YVsxNDArKDB8YVtSKzE2Pj4yXSk+PjJdKXwwKT4+Ml0sYVtPZSs0Pj4yXT1hW0QrND4+Ml0sYVtPZSs4Pj4yXT1hW0QrOD4+Ml0sYVtPZSsxMj4+Ml09YVtEKzEyPj4yXSxhW09lKzE2Pj4yXT1hW0QrMTY+PjJdLGFbT2UrMjA+PjJdPWFbRCsyMD4+Ml0sYVtP''@;'; put 'put ''ZSsyND4+Ml09YVtEKzI0Pj4yXSxhW09lKzI4Pj4yXT1hW0QrMjg+PjJdLGZ1bmN0aW9uIFBzZShsLGMpe2x8PTAsY3w9MDtmb3IodmFyIGY9MCxwPTA7Zj0wfGFbYz4+Ml07KXRYKGYpLENhKGYsMTM3NDgzKSxjPWMrNHwwO2ZvcigwfChjPTB8YVthWzE0MCsoMHxhW2wrMTY+PjJdKT4+Ml0+''@;'; put 'put ''PjJdKSYmSHQoYyksdFgobCksQ2EobCwxMzc0ODMpLGY9MHxMdChsKTtmOyl7Zm9yKHA9MHx6dChsLGYpLGM9MHx5MChsLGYpO2M7KUh0KDB8YVsxNzIrKDB8YVtjKzE2Pj4yXSk+PjJdKSxDYShjLDEzNzQ2MCksYz0wfGswKGwsYyk7ZjllKGYpLGY9cH1RMShsKX0oUixHKSxIdChHKSxvZT1w''@;'; put 'put ''ZX1mdW5jdGlvbiBlWChsLGMpe3ZhciBtLEEsdyxmPTAscD0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MDttPStfWzgrKGI9MHxhWzE0MCsoMHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSk+PjNdLEE9K19bYisxNj4+M10sYj0oMHxsKSE9KDB8KGN8PTApKTtlOmRve2lmKGIpZm9y''@;'; put 'put ''KGY9MHxMdChsKTs7KXtpZighZil7bD0xO2JyZWFrIGV9KDB8YVsyMTIrKHA9MHxhW2YrMTY+PjJdKT4+Ml0pPT0oMHxsKSYmKF9bKHA9MHxhW3ArMTMyPj4yXSk+PjNdPStfW3A+PjNdK20sX1socD1wKzh8MCk+PjNdPStfW3A+PjNdK0EpLGY9MHx6dChsLGYpfWVsc2UgbD0xfXdoaWxlKDAp''@;'; put 'put ''O2Zvcig7ISgoMHxsKT4oMHxhWzE4MCsoZj0wfGFbdz4+Ml0pPj4yXSkpOylmPTB8YVsoMHxhW2YrMTg0Pj4yXSkrKGw8PDIpPj4yXSxiJiYoSz04KyhwPTB8YVsxNDArKDB8YVtmKzE2Pj4yXSk+PjJdKXwwLEc9K19bKFI9cCsxNnwwKT4+M10rQSxEPStfWyhNPXArMjR8MCk+PjNdK20saz0r''@;'; put 'put ''X1socD1wKzMyfDApPj4zXStBLF9bSz4+M109K19bSz4+M10rbSxfW1I+PjNdPUcsX1tNPj4zXT1ELF9bcD4+M109ayksZVgoZixjKSxsPWwrMXwwfWZ1bmN0aW9uIFRWKGwpe3ZhciBjLHAsbSxBLGY9MDtmb3IoQT03MiorX1sxNisoZj0wfGFbMTQwKyhsPTB8YVsoYz0xNisobHw9MCl8MCk+''@;'; put 'put ''PjJdKT4+Ml0pPj4zXSxtPTcyKitfW2YrMjQ+PjNdLHA9NzIqK19bZiszMj4+M10sX1tsKzE2Pj4zXT03MiorX1tmKzg+PjNdLF9bbCsyND4+M109QSxfW2wrMzI+PjNdPW0sX1tsKzQwPj4zXT1wLGw9MTshKCgwfGwpPigwfGFbMTgwKyhmPTB8YVtjPj4yXSk+PjJdKSk7KVRWKDB8YVsoMHxh''@;'; put 'put ''W2YrMTg0Pj4yXSkrKGw8PDIpPj4yXSksbD1sKzF8MH1mdW5jdGlvbiBjOWUobCxjKXtjfD0wO3ZhciBrLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wO2s9MHxhWzIxMisoTT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLE09MHxhWzQrKDB8YVtNKzExMj4+Ml0pPj4yXTtkb3tpZigwfE0pe2Zvcihi''@;'; put 'put ''PTB8bXIoMTYrKE08PDQpfDApLEE9OCsobT0wfGg5ZShsLGMpKXwwLGM9MCxwPW07MHxhW3A+PjJdOyljPTB8blgobCxwLGIsYywwfGFbKHc9cCsyNHwwKT4+Ml0/K19bcCszMj4+M106K19bQT4+M10rNi4yODMxODUzMDcxNzk1ODYpLHA9dztpZigoMHxjKT09KDB8TSkpe2FbKGw9MHxhWzE0''@;'; put 'put ''MCsoMHxhW2srMTY+PjJdKT4+Ml0pPj4yXT1iLGFbbCs0Pj4yXT1NLEh0KG0pO2JyZWFrfUJyKDkwNzQyLDkwNzUyLDc2Niw5MDc2MSl9fXdoaWxlKDApO3JldHVybiAwfGt9ZnVuY3Rpb24gdFgobCl7SHQoMHxhWzE0MCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSl9ZnVuY3Rpb24gZjllKGwp''@;'; put 'put ''e3ZhciBjO0h0KDB8YVsxMTIrKDB8YVsoYz0xNisobHw9MCl8MCk+PjJdKT4+Ml0pLEh0KDB8YVsxMzIrKDB8YVtjPj4yXSk+PjJdKSxDYShsLDEzNzQ0Nyl9ZnVuY3Rpb24gaDllKGwsYyl7Y3w9MDt2YXIgTSxELGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoRD0wfG1yKDI0Kygy''@;'; put 'put ''NCooTT0wfGFbYVsxMTIrKDB8YVsoaz0xNisobHw9MCl8MCk+PjJdKT4+Ml0+PjJdKXwwKXwwKSx3PTAsYj0wfEZzKGMsbCk7YjspKDB8KHA9MHxhWygyPT0oMHwobT0zJmFbYj4+Ml0pKT9iOmIrLTQ4fDApKzQwPj4yXSkpPT0oMHxsKSYmKHA9MHxhWygzPT0oMHxtKT9iOmIrNDh8MCkrNDA+''@;'; put 'put ''PjJdKSxBPStfWyhwPTB8YVsxMzIrKDB8YVtwKzE2Pj4yXSk+PjJdKT4+M10tK19bKG09MHxhWzEzMisoMHxhW2s+PjJdKT4+Ml0pPj4zXSxmPStfW3ArOD4+M10tK19bbSs4Pj4zXSxhW0QrKDI0Knd8MCk+PjJdPWIsX1tEKygyNCp3fDApKzg+PjNdPStxMigrZiwrQSksX1tEKygyNCp3fDAp''@;'; put 'put ''KzE2Pj4zXT1mKmYrQSpBLHc9dysxfDAsYj0wfFRzKGMsYixsKTsoMHx3KSE9KDB8TSkmJkJyKDkwNzc1LDkwNzUyLDY0Miw5MDc4NCksSTEoRCxNLDI0LDY3KTtlOmRve2lmKCgwfE0pPjEpe2I9TSstMXwwLHA9MDt0OmZvcig7Oyl7aWYoKDB8cCk+PSgwfGIpKWJyZWFrIGU7Zm9yKEE9K19b''@;'; put 'put ''RCsoMjQqcHwwKSs4Pj4zXSx3PW09cCsxfDA7ISgoMHx3KT49KDB8TSl8fCtfW0QrKDI0Knd8MCkrOD4+M10hPUEpOyl3PXcrMXwwO2lmKCgwfHcpIT0oMHxtKSlmb3IoZj0oZj0oKGY9KDB8dyk9PSgwfE0pPzMuMTQxNTkyNjUzNTg5NzkzOitfW0QrKDI0Knd8MCkrOD4+M10pLUEpLysody1w''@;'; put 'put ''fDApKT4uMDM0OTA2NTg1MDM5ODg2NTk/LjAzNDkwNjU4NTAzOTg4NjU5OmYsQT0wOzspe2lmKCgwfHApPj0oMHx3KSljb250aW51ZSB0O19bKGs9RCsoMjQqcHwwKSs4fDApPj4zXT0rX1trPj4zXStBLEErPWYscD1wKzF8MH1lbHNlIHA9bX19fXdoaWxlKDApO3JldHVybiAwfER9ZnVuY3Rp''@;'; put 'put ''b24gblgobCxjLGYscCxtKXtmfD0wLHB8PTA7dmFyIGssUixHLEE9MCx3PTAsYj0wLE09MCxEPTAsSz0wO2ZvcihSPShNPTB8VHRbMTY4KyhEPTB8YVsxNisoYj0wfGFbKGN8PTApPj4yXSk+PjJdKT4+MV0pPDwxNj4+MTYsKDB8KEE9MHxhWygyPT0oMHwodz0zJmFbYj4+Ml0pKT9iOmIrLTQ4''@;'; put 'put ''fDApKzQwPj4yXSkpPT0oMHwobHw9MCkpJiYoQT0wfGFbKDM9PSgwfHcpP2I6Yis0OHwwKSs0MD4+Ml0pLG09KG09KChtPSttKS0oRz0rX1tjKzg+PjNdKSkvKyhNPDwxNj4+MTYpKT4uMDM0OTA2NTg1MDM5ODg2NTk/LjAzNDkwNjU4NTAzOTg4NjU5Om0saz0oTT1BPj4+MD5sPj4+MCk/bTot''@;'; put 'put ''bSxjPU0/MTotMSxiPTAsQT0wfGFbRCsxNzI+PjJdLHc9TT9wOnArLTErUnwwLG09TT9HOm0qKyhSKy0xfDApK0c7ISgoMHxiKT49KDB8UikpOylhW2YrKHc8PDQpPj4yXT1EPTB8YVtBPj4yXSxhW2YrKHc8PDQpKzQ+PjJdPWFbKCgwfGFbMTY0KygwfGFbMTYrKDB8YVsoSz0zPT0oMHwoTT0z''@;'; put 'put ''JmFbRD4+Ml0pKT9EOkQrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk9PSgwfGwpP0s6Mj09KDB8TSk/RDpEKy00OHwwKSs0MD4+Ml0sX1tmKyh3PDw0KSs4Pj4zXT1tLGI9YisxfDAsQT1BKzR8MCx3PXcrY3wwLG0rPWs7cmV0dXJuIFIrcHwwfWZ1bmN0aW9uIGlYKGwsYyxmKXtjfD0wO3ZhciBw''@;'; put 'put ''PTA7cD0wfHNpKGx8PTAsMCxmfD0wLDApO2Rve2lmKDB8cCl7aWYobD0wfEZvKGwscCkscD0wfHNpKGMsMCxmLDApKXtCbChjLHAsbCk7YnJlYWt9c2koYywwLGYsbCk7YnJlYWt9fXdoaWxlKDApfWZ1bmN0aW9uIG9YKGwsYyl7dmFyIGYscDtyZXR1cm4gZjAoYz0wfE1yKGx8PTAsY3w9MCwx''@;'; put 'put ''KSwxMzc0NDcsMzA0LDEpLHA9MHxtcigzMiksYVsxMTIrKDB8YVsoZj1jKzE2fDApPj4yXSk+PjJdPXAsbD0wfFFuKCgwfGFyWzE3NisoMHxhW2wrMTY+PjJdKT4+MV0pPDwzKSxhWzEzMisoMHxhW2Y+PjJdKT4+Ml09bCwwfGN9ZnVuY3Rpb24gZDllKGwsYyxmLHApe2N8PTAscHw9MDt2YXIg''@;'; put 'put ''YixrLE0sRCxSLEcsbT0wLEE9MCx3PTA7Rz1vZSxvZT1vZSs4MHwwLE09Rys1NnwwLGs9RyszMnwwLFI9RyxEPUcrNjR8MCxiPTB8Rm8obHw9MCxBPTB8YVs0KyhmfD0wKT4+Ml0pO2Rve2lmKDB8dWVbYj4+MF0pe2lmKCEoKDB8YVtmPj4yXSk9PSgwfGwpfHwoMHwoZj0wfEZvKDB8UzEobCks''@;'; put 'put ''QSkpKSE9KDB8YikmJjB8WmkoYixmKSkpYnJlYWs7aWYodWVbRD4+MF09MCxmPVIrOHwwLEE9UisxNnwwLHc9UisyNHwwLGFbaz4+Ml09UixhW2srND4+Ml09ZixhW2srOD4+Ml09QSxhW2srMTI+PjJdPXcsYVtrKzE2Pj4yXT1ELCgwfCRhKGIsOTA5MzcsaykpPD0zKXthW00+PjJdPTB8JHIo''@;'; put 'put ''bCksYVtNKzQ+PjJdPWIsWHIoMCw5MDk1NSxNKTticmVha30obT0rX1syMzI5M10pPjAmJihfW1I+PjNdPStfW1I+PjNdL20sX1tmPj4zXT0rX1tmPj4zXS9tLF9bQT4+M109K19bQT4+M10vbSxfW3c+PjNdPStfW3c+PjNdL20pLHVlWzExOSsoMHxhW2MrMTY+PjJdKT4+MF09KGY9MHx1ZVtE''@;'; put 'put ''Pj4wXSk8PDI0Pj4yND09MzM/MzpmPDwyND4+MjQ9PTYzPzI6MSxhW3A+PjJdPWFbUj4+Ml0sYVtwKzQ+PjJdPWFbUis0Pj4yXSxhW3ArOD4+Ml09YVtSKzg+PjJdLGFbcCsxMj4+Ml09YVtSKzEyPj4yXSxhW3ArMTY+PjJdPWFbUisxNj4+Ml0sYVtwKzIwPj4yXT1hW1IrMjA+PjJdLGFbcCsy''@;'; put 'put ''ND4+Ml09YVtSKzI0Pj4yXSxhW3ArMjg+PjJdPWFbUisyOD4+Ml19fXdoaWxlKDApO29lPUd9ZnVuY3Rpb24gR0QobCxjKXtjfD0wO3ZhciBtLGY9MCxwPTA7bD0wfFR0WzE2OCsocD0wfGFbKG09MTYrKGx8PTApfDApPj4yXSk+PjFdLChwPTB8YVtwKzE3Mj4+Ml0pPyhmPWw9bDw8MTY+PjE2''@;'; put 'put ''LGw9MHxsMChwLDQrKGw8PDIpfDApKTooZj1sPWw8PDE2Pj4xNixsPTB8UW4oNCsobDw8Mil8MCkpLGFbbCsoZjw8Mik+PjJdPWMsYVsxNzIrKGM9MHxhW20+PjJdKT4+Ml09bCxUdFsoYz1jKzE2OHwwKT4+MV09MSsoMHxUdFtjPj4xXSk8PDE2Pj4xNn1mdW5jdGlvbiBwOWUobCxjKXt2YXIg''@;'; put 'put ''cCxtLGIsZj0wLEE9MCx3PTAsaz0wO2I9b2Usb2U9b2UrNDh8MCx3PWIrMjR8MCxBPWIsbT0wfGFbKDI9PSgwfChmPTMmYVsocD0wfGFbKGN8PTApPj4yXSk+PjJdKSk/cDpwKy00OHwwKSs0MD4+Ml0sZj0wfGFbKDM9PSgwfGYpP3A6cCs0OHwwKSs0MD4+Ml0saz0oOCsoYz0wfHpvKDB8JHIo''@;'; put 'put ''bHw9MCkpKSsoaz0wfHpvKDB8JHIobSkpKSsoMHx6bygwfCRyKGYpKSl8MCk+OTk5LGM9MHwkcihsKSxrPyhmPTB8JHIoZiksaz0wfCRyKG0pLHc9KDB8YVtwPj4yXSk+Pj40LGFbQT4+Ml09YyxhW0ErND4+Ml09ZixhW0ErOD4+Ml09ayxhWyhrPUErMTZ8MCk+PjJdPXcsYVtrKzQ+PjJdPTAs''@;'; put 'put ''YW8oMTkzNzcyLDkwODk1LEEpKTooZj0wfGFbMTIwKygwfGFbZisxNj4+Ml0pPj4yXSxrPTB8YVsxMjArKDB8YVttKzE2Pj4yXSk+PjJdLEE9KDB8YVtwPj4yXSk+Pj40LGFbdz4+Ml09YyxhW3crND4+Ml09ZixhW3crOD4+Ml09ayxhWyhrPXcrMTZ8MCk+PjJdPUEsYVtrKzQ+PjJdPTAsYW8o''@;'; put 'put ''MTkzNzcyLDkwOTE0LHcpKSxvZT1ifWZ1bmN0aW9uIHY5ZShsLGMpe3ZhciBwLG0sdyxiLGY9MCxBPTA7Yj1vZSxvZT1vZSsxNnwwLGY9YixBPTB8YVthWzE0MCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT4+Ml0sdz0wfGZ1bmN0aW9uIEZzZShsLGMpe2x8PTAsY3w9MDt2YXIgcCxtLEEsZj0w''@;'; put 'put ''LHc9MCxiPTA7LTE9PStfWzIzMjQzXT8odz0wfE5vKGwpLF9bMjMyNDNdPS4yKitfWzIzMjQxXSooZj0rX1syMzI0Ml0pKitGMCgrICsoMHx3KSksdz0xKToodz0wLGY9K19bMjMyNDJdKSxfW2MrOD4+M109K2xYKEE9MHxhWzQ2NTA0XSksX1tjKzE2Pj4zXT1mLF9bYysyND4+M109K19bMjMy''@;'; put 'put ''NDBdLGFbYz4+Ml09bD0ocD0wfGFbNDY0NzhdKS1BfDAsbT0wfGFbNDY0NzddO2Rve2lmKCgwfG0pPi0xKXtpZigoMHxtKTw9KDB8QSkpe2FbNDY1MDVdPW0sbD0wLGI9MTA7YnJlYWt9KDB8bSk8PSgwfHApJiYoYVs0NjUwNV09QSxsPW0tQXwwLGI9MTApfWVsc2UgYVs0NjUwNV09QSxiPTEw''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiAxMD09KDB8YikmJihhW2MrMzI+PjJdPWwpLDB8d30obCxjfD0wKSxmdW5jdGlvbiBIc2UobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxI''@;'; put 'put ''ZT0wLGplPTAsZXQ9MDtmb3IoTGU9MHxObyhjfD0wKSxIZT0wfGFbNCsoMHxhWzE0MCsoMHxhW2MrMTY+PjJdKT4+Ml0pPj4yXSxPZT0wfEx0KGMpLEs9MCxwZT0wLG09MCxiPTAsRD0wO09lOykwfHVlWzExOSsocD0wfGFbT2UrMTY+PjJdKT4+MF0/KEE9K19bKHA9MHxhW3ArMTMyPj4yXSk+''@;'; put 'put ''PjNdLEs/KEQ9fn4oKG1lPStfW3ArOD4+M10pPihSPSsoMHxEKSk/bWU6UikscD1+fihBPChHPSsoMHxwZSkpP0E6RyksbT1+fihtZTwoYmU9KygwfG0pKT9tZTpiZSksYj1+fihBPihCZT0rKDB8YikpP0E6QmUpKTooRD1tPX5+K19bcCs4Pj4zXSxwPWI9fn5BKSxLPUsrMXwwKTpwPXBlLE9l''@;'; put 'put ''PTB8enQoYyxPZSkscGU9cDtpZihBPStfWzIzMjQyXSooK0YwKCsgKyhMZS1IZXwwKSkrMSksX1syMzI0OV09bWU9LjYqQSxfWzIzMjQ4XT1tZSwxIT0oMHxLKSlpZigoMHxLKT4xKXtiZT0uNSorKGIrcGV8MCksQmU9LjUqKyhEK218MCksdz0oTT0xLjIqKGs9KyhELW18MCkpKSooRz0xLjIq''@;'; put 'put ''KFI9KyhiLXBlfDApKSkvKEE9Mi40KkEqbWUpO2Rve2lmKHc+PTEpX1syMzI0OF09dz0uNipSLEE9LjYqayxldD0yMDtlbHNle2lmKHc+MCl7QT0yKitGMCgrdyksX1syMzI0OF09dz1HL0EsQT1NL0EsZXQ9MjA7YnJlYWt9aWYoRz4wKXtfWzIzMjQ4XT13PS42KlIsQT1BL0cqLjUsZXQ9MjA7''@;'; put 'put ''YnJlYWt9TT4wPyhfWzIzMjQ4XT13PUEvTSouNSxBPS42KmssZXQ9MjApOihBPW1lLHc9bWUpfX13aGlsZSgwKTsyMD09KDB8ZXQpJiYoX1syMzI0OV09QSksbWU9K3EyKCtBLCt3KSx3Lz0rbGEoK21lKSxfWzIzMjQ4XT13LEEvPStJYSgrbWUpLF9bMjMyNDldPUF9ZWxzZSBiZT0wLEJlPTAs''@;'; put 'put ''dz1tZSxBPW1lO2Vsc2UgYmU9KygwfHBlKSxCZT0rKDB8bSksdz1tZSxBPW1lO19bMjMyNTBdPXcqdyxfWzIzMjUxXT1BKkEsMj09KDB8YVs0NjQ4OF0pP3A9MHxhWzQ2NDc2XToocD0wfGNaKCkscD0oMHxkbigwKSlecCksZloocCk7ZTpkb3tpZihmKXtmb3IoOzB8YVtmPj4yXTspbWU9K2xh''@;'; put 'put ''KCsgK19bKE9lPWYrOHwwKT4+M10pKitfWzIzMjQ4XStiZSxfWyhMZT0wfGFbMTMyKyhIZT0wfGFbMTYrKDB8YVtmKzQ+PjJdKT4+Ml0pPj4yXSk+PjNdPW1lLF9bTGUrOD4+M109K0lhKCsgK19bT2U+PjNdKSorX1syMzI0OV0rQmUsdWVbSGUrMTE5Pj4wXT0xLGY9ZisxNnwwO2ZvcihrPS4x''@;'; put 'put ''KmJlLE09LjEqQmUscGU9MHxMdChjKTs7KXtpZighcGUpYnJlYWsgZTswPT0oMHxhWzgrKDB8YVsxMTIrKGY9MHxhWyhLPXBlKzE2fDApPj4yXSk+PjJdKT4+Ml0pJiYhKDB8YVtmKzIxMj4+Ml0pfHwoZXQ9MzIpO2Rve2lmKDMyPT0oMHxldCkpe2lmKGV0PTAsMHx1ZVtmKzExOT4+MF0pe19b''@;'; put 'put ''KEhlPTB8YVtmKzEzMj4+Ml0pPj4zXT0rX1tIZT4+M10tYmUsX1soSGU9SGUrOHwwKT4+M109K19bSGU+PjNdLUJlO2JyZWFrfWZvcihEPTB8RnMoYyxwZSksZj0wLHc9MCxBPTA7RDspe209MHxhWyhwPTI9PSgwfChiPTMmYVtEPj4yXSkpP0Q6RCstNDh8MCkrNDA+PjJdLGI9Mz09KDB8Yik/''@;'; put 'put ''RDpEKzQ4fDA7ZG97aWYoKDB8bSkhPSgwfGFbYis0MD4+Ml0pJiYwIT0oMHx1ZVsxMTkrKGplPTB8YVsxNisoMHxhWygoMHxtKT09KDB8cGUpP2I6cCkrNDA+PjJdKT4+Ml0pPj4wXSkpe2lmKGYpe3c9KCtfWyhIZT0wfGFbamUrMTMyPj4yXSk+PjNdK3cqKEc9KygwfGYpKSkvKG1lPSsoMHwo''@;'; put 'put ''Zj1mKzF8MCkpKSxBPSgrX1tIZSs4Pj4zXStBKkcpL21lO2JyZWFrfWY9MSx3PStfWyhIZT0wfGFbamUrMTMyPj4yXSk+PjNdLEE9K19bSGUrOD4+M107YnJlYWt9fXdoaWxlKDApO0Q9MHxUcyhjLEQscGUpfWRve2lmKCgwfGYpPD0xKXtpZigxPT0oMHxmKSl7X1soZj0wfGFbMTMyKyhwPTB8''@;'; put 'put ''YVtLPj4yXSk+PjJdKT4+M109Ljk4KncrayxBPS45KkErTTticmVha31BPTYuMjgzMTg1MzA3MTc5NTg2KiskYygpLEc9KG1lPS45KiskYygpKSorX1syMzI0OF0qK2xhKCtBKSxfWyhmPTB8YVsxMzIrKHA9MHxhW0s+PjJdKT4+Ml0pPj4zXT1HLEE9K19bMjMyNDldKm1lKitJYSgrQSk7YnJl''@;'; put 'put ''YWt9X1soZj0wfGFbMTMyKyhwPTB8YVtLPj4yXSk+PjJdKT4+M109d313aGlsZSgwKTtfW2YrOD4+M109QSx1ZVtwKzExOT4+MF09MX19d2hpbGUoMCk7cGU9MHx6dChjLHBlKX19ZWxzZXtpZihmPTB8THQoYyksIUspZm9yKDs7KXtpZighZilicmVhayBlO21lPStfWzIzMjQ4XSxtZT0oMior''@;'; put 'put ''JGMoKS0xKSptZSxfW2FbMTMyKygwfGFbKGV0PWYrMTZ8MCk+PjJdKT4+Ml0+PjNdPW1lLG1lPStfWzIzMjQ5XSxtZT0oMiorJGMoKS0xKSptZSxfWzgrKDB8YVsxMzIrKDB8YVtldD4+Ml0pPj4yXSk+PjNdPW1lLGY9MHx6dChjLGYpfWZvcig7Oyl7aWYoIWYpYnJlYWsgZTswfHVlWzExOSso''@;'; put 'put ''bT0wfGFbKHA9ZisxNnwwKT4+Ml0pPj4wXT8oX1soZXQ9MHxhW20rMTMyPj4yXSk+PjNdPStfW2V0Pj4zXS1iZSxfWyhldD1ldCs4fDApPj4zXT0rX1tldD4+M10tQmUpOihtZT0rX1syMzI0OF0sbWU9KDIqKyRjKCktMSkqbWUsX1thWzEzMisoMHxhW3A+PjJdKT4+Ml0+PjNdPW1lLG1lPStf''@;'; put 'put ''WzIzMjQ5XSxtZT0oMiorJGMoKS0xKSptZSxfWzgrKDB8YVsxMzIrKDB8YVtwPj4yXSk+PjJdKT4+M109bWUpLGY9MHx6dChjLGYpfX19d2hpbGUoMCk7X1tsPj4zXT1iZSxfW2wrOD4+M109QmV9KGYsbCxBKSxwPStfW2Y+PjNdLG09K19bZis4Pj4zXTtlOmRve2lmKDB8YVs0NjQ3NF0pe2Zv''@;'; put 'put ''cihmMWUoZj0wfGwxZSgwfE5vKGwpKSwwfE5vKGwpKSxjPTA7ISgoMHxjKT49KDB8YVs0NjUwNV0pKTspQTllKGwsK2xYKGMpLEEsZiksYz1jKzF8MDtkMWUoZil9ZWxzZSBmb3IoYz0wOzspe2lmKCgwfGMpPj0oMHxhWzQ2NTA1XSkpYnJlYWsgZTtzWChsLCtsWChjKSxBKSxjPWMrMXwwfX13''@;'; put 'put ''aGlsZSgwKTtlOmRve2lmKDAhPXB8MCE9bSlmb3IoYz0wfEx0KGwpOzspe2lmKCFjKWJyZWFrIGU7X1soQT0wfGFbMTMyKygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdPStfW0E+PjNdK3AsX1soQT1BKzh8MCk+PjNdPStfW0E+PjNdK20sYz0wfHp0KGwsYyl9fXdoaWxlKDApOzB8dyYmZnVuY3Rp''@;'; put 'put ''b24geTllKCl7X1syMzI0M109LTF9KCksb2U9Yn1mdW5jdGlvbiBsWChsKXt2YXIgYztyZXR1cm4rICtfWzIzMjQzXSorKChjPTB8YVs0NjQ3OF0pLShsfD0wKXwwKS8rKDB8Yyl9ZnVuY3Rpb24gQTllKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7aWYoISgo''@;'; put 'put ''Yz0rYyk8PTApKXtmb3IoZnVuY3Rpb24gaDFlKGwpe3ZhciBjPTA7bWlbNjMmYVsoYz0wfGFbKGx8PTApPj4yXSk+PjJdXShjLDAsNjQpLGFbbCsyMD4+Ml09YVtsKzE2Pj4yXSxhW2wrOD4+Ml09Yz0wfGFbbCs0Pj4yXSxhW2MrND4+Ml09YVtjPj4yXX0ocCksbT0wfEx0KGwpO207KWFbKEE9''@;'; put 'put ''MTYrKDB8YVsxMTIrKHc9MHxhW20rMTY+PjJdKT4+Ml0pfDApPj4yXT0wLGFbQSs0Pj4yXT0wLGFbQSs4Pj4yXT0wLGFbQSsxMj4+Ml09MCxiSyhwLEE9fn4reWMoKyArX1sodz0wfGFbdysxMzI+PjJdKT4+M10vKGI9K19bMjMyNDVdKSksfn4reWMoKyArX1t3Kzg+PjNdL2IpLG0pLG09MHx6''@;'; put 'put ''dChsLG0pO2ZvcihBPTB8THQobCk7QTspe2ZvcihtPTB8eTAobCxBKTttOykoMHxBKSE9KDB8KHc9MHxhWygyPT0oMyZhW20+PjJdfDApP206bSstNDh8MCkrNDA+PjJdKSkmJmNYKEEsdyxtKSxtPTB8azAobCxtKTtBPTB8enQobCxBKX0oZnVuY3Rpb24gcDFlKGwsYyl7IWZ1bmN0aW9uIF9U''@;'; put 'put ''KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEscD0wLG09MCx3PTA7QT0zMisobHw9MCl8MCxtPTB8bWlbNjMmYVtsPj4yXV0obCwwLDEyOCk7ZG97aWYoIW0pe3A9MDticmVha313PTB8YVtBPj4yXSxwPW0sbT0wfG1pWzYzJmFbbD4+Ml1dKGwsbSw4KSxwPTB8bWlbNjMmY10oMD09KDB8dyk/bDp3''@;'; put 'put ''LHAsZil9d2hpbGUoKDB8cCk+PTApfSgwfGFbKGx8PTApPj4yXSxjfD0wLGwpfSkocCwyMyksV0QobCxjLGYpfX1mdW5jdGlvbiBzWChsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MDtpZighKChjPStjKTw9MCkpe2ZvcihwPTB8THQobCk7cDspYVsoQT0xNisoMHxhWzExMisoMHxh''@;'; put 'put ''W3ArMTY+PjJdKT4+Ml0pfDApPj4yXT0wLGFbQSs0Pj4yXT0wLGFbQSs4Pj4yXT0wLGFbQSsxMj4+Ml09MCxwPTB8enQobCxwKTtmb3IoQT0wfEx0KGwpO0E7KXtmb3IocD1BO3A9MHx6dChsLHApOyl1WChBLHApO2ZvcihwPTB8eTAobCxBKTtwOykoMHxBKSE9KDB8KG09MHxhWygyPT0oMyZh''@;'; put 'put ''W3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdKSkmJmNYKEEsbSxwKSxwPTB8azAobCxwKTtBPTB8enQobCxBKX1XRChsLGMsZil9fWZ1bmN0aW9uIHVYKGwsYyl7dmFyIGYscCxtLEE7SVYobHw9MCxjfD0wLGY9K19bKEE9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXS0rX1sobT0w''@;'; put 'put ''fGFbMTMyKygwfGFbbCsxNj4+Ml0pPj4yXSk+PjNdLHA9K19bQSs4Pj4zXS0rX1ttKzg+PjNdLHAqcCtmKmYpfWZ1bmN0aW9uIGNYKGwsYyxmKXtmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoQT1wPStfWyhrPTB8YVsxMzIrKDB8YVsoYj0xNisoY3w9MCl8MCk+PjJdKT4+''@;'; put 'put ''Ml0pPj4zXS0rX1soYz0wfGFbMTMyKygwfGFbKGw9MTYrKGx8PTApfDApPj4yXSk+PjJdKT4+M10sdz1tPStfW2srOD4+M10tK19bYys4Pj4zXSxwKj1wLG0qPW07MD09KHArPW0pOylBPXA9Kyg1LSgoMHxEMSgpKSUxMHwwKXwwKSx3PW09Kyg1LSgoMHxEMSgpKSUxMHwwKXwwKSxwKj1wLG0q''@;'; put 'put ''PW07bT0rRjAoK3ApLHA9K19bMTI4KyhjPTB8YVtmKzE2Pj4yXSk+PjNdLF9bKGI9MTYrKGs9MHxhWzExMisoMHxhW2I+PjJdKT4+Ml0pfDApPj4zXT0rX1tiPj4zXS0oQSo9cD0wfGFbNDY0NzVdPyhtLStfW2MrMTM2Pj4zXSkqcC9tOnAqbS8rX1tjKzEzNj4+M10pLF9bKGs9aysyNHwwKT4+''@;'; put 'put ''M109K19baz4+M10tKHcqPXApLF9bKGI9MTYrKGs9MHxhWzExMisoMHxhW2w+PjJdKT4+Ml0pfDApPj4zXT0rX1tiPj4zXStBLF9bKGs9aysyNHwwKT4+M109K19baz4+M10rd31mdW5jdGlvbiBXRChsLGMsZil7dmFyIEQsUixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zm9yKFI9KGM9''@;'; put 'put ''K2MpKmMsRD0wPT0oMHwoZnw9MCkpLE09MHxMdChsfD0wKTtNOyl7aWYoISgyJnVlWzExOSsoaz0wfGFbTSsxNj4+Ml0pPj4wXSkpeyhtPShBPStfWzI0KyhiPTB8YVtrKzExMj4+Ml0pPj4zXSkqQSsocD0rX1tiKzE2Pj4zXSkqcCk8Uj8odz0rX1soZj0wfGFbaysxMzI+PjJdKT4+M10rcCxw''@;'; put 'put ''PStfW2YrOD4+M10rQSk6KG09Yy8rRjAoK20pLHc9K19bKGY9MHxhW2srMTMyPj4yXSk+PjNdK20qcCxwPStfW2YrOD4+M10rbSpBKTtkb3tpZighRCl7aWYobT0rRjAoKyhwKnAvK19bMjMyNTFdK3cqdy8rX1syMzI1MF0pKSwwPT0oMHxhW2IrOD4+Ml0pJiYwPT0oMHxhW2srMjEyPj4yXSkp''@;'; put 'put ''e19bZj4+M109dy9tLHAvPW07YnJlYWt9aWYobT49MSl7X1tmPj4zXT0uOTUqdy9tLHA9Ljk1KnAvbTticmVha31fW2Y+PjNdPXc7YnJlYWt9X1tmPj4zXT13fXdoaWxlKDApO19bZis4Pj4zXT1wfU09MHx6dChsLE0pfX1mdW5jdGlvbiBJVihsLGMsZixwLG0pe2x8PTAsY3w9MCxwPStwO3Zh''@;'; put 'put ''ciBBPTAsdz0wLGI9MDtmb3IoQT1mPStmLGY9bT0rbTswPT1mOylBPWY9Kyg1LSgoMHxEMSgpKSUxMHwwKXwwKSxmPShwPSsoNS0oKDB8RDEoKSklMTB8MCl8MCkpKnArZipmOzB8YVs0NjQ3NV0/KG09K0YwKCtmKSxmPStfWzIzMjQ3XS8obSpmKSk6Zj0rX1syMzI0N10vZiwwPT0oMHxhWzgr''@;'; put 'put ''KGw9MHxhWzExMisoYj0wfGFbbCsxNj4+Ml0pPj4yXSk+PjJdKSYmMD09KDB8YVtiKzIxMj4+Ml0pJiYwPT0oMHxhWzgrKDB8YVsxMTIrKHc9MHxhW2MrMTY+PjJdKT4+Ml0pPj4yXSkmJihmPTA9PSgwfGFbdysyMTI+PjJdKT8xMCpmOmYpLF9bKGM9MTYrKGI9MHxhWzExMisoMHxhW2MrMTY+''@;'; put 'put ''PjJdKT4+Ml0pfDApPj4zXT0rX1tjPj4zXSsobT1mKkEpLF9bKGI9YisyNHwwKT4+M109K19bYj4+M10rKEE9ZipwKSxfWyhiPWwrMTZ8MCk+PjNdPStfW2I+PjNdLW0sX1soYj1sKzI0fDApPj4zXT0rX1tiPj4zXS1BfWZ1bmN0aW9uIGU4KGwsYyxmLHApe3B8PTA7dmFyIG09MCxBPTAsdz0w''@;'; put 'put ''LGI9MCxrPTAsTT0wLEQ9MDtpZihsPTB8ZnVuY3Rpb24gQ0sobCxjLGYpe2x8PTAsZnw9MDt2YXIgcCxtO3JldHVybiBwPW9lLG9lPW9lKzMyfDAsYVsobT1wKT4+Ml09Y3w9MCxhW20rND4+Ml09ZixmPTB8bWlbNjMmYVsoZj0wfGFbbD4+Ml0pPj4yXV0oZixtLDQpLG9lPXAsMHxmfShsfD0w''@;'; put 'put ''LGN8PTAsZnw9MCksMCE9KDB8cCkmMCE9KDB8bCkpe2s9bCs4fDA7ZG97Zm9yKGI9MTYrKGY9MHxhW3A+PjJdKXwwLGw9aztsPTB8YVtsPj4yXTspKHc9KEE9K19bOCsoRD0wfGFbMTMyKygwfGFbMTYrKGM9MHxhW2w+PjJdKT4+Ml0pPj4yXSk+PjNdLStfWzgrKE09MHxhWzEzMisoMHxhW2I+''@;'; put 'put ''PjJdKT4+Ml0pPj4zXSkqQSsobT0rX1tEPj4zXS0rX1tNPj4zXSkqbSk8K19bMjMyNDZdJiZJVihmLGMsbSxBLHcpLGw9bCs0fDA7cD0wfGFbcCs0Pj4yXX13aGlsZSgwIT0oMHxwKSl9fWZ1bmN0aW9uIFZzZShsLGMpe2N8PTA7dmFyIEEsZj0wLHA9MCx3PTA7QT1vZSxvZT1vZSsxNnwwLDAh''@;'; put 'put ''PSgwfChmPTB8TGkobHw9MCw5MjUwNykpKSYmMCE9KDB8dWVbZj4+MF0pfHwoZj05MTEyNSkscD0wfFVzKGYsNTgpO2Rve2lmKHApe2lmKCgwfHApIT0oMHxmKSYmKCgwfHVlW2Y+PjBdKS00OHwwKT4+PjA+PTEwKXtwPTA7YnJlYWt9dz0wfGUzKGYpLGY9cCsxfDAscD0oMHx3KT4wP3c6MH1l''@;'; put 'put ''bHNlIHA9MH13aGlsZSgwKTswIT0oMHxwKSYmISgwfGZ1bmN0aW9uIGpzZShsLGMsZil7Y3w9MCxmfD0wO3ZhciB3LEcsSyxwZSxwPTAsbT0wLEE9MCxiPTAsaz0wLE09MCxEPTAsUj0wO3BlPW9lLG9lPW9lKzY0fDAsRz1wZSxBPXBlKzQwfDAsSz0wfE5vKGx8PTApLHc9MHxiZihsKSxJYyhB''@;'; put 'put ''LGwpLGFbNDY4NDJdPWFbQT4+Ml0sYVs0Njg0M109YVtBKzQ+PjJdLGFbNDY4NDRdPWFbQSs4Pj4yXSwwfHVlWzE4NzM3Nl0mJihXbls0Njg0Ml09LjAxMzg4ODg4ODg4ODg4ODg4OCorV25bNDY4NDJdLFduWzQ2ODQzXT0uMDEzODg4ODg4ODg4ODg4ODg4KitXbls0Njg0M10pLHA9MHxmdW5j''@;'; put 'put ''dGlvbiBac2UobCl7dmFyIGM9MCxmPTAscD0wLG09MDtmb3IoYz0wLG09MHxMdChsfD0wKTttOyl7Zm9yKHA9bTtmPTB8enQobCxwKTspcD1mLGM9KDB8RFYobSxmKSkrY3wwO209MHx6dChsLG0pfXJldHVybiAwfGN9KGwpO2U6ZG97aWYocCl7bT0oQT1HKSs0MHwwO2Rve2FbQT4+Ml09YVtj''@;'; put 'put ''Pj4yXSxBPUErNHwwLGM9Yys0fDB9d2hpbGUoKDB8QSk8KDB8bSkpO2ZvcihSPStfWyhBPUcrMTZ8MCk+PjNdLE09MiorKDB8dyksRD0xLysoMHx2cihLKy0xfDAsSykpLG09MCxrPVI7Oyl7aWYoISgwIT0oMHxwKSYoMHxtKTwoMHxmKSkpYnJlYWsgZTtmb3IoenNlKEssRyksX1syMzI1NF09''@;'; put 'put ''Yj0rX1syMzI1M10qK19bMTcwXSxfWzIzMjU1XT1NKmIqRCxjPTA7ISgoMHxjKT49KDB8YVs0NjUxMl0pfHwoYj0rR3NlKGMpLGI8PTApKTspe2lmKCEocD0wfFdzZShsLGIpKSl7cD0wO2JyZWFrfWM9YysxfDB9X1tBPj4zXT1iPWsrUixtPW0rMXwwLGs9Yn19ZWxzZSBwPTB9d2hpbGUoMCk7''@;'; put 'put ''cmV0dXJuIG9lPXBlLDB8cH0obCxjLHApKXx8T1gobCxmKSxvZT1BfWZ1bmN0aW9uIHpzZShsLGMpe3ZhciBmLHAsbTtsfD0wLF9bMTcxXT1wPStfWzE2KyhjfD0wKT4+M10sYVszNDRdPWFbYz4+Ml0sX1syMzI1N109bT0rX1tjKzg+PjNdLGFbNDY1MTJdPWFbYyszMj4+Ml0sKGY9K19bYysy''@;'; put 'put ''ND4+M10pPjAmJihfWzE3MF09ZiksX1syMzI1M109cCpwLDA9PW0mJihfWzIzMjU3XT0uMiorRjAoKyArKDB8bCkpKnApfWZ1bmN0aW9uIEdzZShsKXt2YXIgYztyZXR1cm4rICtfWzIzMjU3XSorKChjPTB8YVszNDRdKS0obHw9MCl8MCkvKygwfGMpfWZ1bmN0aW9uIFdzZShsLGMpe2M9K2M7''@;'; put 'put ''dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zm9yKGY9MHxMdChsfD0wKTtmOylhWyh3PTE2KygwfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXSl8MCk+PjJdPTAsYVt3KzQ+PjJdPTAsYVt3Kzg+PjJdPTAsYVt3KzEyPj4yXT0wLGY9MHx6dChsLGYpO2ZvcihmPTAsdz0wfEx0''@;'; put 'put ''KGwpO3c7KXtmb3IobT13O3A9MHx6dChsLG0pOyltPXAsZj0oMHxZc2UodyxwKSkrZnwwO2ZvcihwPTB8eTAobCx3KTtwOylVc2UodywwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pLHA9MHxrMChsLHApO3c9MHx6dChsLHcpfWU6ZG97aWYoZilmb3IoTT1jKmMsbT0w''@;'; put 'put ''fEx0KGwpOzspe2lmKCFtKWJyZWFrIGU7MyE9KDB8dWVbMTE5KyhwPTB8YVttKzE2Pj4yXSk+PjBdKSYmKChrPShBPStfWzI0Kyh3PTB8YVtwKzExMj4+Ml0pPj4zXSkqQSsoYj0rX1t3KzE2Pj4zXSkqYik8TT9fWyhwPTB8YVtwKzEzMj4+Ml0pPj4zXT0rX1twPj4zXStiOihrPStGMCgrayks''@;'; put 'put ''X1socD0wfGFbcCsxMzI+PjJdKT4+M109K19bcD4+M10rYipjL2ssQT1BKmMvayksX1sodz1wKzh8MCk+PjNdPStfW3c+PjNdK0EpLG09MHx6dChsLG0pfWVsc2UgZj0wfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gWXNlKGwsYyl7dmFyIGYscCxtLEE7cmV0dXJuIDB8ZnVuY3Rpb24g''@;'; put 'put ''aFgobCxjLGYscCxtKXtsfD0wLGN8PTAsZj0rZixwPStwLG09K207Zm9yKHZhciBBLHc7MD09bTspZj1tPSsoNS0oKDB8RDEoKSklMTB8MCl8MCksbT0ocD0rKDUtKCgwfEQxKCkpJTEwfDApfDApKSpwK20qbTtyZXR1cm4gQT0wfERWKGwsYyksX1sodz0xNisoYz0wfGFbMTEyKygwfGFbYysx''@;'; put 'put ''Nj4+Ml0pPj4yXSl8MCk+PjNdPStfW3c+PjNdKyhmPShtPSgwPT0oMHxBKT8rX1syMzI1NV06K19bMjMyNTRdKS9tKSpmKSxfWyhjPWMrMjR8MCk+PjNdPStfW2M+PjNdKyhtKj1wKSxfWyhsPTE2KyhjPTB8YVsxMTIrKDB8YVtsKzE2Pj4yXSk+PjJdKXwwKT4+M109K19bbD4+M10tZixfWyhj''@;'; put 'put ''PWMrMjR8MCk+PjNdPStfW2M+PjNdLW0sMHxBfShsfD0wLGN8PTAsZj0rX1soQT0wfGFbMTMyKygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdLStfWyhtPTB8YVsxMzIrKDB8YVtsKzE2Pj4yXSk+PjJdKT4+M10scD0rX1tBKzg+PjNdLStfW20rOD4+M10scCpwK2YqZil9ZnVuY3Rpb24gVXNlKGws''@;'; put 'put ''Yyl7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wOzB8RFYobHw9MCxjfD0wKXx8KEE9K0YwKCsoKGY9K19bOCsoRD0wfGFbMTMyKyh3PTB8YVtjKzE2Pj4yXSk+PjJdKT4+M10tK19bOCsoTT0wfGFbMTMyKyhtPTB8YVtsKzE2Pj4yXSk+PjJdKT4+M10pKmYrKHA9K19b''@;'; put 'put ''RD4+M10tK19bTT4+M10pKnApKSxiPStmWChsKSxiPStmWChjKStiLF9bKGw9MTYrKGM9MHxhW3crMTEyPj4yXSl8MCk+PjNdPStfW2w+PjNdLShwKj1BPShrPUEtYikqay8oKCtfWzE3MV0rYikqQSkpLF9bKGM9YysyNHwwKT4+M109K19bYz4+M10tKGYqPUEpLF9bKGw9MTYrKGM9MHxhW20r''@;'; put 'put ''MTEyPj4yXSl8MCk+PjNdPStfW2w+PjNdK3AsX1soYz1jKzI0fDApPj4zXT0rX1tjPj4zXStmKX1mdW5jdGlvbiBEVihsLGMpe3ZhciB3LGIsZj0wLHA9MCxtPTAsQT0wO3JldHVybiBtPStfWyhiPTB8YVsxMzIrKHc9MHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjNdLStfWyhsPTB8YVsxMzIr''@;'; put 'put ''KGM9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+PjNdLEE9KEE9K19bYis4Pj4zXS0rX1tsKzg+PjNdKTwwPy1BOkEsZj0rX1tjKzMyPj4zXSwobD0wPT0oMHx1ZVsxODczNzZdKSk/KGY9LjUqZioocD0rV25bNDY4NDJdKSxwKj0uNSorX1t3KzMyPj4zXSk6KGY9LjUqZisocD0rV25bNDY4NDJd''@;'; put 'put ''KSxwPS41KitfW3crMzI+PjNdK3ApLChtPDA/LW06bSk8PXArZj8oZj0rX1tjKzQwPj4zXSxsPyhwPS41KmYqKG09K1duWzQ2ODQzXSksZj0uNSorX1t3KzQwPj4zXSptKToocD0uNSpmKyhtPStXbls0Njg0M10pLGY9LjUqK19bdys0MD4+M10rbSksYz1BPD1mK3AmMSk6Yz0wLDB8Y31mdW5j''@;'; put 'put ''dGlvbiBmWChsKXt2YXIgYz0wLGY9MDtyZXR1cm4gYz0rX1szMisobD0wfGFbMTYrKGx8PTApPj4yXSk+PjNdLDB8dWVbMTg3Mzc2XT8oZj0uNSpjKyArV25bNDY4NDJdLGM9LjUqK19bbCs0MD4+M10rICtXbls0Njg0M10pOihmPS41KmMqK1duWzQ2ODQyXSxjPS41KitfW2wrNDA+PjNdKitX''@;'; put 'put ''bls0Njg0M10pLCsgK0YwKCsoYypjK2YqZikpfWZ1bmN0aW9uIE9WKGwpe3ZhciBjO2YwKGx8PTAsMTM3NDYwLDE3NiwxKSxZNyhsKSxjPStjbChsLDB8YVs0NzE3NF0sMSwwKSxfWzEyOCsoMHxhW2wrMTY+PjJdKT4+M109Y31mdW5jdGlvbiBwWChsLGMsZil7Znw9MDt2YXIgcD0wO3JldHVy''@;'; put 'put ''biBmMChjPTB8TXIobHw9MCxjfD0wLDEpLDEzNzQ0NywzMDQsMSkscD0wfG1yKDQwKSxhWzExMisoMHxhWyhsPWMrMTZ8MCk+PjJdKT4+Ml09cCxwPTB8bXIoYVs0NzEzN108PDMpLGFbMTMyKyhsPTB8YVtsPj4yXSk+PjJdPXAsX1tsKzg4Pj4zXT0rX1s4OCsocD0wfGFbZisxNj4+Ml0pPj4z''@;'; put 'put ''XSxfW2wrOTY+PjNdPStfW3ArOTY+PjNdLF9bbCs4MD4+M109K19bcCs4MD4+M10sYVthW2wrMTEyPj4yXT4+Ml09ZiwwfGN9ZnVuY3Rpb24gWUQobCl7dmFyIGM9MCxmPTAscD0wO2ZvcihjPTB8THQobHw9MCk7YzspcD0wfGFbMTMyKyhmPTB8YVtjKzE2Pj4yXSk+PjJdLF9bKGY9MHxhWzEz''@;'; put 'put ''MisoMHxhWzE2KygwfGFbYVtmKzExMj4+Ml0+PjJdKT4+Ml0pPj4yXSk+PjNdPStfW3A+PjNdLF9bZis4Pj4zXT0rX1twKzg+PjNdLGM9MHx6dChsLGMpfWZ1bmN0aW9uICQ3KGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxiLEQsUixHLEssTSxwPTAsbT0wLEE9MCxrPTA7Sz1vZSxvZT1v''@;'; put 'put ''ZSs0OHwwLG09SyxEPUsrMzJ8MCxiPUsrMjh8MCxHPUsrMjB8MCxSPUsrMTZ8MCxhWyhBPUsrMjR8MCk+PjJdPTAsYVtHPj4yXT0wLGFbUj4+Ml09MCxwPTB8YVs0NzEzN10sTT0xPT0oMHxhWyh3PWMrMTM2fDApPj4yXSk/MHxDWChsLHAsUik6MHxDWChsLHAsMCk7ZG97aWYoKDB8YVtjKzEy''@;'; put 'put ''ND4+Ml0pPi0xKXtpZigoMHxhW2MrMTYwPj4yXSk+MCl7YVttPj4yXT1hW2Y+PjJdLGFbbSs0Pj4yXT1hW2YrND4+Ml0sYVttKzg+PjJdPWFbZis4Pj4yXSxhW20rMTI+PjJdPWFbZisxMj4+Ml0saz0wfF9YKGwsbSxBLEcpO2JyZWFrfWFbbT4+Ml09YVtmPj4yXSxhW20rND4+Ml09YVtmKzQ+''@;'; put 'put ''PjJdLGFbbSs4Pj4yXT1hW2YrOD4+Ml0sYVttKzEyPj4yXT1hW2YrMTI+PjJdLGs9MHxfWChsLG0sMCwwKTticmVha31rPTB9d2hpbGUoMCk7c3dpdGNoKHA9MHxmdW5jdGlvbiBDOWUobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO3c9MHxtcigwfHZyKCh3PTB8YVs0NzEzN10pPDwz''@;'; put 'put ''LDB8Tm8obHw9MCkpKTtlOmRve2lmKDB8c2kobCwxLDEwMjYyMywwKSlmb3IocD0wfEx0KGwpOzspe2lmKCFwKWJyZWFrIGU7Yz0wfGFbcCsxNj4+Ml07dDpkb3tpZigwfHVlW2MrMTE5Pj4wXSlmb3IobT0wfGFbNDcxMzddLEE9MHx2cihtLDB8YVtjKzEyMD4+Ml0pLGY9YysxMzJ8MCxjPTA7''@;'; put 'put ''Oyl7aWYoKDB8Yyk+PSgwfG0pKWJyZWFrIHQ7X1t3KyhBK2M8PDMpPj4zXT0rX1soMHxhW2Y+PjJdKSsoYzw8Myk+PjNdLGM9YysxfDB9fXdoaWxlKDApO3A9MHx6dChsLHApfX13aGlsZSgwKTtyZXR1cm4gMHx3fShsKSxhW0Q+PjJdPXAsMHxhW3c+PjJdKXtjYXNlIDE6Y2FzZSAwOnIyZSgw''@;'; put 'put ''fGFbNDcxMzddLE0sMHxhW1I+PjJdLGMsMCxrLHAsMHxhW0E+PjJdLDB8YVtHPj4yXSxiKTticmVhaztjYXNlIDU6IWZ1bmN0aW9uIGJYKGwsYyxmLHApe2x8PTAsZnw9MDt2YXIgYixtPTAsQT0wLHc9MCxrPTAsTT0wO2ZvcihiPTB8YVsoY3w9MCk+PjJdLGFbKHB8PTApPj4yXT0wLGs9MHx2''@;'; put 'put ''cihiLGwpLHA9MDs7KXtpZigoMHxwKT49KDB8aykpe3A9MSxtPTE7YnJlYWt9X1tmKyhwPDwzKT4+M109MTAwKitSaCgpLHA9cCsxfDB9Zm9yKDshKCgwfG0pPj0oMHxiKSk7KXtmb3Iodz0wfHZyKG0sbCksQT0wOyEoKDB8QSk+PSgwfGwpKTspe2lmKCgoTT0rX1tmKyhBPDwzKT4+M10tK19b''@;'; put 'put ''ZisoQSt3PDwzKT4+M10pPj0wP006LU0pPjFlLTE2KXtwPTAsbT1iO2JyZWFrfUE9QSsxfDB9bT1tKzF8MH1lOmRve2lmKDB8cClmb3IoZncoMSkscD0wOzspe2lmKCgwfHApPj0oMHxrKSlicmVhayBlO19bZisocDw8Myk+PjNdPTEwMCorUmgoKSxwPXArMXwwfX13aGlsZSgwKTtpZigwfEsz''@;'; put 'put ''KHA9MHxmdW5jdGlvbiBsMmUobCxjKXtjPStjO3ZhciBmLG0scD0wLEE9MDtmPTE9PSgwfGFbMTYrKGx8PTApPj4yXSk/MHxzOChsLDApOjB8bDUobCksbT0wfGFbZisyOD4+Ml07ZTpkb3tpZigxIT1jKWZvcihwPTB8YVtmKzg+PjJdLGw9MDs7KXtpZigoMHxsKT49KDB8cCkpYnJlYWsgZTtf''@;'; put 'put ''WyhBPW0rKGw8PDMpfDApPj4zXT0rX1tBPj4zXSpjLGw9bCsxfDB9fXdoaWxlKDApO3JldHVybiAwfGZ9KGMsMSksMCkpcmV0dXJuIFBWKGs9MHxCVigwLHAsMCwxMDFlNSwxMDAsMCksbCxmLDMwMCksT2soayksUFYoaz0wfEJWKDAscCwwLDEwMWUzLDEwMCwwKSxsLGYsMzAwKSxPayhrKSxQ''@;'; put 'put ''VihrPTB8QlYoMCxwLDAsMTAxMCwxMDAsMCksbCxmLDMwMCksT2soayksUFYoaz0wfEJWKDAscCwwLDEwLjEsMTAwLDApLGwsZiwzMDApLE9rKGspLGZ1bmN0aW9uIGl0KGwsYyxmLHAsbSxBLHcpe2w9K2wsYz0rYyxmPStmLHA9K3AsbXw9MCxBfD0wLHd8PTA7dmFyIEQsUixHLEssYj0wLGs9''@;'; put 'put ''MCxNPTAscGU9MCxtZT0wLGJlPTA7Zm9yKEs9b2Usb2U9b2UrODB8MCxSPUsrNDh8MCxEPUsrMjR8MCxHPUssYj0wOzspe2lmKCgwfGIpPj0oMHxBKSl7az0wO2JyZWFrfV9bUisoYjw8Myk+PjNdPXBlPStfW3crKGI8PDMpPj4zXSxfW0QrKGI8PDMpPj4zXT1wZSxiPWIrMXwwfWZvcig7ISgo''@;'; put 'put ''MHxrKT49KDB8bSkpOyl7Zm9yKE09MHx2cihrLEEpLGI9MDshKCgwfGIpPj0oMHxBKSk7KV9bKG1lPVIrKGI8PDMpfDApPj4zXT0oYmU9K19bdysoYitNPDwzKT4+M10pPChwZT0rX1ttZT4+M10pP2JlOnBlLF9bKG1lPUQrKGI8PDMpfDApPj4zXT1iZT4ocGU9K19bbWU+PjNdKT9iZTpwZSxi''@;'; put 'put ''PWIrMXwwO2s9aysxfDB9Zm9yKGY9MCE9KHBlPStfW0Q+PjNdLStfW1I+PjNdKT8oZi1sKS9wZToxLGJlPShwLWMpLyhwZT0rX1tEKzg+PjNdLStfW1IrOD4+M10pLGY9MCE9cGU/ZjxiZT9mOmJlOmYsX1tHPj4zXT1sLF9bRys4Pj4zXT1jLF9bRysxNj4+M109MCxrPTA7ISgoMHxrKT49KDB8''@;'; put 'put ''bSkpOyl7Zm9yKE09MHx2cihrLEEpLGI9MDshKCgwfGIpPj0oMHxBKSk7KV9bKG1lPXcrKGIrTTw8Myl8MCk+PjNdPSgrX1ttZT4+M10tK19bUisoYjw8Myk+PjNdKSpmKyArX1tHKyhiPDwzKT4+M10sYj1iKzF8MDtrPWsrMXwwfW9lPUt9KDAsMCw0OTAsNzAwLDB8YVtjPj4yXSxsLGYpLHZv''@;'; put 'put ''aWQgSmEocCk7QnIoOTI0MzAsOTIzODcsMTY0LDkyNDY2KX0oMHxhWzQ3MTM3XSxNLHAsYik7YnJlYWs7Y2FzZSA0OnA9KHA9MHxhW1I+PjJdKT8wfEVqKHAsMCk6MHxsNShNKSxhW1I+PjJdPXAsZnVuY3Rpb24gYTJlKGwsYyxmLHAsbSxBLHcsYil7IWZ1bmN0aW9uIFA5ZShsLGMsZixwLG0s''@;'; put 'put ''QSx3KXtsfD0wLGZ8PTAscHw9MCxtfD0wLEE9K0Esd3w9MDt2YXIgTSxiPTAsaz0wLEQ9MDtpZihEPTA9PSgwfEszKGN8PTAsMCkpLGI9MT09KDB8YVtjKzE2Pj4yXSksRD9iP2I9MHxsZygwfHM4KGMsMCkpOms9NTpiP2I9YzprPTUsNT09KDB8aykmJihiPTB8bDUoYykpLEQ9MHxsZyhiKSxh''@;'; put 'put ''W3c+PjJdPTAsYj0wfGFbRD4+Ml0sZnx8KFFuKDB8dnIobDw8MyxiKSksYmwoKSksTT0wfGZ1bmN0aW9uIE1QKGwsYyxmLHAsbSxBKXtjfD0wLGY9K2YscHw9MCxtfD0wLEF8PTA7dmFyIHJuLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0w''@;'; put 'put ''LEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCx5bj0wLEZuPTAsbHI9MDtpZihybj0wfGFbKGx8PTApPj4yXSwwfEszKGwsMCkmJjE9PSgwfGFbbCsxNj4+Ml0pKXtmb3Ioaz0wfHZyKHJuLGMpLGI9MCx3PTA7ISgo''@;'; put 'put ''MHx3KT49KDB8aykpOyliPShwZT0rX1twKyh3PDwzKT4+M10pKnBlK2Isdz13KzF8MDtlOmRve2lmKDA9PWIpZm9yKHc9MDs7KXtpZigoMHx3KT49KDB8aykpYnJlYWsgZTtfW3ArKHc8PDMpPj4zXT03MiorUmgoKSx3PXcrMXwwfX13aGlsZSgwKTtmb3IoYXQ9MHxhW2wrMjA+PjJdLEV0PTB8''@;'; put 'put ''YVtsKzI0Pj4yXSxadD0wfGFbbCsyOD4+Ml0sdz0wfFFuKDU2KSxfWyh3dD13KzMyfDApPj4zXT0xLGFbdysyMD4+Ml09MCxhW3crMjQ+PjJdPTAsYVt3Pj4yXT1sLF9bdys0MD4+M109LjAxLGFbdys0OD4+Ml09fn4rRjAoKyArKDB8YVtsPj4yXSkpLHV0PTB8UW4ocm48PDMpLGFbdysxMj4+''@;'; put 'put ''Ml09dXQsaz0wOyEoKDB8ayk+PSgwfHJuKSk7KV9bdXQrKGs8PDMpPj4zXT1mLGs9aysxfDA7aWYoYVsoTXQ9dys0fDApPj4yXT0wfFhoKHJuLHJuLGw9KDB8YVtsKzg+PjJdKStybnwwLDEsMSksbD0wfFhoKHJuLHJuLGwsMSwxKSxhWyhrdD13Kzh8MCk+PjJdPWwsMD09KDB8bCl8MD09KDB8''@;'; put 'put ''KGs9MHxhW010Pj4yXSkpKU02KHcpLHc9MDtlbHNle2plPTB8YVtrKzIwPj4yXSxldD0wfGFbaysyND4+Ml0sR2U9MHxhW2wrMjQ+PjJdLEJlPTB8YVtrKzI4Pj4yXSxsdD0wfGFbbCsyOD4+Ml0sYVsocnQ9MHxhW2wrMjA+PjJdKT4+Ml09MCxhW2plPj4yXT0wLEs9MCxwZT0wLEhlPTAsYmU9''@;'; put 'put ''MDtlOmZvcig7ISgoMHxiZSk+PSgwfHJuKSk7KXtmb3IoTGU9YXQrKChPZT1iZSsxfDApPDwyKXwwLE09MCxEPTAsbWU9MHxhW2F0KyhiZTw8Mik+PjJdLEc9SyxmPXBlLGw9SGU7ISgoMHxtZSk+PSgwfGFbTGU+PjJdKSk7KXtpZigoMHwoaz0wfGFbRXQrKG1lPDwyKT4+Ml0pKT09KDB8YmUp''@;'; put 'put ''KWI9RyxrPWw7ZWxzZXtzd2l0Y2goYVtldCsobDw8Mik+PjJdPWssUj0rX1tadCsobWU8PDMpPj4zXSwwfG0pe2Nhc2UgMjpiPTA9PShiPVIqUik/LTFlNTotMS9iO2JyZWFrO2Nhc2UgMTpiPVIqUj09MD8tMWU1Oi0xL1I7YnJlYWs7Y2FzZSAwOmI9LTE7YnJlYWs7ZGVmYXVsdDp5bj0yMzti''@;'; put 'put ''cmVhayBlfV9bQmUrKGw8PDMpPj4zXT1iLGFbR2UrKGw8PDIpPj4yXT1rLF9bKGxyPWx0KyhsPDwzKXwwKT4+M109Rm49YipSLGY9K1NjKHAsYyxiZSxrKSpGbitmLE09YitNLEQ9KEZuPStfW2xyPj4zXSkrRCxiPUZuKlIrRyxrPWwrMXwwfW1lPW1lKzF8MCxHPWIsbD1rfWFbZXQrKGw8PDIp''@;'; put 'put ''Pj4yXT1iZSxfWyhIZT11dCsoYmU8PDMpfDApPj4zXT1LPS1NKitfW0hlPj4zXSxfW0JlKyhsPDwzKT4+M109Sy1NLGFbR2UrKGw8PDIpPj4yXT1iZSxfW2x0KyhsPDwzKT4+M109LUQsYVtqZSsoT2U8PDIpPj4yXT1IZT1sKzF8MCxhW3J0KyhPZTw8Mik+PjJdPUhlLEs9RyxwZT1mLGJlPU9l''@;'; put 'put ''fWlmKDIzPT0oMHx5bikmJkJyKDEzODM5NCw5NTgzMSw1OTEsOTYwMTIpLDA9PShiPTA9PSgwfEEpPzE6cGUvSykpdz0wO2Vsc2V7Zm9yKGs9MDshKCgwfGspPj0oMHxIZSkpOylfWyhscj1sdCsoazw8Myl8MCk+PjNdPStfW2xyPj4zXSpiLGs9aysxfDA7X1t3dD4+M109YixhWzgrKDB8YVtN''@;'; put 'put ''dD4+Ml0pPj4yXT1IZSxhWzgrKDB8YVtrdD4+Ml0pPj4yXT1IZX19cmV0dXJuIDB8d31yZXR1cm4gQnIoOTU5NDUsOTU4MzEsNTI1LDk2MDEyKSwwfShELGwsMCwwfGFbZj4+Ml0sMD09KDB8cCk/MDoyLDEpKXtmb3IoX1tNKzQwPj4zXT0uMSxhW00rMjQ+PjJdPTUsZnVuY3Rpb24gRVAobCxj''@;'; put 'put ''LGYscCxtKXtuMShsfD0wLGN8PTAsZnw9MCxwfD0wLG09K20pfShNLGwsMHxhW2Y+PjJdLG0sQSksaz0wfHZyKGIsbCkscD1NKzMyfDAsYj0wOyEoKDB8Yik+PSgwfGspKTspX1sodz0oMHxhW2Y+PjJdKSsoYjw8Myl8MCk+PjNdPStfW3c+PjNdLytfW3A+PjNdLGI9YisxfDA7IWZ1bmN0aW9u''@;'; put 'put ''IGp4KGwpe002KGx8PTApfShNKX1lbHNlIGFbdz4+Ml09LTE7KDB8RCkhPSgwfGMpJiZKYShEKX0obHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHc9K3csYnw9MCl9KDB8YVs0NzEzN10sMCxwLEQsMSwyMDAsLjAwMSxiKX1mb3IocD0wfEx0KGwpO3A7KXtmb3IoYz0oMHxhW0Q+PjJdKSsoKDB8''@;'; put 'put ''dnIoMHxhWzEyMCsoQT0wfGFbcCsxNj4+Ml0pPj4yXSxmPTB8YVs0NzEzN10pKTw8Myl8MCxBPUErMTMyfDAsbT0wOyEoKDB8bSk+PSgwfGYpKTspX1soMHxhW0E+PjJdKSsobTw8Myk+PjNdPStfW2MrKG08PDMpPj4zXSxtPW0rMXwwO3A9MHx6dChsLHApfUh0KGspLEh0KDB8YVtEPj4yXSks''@;'; put 'put ''SmEoTSksMHwocD0wfGFbUj4+Ml0pJiZKYShwKSwwfChwPTB8YVtHPj4yXSkmJkh0KHApLG9lPUt9ZnVuY3Rpb24gUzllKGwpe2YwKGx8PTAsMTM3NDYwLDE3NiwxKSxZNyhsKX1mdW5jdGlvbiBYc2UoKXt2YXIgbCxjO3JldHVybiBsPTB8UW4oMTY4KSxfW2w+PjNdPS0xLjAwMDEyMzQsX1ts''@;'; put 'put ''Kzg+PjNdPTEsYVtsKzE2Pj4yXT0xLF9bbCsyND4+M109LTEsX1tsKzMyPj4zXT0uMixhW2wrNDA+PjJdPTAsYVtsKzQ0Pj4yXT00LGFbbCs0OD4+Ml09MSxhW2wrNTI+PjJdPTQ1LGFbbCs1Nj4+Ml09MTAsX1tsKzY0Pj4zXT0uNixfW2wrNzI+PjNdPS4wMDEsYVtsKzgwPj4yXT01MDAsX1ts''@;'; put 'put ''Kzg4Pj4zXT0uOSxfW2wrOTY+PjNdPS4xLGFbbCsxMDQ+PjJdPTEsYVtsKzEwOD4+Ml09MTIzLGFbKGM9bCsxMTJ8MCk+PjJdPTAsYVtjKzQ+PjJdPTAsYVtjKzg+PjJdPTAsYVtjKzEyPj4yXT0wLGFbbCsxMjg+PjJdPTEsYVtsKzEzMj4+Ml09MyxhW2wrMTM2Pj4yXT0wLF9bbCsxNDQ+PjNd''@;'; put 'put ''PS00LF9bbCsxNTI+PjNdPTAsYVtsKzE2MD4+Ml09MCwwfGx9ZnVuY3Rpb24genkobCl7SHQobHw9MCl9ZnVuY3Rpb24gUlYobCl7SHQobHw9MCl9ZnVuY3Rpb24gbVgobCl7dmFyIGM7cmV0dXJuIGx8PTAsYz0wfFFuKDE4NCksYVtjPj4yXT1sLGFbYysxNzY+PjJdPTAsMHxjfWZ1bmN0aW9u''@;'; put 'put ''IHZYKGwsYyl7dmFyIHAsbSxmPTA7X1s4KyhsfD0wKSsoKHA9MHxhW2w+PjJdKTw8Myk+PjNdPWM9K2MsbT1sKzE3NnwwO2U6ZG97c3dpdGNoKDB8YVttPj4yXSl7Y2FzZSAwOjIwPT0oMHwoZj0wfGFbbD4+Ml0pKT8oYVttPj4yXT0tMSxmPTE5KTooYVttPj4yXT0xLGY9KDB8Zik+MTk/MjA6''@;'; put 'put ''ZisxfDApLGFbbD4+Ml09ZjticmVhaztjYXNlIDE6aWYoKDB8KGY9MHxhW2w+PjJdKSk8MjAmJitfW2wrOCsocCstMTw8Myk+PjNdPmMpe2FbbD4+Ml09ZisxO2JyZWFrIGV9YVtsPj4yXT1mKy0xLGFbbT4+Ml09LTE7YnJlYWsgZTtkZWZhdWx0OmlmKCgwfChmPTB8YVtsPj4yXSkpPjAmJitf''@;'; put 'put ''W2wrOCsocCsxPDwzKT4+M10+Yyl7YVtsPj4yXT1mKy0xO2JyZWFrIGV9YVtsPj4yXT1mKzEsYVttPj4yXT0xO2JyZWFrIGV9fXdoaWxlKDApfWZ1bmN0aW9uIEtzZShsKXtyZXR1cm4gMHxhWyhsfD0wKT4+Ml19ZnVuY3Rpb24gVUQobCxjLGYpe2N8PTAsZnw9MDt2YXIgRCxSLEcsSyxwPTAs''@;'; put 'put ''bT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAscGU9MDtpZihLPTB8YVsyNCsobHw9MCk+PjJdLFI9MHxhWyhHPTB8YVtsKzIwPj4yXSkrKChEPTB8YVtsPj4yXSk8PDIpPj4yXSl7bD0wLHA9MDtlOmZvcig7ISgoMHxsKT49KDB8RCkpOylmb3IoYj1sKzF8MCxrPTB8YVtHKyhiPDwyKT4+Ml0sTT0w''@;'; put 'put ''fHZyKGwsYyksdz0wfGFbRysobDw8Mik+PjJdOzspe2lmKCgwfHcpPj0oMHxrKSl7bD1iO2NvbnRpbnVlIGV9Zm9yKEE9Sysodzw8Mil8MCxsPTAsbT0wOyEoKDB8bCk+PSgwfGMpKTspcGU9K19bZisobCtNPDwzKT4+M10tK19bZisoKDB8dnIoMHxhW0E+PjJdLGMpKTw8Myk+PjNdLGw9bCsx''@;'; put 'put ''fDAsbT1wZSpwZSttO3c9dysxfDAscD0rRjAoK20pK3B9cC89KygwfFIpfWVsc2UgcD0xO3JldHVybitwfWZ1bmN0aW9uIE05ZShsLGMsZil7dmFyIHA7bHw9MCxwPTEwKyhjfD0wKXwwLCgwfGFbKGZ8PTApPj4yXSk8PSgwfGMpJiYoYVtmPj4yXT1wLGFbbD4+Ml09MHxsMCgwfGFbbD4+Ml0s''@;'; put 'put ''cDw8MykpfWZ1bmN0aW9uICRzZShsLGMsZil7dmFyIHA7bHw9MCxwPTEwKyhjfD0wKXwwLCgwfGFbKGZ8PTApPj4yXSk8PSgwfGMpJiYoYVtmPj4yXT1wLGFbbD4+Ml09MHxsMCgwfGFbbD4+Ml0scDw8MikpfWZ1bmN0aW9uIEU5ZShsLGMsZixwKXtsfD0wLGZ8PTA7dmFyIEEsdyxiLGssTSxt''@;'; put 'put ''PTA7Zm9yKE09b2Usb2U9b2UrMTZ8MCxrPU0sYj0wfHZyKHB8PTAsY3w9MCksYz0wfHZyKGYsYykscD0wOzIhPSgwfHApOylfW2srKHA8PDMpPj4zXT0rX1tsKyhwK2I8PDMpPj4zXS0rX1tsKyhwK2M8PDMpPj4zXSxwPXArMXwwO3c9K19baz4+M10sQT0rX1trKzg+PjNdO2Rve2lmKCEoKHc+''@;'; put 'put ''PTA/dzotdyk8PTFlLTUqKEE+PTA/QTotQSkpKXtpZihtPStWZigrQS93KSx3PjApe2lmKCEoQTwwKSlicmVhazttKz02LjI4MzE4NTMwNzE3OTU4NjticmVha31pZighKHc8MCkpYnJlYWs7bSs9My4xNDE1OTI2NTM1ODk3OTM7YnJlYWt9bT1BPjA/MS41NzA3OTYzMjY3OTQ4OTY2OjQuNzEy''@;'; put 'put ''Mzg4OTgwMzg0Njl9d2hpbGUoMCk7cmV0dXJuIG9lPU0sK219ZnVuY3Rpb24geDllKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAscHw9MCxtfD0wLEF8PTA7dmFyIE5yLGtyLGNyLENyLHFyLEZpLEhvLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxM''@;'; put 'put ''ZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wLGF0PTAsdXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTAsTHI9MCxhMD0wLGxvPTAseWE9MDtIbz1vZSxvZT1vZSs4MHwwLEZpPUhvLEc9K19bKGZ8PTApPj4zXSxEPStfWyhNPWYrMjR8MCk+PjNdLGI9''@;'; put 'put ''K19bKFI9ZiszMnwwKT4+M10sTnI9K19bZis3Mj4+M10sa3I9MHxhW2YrODA+PjJdLGNyPStfW2YrODg+PjNdLEs9K19bZis5Nj4+M10sQ3I9MHxhW2YrMTA0Pj4yXSx3PTB8YVsocXI9Zis1NnwwKT4+Ml07ZG97aWYoISgwPT0oMHxjKXwoMHxrcik8MXx8KExyPTB8YVtjKzQ+PjJdLCgwfGwp''@;'; put 'put ''PDF8KDB8THIpPDEpKSl7aWYobHI9MHxhW2M+PjJdLGEwPTB8bVgodyksYVtBPj4yXT0wLCgwfGxyKSE9KDB8THIpKXthW0E+PjJdPS0xMDAsUlYoYTApLGFbcXI+PjJdPXc7YnJlYWt9eW49MHxzOChjLDEpLEZuPTB8YVt5bisyMD4+Ml0sbHI9MHxhW3luKzI0Pj4yXTtlOmRve2lmKDB8YVtm''@;'; put 'put ''KzE2Pj4yXSlmb3IoZncoMHxhW2YrMTA4Pj4yXSksaz0wfHZyKExyLGwpLHc9MDs7KXtpZigoMHx3KT49KDB8aykpYnJlYWsgZTtfW20rKHc8PDMpPj4zXT0rUmgoKSx3PXcrMXwwfX13aGlsZSgwKTtmb3IoRDwwJiYoRD0rVUQoeW4sbCxtKSxfW00+PjNdPUQpLGI8MCYmKF9bUj4+M109LjIs''@;'; put 'put ''Yj0uMiksRz49MCYmKF9bZj4+M109LTEsRz0tMSkscm49K0dsKCtELCsoMS1HKSkscnQ9K0dsKCtiLC4zMzMzMzMzMzMzMzMzMzMzKigyLUcpKS9ELGx0PTB8UW4oR2U9MHx2cihMcixsPDwzKSksTXQ9MHxRbihHZSksa3Q9ZisxMTZ8MCxhdD1mKzY0fDAsdXQ9RmkrOHwwLHd0PUZpKzE2fDAs''@;'; put 'put ''amU9MCxldD0wLExlPUs7Oyl7RG8oMHxsdCwwfG0sMHxHZSksZEFlKEhlPTB8clMobCxMcixCZT0wfEtzZShhMCksbSwwPT0oMHxhW2t0Pj4yXSk/MDpwKSxNdCxtLCtfW2F0Pj4zXSxHLHJuLEZpLEEpLE09MDtlOmZvcig7Oyl7aWYoKDB8TSk+PSgwfExyKSl7Sz0wLGs9MDticmVha31mb3Io''@;'; put 'put ''cGU9TXQrKChSPTB8dnIoTSxsKSk8PDMpfDAsYmU9Rm4rKChtZT1NKzF8MCk8PDIpfDAsaz0wfGFbRm4rKE08PDIpPj4yXTs7KXtpZigoMHxrKT49KDB8YVtiZT4+Ml0pKXtNPW1lO2NvbnRpbnVlIGV9dz0wfGFbKE9lPWxyKyhrPDwyKXwwKT4+Ml07dDpkb3tpZigoMHx3KSE9KDB8TSkpZm9y''@;'; put 'put ''KGI9K1NjKG0sbCxNLHcpKnJ0LHc9MDs7KXtpZigoMHx3KT49KDB8bCkpYnJlYWsgdDtLPWIqKCtfW20rKHcrUjw8Myk+PjNdLStfW20rKCgwfHZyKDB8YVtPZT4+Ml0sbCkpK3c8PDMpPj4zXSksX1sobG89cGUrKHc8PDMpfDApPj4zXT0rX1tsbz4+M10tSyx3PXcrMXwwfX13aGlsZSgwKTtr''@;'; put 'put ''PWsrMXwwfX1mb3IoOyEoKDB8ayk+PSgwfExyKSk7KXtmb3IoUj1NdCsoKE09MHx2cihrLGwpKTw8Myl8MCxiPTAsdz0wOyEoKDB8dyk+PSgwfGwpKTspYj0oeWE9K19bUisodzw8Myk+PjNdKSp5YStiLHc9dysxfDA7Sz0oYj0rRjAoK2IpKStLO2U6ZG97aWYoYj4wKWZvcihiPTEvYix3PTA7''@;'; put 'put ''Oyl7aWYoKDB8dyk+PSgwfGwpKXt3PTA7YnJlYWsgZX1fWyhsbz1SKyh3PDwzKXwwKT4+M109K19bbG8+PjNdKmIsdz13KzF8MH1lbHNlIHc9MH13aGlsZSgwKTtmb3IoOyEoKDB8dyk+PSgwfGwpKTspX1sobG89bSsodytNPDwzKXwwKT4+M109K19bbG8+PjNdKyArX1tSKyh3PDwzKT4+M10q''@;'; put 'put ''TGUsdz13KzF8MDtrPWsrMXwwfWlmKGplPWplKzF8MCxIZSYmKGdMKEhlKSx2WChhMCwuODUqK19bdXQ+PjNdKyArX1tGaT4+M10rMy4zKitfW3d0Pj4zXSkpLCEoKDB8amUpPCgwfGtyKSYoTGU9K0xrKENyLExlLEssZXQsY3IpKT5OcikpYnJlYWs7ZXQ9S30wfGFbZisxMTI+PjJdJiZRRChs''@;'; put 'put ''LHluLG0pLFJWKGEwKSxhW3FyPj4yXT1CZSxIdChsdCksKDB8eW4pIT0oMHxjKSYmSmEoeW4pLEh0KE10KX19d2hpbGUoMCk7b2U9SG99ZnVuY3Rpb24gTGsobCxjLGYscCxtKXtsfD0wLGM9K2MsZj0rZixwPStwLG09K207ZG97aWYobCl7aWYoZj49cCl7Yyo9bTticmVha30uOTUqcDxmfHwo''@;'; put 'put ''Yz0uOTkqYy9tKX1lbHNlIGMqPW19d2hpbGUoMCk7cmV0dXJuK2N9ZnVuY3Rpb24gUUQobCxjLGYpe2x8PTAsZnw9MDt2YXIgYmUsT2UsTGUsamUsZXQscnQsR2UsbHQsTXQscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsQmU9MCxIZT0wO2Zv''@;'; put 'put ''cihNdD1vZSxvZT1vZSsxNnwwLGplPU10Kzh8MCxldD1NdCs0fDAscnQ9TXQsR2U9MHxhWyhjfD0wKT4+Ml0sbHQ9MHxhW2MrMjA+PjJdLGJlPTB8YVtjKzI0Pj4yXSxhWyhMZT1NdCsxMnwwKT4+Ml09MTAsYVtydD4+Ml09MTAsT2U9MHxRbihHZTw8MiksbT0wfFFuKDgwKSxhW2plPj4yXT1t''@;'; put 'put ''LHA9MHxRbig0MCksYVtldD4+Ml09cCxjPTA7Oyl7aWYoKDB8Yyk+PSgwfEdlKSl7RD0wLHBlPW0saz1wLFI9cCxNPW07YnJlYWt9YVtPZSsoYzw8Mik+PjJdPTAsYz1jKzF8MH1mb3IoOyEoKDB8RCk+PSgwfEdlKSk7KXtjPTB8YVtsdCsoRDw8Mik+PjJdO2U6ZG97aWYoMT09KCgwfGFbbHQr''@;'; put 'put ''KEQrMTw8Mik+PjJdKS1jfDApJiYwPT0oMHxhW09lKyhEPDwyKT4+Ml0pJiYoQmU9MHxhW2JlKyhjPDwyKT4+Ml0sSGU9T2UrKEJlPDwyKXwwLDA9PSgwfGFbSGU+PjJdKSkpe2ZvcihhW0hlPj4yXT0xLEs9bHQrKEJlKzE8PDIpfDAsRD0wLG1lPTAsQT0wLEc9MHxhW2x0KyhCZTw8Mik+PjJd''@;'; put 'put ''LGs9UixjPXBlOyEoKDB8Ryk+PSgwfGFbSz4+Ml0pKTspMT09KCgwfGFbbHQrKDErKG09MHxhWyhwPWJlKyhHPDwyKXwwKT4+Ml0pPDwyKT4+Ml0pLSgwfGFbbHQrKG08PDIpPj4yXSl8MCk/KGFbT2UrKG08PDIpPj4yXT0xLCRzZShldCxtZSxMZSksQT0rU2MoZixsLEJlLDB8YVtwPj4yXSkr''@;'; put 'put ''QSxhWyhrPTB8YVtldD4+Ml0pKyhtZTw8Mik+PjJdPWFbcD4+Ml0scD1ELG09bWUrMXwwKTooTTllKGplLEQscnQpLGI9K0U5ZShmLGwsQmUsMHxhW3A+PjJdKSxfWyhjPTB8YVtqZT4+Ml0pKyhEPDwzKT4+M109YixwPUQrMXwwLG09bWUsTT1jKSxEPXAsbWU9bSxHPUcrMXwwO2ZvcihiPUEv''@;'; put 'put ''KygwfG1lKSwoMHxEKT4wJiYoZTJlKEQsTSksYz1NKSxBPSgwfG1lKT4xPzYuMjgzMTg1MzA3MTc5NTg2LysobWUrLTF8MCk6MCxwPTAsdz0wOzspe2lmKCgwfHApPj0oMHxtZSkpe1I9ayxtPWs7YnJlYWsgZX1UOWUoZixsLGIsdyxCZSwwfGFbaysocDw8Mik+PjJdKSxwPXArMXwwLHcrPUF9''@;'; put 'put ''fWVsc2UgcD1ELG09ayxjPXBlfXdoaWxlKDApO0Q9cCsxfDAscGU9YyxrPW19SHQoT2UpLEh0KHBlKSxIdChrKSxvZT1NdH1mdW5jdGlvbiBlMmUobCxjKXtJMShjfD0wLGx8PTAsOCw2OCl9ZnVuY3Rpb24gVDllKGwsYyxmLHAsbSxBKXt2YXIgdztsfD0wLGN8PTAsZj0rZixtfD0wLEF8PTAs''@;'; put 'put ''dz0rbGEoKyhwPStwKSkqZixtPTB8dnIobSxjKSxBPTB8dnIoQSxjKSxfW2wrKEE8PDMpPj4zXT13KyArX1tsKyhtPDwzKT4+M10scD0rSWEoK3ApKmYsX1tsKyhBKzE8PDMpPj4zXT1wKyArX1tsKyhtKzE8PDMpPj4zXX1mdW5jdGlvbiBBWChsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHB8PTAs''@;'; put 'put ''bXw9MCxBfD0wO3ZhciBscixOcixrcixjcix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTAsa3Q9MCxhdD0wLEV0PTAsWnQ9MCx1dD0wLHd0PTAscm49MCx5bj0wLEZu''@;'; put 'put ''PTAsQ3I9MCxxcj0wLExyPTAsYTA9MDtpZihHPStfWyhmfD0wKT4+M10sTT0rX1soRD1mKzI0fDApPj4zXSxrPStfWyhSPWYrMzJ8MCk+PjNdLGxyPStfW2YrNzI+PjNdLE5yPTB8YVtmKzgwPj4yXSxrcj0rX1tmKzg4Pj4zXSxtZT0rX1tmKzk2Pj4zXSxjcj0wfGFbZisxMDQ+PjJdLHc9MHxh''@;'; put 'put ''W2YrNTY+PjJdLEN1KDkyMTk4LDMyLDEsMHxhWzE1NzEyXSksISgwPT0oMHxjKXwoMHxOcik8MXx8KENyPTB8YVtjPj4yXSxiPTB8YVtjKzQ+PjJdLCgwfGwpPDF8KDB8Yik8MSkpKXtpZihxcj0wfFFuKDB8dnIoSz1sPDwzLGIpKSwoMHxiKTwoMHxhW2YrNTI+PjJdKT8oWnQ9MCx1dD0wLHd0''@;'; put 'put ''PTAscm49MCx5bj0wLEZuPTApOihtWCh3KSxybj0wfFFuKDgwKmx8MCkseW49MHxRbig4MCksWnQ9Rm49MHxRbig4MCksdXQ9eW4sd3Q9cm4pLGFbQT4+Ml09MCwoMHxDcik9PSgwfGIpKXtrdD0wfHM4KGMsMSksYXQ9MHxhW2t0KzIwPj4yXSxFdD0wfGFba3QrMjQ+PjJdO2U6ZG97aWYoMHxh''@;'; put 'put ''W2YrMTY+PjJdKWZvcihmdygwfGFbZisxMDg+PjJdKSxiPTB8dnIoQ3IsbCksdz0wOzspe2lmKCgwfHcpPj0oMHxiKSlicmVhayBlO19bbSsodzw8Myk+PjNdPStSaCgpLHc9dysxfDB9fXdoaWxlKDApO2ZvcihNPDAmJihNPStVRChrdCxsLG0pLF9bRD4+M109TSksazwwJiYoX1tSPj4zXT0u''@;'; put 'put ''MixrPS4yKSxHPj0wJiYoX1tmPj4zXT0tMSxHPS0xKSxNdD0rR2woK00sKyhsdD0xLUcpKSxydD0rR2woK2ssLjMzMzMzMzMzMzMzMzMzMzMqKDItRykpL00sR2U9MHxRbihLKSxCZT0wfFFuKExlPTB8dnIoQ3IsSykpLEhlPTB8dnIoQ3IsbCksamU9ZisxMTZ8MCxldD0wIT0oMHxwKSxPZT0t''@;'; put 'put ''MT09RyxiZT0wLEc9MDs7KXtmb3Iodz0wOyEoKDB8dyk+PSgwfEhlKSk7KV9bcXIrKHc8PDMpPj4zXT0wLHc9dysxfDA7Zm9yKERvKDB8QmUsMHxtLDB8TGUpLEs9MDs7KXtpZighKCgwfEspPCgwfENyKSkpe1I9MDticmVha31mb3Iodz0wOyEoKDB8dyk+PSgwfGwpKTspX1tHZSsodzw8Myk+''@;'; put 'put ''PjNdPTAsdz13KzF8MDtSPTB8dnIoSyxsKTtlOmRve2lmKGV0JjAhPSgwfGFbamU+PjJdKSlmb3Iodz0wOzspe2lmKCgwfHcpPT0oMHxDcikpe3c9MDticmVhayBlfXQ6ZG97aWYoKDB8dykhPSgwfEspKWZvcihNPStDMShtLGwsSyx3KSxBPXArKHc8PDMpfDAsRD0wfHZyKHcsbCksaz0rR2wo''@;'; put 'put ''K00sK2x0KSxrPTEvKE9lP00qTTprKSxiPTA7Oyl7aWYoKDB8Yik+PSgwfGwpKWJyZWFrIHQ7X1socGU9R2UrKGI8PDMpfDApPj4zXT0rX1tBPj4zXSpNdCooK19bbSsoYitSPDwzKT4+M10tK19bbSsoYitEPDwzKT4+M10pKmsrICtfW3BlPj4zXSxiPWIrMXwwfX13aGlsZSgwKTt3PXcrMXww''@;'; put 'put ''fWVsc2UgZm9yKHc9MDs7KXtpZigoMHx3KT09KDB8Q3IpKXt3PTA7YnJlYWsgZX10OmRve2lmKCgwfHcpIT0oMHxLKSlmb3IoTT0rQzEobSxsLEssdyksQT0wfHZyKHcsbCksaz0rR2woK00sK2x0KSxrPTEvKE9lP00qTTprKSxiPTA7Oyl7aWYoKDB8Yik+PSgwfGwpKWJyZWFrIHQ7X1socGU9''@;'; put 'put ''R2UrKGI8PDMpfDApPj4zXT0oK19bbSsoYitSPDwzKT4+M10tK19bbSsoYitBPDwzKT4+M10pKk10KmsrICtfW3BlPj4zXSxiPWIrMXwwfX13aGlsZSgwKTt3PXcrMXwwfX13aGlsZSgwKTtmb3IoOyEoKDB8dyk+PSgwfGwpKTspX1socGU9cXIrKHcrUjw8Myl8MCk+PjNdPStfW3BlPj4zXSsg''@;'; put 'put ''K19bR2UrKHc8PDMpPj4zXSx3PXcrMXwwO0s9SysxfDB9ZTpmb3IoOzspe2lmKCEoKDB8Uik8KDB8Q3IpKSl7TT0wLGI9MDticmVha31mb3Iodz0wOyEoKDB8dyk+PSgwfGwpKTspX1tHZSsodzw8Myk+PjNdPTAsdz13KzF8MDtmb3IoQT1hdCsoKEs9UisxfDApPDwyKXwwLHBlPTB8dnIoUixs''@;'; put 'put ''KSxiPTB8YVthdCsoUjw8Mik+PjJdOzspe2lmKCgwfGIpPj0oMHxhW0E+PjJdKSl7dz0wO2JyZWFrfXc9MHxhWyhEPUV0KyhiPDwyKXwwKT4+Ml07dDpkb3tpZigoMHx3KSE9KDB8UikpZm9yKGs9K1NjKG0sbCxSLHcpKnJ0LHc9MDs7KXtpZigoMHx3KT49KDB8bCkpYnJlYWsgdDtNPWsqKCtf''@;'; put 'put ''W20rKHcrcGU8PDMpPj4zXS0rX1ttKygoMHx2cigwfGFbRD4+Ml0sbCkpK3c8PDMpPj4zXSksX1soTHI9R2UrKHc8PDMpfDApPj4zXT0rX1tMcj4+M10tTSx3PXcrMXwwfX13aGlsZSgwKTtiPWIrMXwwfWZvcig7Oyl7aWYoKDB8dyk+PSgwfGwpKXtSPUs7Y29udGludWUgZX1fWyhMcj1xciso''@;'; put 'put ''dytwZTw8Myl8MCk+PjNdPStfW0xyPj4zXSsgK19bR2UrKHc8PDMpPj4zXSx3PXcrMXwwfX1mb3IoOyEoKDB8Yik+PSgwfENyKSk7KXtmb3IoQT0wfHZyKGIsbCksdz0wOzspe2lmKCgwfHcpPj0oMHxsKSl7az0wLHc9MDticmVha31fW0dlKyh3PDwzKT4+M109K19bcXIrKHcrQTw8Myk+PjNd''@;'; put 'put ''LHc9dysxfDB9Zm9yKDshKCgwfHcpPj0oMHxsKSk7KWs9KGEwPStfW0dlKyh3PDwzKT4+M10pKmEwK2ssdz13KzF8MDtNPShrPStGMCgraykpK007ZTpkb3tpZihrPjApZm9yKGs9MS9rLHc9MDs7KXtpZigoMHx3KT49KDB8bCkpe3c9MDticmVhayBlfV9bKExyPUdlKyh3PDwzKXwwKT4+M109''@;'; put 'put ''K19bTHI+PjNdKmssdz13KzF8MH1lbHNlIHc9MH13aGlsZSgwKTtmb3IoOyEoKDB8dyk+PSgwfGwpKTspX1soTHI9bSsodytBPDwzKXwwKT4+M109K19bTHI+PjNdKyArX1tHZSsodzw8Myk+PjNdKm1lLHc9dysxfDA7Yj1iKzF8MH1pZighKCgwfChiZT1iZSsxfDApKTwoMHxOcikmKG1lPStM''@;'; put 'put ''ayhjcixtZSxNLEcsa3IpKT5scikpYnJlYWs7Rz1NfTB8YVtmKzExMj4+Ml0mJlFEKGwsa3QsbSksSHQoQmUpLCgwfGt0KSE9KDB8YykmJkphKGt0KSxIdChHZSl9ZWxzZSBhW0E+PjJdPS0xMDA7MHx3dCYmSHQocm4pLDB8dXQmJkh0KHluKSwwfFp0JiZIdChGbiksSHQocXIpfX1mdW5jdGlv''@;'; put 'put ''biBJOWUobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxwfD0wLG18PTAsQXw9MDt2YXIgQ3IscXIsTHIsYTAsRmksSG8sbG8sd2EsQ2ksSGEsZnMsamwsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0w''@;'; put 'put ''LEdlPTAsbHQ9MCxNdD0wLGt0PTAsYXQ9MCxFdD0wLFp0PTAsdXQ9MCx3dD0wLHJuPTAseW49MCxGbj0wLGxyPTAsTnI9MCxrcj0wLGNyPTAsUGk9MCx5YT0wLFZsPTAsQjA9MCxTYT0wO2lmKGpsPW9lLG9lPW9lKzMyfDAsbG89amwrMjB8MCxDaT1qbCsxNnwwLEhhPWpsKzEyfDAsZnM9amwr''@;'; put 'put ''OHwwLENyPWpsLG1lPStfWyhmfD0wKT4+M10scGU9K19bKGs9ZisyNHwwKT4+M10sSz0rX1soTT1mKzMyfDApPj4zXSxxcj0rX1tmKzcyPj4zXSxMcj0wfGFbZis4MD4+Ml0sYTA9K19bZis4OD4+M10sYmU9K19bZis5Nj4+M10sRmk9MHxhW2YrMTA0Pj4yXSxhWyhIbz1qbCsyNHwwKT4+Ml09''@;'; put 'put ''MCxhW2xvPj4yXT0xMCxhW0NpPj4yXT0wLGFbSGE+PjJdPTAsYVtmcz4+Ml09MCxfW0NyPj4zXT0wLEQ9MHxhWyh3YT1mKzU2fDApPj4yXSwhKDA9PSgwfGMpfCgwfExyKTwxfHwoUGk9MHxhW2M+PjJdLHc9MHxhW2MrND4+Ml0sKDB8bCk8MXwoMHx3KTwxKSkpeygwfHcpPCgwfGFbZis1Mj4+''@;'; put 'put ''Ml0pPyhWbD0wLHlhPTApOihWbD0wfG1YKEQpLGFbQ2k+PjJdPTB8UW4oODAqbHwwKSxhW0hhPj4yXT0wfFFuKDgwKSxhW2ZzPj4yXT0wfFFuKDgwKSx5YT0xKSxhW0E+PjJdPTA7ZTpkb3tpZigoMHxQaSk9PSgwfHcpKXtSPTB8czgoYywxKSxscj0wfGFbUisyMD4+Ml0sTnI9MHxhW1IrMjQ+''@;'; put 'put ''PjJdO3Q6ZG97aWYoMHxhW2YrMTY+PjJdKWZvcihmdygwfGFbZisxMDg+PjJdKSxiPTB8dnIoUGksbCksdz0wOzspe2lmKCgwfHcpPj0oMHxiKSlicmVhayB0O19bbSsodzw8Myk+PjNdPStSaCgpLHc9dysxfDB9fXdoaWxlKDApO2ZvcihwZTwwJiYocGU9K1VEKFIsbCxtKSxfW2s+PjNdPXBl''@;'; put 'put ''KSxLPDAmJihfW00+PjNdPS4yLEs9LjIpLG1lPj0wJiYoX1tmPj4zXT0tMSxtZT0tMSksRm49K0dsKCtwZSwrKHluPTEtbWUpKSxFdD0rR2woK0ssLjMzMzMzMzMzMzMzMzMzMzMqKDItbWUpKS9wZSxrcj0wfFFuKFp0PWw8PDMpLGNyPTB8UW4oWnQ9MHx2cihQaSxadCkpLHV0PTAhPSgwfHlh''@;'; put 'put ''KSx3dD1mKzExNnwwLHJuPWYrNjR8MCxNdD0tMT09bWUsa3Q9MCE9KDB8cCksYXQ9MS8rKDB8UGkpLHc9MCxHZT0wLGx0PTA7Oyl7R2U9R2UrMXwwLERvKDB8Y3IsMHxtLDB8WnQpLHV0JiYoRD13PTB8S3NlKFZsKSx3PTB8clMobCxQaSx3LG0sMD09KDB8YVt3dD4+Ml0pPzA6cCkpLE9lPTAs''@;'; put 'put ''bWU9MCxMZT0wLHBlPTA7dDpmb3IoOygwfExlKTwoMHxQaSk7KXtmb3IoYj0wOyEoKDB8Yik+PSgwfGwpKTspX1trcisoYjw8Myk+PjNdPTAsYj1iKzF8MDtmb3IoTT1scisoKGV0PUxlKzF8MCk8PDIpfDAscnQ9MHx2cihMZSxsKSxrPTB8YVtscisoTGU8PDIpPj4yXTshKCgwfGspPj0oMHxh''@;'; put 'put ''W00+PjJdKSk7KXtiPTB8YVsoRz1Ocisoazw8Mil8MCk+PjJdO246ZG97aWYoKDB8YikhPSgwfExlKSlmb3IoSz0rU2MobSxsLExlLGIpKkV0LGI9MDs7KXtpZigoMHxiKT49KDB8bCkpYnJlYWsgbjtCMD1LKigrX1ttKyhiK3J0PDwzKT4+M10tK19bbSsoKDB8dnIoMHxhW0c+PjJdLGwpKSti''@;'; put 'put ''PDwzKT4+M10pLF9bKGplPWtyKyhiPDwzKXwwKT4+M109K19bamU+PjNdLUIwLGI9YisxfDB9fXdoaWxlKDApO2s9aysxfDB9bjpkb3tpZih1dCl7aWYoa0sodywrX1tybj4+M10sbSsocnQ8PDMpfDAsTGUsSG8sbG8sQ2ksSGEsZnMsQ3IsQSksT2U9K19bQ3I+PjNdK09lLG1lKz0rKDB8KGpl''@;'; put 'put ''PTB8YVtIbz4+Ml0pKSwwfGFbQT4+Ml0pe009a3Isaz1jcix3PWtyLGI9Y3IsRz02NzticmVhayBlfWZvcihNPTB8YVtmcz4+Ml0sRz0wfGFbSGE+PjJdLExlPTB8YVtDaT4+Ml0sYj0wOzspe2lmKCgwfGIpPj0oMHxqZSkpYnJlYWsgbjtmb3IoQjA9KEIwPStfW00rKGI8PDMpPj4zXSk+MWUt''@;'; put 'put ''MTU/QjA6MWUtMTUsQmU9RysoYjw8Myl8MCxIZT0wfHZyKGIsbCksSz0rR2woK0IwLCt5biksSz0xLyhNdD9CMCpCMDpLKSxrPTA7ISgoMHxrKT49KDB8bCkpOylfWyhTYT1rcisoazw8Myl8MCk+PjNdPStfW0JlPj4zXSpGbiooK19bbSsoaytydDw8Myk+PjNdLStfW0xlKyhrK0hlPDwzKT4+''@;'; put 'put ''M10pKksrICtfW1NhPj4zXSxrPWsrMXwwO2I9YisxfDB9fWVsc2UgaWYoa3QmMCE9KDB8YVt3dD4+Ml0pKWZvcihiPTA7Oyl7aWYoKDB8Yik9PSgwfFBpKSlicmVhayBuO3I6ZG97aWYoKDB8YikhPSgwfExlKSlmb3IoQjA9K0MxKG0sbCxMZSxiKSxNPXArKGI8PDMpfDAsRz0wfHZyKGIsbCks''@;'; put 'put ''Sz0rR2woK0IwLCt5biksSz0xLyhNdD9CMCpCMDpLKSxrPTA7Oyl7aWYoKDB8ayk+PSgwfGwpKWJyZWFrIHI7X1soamU9a3IrKGs8PDMpfDApPj4zXT0rX1tNPj4zXSpGbiooK19bbSsoaytydDw8Myk+PjNdLStfW20rKGsrRzw8Myk+PjNdKSpLKyArX1tqZT4+M10saz1rKzF8MH19d2hpbGUo''@;'; put 'put ''MCk7Yj1iKzF8MH1lbHNlIGZvcihiPTA7Oyl7aWYoKDB8Yik9PSgwfFBpKSlicmVhayBuO3I6ZG97aWYoKDB8YikhPSgwfExlKSlmb3IoQjA9K0MxKG0sbCxMZSxiKSxNPTB8dnIoYixsKSxLPStHbCgrQjAsK3luKSxLPTEvKE10P0IwKkIwOkspLGs9MDs7KXtpZigoMHxrKT49KDB8bCkpYnJl''@;'; put 'put ''YWsgcjtfWyhqZT1rcisoazw8Myl8MCk+PjNdPSgrX1ttKyhrK3J0PDwzKT4+M10tK19bbSsoaytNPDwzKT4+M10pKkZuKksrICtfW2plPj4zXSxrPWsrMXwwfX13aGlsZSgwKTtiPWIrMXwwfX13aGlsZSgwKTtmb3IoSz0wLGI9MDshKCgwfGIpPj0oMHxsKSk7KUs9KEIwPStfW2tyKyhiPDwz''@;'; put 'put ''KT4+M10pKkIwK0ssYj1iKzF8MDtwZT0oSz0rRjAoK0spKStwZTtuOmRve2lmKEs+MClmb3IoSz0xL0ssYj0wOzspe2lmKCgwfGIpPj0oMHxsKSl7Yj0wO2JyZWFrIG59X1soU2E9a3IrKGI8PDMpfDApPj4zXT0rX1tTYT4+M10qSyxiPWIrMXwwfWVsc2UgYj0wfXdoaWxlKDApO2Zvcig7Oyl7''@;'; put 'put ''aWYoKDB8Yik+PSgwfGwpKXtMZT1ldDtjb250aW51ZSB0fV9bKFNhPW0rKGIrcnQ8PDMpfDApPj4zXT0rX1tTYT4+M10rICtfW2tyKyhiPDwzKT4+M10qYmUsYj1iKzF8MH19aWYoMHx3JiYoZ0wodyksdlgoVmwsbWUqYXQqNStPZSphdCkpLCEoKDB8R2UpPCgwfExyKSYoYmU9K0xrKEZpLGJl''@;'; put 'put ''LHBlLGx0LGEwKSk+cXIpKWJyZWFrO2x0PXBlfTB8YVtmKzExMj4+Ml0/KFFEKGwsUixtKSxNPWtyLGs9Y3IsYj1jcix3PWtyLEc9NjYpOihNPWtyLGs9Y3IsYj1jcix3PWtyLEc9NjYpfWVsc2UgYVtBPj4yXT0tMTAwLFI9YyxNPTAsaz0wLGI9MCx3PTAsRz02Nn13aGlsZSgwKTs2Nj09KDB8''@;'; put 'put ''RykmJnlhJiYoRz02NyksNjc9PSgwfEcpJiYoUlYoVmwpLGFbd2E+PjJdPUQpLDB8ayYmSHQoYiksKDB8UikhPSgwfGMpJiZKYShSKSwwfE0mJkh0KHcpLDB8KHc9MHxhW0NpPj4yXSkmJkh0KHcpLDB8KHc9MHxhW0hhPj4yXSkmJkh0KHcpLDB8KHc9MHxhW2ZzPj4yXSkmJkh0KHcpfW9lPWps''@;'; put 'put ''fWZ1bmN0aW9uIEpEKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGZ8PTAsbXw9MCxBfD0wLHc9K3csYnw9MDt2YXIgTHIsYTAsRmksUGksSG8sbG8sVmwsd2EsSGEsZnMsamwsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0w''@;'; put 'put ''LGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCxybj0wLHluPTAsRm49MCxscj0wLE5yPTAsa3I9MCxjcj0wLENyPTAscXI9MCx5YT0wLENpPTAsQjA9MCxTYT0wO2lmKGpsPW9lLG9lPW9lKzQ4fDAsUj1qbCs4fDAsd2E9amwrMzZ8MCxMcj1q''@;'; put 'put ''bCszMnwwLEhhPWpsKzI4fDAsZnM9amwrMjR8MCxhMD1qbCxHPStfWyhwfD0wKT4+M10scGU9K19bKEs9cCszMnwwKT4+M10sRmk9K19bcCs3Mj4+M10sUGk9MHxhW3ArODA+PjJdLEhvPStfW3ArODg+PjNdLGJlPStfW3ArOTY+PjNdLGxvPTB8YVtwKzEwND4+Ml0sYVsoVmw9amwrNDB8MCk+''@;'; put 'put ''PjJdPTAsYVt3YT4+Ml09MTAsYVtMcj4+Ml09MCxhW0hhPj4yXT0wLGFbZnM+PjJdPTAsX1thMD4+M109MCwhKDA9PSgwfGMpfCgwfFBpKTwxfHwoeWE9MHxhW2M+PjJdLEQ9MHxhW2MrND4+Ml0sKDB8bCk8MXwoMHxEKTwxKSkpe2lmKDAhPSgwfGFbcCsxMzI+PjJdKSYmKDB8RCk+PSgwfGFb''@;'; put 'put ''cCs1Mj4+Ml0pPyhNPTB8UW4oODAqbHwwKSxhW0xyPj4yXT1NLGFbSGE+PjJdPTB8UW4oODApLGFbZnM+PjJdPTB8UW4oODApLG1lPTEsaz1NKToobWU9MCxrPTAsTT0wKSxhW2I+PjJdPTAsKDB8eWEpPT0oMHxEKSl7cXI9MHxzOChjLDEpLGY/KENyPTB8YVtmKzI4Pj4yXSxrPWYpOihDcj0w''@;'; put 'put ''LGs9cXIpLGNyPTB8YVtrKzI0Pj4yXSxrcj0wfGFbaysyMD4+Ml0sdzwwJiYoa3Q9K2Z1bmN0aW9uIEQ5ZShsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wO2lmKGZ8PTApe209MCxwPTA7ZTpmb3IoOyEoKDB8bSk+PSgwfGwpKTspZm9yKEE9bSsxfDAsdz0wfGFbYyso''@;'; put 'put ''QTw8Mik+PjJdLG09MHxhW2MrKG08PDIpPj4yXTs7KXtpZigoMHxtKT49KDB8dykpe209QTtjb250aW51ZSBlfWI9K19bZisobTw8Myk+PjNdK3AsbT1tKzF8MCxwPWJ9cC89KygwfGFbYysobDw8Mik+PjJdKX1lbHNlIHA9MTtyZXR1cm4rcH0oeWEsa3IsQ3IpLHc9KE10PSsoMHxhW2tyKyh5''@;'; put 'put ''YTw8Mik+PjJdKSkvKChHZT0rKDB8eWEpKSpHZS1NdCkqdy8rR2woK2t0LCsoRysxKSksTnI9MHxhWzE1NzEyXSxfW1I+PjNdPWt0LF9bUis4Pj4zXT13LFQwKE5yLDkyMjMxLFIpKTtlOmRve2lmKDB8YVtwKzE2Pj4yXSlmb3IoQ3UoOTIyNTMsMjQsMSwwfGFbMTU3MTJdKSxmdygwfGFbcCsx''@;'; put 'put ''MDg+PjJdKSxNPTB8dnIoeWEsbCksaz0wOzspe2lmKCgwfGspPj0oMHxNKSlicmVhayBlO19bQSsoazw8Myk+PjNdPStSaCgpLGs9aysxfDB9fXdoaWxlKDApOyhmdW5jdGlvbiB5WChsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiZSxPZSxMZSx3PTAsYj0wLGs9''@;'; put 'put ''MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxCZT0wO0xlPW9lLG9lPW9lKzE2fDAsT2U9TGUsYmU9MD09KDB8KEF8PTApKSxrPTAsTT0wLEQ9MSxiPTA7ZTpmb3IoOyEoKDB8Yik+PSgwfGwpKTspZm9yKHBlPWIrMXwwLG1lPXArKHBlPDwyKXwwLEs9MHxhW3ArKGI8PDIpPj4yXTs7''@;'; put 'put ''KXtpZigoMHxLKT49KDB8YVttZT4+Ml0pKXtiPXBlO2NvbnRpbnVlIGV9dz0wfGFbbSsoSzw8Mik+PjJdO3Q6ZG97aWYoKDB8dykhPSgwfGIpKWZvcihSPStDMShmLGMsYix3KSxiZXx8KEQ9K19bQSsoSzw8Myk+PjNdKSxCZT0xLyhEKkQpLEc9RCpSKkJlLFI9UipSKkJlLHc9MDs7KXtpZigo''@;'; put 'put ''MHx3KT49KDB8YykpYnJlYWsgdDt3PXcrMXwwLGsrPVIsTSs9R319d2hpbGUoMCk7Sz1LKzF8MH1mb3Ioaz1NL2ssYj0wfHZyKGMsbCksdz0wOyEoKDB8dyk+PSgwfGIpKTspX1soYz1mKyh3PDwzKXwwKT4+M109K19bYz4+M10qayx3PXcrMXwwO2Y9MHxhWzE1NzEyXSxfW09lPj4zXT1rLFQw''@;'; put 'put ''KGYsOTIyNzgsT2UpLG9lPUxlfSkoeWEsbCxBLGtyLGNyLENyKSxwZTwwJiYoX1tLPj4zXT0uMiksRz49MCYmKF9bcD4+M109LTEsRz0tMSksRm49MHxRbihscj1sPDwzKSxOcj0wfFFuKGxyPTB8dnIoeWEsbHIpKSxFdD0wIT0oMHxtZSksWnQ9cCsxMTZ8MCx1dD0wPT0oMHxDciksd3Q9cCs4''@;'; put 'put ''fDAscm49MCE9KDB8bSkseW49LTE9PUcsa3Q9MS1HLGF0PXArNjR8MCxrPTAsbHQ9MCxNdD0wLEc9MSxHZT1iZTtlOmZvcig7Oyl7bHQ9bHQrMXwwLERvKDB8TnIsMHxBLDB8bHIpLEV0JiYoaz0wfHJTKGwseWEsMTAsQSwwPT0oMHxhW1p0Pj4yXSk/MDptKSksbWU9MCxiZT0wO3Q6Zm9yKDso''@;'; put 'put ''MHxtZSk8KDB8eWEpOyl7Zm9yKE09MDshKCgwfE0pPj0oMHxsKSk7KV9bRm4rKE08PDMpPj4zXT0wLE09TSsxfDA7Zm9yKEs9a3IrKChydD1tZSsxfDApPDwyKXwwLGV0PTB8dnIobWUsbCksUj0wfGFba3IrKG1lPDwyKT4+Ml07ISgoMHxSKT49KDB8YVtLPj4yXSkpOyl7TT0wfGFbKGY9Y3Ir''@;'; put 'put ''KFI8PDIpfDApPj4yXTtuOmRve2lmKCgwfE0pIT0oMHxtZSkpe2plPStDMShBLGwsbWUsTSksdXR8fChHPStfW0NyKyhSPDwzKT4+M10pLHBlPStfW3d0Pj4zXTtyOmRve2lmKDIhPXBlKWlmKDE9PXBlKWZvcihwZT0xLyhHKkcpKihqZS1HKSxPZT0xL2plLE09MDs7KXtpZigoMHxNKT49KDB8''@;'; put 'put ''bCkpYnJlYWsgcjtMZT1wZSooK19bQSsoTStldDw8Myk+PjNdLStfW0ErKCgwfHZyKDB8YVtmPj4yXSxsKSkrTTw8Myk+PjNdKSpPZSxfWyhIZT1GbisoTTw8Myl8MCk+PjNdPStfW0hlPj4zXS1MZSxNPU0rMXwwfWVsc2UgZm9yKHBlPTEvK0dsKCtHLCsocGUrMSkpLE9lPWplLUcsTGU9MS9q''@;'; put 'put ''ZSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGwpKWJyZWFrIHI7QjA9cGUqKEIwPStfW0ErKE0rZXQ8PDMpPj4zXS0rX1tBKygoMHx2cigwfGFbZj4+Ml0sbCkpK008PDMpPj4zXSkqK0dsKCtPZSwrICtfW3d0Pj4zXSkqTGUsX1soSGU9Rm4rKE08PDMpfDApPj4zXT0rX1tIZT4+M10tQjAsTT1NKzF8''@;'; put 'put ''MH1lbHNlIGZvcihwZT1qZS1HLHBlPXBlKnBlKigxLyhHKkcqRykpLE9lPTEvamUsTT0wOzspe2lmKCgwfE0pPj0oMHxsKSlicmVhayByO0IwPXBlKigrX1tBKyhNK2V0PDwzKT4+M10tK19bQSsoKDB8dnIoMHxhW2Y+PjJdLGwpKStNPDwzKT4+M10pKk9lLF9bKEhlPUZuKyhNPDwzKXwwKT4+''@;'; put 'put ''M109K19bSGU+PjNdLUIwLE09TSsxfDB9fXdoaWxlKDApO2lmKHJuJjAhPSgwfGFbWnQ+PjJdKSlmb3IoRD1tKyhSPDwzKXwwLHBlPStHbCgramUsK2t0KSxwZT0xLyh5bj9qZSpqZTpwZSksTT0wOzspe2lmKCgwfE0pPj0oMHxsKSlicmVhayBuO0IwPStfW0Q+PjNdKncqKCtfW0ErKE0rZXQ8''@;'; put 'put ''PDMpPj4zXS0rX1tBKygoMHx2cigwfGFbZj4+Ml0sbCkpK008PDMpPj4zXSkqcGUsX1soSGU9Rm4rKE08PDMpfDApPj4zXT0rX1tIZT4+M10tQjAsTT1NKzF8MH1lbHNlIGZvcihwZT0rR2woK2plLCtrdCkscGU9MS8oeW4/amUqamU6cGUpLE09MDs7KXtpZigoMHxNKT49KDB8bCkpYnJlYWsg''@;'; put 'put ''bjtCMD0oK19bQSsoTStldDw8Myk+PjNdLStfW0ErKCgwfHZyKDB8YVtmPj4yXSxsKSkrTTw8Myk+PjNdKSp3KnBlLF9bKEhlPUZuKyhNPDwzKXwwKT4+M109K19bSGU+PjNdLUIwLE09TSsxfDB9fX13aGlsZSgwKTtSPVIrMXwwfW46ZG97aWYoRXQpe2lmKGtLKGssK19bYXQ+PjNdLEErKGV0''@;'; put 'put ''PDwzKXwwLG1lLFZsLHdhLExyLEhhLGZzLGEwLGIpLGY9MHxhW1ZsPj4yXSwwfGFbYj4+Ml0pYnJlYWsgZTtmb3IoUj0wfGFbZnM+PjJdLEs9MHxhW0hhPj4yXSxtZT0wfGFbTHI+PjJdLE09MDs7KXtpZigoMHxNKT49KDB8Zikpe3BlPTAsTT0wO2JyZWFrIG59Zm9yKEIwPShCMD0rX1tSKyhN''@;'; put 'put ''PDwzKT4+M10pPjFlLTE1P0IwOjFlLTE1LEJlPUsrKE08PDMpfDAsSGU9MHx2cihNLGwpLHBlPStHbCgrQjAsK2t0KSxwZT0xLyh5bj9CMCpCMDpwZSksRD0wOyEoKDB8RCk+PSgwfGwpKTspX1soU2E9Rm4rKEQ8PDMpfDApPj4zXT0rX1tCZT4+M10qdyooK19bQSsoRCtldDw8Myk+PjNdLStf''@;'; put 'put ''W21lKyhEK0hlPDwzKT4+M10pKnBlKyArX1tTYT4+M10sRD1EKzF8MDtNPU0rMXwwfX1lbHNlIGlmKHJuJjAhPSgwfGFbWnQ+PjJdKSlmb3IoTT0wOzspe2lmKCgwfE0pPT0oMHx5YSkpe3BlPTAsTT0wO2JyZWFrIG59cjpkb3tpZigoMHxNKSE9KDB8bWUpKWZvcihCMD0rQzEoQSxsLG1lLE0p''@;'; put 'put ''LGY9bSsoTTw8Myl8MCxSPTB8dnIoTSxsKSxwZT0rR2woK0IwLCtrdCkscGU9MS8oeW4/QjAqQjA6cGUpLEQ9MDs7KXtpZigoMHxEKT49KDB8bCkpYnJlYWsgcjtfWyhIZT1GbisoRDw8Myl8MCk+PjNdPStfW2Y+PjNdKncqKCtfW0ErKEQrZXQ8PDMpPj4zXS0rX1tBKyhEK1I8PDMpPj4zXSkq''@;'; put 'put ''cGUrICtfW0hlPj4zXSxEPUQrMXwwfX13aGlsZSgwKTtNPU0rMXwwfWVsc2UgZm9yKE09MDs7KXtpZigoMHxNKT09KDB8eWEpKXtwZT0wLE09MDticmVhayBufXI6ZG97aWYoKDB8TSkhPSgwfG1lKSlmb3IoQjA9K0MxKEEsbCxtZSxNKSxmPTB8dnIoTSxsKSxwZT0rR2woK0IwLCtrdCkscGU9''@;'; put 'put ''MS8oeW4/QjAqQjA6cGUpLEQ9MDs7KXtpZigoMHxEKT49KDB8bCkpYnJlYWsgcjtfWyhIZT1GbisoRDw8Myl8MCk+PjNdPSgrX1tBKyhEK2V0PDwzKT4+M10tK19bQSsoRCtmPDwzKT4+M10pKncqcGUrICtfW0hlPj4zXSxEPUQrMXwwfX13aGlsZSgwKTtNPU0rMXwwfX13aGlsZSgwKTtmb3Io''@;'; put 'put ''OyEoKDB8TSk+PSgwfGwpKTspcGU9KEIwPStfW0ZuKyhNPDwzKT4+M10pKkIwK3BlLE09TSsxfDA7YmU9KHBlPStGMCgrcGUpKStiZTtuOmRve2lmKHBlPjApZm9yKHBlPTEvcGUsTT0wOzspe2lmKCgwfE0pPj0oMHxsKSl7TT0wO2JyZWFrIG59X1soU2E9Rm4rKE08PDMpfDApPj4zXT0rX1tT''@;'; put 'put ''YT4+M10qcGUsTT1NKzF8MH1lbHNlIE09MH13aGlsZSgwKTtmb3IoOzspe2lmKCgwfE0pPj0oMHxsKSl7bWU9cnQ7Y29udGludWUgdH1fWyhTYT1BKyhNK2V0PDwzKXwwKT4+M109K19bU2E+PjNdKyArX1tGbisoTTw8Myk+PjNdKkdlLE09TSsxfDB9fWlmKDB8ayYmZ0woayksISgoMHxsdCk8''@;'; put 'put ''KDB8UGkpJihHZT0rTGsobG8sR2UsYmUsTXQsSG8pKT5GaSkpe0NpPTgzO2JyZWFrfU10PWJlfTgzPT0oMHxDaSkmJjB8YVtwKzExMj4+Ml0mJlFEKGwscXIsQSksSHQoTnIpLCgwfHFyKSE9KDB8YykmJkphKHFyKSxIdChGbiksTT1rPTB8YVtMcj4+Ml19ZWxzZSBhW2I+PjJdPS0xMDA7MHxN''@;'; put 'put ''JiZIdChrKSwwfChrPTB8YVtIYT4+Ml0pJiZIdChrKSwwfChrPTB8YVtmcz4+Ml0pJiZIdChrKX1vZT1qbH1mdW5jdGlvbiB0MmUobCxjLGYpe2Z8PTA7dmFyIEQsUixHLEsscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLHBlPTA7Uj0wfGFbMjArKGN8PTApPj4yXSxHPTB8YVtjKzI0Pj4y''@;'; put 'put ''XSxLPTB8UW4oKGx8PTApPDwzKSxEPTB8YVtjPj4yXSxrPTA7ZTpmb3IoOygwfGspPCgwfEQpOyl7Zm9yKGM9MDshKCgwfGMpPj0oMHxsKSk7KV9bSysoYzw8Myk+PjNdPTAsYz1jKzF8MDtmb3IoYj0wfGFbUisoKE09aysxfDApPDwyKT4+Ml0sdz0wfGFbUisoazw8Mik+PjJdLGM9MDshKCgw''@;'; put 'put ''fHcpPj0oMHxiKSk7KXtpZigoMHwocD0wfGFbRysodzw8Mik+PjJdKSkhPSgwfGspKXtmb3IoQT0wfHZyKHAsbCkscD0wOyEoKDB8cCk+PSgwfGwpKTspX1socGU9SysocDw8Myl8MCk+PjNdPStfW3BlPj4zXSsgK19bZisoQStwPDwzKT4+M10scD1wKzF8MDtjPWMrMXwwfXc9dysxfDB9aWYo''@;'; put 'put ''KDB8Yyk8PTApaz1NO2Vsc2UgZm9yKG09LjUvKygwfGMpLHA9MHx2cihrLGwpLGM9MDs7KXtpZigoMHxjKT49KDB8bCkpe2s9TTtjb250aW51ZSBlfV9bKHBlPWYrKGMrcDw8Myl8MCk+PjNdPStfW0srKGM8PDMpPj4zXSptKy41KitfW3BlPj4zXSxjPWMrMXwwfX1IdChLKX1mdW5jdGlvbiBP''@;'; put 'put ''OWUobCl7dmFyIHcsYixrLE0sRCxjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcihiPTB8YVsyMCsobHw9MCk+PjJdLGs9MHxhW2wrMjQ+PjJdLE09MHxRbig0Kygodz0wfGFbbD4+Ml0pPDwyKXwwKSxsPTA7Oyl7aWYoKDB8bCk+KDB8dykpe2Y9MCxwPTA7YnJlYWt9YVtNKyhsPDwyKT4+Ml09MCxs''@;'; put 'put ''PWwrMXwwfWZvcig7ISgoMHxwKT49KDB8dykpOyl7Zm9yKEE9MHxhW2IrKChtPXArMXwwKTw8Mik+PjJdLGw9MCxjPTB8YVtiKyhwPDwyKT4+Ml07ISgoMHxjKT49KDB8QSkpOylsPWwrKCgwfHApIT0oMHxhW2srKGM8PDIpPj4yXSkmMSl8MCxjPWMrMXwwO2FbKEE9TSsobDw8Mil8MCk+PjJd''@;'; put 'put ''PXA9MSsoMHxhW0E+PjJdKXwwLGY9KDB8Zik+KDB8cCk/ZjpwLHA9bX1yZXR1cm4gbD0uOCorKDB8Zik8KEQ9KygwfGFbTSs0Pj4yXSkpJiYuMyorKDB8dyk8RD8xOjAsSHQoTSksMHxsfWZ1bmN0aW9uIG4yZShsLGMsZil7bHw9MCxmfD0wO3ZhciBHLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0w''@;'; put 'put ''LE09MCxEPTAsUj0wLEs9MCxwZT0wLG1lPTA7Zm9yKEc9b2Usb2U9b2UrNDh8MCxSPUcrMTZ8MCxrPUcsdz0wfHZyKGN8PTAsYyksbT0wOzspe2lmKCgwfG0pPj0oMHx3KSl7bT0wO2JyZWFrfV9bUisobTw8Myk+PjNdPTAsbT1tKzF8MH1mb3IoOzspe2lmKCgwfG0pPj0oMHxjKSl7dz0wO2Jy''@;'; put 'put ''ZWFrfV9baysobTw8Myk+PjNdPTAsbT1tKzF8MH1mb3IoOyEoKDB8dyk+PSgwfGwpKTspe2ZvcihiPTB8dnIodyxjKSxtPTA7ISgoMHxtKT49KDB8YykpOylfWyhEPWsrKG08PDMpfDApPj4zXT0rX1tEPj4zXSsgK19bZisobStiPDwzKT4+M10sbT1tKzF8MDt3PXcrMXwwfWZvcihwPTEvKygw''@;'; put 'put ''fGwpLG09MDs7KXtpZigoMHxtKT49KDB8Yykpe3c9MDticmVha31fWyhEPWsrKG08PDMpfDApPj4zXT0rX1tEPj4zXSpwLG09bSsxfDB9Zm9yKDs7KXtpZigoMHx3KT49KDB8bCkpe2I9MDticmVha31mb3IoYj0wfHZyKHcsYyksbT0wOyEoKDB8bSk+PSgwfGMpKTspX1soRD1mKyhtK2I8PDMp''@;'; put 'put ''fDApPj4zXT0rX1tEPj4zXS0rX1trKyhtPDwzKT4+M10sbT1tKzF8MDt3PXcrMXwwfWZvcig7ISgoMHxiKT49KDB8bCkpOyl7Zm9yKGs9MHx2cihiLGMpLHc9MDshKCgwfHcpPj0oMHxjKSk7KXtmb3IoTT1mKyh3K2s8PDMpfDAsRD0wfHZyKHcsYyksbT0wOygwfG0pIT0oMHxjKTspX1soSz1S''@;'; put 'put ''KyhtK0Q8PDMpfDApPj4zXT0rX1tLPj4zXSsgK19bZisobStrPDwzKT4+M10qK19bTT4+M10sbT1tKzF8MDt3PXcrMXwwfWI9YisxfDB9Zm9yKHA9MD09KHA9K19bUis4Pj4zXSk/MDotKChBPStfW1IrMjQ+PjNdKS0ocGU9K19bUj4+M10pLStGMCgrKHBlKnBlK3AqcCo0KygtMipwZStBKSpB''@;'; put 'put ''KSkpLygyKnApLHAvPUE9K0YwKCsocCpwKzEpKSxBPTEvQSxtPTA7ISgoMHxtKT49KDB8bCkpOylLPTB8dnIobSxjKSxfWyhSPWYrKEs8PDMpfDApPj4zXT0obWU9K19bKEs9ZisoSysxPDwzKXwwKT4+M10pKkErKHBlPStfW1I+PjNdKSpwLF9bSz4+M109bWUqcC1wZSpBLG09bSsxfDA7b2U9''@;'; put 'put ''R31mdW5jdGlvbiByMmUobCxjLGYscCxtLEEsdyxiLGssTSl7IWZ1bmN0aW9uIHdYKGwsYyxmLHAsbSxBLHcsYixrLE0pe2x8PTAsY3w9MCxmfD0wLG18PTAsd3w9MCxifD0wLGt8PTAsTXw9MDt2YXIgcm4sRm4sRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0w''@;'; put 'put ''LEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxNdD0wLGt0PTAsYXQ9MCxFdD0wLHd0PTAseW49MDtGbj1vZSxvZT1vZSsxOTJ8MCxEbygwfChybj1GbiksMHwocHw9MCksMTY4KSxhW00+PjJdPTA7ZG97aWYoMHxjJiYhKCgwfGwpPDF8KDB8KHluPTB8YVtjKzQ+PjJdKSk8MSkpezAhPSgwfEsz''@;'; put 'put ''KGMsMCkpJiYxPT0oMHxhW2MrMTY+PjJdKT8oUj0xPT0oMHxhW3ArMTM2Pj4yXSk/MHxsZyhmKTpmLHd0PTB8bGcoYykpOmJlPTU7ZG97aWYoNT09KDB8YmUpKXtpZigxPT0oMHxhW3ArMTM2Pj4yXSkpe3d0PTB8RWooYywwKSxSPTB8RWooZiwwKTticmVha313dD0wfGw1KGMpLFI9ZjticmVh''@;'; put 'put ''a319d2hpbGUoMCk7aWYoMz09KDB8KEc9MHxhWyhFdD1wKzE2MHwwKT4+Ml0pKT8oMHxiKT4wJiYoYmU9MTQpOigwfGIpPjAmND09KDB8RykmJihiZT0xNCksMTQ9PSgwfGJlKSl7aWYoZj0wfFFuKDB8dnIobDw8MywwfGFbd3Q+PjJdKSkscjJlKGwseW49MHxSOWUod3QsYixrKSwwLHAsMCww''@;'; put 'put ''LGYsMCwwLE0pLGkyZShsLHd0LGIsayx3LGYpLEprKGwsMCwwLDAsMCwwLDB8YVtFdD4+Ml0pLEphKHluKSxIdChmKSwoMHx3dCk9PSgwfGMpKWJyZWFrO0phKHd0KTticmVha31mb3Ioa3Q9MHxoMSgwfGFbcCs0ND4+Ml0sMHxhW3ArNDg+PjJdKSxhW2t0KzE2Pj4yXT1hW3ArNDA+PjJdLEs9''@;'; put 'put ''MHxUQShhdD0wfFZpKHd0LFIsbSxrdCkpLHBlPTB8YVtLKzMyPj4yXT8wfFFuKDB8dnIobDw8MywwfGFbSys0Pj4yXSkpOncsRz0wfE85ZSh3dCksLTEuMDAwMTIzND09K19bcD4+M10mJihfW3A+PjNdPTA9PSgwfEcpPy0xOi0xLjgpLExlPXArMTM2fDAsQmU9cCsyNHwwLEhlPXArMTZ8MCxq''@;'; put 'put ''ZT1wKzEwNHwwLGV0PXArOTZ8MCxydD1sPDwzLEdlPXArMTMyfDAsTXQ9cCs4MHwwOzspe2U6ZG97c3dpdGNoKDB8YVtMZT4+Ml0pe2Nhc2UgMDpzd2l0Y2goMHxhW0dlPj4yXSl7Y2FzZSAwOkFYKGwsMHxhW0srOD4+Ml0scCwwfGFbSysyND4+Ml0scGUsTSk7YnJlYWsgZTtjYXNlIDI6Rz1L''@;'; put 'put ''Kzh8MCxiZT0yOTticmVhaztjYXNlIDM6YmU9KDB8YVsobWU9MHxhWyhHPUsrOHwwKT4+Ml0pPj4yXSk+MWU0PzI5OjMwO2JyZWFrO2RlZmF1bHQ6bWU9MHxhW0srOD4+Ml0sYmU9MzB9aWYoMjk9PSgwfGJlKSl7eDllKGwsMHxhW0c+PjJdLHAsMHxhW0srMjQ+PjJdLHBlLE0pO2JyZWFrIGV9''@;'; put 'put ''aWYoMzA9PSgwfGJlKSl7STllKGwsbWUscCwwfGFbSysyND4+Ml0scGUsTSk7YnJlYWsgZX1icmVhaztjYXNlIDE6X1tldD4+M109MSxhW2plPj4yXT0xLEQ9KE9lPTA9PSgwfGFbSysyOD4+Ml0pKT8uNTouMDUsYVtNdD4+Ml09T2U/NTAwOjEwMCxPZT0wPT0oMHxhW0srMzI+PjJdKSxKRChs''@;'; put 'put ''LDB8YVsoRz1LKzh8MCk+PjJdLDB8YVsobWU9SysxMnwwKT4+Ml0scCwwfGFbKGJlPUsrMjR8MCk+PjJdLHBlLEQsTSksT2UmJihhW0hlPj4yXT0wLF9bZXQ+PjNdPS4wNSxhW2plPj4yXT0wLEpEKGwsMHxhW0c+PjJdLDB8YVttZT4+Ml0scCwwfGFbYmU+PjJdLHBlLC41KkQsTSksSkQobCww''@;'; put 'put ''fGFbRz4+Ml0sMHxhW21lPj4yXSxwLDB8YVtiZT4+Ml0scGUsLjEyNSpELE0pLEpEKGwsMHxhW0c+PjJdLDB8YVttZT4+Ml0scCwwfGFbYmU+PjJdLHBlLC4wMzEyNSpELE0pKX19d2hpbGUoMCk7aWYoIShiZT0wfGFbSyszMj4+Ml0pKXtiZT0zOTticmVha31pZigwfGFbTT4+Ml0pe2JlPTM1''@;'; put 'put ''O2JyZWFrfU9lPTB8YVtLKzE2Pj4yXSxHPTB8YVtLKzQwPj4yXSxtZT0wfGFbYmUrMzI+PjJdPzB8UW4oMHx2cihydCwwfGFbYmUrND4+Ml0pKTp3LEI5ZShsLDB8YVtiZSs4Pj4yXSxPZSwwfGFbYmUrMjA+PjJdLHBlLG1lLEcsLjAwMSorX1tCZT4+M10pLEh0KHBlKSxhW0hlPj4yXT0wLF9b''@;'; put 'put ''QmU+PjNdPS43NSorX1tCZT4+M10sYVtqZT4+Ml09MCxfW2V0Pj4zXT0oKDB8YVs0MCsoMHxhW2JlKzI4Pj4yXSk+PjJdKS05fDApPj4+MDwyPzE6LjEsSz1iZSxwZT1tZX0zNT09KDB8YmUpP0h0KHBlKTozOT09KDB8YmUpJiYoWXgobCx3dCxwLG0sdyxNKSwyPT0oMHxsKSYmbjJlKHluLDIs''@;'; put 'put ''dyksMCE9KEQ9K19bcCsxNTI+PjNdKSYmbzJlKHluLGwsdyxEKSxKayhsLDAsMCwwLDAsMCwwfGFbRXQ+PjJdKSksRG8oMHxwLDB8cm4sMTY4KSwoMHx3dCkhPSgwfGMpJiZKYSh3dCksMD09KDB8Uil8KDB8Uik9PSgwfGYpfHxKYShSKSx5aShrdCksczUoYXQpfX13aGlsZSgwKTtvZT1Gbn0o''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLDAsd3w9MCxifD0wLGt8PTAsTXw9MCl9ZnVuY3Rpb24gUjllKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIE9lLExlLEJlLEhlLGV0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsamU9MDtmb3Io''@;'; put 'put ''ZXQ9b2Usb2U9b2UrMTZ8MCxqZT1ldCxMZT0wfGFbMjArKGx8PTApPj4yXSxCZT0wfGFbbCsyND4+Ml0sSGU9MHxRbihhW2w+PjJdPDwyKSxwPTA7Oyl7aWYoKDB8cCk+PSgwfGFbbD4+Ml0pKXtwPTA7YnJlYWt9YVtIZSsocDw8Mik+PjJdPTEscD1wKzF8MH1mb3IoOzspe2lmKCgwfHApPj0o''@;'; put 'put ''MHxjKSl7cD0wLGY9MDticmVha31hW0hlKyhhW2YrKHA8PDIpPj4yXTw8Mik+PjJdPS0xLHA9cCsxfDB9Zm9yKDs7KXtpZigoMHxmKT49KDB8KEQ9MHxhW2w+PjJdKSkpe2Y9MCxjPTA7YnJlYWt9KDB8YVsoYz1IZSsoZjw8Mil8MCk+PjJdKT4wJiYoYVtjPj4yXT1wLHA9cCsxfDApLGY9Zisx''@;'; put 'put ''fDB9ZTpmb3IoOzspe2Zvcig7Oyl7aWYoKDB8Yyk+PSgwfEQpKWJyZWFrIGU7aWYoKDB8YVtIZSsoYzw8Mik+PjJdKT49MClicmVhaztjPWMrMXwwfWZvcihNPTB8YVtMZSsoKGs9YysxfDApPDwyKT4+Ml0sYj0wfGFbTGUrKGM8PDIpPj4yXTs7KXtpZigoMHxiKT49KDB8TSkpe2M9aztjb250''@;'; put 'put ''aW51ZSBlfW09MHxhW0JlKyhiPDwyKT4+Ml07dDpkb3tpZigoMHxhW0hlKyhtPDwyKT4+Ml0pPi0xKWY9ZisxfDA7ZWxzZSBmb3Iodz0wfGFbTGUrKG0rMTw8Mik+PjJdLEE9MHxhW0xlKyhtPDwyKT4+Ml07Oyl7aWYoKDB8QSk+PSgwfHcpKWJyZWFrIHQ7KDB8KG09MHxhW0JlKyhBPDwyKT4+''@;'; put 'put ''Ml0pKSE9KDB8YykmJihmPSgoMHxhW0hlKyhtPDwyKT4+Ml0pPj4+MzFeMSkrZnwwKSxBPUErMXwwfX13aGlsZSgwKTtiPWIrMXwwfX1jPWY8PDIsKDB8Zik+MD8obWU9MHxRbihjKSxLPWJlPTB8UW4oYykscGU9bWUpOihLPTAscGU9MCxtZT0wLGJlPTApLE9lPTB8YVsxNTcxMl0sYz0wLG09''@;'; put 'put ''MDtlOmZvcig7Oyl7Zm9yKGY9MHxhW2w+PjJdOzspe2lmKCgwfGMpPj0oMHxmKSlicmVhayBlO2lmKCgwfGFbKEc9SGUrKGM8PDIpfDApPj4yXSk+PTApYnJlYWs7Yz1jKzF8MH1mb3IoUj1MZSsoKEQ9YysxfDApPDwyKXwwLE09MHxhW0xlKyhjPDwyKT4+Ml0sZj1tOzspe2lmKCgwfE0pPj0o''@;'; put 'put ''MHxhW1I+PjJdKSl7Yz1ELG09Zjtjb250aW51ZSBlfUE9MHxhWyhtPUJlKyhNPDwyKXwwKT4+Ml07dDpkb3tpZigoMHxhW0hlKyhBPDwyKT4+Ml0pPi0xKWFbcGUrKGY8PDIpPj4yXT1hW0c+PjJdLGFbSysoZjw8Mik+PjJdPWFbSGUrKGFbbT4+Ml08PDIpPj4yXSxmPWYrMXwwO2Vsc2UgZm9y''@;'; put 'put ''KGs9TGUrKEErMTw8Mil8MCxiPTB8YVtMZSsoQTw8Mik+PjJdOzspe2lmKCgwfGIpPj0oMHxhW2s+PjJdKSlicmVhayB0O3c9MHxhWyhtPUJlKyhiPDwyKXwwKT4+Ml07ZG97aWYoKDB8dykhPSgwfGMpJiYoMHxhW0hlKyh3PDwyKT4+Ml0pPi0xKXtpZihhW3BlKyhmPDwyKT4+Ml09YVtHPj4y''@;'; put 'put ''XSx3PWYrMXwwLGFbSysoZjw8Mik+PjJdPWFbSGUrKGFbbT4+Ml08PDIpPj4yXSxmPTB8YVtIZSsoYVttPj4yXTw8Mik+PjJdLDY4IT0oMHwoQT0wfGFbRz4+Ml0pKSl7aWYoNjghPSgwfGYpKXtmPXc7YnJlYWt9Zj02OH1hW2plPj4yXT1BLGFbamUrND4+Ml09ZixUMChPZSw5MjM4MCxqZSks''@;'; put 'put ''Zj13fX13aGlsZSgwKTtiPWIrMXwwfX13aGlsZSgwKTtNPU0rMXwwfX1yZXR1cm4gamU9MHxzZyhtLHAscCxwZSxLLDAsOCw4KSxIdChtZSksSHQoYmUpLEh0KEhlKSxvZT1ldCwwfGplfWZ1bmN0aW9uIGkyZShsLGMsZixwLG0sQSl7bHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBHLEss''@;'; put 'put ''dz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MDtmb3IoSz0wfFFuKGFbKGN8PTApPj4yXTw8Miksdz0wOzspe2lmKCgwfHcpPj0oMHxhW2M+PjJdKSl7dz0wO2JyZWFrfWFbSysodzw8Mik+PjJdPTEsdz13KzF8MH1mb3IoOzspe2lmKCgwfHcpPj0oMHxmKSl7dz0wLE09MDticmVha30oMHwo''@;'; put 'put ''Yj0wfGFbcCsodzw8Mik+PjJdKSk+LTEmJigwfGIpPCgwfGFbYz4+Ml0pJiYoYVtLKyhiPDwyKT4+Ml09LTEpLHc9dysxfDB9Zm9yKDs7KXtpZigoMHxNKT49KDB8KFI9MHxhW2M+PjJdKSkpe009MDticmVha30oMHxhWyhiPUsrKE08PDIpfDApPj4yXSk+LTEmJihhW2I+PjJdPXcsdz13KzF8''@;'; put 'put ''MCksTT1NKzF8MH1mb3IoOyEoKDB8TSk+PSgwfFIpKTspe3c9MHxhW0srKE08PDIpPj4yXTtlOmRve2lmKCgwfHcpPi0xKWZvcihEPTB8dnIoTSxsKSxiPTB8dnIodyxsKSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGwpKWJyZWFrIGU7X1ttKyh3K0Q8PDMpPj4zXT0rX1tBKyhiK3c8PDMpPj4zXSx3''@;'; put 'put ''PXcrMXwwfX13aGlsZSgwKTtNPU0rMXwwfWZvcihHPWMrMjB8MCxBPWMrMjR8MCxSPTA7ISgoMHxSKT49KDB8ZikpOyl7Zm9yKEQ9KE09MHxhWyh3PTB8YVtHPj4yXSkrKDErKGM9MHxhW3ArKFI8PDIpPj4yXSk8PDIpPj4yXSktKHc9MHxhW3crKGM8PDIpPj4yXSl8MCxjPTB8dnIoYyxsKSxi''@;'; put 'put ''PTA7ISgoMHxiKT49KDB8bCkpOylfW20rKGIrYzw8Myk+PjNdPTAsYj1iKzF8MDtmb3IoOygwfHcpPCgwfE0pOyl7Zm9yKGI9MDshKCgwfGIpPj0oMHxsKSk7KWs9K19bbSsoKDB8dnIoMHxhWygwfGFbQT4+Ml0pKyh3PDwyKT4+Ml0sbCkpK2I8PDMpPj4zXSxfWyhwZT1tKyhiK2M8PDMpfDAp''@;'; put 'put ''Pj4zXT0rX1twZT4+M10rayxiPWIrMXwwO3c9dysxfDB9Zm9yKGs9MS8rKDB8RCksdz0wOyEoKDB8dyk+PSgwfGwpKTspX1socGU9bSsodytjPDwzKXwwKT4+M109K19bcGU+PjNdKmssdz13KzF8MDtSPVIrMXwwfUh0KEspfWZ1bmN0aW9uIEI5ZShsLGMsZixwLG0sQSx3LGIpe2x8PTAsY3w9''@;'; put 'put ''MCxmfD0wLHB8PTAsbXw9MCx3fD0wLGI9K2I7dmFyIEQsUixrPTAsTT0wLEc9MCxLPTA7Uj1vZSxvZT1vZSsxNnwwLGFbKEQ9Uik+PjJdPUF8PTAsUzYoZiwwLG0sMCxELDAsbCk7ZTpkb3tpZigodystMXwwKT4+PjA8Nil7dDJlKGwsYywwfGFbRD4+Ml0pLGs9MHxhW3A+PjJdLE09MHxhW3Ar''@;'; put 'put ''MjA+PjJdLEE9MHxhW3ArMjQ+PjJdLGM9MDt0OmZvcig7Oyl7aWYoKDB8Yyk+PSgwfGspKWJyZWFrIGU7cD1NKygodz1jKzF8MCk8PDIpfDAsYz0wfGFbTSsoYzw8Mik+PjJdO246Zm9yKDs7KXtpZigoMHwoYz1jKzF8MCkpPj0oMHxhW3A+PjJdKSl7Yz13O2NvbnRpbnVlIHR9Zm9yKG09QSso''@;'; put 'put ''Yzw8Mil8MCxmPTA7Oyl7aWYoKDB8Zik+PSgwfGwpKWNvbnRpbnVlIG47Sz0oK1JoKCktLjUpKmIsRz0oMHxhW0Q+PjJdKSsoKDB8dnIoMHxhW20+PjJdLGwpKStmPDwzKXwwLF9bRz4+M109K19bRz4+M10rSyxmPWYrMXwwfX19fX13aGlsZSgwKTtvZT1SfWZ1bmN0aW9uIG8yZShsLGMsZixw''@;'; put 'put ''KXtsfD0wLGN8PTAsZnw9MCxwPStwO3ZhciBNLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wLFI9MCxHPTA7Zm9yKE09b2Usb2U9b2UrMTZ8MCxrPU0sbT0wOzspe2lmKCgwfG0pPj0oMHxjKSl7dz0wO2JyZWFrfV9baysobTw8Myk+PjNdPTAsbT1tKzF8MH1mb3IoOyEoKDB8dyk+PSgwfGwpKTsp''@;'; put 'put ''e2ZvcihiPTB8dnIodyxjKSxtPTA7ISgoMHxtKT49KDB8YykpOylfWyhEPWsrKG08PDMpfDApPj4zXT0rX1tEPj4zXSsgK19bZisobStiPDwzKT4+M10sbT1tKzF8MDt3PXcrMXwwfWZvcihBPTEvKygwfGwpLG09MDs7KXtpZigoMHxtKT49KDB8Yykpe3c9MDticmVha31fWyhEPWsrKG08PDMp''@;'; put 'put ''fDApPj4zXT0rX1tEPj4zXSpBLG09bSsxfDB9Zm9yKDshKCgwfHcpPj0oMHxsKSk7KXtmb3IoYj0wfHZyKHcsYyksbT0wOyEoKDB8bSk+PSgwfGMpKTspX1soRD1mKyhtK2I8PDMpfDApPj4zXT0rX1tEPj4zXS0rX1trKyhtPDwzKT4+M10sbT1tKzF8MDt3PXcrMXwwfWZvcihBPStsYSgrKHAq''@;'; put 'put ''PS0uMDE3NDUzMjc3Nzc3Nzc3Nzc2KSkscD0rSWEoK3ApLG09MDshKCgwfG0pPj0oMHxsKSk7KUQ9MHx2cihtLGMpLF9bKGs9ZisoRDw8Myl8MCk+PjNdPShHPStfWyhEPWYrKEQrMTw8Myl8MCk+PjNdKSpwKyhSPStfW2s+PjNdKSpBLF9bRD4+M109RypBLVIqcCxtPW0rMXwwO29lPU19ZnVu''@;'; put 'put ''Y3Rpb24gQlYobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwPStwLG09K20sQXw9MDt2YXIgTSxELE9lLExlLEJlLEhlLHc9MCxiPTAsaz0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLGplPTA7aWYoQmU9MHxhWyhjfD0wKT4+Ml0sSGU9MHxhW2MrMjA+PjJdLE9lPTB8YVtjKzI0Pj4yXSxM''@;'; put 'put ''ZT0wfGFbYysyOD4+Ml0sMHxLMyhjLDApfHxCcig5NTc5NSw5MjM4NywzNyw5MjQwNCksbD0wfFFuKDU2KSxhWyhrPWwrMjB8MCk+PjJdPTAsYVtsKzI0Pj4yXT0yLGFbbCsxMj4+Ml09MCxiPTB8UW4oMTYpLGFbaz4+Ml09YixfW2I+PjNdPXAsX1tiKzg+PjNdPW0sYVtsKzE2Pj4yXT0xMDUs''@;'; put 'put ''X1tsKzQwPj4zXT0uMDEsYVtsKzQ4Pj4yXT1+fitGMCgrICsoMHxhW2M+PjJdKSksYVsoaz1sKzR8MCk+PjJdPTB8WGgoQmUsQmUsKDB8YVsoYj1jKzh8MCk+PjJdKStCZXwwLDEsMSksYj0wfFhoKEJlLEJlLCgwfGFbYj4+Ml0pK0JlfDAsMSwxKSxhW2wrOD4+Ml09YixNPTB8YVsyOCsoaz0w''@;'; put 'put ''fGFbaz4+Ml0pPj4yXSxEPTB8YVtiKzI4Pj4yXSwwPT0oMHxiKXwwPT0oMHxrKSlNNihsKSxsPTA7ZWxzZXtmb3IoUj0wfGFbaysyMD4+Ml0sRz0wfGFbaysyND4+Ml0scGU9MHxhW2IrMjQ+PjJdLGFbKEs9MHxhW2IrMjA+PjJdKT4+Ml09MCxhW1I+PjJdPTAsYz0wLGY9MDshKCgwfGMpPj0o''@;'; put 'put ''MHxCZSkpOyl7Zm9yKGJlPUhlKygobWU9YysxfDApPDwyKXwwLHA9MCxtPTAsdz0wfGFbSGUrKGM8PDIpPj4yXTshKCgwfHcpPj0oMHxhW2JlPj4yXSkpOykoMHwoQT0wfGFbT2UrKHc8PDIpPj4yXSkpIT0oMHxjKSYmKGplPShqZT0oamU9K19bTGUrKHc8PDMpPj4zXSk+PTA/amU6LWplKT4u''@;'; put 'put ''MDE/amU6LjAxLGFbRysoZjw8Mik+PjJdPUEsYVtwZSsoZjw8Mik+PjJdPUEsX1soQT1NKyhmPDwzKXwwKT4+M109LTEsX1tEKyhmPDwzKT4+M109LWplLHA9K19bQT4+M10rcCxtLT1qZSxmPWYrMXwwKSx3PXcrMXwwO2FbRysoZjw8Mik+PjJdPWMsYVtwZSsoZjw8Mik+PjJdPWMsX1tNKyhm''@;'; put 'put ''PDwzKT4+M109LXAsX1tEKyhmPDwzKT4+M109LW0sYVtSKyhtZTw8Mik+PjJdPWY9ZisxfDAsYVtLKyhtZTw8Mik+PjJdPWYsYz1tZX1hW2srOD4+Ml09ZixhW2IrOD4+Ml09Zn1yZXR1cm4gMHxsfWZ1bmN0aW9uIE9rKGwpe002KGx8PTApfWZ1bmN0aW9uIFBWKGwsYyxmLHApe3JldHVybisg''@;'; put 'put ''K24xKGx8PTAsY3w9MCxmfD0wLHB8PTAsLjAwMSl9ZnVuY3Rpb24gX1gobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLG09MCxBPTAsTT0wLEQ9MDtmb3Ioaz0wfFFuKCgwfE5vKGx8PTApKTw8NCksdz0wIT0oMHxwKSxiPWMrOHwwLEE9MHxMdChsKSxtPTA7QTspdyYmKG09bSso''@;'; put 'put ''MD09KDB8bjIoMHwkcihBKSw5MjQ4MSwxMSkpJjEpfDApLF9baysoKE09YVsxMjArKEQ9MHxhW0ErMTY+PjJdKT4+Ml08PDEpPDwzKT4+M109LjUqK19bRCszMj4+M10rICtfW2M+PjNdLF9baysoKDF8TSk8PDMpPj4zXT0uNSorX1tEKzQwPj4zXSsgK19bYj4+M10sQT0wfHp0KGwsQSk7aWYo''@;'; put 'put ''dyYwIT0oMHxtKSl7Zm9yKGM9MHxRbihtPDwyKSxBPTB8THQobCksbT0wO0E7KTB8bjIoMHwkcihBKSw5MjQ4MSwxMSl8fChhW2MrKG08PDIpPj4yXT1hWzEyMCsoMHxhW0ErMTY+PjJdKT4+Ml0sbT1tKzF8MCksQT0wfHp0KGwsQSk7YVtwPj4yXT1jLGFbZj4+Ml09bX1yZXR1cm4gMHxrfWZ1''@;'; put 'put ''bmN0aW9uIENYKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIE9lLExlLEJlLGV0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsSGU9MCxqZT0wLHJ0PTA7aWYoZXQ9b2Usb2U9b2UrMzJ8MCxCZT1ldCsxNnwwLExlPWV0Kzh8MCxPZT1ldCxs''@;'; put 'put ''fD0wKXtmb3IoSGU9MHxObyhsKSxqZT0wfGJmKGwpLGM9MHxMdChsKSxwPTA7YzspYVsxMjArKDB8YVtjKzE2Pj4yXSk+PjJdPXAsYz0wfHp0KGwsYykscD1wKzF8MDtmb3IoSz0wfFFuKHBlPWplPDwyKSxwZT0wfFFuKHBlKSxtZT0wfFFuKGM9amU8PDMpLFI9MHxzaShsLDIsMTAxNTQxLDAp''@;'; put 'put ''LChiZT0wIT0oMHxmKSk/KHA9MHxzaShsLDIsOTI0OTMsMCksRD1HPTB8bXIoYykpOihEPTAscD0wLEc9MCksYj0wPT0oMHxSKSxrPTA9PSgwfHApLHc9MHxMdChsKSxjPTA7dzspe2ZvcihNPTB8YVsxMjArKDB8YVt3KzE2Pj4yXSk+PjJdLEE9MHx5MChsLHcpO0E7KWFbSysoYzw8Mik+PjJd''@;'; put 'put ''PU0sYVtwZSsoYzw8Mik+PjJdPWFbMTIwKygwfGFbMTYrKDB8YVsoMj09KDMmYVtBPj4yXXwwKT9BOkErLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sYnx8KHJ0PTB8Rm8oQSxSKSxhW0xlPj4yXT1PZSwxIT0oMHwkYShydCwxMDEyMDksTGUpKSk/KF9bT2U+PjNdPTEsbT0xKTptPStfW09lPj4z''@;'; put 'put ''XSxfW21lKyhjPDwzKT4+M109bSxrfHwocnQ9MHxGbyhBLHApLGFbQmU+PjJdPU9lLDE9PSgwfCRhKHJ0LDEwMTIwOSxCZSkpP209K19bT2U+PjNdOihfW09lPj4zXT0xLG09MSksX1tEKyhjPDwzKT4+M109bSksQT0wfGswKGwsQSksYz1jKzF8MDt3PTB8enQobCx3KX1jPTB8c2coamUsSGUs''@;'; put 'put ''SGUsSyxwZSxtZSwxLDgpLGJlJiYoYVtmPj4yXT0wfHNnKGplLEhlLEhlLEsscGUsRywxLDgpKSxIdChLKSxIdChwZSksSHQobWUpLEQmJkh0KEcpfWVsc2UgYz0wO3JldHVybiBvZT1ldCwwfGN9ZnVuY3Rpb24ga1gobCl7bHw9MDt2YXIgTSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAs''@;'; put 'put ''az0wLEQ9MCxSPTAsRz0wO009b2Usb2U9b2UrMTZ8MCxrPU07ZTpkb3tpZigwfHMyZShsLGspKXtmb3IoYz0wfGFbMTMyKygwfGFbMTYrKDB8THQobCkpPj4yXSk+PjJdLEE9K19bYz4+M10scD0rX1tjKzg+PjNdLGM9MHxMdChsKTtjOylfWyhtPTB8YVsxMzIrKDB8YVtjKzE2Pj4yXSk+PjJd''@;'; put 'put ''KT4+M109K19bbT4+M10tQSxfWyhtPW0rOHwwKT4+M109K19bbT4+M10tcCxjPTB8enQobCxjKTtmb3IoYz0xJigwIT1BfDAhPXApLGY9MHxMdChsKTs7KXtpZighZilicmVhayBlO2lmKDB8KG09MHx5MChsLGYpKSlicmVhaztmPTB8enQobCxmKX1pZihwPStxMigrKCtfWzgrKGY9MHxhWzEz''@;'; put 'put ''MisoMHxhWzE2KygwfGFbKDI9PSgwfChEPTMmYVttPj4yXSkpP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjNdLSh3PStfWzgrKG09MHxhWzEzMisoMHxhWzE2KygwfGFbKDM9PSgwfEQpP206bSs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+M10pKSwrKCtfW2Y+PjNdLShiPStfW20+''@;'; put 'put ''PjNdKSkpLF9baz4+M109cD0rX1trPj4zXS1wLDAhPXApZm9yKEE9K2xhKCtwKSxwPStJYSgrcCksYz0wfEx0KGwpOzspe2lmKCFjKXtjPTE7YnJlYWsgZX1fWyhrPTB8YVsxMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M109KEc9K19baz4+M10tYikqQStiLShSPStfWyhEPWsrOHwwKT4+M10t''@;'; put 'put ''dykqcCxfW0Q+PjNdPUcqcCt3K1IqQSxjPTB8enQobCxjKX19ZWxzZSBjPTB9d2hpbGUoMCk7cmV0dXJuIG9lPU0sMHxjfWZ1bmN0aW9uIHMyZShsLGMpe2N8PTA7dmFyIHAsbSxmPTA7bT1vZSxvZT1vZSsxNnwwLHA9bSxsPTB8TGkobHw9MCw5MjQ5Nyk7ZG97aWYoMCE9KDB8bCkmJjAhPSgw''@;'; put 'put ''fHVlW2w+PjBdKSl7aWYoZj0rdDMobCxwKSwoMHxhW3A+PjJdKT09KDB8bCkpe2lmKCEoKDB8cjEobCkpPDwyND4+MjQpKXtsPTA7YnJlYWt9Zj0wfWZvcig7Zj4xODA7KWYrPS0zNjA7Zm9yKDtmPD0tMTgwOylmKz0zNjA7X1tjPj4zXT0uMDE3NDUzMjkyNTE5OTQzMjk1KmYsbD0xfWVsc2Ug''@;'; put 'put ''bD0wfXdoaWxlKDApO3JldHVybiBvZT1tLDB8bH1mdW5jdGlvbiBTWChsLGMsZil7dmFyIHA7cmV0dXJuIGN8PTAsZnw9MCwwfE1YKGx8PTAsMD09KDB8KHA9MHxMaShsLDkyNTA3KSkpPzB8Zj9mOjE5NTA1OTpwLGMpfWZ1bmN0aW9uIE1YKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHcsTSxwPTAs''@;'; put 'put ''bT0wLEE9MCxiPTA7aWYoTT1vZSxvZT1vZSszMnwwLHc9TSs4fDAsQT1NLDAhPSgwfChjfD0wKSkmJjAhPSgwfHVlW2M+PjBdKSl7Zm9yKHA9MTc4OTY7bT0wfGFbcCs0Pj4yXTspe2lmKCEoMHxpNChjLG0sMHxhW3ArOD4+Ml0pKSl7Yj02O2JyZWFrfXA9cCsxNnwwfTY9PSgwfGIpJiYoMHxh''@;'; put 'put ''W3ArMTI+PjJdfHwoYVtBPj4yXT1tLFhyKDAsOTI1MTUsQSkscD0xNzg5NiksYVtmPj4yXT1BPTB8YVtwPj4yXSxhW2YrND4+Ml09YVtwKzEyPj4yXSwxOD09KDB8QSkmJmZ1bmN0aW9uIEVYKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcCxBLG09MDtwPW9lLG9lPW9lKzE2fDAsYVsobT1w''@;'; put 'put ''KT4+Ml09QT1wKzR8MCxtPSgwfCRhKGMsMTM3Mzk1LG0pKT4wLGFbZis4Pj4yXT1tJigwfChjPTB8YVtBPj4yXSkpPi0xP2M6MWUzLF9bZisxNj4+M109K2NsKGwsMHxzaShsLDAsOTI2NDgsMCksLTQsLTFlMTApLG9lPXB9KGwsYysoMHxhW3ArOD4+Ml0pfDAsZikpLDB8YVtwKzQ+PjJdfHwo''@;'; put 'put ''KHA9MHxKNihjLDYzKSk8PDI0Pj4yND09NjM/KGFbdz4+Ml09YyxYcigwLDkyNTU3LHcpLHA9MCk6cCY9MjU1LGFbZj4+Ml09MSYocD0wPT0oMHxwKSkscD1wPzkyNjA0OjEzNTcwOSxiPTE1KX1lbHNlIGFbZj4+Ml09MCxwPTEzNTcwOSxiPTE1O3JldHVybiAxNT09KDB8YikmJihhW2YrND4+''@;'; put 'put ''Ml09cCksb2U9TSwwfGZ9ZnVuY3Rpb24gcTcobCxjKXtsfD0wLGN8PTA7dmFyIEEsdyxmPTAscD0wO3c9b2Usb2U9b2UrMTZ8MCxBPXcrOHwwO2Rve2lmKCgwfE5vKGwpKT49Mil7aWYoZj0wfGtYKGwpLGY9KDB8dDgobCkpK2Z8MCxwPTB8YVtjPj4yXSl7aWYocD4+PjA+Mil7c3dpdGNoKDB8''@;'; put 'put ''cCl7Y2FzZSAzOnA9MHx1aChsLDEpO2JyZWFrO2Nhc2UgNDpwPTB8dWgobCwwKTticmVhaztjYXNlIDY6Y2FzZSA1OnA9MDticmVhaztjYXNlIDEwOmNhc2UgOTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTQ6Y2FzZSAxMzpjYXNlIDExOmNhc2UgMTI6YnUobCxwKSxwPTA7YnJlYWs7Y2FzZSAxNTpw''@;'; put 'put ''PTB8dWgobCwtMSk7YnJlYWs7ZGVmYXVsdDphW0E+PjJdPWFbYys0Pj4yXSxYcigwLDkzZTMsQSkscD0wfWY9cCtmfDA7YnJlYWt9aWYoMHxGOWUobCkpe0ZWKCksSHQoMHxhWzQ2ODQ1XSksYVs0Njg0NV09MDticmVha31SayhsKSwwfChwPTI9PSgwfGFbYz4+Ml0pPzB8dTJlKCk6MHxjMmUo''@;'; put 'put ''KSkmJmYyZSgpLEZWKCksSHQoMHxhWzQ2ODQ1XSksYVs0Njg0NV09MCxmPXArZnwwfX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gb2U9dywwfGZ9ZnVuY3Rpb24gdDgobCl7dmFyIG0sYixNLGM9MCxmPTAscD0wLEE9MCx3PTAsaz0wO009b2Usb2U9b2UrNDh8MCx3PU0rMjR8MCxtPU0rMTZ8''@;'; put 'put ''MCxiPU0sYz0wfExpKGx8PTAsMTQwNzQyKTtlOmRve2lmKDA9PSgwfGMpfHwoaz1iKzh8MCxhW20+PjJdPWIsYVttKzQ+PjJdPWsscD0wfCRhKGMsMTA1NTAzLG0pLDA9PSgwfHApKXx8KEE9K19bYj4+M10sK2VvKCtBKTwxZS05KSljPTA7ZWxzZXtpZigxIT0oMHxwKSl7aWYoK2VvKCsoZj0r''@;'; put 'put ''X1trPj4zXSkpPDFlLTkpe2M9MDticmVha319ZWxzZSBfW2s+PjNdPUEsZj1BO2lmKDE9PWYmMT09QSljPTA7ZWxzZSBmb3IoYz0wfEx0KGwpOzspe2lmKCFjKXtjPTE7YnJlYWsgZX1fWyh3PTB8YVsxMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M109K19bdz4+M10qK19bYj4+M10sX1sodz13''@;'; put 'put ''Kzh8MCk+PjNdPStfW3c+PjNdKitfW2s+PjNdLGM9MHx6dChsLGMpfX19d2hpbGUoMCk7cmV0dXJuIG9lPU0sMHxjfWZ1bmN0aW9uIEY5ZShsKXt2YXIgayxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wO2ZvcihrPW9lLG9lPW9lKzE2fDAsdz1rLGFbNDY4NTRdPTB8Tm8obHw9MCks''@;'; put 'put ''ZnVuY3Rpb24gWVgoKXthWzQ2ODU1XT1+fitGMCgrICsoNCsoMHxhWzQ2ODU0XSl8MCkpfSgpLGFbNDY4NjldPTB8UW4oOTYqKDB8YVs0Njg1NF0pfDApLHA9MHxMdChsKSxjPTB8YVs0Njg2OV0sSWModyxsKSxtPStXblt3Pj4yXSxBPStXblt3KzQ+PjJdLEE9KHc9MD09KDB8dWVbdys4Pj4w''@;'; put 'put ''XSkpP0E6LjAxMzg4ODg4ODg4ODg4ODg4OCpBLG09dz9tOi4wMTM4ODg4ODg4ODg4ODg4ODgqbSx3PXc/MjoxLGY9MDs7KXtpZigoMHxmKT49KDB8YVs0Njg1NF0pKXtjPTA7YnJlYWt9aWYoX1tjKzg+PjNdPStfWyhNPTB8YVsxMzIrKDB8YVtwKzE2Pj4yXSk+PjJdKT4+M10sX1tjKzE2Pj4z''@;'; put 'put ''XT0rX1tNKzg+PjNdLDB8ZWZbMyZ3XShjKzQwfDAscCxtLEEpKXtiPTQ7YnJlYWt9YVtjKzI0Pj4yXT1mLGFbYysyOD4+Ml09MSxhW2M+PjJdPXAsYVtjKzg4Pj4yXT0wLGM9Yys5NnwwLGY9ZisxfDAscD0wfHp0KGwscCl9cmV0dXJuIDQ9PSgwfGIpJiYoSHQoMHxhWzQ2ODY5XSksYVs0Njg2''@;'; put 'put ''OV09MCxjPTEpLG9lPWssMHxjfWZ1bmN0aW9uIEZWKCl7dmFyIGw9MCxjPTA7Zm9yKGw9MHxhWzQ2ODY5XSxjPTA7ISgoMHxjKT49KDB8YVs0Njg1NF0pKTspTjJlKGwrNDB8MCksbD1sKzk2fDAsYz1jKzF8MDsoZnVuY3Rpb24geWooKXthWzQ2OTE0XT0wLEh0KDB8YVs0NjkxNV0pLEh0KDB8''@;'; put 'put ''YVs0NjkxNl0pLEh0KDB8YVs0NjkxN10pLGFbNDY5MTVdPTAsYVs0NjkxNl09MCxhWzQ2OTE3XT0wfSkoKSxJMmUoKSxIdCgwfGFbNDY4NjldKX1mdW5jdGlvbiBSayhsKXtsfD0wO3ZhciBwLGssTSxELFIsYz0wLGY9MCxtPTAsQT0wLHc9MCxiPTAsRz0wLEs9MCxwZT0wLG1lPTA7Zm9yKEQ9''@;'; put 'put ''b2Usb2U9b2UrMzJ8MCxrPUQrMTZ8MCxNPUQscD0wfGFbNDY4NTRdLGM9Uj0wfGFbNDY4NjldLGY9MSxtPStfW1IrNDA+PjNdKyhBPStfW1IrOD4+M10pLEE9K19bUis1Nj4+M10rQSx3PStfW1IrNDg+PjNdKyhiPStfW1IrMTY+PjNdKSxiPStfW1IrNjQ+PjNdK2I7ISgoMHxmKT49KDB8cCkp''@;'; put 'put ''OyltZT0rX1tjKzEzNj4+M10rKHBlPStfW2MrMTA0Pj4zXSksSz0rX1tjKzE0ND4+M10rKEc9K19bYysxMTI+PjNdKSxwZT0rX1tjKzE1Mj4+M10rcGUsRz0rX1tjKzE2MD4+M10rRyxjPWMrOTZ8MCxmPWYrMXwwLG09bWU8bT9tZTptLEE9cGU+QT9wZTpBLHc9Szx3P0s6dyxiPUc+Yj9HOmI7''@;'; put 'put ''MHwoYz0wfExpKGwsOTMxMDApKSYmMHx1ZVtjPj4wXSYmKF9bMTczXT0rcHAoYykpLG1lPShwZT0rX1sxNzNdKSooYi13KSxfW2s+PjNdPW0tKHBlKj1BLW0pLF9bays4Pj4zXT13LW1lLF9bTT4+M109cGUrQSxfW00rOD4+M109bWUrYixEWChrLE0pLG9lPUR9ZnVuY3Rpb24gdTJlKCl7dmFy''@;'; put 'put ''IGYsbD0wO2lmKGY9b2Usb2U9b2UrMTZ8MCwwfG44KCkpe3hYKCksbD0wO2Rve045ZSgpLGw9bCsxfDB9d2hpbGUoMCE9KDB8bjgoKSkpO2w9MX1lbHNlIGw9MDtyZXR1cm4gb2U9ZiwwfGx9ZnVuY3Rpb24gYzJlKCl7dmFyIGIsbD0wLGM9MCxmPTAscD0wLG09MDtpZihiPW9lLG9lPW9lKzE2''@;'; put 'put ''fDAsYz0wfG44KCkpe2Zvcih4WCgpLFRYKDApLGhLKDAsMSksbD0wLHA9MCxmPTA7cjgoKSxtPTB8bjgoZj1mKzF8MCk7KWM9KDB8bSk8KDB8Yyk/MDpwKzF8MCxhWzQ2ODQ2XT0xLGMmJihJWCgpLGw9bCsxfDApLFRYKDEpLGhLKDAsMSkscD1jLGM9bTsoZnVuY3Rpb24gaDJlKCl7KGZ1bmN0''@;'; put 'put ''aW9uIFc5ZSgpe0h0KDB8YVs0Njg1Nl0pLGFbNDY4NTZdPTB9KSgpLGZ1bmN0aW9uIGpzKCl7VWsoMTg3NDQ4LDQwKSxIdCgwfGFbNDY4NjVdKSxhWzQ2ODY1XT0wfSgpLFgzKCksV1YoKX0pKCksbD0xfWVsc2UgbD0wO3JldHVybiBvZT1iLDB8bH1mdW5jdGlvbiBmMmUoKXt2YXIgZixsPTAs''@;'; put 'put ''Yz0wLHA9MDtmb3IoZj0wfGFbNDY4NTRdLGw9MHxhWzQ2ODY5XSxjPTA7ISgoMHxjKT49KDB8ZikpOylfWyhwPTB8YVsxMzIrKDB8YVsxNisoMHxhW2w+PjJdKT4+Ml0pPj4yXSk+PjNdPStfW2wrOD4+M10sX1twKzg+PjNdPStfW2wrMTY+PjNdLGw9bCs5NnwwLGM9YysxfDB9ZnVuY3Rpb24g''@;'; put 'put ''bjgobCl7dmFyIFIscGUsRyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7Zm9yKHBlPW9lLG9lPW9lKzQ4fDAsRz1wZSsyNHwwLFI9cGUrOHwwLGY9MHxhWzQ2ODY5XSxwPTB8YVs0Njg1NF0sYz0wOzspe2lmKCgwfGMpPj0oMHxwKSl7bT0wLGM9MDticmVha31hW2Yr''@;'; put 'put ''KDk2KmN8MCkrMzI+PjJdPTAsYz1jKzF8MH1lOmZvcig7ISgoMHxjKT49KHArLTF8MCkpOylmb3IoRD1mKzk2fDAsYz1jKzF8MCxrPWYrOHwwLE09Zis0MHwwLGI9ZiszMnwwLEE9RCx3PWM7Oyl7aWYoKDB8dyk+PSgwfHApKXtmPUQ7Y29udGludWUgZX1wPUErOHwwLGFbUj4+Ml09YVtrPj4y''@;'; put 'put ''XSxhW1IrND4+Ml09YVtrKzQ+PjJdLGFbUis4Pj4yXT1hW2srOD4+Ml0sYVtSKzEyPj4yXT1hW2srMTI+PjJdLGFbRz4+Ml09YVtwPj4yXSxhW0crND4+Ml09YVtwKzQ+PjJdLGFbRys4Pj4yXT1hW3ArOD4+Ml0sYVtHKzEyPj4yXT1hW3ArMTI+PjJdLDB8ajJlKFIsTSxHLEErNDB8MCk/KGFb''@;'; put 'put ''Yj4+Ml09MSxhW0ErMzI+PjJdPTEsZj1tKzF8MCk6Zj1tLEE9QSs5NnwwLHc9dysxfDAsbT1mLHA9MHxhWzQ2ODU0XX1yZXR1cm4gb2U9cGUsMHxtfWZ1bmN0aW9uIHhYKCl7dmFyIGssTSxsPTAsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxSPTA7bTJlKCksaz0wfGFbNDY4NDhd''@;'; put 'put ''LE09MHxhWzQ2ODY5XSxsPTB8YVs0Njg0NV07ZTpmb3IoO3c9bCwhKGw+Pj4wPj1rPj4+MCk7KWlmKChjPWwrNHwwKT4+PjA+PWs+Pj4wKWw9YztlbHNlIGlmKCtfWyhtPTB8YVtjPj4yXSk+PjNdPT0oQT0rX1soZj0wfGFbbD4+Ml0pPj4zXSkpaWYoK19bbSs4Pj4zXT09KHA9K19bZis4Pj4z''@;'; put 'put ''XSkpe2ZvcihiPWwrOHwwLG09MjshKGI+Pj4wPj1rPj4+MCk7KXtpZigrX1soZj0wfGFbYj4+Ml0pPj4zXSE9QSl7RD0xMTticmVha31pZigrX1tmKzg+PjNdIT1wKXtEPTExO2JyZWFrfWI9Yis0fDAsbT1tKzF8MH1pZigxMT09KDB8RCkmJihEPTAsK19bOCsoZj0wfGFbYj4+Ml0pPj4zXT09''@;'; put 'put ''cCkpZm9yKHA9KCtfW2Y+PjNdLUEpLysoMHxtKSxmPTErKCgoYj4+PjA+Yz4+PjA/YjpjKSstMSsoMC13KXwwKT4+PjIpfDAsbD0xOzspe2lmKCgwfGwpPT0oMHxmKSl7bD1iO2NvbnRpbnVlIGV9X1sodz0wfGFbYz4+Ml0pPj4zXT0rX1t3Pj4zXStwKisoMHxsKSxsPWwrMXwwLGM9Yys0fDB9''@;'; put 'put ''Zm9yKDs7KXtpZihjPj4+MD49Yj4+PjApe2w9Yjtjb250aW51ZSBlfV9bKHc9MHxhW2M+PjJdKT4+M109LjUqKCtfW00rKDk2KihSPTB8YVsxNisobT0wfGFbbD4+Ml0pPj4yXSl8MCkrNTY+PjNdLStfW00rKDk2KlJ8MCkrNDA+PjNdKyArX1tNKyg5NiooZj0wfGFbdysxNj4+Ml0pfDApKzU2''@;'; put 'put ''Pj4zXS0rX1tNKyg5NipmfDApKzQwPj4zXSkrICtfW20+PjNdLGM9Yys0fDAsbD1sKzR8MH19ZWxzZSBsPWM7ZWxzZSBsPWN9ZnVuY3Rpb24gVFgobCl7dmFyIHcsYixrLGM9MCxmPTAscD0wLG09MCxBPTA7Zm9yKDB8KGx8PTApJiZtMmUoKSxfWzIzMjcyXT1mPStfWyhiPTB8YVsodz0wfGFb''@;'; put 'put ''NDY4NDVdKT4+Ml0pPj4zXSxrPTB8YVs0Njg1NF0sbT0xLEE9K19bYj4+M107ISgoMHxtKT49KDB8aykpOykoYz0rX1sobD0wfGFbdysobTw8Mik+PjJdKT4+M10pPGY/KF9bMjMyNzJdPWMscD0rX1tsPj4zXSk6KHA9YyxjPWYpLG09bSsxfDAsZj1jLEE9cD5BP3A6QTtfWzIzMjczXT1wPStf''@;'; put 'put ''W2IrOD4+M10sX1syMzI3NV09K19bOCsoMHxhW3crKGsrLTE8PDIpPj4yXSk+PjNdLXAsX1syMzI3NF09QS1mfWZ1bmN0aW9uIHI4KCl7dmFyIGYsbD0wLGM9MDtmb3IobD0wfGFbNDY4NjldLGZ1bmN0aW9uIGQyZSgpe3ZhciBsPTAsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MDtmb3IobT0rY3AoQT04KyhEPTB8YVs0Njg2OV0pfDAsMTg2MDY0KSxwPStjcChBLDE4NjA4MCksZj0rY3AoQSwxODYwOTYpLGw9MSxjPStjcChBLDE4NjExMiksQT1ELHc9RCxiPUQsaz1EO009RCs5NnwwLCEoKDB8''@;'; put 'put ''bCk+PSgwfGFbNDY4NTRdKSk7KVI9KG1lPStjcChwZT1EKzEwNHwwLDE4NjA2NCkpPG0sSz0oT2U9K2NwKHBlLDE4NjA5NikpPGYsRz0oYmU9K2NwKHBlLDE4NjA4MCkpPHAsbD1sKzF8MCxjPShwZT0oTGU9K2NwKHBlLDE4NjExMikpPGMpP0xlOmMsZj1LP09lOmYscD1HP2JlOnAsbT1SP21l''@;'; put 'put ''Om0sQT1wZT9NOkEsdz1LP006dyxiPUc/TTpiLGs9Uj9NOmssRD1NO3RnKGsrOHwwLCtfWzIzMjU4XSwrX1syMzI1OV0pLHRnKHcrOHwwLCtfWzIzMjYyXSwrX1syMzI2M10pLHRnKGIrOHwwLCtfWzIzMjYwXSwrX1syMzI2MV0pLHRnKEErOHwwLCtfWzIzMjY0XSwrX1syMzI2NV0pfSgpLGY9''@;'; put 'put ''MD09KDB8YVs0Njg0Nl0pLGM9MDshKCgwfGMpPj0oMHxhWzQ2ODU0XSkpOylmJiYhKDB8YVtsKzMyPj4yXSl8fExYKGwpLGw9bCs5NnwwLGM9YysxfDB9ZnVuY3Rpb24gSVgoKXt2YXIgbCxjLGYscCxtLEEsdyxiLGs7bD1vZSxvZT1vZSszMnwwLGY9bCsxNnwwLHA9LjA1KigoYj0rX1syMzI2''@;'; put 'put ''Nl0pLShtPStfWzIzMjY3XSkpLF9bKGM9bCk+PjNdPShBPS4wNSooKGs9K19bMjMyNjhdKS0odz0rX1syMzI2OV0pKSkrayxfW2MrOD4+M109YitwLF9bZj4+M109dy1BLF9bZis4Pj4zXT1tLXAsRFgoZixjKSxvZT1sfWZ1bmN0aW9uIERYKGwsYyl7dmFyIGYscCxtLEE7Y3w9MCxfWzIzMjY5''@;'; put 'put ''XT1BPStfWyhsfD0wKT4+M10sX1syMzI2OF09bT0rX1tjPj4zXSxfWzIzMjY3XT1mPStfW2wrOD4+M10sX1syMzI2Nl09cD0rX1tjKzg+PjNdLF9bMjMyNThdPUEsX1syMzI2MF09QSxfWzIzMjYyXT1tLF9bMjMyNjRdPW0sX1syMzI2NV09cCxfWzIzMjYxXT1wLF9bMjMyNjNdPWYsX1syMzI1''@;'; put 'put ''OV09Zn1mdW5jdGlvbiBMWChsKXt2YXIgQSx3LGIsTSxELFIsRyxjPTAsZj0wLHA9MCxtPTAsaz0wLEs9MCxwZT0wLG1lPTA7Zm9yKEc9b2Usb2U9b2UrNjR8MCxiPUcrNDh8MCx3PUcrMzJ8MCxBPUcrMTZ8MCxNPUcrOHwwLEQ9RyxSPTgrKGs9MHxhWzg4KyhsfD0wKT4+Ml0pfDAsYz0wLGY9''@;'; put 'put ''MCxwPTAsaz0wfGFbaz4+Ml07bT0wfGFbaz4+Ml07KW1lPWsrOHwwLHBlPW0rOHwwLGFbQT4+Ml09YVtSPj4yXSxhW0ErND4+Ml09YVtSKzQ+PjJdLGFbQSs4Pj4yXT1hW1IrOD4+Ml0sYVtBKzEyPj4yXT1hW1IrMTI+PjJdLGFbdz4+Ml09YVttZT4+Ml0sYVt3KzQ+PjJdPWFbbWUrND4+Ml0s''@;'; put 'put ''YVt3Kzg+PjJdPWFbbWUrOD4+Ml0sYVt3KzEyPj4yXT1hW21lKzEyPj4yXSxhW2I+PjJdPWFbcGU+PjJdLGFbYis0Pj4yXT1hW3BlKzQ+PjJdLGFbYis4Pj4yXT1hW3BlKzg+PjJdLGFbYisxMj4+Ml09YVtwZSsxMj4+Ml0sSz0rcDJlKEEsdyxiKSxhW0E+PjJdPWFbUj4+Ml0sYVtBKzQ+PjJd''@;'; put 'put ''PWFbUis0Pj4yXSxhW0ErOD4+Ml09YVtSKzg+PjJdLGFbQSsxMj4+Ml09YVtSKzEyPj4yXSxhW3c+PjJdPWFbbWU+PjJdLGFbdys0Pj4yXT1hW21lKzQ+PjJdLGFbdys4Pj4yXT1hW21lKzg+PjJdLGFbdysxMj4+Ml09YVttZSsxMj4+Ml0sYVtiPj4yXT1hW3BlPj4yXSxhW2IrND4+Ml09YVtw''@;'; put 'put ''ZSs0Pj4yXSxhW2IrOD4+Ml09YVtwZSs4Pj4yXSxhW2IrMTI+PjJdPWFbcGUrMTI+PjJdLGcyZShBLHcsYixNLEQpLGM9K19bRD4+M10qSytjLGY9K19bTT4+M10qSytmLHA9SytwLGs9bTtfW2wrOD4+M109Zi9wLF9bbCsxNj4+M109Yy9wLG9lPUd9ZnVuY3Rpb24gcDJlKGwsYyxmKXt2YXIg''@;'; put 'put ''cCxtLEE7cmV0dXJuLjUqK2VvKCsoKChBPStfWzgrKGZ8PTApPj4zXSktKG09K19bOCsobHw9MCk+PjNdKSkqK19bKGN8PTApPj4zXSsoKHA9K19bYys4Pj4zXSktQSkqK19bbD4+M10rICtfW2Y+PjNdKihtLXApKSl9ZnVuY3Rpb24gZzJlKGwsYyxmLHAsbSl7bXw9MCxfWyhwfD0wKT4+M109''@;'; put 'put ''LjMzMzMzMzMzMzMzMzMzMzMqKCtfWyhjfD0wKT4+M10rICtfWyhsfD0wKT4+M10rICtfWyhmfD0wKT4+M10pLF9bbT4+M109LjMzMzMzMzMzMzMzMzMzMzMqKCtfW2MrOD4+M10rICtfW2wrOD4+M10rICtfW2YrOD4+M10pfWZ1bmN0aW9uIG0yZSgpe3ZhciBwLGw9MCxjPTAsZj0wO2Zvcigo''@;'; put 'put ''bD0wfGFbNDY4NDVdKXx8KGw9MHxRbihhWzQ2ODU0XTw8MiksYVs0Njg0NV09bCxhWzQ2ODQ4XT1sKyhhWzQ2ODU0XTw8MikpLGY9MHxhWzQ2ODY5XSxJMmUoKSxwPTB8YVs0Njg1NF0sYz0wOyEoKDB8Yyk+PSgwfHApKTspYVtsPj4yXT1mKzgsYVtmKzg4Pj4yXT0wLGFbZisyOD4+Ml09MSxm''@;'; put 'put ''PWYrOTZ8MCxsPWwrNHwwLGM9YysxfDA7STEoMHxhWzQ2ODQ1XSxwLDQsNjkpLGFbNDY4NDddPWFbNDY4NDVdfWZ1bmN0aW9uIE45ZSgpe3ZhciBmLGw9MCxjPTAscD0wO2ZvcihmPTB8YVs0Njg1NF0sbD0wLGM9MHxhWzQ2ODY5XTshKCgwfGwpPj0oMHxmKSk7KV9bKHA9Yys4fDApPj4zXT0x''@;'; put 'put ''LjA1KitfW3A+PjNdLF9bKHA9YysxNnwwKT4+M109MS4wNSorX1twPj4zXSxsPWwrMXwwLGM9Yys5NnwwfWZ1bmN0aW9uIEljKGwsYyl7bHw9MDt2YXIgZixtLHcscD0wO3c9b2Usb2U9b2UrNDh8MCxtPXcrMjR8MCwwIT0oMHwoZj0wfExpKGN8PTAsOTMxMTIpKSkmJjAhPSgwfEhWKGYsbSwx''@;'; put 'put ''LDApKXx8KHA9Myk7ZG97aWYoMz09KDB8cCkpe2lmKDB8KGM9MHxMaShjLDkzMTE2KSkmJjB8SFYoYyxtLC44MDAwMDAwMTE5MjA5MjksNCkpYnJlYWs7V25bbSs0Pj4yXT00LFduW20+PjJdPTQsdWVbbSs4Pj4wXT0xfX13aGlsZSgwKTthW2w+PjJdPWFbbT4+Ml0sYVtsKzQ+PjJdPWFbbSs0''@;'; put 'put ''Pj4yXSxhW2wrOD4+Ml09YVttKzg+PjJdLG9lPXd9ZnVuY3Rpb24gSFYobCxjLGYscCl7bHw9MCxjfD0wLGY9K2YscD0rcDt2YXIgdyxiLGssRCxSLG09MCxBPTAsTT0wLEc9MDtmb3IoRD1vZSxvZT1vZSsxNnwwLGs9RCx3PUQrMTJ8MCxiPUQrOHwwO0E9bCsxfDAsMHxLYygobT0wfHVlW2w+''@;'; put 'put ''PjBdKTw8MjQ+PjI0KTspbD1BO3N3aXRjaChSPW08PDI0Pj4yND09NDMsdWVbKG09Yys4fDApPj4wXT0xJlIsYVtrPj4yXT13LGFbays0Pj4yXT1iLDB8JGEoUj9BOmwsOTMxNTQsaykpe2Nhc2UgMDpsPTA7YnJlYWs7Y2FzZSAxOmFbYj4+Ml09YVt3Pj4yXSxNPTU7YnJlYWs7ZGVmYXVsdDpN''@;'; put 'put ''PTV9aWYoNT09KDB8TSkpe2Rve2lmKDB8dWVbbT4+MF0pe2lmKGY+MSl7V25bYz4+Ml09KEc9K1duW3c+PjJdL2YpPnA/cDpHLGY9KGY9K1duW2I+PjJdL2YpPnA/cDpmO2JyZWFrfWlmKGY8MSl7V25bYz4+Ml09KEc9K1duW3c+PjJdL2YpPHA/cDpHLGY9KGY9K1duW2I+PjJdL2YpPHA/cDpm''@;'; put 'put ''O2JyZWFrfWFbYz4+Ml09YVt3Pj4yXSxmPStXbltiPj4yXTticmVha31XbltjPj4yXT0rV25bdz4+Ml0vZisxLGY9K1duW2I+PjJdL2YrMX13aGlsZSgwKTtXbltjKzQ+PjJdPWYsbD0xfXJldHVybiBvZT1ELDB8bH1mdW5jdGlvbiBPWChsLGMpe3ZhciBmLHA7cmV0dXJuIGN8PTAscD1vZSxv''@;'; put 'put ''ZT1vZSszMnwwLGY9cCwoMHxObyhsfD0wKSk8Mj9sPTA6KE1YKGwsYyxmKSxsPTB8cTcobCxmKSksb2U9cCwwfGx9ZnVuY3Rpb24gSzUobCl7cmV0dXJuIDB8T1gobHw9MCwwfExpKGwsOTI1MDcpKX1mdW5jdGlvbiBpOChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIg''@;'; put 'put ''UixHLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2ZvcihHPW9lLG9lPW9lKzE2fDAsUj1HLEE9MDshKCgwfEEpPj0oMHxmKSk7KWFbcCsoQTw8Mik+PjJdPS0xLEE9QSsxfDA7YVtwKyhsPDwyKT4+Ml09MCxmdW5jdGlvbiB5MmUobCxjKXthW2FbKGx8PTApPj4yXT4+Ml09Y3w9MCxhW2wrMTI+''@;'; put 'put ''PjJdPTAsYVtsKzg+PjJdPTF9KG0sbCk7ZTpkb3tpZigwfGFbYys4Pj4yXSl7QT0yMTQ3NDgzNjQ3O3Q6Zm9yKDs7KXtpZighKCgwfE5WKG0sUikpPDwyND4+MjQpKWJyZWFrIGU7Zm9yKEE9MHxhW3ArKChrPTB8YVtSPj4yXSk8PDIpPj4yXSx3PWMrKDIwKmt8MCl8MCxiPWMrKDIwKmt8MCkr''@;'; put 'put ''NHwwLGs9YysoMjAqa3wwKSs4fDAsbD0xOzspe2lmKCgwfGwpPj0oMHxhW3c+PjJdKSljb250aW51ZSB0OygwfGFbKEQ9cCsoKE09MHxhWygwfGFbYj4+Ml0pKyhsPDwyKT4+Ml0pPDwyKXwwKT4+Ml0pPDAmJihhW0Q+PjJdPUErfn4rV25bKDB8YVtrPj4yXSkrKGw8PDIpPj4yXSxSWChtLE0p''@;'; put 'put ''KSxsPWwrMXwwfX19ZWxzZXtBPTIxNDc0ODM2NDc7dDpmb3IoOzspe2lmKCEoKDB8TlYobSxSKSk8PDI0Pj4yNCkpYnJlYWsgZTtmb3IoQT0wfGFbcCsoKGI9MHxhW1I+PjJdKTw8Mik+PjJdLHc9YysoMjAqYnwwKXwwLGI9YysoMjAqYnwwKSs0fDAsaz1BKzF8MCxsPTE7Oyl7aWYoKDB8bCk+''@;'; put 'put ''PSgwfGFbdz4+Ml0pKWNvbnRpbnVlIHQ7KDB8YVsoRD1wKygoTT0wfGFbKDB8YVtiPj4yXSkrKGw8PDIpPj4yXSk8PDIpfDApPj4yXSk8MCYmKGFbRD4+Ml09ayxSWChtLE0pKSxsPWwrMXwwfX19fXdoaWxlKDApO2ZvcihsPUErMTB8MCxBPTA7ISgoMHxBKT49KDB8ZikpOykoMHxhWyh3PXAr''@;'; put 'put ''KEE8PDIpfDApPj4yXSk8MCYmKGFbdz4+Ml09bCksQT1BKzF8MDtvZT1HfWZ1bmN0aW9uIE5WKGwsYyl7dmFyIGYscDtyZXR1cm4gY3w9MCwoMHwocD0wfGFbKGY9MTIrKGx8PTApfDApPj4yXSkpPCgwfGFbbCs4Pj4yXSk/KGw9MHxhW2w+PjJdLGFbZj4+Ml09cCsxLGFbYz4+Ml09YVtsKyhw''@;'; put 'put ''PDwyKT4+Ml0sbD0xKTpsPTAsMHxsfWZ1bmN0aW9uIFJYKGwsYyl7dmFyIGYscDtyZXR1cm4gY3w9MCwoMHwocD0wfGFbKGY9OCsobHw9MCl8MCk+PjJdKSk8KDB8YVtsKzQ+PjJdKT8obD0wfGFbbD4+Ml0sYVtmPj4yXT1wKzEsYVtsKyhwPDwyKT4+Ml09YyxsPTEpOmw9MCwwfGx9ZnVuY3Rp''@;'; put 'put ''b24gUWgobCxjKXthWyhsfD0wKT4+Ml09MHxRbigoY3w9MCk8PDIpLGFbbCs0Pj4yXT1jLGFbbCs4Pj4yXT0wLGFbbCsxMj4+Ml09MH1mdW5jdGlvbiBKYyhsKXtIdCgwfGFbKGx8PTApPj4yXSl9ZnVuY3Rpb24gZmMobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTA7''@;'; put 'put ''Zm9yKEE9MDshKCgwfEEpPj0oMHxsKSk7KXtmb3Iodz1jKyhBPDwyKXwwLG09MCxwPTA7KDB8bSkhPSgwfGwpOykoMHxBKSE9KDB8bSkmJihwPStfWygwfGFbdz4+Ml0pKyhtPDwzKT4+M10rcCksbT1tKzF8MDtfWygwfGFbdz4+Ml0pKyhBPDwzKT4+M109LXAsQT1BKzF8MH1yZXR1cm4gMHxm''@;'; put 'put ''dW5jdGlvbiBzaihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTA7ZTpkb3tpZigwfFd0KGwsZikpe2ZvcihtPTB8bXIoZjw8MyksbD0wOygwfGwpPCgwfGYpOyl7Zm9yKHA9MDsoMHxwKSE9KDB8Zik7KV9bbSsocDw8Myk+PjNdPTAscD1wKzF8MDtfW20rKGw8''@;'; put 'put ''PDMpPj4zXT0xLGppKDB8YVtjKyhsPDwyKT4+Ml0sbSxmKSxsPWwrMXwwfWZvcihIdChtKSxtPTA7Oyl7aWYoKDB8bSk+PSgwfGYpKXtsPTE7YnJlYWsgZX1mb3IocD1jKyhtPDwyKXwwLGw9MDsoMHxsKSE9KDB8bSk7KXc9K19bKGI9KDB8YVtwPj4yXSkrKGw8PDMpfDApPj4zXSxfW2I+PjNd''@;'; put 'put ''PStfWyhBPSgwfGFbYysobDw8Mik+PjJdKSsobTw8Myl8MCk+PjNdLF9bQT4+M109dyxsPWwrMXwwO209bSsxfDB9fWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9KGMsZixsKy0xfDApfWZ1bmN0aW9uIHhsKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLG09K20sQXw9MCx3fD0w''@;'; put 'put ''O3ZhciBNLEQsUixHLHBlLG1lLE9lLGI9MCxrPTAsSz0wLGJlPTA7Zm9yKE9lPW9lLG9lPW9lKzE2fDAsTT1PZSxwZT0wfFFuKEs9KHB8PTApPDwzKSxtZT0wfFFuKEspLEQ9MHxRbihLKSxSPTB8UW4oSyksRz0wfFFuKEspLGxMKHAsZixLPTB8UW4oSykpLHc8PDI0Pj4yNCYmKGF2KHAsSyks''@;'; put 'put ''YXYocCxjKSksZmoobCxwLGMsUiksUXkocCxLLFIscGUpLGxMKHAscGUsbWUpLHc9QSstMXwwLGY9MCxiPStmcChwLHBlLHBlKTs7KXtpZigoMHxmKT49KDB8QSkpe2Y9MDticmVha31pZighKCt0NChwLHBlKT5tKSl7Zj0wO2JyZWFrfWlmKGZqKGwscCxtZSxEKSwwPT0oaz0rZnAocCxtZSxE''@;'; put 'put ''KSkpe2Y9MDticmVha31pZihHayhwLG1lLGs9Yi9rLEcpLGFMKHAsYyxHLGMpLCgwfGYpPCgwfHcpKXtpZihHayhwLEQsayxEKSxReShwLHBlLEQscGUpLGs9K2ZwKHAscGUscGUpLDA9PWIpe2JlPTk7YnJlYWt9R2socCxtZSxrL2IsbWUpLGFMKHAscGUsbWUsbWUpLGI9a31mPWYrMXwwfXJl''@;'; put 'put ''dHVybiA5PT0oMHxiZSkmJihYcigxLDkzMjQyLE0pLGY9MSksSHQocGUpLEh0KG1lKSxIdChEKSxIdChSKSxIdChHKSxIdChLKSxvZT1PZSwwfGZ9ZnVuY3Rpb24gR3kobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLG09K20sQXw9MDt2YXIgayxNLFIsRyxLLG1lLHc9MCxiPTAsRD0wLHBl''@;'; put 'put ''PTA7Zm9yKG1lPW9lLG9lPW9lKzE2fDAsTT1tZSxSPTB8bXIoRD0ocHw9MCk8PDIpLEc9MHxtcihEKSxLPTB8bXIoRCksRD0wfG1yKEQpLGw4KHAsYyksbDgocCxmKSxpZyhsLHAsYyxEKSxsOChwLEQpLGZ1bmN0aW9uIEs5ZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTA7''@;'; put 'put ''Zm9yKG09MDshKCgwfG0pPj0oMHxsKSk7KVduW3ArKG08PDIpPj4yXT0rV25bYysobTw8Mik+PjJdLStXbltmKyhtPDwyKT4+Ml0sbT1tKzF8MH0ocCxmLEQsUiksQjJlKHAsUixHKSxrPUErLTF8MCxmPTAsdz0rSnkocCxSLFIpOzspe2lmKCgwfGYpPj0oMHxBKSl7Zj0wO2JyZWFrfWlmKCEo''@;'; put 'put ''K3BqKHAsUik+bSkpe2Y9MDticmVha31pZihsOChwLEcpLGw4KHAsYyksbDgocCxSKSxpZyhsLHAsRyxLKSxsOChwLEspLDA9PShiPStKeShwLEcsSykpKXtmPTA7YnJlYWt9aWYoV2socCxjLGI9dy9iLEcpLCgwfGYpPCgwfGspKXtpZihXayhwLFIsLWIsSyksYj0rSnkocCxSLFIpLDA9PXcp''@;'; put 'put ''e3BlPTc7YnJlYWt9JDllKHAsRyxiL3csRyksZGoocCxSLEcsRyksdz1ifWY9ZisxfDB9cmV0dXJuIDc9PSgwfHBlKSYmKFhyKDEsOTMyNDIsTSksZj0xKSxIdChSKSxIdChHKSxIdChLKSxIdChEKSxvZT1tZSwwfGZ9ZnVuY3Rpb24gYnUobCxjKXtjfD0wO3ZhciBtLHcsayxNLGY9MCxwPTAs''@;'; put 'put ''QT0wLGI9MDtmb3IoTT1vZSxvZT1vZSs0OHwwLG09TSsyNHwwLEE9TSsxMnwwLGY9TSxrPTB8UW4oNDgqKHc9MHxObyhsfD0wKSl8MCksSWMoZixsKSxhW0E+PjJdPWFbZj4+Ml0sYVtBKzQ+PjJdPWFbZis0Pj4yXSxhW0ErOD4+Ml09YVtmKzg+PjJdLGY9MHxMdChsKSxwPWs7ZjspYVttPj4y''@;'; put 'put ''XT1hW0E+PjJdLGFbbSs0Pj4yXT1hW0ErND4+Ml0sYVttKzg+PjJdPWFbQSs4Pj4yXSxqOWUoZixwLG0pLGY9MHx6dChsLGYpLHA9cCs0OHwwO2U6ZG97aWYoMHxaOWUoayx3KSl7c3dpdGNoKDB8Yyl7Y2FzZSA5OmV2KGwsayx3LDcwLDEpLG84KGwsayx3LDcxLDEpLGY9MCxwPWs7YnJlYWs7''@;'; put 'put ''Y2FzZSAxMDpvOChsLGssdyw3MSwxKSxldihsLGssdyw3MCwxKSxmPTAscD1rO2JyZWFrO2Nhc2UgNzpldihsLGssdyw3MiwxKSxvOChsLGssdyw3MSwxKSxiPTk7YnJlYWs7Y2FzZSA4OmI9OTticmVhaztjYXNlIDEzOmI9MTA7YnJlYWs7Y2FzZSAxNDpvOChsLGssdyw3MSwwKSxldihsLGss''@;'; put 'put ''dyw3MCwwKSxmPTAscD1rO2JyZWFrO2Nhc2UgMTI6bzgobCxrLHcsNzMsMCksZXYobCxrLHcsNzAsMCksZj0wLHA9azticmVhaztkZWZhdWx0OmV2KGwsayx3LDcyLDApLG84KGwsayx3LDcxLDApLGY9MCxwPWt9Zm9yKDk9PSgwfGIpJiYobzgobCxrLHcsNzMsMSksZXYobCxrLHcsNzAsMSks''@;'; put 'put ''Yj0xMCksMTA9PSgwfGIpJiYoZXYobCxrLHcsNzAsMCksbzgobCxrLHcsNzEsMCksZj0wLHA9ayk7Oyl7aWYoKDB8Zik+PSgwfHcpKXtmPTE7YnJlYWsgZX1BPTB8YVtwKzE2Pj4yXSxfWyhiPTB8YVsxMzIrKDB8YVsxNisoMHxhW3ArMjA+PjJdKT4+Ml0pPj4yXSk+PjNdPS4wMDEzODg4ODg4''@;'; put 'put ''ODg4ODg4ODg3KisoMHxhW3ArMTI+PjJdKSxfW2IrOD4+M109LjAwMTM4ODg4ODg4ODg4ODg4ODcqKygwfEEpLGY9ZisxfDAscD1wKzQ4fDB9fWVsc2UgZj0wfXdoaWxlKDApO3JldHVybiBIdChrKSxvZT1NLDB8Zn1mdW5jdGlvbiBqOWUobCxjLGYpe3ZhciBBLHA9MCxtPTAsdz0wLGI9MCxr''@;'; put 'put ''PTA7QT1+figoYj03MjAqK19bKHc9MHxhWzEzMisocD0wfGFbMTYrKGx8PTApPj4yXSk+PjJdKT4+M10pKyhiPj0wPy41Oi0uNSkpLHc9fn4oKGI9NzIwKitfW3crOD4+M10pKyhiPj0wPy41Oi0uNSkpLDB8dWVbOCsoZnw9MCk+PjBdPyhtPX5+KDEwKigrV25bZj4+Ml0rICsoMHx+figoYj0z''@;'; put 'put ''NiorX1twKzMyPj4zXSkrKGI+PTA/LjU6LS41KSkpKSkscD1+figxMCooK1duW2YrND4+Ml0rICsoMHx+figoaz0zNiorX1twKzQwPj4zXSkrKGs+PTA/LjU6LS41KSkpKSkpOihtPX5+KChrPTcyKitfW3ArMzI+PjNdKig1KitXbltmPj4yXSkpKyhrPj0wPy41Oi0uNSkpLHA9fn4oKGI9NzIq''@;'; put 'put ''K19bcCs0MD4+M10qKDUqK1duW2YrND4+Ml0pKSsoYj49MD8uNTotLjUpKSksYVsxMisoY3w9MCk+PjJdPUEsYVtjKzE2Pj4yXT13LGFbYysyMD4+Ml09bCxhW2MrMzI+PjJdPUEtbSxhW2MrMzY+PjJdPXctcCxhW2MrNDA+PjJdPW0rQSxhW2MrNDQ+PjJdPXArd31mdW5jdGlvbiBaOWUobCxj''@;'; put 'put ''KXtsfD0wO3ZhciBNLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtNPShjfD0wKS0xfDAsZj0wO2U6Zm9yKDs7KXtpZigoMHxmKT49KDB8TSkpe2w9MDticmVha31mb3IoQT1sKzMyfDAsdz1sKzQwfDAsYj1sKzM2fDAsbT1sKzQ0fDAsbD1rPWwrNDh8MCxwPWY9ZisxfDA7Oyl7aWYoKDB8''@;'; put 'put ''cCk+PSgwfGMpKXtsPWs7Y29udGludWUgZX1pZigoMHxhW0E+PjJdKTw9KDB8YVtsKzQwPj4yXSkmJigwfGFbbCszMj4+Ml0pPD0oMHxhW3c+PjJdKSYmKDB8YVtiPj4yXSk8PSgwfGFbbCs0ND4+Ml0pJiYoMHxhW2wrMzY+PjJdKTw9KDB8YVttPj4yXSkpe2w9MTticmVhayBlfWw9bCs0OHww''@;'; put 'put ''LHA9cCsxfDB9fXJldHVybiAwfGx9ZnVuY3Rpb24gZXYobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsQT0wLHc9MDtmb3IoYj0wfEFzKDE4MTY4LDB8YVs0NTg0XSksQT1jLHc9MDshKCgwfHcpPj0oMHxmKSk7KWFbQSs4Pj4yXT1hW0ErMTI+PjJdLG1pWzYzJmFb''@;'; put 'put ''Yj4+Ml1dKGIsQSwxKSxBPUErNDh8MCx3PXcrMXwwO2ZvcihQNyh3PW0/MHxGayhiLHAsNzQpOjB8alYobCxiLHAsNzQpLDIsMjE0NzQ4MzY0NyksQT0wOyEoKDB8QSk+PSgwfGYpKTspcD0obD0wfGFbMjMyKygwfGFbMTYrKDB8YVtjKzI0Pj4yXSk+PjJdKT4+Ml0pLSgwfGFbKG09YysxMnww''@;'; put 'put ''KT4+Ml0pfDAsYVttPj4yXT1sLGFbKG09YyszMnwwKT4+Ml09KDB8YVttPj4yXSkrcCxhWyhtPWMrNDB8MCk+PjJdPSgwfGFbbT4+Ml0pK3AsYz1jKzQ4fDAsQT1BKzF8MDskNSh3KSxpcyhiKX1mdW5jdGlvbiBvOChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixB''@;'; put 'put ''PTAsdz0wO2ZvcihiPTB8QXMoMTgxNjgsMHxhWzQ1ODRdKSxBPWMsdz0wOyEoKDB8dyk+PSgwfGYpKTspYVtBKzg+PjJdPWFbQSsxNj4+Ml0sbWlbNjMmYVtiPj4yXV0oYixBLDEpLEE9QSs0OHwwLHc9dysxfDA7Zm9yKFA3KHc9bT8wfEZrKGIscCw3NSk6MHxqVihsLGIscCw3NSksMiwyMTQ3''@;'; put 'put ''NDgzNjQ3KSxBPTA7ISgoMHxBKT49KDB8ZikpOylwPShsPTB8YVsyMzIrKDB8YVsxNisoMHxhW2MrMjQ+PjJdKT4+Ml0pPj4yXSktKDB8YVsobT1jKzE2fDApPj4yXSl8MCxhW20+PjJdPWwsYVsobT1jKzM2fDApPj4yXT0oMHxhW20+PjJdKStwLGFbKG09Yys0NHwwKT4+Ml09KDB8YVttPj4y''@;'; put 'put ''XSkrcCxjPWMrNDh8MCxBPUErMXwwOyQ1KHcpLGlzKGIpfWZ1bmN0aW9uIFBrKGwsYyl7cmV0dXJuIDB8KCgwfGFbMTIrKGx8PTApPj4yXSktKDB8YVtsKzQ+PjJdKSsoMHxhWzEyKyhjfD0wKT4+Ml0pLSgwfGFbYys0Pj4yXSl8MCkvMn1mdW5jdGlvbiBWVihsLGMpe3JldHVybiAwfCgoMHxh''@;'; put 'put ''WzgrKGx8PTApPj4yXSktKDB8YVtsPj4yXSkrKDB8YVs4KyhjfD0wKT4+Ml0pLSgwfGFbYz4+Ml0pfDApLzJ9ZnVuY3Rpb24gRmsobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBMZSxCZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0w''@;'; put 'put ''LE9lPTA7Zm9yKEJlPW9lLG9lPW9lKzE2fDAsdWVbKE9lPUJlKT4+MF09MHx1ZVsxODU4OF0sdWVbT2UrMT4+MF09MHx1ZVsxODU4OV0sdWVbT2UrMj4+MF09MHx1ZVsxODU5MF0sdWVbT2UrMz4+MF09MHx1ZVsxODU5MV0sZjAoTGU9MHxFYyg5MzUxNSxPZSwwKSwxMzc0ODMsMjgwLDEpLHA9''@;'; put 'put ''MHxvMChsKSxtPS0yMTQ3NDgzNjQ3LGJlPTA7cDspbWU9YmUrKCgwfG0pIT0oMHwocGU9MHxhW3ArOD4+Ml0pKSYxKXwwLHA9MHxhW3A+PjJdLG09cGUsYmU9bWU7Zm9yKHBlPUxlKzE2fDAsbWU9KGJlPDwzKS00fDAsTT0wLHc9MCxwPTAsbT0wLGs9MCxLPTB8bzAobCksQT0tMjE0NzQ4MzY0''@;'; put 'put ''NztLOykoMHxBKSE9KDB8KEc9MHxhW0srOD4+Ml0pKT8oZjAoUj0wfE1yKExlLDB8JHIoMHxhW0srMjA+PjJdKSwxKSwxMzc0NDcsMzA0LDEpLGFbMTEyKyhwPTB8YVsoRD1SKzE2fDApPj4yXSk+PjJdPUssbT8oYVsxNjQrKDB8YVtNKzE2Pj4yXSk+PjJdPVIsTT1tKTooYVsxOTIrKDB8YVtw''@;'; put 'put ''ZT4+Ml0pPj4yXT1SLE09UiksYVtwKzE3Nj4+Ml09MCxBPTB8bXIoKGI9dysxfDApPDwyKSxhWzE3MisoMHxhW0Q+PjJdKT4+Ml09QSxrPyhhWzE4NCsoMHxhWyhBPWsrMTZ8MCk+PjJdKT4+Ml09MCx3PTB8bXIoKDB8ayk9PSgwfE0pP21lOmJlLXc8PDIpLGFbMTgwKygwfGFbQT4+Ml0pPj4y''@;'; put 'put ''XT13LGYwKHc9MHxybChMZSxrLFIsMCwxKSwxMzc0NjAsMTc2LDEpLFR0WzE3MCsocD0wfGFbdysxNj4+Ml0pPj4xXT0xMCxhW3ArMTU2Pj4yXT0xLHA9KG09MHxhWzE4MCsocD0wfGFbQT4+Ml0pPj4yXSk/MHxsMChtLDgrKGFbcCsxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFbcCsxODQ+PjJd''@;'; put 'put ''PDwyKXwwKSxhWzE4MCsoaz0wfGFbQT4+Ml0pPj4yXT1wLGFbKGs9aysxODR8MCk+PjJdPTErKG09MHxhW2s+PjJdKSxhW3ArKG08PDIpPj4yXT13LGFbKDB8YVsxODArKHA9MHxhW0E+PjJdKT4+Ml0pKyhhW3ArMTg0Pj4yXTw8Mik+PjJdPTAscD0obT0wfGFbMTcyKyhwPTB8YVtEPj4yXSk+''@;'; put 'put ''PjJdKT8wfGwwKG0sOCsoYVtwKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVtwKzE3Nj4+Ml08PDIpfDApLGFbMTcyKyhtPTB8YVtEPj4yXSk+PjJdPXAsYVsobT1tKzE3NnwwKT4+Ml09MSsoaz0wfGFbbT4+Ml0pLGFbcCsoazw8Mik+PjJdPXcsYVsoMHxhWzE3Misodz0wfGFbRD4+Ml0pPj4y''@;'; put 'put ''XSkrKGFbdysxNzY+PjJdPDwyKT4+Ml09MCx3PWIsYj1SLGs9UixwPVIsbT1NLEE9Ryk6KHc9YixiPVIsaz1SLHA9UixtPU0sQT1HKSk6KGI9cCxwPU0pLGFbSysyND4+Ml09YixNPXAscD1iLEs9MHxhW0s+PjJdO2ZvcihhWzE4NCsoMHxhWyhrPWsrMTZ8MCk+PjJdKT4+Ml09MCxwPTB8bXIo''@;'; put 'put ''NCksYVsxODArKDB8YVtrPj4yXSk+PjJdPXAsdWVbT2U+PjBdPTB8dWVbMTg1ODhdLHVlW09lKzE+PjBdPTB8dWVbMTg1ODldLHVlW09lKzI+PjBdPTB8dWVbMTg1OTBdLHVlW09lKzM+PjBdPTB8dWVbMTg1OTFdLGs9MHxFYyg5MzU2MixPZSwwKSxwPTB8bzAobCk7cDspZjAoT2U9MHxNcihr''@;'; put 'put ''LDB8JHIoMHxhW3ArMjA+PjJdKSwxKSwxMzc0NDcsMzA0LDEpLGFbcCsyOD4+Ml09T2UsYVsxMTIrKDB8YVtPZSsxNj4+Ml0pPj4yXT1wLHA9MHxhW3A+PjJdO3A9MCxiPTB8bzAobCksbT0tMjE0NzQ4MzY0NztlOmZvcig7Yjspe3c9MHxhW2IrOD4+Ml07dDpkb3tpZigoMHxtKT09KDB8dykp''@;'; put 'put ''dz1tO2Vsc2UgZm9yKHA9Yjs7KXtpZighKHA9MHxhW3A+PjJdKSlicmVhayBlO2lmKCgwfGFbcCs4Pj4yXSkhPSgwfHcpKWJyZWFrIHR9fXdoaWxlKDApO2ZvcihBPWIrMjh8MCxtPXA7bTspMHxSaVsxMjcmY10oYixtKSYmcmwoaywwfGFbQT4+Ml0sMHxhW20rMjg+PjJdLDAsMSksbT0wfGFb''@;'; put 'put ''bT4+Ml07Yj0wfGFbYj4+Ml0sbT13fXJldHVybiBmdW5jdGlvbiB1cChsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTA7Zm9yKGs9MHxMdChsfD0wKTtrOyl7Zm9yKEQ9MHxhWzI0KyhSPTB8YVsxMTIrKDB8YVtrKzE2''@;'; put 'put ''Pj4yXSk+PjJdKT4+Ml0sUj1SKzMyfDAsRz1EKzE2fDAsTT0wfHkwKGwsayk7TTspSz0wfFJpWzEyNyZmXShSLDMyKyhBPTB8YVsxMTIrKDB8YVsxNisoMHxhWygyPT0oMyZhW00+PjJdfDApP006TSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSl8MCksZjAodz0wfHJsKGMsRCxBPTB8YVtBKzI0''@;'; put 'put ''Pj4yXSwwLDEpLDEzNzQ2MCwxNzYsMSksYVsxNTYrKHA9MHxhWyhiPXcrMTZ8MCk+PjJdKT4+Ml09MSwoMHxLKT4oNjU1MzUmKG09MHxUdFtwKzE3MD4+MV0pfDApJiYobTw8MTY+PjE2fHwocD0obT0wfGFbMTgwKyhwPTB8YVtHPj4yXSk+PjJdKT8wfGwwKG0sOCsoYVtwKzE4ND4+Ml08PDIp''@;'; put 'put ''fDApOjB8UW4oOCsoYVtwKzE4ND4+Ml08PDIpfDApLGFbMTgwKyhwZT0wfGFbRz4+Ml0pPj4yXT1wLGFbKHBlPXBlKzE4NHwwKT4+Ml09MSsobT0wfGFbcGU+PjJdKSxhW3ArKG08PDIpPj4yXT13LGFbKDB8YVsxODArKHA9MHxhW0c+PjJdKT4+Ml0pKyhhW3ArMTg0Pj4yXTw8Mik+PjJdPTAs''@;'; put 'put ''cD0obT0wfGFbMTcyKyhwPTB8YVsoQT1BKzE2fDApPj4yXSk+PjJdKT8wfGwwKG0sOCsoYVtwKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVtwKzE3Nj4+Ml08PDIpfDApLGFbMTcyKyhtPTB8YVtBPj4yXSk+PjJdPXAsYVsobT1tKzE3NnwwKT4+Ml09MSsocGU9MHxhW20+PjJdKSxhW3ArKHBl''@;'; put 'put ''PDwyKT4+Ml09dyxhWygwfGFbMTcyKyhwPTB8YVtBPj4yXSk+PjJdKSsoYVtwKzE3Nj4+Ml08PDIpPj4yXT0wLHA9MHxhW2I+PjJdKSxUdFtwKzE3MD4+MV09SyksTT0wfGswKGwsTSk7az0wfHp0KGwsayl9fShrLExlLGYpLFExKGspLG9lPUJlLDB8TGV9ZnVuY3Rpb24galYobCxjLGYscCl7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgcGUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLG1lPTA7Zm9yKHBlPW9lLG9lPW9lKzE2fDAsdWVbKEs9cGUpPj4wXT0wfHVlWzE4NTg4XSx1ZVtLKzE+PjBdPTB8dWVbMTg1ODldLHVlW0srMj4+MF09MHx1ZVsxODU5MF0s''@;'; put 'put ''dWVbSyszPj4wXT0wfHVlWzE4NTkxXSxmMChLPTB8RWMoOTM1MTUsSywwKSwxMzc0ODMsMjgwLDEpLGI9SysxNnwwLG09MHxvMChjKSxBPTA7bTspZjAodz0wfE1yKEssMHwkcigwfGFbbSsyMD4+Ml0pLDEpLDEzNzQ0NywzMDQsMSksYVsxMTIrKE09MHxhWyhSPXcrMTZ8MCk+PjJdKT4+Ml09''@;'; put 'put ''bSxhW20rMjQ+PjJdPXcsYVtNKzE3Nj4+Ml09MCxNPTB8bXIoNCksYVsxNzIrKEQ9MHxhW1I+PjJdKT4+Ml09TSxhW0QrMTg0Pj4yXT0wLEQ9MHxtcig0KSxhWzE4MCsoMHxhW1I+PjJdKT4+Ml09RCxBP2FbMTY0KygwfGFbQSsxNj4+Ml0pPj4yXT13OmFbMTkyKygwfGFbYj4+Ml0pPj4yXT13''@;'; put 'put ''LG09MHxhW20+PjJdLEE9dztrPTB8bzAoYyk7ZTpmb3IoO2s7KXtmb3IoTT1rKzMyfDAsRD1rKzI0fDAsUj1rKzIwfDAsbT1rO209MHxhW20+PjJdOylpZigwfFJpWzEyNyZmXShrLG0pKXtpZihBPTB8UmlbMTI3JnBdKE0sbSszMnwwKSxmMCh3PTB8cmwoSywwfGFbRD4+Ml0sMHxhW20rMjQ+''@;'; put 'put ''PjJdLDAsMSksMTM3NDYwLDE3NiwxKSwoMHxBKT49NjU1MzYpe0c9MTM7YnJlYWsgZX1UdFsxNzArKG1lPTB8YVsoYj13KzE2fDApPj4yXSk+PjFdPUEsYVttZSsxNTY+PjJdPTEsMHx3JiYwfHJsKGwsMHxhW1I+PjJdLDB8YVttKzIwPj4yXSwwLDApJiYoYVsxNTYrKDB8YVtiPj4yXSk+PjJd''@;'; put 'put ''PTEwMCl9az0wfGFbaz4+Ml19Zm9yKDEzPT0oMHxHKSYmQnIoOTM1MTgsOTM1MzQsMjU0LDkzNTQ3KSxrPTB8bzAoYyk7azspe2ZvcihNPTE2KyhiPTB8YVtrKzI0Pj4yXSl8MCxiPTB8eTAoSyxiKTtiOyltPShBPTB8YVsxODArKG09MHxhW00+PjJdKT4+Ml0pPzB8bDAoQSw4KyhhW20rMTg0''@;'; put 'put ''Pj4yXTw8Mil8MCk6MHxRbig4KyhhW20rMTg0Pj4yXTw8Mil8MCksYVsxODArKEE9MHxhW00+PjJdKT4+Ml09bSxhWyhBPUErMTg0fDApPj4yXT0xKyh3PTB8YVtBPj4yXSksYVttKyh3PDwyKT4+Ml09YixhWygwfGFbMTgwKyh3PTB8YVtNPj4yXSk+PjJdKSsoYVt3KzE4ND4+Ml08PDIpPj4y''@;'; put 'put ''XT0wLHc9YistNDh8MCxtPShBPTB8YVsxNzIrKG09MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/Yjp3KSs0MD4+Ml0pPj4yXSk+PjJdKT8wfGwwKEEsOCsoYVttKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVttKzE3Nj4+Ml08PDIpfDApLGFbMTcyKygwfGFbMTYrKDB8YVsoMj09KDMm''@;'; put 'put ''YVtiPj4yXXwwKT9iOncpKzQwPj4yXSk+PjJdKT4+Ml09bSxHPTB8YVsxNzIrKHA9MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/Yjp3KSs0MD4+Ml0pPj4yXSk+PjJdLGFbKHA9cCsxNzZ8MCk+PjJdPTErKG1lPTB8YVtwPj4yXSksYVtHKyhtZTw8Mik+PjJdPWIsYVsoMHxhWzE3Miso''@;'; put 'put ''bWU9MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/Yjp3KSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVttZSsxNzY+PjJdPDwyKT4+Ml09MCxiPTB8azAoSyxiKTtrPTB8YVtrPj4yXX1yZXR1cm4gb2U9cGUsMHxLfWZ1bmN0aW9uICQ1KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKG09MHxM''@;'; put 'put ''dChsfD0wKTttOykocD0wfGFbMTcyKyhjPTB8YVsoZj1tKzE2fDApPj4yXSk+PjJdKSYmKEh0KHApLGM9MHxhW2Y+PjJdKSwwfChjPTB8YVtjKzE4MD4+Ml0pJiZIdChjKSxtPTB8enQobCxtKTtRMShsKX1mdW5jdGlvbiB1aChsLGMpe2N8PTA7dmFyIGssTSxHLHBlLE9lLExlLEJlLGY9MCxw''@;'; put 'put ''PTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxSPTAsYmU9MCxIZT0wLGplPTA7Zm9yKEJlPW9lLG9lPW9lKzY0fDAsRz1CZSs1MnwwLFI9QmUrNDB8MCxwZT1CZSxMZT0wfFFuKDcyKihPZT0wfE5vKGx8PTApKXwwKSxJYyhSLGwpLHc9K1duW1I+PjJdLGI9K1duW1IrND4+Ml0saz0uNSoodz0oUj0w''@;'; put 'put ''IT0oMHx1ZVtSKzg+PjBdKSk/LjAxMzg4ODg4ODg4ODg4ODg4OCp3OncpLE09LjUqKGI9Uj8uMDEzODg4ODg4ODg4ODg4ODg4KmI6YiksZj1MZSxwPTB8THQobCk7cDspbT0rX1szMisoRD0wfGFbcCsxNj4+Ml0pPj4zXSxSPyhBPS41KitfW0QrNDA+PjNdK2IsbT0uNSptK3cpOihBPU0qK19b''@;'; put 'put ''RCs0MD4+M10sbSo9ayksX1tmPj4zXT1qZT0rX1soRD0wfGFbRCsxMzI+PjJdKT4+M10sX1tmKzg+PjNdPUhlPStfW0QrOD4+M10sX1tmKzE2Pj4zXT1qZS1tLF9bZisyND4+M109SGUtQSxfW2YrMzI+PjNdPWplK20sX1tmKzQwPj4zXT1IZStBLF9bZis0OD4+M109bSxfW2YrNTY+PjNdPUEs''@;'; put 'put ''YVtmKzY0Pj4yXT1wLGY9Zis3MnwwLHA9MHx6dChsLHApO2Rve2lmKCgwfGMpPDApe2lmKDA9PShtPStfMmUoTGUsT2UpKSl7SHQoTGUpLGY9MDticmVha313PW0sQT1tLGJlPTE5fWVsc2V7aWYocD0wfEMyZShMZSxPZSxHKSwhKGY9MHxhW0c+PjJdKSl7SHQocCksSHQoTGUpLGY9MDticmVh''@;'; put 'put ''a31jP209QT0razJlKHAsZik6KHAxKHBlLHAsZiksbT0rX1twZT4+M10sQT0rX1twZSs4Pj4zXSksSHQocCksdz1tLGJlPTE5fX13aGlsZSgwKTtpZigxOT09KDB8YmUpKXtmb3IoZj0wLHA9TGU7ISgoMHxmKT49KDB8T2UpKTspX1soYmU9MHxhWzEzMisoMHxhWzE2KygwfGFbcCs2ND4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdKT4+M109K19bcD4+M10qdyxfW2JlKzg+PjNdPStfW3ArOD4+M10qQSxmPWYrMXwwLHA9cCs3MnwwO0h0KExlKSxmPTF9cmV0dXJuIG9lPUJlLDB8Zn1mdW5jdGlvbiBfMmUobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wO2Y9MCxwPTA7ZTpmb3IoOyEoKDB8cCk+PSgwfGMpKTspZm9yKGJlPWwrNzJ8MCxwPXArMXwwLFI9bCsxNnwwLEc9bCs4fDAsSz1sKzU2fDAscGU9bCs0OHwwLG1lPWwrMzJ8MCxNPWwrMjR8MCxEPWwrNDB8MCxiPXAsaz1iZTs7KXtpZigoMHxiKT49''@;'; put 'put ''KDB8Yykpe2w9YmU7Y29udGludWUgZX1pZigrX1tSPj4zXTw9K19bayszMj4+M10mJitfW2srMTY+PjNdPD0rX1ttZT4+M10mJitfW00+PjNdPD0rX1trKzQwPj4zXSYmK19baysyND4+M108PStfW0Q+PjNdKXtmPTA7YnJlYWsgZX0obT0rX1tsPj4zXSk9PShBPStfW2s+PjNdKT93PU1zOih3''@;'; put 'put ''PStlbygrKG0tQSkpLHc9KCtfW2srNDg+PjNdKyArX1twZT4+M10pL3cpLChtPStfW0c+PjNdKT09KEE9K19bays4Pj4zXSk/bT1NczoobT0rZW8oKyhtLUEpKSxtPSgrX1trKzU2Pj4zXSsgK19bSz4+M10pL20pLGI9YisxfDAsaz1rKzcyfDAsZj0odz1tPHc/bTp3KT5mP3c6Zn1yZXR1cm4r''@;'; put 'put ''Zn1mdW5jdGlvbiBDMmUobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wO0Q9MCxwPTAsUj1rPTB8UW4oMTYrKChjfD0wKTw8NCl8MCks''@;'; put 'put ''Rz1jLHc9aztlOmZvcig7ISgoMHxwKT49KDB8YykpOylmb3IoZXQ9bCs3MnwwLHA9cCsxfDAsamU9bCsxNnwwLG1lPWwrMzJ8MCxiZT1sKzI0fDAsT2U9bCs0MHwwLExlPWwrOHwwLEJlPWwrNTZ8MCxIZT1sKzQ4fDAsSz1wLHBlPWV0LE09dzs7KXtpZigoMHxLKT09KDB8Yykpe2w9ZXQsdz1N''@;'; put 'put ''O2NvbnRpbnVlIGV9K19bamU+PjNdPD0rX1twZSszMj4+M10mJitfW3BlKzE2Pj4zXTw9K19bbWU+PjNdJiYrX1tiZT4+M108PStfW3BlKzQwPj4zXSYmK19bcGUrMjQ+PjNdPD0rX1tPZT4+M10/KHc9RytjfDAsKDB8RCk9PSgwfEcpPyhSPWs9MHxsMChrLDE2Kyh3PDw0KXwwKSxNPWspOnc9''@;'; put 'put ''RywobT0rX1tsPj4zXSkhPShBPStfW3BlPj4zXSk/KG09KCtfW3BlKzQ4Pj4zXSsgK19bSGU+PjNdKS8rZW8oKyhtLUEpKSk8MSYmKG09MSxydD0xMyk6KG09TXMscnQ9MTMpLDEzPT0oMHxydCkmJihydD0wKSwoQT0rX1tMZT4+M10pIT0oYj0rX1twZSs4Pj4zXSk/KEE9KCtfW3BlKzU2Pj4z''@;'; put 'put ''XSsgK19bQmU+PjNdKS8rZW8oKyhBLWIpKSk8MSYmKEE9MSxydD0xNik6KEE9TXMscnQ9MTYpLDE2PT0oMHxydCkmJihydD0wKSxfW1IrKChEPUQrMXwwKTw8NCk+PjNdPW0sX1tSKyhEPDw0KSs4Pj4zXT1BKTp3PUcsSz1LKzF8MCxwZT1wZSs3MnwwLEc9d31yZXR1cm4gcnQ9MHxsMCh3LDE2''@;'; put 'put ''KyhEPDw0KXwwKSxhW2Y+PjJdPUQsMHxydH1mdW5jdGlvbiBrMmUobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKHA9MSxtPTA7Zj1sKzE2fDAsISgoMHxwKT4oMHxjKSk7KXA9cCsxfDAsbT0oQT0odz0rX1tmPj4zXSk8KEE9K19bbCsyND4+M10pP3c6QSk+bT9B''@;'; put 'put ''Om0sbD1mO3JldHVybittfWZ1bmN0aW9uIHAxKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHcscD0wLG09MCxBPTAsYj0wO2ZvcihfWyhjfD0wKT4+M109MSxfW2MrOD4+M109TXMsSTEoYysxNnwwLGYsMTYsNzYpLHc9MHxRbigxNisoZjw8NCl8MCksX1t3KyhmPDw0KT4+M109K19bYysoZjw8NCk+''@;'; put 'put ''PjNdLEE9ZixwPTE7Oyl7aWYoX1t3KyhBPDw0KSs4Pj4zXT1wLG09QSstMXwwLCgwfEEpPD0wKXtwPU1zLG09MCxBPTA7YnJlYWt9X1t3KyhtPDw0KT4+M109K19bYysobTw8NCk+PjNdLGI9K19bKCtfW2MrKEE8PDQpKzg+PjNdPnA/Yzp3KSsoQTw8NCkrOD4+M10sQT1tLHA9Yn1mb3IoOyEo''@;'; put 'put ''KDB8QSk+KDB8ZikpOylwPShjPShiPStfW3crKEE8PDQpKzg+PjNdKitfW3crKEE8PDQpPj4zXSk8cCk/YjpwLG09Yz9BOm0sQT1BKzF8MDtpZihwPE1zKXJldHVybiBiPStfW3crKG08PDQpKzg+PjNdLF9bbD4+M109K19bdysobTw8NCk+PjNdLHZvaWQoX1tsKzg+PjNdPWIpO0JyKDkzNTk2''@;'; put 'put ''LDkzNTM0LDgzMiw5MzYxNil9ZnVuY3Rpb24gcTUobCxjLGYpe3JldHVybiBjfD0wLGZ8PTAsZj1vZSxvZT1vZSsxNnwwLGFbKGM9Zik+PjJdPTkzNjMxLFhyKDEsOTM2ODEsYyksb2U9ZiwwfWZ1bmN0aW9uIEhYKGwpe3ZhciBjPTA7MHwobHw9MCkmJigwfChjPTB8YVtsKzQ+PjJdKSYmSHQo''@;'; put 'put ''YyksMHwoYz0wfGFbbCs4Pj4yXSkmJkh0KGMpLDB8KGM9MHxhW2wrMTY+PjJdKSYmSHQoYyksSHQobCkpfWZ1bmN0aW9uIFhEKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBrLE0sRCxSLG09MCxBPTAsdz0wLGI9MDtmb3IoUj1vZSxvZT1vZSsxNnwwLEQ9Uis4fDAsTT1SLGs9MHxaYSgw''@;'; put 'put ''fGFbNDY4NDldLChmfD0wKTw8MiksYVs0Njg0OV09ayxtPTA7ISgoMHxtKT49KDB8ZikpOylhW3ArKG08PDIpPj4yXT0yMTQ3NDgzNjQ3LG09bSsxfDA7Zm9yKGFbcCsobDw8Mik+PjJdPTAsQT1jKygyMCpsfDApfDAsdz1jKygyMCpsfDApKzh8MCxiPWMrKDIwKmx8MCkrNHwwLG09MTshKCgw''@;'; put 'put ''fG0pPj0oMHxhW0E+PjJdKSk7KWFbcCsoYVsoMHxhW2I+PjJdKSsobTw8Mik+PjJdPDwyKT4+Ml09fn4rV25bKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSxtPW0rMXwwO2ZvcihmdW5jdGlvbiBOWChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIGIsayxBPTAsdz0wO2ZvcihiPTE9''@;'; put 'put ''PSgwfChtfD0wKSk/MDowfFFuKChtPDwyKS00fDApLGFbbD4+Ml09YixhW2wrND4+Ml09az1tKy0xfDAsQT0wLHc9MDshKCgwfHcpPj0oMHxtKSk7KSgwfHcpIT0oMHxjKSYmKGFbYisoQTw8Mik+PjJdPXcsYVtmKyh3PDwyKT4+Ml09QSxBPUErMXwwKSx3PXcrMXwwO2ZvcihBPSgwfGspLzJ8''@;'; put 'put ''MDshKCgwfEEpPD0tMSk7KXpWKGwsQSxmLHApLEE9QSstMXwwfShELGwsayxwLGYpLHc9LTIxNDc0ODM2Mzk7Oyl7aWYoISgoMHxWWChELE0sMHxhWzQ2ODQ5XSxwKSk8PDI0Pj4yNCkpe209MDticmVha31pZigyMTQ3NDgzNjQ3PT0oMHwobD0wfGFbcCsoKG09MHxhW00+PjJdKTw8Mik+PjJd''@;'; put 'put ''KSkpe209MDticmVha31mb3Iodz1jKygyMCptfDApfDAsYj1jKygyMCptfDApKzR8MCxBPWMrKDIwKm18MCkrOHwwLG09MTshKCgwfG0pPj0oMHxhW3c+PjJdKSk7KWpYKEQsMHxhWygwfGFbYj4+Ml0pKyhtPDwyKT4+Ml0sbCt+fitXblsoMHxhW0E+PjJdKSsobTw8Mik+PjJdfDAsMHxhWzQ2''@;'; put 'put ''ODQ5XSxwKSxtPW0rMXwwO3c9bCsxMHwwfWZvcig7ISgoMHxtKT49KDB8ZikpOykyMTQ3NDgzNjQ3PT0oMHxhWyhBPXArKG08PDIpfDApPj4yXSkmJihhW0E+PjJdPXcpLG09bSsxfDA7WlYoRCksb2U9Un1mdW5jdGlvbiBWWChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbSxBPTA7cmV0''@;'; put 'put ''dXJuIDB8YVsobT00KyhsfD0wKXwwKT4+Ml0/KGFbYz4+Ml09YVsoQT0wfGFbbD4+Ml0pPj4yXSxhW0E+PjJdPWM9MHxhW0ErKCgwfGFbbT4+Ml0pLTE8PDIpPj4yXSxhW2YrKGM8PDIpPj4yXT0wLGFbbT4+Ml09KDB8YVttPj4yXSktMSx6VihsLDAsZixwKSxsPTEpOmw9MCwwfGx9ZnVuY3Rp''@;'; put 'put ''b24galgobCxjLGYscCxtKXtsfD0wLHB8PTA7dmFyIEE9MCx3PTAsYj0wLGs9MDtpZigoMHxhWyhBPShtfD0wKSsoKGN8PTApPDwyKXwwKT4+Ml0pPigwfChmfD0wKSkpe2ZvcihiPTB8YVsoaz1wKyhjPDwyKXwwKT4+Ml0sYVtBPj4yXT1mLEE9MHxhW2w+PjJdLGw9YjshKCgwfGwpPD0wfHwo''@;'; put 'put ''dz1sPj4+MSxiPTB8YVtBKyh3PDwyKT4+Ml0sKDB8YVttKyhiPDwyKT4+Ml0pPD0oMHxmKSkpOylhW0ErKGw8PDIpPj4yXT1iLGFbcCsoYjw8Mik+PjJdPWwsbD13O2FbQSsobDw8Mik+PjJdPWMsYVtrPj4yXT1sfX1mdW5jdGlvbiBaVihsKXswfChsPTB8YVsobHw9MCk+PjJdKSYmSHQobCl9''@;'; put 'put ''ZnVuY3Rpb24gelYobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTAsaz0wO2ZvcihiPTQrKGx8PTApfDA7QT0xfChtPWM8PDEpLCgwfG0pPCgwfCh3PTB8YVtiPj4yXSkpJiYoMHxhW3ArKGFbKGs9MHxhW2w+PjJdKSsobTw8Mik+PjJdPDwyKT4+Ml0pPCgwfGFbcCso''@;'; put 'put ''YVtrKyhjPDwyKT4+Ml08PDIpPj4yXSl8fChtPWMpLCgwfEEpPCgwfHcpJiYobT0oMHxhW3ArKGFbKGs9MHxhW2w+PjJdKSsoQTw8Mik+PjJdPDwyKT4+Ml0pPCgwfGFbcCsoYVtrKyhtPDwyKT4+Ml08PDIpPj4yXSk/QTptKSwoMHxtKSE9KDB8Yyk7KUE9MHxhWyh3PShrPTB8YVtsPj4yXSkr''@;'; put 'put ''KG08PDIpfDApPj4yXSxhW3c+PjJdPWFbKGs9aysoYzw8Mil8MCk+PjJdLGFbaz4+Ml09QSxhW2YrKGFbdz4+Ml08PDIpPj4yXT1tLGFbZisoYVtrPj4yXTw8Mik+PjJdPWMsYz1tfWZ1bmN0aW9uIFpYKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIE0sRCxSLEcsbT0wLEE9MCx3''@;'; put 'put ''PTAsYj0wLGs9MDtmb3IoRz1vZSxvZT1vZSsxNnwwLE09Rys4fDAsYVsoRD1HKT4+Ml09MCxSPTB8UW4oZjw8MiksbT0wOyEoKDB8bSk+PSgwfGYpKTspV25bcCsobTw8Mik+PjJdPTM0MDI4MjM0NjYzODUyODg2ZTIyLG09bSsxfDA7Zm9yKFduW3ArKGw8PDIpPj4yXT0wLEE9MHxhW2MrKDIw''@;'; put 'put ''Kmx8MCk+PjJdLHc9YysoMjAqbHwwKSs4fDAsYj1jKygyMCpsfDApKzR8MCxtPTE7ISgoMHxtKT49KDB8QSkpOylhW3ArKGFbKDB8YVtiPj4yXSkrKG08PDIpPj4yXTw8Mik+PjJdPWFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSxtPW0rMXwwOyFmdW5jdGlvbiB6WChsLGMsZixwLG0pe2x8PTAs''@;'; put 'put ''Y3w9MCxmfD0wLHB8PTA7dmFyIGIsayxBPTAsdz0wO2ZvcihrPTB8UW4oKGI9KG18PTApLTF8MCk8PDIpLGFbbD4+Ml09ayxhW2wrND4+Ml09YixBPTAsdz0wOyEoKDB8dyk+PSgwfG0pKTspKDB8dykhPSgwfGMpJiYoYVtrKyhBPDwyKT4+Ml09dyxhW2YrKHc8PDIpPj4yXT1BLEE9QSsxfDAp''@;'; put 'put ''LHc9dysxfDA7Zm9yKEE9KDB8YikvMnwwOyEoKDB8QSk8PS0xKTspR1YobCxBLGYscCksQT1BKy0xfDB9KE0sbCxSLHAsZik7ZTpmb3IoOygwfEdYKE0sRCxSLHApKTw8MjQ+PjI0JiYobT0wfGFbRD4+Ml0saz0rV25bcCsobTw8Mik+PjJdLDM0MDI4MjM0NjYzODUyODg2ZTIyIT1rKTspZm9y''@;'; put 'put ''KHc9YysoMjAqbXwwKXwwLGI9YysoMjAqbXwwKSs0fDAsQT1jKygyMCptfDApKzh8MCxtPTE7Oyl7aWYoKDB8bSk+PSgwfGFbdz4+Ml0pKWNvbnRpbnVlIGU7S0QoTSwwfGFbKDB8YVtiPj4yXSkrKG08PDIpPj4yXSwrV25bKDB8YVtBPj4yXSkrKG08PDIpPj4yXStrLFIscCksbT1tKzF8MH1a''@;'; put 'put ''VihNKSxIdChSKSxvZT1HfWZ1bmN0aW9uIEdYKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtLEE9MDtyZXR1cm4gMHxhWyhtPTQrKGx8PTApfDApPj4yXT8oYVtjPj4yXT1hWyhBPTB8YVtsPj4yXSk+PjJdLGFbQT4+Ml09Yz0wfGFbQSsoKDB8YVttPj4yXSktMTw8Mik+PjJdLGFbZiso''@;'; put 'put ''Yzw8Mik+PjJdPTAsYVttPj4yXT0oMHxhW20+PjJdKS0xLEdWKGwsMCxmLHApLGw9MSk6bD0wLDB8bH1mdW5jdGlvbiBLRChsLGMsZixwLG0pe2x8PTAscHw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wO2lmKCEoK1duWyhBPShtfD0wKSsoKGN8PTApPDwyKXwwKT4+Ml08PShmPStmKSkpe2Zvcihi''@;'; put 'put ''PTB8YVsoaz1wKyhjPDwyKXwwKT4+Ml0sV25bQT4+Ml09ZixBPTB8YVtsPj4yXSxsPWI7ISgoMHxsKTw9MCkmJitXblttKygoYj0wfGFbQSsoKHc9bD4+PjEpPDwyKT4+Ml0pPDwyKT4+Ml0+ZjspYVtBKyhsPDwyKT4+Ml09YixhW3ArKGI8PDIpPj4yXT1sLGw9dzthW0ErKGw8PDIpPj4yXT1j''@;'; put 'put ''LGFbaz4+Ml09bH19ZnVuY3Rpb24gR1YobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTAsaz0wO2ZvcihiPTQrKGx8PTApfDA7QT0xfChtPWM8PDEpLCgwfG0pPCgwfCh3PTB8YVtiPj4yXSkpJiYrV25bcCsoYVsoaz0wfGFbbD4+Ml0pKyhtPDwyKT4+Ml08PDIpPj4y''@;'; put 'put ''XTwrV25bcCsoYVtrKyhjPDwyKT4+Ml08PDIpPj4yXXx8KG09YyksKDB8QSk8KDB8dykmJitXbltwKyhhWyhrPTB8YVtsPj4yXSkrKEE8PDIpPj4yXTw8Mik+PjJdPCtXbltwKyhhW2srKG08PDIpPj4yXTw8Mik+PjJdJiYobT1BKSwoMHxtKSE9KDB8Yyk7KUE9MHxhWyh3PShrPTB8YVtsPj4y''@;'; put 'put ''XSkrKG08PDIpfDApPj4yXSxhW3c+PjJdPWFbKGs9aysoYzw8Mil8MCk+PjJdLGFbaz4+Ml09QSxhW2YrKGFbdz4+Ml08PDIpPj4yXT1tLGFbZisoYVtrPj4yXTw8Mik+PjJdPWMsYz1tfWZ1bmN0aW9uIFdWKCl7VWsoMTg3NDAwLDQ4KSxhWzQ2ODUzXT0wfWZ1bmN0aW9uIFlWKGwsYyl7bHw9''@;'; put 'put ''MCxjfD0wO3ZhciBBLHcsZj0wLHA9MCxtPTA7cmV0dXJuIHc9MHxRaygxODc0MDApLGFbdyszMj4+Ml09bCxhW3crMzY+PjJdPWMscWsobCkscWsoYyksYVt3KzI0Pj4yXT0wLGFbdysyOD4+Ml09MCxBPStfW2M+PjNdLShtPStfW2w+PjNdKSxmPStfW2MrOD4+M10tKHA9K19bbCs4Pj4zXSks''@;'; put 'put ''X1soYz13KzE2fDApPj4zXT1tPWYqcCtBKm0rLjUqKGYqZitBKkEpLChBPjA/QTotQSk+KGY+MD9mOi1mKT8oX1t3Pj4zXT0xLHA9Zi9BLGY9QSxsPXcrOHwwKTooX1t3Kzg+PjNdPTEscD1BL2YsbD13KSxfW2w+PjNdPXAsX1tjPj4zXT1tL2YsYVt3KzQwPj4yXT1jPTB8YVs0Njg1M10sYVs0''@;'; put 'put ''Njg1M109YysxLDB8d31mdW5jdGlvbiBVVihsKXt2YXIgTSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtNPStfWyhsfD0wKT4+M107ZTpkb3tpZigxPT1NKXsrX1tsKzg+PjNdPj0wPyhjPTB8YVtsKzI0Pj4yXSxEPShmPTB8YVtsKzI4Pj4yXSk/NTo5KTooYz0wfGFbbCsy''@;'; put 'put ''OD4+Ml0sRD0oZj0wfGFbbCsyND4+Ml0pPzU6OSk7ZG97aWYoNT09KDB8RCkpe2lmKChwPStfW2YrOD4+M10pPitfWzIzMjY2XSlicmVhayBlO2lmKHA+PShtPStfWzIzMjY3XSkpe3c9cCxwPStfW2Y+PjNdO2JyZWFrfXc9bSxwPStfW2wrMTY+PjNdLStfW2wrOD4+M10qbTticmVha305PT0o''@;'; put 'put ''MHxEKSYmKHc9bT0rX1syMzI2N10scD0rX1tsKzE2Pj4zXS0rX1tsKzg+PjNdKm0pfXdoaWxlKDApO2Rve2lmKGMpe2lmKChBPStfW2MrOD4+M10pPG0pYnJlYWsgZTtpZihBPD0obT0rX1syMzI2Nl0pKXttPStfW2M+PjNdO2JyZWFrfUE9bSxtPStfW2wrMTY+PjNdLStfW2wrOD4+M10qbTti''@;'; put 'put ''cmVha31BPW09K19bMjMyNjZdLG09K19bbCsxNj4+M10tK19bbCs4Pj4zXSptfXdoaWxlKDApOyhjPXA+KGI9K19bMjMyNjhdKSkmKGY9bT5iKXxwPChrPStfWzIzMjY5XSkmbTxrfHwoYyYmKHc9KCtfW2wrMTY+PjNdLWIpLytfW2wrOD4+M10scD1iKSxwPGsmJih3PSgrX1tsKzE2Pj4zXS1r''@;'; put 'put ''KS8rX1tsKzg+PjNdLHA9ayksZiYmKEE9KCtfW2wrMTY+PjNdLWIpLytfW2wrOD4+M10sbT1iKSxtPGsmJihBPSgrX1tsKzE2Pj4zXS1rKS8rX1tsKzg+PjNdLG09ayksRD00Nil9ZWxzZXtmPTB8YVtsKzI4Pj4yXSxjPTB8YVtsKzI0Pj4yXTtkb3tpZihjKXtpZigocD0rX1tjPj4zXSk+K19b''@;'; put 'put ''MjMyNjhdKWJyZWFrIGU7aWYocD49KEE9K19bMjMyNjldKSl7dz0rX1tjKzg+PjNdO2JyZWFrfXc9K19bbCsxNj4+M10tQSpNLHA9QTticmVha313PStfW2wrMTY+PjNdLShBPStfWzIzMjY5XSkqTSxwPUF9d2hpbGUoMCk7ZG97aWYoZil7aWYoKG09K19bZj4+M10pPEEpYnJlYWsgZTtpZiht''@;'; put 'put ''PD0oYj0rX1syMzI2OF0pKXtBPStfW2YrOD4+M107YnJlYWt9QT0rX1tsKzE2Pj4zXS1NKmIsbT1iO2JyZWFrfUE9K19bbCsxNj4+M10tTSoobT0rX1syMzI2OF0pfXdoaWxlKDApOyhjPXc+KGI9K19bMjMyNjZdKSkmKGY9QT5iKXx3PChrPStfWzIzMjY3XSkmQTxrfHwoYyYmKHc9YixwPSgr''@;'; put 'put ''X1tsKzE2Pj4zXS1iKS9NKSx3PGsmJih3PWsscD0oK19bbCsxNj4+M10taykvTSksZiYmKEE9YixtPSgrX1tsKzE2Pj4zXS1iKS9NKSxBPGsmJihBPWssbT0oK19bbCsxNj4+M10taykvTSksRD00Nil9fXdoaWxlKDApOzQ2PT0oMHxEKSYmZnVuY3Rpb24gTTJlKGwsYyxmLHAsbSl7cD0rcCxt''@;'; put 'put ''PSttO3ZhciBBO3RnKDB8YVsoQT0zMisobHw9MCl8MCk+PjJdLGM9K2MsZj0rZiksdGcoMHxhW0E+PjJdLHAsbSksdGcoMHxhWyhsPWwrMzZ8MCk+PjJdLGMsZiksdGcoMHxhW2w+PjJdLHAsbSl9KGwscCx3LG0sQSl9ZnVuY3Rpb24gJEQobCxjLGYpe2FbMjQrKGx8PTApKygoY3w9MCk8PDIp''@;'; put 'put ''Pj4yXT1mfD0wLHFrKGYpLDB8YVtsKzI0KygxLWM8PDIpPj4yXSYmKFVWKGwpLGNMKDB8YVtsKzMyPj4yXSksY0woMHxhW2wrMzY+PjJdKSx2aihsLDE4NzQwMCkpfWZ1bmN0aW9uIGNwKGwsYyl7dmFyIGYscDtyZXR1cm4rKChwPStfWzgrKGx8PTApPj4zXS0rX1s4KyhjfD0wKT4+M10pKnAr''@;'; put 'put ''KGY9K19bbD4+M10tK19bYz4+M10pKmYpfWZ1bmN0aW9uIEpWKGwsYyxmKXtfWyhsfD0wKT4+M109K19bKGN8PTApPj4zXS0rX1soZnw9MCk+PjNdLF9bbCs4Pj4zXT0rX1tjKzg+PjNdLStfW2YrOD4+M119ZnVuY3Rpb24gSGsobCxjLGYpe19bKGx8PTApPj4zXT0rX1soZnw9MCk+PjNdKyAr''@;'; put 'put ''X1soY3w9MCk+PjNdLF9bbCs4Pj4zXT0rX1tmKzg+PjNdKyArX1tjKzg+PjNdfWZ1bmN0aW9uIFhWKGwsYyxmKXt2YXIgcCxtO3JldHVybisoKCtfWyhmfD0wKT4+M10tKG09K19bKGN8PTApPj4zXSkpKigrX1s4KyhsfD0wKT4+M10tKHA9K19bYys4Pj4zXSkpLSgrX1tsPj4zXS1tKSooK19b''@;'; put 'put ''Zis4Pj4zXS1wKSl9ZnVuY3Rpb24gcUQobCxjLGYpe3ZhciBwLG0sQSx3O3JldHVybiBjfD0wLGZ8PTAscD1vZSxvZT1vZSs0OHwwLG09cCszMnwwLEE9cCsxNnwwLGFbKHc9cCk+PjJdPWFbKGx8PTApPj4yXSxhW3crND4+Ml09YVtsKzQ+PjJdLGFbdys4Pj4yXT1hW2wrOD4+Ml0sYVt3KzEy''@;'; put 'put ''Pj4yXT1hW2wrMTI+PjJdLGFbQT4+Ml09YVtjPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLGFbbT4+Ml09YVtmPj4yXSxhW20rND4+Ml09YVtmKzQ+PjJdLGFbbSs4Pj4yXT1hW2YrOD4+Ml0sYVttKzEyPj4yXT1hW2Yr''@;'; put 'put ''MTI+PjJdLGY9K1hWKHcsQSxtKT4wJjEsb2U9cCwwfGZ9ZnVuY3Rpb24gZUwobCxjLGYscCxtKXttfD0wO3ZhciBBLHcsYixrLE0sRCxSLEcsSyxwZT0wLG1lPTA7cmV0dXJuIDA9PSh3PShSPSgocGU9K19bOCsocHw9MCk+PjNdKS0obWU9K19bOCsoZnw9MCk+PjNdKSkqKEs9K19bKGx8PTAp''@;'; put 'put ''Pj4zXSkpKyhHPStfWyhjfD0wKT4+M10pKihtZS1wZSkrKGs9KE09K19bYys4Pj4zXSktKGI9K19bbCs4Pj4zXSkpKihEPStfW3A+PjNdKSsoQT0rX1tmPj4zXSkqKGItTSkpP3A9MDoocGU9KEEqKGItcGUpK1IrKG1lLWIpKkQpL3csbWU9LShBKmsrKChtZS1NKSpLKyhiLW1lKSpHKSkvdyxf''@;'; put 'put ''W20+PjNdPXBlKihHLUspK0ssX1ttKzg+PjNdPWsqcGUrYixwPW1lPD0xJm1lPj0wJnBlPj0wJnBlPD0xJjEpLDB8cH1mdW5jdGlvbiBOayhsLGMsZil7Zj0rZjt2YXIgdyxwPTAsbT0wLEE9MDtmb3IoYVsyMCsobHw9MCk+PjJdPWN8PTAscWsoYyksX1sodz1sKzI0fDApPj4zXT0rX1tjKzg+''@;'; put 'put ''PjNdK2YscD0ocD0wfGFbNDY4NTZdKSsoNDAqKDB8S1YobCkpfDApfDA7KHA9MHxhWyhtPXArMzJ8MCk+PjJdKSYmKChmPStfW3c+PjNdKT4oQT0rX1twKzI0Pj4zXSl8fGY9PUEmJitfW2M+PjNdPitfW2FbcCsyMD4+Ml0+PjNdKTspO2FbbCszMj4+Ml09cCxhW20+PjJdPWwsYVs0Njg1N109''@;'; put 'put ''MSsoMHxhWzQ2ODU3XSl9ZnVuY3Rpb24gS1YobCl7dmFyIGMsZixwO2M9KCtfWzI0KyhsfD0wKT4+M10tK19bMjMyNzNdKS8rX1syMzI3NV0qKHA9KygwfChmPTB8YVs0Njg1OF0pKSk7ZG97aWYoIShjPDApKXtpZihjPj1wKXtsPWYrLTF8MDticmVha31sPX5+YzticmVha31sPTB9d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuKDB8bCk8KDB8YVs0Njg1OV0pJiYoYVs0Njg1OV09bCksMHxsfWZ1bmN0aW9uIHRMKGwpe3ZhciBmLGM9MCxwPTA7aWYoMHxhWyhmPTIwKyhsfD0wKXwwKT4+Ml0pe2M9KGM9MHxhWzQ2ODU2XSkrKDQwKigwfEtWKGwpKXwwKXwwO2Rve2M9MHxhWyhwPWMrMzJ8MCk+PjJdfXdo''@;'; put 'put ''aWxlKCgwfGMpIT0oMHxsKSk7YVtwPj4yXT1hW2wrMzI+PjJdLGFbNDY4NTddPSgwfGFbNDY4NTddKS0xLGNMKDB8YVtmPj4yXSksYVtmPj4yXT0wfX1mdW5jdGlvbiBEYygpe3JldHVybiAwPT0oMHxhWzQ2ODU3XSl8MH1mdW5jdGlvbiBNZihsKXtsfD0wO3ZhciBjLG0sZj0wLHA9MDtmb3Io''@;'; put 'put ''Yz0wfGFbNDY4NTZdLGY9MHxhWzQ2ODU5XTshKDB8KHA9MHxhW2MrKDQwKmZ8MCkrMzI+PjJdKSk7KWFbNDY4NTldPXA9ZisxfDAsZj1wO209K19bcCsyND4+M10sX1tsPj4zXT0rX1thW3ArMjA+PjJdPj4zXSxfW2wrOD4+M109bX1mdW5jdGlvbiBVWCgpe3ZhciBsLGM7cmV0dXJuIGFbKGM9''@;'; put 'put ''KDB8YVs0Njg1Nl0pKyg0MCooMHxhWzQ2ODU5XSl8MCkrMzJ8MCk+PjJdPWFbMzIrKGw9MHxhW2M+PjJdKT4+Ml0sYVs0Njg1N109KDB8YVs0Njg1N10pLTEsMHxsfWZ1bmN0aW9uIG52KGwsYyl7dmFyIGY7cmV0dXJuIGx8PTAsY3w9MCxmPTB8UWsoMTg3NDQ4KSxhW2YrOD4+Ml09bCx1ZVtm''@;'; put 'put ''KzE2Pj4wXT1jLGFbZiszMj4+Ml09MCxhW2YrMjA+PjJdPTAsYVtmKzEyPj4yXT0wLDB8Zn1mdW5jdGlvbiBydihsLGMpe3ZhciBBLGIsZj0wLHA9MCxtPTAsdz0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wO0E9MHxhWzgrKGx8PTApPj4yXSxiPTB8YVs4KyhjfD0wKT4+Ml07ZG97aWYoMD09''@;'; put 'put ''KDB8QSl8MD09KDB8Yil8fCgwfChSPTB8YVtBKzM2Pj4yXSkpPT0oMHwoZj0wfGFbYiszNj4+Ml0pKXx8KE09KHA9K19bYis4Pj4zXSkqKHc9K19bQT4+M10pLShrPStfW2I+PjNdKSoobT0rX1tBKzg+PjNdKSk+LTFlLTEwJk08MWUtMTApbD0wO2Vsc2V7RD0oKEc9K19bQSsxNj4+M10pKnAt''@;'; put 'put ''KEs9K19bYisxNj4+M10pKm0pL00sdz0oSyp3LUcqaykvTSxwPStfW1IrOD4+M10sbT0rX1tmKzg+PjNdO2Rve2lmKHA8bSlmPVI7ZWxzZXtpZihwPT1tJiYrX1tSPj4zXTwrX1tmPj4zXSl7Zj1SO2JyZWFrfWw9Y319d2hpbGUoMCk7aWYobD0wfHVlW2wrMTY+PjBdLEQ+PStfW2Y+PjNdKXtp''@;'; put 'put ''ZighKGw8PDI0Pj4yNCkpe2w9MDticmVha319ZWxzZSBpZihsPDwyND4+MjQ9PTEpe2w9MDticmVha31sPTB8UWsoMTg3Njc2KSxhW2wrMjA+PjJdPTAsX1tsPj4zXT1ELF9bbCs4Pj4zXT13fX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uICRWKGwsYyl7dmFyIGIsTSxELEcsZj0wLHA9''@;'; put 'put ''MCxtPTAsQT0wLHc9MCxrPTAsUj0wO2lmKEc9MHx1ZVsxNisobHw9MCk+PjBdLChNPShrPStfWyhjfD0wKT4+M10pPihSPStfWyhiPTB8YVszNisoRD0wfGFbbCs4Pj4yXSk+PjJdKT4+M10pKT9HPDwyND4+MjQ/cD00Omw9MTpHPDwyND4+MjQ9PTE/bD0wOnA9NCw0PT0oMHxwKSl7Zj0rX1tE''@;'; put 'put ''Pj4zXTtlOmRve2lmKDE9PWYpe209KGY9K19bYys4Pj4zXSktK19bYis4Pj4zXSxBPWstUixjPSh3PStfW0QrOD4+M10pPDA7ZG97aWYoIShNP3c+PTA6Yykpe2lmKGw9dypmK2s+K19bRCsxNj4+M10sYyl7aWYobCl7bD0wO2JyZWFrIGV9YnJlYWt9aWYobClicmVhaztsPTA7YnJlYWsgZX1p''@;'; put 'put ''ZihtPj13KkEpe2w9MTticmVhayBlfX13aGlsZSgwKTtsPXcqKEEqQS1tKm0pPChSLT0rX1thW0QrMzI+PjJdPj4zXSkqbSooMipBL1IrMSt3KncpLGMmJihsXj0xKX1lbHNlIEE9K19bRCsxNj4+M10taypmLHc9K19bYys4Pj4zXS1BLFI9ay1SLGs9QS0rX1tiKzg+PjNdLGw9dyp3PmsqaytS''@;'; put 'put ''KlJ9d2hpbGUoMCk7bD0xJihsXkc8PDI0Pj4yNCE9MCl9cmV0dXJuIDB8bH1mdW5jdGlvbiBWayhsLGMpe2FbKGN8PTApPj4yXT1sfD0wLGFbYys0Pj4yXT1hWyhsPWwrNHwwKT4+Ml0sYVthW2w+PjJdPj4yXT1jLGFbbD4+Ml09Y31mdW5jdGlvbiBFMmUobCl7dmFyIGM9MCxmPTAscD0wLG09''@;'; put 'put ''MCxBPTA7aWYoIShjPTB8UVgobT0oMHwoYz0oMHwoYz1+figoK19bKGx8PTApPj4zXS0rX1syMzI3Ml0pLytfWzIzMjc0XSorKDB8KG09MHxhWzQ2ODY2XSkpKSkpPjA/YzowKSk8KDB8bSk/YzptKy0xfDApKSl7Zm9yKGY9MTshKDB8KGM9MHxRWChtLWZ8MCkpfHwoYz0wfFFYKGYrbXwwKSww''@;'; put 'put ''fGMpKTspZj1mKzF8MDthWzQ2ODY3XT0oMHxhWzQ2ODY3XSkrZn1hWzQ2ODY4XT0xKygwfGFbNDY4NjhdKSxwPTB8YVs0Njg2MF0sZj0wfGFbNDY4NjFdO2U6ZG97aWYoKDB8Yyk9PSgwfHApKUE9OTtlbHNle2lmKCgwfGMpIT0oMHxmKSYmMCE9KDB8JFYoYyxsKSkpe0E9OTticmVha31mb3Io''@;'; put 'put ''Ozspe2lmKCgwfChjPTB8YVtjPj4yXSkpPT0oMHxwKSlicmVhayBlO2lmKDB8JFYoYyxsKSl7cD1jO2JyZWFrfX19fXdoaWxlKDApO2lmKDk9PSgwfEEpKXtmb3IoOygwfChjPTB8YVtjKzQ+PjJdKSkhPSgwfGYpJiYwfCRWKGMsbCk7KUE9OTtwPTB8YVtjPj4yXX1yZXR1cm4oMHxtKT4wJiYo''@;'; put 'put ''MHxtKTwoKDB8YVs0Njg2Nl0pLTF8MCkmJigwfChmPTB8YVsoYz0oMHxhWzQ2ODY1XSkrKG08PDIpfDApPj4yXSkmJihhWyhBPWYrMTJ8MCk+PjJdPSgwfGFbQT4+Ml0pLTEpLGFbYz4+Ml09cCxhWyhBPXArMTJ8MCk+PjJdPTErKDB8YVtBPj4yXSkpLDB8cH1mdW5jdGlvbiBRWChsKXt2YXIg''@;'; put 'put ''Yz0wLGY9MDtyZXR1cm4oMHwobHw9MCkpPi0xJigwfGFbNDY4NjZdKT4oMHxsKSYmMCE9KDB8KGM9MHxhWyhmPSgwfGFbNDY4NjVdKSsobDw8Mil8MCk+PjJdKSk/LTI9PSgwfGFbYys4Pj4yXSkmJihhW2Y+PjJdPTAsYVsobD1jKzEyfDApPj4yXT1mPSgwfGFbbD4+Ml0pLTF8MCxmfHx2aihj''@;'; put 'put ''LDE4NzQ0OCksYz0wKTpjPTAsMHxjfWZ1bmN0aW9uIHgyZShsKXt2YXIgYyxmO2FbNCsoZj0wfGFbKGx8PTApPj4yXSk+PjJdPWFbKGM9bCs0fDApPj4yXSxhW2FbYz4+Ml0+PjJdPWYsYVtsKzg+PjJdPS0yfWZ1bmN0aW9uIHFWKGwpe3JldHVybiAwfGFbNCsobHw9MCk+PjJdfWZ1bmN0aW9u''@;'; put 'put ''IFU5ZShsKXtyZXR1cm4gMHxhWyhsfD0wKT4+Ml19ZnVuY3Rpb24gUTllKGwpe3ZhciBjO3JldHVybiAwfGFbKGw9KGM9MHxhWzgrKGx8PTApPj4yXSk/MD09KDB8dWVbbCsxNj4+MF0pP2MrMzJ8MDpjKzM2fDA6MTg3NjcyKT4+Ml19ZnVuY3Rpb24gVDJlKGwpe3ZhciBjO3JldHVybiAwfGFb''@;'; put 'put ''KGw9KGM9MHxhWzgrKGx8PTApPj4yXSk/MD09KDB8dWVbbCsxNj4+MF0pP2MrMzZ8MDpjKzMyfDA6MTg3NjcyKT4+Ml19ZnVuY3Rpb24gSTJlKCl7VWsoMTg3NDgwLDI0KX1mdW5jdGlvbiB0ZyhsLGMsZil7Zj0rZjt2YXIgYixwPTAsbT0wLEE9MCx3PTA7Yj1vZSxvZT1vZSszMnwwLG09MHxh''@;'; put 'put ''WyhBPSgwfGFbNDY4NjldKSsoOTYqKDB8YVsxNisobHw9MCk+PjJdKXwwKSs4OHwwKT4+Ml0sX1sodz1iKSs4Pj4zXT1jPStjLF9bdysxNj4+M109ZixwPTB8ZWoobCx3LG0pO2Rve2lmKDB8cCl7aWYoKDB8cCk8MCl7dz0wfFFrKDE4NzQ4MCksX1t3Kzg+PjNdPWMsX1t3KzE2Pj4zXT1mLGFb''@;'; put 'put ''dz4+Ml09bSxhW0E+PjJdPXc7YnJlYWt9Zm9yKDsoMHwoQT0wfGVqKGwsdyxwPTB8YVttPj4yXSkpKT4wOyltPXA7MHxBJiYodz0wfFFrKDE4NzQ4MCksX1t3Kzg+PjNdPWMsX1t3KzE2Pj4zXT1mLGFbbT4+Ml09dyxhW3c+PjJdPXApfX13aGlsZSgwKTtvZT1ifWZ1bmN0aW9uIGVqKGwsYyxm''@;'; put 'put ''KXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2Rve2lmKGYpaWYoKG09K19bYys4Pj4zXSk9PShiPStfW2YrOD4+M10pJihwPStfW2MrMTY+PjNdKT09KEE9K19bZisxNj4+M10pKWM9MDtlbHNle2lmKGs9bS0oTT0rX1tsPj4zXSksdz1wLShtPStfW2wr''@;'; put 'put ''OD4+M10pLGItPU0scD1BLW0sIShrPj0wKSl7aWYoYj49MCl7Yz0xO2JyZWFrfWlmKG09cC9iLChwPXcvayk8bSl7Yz0tMTticmVha31pZihwPm0pe2M9MTticmVha31jPWs+Yj8tMToxO2JyZWFrfWlmKCEoYjwwKSl7aWYoYz1iPjAsaz4wKXtpZighYyl7Yz1wPjA/LTE6MTticmVha31pZiht''@;'; put 'put ''PXAvYiwocD13L2spPG0pe2M9LTE7YnJlYWt9aWYocD5tKXtjPTE7YnJlYWt9Yz1rPGI/LTE6MTticmVha31pZihjKXtjPXc8PTA/LTE6MTticmVha31pZih3PHApe2M9cDw9MD8xOi0xO2JyZWFrfWM9dzw9MD8tMToxO2JyZWFrfWM9LTF9ZWxzZSBjPS0xfXdoaWxlKDApO3JldHVybiAwfGN9''@;'; put 'put ''ZnVuY3Rpb24gbkwobCxjLGYscCl7Y3w9MCxwfD0wO3ZhciBtLEE9MDtmb3IobT0wfGFbKGx8PTApKygyMCooZnw9MCl8MCk+PjJdLGY9bCsoMjAqZnwwKSs0fDAsYz0xLGw9MDshKCgwfGMpPj0oMHxtKSk7KUE9bCsoKDB8YVtwKyhhWygwfGFbZj4+Ml0pKyhjPDwyKT4+Ml08PDIpPj4yXSk+''@;'; put 'put ''MCYxKXwwLGM9YysxfDAsbD1BO3JldHVybiAwfGx9ZnVuY3Rpb24gdGoobCxjLGYpe3ZhciBwO2ZvcihmfD0wLHA9KGx8PTApKygyMCooY3w9MCl8MCl8MCxjPWwrKDIwKmN8MCkrNHwwLGw9MTshKCgwfGwpPj0oMHxhW3A+PjJdKSk7KWFbZisoYVsoMHxhW2M+PjJdKSsobDw8Mik+PjJdPDwy''@;'; put 'put ''KT4+Ml09MSxsPWwrMXwwfWZ1bmN0aW9uIG5qKGwsYyxmKXt2YXIgcDtmb3IoZnw9MCxwPShsfD0wKSsoMjAqKGN8PTApfDApfDAsYz1sKygyMCpjfDApKzR8MCxsPTE7ISgoMHxsKT49KDB8YVtwPj4yXSkpOylhW2YrKGFbKDB8YVtjPj4yXSkrKGw8PDIpPj4yXTw8Mik+PjJdPTAsbD1sKzF8''@;'; put 'put ''MH1mdW5jdGlvbiBXeShsLGMpe2x8PTA7dmFyIHAsZj0wLG09MDtmb3IocD0wfFFuKDB8dnIobT0oY3w9MCk8PDIsYykpLG09MHxRbihtKSxmPTA7Oyl7aWYoKDB8Zik+PSgwfGMpKXtmPTA7YnJlYWt9YVttKyhmPDwyKT4+Ml09cCsoKDB8dnIoZixjKSk8PDIpLGY9ZisxfDB9Zm9yKDshKCgw''@;'; put 'put ''fGYpPj0oMHxjKSk7KVhEKGYsbCxjLDB8YVttKyhmPDwyKT4+Ml0pLGY9ZisxfDA7cmV0dXJuIDB8bX1mdW5jdGlvbiBpdihsLGMpe2x8PTA7dmFyIE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtmb3IoTT0wfFFuKChjfD0wKTw8MiksZj0wLHA9MDshKCgwfGYpPj0oMHxjKSk7''@;'; put 'put ''KWs9KDB8YVtsKygyMCpmfDApPj4yXSkrcHwwLGY9ZisxfDAscD1rO2ZvcihwPTB8UW4ocDw8MiksZj0wOyEoKDB8Zik+PSgwfGMpKTspYVtNKyhmPDwyKT4+Ml09MCxmPWYrMXwwO2ZvcihtPTA7ISgoMHxtKT49KDB8YykpOyl7Zm9yKGFbbCsoMjAqbXwwKSs4Pj4yXT1wLHRqKGwsbSxNKSxi''@;'; put 'put ''PWwrKDIwKm18MCkrNHwwLGs9KHc9MHxhWyhBPWwrKDIwKm18MCl8MCk+PjJdKS0yfDAsZj0xOyEoKDB8Zik+PSgwfHcpKTspV25bcCsoZjw8Mik+PjJdPSsoaysoMHxhW2wrKDIwKihEPTB8YVsoMHxhW2I+PjJdKSsoZjw8Mik+PjJdKXwwKT4+Ml0pLSgoMHxuTChsLDAsRCxNKSk8PDEpfDAp''@;'; put 'put ''LGY9ZisxfDA7bmoobCxtLE0pLHA9cCsoYVtBPj4yXTw8Mil8MCxtPW0rMXwwfUh0KE0pfWZ1bmN0aW9uIGprKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7SHQoMHxhWyhwPTgrKGx8PTApfDApPj4yXSksYVtwPj4yXT0wO2U6ZG97aWYoMHxmKWZvcihwPTA7Oyl7aWYoKDB8cCk+PSgw''@;'; put 'put ''fGMpKWJyZWFrIGU7YVtsKygyMCpwfDApKzg+PjJdPWYsbT1mKyhhW2wrKDIwKnB8MCk+PjJdPDwyKXwwLHA9cCsxfDAsZj1tfX13aGlsZSgwKX1mdW5jdGlvbiBpaihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7Zm9yKG09MCxBPTA7ISgoMHxtKT49''@;'; put 'put ''KDB8YykpOyliPTB8YVtsKyhtPDwyKT4+Ml0sbT1tKzF8MCxBPSh3PStfW2IrKGY8PDMpPj4zXS0rX1tiKyhwPDwzKT4+M10pKncrQTtyZXR1cm4rICtGMCgrQSl9ZnVuY3Rpb24gb2oobCxjLGYscCl7Y3w9MCwoMHwocHw9MCkpPigwfChmfD0wKSkmJihhWzQ2ODczXT1sfD0wLEkxKGMrKGY8''@;'; put 'put ''PDIpfDAsMS1mK3B8MCw0LDc3KSl9ZnVuY3Rpb24gYTgobCxjLGYscCl7bHw9MCxjfD0wO3ZhciB3LG09MCxBPTA7dz1vZSxvZT1vZSsxNnwwLG09dywoMHwoZnw9MCkpPCgwfChwfD0wKSkmJihmdW5jdGlvbiBYWChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixr''@;'; put 'put ''LE0sQT0wLHc9MCxEPTAsUj0wO0E9MHxEMSgpLEE9YysoKCgoKDB8RDEoKSk8PDE2fEEpPj4+MCklKCgxLWYrcHwwKT4+PjApfDApK2Y8PDIpfDAsYj0wfGFbQT4+Ml0sYVtBPj4yXT1hWyhrPWMrKGY8PDIpfDApPj4yXSxhW2s+PjJdPWIsTT0rX1tsKyhiPDwzKT4+M10sQT1mKzF8MCxmPXA7''@;'; put 'put ''ZTpmb3IoOyEoKDB8QSk+PSgwfGYpKTspe2Zvcig7ISgoMHxBKT49KDB8ZikpJiYrX1tsKyhhW2MrKEE8PDIpPj4yXTw8Myk+PjNdPD1NOylBPUErMXwwO2Zvcig7Oyl7aWYoKDB8QSk+PSgwfGYpKWNvbnRpbnVlIGU7aWYoISgrX1tsKygodz0wfGFbKHA9YysoZjw8Mil8MCk+PjJdKTw8Myk+''@;'; put 'put ''PjNdPk0pKWJyZWFrO2Y9ZistMXwwfUQ9MHxhWyhSPWMrKEE8PDIpfDApPj4yXSxhW1I+PjJdPXcsYVtwPj4yXT1ELEE9QSsxfDAsZj1mKy0xfDB9YVttPj4yXT1SPUErKCgrX1tsKyhhW2MrKEE8PDIpPj4yXTw8Myk+PjNdPk0pPDwzMT4+MzEpfDAsYVtrPj4yXT1hWyhSPWMrKFI8PDIpfDAp''@;'; put 'put ''Pj4yXSxhW1I+PjJdPWJ9KGwsYyxmLHAsbSksYTgobCxjLGYsbT0oQT0wfGFbbT4+Ml0pLTF8MCksYTgobCxjLEE9QSsxfDAscCksMHxhaihsLGMsZixtKXx8YTgobCxjLGYsbSksMHxhaihsLGMsQSxwKXx8YTgobCxjLEEscCkpLG9lPXd9ZnVuY3Rpb24gYWoobCxjLGYscCl7bHw9MCxjfD0w''@;'; put 'put ''LGZ8PTAscHw9MDt2YXIgbT0wLEE9MDtmb3IoQT0xO209ZisxfDAsKDB8Zik8KDB8cCkmMCE9KDB8QSk7KUE9K19bbCsoYVtjKyhmPDwyKT4+Ml08PDMpPj4zXT4rX1tsKyhhW2MrKG08PDIpPj4yXTw8Myk+PjNdPzA6QSxmPW07cmV0dXJuIDB8QX1mdW5jdGlvbiBsaihsLGMpe2x8PTAsY3w9''@;'; put 'put ''MDt2YXIgcGUsbWUsTGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAsYmU9MCxPZT0wLEJlPTAsSGU9MDtpZihMZT1vZSxvZT1vZSsxNnwwLGJlPTQsT2U9MHxSMCg0MCksYVtPZT4+Ml09MCxwZT1MZSxNbj0wLG1lPTB8cWkoMjMsNDAqY3wwKSxmPU1u''@;'; put 'put ''LE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfFRpKDB8YVtmPj4yXSwwfE9lLDB8YmUpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpwPS0xLDEhPSgwfHApKXtmb3IoZj0wLEc9MDshKCgwfGYpPj0oMHxjKSk7KUs9KDB8YVs0KygwfGFbbCsoZjw8Mik+PjJdKT4+Ml0pK0d8MCxmPWYrMXww''@;'; put 'put ''LEc9SztpZihNbj0wLEs9MHxxaSgyMywyNCpHfDApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJdLDB8T2UsMHxiZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMSE9KDB8cCkpe2ZvcihmPTAsTT0wOyEoKDB8TSk+PSgwfGMpKTspe2ZvcihhWyhE''@;'; put 'put ''PW1lKyg0MCpNfDApfDApPj4yXT1LKygyNCpmfDApLFI9bCsoTTw8Mil8MCxtPTAsQT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsdz0tMTc5NzY5MzEzNDg2MjMxNTdlMjkyLGI9LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixrPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjshKCgwfG0pPj0oMHxhWzQrKHA9''@;'; put 'put ''MHxhW1I+PjJdKT4+Ml0pKTspQmU9K19bKHA9MHxhW3A+PjJdKSsobTw8NCkrOD4+M10sX1tLKygyNCpmfDApPj4zXT1IZT0rX1twKyhtPDw0KT4+M10sX1tLKygyNCpmfDApKzg+PjNdPUJlLGFbSysoMjQqZnwwKSsxNj4+Ml09RCxhW0srKDI0KmZ8MCkrMjA+PjJdPTAsbT1tKzF8MCxmPWYr''@;'; put 'put ''MXwwLEE9QTxIZT9BOkhlLHc9dz5IZT93OkhlLGI9Yj5CZT9iOkJlLGs9azxCZT9rOkJlO2FbbWUrKDQwKk18MCkrND4+Ml09SysoMjQqKGYrLTF8MCl8MCksX1ttZSsoNDAqTXwwKSs4Pj4zXT1BLF9bbWUrKDQwKk18MCkrMTY+PjNdPWssX1ttZSsoNDAqTXwwKSsyND4+M109dyxfW21lKyg0''@;'; put 'put ''MCpNfDApKzMyPj4zXT1iLE09TSsxfDB9YVtwZT4+Ml09RyxhW3BlKzQ+PjJdPWMsT2U9MHxvNCgxODc0OTYsMSwwfE9lLDB8YmUpLGJlPU9uLGY9TW49MCxNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxUaSgwfGFbZj4+Ml0sMHxPZSwwfGJlKSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6''@;'; put 'put ''cD0tMSwxPT0oMHxwKT8oZj1PbixSPUssTT1LLEQ9bWUpOihmPTAsUj1LLE09SyxEPW1lKX1lbHNlIGY9T24sUj0wLE09SyxEPW1lfWVsc2UgZj1PbixSPTAsTT0wLEQ9MDtmb3IoOzspe2lmKDB8Zil7aWYoTW49MCwkbCgxMDUsMHxtZSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8o''@;'; put 'put ''KHA9MHxUaSgwfGFbZj4+Ml0sMHxPZSwwfGJlKSl8fFdlKDB8ZiwwfHhuKSxPbj14bik6cD0tMSwxPT0oMHxwKSl7Zj1PbixEPW09RCxNPUc9TSxSPUs9Ujtjb250aW51ZX1pZihNbj0wLCRsKDEwNSwwfE0pLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8VGkoMHxhW2Y+PjJd''@;'; put 'put ''LDB8T2UsMHxiZSkpfHxXZSgwfGYsMHx4biksT249eG4pOnA9LTEsMT09KDB8cCkpe2Y9T24sRD1tPUQsTT1HPU0sUj1LPVI7Y29udGludWV9cD0xNzticmVha31pZihNbj0wLGY9MHxPbCg3OCwwfFIsMHxwZSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+''@;'; put 'put ''Ml0sMHxPZSwwfGJlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxIT0oMHxtKSlpZihmfHwoTW49MCxmPTB8RXMoMjQsMHxsLDB8YywwfEQpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW3A+PjJdLDB8T2UsMHxiZSkpfHxXZSgwfHAsMHx4biksT249eG4p''@;'; put 'put ''Om09LTEsMSE9KDB8bSkpKWlmKE1uPTAsJGwoMTA1LDB8bWUpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8VGkoMHxhW3A+PjJdLDB8T2UsMHxiZSkpfHxXZSgwfHAsMHx4biksT249eG4pOm09LTEsMSE9KDB8bSkpe2lmKE1uPTAsJGwoMTA1LDB8TSkscD1NbixNbj0wLDAh''@;'; put 'put ''PSgwfHApJjAhPSgwfHhuKT8oKG09MHxUaSgwfGFbcD4+Ml0sMHxPZSwwfGJlKSl8fFdlKDB8cCwwfHhuKSxPbj14bik6bT0tMSwxIT0oMHxtKSl7cD0yNDticmVha31mPU9uLEQ9bT1ELE09Rz1NLFI9Sz1SfWVsc2UgZj1PbixEPW09RCxNPUc9TSxSPUs9UjtlbHNlIGY9T24sRD1tPUQsTT1H''@;'; put 'put ''PU0sUj1LPVI7ZWxzZSBmPU9uLEQ9bT1ELE09Rz1NLFI9Sz1SfXJldHVybiAxNz09KDB8cCk/Zj0wOjI0PT0oMHxwKSYmKGY9MD09KDB8ZikmMSksSHQoMHxPZSksb2U9TGUsMHxmfWZ1bmN0aW9uIEQyZShsLGMpe3ZhciBwLGY9MDtyZXR1cm4gMHwobD0wPT0oZj0rX1socD0wfGFbKGx8PTAp''@;'; put 'put ''Pj4yXSk+PjNdLStfWyhsPTB8YVsoY3w9MCk+PjJdKT4+M10pJiYwPT0oZj0rX1twKzg+PjNdLStfW2wrOD4+M10pPzA6Zj4wPzE6LTEpfWZ1bmN0aW9uIEwyZShsLGMpe3ZhciBwLG0sQSx3LGIsayxNLGY9MDtNPW9lLG9lPW9lKzY0fDAsQT1NKzMyfDAsdz1NKzI0fDAsYj1NKzE2fDAsaz1N''@;'; put 'put ''LE8yZShsfD0wLGN8PTAsbT1NKzQ4fDApLHA9MHxhWyhmPW0rOHwwKT4+Ml07ZG97aWYoKDB8cCk+MClmPTA7ZWxzZXtpZigoMHxwKTwwKXtpZihPMmUoYyxsLG0pLCgwfChmPTB8YVtmPj4yXSkpPjApe2Y9MDticmVha31pZighKDB8VXkobCxjLHcsYixmPSgwfGYpPDA/MzowfEpoKGMsbCwo''@;'; put 'put ''MHwoZj0wfGFbbT4+Ml0pKT4tMT9mOjAtZnwwKSkpKXtmPTA7YnJlYWt9fWVsc2UgaWYoKDB8KGY9MHxhW20+PjJdKSk9PSgwfGFbbSs0Pj4yXSk/KGY9MHxKaChsLGMsMCksZj0oMHxKaChsLGMsKDB8Zik8PSgwfEpoKGwsYywxKSkmMSkpPDwxKTpmPTB8SmgobCxjLCgwfGYpPi0xP2Y6MC1m''@;'; put 'put ''fDApLCEoMHxVeShsLGMsdyxiLGYpKSl7Zj0wO2JyZWFrfV9baz4+M109K19bdz4+M10sX1trKzg+PjNdPStfW2I+PjNdLGFbQT4+Ml09YVtrPj4yXSxhW0ErND4+Ml09YVtrKzQ+PjJdLGFbQSs4Pj4yXT1hW2srOD4+Ml0sYVtBKzEyPj4yXT1hW2srMTI+PjJdLGY9MHxvTChsLGMsQSl9fXdo''@;'; put 'put ''aWxlKDApO3JldHVybiBvZT1NLDB8Zn1mdW5jdGlvbiBPMmUobCxjLGYpe3ZhciBtLEEsdyxrLE0scD0wLGI9MDt3PStfWyhsfD0wKT4+M10sYj0rX1tsKzg+PjNdLCgwfGFbNCsocD0wfGFbbCsxNj4+Ml0pPj4yXSk9PSgwfGwpP3A9bD0wfGFbcD4+Ml06KHA9bCsyNHwwLGw9bCsyNHwwKSxB''@;'; put 'put ''PStfW3A+PjNdLXcsbT0rX1tsKzg+PjNdLWIsKDB8YVs0KyhwPTB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPT0oMHxjKT9wPWw9MHxhW3A+PjJdOihwPWMrMjR8MCxsPWMrMjR8MCksaz0rX1twPj4zXS13LE09K19bbCs4Pj4zXS1iLGFbKGZ8PTApPj4yXT1jPTA9PShiPSgrX1tjKzg+PjNdLWIp''@;'; put 'put ''KkEtKCtfW2M+PjNdLXcpKm0pPzA6Yj4wPzE6LTEsYVtmKzQ+PjJdPWw9MD09KGI9TSpBLWsqbSk/MDpiPjA/MTotMSxhW2YrOD4+Ml09MHx2cihsLGMpfWZ1bmN0aW9uIEpoKGwsYyxmKXt2YXIgbSxBLHcsYixrLE07Y3w9MCxmfD0wLGs9K19bKGx8PTApPj4zXSxNPStfW2wrOD4+M10sYj0r''@;'; put 'put ''X1sobD0oMHxhWzQrKG09MHxhW2wrMTY+PjJdKT4+Ml0pPT0oMHxsKT8wfGFbbT4+Ml06bCsyNHwwKT4+M10sdz0rX1tsKzg+PjNdO2Rve2lmKGYpe2lmKCgwfGFbNCsobD0wfGFbYysxNj4+Ml0pPj4yXSk9PSgwfGMpKXtjPTB8YVtsPj4yXTticmVha31jPWMrMjR8MDticmVha319d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIEE9K19bYz4+M10sMHwoaz09Yj9rPT1BPy0xIT0oMHxLWChNLCtfW2MrOD4+M10sdykpJjE6MDowfEtYKGssQSxiKSl9ZnVuY3Rpb24gVXkobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0w''@;'; put 'put ''O2U6ZG97aWYoKDB8bSk8MSlBPTA7ZWxzZXtSPStfW2w+PjNdLEs9K19bbCs4Pj4zXSxNPStfWyhBPSgwfGFbNCsoQT0wfGFbbCsxNj4+Ml0pPj4yXSk9PSgwfGwpPzB8YVtBPj4yXTpsKzI0fDApPj4zXSxiPStfW0ErOD4+M10sRD0rX1tjPj4zXSxHPStfW2MrOD4+M10saz0rX1soQT0oMHxh''@;'; put 'put ''WzQrKEE9MHxhW2MrMTY+PjJdKT4+Ml0pPT0oMHxjKT8wfGFbQT4+Ml06YysyNHwwKT4+M10sdz0rX1tBKzg+PjNdO3Q6ZG97c3dpdGNoKDB8bSl7Y2FzZSAzOmlmKFI9PU0pe19bZj4+M109Uix3PShHLXcpLyhELWspKihSLWspK3c7YnJlYWsgdH1pZihEPT1rKXtfW2Y+PjNdPUQsdz0oSy1i''@;'; put 'put ''KS8oUi1NKSooRC1NKStiO2JyZWFrIHR9X1tmPj4zXT0oKEstPShNPShLLWIpLyhSLU0pKSpSKS0oRy09KGs9KEctdykvKEQtaykpKkQpKS8odz1rLU0pLHc9KGsqSy1HKk0pL3c7YnJlYWsgdDtjYXNlIDI6aWYoLTE9PSgwfEpoKGwsYywwKSkpLTE9PSgwfEpoKGMsbCwxKSk/KE09KG09LTE9''@;'; put 'put ''PSgwfEpoKGMsbCwwKSkpP006UixrPUQsYj1tP2I6Syx3PUcpOihNPWssaz1ELGI9dyx3PUcpO2Vsc2UgaWYoLTEhPSgwfEpoKGwsYywxKSkpe2lmKC0xIT0oMHxKaChjLGwsMCkpKXtBPTA7YnJlYWsgZX1rPVIsdz1LfWVsc2UgTT1ELGI9RztfW2Y+PjNdPS41KihrK00pLHc9LjUqKHcrYik7''@;'; put 'put ''YnJlYWs7Y2FzZSAxOmlmKChHLUspKihSLU0pPT0oRC1SKSooSy1iKSl7X1tmPj4zXT1ELHc9RzticmVhayB0fV9bZj4+M109azticmVhayB0O2RlZmF1bHQ6QT0xO2JyZWFrIGV9fXdoaWxlKDApO19bcD4+M109dyxBPTF9fXdoaWxlKDApO3JldHVybiAwfEF9ZnVuY3Rpb24gb0wobCxjLGYp''@;'; put 'put ''e2Z8PTA7dmFyIEEsdyxiLGssTSxELFIsbWUsRyxwPTAsbT0wLHBlPTA7bWU9b2Usb2U9b2UrMTZ8MCxSPStfWyhsfD0wKT4+M10sRz0rX1tsKzg+PjNdLE09K19bKHA9KDB8YVs0KyhwPTB8YVtsKzE2Pj4yXSk+PjJdKT09KDB8bCk/MHxhW3A+PjJdOmwrMjR8MCk+PjNdLGI9K19bcCs4Pj4z''@;'; put 'put ''XSxrPStfWyhjfD0wKT4+M10sRD0rX1tjKzg+PjNdLHc9K19bKHA9KDB8YVs0KyhwPTB8YVtjKzE2Pj4yXSk+PjJdKT09KDB8Yyk/MHxhW3A+PjJdOmMrMjR8MCk+PjNdLEE9K19bcCs4Pj4zXTtlOmRve2lmKFIhPU0mayE9dylwZT0xODtlbHNle2Rve2lmKFI9PU0pe2lmKFI9PShtPStfW2Y+''@;'; put 'put ''PjNdKSYmRz09K19bZis4Pj4zXSlicmVhaztpZihNIT1tKXtwZT0xODticmVhayBlfWlmKGIhPStfW2YrOD4+M10pe3BlPTE4O2JyZWFrIGV9fX13aGlsZSgwKTtpZihrPT13KXtpZihrPT0obT0rX1tmPj4zXSkmJkQ9PStfW2YrOD4+M10pe3A9MDticmVha313PT1tJiZBPT0rX1tmKzg+PjNd''@;'; put 'put ''P3A9MDpwZT0xOH1lbHNlIHA9MH19d2hpbGUoMCk7cmV0dXJuIDE4PT0oMHxwZSkmJihwPTEpLG9lPW1lLDB8cH1mdW5jdGlvbiBLWChsLGMsZil7cmV0dXJuIDB8KChsPStsKT09KGM9K2MpfGM9PShmPStmKT8wOihsPGM/YzxmOmY8Yyk/MTotMSl9ZnVuY3Rpb24gemsobCxjLGYscCxtLEEp''@;'; put 'put ''e2x8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgUixHLEssbWUsdz0wLGI9MCxrPTAsTT0wLEQ9MCxwZT0wLGJlPTA7Sz0wfFFuKHBlPShjfD0wKTw8MykscGU9MHxRbihwZSksbWU9MzAqY3wwLFI9KDB8Zik8KDB8Yyk/ZjpjLEc9YystMXwwLEQ9MD09KDB8QSksZj0wLHc9MDtlOmZvcig7''@;'; put 'put ''ISgoMHx3KT49KDB8UikpOyl7az0wfGFbcCsodzw8Mik+PjJdO2Rve3Q6ZG97aWYoRClmPTA7ZWxzZSBmb3IoZj0wOzspe2lmKCgwfGYpPT0oMHxjKSl7Zj0wO2JyZWFrIHR9X1trKyhmPDwzKT4+M109KygwfCgwfEQxKCkpJTEwMCksZj1mKzF8MH19d2hpbGUoMCk7Zm9yKDsoMHxmKSE9KDB8''@;'; put 'put ''dyk7KW5nKGssMCxHLC0rcWQoQT0wfGFbcCsoZjw8Mik+PjJdLDAsRyxrKSxBKSxmPWYrMXwwO2I9K3JnKGssMCxHKX13aGlsZShiPDFlLTEwKTtvdihrLDAsRywxL2IsayksZj0wO2Rve2ZvcihlNChwZSwwLEcsayksJFgobCxjLGMsayxLKSxlNChrLDAsRyxLKSxBPTA7KDB8QSkhPSgwfHcp''@;'; put 'put ''OyluZyhrLDAsRywtK3FkKGJlPTB8YVtwKyhBPDwyKT4+Ml0sMCxHLGspLGJlKSxBPUErMXwwO2lmKGJlPWYsZj1mKzF8MCwhKCgwfGJlKTwoMHxtZSkmISgoYj0rcmcoaywwLEcpKTwxZS0xMCkpKWJyZWFrIGU7b3YoaywwLEcsMS9iLGspLE09K3FkKGssMCxHLHBlKX13aGlsZSgrZW8oK00p''@;'; put 'put ''PC45OTkpO19bbSsodzw8Myk+PjNdPU0qYix3PXcrMXwwfWZvcig7ISgoMHx3KT49KDB8UikpOyl7Zm9yKGs9MHxhW3ArKHc8PDIpPj4yXSxBPTA7Oyl7aWYoKDB8QSk+PSgwfGMpKXtBPTA7YnJlYWt9X1trKyhBPDwzKT4+M109KygwfCgwfEQxKCkpJTEwMCksQT1BKzF8MH1mb3IoOyEoKDB8''@;'; put 'put ''QSk+PSgwfHcpKTspbmcoaywwLEcsLStxZChiZT0wfGFbcCsoQTw8Mik+PjJdLDAsRyxrKSxiZSksQT1BKzF8MDtvdihrLDAsRywxLytyZyhrLDAsRyksayksX1ttKyh3PDwzKT4+M109MCx3PXcrMXwwfWZvcihEPVIrLTF8MCx3PTA7ISgoMHx3KT49KDB8RCkpOyl7Zm9yKGI9K19bKGw9bSso''@;'; put 'put ''dzw8Myl8MCk+PjNdLEE9dyxrPWM9dysxfDA7ISgoMHxrKT49KDB8UikpOyliPShiZT1iPChNPStfW20rKGs8PDMpPj4zXSkpP006YixBPWJlP2s6QSxrPWsrMXwwOygwfEEpIT0oMHx3KT8oZTQoSywwLEcsMHxhWyhrPXArKHc8PDIpfDApPj4yXSksZTQoMHxhW2s+PjJdLDAsRywwfGFbKGJl''@;'; put 'put ''PXArKEE8PDIpfDApPj4yXSksZTQoMHxhW2JlPj4yXSwwLEcsSyksX1ttKyhBPDwzKT4+M109K19bbD4+M10sX1tsPj4zXT1iLHc9Yyk6dz1jfXJldHVybiBIdChLKSxIdChwZSksKDB8Zik8PSgwfG1lKXwwfWZ1bmN0aW9uIHFkKGwsYyxmLHApe3ZhciBtPTAsQT0wO2ZvcihBPTAsbT0xLShj''@;'; put 'put ''fD0wKSsoZnw9MCl8MCxwPShwfD0wKSsoYzw8Myl8MCxmPShsfD0wKSsoYzw8Myl8MDttOylBPStfW3A+PjNdKitfW2Y+PjNdK0EsbT1tKy0xfDAscD1wKzh8MCxmPWYrOHwwO3JldHVybitBfWZ1bmN0aW9uIG5nKGwsYyxmLHAsbSl7cD0rcDt2YXIgQT0wO2ZvcihBPTEtKGN8PTApKyhmfD0w''@;'; put 'put ''KXwwLG09KG18PTApKyhjPDwzKXwwLGY9KGx8PTApKyhjPDwzKXwwO0E7KV9bZj4+M109K19bZj4+M10rICtfW20+PjNdKnAsQT1BKy0xfDAsbT1tKzh8MCxmPWYrOHwwfWZ1bmN0aW9uIHJnKGwsYyxmKXtyZXR1cm4rICtGMCgrICtxZChsfD0wLGN8PTAsZnw9MCxsKSl9ZnVuY3Rpb24gb3Yo''@;'; put 'put ''bCxjLGYscCxtKXtwPStwO3ZhciBBPTA7Zm9yKEE9MS0oY3w9MCkrKGZ8PTApfDAsbT0obXw9MCkrKGM8PDMpfDAsZj0obHw9MCkrKGM8PDMpfDA7QTspX1tmPj4zXT0rX1ttPj4zXSpwLEE9QSstMXwwLG09bSs4fDAsZj1mKzh8MH1mdW5jdGlvbiBlNChsLGMsZixwKXt2YXIgbT0wO2Zvciht''@;'; put 'put ''PTEtKGN8PTApKyhmfD0wKXwwLHA9KHB8PTApKyhjPDwzKXwwLGY9KGx8PTApKyhjPDwzKXwwO207KV9bZj4+M109K19bcD4+M10sbT1tKy0xfDAscD1wKzh8MCxmPWYrOHwwfWZ1bmN0aW9uICRYKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxr''@;'; put 'put ''PTA7Zm9yKGI9MDshKCgwfGIpPj0oMHxjKSk7KXtmb3Ioaz1sKyhiPDwyKXwwLEE9MCx3PTA7ISgoMHx3KT49KDB8ZikpOylBPStfW3ArKHc8PDMpPj4zXSorX1soMHxhW2s+PjJdKSsodzw8Myk+PjNdK0Esdz13KzF8MDtfW20rKGI8PDMpPj4zXT1BLGI9YisxfDB9fWZ1bmN0aW9uIHVqKGws''@;'; put 'put ''YyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTA7Zm9yKCh3PTB8YVsobXw9MCk+PjJdKT8oQT0wfFphKDB8YVt3Pj4yXSwwfHZyKDIwKmZ8MCxwKSksSz0wfFphKHcsZjw8MikpOihBPTB8UjAoMHx2cigyMCpmfDAscCkp''@;'; put 'put ''LEs9MHxSMChmPDwyKSksYVttPj4yXT1LLHc9MDs7KXtpZigoMHx3KT49KDB8Zikpe209MDticmVha31hW0srKHc8PDIpPj4yXT1BLHc9dysxfDAsQT1BKyhwPDwyKXwwfWZvcig7ISgoMHxtKT49KDB8ZikpOyl7Zm9yKGs9MHxhW2wrKDIwKm18MCkrND4+Ml0sTT0wfGFbbCsoMjAqbXwwKSs4''@;'; put 'put ''Pj4yXSxEPTB8YVtsKygyMCptfDApPj4yXSxSPUsrKG08PDIpfDAsQT0wOyEoKDB8QSk+PSgwfHApKTspe2ZvcihHPWMrKEE8PDIpfDAsYj0wLHc9MDshKCgwfHcpPj0oMHxEKSk7KWI9K19bKDB8YVtHPj4yXSkrKGFbaysodzw8Mik+PjJdPDwzKT4+M10qK1duW00rKHc8PDIpPj4yXStiLHc9''@;'; put 'put ''dysxfDA7V25bKDB8YVtSPj4yXSkrKEE8PDIpPj4yXT1iLEE9QSsxfDB9bT1tKzF8MH19ZnVuY3Rpb24gYXYobCxjKXt2YXIgZj0wLHA9MCxtPTA7Zm9yKGY9MCxwPWN8PTAsbT1sfD0wO207KWY9K19bcD4+M10rZixwPXArOHwwLG09bSstMXwwO2ZvcihmLz0rKDB8bCk7bDspX1tjPj4zXT0r''@;'; put 'put ''X1tjPj4zXS1mLGM9Yys4fDAsbD1sKy0xfDB9ZnVuY3Rpb24gcVgobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zm9yKHc9MDshKCgwfHcpPj0oMHxjKSk7KXtmb3IoYj0wfGFbbCsoMjAqd3wwKT4+Ml0saz1sKygyMCp3fDApKzh8MCxN''@;'; put 'put ''PWwrKDIwKnd8MCkrNHwwLG09MCxBPTA7ISgoMHxBKT49KDB8YikpOyltPStfW2YrKGFbKDB8YVtNPj4yXSkrKEE8PDIpPj4yXTw8Myk+PjNdKitXblsoMHxhW2s+PjJdKSsoQTw8Mik+PjJdK20sQT1BKzF8MDtfW3ArKHc8PDMpPj4zXT1tLHc9dysxfDB9fWZ1bmN0aW9uIGZqKGwsYyxmLHAp''@;'; put 'put ''e2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MDtmb3Iodz0wOyEoKDB8dyk+PSgwfGMpKTspe2ZvcihiPWwrKHc8PDIpfDAsbT0wLEE9MDsoMHxBKSE9KDB8Yyk7KW09K19bZisoQTw8Myk+PjNdKitXblsoMHxhW2I+PjJdKSsoQTw8Mik+PjJdK20sQT1BKzF8MDtfW3Ar''@;'; put 'put ''KHc8PDMpPj4zXT1tLHc9dysxfDB9fWZ1bmN0aW9uIFF5KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspX1twKyhtPDwzKT4+M109K19bYysobTw8Myk+PjNdLStfW2YrKG08PDMpPj4zXSxtPW0rMXwwfWZ1bmN0aW9uIGFMKGws''@;'; put 'put ''YyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspX1twKyhtPDwzKT4+M109K19bZisobTw8Myk+PjNdKyArX1tjKyhtPDwzKT4+M10sbT1tKzF8MH1mdW5jdGlvbiBHayhsLGMsZixwKXtsfD0wLGN8PTAsZj0rZixwfD0wO3ZhciBtPTA7''@;'; put 'put ''Zm9yKG09MDshKCgwfG0pPj0oMHxsKSk7KV9bcCsobTw8Myk+PjNdPStfW2MrKG08PDMpPj4zXSpmLG09bSsxfDB9ZnVuY3Rpb24gbEwobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTA7Zm9yKHA9MDshKCgwfHApPj0oMHxsKSk7KV9bZisocDw8Myk+PjNdPStfW2MrKHA8PDMpPj4zXSxw''@;'; put 'put ''PXArMXwwfWZ1bmN0aW9uIGZwKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MDtmb3IocD0wLG09MDshKCgwfG0pPj0oMHxsKSk7KXA9K19bZisobTw8Myk+PjNdKitfW2MrKG08PDMpPj4zXStwLG09bSsxfDA7cmV0dXJuK3B9ZnVuY3Rpb24gdDQobCxjKXtsfD0wLGN8PTA7dmFy''@;'; put 'put ''IGY9MCxwPTAsbT0wO2ZvcihmPTAscD0tMWU1MDshKCgwfGYpPj0oMHxsKSk7KW09K2VvKCsgK19bYysoZjw8Myk+PjNdKSxmPWYrMXwwLHA9bT5wP206cDtyZXR1cm4rcH1mdW5jdGlvbiBoaihsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTA7Zm9y''@;'; put 'put ''KGI9MDsoMHxiKTwoMHxjKTspe2ZvcihBPTAsdz0wOyEoKDB8dyk+PSgwfGYpKTspQT0rX1twKyh3PDwzKT4+M10qK19bKDB8YVtsKyh3PDwyKT4+Ml0pKyhiPDwzKT4+M10rQSx3PXcrMXwwO19bbSsoYjw8Myk+PjNdPUEsYj1iKzF8MH19ZnVuY3Rpb24gbDgobCxjKXt2YXIgZj0wLHA9MCxt''@;'; put 'put ''PTA7Zm9yKGY9MCxwPWN8PTAsbT1sfD0wO207KWY9K1duW3A+PjJdK2YscD1wKzR8MCxtPW0rLTF8MDtmb3IoZi89KygwfGwpO2w7KVduW2M+PjJdPStXbltjPj4yXS1mLGM9Yys0fDAsbD1sKy0xfDB9ZnVuY3Rpb24gaWcobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9''@;'; put 'put ''MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTA7Zm9yKG09MDs7KXtpZigoMHxtKT49KDB8Yykpe3c9MCxrPTAsUj1jO2JyZWFrfVduW3ArKG08PDIpPj4yXT0wLG09bSsxfDB9Zm9yKDshKCgwfGspPj0oMHxjKSk7KXtmb3IoQT0rV25bbCsodzw8Mik+PjJdKihEPStXbltm''@;'; put 'put ''KyhrPDwyKT4+Ml0pLGI9TT1rKzF8MCxtPXc7bT1tKzF8MCwoMHxiKSE9KDB8Yyk7KUc9K1duW2YrKGI8PDIpPj4yXSoocGU9K1duW2wrKG08PDIpPj4yXSkrQSxXblsoSz1wKyhiPDwyKXwwKT4+Ml09K1duW0s+PjJdK3BlKkQsQT1HLGI9YisxfDA7V25bKEs9cCsoazw8Mil8MCk+PjJdPStX''@;'; put 'put ''bltLPj4yXStBLHc9dytSfDAsaz1NLFI9UistMXwwfX1mdW5jdGlvbiBkaihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTA7Zm9yKG09MDshKCgwfG0pPj0oMHxsKSk7KVduW3ArKG08PDIpPj4yXT0rV25bZisobTw8Mik+PjJdKyArV25bYysobTw8Mik+PjJdLG09bSsxfDB9''@;'; put 'put ''ZnVuY3Rpb24gV2sobCxjLGYscCl7bHw9MCxjfD0wLGY9K2YscHw9MDt2YXIgbT0wLEE9MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspV25bKEE9YysobTw8Mil8MCk+PjJdPStXbltwKyhtPDwyKT4+Ml0qZisgK1duW0E+PjJdLG09bSsxfDB9ZnVuY3Rpb24gJDllKGwsYyxmLHApe2x8PTAs''@;'; put 'put ''Y3w9MCxmPStmLHB8PTA7dmFyIG09MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspV25bcCsobTw8Mik+PjJdPStXbltjKyhtPDwyKT4+Ml0qZixtPW0rMXwwfWZ1bmN0aW9uIEIyZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MDtmb3IocD0wOyEoKDB8cCk+PSgwfGwpKTspYVtmKyhw''@;'; put 'put ''PDwyKT4+Ml09YVtjKyhwPDwyKT4+Ml0scD1wKzF8MH1mdW5jdGlvbiBKeShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7Zm9yKHA9MCxtPTA7ISgoMHxtKT49KDB8bCkpOylwKz0rV25bZisobTw8Mik+PjJdKitXbltjKyhtPDwyKT4+Ml0sbT1tKzF8MDtyZXR1cm4rcH1mdW5j''@;'; put 'put ''dGlvbiBQMmUobCxjLGYpe2x8PTAsYz0rYyxmfD0wO3ZhciBwPTA7Zm9yKHA9MDshKCgwfHApPj0oMHxsKSk7KV9bZisocDw8Myk+PjNdPWMscD1wKzF8MH1mdW5jdGlvbiBZayhsLGMsZil7bHw9MCxjPStjLGZ8PTA7dmFyIHA9MDtmb3IocD0wOyEoKDB8cCk+PSgwfGwpKTspV25bZisocDw8''@;'; put 'put ''Mik+PjJdPWMscD1wKzF8MH1mdW5jdGlvbiBwaihsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTA7Zm9yKGY9LTEuMDAwMDAwMDE1MDQ3NDY2MmUzMCxwPTA7ISgoMHxwKT49KDB8bCkpOylmPShtPStlbygrICtXbltjKyhwPDwyKT4+Ml0pKT5mP206ZixwPXArMXwwO3JldHVybitmfWZ1''@;'; put 'put ''bmN0aW9uIHNMKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspV25bKHA9YysoZjw8Mil8MCk+PjJdPShtPStXbltwPj4yXSkqbSxmPWYrMXwwfWZ1bmN0aW9uIGdqKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZj0wOyEo''@;'; put 'put ''KDB8Zik+PSgwfGwpKTspMCE9KG09K1duWyhwPWMrKGY8PDIpfDApPj4yXSkmJihXbltwPj4yXT0xL20pLGY9ZisxfDB9ZnVuY3Rpb24gX3MobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wO2ZvcihwPTA7ISgoMHxwKT49KDB8bCkpOykobT0rV25bYysocDw8Mik+PjJdKT49MCYm''@;'; put 'put ''KFduW2YrKHA8PDIpPj4yXT0rRjAoK20pKSxwPXArMXwwfWZ1bmN0aW9uIG9nKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspKG09K1duWyhwPWMrKGY8PDIpfDApPj4yXSk+MCYmKFduW3A+PjJdPTEvK0YwKCttKSksZj1mKzF8MH1mdW5j''@;'; put 'put ''dGlvbiBVayhsLGMpe2N8PTA7dmFyIGY9MDthWyhsfD0wKT4+Ml09MCwzJmMmJihjPTQlKGM+Pj4wKXwwPzB8dnIoNC8oKDB8ZnVuY3Rpb24gbWoobCl7bHw9MDt2YXIgYz0wLGY9MDtmPTQ7ZTpmb3IoOzspe2ZvcihjPWY7Oyl7aWYoKDB8Yyk9PSgwfGwpKWJyZWFrIGU7aWYoKDB8Yyk8PSgw''@;'; put 'put ''fGwpKWJyZWFrO2M9Yy1sfDB9Zj1jLGw9bC1jfDB9cmV0dXJuIDB8bH0oYykpPj4+MCl8MCxjKTo0KSxhW2wrOD4+Ml09YyxjPTB8YVsobD1sKzR8MCk+PjJdO2U6ZG97aWYoMHxjKWZvcig7Oyl7aWYoIWMpYnJlYWsgZTtmPTB8YVtjPj4yXSxIdCgwfGFbYys0Pj4yXSksSHQoYyksYz1mfX13''@;'; put 'put ''aGlsZSgwKTthW2w+PjJdPTB9ZnVuY3Rpb24gUWsobCl7dmFyIGM9MCxmPTAscD0wLG09MDtpZighKGM9MHxhWyhsfD0wKT4+Ml0pKXtmb3IoZj0wfGFbbCs4Pj4yXSxwPTB8UW4oOCksbT0wfFFuKDB8dnIoMHxhWzQ2ODU1XSxmKSksYVtwKzQ+PjJdPW0sYz0wOyEoKDB8Yyk+PSgwfGFbNDY4''@;'; put 'put ''NTVdKSk7KXZqKG0rKDB8dnIoYyxmKSl8MCxsKSxjPWMrMXwwO2FbcD4+Ml09YVsoYz1sKzR8MCk+PjJdLGFbYz4+Ml09cCxjPTB8YVtsPj4yXX1yZXR1cm4gYVtsPj4yXT1hW2M+PjJdLDB8Y31mdW5jdGlvbiB2aihsLGMpe2FbKGx8PTApPj4yXT1hWyhjfD0wKT4+Ml0sYVtjPj4yXT1sfWZ1''@;'; put 'put ''bmN0aW9uIEFqKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBNLEQsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoRD0wfG1yKChjfD0wKTw8MyksbT0wfGFbKE09bCs4fDApPj4yXSxmdW5jdGlvbiBGMmUobCxjLGYpe2N8PTAsZnw9MDt2YXIgYixwPTAsbT0wLEE9MCx3PTAsaz0wLE09MDtm''@;'; put 'put ''b3IoYj0xNisobHw9MCl8MCxBPTA7ISgoMHxBKT49KDB8YykpOyl7aWYoMHxhW2I+PjJdKXtmb3Ioaz0wfGFbbCsoMjAqQXwwKT4+Ml0sTT1sKygyMCpBfDApKzh8MCx3PWwrKDIwKkF8MCkrMTZ8MCxwPTAsbT0xOyEoKDB8bSk+PSgwfGspKTspcCs9K1duWygwfGFbdz4+Ml0pKyhtPDwyKT4+''@;'; put 'put ''Ml0qK1duWygwfGFbTT4+Ml0pKyhtPDwyKT4+Ml0sbT1tKzF8MDtfW2YrKEE8PDMpPj4zXT1wfUE9QSsxfDB9fShsLGMsRCksZnVuY3Rpb24gY2oobCxjKXtsfD0wLGN8PTA7dmFyIGY9MDtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspX1tjKyhmPDwzKT4+M109KygwfCgwfEQxKCkpJTUwMCks''@;'; put 'put ''Zj1mKzF8MDthdihsLGMpfShjLGYpLEE9MCx3PTA7ISgoMHx3KT49KDB8YykpOylBPSgwfGFbbCsoMjAqd3wwKT4+Ml0pK0F8MCx3PXcrMXwwO2ZvcihBPTB8UW4oQTw8MiksYj0wOyEoKDB8Yik+PSgwfGMpKTspe2ZvcihhW2wrKDIwKmJ8MCkrOD4+Ml09QSxXbltBPj4yXT0rKDEtKGs9MHxh''@;'; put 'put ''W2wrKDIwKmJ8MCk+PjJdKXwwKSx3PTE7ISgoMHx3KT49KDB8aykpOylXbltBKyh3PDwyKT4+Ml09MSx3PXcrMXwwO0E9QSsoazw8Mil8MCxiPWIrMXwwfWZvcih3PTB8ZnVuY3Rpb24gQlgobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLG09K20sQXw9MDt2YXIgayxNLEQsUixLLHBlLG1l''@;'; put 'put ''LE9lLHc9MCxiPTAsRz0wLGJlPTA7Zm9yKE9lPW9lLG9lPW9lKzE2fDAsTT1PZSxLPTB8UW4oRz0ocHw9MCk8PDMpLHBlPTB8UW4oRyksbWU9MHxRbihHKSxEPTB8UW4oRyksUj0wfFFuKEcpLGxMKHAsZixHPTB8UW4oRykpLGF2KHAsRyksYXYocCxjKSxxWChsLHAsYyxEKSxReShwLEcsRCxL''@;'; put 'put ''KSxsTChwLEsscGUpLGs9QSstMXwwLGY9MCx3PStmcChwLEssSyk7Oyl7aWYoKDB8Zik+PSgwfEEpKXtmPTA7YnJlYWt9aWYoISgrdDQocCxLKT5tKSl7Zj0wO2JyZWFrfWlmKHFYKGwscCxwZSxtZSksMD09KGI9K2ZwKHAscGUsbWUpKSl7Zj0wO2JyZWFrfWlmKEdrKHAscGUsYj13L2IsUiks''@;'; put 'put ''YUwocCxjLFIsYyksKDB8Zik8KDB8aykpe2lmKEdrKHAsbWUsYixtZSksUXkocCxLLG1lLEspLGI9K2ZwKHAsSyxLKSwwPT13KXtiZT03O2JyZWFrfUdrKHAscGUsYi93LHBlKSxhTChwLEsscGUscGUpLHc9Yn1mPWYrMXwwfXJldHVybiA3PT0oMHxiZSkmJihYcigxLDkzMjQyLE0pLGY9MSks''@;'; put 'put ''SHQoSyksSHQocGUpLEh0KG1lKSxIdChEKSxIdChSKSxIdChHKSxvZT1PZSwwfGZ9KGwsZixELGMsLjAwMSxwKSxIdCgwfGFbTT4+Ml0pLEE9MDshKCgwfEEpPj0oMHxjKSk7KWFbbCsoMjAqQXwwKSs4Pj4yXT1tLG09bSsoYVtsKygyMCpBfDApPj4yXTw8Mil8MCxBPUErMXwwO3JldHVybiBI''@;'; put 'put ''dChEKSx3Pj4+MzF8MH1mdW5jdGlvbiBKayhsLGMsZixwLG0sQSx3LGIsayl7bHw9MCx3PSt3LGw9b2Usb2U9b2UrMTZ8MCwwfGFbNDY5MTNdfHwoYVs0NjkxM109MSxYcigxLDkzODIwLGwpKSxvZT1sfWZ1bmN0aW9uIGVLKGwsYyxmLHApe3ZhciBtLEEsdyxiLGs7cmV0dXJuIGx8PTAsY3w9''@;'; put 'put ''MCxmfD0wLG09b2Usb2U9b2UrMzJ8MCxrPW0rMjB8MCxiPW0rMTJ8MCx3PW0rOHwwLGFbKEE9bSsxNnwwKT4+Ml09cHw9MCxhW2I+PjJdPTAsYVt3Pj4yXT0wLGZ1bmN0aW9uIFh4KGwsYyxmLHApe3ZhciBtLEE7bHw9MCxjfD0wLHB8PTAsbT1vZSxvZT1vZSsxNnwwLGZ1bmN0aW9uIEt4KGws''@;'; put 'put ''Yyl7YVsobHw9MCk+PjJdPTB8UW4oKGN8PTApPDw0KSxhW2wrND4+Ml09YyxhW2wrOD4+Ml09MH0oQT1tLGZ8PTApLGZ1bmN0aW9uIE9BKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBrLE0sRCxSLEsscGUsbWUsT2UsTGUsQmUscnQsbHQsTXQsbT0wLEE9MCx3PTAsYj0wLEc9MCxiZT0w''@;'; put 'put ''LEhlPTAsamU9MCxldD0wLEdlPTA7Zm9yKE10PW9lLG9lPW9lKzY0fDAscGU9TXQrMzJ8MCxPZT1NdCs0OHwwLExlPU10KzE2fDAsQmU9TXQscnQ9MHxRbihiZT0oY3w9MCk8PDIpLGx0PTB8UW4oYmUpLGFbTGU+PjJdPTAsYVtMZSs0Pj4yXT0wLGFbTGUrOD4+Ml09MCxhW0xlKzEyPj4yXT0w''@;'; put 'put ''LG1lPTB8UW4oYmUpLGJlPTB8UW4oYmUpLG09MDshKCgwfG0pPj0oMHxjKSk7KWFbbWUrKG08PDIpPj4yXT1tLG09bSsxfDA7Zm9yKGE4KGwsbWUsMCxLPWMrLTF8MCksbT0wOyEoKDB8bSk+PSgwfGMpKTspYVtiZSsoYVttZSsobTw8Mik+PjJdPDwyKT4+Ml09bSxtPW0rMXwwO2ZvcihmdW5j''@;'; put 'put ''dGlvbiBQUChsLGMsZixwKXtjfD0wLGZ8PTA7dmFyIG0sQT0wLHc9MCxiPTAsaz0wLE09MDtmb3IoYVs0KyhsfD0wKT4+Ml09bT0ocHw9MCktMXwwLGFbbCs4Pj4yXT1tLGFbbD4+Ml09MHxRbihtPDw0KSxwPTA7ISgoMHxwKT49KDB8bSkpOyliPStfW2MrKChrPTB8YVtmKygoQT1wKzF8MCk8''@;'; put 'put ''PDIpPj4yXSk8PDMpPj4zXS0rX1tjKygoTT0wfGFbZisocDw8Mik+PjJdKTw8Myk+PjNdLGFbKHc9MHxhW2w+PjJdKSsocDw8NCk+PjJdPU0sYVt3KyhwPDw0KSs0Pj4yXT1rLF9bdysocDw8NCkrOD4+M109YixwPUE7Zm9yKHA9KDB8bSkvMnwwOyEoKDB8cCk8PS0xKTspcXgobCxwKSxwPXAr''@;'; put 'put ''LTF8MH0oT2UsbCxtZSxjKSxtPTE7Oyl7aWYoKDB8bSk+PSgwfGMpKXttPTA7YnJlYWt9YVtydCsoYVttZSsobTw8Mik+PjJdPDwyKT4+Ml09YVttZSsobSstMTw8Mik+PjJdLG09bSsxfDB9Zm9yKDshKCgwfG0pPj0oMHxLKSk7KWFbbHQrKGFbbWUrKG08PDIpPj4yXTw8Mik+PjJdPWFbbWUr''@;'; put 'put ''KChHPW0rMXwwKTw8Mik+PjJdLG09Rztmb3Ioaz1wKzh8MCxNPXArNHwwLEQ9TGUrNHwwLFI9QmUrNHwwLEc9QmUrOHwwLGI9MDshKCgwfGIpPj0oMHxmKSkmJigwfCR4KE9lLExlKSk8PDI0Pj4yNDspKDB8KG09MHxhW2s+PjJdKSk8KDB8KGM9MHxhW00+PjJdKSk/Yz0wfGFbcD4+Ml06KGFb''@;'; put 'put ''TT4+Ml09Yzw8MSxjPTB8WmEoMHxhW3A+PjJdLGM8PDUpLGFbcD4+Ml09YyxtPTB8YVtrPj4yXSksYVtrPj4yXT1tKzEsYVsobT1jKyhtPDw0KXwwKT4+Ml09YVtMZT4+Ml0sYVttKzQ+PjJdPWFbTGUrND4+Ml0sYVttKzg+PjJdPWFbTGUrOD4+Ml0sYVttKzEyPj4yXT1hW0xlKzEyPj4yXSx3''@;'; put 'put ''PTB8YVtiZSsoKEE9MHxhW0Q+PjJdKTw8Mik+PjJdLCgwfChjPTB8YVtiZSsoKG09MHxhW0xlPj4yXSk8PDIpPj4yXSkpPjAmJigwfGFbYmUrKGFbKGplPWx0KygoSGU9MHxhW21lKyhjKy0xPDwyKT4+Ml0pPDwyKXwwKT4+Ml08PDIpPj4yXSk8KDB8dykmJihhW0JlPj4yXT1IZSxhW1I+PjJd''@;'; put 'put ''PUEsX1tHPj4zXT0rX1tsKyhBPDwzKT4+M10tK19bbCsoSGU8PDMpPj4zXSxhW3BlPj4yXT1hW0JlPj4yXSxhW3BlKzQ+PjJdPWFbQmUrND4+Ml0sYVtwZSs4Pj4yXT1hW0JlKzg+PjJdLGFbcGUrMTI+PjJdPWFbQmUrMTI+PjJdLFlfKE9lLHBlKSxhW2plPj4yXT1BLGFbcnQrKEE8PDIpPj4y''@;'; put 'put ''XT1IZSksKDB8dyk8KDB8SykmJigwfGFbYmUrKGFbKEdlPXJ0KygoZXQ9MHxhW21lKyh3KzE8PDIpPj4yXSk8PDIpfDApPj4yXTw8Mik+PjJdKT4oMHxjKSYmKGFbQmU+PjJdPW0sYVtSPj4yXT1ldCxfW0c+PjNdPStfW2wrKGV0PDwzKT4+M10tK19bbCsobTw8Myk+PjNdLGFbcGU+PjJdPWFb''@;'; put 'put ''QmU+PjJdLGFbcGUrND4+Ml09YVtCZSs0Pj4yXSxhW3BlKzg+PjJdPWFbQmUrOD4+Ml0sYVtwZSsxMj4+Ml09YVtCZSsxMj4+Ml0sWV8oT2UscGUpLGFbR2U+PjJdPW0sYVtsdCsobTw8Mik+PjJdPWV0KSxiPWIrMXwwO0h0KHJ0KSxIdChsdCksSHQobWUpLEh0KGJlKSxmdW5jdGlvbiBSQShs''@;'; put 'put ''KXtIdCgwfGFbKGx8PTApPj4yXSl9KE9lKSxvZT1NdH0obCxjLGYsQSksZnVuY3Rpb24gcjcobCxjLGYpe2N8PTAsZnw9MDt2YXIgYixrLE0scD0wLG09MCxBPTAsdz0wLEQ9MCxSPTA7Zm9yKGs9MHxRbigobHw9MCk8PDIpLHA9MHxRbihBPShiPSgodz0wfGFbKE09Yys4fDApPj4yXSk8PDEp''@;'; put 'put ''K2x8MCk8PDIpLEE9MHxRbihBKSxtPTA7ISgoMHxtKT49KDB8bCkpOylhW2srKG08PDIpPj4yXT0xLG09bSsxfDA7Zm9yKG09MDs7KXtpZigoMHxtKT49KDB8dykpe209MDticmVha31EPTB8YVsoUj0wfGFbYz4+Ml0pKyhtPDw0KSs0Pj4yXSxhWyhSPWsrKGFbUisobTw8NCk+PjJdPDwyKXww''@;'; put 'put ''KT4+Ml09MSsoMHxhW1I+PjJdKSxhWyhEPWsrKEQ8PDIpfDApPj4yXT0xKygwfGFbRD4+Ml0pLG09bSsxfDB9Zm9yKDshKCgwfG0pPj0oMHxiKSk7KVduW0ErKG08PDIpPj4yXT0xLG09bSsxfDA7Zm9yKHc9MHxRbigyMCpsfDApLGFbZj4+Ml09dyxtPTA7ISgoMHxtKT49KDB8bCkpOylhW3cr''@;'; put 'put ''KDIwKm18MCk+PjJdPTEsYVt3KygyMCptfDApKzg+PjJdPUEsYVt3KygyMCptfDApKzQ+PjJdPXAsYVtwPj4yXT1tLFduW0E+PjJdPTAsQT1BKygoUj0wfGFbaysobTw8Mik+PjJdKTw8Mil8MCxwPXArKFI8PDIpfDAsbT1tKzF8MDtmb3IoSHQoayk7cD0wfGFbTT4+Ml07KWFbTT4+Ml09Uj1w''@;'; put 'put ''Ky0xfDAsV18odywwfGFbKEQ9MHxhW2M+PjJdKSsoUjw8NCk+PjJdLDB8YVtEKyhSPDw0KSs0Pj4yXSl9KGMsQSxwKSxmdW5jdGlvbiBCUChsKXtIdCgwfGFbKGx8PTApPj4yXSl9KEEpLG9lPW19KDB8YVtsPj4yXSxmLGY8PDIsayksdWooMHxhW2s+PjJdLGwsZixjLGIpLGZ1bmN0aW9uIFIy''@;'; put 'put ''ZShsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtmb3IoKGI9MHxhWyhBfD0wKT4+Ml0pPyh3PTB8WmEoMHxhW2I+PjJdLDB8dnIoZjw8MyxtKSksUj0wfFphKGIsZjw8MikpOih3PTB8UjAoMHx2cihmPDwzLG0pKSxSPTB8''@;'; put 'put ''UjAoZjw8MikpLGFbQT4+Ml09UixiPTA7Oyl7aWYoKDB8Yik+PSgwfGYpKXtBPTA7YnJlYWt9YVtSKyhiPDwyKT4+Ml09dyxiPWIrMXwwLHc9dysobTw8Myl8MH1mb3IoOyEoKDB8QSk+PSgwfGYpKTspe2ZvcihNPWwrKEE8PDIpfDAsRD1SKyhBPDwyKXwwLGI9MDsoMHxiKTwoMHxtKTspe2Zv''@;'; put 'put ''cihrPTAsdz0wOyEoKDB8dyk+PSgwfHApKTspaz0rX1soMHxhW00+PjJdKSsodzw8Myk+PjNdKitXblsoMHxhW2MrKHc8PDIpPj4yXSkrKGI8PDIpPj4yXStrLHc9dysxfDA7X1soMHxhW0Q+PjJdKSsoYjw8Myk+PjNdPWssYj1iKzF8MH1BPUErMXwwfX0obCwwfGFbYj4+Ml0sYyxmLGMsdyks''@;'; put 'put ''SHQoMHxhW2FbYj4+Ml0+PjJdKSxIdCgwfGFbYj4+Ml0pLHA9MjU1JigwfHprKDB8YVt3Pj4yXSxjLDEsQSxtLDEpKSxvZT1tLDB8cH1mdW5jdGlvbiBOMmUobCl7SHQoMHxhWzM2KyhsfD0wKT4+Ml0pfWZ1bmN0aW9uIG5LKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wO2Rve2lmKDQ9PSgw''@;'; put 'put ''fGMpKXtpZihjPWwrMTZ8MCwoZj0rX1tsKzg+PjNdKT09KHA9K19bbCsyND4+M10pKXtpZigrX1tsKzQwPj4zXSE9K19bbCs1Nj4+M10pe2M9MDticmVha31pZigrX1tsPj4zXSE9K19bbCs0OD4+M10pe2M9MDticmVha31jPStfW2M+PjNdPT0rX1tsKzMyPj4zXTticmVha31jPStfW2w+PjNd''@;'; put 'put ''PT0rX1tjPj4zXSYmK19bbCszMj4+M109PStfW2wrNDg+PjNdJiZmPT0rX1tsKzU2Pj4zXT9wPT0rX1tsKzQwPj4zXTowfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAxJmN8MH1mdW5jdGlvbiBsdihsLGMsZixwKXtjfD0wLGY9K2YscD0rcDt2YXIgQSx3LGIsbT0wLGs9MCxNPTA7Zm9yKGI9''@;'; put 'put ''MHxRbigodz0oMHwobT0obT0wfExpKGx8PTAsMTAyNzA1KSk/MHxlMyhtKTowKSk8Mz8yMDptKTw8NCksbD1sKzE2fDAsQT0xLysoMHx3KSxtPTA7ISgoMHxtKT49KDB8dykpOylfW2IrKG08PDQpPj4zXT0oLjUqK19bMzIrKE09MHxhW2w+PjJdKT4+M10rZikqK2xhKCsoaz1BKisoMHxtKSo2''@;'; put 'put ''LjI4MzE4NTMwNzE3OTU4NikpLF9bYisobTw8NCkrOD4+M109KC41KitfW00rNDA+PjNdK3ApKitJYSgrayksbT1tKzF8MDtyZXR1cm4gYVtjPj4yXT13LDB8Yn1mdW5jdGlvbiB1TChsLGMsZixwLG0pe2Z8PTAsbT0rbSxfWyhsfD0wKT4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorKDB8KGN8''@;'; put 'put ''PTApKSsocD0rcCksX1tsKzg+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqKygwfGYpK219ZnVuY3Rpb24gWGsobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTA7Zm9yKG09MSxBPWI9K19bOCsobHw9MCk+PjNdLHc9az0rX1tsPj4zXTsh''@;'; put 'put ''KCgwfG0pPj0oMHxjKSk7KW09bSsxfDAsQT0oUj0rX1tsKzI0Pj4zXSk+QT9SOkEsdz0oRD0rX1soTT1sKzE2fDApPj4zXSk+dz9EOncsYj1SPGI/UjpiLGs9RDxrP0Q6ayxsPU07X1tmPj4zXT1rLF9bZis4Pj4zXT1iLF9bcD4+M109dyxfW3ArOD4+M109QX1mdW5jdGlvbiBYeShsLGMsZil7''@;'; put 'put ''Zj0rZixfWyhsfD0wKT4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCooYz0rYyksX1tsKzg+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqZn1mdW5jdGlvbiBqMmUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsTSxELFIsRyxwZSxtPTAsQT0wLHc9MCxrPTAsSz0wLG1lPTAsYmU9MCxPZT0w''@;'; put 'put ''LExlPTA7cGU9b2Usb2U9b2UrMTI4fDAsUj1wZSsxMTJ8MCxNPXBlKzgwfDAsbT1wZSs2NHwwLEc9cGUrNDh8MCxLPXBlKzMyfDAsYj1wZSsxNnwwLGs9cGUsYVsoRD1wZSs5NnwwKT4+Ml09YVsobHw9MCk+PjJdLGFbRCs0Pj4yXT1hW2wrND4+Ml0sYVtEKzg+PjJdPWFbbCs4Pj4yXSxhW0Qr''@;'; put 'put ''MTI+PjJdPWFbbCsxMj4+Ml0sYVtSPj4yXT1hW2M+PjJdLGFbUis0Pj4yXT1hW2MrND4+Ml0sYVtSKzg+PjJdPWFbYys4Pj4yXSxhW1IrMTI+PjJdPWFbYysxMj4+Ml0sSGsoRyxELFIpLEE9YysxNnwwLGFbRD4+Ml09YVtsPj4yXSxhW0QrND4+Ml09YVtsKzQ+PjJdLGFbRCs4Pj4yXT1hW2wr''@;'; put 'put ''OD4+Ml0sYVtEKzEyPj4yXT1hW2wrMTI+PjJdLGFbUj4+Ml09YVtBPj4yXSxhW1IrND4+Ml09YVtBKzQ+PjJdLGFbUis4Pj4yXT1hW0ErOD4+Ml0sYVtSKzEyPj4yXT1hW0ErMTI+PjJdLEhrKEssRCxSKSxhW0Q+PjJdPWFbZj4+Ml0sYVtEKzQ+PjJdPWFbZis0Pj4yXSxhW0QrOD4+Ml09YVtm''@;'; put 'put ''Kzg+PjJdLGFbRCsxMj4+Ml09YVtmKzEyPj4yXSxhW1I+PjJdPWFbcD4+Ml0sYVtSKzQ+PjJdPWFbcCs0Pj4yXSxhW1IrOD4+Ml09YVtwKzg+PjJdLGFbUisxMj4+Ml09YVtwKzEyPj4yXSxIayhiLEQsUiksdz1wKzE2fDAsYVtEPj4yXT1hW2Y+PjJdLGFbRCs0Pj4yXT1hW2YrND4+Ml0sYVtE''@;'; put 'put ''Kzg+PjJdPWFbZis4Pj4yXSxhW0QrMTI+PjJdPWFbZisxMj4+Ml0sYVtSPj4yXT1hW3c+PjJdLGFbUis0Pj4yXT1hW3crND4+Ml0sYVtSKzg+PjJdPWFbdys4Pj4yXSxhW1IrMTI+PjJdPWFbdysxMj4+Ml0sSGsoayxELFIpLGFbbT4+Ml09YVtHPj4yXSxhW20rND4+Ml09YVtHKzQ+PjJdLGFb''@;'; put 'put ''bSs4Pj4yXT1hW0crOD4+Ml0sYVttKzEyPj4yXT1hW0crMTI+PjJdLGFbTT4+Ml09YVtLPj4yXSxhW00rND4+Ml09YVtLKzQ+PjJdLGFbTSs4Pj4yXT1hW0srOD4+Ml0sYVtNKzEyPj4yXT1hW0srMTI+PjJdLGFbRD4+Ml09YVtiPj4yXSxhW0QrND4+Ml09YVtiKzQ+PjJdLGFbRCs4Pj4yXT1h''@;'; put 'put ''W2IrOD4+Ml0sYVtEKzEyPj4yXT1hW2IrMTI+PjJdLGFbUj4+Ml09YVtrPj4yXSxhW1IrND4+Ml09YVtrKzQ+PjJdLGFbUis4Pj4yXT1hW2srOD4+Ml0sYVtSKzEyPj4yXT1hW2srMTI+PjJdO2Rve2lmKDB8aUsobSxNLEQsUikpe2lmKDEmKG09MHxhW2MrNDA+PjJdKXwwJiYxJmFbcCs0MD4+''@;'; put 'put ''Ml18MCl7bT0xO2JyZWFrfWlmKDImbXwwJiYyJmFbcCs0MD4+Ml18MCl7bT0hKChPZT0rX1tsKzg+PjNdLStfW2YrOD4+M10pKk9lKyhiZT0rX1tsPj4zXS0rX1tmPj4zXSkqYmU+KG1lPStfW0E+PjNdLStfW2M+PjNdKyArX1t3Pj4zXS0rX1twPj4zXSkqbWUqLjI1KTticmVha31pZigobT0w''@;'; put 'put ''fGFbNDY5MTVdKT93PTB8YVs0NjkxNl06KGFbNDY5MTVdPTB8UW4oYVs0NjkxNF08PDQpLHc9MHxRbihhWzQ2OTE0XTw8NCksYVs0NjkxNl09dyxtPTB8YVs0NjkxNV0pLExlPTB8YVtjKzM2Pj4yXSxBPTB8YVsoYz1jKzMyfDApPj4yXSxhW1I+PjJdPWFbbD4+Ml0sYVtSKzQ+PjJdPWFbbCs0''@;'; put 'put ''Pj4yXSxhW1IrOD4+Ml09YVtsKzg+PjJdLGFbUisxMj4+Ml09YVtsKzEyPj4yXSxvSyhMZSxBLFIsbSksbD0wfGFbcCszNj4+Ml0scD0wfGFbKEE9cCszMnwwKT4+Ml0sYVtSPj4yXT1hW2Y+PjJdLGFbUis0Pj4yXT1hW2YrND4+Ml0sYVtSKzg+PjJdPWFbZis4Pj4yXSxhW1IrMTI+PjJdPWFb''@;'; put 'put ''ZisxMj4+Ml0sb0sobCxwLFIsdyksMHxhSyhtLHcsMHxhW2M+PjJdLDB8YVtBPj4yXSkpbT0xO2Vsc2V7aWYoYVtNPj4yXT1hWyhtPTB8YVs0NjkxNV0pPj4yXSxhW00rND4+Ml09YVttKzQ+PjJdLGFbTSs4Pj4yXT1hW20rOD4+Ml0sYVtNKzEyPj4yXT1hW20rMTI+PjJdLGFbRD4+Ml09YVti''@;'; put 'put ''Pj4yXSxhW0QrND4+Ml09YVtiKzQ+PjJdLGFbRCs4Pj4yXT1hW2IrOD4+Ml0sYVtEKzEyPj4yXT1hW2IrMTI+PjJdLGFbUj4+Ml09YVtrPj4yXSxhW1IrND4+Ml09YVtrKzQ+PjJdLGFbUis4Pj4yXT1hW2srOD4+Ml0sYVtSKzEyPj4yXT1hW2srMTI+PjJdLDB8bEsoTSxELFIpJiYoaz0wfGFb''@;'; put 'put ''NDY5MTZdLExlPTB8YVtBPj4yXSxhW1I+PjJdPWFbbT4+Ml0sYVtSKzQ+PjJdPWFbbSs0Pj4yXSxhW1IrOD4+Ml09YVttKzg+PjJdLGFbUisxMj4+Ml09YVttKzEyPj4yXSwwfEVmKGssTGUsUikpKXttPTE7YnJlYWt9YVtNPj4yXT1hWyhtPTB8YVs0NjkxNl0pPj4yXSxhW00rND4+Ml09YVtt''@;'; put 'put ''KzQ+PjJdLGFbTSs4Pj4yXT1hW20rOD4+Ml0sYVtNKzEyPj4yXT1hW20rMTI+PjJdLGFbRD4+Ml09YVtHPj4yXSxhW0QrND4+Ml09YVtHKzQ+PjJdLGFbRCs4Pj4yXT1hW0crOD4+Ml0sYVtEKzEyPj4yXT1hW0crMTI+PjJdLGFbUj4+Ml09YVtLPj4yXSxhW1IrND4+Ml09YVtLKzQ+PjJdLGFb''@;'; put 'put ''Uis4Pj4yXT1hW0srOD4+Ml0sYVtSKzEyPj4yXT1hW0srMTI+PjJdLDB8bEsoTSxELFIpPyhLPTB8YVs0NjkxNV0sTGU9MHxhW2M+PjJdLGFbUj4+Ml09YVttPj4yXSxhW1IrND4+Ml09YVttKzQ+PjJdLGFbUis4Pj4yXT1hW20rOD4+Ml0sYVtSKzEyPj4yXT1hW20rMTI+PjJdLG09MCE9KDB8''@;'; put 'put ''RWYoSyxMZSxSKSkpOm09MH19ZWxzZSBtPTB9d2hpbGUoMCk7cmV0dXJuIG9lPXBlLDEmbXwwfWZ1bmN0aW9uIGlLKGwsYyxmLHApe3JldHVybiBjfD0wLGZ8PTAsMHwoK19bKGx8PTApPj4zXTw9K19bKHB8PTApPj4zXSYmK19bZj4+M108PStfW2M+PjNdJiYrX1tsKzg+PjNdPD0rX1twKzg+''@;'; put 'put ''PjNdPytfW2YrOD4+M108PStfW2MrOD4+M10mMTowKX1mdW5jdGlvbiBvSyhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgQSxtPTA7Zm9yKEE9OCsoZnw9MCl8MCxtPTA7ISgoMHxtKT49KDB8YykpOylfW3A+PjNdPStfW2Y+PjNdKyArX1tsPj4zXSxfW3ArOD4+M109K19bQT4+M10rICtf''@;'; put 'put ''W2wrOD4+M10sbT1tKzF8MCxsPWwrMTZ8MCxwPXArMTZ8MH1mdW5jdGlvbiBhSyhsLGMsZixwKXtsfD0wLGN8PTA7dmFyIEsscGUsbWUsYmUsT2UsTGUsQmUsSGUsamUsZXQscnQsR2UsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsbHQ9MCxNdD0wO2ZvcihHZT1vZSxvZT1v''@;'; put 'put ''ZSsxMTJ8MCxiZT1HZSs5NnwwLG1lPUdlKzgwfDAscGU9R2UrNjR8MCxLPUdlKzQ4fDAsTGU9R2UrMzJ8MCxCZT1HZSsxNnwwLEhlPUdlLGplPShmfD0wKS0xfDAsZXQ9KHB8PTApLTF8MCxydD1mPDwxLE9lPXA8PDEsbT0wLEE9MCx3PTAsYj0wOzspe2lmKE10PWwrKCgoamUrbXwwKSUoMHxm''@;'; put 'put ''KXwwKTw8NCl8MCxhW21lPj4yXT1hWyhsdD1sKyhtPDw0KXwwKT4+Ml0sYVttZSs0Pj4yXT1hW2x0KzQ+PjJdLGFbbWUrOD4+Ml09YVtsdCs4Pj4yXSxhW21lKzEyPj4yXT1hW2x0KzEyPj4yXSxhW2JlPj4yXT1hW010Pj4yXSxhW2JlKzQ+PjJdPWFbTXQrND4+Ml0sYVtiZSs4Pj4yXT1hW010''@;'; put 'put ''Kzg+PjJdLGFbYmUrMTI+PjJdPWFbTXQrMTI+PjJdLEpWKExlLG1lLGJlKSxSPWMrKCgoZXQrQXwwKSUoMHxwKXwwKTw8NCl8MCxhW21lPj4yXT1hWyhHPWMrKEE8PDQpfDApPj4yXSxhW21lKzQ+PjJdPWFbRys0Pj4yXSxhW21lKzg+PjJdPWFbRys4Pj4yXSxhW21lKzEyPj4yXT1hW0crMTI+''@;'; put 'put ''PjJdLGFbYmU+PjJdPWFbUj4+Ml0sYVtiZSs0Pj4yXT1hW1IrND4+Ml0sYVtiZSs4Pj4yXT1hW1IrOD4+Ml0sYVtiZSsxMj4+Ml09YVtSKzEyPj4yXSxKVihCZSxtZSxiZSksYVtwZT4+Ml09YVs0NjU0MF0sYVtwZSs0Pj4yXT1hWzQ2NTQxXSxhW3BlKzg+PjJdPWFbNDY1NDJdLGFbcGUrMTI+''@;'; put 'put ''PjJdPWFbNDY1NDNdLGFbbWU+PjJdPWFbTGU+PjJdLGFbbWUrND4+Ml09YVtMZSs0Pj4yXSxhW21lKzg+PjJdPWFbTGUrOD4+Ml0sYVttZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtiZT4+Ml09YVtCZT4+Ml0sYVtiZSs0Pj4yXT1hW0JlKzQ+PjJdLGFbYmUrOD4+Ml09YVtCZSs4Pj4yXSxhW2Jl''@;'; put 'put ''KzEyPj4yXT1hW0JlKzEyPj4yXSxrPStYVihwZSxtZSxiZSksYVtwZT4+Ml09YVtNdD4+Ml0sYVtwZSs0Pj4yXT1hW010KzQ+PjJdLGFbcGUrOD4+Ml09YVtNdCs4Pj4yXSxhW3BlKzEyPj4yXT1hW010KzEyPj4yXSxhW21lPj4yXT1hW2x0Pj4yXSxhW21lKzQ+PjJdPWFbbHQrND4+Ml0sYVtt''@;'; put 'put ''ZSs4Pj4yXT1hW2x0Kzg+PjJdLGFbbWUrMTI+PjJdPWFbbHQrMTI+PjJdLGFbYmU+PjJdPWFbRz4+Ml0sYVtiZSs0Pj4yXT1hW0crND4+Ml0sYVtiZSs4Pj4yXT1hW0crOD4+Ml0sYVtiZSsxMj4+Ml09YVtHKzEyPj4yXSxNPTB8cUQocGUsbWUsYmUpLGFbcGU+PjJdPWFbUj4+Ml0sYVtwZSs0''@;'; put 'put ''Pj4yXT1hW1IrND4+Ml0sYVtwZSs4Pj4yXT1hW1IrOD4+Ml0sYVtwZSsxMj4+Ml09YVtSKzEyPj4yXSxhW21lPj4yXT1hW0c+PjJdLGFbbWUrND4+Ml09YVtHKzQ+PjJdLGFbbWUrOD4+Ml09YVtHKzg+PjJdLGFbbWUrMTI+PjJdPWFbRysxMj4+Ml0sYVtiZT4+Ml09YVtsdD4+Ml0sYVtiZSs0''@;'; put 'put ''Pj4yXT1hW2x0KzQ+PjJdLGFbYmUrOD4+Ml09YVtsdCs4Pj4yXSxhW2JlKzEyPj4yXT1hW2x0KzEyPj4yXSxEPTB8cUQocGUsbWUsYmUpLGFbSz4+Ml09YVtNdD4+Ml0sYVtLKzQ+PjJdPWFbTXQrND4+Ml0sYVtLKzg+PjJdPWFbTXQrOD4+Ml0sYVtLKzEyPj4yXT1hW010KzEyPj4yXSxhW3Bl''@;'; put 'put ''Pj4yXT1hW2x0Pj4yXSxhW3BlKzQ+PjJdPWFbbHQrND4+Ml0sYVtwZSs4Pj4yXT1hW2x0Kzg+PjJdLGFbcGUrMTI+PjJdPWFbbHQrMTI+PjJdLGFbbWU+PjJdPWFbUj4+Ml0sYVttZSs0Pj4yXT1hW1IrND4+Ml0sYVttZSs4Pj4yXT1hW1IrOD4+Ml0sYVttZSsxMj4+Ml09YVtSKzEyPj4yXSxh''@;'; put 'put ''W2JlPj4yXT1hW0c+PjJdLGFbYmUrND4+Ml09YVtHKzQ+PjJdLGFbYmUrOD4+Ml09YVtHKzg+PjJdLGFbYmUrMTI+PjJdPWFbRysxMj4+Ml0sMHxlTChLLHBlLG1lLGJlLEhlKSl7bT0xO2JyZWFrfVI9MD09KDB8TSksRz0wPT0oMHxEKTtkb3tpZigwIT1rfDAhPShEfE18MCkpe2lmKGs+PTAp''@;'; put 'put ''e2lmKFIpe0E9KEErMXwwKSUoMHxwKXwwLGI9YisxfDA7YnJlYWt9bT0obSsxfDApJSgwfGYpfDAsdz13KzF8MDticmVha31pZihHKXttPShtKzF8MCklKDB8Zil8MCx3PXcrMXwwO2JyZWFrfUE9KEErMXwwKSUoMHxwKXwwLGI9YisxfDA7YnJlYWt9bT0obSsxfDApJSgwfGYpfDAsdz13KzF8''@;'; put 'put ''MH13aGlsZSgwKTtpZighKCgwfGIpPCgwfE9lKSYoMHx3KTwoMHxydCkmKCgwfGIpPCgwfHApfCgwfHcpPCgwfGYpKSkpe209MDticmVha319cmV0dXJuIG9lPUdlLDB8bX1mdW5jdGlvbiBsSyhsLGMsZil7Y3w9MDt2YXIgbSxwPTA7cmV0dXJuIDB8KChtPStfWyhsfD0wKT4+M10pPD0rX1so''@;'; put 'put ''Znw9MCk+PjNdJiZtPj0rX1tjPj4zXSYmKHA9K19bbCs4Pj4zXSk8PStfW2YrOD4+M10/cD49K19bYys4Pj4zXSYxOjApfWZ1bmN0aW9uIEVmKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2ZvcigocD0wfGFbNDY5MTddKXx8KHA9MHxRbihh''@;'; put 'put ''WzQ2OTE0XTw8NCksYVs0NjkxN109cCksdz1mKzh8MCxBPTA7ISgoMHxBKT49KDB8YykpOylfW3ArKEE8PDQpPj4zXT0rX1tsKyhBPDw0KT4+M10tK19bZj4+M10sX1twKyhBPDw0KSs4Pj4zXT0rX1tsKyhBPDw0KSs4Pj4zXS0rX1t3Pj4zXSxBPUErMXwwO2Y9YystMXwwLG09MCxsPTA7ZTpm''@;'; put 'put ''b3IoOzspe2lmKCgwfGwpPj0oMHxjKSl7TT0xOTticmVha31pZihBPShmK2x8MCklKDB8Yyl8MCwodz0wPT0oYj0rX1twKyhsPDw0KSs4Pj4zXSkpJiYwPT0rX1twKyhBPDw0KSs4Pj4zXSl7aWYoK19bcCsoQTw8NCk+PjNdKitfW3ArKGw8PDQpPj4zXTwwKXtwPTE7YnJlYWt9fWVsc2UgTT0x''@;'; put 'put ''MTtkb3tpZigxMT09KDB8TSkpe2lmKE09MCwhKGI+PTApfCEoKGs9K19bcCsoQTw8NCkrOD4+M10pPD0wKSYmIShrPj0wKXwhKGI8PTApKWJyZWFrO2lmKDA9PShiPShrKitfW3ArKGw8PDQpPj4zXS1iKitfW3ArKEE8PDQpPj4zXSkvKGstYikpKXtwPTE7YnJlYWsgZX1pZihiPjApe2lmKDA9''@;'; put 'put ''PWt8dyl7bSs9LjU7YnJlYWt9bSs9MTticmVha319fXdoaWxlKDApO2w9bCsxfDB9cmV0dXJuIDE5PT0oMHxNKSYmKHA9MT09KDB8KDB8fn5tKSUyKSYxKSwwfHB9ZnVuY3Rpb24gSjMobCxjKXtsfD0wO3ZhciBrLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MDtmb3Ioaz0wfFFuKChjfD0w''@;'; put 'put ''KTw8MiksZj0wfFFuKChiPTB8dnIoYyxjKSk8PDIpLGFbaz4+Ml09ZixZayhiLDAsZiksZj0xOzspe2lmKCgwfGYpPj0oMHxjKSl7Zj0wLEE9MCxiPWM7YnJlYWt9YVtrKyhmPDwyKT4+Ml09KDB8YVtrPj4yXSkrKCgwfHZyKGYsYykpPDwyKSxmPWYrMXwwfWZvcig7ISgoMHxBKT49KDB8Yykp''@;'; put 'put ''Oyl7Zm9yKHc9aysoQTw8Mil8MCxwPUEsbT1mOygwfHApIT0oMHxjKTspYVsoMHxhW3c+PjJdKSsocDw8Mik+PjJdPU09MHxhW2wrKG08PDIpPj4yXSxhWygwfGFbaysocDw8Mik+PjJdKSsoQTw8Mik+PjJdPU0scD1wKzF8MCxtPW0rMXwwO2Y9ZitifDAsQT1BKzF8MCxiPWIrLTF8MH1yZXR1''@;'; put 'put ''cm4gMHxrfWZ1bmN0aW9uIFoyZShsLGMsZixwLG0sQSx3LGIpe2N8PTAscHw9MCxBfD0wLHd8PTAsYj0rYjt2YXIgbHQsTXQsa3QsYXQsRXQsRm4saz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLFp0''@;'; put 'put ''PTAsdXQ9MCx3dD0wLHJuPTAseW49MCxscj0wO0ZuPTB8YVsoZnw9MCkrKChtfD0wKTw8Mik+PjJdLGx0PTB8YVs0KyhsfD0wKT4+Ml0sTXQ9MHxhW2w+PjJdLGt0PTB8YVtsKzQ4Pj4yXSxhdD0wfGFbbCs1Mj4+Ml0sRXQ9MHxhW2wrNTY+PjJdO2U6ZG97aWYoKDB8QSk8MSlmPTA7ZWxzZXtm''@;'; put 'put ''b3IoejJlKEZuLGx0LGt0LGF0LEV0LGIpLFp0PTB8YVtsKzI4Pj4yXSx1dD0wfGFbbCszMj4+Ml0sd3Q9MHxhW2wrMzY+PjJdLHJuPTB8YVtsKzEyPj4yXSx5bj0wfGFbbCsxNj4+Ml0sbT0wLHA9MCxmPS0xOyEoKDB8bSk+PSgwfGx0KSk7KSgwfG0pPj0oMHxwKSYmKCgwfChmPWYrMXwwKSk9''@;'; put 'put ''PSgwfEV0KT8ocD1sdCxmPUV0KTpwPTB8YVthdCsoZjw8Mik+PjJdKSxhW3luKyhhW2t0KyhtPDwyKT4+Ml08PDIpPj4yXT1mLG09bSsxfDA7Zm9yKHJ0PTB8YVtsKzQwPj4yXSxHZT11dCsobHQrLTE8PDIpfDAsZj0wLHA9MDs7KXtpZighKHA8PDI0Pj4yND09MCYoMHxmKTwoMHxBKSkpYnJl''@;'; put 'put ''YWsgZTtrPS0xZTksbT0wLHA9MTt0OmZvcig7Oyl7Zm9yKGplPW07Oyl7aWYoKDB8amUpPj0oMHxsdCkpYnJlYWsgdDtmb3IoTT1ldD0rV25bRm4rKChtPTB8YVtrdCsoamU8PDIpPj4yXSk8PDIpPj4yXSxIZT1qZSxEPTA7Oyl7aWYoV25bcnQrKG08PDIpPj4yXT1ELCgwfChtPUhlKzF8MCkp''@;'; put 'put ''Pj0oMHxsdCkpe0JlPTA7YnJlYWt9aWYoK2VvKCsoKEQ9K1duW0ZuKygobD0wfGFba3QrKG08PDIpPj4yXSk8PDIpPj4yXSktKE09KDB8YVt5bisobTw8Mik+PjJdKT4oMHxhW3luKyhIZTw8Mik+PjJdKT9NK2I6TSkpKT4xZS05KXtCZT0xO2JyZWFrfUhlPW0sRC09ZXQsbT1sfWZvcihSPWpl''@;'; put 'put ''Ozspe2lmKCgwfFIpPigwfEhlKSl7bD0wLEc9amU7YnJlYWt9Zm9yKEs9MHxhW010KygoRz0wfGFba3QrKFI8PDIpPj4yXSk8PDIpPj4yXSxsPTAsTT0tK1duW2MrKEc8PDIpPj4yXTshKCgwfGwpPj0oMHxsdCkpOykoMHxsKSE9KDB8RykmJihNPStXbltGbisobDw8Mik+PjJdKitXbltLKyhs''@;'; put 'put ''PDwyKT4+Ml0rTSksbD1sKzF8MDtXbltadCsoRzw8Mik+PjJdPU0vLStXbltLKyhHPDwyKT4+Ml0tK1duW3J0KyhHPDwyKT4+Ml0sUj1SKzF8MH1uOmZvcig7Oyl7aWYoKDB8Ryk+KDB8SGUpKXtEPTAscGU9MCxtZT0wO2JyZWFrfWZvcihtZT0oMHwoUj0wfGFbeW4rKGFba3QrKEc8PDIpPj4y''@;'; put 'put ''XTw8Mik+PjJdKSk9PSgwfEV0KXx8KDB8bSk8KDB8KG1lPTB8YVthdCsoUjw8Mik+PjJdKSk/bTptZSxLPUc7Oyl7aWYoKDB8Syk+PSgwfG1lKSl7Sz1HO2JyZWFrfStXbltadCsoKFI9MHxhW2t0KyhLPDwyKT4+Ml0pPDwyKT4+Ml08ZXQmJihhW3JuKyhsPDwyKT4+Ml09UixsPWwrMXwwKSxL''@;'; put 'put ''PUsrMXwwfWZvcig7ISgoMHxLKT49KDB8bWUpKTspK1duW1p0KygoUj0wfGFba3QrKEs8PDIpPj4yXSk8PDIpPj4yXT09ZXQmJihhW3JuKyhsPDwyKT4+Ml09UixsPWwrMXwwKSxLPUsrMXwwO2Zvcig7Oyl7aWYoKDB8Ryk+PSgwfG1lKSl7Rz1tZTtjb250aW51ZSBufStXbltadCsoKFI9MHxh''@;'; put 'put ''W2t0KyhHPDwyKT4+Ml0pPDwyKT4+Ml0+ZXQmJihhW3JuKyhsPDwyKT4+Ml09UixsPWwrMXwwKSxHPUcrMXwwfX1mb3IoOyEoKDB8bWUpPj0oMHxsKSk7KXtmb3IoSz0wfGFbTXQrKChHPTB8YVtybisobWU8PDIpPj4yXSk8PDIpPj4yXSxNPTAsUj0wOygwfFIpIT0oMHxtZSk7KU0tPStXbltL''@;'; put 'put ''KyhhW3JuKyhSPDwyKT4+Ml08PDIpPj4yXSxSPVIrMXwwO1duW3V0KyhtZTw8Mik+PjJdPWJlPSgobHI9MipNKSpldCtEKnBlLStXbltadCsoRzw8Mik+PjJdKihiZT0rV25bKExlPUsrKEc8PDIpfDApPj4yXSkpLygoTT1scitEKS1iZSksRD1NLStXbltMZT4+Ml0scGU9YmUsbWU9bWUrMXww''@;'; put 'put ''fWZvcigoSz0oMHxsKT09KDB8bHQpKSYmKFduW0dlPj4yXT1ldCksRD0wLHBlPTAsRz1MZT1sKy0xfDA7ISgoMHxHKTw9LTEpOyl7Zm9yKE9lPTB8YVtNdCsoKG1lPTB8YVtybisoRzw8Mik+PjJdKTw8Mik+PjJdLE09MCxSPUc7ISgoMHwoUj1SKzF8MCkpPj0oMHxsKSk7KU0tPStXbltPZSso''@;'; put 'put ''YVtybisoUjw8Mik+PjJdPDwyKT4+Ml07V25bd3QrKEc8PDIpPj4yXT1scj0oKE0qPTIpKmV0K0QqcGUtK1duW1p0KyhtZTw8Mik+PjJdKihscj0rV25bKE9lPU9lKyhtZTw8Mil8MCk+PjJdKSkvKChiZT1NK0QpLWxyKSxEPWJlLStXbltPZT4+Ml0scGU9bHIsRz1HKy0xfDB9Zm9yKEs/KFdu''@;'; put 'put ''W3d0Pj4yXT1ldCxiZT0wLFI9LTEsSz0wKTooYmU9MCxSPS0xLEs9MCk7ISgoMHxsKTw9KDB8SykpOyl7cGU9K1duW3d0KyhLPDwyKT4+Ml0sTT0oMHxLKT4wPytXblt1dCsoSystMTw8Mik+PjJdOnBlO2Rve2lmKHBlPE0pe2lmKEc9TT5ldCxwZTxldCl7RD1NPUc/ZXQ6TTticmVha31HPyhE''@;'; put 'put ''PXBlLE09cGUpOkQ9cGV9ZWxzZSBEPXBlfXdoaWxlKDApO2JlPShPZT0obHI9K2VvKCsoRC1ldCkpKisobC1LfDApKyArZW8oKyhNLWV0KSkqKygwfEspKT5iZSk/bHI6YmUsUj1PZT9LOlIsSz1LKzF8MH1pZigoMHxSKT4tMSlicmVhaztCZSYmKDB8YVt5bisoYVtrdCsobTw8Mik+PjJdPDwy''@;'; put 'put ''KT4+Ml0pPigwfGFbeW4rKGFba3QrKEhlPDwyKT4+Ml08PDIpPj4yXSk/KGs9K1duW0ZuKyhhW3JuKyhMZTw8Mik+PjJdPDwyKT4+Ml0rYixqZT1tKTooaz0rV25bRm4rKGFbcm4rKExlPDwyKT4+Ml08PDIpPj4yXSxqZT1tKX1CZT8oTT0rV25bRm4rKChPZT0wfGFba3QrKG08PDIpPj4yXSk8''@;'; put 'put ''PDIpPj4yXSxNPSgoMHxhW3luKyhPZTw8Mik+PjJdKT4oMHxhW3luKyhhW2t0KyhIZTw8Mik+PjJdPDwyKT4+Ml0pP00tYjpNKS0rV25bcnQrKGFbcm4rKExlPDwyKT4+Ml08PDIpPj4yXSk6TT0xZTksTT0oRD0rV25bd3QrKFI8PDIpPj4yXSk8TT9EOk0saz0ocGU9Uj8rV25bdXQrKFIrLTE8''@;'; put 'put ''PDIpPj4yXTpEKT5rP3BlOms7ZG97aWYoTTxrKXtpZihHPWs+ZXQsTTxldCl7RD1NPUc/ZXQ6azticmVha31HP0Q9TTooRD1NLE09ayl9ZWxzZSBEPU0sTT1rfXdoaWxlKDApO2ZvcihHPTA7ISgoMHxHKT49KDB8UikpOylXbltGbisoKE9lPTB8YVtybisoRzw8Mik+PjJdKTw8Mik+PjJdPStX''@;'; put 'put ''bltydCsoT2U8PDIpPj4yXStNLEc9RysxfDA7Zm9yKDshKCgwfFIpPj0oMHxsKSk7KVduW0ZuKygoT2U9MHxhW3JuKyhSPDwyKT4+Ml0pPDwyKT4+Ml09K1duW3J0KyhPZTw8Mik+PjJdK0QsUj1SKzF8MDtmb3Ioaz1CZSYmKDB8YVt5bisoYVtrdCsobTw8Mik+PjJdPDwyKT4+Ml0pPigwfGFb''@;'; put 'put ''eW4rKGFba3QrKEhlPDwyKT4+Ml08PDIpPj4yXSk/K1duW0ZuKyhhW3JuKyhMZTw8Mik+PjJdPDwyKT4+Ml0rYjorV25bRm4rKGFbcm4rKExlPDwyKT4+Ml08PDIpPj4yXSxsPWplOyEoKDB8bCk+KDB8SGUpKTspYVtrdCsobDw8Mik+PjJdPWFbcm4rKGwtamU8PDIpPj4yXSxsPWwrMXwwO3A9''@;'; put 'put ''cDw8MjQ+PjI0IT0wJiYrZW8oKyhNLWV0KSk8LjAxPytlbygrKEQtZXQpKTwuMDE6MCxwJj0xfWw4KGx0LEZuKSxzSyhGbixrdCxhdCxFdCx3KSxmPWYrMXwwfX19d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBzSyhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIg''@;'; put 'put ''QT0wO2ZvcihBPTA7ISgoMHxBKT49KDB8cCkpOylhW20rKEE8PDIpPj4yXT1hW2wrKGFbYysoKDB8YVtmKyhBPDwyKT4+Ml0pLTE8PDIpPj4yXTw8Mik+PjJdLEE9QSsxfDB9ZnVuY3Rpb24gejJlKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQT0rQTt2YXIgdz0wLGI9''@;'; put 'put ''MCxrPTAsTT0wLEQ9MDtmb3Iodz0tMWU5LGs9MCxiPS0xLEQ9MDshKCgwfEQpPj0oMHxjKSk7KSgwfEQpPCgwfGspfHwodz0oMHxEKT4wPytXbltsKyhhW2YrKEQrLTE8PDIpPj4yXTw8Mik+PjJdK0E6LTFlOSxvaihsLGYsRCwoaz0oMHwoYj1iKzF8MCkpPT0oMHxtKT9jOjB8YVtwKyhiPDwy''@;'; put 'put ''KT4+Ml0pKy0xfDApKSxNPWssK1duWyhrPWwrKGFbZisoRDw8Mik+PjJdPDwyKXwwKT4+Ml08dyYmKFduW2s+PjJdPXcpLGs9TSxEPUQrMXwwfWZ1bmN0aW9uIHE5ZShsKXtIdCgwfGFbYVsobHw9MCk+PjJdPj4yXSksSHQoMHxhW2w+PjJdKSxIdCgwfGFbbCs4Pj4yXSksSHQoMHxhW2wrMjg+''@;'; put 'put ''PjJdKSxIdCgwfGFbbCszMj4+Ml0pLEh0KDB8YVtsKzM2Pj4yXSksSHQoMHxhW2wrNDA+PjJdKSxIdCgwfGFbbCsxMj4+Ml0pLEh0KDB8YVtsKzE2Pj4yXSksSHQoMHxhW2wrMjA+PjJdKSxIdCgwfGFbbCsyND4+Ml0pLEh0KGwpfWZ1bmN0aW9uIEtrKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8''@;'; put 'put ''PTAscHw9MCxtfD0wO3ZhciBiLGssTSxELEE9MCx3PTA7Zm9yKE09MHxRbig2MCksYVtNPj4yXT0wLGFbKEQ9TSs0fDApPj4yXT1jLGFbTSs0OD4+Ml09ZixhW00rNTI+PjJdPXAsYVtNKzU2Pj4yXT1tLGFbTT4+Ml09MHxKMyhsLGMpLGs9MHxRbihiPWM8PDIpLGFbTSs4Pj4yXT1rLHc9MCxj''@;'; put 'put ''PTAsbD0tMTshKCgwfHcpPj0oMHxhW0Q+PjJdKSk7KUE9bCsxfDAsKDB8dyk+PSgwfGMpJiYoYz0wfGFbKCgwfEEpPT0oMHxtKT9EOnArKEE8PDIpfDApPj4yXSxsPUEpLGFbaysoYVtmKyh3PDwyKT4+Ml08PDIpPj4yXT1sLHc9dysxfDA7cmV0dXJuIGFbTSsyOD4+Ml09MHxRbihiKSxhW00r''@;'; put 'put ''MzI+PjJdPTB8UW4oYiksYVtNKzM2Pj4yXT0wfFFuKGIpLGFbTSs0MD4+Ml09MHxRbihiKSxhW00rMTI+PjJdPTB8UW4oYiksYVtNKzE2Pj4yXT0wfFFuKGIpLGFbTSsyMD4+Ml09MHxRbihiKSxhW00rMjQ+PjJdPTB8UW4oYiksMHxNfWZ1bmN0aW9uIFgzKCl7VWsoMTg3Njc2LDI0KSxhWzQ2''@;'; put 'put ''OTIyXT0wfWZ1bmN0aW9uICRrKGwsYyl7dmFyIGYscDtyZXR1cm4rICtGMCgrKChwPStfWzgrKGx8PTApPj4zXS0rX1s4KyhjfD0wKT4+M10pKnArKGY9K19bbD4+M10tK19bYz4+M10pKmYpKX1mdW5jdGlvbiBzdihsKXt2YXIgYzthWzE2KyhsfD0wKT4+Ml09Yz0wfGFbNDY5MjJdLGFbNDY5''@;'; put 'put ''MjJdPWMrMX1mdW5jdGlvbiBjTChsKXt2YXIgYyxmO2FbKGY9MjArKGx8PTApfDApPj4yXT1jPSgwfGFbZj4+Ml0pLTF8MCxjfHx2aihsLDE4NzY3Nil9ZnVuY3Rpb24gcWsobCl7YVsobD0yMCsobHw9MCl8MCk+PjJdPTErKDB8YVtsPj4yXSl9ZnVuY3Rpb24gRzJlKGwsYyxmLHAsbSl7bHw9''@;'; put 'put ''MCxjfD0wLGZ8PTAsbT0rbTt2YXIgYmUsT2UsTGUsQmUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLEhlPTA7Zm9yKEJlPW9lLG9lPW9lKzE2fDAsYVsoRD1CZSk+PjJdPXB8PTAsT2U9MHxRbihHPWM8PDIpLExlPTB8UW4oaz1jPDwzKSxiZT0wfGZ1bmN0''@;'; put 'put ''aW9uIHJqKGwsYyl7cmV0dXJuIGN8PTAsbD0wfGFbOCsobHw9MCk+PjJdPzB8V3kobCxjKTowfGZ1bmN0aW9uIHJMKGwsYyl7bHw9MDt2YXIgcCxtLHcsZj0wLEE9MDtmb3Iodz1vZSxvZT1vZSsxNnwwLG09dyxwPTB8UW4oMHx2cihBPShjfD0wKTw8MixjKSksQT0wfFFuKEEpLGY9MDshKCgw''@;'; put 'put ''fGYpPj0oMHxjKSk7KWFbQSsoZjw8Mik+PjJdPXArKCgwfHZyKGYsYykpPDwyKSxmPWYrMXwwO2ZvcihRaChtLGMpLGY9MDshKCgwfGYpPj0oMHxjKSk7KWk4KGYsbCxjLDB8YVtBKyhmPDwyKT4+Ml0sbSksZj1mKzF8MDtyZXR1cm4gSmMobSksb2U9dywwfEF9KGwsYyksMHxsfShsLGMpLGw9''@;'; put 'put ''MDshKCgwfGwpPj0oMHxjKSk7KXtmb3IoYj1iZSsobDw8Mil8MCx3PTA7KDB8dykhPSgwfGMpOylhWyhwZT0oMHxhW2I+PjJdKSsodzw8Mil8MCk+PjJdPWFbcGU+PjJdPDw4LHc9dysxfDA7bD1sKzF8MH1mb3IoZnx8QnIoOTM5NTIsOTM5NjAsMjgzLDkzOTc0KSxwZT0wfFFuKGspLGw9MDsh''@;'; put 'put ''KCgwfGwpPj0oMHxjKSk7KV9bcGUrKGw8PDMpPj4zXT0rX1tmKyhsPDwzKT4+M10sbD1sKzF8MDtmb3Iod2oocGUsYyksQT0wLE09MCxrPTE7ISgoMHxrKT49KDB8YykpOyl7Zm9yKHc9YmUrKGs8PDIpfDAsYj1mKyhrPDwzKXwwLGw9MDsoMHxsKSE9KDB8ayk7KUE9KEs9K19bYj4+M10tK19b''@;'; put 'put ''ZisobDw8Myk+PjNdKSpLKigxLysoMHx2cihIZT0wfGFbKDB8YVt3Pj4yXSkrKGw8PDIpPj4yXSxIZSkpKStBLE09K2VvKCtLKSooMS8rKDB8SGUpKStNLGw9bCsxfDA7az1rKzF8MH1mb3IoSz1NL0EsbD0wOyEoKDB8bCk+PSgwfGMpKTspX1soSGU9ZisobDw8Myl8MCk+PjNdPStfW0hlPj4z''@;'; put 'put ''XSpLLGw9bCsxfDA7Zm9yKGZ1bmN0aW9uIFcyZShsLGMsZixwLG0pe2N8PTAsZj0rZixwfD0wO3ZhciBrLE0sQT0wLHc9MCxiPTAsRD0wO2lmKGs9MHxmdW5jdGlvbiBZMmUobCxjKXtsfD0wO3ZhciBBLE0sUixmPTAscD0wLG09MCx3PTAsYj0wLGs9MCxEPTAsRz0wO2ZvcihSPW9lLG9lPW9l''@;'; put 'put ''KzE2fDAsbT1SLHA9MHxRbigwfHZyKEQ9KGN8PTApPDwyLGMpKSxEPTB8UW4oRCksZj0wOyEoKDB8Zik+PSgwfGMpKTspYVtEKyhmPDwyKT4+Ml09cCsoKDB8dnIoZixjKSk8PDIpLGY9ZisxfDA7Zm9yKE09MHxmdW5jdGlvbiBVMmUobCxjLGYpe2x8PTAsZnw9MDt2YXIgYixrLHA9MCxtPTAs''@;'; put 'put ''QT0wLHc9MCxNPTAsRD0wO2ZvcihiPTB8UW4oKGN8PTApPDwyKSxrPTEvKygwfGMpLHA9MCx3PTA7ISgoMHx3KT49KDB8YykpOyl7Zm9yKE09bCsodzw8Mil8MCxtPTAsQT0wOygwfEEpIT0oMHxjKTspRD0rKDB8YVsoMHxhW00+PjJdKSsoQTw8Mik+PjJdKSxtPShEKj1EKSttLEE9QSsxfDAs''@;'; put 'put ''cD1EK3A7V25bYisodzw8Mik+PjJdPWsqbSx3PXcrMXwwfXJldHVybiBXbltmPj4yXT1wLysoMHx2cihjLGMpKSwwfGJ9KGwsYyxtKSxBPStXblttPj4yXSxwPTAsaz0xOyEoKDB8cCk+PSgwfGMpKTspe2ZvcihtPWwrKHA8PDIpfDAsdz1NKyhwPDwyKXwwLGI9RCsocDw8Mil8MCxmPTA7KDB8''@;'; put 'put ''ZikhPSgwfGspOylXblsoMHxhW2I+PjJdKSsoZjw8Mik+PjJdPUc9K1duW00rKGY8PDIpPj4yXSsgK1duW3c+PjJdLShHPSsoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pKSpHLUEsV25bKDB8YVtEKyhmPDwyKT4+Ml0pKyhwPDwyKT4+Ml09RyxmPWYrMXwwO3A9cCsxfDAsaz1rKzF8MH1y''@;'; put 'put ''ZXR1cm4gSHQoTSksb2U9UiwwfER9KG18PTAsbHw9MCksTT0wfFFuKDgpLHApe2ZvcihBPTB8UW4obDw8MyksbT0wOyEoKDB8bSk+PSgwfGwpKTspX1tBKyhtPDwzKT4+M109K19bcCsobTw8Myk+PjNdLG09bSsxfDA7d2ooQSxsKSxtPUEsYj1BfWVsc2UgbT0wLGI9MDtmb3IoZnVuY3Rpb24g''@;'; put 'put ''YmoobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQT0rQTt2YXIgRyxLLHBlLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLG1lPTAsYmU9MDtwZT0wfFFuKG1lPShjfD0wKTw8MyksbWU9MHxRbihtZSksUj0xLUEsRz0oMHxjKTwxP2M6MSxLPWMrLTF8MCxrPTA9PSgwfG0pLGI9MDtl''@;'; put 'put ''OmZvcig7ISgoMHxiKT49KDB8RykpOyl7TT0wfGFbZisoYjw8Mik+PjJdO2Rve2Zvcih3PTA7KDB8dykhPSgwfGMpOylfW00rKHc8PDMpPj4zXT0rKDB8KDB8RDEoKSklMTAwKSx3PXcrMXwwO2ZvcihrfHxuZyhNLDAsSywtK3FkKG0sMCxLLE0pLG0pLHc9MDsoMHx3KSE9KDB8Yik7KW5nKE0s''@;'; put 'put ''MCxLLEQ9LStxZCgwfGFbKGJlPWYrKHc8PDIpfDApPj4yXSwwLEssTSksMHxhW2JlPj4yXSksdz13KzF8MDtBPStyZyhNLDAsSyl9d2hpbGUoQTwxZS0xMCk7b3YoTSwwLEssMS9BLE0pO2Rve2ZvcihlNChtZSwwLEssTSksY0sobCxjLGMsTSxwZSxtKSxlNChNLDAsSyxwZSksdz0wOygwfHcp''@;'; put 'put ''IT0oMHxiKTspbmcoTSwwLEssRD0tK3FkKDB8YVsoYmU9Zisodzw8Mil8MCk+PjJdLDAsSyxNKSwwfGFbYmU+PjJdKSx3PXcrMXwwO2lmKChBPStyZyhNLDAsSykpPDFlLTEwKWJyZWFrIGU7b3YoTSwwLEssMS9BLE0pLEQ9K3FkKE0sMCxLLG1lKX13aGlsZSgrZW8oK0QpPFIpO19bcCsoYjw8''@;'; put 'put ''Myk+PjNdPUQqQSxiPWIrMXwwfWZvcig7ISgoMHxiKT49KDB8RykpOyl7Zm9yKGs9MHxhW2YrKGI8PDIpPj4yXSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGMpKXt3PTA7YnJlYWt9X1trKyh3PDwzKT4+M109KygwfCgwfEQxKCkpJTEwMCksdz13KzF8MH1mb3IoOyEoKDB8dyk+PSgwfGIpKTspbmco''@;'; put 'put ''aywwLEssUj0tK3FkKDB8YVsoYmU9Zisodzw8Mil8MCk+PjJdLDAsSyxrKSwwfGFbYmU+PjJdKSx3PXcrMXwwO292KGssMCxLLDEvK3JnKGssMCxLKSxrKSxfW3ArKGI8PDMpPj4zXT0wLGI9YisxfDB9Zm9yKE09RystMXwwLGI9MDshKCgwfGIpPj0oMHxNKSk7KXtmb3IoQT0rX1sobD1wKyhi''@;'; put 'put ''PDwzKXwwKT4+M10sdz1iLGs9bT1iKzF8MDshKCgwfGspPj0oMHxHKSk7KUE9KGJlPUE8KFI9K19bcCsoazw8Myk+PjNdKSk/UjpBLHc9YmU/azp3LGs9aysxfDA7KDB8dykhPSgwfGIpPyhlNChwZSwwLEssMHxhWyhjPWYrKGI8PDIpfDApPj4yXSksZTQoMHxhW2M+PjJdLDAsSywwfGFbKGJl''@;'; put 'put ''PWYrKHc8PDIpfDApPj4yXSksZTQoMHxhW2JlPj4yXSwwLEsscGUpLF9bcCsodzw8Myk+PjNdPStfW2w+PjNdLF9bbD4+M109QSxiPW0pOmI9bX1IdChwZSksSHQobWUpfShrLGwsYyxNLG0sZikscD0wOzEhPSgwfHApOyl7Zm9yKEE9TSsocDw8Myl8MCx3PWMrKHA8PDIpfDAsbT0wOyEoKDB8''@;'; put 'put ''bSk+PSgwfGwpKTspZj0rRjAoKyArZW8oKyArX1tBPj4zXSkpLF9bKEQ9KDB8YVt3Pj4yXSkrKG08PDMpfDApPj4zXT0rX1tEPj4zXSpmLG09bSsxfDA7cD1wKzF8MH1IdCgwfGFbaz4+Ml0pLEh0KGspLEh0KE0pLEh0KGIpfShjLEQsbSxmLGJlKSxiPTB8UW4oMHx2cihHLGMpKSx3PTA7Oyl7''@;'; put 'put ''aWYoKDB8dyk+PSgwfGMpKXtiPTE7YnJlYWt9Zm9yKGs9YisoKDB8dnIodyxjKSk8PDIpfDAsYVtPZSsodzw8Mik+PjJdPWssRD1iZSsodzw8Mil8MCxBPTAsbD0wOygwfGwpIT0oMHxjKTspKDB8bCkhPSgwfHcpJiYoV25baysobDw8Mik+PjJdPVI9LTEvKChSPSsoMHxhWygwfGFbRD4+Ml0p''@;'; put 'put ''KyhsPDwyKT4+Ml0pKSpSKSxBLT1SKSxsPWwrMXwwO1duW2srKHc8PDIpPj4yXT1BLHc9dysxfDB9Zm9yKDs7KXtpZigoMHxiKT49KDB8Yykpe3c9MDticmVha31mb3IoQT0rX1tmKyhiPDwzKT4+M10sdz1iZSsoYjw8Mil8MCxsPTA7KDB8bCkhPSgwfGIpOylHPX5+K0YwKCsoUj0oTT0rKDB8''@;'; put 'put ''YVsoSGU9KDB8YVt3Pj4yXSkrKGw8PDIpfDApPj4yXSkpKk0tKFI9QS0rX1tmKyhsPDwzKT4+M10pKlIpKSxhWygwfGFbYmUrKGw8PDIpPj4yXSkrKGI8PDIpPj4yXT1HPVI+MD9HOjAsYVtIZT4+Ml09RyxsPWwrMXwwO2I9YisxfDB9Zm9yKDs7KXtpZigoMHx3KT49KDB8Yykpe0c9MCxsPTA7''@;'; put 'put ''YnJlYWt9Zm9yKE09K19bcCsodzw8Myk+PjNdLF9bKGs9TGUrKHc8PDMpfDApPj4zXT0wLEQ9YmUrKHc8PDIpfDAsYj1PZSsodzw8Mil8MCxsPTAsQT0wOygwfGwpIT0oMHxjKTspKDB8bCkhPSgwfHcpJiYoUj0rV25bKDB8YVtiPj4yXSkrKGw8PDIpPj4yXSorKDB8YVsoMHxhW0Q+PjJdKSso''@;'; put 'put ''bDw8Mik+PjJdKSxfW2s+PjNdPUErPU0+PStfW3ArKGw8PDMpPj4zXT8tUjpSKSxsPWwrMXwwO3c9dysxfDB9Zm9yKDs7KXtpZighKGw8PDI0Pj4yND09MCYoMHxHKTwyMDApKXttZT00MjticmVha31pZigoMHx4bChPZSxwLExlLGMsbSxjLDEpKTwwKXtsPTE7YnJlYWt9Zm9yKGw9MSxEPTA7''@;'; put 'put ''ISgoMHxEKT49KDB8YykpOyl7Zm9yKFI9K19bcCsoRDw8Myk+PjNdLGI9YmUrKEQ8PDIpfDAsaz1PZSsoRDw8Mil8MCxBPTAsdz0wOygwfHcpIT0oMHxjKTspe2Rve2lmKCgwfHcpIT0oMHxEKSl7aWYoTT0rV25bKDB8YVtrPj4yXSkrKHc8PDIpPj4yXSorKDB8YVsoMHxhW2I+PjJdKSsodzw8''@;'; put 'put ''Mik+PjJdKSxSPj0rX1twKyh3PDwzKT4+M10pe0ErPS1NO2JyZWFrfUErPU07YnJlYWt9fXdoaWxlKDApO3c9dysxfDB9QSE9KFI9K19bKHc9TGUrKEQ8PDMpfDApPj4zXSkmJitlbygrKDEtQS9SKSk+MWUtNSYmKF9bdz4+M109QSxsPTApLEQ9RCsxfDB9Rz1HKzF8MH1lOmRve2lmKDQyPT0o''@;'; put 'put ''MHxtZSkpZm9yKEE9MS9LLGw9MDs7KXtpZigoMHxsKT49KDB8Yykpe2w9MDticmVhayBlfV9bKEhlPWYrKGw8PDMpfDApPj4zXT0rX1tIZT4+M10qQSxfWyhIZT1wKyhsPDwzKXwwKT4+M109K19bSGU+PjNdKkEsbD1sKzF8MH19d2hpbGUoMCk7cmV0dXJuIEh0KDB8YVtiZT4+Ml0pLEh0KGJl''@;'; put 'put ''KSxIdCgwfGFbT2U+PjJdKSxIdChPZSksSHQocGUpLEh0KExlKSxvZT1CZSwwfGx9ZnVuY3Rpb24gd2oobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtmb3IoZj0wLHA9MDshKCgwfGYpPj0oMHxjKSk7KW09K19bbCsoZjw8Myk+PjNdK3AsZj1mKzF8MCxwPW07Zm9yKHAvPSso''@;'; put 'put ''MHxjKSxmPTA7ISgoMHxmKT49KDB8YykpOylfWyhBPWwrKGY8PDMpfDApPj4zXT0rX1tBPj4zXS1wLGY9ZisxfDA7b3YobCwwLEE9YystMXwwLDEvK3JnKGwsMCxBKSxsKX1mdW5jdGlvbiBjSyhsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIHc9MCxiPTAs''@;'; put 'put ''az0wLE09MDtmb3Iodz0wOyEoKDB8dyk+PSgwfGMpKTspe2ZvcihNPWwrKHc8PDIpfDAsYj0wLGs9MDshKCgwfGspPj0oMHxmKSk7KWI9K19bcCsoazw8Myk+PjNdKitXblsoMHxhW00+PjJdKSsoazw8Mik+PjJdK2Isaz1rKzF8MDtfW20rKHc8PDMpPj4zXT1iLHc9dysxfDB9dz1jKy0xfDAs''@;'; put 'put ''MHxBJiZuZyhtLDAsdywtK3FkKG0sMCx3LEEpLEEpfWZ1bmN0aW9uIGhLKGwsYyl7bHw9MCxjfD0wO3ZhciBHLEsscGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLG1lPTAsYmU9MCxPZT0wO3BlPW9lLG9lPW9lKzE2fDAsSz1wZSxXVigpLFgzKCksZnVuY3Rpb24g''@;'; put 'put ''WTllKCl7dmFyIGw9MCxjPTAsZj0wO2ZvcihhWzQ2ODU3XT0wLGFbNDY4NTldPTAsYVs0Njg1OF09Yz0obD0wfGFbNDY4NTVdKTw8MiwoZj0wfGFbNDY4NTZdKXx8KGY9MHxRbigxNjAqbHwwKSxhWzQ2ODU2XT1mLGM9MHxhWzQ2ODU4XSksbD0wOyEoKDB8bCk+PSgwfGMpKTspYVtmKyg0MCps''@;'; put 'put ''fDApKzMyPj4yXT0wLGw9bCsxfDB9KCksYVs0NjkxOF09MHx5Z1szJmNdKCksZnVuY3Rpb24gdHYoKXt2YXIgbD0wLGM9MCxmPTA7Zm9yKFVrKDE4NzQ0OCw0MCksYVs0Njg2Nl09Yz0obD0wfGFbNDY4NTVdKTw8MSwoZj0wfGFbNDY4NjVdKXx8KGY9MHxRbihsPDwzKSxhWzQ2ODY1XT1mLGM9''@;'; put 'put ''MHxhWzQ2ODY2XSksbD0wOyEoKDB8bCk+PSgwfGMpKTspYVtmKyhsPDwyKT4+Ml09MCxsPWwrMXwwO2FbNDY4NjBdPTB8bnYoMCwwKSxhWzQ2ODYxXT0wfG52KDAsMCksYVthWzQ2ODYwXT4+Ml09MCxhWzQrKGM9MHxhWzQ2ODYwXSk+PjJdPWY9MHxhWzQ2ODYxXSxhW2Y+PjJdPWMsYVs0Kygw''@;'; put 'put ''fGFbNDY4NjFdKT4+Ml09MCxhWyhmPTB8YVs0Njg2NV0pPj4yXT1hWzQ2ODYwXSxhW2YrKCgwfGFbNDY4NjZdKS0xPDwyKT4+Ml09YVs0Njg2MV19KCksRz1LKzh8MCxSPTB8eWdbMyZjXSgpLGY9MCxwPTA7ZTpmb3IoOzspe2ZvcihNPTA9PSgwfFIpLEQ9Uis4fDA7MHxEYygpfHwoTWYoSyks''@;'; put 'put ''Zj0rX1tLPj4zXSxwPStfW0c+PjNdKSxNfHwhKDB8RGMoKXx8KG09K19bRD4+M10sbTxwKXx8bT09cCYmK19bUj4+M108Zik7KXtpZigwfERjKCkpYnJlYWsgZTtsPTB8VTllKG1lPTB8VVgoKSksT2U9MHxxVihtZSksQT0wfHFWKE9lKSxrPTB8UTllKG1lKSxiZT0wfFQyZShPZSksc3Yodz0w''@;'; put 'put ''fGFbbWUrMjA+PjJdKSwkRCgwfGFbbWUrOD4+Ml0sMHx1ZVttZSsxNj4+MF0sdyksJEQoMHxhW09lKzg+PjJdLDB8dWVbT2UrMTY+PjBdLHcpLHgyZShtZSksdEwoT2UpLHgyZShPZSksbWU9MSYoT2U9K19bays4Pj4zXT4rX1tiZSs4Pj4zXSksVmsobCxrPTB8bnYoYmU9MHxZVihiPU9lP2Jl''@;'; put 'put ''OmssT2U/azpiZSksbWUpKSwkRChiZSwyNTUmKDFebWUpLHcpLGNMKHcpLDB8KHc9MHxydihsLGspKSYmKHRMKGwpLE5rKGwsdywrJGsodyxiKSkpLChsPTB8cnYoayxBKSkmJk5rKGssbCwrJGsobCxiKSl9Yj0wfHFWKGw9MHxFMmUoUikpLFZrKGwsaz0wfG52KEE9MHxZVigwfFQyZShsKSxS''@;'; put 'put ''KSwwKSksMHwodz0wfHJ2KGwsaykpJiYodEwobCksTmsobCx3LCskayh3LFIpKSksVmsoayxBPTB8bnYoQSwxKSksMHwobD0wfHJ2KEEsYikpJiZOayhBLGwsKyRrKGwsUikpLFI9MHx5Z1szJmNdKCl9Zm9yKGw9MHxhWzQ2ODYwXTsoMHwobD0wfHFWKGwpKSkhPSgwfGFbNDY4NjFdKTspVVYo''@;'; put 'put ''MHxhW2wrOD4+Ml0pO29lPXBlfWZ1bmN0aW9uIF9qKGwsYyl7bHw9MCxjfD0wO3ZhciBtLEEsZj0wLHc9MDtBPW9lLG9lPW9lKzE2fDAsbT1BKzh8MDtkb3tpZigxIT0oMHxObyhsKSkpe2lmKFEyZShsKSxjfHwoYz0wfGRLKGwpKSwoMHwoZj0wfEoyZShsLGMpKSk8MCl7WHIoMSw5NDAzOSxt''@;'; put 'put ''KTticmVha31wSyhsKSxlQWUobCxjKSx0QWUobCxjKSxuQWUobCxmKTticmVha313PTB8YVsxMzIrKDB8YVsxNisoMHxMdChsKSk+PjJdKT4+Ml0sYVt3Pj4yXT0wLGFbdys0Pj4yXT0wLGFbdys4Pj4yXT0wLGFbdysxMj4+Ml09MH13aGlsZSgwKTtyZXR1cm4gb2U9QSwwfGN9ZnVuY3Rpb24g''@;'; put 'put ''UTJlKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcihmPTB8Tm8obHw9MCksZj0wfHZyKGYsZiksYz0wfEx0KGwpO2M7KWFbKEE9MjQrKG09MHxhWzExMisoMHxhWyhwPWMrMTZ8MCk+PjJdKT4+Ml0pfDApPj4yXT1mLGFbQSs0Pj4yXT0wLF9bbSs0OD4+M109MTAsbT0wPT0oMHxpQWUo''@;'; put 'put ''bCxjKSksYVsocD0wfGFbMTEyKygwfGFbcD4+Ml0pPj4yXSk+PjJdPW0/ZjowLGFbcCs0Pj4yXT0wLGM9MHx6dChsLGMpfWZ1bmN0aW9uIGRLKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtwPSgwfE5vKGx8PTApKTwzLGM9MHxMdChsKTtlOmRve2lmKCFwKXtmb3IoO2M7KTA9PSgw''@;'; put 'put ''fGFbKHA9MHxhWzExMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4yXSkmMD09KDB8YVtwKzQ+PjJdKSYmJDJlKGwsYywwKSxjPTB8enQobCxjKTtmb3IoZj0wLGM9MCxwPTB8THQobCk7Oyl7aWYoIXApYnJlYWsgZTtBPTB8YVsodz0wfGFbMTEyKygwfGFbcCsxNj4+Ml0pPj4yXSk+PjJdLGY9KG09''@;'; put 'put ''KHc9MHxhW3crND4+Ml0pPj4+MD4obT0oKDB8Zik8MCk8PDMxPj4zMSk+Pj4wfCgwfHcpPT0oMHxtKSZBPj4+MD5mPj4+MCk/QTpmLGM9bT9wOmMscD0wfHp0KGwscCl9fX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIEoyZShsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wO2ZvcihwPTB8YVsobT0yNCsoZj0wfGFbMTEyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKXwwKT4+Ml0sYVttPj4yXT0wLGFbbSs0Pj4yXT0wLGFbZiszMj4+Ml09MCxmdW5jdGlvbiBYMmUobCxjKXtjfD0wO3ZhciBiLEQsUixHLGY9MCxwPTAsbT0wLEE9MCx3PTAsaz0wLE09MCxLPTAs''@;'; put 'put ''cGU9MDtHPW9lLG9lPW9lKzE2fDAsRD1HLFI9MHxzaShsfD0wLDIsMTAxNTQxLDApLGFbRCs0Pj4yXT0wLGFbRD4+Ml09MCxLMmUoRCxjKSxiPTA9PSgwfFIpO2U6Zm9yKDtrPTB8ckFlKEQpLGs7KWZvcihNPWsrMTZ8MCxBPTB8YVsyNCsoMHxhWzExMisoMHxhW00+PjJdKT4+Ml0pPj4yXSxt''@;'; put 'put ''PTB8RnMobCxrKSxBPTB8SGwoMCwwfEEsMCwxKSxBPTB8R0woMHxBLDB8T24sMzIpLHc9T247Oyl7aWYoIW0pY29udGludWUgZTshYiYmNDg9PSgwfHVlWygwfEZvKG0sUikpPj4wXSkmJiEoMHxaaSgwfEZvKG0sUiksMTM4Mzk0KSl8fCgoMHwoZj0wfGFbKDM9PSgwfChjPTMmYVttPj4yXSkp''@;'; put 'put ''P206bSs0OHwwKSs0MD4+Ml0pKT09KDB8aykmJihmPTB8YVsoMj09KDB8Yyk/bTptKy00OHwwKSs0MD4+Ml0pLHc+Pj4wPChwZT0wfGFbNCsoSz1wPTI0KyhjPTB8YVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdKXwwKT4+Ml0pPj4+MHwoKDB8dyk9PSgwfHBlKT9BPj4+MDwoMHxhW0s+PjJdKT4+''@;'; put 'put ''PjA6MCkmJihhWyhwZT1wKT4+Ml09QSxhW3BlKzQ+PjJdPXcsYVtjKzMyPj4yXT1rLEs9MHxIbCgwfGFbKEs9cGU9MTYrKDB8YVsxMTIrKDB8YVtNPj4yXSk+PjJdKXwwKT4+Ml0sMHxhW0srND4+Ml0sMSwwKSxhW3BlPj4yXT1LLGFbcGUrND4+Ml09T24sSzJlKEQsZikpKSxtPTB8VHMobCxt''@;'; put 'put ''LGspfW9lPUd9KGwsYyksZj0wfEx0KGwpLHA9MHxHTCgwLDB8cCwzMiksbT1PbixjPTA7Zjspe2lmKCgwfChBPTB8YVsodz0yNCsoMHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDApPj4yXSkpPT0oMHxwKSYoMHwodz0wfGFbdys0Pj4yXSkpPT0oMHxtKSl7Yz0tMTticmVha31jPXc+Pj4w''@;'; put 'put ''PihiPSgoMHxjKTwwKTw8MzE+PjMxKT4+PjB8KDB8dyk9PSgwfGIpJkE+Pj4wPmM+Pj4wP0E6YyxmPTB8enQobCxmKX1yZXR1cm4gMHxjfWZ1bmN0aW9uIHBLKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKGY9MHxMdChsfD0wKTtmOyl7cD0xNisoYz0wfGFbMTEyKygwfGFbZisxNj4+Ml0p''@;'; put 'put ''Pj4yXSl8MDtlOmRve2lmKDA9PSgwfGFbcD4+Ml0pJjA9PSgwfGFbcCs0Pj4yXSkpZm9yKDs7KXtpZihtPTB8SGwoMHxhWyhtPXA9Yys4fDApPj4yXSwwfGFbbSs0Pj4yXSwxLDApLGFbcD4+Ml09bSxhW3ArND4+Ml09T24sIShjPTB8YVtjKzMyPj4yXSkpYnJlYWsgZTtjPTB8YVsxMTIrKDB8''@;'; put 'put ''YVtjKzE2Pj4yXSk+PjJdfX13aGlsZSgwKTtmPTB8enQobCxmKX19ZnVuY3Rpb24gZUFlKGwsYyl7bHw9MCxfWzQwKygwfGFbMTEyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKT4+M109Ni4yODMxODUzMDcxNzk1ODYsbUsobCxjKX1mdW5jdGlvbiB0QWUobCxjKXtsfD0wLF9bNDgrKDB8YVsx''@;'; put 'put ''MTIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4zXT0wLHhmKGwsYyl9ZnVuY3Rpb24gbkFlKGwsYyl7dmFyIEEsdyxmPTAscD0wLG09MCxiPTAsaz0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsbT13LEE9MHxmdW5jdGlvbiBnSyhsLGMpe2x8PTA7dmFyIGIsayxNLGY9MCxwPTAsbT0wLEE9MCx3''@;'; put 'put ''PTA7TT1vZSxvZT1vZSsxNnwwLGI9TSxrPTB8bXIoOCsoKGN8PTApPDwzKXwwKSxsPTB8QTIobCwwfHNpKDB8YVtsKzYwPj4yXSwwLDEwMTI4OCwwKSwwKTtlOmRve2lmKGwpe0E9MCxmPTAsbT0xO3Q6Zm9yKDs7KXtpZigoMHxtKT4oMHxjKSl7cD1BLGw9bTticmVhayBlfWlmKCEoKHA9K3Qz''@;'; put 'put ''KGwsYikpPjApKXtwPUEsbD1tO2JyZWFrIGV9Zm9yKHc9bSsxfDAsX1trKyhtPDwzKT4+M109Zj0oQT1wPi4wMj9wOi4wMikrZixsPTB8YVtiPj4yXTs7KXtpZighKChtPTB8dWVbbD4+MF0pPDwyND4+MjQpKXttPXc7Y29udGludWUgdH1pZighKG08PDI0Pj4yND09NTh8MCE9KDB8S2MobTw8''@;'; put 'put ''MjQ+PjI0KSkpKXttPXc7Y29udGludWUgdH1sPWwrMXwwfX19ZWxzZSBwPTEsZj0wLGw9MX13aGlsZSgwKTtmb3IoOyEoKDB8bCk+KDB8YykpOylfW2srKGw8PDMpPj4zXT1BPWYrcCxsPWwrMXwwLGY9QTtyZXR1cm4gb2U9TSwwfGt9KGx8PTAsY3w9MCksZj0wfEx0KGwpO2Y7KWI9K19bQSso''@;'; put 'put ''YVsyNCsocD0wfGFbMTEyKyhtPTB8YVtmKzE2Pj4yXSk+PjJdKT4+Ml08PDMpPj4zXSxrPStsYSgrICtfWyhwPXArNDh8MCk+PjNdKSpiLF9bKG09MHxhW20rMTMyPj4yXSk+PjNdPWssX1ttKzg+PjNdPStJYSgrICtfW3A+PjNdKSpiLGY9MHx6dChsLGYpO0h0KEEpLG9lPXd9ZnVuY3Rpb24g''@;'; put 'put ''eGYobCxjKXt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKHA9MHxhWzMyKyhmPTB8YVsxMTIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4yXT8rX1tmKzQ4Pj4zXS0uNSorX1tmKzQwPj4zXTowLEE9MHxGcyhsfD0wLGMpO0E7KSgwfChtPTB8YVsoMz09KDB8KGY9MyZhW0E+PjJd''@;'; put 'put ''KSk/QTpBKzQ4fDApKzQwPj4yXSkpPT0oMHxjKSYmKG09MHxhWygyPT0oMHxmKT9BOkErLTQ4fDApKzQwPj4yXSksKDB8YVszMisoZj0wfGFbMTEyKygwfGFbbSsxNj4+Ml0pPj4yXSk+PjJdKT09KDB8YykmJjEwPT0rX1sodz1mKzQ4fDApPj4zXSYmKF9bdz4+M109LjUqKGI9K19bZis0MD4+''@;'; put 'put ''M10pK3AscD1iK3AsMD09KDB8YVsoZj1mKzE2fDApPj4yXSkmMD09KDB8YVtmKzQ+PjJdKXx8eGYobCxtKSksQT0wfFRzKGwsQSxjKX1mdW5jdGlvbiBtSyhsLGMpe3ZhciBBLGY9MCxwPTAsbT0wLHc9MCxiPTA7Zm9yKEE9K19bNDArKHA9MHxhWzExMisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4y''@;'; put 'put ''XSk+PjNdLygrKCgwfGFbKG09cCs4fDApPj4yXSk+Pj4wKSs0Mjk0OTY3Mjk2KisoKDB8YVttKzQ+PjJdKT4+PjApKSxtPTB8RnMobHw9MCxjKTttOykoMHwoZj0wfGFbKDM9PSgwfChwPTMmYVttPj4yXSkpP206bSs0OHwwKSs0MD4+Ml0pKT09KDB8YykmJihmPTB8YVsoMj09KDB8cCk/bTpt''@;'; put 'put ''Ky00OHwwKSs0MD4+Ml0pLCgwfGFbMzIrKHA9MHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pPj4yXSk9PSgwfGMpJiYwPT0rX1sodz1wKzQwfDApPj4zXSYmKF9bdz4+M109QSooKygoMHxhWyhiPXArOHwwKT4+Ml0pPj4+MCkrNDI5NDk2NzI5NiorKCgwfGFbYis0Pj4yXSk+Pj4wKSksISgw''@;'; put 'put ''PT0oMHxhWyhwPXArMTZ8MCk+PjJdKSYwPT0oMHxhW3ArND4+Ml0pKSkmJm1LKGwsZiksbT0wfFRzKGwsbSxjKX1mdW5jdGlvbiBLMmUobCxjKXt2YXIgZixwO2x8PTAsY3w9MCxmPTB8bXIoOCksYVtmPj4yXT1jLGFbKDA9PSgwfChwPTB8YVsoYz1sKzR8MCk+PjJdKSk/bDpwKzR8MCk+PjJd''@;'; put 'put ''PWYsYVtjPj4yXT1mfWZ1bmN0aW9uIHJBZShsKXt2YXIgZixjPTA7cmV0dXJuKGY9MHxhWyhsfD0wKT4+Ml0pPyhjPTB8YVtmPj4yXSxhW2w+PjJdPWFbZis0Pj4yXSxIdChmKSwwfGFbbD4+Ml18fChhW2wrND4+Ml09MCkpOmM9MCwwfGN9ZnVuY3Rpb24gJDJlKGwsYyxmKXtmfD0wO3ZhciBi''@;'; put 'put ''LHA9MCxtPTAsQT0wLHc9MCxrPTAsTT0wO2Zvcih3PTB8YVthWzExMisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXT4+Ml0sQT0wfEZzKGx8PTAsYyksdz0wfEdMKDB8KHc9MHxIbCgwLDB8dywwLDEpKSwwfE9uLDMyKSxiPU9uO0E7KSgwfChwPTB8YVsoMz09KDB8KG09MyZhW0E+PjJdKSk/QTpB''@;'; put 'put ''KzQ4fDApKzQwPj4yXSkpPT0oMHxjKSYmKHA9MHxhWygyPT0oMHxtKT9BOkErLTQ4fDApKzQwPj4yXSksKDB8cCkhPSgwfGYpJiZiPj4+MDwoTT0wfGFbNCsobT1rPTB8YVsxMTIrKDB8YVtwKzE2Pj4yXSk+PjJdKT4+Ml0pPj4+MHwoKDB8Yik9PSgwfE0pP3c+Pj4wPCgwfGFbbT4+Ml0pPj4+''@;'; put 'put ''MDowKSYmKGFbKE09ayk+PjJdPXcsYVtNKzQ+PjJdPWIsJDJlKGwscCxjKSksQT0wfFRzKGwsQSxjKX1mdW5jdGlvbiBpQWUobCxjKXt2YXIgZj0wLHA9MCxtPTAsQT0wO2ZvcihtPTAsQT0wfEZzKGx8PTAsY3w9MCk7Oyl7aWYoIUEpe2Y9MTticmVha31pZigoMHwoZj0wfGFbKDM9PSgwfChw''@;'; put 'put ''PTMmYVtBPj4yXSkpP0E6QSs0OHwwKSs0MD4+Ml0pKT09KDB8YykmJihmPTB8YVsoMj09KDB8cCk/QTpBKy00OHwwKSs0MD4+Ml0pLCgwfGYpIT0oMHxjKSl7aWYobSl7aWYoKDB8bSkhPSgwfGYpKXtmPTA7YnJlYWt9Zj1tfX1lbHNlIGY9bTttPWYsQT0wfFRzKGwsQSxjKX1yZXR1cm4gMHxm''@;'; put 'put ''fWZ1bmN0aW9uIHEyZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTA7Zm9yKEc9MHxtcig3MiksYVtHKzYwPj4yXT0wLGFbRys1Nj4+Ml09bCxrPWwrMTZ8MCxtPTAsTT0wLHc9MSxiPTAsRD0wOyEoKDB8dyk+KDB8YVsx''@;'; put 'put ''ODArKEE9MHxhW2s+PjJdKT4+Ml0pKTspQT0wfHEyZSgwfGFbKDB8YVtBKzE4ND4+Ml0pKyh3PDwyKT4+Ml0sYyxmLHApLG09K19bQT4+M10rbSwwfGImJihhW2IrNTI+PjJdPUEpLE09TSsxfDAsdz13KzF8MCxiPUEsRD0wPT0oMHxEKT9BOkQ7Zm9yKFI9MHxMdChsKSxBPUQ7UjspMHxhW2Fb''@;'; put 'put ''MTEyKygwfGFbKHc9UisxNnwwKT4+Ml0pPj4yXT4+Ml0/dz1NOihrPTB8dDFlKFIsZiksbT0rX1trPj4zXSttLDB8YiYmKGFbYis1Mj4+Ml09ayksYVthWzExMisoMHxhW3c+PjJdKT4+Ml0+PjJdPWwsdz1NKzF8MCxiPWssQT0wPT0oMHxBKT9rOkEpLFI9MHx6dChsLFIpLE09dztyZXR1cm4g''@;'; put 'put ''YVtHKzY0Pj4yXT1NLE0/KF9bRys4Pj4zXT1tLG09K2Z1bmN0aW9uIHNBZShsLGMpe3ZhciBmPTA7cmV0dXJuKyhmPTA9PShmPStjbCgwfGFbNTYrKGx8PTApPj4yXSxjfD0wLDAsMCkpPytfW2wrOD4+M106KGY9K0YwKCsgK19bbCs4Pj4zXSkrMipmKSpmKX0oRyxwKSk6bT0rbjFlKGwsYyks''@;'; put 'put ''X1tHPj4zXT1tLGFbRys0OD4+Ml09QSwwfEd9ZnVuY3Rpb24gZTFlKGwpe3ZhciBSLEcsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsSz0wLHBlPTAsbWU9MDtHPW9lLG9lPW9lKzE3NnwwLG09RysxNDR8MCxrPUcrMzJ8MCx3PUcsUj0wfGFbNjQrKGx8PTApPj4yXTtlOmRv''@;'; put 'put ''e2lmKDB8Uil7Zm9yKE09MHxtcihSPDwyKSxwPTAsZj1jPWwrNDh8MDtmPTB8YVtmPj4yXSwhKCgwfHApPj0oMHxSKSk7KWFbTSsocDw8Mik+PjJdPWYscD1wKzF8MCxmPWYrNTJ8MDtmb3IoSTEoTSxSLDQsODApLGI9MHxtcihSPDwzKSxmPTA7ISgoMHxmKT49KDB8UikpOylfW2IrKGY8PDMp''@;'; put 'put ''Pj4zXT0rX1thW00rKGY8PDIpPj4yXT4+M10sZj1mKzF8MDtmb3IoK19bbD4+M109PShBPStfW2wrOD4+M10pPyhhW20+PjJdPWFbKHc9bCsxNnwwKT4+Ml0sYVttKzQ+PjJdPWFbdys0Pj4yXSxhW20rOD4+Ml09YVt3Kzg+PjJdLGFbbSsxMj4+Ml09YVt3KzEyPj4yXSxhW20rMTY+PjJdPWFb''@;'; put 'put ''dysxNj4+Ml0sYVttKzIwPj4yXT1hW3crMjA+PjJdLGFbbSsyND4+Ml09YVt3KzI0Pj4yXSxhW20rMjg+PjJdPWFbdysyOD4+Ml0sdz0wfHIxZShSLGIsbSkpOihLPStfW2wrNDA+PjNdLHBlPStfW2wrMzI+PjNdLF9bdz4+M109K19bbCsxNj4+M10sX1t3Kzg+PjNdPStfW2wrMjQ+PjNdLEE9''@;'; put 'put ''LjUqKHBlK0stK0YwKCsoNCpBKyhtZT1LLXBlKSptZSkpKSxfW3crMTY+PjNdPXBlLUEsX1t3KzI0Pj4zXT1LLUEsYVttPj4yXT1hW3c+PjJdLGFbbSs0Pj4yXT1hW3crND4+Ml0sYVttKzg+PjJdPWFbdys4Pj4yXSxhW20rMTI+PjJdPWFbdysxMj4+Ml0sYVttKzE2Pj4yXT1hW3crMTY+PjJd''@;'; put 'put ''LGFbbSsyMD4+Ml09YVt3KzIwPj4yXSxhW20rMjQ+PjJdPWFbdysyND4+Ml0sYVttKzI4Pj4yXT1hW3crMjg+PjJdLHc9MHxyMWUoUixiLG0pKSxwPTB8YVsxNTcxMl0sZj0wOyEoKDB8Zik+PSgwfFIpKTspYVsoaz0xNisoMHxhW00rKGY8PDIpPj4yXSl8MCk+PjJdPWFbKG09dysoZjw8NSl8''@;'; put 'put ''MCk+PjJdLGFbays0Pj4yXT1hW20rND4+Ml0sYVtrKzg+PjJdPWFbbSs4Pj4yXSxhW2srMTI+PjJdPWFbbSsxMj4+Ml0sYVtrKzE2Pj4yXT1hW20rMTY+PjJdLGFbaysyMD4+Ml09YVttKzIwPj4yXSxhW2srMjQ+PjJdPWFbbSsyND4+Ml0sYVtrKzI4Pj4yXT1hW20rMjg+PjJdLGY9ZisxfDA7''@;'; put 'put ''Zm9yKEh0KE0pLEh0KGIpLEh0KHcpLGY9MDs7KXtpZihjPTB8YVtjPj4yXSwoMHxmKT49KDB8UikpYnJlYWsgZTswfGFbYys2MD4+Ml18fGUxZShjKSxjPWMrNTJ8MCxmPWYrMXwwfX19d2hpbGUoMCk7b2U9R31mdW5jdGlvbiB2SyhsKXt2YXIgbSxjPTAsZj0wLEE9MCx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTA7aWYobT1vZSxvZT1vZSs0OHwwLDB8YVs2MCsobHw9MCk+PjJdKWs9K19bbCsyND4+M10sdz0rX1tsKzMyPj4zXSxBPStfW2wrNDA+PjNdLF9bMTYrKGI9MHxhWyhmPTE2KyhjPTB8YVtsKzU2Pj4yXSl8MCk+PjJdKT4+M109K19bbCsxNj4+M10sX1tiKzI0Pj4zXT1rLF9bMzIrKGw9MHxh''@;'; put 'put ''W2Y+PjJdKT4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCp3LF9bbCs0MD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCpBLFE3KGMsMSZhWzExNisoMHxhWzE2KygwfGZyKGMpKT4+Ml0pPj4yXSksZnVuY3Rpb24gYUFlKGwpe2x8PTA7dmFyIGMsZixwLG07bT1vZSxvZT1vZSs0OHwwLHA9bSxjPW0r''@;'; put 'put ''OHwwLDB8KGY9MHxhWzQ3MTUwXSkmJjA9PSgwfHVlWygwfEZvKGwsZikpPj4wXSkmJihfW3A+PjNdPS43KitfWzgwKygwfGFbbCsxNj4+Ml0pPj4zXSxhbyhjLDk0MTY4LHApLEJsKGwsMHxhWzQ3MTUwXSxjKSksVnkobCksb2U9bX0oYyk7ZWxzZXtmb3IoYz1sKzQ4fDA7Yz0wfGFbYz4+Ml07''@;'; put 'put ''KXZLKGMpLGM9Yys1MnwwO2s9K19bbCsyND4+M10tLjUqKE09K19bbCs0MD4+M10pLF9bMTYrKGI9MHxhWzE2KygwfGFbbCs1Nj4+Ml0pPj4yXSk+PjNdPUE9K19bbCsxNj4+M10tLjUqKHc9K19bbCszMj4+M10pLF9bYisyND4+M109ayxfW2IrMzI+PjNdPUErdyxfW2IrNDA+PjNdPWsrTX1v''@;'; put 'put ''ZT1tfWZ1bmN0aW9uIGVTKGwpe3ZhciBwLGM9MCxmPTA7Zm9yKHA9MHxhWzY0KyhsfD0wKT4+Ml0sYz1sKzQ4fDAsZj0wO2M9MHxhW2M+PjJdLCEoKDB8Zik+PSgwfHApKTspZVMoYyksYz1jKzUyfDAsZj1mKzF8MDtIdChsKX1mdW5jdGlvbiB0MWUobCxjKXt2YXIgZjtyZXR1cm4gbHw9MCxj''@;'; put 'put ''fD0wLGY9MHxtcig3MiksX1tmPj4zXT0rbjFlKGwsYyksYVtmKzYwPj4yXT0xLGFbZis1Nj4+Ml09bCwwfGZ9ZnVuY3Rpb24gbjFlKGwsYyl7dmFyIGY7cmV0dXJuKygwPT0oZj0rY2wobHw9MCxjfD0wLDEsMCkpPzFlMzoxZTMqZil9ZnVuY3Rpb24gcjFlKGwsYyxmKXtsfD0wLGN8PTAsZnw9''@;'; put 'put ''MDt2YXIgQSx3LHA9MCxtPTAsYj0wO2Zvcih3PW9lLG9lPW9lKzMyfDAsQT13LHA9MCxtPTA7ISgoMHxwKT49KDB8bCkpOyliPStfW2MrKHA8PDMpPj4zXSttLHA9cCsxfDAsbT1iO3JldHVybiBtPitfW2YrMjQ+PjNdKitfW2YrMTY+PjNdKy4wMDE/cD0wOihwPTB8bXIobDw8NSksYVtBPj4y''@;'; put 'put ''XT1hW2Y+PjJdLGFbQSs0Pj4yXT1hW2YrND4+Ml0sYVtBKzg+PjJdPWFbZis4Pj4yXSxhW0ErMTI+PjJdPWFbZisxMj4+Ml0sYVtBKzE2Pj4yXT1hW2YrMTY+PjJdLGFbQSsyMD4+Ml09YVtmKzIwPj4yXSxhW0ErMjQ+PjJdPWFbZisyND4+Ml0sYVtBKzI4Pj4yXT1hW2YrMjg+PjJdLGZMKGws''@;'; put 'put ''YyxwLDAsMCwxLDAsMSxBKSksb2U9dywwfHB9ZnVuY3Rpb24gZkwobCxjLGYscCxtLEEsdyxiLGspe2x8PTAsY3w9MCxmfD0wLHB8PTAsbT0rbSxBPStBLHc9K3csYj0rYjt2YXIgQmUsSGUsamUsZXQsTT0wLEQ9MCxSPTAsRz0wLEs9MCxtZT0wLGJlPTAsTGU9MCxydD0wLEdlPTA7ZXQ9b2Us''@;'; put 'put ''b2U9b2UrMTEyfDAsamU9ZXQrNzJ8MCxHPWV0KzMyfDAsTT1ldCxMZT0rX1sxNisoa3w9MCkrKCgxJiEoKEs9K19bKEJlPWsrMTZ8MCk+PjNdKTwrX1soSGU9aysyNHwwKT4+M10pKTw8Myk+PjNdO2Rve2lmKCgwfGwpPj0xKXtpZighcCl7TGU9KHc9K19bYz4+M10pLyhHZT1MZSpMZSksR2Uv''@;'; put 'put ''PXcsYVtqZT4+Ml09YVtrPj4yXSxhW2plKzQ+PjJdPWFbays0Pj4yXSxhW2plKzg+PjJdPWFbays4Pj4yXSxhW2plKzEyPj4yXT1hW2srMTI+PjJdLGFbamUrMTY+PjJdPWFbaysxNj4+Ml0sYVtqZSsyMD4+Ml09YVtrKzIwPj4yXSxhW2plKzI0Pj4yXT1hW2srMjQ+PjJdLGFbamUrMjg+PjJd''@;'; put 'put ''PWFbaysyOD4+Ml0sZkwobCxjLGYsMSx3LHcsdyxMZT5HZT9MZTpHZSxqZSk7YnJlYWt9aWYoKDB8bCk+KDB8cCkmJihEPShiZT0rX1tjKyhwPDwzKT4+M10pPG0/bTpiZSxtZT1iZT5BP0E6YmUsUj0oYmUrPXcpL0xlLChSPShHZT0oUio9UikvbWUpPihSPUQvUik/R2U6Uik8PWIpKXthW2pl''@;'; put 'put ''Pj4yXT1hW2s+PjJdLGFbamUrND4+Ml09YVtrKzQ+PjJdLGFbamUrOD4+Ml09YVtrKzg+PjJdLGFbamUrMTI+PjJdPWFbaysxMj4+Ml0sYVtqZSsxNj4+Ml09YVtrKzE2Pj4yXSxhW2plKzIwPj4yXT1hW2srMjA+PjJdLGFbamUrMjQ+PjJdPWFbaysyND4+Ml0sYVtqZSsyOD4+Ml09YVtrKzI4''@;'; put 'put ''Pj4yXSxmTChsLGMsZixwKzF8MCxELG1lLGJlLFIsamUpO2JyZWFrfWlmKEs9dy9MZSxMZT09KEQ9K19bQmU+PjNdKSl7Zm9yKFI9MS9LLEc9ays4fDAsRD0rX1trPj4zXS0uNSpELE09MDshKCgwfE0pPj0oMHxwKSk7KV9bZisoTTw8NSkrMjQ+PjNdPUssX1tmKyhNPDw1KSsxNj4+M109R2U9''@;'; put 'put ''K19bYysoTTw8Myk+PjNdKlIsX1tmKyhNPDw1KSs4Pj4zXT0uNSooK19bSGU+PjNdLUspKyArX1tHPj4zXSxfW2YrKE08PDUpPj4zXT0uNSpHZStELEQ9R2UrRCxNPU0rMXwwO19bRz4+M109K19bRz4+M10tLjUqSyxNPTF9ZWxzZXtmb3IoUj0xL0ssRD0uNSorX1tIZT4+M10rICtfW2srOD4+''@;'; put 'put ''M10sTT0wOyEoKDB8TSk+PSgwfHApKTspX1tmKyhNPDw1KSsxNj4+M109SyxfW2YrKE08PDUpKzI0Pj4zXT1HZT0rX1tjKyhNPDwzKT4+M10qUixfW2YrKE08PDUpPj4zXT0uNSooSy0rX1tCZT4+M10pKyArX1trPj4zXSxfW2YrKE08PDUpKzg+PjNdPUQtLjUqR2UsRC09R2UsTT1NKzF8MDtf''@;'; put 'put ''W2s+PjNdPStfW2s+PjNdKy41KkssTT0wfV9bKHJ0PWsrMTYrKE08PDMpfDApPj4zXT0rX1tydD4+M10tSyxhW2plPj4yXT1hW2s+PjJdLGFbamUrND4+Ml09YVtrKzQ+PjJdLGFbamUrOD4+Ml09YVtrKzg+PjJdLGFbamUrMTI+PjJdPWFbaysxMj4+Ml0sYVtqZSsxNj4+Ml09YVtrKzE2Pj4y''@;'; put 'put ''XSxhW2plKzIwPj4yXT1hW2srMjA+PjJdLGFbamUrMjQ+PjJdPWFbaysyND4+Ml0sYVtqZSsyOD4+Ml09YVtrKzI4Pj4yXSxmTChsLXB8MCxjKyhwPDwzKXwwLGYrKHA8PDUpfDAsMCwwLDAsMCwxLGplKX19d2hpbGUoMCk7b2U9ZXR9ZnVuY3Rpb24gaTFlKGwsYyl7Y3w9MDt2YXIgYixrLE0s''@;'; put 'put ''RCxHLEssZj0wLHA9MCxtPTAsQT0wLHc9MCxSPTA7Zm9yKEc9b2Usb2U9b2UrMTZ8MCxEPUcscD0wfGFbKDI9PSgwfChmPTMmYVsobHw9MCk+PjJdKSk/bDpsKy00OHwwKSs0MD4+Ml0sZj0wfGFbKDM9PSgwfGYpP2w6bCs0OHwwKSs0MD4+Ml0sYVsoTT1HKzR8MCk+PjJdPUE9MHxhWzIxMiso''@;'; put 'put ''MHxhWyhLPXArMTZ8MCk+PjJdKT4+Ml0sYVtEPj4yXT1tPTB8YVsyMTIrKDB8YVsodz1mKzE2fDApPj4yXSk+PjJdLGs9MHxtcigxMiksbD1BLGI9bSwwfHVlWzExOCsoMHxhW0s+PjJdKT4+MF0mJihhW00+PjJdPWw9MHxhWzQ4KygwfGFbMTQwKygwfGFbbCsxNj4+Ml0pPj4yXSk+PjJdLHA9''@;'; put 'put ''QSxBPWwpLDB8dWVbMTE4KygwfGFbdz4+Ml0pPj4wXT8oYVtEPj4yXT13PTB8YVs0OCsoMHxhWzE0MCsoMHxhW2IrMTY+PjJdKT4+Ml0pPj4yXSxmPW0sbT13KTp3PWIsKDB8KEE9MHxhWzQ0KygwfGFbMTQwKygwfGFbQSsxNj4+Ml0pPj4yXSk+PjJdKSk8PSgwfChtPTB8YVs0NCsoMHxhWzE0''@;'; put 'put ''MCsoMHxhW20rMTY+PjJdKT4+Ml0pPj4yXSkpPygwfG0pPigwfEEpPyhBSyhrLG0sZixBLEQsYyksbT1sPTB8YVtEPj4yXSxmPUQsUj0xMSk6QT13OihBSyhrLEEscCxtLE0sYykscD1sPTB8YVtNPj4yXSxtPWYsZj1NLFI9MTEpOzExPT0oMHxSKSYmKGFbZj4+Ml09YVs0OCsoMHxhWzE0MCso''@;'; put 'put ''MHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSxmPW0sbD0wfGFbTT4+Ml0sQT0wfGFbRD4+Ml0pLCgwfGwpIT0oMHxBKTspaEwoayxsLDAscCxjKSxoTChrLEEsZiwwLGMpLGFbTT4+Ml09YVs0OCsoMHxhWzE0MCsoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSxwPWwsbT1BLGY9RCxsPUEsUj0xMTtyZXR1''@;'; put 'put ''cm4gaEwoayxBLGYscCxjKSxvZT1HLDB8a31mdW5jdGlvbiBmQWUobCl7YVsobHw9MCk+PjJdPTB9ZnVuY3Rpb24gQUsobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHB8PTAsQXw9MDt2YXIgdz0wLGI9MDtmb3IoYj1tfD0wO3c9MHxhW2I+PjJdLCEoKDB8Yyk8PSgwfHApKTspaEwobCx3''@;'; put 'put ''LGYsMCxBKSxjPWMrLTF8MCxiPTQ4KygwfGFbMTQwKygwfGFbdysxNj4+Ml0pPj4yXSl8MCxmPXc7YVttPj4yXT1mfWZ1bmN0aW9uIGhMKGwsYyxmLHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MDtmb3IoQT0wfEx0KGN8PTApO0E7KXc9MHxhW0ErMTY+PjJdLCEoKDB8QSk9''@;'; put 'put ''PSgwfHApfCgoMHxBKT09KDB8Zik/MTooMHxhW3crMjEyPj4yXSkhPSgwfGMpKSkmJjA9PSgwfHVlW3crMTE4Pj4wXSkmJm8xZShsLDB8Q0ooQSxtLDApKSxBPTB8enQoYyxBKTtmb3Iodz1jKzE2fDAsYz0xOyEoKDB8Yyk+KDB8YVsxODArKEE9MHxhW3c+PjJdKT4+Ml0pKTspKDB8KEE9MHxh''@;'; put 'put ''WygwfGFbQSsxODQ+PjJdKSsoYzw8Mik+PjJdKSk9PSgwfGYpfCgwfEEpPT0oMHxwKXx8bzFlKGwsMHxoQWUoQSxtKSksYz1jKzF8MH1mdW5jdGlvbiBvMWUobCxjKXtjfD0wO3ZhciBwLG0sZj0wLEE9MDttPTB8YVsocD00KyhsfD0wKXwwKT4+Ml0sZj0wfGFbKEE9bCs4fDApPj4yXTtkb3tp''@;'; put 'put ''ZigoMHxtKT09KDB8YVtsPj4yXSkpe2lmKGYpe2FbcD4+Ml09bTw8MSxmPTB8bDAoZixtPDwzKSxhW0E+PjJdPWY7YnJlYWt9Zj0wfFFuKDQwMCksYVtBPj4yXT1mLGFbcD4+Ml09MTAwO2JyZWFrfX13aGlsZSgwKTthW2w+PjJdPTErKEE9MHxhW2w+PjJdKSxhW2YrKEE8PDIpPj4yXT1jfWZ1''@;'; put 'put ''bmN0aW9uIGhBZShsLGMpe2x8PTAsY3w9MDt2YXIgdyxiLGssZj0wLHA9MCxtPTAsQT0wLE09MCxEPTAsUj0wO3JldHVybiBrPTB8bXIoOCksZj0rX1sxNisobD0wfGFbbCsxNj4+Ml0pPj4zXSxiPStfW2wrMjQ+PjNdLHA9K19bbCszMj4+M10sdz0rX1tsKzQwPj4zXSxhW2srND4+Ml09NCxs''@;'; put 'put ''PTB8bXIoNjQpLGFbaz4+Ml09bCwwfHVlW2MrOD4+MF0/KEE9Zi0obT0rV25bYz4+Ml0pLG09cCttLHA9dysoUj0rV25bYys0Pj4yXSksZj1iLVIpOihBPWYqKFI9K1duW2M+PjJdKS0obT0uNSoocCtmKSooUistMSkpLG09cCpSLW0scD13KihEPStXbltjKzQ+PjJdKS0oTT0uNSoodytiKSoo''@;'; put 'put ''RCstMSkpLGY9YipELU0pLF9bbD4+M109QSxfW2wrOD4+M109ZixfW2wrMTY+PjNdPUEsX1tsKzI0Pj4zXT1wLF9bbCszMj4+M109bSxfW2wrNDA+PjNdPXAsX1tsKzQ4Pj4zXT1tLF9bbCs1Nj4+M109ZiwwfGt9ZnVuY3Rpb24gZEwobCxjLGYscCl7bHw9MCxmfD0wO3ZhciBtPTAsQT0wLHc9''@;'; put 'put ''MDtmb3IodWVbKHB8PTApKygwfGFbMTIwKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKT4+MF09MSxWbihmLGMsMSksdz0wfEZzKGwsYyk7dzspKDB8KG09MHxhWygzPT0oMHwoQT0zJmFbdz4+Ml0pKT93OncrNDh8MCkrNDA+PjJdKSk9PSgwfGMpJiYobT0wfGFbKDI9PSgwfEEpP3c6dystNDh8''@;'; put 'put ''MCkrNDA+PjJdKSwwfHVlW3ArKDB8YVsxMjArKDB8YVttKzE2Pj4yXSk+PjJdKT4+MF18fGRMKGwsbSxmLHApLHc9MHxUcyhsLHcsYyl9ZnVuY3Rpb24gbDFlKGwpe3ZhciBjO3JldHVybiBsfD0wLGM9MHxRbigyNCksYVs0NjkyNF09YyxhW2M+PjJdPTB8QXMoMTgyMDQsMHxhWzQ1ODFdKSxh''@;'; put 'put ''W2MrMTY+PjJdPTAsYVtjKzEyPj4yXT0wLGFbYys0Pj4yXT0wfHlLKGwpLDB8Y31mdW5jdGlvbiB5SyhsKXt2YXIgYyxmO3JldHVybiBsfD0wLGM9MHxRbigxNiksYVtjKzEyPj4yXT0wLGY9MHxRbigyMCpsfDApLGFbYz4+Ml09ZixhW2MrOD4+Ml09ZisoMjAqbHwwKSxhW2MrND4+Ml09Ziww''@;'; put 'put ''fGN9ZnVuY3Rpb24gZjFlKGwsYyl7dmFyIG0sZj0wLHA9MDsoMHwoZj0wfGFbKG09MTIrKGx8PTApfDApPj4yXSkpPCgwfChjfD0wKSkmJihwPSgwfChwPWY8PDEpKTwoMHxjKT9jOnAsMHwoZj0wfGFbKGM9bCsxNnwwKT4+Ml0pJiZIdChmKSxhW2M+PjJdPTB8UW4ocDw8MyksYVttPj4yXT1w''@;'; put 'put ''KX1mdW5jdGlvbiBkMWUobCl7aXMoMHxhWyhsfD0wKT4+Ml0pLGZ1bmN0aW9uIHdLKGwpe2x8PTA7Zm9yKHZhciBjPTA7bDspYz0wfGFbbCsxMj4+Ml0sSHQoMHxhW2w+PjJdKSxIdChsKSxsPWN9KDB8YVtsKzQ+PjJdKSxIdCgwfGFbbCsxNj4+Ml0pLEh0KGwpfWZ1bmN0aW9uIGJLKGwsYyxm''@;'; put 'put ''LHApe2x8PTAsZnw9MCxwfD0wO3ZhciBBLGIsdz0wO0E9b2Usb2U9b2UrMzJ8MCxhWyh3PUErMTJ8MCk+PjJdPWN8PTAsYVt3KzQ+PjJdPWYsdz04KygwfG1pWzYzJmFbKGI9MHxhW2w+PjJdKT4+Ml1dKGIsdywxKSl8MCxhW3c+PjJdPTB8ZnVuY3Rpb24gX0sobCxjLGYpe2N8PTAsZnw9MDt2''@;'; put 'put ''YXIgcDtyZXR1cm4gYVsocD0yMCsobHw9MCl8MCk+PjJdPTgrKGw9MHxhW3A+PjJdKSxhW2w+PjJdPWMsYVtsKzQ+PjJdPWYsMHxsfShsLHAsMHxhW3c+PjJdKSxvZT1BfWZ1bmN0aW9uIHRTKGwpe3JldHVybisgK19bKGx8PTApPj4zXX1mdW5jdGlvbiBraihsKXtyZXR1cm4gMHxhWzgrKGx8''@;'; put 'put ''PTApPj4yXX1mdW5jdGlvbiBwTChsKXtyZXR1cm4gMHx+fitfWzE2KyhsfD0wKT4+M119ZnVuY3Rpb24gbTFlKGwsYyxmLHAsbSxBKXtsfD0wLHB8PTAsbXw9MCxBfD0wLCgwfChjPTB8YVsoY3w9MCk+PjJdKSk+PSgwfGFbKGZ8PTApPj4yXSkmJihhW2Y+PjJdPWM9YysxMHwwLGFbcD4+Ml09''@;'; put 'put ''MHxsMCgwfGFbcD4+Ml0sMHx2cihsPDwzLGMpKSxhW20+PjJdPTB8bDAoMHxhW20+PjJdLGFbZj4+Ml08PDMpLGFbQT4+Ml09MHxsMCgwfGFbQT4+Ml0sYVtmPj4yXTw8MykpfWZ1bmN0aW9uIHYxZShsLGMsZixwLG0sQSx3LGIsayxNLEQpe2x8PTAsYz0rYyxmfD0wLHB8PTAsbXw9MCxBfD0w''@;'; put 'put ''LHd8PTAsYnw9MCxrfD0wLER8PTA7dmFyIFI9MCxHPTAsSz0wLHBlPTAsbWU9MDtfWyhNfD0wKT4+M109K19bTT4+M10rMTtlOmRve2lmKDB8bCl7aWYocGU9MHxhW2wrMTY+PjJdLDB8KFI9MHxhW2wrNDA+PjJdKSlkb3tpZihtMWUocGUsbSxBLHcsYixrKSwoMHxwTCgwfGh1KFIpKSkhPSgw''@;'; put 'put ''fHApKXtmb3IoSz0wfGtqKDB8aHUoUikpLEc9MDshKCgwfEcpPj0oMHxwZSkpOylfWygwfGFbdz4+Ml0pKygoMHx2cigwfGFbbT4+Ml0scGUpKStHPDwzKT4+M109K19bSysoRzw8Myk+PjNdLEc9RysxfDA7bWU9K3RTKDB8aHUoUikpLF9bKDB8YVtiPj4yXSkrKGFbbT4+Ml08PDMpPj4zXT1t''@;'; put 'put ''ZSxtZT0rdHQoZixLLHBlKSxfWygwfGFbaz4+Ml0pKygoSz0wfGFbbT4+Ml0pPDwzKT4+M109bWUsYVttPj4yXT1LKzF9Uj0wfGk3KFIpfXdoaWxlKDAhPSgwfFIpKTtpZigwfGFbKEs9bCszNnwwKT4+Ml0pe2lmKG1lPSt0dCgwfGFbbCsyMD4+Ml0sZixwZSksISgrX1tsKzI0Pj4zXTxtZSpj''@;'; put 'put ''KSlmb3IoRz0xPDxwZSxSPTA7Oyl7aWYoKDB8Uik+PSgwfEcpKWJyZWFrIGU7djFlKDB8YVsoMHxhW0s+PjJdKSsoUjw8Mik+PjJdLGMsZixwLG0sQSx3LGIsayxNLEQpLFI9UisxfDB9Zm9yKG0xZShwZSxtLEEsdyxiLGspLEc9bCszMnwwLFI9MDshKCgwfFIpPj0oMHxwZSkpOylfWygwfGFb''@;'; put 'put ''dz4+Ml0pKygoMHx2cigwfGFbbT4+Ml0scGUpKStSPDwzKT4+M109K19bKDB8YVtHPj4yXSkrKFI8PDMpPj4zXSxSPVIrMXwwO19bKDB8YVtiPj4yXSkrKGFbbT4+Ml08PDMpPj4zXT0rX1tsKzg+PjNdLG1lPSt0dCgwfGFbRz4+Ml0sZixwZSksX1soMHxhW2s+PjJdKSsoKGI9MHxhW20+PjJd''@;'; put 'put ''KTw8Myk+PjNdPW1lLGFbbT4+Ml09YisxfX19d2hpbGUoMCl9ZnVuY3Rpb24ga0sobCxjLGYscCxtLEEsdyxiLGssTSxEKXt2YXIgUjtjPStjLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCxifD0wLGt8PTAsRHw9MCxSPTB8YVsxNisobHw9MCk+PjJdLF9bKE18PTApPj4zXT0wLGFbbT4+Ml09''@;'; put 'put ''MCxhW0Q+PjJdPTAsYVtBPj4yXT0xMCwwfGFbdz4+Ml18fChhW3c+PjJdPTB8UW4oODAqUnwwKSksMHxhW2I+PjJdfHwoYVtiPj4yXT0wfFFuKGFbQT4+Ml08PDMpKSwwfGFbaz4+Ml18fChhW2s+PjJdPTB8UW4oYVtBPj4yXTw8MykpLHYxZShsLGMsZixwLG0sQSx3LGIsayxNLEQpfWZ1bmN0''@;'; put 'put ''aW9uIGRBZShsLGMsZixwLG0sQSx3LGIpe2N8PTAsZnw9MCxwPStwLG09K20sQT0rQSx3fD0wLGJ8PTA7dmFyIGs9MCxNPTAsRD0wO2ZvcihEPTB8YVsobHw9MCk+PjJdLE09MHxhW2wrMTY+PjJdLGs9MDs0IT0oMHxrKTspX1t3KyhrPDwzKT4+M109MCxrPWsrMXwwO2ZvcihhW2I+PjJdPTAs''@;'; put 'put ''TT0wfHZyKE0sRCksaz0wOyEoKDB8ayk+PSgwfE0pKTspX1tjKyhrPDwzKT4+M109MCxrPWsrMXwwO2ZvcihuUyhsLGwsZixjLHAsbSxBLHcpLFNLKGwsYyx3KSxwPTEvKygwfEQpLGs9MDs0IT0oMHxrKTspX1soRD13KyhrPDwzKXwwKT4+M109K19bRD4+M10qcCxrPWsrMXwwfWZ1bmN0aW9u''@;'; put 'put ''IG5TKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGZ8PTAscHw9MCxtPSttLEE9K0Esdz0rdyxifD0wO3ZhciBrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTA7ZTpkb3tpZigwIT0oMHxsKSYwIT0oMHxjKSl7aWYoKDB8YVts''@;'; put 'put ''Pj4yXSk+MCYmKDB8YVtjPj4yXSk+MCl7aWYoSz0wfGFbbCs0MD4+Ml0sRz0wfGFbKEJlPWMrNDB8MCk+PjJdLG1lPSt0dCgwfGFbKGs9bCszMnwwKT4+Ml0sMHxhWyhEPWMrMzJ8MCk+PjJdLEhlPTB8YVtsKzE2Pj4yXSksKFI9K19bYysyND4+M10pKyhNPStfW2wrMjQ+PjNdKTxtZSptKWZv''@;'; put 'put ''cihfW2I+PjNdPStfW2I+PjNdKzEscGU9MHxhW2s+PjJdLFI9K19bbCs4Pj4zXSxLPTB8U2oobCxIZSksRz0wfGFbRD4+Ml0sTT0rX1tjKzg+PjNdLEQ9MHxTaihjLEhlKSxtZT4wfHxCcig5NDc5OCw5NDY4MSwxOTEsOTQ3NjQpLFI9Uip3Kk0sTT0rR2woK21lLCsoMS1BKSksTT0xLygtMT09''@;'; put 'put ''QT9tZSptZTpNKSxrPTA7Oyl7aWYoKDB8ayk+PSgwfEhlKSlicmVhayBlO19bKHA9Sysoazw8Myl8MCk+PjNdPSh3PVIqKCtfW3BlKyhrPDwzKT4+M10tK19bRysoazw8Myk+PjNdKSpNKSsgK19bcD4+M10sX1socD1EKyhrPDwzKXwwKT4+M109K19bcD4+M10tdyxrPWsrMXwwfWlmKExlPSgw''@;'; put 'put ''fGwpPT0oMHxjKSwoRD0wIT0oMHxLKSkmKGs9MCE9KDB8RykpKWZvcihiZT1iKzh8MCxPZT0tMT09QSxtPTEtQSxEPUs7Oyl7aWYoIUQpYnJlYWsgZTtmb3IoSz0wfGtqKDB8aHUoRCkpLG1lPSt0UygwfGh1KEQpKSxsPTB8TUsocCxwZT0wfHBMKDB8aHUoRCkpLEQsSGUpLG1lKj13LEc9MHxh''@;'; put 'put ''W0JlPj4yXTtHOyl7Yz0wfGtqKDB8aHUoRykpLE09K3RTKDB8aHUoRykpLGI9MHxNSyhwLGs9MHxwTCgwfGh1KEcpKSxHLEhlKTt0OmRve2lmKCEoKDB8cGUpPT0oMHxrKXxMZSYoMHxrKTwoMHxwZSkpKWZvcihfW2JlPj4zXT0rX1tiZT4+M10rMSxBPStDMShmLEhlLHBlLGspLE0qPW1lLFI9''@;'; put 'put ''K0dsKCtBLCttKSxSPTEvKE9lP0EqQTpSKSxrPTA7Oyl7aWYoKDB8ayk+PSgwfEhlKSlicmVhayB0O19bKGplPWwrKGs8PDMpfDApPj4zXT0oQT1NKigrX1tLKyhrPDwzKT4+M10tK19bYysoazw8Myk+PjNdKSpSKSsgK19bamU+PjNdLF9bKGplPWIrKGs8PDMpfDApPj4zXT0rX1tqZT4+M10t''@;'; put 'put ''QSxrPWsrMXwwfX13aGlsZSgwKTtHPTB8aTcoRyl9RD0wfGk3KEQpfWlmKExlKWZvcihwZT0xPDxIZSxHPWwrMzZ8MCxEPTA7Oyl7aWYoKDB8RCk+PSgwfHBlKSlicmVhayBlO2ZvcihLPTB8YVsoMHxhW0c+PjJdKSsoRDw8Mik+PjJdLGs9RDsoMHxrKSE9KDB8cGUpOyluUyhLLDB8YVsoMHxh''@;'; put 'put ''W0c+PjJdKSsoazw8Mik+PjJdLGYscCxtLEEsdyxiKSxrPWsrMXwwO0Q9RCsxfDB9aWYoIShEfCEoTT5SKSkpZm9yKEc9MTw8SGUsRD1sKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxHKSlicmVhayBlO25TKDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdLGMsZixwLG0sQSx3LGIpLGs9aysx''@;'; put 'put ''fDB9aWYoIShrfCEoUj5NKSkpZm9yKEc9MTw8SGUsRD1jKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxHKSlicmVhayBlO25TKDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdLGwsZixwLG0sQSx3LGIpLGs9aysxfDB9aWYoIUQpZm9yKEc9MTw8SGUsRD1sKzM2fDAsaz0wOzspe2lmKCgwfGsp''@;'; put 'put ''Pj0oMHxHKSlicmVhayBlO25TKDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdLGMsZixwLG0sQSx3LGIpLGs9aysxfDB9Zm9yKGsmJkJyKDEzODM5NCw5NDY4MSwyNzMsOTQ3NjQpLEc9MTw8SGUsRD1jKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxHKSlicmVhayBlO25TKDB8YVsoMHxhW0Q+''@;'; put 'put ''PjJdKSsoazw8Mik+PjJdLGwsZixwLG0sQSx3LGIpLGs9aysxfDB9fUJyKDk0NzM5LDk0NjgxLDE3NSw5NDc2NCl9fXdoaWxlKDApfWZ1bmN0aW9uIFNLKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEQsUixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRz0wO3A9MHxhWzQwKyhsfD0wKT4+Ml0s''@;'; put 'put ''QT0rX1tsKzg+PjNdLFI9MHxTaihsLEQ9MHxhW2wrMTY+PjJdKSxBPjB8fEJyKDk0NjczLDk0NjgxLDI4OSw5NDY5MiksX1soTT1mKzE2fDApPj4zXT0rX1tNPj4zXSsxO2U6ZG97aWYocClmb3Iodz0xL0E7Oyl7aWYoIXApYnJlYWsgZTtmb3IobT0wfE1LKGMsMHxwTCgwfGh1KHApKSxwLEQp''@;'; put 'put ''LEE9K3RTKDB8aHUocCkpKncsbD0wOyEoKDB8bCk+PSgwfEQpKTspX1soRz1tKyhsPDwzKXwwKT4+M109K19bRz4+M10rICtfW1IrKGw8PDMpPj4zXSpBLGw9bCsxfDA7cD0wfGk3KHApfWVsc2V7Zm9yKE09MTw8RCxrPWwrMzZ8MCxBPTEvQSxsPTA7Oyl7aWYoKDB8bCk+PSgwfE0pKWJyZWFr''@;'; put 'put ''IGU7aWYoMHwobT0wfGFbKDB8YVtrPj4yXSkrKGw8PDIpPj4yXSkpe2lmKCgwfGFbbT4+Ml0pPD0wKWJyZWFrO2ZvcihiPTB8U2oobSxEKSx3PStfW20rOD4+M10qQSxwPTA7ISgoMHxwKT49KDB8RCkpOylfWyhHPWIrKHA8PDMpfDApPj4zXT0rX1tHPj4zXSsgK19bUisocDw8Myk+PjNdKncs''@;'; put 'put ''cD1wKzF8MDtTSyhtLGMsZil9bD1sKzF8MH1Ccig5NDcyOCw5NDY4MSwzMDcsOTQ2OTIpfX13aGlsZSgwKX1mdW5jdGlvbiBTaihsLGMpe2N8PTA7dmFyIGY9MDtsPTB8YVsoZj00OCsobHw9MCl8MCk+PjJdO2U6ZG97aWYoIWwpZm9yKGw9MHxRbihjPDwzKSxhW2Y+PjJdPWwsZj0wOzspe2lm''@;'; put 'put ''KCgwfGYpPj0oMHxjKSlicmVhayBlO19bbCsoZjw8Myk+PjNdPTAsZj1mKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBNSyhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgbT0wO3JldHVybihtPTB8YVsyNCsoMHxodShmfD0wKSk+PjJdKXx8KG09bCsoKDB8dnIocCxjKSk8''@;'; put 'put ''PDMpfDAsYVsyNCsoMHxodShmKSk+PjJdPW0sbT0wfGFbMjQrKDB8aHUoZikpPj4yXSksMHxtfWZ1bmN0aW9uIHJTKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgTSxELEE9MCx3PTAsYj0wLGs9MCxSPTAsRz0wLEs9MCxwZT0wO2lmKDAhPSgwfChNPTB8UW4oUj0obHw9MCk8''@;'; put 'put ''PDMpKSkmMCE9KDB8KEQ9MHxRbihSKSkpJjAhPSgwfChSPTB8UW4oUikpKSl7Zm9yKEE9MDs7KXtpZigoMHxBKT49KDB8bCkpe0E9MDticmVha31fW00rKEE8PDMpPj4zXT0rX1twKyhBPDwzKT4+M10sQT1BKzF8MH1mb3IoOzspe2lmKCgwfEEpPj0oMHxsKSl7dz0xO2JyZWFrfV9bRCsoQTw8''@;'; put 'put ''Myk+PjNdPStfW3ArKEE8PDMpPj4zXSxBPUErMXwwfWZvcig7ISgoMHx3KT49KDB8YykpOyl7Zm9yKGs9MHx2cih3LGwpLEE9MDshKCgwfEEpPj0oMHxsKSk7KV9bKEc9TSsoQTw8Myl8MCk+PjNdPShiPStfW0c+PjNdKTwoSz0rX1socGU9cCsoQStrPDwzKXwwKT4+M10pP2I6SyxfWyhHPUQr''@;'; put 'put ''KEE8PDMpfDApPj4zXT0oSz0rX1tHPj4zXSk+KGI9K19bcGU+PjNdKT9LOmIsQT1BKzF8MDt3PXcrMXwwfWZvcihiPStfW0Q+PjNdLStfW00+PjNdLEE9MDshKCgwfEEpPj0oMHxsKSk7KV9bUisoQTw8Myk+PjNdPS41KigrX1soRz1EKyhBPDwzKXwwKT4+M10rICtfWyhwZT1NKyhBPDwzKXww''@;'; put 'put ''KT4+M10pLGI9Yj4oSz0rX1tHPj4zXS0rX1twZT4+M10pP2I6SyxBPUErMXwwO0E9MHxBMWUobCxSLDA9PWI/NTJlLTc6LjUyKmIsZik7ZTpkb3tpZihtKWZvcih3PTA7Oyl7aWYoKDB8dyk+PSgwfGMpKWJyZWFrIGU7QT0wfEVLKEEscGU9cCsoKDB8dnIodyxsKSk8PDMpfDAsK19bbSsodzw8''@;'; put 'put ''Myk+PjNdLHcpLHc9dysxfDB9ZWxzZSBmb3Iodz0wOzspe2lmKCgwfHcpPj0oMHxjKSlicmVhayBlO0E9MHxFSyhBLHArKCgwfHZyKHcsbCkpPDwzKXwwLDEsdyksdz13KzF8MH19d2hpbGUoMCk7SHQoTSksSHQoRCksSHQoUil9ZWxzZSBIdChNKSxIdChEKSxIdChSKSxBPTA7cmV0dXJuIDB8''@;'; put 'put ''QX1mdW5jdGlvbiBBMWUobCxjLGYscCl7bHw9MCxjfD0wLGY9K2YscHw9MDt2YXIgQSx3LG09MDtmb3IoQT0wfFFuKDU2KSxhW0ErMTY+PjJdPWwsYVtBPj4yXT0wLHc9MHxRbihsPDwzKSxhW0ErMjA+PjJdPXcsbT0wOyEoKDB8bSk+PSgwfGwpKTspX1t3KyhtPDwzKT4+M109K19bYysobTw8''@;'; put 'put ''Myk+PjNdLG09bSsxfDA7cmV0dXJuIGY+MD8oX1tBKzI0Pj4zXT1mLF9bQSs4Pj4zXT0wLGFbQSszMj4+Ml09MCxhW0ErMzY+PjJdPTAsYVtBKzQwPj4yXT0wLGFbQSs0ND4+Ml09cCxhW0ErNDg+PjJdPTAsMHxBKTooQnIoOTQ4OTYsOTQ2ODEsNDEwLDk0OTA2KSwwKX1mdW5jdGlvbiBFSyhs''@;'; put 'put ''LGMsZixwKXtyZXR1cm4gZj0rZiwobHw9MCk/TWoobCxjfD0wLGYscHw9MCwwKTpsPTAsMHxsfWZ1bmN0aW9uIE1qKGwsYyxmLHAsbSl7Y3w9MCxmPStmLHB8PTAsbXw9MDt2YXIgbWUsYmUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxPZT0wO21lPTB8YVsoT2U9''@;'; put 'put ''MTYrKGx8PTApfDApPj4yXSxiZT0wfGFbbCs0ND4+Ml0sRD0wfGFbbD4+Ml07ZG97aWYoRCl7aWYoKDB8YmUpPD0oMHxtKSl7Zm9yKDB8YVtsKzM2Pj4yXSYmQnIoOTQ4ODEsOTQ2ODEsNTQxLDk0ODE1KSxhW2w+PjJdPUE9RCsxfDAsX1sodz1sKzh8MCk+PjNdPStfW3c+PjNdK2Ysdz1sKzMy''@;'; put 'put ''fDAsaz0rKDB8QSksTT0xLysoRCsyfDApLEE9MDshKCgwfEEpPj0oMHxtZSkpOylfWyhwZT0oMHxhW3c+PjJdKSsoQTw8Myl8MCk+PjNdPSgrX1twZT4+M10qaysgK19bYysoQTw8Myk+PjNdKSpNLEE9QSsxfDA7aWYoQT0wfHkxZShtZSxmLGMscCksYj0wfGFbKHc9bCs0MHwwKT4+Ml0pe2Fb''@;'; put 'put ''dz4+Ml09MHxQaChiLEEpO2JyZWFrfUJyKDk0ODkxLDk0NjgxLDU0Nyw5NDgxNSl9Zm9yKF9bKHc9bCs4fDApPj4zXT0rX1t3Pj4zXStmLHc9bCszMnwwLE09KygwfEQpLGs9MS8rKEQrMXwwKSxBPTA7ISgoMHxBKT49KDB8bWUpKTspX1socGU9KDB8YVt3Pj4yXSkrKEE8PDMpfDApPj4zXT0o''@;'; put 'put ''K19bcGU+PjNdKk0rICtfW2MrKEE8PDMpPj4zXSkqayxBPUErMXwwO3BlPWwrMzZ8MCxLPTE8PG1lO2U6ZG97aWYoISgwfGFbcGU+PjJdKSlmb3IoYVtwZT4+Ml09MHxRbihLPDwyKSxBPTA7Oyl7aWYoKDB8QSk+PSgwfEspKWJyZWFrIGU7YVsoMHxhW3BlPj4yXSkrKEE8PDIpPj4yXT0wLEE9''@;'; put 'put ''QSsxfDB9fXdoaWxlKDApOygwfChiPTB8eEsobWUsQT0wfGFbKFI9bCsyMHwwKT4+Ml0sYykpKTwoMHxLKSYoMHxiKT4tMXx8QnIoOTQ4MzcsOTQ2ODEsNTE1LDk0ODE1KSwodz0wfGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+Ml0pfHwodz0wfHcxZSgwfGFbT2U+PjJdLEEsLjUqK19bbCsyND4+''@;'; put 'put ''M10sYmUsYiksYVsoMHxhW3BlPj4yXSkrKGI8PDIpPj4yXT13LHc9MHxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdKSxwPTB8TWoodyxjLGYscCxHPW0rMXwwKSxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdPXAsMHxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdfHxCcig5NDg2MCw5NDY4MSw1''@;'; put 'put ''MTksOTQ4MTUpLEE9MHxhWyhjPWwrNDB8MCk+PjJdO2Rve2lmKDB8QSl7aWYoRD0wfHBMKDB8aHUoQSkpLDEhPSgwfGFbbD4+Ml0pJiZCcig5NDg3MSw5NDY4MSw1MjMsOTQ4MTUpLG09MHxraigwfGh1KDB8YVtjPj4yXSkpLGs9K3RTKDB8aHUoMHxhW2M+PjJdKSksKDB8KGI9MHx4SyhtZSx3''@;'; put 'put ''PTB8YVtSPj4yXSxtKSkpPCgwfEspJigwfGIpPi0xfHxCcig5NDgzNyw5NDY4MSw1MjcsOTQ4MTUpLChBPTB8YVsoMHxhW3BlPj4yXSkrKGI8PDIpPj4yXSl8fChBPTB8dzFlKDB8YVtPZT4+Ml0sdywuNSorX1tsKzI0Pj4zXSxiZSxiKSxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdPUEsQT0w''@;'; put 'put ''fGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+Ml0pLE9lPTB8TWooQSxtLGssRCxHKSxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdPU9lLDB8YVsoMHxhW3BlPj4yXSkrKGI8PDIpPj4yXSl7cmgoMHxhW2M+PjJdLDEwNiksYVtjPj4yXT0wO2JyZWFrfUJyKDk0ODYwLDk0NjgxLDUzMiw5NDgxNSl9''@;'; put 'put ''fXdoaWxlKDApO2FbbD4+Ml09MSsoMHxhW2w+PjJdKX1lbHNle2ZvcihhW2w+PjJdPTEsX1tsKzg+PjNdPWYsYj0wfFFuKG1lPDwzKSxhW2wrMzI+PjJdPWIsdz0wfGFbT2U+PjJdLEE9MDshKCgwfEEpPj0oMHx3KSk7KV9bYisoQTw8Myk+PjNdPStfW2MrKEE8PDMpPj4zXSxBPUErMXwwO2lm''@;'; put 'put ''KEE9MHx5MWUodyxmLGMscCksISgwfGFbKHc9bCs0MHwwKT4+Ml0pKXthW3c+PjJdPTB8VWkoQSk7YnJlYWt9QnIoOTQ4MDcsOTQ2ODEsNTAyLDk0ODE1KX19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiB5MWUobCxjLGYscCl7dmFyIG0sQTtmb3IobHw9MCxjPStjLGZ8PTAscHw9MCxB''@;'; put 'put ''PTB8UW4oMzIpLF9bQT4+M109YyxtPTB8UW4obDw8MyksYVtBKzg+PjJdPW0sX1tBKzE2Pj4zXT0rKDB8cCkscD0wOyEoKDB8cCk+PSgwfGwpKTspX1ttKyhwPDwzKT4+M109K19bZisocDw8Myk+PjNdLHA9cCsxfDA7cmV0dXJuIGFbQSsyND4+Ml09MCwwfEF9ZnVuY3Rpb24geEsobCxjLGYp''@;'; put 'put ''e2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wO2ZvcihtPTA7cD1sKy0xfDAsISgoMHxsKTw9MCk7KWw9cCxtPW08PDF8MSYhKCtfW2YrKHA8PDMpPj4zXS0rX1tjKyhwPDwzKT4+M108MCk7cmV0dXJuIDB8bX1mdW5jdGlvbiB3MWUobCxjLGYscCxtKXt2YXIgQSx3LGI7Zm9yKG18PTAsQT0w''@;'; put 'put ''fEExZShsfD0wLGN8PTAsZj0rZixwfD0wKSx3PTB8YVtBKzIwPj4yXSxiPS1mLHA9MCxjPW07ISgoMHxwKT49KDB8bCkpOylfWyhtPXcrKHA8PDMpfDApPj4zXT0rX1ttPj4zXSsoMD09KDEmY3wwKT9iOmYpLHA9cCsxfDAsYz0oMHxjKS8yfDA7cmV0dXJuIDB8QX1mdW5jdGlvbiBnTChsKXt2''@;'; put 'put ''YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtpZigwfChsfD0wKSl7aWYoYz0wfGFbbCsxNj4+Ml0sSHQoMHxhW2wrMjA+PjJdKSxIdCgwfGFbbCszMj4+Ml0pLEh0KDB8YVtsKzQ4Pj4yXSksMHwocD0wfGFbKEE9bCszNnwwKT4+Ml0pKXtmb3IobT0xPDxjLGY9MCxjPXA7ISgoMHxmKT49KDB8bSkp''@;'; put 'put ''OylnTCgwfGFbYysoZjw8Mik+PjJdKSxmPWYrMXwwLGM9MHxhW0E+PjJdO0h0KGMpfXJoKDB8YVtsKzQwPj4yXSwxMDYpLEh0KGwpfX1mdW5jdGlvbiBhZyhsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJl''@;'; put 'put ''PTAsT2U9MDtlOmRve2lmKGwpe2ZvcihNPTB8YVtsKzIwPj4yXSxEPTB8YVtsKzI0Pj4yXSxmPTB8YVtsKzg+PjJdLFI9MHxhW2w+PjJdLHA9MHxhW2wrND4+Ml0sdz1sKzE2fDAsMSE9KDB8YVtsKzMyPj4yXSkmJkJyKDk0OTE5LDk0OTQzLDc2LDk0OTU4KSxjPTB8WGgocCxSLGYsMHxhW3c+''@;'; put 'put ''PjJdLDEpLGFbYys4Pj4yXT1mLEc9MHxhW2MrMjA+PjJdLGs9MHxhW2MrMjQ+PjJdLGY9MDs7KXtpZigoMHxmKT4oMHxwKSl7Zj0wO2JyZWFrfWFbRysoZjw8Mik+PjJdPTAsZj1mKzF8MH10OmZvcig7Oyl7aWYoKDB8Zik+PSgwfFIpKXtmPTA7YnJlYWt9Zm9yKEE9TSsoKG09ZisxfDApPDwy''@;'; put 'put ''KXwwLGY9MHxhW00rKGY8PDIpPj4yXTs7KXtpZigoMHxmKT49KDB8YVtBPj4yXSkpe2Y9bTtjb250aW51ZSB0fWFbKGI9RysoMSsoMHxhW0QrKGY8PDIpPj4yXSk8PDIpfDApPj4yXT0xKygwfGFbYj4+Ml0pLGY9ZisxfDB9fWZvcig7ISgoMHxmKT49KDB8cCkpOylhWyhBPUcrKChiPWYrMXww''@;'; put 'put ''KTw8Mil8MCk+PjJdPSgwfGFbQT4+Ml0pKygwfGFbRysoZjw8Mik+PjJdKSxmPWI7dDpkb3tzd2l0Y2goMHxhW3c+PjJdKXtjYXNlIDE6QT0wfGFbbCsyOD4+Ml0sbD0wfGFbYysyOD4+Ml0sbT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8UikpYnJlYWsgdDtmb3IoYj1NKygodz1tKzF8MCk8''@;'; put 'put ''PDIpfDAsZj0wfGFbTSsobTw8Mik+PjJdOzspe2lmKCgwfGYpPj0oMHxhW2I+PjJdKSl7bT13O2NvbnRpbnVlIG59YVtrKyhhW0crKGFbKG1lPUQrKGY8PDIpfDApPj4yXTw8Mik+PjJdPDwyKT4+Ml09bSxwZT0rX1tBKyhmPDwzKT4+M10sYVsobWU9RysoYVttZT4+Ml08PDIpfDApPj4yXT0x''@;'; put 'put ''KyhLPTB8YVttZT4+Ml0pLF9bbCsoSzw8Myk+PjNdPXBlLGY9ZisxfDB9fWNhc2UgMjpBPTB8YVtsKzI4Pj4yXSxsPTB8YVtjKzI4Pj4yXSxtPTA7bjpmb3IoOzspe2lmKCgwfG0pPj0oMHxSKSlicmVhayB0O2ZvcihiPU0rKCh3PW0rMXwwKTw8Mil8MCxmPTB8YVtNKyhtPDwyKT4+Ml07Oyl7''@;'; put 'put ''aWYoKDB8Zik+PSgwfGFbYj4+Ml0pKXttPXc7Y29udGludWUgbn1hW2srKGFbRysoYVsobWU9RCsoZjw8Mil8MCk+PjJdPDwyKT4+Ml08PDIpPj4yXT1tLF9bbCsoKGJlPShLPTB8YVsobWU9RysoYVttZT4+Ml08PDIpfDApPj4yXSk8PDEpPDwzKT4+M109K19bQSsoKE9lPWY8PDEpPDwzKT4+''@;'; put 'put ''M10sX1tsKygoMXxiZSk8PDMpPj4zXT0rX1tBKygoMXxPZSk8PDMpPj4zXSxhW21lPj4yXT1LKzEsZj1mKzF8MH19Y2FzZSA0OkE9MHxhW2wrMjg+PjJdLGw9MHxhW2MrMjg+PjJdLG09MDtuOmZvcig7Oyl7aWYoKDB8bSk+PSgwfFIpKWJyZWFrIHQ7Zm9yKGI9TSsoKHc9bSsxfDApPDwyKXww''@;'; put 'put ''LGY9MHxhW00rKG08PDIpPj4yXTs7KXtpZigoMHxmKT49KDB8YVtiPj4yXSkpe209dztjb250aW51ZSBufWFbaysoYVtHKyhhWyhtZT1EKyhmPDwyKXwwKT4+Ml08PDIpPj4yXTw8Mik+PjJdPW0sYmU9MHxhW0ErKGY8PDIpPj4yXSxhWyhtZT1HKyhhW21lPj4yXTw8Mil8MCk+PjJdPTErKE9l''@;'; put 'put ''PTB8YVttZT4+Ml0pLGFbbCsoT2U8PDIpPj4yXT1iZSxmPWYrMXwwfX1jYXNlIDg6bT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8UikpYnJlYWsgdDtmb3IobD1NKygoQT1tKzF8MCk8PDIpfDAsZj0wfGFbTSsobTw8Mik+PjJdOzspe2lmKCgwfGYpPj0oMHxhW2w+PjJdKSl7bT1BO2NvbnRp''@;'; put 'put ''bnVlIG59YVsoYmU9RysoYVtEKyhmPDwyKT4+Ml08PDIpfDApPj4yXT0xKyhPZT0wfGFbYmU+PjJdKSxhW2srKE9lPDwyKT4+Ml09bSxmPWYrMXwwfX1kZWZhdWx0OkphKGMpLGM9MDticmVhayBlfX13aGlsZSgwKTtmb3IoO2Y9cCstMXwwLCEoKDB8cCk8PTApOylhW0crKHA8PDIpPj4yXT1h''@;'; put 'put ''W0crKGY8PDIpPj4yXSxwPWY7YVtHPj4yXT0wfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gSmEobCl7dmFyIGM9MDswfChsfD0wKSYmKDB8KGM9MHxhW2wrMjA+PjJdKSYmSHQoYyksMHwoYz0wfGFbbCsyND4+Ml0pJiZIdChjKSxIdCgwfGFbbCsyOD4+Ml0pLEh0KGwp''@;'; put 'put ''KX1mdW5jdGlvbiBYaChsLGMsZixwLG0pe3JldHVybiBmfD0wLG18PTAsbD0wfGIxZShsfD0wLGN8PTAscHw9MCwwfGZ1bmN0aW9uIHBBZShsKXtzd2l0Y2goMHwobHw9MCkpe2Nhc2UgMTpsPTg7YnJlYWs7Y2FzZSAyOmw9MTY7YnJlYWs7Y2FzZSA0Omw9NDticmVhaztkZWZhdWx0Omw9MH1y''@;'; put 'put ''ZXR1cm4gMHxsfShwKSxtKSwoMHxmKT4wJiZfMWUobCxmKSwwfGx9ZnVuY3Rpb24gYjFlKGwsYyxmLHAsbSl7dmFyIEE7cmV0dXJuIGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBPTB8UW4oNDQpLGFbQT4+Ml09bCxhW0ErND4+Ml09YyxhW0ErOD4+Ml09MCxhW0ErMTI+PjJdPTAsYVtBKzE2''@;'; put 'put ''Pj4yXT1mLGFbQSs0MD4+Ml09cCxsPTI9PSgwfG0pPzA6MHxRbig0KyhsPDwyKXwwKSxhW0ErMjA+PjJdPWwsYVtBKzI0Pj4yXT0wLGFbQSsyOD4+Ml09MCxhW0ErMzI+PjJdPW0sYVtBKzM2Pj4yXT0wLDB8QX1mdW5jdGlvbiBfMWUobCxjKXtjfD0wO3ZhciBwLG0sdyxmPTAsQT0wO3JldHVy''@;'; put 'put ''biB3PTB8YVszMisobHw9MCk+PjJdLGFbKG09bCsyOHwwKT4+Ml09MCxwPTB8UW4oZj1jPDwyKSwyIT0oMHx3KT8oYVtsKzI0Pj4yXT1wLDAhPSgwfGMpJigwfChmPTB8YVtsKzQwPj4yXSkpPjAmJihBPTQpKTooYVtsKzIwPj4yXT1wLGFbbCsyND4+Ml09MHxRbihmKSxmPTB8YVtsKzQwPj4y''@;'; put 'put ''XSxBPTQpLDQ9PSgwfEEpJiYoYVttPj4yXT0wfFFuKDB8dnIoZixjKSkpLGFbbCsxMj4+Ml09YywwfGx9ZnVuY3Rpb24gczgobCxjKXtyZXR1cm4gMHxLMyhsfD0wLGN8PTApP2M9MHxpUyhsKTooYz0wfGFnKGwpKT8obD0wfG1MKGwsYyksSmEoYyksYVsoYz1sKzM2fDApPj4yXT0zfGFbYz4+''@;'; put 'put ''Ml0sYz1sKTpjPTAsMHxjfWZ1bmN0aW9uIEszKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wO2lmKGx8PTApaWYoMSE9KDB8YVtsKzMyPj4yXSkmJkJyKDk0OTE5LDk0OTQzLDE4Nyw5''@;'; put 'put ''NTA3NCksMD09KDImKGY9MHxhWyhiZT1sKzM2fDApPj4yXSl8MCkmJjA9PSgxJmZ8MCl8MV4oSz0wIT0oMHxjKSkpaWYoKDB8YVtsPj4yXSk9PSgwfGFbbCs0Pj4yXSkmJjAhPSgwfChPZT0wfGFnKGwpKSkpe2ZvcihrPTB8YVtsKzIwPj4yXSxNPTB8YVtsKzI0Pj4yXSxEPTB8YVtPZSsyMD4+''@;'; put 'put ''Ml0sUj0wfGFbT2UrMjQ+PjJdLHBlPTB8UW4oKEc9MHxhW2w+PjJdKTw8MiksYz0wOyEoKDB8Yyk+PSgwfEcpKTspYVtwZSsoYzw8Mik+PjJdPS0xLGM9YysxfDA7ZTpkb3tzd2l0Y2goMHwoSz84OjB8YVtsKzE2Pj4yXSkpe2Nhc2UgMTpmb3IoQT0wfGFbbCsyOD4+Ml0sdz0wfGFbT2UrMjg+''@;'; put 'put ''PjJdLGM9MDs7KXtpZigoMHxjKT4oMHxHKSl7Zj0wO2JyZWFrfWlmKCgwfGFbaysoYzw8Mik+PjJdKSE9KDB8YVtEKyhjPDwyKT4+Ml0pKXtjPTA7YnJlYWsgZX1jPWMrMXwwfXQ6Zm9yKDs7KXtpZigoMHxmKT49KDB8Rykpe21lPTU0O2JyZWFrIGV9Zm9yKGw9aysoKG09ZisxfDApPDwyKXww''@;'; put 'put ''LGM9MHxhWyhwPWsrKGY8PDIpfDApPj4yXTshKCgwfGMpPj0oMHxhW2w+PjJdKSk7KWFbcGUrKGFbTSsoYzw8Mik+PjJdPDwyKT4+Ml09YyxjPWMrMXwwO2ZvcihsPTB8YVtEKyhtPDwyKT4+Ml0sZj1jPTB8YVtEKyhmPDwyKT4+Ml07ISgoMHxmKT49KDB8bCkpOyl7aWYoKDB8YVtwZSsoYVtS''@;'; put 'put ''KyhmPDwyKT4+Ml08PDIpPj4yXSk8KDB8YVtwPj4yXSkpe2M9MDticmVhayBlfWY9ZisxfDB9Zm9yKDs7KXtpZigoMHxjKT49KDB8bCkpe2Y9bTtjb250aW51ZSB0fWlmKCgoTGU9K19bdysoYzw8Myk+PjNdLStfW0ErKGFbcGUrKGFbUisoYzw8Mik+PjJdPDwyKT4+Ml08PDMpPj4zXSk+PTA/''@;'; put 'put ''TGU6LUxlKT4xZS03KXtjPTA7YnJlYWsgZX1jPWMrMXwwfX1jYXNlIDI6Zm9yKHc9MHxhW2wrMjg+PjJdLGI9MHxhW09lKzI4Pj4yXSxjPTA7Oyl7aWYoKDB8Yyk+KDB8Rykpe2Y9MDticmVha31pZigoMHxhW2srKGM8PDIpPj4yXSkhPSgwfGFbRCsoYzw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9''@;'; put 'put ''Yz1jKzF8MH10OmZvcig7Oyl7aWYoKDB8Zik+PSgwfEcpKXttZT01NDticmVhayBlfWZvcihsPWsrKChBPWYrMXwwKTw8Mil8MCxjPTB8YVsobT1rKyhmPDwyKXwwKT4+Ml07ISgoMHxjKT49KDB8YVtsPj4yXSkpOylhW3BlKyhhW00rKGM8PDIpPj4yXTw8Mik+PjJdPWMsYz1jKzF8MDtmb3Io''@;'; put 'put ''cD0wfGFbRCsoQTw8Mik+PjJdLGM9Zj0wfGFbRCsoZjw8Mik+PjJdOzspe2lmKCgwfGMpPj0oMHxwKSl7Yz1mO2JyZWFrfWlmKCgwfGFbcGUrKGFbUisoYzw8Mik+PjJdPDwyKT4+Ml0pPCgwfGFbbT4+Ml0pKXtjPTA7YnJlYWsgZX1jPWMrMXwwfWZvcig7Oyl7aWYoKDB8Yyk+PSgwfHApKXtm''@;'; put 'put ''PUE7Y29udGludWUgdH1pZigoKExlPStfW2IrKChmPWM8PDEpPDwzKT4+M10tK19bdysoKGw9YVtwZSsoYVtSKyhjPDwyKT4+Ml08PDIpPj4yXTw8MSk8PDMpPj4zXSk+PTA/TGU6LUxlKT4xZS03KXtjPTA7YnJlYWsgZX1pZigoKExlPStfW2IrKCgxfGYpPDwzKT4+M10tK19bdysoKDF8bCk8''@;'; put 'put ''PDMpPj4zXSk+PTA/TGU6LUxlKT4xZS03KXtjPTA7YnJlYWsgZX1jPWMrMXwwfX1jYXNlIDQ6bT0wfGFbbCsyOD4+Ml0sQT0wfGFbT2UrMjg+PjJdLGM9MDt0OmZvcig7Oyl7aWYoKDB8Yyk+PSgwfEcpKXttZT01NDticmVhayBlfWZvcihsPWsrKCh3PWMrMXwwKTw8Mil8MCxmPTB8YVsocD1r''@;'; put 'put ''KyhjPDwyKXwwKT4+Ml07ISgoMHxmKT49KDB8YVtsPj4yXSkpOylhW3BlKyhhW00rKGY8PDIpPj4yXTw8Mik+PjJdPWYsZj1mKzF8MDtmb3IobD0wfGFbRCsodzw8Mik+PjJdLGY9Yz0wfGFbRCsoYzw8Mik+PjJdOyEoKDB8Zik+PSgwfGwpKTspe2lmKCgwfGFbcGUrKGFbUisoZjw8Mik+PjJd''@;'; put 'put ''PDwyKT4+Ml0pPCgwfGFbcD4+Ml0pKXtjPTA7YnJlYWsgZX1mPWYrMXwwfWZvcig7Oyl7aWYoKDB8Yyk+PSgwfGwpKXtjPXc7Y29udGludWUgdH1pZigoMHxhW0ErKGM8PDIpPj4yXSkhPSgwfGFbbSsoYVtwZSsoYVtSKyhjPDwyKT4+Ml08PDIpPj4yXTw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9''@;'; put 'put ''Yz1jKzF8MH19Y2FzZSA4Omw9MDt0OmZvcig7Oyl7aWYoKDB8bCk+PSgwfEcpKXttZT01NDticmVhayBlfWZvcihmPWsrKChtPWwrMXwwKTw8Mil8MCxjPTB8YVsocD1rKyhsPDwyKXwwKT4+Ml07ISgoMHxjKT49KDB8YVtmPj4yXSkpOylhW3BlKyhhW00rKGM8PDIpPj4yXTw8Mik+PjJdPWMs''@;'; put 'put ''Yz1jKzF8MDtmb3IoZj0wfGFbRCsobTw8Mik+PjJdLGM9MHxhW0QrKGw8PDIpPj4yXTs7KXtpZigoMHxjKT49KDB8Zikpe2w9bTtjb250aW51ZSB0fWlmKCgwfGFbcGUrKGFbUisoYzw8Mik+PjJdPDwyKT4+Ml0pPCgwfGFbcD4+Ml0pKXtjPTA7YnJlYWsgZX1jPWMrMXwwfX1kZWZhdWx0OmM9''@;'; put 'put ''MH19d2hpbGUoMCk7NTQ9PSgwfG1lKSYmKGY9MHxhW2JlPj4yXSxLP2M9MTooYVtiZT4+Ml09MnxmLGM9MyksYVtiZT4+Ml09Y3xmLGM9MSksSHQocGUpLEphKE9lKX1lbHNlIGM9MDtlbHNlIGM9MTtlbHNlIGM9MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIGlTKGwpe3ZhciBjPTAsZj0wLHA9MCxt''@;'; put 'put ''PTA7cmV0dXJuKGx8PTApPyhjPTB8QzFlKDB8YVtsPj4yXSwwfGFbbCs0Pj4yXSwwfGFbKHA9bCs4fDApPj4yXSwwfGFbbCsxNj4+Ml0sMHxhWyhtPWwrNDB8MCk+PjJdLDB8YVtsKzMyPj4yXSksRG8oMHxhW2MrMjA+PjJdLDB8YVsoZj1sKzIwfDApPj4yXSw0KyhhW2w+PjJdPDwyKXwwKSxE''@;'; put 'put ''bygwfGFbYysyND4+Ml0sMHxhW2wrMjQ+PjJdLGFbKDB8YVtmPj4yXSkrKGFbbD4+Ml08PDIpPj4yXTw8MnwwKSwwfChmPTB8YVtsKzI4Pj4yXSkmJkRvKDB8YVtjKzI4Pj4yXSwwfGYsMHx2cigwfGFbcD4+Ml0sMHxhW20+PjJdKSksYVtjKzM2Pj4yXT1hW2wrMzY+PjJdLGFbYys4Pj4yXT1h''@;'; put 'put ''W3A+PjJdKTpjPTAsMHxjfWZ1bmN0aW9uIG1MKGwsYyl7dmFyIEcsSyxtZSxiZSxPZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MCxMZT0wLEJlPTA7aWYoSz0wfGFbMjArKGx8PTApPj4yXSxtZT0wfGFbbCsyND4+Ml0sYmU9MHxhWzIwKyhjfD0wKT4+Ml0s''@;'; put 'put ''T2U9MHxhW2MrMjQ+PjJdLDAhPSgwfGwpJjAhPSgwfGMpfHxCcig5NDk4MSw5NDk0Myw5NzMsOTQ5ODgpLDE9PSgwfChwZT0wfGFbbCszMj4+Ml0pKSYmKDB8cGUpPT0oMHxhW2MrMzI+PjJdKXx8QnIoOTUwMDUsOTQ5NDMsOTc0LDk0OTg4KSwoMHwoZj0wfGFbKHA9bCsxNnwwKT4+Ml0pKSE9''@;'; put 'put ''KDB8YVtjKzE2Pj4yXSkmJkJyKDk1MDU1LDk0OTQzLDk3NSw5NDk4OCksbT0wfGFbbCs0Pj4yXSwoMHwoRz0wfGFbbD4+Ml0pKT09KDB8YVtjPj4yXSkmJigwfG0pPT0oMHxhW2MrND4+Ml0pJiYwfChMZT0wfFhoKEcsbSwoMHxhW2MrOD4+Ml0pKygwfGFbbCs4Pj4yXSl8MCxmLDEpKSl7Zm9y''@;'; put 'put ''KEQ9MHxhW0xlKzIwPj4yXSxSPTB8YVtMZSsyND4+Ml0scGU9MHxRbihtPDwyKSxmPTA7ISgoMHxmKT49KDB8bSkpOylhW3BlKyhmPDwyKT4+Ml09LTEsZj1mKzF8MDthW0Q+PjJdPTA7ZTpkb3tzd2l0Y2goMHxhW3A+PjJdKXtjYXNlIDE6Zm9yKE09MHxhW2wrMjg+PjJdLHc9MHxhW2MrMjg+''@;'; put 'put ''PjJdLGI9MHxhW0xlKzI4Pj4yXSxmPTAsbT0wOzspe2lmKCgwfG0pPj0oMHxHKSlicmVhayBlO2ZvcihwPUsrKChrPW0rMXwwKTw8Mil8MCxsPTB8YVtLKyhtPDwyKT4+Ml07ISgoMHxsKT49KDB8YVtwPj4yXSkpOylhW3BlKyhhWyhBPW1lKyhsPDwyKXwwKT4+Ml08PDIpPj4yXT1mLGFbUiso''@;'; put 'put ''Zjw8Mik+PjJdPWFbQT4+Ml0sX1tiKyhmPDwzKT4+M109K19bTSsobDw8Myk+PjNdLGw9bCsxfDAsZj1mKzF8MDtmb3IoYz1iZSsoazw8Mil8MCxBPUQrKG08PDIpfDAsbT0wfGFbYmUrKG08PDIpPj4yXTshKCgwfG0pPj0oMHxhW2M+PjJdKSk7KSgwfChwPTB8YVtwZSsoKGw9MHxhW09lKyht''@;'; put 'put ''PDwyKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW0E+PjJdKT8oYVtSKyhmPDwyKT4+Ml09bCxfW2IrKGY8PDMpPj4zXT0rX1t3KyhtPDwzKT4+M10sZj1mKzF8MCk6X1socD1iKyhwPDwzKXwwKT4+M109K19bcD4+M10rICtfW3crKG08PDMpPj4zXSxtPW0rMXwwO2FbRCsoazw8Mik+PjJdPWYsbT1r''@;'; put 'put ''fWNhc2UgMjpmb3IoTT0wfGFbbCsyOD4+Ml0saz0wfGFbYysyOD4+Ml0sdz0wfGFbTGUrMjg+PjJdLG09MCxmPTA7Oyl7aWYoKDB8bSk+PSgwfEcpKWJyZWFrIGU7Zm9yKHA9SysoKGI9bSsxfDApPDwyKXwwLGw9MHxhW0srKG08PDIpPj4yXTshKCgwfGwpPj0oMHxhW3A+PjJdKSk7KWFbcGUr''@;'; put 'put ''KGFbKGM9bWUrKGw8PDIpfDApPj4yXTw8Mik+PjJdPWYsYVtSKyhmPDwyKT4+Ml09YVtjPj4yXSxfW3crKChBPWY8PDEpPDwzKT4+M109K19bTSsoKGM9bDw8MSk8PDMpPj4zXSxfW3crKCgxfEEpPDwzKT4+M109K19bTSsoKDF8Yyk8PDMpPj4zXSxsPWwrMXwwLGY9ZisxfDA7Zm9yKGM9YmUr''@;'; put 'put ''KGI8PDIpfDAsQT1EKyhtPDwyKXwwLG09MHxhW2JlKyhtPDwyKT4+Ml07ISgoMHxtKT49KDB8YVtjPj4yXSkpOykoMHwocD0wfGFbcGUrKChsPTB8YVtPZSsobTw8Mik+PjJdKTw8Mik+PjJdKSk8KDB8YVtBPj4yXSk/KGFbUisoZjw8Mik+PjJdPWwsX1t3KygocD1mPDwxKTw8Myk+PjNdPStf''@;'; put 'put ''W2srKChsPW08PDEpPDwzKT4+M10sX1t3KygoMXxwKTw8Myk+PjNdPStfW2srKCgxfGwpPDwzKT4+M10sZj1mKzF8MCk6KF9bKEJlPXcrKChwPDw9MSk8PDMpfDApPj4zXT0rX1tCZT4+M10rICtfW2srKChsPW08PDEpPDwzKT4+M10sX1socD13KygoMXxwKTw8Myl8MCk+PjNdPStfW3A+PjNd''@;'; put 'put ''KyArX1trKygoMXxsKTw8Myk+PjNdKSxtPW0rMXwwO2FbRCsoYjw8Mik+PjJdPWYsbT1ifWNhc2UgNDpmb3IoTT0wfGFbbCsyOD4+Ml0sdz0wfGFbYysyOD4+Ml0sYj0wfGFbTGUrMjg+PjJdLG09MCxmPTA7Oyl7aWYoKDB8bSk+PSgwfEcpKWJyZWFrIGU7Zm9yKHA9SysoKGs9bSsxfDApPDwy''@;'; put 'put ''KXwwLGw9MHxhW0srKG08PDIpPj4yXTshKCgwfGwpPj0oMHxhW3A+PjJdKSk7KWFbcGUrKGFbKEJlPW1lKyhsPDwyKXwwKT4+Ml08PDIpPj4yXT1mLGFbUisoZjw8Mik+PjJdPWFbQmU+PjJdLGFbYisoZjw8Mik+PjJdPWFbTSsobDw8Mik+PjJdLGw9bCsxfDAsZj1mKzF8MDtmb3IoYz1iZSso''@;'; put 'put ''azw8Mil8MCxBPUQrKG08PDIpfDAsbT0wfGFbYmUrKG08PDIpPj4yXTshKCgwfG0pPj0oMHxhW2M+PjJdKSk7KSgwfChwPTB8YVtwZSsoKGw9MHxhW09lKyhtPDwyKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW0E+PjJdKT8oYVtSKyhmPDwyKT4+Ml09bCxhW2IrKGY8PDIpPj4yXT1hW3crKG08PDIp''@;'; put 'put ''Pj4yXSxmPWYrMXwwKTphWyhCZT1iKyhwPDwyKXwwKT4+Ml09KDB8YVtCZT4+Ml0pKygwfGFbdysobTw8Mik+PjJdKSxtPW0rMXwwO2FbRCsoazw8Mik+PjJdPWYsbT1rfWNhc2UgODpmb3IoZj0wLG09MDs7KXtpZigoMHxtKT49KDB8RykpYnJlYWsgZTtmb3IocD1LKygodz1tKzF8MCk8PDIp''@;'; put 'put ''fDAsbD0wfGFbSysobTw8Mik+PjJdOyEoKDB8bCk+PSgwfGFbcD4+Ml0pKTspYVtwZSsoYVsoQmU9bWUrKGw8PDIpfDApPj4yXTw8Mik+PjJdPWYsYVtSKyhmPDwyKT4+Ml09YVtCZT4+Ml0sZj1mKzF8MCxsPWwrMXwwO2ZvcihjPWJlKyh3PDwyKXwwLEE9RCsobTw8Mil8MCxwPTB8YVtiZSso''@;'; put 'put ''bTw8Mik+PjJdOyEoKDB8cCk+PSgwfGFbYz4+Ml0pKTspKDB8YVtwZSsoKGw9MHxhW09lKyhwPDwyKT4+Ml0pPDwyKT4+Ml0pPCgwfGFbQT4+Ml0pJiYoYVtSKyhmPDwyKT4+Ml09bCxmPWYrMXwwKSxwPXArMXwwO2FbRCsodzw8Mik+PjJdPWYsbT13fWRlZmF1bHQ6Zj0wfX13aGlsZSgwKTty''@;'; put 'put ''ZXR1cm4gYVtMZSs4Pj4yXT1mLEh0KHBlKSwwfExlfXJldHVybiAwfWZ1bmN0aW9uIEMxZShsLGMsZixwLG0sQSl7cmV0dXJuIGZ8PTAsbD0wfGIxZShsfD0wLGN8PTAscHw9MCxtfD0wLEF8PTApLCgwfGYpPjAmJl8xZShsLGYpLDB8bH1mdW5jdGlvbiBFaihsLGMpe3ZhciBmPTA7cmV0dXJu''@;'; put 'put ''IDB8SzMobHw9MCxjfD0wKT8oYz0wfGlTKGwpLGY9NSk6KGM9MHxhZyhsKSk/KGY9MHxtTChsLGMpLEphKGMpLGFbKGM9ZiszNnwwKT4+Ml09M3xhW2M+PjJdLGM9ZixmPTUpOmM9MCw1PT0oMHxmKSYmKGM9MHxsZyhjKSksMHxjfWZ1bmN0aW9uIGxnKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0w''@;'; put 'put ''LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtlOmRve2lmKGwpe009MHxhW2wrMjQ+PjJdLGY9MHxhWyhrPTB8YVtsKzIwPj4yXSk+PjJdO3Q6ZG97c3dpdGNoKDB8YVtsKzE2Pj4yXSl7Y2FzZSAxOmZvcihiPTB8YVtsKzI4Pj4yXSx3PTAsYz0wOzspe2lmKCgwfHcpPj0oMHxhW2w+PjJd''@;'; put 'put ''KSlicmVhayB0O2ZvcihBPWsrKChtPXcrMXwwKTw8Mil8MDshKCgwfGYpPj0oMHwocD0wfGFbQT4+Ml0pKSk7KSgwfChwPTB8YVtNKyhmPDwyKT4+Ml0pKSE9KDB8dykmJihhW00rKGM8PDIpPj4yXT1wLF9bYisoYzw8Myk+PjNdPStfW2IrKGY8PDMpPj4zXSxjPWMrMXwwKSxmPWYrMXwwO2Fb''@;'; put 'put ''QT4+Ml09Yyx3PW0sZj1wfWNhc2UgMjpmb3IoYj0wfGFbbCsyOD4+Ml0sdz0wLGM9MDs7KXtpZigoMHx3KT49KDB8YVtsPj4yXSkpYnJlYWsgdDtmb3IoQT1rKygobT13KzF8MCk8PDIpfDA7ISgoMHxmKT49KDB8KHA9MHxhW0E+PjJdKSkpOykoMHwocD0wfGFbTSsoZjw8Mik+PjJdKSkhPSgw''@;'; put 'put ''fHcpJiYoYVtNKyhjPDwyKT4+Ml09cCxfW2IrKChwPWM8PDEpPDwzKT4+M109K19bYisoKEQ9Zjw8MSk8PDMpPj4zXSxfW2IrKCgxfHApPDwzKT4+M109K19bYisoKDF8RCk8PDMpPj4zXSxjPWMrMXwwKSxmPWYrMXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWNhc2UgNDpmb3IoYj0wfGFbbCsyOD4+''@;'; put 'put ''Ml0sdz0wLGM9MDs7KXtpZigoMHx3KT49KDB8YVtsPj4yXSkpYnJlYWsgdDtmb3IoQT1rKygobT13KzF8MCk8PDIpfDA7ISgoMHxmKT49KDB8KHA9MHxhW0E+PjJdKSkpOykoMHwocD0wfGFbTSsoZjw8Mik+PjJdKSkhPSgwfHcpJiYoYVtNKyhjPDwyKT4+Ml09cCxhW2IrKGM8PDIpPj4yXT1h''@;'; put 'put ''W2IrKGY8PDIpPj4yXSxjPWMrMXwwKSxmPWYrMXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWNhc2UgODpmb3Iodz0wLGM9MDs7KXtpZigoMHx3KT49KDB8YVtsPj4yXSkpYnJlYWsgdDtmb3IoQT1rKygobT13KzF8MCk8PDIpfDA7ISgoMHxmKT49KDB8KHA9MHxhW0E+PjJdKSkpOykoMHwocD0wfGFb''@;'; put 'put ''TSsoZjw8Mik+PjJdKSkhPSgwfHcpJiYoYVtNKyhjPDwyKT4+Ml09cCxjPWMrMXwwKSxmPWYrMXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWRlZmF1bHQ6bD0wO2JyZWFrIGV9fXdoaWxlKDApO2FbbCs4Pj4yXT1jfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gazFlKGwpe3Jl''@;'; put 'put ''dHVybiAyPT0oMHxhWzMyKyhsfD0wKT4+Ml0pPzB8c2coMHxhW2wrOD4+Ml0sMHxhW2w+PjJdLDB8YVtsKzQ+PjJdLDB8YVtsKzIwPj4yXSwwfGFbbCsyND4+Ml0sMHxhW2wrMjg+PjJdLDB8YVtsKzE2Pj4yXSwwfGFbbCs0MD4+Ml0pOihCcig5NTEwMCw5NDk0Myw4MDMsOTUxMjYpLDApfWZ1''@;'; put 'put ''bmN0aW9uIHNnKGwsYyxmLHAsbSxBLHcsYil7cmV0dXJuIDB8ZnVuY3Rpb24gdDUobCxjLGYscCxtLEEsdyxiLGspe3B8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wO3ZhciBPZSxMZSxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wO2ZvcigoMHwobHw9MCkpPi0xJigwfChj''@;'; put 'put ''fD0wKSk+MCYoMHwoZnw9MCkpPjB8fEJyKDk1MTYyLDk0OTQzLDg0Myw5NTE4OCksKGI9MHxDMWUoYyxmLGwsdyxiLDEpKXx8QnIoOTUyMzMsOTQ5NDMsODQ3LDk1MTg4KSxMZT0wfGFbYisyMD4+Ml0sT2U9MHxhW2IrMjQ+PjJdLEQ9YysxfDAsTT0wOygwfE0pIT0oMHxEKTspYVtMZSsoTTw8''@;'; put 'put ''Mik+PjJdPTAsTT1NKzF8MDtlOmRve3N3aXRjaCgwfHcpe2Nhc2UgMTpmb3Iodz0wfGFbYisyOD4+Ml0sTT0wOzspe2lmKCgwfE0pPj0oMHxsKSl7cGU9MDticmVha31pZighKCgwfChEPTB8YVtwKyhNPDwyKT4+Ml0pKT4tMSYoMHxEKTwoMHxjKSkpe2JlPTEzO2JyZWFrfWlmKCEoKDB8KG1l''@;'; put 'put ''PTB8YVttKyhNPDwyKT4+Ml0pKT4tMSYoMHxtZSk8KDB8ZikpKXtiZT0xMzticmVha31hWyhtZT1MZSsoRCsxPDwyKXwwKT4+Ml09MSsoMHxhW21lPj4yXSksTT1NKzF8MH1mb3IoMTM9PSgwfGJlKSYmQnIoMTM4Mzk0LDk0OTQzLDg2Miw5NTE4OCk7Oyl7aWYoKDB8cGUpPT0oMHxjKSl7TT0w''@;'; put 'put ''O2JyZWFrfWFbKGY9TGUrKChiZT1wZSsxfDApPDwyKXwwKT4+Ml09KDB8YVtmPj4yXSkrKDB8YVtMZSsocGU8PDIpPj4yXSkscGU9YmV9Zm9yKDsoMHxNKSE9KDB8bCk7KV9bdysoKGJlPTB8YVsobWU9TGUrKGFbcCsoTTw8Mik+PjJdPDwyKXwwKT4+Ml0pPDwzKT4+M109K19bQSsoTTw8Myk+''@;'; put 'put ''PjNdLGY9MHxhW20rKE08PDIpPj4yXSxhW21lPj4yXT1iZSsxLGFbT2UrKGJlPDwyKT4+Ml09ZixNPU0rMXwwO2Zvcig7Oyl7aWYoKDB8Yyk8PTApYnJlYWsgZTthW0xlKyhjPDwyKT4+Ml09YVtMZSsoKG09YystMXwwKTw8Mik+PjJdLGM9bX1jYXNlIDI6Zm9yKHc9MHxhW2IrMjg+PjJdLE09''@;'; put 'put ''MDs7KXtpZigoMHxNKT49KDB8bCkpe21lPTA7YnJlYWt9aWYoISgoMHwoRD0wfGFbcCsoTTw8Mik+PjJdKSk+LTEmKDB8RCk8KDB8YykpKXtiZT0yNTticmVha31pZighKCgwfChwZT0wfGFbbSsoTTw8Mik+PjJdKSk+LTEmKDB8cGUpPCgwfGYpKSl7YmU9MjU7YnJlYWt9YVsocGU9TGUrKEQr''@;'; put 'put ''MTw8Mil8MCk+PjJdPTErKDB8YVtwZT4+Ml0pLE09TSsxfDB9Zm9yKDI1PT0oMHxiZSkmJkJyKDEzODM5NCw5NDk0Myw4ODAsOTUxODgpOzspe2lmKCgwfG1lKT09KDB8Yykpe009MDticmVha31hWyhmPUxlKygoYmU9bWUrMXwwKTw8Mil8MCk+PjJdPSgwfGFbZj4+Ml0pKygwfGFbTGUrKG1l''@;'; put 'put ''PDwyKT4+Ml0pLG1lPWJlfWZvcig7KDB8TSkhPSgwfGwpOylfW3crKChmPShiZT0wfGFbKG1lPUxlKyhhW3ArKE08PDIpPj4yXTw8Mil8MCk+PjJdKTw8MSk8PDMpPj4zXT0rX1tBPj4zXSxfW3crKCgxfGYpPDwzKT4+M109K19bQSs4Pj4zXSxmPTB8YVttKyhNPDwyKT4+Ml0sYVttZT4+Ml09''@;'; put 'put ''YmUrMSxhW09lKyhiZTw8Mik+PjJdPWYsQT1BKzE2fDAsTT1NKzF8MDtmb3IoOzspe2lmKCgwfGMpPD0wKWJyZWFrIGU7YVtMZSsoYzw8Mik+PjJdPWFbTGUrKChtPWMrLTF8MCk8PDIpPj4yXSxjPW19Y2FzZSA0OmZvcih3PTB8YVtiKzI4Pj4yXSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGwpKXtL''@;'; put 'put ''PTA7YnJlYWt9aWYoISgoMHwoRD0wfGFbcCsoTTw8Mik+PjJdKSk+LTEmKDB8RCk8KDB8YykpKXtiZT0zNzticmVha31pZighKCgwfChtZT0wfGFbbSsoTTw8Mik+PjJdKSk+LTEmKDB8bWUpPCgwfGYpKSl7YmU9Mzc7YnJlYWt9YVsobWU9TGUrKEQrMTw8Mil8MCk+PjJdPTErKDB8YVttZT4+''@;'; put 'put ''Ml0pLE09TSsxfDB9Zm9yKDM3PT0oMHxiZSkmJkJyKDEzODM5NCw5NDk0Myw4OTksOTUxODgpOzspe2lmKCgwfEspPT0oMHxjKSl7TT0wO2JyZWFrfWFbKGY9TGUrKChiZT1LKzF8MCk8PDIpfDApPj4yXT0oMHxhW2Y+PjJdKSsoMHxhW0xlKyhLPDwyKT4+Ml0pLEs9YmV9Zm9yKDsoMHxNKSE9''@;'; put 'put ''KDB8bCk7KWFbdysoYVtMZSsoYVsobWU9cCsoTTw8Mil8MCk+PjJdPDwyKT4+Ml08PDIpPj4yXT1hW0ErKE08PDIpPj4yXSxmPTB8YVttKyhNPDwyKT4+Ml0sYVsobWU9TGUrKGFbbWU+PjJdPDwyKXwwKT4+Ml09MSsoYmU9MHxhW21lPj4yXSksYVtPZSsoYmU8PDIpPj4yXT1mLE09TSsxfDA7''@;'; put 'put ''Zm9yKDs7KXtpZigoMHxjKTw9MClicmVhayBlO2FbTGUrKGM8PDIpPj4yXT1hW0xlKygobT1jKy0xfDApPDwyKT4+Ml0sYz1tfWNhc2UgODpmb3IoQT0wOzspe2lmKCgwfEEpPj0oMHxsKSl7Uj0wO2JyZWFrfWlmKCEoKDB8KE09MHxhW3ArKEE8PDIpPj4yXSkpPi0xJigwfE0pPCgwfGMpKSl7''@;'; put 'put ''YmU9NDg7YnJlYWt9aWYoISgoMHwobWU9MHxhW20rKEE8PDIpPj4yXSkpPi0xJigwfG1lKTwoMHxmKSkpe2JlPTQ4O2JyZWFrfWFbKG1lPUxlKyhNKzE8PDIpfDApPj4yXT0xKygwfGFbbWU+PjJdKSxBPUErMXwwfWZvcig0OD09KDB8YmUpJiZCcigxMzgzOTQsOTQ5NDMsOTE1LDk1MTg4KTs7''@;'; put 'put ''KXtpZigoMHxSKT09KDB8Yykpe0E9MDticmVha31hWyhmPUxlKygoYmU9UisxfDApPDwyKXwwKT4+Ml09KDB8YVtmPj4yXSkrKDB8YVtMZSsoUjw8Mik+PjJdKSxSPWJlfWZvcig7KDB8QSkhPSgwfGwpOylmPTB8YVttKyhBPDwyKT4+Ml0sYVsobWU9TGUrKGFbcCsoQTw8Mik+PjJdPDwyKXww''@;'; put 'put ''KT4+Ml09MSsoYmU9MHxhW21lPj4yXSksYVtPZSsoYmU8PDIpPj4yXT1mLEE9QSsxfDA7Zm9yKDs7KXtpZigoMHxjKTw9MClicmVhayBlO2FbTGUrKGM8PDIpPj4yXT1hW0xlKygobT1jKy0xfDApPDwyKT4+Ml0sYz1tfWNhc2UgMTY6Zm9yKE09MDs7KXtpZigoMHxNKT49KDB8bCkpe0c9MDti''@;'; put 'put ''cmVha31pZighKCgwfChEPTB8YVtwKyhNPDwyKT4+Ml0pKT4tMSYoMHxEKTwoMHxjKSkpe2JlPTU5O2JyZWFrfWlmKCEoKDB8KG1lPTB8YVttKyhNPDwyKT4+Ml0pKT4tMSYoMHxtZSk8KDB8ZikpKXtiZT01OTticmVha31hWyhtZT1MZSsoRCsxPDwyKXwwKT4+Ml09MSsoMHxhW21lPj4yXSks''@;'; put 'put ''TT1NKzF8MH1mb3IoNTk9PSgwfGJlKSYmQnIoMTM4Mzk0LDk0OTQzLDkzMCw5NTE4OCk7KDB8RykhPSgwfGMpOylhWyhmPUxlKygoYmU9RysxfDApPDwyKXwwKT4+Ml09KDB8YVtmPj4yXSkrKDB8YVtMZSsoRzw8Mik+PjJdKSxHPWJlO2ZvcihEbygwfGFbYisyOD4+Ml0sMHxBLDB8dnIoMHxh''@;'; put 'put ''W2IrNDA+PjJdLGwpKSxBPTA7KDB8QSkhPSgwfGwpOylmPTB8YVttKyhBPDwyKT4+Ml0sYVsobWU9TGUrKGFbcCsoQTw8Mik+PjJdPDwyKXwwKT4+Ml09MSsoYmU9MHxhW21lPj4yXSksYVtPZSsoYmU8PDIpPj4yXT1mLEE9QSsxfDA7Zm9yKDs7KXtpZigoMHxjKTw9MClicmVhayBlO2FbTGUr''@;'; put 'put ''KGM8PDIpPj4yXT1hW0xlKygobT1jKy0xfDApPDwyKT4+Ml0sYz1tfWRlZmF1bHQ6QnIoMTM4Mzk0LDk0OTQzLDk0NCw5NTE4OCl9fXdoaWxlKDApO3JldHVybiBhW0xlPj4yXT0wLGFbYis4Pj4yXT1sLGsmJihiPTB8ZnVuY3Rpb24gbjUobCxjKXtjfD0wO3ZhciBPZSxMZSxmPTAscD0wLG09''@;'; put 'put ''MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxCZT0wLEhlPTA7T2U9MHxhWzIwKyhsfD0wKT4+Ml0sTGU9MHxhW2wrMjQ+PjJdLHA9MHxhW2wrMTY+PjJdLG1lPTB8YVtsKzQ+PjJdO2U6ZG97aWYoYyl7Zm9yKFI9MHxRbihEPW1lPDwyKSxmPTA7''@;'; put 'put ''ISgoMHxmKT49KDB8bWUpKTspYVtSKyhmPDwyKT4+Ml09LTEsZj1mKzF8MDt0OmRve3N3aXRjaCgwfHApe2Nhc2UgMTprPTB8YVtsKzI4Pj4yXSxtPTAscD0wfGFbT2U+PjJdLGY9MDtuOmZvcig7Oyl7aWYoKDB8Zik+PSgwfGFbbD4+Ml0pKXtCZT1tLEhlPVI7YnJlYWsgdH1mb3IoRD1PZSso''@;'; put 'put ''KE09ZisxfDApPDwyKXwwLHc9T2UrKGY8PDIpfDAsZj1tOyEoKDB8cCk+PSgwfChjPTB8YVtEPj4yXSkpKTspe2lmKCgwfChBPTB8YVtSKygobT0wfGFbKGM9TGUrKHA8PDIpfDApPj4yXSk8PDIpPj4yXSkpPCgwfGFbdz4+Ml0pKWFbTGUrKGY8PDIpPj4yXT1tLF9baysoZjw8Myk+PjNdPStf''@;'; put 'put ''W2srKHA8PDMpPj4zXSxhW1IrKGFbYz4+Ml08PDIpPj4yXT1mLGY9ZisxfDA7ZWxzZXtpZigoMHxhW0xlKyhBPDwyKT4+Ml0pIT0oMHxtKSlicmVhayBuO19bKGJlPWsrKEE8PDMpfDApPj4zXT0rX1tiZT4+M10rICtfW2srKHA8PDMpPj4zXX1wPXArMXwwfWFbRD4+Ml09ZixtPWYscD1jLGY9''@;'; put 'put ''TX1Ccig5NTIzNSw5NDk0MywxNzkyLDk1MjYwKTticmVhaztjYXNlIDI6c3dpdGNoKGJlPTB8YVtsKzI4Pj4yXSwwfGMpe2Nhc2UgMTpjPTB8YVtPZT4+Ml0scD0wLGY9MDtuOmZvcig7Oyl7aWYoKDB8cCk+PSgwfGFbbD4+Ml0pKXtCZT1mLEhlPVI7YnJlYWsgdH1mb3IoTT1PZSsoKGs9cCsx''@;'; put 'put ''fDApPDwyKXwwLHc9T2UrKHA8PDIpfDA7ISgoMHxjKT49KDB8KHA9MHxhW00+PjJdKSkpOyl7aWYoKDB8KEE9MHxhW1IrKChtPTB8YVsocD1MZSsoYzw8Mil8MCk+PjJdKTw8Mik+PjJdKSk8KDB8YVt3Pj4yXSkpYVtMZSsoZjw8Mik+PjJdPW0sX1tiZSsoKG1lPWY8PDEpPDwzKT4+M109K19b''@;'; put 'put ''YmUrKChwZT1jPDwxKTw8Myk+PjNdLF9bYmUrKCgxfG1lKTw8Myk+PjNdPStfW2JlKygoMXxwZSk8PDMpPj4zXSxhW1IrKGFbcD4+Ml08PDIpPj4yXT1mLGY9ZisxfDA7ZWxzZXtpZigoMHxhW0xlKyhBPDwyKT4+Ml0pIT0oMHxtKSlicmVhayBuO19bKEs9YmUrKChtZT1BPDwxKTw8Myl8MCk+''@;'; put 'put ''PjNdPStfW0s+PjNdKyArX1tiZSsoKHBlPWM8PDEpPDwzKT4+M10sX1sobWU9YmUrKCgxfG1lKTw8Myl8MCk+PjNdPStfW21lPj4zXSsgK19bYmUrKCgxfHBlKTw8Myk+PjNdfWM9YysxfDB9YVtNPj4yXT1mLGM9cCxwPWt9QnIoOTUyMzUsOTQ5NDMsMTgxNSw5NTI2MCk7YnJlYWs7Y2FzZSA0''@;'; put 'put ''OmM9MHxhW09lPj4yXSxwPTAsZj0wO246Zm9yKDs7KXtpZigoMHxwKT49KDB8YVtsPj4yXSkpe0JlPWYsSGU9UjticmVhayB0fWZvcihrPU9lKygoTT1wKzF8MCk8PDIpfDAsdz1PZSsocDw8Mil8MDshKCgwfGMpPj0oMHwocD0wfGFbaz4+Ml0pKSk7KXtpZigoMHwoQT0wfGFbUisoKG09MHxh''@;'; put 'put ''WyhwPUxlKyhjPDwyKXwwKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW3c+PjJdKSlhW0xlKyhmPDwyKT4+Ml09bSxfW2JlKygobWU9Zjw8MSk8PDMpPj4zXT0rX1tiZSsoKHBlPWM8PDEpPDwzKT4+M10sX1tiZSsoKDF8bWUpPDwzKT4+M109K19bYmUrKCgxfHBlKTw8Myk+PjNdLGFbUisoYVtwPj4y''@;'; put 'put ''XTw8Mik+PjJdPWYsZj1mKzF8MDtlbHNle2lmKCgwfGFbTGUrKEE8PDIpPj4yXSkhPSgwfG0pKWJyZWFrIG47X1soSz1iZSsoKG1lPUE8PDEpPDwzKXwwKT4+M109K19bSz4+M10rICtfW2JlKygocGU9Yzw8MSk8PDMpPj4zXSxfW2JlKygoMXxtZSk8PDMpPj4zXT0rX1tiZSsoKDF8cGUpPDwz''@;'; put 'put ''KT4+M119Yz1jKzF8MH1hW2s+PjJdPWYsYz1wLHA9TX1Ccig5NTIzNSw5NDk0MywxODM1LDk1MjYwKTticmVhaztjYXNlIDI6dz0wfGFbbD4+Ml0scD1wZT1+fitfW2JlKzg+PjNdLEE9MCxmPTA7bjpmb3IoOyEoKDB8QSk+PSgwfHcpKTspZm9yKGs9QSsxfDAsTT0wfGFbT2UrKGs8PDIpPj4y''@;'; put 'put ''XSxtPWYsYz1wZSxmPTB8YVtPZSsoQTw8Mik+PjJdOzspe2lmKCgwfGYpPj0oMHxNKSl7cGU9YyxBPWssZj1tO2NvbnRpbnVlIG59cGU9fn4rX1tiZSsoKG08PDF8MSk8PDMpPj4zXSxtPW0rMXwwLHA9KDB8cCk+KDB8cGUpP3A6cGUsYz0oMHxjKTwoMHxwZSk/YzpwZSxmPWYrMXwwfWZvcihI''@;'; put 'put ''dChSKSxHPTB8UW4oMHx2cihLPXAtcGUrMXwwLEQpKSxLPTB8dnIoSyxtZSksZj0wOyEoKDB8Zik+PSgwfEspKTspYVtHKyhmPDwyKT4+Ml09LTEsZj1mKzF8MDtmPTAsYz0wfGFbT2U+PjJdLHA9MDtuOmZvcig7Oyl7aWYoKDB8cCk+PSgwfGFbbD4+Ml0pKXtCZT1mLEhlPUc7YnJlYWsgdH1m''@;'; put 'put ''b3IoUj1PZSsoKEQ9cCsxfDApPDwyKXwwLE09T2UrKHA8PDIpfDA7ISgoMHxjKT49KDB8KHA9MHxhW1I+PjJdKSkpOyl7aWYocD0wfGFbTGUrKGM8PDIpPj4yXSxBPSgwfHZyKH5+KGI9K19bYmUrKCgxfChtPWM8PDEpKTw8Myk+PjNdKS1wZXwwLG1lKSkrcHwwLCgwfChrPTB8YVsodz1HKyhB''@;'; put 'put ''PDwyKXwwKT4+Ml0pKTwoMHxhW00+PjJdKSlhW0xlKyhmPDwyKT4+Ml09cCxfW2JlKygoaz1mPDwxKTw8Myk+PjNdPStfW2JlKyhtPDwzKT4+M10sX1tiZSsoKDF8ayk8PDMpPj4zXT1iLGFbdz4+Ml09ZixmPWYrMXwwO2Vsc2V7aWYoKDB8QSk+PSgwfEspKXtmPTU1O2JyZWFrIG59aWYoKDB8''@;'; put 'put ''YVtMZSsoazw8Mik+PjJdKSE9KDB8cCkpe2Y9NTc7YnJlYWsgbn1fWyh3PWJlKygoazw8PTEpPDwzKXwwKT4+M109K19bdz4+M10rICtfW2JlKyhtPDwzKT4+M10sX1tiZSsoKDF8ayk8PDMpPj4zXT1ifWM9YysxfDB9YVtSPj4yXT1mLGM9cCxwPUR9NTU9PSgwfGYpP0JyKDk1MjkyLDk0OTQz''@;'; put 'put ''LDE4NjksOTUyNjApOjU3PT0oMHxmKSYmQnIoOTUzMTMsOTQ5NDMsMTg3MCw5NTI2MCk7YnJlYWs7Y2FzZSAzOnc9MHxhW2w+PjJdLGY9bT1+fitfW2JlKzg+PjNdLHA9MCxBPTA7bjpmb3IoOyEoKDB8QSk+PSgwfHcpKTspZm9yKGs9QSsxfDAsTT0wfGFbT2UrKGs8PDIpPj4yXSxjPWYsZj0w''@;'; put 'put ''fGFbT2UrKEE8PDIpPj4yXTs7KXtpZigoMHxmKT49KDB8TSkpe2Y9YyxBPWs7Y29udGludWUgbn1jPSgwfGMpPigwfChwZT1+fitfW2JlKyhwPDwxPDwzKT4+M10pKT9jOnBlLG09KDB8bSk+KDB8cGUpP206cGUscD1wKzF8MCxmPWYrMXwwfWZvcihIdChSKSxHPTB8UW4oMHx2cihwPWYtbSsx''@;'; put 'put ''fDAsRCkpLHA9MHx2cihwLG1lKSxmPTA7ISgoMHxmKT49KDB8cCkpOylhW0crKGY8PDIpPj4yXT0tMSxmPWYrMXwwO2Y9MCxjPTB8YVtPZT4+Ml0scD0wO246Zm9yKDs7KXtpZigoMHxwKT49KDB8YVtsPj4yXSkpe0JlPWYsSGU9RzticmVhayB0fWZvcihSPU9lKygoRD1wKzF8MCk8PDIpfDAs''@;'; put 'put ''TT1PZSsocDw8Mil8MDshKCgwfGMpPj0oMHwocD0wfGFbUj4+Ml0pKSk7KXtpZihwPTB8YVtMZSsoYzw8Mik+PjJdLHc9RysoKDB8dnIofn4oYj0rX1tiZSsoKEE9Yzw8MSk8PDMpPj4zXSktbXwwLG1lKSkrcDw8Mil8MCwoMHwoaz0wfGFbdz4+Ml0pKTwoMHxhW00+PjJdKSlhW0xlKyhmPDwy''@;'; put 'put ''KT4+Ml09cCxfW2JlKygocGU9Zjw8MSk8PDMpPj4zXT1iLF9bYmUrKCgxfHBlKTw8Myk+PjNdPStfW2JlKygoMXxBKTw8Myk+PjNdLGFbdz4+Ml09ZixmPWYrMXwwO2Vsc2V7aWYoKDB8YVtMZSsoazw8Mik+PjJdKSE9KDB8cCkpYnJlYWsgbjtfW2JlKygocGU9azw8MSk8PDMpPj4zXT1iLF9b''@;'; put 'put ''KHBlPWJlKygoMXxwZSk8PDMpfDApPj4zXT0rX1twZT4+M10rICtfW2JlKygoMXxBKTw8Myk+PjNdfWM9YysxfDB9YVtSPj4yXT1mLGM9cCxwPUR9QnIoOTUzMTMsOTQ5NDMsMTkwNSw5NTI2MCk7YnJlYWs7ZGVmYXVsdDpCZT0wLEhlPVI7YnJlYWsgdH1icmVhaztjYXNlIDQ6az0wfGFbbCsy''@;'; put 'put ''OD4+Ml0scD0wLGY9MCxjPTB8YVtPZT4+Ml07bjpmb3IoOzspe2lmKCgwfHApPj0oMHxhW2w+PjJdKSl7QmU9ZixIZT1SO2JyZWFrIHR9Zm9yKEQ9T2UrKChNPXArMXwwKTw8Mil8MCx3PU9lKyhwPDwyKXwwOyEoKDB8Yyk+PSgwfChtPTB8YVtEPj4yXSkpKTspe2lmKCgwfChBPTB8YVtSKygo''@;'; put 'put ''bT0wfGFbKHA9TGUrKGM8PDIpfDApPj4yXSk8PDIpPj4yXSkpPCgwfGFbdz4+Ml0pKWFbTGUrKGY8PDIpPj4yXT1tLGFbaysoZjw8Mik+PjJdPWFbaysoYzw8Mik+PjJdLGFbUisoYVtwPj4yXTw8Mik+PjJdPWYsZj1mKzF8MDtlbHNle2lmKCgwfGFbTGUrKEE8PDIpPj4yXSkhPSgwfG0pKWJy''@;'; put 'put ''ZWFrIG47YVsoYmU9aysoQTw8Mil8MCk+PjJdPSgwfGFbYmU+PjJdKSsoMHxhW2srKGM8PDIpPj4yXSl9Yz1jKzF8MH1hW0Q+PjJdPWYscD1NLGM9bX1Ccig5NTIzNSw5NDk0MywxOTI5LDk1MjYwKTticmVhaztjYXNlIDg6cD0wLGY9MCxjPTB8YVtPZT4+Ml07bjpmb3IoOzspe2lmKCgwfHAp''@;'; put 'put ''Pj0oMHxhW2w+PjJdKSl7QmU9ZixIZT1SO2JyZWFrIHR9Zm9yKE09T2UrKChrPXArMXwwKTw8Mil8MCx3PU9lKyhwPDwyKXwwOyEoKDB8Yyk+PSgwfChtPTB8YVtNPj4yXSkpKTspe2lmKCgwfChBPTB8YVtSKygobT0wfGFbKHA9TGUrKGM8PDIpfDApPj4yXSk8PDIpPj4yXSkpPj0oMHxhW3c+''@;'; put 'put ''PjJdKSl7aWYoKDB8YVtMZSsoQTw8Mik+PjJdKSE9KDB8bSkpYnJlYWsgbn1lbHNlIGFbTGUrKGY8PDIpPj4yXT1tLGFbUisoYVtwPj4yXTw8Mik+PjJdPWYsZj1mKzF8MDtjPWMrMXwwfWFbTT4+Ml09ZixwPWssYz1tfUJyKDk1MjM1LDk0OTQzLDE5NDgsOTUyNjApO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''bD0wO2JyZWFrIGV9fXdoaWxlKDApO2FbbCs4Pj4yXT1CZSxIdChIZSl9fXdoaWxlKDApO3JldHVybiAwfGx9KGIsaykpLDB8Yn0obHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCxifD0wLDEpfWZ1bmN0aW9uIHhqKGwsYyxmLHApe3ZhciBtLEE7Zm9yKGN8PTAsZnw9MCxtPTcy''@;'; put 'put ''KyhsfD0wKXwwLEE9NCsocHw9MCl8MDshKChmLWN8MCk8PTApOyl7c3dpdGNoKDB8dWVbbSsoMHxidFtjPj4wXSk+PjBdKXtjYXNlIDU6Yz1jKzJ8MDticmVhaztjYXNlIDY6Yz1jKzN8MDticmVhaztjYXNlIDc6Yz1jKzR8MDticmVhaztjYXNlIDEwOmFbQT4+Ml09LTEsYVtwPj4yXT0xKygw''@;'; put 'put ''fGFbcD4+Ml0pLGM9YysxfDA7YnJlYWs7Y2FzZSA5OmFbcD4+Ml09MSsoMHxhW3A+PjJdKSxjPShmLShsPWMrMXwwKXwwKT4wJiYxMD09KDB8dWVbbSsoMHxidFtsPj4wXSk+PjBdKT9jKzJ8MDpsLGFbQT4+Ml09LTE7YnJlYWs7ZGVmYXVsdDpjPWMrMXwwfWFbQT4+Ml09MSsoMHxhW0E+PjJd''@;'; put 'put ''KX19ZnVuY3Rpb24gS3kobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBiLG09MCxBPTAsdz0wLGs9MDttPShiPWZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8bSk+MCl7c3dpdGNoKDB8dWVbKGs9bCs3MnwwKSsoMHxidFtjPj4wXSk+PjBdKXtjYXNlIDI5OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDti''@;'; put 'put ''cmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjpmPTE7YnJlYWs7Y2FzZSA1OmlmKCgwfG0pPDIpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbbCszNDA+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWY9MjticmVhaztjYXNlIDY6aWYoKDB8bSk8Myl7Zj0tMjticmVhayBlfWlm''@;'; put 'put ''KCEoMHxSaVsxMjcmYVtsKzM0ND4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9Zj0zO2JyZWFrO2Nhc2UgNzppZigoMHxtKTw0KXtmPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2wrMzQ4Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1mPTQ7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAxOTpmPTB8QksobCxjKzF8MCxmLHApO2JyZWFrIGV9bT1sKzMyOHwwLEE9bCszMzJ8MCx3PWwrMzM2fDAsYz1jK2Z8MDt0OmZvcig7Oyl7aWYoKDB8KGY9Yi1jfDApKTw9MCl7Zj0tMTticmVhayBlfXN3aXRjaCgwfHVlW2srKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOTptPTE4O2JyZWFr''@;'; put 'put ''IHQ7Y2FzZSAxODptPTI5O2JyZWFrIHQ7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmY9MTticmVhaztjYXNlIDU6aWYoKDB8Zik8Mil7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVttPj4yXV0obCxjKSkpe209MjE7YnJlYWsgdH1mPTI7YnJlYWs7Y2FzZSA2''@;'; put 'put ''OmlmKCgwfGYpPDMpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbQT4+Ml1dKGwsYykpKXttPTI0O2JyZWFrIHR9Zj0zO2JyZWFrO2Nhc2UgNzppZigoMHxmKTw0KXtmPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW3c+PjJdXShsLGMpKSl7bT0yNzticmVhayB0fWY9NDticmVhaztk''@;'; put 'put ''ZWZhdWx0Om09MzA7YnJlYWsgdH1jPWMrZnwwfWlmKDE4PT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31pZigyMT09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9aWYoMjQ9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfWlmKDI3PT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31p''@;'; put 'put ''ZigyOT09KDB8bSkpe2FbcD4+Ml09YysxLGY9OTticmVha31pZigzMD09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIHlMKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDttPShmfD0wKS0o''@;'; put 'put ''Y3w9MCl8MDtlOmRve2lmKCgwfG0pPjApe3N3aXRjaCgwfHVlWyhrPWwrNzJ8MCkrKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYo''@;'; put 'put ''ISgwfFJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1tPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfG0pPDMpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfW09MzticmVhaztjYXNl''@;'; put 'put ''IDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtsKzM0OD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9bT00O2JyZWFrO2Nhc2UgMzA6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMTphW3A+PjJdPWMsZj0yMjticmVhayBlfUE9bCszMjh8MCx3PWwrMzMy''@;'; put 'put ''fDAsYj1sKzMzNnwwLGM9YyttfDA7dDpmb3IoOzspe2lmKCgwfChtPWYtY3wwKSk8PTApe2Y9LTE7YnJlYWsgZX1zd2l0Y2goMHx1ZVtrKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6bT0xODticmVhayB0O2Nhc2UgMTg6bT0yOTticmVhayB0O2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNh''@;'; put 'put ''c2UgMjQ6Y2FzZSAyMjptPTE7YnJlYWs7Y2FzZSA1OmlmKCgwfG0pPDIpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbQT4+Ml1dKGwsYykpKXttPTIxO2JyZWFrIHR9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW3c+PjJdXShs''@;'; put 'put ''LGMpKSl7bT0yNDticmVhayB0fW09MzticmVhaztjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtiPj4yXV0obCxjKSkpe209Mjc7YnJlYWsgdH1tPTQ7YnJlYWs7ZGVmYXVsdDptPTMwO2JyZWFrIHR9Yz1jK218MH1pZigxOD09KDB8bSkpe2FbcD4+Ml09''@;'; put 'put ''YyxmPTA7YnJlYWt9aWYoMjE9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfWlmKDI0PT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31pZigyNz09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9aWYoMjk9PSgwfG0pKXthW3A+PjJdPWMrMSxmPTI4O2JyZWFrfWlmKDMwPT0oMHxtKSl7''@;'; put 'put ''YVtwPj4yXT1jLGY9MDticmVha319ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gQksobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIEEsbT0wO0E9Znw9MDtlOmRve2lmKChBLWN8MCk+MCl7aWYoKG09MHx1ZVtjPj4wXSk8PDI0Pj4yND09MTIwKXtsPTB8UEsobCxj''@;'; put 'put ''KzF8MCxmLHApO2JyZWFrfWlmKDI1IT0oMHx1ZVsoZj1sKzcyfDApKygyNTUmbSk+PjBdKSl7YVtwPj4yXT1jLGw9MDticmVha310OmZvcig7Oyl7aWYoKEEtKGw9YysxfDApfDApPD0wKXtsPS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbZisoMHxidFtsPj4wXSk+PjBdKXtjYXNlIDI1OmM9bDti''@;'; put 'put ''cmVhaztjYXNlIDE4OmY9ODticmVhayB0O2RlZmF1bHQ6Zj05O2JyZWFrIHR9fWlmKDg9PSgwfGYpKXthW3A+PjJdPWMrMixsPTEwO2JyZWFrfWlmKDk9PSgwfGYpKXthW3A+PjJdPWwsbD0wO2JyZWFrfX1lbHNlIGw9LTF9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBQSyhsLGMsZixw''@;'; put 'put ''KXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTA7ZTpkb3tpZigoZi1jfDApPjApe2lmKCgtMiZ1ZVsobD1sKzcyfDApKygwfGJ0W2M+PjBdKT4+MF0pPDwyND4+MjQhPTI0KXthW3A+PjJdPWMsZj0wO2JyZWFrfXQ6Zm9yKDs7KXtpZigoZi0obT1jKzF8MCl8MCk8PTApe2Y9LTE7YnJlYWsg''@;'; put 'put ''ZX1zd2l0Y2goMHx1ZVtsKygwfGJ0W20+PjBdKT4+MF0pe2Nhc2UgMjQ6Y2FzZSAyNTpjPW07YnJlYWs7Y2FzZSAxODpsPTY7YnJlYWsgdDtkZWZhdWx0Omw9NzticmVhayB0fX1pZig2PT0oMHxsKSl7YVtwPj4yXT1jKzIsZj0xMDticmVha31pZig3PT0oMHxsKSl7YVtwPj4yXT1tLGY9MDti''@;'; put 'put ''cmVha319ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24geDFlKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgSyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxwZT0wO209KEs9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHxtKT4wKXtzd2l0Y2goMHx1ZVso''@;'; put 'put ''Rz1sKzcyfDApKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6YVtwPj4yXT1jLG09MDticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjptPTE7YnJlYWs7Y2FzZSA1OmlmKCgwfG0pPDIpe209LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbbCszNDA+PjJdXShsLGMpKSl7YVtwPj4yXT1jLG09MDti''@;'; put 'put ''cmVhayBlfW09MjticmVhaztjYXNlIDY6aWYoKDB8bSk8Myl7bT0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtsKzM0ND4+Ml1dKGwsYykpKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9bT0zO2JyZWFrO2Nhc2UgNzppZigoMHxtKTw0KXttPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2wr''@;'; put 'put ''MzQ4Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxtPTA7YnJlYWsgZX1tPTQ7YnJlYWs7Y2FzZSAxNjppZigoSy0obT1jKzF8MCl8MCk8PTApe209LTE7YnJlYWsgZX1zd2l0Y2goMHx1ZVtHKygwfGJ0W20+PjBdKT4+MF0pe2Nhc2UgMjc6bT0wfHdMKGwsYysyfDAsZixwKTticmVhayBlO2Nhc2Ug''@;'; put 'put ''MjA6bT0wfFQxZShjKzJ8MCxmLHApO2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sbT0wO2JyZWFrIGV9Y2FzZSAxNTptPTB8VGoobCxjKzF8MCxmLHApO2JyZWFrIGU7Y2FzZSAxNzptPTB8SWoobCxjKzF8MCxmLHApO2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPWMsbT0wO2JyZWFrIGV9dz1s''@;'; put 'put ''KzMyOHwwLGI9bCszMzJ8MCxrPWwrMzM2fDAsTT1sKzM0MHwwLEQ9bCszNDR8MCxSPWwrMzQ4fDAsQT0wLG09YyttfDA7dDpmb3IoOzspe2lmKCgwfChjPUstbXwwKSk8PTApe209LTE7YnJlYWsgZX1uOmRve3N3aXRjaCgwfHVlW0crKDB8YnRbbT4+MF0pPj4wXSl7Y2FzZSAyOTpwZT0yNDti''@;'; put 'put ''cmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6cGU9NTA7YnJlYWsgdDtjYXNlIDExOnBlPTY0O2JyZWFrIHQ7Y2FzZSAxNzpicmVhayB0O2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpjPTE7YnJlYWs7Y2FzZSA1OmlmKCgwfGMpPDIpe209LTI7YnJlYWsgZX1p''@;'; put 'put ''ZighKDB8UmlbMTI3JmFbdz4+Ml1dKGwsbSkpKXtwZT0yNzticmVhayB0fWM9MjticmVhaztjYXNlIDY6aWYoKDB8Yyk8Myl7bT0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtiPj4yXV0obCxtKSkpe3BlPTMwO2JyZWFrIHR9Yz0zO2JyZWFrO2Nhc2UgNzppZigoMHxjKTw0KXttPS0yO2Jy''@;'; put 'put ''ZWFrIGV9aWYoISgwfFJpWzEyNyZhW2s+PjJdXShsLG0pKSl7cGU9MzM7YnJlYWsgdH1jPTQ7YnJlYWs7Y2FzZSAyMzppZigwfEEpe3BlPTM1O2JyZWFrIHR9aWYoKDB8KGM9Sy0oQT1tKzF8MCl8MCkpPD0wKXttPS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbRysoMHxidFtBPj4wXSk+PjBdKXtj''@;'; put 'put ''YXNlIDI5OnBlPTM4O2JyZWFrIHQ7Y2FzZSAyNDpjYXNlIDIyOkE9MSxjPTI7YnJlYWsgbjtjYXNlIDU6aWYoKDB8Yyk8Mil7bT0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbTT4+Ml1dKGwsQSkpe0E9MSxjPTM7YnJlYWsgbn1wZT00MjticmVhayB0O2Nhc2UgNjppZigoMHxjKTwzKXttPS0y''@;'; put 'put ''O2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtEPj4yXV0obCxBKSl7QT0xLGM9NDticmVhayBufXBlPTQ1O2JyZWFrIHQ7Y2FzZSA3OmlmKCgwfGMpPDQpe209LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW1I+PjJdXShsLEEpKXtBPTEsYz01O2JyZWFrIG59cGU9NDg7YnJlYWsgdDtkZWZhdWx0OnBl''@;'; put 'put ''PTQ5O2JyZWFrIHR9ZGVmYXVsdDpwZT02OTticmVhayB0fX13aGlsZSgwKTttPW0rY3wwfXQ6c3dpdGNoKDB8cGUpe2Nhc2UgMjQ6Y2FzZSAyNzpjYXNlIDMwOmNhc2UgMzM6Y2FzZSAzNTpjYXNlIDY5OmFbcD4+Ml09bSxtPTA7YnJlYWsgZTtjYXNlIDM4OmNhc2UgNDI6Y2FzZSA0NTpjYXNl''@;'; put 'put ''IDQ4OmNhc2UgNDk6YVtwPj4yXT1BLG09MDticmVhayBlO2Nhc2UgNTA6bjpmb3IoOzspe2lmKHBlPTAsKDB8KGM9Sy0oQT1tKzF8MCl8MCkpPD0wKXttPS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbRysoMHxidFtBPj4wXSk+PjBdKXtjYXNlIDExOm09QSxwZT02NDticmVhayB0O2Nhc2UgMTc6''@;'; put 'put ''bT1BO2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTptPUEscGU9NTA7YnJlYWs7Y2FzZSAyOTpwZT01MjticmVhayBuO2Nhc2UgMjQ6Y2FzZSAyMjpBPTI7YnJlYWsgbjtjYXNlIDU6cGU9NTM7YnJlYWsgbjtjYXNlIDY6cGU9NTY7YnJlYWsgbjtjYXNlIDc6cGU9NTk7YnJlYWsgbjtk''@;'; put 'put ''ZWZhdWx0OnBlPTYyO2JyZWFrIG59fWlmKDUyPT0oMHxwZSkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX1pZig1Mz09KDB8cGUpKXtpZigoMHxjKTwyKXttPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW00+PjJdXShsLEEpKSl7YVtwPj4yXT1BLG09MDticmVhayBlfUE9M31lbHNlIGlmKDU2''@;'; put 'put ''PT0oMHxwZSkpe2lmKCgwfGMpPDMpe209LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbRD4+Ml1dKGwsQSkpKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9QT00fWVsc2UgaWYoNTk9PSgwfHBlKSl7aWYoKDB8Yyk8NCl7bT0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtSPj4yXV0obCxBKSkp''@;'; put 'put ''e2FbcD4+Ml09QSxtPTA7YnJlYWsgZX1BPTV9ZWxzZSBpZig2Mj09KDB8cGUpKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9bT0wfGJMKGwsbStBfDAsZixwKTticmVhayBlfWlmKDY0PT0oMHxwZSkpe2FbcD4+Ml09bSsxLG09MjticmVha31pZigoSy0oQT1tKzF8MCl8MCk+MCl7aWYoNjI9PSgw''@;'; put 'put ''fHVlW0E+PjBdKSl7YVtwPj4yXT1tKzIsbT00O2JyZWFrfWFbcD4+Ml09QSxtPTA7YnJlYWt9bT0tMX1lbHNlIG09LTF9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiB3TChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO2U6ZG97aWYoKGYt''@;'; put 'put ''Y3wwKT4wKXtpZig0NSE9KDB8dWVbYz4+MF0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfW09bCs3MnwwLEE9bCszNTJ8MCx3PWwrMzU2fDAsYj1sKzM2MHwwLGs9YysxfDA7dDpmb3IoOzspe2lmKCgwfChjPWYta3wwKSk8PTApe2Y9LTE7YnJlYWsgZX1zd2l0Y2goMHx1ZVttKygwfGJ0W2s+PjBd''@;'; put 'put ''KT4+MF0pe2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmM9MTk7YnJlYWsgdDtjYXNlIDU6aWYoKDB8Yyk8Mil7Zj0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbQT4+Ml1dKGwsaykpe2M9OTticmVhayB0fWs9aysyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7Zj0tMjticmVhayBlfWlm''@;'; put 'put ''KDB8UmlbMTI3JmFbdz4+Ml1dKGwsaykpe2M9MTM7YnJlYWsgdH1rPWsrM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfGMpPDQpe2Y9LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW2I+PjJdXShsLGspKXtjPTE3O2JyZWFrIHR9az1rKzR8MDtjb250aW51ZSB0O2Nhc2UgMjc6aWYoKGYtKGM9''@;'; put 'put ''aysxfDApfDApPD0wKXtmPS0xO2JyZWFrIGV9aWYoNDU9PSgwfHVlW2M+PjBdKSl7Yz0yMjticmVhayB0fWs9Yztjb250aW51ZSB0O2RlZmF1bHQ6az1rKzF8MDtjb250aW51ZSB0fX1pZig5PT0oMHxjKSl7YVtwPj4yXT1rLGY9MDticmVha31pZigxMz09KDB8Yykpe2FbcD4+Ml09ayxmPTA7''@;'; put 'put ''YnJlYWt9aWYoMTc9PSgwfGMpKXthW3A+PjJdPWssZj0wO2JyZWFrfWlmKDE5PT0oMHxjKSl7YVtwPj4yXT1rLGY9MDticmVha31pZigyMj09KDB8Yykpe2lmKChmLShjPWsrMnwwKXwwKTw9MCl7Zj0tMTticmVha31pZig2Mj09KDB8dWVbYz4+MF0pKXthW3A+PjJdPWsrMyxmPTEzO2JyZWFr''@;'; put 'put ''fWFbcD4+Ml09YyxmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFQxZShsLGMsZil7aWYoZnw9MCwoKGN8PTApLShsfD0wKXwwKT41KXtmb3IoYz0wOzspe2lmKCgwfGMpPj02KXtjPTg7YnJlYWt9aWYoKDB8dWVbbD4+MF0pIT0oMHx1ZVsxNDQzMDAr''@;'; put 'put ''Yz4+MF0pKXtjPTA7YnJlYWt9Yz1jKzF8MCxsPWwrMXwwfWFbZj4+Ml09bH1lbHNlIGM9LTE7cmV0dXJuIDB8Y31mdW5jdGlvbiBUaihsLGMsZixwKXtsfD0wLHB8PTA7dmFyIEQsUixHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO0c9b2Usb2U9b2UrMTZ8MCxSPUcsZj0oRD1mfD0wKS0oY3w9''@;'; put 'put ''MCl8MDtlOmRve2lmKCgwfGYpPjApe3N3aXRjaCgwfHVlWyhNPWwrNzJ8MCkrKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6Zj0xO2JyZWFrO2Nhc2UgNTppZigoMHxmKTwyKXtmPS0yO2JyZWFrIGV9aWYoISgw''@;'; put 'put ''fFJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1mPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfGYpPDMpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWY9MzticmVhaztjYXNlIDc6''@;'; put 'put ''aWYoKDB8Zik8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtsKzM0OD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9Zj00fUE9bCszMjh8MCx3PWwrMzMyfDAsYj1sKzMzNnwwLGY9YytmfDA7dDpmb3IoOzspe2lmKCgwfChtPUQtZnwwKSk8PTApe2Y9LTE7YnJlYWsg''@;'; put 'put ''ZX1zd2l0Y2goMHx1ZVtNKygwfGJ0W2Y+PjBdKT4+MF0pe2Nhc2UgMjk6az0xNzticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6az0yODticmVhayB0O2Nhc2UgMTU6az01MDticmVhayB0O2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjptPTE7YnJlYWs7Y2Fz''@;'; put 'put ''ZSA1OmlmKCgwfG0pPDIpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbQT4+Ml1dKGwsZikpKXtrPTIwO2JyZWFrIHR9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW3c+PjJdXShsLGYpKSl7az0yMzticmVhayB0fW09MzticmVh''@;'; put 'put ''aztjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtiPj4yXV0obCxmKSkpe2s9MjY7YnJlYWsgdH1tPTQ7YnJlYWs7ZGVmYXVsdDpicmVhayB0fWY9ZittfDB9aWYoMTc9PSgwfGspKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDIwPT0oMHxrKSl7YVtwPj4y''@;'; put 'put ''XT1mLGY9MDticmVha31pZigyMz09KDB8aykpe2FbcD4+Ml09ZixmPTA7YnJlYWt9aWYoMjY9PSgwfGspKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDI4PT0oMHxrKSl7aWYoISgwfERqKGMsZixSKSkpe2FbcD4+Ml09ZixmPTA7YnJlYWt9QT1sKzM1MnwwLHc9bCszNTZ8MCxiPWwrMzYwfDAs''@;'; put 'put ''bT1mKzF8MDt0OmZvcig7Oyl7aWYoKDB8KGY9RC1tfDApKTw9MCl7Zj0tMTticmVhayBlfXN3aXRjaCgwfHVlW00rKDB8YnRbbT4+MF0pPj4wXSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6az00NTticmVhayB0O2Nhc2UgNTppZigoMHxmKTwyKXtmPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtB''@;'; put 'put ''Pj4yXV0obCxtKSl7az0zNTticmVhayB0fW09bSsyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Zik8Myl7Zj0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbdz4+Ml1dKGwsbSkpe2s9Mzk7YnJlYWsgdH1tPW0rM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfGYpPDQpe2Y9LTI7YnJlYWsg''@;'; put 'put ''ZX1pZigwfFJpWzEyNyZhW2I+PjJdXShsLG0pKXtrPTQzO2JyZWFrIHR9bT1tKzR8MDtjb250aW51ZSB0O2Nhc2UgMTU6aWYoKEQtKGY9bSsxfDApfDApPD0wKXtmPS0xO2JyZWFrIGV9aWYoNjI9PSgwfHVlW2Y+PjBdKSl7az00ODticmVhayB0fW09Zjtjb250aW51ZSB0O2RlZmF1bHQ6bT1t''@;'; put 'put ''KzF8MDtjb250aW51ZSB0fX1pZigzNT09KDB8aykpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoMzk9PSgwfGspKXthW3A+PjJdPW0sZj0wO2JyZWFrfWlmKDQzPT0oMHxrKSl7YVtwPj4yXT1tLGY9MDticmVha31pZig0NT09KDB8aykpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoNDg9PSgwfGsp''@;'; put 'put ''KXthW3A+PjJdPW0rMixmPTB8YVtSPj4yXTticmVha319ZWxzZSBpZig1MD09KDB8aykpe2lmKCEoMHxEaihjLGYsUikpKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKChELShtPWYrMXwwKXwwKTw9MCl7Zj0tMTticmVha31pZig2Mj09KDB8dWVbbT4+MF0pKXthW3A+PjJdPWYrMixmPTB8YVtS''@;'; put 'put ''Pj4yXTticmVha31mPW19YVtwPj4yXT1mLGY9MH1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIG9lPUcsMHxmfWZ1bmN0aW9uIElqKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDttPShmfD0wKS0oY3w9MCl8MDtlOmRve2lmKCgwfG0pPjApe3N3aXRjaCgwfHVl''@;'; put 'put ''WyhrPWwrNzJ8MCkrKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSkpe2FbcD4+''@;'; put 'put ''Ml09YyxmPTA7YnJlYWsgZX1tPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfG0pPDMpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfW09MzticmVhaztjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxS''@;'; put 'put ''aVsxMjcmYVtsKzM0OD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9bT00fUE9bCszMjh8MCx3PWwrMzMyfDAsYj1sKzMzNnwwLG09YyttfDA7dDpmb3IoOzspe2lmKCgwfChjPWYtbXwwKSk8PTApe2Y9LTE7YnJlYWsgZX1zd2l0Y2goMHx1ZVtrKygwfGJ0W20+PjBdKT4+MF0p''@;'; put 'put ''e2Nhc2UgMjk6QT0xNzticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6QT0yNzticmVhayB0O2Nhc2UgMTE6QT0zMjticmVhayB0O2Nhc2UgMjM6Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmM9MTticmVhaztjYXNlIDU6aWYoKDB8Yyk8Mil7Zj0tMjticmVh''@;'; put 'put ''ayBlfWlmKCEoMHxSaVsxMjcmYVtBPj4yXV0obCxtKSkpe0E9MjA7YnJlYWsgdH1jPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfGMpPDMpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbdz4+Ml1dKGwsbSkpKXtBPTIzO2JyZWFrIHR9Yz0zO2JyZWFrO2Nhc2UgNzppZigoMHxjKTw0KXtmPS0y''@;'; put 'put ''O2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2I+PjJdXShsLG0pKSl7QT0yNjticmVhayB0fWM9NDticmVhaztkZWZhdWx0OkE9MzM7YnJlYWsgdH1tPW0rY3wwfWlmKDE3PT0oMHxBKSl7YVtwPj4yXT1tLGY9MDticmVha31pZigyMD09KDB8QSkpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoMjM9''@;'; put 'put ''PSgwfEEpKXthW3A+PjJdPW0sZj0wO2JyZWFrfWlmKDI2PT0oMHxBKSl7YVtwPj4yXT1tLGY9MDticmVha31pZigyNz09KDB8QSkpe3Q6Zm9yKDs7KXtpZigoZi0oYz1tKzF8MCl8MCk8PTApe2Y9LTE7YnJlYWsgZX1zd2l0Y2goMHx1ZVtrKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgMTA6Y2Fz''@;'; put 'put ''ZSA5OmNhc2UgMjE6bT1jLEE9Mjc7YnJlYWs7Y2FzZSAxMTpBPTI5O2JyZWFrIHQ7ZGVmYXVsdDpBPTMwO2JyZWFrIHR9fWlmKDI5PT0oMHxBKSl7YVtwPj4yXT1tKzIsZj01O2JyZWFrfWlmKDMwPT0oMHxBKSl7YVtwPj4yXT1jLGY9MDticmVha319ZWxzZXtpZigzMj09KDB8QSkpe2FbcD4+''@;'; put 'put ''Ml09bSsxLGY9NTticmVha31pZigzMz09KDB8QSkpe2FbcD4+Ml09bSxmPTA7YnJlYWt9fX1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBiTChsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgYixrLE0sRCxSLEcsSyxwZSxtZSxiZSxPZSxMZSxIZSxtPTAsQT0wLHc9''@;'; put 'put ''MCxCZT0wO0hlPW9lLG9lPW9lKzE2fDAsYVsoT2U9SGUpPj4yXT1jfD0wLExlPWYsSz1sKzcyfDAscGU9bCszMjh8MCxtZT1sKzMzMnwwLGJlPWwrMzM2fDAsYj1sKzM0MHwwLGs9bCszNDR8MCxNPWwrMzQ4fDAsRD1sKzM1MnwwLFI9bCszNTZ8MCxHPWwrMzYwfDAsQT0wO2U6Zm9yKDs7KXtp''@;'; put 'put ''ZigoMHwobT1MZS1jfDApKTw9MCl7Yz0tMTticmVha310OmRve3N3aXRjaCgwfHVlW0srKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOTpCZT00O2JyZWFrIGU7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmFbT2U+PjJdPW09YysxfDAsYz1tLEE9dz1BO2NvbnRpbnVl''@;'; put 'put ''IGU7Y2FzZSA1OmlmKCgwfG0pPDIpe2M9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbcGU+PjJdXShsLGMpKSl7QmU9ODticmVhayBlfWFbT2U+PjJdPW09YysyfDAsYz1tLEE9dz1BO2NvbnRpbnVlIGU7Y2FzZSA2OmlmKCgwfG0pPDMpe2M9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFb''@;'; put 'put ''bWU+PjJdXShsLGMpKSl7QmU9MTI7YnJlYWsgZX1hW09lPj4yXT1tPWMrM3wwLGM9bSxBPXc9QTtjb250aW51ZSBlO2Nhc2UgNzppZigoMHxtKTw0KXtjPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2JlPj4yXV0obCxjKSkpe0JlPTE2O2JyZWFrIGV9YVtPZT4+Ml09bT1jKzR8MCxjPW0s''@;'; put 'put ''QT13PUE7Y29udGludWUgZTtjYXNlIDIzOmlmKDB8QSl7QmU9MTk7YnJlYWsgZX1pZihhW09lPj4yXT1tPWMrMXwwLCgwfChBPUxlLW18MCkpPD0wKXtjPS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbSysoMHxidFttPj4wXSk+PjBdKXtjYXNlIDI5OkJlPTIyO2JyZWFrIGU7Y2FzZSAyNDpjYXNl''@;'; put 'put ''IDIyOmFbT2U+PjJdPXc9YysyfDAsQT0xLGM9dztjb250aW51ZSBlO2Nhc2UgNTppZigoMHxBKTwyKXtjPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2I+PjJdXShsLG0pKSl7QmU9MjY7YnJlYWsgZX1hW09lPj4yXT13PWMrM3wwLEE9MSxjPXc7Y29udGludWUgZTtjYXNlIDY6aWYoKDB8''@;'; put 'put ''QSk8Myl7Yz0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtrPj4yXV0obCxtKSkpe0JlPTMwO2JyZWFrIGV9YVtPZT4+Ml09dz1jKzR8MCxBPTEsYz13O2NvbnRpbnVlIGU7Y2FzZSA3OmlmKCgwfEEpPDQpe2M9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbTT4+Ml1dKGwsbSkpKXtCZT0z''@;'; put 'put ''NDticmVhayBlfWFbT2U+PjJdPXc9Yys1fDAsQT0xLGM9dztjb250aW51ZSBlO2RlZmF1bHQ6QmU9MzY7YnJlYWsgZX1jYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmZvcig7Oyl7aWYoYVtPZT4+Ml09Yz1jKzF8MCwoTGUtY3wwKTw9MCl7Yz0tMTticmVhayBlfXN3aXRjaCgwfHVlW0srKDB8YnRb''@;'; put 'put ''Yz4+MF0pPj4wXSl7Y2FzZSAxNDpicmVhayB0O2Nhc2UgOTpjYXNlIDEwOmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDpCZT0zOTticmVhayBlfX1jYXNlIDE0OmJyZWFrO2RlZmF1bHQ6QmU9OTI7YnJlYWsgZX19d2hpbGUoMCk7Zm9yKDs7KXtpZihhW09lPj4yXT1tPWMrMXwwLChMZS1tfDApPD0w''@;'; put 'put ''KXtjPS0xO2JyZWFrIGV9aWYoKDF8KHc9MHx1ZVtLKygwfGJ0W20+PjBdKT4+MF0pKTw8MjQ+PjI0PT0xMylicmVhaztzd2l0Y2godzw8MjQ+PjI0KXtjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmM9bTticmVhaztkZWZhdWx0OkJlPTQzO2JyZWFrIGV9fWFbT2U+PjJdPWM9YysyfDA7dDpmb3Io''@;'; put 'put ''Ozspe2lmKCgwfChtPUxlLWN8MCkpPD0wKXtjPS0xO2JyZWFrIGV9aWYoKEE9MHx1ZVtLKygwfGJ0W2M+PjBdKT4+MF0pPDwyND4+MjQ9PXc8PDI0Pj4yNClicmVhaztzd2l0Y2goQTw8MjQ+PjI0KXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDpCZT02MDticmVhayBlO2Nhc2UgMjpCZT02NTticmVh''@;'; put 'put ''ayBlO2Nhc2UgNTppZigoMHxtKTwyKXtjPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtEPj4yXV0obCxjKSl7QmU9NTA7YnJlYWsgZX1hW09lPj4yXT1BPWMrMnwwLGM9QTtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxtKTwzKXtjPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtSPj4yXV0obCxj''@;'; put 'put ''KSl7QmU9NTQ7YnJlYWsgZX1hW09lPj4yXT1BPWMrM3wwLGM9QTtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxtKTw0KXtjPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtHPj4yXV0obCxjKSl7QmU9NTg7YnJlYWsgZX1hW09lPj4yXT1BPWMrNHwwLGM9QTtjb250aW51ZSB0O2Nhc2UgMzppZigo''@;'; put 'put ''MHwoYz0wfEt5KGwsYysxfDAsZixPZSkpKTwxKXtCZT02MzticmVhayBlfWM9MHxhW09lPj4yXTtjb250aW51ZSB0O2RlZmF1bHQ6YVtPZT4+Ml09QT1jKzF8MCxjPUE7Y29udGludWUgdH19aWYoYVtPZT4+Ml09bT1jKzF8MCwoTGUtbXwwKTw9MCl7Yz0tMTticmVha31zd2l0Y2goMHx1ZVtL''@;'; put 'put ''KygwfGJ0W20+PjBdKT4+MF0pe2Nhc2UgMTE6QmU9ODY7YnJlYWsgZTtjYXNlIDE3OkJlPTg3O2JyZWFrIGU7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpjPW07YnJlYWs7ZGVmYXVsdDpCZT02OTticmVhayBlfXQ6Zm9yKDs7KXtpZihhW09lPj4yXT1tPWMrMXwwLCgwfChBPUxlLW18MCkpPD0w''@;'; put 'put ''KXtjPS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbSysoMHxidFttPj4wXSk+PjBdKXtjYXNlIDI5OkJlPTcyO2JyZWFrIGU7Y2FzZSAxMTpCZT04NjticmVhayBlO2Nhc2UgMTc6QmU9ODc7YnJlYWsgZTtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmM9bTticmVhaztjYXNlIDI0OmNhc2UgMjI6QmU9''@;'; put 'put ''NzM7YnJlYWsgdDtjYXNlIDU6QmU9NzQ7YnJlYWsgdDtjYXNlIDY6QmU9Nzg7YnJlYWsgdDtjYXNlIDc6QmU9ODI7YnJlYWsgdDtkZWZhdWx0OkJlPTkxO2JyZWFrIGV9fWlmKDczIT0oMHxCZSkpaWYoNzQhPSgwfEJlKSlpZig3OCE9KDB8QmUpKWlmKDgyIT0oMHxCZSkpO2Vsc2V7aWYoQmU9''@;'; put 'put ''MCwoMHxBKTw0KXtjPS0yO2JyZWFrfWlmKCEoMHxSaVsxMjcmYVtNPj4yXV0obCxtKSkpe0JlPTg0O2JyZWFrfWFbT2U+PjJdPWM9Yys1fDAsQT0wfWVsc2V7aWYoQmU9MCwoMHxBKTwzKXtjPS0yO2JyZWFrfWlmKCEoMHxSaVsxMjcmYVtrPj4yXV0obCxtKSkpe0JlPTgwO2JyZWFrfWFbT2U+''@;'; put 'put ''PjJdPWM9Yys0fDAsQT0wfWVsc2V7aWYoQmU9MCwoMHxBKTwyKXtjPS0yO2JyZWFrfWlmKCEoMHxSaVsxMjcmYVtiPj4yXV0obCxtKSkpe0JlPTc2O2JyZWFrfWFbT2U+PjJdPWM9YyszfDAsQT0wfWVsc2UgQmU9MCxhW09lPj4yXT1jPWMrMnwwLEE9MH1zd2l0Y2goMHxCZSl7Y2FzZSA0OmNh''@;'; put 'put ''c2UgODpjYXNlIDEyOmNhc2UgMTY6Y2FzZSAxOTpjYXNlIDM5OmNhc2UgNTA6Y2FzZSA1NDpjYXNlIDU4OmNhc2UgNjA6Y2FzZSA2NTpjYXNlIDkyOmFbcD4+Ml09YyxjPTA7YnJlYWs7Y2FzZSAyMjpjYXNlIDI2OmNhc2UgMzA6Y2FzZSAzNDpjYXNlIDM2OmNhc2UgNDM6Y2FzZSA2OTpjYXNl''@;'; put 'put ''IDcyOmNhc2UgNzY6Y2FzZSA4MDpjYXNlIDg0OmNhc2UgOTE6YVtwPj4yXT1tLGM9MDticmVhaztjYXNlIDYzOmN8fChhW3A+PjJdPWFbT2U+PjJdLGM9MCk7YnJlYWs7Y2FzZSA4NjphW3A+PjJdPWMrMixjPTE7YnJlYWs7Y2FzZSA4NzppZihhW09lPj4yXT1jPW0rMXwwLChMZS1jfDApPjAp''@;'; put 'put ''e2lmKDYyPT0oMHx1ZVtjPj4wXSkpe2FbcD4+Ml09bSsyLGM9MzticmVha31hW3A+PjJdPWMsYz0wO2JyZWFrfWM9LTF9cmV0dXJuIG9lPUhlLDB8Y31mdW5jdGlvbiBEaihsLGMsZil7bHw9MCxjfD0wLGFbKGZ8PTApPj4yXT0xMTtlOmRve2lmKDM9PShjLWx8MCkpe3N3aXRjaCgwfHVlW2w+''@;'; put 'put ''PjBdKXtjYXNlIDEyMDpjPTA7YnJlYWs7Y2FzZSA4ODpjPTE7YnJlYWs7ZGVmYXVsdDpjPTE7YnJlYWsgZX1zd2l0Y2goMHx1ZVtsKzE+PjBdKXtjYXNlIDEwOTpicmVhaztjYXNlIDc3OmM9MTticmVhaztkZWZhdWx0OmM9MTticmVhayBlfXN3aXRjaCgwfHVlW2wrMj4+MF0pe2Nhc2UgMTA4''@;'; put 'put ''OmJyZWFrO2Nhc2UgNzY6Yz0wO2JyZWFrIGU7ZGVmYXVsdDpjPTE7YnJlYWsgZX1jP2M9MDooYVtmPj4yXT0xMixjPTEpfWVsc2UgYz0xfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gRksobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLGssTSxELEE9MCx3PTAsUj0w''@;'; put 'put ''O2I9NzIrKGN8PTApfDAsaz1jKzM1MnwwLE09YyszNTZ8MCxEPWMrMzYwfDA7ZTpmb3IoOzspe2lmKCgwfChBPXAtZnwwKSk8PTApe3A9LTE7YnJlYWt9c3dpdGNoKCh3PTB8dWVbYisoMHxidFtmPj4wXSk+PjBdKTw8MjQ+PjI0KXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDpSPTE2O2JyZWFrIGU7''@;'; put 'put ''Y2FzZSA1OmlmKCgwfEEpPDIpe3A9LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW2s+PjJdXShjLGYpKXtSPTY7YnJlYWsgZX1mPWYrMnwwO2NvbnRpbnVlIGU7Y2FzZSA2OmlmKCgwfEEpPDMpe3A9LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW00+PjJdXShjLGYpKXtSPTEwO2JyZWFrIGV9Zj1m''@;'; put 'put ''KzN8MDtjb250aW51ZSBlO2Nhc2UgNzppZigoMHxBKTw0KXtwPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtEPj4yXV0oYyxmKSl7Uj0xNDticmVhayBlfWY9Zis0fDA7Y29udGludWUgZTtjYXNlIDEzOmNhc2UgMTI6aWYoZj1mKzF8MCwoMjU1Jnd8MCk9PSgwfGwpKXtSPTE4O2JyZWFrIGV9''@;'; put 'put ''Y29udGludWUgZTtkZWZhdWx0OmY9ZisxfDA7Y29udGludWUgZX19ZTpkb3tpZig2PT0oMHxSKSlhW20+PjJdPWYscD0wO2Vsc2UgaWYoMTA9PSgwfFIpKWFbbT4+Ml09ZixwPTA7ZWxzZSBpZigxND09KDB8UikpYVttPj4yXT1mLHA9MDtlbHNlIGlmKDE2PT0oMHxSKSlhW20+PjJdPWYscD0w''@;'; put 'put ''O2Vsc2UgaWYoMTg9PSgwfFIpKWlmKChwLWZ8MCk+MCl7c3dpdGNoKGFbbT4+Ml09ZiwwfHVlW2IrKDB8YnRbZj4+MF0pPj4wXSl7Y2FzZSAyMDpjYXNlIDMwOmNhc2UgMTE6Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpwPTI3O2JyZWFrIGV9cD0wfWVsc2UgcD0tMjd9d2hpbGUoMCk7cmV0dXJu''@;'; put 'put ''IDB8cH1mdW5jdGlvbiBISyhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgbSxBPTAsdz0wO209Znw9MDtlOmRve2lmKChtLWN8MCk+MClzd2l0Y2goQT1sKzcyfDAsMHx1ZVtBKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgMjc6bD0wfHdMKGwsYysxfDAsZixwKTticmVhayBlO2Nhc2UgMjA6''@;'; put 'put ''YVtwPj4yXT1jKzEsbD0zMzticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjp0OmZvcig7Oyl7aWYoKDB8KGY9bS0obD1jKzF8MCl8MCkpPD0wKXtsPS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbQSsoMHxidFtsPj4wXSk+PjBdKXtjYXNlIDI0OmNhc2UgMjI6Yz1sO2JyZWFrO2Nhc2UgMzA6dz04O2Jy''@;'; put 'put ''ZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpicmVhayB0O2RlZmF1bHQ6dz0xMjticmVhayB0fX1pZigxMj09KDB8dykpe2FbcD4+Ml09bCxsPTA7YnJlYWsgZX10OmRve2lmKDg9PSgwfHcpKXtpZigoMHxmKTw9MSl7bD0tMTticmVhayBlfXN3aXRjaCgwfHVlW0ErKDB8YnRbYysyPj4w''@;'; put 'put ''XSk+PjBdKXtjYXNlIDMwOmNhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDpicmVhayB0fWFbcD4+Ml09bCxsPTA7YnJlYWsgZX19d2hpbGUoMCk7YVtwPj4yXT1sLGw9MTY7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxsPTA7YnJlYWsgZX1lbHNlIGw9LTF9d2hpbGUoMCk7''@;'; put 'put ''cmV0dXJuIDB8bH1mdW5jdGlvbiBMaihsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7bT0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHxtKT4wKXtzd2l0Y2goMHx1ZVsoaz1sKzcyfDApKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6ZGVmYXVsdDphW3A+PjJd''@;'; put 'put ''PWMsZj0wO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MTticmVhaztjYXNlIDU6aWYoKDB8bSk8Mil7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtsKzM0MD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2Jy''@;'; put 'put ''ZWFrIGV9aWYoISgwfFJpWzEyNyZhW2wrMzQ0Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1tPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbbCszNDg+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfW09NH1B''@;'; put 'put ''PWwrMzI4fDAsdz1sKzMzMnwwLGI9bCszMzZ8MCxjPWMrbXwwO3Q6Zm9yKDs7KXtpZigoMHwobT1mLWN8MCkpPD0wKXtmPS0yMDticmVhayBlfXN3aXRjaCgwfHVlW2srKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOTptPTE3O2JyZWFrIHQ7Y2FzZSAzNjpjYXNlIDMwOmNhc2UgMTE6Y2FzZSAz''@;'; put 'put ''MjpjYXNlIDIxOmNhc2UgMTA6Y2FzZSA5Om09Mjg7YnJlYWsgdDtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW0E+PjJdXShsLGMpKSl7bT0yMDticmVhayB0fW09''@;'; put 'put ''MjticmVhaztjYXNlIDY6aWYoKDB8bSk8Myl7Zj0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVt3Pj4yXV0obCxjKSkpe209MjM7YnJlYWsgdH1tPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbYj4+Ml1dKGwsYykpKXttPTI2O2JyZWFr''@;'; put 'put ''IHR9bT00O2JyZWFrO2RlZmF1bHQ6bT0yOTticmVhayB0fWM9YyttfDB9aWYoMTc9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfWlmKDIwPT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31pZigyMz09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9aWYoMjY9PSgwfG0pKXthW3A+PjJd''@;'; put 'put ''PWMsZj0wO2JyZWFrfWlmKDI4PT0oMHxtKSl7YVtwPj4yXT1jLGY9MjA7YnJlYWt9aWYoMjk9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfX1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBzMChsLGMpe2N8PTA7dmFyIGY9MDtzd2l0Y2goKGx8PTApPDwyND4+MjQp''@;'; put 'put ''e2Nhc2UtMzc6Y2FzZS0zODpjYXNlLTM5OmNhc2UtNDA6bD03O2JyZWFrO2Nhc2UtMzM6Y2FzZS0zNDpjYXNlLTM1OmNhc2UtMzY6bD04O2JyZWFrO2Nhc2UtMTooMjU1JmMpPjI1Mz9sPTA6Zj00O2JyZWFrO2RlZmF1bHQ6Zj00fXJldHVybiA0PT0oMHxmKSYmKGw9MjkpLDB8bH1mdW5jdGlv''@;'; put 'put ''biBzUyhsLGMsZixwKXtsfD0wLHB8PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wO3c9KGs9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfHVlW2MrMT4+MF0pPDwyND4+MjQ/MHxzMChiLEE9MHx1ZVtjPj4wXSk6MHxidFtsKzcyKygyNTUmKEE9MHx1ZVtj''@;'; put 'put ''Pj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8YnRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxsPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6''@;'; put 'put ''YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgMTk6bD0wfEpLKGwsYysyfDAsZixwKTticmVhayBl''@;'; put 'put ''fWI9bCs3MnwwLHc9Yzt0OmZvcig7Oyl7aWYoKDB8KGM9ay0oQT13KzJ8MCl8MCkpPD0xKXtsPS0xO2JyZWFrIGV9c3dpdGNoKG09MHx1ZVtBPj4wXSwwfChmPShsPTB8dWVbdyszPj4wXSk8PDI0Pj4yND8wfHMwKGwsbSk6MHxidFtiKygyNTUmbSk+PjBdKSl7Y2FzZSAyNzpjYXNlIDI2OmNh''@;'; put 'put ''c2UgMjU6Y2FzZSAyNDpjYXNlIDIyOnc9QTtjb250aW51ZSB0O2Nhc2UgNTptPTIzO2JyZWFrIHQ7Y2FzZSA2Om09MjQ7YnJlYWsgdDtjYXNlIDc6bT0yNjticmVhayB0O2Nhc2UgMTg6bT0yODticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTI5O2JyZWFrIHR9aWYoISgxPDwoMzEm''@;'; put 'put ''KGM9MjU1Jm0pKSZhWzU2OTQwKygoYz4+PjV8KDB8YnRbMTQ0MDQ0KygyNTUmbCk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjI7YnJlYWt9dz1BfWlmKDIyPT0oMHxtKSl7YVtwPj4yXT1BLGw9MDticmVha31pZigyMz09KDB8bSkpe2FbcD4+Ml09QSxsPTA7YnJlYWt9aWYoMjQ9PSgwfG0pKXtp''@;'; put 'put ''ZigoMHxjKTwzKXtsPS0yO2JyZWFrfWFbcD4+Ml09QSxsPTA7YnJlYWt9aWYoMjY9PSgwfG0pKXtpZigoMHxjKTw0KXtsPS0yO2JyZWFrfWFbcD4+Ml09QSxsPTA7YnJlYWt9aWYoMjg9PSgwfG0pKXthW3A+PjJdPXcrNCxsPTk7YnJlYWt9aWYoMjk9PSgwfG0pKXthW3A+PjJdPUEsbD0wO2Jy''@;'; put 'put ''ZWFrfX1lbHNlIGw9LTF9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBjdihsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfHVlW2MrMT4+MF0pPDwyND4+MjQ/MHxz''@;'; put 'put ''MChiLEE9MHx1ZVtjPj4wXSk6MHxidFtsKzcyKygyNTUmKEE9MHx1ZVtjPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKGs9MjU1JkEpKSZhWzU2OTQwKygoaz4+PjV8KDB8YnRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1i''@;'; put 'put ''cmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDti''@;'; put 'put ''cmVhayBlO2Nhc2UgMzA6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMTphW3A+PjJdPWMsZj0yMjticmVhayBlfWs9bCs3MnwwLGw9Yzt0OmZvcig7Oyl7aWYoKDB8KGM9Zi0oYj1sKzJ8MCl8MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKEE9MHx1ZVtiPj4wXSwwfCh3PShtPTB8dWVbbCszPj4w''@;'; put 'put ''XSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmw9Yjtjb250aW51ZSB0O2Nhc2UgNTptPTIzO2JyZWFrIHQ7Y2FzZSA2Om09MjQ7YnJlYWsgdDtjYXNlIDc6bT0yNjticmVhayB0O2Nhc2UgMTg6''@;'; put 'put ''bT0yODticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTI5O2JyZWFrIHR9aWYoISgxPDwoMzEmKGM9MjU1JkEpKSZhWzU2OTQwKygoYz4+PjV8KDB8YnRbMTQ0MDQ0KygyNTUmbSk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjI7YnJlYWt9bD1ifWlmKDIyPT0oMHxtKSl7YVtwPj4yXT1i''@;'; put 'put ''LGY9MDticmVha31pZigyMz09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjQ9PSgwfG0pKXtpZigoMHxjKTwzKXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjY9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjg9''@;'; put 'put ''PSgwfG0pKXthW3A+PjJdPWwrNCxmPTI4O2JyZWFrfWlmKDI5PT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha319ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gSksobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTA7Yj1mfD0wO2U6ZG97aWYo''@;'; put 'put ''KGItY3wwKT4xKXtBPTB8dWVbYysxPj4wXSxtPTB8dWVbYz4+MF07ZG97aWYoIShBPDwyND4+MjQpKXtpZihtPDwyND4+MjQ9PTEyMCl7bT0wfHVTKGwsYysyfDAsZixwKTticmVhayBlfW09MHxidFtsKzcyKygyNTUmbSk+PjBdO2JyZWFrfW09MHxzMChBLG0pfXdoaWxlKDApO2lmKDI1IT0o''@;'; put 'put ''MHxtKSl7YVtwPj4yXT1jLG09MDticmVha313PWwrNzJ8MCxsPWM7dDpmb3IoOzspe2lmKChiLShBPWwrMnwwKXwwKTw9MSl7bT0tMTticmVhayBlfXN3aXRjaChmPTB8dWVbQT4+MF0sMHwobT0obT0wfHVlW2wrMz4+MF0pPDwyND4+MjQ/MHxzMChtLGYpOjB8YnRbdysoMjU1JmYpPj4wXSkp''@;'; put 'put ''e2Nhc2UgMjU6bD1BO2JyZWFrO2Nhc2UgMTg6Zj0xNTticmVhayB0O2RlZmF1bHQ6Zj0xNjticmVhayB0fX1pZigxNT09KDB8Zikpe2FbcD4+Ml09bCs0LG09MTA7YnJlYWt9aWYoMTY9PSgwfGYpKXthW3A+PjJdPUEsbT0wO2JyZWFrfX1lbHNlIG09LTF9d2hpbGUoMCk7cmV0dXJuIDB8bX1m''@;'; put 'put ''dW5jdGlvbiB1UyhsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MDtlOmRve2lmKChmLWN8MCk+MSl7aWYoMjQhPSgtMiYobT0obT0wfHVlW2MrMT4+MF0pPDwyND4+MjQ/MHxzMChtLDB8dWVbYz4+MF0pOjB8YnRbbCs3MisoMHxidFtjPj4wXSk+PjBdKXwwKSl7''@;'; put 'put ''YVtwPj4yXT1jLGY9MDticmVha313PWwrNzJ8MDt0OmZvcig7Oyl7aWYoKGYtKEE9YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKGw9MHx1ZVtBPj4wXSwwfChtPShtPTB8dWVbYyszPj4wXSk8PDI0Pj4yND8wfHMwKG0sbCk6MHxidFt3KygyNTUmbCk+PjBdKSl7Y2FzZSAyNDpj''@;'; put 'put ''YXNlIDI1OmM9QTticmVhaztjYXNlIDE4Om09MTM7YnJlYWsgdDtkZWZhdWx0Om09MTQ7YnJlYWsgdH19aWYoMTM9PSgwfG0pKXthW3A+PjJdPWMrNCxmPTEwO2JyZWFrfWlmKDE0PT0oMHxtKSl7YVtwPj4yXT1BLGY9MDticmVha319ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVu''@;'; put 'put ''Y3Rpb24gZnYobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO3c9KFI9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfHVlW2MrMT4+MF0pPDwyND4+MjQ/MHxzMChiLEE9MHx1ZVtjPj4wXSk6MHxidFts''@;'; put 'put ''KzcyKygyNTUmKEE9MHx1ZVtjPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKE09MjU1JkEpKSZhWzU2OTQwKygoTT4+PjV8YnRbMTQzNzg4KygyNTUmYik+PjBdPDwzKTw8Mik+PjJdKSl7YVtwPj4yXT1jLG09MDticmVhayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztj''@;'; put 'put ''YXNlIDU6YVtwPj4yXT1jLG09MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXttPS0yO2JyZWFrIGV9YVtwPj4yXT1jLG09MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1jLG09MDticmVhayBlO2Nhc2UgMTY6aWYoKFItKEE9YysyfDApfDApPD0x''@;'; put 'put ''KXttPS0xO2JyZWFrIGV9c3dpdGNoKDB8KG09KG09MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8czAobSwwfHVlW0E+PjBdKTowfGJ0W2wrNzIrKDB8YnRbQT4+MF0pPj4wXSkpe2Nhc2UgMjc6bT0wfEZqKGwsYys0fDAsZixwKTticmVhayBlO2Nhc2UgMjA6bT0wfG53KGMrNHwwLGYscCk7YnJl''@;'; put 'put ''YWsgZTtkZWZhdWx0OmFbcD4+Ml09QSxtPTA7YnJlYWsgZX1jYXNlIDE1Om09MHxydyhsLGMrMnwwLGYscCk7YnJlYWsgZTtjYXNlIDE3Om09MHxYSyhsLGMrMnwwLGYscCk7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZX1NPWwrNzJ8MCxrPTAsbT1jKzJ8MDt0OmZvcig7''@;'; put 'put ''Oyl7bjpmb3IoOzspe2lmKCgwfChBPVItbXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goYj0wfHVlW20+PjBdLDB8KGM9KHc9MHx1ZVttKzE+PjBdKTw8MjQ+PjI0PzB8czAodyxiKTowfGJ0W00rKDI1NSZiKT4+MF0pKXtjYXNlIDU6RD0zNDticmVhayB0O2Nhc2UgNjpEPTM1O2JyZWFr''@;'; put 'put ''IHQ7Y2FzZSA3OkQ9Mzc7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOkQ9NTU7YnJlYWsgdDtjYXNlIDExOkQ9Njk7YnJlYWsgdDtjYXNlIDE3OmJyZWFrIHQ7Y2FzZSAyMzpicmVhayBuO2Nhc2UgMjk6aWYoISgxPDwoMzEmKGM9MjU1JmIpKSZhWzU2OTQwKygoYz4+PjV8YnRbMTQ0''@;'; put 'put ''MDQ0KygyNTUmdyk+PjBdPDwzKTw8Mik+PjJdKSl7RD0zMjticmVhayB0fWJyZWFrO2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpicmVhaztkZWZhdWx0OkQ9NzU7YnJlYWsgdH1tPW0rMnwwfWlmKDB8ayl7RD00MDticmVha31pZigoMHwoYz1SLShiPW0rMnwwKXww''@;'; put 'put ''KSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goQT0wfHVlW2I+PjBdLDB8KHc9KGs9MHx1ZVttKzM+PjBdKTw8MjQ+PjI0PzB8czAoayxBKTowfGJ0W00rKDI1NSZBKT4+MF0pKXtjYXNlIDU6RD00OTticmVhayB0O2Nhc2UgNjpEPTUwO2JyZWFrIHQ7Y2FzZSA3OkQ9NTI7YnJlYWsgdDtjYXNl''@;'; put 'put ''IDI5OmlmKCEoMTw8KDMxJihjPTI1NSZBKSkmYVs1Njk0MCsoKGM+Pj41fGJ0WzE0Mzc4OCsoMjU1JmspPj4wXTw8Myk8PDIpPj4yXSkpe0Q9NDc7YnJlYWsgdH1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7ZGVmYXVsdDpEPTU0O2JyZWFrIHR9az0xLG09bSs0fDB9dDpzd2l0Y2goMHxE''@;'; put 'put ''KXtjYXNlIDMyOmNhc2UgMzQ6Y2FzZSA0MDpjYXNlIDc1OmFbcD4+Ml09bSxtPTA7YnJlYWsgZTtjYXNlIDM1OmlmKCgwfEEpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPW0sbT0wO2JyZWFrIGU7Y2FzZSAzNzppZigoMHxBKTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1tLG09MDticmVhayBl''@;'; put 'put ''O2Nhc2UgNDc6Y2FzZSA0OTpjYXNlIDU0OmFbcD4+Ml09YixtPTA7YnJlYWsgZTtjYXNlIDUwOmlmKCgwfGMpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPWIsbT0wO2JyZWFrIGU7Y2FzZSA1MjppZigoMHxjKTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1iLG09MDticmVhayBlO2Nhc2UgNTU6''@;'; put 'put ''bjpmb3IoOzspe2lmKEQ9MCwoMHwodz1SLShBPW0rMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goYz0wfHVlW0E+PjBdLDB8KGs9KGI9MHx1ZVttKzM+PjBdKTw8MjQ+PjI0PzB8czAoYixjKTowfGJ0W00rKDI1NSZjKT4+MF0pKXtjYXNlIDExOm09QSxEPTY5O2JyZWFrIHQ7Y2Fz''@;'; put 'put ''ZSAxNzptPUE7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOm09QSxEPTU1O2JyZWFrO2Nhc2UgMjk6RD02MDticmVhayBuO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhayBuO2Nhc2UgNTpEPTYzO2JyZWFrIG47Y2FzZSA2OkQ9NjQ7YnJlYWsgbjtjYXNlIDc6RD02NjticmVhayBuO2RlZmF1''@;'; put 'put ''bHQ6RD02ODticmVhayBufX1pZig2MD09KDB8RCkpe2lmKCEoMTw8KDMxJihSPTI1NSZjKSkmYVs1Njk0MCsoKFI+Pj41fGJ0WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX19ZWxzZXtpZig2Mz09KDB8RCkpe2FbcD4+Ml09QSxtPTA7YnJl''@;'; put 'put ''YWsgZX1pZig2ND09KDB8RCkpe2lmKCgwfHcpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPUEsbT0wO2JyZWFrIGV9aWYoNjY9PSgwfEQpKXtpZigoMHx3KTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1BLG09MDticmVhayBlfWlmKDY4PT0oMHxEKSl7YVtwPj4yXT1BLG09MDticmVhayBlfX1t''@;'; put 'put ''PTB8TDFlKGwsbSs0fDAsZixwKTticmVhayBlfWlmKDY5PT0oMHxEKSl7YVtwPj4yXT1tKzIsbT0yO2JyZWFrfWlmKChSLShBPW0rMnwwKXwwKT4xKXtpZigwPT0oMHx1ZVttKzM+PjBdKSYmNjI9PSgwfHVlW0E+PjBdKSl7YVtwPj4yXT1tKzQsbT00O2JyZWFrfWFbcD4+Ml09QSxtPTB9ZWxz''@;'; put 'put ''ZSBtPS0xfWVsc2UgbT0tMX13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIEZqKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciB3LG09MCxBPTAsYj0wO3c9Znw9MDtlOmRve2lmKCh3LWN8MCk+MSl7aWYoMD09KDB8dWVbYysxPj4wXSkmJjQ1PT0oMHx1ZVtjPj4wXSkpe0E9bCs3Mnww''@;'; put 'put ''LG09YysyfDA7dDpmb3IoOzspe2lmKCgwfChjPXctbXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2gobD0wfHVlW20+PjBdLDB8KGY9KGY9MHx1ZVttKzE+PjBdKTw8MjQ+PjI0PzB8czAoZixsKTowfGJ0W0ErKDI1NSZsKT4+MF0pKXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDpiPTE2O2JyZWFr''@;'; put 'put ''IHQ7Y2FzZSA1OmRlZmF1bHQ6bT1tKzJ8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxjKTwzKXtmPS0yO2JyZWFrIGV9bT1tKzN8MDtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxjKTw0KXtmPS0yO2JyZWFrIGV9bT1tKzR8MDtjb250aW51ZSB0O2Nhc2UgMjc6aWYoKHctKGY9bSsyfDApfDAp''@;'; put 'put ''PD0xKXtmPS0xO2JyZWFrIGV9aWYoMHx1ZVttKzM+PjBdKXttPWY7Y29udGludWUgdH1pZig0NT09KDB8dWVbZj4+MF0pKWJyZWFrIHQ7bT1mO2NvbnRpbnVlIHR9fWlmKDE2PT0oMHxiKSl7YVtwPj4yXT1tLGY9MDticmVha31pZigody0oZj1tKzR8MCl8MCk8PTEpe2Y9LTE7YnJlYWt9aWYo''@;'; put 'put ''MD09KDB8dWVbbSs1Pj4wXSkmJjYyPT0oMHx1ZVtmPj4wXSkpe2FbcD4+Ml09bSs2LGY9MTM7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31hW3A+PjJdPWMsZj0wfWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIG53KGwsYyxmKXtpZihmfD0wLCgoY3w9MCktKGx8PTAp''@;'; put 'put ''fDApPjExKXtmb3IoYz0wOzspe2lmKCgwfGMpPj02KXtjPTg7YnJlYWt9aWYoMHx1ZVtsKzE+PjBdKXtjPTA7YnJlYWt9aWYoKDB8dWVbbD4+MF0pIT0oMHx1ZVsxNDQzMDArYz4+MF0pKXtjPTA7YnJlYWt9Yz1jKzF8MCxsPWwrMnwwfWFbZj4+Ml09bH1lbHNlIGM9LTE7cmV0dXJuIDB8Y31m''@;'; put 'put ''dW5jdGlvbiBydyhsLGMsZixwKXtsfD0wLHB8PTA7dmFyIEQsUixHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO0c9b2Usb2U9b2UrMTZ8MCxSPUcsdz0oRD1mfD0wKS0oY3w9MCl8MDtlOmRve2lmKCgwfHcpPjEpe3N3aXRjaCgwfChtPShmPTB8dWVbYysxPj4wXSk8PDI0Pj4yND8wfHMwKGYs''@;'; put 'put ''QT0wfHVlW2M+PjBdKTowfGJ0W2wrNzIrKDI1NSYoQT0wfHVlW2M+PjBdKSk+PjBdKSl7Y2FzZSAyOTppZighKDE8PCgzMSYoaz0yNTUmQSkpJmFbNTY5NDArKChrPj4+NXxidFsxNDM3ODgrKDI1NSZmKT4+MF08PDMpPDwyKT4+Ml0pKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9YnJlYWs7Y2Fz''@;'; put 'put ''ZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgNTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDY6aWYoKDB8dyk8Myl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDc6aWYoKDB8dyk8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZX1r''@;'; put 'put ''PWwrNzJ8MCxiPWM7dDpmb3IoOzspe2lmKCgwfChtPUQtKGY9YisyfDApfDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaCh3PTB8dWVbZj4+MF0sMHwobD0oQT0wfHVlW2IrMz4+MF0pPDwyND4+MjQ/MHxzMChBLHcpOjB8YnRbaysoMjU1JncpPj4wXSkpe2Nhc2UgMjc6Y2FzZSAyNjpjYXNl''@;'; put 'put ''IDI1OmNhc2UgMjQ6Y2FzZSAyMjpiPWY7Y29udGludWUgdDtjYXNlIDU6TT0yMjticmVhayB0O2Nhc2UgNjpNPTIzO2JyZWFrIHQ7Y2FzZSA3Ok09MjU7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOk09Mjc7YnJlYWsgdDtjYXNlIDE1Ok09NDY7YnJlYWsgdDtjYXNlIDI5OmJyZWFr''@;'; put 'put ''O2RlZmF1bHQ6YnJlYWsgdH1pZighKDE8PCgzMSYoYj0yNTUmdykpJmFbNTY5NDArKChiPj4+NXxidFsxNDQwNDQrKDI1NSZBKT4+MF08PDMpPDwyKT4+Ml0pKXtNPTIxO2JyZWFrfWI9Zn1pZigyMT09KDB8TSkpe2FbcD4+Ml09ZixmPTA7YnJlYWt9aWYoMjI9PSgwfE0pKXthW3A+PjJdPWYs''@;'; put 'put ''Zj0wO2JyZWFrfWlmKDIzPT0oMHxNKSl7aWYoKDB8bSk8Myl7Zj0tMjticmVha31hW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDI1PT0oMHxNKSl7aWYoKDB8bSk8NCl7Zj0tMjticmVha31hW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDI3PT0oMHxNKSl7aWYoISgwfEhqKGMsZixSKSkpe2FbcD4+Ml09''@;'; put 'put ''ZixmPTA7YnJlYWt9dz1iKzR8MDt0OmZvcig7Oyl7aWYoKDB8KEE9RC13fDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChtPTB8dWVbdz4+MF0sMHwoZj0oZj0wfHVlW3crMT4+MF0pPDwyND4+MjQ/MHxzMChmLG0pOjB8YnRbaysoMjU1Jm0pPj4wXSkpe2Nhc2UgODpjYXNlIDE6Y2FzZSAw''@;'; put 'put ''Ok09NDA7YnJlYWsgdDtjYXNlIDU6ZGVmYXVsdDp3PXcrMnwwO2NvbnRpbnVlIHQ7Y2FzZSA2OmlmKCgwfEEpPDMpe2Y9LTI7YnJlYWsgZX13PXcrM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfEEpPDQpe2Y9LTI7YnJlYWsgZX13PXcrNHwwO2NvbnRpbnVlIHQ7Y2FzZSAxNTppZigoRC0o''@;'; put 'put ''Zj13KzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwfHVlW3crMz4+MF0pe3c9Zjtjb250aW51ZSB0fWlmKDYyPT0oMHx1ZVtmPj4wXSkpe009NDQ7YnJlYWsgdH13PWY7Y29udGludWUgdH19aWYoNDA9PSgwfE0pKXthW3A+PjJdPXcsZj0wO2JyZWFrfWlmKDQ0PT0oMHxNKSl7YVtwPj4y''@;'; put 'put ''XT13KzQsZj0wfGFbUj4+Ml07YnJlYWt9fWVsc2UgaWYoNDY9PSgwfE0pKXtpZighKDB8SGooYyxmLFIpKSl7YVtwPj4yXT1mLGY9MDticmVha31pZigoRC0oZj1iKzR8MCl8MCk8PTEpe2Y9LTE7YnJlYWt9aWYoMD09KDB8dWVbYis1Pj4wXSkmJjYyPT0oMHx1ZVtmPj4wXSkpe2FbcD4+Ml09''@;'; put 'put ''Yis2LGY9MHxhW1I+PjJdO2JyZWFrfX1hW3A+PjJdPWYsZj0wfWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gb2U9RywwfGZ9ZnVuY3Rpb24gWEsobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO3c9KGZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8dyk+MSl7c3dp''@;'; put 'put ''dGNoKDB8KG09KGI9MHx1ZVtjKzE+PjBdKTw8MjQ+PjI0PzB8czAoYixBPTB8dWVbYz4+MF0pOjB8YnRbbCs3MisoMjU1JihBPTB8dWVbYz4+MF0pKT4+MF0pKXtjYXNlIDI5OmlmKCEoMTw8KDMxJihrPTI1NSZBKSkmYVs1Njk0MCsoKGs+Pj41fCgwfGJ0WzE0Mzc4OCsoMjU1JmIpPj4wXSk8''@;'; put 'put ''PDMpPDwyKT4+Ml0pKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9YnJlYWs7Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgNTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDY6aWYoKDB8dyk8Myl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDc6aWYo''@;'; put 'put ''KDB8dyk8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZX1rPWwrNzJ8MCxsPWM7dDpmb3IoOzspe2lmKCgwfChjPWYtKHc9bCsyfDApfDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChBPTB8dWVbdz4+MF0sMHwoYj0obT0wfHVlW2wrMz4+MF0pPDwyND4+MjQ/MHxzMCht''@;'; put 'put ''LEEpOjB8YnRbaysoMjU1JkEpPj4wXSkpe2Nhc2UgMjM6Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmw9dztjb250aW51ZSB0O2Nhc2UgNTptPTIyO2JyZWFrIHQ7Y2FzZSA2Om09MjM7YnJlYWsgdDtjYXNlIDc6bT0yNTticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNh''@;'; put 'put ''c2UgMjE6bT0yNzticmVhayB0O2Nhc2UgMTE6bT0zNDticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTM1O2JyZWFrIHR9aWYoISgxPDwoMzEmKGM9MjU1JkEpKSZhWzU2OTQwKygoYz4+PjV8KDB8YnRbMTQ0MDQ0KygyNTUmbSk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjE7YnJlYWt9''@;'; put 'put ''bD13fWlmKDIxPT0oMHxtKSl7YVtwPj4yXT13LGY9MDticmVha31pZigyMj09KDB8bSkpe2FbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjM9PSgwfG0pKXtpZigoMHxjKTwzKXtmPS0yO2JyZWFrfWFbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjU9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFr''@;'; put 'put ''fWFbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjc9PSgwfG0pKXt0OmZvcig7Oyl7aWYoKGYtKGI9dysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKEE9MHx1ZVtiPj4wXSwwfChtPShtPTB8dWVbdyszPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2Fz''@;'; put 'put ''ZSAxMDpjYXNlIDk6Y2FzZSAyMTp3PWIsbT0yNzticmVhaztjYXNlIDExOm09MzI7YnJlYWsgdDtkZWZhdWx0Om09MzM7YnJlYWsgdH19aWYoMzI9PSgwfG0pKXthW3A+PjJdPXcrNCxmPTU7YnJlYWt9aWYoMzM9PSgwfG0pKXthW3A+PjJdPWIsZj0wO2JyZWFrfX1lbHNle2lmKDM0PT0oMHxt''@;'; put 'put ''KSl7YVtwPj4yXT1sKzQsZj01O2JyZWFrfWlmKDM1PT0oMHxtKSl7YVtwPj4yXT13LGY9MDticmVha319fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIEwxZShsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgRCxHLEsscGUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAs''@;'; put 'put ''Uj0wO3BlPW9lLG9lPW9lKzE2fDAsYVsoRz1wZSk+PjJdPWN8PTAsSz1mLEQ9bCs3MnwwLG09MDtlOmZvcig7Oyl7dDpmb3IoOzspe2lmKCgwfChrPUstY3wwKSk8PTEpe2M9LTE7YnJlYWsgZX1zd2l0Y2godz0wfHVlW2M+PjBdLDB8KGI9KEE9MHx1ZVtjKzE+PjBdKTw8MjQ+PjI0PzB8czAo''@;'; put 'put ''QSx3KTowfGJ0W0QrKDI1NSZ3KT4+MF0pKXtjYXNlIDU6Uj0xMTticmVhayBlO2Nhc2UgNjpSPTEyO2JyZWFrIGU7Y2FzZSA3OlI9MTQ7YnJlYWsgZTtjYXNlIDIzOlI9MTY7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOlI9MzE7YnJlYWsgdDtjYXNlIDE0OlI9Mzc7YnJlYWsgdDtj''@;'; put 'put ''YXNlIDI5OmlmKCEoMTw8KDMxJihNPTI1NSZ3KSkmYVs1Njk0MCsoKE0+Pj41fGJ0WzE0NDA0NCsoMjU1JkEpPj4wXTw8Myk8PDIpPj4yXSkpe1I9OTticmVhayBlfWJyZWFrO2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpicmVhaztkZWZhdWx0OlI9ODk7YnJlYWsg''@;'; put 'put ''ZX1hW0c+PjJdPU09YysyfDAsYz1NfXQ6ZG97aWYoMTY9PSgwfFIpKXtpZihSPTAsMHxtKXtSPTE3O2JyZWFrIGV9aWYoYVtHPj4yXT1tPWMrMnwwLCgwfCh3PUstKEE9bSl8MCkpPD0xKXtjPS0xO2JyZWFrIGV9c3dpdGNoKGs9MHx1ZVttPj4wXSwwfChNPShiPTB8dWVbYyszPj4wXSk8PDI0''@;'; put 'put ''Pj4yND8wfHMwKGIsayk6MHxidFtEKygyNTUmayk+PjBdKSl7Y2FzZSA1OlI9MjU7YnJlYWsgZTtjYXNlIDY6Uj0yNjticmVhayBlO2Nhc2UgNzpSPTI4O2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MTticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDpSPTMwO2JyZWFrIGV9aWYoISgx''@;'; put 'put ''PDwoMzEmKE09MjU1JmspKSZhWzU2OTQwKygoTT4+PjV8YnRbMTQzNzg4KygyNTUmYik+PjBdPDwzKTw8Mik+PjJdKSl7Uj0yNDticmVhayBlfW09MX1lbHNlIGlmKDMxPT0oMHxSKSlmb3IoOzspe2lmKFI9MCxhW0c+PjJdPUE9YysyfDAsKEstKHc9QSl8MCk8PTEpe2M9LTE7YnJlYWsgZX1z''@;'; put 'put ''d2l0Y2gobT0wfHVlW0E+PjBdLDB8KGM9KGM9MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8czAoYyxtKTowfGJ0W0QrKDI1NSZtKT4+MF0pKXtjYXNlIDE0OmM9QSxSPTM3O2JyZWFrIHQ7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMTpjPUEsUj0zMTticmVhaztkZWZhdWx0OlI9MzY7YnJlYWsgZX19''@;'; put 'put ''fXdoaWxlKDApO3Q6ZG97aWYoMzc9PSgwfFIpKXtmb3IoOzspe2lmKFI9MCxhW0c+PjJdPXc9YysyfDAsKEstKGI9dyl8MCk8PTEpe2M9LTE7YnJlYWsgZX1pZihBPTB8dWVbdz4+MF0sMTM9PSgxfChrPShtPTB8dWVbYyszPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtEKygyNTUmQSk+''@;'; put 'put ''PjBdKSkpYnJlYWs7c3dpdGNoKDB8ayl7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMTpjPXcsUj0zNzticmVhaztkZWZhdWx0OlI9NDM7YnJlYWsgZX19YVtHPj4yXT1jPWMrNHwwO246Zm9yKDs7KXtpZigoMHwodz1LLWN8MCkpPD0xKXtjPS0xO2JyZWFrIGV9aWYoQT0wfHVlW2M+PjBdLCgwfCht''@;'; put 'put ''PShtPTB8dWVbYysxPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtEKygyNTUmQSk+PjBdKSk9PSgwfGspKWJyZWFrO3N3aXRjaCgwfG0pe2Nhc2UgODpjYXNlIDE6Y2FzZSAwOlI9NTY7YnJlYWsgZTtjYXNlIDI6Uj02MTticmVhayBlO2Nhc2UgNTpkZWZhdWx0OmFbRz4+Ml09TT1jKzJ8''@;'; put 'put ''MCxjPU07Y29udGludWUgbjtjYXNlIDY6aWYoKDB8dyk8Myl7Yz0tMjticmVhayBlfWFbRz4+Ml09TT1jKzN8MCxjPU07Y29udGludWUgbjtjYXNlIDc6aWYoKDB8dyk8NCl7Yz0tMjticmVhayBlfWFbRz4+Ml09TT1jKzR8MCxjPU07Y29udGludWUgbjtjYXNlIDM6aWYoKDB8KGM9MHxzUyhs''@;'; put 'put ''LGMrMnwwLGYsRykpKTwxKXtSPTU5O2JyZWFrIGV9Yz0wfGFbRz4+Ml07Y29udGludWUgbn19aWYoYVtHPj4yXT1BPWMrMnwwLChLLShiPUEpfDApPD0xKXtjPS0xO2JyZWFrIGV9c3dpdGNoKHc9MHx1ZVtBPj4wXSwwfChtPShtPTB8dWVbYyszPj4wXSk8PDI0Pj4yND8wfHMwKG0sdyk6MHxi''@;'; put 'put ''dFtEKygyNTUmdyk+PjBdKSl7Y2FzZSAxMTpSPTgxO2JyZWFrIGU7Y2FzZSAxNzpSPTgyO2JyZWFrIGU7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpjPUE7YnJlYWs7ZGVmYXVsdDpSPTY4O2JyZWFrIGV9bjpmb3IoOzspe2lmKGFbRz4+Ml09QT1jKzJ8MCwoMHwodz1LLShtPUEpfDApKTw9MSl7''@;'; put 'put ''Yz0tMTticmVhayBlfXN3aXRjaChrPTB8dWVbQT4+MF0sMHwoTT0oYj0wfHVlW2MrMz4+MF0pPDwyND4+MjQ/MHxzMChiLGspOjB8YnRbRCsoMjU1JmspPj4wXSkpe2Nhc2UgNTpSPTc2O2JyZWFrIGU7Y2FzZSA2OlI9Nzc7YnJlYWsgZTtjYXNlIDc6Uj03OTticmVhayBlO2Nhc2UgMTE6Uj04''@;'; put 'put ''MTticmVhayBlO2Nhc2UgMTc6Uj04MjticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjptPTA7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmM9QTticmVhaztjYXNlIDI5OmJyZWFrIG47ZGVmYXVsdDpSPTg3O2JyZWFrIGV9fWlmKCEoMTw8KDMxJihNPTI1NSZrKSkmYVs1Njk0MCsoKE0+''@;'; put 'put ''Pj41fGJ0WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4yXSkpe1I9NzU7YnJlYWsgZX1tPTB9fXdoaWxlKDApO2FbRz4+Ml09Yz1jKzR8MH1zd2l0Y2goMHxSKXtjYXNlIDk6Y2FzZSAxMTpjYXNlIDE3OmNhc2UgNTY6Y2FzZSA2MTpjYXNlIDg5OmFbcD4+Ml09YyxjPTA7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAxMjooMHxrKTwzP2M9LTI6KGFbcD4+Ml09YyxjPTApO2JyZWFrO2Nhc2UgMTQ6KDB8ayk8ND9jPS0yOihhW3A+PjJdPWMsYz0wKTticmVhaztjYXNlIDI0OmNhc2UgMjU6Y2FzZSA4NzphW3A+PjJdPW0sYz0wO2JyZWFrO2Nhc2UgMjY6KDB8dyk8Mz9jPS0yOihhW3A+PjJdPW0sYz0wKTti''@;'; put 'put ''cmVhaztjYXNlIDI4OigwfHcpPDQ/Yz0tMjooYVtwPj4yXT1tLGM9MCk7YnJlYWs7Y2FzZSAzMDpjYXNlIDc1OmNhc2UgNzY6YVtwPj4yXT1BLGM9MDticmVhaztjYXNlIDM2OmFbcD4+Ml09dyxjPTA7YnJlYWs7Y2FzZSA0MzpjYXNlIDY4OmFbcD4+Ml09YixjPTA7YnJlYWs7Y2FzZSA1OTpj''@;'; put 'put ''fHwoYVtwPj4yXT1hW0c+PjJdLGM9MCk7YnJlYWs7Y2FzZSA3NzooMHx3KTwzP2M9LTI6KGFbcD4+Ml09QSxjPTApO2JyZWFrO2Nhc2UgNzk6KDB8dyk8ND9jPS0yOihhW3A+PjJdPUEsYz0wKTticmVhaztjYXNlIDgxOmFbcD4+Ml09Yys0LGM9MTticmVhaztjYXNlIDgyOmlmKGFbRz4+Ml09''@;'; put 'put ''bT1BKzJ8MCwoSy0oYz1tKXwwKT4xKXtpZigwPT0oMHx1ZVtBKzM+PjBdKSYmNjI9PSgwfHVlW20+PjBdKSl7YVtwPj4yXT1BKzQsYz0zO2JyZWFrfWFbcD4+Ml09YyxjPTB9ZWxzZSBjPS0xfXJldHVybiBvZT1wZSwwfGN9ZnVuY3Rpb24gSGoobCxjLGYpe2x8PTAsY3w9MCxhWyhmfD0wKT4+''@;'; put 'put ''Ml09MTE7ZTpkb3tpZig2PT0oYy1sfDApJiYwPT0oMHx1ZVtsKzE+PjBdKSl7c3dpdGNoKDB8dWVbbD4+MF0pe2Nhc2UgMTIwOmM9MDticmVhaztjYXNlIDg4OmM9MTticmVhaztkZWZhdWx0OmM9MTticmVhayBlfWlmKDB8dWVbbCszPj4wXSljPTE7ZWxzZXtzd2l0Y2goMHx1ZVtsKzI+PjBd''@;'; put 'put ''KXtjYXNlIDEwOTpicmVhaztjYXNlIDc3OmM9MTticmVhaztkZWZhdWx0OmM9MTticmVhayBlfWlmKDB8dWVbbCs1Pj4wXSljPTE7ZWxzZXtzd2l0Y2goMHx1ZVtsKzQ+PjBdKXtjYXNlIDEwODpicmVhaztjYXNlIDc2OmM9MDticmVhayBlO2RlZmF1bHQ6Yz0xO2JyZWFrIGV9Yz9jPTA6KGFb''@;'; put 'put ''Zj4+Ml09MTIsYz0xKX19fWVsc2UgYz0xfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gTmoobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLEE9MCx3PTAsaz0wO2I9NzIrKGN8PTApfDA7ZTpmb3IoOzspe3Q6Zm9yKDs7KXtpZigoMHwodz1wLWZ8MCkpPD0xKXtmPS0x''@;'; put 'put ''O2JyZWFrIGV9c3dpdGNoKEE9MHx1ZVtmPj4wXSwwfChjPShjPTB8dWVbZisxPj4wXSk8PDI0Pj4yND8wfHMwKGMsQSk6MHxidFtiKygyNTUmQSk+PjBdKSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6az0xMDticmVhayBlO2Nhc2UgNjprPTk7YnJlYWsgdDtjYXNlIDc6az0xOTticmVhayB0O2Nh''@;'; put 'put ''c2UgNTpkZWZhdWx0OmY9ZisyfDA7Y29udGludWUgdDtjYXNlIDEzOmNhc2UgMTI6aWYoQT1mKzJ8MCwoMHxjKT09KDB8bCkpe2s9MTI7YnJlYWsgZX1mPUE7Y29udGludWUgdH19aWYoOSE9KDB8aykpaWYoMTkhPSgwfGspKTtlbHNle2lmKGs9MCwoMHx3KTw0KXtmPS0yO2JyZWFrfWY9Zis0''@;'; put 'put ''fDB9ZWxzZXtpZihrPTAsKDB8dyk8Myl7Zj0tMjticmVha31mPWYrM3wwfX1lOmRve2lmKDEwPT0oMHxrKSlhW20+PjJdPWYsZj0wO2Vsc2UgaWYoMTI9PSgwfGspKWlmKChwLUF8MCk+MSl7c3dpdGNoKGFbbT4+Ml09QSxwPTB8dWVbZiszPj4wXSxmPTB8dWVbQT4+MF0sMHwoZj1wPDwyND4+''@;'; put 'put ''MjQ/MHxzMChwLGYpOjB8YnRbYisoMjU1JmYpPj4wXSkpe2Nhc2UgMjA6Y2FzZSAzMDpjYXNlIDExOmNhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Zj0yNzticmVhayBlfWY9MH1lbHNlIGY9LTI3fXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gS0sobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7''@;'; put 'put ''dmFyIGIsbT0wLEE9MCx3PTAsaz0wO2I9Znw9MDtlOmRve2lmKChiLWN8MCk+MSlzd2l0Y2gobT0wfHVlW2MrMT4+MF0sbT1tPDwyND4+MjQ/MHxzMChtLDB8dWVbYz4+MF0pOjB8YnRbbCs3MisoMHxidFtjPj4wXSk+PjBdLDB8bSl7Y2FzZSAyNzptPTB8RmoobCxjKzJ8MCxmLHApO2JyZWFr''@;'; put 'put ''IGU7Y2FzZSAyMDphW3A+PjJdPWMrMixtPTMzO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOnc9bCs3MnwwO3Q6Zm9yKDs7KXtpZigoMHwoZj1iLShBPWMrMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2gobD0wfHVlW0E+PjBdLDB8KG09KG09MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8''@;'; put 'put ''czAobSxsKTowfGJ0W3crKDI1NSZsKT4+MF0pKXtjYXNlIDI0OmNhc2UgMjI6Yz1BO2JyZWFrO2Nhc2UgMzA6az0xNTticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6YnJlYWsgdDtkZWZhdWx0Oms9MjI7YnJlYWsgdH19aWYoMjI9PSgwfGspKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9''@;'; put 'put ''dDpkb3tpZigxNT09KDB8aykpe2lmKCgwfGYpPD0zKXttPS0xO2JyZWFrIGV9c3dpdGNoKG09MHx1ZVtjKzQ+PjBdLDB8KG09KGw9MHx1ZVtjKzU+PjBdKTw8MjQ+PjI0PzB8czAobCxtKTowfGJ0W3crKDI1NSZtKT4+MF0pKXtjYXNlIDMwOmNhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDpicmVhayB0fWFbcD4+Ml09QSxtPTA7YnJlYWsgZX19d2hpbGUoMCk7YVtwPj4yXT1BLG09MTY7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZX1lbHNlIG09LTF9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiBtQWUobCxjLGYscCl7bHw9MCxwfD0wO3Zh''@;'; put 'put ''ciBtPTAsQT0wLHc9MCxiPTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfHVlW2MrMT4+MF0pPDwyND4+MjQ/MHxzMChiLEE9MHx1ZVtjPj4wXSk6MHxidFtsKzcyKygyNTUmKEE9MHx1ZVtjPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwo''@;'; put 'put ''MzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8YnRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNjpp''@;'; put 'put ''ZigoMHx3KTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlfWw9bCs3MnwwLGI9Yzt0OmZvcig7Oyl7aWYobT1iLCgwfChjPWYtKGI9YisyfDApfDApKTw9MSl7Zj0tMjA7YnJl''@;'; put 'put ''YWsgZX1zd2l0Y2goQT0wfHVlW2I+PjBdLDB8KHc9KG09MHx1ZVttKzM+PjBdKTw8MjQ+PjI0PzB8czAobSxBKTowfGJ0W2wrKDI1NSZBKT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Y29udGludWUgdDtjYXNlIDU6bT0yMjticmVhayB0O2Nhc2UgNjpt''@;'; put 'put ''PTIzO2JyZWFrIHQ7Y2FzZSA3Om09MjU7YnJlYWsgdDtjYXNlIDM2OmNhc2UgMzA6Y2FzZSAxMTpjYXNlIDMyOmNhc2UgMjE6Y2FzZSAxMDpjYXNlIDk6bT0yNzticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTI4O2JyZWFrIHR9aWYoISgxPDwoMzEmKGM9MjU1JkEpKSZhWzU2OTQw''@;'; put 'put ''KygoYz4+PjV8KDB8YnRbMTQ0MDQ0KygyNTUmbSk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjE7YnJlYWt9fWlmKDIxPT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha31pZigyMj09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjM9PSgwfG0pKXtpZigoMHxjKTwzKXtmPS0yO2JyZWFr''@;'; put 'put ''fWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjU9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjc9PSgwfG0pKXthW3A+PjJdPWIsZj0yMDticmVha31pZigyOD09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgw''@;'; put 'put ''KTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFZqKGwsYyxmKXtyZXR1cm4gbHw9MCxjfD0wLC0xPT0oMHwoZj0wfGl3KGZ8PTApKSk/Zj0wOih1ZVtsKzY5Pj4wXT1mLGFbbD4+Ml09NjcsYVtsKzQ+PjJdPTY4LGFbbCs0OD4+Ml09MzEsYVtsKzcyPj4yXT1jLGFbYz4+Ml09bCxmPTEpLDB8Zn1mdW5j''@;'; put 'put ''dGlvbiBpdyhsKXtsfD0wO3ZhciBjPTA7ZTpkb3tpZihsKWZvcihjPTA7Oyl7aWYoKDB8Yyk+PTYpe2M9LTE7YnJlYWsgZX1pZigwfHpqKGwsMHxhWzYwMDY4KyhjPDwyKT4+Ml0pKWJyZWFrIGU7Yz1jKzF8MH1lbHNlIGM9Nn13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIGNTKGwsYyxm''@;'; put 'put ''LHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgdz0wLGI9MCxrPTAsTT0wO2U6ZG97aWYocD4+PjA8bT4+PjApe009MHxhW2MrNzI+PjJdLHc9cCsxfDA7dDpkb3tpZigoMHx3KSE9KDB8bSkpe2I9NjU1MzUmKCgyNTUmKGs9MHx1ZVtwPj4wXSkpPDw4fDI1NSYodz0w''@;'; put 'put ''fHVlW3c+PjBdKSk7bjpkb3tpZihiPDwxNj4+MTY8LTIpe2lmKGI8PDE2Pj4xNj49LTI1Nyl7aWYoYjw8MTY+PjE2IT0tMjU3KWJyZWFrIG47aWYoMT09KDB8ZikmMD09KDB8dWVbYys2OT4+MF0pKWJyZWFrIHQ7YVtBPj4yXT1wKzIsYVtNPj4yXT1hW2wrMTY+PjJdLHc9MTQ7YnJlYWsgZX1p''@;'; put 'put ''ZihiPDwxNj4+MTYhPS00MTY1KWJyZWFrIG47aWYoMT09KDB8Zikpc3dpdGNoKDB8dWVbYys2OT4+MF0pe2Nhc2UgMDpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhayB0fWlmKCgwfCh3PXArMnwwKSk9PSgwfG0pKXt3PS0xO2JyZWFrIGV9aWYoLTY1IT0oMHx1ZVt3Pj4wXSkpYnJlYWsgdDth''@;'; put 'put ''W0E+PjJdPXArMyxhW00+PjJdPWFbbCs4Pj4yXSx3PTE0O2JyZWFrIGV9aWYoYjw8MTY+PjE2PDE1MzYwKXtpZihiPDwxNj4+MTYhPS0yKWJyZWFrIG47aWYoMT09KDB8ZikmMD09KDB8dWVbYys2OT4+MF0pKWJyZWFrIHQ7YVtBPj4yXT1wKzIsYVtNPj4yXT1hW2wrMjA+PjJdLHc9MTQ7YnJl''@;'; put 'put ''YWsgZX1pZihiPDwxNj4+MTYhPTE1MzYwKWJyZWFrIG47aWYoKHc9MHx1ZVtjKzY5Pj4wXSk8PDI0Pj4yND09NCl7aWYoMT09KDB8ZikpYnJlYWsgdH1lbHNlIGlmKDE9PSgwfGYpJnc8PDI0Pj4yND09MylicmVhayB0O2FbTT4+Ml09dz0wfGFbbCsyMD4+Ml0sdz0wfEQwWzEyNyZhW3crKGY8''@;'; put 'put ''PDIpPj4yXV0odyxwLG0sQSk7YnJlYWsgZX13aGlsZSgwKTtpZihrPDwyND4+MjQpe2lmKDE9PSgwfGYpfHc8PDI0Pj4yNCE9MClicmVhazthW00+PjJdPXc9MHxhW2wrMjA+PjJdLHc9MHxEMFsxMjcmYVt3KyhmPDwyKT4+Ml1dKHcscCxtLEEpO2JyZWFrIGV9aWYoMT09KDB8ZikmJjU9PSgw''@;'; put 'put ''fHVlW2MrNjk+PjBdKSlicmVhazthW00+PjJdPXc9MHxhW2wrMTY+PjJdLHc9MHxEMFsxMjcmYVt3KyhmPDwyKT4+Ml1dKHcscCxtLEEpO2JyZWFrIGV9aWYoKCgodz0wfHVlW2MrNjk+PjBdKTw8MjQ+PjI0KS0zfDApPj4+MDwzKXt3PS0xO2JyZWFrIGV9c3dpdGNoKDB8dWVbcD4+MF0pe2Nh''@;'; put 'put ''c2UgNjA6Y2FzZSAwOnc9LTE7YnJlYWsgZTtjYXNlLTE3OmNhc2UtMTpjYXNlLTI6YnJlYWs7ZGVmYXVsdDpicmVhayB0fWlmKCEoMT09KDB8Zikmdzw8MjQ+PjI0PT0wKSl7dz0tMTticmVhayBlfX13aGlsZSgwKTthW00+PjJdPXc9MHxhW2wrKHVlW2MrNjk+PjBdPDwyKT4+Ml0sdz0wfEQw''@;'; put 'put ''WzEyNyZhW3crKGY8PDIpPj4yXV0odyxwLG0sQSl9ZWxzZSB3PS00fXdoaWxlKDApO3JldHVybiAwfHd9ZnVuY3Rpb24gZlMobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBrLEE9MCx3PTAsYj0wO3c9KGs9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwoKGI9MHx1ZVtj''@;'; put 'put ''Pj4wXSk8PDI0Pj4yND8wfHMwKGIsQT0wfHVlW2MrMT4+MF0pOjB8YnRbbCs3MisoMjU1JihBPTB8dWVbYysxPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8YnRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2Fb''@;'; put 'put ''cD4+Ml09YyxsPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtsPS0yO2Jy''@;'; put 'put ''ZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgMTk6bD0wfFQxKGwsYysyfDAsZixwKTticmVhayBlfWI9bCs3MnwwLHc9Yzt0OmZvcig7Oyl7aWYoKDB8KGM9ay0oQT13KzJ8MCl8MCkpPD0xKXtsPS0xO2JyZWFrIGV9c3dpdGNoKGY9MHx1ZVt3KzM+PjBdLDB8KChsPTB8dWVbQT4+''@;'; put 'put ''MF0pPDwyND4+MjQ/MHxzMChsLGYpOjB8YnRbYisoMjU1JmYpPj4wXSkpe2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjp3PUE7Y29udGludWUgdDtjYXNlIDU6Zj0yMzticmVhayB0O2Nhc2UgNjpmPTI0O2JyZWFrIHQ7Y2FzZSA3OmY9MjY7YnJlYWsgdDtjYXNlIDE4''@;'; put 'put ''OmY9Mjg7YnJlYWsgdDtjYXNlIDI5OmJyZWFrO2RlZmF1bHQ6Zj0yOTticmVhayB0fWlmKCEoMTw8KDMxJihjPTI1NSZmKSkmYVs1Njk0MCsoKGM+Pj41fCgwfGJ0WzE0NDA0NCsoMjU1JmwpPj4wXSk8PDMpPDwyKT4+Ml0pKXtmPTIyO2JyZWFrfXc9QX1pZigyMj09KDB8Zikpe2FbcD4+Ml09''@;'; put 'put ''QSxsPTA7YnJlYWt9aWYoMjM9PSgwfGYpKXthW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDI0PT0oMHxmKSl7aWYoKDB8Yyk8Myl7bD0tMjticmVha31hW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDI2PT0oMHxmKSl7aWYoKDB8Yyk8NCl7bD0tMjticmVha31hW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDI4''@;'; put 'put ''PT0oMHxmKSl7YVtwPj4yXT13KzQsbD05O2JyZWFrfWlmKDI5PT0oMHxmKSl7YVtwPj4yXT1BLGw9MDticmVha319ZWxzZSBsPS0xfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gZSQobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO3c9KGZ8PTApLShjfD0w''@;'; put 'put ''KXwwO2U6ZG97aWYoKDB8dyk+MSl7c3dpdGNoKDB8KG09KGI9MHx1ZVtjPj4wXSk8PDI0Pj4yND8wfHMwKGIsQT0wfHVlW2MrMT4+MF0pOjB8YnRbbCs3MisoMjU1JihBPTB8dWVbYysxPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKGs9MjU1JkEpKSZhWzU2OTQwKygoaz4+PjV8''@;'; put 'put ''KDB8YnRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4y''@;'; put 'put ''XT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgMzA6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMTphW3A+PjJdPWMsZj0yMjticmVhayBlfWs9bCs3MnwwLGw9Yzt0OmZvcig7Oyl7aWYoKDB8KGM9Zi0oYj1sKzJ8''@;'; put 'put ''MCl8MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKEE9MHx1ZVtsKzM+PjBdLDB8KHc9KG09MHx1ZVtiPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmw9Yjtjb250aW51ZSB0O2Nhc2Ug''@;'; put 'put ''NTptPTIzO2JyZWFrIHQ7Y2FzZSA2Om09MjQ7YnJlYWsgdDtjYXNlIDc6bT0yNjticmVhayB0O2Nhc2UgMTg6bT0yODticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTI5O2JyZWFrIHR9aWYoISgxPDwoMzEmKGM9MjU1JkEpKSZhWzU2OTQwKygoYz4+PjV8KDB8YnRbMTQ0MDQ0Kygy''@;'; put 'put ''NTUmbSk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjI7YnJlYWt9bD1ifWlmKDIyPT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha31pZigyMz09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjQ9PSgwfG0pKXtpZigoMHxjKTwzKXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9''@;'; put 'put ''aWYoMjY9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjg9PSgwfG0pKXthW3A+PjJdPWwrNCxmPTI4O2JyZWFrfWlmKDI5PT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha319ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rp''@;'; put 'put ''b24gVDEobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTA7Yj1mfD0wO2U6ZG97aWYoKGItY3wwKT4xKXtBPTB8dWVbYz4+MF0sbT0wfHVlW2MrMT4+MF07ZG97aWYoIShBPDwyND4+MjQpKXtpZihtPDwyND4+MjQ9PTEyMCl7bT0wfHQkKGwsYysyfDAsZixwKTticmVh''@;'; put 'put ''ayBlfW09MHxidFtsKzcyKygyNTUmbSk+PjBdO2JyZWFrfW09MHxzMChBLG0pfXdoaWxlKDApO2lmKDI1IT0oMHxtKSl7YVtwPj4yXT1jLG09MDticmVha313PWwrNzJ8MCxsPWM7dDpmb3IoOzspe2lmKChiLShBPWwrMnwwKXwwKTw9MSl7bT0tMTticmVhayBlfXN3aXRjaChmPTB8dWVbbCsz''@;'; put 'put ''Pj4wXSwwfChtPShtPTB8dWVbQT4+MF0pPDwyND4+MjQ/MHxzMChtLGYpOjB8YnRbdysoMjU1JmYpPj4wXSkpe2Nhc2UgMjU6bD1BO2JyZWFrO2Nhc2UgMTg6Zj0xNTticmVhayB0O2RlZmF1bHQ6Zj0xNjticmVhayB0fX1pZigxNT09KDB8Zikpe2FbcD4+Ml09bCs0LG09MTA7YnJlYWt9aWYo''@;'; put 'put ''MTY9PSgwfGYpKXthW3A+PjJdPUEsbT0wO2JyZWFrfX1lbHNlIG09LTF9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiB0JChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MDtlOmRve2lmKChmLWN8MCk+MSl7aWYoMjQhPSgtMiYobT0obT0wfHVlW2M+PjBd''@;'; put 'put ''KTw8MjQ+PjI0PzB8czAobSwwfHVlW2MrMT4+MF0pOjB8YnRbbCs3MisoMHxidFtjKzE+PjBdKT4+MF0pfDApKXthW3A+PjJdPWMsZj0wO2JyZWFrfXc9bCs3MnwwO3Q6Zm9yKDs7KXtpZigoZi0oQT1jKzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2gobD0wfHVlW2MrMz4+MF0sMHwo''@;'; put 'put ''bT0obT0wfHVlW0E+PjBdKTw8MjQ+PjI0PzB8czAobSxsKTowfGJ0W3crKDI1NSZsKT4+MF0pKXtjYXNlIDI0OmNhc2UgMjU6Yz1BO2JyZWFrO2Nhc2UgMTg6bT0xMzticmVhayB0O2RlZmF1bHQ6bT0xNDticmVhayB0fX1pZigxMz09KDB8bSkpe2FbcD4+Ml09Yys0LGY9MTA7YnJlYWt9aWYo''@;'; put 'put ''MTQ9PSgwfG0pKXthW3A+PjJdPUEsZj0wO2JyZWFrfX1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBNQWUobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO3c9KFI9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4x''@;'; put 'put ''KXtzd2l0Y2goMHwobT0oYj0wfHVlW2M+PjBdKTw8MjQ+PjI0PzB8czAoYixBPTB8dWVbYysxPj4wXSk6MHxidFtsKzcyKygyNTUmKEE9MHx1ZVtjKzE+PjBdKSk+PjBdKSl7Y2FzZSAyOTppZighKDE8PCgzMSYoTT0yNTUmQSkpJmFbNTY5NDArKChNPj4+NXxidFsxNDM3ODgrKDI1NSZiKT4+''@;'; put 'put ''MF08PDMpPDwyKT4+Ml0pKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9YnJlYWs7Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgNTphW3A+PjJdPWMsbT0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgwfHcpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPWMsbT0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfHcp''@;'; put 'put ''PDQpe209LTI7YnJlYWsgZX1hW3A+PjJdPWMsbT0wO2JyZWFrIGU7Y2FzZSAxNjppZigoUi0oQT1jKzJ8MCl8MCk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goMHwobT0obT0wfHVlW0E+PjBdKTw8MjQ+PjI0PzB8czAobSwwfHVlW2MrMz4+MF0pOjB8YnRbbCs3MisoMHxidFtjKzM+PjBdKT4+''@;'; put 'put ''MF0pKXtjYXNlIDI3Om09MHxIMWUobCxjKzR8MCxmLHApO2JyZWFrIGU7Y2FzZSAyMDptPTB8TjFlKGMrNHwwLGYscCk7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09QSxtPTA7YnJlYWsgZX1jYXNlIDE1Om09MHxuJChsLGMrMnwwLGYscCk7YnJlYWsgZTtjYXNlIDE3Om09MHxWMWUobCxjKzJ8''@;'; put 'put ''MCxmLHApO2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPWMsbT0wO2JyZWFrIGV9TT1sKzcyfDAsaz0wLG09YysyfDA7dDpmb3IoOzspe246Zm9yKDs7KXtpZigoMHwoQT1SLW18MCkpPD0xKXttPS0xO2JyZWFrIGV9c3dpdGNoKGI9MHx1ZVttKzE+PjBdLDB8KGM9KHc9MHx1ZVttPj4wXSk8PDI0''@;'; put 'put ''Pj4yND8wfHMwKHcsYik6MHxidFtNKygyNTUmYik+PjBdKSl7Y2FzZSA1OkQ9MzQ7YnJlYWsgdDtjYXNlIDY6RD0zNTticmVhayB0O2Nhc2UgNzpEPTM3O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpEPTU1O2JyZWFrIHQ7Y2FzZSAxMTpEPTY5O2JyZWFrIHQ7Y2FzZSAxNzpicmVh''@;'; put 'put ''ayB0O2Nhc2UgMjM6YnJlYWsgbjtjYXNlIDI5OmlmKCEoMTw8KDMxJihjPTI1NSZiKSkmYVs1Njk0MCsoKGM+Pj41fGJ0WzE0NDA0NCsoMjU1JncpPj4wXTw8Myk8PDIpPj4yXSkpe0Q9MzI7YnJlYWsgdH1icmVhaztjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDpEPTc1O2JyZWFrIHR9bT1tKzJ8MH1pZigwfGspe0Q9NDA7YnJlYWt9aWYoKDB8KGs9Ui0oYz1tKzJ8MCl8MCkpPD0xKXttPS0xO2JyZWFrIGV9c3dpdGNoKHc9MHx1ZVttKzM+PjBdLDB8KGI9KEE9MHx1ZVtjPj4wXSk8PDI0Pj4yND8wfHMwKEEsdyk6MHxidFtNKygyNTUm''@;'; put 'put ''dyk+PjBdKSl7Y2FzZSA1OkQ9NDk7YnJlYWsgdDtjYXNlIDY6RD01MDticmVhayB0O2Nhc2UgNzpEPTUyO2JyZWFrIHQ7Y2FzZSAyOTppZighKDE8PCgzMSYoaz0yNTUmdykpJmFbNTY5NDArKChrPj4+NXxidFsxNDM3ODgrKDI1NSZBKT4+MF08PDMpPDwyKT4+Ml0pKXtEPTQ3O2JyZWFrIHR9''@;'; put 'put ''YnJlYWs7Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2RlZmF1bHQ6RD01NDticmVhayB0fWs9MSxtPW0rNHwwfXQ6c3dpdGNoKDB8RCl7Y2FzZSAzMjpjYXNlIDM0OmNhc2UgNDA6Y2FzZSA3NTphW3A+PjJdPW0sbT0wO2JyZWFrIGU7Y2FzZSAzNTppZigoMHxBKTwzKXttPS0yO2JyZWFrIGV9YVtw''@;'; put 'put ''Pj4yXT1tLG09MDticmVhayBlO2Nhc2UgMzc6aWYoKDB8QSk8NCl7bT0tMjticmVhayBlfWFbcD4+Ml09bSxtPTA7YnJlYWsgZTtjYXNlIDQ3OmNhc2UgNDk6Y2FzZSA1NDphW3A+PjJdPWMsbT0wO2JyZWFrIGU7Y2FzZSA1MDppZigoMHxrKTwzKXttPS0yO2JyZWFrIGV9YVtwPj4yXT1jLG09''@;'; put 'put ''MDticmVhayBlO2Nhc2UgNTI6aWYoKDB8ayk8NCl7bT0tMjticmVhayBlfWFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDU1Om46Zm9yKDs7KXtpZihEPTAsKDB8KHc9Ui0oQT1tKzJ8MCl8MCkpPD0xKXttPS0xO2JyZWFrIGV9c3dpdGNoKGM9MHx1ZVttKzM+PjBdLDB8KGs9KGI9MHx1ZVtB''@;'; put 'put ''Pj4wXSk8PDI0Pj4yND8wfHMwKGIsYyk6MHxidFtNKygyNTUmYyk+PjBdKSl7Y2FzZSAxMTptPUEsRD02OTticmVhayB0O2Nhc2UgMTc6bT1BO2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTptPUEsRD01NTticmVhaztjYXNlIDI5OkQ9NjA7YnJlYWsgbjtjYXNlIDI0OmNhc2UgMjI6''@;'; put 'put ''YnJlYWsgbjtjYXNlIDU6RD02MzticmVhayBuO2Nhc2UgNjpEPTY0O2JyZWFrIG47Y2FzZSA3OkQ9NjY7YnJlYWsgbjtkZWZhdWx0OkQ9Njg7YnJlYWsgbn19aWYoNjA9PSgwfEQpKXtpZighKDE8PCgzMSYoUj0yNTUmYykpJmFbNTY5NDArKChSPj4+NXxidFsxNDM3ODgrKDI1NSZiKT4+MF08''@;'; put 'put ''PDMpPDwyKT4+Ml0pKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9fWVsc2V7aWYoNjM9PSgwfEQpKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9aWYoNjQ9PSgwfEQpKXtpZigoMHx3KTwzKXttPS0yO2JyZWFrIGV9YVtwPj4yXT1BLG09MDticmVhayBlfWlmKDY2PT0oMHxEKSl7aWYoKDB8dyk8NCl7''@;'; put 'put ''bT0tMjticmVhayBlfWFbcD4+Ml09QSxtPTA7YnJlYWsgZX1pZig2OD09KDB8RCkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX19bT0wfHIkKGwsbSs0fDAsZixwKTticmVhayBlfWlmKDY5PT0oMHxEKSl7YVtwPj4yXT1tKzIsbT0yO2JyZWFrfWlmKChSLShBPW0rMnwwKXwwKT4xKXtpZigwPT0o''@;'; put 'put ''MHx1ZVtBPj4wXSkmJjYyPT0oMHx1ZVttKzM+PjBdKSl7YVtwPj4yXT1tKzQsbT00O2JyZWFrfWFbcD4+Ml09QSxtPTB9ZWxzZSBtPS0xfWVsc2UgbT0tMX13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIEgxZShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgdyxtPTAsQT0wLGI9MDt3''@;'; put 'put ''PWZ8PTA7ZTpkb3tpZigody1jfDApPjEpe2lmKDA9PSgwfHVlW2M+PjBdKSYmNDU9PSgwfHVlW2MrMT4+MF0pKXtBPWwrNzJ8MCxtPWMrMnwwO3Q6Zm9yKDs7KXtpZigoMHwoYz13LW18MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKGw9MHx1ZVttKzE+PjBdLDB8KGY9KGY9MHx1ZVttPj4w''@;'; put 'put ''XSk8PDI0Pj4yND8wfHMwKGYsbCk6MHxidFtBKygyNTUmbCk+PjBdKSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Yj0xNjticmVhayB0O2Nhc2UgNTpkZWZhdWx0Om09bSsyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7Zj0tMjticmVhayBlfW09bSszfDA7Y29udGludWUgdDtjYXNl''@;'; put 'put ''IDc6aWYoKDB8Yyk8NCl7Zj0tMjticmVhayBlfW09bSs0fDA7Y29udGludWUgdDtjYXNlIDI3OmlmKCh3LShmPW0rMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8dWVbZj4+MF0pe209Zjtjb250aW51ZSB0fWlmKDQ1PT0oMHx1ZVttKzM+PjBdKSlicmVhayB0O209Zjtjb250aW51ZSB0''@;'; put 'put ''fX1pZigxNj09KDB8Yikpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoKHctKGY9bSs0fDApfDApPD0xKXtmPS0xO2JyZWFrfWlmKDA9PSgwfHVlW2Y+PjBdKSYmNjI9PSgwfHVlW20rNT4+MF0pKXthW3A+PjJdPW0rNixmPTEzO2JyZWFrfWFbcD4+Ml09ZixmPTA7YnJlYWt9YVtwPj4yXT1jLGY9''@;'; put 'put ''MH1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBOMWUobCxjLGYpe2lmKGZ8PTAsKChjfD0wKS0obHw9MCl8MCk+MTEpe2ZvcihjPTA7Oyl7aWYoKDB8Yyk+PTYpe2M9ODticmVha31pZigwfHVlW2w+PjBdKXtjPTA7YnJlYWt9aWYoKDB8dWVbbCsxPj4wXSkhPSgwfHVl''@;'; put 'put ''WzE0NDMwMCtjPj4wXSkpe2M9MDticmVha31jPWMrMXwwLGw9bCsyfDB9YVtmPj4yXT1sfWVsc2UgYz0tMTtyZXR1cm4gMHxjfWZ1bmN0aW9uIG4kKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgRCxSLEcsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Rz1vZSxvZT1vZSsxNnwwLFI9RyxBPShEPWZ8''@;'; put 'put ''PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8QSk+MSl7c3dpdGNoKDB8KGY9KHc9MHx1ZVtjPj4wXSk8PDI0Pj4yND8wfHMwKHcsbT0wfHVlW2MrMT4+MF0pOjB8YnRbbCs3MisoMjU1JihtPTB8dWVbYysxPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKGs9MjU1Jm0pKSZhWzU2OTQw''@;'; put 'put ''Kygoaz4+PjV8YnRbMTQzNzg4KygyNTUmdyk+PjBdPDwzKTw8Mik+PjJdKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztjYXNlIDU6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgwfEEpPDMpe2Y9LTI7YnJlYWsgZX1h''@;'; put 'put ''W3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfEEpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGV9az1sKzcyfDAsYj1jO3Q6Zm9yKDs7KXtpZigoMHwobT1ELShmPWIrMnwwKXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2godz0wfHVlW2IrMz4+MF0sMHwo''@;'; put 'put ''bD0oQT0wfHVlW2Y+PjBdKTw8MjQ+PjI0PzB8czAoQSx3KTowfGJ0W2srKDI1NSZ3KT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Yj1mO2NvbnRpbnVlIHQ7Y2FzZSA1Ok09MjI7YnJlYWsgdDtjYXNlIDY6TT0yMzticmVhayB0O2Nhc2UgNzpNPTI1O2Jy''@;'; put 'put ''ZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpNPTI3O2JyZWFrIHQ7Y2FzZSAxNTpNPTQ2O2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0OmJyZWFrIHR9aWYoISgxPDwoMzEmKGI9MjU1JncpKSZhWzU2OTQwKygoYj4+PjV8YnRbMTQ0MDQ0KygyNTUmQSk+PjBdPDwzKTw8Mik+PjJd''@;'; put 'put ''KSl7TT0yMTticmVha31iPWZ9aWYoMjE9PSgwfE0pKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDIyPT0oMHxNKSl7YVtwPj4yXT1mLGY9MDticmVha31pZigyMz09KDB8TSkpe2lmKCgwfG0pPDMpe2Y9LTI7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31pZigyNT09KDB8TSkpe2lmKCgwfG0p''@;'; put 'put ''PDQpe2Y9LTI7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31pZigyNz09KDB8TSkpe2lmKCEoMHxqMWUoYyxmLFIpKSl7YVtwPj4yXT1mLGY9MDticmVha313PWIrNHwwO3Q6Zm9yKDs7KXtpZigoMHwoQT1ELXd8MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKG09MHx1ZVt3KzE+PjBdLDB8''@;'; put 'put ''KGY9KGY9MHx1ZVt3Pj4wXSk8PDI0Pj4yND8wfHMwKGYsbSk6MHxidFtrKygyNTUmbSk+PjBdKSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6TT00MDticmVhayB0O2Nhc2UgNTpkZWZhdWx0Onc9dysyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8QSk8Myl7Zj0tMjticmVhayBlfXc9dyszfDA7''@;'; put 'put ''Y29udGludWUgdDtjYXNlIDc6aWYoKDB8QSk8NCl7Zj0tMjticmVhayBlfXc9dys0fDA7Y29udGludWUgdDtjYXNlIDE1OmlmKChELShmPXcrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8dWVbZj4+MF0pe3c9Zjtjb250aW51ZSB0fWlmKDYyPT0oMHx1ZVt3KzM+PjBdKSl7TT00NDti''@;'; put 'put ''cmVhayB0fXc9Zjtjb250aW51ZSB0fX1pZig0MD09KDB8TSkpe2FbcD4+Ml09dyxmPTA7YnJlYWt9aWYoNDQ9PSgwfE0pKXthW3A+PjJdPXcrNCxmPTB8YVtSPj4yXTticmVha319ZWxzZSBpZig0Nj09KDB8TSkpe2lmKCEoMHxqMWUoYyxmLFIpKSl7YVtwPj4yXT1mLGY9MDticmVha31pZigo''@;'; put 'put ''RC0oZj1iKzR8MCl8MCk8PTEpe2Y9LTE7YnJlYWt9aWYoMD09KDB8dWVbZj4+MF0pJiY2Mj09KDB8dWVbYis1Pj4wXSkpe2FbcD4+Ml09Yis2LGY9MHxhW1I+PjJdO2JyZWFrfX1hW3A+PjJdPWYsZj0wfWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gb2U9RywwfGZ9ZnVuY3Rpb24gVjFlKGws''@;'; put 'put ''YyxmLHApe2x8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDt3PShmfD0wKS0oY3w9MCl8MDtlOmRve2lmKCgwfHcpPjEpe3N3aXRjaCgwfChtPShiPTB8dWVbYz4+MF0pPDwyND4+MjQ/MHxzMChiLEE9MHx1ZVtjKzE+PjBdKTowfGJ0W2wrNzIrKDI1NSYoQT0wfHVlW2MrMT4+MF0p''@;'; put 'put ''KT4+MF0pKXtjYXNlIDI5OmlmKCEoMTw8KDMxJihrPTI1NSZBKSkmYVs1Njk0MCsoKGs+Pj41fCgwfGJ0WzE0Mzc4OCsoMjU1JmIpPj4wXSk8PDMpPDwyKT4+Ml0pKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9YnJlYWs7Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgNTpkZWZhdWx0OmFbcD4+''@;'; put 'put ''Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDY6aWYoKDB8dyk8Myl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDc6aWYoKDB8dyk8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZX1rPWwrNzJ8MCxsPWM7dDpmb3IoOzspe2lmKCgwfChjPWYtKHc9bCsy''@;'; put 'put ''fDApfDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChBPTB8dWVbbCszPj4wXSwwfChiPShtPTB8dWVbdz4+MF0pPDwyND4+MjQ/MHxzMChtLEEpOjB8YnRbaysoMjU1JkEpPj4wXSkpe2Nhc2UgMjM6Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmw9dztjb250aW51''@;'; put 'put ''ZSB0O2Nhc2UgNTptPTIyO2JyZWFrIHQ7Y2FzZSA2Om09MjM7YnJlYWsgdDtjYXNlIDc6bT0yNTticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6bT0yNzticmVhayB0O2Nhc2UgMTE6bT0zNDticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTM1O2JyZWFrIHR9aWYoISgxPDwo''@;'; put 'put ''MzEmKGM9MjU1JkEpKSZhWzU2OTQwKygoYz4+PjV8KDB8YnRbMTQ0MDQ0KygyNTUmbSk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjE7YnJlYWt9bD13fWlmKDIxPT0oMHxtKSl7YVtwPj4yXT13LGY9MDticmVha31pZigyMj09KDB8bSkpe2FbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjM9PSgwfG0p''@;'; put 'put ''KXtpZigoMHxjKTwzKXtmPS0yO2JyZWFrfWFbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjU9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFrfWFbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjc9PSgwfG0pKXt0OmZvcig7Oyl7aWYoKGYtKGI9dysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9c3dp''@;'; put 'put ''dGNoKEE9MHx1ZVt3KzM+PjBdLDB8KG09KG09MHx1ZVtiPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTp3PWIsbT0yNzticmVhaztjYXNlIDExOm09MzI7YnJlYWsgdDtkZWZhdWx0Om09MzM7YnJlYWsgdH19aWYoMzI9''@;'; put 'put ''PSgwfG0pKXthW3A+PjJdPXcrNCxmPTU7YnJlYWt9aWYoMzM9PSgwfG0pKXthW3A+PjJdPWIsZj0wO2JyZWFrfX1lbHNle2lmKDM0PT0oMHxtKSl7YVtwPj4yXT1sKzQsZj01O2JyZWFrfWlmKDM1PT0oMHxtKSl7YVtwPj4yXT13LGY9MDticmVha319fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1''@;'; put 'put ''cm4gMHxmfWZ1bmN0aW9uIHIkKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBELEcsSyxwZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTA7cGU9b2Usb2U9b2UrMTZ8MCxhWyhHPXBlKT4+Ml09Y3w9MCxLPWYsRD1sKzcyfDAsbT0wO2U6Zm9yKDs7KXt0OmZvcig7Oyl7aWYoKDB8KGs9''@;'; put 'put ''Sy1jfDApKTw9MSl7Yz0tMTticmVhayBlfXN3aXRjaCh3PTB8dWVbYysxPj4wXSwwfChiPShBPTB8dWVbYz4+MF0pPDwyND4+MjQ/MHxzMChBLHcpOjB8YnRbRCsoMjU1JncpPj4wXSkpe2Nhc2UgNTpSPTExO2JyZWFrIGU7Y2FzZSA2OlI9MTI7YnJlYWsgZTtjYXNlIDc6Uj0xNDticmVhayBl''@;'; put 'put ''O2Nhc2UgMjM6Uj0xNjticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Uj0zMTticmVhayB0O2Nhc2UgMTQ6Uj0zNzticmVhayB0O2Nhc2UgMjk6aWYoISgxPDwoMzEmKE09MjU1JncpKSZhWzU2OTQwKygoTT4+PjV8YnRbMTQ0MDQ0KygyNTUmQSk+PjBdPDwzKTw8Mik+PjJdKSl7Uj05''@;'; put 'put ''O2JyZWFrIGV9YnJlYWs7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2RlZmF1bHQ6Uj04OTticmVhayBlfWFbRz4+Ml09TT1jKzJ8MCxjPU19dDpkb3tpZigxNj09KDB8Uikpe2lmKFI9MCwwfG0pe1I9MTc7YnJlYWsgZX1pZihhW0c+PjJdPW09YysyfDAs''@;'; put 'put ''KDB8KHc9Sy0oQT1tKXwwKSk8PTEpe2M9LTE7YnJlYWsgZX1zd2l0Y2goaz0wfHVlW2MrMz4+MF0sMHwoTT0oYj0wfHVlW20+PjBdKTw8MjQ+PjI0PzB8czAoYixrKTowfGJ0W0QrKDI1NSZrKT4+MF0pKXtjYXNlIDU6Uj0yNTticmVhayBlO2Nhc2UgNjpSPTI2O2JyZWFrIGU7Y2FzZSA3OlI9''@;'; put 'put ''Mjg7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0OlI9MzA7YnJlYWsgZX1pZighKDE8PCgzMSYoTT0yNTUmaykpJmFbNTY5NDArKChNPj4+NXxidFsxNDM3ODgrKDI1NSZiKT4+MF08PDMpPDwyKT4+Ml0pKXtSPTI0O2JyZWFrIGV9bT0x''@;'; put 'put ''fWVsc2UgaWYoMzE9PSgwfFIpKWZvcig7Oyl7aWYoUj0wLGFbRz4+Ml09QT1jKzJ8MCwoSy0odz1BKXwwKTw9MSl7Yz0tMTticmVhayBlfXN3aXRjaChjPTB8dWVbYyszPj4wXSwwfChjPShtPTB8dWVbQT4+MF0pPDwyND4+MjQ/MHxzMChtLGMpOjB8YnRbRCsoMjU1JmMpPj4wXSkpe2Nhc2Ug''@;'; put 'put ''MTQ6Yz1BLFI9Mzc7YnJlYWsgdDtjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmM9QSxSPTMxO2JyZWFrO2RlZmF1bHQ6Uj0zNjticmVhayBlfX19d2hpbGUoMCk7dDpkb3tpZigzNz09KDB8Uikpe2Zvcig7Oyl7aWYoUj0wLGFbRz4+Ml09dz1jKzJ8MCwoSy0oYj13KXwwKTw9MSl7Yz0tMTticmVh''@;'; put 'put ''ayBlfWlmKEE9MHx1ZVtjKzM+PjBdLDEzPT0oMXwoaz0obT0wfHVlW3c+PjBdKTw8MjQ+PjI0PzB8czAobSxBKTowfGJ0W0QrKDI1NSZBKT4+MF0pKSlicmVhaztzd2l0Y2goMHxrKXtjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmM9dyxSPTM3O2JyZWFrO2RlZmF1bHQ6Uj00MzticmVhayBlfX1h''@;'; put 'put ''W0c+PjJdPWM9Yys0fDA7bjpmb3IoOzspe2lmKCgwfCh3PUstY3wwKSk8PTEpe2M9LTE7YnJlYWsgZX1pZihBPTB8dWVbYysxPj4wXSwoMHwobT0obT0wfHVlW2M+PjBdKTw8MjQ+PjI0PzB8czAobSxBKTowfGJ0W0QrKDI1NSZBKT4+MF0pKT09KDB8aykpYnJlYWs7c3dpdGNoKDB8bSl7Y2Fz''@;'; put 'put ''ZSA4OmNhc2UgMTpjYXNlIDA6Uj01NjticmVhayBlO2Nhc2UgMjpSPTYxO2JyZWFrIGU7Y2FzZSA1OmRlZmF1bHQ6YVtHPj4yXT1NPWMrMnwwLGM9TTtjb250aW51ZSBuO2Nhc2UgNjppZigoMHx3KTwzKXtjPS0yO2JyZWFrIGV9YVtHPj4yXT1NPWMrM3wwLGM9TTtjb250aW51ZSBuO2Nhc2Ug''@;'; put 'put ''NzppZigoMHx3KTw0KXtjPS0yO2JyZWFrIGV9YVtHPj4yXT1NPWMrNHwwLGM9TTtjb250aW51ZSBuO2Nhc2UgMzppZigoMHwoYz0wfGZTKGwsYysyfDAsZixHKSkpPDEpe1I9NTk7YnJlYWsgZX1jPTB8YVtHPj4yXTtjb250aW51ZSBufX1pZihhW0c+PjJdPUE9YysyfDAsKEstKGI9QSl8MCk8''@;'; put 'put ''PTEpe2M9LTE7YnJlYWsgZX1zd2l0Y2godz0wfHVlW2MrMz4+MF0sMHwobT0obT0wfHVlW0E+PjBdKTw8MjQ+PjI0PzB8czAobSx3KTowfGJ0W0QrKDI1NSZ3KT4+MF0pKXtjYXNlIDExOlI9ODE7YnJlYWsgZTtjYXNlIDE3OlI9ODI7YnJlYWsgZTtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmM9''@;'; put 'put ''QTticmVhaztkZWZhdWx0OlI9Njg7YnJlYWsgZX1uOmZvcig7Oyl7aWYoYVtHPj4yXT1BPWMrMnwwLCgwfCh3PUstKG09QSl8MCkpPD0xKXtjPS0xO2JyZWFrIGV9c3dpdGNoKGs9MHx1ZVtjKzM+PjBdLDB8KE09KGI9MHx1ZVtBPj4wXSk8PDI0Pj4yND8wfHMwKGIsayk6MHxidFtEKygyNTUm''@;'; put 'put ''ayk+PjBdKSl7Y2FzZSA1OlI9NzY7YnJlYWsgZTtjYXNlIDY6Uj03NzticmVhayBlO2Nhc2UgNzpSPTc5O2JyZWFrIGU7Y2FzZSAxMTpSPTgxO2JyZWFrIGU7Y2FzZSAxNzpSPTgyO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MDticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Yz1B''@;'; put 'put ''O2JyZWFrO2Nhc2UgMjk6YnJlYWsgbjtkZWZhdWx0OlI9ODc7YnJlYWsgZX19aWYoISgxPDwoMzEmKE09MjU1JmspKSZhWzU2OTQwKygoTT4+PjV8YnRbMTQzNzg4KygyNTUmYik+PjBdPDwzKTw8Mik+PjJdKSl7Uj03NTticmVhayBlfW09MH19d2hpbGUoMCk7YVtHPj4yXT1jPWMrNHwwfXN3''@;'; put 'put ''aXRjaCgwfFIpe2Nhc2UgOTpjYXNlIDExOmNhc2UgMTc6Y2FzZSA1NjpjYXNlIDYxOmNhc2UgODk6YVtwPj4yXT1jLGM9MDticmVhaztjYXNlIDEyOigwfGspPDM/Yz0tMjooYVtwPj4yXT1jLGM9MCk7YnJlYWs7Y2FzZSAxNDooMHxrKTw0P2M9LTI6KGFbcD4+Ml09YyxjPTApO2JyZWFrO2Nh''@;'; put 'put ''c2UgMjQ6Y2FzZSAyNTpjYXNlIDg3OmFbcD4+Ml09bSxjPTA7YnJlYWs7Y2FzZSAyNjooMHx3KTwzP2M9LTI6KGFbcD4+Ml09bSxjPTApO2JyZWFrO2Nhc2UgMjg6KDB8dyk8ND9jPS0yOihhW3A+PjJdPW0sYz0wKTticmVhaztjYXNlIDMwOmNhc2UgNzU6Y2FzZSA3NjphW3A+PjJdPUEsYz0w''@;'; put 'put ''O2JyZWFrO2Nhc2UgMzY6YVtwPj4yXT13LGM9MDticmVhaztjYXNlIDQzOmNhc2UgNjg6YVtwPj4yXT1iLGM9MDticmVhaztjYXNlIDU5OmN8fChhW3A+PjJdPWFbRz4+Ml0sYz0wKTticmVhaztjYXNlIDc3OigwfHcpPDM/Yz0tMjooYVtwPj4yXT1BLGM9MCk7YnJlYWs7Y2FzZSA3OTooMHx3''@;'; put 'put ''KTw0P2M9LTI6KGFbcD4+Ml09QSxjPTApO2JyZWFrO2Nhc2UgODE6YVtwPj4yXT1jKzQsYz0xO2JyZWFrO2Nhc2UgODI6aWYoYVtHPj4yXT1tPUErMnwwLChLLShjPW0pfDApPjEpe2lmKDA9PSgwfHVlW20+PjBdKSYmNjI9PSgwfHVlW0ErMz4+MF0pKXthW3A+PjJdPUErNCxjPTM7YnJlYWt9''@;'; put 'put ''YVtwPj4yXT1jLGM9MH1lbHNlIGM9LTF9cmV0dXJuIG9lPXBlLDB8Y31mdW5jdGlvbiBqMWUobCxjLGYpe2x8PTAsY3w9MCxhWyhmfD0wKT4+Ml09MTE7ZTpkb3tpZig2PT0oYy1sfDApJiYwPT0oMHx1ZVtsPj4wXSkpe3N3aXRjaCgwfHVlW2wrMT4+MF0pe2Nhc2UgMTIwOmM9MDticmVhaztj''@;'; put 'put ''YXNlIDg4OmM9MTticmVhaztkZWZhdWx0OmM9MTticmVhayBlfWlmKDB8dWVbbCsyPj4wXSljPTE7ZWxzZXtzd2l0Y2goMHx1ZVtsKzM+PjBdKXtjYXNlIDEwOTpicmVhaztjYXNlIDc3OmM9MTticmVhaztkZWZhdWx0OmM9MTticmVhayBlfWlmKDB8dWVbbCs0Pj4wXSljPTE7ZWxzZXtzd2l0''@;'; put 'put ''Y2goMHx1ZVtsKzU+PjBdKXtjYXNlIDEwODpicmVhaztjYXNlIDc2OmM9MDticmVhayBlO2RlZmF1bHQ6Yz0xO2JyZWFrIGV9Yz9jPTA6KGFbZj4+Ml09MTIsYz0xKX19fWVsc2UgYz0xfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gbjQobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxt''@;'; put 'put ''fD0wO3ZhciBiLEE9MCx3PTAsaz0wO2I9NzIrKGN8PTApfDA7ZTpmb3IoOzspe3Q6Zm9yKDs7KXtpZigoMHwodz1wLWZ8MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKEE9MHx1ZVtmKzE+PjBdLDB8KEE9KGM9MHx1ZVtmPj4wXSk8PDI0Pj4yND8wfHMwKGMsQSk6MHxidFtiKygyNTUmQSk+''@;'; put 'put ''PjBdKSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6az0xMDticmVhayBlO2Nhc2UgNjprPTk7YnJlYWsgdDtjYXNlIDc6az0xOTticmVhayB0O2Nhc2UgNTpkZWZhdWx0OmY9ZisyfDA7Y29udGludWUgdDtjYXNlIDEzOmNhc2UgMTI6aWYoYz1mKzJ8MCwoMHxBKT09KDB8bCkpe2s9MTI7YnJlYWsg''@;'; put 'put ''ZX1mPWM7Y29udGludWUgdH19aWYoOSE9KDB8aykpaWYoMTkhPSgwfGspKTtlbHNle2lmKGs9MCwoMHx3KTw0KXtmPS0yO2JyZWFrfWY9Zis0fDB9ZWxzZXtpZihrPTAsKDB8dyk8Myl7Zj0tMjticmVha31mPWYrM3wwfX1lOmRve2lmKDEwPT0oMHxrKSlhW20+PjJdPWYsZj0wO2Vsc2UgaWYo''@;'; put 'put ''MTI9PSgwfGspKWlmKChwLWN8MCk+MSl7c3dpdGNoKGFbbT4+Ml09YyxmPTB8dWVbZiszPj4wXSwwfChmPShwPTB8dWVbYz4+MF0pPDwyND4+MjQ/MHxzMChwLGYpOjB8YnRbYisoMjU1JmYpPj4wXSkpe2Nhc2UgMjA6Y2FzZSAzMDpjYXNlIDExOmNhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Zj0y''@;'; put 'put ''NzticmVhayBlfWY9MH1lbHNlIGY9LTI3fXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gWjFlKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBiLG09MCxBPTAsdz0wLGs9MDtiPWZ8PTA7ZTpkb3tpZigoYi1jfDApPjEpc3dpdGNoKG09MHx1ZVtjPj4wXSxtPW08PDI0Pj4yND8wfHMw''@;'; put 'put ''KG0sMHx1ZVtjKzE+PjBdKTowfGJ0W2wrNzIrKDB8YnRbYysxPj4wXSk+PjBdLDB8bSl7Y2FzZSAyNzptPTB8SDFlKGwsYysyfDAsZixwKTticmVhayBlO2Nhc2UgMjA6YVtwPj4yXT1jKzIsbT0zMzticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjp3PWwrNzJ8MDt0OmZvcig7Oyl7aWYoKDB8KGY9''@;'; put 'put ''Yi0oQT1jKzJ8MCl8MCkpPD0xKXttPS0xO2JyZWFrIGV9c3dpdGNoKGw9MHx1ZVtjKzM+PjBdLDB8KG09KG09MHx1ZVtBPj4wXSk8PDI0Pj4yND8wfHMwKG0sbCk6MHxidFt3KygyNTUmbCk+PjBdKSl7Y2FzZSAyNDpjYXNlIDIyOmM9QTticmVhaztjYXNlIDMwOms9MTU7YnJlYWsgdDtjYXNl''@;'; put 'put ''IDEwOmNhc2UgOTpjYXNlIDIxOmJyZWFrIHQ7ZGVmYXVsdDprPTIyO2JyZWFrIHR9fWlmKDIyPT0oMHxrKSl7YVtwPj4yXT1BLG09MDticmVhayBlfXQ6ZG97aWYoMTU9PSgwfGspKXtpZigoMHxmKTw9Myl7bT0tMTticmVhayBlfXN3aXRjaChtPTB8dWVbYys1Pj4wXSwwfChtPShsPTB8dWVb''@;'; put 'put ''Yys0Pj4wXSk8PDI0Pj4yND8wfHMwKGwsbSk6MHxidFt3KygyNTUmbSk+PjBdKSl7Y2FzZSAzMDpjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6YnJlYWsgdH1hW3A+PjJdPUEsbT0wO2JyZWFrIGV9fXdoaWxlKDApO2FbcD4+Ml09QSxtPTE2O2JyZWFrIGU7ZGVmYXVsdDph''@;'; put 'put ''W3A+PjJdPWMsbT0wO2JyZWFrIGV9ZWxzZSBtPS0xfXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gejFlKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wO3c9KGZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8dyk+MSl7c3dpdGNoKDB8KG09KGI9MHx1ZVtjPj4wXSk8''@;'; put 'put ''PDI0Pj4yND8wfHMwKGIsQT0wfHVlW2MrMT4+MF0pOjB8YnRbbCs3MisoMjU1JihBPTB8dWVbYysxPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8YnRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09''@;'; put 'put ''YyxmPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtmPS0yO2JyZWFrIGV9''@;'; put 'put ''YVtwPj4yXT1jLGY9MDticmVhayBlfWw9bCs3MnwwLGI9Yzt0OmZvcig7Oyl7aWYobT1iLCgwfChjPWYtKGI9YisyfDApfDApKTw9MSl7Zj0tMjA7YnJlYWsgZX1zd2l0Y2gobT0wfHVlW20rMz4+MF0sMHwoQT0odz0wfHVlW2I+PjBdKTw8MjQ+PjI0PzB8czAodyxtKTowfGJ0W2wrKDI1NSZt''@;'; put 'put ''KT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Y29udGludWUgdDtjYXNlIDU6bT0yMjticmVhayB0O2Nhc2UgNjptPTIzO2JyZWFrIHQ7Y2FzZSA3Om09MjU7YnJlYWsgdDtjYXNlIDM2OmNhc2UgMzA6Y2FzZSAxMTpjYXNlIDMyOmNhc2UgMjE6Y2FzZSAx''@;'; put 'put ''MDpjYXNlIDk6bT0yNzticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTI4O2JyZWFrIHR9aWYoISgxPDwoMzEmKGM9MjU1Jm0pKSZhWzU2OTQwKygoYz4+PjV8KDB8YnRbMTQ0MDQ0KygyNTUmdyk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjE7YnJlYWt9fWlmKDIxPT0oMHxtKSl7YVtw''@;'; put 'put ''Pj4yXT1iLGY9MDticmVha31pZigyMj09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjM9PSgwfG0pKXtpZigoMHxjKTwzKXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjU9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9''@;'; put 'put ''aWYoMjc9PSgwfG0pKXthW3A+PjJdPWIsZj0yMDticmVha31pZigyOD09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIHpqKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MCxBPTA7ZTpmb3IoOzspc3dpdGNoKG09''@;'; put 'put ''MHx1ZVtsPj4wXSxBPTB8dWVbYz4+MF0sbT0obSstOTcmMjU1KTwyNj8yMjQrKDI1NSZtKSYyNTU6bSwzJihtPDwyND4+MjQ9PSgoQSstOTcmMjU1KTwyNj8yMjQrKDI1NSZBKSYyNTU6QSk8PDI0Pj4yND9tPDwyND4+MjQ9PTA/MjowOjEpKXtjYXNlIDA6Yz1jKzF8MCxsPWwrMXwwO2JyZWFr''@;'; put 'put ''O2Nhc2UgMTpwPTM7YnJlYWsgZTtjYXNlIDI6Zj0xO2JyZWFrIGU7ZGVmYXVsdDpwPTU7YnJlYWsgZX1yZXR1cm4gMz09KDB8cCkmJihmPTApLDB8Zn1mdW5jdGlvbiBpJChsLGMsZixwLG0sQSx3LGIsayxNLEQpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0w''@;'; put 'put ''LE18PTAsRHw9MDt2YXIgRyxLLHBlLE9lLExlLEJlLFI9MCxtZT0wLGJlPTA7QmU9b2Usb2U9b2UrMTZ8MCxPZT1CZSs4fDAsRz1CZSs0fDAsSz1CZSxhWyhwZT1CZSsxMnwwKT4+Ml09MCxhW0c+PjJdPTAsYVtLPj4yXT0wLGFbT2U+PjJdPW1lPXArKDUqKGJlPTB8YVsoTGU9Zis2NHwwKT4+''@;'; put 'put ''Ml0pfDApfDAsbWU9MCE9KDB8S2goZixtZSxiZT1tKygwLShiZTw8MSkpfDAsRyxLLHBlLE9lKSkscD1SPTB8YVtHPj4yXTtlOmRve2lmKG1lJjAhPSgwfFIpKXttZT1mKzI0fDAsbT0wfGFbSz4+Ml07ZG97aWYoMHxEMFsxMjcmYVttZT4+Ml1dKGYsUixtLDE0NDM0MCkpe2lmKDB8dyYmKGFb''@;'; put 'put ''dz4+Ml09YVtwZT4+Ml0pLGI/YVtiPj4yXT1wPTB8YVtPZT4+Ml06cD0wfGFbT2U+PjJdLCEoMHxLaChmLHAsYmUsRyxLLHBlLE9lKSkpe2FbQT4+Ml09YVtPZT4+Ml0scD0wO2JyZWFrIGV9aWYoMHwobT0wfGFbRz4+Ml0pKXtwPW0sUj1tLG09MHxhW0s+PjJdO2JyZWFrfWlmKCFjKXtwPTE7''@;'; put 'put ''YnJlYWsgZX1hW0E+PjJdPWFbT2U+PjJdLHA9MDticmVhayBlfWlmKCFjKXthW0E+PjJdPXAscD0wO2JyZWFrIGV9fXdoaWxlKDApO2lmKDB8RDBbMTI3JmFbbWU+PjJdXShmLFIsbSwxNDQzNDgpKXtpZihwPW09MHxhW3BlPj4yXSwoKC0zMyYoMHx1ZyhmLG0sYmUpKSktNjV8MCk+Pj4wPj0y''@;'; put 'put ''Nil7YVtBPj4yXT1wLHA9MDticmVha31pZigwfGsmJihhW2s+PjJdPXApLHA9MHxhW09lPj4yXSwwfE0mJihhW00+PjJdPTB8bWlbNjMmbF0oZixtLHArKDAtKDB8YVtMZT4+Ml0pKXwwKSksISgwfEtoKGYscCxiZSxHLEsscGUsT2UpKSl7YVtBPj4yXT1hW09lPj4yXSxwPTA7YnJlYWt9aWYo''@;'; put 'put ''IShwPTB8YVtHPj4yXSkpe3A9MTticmVha31SPXAsbT0wfGFbSz4+Ml19aWYoMCE9KDB8Yyl8MD09KDB8RDBbMTI3JmFbbWU+PjJdXShmLFIsbSwxNDQzNTcpKSl7YVtBPj4yXT1wLHA9MDticmVha31pZihSPW09MHxhW3BlPj4yXSwwfEQwWzEyNyZhW21lPj4yXV0oZixtLChwPTB8YVtPZT4+''@;'; put 'put ''Ml0pKygwLSgwfGFbTGU+PjJdKSl8MCwxMDc2NTcpKUQmJihhW0Q+PjJdPTEpO2Vsc2V7aWYoISgwfEQwWzEyNyZhW21lPj4yXV0oZixtLHArKDAtKDB8YVtMZT4+Ml0pKXwwLDEwNzY0OSkpKXthW0E+PjJdPVIscD0wO2JyZWFrfUQmJihhW0Q+PjJdPTApfWZvcig7MHxhdygwfHVnKGYscCxi''@;'; put 'put ''ZSkpOylwPXArKDB8YVtMZT4+Ml0pfDA7YVtPZT4+Ml09cCwoMHxwKT09KDB8YmUpP3A9MTooYVtBPj4yXT1wLHA9MCl9ZWxzZSBhW0E+PjJdPWFbT2U+PjJdLHA9MH13aGlsZSgwKTtyZXR1cm4gb2U9QmUsMHxwfWZ1bmN0aW9uIEtoKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLHB8''@;'; put 'put ''PTAsbXw9MCxBfD0wLHd8PTA7dmFyIGI9MCxrPTA7ZTpkb3tpZigoMHxjKSE9KDB8Zikpe2lmKCEoMHxhdygwfHVnKGwsYyxmKSkpKXthW3c+PjJdPWMsYz0wO2JyZWFrfWs9bCs2NHwwO2Rve2M9YysoMHxhW2s+PjJdKXwwfXdoaWxlKDAhPSgwfGF3KDB8dWcobCxjLGYpKSkpO2lmKCgwfGMp''@;'; put 'put ''PT0oMHxmKSl7YVtwPj4yXT0wLGM9MTticmVha31hW3A+PjJdPWM7dDpmb3IoOzspe3N3aXRjaCgwfChiPTB8dWcobCxjLGYpKSl7Y2FzZS0xOmI9MTE7YnJlYWsgdDtjYXNlIDYxOmI9MTI7YnJlYWsgdH1pZigwfGF3KGIpKXtiPTE0O2JyZWFrfWM9YysoMHxhW2s+PjJdKXwwfWlmKDExPT0o''@;'; put 'put ''MHxiKSl7YVt3Pj4yXT1jLGM9MDticmVha31pZigxMj09KDB8YikpYVttPj4yXT1jO2Vsc2UgaWYoMTQ9PSgwfGIpKXthW20+PjJdPWM7ZG97Yj0wfHVnKGwsYz1jKygwfGFbaz4+Ml0pfDAsZil9d2hpbGUoMCE9KDB8YXcoYikpKTtpZig2MSE9KDB8Yikpe2Fbdz4+Ml09YyxjPTA7YnJlYWt9''@;'; put 'put ''fWlmKCgwfGMpPT0oMHxhW3A+PjJdKSl7YVt3Pj4yXT1jLGM9MDticmVha31kb3tiPTB8dWcobCxjPWMrKDB8YVtrPj4yXSl8MCxmKX13aGlsZSgwIT0oMHxhdyhiKSkpO3N3aXRjaCgwfGIpe2Nhc2UgMzQ6Y2FzZSAzOTpicmVhaztkZWZhdWx0OmFbdz4+Ml09YyxjPTA7YnJlYWsgZX1hW0E+''@;'; put 'put ''PjJdPW09YysoMHxhW2s+PjJdKXwwLGM9Yjw8MjQ+PjI0O3Q6Zm9yKDs7KXtpZigoMHwoYj0wfHVnKGwsbSxmKSkpPT0oMHxjKSl7Yj0zMDticmVha31pZigoYistNDh8MCk+Pj4wPjkmKCgtMzMmYiktNjV8MCk+Pj4wPjI1KXN3aXRjaCgwfGIpe2Nhc2UgNDU6Y2FzZSA0NjpjYXNlIDk1OmJy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6Yj0yODticmVhayB0fW09bSsoMHxhW2s+PjJdKXwwfWlmKDI4PT0oMHxiKSl7YVt3Pj4yXT1tLGM9MDticmVha31pZigzMD09KDB8Yikpe2Fbdz4+Ml09bSsoMHxhW2s+PjJdKSxjPTE7YnJlYWt9fWVsc2UgYVtwPj4yXT0wLGM9MX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1''@;'; put 'put ''bmN0aW9uIHVnKGwsYyxmKXt2YXIgcCxtLEEsdztyZXR1cm4gbHw9MCxmfD0wLEE9b2Usb2U9b2UrMTZ8MCxwPUErOHwwLG09QSxhWyh3PUErNHwwKT4+Ml09Y3w9MCxhW20+PjJdPXAsTDFbMTI3JmFbbCs1Nj4+Ml1dKGwsdyxmLG0scCsxfDApLG9lPUEsMHwoKDB8YVttPj4yXSk9PSgwfHAp''@;'; put 'put ''Py0xOjB8dWVbcD4+MF0pfWZ1bmN0aW9uIGF3KGwpe3N3aXRjaCgwfChsfD0wKSl7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOmw9MTticmVhaztkZWZhdWx0Omw9MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIGphKGwsYyl7cmV0dXJuIDI4PT0oMHwoY3w9MCkpJjA9PSgwfGFbMTYrKGx8''@;'; put 'put ''PTApPj4yXSk/bD01OTooYVtsPj4yXT0xOCxsPS0xKSwwfGx9ZnVuY3Rpb24gbnVlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MDtlOmRve3N3aXRjaCgwfGMpe2Nhc2UtNDpjYXNlIDE1Omw9MDticmVhaztjYXNlIDE2OmlmKDB8RDBbMTI3JmFb''@;'; put 'put ''KEE9bSsyNHwwKT4+Ml1dKG0sZisoYVsodz1tKzY0fDApPj4yXTw8MSl8MCxwLDE0NDM5MCkpe2FbbD4+Ml09MjQsbD0xMTticmVhayBlfWlmKDB8RDBbMTI3JmFbQT4+Ml1dKG0sZisoYVt3Pj4yXTw8MSl8MCxwLDE0NDM5Nykpe2FbbD4+Ml09MjUsbD0zMzticmVhayBlfWlmKDB8RDBbMTI3''@;'; put 'put ''JmFbQT4+Ml1dKG0sZisoYVt3Pj4yXTw8MSl8MCxwLDE0NDQwNSkpe2FbbD4+Ml09MjYsbD0zOTticmVhayBlfTB8RDBbMTI3JmFbQT4+Ml1dKG0sZisoYVt3Pj4yXTw8MSl8MCxwLDE0NDQxMyk/KGFbbD4+Ml09MjcsbD0xNyk6Yj0xNDticmVhaztjYXNlIDExOmw9NTU7YnJlYWs7Y2FzZSAx''@;'; put 'put ''MzpsPTU2O2JyZWFrO2Nhc2UgMjg6bD02MDticmVhaztjYXNlIDI2OmFbbD4+Ml09MjgsbD0zO2JyZWFrO2RlZmF1bHQ6Yj0xNH19d2hpbGUoMCk7cmV0dXJuIDE0PT0oMHxiKSYmKGw9MHxqYShsLGMpKSwwfGx9ZnVuY3Rpb24gUjAobCl7bHw9MDt2YXIgamUsYz0wLGY9MCxwPTAsbT0wLEE9''@;'; put 'put ''MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTA7amU9b2Usb2U9b2UrMTZ8MCxLPWplO2Rve2lmKGw+Pj4wPDI0NSl7aWYoMyYoZj0oRz0wfGFbNDc1MTldKT4+PihsPShEPWw+Pj4wPDExPzE2OmwrMTEmLTgpPj4+Mykp''@;'; put 'put ''fDApcmV0dXJuKDB8KEE9MHxhWyhtPTgrKHA9MHxhWyhmPTgrKGw9MTkwMTE2KygoYz0oMSZmXjEpK2x8MCk8PDE8PDIpfDApfDApPj4yXSl8MCk+PjJdKSk9PSgwfGwpP2FbNDc1MTldPUcmfigxPDxjKTooYVtBKzEyPj4yXT1sLGFbZj4+Ml09QSksYVtwKzQ+PjJdPTN8KEhlPWM8PDMpLGFb''@;'; put 'put ''KEhlPXArSGUrNHwwKT4+Ml09MXxhW0hlPj4yXSxvZT1qZSwwfG07aWYoRD4+PjA+KFI9MHxhWzQ3NTIxXSk+Pj4wKXtpZigwfGYpcmV0dXJuIGM9KChjPWY8PGwmKChjPTI8PGwpfDAtYykpJjAtYyktMXwwLCgwfChmPTB8YVsoYj04KyhBPTB8YVsobD04KyhjPTE5MDExNisoKHA9KChmPShj''@;'; put 'put ''Pj4+PWI9Yz4+PjEyJjE2KT4+PjUmOCl8YnwoQT0oYz4+Pj1mKT4+PjImNCl8KGw9KGM+Pj49QSk+Pj4xJjIpfChwPShjPj4+PWwpPj4+MSYxKSkrKGM+Pj5wKXwwKTw8MTw8Mil8MCl8MCk+PjJdKXwwKT4+Ml0pKT09KDB8Yyk/YVs0NzUxOV09bD1HJn4oMTw8cCk6KGFbZisxMj4+Ml09Yyxh''@;'; put 'put ''W2w+PjJdPWYsbD1HKSx3PShIZT1wPDwzKS1EfDAsYVtBKzQ+PjJdPTN8RCxhWzQrKG09QStEfDApPj4yXT0xfHcsYVtBK0hlPj4yXT13LDB8UiYmKHA9MHxhWzQ3NTI0XSxmPTE5MDExNisoKGM9Uj4+PjMpPDwxPDwyKXwwLGwmKGM9MTw8Yyk/Yz0wfGFbKGw9Zis4fDApPj4yXTooYVs0NzUx''@;'; put 'put ''OV09bHxjLGM9ZixsPWYrOHwwKSxhW2w+PjJdPXAsYVtjKzEyPj4yXT1wLGFbcCs4Pj4yXT1jLGFbcCsxMj4+Ml09ZiksYVs0NzUyMV09dyxhWzQ3NTI0XT1tLG9lPWplLDB8YjtpZihrPTB8YVs0NzUyMF0pe2lmKGY9KGsmMC1rKS0xfDAsZj0oLTgmYVs0KyhsPTB8YVsxOTAzODArKCgodz0o''@;'; put 'put ''Zj4+Pj1iPWY+Pj4xMiYxNik+Pj41JjgpfGJ8KE09KGY+Pj49dyk+Pj4yJjQpfChwPShmPj4+PU0pPj4+MSYyKXwobD0oZj4+Pj1wKT4+PjEmMSkpKyhmPj4+bCk8PDIpPj4yXSk+PjJdKS1EfDAscD0wfGFbbCsxNisoKDA9PSgwfGFbbCsxNj4+Ml0pJjEpPDwyKT4+Ml0pe2Rve2Y9KE09KGI9''@;'; put 'put ''KC04JmFbcCs0Pj4yXSktRHwwKT4+PjA8Zj4+PjApP2I6ZixsPU0/cDpsLHA9MHxhW3ArMTYrKCgwPT0oMHxhW3ArMTY+PjJdKSYxKTw8Mik+PjJdfXdoaWxlKDAhPSgwfHApKTtNPWwsdz1mfWVsc2UgTT1sLHc9ZjtpZigoYj1NK0R8MCk+Pj4wPk0+Pj4wKXttPTB8YVtNKzI0Pj4yXSxjPTB8''@;'; put 'put ''YVtNKzEyPj4yXTtkb3tpZigoMHxjKT09KDB8TSkpe2lmKCEoYz0wfGFbKGw9TSsyMHwwKT4+Ml0pJiYhKGM9MHxhWyhsPU0rMTZ8MCk+PjJdKSl7Zj0wO2JyZWFrfWZvcig7OylpZigwfChwPTB8YVsoZj1jKzIwfDApPj4yXSkpYz1wLGw9ZjtlbHNle2lmKCEocD0wfGFbKGY9YysxNnwwKT4+''@;'; put 'put ''Ml0pKWJyZWFrO2M9cCxsPWZ9YVtsPj4yXT0wLGY9Y31lbHNlIGFbMTIrKGY9MHxhW00rOD4+Ml0pPj4yXT1jLGFbYys4Pj4yXT1mLGY9Y313aGlsZSgwKTtkb3tpZigwfG0pe2lmKCgwfE0pPT0oMHxhWyhsPTE5MDM4MCsoKGM9MHxhW00rMjg+PjJdKTw8Mil8MCk+PjJdKSl7aWYoYVtsPj4y''@;'; put 'put ''XT1mLCFmKXthWzQ3NTIwXT1rJn4oMTw8Yyk7YnJlYWt9fWVsc2UgaWYoYVttKzE2KygoKDB8YVttKzE2Pj4yXSkhPSgwfE0pJjEpPDwyKT4+Ml09ZiwhZilicmVhazthW2YrMjQ+PjJdPW0sMHwoYz0wfGFbTSsxNj4+Ml0pJiYoYVtmKzE2Pj4yXT1jLGFbYysyND4+Ml09ZiksMHwoYz0wfGFb''@;'; put 'put ''TSsyMD4+Ml0pJiYoYVtmKzIwPj4yXT1jLGFbYysyND4+Ml09Zil9fXdoaWxlKDApO3JldHVybiB3Pj4+MDwxNj8oYVtNKzQ+PjJdPTN8KEhlPXcrRHwwKSxhWyhIZT1NK0hlKzR8MCk+PjJdPTF8YVtIZT4+Ml0pOihhW00rND4+Ml09M3xELGFbYis0Pj4yXT0xfHcsYVtiK3c+PjJdPXcsMHxS''@;'; put 'put ''JiYocD0wfGFbNDc1MjRdLGY9MTkwMTE2KygoYz1SPj4+Myk8PDE8PDIpfDAsRyYoYz0xPDxjKT9jPTB8YVsobD1mKzh8MCk+PjJdOihhWzQ3NTE5XT1HfGMsYz1mLGw9Zis4fDApLGFbbD4+Ml09cCxhW2MrMTI+PjJdPXAsYVtwKzg+PjJdPWMsYVtwKzEyPj4yXT1mKSxhWzQ3NTIxXT13LGFb''@;'; put 'put ''NDc1MjRdPWIpLG9lPWplLDB8TSs4fVI9RH1lbHNlIFI9RH1lbHNlIFI9RH1lbHNlIGlmKGw+Pj4wPD00Mjk0OTY3MjMxKWlmKEQ9LTgmKGw9bCsxMXwwKSxNPTB8YVs0NzUyMF0pe3A9MC1EfDAsaz0obD4+Pj04KT9EPj4+MD4xNjc3NzIxNT8zMTpEPj4+KDcrKGs9MTQtKChSPSg1MjAxOTIr''@;'; put 'put ''KEJlPWw8PChHPShsKzEwNDgzMjB8MCk+Pj4xNiY4KSl8MCk+Pj4xNiY0KXxHfChrPSgyNDU3NjArKEJlPDw9Uil8MCk+Pj4xNiYyKSkrKEJlPDxrPj4+MTUpfDApfDApJjF8azw8MTowLGY9MHxhWzE5MDM4MCsoazw8Mik+PjJdO2U6ZG97aWYoZilmb3IobD0wLGI9Zix3PUQ8PCgzMT09KDB8''@;'; put 'put ''ayk/MDoyNS0oaz4+PjEpfDApLGY9MDs7KXtpZigobT0oLTgmYVtiKzQ+PjJdKS1EfDApPj4+MDxwPj4+MCl7aWYoIW0pe3A9MCxmPWIsbD1iLEJlPTYxO2JyZWFrIGV9bD1iLHA9bX1pZihmPTA9PSgwfChtPTB8YVtiKzIwPj4yXSkpfCgwfG0pPT0oMHwoYj0wfGFbYisxNisodz4+PjMxPDwy''@;'; put 'put ''KT4+Ml0pKT9mOm0sbT0wPT0oMHxiKSl7QmU9NTc7YnJlYWt9dzw8PTEmKDFebSl9ZWxzZSBmPTAsbD0wLEJlPTU3fXdoaWxlKDApO2lmKDU3PT0oMHxCZSkpe2lmKDA9PSgwfGYpJjA9PSgwfGwpKXtpZighKGw9TSYoKGw9Mjw8ayl8MC1sKSkpe1I9RDticmVha31HPShsJjAtbCktMXwwLGw9''@;'; put 'put ''MCxmPTB8YVsxOTAzODArKCgodz0oRz4+Pj1iPUc+Pj4xMiYxNik+Pj41JjgpfGJ8KGs9KEc+Pj49dyk+Pj4yJjQpfChSPShHPj4+PWspPj4+MSYyKXwoZj0oRz4+Pj1SKT4+PjEmMSkpKyhHPj4+Zik8PDIpPj4yXX1mP0JlPTYxOihiPWwsdz1wKX1pZig2MT09KDB8QmUpKWZvcig7Oyl7aWYo''@;'; put 'put ''QmU9MCxwPShHPShSPSgtOCZhW2YrND4+Ml0pLUR8MCk+Pj4wPHA+Pj4wKT9SOnAsbD1HP2Y6bCwhKGY9MHxhW2YrMTYrKCgwPT0oMHxhW2YrMTY+PjJdKSYxKTw8Mik+PjJdKSl7Yj1sLHc9cDticmVha31CZT02MX1pZigwIT0oMHxiKSYmdz4+PjA8KCgwfGFbNDc1MjFdKS1EfDApPj4+MCl7''@;'; put 'put ''aWYoKEE9YitEfDApPj4+MDw9Yj4+PjApcmV0dXJuIG9lPWplLDA7bT0wfGFbYisyND4+Ml0sYz0wfGFbYisxMj4+Ml07ZG97aWYoKDB8Yyk9PSgwfGIpKXtpZighKGM9MHxhWyhsPWIrMjB8MCk+PjJdKSYmIShjPTB8YVsobD1iKzE2fDApPj4yXSkpe2M9MDticmVha31mb3IoOzspaWYoMHwo''@;'; put 'put ''cD0wfGFbKGY9YysyMHwwKT4+Ml0pKWM9cCxsPWY7ZWxzZXtpZighKHA9MHxhWyhmPWMrMTZ8MCk+PjJdKSlicmVhaztjPXAsbD1mfWFbbD4+Ml09MH1lbHNlIGFbMTIrKEhlPTB8YVtiKzg+PjJdKT4+Ml09YyxhW2MrOD4+Ml09SGV9d2hpbGUoMCk7ZG97aWYobSl7aWYoKDB8Yik9PSgwfGFb''@;'; put 'put ''KGY9MTkwMzgwKygobD0wfGFbYisyOD4+Ml0pPDwyKXwwKT4+Ml0pKXtpZihhW2Y+PjJdPWMsIWMpe2FbNDc1MjBdPXA9TSZ+KDE8PGwpO2JyZWFrfX1lbHNlIGlmKGFbbSsxNisoKCgwfGFbbSsxNj4+Ml0pIT0oMHxiKSYxKTw8Mik+PjJdPWMsIWMpe3A9TTticmVha31hW2MrMjQ+PjJdPW0s''@;'; put 'put ''MHwobD0wfGFbYisxNj4+Ml0pJiYoYVtjKzE2Pj4yXT1sLGFbbCsyND4+Ml09YyksKGw9MHxhW2IrMjA+PjJdKSYmKGFbYysyMD4+Ml09bCxhW2wrMjQ+PjJdPWMpLHA9TX1lbHNlIHA9TX13aGlsZSgwKTtkb3tpZih3Pj4+MD49MTYpe2lmKGFbYis0Pj4yXT0zfEQsYVtBKzQ+PjJdPTF8dyxh''@;'; put 'put ''W0Erdz4+Ml09dyxjPXc+Pj4zLHc+Pj4wPDI1Nil7Zj0xOTAxMTYrKGM8PDE8PDIpfDAsKGw9MHxhWzQ3NTE5XSkmKGM9MTw8Yyk/Yz0wfGFbKGw9Zis4fDApPj4yXTooYVs0NzUxOV09bHxjLGM9ZixsPWYrOHwwKSxhW2w+PjJdPUEsYVtjKzEyPj4yXT1BLGFbQSs4Pj4yXT1jLGFbQSsxMj4+''@;'; put 'put ''Ml09ZjticmVha31pZihmPTE5MDM4MCsoKGM9KGM9dz4+PjgpP3c+Pj4wPjE2Nzc3MjE1PzMxOnc+Pj4oNysoYz0xNC0oKExlPSg1MjAxOTIrKEhlPWM8PChCZT0oYysxMDQ4MzIwfDApPj4+MTYmOCkpfDApPj4+MTYmNCl8QmV8KGM9KDI0NTc2MCsoSGU8PD1MZSl8MCk+Pj4xNiYyKSkrKEhl''@;'; put 'put ''PDxjPj4+MTUpfDApfDApJjF8Yzw8MTowKTw8Mil8MCxhW0ErMjg+PjJdPWMsYVs0KyhsPUErMTZ8MCk+PjJdPTAsYVtsPj4yXT0wLCEocCYobD0xPDxjKSkpe2FbNDc1MjBdPXB8bCxhW2Y+PjJdPUEsYVtBKzI0Pj4yXT1mLGFbQSsxMj4+Ml09QSxhW0ErOD4+Ml09QTticmVha31mb3IobD13''@;'; put 'put ''PDwoMzE9PSgwfGMpPzA6MjUtKGM+Pj4xKXwwKSxmPTB8YVtmPj4yXTs7KXtpZigoLTgmYVtmKzQ+PjJdfDApPT0oMHx3KSl7QmU9OTc7YnJlYWt9aWYoIShjPTB8YVsocD1mKzE2KyhsPj4+MzE8PDIpfDApPj4yXSkpe0JlPTk2O2JyZWFrfWw8PD0xLGY9Y31pZig5Nj09KDB8QmUpKXthW3A+''@;'; put 'put ''PjJdPUEsYVtBKzI0Pj4yXT1mLGFbQSsxMj4+Ml09QSxhW0ErOD4+Ml09QTticmVha31pZig5Nz09KDB8QmUpKXthWzEyKyhIZT0wfGFbKEJlPWYrOHwwKT4+Ml0pPj4yXT1BLGFbQmU+PjJdPUEsYVtBKzg+PjJdPUhlLGFbQSsxMj4+Ml09ZixhW0ErMjQ+PjJdPTA7YnJlYWt9fWVsc2UgYVti''@;'; put 'put ''KzQ+PjJdPTN8KEhlPXcrRHwwKSxhWyhIZT1iK0hlKzR8MCk+PjJdPTF8YVtIZT4+Ml19d2hpbGUoMCk7cmV0dXJuIG9lPWplLDB8Yis4fVI9RH1lbHNlIFI9RDtlbHNlIFI9LTF9d2hpbGUoMCk7aWYoKGY9MHxhWzQ3NTIxXSk+Pj4wPj1SPj4+MClyZXR1cm4gbD0wfGFbNDc1MjRdLChjPWYt''@;'; put 'put ''UnwwKT4+PjA+MTU/KGFbNDc1MjRdPUhlPWwrUnwwLGFbNDc1MjFdPWMsYVtIZSs0Pj4yXT0xfGMsYVtsK2Y+PjJdPWMsYVtsKzQ+PjJdPTN8Uik6KGFbNDc1MjFdPTAsYVs0NzUyNF09MCxhW2wrND4+Ml09M3xmLGFbKEhlPWwrZis0fDApPj4yXT0xfGFbSGU+PjJdKSxvZT1qZSwwfGwrODtp''@;'; put 'put ''ZigoYj0wfGFbNDc1MjJdKT4+PjA+Uj4+PjApcmV0dXJuIGFbNDc1MjJdPUxlPWItUnwwLGFbNDc1MjVdPUJlPShIZT0wfGFbNDc1MjVdKStSfDAsYVtCZSs0Pj4yXT0xfExlLGFbSGUrND4+Ml09M3xSLG9lPWplLDB8SGUrODtpZigwfGFbNDc2MzddP2w9MHxhWzQ3NjM5XTooYVs0NzYzOV09''@;'; put 'put ''NDA5NixhWzQ3NjM4XT00MDk2LGFbNDc2NDBdPS0xLGFbNDc2NDFdPS0xLGFbNDc2NDJdPTAsYVs0NzYzMF09MCxhWzQ3NjM3XT0tMTYmS14xNDMxNjU1NzY4LGw9NDA5Niksaz1SKzQ4fDAsKEQ9KHc9bCsoTT1SKzQ3fDApfDApJihtPTAtbHwwKSk+Pj4wPD1SPj4+MHx8MHwobD0wfGFbNDc2''@;'; put 'put ''MjldKSYmKEs9KEc9MHxhWzQ3NjI3XSkrRHwwKT4+PjA8PUc+Pj4wfEs+Pj4wPmw+Pj4wKXJldHVybiBvZT1qZSwwO2U6ZG97aWYoNCZhWzQ3NjMwXSljPTAsQmU9MTMzO2Vsc2V7Zj0wfGFbNDc1MjVdO3Q6ZG97aWYoZil7Zm9yKHA9MTkwNTI0OyEoKGw9MHxhW3A+PjJdKT4+PjA8PWY+Pj4w''@;'; put 'put ''JiYoYmU9cCs0fDAsKGwrKDB8YVtiZT4+Ml0pfDApPj4+MD5mPj4+MCkpOyl7aWYoIShsPTB8YVtwKzg+PjJdKSl7QmU9MTE4O2JyZWFrIHR9cD1sfWlmKChjPXctYiZtKT4+PjA8MjE0NzQ4MzY0NylpZigoMHwobD0wfGdnKDB8YykpKT09KCgwfGFbcD4+Ml0pKygwfGFbYmU+PjJdKXwwKSl7''@;'; put 'put ''aWYoLTEhPSgwfGwpKXt3PWMsQT1sLEJlPTEzNTticmVhayBlfX1lbHNlIHA9bCxCZT0xMjY7ZWxzZSBjPTB9ZWxzZSBCZT0xMTh9d2hpbGUoMCk7ZG97aWYoMTE4PT0oMHxCZSkpaWYoLTEhPSgwfChmPTB8Z2coMCkpKSYmKG1lPShjPSgwPT0oKG1lPShwZT0wfGFbNDc2MzhdKS0xfDApJihj''@;'; put 'put ''PWYpfDApPzA6KG1lK2MmMC1wZSktY3wwKStEfDApKyhwZT0wfGFbNDc2MjddKXwwLGM+Pj4wPlI+Pj4wJmM+Pj4wPDIxNDc0ODM2NDcpKXtpZigwfChiZT0wfGFbNDc2MjldKSYmbWU+Pj4wPD1wZT4+PjB8bWU+Pj4wPmJlPj4+MCl7Yz0wO2JyZWFrfWlmKCgwfChsPTB8Z2coMHxjKSkpPT0o''@;'; put 'put ''MHxmKSl7dz1jLEE9ZixCZT0xMzU7YnJlYWsgZX1wPWwsQmU9MTI2fWVsc2UgYz0wfXdoaWxlKDApO2Rve2lmKDEyNj09KDB8QmUpKXtpZihmPTAtY3wwLCEoaz4+PjA+Yz4+PjAmYz4+PjA8MjE0NzQ4MzY0NyYtMSE9KDB8cCkpKXtpZigtMT09KDB8cCkpe2M9MDticmVha313PWMsQT1wLEJl''@;'; put 'put ''PTEzNTticmVhayBlfWlmKChsPU0tYysobD0wfGFbNDc2MzldKSYwLWwpPj4+MD49MjE0NzQ4MzY0Nyl7dz1jLEE9cCxCZT0xMzU7YnJlYWsgZX1pZigtMT09KDB8Z2coMHxsKSkpe2dnKDB8ZiksYz0wO2JyZWFrfXc9bCtjfDAsQT1wLEJlPTEzNTticmVhayBlfX13aGlsZSgwKTthWzQ3NjMw''@;'; put 'put ''XT00fGFbNDc2MzBdLEJlPTEzM319d2hpbGUoMCk7aWYoMTMzPT0oMHxCZSkmJkQ+Pj4wPDIxNDc0ODM2NDcmJiEoLTE9PSgwfChBPTB8Z2coMHxEKSkpfDFeKExlPShPZT0oYmU9MHxnZygwKSktQXwwKT4+PjA+KFIrNDB8MCk+Pj4wKXxBPj4+MDxiZT4+PjAmLTEhPSgwfEEpJi0xIT0oMHxi''@;'; put 'put ''ZSleMSkmJih3PUxlP09lOmMsQmU9MTM1KSwxMzU9PSgwfEJlKSl7YVs0NzYyN109Yz0oMHxhWzQ3NjI3XSkrd3wwLGM+Pj4wPigwfGFbNDc2MjhdKT4+PjAmJihhWzQ3NjI4XT1jKSxrPTB8YVs0NzUyNV07ZG97aWYoayl7Zm9yKGM9MTkwNTI0Ozspe2lmKCgwfEEpPT0oKGw9MHxhW2M+PjJd''@;'; put 'put ''KSsocD0wfGFbKGY9Yys0fDApPj4yXSl8MCkpe0JlPTE0MzticmVha31pZighKG09MHxhW2MrOD4+Ml0pKWJyZWFrO2M9bX1pZigxNDM9PSgwfEJlKSYmMD09KDgmYVtjKzEyPj4yXXwwKSYmQT4+PjA+az4+PjAmbD4+PjA8PWs+Pj4wKXthW2Y+PjJdPXArdyxCZT1rKyhMZT0wPT0oNyYoTGU9''@;'; put 'put ''ays4fDApfDApPzA6MC1MZSY3KXwwLExlPShIZT0oMHxhWzQ3NTIyXSkrd3wwKS1MZXwwLGFbNDc1MjVdPUJlLGFbNDc1MjJdPUxlLGFbQmUrND4+Ml09MXxMZSxhW2srSGUrND4+Ml09NDAsYVs0NzUyNl09YVs0NzY0MV07YnJlYWt9Zm9yKEE+Pj4wPCgwfGFbNDc1MjNdKT4+PjAmJihhWzQ3''@;'; put 'put ''NTIzXT1BKSxsPUErd3wwLGM9MTkwNTI0Ozspe2lmKCgwfGFbYz4+Ml0pPT0oMHxsKSl7QmU9MTUxO2JyZWFrfWlmKCEoYz0wfGFbYys4Pj4yXSkpe2w9MTkwNTI0O2JyZWFrfX1pZigxNTE9PSgwfEJlKSl7aWYoISg4JmFbYysxMj4+Ml0pKXthW2M+PjJdPUEsYVsoRD1jKzR8MCk+PjJdPSgw''@;'; put 'put ''fGFbRD4+Ml0pK3csTT0oRD1BKygwPT0oNyYoRD1BKzh8MCl8MCk/MDowLUQmNyl8MCkrUnwwLGI9KGM9bCsoMD09KDcmKGM9bCs4fDApfDApPzA6MC1jJjcpfDApLUQtUnwwLGFbRCs0Pj4yXT0zfFI7ZG97aWYoKDB8aykhPSgwfGMpKXtpZigoMHxhWzQ3NTI0XSk9PSgwfGMpKXthWzQ3NTIx''@;'; put 'put ''XT1IZT0oMHxhWzQ3NTIxXSkrYnwwLGFbNDc1MjRdPU0sYVtNKzQ+PjJdPTF8SGUsYVtNK0hlPj4yXT1IZTticmVha31pZigxPT0oMyYobD0wfGFbYys0Pj4yXSl8MCkpe3c9LTgmbCxwPWw+Pj4zO2U6ZG97aWYobD4+PjA8MjU2KXtpZigoMHwoZj0wfGFbYysxMj4+Ml0pKT09KDB8KGw9MHxh''@;'; put 'put ''W2MrOD4+Ml0pKSl7YVs0NzUxOV09YVs0NzUxOV0mfigxPDxwKTticmVha31hW2wrMTI+PjJdPWYsYVtmKzg+PjJdPWw7YnJlYWt9QT0wfGFbYysyND4+Ml0sbD0wfGFbYysxMj4+Ml07ZG97aWYoKDB8bCk9PSgwfGMpKXtpZighKGw9MHxhWyhmPTQrKHA9YysxNnwwKXwwKT4+Ml0pKXtpZigh''@;'; put 'put ''KGw9MHxhW3A+PjJdKSl7bD0wO2JyZWFrfWY9cH1mb3IoOzspaWYoMHwobT0wfGFbKHA9bCsyMHwwKT4+Ml0pKWw9bSxmPXA7ZWxzZXtpZighKG09MHxhWyhwPWwrMTZ8MCk+PjJdKSlicmVhaztsPW0sZj1wfWFbZj4+Ml09MH1lbHNlIGFbMTIrKEhlPTB8YVtjKzg+PjJdKT4+Ml09bCxhW2wr''@;'; put 'put ''OD4+Ml09SGV9d2hpbGUoMCk7aWYoIUEpYnJlYWs7cD0xOTAzODArKChmPTB8YVtjKzI4Pj4yXSk8PDIpfDA7ZG97aWYoKDB8YVtwPj4yXSk9PSgwfGMpKXtpZihhW3A+PjJdPWwsMHxsKWJyZWFrO2FbNDc1MjBdPWFbNDc1MjBdJn4oMTw8Zik7YnJlYWsgZX1pZihhW0ErMTYrKCgoMHxhW0Er''@;'; put 'put ''MTY+PjJdKSE9KDB8YykmMSk8PDIpPj4yXT1sLCFsKWJyZWFrIGV9d2hpbGUoMCk7aWYoYVtsKzI0Pj4yXT1BLDB8KHA9MHxhWyhmPWMrMTZ8MCk+PjJdKSYmKGFbbCsxNj4+Ml09cCxhW3ArMjQ+PjJdPWwpLCEoZj0wfGFbZis0Pj4yXSkpYnJlYWs7YVtsKzIwPj4yXT1mLGFbZisyND4+Ml09''@;'; put 'put ''bH13aGlsZSgwKTtjPWMrd3wwLG09dytifDB9ZWxzZSBtPWI7aWYoYVsoYz1jKzR8MCk+PjJdPS0yJmFbYz4+Ml0sYVtNKzQ+PjJdPTF8bSxhW00rbT4+Ml09bSxjPW0+Pj4zLG0+Pj4wPDI1Nil7Zj0xOTAxMTYrKGM8PDE8PDIpfDAsKGw9MHxhWzQ3NTE5XSkmKGM9MTw8Yyk/Yz0wfGFbKGw9''@;'; put 'put ''Zis4fDApPj4yXTooYVs0NzUxOV09bHxjLGM9ZixsPWYrOHwwKSxhW2w+PjJdPU0sYVtjKzEyPj4yXT1NLGFbTSs4Pj4yXT1jLGFbTSsxMj4+Ml09ZjticmVha31jPW0+Pj44O2Rve2lmKGMpe2lmKG0+Pj4wPjE2Nzc3MjE1KXtjPTMxO2JyZWFrfWM9bT4+Pig3KyhjPTE0LSgoTGU9KDUyMDE5''@;'; put 'put ''MisoSGU9Yzw8KEJlPShjKzEwNDgzMjB8MCk+Pj4xNiY4KSl8MCk+Pj4xNiY0KXxCZXwoYz0oMjQ1NzYwKyhIZTw8PUxlKXwwKT4+PjE2JjIpKSsoSGU8PGM+Pj4xNSl8MCl8MCkmMXxjPDwxfWVsc2UgYz0wfXdoaWxlKDApO2lmKHA9MTkwMzgwKyhjPDwyKXwwLGFbTSsyOD4+Ml09YyxhWzQr''@;'; put 'put ''KGw9TSsxNnwwKT4+Ml09MCxhW2w+PjJdPTAsISgobD0wfGFbNDc1MjBdKSYoZj0xPDxjKSkpe2FbNDc1MjBdPWx8ZixhW3A+PjJdPU0sYVtNKzI0Pj4yXT1wLGFbTSsxMj4+Ml09TSxhW00rOD4+Ml09TTticmVha31mb3IobD1tPDwoMzE9PSgwfGMpPzA6MjUtKGM+Pj4xKXwwKSxmPTB8YVtw''@;'; put 'put ''Pj4yXTs7KXtpZigoLTgmYVtmKzQ+PjJdfDApPT0oMHxtKSl7QmU9MTkyO2JyZWFrfWlmKCEoYz0wfGFbKHA9ZisxNisobD4+PjMxPDwyKXwwKT4+Ml0pKXtCZT0xOTE7YnJlYWt9bDw8PTEsZj1jfWlmKDE5MT09KDB8QmUpKXthW3A+PjJdPU0sYVtNKzI0Pj4yXT1mLGFbTSsxMj4+Ml09TSxh''@;'; put 'put ''W00rOD4+Ml09TTticmVha31pZigxOTI9PSgwfEJlKSl7YVsxMisoSGU9MHxhWyhCZT1mKzh8MCk+PjJdKT4+Ml09TSxhW0JlPj4yXT1NLGFbTSs4Pj4yXT1IZSxhW00rMTI+PjJdPWYsYVtNKzI0Pj4yXT0wO2JyZWFrfX1lbHNlIGFbNDc1MjJdPUhlPSgwfGFbNDc1MjJdKStifDAsYVs0NzUy''@;'; put 'put ''NV09TSxhW00rND4+Ml09MXxIZX13aGlsZSgwKTtyZXR1cm4gb2U9amUsMHxEKzh9bD0xOTA1MjR9Zm9yKDshKChjPTB8YVtsPj4yXSk+Pj4wPD1rPj4+MCYmKEhlPWMrKDB8YVtsKzQ+PjJdKXwwLEhlPj4+MD5rPj4+MCkpOylsPTB8YVtsKzg+PjJdO2M9KGw9KGw9KG09SGUrLTQ3fDApKygw''@;'; put 'put ''PT0oNyYobD1tKzh8MCl8MCk/MDowLWwmNyl8MCk+Pj4wPChtPWsrMTZ8MCk+Pj4wP2s6bCkrOHwwLEJlPUErKExlPTA9PSg3JihMZT1BKzh8MCl8MCk/MDowLUxlJjcpfDAsTGU9KGY9dystNDB8MCktTGV8MCxhWzQ3NTI1XT1CZSxhWzQ3NTIyXT1MZSxhW0JlKzQ+PjJdPTF8TGUsYVtBK2Yr''@;'; put 'put ''ND4+Ml09NDAsYVs0NzUyNl09YVs0NzY0MV0sYVsoZj1sKzR8MCk+PjJdPTI3LGFbYz4+Ml09YVs0NzYzMV0sYVtjKzQ+PjJdPWFbNDc2MzJdLGFbYys4Pj4yXT1hWzQ3NjMzXSxhW2MrMTI+PjJdPWFbNDc2MzRdLGFbNDc2MzFdPUEsYVs0NzYzMl09dyxhWzQ3NjM0XT0wLGFbNDc2MzNdPWMs''@;'; put 'put ''Yz1sKzI0fDA7ZG97QmU9YyxhWyhjPWMrNHwwKT4+Ml09N313aGlsZSgoQmUrOHwwKT4+PjA8SGU+Pj4wKTtpZigoMHxsKSE9KDB8aykpe2lmKEE9bC1rfDAsYVtmPj4yXT0tMiZhW2Y+PjJdLGFbays0Pj4yXT0xfEEsYVtsPj4yXT1BLGM9QT4+PjMsQT4+PjA8MjU2KXtmPTE5MDExNisoYzw8''@;'; put 'put ''MTw8Mil8MCwobD0wfGFbNDc1MTldKSYoYz0xPDxjKT9jPTB8YVsobD1mKzh8MCk+PjJdOihhWzQ3NTE5XT1sfGMsYz1mLGw9Zis4fDApLGFbbD4+Ml09ayxhW2MrMTI+PjJdPWssYVtrKzg+PjJdPWMsYVtrKzEyPj4yXT1mO2JyZWFrfWlmKHA9MTkwMzgwKygoZj0oYz1BPj4+OCk/QT4+PjA+''@;'; put 'put ''MTY3NzcyMTU/MzE6QT4+Pig3KyhmPTE0LSgoTGU9KDUyMDE5MisoSGU9Yzw8KEJlPShjKzEwNDgzMjB8MCk+Pj4xNiY4KSl8MCk+Pj4xNiY0KXxCZXwoZj0oMjQ1NzYwKyhIZTw8PUxlKXwwKT4+PjE2JjIpKSsoSGU8PGY+Pj4xNSl8MCl8MCkmMXxmPDwxOjApPDwyKXwwLGFbaysyOD4+Ml09''@;'; put 'put ''ZixhW2srMjA+PjJdPTAsYVttPj4yXT0wLCEoKGM9MHxhWzQ3NTIwXSkmKGw9MTw8ZikpKXthWzQ3NTIwXT1jfGwsYVtwPj4yXT1rLGFbaysyND4+Ml09cCxhW2srMTI+PjJdPWssYVtrKzg+PjJdPWs7YnJlYWt9Zm9yKGw9QTw8KDMxPT0oMHxmKT8wOjI1LShmPj4+MSl8MCksZj0wfGFbcD4+''@;'; put 'put ''Ml07Oyl7aWYoKC04JmFbZis0Pj4yXXwwKT09KDB8QSkpe0JlPTIxMzticmVha31pZighKGM9MHxhWyhwPWYrMTYrKGw+Pj4zMTw8Mil8MCk+PjJdKSl7QmU9MjEyO2JyZWFrfWw8PD0xLGY9Y31pZigyMTI9PSgwfEJlKSl7YVtwPj4yXT1rLGFbaysyND4+Ml09ZixhW2srMTI+PjJdPWssYVtr''@;'; put 'put ''Kzg+PjJdPWs7YnJlYWt9aWYoMjEzPT0oMHxCZSkpe2FbMTIrKEhlPTB8YVsoQmU9Zis4fDApPj4yXSk+PjJdPWssYVtCZT4+Ml09ayxhW2srOD4+Ml09SGUsYVtrKzEyPj4yXT1mLGFbaysyND4+Ml09MDticmVha319fWVsc2UgMD09KDB8KEhlPTB8YVs0NzUyM10pKXxBPj4+MDxIZT4+PjAm''@;'; put 'put ''JihhWzQ3NTIzXT1BKSxhWzQ3NjMxXT1BLGFbNDc2MzJdPXcsYVs0NzYzNF09MCxhWzQ3NTI4XT1hWzQ3NjM3XSxhWzQ3NTI3XT0tMSxhWzQ3NTMyXT0xOTAxMTYsYVs0NzUzMV09MTkwMTE2LGFbNDc1MzRdPTE5MDEyNCxhWzQ3NTMzXT0xOTAxMjQsYVs0NzUzNl09MTkwMTMyLGFbNDc1MzVd''@;'; put 'put ''PTE5MDEzMixhWzQ3NTM4XT0xOTAxNDAsYVs0NzUzN109MTkwMTQwLGFbNDc1NDBdPTE5MDE0OCxhWzQ3NTM5XT0xOTAxNDgsYVs0NzU0Ml09MTkwMTU2LGFbNDc1NDFdPTE5MDE1NixhWzQ3NTQ0XT0xOTAxNjQsYVs0NzU0M109MTkwMTY0LGFbNDc1NDZdPTE5MDE3MixhWzQ3NTQ1XT0xOTAx''@;'; put 'put ''NzIsYVs0NzU0OF09MTkwMTgwLGFbNDc1NDddPTE5MDE4MCxhWzQ3NTUwXT0xOTAxODgsYVs0NzU0OV09MTkwMTg4LGFbNDc1NTJdPTE5MDE5NixhWzQ3NTUxXT0xOTAxOTYsYVs0NzU1NF09MTkwMjA0LGFbNDc1NTNdPTE5MDIwNCxhWzQ3NTU2XT0xOTAyMTIsYVs0NzU1NV09MTkwMjEyLGFb''@;'; put 'put ''NDc1NThdPTE5MDIyMCxhWzQ3NTU3XT0xOTAyMjAsYVs0NzU2MF09MTkwMjI4LGFbNDc1NTldPTE5MDIyOCxhWzQ3NTYyXT0xOTAyMzYsYVs0NzU2MV09MTkwMjM2LGFbNDc1NjRdPTE5MDI0NCxhWzQ3NTYzXT0xOTAyNDQsYVs0NzU2Nl09MTkwMjUyLGFbNDc1NjVdPTE5MDI1MixhWzQ3NTY4''@;'; put 'put ''XT0xOTAyNjAsYVs0NzU2N109MTkwMjYwLGFbNDc1NzBdPTE5MDI2OCxhWzQ3NTY5XT0xOTAyNjgsYVs0NzU3Ml09MTkwMjc2LGFbNDc1NzFdPTE5MDI3NixhWzQ3NTc0XT0xOTAyODQsYVs0NzU3M109MTkwMjg0LGFbNDc1NzZdPTE5MDI5MixhWzQ3NTc1XT0xOTAyOTIsYVs0NzU3OF09MTkw''@;'; put 'put ''MzAwLGFbNDc1NzddPTE5MDMwMCxhWzQ3NTgwXT0xOTAzMDgsYVs0NzU3OV09MTkwMzA4LGFbNDc1ODJdPTE5MDMxNixhWzQ3NTgxXT0xOTAzMTYsYVs0NzU4NF09MTkwMzI0LGFbNDc1ODNdPTE5MDMyNCxhWzQ3NTg2XT0xOTAzMzIsYVs0NzU4NV09MTkwMzMyLGFbNDc1ODhdPTE5MDM0MCxh''@;'; put 'put ''WzQ3NTg3XT0xOTAzNDAsYVs0NzU5MF09MTkwMzQ4LGFbNDc1ODldPTE5MDM0OCxhWzQ3NTkyXT0xOTAzNTYsYVs0NzU5MV09MTkwMzU2LGFbNDc1OTRdPTE5MDM2NCxhWzQ3NTkzXT0xOTAzNjQsQmU9QSsoTGU9MD09KDcmKExlPUErOHwwKXwwKT8wOjAtTGUmNyl8MCxMZT0oSGU9dystNDB8''@;'; put 'put ''MCktTGV8MCxhWzQ3NTI1XT1CZSxhWzQ3NTIyXT1MZSxhW0JlKzQ+PjJdPTF8TGUsYVtBK0hlKzQ+PjJdPTQwLGFbNDc1MjZdPWFbNDc2NDFdfXdoaWxlKDApO2lmKChjPTB8YVs0NzUyMl0pPj4+MD5SPj4+MClyZXR1cm4gYVs0NzUyMl09TGU9Yy1SfDAsYVs0NzUyNV09QmU9KEhlPTB8YVs0''@;'; put 'put ''NzUyNV0pK1J8MCxhW0JlKzQ+PjJdPTF8TGUsYVtIZSs0Pj4yXT0zfFIsb2U9amUsMHxIZSs4fXJldHVybiBhWzQ3NjQzXT0xMixvZT1qZSwwfWZ1bmN0aW9uIEh0KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2lmKGx8PTApe209MHxhWzQ3NTIzXSxrPShmPWwrLTh8''@;'; put 'put ''MCkrKGM9LTgmKGw9MHxhW2wrLTQ+PjJdKSl8MDtkb3tpZigxJmwpYj1mLHc9ZjtlbHNle2lmKHA9MHxhW2Y+PjJdLCEoMyZsKXx8KEE9cCtjfDAsKHc9ZisoMC1wKXwwKT4+PjA8bT4+PjApKXJldHVybjtpZigoMHxhWzQ3NTI0XSk9PSgwfHcpKXtpZigzIT0oMyYoYz0wfGFbKGw9ays0fDAp''@;'; put 'put ''Pj4yXSl8MCkpe2I9dyxjPUE7YnJlYWt9cmV0dXJuIGFbNDc1MjFdPUEsYVtsPj4yXT0tMiZjLGFbdys0Pj4yXT0xfEEsdm9pZChhW3crQT4+Ml09QSl9aWYoZj1wPj4+MyxwPj4+MDwyNTYpe2lmKCgwfChjPTB8YVt3KzEyPj4yXSkpPT0oMHwobD0wfGFbdys4Pj4yXSkpKXthWzQ3NTE5XT1h''@;'; put 'put ''WzQ3NTE5XSZ+KDE8PGYpLGI9dyxjPUE7YnJlYWt9YVtsKzEyPj4yXT1jLGFbYys4Pj4yXT1sLGI9dyxjPUE7YnJlYWt9bT0wfGFbdysyND4+Ml0sbD0wfGFbdysxMj4+Ml07ZG97aWYoKDB8bCk9PSgwfHcpKXtpZighKGw9MHxhWyhjPTQrKGY9dysxNnwwKXwwKT4+Ml0pKXtpZighKGw9MHxh''@;'; put 'put ''W2Y+PjJdKSl7bD0wO2JyZWFrfWM9Zn1mb3IoOzspaWYoMHwocD0wfGFbKGY9bCsyMHwwKT4+Ml0pKWw9cCxjPWY7ZWxzZXtpZighKHA9MHxhWyhmPWwrMTZ8MCk+PjJdKSlicmVhaztsPXAsYz1mfWFbYz4+Ml09MH1lbHNlIGFbMTIrKGI9MHxhW3crOD4+Ml0pPj4yXT1sLGFbbCs4Pj4yXT1i''@;'; put 'put ''fXdoaWxlKDApO2lmKG0pe2lmKCgwfGFbKGY9MTkwMzgwKygoYz0wfGFbdysyOD4+Ml0pPDwyKXwwKT4+Ml0pPT0oMHx3KSl7aWYoYVtmPj4yXT1sLCFsKXthWzQ3NTIwXT1hWzQ3NTIwXSZ+KDE8PGMpLGI9dyxjPUE7YnJlYWt9fWVsc2UgaWYoYVttKzE2KygoKDB8YVttKzE2Pj4yXSkhPSgw''@;'; put 'put ''fHcpJjEpPDwyKT4+Ml09bCwhbCl7Yj13LGM9QTticmVha31hW2wrMjQ+PjJdPW0sMHwoZj0wfGFbKGM9dysxNnwwKT4+Ml0pJiYoYVtsKzE2Pj4yXT1mLGFbZisyND4+Ml09bCksKGM9MHxhW2MrND4+Ml0pPyhhW2wrMjA+PjJdPWMsYVtjKzI0Pj4yXT1sLGI9dyxjPUEpOihiPXcsYz1BKX1l''@;'; put 'put ''bHNlIGI9dyxjPUF9fXdoaWxlKDApO2lmKCEodz4+PjA+PWs+Pj4wKSYmMSYocD0wfGFbKGw9ays0fDApPj4yXSkpe2lmKDImcClhW2w+PjJdPS0yJnAsYVtiKzQ+PjJdPTF8YyxhW3crYz4+Ml09YyxtPWM7ZWxzZXtpZigoMHxhWzQ3NTI1XSk9PSgwfGspKXtpZihhWzQ3NTIyXT1rPSgwfGFb''@;'; put 'put ''NDc1MjJdKStjfDAsYVs0NzUyNV09YixhW2IrND4+Ml09MXxrLCgwfGIpIT0oMHxhWzQ3NTI0XSkpcmV0dXJuO3JldHVybiBhWzQ3NTI0XT0wLHZvaWQoYVs0NzUyMV09MCl9aWYoKDB8YVs0NzUyNF0pPT0oMHxrKSlyZXR1cm4gYVs0NzUyMV09az0oMHxhWzQ3NTIxXSkrY3wwLGFbNDc1MjRd''@;'; put 'put ''PXcsYVtiKzQ+PjJdPTF8ayx2b2lkKGFbdytrPj4yXT1rKTttPSgtOCZwKStjfDAsZj1wPj4+Mztkb3tpZihwPj4+MDwyNTYpe2lmKCgwfChsPTB8YVtrKzEyPj4yXSkpPT0oMHwoYz0wfGFbays4Pj4yXSkpKXthWzQ3NTE5XT1hWzQ3NTE5XSZ+KDE8PGYpO2JyZWFrfWFbYysxMj4+Ml09bCxh''@;'; put 'put ''W2wrOD4+Ml09YzticmVha31BPTB8YVtrKzI0Pj4yXSxsPTB8YVtrKzEyPj4yXTtkb3tpZigoMHxsKT09KDB8aykpe2lmKCEobD0wfGFbKGM9NCsoZj1rKzE2fDApfDApPj4yXSkpe2lmKCEobD0wfGFbZj4+Ml0pKXtmPTA7YnJlYWt9Yz1mfWZvcig7OylpZigwfChwPTB8YVsoZj1sKzIwfDAp''@;'; put 'put ''Pj4yXSkpbD1wLGM9ZjtlbHNle2lmKCEocD0wfGFbKGY9bCsxNnwwKT4+Ml0pKWJyZWFrO2w9cCxjPWZ9YVtjPj4yXT0wLGY9bH1lbHNlIGFbMTIrKGY9MHxhW2srOD4+Ml0pPj4yXT1sLGFbbCs4Pj4yXT1mLGY9bH13aGlsZSgwKTtpZigwfEEpe2lmKCgwfGFbKGM9MTkwMzgwKygobD0wfGFb''@;'; put 'put ''aysyOD4+Ml0pPDwyKXwwKT4+Ml0pPT0oMHxrKSl7aWYoYVtjPj4yXT1mLCFmKXthWzQ3NTIwXT1hWzQ3NTIwXSZ+KDE8PGwpO2JyZWFrfX1lbHNlIGlmKGFbQSsxNisoKCgwfGFbQSsxNj4+Ml0pIT0oMHxrKSYxKTw8Mik+PjJdPWYsIWYpYnJlYWs7YVtmKzI0Pj4yXT1BLDB8KGM9MHxhWyhs''@;'; put 'put ''PWsrMTZ8MCk+PjJdKSYmKGFbZisxNj4+Ml09YyxhW2MrMjQ+PjJdPWYpLDB8KGw9MHxhW2wrND4+Ml0pJiYoYVtmKzIwPj4yXT1sLGFbbCsyND4+Ml09Zil9fXdoaWxlKDApO2lmKGFbYis0Pj4yXT0xfG0sYVt3K20+PjJdPW0sKDB8Yik9PSgwfGFbNDc1MjRdKSlyZXR1cm4gdm9pZChhWzQ3''@;'; put 'put ''NTIxXT1tKX1pZihsPW0+Pj4zLG0+Pj4wPDI1NilyZXR1cm4gZj0xOTAxMTYrKGw8PDE8PDIpfDAsKGM9MHxhWzQ3NTE5XSkmKGw9MTw8bCk/bD0wfGFbKGM9Zis4fDApPj4yXTooYVs0NzUxOV09Y3xsLGw9ZixjPWYrOHwwKSxhW2M+PjJdPWIsYVtsKzEyPj4yXT1iLGFbYis4Pj4yXT1sLHZv''@;'; put 'put ''aWQoYVtiKzEyPj4yXT1mKTtwPTE5MDM4MCsoKGw9KGw9bT4+PjgpP20+Pj4wPjE2Nzc3MjE1PzMxOm0+Pj4oNysobD0xNC0oKEE9KDUyMDE5Misoaz1sPDwodz0obCsxMDQ4MzIwfDApPj4+MTYmOCkpfDApPj4+MTYmNCl8d3wobD0oMjQ1NzYwKyhrPDw9QSl8MCk+Pj4xNiYyKSkrKGs8PGw+''@;'; put 'put ''Pj4xNSl8MCl8MCkmMXxsPDwxOjApPDwyKXwwLGFbYisyOD4+Ml09bCxhW2IrMjA+PjJdPTAsYVtiKzE2Pj4yXT0wLGM9MHxhWzQ3NTIwXSxmPTE8PGw7ZG97aWYoYyZmKXtmb3IoYz1tPDwoMzE9PSgwfGwpPzA6MjUtKGw+Pj4xKXwwKSxmPTB8YVtwPj4yXTs7KXtpZigoLTgmYVtmKzQ+PjJd''@;'; put 'put ''fDApPT0oMHxtKSl7bD03MzticmVha31pZighKGw9MHxhWyhwPWYrMTYrKGM+Pj4zMTw8Mil8MCk+PjJdKSl7bD03MjticmVha31jPDw9MSxmPWx9aWYoNzI9PSgwfGwpKXthW3A+PjJdPWIsYVtiKzI0Pj4yXT1mLGFbYisxMj4+Ml09YixhW2IrOD4+Ml09YjticmVha31pZig3Mz09KDB8bCkp''@;'; put 'put ''e2FbMTIrKGs9MHxhWyh3PWYrOHwwKT4+Ml0pPj4yXT1iLGFbdz4+Ml09YixhW2IrOD4+Ml09ayxhW2IrMTI+PjJdPWYsYVtiKzI0Pj4yXT0wO2JyZWFrfX1lbHNlIGFbNDc1MjBdPWN8ZixhW3A+PjJdPWIsYVtiKzI0Pj4yXT1wLGFbYisxMj4+Ml09YixhW2IrOD4+Ml09Yn13aGlsZSgwKTtp''@;'; put 'put ''ZihhWzQ3NTI3XT1rPSgwfGFbNDc1MjddKS0xfDAsaylyZXR1cm47Zm9yKGw9MTkwNTMyO2w9MHxhW2w+PjJdOylsPWwrOHwwO2FbNDc1MjddPS0xfX19ZnVuY3Rpb24gVGYobCxjKXtjfD0wO3ZhciBmPTA7cmV0dXJuKGx8PTApPyhmPTB8dnIoYyxsKSwoY3xsKT4+PjA+NjU1MzUmJihmPSgw''@;'; put 'put ''fChmPj4+MCkvKGw+Pj4wKSk9PSgwfGMpP2Y6LTEpKTpmPTAsIShsPTB8UjAoZikpfHwhKDMmYVtsKy00Pj4yXSl8fHIyKDB8bCwwLDB8ZiksMHxsfWZ1bmN0aW9uIFphKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDtyZXR1cm4obHw9MCk/Yz4+PjA+NDI5NDk2NzIzMT8oYVs0NzY0M109MTIsMHwo''@;'; put 'put ''Yz0wKSk6KGY9MHxmdW5jdGlvbiBNdWUobCxjKXtjfD0wO3ZhciBELGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsUj0wO2lmKGI9KGx8PTApKyhmPS04JihSPTB8YVsoRD1sKzR8MCk+PjJdKSl8MCwhKDMmUikpcmV0dXJuIGM+Pj4wPDI1Nj8wfChsPTApOihmPj4+MD49KGMrNHww''@;'; put 'put ''KT4+PjAmJihmLWN8MCk+Pj4wPD1hWzQ3NjM5XTw8MT4+PjB8fChsPTApLDB8bCk7aWYoZj4+PjA+PWM+Pj4wKXJldHVybihmPWYtY3wwKT4+PjA8PTE1fHwoTT1sK2N8MCxhW0Q+PjJdPTEmUnxjfDIsYVtNKzQ+PjJdPTN8ZixhWyhSPWIrNHwwKT4+Ml09MXxhW1I+PjJdLGtMKE0sZikpLDB8''@;'; put 'put ''bDtpZigoMHxhWzQ3NTI1XSk9PSgwfGIpKXJldHVybiBmPShNPSgwfGFbNDc1MjJdKStmfDApLWN8MCxwPWwrY3wwLE0+Pj4wPD1jPj4+MD8wfChsPTApOihhW0Q+PjJdPTEmUnxjfDIsYVtwKzQ+PjJdPTF8ZixhWzQ3NTI1XT1wLGFbNDc1MjJdPWYsMHxsKTtpZigoMHxhWzQ3NTI0XSk9PSgw''@;'; put 'put ''fGIpKXJldHVybihwPSgwfGFbNDc1MjFdKStmfDApPj4+MDxjPj4+MD8wfChsPTApOigoZj1wLWN8MCk+Pj4wPjE1PyhNPWwrY3wwLHA9bCtwfDAsYVtEPj4yXT0xJlJ8Y3wyLGFbTSs0Pj4yXT0xfGYsYVtwPj4yXT1mLGFbKHA9cCs0fDApPj4yXT0tMiZhW3A+PjJdLHA9TSk6KGFbRD4+Ml09''@;'; put 'put ''MSZSfHB8MixhWyhwPWwrcCs0fDApPj4yXT0xfGFbcD4+Ml0scD0wLGY9MCksYVs0NzUyMV09ZixhWzQ3NTI0XT1wLDB8bCk7aWYoMiYocD0wfGFbYis0Pj4yXSl8MHx8KGs9KC04JnApK2Z8MCk+Pj4wPGM+Pj4wKXJldHVybiAwO009ay1jfDAsbT1wPj4+Mztkb3tpZihwPj4+MDwyNTYpe2lm''@;'; put 'put ''KCgwfChmPTB8YVtiKzEyPj4yXSkpPT0oMHwocD0wfGFbYis4Pj4yXSkpKXthWzQ3NTE5XT1hWzQ3NTE5XSZ+KDE8PG0pO2JyZWFrfWFbcCsxMj4+Ml09ZixhW2YrOD4+Ml09cDticmVha313PTB8YVtiKzI0Pj4yXSxmPTB8YVtiKzEyPj4yXTtkb3tpZigoMHxmKT09KDB8Yikpe2lmKGY9MHxh''@;'; put 'put ''WyhwPTQrKG09YisxNnwwKXwwKT4+Ml0pQT1wO2Vsc2V7aWYoIShmPTB8YVttPj4yXSkpe209MDticmVha31BPW19Zm9yKDs7KWlmKDB8KHA9MHxhWyhtPWYrMjB8MCk+PjJdKSlmPXAsQT1tO2Vsc2V7aWYoIShtPTB8YVsocD1mKzE2fDApPj4yXSkpYnJlYWs7Zj1tLEE9cH1hW0E+PjJdPTAs''@;'; put 'put ''bT1mfWVsc2UgYVsxMisobT0wfGFbYis4Pj4yXSk+PjJdPWYsYVtmKzg+PjJdPW0sbT1mfXdoaWxlKDApO2lmKDB8dyl7aWYoKDB8YVsocD0xOTAzODArKChmPTB8YVtiKzI4Pj4yXSk8PDIpfDApPj4yXSk9PSgwfGIpKXtpZihhW3A+PjJdPW0sIW0pe2FbNDc1MjBdPWFbNDc1MjBdJn4oMTw8''@;'; put 'put ''Zik7YnJlYWt9fWVsc2UgaWYoYVt3KzE2KygoKDB8YVt3KzE2Pj4yXSkhPSgwfGIpJjEpPDwyKT4+Ml09bSwhbSlicmVhazthW20rMjQ+PjJdPXcsMHwocD0wfGFbKGY9YisxNnwwKT4+Ml0pJiYoYVttKzE2Pj4yXT1wLGFbcCsyND4+Ml09bSksMHwoZj0wfGFbZis0Pj4yXSkmJihhW20rMjA+''@;'; put 'put ''PjJdPWYsYVtmKzI0Pj4yXT1tKX19d2hpbGUoMCk7cmV0dXJuIE0+Pj4wPDE2PyhhW0Q+PjJdPWt8MSZSfDIsYVsoUj1sK2srNHwwKT4+Ml09MXxhW1I+PjJdLDB8bCk6KGI9bCtjfDAsYVtEPj4yXT0xJlJ8Y3wyLGFbYis0Pj4yXT0zfE0sYVsoUj1sK2srNHwwKT4+Ml09MXxhW1I+PjJdLGtM''@;'; put 'put ''KGIsTSksMHxsKX0obCstOHwwLGM+Pj4wPDExPzE2OmMrMTEmLTgpLDB8Zj8wfChjPWYrOHwwKTooZj0wfFIwKGMpKT8oRG8oMHxmLDB8bCwwfCgocD0oLTgmKHA9MHxhW2wrLTQ+PjJdKSktKDA9PSgzJnB8MCk/ODo0KXwwKT4+PjA8Yz4+PjA/cDpjKSksSHQobCksMHwoYz1mKSk6MHwoYz0w''@;'; put 'put ''KSk6MHwoYz0wfFIwKGMpKX1mdW5jdGlvbiBrTChsLGMpe3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtiPShsfD0wKSsoY3w9MCl8MCxmPTB8YVtsKzQ+PjJdO2Rve2lmKDEmZil3PWw7ZWxzZXtpZighKDMmZikpcmV0dXJuO2lmKGM9KG09MHxhW2w+PjJdKStjfDAsKDB8YVs0NzUyNF0p''@;'; put 'put ''PT0oMHwodz1sKygwLW0pfDApKSl7aWYoMyE9KDMmKGY9MHxhWyhsPWIrNHwwKT4+Ml0pfDApKWJyZWFrO3JldHVybiBhWzQ3NTIxXT1jLGFbbD4+Ml09LTImZixhW3crND4+Ml09MXxjLHZvaWQoYVtiPj4yXT1jKX1pZihwPW0+Pj4zLG0+Pj4wPDI1Nil7aWYoKDB8KGY9MHxhW3crMTI+PjJd''@;'; put 'put ''KSk9PSgwfChsPTB8YVt3Kzg+PjJdKSkpe2FbNDc1MTldPWFbNDc1MTldJn4oMTw8cCk7YnJlYWt9YVtsKzEyPj4yXT1mLGFbZis4Pj4yXT1sO2JyZWFrfUE9MHxhW3crMjQ+PjJdLGw9MHxhW3crMTI+PjJdO2Rve2lmKCgwfGwpPT0oMHx3KSl7aWYoIShsPTB8YVsoZj00KyhwPXcrMTZ8MCl8''@;'; put 'put ''MCk+PjJdKSl7aWYoIShsPTB8YVtwPj4yXSkpe2w9MDticmVha31mPXB9Zm9yKDs7KWlmKDB8KG09MHxhWyhwPWwrMjB8MCk+PjJdKSlsPW0sZj1wO2Vsc2V7aWYoIShtPTB8YVsocD1sKzE2fDApPj4yXSkpYnJlYWs7bD1tLGY9cH1hW2Y+PjJdPTB9ZWxzZSBhWzEyKyhtPTB8YVt3Kzg+PjJd''@;'; put 'put ''KT4+Ml09bCxhW2wrOD4+Ml09bX13aGlsZSgwKTtpZihBKXtpZigoMHxhWyhwPTE5MDM4MCsoKGY9MHxhW3crMjg+PjJdKTw8Mil8MCk+PjJdKT09KDB8dykpe2lmKGFbcD4+Ml09bCwhbCl7YVs0NzUyMF09YVs0NzUyMF0mfigxPDxmKTticmVha319ZWxzZSBpZihhW0ErMTYrKCgoMHxhW0Er''@;'; put 'put ''MTY+PjJdKSE9KDB8dykmMSk8PDIpPj4yXT1sLCFsKWJyZWFrO2FbbCsyND4+Ml09QSwwfChwPTB8YVsoZj13KzE2fDApPj4yXSkmJihhW2wrMTY+PjJdPXAsYVtwKzI0Pj4yXT1sKSwoZj0wfGFbZis0Pj4yXSkmJihhW2wrMjA+PjJdPWYsYVtmKzI0Pj4yXT1sKX19fXdoaWxlKDApO2lmKDIm''@;'; put 'put ''KHA9MHxhWyhsPWIrNHwwKT4+Ml0pKWFbbD4+Ml09LTImcCxhW3crND4+Ml09MXxjLGFbdytjPj4yXT1jLG09YztlbHNle2lmKCgwfGFbNDc1MjVdKT09KDB8Yikpe2lmKGFbNDc1MjJdPWI9KDB8YVs0NzUyMl0pK2N8MCxhWzQ3NTI1XT13LGFbdys0Pj4yXT0xfGIsKDB8dykhPSgwfGFbNDc1''@;'; put 'put ''MjRdKSlyZXR1cm47cmV0dXJuIGFbNDc1MjRdPTAsdm9pZChhWzQ3NTIxXT0wKX1pZigoMHxhWzQ3NTI0XSk9PSgwfGIpKXJldHVybiBhWzQ3NTIxXT1iPSgwfGFbNDc1MjFdKStjfDAsYVs0NzUyNF09dyxhW3crND4+Ml09MXxiLHZvaWQoYVt3K2I+PjJdPWIpO209KC04JnApK2N8MCxmPXA+''@;'; put 'put ''Pj4zO2Rve2lmKHA+Pj4wPDI1Nil7aWYoKDB8KGM9MHxhW2IrMTI+PjJdKSk9PSgwfChsPTB8YVtiKzg+PjJdKSkpe2FbNDc1MTldPWFbNDc1MTldJn4oMTw8Zik7YnJlYWt9YVtsKzEyPj4yXT1jLGFbYys4Pj4yXT1sO2JyZWFrfUE9MHxhW2IrMjQ+PjJdLGM9MHxhW2IrMTI+PjJdO2Rve2lm''@;'; put 'put ''KCgwfGMpPT0oMHxiKSl7aWYoIShjPTB8YVsobD00KyhmPWIrMTZ8MCl8MCk+PjJdKSl7aWYoIShjPTB8YVtmPj4yXSkpe2Y9MDticmVha31sPWZ9Zm9yKDs7KWlmKDB8KHA9MHxhWyhmPWMrMjB8MCk+PjJdKSljPXAsbD1mO2Vsc2V7aWYoIShwPTB8YVsoZj1jKzE2fDApPj4yXSkpYnJlYWs7''@;'; put 'put ''Yz1wLGw9Zn1hW2w+PjJdPTAsZj1jfWVsc2UgYVsxMisoZj0wfGFbYis4Pj4yXSk+PjJdPWMsYVtjKzg+PjJdPWYsZj1jfXdoaWxlKDApO2lmKDB8QSl7aWYoKDB8YVsobD0xOTAzODArKChjPTB8YVtiKzI4Pj4yXSk8PDIpfDApPj4yXSk9PSgwfGIpKXtpZihhW2w+PjJdPWYsIWYpe2FbNDc1''@;'; put 'put ''MjBdPWFbNDc1MjBdJn4oMTw8Yyk7YnJlYWt9fWVsc2UgaWYoYVtBKzE2KygoKDB8YVtBKzE2Pj4yXSkhPSgwfGIpJjEpPDwyKT4+Ml09ZiwhZilicmVhazthW2YrMjQ+PjJdPUEsMHwobD0wfGFbKGM9YisxNnwwKT4+Ml0pJiYoYVtmKzE2Pj4yXT1sLGFbbCsyND4+Ml09ZiksMHwoYz0wfGFb''@;'; put 'put ''Yys0Pj4yXSkmJihhW2YrMjA+PjJdPWMsYVtjKzI0Pj4yXT1mKX19d2hpbGUoMCk7aWYoYVt3KzQ+PjJdPTF8bSxhW3crbT4+Ml09bSwoMHx3KT09KDB8YVs0NzUyNF0pKXJldHVybiB2b2lkKGFbNDc1MjFdPW0pfWlmKGM9bT4+PjMsbT4+PjA8MjU2KXJldHVybiBmPTE5MDExNisoYzw8MTw8''@;'; put 'put ''Mil8MCwobD0wfGFbNDc1MTldKSYoYz0xPDxjKT9jPTB8YVsobD1mKzh8MCk+PjJdOihhWzQ3NTE5XT1sfGMsYz1mLGw9Zis4fDApLGFbbD4+Ml09dyxhW2MrMTI+PjJdPXcsYVt3Kzg+PjJdPWMsdm9pZChhW3crMTI+PjJdPWYpO2lmKGM9KGM9bT4+PjgpP20+Pj4wPjE2Nzc3MjE1PzMxOm0+''@;'; put 'put ''Pj4oNysoYz0xNC0oKHA9KDUyMDE5MisoYj1jPDwoQT0oYysxMDQ4MzIwfDApPj4+MTYmOCkpfDApPj4+MTYmNCl8QXwoYz0oMjQ1NzYwKyhiPDw9cCl8MCk+Pj4xNiYyKSkrKGI8PGM+Pj4xNSl8MCl8MCkmMXxjPDwxOjAscD0xOTAzODArKGM8PDIpfDAsYVt3KzI4Pj4yXT1jLGFbdysyMD4+''@;'; put 'put ''Ml09MCxhW3crMTY+PjJdPTAsISgobD0wfGFbNDc1MjBdKSYoZj0xPDxjKSkpcmV0dXJuIGFbNDc1MjBdPWx8ZixhW3A+PjJdPXcsYVt3KzI0Pj4yXT1wLGFbdysxMj4+Ml09dyx2b2lkKGFbdys4Pj4yXT13KTtmb3IobD1tPDwoMzE9PSgwfGMpPzA6MjUtKGM+Pj4xKXwwKSxmPTB8YVtwPj4y''@;'; put 'put ''XTs7KXtpZigoLTgmYVtmKzQ+PjJdfDApPT0oMHxtKSl7Yz02OTticmVha31pZighKGM9MHxhWyhwPWYrMTYrKGw+Pj4zMTw8Mil8MCk+PjJdKSl7Yz02ODticmVha31sPDw9MSxmPWN9cmV0dXJuIDY4PT0oMHxjKT8oYVtwPj4yXT13LGFbdysyND4+Ml09ZixhW3crMTI+PjJdPXcsdm9pZChh''@;'; put 'put ''W3crOD4+Ml09dykpOjY5PT0oMHxjKT8oYVsxMisoYj0wfGFbKEE9Zis4fDApPj4yXSk+PjJdPXcsYVtBPj4yXT13LGFbdys4Pj4yXT1iLGFbdysxMj4+Ml09Zix2b2lkKGFbdysyND4+Ml09MCkpOnZvaWQgMH1mdW5jdGlvbiBJZihsKXtyZXR1cm4obHw9MCk+Pj4wPjQyOTQ5NjMyMDAmJihh''@;'; put 'put ''WzQ3NjQzXT0wLWwsbD0tMSksMHxsfWZ1bmN0aW9uIGMkKGwpe3JldHVybiAwfGx9ZnVuY3Rpb24gZiQobCxjLGYpe2N8PTAsZnw9MDt2YXIgdyxiLGssTSxSLHA9MCxtPTAsQT0wLEQ9MCxHPTAsSz0wO1I9b2Usb2U9b2UrNDh8MCxNPVIrMTZ8MCxBPVIsYVsobT1SKzMyfDApPj4yXT1wPTB8''@;'; put 'put ''YVsoYj0yOCsobHw9MCl8MCk+PjJdLGFbbSs0Pj4yXT1wPSgwfGFbKGs9bCsyMHwwKT4+Ml0pLXB8MCxhW20rOD4+Ml09YyxhW20rMTI+PjJdPWYscD1wK2Z8MCxhW0E+PjJdPWFbKHc9bCs2MHwwKT4+Ml0sYVtBKzQ+PjJdPW0sYVtBKzg+PjJdPTIsQT0wfElmKDB8bWQoMTQ2LDB8QSkpO2U6''@;'; put 'put ''ZG97aWYoKDB8cCkhPSgwfEEpKXtmb3IoYz0yOyEoKDB8QSk8MCk7KWlmKHA9cC1BfDAsYz1jKygoRz1BPj4+MD4oSz0wfGFbbSs0Pj4yXSk+Pj4wKTw8MzE+PjMxKXwwLGFbKG09Rz9tKzh8MDptKT4+Ml09KDB8YVttPj4yXSkrKEs9QS0oRz9LOjApfDApLGFbKEc9bSs0fDApPj4yXT0oMHxh''@;'; put 'put ''W0c+PjJdKS1LLGFbTT4+Ml09YVt3Pj4yXSxhW00rND4+Ml09bSxhW00rOD4+Ml09YywoMHxwKT09KDB8KEE9MHxJZigwfG1kKDE0NiwwfE0pKSkpKXtEPTM7YnJlYWsgZX1hW2wrMTY+PjJdPTAsYVtiPj4yXT0wLGFbaz4+Ml09MCxhW2w+PjJdPTMyfGFbbD4+Ml0sZj0yPT0oMHxjKT8wOmYt''@;'; put 'put ''KDB8YVttKzQ+PjJdKXwwfWVsc2UgRD0zfXdoaWxlKDApO3JldHVybiAzPT0oMHxEKSYmKGFbbCsxNj4+Ml09KEs9MHxhW2wrNDQ+PjJdKSsoMHxhW2wrNDg+PjJdKSxhW2I+PjJdPUssYVtrPj4yXT1LKSxvZT1SLDB8Zn1mdW5jdGlvbiBoJChsLGMpe3ZhciBmLHA7cmV0dXJuIGN8PTAsZj1v''@;'; put 'put ''ZSxvZT1vZSsxNnwwLGFbKHA9Zik+PjJdPWx8PTAsYVtwKzQ+PjJdPWMsYz0wfElmKDB8R3AoOTEsMHxwKSksb2U9ZiwwfGN9ZnVuY3Rpb24gT3VlKGwsYyxmLHAsbSxBKXt2YXIgdyxiO2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLGI9b2Usb2U9b2UrMzJ8MCx3PWI7ZG97aWYoMD09''@;'; put 'put ''KDQwOTUmQXwwKSYwPT0oKCgwfEEpPDApPDwzMT4+MzEmLTQwOTZ8MCkpe2lmKGM+Pj4wPjIxNDc0ODM2NDYpe2FbNDc2NDNdPTEyLGw9LTE7YnJlYWt9YVt3Pj4yXT1sLGFbdys0Pj4yXT1jLGFbdys4Pj4yXT1mLGFbdysxMj4+Ml09cCxhW3crMTY+PjJdPW0sYVt3KzIwPj4yXT1BPj4xMixs''@;'; put 'put ''PTB8SWYoMHxJOCgxOTIsMHx3KSl9ZWxzZSBhWzQ3NjQzXT0yMixsPS0xfXdoaWxlKDApO3JldHVybiBvZT1iLDB8bH1mdW5jdGlvbiBTTChsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wO3A9MjU1JihjfD0wKTtlOmRve2lmKHApe2lmKDMmbCl7Zj0yNTUmYztkb3tpZigobT0wfHVlW2w+PjBd''@;'; put 'put ''KTw8MjQ+PjI0PT0wfHxtPDwyND4+MjQ9PWY8PDI0Pj4yNClicmVhayBlO2w9bCsxfDB9d2hpbGUoMCE9KDMmbHwwKSl9cD0wfHZyKHAsMTY4NDMwMDkpLGY9MHxhW2w+PjJdO3Q6ZG97aWYoISgoLTIxMzkwNjIxNDQmZl4tMjEzOTA2MjE0NCkmZistMTY4NDMwMDkpKWRve2lmKCgtMjEzOTA2''@;'; put 'put ''MjE0NCYobT1mXnApXi0yMTM5MDYyMTQ0KSZtKy0xNjg0MzAwOXwwKWJyZWFrIHQ7Zj0wfGFbKGw9bCs0fDApPj4yXX13aGlsZSghKCgtMjEzOTA2MjE0NCZmXi0yMTM5MDYyMTQ0KSZmKy0xNjg0MzAwOXwwKSl9d2hpbGUoMCk7Zm9yKGY9MjU1JmM7KG09MHx1ZVtsPj4wXSk8PDI0Pj4yNCE9''@;'; put 'put ''MCYmbTw8MjQ+PjI0IT1mPDwyND4+MjQ7KWw9bCsxfDB9ZWxzZSBsPWwrKDB8em8obCkpfDB9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiB6byhsKXt2YXIgcCxjPTAsZj0wO3A9bHw9MDtlOmRve2lmKDMmcClmb3IoYz1wOzspe2lmKCEoMHx1ZVtsPj4wXSkpe2w9YzticmVhayBlfWlm''@;'; put 'put ''KCEoMyYoYz1sPWwrMXwwKSkpe2Y9NDticmVha319ZWxzZSBmPTR9d2hpbGUoMCk7aWYoND09KDB8Zikpe2Zvcig7ISgoLTIxMzkwNjIxNDQmKGM9MHxhW2w+PjJdKV4tMjEzOTA2MjE0NCkmYystMTY4NDMwMDkpOylsPWwrNHwwO2lmKCgyNTUmYyk8PDI0Pj4yNClkb3tsPWwrMXwwfXdoaWxl''@;'; put 'put ''KDAhPSgwfHVlW2w+PjBdKSl9cmV0dXJuIGwtcHwwfWZ1bmN0aW9uIGx3KGwsYyl7dmFyIGY7cmV0dXJuIGN8PTAsZj0wfG5xKDB8KGx8PTApKSwwfCgwPT0oMHxjKT9sOmYpfWZ1bmN0aW9uIFppKGwsYyl7dmFyIGY9MCxwPTA7aWYocD0wfHVlWyhjfD0wKT4+MF0sKGY9MHx1ZVsobHw9MCk+''@;'; put 'put ''PjBdKTw8MjQ+PjI0PT0wfHxmPDwyND4+MjQhPXA8PDI0Pj4yNClsPXA7ZWxzZXtkb3tmPTB8dWVbKGw9bCsxfDApPj4wXSxwPTB8dWVbKGM9YysxfDApPj4wXX13aGlsZShmPDwyND4+MjQhPTAmJmY8PDI0Pj4yND09cDw8MjQ+PjI0KTtsPXB9cmV0dXJuKDI1NSZmKS0oMjU1JmwpfDB9ZnVu''@;'; put 'put ''Y3Rpb24gTUwobCl7cmV0dXJuIDB8ZnVuY3Rpb24gQnVlKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wO2ZvcihwPTA7Oyl7aWYoKDB8YnRbMTQ0NTMxK3A+PjBdKT09KDB8bCkpe2w9MjticmVha31pZig4Nz09KDB8KGY9cCsxfDApKSl7Zj0xNDQ2MTkscD04NyxsPTU7YnJlYWt9cD1mfWlm''@;'; put 'put ''KDI9PSgwfGwpJiYocD8oZj0xNDQ2MTksbD01KTpmPTE0NDYxOSksNT09KDB8bCkpZm9yKDs7KXtkb3tsPWYsZj1mKzF8MH13aGlsZSgwIT0oMHx1ZVtsPj4wXSkpO2lmKCEocD1wKy0xfDApKWJyZWFrO2w9NX1yZXR1cm4gMHxmdW5jdGlvbiBIQWUobCxjKXtyZXR1cm4gMHxmdW5jdGlvbiBO''@;'; put 'put ''QWUobCxjKXtyZXR1cm4gbHw9MCxjPShjfD0wKT8wfGZ1bmN0aW9uIFZBZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBHLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO0E9MHxsdygwfGFbOCsobHw9MCk+PjJdLEc9MTc5NDg5NTEzOCsoMHxhW2w+PjJdKXwwKSxwPTB8bHcoMHxh''@;'; put 'put ''W2wrMTI+PjJdLEcpLG09MHxsdygwfGFbbCsxNj4+Ml0sRyk7ZTpkb3tpZihBPj4+MDxjPj4+Mj4+PjAmJihSPWMtKEE8PDIpfDAscD4+PjA8Uj4+PjAmbT4+PjA8Uj4+PjApJiYwPT0oMyYobXxwKXwwKSl7Zm9yKFI9cD4+PjIsRD1tPj4+MixNPTA7Oyl7aWYocD0wfGx3KDB8YVtsKygobT0o''@;'; put 'put ''dz0oaz1NKyhiPUE+Pj4xKXwwKTw8MSkrUnwwKTw8Mik+PjJdLEcpLCEoKG09MHxsdygwfGFbbCsobSsxPDwyKT4+Ml0sRykpPj4+MDxjPj4+MCZwPj4+MDwoYy1tfDApPj4+MCkpe3A9MDticmVhayBlfWlmKDB8dWVbbCsobStwKT4+MF0pe3A9MDticmVhayBlfWlmKCEocD0wfFppKGYsbCtt''@;'; put 'put ''fDApKSlicmVhaztpZihwPSgwfHApPDAsMT09KDB8QSkpe3A9MDticmVhayBlfU09cD9NOmssQT1wP2I6QS1ifDB9bT0wfGx3KDB8YVtsKygocD13K0R8MCk8PDIpPj4yXSxHKSxwPShwPTB8bHcoMHxhW2wrKHArMTw8Mik+PjJdLEcpKT4+PjA8Yz4+PjAmbT4+PjA8KGMtcHwwKT4+PjAmJjA9''@;'; put 'put ''PSgwfHVlW2wrKHArbSk+PjBdKT9sK3B8MDowfWVsc2UgcD0wfXdoaWxlKDApO3JldHVybiAwfHB9KDB8YVtjPj4yXSwwfGFbYys0Pj4yXSxsKTowLDB8KDB8Yz9jOmwpfShsfD0wLGN8PTApfShmLDB8YVtjKzIwPj4yXSl9KGx8PTAsMHxhWzE1NzkxXSl9ZnVuY3Rpb24gZCQobCxjLGYpe3Zh''@;'; put 'put ''ciBwLG0sQTtyZXR1cm4gYz0rYyxwPShBPShsPStsKSpsKSooQSpBKSooMS41ODk2OTA5OTUyMTE1NWUtMTAqQS0yLjUwNTA3NjAyNTM0MDY4NjNlLTgpKyhBKigyNzU1NzMxMzcwNzA3MDA2OGUtMjIqQS0uMDAwMTk4NDEyNjk4Mjk4NTc5NSkrLjAwODMzMzMzMzMzMzMyMjQ5KSxtPUEqbCwo''@;'; put 'put ''Znw9MCk/bC09LjE2NjY2NjY2NjY2NjY2NjMyKm0rKEEqKC41KmMtbSpwKS1jKTpsPW0qKEEqcC0uMTY2NjY2NjY2NjY2NjY2MzIpK2wsK2x9ZnVuY3Rpb24gcCQobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO19ba2k+PjNdPWw9K2wsYz0wfGFba2k+PjJdLHA9''@;'; put 'put ''KDB8KGY9MHxhW2tpKzQ+PjJdKSk8MDtkb3tpZihwfGY+Pj4wPDEwNDg1NzYpe2lmKDA9PSgwfGMpJjA9PSgyMTQ3NDgzNjQ3JmZ8MCkpe2w9LTEvKGwqbCk7YnJlYWt9aWYocCl7bD0obC1sKS8wO2JyZWFrfV9ba2k+PjNdPTB4NDAwMDAwMDAwMDAwMDAqbCxmPTB8YVtraSs0Pj4yXSxwPS0x''@;'; put 'put ''MDc3LGM9MHxhW2tpPj4yXSxtPTk7YnJlYWt9Zj4+PjA8PTIxNDY0MzUwNzEmJigwPT0oMHxjKSYhMCYxMDcyNjkzMjQ4PT0oMHxmKT9sPTA6KHA9LTEwMjMsbT05KSl9d2hpbGUoMCk7cmV0dXJuIDk9PSgwfG0pJiYobT1mKzYxNDI0MnwwLGFba2k+PjJdPWMsYVtraSs0Pj4yXT0xMDcyMDc5''@;'; put 'put ''MDA2KygxMDQ4NTc1Jm0pLEE9KGs9KHc9KE09K19ba2k+PjNdLTEpLyhNKzIpKSp3KSprLF9ba2k+PjNdPU0tKGI9TSooLjUqTSkpLGY9MHxhW2tpKzQ+PjJdLGFba2k+PjJdPTAsYVtraSs0Pj4yXT1mLEE9TS0obD0rX1traT4+M10pLWIrdyooYisoQSooQSooLjE1MzEzODM3Njk5MjA5Mzcz''@;'; put 'put ''KkErLjIyMjIyMTk4NDMyMTQ5Nzg0KSsuMzk5OTk5OTk5OTk0MDk0MikrayooQSooQSooLjE0Nzk4MTk4NjA1MTE2NTg2KkErLjE4MTgzNTcyMTYxNjE4MDUpKy4yODU3MTQyODc0MzY2MjM5KSsuNjY2NjY2NjY2NjY2NjczNSkpKSxsPSh3PShrPTEuNDQyNjk1MDQwNzIxNDQ2MypsKSsoYj0r''@;'; put 'put ''KHArKG0+Pj4yMCl8MCkpKSsoaysoYi13KSsoMS40NDI2OTUwNDA3MjE0NDYzKkErMS42NzUxNzEzMTY0ODg2NTEyZS0xMCooQStsKSkpKSwrbH1mdW5jdGlvbiBnJChsLGMpe2N8PTA7dmFyIHAsbSxmPTA7c3dpdGNoKF9ba2k+PjNdPWw9K2wsMjA0NyYobT0wfFp1KDB8KGY9MHxhW2tpPj4y''@;'; put 'put ''XSksMHwocD0wfGFba2krND4+Ml0pLDUyKSkpe2Nhc2UgMDowIT1sPyhsPStnJCgweDEwMDAwMDAwMDAwMDAwMDAwKmwsYyksZj0oMHxhW2M+PjJdKS02NHwwKTpmPTAsYVtjPj4yXT1mO2JyZWFrO2Nhc2UgMjA0NzpicmVhaztkZWZhdWx0OmFbYz4+Ml09KDIwNDcmbSktMTAyMixhW2tpPj4y''@;'; put 'put ''XT1mLGFba2krND4+Ml09LTIxNDY0MzUwNzMmcHwxMDcxNjQ0NjcyLGw9K19ba2k+PjNdfXJldHVybitsfWZ1bmN0aW9uIG0kKGwsYyl7dmFyIGYscCxtLEE7cmV0dXJuKygoQT0xLShtPS41KihmPShsPStsKSpsKSkpKygxLUEtbSsoZiooZiooZiooMjQ4MDE1ODcyODk0NzY3M2UtMjAqZi0u''@;'; put 'put ''MDAxMzg4ODg4ODg4ODg3NDExKSsuMDQxNjY2NjY2NjY2NjY2NikrKHA9ZipmKSpwKihmKigyLjA4NzU3MjMyMTI5ODE3NWUtOS0xMTM1OTY0NzU1Nzc4ODE5NWUtMjcqZiktMi43NTU3MzE0MzUxMzkwNjYzZS03KSktbCooYz0rYykpKSl9ZnVuY3Rpb24gRnVlKGwsYyl7Y3w9MDt2YXIgayxN''@;'; put 'put ''LEQsSyxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxSPTAsRz0wLHBlPTA7Sz1vZSxvZT1vZSs0OHwwLGs9SysxNnwwLE09SyxfW2tpPj4zXT1sPStsLEQ9MHxadSgwfChmPTB8YVtraT4+Ml0pLDB8KHc9MHxhW2tpKzQ+PjJdKSw2MyksRz0yMTQ3NDgzNjQ3Jnc7ZG97aWYoRz4+PjA8MTA3NDc1''@;'; put 'put ''MjEyMyl7aWYoNTk4NTIzIT0oMTA0ODU3NSZ3fDApKXtpZihmPTAhPSgwfEQpLEc+Pj4wPDEwNzM5Mjg1NzMpe2lmKGYpe19bYz4+M109Yj0oQT1sKzEuNTcwNzk2MzI2NzM0MTI1NikrNjA3NzEwMDUwNjUwNjE5MmUtMjYsX1tjKzg+PjNdPUEtYis2MDc3MTAwNTA2NTA2MTkyZS0yNixmPS0x''@;'; put 'put ''O2JyZWFrfV9bYz4+M109Yj0oQT1sKy0xLjU3MDc5NjMyNjczNDEyNTYpKy02MDc3MTAwNTA2NTA2MTkyZS0yNixfW2MrOD4+M109QS1iLTYwNzcxMDA1MDY1MDYxOTJlLTI2LGY9MTticmVha31pZihmKXtfW2M+PjNdPWI9KEE9bCszLjE0MTU5MjY1MzQ2ODI1MTIpKzEuMjE1NDIwMTAxMzAx''@;'; put 'put ''MjM4NGUtMTAsX1tjKzg+PjNdPUEtYisxLjIxNTQyMDEwMTMwMTIzODRlLTEwLGY9LTI7YnJlYWt9X1tjPj4zXT1iPShBPWwrLTMuMTQxNTkyNjUzNDY4MjUxMikrLTEuMjE1NDIwMTAxMzAxMjM4NGUtMTAsX1tjKzg+PjNdPUEtYi0xLjIxNTQyMDEwMTMwMTIzODRlLTEwLGY9MjticmVha31S''@;'; put 'put ''PTIxfWVsc2V7aWYoRz4+PjA8MTA3NTU5NDgxMil7aWYoRz4+PjA8MTA3NTE4MzAzNyl7aWYoMTA3NDk3NzE0OD09KDB8Rykpe1I9MjE7YnJlYWt9aWYoRCl7X1tjPj4zXT1iPShBPWwrNC43MTIzODg5ODAyMDIzNzcpKzEuODIzMTMwMTUxOTUxODU3OGUtMTAsX1tjKzg+PjNdPUEtYisxLjgy''@;'; put 'put ''MzEzMDE1MTk1MTg1NzhlLTEwLGY9LTM7YnJlYWt9X1tjPj4zXT1iPShBPWwrLTQuNzEyMzg4OTgwMjAyMzc3KSstMS44MjMxMzAxNTE5NTE4NTc4ZS0xMCxfW2MrOD4+M109QS1iLTEuODIzMTMwMTUxOTUxODU3OGUtMTAsZj0zO2JyZWFrfWlmKDEwNzUzODg5MjM9PSgwfEcpKXtSPTIxO2Jy''@;'; put 'put ''ZWFrfWlmKEQpe19bYz4+M109Yj0oQT1sKzYuMjgzMTg1MzA2OTM2NTAyNSkrMi40MzA4NDAyMDI2MDI0NzdlLTEwLF9bYys4Pj4zXT1BLWIrMi40MzA4NDAyMDI2MDI0NzdlLTEwLGY9LTQ7YnJlYWt9X1tjPj4zXT1iPShBPWwrLTYuMjgzMTg1MzA2OTM2NTAyNSkrLTIuNDMwODQwMjAyNjAy''@;'; put 'put ''NDc3ZS0xMCxfW2MrOD4+M109QS1iLTIuNDMwODQwMjAyNjAyNDc3ZS0xMCxmPTQ7YnJlYWt9aWYoRz4+PjA+PTEwOTQyNjMyOTEpe2lmKEc+Pj4wPjIxNDY0MzUwNzEpe19bYys4Pj4zXT1iPWwtbCxfW2M+PjNdPWIsZj0wO2JyZWFrfWFba2k+PjJdPWYsYVtraSs0Pj4yXT0xMDQ4NTc1Jnd8''@;'; put 'put ''MTA5NjgxMDQ5NixsPStfW2tpPj4zXSxmPTA7ZG97X1trKyhmPDwzKT4+M109Yj0rKDB8fn5sKSxsPTE2Nzc3MjE2KihsLWIpLGY9ZisxfDB9d2hpbGUoMiE9KDB8ZikpO2lmKF9baysxNj4+M109bCwwPT1sKWZvcihmPTE7MD09K19baysoZjw8Myk+PjNdOylmPWYrLTF8MDtlbHNlIGY9Mjtp''@;'; put 'put ''ZihmPTB8SHVlKGssTSwoRz4+PjIwKS0xMDQ2fDAsZisxfDAsMSksbD0rX1tNPj4zXSxEKXtfW2M+PjNdPS1sLF9bYys4Pj4zXT0tK19bTSs4Pj4zXSxmPTAtZnwwO2JyZWFrfV9bYz4+M109bCxfW2MrOD4+M109K19bTSs4Pj4zXTticmVha31SPTIxfX13aGlsZSgwKTtyZXR1cm4gMjE9PSgw''@;'; put 'put ''fFIpJiYoZj1+fihBPS42MzY2MTk3NzIzNjc1ODE0KmwrNjc1NTM5OTQ0MTA1NTc0NC02NzU1Mzk5NDQxMDU1NzQ0KSxfW2M+PjNdPWw9KHA9bC0xLjU3MDc5NjMyNjczNDEyNTYqQSktKG09NjA3NzEwMDUwNjUwNjE5MmUtMjYqQSksX1traT4+M109bCwoKHc9Rz4+PjIwKS0oMjA0NyYoUj0w''@;'; put 'put ''fFp1KDB8YVtraT4+Ml0sMHxhW2tpKzQ+PjJdLDUyKSkpfDApPjE2JiYoX1tjPj4zXT1sPShiPXAtKG09NjA3NzEwMDUwNjMwMzk2NmUtMjYqQSkpLShtPTIwMjIyNjYyNDg3OTU5NTA2ZS0zNypBLShwLWItbSkpLF9ba2k+PjNdPWwsQT04NDc4NDI3NjYwMzY4OWUtNDUqQS0oYi0ocD1iLShw''@;'; put 'put ''ZT0yMDIyMjY2MjQ4NzExMTY2NWUtMzcqQSkpLXBlKSwody0oMjA0NyYoRz0wfFp1KDB8YVtraT4+Ml0sMHxhW2tpKzQ+PjJdLDUyKSkpfDApPjQ5PyhfW2M+PjNdPWw9cC1BLG09QSk6cD1iKSxfW2MrOD4+M109cC1sLW0pLG9lPUssMHxmfWZ1bmN0aW9uIEh1ZShsLGMsZixwLG0pe2x8PTAs''@;'; put 'put ''Y3w9MDt2YXIgYmUsT2UsTGUsQmUsSGUsZXQscnQsR2UsbHQsYXQsRXQsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGplPTAsTXQ9MCxrdD0wLFp0PTA7aWYoRXQ9b2Usb2U9b2UrNTYwfDAsR2U9RXQrNDgwfDAsZXQ9RXQrMzIwfDAsYXQ9RXQrMTYwfDAs''@;'; put 'put ''TXQ9RXQsbHQ9MHxhWzYzMjIwKygobXw9MCk8PDIpPj4yXSxHPShwfD0wKS0xfDAsYj0oZnw9MCktMjQrKHJ0PTB8dnIoamU9KDB8KGplPShmKy0zfDApLzI0fDApKT4wP2plOjAsLTI0KSl8MCwobHQrR3wwKT49MClmb3IoRD1sdCtwfDAsaz1qZS1HfDAsTT0wO19bZXQrKE08PDMpPj4zXT1B''@;'; put 'put ''PSgwfGspPDA/MDorKDB8YVs2MzIzNisoazw8Mik+PjJdKSwoMHwoTT1NKzF8MCkpIT0oMHxEKTspaz1rKzF8MDtmb3IoUj0oMHxwKT4wLEQ9MDs7KXtpZihSKXtNPUQrR3wwLEE9MCxrPTA7ZG97QSs9K19bbCsoazw8Myk+PjNdKitfW2V0KyhNLWs8PDMpPj4zXSxrPWsrMXwwfXdoaWxlKCgw''@;'; put 'put ''fGspIT0oMHxwKSl9ZWxzZSBBPTA7aWYoX1tNdCsoRDw8Myk+PjNdPUEsISgoMHxEKTwoMHxsdCkpKWJyZWFrO0Q9RCsxfDB9YmU9KDB8Yik+MCxPZT0yNC1ifDAsTGU9MjMtYnwwLEJlPSgwfHApPjAsSGU9MD09KDB8Yiksaz1sdDtlOmZvcig7Oyl7aWYoQT0rX1tNdCsoazw8Myk+PjNdLFI9''@;'; put 'put ''KDB8ayk+MClmb3IoTT1rLEQ9MDthW0dlKyhEPDwyKT4+Ml09fn4oQS0xNjc3NzIxNioodz0rKDB8fn4oNS45NjA0NjQ0Nzc1MzkwNjNlLTgqQSkpKSksbWU9TSxBPStfW010KygoTT1NKy0xfDApPDwzKT4+M10rdywhKCgwfG1lKTw9MSk7KUQ9RCsxfDA7QT0rY2coQSxiKSxBLT04Kit5Yygu''@;'; put 'put ''MTI1KkEpLEEtPSsoMHwoTT1+fkEpKTtkb3tpZighYmUpe2lmKEhlKXtEPWFbR2UrKGsrLTE8PDIpPj4yXT4+MjMsa3Q9MTk7YnJlYWt9aWYoQT49LjUpe0Q9MixrdD0yMDticmVha31HPTAsbWU9TTticmVha31hWyhtZT1HZSsoaystMTw8Mil8MCk+PjJdPUQ9KEQ9MHxhW21lPj4yXSktKChr''@;'; put 'put ''dD1EPj5PZSk8PE9lKXwwLEQ+Pj1MZSxNPWt0K018MCxrdD0xOX13aGlsZSgwKTtpZigxOT09KDB8a3QpJiYoa3Q9MCwoMHxEKT4wP2t0PTIwOihHPUQsbWU9TSkpLDIwPT0oMHxrdCkpe2lmKGt0PTAsbWU9TSsxfDAsUil7TT0wLHBlPTA7ZG97Sz0wfGFbKEc9R2UrKHBlPDwyKXwwKT4+Ml0s''@;'; put 'put ''TT8oUj0xNjc3NzIxNSxrdD0yMyk6Sz8oTT0xLFI9MTY3NzcyMTYsa3Q9MjMpOk09MCwyMz09KDB8a3QpJiYoa3Q9MCxhW0c+PjJdPVItSykscGU9cGUrMXwwfXdoaWxlKCgwfHBlKSE9KDB8aykpfWVsc2UgTT0wO3Q6ZG97aWYoYmUpe3N3aXRjaCgwfGIpe2Nhc2UgMTpSPTgzODg2MDc7YnJl''@;'; put 'put ''YWs7Y2FzZSAyOlI9NDE5NDMwMzticmVhaztkZWZhdWx0OmJyZWFrIHR9YVsocGU9R2UrKGsrLTE8PDIpfDApPj4yXT1hW3BlPj4yXSZSfX13aGlsZSgwKTsyPT0oMHxEKT8oQT0xLUEsTT8oRz0yLEEtPStjZygxLGIpKTpHPTIpOkc9RH1pZigwIT1BKXtrdD00MjticmVha31pZigoMHxrKT4o''@;'; put 'put ''MHxsdCkpe009MCxEPWs7ZG97TXw9YVtHZSsoKEQ9RCstMXwwKTw8Mik+PjJdfXdoaWxlKCgwfEQpPigwfGx0KSk7aWYoTSl7a3Q9NDE7YnJlYWt9TT0xfWVsc2UgTT0xO2Zvcig7ISgwfGFbR2UrKGx0LU08PDIpPj4yXSk7KU09TSsxfDA7aWYoUj1NK2t8MCwoMHxNKTw9MClrPVI7ZWxzZSBm''@;'; put 'put ''b3IoOzspe2lmKF9bZXQrKChNPWsrcHwwKTw8Myk+PjNdPSsoMHxhWzYzMjM2KygoRD1rKzF8MCkramU8PDIpPj4yXSksQmUpe0E9MCxrPTA7ZG97QSs9K19bbCsoazw8Myk+PjNdKitfW2V0KyhNLWs8PDMpPj4zXSxrPWsrMXwwfXdoaWxlKCgwfGspIT0oMHxwKSl9ZWxzZSBBPTA7aWYoX1tN''@;'; put 'put ''dCsoRDw8Myk+PjNdPUEsISgoMHxEKTwoMHxSKSkpe2s9Ujtjb250aW51ZSBlfWs9RH19aWYoNDE9PSgwfGt0KSlmb3IoOzspe2lmKGt0PTAsYj1iKy0yNHwwLDB8YVtHZSsoKGs9aystMXwwKTw8Mik+PjJdKXtSPWs7YnJlYWt9a3Q9NDF9ZWxzZSA0Mj09KDB8a3QpJiYoKEE9K2NnKEEsMC1i''@;'; put 'put ''fDApKT49MTY3NzcyMTYmJihhW0dlKyhrPDwyKT4+Ml09fn4oQS0xNjc3NzIxNioodz0rKDB8fn4oNS45NjA0NjQ0Nzc1MzkwNjNlLTgqQSkpKSksYj1ydCtmfDAsaz1rKzF8MCxBPXcpLGFbR2UrKGs8PDIpPj4yXT1+fkEsUj1rKTtpZihEPSgwfFIpPi0xKXtmb3IoQT0rY2coMSxiKSxiPVI7''@;'; put 'put ''X1tNdCsoYjw8Myk+PjNdPUEqKygwfGFbR2UrKGI8PDIpPj4yXSksKDB8Yik+MDspQSo9NS45NjA0NjQ0Nzc1MzkwNjNlLTgsYj1iKy0xfDA7aWYoRClmb3Ioaz1SOzspe2ZvcihNPVIta3wwLGI9MCxBPTA7QSs9K19bMTA5MDQrKGI8PDMpPj4zXSorX1tNdCsoYitrPDwzKT4+M10sISgoMHxi''@;'; put 'put ''KT49KDB8bHQpfCgwfGIpPj0oMHxNKSk7KWI9YisxfDA7aWYoX1thdCsoTTw8Myk+PjNdPUEsISgoMHxrKT4wKSlicmVhaztrPWsrLTF8MH19c3dpdGNoKDB8bSl7Y2FzZSAwOmlmKEQpZm9yKEE9MCxiPVI7QSs9K19bYXQrKGI8PDMpPj4zXSwoMHxiKT4wOyliPWIrLTF8MDtlbHNlIEE9MDt3''@;'; put 'put ''PTA9PSgwfEcpP0E6LUEsa3Q9NzM7YnJlYWs7Y2FzZSAyOmNhc2UgMTppZihEKWZvcihBPTAsYj1SO0ErPStfW2F0KyhiPDwzKT4+M10sKDB8Yik+MDspYj1iKy0xfDA7ZWxzZSBBPTA7aWYoX1tjPj4zXT0oaz0wPT0oMHxHKSk/QTotQSxBPStfW2F0Pj4zXS1BLCgwfFIpPj0xKWZvcihiPTE7''@;'; put 'put ''QSs9K19bYXQrKGI8PDMpPj4zXSwoMHxiKSE9KDB8Uik7KWI9YisxfDA7dz1rP0E6LUEsYz1jKzh8MCxrdD03MzticmVhaztjYXNlIDM6aWYoKDB8Uik+MCl7Yj1SLEE9K19bYXQrKFI8PDMpPj4zXTtkb3tfW2F0Kygoa3Q9Yik8PDMpPj4zXT0oWnQ9QSkrKCh3PStfWyhNdD1hdCsoKGI9Yist''@;'; put 'put ''MXwwKTw8Myl8MCk+PjNdKS0oQT13K0EpKSxfW010Pj4zXT1BfXdoaWxlKCgwfGt0KT4xKTtpZihrPSgwfFIpPjEpe2I9UixBPStfW2F0KyhSPDwzKT4+M107ZG97X1thdCsoKGt0PWIpPDwzKT4+M109KHc9QSkrKChadD0rX1soTXQ9YXQrKChiPWIrLTF8MCk8PDMpfDApPj4zXSktKEE9WnQr''@;'; put 'put ''QSkpLF9bTXQ+PjNdPUF9d2hpbGUoKDB8a3QpPjIpO2lmKGspZm9yKGI9Uix3PTA7dys9K19bYXQrKGI8PDMpPj4zXSwoMHxiKT4yOyliPWIrLTF8MDtlbHNlIHc9MH1lbHNlIHc9MH1lbHNlIHc9MDtBPStfW2F0Pj4zXSxHPyhfW2M+PjNdPS1BLHc9LXcsQT0tK19bYXQrOD4+M10pOihfW2M+''@;'; put 'put ''PjNdPUEsQT0rX1thdCs4Pj4zXSksX1tjKzg+PjNdPUEsYz1jKzE2fDAsa3Q9NzN9cmV0dXJuIDczPT0oMHxrdCkmJihfW2M+PjNdPXcpLG9lPUV0LDcmbWV8MH1mdW5jdGlvbiBjZyhsLGMpe2w9K2w7dmFyIGY9MCxwPTA7cmV0dXJuKDB8KGN8PTApKTw9MTAyMz8oMHxjKTwtMTAyMiYmKGwq''@;'; put 'put ''PTIyMjUwNzM4NTg1MDcyMDE0ZS0zMjQsZj1jKzIwNDR8MCxsPShwPSgwfGMpPC0yMDQ0KT8yMjI1MDczODU4NTA3MjAxNGUtMzI0Kmw6bCxjPXA/KDB8Zik+LTEwMjI/ZjotMTAyMjpjKzEwMjJ8MCk6KGwqPTg5ODg0NjU2NzQzMTE1OGUyOTMscD1jKy0yMDQ2fDAsbD0oZj0oMHxjKT4yMDQ2''@;'; put 'put ''KT84OTg4NDY1Njc0MzExNThlMjkzKmw6bCxjPWY/KDB8cCk8MTAyMz9wOjEwMjM6YystMTAyM3wwKSxmPTB8Y3MoYysxMDIzfDAsMCw1MikscD1PbixhW2tpPj4yXT1mLGFba2krND4+Ml09cCwrbCorX1traT4+M119ZnVuY3Rpb24gUWoobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7X1tr''@;'; put 'put ''aT4+M109bD0rbCxjPTIxNDc0ODM2NDcmKGY9MHxhW2tpKzQ+PjJdKTtkb3tpZihjPj4+MD4yMTQ2NDM1MDcxKWwrPWw7ZWxzZXtpZihjPj4+MDwxMDQ4NTc2KXtpZihfW2tpPj4zXT0weDQwMDAwMDAwMDAwMDAwKmwsIShjPTIxNDc0ODM2NDcmKGY9MHxhW2tpKzQ+PjJdKSkpYnJlYWs7cD02''@;'; put 'put ''OTYyMTk3OTV9ZWxzZSBwPTcxNTA5NDE2MzthW2tpPj4yXT0wLGFba2krND4+Ml09KChjPj4+MCkvM3wwKStwfC0yMTQ3NDgzNjQ4JmYsX1traT4+M109KChBPShtPStfW2tpPj4zXSkqbSoobS9sKSkqKEEqQSkqKC4xNDU5OTYxOTI4ODY2MTI0NSpBLS43NTgzOTc5MzQ3Nzg3NjYpKyhBKigx''@;'; put 'put ''LjYyMTQyOTcyMDEwNTM1NDUqQS0xLjg4NDk3OTc5NTQzMzc3MTcpKzEuODc1OTUxODI0MjcxNzcpKSptLGY9MHxIbCgwfGFba2k+PjJdLDB8YVtraSs0Pj4yXSwtMjE0NzQ4MzY0OCwwKSxwPU9uLGFba2k+PjJdPS0xMDczNzQxODI0JmYsYVtraSs0Pj4yXT1wLGw9KChsLz0obT0rX1traT4+''@;'; put 'put ''M10pKm0pLW0pLyhtK20rbCkqbSttfX13aGlsZSgwKTtyZXR1cm4rbH1mdW5jdGlvbiB2JChsLGMpe3JldHVybisgK2Z1bmN0aW9uIE51ZShsLGMpe2M9K2M7dmFyIHAsZj0wO3JldHVybiBfW2tpPj4zXT1sPStsLHA9MHxhW2tpPj4yXSxmPTB8YVtraSs0Pj4yXSxfW2tpPj4zXT1jLGY9LTIx''@;'; put 'put ''NDc0ODM2NDgmYVtraSs0Pj4yXXwyMTQ3NDgzNjQ3JmYsYVtraT4+Ml09cCxhW2tpKzQ+PjJdPWYsKyArX1traT4+M119KGw9K2wsYz0rYyl9ZnVuY3Rpb24gQSQobCxjKXtyZXR1cm4rICtjZyhsPStsLGN8PTApfWZ1bmN0aW9uIHkkKGwsYyl7cmV0dXJuKyArZnVuY3Rpb24gWkFlKGwsYyl7''@;'; put 'put ''Yz0rYzt2YXIgRyxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsSz0wO19ba2k+PjNdPWw9K2wsdz0wfGFba2k+PjJdLGs9MHxhW2tpKzQ+PjJdLF9ba2k+PjNdPWMsRD0wfGFba2k+PjJdLFI9MHxhW2tpKzQ+PjJdLHA9MjA0NyYocD0wfFp1KDB8dywwfGssNTIpKSxN''@;'; put 'put ''PTIwNDcmKE09MHxadSgwfEQsMHxSLDUyKSksRz0tMjE0NzQ4MzY0OCZrLEE9MHxjcygwfEQsMHxSLDEpLGI9T247ZTpkb3tpZigwPT0oMHxBKSYwPT0oMHxiKXx8KG09MHx6QWUoYyksZj0yMTQ3NDgzNjQ3Jk9uLDIwNDc9PSgwfHApfGY+Pj4wPjIxNDY0MzUwNzJ8MjE0NjQzNTA3Mj09KDB8''@;'; put 'put ''ZikmbT4+PjA+MCkpSz0zO2Vsc2V7aWYoZj0wfGNzKDB8dywwfGssMSksISgobT1Pbik+Pj4wPmI+Pj4wfCgwfG0pPT0oMHxiKSZmPj4+MD5BPj4+MCkpcmV0dXJuKygoMHxmKT09KDB8QSkmKDB8bSk9PSgwfGIpPzAqbDpsKTtpZihwKUE9MTA0ODU3NSZrfDEwNDg1NzY7ZWxzZXtpZihmPTB8''@;'; put 'put ''Y3MoMHx3LDB8aywxMiksKDB8KG09T24pKT4tMXwtMT09KDB8bSkmZj4+PjA+NDI5NDk2NzI5NSl7cD0wO2Rve3A9cCstMXwwLGY9MHxjcygwfGYsMHxtLDEpLG09T259d2hpbGUoKDB8bSk+LTF8LTE9PSgwfG0pJmY+Pj4wPjQyOTQ5NjcyOTUpfWVsc2UgcD0wO3c9MHxjcygwfHcsMHxrLDEt''@;'; put 'put ''cHwwKSxBPU9ufWlmKE0paz0xMDQ4NTc1JlJ8MTA0ODU3NjtlbHNle2lmKG09MHxjcygwfEQsMHxSLDEyKSwoMHwoYj1PbikpPi0xfC0xPT0oMHxiKSZtPj4+MD40Mjk0OTY3Mjk1KXtmPTA7ZG97Zj1mKy0xfDAsbT0wfGNzKDB8bSwwfGIsMSksYj1Pbn13aGlsZSgoMHxiKT4tMXwtMT09KDB8''@;'; put 'put ''YikmbT4+PjA+NDI5NDk2NzI5NSl9ZWxzZSBmPTA7RD0wfGNzKDB8RCwwfFIsMS1mfDApLE09ZixrPU9ufW09MHxncCgwfHcsMHxBLDB8RCwwfGspLGI9KDB8KGY9T24pKT4tMXwtMT09KDB8ZikmbT4+PjA+NDI5NDk2NzI5NTt0OmRve2lmKCgwfHApPigwfE0pKXtmb3IoOzspe2lmKGIpe2lm''@;'; put 'put ''KDA9PSgwfG0pJjA9PSgwfGYpKWJyZWFrfWVsc2UgbT13LGY9QTtpZihwPXArLTF8MCxtPTB8Z3AoMHwodz0wfGNzKDB8bSwwfGYsMSkpLDB8KEE9T24pLDB8RCwwfGspLGI9KDB8KGY9T24pKT4tMXwtMT09KDB8ZikmbT4+PjA+NDI5NDk2NzI5NSwoMHxwKTw9KDB8TSkpYnJlYWsgdH1jPTAq''@;'; put 'put ''bDticmVhayBlfX13aGlsZSgwKTtpZihiKXtpZigwPT0oMHxtKSYwPT0oMHxmKSl7Yz0wKmw7YnJlYWt9fWVsc2UgZj1BLG09dztpZihmPj4+MDwxMDQ4NTc2fDEwNDg1NzY9PSgwfGYpJm0+Pj4wPDApZG97bT0wfGNzKDB8bSwwfGYsMSksZj1PbixwPXArLTF8MH13aGlsZShmPj4+MDwxMDQ4''@;'; put 'put ''NTc2fDEwNDg1NzY9PSgwfGYpJm0+Pj4wPDApOygwfHApPjA/KFI9MHxIbCgwfG0sMHxmLDAsLTEwNDg1NzYpLGY9T24scD0wfGNzKDB8cCwwLDUyKSxmfD1PbixwfD1SKToocD0wfFp1KDB8bSwwfGYsMS1wfDApLGY9T24pLGFba2k+PjJdPXAsYVtraSs0Pj4yXT1mfEcsYz0rX1traT4+M119''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiAzPT0oMHxLKSYmKGM9KGMqPWwpL2MpLCtjfShsPStsLGM9K2MpfWZ1bmN0aW9uIHpBZShsKXtyZXR1cm4gX1traT4+M109bD0rbCxPbj0wfGFba2krND4+Ml0sMHxhW2tpPj4yXX1mdW5jdGlvbiBoUyhsLGMpe2M9K2M7dmFyIGIsayxNLEQsUixHLEsscGUsZj0w''@;'; put 'put ''LHA9MCxtPTAsQT0wLHc9MCxtZT0wO0c9b2Usb2U9b2UrMzJ8MCxrPUcrMjR8MCxNPUcrMTZ8MCxEPUcrOHwwLFI9RyxfW2tpPj4zXT1sPStsLG1lPTB8YVtraT4+Ml0sQT0wfGFba2krND4+Ml0sX1traT4+M109YyxwZT0odz0oQSY9MjE0NzQ4MzY0Nyk+Pj4wPChtPTIxNDc0ODM2NDcmYVtr''@;'; put 'put ''aSs0Pj4yXSk+Pj4wfCgwfEEpPT0oMHxtKSZtZT4+PjA8KHA9MHxhW2tpPj4yXSk+Pj4wKT9wOm1lLEs9dz9tOkEscD13P21lOnAsbT13P0E6bSxBPTB8WnUoMHxwZSwwfEssNTIpLHc9MHxadSgwfHAsMHxtLDUyKSxhW2tpPj4yXT1wZSxhW2tpKzQ+PjJdPUssbD0rX1traT4+M10sYVtraT4+''@;'; put 'put ''Ml09cCxhW2tpKzQ+PjJdPW0sYj0rX1traT4+M107ZG97aWYoMjA0NyE9KDB8dykpe2lmKCEoMD09KDB8cCkmMD09KDB8bSl8MjA0Nz09KDB8QSkpKXtpZigoQS13fDApPjY0KXtsKz1iO2JyZWFrfSgwfEEpPjE1MzM/KGY9NS4yNjAxMzU5MDE1NDgzNzRlMjEwLGM9MTkwMTA5MTU2NjI5NTE2''@;'; put 'put ''ZS0yMjUqbCxsPTE5MDEwOTE1NjYyOTUxNmUtMjI1KmIpOihmPShtZT0oMHx3KTw1NzMpPzE5MDEwOTE1NjYyOTUxNmUtMjI1OjEsYz1tZT81LjI2MDEzNTkwMTU0ODM3NGUyMTAqbDpsLGw9bWU/NS4yNjAxMzU5MDE1NDgzNzRlMjEwKmI6YiksVnVlKGssTSxjKSxWdWUoRCxSLGwpLGw9Zior''@;'; put 'put ''RjAoKygrX1tSPj4zXSsgK19bTT4+M10rICtfW0Q+PjNdKyArX1trPj4zXSkpfX1lbHNlIGw9Yn13aGlsZSgwKTtyZXR1cm4gb2U9RywrbH1mdW5jdGlvbiBWdWUobCxjLGYpe2N8PTA7dmFyIHAsbT0wO209MTM0MjE3NzI5KihmPStmKSxwPWYtKG0rPWYtbSksX1sobHw9MCk+PjNdPWYqPWYs''@;'; put 'put ''X1tjPj4zXT1wKnArKG0qbS1mKzIqbSpwKX1mdW5jdGlvbiB4TChsLGMsZil7Y3w9MCxmfD0wO3ZhciBBLGIscD0wLG09MCx3PTAsaz0wO2I9b2Usb2U9b2UrMTZ8MCxBPWIsX1traT4+M109bD0rbCxtPTIxNDc0ODM2NDcmYVtraSs0Pj4yXTtkb3tpZihtPj4+MDwxMDcyMjQzMTk2KXtpZiht''@;'; put 'put ''Pj4+MDwxMDQ0ODE2MDMwKXtfW2M+PjNdPWwsX1tmPj4zXT0xO2JyZWFrfV9bYz4+M109K2QkKGwsMCwwKSxfW2Y+PjNdPSttJChsLDApO2JyZWFrfWlmKG0+Pj4wPjIxNDY0MzUwNzEpe19bZj4+M109dz1sLWwsX1tjPj4zXT13O2JyZWFrfXN3aXRjaChtPTB8RnVlKGwsQSkscD0rZCQoK19b''@;'; put 'put ''QT4+M10sK19bKGs9QSs4fDApPj4zXSwxKSxsPSttJCgrX1tBPj4zXSwrX1trPj4zXSksMyZtKXtjYXNlIDA6X1tjPj4zXT1wLHc9bDticmVhaztjYXNlIDE6X1tjPj4zXT1sLHc9LXA7YnJlYWs7Y2FzZSAyOl9bYz4+M109LXAsdz0tbDticmVhaztjYXNlIDM6X1tjPj4zXT0tbCx3PXB9X1tm''@;'; put 'put ''Pj4zXT13fXdoaWxlKDApO29lPWJ9ZnVuY3Rpb24gR0FlKGwsYyl7cmV0dXJuKyArZyQobD0rbCxjfD0wKX1mdW5jdGlvbiBuMihsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTAsbT0wO2lmKGZ8PTApe3A9MHx1ZVtsPj4wXTtlOmRve2lmKHA8PDI0Pj4yNClmb3IoOzspe2lmKCEocDw8MjQ+PjI0''@;'; put 'put ''PT0obT0wfHVlW2M+PjBdKTw8MjQ+PjI0JjAhPSgwfChmPWYrLTF8MCkpJm08PDI0Pj4yNCE9MCkpYnJlYWsgZTtpZihjPWMrMXwwLCEoKHA9MHx1ZVsobD1sKzF8MCk+PjBdKTw8MjQ+PjI0KSl7cD0wO2JyZWFrfX1lbHNlIHA9MH13aGlsZSgwKTtwPSgyNTUmcCktKDB8YnRbYz4+MF0pfDB9''@;'; put 'put ''ZWxzZSBwPTA7cmV0dXJuIDB8cH1mdW5jdGlvbiBVcyhsLGMpe3JldHVybiBsPTB8U0wobHw9MCxjfD0wKSwwfCgoMHx1ZVtsPj4wXSk9PSgyNTUmYyk8PDI0Pj4yND9sOjApfWZ1bmN0aW9uIEtjKGwpe3JldHVybiAxJigzMj09KDB8KGx8PTApKXwobCstOXwwKT4+PjA8NSl8MH1mdW5jdGlv''@;'; put 'put ''biBzdyhsLGMsZil7bHw9MDt2YXIgcD0wLG09MCxBPTAsdz0wO0E9MjU1JihjfD0wKSxwPTAhPSgwfChmfD0wKSk7ZTpkb3tpZihwJjAhPSgzJmx8MCkpZm9yKG09MjU1JmM7Oyl7aWYoKDB8dWVbbD4+MF0pPT1tPDwyND4+MjQpe3c9NjticmVhayBlfWlmKCEoKHA9MCE9KDB8KGY9ZistMXww''@;'; put 'put ''KSkpJjAhPSgzJihsPWwrMXwwKXwwKSkpe3c9NTticmVha319ZWxzZSB3PTV9d2hpbGUoMCk7NT09KDB8dykmJihwP3c9NjpmPTApO2U6ZG97aWYoNj09KDB8dykmJihtPTI1NSZjLCgwfHVlW2w+PjBdKSE9bTw8MjQ+PjI0KSl7cD0wfHZyKEEsMTY4NDMwMDkpO3Q6ZG97aWYoZj4+PjA+Myl7''@;'; put 'put ''Zm9yKDshKCgtMjEzOTA2MjE0NCYoQT1hW2w+PjJdXnApXi0yMTM5MDYyMTQ0KSZBKy0xNjg0MzAwOXwwKTspaWYobD1sKzR8MCwoZj1mKy00fDApPj4+MDw9Myl7dz0xMTticmVhayB0fX1lbHNlIHc9MTF9d2hpbGUoMCk7aWYoMTE9PSgwfHcpJiYhZil7Zj0wO2JyZWFrfWZvcig7Oyl7aWYo''@;'; put 'put ''KDB8dWVbbD4+MF0pPT1tPDwyND4+MjQpYnJlYWsgZTtpZihsPWwrMXwwLCEoZj1mKy0xfDApKXtmPTA7YnJlYWt9fX19d2hpbGUoMCk7cmV0dXJuIDB8KDB8Zj9sOjApfWZ1bmN0aW9uIHckKGwsYyxmLHAsbSl7dmFyIEEsdyxiLGs7cmV0dXJuIGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxr''@;'; put 'put ''PW9lLG9lPW9lKzEyOHwwLGFbKHc9ayk+PjJdPTAsYVsoYj13KzR8MCk+PjJdPWwsYVt3KzQ0Pj4yXT1sLGFbKEE9dys4fDApPj4yXT0oMHxsKTwwPy0xOmwrMjE0NzQ4MzY0N3wwLGFbdys3Nj4+Ml09LTEsY2godywwKSxmPTB8anVlKHcsZiwxLHAsbSksMHxjJiYoYVtjPj4yXT1sKygoMHxh''@;'; put 'put ''W2I+PjJdKSsoMHxhW3crMTA4Pj4yXSktKDB8YVtBPj4yXSkpKSxvZT1rLDB8Zn1mdW5jdGlvbiBjaChsLGMpe3ZhciBmLHAsbTthWzEwNCsobHw9MCk+PjJdPWN8PTAsYVtsKzEwOD4+Ml09bT0oZj0wfGFbbCs4Pj4yXSktKHA9MHxhW2wrND4+Ml0pfDAsYVtsKzEwMD4+Ml09MCE9KDB8Yykm''@;'; put 'put ''KDB8bSk+KDB8Yyk/cCtjfDA6Zn1mdW5jdGlvbiBqdWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTA7ZTpkb3tpZihjPj4+MD4zNilhWzQ3NjQzXT0yMixtPTAscD0wO2Vsc2V7cGU9bCs0fDAs''@;'; put 'put ''Sz1sKzEwMHwwO2RveyhBPTB8YVtwZT4+Ml0pPj4+MDwoMHxhW0s+PjJdKT4+PjA/KGFbcGU+PjJdPUErMSxBPTB8YnRbQT4+MF0pOkE9MHxGbChsKX13aGlsZSgwIT0oMHxLYyhBKSkpO3Q6ZG97c3dpdGNoKDB8QSl7Y2FzZSA0MzpjYXNlIDQ1OmlmKEE9KDQ1PT0oMHxBKSk8PDMxPj4zMSwo''@;'; put 'put ''dz0wfGFbcGU+PjJdKT4+PjA8KDB8YVtLPj4yXSk+Pj4wKXthW3BlPj4yXT13KzEsRz1BLEE9MHxidFt3Pj4wXTticmVhayB0fUc9QSxBPTB8RmwobCk7YnJlYWsgdDtkZWZhdWx0Okc9MH19d2hpbGUoMCk7dz0wPT0oMHxjKTtkb3tpZigxNj09KDE2fGMpJjQ4PT0oMHxBKSl7aWYoKEE9MHxh''@;'; put 'put ''W3BlPj4yXSk+Pj4wPCgwfGFbSz4+Ml0pPj4+MD8oYVtwZT4+Ml09QSsxLEE9MHxidFtBPj4wXSk6QT0wfEZsKGwpLDEyMCE9KDMyfEEpKXtpZih3KXtjPTgsRD00NjticmVha31EPTMyO2JyZWFrfWlmKChBPTB8YVtwZT4+Ml0pPj4+MDwoMHxhW0s+PjJdKT4+PjA/KGFbcGU+PjJdPUErMSxB''@;'; put 'put ''PTB8YnRbQT4+MF0pOkE9MHxGbChsKSwoMHxidFsxNDk1OTIrQT4+MF0pPjE1KXtpZigocD0wPT0oMHxhW0s+PjJdKSl8fChhW3BlPj4yXT0oMHxhW3BlPj4yXSktMSksIWYpe2NoKGwsMCksbT0wLHA9MDticmVhayBlfWlmKHApe209MCxwPTA7YnJlYWsgZX1hW3BlPj4yXT0oMHxhW3BlPj4y''@;'; put 'put ''XSktMSxtPTAscD0wO2JyZWFrIGV9Yz0xNixEPTQ2fWVsc2V7aWYoISgoYz13PzEwOmMpPj4+MD4oMHxidFsxNDk1OTIrQT4+MF0pPj4+MCkpezB8YVtLPj4yXSYmKGFbcGU+PjJdPSgwfGFbcGU+PjJdKS0xKSxjaChsLDApLGFbNDc2NDNdPTIyLG09MCxwPTA7YnJlYWsgZX1EPTMyfX13aGls''@;'; put 'put ''ZSgwKTt0OmRve2lmKDMyPT0oMHxEKSlpZigxMD09KDB8Yykpe2lmKChjPUErLTQ4fDApPj4+MDwxMCl7QT0wLHc9Yztkb3tBPSgxMCpBfDApK3d8MCwoYz0wfGFbcGU+PjJdKT4+PjA8KDB8YVtLPj4yXSk+Pj4wPyhhW3BlPj4yXT1jKzEsYz0wfGJ0W2M+PjBdKTpjPTB8RmwobCksdz1jKy00''@;'; put 'put ''OHwwfXdoaWxlKHc+Pj4wPDEwJkE+Pj4wPDQyOTQ5NjcyOSk7Zj0wfWVsc2UgYz1BLEE9MCxmPTA7aWYoKGI9YystNDh8MCk+Pj4wPDEwKXt3PWM7ZG97aWYoYz0wfGh3KDB8QSwwfGYsMTAsMCksKGs9T24pPj4+MD4oUj1+KE09KCgwfGIpPDApPDwzMT4+MzEpKT4+PjB8KDB8ayk9PSgwfFIp''@;'; put 'put ''JmM+Pj4wPn5iPj4+MCl7Yz0xMCxEPTcyO2JyZWFrIHR9QT0wfEhsKDB8YywwfGssMHxiLDB8TSksZj1PbiwoYz0wfGFbcGU+PjJdKT4+PjA8KDB8YVtLPj4yXSk+Pj4wPyhhW3BlPj4yXT1jKzEsdz0wfGJ0W2M+PjBdKTp3PTB8RmwobCksYj13Ky00OHwwfXdoaWxlKGI+Pj4wPDEwJihmPj4+''@;'; put 'put ''MDw0Mjk0OTY3Mjl8NDI5NDk2NzI5PT0oMHxmKSZBPj4+MDwyNTc2OTgwMzc4KSk7Yj4+PjA+OT8odz1HLGM9Zik6KGM9MTAsRD03Mil9ZWxzZSB3PUcsYz1mfWVsc2UgRD00Nn13aGlsZSgwKTt0OmRve2lmKDQ2PT0oMHxEKSl7aWYoIShjKy0xJmMpKXtpZihEPTB8dWVbMTQ5ODQ4KygoMjMq''@;'; put 'put ''Y3wwKT4+PjUmNyk+PjBdLGM+Pj4wPih3PTI1NSYoZj0wfHVlWzE0OTU5MitBPj4wXSkpPj4+MCl7QT0wLGI9dztkb3tBPWJ8QTw8RCwodz0wfGFbcGU+PjJdKT4+PjA8KDB8YVtLPj4yXSk+Pj4wPyhhW3BlPj4yXT13KzEsdz0wfGJ0W3c+PjBdKTp3PTB8RmwobCksYj0yNTUmKGY9MHx1ZVsx''@;'; put 'put ''NDk1OTIrdz4+MF0pfXdoaWxlKEE+Pj4wPDEzNDIxNzcyOCZjPj4+MD5iPj4+MCk7Yj0wfWVsc2Ugdz1BLGI9MCxBPTA7aWYoaz0wfFp1KC0xLC0xLDB8RCksYz4+PjA8PSgyNTUmZik+Pj4wfChNPU9uKT4+PjA8Yj4+PjB8KDB8TSk9PSgwfGIpJms+Pj4wPEE+Pj4wKXtmPWIsRD03MjticmVh''@;'; put 'put ''a31mb3Iodz1iOzspe2lmKEE9MHxjcygwfEEsMHx3LDB8RCksYj1PbixBfD0yNTUmZiwodz0wfGFbcGU+PjJdKT4+PjA8KDB8YVtLPj4yXSk+Pj4wPyhhW3BlPj4yXT13KzEsdz0wfGJ0W3c+PjBdKTp3PTB8RmwobCksYz4+PjA8PSgyNTUmKGY9MHx1ZVsxNDk1OTIrdz4+MF0pKT4+PjB8Yj4+''@;'; put 'put ''PjA+TT4+PjB8KDB8Yik9PSgwfE0pJkE+Pj4wPms+Pj4wKXtmPWIsRD03MjticmVhayB0fXc9Yn19aWYoYz4+PjA+KHc9MjU1JihmPTB8dWVbMTQ5NTkyK0E+PjBdKSk+Pj4wKXtBPTAsYj13O2Rve0E9YisoMHx2cihBLGMpKXwwLCh3PTB8YVtwZT4+Ml0pPj4+MDwoMHxhW0s+PjJdKT4+PjA/''@;'; put 'put ''KGFbcGU+PjJdPXcrMSx3PTB8YnRbdz4+MF0pOnc9MHxGbChsKSxiPTI1NSYoZj0wfHVlWzE0OTU5Mit3Pj4wXSl9d2hpbGUoQT4+PjA8MTE5MzA0NjQ3JmM+Pj4wPmI+Pj4wKTtiPTB9ZWxzZSB3PUEsQT0wLGI9MDtpZihjPj4+MD4oMjU1JmYpPj4+MClmb3IoRD0wfGR3KC0xLC0xLDB8Yyww''@;'; put 'put ''KSxSPU9uLE09Yjs7KXtpZihNPj4+MD5SPj4+MHwoMHxNKT09KDB8UikmQT4+PjA+RD4+PjApe2Y9TSxEPTcyO2JyZWFrIHR9aWYoYj0wfGh3KDB8QSwwfE0sMHxjLDApLChrPU9uKT4+PjA+NDI5NDk2NzI5NXwtMT09KDB8aykmYj4+PjA+fihmJj0yNTUpPj4+MCl7Zj1NLEQ9NzI7YnJlYWsg''@;'; put 'put ''dH1pZihBPTB8SGwoMHxiLDB8aywwfGYsMCksYj1Pbiwodz0wfGFbcGU+PjJdKT4+PjA8KDB8YVtLPj4yXSk+Pj4wPyhhW3BlPj4yXT13KzEsdz0wfGJ0W3c+PjBdKTp3PTB8RmwobCksYz4+PjA8PSgyNTUmKGY9MHx1ZVsxNDk1OTIrdz4+MF0pKT4+PjApe2Y9YixEPTcyO2JyZWFrfU09Yn1l''@;'; put 'put ''bHNlIGY9YixEPTcyfX13aGlsZSgwKTtpZig3Mj09KDB8RCkpaWYoYz4+PjA+KDB8YnRbMTQ5NTkyK3c+PjBdKT4+PjApe2RveyhBPTB8YVtwZT4+Ml0pPj4+MDwoMHxhW0s+PjJdKT4+PjA/KGFbcGU+PjJdPUErMSxBPTB8YnRbQT4+MF0pOkE9MHxGbChsKX13aGlsZShjPj4+MD4oMHxidFsx''@;'; put 'put ''NDk1OTIrQT4+MF0pPj4+MCk7YVs0NzY0M109MzQsdz0wPT0oMSZwfDApJiEwP0c6MCxjPW0sQT1wfWVsc2Ugdz1HLGM9ZjtpZigwfGFbSz4+Ml0mJihhW3BlPj4yXT0oMHxhW3BlPj4yXSktMSksIShjPj4+MDxtPj4+MHwoMHxjKT09KDB8bSkmQT4+PjA8cD4+PjApKXtpZighKDAhPSgxJnB8''@;'; put 'put ''MCl8ITF8MCE9KDB8dykpKXthWzQ3NjQzXT0zNCxwPTB8SGwoMHxwLDB8bSwtMSwtMSksbT1PbjticmVha31pZihjPj4+MD5tPj4+MHwoMHxjKT09KDB8bSkmQT4+PjA+cD4+PjApe2FbNDc2NDNdPTM0O2JyZWFrfX1wPTB8Z3AoQV53fDAsY14ocD0oKDB8dyk8MCk8PDMxPj4zMSl8MCwwfHcs''@;'; put 'put ''MHxwKSxtPU9ufX13aGlsZSgwKTtyZXR1cm4gT249bSwwfHB9ZnVuY3Rpb24gRmwobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO3JldHVybiAwIT0oMHwobT0wfGFbKGY9MTA0KyhsfD0wKXwwKT4+Ml0pKSYmKDB8YVtsKzEwOD4+Ml0pPj0oMHxtKT9BPTQ6KDB8KGM9MHxKaihsKSkp''@;'; put 'put ''Pj0wPyhwPTB8YVtmPj4yXSxmPWwrOHwwLHA/KHc9MHxhW2Y+PjJdLGY9cC0oMHxhW2wrMTA4Pj4yXSl8MCxwPXcsZj0ody0obT0wfGFbbCs0Pj4yXSl8MCk8KDB8Zik/cDptKyhmKy0xKXwwKTpmPXA9MHxhW2Y+PjJdLGFbbCsxMDA+PjJdPWYsZj1sKzR8MCxwP2FbKHc9bCsxMDh8MCk+PjJd''@;'; put 'put ''PXArMS0oZj0wfGFbZj4+Ml0pKygwfGFbdz4+Ml0pOmY9MHxhW2Y+PjJdLCgwfGMpIT0oMHxidFsoZj1mKy0xfDApPj4wXSkmJih1ZVtmPj4wXT1jKSk6QT00LDQ9PSgwfEEpJiYoYVtsKzEwMD4+Ml09MCxjPS0xKSwwfGN9ZnVuY3Rpb24gSmoobCl7dmFyIGMsZjtyZXR1cm4gZj1vZSxvZT1v''@;'; put 'put ''ZSsxNnwwLGM9ZixsPTA9PSgwfFp1ZShsfD0wKSkmJjE9PSgwfG1pWzYzJmFbbCszMj4+Ml1dKGwsYywxKSk/MHxidFtjPj4wXTotMSxvZT1mLDB8bH1mdW5jdGlvbiBadWUobCl7dmFyIGM9MCxmPTA7cmV0dXJuIHVlWyhjPTc0KyhsfD0wKXwwKT4+MF09MjU1KyhmPTB8dWVbYz4+MF0pfGYs''@;'; put 'put ''KDB8YVsoYz1sKzIwfDApPj4yXSk+Pj4wPigwfGFbKGY9bCsyOHwwKT4+Ml0pPj4+MCYmbWlbNjMmYVtsKzM2Pj4yXV0obCwwLDApLGFbbCsxNj4+Ml09MCxhW2Y+PjJdPTAsYVtjPj4yXT0wLDQmKGM9MHxhW2w+PjJdKT8oYVtsPj4yXT0zMnxjLGM9LTEpOihhW2wrOD4+Ml09Zj0oMHxhW2wr''@;'; put 'put ''NDQ+PjJdKSsoMHxhW2wrNDg+PjJdKXwwLGFbbCs0Pj4yXT1mLGM9Yzw8Mjc+PjMxKSwwfGN9ZnVuY3Rpb24genVlKGwpe3JldHVybigobHw9MCktNDh8MCk+Pj4wPDEwfDB9ZnVuY3Rpb24gcHYobCl7cmV0dXJuIDEmKCgobHw9MCktNDh8MCk+Pj4wPDEwfDAhPSgwfFRMKGwpKSl8MH1mdW5j''@;'; put 'put ''dGlvbiBUTChsKXtyZXR1cm4oKDMyfChsfD0wKSktOTd8MCk+Pj4wPDI2fDB9ZnVuY3Rpb24gQTAobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtmPTB8dWVbKGx8PTApPj4wXTtlOmRve2lmKGY8PDI0Pj4yNClmb3IobT0yNTUmZjs7KXtpZighKChwPTB8dWVbYz4+MF0pPDwyND4+MjQpfHxm''@;'; put 'put ''PDwyND4+MjQhPXA8PDI0Pj4yNCYmKDB8KG09MHxkcChtKSkpIT0oMHxkcCgyNTUmcCkpKWJyZWFrIGU7aWYoYz1jKzF8MCwhKChmPTB8dWVbKGw9bCsxfDApPj4wXSk8PDI0Pj4yNCkpe2Y9MDticmVha31tPTI1NSZmfWVsc2UgZj0wfXdoaWxlKDApO3JldHVybihtPTB8ZHAoMjU1JmYpKS0o''@;'; put 'put ''MHxkcCgwfGJ0W2M+PjBdKSl8MH1mdW5jdGlvbiBkcChsKXtyZXR1cm4gMHwoMD09KDB8YiQobHw9MCkpP2w6MzJ8bCl9ZnVuY3Rpb24gYiQobCl7cmV0dXJuKChsfD0wKS02NXwwKT4+PjA8MjZ8MH1mdW5jdGlvbiBmZyhsKXtyZXR1cm4gMHxfJChsfD0wLDApfWZ1bmN0aW9uIF8kKGwsYyl7''@;'; put 'put ''bHw9MDt2YXIgdyxiLGY9MCxwPTAsbT0wLEE9MCxrPTA7dz0oKGN8PTApPDwxKS0xfDAsYj1jKy0xfDA7ZTpkb3tpZighKChsKy00MzAwOHwwKT4+PjA8MjIyNzJ8KGwrLTExNzc2fDApPj4+MDwzMDc4NHwobCstMTUzNnwwKT4+PjA8MjU2MHwwPT0oMHxYaihsKSkpKXtpZigoZj0wIT0oMHxj''@;'; put 'put ''KSkmKGwrLTQyNTZ8MCk+Pj4wPDQ2KXtpZigoMHxsKT40MjkzKXN3aXRjaCgwfGwpe2Nhc2UgNDI5NTpjYXNlIDQzMDE6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWw9bCs3MjY0fDA7YnJlYWt9aWYoKGwrLTExNTIwfDApPj4+MDwzOCYoMV5mKSl7bD1sKy03MjY0fDA7YnJlYWt9Zj0wO2Rve2lm''@;'; put 'put ''KCgocD1sLSgwfGFyWzY2MzQ2KyhmPDwyKT4+MV0pfDApLShiJihBPShtPTB8dWVbNjYzNDYrKGY8PDIpKzI+PjBdKTw8MjQ+PjI0KSl8MCk+Pj4wPCgwfGJ0WzY2MzQ2KyhmPDwyKSszPj4wXSk+Pj4wKXtrPTExO2JyZWFrfWY9ZisxfDB9d2hpbGUoNjEhPSgwfGYpKTtpZigxMT09KDB8aykp''@;'; put 'put ''e2lmKG08PDI0Pj4yND09MSl7bD1jK2wtKDEmcCl8MDticmVha31sPSgwfHZyKHcsQSkpK2x8MDticmVha31mPTB8VHRbNjU4NTgrKChtPTEtY3wwKTw8MSk+PjFdO3Q6ZG97aWYoZjw8MTY+PjE2KXtmb3IocD0wOyg2NTUzNSZmfDApIT0oMHxsKTspaWYoISgoZj0wfFR0WzY1ODU4KygocD1w''@;'; put 'put ''KzF8MCk8PDIpKyhtPDwxKT4+MV0pPDwxNj4+MTYpKWJyZWFrIHQ7bD0wfGFyWzY1ODU4KyhwPDwyKSsoYzw8MSk+PjFdO2JyZWFrIGV9fXdoaWxlKDApO3JldHVybiAwfCgobCstNjY2MDArKDQwKmN8MCl8MCk+Pj4wPDQwP2wrLTQwKyg4MCpjfDApfDA6bCl9fXdoaWxlKDApO3JldHVybiAw''@;'; put 'put ''fGx9ZnVuY3Rpb24gWGoobCl7cmV0dXJuIDB8KChsfD0wKT4+PjA8MTMxMDcyPygwfGJ0WzE0OTg1NysoKDB8YnRbMTQ5ODU3KyhsPj4+OCk+PjBdKTw8NXxsPj4+MyYzMSk+PjBdKT4+Pig3JmwpJjE6bD4+PjA8MTk2NjA2JjEpfWZ1bmN0aW9uIGk0KGwsYyxmKXtsfD0wLGN8PTA7dmFyIHA9''@;'; put 'put ''MCxtPTAsQT0wO2lmKGZ8PTApe3A9MHx1ZVtsPj4wXTtlOmRve2lmKHA8PDI0Pj4yNClmb3IoQT1sLGw9cCxwJj0yNTU7Oyl7aWYoISgwIT0oMHwoZj1mKy0xfDApKSYobT0wfHVlW2M+PjBdKTw8MjQ+PjI0IT0wKXx8bDw8MjQ+PjI0IT1tPDwyND4+MjQmJigwfChwPTB8ZHAocCkpKSE9KDB8''@;'; put 'put ''ZHAoMjU1Jm0pKSlicmVhayBlO2lmKGM9YysxfDAsISgocD0wfHVlWyhBPUErMXwwKT4+MF0pPDwyND4+MjQpKXtsPTA7YnJlYWt9bD1wLHAmPTI1NX1lbHNlIGw9MH13aGlsZSgwKTtsPShsPTB8ZHAoMjU1JmwpKS0oMHxkcCgwfGJ0W2M+PjBdKSl8MH1lbHNlIGw9MDtyZXR1cm4gMHxsfWZ1''@;'; put 'put ''bmN0aW9uIEd1ZShsKXtpZigobHw9MCk+Pj4wPj0yNTUpe2lmKCEoKGwrLTU3MzQ0fDApPj4+MDw4MTg1fGw+Pj4wPDgyMzJ8KGwrLTgyMzR8MCk+Pj4wPDQ3MDYyKSlyZXR1cm4gNjU1MzQhPSg2NTUzNCZsfDApJihsKy02NTUzMnwwKT4+PjA8MTA0ODU4MCYxfDA7bD0xfWVsc2UgbD0obCsx''@;'; put 'put ''JjEyNyk+Pj4wPjMyJjE7cmV0dXJuIDB8bH1mdW5jdGlvbiBRQWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIHcsayxtPTAsQT0wLGI9MCxNPTA7az1vZSxvZT1vZSsxNnwwLG09ayxwPTB8YVsodz0wPT0oMHwocHw9MCkpPzE5MDY0MDpwKT4+Ml07ZTpkb3tpZihjKWlmKEE9MD09KDB8''@;'; put 'put ''bCk/bTpsLGYpe2lmKHApbT1mLGI9MTE7ZWxzZXtpZigocD0wfHVlW2M+PjBdKTw8MjQ+PjI0Pi0xKXthW0E+PjJdPTI1NSZwLHA9cDw8MjQ+PjI0IT0wJjE7YnJlYWt9aWYocD0wfHVlW2M+PjBdLG09MD09KDB8YVthWzE1NzkxXT4+Ml0pKXthW0E+PjJdPXA8PDI0Pj4yNCY1NzM0MyxwPTE7''@;'; put 'put ''YnJlYWt9aWYoKHA9KDI1NSZwKS0xOTR8MCk+Pj4wPjUwKXtiPTE3O2JyZWFrfXA9MHxhWzYyMzg0KyhwPDwyKT4+Ml0sKG09ZistMXwwKSYmKGM9YysxfDAsYj0xMSl9dDpkb3tpZigxMT09KDB8Yikpe2lmKCgoTT0oMjU1JihsPTB8dWVbYz4+MF0pKT4+PjMpLTE2fE0rKHA+PjI2KSk+Pj4w''@;'; put 'put ''Pjcpe2I9MTc7YnJlYWsgZX1mb3IoO2M9YysxfDAsbT1tKy0xfDAsISgoMHwocD0oMjU1JmwpLTEyOHxwPDw2KSk+PTApOyl7aWYoIW0pYnJlYWsgdDtpZigoLTY0JihsPTB8dWVbYz4+MF0pKTw8MjQ+PjI0IT0tMTI4KXtiPTE3O2JyZWFrIGV9fWFbdz4+Ml09MCxhW0E+PjJdPXAscD1mLW18''@;'; put 'put ''MDticmVhayBlfX13aGlsZSgwKTthW3c+PjJdPXAscD0tMn1lbHNlIHA9LTI7ZWxzZSBwP2I9MTc6cD0wfXdoaWxlKDApO3JldHVybiAxNz09KDB8YikmJihhW3c+PjJdPTAsYVs0NzY0M109ODQscD0tMSksb2U9aywwfHB9ZnVuY3Rpb24gV3VlKGwsYyl7cmV0dXJuIDB8KGw9KGx8PTApPzB8''@;'; put 'put ''ZnVuY3Rpb24gSkFlKGwsYyxmKXtsfD0wLGN8PTA7ZG97aWYobCl7aWYoYz4+PjA8MTI4KXt1ZVtsPj4wXT1jLGw9MTticmVha31pZighKDB8YVthWzE1NzkxXT4+Ml0pKXtpZig1NzIxNj09KC0xMjgmY3wwKSl7dWVbbD4+MF09YyxsPTE7YnJlYWt9YVs0NzY0M109ODQsbD0tMTticmVha31p''@;'; put 'put ''ZihjPj4+MDwyMDQ4KXt1ZVtsPj4wXT1jPj4+NnwxOTIsdWVbbCsxPj4wXT02MyZjfDEyOCxsPTI7YnJlYWt9aWYoYz4+PjA8NTUyOTZ8NTczNDQ9PSgtODE5MiZjfDApKXt1ZVtsPj4wXT1jPj4+MTJ8MjI0LHVlW2wrMT4+MF09Yz4+PjYmNjN8MTI4LHVlW2wrMj4+MF09NjMmY3wxMjgsbD0z''@;'; put 'put ''O2JyZWFrfWlmKChjKy02NTUzNnwwKT4+PjA8MTA0ODU3Nil7dWVbbD4+MF09Yz4+PjE4fDI0MCx1ZVtsKzE+PjBdPWM+Pj4xMiY2M3wxMjgsdWVbbCsyPj4wXT1jPj4+NiY2M3wxMjgsdWVbbCszPj4wXT02MyZjfDEyOCxsPTQ7YnJlYWt9YVs0NzY0M109ODQsbD0tMTticmVha31sPTF9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDB8bH0obCxjfD0wKTowKX1mdW5jdGlvbiAkMyhsLGMpe3JldHVybiBmdW5jdGlvbiBVdWUobCxjKXtsfD0wO3ZhciBmPTAscD0wO2Y9Y3w9MDtlOmRve2lmKDMmKGZebCkpcD04O2Vsc2V7aWYoMyZmKWRve2lmKHVlW2w+PjBdPWY9MHx1ZVtjPj4wXSwhKGY8PDI0Pj4y''@;'; put 'put ''NCkpYnJlYWsgZTtjPWMrMXwwLGw9bCsxfDB9d2hpbGUoMCE9KDMmY3wwKSk7aWYoISgoLTIxMzkwNjIxNDQmKGY9MHxhW2M+PjJdKV4tMjEzOTA2MjE0NCkmZistMTY4NDMwMDkpKWZvcihwPWw7Yz1jKzR8MCxsPXArNHwwLGFbcD4+Ml09ZiwhKCgtMjEzOTA2MjE0NCYoZj0wfGFbYz4+Ml0p''@;'; put 'put ''Xi0yMTM5MDYyMTQ0KSZmKy0xNjg0MzAwOXwwKTspcD1sO3A9OH19d2hpbGUoMCk7aWYoOD09KDB8cCkmJih1ZVtsPj4wXT1wPTB8dWVbYz4+MF0scDw8MjQ+PjI0KSlkb3t1ZVsobD1sKzF8MCk+PjBdPXA9MHx1ZVsoYz1jKzF8MCk+PjBdfXdoaWxlKHA8PDI0Pj4yNCE9MCl9KGx8PTAsY3w9''@;'; put 'put ''MCksMHxsfWZ1bmN0aW9uIEMkKGwpe3JldHVybiAwfCgobHw9MCk/MCE9KDB8ZnVuY3Rpb24gSnVlKGwsYyl7bHw9MDt2YXIgZj0wO2lmKGN8PTApe2Zvcig7ISgwPT0oMHwoZj0wfGFbbD4+Ml0pKXwoMHxmKT09KDB8YykpOylsPWwrNHwwO2w9MHxmP2w6MH1lbHNlIGw9bCsoKDB8ZnVuY3Rp''@;'; put 'put ''b24gVUFlKGwpe3ZhciBjPTA7Zm9yKGM9bHw9MDswfGFbYz4+Ml07KWM9Yys0fDA7cmV0dXJuIGMtbD4+MnwwfShsKSk8PDIpfDA7cmV0dXJuIDB8bH0oNjM1MDAsbCkpJjE6MCl9ZnVuY3Rpb24gYzgobCxjKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxOmw9MHxDcyhsKTticmVhaztj''@;'; put 'put ''YXNlIDI6bD0wfFhqKGwpO2JyZWFrO2Nhc2UgMzpsPTB8ZnVuY3Rpb24gWHVlKGwpe3JldHVybiAwfGZ1bmN0aW9uIFF1ZShsKXtyZXR1cm4gMSYoMzI9PSgwfChsfD0wKSl8OT09KDB8bCkpfDB9KGx8PTApfShsKTticmVhaztjYXNlIDQ6bD0wfGZ1bmN0aW9uIEt1ZShsKXtyZXR1cm4gMSYo''@;'; put 'put ''KChsfD0wKS02NTUyOXwwKT4+PjA8M3w4MjMyPT0oLTImbHwwKXxsPj4+MDwzMnwobCstMTI3fDApPj4+MDwzMyl8MH0obCk7YnJlYWs7Y2FzZSA1Omw9MHx6dWUobCk7YnJlYWs7Y2FzZSA2Omw9MHxmdW5jdGlvbiAkdWUobCl7cmV0dXJuIDB8KDB8QyQobHw9MCk/MDowIT0oMHxHdWUobCkp''@;'; put 'put ''JjEpfShsKTticmVhaztjYXNlIDc6bD0wfEtqKGwpO2JyZWFrO2Nhc2UgODpsPTB8R3VlKGwpO2JyZWFrO2Nhc2UgOTpsPTB8ZnVuY3Rpb24gV0FlKGwpe3JldHVybiAwfCgobHw9MCk+Pj4wPDEzMTA3Mj8oMHxidFsxNDY0MjMrKCgwfGJ0WzE0NjQyMysobD4+PjgpPj4wXSk8PDV8bD4+PjMm''@;'; put 'put ''MzEpPj4wXSk+Pj4oNyZsKSYxOjApfShsKTticmVhaztjYXNlIDEwOmw9MHxDJChsKTticmVhaztjYXNlIDExOmw9MHwkaihsKTticmVhaztjYXNlIDEyOmw9MHxmdW5jdGlvbiBxdWUobCl7cmV0dXJuIDEmKCgobHw9MCktNDh8MCk+Pj4wPDEwfCgoMzJ8bCktOTd8MCk+Pj4wPDYpfDB9KGwp''@;'; put 'put ''O2JyZWFrO2RlZmF1bHQ6bD0wfXJldHVybiAwfGx9ZnVuY3Rpb24gQ3MobCl7cmV0dXJuIDB8KDB8enVlKGx8PTApPzE6MCE9KDB8WGoobCkpJjEpfWZ1bmN0aW9uIEtqKGwpe3JldHVybigwfGZnKGx8PTApKSE9KDB8bCl8MH1mdW5jdGlvbiAkaihsKXtyZXR1cm4oMHxoZyhsfD0wKSkhPSgw''@;'; put 'put ''fGwpfDB9ZnVuY3Rpb24gaGcobCl7cmV0dXJuIDB8XyQobHw9MCwxKX1mdW5jdGlvbiBJTChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBiLEQsbT0wLEE9MCx3PTAsaz0wLE09MDtEPW9lLG9lPW9lKzEyOHwwLG09RCsxMjR8MCx3PTYzNTg4LGI9KEE9TT1EKSsxMjR8MDtkb3th''@;'; put 'put ''W0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTtyZXR1cm4oYystMXwwKT4+PjA+MjE0NzQ4MzY0Nj9jPyhhWzQ3NjQzXT03NSxjPS0xKToobD1tLGM9MSxrPTQpOms9NCw0PT0oMHxrKSYmKGFbTSs0OD4+Ml09az1jPj4+MD4oaz0tMi1sfDApPj4+MD9r''@;'; put 'put ''OmMsYVsobT1NKzIwfDApPj4yXT1sLGFbTSs0ND4+Ml09bCxjPWwra3wwLGFbKGw9TSsxNnwwKT4+Ml09YyxhW00rMjg+PjJdPWMsYz0wfERMKE0sZixwKSxrJiYodWVbKE09MHxhW20+PjJdKSsoKCgwfE0pPT0oMHxhW2w+PjJdKSk8PDMxPj4zMSk+PjBdPTApKSxvZT1ELDB8Y31mdW5jdGlv''@;'; put 'put ''biBETChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEQsRyxLLHBlLG1lLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTA7bWU9b2Usb2U9b2UrMjI0fDAsRD1tZSsxMjB8MCxLPW1lLHBlPW1lKzEzNnwwLG09NDArKHA9Rz1tZSs4MHwwKXwwO2Rve2FbcD4+Ml09MCxwPXArNHwwfXdo''@;'; put 'put ''aWxlKCgwfHApPCgwfG0pKTtyZXR1cm4gYVtEPj4yXT1hW2Y+PjJdLCgwfHFqKDAsYyxELEssRykpPDA/Zj0tMTooUj0oMHxhW2wrNzY+PjJdKT4tMT8wfGZoKCk6MCxNPTMyJihmPTB8YVtsPj4yXSksKDB8dWVbbCs3ND4+MF0pPDEmJihhW2w+PjJdPS0zMyZmKSwwfGFbKHA9bCs0OHwwKT4+''@;'; put 'put ''Ml0/Zj0wfHFqKGwsYyxELEssRyk6KEE9MHxhWyhtPWwrNDR8MCk+PjJdLGFbbT4+Ml09cGUsYVsodz1sKzI4fDApPj4yXT1wZSxhWyhiPWwrMjB8MCk+PjJdPXBlLGFbcD4+Ml09ODAsYVsoaz1sKzE2fDApPj4yXT1wZSs4MCxmPTB8cWoobCxjLEQsSyxHKSxBJiYobWlbNjMmYVtsKzM2Pj4y''@;'; put 'put ''XV0obCwwLDApLGY9MD09KDB8YVtiPj4yXSk/LTE6ZixhW20+PjJdPUEsYVtwPj4yXT0wLGFbaz4+Ml09MCxhW3c+PjJdPTAsYVtiPj4yXT0wKSksYVtsPj4yXT0ocD0wfGFbbD4+Ml0pfE0sMHxSJiZxMygpLGY9MD09KDMyJnB8MCk/ZjotMSksb2U9bWUsMHxmfWZ1bmN0aW9uIHFqKGwsYyxm''@;'; put 'put ''LHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgTGUsQmUsSGUsZXQscnQsR2UsbHQsTXQsa3QsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxqZT0wO2t0PW9lLG9lPW9lKzY0fDAsR2U9a3QsamU9a3QrMjR8MCxsdD1rdCs4fDAsTXQ9''@;'; put 'put ''a3QrMjB8MCxhWyhydD1rdCsxNnwwKT4+Ml09Y3w9MCxMZT0wIT0oMHxsKSxIZT1CZT1qZSs0MHwwLGplPWplKzM5fDAsZXQ9bHQrNHwwLHc9MCxBPTAsRD0wO2U6Zm9yKDs7KXtkb3tpZigoMHxBKT4tMSl7aWYoKDB8dyk+KDIxNDc0ODM2NDctQXwwKSl7YVs0NzY0M109NzUsQT0tMTticmVh''@;'; put 'put ''a31BPXcrQXwwO2JyZWFrfX13aGlsZSgwKTtpZighKCh3PTB8dWVbYz4+MF0pPDwyND4+MjQpKXtPZT04NjticmVha31iPWM7dDpmb3IoOzspe3N3aXRjaCh3PDwyND4+MjQpe2Nhc2UgMzc6dz1iLE9lPTk7YnJlYWsgdDtjYXNlIDA6dz1iO2JyZWFrIHR9YVtydD4+Ml09YmU9YisxfDAsdz0w''@;'; put 'put ''fHVlW2JlPj4wXSxiPWJlfXQ6ZG97aWYoOT09KDB8T2UpKWZvcig7Oyl7aWYoT2U9MCwzNyE9KDB8dWVbYisxPj4wXSkpYnJlYWsgdDtpZih3PXcrMXwwLGFbcnQ+PjJdPWI9YisyfDAsMzchPSgwfHVlW2I+PjBdKSlicmVhaztPZT05fX13aGlsZSgwKTtpZih3PXctY3wwLExlJiZoYyhsLGMs''@;'; put 'put ''dyksMHx3KWM9YjtlbHNle2lmKCh3PSgwfHVlWyhrPWIrMXwwKT4+MF0pLTQ4fDApPj4+MDwxMD8ocGU9KGJlPTM2PT0oMHx1ZVtiKzI+PjBdKSk/dzotMSxEPWJlPzE6RCxrPWJlP2IrM3wwOmspOnBlPS0xLGFbcnQ+PjJdPWssKGJlPSgodz0wfHVlW2s+PjBdKTw8MjQ+PjI0KS0zMnwwKT4+''@;'; put 'put ''PjA+MzF8MD09KDE8PGJlJjc1OTEzfDApKWI9MDtlbHNle2I9MDtkb3tifD0xPDwodzw8MjQ+PjI0KS0zMixhW3J0Pj4yXT1rPWsrMXwwLGJlPSgodz0wfHVlW2s+PjBdKTw8MjQ+PjI0KS0zMnwwfXdoaWxlKCEoYmU+Pj4wPjMxfDA9PSgxPDxiZSY3NTkxM3wwKSkpfWlmKHc8PDI0Pj4yND09''@;'; put 'put ''NDIpe2lmKCh3PSgwfHVlWyhNPWsrMXwwKT4+MF0pLTQ4fDApPj4+MDwxMCYmMzY9PSgwfHVlW2srMj4+MF0pKWFbbSsodzw8Mik+PjJdPTEwLHc9MHxhW3ArKCgwfHVlW00+PjBdKS00ODw8Myk+PjJdLEQ9MSxrPWsrM3wwO2Vsc2V7aWYoMHxEKXtBPS0xO2JyZWFrfUxlPyh3PTB8YVsoRD0z''@;'; put 'put ''KygwfGFbZj4+Ml0pJi00KT4+Ml0sYVtmPj4yXT1EKzQsRD0wLGs9TSk6KHc9MCxEPTAsaz1NKX1hW3J0Pj4yXT1rLHc9KG1lPSgwfHcpPDApPzAtd3wwOncsbWU9bWU/ODE5MnxiOmJ9ZWxzZXtpZigoMHwodz0wfHRjZShydCkpKTwwKXtBPS0xO2JyZWFrfW1lPWIsaz0wfGFbcnQ+PjJdfWRv''@;'; put 'put ''e2lmKDQ2PT0oMHx1ZVtrPj4wXSkpe2lmKDQyIT0oMHx1ZVtrKzE+PjBdKSl7YVtydD4+Ml09aysxLGI9MHx0Y2UocnQpLGs9MHxhW3J0Pj4yXTticmVha31pZigoYj0oMHx1ZVsoTT1rKzJ8MCk+PjBdKS00OHwwKT4+PjA8MTAmJjM2PT0oMHx1ZVtrKzM+PjBdKSl7YVttKyhiPDwyKT4+Ml09''@;'; put 'put ''MTAsYj0wfGFbcCsoKDB8dWVbTT4+MF0pLTQ4PDwzKT4+Ml0sYVtydD4+Ml09az1rKzR8MDticmVha31pZigwfEQpe0E9LTE7YnJlYWsgZX1MZT8oYj0wfGFbKGJlPTMrKDB8YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPWJlKzQpOmI9MCxhW3J0Pj4yXT1NLGs9TX1lbHNlIGI9LTF9d2hpbGUo''@;'; put 'put ''MCk7Zm9yKEs9MDs7KXtpZigoKDB8dWVbaz4+MF0pLTY1fDApPj4+MD41Nyl7QT0tMTticmVhayBlfWlmKGFbcnQ+PjJdPWJlPWsrMXwwLCEoKChSPTI1NSYoTT0wfHVlWygwfHVlW2s+PjBdKS02NSsoMTUyOTQ0Kyg1OCpLfDApKT4+MF0pKS0xfDApPj4+MDw4KSlicmVhaztLPVIsaz1iZX1p''@;'; put 'put ''ZighKE08PDI0Pj4yNCkpe0E9LTE7YnJlYWt9Rz0oMHxwZSk+LTE7ZG97aWYoTTw8MjQ+PjI0PT0xOSl7aWYoRyl7QT0tMTticmVhayBlfU9lPTQ4fWVsc2V7aWYoRyl7YVttKyhwZTw8Mik+PjJdPVIscGU9MHxhWzQrKEc9cCsocGU8PDMpfDApPj4yXSxhWyhPZT1HZSk+PjJdPWFbRz4+Ml0s''@;'; put 'put ''YVtPZSs0Pj4yXT1wZSxPZT00ODticmVha31pZighTGUpe0E9MDticmVhayBlfW5jZShHZSxSLGYpfX13aGlsZSgwKTtpZig0OCE9KDB8T2UpfHwoT2U9MCxMZSkpe2s9MCE9KDB8SykmMz09KDE1JihrPTB8dWVbaz4+MF0pfDApPy0zMyZrOmsscGU9LTY1NTM3Jm1lLG1lPTA9PSg4MTkyJm1l''@;'; put 'put ''fDApP21lOnBlO3Q6ZG97c3dpdGNoKDB8ayl7Y2FzZSAxMTA6c3dpdGNoKCgyNTUmSyk8PDI0Pj4yNCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDY6YVthW0dlPj4yXT4+Ml09QSx3PTAsYz1iZTtjb250aW51ZSBlO2Nhc2UgMjpjYXNlIDc6YVsodz0wfGFbR2U+PjJdKT4+Ml09QSxhW3crND4+Ml09''@;'; put 'put ''KCgwfEEpPDApPDwzMT4+MzEsdz0wLGM9YmU7Y29udGludWUgZTtjYXNlIDM6VHRbYVtHZT4+Ml0+PjFdPUEsdz0wLGM9YmU7Y29udGludWUgZTtjYXNlIDQ6dWVbYVtHZT4+Ml0+PjBdPUEsdz0wLGM9YmU7Y29udGludWUgZTtkZWZhdWx0Onc9MCxjPWJlO2NvbnRpbnVlIGV9Y2FzZSAxMTI6''@;'; put 'put ''az0xMjAsYj1iPj4+MD44P2I6OCxjPTh8bWUsT2U9NjA7YnJlYWs7Y2FzZSA4ODpjYXNlIDEyMDpjPW1lLE9lPTYwO2JyZWFrO2Nhc2UgMTExOk09MCxSPTE1MzQwOCxiPTA9PSg4Jm1lfDApfCgwfGIpPigwfChLPUhlLShHPTB8cUFlKGM9MHxhWyhrPUdlKT4+Ml0saz0wfGFbays0Pj4yXSxC''@;'; put 'put ''ZSkpfDApKT9iOksrMXwwLEs9bWUsT2U9NjY7YnJlYWs7Y2FzZSAxMDU6Y2FzZSAxMDA6aWYoYz0wfGFbKGs9R2UpPj4yXSwoMHwoaz0wfGFbays0Pj4yXSkpPDApe2M9MHxncCgwLDAsMHxjLDB8ayksaz1PbixhWyhNPUdlKT4+Ml09YyxhW00rND4+Ml09ayxNPTEsUj0xNTM0MDgsT2U9NjU7''@;'; put 'put ''YnJlYWsgdH1NPTAhPSgyMDQ5Jm1lfDApJjEsUj0wPT0oMjA0OCZtZXwwKT8wPT0oMSZtZXwwKT8xNTM0MDg6MTUzNDEwOjE1MzQwOSxPZT02NTticmVhayB0O2Nhc2UgMTE3Ok09MCxSPTE1MzQwOCxjPTB8YVsoaz1HZSk+PjJdLGs9MHxhW2srND4+Ml0sT2U9NjU7YnJlYWs7Y2FzZSA5OTp1''@;'; put 'put ''ZVtqZT4+MF09YVtHZT4+Ml0sYz1qZSxNPTAsUj0xNTM0MDgsRz1CZSxrPTEsYj1wZTticmVhaztjYXNlIDEwOTprPTB8TUwoMHxhWzQ3NjQzXSksT2U9NzA7YnJlYWs7Y2FzZSAxMTU6az0wfChrPTB8YVtHZT4+Ml0pP2s6MTUzNDE4LE9lPTcwO2JyZWFrO2Nhc2UgNjc6YVtsdD4+Ml09YVtH''@;'; put 'put ''ZT4+Ml0sYVtldD4+Ml09MCxhW0dlPj4yXT1sdCxHPS0xLGs9bHQsT2U9NzQ7YnJlYWs7Y2FzZSA4MzpjPTB8YVtHZT4+Ml0sYj8oRz1iLGs9YyxPZT03NCk6KExjKGwsMzIsdywwLG1lKSxjPTAsT2U9ODMpO2JyZWFrO2Nhc2UgNjU6Y2FzZSA3MTpjYXNlIDcwOmNhc2UgNjk6Y2FzZSA5Nzpj''@;'; put 'put ''YXNlIDEwMzpjYXNlIDEwMjpjYXNlIDEwMTp3PTB8cmNlKGwsK19bR2U+PjNdLHcsYixtZSxrKSxjPWJlO2NvbnRpbnVlIGU7ZGVmYXVsdDpNPTAsUj0xNTM0MDgsRz1CZSxrPWIsYj1tZX19d2hpbGUoMCk7dDpkb3tpZig2MD09KDB8T2UpKW1lPUdlLHBlPTB8YVttZT4+Ml0sbWU9MHxhW21l''@;'; put 'put ''KzQ+PjJdLEc9MHwkQWUocGUsbWUsQmUsMzImayksUj0wPT0oOCZjfDApfDA9PSgwfHBlKSYwPT0oMHxtZSksTT1SPzA6MixSPVI/MTUzNDA4OjE1MzQwOCsoaz4+NCl8MCxLPWMsYz1wZSxrPW1lLE9lPTY2O2Vsc2UgaWYoNjU9PSgwfE9lKSlHPTB8ZFMoYyxrLEJlKSxLPW1lLE9lPTY2O2Vs''@;'; put 'put ''c2UgaWYoNzA9PSgwfE9lKSlPZT0wLG1lPTB8c3coaywwLGIpLEs9MD09KDB8bWUpLGM9ayxNPTAsUj0xNTM0MDgsRz1LP2srYnwwOm1lLGs9Sz9iOm1lLWt8MCxiPXBlO2Vsc2UgaWYoNzQ9PSgwfE9lKSl7Zm9yKE9lPTAsUj1rLGM9MCxiPTA7KE09MHxhW1I+PjJdKSYmISgoMHwoYj0wfFd1''@;'; put 'put ''ZShNdCxNKSkpPDB8Yj4+PjA+KEctY3wwKT4+PjApJiZHPj4+MD4oYz1iK2N8MCk+Pj4wOylSPVIrNHwwO2lmKCgwfGIpPDApe0E9LTE7YnJlYWsgZX1pZihMYyhsLDMyLHcsYyxtZSksYylmb3IoTT0wOzspe2lmKCEoYj0wfGFbaz4+Ml0pKXtPZT04MzticmVhayB0fWlmKCgwfChNPShiPTB8''@;'; put 'put ''V3VlKE10LGIpKStNfDApKT4oMHxjKSl7T2U9ODM7YnJlYWsgdH1pZihoYyhsLE10LGIpLE0+Pj4wPj1jPj4+MCl7T2U9ODM7YnJlYWt9az1rKzR8MH1lbHNlIGM9MCxPZT04M319d2hpbGUoMCk7aWYoNjY9PSgwfE9lKSlPZT0wLG1lPTAhPSgwfGIpfChrPTAhPSgwfGMpfDAhPSgwfGspKSxr''@;'; put 'put ''PUhlLUcrKDEmKDFeaykpfDAsYz1tZT9HOkJlLEc9QmUsaz1tZT8oMHxiKT4oMHxrKT9iOms6YixiPSgwfGIpPi0xPy02NTUzNyZLOks7ZWxzZSBpZig4Mz09KDB8T2UpKXtPZT0wLExjKGwsMzIsdyxjLDgxOTJebWUpLHc9KDB8dyk+KDB8Yyk/dzpjLGM9YmU7Y29udGludWV9TGMobCwzMix3''@;'; put 'put ''PSgwfHcpPCgwfChtZT0oSz0oMHxrKTwoMHwocGU9Ry1jfDApKT9wZTprKStNfDApKT9tZTp3LG1lLGIpLGhjKGwsUixNKSxMYyhsLDQ4LHcsbWUsNjU1MzZeYiksTGMobCw0OCxLLHBlLDApLGhjKGwsYyxwZSksTGMobCwzMix3LG1lLDgxOTJeYiksYz1iZX1lbHNlIHc9MCxjPWJlfX1lOmRv''@;'; put 'put ''e2lmKDg2PT0oMHxPZSkmJiFsKWlmKEQpe2ZvcihBPTE7Yz0wfGFbbSsoQTw8Mik+PjJdOyl7aWYobmNlKHArKEE8PDMpfDAsYyxmKSxjPUErMXwwLCEoKDB8QSk8OSkpe0E9YzticmVha31BPWN9aWYoKDB8QSk8MTApZm9yKDs7KXtpZigwfGFbbSsoQTw8Mik+PjJdKXtBPS0xO2JyZWFrIGV9''@;'; put 'put ''aWYoISgoMHxBKTw5KSl7QT0xO2JyZWFrfUE9QSsxfDB9ZWxzZSBBPTF9ZWxzZSBBPTB9d2hpbGUoMCk7cmV0dXJuIG9lPWt0LDB8QX1mdW5jdGlvbiBmaChsKXtyZXR1cm4gMH1mdW5jdGlvbiBxMyhsKXt9ZnVuY3Rpb24gaGMobCxjLGYpezMyJmFbKGx8PTApPj4yXXx8ZVooY3w9MCxmfD0w''@;'; put 'put ''LGwpfWZ1bmN0aW9uIHRjZShsKXt2YXIgYz0wLGY9MCxwPTA7aWYoKHA9KDB8dWVbKGY9MHxhWyhsfD0wKT4+Ml0pPj4wXSktNDh8MCk+Pj4wPDEwKXtjPTA7ZG97Yz1wKygxMCpjfDApfDAsYVtsPj4yXT1mPWYrMXwwLHA9KDB8dWVbZj4+MF0pLTQ4fDB9d2hpbGUocD4+PjA8MTApfWVsc2Ug''@;'; put 'put ''Yz0wO3JldHVybiAwfGN9ZnVuY3Rpb24gbmNlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTA7ZTpkb3tpZihjPj4+MDw9MjApc3dpdGNoKDB8Yyl7Y2FzZSA5OmM9MHxhWyhwPTMrKDB8YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPXArNCxhW2w+PjJdPWM7YnJlYWsgZTtj''@;'; put 'put ''YXNlIDEwOmM9MHxhWyhwPTMrKDB8YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPXArNCxhWyhwPWwpPj4yXT1jLGFbcCs0Pj4yXT0oKDB8Yyk8MCk8PDMxPj4zMTticmVhayBlO2Nhc2UgMTE6Yz0wfGFbKHA9MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+Ml09cCs0LGFbKHA9bCk+PjJdPWMs''@;'; put 'put ''YVtwKzQ+PjJdPTA7YnJlYWsgZTtjYXNlIDEyOm09MHxhWyhjPXA9NysoMHxhW2Y+PjJdKSYtOCk+PjJdLGM9MHxhW2MrND4+Ml0sYVtmPj4yXT1wKzgsYVsocD1sKT4+Ml09bSxhW3ArND4+Ml09YzticmVhayBlO2Nhc2UgMTM6cD0wfGFbKG09MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+''@;'; put 'put ''Ml09bSs0LGFbKG09bCk+PjJdPXA9KDY1NTM1JnApPDwxNj4+MTYsYVttKzQ+PjJdPSgoMHxwKTwwKTw8MzE+PjMxO2JyZWFrIGU7Y2FzZSAxNDpwPTB8YVsobT0zKygwfGFbZj4+Ml0pJi00KT4+Ml0sYVtmPj4yXT1tKzQsYVsobT1sKT4+Ml09NjU1MzUmcCxhW20rND4+Ml09MDticmVhayBl''@;'; put 'put ''O2Nhc2UgMTU6cD0wfGFbKG09MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+Ml09bSs0LGFbKG09bCk+PjJdPXA9KDI1NSZwKTw8MjQ+PjI0LGFbbSs0Pj4yXT0oKDB8cCk8MCk8PDMxPj4zMTticmVhayBlO2Nhc2UgMTY6cD0wfGFbKG09MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+Ml09''@;'; put 'put ''bSs0LGFbKG09bCk+PjJdPTI1NSZwLGFbbSs0Pj4yXT0wO2JyZWFrIGU7Y2FzZSAxNzpjYXNlIDE4OkE9K19bKG09NysoMHxhW2Y+PjJdKSYtOCk+PjNdLGFbZj4+Ml09bSs4LF9bbD4+M109QTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCl9ZnVuY3Rpb24gJEFlKGwsYyxmLHAp''@;'; put 'put ''e2lmKGZ8PTAscHw9MCwhKDA9PSgwfChsfD0wKSkmMD09KDB8KGN8PTApKSkpZG97dWVbKGY9ZistMXwwKT4+MF09MHxidFsxNTM0NTYrKDE1JmwpPj4wXXxwLGw9MHxadSgwfGwsMHxjLDQpLGM9T259d2hpbGUoISgwPT0oMHxsKSYwPT0oMHxjKSkpO3JldHVybiAwfGZ9ZnVuY3Rpb24gcUFl''@;'; put 'put ''KGwsYyxmKXtpZihmfD0wLCEoMD09KDB8KGx8PTApKSYwPT0oMHwoY3w9MCkpKSlkb3t1ZVsoZj1mKy0xfDApPj4wXT03Jmx8NDgsbD0wfFp1KDB8bCwwfGMsMyksYz1Pbn13aGlsZSghKDA9PSgwfGwpJjA9PSgwfGMpKSk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBkUyhsLGMsZil7Znw9MDt2YXIg''@;'; put 'put ''cD0wO2lmKChjfD0wKT4+PjA+MHwwPT0oMHxjKSYobHw9MCk+Pj4wPjQyOTQ5NjcyOTUpe2Zvcig7cD0wfHZTKDB8bCwwfGMsMTAsMCksdWVbKGY9ZistMXwwKT4+MF09MjU1JnB8NDgscD1sLGw9MHxkdygwfGwsMHxjLDEwLDApLGM+Pj4wPjl8OT09KDB8YykmcD4+PjA+NDI5NDk2NzI5NTsp''@;'; put 'put ''Yz1PbjtjPWx9ZWxzZSBjPWw7aWYoYylmb3IoO3VlWyhmPWYrLTF8MCk+PjBdPTQ4fChjPj4+MCklMTAsIShjPj4+MDwxMCk7KWM9KGM+Pj4wKS8xMHwwO3JldHVybiAwfGZ9ZnVuY3Rpb24gTGMobCxjLGYscCxtKXt2YXIgQSx3O2lmKGx8PTAsY3w9MCx3PW9lLG9lPW9lKzI1NnwwLEE9dywo''@;'; put 'put ''MHwoZnw9MCkpPigwfChwfD0wKSkmMD09KDczNzI4JihtfD0wKXwwKSl7aWYocjIoMHxBLDB8YywwfCgobT1mLXB8MCk+Pj4wPDI1Nj9tOjI1NikpLG0+Pj4wPjI1NSl7Yz1mLXB8MDtkb3toYyhsLEEsMjU2KSxtPW0rLTI1NnwwfXdoaWxlKG0+Pj4wPjI1NSk7bT0yNTUmY31oYyhsLEEsbSl9''@;'; put 'put ''b2U9d31mdW5jdGlvbiByY2UobCxjLGYscCxtLEEpe2x8PTAsYz0rYyxmfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBhdCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTAs''@;'; put 'put ''a3Q9MDthdD1vZSxvZT1vZSs1NjB8MCxrPWF0Kzh8MCxNdD1rdD1hdCs1MjR8MCxNPWF0KzUxMnwwLGFbKGJlPWF0KT4+Ml09MCxsdD1NKzEyfDAsayQoYyksKDB8T24pPDA/KGM9LWMscnQ9MSxldD0xNTM0MjUpOihydD0wIT0oMjA0OSZtfDApJjEsZXQ9MD09KDIwNDgmbXwwKT8wPT0oMSZt''@;'; put 'put ''fDApPzE1MzQyNjoxNTM0MzE6MTUzNDI4KSxrJChjKTtkb3tpZighMCYyMTQ2NDM1MDcyPT0oMjE0NjQzNTA3MiZPbnwwKSlrdD0wIT0oMzImQXwwKSxMYyhsLDMyLGYsdz1ydCszfDAsLTY1NTM3Jm0pLGhjKGwsZXQscnQpLGhjKGwsYyE9Y3whMT9rdD8xNTM1OTM6MTUzNDUyOmt0PzE1MzQ0''@;'; put 'put ''NDoxNTM0NDgsMyksTGMobCwzMixmLHcsODE5Ml5tKTtlbHNle2lmKCh3PTAhPShLPTIqK0dBZShjLGJlKSkpJiYoYVtiZT4+Ml09KDB8YVtiZT4+Ml0pLTEpLDk3PT0oMHwoTGU9MzJ8QSkpKXtwZT0wPT0oMHwoUj0zMiZBKSk/ZXQ6ZXQrOXwwLEc9MnxydCx3PTEyLXB8MDtkb3tpZighKHA+''@;'; put 'put ''Pj4wPjExfDA9PSgwfHcpKSl7Yz04O2Rve3c9dystMXwwLGMqPTE2fXdoaWxlKDAhPSgwfHcpKTtpZig0NT09KDB8dWVbcGU+PjBdKSl7Yz0tKGMrKC1LLWMpKTticmVha31jPUsrYy1jO2JyZWFrfWM9S313aGlsZSgwKTsoMHwodz0wfGRTKHc9KDB8KGI9MHxhW2JlPj4yXSkpPDA/MC1ifDA6''@;'; put 'put ''YiwoKDB8dyk8MCk8PDMxPj4zMSxsdCkpKT09KDB8bHQpJiYodWVbKHc9TSsxMXwwKT4+MF09NDgpLHVlW3crLTE+PjBdPTQzKyhiPj4zMSYyKSx1ZVsoRD13Ky0yfDApPj4wXT1BKzE1LGs9KDB8cCk8MSxNPTA9PSg4Jm18MCksdz1rdDtkb3tiPXcrMXwwLHVlW3c+PjBdPVJ8YnRbMTUzNDU2''@;'; put 'put ''KyhHZT1+fmMpPj4wXSxjPTE2KihjLSsoMHxHZSkpLDEhPShiLU10fDApfHxNJmsmMD09Yz93PWI6KHVlW2I+PjBdPTQ2LHc9dysyfDApfXdoaWxlKDAhPWMpOzAhPSgwfHApJiYoLTItTXQrd3wwKTwoMHxwKT8oYj13LU10fDAsdz1wKzJ8MCk6Yj13PXctTXR8MCxMYyhsLDMyLGYsTXQ9KGx0''@;'; put 'put ''PWx0LUR8MCkrRyt3fDAsbSksaGMobCxwZSxHKSxMYyhsLDQ4LGYsTXQsNjU1MzZebSksaGMobCxrdCxiKSxMYyhsLDQ4LHctYnwwLDAsMCksaGMobCxELGx0KSxMYyhsLDMyLGYsTXQsODE5Ml5tKSx3PU10O2JyZWFrfWI9KDB8cCk8MD82OnAsdz8oYVtiZT4+Ml09dz0oMHxhW2JlPj4yXSkt''@;'; put 'put ''Mjh8MCxjPTI2ODQzNTQ1NipLKTooYz1LLHc9MHxhW2JlPj4yXSksaz1HZT0oMHx3KTwwP2s6aysyODh8MDtkb3thW2s+PjJdPUhlPX5+Yz4+PjAsaz1rKzR8MCxjPTFlOSooYy0rKEhlPj4+MCkpfXdoaWxlKDAhPWMpO2lmKCgwfHcpPjApZm9yKE09R2UsUj1rOzspe2lmKEQ9KDB8dyk8Mjk/''@;'; put 'put ''dzoyOSwodz1SKy00fDApPj4+MD49TT4+PjApe2s9MDtkb3tPZT0wfHZTKDB8KEJlPTB8SGwoMHwoQmU9MHxjcygwfGFbdz4+Ml0sMCwwfEQpKSwwfE9uLDB8aywwKSksMHwoSGU9T24pLDFlOSwwKSxhW3c+PjJdPU9lLGs9MHxkdygwfEJlLDB8SGUsMWU5LDApLHc9dystNHwwfXdoaWxlKHc+''@;'; put 'put ''Pj4wPj1NPj4+MCk7ayYmKGFbKE09TSstNHwwKT4+Ml09ayl9Zm9yKGs9UjshKGs+Pj4wPD1NPj4+MHx8MHxhWyh3PWsrLTR8MCk+PjJdKTspaz13O2lmKGFbYmU+PjJdPXc9KDB8YVtiZT4+Ml0pLUR8MCwhKCgwfHcpPjApKWJyZWFrO1I9a31lbHNlIE09R2U7aWYoKDB8dyk8MCl7cD0xKygo''@;'; put 'put ''YisyNXwwKS85fDApfDAsbWU9MTAyPT0oMHxMZSk7ZG97aWYocGU9KDB8KHBlPTAtd3wwKSk8OT9wZTo5LE0+Pj4wPGs+Pj4wKXtEPSgxPDxwZSktMXwwLFI9MWU5Pj4+cGUsRz0wLHc9TTtkb3thW3c+PjJdPSgoSGU9MHxhW3c+PjJdKT4+PnBlKStHLEc9MHx2cihIZSZELFIpLHc9dys0fDB9''@;'; put 'put ''d2hpbGUodz4+PjA8az4+PjApO3c9MD09KDB8YVtNPj4yXSk/TSs0fDA6TSxHPyhhW2s+PjJdPUcsTT13LHc9ays0fDApOihNPXcsdz1rKX1lbHNlIE09MD09KDB8YVtNPj4yXSk/TSs0fDA6TSx3PWs7az0ody0oaz1tZT9HZTpNKT4+MnwwKT4oMHxwKT9rKyhwPDwyKXwwOncsYVtiZT4+Ml09''@;'; put 'put ''dz0oMHxhW2JlPj4yXSkrcGV8MH13aGlsZSgoMHx3KTwwKTt3PU0scD1rfWVsc2Ugdz1NLHA9aztpZihIZT1HZSx3Pj4+MDxwPj4+MCl7aWYoaz05KihIZS13Pj4yKXwwLChEPTB8YVt3Pj4yXSk+Pj4wPj0xMCl7TT0xMDtkb3tNPTEwKk18MCxrPWsrMXwwfXdoaWxlKEQ+Pj4wPj1NPj4+MCl9''@;'; put 'put ''fWVsc2Ugaz0wO2lmKCgwfChNPWItKDEwMiE9KDB8TGUpP2s6MCkrKCgoT2U9MCE9KDB8YikpJihtZT0xMDM9PSgwfExlKSkpPDwzMT4+MzEpfDApKTwoKDkqKHAtSGU+PjIpfDApLTl8MCkpe2lmKHBlPUdlKzQrKCgoMHwoTT1NKzkyMTZ8MCkpLzl8MCktMTAyNDw8Mil8MCwoMHwoTT0oMHxN''@;'; put 'put ''KSU5fDApKTw4KWZvcihEPTEwO0Q9MTAqRHwwLCgwfE0pPDc7KU09TSsxfDA7ZWxzZSBEPTEwO2lmKChNPShwZSs0fDApPT0oMHxwKSkmMD09KDB8KEc9KChSPTB8YVtwZT4+Ml0pPj4+MCklKEQ+Pj4wKXwwKSkpTT1wZTtlbHNlIGlmKEs9MD09KDEmKChSPj4+MCkvKEQ+Pj4wKXwwKXwwKT85''@;'; put 'put ''MDA3MTk5MjU0NzQwOTkyOjkwMDcxOTkyNTQ3NDA5OTQsYz1HPj4+MDwoQmU9KDB8RCkvMnwwKT4+PjA/LjU6TSYoMHxHKT09KDB8QmUpPzE6MS41LHJ0JiYoYz0oQmU9NDU9PSgwfHVlW2V0Pj4wXSkpPy1jOmMsSz1CZT8tSzpLKSxhW3BlPj4yXT1NPVItR3wwLEsrYyE9Syl7aWYoYVtwZT4+''@;'; put 'put ''Ml09QmU9TStEfDAsQmU+Pj4wPjk5OTk5OTk5OSlmb3Ioaz1wZTtNPWsrLTR8MCxhW2s+PjJdPTAsTT4+PjA8dz4+PjAmJihhWyh3PXcrLTR8MCk+PjJdPTApLGFbTT4+Ml09QmU9MSsoMHxhW00+PjJdKXwwLEJlPj4+MD45OTk5OTk5OTk7KWs9TTtlbHNlIE09cGU7aWYoaz05KihIZS13Pj4y''@;'; put 'put ''KXwwLChSPTB8YVt3Pj4yXSk+Pj4wPj0xMCl7RD0xMDtkb3tEPTEwKkR8MCxrPWsrMXwwfXdoaWxlKFI+Pj4wPj1EPj4+MCl9fWVsc2UgTT1wZTtNPXA+Pj4wPihNPU0rNHwwKT4+PjA/TTpwLEJlPXd9ZWxzZSBNPXAsQmU9dztmb3IoTGU9TTs7KXtpZihMZT4+PjA8PUJlPj4+MCl7YmU9MDti''@;'; put 'put ''cmVha31pZigwfGFbKHc9TGUrLTR8MCk+PjJdKXtiZT0xO2JyZWFrfUxlPXd9cD0wLWt8MDtkb3tpZihtZSl7aWYoKDB8KHc9YisoMSYoMV5PZSkpfDApKT4oMHxrKSYoMHxrKT4tNT8oRD1BKy0xfDAsYj13Ky0xLWt8MCk6KEQ9QSstMnwwLGI9dystMXwwKSwhKHc9OCZtKSl7aWYoYmUmJjAh''@;'; put 'put ''PSgwfChqZT0wfGFbTGUrLTQ+PjJdKSkpaWYoKGplPj4+MCklMTB8MClNPTA7ZWxzZXtNPTAsdz0xMDtkb3t3PTEwKnd8MCxNPU0rMXwwfXdoaWxlKCEoMHwoamU+Pj4wKSUodz4+PjApKSl9ZWxzZSBNPTk7aWYodz0oOSooTGUtSGU+PjIpfDApLTl8MCwxMDI9PSgzMnxEKSl7Yj0oMHxiKTwo''@;'; put 'put ''MHwocGU9KDB8KHBlPXctTXwwKSk+MD9wZTowKSk/YjpwZSxwZT0wO2JyZWFrfWI9KDB8Yik8KDB8KHBlPSgwfChwZT13K2stTXwwKSk+MD9wZTowKSk/YjpwZSxwZT0wO2JyZWFrfXBlPXd9ZWxzZSBEPUEscGU9OCZtfXdoaWxlKDApO2lmKFI9MCE9KDB8KG1lPWJ8cGUpKSYxLEc9MTAyPT0o''@;'; put 'put ''MzJ8RCkpT2U9MCx3PSgwfGspPjA/azowO2Vsc2V7aWYoKChNPWx0KS0odz0wfGRTKHc9KDB8ayk8MD9wOmssKCgwfHcpPDApPDwzMT4+MzEsbHQpKXwwKTwyKWRve3VlWyh3PXcrLTF8MCk+PjBdPTQ4fXdoaWxlKChNLXd8MCk8Mik7dWVbdystMT4+MF09NDMrKGs+PjMxJjIpLHVlWyh3PXcr''@;'; put 'put ''LTJ8MCk+PjBdPUQsT2U9dyx3PU0td3wwfWlmKExjKGwsMzIsZix3PXJ0KzErYitSK3d8MCxtKSxoYyhsLGV0LHJ0KSxMYyhsLDQ4LGYsdyw2NTUzNl5tKSxHKXtSPXBlPWt0Kzl8MCxHPWt0Kzh8MCxNPUQ9QmU+Pj4wPkdlPj4+MD9HZTpCZTtkb3tpZihrPTB8ZFMoMHxhW00+PjJdLDAscGUp''@;'; put 'put ''LCgwfE0pPT0oMHxEKSkoMHxrKT09KDB8cGUpJiYodWVbRz4+MF09NDgsaz1HKTtlbHNlIGlmKGs+Pj4wPmt0Pj4+MCl7cjIoMHxrdCw0OCxrLU10fDApO2Rve2s9aystMXwwfXdoaWxlKGs+Pj4wPmt0Pj4+MCl9aGMobCxrLFIta3wwKSxNPU0rNHwwfXdoaWxlKE0+Pj4wPD1HZT4+PjApO2lm''@;'; put 'put ''KDB8bWUmJmhjKGwsMTUzNDcyLDEpLE0+Pj4wPExlPj4+MCYoMHxiKT4wKWZvcig7Oyl7aWYoKGs9MHxkUygwfGFbTT4+Ml0sMCxwZSkpPj4+MD5rdD4+PjApe3IyKDB8a3QsNDgsay1NdHwwKTtkb3trPWsrLTF8MH13aGlsZShrPj4+MD5rdD4+PjApfWlmKGhjKGwsaywoMHxiKTw5P2I6OSks''@;'; put 'put ''az1iKy05fDAsISgoTT1NKzR8MCk+Pj4wPExlPj4+MCYoMHxiKT45KSl7Yj1rO2JyZWFrfWI9a31MYyhsLDQ4LGIrOXwwLDksMCl9ZWxzZXtpZihtZT1iZT9MZTpCZSs0fDAsKDB8Yik+LTEpe3BlPTA9PSgwfHBlKSxwPWJlPWt0Kzl8MCxSPTAtTXR8MCxHPWt0Kzh8MCxEPUJlO2RveygwfChr''@;'; put 'put ''PTB8ZFMoMHxhW0Q+PjJdLDAsYmUpKSk9PSgwfGJlKSYmKHVlW0c+PjBdPTQ4LGs9Ryk7ZG97aWYoKDB8RCk9PSgwfEJlKSl7aWYoTT1rKzF8MCxoYyhsLGssMSkscGUmKDB8Yik8MSl7az1NO2JyZWFrfWhjKGwsMTUzNDcyLDEpLGs9TX1lbHNle2lmKGs+Pj4wPD1rdD4+PjApYnJlYWs7cjIo''@;'; put 'put ''MHxrdCw0OCxrK1J8MCk7ZG97az1rKy0xfDB9d2hpbGUoaz4+PjA+a3Q+Pj4wKX19d2hpbGUoMCk7aGMobCxrLCgwfGIpPigwfChNdD1wLWt8MCkpP010OmIpLGI9Yi1NdHwwLEQ9RCs0fDB9d2hpbGUoRD4+PjA8bWU+Pj4wJigwfGIpPi0xKX1MYyhsLDQ4LGIrMTh8MCwxOCwwKSxoYyhsLE9l''@;'; put 'put ''LGx0LU9lfDApfUxjKGwsMzIsZix3LDgxOTJebSl9fXdoaWxlKDApO3JldHVybiBvZT1hdCwwfCgoMHx3KTwoMHxmKT9mOncpfWZ1bmN0aW9uIGskKGwpe3JldHVybiBfW2tpPj4zXT1sPStsLE9uPTB8YVtraSs0Pj4yXSwwfGFba2k+PjJdfWZ1bmN0aW9uIGVaKGwsYyxmKXtsfD0wLGN8PTA7''@;'; put 'put ''dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTA7KG09MHxhWyhwPTE2KyhmfD0wKXwwKT4+Ml0pP0E9NTowfFMkKGYpP3A9MDoobT0wfGFbcD4+Ml0sQT01KTtlOmRve2lmKDU9PSgwfEEpKXtpZihwPXc9MHxhWyhiPWYrMjB8MCk+PjJdLChtLXd8MCk+Pj4wPGM+Pj4wKXtwPTB8bWlbNjMmYVtmKzM2''@;'; put 'put ''Pj4yXV0oZixsLGMpO2JyZWFrfXQ6ZG97aWYoKDB8dWVbZis3NT4+MF0pPi0xKXtmb3Iodz1jOzspe2lmKCF3KXtBPTAsbT1sO2JyZWFrIHR9aWYoMTA9PSgwfHVlW2wrKG09dystMXwwKT4+MF0pKWJyZWFrO3c9bX1pZigocD0wfG1pWzYzJmFbZiszNj4+Ml1dKGYsbCx3KSk+Pj4wPHc+Pj4w''@;'; put 'put ''KWJyZWFrIGU7QT13LG09bCt3fDAsYz1jLXd8MCxwPTB8YVtiPj4yXX1lbHNlIEE9MCxtPWx9d2hpbGUoMCk7RG8oMHxwLDB8bSwwfGMpLGFbYj4+Ml09KDB8YVtiPj4yXSkrYyxwPUErY3wwfX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIFMkKGwpe3ZhciBjPTAsZj0wO3JldHVybiB1''@;'; put 'put ''ZVsoYz03NCsobHw9MCl8MCk+PjBdPTI1NSsoZj0wfHVlW2M+PjBdKXxmLDgmKGM9MHxhW2w+PjJdKT8oYVtsPj4yXT0zMnxjLGw9LTEpOihhW2wrOD4+Ml09MCxhW2wrND4+Ml09MCxhW2wrMjg+PjJdPWY9MHxhW2wrNDQ+PjJdLGFbbCsyMD4+Ml09ZixhW2wrMTY+PjJdPWYrKDB8YVtsKzQ4''@;'; put 'put ''Pj4yXSksbD0wKSwwfGx9ZnVuY3Rpb24gb2NlKGwpe3ZhciBwLGM9MCxmPTAsbT0wO2ZvcihwPTB8dWVbKGx8PTApPj4wXSxjPTEsZj0xNTM0NzQsbT05NztwPDwyND4+MjQhPW08PDI0Pj4yNHx8MCE9KDB8WmkobCxmKSk7KXtpZighKChtPTB8dWVbKGY9Zis2fDApPj4wXSk8PDI0Pj4yNCkp''@;'; put 'put ''e2M9MDticmVha31jPWMrMXwwfXJldHVybiAwfGN9ZnVuY3Rpb24gZ3YobCl7cmV0dXJuIDB8KDA9PSgwfGZ1bmN0aW9uIGVjZShsKXtyZXR1cm4oKGx8PTApLTk3fDApPj4+MDwyNnwwfShsfD0wKSk/bDo5NSZsKX1mdW5jdGlvbiB0WihsLGMpe2x8PTAsY3w9MDt2YXIgbSxBLGY9MCxwPTA7''@;'; put 'put ''QT1vZSxvZT1vZSsxNnwwLG09QTtkb3tpZihsPj4+MD42KWM9MDtlbHNle2lmKHJtKDE5MDY1NiksNiE9KDB8bCkpe2M9MHxNJChsLGMpLF9oKDE5MDY1Nik7YnJlYWt9aWYoYyl7Zj0xNTM1NDcscD0obD1tKSsxNnwwO2Rve3VlW2w+PjBdPTB8dWVbZj4+MF0sbD1sKzF8MCxmPWYrMXwwfXdo''@;'; put 'put ''aWxlKCgwfGwpPCgwfHApKTtwPTA7ZG97KDB8KGY9KGw9MHxTTChjLDU5KSktY3wwKSk8MTYmJihEbygwfG0sMHxjLDB8ZiksdWVbbStmPj4wXT0wLGM9MD09KDB8dWVbbD4+MF0pP2M6bCsxfDApLE0kKHAsbSkscD1wKzF8MH13aGlsZSg2IT0oMHxwKSk7Yz0xOTcxMzIsbD0wfWVsc2UgYz0x''@;'; put 'put ''OTcxMzIsbD0wO2Zvcig7RG8oMHxjLDB8KHA9MHwocD0wfGFbMTkwNjE2KyhsPDwyKT4+Ml0pP3ArOHwwOjE1MzU2MyksMHwoZj0wfHpvKHApKSksdWVbKHA9YytmfDApPj4wXT01OSw2IT0oMHwobD1sKzF8MCkpOyljPWMrKGYrMSl8MDt1ZVtwPj4wXT0wLF9oKDE5MDY1NiksYz0xOTcxMzJ9''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiBvZT1BLDB8Y31mdW5jdGlvbiBNJChsLGMpe3JldHVybiBsfD0wLChjfD0wKT8oYz0wfGZ1bmN0aW9uIFl1ZShsLGMpe2x8PTAsY3w9MDt2YXIgRCxHLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsUj0wO0c9b2Usb2U9b2UrMjcyfDAsRD1HKzh8MCxS''@;'; put 'put ''PUc7ZG97aWYoISgwfHVlW2M+PjBdKSl7aWYoMHwoYz0wfHF1KDE1MjgzMykpJiYwfHVlW2M+PjBdfHwwfChjPTB8cXUoMTUyODQwKygxMipsfDApfDApKSYmMHx1ZVtjPj4wXXx8MHwoYz0wfHF1KDE1MjkxMikpJiYwfHVlW2M+PjBdKWJyZWFrO2M9MTUyOTE3fX13aGlsZSgwKTtmPTA7ZTpk''@;'; put 'put ''b3tzd2l0Y2goMHx1ZVtjK2Y+PjBdKXtjYXNlIDQ3OmNhc2UgMDpicmVhayBlfWY9ZisxfDB9d2hpbGUoZj4+PjA8MTUpOyhwPTB8dWVbYz4+MF0pPDwyND4+MjQhPTQ2JiYwPT0oMHx1ZVtjK2Y+PjBdKT9wPDwyND4+MjQ9PTY3P009MTU6KGs9YyxNPTE2KTooYz0xNTI5MTcsTT0xNSksMTU9''@;'; put 'put ''PSgwfE0pJiYoMHx1ZVtjKzE+PjBdPyhrPWMsTT0xNik6TT0xOCk7ZTpkb3tpZigxNj09KDB8TSkpaWYoMCE9KDB8WmkoaywxNTI5MTcpKSYmMCE9KDB8WmkoaywxNTI5MjUpKSl7aWYoMHwoYz0wfGFbNDc2NjFdKSlkb3tpZighKDB8WmkoayxjKzh8MCkpKWJyZWFrIGU7Yz0wfGFbYysyND4+''@;'; put 'put ''Ml19d2hpbGUoMCE9KDB8YykpO3JtKDE5MDY0OCksYz0wfGFbNDc2NjFdO3Q6ZG97aWYoMHxjKXtmb3IoOzB8WmkoayxjKzh8MCk7KWlmKCEoYz0wfGFbYysyND4+Ml0pKWJyZWFrIHQ7X2goMTkwNjQ4KTticmVhayBlfX13aGlsZSgwKTt0OmRve2lmKDA9PSgwfGFbNDc2NDZdKSYmMCE9KDB8''@;'; put 'put ''KG09MHxxdSgxNTI5MzEpKSkmJjAhPSgwfHVlW20+PjBdKSl7Zm9yKHc9MjU0LWZ8MCxiPWYrMXwwLHA9bTs7KXtpZigobT0oQT0wfFNMKHAsNTgpKS1wKygoKGM9MHx1ZVtBPj4wXSk8PDI0Pj4yNCE9MCk8PDMxPj4zMSl8MCk+Pj4wPHc+Pj4wKXtpZihEbygwfEQsMHxwLDB8bSksdWVbKHA9''@;'; put 'put ''RCttfDApPj4wXT00NyxEbyhwKzF8MCwwfGssMHxmKSx1ZVtEKyhiK20pPj4wXT0wLDB8KHA9MHxUOCgwfEQsMHxSKSkpYnJlYWs7Yz0wfHVlW0E+PjBdfWlmKCEoMHx1ZVsocD1BKyhjPDwyND4+MjQhPTAmMSl8MCk+PjBdKSl7TT00MTticmVhayB0fX1pZihjPTB8UjAoMjgpKXthW2M+PjJd''@;'; put 'put ''PXAsYVtjKzQ+PjJdPWFbUj4+Ml0sRG8oMHwoUj1jKzh8MCksMHxrLDB8ZiksdWVbUitmPj4wXT0wLGFbYysyND4+Ml09YVs0NzY2MV0sYVs0NzY2MV09YzticmVha31oJChwLDB8YVtSPj4yXSksTT00MTticmVha31NPTQxfXdoaWxlKDApOzQxPT0oMHxNKSYmKGM9MHxSMCgyOCkpJiYoYVtj''@;'; put 'put ''Pj4yXT1hWzE1NTg0XSxhW2MrND4+Ml09YVsxNTU4NV0sRG8oMHwoUj1jKzh8MCksMHxrLDB8ZiksdWVbUitmPj4wXT0wLGFbYysyND4+Ml09YVs0NzY2MV0sYVs0NzY2MV09YyksX2goMTkwNjQ4KSxjPTA9PSgwfGwpJjA9PSgwfGMpPzYyMzM2OmN9ZWxzZSBjPWssTT0xOH13aGlsZSgwKTtk''@;'; put 'put ''b3tpZigxOD09KDB8TSkpe2lmKDA9PSgwfGwpJiY0Nj09KDB8dWVbYysxPj4wXSkpe2M9NjIzMzY7YnJlYWt9Yz0wfX13aGlsZSgwKTtyZXR1cm4gb2U9RywwfGN9KGwsYyksYVsxOTA2MTYrKGw8PDIpPj4yXT1jLGw9Yyk6bD0wfGFbMTkwNjE2KyhsPDwyKT4+Ml0sMHwoMHxsP2wrOHwwOjE1''@;'; put 'put ''MzU2Myl9ZnVuY3Rpb24gJGgobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wO2U6ZG97aWYoZil7Zm9yKDsocD0wfHVlW2w+PjBdKTw8MjQ+PjI0PT0obT0wfHVlW2M+PjBdKTw8MjQ+PjI0Oyl7aWYoIShmPWYrLTF8MCkpe2w9MDticmVhayBlfWw9bCsxfDAsYz1jKzF8MH1sPSgy''@;'; put 'put ''NTUmcCktKDI1NSZtKXwwfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gbXYobCxjLGYpe2x8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MCxSPTAsRz0wO2lmKGZ8PTAsMCxwPShjfD0wKSstMXwwLCgwfGMpPDIpdWVbKEQ9Zis3NHwwKT4+MF09MjU1Kyhr''@;'; put 'put ''PTB8dWVbRD4+MF0pfGsscD9sPTA6dWVbbD4+MF09MDtlbHNle2U6ZG97aWYocCl7Zm9yKGI9Zis0fDAsaz1mKzh8MCxjPWw7Oyl7aWYoRG8oMHxjLDB8KG09MHxhW2I+PjJdKSwwfChBPShBPSh3PTA9PSgwfChBPTB8c3cobSwxMCxHPSgwfGFbaz4+Ml0pLShSPW0pfDApKSkpP0c6MS1SK0F8''@;'; put 'put ''MCk+Pj4wPHA+Pj4wP0E6cCkpLGFbYj4+Ml09bT0oMHxhW2I+PjJdKStBfDAsYz1jK0F8MCwhKHcmMCE9KDB8KEE9cC1BfDApKSkpe0Q9MTc7YnJlYWsgZX1pZihtPj4+MD49KDB8YVtrPj4yXSk+Pj4wKXtpZigoMHwocD0wfEpqKGYpKSk8MClicmVhazt3PXB9ZWxzZSBhW2I+PjJdPW0rMSx3''@;'; put 'put ''PTB8YnRbbT4+MF07aWYocD1BKy0xfDAsbT1jKzF8MCx1ZVtjPj4wXT13LCEoMCE9KDB8cCkmMTAhPSgyNTUmd3wwKSkpe2M9bSxEPTE3O2JyZWFrIGV9Yz1tfSgwfGMpIT0oMHxsKSYmMCE9KDE2JmFbZj4+Ml18MCk/RD0xNzpsPTB9ZWxzZSBjPWwsRD0xN313aGlsZSgwKTsxNz09KDB8RCkm''@;'; put 'put ''JihsP3VlW2M+PjBdPTA6bD0wKX1yZXR1cm4gMHxsfWZ1bmN0aW9uIExMKGwsYyl7dmFyIGY7bHw9MCxmPTB8dWVbKGN8PTApPj4wXTtkb3tpZihmPDwyND4+MjQpaWYobD0wfFVzKGwsZjw8MjQ+PjI0KSl7aWYoMHx1ZVtjKzE+PjBdKWlmKDB8dWVbbCsxPj4wXSl7aWYoISgwfHVlW2MrMj4+''@;'; put 'put ''MF0pKXtsPTB8dHllKGwsYyk7YnJlYWt9aWYoMHx1ZVtsKzI+PjBdKXtpZighKDB8dWVbYyszPj4wXSkpe2w9MHxueWUobCxjKTticmVha31pZigwfHVlW2wrMz4+MF0pe2lmKDB8dWVbYys0Pj4wXSl7bD0wfGl5ZShsLGMpO2JyZWFrfWw9MHxyeWUobCxjKTticmVha31sPTB9ZWxzZSBsPTB9''@;'; put 'put ''ZWxzZSBsPTB9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiB0eWUobCxjKXt2YXIgbSxmPTAscD0wO2ZvcihtPSgwfGJ0WyhjfD0wKT4+MF0pPDw4fDB8YnRbYysxPj4wXSxwPTB8YnRbKGx8PTApPj4wXTsoZj0wfHVlWyhjPWwrMXwwKT4+MF0pPDwyND4+MjQmJigwfChw''@;'; put 'put ''PXA8PDgmNjUyODB8MjU1JmYpKSE9KDB8bSk7KWw9YztyZXR1cm4gMHwoZjw8MjQ+PjI0P2w6MCl9ZnVuY3Rpb24gbnllKGwsYyl7dmFyIHAsZj0wO2lmKHA9KDB8YnRbMSsoY3w9MCk+PjBdKTw8MTZ8KDB8YnRbYz4+MF0pPDwyNHwoMHxidFtjKzI+PjBdKTw8OCwhKCgwfChsPSgwfGJ0WzEr''@;'; put 'put ''KGx8PTApPj4wXSk8PDE2fCgwfGJ0W2w+PjBdKTw8MjR8KDI1NSYoYz0wfHVlWyhmPWwrMnwwKT4+MF0pKTw8OCkpPT0oMHxwKXxjPDwyND4+MjQ9PTApKWRve2w9KGx8MjU1JihjPTB8dWVbKGY9ZisxfDApPj4wXSkpPDw4fXdoaWxlKCEoKDB8bCk9PSgwfHApfGM8PDI0Pj4yND09MCkpO3Jl''@;'; put 'put ''dHVybiAwfChjPDwyND4+MjQ/ZistMnwwOjApfWZ1bmN0aW9uIHJ5ZShsLGMpe3ZhciBwLGY9MDtpZihwPSgwfGJ0WzErKGN8PTApPj4wXSk8PDE2fCgwfGJ0W2M+PjBdKTw8MjR8KDB8YnRbYysyPj4wXSk8PDh8MHxidFtjKzM+PjBdLCEoKGY9MHx1ZVsoYz0zKyhsfD0wKXwwKT4+MF0pPDwy''@;'; put 'put ''ND4+MjQ9PTB8KDB8KGw9KDB8YnRbbCsxPj4wXSk8PDE2fCgwfGJ0W2w+PjBdKTw8MjR8KDB8YnRbbCsyPj4wXSk8PDh8MjU1JmYpKT09KDB8cCkpKWRve2w9bDw8OHwyNTUmKGY9MHx1ZVsoYz1jKzF8MCk+PjBdKX13aGlsZSghKGY8PDI0Pj4yND09MHwoMHxsKT09KDB8cCkpKTtyZXR1cm4g''@;'; put 'put ''MHwoZjw8MjQ+PjI0P2MrLTN8MDowKX1mdW5jdGlvbiBpeWUobCxjKXtsfD0wLGN8PTA7dmFyIGJlLE9lLExlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MDtMZT1vZSxvZT1vZSsxMDU2fDAsT2U9TGUsYVsoYmU9TGUrMTAyNHwwKT4+''@;'; put 'put ''Ml09MCxhW2JlKzQ+PjJdPTAsYVtiZSs4Pj4yXT0wLGFbYmUrMTI+PjJdPTAsYVtiZSsxNj4+Ml09MCxhW2JlKzIwPj4yXT0wLGFbYmUrMjQ+PjJdPTAsYVtiZSsyOD4+Ml09MCxmPTB8dWVbYz4+MF07ZTpkb3tpZihmPDwyND4+MjQpe21lPTA7ZG97aWYoISgwfHVlW2wrbWU+PjBdKSl7Zj0w''@;'; put 'put ''O2JyZWFrIGV9YVsocGU9YmUrKCgoMjU1JmYpPj4+NSYyNTUpPDwyKXwwKT4+Ml09YVtwZT4+Ml18MTw8KDMxJmYpLGFbT2UrKCgyNTUmZik8PDIpPj4yXT1tZT1tZSsxfDAsZj0wfHVlW2MrbWU+PjBdfXdoaWxlKGY8PDI0Pj4yNCE9MCk7aWYoTT1tZT4+PjA+MSl7cD0wLGs9LTEsbT0xO3Q6''@;'; put 'put ''Zm9yKDs7KXtmb3IoQT0xLGY9cDs7KXtwPW07bjpmb3IoOzspe2ZvcihiPTE7Oyl7aWYoKG09MHx1ZVtjKyhiK2spPj4wXSk8PDI0Pj4yNCE9KHc9MHx1ZVtjK3A+PjBdKTw8MjQ+PjI0KWJyZWFrIG47aWYoKDB8Yik9PSgwfEEpKWJyZWFrO2lmKChwPShiPWIrMXwwKStmfDApPj4+MD49bWU+''@;'; put 'put ''Pj4wKXtEPUEsZj1rO2JyZWFrIHR9fWlmKChwPTErKGY9QStmfDApfDApPj4+MD49bWU+Pj4wKXtEPUEsZj1rO2JyZWFrIHR9fWlmKEE9cC1rfDAsKDI1NSZtKTw9KDI1NSZ3KSlicmVhaztpZigobT1wKzF8MCk+Pj4wPj1tZT4+PjApe0Q9QSxmPWs7YnJlYWsgdH1mPXB9aWYoKG09ZisyfDAp''@;'; put 'put ''Pj4+MD49bWU+Pj4wKXtEPTE7YnJlYWt9cD1mKzF8MCxrPWZ9aWYoTSlmb3IoQT0wLE09LTEsdz0xOzspe2ZvcihwPTEsbT1BOzspe0E9dzt0OmZvcig7Oyl7Zm9yKGs9MTs7KXtpZigodz0wfHVlW2MrKGsrTSk+PjBdKTw8MjQ+PjI0IT0oYj0wfHVlW2MrQT4+MF0pPDwyND4+MjQpYnJlYWsg''@;'; put 'put ''dDtpZigoMHxrKT09KDB8cCkpYnJlYWs7aWYoKEE9KGs9aysxfDApK218MCk+Pj4wPj1tZT4+PjApe3c9RCxtPU0sQT0yNjticmVhayBlfX1pZigoQT0xKyhtPXArbXwwKXwwKT4+PjA+PW1lPj4+MCl7dz1ELG09TSxBPTI2O2JyZWFrIGV9fWlmKHA9QS1NfDAsKDI1NSZ3KT49KDI1NSZiKSli''@;'; put 'put ''cmVhaztpZigodz1BKzF8MCk+Pj4wPj1tZT4+PjApe3c9RCxtPU0sQT0yNjticmVhayBlfW09QX1pZigodz1tKzJ8MCk+Pj4wPj1tZT4+PjApe3c9RCxwPTEsQT0yNjticmVha31BPW0rMXwwLE09bX1lbHNlIHc9RCxwPTEsbT0tMSxBPTI2fWVsc2Ugdz0xLGY9LTEscD0xLG09LTEsQT0yNn1l''@;'; put 'put ''bHNlIHc9MSxmPS0xLG1lPTAscD0xLG09LTEsQT0yNn13aGlsZSgwKTtlOmRve2lmKDI2PT0oMHxBKSlmb3IoSz0obSsxfDApPj4+MD4oZisxfDApPj4+MCxwPUs/cDp3LEs9Sz9tOmYscGU9SysxfDAsMHwkaChjLGMrcHwwLHBlKT8ocD1tZS1LLTF8MCxHPTAscD0oSz4+PjA+cD4+PjA/Szpw''@;'; put 'put ''KSsxfDApOkc9bWUtcHwwLGs9NjN8bWUsTT1tZSstMXwwLEQ9MCE9KDB8RyksUj1tZS1wfDAsZj1sLGI9MCxtPWw7Oyl7QT1mO2Rve2lmKChtLUF8MCk+Pj4wPG1lPj4+MCl7aWYodz0wfHN3KG0sMCxrKSl7aWYoKHctQXwwKT4+PjA8bWU+Pj4wKXtmPTA7YnJlYWsgZX1icmVha313PW0ra3ww''@;'; put 'put ''O2JyZWFrfXc9bX13aGlsZSgwKTttPTB8dWVbZitNPj4wXTt0OmRve2lmKDE8PCgzMSZtKSZhW2JlKygoKDI1NSZtKT4+PjUmMjU1KTw8Mik+PjJdKXtpZigwfChtPW1lLSgwfGFbT2UrKCgyNTUmbSk8PDIpPj4yXSl8MCkpe0E9MCxtPUQmMCE9KDB8YikmbT4+PjA8cD4+PjA/UjptO2JyZWFr''@;'; put 'put ''fUE9MHx1ZVtjKyhtPXBlPj4+MD5iPj4+MD9wZTpiKT4+MF07bjpkb3tpZihBPDwyND4+MjQpe2Zvcig7QTw8MjQ+PjI0PT0oMHx1ZVtmK20+PjBdKTspaWYoISgoQT0wfHVlW2MrKG09bSsxfDApPj4wXSk8PDI0Pj4yNCkpe209cGU7YnJlYWsgbn1BPTAsbT1tLUt8MDticmVhayB0fW09cGV9''@;'; put 'put ''d2hpbGUoMCk7Zm9yKDs7KXtpZihtPj4+MDw9Yj4+PjApYnJlYWsgZTtpZigoMHx1ZVtjKyhtPW0rLTF8MCk+PjBdKSE9KDB8dWVbZittPj4wXSkpe0E9RyxtPXA7YnJlYWt9fX1lbHNlIEE9MCxtPW1lfXdoaWxlKDApO2Y9ZittfDAsYj1BLG09d319d2hpbGUoMCk7cmV0dXJuIG9lPUxlLDB8''@;'; put 'put ''Zn1mdW5jdGlvbiBwUyhsLGMsZil7cmV0dXJuIGZ1bmN0aW9uIG95ZShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MDttPWN8PTA7ZTpkb3tpZigzJihtXmwpKUE9MTE7ZWxzZXtpZigocD0wIT0oMHxmKSkmMCE9KDMmbXwwKSlkb3tpZih1ZVtsPj4wXT1tPTB8dWVbYz4+MF0sISht''@;'; put 'put ''PDwyND4+MjQpKWJyZWFrIGU7Yz1jKzF8MCxsPWwrMXwwLHA9MCE9KDB8KGY9ZistMXwwKSl9d2hpbGUocCYwIT0oMyZjfDApKTtpZihwKXtpZigwfHVlW2M+PjBdKXt0OmRve2lmKGY+Pj4wPjMpZm9yKHA9Yzs7KXtpZigoLTIxMzkwNjIxNDQmKGM9MHxhW3A+PjJdKV4tMjEzOTA2MjE0NCkm''@;'; put 'put ''YystMTY4NDMwMDl8MCl7Yz1wO2JyZWFrIHR9aWYoYVtsPj4yXT1jLGM9cCs0fDAsbD1sKzR8MCwhKChmPWYrLTR8MCk+Pj4wPjMpKWJyZWFrO3A9Y319d2hpbGUoMCk7QT0xMX19ZWxzZSBmPTB9fXdoaWxlKDApO2U6ZG97aWYoMTE9PSgwfEEpKWlmKGYpZm9yKDs7KXtpZih1ZVtsPj4wXT1B''@;'; put 'put ''PTB8dWVbYz4+MF0sIShBPDwyND4+MjQpKWJyZWFrIGU7aWYobD1sKzF8MCwhKGY9ZistMXwwKSl7Zj0wO2JyZWFrfWM9YysxfDB9ZWxzZSBmPTB9d2hpbGUoMCk7cjIoMHxsLDAsMHxmKX0obHw9MCxjfD0wLGZ8PTApLDB8bH1mdW5jdGlvbiBFJChsLGMpe2x8PTAsY3w9MDt2YXIgcCxtLGY9''@;'; put 'put ''MCxBPTA7bT1vZSxvZT1vZSszMnwwLGFbKHA9bSk+PjJdPTAsYVtwKzQ+PjJdPTAsYVtwKzg+PjJdPTAsYVtwKzEyPj4yXT0wLGFbcCsxNj4+Ml09MCxhW3ArMjA+PjJdPTAsYVtwKzI0Pj4yXT0wLGFbcCsyOD4+Ml09MCxmPTB8dWVbYz4+MF07ZG97aWYoZjw8MjQ+PjI0KXtpZighKDB8dWVb''@;'; put 'put ''YysxPj4wXSkpe2ZvcihjPWw7KDB8dWVbYz4+MF0pPT1mPDwyND4+MjQ7KWM9YysxfDA7Yz1jLWx8MDticmVha31kb3thWyhBPXArKCgoMjU1JmYpPj4+NSYyNTUpPDwyKXwwKT4+Ml09YVtBPj4yXXwxPDwoMzEmZiksZj0wfHVlWyhjPWMrMXwwKT4+MF19d2hpbGUoZjw8MjQ+PjI0IT0wKTtm''@;'; put 'put ''PTB8dWVbbD4+MF07ZTpkb3tpZihmPDwyND4+MjQpe2M9bDtkb3tpZighKGFbcCsoKCgyNTUmZik+Pj41JjI1NSk8PDIpPj4yXSYxPDwoMzEmZikpKWJyZWFrIGU7Zj0wfHVlWyhjPWMrMXwwKT4+MF19d2hpbGUoZjw8MjQ+PjI0IT0wKX1lbHNlIGM9bH13aGlsZSgwKTtjPWMtbHwwfWVsc2Ug''@;'; put 'put ''Yz0wfXdoaWxlKDApO3JldHVybiBvZT1tLDB8Y31mdW5jdGlvbiBhbyhsLGMsZil7dmFyIHAsbTtyZXR1cm4gbHw9MCxjfD0wLHA9b2Usb2U9b2UrMTZ8MCxhWyhtPXApPj4yXT1mfD0wLGY9MHxuWihsLGMsbSksb2U9cCwwfGZ9ZnVuY3Rpb24gbloobCxjLGYpe3JldHVybiAwfElMKGx8PTAs''@;'; put 'put ''MjE0NzQ4MzY0NyxjfD0wLGZ8PTApfWZ1bmN0aW9uIEkxKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgayxNLEQsbT0wLEE9MCx3PTAsYj0wLFI9MDtEPW9lLG9lPW9lKzIwOHwwLGs9RCs4fDAsTT1ELHc9MHx2cihmfD0wLGN8PTApLGFbKGI9TSk+PjJdPTEsYVtiKzQ+PjJdPTA7ZTpkb3tpZigw''@;'; put 'put ''fHcpe2ZvcihiPTAtZnwwLGFbays0Pj4yXT1mLGFbaz4+Ml09ZixtPTIsYz1mLEE9ZjthW2srKG08PDIpPj4yXT1jPWMrZitBfDAsYz4+PjA8dz4+PjA7KVI9QSxtPW0rMXwwLEE9YyxjPVI7aWYoKEE9bCt3K2J8MCk+Pj4wPmw+Pj4wKXt3PUEsbT0xLGM9MTtkb3tkb3tpZigzIT0oMyZjfDAp''@;'; put 'put ''KXtpZigoMHxhW2srKChjPW0rLTF8MCk8PDIpPj4yXSk+Pj4wPCh3LWx8MCk+Pj4wP3JaKGwsZixwLG0sayk6UkwobCxmLHAsTSxtLDAsayksMT09KDB8bSkpe0JMKE0sMSksbT0wO2JyZWFrfUJMKE0sYyksbT0xO2JyZWFrfXJaKGwsZixwLG0sayksT0woTSwyKSxtPW0rMnwwfXdoaWxlKDAp''@;'; put 'put ''O2FbTT4+Ml09Yz0xfGFbTT4+Ml0sbD1sK2Z8MH13aGlsZShsPj4+MDxBPj4+MCl9ZWxzZSBtPTEsYz0xO2ZvcihSTChsLGYscCxNLG0sMCxrKSxBPU0rNHwwOzspe2lmKDE9PSgwfG0pJjE9PSgwfGMpKXtpZighKDB8YVtBPj4yXSkpYnJlYWsgZX1lbHNlIGlmKCgwfG0pPj0yKXtCTChNLDIp''@;'; put 'put ''LFI9bSstMnwwLGFbTT4+Ml09N15hW00+PjJdLE9MKE0sMSksUkwobCsoMC0oMHxhW2srKFI8PDIpPj4yXSkpK2J8MCxmLHAsTSxtKy0xfDAsMSxrKSxCTChNLDEpLGFbTT4+Ml09Yz0xfGFbTT4+Ml0sUkwodz1sK2J8MCxmLHAsTSxSLDEsayksbD13LG09Ujtjb250aW51ZX1PTChNLGM9MHx4''@;'; put 'put ''JChNKSksbD1sK2J8MCxtPWMrbXwwLGM9MHxhW00+PjJdfX19d2hpbGUoMCk7b2U9RH1mdW5jdGlvbiByWihsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEQsUixBPTAsdz0wLGI9MCxrPTAsTT0wO1I9b2Usb2U9b2UrMjQwfDAsYVsoRD1SKT4+Ml09bHw9MDtlOmRve2lmKCgw''@;'; put 'put ''fHApPjEpZm9yKE09MC1jfDAsQT1sLGs9cCxwPTE7Oyl7aWYoKDB8UmlbMTI3JmZdKGwsQT0odz1BK018MCkrKDAtKDB8YVttKygoYj1rKy0yfDApPDwyKT4+Ml0pKXwwKSk+LTEmJigwfFJpWzEyNyZmXShsLHcpKT4tMSlicmVhayBlO2lmKGw9cCsxfDAscD1EKyhwPDwyKXwwLCgwfFJpWzEy''@;'; put 'put ''NyZmXShBLHcpKT4tMT8oYVtwPj4yXT1BLHA9aystMXwwKTooYVtwPj4yXT13LEE9dyxwPWIpLCgwfHApPD0xKXtwPWw7YnJlYWsgZX1rPXAscD1sLGw9MHxhW0Q+PjJdfWVsc2UgcD0xfXdoaWxlKDApO0kkKGMsRCxwKSxvZT1SfWZ1bmN0aW9uIE9MKGwsYyl7dmFyIG0sZj0wLHA9MDttPTQr''@;'; put 'put ''KGx8PTApfDAsKGN8PTApPj4+MD4zMT8oYVtsPj4yXT1wPTB8YVttPj4yXSxhW20+PjJdPTAsYz1jKy0zMnwwLGY9MCk6KGY9MHxhW20+PjJdLHA9MHxhW2w+PjJdKSxhW2w+PjJdPWY8PDMyLWN8cD4+PmMsYVttPj4yXT1mPj4+Y31mdW5jdGlvbiBSTChsLGMsZixwLG0sQSx3KXtsfD0wLGN8''@;'; put 'put ''PTAsZnw9MCxtfD0wLEF8PTAsd3w9MDt2YXIgTSxSLEcsSyxiPTAsaz0wLEQ9MCxwZT0wO0s9b2Usb2U9b2UrMjQwfDAsRz1LLGFbKFI9SysyMzJ8MCk+PjJdPXBlPTB8YVsocHw9MCk+PjJdLGFbKE09Uis0fDApPj4yXT1rPTB8YVtwKzQ+PjJdLGFbRz4+Ml09bDtlOmRve2lmKDEhPSgwfHBl''@;'; put 'put ''KXwwIT0oMHxrKSYmKEQ9MC1jfDAsYj1sKygwLSgwfGFbdysobTw8Mik+PjJdKSl8MCwoMHxSaVsxMjcmZl0oYixsKSk+PTEpKWZvcihwPTEsQT0wPT0oMHxBKSxrPWI7Oyl7aWYoQSYoMHxtKT4xKXtpZihiPTB8YVt3KyhtKy0yPDwyKT4+Ml0sKDB8UmlbMTI3JmZdKEE9bCtEfDAsaykpPi0x''@;'; put 'put ''KXtiPTEwO2JyZWFrIGV9aWYoKDB8UmlbMTI3JmZdKEErKDAtYil8MCxrKSk+LTEpe2I9MTA7YnJlYWsgZX19aWYoQT1wKzF8MCxhW0crKHA8PDIpPj4yXT1rLE9MKFIscGU9MHx4JChSKSksbT1wZSttfDAsISgxIT0oMHxhW1I+PjJdKXwwIT0oMHxhW00+PjJdKSkpe3A9QSxsPWssYj0xMDti''@;'; put 'put ''cmVhayBlfWlmKCgwfFJpWzEyNyZmXShsPWsrKDAtKDB8YVt3KyhtPDwyKT4+Ml0pKXwwLDB8YVtHPj4yXSkpPDEpe2w9ayxwPUEsQT0wLGI9OTticmVha31wZT1rLHA9QSxBPTEsaz1sLGw9cGV9ZWxzZSBwPTEsYj05fXdoaWxlKDApOzk9PSgwfGIpJiYwPT0oMHxBKSYmKGI9MTApLDEwPT0o''@;'; put 'put ''MHxiKSYmKEkkKGMsRyxwKSxyWihsLGMsZixtLHcpKSxvZT1LfWZ1bmN0aW9uIEJMKGwsYyl7dmFyIG0sZj0wLHA9MDttPTQrKGx8PTApfDAsKGN8PTApPj4+MD4zMT8oYVttPj4yXT1wPTB8YVtsPj4yXSxhW2w+PjJdPTAsYz1jKy0zMnwwLGY9MCk6KGY9MHxhW2w+PjJdLHA9MHxhW20+PjJd''@;'; put 'put ''KSxhW20+PjJdPWY+Pj4oMzItY3wwKXxwPDxjLGFbbD4+Ml09Zjw8Y31mdW5jdGlvbiB4JChsKXt2YXIgYz0wO3JldHVybihjPTB8VCQoKDB8YVsobHw9MCk+PjJdKS0xfDApKT8wfGM6MHwoMD09KDB8KGM9MHxUJCgwfGFbbCs0Pj4yXSkpKT8wOmMrMzJ8MCl9ZnVuY3Rpb24gVCQobCl7dmFy''@;'; put 'put ''IGM9MDtpZihsfD0wKWlmKDEmbClsPTA7ZWxzZXtjPWwsbD0wO2Rve2w9bCsxfDAsYz4+Pj0xfXdoaWxlKCEoMSZjfDApKX1lbHNlIGw9MzI7cmV0dXJuIDB8bH1mdW5jdGlvbiBJJChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHcscD0wLG09MCxBPTAsYj0wO3c9b2Usb2U9b2UrMjU2fDAs''@;'; put 'put ''cD13O2U6ZG97aWYoKDB8Zik+PTImJihBPWMrKGY8PDIpfDAsYVtBPj4yXT1wLDB8bCkpZm9yKDs7KXtEbygwfHAsMHxhW2M+PjJdLDB8KG09bD4+PjA8MjU2P2w6MjU2KSkscD0wO2Rve0RvKDB8YVsoYj1jKyhwPDwyKXwwKT4+Ml0sMHxhW2MrKChwPXArMXwwKTw8Mik+PjJdLDB8bSksYVti''@;'; put 'put ''Pj4yXT0oMHxhW2I+PjJdKSttfXdoaWxlKCgwfHApIT0oMHxmKSk7aWYoIShsPWwtbXwwKSlicmVhayBlO3A9MHxhW0E+PjJdfX13aGlsZSgwKTtvZT13fWZ1bmN0aW9uIFQwKGwsYyxmKXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAscD1vZSxvZT1vZSsxNnwwLGFbKG09cCk+PjJdPWZ8PTAs''@;'; put 'put ''Zj0wfERMKGwsYyxtKSxvZT1wLDB8Zn1mdW5jdGlvbiBzY2UobCl7bHw9MDt2YXIgcCxjPTAsZj0wO2ZvcihwPW9lLG9lPW9lKzE2fDAseDgoMCwwfChmPXApKSxjPTAsZj02NTUzNyooMHxhW2YrND4+Ml0pXihmPj4+NCkrbDt1ZVtsK2M+PjBdPTY1KygxNSZmKXxmPDwxJjMyLDYhPSgwfChj''@;'; put 'put ''PWMrMXwwKSk7KWY+Pj49NTtyZXR1cm4gb2U9cCwwfGx9ZnVuY3Rpb24gUEwobCxjLGYpe3JldHVybiAwfHckKGx8PTAsY3w9MCxmfD0wLC0yMTQ3NDgzNjQ4LDApfWZ1bmN0aW9uIGlaKGwsYyl7bHw9MDt2YXIgcCxBLGY9MCxtPTAsdz0wO0E9b2Usb2U9b2UrMzJ8MCxwPUEsZj0wfHVlWyhj''@;'; put 'put ''fD0wKT4+MF07ZTpkb3tpZihmPDwyND4+MjQhPTAmJjAhPSgwfHVlW2MrMT4+MF0pKXthW3A+PjJdPTAsYVtwKzQ+PjJdPTAsYVtwKzg+PjJdPTAsYVtwKzEyPj4yXT0wLGFbcCsxNj4+Ml09MCxhW3ArMjA+PjJdPTAsYVtwKzI0Pj4yXT0wLGFbcCsyOD4+Ml09MDtkb3thWyh3PXArKCgoMjU1''@;'; put 'put ''JmYpPj4+NSYyNTUpPDwyKXwwKT4+Ml09YVt3Pj4yXXwxPDwoMzEmZiksZj0wfHVlWyhjPWMrMXwwKT4+MF19d2hpbGUoZjw8MjQ+PjI0IT0wKTtpZigoZj0wfHVlW2w+PjBdKTw8MjQ+PjI0KXtjPWw7ZG97aWYoYVtwKygoKDI1NSZmKT4+PjUmMjU1KTw8Mik+PjJdJjE8PCgzMSZmKXwwKWJy''@;'; put 'put ''ZWFrIGU7Zj0wfHVlWyhjPWMrMXwwKT4+MF19d2hpbGUoZjw8MjQ+PjI0IT0wKX1lbHNlIGM9bH1lbHNlIG09M313aGlsZSgwKTtyZXR1cm4gMz09KDB8bSkmJihjPTB8U0wobCxmPDwyND4+MjQpKSxvZT1BLGMtbHwwfWZ1bmN0aW9uIHZ2KGwsYyl7Y3w9MDt2YXIgZj0wOyhsfD0wKXx8KGw9''@;'; put 'put ''MHxhWzQ3NjY2XSk/Zj0zOmw9MDtkb3tpZigzPT0oMHxmKSl7aWYobD1sKygwfEUkKGwsYykpfDAsISgwfHVlW2w+PjBdKSl7YVs0NzY2Nl09MCxsPTA7YnJlYWt9aWYoYz1sKygwfGlaKGwsYykpfDAsYVs0NzY2Nl09YywwfHVlW2M+PjBdKXthWzQ3NjY2XT1jKzEsdWVbYz4+MF09MDticmVh''@;'; put 'put ''a31hWzQ3NjY2XT0wO2JyZWFrfX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIG9aKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MDsobHw9MCl8fChsPTB8YVtmPj4yXSk/cD0zOmw9MDtkb3tpZigzPT0oMHxwKSl7aWYobD1sKygwfEUkKGwsYykpfDAsISgwfHVlW2w+PjBdKSl7YVtmPj4y''@;'; put 'put ''XT0wLGw9MDticmVha31pZihjPWwrKDB8aVoobCxjKSl8MCxhW2Y+PjJdPWMsMHx1ZVtjPj4wXSl7YVtmPj4yXT1jKzEsdWVbYz4+MF09MDticmVha31hW2Y+PjJdPTA7YnJlYWt9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gbmEobCl7dmFyIGYsYz0wO3JldHVybihjPTB8UjAoZj0x''@;'; put 'put ''KygwfHpvKGx8PTApKXwwKSk/RG8oMHxjLDB8bCwwfGYpOmM9MCwwfGN9ZnVuY3Rpb24gRCQobCxjKXtyZXR1cm4gMHxmdW5jdGlvbiB1Y2UobCxjLGYpe3ZhciBwO2x8PTAsZnw9MCxwPTI1NSYoY3w9MCk7ZG97aWYoIWYpe2M9MDticmVha31jPWwrKGY9ZistMXwwKXwwfXdoaWxlKCgwfHVl''@;'; put 'put ''W2M+PjBdKSE9cDw8MjQ+PjI0KTtyZXR1cm4gMHxjfShsfD0wLGN8PTAsMSsoMHx6byhsKSl8MCl9ZnVuY3Rpb24gQXYobCxjKXtyZXR1cm4gY3w9MCwkMygobHw9MCkrKDB8em8obCkpfDAsYyksMHxsfWZ1bmN0aW9uIEwkKGwpe3JldHVybiAwfCgwfGFbKGx8PTApPj4yXSk+Pj40JjF9ZnVu''@;'; put 'put ''Y3Rpb24gdXcobCl7dmFyIEEsYz0wLGY9MCxwPTA7cmV0dXJuIDAsZnVuY3Rpb24gZmNlKGwpe3ZhciBjPTA7MHxhWzY4KyhsfD0wKT4+Ml0mJihjPTB8YVtsKzExNj4+Ml0sbD1sKzExMnwwLDB8YyYmKGFbYysxMTI+PjJdPWFbbD4+Ml0pLGw9KGw9MHxhW2w+PjJdKT9sKzExNnwwOjYzMjA4''@;'; put 'put ''LGFbbD4+Ml09Yyl9KGx8PTApLChBPTAhPSgxJmFbbD4+Ml18MCkpfHwocD0wfGFaKCksYz1sKzU2fDAsMHwoZj0wfGFbbCs1Mj4+Ml0pJiYoYVtmKzU2Pj4yXT1hW2M+PjJdKSwwfChjPTB8YVtjPj4yXSkmJihhW2MrNTI+PjJdPWYpLCgwfGFbcD4+Ml0pPT0oMHxsKSYmKGFbcD4+Ml09Yyks''@;'; put 'put ''bFooKSksYz0wfEZMKGwpLGM9MHxwYVs2MyZhW2wrMTI+PjJdXShsKXxjLDB8KGY9MHxhW2wrOTI+PjJdKSYmSHQoZiksQXx8SHQobCksMHxjfWZ1bmN0aW9uIGFaKCl7cmV0dXJuIHJtKDE5MDY2OCksMTkwNjc2fWZ1bmN0aW9uIGxaKCl7X2goMTkwNjY4KX1mdW5jdGlvbiBGTChsKXtsfD0w''@;'; put 'put ''O3ZhciBjPTA7ZG97aWYobCl7aWYoKDB8YVtsKzc2Pj4yXSk8PS0xKXtjPTB8c1oobCk7YnJlYWt9ITAsYz0wfHNaKGwpfWVsc2V7aWYoYz0wfGFbMTU3MTFdPzB8RkwoMHxhWzE1NzExXSk6MCxsPTB8YVsoMHxhWigpKT4+Ml0pZG97MCwoMHxhW2wrMjA+PjJdKT4+PjA+KDB8YVtsKzI4Pj4y''@;'; put 'put ''XSk+Pj4wJiYoYz0wfHNaKGwpfGMpLGw9MHxhW2wrNTY+PjJdfXdoaWxlKDAhPSgwfGwpKTtsWigpfX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIHNaKGwpe3ZhciBjLHcsZj0wLHA9MCxtPTAsQT0wO3JldHVybigwfGFbKGM9MjArKGx8PTApfDApPj4yXSk+Pj4wPigwfGFbKHc9bCsy''@;'; put 'put ''OHwwKT4+Ml0pPj4+MCYmKG1pWzYzJmFbbCszNj4+Ml1dKGwsMCwwKSwwPT0oMHxhW2M+PjJdKSk/bD0tMTooKHA9MHxhWyhmPWwrNHwwKT4+Ml0pPj4+MDwoQT0wfGFbKG09bCs4fDApPj4yXSk+Pj4wJiZtaVs2MyZhW2wrNDA+PjJdXShsLHAtQXwwLDEpLGFbbCsxNj4+Ml09MCxhW3c+PjJd''@;'; put 'put ''PTAsYVtjPj4yXT0wLGFbbT4+Ml09MCxhW2Y+PjJdPTAsbD0wKSwwfGx9ZnVuY3Rpb24gTyQobCxjKXtsfD0wO3ZhciBtLGIsayxNLEQsUixmPTAscD0wLEE9MCx3PTA7aWYoUj1vZSxvZT1vZSs2NHwwLEQ9Uis0MHwwLGs9UisyNHwwLGI9UisxNnwwLG09UixNPVIrNTZ8MCwwfHN3KDE1MzU4''@;'; put 'put ''MCwocD0wfHVlWyhjfD0wKT4+MF0pPDwyND4+MjQsNCkpaWYoZj0wfFIwKDExNTYpKXt3PShBPWYpKzEyNHwwO2Rve2FbQT4+Ml09MCxBPUErNHwwfXdoaWxlKCgwfEEpPCgwfHcpKTswfFVzKGMsNDMpfHwoYVtmPj4yXT1wPDwyND4+MjQ9PTExND84OjQpLDB8VXMoYywxMDEpJiYoYVttPj4y''@;'; put 'put ''XT1sLGFbbSs0Pj4yXT0yLGFbbSs4Pj4yXT0xLE00KDIyMSwwfG0pLHA9MHx1ZVtjPj4wXSkscDw8MjQ+PjI0PT05Nz8oYVtiPj4yXT1sLGFbYis0Pj4yXT0zLDEwMjQmKHA9MHxNNCgyMjEsMHxiKSl8fChhW2s+PjJdPWwsYVtrKzQ+PjJdPTQsYVtrKzg+PjJdPTEwMjR8cCxNNCgyMjEsMHxr''@;'; put 'put ''KSksYVtmPj4yXT1jPTEyOHxhW2Y+PjJdKTpjPTB8YVtmPj4yXSxhW2YrNjA+PjJdPWwsYVtmKzQ0Pj4yXT1mKzEzMixhW2YrNDg+PjJdPTEwMjQsdWVbKHA9Zis3NXwwKT4+MF09LTEsMD09KDgmY3wwKSYmKGFbRD4+Ml09bCxhW0QrND4+Ml09MjE1MjMsYVtEKzg+PjJdPU0sMD09KDB8RTQo''@;'; put 'put ''NTQsMHxEKSkpJiYodWVbcD4+MF09MTApLGFbZiszMj4+Ml09MTUsYVtmKzM2Pj4yXT0xOCxhW2YrNDA+PjJdPTE2LGFbZisxMj4+Ml09MTcsMHxhWzQ3NjQ1XXx8KGFbZis3Nj4+Ml09LTEpLGZ1bmN0aW9uIGRjZShsKXtsfD0wO3ZhciBjLGY7Yz0wfGFaKCksYVtsKzU2Pj4yXT1hW2M+PjJd''@;'; put 'put ''LDB8KGY9MHxhW2M+PjJdKSYmKGFbZis1Mj4+Ml09bCksYVtjPj4yXT1sLGxaKCl9KGYpfWVsc2UgZj0wO2Vsc2UgYVs0NzY0M109MjIsZj0wO3JldHVybiBvZT1SLDB8Zn1mdW5jdGlvbiBmOChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHcscD0wLG09MCxBPTA7dz1vZSxvZT1vZSsxNnww''@;'; put 'put ''LHA9dztlOmRve2lmKGMpe2Rve2lmKDB8Zil7aWYoQT0wPT0oMHxsKT9wOmwsKGw9MHx1ZVtjPj4wXSk8PDI0Pj4yND4tMSl7YVtBPj4yXT0yNTUmbCxsPWw8PDI0Pj4yNCE9MCYxO2JyZWFrIGV9aWYobD0wfHVlW2M+PjBdLG09MD09KDB8YVthWzE1NzkxXT4+Ml0pKXthW0E+PjJdPWw8PDI0''@;'; put 'put ''Pj4yNCY1NzM0MyxsPTE7YnJlYWsgZX1pZigobD0oMjU1JmwpLTE5NHwwKT4+PjA8PTUwKXtpZihwPWMrMXwwLG09MHxhWzYyMzg0KyhsPDwyKT4+Ml0sZj4+PjA8NCYmbSYtMjE0NzQ4MzY0OD4+PigoNipmfDApLTZ8MCl8MClicmVhaztpZigoKGY9KGw9MHxidFtwPj4wXSk+Pj4zKS0xNnxm''@;'; put 'put ''KyhtPj4yNikpPj4+MDw9Nyl7aWYoKDB8KGw9bCstMTI4fG08PDYpKT49MCl7YVtBPj4yXT1sLGw9MjticmVhayBlfWlmKChwPSgwfGJ0W2MrMj4+MF0pLTEyOHwwKT4+PjA8PTYzKXtpZigoMHwocHw9bDw8NikpPj0wKXthW0E+PjJdPXAsbD0zO2JyZWFrIGV9aWYoKGw9KDB8YnRbYyszPj4w''@;'; put 'put ''XSktMTI4fDApPj4+MDw9NjMpe2FbQT4+Ml09bHxwPDw2LGw9NDticmVhayBlfX19fX19d2hpbGUoMCk7YVs0NzY0M109ODQsbD0tMX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9dywwfGx9ZnVuY3Rpb24gX3UobCxjKXt2YXIgZjtyZXR1cm4gY3w9MCwoKDB8Q3UobHw9MCwxLGY9MHx6''@;'; put 'put ''byhsKSxjKSkhPSgwfGYpKTw8MzE+PjMxfDB9ZnVuY3Rpb24gQ3UobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtO3JldHVybiBtPTB8dnIoZnw9MCxjfD0wKSxmPTA9PSgwfGMpPzA6ZiwoMHxhW3ArNzY+PjJdKT4tMT8oITAsbD0wfGVaKGwsbSxwKSk6bD0wfGVaKGwsbSxwKSwoMHxsKSE9KDB8''@;'; put 'put ''bSkmJihmPShsPj4+MCkvKGM+Pj4wKXwwKSwwfGZ9ZnVuY3Rpb24gdVoobCxjKXtsfD0wO3ZhciB3LGIsayxmPTAscD0wLG09MCxBPTA7az1vZSxvZT1vZSsxNnwwLHVlWyh3PWspPj4wXT1iPTI1NSYoY3w9MCksKG09MHxhWyhwPWwrMTZ8MCk+PjJdKT9BPTQ6MHxTJChsKT9mPS0xOihtPTB8''@;'; put 'put ''YVtwPj4yXSxBPTQpO2Rve2lmKDQ9PSgwfEEpKXtpZigocD0wfGFbKEE9bCsyMHwwKT4+Ml0pPj4+MDxtPj4+MCYmKDB8KGY9MjU1JmMpKSE9KDB8dWVbbCs3NT4+MF0pKXthW0E+PjJdPXArMSx1ZVtwPj4wXT1iO2JyZWFrfWY9MT09KDB8bWlbNjMmYVtsKzM2Pj4yXV0obCx3LDEpKT8wfGJ0''@;'; put 'put ''W3c+PjBdOi0xfX13aGlsZSgwKTtyZXR1cm4gb2U9aywwfGZ9ZnVuY3Rpb24gZ2NlKGwsYyxmKXt2YXIgcCxtO3JldHVybiBjfD0wLGZ8PTAscD1vZSxvZT1vZSsxNnwwLGFbKG09cCk+PjJdPWx8PTAsYVttKzQ+PjJdPWMsYVttKzg+PjJdPWYsZj0wfElmKDB8QzkoMywwfG0pKSxvZT1wLDB8''@;'; put 'put ''Zn1mdW5jdGlvbiBjWigpe3ZhciBsLGM7cmV0dXJuIGM9b2Usb2U9b2UrMTZ8MCxsPTB8RDgoMjAsMHxjKSxvZT1jLDB8bH1mdW5jdGlvbiBSJChsLGMpe2N8PTA7dmFyIHAsbSxBLGY9MDtyZXR1cm4gQT1vZSxvZT1vZSs0OHwwLG09QSs0MHwwLHA9QSs4fDAsYVsoZj1BKT4+Ml09bHw9MCxh''@;'; put 'put ''W2YrND4+Ml09YywtOT09KDB8KGY9MHx6ZigxOTcsMHxmKSkpJiYoYVtwPj4yXT1sLGFbcCs0Pj4yXT0xLCgwfE00KDIyMSwwfHApKT49MCk/KGZ1bmN0aW9uIG1jZShsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MDtwPTE1MzU2NSxtPTE1KyhmPWx8PTApfDA7ZG97dWVbZj4+MF09MHx1ZVtwPj4w''@;'; put 'put ''XSxmPWYrMXwwLHA9cCsxfDB9d2hpbGUoKDB8Zik8KDB8bSkpO2lmKGMpe2ZvcihwPWMsZj0xNDtmPWYrMXwwLCEocD4+PjA8MTApOylwPShwPj4+MCkvMTB8MDtmb3IodWVbbCtmPj4wXT0wO3VlW2wrKGY9ZistMXwwKT4+MF09NDh8KGM+Pj4wKSUxMCwhKGM+Pj4wPDEwKTspYz0oYz4+PjAp''@;'; put 'put ''LzEwfDB9ZWxzZSB1ZVtsKzE0Pj4wXT00OCx1ZVtsKzE1Pj4wXT0wfShwLGwpLGFbbT4+Ml09cCxhW20rND4+Ml09YyxjPTB8SWYoMHxaYygxOTUsMHxtKSkpOmM9MHxJZihmKSxvZT1BLDB8Y31mdW5jdGlvbiB2Y2UobCxjKXt2YXIgZixwO3JldHVybiBjfD0wLGY9b2Usb2U9b2UrMTZ8MCxh''@;'; put 'put ''WyhwPWYpPj4yXT1sfD0wLGFbcCs0Pj4yXT1jLGM9MHxJZigwfGltKDMzLDB8cCkpLG9lPWYsMHxjfWZ1bmN0aW9uIGdTKGwsYyl7bHw9MDt2YXIgbSxBLHcsZj0wLHA9MDtyZXR1cm4gdz1vZSxvZT1vZSs0OHwwLEE9dyszMnwwLG09dysxNnwwLGY9dywwfHN3KDE1MzU4MCwwfHVlWyhjfD0w''@;'; put 'put ''KT4+MF0sNCk/KHA9MHxmdW5jdGlvbiBBY2UobCl7dmFyIGMsZj0wO3JldHVybiBmPTA9PSgwfFVzKGx8PTAsNDMpKSxjPTB8dWVbbD4+MF0sZj1mP2M8PDI0Pj4yNCE9MTE0JjE6MixmPTA9PSgwfFVzKGwsMTIwKSk/ZjoxMjh8ZixsPShsPTA9PSgwfFVzKGwsMTAxKSkpP2Y6NTI0Mjg4fGYs''@;'; put 'put ''bD1jPDwyND4+MjQ9PTExND9sOjY0fGwsbD1jPDwyND4+MjQ9PTExOT81MTJ8bDpsLDB8KGM8PDI0Pj4yND09OTc/MTAyNHxsOmwpfShjKSxhW2Y+PjJdPWwsYVtmKzQ+PjJdPTMyNzY4fHAsYVtmKzg+PjJdPTQzOCwoMHwoZj0wfElmKDB8TDgoNSwwfGYpKSkpPj0wPyg1MjQyODgmcHwwJiYo''@;'; put 'put ''YVttPj4yXT1mLGFbbSs0Pj4yXT0yLGFbbSs4Pj4yXT0xLE00KDIyMSwwfG0pKSwobD0wfE8kKGYsYykpfHwoYVtBPj4yXT1mLGhmKDYsMHxBKSxsPTApKTpsPTApOihhWzQ3NjQzXT0yMixsPTApLG9lPXcsMHxsfWZ1bmN0aW9uICRhKGwsYyxmKXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAs''@;'; put 'put ''cD1vZSxvZT1vZSsxNnwwLGFbKG09cCk+PjJdPWZ8PTAsZj0wfGZ1bmN0aW9uIHljZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHAsQSxtPTAsdz0wO0E9b2Usb2U9b2UrMTI4fDAsdz0obT1wPUEpKzEyNHwwO2Rve2FbbT4+Ml09MCxtPW0rNHwwfXdoaWxlKCgwfG0pPCgwfHcpKTtyZXR1''@;'; put 'put ''cm4gYVtwKzMyPj4yXT00MSxhW3ArNDQ+PjJdPWwsYVtwKzc2Pj4yXT0tMSxhW3ArODQ+PjJdPWwsdz0wfGZ1bmN0aW9uIGJjZShsLGMsZil7Znw9MDt2YXIgYXQsRXQsWnQsdXQseW4scD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxP''@;'; put 'put ''ZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLEdlPTAsbHQ9MCxNdD0wLGt0PTAsd3Q9MDt5bj1vZSxvZT1vZSsyODh8MCxhdD15bis4fDAsRXQ9eW4rMTd8MCxadD15bix1dD15bisxNnwwLGx8PTAscD0wfHVlWyhjfD0wKT4+MF07ZTpkb3tpZihwPDwyND4+MjQpe0hlPWwrNHww''@;'; put 'put ''LGplPWwrMTAwfDAsZXQ9bCsxMDh8MCxydD1sKzh8MCxHZT1FdCsxMHwwLGx0PUV0KzMzfDAsQmU9YXQrNHwwLE10PUV0KzF8MCxrdD1FdCsxfDAsdz1jLEs9MCxjPTAsQT0wLG09MDt0OmZvcig7Oyl7bjpkb3tpZigwfEtjKDI1NSZwKSl7Zm9yKDswfEtjKDB8YnRbKHA9dysxfDApPj4wXSk7''@;'; put 'put ''KXc9cDtjaChsLDApO2RveyhwPTB8YVtIZT4+Ml0pPj4+MDwoMHxhW2plPj4yXSk+Pj4wPyhhW0hlPj4yXT1wKzEscD0wfGJ0W3A+PjBdKTpwPTB8RmwobCl9d2hpbGUoMCE9KDB8S2MocCkpKTswfGFbamU+PjJdP2FbSGU+PjJdPXA9KDB8YVtIZT4+Ml0pLTF8MDpwPTB8YVtIZT4+Ml0sYj0o''@;'; put 'put ''MHxhW2V0Pj4yXSkrSytwLSgwfGFbcnQ+PjJdKXwwfWVsc2V7cD1wPDwyND4+MjQ9PTM3O3I6ZG97aWYocCl7Yj0wfHVlWyhNPXcrMXwwKT4+MF07aTpkb3tzd2l0Y2goYjw8MjQ+PjI0KXtjYXNlIDM3OmJyZWFrIHI7Y2FzZSA0MjpMZT0wLHc9dysyfDA7YnJlYWs7ZGVmYXVsdDppZigocD0o''@;'; put 'put ''MjU1JmIpLTQ4fDApPj4+MDwxMCYmMzY9PSgwfHVlW3crMj4+MF0pKXtMZT0wfF9jZShmLHApLHc9dyszfDA7YnJlYWsgaX1MZT0wfGFbKHc9MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+Ml09dys0LHc9TX19d2hpbGUoMCk7aWYoKChiPTI1NSYocD0wfHVlW3c+PjBdKSktNDh8MCk+Pj4w''@;'; put 'put ''PDEwKXtNPTA7ZG97TT0oMTAqTXwwKS00OCtifDAsYj0yNTUmKHA9MHx1ZVsodz13KzF8MCk+PjBdKX13aGlsZSgoYistNDh8MCk+Pj4wPDEwKX1lbHNlIE09MDtzd2l0Y2goQT0ocD1wPDwyND4+MjQ9PTEwOSk/MDpBLG09cD8wOm0sdz1wP3crMXwwOncscCY9T2U9MCE9KDB8TGUpLGI9dysx''@;'; put 'put ''fDAsMHx1ZVt3Pj4wXSl7Y2FzZSAxMDQ6RD0oYmU9MTA0PT0oMHx1ZVtiPj4wXSkpPy0yOi0xLHc9YmU/dysyfDA6YjticmVhaztjYXNlIDEwODpEPShiZT0xMDg9PSgwfHVlW2I+PjBdKSk/MzoxLHc9YmU/dysyfDA6YjticmVhaztjYXNlIDEwNjpEPTMsdz1iO2JyZWFrO2Nhc2UgMTE2OmNh''@;'; put 'put ''c2UgMTIyOkQ9MSx3PWI7YnJlYWs7Y2FzZSA3NjpEPTIsdz1iO2JyZWFrO2Nhc2UgMTEwOmNhc2UgMTEyOmNhc2UgNjc6Y2FzZSA4MzpjYXNlIDkxOmNhc2UgOTk6Y2FzZSAxMTU6Y2FzZSA4ODpjYXNlIDcxOmNhc2UgNzA6Y2FzZSA2OTpjYXNlIDY1OmNhc2UgMTAzOmNhc2UgMTAyOmNhc2Ug''@;'; put 'put ''MTAxOmNhc2UgOTc6Y2FzZSAxMjA6Y2FzZSAxMTc6Y2FzZSAxMTE6Y2FzZSAxMDU6Y2FzZSAxMDA6RD0wO2JyZWFrO2RlZmF1bHQ6d3Q9MTM1O2JyZWFrIHR9c3dpdGNoKEc9KHBlPTM9PSg0NyYoRz0wfGJ0W3c+PjBdKXwwKSk/MzJ8RzpHLHBlPXBlPzE6RCwoUj0yNTUmRyk8PDI0Pj4yNCl7''@;'; put 'put ''Y2FzZSA5OTpNPSgwfE0pPjE/TToxLGJlPUs7YnJlYWs7Y2FzZSA5MTpiZT1LO2JyZWFrO2Nhc2UgMTEwOkIkKExlLHBlLEssKCgwfEspPDApPDwzMT4+MzEpLGI9SzticmVhayBuO2RlZmF1bHQ6Y2gobCwwKTtkb3soYj0wfGFbSGU+PjJdKT4+PjA8KDB8YVtqZT4+Ml0pPj4+MD8oYVtIZT4+''@;'; put 'put ''Ml09YisxLGI9MHxidFtiPj4wXSk6Yj0wfEZsKGwpfXdoaWxlKDAhPSgwfEtjKGIpKSk7MHxhW2plPj4yXT9hW0hlPj4yXT1iPSgwfGFbSGU+PjJdKS0xfDA6Yj0wfGFbSGU+PjJdLGJlPSgwfGFbZXQ+PjJdKStLK2ItKDB8YVtydD4+Ml0pfDB9aWYoY2gobCxNKSwoYj0wfGFbSGU+PjJdKT4+''@;'; put 'put ''PjA8KEQ9MHxhW2plPj4yXSk+Pj4wKWFbSGU+PjJdPWIrMTtlbHNle2lmKCgwfEZsKGwpKTwwKXt3dD0xMzU7YnJlYWsgdH1EPTB8YVtqZT4+Ml19MHxEJiYoYVtIZT4+Ml09KDB8YVtIZT4+Ml0pLTEpO2k6ZG97c3dpdGNoKFI8PDI0Pj4yNCl7Y2FzZSA5MTpjYXNlIDk5OmNhc2UgMTE1Om1l''@;'; put 'put ''PTk5PT0oMHxHKTtvOmRve2lmKDExNT09KDE2fEcpKXIyKDB8TXQsLTEsMjU2KSx1ZVtFdD4+MF09MCwxMTU9PSgwfEcpJiYodWVbbHQ+PjBdPTAsdWVbR2U+PjBdPTAsdWVbR2UrMT4+MF09MCx1ZVtHZSsyPj4wXT0wLHVlW0dlKzM+PjBdPTAsdWVbR2UrND4+MF09MCk7ZWxzZXtzd2l0Y2go''@;'; put 'put ''Sz0xJihiPTk0PT0oMHx1ZVsoRz13KzF8MCk+PjBdKSksdz1iP3crMnwwOkcscjIoMHxrdCwxJmJ8MCwyNTYpLHVlW0V0Pj4wXT0wLChiPTB8dWVbdz4+MF0pPDwyND4+MjQpe2Nhc2UgNDU6Yj00Nix3dD02MzticmVhaztjYXNlIDkzOmI9OTQsd3Q9NjN9Zm9yKDs7KXs2Mz09KDB8d3QpJiYo''@;'; put 'put ''d3Q9MCx1ZVtFdCtiPj4wXT0xXkssdz1iPXcrMXwwLGI9MHx1ZVtiPj4wXSk7YTpkb3tzd2l0Y2goYjw8MjQ+PjI0KXtjYXNlIDA6d3Q9MTM1O2JyZWFrIHQ7Y2FzZSA5MzpicmVhayBvO2Nhc2UgNDU6c3dpdGNoKChiPTB8dWVbKEc9dysxfDApPj4wXSk8PDI0Pj4yNCl7Y2FzZSA5MzpjYXNl''@;'; put 'put ''IDA6Yj00NTticmVhayBhfWlmKCgyNTUmKHc9MHx1ZVt3Ky0xPj4wXSkpPCgyNTUmYikpe1I9MjU1JigxXkspLHcmPTI1NTtkb3t1ZVtFdCsodz13KzF8MCk+PjBdPVIsYj0wfHVlW0c+PjBdfXdoaWxlKCgwfHcpPCgyNTUmYnwwKSk7dz1HfWVsc2Ugdz1HfX13aGlsZSgwKTtiPTErKDI1NSZi''@;'; put 'put ''KXwwLHd0PTYzfX19d2hpbGUoMCk7Yj1tZT9NKzF8MDozMSxHPTE9PSgwfHBlKTtvOmRve2lmKEcpe2lmKHApe2lmKCEobT0wfFIwKGI8PDIpKSl7QT0wLG09MCxwPTEsd3Q9MTM1O2JyZWFrIHR9fWVsc2UgbT1MZTthW2F0Pj4yXT0wLGFbQmU+PjJdPTAsUj1iLEE9MDthOmZvcig7Oyl7RD0w''@;'; put 'put ''PT0oMHxtKTtkb3tsOmZvcig7Oyl7aWYoKGI9MHxhW0hlPj4yXSk+Pj4wPCgwfGFbamU+PjJdKT4+PjA/KGFbSGU+PjJdPWIrMSxiPTB8YnRbYj4+MF0pOmI9MHxGbChsKSwhKDB8dWVbRXQrKGIrMSk+PjBdKSlicmVhayBhO3N3aXRjaCh1ZVt1dD4+MF09YiwwfFFBZShadCx1dCwxLGF0KSl7''@;'; put 'put ''Y2FzZS0xOkE9MCx3dD0xMzU7YnJlYWsgdDtjYXNlLTI6YnJlYWs7ZGVmYXVsdDpicmVhayBsfX1EfHwoYVttKyhBPDwyKT4+Ml09YVtadD4+Ml0sQT1BKzF8MCl9d2hpbGUoIShwJigwfEEpPT0oMHxSKSkpO2lmKCEoYj0wfFphKG0sKEE9Ujw8MXwxKTw8MikpKXtBPTAscD0xLHd0PTEzNTti''@;'; put 'put ''cmVhayB0fXBlPVIsUj1BLG09YixBPXBlfWlmKCEoMHxDY2UoYXQpKSl7QT0wLHd0PTEzNTticmVhayB0fWI9QSxBPTAsUj1tfWVsc2V7aWYocCl7aWYoIShBPTB8UjAoYikpKXtBPTAsbT0wLHA9MSx3dD0xMzU7YnJlYWsgdH1mb3IoRD1iLG09MDs7KXtkb3tpZigoYj0wfGFbSGU+PjJdKT4+''@;'; put 'put ''PjA8KDB8YVtqZT4+Ml0pPj4+MD8oYVtIZT4+Ml09YisxLGI9MHxidFtiPj4wXSk6Yj0wfEZsKGwpLCEoMHx1ZVtFdCsoYisxKT4+MF0pKXtiPW0sUj0wLG09MDticmVhayBvfXVlW0ErbT4+MF09YixtPW0rMXwwfXdoaWxlKCgwfG0pIT0oMHxEKSk7aWYoIShiPTB8WmEoQSxtPUQ8PDF8MSkp''@;'; put 'put ''KXttPTAscD0xLHd0PTEzNTticmVhayB0fXBlPUQsRD1tLEE9YixtPXBlfX1pZihMZSlmb3IoYj0wLEE9RDs7KXtpZigobT0wfGFbSGU+PjJdKT4+PjA8QT4+PjA/KGFbSGU+PjJdPW0rMSxtPTB8YnRbbT4+MF0pOm09MHxGbChsKSwhKDB8dWVbRXQrKG0rMSk+PjBdKSl7QT1MZSxSPTAsbT0w''@;'; put 'put ''O2JyZWFrIG99dWVbTGUrYj4+MF09bSxiPWIrMXwwLEE9MHxhW2plPj4yXX1lbHNlIGZvcihBPUQ7Oyl7aWYoKG09MHxhW0hlPj4yXSk+Pj4wPEE+Pj4wPyhhW0hlPj4yXT1tKzEsbT0wfGJ0W20+PjBdKTptPTB8RmwobCksISgwfHVlW0V0KyhtKzEpPj4wXSkpe2I9MCxBPTAsUj0wLG09MDti''@;'; put 'put ''cmVhayBvfUE9MHxhW2plPj4yXX19fXdoaWxlKDApO2lmKDB8YVtqZT4+Ml0/YVtIZT4+Ml09RD0oMHxhW0hlPj4yXSktMXwwOkQ9MHxhW0hlPj4yXSwhKEQ9RC0oMHxhW3J0Pj4yXSkrKDB8YVtldD4+Ml0pfDApKXt3dD0xMzc7YnJlYWsgdH1pZighKCgwfEQpPT0oMHxNKXwxXm1lKSl7d3Q9''@;'; put 'put ''MTM3O2JyZWFrIHR9ZG97aWYocCl7aWYoRyl7YVtMZT4+Ml09UjticmVha31hW0xlPj4yXT1BO2JyZWFrfX13aGlsZSgwKTtpZighbWUpe2lmKDB8UiYmKGFbUisoYjw8Mik+PjJdPTApLCFBKXtBPTA7YnJlYWsgaX11ZVtBK2I+PjBdPTB9YnJlYWs7Y2FzZSAxMjA6Y2FzZSA4ODpjYXNlIDEx''@;'; put 'put ''MjpiPTE2LHd0PTEyMzticmVhaztjYXNlIDExMTpiPTgsd3Q9MTIzO2JyZWFrO2Nhc2UgMTE3OmNhc2UgMTAwOmI9MTAsd3Q9MTIzO2JyZWFrO2Nhc2UgMTA1OmI9MCx3dD0xMjM7YnJlYWs7Y2FzZSA3MTpjYXNlIDEwMzpjYXNlIDcwOmNhc2UgMTAyOmNhc2UgNjk6Y2FzZSAxMDE6Y2FzZSA2''@;'; put 'put ''NTpjYXNlIDk3OmlmKGs9K1AkKGwscGUsMCksKDB8YVtldD4+Ml0pPT0oKDB8YVtydD4+Ml0pLSgwfGFbSGU+PjJdKXwwKSl7d3Q9MTM3O2JyZWFrIHR9aWYoTGUpc3dpdGNoKDB8cGUpe2Nhc2UgMDpXbltMZT4+Ml09azticmVhayBpO2Nhc2UgMTpjYXNlIDI6X1tMZT4+M109azticmVhayBp''@;'; put 'put ''O2RlZmF1bHQ6YnJlYWsgaX19fXdoaWxlKDApO2Rve2lmKDEyMz09KDB8d3QpKXtpZih3dD0wLGI9MHxqdWUobCxiLDAsLTEsLTEpLCgwfGFbZXQ+PjJdKT09KCgwfGFbcnQ+PjJdKS0oMHxhW0hlPj4yXSl8MCkpe3d0PTEzNzticmVhayB0fWlmKE9lJjExMj09KDB8Rykpe2FbTGU+PjJdPWI7''@;'; put 'put ''YnJlYWt9QiQoTGUscGUsYixPbik7YnJlYWt9fXdoaWxlKDApO2M9YysoMSZPZSl8MCxiPSgwfGFbZXQ+PjJdKStiZSsoMHxhW0hlPj4yXSktKDB8YVtydD4+Ml0pfDA7YnJlYWsgbn19d2hpbGUoMCk7aWYodz13KygxJnApfDAsY2gobCwwKSwocD0wfGFbSGU+PjJdKT4+PjA8KDB8YVtqZT4+''@;'; put 'put ''Ml0pPj4+MD8oYVtIZT4+Ml09cCsxLHA9MHxidFtwPj4wXSk6cD0wfEZsKGwpLCgwfHApIT0oMHxidFt3Pj4wXSkpe3d0PTIyO2JyZWFrIHR9Yj1LKzF8MH19d2hpbGUoMCk7aWYoISgocD0wfHVlWyh3PXcrMXwwKT4+MF0pPDwyND4+MjQpKWJyZWFrIGU7Sz1ifWlmKDIyPT0oMHx3dCkpe2lm''@;'; put 'put ''KDB8YVtqZT4+Ml0mJihhW0hlPj4yXT0oMHxhW0hlPj4yXSktMSksMCE9KDB8Yyl8KDB8cCk+LTEpYnJlYWs7cD0wLHd0PTEzNn1lbHNlIDEzNT09KDB8d3QpPyhwJj0xLGN8fCh3dD0xMzYpKToxMzc9PSgwfHd0KSYmKHAmPTEpOzEzNj09KDB8d3QpJiYoYz0tMSkscCYmKEh0KEEpLEh0KG0p''@;'; put 'put ''KX1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gb2U9eW4sMHxjfShwLGMsZiksb2U9QSwwfHd9KGwsYyxtKSxvZT1wLDB8Zn1mdW5jdGlvbiBfY2UobCxjKXtjfD0wO3ZhciBmLHAsbT0wO2ZvcihwPW9lLG9lPW9lKzE2fDAsYVsoZj1wKT4+Ml09YVsobHw9MCk+PjJdO2w9MHxhWyhtPTMrKDB8''@;'; put 'put ''YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPW0rNCxjPj4+MD4xOyljPWMrLTF8MDtyZXR1cm4gb2U9cCwwfGx9ZnVuY3Rpb24gQiQobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDtlOmRve2lmKDB8bClzd2l0Y2goMHxjKXtjYXNlLTI6dWVbbD4+MF09ZjticmVhayBlO2Nhc2UtMTpUdFts''@;'; put 'put ''Pj4xXT1mO2JyZWFrIGU7Y2FzZSAwOmNhc2UgMTphW2w+PjJdPWY7YnJlYWsgZTtjYXNlIDM6YVsoYz1sKT4+Ml09ZixhW2MrND4+Ml09cDticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCl9ZnVuY3Rpb24gQ2NlKGwpe3JldHVybiAwfCgobHw9MCk/MD09KDB8YVtsPj4yXSkmMTox''@;'; put 'put ''KX1mdW5jdGlvbiBQJChsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtzd2l0Y2goMHwoY3w9MCkpe2Nhc2UgMDprPS0xNDksTT0yNCx3PTQ7YnJlYWs7Y2FzZSAxOmNhc2UgMjprPS0xMDc0LE09NTMsdz00O2JyZWFrO2RlZmF1bHQ6cD0w''@;'; put 'put ''fWU6ZG97aWYoND09KDB8dykpe1I9bCs0fDAsRD1sKzEwMHwwO2RveyhjPTB8YVtSPj4yXSk+Pj4wPCgwfGFbRD4+Ml0pPj4+MD8oYVtSPj4yXT1jKzEsYz0wfGJ0W2M+PjBdKTpjPTB8RmwobCl9d2hpbGUoMCE9KDB8S2MoYykpKTt0OmRve3N3aXRjaCgwfGMpe2Nhc2UgNDM6Y2FzZSA0NTpp''@;'; put 'put ''ZihBPTEtKCg0NT09KDB8YykmMSk8PDEpfDAsKGM9MHxhW1I+PjJdKT4+PjA8KDB8YVtEPj4yXSk+Pj4wKXthW1I+PjJdPWMrMSxtPTB8YnRbYz4+MF07YnJlYWsgdH1tPTB8RmwobCk7YnJlYWsgdDtkZWZhdWx0Om09YyxBPTF9fXdoaWxlKDApO2M9MDtkb3tpZigoMzJ8bSkhPSgwfHVlWzE1''@;'; put 'put ''MzU4NCtjPj4wXSkpYnJlYWs7ZG97aWYoYz4+PjA8Nyl7aWYoKG09MHxhW1I+PjJdKT4+PjA8KDB8YVtEPj4yXSk+Pj4wKXthW1I+PjJdPW0rMSxtPTB8YnRbbT4+MF07YnJlYWt9bT0wfEZsKGwpO2JyZWFrfX13aGlsZSgwKTtjPWMrMXwwfXdoaWxlKGM+Pj4wPDgpO3Q6ZG97c3dpdGNoKDB8''@;'; put 'put ''Yyl7Y2FzZSA4OmJyZWFrO2Nhc2UgMzp3PTIzO2JyZWFrO2RlZmF1bHQ6aWYoKGI9MCE9KDB8ZikpJmM+Pj4wPjMpe2lmKDg9PSgwfGMpKWJyZWFrIHQ7dz0yMzticmVhayB0fW46ZG97aWYoIWMpe2M9MDtkb3tpZigoMzJ8bSkhPSgwfHVlWzE1MzU5MytjPj4wXSkpYnJlYWsgbjtkb3tpZihj''@;'; put 'put ''Pj4+MDwyKXtpZigobT0wfGFbUj4+Ml0pPj4+MDwoMHxhW0Q+PjJdKT4+PjApe2FbUj4+Ml09bSsxLG09MHxidFttPj4wXTticmVha31tPTB8RmwobCk7YnJlYWt9fXdoaWxlKDApO2M9YysxfDB9d2hpbGUoYz4+PjA8Myl9fXdoaWxlKDApO3N3aXRjaCgwfGMpe2Nhc2UgMzppZigoYz0wfGFb''@;'; put 'put ''Uj4+Ml0pPj4+MDwoMHxhW0Q+PjJdKT4+PjA/KGFbUj4+Ml09YysxLGM9MHxidFtjPj4wXSk6Yz0wfEZsKGwpLDQwIT0oMHxjKSl7aWYoISgwfGFbRD4+Ml0pKXtwPSQyO2JyZWFrIGV9YVtSPj4yXT0oMHxhW1I+PjJdKS0xLHA9JDI7YnJlYWsgZX1mb3IoYz0xOyhtPTB8YVtSPj4yXSk+Pj4w''@;'; put 'put ''PCgwfGFbRD4+Ml0pPj4+MD8oYVtSPj4yXT1tKzEsbT0wfGJ0W20+PjBdKTptPTB8RmwobCksKG0rLTQ4fDApPj4+MDwxMHwobSstNjV8MCk+Pj4wPDI2fHw5NT09KDB8bSl8KG0rLTk3fDApPj4+MDwyNjspYz1jKzF8MDtpZig0MT09KDB8bSkpe3A9JDI7YnJlYWsgZX1pZigobT0wPT0oMHxh''@;'; put 'put ''W0Q+PjJdKSl8fChhW1I+PjJdPSgwfGFbUj4+Ml0pLTEpLCFiKXthWzQ3NjQzXT0yMixjaChsLDApLHA9MDticmVhayBlfWlmKCFjKXtwPSQyO2JyZWFrIGV9Zm9yKDs7KWlmKGM9YystMXwwLG18fChhW1I+PjJdPSgwfGFbUj4+Ml0pLTEpLCFjKXtwPSQyO2JyZWFrIGV9Y2FzZSAwOmlmKDQ4''@;'; put 'put ''PT0oMHxtKSl7aWYoKGM9MHxhW1I+PjJdKT4+PjA8KDB8YVtEPj4yXSk+Pj4wPyhhW1I+PjJdPWMrMSxjPTB8YnRbYz4+MF0pOmM9MHxGbChsKSwxMjA9PSgzMnxjKSl7cD0ra2NlKGwsTSxrLEEsZik7YnJlYWsgZX0wfGFbRD4+Ml0mJihhW1I+PjJdPSgwfGFbUj4+Ml0pLTEpLGM9NDh9ZWxz''@;'; put 'put ''ZSBjPW07cD0rU2NlKGwsYyxNLGssQSxmKTticmVhayBlO2RlZmF1bHQ6MHxhW0Q+PjJdJiYoYVtSPj4yXT0oMHxhW1I+PjJdKS0xKSxhWzQ3NjQzXT0yMixjaChsLDApLHA9MDticmVhayBlfX19d2hpbGUoMCk7aWYoMjM9PSgwfHcpJiYoKG09MD09KDB8YVtEPj4yXSkpfHwoYVtSPj4yXT0o''@;'; put 'put ''MHxhW1I+PjJdKS0xKSwwIT0oMHxmKSZjPj4+MD4zKSlkb3ttfHwoYVtSPj4yXT0oMHxhW1I+PjJdKS0xKSxjPWMrLTF8MH13aGlsZShjPj4+MD4zKTtwPSsoMHxBKSpNc319d2hpbGUoMCk7cmV0dXJuK3B9ZnVuY3Rpb24ga2NlKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIg''@;'; put 'put ''amUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxldD0wOyh3PTB8YVsoZXQ9NCsobHw9MCl8MCk+PjJdKT4+PjA8KDB8YVsoamU9bCsxMDB8MCk+PjJdKT4+PjA/KGFbZXQ+PjJdPXcrMSxiPTB8YnRbdz4+MF0s''@;'; put 'put ''TT0wKTooYj0wfEZsKGwpLE09MCk7ZTpmb3IoOzspe3N3aXRjaCgwfGIpe2Nhc2UgNDY6SGU9ODticmVhayBlO2Nhc2UgNDg6YnJlYWs7ZGVmYXVsdDpiZT0wLFI9MCxHPTEsQT0wLHc9MCxEPWIsT2U9TSxCZT0wLExlPTAsTT0wLGI9MDticmVhayBlfSh3PTB8YVtldD4+Ml0pPj4+MDwoMHxh''@;'; put 'put ''W2plPj4yXSk+Pj4wPyhhW2V0Pj4yXT13KzEsYj0wfGJ0W3c+PjBdLE09MSk6KGI9MHxGbChsKSxNPTEpfWlmKDg9PSgwfEhlKSlpZigodz0wfGFbZXQ+PjJdKT4+PjA8KDB8YVtqZT4+Ml0pPj4+MD8oYVtldD4+Ml09dysxLGI9MHxidFt3Pj4wXSk6Yj0wfEZsKGwpLDQ4PT0oMHxiKSl7TT0w''@;'; put 'put ''LGI9MDtkb3sodz0wfGFbZXQ+PjJdKT4+PjA8KDB8YVtqZT4+Ml0pPj4+MD8oYVtldD4+Ml09dysxLEQ9MHxidFt3Pj4wXSk6RD0wfEZsKGwpLE09MHxIbCgwfE0sMHxiLC0xLC0xKSxiPU9ufXdoaWxlKDQ4PT0oMHxEKSk7YmU9MSxSPTAsRz0xLEE9MCx3PTAsT2U9MSxCZT0wLExlPTB9ZWxz''@;'; put 'put ''ZSBiZT0xLFI9MCxHPTEsQT0wLHc9MCxEPWIsT2U9TSxCZT0wLExlPTAsTT0wLGI9MDtmb3IoOzspe2lmKEs9MzJ8RCwocGU9RCstNDh8MCk+Pj4wPj0xMCl7aWYoISgobWU9NDY9PSgwfEQpKXwoSystOTd8MCk+Pj4wPDYpKWJyZWFrO2lmKG1lKXtpZihiZSl7RD00NjticmVha31iZT0xLGs9''@;'; put 'put ''RyxtZT1PZSxNPUxlLGI9QmUscGU9TGUsSz1CZX1lbHNlIEhlPTIwfWVsc2UgSGU9MjA7aWYoMjA9PSgwfEhlKSl7SGU9MCxEPSgwfEQpPjU3P0srLTg3fDA6cGU7ZG97aWYoISgoMHxCZSk8MHwwPT0oMHxCZSkmTGU+Pj4wPDgpKXtpZigoMHxCZSk8MHwwPT0oMHxCZSkmTGU+Pj4wPDE0KXtr''@;'; put 'put ''PUcqPS4wNjI1LEErPUcqKygwfEQpO2JyZWFrfVI9KE9lPTAhPSgwfFIpfDA9PSgwfEQpKT9SOjEsaz1HLEE9T2U/QTpBKy41Kkc7YnJlYWt9az1HLHc9RCsodzw8NCl8MH13aGlsZSgwKTtwZT0wfEhsKDB8TGUsMHxCZSwxLDApLG1lPTEsSz1Pbn0oRD0wfGFbZXQ+PjJdKT4+PjA8KDB8YVtq''@;'; put 'put ''ZT4+Ml0pPj4+MD8oYVtldD4+Ml09RCsxLEc9ayxEPTB8YnRbRD4+MF0sT2U9bWUsQmU9SyxMZT1wZSk6KEc9ayxEPTB8RmwobCksT2U9bWUsQmU9SyxMZT1wZSl9ZG97aWYoT2Upe2lmKHBlPShLPTA9PSgwfGJlKSk/TGU6TSxLPUs/QmU6YiwoMHxCZSk8MHwwPT0oMHxCZSkmTGU+Pj4wPDgp''@;'; put 'put ''Zm9yKE09TGUsYj1CZTs7KXtpZih3PDw9NCxIZT1NLE09MHxIbCgwfE0sMHxiLDEsMCksISgoMHxiKTwwfDA9PSgwfGIpJkhlPj4+MDw3KSl7Uj13O2JyZWFrfWI9T259ZWxzZSBSPXc7aWYoMTEyPT0oMzJ8RCkpe2lmKDA9PSgwfChiPTB8RiQobCxtKSkpJi0yMTQ3NDgzNjQ4PT0oMHwodz1P''@;'; put 'put ''bikpKXtpZighbSl7Y2gobCwwKSxBPTA7YnJlYWt9MHxhW2plPj4yXT8oYVtldD4+Ml09KDB8YVtldD4+Ml0pLTEsYj0wLHc9MCk6KGI9MCx3PTApfX1lbHNlIDB8YVtqZT4+Ml0/KGFbZXQ+PjJdPSgwfGFbZXQ+PjJdKS0xLGI9MCx3PTApOihiPTAsdz0wKTtpZihNPTB8SGwoMHwoTT0wfGNz''@;'; put 'put ''KDB8cGUsMHxLLDIpKSwwfE9uLC0zMiwtMSksTT0wfEhsKDB8TSwwfE9uLDB8YiwwfHcpLHc9T24sIVIpe0E9MCorKDB8cCk7YnJlYWt9aWYoKDB8dyk+KDB8KG09KCgwfChldD0wLWZ8MCkpPDApPDwzMT4+MzEpKXwoMHx3KT09KDB8bSkmTT4+PjA+ZXQ+Pj4wKXthWzQ3NjQzXT0zNCxBPTE3''@;'; put 'put ''OTc2OTMxMzQ4NjIzMTU3ZTI5MiorKDB8cCkqMTc5NzY5MzEzNDg2MjMxNTdlMjkyO2JyZWFrfWlmKCgwfHcpPCgwfChtPSgoMHwoZXQ9ZistMTA2fDApKTwwKTw8MzE+PjMxKSl8KDB8dyk9PSgwfG0pJk0+Pj4wPGV0Pj4+MCl7YVs0NzY0M109MzQsQT0yMjI1MDczODU4NTA3MjAxNGUtMzI0''@;'; put 'put ''KisoMHxwKSoyMjI1MDczODU4NTA3MjAxNGUtMzI0O2JyZWFrfWlmKCgwfFIpPi0xKXtiPVI7ZG97Yj1iPDwxfDEmKDFeKGV0PSEoQT49LjUpKSksQSs9ZXQ/QTpBKy0xLE09MHxIbCgwfE0sMHx3LC0xLC0xKSx3PU9ufXdoaWxlKCgwfGIpPi0xKTtHPUEsRD1ifWVsc2UgRz1BLEQ9UjtldD0o''@;'; put 'put ''KDB8Yyk8MCk8PDMxPj4zMSx3PTB8SGwoMHwoZj0wfGdwKDMyLDAsMHxmLCgoMHxmKTwwKTw8MzE+PjMxfDApKSwwfE9uLDB8TSwwfHcpLCgwfChmPU9uKSk8KDB8ZXQpfCgwfGYpPT0oMHxldCkmdz4+PjA8Yz4+PjA/KDB8dyk+MD9IZT01OTooYj0wLHc9ODQsSGU9NjEpOih3PWMsSGU9NTkp''@;'; put 'put ''LDU5PT0oMHxIZSkmJigoMHx3KTw1Mz8oYj13LHc9ODQtd3wwLEhlPTYxKTooaz0wLEE9KygwfHApKSksNjE9PSgwfEhlKSYmKEE9KygwfHApLGs9K3YkKCtjZygxLHcpLEEpLHc9YiksMD09KEE9KChwPTA9PSgxJkR8MCkmMCE9RyYoMHx3KTwzMik/MDpHKSpBKyhrK0EqKygoRCsoMSZwKXww''@;'; put 'put ''KT4+PjApKS1rKSYmKGFbNDc2NDNdPTM0KSxBPStBJChBLE0pfWVsc2Uodz0wPT0oMHxhW2plPj4yXSkpfHwoYVtldD4+Ml09KDB8YVtldD4+Ml0pLTEpLG0/KHd8fChhW2V0Pj4yXT0oMHxhW2V0Pj4yXSktMSksMD09KDB8YmUpfHd8fChhW2V0Pj4yXT0oMHxhW2V0Pj4yXSktMSkpOmNoKGws''@;'; put 'put ''MCksQT0wKisoMHxwKX13aGlsZSgwKTtyZXR1cm4rQX1mdW5jdGlvbiBTY2UobCxjLGYscCxtLEEpe2N8PTAsbXw9MCxBfD0wO3ZhciBrdCxFdCxadCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0''@;'; put 'put ''PTAsR2U9MCxsdD0wLE10PTAsYXQ9MCx1dD0wO1p0PW9lLG9lPW9lKzUxMnwwLGt0PVp0LEV0PTAtKGF0PShwfD0wKSsoZnw9MCl8MCl8MCxHZT00KyhsfD0wKXwwLGx0PWwrMTAwfDAsaz0wO2U6Zm9yKDs7KXtzd2l0Y2goMHxjKXtjYXNlIDQ2OmV0PTY7YnJlYWsgZTtjYXNlIDQ4OmJyZWFr''@;'; put 'put ''O2RlZmF1bHQ6TGU9MCxHPWssSz0wLFI9MDticmVhayBlfShjPTB8YVtHZT4+Ml0pPj4+MDwoMHxhW2x0Pj4yXSk+Pj4wPyhhW0dlPj4yXT1jKzEsYz0wfGJ0W2M+PjBdLGs9MSk6KGM9MHxGbChsKSxrPTEpfWlmKDY9PSgwfGV0KSlpZigoYz0wfGFbR2U+PjJdKT4+PjA8KDB8YVtsdD4+Ml0p''@;'; put 'put ''Pj4+MD8oYVtHZT4+Ml09YysxLGM9MHxidFtjPj4wXSk6Yz0wfEZsKGwpLDQ4PT0oMHxjKSlmb3Ioaz0wLGM9MDs7KXtpZihrPTB8SGwoMHxrLDB8YywtMSwtMSksUj1PbiwoYz0wfGFbR2U+PjJdKT4+PjA8KDB8YVtsdD4+Ml0pPj4+MD8oYVtHZT4+Ml09YysxLGM9MHxidFtjPj4wXSk6Yz0w''@;'; put 'put ''fEZsKGwpLDQ4IT0oMHxjKSl7TGU9MSxHPTEsSz1rO2JyZWFrfWM9Un1lbHNlIExlPTEsRz1rLEs9MCxSPTA7YVtrdD4+Ml09MCxEPWMrLTQ4fDAsTT00Nj09KDB8Yyk7ZTpkb3tpZihNfEQ+Pj4wPDEwKXtydD1rdCs0OTZ8MCxCZT0wLGs9MCxPZT0wLEhlPUxlLGplPUcsZXQ9RCxHPTAsRD0w''@;'; put 'put ''O3Q6Zm9yKDs7KXtkb3tpZihNKXtpZihIZSlicmVhayB0O0hlPTEsSz1HLFI9RH1lbHNle2lmKEc9MHxIbCgwfEcsMHxELDEsMCksRD1PbixMZT00OCE9KDB8YyksKDB8ayk+PTEyNSl7aWYoIUxlKWJyZWFrO2FbcnQ+PjJdPTF8YVtydD4+Ml07YnJlYWt9YVsoTT1rdCsoazw8Mil8MCk+PjJd''@;'; put 'put ''PWM9QmU/YystNDgrKDEwKigwfGFbTT4+Ml0pfDApfDA6ZXQsQmU9KGplPTk9PSgwfChCZT1CZSsxfDApKSk/MDpCZSxrPWsrKDEmamUpfDAsT2U9TGU/RzpPZSxqZT0xfX13aGlsZSgwKTtpZigoYz0wfGFbR2U+PjJdKT4+PjA8KDB8YVtsdD4+Ml0pPj4+MD8oYVtHZT4+Ml09YysxLGM9MHxi''@;'; put 'put ''dFtjPj4wXSk6Yz0wfEZsKGwpLCEoKE09NDY9PSgwfGMpKXwoZXQ9YystNDh8MCk+Pj4wPDEwKSl7TGU9SGUsTT1qZSxldD0yOTticmVhayBlfX1jPUJlLE09MCE9KDB8amUpLGV0PTM3fWVsc2UgQmU9MCxrPTAsT2U9MCxNPUcsRz0wLEQ9MCxldD0yOX13aGlsZSgwKTtkb3tpZigyOT09KDB8''@;'; put 'put ''ZXQpKXtpZihLPShydD0wPT0oMHxMZSkpP0c6SyxSPXJ0P0Q6UiwhKChNPTAhPSgwfE0pKSYxMDE9PSgzMnxjKSkpe2lmKCgwfGMpPi0xKXtjPUJlLGV0PTM3O2JyZWFrfWM9QmUsZXQ9Mzk7YnJlYWt9aWYoMD09KDB8KE09MHxGJChsLEEpKSkmLTIxNDc0ODM2NDg9PSgwfChjPU9uKSkpe2lm''@;'; put 'put ''KCFBKXtjaChsLDApLHc9MDticmVha30wfGFbbHQ+PjJdPyhhW0dlPj4yXT0oMHxhW0dlPj4yXSktMSxNPTAsYz0wKTooTT0wLGM9MCl9amU9MHxIbCgwfE0sMHxjLDB8SywwfFIpLGM9QmUsUj1PbixldD00MX19d2hpbGUoMCk7Mzc9PSgwfGV0KSYmKDB8YVtsdD4+Ml0/KGFbR2U+PjJdPSgw''@;'; put 'put ''fGFbR2U+PjJdKS0xLE0/KGplPUssZXQ9NDEpOmV0PTQwKTpldD0zOSksMzk9PSgwfGV0KSYmKE0/KGplPUssZXQ9NDEpOmV0PTQwKTtkb3tpZig0MD09KDB8ZXQpKWFbNDc2NDNdPTIyLGNoKGwsMCksdz0wO2Vsc2UgaWYoNDE9PSgwfGV0KSl7aWYoIShNPTB8YVtrdD4+Ml0pKXt3PTAqKygw''@;'; put 'put ''fG0pO2JyZWFrfWlmKCgwfGplKT09KDB8RykmKDB8Uik9PSgwfEQpJigoMHxEKTwwfDA9PSgwfEQpJkc+Pj4wPDEwKSYmKDB8Zik+MzB8MD09KE0+Pj5mfDApKXt3PSsoMHxtKSorKE0+Pj4wKTticmVha31pZigoMHxSKT4oMHwobHQ9KCgwfChsPSgwfHApLy0yfDApKTwwKTw8MzE+PjMxKSl8''@;'; put 'put ''KDB8Uik9PSgwfGx0KSZqZT4+PjA+bD4+PjApe2FbNDc2NDNdPTM0LHc9MTc5NzY5MzEzNDg2MjMxNTdlMjkyKisoMHxtKSoxNzk3NjkzMTM0ODYyMzE1N2UyOTI7YnJlYWt9aWYoKDB8Uik8KDB8KGx0PSgoMHwobD1wKy0xMDZ8MCkpPDApPDwzMT4+MzEpKXwoMHxSKT09KDB8bHQpJmplPj4+''@;'; put 'put ''MDxsPj4+MCl7YVs0NzY0M109MzQsdz0yMjI1MDczODU4NTA3MjAxNGUtMzI0KisoMHxtKSoyMjI1MDczODU4NTA3MjAxNGUtMzI0O2JyZWFrfWlmKGMpe2lmKCgwfGMpPDkpe2ZvcihNPTB8YVsoRD1rdCsoazw8Mil8MCk+PjJdO009MTAqTXwwLCEoKDB8Yyk+PTgpOyljPWMrMXwwO2FbRD4+''@;'; put 'put ''Ml09TX1rPWsrMXwwfWlmKCgwfE9lKTw5JiYoMHxPZSk8PSgwfGplKSYoMHxqZSk8MTgpe2lmKDk9PSgwfGplKSl7dz0rKDB8bSkqKygoMHxhW2t0Pj4yXSk+Pj4wKTticmVha31pZigoMHxqZSk8OSl7dz0rKDB8bSkqKygoMHxhW2t0Pj4yXSk+Pj4wKS8rKDB8YVs2MzcxMisoOC1qZTw8Mik+''@;'; put 'put ''PjJdKTticmVha31pZigoMHwobD1mKzI3KygwfHZyKGplLC0zKSl8MCkpPjMwfDA9PSgoYz0wfGFba3Q+PjJdKT4+Pmx8MCkpe3c9KygwfG0pKisoYz4+PjApKisoMHxhWzYzNzEyKyhqZSstMTA8PDIpPj4yXSk7YnJlYWt9fWlmKGM9KDB8amUpJTl8MCl7aWYoRz0wfGFbNjM3MTIrKDgtKE9l''@;'; put 'put ''PSgwfGplKT4tMT9jOmMrOXwwKTw8Mik+PjJdLGspe0s9MWU5LygwfEcpfDAsRD0wLFI9MCxNPWplLGM9MDtkb3thWyhHZT1rdCsoYzw8Mil8MCk+PjJdPWw9KCgobHQ9MHxhW0dlPj4yXSk+Pj4wKS8oRz4+PjApfDApK0R8MCxEPTB8dnIoSywobHQ+Pj4wKSUoRz4+PjApfDApLE09KGw9KDB8''@;'; put 'put ''Yyk9PSgwfFIpJjA9PSgwfGwpKT9NKy05fDA6TSxSPWw/UisxJjEyNzpSLGM9YysxfDB9d2hpbGUoKDB8YykhPSgwfGspKTtEPyhhW2t0KyhrPDwyKT4+Ml09RCxEPVIsaz1rKzF8MCk6RD1SfWVsc2UgRD0wLGs9MCxNPWplO2M9MCxqZT05LU9lK018MH1lbHNlIGM9MCxEPTA7ZTpmb3IoOzsp''@;'; put 'put ''e2ZvcihPZT0oMHxqZSk8MTgsTGU9MTg9PSgwfGplKSxCZT1rdCsoRDw8Mil8MDs7KXtpZighT2Upe2lmKCFMZSl7TT1qZTticmVhayBlfWlmKCgwfGFbQmU+PjJdKT4+PjA+PTkwMDcxOTkpe009MTg7YnJlYWsgZX19Zm9yKE09MCxIZT1rLGs9aysxMjd8MDtrPTB8SGwoMHwoaz0wfGNzKDB8''@;'; put 'put ''YVsoRz1rdCsoKFI9MTI3JmspPDwyKXwwKT4+Ml0sMCwyOSkpLDB8T24sMHxNLDApLChNPU9uKT4+PjA+MHwwPT0oMHxNKSZrPj4+MD4xZTk/KEs9MHxkdygwfGssMHxNLDFlOSwwKSxrPTB8dlMoMHxrLDB8TSwxZTksMCkpOks9MCxhW0c+PjJdPWssSGU9MD09KDB8aykmKDFeKCgwfFIpIT0o''@;'; put 'put ''SGUrMTI3JjEyN3wwKXwobD0oMHxSKT09KDB8RCkpKSk/UjpIZSwhbDspTT1LLGs9UistMXwwO2lmKGM9YystMjl8MCwwfEspYnJlYWs7az1IZX1rPUhlKzEyNyYxMjcsTT1rdCsoKEhlKzEyNiYxMjcpPDwyKXwwLCgwfChEPUQrMTI3JjEyNykpPT0oMHxIZSk/YVtNPj4yXT1hW00+PjJdfGFb''@;'; put 'put ''a3QrKGs8PDIpPj4yXTprPUhlLGFba3QrKEQ8PDIpPj4yXT1LLGplPWplKzl8MH1lOmZvcig7Oyl7Zm9yKEJlPWsrMSYxMjcsSGU9a3QrKChrKzEyNyYxMjcpPDwyKXwwOzspe2ZvcihLPTE4PT0oMHxNKSxMZT0oMHxNKT4yNz85OjEsamU9RDs7KXtmb3IoRz0wOzspe2lmKCgwfChEPUcramUm''@;'; put 'put ''MTI3KSk9PSgwfGspKXtNdD0yLGV0PTg4O2JyZWFrfWlmKChEPTB8YVtrdCsoRDw8Mik+PjJdKT4+PjA8KFI9MHxhWzYzNzQ0KyhHPDwyKT4+Ml0pPj4+MCl7TXQ9MixldD04ODticmVha31pZihEPj4+MD5SPj4+MClicmVhaztpZihEPUcrMXwwLCEoKDB8Ryk8MSkpe010PUQsZXQ9ODg7YnJl''@;'; put 'put ''YWt9Rz1EfWlmKDg4PT0oMHxldCkmJihldD0wLEsmMj09KDB8TXQpKSl7dz0wLFI9MDticmVhayBlfWlmKGM9TGUrY3wwLCgwfGplKSE9KDB8aykpYnJlYWs7amU9a31LPSgxPDxMZSktMXwwLE9lPTFlOT4+PkxlLEc9MCxEPWplLFI9amU7ZG97YVsoR2U9a3QrKFI8PDIpfDApPj4yXT1sPSgo''@;'; put 'put ''bHQ9MHxhW0dlPj4yXSk+Pj5MZSkrR3wwLEc9MHx2cihsdCZLLE9lKSxNPShsPSgwfFIpPT0oMHxEKSYwPT0oMHxsKSk/TSstOXwwOk0sRD1sP0QrMSYxMjc6RCxSPVIrMSYxMjd9d2hpbGUoKDB8UikhPSgwfGspKTtpZihHKXtpZigoMHxCZSkhPSgwfEQpKWJyZWFrO2FbSGU+PjJdPTF8YVtI''@;'; put 'put ''ZT4+Ml19fWFba3QrKGs8PDIpPj4yXT1HLGs9QmV9ZG97TT1rKzEmMTI3LCgwfChEPVIramUmMTI3KSk9PSgwfGspJiYoYVtrdCsoTSstMTw8Mik+PjJdPTAsaz1NKSx3PTFlOSp3KyArKCgwfGFba3QrKEQ8PDIpPj4yXSk+Pj4wKSxSPVIrMXwwfXdoaWxlKDIhPSgwfFIpKTtpZihiPXcqKGJl''@;'; put 'put ''PSsoMHxtKSksKDB8KEQ9KEs9KDB8KEc9KFI9Yys1M3wwKS1wfDApKTwoMHxmKSk/KDB8Ryk+MD9HOjA6ZikpPDUzPyhtZT11dD0rdiQoK2NnKDEsMTA1LUR8MCksYiksdz1wZT0reSQoYiwrY2coMSw1My1EfDApKSxwZT11dCsoYi1wZSkpOihtZT0wLHc9MCxwZT1iKSwoMHwoTT1qZSsyJjEy''@;'; put 'put ''NykpIT0oMHxrKSl7TT0wfGFba3QrKE08PDIpPj4yXTtkb3tpZihNPj4+MD49NWU4KXtpZig1ZTghPSgwfE0pKXt3PS43NSpiZSt3O2JyZWFrfWlmKChqZSszJjEyN3wwKT09KDB8aykpe3c9LjUqYmUrdzticmVha313PS43NSpiZSt3O2JyZWFrfWlmKDA9PSgwfE0pJiYoamUrMyYxMjd8MCk9''@;'; put 'put ''PSgwfGspKWJyZWFrO3c9LjI1KmJlK3d9d2hpbGUoMCk7Yj0oNTMtRHwwKT4xJiYwPT0reSQodywxKT93KzE6d31lbHNlIGI9dzt3PXBlK2ItbWU7ZG97aWYoKDIxNDc0ODM2NDcmUnwwKT4oLTItYXR8MCkpe2lmKHc9KGF0PSEoK2VvKCt3KT49OTAwNzE5OTI1NDc0MDk5MikpP3c6LjUqdywo''@;'; put 'put ''NTArKGM9YysoMSYoMV5hdCkpfDApfDApPD0oMHxFdCkmJiEoMCE9YiZLJigoMHxEKSE9KDB8Ryl8YXQpKSlicmVhazthWzQ3NjQzXT0zNH19d2hpbGUoMCk7dz0rQSQodyxjKX19d2hpbGUoMCk7cmV0dXJuIG9lPVp0LCt3fWZ1bmN0aW9uIEYkKGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09''@;'; put 'put ''MCx3PTA7c3dpdGNoKChmPTB8YVsoQT00KyhsfD0wKXwwKT4+Ml0pPj4+MDwoMHxhWyh3PWwrMTAwfDApPj4yXSk+Pj4wPyhhW0E+PjJdPWYrMSxmPTB8YnRbZj4+MF0pOmY9MHxGbChsKSwwfGYpe2Nhc2UgNDM6Y2FzZSA0NTpwPTQ1PT0oMHxmKSYxLChmPTB8YVtBPj4yXSk+Pj4wPCgwfGFb''@;'; put 'put ''dz4+Ml0pPj4+MD8oYVtBPj4yXT1mKzEsZj0wfGJ0W2Y+PjBdKTpmPTB8RmwobCksMCE9KDB8YykmKGYrLTQ4fDApPj4+MD45JiYwIT0oMHxhW3c+PjJdKSYmKGFbQT4+Ml09KDB8YVtBPj4yXSktMSk7YnJlYWs7ZGVmYXVsdDpwPTB9aWYoKGYrLTQ4fDApPj4+MD45KTB8YVt3Pj4yXT8oYVtB''@;'; put 'put ''Pj4yXT0oMHxhW0E+PjJdKS0xLHA9LTIxNDc0ODM2NDgsZj0wKToocD0tMjE0NzQ4MzY0OCxmPTApO2Vsc2V7bT0wO2Rve209ZistNDgrKDEwKm18MCl8MCwoZj0wfGFbQT4+Ml0pPj4+MDwoMHxhW3c+PjJdKT4+PjA/KGFbQT4+Ml09ZisxLGY9MHxidFtmPj4wXSk6Zj0wfEZsKGwpfXdoaWxl''@;'; put 'put ''KChmKy00OHwwKT4+PjA8MTAmKDB8bSk8MjE0NzQ4MzY0KTtpZihjPSgoMHxtKTwwKTw8MzE+PjMxLChmKy00OHwwKT4+PjA8MTApZG97Yz0wfGh3KDB8bSwwfGMsMTAsMCksbT1PbixmPTB8SGwoMHxmLCgoMHxmKTwwKTw8MzE+PjMxfDAsLTQ4LC0xKSxtPTB8SGwoMHxmLDB8T24sMHxjLDB8''@;'; put 'put ''bSksYz1PbiwoZj0wfGFbQT4+Ml0pPj4+MDwoMHxhW3c+PjJdKT4+PjA/KGFbQT4+Ml09ZisxLGY9MHxidFtmPj4wXSk6Zj0wfEZsKGwpfXdoaWxlKChmKy00OHwwKT4+PjA8MTAmKCgwfGMpPDIxNDc0ODM2fDIxNDc0ODM2PT0oMHxjKSZtPj4+MDwyMDYxNTg0MzAyKSk7aWYoKGYrLTQ4fDAp''@;'; put 'put ''Pj4+MDwxMClkb3soZj0wfGFbQT4+Ml0pPj4+MDwoMHxhW3c+PjJdKT4+PjA/KGFbQT4+Ml09ZisxLGY9MHxidFtmPj4wXSk6Zj0wfEZsKGwpfXdoaWxlKChmKy00OHwwKT4+PjA8MTApOzB8YVt3Pj4yXSYmKGFbQT4+Ml09KDB8YVtBPj4yXSktMSksdz0wIT0oMHxwKSxmPTB8Z3AoMCwwLDB8''@;'; put 'put ''bSwwfGMpLHA9dz9PbjpjLGY9dz9mOm19cmV0dXJuIE9uPXAsMHxmfWZ1bmN0aW9uIHFoKGwsYyxmKXtyZXR1cm4gMHxmdW5jdGlvbiBNY2UobCxjLGYpe2N8PTAsZnw9MDtyZXR1cm4oMHxhWzc2KyhsfD0wKT4+Ml0pPi0xPyghMCxjPTB8TiQobCxjLGYpKTpjPTB8TiQobCxjLGYpLDB8Y30o''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTApfWZ1bmN0aW9uIE4kKGwsYyxmKXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAsMT09KDB8KGZ8PTApKSYmKGM9Yy0oMHxhW2wrOD4+Ml0pKygwfGFbbCs0Pj4yXSl8MCksKDB8YVsocD1sKzIwfDApPj4yXSk+Pj4wPigwfGFbKG09bCsyOHwwKT4+Ml0pPj4+MCYmKG1p''@;'; put 'put ''WzYzJmFbbCszNj4+Ml1dKGwsMCwwKSwwPT0oMHxhW3A+PjJdKSk/Yz0tMTooYVtsKzE2Pj4yXT0wLGFbbT4+Ml09MCxhW3A+PjJdPTAsKDB8bWlbNjMmYVtsKzQwPj4yXV0obCxjLGYpKTwwP2M9LTE6KGFbbCs4Pj4yXT0wLGFbbCs0Pj4yXT0wLGFbbD4+Ml09LTE3JmFbbD4+Ml0sYz0wKSks''@;'; put 'put ''MHxjfWZ1bmN0aW9uIGUzKGwpe2x8PTA7Zm9yKHZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDttPWwrMXwwLDB8S2MoYz0ocD0wfHVlW2w+PjBdKTw8MjQ+PjI0KTspbD1tO3N3aXRjaCgwfGMpe2Nhc2UgNDU6bD0xLEE9NTticmVhaztjYXNlIDQzOmw9MCxBPTU7YnJlYWs7ZGVmYXVsdDp3''@;'; put 'put ''PTAsZj1sLGw9cH1pZig1PT0oMHxBKSYmKHc9bCxmPW0sbD0wfHVlW20+PjBdKSwoYz0obDw8MjQ+PjI0KS00OHwwKT4+PjA8MTApe2w9MDtkb3tsPSgxMCpsfDApLWN8MCxjPSgwfHVlWyhmPWYrMXwwKT4+MF0pLTQ4fDB9d2hpbGUoYz4+PjA8MTApfWVsc2UgbD0wO3JldHVybiAwfCgwfHc/''@;'; put 'put ''bDowLWx8MCl9ZnVuY3Rpb24gcHAobCl7cmV0dXJuKyArdDMobHw9MCwwKX1mdW5jdGlvbiB0MyhsLGMpe3JldHVybisgK2Z1bmN0aW9uIEVjZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHAsdyxiLG09MCxBPTA7Yj1vZSxvZT1vZSsxMjh8MCxBPShtPXc9YikrMTI0fDA7ZG97YVttPj4y''@;'; put 'put ''XT0wLG09bSs0fDB9d2hpbGUoKDB8bSk8KDB8QSkpO3JldHVybiBhWyhtPXcrNHwwKT4+Ml09bCxhWyhBPXcrOHwwKT4+Ml09LTEsYVt3KzQ0Pj4yXT1sLGFbdys3Nj4+Ml09LTEsY2godywwKSxwPStQJCh3LGYsMSksZj0oMHxhW20+PjJdKS0oMHxhW0E+PjJdKSsoMHxhW3crMTA4Pj4yXSl8''@;'; put 'put ''MCwwfGMmJihhW2M+PjJdPTB8Zj9sK2Z8MDpsKSxvZT1iLCtwfShsfD0wLGN8PTAsMSl9ZnVuY3Rpb24gY3cobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wO2U6ZG97aWYoZilmb3IoYj1jOzspe2lmKGM9YisoMHx2cih3PWY+Pj4xLHApKXwwLCEo''@;'; put 'put ''QT0wfFJpWzEyNyZtXShsLGMpKSlicmVhayBlO2lmKDE9PSgwfGYpKXtjPTA7YnJlYWsgZX1pZighKGY9KEE9KDB8QSk8MCk/dzpmLXd8MCkpe2M9MDticmVha31iPUE/YjpjfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gZncobCl7YVs0NjY1Ml09KGx8PTApLTEsYVs0''@;'; put 'put ''NjY1M109MH1mdW5jdGlvbiBEMSgpe3ZhciBsPTAsYz0wO3JldHVybiBjPTB8SGwoMHwoYz0wfGh3KDB8YVsoYz0xODY2MDgpPj4yXSwwfGFbYys0Pj4yXSwxMjg0ODY1ODM3LDE0ODE3NjU5MzMpKSwwfE9uLDEsMCksbD1PbixhWzQ2NjUyXT1jLGFbNDY2NTNdPWwsMHxadSgwfGMsMHxsLDMz''@;'; put 'put ''KX1mdW5jdGlvbiBmWihsKXt2YXIgYyxmO2x8PTAsYz1vZSxvZT1vZSsxNnwwLFR0WyhmPWMpPj4xXT0xMzA3MCxUdFtmKzI+PjFdPWwsVHRbZis0Pj4xXT1sPj4+MTYsZnVuY3Rpb24gVGNlKGwpe2x8PTAsVHRbOTY4NzZdPTB8VHRbMzI5MjJdLFR0Wzk2ODc3XT0wfFR0WzMyOTIzXSxUdFs5''@;'; put 'put ''Njg3OF09MHxUdFszMjkyNF0sVHRbMzI5MjJdPTB8VHRbbD4+MV0sVHRbMzI5MjNdPTB8VHRbbCsyPj4xXSxUdFszMjkyNF09MHxUdFtsKzQ+PjFdfShmKSxvZT1jfWZ1bmN0aW9uICRjKCl7cmV0dXJuKyArZnVuY3Rpb24gSWNlKGwpe3ZhciBjPTA7cmV0dXJuIGM9MHxjcygwfChjPTB8ZnVu''@;'; put 'put ''Y3Rpb24geGNlKGwsYyl7dmFyIHAsbSxmO3JldHVybiBjPTB8SGwoMHxodygoMHxhclsyKyhjfD0wKT4+MV0pPDwxNnwwfGFyW2M+PjFdfDAsMHxhcltjKzQ+PjFdLCgwfGFyWyhtPTIrKGx8PTApfDApPj4xXSk8PDE2fDB8YXJbbD4+MV18MCwwfGFyWyhwPWwrNHwwKT4+MV0pLDB8T24sMHxh''@;'; put 'put ''cltjKzY+PjFdLDApLGY9T24sVHRbbD4+MV09YyxsPTB8WnUoMHxjLDB8ZiwxNiksVHRbbT4+MV09bCxUdFtwPj4xXT1mLE9uPTY1NTM1JmYsMHxjfShsfD0wLDY1ODUwKSksMHxPbiw0KSxsPTEwNzI2OTMyNDh8T24sYVtraT4+Ml09YyxhW2tpKzQ+PjJdPWwsKygrX1traT4+M10tMSl9KDY1''@;'; put 'put ''ODQ0KX1mdW5jdGlvbiBWJChsLGMpe3JldHVybiBjfD0wLChsfD0wKT8oYVtjPj4yXT0wLGFbYys0Pj4yXT0wLGFbYys4Pj4yXT0wLGFbYysxMj4+Ml09MCxhW2MrMTY+PjJdPTAsYVtjKzIwPj4yXT0wKTpjPTB8VGYoMSwyNCksMHxjfWZ1bmN0aW9uIGRnKGwpe3ZhciBjPTAsZj0wO2lmKDB8''@;'; put 'put ''KGM9MHxhWyhsfD0wKT4+Ml0pKWRve0h0KDB8YVtjPj4yXSksZj1jLGM9MHxhW2MrND4+Ml0sSHQoZil9d2hpbGUoMCE9KDB8YykpO0h0KGwpfWZ1bmN0aW9uICQxKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09MDt3PTE2KyhsfD0wKXwwO2U6''@;'; put 'put ''ZG97aWYoMHxhW3c+PjJdKWM9MDtlbHNle2lmKChBPTB8YVsoTT1sKzEyfDApPj4yXSk+Pj4wPG0+Pj4wKXtkb3tpZihjKXtpZihmKXthWyh3PWwrOHwwKT4+Ml09ZixBPTEwMjQsYz1mO2JyZWFrfWFbdz4+Ml09MSxjPTA7YnJlYWsgZX1pZihBPShBPW08PDMpPj4+MD4xMDI0P0E6MTAyNCwh''@;'; put 'put ''KGs9MHxSMCg4KSkpe2Fbdz4+Ml09MSxjPTA7YnJlYWsgZX1pZihjPTB8UjAoQSksYVtrPj4yXT1jLGY9YywhYyl7SHQoayksYVt3Pj4yXT0xLGM9MDticmVhayBlfWFbays0Pj4yXT0wLDB8KGI9MHxhWyh3PWwrNHwwKT4+Ml0pJiYoYVtiKzQ+PjJdPWspLDB8YVtsPj4yXXx8KGFbbD4+Ml09''@;'; put 'put ''ayksYVt3Pj4yXT1rLGFbKHc9bCs4fDApPj4yXT1mfXdoaWxlKDApO2FbTT4+Ml09QX1lbHNlIGY9Yz0wfGFbKHc9bCs4fDApPj4yXTthW3c+PjJdPWMrKGY9KDA9PSgwfChmPWYrbSYzKSk/MDo0LWZ8MCkrbXwwKSxhW00+PjJdPUEtZixwJiZyMigwfGMsMCwwfGYpfX13aGlsZSgwKTtyZXR1''@;'; put 'put ''cm4gMHxjfWZ1bmN0aW9uIGhaKGwpe0h0KDB8YVsxNisobHw9MCk+PjJdKSxIdChsKX1mdW5jdGlvbiBPY2UobCl7dmFyIEcsSyxwZSxtZSxiZSxPZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO09lPW9lLG9lPW9lKzE2fDAsRz1PZSs0fDAsSz1PZSxwZT0x''@;'; put 'put ''JmFbMzIrKGx8PTApPj4yXSxmPTB8YVsobWU9bCsxNnwwKT4+Ml0sYz0wfEdhKGJlPTB8YVtsKzQ+PjJdLDApO2U6ZG97aWYoIWMpe009MCE9KDB8cGUpLEQ9bCs4fDAsUj1sKzEyfDAsYz0wLGs9MTt0OmZvcig7Oyl7bT0wLEE9YyxwPTA7bjpmb3IoOzspe2lmKGM9MHx1ZVtmPj4wXSxNKXtp''@;'; put 'put ''ZihjPDwyND4+MjQ9PTQwKWJyZWFrO2I9MCE9KDB8QSkmYzw8MjQ+PjI0PT00MT8xMzoxNH1lbHNlIGlmKGM8PDI0Pj4yND09OTIpc3dpdGNoKDB8dWVbZisxPj4wXSl7Y2FzZSA0MDpicmVhayBuO2Nhc2UgNDE6Yj0xMzticmVhaztkZWZhdWx0OmI9MTR9ZWxzZSBiPTE0O2lmKDEzPT0oMHxi''@;'; put 'put ''KSl7aWYoYj0wLHc9MHxhMSgwfGFbbD4+Ml0sLTEsLTEsLTEpLGFbRD4+Ml09dywhdyl7Yz0xMjticmVhayBlfXc9cH1lbHNlIGlmKDE0PT0oMHxiKSl7aWYoYj0wLDB8KGM9MHxXJChsLGYpKSlicmVhayBlO3c9cCxmPTB8YVtSPj4yXX1yOmZvcig7Oyl7aTpmb3IoOzspe3N3aXRjaCgoYz0w''@;'; put 'put ''fHVlW2Y+PjBdKTw8MjQ+PjI0KXtjYXNlIDQyOmNhc2UgOTI6YnJlYWs7ZGVmYXVsdDppZighTSlicmVhayBpO3N3aXRjaChjPDwyND4+MjQpe2Nhc2UgMTIzOmNhc2UgNjM6Y2FzZSA0MzpicmVhaztkZWZhdWx0OmJyZWFrIGl9fWlmKE0mKGM9Yzw8MjQ+PjI0PT05MikpYnJlYWs7aWYocD1m''@;'; put 'put ''KzF8MCxjKXN3aXRjaCgwfHVlW3A+PjBdKXtjYXNlIDEyMzpjYXNlIDYzOmNhc2UgNDM6YnJlYWs7ZGVmYXVsdDpicmVhayBpfWlmKGY9Yz9wOmYsIU0mJigwfGYpPT0oMSsoMHxhW21lPj4yXSl8MCkmJjk0PT0oMHx1ZVtmKy0xPj4wXSkpYnJlYWs7aWYoMTIzPT0oMHx1ZVtmPj4wXSkpe2lm''@;'; put 'put ''KCEoZj0wfEZjZShmKzF8MCxwZSxHLEspKSl7Yj0yODticmVhayB0fXA9MHxhW2w+PjJdLChjPTB8YVtLPj4yXSk/Yj0zNjpjPTB8YTEocCwtMSwtMSwtMSl9ZWxzZSBhW0c+PjJdPTAsYVtLPj4yXT0tMSwoYz0wfHVlW2Y+PjBdKTw8MjQ+PjI0PT00MyYmKGFbRz4+Ml09MSxjPTB8dWVbZj4+''@;'; put 'put ''MF0pLGM8PDI0Pj4yND09NjM/KGFbSz4+Ml09MSxjPTEpOmM9LTEsZj1mKzF8MCxwPTB8YVtsPj4yXSxiPTM2O2lmKDM2PT0oMHxiKSYmKGI9MCxjPTB8cFoocCwwfGFbRD4+Ml0sMHxhW0c+PjJdLGMsMCkpLGFbRD4+Ml09YywhYyl7Yz0xMjticmVhayBlfX1jPTB8eXYoMHxhW2w+PjJdLG0s''@;'; put 'put ''MHxhW0Q+PjJdKSxwPTB8dWVbZj4+MF07aTpkb3tpZihNKXtpZihwPDwyND4+MjQ9PTEyNCl7Yj00MDticmVhayByfWlmKCEoMCE9KDB8QSkmcDw8MjQ+PjI0PT00MXxwPDwyND4+MjQ9PTApKXttPWMscD13O2NvbnRpbnVlIG59Yj00N31lbHNle3N3aXRjaChwPDwyND4+MjQpe2Nhc2UgMDpi''@;'; put 'put ''PTQ3O2JyZWFrIGk7Y2FzZSA5MjpicmVhaztkZWZhdWx0Om09YyxwPXc7Y29udGludWUgbn1zd2l0Y2goMHx1ZVtmKzE+PjBdKXtjYXNlIDEyNDpjYXNlIDQxOmJyZWFrO2RlZmF1bHQ6bT1jLHA9dztjb250aW51ZSBufWlmKGM9MHxwZygwfGFbbD4+Ml0sdyxjKSwxMjQ9PSgwfHVlW2YrMT4+''@;'; put 'put ''MF0pKXtwPTI7YnJlYWsgcn1pZighQSl7Yz04O2JyZWFrIGV9Zj1mKzJ8MCxwPTkyfX13aGlsZSgwKTtpZig0Nz09KDB8YikmJihiPTAsYz0wfHBnKDB8YVtsPj4yXSx3LGMpLGY9cDw8MjQ+PjI0PT00MT9mKzF8MDpmKSwwfChjPTB8SGNlKGwsYywwfERmKGJlKSkpKWJyZWFrIGU7aWYoYz1w''@;'; put 'put ''PDwyND4+MjQ9PTAsKHA9KDB8QSk8MSkmYyl7Yj01MDticmVhayB0fWlmKHB8Yyl7Yz04O2JyZWFrIGV9bT0wfGhoKGJlKSxBPUErLTF8MCx3PTB8aGgoYmUpfTQwPT0oMHxiKSYmKHA9MSxjPTB8cGcoMHxhW2w+PjJdLHcsYykpLG09MCxmPWYrcHwwLHA9Y31pZigwfChjPTB8bWwoYmUscCkp''@;'; put 'put ''fHwwfChjPTB8bWwoYmUsbSkpfHwwfChjPTB8R2EoYmUsaykpKWJyZWFrIGU7Yz1BKzF8MCxrPWsrMXwwLGY9TT9mKzF8MDpmKzJ8MH1pZigyOD09KDB8Yikpe2M9MTA7YnJlYWt9aWYoNTA9PSgwfGIpKXthW2wrMjA+PjJdPWssYz0wO2JyZWFrfX19d2hpbGUoMCk7cmV0dXJuIG9lPU9lLDB8''@;'; put 'put ''Y31mdW5jdGlvbiBqJChsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgamUsZXQscnQsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsR2U9MDtqZT0wfHFjKGN8PTApLChldD0wPT0oMHxsKXwwPT0oMHxw''@;'; put 'put ''KSl8fChhW3ArNDg+PjJdPTAsYVthW3ArMzY+PjJdPj4yXT0tMSkscnQ9MHxSMCg4KygoQT0wfGFbcCsyOD4+Ml0pPDwzKXwwKTtkb3tpZihydCl7aWYoYVtydD4+Ml09LTEsIShHZT0wfFIwKDQrKEE8PDIpfDApKSl7SHQocnQpLG09MTI7YnJlYWt9Zm9yKGFbR2U+PjJdPS0xLG09MDshKG0+''@;'; put 'put ''Pj4wPkE+Pj4wKTspbT1tKzF8MDttbChjLGYpLG09MHxHYShjLDApO2U6ZG97aWYoMCE9KDB8bSl8KDB8cWMoYykpPD0oMHxqZSkpZj1ydCxSPTAsQT0wLEQ9MCxNPS0xO2Vsc2UgZm9yKExlPXArMzJ8MCxCZT1wKzM2fDAsSGU9cCsxNnwwLGY9cnQsUj0wLEE9MCxEPTAsT2U9MSxNPS0xLGJl''@;'; put 'put ''PTA7Oyl7dDpkb3tzd2l0Y2goMHxEZihjKSl7Y2FzZSA2Onc9MHxEZihjKSxtPTA7ZG97Yj1mKyhtPDwyKXwwLG09bSsxfDB9d2hpbGUoKDB8YVtiPj4yXSk+LTEpO2ZvcihhW2I+PjJdPXc8PDF8MSxhW2YrKG08PDIpPj4yXT0tMSxtPTA7KDB8YVtHZSsobTw8Mik+PjJdKT4tMTspbT1tKzF8''@;'; put 'put ''MDthW0dlKyhtKy0xPDwyKT4+Ml09LTEsbT0wLGI9T2Usdz1iZTticmVhaztjYXNlIDA6aWYocGU9MHxoaChjKSwoMHwoYj0wfGFbKG1lPXBlKzEyfDApPj4yXSkpPi0xKXttPTA7ZG97dz1mKyhtPDwyKXwwLG09bSsxfDB9d2hpbGUoKDB8YVt3Pj4yXSk+LTEpO2lmKGFbdz4+Ml09Yjw8MSxh''@;'; put 'put ''W2YrKG08PDIpPj4yXT0tMSwhZXQpe2ZvcihtPTA7KDB8YVtHZSsobTw8Mik+PjJdKT4tMTspbT1tKzF8MDtpZihhWyh3PSgwfGFbSGU+PjJdKSsoMTIqYnwwKSs4fDApPj4yXT0wLCgwfG0pPjApe2lmKCEobT0wfFIwKDQrKG08PDIpfDApKSl7bT0xMixiPU9lLHc9YmU7YnJlYWsgdH1pZihh''@;'; put 'put ''W3c+PjJdPW0sKDB8KHc9MHxhW0dlPj4yXSkpPi0xKXtrPTAsYj1tO2Rve2FbYj4+Ml09dyx3PTB8YVtHZSsoKGs9aysxfDApPDwyKT4+Ml0sYj1tKyhrPDwyKXwwfXdoaWxlKCgwfHcpPi0xKTttPWJ9YVttPj4yXT0tMX19aWYoMHwobT0wfEdhKGMsMHxhW21lPj4yXSkpKXtiPU9lLHc9YmU7''@;'; put 'put ''YnJlYWsgdH1pZigwfChtPTB8R2EoYyw2KSkpe2I9T2Usdz1iZTticmVhayB0fX1uOmRve3N3aXRjaCgwfGFbcGU+PjJdKXtjYXNlIDA6aWYoKDB8KEs9MHxhW2FbcGUrND4+Ml0+PjJdKSk+LTF8LTQ9PSgwfEspJiYoMHxhW2Y+PjJdKT4tMSl7aWYoZXQpYVtwZSsyMD4+Ml09MSxtPTA7ZWxz''@;'; put 'put ''ZXtpZihtPTB8Z1oobCxwZSxEKSxhWygwfGFbTGU+PjJdKSsoRDw8Mik+PjJdPWJlLCgwfE0pPi0xKXtmb3IoYj0wfGFbQmU+PjJdLHc9MDtHPXcrMXwwLCgwfGFbKGs9Yisodzw8Mil8MCk+PjJdKT4tMTspdz1HO2Fbaz4+Ml09RCxhW2IrKEc8PDIpPj4yXT1NLGFbYisodysyPDwyKT4+Ml09''@;'; put 'put ''LTEsQT1BKzF8MCxNPS0xfXpMKGYscCxEKX1hW2Y+PjJdPS0xLEs9T2UrMXwwLEc9YmUsUj1SKzF8MCxEPU9lfWVsc2UgSz1PZSxtPTAsRz1iZTticmVhaztjYXNlIDE6az0wfGFbKGI9MHxhW3BlKzQ+PjJdKT4+Ml0sYj0wfGFbYis0Pj4yXSwobT0wfG1sKGMscGUpKXx8KG09MHxHYShjLDUp''@;'; put 'put ''KXx8KG09MHxtbChjLGIpKXx8KG09MHxHYShjLDApKXx8KG09MHxHYShjLCgwfGFbKHc9aysyMHwwKT4+Ml0pK09lfDApKT8oSz1PZSxHPWJlKTooKDB8YVt3Pj4yXSk+MD8obT0odz0oMHxhW2IrMjA+PjJdKT4wKT9PZTotMSx3PU9lKygxJncpfDApOihtPS0xLHc9T2UpLChtPTB8R2EoYyxt''@;'; put 'put ''KSl8fChtPTB8R2EoYyw0KSl8fChtPTB8bWwoYyxrKSk/KEs9dyxHPWJlKTooSz13LG09MHxHYShjLDApLEc9YmUpKTticmVhaztjYXNlIDI6aWYodz0wfGFbcGUrND4+Ml0sZXQpe2lmKDB8KG09MHxHYShjLDEmKG09KDB8YVtmPj4yXSk+LTE/MTowIT0oMSZ1ZVt3KzEyPj4wXSkpKSkpe0s9''@;'; put 'put ''T2UsRz1iZTticmVhayBufX1lbHNle2lmKDB8KG09MHxHYShjLEQpKSl7Sz1PZSxHPWJlO2JyZWFrIG59aWYoMHwobT0wfEdhKGMsMSZ1ZVt3KzEyPj4wXSkpKXtLPU9lLEc9YmU7YnJlYWsgbn19aWYobT0wfG1sKGMscGUpKUs9T2UsRz1iZTtlbHNlIGlmKG09MHxHYShjLDEpKUs9T2UsRz1i''@;'; put 'put ''ZTtlbHNlIGlmKG09MHxtbChjLDB8YVt3Pj4yXSkpSz1PZSxHPWJlO2Vsc2UgaWYobT0wfEdhKGMsMCkpSz1PZSxHPWJlO2Vsc2V7aWYoKDB8YVtmPj4yXSk8PS0xJiYwPT0oMSZ1ZVt3KzEyPj4wXSkpe0s9T2UsbT0wLEc9MDticmVhayBufWlmKGV0KW09MDtlbHNle2lmKG09MHxnWihsLHBl''@;'; put 'put ''LEQpLGFbKDB8YVtMZT4+Ml0pKyhEPDwyKT4+Ml09MD09KDEmdWVbdysxMj4+MF0pP2JlOjEsKDB8TSk+LTEpe2ZvcihiPTB8YVtCZT4+Ml0sdz0wO0c9dysxfDAsKDB8YVsoaz1iKyh3PDwyKXwwKT4+Ml0pPi0xOyl3PUc7YVtrPj4yXT1ELGFbYisoRzw8Mik+PjJdPU0sYVtiKyh3KzI8PDIp''@;'; put 'put ''Pj4yXT0tMSxBPUErMXwwLE09LTF9ekwoZixwLEQpfWFbZj4+Ml09LTEsSz1PZSsxfDAsRz0wLFI9UisxfDAsRD1PZX1icmVhaztjYXNlIDM6aWYoaz0wfGFbKGI9MHxhW3BlKzQ+PjJdKT4+Ml0sYj0wfGFbYis0Pj4yXSxLPU9lKzF8MCxtPTB8R2EoYywodz0oMHxhW2Y+PjJdKT4tMSk/SzpP''@;'; put 'put ''ZSkpSz1PZSxHPWJlO2Vsc2UgaWYobT0wfEdhKGMsdz9PZTpEKSlLPU9lLEc9YmU7ZWxzZSBpZihtPTB8bWwoYyxmKSlLPU9lLEc9YmU7ZWxzZSBpZihtPTB8R2EoYywoMHxhW2Y+PjJdKT4+PjMxXjEpKUs9T2UsRz1iZTtlbHNlIGlmKG09MHxtbChjLHBlKSlLPU9lLEc9YmU7ZWxzZSBpZiht''@;'; put 'put ''PTB8bWwoYyxiKSlLPU9lLEc9YmU7ZWxzZSBpZihtPTB8bWwoYyxrKSlLPU9lLEc9YmU7ZWxzZSBpZihtPTB8R2EoYywzKSlLPU9lLEc9YmU7ZWxzZSBpZihtPTB8bWwoYyxiKSlLPU9lLEc9YmU7ZWxzZSBpZihtPTB8R2EoYywwKSlLPU9lLEc9YmU7ZWxzZXtpZigwfChtPTB8R2EoYywyKSkp''@;'; put 'put ''e0s9T2UsRz1iZTticmVhayBufWlmKDB8KG09MHxtbChjLGspKSl7Sz1PZSxHPWJlO2JyZWFrIG59aWYoMHwobT0wfEdhKGMsMCkpKXtLPU9lLEc9YmU7YnJlYWsgbn1pZigoMHxhW2Y+PjJdKT4tMSl7aWYoZXQpbT0wO2Vsc2V7aWYobT0wfGdaKGwscGUsRCksYVsoMHxhW0xlPj4yXSkrKEQ8''@;'; put 'put ''PDIpPj4yXT1iZSwoMHxNKT4tMSl7Zm9yKGI9MHxhW0JlPj4yXSx3PTA7Rz13KzF8MCwoMHxhWyhrPWIrKHc8PDIpfDApPj4yXSk+LTE7KXc9RzthW2s+PjJdPUQsYVtiKyhHPDwyKT4+Ml09TSxhW2IrKHcrMjw8Mik+PjJdPS0xLEE9QSsxfDAsTT0tMX16TChmLHAsRCl9YVtmPj4yXT0tMSxS''@;'; put 'put ''PVIrMXwwLEQ9T2Usdz1LfWVsc2UgbT0wLHc9T2U7Sz0oT2U9KDB8YVtwZSsxNj4+Ml0pPjApP3crMnwwOncsRz1iZSxEPU9lP3crMXwwOkR9YnJlYWs7ZGVmYXVsdDpLPU9lLG09MCxHPWJlfX13aGlsZSgwKTtpZigoMHwoYj0wfGFbbWU+PjJdKSk+LTEpe3c9MDtkb3trPUdlKyh3PDwyKXww''@;'; put 'put ''LHc9dysxfDB9d2hpbGUoKDB8YVtrPj4yXSk+LTEpO2Fbaz4+Ml09YixhW0dlKyh3PDwyKT4+Ml09LTEsYj1LLHc9R31lbHNlIGI9Syx3PUc7YnJlYWs7Y2FzZSAxOm09MHxoaChjKSxldD8odz0wfGFbMjArKDB8YVthW20rND4+Ml0+PjJdKT4+Ml0sYVttKzIwPj4yXT0oMHxEZihjKSkrdyx3''@;'; put 'put ''PTAsTT0tMSk6KHBlPTB8RGYoYyksbWU9MHxEZihjKSx3PXBlLE09MD09KDB8cGUpP006bWUpLG09MCxiPU9lLHc9ZXQ/YmU6MD09KDB8dykmMTticmVhaztjYXNlIDQ6dz0wfERmKGMpLGI9MHxEZihjKSxtPTAsRD0oMHx3KT4tMT93OkQsdz1iZTticmVhaztjYXNlIDU6bT0wfGhoKGMpLGV0''@;'; put 'put ''PyhhW20rMjA+PjJdPSgwfGFbMjArKDB8YVs0KyhiPTB8YVttKzQ+PjJdKT4+Ml0pPj4yXSkrKDB8YVsyMCsoMHxhW2I+PjJdKT4+Ml0pLG09MCxiPU9lLHc9YmUpOihtPTAsYj1PZSx3PWJlKTticmVhaztjYXNlIDI6Zm9yKDs7KXtpZighKCgwfGFbZj4+Ml0pPi0xKSl7bT0wLGI9T2Usdz1i''@;'; put 'put ''ZTticmVha31mPWYrNHwwfWJyZWFrO2Nhc2UgMzpiPTB8aGgoYyksRz0wfGhoKGMpLG09MHxoaChjKSxmPTB8RGYoYyksZXQ/KGFbbSsyMD4+Ml09KDB8YVsyMCsoMHxhWyhtZT0wfGFbbSs0Pj4yXSk+PjJdKT4+Ml0pK2YrKDB8YVsyMCsoMHxhW21lKzQ+PjJdKT4+Ml0pKygoMHxhWyhiZT1t''@;'; put 'put ''KzE2fDApPj4yXSk+MD8yOjApLG09YmUpOm09bSsxNnwwLGY9MHxoaChjKSx3PTB8RGYoYyksaz0wfERmKGMpLCgwfGFbbT4+Ml0pPjA/KGV0P209MDoobT0wfEckKGwsYix3KSxhWygwfGFbTGU+PjJdKSsodzw8Mik+PjJdPTEsbXx8KG09MHxHJChsLEcsaykpLGFbKDB8YVtMZT4+Ml0pKyhr''@;'; put 'put ''PDwyKT4+Ml09MSksUj1SKzJ8MCxiPU9lLHc9MSk6KG09MCxiPU9lLHc9MSk7YnJlYWs7ZGVmYXVsdDptPTAsYj1PZSx3PWJlfX13aGlsZSgwKTtpZigwIT0oMHxtKXwoMHxxYyhjKSk8PSgwfGplKSlicmVhayBlO09lPWIsYmU9d319d2hpbGUoMCk7aWYoIWV0JiYoekwoZixwLEQpLCgwfE0p''@;'; put 'put ''Pi0xKSl7Zm9yKHc9MHxhW3ArMzY+PjJdLGY9MDtrPWYrMXwwLCgwfGFbKGI9dysoZjw8Mil8MCk+PjJdKT4tMTspZj1rO2FbYj4+Ml09RCxhW3crKGs8PDIpPj4yXT1NLGFbdysoZisyPDwyKT4+Ml09LTEsQT1BKzF8MH1hW3ArNDg+PjJdPVIsYVtwKzQwPj4yXT1SLGFbcCs0ND4+Ml09QSxI''@;'; put 'put ''dChydCksSHQoR2UpfWVsc2UgbT0xMn13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIFJjZShsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIE9lLExlLEJlLGV0LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLEhlPTAsamU9MDtl''@;'; put 'put ''dD1vZSxvZT1vZSsxNnwwLE9lPWV0KzEyfDAsamU9ZXQrOHwwLExlPWV0KzR8MCxCZT1ldCxIZT0wfHFjKGN8PTApLGFbT2U+PjJdPTAsYVtqZT4+Ml09MCxmPTB8bWwoYyxmKTtlOmRve2lmKCFmJiYoZj0wfEdhKGMsMCksIWYpKXt0OmRve2lmKCgwfHFjKGMpKT4oMHxIZSkpe0E9MCxiPTAs''@;'; put 'put ''az0wO246Zm9yKDs7KXtwZT0wfERmKGMpLG1lPTB8aGgoYyk7cjpkb3tzd2l0Y2goMHxwZSl7Y2FzZSAwOnN3aXRjaCgwfGFbbWU+PjJdKXtjYXNlIDA6aWYoISgoMHwobWU9MHxhWyhmPTB8YVttZSs0Pj4yXSk+PjJdKSk+LTF8LTQ9PSgwfG1lKSkpe2Y9azticmVhayByfWlmKGFbKG1lPWYr''@;'; put 'put ''OHwwKT4+Ml09Zj0oMHxhW21lPj4yXSkra3wwLCgwfGYpPD0oMHxhW2plPj4yXSkpe2Y9azticmVhayByfWFbamU+PjJdPWYsZj1rO2JyZWFrIHI7Y2FzZSAzOmNhc2UgMTppZigwfChmPTB8bWwoYywwfGFbNCsodz0wfGFbbWUrND4+Ml0pPj4yXSkpfHwwfChmPTB8R2EoYywwKSl8fDB8KGY9''@;'; put 'put ''MHxtbChjLDB8YVt3Pj4yXSkpKWJyZWFrIHQ7YnJlYWs7Y2FzZSAyOmlmKHc9MHxhW21lKzQ+PjJdLDB8KGY9MHxHYShjLGspKXx8MHwoZj0wfG1sKGMsbWUpKXx8MHwoZj0wfEdhKGMsMSkpfHwwfChmPTB8bWwoYywwfGFbdz4+Ml0pKXx8MHwoZj0wfEdhKGMsMCkpKWJyZWFrIHQ7KDB8YVt3''@;'; put 'put ''KzQ+PjJdKTw9MSYmKDB8YVt3Kzg+PjJdKTw9MT9mPWs6KGFbT2U+PjJdPTAsZj0wKSxiPWIrMXwwO2JyZWFrIHI7ZGVmYXVsdDpmPWs7YnJlYWsgcn1pZihmPTB8R2EoYywwKSlicmVhayB0O2Y9azticmVhaztjYXNlIDE6Rz0wfGFbKEs9bWUrNHwwKT4+Ml0scGU9MHxEZihjKSxhW09lPj4y''@;'; put 'put ''XT1wZSwoMHwoaz0wfGFbKFI9Rys0fDApPj4yXSkpPD0xPygwfGFbRys4Pj4yXSk+MT8oYVtMZT4+Ml09MCwoMHxrKT4wP2JlPTMwOihmPXBlLHc9MCxiZT0zNykpOmY9cGU6KGFbTGU+PjJdPTAsYmU9MzApO2k6ZG97aWYoMzA9PSgwfGJlKSl7aWYoZj0wfFpMKGwsYywwfGFbRz4+Ml0sKDB8''@;'; put 'put ''ayk+MT8xOjIsT2UsbSxCZSxqZSkpe2JlPTM0O2JyZWFrIG59Zm9yKHc9MCxNPXBlLEQ9MTs7KXtpZihmPTB8YVtCZT4+Ml0sISh3PXc/MHx5dihsLHcsZik6Zikpe2Y9MTIsYmU9MzQ7YnJlYWsgbn1pZigoMHxEKT49KDB8KGs9MHxhW1I+PjJdKSkpe2Y9TSxiZT0zNzticmVhayBpfWlmKE09''@;'; put 'put ''MHxhW09lPj4yXSwwfChmPTB8WkwobCxjLDB8YVtHPj4yXSwoMHwoRD1EKzF8MCkpPCgwfGspPzE6MixPZSxtLEJlLGplKSkpe2JlPTM0O2JyZWFrIG59fX19d2hpbGUoMCk7aWYoMzc9PSgwfGJlKSl7aWYoYmU9MCwtMT09KDB8KE09MHxhWyhSPUcrOHwwKT4+Ml0pKSl7aWYoTT0wfGFbT2U+''@;'; put 'put ''PjJdLDB8KGY9MHxaTChsLGMsMHxhW0c+PjJdLDAsT2UsMCxMZSxqZSkpKWJyZWFrIG47aWYoaz0wfHBaKGwsMHxhW0xlPj4yXSwwLC0xLDApLGFbTGU+PjJdPWssIWspe2Y9MTI7YnJlYWsgbn1mPU19ZWxzZSBpZigoMHxrKTwoMHxNKSlmb3IoTT1rLGs9MDs7KXtpZihEPTB8YVtPZT4+Ml0s''@;'; put 'put ''MHwoZj0wfFpMKGwsYywwfGFbRz4+Ml0sMCxPZSwwLEJlLGplKSkpe2JlPTQ5O2JyZWFrIG59aWYoaz8oZj0wfHl2KGwsMHxhW0JlPj4yXSxrKSxhW0xlPj4yXT1mKTphW0xlPj4yXT1mPTB8YVtCZT4+Ml0sIWYpe2Y9MTIsYmU9NDk7YnJlYWsgbn1pZighKGs9MHxhMShsLC0xLC0xLC0xKSkp''@;'; put 'put ''e2Y9MTIsYmU9NDk7YnJlYWsgbn1pZihrPTB8cGcobCxrLGYpLGFbTGU+PjJdPWssIWspe2Y9MTIsYmU9NDk7YnJlYWsgbn1pZigoMHwoTT1NKzF8MCkpPj0oMHxhW1I+PjJdKSl7Zj1EO2JyZWFrfX1lbHNlIGs9MDtpZihhW09lPj4yXT1mLHc/ayYmKHc9MHx5dihsLHcsayksYmU9NTQpOih3''@;'; put 'put ''PWssYmU9NTQpLDU0PT0oMHxiZSkmJihiZT0wLCF3KSl7Zj0xMjticmVhayBufWFbSz4+Ml09YVt3KzQ+PjJdLGFbbWU+PjJdPWFbdz4+Ml19dz1mLXBlK0F8MCwoYj1iKy0xfDApP0E9dzooYVtPZT4+Ml09dyxBPXcsYj0wLGY9dyk7YnJlYWs7ZGVmYXVsdDpmPWt9fXdoaWxlKDApO2lmKCEo''@;'; put 'put ''KDB8cWMoYykpPigwfEhlKSkpe2Y9MDticmVhayB0fWs9Zn1icmVhayBlfWY9MCxBPTB9d2hpbGUoMCk7YVtwPj4yXT0oMHwoamU9MHxhW2plPj4yXSkpPigwfChIZT0oMHxhW3A+PjJdKStBfDApKT9qZTpIZX19d2hpbGUoMCk7cmV0dXJuIG9lPWV0LDB8Zn1mdW5jdGlvbiBhMShsLGMsZixw''@;'; put 'put ''KXt2YXIgbTtyZXR1cm4gY3w9MCxmfD0wLHB8PTAsKGw9MHxtUyhsfD0wLDAsbT0wfCQxKGwsMCwwLDEsMjApKSk/KGFbbT4+Ml09YyxhW20rND4+Ml09ZixhW20rOD4+Ml09cCk6bD0wLDB8bH1mdW5jdGlvbiB5dihsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTA7cmV0dXJuKGN8PTApJiYoKGw9''@;'; put 'put ''MHxtUyhsLDEscD0wfCQxKGwsMCwwLDEsOCkpKT8oYVtwPj4yXT1jLGFbcCs0Pj4yXT1mLGFbbCsxNj4+Ml09KDB8YVtmKzE2Pj4yXSkrKDB8YVtjKzE2Pj4yXSksZj1sKTpmPTApLDB8Zn1mdW5jdGlvbiBCY2UobCxjLGYpe2x8PTAsZnw9MDt2YXIgayxNLEQsRyxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wLFI9MDtHPW9lLG9lPW9lKzE2fDAsaz1HKzR8MCxNPUcsRD0wfHFjKGN8PTApLGY9MHxtbChjLGYpO2U6ZG97aWYoIWYmJihmPTB8R2EoYywwKSwhZikpaWYoKDB8cWMoYykpPigwfEQpKXt0OmZvcig7Oyl7dz0wfERmKGMpLGI9MHxoaChjKTtuOmRve3N3aXRjaCgwfHcpe2Nhc2UgMDpz''@;'; put 'put ''d2l0Y2goMHxhW2I+PjJdKXtjYXNlIDA6aWYoLTQ9PSgwfChtPTB8YVsoQT0wfGFbYis0Pj4yXSk+PjJdKSkpe2lmKGFbYis4Pj4yXT0wLHc9MHxOTChsLDB8YVsoZj1BKzh8MCk+PjJdLDAsMTExNDExMSwwLDAsLTEpLGFbYisyND4+Ml09dywhdyl7Zj0xMjticmVhayBlfWlmKHc9MHxOTChs''@;'; put 'put ''LDB8YVtmPj4yXSwwLDExMTQxMTEsMCwwLDB8YVtBKzQ+PjJdKSxhW2IrMjg+PjJdPXcsdylicmVhayBuO2Y9MTI7YnJlYWsgZX1pZihmPWIrOHwwLCgwfG0pPDApe2lmKGFbZj4+Ml09MSx3PTB8eiQobCksYVtiKzI0Pj4yXT13LCF3KXtmPTEyO2JyZWFrIGV9aWYodz0wfHokKGwpLGFbYisy''@;'; put 'put ''OD4+Ml09dyx3KWJyZWFrIG47Zj0xMjticmVhayBlfWlmKGFbZj4+Ml09MCx3PTB8TkwobCwwfGFbKGY9QSs4fDApPj4yXSxtLDB8YVsocD1BKzR8MCk+PjJdLDAsMCwtMSksYVtiKzI0Pj4yXT13LCF3KXtmPTEyO2JyZWFrIGV9aWYodz0wfE5MKGwsMHxhW2Y+PjJdLDB8YVtBPj4yXSwwfGFb''@;'; put 'put ''cD4+Ml0sMHxhW0ErMTI+PjJdLDB8YVtBKzE2Pj4yXSwtMSksYVtiKzI4Pj4yXT13LHcpYnJlYWsgbjtmPTEyO2JyZWFrIGU7Y2FzZSAzOmlmKDB8KGY9MHxtbChjLGIpKXx8MHwoZj0wfEdhKGMsMSkpfHwwfChmPTB8bWwoYywwfGFbNCsoMHxhWyhwPWIrNHwwKT4+Ml0pPj4yXSkpfHwwfChm''@;'; put 'put ''PTB8R2EoYywwKSl8fDB8KGY9MHxtbChjLDB8YVthW3A+PjJdPj4yXSkpfHwoZj0wfEdhKGMsMCkpKWJyZWFrIGU7YnJlYWsgbjtjYXNlIDE6aWYoMHwoZj0wfG1sKGMsYikpfHwwfChmPTB8R2EoYywyKSl8fDB8KGY9MHxtbChjLDB8YVs0KygwfGFbKHA9Yis0fDApPj4yXSk+PjJdKSl8fDB8''@;'; put 'put ''KGY9MHxHYShjLDApKXx8MHwoZj0wfG1sKGMsMHxhW2FbcD4+Ml0+PjJdKSl8fChmPTB8R2EoYywwKSkpYnJlYWsgZTticmVhayBuO2Nhc2UgMjppZigwfChmPTB8bWwoYyxiKSl8fDB8KGY9MHxHYShjLDMpKXx8MHwoZj0wfG1sKGMsMHxhW2FbYis0Pj4yXT4+Ml0pKXx8KGY9MHxHYShjLDAp''@;'; put 'put ''KSlicmVhayBlO2JyZWFrIG47ZGVmYXVsdDpicmVhayBufWNhc2UgMTppZihBPTB8YVsobT00KyhmPTB8YVtiKzQ+PjJdKXwwKT4+Ml0sYVtiKzg+PjJdPTEmKHc9MHxhWzgrKHA9MHxhW2Y+PjJdKT4+Ml0/MTowIT0oMHxhW0ErOD4+Ml0pKSx3PTB8VkwobCwwfGFbcCsyND4+Ml0sMHxhW0Er''@;'; put 'put ''MjQ+PjJdLDAsMCksYVtiKzI0Pj4yXT13LCF3KXtmPTEyO2JyZWFrIGV9aWYodz0wfFZMKGwsMHxhWzI4KygwfGFbZj4+Ml0pPj4yXSwwfGFbMjgrKDB8YVttPj4yXSk+PjJdLDAsMCksYVtiKzI4Pj4yXT13LCF3KXtmPTEyO2JyZWFrIGV9YnJlYWs7Y2FzZSAzOmY9MHxhWyh3PTB8YVtiKzQ+''@;'; put 'put ''PjJdKT4+Ml0sYVtiKzg+PjJdPXA9MHxhW3crND4+Ml0/MCE9KDB8YVtmKzg+PjJdKSYxOjEsYVtiKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbYisyOD4+Ml09YVtmKzI4Pj4yXTticmVhaztjYXNlIDI6aWYoYVtiKzg+PjJdPTEmKG09MHxhWyhwPTgrKGY9MHxhWyhBPTB8YVtiKzQ+PjJdKT4+Ml0p''@;'; put 'put ''fDApPj4yXT8wIT0oMHxhWzgrKDB8YVtBKzQ+PjJdKT4+Ml0pOjApLDB8YVtwPj4yXSl7aWYoMHwoZj0wfGpMKGMsZiwwLDAsaykpKWJyZWFrIHQ7aWYoIShwPTB8UjAoNCsoYVtrPj4yXTw8Mil8MCkpKXtmPTEyO2JyZWFrIHR9aWYoYVtwPj4yXT0tMSxhW00+PjJdPTAsMHwoZj0wfGpMKGMs''@;'; put 'put ''MHxhW0E+PjJdLHAsTSwwKSkpe1I9NDU7YnJlYWsgdH1pZihhWyh3PWIrMjR8MCk+PjJdPTB8VkwobCwwfGFbMjQrKDB8YVsoZj1BKzR8MCk+PjJdKT4+Ml0sMHxhWzI0KygwfGFbQT4+Ml0pPj4yXSxwLDB8YVtNPj4yXSksSHQocCksISgwfGFbdz4+Ml0pKXtmPTEyO2JyZWFrIHR9bT1mfWVs''@;'; put 'put ''c2UgYVtiKzI0Pj4yXT1hW2YrMjQ+PjJdLG09QSs0fDA7aWYoMHxhWzgrKGY9MHxhW20+PjJdKT4+Ml0pe2lmKDB8KGY9MHxqTChjLGYsMCwwLGspKSlicmVhayB0O2lmKCEocD0wfFIwKDQrKGFbaz4+Ml08PDIpfDApKSl7Zj0xMjticmVhayB0fWlmKGFbcD4+Ml09LTEsYVtNPj4yXT0wLDB8''@;'; put 'put ''KGY9MHxqTChjLDB8YVttPj4yXSxwLE0sMCkpKXtSPTUyO2JyZWFrIHR9aWYoYVsoYj1iKzI4fDApPj4yXT0wfFZMKGwsMHxhWzI4KygwfGFbQT4+Ml0pPj4yXSwwfGFbMjgrKDB8YVttPj4yXSk+PjJdLHAsMHxhW00+PjJdKSxIdChwKSwhKDB8YVtiPj4yXSkpe2Y9MTI7YnJlYWsgdH19ZWxz''@;'; put 'put ''ZSBhW2IrMjg+PjJdPWFbZisyOD4+Ml19fXdoaWxlKDApO2lmKCgwfHFjKGMpKTw9KDB8RCkpe2Y9MDticmVhayBlfX0oNDU9PSgwfFIpfHw1Mj09KDB8UikpJiZIdChwKX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gb2U9RywwfGZ9ZnVuY3Rpb24gSEwobCxjLGYscCl7bHw9MCxjfD0wLGZ8''@;'; put 'put ''PTAscHw9MDt2YXIgbT0wLEE9MCx3PTA7ZTpmb3IoOzspe3N3aXRjaCgwfGFbbD4+Ml0pe2Nhc2UgMjppZigtMT09KDB8YVs4KyhsPTB8YVtsKzQ+PjJdKT4+Ml0pJiYwIT0oMHwodz0wfFokKDB8YVsyOCsodz0wfGFbbD4+Ml0pPj4yXSwwfGFbdysyND4+Ml0sYyxmLHApKSkpe2w9dzticmVh''@;'; put 'put ''ayBlfWJyZWFrO2Nhc2UgMzppZigwfChsPTB8SEwoMHxhWyhtPTB8YVtsKzQ+PjJdKT4+Ml0sYyxmLHApKSlicmVhayBlO2w9bSs0fDA7YnJlYWs7Y2FzZSAxOmlmKDB8KGw9MHxaJCgwfGFbMjgrKDB8YVsobT0wfGFbbCs0Pj4yXSk+PjJdKT4+Ml0sMHxhWzI0KygwfGFbKEE9bSs0fDApPj4y''@;'; put 'put ''XSk+PjJdLGMsZixwKSkpYnJlYWsgZTtpZihsPTB8SEwoMHxhW20+PjJdLGMsZixwKSlicmVhayBlO2w9QTticmVhaztkZWZhdWx0Omw9MDticmVhayBlfWw9MHxhW2w+PjJdfXJldHVybiAwfGx9ZnVuY3Rpb24gUGNlKGwpe3ZhciB3LGM9MCxmPTAscD0wLG09MCxBPTA7aWYoMHwodz0wfGFb''@;'; put 'put ''NCsobHw9MCk+PjJdKSl7aWYobD0wfGFbdz4+Ml0sMHxhWyhwPXcrNHwwKT4+Ml0pe2Y9MDtkb3swfGFbbCsoZjw8NSkrOD4+Ml0mJigoYz0wfGFbbCsoZjw8NSkrMTY+PjJdKSYmKEh0KGMpLGw9MHxhW3c+PjJdKSwoYz0wfGFbbCsoZjw8NSkrMjg+PjJdKSYmKEh0KGMpLGw9MHxhW3c+PjJd''@;'; put 'put ''KSksZj1mKzF8MH13aGlsZShmPj4+MDwoMHxhW3A+PjJdKT4+PjApfWlmKDB8bCYmSHQobCksMHwobD0wfGFbKGY9dys4fDApPj4yXSkpe2lmKDB8YVtsKzg+PjJdKXtmb3IoOzB8KGM9MHxhW2wrMTY+PjJdKSYmSHQoYyksMHxhW2wrNDA+PjJdOylsPWwrMzJ8MDtsPTB8YVtmPj4yXX1IdChs''@;'; put 'put ''KX1pZigwfChsPTB8YVsobT13KzE2fDApPj4yXSkpe2lmKGM9MHxhWyhBPXcrMjh8MCk+PjJdKXtwPTA7ZG97KGY9MHxhW2wrKDEyKnB8MCkrOD4+Ml0pJiYoSHQoZiksYz0wfGFbQT4+Ml0sbD0wfGFbbT4+Ml0pLHA9cCsxfDB9d2hpbGUocD4+PjA8Yz4+PjApfUh0KGwpfTB8KGw9MHxhW3cr''@;'; put 'put ''MzI+PjJdKSYmSHQobCksMHwobD0wfGFbdysyMD4+Ml0pJiZIdChsKSwwfChsPTB8YVt3KzM2Pj4yXSkmJkh0KGwpLEh0KHcpfX1mdW5jdGlvbiBaJChsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9''@;'; put 'put ''MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsamU9MCxldD0wLHJ0PTA7dz0oMHwoQT0wfGFbKGx8PTApPj4yXSkpPi0xO2U6ZG97aWYoZilpZih3KWZvcig7Oyl7dz0wfGFbYz4+Ml07dDpkb3tpZigoMHx3KT4tMSlmb3IocGU9bCs0fDAsbWU9bCs4fDAsYmU9bCsxNnwwLE9lPWwrMjB8MCxM''@;'; put 'put ''ZT1sKzI0fDAsQmU9bCsyOHwwLEhlPWwrMTJ8MCxwPS0xLEE9Yzs7KXtmb3IoSz13OygwfEspPT0oMHxwKTspe2lmKCEoKDB8KHc9MHxhWyhBPUErMzJ8MCk+PjJdKSk+LTEpKWJyZWFrIHQ7Sz13fWZvcihEPWYrKGFbbSsoYVtsPj4yXTw8Mik+PjJdPDw1KXwwOzB8YVsodz1EKzh8MCk+PjJd''@;'; put 'put ''OylEPUQrMzJ8MDtpZihhW0QrNDA+PjJdPTAsYVtEPj4yXT1hW3BlPj4yXSxhW0QrND4+Ml09YVttZT4+Ml0sYVt3Pj4yXT1mKyhhW20rKEs8PDIpPj4yXTw8NSksYVtEKzEyPj4yXT1LLGFbKGI9RCsyMHwwKT4+Ml09cD1hW0ErMTY+PjJdfGFbYmU+PjJdfCgwfCh3PTB8YVtPZT4+Ml0pPzQ6''@;'; put 'put ''MCl8KDB8YVtMZT4+Ml0/ODowKSwoMHwoaz0wfGFbQmU+PjJdKSk+LTEmJihhW2I+PjJdPTI1NnxwLHc9ayksYVtEKzI0Pj4yXT13LHA9MHxhW0xlPj4yXSl7dz0wO2Rve0c9dyx3PXcrMXwwfXdoaWxlKDAhPSgwfGFbcCsoRzw8Mik+PjJdKSk7aWYodz0wfFIwKHc8PDIpLGFbRCsyOD4+Ml09''@;'; put 'put ''dywhdyl7QT0xMjticmVhayBlfWlmKHA9MHxhWyhNPTB8YVtMZT4+Ml0pPj4yXSl7az0wLGI9dztkb3thW2I+PjJdPXAscD0wfGFbTSsoKGs9aysxfDApPDwyKT4+Ml0sYj13KyhrPDwyKXwwfXdoaWxlKDAhPSgwfHApKTt3PWJ9YVt3Pj4yXT0wfWVsc2UgYVtEKzI4Pj4yXT0wO2lmKHA9MHxh''@;'; put 'put ''W0hlPj4yXSlmb3Iodz0wOygwfGFbcCsodzw8Mik+PjJdKT4tMTspdz13KzF8MDtlbHNlIHc9MDtpZihiPTB8YVsoTT1BKzEyfDApPj4yXSlmb3IocD0wOygwfGFbYisocDw8Mik+PjJdKT4tMTspcD1wKzF8MDtlbHNlIHA9MDtpZigwfChiPTB8YVsoaz1EKzE2fDApPj4yXSkmJkh0KGIpLGFb''@;'; put 'put ''az4+Ml09MCwoMHwodz1wK3d8MCkpPjApe2lmKEc9MHxSMCg0Kyh3PDwyKXwwKSxhW2s+PjJdPUcsIUcpe0E9MTI7YnJlYWsgZX1pZigwIT0oMHwocD0wfGFbSGU+PjJdKSkmJigwfChqZT0wfGFbcD4+Ml0pKT4tMSl7dz0wLGI9amU7ZG97YVtHKyh3PDwyKT4+Ml09YixiPTB8YVtwKygodz13''@;'; put 'put ''KzF8MCk8PDIpPj4yXX13aGlsZSgoMHxiKT4tMSk7Uj13fWVsc2UgUj0wO2lmKDAhPSgwfChrPTB8YVtNPj4yXSkpJiYoMHwoZXQ9MHxhW2s+PjJdKSk+LTEpe009KDB8Uik+MCx3PVIsYj0wLEQ9ZXQ7ZG97bjpkb3tpZihNKWZvcihwPTA7Oyl7aWYoKDB8YVtHKyhwPDwyKT4+Ml0pPT0oMHxE''@;'; put 'put ''KSlicmVhayBuO2lmKCgwfChwPXArMXwwKSk+PSgwfFIpKXtydD0zOTticmVha319ZWxzZSBydD0zOX13aGlsZSgwKTszOT09KDB8cnQpJiYocnQ9MCxhW0crKHc8PDIpPj4yXT1ELHc9dysxfDApLEQ9MHxhW2srKChiPWIrMXwwKTw8Mik+PjJdfXdoaWxlKCgwfEQpPi0xKX1lbHNlIHc9Ujth''@;'; put 'put ''W0crKHc8PDIpPj4yXT0tMX1pZigoMHwodz0wfGFbKEE9QSszMnwwKT4+Ml0pKTw9LTEpYnJlYWs7cD1LfX13aGlsZSgwKTtpZigoMHxhWyhsPWwrMzJ8MCk+PjJdKTw9LTEpe0E9MDticmVha319ZWxzZSBBPTA7ZWxzZSBpZih3KXt3PWMrMzJ8MDtkb3tpZigoMHxhW2M+PjJdKT4tMSYmKGFb''@;'; put 'put ''KHJ0PXArKEE8PDIpfDApPj4yXT0xKygwfGFbcnQ+PjJdKSwoMHxhW3c+PjJdKT4tMSkpe0E9dztkb3thWyhydD1wKyhhW2w+PjJdPDwyKXwwKT4+Ml09MSsoMHxhW3J0Pj4yXSksQT1BKzMyfDB9d2hpbGUoKDB8YVtBPj4yXSk+LTEpfUE9MHxhWyhsPWwrMzJ8MCk+PjJdfXdoaWxlKCgwfEEp''@;'; put 'put ''Pi0xKTtBPTB9ZWxzZSBBPTB9d2hpbGUoMCk7cmV0dXJuIDB8QX1mdW5jdGlvbiBxYyhsKXtyZXR1cm4gMHxhWzEyKyhsfD0wKT4+Ml19ZnVuY3Rpb24gbWwobCxjKXt2YXIgZixwLG07cmV0dXJuIGx8PTAsZj1vZSxvZT1vZSsxNnwwLHA9Zis0fDAsYVsobT1mKT4+Ml09Y3w9MCxhW3A+PjJd''@;'; put 'put ''PWFbbT4+Ml0sYz0wfGRaKGwscCksb2U9ZiwwfGN9ZnVuY3Rpb24gR2EobCxjKXt2YXIgZixwLG07cmV0dXJuIGx8PTAsZj1vZSxvZT1vZSsxNnwwLHA9Zis0fDAsYVsobT1mKT4+Ml09Y3w9MCxhW3A+PjJdPWFbbT4+Ml0sYz0wfGRaKGwscCksb2U9ZiwwfGN9ZnVuY3Rpb24gRGYobCl7dmFy''@;'; put 'put ''IGMsZjtyZXR1cm4gYz0wfGFbMTYrKGx8PTApPj4yXSxhWyhmPWwrMTJ8MCk+PjJdPWw9KDB8YVtmPj4yXSktMXwwLDB8YVtjKyhsPDwyKT4+Ml19ZnVuY3Rpb24gaGgobCl7dmFyIGMsZjtyZXR1cm4gYz0wfGFbMTYrKGx8PTApPj4yXSxhWyhmPWwrMTJ8MCk+PjJdPWw9KDB8YVtmPj4yXSkt''@;'; put 'put ''MXwwLDB8YVtjKyhsPDwyKT4+Ml19ZnVuY3Rpb24gTkwobCxjLGYscCxtLEEsdyl7cmV0dXJuIGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wLChsPTB8JDEobHw9MCwwLDAsMSw2NCkpPyhhW2w+PjJdPWMsYVtsKzQ+PjJdPWYsYVtsKzg+PjJdPXAsYVtsKzIwPj4yXT1tLGFbbCsyND4+''@;'; put 'put ''Ml09QSxhW2wrMjg+PjJdPXcsYVtsKzMyPj4yXT0tMSxhW2wrMzY+PjJdPS0xLGFbbCs0MD4+Ml09LTEpOmw9MCwwfGx9ZnVuY3Rpb24geiQobCl7cmV0dXJuKGw9MHwkMShsfD0wLDAsMCwxLDMyKSk/KGFbbD4+Ml09LTEsYVtsKzQ+PjJdPS0xLGFbbCs4Pj4yXT0tMSk6bD0wLDB8bH1mdW5j''@;'; put 'put ''dGlvbiBWTChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLG18PTA7dmFyIEssQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtpZihLPTA9PSgwfChwfD0wKSkpRz0wO2Vsc2UgZm9yKEE9MDs7KXtpZighKCgwfGFbcCsoQTw8Mik+PjJdKT4tMSkpe0c9QTticmVha31BPUErMXwwfWZv''@;'; put 'put ''cih3PTA7Oyl7aWYoISgoMHxhW2MrKHc8PDUpPj4yXSk+LTEpKXtBPTA7YnJlYWt9dz13KzF8MH1mb3IoOygwfGFbZisoQTw8NSk+PjJdKT4tMTspQT1BKzF8MDtBPTB8JDEobCwwLDAsMSwzMisoQSt3PDw1KXwwKTtlOmRve2lmKEEpe2lmKCgwfCh3PTB8YVtjPj4yXSkpPi0xKWZvcihSPSgw''@;'; put 'put ''fEcpPjAsYj0wOzspe2lmKGFbQSsoYjw8NSk+PjJdPXcsYVtBKyhiPDw1KSs0Pj4yXT1hW2MrKGI8PDUpKzQ+PjJdLGFbQSsoYjw8NSkrOD4+Ml09YVtjKyhiPDw1KSs4Pj4yXSxhW0ErKGI8PDUpKzE2Pj4yXT1hW2MrKGI8PDUpKzE2Pj4yXXxtLGFbQSsoYjw8NSkrMjA+PjJdPWFbYysoYjw8''@;'; put 'put ''NSkrMjA+PjJdLGFbQSsoYjw8NSkrMjQ+PjJdPWFbYysoYjw8NSkrMjQ+PjJdLGFbQSsoYjw8NSkrMjg+PjJdPWFbYysoYjw8NSkrMjg+PjJdLEsmKHc9MD09KDB8KGs9MHxhWyhEPWMrKGI8PDUpKzEyfDApPj4yXSkpKSl3PTA7ZWxzZXtpZih3KU09MDtlbHNlIGZvcih3PTA7Oyl7aWYoISgo''@;'; put 'put ''MHxhW2srKHc8PDIpPj4yXSk+LTEpKXtNPXc7YnJlYWt9dz13KzF8MH1pZighKHc9MHwkMShsLDAsMCwwLDQrKE0rRzw8Mil8MCkpKXtBPTA7YnJlYWsgZX1pZigoMHxNKT4wKXtEPTB8YVtEPj4yXSxrPTA7ZG97YVt3KyhrPDwyKT4+Ml09YVtEKyhrPDwyKT4+Ml0saz1rKzF8MH13aGlsZSgo''@;'; put 'put ''MHxrKSE9KDB8TSkpfWVsc2UgTT0wO2lmKFIpe2s9MDtkb3thW3crKGsrTTw8Mik+PjJdPWFbcCsoazw8Mik+PjJdLGs9aysxfDB9d2hpbGUoKDB8aykhPSgwfEcpKTtrPUd9ZWxzZSBrPTA7YVt3KyhrK008PDIpPj4yXT0tMX1pZihhW0ErKGI8PDUpKzEyPj4yXT13LCgwfCh3PTB8YVtjKygo''@;'; put 'put ''Yj1iKzF8MCk8PDUpPj4yXSkpPD0tMSl7Rz1iO2JyZWFrfX1lbHNlIEc9MDtpZih3PUErKEc8PDUpfDAsKDB8KGI9MHxhW2Y+PjJdKSk+LTEpe1I9MCxEPUc7ZG97aWYoYVt3Pj4yXT1iLGFbQSsoRDw8NSkrND4+Ml09YVtmKyhSPDw1KSs0Pj4yXSxhW0ErKEQ8PDUpKzg+PjJdPWFbZisoUjw8''@;'; put 'put ''NSkrOD4+Ml0sYVtBKyhEPDw1KSsxNj4+Ml09YVtmKyhSPDw1KSsxNj4+Ml0sYVtBKyhEPDw1KSsyMD4+Ml09YVtmKyhSPDw1KSsyMD4+Ml0sYVtBKyhEPDw1KSsyND4+Ml09YVtmKyhSPDw1KSsyND4+Ml0sYVtBKyhEPDw1KSsyOD4+Ml09YVtmKyhSPDw1KSsyOD4+Ml0sdz0wfGFbKGs9Ziso''@;'; put 'put ''Ujw8NSkrMTJ8MCk+PjJdKXtmb3IoYj0wOygwfGFbdysoYjw8Mik+PjJdKT4tMTspYj1iKzF8MDtpZighKHc9MHwkMShsLDAsMCwwLDQrKGI8PDIpfDApKSl7QT0wO2JyZWFrIGV9aWYoKDB8Yik+MCl7TT0wfGFbaz4+Ml0saz0wO2Rve2Fbdysoazw8Mik+PjJdPWFbTSsoazw8Mik+PjJdLGs9''@;'; put 'put ''aysxfDB9d2hpbGUoKDB8aykhPSgwfGIpKX1lbHNlIGI9MDthW3crKGI8PDIpPj4yXT0tMX1lbHNlIHc9MDthW0ErKEQ8PDUpKzEyPj4yXT13LGI9MHxhW2YrKChSPVIrMXwwKTw8NSk+PjJdLHc9QSsoKEQ9UitHfDApPDw1KXwwfXdoaWxlKCgwfGIpPi0xKX1hW3c+PjJdPS0xfWVsc2UgQT0w''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiAwfEF9ZnVuY3Rpb24gakwobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBLLHBlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7Sz0wfHFjKGx8PTApLChwZT0wIT0oMHxtKSkmJihhW20+PjJdPTApLGM9MHxtbChsLGMpO2U6ZG97aWYo''@;'; put 'put ''YylBPWM7ZWxzZSBpZihSPTA9PSgwfGYpLEQ9MD09KDB8cCksKDB8cWMobCkpPigwfEspKWZvcig7Oyl7Yz0wfGhoKGwpO3Q6ZG97c3dpdGNoKDB8YVtjPj4yXSl7Y2FzZSAwOnN3aXRjaCgwfGFbKGM9MHxhW2MrND4+Ml0pPj4yXSl7Y2FzZS0zOmJyZWFrO2Nhc2UtMjppZihEKWJyZWFrIHQ7''@;'; put 'put ''YVtwPj4yXT1hW3A+PjJdfGFbYys0Pj4yXTticmVhayB0O2RlZmF1bHQ6YnJlYWsgdH1pZigoMHwodz0wfGFbYys0Pj4yXSkpPi0xKXtuOmRve2lmKCFSKXtmb3IoYz0wOyEoKDB8KGs9MHxhWyhiPWYrKGM8PDIpfDApPj4yXSkpPD0tMSk7KXtpZigoMHxrKT09KDB8dykpYnJlYWsgbjtjPWMr''@;'; put 'put ''MXwwfWFbYj4+Ml09dyxhW2YrKGMrMTw8Mik+PjJdPS0xfX13aGlsZSgwKTtwZSYmKGFbbT4+Ml09MSsoMHxhW20+PjJdKSl9YnJlYWs7Y2FzZSAzOmlmKDB8YVs4Kyh3PTB8YVsoYz0wfGFbYys0Pj4yXSk+PjJdKT4+Ml0pe009dyxHPTY7YnJlYWsgdH0wfGFbOCsoYz0wfGFbYys0Pj4yXSk+''@;'; put 'put ''PjJdJiYoTT1jLEc9Nik7YnJlYWs7Y2FzZSAxOmlmKDB8KHc9MHxtbChsLDB8YVsoYz0wfGFbYys0Pj4yXSk+PjJdKSkpe0E9dzticmVhayBlfU09MHxhW2MrND4+Ml0sRz02O2JyZWFrO2Nhc2UgMjowfGFbOCsoYz0wfGFbYVtjKzQ+PjJdPj4yXSk+PjJdJiYoTT1jLEc9Nil9fXdoaWxlKDAp''@;'; put 'put ''O2lmKDY9PSgwfEcpJiYoRz0wLDB8KEE9MHxtbChsLE0pKSkpYnJlYWsgZTtpZigoMHxxYyhsKSk8PSgwfEspKXtBPTA7YnJlYWsgZX19ZWxzZSBBPTB9d2hpbGUoMCk7cmV0dXJuIDB8QX1mdW5jdGlvbiBkWihsLGMpe2N8PTA7dmFyIHAsQSxrLE0sZj0wLG09MCx3PTAsYj0wO3JldHVybiBN''@;'; put 'put ''PW9lLG9lPW9lKzE2fDAsQT1NLCgwfChwPTB8YVsoZj0xMisobHw9MCl8MCk+PjJdKSk+PSgwfChrPTB8YVtsPj4yXSkpPygwfGspPCgwfChmPTB8YVtsKzQ+PjJdKSkmJjAhPSgwfChiPTB8WmEoMHxhWyh3PWwrMTZ8MCk+PjJdLChtPSgwfChtPSgwfGFbbCs4Pj4yXSkra3wwKSk+KDB8Zik/''@;'; put 'put ''ZjptKTw8MikpKT8oYVtsPj4yXT1tLGFbdz4+Ml09YixhW0E+PjJdPWFbYz4+Ml0sZFoobCxBKSxmPTApOmY9MTI6KGFbKDB8YVtsKzE2Pj4yXSkrKHA8PDIpPj4yXT1hW2M+PjJdLGFbZj4+Ml09MSsoMHxhW2Y+PjJdKSxmPTApLG9lPU0sMHxmfWZ1bmN0aW9uIG1TKGwsYyxmKXtyZXR1cm4g''@;'; put 'put ''Y3w9MCwwIT0oMHwoZnw9MCkpJjAhPSgwfChsPTB8JDEobHw9MCwwLDAsMSwzMikpKT8oYVtsKzQ+PjJdPWYsYVtsPj4yXT1jLGFbbCs4Pj4yXT0tMSxhW2wrMTI+PjJdPS0xKTpsPTAsMHxsfWZ1bmN0aW9uIFpMKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8''@;'; put 'put ''PTAsYnw9MDt2YXIgbWUsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDttZT0wfHFjKGN8PTApLG1sKGMsZiksZj0wfEdhKGMsMCk7ZTpkb3tpZihmKXA9MDtlbHNlIGZvcihwZT0wPT0oMSZwfDApLEs9MCE9KDImcHwwKSxHPTAsTT0xLGY9dzs7KXtpZighKCgwfHFjKGMpKT4oMHxtZSkp''@;'; put 'put ''KXtwPUcsZj0wO2JyZWFrIGV9Uj1mO3Q6Zm9yKDs7KXtuOmZvcig7Oyl7c3dpdGNoKDB8RGYoYykpe2Nhc2UgMTp3PTc7YnJlYWsgbjtjYXNlIDA6c3dpdGNoKGY9MHxoaChjKSwwfGFbZj4+Ml0pe2Nhc2UgMDp3PTk7YnJlYWsgdDtjYXNlIDM6dz0xOTticmVhayB0O2Nhc2UgMTp3PTI2O2Jy''@;'; put 'put ''ZWFrIHQ7Y2FzZSAyOnc9MzM7YnJlYWsgbn19aWYoKDB8cWMoYykpPD0oMHxtZSkpe3A9RyxmPTA7YnJlYWsgZX19aWYoNz09KDB8dykpZj0wfGhoKGMpO2Vsc2UgaWYoMzM9PSgwfHcpKXtpZigwfChmPTB8bWwoYywwfGFbKHA9MHxhW2YrND4+Ml0pPj4yXSkpKXtwPUc7YnJlYWsgZX1pZigw''@;'; put 'put ''fChmPTB8R2EoYywwKSkpe3A9RzticmVhayBlfWlmKGY9MHxwWihsLDB8YVtwPj4yXSwwfGFbcCs0Pj4yXSwwfGFbcCs4Pj4yXSwxJnVlW3ArMTI+PjBdKSxhW1I+PjJdPWYsIWYpe3A9RyxmPTEyO2JyZWFrIGV9Zj0wfGFbZis0Pj4yXX1pZighKCgwfHFjKGMpKT4oMHxtZSkpKXtwPUcsZj0w''@;'; put 'put ''O2JyZWFrIGV9Uj1mfWlmKDk9PSgwfHcpKXc9MHxhWzgrKEQ9MHxhW2YrND4+Ml0pPj4yXSxmPTB8YVtEKzQ+PjJdLCgwfChwPTB8YVtEPj4yXSkpPi0xfC00PT0oMHxwKT8odz0oMHxhW20+PjJdKSt3fDAsaz1HKzF8MCk6cGV8LTMhPSgwfHApPy0zPT0oMHxwKT9LJjAhPSgwfE0pPyhhW0Er''@;'; put 'put ''KGY8PDIpPj4yXT0xLHA9LTMsaz1HLE09MCk6KHA9LTMsaz1HKTprPUc6KGY9LTEscD0tMSx3PS0xLGs9RyksZj0wfGExKGwscCxmLHcpLGFbUj4+Ml09ZixmPyhhWzEyKyhmPTB8YVtmKzQ+PjJdKT4+Ml09YVtEKzEyPj4yXSxhW2YrMTY+PjJdPWFbRCsxNj4+Ml0sZj0wKTpmPTEyLCgwfHcp''@;'; put 'put ''PigwfGFbYj4+Ml0pJiYoYVtiPj4yXT13KSxwPVI7ZWxzZSBpZigxOT09KDB8dykpe2lmKGY9MHxwZyhsLDB8YVsodz0wfGFbZis0Pj4yXSk+PjJdLDB8YVsocD13KzR8MCk+PjJdKSxhW1I+PjJdPWYsIWYpe3A9RyxmPTEyO2JyZWFrIGV9aWYoRD0wfGFbZis0Pj4yXSwwfChmPTB8bWwoYyww''@;'; put 'put ''fGFbcD4+Ml0pKSl7cD1HO2JyZWFrIGV9aWYoMHwoZj0wfEdhKGMsMCkpKXtwPUc7YnJlYWsgZX1pZigwfChmPTB8bWwoYyxEKzR8MCkpKXtwPUc7YnJlYWsgZX1pZigwfChmPTB8R2EoYywxKSkpe3A9RzticmVhayBlfWlmKDB8KGY9MHxtbChjLDB8YVt3Pj4yXSkpKXtwPUc7YnJlYWsgZX1r''@;'; put 'put ''PUcscD1ELGY9MHxHYShjLDApfWVsc2UgaWYoMjY9PSgwfHcpKXtpZihmPTB8eXYobCwwfGFbKEQ9MHxhW2YrND4+Ml0pPj4yXSwwfGFbKHc9RCs0fDApPj4yXSksYVtSPj4yXT1mLCFmKXtwPUcsZj0xMjticmVhayBlfWlmKGFbKHA9MHxhW2YrND4+Ml0pPj4yXT0wLGFbKGs9cCs0fDApPj4y''@;'; put 'put ''XT0wLDB8KGY9MHxtbChjLDB8YVt3Pj4yXSkpKXtwPUc7YnJlYWsgZX1pZigwfChmPTB8R2EoYywwKSkpe3A9RzticmVhayBlfWlmKDB8KGY9MHxtbChjLGspKSl7cD1HO2JyZWFrIGV9aWYoMHwoZj0wfEdhKGMsMSkpKXtwPUc7YnJlYWsgZX1pZigwfChmPTB8bWwoYywwfGFbRD4+Ml0pKSl7''@;'; put 'put ''cD1HO2JyZWFrIGV9az1HLGY9MHxHYShjLDApfWlmKGYpe3A9azticmVha31HPWssZj1wfX13aGlsZSgwKTtyZXR1cm4gYVttPj4yXT0oMHxhW20+PjJdKStwLDB8Zn1mdW5jdGlvbiBwWihsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MDtyZXR1cm4obD0wfG1TKGx8PTAs''@;'; put 'put ''MixBPTB8JDEobCwwLDAsMSwxNikpKT8oYVtBPj4yXT1jLGFbQSs0Pj4yXT1mLGFbQSs4Pj4yXT1wLHVlWyhBPUErMTJ8MCk+PjBdPS0yJnVlW0E+PjBdfDEmbSxhW2wrMTY+PjJdPWFbYysxNj4+Ml0pOmw9MCwwfGx9ZnVuY3Rpb24gcGcobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wO3JldHVy''@;'; put 'put ''bihjfD0wKSYmKDAhPSgwfGYpJjAhPSgwfChsPTB8bVMobCwzLHA9MHwkMShsLDAsMCwxLDgpKSkpPyhhW3A+PjJdPWMsYVtwKzQ+PjJdPWYsYVtsKzE2Pj4yXT0oMHxhW2YrMTY+PjJdKSsoMHxhW2MrMTY+PjJdKSxmPWwpOmY9MCksMHxmfWZ1bmN0aW9uIGdaKGwsYyxmKXtjfD0wLGZ8PTA7''@;'; put 'put ''dmFyIHAsbT0wO3JldHVybiAwIT0oMHwocD0wfCQxKGx8PTAsMCwwLDAsOCkpKSYmKGY9MHxhMShsLC0zLGYsLTEpLGFbcD4+Ml09ZiwwIT0oMHxmKSkmJihtPTB8JDEobCwwLDAsMCwzMiksYVtwKzQ+PjJdPW0sMCE9KDB8bSkpPyhhW20rND4+Ml09YVsobD1jKzR8MCk+PjJdLGFbbT4+Ml09''@;'; put 'put ''YVtjPj4yXSxhW20rOD4+Ml09LTEsYVttKzEyPj4yXT0tMSxhWyhtPW0rMTZ8MCk+PjJdPTAsYVttKzQ+PjJdPTAsYVttKzg+PjJdPTAsYVttKzEyPj4yXT0wLGFbbD4+Ml09cCxhW2M+PjJdPTEsbD0wKTpsPTEyLDB8bH1mdW5jdGlvbiB6TChsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTAsbT0w''@;'; put 'put ''LEE9MDtpZigoMHwobT0wfGFbKGx8PTApPj4yXSkpPi0xKXtBPTB8YVtjKzE2Pj4yXSxwPTAsYz1tO2Rve209Yz4+PjEsYVsoMD09KDEmY3wwKT9BKygxMiptfDApfDA6QSsoMTIqbXwwKSs0fDApPj4yXT1mLGM9MHxhW2wrKChwPXArMXwwKTw8Mik+PjJdfXdoaWxlKCgwfGMpPi0xKX1hW2w+''@;'; put 'put ''PjJdPS0xfWZ1bmN0aW9uIEckKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbT0wO3JldHVybiAwIT0oMHwocD0wfCQxKGx8PTAsMCwwLDAsOCkpKSYmKGY9MHxhMShsLC0zLGYsLTEpLGFbcCs0Pj4yXT1mLDAhPSgwfGYpKSYmKG09MHwkMShsLDAsMCwwLDMyKSxhW3A+PjJdPW0sMCE9KDB8bSkp''@;'; put 'put ''PyhhW20rND4+Ml09YVsobD1jKzR8MCk+PjJdLGFbbT4+Ml09YVtjPj4yXSxhW20rOD4+Ml09LTEsYVttKzEyPj4yXT0tMSxhWyhtPW0rMTZ8MCk+PjJdPTAsYVttKzQ+PjJdPTAsYVttKzg+PjJdPTAsYVttKzEyPj4yXT0wLGFbbD4+Ml09cCxhW2M+PjJdPTEsbD0wKTpsPTEyLDB8bH1mdW5j''@;'; put 'put ''dGlvbiBXJChsLGMpe2N8PTA7dmFyIE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO009b2Usb2U9b2UrMTZ8MCxiPU0sbT0xJihBPTB8YVsodz0zMisobHw9MCl8MCk+PjJdKTtlOmRve3N3aXRjaCgwfHVlW2M+PjBdKXtjYXNlIDkxOmY9MHxOY2UobCxjKzF8MCk7YnJlYWs7Y2FzZSA5''@;'; put 'put ''MjppZigwfChwPTB8VmNlKGY9YysxfDApKSl7Zj0wfFckKGwscCksYVtsKzEyPj4yXT1jKzI7YnJlYWsgZX1zd2l0Y2goMHwocD0wfHVlW2Y+PjBdKSl7Y2FzZSAwOmY9NTticmVhayBlO2Nhc2UgOTg6cD0wfGExKDB8YVtsPj4yXSwtMiw2NCwtMSk7YnJlYWs7Y2FzZSA2NjpwPTB8YTEoMHxh''@;'; put 'put ''W2w+PjJdLC0yLDEyOCwtMSk7YnJlYWs7Y2FzZSA2MDpwPTB8YTEoMHxhW2w+PjJdLC0yLDE2LC0xKTticmVhaztjYXNlIDYyOnA9MHxhMSgwfGFbbD4+Ml0sLTIsMzIsLTEpO2JyZWFrO2Nhc2UgMTIwOm09KHc9MTIzPT0oMHx1ZVsoQT1jKzJ8MCk+PjBdKSk/ODoyLEE9dz9jKzN8MDpBLGY9''@;'; put 'put ''MCxwPTA7ZG97aWYoKDB8KGM9MHxqY2UoMHx1ZVtBK2Y+PjBdKSkpPDApYnJlYWs7cD1jKyhwPDw0KXwwLGY9ZisxfDB9d2hpbGUoKDB8cCk8MTExNDExMiYoMHxmKTwoMHxtKSk7aWYoZj1BK2Z8MCx3KXtpZigxMjUhPSgwfHVlW2Y+PjBdKSl7Zj05O2JyZWFrIGV9Zj1mKzF8MH1iPTB8YVts''@;'; put 'put ''Pj4yXSxhWyh3PWwrMjR8MCk+PjJdPTErKGs9MHxhW3c+PjJdKSxwPTB8YTEoYixwLHAsayksZj1mKy0xfDA7YnJlYWs7Y2FzZSA2MzpjYXNlIDQzOmNhc2UgMTIzOmlmKG0pe2s9Mzc7YnJlYWsgZX1mPTEzO2JyZWFrIGU7Y2FzZSAxMjQ6aWYoMHxtKXtrPTM3O2JyZWFrIGV9Zj0wfGExKDB8''@;'; put 'put ''YVtsPj4yXSwtMSwtMSwtMSksaz00NTticmVhayBlO2RlZmF1bHQ6aWYoISgwPT0oMHxtKSYocCstNDl8MCk+Pj4wPDkpKXtrPTM3O2JyZWFrIGV9Yj1wKy00OHwwLGs9MHxhW2w+PjJdLGFbKHc9bCsyNHwwKT4+Ml09MSsocD0wfGFbdz4+Ml0pLHA9MHxhMShrLC00LGIscCksYVsoaz1sKzI4''@;'; put 'put ''fDApPj4yXT0oMHxiKTwoMHwodz0wfGFbaz4+Ml0pKT93OmJ9Yz1mKzF8MCxmPXAsaz00NTticmVhaztjYXNlIDQ2OmY9MHxhW2w+PjJdLGFbKG09bCsyNHwwKT4+Ml09MSsocD0wfGFbbT4+Ml0pLDQmQT8ocD0wfGExKGYsMCw5LHApLGs9MHxhW2w+PjJdLGFbbT4+Ml09MSsoZj0wfGFbbT4+''@;'; put 'put ''Ml0pLGY9MCE9KDB8cCkmMCE9KDB8KGY9MHxhMShrLDExLDExMTQxMTEsZikpKT8wfHBnKDB8YVtsPj4yXSxwLGYpOjApOmY9MHxhMShmLDAsMTExNDExMSxwKSxjPWMrMXwwLGs9NDU7YnJlYWs7Y2FzZSA5NDppZigwPT0oMHxtKSYmKDB8YVtsKzE2Pj4yXSkhPSgwfGMpKXtmPWMsaz0zNzti''@;'; put 'put ''cmVhayBlfWM9YysxfDAsZj0wfGExKDB8YVtsPj4yXSwtMiwxLC0xKSxrPTQ1O2JyZWFrO2Nhc2UgMzY6aWYoZj1jKzF8MCwwPT0oMHxtKSYmMHx1ZVtmPj4wXSl7Zj1jLGs9Mzc7YnJlYWsgZX1jPWYsZj0wfGExKDB8YVtsPj4yXSwtMiwyLC0xKSxrPTQ1O2JyZWFrO2Nhc2UgNjM6Y2FzZSA0''@;'; put 'put ''MzpjYXNlIDEyMzpjYXNlIDQyOm0/Zj0xMzooZj1jLGs9MzcpO2JyZWFrO2Nhc2UgMTI0Om0/az0zNjooZj1jLGs9MzcpO2JyZWFrO2Nhc2UgMDprPTM2O2JyZWFrO2RlZmF1bHQ6Zj1jLGs9Mzd9fXdoaWxlKDApO2lmKDM2PT0oMHxrKSlmPTB8YTEoMHxhW2w+PjJdLC0xLC0xLC0xKSxrPTQ1''@;'; put 'put ''O2Vsc2UgaWYoMzc9PSgwfGspKWlmKCgwfChBPTB8ZjgoYixmLC0xKSkpPDApZj0yO2Vsc2V7ZG97aWYoMiZhW3c+PjJdKXtpZigwPT0oMHwkaigwfGFbYj4+Ml0pKSYmMD09KDB8S2ooMHxhW2I+PjJdKSkpe2s9NDM7YnJlYWt9bT0wIT0oMHwobT0wfGExKHc9MHxhW2w+PjJdLDB8ZmcoMHxh''@;'; put 'put ''W2I+PjJdKSxtPTB8ZmcoMHxhW2I+PjJdKSwwfGFbKHA9bCsyNHwwKT4+Ml0pKSkmMCE9KDB8KGM9MHxhMSgwfGFbbD4+Ml0sdz0wfGhnKDB8YVtiPj4yXSksYz0wfGhnKDB8YVtiPj4yXSksMHxhW3A+PjJdKSkpPzB8cGcoMHxhW2w+PjJdLG0sYyk6MH1lbHNlIGs9NDN9d2hpbGUoMCk7NDM9''@;'; put 'put ''PSgwfGspJiYobT0wfGExKDB8YVtsPj4yXSxtPTB8YVtiPj4yXSxtLDB8YVsocD1sKzI0fDApPj4yXSkpLGFbcD4+Ml09MSsoMHxhW3A+PjJdKSxjPWYrQXwwLGY9bSxrPTQ1fXJldHVybiA0NT09KDB8aykmJihmPyhhW2wrOD4+Ml09ZixhW2wrMTI+PjJdPWMsZj0wKTpmPTEyKSxvZT1NLDB8''@;'; put 'put ''Zn1mdW5jdGlvbiBGY2UobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTA7Yj1vZSxvZT1vZSsxNnwwLG09YixsPTB8WSQobHw9MCx3PWIrNHwwKSw0ND09KDB8dWVbbD4+MF0pPyhsPTB8WSQobCsxfDAsbSksQT0wfGFbbT4+Ml0sbT0wfGFbdz4+Ml0pOihhW20+PjJd''@;'; put 'put ''PXc9MHxhW3c+PjJdLEE9dyxtPXcpO2Rve2lmKG0+Pj4wPjI1NXwoMHxBKT4yNTV8KDB8QSk+LTEmKDB8QSk8KDB8bSkpbD0wO2Vsc2V7aWYoIWMpe2lmKDkyIT0oMHx1ZVtsPj4wXSkpe2w9MDticmVha31sPWwrMXwwfTEyNT09KDB8dWVbbD4+MF0pPyhhW2Y+PjJdPW0sYVtwPj4yXT1BLGw9''@;'; put 'put ''bCsxfDApOmw9MH19d2hpbGUoMCk7cmV0dXJuIG9lPWIsMHxsfWZ1bmN0aW9uIEhjZShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MDtyZXR1cm4oMHxhWzEyKyhjfD0wKT4+Ml0pPi0xPzAhPSgwfChwPTB8YTEoMHxhW2w+PjJdLC0xLC0xLC0xKSkpJiYwIT0oMHwobT0wfHl2KDB8''@;'; put 'put ''YVtsPj4yXSxwLGMpKSk/KGFbbSsxNj4+Ml09cD0wfGFbYysxNj4+Ml0sQT02KTpwPTEyOihtPWMscD0wfGFbYysxNj4+Ml0sQT02KSw2PT0oMHxBKSYmKGFbbSsxMj4+Ml09ZixhW20rMTY+PjJdPXArMSxhW2wrOD4+Ml09bSxwPTApLDB8cH1mdW5jdGlvbiBZJChsLGMpe2x8PTA7dmFyIGY9''@;'; put 'put ''MCxwPTAsbT0wO2lmKGFbKGN8PTApPj4yXT0tMSwoKDB8dWVbbD4+MF0pLTQ4fDApPj4+MDwxMClmb3IoYVtjPj4yXT0wLGY9bCxtPTAscD0wfHVlW2w+PjBdO2FbYz4+Ml09bT0oMTAqbXwwKS00OCsocDw8MjQ+PjI0KXwwLCEoKDB8bSk+MjU1fCgoKHA9MHx1ZVsobD1mKzF8MCk+PjBdKTw8''@;'; put 'put ''MjQ+PjI0KS00OHwwKT4+PjA+OSk7KWY9bDtyZXR1cm4gMHxsfWZ1bmN0aW9uIE5jZShsLGMpe2N8PTA7dmFyIG1lLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTA7aWYobWU9b2Usb2U9b2UrMjg4fDAsbT1tZSxhWyhmPW1lKzI2NHwwKT4+Ml09''@;'; put 'put ''YVsobHw9MCk+PjJdLGFbKEE9Zis4fDApPj4yXT0wLGFbZisxMj4+Ml09MzIsRz0wfFIwKDEyOCksYVsocGU9Zis0fDApPj4yXT1HLEcpe2FbKHA9bSs0fDApPj4yXT0wLGFbbT4+Ml09MSYoRz05ND09KDB8dWVbYz4+MF0pKSxjPTB8ZnVuY3Rpb24gWmNlKGwsYyxmLHApe2x8PTAsZnw9MCxw''@;'; put 'put ''fD0wO3ZhciBSLEssYmUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEc9MCxwZT0wLG1lPTA7YmU9b2Usb2U9b2UrMzJ8MCxLPWJlKzR8MCx3PTB8ZjgoUj1iZSxjfD0wLC0xKSxtPTB8dWVbYz4+MF07ZTpkb3tpZigoMHx3KT49MSl7cGU9cCs0fDAsRD1sKzMyfDAsQT1jLGI9dzt0OmZv''@;'; put 'put ''cig7Oyl7aWYoISgodz0oMHxBKT09KDB8YykpfG08PDI0Pj4yNCE9OTMpKXttZT01O2JyZWFrfW46ZG97aWYoISh3fG08PDI0Pj4yNCE9NDUpKXtzd2l0Y2goMHx1ZVtBKzE+PjBdKXtjYXNlIDkzOmJyZWFrIG47Y2FzZSA0NTpicmVhaztkZWZhdWx0Om09MTE7YnJlYWsgZX1pZig5Mz09KDB8''@;'; put 'put ''dWVbQSsyPj4wXSkpe209MTE7YnJlYWsgZX19fXdoaWxlKDApO246ZG97aWYobTw8MjQ+PjI0PT05MSl7c3dpdGNoKDB8dWVbQSsxPj4wXSl7Y2FzZSA2MTpjYXNlIDQ2Om09MzticmVhayBlO2Nhc2UgNTg6YnJlYWs7ZGVmYXVsdDptZT0xNzticmVhayBufXc9QSsyfDAsbT0wO3I6Zm9yKDs7''@;'; put 'put ''KXtzd2l0Y2goMHx1ZVt3K20+PjBdKXtjYXNlIDA6bWU9MTY7YnJlYWsgdDtjYXNlIDU4OmJyZWFrIHJ9aWYoISgoMHxtKTwxMykpe21lPTE2O2JyZWFrIHR9bT1tKzF8MH1pZihEbygwfEssMHx3LDB8bSksdWVbSyttPj4wXT0wLCEoYj0wfG9jZShLKSkpe21lPTE2O2JyZWFrIHR9aWYoQT13''@;'; put 'put ''KyhtKzIpfDAsOTMhPSgwfHVlW3crKG0rMSk+PjBdKSl7bWU9MTY7YnJlYWsgdH1pZigwfGFbcD4+Ml0pe2lmKCgwfChtPTB8YVtwZT4+Ml0pKT42Myl7bT0xMjticmVhayBlfWFbcGU+PjJdPW0rMSxhW3ArOCsobTw8Mik+PjJdPWJ9ZWxzZSBtPTExMTQxMTEsTT0wLGs9MSxtZT0yNX1lbHNl''@;'; put 'put ''IG1lPTE3fXdoaWxlKDApO2lmKDE3PT0oMHxtZSkpaWYobWU9MCx3PTB8YVtSPj4yXSw0NT09KDB8dWVbKEE9QStifDApPj4wXSkmJjkzIT0oMHx1ZVsoRz1BKzF8MCk+PjBdKSl7aWYoKDB8KEE9MHxmOChSLEcsLTEpKSk8MXwoMHx3KT4oMHwobT0wfGFbUj4+Ml0pKSl7bT0xMTticmVhayBl''@;'; put 'put ''fWI9MCxNPXcsQT1HK0F8MCxrPTAsbWU9MjV9ZWxzZSBiPTAsbT13LE09dyxrPTAsbWU9MjU7aWYoMjU9PSgwfG1lKSl7aWYobWU9MCwhKHc9MHxtWihmKSkpe209MTI7YnJlYWsgZX1pZihhW3c+PjJdPU0sYVt3KzQ+PjJdPW0sYVt3KzEyPj4yXT1iLGFbdys4Pj4yXT0tMSwhKGt8MD09KDIm''@;'; put 'put ''YVtEPj4yXXwwKSkmJjAhPSgwfEdjZShmLE0sbSkpKXttPTEyO2JyZWFrIGV9fWlmKGI9MHxmOChSLEEsLTEpLG09MHx1ZVtBPj4wXSwoMHxiKTwxKXttZT0zO2JyZWFrIGV9fWlmKDU9PSgwfG1lKSl7YVtsKzEyPj4yXT1BKzEsbT0wO2JyZWFrfWlmKDE2PT0oMHxtZSkpe209NDticmVha319''@;'; put 'put ''ZWxzZSBtZT0zfXdoaWxlKDApO3JldHVybiAzPT0oMHxtZSkmJihtPW08PDI0Pj4yND8yOjcpLG9lPWJlLDB8bX0obCxHP2MrMXwwOmMsZixtKTtlOmRve2lmKGMpZj0wO2Vsc2V7aWYoRz0wPT0oMHxhW20+PjJdKSlwPTA7ZWxzZXtpZihJMSgwfGFbcGU+PjJdLDB8YVtBPj4yXSw0LDExMSks''@;'; put 'put ''IShjPTB8bVooZikpKXtjPTEyLGY9MDticmVha31pZihhW2M+PjJdPTExMTQxMTIsYVtjKzQ+PjJdPTExMTQxMTIsYVtjKzg+PjJdPS0xLGM9MHxhW3A+PjJdKXtpZighKHA9MHwkMSgwfGFbbD4+Ml0sMCwwLDAsNCsoZj1jPDwyKXwwKSkpe2M9MTIsZj0wO2JyZWFrfURvKDB8cCxtKzh8MCww''@;'; put 'put ''fGYpLGFbcCsoYzw8Mik+PjJdPTB9ZWxzZSBwPTB9aWYoKDB8KE09MHxhW0E+PjJdKSk+MClmb3IoRD0wfGFbcGU+PjJdLFI9bCsyNHwwLGY9MCxjPTAsaz0wOzspe209MHxhWyhiPTB8YVtEKyhrPDwyKT4+Ml0pPj4yXSx3PTB8YVsoQT1iKzR8MCk+PjJdO2Rve2lmKCFHKXtpZigoMHxtKT4o''@;'; put 'put ''MHxjKSl7YVtiPj4yXT1jLGFbQT4+Ml09bSstMSxjPXcrMXwwLEs9MTQ7YnJlYWt9Yz0oMHwoYj13KzF8MCkpPj0oMHxjKT9iOmM7YnJlYWt9Sz0xNH13aGlsZSgwKTtpZigxND09KDB8SykmJihLPTAsYVtiKzg+PjJdPWFbUj4+Ml0sYVtiKzE2Pj4yXT1wLGI9MHxtUygwfGFbbD4+Ml0sMCxi''@;'; put 'put ''KSwhKGY9MHxwZygwfGFbbD4+Ml0sZixiKSkpKXtjPTEyLGY9MDticmVhayBlfWlmKCgwfChrPWsrMXwwKSk+PSgwfE0pKXtjPTA7YnJlYWt9fWVsc2UgYz0wLGY9MH19d2hpbGUoMCk7SHQoMHxhW3BlPj4yXSksYVsocGU9bCsyNHwwKT4+Ml09MSsoMHxhW3BlPj4yXSksYVtsKzg+PjJdPWZ9''@;'; put 'put ''ZWxzZSBjPTEyO3JldHVybiBvZT1tZSwwfGN9ZnVuY3Rpb24gVmNlKGwpe3ZhciBjO2ZvcihjPTB8dWVbKGx8PTApPj4wXSxsPTA7KDB8dWVbNjM3NTIrKGw8PDMpPj4wXSkhPWM8PDI0Pj4yNDspaWYoMTI9PSgwfChsPWwrMXwwKSkpe2w9MTI7YnJlYWt9cmV0dXJuIDB8YVs2Mzc1MisobDw8''@;'; put 'put ''MykrND4+Ml19ZnVuY3Rpb24gamNlKGwpe3ZhciBjPTA7cmV0dXJuKGM9KGx8PTApLTQ4fDApPj4+MDwxMD8wfGM6MHwoKChjPTMyfGwpLTk3fDApPj4+MDw2P2MrLTg3fDA6LTEpfWZ1bmN0aW9uIG1aKGwpe3ZhciBwLG0sdyxjPTAsZj0wLEE9MCxiPTA7cmV0dXJuKDB8KGY9MHxhWyh3PTgr''@;'; put 'put ''KGx8PTApfDApPj4yXSkpPj0oMHwobT0wfGFbKHA9bCsxMnwwKT4+Ml0pKT8oMHxtKTw9MzI3NjcmJihhW3A+PjJdPW08PDEsMCE9KDB8KGM9MHxaYSgwfGFbKEE9bCs0fDApPj4yXSxtPDwzKSkpKT8oYVtBPj4yXT1jLGY9MHxhW3c+PjJdLGI9Nik6Yz0wOihjPTB8YVtsKzQ+PjJdLGI9Niks''@;'; put 'put ''Nj09KDB8YikmJihhW3c+PjJdPWYrMSxiPTB8JDEoMHxhW2w+PjJdLDAsMCwxLDIwKSxhW2MrKGY8PDIpPj4yXT1iLGM9YiksMHxjfWZ1bmN0aW9uIEdjZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MDtlOmRve2lmKCgwfGMpPigwfGYpKWM9MDtlbHNlIGZvcig7''@;'; put 'put ''Oyl7dDpkb3tpZigwfEtqKGMpKWZvcihtPTB8ZmcoYykscD1tOzspe2lmKEE9YysxfDAscD1wKzF8MCwoMHxjKT49KDB8Zikpe3c9bSxjPUEsQT0xMjticmVhayB0fWlmKCgwfGZnKEEpKSE9KDB8cCkpe3c9bSxjPUEsQT0xMjticmVha31jPUF9ZWxzZXtpZighKDB8JGooYykpKXtjPWMrMXww''@;'; put 'put ''O2JyZWFrfWZvcihwPW09MHxoZyhjKTs7KXtpZihBPWMrMXwwLHA9cCsxfDAsKDB8Yyk+PSgwfGYpKXt3PW0sYz1BLEE9MTI7YnJlYWsgdH1pZigoMHxoZyhBKSkhPSgwfHApKXt3PW0sYz1BLEE9MTI7YnJlYWt9Yz1BfX19d2hpbGUoMCk7aWYoMTI9PSgwfEEpKXtpZihBPTAsIShtPTB8bVoo''@;'; put 'put ''bCkpKXtjPS0xO2JyZWFrIGV9YVttPj4yXT13LGFbbSs0Pj4yXT1wKy0xLGFbbSs4Pj4yXT0tMX1pZigoMHxjKT4oMHxmKSl7Yz0wO2JyZWFrfX19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBXY2UobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3LGIsayxNLFIsQT0w''@;'; put 'put ''LEQ9MDtyZXR1cm4gUj1vZSxvZT1vZSsxNnwwLE09UiwoMHwobD0wfGFbNDArKGI9MHxhWzQrKGx8PTApPj4yXSk+PjJdKSk+MCYwIT0oMHwodz0wPT0oOCZhWyhrPWIrNTZ8MCk+PjJdfDApP2Y6MCkpPyhsPTB8UjAobDw8MikpPyhBPWwsZj1sLEQ9Myk6bD0xMjooQT0wLGY9MCxEPTMpLDM9''@;'; put 'put ''PSgwfEQpJiYobD0wfGFbYis2MD4+Ml0/MHxmdW5jdGlvbiBZY2UobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIHFyLExyLGEwLEZpLFBpLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAs''@;'; put 'put ''amU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLE10PTAsa3Q9MCxhdD0wLEV0PTAsWnQ9MCx1dD0wLHd0PTAscm49MCx5bj0wLEZuPTAsbHI9MCxOcj0wLGtyPTAsY3I9MCxDcj0wO1BpPW9lLG9lPW9lKzE2fDAsYVsoYTA9UGkpPj4yXT0wLEc9MSZwLHFyPTImcCxSPTQmYVsoTHI9bCs1NnwwKT4+''@;'; put 'put ''Ml0sRmk9MHxWJCgwLDApO2U6ZG97aWYoRmkpe2lmKCEoSz0wfCQxKEZpLDAsMCwwLDMyKSkpe2RnKEZpKSxwPTEyO2JyZWFrfWFbSysyND4+Ml09MCxhW0srMjg+PjJdPTAsKHBlPTB8YVsoQ3I9bCs0MHwwKT4+Ml0pPyhwPTB8UjAocGU8PDIpKT8oaz1wLGI9cCxNdD02KTooRD0wLE09MCxr''@;'; put 'put ''PXAscD0xMixiPTAsdz0wLEE9MCk6KGs9MCxiPTAsTXQ9Nik7dDpkb3tpZig2PT0oMHxNdCkpe2lmKHA9MHxhW2wrMjg+PjJdKXtpZighKHA9MHxSMChwPDwzKSkpe0Q9cCxNPTAscD0xMix3PTAsQT0wO2JyZWFrfUQ9cCx3PXB9ZWxzZSBEPTAsdz0wO2lmKHA9MHxhWyhjcj1sKzUyfDApPj4y''@;'; put 'put ''XSl7aWYoIShwPTB8UjAocDw8MikpKXtNPXAscD0xMixBPTA7YnJlYWt9TT1wLEE9cH1lbHNlIE09MCxBPTA7eW49bCs4fDAsRm49bCsxMnwwLGxyPTA9PSgwfGYpLE5yPTAhPSgwfGYpLGtyPWwrMzJ8MCxybj0wIT0oMHxSKSx3dD0wPT0oMHxHKSxiZT1jLHA9MSxtZT0tMSxCZT0tMSxSPXBl''@;'; put 'put ''LGx0PTA7bjpmb3IoOzspe2lmKCgwfFIpPjApe0c9MDtkb3thW2srKEc8PDIpPj4yXT0tMSxscnx8KGFbZisoRzw8Mik+PjJdPS0xLFI9MHxhW0NyPj4yXSksRz1HKzF8MH13aGlsZSgoMHxHKTwoMHxSKSl9aWYoKDB8KFI9MHxhW2NyPj4yXSkpPjAmJnIyKDB8QSwwLFI8PDJ8MCksWnQ9cCtt''@;'; put 'put ''ZXwwLCgwfChwPTB8ZjgoYTAsYmUsNCkpKTwxKXtpZigoMHxwKTwwKXtwPTE7YnJlYWsgdH1wPTF9aWYoRXQ9YmUrcHwwLHV0PTB8YVthMD4+Ml0sMHxhWyhHPTgrKFI9MHxhW3luPj4yXSl8MCk+PjJdKXtmb3IoSGU9MCE9KDB8WnQpLGplPTk1PT0oMHxsdCksZXQ9MD09KDB8WnQpLEdlPXJu''@;'; put 'put ''JjEwPT0oMHxsdCkscnQ9KDB8WnQpPDEmd3QsTGU9UixSPTAsT2U9MCxiZT1HOzspe0c9MHxhWyhtZT1MZSsyMHwwKT4+Ml07cjpkb3tpZihHKXtpZigwPT0oMSZHfDApfHJ0fEdlKXtpZigyJkd8MCYmISgwPT0oKGF0PTB8YVthMD4+Ml0pfHFyfDApfHJuJjEwPT0oMHxhdCkpKXtwZT1PZTti''@;'; put 'put ''cmVha31kb3tpZigxNiZHfDApe2lmKGplKXtwZT1PZTticmVhayByfWlmKDB8Q3MobHQpKXtwZT1PZTticmVhayByfWlmKDk1PT0oMHwoRz0wfGFbYTA+PjJdKSkpYnJlYWs7aWYoISgwfENzKEcpKSl7cGU9T2U7YnJlYWsgcn19fXdoaWxlKDApO2lmKDMyJihHPTB8YVttZT4+Ml0pKXtpZihq''@;'; put 'put ''ZSl7aWYoOTU9PSgwfChHPTB8YVthMD4+Ml0pKSl7cGU9T2U7YnJlYWt9fWVsc2UgaWYoKGF0PTA9PSgwfENzKGx0KSkpfDk1PT0oMHwoRz0wfGFbYTA+PjJdKSkpe3BlPU9lO2JyZWFrfWlmKDB8Q3MoRykpe3BlPU9lO2JyZWFrfUc9MHxhW21lPj4yXX1wZT0wfGFbYTA+PjJdO2Rve2lmKDAh''@;'; put 'put ''PSgwfHBlKSZIZSYwIT0oNjQmR3wwKSl7aWYoamU/Rz0xOihHPTAhPSgwfENzKGx0KSkscGU9MHxhW2EwPj4yXSksOTU9PSgwfHBlKSl7aWYoRyl7cGU9T2U7YnJlYWsgcn1icmVha31pZihHXjAhPSgwfENzKHBlKSkpYnJlYWs7cGU9T2U7YnJlYWsgcn19d2hpbGUoMCk7aWYoISgxMjgmYVtt''@;'; put 'put ''ZT4+Ml0pKXtNdD00OTticmVha31pZihldHwwPT0oMHwoRz0wfGFbYTA+PjJdKSkpe3BlPU9lO2JyZWFrfWlmKGplP3BlPTE6KHBlPTAhPSgwfENzKGx0KSksRz0wfGFbYTA+PjJdKSw5NT09KDB8Rykpe2lmKHBlKXtNdD00OTticmVha31wZT1PZTticmVha31pZihwZV4wIT0oMHxDcyhHKSkp''@;'; put 'put ''e3BlPU9lO2JyZWFrfU10PTQ5O2JyZWFrfXBlPU9lfWVsc2UgTXQ9NDl9d2hpbGUoMCk7ZG97aWYoNDk9PSgwfE10KSl7aWYoTXQ9MCwhT2Upe1I9MHxhW0xlKzE2Pj4yXSxwZT0wfGFbYmU+PjJdO2JyZWFrfWlmKEc9MHxhWyhwZT1LKzI4fDApPj4yXSlLPUc7ZWxzZXtpZighKEc9MHwkMShG''@;'; put 'put ''aSwwLDAsMCwzMikpKXtNdD01MzticmVhayBufWlmKGFbRysyND4+Ml09SyxhW0crMjg+PjJdPTAsYXQ9MHwkMShGaSwwLDAsMCxhW0NyPj4yXTw8MiksYVtHKzIwPj4yXT1hdCwhYXQpe010PTYwO2JyZWFrIG59YVtwZT4+Ml09RyxLPUd9aWYoYVtLPj4yXT1adCxhW0srND4+Ml09RXQsYVtL''@;'; put 'put ''Kzg+PjJdPWFbYmU+PjJdLGFbSysxMj4+Ml09YVtMZSsxMj4+Ml0sYVtLKzE2Pj4yXT1hW2EwPj4yXSwoMHxhW0NyPj4yXSk+MCl7cGU9MHxhW0srMjA+PjJdLEc9MDtkb3thW3BlKyhHPDwyKT4+Ml09YVtrKyhHPDwyKT4+Ml0sRz1HKzF8MH13aGlsZSgoMHxHKTwoMHxhW0NyPj4yXSkpfWlm''@;'; put 'put ''KEc9MHxhW0xlKzE2Pj4yXSl7aWYoKDB8KHBlPTB8YVtHPj4yXSkpPD0tMSl7cGU9T2U7YnJlYWt9bWU9MHxhW0srMjA+PjJdO2Rve0c9Rys0fDAsYVttZSsocGU8PDIpPj4yXT1adCxwZT0wfGFbRz4+Ml19d2hpbGUoKDB8cGUpPi0xKTtwZT1PZX1lbHNlIHBlPU9lfX13aGlsZSgwKTtpZigh''@;'; put 'put ''KDB8YVsoYmU9TGUrNDB8MCk+PjJdKSlicmVhaztMZT1MZSszMnwwLE9lPXBlfWlmKFIpe2lmKCgwfChHPTB8YVtSPj4yXSkpPi0xKWRve2FbaysoRzw8Mik+PjJdPVp0LEc9MHxhWyhSPVIrNHwwKT4+Ml19d2hpbGUoKDB8Ryk+LTEpfWVsc2UgUj0wO3BlPyhiZT1adCxtZT1FdCxIZT1wZSxq''@;'; put 'put ''ZT1SLE10PTc5KTpNdD0xNzF9ZWxzZSBSPTAsTXQ9MTcxO3I6Zm9yKDs7KXtpZig3OT09KDB8TXQpKXtpZigoMHxIZSk9PSgwfGFbRm4+PjJdKSl7aWYoKDB8QmUpPj0oMHxiZSkpe2lmKCEoTnImKDB8QmUpPT0oMHxiZSkpKXtSPWplLE10PTE3MTtjb250aW51ZX1pZighKDB8SiQoUj0wfGFb''@;'; put 'put ''Q3I+PjJdLDB8YVtrcj4+Ml0sayxmKSkpe1I9amUsTXQ9MTcxO2NvbnRpbnVlfX1lbHNle2lmKGxyKXtCZT1iZSxSPWplLE10PTE3MTtjb250aW51ZX1SPTB8YVtDcj4+Ml19aWYoISgoMHxSKT4wKSl7QmU9YmUsUj1qZSxNdD0xNzE7Y29udGludWV9Zm9yKFI9MDs7KWlmKGFbZisoUjw8Mik+''@;'; put 'put ''PjJdPWFbaysoUjw8Mik+PjJdLCgwfChSPVIrMXwwKSk+PSgwfGFbQ3I+PjJdKSl7QmU9YmUsUj1qZSxNdD0xNzE7Y29udGludWUgcn19aWYoMCE9KDB8YVsoTGU9SGUrOHwwKT4+Ml0pJiYwIT0oMjU2JmFbSGUrMjA+PjJdfDApKXtpZihVJCgxKyhHPTB8YVtIZSsyND4+Ml0pfDAsRCwtOSZh''@;'; put 'put ''W0xyPj4yXSxsLGssYmUpLDB8bjIoYysoYXQ9MHxhW0QrKEc8PDMpPj4yXSl8MCxtZSstMXwwLEc9KDB8YVtEKyhHPDwzKSs0Pj4yXSktYXR8MCkpe1I9amUsTXQ9MTcxO2NvbnRpbnVlfWlmKFI9MSYoYXQ9MD09KDB8RykpLHBlPTB8YVtIZSsxMj4+Ml0sYXQmJjB8YVtNKyhwZTw8Mik+PjJd''@;'; put 'put ''KXtSPWplLE10PTE3MTtjb250aW51ZX1pZihhW00rKHBlPDwyKT4+Ml09UixtZT1tZSsoRz1HKy0xfDApfDAsRz1HK2JlfDAscGU9MHxhW2EwPj4yXSwoMHwoUj0wfGY4KGEwLG1lLDQpKSk8MSl7aWYoKDB8Uik8MCl7cD0xO2JyZWFrIHR9Uj0xfWt0PW1lK1J8MCxhdD1SfWVsc2V7aWYoIShw''@;'; put 'put ''ZT0wfGFbYTA+PjJdKSl7Uj1qZSxNdD0xNzE7Y29udGludWV9aWYoKDB8KFI9MHxmOChhMCxtZSw0KSkpPDEpe2lmKCgwfFIpPDApe3A9MTticmVhayB0fVI9MX1HPWJlLGt0PW1lK1J8MCxhdD1SfWlmKGJlPUcrcHwwLCEoMHxhW0xlPj4yXSkpe3A9YXQsUj1qZSxNdD0xNzE7Y29udGludWV9''@;'; put 'put ''Zm9yKGV0PTAhPSgwfGJlKSxydD05NT09KDB8cGUpLEdlPTA9PSgwfGJlKSxNdD1ybiYxMD09KDB8cGUpLGx0PSgwfGJlKTwxJnd0LE9lPTAsUj1qZTs7KXtpOmRve2lmKCgwfGFbSGU+PjJdKT4+PjA8PXBlPj4+MCl7aWYoKDB8YVtIZSs0Pj4yXSk+Pj4wPHBlPj4+MClicmVhaztwPTB8YVso''@;'; put 'put ''bWU9SGUrMjB8MCk+PjJdO2Rve2lmKDB8cCl7aWYoISgwPT0oMSZwfDApfGx0fE10KXx8MiZwfDAmJiEoMD09KChqZT0wfGFbYTA+PjJdKXxxcnwwKXxybiYxMD09KDB8amUpKSlicmVhayBpO2Rve2lmKDE2JnB8MCl7aWYocnR8fDB8Q3MocGUpKWJyZWFrIGk7aWYoOTU9PSgwfChwPTB8YVth''@;'; put 'put ''MD4+Ml0pKSlicmVhaztpZighKDB8Q3MocCkpKWJyZWFrIGl9fXdoaWxlKDApO2lmKDMyJihwPTB8YVttZT4+Ml0pKXtpZihydCl7aWYoOTU9PSgwfChwPTB8YVthMD4+Ml0pKSlicmVhayBpfWVsc2UgaWYoKGplPTA9PSgwfENzKHBlKSkpfDk1PT0oMHwocD0wfGFbYTA+PjJdKSkpYnJlYWsg''@;'; put 'put ''aTtpZigwfENzKHApKWJyZWFrIGk7cD0wfGFbbWU+PjJdfUc9MHxhW2EwPj4yXTtkb3tpZigwIT0oMHxHKSZldCYwIT0oNjQmcHwwKSl7aWYocnQ/cD0xOihwPTAhPSgwfENzKHBlKSksRz0wfGFbYTA+PjJdKSw5NT09KDB8Rykpe2lmKHApYnJlYWsgaTticmVha31pZihwXjAhPSgwfENzKEcp''@;'; put 'put ''KSlicmVhazticmVhayBpfX13aGlsZSgwKTtkb3tpZigxMjgmYVttZT4+Ml18MCl7aWYoR2V8MD09KDB8KHA9MHxhW2EwPj4yXSkpKWJyZWFrIGk7aWYocnQ/Rz0xOihHPTAhPSgwfENzKHBlKSkscD0wfGFbYTA+PjJdKSw5NT09KDB8cCkpe2lmKEcpYnJlYWs7YnJlYWsgaX1pZihHXjAhPSgw''@;'; put 'put ''fENzKHApKSlicmVhayBpO2JyZWFrfX13aGlsZSgwKTtwPTB8YVttZT4+Ml07ZG97aWYoNCZwKXtpZigyJmFbTHI+PjJdfDApYnJlYWs7aWYoISgwfGM4KHBlLDB8YVtIZSsyND4+Ml0pKSlicmVhayBpO3A9MHxhW21lPj4yXX19d2hpbGUoMCk7ZG97aWYoNCZwfDApe2lmKCEoMiZhW0xyPj4y''@;'; put 'put ''XSl8fDB8YzgoamU9MHxoZyhwZSksMHxhWyhwPUhlKzI0fDApPj4yXSkpYnJlYWs7aWYoISgwfGM4KGplPTB8ZmcocGUpLDB8YVtwPj4yXSkpKWJyZWFrIGl9fXdoaWxlKDApO2lmKCEoOCZhW21lPj4yXSkpYnJlYWs7aWYoMHxRJCgwfGFbSGUrMjg+PjJdLHBlLDImYVtMcj4+Ml0pKWJyZWFr''@;'; put 'put ''IGl9fXdoaWxlKDApO2lmKCFPZSl7T2U9MHxhW0xlPj4yXSxSPTB8YVtIZSsxNj4+Ml07YnJlYWt9aWYocD0wfGFbKEc9SysyOHwwKT4+Ml0pSz1wO2Vsc2V7aWYoIShwPTB8JDEoRmksMCwwLDAsMzIpKSl7TXQ9MTQ1O2JyZWFrIG59aWYoYVtwKzI0Pj4yXT1LLGFbcCsyOD4+Ml09MCxqZT0w''@;'; put 'put ''fCQxKEZpLDAsMCwwLGFbQ3I+PjJdPDwyKSxhW3ArMjA+PjJdPWplLCFqZSl7TXQ9MTUyO2JyZWFrIG59YVtHPj4yXT1wLEs9cH1pZihhW0s+PjJdPWJlLGFbSys0Pj4yXT1rdCxhW0srOD4+Ml09YVtMZT4+Ml0sYVtLKzEyPj4yXT1hW0hlKzEyPj4yXSxhW0srMTY+PjJdPWFbYTA+PjJdLCgw''@;'; put 'put ''fGFbQ3I+PjJdKT4wKXtHPTB8YVtLKzIwPj4yXSxwPTA7ZG97YVtHKyhwPDwyKT4+Ml09YVtrKyhwPDwyKT4+Ml0scD1wKzF8MH13aGlsZSgoMHxwKTwoMHxhW0NyPj4yXSkpfWlmKCEocD0wfGFbSGUrMTY+PjJdKXx8KDB8KEc9MHxhW3A+PjJdKSk8PS0xKWJyZWFrO21lPTB8YVtLKzIwPj4y''@;'; put 'put ''XTtkb3thW21lKyhHPDwyKT4+Ml09YmUsRz0wfGFbKHA9cCs0fDApPj4yXX13aGlsZSgoMHxHKT4tMSl9fXdoaWxlKDApO2lmKCEoMHxhWyhMZT1IZSs0MHwwKT4+Ml0pKWJyZWFrO0hlPUhlKzMyfDB9aWYoIU9lKXtwPWF0LE10PTE3MTtjb250aW51ZX1pZihSKWlmKCgwfChwPTB8YVtSPj4y''@;'; put 'put ''XSkpPi0xKXtkb3tSPVIrNHwwLGFbaysocDw8Mik+PjJdPWJlLHA9MHxhW1I+PjJdfXdoaWxlKCgwfHApPi0xKTtwZT1CZSxHPWt0LHA9YXR9ZWxzZSBwZT1CZSxHPWt0LHA9YXQ7ZWxzZSBwZT1CZSxHPWt0LHA9YXQsUj0wfWVsc2UgaWYoMTcxPT0oMHxNdCkpe2lmKE10PTAsIShtZT0wfGFb''@;'; put 'put ''SysyND4+Ml0pKWJyZWFrO2lmKDI1NiZhWzIwKyhPZT0wfGFbSys4Pj4yXSk+PjJdfDAmJihhW00rKGFbSysxMj4+Ml08PDIpPj4yXT0wKSxiZT0wfGFbSz4+Ml0sTGU9MHxhW0srND4+Ml0sYVthMD4+Ml09YVtLKzE2Pj4yXSwoMHwocGU9MHxhW0NyPj4yXSkpPjApe0s9MHxhW0srMjA+PjJd''@;'; put 'put ''LEc9MDtkb3thW2srKEc8PDIpPj4yXT1hW0srKEc8PDIpPj4yXSxHPUcrMXwwfXdoaWxlKCgwfEcpPCgwfHBlKSk7Sz1tZSxwZT1CZSxHPUxlfWVsc2UgSz1tZSxwZT1CZSxHPUxlfW1lPUcsQmU9cGUsSGU9T2UsamU9UixNdD03OX1pZigoUj0oMHxCZSk+LTEpfDA9PSgwfGFbYTA+PjJdKSl7''@;'; put 'put ''TXQ9MTgwO2JyZWFrfWFbYTA+PjJdPXV0LGJlPUV0LG1lPVp0LFI9MHxhW0NyPj4yXSxsdD11dH1pZig1Mz09KDB8TXQpKXtpZihkZyhGaSksMHxrJiZIdChiKSwwfEQmJkh0KHcpLCFNKXtwPTEyO2JyZWFrIGV9SHQoQSkscD0xMjticmVhayBlfWlmKDYwPT0oMHxNdCkpe2lmKGRnKEZpKSww''@;'; put 'put ''fGsmJkh0KGIpLDB8RCYmSHQodyksIU0pe3A9MTI7YnJlYWsgZX1IdChBKSxwPTEyO2JyZWFrIGV9aWYoMTQ1PT0oMHxNdCkpe2lmKGRnKEZpKSwwfGsmJkh0KGIpLDB8RCYmSHQodyksIU0pe3A9MTI7YnJlYWsgZX1IdChBKSxwPTEyO2JyZWFrIGV9aWYoMTUyPT0oMHxNdCkpe2lmKGRnKEZp''@;'; put 'put ''KSwwfGsmJkh0KGIpLDB8RCYmSHQodyksIU0pe3A9MTI7YnJlYWsgZX1IdChBKSxwPTEyO2JyZWFrIGV9aWYoMTgwPT0oMHxNdCkpe2FbbT4+Ml09QmUscD0xJigxXlIpO2JyZWFrfX19d2hpbGUoMCk7ZGcoRmkpLDB8ayYmSHQoYiksMHxEJiZIdCh3KSxNJiZIdChBKX1lbHNlIHA9MTJ9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIG9lPVBpLDB8cH0oYixjLEEsbSxNKTowfGZ1bmN0aW9uIFVjZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgTnIsa3IsY3IsQ3IsTHIsYTAsUGksQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9''@;'; put 'put ''MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCxybj0wLHluPTAsRm49MCxscj0wLHFyPTAsRmk9MDtpZihQaT1vZSxvZT1vZSsxNnwwLGFbKExyPVBpKT4+Ml09MCxNPTEmcCxjcj0yJnAsaz00JmFbKENy''@;'; put 'put ''PWwrNTZ8MCk+PjJdLGEwPTB8UjAocD0xMisoa3I9KE5yPWY/MHxhW2wrNDA+PjJdOjApPDwyKSsodz0oYj0wfGFbbCs1Mj4+Ml0pPDwzKSsoKEE9dys4fDApKygwfHZyKGtyLGIpKTw8MSl8MCkpe2lmKHIyKDB8YTAsMCwwfHApLEE9MyYocD0obHI9KHA9KFI9KHA9KEQ9KHA9YTAra3J8MCkr''@;'; put 'put ''KDA9PSgwfChEPTMmcCkpPzA6NC1EfDApfDApK0F8MCkrKDA9PSgwfChSPTMmcCkpPzA6NC1SfDApfDApK0F8MCkrKDA9PSgwfChscj0zJnApKT8wOjQtbHJ8MCl8MCkrd3wwKSx3PSgwfGIpPjApe2ZvcihwPXArKDA9PSgwfEEpPzA6NC1BfDApfDAsQT0wO2FbUisoQTw8MykrND4+Ml09cCxh''@;'; put 'put ''W0QrKEE8PDMpKzQ+PjJdPXA9cCtrcnwwLCEoKDB8KEE9QSsxfDApKT49KDB8YikpOylwPXAra3J8MDtpZih3KXtwPTA7ZG97YVtscisocDw8Myk+PjJdPS0xLHA9cCsxfDB9d2hpbGUoKDB8cCk8KDB8YikpfX0oMHwocD0wfGY4KExyLGMsNCkpKTwxPygwfHApPDA/cD0xOihiPTEsRmk9MTEp''@;'; put 'put ''OihiPXAsRmk9MTEpO2U6ZG97aWYoMTE9PSgwfEZpKSl7Zm9yKEZuPWwrOHwwLHluPTAhPSgwfGspLGF0PTA9PSgwfE0pLEV0PSgwfE5yKT4wLFp0PWwrMTJ8MCx1dD0oMHxOcik8MSx3dD1sKzQ0fDAscm49bCszMnwwLE10PWwrMzZ8MCxrdD0wPT0oMHxOciksdz0wLEJlPWMrYnwwLExlPTAs''@;'; put 'put ''az0wLHA9LTEsQT1ELEdlPWEwLGplPUQsSGU9Ujs7KXtpZigoMHxwKTwwKXtNPTgrKGw9MHxhW0ZuPj4yXSl8MDt0OmRve2lmKDB8YVtNPj4yXSlmb3IoSz0wIT0oMHxMZSkscGU9OTU9PSgwfHcpLG1lPTA9PSgwfExlKSxPZT15biYxMD09KDB8dyksYmU9KDB8TGUpPDEmYXQ7Oyl7bjpmb3Io''@;'; put 'put ''O0c9bCsxMnwwLCEoKDB8YVtscisoYVtHPj4yXTw8Myk+PjJdKT49KDB8TGUpKTspe2lmKCEoYz0wfGFbKFI9bCsyMHwwKT4+Ml0pKXtGaT00NjticmVha31yOmRve2lmKDA9PSgxJmN8MCl8YmV8T2Upe2lmKDImY3wwJiYhKDA9PSgobHQ9MHxhW0xyPj4yXSl8Y3J8MCl8eW4mMTA9PSgwfGx0''@;'; put 'put ''KSkpYnJlYWs7ZG97aWYoMTYmY3wwKXtpZihwZXx8MHxDcyh3KSlicmVhayByO2lmKDk1PT0oMHwoYz0wfGFbTHI+PjJdKSkpYnJlYWs7aWYoISgwfENzKGMpKSlicmVhayByfX13aGlsZSgwKTtpZigzMiYoYz0wfGFbUj4+Ml0pKXtpZihwZSl7aWYoOTU9PSgwfChjPTB8YVtMcj4+Ml0pKSli''@;'; put 'put ''cmVha31lbHNlIGlmKChsdD0wPT0oMHxDcyh3KSkpfDk1PT0oMHwoYz0wfGFbTHI+PjJdKSkpYnJlYWs7aWYoMHxDcyhjKSlicmVhaztjPTB8YVtSPj4yXX1EPTB8YVtMcj4+Ml07ZG97aWYoMCE9KDB8RCkmSyYwIT0oNjQmY3wwKSl7aWYocGU/Yz0xOihjPTAhPSgwfENzKHcpKSxEPTB8YVtM''@;'; put 'put ''cj4+Ml0pLDk1PT0oMHxEKSl7aWYoYylicmVhayByO2JyZWFrfWlmKGNeMCE9KDB8Q3MoRCkpKWJyZWFrO2JyZWFrIHJ9fXdoaWxlKDApO2lmKCEoMTI4JmFbUj4+Ml0pKXtGaT00NjticmVhayBufWlmKG1lfDA9PSgwfChjPTB8YVtMcj4+Ml0pKSlicmVhaztpZihwZT9EPTE6KEQ9MCE9KDB8''@;'; put 'put ''Q3ModykpLGM9MHxhW0xyPj4yXSksOTU9PSgwfGMpKXtpZihEKXtGaT00NjticmVhayBufWJyZWFrfWlmKEReMCE9KDB8Q3MoYykpKWJyZWFrO0ZpPTQ2O2JyZWFrIG59fXdoaWxlKDApO2lmKCEoMHxhWyhNPWwrNDB8MCk+PjJdKSlicmVhayB0O2w9bCszMnwwfWlmKDQ2PT0oMHxGaSkpe2lm''@;'; put 'put ''KEZpPTAsYVtBPj4yXT1hW00+PjJdLEV0JiZyMigwfGFbQSs0Pj4yXSwtMSwwfGtyKSwwfChNPTB8YVtsKzE2Pj4yXSkmJigwfChxcj0wfGFbTT4+Ml0pKT4tMSl7RD1BKzR8MCxjPXFyO2RveygwfGMpPCgwfE5yKSYmKGFbKDB8YVtEPj4yXSkrKGM8PDIpPj4yXT1MZSksYz0wfGFbKE09TSs0''@;'; put 'put ''fDApPj4yXX13aGlsZSgoMHxjKT4tMSl9aWYoKE09KDB8YVtBPj4yXSkhPSgwfGFbWnQ+PjJdKSl8dXQpaz1NP2s6MSxwPU0/cDpMZSxNPUErNHwwO2Vsc2V7az0wfGFbKE09QSs0fDApPj4yXSxwPTA7ZG97YVtmKyhwPDwyKT4+Ml09YVtrKyhwPDwyKT4+Ml0scD1wKzF8MH13aGlsZSgoMHxw''@;'; put 'put ''KSE9KDB8TnIpKTtrPTEscD1MZX1hW2xyKygobHQ9MHxhW0c+PjJdKTw8Myk+PjJdPUxlLGFbbHIrKGx0PDwzKSs0Pj4yXT1NLEE9QSs4fDB9aWYoISgwfGFbKE09bCs0MHwwKT4+Ml0pKWJyZWFrO2w9bCszMnwwfX13aGlsZSgwKTtpZihhW0E+PjJdPTAsIShBPTB8YVtMcj4+Ml0pKWJyZWFr''@;'; put 'put ''O3c9QX1lbHNlIGlmKGt0fHwhKCgwfEEpIT0oMHxqZSkmMCE9KDB8KHc9MHxhW0xyPj4yXSkpKSlicmVhaztpZihsdD1MZStifDAsKDB8KEE9MHxmOChMcixCZSw0KSkpPDEpe2lmKCgwfEEpPDApe3A9MTticmVhayBlfWI9MX1lbHNlIGI9QTtpZihydD1CZStifDAsMCE9KDB8aykmMCE9KDB8''@;'; put 'put ''YVt3dD4+Ml0pKXtpZigwfGFbamU+PjJdKXtwZT0oMHwoSz0wfGFbKEc9MHxhW010Pj4yXSk+PjJdKSk+LTEsUj1qZSxBPUhlO2Rve0Q9Uis0fDA7dDpkb3tpZihwZSl7TT0wLGM9Sztkb3tpZihsPTB8YVtHKygoMXxNKTw8Mik+PjJdLCgwfGMpPj0oMHxOcil8fCgwfGFbKGs9MHxhW0Q+PjJd''@;'; put 'put ''KSsobDw8Mik+PjJdKT09KDB8YVtmKyhsPDwyKT4+Ml0pJiYoMHxhW2srKGM8PDIpPj4yXSk8KDB8YVtmKyhjPDwyKT4+Ml0pKWJyZWFrIHQ7Yz0wfGFbRysoKE09TSsyfDApPDwyKT4+Ml19d2hpbGUoKDB8Yyk+LTEpO009RCxGaT03NX1lbHNlIE09RCxrPTB8YVtEPj4yXSxGaT03NX13aGls''@;'; put 'put ''ZSgwKTs3NT09KDB8RmkpJiYoRmk9MCxhW0E+PjJdPWFbUj4+Ml0sZXQ9MHxhWyhCZT1BKzR8MCk+PjJdLGFbQmU+PjJdPWssYVtNPj4yXT1ldCxBPUErOHwwKSxSPVIrOHwwfXdoaWxlKDAhPSgwfGFbUj4+Ml0pKX1lbHNlIEE9SGU7YVtBPj4yXT0wLGV0PWplLGs9MH1lbHNlIGV0PUhlLEhl''@;'; put 'put ''PWplO2lmKE09MHxhW0hlPj4yXSlmb3IobWU9MCE9KDB8bHQpLGJlPTk1PT0oMHx3KSxPZT0wPT0oMHxsdCksQmU9eW4mMTA9PSgwfHcpLExlPSgwfGx0KTwxJmF0LHBlPUhlLGw9R2UsQT1ldDs7KXtpZigwfGFbKGM9TSs4fDApPj4yXSlmb3IoSz1wZSs0fDAsRz1sLFI9Yzs7KXt0OmRve2lm''@;'; put 'put ''KCgwfGFbTT4+Ml0pPj4+MDw9dz4+PjAmJigwfGFbTSs0Pj4yXSk+Pj4wPj13Pj4+MCl7bD0wfGFbKEQ9TSsyMHwwKT4+Ml07ZG97aWYoMHxsKXtpZighKDA9PSgxJmx8MCl8TGV8QmUpKXtsPUc7YnJlYWsgdH1pZigyJmx8MCYmISgwPT0oKEdlPTB8YVtMcj4+Ml0pfGNyfDApfHluJjEwPT0o''@;'; put 'put ''MHxHZSkpKXtsPUc7YnJlYWsgdH1kb3tpZigxNiZsfDApe2lmKGJlKXtsPUc7YnJlYWsgdH1pZigwfENzKHcpKXtsPUc7YnJlYWsgdH1pZig5NT09KDB8KGw9MHxhW0xyPj4yXSkpKWJyZWFrO2lmKCEoMHxDcyhsKSkpe2w9RzticmVhayB0fX19d2hpbGUoMCk7aWYoMzImKGw9MHxhW0Q+PjJd''@;'; put 'put ''KSl7aWYoYmUpe2lmKDk1PT0oMHwobD0wfGFbTHI+PjJdKSkpe2w9RzticmVhayB0fX1lbHNlIGlmKChHZT0wPT0oMHxDcyh3KSkpfDk1PT0oMHwobD0wfGFbTHI+PjJdKSkpe2w9RzticmVhayB0fWlmKDB8Q3MobCkpe2w9RzticmVhayB0fWw9MHxhW0Q+PjJdfWM9MHxhW0xyPj4yXTtkb3tp''@;'; put 'put ''ZigwIT0oMHxjKSZtZSYwIT0oNjQmbHwwKSl7aWYoYmU/bD0xOihsPTAhPSgwfENzKHcpKSxjPTB8YVtMcj4+Ml0pLDk1PT0oMHxjKSl7aWYobCl7bD1HO2JyZWFrIHR9YnJlYWt9aWYobF4wIT0oMHxDcyhjKSkpYnJlYWs7bD1HO2JyZWFrIHR9fXdoaWxlKDApO2Rve2lmKDEyOCZhW0Q+PjJd''@;'; put 'put ''fDApe2lmKE9lfDA9PSgwfChsPTB8YVtMcj4+Ml0pKSl7bD1HO2JyZWFrIHR9aWYoYmU/Yz0xOihjPTAhPSgwfENzKHcpKSxsPTB8YVtMcj4+Ml0pLDk1PT0oMHxsKSl7aWYoYylicmVhaztsPUc7YnJlYWsgdH1pZihjXjAhPSgwfENzKGwpKSl7bD1HO2JyZWFrIHR9YnJlYWt9fXdoaWxlKDAp''@;'; put 'put ''O2w9MHxhW0Q+PjJdO2Rve2lmKDQmbCl7aWYoMiZhW0NyPj4yXXwwKWJyZWFrO2lmKCEoMHxjOCh3LDB8YVtNKzI0Pj4yXSkpKXtsPUc7YnJlYWsgdH1sPTB8YVtEPj4yXX19d2hpbGUoMCk7ZG97aWYoNCZsfDApe2lmKCEoMiZhW0NyPj4yXSl8fDB8YzgoR2U9MHxoZyh3KSwwfGFbKGw9TSsy''@;'; put 'put ''NHwwKT4+Ml0pKWJyZWFrO2lmKCEoMHxjOChHZT0wfGZnKHcpLDB8YVtsPj4yXSkpKXtsPUc7YnJlYWsgdH19fXdoaWxlKDApO2lmKCEoOCZhW0Q+PjJdKSlicmVhaztpZigwfFEkKDB8YVtNKzI4Pj4yXSx3LDImYVtDcj4+Ml0pKXtsPUc7YnJlYWsgdH19fXdoaWxlKDApO2lmKEV0KXtjPTB8''@;'; put 'put ''YVtLPj4yXSxsPTA7ZG97YVtHKyhsPDwyKT4+Ml09YVtjKyhsPDwyKT4+Ml0sbD1sKzF8MH13aGlsZSgoMHxsKSE9KDB8TnIpKX1sPTB8YVtNKzE2Pj4yXTtkb3tpZigwfGwpe2lmKCgwfChjPTB8YVtsPj4yXSkpPD0tMSlicmVhaztkb3soMHxjKTwoMHxOcikmJihhW0crKGM8PDIpPj4yXT1s''@;'; put 'put ''dCksYz0wfGFbKGw9bCs0fDApPj4yXX13aGlsZSgoMHxjKT4tMSl9fXdoaWxlKDApO2lmKCgwfGFbKGM9bHIrKChsPTB8YVtNKzEyPj4yXSk8PDMpfDApPj4yXSk+PSgwfGx0KSl7aWYoISgwfEokKE5yLDB8YVtybj4+Ml0sRyxjPTB8YVsobD0wfGFbbHIrKGw8PDMpKzQ+PjJdKT4+Ml0pKSl7''@;'; put 'put ''bD1HO2JyZWFrfWlmKGFbbD4+Ml09RywoMHxhW1I+PjJdKSE9KDB8YVtadD4+Ml0pKXtsPWM7YnJlYWt9aWYoIUV0KXtrPTEsbD1jLHA9bHQ7YnJlYWt9Zm9yKHA9MDs7KWlmKGFbZisocDw8Mik+PjJdPWFbRysocDw8Mik+PjJdLCgwfChwPXArMXwwKSk9PSgwfE5yKSl7az0xLGw9YyxwPWx0''@;'; put 'put ''O2JyZWFrIHR9fWFbQT4+Ml09R2U9MHxhW1I+PjJdLEQ9MHxhWyhqZT1BKzR8MCk+PjJdLGFbamU+PjJdPUcsYVtjPj4yXT1sdCxhW2xyKyhsPDwzKSs0Pj4yXT1qZTtkb3tpZigoMHxhW1p0Pj4yXSk9PSgwfEdlKSl7aWYoLTE9PSgwfHApKXtpZighRXQpe3A9bHQsaz0xO2JyZWFrfXA9MH1l''@;'; put 'put ''bHNle2lmKCFFdHx8KDB8YVtHPj4yXSk+KDB8YVtmPj4yXSkpYnJlYWs7cD0wfWRve2FbZisocDw8Mik+PjJdPWFbRysocDw8Mik+PjJdLHA9cCsxfDB9d2hpbGUoKDB8cCk8KDB8TnIpKTtwPWx0LGs9MX19d2hpbGUoMCk7bD1ELEE9QSs4fDB9ZWxzZSBsPUd9d2hpbGUoMCk7aWYoISgwfGFb''@;'; put 'put ''KFI9TSs0MHwwKT4+Ml0pKWJyZWFrO009TSszMnwwLEc9bH1pZighKE09MHxhWyhwZT1wZSs4fDApPj4yXSkpe009bDticmVha319ZWxzZSBNPUdlLEE9ZXQ7YVtBPj4yXT0wLEJlPXJ0LExlPWx0LEdlPU0samU9ZXR9YVttPj4yXT1wLHA+Pj49MzF9fXdoaWxlKDApO0h0KGEwKX1lbHNlIHA9''@;'; put 'put ''MTI7cmV0dXJuIG9lPVBpLDB8cH0oYixjLEEsbSxNKSxsfHxVJCh3LHAsMHxhW2s+PjJdLGIsQSwwfGFbTT4+Ml0pLEEmJkh0KGYpKSxvZT1SLDB8bH1mdW5jdGlvbiBVJChsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHB8PTAsbXw9MDt2YXIgdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9''@;'; put 'put ''MDtpZigwPT0oOCYoZnw9MCl8MCkmKDB8KEF8PTApKT4tMSYmKFI9MHxhW3ArMTY+PjJdLEQ9MCE9KDB8bCkmMCE9KDB8KEc9MHxhW3ArMjg+PjJdKSkpKXtNPTB8YVtwKzQ4Pj4yXSxrPTA7ZG97YVsodz1jKyhrPDwzKXwwKT4+Ml09Yj0oMHwoZj0wfGFbUisoMTIqa3wwKT4+Ml0pKT09KDB8''@;'; put 'put ''TSk/QTowfGFbbSsoZjw8Mik+PjJdLGFbKHA9Yysoazw8MykrNHwwKT4+Ml09Zj0oMHwoZj0wfGFbUisoMTIqa3wwKSs0Pj4yXSkpPT0oMHxNKT9BOjB8YVttKyhmPDwyKT4+Ml0sLTE9PSgwfGYpfC0xPT0oMHxiKSYmKGFbcD4+Ml09LTEsYVt3Pj4yXT0tMSksaz1rKzF8MH13aGlsZShrPj4+''@;'; put 'put ''MDxsPj4+MCZrPj4+MDxHPj4+MCk7aWYoRCl7Zj0wO2Rve2lmKGI9YysoZjw8MykrNHwwLDB8KGs9MHxhW1IrKDEyKmZ8MCkrOD4+Ml0pJiYoMHwoSz0wfGFbaz4+Ml0pKT4tMSl7dz0wLG09SyxwPTB8YVsoTT1jKyhmPDwzKXwwKT4+Ml07ZG97KDB8cCk+PSgwfGFbYysobTw8Myk+PjJdKSYm''@;'; put 'put ''KDB8YVtiPj4yXSk8PSgwfGFbYysobTw8MykrND4+Ml0pfHwoYVtiPj4yXT0tMSxhW00+PjJdPS0xLHA9LTEpLG09MHxhW2srKCh3PXcrMXwwKTw8Mik+PjJdfXdoaWxlKCgwfG0pPi0xKX1mPWYrMXwwfXdoaWxlKGY+Pj4wPGw+Pj4wJmY+Pj4wPEc+Pj4wKX1lbHNlIGY9MH1lbHNlIGY9MDtm''@;'; put 'put ''Pj4+MDxsPj4+MCYmcjIoYysoZjw8Myl8MCwtMSxsLWY8PDN8MCl9ZnVuY3Rpb24gUSQobCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wLG09MDtwPTB8YVsobHw9MCk+PjJdO2U6ZG97aWYocClmb3IobT0wPT0oMHxmKSxmPXA7Oyl7aWYobSl7aWYoMHxjOChjLGYpKXtmPTE7YnJlYWsgZX19ZWxz''@;'; put 'put ''ZXtpZigwfGM4KHA9MHxmZyhjKSwwfGFbbD4+Ml0pKXtmPTE7YnJlYWsgZX1pZigwfGM4KHA9MHxoZyhjKSwwfGFbbD4+Ml0pKXtmPTE7YnJlYWsgZX19aWYoIShmPTB8YVsobD1sKzR8MCk+PjJdKSl7Zj0wO2JyZWFrfX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIEok''@;'; put 'put ''KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wO2U6ZG97aWYoKDB8bCk+MClmb3IobT0wOzspe2lmKHc9MHxhW2YrKG08PDIpPj4yXSxBPTB8YVtwKyhtPDwyKT4+Ml0sMHxhW2MrKG08PDIpPj4yXSl7aWYoKDB8dyk+KDB8QSkpe209MTticmVhayBlfWlmKCgw''@;'; put 'put ''fHcpPCgwfEEpKXttPTA7YnJlYWsgZX19ZWxzZXtpZigoMHx3KTwoMHxBKSl7bT0xO2JyZWFrIGV9aWYoKDB8dyk+KDB8QSkpe209MDticmVhayBlfX1pZigoMHwobT1tKzF8MCkpPj0oMHxsKSl7bT0wO2JyZWFrfX1lbHNlIG09MH13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIFgkKGws''@;'; put 'put ''YyxmLHApe2x8PTAscHw9MDt2YXIgayxELG09MCxBPTAsdz0wO2s9MHx2cihmfD0wLGN8PTApLGY9MD09KDB8Yyk/MDpmLHVlWyhtPXArNzR8MCk+PjBdPTI1NSsoQT0wfHVlW20+PjBdKXxBLHc9KEQ9KDB8YVtwKzg+PjJdKS0oQT0wfGFbKG09cCs0fDApPj4yXSl8MCk+Pj4wPGs+Pj4wP0Q6''@;'; put 'put ''aywoMHxEKT4wPyhEbygwfGwsMHxBLDB8dyksYVttPj4yXT1BK3csbT1rLXd8MCxsPWwrd3wwKTptPWs7ZTpkb3tpZihtKXtmb3Iodz1wKzMyfDA7ISgwfFp1ZShwKXx8KEE9MHxtaVs2MyZhW3c+PjJdXShwLGwsbSksKEErMXwwKT4+PjA8MikpOyl7aWYoIShtPW0tQXwwKSl7MTM7YnJlYWsg''@;'; put 'put ''ZX1sPWwrQXwwfWY9KChrLW18MCk+Pj4wKS8oYz4+PjApfDB9ZWxzZSAxM313aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uICQkKGwpe3JldHVybiAwfGFbKGx8PTApKzYwPj4yXX1mdW5jdGlvbiBYY2UoKXt2YXIgYyxtLEEsdyxrLGw9MCxmPTAscD0wLGI9MDtrPW9lLG9lPW9lKzQ4fDAs''@;'; put 'put ''dz1rKzI0fDAsQT1rKzE2fDAsbT1rLGY9MTUzNjg2LHA9MjArKGw9Yz1rKzI4fDApfDA7ZG97dWVbbD4+MF09MHx1ZVtmPj4wXSxsPWwrMXwwLGY9ZisxfDB9d2hpbGUoKDB8bCk8KDB8cCkpO2ZvcihmPWMrMTN8MCxsPTA7Oyl7aWYoc2NlKGYpLGFbbT4+Ml09YyxhW20rND4+Ml09MzI5NjIs''@;'; put 'put ''YVttKzg+PjJdPTM4NCwoMHwocD0wfElmKDB8TDgoNSwwfG0pKSkpPi0xKXtiPTQ7YnJlYWt9aWYoISgoMHxsKTw5OSkpe2w9MDticmVha31sPWwrMXwwfXJldHVybiA0PT0oMHxiKSYmKGFbQT4+Ml09YyxfOSgxMCwwfEEpLChsPTB8TyQocCwxNTM3MDYpKXx8KGFbdz4+Ml09cCxoZig2LDB8''@;'; put 'put ''dyksbD0wKSksb2U9aywwfGx9ZnVuY3Rpb24gdloobCl7dmFyIGM9MCxmPTAscD0wO2x8PTAscD0zO2Rve2lmKDM9PSgwfHApKXtpZigoZj0wfGFbKGM9bCs0fDApPj4yXSk+Pj4wPCgwfGFbbCs4Pj4yXSk+Pj4wKXthW2M+PjJdPWYrMSxjPTB8YnRbZj4+MF07YnJlYWt9Yz0wfEpqKGwpO2Jy''@;'; put 'put ''ZWFrfX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIEFaKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLGs9MDtjfD0wLGs9Mztkb3tpZigzPT0oMHxrKSl7aWYocD0yNTUmbCwoMHwoZj0yNTUmbCkpIT0oMHx1ZVtjKzc1Pj4wXSkmJihBPTB8YVsobT1jKzIwfDApPj4yXSk+Pj4w''@;'; put 'put ''PCgwfGFbYysxNj4+Ml0pPj4+MCl7YVttPj4yXT1BKzEsdWVbQT4+MF09cDticmVha31mPTB8dVooYyxsKX19d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBLY2UobCl7cmV0dXJuIDB8ZnVuY3Rpb24gUWNlKGwpe3JldHVybiAwfGZ1bmN0aW9uIEskKGwpe3ZhciBjPTA7cmV0dXJuIGM9''@;'; put 'put ''MTI4JmFbKGx8PTApPj4yXSYmKDB8YVtsKzIwPj4yXSk+Pj4wPigwfGFbbCsyOD4+Ml0pPj4+MD8yOjEsKDB8KGM9MHxtaVs2MyZhW2wrNDA+PjJdXShsLDAsYykpKT49MCYmKGM9Yy0oMHxhW2wrOD4+Ml0pKygwfGFbbCs0Pj4yXSkrKDB8YVtsKzIwPj4yXSktKDB8YVtsKzI4Pj4yXSl8MCks''@;'; put 'put ''MHxjfShsfD0wKX0obHw9MCl9ZnVuY3Rpb24gaHcobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4gY3w9MCxwfD0wLGY9MHxmdW5jdGlvbiBxY2UobCxjKXt2YXIgZixwLEEsbT0wO3JldHVybiBsPSgoZj0wfHZyKG09NjU1MzUmKGN8PTApLEE9NjU1MzUmKGx8PTApKSk+Pj4xNikrKDB8dnIobSxw''@;'; put 'put ''PWw+Pj4xNikpfDAsYz0wfHZyKG09Yz4+PjE2LEEpLE9uPShsPj4+MTYpKygwfHZyKG0scCkpKygoKDY1NTM1JmwpK2N8MCk+Pj4xNil8MCxsK2M8PDE2fDY1NTM1JmZ8MH0obT1sfD0wLEE9Znw9MCksbD1PbixPbj0oMHx2cihjLEEpKSsoMHx2cihwLG0pKStsfDAmbCwwfGZ9ZnVuY3Rpb24g''@;'; put 'put ''SGwobCxjLGYscCl7cmV0dXJuIE9uPShjfD0wKSsocHw9MCkrKChmPShsfD0wKSsoZnw9MCk+Pj4wKT4+PjA8bD4+PjB8MCk+Pj4wLDB8Zn1mdW5jdGlvbiBncChsLGMsZixwKXtyZXR1cm4gT249cD0oY3w9MCktKHB8PTApLSgoZnw9MCk+Pj4wPihsfD0wKT4+PjB8MCk+Pj4wLDB8bC1mPj4+''@;'; put 'put ''MH1mdW5jdGlvbiBxJChsKXt2YXIgYz0wO3JldHVybigwfChjPTB8dWVbSzIrKDI1NSYobHw9MCkpPj4wXSkpPDg/MHxjOigwfChjPTB8dWVbSzIrKGw+PjgmMjU1KT4+MF0pKTw4P2MrOHwwOigwfChjPTB8dWVbSzIrKGw+PjE2JjI1NSk+PjBdKSk8OD9jKzE2fDA6MjQrKDB8dWVbSzIrKGw+''@;'; put 'put ''Pj4yNCk+PjBdKXwwfWZ1bmN0aW9uIGVxKGwsYyxmLHAsbSl7bXw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MDtpZihEPWx8PTAsdz1mfD0wLGI9Rz1wfD0wLCEoTT1rPWN8PTApKXJldHVybiBBPTAhPSgwfG0pLGI/QT8oYVttPj4yXT0wfGwsYVttKzQ+''@;'; put 'put ''PjJdPTAmYyxPbj1HPTAsMHwobT0wKSk6KE9uPUc9MCwwfChtPTApKTooQSYmKGFbbT4+Ml09KEQ+Pj4wKSUodz4+PjApLGFbbSs0Pj4yXT0wKSxPbj1HPTAsMHwobT0oRD4+PjApLyh3Pj4+MCk+Pj4wKSk7QT0wPT0oMHxiKTtkb3tpZih3KXtpZighQSl7aWYoKEE9KDB8cGQoMHxiKSktKDB8''@;'; put 'put ''cGQoMHxNKSl8MCk+Pj4wPD0zMSl7dz1SPUErMXwwLGw9RD4+PihSPj4+MCkmKGM9QS0zMT4+MzEpfE08PChiPTMxLUF8MCksYyY9TT4+PihSPj4+MCksQT0wLGI9RDw8YjticmVha31yZXR1cm4gbT8oYVttPj4yXT0wfGwsYVttKzQ+PjJdPWt8MCZjLE9uPUc9MCwwfChtPTApKTooT249Rz0w''@;'; put 'put ''LDB8KG09MCkpfWlmKChBPXctMXwwKSZ3fDApe3c9Yj0zMysoMHxwZCgwfHcpKS0oMHxwZCgwfE0pKXwwLGw9KFI9MzItYnwwKS0xPj4zMSZNPj4+KChLPWItMzJ8MCk+Pj4wKXwoTTw8UnxEPj4+KGI+Pj4wKSkmKGM9Sz4+MzEpLGMmPU0+Pj4oYj4+PjApLEE9RDw8KHBlPTY0LWJ8MCkmKGs9''@;'; put 'put ''Uj4+MzEpLGI9KE08PHBlfEQ+Pj4oSz4+PjApKSZrfEQ8PFImYi0zMz4+MzE7YnJlYWt9cmV0dXJuIDB8bSYmKGFbbT4+Ml09QSZELGFbbSs0Pj4yXT0wKSwxPT0oMHx3KT8oT249Sz1rfDAmYywwfChwZT0wfGwpKToocGU9MHxxJCgwfHcpLE9uPUs9TT4+PihwZT4+PjApfDAsMHwocGU9TTw8''@;'; put 'put ''MzItcGV8RD4+PihwZT4+PjApfDApKX1pZihBKXJldHVybiAwfG0mJihhW20+PjJdPShNPj4+MCklKHc+Pj4wKSxhW20rND4+Ml09MCksT249Sz0wLDB8KE0+Pj4wKS8odz4+PjApPj4+MDtpZighRClyZXR1cm4gMHxtJiYoYVttPj4yXT0wLGFbbSs0Pj4yXT0oTT4+PjApJShiPj4+MCkpLE9u''@;'; put 'put ''PUs9MCwwfChNPj4+MCkvKGI+Pj4wKT4+PjA7aWYoISgoQT1iLTF8MCkmYikpcmV0dXJuIDB8bSYmKGFbbT4+Ml09MHxsLGFbbSs0Pj4yXT1BJk18MCZjKSxLPTAscGU9TT4+PigoMHxxJCgwfGIpKT4+PjApLE9uPUssMHxwZTtpZigoQT0oMHxwZCgwfGIpKS0oMHxwZCgwfE0pKXwwKT4+PjA8''@;'; put 'put ''PTMwKXt3PWM9QSsxfDAsbD1NPDwoYj0zMS1BfDApfEQ+Pj4oYz4+PjApLGM9TT4+PihjPj4+MCksQT0wLGI9RDw8YjticmVha31yZXR1cm4gbT8oYVttPj4yXT0wfGwsYVttKzQ+PjJdPWt8MCZjLE9uPUs9MCwwfChwZT0wKSk6KE9uPUs9MCwwfChwZT0wKSl9d2hpbGUoMCk7aWYodyl7TT0w''@;'; put 'put ''fEhsKDB8KFI9MHxmKSwwfChEPUd8MCZwKSwtMSwtMSksZj1PbixrPWIsYj0wO2Rve3A9ayxrPUE+Pj4zMXxrPDwxLEE9YnxBPDwxLGdwKDB8TSwwfGYsMHwocD1sPDwxfHA+Pj4zMXwwKSwwfChHPWw+Pj4zMXxjPDwxfDApKSxiPTEmKEs9KHBlPU9uKT4+MzF8KCgwfHBlKTwwPy0xOjApPDwx''@;'; put 'put ''KSxsPTB8Z3AoMHxwLDB8RyxLJlJ8MCwoKCgwfHBlKTwwPy0xOjApPj4zMXwoKDB8cGUpPDA/LTE6MCk8PDEpJkR8MCksYz1Pbix3PXctMXwwfXdoaWxlKDAhPSgwfHcpKTtNPWssaz0wfWVsc2UgTT1iLGs9MCxiPTA7cmV0dXJuIHc9MCwwfG0mJihhW20+PjJdPWwsYVttKzQ+PjJdPWMpLE9u''@;'; put 'put ''PUs9KDB8QSk+Pj4zMXwoTXx3KTw8MXwwJih3PDwxfEE+Pj4zMSl8aywtMiYoQTw8MXwwKXxifDB9ZnVuY3Rpb24gZHcobCxjLGYscCl7cmV0dXJuIDB8ZXEobHw9MCxjfD0wLGZ8PTAscHw9MCwwKX1mdW5jdGlvbiB2UyhsLGMsZixwKXt2YXIgbSxBO3JldHVybiBBPW9lLG9lPW9lKzE2fDAs''@;'; put 'put ''ZXEobHw9MCxjfD0wLGZ8PTAscHw9MCxtPTB8QSksb2U9QSxPbj0wfGFbbSs0Pj4yXSwwfGFbbT4+Ml19ZnVuY3Rpb24gR0wobCxjLGYpe3JldHVybiBjfD0wLCgwfChmfD0wKSk8MzI/KE9uPWM+PmYsKGx8PTApPj4+ZnwoYyYoMTw8ZiktMSk8PDMyLWYpOihPbj0oMHxjKTwwPy0xOjAsYz4+''@;'; put 'put ''Zi0zMnwwKX1mdW5jdGlvbiBadShsLGMsZil7cmV0dXJuIGN8PTAsKDB8KGZ8PTApKTwzMj8oT249Yz4+PmYsKGx8PTApPj4+ZnwoYyYoMTw8ZiktMSk8PDMyLWYpOihPbj0wLGM+Pj5mLTMyfDApfWZ1bmN0aW9uIGNzKGwsYyxmKXtyZXR1cm4gbHw9MCwoMHwoZnw9MCkpPDMyPyhPbj0oY3w9''@;'; put 'put ''MCk8PGZ8KGwmKDE8PGYpLTE8PDMyLWYpPj4+MzItZixsPDxmKTooT249bDw8Zi0zMiwwKX1mdW5jdGlvbiB0cShsKXtyZXR1cm4oMjU1JihsfD0wKSk8PDh8bD4+OCYyNTV8MH1mdW5jdGlvbiBucShsKXtyZXR1cm4oMjU1JihsfD0wKSk8PDI0fChsPj44JjI1NSk8PDE2fChsPj4xNiYyNTUp''@;'; put 'put ''PDw4fGw+Pj4yNHwwfWZ1bmN0aW9uIG80KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtPTA7Zm9yKGFbKGx8PTApPj4yXT1SMj1SMisxfDA7KDB8bSk8KDB8cCk7KXtpZighKDB8YVtmKyhtPDwzKT4+Ml0pKXJldHVybiBhW2YrKG08PDMpPj4yXT1SMixhW2YrKDQrKG08PDMpKT4+Ml09''@;'; put 'put ''YyxhW2YrKDgrKG08PDMpKT4+Ml09MCxPbj1wLDB8ZjttPW0rMXwwfXJldHVybiBmPTB8bzQoMHxsLDB8YywwfChmPTB8WmEoMHxmLDgqKDErKHA9MipwfDApfDApfDApKSwwfHApLE9uPXAsMHxmfWZ1bmN0aW9uIFRpKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDtmb3IodmFyIHA9MCxtPTA7KDB8''@;'; put 'put ''bSk8KDB8ZikmJihwPTB8YVtjKyhtPDwzKT4+Ml0pOyl7aWYoKDB8cCk9PSgwfGwpKXJldHVybiAwfGFbYysoNCsobTw8MykpPj4yXTttPW0rMXwwfXJldHVybiAwfWZ1bmN0aW9uIERvKGwsYyxmKXtsfD0wLGN8PTA7dmFyIG0sQSxwPTA7aWYoKDB8KGZ8PTApKT49ODE5MilyZXR1cm4gMHx0''@;'; put 'put ''MigwfGwsMHxjLDB8Zik7aWYoQT0wfGwsbT1sK2Z8MCwoMyZsKT09KDMmYykpe2Zvcig7MyZsOyl7aWYoIWYpcmV0dXJuIDB8QTt1ZVtsPj4wXT0wfHVlW2M+PjBdLGw9bCsxfDAsYz1jKzF8MCxmPWYtMXwwfWZvcihwPShmPS00Jm18MCktNjR8MDsoMHxsKTw9KDB8cCk7KWFbbD4+Ml09YVtj''@;'; put 'put ''Pj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdLGFbbCsxNj4+Ml09YVtjKzE2Pj4yXSxhW2wrMjA+PjJdPWFbYysyMD4+Ml0sYVtsKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbbCsyOD4+Ml09YVtjKzI4Pj4yXSxhW2wrMzI+PjJd''@;'; put 'put ''PWFbYyszMj4+Ml0sYVtsKzM2Pj4yXT1hW2MrMzY+PjJdLGFbbCs0MD4+Ml09YVtjKzQwPj4yXSxhW2wrNDQ+PjJdPWFbYys0ND4+Ml0sYVtsKzQ4Pj4yXT1hW2MrNDg+PjJdLGFbbCs1Mj4+Ml09YVtjKzUyPj4yXSxhW2wrNTY+PjJdPWFbYys1Nj4+Ml0sYVtsKzYwPj4yXT1hW2MrNjA+PjJd''@;'; put 'put ''LGw9bCs2NHwwLGM9Yys2NHwwO2Zvcig7KDB8bCk8KDB8Zik7KWFbbD4+Ml09YVtjPj4yXSxsPWwrNHwwLGM9Yys0fDB9ZWxzZSBmb3IoZj1tLTR8MDsoMHxsKTwoMHxmKTspdWVbbD4+MF09MHx1ZVtjPj4wXSx1ZVtsKzE+PjBdPTB8dWVbYysxPj4wXSx1ZVtsKzI+PjBdPTB8dWVbYysyPj4w''@;'; put 'put ''XSx1ZVtsKzM+PjBdPTB8dWVbYyszPj4wXSxsPWwrNHwwLGM9Yys0fDA7Zm9yKDsoMHxsKTwoMHxtKTspdWVbbD4+MF09MHx1ZVtjPj4wXSxsPWwrMXwwLGM9YysxfDA7cmV0dXJuIDB8QX1mdW5jdGlvbiBtcChsLGMsZil7dmFyIHA9MDtpZigoMHwoY3w9MCkpPCgwfChsfD0wKSkmKDB8bCk8''@;'; put 'put ''KGMrKGZ8PTApfDApKXtmb3IocD1sLGM9YytmfDAsbD1sK2Z8MDsoMHxmKT4wOylmPWYtMXwwLHVlWyhsPWwtMXwwKT4+MF09MHx1ZVsoYz1jLTF8MCk+PjBdO2w9cH1lbHNlIERvKGwsYyxmKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHIyKGwsYyxmKXtjfD0wO3ZhciBBLHA9MCxtPTAsdz0wO2lm''@;'; put 'put ''KEE9KGx8PTApKyhmfD0wKXwwLGMmPTI1NSwoMHxmKT49Njcpe2Zvcig7MyZsOyl1ZVtsPj4wXT1jLGw9bCsxfDA7Zm9yKG09KHA9LTQmQXwwKS02NHwwLHc9Y3xjPDw4fGM8PDE2fGM8PDI0OygwfGwpPD0oMHxtKTspYVtsPj4yXT13LGFbbCs0Pj4yXT13LGFbbCs4Pj4yXT13LGFbbCsxMj4+''@;'; put 'put ''Ml09dyxhW2wrMTY+PjJdPXcsYVtsKzIwPj4yXT13LGFbbCsyND4+Ml09dyxhW2wrMjg+PjJdPXcsYVtsKzMyPj4yXT13LGFbbCszNj4+Ml09dyxhW2wrNDA+PjJdPXcsYVtsKzQ0Pj4yXT13LGFbbCs0OD4+Ml09dyxhW2wrNTI+PjJdPXcsYVtsKzU2Pj4yXT13LGFbbCs2MD4+Ml09dyxsPWwr''@;'; put 'put ''NjR8MDtmb3IoOygwfGwpPCgwfHApOylhW2w+PjJdPXcsbD1sKzR8MH1mb3IoOygwfGwpPCgwfEEpOyl1ZVtsPj4wXT1jLGw9bCsxfDA7cmV0dXJuIEEtZnwwfWZ1bmN0aW9uIGdnKGwpe3ZhciBjLGY7cmV0dXJuKDB8KGY9MTUrKGx8PTApJi0xNnwwKSk+MCYoMHwobD0oYz0wfGFbd28+PjJd''@;'; put 'put ''KStmfDApKTwoMHxjKXwoMHxsKTwwPyhOYygpLFM0KDEyKSwtMSk6KGFbd28+PjJdPWwsKDB8bCk+KDB8WnAoKSkmJjA9PSgwfGdkKCkpPyhhW3dvPj4yXT1jLFM0KDEyKSwtMSk6MHxjKX1mdW5jdGlvbiBXTChsLGMsZil7cmV0dXJuIGw9K2wsYz0rYyxmPStmLHAyKDEpLDB9ZnVuY3Rpb24g''@;'; put 'put ''aTIobCl7cmV0dXJuIHAyKDQpLDB9ZnVuY3Rpb24gT2MobCxjKXtyZXR1cm4gcDIoNSksMH1mdW5jdGlvbiBycShsLGMsZixwKXtyZXR1cm4gZj0rZixwPStwLHAyKDYpLDB9ZnVuY3Rpb24gZzEobCxjLGYpe3JldHVybiBwMig3KSwwfWZ1bmN0aW9uIGNhKGwsYyxmLHApe3JldHVybiBwMig4''@;'; put 'put ''KSwwfWZ1bmN0aW9uIFVvKGwsYyxmLHAsbSl7cmV0dXJuIHAyKDkpLDB9ZnVuY3Rpb24gaXEobCxjLGYscCxtLEEsdyxiLGssTSl7cmV0dXJuIHAyKDExKSwwfWZ1bmN0aW9uIG1nKCl7cDIoMTIpfWZ1bmN0aW9uIHZwKGwpe3AyKDEzKX1mdW5jdGlvbiBEcyhsLGMpe3AyKDE0KX1mdW5jdGlv''@;'; put 'put ''biBkYShsLGMsZil7cDIoMTUpfWZ1bmN0aW9uIHZnKGwsYyxmLHAsbSxBKXtwPStwLG09K20scDIoMTYpfWZ1bmN0aW9uIEFnKGwsYyxmLHAsbSl7cDIoMTgpfWZ1bmN0aW9uIHB3KGwsYyxmLHAsbSxBKXtwMigxOSl9dmFyIGtzPVtmdW5jdGlvbiBiZmUoKXtyZXR1cm4gcDIoMCksMH0sZnVu''@;'; put 'put ''Y3Rpb24gU0QoKXt2YXIgbCxjO3JldHVybiBjPW9lLG9lPW9lKzE2fDAsQm4oMHwobD1jKSksb2U9YywuMDE2NjY2NjY2NjY2NjY2NjY2KisoKDB8YVtsKzQ+PjJdKSsoMHxhW2w+PjJdKS0oMHxhWzQ3MzExXSktKDB8YVs0NzMxMl0pfDApfV0sTWZlPVtXTCxmdW5jdGlvbiBrb2UobCxjLGYp''@;'; put 'put ''e3JldHVybiBsPStsLGM9K2MsLjUqK2Z9LGZ1bmN0aW9uIGFOKGwsYyxmKXtyZXR1cm4uNSooZj0rZikqKDEtKGw9K2wpLytjKX0sZnVuY3Rpb24gU29lKGwsYyxmKXtyZXR1cm4uNSooZj0rZikqKChsPStsKS8rYyl9LGZ1bmN0aW9uIE1vZShsLGMsZil7cmV0dXJuKygoYz0obD0rbCkvKGM9''@;'; put 'put ''K2MpKTw9LjU/YzoxLWMpKitmfSxXTCxXTCxXTF0sWnM9W2Z1bmN0aW9uIF9mZShsKXtyZXR1cm4gcDIoMiksMH0sJFFdLHlnPVtmdW5jdGlvbiBDZmUoKXtyZXR1cm4gcDIoMyksMH0sZnVuY3Rpb24gSDllKCl7dmFyIGw9MDtyZXR1cm4obD0wfGFbNDY4NDddKT4+PjA8KDB8YVs0Njg0OF0p''@;'; put 'put ''Pj4+MD8oYVs0Njg0N109bCs0LGw9MHxhW2w+PjJdKTpsPTAsMHxsfSxmdW5jdGlvbiBYb2UoKXt2YXIgYixrLE0sbD0wLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihtPTB8YVs0NzI1NV0saz0wfGFbNDcyNTZdLE09MHxhWzQ3MjExXSxjPTAsbD0wLEE9Yj0wfGFbNDcyNjFdOzspe2lm''@;'; put 'put ''KCgwfEEpPj0oMHxtKSl7dz04O2JyZWFrfWlmKCgwfChmPTB8YVsxNjArKDB8YVsxNisocD0wfGFbaysoQTw8Mik+PjJdKT4+Ml0pPj4yXSkpPDAmJihsPWw/KDB8YVsxNjArKDB8YVtsKzE2Pj4yXSk+PjJdKT4oMHxmKT9wOmw6cCwoMHwoYz1jKzF8MCkpPj0oMHxNKSkpYnJlYWs7YVs0NzI2''@;'; put 'put ''MV09cD1BKzF8MCxBPXB9aWYoOD09KDB8dykmJigwfGIpPjApe2ZvcihtPTA7ISgoMHxtKT49KDB8Yil8fChmPTB8YVtrKyhtPDwyKT4+Ml0scD0wfGFbMTYwKygwfGFbZisxNj4+Ml0pPj4yXSwoMHxwKTwwJiYobD1sPygwfGFbMTYwKygwfGFbbCsxNj4+Ml0pPj4yXSk+KDB8cCk/ZjpsOmYs''@;'; put 'put ''Yz1jKzF8MCwoMHxjKT49KDB8TSkpKSk7KW09bSsxfDA7YVs0NzI2MV09bX1yZXR1cm4gMHxsfSxSeV0scGE9W2kyLGZ1bmN0aW9uIGdIKGwpe2x8PTA7Zm9yKHZhciBmLHAsYz0wO2M9MHxhWzExNisoMHxhW2wrMTY+PjJdKT4+Ml07KWw9YztyZXR1cm4gMHwoKDB8KHA9MHxhWzIzMisoZj0w''@;'; put 'put ''fGFbMTYrKDB8YVsoMj09KDB8KGM9MyZhW2w+PjJdKSk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk8PSgwfChjPTB8YVsyMzIrKGw9MHxhWzE2KygwfGFbKDM9PSgwfGMpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk/KDB8cCk8KDB8Yyk/MTooMHxhW2YrMjM2Pj4yXSk8KDB8''@;'; put 'put ''YVtsKzIzNj4+Ml0pJjE6MCl9LHJwLGZ1bmN0aW9uIF9KKGwpe3JldHVybiAwfSxmdW5jdGlvbiBvc2UobCl7cmV0dXJuIDB9LGZ1bmN0aW9uIFgobCl7cmV0dXJuIDB8RkwobHw9MCl9LGZ1bmN0aW9uIEZlKGwpe3JldHVybiAwfSxmdW5jdGlvbiBsbShsKXtyZXR1cm4gMH0sZnVuY3Rpb24g''@;'; put 'put ''JE0obCl7cmV0dXJuIDB9LGZ1bmN0aW9uIFY4KGwpe3JldHVybiAxfSxmdW5jdGlvbiBfMyhsKXt2YXIgYztyZXR1cm4gdWVbNTM2KyhsfD0wKT4+MF09MCxfWyhjPWwrMzM2fDApPj4zXT0rX1tjPj4zXSsxMC8rX1tsKzM1Mj4+M10sdWVbbCs1Mzc+PjBdPTEsMH0sZnVuY3Rpb24gQzMobCl7''@;'; put 'put ''dmFyIGM7cmV0dXJuIHVlWzUzNisobHw9MCk+PjBdPTAsX1soYz1sKzMzNnwwKT4+M109K19bYz4+M10tMTAvK19bbCszNTI+PjNdLHVlW2wrNTM3Pj4wXT0xLDB9LGZ1bmN0aW9uIHBtKGwpe3ZhciBjO3JldHVybiB1ZVs1MzYrKGx8PTApPj4wXT0wLF9bKGM9bCszNDR8MCk+PjNdPStfW2M+''@;'; put 'put ''PjNdLTEwLytfW2wrMzUyPj4zXSx1ZVtsKzUzNz4+MF09MSwwfSxmdW5jdGlvbiB2RShsKXt2YXIgYztyZXR1cm4gdWVbNTM2KyhsfD0wKT4+MF09MCxfWyhjPWwrMzQ0fDApPj4zXT0rX1tjPj4zXSsxMC8rX1tsKzM1Mj4+M10sdWVbbCs1Mzc+PjBdPTEsMH0sZnVuY3Rpb24gQUUobCl7dmFy''@;'; put 'put ''IGM7cmV0dXJuIHVlWzUzNisobHw9MCk+PjBdPTAsX1soYz1sKzM1MnwwKT4+M109MS4xKitfW2M+PjNdLHVlW2wrNTM3Pj4wXT0xLDB9LGZ1bmN0aW9uIHlFKGwpe3ZhciBjO3JldHVybiB1ZVs1MzYrKGx8PTApPj4wXT0wLF9bKGM9bCszNTJ8MCk+PjNdPS45MDkwOTA5MDkwOTA5MDkxKitf''@;'; put 'put ''W2M+PjNdLHVlW2wrNTM3Pj4wXT0xLDB9LGZ1bmN0aW9uIHdHKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO3JldHVybiB1ZVsoZj01MzYrKGx8PTApfDApPj4wXT0xJihjPTA9PSgwfHVlW2Y+PjBdKSksYyYmKF9bbCszNTI+PjNdPSgocD0oQT0rKChjPTB8YVtsKzQ0OD4+Ml0pPj4+MCkp''@;'; put 'put ''LysoMHxjKTwobT0rKChmPTB8YVtsKzQ1Mj4+Ml0pPj4+MCkpLysoMHxmKSk/QTptKS8rKDB8KHA/YzpmKSksYVsoZj1sKzMzNnwwKT4+Ml09MCxhW2YrND4+Ml09MCxhW2YrOD4+Ml09MCxhW2YrMTI+PjJdPTAsdWVbbCs1Mzc+PjBdPTEpLDB9LGZ1bmN0aW9uIFR1ZShsKXt2YXIgYyxmO3Jl''@;'; put 'put ''dHVybiBjPW9lLG9lPW9lKzE2fDAsYVsoZj1jKT4+Ml09MHxjJCgwfGFbNjArKGx8PTApPj4yXSksbD0wfElmKDB8aGYoNiwwfGYpKSxvZT1jLDB8bH0sZnVuY3Rpb24gVjYobCl7cmV0dXJuIGFbNDY2NTRdPWx8PTAsMH0sRlQsRVUsbk4sdlYsUW4sTm8sTHQsUTEsZnVuY3Rpb24gSm9lKGwp''@;'; put 'put ''e3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihhWzQ3MjU0XT1sfD0wLGFbNDcyNjFdPTAsYVs0NzI1Ml09MCxhWzQ3MjUxXT0wLGw9MTkyKygwfGFbKEE9bCsxNnwwKT4+Ml0pfDAsbT0wLGY9MDtsPTB8YVtsPj4yXTspe2Zvcih1ZVsxNTcrKHA9MHxhW2wrMTY+PjJd''@;'; put 'put ''KT4+MF09MCxhWzQ3MjUxXT1tPW0rMXwwLGM9MHxhW3ArMTgwPj4yXSxsPTA7MHxhW2MrKGw8PDIpPj4yXTspYVs0NzI1Ml09Yj1mKzF8MCxsPWwrMXwwLGY9YjtsPXArMTY0fDB9Zm9yKGw9KGw9MHxhWzQ3MjYyXSk/MHxsMChsLG08PDIpOjB8UW4obTw8MiksYVs0NzI2Ml09bCxhWzQ3MjYz''@;'; put 'put ''XT0wLGw9KGw9MHxhWzQ3MjU2XSk/MHxsMChsLGFbNDcyNTFdPDwyKTowfFFuKGFbNDcyNTFdPDwyKSxhWzQ3MjU2XT1sLGFbNDcyNTVdPTAsYz0xLGw9MTkyKygwfGFbQT4+Ml0pfDA7bD0wfGFbbD4+Ml07KXtmb3IoYVsodz0yOTIrKEE9MHxhWyhiPWwrMTZ8MCk+PjJdKXwwKT4+Ml09MCxB''@;'; put 'put ''PTB8YVtBKzE3Mj4+Ml0sbT1jLHA9MCxsPTA7Yz0wfGFbQSsocDw8Mik+PjJdOylhW3c+PjJdPWY9bCsxfDAsYVsxNjArKGw9MHxhW2MrMTY+PjJdKT4+Ml09MCxhW2wrMTY0Pj4yXT0tMSxtPWw9bT8oKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwoaz0zJmFbYz4+Ml0pKT9jOmMrLTQ4''@;'; put 'put ''fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8ayk/YzpjKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDApPCgwfGFyW2wrMTcwPj4xXSk/MDptOjAscD1wKzF8MCxsPWY7bD0wfG1yKDQrKHA8PDIpfDApLGFbMjY0KyhjPTB8YVtiPj4yXSk+PjJdPWws''@;'; put 'put ''YVtjKzI2OD4+Ml09MCxjPTB8YVtjKzE4MD4+Ml0sbD0wO2Rve2s9bCxsPWwrMXwwfXdoaWxlKDAhPSgwfGFbYysoazw8Mik+PjJdKSk7Yz0wfG1yKGw8PDIpLGFbMjcyKyhsPTB8YVtiPj4yXSk+PjJdPWMsYVtsKzI3Nj4+Ml09MCxjPW0sbD1sKzE2NHwwfXJldHVybiAwfGN9LFhVLGJmLGZ1''@;'; put 'put ''bmN0aW9uIHNhKGwpe3ZhciBjLGYscCxtO3JldHVybiAwfH5+KChmPStfWzI0KyhwPTB8YVsxNisoMHxhWygzPT0oMHwobT0zJmFbKGx8PTApPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjNdLStfWzI0KyhsPTB8YVsxNisoMHxhWygyPT0oMHxtKT9sOmwrLTQ4fDApKzQwPj4yXSk+''@;'; put 'put ''PjJdKT4+M10pKmYrKGM9K19bcCsxNj4+M10tK19bbCsxNj4+M10pKmMpfSxtcixmdW5jdGlvbiBCcyhsKXtsfD0wO3ZhciBiLGssYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGI9MHxBcygyNTY5MiwwfGFbNDU4MV0pLGs9bCs4fDAsdz0wOyEoKDB8dyk+PSgwfGFbbD4+Ml0pKTspe2lm''@;'; put 'put ''KCEoNCZhWyhjPSgwfGFbaz4+Ml0pKyg3Mip3fDApfDApPj4yXSkpe2Zvcig7KGY9MHxhWzgrKDB8YVtjKzM2Pj4yXSk+PjJdKSYmKGY9MHxhW2YrMjA+PjJdKSYmISgxJmFbZj4+Ml0pOyljPWY7Zm9yKEE9MHxtcig0MCksYVtBKzM2Pj4yXT1jLF9bQSs4Pj4zXT0rX1tjKzQwPj4zXSxtPWMs''@;'; put 'put ''Zj0wfGFbYz4+Ml07YVttPj4yXT00fGYsKGY9MHxhW2FbbSszNj4+Ml0+PjJdKSYmKHA9MHxhW2YrMjQ+PjJdKSYmISgxJihmPTB8YVtwPj4yXSl8MCk7KW09cDtfW0ErMTY+PjNdPStfW20rNTY+PjNdLGlFKGIsQSwrX1tjKzQ4Pj4zXSl9dz13KzF8MH1yZXR1cm4gMHxifSxmdW5jdGlvbiBN''@;'; put 'put ''OShsKXtsfD0wO3ZhciBiLGssYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGI9MHxBcygyNTY5MiwwfGFbNDU4MV0pLGs9bCs4fDAsdz0wOyEoKDB8dyk+PSgwfGFbbD4+Ml0pKTspe2lmKCEoMiZhWyhjPSgwfGFbaz4+Ml0pKyg3Mip3fDApfDApPj4yXSkpe2Zvcig7KGY9MHxhWzEyKygw''@;'; put 'put ''fGFbYyszNj4+Ml0pPj4yXSkmJihmPTB8YVtmKzIwPj4yXSkmJiEoMSZhW2Y+PjJdKTspYz1mO2ZvcihBPTB8bXIoNDApLGFbQSszNj4+Ml09YyxfW0ErOD4+M109K19bYys0OD4+M10sbT1jLGY9MHxhW2M+PjJdO2FbbT4+Ml09MnxmLChmPTB8YVs0KygwfGFbbSszNj4+Ml0pPj4yXSkmJihw''@;'; put 'put ''PTB8YVtmKzI0Pj4yXSkmJiEoMSYoZj0wfGFbcD4+Ml0pfDApOyltPXA7X1tBKzE2Pj4zXT0rX1ttKzY0Pj4zXSxpRShiLEEsK19bYys0MD4+M10pfXc9dysxfDB9cmV0dXJuIDB8Yn0sZnVuY3Rpb24gTm0obCl7bHw9MDt2YXIgbSxBLGM9MCxmPTAscD0wO2ZvcihtPTB8YVs0NzUwOV0sQT0w''@;'; put 'put ''fGFbNDc1MDVdLGM9MHxhWzQ3NTA3XTs7KXtpZigoMHxjKT49KDB8bSkpe3A9NDticmVha31pZigxPT0oMHwkZigwfGFbYVtBKygoZj1jKzF8MCk8PDIpPj4yXT4+Ml0sMHxhW2FbQSsoYzw8Mik+PjJdPj4yXSwwfGFbbD4+Ml0pKSlicmVhaztjPWZ9ZTpkb3tpZig0PT0oMHxwKSlmb3IoYz0w''@;'; put 'put ''fGFbNDc1MDhdOzspe2lmKCgwfGMpPD0oMHxtKSl7Yz1tO2JyZWFrIGV9aWYoMj09KDB8JGYoMHxhW2FbQSsoKGY9YystMXwwKTw8Mik+PjJdPj4yXSwwfGFbYVtBKyhjPDwyKT4+Ml0+PjJdLDB8YVtsPj4yXSkpKWJyZWFrO2M9Zn19d2hpbGUoMCk7cmV0dXJuIDB8Y30sUjAsaTIsaTIsaTIs''@;'; put 'put ''aTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTIsaTJdLFJpPVtPYyxmdW5jdGlvbiBCMyhsLGMpe3JldHVybiAwfGx9LGZ1bmN0aW9uIHJlKGwsYyl7cmV0dXJuIDB8X3UoY3w9MCxsfD0wKX0sZnVuY3Rpb24gWmUo''@;'; put 'put ''bCxjKXtyZXR1cm4gbHw9MCxyMigwfChsPTB8UjAoY3w9MCkpLDAsMHxjKSwwfGx9LE5RLFZRLGZ1bmN0aW9uIFVhZShsLGMpe2N8PTA7dmFyIGssTSxELG09MCxBPTAsdz0wLGI9MDtyZXR1cm4gaz1vZSxvZT1vZSszMnwwLE09aysxNnwwLHc9ayxtPTB8YVs0KyhsfD0wKT4+Ml0sQT05MCoo''@;'; put 'put ''MyZhWzExNisoMHxhWzE2KygwfGZyKGw9MHxhW2w+PjJdKSk+PjJdKT4+Ml0pfDAsYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sTjUodyxNLEEpLGFbYz4+Ml09YVt3Pj4yXSxhW2MrND4+Ml09YVt3''@;'; put 'put ''KzQ+PjJdLGFbYys4Pj4yXT1hW3crOD4+Ml0sYVtjKzEyPj4yXT1hW3crMTI+PjJdLG0/KEE9bSxsPW0rOHwwLHc9bSsxNnwwLG09bSsyNHwwKTooQT0xNisobT0wfGFbMTIrKDB8YVtsKzE2Pj4yXSk+PjJdKXwwLGw9bSsyNHwwLHc9bSszMnwwLG09bSs0MHwwKSxsPStfW0E+PjNdPD0oRD0r''@;'; put 'put ''X1tjPj4zXSkmJkQ8PStfW3c+PjNdJiYrX1tsPj4zXTw9KGI9K19bYys4Pj4zXSk/Yjw9K19bbT4+M10mMTowLG9lPWssMHxsfSxmdW5jdGlvbiB6YWUobCxjKXt2YXIgZixwLG0sQSx3LGIsaztyZXR1cm4gY3w9MCxwPW9lLG9lPW9lKzMyfDAsaz1wKzE2fDAsdz1wLGI9OTAqKDMmYVsxMTYr''@;'; put 'put ''KDB8YVsxNisoMHxmcihsPTB8YVsobHw9MCk+PjJdKSk+PjJdKT4+Ml0pfDAsYVtrPj4yXT1hW2M+PjJdLGFbays0Pj4yXT1hW2MrND4+Ml0sYVtrKzg+PjJdPWFbYys4Pj4yXSxhW2srMTI+PjJdPWFbYysxMj4+Ml0sTjUodyxrLGIpLGY9K19bdz4+M10sb2U9cCwwfCghKCEoKEE9K19bdys4''@;'; put 'put ''Pj4zXSk+PS0obT0uNSorX1s4MCsobD0wfGFbbCsxNj4+Ml0pPj4zXSkpfCEoQTw9bSkpJiZmPj0tK19bbCs4OD4+M10/Zjw9K19bbCs5Nj4+M10mMTowKX0seFEsZnVuY3Rpb24gZF8obCxjKXtyZXR1cm4gYVszNisobHw9MCk+PjJdPTB8bmEoY3w9MCksMH0sZnVuY3Rpb24gRkIobCxjKXty''@;'; put 'put ''ZXR1cm4gYVszMisobHw9MCk+PjJdPTB8bmEoY3w9MCksMH0sZnVuY3Rpb24gVEcobCxjKXtsfD0wO3ZhciBwLG0sdyxmPTAsQT0wO3N3aXRjaCh3PW9lLG9lPW9lKzE2fDAsbT13LDB8KHA9KDB8Z3YoMHx1ZVsoY3w9MCk+PjBdKSk8PDI0Pj4yNCkpe2Nhc2UgODI6MHxBMChmPWMrMXwwLDE0''@;'; put 'put ''MDc2Myk/QT01OihhW2w+PjJdPTExNCxmPTApO2JyZWFrO2Nhc2UgNzY6QT02O2JyZWFrO2RlZmF1bHQ6Zj1jKzF8MCxBPTV9ZG97aWYoNT09KDB8QSkpaWYoMHxBMChmLDE0MDc2OCkpe2lmKDY3IT0oMHxwKSYmMD09KDB8QTAoZiwxNDA3NzIpKSl7YVttPj4yXT1jLFhyKDAsMTQwNzc4LG0p''@;'; put 'put ''LGY9MTticmVha31hW2w+PjJdPTExMCxmPTB9ZWxzZSBBPTZ9d2hpbGUoMCk7cmV0dXJuIDY9PSgwfEEpJiYoYVtsPj4yXT0xMDgsZj0wKSxvZT13LDB8Zn0sZnVuY3Rpb24gSUcobCxjKXtyZXR1cm4gYVs0KyhsfD0wKT4+Ml09Y3w9MCwwfSxmdW5jdGlvbiBERyhsLGMpe3JldHVybiBhWyhs''@;'; put 'put ''fD0wKT4+Ml09Y3w9MCwwfSxmdW5jdGlvbiBIQihsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAscD1vZSxvZT1vZSsxNnwwLDB8eGgoY3w9MCwxNDA4NDUsMCwyNTUsZj1wKT9sPTE6KF9bbCsxNj4+M109KygwfGFbZj4+Ml0pLGw9MCksb2U9cCwwfGx9LGZ1bmN0aW9uIExHKGwsYyl7bHw9MDt2''@;'; put 'put ''YXIgZixtLHA9MDtzd2l0Y2gobT1vZSxvZT1vZSsxNnwwLGY9bSwoMHxndigwfHVlWyhjfD0wKT4+MF0pKTw8MjQ+PjI0fDApe2Nhc2UgNzY6MHxBMChjKzF8MCwxNDA3NjgpP3A9OTooVHRbKGw9bCszNnwwKT4+MV09NHxUdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODI6MHxBMChjKzF8MCwx''@;'; put 'put ''NDA3NjMpP3A9OTooVHRbKGw9bCszNnwwKT4+MV09MnxUdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODQ6MHxBMChjKzF8MCwxNDE1NjMpP3A9OTooVHRbKGw9bCszNnwwKT4+MV09NnxUdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgNjc6MHxBMChjKzF8MCwxNDA3NzIpP3A9OTpsPTA7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDpwPTl9cmV0dXJuIDk9PSgwfHApJiYoYVtmPj4yXT1jLFhyKDAsMTQxNTY3LGYpLGw9MSksb2U9bSwwfGx9LGZ1bmN0aW9uIE5CKGwsYyl7bHw9MDt2YXIgZixtLHA9MDtzd2l0Y2gobT1vZSxvZT1vZSsxNnwwLGY9bSwoMHxndigwfHVlWyhjfD0wKT4+MF0pKTw8MjQ+PjI0fDAp''@;'; put 'put ''e2Nhc2UgNzY6MHxBMChjKzF8MCwxNDA3NjgpP3A9NzooVHRbKGw9bCszNnwwKT4+MV09NTEyfFR0W2w+PjFdLGw9MCk7YnJlYWs7Y2FzZSA4MjowfEEwKGMrMXwwLDE0MDc2Myk/cD03OihUdFsobD1sKzM2fDApPj4xXT0yNTZ8VHRbbD4+MV0sbD0wKTticmVhaztjYXNlIDY3OjB8QTAoYysx''@;'; put 'put ''fDAsMTQwNzcyKT9wPTc6bD0wO2JyZWFrO2RlZmF1bHQ6cD03fXJldHVybiA3PT0oMHxwKSYmKGFbZj4+Ml09YyxYcigwLDE0MTUxOCxmKSxsPTEpLG9lPW0sMHxsfSxmdW5jdGlvbiBVOChsLGMpe3JldHVybiBhWzIwKyhsfD0wKT4+Ml09MHxuYShjfD0wKSwwfSxmdW5jdGlvbiBWQihsLGMp''@;'; put 'put ''e3ZhciBmLHA7cmV0dXJuIGx8PTAscD1vZSxvZT1vZSsxNnwwLDB8eGgoY3w9MCwxNDE1MTEsMCwyNTUsZj1wKT9sPTE6KHVlW2wrMzM+PjBdPWFbZj4+Ml0sVHRbKGw9bCszNnwwKT4+MV09MzJ8VHRbbD4+MV0sbD0wKSxvZT1wLDB8bH0sZnVuY3Rpb24gc3gobCxjKXt2YXIgZixwO3JldHVy''@;'; put 'put ''biBsfD0wLHA9b2Usb2U9b2UrMTZ8MCwwfHhoKGN8PTAsMTQxNDk5LDAsMjU1LGY9cCk/bD0xOih1ZVtsKzM0Pj4wXT1hW2Y+PjJdLFR0WyhsPWwrMzZ8MCk+PjFdPTY0fFR0W2w+PjFdLGw9MCksb2U9cCwwfGx9LGZ1bmN0aW9uIG5BKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxwPW9lLG9l''@;'; put 'put ''PW9lKzE2fDAsMHx4aChjfD0wLDE0MTQ4NywtMTI4LDEyNyxmPXApP2w9MToodWVbbCszMj4+MF09YVtmPj4yXSxUdFsobD1sKzM2fDApPj4xXT0xMjh8VHRbbD4+MV0sbD0wKSxvZT1wLDB8bH0sZnVuY3Rpb24gakIobCxjKXtyZXR1cm4gYVsyNCsobHw9MCk+PjJdPTB8bmEoY3w9MCksMH0s''@;'; put 'put ''ZnVuY3Rpb24gdXgobCxjKXt2YXIgZixwLG07bHw9MCxjfD0wLG09b2Usb2U9b2UrMTZ8MCxwPW0sZj1tKzR8MDtkb3tpZighKDB8eGgoYywxNDE0NDIsMCw2NTUzNSxmKSkpe2lmKGM9MHxhW2Y+PjJdKXtUdFtsKzgwPj4xXT1jLGM9MDticmVha31YcigwLDE0MTQ1MCxwKSxjPTE7YnJlYWt9''@;'; put 'put ''Yz0xfXdoaWxlKDApO3JldHVybiBvZT1tLDB8Y30sZnVuY3Rpb24gWkIobCxjKXtsfD0wO3ZhciBmLG0scD0wO3N3aXRjaChtPW9lLG9lPW9lKzE2fDAsZj1tLCgwfGd2KDB8YnRbKGN8PTApPj4wXSkpPDwyND4+MjR8MCl7Y2FzZSA4NDowfEEwKGMrMXwwLDE0MTM5MSk/cD01OihUdFsobD1s''@;'; put 'put ''KzM2fDApPj4xXT0xfFR0W2w+PjFdLGw9MCk7YnJlYWs7Y2FzZSA3MDowfEEwKGMrMXwwLDE0MTM5NSk/cD01Omw9MDticmVhaztkZWZhdWx0OnA9NX1yZXR1cm4gNT09KDB8cCkmJihhW2Y+PjJdPWMsWHIoMCwxNDE0MDAsZiksbD0xKSxvZT1tLDB8bH0sZnVuY3Rpb24gekIobCxjKXt2YXIg''@;'; put 'put ''ZixwO3JldHVybiBsfD0wLHA9b2Usb2U9b2UrMTZ8MCwwfHhoKGN8PTAsMTQxMzc3LDAsMzYwLGY9cCk/bD0xOihhW2wrMjg+PjJdPTY1NTM1JmFbZj4+Ml0sbD0wKSxvZT1wLDB8bH0sZnVuY3Rpb24gR0IobCxjKXt2YXIgZixwO3JldHVybiBsfD0wLHA9b2Usb2U9b2UrMTZ8MCwwfHhoKGN8''@;'; put 'put ''PTAsMTQxMzcwLDAsNjU1MzUsZj1wKT9sPTE6KFR0W2wrNDA+PjFdPWFbZj4+Ml0sbD0wKSxvZT1wLDB8bH0sZnVuY3Rpb24gV0IobCxjKXtyZXR1cm4gYVsobHw9MCk+PjJdPTB8bmEoY3w9MCksMH0sZnVuY3Rpb24gWUIobCxjKXtyZXR1cm4gYVsxNisobHw9MCk+PjJdPTB8bmEoY3w9MCks''@;'; put 'put ''MH0sZnVuY3Rpb24gY3gobCxjKXtyZXR1cm4gYVs0KyhsfD0wKT4+Ml09MHxuYShjfD0wKSwwfSxmdW5jdGlvbiBVQihsLGMpe3ZhciBmLHAsbTtsfD0wLGN8PTAsbT1vZSxvZT1vZSsxNnwwLHA9bSxmPW0rNHwwO2Rve2lmKCEoMHx4aChjLDE0MTMyNSwwLDY1NTM1LGYpKSl7aWYoYz0wfGFb''@;'; put 'put ''Zj4+Ml0pe1R0W2wrODI+PjFdPWMsYz0wO2JyZWFrfVhyKDAsMTQxMzMzLHApLGM9MTticmVha31jPTF9d2hpbGUoMCk7cmV0dXJuIG9lPW0sMHxjfSxmdW5jdGlvbiBmeChsLGMpe2x8PTAsY3w9MDt2YXIgQSxiLGY9MCxwPTAsbT0wLHc9MDtiPW9lLG9lPW9lKzE2fDAsQT1iLG09MDtlOmZv''@;'; put 'put ''cig7Oyl7dDpmb3IoOzspe2lmKHA9YysxfDAsISgoYz0wfHVlW2M+PjBdKTw8MjQ+PjI0KSlicmVhayBlO3N3aXRjaCgoZj0oMHxkcChjPWM8PDI0Pj4yNCkpLTk4fDApPj4+MXxmPDwzMXwwKXtjYXNlIDU6dz01O2JyZWFrIHQ7Y2FzZSA5OmY9MjA0ODticmVhayB0O2Nhc2UgODp3PTY7YnJl''@;'; put 'put ''YWsgdDtjYXNlIDA6dz03O2JyZWFrIHR9YVtBPj4yXT1jLGFbQSs0Pj4yXT1jLFhyKDAsMTQxMjcyLEEpLGM9cH01PT0oMHx3KT8odz0wLGY9MTAyNCk6Nj09KDB8dyk/KHc9MCxmPTQwOTYpOjc9PSgwfHcpJiYodz0wLGY9ODE5MiksYz1wLG18PWZ9cmV0dXJuIG08PDE2Pj4xNiE9MTUzNjAm''@;'; put 'put ''JihUdFsodz1sKzM2fDApPj4xXT1UdFt3Pj4xXXxtKSxvZT1iLDB9LGZ1bmN0aW9uIGh4KGwsYyl7dmFyIHAsbSxBLHcsYixmPTA7Zm9yKGI9b2Usb2U9b2UrMTZ8MCx3PWIrOHwwLEE9YixwPTQyKyhsfD0wKXwwLGY9MCxjPW09MHxuYShjfD0wKTtsPTB8dnYoYywxNDExODIpOylpZig4MiE9''@;'; put 'put ''KDI1NSYoMHxndigwfHVlW2w+PjBdKSl8MCkpaWYoMHxBMChsLDE0MTIzNikpaWYoMHxBMChsLDE0MTI0MikmJjB8QTAobCwxNDEyNTIpKXtpZighKDB8QTAobCwxNDEyNTgpKSl7VHRbcD4+MV09MTI4fFR0W3A+PjFdLGM9MCxmPWw9Zjtjb250aW51ZX1pZigwfEEwKGwsMTQxMjY1KSl7YVt3''@;'; put 'put ''Pj4yXT1sLFhyKDAsMTQxMTk4LHcpLGY9MSxjPTA7Y29udGludWV9VHRbcD4+MV09MjU2fFR0W3A+PjFdLGM9MCxmPWw9Zn1lbHNlIFR0W3A+PjFdPTMyfFR0W3A+PjFdLGM9MCxmPWw9ZjtlbHNlIFR0W3A+PjFdPS0zODUmVHRbcD4+MV0sYz0wLGY9bD1mO2Vsc2V7aWYoISgwfEEwKGM9bCsx''@;'; put 'put ''fDAsMTQxMTg1KSkpe1R0W3A+PjFdPTR8VHRbcD4+MV0sYz0wLGY9bD1mO2NvbnRpbnVlfWlmKDB8QTAoYywxNDExOTIpKXthW0E+PjJdPWwsWHIoMCwxNDExOTgsQSksZj0xLGM9MDtjb250aW51ZX1UdFtwPj4xXT0yfFR0W3A+PjFdLGM9MCxmPWw9Zn1yZXR1cm4gSHQobSksb2U9YiwwfGZ9''@;'; put 'put ''LGZ1bmN0aW9uIHY2KGwsYyl7cmV0dXJuIGFbOCsobHw9MCk+PjJdPTB8bmEoY3w9MCksMH0sZnVuY3Rpb24gZHgobCxjKXtyZXR1cm4gYVsxMisobHw9MCk+PjJdPTB8bmEoY3w9MCksMH0sZnVuY3Rpb24gcF8obCxjKXtsfD0wO3ZhciBmLG0scD0wO3N3aXRjaChtPW9lLG9lPW9lKzE2fDAs''@;'; put 'put ''Zj1tLCgwfGd2KDB8dWVbKGN8PTApPj4wXSkpPDwyND4+MjR8MCl7Y2FzZSA2NjowfEEwKGMrMXwwLDE0MTEyOCk/cD03OihUdFsobD1sKzM2fDApPj4xXT0xNnxUdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODQ6MHxBMChjKzF8MCwxNDExMzQpP3A9NzooVHRbKGw9bCszNnwwKT4+MV09OHxU''@;'; put 'put ''dFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgNzc6MHxBMChjKzF8MCwxNDExMzcpP3A9NzpsPTA7YnJlYWs7ZGVmYXVsdDpwPTd9cmV0dXJuIDc9PSgwfHApJiYoYVtmPj4yXT1jLFhyKDAsMTQxMTQzLGYpLGw9MSksb2U9bSwwfGx9LGZ1bmN0aW9uIFFCKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9''@;'; put 'put ''MCxwPW9lLG9lPW9lKzE2fDAsMHx4aChjfD0wLDE0MTEyMiwwLDY1NTM1LGY9cCk/bD0xOihUdFtsKzM4Pj4xXT1hW2Y+PjJdLGw9MCksb2U9cCwwfGx9LGZ1bmN0aW9uIE9HKGwsYyl7bHw9MDt2YXIgZixtLHA9MDtzd2l0Y2gobT1vZSxvZT1vZSsxNnwwLGY9bSwoMHxndigwfHVlWyhjfD0w''@;'; put 'put ''KT4+MF0pKTw8MjQ+PjI0fDApe2Nhc2UgNzY6MHxBMChjKzF8MCwxNDA3NjgpP3A9NzooVHRbKGw9bCszNnwwKT4+MV09NHxUdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODI6MHxBMChjKzF8MCwxNDA3NjMpP3A9NzooVHRbKGw9bCszNnwwKT4+MV09MnxUdFtsPj4xXSxsPTApO2JyZWFrO2Nh''@;'; put 'put ''c2UgNjc6MHxBMChjKzF8MCwxNDA3NzIpP3A9NzpsPTA7YnJlYWs7ZGVmYXVsdDpwPTd9cmV0dXJuIDc9PSgwfHApJiYoYVtmPj4yXT1jLFhyKDAsMTQwNzc4LGYpLGw9MSksb2U9bSwwfGx9LGZ1bmN0aW9uIEt0KGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxwPW9lLG9lPW9lKzE2fDAsMHx4''@;'; put 'put ''aChjfD0wLDE0MTcyMCwwLDEyNyxmPXApP2w9MToodWVbbCs4OD4+MF09YVtmPj4yXSxsPTApLG9lPXAsMHxsfSxmdW5jdGlvbiBCbShsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAscD1vZSxvZT1vZSsxNnwwLGY9cCw0Mj09KDB8dWVbKGN8PTApPj4wXSk/KHVlWyhsPWwrMTEyfDApPj4wXT0x''@;'; put 'put ''fHVlW2w+PjBdLGw9MCk6KGFbZj4+Ml09YyxYcigwLDE0MTY4MCxmKSxsPTEpLG9lPXAsMHxsfSxmdW5jdGlvbiBweChsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAscD1vZSxvZT1vZSsxNnwwLGY9cCw0Mj09KDB8dWVbKGN8PTApPj4wXSk/KHVlWyhsPWwrMTEyfDApPj4wXT0yfHVlW2w+PjBd''@;'; put 'put ''LGw9MCk6KGFbZj4+Ml09YyxYcigwLDE0MTY0MyxmKSxsPTEpLG9lPXAsMHxsfSxmdW5jdGlvbiBUSyhsLGMpe3ZhciBwLGY9MDtwPTcyKyhsfD0wKXwwLGw9Y3w9MDtlOmZvcig7Oyl7c3dpdGNoKDB8dWVbcCsoMHxidFtsPj4wXSk+PjBdKXtjYXNlIDU6Zj0yO2JyZWFrO2Nhc2UgNjpmPTM7''@;'; put 'put ''YnJlYWs7Y2FzZSA3OmY9NDticmVhaztjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjM6Y2FzZSAyMjpjYXNlIDI5OmY9MTticmVhaztkZWZhdWx0OmJyZWFrIGV9bD1sK2Z8MH1yZXR1cm4gbC1jfDB9LGZ1bmN0aW9uIElLKGwsYyl7Y3w9MCxsPTcyKyhsfD0wKXwwO2U6''@;'; put 'put ''Zm9yKDs7KXtzd2l0Y2goMHx1ZVtsKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgMjE6Y2FzZSA5OmNhc2UgMTA6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWM9YysxfDB9cmV0dXJuIDB8Y30sZnVuY3Rpb24gREsobCxjKXtsfD0wO3ZhciBmPTAscD0wO2Y9MHx1ZVsobD0yKyhjfD0wKXwwKT4+MF07''@;'; put 'put ''ZTpkb3tpZihmPDwyND4+MjQ9PTEyMClmb3IoZj1jKzN8MCxsPTA7Oyl7dDpmb3IoOzspe2lmKGM9KHA9MHx1ZVtmPj4wXSk8PDI0Pj4yNCxwPDwyND4+MjQ9PTU5KXtwPTE0O2JyZWFrIGV9c3dpdGNoKDB8Yyl7Y2FzZSA1NzpjYXNlIDU2OmNhc2UgNTU6Y2FzZSA1NDpjYXNlIDUzOmNhc2Ug''@;'; put 'put ''NTI6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Y2FzZSA0ODpwPTc7YnJlYWsgdDtjYXNlIDcwOmNhc2UgNjk6Y2FzZSA2ODpjYXNlIDY3OmNhc2UgNjY6Y2FzZSA2NTpwPTg7YnJlYWsgdDtjYXNlIDEwMjpjYXNlIDEwMTpjYXNlIDEwMDpjYXNlIDk5OmNhc2UgOTg6Y2FzZSA5NzpwPTk7YnJl''@;'; put 'put ''YWsgdH1mPWYrMXwwfWlmKDc9PSgwfHApPyhwPTAsbD1jKy00OHxsPDw0KTo4PT0oMHxwKT8ocD0wLGw9KGw8PDQpLTU1K2N8MCk6OT09KDB8cCkmJihwPTAsbD0obDw8NCktODcrY3wwKSwhKCgwfGwpPDExMTQxMTIpKXtsPS0xO2JyZWFrfWY9ZisxfDB9ZWxzZSBmb3IoYz1sLGw9MDs7KXtp''@;'; put 'put ''ZihmPDwyND4+MjQ9PTU5KXtwPTE0O2JyZWFrIGV9aWYoKDB8KGw9KGY8PDI0Pj4yNCktNDgrKDEwKmx8MCl8MCkpPj0xMTE0MTEyKXtsPS0xO2JyZWFrIGV9Yz1mPWMrMXwwLGY9MHx1ZVtmPj4wXX19d2hpbGUoMCk7cmV0dXJuIDE0PT0oMHxwKSYmKGw9MHxUZChsKSksMHxsfSxmdW5jdGlv''@;'; put 'put ''biBSaihsLGMpe3JldHVybiBsfD0wLGw9MHxidFsoY3w9MCk+PjBdLDE8PCgzMSYoYz0wfGJ0W2MrMT4+MF0pKSZhWzU2OTQwKygoKDB8YnRbMTQ0MDQ0KyhsPj4+MiY3KT4+MF0pPDwzfGw8PDEmNnxjPj4+NSYxKTw8Mik+PjJdfDB9LGZ1bmN0aW9uIF9MKGwsYyl7dmFyIGY7cmV0dXJuIGx8''@;'; put 'put ''PTAsMTw8KDMxJihsPTB8YnRbMisoY3w9MCk+PjBdKSkmYVs1Njk0MCsoKCgwfGJ0WzE0NDA0NCsoKGY9MHxidFtjKzE+PjBdKT4+PjImMTV8dWVbYz4+MF08PDQmMjU1KT4+MF0pPDwzfGY8PDEmNnxsPj4+NSYxKTw8Mik+PjJdfDB9LGZ1bmN0aW9uIHF5KGwsYyl7cmV0dXJuIDB9LGZ1bmN0''@;'; put 'put ''aW9uIFZLKGwsYyl7cmV0dXJuIGx8PTAsbD0wfGJ0WyhjfD0wKT4+MF0sMTw8KDMxJihjPTB8YnRbYysxPj4wXSkpJmFbNTY5NDArKCgoMHxidFsxNDM3ODgrKGw+Pj4yJjcpPj4wXSk8PDN8bDw8MSY2fGM+Pj41JjEpPDwyKT4+Ml18MH0sZnVuY3Rpb24gdTgobCxjKXt2YXIgZjtyZXR1cm4g''@;'; put 'put ''bHw9MCwxPDwoMzEmKGw9MHxidFsyKyhjfD0wKT4+MF0pKSZhWzU2OTQwKygoKDB8YnRbMTQzNzg4KygoZj0wfGJ0W2MrMT4+MF0pPj4+MiYxNXx1ZVtjPj4wXTw8NCYyNTUpPj4wXSk8PDN8Zjw8MSY2fGw+Pj41JjEpPDwyKT4+Ml18MH0sZnVuY3Rpb24gQmoobCxjKXtyZXR1cm4oMHxidFso''@;'; put 'put ''Y3w9MCk+PjBdKTwxOTQ/MTooYz0wfGJ0W2MrMT4+MF0pPj4+N14xfDE5Mj09KDE5MiZjfDApfDB9LGZ1bmN0aW9uIEkxZShsLGMpe2x8PTA7dmFyIGY9MDtsPTB8dWVbMisoY3w9MCk+PjBdO2Rve2lmKGw8PDI0Pj4yND4tMSlsPTE7ZWxzZXtpZigoZj0wfHVlW2M+PjBdKTw8MjQ+PjI0PT0t''@;'; put 'put ''MTcmJi02NT09KDB8dWVbYysxPj4wXSkpe2lmKCgyNTUmbCk+MTg5KXtsPTE7YnJlYWt9bD0xOTEsYz0tNjV9ZWxzZXtpZigoMjU1JmwpPjE5MSl7bD0xO2JyZWFrfWlmKGw9MjU1JihjPTB8dWVbYysxPj4wXSksZjw8MjQ+PjI0PT0tMzIpe2w9KDI1NSZjKTwxNjB8MTkyPT0oMTkyJmx8MCk7''@;'; put 'put ''YnJlYWt9fWw9MD09KDEyOCZsfDApPzE6Zjw8MjQ+PjI0PT0tMTk/KDI1NSZjKT4xNTk6MTkyPT0oMTkyJmx8MCl9fXdoaWxlKDApO3JldHVybiAxJmx8MH0sZnVuY3Rpb24gZXcobCxjKXtsfD0wO3ZhciBmPTA7Zj0wfGJ0WzMrKGN8PTApPj4wXTtkb3tpZighKDA9PSgxMjgmZnwwKXwxOTI9''@;'; put 'put ''PSgxOTImZnwwKXx8KGY9MHxidFtjKzI+PjBdLDA9PSgxMjgmZnwwKXwxOTI9PSgxOTImZnwwKSkpKXtpZihmPTB8dWVbYz4+MF0sYz0yNTUmKGw9MHx1ZVtjKzE+PjBdKSxmPDwyND4+MjQ9PS0xNil7bD0oMjU1JmwpPDE0NHwxOTI9PSgxOTImY3wwKTticmVha31sPTA9PSgxMjgmY3wwKT8x''@;'; put 'put ''OmY8PDI0Pj4yND09LTEyPygyNTUmbCk+MTQzOjE5Mj09KDE5MiZjfDApO2JyZWFrfWw9MX13aGlsZSgwKTtyZXR1cm4gMSZsfDB9LGZ1bmN0aW9uIEIxZShsLGMpe3ZhciBtLGY9MCxwPTA7bT03MisobHw9MCl8MCxwPWN8PTA7ZTpmb3IoOzspe3N3aXRjaChmPTB8dWVbcCsxPj4wXSwwfChs''@;'; put 'put ''PShsPTB8dWVbcD4+MF0pPDwyND4+MjQ/MHxzMChsLGYpOjB8YnRbbSsoMjU1JmYpPj4wXSkpe2Nhc2UgNTpjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjM6Y2FzZSAyMjpjYXNlIDI5Omw9MjticmVhaztjYXNlIDY6bD0zO2JyZWFrO2Nhc2UgNzpsPTQ7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDpicmVhayBlfXA9cCtsfDB9cmV0dXJuIHAtY3wwfSxmdW5jdGlvbiBQMWUobCxjKXtjfD0wO3ZhciBwLGY9MDtwPTcyKyhsfD0wKXwwO2U6Zm9yKDs7KXtzd2l0Y2goZj0wfHVlW2MrMT4+MF0sMHwobD0obD0wfHVlW2M+PjBdKTw8MjQ+PjI0PzB8czAobCxmKTowfGJ0W3ArKDI1NSZm''@;'; put 'put ''KT4+MF0pKXtjYXNlIDIxOmNhc2UgOTpjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6YnJlYWsgZX1jPWMrMnwwfXJldHVybiAwfGN9LGZ1bmN0aW9uIF9BZShsLGMpe2x8PTA7dmFyIGY9MCxwPTA7bD00KyhjfD0wKXwwO2U6ZG97aWYoMHx1ZVtsPj4wXSlmPWwsbD0wLGM9LTEscD0xNjtlbHNlIGlm''@;'; put 'put ''KDEyMD09KDB8dWVbYys1Pj4wXSkpZm9yKGM9Yys2fDAsbD0wOzspe3Q6Zm9yKDs7KXtpZighKDB8dWVbYz4+MF0pKXtpZigoZj0wfHVlW2MrMT4+MF0pPDwyND4+MjQ9PTU5KXtwPTE4O2JyZWFrIGV9c3dpdGNoKDB8KGY9Zjw8MjQ+PjI0KSl7Y2FzZSA1NzpjYXNlIDU2OmNhc2UgNTU6Y2Fz''@;'; put 'put ''ZSA1NDpjYXNlIDUzOmNhc2UgNTI6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Y2FzZSA0ODpwPTg7YnJlYWsgdDtjYXNlIDcwOmNhc2UgNjk6Y2FzZSA2ODpjYXNlIDY3OmNhc2UgNjY6Y2FzZSA2NTpwPTk7YnJlYWsgdDtjYXNlIDEwMjpjYXNlIDEwMTpjYXNlIDEwMDpjYXNlIDk5OmNhc2Ug''@;'; put 'put ''OTg6Y2FzZSA5NzpwPTEwO2JyZWFrIHR9fWM9YysyfDB9aWYoOD09KDB8cCk/bD1mKy00OHxsPDw0Ojk9PSgwfHApP2w9KGw8PDQpLTU1K2Z8MDoxMD09KDB8cCkmJihsPShsPDw0KS04NytmfDApLCEoKDB8bCk8MTExNDExMikpe2w9LTEscD0xOTticmVha31jPWMrMnwwfWVsc2UgYz1sLGw9''@;'; put 'put ''MCxwPTEzfXdoaWxlKDApO2Zvcig7OylpZigxMyE9KDB8cCkpaWYoMTYhPSgwfHApKWlmKDE4IT0oMHxwKSl7aWYoMTk9PSgwfHApKXJldHVybiAwfGx9ZWxzZSBsPTB8VGQobCkscD0xOTtlbHNle2lmKCgwfChsPSgxMCpsfDApLTQ4K2N8MCkpPj0xMTE0MTEyKXtsPS0xLHA9MTk7Y29udGlu''@;'; put 'put ''dWV9Yz1mKzJ8MCxwPTEzfWVsc2V7aWYoMHx1ZVtjPj4wXSl7Zj1jLGM9LTEscD0xNjtjb250aW51ZX1pZig1OT09KDB8dWVbYysxPj4wXSkpe3A9MTg7Y29udGludWV9Zj1jLGM9MHx1ZVtjKzE+PjBdLHA9MTZ9cmV0dXJuIDB9LGZ1bmN0aW9uIHV2KGwsYyl7dmFyIG0sZj0wLHA9MDttPTcy''@;'; put 'put ''KyhsfD0wKXwwLHA9Y3w9MDtlOmZvcig7Oyl7c3dpdGNoKGY9MHx1ZVtwPj4wXSwwfChsPShsPTB8dWVbcCsxPj4wXSk8PDI0Pj4yND8wfHMwKGwsZik6MHxidFttKygyNTUmZik+PjBdKSl7Y2FzZSA1OmNhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMzpjYXNlIDIyOmNh''@;'; put 'put ''c2UgMjk6bD0yO2JyZWFrO2Nhc2UgNjpsPTM7YnJlYWs7Y2FzZSA3Omw9NDticmVhaztkZWZhdWx0OmJyZWFrIGV9cD1wK2x8MH1yZXR1cm4gcC1jfDB9LGZ1bmN0aW9uIFdLKGwsYyl7Y3w9MDt2YXIgcCxmPTA7cD03MisobHw9MCl8MDtlOmZvcig7Oyl7c3dpdGNoKGY9MHx1ZVtjPj4wXSww''@;'; put 'put ''fChsPShsPTB8dWVbYysxPj4wXSk8PDI0Pj4yND8wfHMwKGwsZik6MHxidFtwKygyNTUmZik+PjBdKSl7Y2FzZSAyMTpjYXNlIDk6Y2FzZSAxMDpicmVhaztkZWZhdWx0OmJyZWFrIGV9Yz1jKzJ8MH1yZXR1cm4gMHxjfSxmdW5jdGlvbiBVSyhsLGMpe2x8PTA7dmFyIGY9MCxwPTA7bD00Kyhj''@;'; put 'put ''fD0wKXwwO2U6ZG97aWYoMD09KDB8dWVbYys1Pj4wXSkmJjEyMD09KDB8dWVbbD4+MF0pKWZvcihjPWMrNnwwLGw9MDs7KXt0OmZvcig7Oyl7aWYoISgwfHVlW2MrMT4+MF0pKXtpZigoZj0wfHVlW2M+PjBdKTw8MjQ+PjI0PT01OSl7cD0xNzticmVhayBlfXN3aXRjaCgwfChmPWY8PDI0Pj4y''@;'; put 'put ''NCkpe2Nhc2UgNTc6Y2FzZSA1NjpjYXNlIDU1OmNhc2UgNTQ6Y2FzZSA1MzpjYXNlIDUyOmNhc2UgNTE6Y2FzZSA1MDpjYXNlIDQ5OmNhc2UgNDg6cD04O2JyZWFrIHQ7Y2FzZSA3MDpjYXNlIDY5OmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDY2OmNhc2UgNjU6cD05O2JyZWFrIHQ7Y2FzZSAxMDI6''@;'; put 'put ''Y2FzZSAxMDE6Y2FzZSAxMDA6Y2FzZSA5OTpjYXNlIDk4OmNhc2UgOTc6cD0xMDticmVhayB0fX1jPWMrMnwwfWlmKDg9PSgwfHApPyhwPTAsbD1mKy00OHxsPDw0KTo5PT0oMHxwKT8ocD0wLGw9KGw8PDQpLTU1K2Z8MCk6MTA9PSgwfHApJiYocD0wLGw9KGw8PDQpLTg3K2Z8MCksISgoMHxs''@;'; put 'put ''KTwxMTE0MTEyKSl7bD0tMTticmVha31jPWMrMnwwfWVsc2UgZj1sLGw9MCxwPTEzfXdoaWxlKDApO2U6ZG97aWYoMTM9PSgwfHApKWZvcig7Oyl7aWYocD0wLDB8dWVbZisxPj4wXSljPS0xO2Vsc2V7aWYoKGM9MHx1ZVtmPj4wXSk8PDI0Pj4yND09NTkpe3A9MTc7YnJlYWsgZX1jPWM8PDI0''@;'; put 'put ''Pj4yNH1pZigoMHwobD0oMTAqbHwwKS00OCtjfDApKT49MTExNDExMil7bD0tMTticmVha31mPWYrMnwwLHA9MTN9fXdoaWxlKDApO3JldHVybiAxNz09KDB8cCkmJihsPTB8VGQobCkpLDB8bH0sVG4sZnVuY3Rpb24gd1kobCxjKXtsfD0wLGN8PTA7dmFyIEcscGUsbWUsYmUsT2UsTGUsQmUs''@;'; put 'put ''SGUsamUsZXQscnQsR2UsbHQsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEs9MDtsdD1vZSxvZT1vZSs2MjR8MCxqZT1sdCs1ODR8MCxIZT1sdCs1NDR8MCxmPWx0KzE5MnwwLE9lPWx0LGFbKGJlPTE2KyhtZT1sdCs5NnwwKXwwKT4+Ml09cGU9bHQrMzY4fDAsYVso''@;'; put 'put ''TGU9T2UrMTZ8MCk+PjJdPWYscnQ9MHxhW2M+PjJdLHA9MTUmKGM9MHxhWzE2NCsoRz0wfGFbKEJlPTE2KyhHZT0wfGFbbD4+Ml0pfDApPj4yXSk+PjJdKSxtPTE1JmFbMTY0KyhsPTB8YVsoZXQ9cnQrMTZ8MCk+PjJdKT4+Ml07ZG97aWYoKDB8bSk9PSgwfHApKXtpZihSPTB8bHkoR2UpLEs9''@;'; put 'put ''MHxseShydCksKDB8KEE9KDB8KEE9KDB8YVsyMzIrKHA9MHxhWzE2KygwfGFbKDM9PSgwfChtPTMmKE09MHxhW1I+PjJdKSkpP1I6Uis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzMisobT0wfGFbMTYrKDB8YVsoMj09KDB8bSk/UjpSKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKXww''@;'; put 'put ''KSk+LTE/QTowLUF8MCkpIT0oMHwodz0oMHwodz0oMHxhWzIzMisoYj0wfGFbMTYrKDB8YVsoMz09KDB8KGs9MyYoRD0wfGFbSz4+Ml0pKSk/SzpLKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKyhrPTB8YVsxNisoMHxhWygyPT0oMHxrKT9LOksrLTQ4fDApKzQwPj4yXSk+PjJd''@;'; put 'put ''KT4+Ml0pfDApKT4tMT93OjAtd3wwKSkpe2w9QS13fDA7YnJlYWt9aWYoKDB8KG09KDB8KG09fn4oK19bcCsxNj4+M10tK19bbSsxNj4+M10pKSk+LTE/bTowLW18MCkpIT0oMHwocD0oMHwocD1+figrX1tiKzE2Pj4zXS0rX1trKzE2Pj4zXSkpKT4tMT9wOjAtcHwwKSkpe2w9bS1wfDA7YnJl''@;'; put 'put ''YWt9aWYoKDB8KG09TT4+PjQpKSE9KDB8KHA9RD4+PjQpKSl7bD1tLXB8MDticmVha31pZigwfHVlW0crNDQ+PjBdP209R2U6KG09Yz0wPT0oMHx1ZVtHKzg0Pj4wXSk/UjpHZSxjPTB8YVsxNjQrKDB8YVtjKzE2Pj4yXSk+PjJdKSxwPW0rMTZ8MCwzMiZjKXtEbygwfHBlLDB8YVtwPj4yXSwx''@;'; put 'put ''NzYpLHc9bSxiPShBPW1lKSs0OHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8YikpO2FbYmU+PjJdPXBlLGFbKDM9PSgwfChBPTMmYVttZT4+Ml0pKT9tZTptZSs0OHwwKSs0MD4+Ml09YVsoMj09KDB8KHc9MyZhW20+PjJdKSk/bTptKy00OHww''@;'; put 'put ''KSs0MD4+Ml0sYVsoMj09KDB8QSk/bWU6bWUrLTQ4fDApKzQwPj4yXT1hWygzPT0oMHx3KT9tOm0rNDh8MCkrNDA+PjJdLHc9NTYrKDB8YVtwPj4yXSl8MCxiPTQwKyhBPXBlKzE2fDApfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7dz0x''@;'; put 'put ''NisoMHxhW3A+PjJdKXwwLGI9NDArKEE9cGUrNTZ8MCl8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTt1ZVtwZSsxMTI+PjBdPTEsYVtwZSsxMTY+PjJdPW0sbT1tZSxsPTB8YVtldD4+Ml19aWYoMHx1ZVtsKzQ0Pj4wXT9wPXJ0OihwPWw9''@;'; put 'put ''MD09KDB8dWVbbCs4ND4+MF0pP0s6cnQsbD0wfGFbbCsxNj4+Ml0pLGM9cCsxNnwwLDMyJmFbbCsxNjQ+PjJdKXtEbygwfGYsMHxhW2M+PjJdLDE3Niksdz1wLGI9KEE9T2UpKzQ4fDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7YVtMZT4+''@;'; put 'put ''Ml09ZixhWygzPT0oMHwoQT0zJmFbT2U+PjJdKSk/T2U6T2UrNDh8MCkrNDA+PjJdPWFbKDI9PSgwfCh3PTMmYVtwPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdLGFbKDI9PSgwfEEpP09lOk9lKy00OHwwKSs0MD4+Ml09YVsoMz09KDB8dyk/cDpwKzQ4fDApKzQwPj4yXSx3PTU2KygwfGFbYz4+''@;'; put 'put ''Ml0pfDAsYj00MCsoQT1mKzE2fDApfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7dz0xNisoMHxhW2M+PjJdKXwwLGI9NDArKEE9Zis1NnwwKXwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8''@;'; put 'put ''YikpO3VlW2YrMTEyPj4wXT0xLGFbZisxMTY+PjJdPXB9ZWxzZSBmPWw7bD1mKzE2fDAsdz0xNisoYz0wfGFbbSsxNj4+Ml0pfDAsYj0oQT1IZSkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTt3PWwsYj0oQT1qZSkrNDB8MDtkb3th''@;'; put 'put ''W0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTtpZighKGw9MHxTbChIZSxqZSkpKXtsPWYrNTZ8MCx3PWMrNTZ8MCxiPShBPUhlKSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8YikpO3c9bCxiPShB''@;'; put 'put ''PWplKSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8YikpO2lmKCEobD0wfFNsKEhlLGplKSkpe2lmKCgwfChjPTE5MiZhWzE2NCsoMHxhW0JlPj4yXSk+PjJdKSk9PSgwfChsPTE5MiZhWzE2NCsoMHxhW2V0Pj4yXSk+PjJdKSkpe2w9KCgw''@;'; put 'put ''fGFbR2U+PjJdKT4+PjQpLSgoMHxhW3J0Pj4yXSk+Pj40KXwwO2JyZWFrfWw9Yy1sfDA7YnJlYWt9fX1lbHNlIGw9bS1wfDB9d2hpbGUoMCk7cmV0dXJuIG9lPWx0LDB8bH0sZnVuY3Rpb24gdjBlKGwsYyl7dmFyIGYscD0wLG09MCxBPTAsdz0wO3JldHVybiBmPTB8YVs5NisoMHxhWzE2Kygw''@;'; put 'put ''fGFbKGx8PTApPj4yXSk+PjJdKT4+Ml0sYz0wIT0oMHwobD0wfGFbOTYrKDB8YVsxNisoMHxhWyhjfD0wKT4+Ml0pPj4yXSk+PjJdKSksMHwoZj8hY3x8KHc9K19bZiszMj4+M10sQT0rX1tsKzMyPj4zXSwobT0rX1tmKzI0Pj4zXSk+KHA9K19bbCsyND4+M10pKT8tMTptPHA/MTp3PkE/LTE6''@;'; put 'put ''dzxBJjE6MSZjKX0sZnVuY3Rpb24gYjBlKGwsYyl7cmV0dXJuKDB8YVsobHw9MCk+PjJdKS0oMHxhWyhjfD0wKT4+Ml0pfDB9LGZ1bmN0aW9uIHhJKGwsYyl7cmV0dXJuKCgwfGFbYVsobHw9MCk+PjJdPj4yXSk+Pj40KS0oKDB8YVthWyhjfD0wKT4+Ml0+PjJdKT4+PjQpfDB9LGZ1bmN0aW9u''@;'; put 'put ''IFlZKGwsYyl7cmV0dXJuKDB8YVsyMzYrKDB8YVsxNisoMHxhWyhsfD0wKT4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzNisoMHxhWzE2KygwfGFbKGN8PTApPj4yXSk+PjJdKT4+Ml0pfDB9LGZ1bmN0aW9uIG5vZShsLGMpe3ZhciBmLHAsbTtyZXR1cm4oKHA9K19bKG09MHxhWzQ2NzUwXSkrKDQw''@;'; put 'put ''KigwfGFbKGN8PTApPj4yXSl8MCkrMjQ+PjNdKT4oZj0rX1ttKyg0MCooMHxhWyhsfD0wKT4+Ml0pfDApKzI0Pj4zXSkmMSktKHA8ZiYxKXwwfSxmdW5jdGlvbiB0b2UobCxjKXtyZXR1cm4gY3w9MCxsPTB8dlUoMHxhWyhsfD0wKT4+Ml0pLCgoMHwoYz0wfHZVKDB8YVtjPj4yXSkpKTwoMHxs''@;'; put 'put ''KSYxKS0oKDB8Yyk+KDB8bCkmMSl8MH0sZnVuY3Rpb24gZ29lKGwsYyl7dmFyIHAsQSx3LGIsZj0wLG09MDtpZihiPW9lLG9lPW9lKzgwfDAsdz1iKzQwfDAsQT1iLHA9MHxhW2FbMTcyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdPj4yXSxsPTB8YVthWzE3MisoMHxhWzE2KyhjfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXT4+Ml0sKDB8RVUoYykpPDwyND4+MjQhPTAmJigwfGFbKDM9PSgzJmFbcD4+Ml18MCk/cDpwKzQ4fDApKzQwPj4yXSk9PSgwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSkmJigwfFRVKHAsbCkpPDwyND4+MjQhPTApe2Y9MTYrKDB8YVtsKzE2Pj4yXSl8MCxsPTE2''@;'; put 'put ''KygwfGFbcCsxNj4+Ml0pfDAsYz0obT1BKSs0MHwwO2Rve2FbbT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8YykpO2w9ZixjPShtPXcpKzQwfDA7ZG97YVttPj4yXT1hW2w+PjJdLG09bSs0fDAsbD1sKzR8MH13aGlsZSgoMHxtKTwoMHxjKSk7bD0wPT0oMHxT''@;'; put 'put ''bChBLHcpKSYxfWVsc2UgbD0wO3JldHVybiBvZT1iLDB8bH0sZnVuY3Rpb24gck4obCxjKXt2YXIgcCxBLHcsYixmPTAsbT0wO2lmKGI9b2Usb2U9b2UrODB8MCx3PWIrNDB8MCxBPWIscD0wfGFbYVsxODArKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0+PjJdLGw9MHxhW2FbMTgwKygwfGFbMTYr''@;'; put 'put ''KGN8PTApPj4yXSk+PjJdPj4yXSwoMHxuTihjKSk8PDI0Pj4yNCE9MCYmKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSk9PSgwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pJiYoMHxUVShwLGwpKTw8MjQ+PjI0IT0wKXtmPTU2KygwfGFbbCsx''@;'; put 'put ''Nj4+Ml0pfDAsbD01NisoMHxhW3ArMTY+PjJdKXwwLGM9KG09QSkrNDB8MDtkb3thW20+PjJdPWFbbD4+Ml0sbT1tKzR8MCxsPWwrNHwwfXdoaWxlKCgwfG0pPCgwfGMpKTtsPWYsYz0obT13KSs0MHwwO2Rve2FbbT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8''@;'; put 'put ''YykpO2w9MD09KDB8U2woQSx3KSkmMX1lbHNlIGw9MDtyZXR1cm4gb2U9YiwwfGx9LGZ1bmN0aW9uIHJYKGwsYyl7dmFyIGY9MCxwPTA7cmV0dXJuIDB8KGw9KGY9K19bOCsobHw9MCk+PjNdKT4ocD0rX1s4KyhjfD0wKT4+M10pPzE6ZjxwPy0xOihwPStfW2wrMTY+PjNdKT4oZj0rX1tjKzE2''@;'; put 'put ''Pj4zXSk/MToocDxmKTw8MzE+PjMxKX0sZnVuY3Rpb24gcXNlKGwsYyl7dmFyIGYscDtyZXR1cm4gMHwoKHA9K19bKGx8PTApPj4zXSk+KGY9K19bKGN8PTApPj4zXSk/MToocDxmKTw8MzE+PjMxKX0sZnVuY3Rpb24gdjJlKGwsYyl7dmFyIGY9MCxwPTA7cmV0dXJuIDB8KGw9KGY9K19bOCso''@;'; put 'put ''bD0wfGFbKGx8PTApPj4yXSk+PjNdKTwocD0rX1s4KyhjPTB8YVsoY3w9MCk+PjJdKT4+M10pPy0xOmY+cD8xOihwPStfW2w+PjNdKTwoZj0rX1tjPj4zXSk/LTE6cD5mJjEpfSxmdW5jdGlvbiB6OWUobCxjKXtyZXR1cm4gMHwoKDB8YVszNisobHw9MCk+PjJdKT4oMHxhWzQ0KyhjfD0wKT4+''@;'; put 'put ''Ml0pPzA6KDB8YVtjKzM2Pj4yXSk8PSgwfGFbbCs0ND4+Ml0pJjEpfSxmdW5jdGlvbiBHOWUobCxjKXtyZXR1cm4gMHwoKDB8YVszMisobHw9MCk+PjJdKT4oMHxhWzQwKyhjfD0wKT4+Ml0pPzA6KDB8YVtjKzMyPj4yXSk8PSgwfGFbbCs0MD4+Ml0pJjEpfSxmdW5jdGlvbiBCayhsLGMpe3Zh''@;'; put 'put ''ciBmLHA9MCxtPTAsQT0wO3JldHVybiBmPTMyKyhsfD0wKXwwLHA9MzIrKGN8PTApfDAsKDB8YVtsKzM2Pj4yXSk8PSgwfGFbYys0ND4+Ml0pJiYoMHxhW2MrMzY+PjJdKTw9KDB8YVtsKzQ0Pj4yXSk/KDB8YVtsKzQwPj4yXSk8KDB8YVtwPj4yXSk/bD0xOihBPShBPTB8VlYoZixwKSktKDB8''@;'; put 'put ''YVtjKzEyPj4yXSkrKDB8YVtsKzEyPj4yXSl8MCxtPSgwfChjPTB8YVtjKzE2Pj4yXSkpPCgwfChsPTB8YVtsKzE2Pj4yXSkpLGw9KDB8QSk8PSgocD0wfFBrKGYscCkpLShtP2w6YykrKG0/YzpsKXwwKSYxKTpsPTAsMHxsfSxmdW5jdGlvbiBQWChsLGMpe3ZhciBmLHA9MCxtPTAsQT0wO3Jl''@;'; put 'put ''dHVybiBwPTMyKyhjfD0wKXwwLCgwfGFbKGY9MzIrKGx8PTApfDApPj4yXSk8PSgwfGFbYys0MD4+Ml0pJiYoMHxhW3A+PjJdKTw9KDB8YVtsKzQwPj4yXSk/KDB8YVtsKzQ0Pj4yXSk8KDB8YVtjKzM2Pj4yXSk/bD0xOihBPShBPTB8UGsoZixwKSktKDB8YVtjKzE2Pj4yXSkrKDB8YVtsKzE2''@;'; put 'put ''Pj4yXSl8MCxtPSgwfChjPTB8YVtjKzEyPj4yXSkpPCgwfChsPTB8YVtsKzEyPj4yXSkpLGw9KDB8QSk8PSgocD0wfFZWKGYscCkpLShtP2w6YykrKG0/YzpsKXwwKSYxKTpsPTAsMHxsfSxWVixQayxmdW5jdGlvbiBTMmUobCxjKXt2YXIgZj0wLHA9MDtyZXR1cm4gMHwobD0oZj0rX1sobHw9''@;'; put 'put ''MCk+PjNdKTwocD0rX1soY3w9MCk+PjNdKT8tMTpmPnA/MToocD0rX1tsKzg+PjNdKTwoZj0rX1tjKzg+PjNdKT8tMTpwPmYmMSl9LGZ1bmN0aW9uIEpYKGwsYyl7dmFyIGYscCxtO3JldHVybiAwfCgocD0rV25bKG09MHxhWzQ2ODczXSkrKGFbKGx8PTApPj4yXTw8Mik+PjJdKTwoZj0rV25b''@;'; put 'put ''bSsoYVsoY3w9MCk+PjJdPDwyKT4+Ml0pPy0xOnA+ZiYxKX0sZnVuY3Rpb24gaUwobCxjKXtsfD0wO3ZhciBHLEsscGUsTGUsQmUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLG1lPTAsYmU9MCxPZT0wO2ZvcihCZT1vZSxvZT1vZSsxNnwwLHBlPUJlLEc9QmUrOHww''@;'; put 'put ''LEs9QmUrNHwwLGFbOCsoY3w9MCk+PjJdPTAsTGU9MHxRbihhW2M+PjJdPDwyKSxtPTB8YVtjPj4yXSxwPTA7ISgoMHxwKT49KDB8bSkpOylhW0xlKyhwPDwyKT4+Ml09bCsoMjQqcHwwKSxwPXArMXwwO0kxKExlLG0sNCw3OSksRD0wLEE9MCxtPTAsdz0wO2U6Zm9yKDs7KXtpZigoMHxEKT49''@;'; put 'put ''KDB8YVtjPj4yXSkpe2JlPTAsZj1BLE9lPXc7YnJlYWt9Zm9yKGFbRz4+Ml09cD0wfGFbKFI9TGUrKEQ8PDIpfDApPj4yXSxhW0s+PjJdPXA9KDB8YVsobD0wfGFbcCsxNj4+Ml0pPj4yXSk9PSgwfHApPzB8YVtsKzQ+PjJdOnArLTI0fDAsTT0wLGw9QSxrPXc7ISgoMHxNKT49Mik7KXtzd2l0''@;'; put 'put ''Y2goMHxEMmUoRyxLKSl7Y2FzZS0xOmZvcihBPTAsdz1sOyEoKDB8QSk+PSgwfGspKTspe2lmKDB8KGI9MHxMMmUoMHxhW3c+PjJdLHApKSl7YmU9YixmPWwsT2U9azticmVhayBlfUE9QSsxfDAsdz0wfGFbdys0Pj4yXX1BPTB8UW4oMTIpLGs/YVttKzQ+PjJdPUE6KG09MCxsPUEpLGFbQSs4''@;'; put 'put ''Pj4yXT1tLGFbQT4+Ml09cCxhW0ErND4+Ml09MCxhW3ArMjA+PjJdPUEsdz1rKzF8MDticmVhaztjYXNlIDE6aWYoIShBPTB8YVsocD1wKzIwfDApPj4yXSkpe21lPTE5O2JyZWFrIGV9ZG97aWYoMSE9KDB8aykpe2lmKCgwfEEpPT0oMHxsKSl7YVs4KyhsPTB8YVtsKzQ+PjJdKT4+Ml09MDti''@;'; put 'put ''cmVha31pZigoMHxBKT09KDB8bSkpe2FbNCsobT0wfGFbbSs4Pj4yXSk+PjJdPTA7YnJlYWt9YVs0Kyh3PTB8YVtBKzg+PjJdKT4+Ml09YVsoYj1BKzR8MCk+PjJdLGFbOCsoMHxhW2I+PjJdKT4+Ml09dzticmVha31sPTAsbT0wfXdoaWxlKDApO0h0KEEpLGFbcD4+Ml09MCxBPW0sdz1rKy0x''@;'; put 'put ''fDA7YnJlYWs7ZGVmYXVsdDpBPW0sdz1rfWFbSz4+Ml09bT0oMHwocD0wfGFbUj4+Ml0pKT09KDB8YVs0KyhtPTB8YVtwKzE2Pj4yXSk+PjJdKT8wfGFbbT4+Ml06cCsyNHwwLE09TSsxfDAsbT1BLGs9d31EPUQrMXwwLEE9bCx3PWt9Zm9yKDE5PT0oMHxtZSkmJihYcigxLDkzNzI3LHBlKSxX''@;'; put 'put ''ZSgxODc0OTYsMSkpLHA9MDshKCgwfHApPj0oMHxPZSkpOyltZT0wfGFbZis0Pj4yXSxIdChmKSxwPXArMXwwLGY9bWU7cmV0dXJuIEh0KExlKSxvZT1CZSwwfGJlfSxEMmUsZnVuY3Rpb24gbEFlKGwsYyl7dmFyIGY7cmV0dXJuIDB8KChmPStfW2FbKGx8PTApPj4yXT4+M10tK19bYVsoY3w9''@;'; put 'put ''MCk+PjJdPj4zXSk8MD8xOihmPjApPDwzMT4+MzEpfSxmdW5jdGlvbiAkMChsLGMpe3ZhciBmLHA7cmV0dXJuIDB8KChwPStfWzgrKGx8PTApPj4zXSk+KGY9K19bOCsoY3w9MCk+PjNdKT8tMTpwPGYmMSl9LGZ1bmN0aW9uIEhkKGwsYyl7cmV0dXJuIDB8bH0sZnVuY3Rpb24gJG1lKGwsYyl7''@;'; put 'put ''cmV0dXJuIGx8PTAsKDB8ZnIoY3w9MCkpIT0oMHxsKSYmKGM9MHxWbihsLGMsMCkpLDB8Y30sZnVuY3Rpb24gJEcobCxjKXtyZXR1cm4gbHw9MCwoMHxmcihjfD0wKSkhPSgwfGwpJiYoYz0wfE9kKGwsYywwKSksMHxjfSxmdW5jdGlvbiBmN2UobCxjKXt2YXIgZjtyZXR1cm4gZj0wfHVlWyhs''@;'; put 'put ''PTE1NysoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4wXSwoMHwoY3w9MCkpPj0wJiYodWVbbD4+MF09YyksMHxmfSx6dCxsMCxmdW5jdGlvbiBlcChsLGMpe3ZhciBmO3JldHVybiBmPTB8dWVbKGw9OCsoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4wXSwoMHwoY3w9MCkpPj0wJiYodWVbbD4+MF09''@;'; put 'put ''YyksMHxmfSxmdW5jdGlvbiBrVyhsLGMpe3JldHVybigwfGFbYVsoY3w9MCk+PjJdPj4yXSktKDB8YVthWyhsfD0wKT4+Ml0+PjJdKXwwfSxmdW5jdGlvbiBGRihsLGMpe3ZhciBmO3JldHVybiAwfCgoMHwobD0wfGFbKGY9MHxhWzQ3MDU2XSkrKGFbMTYrKDB8YVsobHw9MCk+PjJdKT4+Ml08''@;'; put 'put ''PDIpPj4yXSkpPigwfChjPTB8YVtmKyhhWzE2KygwfGFbKGN8PTApPj4yXSk+PjJdPDwyKT4+Ml0pKT8xOigoMHxsKTwoMHxjKSk8PDMxPj4zMSl9LGZ1bmN0aW9uIF9XKGwsYyl7dmFyIGYscDtyZXR1cm4gMHwoKHA9K19bKGw9MHxhWyhsfD0wKT4+Ml0pPj4zXSsgK19bbCs4Pj4zXSk8KGY9''@;'; put 'put ''K19bKGM9MHxhWyhjfD0wKT4+Ml0pPj4zXSsgK19bYys4Pj4zXSk/MToocD5mKTw8MzE+PjMxKX0sZnVuY3Rpb24gT3JlKGwsYyl7dmFyIGYscCxtO3JldHVybihwPStfWzgrKGN8PTApPj4zXS0rX1s4KyhtPTB8YVsobHw9MCk+PjJdKT4+M10pKnArKGY9K19bYz4+M10tK19bbT4+M10pKmY8''@;'; put 'put ''PStfW2FbbCs0Pj4yXT4+M118MH0sX3UsQVosZnVuY3Rpb24gSlEobCxjKXtyZXR1cm4gMHxBMCgwfGFbKGx8PTApPj4yXSwwfGFbKGN8PTApPj4yXSl9LGZ1bmN0aW9uIEVsZShsLGMpe3JldHVybiAwfFppKDB8YVsobHw9MCk+PjJdLDB8YVsoY3w9MCk+PjJdKX0sTGksZnVuY3Rpb24gWGIo''@;'; put 'put ''bCxjKXtsfD0wLGN8PTA7dmFyIEEsdyxiLGssTSxtZSxiZSxPZSxMZSxCZSxIZSxmPTAscD0wLG09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsTXQ9MCxrdD0wO2ZvcihIZT1vZSxvZT1vZSsxMTJ8MCxPZT1IZSs2NHwwLGJlPUhlKzk2fDAsTT1IZSsz''@;'; put 'put ''MnwwLExlPUhlLEJlPTB8bXIoMjgpLGM9MHxObyhsKSxhWyhtZT1CZSs0fDApPj4yXT1jLGM9MHxtcig3MipjfDApLGFbKHBlPUJlKzEyfDApPj4yXT1jLF9bKHA9TGUrOHwwKT4+M109MTc5NzY5MzEzNDg2MjMxNTdlMjkyLF9bTGU+PjNdPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfWyhtPUxl''@;'; put 'put ''KzI0fDApPj4zXT0tMTc5NzY5MzEzNDg2MjMxNTdlMjkyLF9bKEE9TGUrMTZ8MCk+PjNdPS0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsdz1NKzE2fDAsYj1NKzh8MCxrPU0rMjR8MCxmPTB8THQobCksRD0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsUj0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsRz0tMTc5''@;'; put 'put ''NzY5MzEzNDg2MjMxNTdlMjkyLEs9LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmOylqZT0oamU9LjUqK19bODArKE10PTB8YVsobHQ9ZisxNnwwKT4+Ml0pPj4zXSk8MT8xOmplLF9bTT4+M109R2U9KGt0PStfW010KzE2Pj4zXSktKGV0PShldD0uNSooK19bTXQrOTY+PjNdKyArX1tNdCs4OD4+''@;'; put 'put ''M10pKTwxPzE6ZXQpLF9bdz4+M109ZXQ9a3QrZXQsX1tiPj4zXT1ydD0oa3Q9K19bTXQrMjQ+PjNdKS1qZSxfW2s+PjNdPWplPWt0K2plLF9bTGU+PjNdPUdlPStfWyhEPEdlP0xlOk0pPj4zXSxfW3A+PjNdPXJ0PStfWyhSPHJ0P0xlOk0pKzg+PjNdLF9bQT4+M109ZXQ9K19bKEc+ZXQ/TGU6''@;'; put 'put ''TSkrMTY+PjNdLF9bbT4+M109amU9K19bKEs+amU/TGU6TSkrMjQ+PjNdLGFbKE10PWMrNDB8MCk+PjJdPWFbTT4+Ml0sYVtNdCs0Pj4yXT1hW00rND4+Ml0sYVtNdCs4Pj4yXT1hW00rOD4+Ml0sYVtNdCsxMj4+Ml09YVtNKzEyPj4yXSxhW010KzE2Pj4yXT1hW00rMTY+PjJdLGFbTXQrMjA+''@;'; put 'put ''PjJdPWFbTSsyMD4+Ml0sYVtNdCsyND4+Ml09YVtNKzI0Pj4yXSxhW010KzI4Pj4yXT1hW00rMjg+PjJdLGFbYz4+Ml09MXxhW2M+PjJdLGFbMTEyKygwfGFbbHQ+PjJdKT4+Ml09YyxjPWMrNzJ8MCxmPTB8enQobCxmKSxEPUdlLFI9cnQsRz1ldCxLPWplO2ZvcihfW0xlPj4zXT1EKy0zNixf''@;'; put 'put ''W3A+PjNdPVIrLTM2LF9bQT4+M109RyszNixfW20+PjNdPUsrMzYsTXQ9MHxhW3BlPj4yXSxtPTB8YVttZT4+Ml0sYVtPZT4+Ml09YVtMZT4+Ml0sYVtPZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbT2UrOD4+Ml09YVtMZSs4Pj4yXSxhW09lKzEyPj4yXT1hW0xlKzEyPj4yXSxhW09lKzE2Pj4yXT1h''@;'; put 'put ''W0xlKzE2Pj4yXSxhW09lKzIwPj4yXT1hW0xlKzIwPj4yXSxhW09lKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW09lKzI4Pj4yXT1hW0xlKzI4Pj4yXSxtPTB8ZnVuY3Rpb24gX0IobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIGssTSxSLEcsSyxtPTAsQT0wLHc9MCxiPTAsRD0wLHBlPTA7Zm9y''@;'; put 'put ''KEs9b2Usb2U9b2UrMzJ8MCx3PUssbT00KyhiPShjfD0wKTw8Mil8MCxHPTB8UW4oNTYqKGI9Yis1fDApfDApLGI9MHxtcihiPDwyKSxrPTB8UW4oNzIqKEE9NSptfDEpfDApLE09MHxtcihEPUE8PDUpLEQ9MHxtcihEKSxhW3c+PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFbcCs0Pj4yXSxhW3cr''@;'; put 'put ''OD4+Ml09YVtwKzg+PjJdLGFbdysxMj4+Ml09YVtwKzEyPj4yXSxhW3crMTY+PjJdPWFbcCsxNj4+Ml0sYVt3KzIwPj4yXT1hW3ArMjA+PjJdLGFbdysyND4+Ml09YVtwKzI0Pj4yXSxhW3crMjg+PjJdPWFbcCsyOD4+Ml0sY3UobCxjLHcsRywwKSxmWigxNzMpLHU2KG0sYikscWIobSxHLGIs''@;'; put 'put ''QSxrKSxSPTB8YzYobSxHLGssMCxNKSxhW3c+PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFbcCs0Pj4yXSxhW3crOD4+Ml09YVtwKzg+PjJdLGFbdysxMj4+Ml09YVtwKzEyPj4yXSxhW3crMTY+PjJdPWFbcCsxNj4+Ml0sYVt3KzIwPj4yXT1hW3ArMjA+PjJdLGFbdysyND4+Ml09YVtwKzI0Pj4y''@;'; put 'put ''XSxhW3crMjg+PjJdPWFbcCsyOD4+Ml0sY3UobCxjLHcsRywxKSx1NihtLGIpLHFiKG0sRyxiLEEsayksbT0wfGM2KG0sRyxrLDEsRCksQT0wfG1yKDB8dnIoUjw8NSxtKSksYz0wLGw9MDshKCgwfGMpPj0oMHxtKSk7KXtmb3Iodz1EKyhjPDw1KXwwLHA9MDshKCgwfHApPj0oMHxSKSk7KXBl''@;'; put 'put ''PWwrKDAhPSgwfGY2KEErKGw8PDUpfDAsdyxNKyhwPDw1KXwwKSkmMSl8MCxwPXArMXwwLGw9cGU7Yz1jKzF8MH1yZXR1cm4gcGU9MHxsMChBLGw8PDUpLEh0KEcpLEh0KGIpLEh0KGspLEh0KE0pLEh0KEQpLGFbZj4+Ml09bCxvZT1LLDB8cGV9KE10LG0sYmUsT2UpLDEmYVs0NzMyM118MCYm''@;'; put 'put ''KHBlPTB8YVtwZT4+Ml0sbHQ9MHxhW21lPj4yXSxNdD0wfGFbYmU+PjJdLGFbT2U+PjJdPWFbTGU+PjJdLGFbT2UrND4+Ml09YVtMZSs0Pj4yXSxhW09lKzg+PjJdPWFbTGUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtPZSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtPZSsyMD4+Ml09''@;'; put 'put ''YVtMZSsyMD4+Ml0sYVtPZSsyND4+Ml09YVtMZSsyND4+Ml0sYVtPZSsyOD4+Ml09YVtMZSsyOD4+Ml0sZnVuY3Rpb24gczYobCxjLGYscCxtKXtsfD0wLGN8PTAscHw9MCxtfD0wO3ZhciBBLHcsYixrLE0sRCxSLEcsSyxwZSxtZSxiZT0wLE9lPTAsTGU9MDtmb3IoSz1vZSxvZT1vZSsxMjh8''@;'; put 'put ''MCxHPUsrOTZ8MCxSPUsrNjR8MCxiPUsrMzJ8MCxwZT1LKzE2fDAsbWU9SyxNPStfWzE2KyhmfD0wKT4+M10sRD0rX1tmPj4zXSxrPStfW2YrMjQ+PjNdLEE9K19bZis4Pj4zXSxfdSgxMzc3NzAsdz0wfGFbMTU3MTJdKSxhW21lPj4yXT0xMCxhW21lKzQ+PjJdPTEwLGFbbWUrOD4+Ml09fn4o''@;'; put 'put ''TSsxMC1EKSxhW21lKzEyPj4yXT1+fihrKzEwLUEpLFQwKHcsMTM4MjAwLG1lKSxfW3BlPj4zXT0xMC1ELF9bcGUrOD4+M109MTAtQSxUMCh3LDEzODI0OCxwZSksX3UoMTM4MjY1LHcpLGY9MDshKCgwfGYpPj0oMHxjKSk7KUxlPStfW2wrKDcyKmZ8MCkrNDg+PjNdLE9lPStfW2wrKDcyKmZ8''@;'; put 'put ''MCkrNTY+PjNdLGJlPStfW2wrKDcyKmZ8MCkrNjQ+PjNdLF9bYj4+M109K19bbCsoNzIqZnwwKSs0MD4+M10sX1tiKzg+PjNdPUxlLF9bYisxNj4+M109T2UsX1tiKzI0Pj4zXT1iZSxUMCh3LDEzODI4NCxiKSxmPWYrMXwwO2ZvcihfdSgxMzgzMDIsdyksZj0wOyEoKDB8Zik+PSgwfG0pKTsp''@;'; put 'put ''YmU9K19bcCsoZjw8NSkrOD4+M10sT2U9K19bcCsoZjw8NSkrMTY+PjNdLExlPStfW3ArKGY8PDUpKzI0Pj4zXSxfW1I+PjNdPStfW3ArKGY8PDUpPj4zXSxfW1IrOD4+M109YmUsX1tSKzE2Pj4zXT1PZSxfW1IrMjQ+PjNdPUxlLFQwKHcsMTM4MzIxLFIpLGY9ZisxfDA7X3UoMTM4MzM5LHcp''@;'; put 'put ''LF9bRz4+M109RCxfW0crOD4+M109QSxfW0crMTY+PjNdPU0sX1tHKzI0Pj4zXT1rLFQwKHcsMTM4MzIxLEcpLF91KDEzODA4Nix3KSxvZT1LfShwZSxsdCxPZSxtLE10KSksYVsocD1CZSs4fDApPj4yXT0wfG1yKDcyKigwfGFbYmU+PjJdKXwwKSxhW0JlPj4yXT1hW2JlPj4yXSxmPTB8YVti''@;'; put 'put ''ZT4+Ml0sYz0wOyEoKDB8Yyk+PSgwfGYpKTspYVsoTXQ9KDB8YVtwPj4yXSkrKDcyKmN8MCkrNDB8MCk+PjJdPWFbKGx0PW0rKGM8PDUpfDApPj4yXSxhW010KzQ+PjJdPWFbbHQrND4+Ml0sYVtNdCs4Pj4yXT1hW2x0Kzg+PjJdLGFbTXQrMTI+PjJdPWFbbHQrMTI+PjJdLGFbTXQrMTY+PjJd''@;'; put 'put ''PWFbbHQrMTY+PjJdLGFbTXQrMjA+PjJdPWFbbHQrMjA+PjJdLGFbTXQrMjQ+PjJdPWFbbHQrMjQ+PjJdLGFbTXQrMjg+PjJdPWFbbHQrMjg+PjJdLGM9YysxfDA7cmV0dXJuIEh0KG0pLGFbT2U+PjJdPWFbTGU+PjJdLGFbT2UrND4+Ml09YVtMZSs0Pj4yXSxhW09lKzg+PjJdPWFbTGUrOD4+''@;'; put 'put ''Ml0sYVtPZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtPZSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtPZSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtPZSsyND4+Ml09YVtMZSsyND4+Ml0sYVtPZSsyOD4+Ml09YVtMZSsyOD4+Ml0sYVtCZSsxNj4+Ml09MHxmdW5jdGlvbiB6RShsLGMpe2N8PTA7dmFyIHBl''@;'; put 'put ''LGJlLExlLEhlLGplLGV0LHJ0LGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLG1lPTAsT2U9MCxCZT0wLEdlPTAsbHQ9MCxNdD0wO2ZvcihydD1vZSxvZT1vZSszMnwwLGJlPXJ0KzE2fDAsaz1ydCxqZT0wfGZ1bmN0aW9uIFZSKGwpe3ZhciBjO3JldHVy''@;'; put 'put ''biBsfD0wLGM9MHxtcigyNCksYVtjPj4yXT0wLGFbYysxNj4+Ml09MHxtcig0MCpsfDApLDB8Y30oKEJlPTB8YVsobHw9MCk+PjJdKTw8MnwyKSxldD0wfEFzKDU1OTYwLDB8YVs0NTgxXSksTGU9MHxBcyg1NTk5NiwwfGFbNDU4MV0pLEJlPTB8bXIoQmU8PDcpLG09MHxtcihhW2w+PjJdPDw0''@;'; put 'put ''KSxIZT1sKzh8MCxBPWMrMTZ8MCx3PWsrOHwwLGI9YysyNHwwLE09Yys4fDAsZj0wOyEoKDB8Zik+PSgwfGFbbD4+Ml0pKTspUj0oRD0wfGFbSGU+PjJdKSsoNzIqZnwwKXwwLGFbRCsoNzIqZnwwKSszMj4+Ml09NCxhWyhHPUQrKDcyKmZ8MCkrMzZ8MCk+PjJdPW0rKGY8PDI8PDIpLEs9RCso''@;'; put 'put ''NzIqZnwwKSs0MHwwLChwPStfW0QrKDcyKmZ8MCkrNTY+PjNdKTwrX1tBPj4zXSYmKF9baz4+M109cCxfW3c+PjNdPStfW0QrKDcyKmZ8MCkrNDg+PjNdLGFbYmU+PjJdPWFbaz4+Ml0sYVtiZSs0Pj4yXT1hW2srND4+Ml0sYVtiZSs4Pj4yXT1hW2srOD4+Ml0sYVtiZSsxMj4+Ml09YVtrKzEy''@;'; put 'put ''Pj4yXSxtZT0wfFlsKGplLGV0LGJlLEJlLDEpLGFbbWUrMjA+PjJdPVIsYVthW0c+PjJdPj4yXT1tZSksKHA9K19bRCsoNzIqZnwwKSs2ND4+M10pPCtfW2I+PjNdJiYoX1trPj4zXT0rX1tLPj4zXSxfW3c+PjNdPXAsYVtiZT4+Ml09YVtrPj4yXSxhW2JlKzQ+PjJdPWFbays0Pj4yXSxhW2Jl''@;'; put 'put ''Kzg+PjJdPWFbays4Pj4yXSxhW2JlKzEyPj4yXT1hW2srMTI+PjJdLG1lPTB8WWwoamUsTGUsYmUsQmUsMCksYVttZSsyMD4+Ml09UixhWzQrKDB8YVtHPj4yXSk+PjJdPW1lKSwrX1tLPj4zXT4rX1tjPj4zXSYmKGFbYmU+PjJdPWFbSz4+Ml0sYVtiZSs0Pj4yXT1hW0srND4+Ml0sYVtiZSs4''@;'; put 'put ''Pj4yXT1hW0srOD4+Ml0sYVtiZSsxMj4+Ml09YVtLKzEyPj4yXSxtZT0wfFlsKGplLGV0LGJlLEJlLDEpLGFbbWUrMjQ+PjJdPVIsYVs4KygwfGFbRz4+Ml0pPj4yXT1tZSksK19bRCsoNzIqZnwwKSs0OD4+M10+K19bTT4+M10mJihhW2JlPj4yXT1hW0s+PjJdLGFbYmUrND4+Ml09YVtLKzQ+''@;'; put 'put ''PjJdLGFbYmUrOD4+Ml09YVtLKzg+PjJdLGFbYmUrMTI+PjJdPWFbSysxMj4+Ml0sbWU9MHxZbChqZSxMZSxiZSxCZSwwKSxhW21lKzI0Pj4yXT1SLGFbMTIrKDB8YVtHPj4yXSk+PjJdPW1lKSxmPWYrMXwwO2ZvcihSPTB8bXIoYVtqZT4+Ml08PDIpLHBlPWwrNHwwLG1lPWwrMTJ8MCxHPWJl''@;'; put 'put ''Kzh8MCxNPTAsSz0wLEQ9MDs7KXtpZigoMHxEKT49KDB8KGY9MHxhW3BlPj4yXSkpKXtjPTA7YnJlYWt9Zm9yKHc9KEE9MHxhW21lPj4yXSkrKDcyKkR8MCl8MCxhWyhiPUErKDcyKkR8MCkrMzZ8MCk+PjJdPVIrKE08PDIpLGFbYmU+PjJdPWFbKGM9QSsoNzIqRHwwKSs0MHwwKT4+Ml0sYVti''@;'; put 'put ''ZSs0Pj4yXT1hW2MrND4+Ml0sYVtiZSs4Pj4yXT1hW2MrOD4+Ml0sYVtiZSsxMj4+Ml09YVtjKzEyPj4yXSxjPUErKDcyKkR8MCkrNTZ8MCxrPUErKDcyKkR8MCkrMzJ8MCxmPTB8bWlbNjMmYVtMZT4+Ml1dKExlLGJlLDUxMik7ZiYmK19bZis4Pj4zXTwrX1tjPj4zXTspbHQ9MHxhW2Y+PjJd''@;'; put 'put ''LEdlPTB8YVtiPj4yXSxhW2s+PjJdPTErKG09MHxhW2s+PjJdKSxhW0dlKyhtPDwyKT4+Ml09bHQsYVsyNCsoMHxhW2Y+PjJdKT4+Ml09dyxmPTB8bWlbNjMmYVtMZT4+Ml1dKExlLGYsOCk7Zm9yKG09QSsoNzIqRHwwKSs2NHwwLGY9MHxtaVs2MyZhW2V0Pj4yXV0oZXQsYmUsNTEyKTs7KXtp''@;'; put 'put ''ZighZil7T2U9MjA7YnJlYWt9aWYoISgrX1tmKzE2Pj4zXTwocD0rX1ttPj4zXSkpKWJyZWFrO2M9MHxhW2Y+PjJdLEdlPTB8YVtiPj4yXSxhW2s+PjJdPTErKGx0PTB8YVtrPj4yXSksYVtHZSsobHQ8PDIpPj4yXT1jLGFbMjQrKDB8YVtmPj4yXSk+PjJdPXcsZj0wfG1pWzYzJmFbZXQ+PjJd''@;'; put 'put ''XShldCxmLDgpfWZvcigyMD09KDB8T2UpJiYoT2U9MCxwPStfW20+PjNdKSxfW0c+PjNdPXAsYz1BKyg3MipEfDApKzU2fDAsZj0wfG1pWzYzJmFbTGU+PjJdXShMZSxiZSw1MTIpOzspe2lmKCFmKXtPZT0yNTticmVha31pZighKCtfW2YrOD4+M108KHA9K19bYz4+M10pKSlicmVhaztNdD0w''@;'; put 'put ''fGFbZj4+Ml0sR2U9MHxhW2I+PjJdLGFbaz4+Ml09MSsobHQ9MHxhW2s+PjJdKSxhW0dlKyhsdDw8Mik+PjJdPU10LGFbMjArKDB8YVtmPj4yXSk+PjJdPXcsZj0wfG1pWzYzJmFbTGU+PjJdXShMZSxmLDgpfWZvcigyNT09KDB8T2UpJiYoT2U9MCxwPStfW2M+PjNdKSxfW2JlPj4zXT1wLF9b''@;'; put 'put ''Rz4+M109K19bQSsoNzIqRHwwKSs0OD4+M10sZj0wfG1pWzYzJmFbZXQ+PjJdXShldCxiZSw1MTIpO2YmJitfW2YrMTY+PjNdPCtfW20+PjNdOylHZT0wfGFbZj4+Ml0sbHQ9MHxhW2I+PjJdLGFbaz4+Ml09MSsoTXQ9MHxhW2s+PjJdKSxhW2x0KyhNdDw8Mik+PjJdPUdlLGFbMjArKDB8YVtm''@;'; put 'put ''Pj4yXSk+PjJdPXcsZj0wfG1pWzYzJmFbZXQ+PjJdXShldCxmLDgpO009KE10PTB8YVtrPj4yXSkrTXwwLEs9KDB8TXQpPigwfEspP010OkssRD1EKzF8MH1mb3IoOyEoKDB8Yyk+PSgwfGYpKTspQjQoKDB8YVttZT4+Ml0pKyg3MipjfDApfDApLGM9YysxfDAsZj0wfGFbcGU+PjJdO2Zvcihh''@;'; put 'put ''WyhNdD0wfGFbamUrMTY+PjJdKSsoNDAqKGY9MHxhW2plPj4yXSl8MCkrMzI+PjJdPWYsYVtNdCsoNDAqKGY9ZisxfDApfDApKzMyPj4yXT1mLGZ1bmN0aW9uIE5SKGwsYyl7dmFyIG0sZj0wLHA9MDtmb3IoZj0wfG1yKCg2KigwfGFbKGx8PTApPj4yXSl8MCkrKChjfD0wKTw8MSk8PDIpLGFb''@;'; put 'put ''bCsyMD4+Ml09MHxtcigyNCooKDMqKDB8YVtsPj4yXSl8MCkrY3wwKXwwKSxwPTB8YVtsPj4yXSxtPWwrMTZ8MCxsPTA7ISgoMHxsKT49KDB8cCkpOylhWygwfGFbbT4+Ml0pKyg0MCpsfDApKzI4Pj4yXT1mLGY9ZisyNHwwLGw9bCsxfDA7Zm9yKHA9cCsyfDA7ISgoMHxsKT49KDB8cCkpOylh''@;'; put 'put ''WygwfGFbbT4+Ml0pKyg0MCpsfDApKzI4Pj4yXT1mLGY9ZisoYzw8Mil8MCxsPWwrMXwwfShqZSxLKSxmPTA7ISgoMHxmKT49KDB8YVtsPj4yXSkpOyl3QigoMHxhW0hlPj4yXSkrKDcyKmZ8MCl8MCxqZSksZj1mKzF8MDtyZXR1cm4gaXMoZXQpLGlzKExlKSxIdChCZSksZnVuY3Rpb24gU20o''@;'; put 'put ''bCl7dmFyIG0sQSx3LGIsayxjPTAsZj0wLHA9MDtmb3Ioaz1vZSxvZT1vZSsxNnwwLGI9ays4fDAsdz1rLG09MTYrKGx8PTApfDAsQT0wfGFbMTU3MTJdLHA9MDs7KXtpZigoMHxwKT49KDB8YVtsPj4yXSkpe2M9MTA7YnJlYWt9aWYoMD09KDB8YVsoZj0oYz0wfGFbbT4+Ml0pKyg0MCpwfDAp''@;'; put 'put ''KzIwfDApPj4yXSkmJihhW3c+PjJdPXAsVDAoQSwxMzgwOTYsdyksMD09KDB8YVtmPj4yXSkpKXtjPTU7YnJlYWt9aWYoMD09KDB8YVsoYz1jKyg0MCpwfDApKzI0fDApPj4yXSkmJihhW2I+PjJdPXAsVDAoQSwxMzgxNDgsYiksMD09KDB8YVtjPj4yXSkpKXtjPTg7YnJlYWt9cD1wKzF8MH1p''@;'; put 'put ''Zig1PT0oMHxjKSlCcigxMzgxMTgsMTM4MTMxLDMxMSwxMzgxMzgpO2Vsc2UgaWYoOD09KDB8YykpQnIoMTM4MTcwLDEzODEzMSwzMTMsMTM4MTM4KTtlbHNlIGlmKDEwPT0oMHxjKSlvZT1rfShqZSksZnVuY3Rpb24gVDkobCl7dmFyIGMsZixwPTA7Zm9yKGFbOCsobHw9MCk+PjJdPWY9MHxh''@;'; put 'put ''W2w+PjJdLGFbbCsxMj4+Ml09YVtsKzQ+PjJdLGM9bCsxNnwwLGw9MDshKCgwfGwpPj0oMHxmKSk7KVR0WyhwPTB8YVtjPj4yXSkrKDQwKmx8MCkrMTg+PjFdPTB8VHRbcCsoNDAqbHwwKSsxNj4+MV0sbD1sKzF8MH0oamUpLG9lPXJ0LDB8amV9KEJlLE9lKSxvZT1IZSwwfEJlfSx5MCxrMCxm''@;'; put 'put ''dW5jdGlvbiBpbChsLGMpe3JldHVybigwfGFbKGx8PTApPj4yXSktKDB8YVsoY3w9MCk+PjJdKXwwfSxaaSxmdW5jdGlvbiBqOShsLGMpe3JldHVybiAwfEEwKDB8YVsobHw9MCk+PjJdLDB8YVsoY3w9MCk+PjJdKX0sZnVuY3Rpb24gaF8obCxjKXtyZXR1cm4gMHxBMCgwfGFbKGx8PTApPj4y''@;'; put 'put ''XSwwfGFbKGN8PTApPj4yXSl9LGZ1bmN0aW9uICRCKGwsYyl7bHw9MCxjfD0wO3ZhciBtLGY9MCxwPTA7Zm9yKG09MHxhWzQ3NTEzXSxmPTAscD0wOzMhPSgwfHApOylmPWYrKDIhPSgwfCRmKDB8YVthW20rKDUyKmx8MCkrNCsocDw8NCk+PjJdPj4yXSwwfGFbYVttKyg1MipsfDApKzQrKHA8''@;'; put 'put ''PDQpKzQ+PjJdPj4yXSxjKSkmMSl8MCxwPXArMXwwO3JldHVybiAxJigzPT0oMHxmKXwwPT0oMHxmKSl8MH0sZnVuY3Rpb24gcUIobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtwPShmPTB8YVs0NzUxM10pKyg1MioobHw9MCl8MCl8MDtlOmRve2lmKDB8YVtwPj4yXSlmPTA7ZWxzZSBpZihh''@;'; put 'put ''W3A+PjJdPTEsKDB8bCk9PSgwfGMpKWY9MTtlbHNle2ZvcihtPTA7ISgoMHxtKT49Myk7KXtpZihwPTB8YVtmKyg1MipsfDApKzQrKG08PDQpKzEyPj4yXSl7aWYoMHxxQigocC1mfDApLzUyfDAsYykpe2Y9MTticmVhayBlfWY9MHxhWzQ3NTEzXX1tPW0rMXwwfWFbZisoNTIqbHwwKT4+Ml09''@;'; put 'put ''MCxmPTB9fXdoaWxlKDApO3JldHVybiAwfGZ9LFphLGZ1bmN0aW9uIGljKGwsYyl7cmV0dXJuIDB8KChsPTB8UmlbMTI3JmFbMzY0KyhsfD0wKT4+Ml1dKDB8YVtsKzM2OD4+Ml0sY3w9MCkpPj4+MD42NTUzNT8wOmFbNTY5NDArKCgoMHxidFsxNDQwNDQrKGw+Pj44KT4+MF0pPDwzfGw+Pj41''@;'; put 'put ''JjcpPDwyKT4+Ml0mMTw8KDMxJmwpKX0sZnVuY3Rpb24gazYobCxjKXtyZXR1cm4gMHwoKGw9MHxSaVsxMjcmYVszNjQrKGx8PTApPj4yXV0oMHxhW2wrMzY4Pj4yXSxjfD0wKSk+Pj4wPjY1NTM1PzA6YVs1Njk0MCsoKCgwfGJ0WzE0Mzc4OCsobD4+PjgpPj4wXSk8PDN8bD4+PjUmNyk8PDIp''@;'; put 'put ''Pj4yXSYxPDwoMzEmbCkpfSxmdW5jdGlvbiBNQShsLGMpe3JldHVybiAwfCgobD0wfFJpWzEyNyZhWzM2NCsobHw9MCk+PjJdXSgwfGFbbCszNjg+PjJdLGN8PTApKT4+PjA+NjU1MzU/MTooMHxUZChsKSk+Pj4zMSl9LGZ1bmN0aW9uIHpjZShsLGMpe3JldHVybigwfGFbYVsobHw9MCk+PjJd''@;'; put 'put ''Pj4yXSktKDB8YVthWyhjfD0wKT4+Ml0+PjJdKXwwfSxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPYyxPY10sZWY9W3JxLGZ1bmN0aW9uIHRLKGwsYyxmLHApe2x8PTAsZj0rZixwPStwO3ZhciBrLEcsSyxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MCxSPTAscGU9''@;'; put 'put ''MCxtZT0wLGJlPTAsT2U9MDtLPW9lLG9lPW9lKzgwfDAsRD1LKzY0fDAsRz1LKzY4fDAsQT1LKzQ4fDAsdz1LKzMyfDAsYj1LKzE2fDAsaz1LLG09MHxhWyhNPTE2KyhjfD0wKXwwKT4+Ml07ZTpkb3tpZigwfGFbbSsyMTI+PjJdKWFbRz4+Ml09NCxiZT0uNSorX1ttKzMyPj4zXStmLE9lPS41''@;'; put 'put ''KitfW20rNDA+PjNdK3AsYVtsKzQwPj4yXT0xLEE9MHxRbig2NCksX1tBPj4zXT1iZSxfW0ErOD4+M109T2UsbWU9LWJlLF9bQSsxNj4+M109bWUsX1tBKzI0Pj4zXT1PZSxfW0ErMzI+PjNdPW1lLE9lPS1PZSxfW0ErNDA+PjNdPU9lLF9bQSs0OD4+M109YmUsX1tBKzU2Pj4zXT1PZSxSPTIx''@;'; put 'put ''O2Vsc2Ugc3dpdGNoKDB8WjUoYykpe2Nhc2UgMTpzd2l0Y2goYVtHPj4yXT1iPTB8YVs4Kyh3PTB8YVsxMisobT0wfGFbTT4+Ml0pPj4yXSk+PjJdLDB8dWVbKG09MHxhW2FbbSs4Pj4yXT4+Ml0pPj4wXSl7Y2FzZSA5ODpSPTB8WmkobSwxMDgyMzYpPzg6MTE7YnJlYWs7Y2FzZSAxMTI6Uj0w''@;'; put 'put ''PT0oMHxaaShtLDEwNTcyMSkpJiYwIT0oMHxuSygwfGFbdys0ND4+Ml0sYikpPzExOjg7YnJlYWs7ZGVmYXVsdDpSPTh9ZG97aWYoOD09KDB8Uikpe2lmKCgwfGIpPDMpe2FbbCs0MD4+Ml09MD09KDB8YVt3Pj4yXSk/MDoyLFI9MTc7YnJlYWt9YVsobT1sKzQwfDApPj4yXT0wO2JyZWFrfTEx''@;'; put 'put ''PT0oMHxSKSYmKGFbKG09bCs0MHwwKT4+Ml09MSwoMHxiKTw9MiYmKFI9MTcpKX13aGlsZSgwKTtpZigxNz09KDB8Uikpe0E9MHxsdihjLEcsZixwKSxSPTIxO2JyZWFrIGV9aWYoQT0wfFFuKGI8PDQpLHc9dys0NHwwLDE9PSgwfGFbbT4+Ml0pKXtfW0E+PjNdPS4wMTM4ODg4ODg4ODg4ODg4''@;'; put 'put ''ODgqK19bKFI9MHxhW3c+PjJdKT4+M10rKHBlPWYpLF9bQSs4Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW1IrOD4+M10rKGY9cCksX1tBKzE2Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW1IrMTY+PjNdLXBlLF9bQSsyND4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1tSKzI0Pj4z''@;'; put 'put ''XStmLF9bQSszMj4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1tSKzMyPj4zXS1wZSxfW0ErNDA+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bUis0MD4+M10tZixfW0ErNDg+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bUis0OD4+M10rcGUsX1tBKzU2Pj4zXT0uMDEzODg4ODg4ODg4''@;'; put 'put ''ODg4ODg4KitfW1IrNTY+PjNdLWYsUj0yMTticmVhayBlfWZvcihtPTA7Oyl7aWYoKDB8bSk+PSgwfGIpKXtSPTIxO2JyZWFrIGV9bWU9K0YwKCsoKHBlPStfWyhSPTB8YVt3Pj4yXSkrKG08PDQpKzg+PjNdKSpwZSsoYmU9K19bUisobTw8NCk+PjNdKSpiZSkpLF9bQSsobTw8NCk+PjNdPShm''@;'; put 'put ''L21lKzEpKmJlKi4wMTM4ODg4ODg4ODg4ODg4ODgsX1tBKyhtPDw0KSs4Pj4zXT0ocC9tZSsxKSpwZSouMDEzODg4ODg4ODg4ODg4ODg4LG09bSsxfDB9Y2FzZSAyOmFbRz4+Ml09NCxSPTB8UW4oNjQpLE9lPStfWzMyKyhjPTB8YVsxMisoMHxhW00+PjJdKT4+Ml0pPj4zXSxtZT0rX1tjKzQw''@;'; put 'put ''Pj4zXSx1TChBLEQ9fn4rX1tjKzE2Pj4zXSxjPX5+K19bYysyND4+M10sYmU9LWYscGU9LXApLGFbUj4+Ml09YVtBPj4yXSxhW1IrND4+Ml09YVtBKzQ+PjJdLGFbUis4Pj4yXT1hW0ErOD4+Ml0sYVtSKzEyPj4yXT1hW0ErMTI+PjJdLEE9UisxNnwwLHVMKHcsTT1+fk9lLGMsZixwZSksYVtB''@;'; put 'put ''Pj4yXT1hW3c+PjJdLGFbQSs0Pj4yXT1hW3crND4+Ml0sYVtBKzg+PjJdPWFbdys4Pj4yXSxhW0ErMTI+PjJdPWFbdysxMj4+Ml0sQT1SKzMyfDAsdUwoYixNLGM9fn5tZSxmLHApLGFbQT4+Ml09YVtiPj4yXSxhW0ErND4+Ml09YVtiKzQ+PjJdLGFbQSs4Pj4yXT1hW2IrOD4+Ml0sYVtBKzEy''@;'; put 'put ''Pj4yXT1hW2IrMTI+PjJdLEE9Uis0OHwwLHVMKGssRCxjLGJlLHApLGFbQT4+Ml09YVtrPj4yXSxhW0ErND4+Ml09YVtrKzQ+PjJdLGFbQSs4Pj4yXT1hW2srOD4+Ml0sYVtBKzEyPj4yXT1hW2srMTI+PjJdLGFbbCs0MD4+Ml09MSxBPVIsUj0yMTticmVhayBlO2Nhc2UgMzphW2wrNDA+PjJd''@;'; put 'put ''PTIsQT0wfGx2KGMsRyxmLHApLFI9MjE7YnJlYWsgZTtkZWZhdWx0OmFbRD4+Ml09YVthWzgrKDB8YVtNPj4yXSk+PjJdPj4yXSxYcigxLDkzODgzLEQpLG09MTticmVhayBlfX13aGlsZSgwKTtyZXR1cm4gMjE9PSgwfFIpJiYoYVtsKzM2Pj4yXT1BLGFbbCszMj4+Ml09bT0wfGFbRz4+Ml0s''@;'; put 'put ''WGsoQSxtLGwsbCsxNnwwKSwoMHxtKT4oMHxhWzQ2OTE0XSkmJihhWzQ2OTE0XT1tKSxtPTApLG9lPUssMHxtfSxmdW5jdGlvbiBWMmUobCxjLGYscCl7bHw9MCxmPStmLHA9K3A7dmFyIFIsSyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLHBlPTAsbWU9MCxiZT0wLE9lPTA7Sz1v''@;'; put 'put ''ZSxvZT1vZSs4MHwwLE09Sys2NHwwLFI9Sys2OHwwLEE9Sys0OHwwLHc9SyszMnwwLGI9SysxNnwwLGs9SyxtPTB8YVsoRD0xNisoY3w9MCl8MCk+PjJdO2U6ZG97aWYoMHxhW20rMjEyPj4yXSlhW1I+PjJdPTQsYmU9LjUqK19bbSszMj4+M10sT2U9LjUqK19bbSs0MD4+M10sYVtsKzQwPj4y''@;'; put 'put ''XT0xLEE9MHxRbig2NCksX1tBPj4zXT1iZSxfW0ErOD4+M109T2UsbWU9LWJlLF9bQSsxNj4+M109bWUsX1tBKzI0Pj4zXT1PZSxfW0ErMzI+PjNdPW1lLE9lPS1PZSxfW0ErNDA+PjNdPU9lLF9bQSs0OD4+M109YmUsX1tBKzU2Pj4zXT1PZSxHPTIwO2Vsc2Ugc3dpdGNoKDB8WjUoYykpe2Nh''@;'; put 'put ''c2UgMTphW1I+PjJdPWI9MHxhWyhNPTgrKGs9MHxhWzEyKygwfGFbRD4+Ml0pPj4yXSl8MCk+PjJdO3Q6ZG97aWYoKDB8Yik+Milmb3IoQT0wfFFuKGI8PDQpLHc9ays0NHwwLG09MDs7KXtpZigoMHxtKT49KDB8YikpYnJlYWsgdDtfW0ErKG08PDQpPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4''@;'; put 'put ''KitfWyhjPTB8YVt3Pj4yXSkrKG08PDQpPj4zXSxfW0ErKG08PDQpKzg+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bYysobTw8NCkrOD4+M10sbT1tKzF8MH1lbHNlIEE9MHxsdihjLFIsMCwwKX13aGlsZSgwKTtzd2l0Y2goMHx1ZVsobT0wfGFbYVs4KygwfGFbRD4+Ml0pPj4yXT4+Ml0p''@;'; put 'put ''Pj4wXSl7Y2FzZSA5ODowfFppKG0sMTA4MjM2KT9HPTEzOm09MTticmVhaztjYXNlIDExMjowPT0oMHxaaShtLDEwNTcyMSkpJiYwIT0oMHxuSyhBLDB8YVtSPj4yXSkpP209MTpHPTEzO2JyZWFrO2RlZmF1bHQ6Rz0xM31kb3tpZigxMz09KDB8Rykpe2lmKCgwfGFbTT4+Ml0pPDMmJjB8YVtr''@;'; put 'put ''Pj4yXSl7bT0yO2JyZWFrfW09MH19d2hpbGUoMCk7YVtsKzQwPj4yXT1tLEc9MjA7YnJlYWsgZTtjYXNlIDI6YVtSPj4yXT00LEc9MHxRbig2NCksYmU9K19bMzIrKEQ9MHxhWzEyKygwfGFbRD4+Ml0pPj4yXSk+PjNdLHBlPStfW0QrNDA+PjNdLFh5KEEsbWU9K19bRCsxNj4+M10sT2U9K19b''@;'; put 'put ''RCsyND4+M10pLGFbRz4+Ml09YVtBPj4yXSxhW0crND4+Ml09YVtBKzQ+PjJdLGFbRys4Pj4yXT1hW0ErOD4+Ml0sYVtHKzEyPj4yXT1hW0ErMTI+PjJdLEE9RysxNnwwLFh5KHcsYmUsT2UpLGFbQT4+Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLGFbQSs4Pj4yXT1hW3crOD4+Ml0s''@;'; put 'put ''YVtBKzEyPj4yXT1hW3crMTI+PjJdLEE9RyszMnwwLFh5KGIsYmUscGUpLGFbQT4+Ml09YVtiPj4yXSxhW0ErND4+Ml09YVtiKzQ+PjJdLGFbQSs4Pj4yXT1hW2IrOD4+Ml0sYVtBKzEyPj4yXT1hW2IrMTI+PjJdLEE9Rys0OHwwLFh5KGssbWUscGUpLGFbQT4+Ml09YVtrPj4yXSxhW0ErND4+''@;'; put 'put ''Ml09YVtrKzQ+PjJdLGFbQSs4Pj4yXT1hW2srOD4+Ml0sYVtBKzEyPj4yXT1hW2srMTI+PjJdLGFbbCs0MD4+Ml09MSxBPUcsRz0yMDticmVhayBlO2Nhc2UgMzphW2wrNDA+PjJdPTIsQT0wfGx2KGMsUiwwLDApLEc9MjA7YnJlYWsgZTtkZWZhdWx0OmFbTT4+Ml09YVthWzgrKDB8YVtEPj4y''@;'; put 'put ''XSk+PjJdPj4yXSxYcigxLDkzOTE5LE0pLG09MTticmVhayBlfX13aGlsZSgwKTtyZXR1cm4gMjA9PSgwfEcpJiYobT0wfGFbUj4+Ml0sMSE9ZnwxIT1wJiZmdW5jdGlvbiBySyhsLGMsZixwKXtsfD0wLGN8PTAsZj0rZixwPStwO3ZhciBtPTAsQT0wO2ZvcihtPTA7ISgoMHxtKT49KDB8Yykp''@;'; put 'put ''OylfW2w+PjNdPStfW2w+PjNdKmYsX1soQT1sKzh8MCk+PjNdPStfW0E+PjNdKnAsbD1sKzE2fDAsbT1tKzF8MH0oQSxtLGYscCksYVtsKzM2Pj4yXT1BLGFbbCszMj4+Ml09bSxYayhBLG0sbCxsKzE2fDApLCgwfG0pPigwfGFbNDY5MTRdKSYmKGFbNDY5MTRdPW0pLG09MCksb2U9SywwfG19''@;'; put 'put ''LHJxXSxtaT1bZzEsZnVuY3Rpb24gbnNlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0scD0wO3A9OCsoY3w9MCl8MCxtPTQ4KyhmPTgrKGw9MHxtcig2NCkpfDApfDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7cmV0dXJuIGFbbCs1Nj4+Ml09''@;'; put 'put ''Yz0wfGFbYys1Nj4+Ml0sVHRbMTY4KygwfGFbYysxNj4+Ml0pPj4xXT0xLDB8bH0sZnVuY3Rpb24gczFlKGwsYyxmKXtyZXR1cm4gY3w9MCxmfD0wLGY9MHxmdW5jdGlvbiBjMWUobCl7dmFyIG0sYz0wLGY9MCxwPTA7cmV0dXJuKDB8KGM9MHxhWzQrKGw9MHxhWyhtPTgrKGx8PTApfDApPj4y''@;'; put 'put ''XSk+PjJdKSk9PSgwfGFbbCs4Pj4yXSkmJigocD0wfGFbKGY9bCsxMnwwKT4+Ml0pP2w9cDoobD0wfHlLKCgoYy0oMHxhW2w+PjJdKXwwKS8yMHwwKTw8MSksYVtmPj4yXT1sKSxhW20+PjJdPWwsYVtsKzQ+PjJdPWM9MHxhW2w+PjJdKSxhW2wrND4+Ml09YysyMCwwfGN9KDB8YVs0NjkyNF0p''@;'; put 'put ''LGFbZj4+Ml09YVtjPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT0wLDB8Zn0sZnVuY3Rpb24gQVQobCxjLGYpe3JldHVybiBjfD0wLGZ8PTAsZj0wfFFuKDE2KSxhW2YrMTI+PjJdPTAsYVtmKzg+PjJdPWFbYys4Pj4yXSwwfGZ9LGZ1bmN0aW9uIHFQKGwsYyxmKXtyZXR1cm4g''@;'; put 'put ''Y3w9MCxmfD0wLGY9MHxRbigxMiksYVtmKzg+PjJdPWFbYys4Pj4yXSwwfGZ9LGZ1bmN0aW9uIHM3KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIFIsRyxLLHBlLG1lLE9lLEJlLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsYmU9MCxMZT0wOzQwOTYmYVthWyhPZT04KyhsfD0wKXwwKT4+''@;'; put 'put ''Ml0+PjJdfDAmJlljKGwsMCksUj0wfGFbKGJlPTB8YVtsKzQ+PjJdKT4+Ml0sRz0wfGFbYmUrND4+Ml0sQmU9MHxhWyhtZT1iZSs4fDApPj4yXSxLPTB8YVtiZSsyMD4+Ml0sYVsocGU9bCsyMHwwKT4+Ml09bT0tMzI3NjkmYVtwZT4+Ml07ZTpkb3tpZihjKXtpZigyMDQ5JmZ8MCl7aWYoKHc9''@;'; put 'put ''MD09KDEmZnwwKSl8MD09KDB8KHA9MHxhWyhBPWJlKzEyfDApPj4yXSkpKW09YztlbHNle2lmKCEocD0wfG1pWzYzJnBdKGwsYyxiZSkpKXtwPTA7YnJlYWt9bT1wfWRve2lmKCEoKDB8QmUpPi0xKSl7aWYoMHwocD0wfEQwWzEyNyZhW2wrMTI+PjJdXShsLDAsMTIsYmUpKSl7YVtwKzg+PjJd''@;'; put 'put ''PW0sdz1wO2JyZWFrfWlmKCEoMHxhW0E+PjJdKSl7cD0wO2JyZWFrIGV9aWYod3wwPT0oMHwocD0wfGFbYmUrMTY+PjJdKSkpe3A9MDticmVhayBlfU5sWzEyNyZwXShsLG0sYmUpLHA9MDticmVhayBlfXc9bStCZXwwfXdoaWxlKDApO3A9MHxhWyhBPTB8YVtPZT4+Ml0pPj4yXTtkb3tpZigh''@;'; put 'put ''KDEyOCZwKSl7aWYoISgxNiZwKSl7aWYoMzImcCl7TGU9NDg7YnJlYWt9TGU9NTE7YnJlYWt9aWYocD0wIT0oMHwobT0wfGFbQSs0Pj4yXSkpLDgxOTImZil7aWYoIXApe0xlPTUxO2JyZWFrfWlmKCEocD0wfGFbbT4+Ml0pKXtMZT01MTticmVha31hW3c+PjJdPXAsYVtwKzQ+PjJdPXcsYVt3''@;'; put 'put ''KzQ+PjJdPW0sYVttPj4yXT13O2JyZWFrfWlmKCFwKXtMZT00ODticmVha31pZigoMHxtKT09KDB8YVtBKzg+PjJdKSl7TGU9NDg7YnJlYWt9YVt3KzQ+PjJdPWw9MHxhWyhiZT1tKzR8MCk+PjJdLGFbbD4+Ml09dyxhW3c+PjJdPW0sYVtiZT4+Ml09dzticmVha31MZT04MTkyJmY/NTE6NDh9''@;'; put 'put ''d2hpbGUoMCk7aWYoNDg9PSgwfExlKT8oYVt3Pj4yXT1wPTB8YVtBKzg+PjJdLHA/YVt3KzQ+PjJdPWFbcCs0Pj4yXTpwPXcsYVtwKzQ+PjJdPXcsYVs4KygwfGFbT2U+PjJdKT4+Ml09dyk6NTE9PSgwfExlKSYmKChwPTB8YVsobT1BKzh8MCk+PjJdKT8oYVthWyhiZT1wKzR8MCk+PjJdPj4y''@;'; put 'put ''XT13LGFbdys0Pj4yXT1hW2JlPj4yXSk6KGFbbT4+Ml09dyxwPXcpLGFbcCs0Pj4yXT13LGFbdz4+Ml09MCksKDB8KEE9MHxhWyhtPTE2KyhwPTB8YVtPZT4+Ml0pfDApPj4yXSkpPi0xJiYoYVttPj4yXT1BKzEpLGFbcCs0Pj4yXT13LCgwfEJlKTwwKXtwPTB8YVt3Kzg+PjJdO2JyZWFrfXA9''@;'; put 'put ''dysoMC1CZSl8MDticmVha313PTB8YVtPZT4+Ml07ZG97aWYoNTEyJmYpTGU9Njg7ZWxzZXtpZigwfChwPTB8YVt3KzQ+PjJdKSYmKDB8KEE9KDB8QmUpPDA/MHxhW3ArOD4+Ml06cCsoMC1CZSl8MCkpPT0oMHxjKSlicmVhaztwPWMrUnwwLCgwfEcpPDA/KGM9MHxhW3A+PjJdLExlPTY4KToo''@;'; put 'put ''Yz1wLExlPTY4KX19d2hpbGUoMCk7aWYoNjg9PSgwfExlKSl7QT0oMHxCZSk8MCxiPSgwfEcpPDAsaz0wPT0oMHxLKSxNPSgwfEcpPDEsRD0wLUJlfDAscD13Kzh8MDtkb3tpZighKHA9MHxhW3A+PjJdKSl7cD0wO2JyZWFrIGV9bT0obT1BPzB8YVtwKzg+PjJdOnArRHwwKStSfDAsYiYmKG09''@;'; put 'put ''MHxhW20+PjJdKTtkb3tpZihrKXtpZihNKXttPTB8WmkoYyxtKTticmVha31tPTB8JGgoYyxtLEcpO2JyZWFrfW09MHxEMFsxMjcmS10obCxjLG0sYmUpfXdoaWxlKDApfXdoaWxlKDAhPSgwfG0pKTttPTB8YVtwZT4+Ml19aWYoYVtwZT4+Ml09MzI3Njh8bSwhKDQwOTgmZikpe2Rve2lmKCEo''@;'; put 'put ''OCZmKSl7aWYobT0wfGFbT2U+PjJdLCEoMTYmZikpe2FbbSs0Pj4yXT1wO2JyZWFrfWlmKCgwfHApPT0oMHxhW20rOD4+Ml0pKXthW20rND4+Ml09MCxwPTA7YnJlYWsgZX1wPXArNHwwLExlPTEwODticmVha31tPTB8YVtPZT4+Ml0sTGU9MTA4fXdoaWxlKDApO2lmKDEwOD09KDB8TGUpJiYo''@;'; put 'put ''YVttKzQ+PjJdPXA9MHxhW3A+PjJdLCFwKSl7cD0wO2JyZWFrfWlmKCgwfEJlKTwwKXtwPTB8YVtwKzg+PjJdO2JyZWFrfXA9cCsoMC1CZSl8MDticmVha313PXAsTGU9ODR9ZWxzZXtpZigzODQmZnwwKXtpZighKHA9MHxhWzgrKG09MHxhW09lPj4yXSk+PjJdKSl7cD0wO2JyZWFrfWlmKDI1''@;'; put 'put ''NiZmKXtpZihhW20rND4+Ml09cD0wfGFbcCs0Pj4yXSwhcCl7cD0wO2JyZWFrfX1lbHNlIGFbbSs0Pj4yXT1wO2lmKCgwfEJlKTwwKXtwPTB8YVtwKzg+PjJdO2JyZWFrfXA9cCsoMC1CZSl8MDticmVha31pZig0MDk4JmZ8MCl7aWYoMTQ0JmFbKHA9MHxhW09lPj4yXSk+PjJdfDApe3A9MDti''@;'; put 'put ''cmVha31pZihwPTB8YVtwKzg+PjJdKXt3PXAsTGU9ODQ7YnJlYWt9cD0wO2JyZWFrfWlmKDY0JmYpe2I9YmUrMTZ8MDt0OmRve2lmKDAhPSgwfGFbYj4+Ml0pfCgwfEJlKTwwKWZvcihrPWwrMTJ8MCxNPSgwfEJlKTwwLG09MC1CZXwwLHA9MHxhWzgrKDB8YVtPZT4+Ml0pPj4yXTs7KXtpZigh''@;'; put 'put ''cClicmVhayB0O0E9MHxhW3A+PjJdLDB8KHc9MHxhW2I+PjJdKSYmTmxbMTI3JnddKGwsYz1NPzB8YVtwKzg+PjJdOnArbXwwLGJlKSwoMHxhW21lPj4yXSk+PTB8fEQwWzEyNyZhW2s+PjJdXShsLHAsMCxiZSkscD1BfX13aGlsZSgwKTthWzQrKHA9MHxhW09lPj4yXSk+PjJdPTAsYVtwKzg+''@;'; put 'put ''PjJdPTAsYVsxNisoMHxhW09lPj4yXSk+PjJdPTAscD0wfWVsc2UgcD0wfX13aGlsZSgwKTtyZXR1cm4gODQ9PSgwfExlKSYmKChwPTB8YVt3Pj4yXSkmJihhW3ArND4+Ml09YVt3KzQ+PjJdLHA9MHxhW3c+PjJdKSwoMHx3KT09KDB8KEE9MHxhWyhtPTgrKDB8YVtPZT4+Ml0pfDApPj4yXSkp''@;'; put 'put ''PyhhW20+PjJdPXAsMHwocD0wfGFbOCsoMHxhW09lPj4yXSk+PjJdKSYmKGFbcCs0Pj4yXT1hW3crND4+Ml0pKTooYVthWyhtPXcrNHwwKT4+Ml0+PjJdPXAsKDB8dyk9PSgwfGFbKHA9QSs0fDApPj4yXSkmJihhW3A+PjJdPWFbbT4+Ml0pKSxhWyhtPTQrKHA9MHxhW09lPj4yXSl8MCk+PjJd''@;'; put 'put ''PUE9KDB8dyk9PSgwfGFbbT4+Ml0pPzB8YVt3Pj4yXTowLGFbKExlPXArMTZ8MCk+PjJdPSgwfGFbTGU+PjJdKS0xLHA9KDB8QmUpPDA/MHxhW3crOD4+Ml06dysoMC1CZSl8MCwwPT0oMiZmfDApfDA9PSgwfChtPTB8YVtiZSsxNj4+Ml0pKXx8TmxbMTI3Jm1dKGwscCxiZSksKDB8YVttZT4+''@;'; put 'put ''Ml0pPDAmJkQwWzEyNyZhW2wrMTI+PjJdXShsLHcsMCxiZSkpLDB8cH0sZnVuY3Rpb24gYlQobCxjLGYpe2N8PTAsZnw9MDt2YXIgT2UsR2UsbHQsTXQsa3QsRXQsWnQscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxMZT0wLEJlPTAs''@;'; put 'put ''SGU9MCxqZT0wLGV0PTAscnQ9MCxhdD0wO1p0PW9lLG9lPW9lKzEyOHwwLHJ0PVp0KzEyMHwwLG1lPVp0LDQwOTYmYVsocD0wfGFbKEV0PTgrKGx8PTApfDApPj4yXSk+PjJdJiYoWWMobCwwKSxwPTB8YVtFdD4+Ml0pLEdlPTB8YVsoYXQ9MHxhW2wrND4+Ml0pPj4yXSxsdD0wfGFbYXQrND4+''@;'; put 'put ''Ml0sa3Q9MHxhWyhqZT1hdCs4fDApPj4yXSxNdD0wfGFbYXQrMjA+PjJdLGFbKE9lPWwrMjB8MCk+PjJdPS0zMjc2OSZhW09lPj4yXSx3PTB8YVtwKzQ+PjJdO2U6ZG97aWYoYyl7ZXQ9bCsxNnwwLExlPTA9PSg0MDk4JmZ8MCk7dDpkb3tpZihMZXw4IT0oMHxhWzQrKDB8YVtldD4+Ml0pPj4y''@;'; put 'put ''XSkpQmU9NDU7ZWxzZXtmb3IocD1jK0dlfDAsKE09KDB8bHQpPDApJiYocD0wfGFbcD4+Ml0pLGI9MD09KDB8TXQpLGs9KDB8bHQpPDEsQT0wfG1pWzYzJmFbbD4+Ml1dKGwsYyw0KTs7KXtpZighQSl7QmU9NDU7YnJlYWsgdH1tPUErR2V8MCxNJiYobT0wfGFbbT4+Ml0pO2Rve2lmKGIpe2lm''@;'; put 'put ''KGspe209MHxaaShwLG0pO2JyZWFrfW09MHwkaChwLG0sbHQpO2JyZWFrfW09MHxEMFsxMjcmTXRdKGwscCxtLGF0KX13aGlsZSgwKTtpZigwfG0pe0JlPTQ1O2JyZWFrIHR9aWYoKDB8QSk9PSgwfGMpKWJyZWFrO0E9MHxtaVs2MyZhW2w+PjJdXShsLEEsOCl9YVtydD4+Ml09YVs0Kyh3PTB8''@;'; put 'put ''YVs0KygwfGFbRXQ+PjJdKT4+Ml0pPj4yXSxhW3J0KzQ+PjJdPWFbdz4+Ml0scD1ydCxCZT0xODB9fXdoaWxlKDApO3Q6ZG97aWYoNDU9PSgwfEJlKSl7ZG97aWYoMjU2NSZmKTUxMiZmP209YzoocD1jK0dlfDAsbT0oMHxsdCk8MD8wfGFbcD4+Ml06cCksdz8oQT1jLHA9MCxiZT1tLGs9MCxC''@;'; put 'put ''ZT02NCk6KHA9MCxBPWMsbT1ydCx3PXJ0LEJlPTE5OCk7ZWxzZXtpZigzMiZmfDApe2lmKHA9KEE9KDB8a3QpPDA/MHxhW2MrOD4+Ml06YysoMC1rdCl8MCkrR2V8MCxtPSgwfGx0KTwwPzB8YVtwPj4yXTpwLHcpe3A9YyxiZT1tLGs9YyxCZT02NDticmVha31wPWMsbT1ydCx3PXJ0LEJlPTE5''@;'; put 'put ''ODticmVha313PygwfChwPSgwfGt0KTwwPzB8YVt3Kzg+PjJdOncrKDAta3QpfDApKSE9KDB8Yyk/KG09YytHZXwwLCgwfGx0KTwwPyhBPWMscD0wLGJlPTB8YVttPj4yXSxrPTAsQmU9NjQpOihBPWMscD0wLGJlPW0saz0wLEJlPTY0KSk6KHA9MCxBPWMsbT1ydCxNPXJ0LGs9MCxCZT0xNDEp''@;'; put 'put ''OihwPTAsQT1jLG09cnQsdz1ydCxCZT0xOTgpfX13aGlsZSgwKTtuOmRve2lmKDY0PT0oMHxCZSkpe3I6ZG97aWYoNCE9KDB8YVs0KygwfGFbZXQ+PjJdKT4+Ml0pfHwocGU9MHxhWzI0KygwfGFbRXQ+PjJdKT4+Ml0sMD09KDUxNiZmfDApfDA9PSgwfHBlKSkpbT1ydCxNPXJ0O2Vsc2V7Zm9y''@;'; put 'put ''KGM9KDB8a3QpPDAsRD0oMHxsdCk8MCxSPTA9PSgwfE10KSxHPSgwfGx0KTwxLEs9MC1rdHwwLE09MCxtPXc7Oyl7aWYoKDB8TSk+PSgwfHBlKSl7bT1ydCxNPXJ0LEQ9MDticmVha31iPShiPWM/MHxhW20rOD4+Ml06bStLfDApK0dlfDAsRCYmKGI9MHxhW2I+PjJdKTtkb3tpZihSKXtpZihH''@;'; put 'put ''KXtiPTB8WmkoYmUsYik7YnJlYWt9Yj0wfCRoKGJlLGIsbHQpO2JyZWFrfWI9MHxEMFsxMjcmTXRdKGwsYmUsYixhdCl9d2hpbGUoMCk7aWYoIWIpe0JlPTgwO2JyZWFrfWlmKGFbbWUrKE08PDIpPj4yXT1iLCEobT0wfGFbKCgwfGIpPDA/bSs0fDA6bSk+PjJdKSl7cD0wO2JyZWFrIGV9TT1N''@;'; put 'put ''KzF8MH1pZig4MD09KDB8QmUpKXtpZihjKXtwPTB8YVttKzg+PjJdO2JyZWFrIGV9cD1tK0t8MDticmVhayBlfWZvcig7Oyl7aWYoKDB8RCk+PSgwfHBlKSlicmVhayByO2Rve2lmKCgwfGFbbWUrKEQ8PDIpPj4yXSk8MCl7aWYoYz0wfGFbKGI9dys0fDApPj4yXSwoMHxhW21lKygoMXxEKTw8''@;'; put 'put ''Mik+PjJdKTwwKXthW2I+PjJdPWFbYz4+Ml0sYVtjPj4yXT13LGFbbSs0Pj4yXT1jLG09Yyx3PU0sYj1jKzR8MDticmVha31hW00+PjJdPWMsYVttKzQ+PjJdPXcsbT13LHc9YyxiPWM7YnJlYWt9aWYoYj0wfGFbdz4+Ml0sKDB8YVttZSsoKDF8RCk8PDIpPj4yXSk+MCl7YVt3Pj4yXT1hWyhL''@;'; put 'put ''PWIrNHwwKT4+Ml0sYVtLPj4yXT13LGFbTT4+Ml09Yix3PWI7YnJlYWt9YVttKzQ+PjJdPWIsYVtNPj4yXT13LG09YixiPWIrNHwwO2JyZWFrfXdoaWxlKDApO009dyxEPUQrMnwwLHc9MHxhW2I+PjJdfX19d2hpbGUoMCk7Uj0oMHxrdCk8MCxHPSgwfGx0KTwwLEs9MCE9KDB8TXQpLHBlPSgw''@;'; put 'put ''fGx0KTwxLG1lPTAta3R8MCxiPXc7cjpmb3IoOzspe2Zvcih3PWI7Oyl7Yj0oYj1SPzB8YVt3Kzg+PjJdOncrbWV8MCkrR2V8MCxHJiYoYj0wfGFbYj4+Ml0pO2Rve2lmKCFLKXtpZihwZSl7Yj0wfFppKGJlLGIpO2JyZWFrfWI9MHwkaChiZSxiLGx0KTticmVha31iPTB8RDBbMTI3Jk10XShs''@;'; put 'put ''LGJlLGIsYXQpfXdoaWxlKDApO2lmKCFiKXtCZT0xNDA7YnJlYWsgcn1pZigoMHxiKT49MClicmVhaztpZighKEQ9MHxhWyhjPXcrNHwwKT4+Ml0pKXtCZT0xMjE7YnJlYWsgcn1iPShiPVI/MHxhW0QrOD4+Ml06RCttZXwwKStHZXwwLEcmJihiPTB8YVtiPj4yXSk7ZG97aWYoIUspe2lmKHBl''@;'; put 'put ''KXtiPTB8WmkoYmUsYik7YnJlYWt9Yj0wfCRoKGJlLGIsbHQpO2JyZWFrfWI9MHxEMFsxMjcmTXRdKGwsYmUsYixhdCl9d2hpbGUoMCk7aWYoKDB8Yik+PTApe0JlPTExODticmVha31pZihhW2M+PjJdPWFbRD4+Ml0sYVtEPj4yXT13LGFbbSs0Pj4yXT1ELCEodz0wfGFbRCs0Pj4yXSkpe209''@;'; put 'put ''RCx3PU0sQmU9MTk4O2JyZWFrIG59bT1EfWlmKDExOD09KDB8QmUpKXtpZihCZT0wLCFiKXtCZT0xMTk7YnJlYWt9aWYoYVtNPj4yXT1ELGFbbSs0Pj4yXT13LGI9MHxhW0Q+PjJdKXttPXcsTT1EO2NvbnRpbnVlfW09dyx3PUQsQmU9MTk4O2JyZWFrIG59aWYoIShjPTB8YVt3Pj4yXSkpe0Jl''@;'; put 'put ''PTEzOTticmVha31iPShiPVI/MHxhW2MrOD4+Ml06YyttZXwwKStHZXwwLEcmJihiPTB8YVtiPj4yXSk7ZG97aWYoIUspe2lmKHBlKXtiPTB8WmkoYmUsYik7YnJlYWt9Yj0wfCRoKGJlLGIsbHQpO2JyZWFrfWI9MHxEMFsxMjcmTXRdKGwsYmUsYixhdCl9d2hpbGUoMCk7aWYoKDB8Yik+MCl7''@;'; put 'put ''aWYoYVt3Pj4yXT1hWyhiPWMrNHwwKT4+Ml0sYVtiPj4yXT13LGFbTT4+Ml09YyxiPTB8YVtjPj4yXSl7TT1jO2NvbnRpbnVlfXc9YyxCZT0xOTg7YnJlYWsgbn1pZighYil7QmU9MTM3O2JyZWFrfWlmKGFbbSs0Pj4yXT1jLGFbTT4+Ml09dywhKGI9MHxhW2MrND4+Ml0pKXttPWMsQmU9MTk4''@;'; put 'put ''O2JyZWFrIG59bT1jLE09d31pZigxMTk9PSgwfEJlKSl7YVttKzQ+PjJdPXcsbT13LHc9RCxCZT0xNDE7YnJlYWt9aWYoMTIxPT0oMHxCZSkpe2FbbSs0Pj4yXT13LG09dyx3PU0sQmU9MTk4O2JyZWFrfWlmKDEzNz09KDB8QmUpKXthW00+PjJdPXcsTT13LHc9YyxCZT0xNDE7YnJlYWt9aWYo''@;'; put 'put ''MTM5PT0oMHxCZSkpe2FbTT4+Ml09dyxCZT0xOTg7YnJlYWt9aWYoMTQwPT0oMHxCZSkpe2lmKHcpe0JlPTE0MTticmVha313PU0sQmU9MTk4O2JyZWFrfX19d2hpbGUoMCk7ZG97aWYoMTQxPT0oMHxCZSkpaWYoYVtPZT4+Ml09MzI3Njh8YVtPZT4+Ml0sYVtNPj4yXT1hWyhiPXcrNHwwKT4+''@;'; put 'put ''Ml0sYVttKzQ+PjJdPWFbdz4+Ml0sNTE2JmYpcD13O2Vsc2V7aWYoOCZmfDApe2FbYj4+Ml09YVtydD4+Ml0sYVt3Pj4yXT0wLGFbcnQ+PjJdPXcsQmU9MTY5O2JyZWFrfWlmKDE2JmZ8MCl7YVt3Pj4yXT1hWyhCZT1ydCs0fDApPj4yXSxhW2I+PjJdPTAsYVtCZT4+Ml09dyxCZT0xNzU7YnJl''@;'; put 'put ''YWt9aWYoIUxlKXtwPW0sQmU9MTgwO2JyZWFrIHR9aWYoMjA0OSZmfDApe2lmKDQmYVs0KygwfGFbZXQ+PjJdKT4+Ml18MCl7cD13O2JyZWFrfWFbYj4+Ml09MCxhW3c+PjJdPWFbKHA9cnQrNHwwKT4+Ml0sYVtwPj4yXT13LHA9dyxCZT0yMDU7YnJlYWt9aWYoISgzMiZmKSl7cD0wO2JyZWFr''@;'; put 'put ''IGV9aWYoISg0JmFbNCsoMHxhW2V0Pj4yXSk+PjJdKSl7YVtwKzQ+PjJdPTAsYVtwPj4yXT1hWyhqZT1ydCs0fDApPj4yXSxhW2plPj4yXT1rLGFbKHA9MTYrKDB8YVtFdD4+Ml0pfDApPj4yXT0xKygwfGFbcD4+Ml0pLHA9dzticmVha30wfChwPTB8YVthdCsxNj4+Ml0pJiZObFsxMjcmcF0o''@;'; put 'put ''bCxBLGF0KSwoMHxhW2plPj4yXSk8MCYmRDBbMTI3JmFbbCsxMj4+Ml1dKGwsaywwLGF0KSxwPXd9ZWxzZSBpZigxOTg9PSgwfEJlKSlpZihhW20rND4+Ml09MCxhW3c+PjJdPTAsOCZmKUJlPTE2OTtlbHNlIGlmKDE2JmYpQmU9MTc1O2Vsc2V7aWYoNTE2JmZ8MCl7cD1tO2JyZWFrIHR9aWYo''@;'; put 'put ''MjA0OSZmKXA9MCxCZT0yMDU7ZWxzZXtpZighKDMyJmYpKXtBPTAscD1tO2JyZWFrIHR9YVsoamU9MTYrKDB8YVtFdD4+Ml0pfDApPj4yXT0xKygwfGFbamU+PjJdKX19fXdoaWxlKDApO2lmKDE2OT09KDB8QmUpKXtpZighKHA9MHxhWyh3PXJ0KzR8MCk+PjJdKSl7cD1tO2JyZWFrfWZvcig7''@;'; put 'put ''QT0wfGFbKG09cCs0fDApPj4yXTspYVttPj4yXT1hW0E+PjJdLGFbQT4+Ml09cCxwPUE7YVt3Pj4yXT1hW3A+PjJdfWVsc2UgaWYoMTc1PT0oMHxCZSkpe2lmKCEocD0wfGFbcnQ+PjJdKSl7cD1tO2JyZWFrfWZvcig7bT0wfGFbcD4+Ml07KWFbcD4+Ml09YVsoamU9bSs0fDApPj4yXSxhW2pl''@;'; put 'put ''Pj4yXT1wLHA9bTthW3J0Pj4yXT1hW3ArND4+Ml19ZWxzZSBpZigyMDU9PSgwfEJlKSl7KGs9MD09KDEmZnwwKSl8MD09KDB8KHc9MHxhWyhiPWF0KzEyfDApPj4yXSkpfHwoQT0wfG1pWzYzJnddKGwsQSxhdCkpO2Rve2lmKEEpe2lmKCgwfGt0KT4tMSl7cD1BK2t0fDAsQmU9MjE1O2JyZWFr''@;'; put 'put ''fWlmKDB8KHA9MHxEMFsxMjcmYVtsKzEyPj4yXV0obCwwLDEyLGF0KSkpe2FbcCs4Pj4yXT1BO2JyZWFrfTAhPSgwfGFbYj4+Ml0pJiYhKGt8MD09KDB8KEhlPTB8YVthdCsxNj4+Ml0pKSkmJk5sWzEyNyZIZV0obCxBLGF0KSxCZT0yMTV9ZWxzZSBCZT0yMTV9d2hpbGUoMCk7aWYoMjE1PT0o''@;'; put 'put ''MHxCZSkmJiFwKXtwPW07YnJlYWt9KDB8KEE9MHxhWyhtPTE2KygwfGFbRXQ+PjJdKXwwKT4+Ml0pKT4tMSYmKGFbbT4+Ml09QSsxKX1hW3ArND4+Ml09YVtydD4+Ml0sYVtwPj4yXT1hW3J0KzQ+PjJdO246ZG97aWYoMCE9KDUxNiZmfDApJiYwIT0oOCZhWzQrKDB8YVtldD4+Ml0pPj4yXXww''@;'; put 'put ''KSlmb3IoRD0oMHxrdCk8MCxtPUQ/MHxhW3ArOD4+Ml06cCsoMC1rdCl8MCxSPSgwfGx0KTwwLG09bStHZXwwLFImJihtPTB8YVttPj4yXSksaz0wPT0oMHxNdCksTT0oMHxsdCk8MSxjPTAta3R8MDs7KXtpZighKEE9MHxhWyhiPXArNHwwKT4+Ml0pKWJyZWFrIG47Zm9yKDt3PTB8YVtBPj4y''@;'; put 'put ''XTspYVtBPj4yXT1hWyhydD13KzR8MCk+PjJdLGFbcnQ+PjJdPUEsQT13O2FbYj4+Ml09QSx3PSh3PUQ/MHxhW0ErOD4+Ml06QStjfDApK0dlfDAsUiYmKHc9MHxhW3c+PjJdKTtkb3tpZihrKXtpZihNKXt3PTB8WmkobSx3KTticmVha313PTB8JGgobSx3LGx0KTticmVha313PTB8RDBbMTI3''@;'; put 'put ''Jk10XShsLG0sdyxhdCl9d2hpbGUoMCk7aWYoMHx3KWJyZWFrIG47YVtiPj4yXT1hW0E+PjJdLGFbQT4+Ml09cCxwPUF9fXdoaWxlKDApO2lmKGFbNCsoMHxhW0V0Pj4yXSk+PjJdPXAsKDB8a3QpPDApe3A9MHxhW3ArOD4+Ml07YnJlYWsgZX1wPXArKDAta3QpfDA7YnJlYWsgZX19d2hpbGUo''@;'; put 'put ''MCk7MTgwPT0oMHxCZSkmJihBPSgwfGt0KTwwPzB8YVt3Kzg+PjJdOncrKDAta3QpfDAsMD09KDImZnwwKXwwPT0oMHwobT0wfGFbYXQrMTY+PjJdKSl8fE5sWzEyNyZtXShsLEEsYXQpLCgwfGFbamU+PjJdKTwwJiZEMFsxMjcmYVtsKzEyPj4yXV0obCx3LDAsYXQpLGFbKGw9MTYrKDB8YVtF''@;'; put 'put ''dD4+Ml0pfDApPj4yXT0oMHwoYXQ9MHxhW2w+PjJdKSk8MT8tMTphdCstMXwwKTtkb3twPTB8YVsobT1wKzR8MCk+PjJdfXdoaWxlKDAhPSgwfHApKTthW20+PjJdPWFbcnQ+PjJdLGFbNCsoMHxhW0V0Pj4yXSk+PjJdPWFbcnQrND4+Ml0scD0yJmZ8MD9BOjB9ZWxzZSBpZigwPT0oNDQ4JmZ8''@;'; put 'put ''MCl8MD09KDB8dykpcD0wO2Vsc2V7aWYoISg2NCZmKSl7dDpkb3tpZigyNTYmZilmb3IocD13Ozspe2lmKCEobT0wfGFbcD4+Ml0pKWJyZWFrIHQ7YVtwPj4yXT1hWyhsPW0rNHwwKT4+Ml0sYVtsPj4yXT1wLHA9bX1lbHNlIGZvcihwPXc7Oyl7aWYoIShBPTB8YVsobT1wKzR8MCk+PjJdKSli''@;'; put 'put ''cmVhayB0O2FbbT4+Ml09YVtBPj4yXSxhW0E+PjJdPXAscD1BfX13aGlsZSgwKTtpZihhWzQrKDB8YVtFdD4+Ml0pPj4yXT1wLCgwfGt0KTwwKXtwPTB8YVtwKzg+PjJdO2JyZWFrfXA9cCsoMC1rdCl8MDticmVha31pZigwIT0oMHxhWyhjPWF0KzE2fDApPj4yXSl8KDB8a3QpPDApe2s9bCsx''@;'; put 'put ''MnwwLE09KDB8a3QpPDAsYj0wLWt0fDAscD13O2Rve2Zvcih3PXA7bT0wfGFbKHA9dys0fDApPj4yXTspYVtwPj4yXT1hW20+PjJdLGFbbT4+Ml09dyx3PW07cD0wfGFbdz4+Ml0sMHwobT0wfGFbYz4+Ml0pJiZObFsxMjcmbV0obCxBPU0/MHxhW3crOD4+Ml06dytifDAsYXQpLCgwfGFbamU+''@;'; put 'put ''PjJdKTwwJiZEMFsxMjcmYVtrPj4yXV0obCx3LDAsYXQpfXdoaWxlKDAhPSgwfHApKTtwPTB8YVtFdD4+Ml19YVtwKzE2Pj4yXT0wLGFbcCs0Pj4yXT0wLHA9MH19d2hpbGUoMCk7cmV0dXJuIG9lPVp0LDB8cH0sZnVuY3Rpb24gSChsLGMsZil7cmV0dXJuIDB8KDB8bXYoY3w9MCxmfD0wLGx8''@;'; put 'put ''PTApPzB8em8oYyk6MCl9LGZ1bmN0aW9uIHhlKGwsYyxmKXtsfD0wLGN8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MDtpZigwIT0oMHwoZnw9MCkpJiYoMHwocD0wfGFbKEE9bCs4fDApPj4yXSkpPCgwfGFbbCs0Pj4yXSkpe2Zvcih3PSgwfGFbbD4+Ml0pK3B8MCxsPTAsbT0wfHVlW3c+PjBdLHA9''@;'; put 'put ''YyxjPXc7Yz1jKzF8MCx1ZVtwPj4wXT1tLG08PDI0Pj4yNCE9MTAmKDB8KGw9bCsxfDApKTwoMHxmKSYmKG09MHx1ZVtjPj4wXSk8PDI0Pj4yNDspcD1wKzF8MDthW0E+PjJdPSgwfGFbQT4+Ml0pK2x9ZWxzZSBsPTA7cmV0dXJuIDB8bH0sZnVuY3Rpb24gZmFlKGwsYyxmKXt2YXIgcCxtO3Jl''@;'; put 'put ''dHVybiBsfD0wLGN8PTAsKGw9MHxhWyhmPTM2KyhmfD0wKXwwKT4+Ml0pP2FbZj4+Ml09YVtsPj4yXTpsPTB8UW4oMjApLHA9MHxhWzQrKG09Yys4fDApPj4yXSxhWyhmPWwrOHwwKT4+Ml09YVttPj4yXSxhW2YrND4+Ml09cCxhW2wrMTY+PjJdPWFbYysxNj4+Ml0sMHxsfSxmdW5jdGlvbiBp''@;'; put 'put ''VihsLGMsZil7cmV0dXJuIGN8PTAsZnw9MCxmPTB8bXIoMjQpLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLGFbZisxNj4+Ml09YVtjKzE2Pj4yXSxhW2YrMjA+PjJdPWFbYysyMD4+Ml0sMHxmfSxmdW5jdGlvbiBDYyhsLGMsZil7cmV0dXJuIGN8PTAsZnw9MCxm''@;'; put 'put ''PTB8bXIoMTIpLGFbZj4+Ml09YVtjPj4yXSwwfGZ9LGZ1bmN0aW9uIExLKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wO2U6ZG97c3dpdGNoKGYtY3wwKXtjYXNlIDI6MTE2PT0oMHx1ZVtjKzE+PjBdKT9sPShsPTB8dWVbYz4+MF0pPDwyND4+MjQ9PTEwOD82MDpsPDwyND4+MjQ9PTEw''@;'; put 'put ''Mz82MjowOnA9MTQ7YnJlYWs7Y2FzZSAzOjk3PT0oMHx1ZVtjPj4wXSkmJjEwOT09KDB8dWVbYysxPj4wXSkmJjExMj09KDB8dWVbYysyPj4wXSk/bD0zODpwPTE0O2JyZWFrO2Nhc2UgNDpzd2l0Y2goMHx1ZVtjPj4wXSl7Y2FzZSAxMTM6aWYoMTE3IT0oMHx1ZVtjKzE+PjBdKSl7cD0xNDti''@;'; put 'put ''cmVhayBlfWlmKDExMSE9KDB8dWVbYysyPj4wXSkpe3A9MTQ7YnJlYWsgZX1pZigxMTY9PSgwfHVlW2MrMz4+MF0pKXtsPTM0O2JyZWFrIGV9cD0xNDticmVhayBlO2Nhc2UgOTc6aWYoMTEyIT0oMHx1ZVtjKzE+PjBdKSl7cD0xNDticmVhayBlfWlmKDExMSE9KDB8dWVbYysyPj4wXSkpe3A9''@;'; put 'put ''MTQ7YnJlYWsgZX1pZigxMTU9PSgwfHVlW2MrMz4+MF0pKXtsPTM5O2JyZWFrIGV9cD0xNDticmVhayBlO2RlZmF1bHQ6cD0xNDticmVhayBlfWRlZmF1bHQ6cD0xNH19d2hpbGUoMCk7cmV0dXJuIDE0PT0oMHxwKSYmKGw9MCksMHxsfSxmdW5jdGlvbiBDQWUobCxjLGYpe2x8PTAsY3w9MCxm''@;'; put 'put ''fD0wO3ZhciBwPTA7ZTpkb3tzd2l0Y2goMHwoZi1jfDApLzIpe2Nhc2UgMjowPT0oMHx1ZVtjKzI+PjBdKSYmMTE2PT0oMHx1ZVtjKzM+PjBdKT9sPTEwOD09KDB8KGw9MHx1ZVtjPj4wXT8tMTowfHVlW2MrMT4+MF0pKT82MDoxMDM9PSgwfGwpPzYyOjA6cD0yNzticmVhaztjYXNlIDM6MD09''@;'; put 'put ''KDB8dWVbYz4+MF0pJiY5Nz09KDB8dWVbYysxPj4wXSkmJjA9PSgwfHVlW2MrMj4+MF0pJiYxMDk9PSgwfHVlW2MrMz4+MF0pJiYwPT0oMHx1ZVtjKzQ+PjBdKSYmMTEyPT0oMHx1ZVtjKzU+PjBdKT9sPTM4OnA9Mjc7YnJlYWs7Y2FzZSA0OmlmKDB8dWVbYz4+MF0pcD0yNztlbHNlIHN3aXRj''@;'; put 'put ''aCgwfHVlW2MrMT4+MF0pe2Nhc2UgMTEzOmlmKDB8dWVbYysyPj4wXSl7cD0yNzticmVhayBlfWlmKDExNyE9KDB8dWVbYyszPj4wXSkpe3A9Mjc7YnJlYWsgZX1pZigwfHVlW2MrND4+MF0pe3A9Mjc7YnJlYWsgZX1pZigxMTEhPSgwfHVlW2MrNT4+MF0pKXtwPTI3O2JyZWFrIGV9aWYoMHx1''@;'; put 'put ''ZVtjKzY+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTE2PT0oMHx1ZVtjKzc+PjBdKSl7bD0zNDticmVhayBlfXA9Mjc7YnJlYWsgZTtjYXNlIDk3OmlmKDB8dWVbYysyPj4wXSl7cD0yNzticmVhayBlfWlmKDExMiE9KDB8dWVbYyszPj4wXSkpe3A9Mjc7YnJlYWsgZX1pZigwfHVlW2MrND4+MF0p''@;'; put 'put ''e3A9Mjc7YnJlYWsgZX1pZigxMTEhPSgwfHVlW2MrNT4+MF0pKXtwPTI3O2JyZWFrIGV9aWYoMHx1ZVtjKzY+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTE1PT0oMHx1ZVtjKzc+PjBdKSl7bD0zOTticmVhayBlfXA9Mjc7YnJlYWsgZTtkZWZhdWx0OnA9Mjc7YnJlYWsgZX1icmVhaztkZWZhdWx0''@;'; put 'put ''OnA9Mjd9fXdoaWxlKDApO3JldHVybiAyNz09KDB8cCkmJihsPTApLDB8bH0sZnVuY3Rpb24gUUsobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTA7ZTpkb3tzd2l0Y2goMHwoZi1jfDApLzIpe2Nhc2UgMjowPT0oMHx1ZVtjKzM+PjBdKSYmMTE2PT0oMHx1ZVtjKzI+PjBdKT9sPTEwOD09''@;'; put 'put ''KDB8KGw9MHx1ZVtjKzE+PjBdPy0xOjB8dWVbYz4+MF0pKT82MDoxMDM9PSgwfGwpPzYyOjA6cD0yNzticmVhaztjYXNlIDM6MD09KDB8dWVbYysxPj4wXSkmJjk3PT0oMHx1ZVtjPj4wXSkmJjA9PSgwfHVlW2MrMz4+MF0pJiYxMDk9PSgwfHVlW2MrMj4+MF0pJiYwPT0oMHx1ZVtjKzU+PjBd''@;'; put 'put ''KSYmMTEyPT0oMHx1ZVtjKzQ+PjBdKT9sPTM4OnA9Mjc7YnJlYWs7Y2FzZSA0OmlmKDB8dWVbYysxPj4wXSlwPTI3O2Vsc2Ugc3dpdGNoKDB8dWVbYz4+MF0pe2Nhc2UgMTEzOmlmKDB8dWVbYyszPj4wXSl7cD0yNzticmVhayBlfWlmKDExNyE9KDB8dWVbYysyPj4wXSkpe3A9Mjc7YnJlYWsg''@;'; put 'put ''ZX1pZigwfHVlW2MrNT4+MF0pe3A9Mjc7YnJlYWsgZX1pZigxMTEhPSgwfHVlW2MrND4+MF0pKXtwPTI3O2JyZWFrIGV9aWYoMHx1ZVtjKzc+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTE2PT0oMHx1ZVtjKzY+PjBdKSl7bD0zNDticmVhayBlfXA9Mjc7YnJlYWsgZTtjYXNlIDk3OmlmKDB8dWVb''@;'; put 'put ''YyszPj4wXSl7cD0yNzticmVhayBlfWlmKDExMiE9KDB8dWVbYysyPj4wXSkpe3A9Mjc7YnJlYWsgZX1pZigwfHVlW2MrNT4+MF0pe3A9Mjc7YnJlYWsgZX1pZigxMTEhPSgwfHVlW2MrND4+MF0pKXtwPTI3O2JyZWFrIGV9aWYoMHx1ZVtjKzc+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTE1PT0o''@;'; put 'put ''MHx1ZVtjKzY+PjBdKSl7bD0zOTticmVhayBlfXA9Mjc7YnJlYWsgZTtkZWZhdWx0OnA9Mjc7YnJlYWsgZX1icmVhaztkZWZhdWx0OnA9Mjd9fXdoaWxlKDApO3JldHVybiAyNz09KDB8cCkmJihsPTApLDB8bH0sZnVuY3Rpb24gSXVlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGIsayxNLHA9MCxt''@;'; put 'put ''PTAsQT0wLHc9MDtyZXR1cm4gaz1vZSxvZT1vZSszMnwwLHA9ayxhWyh3PWsrMTZ8MCk+PjJdPWN8PTAsYVsobT13KzR8MCk+PjJdPWYtKDAhPSgwfChNPTB8YVsoYj1sKzQ4fDApPj4yXSkpJjEpLGFbdys4Pj4yXT1hWyhBPWwrNDR8MCk+PjJdLGFbdysxMj4+Ml09TSxhW3A+PjJdPWFbbCs2''@;'; put 'put ''MD4+Ml0sYVtwKzQ+PjJdPXcsYVtwKzg+PjJdPTIsKDB8KHA9MHxJZigwfG1iKDE0NSwwfHApKSkpPj0xP3A+Pj4wPih3PTB8YVttPj4yXSk+Pj4wJiYobT0wfGFbQT4+Ml0sYVsoQT1sKzR8MCk+PjJdPW0sYVtsKzg+PjJdPW0rKHAtdyksMHxhW2I+PjJdJiYoYVtBPj4yXT1tKzEsdWVbYyso''@;'; put 'put ''ZistMSk+PjBdPTB8dWVbbT4+MF0pLHA9Zik6YVtsPj4yXT1hW2w+PjJdfDQ4JnBeMTYsb2U9aywwfHB9LGZ1bmN0aW9uIER1ZShsLGMsZil7dmFyIHAsbSxBO3JldHVybiBjfD0wLGZ8PTAsbT1vZSxvZT1vZSszMnwwLHA9bSsyMHwwLGFbKEE9bSk+PjJdPWFbNjArKGx8PTApPj4yXSxhW0Er''@;'; put 'put ''ND4+Ml09MCxhW0ErOD4+Ml09YyxhW0ErMTI+PjJdPXAsYVtBKzE2Pj4yXT1mLCgwfElmKDB8eTEoMTQwLDB8QSkpKTwwPyhhW3A+PjJdPS0xLGw9LTEpOmw9MHxhW3A+PjJdLG9lPW0sMHxsfSxmdW5jdGlvbiBMdWUobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxwPTA7cmV0dXJuIG09b2Usb2U9''@;'; put 'put ''b2UrMzJ8MCxwPW0sYVszNisobHw9MCk+PjJdPTE4LDA9PSg2NCZhW2w+PjJdfDApJiYoYVtwPj4yXT1hW2wrNjA+PjJdLGFbcCs0Pj4yXT0yMTUyMyxhW3ArOD4+Ml09bSsxNiwwfEU0KDU0LDB8cCkpJiYodWVbbCs3NT4+MF09LTEpLHA9MHxmJChsLGMsZiksb2U9bSwwfHB9LGYkLGZ1bmN0''@;'; put 'put ''aW9uIGljZShsLGMsZil7dmFyIHAsbTtyZXR1cm4gRG8oMHwobT0wfGFbKHA9MjArKGx8PTApfDApPj4yXSksMHwoY3w9MCksMHwobD0obD0oMHxhW2wrMTY+PjJdKS1tfDApPj4+MD4oZnw9MCk+Pj4wP2Y6bCkpLGFbcD4+Ml09KDB8YVtwPj4yXSkrbCwwfGZ9LFhyLGZ1bmN0aW9uIHNzZShs''@;'; put 'put ''LGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIG1lLEhlLGplLGV0LHJ0LGx0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEdlPTAsTXQ9MCxrdD0wO2x0PW9lLG9lPW9lKzExMnwwLGplPWx0Kzg4fDAsSGU9bHQrNzJ8''@;'; put 'put ''MCxLPWx0KzQwfDAsRD1sdCs4fDAsTT1sdCxwZT1sdCs2NHwwLGV0PWx0KzQ4fDAscnQ9bHQrMjR8MCxwPSgwfGFbNDcxMzRdKT4xJjE7ZG97aWYoKDB8Zik+NSl7Zm9yKEc9MHxtcigoMHxObyhsKSk8PDIpLGI9MSYoaz04PT0oMHxmKSksdz0wfEx0KGwpLFI9MDt3OyltPTB8Q0oodyxjLGIp''@;'; put 'put ''LEE9Mjg4KygwfGFbdysxNj4+Ml0pfDAsbT8oYVtBPj4yXT1SLGFbRysoUjw8Mik+PjJdPW0sbT1SKzF8MCk6KGFbQT4+Ml09LTExMTEsbT1SKSx3PTB8enQobCx3KSxSPW07aWYoRyl7aWYoMHwobT0wfGxqKEcsUikpKXtpZihrKXtMZT0wLEJlPUcsT2U9RyxiZT0xO2JyZWFrfUxlPTB8aUEo''@;'; put 'put ''RyxSKSxCZT1HLE9lPUcsYmU9MTticmVha31pZihrKXtYcigwLDg5NzU1LE0pLG09MCxMZT0wLEJlPUcsT2U9RyxiZT0xO2JyZWFrfU10PStXbltjKzQ+PjJdLF9bRD4+M109K1duW2M+PjJdLF9bRCs4Pj4zXT1NdCxYcigwLDg5ODMzLEQpLG09MCxMZT0wLEJlPUcsT2U9RyxiZT0xO2JyZWFr''@;'; put 'put ''fW09MCxMZT0wLEJlPTAsT2U9MCxiZT0wfWVsc2UgbT0wLExlPTAsQmU9MCxSPTAsT2U9MCxiZT0wfXdoaWxlKDApO21lPTAhPSgwfExlKTtlOmRve2lmKG1lKWZvcihBPTB8THQobCk7Oyl7aWYoIUEpYnJlYWsgZTtmb3IobT0wfHkwKGwsQSk7bTspSz0xNDQrKDB8YVttKzE2Pj4yXSl8MCxn''@;'; put 'put ''VihwZSxtLExlLDEsMCwwKSxHPTB8YVsoRD1wZSkrND4+Ml0sYVtLPj4yXT1hW0Q+PjJdLGFbSys0Pj4yXT1HLG09MHxrMChsLG0pO0E9MHx6dChsLEEpfWVsc2UgOD09KDB8ZikmMCE9KDB8bSkmJihLcihsLDApLHA9MSl9d2hpbGUoMCk7Zm9yKE09MD09KDB8cCksRD1sKzYwfDAsRz0xMD09''@;'; put 'put ''KDB8ZikscD0wLGs9MHxMdChsKSxtPTA7azspe2ZvcihLPWsrMTZ8MCxjPTB8eTAobCxrKTtjOyl7Yj0wfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0sdz0wfGFbKEE9YysxNnwwKT4+Ml0sTXx8MD09KDB8YVt3Kzg+PjJdKT9HZT0zNToocGU9dysxNnwwLGFbSGU+PjJd''@;'; put 'put ''PWFbKGt0PTE2KygwfGFbSz4+Ml0pfDApPj4yXSxhW0hlKzQ+PjJdPWFba3QrND4+Ml0sYVtIZSs4Pj4yXT1hW2t0Kzg+PjJdLGFbSGUrMTI+PjJdPWFba3QrMTI+PjJdLGFbamU+PjJdPWFbcGU+PjJdLGFbamUrND4+Ml09YVtwZSs0Pj4yXSxhW2plKzg+PjJdPWFbcGUrOD4+Ml0sYVtqZSsx''@;'; put 'put ''Mj4+Ml09YVtwZSsxMj4+Ml0sUkQoZXQsSGUsamUpLHBlPTU2KygwfGFbQT4+Ml0pfDAsYVtIZT4+Ml09YVsoYj0xNisoMHxhW2IrMTY+PjJdKXwwKT4+Ml0sYVtIZSs0Pj4yXT1hW2IrND4+Ml0sYVtIZSs4Pj4yXT1hW2IrOD4+Ml0sYVtIZSsxMj4+Ml09YVtiKzEyPj4yXSxhW2plPj4yXT1h''@;'; put 'put ''W3BlPj4yXSxhW2plKzQ+PjJdPWFbcGUrND4+Ml0sYVtqZSs4Pj4yXT1hW3BlKzg+PjJdLGFbamUrMTI+PjJdPWFbcGUrMTI+PjJdLFJEKHJ0LEhlLGplKSxhW0hlPj4yXT1hW2V0Pj4yXSxhW0hlKzQ+PjJdPWFbZXQrND4+Ml0sYVtIZSs4Pj4yXT1hW2V0Kzg+PjJdLGFbSGUrMTI+PjJdPWFb''@;'; put 'put ''ZXQrMTI+PjJdLGFbamU+PjJdPWFbcnQ+PjJdLGFbamUrND4+Ml09YVtydCs0Pj4yXSxhW2plKzg+PjJdPWFbcnQrOD4+Ml0sYVtqZSsxMj4+Ml09YVtydCsxMj4+Ml0sTnkoMCxjKSk7ZTpkb3tpZigzNT09KDB8R2UpJiYoR2U9MCxrdD0wfFR0W3crMTY4Pj4xXSxBPWt0PDwxNj4+MTYsa3Q8''@;'; put 'put ''PDE2Pj4xNikpe2lmKCgwfGspPT0oMHxiKSl7cHx8KG09MHxtcig5NiksYVttKzg0Pj4yXT0wfG1yKDExNTIwKygoMHxObyhsKSk8PDUpfDApLHA9bSksYkoocCxjLDB8YVsyNDgrKDB8YVsxNisoMHxhW0Q+PjJdKT4+Ml0pPj4yXSk7YnJlYWt9aWYoIW1lKXtJYWUobCxjLGYsMTc3OTIpO2Jy''@;'; put 'put ''ZWFrfWZvcihBPTB8dWVbMTk0OTU0XT8xOkEsdz1jLGI9MDs7KXtpZigoMHxiKT49KDB8QSkpYnJlYWsgZTtHP2tKKDAsdyxCZSxSLDEpOnVzZSgwLHcpLHc9MHxhWzE3MisoMHxhW3crMTY+PjJdKT4+Ml0sYj1iKzF8MH19fXdoaWxlKDApO2M9MHxrMChsLGMpfWs9MHx6dChsLGspfWlmKG1l''@;'; put 'put ''JiZmdW5jdGlvbiBnXyhsKXt2YXIgYyxmO0h0KDB8YVs4KyhsfD0wKT4+Ml0pLEh0KDB8YVtsKzEyPj4yXSksSHQoMHxhW2wrMTY+PjJdKSxIdCgwfGFbbCsyMD4+Ml0pLDB8KGM9MHxhWyhmPWwrMjR8MCk+PjJdKSYmKEh0KDB8YVtjPj4yXSksSHQoMHxhW2Y+PjJdKSksSHQobCl9KExlKSww''@;'; put 'put ''fHAmJihIdCgwfGFbcCs4ND4+Ml0pLEh0KG0pKSxiZSl7Zm9yKHA9MDshKCgwfHApPj0oMHxSKSk7KUh0KDB8YVtCZSsocDw8Mik+PjJdKSxwPXArMXwwO0h0KE9lKX1yZXR1cm4gb2U9bHQsMH0sZnVuY3Rpb24gY0FlKGwsYyxmKXtmfD0wO3ZhciBtZSxiZSxPZSxMZSxCZSxIZSxqZSxldCxy''@;'; put 'put ''dCxHZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbHQ9MCxNdD0wLGt0PTAsYXQ9MDtmb3IoR2U9b2Usb2U9b2UrOTZ8MCxydD1HZSs0OHwwLGV0PUdlKzI0fDAsamU9R2UrMTZ8MCxIZT1HZSs4fDAsYmU9R2UsT2U9MTYrKGx8PTApfDAsTGU9NCso''@;'; put 'put ''Y3w9MCl8MCxCZT00KyhtZT1HZSs4MHwwKXwwLEs9MHxMdChsKSxmPTAscD0wLG09MCxBPTA7Szspe2ZvcihwZT0wfHkwKGwsSyksUj1mLEc9QTtwZTspe2Y9MD09KDB8VHRbMTY4KygwfGFbcGUrMTY+PjJdKT4+MV0pO2Rve2lmKCgwfEspPT0oMHxhWygyPT0oMyZhW3BlPj4yXXwwKT9wZTpw''@;'; put 'put ''ZSstNDh8MCkrNDA+PjJdKSlmPyhBPVIsZj1HKToocD9mPUc6KGY9MHxtcig5NiksYVtmKzg0Pj4yXT0wfG1yKDExNTIwKygoMHxObyhsKSk8PDUpfDApLHA9ZiksYkoocCxwZSwwfGFbMjQ4KygwfGFbT2U+PjJdKT4+Ml0pLEE9Uik7ZWxzZSBpZihmKUE9UixmPUc7ZWxzZXtpZihtPTB8aTFl''@;'; put 'put ''KHBlLGMpLDB8bGooMHxhWyhBPW0rOHwwKT4+Ml0sMHxhW20+PjJdKSl7aWYoISh3PTB8aUEoMHxhW0E+PjJdLDB8YVttPj4yXSkpKXtYcigwLDk0MzUyLEhlKSxBPTEsZj1HO2JyZWFrfWZvcihmPXBlO2Y7KU10PTE0NCsoMHxhWyhsdD1mKzE2fDApPj4yXSl8MCxnVihiZSxmLHcsMCwwfGFb''@;'; put 'put ''QT4+Ml0sMHxhW20+PjJdKSxrdD0wfGFbKGF0PWJlKSs0Pj4yXSxhW010Pj4yXT1hW2F0Pj4yXSxhW010KzQ+PjJdPWt0LGtKKDAsZiwwfGFbQT4+Ml0sMHxhW20+PjJdLDApLGY9MHxhWzE3MisoMHxhW2x0Pj4yXSk+PjJdO2ZBZShtKSxBPVIsZj1HO2JyZWFrfVI/KEE9UixmPUcpOihJYyht''@;'; put 'put ''ZSxsKSxmPTB8WVQobCw4LDgpLFhyKDAsOTQ0MzYsamUpLCEoKE09K1duW2M+PjJdKT49KGs9KygwfGYpKSkmISgoRD0rV25bTGU+PjJdKT49ayk/ISgoYj0rV25bbWU+PjJdKTw9TSkmISgoaz0rV25bQmU+PjJdKTw9RCl8fChfW3J0Pj4zXT1iLF9bcnQrOD4+M109ayxfW3J0KzE2Pj4zXT1N''@;'; put 'put ''LF9bcnQrMjQ+PjNdPUQsWHIoMyw5NDU1MixydCkpOihhW2V0Pj4yXT1mLF9bZXQrOD4+M109TSxfW2V0KzE2Pj4zXT1ELFhyKDMsOTQ1MDIsZXQpKSxBPTEsZj1HKX19d2hpbGUoMCk7cGU9MHxrMChsLHBlKSxSPUEsRz1mfUs9MHx6dChsLEspLGY9UixBPUd9cmV0dXJuIGZ1bmN0aW9uIENq''@;'; put 'put ''KGwpezB8KGx8PTApJiYoSHQoMHxhW2wrOD4+Ml0pLEh0KGwpKX0obSksMHxwJiYoSHQoMHxhW3ArODQ+PjJdKSxIdChBKSksb2U9R2UsMHxmfSxmdW5jdGlvbiBOc2UobCxjLGYpe2x8PTAsZnw9MDt2YXIgcCxtLHcsQT0wO2ZvcihBPTB8YVsoY3w9MCk+PjJdLHA9MHxhW2MrND4+Ml0sYz1t''@;'; put 'put ''PTB8YVtjKzg+PjJdO2M7KXtmb3IobD1tO2w7KSgwfGMpIT0oMHxsKSYmdVgoMHxhW2M+PjJdLDB8YVtsPj4yXSksbD0wfGFbbCs0Pj4yXTtjPTB8YVtjKzQ+PjJdfXJldHVybiBlOChmLHc9QSstMXwwLGw9cCstMXwwLG0pLGU4KGYsdyxwLG0pLGU4KGYsdyxjPXArMXwwLG0pLGU4KGYsQSxs''@;'; put 'put ''LG0pLGU4KGYsQSxjLG0pLGU4KGYsQT1BKzF8MCxsLG0pLGU4KGYsQSxwLG0pLGU4KGYsQSxjLG0pLDB9LGZ1bmN0aW9uIEo5ZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEQsUixPZSxNdCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxMZT0w''@;'; put 'put ''LEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MCxHZT0wLGx0PTAsa3Q9MDtNdD1vZSxvZT1vZSs0OHwwLFI9TXQrMjR8MCxEPU10KzE2fDAsT2U9TXQscD0wO2U6Zm9yKDs7KXtpZigoMHxwKT49KDB8Yykpe3A9MDticmVha31mb3IoYVtPZT4+Ml09YVsocnQ9MHxhWyhldD0wfGFbbCsocDw8Mik+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXSxhW09lKzQ+PjJdPWFbcnQrND4+Ml0sYVtPZSs4Pj4yXT1hW3J0Kzg+PjJdLGFbT2UrMTI+PjJdPWFbcnQrMTI+PjJdLEdlPWYrKDQwKnB8MCkrOHwwLEc9ZisoNDAqcHwwKSsyNHwwLEs9ZisoNDAqcHwwKSszMnwwLEE9ZisoNDAqcHwwKSsxNnwwLHA9cnQ9cCsxfDA7''@;'; put 'put ''Oyl7aWYoKDB8cCk+PSgwfGMpKXtwPXJ0O2NvbnRpbnVlIGV9aWYodz0wfGFbbCsocDw8Mik+PjJdLCEoISgoTT0hKChiPStfW0dlPj4zXSk8PShrPStfW2YrKDQwKnB8MCkrMjQ+PjNdKSkpfCEoYj49KG09K19bZisoNDAqcHwwKSs4Pj4zXSkpKSYmKHBlPStfW0E+PjNdLG1lPStfW2YrKDQw''@;'; put 'put ''KnB8MCkrMzI+PjNdLHBlPD1tZSkmJihiZT0rX1tmKyg0MCpwfDApKzE2Pj4zXSxwZT49YmUpKXx8ISgoa3Q9K19bRz4+M10pPD1rKXwhKGt0Pj1tKXx8ISgoa3Q9K19bSz4+M10pPD1tZSl8IShrdD49YmUpKWx0PTExO2Vsc2UgaWYoYVtEPj4yXT1hW3c+PjJdLGFbRCs0Pj4yXT1hW3crND4+''@;'; put 'put ''Ml0sYVtSPj4yXT1hW09lPj4yXSxhW1IrND4+Ml09YVtPZSs0Pj4yXSxhW1IrOD4+Ml09YVtPZSs4Pj4yXSxhW1IrMTI+PjJdPWFbT2UrMTI+PjJdLDB8QTYoRCxSKSl7cD0xO2JyZWFrIGV9aWYoMTE9PSgwfGx0KSYmKGx0PTAsISghKG08PShMZT0rX1tHPj4zXSkpfCEobT49YikpKSYmKEJl''@;'; put 'put ''PStfW2YrKDQwKnB8MCkrMTY+PjNdKTw9KEhlPStfW0s+PjNdKSYmISghKEJlPj0oamU9K19bQT4+M10pKXwhKGs8PUxlKXxNKSYmISghKChrdD0rX1tmKyg0MCpwfDApKzMyPj4zXSk8PUhlKXwhKGt0Pj1qZSkpJiYoTT0wfGFbdz4+Ml0sYVtEPj4yXT1hW2V0Pj4yXSxhW0QrND4+Ml09YVtl''@;'; put 'put ''dCs0Pj4yXSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSwwfEE2KEQsUikpKXtwPTE7YnJlYWsgZX1wPXArMXwwfX1yZXR1cm4gb2U9TXQsMHxwfSxmdW5jdGlvbiBEUChsLGMsZil7bHw9MCxjfD0w''@;'; put 'put ''O3ZhciB3LGsscD0wLG09MCxBPTAsYj0wO2ZvcihrPW9lLG9lPW9lKzE2fDAsYVsoQT1rKT4+Ml09Znw9MCx3PStfWyhiPTB8YVtsPj4yXSk+PjNdLGI9MHxhWyhsPTB8YVtiKzg+PjJdKT4+Ml0sdGgobCxjLEEsMCksbD0wLG09MDshKCgwfGwpPj0oMHxiKSk7KXA9K19bYysobDw8Myk+PjNd''@;'; put 'put ''K20sbD1sKzF8MCxtPXA7Zm9yKHA9KygwfGIpLGY9MHxhW0E+PjJdLGw9MDshKCgwfGwpPj0oMHxiKSk7KV9bKEE9ZisobDw8Myl8MCk+PjNdPSgrX1tjKyhsPDwzKT4+M10qcC1tKSp3KyArX1tBPj4zXSxsPWwrMXwwO3JldHVybiBvZT1rLDB8Zn0sZnVuY3Rpb24gekcobCxjLGYpe3ZhciBw''@;'; put 'put ''LG07cmV0dXJuIGx8PTAsY3w9MCxtPW9lLG9lPW9lKzE2fDAsYVsocD1tKT4+Ml09Znw9MCx0aCgwfGFbbD4+Ml0sYyxwLDApLG9lPW0sMHxhW3A+PjJdfSxmdW5jdGlvbiBUMyhsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG09MDtmb3IocD1+fitfWyhtPTB8YVsobHw9MCk+PjJdKT4+M10sbT1t''@;'; put 'put ''Kzh8MCxsPTA7ISgoMHxsKT49KDB8cCkpOylfW2YrKGw8PDMpPj4zXT0rX1ttKyhsPDwzKT4+M10qK19bYysobDw8Myk+PjNdLGw9bCsxfDA7cmV0dXJuIDB8Zn0sZnVuY3Rpb24gdEYobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAsSz0wLHBlPTA7ZTpkb3tpZig5OSZmKXA9MHxtaVs2MyZhW2FbbCsxNj4+Ml0+PjJdXShsLGMsZik7ZWxzZXtpZigwIT0oNTE2JmZ8MCl8fDAhPSgzODQmZnwwKSYwPT0oMTImKHA9MHxhWzQrKDB8YVtsKzE2Pj4yXSk+PjJdKXwwKSltPWw7ZWxzZXtpZigxMiZwfDApe2lmKCEoNDA4''@;'; put 'put ''JmYpKXtwPTA7YnJlYWt9Zm9yKEs9MCE9KDEzNiZmfDApLHBlPTAhPSgyNzImZnwwKSxEPTAsbT0wLHA9MCxHPWw7Rzspe1I9MHxtaVs2MyZhW2FbRysxNj4+Ml0+PjJdXShHLGMsZik7ZG97aWYoUil7aWYoaz0wfGFbMjArKHc9MHxhW0crND4+Ml0pPj4yXSxBPVIrKDB8YVt3Pj4yXSl8MCxN''@;'; put 'put ''PSgwfChiPTB8YVt3KzQ+PjJdKSk8MD8wfGFbQT4+Ml06QSwwfHApe2Rve2lmKCFrKXtpZigoMHxiKTwxKXtBPTB8WmkoTSxtKTticmVha31BPTB8JGgoTSxtLGIpO2JyZWFrfUE9MHxEMFsxMjcma10oRyxNLG0sdyl9d2hpbGUoMCk7aWYoIShLJigwfEEpPDB8cGUmKDB8QSk+MCkpe0E9RDti''@;'; put 'put ''cmVha319QT1HLG09TSxwPVJ9ZWxzZSBBPUR9d2hpbGUoMCk7RD1BLEc9MHxhW0crMjg+PjJdfWFbbCszMj4+Ml09RDticmVha31pZighKDI0JmYpKXtwPTA7YnJlYWt9KG09MHxhWyhrPWwrMzJ8MCk+PjJdKT8oQT0wfGFbNCsoMHxhW20rOD4+Ml0pPj4yXSwoMHwocD0oMHwocD0wfGFbOCso''@;'; put 'put ''MHxhW20rND4+Ml0pPj4yXSkpPDA/MHxhW0ErOD4+Ml06QSsoMC1wKXwwKSk9PSgwfGMpP3A9YzoobT1sLHc9MzIpKToobT1sLHc9MzIpO2Rve2lmKDMyPT0oMHx3KSl7Zm9yKDs7KXtpZighbSl7dz0zMzticmVha31pZigwfChwPTB8bWlbNjMmYVthW20rMTY+PjJdPj4yXV0obSxjLDQpKSl7''@;'; put 'put ''dz0zNjticmVha31tPTB8YVttKzI4Pj4yXSx3PTMyfWlmKDMzPT0oMHx3KSl7YVtrPj4yXT0wLHA9MDticmVhayBlfWlmKDM2PT0oMHx3KSl7YVtrPj4yXT1tO2JyZWFrfX19d2hpbGUoMCk7Zm9yKGI9MTI4KyhmPDw0JjEyOF4xMjgpfDAscD0wfG1pWzYzJmFbYVttKzE2Pj4yXT4+Ml1dKG0s''@;'; put 'put ''cCxmKTs7KXtmb3Iodz1tKzE2fDA7cDspe2ZvcihBPWw7Oyl7aWYoKDB8QSk9PSgwfG0pKWJyZWFrIGU7aWYoMHxtaVs2MyZhW2FbQSsxNj4+Ml0+PjJdXShBLHAsNCkpYnJlYWs7QT0wfGFbQSsyOD4+Ml19cD0wfG1pWzYzJmFbYVt3Pj4yXT4+Ml1dKG0scCxmKX1pZihhW2s+PjJdPW09MHxh''@;'; put 'put ''W20rMjg+PjJdLCFtKXtwPTA7YnJlYWsgZX1wPTB8bWlbNjMmYVthW20rMTY+PjJdPj4yXV0obSwwLGIpfX1mb3IoOzspe2lmKCFtKXttPTAscD0wO2JyZWFrfWlmKDB8KHA9MHxtaVs2MyZhW2FbbSsxNj4+Ml0+PjJdXShtLGMsZikpKWJyZWFrO209MHxhW20rMjg+PjJdfWFbbCszMj4+Ml09''@;'; put 'put ''bX19d2hpbGUoMCk7cmV0dXJuIDB8cH0sbVcsYW8seXMsVDAsZnVuY3Rpb24gV04obCxjLGYpe3JldHVybiBsfD0wLGN8PTAsZnw9MCxmPTB8VGYoMSwzMiksMHwobD0wfGFbYz4+Ml0pJiYoYVtmPj4yXT0wfG5hKGwpKSwwfChsPTB8YVtjKzQ+PjJdKSYmKGFbZis0Pj4yXT0wfG5hKGwpKSxh''@;'; put 'put ''W2YrMjQ+PjJdPTEyNyZhW2MrMjQ+PjJdLF9bZisxNj4+M109K19bYysxNj4+M10sYVtmKzg+PjJdPWFbYys4Pj4yXSwwfGZ9LHVRLGZ1bmN0aW9uIGZFKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7Zm9yKG09MHxhWyhsfD0wKT4+Ml0sQT1s''@;'; put 'put ''KzE2fDAscD0wOyEoKDB8cCk+PSgwfG0pKTspYVsoMHxhW0E+PjJdKSsoNDAqcHwwKT4+Ml09LTIxNDc0ODM2NDgscD1wKzF8MDshZnVuY3Rpb24gdkIoKXthWzQ3Mzg3XT0wfSgpO2U6ZG97aWYoMHxKYihjKSlwPTE7ZWxzZXthW2MrOD4+Ml09MCxhW2M+PjJdPTAsYz1sKzIwfDA7dDpmb3Io''@;'; put 'put ''Ozspe2lmKCEobT0wfEFCKCkpKXtwPTA7YnJlYWsgZX1pZihhW20+PjJdPTAtKDB8YVttPj4yXSksKDB8bSk9PSgwfGYpKXtwPTA7YnJlYWsgZX1mb3IoQT1tKzE2fDAsdz1tKzI4fDAscD0wOzspe2lmKCgwfHApPj0oMHxUdFtBPj4xXSkpY29udGludWUgdDtrPTB8alIobCxiPSgwfGFbYz4+''@;'; put 'put ''Ml0pKygyNCooMHxhWygwfGFbdz4+Ml0pKyhwPDwyKT4+Ml0pfDApfDAsbSksTT0wfGFbaz4+Ml07ZG97aWYoKDB8TSk8MCl7aWYoRD1+fi0oK19bYj4+M10rICsoMHxhW20+PjJdKSksLTIxNDc0ODM2NDg9PSgwfE0pKXtpZihhW2s+PjJdPUQsMHxKYihrKSl7cD0xO2JyZWFrIGV9YVtrKzg+''@;'; put 'put ''PjJdPW0sYVtrKzEyPj4yXT1iO2JyZWFrfWlmKCgwfE0pPj0oMHxEKSlicmVhaztqRShrLEQpLGFbays4Pj4yXT1tLGFbaysxMj4+Ml09YjticmVha319d2hpbGUoMCk7cD1wKzF8MH19fX13aGlsZSgwKTtyZXR1cm4gMHxwfSwkZixWaixmdW5jdGlvbiBVMWUobCxjLGYpe3JldHVybiBsfD0w''@;'; put 'put ''LGN8PTAsLTE9PSgwfChmPTB8aXcoZnw9MCkpKT9mPTA6KHVlW2wrNjk+PjBdPWYsYVtsPj4yXT02OSxhW2wrND4+Ml09NzAsYVtsKzQ4Pj4yXT0zMSxhW2wrNzI+PjJdPWMsYVtjPj4yXT1sLGY9MSksMHxmfSxmdW5jdGlvbiBXMWUobCxjLGYpe3ZhciBwLG0sQSx3O2x8PTAsZnw9MCxBPW9l''@;'; put 'put ''LG9lPW9lKzE0NHwwLHA9QSs4fDAsbT1BLGFbKHc9QSs0fDApPj4yXT1jfD0wLGFbbT4+Ml09cCxMMVsxMjcmYVtsKzU2Pj4yXV0obCx3LGYsbSxwKzEyN3wwKTtkb3tpZigoMHxhW3c+PjJdKT09KDB8Zikpe2lmKHVlW2FbbT4+Ml0+PjBdPTAsMHx6aihwLDE0NDMxNSkmJjI9PSgwfGFbbCs2''@;'; put 'put ''ND4+Ml0pKWJyZWFrO2w9LTEhPSgwfChsPTB8aXcocCkpKT8wfGFbNTg5NDgrKGw8PDIpPj4yXTowfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBvZT1BLDB8bH0sZnVuY3Rpb24gSzFlKGwsYyxmKXt2YXIgcCxtLEEsdztsfD0wLGZ8PTAsQT1vZSxvZT1vZSsxNDR8MCxwPUErOHwwLG09QSxh''@;'; put 'put ''Wyh3PUErNHwwKT4+Ml09Y3w9MCxhW20+PjJdPXAsTDFbMTI3JmFbbCs1Nj4+Ml1dKGwsdyxmLG0scCsxMjd8MCk7ZG97aWYoKDB8YVt3Pj4yXSk9PSgwfGYpKXtpZih1ZVthW20+PjJdPj4wXT0wLDB8emoocCwxNDQzMTUpJiYyPT0oMHxhW2wrNjQ+PjJdKSlicmVhaztsPS0xIT0oMHwobD0w''@;'; put 'put ''fGl3KHApKSk/MHxhWzYwNDU2KyhsPDwyKT4+Ml06MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gb2U9QSwwfGx9LGZ1bmN0aW9uIHdjZShsLGMsZil7cmV0dXJuIDB8ZnVuY3Rpb24gSCQobCxjLGYpe2N8PTA7dmFyIHAsQSx3LG09MDtyZXR1cm4gbT0wfHN3KEE9MHxhWyhwPTg0KyhsfD0w''@;'; put 'put ''KXwwKT4+Ml0sMCx3PTI1NisoZnw9MCl8MCksRG8oMHxjLDB8QSwwfChmPShtPTA9PSgwfG0pP3c6bS1BfDApPj4+MDxmPj4+MD9tOmYpKSxhW2wrND4+Ml09QStmLGFbbCs4Pj4yXT1jPUErbXwwLGFbcD4+Ml09YywwfGZ9KGx8PTAsY3w9MCxmfD0wKX0sZzEsZzEsZzEsZzEsZzEsZzEsZzEs''@;'; put 'put ''ZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzEsZzFdLEQwPVtjYSxmdW5jdGlvbiBpc2UobCxjLGYscCl7cmV0dXJuIGx8PTAscHw9MCwobD0wfGFbKGN8PTApPj4yXSk+Pj4wPD0ocD0wfGFbKGZ8PTApPj4yXSk+Pj4wP2w+Pj4wPj1wPj4+MD8ocD0wfGFbYysyND4+''@;'; put 'put ''Ml0pPj4+MDw9KGw9MHxhW2YrMjQ+PjJdKT4+PjA/cD4+PjA+PWw+Pj4wPyhsPX5+KCtfW2MrOD4+M10tK19bZis4Pj4zXSkpfHwobD1+figrX1tjKzE2Pj4zXS0rX1tmKzE2Pj4zXSkpfHwobD1+figrX1tjKzMyPj4zXS0rX1tmKzMyPj4zXSkpfHwobD1+figrX1tjKzQwPj4zXS0rX1tmKzQw''@;'; put 'put ''Pj4zXSkpOmw9LTE6bD0xOmw9LTE6bD0xLDB8bH0sZnVuY3Rpb24gYjJlKGwsYyxmLHApe3JldHVybigwfGFbKGN8PTApPj4yXSktKDB8YVsoZnw9MCk+PjJdKXwwfSxmdW5jdGlvbiB1MWUobCxjLGYscCl7cmV0dXJuIGx8PTAsKGw9KDB8YVsoY3w9MCk+PjJdKS0oMHxhWyhmfD0wKT4+Ml0p''@;'; put 'put ''fDApfHwobD0oMHxhW2MrND4+Ml0pLSgwfGFbZis0Pj4yXSl8MCksMHxsfSxmdW5jdGlvbiB3VChsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgoMHwoYz0wfGFbKGN8PTApPj4yXSkpPCgwfChwPTB8YVsoZnw9MCk+PjJdKSk/LTE6KDB8Yyk+KDB8cCkmMSl9LGZ1bmN0aW9uIE5BKGwsYyxmLHAp''@;'; put 'put ''e3JldHVybiBwfD0wLDB8KChjPTB8YVsoY3w9MCk+PjJdKT4+PjA+KHA9MHxhWyhmfD0wKT4+Ml0pPj4+MD8xOihjPj4+MDxwPj4+MCk8PDMxPj4zMSl9LGZ1bmN0aW9uIE1UKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbSxBPTA7cmV0dXJuKDB8KGw9MHxhWzQwKyhjfD0wKT4+Ml0pKT09KDB8''@;'; put 'put ''KG09MHxhWzQwKyhmfD0wKT4+Ml0pKT8ocD0oMHxhW2M+PjJdKT4+PjQpPj4+MD49KGw9KDB8YVtmPj4yXSk+Pj40KT4+PjA/cD4+PjA+bD4+PjA/bD0xOkE9NjpsPS0xOihwPSgwfGFbbD4+Ml0pPj4+NCk+Pj4wPj0obD0oMHxhW20+PjJdKT4+PjQpPj4+MD9wPj4+MD5sPj4+MD9sPTE6QT02''@;'; put 'put ''Omw9LTEsNj09KDB8QSkmJihsPTApLDB8bH0sZnVuY3Rpb24gUGQobCxjLGYscCl7bHw9MCxmfD0wLHB8PTAsbD0wfGFbNDY5ODRdLHA9MCE9KDB8KGN8PTApKTtkb3tpZihsKXtpZihwKXtJdChsLGMpLGw9MDticmVha31sPTB8U3QobCxmKTticmVha31pZihwKXtIdChjKSxsPTA7YnJlYWt9''@;'; put 'put ''bD0wfFIwKGYpO2JyZWFrfXdoaWxlKDApO3JldHVybiAwfGx9LGZ1bmN0aW9uIGg3KGwsYyxmLHApe2x8PTAscHw9MDt2YXIgQSxtPTAsdz0wLGI9MDtBPTB8YVsobD04KygwfGFbNDArKGN8PTApPj4yXSl8MCk+PjJdLGw9MHxhW2wrND4+Ml0scD0wfGFbKG09OCsoMHxhWzQwKyhmfD0wKT4+''@;'; put 'put ''Ml0pfDApPj4yXSxtPTB8YVttKzQ+PjJdO2Rve2lmKGw+Pj4wPG0+Pj4wfCgwfGwpPT0oMHxtKSZBPj4+MDxwPj4+MClsPS0xO2Vsc2UgaWYobD4+PjA+bT4+PjB8KDB8bCk9PSgwfG0pJkE+Pj4wPnA+Pj4wKWw9MTtlbHNle2lmKCEoMD09KDB8KGw9MHxhWyhwPWMrOHwwKT4+Ml0pKSYwPT0o''@;'; put 'put ''MHwocD0wfGFbcCs0Pj4yXSkpfHwoYj1mKzh8MCx3PTB8YVtiPj4yXSxiPTB8YVtiKzQ+PjJdLDA9PSgwfHcpJjA9PSgwfGIpKSkpe2lmKHA+Pj4wPGI+Pj4wfCgwfHApPT0oMHxiKSZsPj4+MDx3Pj4+MCl7bD0tMTticmVha31pZihwPj4+MD5iPj4+MHwoMHxwKT09KDB8YikmbD4+PjA+dz4+''@;'; put 'put ''PjApe2w9MTticmVha319bD0wfX13aGlsZSgwKTtyZXR1cm4gMHxsfSxmdW5jdGlvbiB4VChsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgwPT0oMHwocD0wfGdwKDB8YVsoYz04KyhjfD0wKXwwKT4+Ml0sMHxhW2MrND4+Ml0sMHxhWyhwPTgrKGZ8PTApfDApPj4yXSwwfGFbcCs0Pj4yXSkpKT8w''@;'; put 'put ''OnA+PjMxfDEpfSxmdW5jdGlvbiBUVChsLGMsZixwKXtyZXR1cm4gMH0sZnVuY3Rpb24gc0YobCxjLGYscCl7cmV0dXJuIDB8KDA9PSgxJihmfD0wKXwwKSYhMD9mOjApfSxmdW5jdGlvbiBLQShsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgoYz0wfGFbMjQrKGN8PTApPj4yXSk+Pj4wPihwPTB8''@;'; put 'put ''YVsyNCsoZnw9MCk+PjJdKT4+PjA/MTooYz4+PjA8cD4+PjApPDwzMT4+MzEpfSxmdW5jdGlvbiBCZChsLGMsZixwKXtyZXR1cm4gbHw9MCxwfD0wLGM9MHxhWyhsPTE2KyhjfD0wKXwwKT4+Ml0scD0wfGFbKGY9MTYrKGZ8PTApfDApPj4yXSwwfCgobD0wfGFbbCs0Pj4yXSk+Pj4wPihmPTB8''@;'; put 'put ''YVtmKzQ+PjJdKT4+PjB8KDB8bCk9PSgwfGYpJmM+Pj4wPnA+Pj4wPzE6KGw+Pj4wPGY+Pj4wfCgwfGwpPT0oMHxmKSZjPj4+MDxwPj4+MCk8PDMxPj4zMSl9LGZ1bmN0aW9uIFZlKGwsYyxmLHApe3JldHVybiBsfD0wLGZ8PTAsbD0wfFphKGN8PTAscHw9MCkscD4+PjA+Zj4+PjAmJnIyKGwr''@;'; put 'put ''ZnwwLDAscC1mfDApLDB8bH0sZnVuY3Rpb24gUHQobCxjLGYscCl7cmV0dXJuIGx8PTAscHw9MCxjPTB8YVsobD04KygwfGFbMTYrKGN8PTApPj4yXSl8MCk+PjJdLHA9MHxhWyhmPTgrKDB8YVsxNisoZnw9MCk+PjJdKXwwKT4+Ml0sMHwoKGw9MHxhW2wrND4+Ml0pPj4+MDwoZj0wfGFbZis0''@;'; put 'put ''Pj4yXSk+Pj4wfCgwfGwpPT0oMHxmKSZjPj4+MDxwPj4+MD8tMToxJihsPj4+MD5mPj4+MHwoMHxsKT09KDB8ZikmYz4+PjA+cD4+PjApKX0sZnVuY3Rpb24gYW4obCxjLGYscCl7cmV0dXJuIHB8PTAsMHwoKGM9KDB8YVthWzE2KyhjfD0wKT4+Ml0+PjJdKT4+PjQpPj4+MDwocD0oMHxhW2Fb''@;'; put 'put ''MTYrKGZ8PTApPj4yXT4+Ml0pPj4+NCk+Pj4wPy0xOmM+Pj4wPnA+Pj4wJjEpfSxmdW5jdGlvbiB1YWUobCxjLGYscCl7aWYobHw9MCxwfD0wLCgwfChsPTB8YVsoY3w9MCk+PjJdKSk8PSgwfChwPTB8YVsoZnw9MCk+PjJdKSkpe2lmKCEoKDB8bCk8KDB8cCkpKXJldHVybiAwfCgoMHwoYz0w''@;'; put 'put ''fGFbYys0Pj4yXSkpPigwfChmPTB8YVtmKzQ+PjJdKSk/MTooKDB8Yyk8KDB8ZikpPDwzMT4+MzEpO2w9LTF9ZWxzZSBsPTE7cmV0dXJuIDB8bH0sZnVuY3Rpb24gb1YobCxjLGYscCl7aWYobHw9MCxwfD0wLChsPTB8YVsoY3w9MCk+PjJdKT4+PjA+PShwPTB8YVsoZnw9MCk+PjJdKT4+PjAp''@;'; put 'put ''e2lmKCEobD4+PjA+cD4+PjApKXJldHVybiAwfCgoYz0wfGFbYys0Pj4yXSk+Pj4wPChmPTB8YVtmKzQ+PjJdKT4+PjA/LTE6Yz4+PjA+Zj4+PjAmMSk7bD0xfWVsc2UgbD0tMTtyZXR1cm4gMHxsfSxmdW5jdGlvbiBSOChsLGMsZixwKXt2YXIgbSxBO3JldHVybiAwfCgoQT0rX1soY3w9MCk+''@;'; put 'put ''PjNdKT4obT0rX1soZnw9MCk+PjNdKT8xOihBPG0pPDwzMT4+MzEpfSxmdW5jdGlvbiBiYihsLGMsZixwKXt2YXIgbSxBO3JldHVybiAwfCgobT0rX1soY3w9MCk+PjNdKT4oQT0rX1soZnw9MCk+PjNdKT8xJiEoK19bYys4Pj4zXTw9K19bZis4Pj4zXSk6bTxBPyEoK19bYys4Pj4zXT49K19b''@;'; put 'put ''Zis4Pj4zXSk8PDMxPj4zMTowKX0sZnVuY3Rpb24gZUIobCxjLGYscCl7cmV0dXJuKDB8YVsoY3w9MCk+PjJdKS0oMHxhWyhmfD0wKT4+Ml0pfDB9LGZ1bmN0aW9uIE5FKGwsYyxmLHApe3JldHVybiBwfD0wLDB8KCgwfChjPTB8YVsoY3w9MCk+PjJdKSk+KDB8KHA9MHxhWyhmfD0wKT4+Ml0p''@;'; put 'put ''KT8xOigoMHxjKTwoMHxwKSk8PDMxPj4zMSl9LGZ1bmN0aW9uIGJCKGwsYyxmLHApe3ZhciBtPTAsQT0wO3JldHVybiAwfCgobT0rX1soY3w9MCk+PjNdKT4oQT0rX1soZnw9MCk+PjNdKT8xOm08QT8tMTooQT0rX1tjKzg+PjNdKT4obT0rX1tmKzg+PjNdKT8xOihBPG0pPDwzMT4+MzEpfSxm''@;'; put 'put ''dW5jdGlvbiBHRShsLGMsZixwKXt2YXIgbT0wLEE9MDtyZXR1cm4gMHwoKG09K19bOCsoY3w9MCk+PjNdKT4oQT0rX1s4KyhmfD0wKT4+M10pPzE6bTxBPy0xOihBPStfW2M+PjNdKT4obT0rX1tmPj4zXSk/MTooQTxtKTw8MzE+PjMxKX0sZnVuY3Rpb24gJDgobCxjLGYscCl7bHw9MCxjfD0w''@;'; put 'put ''LGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2U6ZG97aWYoYz4+PjA8Zj4+PjApe3N3aXRjaCgwfHVlWyhEPWwrNzJ8MCkrKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAxMjptPTB8RksoMTIsbCxjKzF8MCxmLHApO2JyZWFrIGU7Y2FzZSAxMzptPTB8RksoMTMsbCxj''@;'; put 'put ''KzF8MCxmLHApO2JyZWFrIGU7Y2FzZSAyOmlmKChmLShtPWMrMXwwKXwwKTw9MCl7bT0tMTticmVhayBlfXN3aXRjaCgwfHVlW0QrKDB8YnRbbT4+MF0pPj4wXSl7Y2FzZSAxNjptPTB8SEsobCxjKzJ8MCxmLHApO2JyZWFrIGU7Y2FzZSAxNTptPTB8VGoobCxjKzJ8MCxmLHApO2JyZWFrIGU7''@;'; put 'put ''Y2FzZSA3OmNhc2UgNjpjYXNlIDU6Y2FzZSAyOTpjYXNlIDI0OmNhc2UgMjI6YVtwPj4yXT1jLG09Mjk7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09bSxtPTA7YnJlYWsgZX1jYXNlIDk6aWYoKGMrMXwwKT09KDB8Zikpe2FbcD4+Ml09ZixtPS0xNTticmVhayBlfWI9MzticmVhaztjYXNlIDEw''@;'; put 'put ''OmNhc2UgMjE6Yj0zO2JyZWFrO2Nhc2UgMzA6bT0wfHlMKGwsYysxfDAsZixwKTticmVhayBlO2Nhc2UgMzU6YVtwPj4yXT1jKzEsbT0zODticmVhayBlO2Nhc2UgMjA6YVtwPj4yXT1jKzEsbT0yNTticmVhayBlO2Nhc2UgNDppZigoMHwobT1mLShBPWMrMXwwKXwwKSk8PTApe209LTI2O2Jy''@;'; put 'put ''ZWFrIGV9aWYoOTM9PSgwfHVlW0E+PjBdKSl7aWYoKDB8bSk8PTEpe209LTE7YnJlYWsgZX1pZig2Mj09KDB8dWVbYysyPj4wXSkpe2FbcD4+Ml09YyszLG09MzQ7YnJlYWsgZX19YVtwPj4yXT1BLG09MjY7YnJlYWsgZTtjYXNlIDMxOmFbcD4+Ml09YysxLG09MjM7YnJlYWsgZTtjYXNlIDMy''@;'; put 'put ''OmlmKChmLShtPWMrMXwwKXwwKTw9MCl7bT0tMjQ7YnJlYWsgZX1zd2l0Y2goMHx1ZVtEKygwfGJ0W20+PjBdKT4+MF0pe2Nhc2UgMzM6YVtwPj4yXT1jKzIsbT0zNjticmVhayBlO2Nhc2UgMTU6YVtwPj4yXT1jKzIsbT0zNTticmVhayBlO2Nhc2UgMzQ6YVtwPj4yXT1jKzIsbT0zNzticmVh''@;'; put 'put ''ayBlO2Nhc2UgMzI6Y2FzZSAzNjpjYXNlIDM1OmNhc2UgMTE6Y2FzZSAyMTpjYXNlIDEwOmNhc2UgOTphW3A+PjJdPW0sbT0yNDticmVhayBlO2RlZmF1bHQ6YVtwPj4yXT1tLG09MDticmVhayBlfWNhc2UgMzY6YVtwPj4yXT1jKzEsbT0yMTticmVhayBlO2Nhc2UgMTE6YVtwPj4yXT1jKzEs''@;'; put 'put ''bT0xNzticmVhayBlO2Nhc2UgMTk6bT0wfExqKGwsYysxfDAsZixwKTticmVhayBlO2Nhc2UgNTppZigoZi1jfDApPDIpe209LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSltPTE4LEE9MjtlbHNle2lmKCEoMHxSaVsxMjcmYVtsKzMyOD4+Ml1dKGwsYykpKXthW3A+''@;'; put 'put ''PjJdPWMsbT0wO2JyZWFrIGV9bT0xOSxBPTJ9YnJlYWs7Y2FzZSA2OmlmKChmLWN8MCk8Myl7bT0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKW09MTgsQT0zO2Vsc2V7aWYoISgwfFJpWzEyNyZhW2wrMzMyPj4yXV0obCxjKSkpe2FbcD4+Ml09YyxtPTA7YnJlYWsg''@;'; put 'put ''ZX1tPTE5LEE9M31icmVhaztjYXNlIDc6aWYoKGYtY3wwKTw0KXttPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtsKzM0OD4+Ml1dKGwsYykpbT0xOCxBPTQ7ZWxzZXtpZighKDB8UmlbMTI3JmFbbCszMzY+PjJdXShsLGMpKSl7YVtwPj4yXT1jLG09MDticmVhayBlfW09MTksQT00fWJyZWFr''@;'; put 'put ''O2Nhc2UgMjQ6Y2FzZSAyMjptPTE4LEE9MTticmVhaztjYXNlIDIzOmNhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1Om09MTksQT0xO2JyZWFrO2RlZmF1bHQ6YVtwPj4yXT1jLG09MDticmVhayBlfWlmKDM9PSgwfGIpKXt3PWYsQT1jO3Q6Zm9yKDs7KXtpZihtPUEsKHctKEE9QSsxfDApfDApPD0w''@;'; put 'put ''KXtiPTE4O2JyZWFrfXN3aXRjaCgwfHVlW0QrKDB8YnRbQT4+MF0pPj4wXSl7Y2FzZSAxMDpjYXNlIDIxOmNvbnRpbnVlIHQ7Y2FzZSA5OmJyZWFrO2RlZmF1bHQ6Yj0xNzticmVhayB0fWlmKChtKzJ8MCk9PSgwfGYpKXtiPTE3O2JyZWFrfX1pZigxNz09KDB8Yikpe2FbcD4+Ml09QSxtPTE1''@;'; put 'put ''O2JyZWFrfWlmKDE4PT0oMHxiKSl7YVtwPj4yXT1BLG09MTU7YnJlYWt9fWI9bCszMjh8MCxrPWwrMzMyfDAsTT1sKzMzNnwwLHc9YytBfDA7dDpmb3IoOzspe2lmKCgwfChBPWYtd3wwKSk8PTApe2I9OTk7YnJlYWt9c3dpdGNoKDB8dWVbRCsoMHxidFt3Pj4wXSk+PjBdKXtjYXNlIDI5OmI9''@;'; put 'put ''NTY7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmNhc2UgMzA6Y2FzZSAyMDpjYXNlIDM2OmNhc2UgMzU6Y2FzZSAzMjpjYXNlIDExOmI9NzA7YnJlYWsgdDtjYXNlIDM0OmI9ODk7YnJlYWsgdDtjYXNlIDMzOmI9OTI7YnJlYWsgdDtjYXNlIDE1OmI9OTU7YnJlYWsgdDtjYXNlIDI3''@;'; put 'put ''OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6dz13KzF8MCxtPWM9bTtjb250aW51ZSB0O2Nhc2UgNTppZigoMHxBKTwyKXttPS0yO2JyZWFrIGV9aWYoISgwfFJpWzEyNyZhW2I+PjJdXShsLHcpKSl7Yj02MDticmVhayB0fXc9dysyfDAsbT1jPW07Y29udGludWUgdDtjYXNlIDY6''@;'; put 'put ''aWYoKDB8QSk8Myl7bT0tMjticmVhayBlfWlmKCEoMHxSaVsxMjcmYVtrPj4yXV0obCx3KSkpe2I9NjQ7YnJlYWsgdH13PXcrM3wwLG09Yz1tO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfEEpPDQpe209LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbTT4+Ml1dKGwsdykpKXtiPTY4O2JyZWFr''@;'; put 'put ''IHR9dz13KzR8MCxtPWM9bTtjb250aW51ZSB0O2Nhc2UgMjM6c3dpdGNoKEE9dysxfDAsNjMmbSl7Y2FzZSAxODpicmVhaztjYXNlIDQxOm09MTksdz1BO2NvbnRpbnVlIHQ7ZGVmYXVsdDp3PUEsbT1jPW07Y29udGludWUgdH1pZigoMHwobT1mLUF8MCkpPD0wKXttPS0xO2JyZWFrIGV9c3dp''@;'; put 'put ''dGNoKDB8dWVbRCsoMHxidFtBPj4wXSk+PjBdKXtjYXNlIDI5OmI9NzQ7YnJlYWsgdDtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6bT00MSx3PXcrMnwwO2NvbnRpbnVlIHQ7Y2FzZSA1OmlmKCgwfG0pPDIpe209LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbYj4+''@;'; put 'put ''Ml1dKGwsQSkpKXtiPTc4O2JyZWFrIHR9bT00MSx3PXcrM3wwO2NvbnRpbnVlIHQ7Y2FzZSA2OmlmKCgwfG0pPDMpe209LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbaz4+Ml1dKGwsQSkpKXtiPTgyO2JyZWFrIHR9bT00MSx3PXcrNHwwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfG0pPDQp''@;'; put 'put ''e209LTI7YnJlYWsgZX1pZighKDB8UmlbMTI3JmFbTT4+Ml1dKGwsQSkpKXtiPTg2O2JyZWFrIHR9bT00MSx3PXcrNXwwO2NvbnRpbnVlIHQ7ZGVmYXVsdDptPTE5LHc9QTtjb250aW51ZSB0fWRlZmF1bHQ6Yj05ODticmVhayB0fX1zd2l0Y2goMHxiKXtjYXNlIDU2OmNhc2UgNjA6Y2FzZSA2''@;'; put 'put ''NDpjYXNlIDY4OmNhc2UgOTg6YVtwPj4yXT13LG09MDticmVhayBlO2Nhc2UgNzA6YVtwPj4yXT13O2JyZWFrIGU7Y2FzZSA3NDpjYXNlIDc4OmNhc2UgODI6Y2FzZSA4NjphW3A+PjJdPUEsbT0wO2JyZWFrIGU7Y2FzZSA4OTppZigxOT09KDB8bSkpe2FbcD4+Ml09dyxtPTA7YnJlYWsgZX1h''@;'; put 'put ''W3A+PjJdPXcrMSxtPTMyO2JyZWFrIGU7Y2FzZSA5MjppZigxOT09KDB8bSkpe2FbcD4+Ml09dyxtPTA7YnJlYWsgZX1hW3A+PjJdPXcrMSxtPTMxO2JyZWFrIGU7Y2FzZSA5NTppZigxOT09KDB8bSkpe2FbcD4+Ml09dyxtPTA7YnJlYWsgZX1hW3A+PjJdPXcrMSxtPTMwO2JyZWFrIGU7Y2Fz''@;'; put 'put ''ZSA5OTptPTAtbXwwO2JyZWFrIGV9fWVsc2UgbT0tNH13aGlsZSgwKTtyZXR1cm4gMHxtfSxmdW5jdGlvbiBxOChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtlOmRve2lmKGM+Pj4wPGY+Pj4wKXtNPWwrNzJ8MDt0OmRve3N3aXRjaCgw''@;'; put 'put ''fHVlW00rKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSAyOm09MHx4MWUobCxjKzF8MCxmLHApO2JyZWFrIGU7Y2FzZSAzOm09MHxLeShsLGMrMXwwLGYscCk7YnJlYWsgZTtjYXNlIDk6aWYoKGYtKG09YysxfDApfDApPD0wKXttPS0zO2JyZWFrIGV9YVtwPj4yXT0xMD09KDB8dWVbTSsoMHxidFtt''@;'; put 'put ''Pj4wXSk+PjBdKT9jKzJ8MDptLG09NzticmVhayBlO2Nhc2UgMTA6YVtwPj4yXT1jKzEsbT03O2JyZWFrIGU7Y2FzZSA0OmlmKChmLShBPWMrMXwwKXwwKTw9MCl7bT0tNTticmVhayBlfWlmKDkzPT0oMHx1ZVtBPj4wXSkpe2lmKChmLShtPWMrMnwwKXwwKTw9MCl7bT0tNTticmVhayBlfWlm''@;'; put 'put ''KDYyPT0oMHx1ZVttPj4wXSkpe2FbcD4+Ml09bSxtPTA7YnJlYWsgZX1tPWZ9ZWxzZSBtPWY7YnJlYWs7Y2FzZSA1OmlmKCgobT1mKS1jfDApPDIpe209LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW2wrMzUyPj4yXV0obCxjKSl7YVtwPj4yXT1jLG09MDticmVhayBlfUE9YysyfDA7YnJlYWsg''@;'; put 'put ''dDtjYXNlIDY6aWYoKChtPWYpLWN8MCk8Myl7bT0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbbCszNTY+PjJdXShsLGMpKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9QT1jKzN8MDticmVhayB0O2Nhc2UgNzppZigoKG09ZiktY3wwKTw0KXttPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtsKzM2''@;'; put 'put ''MD4+Ml1dKGwsYykpe2FbcD4+Ml09YyxtPTA7YnJlYWsgZX1BPWMrNHwwO2JyZWFrIHQ7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6YVtwPj4yXT1jLG09MDticmVhayBlO2RlZmF1bHQ6QT1jKzF8MCxtPWZ9fXdoaWxlKDApO3c9bCszNTJ8MCxiPWwrMzU2fDAsaz1sKzM2MHwwO3Q6Zm9yKDs7KXtp''@;'; put 'put ''ZigoMHwoZj1tLUF8MCkpPD0wKXtmPTQ5O2JyZWFrfXN3aXRjaCgwfHVlW00rKDB8YnRbQT4+MF0pPj4wXSl7Y2FzZSAxMDpjYXNlIDk6Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Y2FzZSAyOmNhc2UgMzpmPTQ3O2JyZWFrIHQ7Y2FzZSA1OmlmKCgwfGYpPDIpe2Y9MzI7YnJlYWsgdH1pZigwfFJp''@;'; put 'put ''WzEyNyZhW3c+PjJdXShsLEEpKXtmPTMyO2JyZWFrIHR9QT1BKzJ8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxmKTwzKXtmPTM2O2JyZWFrIHR9aWYoMHxSaVsxMjcmYVtiPj4yXV0obCxBKSl7Zj0zNjticmVhayB0fUE9QSszfDA7Y29udGludWUgdDtjYXNlIDc6aWYoKDB8Zik8NCl7Zj00''@;'; put 'put ''MDticmVhayB0fWlmKDB8UmlbMTI3JmFbaz4+Ml1dKGwsQSkpe2Y9NDA7YnJlYWsgdH1BPUErNHwwO2NvbnRpbnVlIHQ7Y2FzZSA0OmlmKCgwfGYpPD0xKXtmPTQ3O2JyZWFrIHR9aWYoOTMhPSgwfHVlWyhjPUErMXwwKT4+MF0pKXtBPWM7Y29udGludWUgdH1pZigoMHxmKTw9Mil7Zj00Nzti''@;'; put 'put ''cmVhayB0fWlmKDYyPT0oMHx1ZVsoQT1BKzJ8MCk+PjBdKSl7Zj00NjticmVhayB0fUE9Yztjb250aW51ZSB0O2RlZmF1bHQ6QT1BKzF8MDtjb250aW51ZSB0fX1pZigzMj09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMzY9PSgwfGYpKXthW3A+PjJdPUEsbT02O2JyZWFrfWlmKDQw''@;'; put 'put ''PT0oMHxmKSl7YVtwPj4yXT1BLG09NjticmVha31pZig0Nj09KDB8Zikpe2FbcD4+Ml09QSxtPTA7YnJlYWt9aWYoNDc9PSgwfGYpKXthW3A+PjJdPUEsbT02O2JyZWFrfWlmKDQ5PT0oMHxmKSl7YVtwPj4yXT1BLG09NjticmVha319ZWxzZSBtPS00fXdoaWxlKDApO3JldHVybiAwfG19LGZ1''@;'; put 'put ''bmN0aW9uIGU1KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7ZTpkb3tpZihjPj4+MDxmPj4+MCl7az1sKzcyfDA7dDpkb3tzd2l0Y2goMHx1ZVtrKygwfGJ0W2M+PjBdKT4+MF0pe2Nhc2UgNDppZigoKG09ZiktKEE9YysxfDApfDApPD0wKXtt''@;'; put 'put ''PS0xO2JyZWFrIGV9aWYoOTM9PSgwfHVlW0E+PjBdKSl7aWYoKG0tKGY9YysyfDApfDApPD0wKXttPS0xO2JyZWFrIGV9aWYoNjI9PSgwfHVlW2Y+PjBdKSl7YVtwPj4yXT1jKzMsbT00MDticmVhayBlfX1icmVhaztjYXNlIDk6aWYoKGYtKG09YysxfDApfDApPD0wKXttPS0xO2JyZWFrIGV9''@;'; put 'put ''YVtwPj4yXT0xMD09KDB8dWVbaysoMHxidFttPj4wXSk+PjBdKT9jKzJ8MDptLG09NzticmVhayBlO2Nhc2UgMTA6YVtwPj4yXT1jKzEsbT03O2JyZWFrIGU7Y2FzZSA1OmlmKCgobT1mKS1jfDApPDIpe209LTI7YnJlYWsgZX1pZigwfFJpWzEyNyZhW2wrMzUyPj4yXV0obCxjKSl7YVtwPj4y''@;'; put 'put ''XT1jLG09MDticmVhayBlfUE9YysyfDA7YnJlYWsgdDtjYXNlIDY6aWYoKChtPWYpLWN8MCk8Myl7bT0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbbCszNTY+PjJdXShsLGMpKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9QT1jKzN8MDticmVhayB0O2Nhc2UgNzppZigoKG09ZiktY3wwKTw0KXtt''@;'; put 'put ''PS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtsKzM2MD4+Ml1dKGwsYykpe2FbcD4+Ml09YyxtPTA7YnJlYWsgZX1BPWMrNHwwO2JyZWFrIHQ7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6YVtwPj4yXT1jLG09MDticmVhayBlO2RlZmF1bHQ6QT1jKzF8MCxtPWZ9fXdoaWxlKDApO2M9bCszNTJ8MCx3''@;'; put 'put ''PWwrMzU2fDAsYj1sKzM2MHwwO3Q6Zm9yKDs7KXtpZigoMHwoZj1tLUF8MCkpPD0wKXtmPTM5O2JyZWFrfXN3aXRjaCgwfHVlW2srKDB8YnRbQT4+MF0pPj4wXSl7Y2FzZSA0OmNhc2UgMTA6Y2FzZSA5OmNhc2UgODpjYXNlIDE6Y2FzZSAwOmY9Mzc7YnJlYWsgdDtjYXNlIDU6aWYoKDB8Zik8''@;'; put 'put ''Mil7Zj0zMDticmVhayB0fWlmKDB8UmlbMTI3JmFbYz4+Ml1dKGwsQSkpe2Y9MzA7YnJlYWsgdH1mPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfGYpPDMpe2Y9MzM7YnJlYWsgdH1pZigwfFJpWzEyNyZhW3c+PjJdXShsLEEpKXtmPTMzO2JyZWFrIHR9Zj0zO2JyZWFrO2Nhc2UgNzppZigoMHxmKTw0''@;'; put 'put ''KXtmPTM2O2JyZWFrIHR9aWYoMHxSaVsxMjcmYVtiPj4yXV0obCxBKSl7Zj0zNjticmVhayB0fWY9NDticmVhaztkZWZhdWx0OmY9MX1BPUErZnwwfWlmKDMwPT0oMHxmKSl7YVtwPj4yXT1BLG09NjticmVha31pZigzMz09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMzY9PSgwfGYp''@;'; put 'put ''KXthW3A+PjJdPUEsbT02O2JyZWFrfWlmKDM3PT0oMHxmKSl7YVtwPj4yXT1BLG09NjticmVha31pZigzOT09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9fWVsc2UgbT0tNH13aGlsZSgwKTtyZXR1cm4gMHxtfSxmdW5jdGlvbiBTMWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcs''@;'; put 'put ''YixrLE0sbT0wLEE9MCxEPTAsUj0wO3c9NzIrKGx8PTApfDAsYj1sKzM1MnwwLGs9bCszNTZ8MCxNPWwrMzYwfDAsQT0wO2U6Zm9yKDs7KXtpZigoMHwobT1mLWN8MCkpPD0wKXtmPS0xO2JyZWFrfXN3aXRjaCgwfHVlW3crKDB8YnRbYz4+MF0pPj4wXSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6''@;'; put 'put ''RD0xNjticmVhayBlO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtiPj4yXV0obCxjKSl7RD02O2JyZWFrIGV9Yz1jKzJ8MCxBPW09QTtjb250aW51ZSBlO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9aWYoMHxSaVsxMjcmYVtrPj4yXV0obCxj''@;'; put 'put ''KSl7RD0xMDticmVhayBlfWM9YyszfDAsQT1tPUE7Y29udGludWUgZTtjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKDB8UmlbMTI3JmFbTT4+Ml1dKGwsYykpe0Q9MTQ7YnJlYWsgZX1jPWMrNHwwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSAyOmlmKChmLShtPWMrMXwwKXwwKTw9''@;'; put 'put ''MCl7Zj0tMTticmVhayBlfWlmKDMzIT0oMHx1ZVttPj4wXSkpe2M9bSxBPVI9QTtjb250aW51ZSBlfWlmKChmLShtPWMrMnwwKXwwKTw9MCl7Zj0tMTticmVhayBlfUE9QSsoMSYoUj05MT09KDB8dWVbbT4+MF0pKSl8MCxjPVI/YyszfDA6bTtjb250aW51ZSBlO2Nhc2UgNDppZigoZi0obT1j''@;'; put 'put ''KzF8MCl8MCk8PTApe2Y9LTE7YnJlYWsgZX1pZig5MyE9KDB8dWVbbT4+MF0pKXtjPW0sQT1SPUE7Y29udGludWUgZX1pZigoZi0obT1jKzJ8MCl8MCk8PTApe2Y9LTE7YnJlYWsgZX1pZig2MiE9KDB8dWVbbT4+MF0pKXtjPW0sQT1SPUE7Y29udGludWUgZX1pZihjPWMrM3wwLCFBKXtEPTI2''@;'; put 'put ''O2JyZWFrIGV9QT1BKy0xfDA7Y29udGludWUgZTtkZWZhdWx0OmM9YysxfDAsQT1SPUE7Y29udGludWUgZX19cmV0dXJuIDY9PSgwfEQpfHwxMD09KDB8RCl8fDE0PT0oMHxEKXx8MTY9PSgwfEQpPyhhW3A+PjJdPWMsZj0wKToyNj09KDB8RCkmJihhW3A+PjJdPWMsZj00MiksMHxmfSxmdW5j''@;'; put 'put ''dGlvbiBnQWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4wKXtrPWwrNzJ8MCxBPWM7ZTpmb3IoOzspe2lmKChiLUF8MCk8PTApe3c9MjQ7YnJlYWt9c3dpdGNoKDB8dWVbaysoMHxi''@;'; put 'put ''dFtBPj4wXSk+PjBdKXtjYXNlIDM6dz04O2JyZWFrIGU7Y2FzZSAyOnc9MTE7YnJlYWsgZTtjYXNlIDEwOnc9MTI7YnJlYWsgZTtjYXNlIDk6dz0xNTticmVhayBlO2Nhc2UgMjE6dz0xOTticmVhayBlO2Nhc2UgNTptPTI7YnJlYWs7Y2FzZSA2Om09MzticmVhaztjYXNlIDc6bT00O2JyZWFr''@;'; put 'put ''O2RlZmF1bHQ6bT0xfUE9QSttfDB9aWYoOD09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7bT0wfEt5KGwsYysxfDAsZixwKTticmVha31hW3A+PjJdPUEsbT02O2JyZWFrfWlmKDExPT0oMHx3KSl7YVtwPj4yXT1BLG09MDticmVha31pZigxMj09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7YVtw''@;'; put 'put ''Pj4yXT1jKzEsbT03O2JyZWFrfWFbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMTU9PSgwfHcpKXtpZigoMHxBKSE9KDB8Yykpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoKGItKG09YysxfDApfDApPD0wKXttPS0zO2JyZWFrfWFbcD4+Ml09MTA9PSgwfHVlW2srKDB8YnRbbT4+MF0pPj4wXSk/Yysy''@;'; put 'put ''fDA6bSxtPTc7YnJlYWt9aWYoMTk9PSgwfHcpKXtpZigoMHxBKT09KDB8Yykpe2FbcD4+Ml09YysxLG09Mzk7YnJlYWt9YVtwPj4yXT1BLG09NjticmVha31pZigyND09KDB8dykpe2FbcD4+Ml09QSxtPTY7YnJlYWt9fWVsc2UgbT0tMTtlbHNlIG09LTR9d2hpbGUoMCk7cmV0dXJuIDB8bX0s''@;'; put 'put ''ZnVuY3Rpb24gdkwobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4wKXtrPWwrNzJ8MCxBPWM7ZTpmb3IoOzspe2lmKChiLUF8MCk8PTApe3c9MjM7YnJlYWt9c3dpdGNoKDB8dWVbayso''@;'; put 'put ''MHxidFtBPj4wXSk+PjBdKXtjYXNlIDM6dz04O2JyZWFrIGU7Y2FzZSAzMDp3PTExO2JyZWFrIGU7Y2FzZSAxMDp3PTE0O2JyZWFrIGU7Y2FzZSA5Onc9MTc7YnJlYWsgZTtjYXNlIDU6bT0yO2JyZWFrO2Nhc2UgNjptPTM7YnJlYWs7Y2FzZSA3Om09NDticmVhaztkZWZhdWx0Om09MX1BPUEr''@;'; put 'put ''bXwwfWlmKDg9PSgwfHcpKXtpZigoMHxBKT09KDB8Yykpe209MHxLeShsLGMrMXwwLGYscCk7YnJlYWt9YVtwPj4yXT1BLG09NjticmVha31pZigxMT09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7bT0yMj09KDB8KG09MHx5TChsLGMrMXwwLGYscCkpKT8wOm07YnJlYWt9YVtwPj4yXT1BLG09''@;'; put 'put ''NjticmVha31pZigxND09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7YVtwPj4yXT1jKzEsbT03O2JyZWFrfWFbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMTc9PSgwfHcpKXtpZigoMHxBKSE9KDB8Yykpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoKGItKG09YysxfDApfDApPD0wKXttPS0zO2JyZWFr''@;'; put 'put ''fWFbcD4+Ml09MTA9PSgwfHVlW2srKDB8YnRbbT4+MF0pPj4wXSk/YysyfDA6bSxtPTc7YnJlYWt9aWYoMjM9PSgwfHcpKXthW3A+PjJdPUEsbT02O2JyZWFrfX1lbHNlIG09LTE7ZWxzZSBtPS00fXdoaWxlKDApO3JldHVybiAwfG19LGZ1bmN0aW9uIE0xZShsLGMsZixwKXtsfD0wLHB8PTA7''@;'; put 'put ''dmFyIG0sQT0wO2ZvcihtPWZ8PTAsbD1jfD0wOzspe2lmKCEoKGM9MHx1ZVtwPj4wXSk8PDI0Pj4yNCkpe0E9NjticmVha31pZigobS1sfDApPDEpe2w9MDticmVha31pZigoMHx1ZVtsPj4wXSkhPWM8PDI0Pj4yNCl7bD0wO2JyZWFrfXA9cCsxfDAsbD1sKzF8MH1yZXR1cm4gNj09KDB8QSkm''@;'; put 'put ''JihsPSgwfGwpPT0oMHxmKSYxKSwwfGx9LGZ1bmN0aW9uIEUxZShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgayxtPTAsQT0wLHc9MCxiPTAsTT0wO2s9NzIrKGx8PTApfDAsdz0wLGI9MCxsPTE7ZTpmb3IoOzspc3dpdGNoKDB8dWVbaysoMjU1JihBPTB8dWVbKG09YysxfDApPj4wXSkp''@;'; put 'put ''Pj4wXSl7Y2FzZSA1Omx8fCgoMHxiKTwoMHxmKSYmKGFbcCsoYjw8NCk+PjJdPW0sdWVbcCsoYjw8NCkrMTI+PjBdPTEpLGw9MSksYz1jKzJ8MCxiPW09Yix3PUE9dztjb250aW51ZSBlO2Nhc2UgNjpsfHwoKDB8Yik8KDB8ZikmJihhW3ArKGI8PDQpPj4yXT1tLHVlW3ArKGI8PDQpKzEyPj4w''@;'; put 'put ''XT0xKSxsPTEpLGM9YyszfDAsYj1tPWIsdz1BPXc7Y29udGludWUgZTtjYXNlIDc6bHx8KCgwfGIpPCgwfGYpJiYoYVtwKyhiPDw0KT4+Ml09bSx1ZVtwKyhiPDw0KSsxMj4+MF09MSksbD0xKSxjPWMrNHwwLGI9bT1iLHc9QT13O2NvbnRpbnVlIGU7Y2FzZSAyNDpjYXNlIDIyOmNhc2UgMjk6''@;'; put 'put ''aWYoMHxsKXtjPW0sdz1BPXc7Y29udGludWUgZX1pZigoMHxiKT49KDB8Zikpe2w9MSxjPW07Y29udGludWUgZX1hW3ArKGI8PDQpPj4yXT1tLHVlW3ArKGI8PDQpKzEyPj4wXT0xLGw9MSxjPW07Y29udGludWUgZTtjYXNlIDEyOmlmKDIhPSgwfGwpKXtpZigoMHxiKT49KDB8Zikpe3c9MTIs''@;'; put 'put ''bD0yLGM9bTtjb250aW51ZSBlfWFbcCsoYjw8NCkrND4+Ml09YysyLHc9MTIsbD0yLGM9bTtjb250aW51ZSBlfWlmKDEyIT0oMHx3KSl7bD0yLGM9bTtjb250aW51ZSBlfSgwfGIpPCgwfGYpJiYoYVtwKyhiPDw0KSs4Pj4yXT1tKSx3PTEyLGI9YisxfDAsbD0wLGM9bTtjb250aW51ZSBlO2Nh''@;'; put 'put ''c2UgMTM6aWYoMiE9KDB8bCkpe2lmKCgwfGIpPj0oMHxmKSl7dz0xMyxsPTIsYz1tO2NvbnRpbnVlIGV9YVtwKyhiPDw0KSs0Pj4yXT1jKzIsdz0xMyxsPTIsYz1tO2NvbnRpbnVlIGV9aWYoMTMhPSgwfHcpKXtsPTIsYz1tO2NvbnRpbnVlIGV9KDB8Yik8KDB8ZikmJihhW3ArKGI8PDQpKzg+''@;'; put 'put ''PjJdPW0pLHc9MTMsYj1iKzF8MCxsPTAsYz1tO2NvbnRpbnVlIGU7Y2FzZSAzOmlmKCgwfGIpPj0oMHxmKSl7Yz1tLGw9QT1sO2NvbnRpbnVlIGV9dWVbcCsoYjw8NCkrMTI+PjBdPTAsYz1tLGw9QT1sO2NvbnRpbnVlIGU7Y2FzZSAyMTpzd2l0Y2goMHxsKXtjYXNlIDE6bD0wLGM9bTtjb250''@;'; put 'put ''aW51ZSBlO2Nhc2UgMjpicmVhaztkZWZhdWx0OmM9bSxsPUE9bDtjb250aW51ZSBlfWlmKCgwfGIpPj0oMHxmKSl7bD0yLGM9bTtjb250aW51ZSBlfWlmKCEoMHx1ZVsobD1wKyhiPDw0KSsxMnwwKT4+MF0pKXtsPTIsYz1tO2NvbnRpbnVlIGV9aWYoQTw8MjQ+PjI0PT0zMiYmKDB8bSkhPSgw''@;'; put 'put ''fGFbcCsoYjw8NCkrND4+Ml0pJiYoTT0wfHVlW2MrMj4+MF0pPDwyND4+MjQhPTMyJiYoMHx3KSE9KDB8YnRbaysoMjU1Jk0pPj4wXSkpe2w9MixjPW07Y29udGludWUgZX11ZVtsPj4wXT0wLGw9MixjPW07Y29udGludWUgZTtjYXNlIDEwOmNhc2UgOTpzd2l0Y2goMHxsKXtjYXNlIDE6bD0w''@;'; put 'put ''LGM9bTtjb250aW51ZSBlO2Nhc2UgMjpicmVhaztkZWZhdWx0OmM9bSxsPUE9bDtjb250aW51ZSBlfWlmKCgwfGIpPj0oMHxmKSl7bD0yLGM9bTtjb250aW51ZSBlfXVlW3ArKGI8PDQpKzEyPj4wXT0wLGw9MixjPW07Y29udGludWUgZTtjYXNlIDE3OmNhc2UgMTE6aWYoMj09KDB8bCkpe2w9''@;'; put 'put ''MixjPW07Y29udGludWUgZX1icmVhayBlO2RlZmF1bHQ6Yz1tLGw9QT1sO2NvbnRpbnVlIGV9cmV0dXJuIDB8Yn0sZnVuY3Rpb24gT0sobCxjLGYscCl7Y3w9MCxwfD0wO3ZhciBtLEE9MDttPShmfD0wKS0xfDAsbD03MisobHw9MCl8MDtlOmZvcig7Oyl7aWYoKG0tKGM9YysxfDApfDApPD0w''@;'; put 'put ''KXtjPTE7YnJlYWt9c3dpdGNoKDB8dWVbbCsoMjU1JihmPTB8dWVbYz4+MF0pKT4+MF0pe2Nhc2UgMjM6Y2FzZSAxOTpjYXNlIDMwOmNhc2UgMzM6Y2FzZSAxNjpjYXNlIDE4OmNhc2UgMTA6Y2FzZSA5OmNhc2UgMTU6Y2FzZSAxNDpjYXNlIDE3OmNhc2UgMzU6Y2FzZSAzNDpjYXNlIDMyOmNh''@;'; put 'put ''c2UgMzE6Y2FzZSAxMzpjYXNlIDI3OmNhc2UgMjQ6Y2FzZSAyNTpjb250aW51ZSBlO2Nhc2UgMjE6aWYoZjw8MjQ+PjI0PT05KXtBPTc7YnJlYWsgZX1jb250aW51ZSBlO2Nhc2UgMjI6Y2FzZSAyNjppZihmPDwyND4+MjQ+PTApY29udGludWUgZX1zd2l0Y2goZjw8MjQ+PjI0fDApe2Nhc2Ug''@;'; put 'put ''NjQ6Y2FzZSAzNjpicmVhaztkZWZhdWx0OkE9NzticmVhayBlfX1yZXR1cm4gNz09KDB8QSkmJihhW3A+PjJdPWMsYz0wKSwwfGN9LGZ1bmN0aW9uIEFBZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtlOmRve2lmKGM+Pj4wPGY+Pj4w''@;'; put 'put ''KWlmKEE9YyxNPWYtQXwwLGI9MD09KDEmTXwwKSxNJj0tMixrPTA9PSgwfE0pLE09YnxrP2Y6YytNfDAsYnwxXmspe3N3aXRjaCgoZj0wfHVlW2M+PjBdKTw8MjQ+PjI0Pyh3PW09MHx1ZVtjKzE+PjBdLG09MHxzMChmLG0pKToodz1tPTB8dWVbYysxPj4wXSxtPTB8YnRbbCs3MisoMjU1Jm0p''@;'; put 'put ''Pj4wXSksMHxtKXtjYXNlIDEyOmY9MHxuNCgxMixsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDEzOmY9MHxuNCgxMyxsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDI6aWYoKE0tKG09YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKDB8KGY9KGY9MHx1ZVttPj4wXSk8PDI0Pj4y''@;'; put 'put ''ND8wfHMwKGYsMHx1ZVtjKzM+PjBdKTowfGJ0W2wrNzIrKDB8YnRbYyszPj4wXSk+PjBdKSl7Y2FzZSAxNjpmPTB8WjFlKGwsYys0fDAsTSxwKTticmVhayBlO2Nhc2UgMTU6Zj0wfG4kKGwsYys0fDAsTSxwKTticmVhayBlO2Nhc2UgNzpjYXNlIDY6Y2FzZSA1OmNhc2UgMjk6Y2FzZSAyNDpj''@;'; put 'put ''YXNlIDIyOmFbcD4+Ml09YyxmPTI5O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sZj0wO2JyZWFrIGV9Y2FzZSA5OmlmKChjKzJ8MCk9PSgwfE0pKXthW3A+PjJdPU0sZj0tMTU7YnJlYWsgZX1BPTc7YnJlYWs7Y2FzZSAxMDpjYXNlIDIxOkE9NzticmVhaztjYXNlIDMwOmY9MHxlJChsLGMr''@;'; put 'put ''MnwwLE0scCk7YnJlYWsgZTtjYXNlIDM1OmFbcD4+Ml09YysyLGY9Mzg7YnJlYWsgZTtjYXNlIDIwOmFbcD4+Ml09YysyLGY9MjU7YnJlYWsgZTtjYXNlIDQ6aWYoKDB8KGY9TS0obT1jKzJ8MCl8MCkpPD0xKXtmPS0yNjticmVhayBlfWlmKDA9PSgwfHVlW20+PjBdKSYmOTM9PSgwfHVlW2Mr''@;'; put 'put ''Mz4+MF0pKXtpZigoMHxmKTw9Myl7Zj0tMTticmVhayBlfWlmKDA9PSgwfHVlW2MrND4+MF0pJiY2Mj09KDB8dWVbYys1Pj4wXSkpe2FbcD4+Ml09Yys2LGY9MzQ7YnJlYWsgZX19YVtwPj4yXT1tLGY9MjY7YnJlYWsgZTtjYXNlIDMxOmFbcD4+Ml09YysyLGY9MjM7YnJlYWsgZTtjYXNlIDMy''@;'; put 'put ''OmlmKChNLShtPWMrMnwwKXwwKTw9MSl7Zj0tMjQ7YnJlYWsgZX1zd2l0Y2goMHwoZj0oZj0wfHVlW20+PjBdKTw8MjQ+PjI0PzB8czAoZiwwfHVlW2MrMz4+MF0pOjB8YnRbbCs3MisoMHxidFtjKzM+PjBdKT4+MF0pKXtjYXNlIDMzOmFbcD4+Ml09Yys0LGY9MzY7YnJlYWsgZTtjYXNlIDE1''@;'; put 'put ''OmFbcD4+Ml09Yys0LGY9MzU7YnJlYWsgZTtjYXNlIDM0OmFbcD4+Ml09Yys0LGY9Mzc7YnJlYWsgZTtjYXNlIDMyOmNhc2UgMzY6Y2FzZSAzNTpjYXNlIDExOmNhc2UgMjE6Y2FzZSAxMDpjYXNlIDk6YVtwPj4yXT1tLGY9MjQ7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09bSxmPTA7YnJlYWsg''@;'; put 'put ''ZX1jYXNlIDM2OmFbcD4+Ml09YysyLGY9MjE7YnJlYWsgZTtjYXNlIDExOmFbcD4+Ml09YysyLGY9MTc7YnJlYWsgZTtjYXNlIDE5OmY9MHx6MWUobCxjKzJ8MCxNLHApO2JyZWFrIGU7Y2FzZSA1OmlmKChNLUF8MCk8Mil7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNl''@;'; put 'put ''IDY6aWYoKE0tQXwwKTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoTS1BfDApPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOmY9MTgsQT02MTticmVhaztjYXNlIDIzOmNhc2UgMjc6Y2FzZSAyNjpj''@;'; put 'put ''YXNlIDI1OmY9MTksQT02MTticmVhaztjYXNlIDI5OkE9MjU1JmYsZj0obT0yNTUmdyk+Pj41LChtPTE8PCgzMSZtKSkmYVs1Njk0MCsoKGZ8YnRbMTQzNzg4K0E+PjBdPDwzKTw8Mik+PjJdPyhmPTE4LEE9NjEpOmFbNTY5NDArKChidFsxNDQwNDQrQT4+MF08PDN8Zik8PDIpPj4yXSZtPyhm''@;'; put 'put ''PTE5LEE9NjEpOkE9NjQ7YnJlYWs7ZGVmYXVsdDpBPTY0fWlmKDc9PSgwfEEpKXtiPU0sbD1sKzcyfDAsdz1jO3Q6Zm9yKDs7KXtpZihBPXcsKGItKHc9dysyfDApfDApPD0xKXtBPTI4O2JyZWFrfXN3aXRjaChtPTB8dWVbQSszPj4wXSwwfChmPShmPTB8dWVbdz4+MF0pPDwyND4+MjQ/MHxz''@;'; put 'put ''MChmLG0pOjB8YnRbbCsoMjU1Jm0pPj4wXSkpe2Nhc2UgMTA6Y2FzZSAyMTpjb250aW51ZSB0O2Nhc2UgOTpicmVhaztkZWZhdWx0OkE9Mjc7YnJlYWsgdH1pZigoQSs0fDApPT0oMHxNKSl7QT0yNzticmVha319aWYoMjc9PSgwfEEpKXthW3A+PjJdPXcsZj0xNTticmVha31pZigyOD09KDB8''@;'; put 'put ''QSkpe2FbcD4+Ml09dyxmPTE1O2JyZWFrfX1lbHNlIGlmKDYxPT0oMHxBKSl7az1sKzcyfDAsbT1jKzJ8MDt0OmZvcig7Oyl7Yz0yNTUmZjtuOmZvcig7Oyl7aWYoKDB8KGI9TS1tfDApKTw9MSl7QT0xMDQ7YnJlYWsgdH1zd2l0Y2godz0wfHVlW20rMT4+MF0sMHwobD0oQT0wfHVlW20+PjBd''@;'; put 'put ''KTw8MjQ+PjI0PzB8czAoQSx3KTowfGJ0W2srKDI1NSZ3KT4+MF0pKXtjYXNlIDU6QT03MzticmVhayB0O2Nhc2UgNjpBPTc0O2JyZWFrIHQ7Y2FzZSA3OkE9NzY7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmNhc2UgMzA6Y2FzZSAyMDpjYXNlIDM2OmNhc2UgMzU6Y2FzZSAzMjpj''@;'; put 'put ''YXNlIDExOkE9Nzg7YnJlYWsgdDtjYXNlIDM0OkE9OTQ7YnJlYWsgdDtjYXNlIDMzOkE9OTc7YnJlYWsgdDtjYXNlIDE1OkE9MTAwO2JyZWFrIHQ7Y2FzZSAyOTppZighKDE8PCgzMSYoYj0yNTUmdykpJmFbNTY5NDArKChiPj4+NXxidFsxNDQwNDQrKDI1NSZBKT4+MF08PDMpPDwyKT4+Ml0p''@;'; put 'put ''KXtBPTcxO2JyZWFrIHR9YnJlYWs7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgMjM6c3dpdGNoKGI9bSsyfDAsNjMmYyl7Y2FzZSA0MTpmPTE5LG09Yjtjb250aW51ZSB0O2Nhc2UgMTg6YnJlYWsgbjtkZWZhdWx0Om09Yjtjb250aW51ZSBufWRl''@;'; put 'put ''ZmF1bHQ6QT0xMDM7YnJlYWsgdH1tPW0rMnwwfWlmKCgwfChsPU0tYnwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2goQT0wfHVlW20rMz4+MF0sMHwodz0oZj0wfHVlW2I+PjBdKTw8MjQ+PjI0PzB8czAoZixBKTowfGJ0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDU6QT04OTticmVhayB0O2Nh''@;'; put 'put ''c2UgNjpBPTkwO2JyZWFrIHQ7Y2FzZSA3OkE9OTI7YnJlYWsgdDtjYXNlIDI5OmlmKCEoMTw8KDMxJihjPTI1NSZBKSkmYVs1Njk0MCsoKGM+Pj41fGJ0WzE0NDA0NCsoMjU1JmYpPj4wXTw8Myk8PDIpPj4yXSkpe0E9ODc7YnJlYWsgdH1icmVhaztjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpj''@;'; put 'put ''YXNlIDI0OmNhc2UgMjI6YnJlYWs7ZGVmYXVsdDpmPTE5LG09Yjtjb250aW51ZSB0fWY9NDEsbT1tKzR8MH1zd2l0Y2goMHxBKXtjYXNlIDcxOmNhc2UgNzM6Y2FzZSAxMDM6YVtwPj4yXT1tLGY9MDticmVhayBlO2Nhc2UgNzQ6aWYoKDB8Yik8Myl7Zj0tMjticmVhayBlfWFbcD4+Ml09bSxm''@;'; put 'put ''PTA7YnJlYWsgZTtjYXNlIDc2OmlmKCgwfGIpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPW0sZj0wO2JyZWFrIGU7Y2FzZSA3ODphW3A+PjJdPW07YnJlYWsgZTtjYXNlIDg3OmNhc2UgODk6YVtwPj4yXT1iLGY9MDticmVhayBlO2Nhc2UgOTA6aWYoKDB8bCk8Myl7Zj0tMjticmVhayBlfWFb''@;'; put 'put ''cD4+Ml09YixmPTA7YnJlYWsgZTtjYXNlIDkyOmlmKCgwfGwpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWIsZj0wO2JyZWFrIGU7Y2FzZSA5NDppZigxOT09KDB8Zikpe2FbcD4+Ml09bSxmPTA7YnJlYWsgZX1hW3A+PjJdPW0rMixmPTMyO2JyZWFrIGU7Y2FzZSA5NzppZigxOT09KDB8Zikp''@;'; put 'put ''e2FbcD4+Ml09bSxmPTA7YnJlYWsgZX1hW3A+PjJdPW0rMixmPTMxO2JyZWFrIGU7Y2FzZSAxMDA6aWYoMTk9PSgwfGYpKXthW3A+PjJdPW0sZj0wO2JyZWFrIGV9YVtwPj4yXT1tKzIsZj0zMDticmVhayBlO2Nhc2UgMTA0OmY9MC1mfDA7YnJlYWsgZX19ZWxzZSBpZig2ND09KDB8QSkpe2Fb''@;'; put 'put ''cD4+Ml09YyxmPTA7YnJlYWt9fWVsc2UgZj0tMTtlbHNlIGY9LTR9d2hpbGUoMCk7cmV0dXJuIDB8Zn0sZnVuY3Rpb24gTzFlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MDtlOmRve2lmKGM+Pj4wPGY+Pj4wKWlmKG09YyxBPWYtbXwwLGI9MD09KDEm''@;'; put 'put ''QXwwKSxBJj0tMix3PTA9PSgwfEEpLEE9Ynx3P2Y6YytBfDAsYnwxXncpe3N3aXRjaCgwfChmPShmPTB8dWVbYz4+MF0pPDwyND4+MjQ/MHxzMChmLDB8dWVbYysxPj4wXSk6MHxidFtsKzcyKygwfGJ0W2MrMT4+MF0pPj4wXSkpe2Nhc2UgMjpmPTB8TUFlKGwsYysyfDAsQSxwKTticmVhayBl''@;'; put 'put ''O2Nhc2UgMzpmPTB8ZlMobCxjKzJ8MCxBLHApO2JyZWFrIGU7Y2FzZSA5OmlmKChBLShtPWMrMnwwKXwwKTw9MSl7Zj0tMzticmVhayBlfWY9KGY9MHx1ZVttPj4wXSk8PDI0Pj4yND8wfHMwKGYsMHx1ZVtjKzM+PjBdKTowfGJ0W2wrNzIrKDB8YnRbYyszPj4wXSk+PjBdLGFbcD4+Ml09MTA9''@;'; put 'put ''PSgwfGYpP2MrNHwwOm0sZj03O2JyZWFrIGU7Y2FzZSAxMDphW3A+PjJdPWMrMixmPTc7YnJlYWsgZTtjYXNlIDQ6aWYoKEEtKG09YysyfDApfDApPD0xKXtmPS01O2JyZWFrIGV9aWYoMD09KDB8dWVbbT4+MF0pJiY5Mz09KDB8dWVbYyszPj4wXSkpe2lmKChBLShmPWMrNHwwKXwwKTw9MSl7''@;'; put 'put ''Zj0tNTticmVhayBlfWlmKDA9PSgwfHVlW2Y+PjBdKSYmNjI9PSgwfHVlW2MrNT4+MF0pKXthW3A+PjJdPWYsZj0wO2JyZWFrIGV9Zj1BfWVsc2UgZj1BO2JyZWFrO2Nhc2UgNTppZigoKGY9QSktbXwwKTwyKXtmPS0yO2JyZWFrIGV9bT1jKzJ8MDticmVhaztjYXNlIDY6aWYoKChmPUEpLW18''@;'; put 'put ''MCk8Myl7Zj0tMjticmVhayBlfW09YyszfDA7YnJlYWs7Y2FzZSA3OmlmKCgoZj1BKS1tfDApPDQpe2Y9LTI7YnJlYWsgZX1tPWMrNHwwO2JyZWFrO2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtkZWZhdWx0Om09YysyfDAsZj1BfXc9bCs3MnwwLGw9bTt0OmZv''@;'; put 'put ''cig7Oyl7aWYoKDB8KGM9Zi1sfDApKTw9MSl7bT01MjticmVha31zd2l0Y2goQT0wfHVlW2wrMT4+MF0sMHwobT0obT0wfHVlW2w+PjBdKTw8MjQ+PjI0PzB8czAobSxBKTowfGJ0W3crKDI1NSZBKT4+MF0pKXtjYXNlIDEwOmNhc2UgOTpjYXNlIDg6Y2FzZSAxOmNhc2UgMDpjYXNlIDI6Y2Fz''@;'; put 'put ''ZSAzOm09NTA7YnJlYWsgdDtjYXNlIDU6ZGVmYXVsdDpsPWwrMnwwO2NvbnRpbnVlIHQ7Y2FzZSA2OmlmKCgwfGMpPDMpe209Mzg7YnJlYWsgdH1sPWwrM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfGMpPDQpe209NDE7YnJlYWsgdH1sPWwrNHwwO2NvbnRpbnVlIHQ7Y2FzZSA0OmlmKCgw''@;'; put 'put ''fGMpPD0zKXttPTUwO2JyZWFrIHR9aWYoMHx1ZVsobT1sKzJ8MCk+PjBdKXtsPW07Y29udGludWUgdH1pZig5MyE9KDB8dWVbbCszPj4wXSkpe2w9bTtjb250aW51ZSB0fWlmKCgwfGMpPD01KXttPTUwO2JyZWFrIHR9aWYoMHx1ZVsoQT1sKzR8MCk+PjBdKXtsPW07Y29udGludWUgdH1pZig2''@;'; put 'put ''Mj09KDB8dWVbbCs1Pj4wXSkpe209NDk7YnJlYWsgdH1sPW07Y29udGludWUgdH19aWYoMzg9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfWlmKDQxPT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZig0OT09KDB8bSkpe2FbcD4+Ml09QSxmPTA7YnJlYWt9aWYoNTA9PSgwfG0pKXth''@;'; put 'put ''W3A+PjJdPWwsZj02O2JyZWFrfWlmKDUyPT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha319ZWxzZSBmPS0xO2Vsc2UgZj0tNH13aGlsZSgwKTtyZXR1cm4gMHxmfSxmdW5jdGlvbiAkSyhsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7ZTpkb3tpZihj''@;'; put 'put ''Pj4+MDxmPj4+MClpZihtPWMsQT1mLW18MCxiPTA9PSgxJkF8MCksQSY9LTIsdz0wPT0oMHxBKSxBPWJ8dz9mOmMrQXwwLGJ8MV53KXtzd2l0Y2goMHwoZj0oZj0wfHVlW2M+PjBdKTw8MjQ+PjI0PzB8czAoZiwwfHVlW2MrMT4+MF0pOjB8YnRbbCs3MisoMHxidFtjKzE+PjBdKT4+MF0pKXtj''@;'; put 'put ''YXNlIDQ6aWYoKEEtKG09YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMD09KDB8dWVbbT4+MF0pJiY5Mz09KDB8dWVbYyszPj4wXSkpe2lmKChBLShmPWMrNHwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDA9PSgwfHVlW2Y+PjBdKSYmNjI9PSgwfHVlW2MrNT4+MF0pKXthW3A+PjJd''@;'; put 'put ''PWMrNixmPTQwO2JyZWFrIGV9fWJyZWFrO2Nhc2UgOTppZigoQS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1mPShmPTB8dWVbbT4+MF0pPDwyND4+MjQ/MHxzMChmLDB8dWVbYyszPj4wXSk6MHxidFtsKzcyKygwfGJ0W2MrMz4+MF0pPj4wXSxhW3A+PjJdPTEwPT0oMHxmKT9jKzR8''@;'; put 'put ''MDptLGY9NzticmVhayBlO2Nhc2UgMTA6YVtwPj4yXT1jKzIsZj03O2JyZWFrIGU7Y2FzZSA1OmlmKCgoZj1BKS1tfDApPDIpe2Y9LTI7YnJlYWsgZX1tPWMrMnwwLEE9ZjticmVhaztjYXNlIDY6aWYoKChmPUEpLW18MCk8Myl7Zj0tMjticmVhayBlfW09YyszfDAsQT1mO2JyZWFrO2Nhc2Ug''@;'; put 'put ''NzppZigoKGY9QSktbXwwKTw0KXtmPS0yO2JyZWFrIGV9bT1jKzR8MCxBPWY7YnJlYWs7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6YVtwPj4yXT1jLGY9MDticmVhayBlO2RlZmF1bHQ6bT1jKzJ8MH13PWwrNzJ8MCxsPW07dDpmb3IoOzspe2lmKCgwfChjPUEtbHwwKSk8PTEpe209NDA7YnJlYWt9''@;'; put 'put ''c3dpdGNoKG09MHx1ZVtsKzE+PjBdLDB8KGY9KGY9MHx1ZVtsPj4wXSk8PDI0Pj4yND8wfHMwKGYsbSk6MHxidFt3KygyNTUmbSk+PjBdKSl7Y2FzZSAxMDpjYXNlIDk6Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Y2FzZSA0Om09Mzg7YnJlYWsgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7bT0zNTticmVh''@;'; put 'put ''ayB0fWY9MzticmVhaztjYXNlIDc6aWYoKDB8Yyk8NCl7bT0zNzticmVhayB0fWY9NDticmVhaztkZWZhdWx0OmY9Mn1sPWwrZnwwfWlmKDM1PT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZigzNz09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoMzg9PSgwfG0pKXthW3A+PjJd''@;'; put 'put ''PWwsZj02O2JyZWFrfWlmKDQwPT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha319ZWxzZSBmPS0xO2Vsc2UgZj0tNH13aGlsZSgwKTtyZXR1cm4gMHxmfSxmdW5jdGlvbiB5QWUobCxjLGYscCl7cHw9MDt2YXIgdyxtPTAsQT0wLGI9MCxrPTA7Yj0wPT0oMSYoYj0oZnw9MCktKGN8PTApfDAp''@;'; put 'put ''fDApP2Y6YysoLTImYil8MCx3PTcyKyhsfD0wKXwwLEE9MCxmPWM7ZTpmb3IoOzspe2lmKCgwfChtPWItZnwwKSk8PTEpe2Y9LTE7YnJlYWt9c3dpdGNoKGM9MHx1ZVtmKzE+PjBdLDB8KGw9KGw9MHx1ZVtmPj4wXSk8PDI0Pj4yND8wfHMwKGwsYyk6MHxidFt3KygyNTUmYyk+PjBdKSl7Y2Fz''@;'; put 'put ''ZSA4OmNhc2UgMTpjYXNlIDA6az0xMjticmVhayBlO2Nhc2UgNTpkZWZhdWx0OmY9ZisyfDAsQT1tPUE7Y29udGludWUgZTtjYXNlIDY6aWYoKDB8bSk8Myl7Zj0tMjticmVhayBlfWY9ZiszfDAsQT1tPUE7Y29udGludWUgZTtjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWY9Zis0''@;'; put 'put ''fDAsQT1tPUE7Y29udGludWUgZTtjYXNlIDI6aWYoKGItKGw9ZisyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHx1ZVtsPj4wXSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9aWYoMzMhPSgwfHVlW2YrMz4+MF0pKXtmPWwsQT1tPUE7Y29udGludWUgZX1pZigoYi0obD1mKzR8MCl8MCk8PTEp''@;'; put 'put ''e2Y9LTE7YnJlYWsgZX1pZigwfHVlW2w+PjBdKXtmPWwsQT1tPUE7Y29udGludWUgZX1BPUErKDEmKG09OTE9PSgwfHVlW2YrNT4+MF0pKSl8MCxmPW0/Zis2fDA6bDtjb250aW51ZSBlO2Nhc2UgNDppZigoYi0obD1mKzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwfHVlW2w+PjBdKXtm''@;'; put 'put ''PWwsQT1tPUE7Y29udGludWUgZX1pZig5MyE9KDB8dWVbZiszPj4wXSkpe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKChiLShsPWYrNHwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8dWVbbD4+MF0pe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKDYyIT0oMHx1ZVtmKzU+PjBdKSl7Zj1sLEE9''@;'; put 'put ''bT1BO2NvbnRpbnVlIGV9aWYoZj1mKzZ8MCwhQSl7az0yNjticmVhayBlfUE9QSstMXwwO2NvbnRpbnVlIGV9fXJldHVybiAxMj09KDB8ayk/KGFbcD4+Ml09ZixmPTApOjI2PT0oMHxrKSYmKGFbcD4+Ml09ZixmPTQyKSwwfGZ9LGZ1bmN0aW9uIHdBZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9''@;'; put 'put ''MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO2Rve2lmKGM+Pj4wPGY+Pj4wKWlmKCgoYj1mKS1jfDApPjEpe2s9bCs3MnwwLHc9YztlOmZvcig7Oyl7aWYoKGItd3wwKTw9MSl7QT0zMDticmVha31zd2l0Y2goQT0wfHVlW3crMT4+MF0sMHwobT0obT0wfHVlW3c+PjBdKTw8MjQ+PjI0''@;'; put 'put ''PzB8czAobSxBKTowfGJ0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDM6QT0xMTticmVhayBlO2Nhc2UgMjpBPTE0O2JyZWFrIGU7Y2FzZSAxMDpBPTE1O2JyZWFrIGU7Y2FzZSA5OkE9MTg7YnJlYWsgZTtjYXNlIDIxOkE9MjU7YnJlYWsgZTtjYXNlIDU6ZGVmYXVsdDptPTI7YnJlYWs7Y2FzZSA2''@;'; put 'put ''Om09MzticmVhaztjYXNlIDc6bT00fXc9dyttfDB9aWYoMTE9PSgwfEEpKXtpZigoMHx3KT09KDB8Yykpe209MHxmUyhsLGMrMnwwLGYscCk7YnJlYWt9YVtwPj4yXT13LG09NjticmVha31pZigxND09KDB8QSkpe2FbcD4+Ml09dyxtPTA7YnJlYWt9aWYoMTU9PSgwfEEpKXtpZigoMHx3KT09''@;'; put 'put ''KDB8Yykpe2FbcD4+Ml09YysyLG09NzticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDE4PT0oMHxBKSl7aWYoKDB8dykhPSgwfGMpKXthW3A+PjJdPXcsbT02O2JyZWFrfWlmKChiLSh3PWMrMnwwKXwwKTw9MSl7bT0tMzticmVha31BPTB8dWVbYyszPj4wXSxtPShtPTB8dWVbdz4+MF0p''@;'; put 'put ''PDwyND4+MjQ/MHxzMChtLEEpOjB8YnRbaysoMjU1JkEpPj4wXSxhW3A+PjJdPTEwPT0oMHxtKT9jKzR8MDp3LG09NzticmVha31pZigyNT09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7YVtwPj4yXT1jKzIsbT0zOTticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDMwPT0oMHxBKSl7YVtw''@;'; put 'put ''Pj4yXT13LG09NjticmVha319ZWxzZSBtPS0xO2Vsc2UgbT0tNH13aGlsZSgwKTtyZXR1cm4gMHxtfSxmdW5jdGlvbiBSMWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4xKXtrPWwr''@;'; put 'put ''NzJ8MCx3PWM7ZTpmb3IoOzspe2lmKChiLXd8MCk8PTEpe0E9Mjk7YnJlYWt9c3dpdGNoKEE9MHx1ZVt3KzE+PjBdLDB8KG09KG09MHx1ZVt3Pj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAzOkE9MTE7YnJlYWsgZTtjYXNlIDMwOkE9MTQ7YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDEwOkE9MTc7YnJlYWsgZTtjYXNlIDk6QT0yMDticmVhayBlO2Nhc2UgNTpkZWZhdWx0Om09MjticmVhaztjYXNlIDY6bT0zO2JyZWFrO2Nhc2UgNzptPTR9dz13K218MH1pZigxMT09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7bT0wfGZTKGwsYysyfDAsZixwKTticmVha31hW3A+''@;'; put 'put ''PjJdPXcsbT02O2JyZWFrfWlmKDE0PT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXttPTIyPT0oMHwobT0wfGUkKGwsYysyfDAsZixwKSkpPzA6bTticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDE3PT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXthW3A+PjJdPWMrMixtPTc7YnJlYWt9YVtw''@;'; put 'put ''Pj4yXT13LG09NjticmVha31pZigyMD09KDB8QSkpe2lmKCgwfHcpIT0oMHxjKSl7YVtwPj4yXT13LG09NjticmVha31pZigoYi0odz1jKzJ8MCl8MCk8PTEpe209LTM7YnJlYWt9QT0wfHVlW2MrMz4+MF0sbT0obT0wfHVlW3c+PjBdKTw8MjQ+PjI0PzB8czAobSxBKTowfGJ0W2srKDI1NSZB''@;'; put 'put ''KT4+MF0sYVtwPj4yXT0xMD09KDB8bSk/Yys0fDA6dyxtPTc7YnJlYWt9aWYoMjk9PSgwfEEpKXthW3A+PjJdPXcsbT02O2JyZWFrfX1lbHNlIG09LTE7ZWxzZSBtPS00fXdoaWxlKDApO3JldHVybiAwfG19LGZ1bmN0aW9uIGJBZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG0sQT0wO2Zvciht''@;'; put 'put ''PWZ8PTAsbD1jfD0wOzspe2lmKCEoKGM9MHx1ZVtwPj4wXSk8PDI0Pj4yNCkpe0E9NzticmVha31pZigobS1sfDApPDIpe2w9MDticmVha31pZigwfHVlW2w+PjBdKXtsPTA7YnJlYWt9aWYoKDB8dWVbbCsxPj4wXSkhPWM8PDI0Pj4yNCl7bD0wO2JyZWFrfXA9cCsxfDAsbD1sKzJ8MH1yZXR1''@;'; put 'put ''cm4gNz09KDB8QSkmJihsPSgwfGwpPT0oMHxmKSYxKSwwfGx9LGZ1bmN0aW9uIFpqKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBSLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtSPTcyKyhsfD0wKXwwLE09MCxEPTAsbD0xO2U6Zm9yKDs7KXN3aXRjaChiPTB8dWVbKEE9YyszfDAp''@;'; put 'put ''Pj4wXSwwfChtPSh3PShtPTB8dWVbKGs9YysyfDApPj4wXSk8PDI0Pj4yND09MCk/MHxidFtSKygyNTUmYik+PjBdOjB8czAobSxiKSkpe2Nhc2UgNTpjYXNlIDI0OmNhc2UgMjI6Y2FzZSAyOTppZigwfGwpe2M9ayxsPUE9bCxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWlmKCgwfEQpPj0oMHxm''@;'; put 'put ''KSl7bD0xLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWFbcCsoRDw8NCk+PjJdPWssdWVbcCsoRDw8NCkrMTI+PjBdPTEsbD0xLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlO2Nhc2UgNjppZigwfGwpe2M9QSxsPXc9bCxEPWI9RCxNPWs9TTtjb250aW51ZSBlfWlmKCgwfEQpPj0oMHxm''@;'; put 'put ''KSl7bD0xLGM9QSxEPWI9RCxNPWs9TTtjb250aW51ZSBlfWFbcCsoRDw8NCk+PjJdPWssdWVbcCsoRDw8NCkrMTI+PjBdPTEsbD0xLGM9QSxEPWI9RCxNPWs9TTtjb250aW51ZSBlO2Nhc2UgNzpsfHwoKDB8RCk8KDB8ZikmJihhW3ArKEQ8PDQpPj4yXT1rLHVlW3ArKEQ8PDQpKzEyPj4wXT0x''@;'; put 'put ''KSxsPTEpLGM9Yys0fDAsRD1iPUQsTT1rPU07Y29udGludWUgZTtjYXNlIDEyOmlmKDIhPSgwfGwpKXtpZigoMHxEKT49KDB8Zikpe009MTIsbD0yLGM9ayxEPWI9RDtjb250aW51ZSBlfWFbcCsoRDw8NCkrND4+Ml09Yys0LE09MTIsbD0yLGM9ayxEPWI9RDtjb250aW51ZSBlfWlmKDEyIT0o''@;'; put 'put ''MHxNKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfSgwfEQpPCgwfGYpJiYoYVtwKyhEPDw0KSs4Pj4yXT1rKSxNPTEyLEQ9RCsxfDAsbD0wLGM9aztjb250aW51ZSBlO2Nhc2UgMTM6aWYoMiE9KDB8bCkpe2lmKCgwfEQpPj0oMHxmKSl7TT0xMyxsPTIsYz1rLEQ9Yj1EO2NvbnRp''@;'; put 'put ''bnVlIGV9YVtwKyhEPDw0KSs0Pj4yXT1jKzQsTT0xMyxsPTIsYz1rLEQ9Yj1EO2NvbnRpbnVlIGV9aWYoMTMhPSgwfE0pKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9KDB8RCk8KDB8ZikmJihhW3ArKEQ8PDQpKzg+PjJdPWspLE09MTMsRD1EKzF8MCxsPTAsYz1rO2NvbnRpbnVl''@;'; put 'put ''IGU7Y2FzZSAzOmlmKCgwfEQpPj0oMHxmKSl7Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9dWVbcCsoRDw8NCkrMTI+PjBdPTAsYz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSAyMTpzd2l0Y2goMHxsKXtjYXNlIDE6bD0wLGM9ayxEPXc9RCxNPWI9TTtjb250''@;'; put 'put ''aW51ZSBlO2Nhc2UgMjpicmVhaztkZWZhdWx0OmM9ayxsPUE9bCxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWlmKCgwfEQpPj0oMHxmKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWlmKCEoMHx1ZVsoQT1wKyhEPDw0KSsxMnwwKT4+MF0pKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2Nv''@;'; put 'put ''bnRpbnVlIGV9ZG97aWYodyYoMHxrKSE9KDB8YVtwKyhEPDw0KSs0Pj4yXSkmYjw8MjQ+PjI0PT0zMil7aWYobD0wfHVlW2MrNT4+MF0sKG09MHx1ZVtjKzQ+PjBdKTw8MjQ+PjI0KWw9MHxzMChtLGwpO2Vsc2V7aWYobDw8MjQ+PjI0PT0zMilicmVhaztsPTB8YnRbUisoMjU1JmwpPj4wXX1p''@;'; put 'put ''ZigoMHxsKSE9KDB8TSkpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUgZX19fXdoaWxlKDApO3VlW0E+PjBdPTAsbD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlO2Nhc2UgMTA6Y2FzZSA5OnN3aXRjaCgwfGwpe2Nhc2UgMTpsPTAsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7''@;'; put 'put ''Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoKDB8RCk+PSgwfGYpKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9dWVbcCsoRDw8NCkrMTI+PjBdPTAsbD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlO2Nhc2UgMTc6Y2Fz''@;'; put 'put ''ZSAxMTppZigyPT0oMHxsKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWJyZWFrIGU7ZGVmYXVsdDpjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZX1yZXR1cm4gMHxEfSxmdW5jdGlvbiBTQWUobCxjLGYscCl7Y3w9MCxwfD0wO3ZhciB3LGIsbT0wLEE9MCxrPTA7Yj0o''@;'; put 'put ''Znw9MCktMnwwLHc9NzIrKGx8PTApfDA7ZTpmb3IoOzspe2lmKChiLShtPWMrMnwwKXwwKTw9MSl7Zj0xO2JyZWFrfXN3aXRjaChsPTB8dWVbYyszPj4wXSwwfChmPShBPShmPTB8dWVbbT4+MF0pPDwyND4+MjQ9PTApPzB8YnRbdysoMjU1JmwpPj4wXTowfHMwKGYsbCkpKXtjYXNlIDIzOmNh''@;'; put 'put ''c2UgMTk6Y2FzZSAzMDpjYXNlIDMzOmNhc2UgMTY6Y2FzZSAxODpjYXNlIDEwOmNhc2UgOTpjYXNlIDE1OmNhc2UgMTQ6Y2FzZSAxNzpjYXNlIDM1OmNhc2UgMzQ6Y2FzZSAzMjpjYXNlIDMxOmNhc2UgMTM6Y2FzZSAyNzpjYXNlIDI0OmNhc2UgMjU6Yz1tO2NvbnRpbnVlIGU7Y2FzZSAyMTpp''@;'; put 'put ''ZihBJmw8PDI0Pj4yND09OSl7az0xMjticmVhayBlfWM9bTtjb250aW51ZSBlO2Nhc2UgMjI6Y2FzZSAyNjppZighQSl7az0xMjticmVhayBlfWlmKGw8PDI0Pj4yND49MCl7Yz1tO2NvbnRpbnVlIGV9YnJlYWs7ZGVmYXVsdDppZighQSl7az0xMjticmVhayBlfX1zd2l0Y2gobDw8MjQ+PjI0''@;'; put 'put ''fDApe2Nhc2UgNjQ6Y2FzZSAzNjpjPW07YnJlYWs7ZGVmYXVsdDprPTEyO2JyZWFrIGV9fXJldHVybiAxMj09KDB8aykmJihhW3A+PjJdPW0sZj0wKSwwfGZ9LGZ1bmN0aW9uIG9TKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2U6ZG97''@;'; put 'put ''aWYoYz4+PjA8Zj4+PjApaWYoQT1jLE09Zi1BfDAsYj0wPT0oMSZNfDApLE0mPS0yLGs9MD09KDB8TSksTT1ifGs/ZjpjK018MCxifDFeayl7c3dpdGNoKChmPTB8dWVbYysxPj4wXSk8PDI0Pj4yND8odz1tPTB8dWVbYz4+MF0sbT0wfHMwKGYsbSkpOih3PW09MHx1ZVtjPj4wXSxtPTB8YnRb''@;'; put 'put ''bCs3MisoMjU1Jm0pPj4wXSksMHxtKXtjYXNlIDEyOmY9MHxOaigxMixsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDEzOmY9MHxOaigxMyxsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDI6aWYoKE0tKG09YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKDB8KGY9KGY9MHx1ZVtj''@;'; put 'put ''KzM+PjBdKTw8MjQ+PjI0PzB8czAoZiwwfHVlW20+PjBdKTowfGJ0W2wrNzIrKDB8YnRbbT4+MF0pPj4wXSkpe2Nhc2UgMTY6Zj0wfEtLKGwsYys0fDAsTSxwKTticmVhayBlO2Nhc2UgMTU6Zj0wfHJ3KGwsYys0fDAsTSxwKTticmVhayBlO2Nhc2UgNzpjYXNlIDY6Y2FzZSA1OmNhc2UgMjk6''@;'; put 'put ''Y2FzZSAyNDpjYXNlIDIyOmFbcD4+Ml09YyxmPTI5O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sZj0wO2JyZWFrIGV9Y2FzZSA5OmlmKChjKzJ8MCk9PSgwfE0pKXthW3A+PjJdPU0sZj0tMTU7YnJlYWsgZX1BPTc7YnJlYWs7Y2FzZSAxMDpjYXNlIDIxOkE9NzticmVhaztjYXNlIDMwOmY9''@;'; put 'put ''MHxjdihsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDM1OmFbcD4+Ml09YysyLGY9Mzg7YnJlYWsgZTtjYXNlIDIwOmFbcD4+Ml09YysyLGY9MjU7YnJlYWsgZTtjYXNlIDQ6aWYoKDB8KGY9TS0obT1jKzJ8MCl8MCkpPD0xKXtmPS0yNjticmVhayBlfWlmKDA9PSgwfHVlW2MrMz4+MF0pJiY5''@;'; put 'put ''Mz09KDB8dWVbbT4+MF0pKXtpZigoMHxmKTw9Myl7Zj0tMTticmVhayBlfWlmKDA9PSgwfHVlW2MrNT4+MF0pJiY2Mj09KDB8dWVbYys0Pj4wXSkpe2FbcD4+Ml09Yys2LGY9MzQ7YnJlYWsgZX19YVtwPj4yXT1tLGY9MjY7YnJlYWsgZTtjYXNlIDMxOmFbcD4+Ml09YysyLGY9MjM7YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDMyOmlmKChNLShtPWMrMnwwKXwwKTw9MSl7Zj0tMjQ7YnJlYWsgZX1zd2l0Y2goMHwoZj0oZj0wfHVlW2MrMz4+MF0pPDwyND4+MjQ/MHxzMChmLDB8dWVbbT4+MF0pOjB8YnRbbCs3MisoMHxidFttPj4wXSk+PjBdKSl7Y2FzZSAzMzphW3A+PjJdPWMrNCxmPTM2O2JyZWFrIGU7''@;'; put 'put ''Y2FzZSAxNTphW3A+PjJdPWMrNCxmPTM1O2JyZWFrIGU7Y2FzZSAzNDphW3A+PjJdPWMrNCxmPTM3O2JyZWFrIGU7Y2FzZSAzMjpjYXNlIDM2OmNhc2UgMzU6Y2FzZSAxMTpjYXNlIDIxOmNhc2UgMTA6Y2FzZSA5OmFbcD4+Ml09bSxmPTI0O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sZj0w''@;'; put 'put ''O2JyZWFrIGV9Y2FzZSAzNjphW3A+PjJdPWMrMixmPTIxO2JyZWFrIGU7Y2FzZSAxMTphW3A+PjJdPWMrMixmPTE3O2JyZWFrIGU7Y2FzZSAxOTpmPTB8bUFlKGwsYysyfDAsTSxwKTticmVhayBlO2Nhc2UgNTppZigoTS1BfDApPDIpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFr''@;'; put 'put ''IGU7Y2FzZSA2OmlmKChNLUF8MCk8Myl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDc6aWYoKE0tQXwwKTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjpmPTE4LEE9NjE7YnJlYWs7Y2FzZSAyMzpjYXNlIDI3OmNh''@;'; put 'put ''c2UgMjY6Y2FzZSAyNTpmPTE5LEE9NjE7YnJlYWs7Y2FzZSAyOTpBPTI1NSZmLGY9KG09MjU1JncpPj4+NSwobT0xPDwoMzEmbSkpJmFbNTY5NDArKChmfGJ0WzE0Mzc4OCtBPj4wXTw8Myk8PDIpPj4yXT8oZj0xOCxBPTYxKTphWzU2OTQwKygoYnRbMTQ0MDQ0K0E+PjBdPDwzfGYpPDwyKT4+''@;'; put 'put ''Ml0mbT8oZj0xOSxBPTYxKTpBPTY0O2JyZWFrO2RlZmF1bHQ6QT02NH1pZig3PT0oMHxBKSl7Yj1NLGw9bCs3MnwwLHc9Yzt0OmZvcig7Oyl7aWYoQT13LChiLSh3PXcrMnwwKXwwKTw9MSl7QT0yODticmVha31zd2l0Y2gobT0wfHVlW3c+PjBdLDB8KGY9KGY9MHx1ZVtBKzM+PjBdKTw8MjQ+''@;'; put 'put ''PjI0PzB8czAoZixtKTowfGJ0W2wrKDI1NSZtKT4+MF0pKXtjYXNlIDEwOmNhc2UgMjE6Y29udGludWUgdDtjYXNlIDk6YnJlYWs7ZGVmYXVsdDpBPTI3O2JyZWFrIHR9aWYoKEErNHwwKT09KDB8TSkpe0E9Mjc7YnJlYWt9fWlmKDI3PT0oMHxBKSl7YVtwPj4yXT13LGY9MTU7YnJlYWt9aWYo''@;'; put 'put ''Mjg9PSgwfEEpKXthW3A+PjJdPXcsZj0xNTticmVha319ZWxzZSBpZig2MT09KDB8QSkpe2s9bCs3MnwwLG09YysyfDA7dDpmb3IoOzspe2M9MjU1JmY7bjpmb3IoOzspe2lmKCgwfChiPU0tbXwwKSk8PTEpe0E9MTA0O2JyZWFrIHR9c3dpdGNoKHc9MHx1ZVttPj4wXSwwfChsPShBPTB8dWVb''@;'; put 'put ''bSsxPj4wXSk8PDI0Pj4yND8wfHMwKEEsdyk6MHxidFtrKygyNTUmdyk+PjBdKSl7Y2FzZSA1OkE9NzM7YnJlYWsgdDtjYXNlIDY6QT03NDticmVhayB0O2Nhc2UgNzpBPTc2O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpjYXNlIDMwOmNhc2UgMjA6Y2FzZSAzNjpjYXNlIDM1OmNh''@;'; put 'put ''c2UgMzI6Y2FzZSAxMTpBPTc4O2JyZWFrIHQ7Y2FzZSAzNDpBPTk0O2JyZWFrIHQ7Y2FzZSAzMzpBPTk3O2JyZWFrIHQ7Y2FzZSAxNTpBPTEwMDticmVhayB0O2Nhc2UgMjk6aWYoISgxPDwoMzEmKGI9MjU1JncpKSZhWzU2OTQwKygoYj4+PjV8YnRbMTQ0MDQ0KygyNTUmQSk+PjBdPDwzKTw8''@;'; put 'put ''Mik+PjJdKSl7QT03MTticmVhayB0fWJyZWFrO2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpicmVhaztjYXNlIDIzOnN3aXRjaChiPW0rMnwwLDYzJmMpe2Nhc2UgNDE6Zj0xOSxtPWI7Y29udGludWUgdDtjYXNlIDE4OmJyZWFrIG47ZGVmYXVsdDptPWI7Y29udGlu''@;'; put 'put ''dWUgbn1kZWZhdWx0OkE9MTAzO2JyZWFrIHR9bT1tKzJ8MH1pZigoMHwobD1NLWJ8MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKEE9MHx1ZVtiPj4wXSwwfCh3PShmPTB8dWVbbSszPj4wXSk8PDI0Pj4yND8wfHMwKGYsQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSA1OkE9ODk7YnJl''@;'; put 'put ''YWsgdDtjYXNlIDY6QT05MDticmVhayB0O2Nhc2UgNzpBPTkyO2JyZWFrIHQ7Y2FzZSAyOTppZighKDE8PCgzMSYoYz0yNTUmQSkpJmFbNTY5NDArKChjPj4+NXxidFsxNDQwNDQrKDI1NSZmKT4+MF08PDMpPDwyKT4+Ml0pKXtBPTg3O2JyZWFrIHR9YnJlYWs7Y2FzZSAyNzpjYXNlIDI2OmNh''@;'; put 'put ''c2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2RlZmF1bHQ6Zj0xOSxtPWI7Y29udGludWUgdH1mPTQxLG09bSs0fDB9c3dpdGNoKDB8QSl7Y2FzZSA3MTpjYXNlIDczOmNhc2UgMTAzOmFbcD4+Ml09bSxmPTA7YnJlYWsgZTtjYXNlIDc0OmlmKCgwfGIpPDMpe2Y9LTI7YnJlYWsgZX1hW3A+''@;'; put 'put ''PjJdPW0sZj0wO2JyZWFrIGU7Y2FzZSA3NjppZigoMHxiKTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1tLGY9MDticmVhayBlO2Nhc2UgNzg6YVtwPj4yXT1tO2JyZWFrIGU7Y2FzZSA4NzpjYXNlIDg5OmFbcD4+Ml09YixmPTA7YnJlYWsgZTtjYXNlIDkwOmlmKCgwfGwpPDMpe2Y9LTI7YnJl''@;'; put 'put ''YWsgZX1hW3A+PjJdPWIsZj0wO2JyZWFrIGU7Y2FzZSA5MjppZigoMHxsKTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1iLGY9MDticmVhayBlO2Nhc2UgOTQ6aWYoMTk9PSgwfGYpKXthW3A+PjJdPW0sZj0wO2JyZWFrIGV9YVtwPj4yXT1tKzIsZj0zMjticmVhayBlO2Nhc2UgOTc6aWYoMTk9''@;'; put 'put ''PSgwfGYpKXthW3A+PjJdPW0sZj0wO2JyZWFrIGV9YVtwPj4yXT1tKzIsZj0zMTticmVhayBlO2Nhc2UgMTAwOmlmKDE5PT0oMHxmKSl7YVtwPj4yXT1tLGY9MDticmVhayBlfWFbcD4+Ml09bSsyLGY9MzA7YnJlYWsgZTtjYXNlIDEwNDpmPTAtZnwwO2JyZWFrIGV9fWVsc2UgaWYoNjQ9PSgw''@;'; put 'put ''fEEpKXthW3A+PjJdPWMsZj0wO2JyZWFrfX1lbHNlIGY9LTE7ZWxzZSBmPS00fXdoaWxlKDApO3JldHVybiAwfGZ9LGZ1bmN0aW9uIGFTKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MDtlOmRve2lmKGM+Pj4wPGY+Pj4wKWlmKG09YyxBPWYtbXwwLGI9''@;'; put 'put ''MD09KDEmQXwwKSxBJj0tMix3PTA9PSgwfEEpLEE9Ynx3P2Y6YytBfDAsYnwxXncpe3N3aXRjaCgwfChmPShmPTB8dWVbYysxPj4wXSk8PDI0Pj4yND8wfHMwKGYsMHx1ZVtjPj4wXSk6MHxidFtsKzcyKygwfGJ0W2M+PjBdKT4+MF0pKXtjYXNlIDI6Zj0wfGZ2KGwsYysyfDAsQSxwKTticmVh''@;'; put 'put ''ayBlO2Nhc2UgMzpmPTB8c1MobCxjKzJ8MCxBLHApO2JyZWFrIGU7Y2FzZSA5OmlmKChBLShtPWMrMnwwKXwwKTw9MSl7Zj0tMzticmVhayBlfWY9KGY9MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8czAoZiwwfHVlW20+PjBdKTowfGJ0W2wrNzIrKDB8YnRbbT4+MF0pPj4wXSxhW3A+PjJdPTEw''@;'; put 'put ''PT0oMHxmKT9jKzR8MDptLGY9NzticmVhayBlO2Nhc2UgMTA6YVtwPj4yXT1jKzIsZj03O2JyZWFrIGU7Y2FzZSA0OmlmKChBLShtPWMrMnwwKXwwKTw9MSl7Zj0tNTticmVhayBlfWlmKDA9PSgwfHVlW2MrMz4+MF0pJiY5Mz09KDB8dWVbbT4+MF0pKXtpZigoQS0oZj1jKzR8MCl8MCk8PTEp''@;'; put 'put ''e2Y9LTU7YnJlYWsgZX1pZigwPT0oMHx1ZVtjKzU+PjBdKSYmNjI9PSgwfHVlW2Y+PjBdKSl7YVtwPj4yXT1mLGY9MDticmVhayBlfWY9QX1lbHNlIGY9QTticmVhaztjYXNlIDU6aWYoKChmPUEpLW18MCk8Mil7Zj0tMjticmVhayBlfW09YysyfDA7YnJlYWs7Y2FzZSA2OmlmKCgoZj1BKS1t''@;'; put 'put ''fDApPDMpe2Y9LTI7YnJlYWsgZX1tPWMrM3wwO2JyZWFrO2Nhc2UgNzppZigoKGY9QSktbXwwKTw0KXtmPS0yO2JyZWFrIGV9bT1jKzR8MDticmVhaztjYXNlIDg6Y2FzZSAxOmNhc2UgMDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7ZGVmYXVsdDptPWMrMnwwLGY9QX13PWwrNzJ8MCxsPW07dDpm''@;'; put 'put ''b3IoOzspe2lmKCgwfChjPWYtbHwwKSk8PTEpe209NTI7YnJlYWt9c3dpdGNoKEE9MHx1ZVtsPj4wXSwwfChtPShtPTB8dWVbbCsxPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFt3KygyNTUmQSk+PjBdKSl7Y2FzZSAxMDpjYXNlIDk6Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Y2FzZSAyOmNh''@;'; put 'put ''c2UgMzptPTUwO2JyZWFrIHQ7Y2FzZSA1OmRlZmF1bHQ6bD1sKzJ8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxjKTwzKXttPTM4O2JyZWFrIHR9bD1sKzN8MDtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxjKTw0KXttPTQxO2JyZWFrIHR9bD1sKzR8MDtjb250aW51ZSB0O2Nhc2UgNDppZigo''@;'; put 'put ''MHxjKTw9Myl7bT01MDticmVhayB0fWlmKG09bCsyfDAsMHx1ZVtsKzM+PjBdKXtsPW07Y29udGludWUgdH1pZig5MyE9KDB8dWVbbT4+MF0pKXtsPW07Y29udGludWUgdH1pZigoMHxjKTw9NSl7bT01MDticmVhayB0fWlmKEE9bCs0fDAsMHx1ZVtsKzU+PjBdKXtsPW07Y29udGludWUgdH1p''@;'; put 'put ''Zig2Mj09KDB8dWVbQT4+MF0pKXttPTQ5O2JyZWFrIHR9bD1tO2NvbnRpbnVlIHR9fWlmKDM4PT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZig0MT09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoNDk9PSgwfG0pKXthW3A+PjJdPUEsZj0wO2JyZWFrfWlmKDUwPT0oMHxtKSl7''@;'; put 'put ''YVtwPj4yXT1sLGY9NjticmVha31pZig1Mj09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9fWVsc2UgZj0tMTtlbHNlIGY9LTR9d2hpbGUoMCk7cmV0dXJuIDB8Zn0sZnVuY3Rpb24gaksobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wO2U6ZG97aWYo''@;'; put 'put ''Yz4+PjA8Zj4+PjApaWYobT1jLEE9Zi1tfDAsYj0wPT0oMSZBfDApLEEmPS0yLHc9MD09KDB8QSksQT1ifHc/ZjpjK0F8MCxifDFedyl7c3dpdGNoKDB8KGY9KGY9MHx1ZVtjKzE+PjBdKTw8MjQ+PjI0PzB8czAoZiwwfHVlW2M+PjBdKTowfGJ0W2wrNzIrKDB8YnRbYz4+MF0pPj4wXSkpe2Nh''@;'; put 'put ''c2UgNDppZigoQS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwPT0oMHx1ZVtjKzM+PjBdKSYmOTM9PSgwfHVlW20+PjBdKSl7aWYoKEEtKGY9Yys0fDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMD09KDB8dWVbYys1Pj4wXSkmJjYyPT0oMHx1ZVtmPj4wXSkpe2FbcD4+Ml09''@;'; put 'put ''Yys2LGY9NDA7YnJlYWsgZX19YnJlYWs7Y2FzZSA5OmlmKChBLShtPWMrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWY9KGY9MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8czAoZiwwfHVlW20+PjBdKTowfGJ0W2wrNzIrKDB8YnRbbT4+MF0pPj4wXSxhW3A+PjJdPTEwPT0oMHxmKT9jKzR8MDpt''@;'; put 'put ''LGY9NzticmVhayBlO2Nhc2UgMTA6YVtwPj4yXT1jKzIsZj03O2JyZWFrIGU7Y2FzZSA1OmlmKCgoZj1BKS1tfDApPDIpe2Y9LTI7YnJlYWsgZX1tPWMrMnwwLEE9ZjticmVhaztjYXNlIDY6aWYoKChmPUEpLW18MCk8Myl7Zj0tMjticmVhayBlfW09YyszfDAsQT1mO2JyZWFrO2Nhc2UgNzpp''@;'; put 'put ''ZigoKGY9QSktbXwwKTw0KXtmPS0yO2JyZWFrIGV9bT1jKzR8MCxBPWY7YnJlYWs7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6YVtwPj4yXT1jLGY9MDticmVhayBlO2RlZmF1bHQ6bT1jKzJ8MH13PWwrNzJ8MCxsPW07dDpmb3IoOzspe2lmKCgwfChjPUEtbHwwKSk8PTEpe209NDA7YnJlYWt9c3dp''@;'; put 'put ''dGNoKG09MHx1ZVtsPj4wXSwwfChmPShmPTB8dWVbbCsxPj4wXSk8PDI0Pj4yND8wfHMwKGYsbSk6MHxidFt3KygyNTUmbSk+PjBdKSl7Y2FzZSAxMDpjYXNlIDk6Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Y2FzZSA0Om09Mzg7YnJlYWsgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7bT0zNTticmVhayB0''@;'; put 'put ''fWY9MzticmVhaztjYXNlIDc6aWYoKDB8Yyk8NCl7bT0zNzticmVhayB0fWY9NDticmVhaztkZWZhdWx0OmY9Mn1sPWwrZnwwfWlmKDM1PT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZigzNz09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoMzg9PSgwfG0pKXthW3A+PjJdPWws''@;'; put 'put ''Zj02O2JyZWFrfWlmKDQwPT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha319ZWxzZSBmPS0xO2Vsc2UgZj0tNH13aGlsZSgwKTtyZXR1cm4gMHxmfSxmdW5jdGlvbiBaSyhsLGMsZixwKXtwfD0wO3ZhciB3LG09MCxBPTAsYj0wLGs9MDtiPTA9PSgxJihiPShmfD0wKS0oY3w9MCl8MCl8MCk/''@;'; put 'put ''ZjpjKygtMiZiKXwwLHc9NzIrKGx8PTApfDAsQT0wLGY9YztlOmZvcig7Oyl7aWYoKDB8KG09Yi1mfDApKTw9MSl7Zj0tMTticmVha31zd2l0Y2goYz0wfHVlW2Y+PjBdLDB8KGw9KGw9MHx1ZVtmKzE+PjBdKTw8MjQ+PjI0PzB8czAobCxjKTowfGJ0W3crKDI1NSZjKT4+MF0pKXtjYXNlIDg6''@;'; put 'put ''Y2FzZSAxOmNhc2UgMDprPTEyO2JyZWFrIGU7Y2FzZSA1OmRlZmF1bHQ6Zj1mKzJ8MCxBPW09QTtjb250aW51ZSBlO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9Zj1mKzN8MCxBPW09QTtjb250aW51ZSBlO2Nhc2UgNzppZigoMHxtKTw0KXtmPS0yO2JyZWFrIGV9Zj1mKzR8MCxB''@;'; put 'put ''PW09QTtjb250aW51ZSBlO2Nhc2UgMjppZigoYi0obD1mKzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwfHVlW2YrMz4+MF0pe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKDMzIT0oMHx1ZVtsPj4wXSkpe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKChiLShsPWYrNHwwKXwwKTw9MSl7Zj0t''@;'; put 'put ''MTticmVhayBlfWlmKDB8dWVbZis1Pj4wXSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9QT1BKygxJihtPTkxPT0oMHx1ZVtsPj4wXSkpKXwwLGY9bT9mKzZ8MDpsO2NvbnRpbnVlIGU7Y2FzZSA0OmlmKChiLShsPWYrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8dWVbZiszPj4wXSl7Zj1s''@;'; put 'put ''LEE9bT1BO2NvbnRpbnVlIGV9aWYoOTMhPSgwfHVlW2w+PjBdKSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9aWYoKGItKGw9Zis0fDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHx1ZVtmKzU+PjBdKXtmPWwsQT1tPUE7Y29udGludWUgZX1pZig2MiE9KDB8dWVbbD4+MF0pKXtmPWwsQT1tPUE7''@;'; put 'put ''Y29udGludWUgZX1pZihmPWYrNnwwLCFBKXtrPTI2O2JyZWFrIGV9QT1BKy0xfDA7Y29udGludWUgZX19cmV0dXJuIDEyPT0oMHxrKT8oYVtwPj4yXT1mLGY9MCk6MjY9PSgwfGspJiYoYVtwPj4yXT1mLGY9NDIpLDB8Zn0sZnVuY3Rpb24gbFMobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9''@;'; put 'put ''MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4xKXtrPWwrNzJ8MCx3PWM7ZTpmb3IoOzspe2lmKChiLXd8MCk8PTEpe0E9MzA7YnJlYWt9c3dpdGNoKEE9MHx1ZVt3Pj4wXSwwfChtPShtPTB8dWVbdysxPj4wXSk8PDI0Pj4yND8wfHMw''@;'; put 'put ''KG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAzOkE9MTE7YnJlYWsgZTtjYXNlIDI6QT0xNDticmVhayBlO2Nhc2UgMTA6QT0xNTticmVhayBlO2Nhc2UgOTpBPTE4O2JyZWFrIGU7Y2FzZSAyMTpBPTI1O2JyZWFrIGU7Y2FzZSA1OmRlZmF1bHQ6bT0yO2JyZWFrO2Nhc2UgNjptPTM7''@;'; put 'put ''YnJlYWs7Y2FzZSA3Om09NH13PXcrbXwwfWlmKDExPT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXttPTB8c1MobCxjKzJ8MCxmLHApO2JyZWFrfWFbcD4+Ml09dyxtPTY7YnJlYWt9aWYoMTQ9PSgwfEEpKXthW3A+PjJdPXcsbT0wO2JyZWFrfWlmKDE1PT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMp''@;'; put 'put ''KXthW3A+PjJdPWMrMixtPTc7YnJlYWt9YVtwPj4yXT13LG09NjticmVha31pZigxOD09KDB8QSkpe2lmKCgwfHcpIT0oMHxjKSl7YVtwPj4yXT13LG09NjticmVha31pZigoYi0odz1jKzJ8MCl8MCk8PTEpe209LTM7YnJlYWt9QT0wfHVlW3c+PjBdLG09KG09MHx1ZVtjKzM+PjBdKTw8MjQ+''@;'; put 'put ''PjI0PzB8czAobSxBKTowfGJ0W2srKDI1NSZBKT4+MF0sYVtwPj4yXT0xMD09KDB8bSk/Yys0fDA6dyxtPTc7YnJlYWt9aWYoMjU9PSgwfEEpKXtpZigoMHx3KT09KDB8Yykpe2FbcD4+Ml09YysyLG09Mzk7YnJlYWt9YVtwPj4yXT13LG09NjticmVha31pZigzMD09KDB8QSkpe2FbcD4+Ml09''@;'; put 'put ''dyxtPTY7YnJlYWt9fWVsc2UgbT0tMTtlbHNlIG09LTR9d2hpbGUoMCk7cmV0dXJuIDB8bX0sZnVuY3Rpb24geksobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4xKXtrPWwrNzJ8MCx3''@;'; put 'put ''PWM7ZTpmb3IoOzspe2lmKChiLXd8MCk8PTEpe0E9Mjk7YnJlYWt9c3dpdGNoKEE9MHx1ZVt3Pj4wXSwwfChtPShtPTB8dWVbdysxPj4wXSk8PDI0Pj4yND8wfHMwKG0sQSk6MHxidFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAzOkE9MTE7YnJlYWsgZTtjYXNlIDMwOkE9MTQ7YnJlYWsgZTtjYXNl''@;'; put 'put ''IDEwOkE9MTc7YnJlYWsgZTtjYXNlIDk6QT0yMDticmVhayBlO2Nhc2UgNTpkZWZhdWx0Om09MjticmVhaztjYXNlIDY6bT0zO2JyZWFrO2Nhc2UgNzptPTR9dz13K218MH1pZigxMT09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7bT0wfHNTKGwsYysyfDAsZixwKTticmVha31hW3A+PjJdPXcs''@;'; put 'put ''bT02O2JyZWFrfWlmKDE0PT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXttPTIyPT0oMHwobT0wfGN2KGwsYysyfDAsZixwKSkpPzA6bTticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDE3PT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXthW3A+PjJdPWMrMixtPTc7YnJlYWt9YVtwPj4yXT13''@;'; put 'put ''LG09NjticmVha31pZigyMD09KDB8QSkpe2lmKCgwfHcpIT0oMHxjKSl7YVtwPj4yXT13LG09NjticmVha31pZigoYi0odz1jKzJ8MCl8MCk8PTEpe209LTM7YnJlYWt9QT0wfHVlW3c+PjBdLG09KG09MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8czAobSxBKTowfGJ0W2srKDI1NSZBKT4+MF0s''@;'; put 'put ''YVtwPj4yXT0xMD09KDB8bSk/Yys0fDA6dyxtPTc7YnJlYWt9aWYoMjk9PSgwfEEpKXthW3A+PjJdPXcsbT02O2JyZWFrfX1lbHNlIG09LTE7ZWxzZSBtPS00fXdoaWxlKDApO3JldHVybiAwfG19LGZ1bmN0aW9uIEdLKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbSxBPTA7Zm9yKG09Znw9MCxs''@;'; put 'put ''PWN8PTA7Oyl7aWYoISgoYz0wfHVlW3A+PjBdKTw8MjQ+PjI0KSl7QT03O2JyZWFrfWlmKChtLWx8MCk8Mil7bD0wO2JyZWFrfWlmKDB8dWVbbCsxPj4wXSl7bD0wO2JyZWFrfWlmKCgwfHVlW2w+PjBdKSE9Yzw8MjQ+PjI0KXtsPTA7YnJlYWt9cD1wKzF8MCxsPWwrMnwwfXJldHVybiA3PT0o''@;'; put 'put ''MHxBKSYmKGw9KDB8bCk9PSgwfGYpJjEpLDB8bH0sZnVuY3Rpb24gWUsobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIFIsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO1I9NzIrKGx8PTApfDAsTT0wLEQ9MCxsPTE7ZTpmb3IoOzspc3dpdGNoKGI9MHx1ZVsoaz1jKzJ8MCk+PjBdLDB8''@;'; put 'put ''KG09KHc9KG09MHx1ZVsoQT1jKzN8MCk+PjBdKTw8MjQ+PjI0PT0wKT8wfGJ0W1IrKDI1NSZiKT4+MF06MHxzMChtLGIpKSl7Y2FzZSA1OmNhc2UgMjQ6Y2FzZSAyMjpjYXNlIDI5OmlmKDB8bCl7Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoKDB8RCk+PSgwfGYpKXtsPTEs''@;'; put 'put ''Yz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9YVtwKyhEPDw0KT4+Ml09ayx1ZVtwKyhEPDw0KSsxMj4+MF09MSxsPTEsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSA2OmlmKDB8bCl7Yz1BLGw9dz1sLEQ9Yj1ELE09az1NO2NvbnRpbnVlIGV9aWYoKDB8RCk+PSgwfGYpKXtsPTEs''@;'; put 'put ''Yz1BLEQ9Yj1ELE09az1NO2NvbnRpbnVlIGV9YVtwKyhEPDw0KT4+Ml09ayx1ZVtwKyhEPDw0KSsxMj4+MF09MSxsPTEsYz1BLEQ9Yj1ELE09az1NO2NvbnRpbnVlIGU7Y2FzZSA3Omx8fCgoMHxEKTwoMHxmKSYmKGFbcCsoRDw8NCk+PjJdPWssdWVbcCsoRDw8NCkrMTI+PjBdPTEpLGw9MSks''@;'; put 'put ''Yz1jKzR8MCxEPWI9RCxNPWs9TTtjb250aW51ZSBlO2Nhc2UgMTI6aWYoMiE9KDB8bCkpe2lmKCgwfEQpPj0oMHxmKSl7TT0xMixsPTIsYz1rLEQ9Yj1EO2NvbnRpbnVlIGV9YVtwKyhEPDw0KSs0Pj4yXT1jKzQsTT0xMixsPTIsYz1rLEQ9Yj1EO2NvbnRpbnVlIGV9aWYoMTIhPSgwfE0pKXts''@;'; put 'put ''PTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9KDB8RCk8KDB8ZikmJihhW3ArKEQ8PDQpKzg+PjJdPWspLE09MTIsRD1EKzF8MCxsPTAsYz1rO2NvbnRpbnVlIGU7Y2FzZSAxMzppZigyIT0oMHxsKSl7aWYoKDB8RCk+PSgwfGYpKXtNPTEzLGw9MixjPWssRD1iPUQ7Y29udGludWUgZX1h''@;'; put 'put ''W3ArKEQ8PDQpKzQ+PjJdPWMrNCxNPTEzLGw9MixjPWssRD1iPUQ7Y29udGludWUgZX1pZigxMyE9KDB8TSkpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUgZX0oMHxEKTwoMHxmKSYmKGFbcCsoRDw8NCkrOD4+Ml09ayksTT0xMyxEPUQrMXwwLGw9MCxjPWs7Y29udGludWUgZTtjYXNl''@;'; put 'put ''IDM6aWYoKDB8RCk+PSgwfGYpKXtjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZX11ZVtwKyhEPDw0KSsxMj4+MF09MCxjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZTtjYXNlIDIxOnN3aXRjaCgwfGwpe2Nhc2UgMTpsPTAsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7''@;'; put 'put ''Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoKDB8RCk+PSgwfGYpKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoISgwfHVlWyhBPXArKEQ8PDQpKzEyfDApPj4wXSkpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUg''@;'; put 'put ''ZX1kb3tpZih3JigwfGspIT0oMHxhW3ArKEQ8PDQpKzQ+PjJdKSZiPDwyND4+MjQ9PTMyKXtpZihsPTB8dWVbYys0Pj4wXSwobT0wfHVlW2MrNT4+MF0pPDwyND4+MjQpbD0wfHMwKG0sbCk7ZWxzZXtpZihsPDwyND4+MjQ9PTMyKWJyZWFrO2w9MHxidFtSKygyNTUmbCk+PjBdfWlmKCgwfGwp''@;'; put 'put ''IT0oMHxNKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfX19d2hpbGUoMCk7dWVbQT4+MF09MCxsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSAxMDpjYXNlIDk6c3dpdGNoKDB8bCl7Y2FzZSAxOmw9MCxjPWssRD13PUQsTT1iPU07Y29udGludWUgZTtjYXNlIDI6''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDpjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZX1pZigoMHxEKT49KDB8Zikpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUgZX11ZVtwKyhEPDw0KSsxMj4+MF09MCxsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSAxNzpjYXNlIDExOmlm''@;'; put 'put ''KDI9PSgwfGwpKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9YnJlYWsgZTtkZWZhdWx0OmM9ayxsPUE9bCxEPXc9RCxNPWI9TTtjb250aW51ZSBlfXJldHVybiAwfER9LGZ1bmN0aW9uIEQxZShsLGMsZixwKXtwfD0wO3ZhciBBLHcsbT0wLGI9MDt3PShmfD0wKS0yfDAsQT03Miso''@;'; put 'put ''bHw9MCl8MCxmPWN8PTA7ZTpmb3IoOzspe2lmKCh3LShtPWYrMnwwKXwwKTw9MSl7Zj0xO2JyZWFrfXN3aXRjaChjPTB8dWVbbT4+MF0sMHwoZj0obD0oZj0wfHVlW2YrMz4+MF0pPDwyND4+MjQ9PTApPzB8YnRbQSsoMjU1JmMpPj4wXTowfHMwKGYsYykpKXtjYXNlIDIzOmNhc2UgMTk6Y2Fz''@;'; put 'put ''ZSAzMDpjYXNlIDMzOmNhc2UgMTY6Y2FzZSAxODpjYXNlIDEwOmNhc2UgOTpjYXNlIDE1OmNhc2UgMTQ6Y2FzZSAxNzpjYXNlIDM1OmNhc2UgMzQ6Y2FzZSAzMjpjYXNlIDMxOmNhc2UgMTM6Y2FzZSAyNzpjYXNlIDI0OmNhc2UgMjU6Zj1tO2NvbnRpbnVlIGU7Y2FzZSAyMTppZihsJmM8PDI0''@;'; put 'put ''Pj4yND09OSl7Yj0xMjticmVhayBlfWY9bTtjb250aW51ZSBlO2Nhc2UgMjI6Y2FzZSAyNjppZighbCl7Yj0xMjticmVhayBlfWlmKGM8PDI0Pj4yND49MCl7Zj1tO2NvbnRpbnVlIGV9YnJlYWs7ZGVmYXVsdDppZighbCl7Yj0xMjticmVhayBlfX1zd2l0Y2goYzw8MjQ+PjI0fDApe2Nhc2Ug''@;'; put 'put ''NjQ6Y2FzZSAzNjpmPW07YnJlYWs7ZGVmYXVsdDpiPTEyO2JyZWFrIGV9fXJldHVybiAxMj09KDB8YikmJihhW3A+PjJdPW0sZj0wKSwwfGZ9LGZ1bmN0aW9uIG5GKGwsYyxmLHApe2x8PTAsY3w9MCxsPTA9PSgwfChmfD0wKSk7ZG97aWYoYyl7aWYobCl7SHQoYyksbD0wO2JyZWFrfWw9MHxa''@;'; put 'put ''YShjLGYpO2JyZWFrfWw9bD8wOjB8UjAoZil9d2hpbGUoMCk7cmV0dXJuIDB8bH0sZjAsd3JlLGZ1bmN0aW9uIG1sZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MDt3PTA9PSgwfChwPTB8YVsoZnw9MCk+PjJdKSksKGw9MHxhWyhjfD0wKT4+Ml0pP3c/bD0xOihsPTB8''@;'; put 'put ''WmkobCxwKSl8fChiPTUpOnc/Yj01Omw9LTE7ZG97aWYoNT09KDB8Yikpe2lmKHc9MD09KDB8KHA9MHxhW2YrND4+Ml0pKSxsPTB8YVtjKzQ+PjJdKXtpZih3KXtsPTE7YnJlYWt9aWYoMHwobD0wfFppKGwscCkpKWJyZWFrfWVsc2UgaWYoIXcpe2w9LTE7YnJlYWt9KGw9KDEyNyZhW2MrMjQ+''@;'; put 'put ''PjJdKS0oMTI3JmFbZisyND4+Ml0pfDApfHwobD0oQT0rX1tjKzE2Pj4zXSk8KG09K19bZisxNj4+M10pPy0xOkE+bSYxKX19d2hpbGUoMCk7cmV0dXJuIDB8bH0sZnVuY3Rpb24gYngobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG09MDtyZXR1cm4gbT0wfGZ1bmN0aW9uIHVQKGwpe3Zh''@;'; put 'put ''ciBjO3JldHVybiAwfChsPTB8bWlbNjMmKHVlWzIzMisobHw9MCk+PjBdPDwyND4+MjQ/Mzg6MzcpXShsKzE0OHwwLGwrMTQ0fDAsMHxhWyhjPWwrMjI4fDApPj4yXSk/MDowfCRtKGwsMHxhW2M+PjJdKSl9KGx8PTApLG18fChhW2wrMjc2Pj4yXT01NyxtPTB8VF8obCxjLGYscCkpLDB8bX0s''@;'; put 'put ''VF8sZEEsZnVuY3Rpb24gT18obCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIEEsbT0wO3JldHVybiBBPW9lLG9lPW9lKzE2fDAsYVsobT1BKT4+Ml09Y3w9MCwwIT0oMHwoYz0wfExfKGwsMHxhW2wrMTQ0Pj4yXSxtLGYscCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpKSl8MD09KDB8KG09MHxh''@;'; put 'put ''W20+PjJdKSl8fChhW2wrMjc2Pj4yXT01NyxjPTB8VF8obCxtLGYscCkpLG9lPUEsMHxjfSxmdW5jdGlvbiBjUChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgayxNLEcsSyxtPTAsQT0wLHc9MCxiPTAsRD0wLFI9MCxwZT0wLG1lPTA7Sz1vZSxvZT1vZSsxNnwwLEc9SyxNPTB8YVsoaz0y''@;'; put 'put ''OTYrKGx8PTApfDApPj4yXTtkb3tpZihNKXtpZihtPShiPTB8YVsoQT00KyhEPTB8YVtNKzEyPj4yXSl8MCk+PjJdKSsoMHxhWyh3PUQrMTJ8MCk+PjJdKXwwLGI9YisoMHxhW0QrOD4+Ml0pfDAsYVtHPj4yXT1tLDB8dWVbKFI9RCszM3wwKT4+MF0/KHBlPTB8RDBbMTI3JmFbKHBlPTB8YVso''@;'; put 'put ''bWU9bCsyMjR8MCk+PjJdKT4+Ml1dKHBlLG0sYixHKSxtPTB8WW0obCwwfGFbbWU+PjJdLG0sYixwZSwwfGFbRz4+Ml0sRywwKSk6bT0wfEFBKGwsMHxhW00rMTY+PjJdLDB8YVtsKzIyND4+Ml0sbSxiLEcsMCksIW0pe2lmKCgwfGIpIT0oMHwobT0wfGFbRz4+Ml0pKSYmMz09KDB8YVtsKzQ3''@;'; put 'put ''Nj4+Ml0pKXthW3c+PjJdPW0tKDB8YVtBPj4yXSksbT0wO2JyZWFrfWlmKHVlW0QrMzI+PjBdPTAsYVtrPj4yXT1hWyhtZT1NKzh8MCk+PjJdLGFbbWU+PjJdPWFbKG09bCszMDB8MCk+PjJdLGFbbT4+Ml09TSxtPWwrMjc2fDAsMHx1ZVtSPj4wXSl7YVttPj4yXT01NyxtPTB8RDBbMTI3JmFb''@;'; put 'put ''KG09MHxhWyhtZT1sKzE0NHwwKT4+Ml0pPj4yXV0obSxjLGYsRyksbT0wfFltKGwsMHxhW21lPj4yXSxjLGYsbSwwfGFbRz4+Ml0scCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpO2JyZWFrfWFbbT4+Ml09NTgsbT0wfEFBKGwsMCE9KDB8YVtsKzQ3Mj4+Ml0pJjEsMHxhW2wrMTQ0Pj4yXSxjLGYs''@;'; put 'put ''cCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpO2JyZWFrfX1lbHNlIG09MjN9d2hpbGUoMCk7cmV0dXJuIG9lPUssMHxtfSxmdW5jdGlvbiBNeChsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgQSxtPTA7QT1vZSxvZT1vZSsxNnwwLGFbKG09QSk+PjJdPWN8PTAsYz0wfGJBKGwsMHxhW2wrMTQ0''@;'; put 'put ''Pj4yXSxtLGYscCwwPT0oMHx1ZVtsKzQ4MD4+MF0pJjEpLG09MHxhW20+PjJdO2Rve2lmKCEoMCE9KDB8Yyl8MD09KDB8bSkpKXtpZihjPWwrMjc2fDAsMHxhW2wrNDcyPj4yXSl7YVtjPj4yXT02MyxjPTB8X0EobCxtLGYscCk7YnJlYWt9YVtjPj4yXT01OCxjPTB8ZEEobCxtLGYscCk7YnJl''@;'; put 'put ''YWt9fXdoaWxlKDApO3JldHVybiBvZT1BLDB8Y30sd0EsX0EsT2gsZnVuY3Rpb24gJDFlKGwsYyxmLHApe3JldHVybiAwfChsPTB8T2gobHw9MCxjfD0wLGZ8PTAscHw9MCkpJiYodWVbbCs3Mis1OD4+MF09MjMpLDB8bH0sZnVuY3Rpb24gZ1AobCxjLGYscCl7cmV0dXJuIDB8YVsyODArKGx8''@;'; put 'put ''PTApPj4yXX0sZnVuY3Rpb24gamoobCxjLGYscCl7cmV0dXJuIDB8Y1MoNTg5NDgsbHw9MCwwLGN8PTAsZnw9MCxwfD0wKX0sZnVuY3Rpb24gdkFlKGwsYyxmLHApe3JldHVybiAwfGNTKDU4OTQ4LGx8PTAsMSxjfD0wLGZ8PTAscHw9MCl9LGZ1bmN0aW9uIFExZShsLGMsZixwKXtyZXR1cm4g''@;'; put 'put ''MHxjUyg2MDQ1NixsfD0wLDAsY3w9MCxmfD0wLHB8PTApfSxmdW5jdGlvbiBKMWUobCxjLGYscCl7cmV0dXJuIDB8Y1MoNjA0NTYsbHw9MCwxLGN8PTAsZnw9MCxwfD0wKX0sY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2Es''@;'; put 'put ''Y2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2EsY2FdLEwxPVtVbyxmdW5jdGlvbiBsRihsLGMsZixwLG0pe3JldHVybiBsfD0wLHB8PTAsbXw9MCwoZnw9MCk/''@;'; put 'put ''KGw9bT8wfHQwKGwsZik6MHxVcihsLGYpLGFbcD4+Ml09bCxhW3ArND4+Ml09MCk6KGY9MHxhWyhtPTEzOTIpPj4yXSxtPTB8YVttKzQ+PjJdLGFbcD4+Ml09ZixhW3ArND4+Ml09bSxtPTB8SGwoMHxmLDB8bSwyLDApLGFbKHA9MTM5Mik+PjJdPW0sYVtwKzQ+PjJdPU9uKSwxfSxmdW5jdGlv''@;'; put 'put ''biBUUShsLGMsZixwLG0pe3JldHVybiAwLDB9LGZ1bmN0aW9uIFFhZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgRyxLLGJlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxwZT0wLG1lPTAsT2U9MDtiZT1vZSxvZT1vZSs4MHwwLEs9YmUrNjR8MCxHPWJlKzMy''@;'; put 'put ''fDAsbWU9YmU7ZTpkb3tpZigwfHVlW2MrMjg+PjBdKXtmb3IoQT0rX1tjPj4zXSxiPTQ4KyhrPTB8YVsxMisoMHxhWyhSPWwrMTZ8MCk+PjJdKT4+Ml0pfDAsaz1rKzU2fDAsYz0wOzspe2lmKCgwfGMpPj0oMHxhW2I+PjJdKSlicmVhayBlO2lmKE09MD09KDEmYVsxMTYrKDB8YVsxNisoMHxm''@;'; put 'put ''cihsKSk+PjJdKT4+Ml18MCksRD0wfGFbKDB8YVtrPj4yXSkrKGM8PDIpPj4yXSxBPj0odz0rKDB8fn4rX1soTT9EKzE2fDA6RCsyNHwwKT4+M10pKSYmQTw9KHBlPSsoMHx+fitfWyhNP0QrMzJ8MDpEKzQwfDApPj4zXSkpKWJyZWFrO2M9YysxfDB9MSZhWzExNisoMHxhWzE2KygwfGZyKGwp''@;'; put 'put ''KT4+Ml0pPj4yXT8obD0xNisoMHxhW1I+PjJdKXwwLGFbRz4+Ml09YVsoRD0xNisoMHxhWygwfGFbaz4+Ml0pKyhjPDwyKT4+Ml0pfDApPj4yXSxhW0crND4+Ml09YVtEKzQ+PjJdLGFbRys4Pj4yXT1hW0QrOD4+Ml0sYVtHKzEyPj4yXT1hW0QrMTI+PjJdLGFbRysxNj4+Ml09YVtEKzE2Pj4y''@;'; put 'put ''XSxhW0crMjA+PjJdPWFbRCsyMD4+Ml0sYVtHKzI0Pj4yXT1hW0QrMjQ+PjJdLGFbRysyOD4+Ml09YVtEKzI4Pj4yXSxhW0s+PjJdPWFbbD4+Ml0sYVtLKzQ+PjJdPWFbbCs0Pj4yXSxhW0srOD4+Ml09YVtsKzg+PjJdLGFbSysxMj4+Ml09YVtsKzEyPj4yXSxxdmUobWUsRyxLKSxhW3A+PjJd''@;'; put 'put ''PWFbbWU+PjJdLGFbcCs0Pj4yXT1hW21lKzQ+PjJdLGFbcCs4Pj4yXT1hW21lKzg+PjJdLGFbcCsxMj4+Ml09YVttZSsxMj4+Ml0sYVtwKzE2Pj4yXT1hW21lKzE2Pj4yXSxhW3ArMjA+PjJdPWFbbWUrMjA+PjJdLGFbcCsyND4+Ml09YVttZSsyND4+Ml0sYVtwKzI4Pj4yXT1hW21lKzI4Pj4y''@;'; put 'put ''XSxBPStfWzgwKyhtZT0wfGFbUj4+Ml0pPj4zXSx3PStfW21lKzI0Pj4zXSk6KF9bcD4+M109KE9lPStfWzE2KyhtZT0wfGFbUj4+Ml0pPj4zXSkrdyxfW3ArOD4+M109KHc9K19bbWUrMjQ+PjNdKS0uNSooQT0rX1ttZSs4MD4+M10pLF9bcCsxNj4+M109T2UrcGUpLF9bcCsyND4+M109LjUq''@;'; put 'put ''QSt3LGFbbT4+Ml09MX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gb2U9YmUsMHxmfSxmdW5jdGlvbiBSSyhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEEsdz0wLGI9MDtmb3IoQT1tfD0wOzspe2lmKCgwfCh3PTB8YVtjPj4yXSkpPT0oMHxmKSl7bD0wO2JyZWFrfWlmKGw9''@;'; put 'put ''MHxhW3A+PjJdLDEyOCYoYj0wfGJ0W3c+PjBdKSl7aWYoKEEtbHwwKTwyKXtsPTI7YnJlYWt9YVtwPj4yXT1sKzEsdWVbbD4+MF09Yj4+PjZ8MTkyLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLHVlW3c+PjBdPTYzJmJ8MTI4LGFbYz4+Ml09MSsoMHxhW2M+PjJdKX1lbHNle2lmKCgwfGwpPT0o''@;'; put 'put ''MHxtKSl7bD0yO2JyZWFrfWFbYz4+Ml09dysxLHc9MHx1ZVt3Pj4wXSxhW3A+PjJdPTErKGI9MHxhW3A+PjJdKSx1ZVtiPj4wXT13fX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBBTChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDtmb3IodmFyIEE9MCx3PTA7KEE9KGw9MHxhW2M+''@;'; put 'put ''PjJdKT4+PjA8Zj4+PjApJih3PTB8YVtwPj4yXSk+Pj4wPG0+Pj4wOylhW2M+PjJdPWwrMSxBPTB8YnRbbD4+MF0sYVtwPj4yXT0yKyh3PTB8YVtwPj4yXSksVHRbdz4+MV09QTtyZXR1cm4gMHwoKDB8dykhPSgwfG0pfDFeQT8wOjIpfSxmdW5jdGlvbiBPaihsLGMsZixwLG0pe2x8PTAsY3w9''@;'; put 'put ''MCxwfD0wLG18PTA7dmFyIGIsQT0wLHc9MDtyZXR1cm4gYj1vZSxvZT1vZSsxNnwwLGFbKEE9Yik+PjJdPWZ8PTAsKGYtKHc9MHxhW2M+PjJdKXwwKT4oMHwobD1tLSgwfGFbcD4+Ml0pfDApKT8oYVtBPj4yXT1sPXcrbHwwLG09MSk6KG09MCxsPWYpLGZ1bmN0aW9uIHdQKGwsYyl7bHw9MDt2''@;'; put 'put ''YXIgZj0wLHA9MCxtPTAsQT0wLHc9MDtmPTB8YVsoY3w9MCk+PjJdLHA9MDtlOmZvcig7IShmPj4+MDw9bD4+PjApOyl7bT0wfGJ0WyhBPWYrLTF8MCk+PjBdO2Rve2lmKDI0MCE9KDI0OCZtfDApKXtpZigyMjQ9PSgyNDAmbXwwKSl7aWYoKHArMXwwKT4+PjA+Mil7dz04O2JyZWFrIGV9cD0w''@;'; put 'put ''O2JyZWFrfWlmKDE5Mj09KDIyNCZtfDApKXtpZigocCsxfDApPj4+MD4xKXt3PTExO2JyZWFrIGV9cD0wO2JyZWFrfWlmKDEyOCZtKWJyZWFrO2JyZWFrIGV9aWYoKHArMXwwKT4+PjA+Myl7dz01O2JyZWFrIGV9cD0wfXdoaWxlKDApO2Y9QSxwPXArMXwwfTU9PSgwfHcpP2Y9ZiszfDA6OD09''@;'; put 'put ''KDB8dyk/Zj1mKzJ8MDoxMT09KDB8dykmJihmPWYrMXwwKSxhW2M+PjJdPWZ9KHcsQSksRG8oMHxhW3A+PjJdLDB8KGY9MHxhW2M+PjJdKSwwfChBPSh3PTB8YVtBPj4yXSktZnwwKSksYVtjPj4yXT0oMHxhW2M+PjJdKStBLGFbcD4+Ml09KDB8YVtwPj4yXSkrQSxvZT1iLDB8KG0/Mjp3Pj4+''@;'; put 'put ''MDxsPj4+MCYxKX0sZnVuY3Rpb24gJHkobCxjLGYscCxtKXt2YXIgdyxiLGssQT0wLE09MCxEPTAsUj0wO3c9NzIrKGx8PTApfDAsYj1mfD0wLGs9bXw9MCxNPTB8YVsoY3w9MCk+PjJdLEQ9MHxhWyhwfD0wKT4+Ml07ZTpmb3IoOzspe2lmKCEoRD4+PjA8bT4+PjAmKGw9TT4+PjA8Zj4+PjAp''@;'; put 'put ''KSl7Uj0xMjticmVha31zd2l0Y2goMHx1ZVt3KyhBPTI1NSYobD0wfHVlW00+PjBdKSk+PjBdKXtjYXNlIDU6aWYoKGItTXwwKTwyKXtsPTE7YnJlYWsgZX1UdFtEPj4xXT0oMzEmbCk8PDZ8NjMmdWVbTSsxPj4wXSxNPU0rMnwwLEQ9RCsyfDA7Y29udGludWUgZTtjYXNlIDY6aWYoKGItTXww''@;'; put 'put ''KTwzKXtsPTE7YnJlYWsgZX1UdFtEPj4xXT0oNjMmdWVbTSsxPj4wXSk8PDZ8QTw8MTJ8NjMmdWVbTSsyPj4wXSxNPU0rM3wwLEQ9RCsyfDA7Y29udGludWUgZTtjYXNlIDc6aWYoKGstRHwwKTw0KXtsPTI7YnJlYWsgZX1pZigoYi1NfDApPDQpe2w9MTticmVhayBlfVR0W0Q+PjFdPShBPSgo''@;'; put 'put ''NjMmdWVbTSsxPj4wXSk8PDEyfCg3JmwpPDwxOHwoNjMmdWVbTSsyPj4wXSk8PDZ8NjMmdWVbTSszPj4wXSktNjU1MzZ8MCk+Pj4xMHw1NTI5NixUdFtEKzI+PjFdPTEwMjMmQXw1NjMyMCxNPU0rNHwwLEQ9RCs0fDA7Y29udGludWUgZTtkZWZhdWx0OlR0W0Q+PjFdPWw8PDI0Pj4yNCxNPU0r''@;'; put 'put ''MXwwLEQ9RCsyfDA7Y29udGludWUgZX19cmV0dXJuIDEyPT0oMHxSKSYmKGw9bD8yOjApLGFbYz4+Ml09TSxhW3A+PjJdPUQsMHxsfSxmdW5jdGlvbiBHMWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7Zm9yKHZhciBBPTAsdz0wOyhBPShsPTB8YVtjPj4yXSk+Pj4wPGY+''@;'; put 'put ''Pj4wKSYodz0wfGFbcD4+Ml0pPj4+MDxtPj4+MDspYVtjPj4yXT1sKzEsQT0wfHVlW2w+PjBdLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLHVlW3c+PjBdPUE7cmV0dXJuIDB8KCgwfHcpIT0oMHxtKXwxXkE/MDoyKX0sZnVuY3Rpb24gRjFlKGwsYyxmLHAsbSl7bHw9MCxwfD0wO3ZhciBiLGss''@;'; put 'put ''TSxBPTAsdz0wLEQ9MCxSPTA7az1iPSh3PTB8YVsoY3w9MCk+PjJdKSsoKGZ8PTApLXcmLTIpfDAsTT1tfD0wO2U6Zm9yKDs7KXtpZih3Pj4+MD49Yj4+PjApe2w9MDticmVha31zd2l0Y2goQT0wfHVlW3crMT4+MF0sZj0yNTUmKGw9MHx1ZVt3Pj4wXSksbDw8MjQ+PjI0KXtjYXNlIDA6aWYo''@;'; put 'put ''QTw8MjQ+PjI0Pi0xKXtpZigoMHwobD0wfGFbcD4+Ml0pKT09KDB8bSkpe2w9MjticmVhayBlfWFbcD4+Ml09bCsxLHVlW2w+PjBdPUEsbD13fWVsc2UgRD03O2JyZWFrO2Nhc2UgNzpjYXNlIDY6Y2FzZSA1OmNhc2UgNDpjYXNlIDM6Y2FzZSAyOmNhc2UgMTpEPTc7YnJlYWs7Y2FzZS0zNzpj''@;'; put 'put ''YXNlLTM4OmNhc2UtMzk6Y2FzZS00MDppZigoTS0obD0wfGFbcD4+Ml0pfDApPDQpe2w9MjticmVhayBlfWlmKChrLXd8MCk8NCl7bD0xO2JyZWFrIGV9QT0xKyhmPDwyJjEyfChSPTI1NSZBKT4+PjYpfDAsYVtwPj4yXT1sKzEsdWVbbD4+MF09QT4+PjJ8MjQwLGFbcD4+Ml09MSsobD0wfGFb''@;'; put 'put ''cD4+Ml0pLHVlW2w+PjBdPVI+Pj4yJjE1fEE8PDQmNDh8MTI4LGY9MjU1JihSPDw0JjQ4fChBPTB8YnRbdyszPj4wXSk+Pj42fHVlWyhsPXcrMnwwKT4+MF08PDImMTJ8MTI4KSxhW3A+PjJdPTErKHc9MHxhW3A+PjJdKSx1ZVt3Pj4wXT1mLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLHVlW3c+''@;'; put 'put ''PjBdPTYzJkF8MTI4O2JyZWFrO2RlZmF1bHQ6aWYoKE0tKGw9MHxhW3A+PjJdKXwwKTwzKXtsPTI7YnJlYWsgZX1hW3A+PjJdPWwrMSx1ZVtsPj4wXT1mPj4+NHwyMjQsUj0yNTUmQSxhW3A+PjJdPTErKGw9MHxhW3A+PjJdKSx1ZVtsPj4wXT1SPj4+NnxmPDwyJjYwfDEyOCxhW3A+PjJdPTEr''@;'; put 'put ''KGw9MHxhW3A+PjJdKSx1ZVtsPj4wXT02MyZSfDEyOCxsPXd9aWYoNz09KDB8RCkpe2lmKEQ9MCwoTS0obD0wfGFbcD4+Ml0pfDApPDIpe2w9MjticmVha31SPTI1NSZBLGFbcD4+Ml09bCsxLHVlW2w+PjBdPVI+Pj42fGY8PDJ8MTkyLGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLHVlW2w+PjBd''@;'; put 'put ''PTYzJlJ8MTI4LGw9d313PWwrMnwwfXJldHVybiBhW2M+PjJdPXcsMHxsfSxmdW5jdGlvbiBxSyhsLGMsZixwLG0pe2x8PTA7dmFyIEE9MCx3PTAsYj0wO2ZvcihsPShBPTB8YVsoY3w9MCk+PjJdKSsoYj0oZnw9MCktQSYtMil8MCwoMHxiKT4oKG18PTApLSgwfGFbKHB8PTApPj4yXSl8MCk/''@;'; put 'put ''KGI9MSYoZj0oLTgmdWVbKHc9bCstMnwwKT4+MF0pPDwyND4+MjQ9PS00MCksbD1mP3c6bCk6Yj0wLGY9QTsoQT1mPj4+MDxsPj4+MCkmKHc9MHxhW3A+PjJdKT4+PjA8bT4+PjA7KUE9NjU1MzUmKCgwfGJ0W2Y+PjBdKTw8OHwwfGJ0W2YrMT4+MF0pLGFbcD4+Ml09dysyLFR0W3c+PjFdPUEs''@;'; put 'put ''YVtjPj4yXT13PTIrKDB8YVtjPj4yXSl8MCxmPXc7cmV0dXJuIDB8KCgwfHcpIT0oMHxtKXwxXkE/YjoyKX0sZnVuY3Rpb24gdHcobCxjLGYscCxtKXtsfD0wLHB8PTA7dmFyIGIsayxNLEE9MCx3PTAsRD0wLFI9MDtrPWI9KHc9MHxhWyhjfD0wKT4+Ml0pKygoZnw9MCktdyYtMil8MCxNPW18''@;'; put 'put ''PTA7ZTpmb3IoOzspe2lmKHc+Pj4wPj1iPj4+MCl7bD0wO2JyZWFrfXN3aXRjaChBPTB8dWVbdz4+MF0sZj0yNTUmKGw9MHx1ZVt3KzE+PjBdKSxsPDwyND4+MjQpe2Nhc2UgMDppZihBPDwyND4+MjQ+LTEpe2lmKCgwfChsPTB8YVtwPj4yXSkpPT0oMHxtKSl7bD0yO2JyZWFrIGV9YVtwPj4y''@;'; put 'put ''XT1sKzEsdWVbbD4+MF09QSxsPXd9ZWxzZSBEPTc7YnJlYWs7Y2FzZSA3OmNhc2UgNjpjYXNlIDU6Y2FzZSA0OmNhc2UgMzpjYXNlIDI6Y2FzZSAxOkQ9NzticmVhaztjYXNlLTM3OmNhc2UtMzg6Y2FzZS0zOTpjYXNlLTQwOmlmKChNLShsPTB8YVtwPj4yXSl8MCk8NCl7bD0yO2JyZWFrIGV9''@;'; put 'put ''aWYoKGstd3wwKTw0KXtsPTE7YnJlYWsgZX1BPTErKGY8PDImMTJ8KFI9MjU1JkEpPj4+Nil8MCxhW3A+PjJdPWwrMSx1ZVtsPj4wXT1BPj4+MnwyNDAsYVtwPj4yXT0xKyhsPTB8YVtwPj4yXSksdWVbbD4+MF09Uj4+PjImMTV8QTw8NCY0OHwxMjgsZj0yNTUmKFI8PDQmNDh8KEE9MHxidFso''@;'; put 'put ''bD13KzJ8MCk+PjBdKT4+PjZ8dWVbdyszPj4wXTw8MiYxMnwxMjgpLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLHVlW3c+PjBdPWYsYVtwPj4yXT0xKyh3PTB8YVtwPj4yXSksdWVbdz4+MF09NjMmQXwxMjg7YnJlYWs7ZGVmYXVsdDppZigoTS0obD0wfGFbcD4+Ml0pfDApPDMpe2w9MjticmVh''@;'; put 'put ''ayBlfWFbcD4+Ml09bCsxLHVlW2w+PjBdPWY+Pj40fDIyNCxSPTI1NSZBLGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLHVlW2w+PjBdPVI+Pj42fGY8PDImNjB8MTI4LGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLHVlW2w+PjBdPTYzJlJ8MTI4LGw9d31pZig3PT0oMHxEKSl7aWYoRD0wLChNLShs''@;'; put 'put ''PTB8YVtwPj4yXSl8MCk8Mil7bD0yO2JyZWFrfVI9MjU1JkEsYVtwPj4yXT1sKzEsdWVbbD4+MF09Uj4+PjZ8Zjw8MnwxOTIsYVtwPj4yXT0xKyhsPTB8YVtwPj4yXSksdWVbbD4+MF09NjMmUnwxMjgsbD13fXc9bCsyfDB9cmV0dXJuIGFbYz4+Ml09dywwfGx9LGZ1bmN0aW9uIGp1KGwsYyxm''@;'; put 'put ''LHAsbSl7bHw9MDt2YXIgQT0wLHc9MCxiPTA7Zm9yKGw9KEE9MHxhWyhjfD0wKT4+Ml0pKyhiPShmfD0wKS1BJi0yKXwwLCgwfGIpPigobXw9MCktKDB8YVsocHw9MCk+PjJdKXwwKT8oYj0xJihmPSgtOCZ1ZVsxKyh3PWwrLTJ8MCk+PjBdKTw8MjQ+PjI0PT0tNDApLGw9Zj93OmwpOmI9MCxm''@;'; put 'put ''PUE7KEE9Zj4+PjA8bD4+PjApJih3PTB8YVtwPj4yXSk+Pj4wPG0+Pj4wOylBPTY1NTM1JigoMHxidFtmKzE+PjBdKTw8OHwwfGJ0W2Y+PjBdKSxhW3A+PjJdPXcrMixUdFt3Pj4xXT1BLGFbYz4+Ml09dz0yKygwfGFbYz4+Ml0pfDAsZj13O3JldHVybiAwfCgoMHx3KSE9KDB8bSl8MV5BP2I6''@;'; put 'put ''Mil9LGZ1bmN0aW9uIGVoKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixrLE0sRCxSLEcsQT0wLHc9MCxLPTA7Zm9yKEc9b2Usb2U9b2UrMTZ8MCxrPUcsTT0zNjQrKGx8PTApfDAsRD1sKzg4NHwwLFI9bCszNjh8MCxiPWwrNzJ8MDs7KXtpZigoMHwoQT0wfGFbYz4+Ml0p''@;'; put 'put ''KT09KDB8Zikpe209MDticmVha31pZih3PUQrKChLPTB8YnRbQT4+MF0pPDwyKSsxfDAsbD0oSz0wfHVlW0QrKEs8PDIpPj4wXSk8PDI0Pj4yNCxLPDwyND4+MjQpe2lmKChtLSgwfGFbcD4+Ml0pfDApPCgwfGwpKXttPTI7YnJlYWt9QT1BKzF8MH1lbHNle2lmKCgwfChsPTB8QzYoMHxSaVsx''@;'; put 'put ''MjcmYVtNPj4yXV0oMHxhW1I+PjJdLEEpLGspKSk+KG0tKDB8YVtwPj4yXSl8MCkpe209MjticmVha313PWssQT0oQT0wfGFbYz4+Ml0pKygoMHxidFtiKygwfGJ0W0E+PjBdKT4+MF0pLTMpfDB9YVtjPj4yXT1BLERvKDB8YVtwPj4yXSwwfHcsMHxsKSxhW3A+PjJdPSgwfGFbcD4+Ml0pK2x9''@;'; put 'put ''cmV0dXJuIG9lPUcsMHxtfSxmdW5jdGlvbiBHaShsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGssTSxELFIsQT0wLHc9MCxiPTA7Zm9yKE09MzcyKyhsfD0wKXwwLEQ9bCszNjR8MCxSPWwrMzY4fDAsaz1sKzcyfDA7KGw9KGI9MHxhW2M+PjJdKT4+PjA8Zj4+PjApJihBPTB8''@;'; put 'put ''YVtwPj4yXSk+Pj4wPG0+Pj4wOykobD0wfFR0W00rKCgwfGJ0W2I+PjBdKTw8MSk+PjFdKTw8MTY+PjE2Pyh3PTEsQT1iKToobD02NTUzNSYoMHxSaVsxMjcmYVtEPj4yXV0oMHxhW1I+PjJdLGIpKSx3PSgwfGJ0W2srKDB8YnRbKEE9MHxhW2M+PjJdKT4+MF0pPj4wXSktM3wwKSxhW2M+PjJd''@;'; put 'put ''PUErdyxhW3A+PjJdPTIrKGI9MHxhW3A+PjJdKSxUdFtiPj4xXT1sO3JldHVybiAwfCgoMHxBKSE9KDB8bSl8MV5sPzA6Mil9LGZ1bmN0aW9uIGV1ZShsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MDtzd2l0Y2goMHwoY3w9MCkpe2Nhc2UgMTU6YVtsPj4yXT0xNixsPTA7''@;'; put 'put ''YnJlYWs7Y2FzZSAxMjphW2w+PjJdPTE2LGw9MTticmVhaztjYXNlIDExOmFbbD4+Ml09MTYsbD01NTticmVhaztjYXNlIDEzOmFbbD4+Ml09MTYsbD01NjticmVhaztjYXNlIDE0Omw9MDticmVhaztjYXNlIDE2OjB8RDBbMTI3JmFbbSsyND4+Ml1dKG0sZisoYVttKzY0Pj4yXTw8MSl8MCxw''@;'; put 'put ''LDE0NDM2OCk/KGFbbD4+Ml09MTcsbD0zKTpBPTk7YnJlYWs7Y2FzZSAyOTphW2w+PjJdPTE4LGw9MjticmVhaztkZWZhdWx0OkE9OX1yZXR1cm4gOT09KDB8QSkmJihsPTB8amEobCxjKSksMHxsfSxmdW5jdGlvbiB0dWUobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7''@;'; put 'put ''c3dpdGNoKDB8KGN8PTApKXtjYXNlIDE0OmNhc2UgMTU6bD0wO2JyZWFrO2Nhc2UgMTE6bD01NTticmVhaztjYXNlIDEzOmw9NTY7YnJlYWs7Y2FzZSAxNjowfEQwWzEyNyZhW20rMjQ+PjJdXShtLGYrKGFbbSs2ND4+Ml08PDEpfDAscCwxNDQzNjgpPyhhW2w+PjJdPTE3LGw9Myk6QT03O2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMjk6YVtsPj4yXT0xOCxsPTI7YnJlYWs7ZGVmYXVsdDpBPTd9cmV0dXJuIDc9PSgwfEEpJiYobD0wfGphKGwsYykpLDB8bH0sZnVuY3Rpb24gV2oobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM7YnJlYWs7Y2FzZSA0MTpjYXNlIDE4OmFbbD4+''@;'; put 'put ''Ml09MTksbD00O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gbyQobCxjLGYscCxtKXtyZXR1cm4gMH0sZnVuY3Rpb24gRUFlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wO2U6ZG97c3dpdGNoKDB8Yyl7Y2FzZSAx''@;'; put 'put ''NTpsPTM7YnJlYWs7Y2FzZSAyNTphW2w+PjJdPTIwLGw9NzticmVhaztjYXNlIDE3OmFbbD4+Ml09MjEsbD04O2JyZWFrO2Nhc2UgMTg6aWYoMHxEMFsxMjcmYVsoQT1tKzI0fDApPj4yXV0obSxmLHAsMTQ0Mzc2KSl7YVtsPj4yXT0yMixsPTM7YnJlYWsgZX0wfEQwWzEyNyZhW0E+PjJdXSht''@;'; put 'put ''LGYscCwxNDQzODMpPyhhW2w+PjJdPTIzLGw9Myk6dz04O2JyZWFrO2RlZmF1bHQ6dz04fX13aGlsZSgwKTtyZXR1cm4gOD09KDB8dykmJihsPTB8amEobCxjKSksMHxsfSxudWUsZnVuY3Rpb24gcnVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsbXw9MCwobT0oY3w9MCktMTF8MCk+Pj4xfG08''@;'; put 'put ''PDMxfDApe2Nhc2UgMjpsPTA7YnJlYWs7Y2FzZSAwOmw9NTU7YnJlYWs7Y2FzZSAxOmw9NTY7YnJlYWs7Y2FzZSA5OmFbbD4+Ml09MTgsbD0yO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24geEFlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkp''@;'; put 'put ''e2Nhc2UgMTU6bD0zO2JyZWFrO2Nhc2UgMjc6YVtsPj4yXT0yOSxsPTU7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBZaihsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzticmVhaztjYXNlIDI3OmFbbD4+Ml09MjIsbD02''@;'; put 'put ''O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gb3VlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xMTticmVhaztjYXNlIDIyOmFbbD4+Ml09MzAsbD0xMTticmVhaztjYXNlIDE4OmFbbD4+Ml09MzEsbD05O2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gVWoobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTMzO2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODphW2w+PjJdPTMyLGw9MzQ7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxm''@;'; put 'put ''dW5jdGlvbiBUQWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM5O2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODphW2w+PjJdPTMzLGw9NDA7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBhdWUobCxjLGYscCxtKXtzd2l0Y2go''@;'; put 'put ''bHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTE3O2JyZWFrO2Nhc2UgMTg6YVtsPj4yXT0zNCxsPTE4O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gSUFlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTc6YVtsPj4yXT0yMSxsPTg7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBpdWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM7YnJlYWs7Y2FzZSAyNTphW2w+PjJdPTIwLGw9NzticmVhaztjYXNlIDE3OmFbbD4+Ml09''@;'; put 'put ''MjEsbD04O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gbCQobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2UgMTg6YVtsPj4yXT01NyxsPTEwO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJu''@;'; put 'put ''IDB8bH0sZnVuY3Rpb24gdmEobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAxODppZigwfEQwWzEyNyZhWyhBPW0rMjR8MCk+PjJdXShtLGYscCwxNDQzNzYpKXthW2w+PjJdPTU4''@;'; put 'put ''LGw9MTE7YnJlYWsgZX0wfEQwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQzODMpPyhhW2w+PjJdPTU5LGw9MTEpOnc9NzticmVhaztjYXNlIDI3OmFbbD4+Ml09MzcsYVtsKzg+PjJdPTExLGw9MTI7YnJlYWs7ZGVmYXVsdDp3PTd9fXdoaWxlKDApO3JldHVybiA3PT0oMHx3KSYmKGw9MHxqYShs''@;'; put 'put ''LGMpKSwwfGx9LGZ1bmN0aW9uIHI0KGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zMzticmVhaztjYXNlIDE3OmFbbD4+Ml09MHxhW2wrMTY+PjJdPzIwOjM5LGw9MzM7YnJlYWs7Y2FzZSA0MTpjYXNlIDE4OmFbbD4+Ml09NDksbD0yMjticmVhaztkZWZhdWx0''@;'; put 'put ''Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIEJBZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MDtlOmRve3N3aXRjaCgwfGMpe2Nhc2UgMTU6bD0zOTticmVhaztjYXNlIDE4OmlmKDB8RDBbMTI3JmFbKEE9bSsyNHwwKT4+Ml1dKG0sZixw''@;'; put 'put ''LDE0NDQzNykpe2FbbD4+Ml09MzcsYVtsKzg+PjJdPTM5LGw9NDI7YnJlYWsgZX0wfEQwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQ0NDMpPyhhW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSxsPTQxKTp3PTc7YnJlYWs7Y2FzZSAyMzphW2w+PjJdPTQzLGFbbCs0Pj4yXT0xLGw9NDQ7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDp3PTd9fXdoaWxlKDApO3JldHVybiA3PT0oMHx3KSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIGEkKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wO2U6ZG97c3dpdGNoKDB8Yyl7Y2FzZSAxNTpsPTE3O2JyZWFrO2Nhc2UgMTg6aWYoMHxE''@;'; put 'put ''MFsxMjcmYVsoQT1tKzI0fDApPj4yXV0obSxmLHAsMTQ0Mzc2KSl7YVtsPj4yXT0zNSxsPTE3O2JyZWFrIGV9MHxEMFsxMjcmYVtBPj4yXV0obSxmLHAsMTQ0MzgzKT8oYVtsPj4yXT0zNixsPTE3KTp3PTY7YnJlYWs7ZGVmYXVsdDp3PTZ9fXdoaWxlKDApO3JldHVybiA2PT0oMHx3KSYmKGw9''@;'; put 'put ''MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIGx1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTc7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTM3LGFbbCs4Pj4yXT0xNyxsPTE5O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24g''@;'; put 'put ''c3VlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xNzticmVhaztjYXNlIDI3OmFbbD4+Ml09MzgsbD0yMTticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIGhwKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nh''@;'; put 'put ''c2UgMTU6bD0wfGFbbCs4Pj4yXTticmVhaztjYXNlIDE3OmFbbD4+Ml09MHxhW2wrMTY+PjJdPzIwOjM5LGw9MHxhW2wrOD4+Ml07YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBEQWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAx''@;'; put 'put ''NTpsPTE3O2JyZWFrO2Nhc2UgMjc6YVtsPj4yXT0zNyxhW2wrOD4+Ml09MTcsbD0xOTticmVhaztjYXNlIDE3OmFbbD4+Ml09MHxhW2wrMTY+PjJdPzIwOjM5LGw9MjA7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBMQWUobCxjLGYscCxtKXtsfD0wLGZ8''@;'; put 'put ''PTAscHw9MCxtfD0wO3ZhciBBPTA7c3dpdGNoKDB8KGN8PTApKXtjYXNlIDMzOmFbbD4+Ml09NDAsZj0wO2JyZWFrO2Nhc2UgMzQ6KHA9MHxhWyhmPWwrMTJ8MCk+PjJdKT8oYVtmPj4yXT1wKy0xLGY9MCk6QT03O2JyZWFrO2Nhc2UgMTU6Zj0wO2JyZWFrO2Nhc2UgMjY6QT03O2JyZWFrO2Nh''@;'; put 'put ''c2UtNDowfGFbbCsxMj4+Ml0/QT03OmY9MDticmVhaztkZWZhdWx0OmY9MHxudWUobCxjLGYscCxtKX1yZXR1cm4gNz09KDB8QSkmJihmPTB8amEobCxjKSksMHxmfSxmdW5jdGlvbiBPQWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7ZTpkb3tzd2l0''@;'; put 'put ''Y2goMHxjKXtjYXNlIDE1Omw9MDticmVhaztjYXNlIDE4OmlmKDB8RDBbMTI3JmFbKEE9bSsyNHwwKT4+Ml1dKG0sZixwLDE0NDQyMikpe2FbbD4+Ml09NDEsbD0wO2JyZWFrIGV9MHxEMFsxMjcmYVtBPj4yXV0obSxmLHAsMTQ0NDMwKT8oYVtsPj4yXT00MixsPTApOnc9NjticmVhaztkZWZh''@;'; put 'put ''dWx0Onc9Nn19d2hpbGUoMCk7cmV0dXJuIDY9PSgwfHcpJiYobD0wfGphKGwsYykpLDB8bH0sZnVuY3Rpb24gdXVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0wO2JyZWFrO2Nhc2UgMjU6YVtsPj4yXT0zOSxhWyhsPWwrMTJ8MCk+PjJdPTErKDB8YVtsPj4y''@;'; put 'put ''XSksbD0wO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gUkFlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0wO2JyZWFrO2Nhc2UgMjU6YVtsPj4yXT0zOSxsPTU4O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJu''@;'; put 'put ''IDB8bH0sZnVuY3Rpb24gUEFlKGwsYyxmLHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wO3N3aXRjaCgwfChjfD0wKSl7Y2FzZSAxNTpsPTM5O2JyZWFrO2Nhc2UgMjA6MHxEMFsxMjcmYVttKzI0Pj4yXV0obSxmKygwfGFbbSs2ND4+Ml0pfDAscCwxNDQ0NDcpPyhhW2w+PjJdPTQ0''@;'; put 'put ''LGw9NDMpOkE9OTticmVhaztjYXNlIDIzOmFbbCs0Pj4yXT0yLGFbbD4+Ml09NDUsbD00NDticmVhaztjYXNlIDQxOmNhc2UgMTg6YVtsPj4yXT00NixsPTUxO2JyZWFrO2Nhc2UgMzA6YVtsPj4yXT00NixsPTUzO2JyZWFrO2Nhc2UgMzE6YVtsPj4yXT00NixsPTUyO2JyZWFrO2Nhc2UgMzI6''@;'; put 'put ''YVtsPj4yXT00NixsPTU0O2JyZWFrO2RlZmF1bHQ6QT05fXJldHVybiA5PT0oMHxBKSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIGN1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9Mzk7YnJlYWs7Y2FzZSAyNDphW2w+PjJdPTM3LGFbbCs4Pj4yXT0z''@;'; put 'put ''OSxsPTQ1O2JyZWFrO2Nhc2UgMzY6YVtsPj4yXT0zNyxhW2wrOD4+Ml09MzksbD00NjticmVhaztjYXNlIDIxOmFbbD4+Ml09NDcsbD0zOTticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIGZ1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtj''@;'; put 'put ''YXNlIDE1Omw9Mzk7YnJlYWs7Y2FzZSAyMzphWyhsPWwrNHwwKT4+Ml09MSsoMHxhW2w+PjJdKSxsPTQ0O2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODphW2w+PjJdPTQ2LGw9NTE7YnJlYWs7Y2FzZSAzMDphW2w+PjJdPTQ2LGw9NTM7YnJlYWs7Y2FzZSAzMTphW2w+PjJdPTQ2LGw9NTI7YnJlYWs7''@;'; put 'put ''Y2FzZSAzMjphW2w+PjJdPTQ2LGw9NTQ7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBodWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCxwfD0wLG18PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zOTticmVhaztjYXNlIDI0OmFbKHA9bCs0fDApPj4yXT1tPSgw''@;'; put 'put ''fGFbcD4+Ml0pLTF8MCxtfHwoYVtsPj4yXT0zNyxhW2wrOD4+Ml09MzkpLGw9NDU7YnJlYWs7Y2FzZSAzNjphWyhwPWwrNHwwKT4+Ml09bT0oMHxhW3A+PjJdKS0xfDAsbXx8KGFbbD4+Ml09MzcsYVtsKzg+PjJdPTM5KSxsPTQ2O2JyZWFrO2Nhc2UgMzU6YVsocD1sKzR8MCk+PjJdPW09KDB8''@;'; put 'put ''YVtwPj4yXSktMXwwLG18fChhW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSksbD00NzticmVhaztjYXNlIDM3OmFbKHA9bCs0fDApPj4yXT1tPSgwfGFbcD4+Ml0pLTF8MCxtfHwoYVtsPj4yXT0zNyxhW2wrOD4+Ml09MzkpLGw9NDg7YnJlYWs7Y2FzZSAzODphW2w+PjJdPTQ1LGw9NTA7YnJlYWs7''@;'; put 'put ''Y2FzZSAyMTphW2w+PjJdPTQ1LGw9NDk7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBkdWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM5O2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODphW2w+PjJdPTQ4LGw9NTE7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBwdWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM5O2JyZWFrO2Nhc2UgMzY6YVtsPj4yXT0zNyxhW2wrOD4+Ml09MzksbD00NjticmVhaztjYXNlIDIxOmFbbD4+Ml09NDcsbD0zOTti''@;'; put 'put ''cmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIENMKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1OkE9MzM7YnJlYWs7Y2FzZSAxODpmb3Iodz1tKzI0fDAsQT0w''@;'; put 'put ''O2I9MHxhW3c+PjJdLCEoKDB8QSk+PTgpOyl7aWYoMHxEMFsxMjcmYl0obSxmLHAsMHxhWzYyMzA0KyhBPDwyKT4+Ml0pKXtrPTY7YnJlYWt9QT1BKzF8MH1pZig2PT0oMHxrKSl7YVtsPj4yXT01MCxBPUErMjN8MDticmVhayBlfTB8RDBbMTI3JmJdKG0sZixwLDE0NDQxMyk/KGFbbD4+Ml09''@;'; put 'put ''NTEsQT0zMyk6az0xMDticmVhaztjYXNlIDIzOmFbbD4+Ml09NTIsQT0zMzticmVhaztkZWZhdWx0Oms9MTB9fXdoaWxlKDApO3JldHVybiAxMD09KDB8aykmJihBPTB8amEobCxjKSksMHxBfSxmdW5jdGlvbiBodihsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0w''@;'; put 'put ''LHc9MCxiPTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1Omw9MzM7YnJlYWs7Y2FzZSAyMDppZigwfEQwWzEyNyZhWyhBPW0rMjR8MCk+PjJdXShtLGYrKDB8YVsodz1tKzY0fDApPj4yXSl8MCxwLDE0NDQ1NCkpe2FbbD4+Ml09MzIsbD0zNTticmVhayBlfWlmKDB8RDBbMTI3JmFbQT4+Ml1d''@;'; put 'put ''KG0sZisoMHxhW3c+PjJdKXwwLHAsMTQ0NDYyKSl7YVtsPj4yXT0zMixsPTM2O2JyZWFrIGV9MHxEMFsxMjcmYVtBPj4yXV0obSxmKygwfGFbdz4+Ml0pfDAscCwxNDQ0NzEpPyhhW2w+PjJdPTUzLGw9MzMpOmI9OTticmVhaztjYXNlIDI3OmFbbD4+Ml09MzIsbD0zNzticmVhaztkZWZhdWx0''@;'; put 'put ''OmI9OX19d2hpbGUoMCk7cmV0dXJuIDk9PSgwfGIpJiYobD0wfGphKGwsYykpLDB8bH0sZnVuY3Rpb24gZ3VlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zMzticmVhaztjYXNlIDIzOmFbbD4+Ml09NTQsbD0zMzticmVhaztkZWZhdWx0Omw9MHxqYShsLGMp''@;'; put 'put ''fXJldHVybiAwfGx9LGZ1bmN0aW9uIG11ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzM7YnJlYWs7Y2FzZSA0MTpjYXNlIDE4OmNhc2UgMTk6YVtsPj4yXT01NSxsPTMxO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24g''@;'; put 'put ''eXVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zMzticmVhaztjYXNlIDI3OmFbbD4+Ml09MzIsbD0zODticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIEF1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtj''@;'; put 'put ''YXNlIDE1Omw9MzM7YnJlYWs7Y2FzZSAxODphW2w+PjJdPTU2LGw9MzI7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiB2dWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTMzO2JyZWFrO2Nhc2UgMjQ6YVtsPj4yXT01MCxs''@;'; put 'put ''PTMzO2JyZWFrO2Nhc2UgMjE6YVtsPj4yXT01MixsPTMzO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gZHYobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTMzO2JyZWFrO2Nhc2UgMjQ6YVtsPj4yXT01MCxsPTMzO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjE6YVtsPj4yXT01NCxsPTMzO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24ga3VlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wO2U6ZG97c3dpdGNoKDB8Yyl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTg6aWYoMHxEMFsxMjcmYVsoQT1tKzI0fDApPj4yXV0obSxmLHAsMTQ0Mzc2KSl7YVtsPj4yXT02MixsPTExO2JyZWFrIGV9MHxEMFsxMjcmYVtBPj4yXV0obSxmLHAsMTQ0MzgzKT8oYVtsPj4yXT02MyxsPTExKTp3PTc7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTM3LGFbbCs4Pj4yXT0xMSxs''@;'; put 'put ''PTEyO2JyZWFrO2RlZmF1bHQ6dz03fX13aGlsZSgwKTtyZXR1cm4gNz09KDB8dykmJihsPTB8amEobCxjKSksMHxsfSxmdW5jdGlvbiB3dWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2UgMjc6YVtsPj4yXT02MCxsPTEzO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gYnVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xMTticmVhaztjYXNlIDI3OmFbbD4+Ml09NTgsbD0xNDticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9u''@;'; put 'put ''IF91ZShsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MDtzd2l0Y2goMHwoY3w9MCkpe2Nhc2UgMTU6bD0xMTticmVhaztjYXNlIDE3OmFbbD4+Ml09MHxhW2wrMTY+PjJdPzIwOjM5LGw9MTU7YnJlYWs7Y2FzZSAxODowfEQwWzEyNyZhW20rMjQ+PjJdXShtLGYscCwxNDQ1''@;'; put 'put ''MjUpPyhhW2w+PjJdPTYxLGw9MTEpOkE9NTticmVhaztkZWZhdWx0OkE9NX1yZXR1cm4gNT09KDB8QSkmJihsPTB8amEobCxjKSksMHxsfSxmdW5jdGlvbiBDdWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2UgMTg6YVtsPj4yXT0zNyxh''@;'; put 'put ''W2wrOD4+Ml09MTEsbD0xNjticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIFN1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTY0LGw9MTM7YnJlYWs7ZGVmYXVsdDpsPTB8amEo''@;'; put 'put ''bCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBzJChsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTYyLGw9MTQ7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiB1JChsLGMsZixwLG0p''@;'; put 'put ''e3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAxNzphW2w+PjJdPTB8YVtsKzE2Pj4yXT8yMDozOSxsPTE1O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8s''@;'; put 'put ''VW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW8sVW9dLFJjPVtmdW5jdGlvbiBrZmUobCxj''@;'; put 'put ''LGYscCxtLEEpe3JldHVybiBwMigxMCksMH0sZnVuY3Rpb24gVjQobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBCZSxIZSxqZSxldCxydCxHZSxsdCxNdCxrdCxFdCxadCx1dCx3dCxybix5bixGbixOcixrcixDcix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsTGU9MCxhdD0wLGxyPTAsY3I9MCxxcj0wLExyPTAsYTA9MCxGaT0wLFBpPTA7Q3I9b2Usb2U9b2UrMzM2fDAsd3Q9Q3IrMzIwfDAsdXQ9Q3IrMzA0fDAsQmU9Q3IrMTQ0fDAsSz1DcisxMjh8MCxFdD1DcisxMTJ8MCxadD1Dcis5NnwwLGNy''@;'; put 'put ''PUNyKzgwfDAscnQ9Q3IrNjR8MCxsdD1Dcis0OHwwLHJuPUNyKzMyfDAseW49Q3IrMTZ8MCxGbj1DcixIZT1DcisyODh8MCxqZT1DcisyNzJ8MCxldD1DcisyNTZ8MCxHZT1DcisyNDB8MCxNdD1DcisyMjR8MCxrdD1DcisyMDh8MCxscj1DcisxOTJ8MCxOcj1DcisxNzZ8MCxrcj1DcisxNjB8''@;'; put 'put ''MCx3PTB8YVs0NzQ2Ml07ZG97aWYoKDB8YVs0NzQ2MV0pPCgwfHApKXtpZih3KXtpZih3PTB8WmEodyw0MCpwfDApLGFbNDc0NjJdPXcsIXcpe3c9LTE7YnJlYWt9fWVsc2UgaWYodz0wfFIwKDQwKnB8MCksYVs0NzQ2Ml09dywhdyl7dz0tMTticmVha31hWzQ3NDYxXT1wLGs9Nn1lbHNlIGs9''@;'; put 'put ''Nn13aGlsZSgwKTtpZig2PT0oMHxrKSl7Zm9yKF9bdz4+M109MCxrPTEsYj0wOyEoKDB8ayk+PSgwfHApKTspYXQ9ZisoaystMTw8NCl8MCxhW3V0Pj4yXT1hWyhEPWYrKGs8PDQpfDApPj4yXSxhW3V0KzQ+PjJdPWFbRCs0Pj4yXSxhW3V0Kzg+PjJdPWFbRCs4Pj4yXSxhW3V0KzEyPj4yXT1h''@;'; put 'put ''W0QrMTI+PjJdLGFbd3Q+PjJdPWFbYXQ+PjJdLGFbd3QrND4+Ml09YVthdCs0Pj4yXSxhW3d0Kzg+PjJdPWFbYXQrOD4+Ml0sYVt3dCsxMj4+Ml09YVthdCsxMj4+Ml0sTGU9K3k2KHV0LHd0KStiLF9bdysoNDAqa3wwKT4+M109TGUsaz1rKzF8MCxiPUxlO2ZvcihEPXcrKDQwKihhdD1wKy0x''@;'; put 'put ''fDApfDApfDAsaz0xOyEoKDB8ayk+PSgwfHApKTspX1socXI9dysoNDAqa3wwKXwwKT4+M109K19bcXI+PjNdLytfW0Q+PjNdLGs9aysxfDA7Zm9yKGs9MDshKCgwfGspPj0oMHxwKSk7KXFyPXcrKDQwKmt8MCkrOHwwLExlPStvQSgrX1soRD13Kyg0MCprfDApfDApPj4zXSksYVt3dD4+Ml09''@;'; put 'put ''YVttPj4yXSxhW3d0KzQ+PjJdPWFbbSs0Pj4yXSxhW3d0Kzg+PjJdPWFbbSs4Pj4yXSxhW3d0KzEyPj4yXT1hW20rMTI+PjJdLEtmKEhlLHd0LExlKSxhW3FyPj4yXT1hW0hlPj4yXSxhW3FyKzQ+PjJdPWFbSGUrND4+Ml0sYVtxcis4Pj4yXT1hW0hlKzg+PjJdLGFbcXIrMTI+PjJdPWFbSGUr''@;'; put 'put ''MTI+PjJdLHFyPXcrKDQwKmt8MCkrMjR8MCxMZT0rU2QoK19bRD4+M10pLGFbd3Q+PjJdPWFbQT4+Ml0sYVt3dCs0Pj4yXT1hW0ErND4+Ml0sYVt3dCs4Pj4yXT1hW0ErOD4+Ml0sYVt3dCsxMj4+Ml09YVtBKzEyPj4yXSxLZihqZSx3dCxMZSksYVtxcj4+Ml09YVtqZT4+Ml0sYVtxcis0Pj4y''@;'; put 'put ''XT1hW2plKzQ+PjJdLGFbcXIrOD4+Ml09YVtqZSs4Pj4yXSxhW3FyKzEyPj4yXT1hW2plKzEyPj4yXSxrPWsrMXwwO2lmKGFbdXQ+PjJdPWFbbT4+Ml0sYVt1dCs0Pj4yXT1hW20rND4+Ml0sYVt1dCs4Pj4yXT1hW20rOD4+Ml0sYVt1dCsxMj4+Ml09YVttKzEyPj4yXSxhW3d0Pj4yXT1hW0E+''@;'; put 'put ''PjJdLGFbd3QrND4+Ml09YVtBKzQ+PjJdLGFbd3QrOD4+Ml09YVtBKzg+PjJdLGFbd3QrMTI+PjJdPWFbQSsxMj4+Ml0sZnVuY3Rpb24gRm0obCxjLGYscCxtLEEsdyxiLGspe2Z8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCxifD0wLGt8PTA7dmFyIHBlLG1lLGJlLE9lLExlLEdlLGx0LE10LGt0''@;'; put 'put ''LEV0LE09MCxEPTAsUj0wLEc9MCxLPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxydD0wLGF0PTAsWnQ9MCx1dD0wLHd0PTAscm49MCx5bj0wLEZuPTA7Zm9yKEV0PW9lLG9lPW9lKzEyOHwwLEdlPUV0KzExMnwwLExlPUV0KzgwfDAsT2U9RXQscGU9RXQrOTZ8MCxtZT1FdCs2NHwwLGJlPUV0KzQ4''@;'; put 'put ''fDAsbHQ9RXQrMzJ8MCxNdD1FdCsxNnwwLGt0PShsfD0wKSsoKGN8PTApLTE8PDQpfDAsSz0wLEJlPTAsSGU9MCxqZT0wLGV0PTAscnQ9MDshKCgwfEspPj0oMHxjKSk7KWFbTGU+PjJdPWFbKHJuPWYrKDQwKkt8MCkrOHwwKT4+Ml0sYVtMZSs0Pj4yXT1hW3JuKzQ+PjJdLGFbTGUrOD4+Ml09''@;'; put 'put ''YVtybis4Pj4yXSxhW0xlKzEyPj4yXT1hW3JuKzEyPj4yXSxhW0dlPj4yXT1hW3JuPj4yXSxhW0dlKzQ+PjJdPWFbcm4rND4+Ml0sYVtHZSs4Pj4yXT1hW3JuKzg+PjJdLGFbR2UrMTI+PjJdPWFbcm4rMTI+PjJdLFp0PStIbShMZSxHZSkrSGUsd3Q9ZisoNDAqS3wwKSsyNHwwLGFbTGU+PjJd''@;'; put 'put ''PWFbcm4+PjJdLGFbTGUrND4+Ml09YVtybis0Pj4yXSxhW0xlKzg+PjJdPWFbcm4rOD4+Ml0sYVtMZSsxMj4+Ml09YVtybisxMj4+Ml0sYVtHZT4+Ml09YVt3dD4+Ml0sYVtHZSs0Pj4yXT1hW3d0KzQ+PjJdLGFbR2UrOD4+Ml09YVt3dCs4Pj4yXSxhW0dlKzEyPj4yXT1hW3d0KzEyPj4yXSxH''@;'; put 'put ''PStIbShMZSxHZSkrcnQsYVtMZT4+Ml09YVt3dD4+Ml0sYVtMZSs0Pj4yXT1hW3d0KzQ+PjJdLGFbTGUrOD4+Ml09YVt3dCs4Pj4yXSxhW0xlKzEyPj4yXT1hW3d0KzEyPj4yXSxhW0dlPj4yXT1hW3d0Pj4yXSxhW0dlKzQ+PjJdPWFbd3QrND4+Ml0sYVtHZSs4Pj4yXT1hW3d0Kzg+PjJdLGFb''@;'; put 'put ''R2UrMTI+PjJdPWFbd3QrMTI+PjJdLFI9K0htKExlLEdlKStqZSx5bj1sKyhLPDw0KXwwLHV0PStBXygrX1soRm49ZisoNDAqS3wwKXwwKT4+M10pLGFbR2U+PjJdPWFbbD4+Ml0sYVtHZSs0Pj4yXT1hW2wrND4+Ml0sYVtHZSs4Pj4yXT1hW2wrOD4+Ml0sYVtHZSsxMj4+Ml09YVtsKzEyPj4y''@;'; put 'put ''XSxLZihtZSxHZSx1dCksdXQ9K0JHKCtfW0ZuPj4zXSksYVtHZT4+Ml09YVtrdD4+Ml0sYVtHZSs0Pj4yXT1hW2t0KzQ+PjJdLGFbR2UrOD4+Ml09YVtrdCs4Pj4yXSxhW0dlKzEyPj4yXT1hW2t0KzEyPj4yXSxLZihiZSxHZSx1dCksYVtMZT4+Ml09YVttZT4+Ml0sYVtMZSs0Pj4yXT1hW21l''@;'; put 'put ''KzQ+PjJdLGFbTGUrOD4+Ml09YVttZSs4Pj4yXSxhW0xlKzEyPj4yXT1hW21lKzEyPj4yXSxhW0dlPj4yXT1hW2JlPj4yXSxhW0dlKzQ+PjJdPWFbYmUrND4+Ml0sYVtHZSs4Pj4yXT1hW2JlKzg+PjJdLGFbR2UrMTI+PjJdPWFbYmUrMTI+PjJdLG1fKHBlLExlLEdlKSxhW0xlPj4yXT1hW3lu''@;'; put 'put ''Pj4yXSxhW0xlKzQ+PjJdPWFbeW4rND4+Ml0sYVtMZSs4Pj4yXT1hW3luKzg+PjJdLGFbTGUrMTI+PjJdPWFbeW4rMTI+PjJdLGFbR2U+PjJdPWFbcGU+PjJdLGFbR2UrND4+Ml09YVtwZSs0Pj4yXSxhW0dlKzg+PjJdPWFbcGUrOD4+Ml0sYVtHZSsxMj4+Ml09YVtwZSsxMj4+Ml0sYUEoT2Us''@;'; put 'put ''TGUsR2UpLGFbTGU+PjJdPWFbcm4+PjJdLGFbTGUrND4+Ml09YVtybis0Pj4yXSxhW0xlKzg+PjJdPWFbcm4rOD4+Ml0sYVtMZSsxMj4+Ml09YVtybisxMj4+Ml0sYVtHZT4+Ml09YVtPZT4+Ml0sYVtHZSs0Pj4yXT1hW09lKzQ+PjJdLGFbR2UrOD4+Ml09YVtPZSs4Pj4yXSxhW0dlKzEyPj4y''@;'; put 'put ''XT1hW09lKzEyPj4yXSx1dD0rSG0oTGUsR2UpK0JlLGFbTGU+PjJdPWFbd3Q+PjJdLGFbTGUrND4+Ml09YVt3dCs0Pj4yXSxhW0xlKzg+PjJdPWFbd3QrOD4+Ml0sYVtMZSsxMj4+Ml09YVt3dCsxMj4+Ml0sYVtHZT4+Ml09YVtPZT4+Ml0sYVtHZSs0Pj4yXT1hW09lKzQ+PjJdLGFbR2UrOD4+''@;'; put 'put ''Ml09YVtPZSs4Pj4yXSxhW0dlKzEyPj4yXT1hW09lKzEyPj4yXSxLPUsrMXwwLEJlPXV0LEhlPVp0LGplPVIsZXQ9K0htKExlLEdlKStldCxydD1HOyhHPShSPWplKkhlLXJ0KnJ0KT49MD9SOi1SKT49MWUtNiYmIShHPDFlLTZ8KE09KGplKkJlLXJ0KmV0KS9SKTw9MHwoRD0oSGUqZXQtcnQq''@;'; put 'put ''QmUpL1IpPD0wKXx8KGF0PTYpLDY9PSgwfGF0KSYmKGFbTGU+PjJdPWFbbD4+Ml0sYVtMZSs0Pj4yXT1hW2wrND4+Ml0sYVtMZSs4Pj4yXT1hW2wrOD4+Ml0sYVtMZSsxMj4+Ml09YVtsKzEyPj4yXSxhW0dlPj4yXT1hW2t0Pj4yXSxhW0dlKzQ+PjJdPWFba3QrND4+Ml0sYVtHZSs4Pj4yXT1h''@;'; put 'put ''W2t0Kzg+PjJdLGFbR2UrMTI+PjJdPWFba3QrMTI+PjJdLEQ9TT0uMzMzMzMzMzMzMzMzMzMzMyoreTYoTGUsR2UpKSxhW0E+PjJdPWFbbD4+Ml0sYVtBKzQ+PjJdPWFbbCs0Pj4yXSxhW0ErOD4+Ml09YVtsKzg+PjJdLGFbQSsxMj4+Ml09YVtsKzEyPj4yXSxhW0dlPj4yXT1hW3A+PjJdLGFb''@;'; put 'put ''R2UrND4+Ml09YVtwKzQ+PjJdLGFbR2UrOD4+Ml09YVtwKzg+PjJdLGFbR2UrMTI+PjJdPWFbcCsxMj4+Ml0sS2YobHQsR2UsTSksYVt3Pj4yXT1hW2x0Pj4yXSxhW3crND4+Ml09YVtsdCs0Pj4yXSxhW3crOD4+Ml09YVtsdCs4Pj4yXSxhW3crMTI+PjJdPWFbbHQrMTI+PjJdLGFbYj4+Ml09''@;'; put 'put ''YVtrdD4+Ml0sYVtiKzQ+PjJdPWFba3QrND4+Ml0sYVtiKzg+PjJdPWFba3QrOD4+Ml0sYVtiKzEyPj4yXT1hW2t0KzEyPj4yXSxhW0dlPj4yXT1hW20+PjJdLGFbR2UrND4+Ml09YVttKzQ+PjJdLGFbR2UrOD4+Ml09YVttKzg+PjJdLGFbR2UrMTI+PjJdPWFbbSsxMj4+Ml0sS2YoTXQsR2Us''@;'; put 'put ''RCksYVtrPj4yXT1hW010Pj4yXSxhW2srND4+Ml09YVtNdCs0Pj4yXSxhW2srOD4+Ml09YVtNdCs4Pj4yXSxhW2srMTI+PjJdPWFbTXQrMTI+PjJdLG9lPUV0fShmLHAsdyx1dCx3dCxFdCxydCxadCxsdCksYVtLPj4yXT1hW0V0Pj4yXSxhW0srND4+Ml09YVtFdCs0Pj4yXSxhW0srOD4+Ml09''@;'; put 'put ''YVtFdCs4Pj4yXSxhW0srMTI+PjJdPWFbRXQrMTI+PjJdLGFbQmU+PjJdPWFbcnQ+PjJdLGFbQmUrND4+Ml09YVtydCs0Pj4yXSxhW0JlKzg+PjJdPWFbcnQrOD4+Ml0sYVtCZSsxMj4+Ml09YVtydCsxMj4+Ml0sYVt1dD4+Ml09YVtadD4+Ml0sYVt1dCs0Pj4yXT1hW1p0KzQ+PjJdLGFbdXQr''@;'; put 'put ''OD4+Ml09YVtadCs4Pj4yXSxhW3V0KzEyPj4yXT1hW1p0KzEyPj4yXSxhW3d0Pj4yXT1hW2x0Pj4yXSxhW3d0KzQ+PjJdPWFbbHQrND4+Ml0sYVt3dCs4Pj4yXT1hW2x0Kzg+PjJdLGFbd3QrMTI+PjJdPWFbbHQrMTI+PjJdLDB8ZnVuY3Rpb24gWEIobCxjLGYscCxtLEEsdyxiKXtsfD0wLGN8''@;'; put 'put ''PTAsd3w9MDt2YXIgRCxSLEcsSyxwZSxtZSxiZSxPZSxMZSxCZSxIZSxqZSxldCxHZSxsdCxrPTAsTT0wLHJ0PTAsTXQ9MCxrdD0wO2ZvcihsdD1vZSxvZT1vZSs2NHwwLGV0PTI9PSgwfChifD0wKSksamU9K19bKGZ8PTApPj4zXSxPZT0rX1tmKzg+PjNdLExlPShHZT1sdCkrOHwwLEJlPStf''@;'; put 'put ''WyhwfD0wKT4+M10sSGU9R2UrMTZ8MCxHPStfW3ArOD4+M10sSz1HZSsyNHwwLHBlPStfWyhtfD0wKT4+M10sbWU9K19bKEF8PTApPj4zXSxiZT1HZSszMnwwLFI9K19bbSs4Pj4zXSxEPStfW0ErOD4+M10scD1HZSs0MHwwLG09R2UrNDh8MCxBPUdlKzU2fDAsZj0xLGs9NCxNPTQ7Oyl7aWYo''@;'; put 'put ''X1tHZT4+M109amUsX1tMZT4+M109T2UsX1tIZT4+M109KE10PS4zMzMzMzMzMzMzMzMzMzMzKk0pKkJlK2plLF9bSz4+M109TXQqRytPZSxfW2JlPj4zXT1wZS0oTXQ9LjMzMzMzMzMzMzMzMzMzMzMqaykqbWUsX1twPj4zXT1SLU10KkQsX1ttPj4zXT1wZSxfW0E+PjNdPVIsZiYmKE10PSt5''@;'; put 'put ''eChHZSw0KSk8K3l4KHcsYiktLjAwMSl7Zj0wO2JyZWFrfWlmKDB8ZnUobCxjLEdlKSl7cnQ9NTticmVha31pZigwPT1NJjA9PWspe3J0PTk7YnJlYWt9Zj0wLGs9KGt0PU0+LjAxKT8uNSprOjAsTT1rdD8uNSpNOjB9ZTpkb3tpZig1PT0oMHxydCkpZm9yKEF4KDQrKDB8YVs0NzQ1OV0pfDAp''@;'; put 'put ''LHA9MHxhWzQ3NDYwXSxmPTE7Oyl7aWYoND09KDB8Zikpe2Y9MTticmVhayBlfV9bcCsoKGt0PTB8YVs0NzQ1OV0pPDw0KT4+M109K19bR2UrKGY8PDQpPj4zXSxNdD0rX1tHZSsoZjw8NCkrOD4+M10sYVs0NzQ1OV09a3QrMSxfW3ArKGt0PDw0KSs4Pj4zXT1NdCxmPWYrMXwwfWVsc2UgaWYo''@;'; put 'put ''OT09KDB8cnQpKWlmKGV0KWZvcihBeCg0KygwfGFbNDc0NTldKXwwKSxwPTB8YVs0NzQ2MF0sZj0xOzspe2lmKDQ9PSgwfGYpKXtmPTE7YnJlYWsgZX1fW3ArKChrdD0wfGFbNDc0NTldKTw8NCk+PjNdPStfW0dlKyhmPDw0KT4+M10sTXQ9K19bR2UrKGY8PDQpKzg+PjNdLGFbNDc0NTldPWt0''@;'; put 'put ''KzEsX1twKyhrdDw8NCkrOD4+M109TXQsZj1mKzF8MH1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gb2U9bHQsMHxmfShsLGMsSyxCZSx1dCx3dCxmLHApKXc9MDtlbHNle2ZvcihhW3d0Pj4yXT1hW3J0Pj4yXSxhW3d0KzQ+PjJdPWFbcnQrND4+Ml0sYVt3dCs4Pj4yXT1hW3J0Kzg+PjJdLGFb''@;'; put 'put ''d3QrMTI+PjJdPWFbcnQrMTI+PjJdLEtmKGV0LHd0LC4zMzMzMzMzMzMzMzMzMzMzKSxhW3V0Pj4yXT1hW0V0Pj4yXSxhW3V0KzQ+PjJdPWFbRXQrND4+Ml0sYVt1dCs4Pj4yXT1hW0V0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbRXQrMTI+PjJdLGFbd3Q+PjJdPWFbZXQ+PjJdLGFbd3QrND4+Ml09''@;'; put 'put ''YVtldCs0Pj4yXSxhW3d0Kzg+PjJdPWFbZXQrOD4+Ml0sYVt3dCsxMj4+Ml09YVtldCsxMj4+Ml0sbV8oR2UsdXQsd3QpLExlPStfW0dlPj4zXSxPZT0rX1tHZSs4Pj4zXSxhW3d0Pj4yXT1hW2x0Pj4yXSxhW3d0KzQ+PjJdPWFbbHQrND4+Ml0sYVt3dCs4Pj4yXT1hW2x0Kzg+PjJdLGFbd3Qr''@;'; put 'put ''MTI+PjJdPWFbbHQrMTI+PjJdLEtmKE10LHd0LC4zMzMzMzMzMzMzMzMzMzMzKSxhW3V0Pj4yXT1hW1p0Pj4yXSxhW3V0KzQ+PjJdPWFbWnQrND4+Ml0sYVt1dCs4Pj4yXT1hW1p0Kzg+PjJdLGFbdXQrMTI+PjJdPWFbWnQrMTI+PjJdLGFbd3Q+PjJdPWFbTXQ+PjJdLGFbd3QrND4+Ml09YVtN''@;'; put 'put ''dCs0Pj4yXSxhW3d0Kzg+PjJdPWFbTXQrOD4+Ml0sYVt3dCsxMj4+Ml09YVtNdCsxMj4+Ml0sYUEoa3QsdXQsd3QpLGJlPStfW2t0Pj4zXSxHPStfW2t0Kzg+PjNdLEs9MHxhWzQ3NDYyXSxwZT0rX1tFdD4+M10sbWU9K19bWnQ+PjNdLFI9K19bRXQrOD4+M10sTT0rX1tadCs4Pj4zXSxEPWNy''@;'; put 'put ''Kzh8MCx3PS0xLGI9LTEsaz0xOyEoKDB8ayk+PSgwfGF0KSk7KWEwPStLQihMcj0rX1tLKyg0MCprfDApPj4zXSksRmk9K29BKExyKSxQaT0rU2QoTHIpLExyPSt2XyhMciksX1tjcj4+M109RmkqTGUrcGUqYTArUGkqYmUrbWUqTHIsX1tEPj4zXT1QaSpHK0ZpKk9lK1IqYTArTSpMcixxcj1m''@;'; put 'put ''KyhrPDw0KXwwLGFbdXQ+PjJdPWFbY3I+PjJdLGFbdXQrND4+Ml09YVtjcis0Pj4yXSxhW3V0Kzg+PjJdPWFbY3IrOD4+Ml0sYVt1dCsxMj4+Ml09YVtjcisxMj4+Ml0sYVt3dD4+Ml09YVtxcj4+Ml0sYVt3dCs0Pj4yXT1hW3FyKzQ+PjJdLGFbd3QrOD4+Ml09YVtxcis4Pj4yXSxhW3d0KzEy''@;'; put 'put ''Pj4yXT1hW3FyKzEyPj4yXSx3PShxcj0oTHI9K3k2KHV0LHd0KSk+Yik/azp3LGI9cXI/THI6YixrPWsrMXwwO2NyPWYrKHcrLTE8PDQpfDAsYVt1dD4+Ml09YVsocXI9Zisodzw8NCl8MCk+PjJdLGFbdXQrND4+Ml09YVtxcis0Pj4yXSxhW3V0Kzg+PjJdPWFbcXIrOD4+Ml0sYVt1dCsxMj4+''@;'; put 'put ''Ml09YVtxcisxMj4+Ml0sYVt3dD4+Ml09YVtjcj4+Ml0sYVt3dCs0Pj4yXT1hW2NyKzQ+PjJdLGFbd3QrOD4+Ml09YVtjcis4Pj4yXSxhW3d0KzEyPj4yXT1hW2NyKzEyPj4yXSxhQShscix1dCx3dCksYVt3dD4+Ml09YVtscj4+Ml0sYVt3dCs0Pj4yXT1hW2xyKzQ+PjJdLGFbd3QrOD4+Ml09''@;'; put 'put ''YVtscis4Pj4yXSxhW3d0KzEyPj4yXT1hW2xyKzEyPj4yXSxQbSh5bix3dCksYVt1dD4+Ml09YVsobHI9ZisoKGNyPXcrMXwwKTw8NCl8MCk+PjJdLGFbdXQrND4+Ml09YVtscis0Pj4yXSxhW3V0Kzg+PjJdPWFbbHIrOD4+Ml0sYVt1dCsxMj4+Ml09YVtscisxMj4+Ml0sYVt3dD4+Ml09YVtx''@;'; put 'put ''cj4+Ml0sYVt3dCs0Pj4yXT1hW3FyKzQ+PjJdLGFbd3QrOD4+Ml09YVtxcis4Pj4yXSxhW3d0KzEyPj4yXT1hW3FyKzEyPj4yXSxhQShOcix1dCx3dCksYVt3dD4+Ml09YVtOcj4+Ml0sYVt3dCs0Pj4yXT1hW05yKzQ+PjJdLGFbd3QrOD4+Ml09YVtOcis4Pj4yXSxhW3d0KzEyPj4yXT1hW05y''@;'; put 'put ''KzEyPj4yXSxQbShGbix3dCksYVt1dD4+Ml09YVt5bj4+Ml0sYVt1dCs0Pj4yXT1hW3luKzQ+PjJdLGFbdXQrOD4+Ml09YVt5bis4Pj4yXSxhW3V0KzEyPj4yXT1hW3luKzEyPj4yXSxhW3d0Pj4yXT1hW0ZuPj4yXSxhW3d0KzQ+PjJdPWFbRm4rND4+Ml0sYVt3dCs4Pj4yXT1hW0ZuKzg+PjJd''@;'; put 'put ''LGFbd3QrMTI+PjJdPWFbRm4rMTI+PjJdLG1fKGtyLHV0LHd0KSxhW3d0Pj4yXT1hW2tyPj4yXSxhW3d0KzQ+PjJdPWFba3IrND4+Ml0sYVt3dCs4Pj4yXT1hW2tyKzg+PjJdLGFbd3QrMTI+PjJdPWFba3IrMTI+PjJdLFBtKHJuLHd0KSxhW3V0Pj4yXT1hW20+PjJdLGFbdXQrND4+Ml09YVtt''@;'; put 'put ''KzQ+PjJdLGFbdXQrOD4+Ml09YVttKzg+PjJdLGFbdXQrMTI+PjJdPWFbbSsxMj4+Ml0sYVt3dD4+Ml09YVtybj4+Ml0sYVt3dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbd3QrOD4+Ml09YVtybis4Pj4yXSxhW3d0KzEyPj4yXT1hW3JuKzEyPj4yXSxWNChsLGMsZixjcix1dCx3dCksYVt1dD4+Ml09''@;'; put 'put ''YVtybj4+Ml0sYVt1dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbdXQrOD4+Ml09YVtybis4Pj4yXSxhW3V0KzEyPj4yXT1hW3JuKzEyPj4yXSxhW3d0Pj4yXT1hW0E+PjJdLGFbd3QrND4+Ml09YVtBKzQ+PjJdLGFbd3QrOD4+Ml09YVtBKzg+PjJdLGFbd3QrMTI+PjJdPWFbQSsxMj4+Ml0sVjQobCxj''@;'; put 'put ''LHFyLHAtd3wwLHV0LHd0KSx3PTB9fXJldHVybiBvZT1DciwwfHd9XSx5Wj1baXEsZnVuY3Rpb24gR2oobCxjLGYscCxtLEEsdyxiLGssTSl7cmV0dXJuIDB8aSQoMzksbHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCxifD0wLGt8PTAsTXw9MCl9LGZ1bmN0aW9uIFgxZShsLGMs''@;'; put 'put ''ZixwLG0sQSx3LGIsayxNKXtyZXR1cm4gMHxpJCg0MCxsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wLGJ8PTAsa3w9MCxNfD0wKX0saXFdLGE0PVttZyxmdW5jdGlvbiB2bGUoKXtCbigxODkyNDQpfSxmdW5jdGlvbiBRVSgpe3ZhciBNLEQsUixsPTAsYz0wLGY9MCxwPTAsbT0w''@;'; put 'put ''LEE9MCx3PTAsYj0wLGs9MDtmb3IoUj1vZSxvZT1vZSsxNnwwLEQ9Uis4fDAsaz1SLE09MHxYUSgwfGFbNDcyNTFdKSxsPTE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0pfDA7Oyl7aWYoIShjPTB8YVtsPj4yXSkpe2I9MDticmVha30wfGFbMjkyKyhsPTB8YVsoZj1jKzE2fDApPj4yXSk+''@;'; put 'put ''PjJdfHwoX2soTSxjKSxsPTB8YVtmPj4yXSksbD1sKzE2NHwwfWZvcig7bD0wfFlOKE0pOyl7Zm9yKGFbKHA9MjMyKyhsPTB8YVsodz1sKzE2fDApPj4yXSl8MCk+PjJdPTAsZj0wfGFbbCsxNzI+PjJdLGM9MCxBPTA7Oyl7aWYoIShtPTB8YVtmKyhjPDwyKT4+Ml0pKXtwPTA7YnJlYWt9YVtw''@;'; put 'put ''Pj4yXT1tPSgwfEEpPigwfChtPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDMmYVttPj4yXXwwKT9tOm0rNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkrKDB8YXJbMTcwKygwfGFbbSsxNj4+Ml0pPj4xXSl8MCkpP0E6bSxjPWMrMXwwLEE9bX1mb3IoO2M9MHxhWygwfGFbbCsxODA+PjJdKSso''@;'; put 'put ''cDw8Mik+PjJdOylmPWMrLTQ4fDAsYVsobT0yOTIrKDB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6ZikrNDA+PjJdKT4+Ml0pfDApPj4yXT0oQT0wfGFbbT4+Ml0pLTEsKDB8QSk8MiYmKF9rKE0sMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6ZikrNDA+PjJdKSxsPTB8YVt3Pj4yXSks''@;'; put 'put ''cD1wKzF8MDtiPWIrMXwwfWU6ZG97aWYoKDB8YikhPSgwfGFbNDcyNTFdKSlmb3IoWHIoMSwxMDI1NTYsayksbD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwOzspe2lmKCEoYz0wfGFbbD4+Ml0pKWJyZWFrIGU7MHxhWzI5MisobD0wfGFbKGY9YysxNnwwKT4+Ml0pPj4yXSYmKGs9''@;'; put 'put ''MHwkcihjKSxsPTB8YVsyOTIrKDB8YVtmPj4yXSk+PjJdLGFbRD4+Ml09ayxhW0QrND4+Ml09bCxYcigzLDEwMjU3OCxEKSxsPTB8YVtmPj4yXSksbD1sKzE2NHwwfX13aGlsZSgwKTtLUShNKSxvZT1SfSxKVSxmdW5jdGlvbiBjRCgpe3ZhciBtLGw9MCxjPTAsZj0wLHA9MDtmb3IobD0xOTIr''@;'; put 'put ''KDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwO2w9MHxhW2w+PjJdOylhWzI4MCsobD0wfGFbbCsxNj4+Ml0pPj4yXT0wLGw9bCsxNjR8MDtmb3IobT0wfG1yKGFbNDcyNTFdPDwyKSxwPTAsbD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwO2M9MHxhW2w+PjJdOykwfGFbMjgwKyhs''@;'; put 'put ''PTB8YVsoZj1jKzE2fDApPj4yXSk+PjJdP2M9cDooYVttKyhwPDwyKT4+Ml09MHx0YWUoYyksYz1wKzF8MCxsPTB8YVtmPj4yXSkscD1jLGw9bCsxNjR8MDtmb3IobD0wfGZ1bmN0aW9uIG5hZShsLGMpe2x8PTAsY3w9MDt2YXIgcCxmPTA7Zm9yKHA9MHxtcig4KSxhW3A+PjJdPWwsYVtwKzQ+''@;'; put 'put ''PjJdPWMsZj0wOyEoKDB8Zik+PSgwfGMpKTspYVs4KygwfGFbbCsoZjw8Mik+PjJdKT4+Ml09ZixmPWYrMXwwO2ZvcihmPSgwfGMpLzJ8MDshKCgwfGYpPD0tMSk7KWJOKHAsZiksZj1mKy0xfDA7cmV0dXJuIDB8cH0obSxwKTshKCgwfHJhZShsKSk8PTEpOyliTihsLDB8YVs4KygwfGFhZSgw''@;'; put 'put ''fG9hZSgwfGlhZShsKSkpKT4+Ml0pO2ZvcihIdChsKSxsPTA7ISgoMHxsKT49KDB8cCkpOylIdCgwfGFbbSsobDw8Mik+PjJdKSxsPWwrMXwwO0h0KG0pLCgwfGFbNDcyNTVdKSE9KCgwfGFbNDcyNTFdKS0xfDApP0JyKDEwMjMwMSwxMDIzMzEsNTIzLDEwMjMzNik6ZnVuY3Rpb24gbGFlKCl7''@;'; put 'put ''ZkQoMHxhWzE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0pPj4yXSwwLDEpLF9OKDB8YVsxOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKT4+Ml0sMCl9KCl9LGZ1bmN0aW9uICRvZSgpe3ZhciBNLGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MCxSPTA7Zm9yKEtV''@;'; put 'put ''KCksTT0wfG1yKDQrKGFbNDcyNTNdPDwyKXwwKSxjPTB8YVs0NzI1M10sbD0wOyEoKDB8bCk+KDB8YykpOylhW00rKGw8PDIpPj4yXT0wLGw9bCsxfDA7Zm9yKGM9bD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwO2M9MHxhW2M+PjJdOykwfHVlWzE1NisoYz0wfGFbYysxNj4+Ml0p''@;'; put 'put ''Pj4wXXx8KGFbKGs9TSsoYVtjKzIzMj4+Ml08PDIpfDApPj4yXT0xKygwfGFbaz4+Ml0pKSxjPWMrMTY0fDA7Zm9yKDtsPTB8YVtsPj4yXTspe2lmKCEoMHx1ZVsxNTYrKGw9MHxhWyhrPWwrMTZ8MCk+PjJdKT4+MF0pKXtmb3IobT0wfGFbNDcyNTNdLGY9MHxhW2wrMTcyPj4yXSxiPTAsdz0w''@;'; put 'put ''LGM9MDtwPTB8YVtmKyhjPDwyKT4+Ml07KWI9KDB8YVsxNTYrKEQ9MHxhW3ArMTY+PjJdKT4+Ml0pK2J8MCx3PSgwfHcpPigwfChBPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOnArNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkrKDB8YXJbRCsxNzA+PjFdKXwwKSk/''@;'; put 'put ''dzpBLGM9YysxfDA7Zm9yKHA9MHxhW2wrMTgwPj4yXSxBPTAsYz0wO2Y9MHxhW3ArKGM8PDIpPj4yXTspQT0oMHxhWzE1NisoUj0wfGFbZisxNj4+Ml0pPj4yXSkrQXwwLG09KDB8bSk8KDB8KEQ9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXSktKDB8YXJbUisxNzA+PjFdKXwwKSk/bTpELGM9YysxfDA7aWYoYz0oMHx3KT4wP3c6MCwoMHxiKT09KDB8QSkpe2ZvcihwPWMsZj1jO2M9ZisxfDAsISgoMHxmKT49KDB8bSkpOylwPSgwfGFbTSsoYzw8Mik+PjJdKTwoMHxhW00rKHA8PDIpPj4yXSk/YzpwLGY9Yzth''@;'; put 'put ''WyhEPU0rKGFbKFI9bCsyMzJ8MCk+PjJdPDwyKXwwKT4+Ml09KDB8YVtEPj4yXSktMSxhWyhEPU0rKHA8PDIpfDApPj4yXT0xKygwfGFbRD4+Ml0pLGFbUj4+Ml09cH0oYz0wfGFbbCsyNjQ+PjJdKSYmKEh0KGMpLGw9MHxhW2s+PjJdKSwoYz0wfGFbbCsyNzI+PjJdKSYmKEh0KGMpLGw9MHxh''@;'; put 'put ''W2s+PjJdKSx1ZVtsKzE1Nz4+MF09MH1sPWwrMTY0fDB9SHQoTSl9LGZ1bmN0aW9uIHFvZSgpe3ZhciBsPTAsYz0wLGY9MCxwPTAsbT0wLEE9MDtmb3IoYz0wOyEoKDB8Yyk+PSgwfGFbNDcyNTVdKSk7KXtsPTB8YVsoMHxhWzQ3MjU2XSkrKGM8PDIpPj4yXTtkb3tpZigwPT0oMHxhWzE2MCso''@;'; put 'put ''MHxhW2wrMTY+PjJdKT4+Ml0pJiYwfChmPTB8WFUobCkpJiYoMHwocD0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfChwPTMmYVtmPj4yXSkpP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHxwKT9mOmYrNDh8MCkrNDA+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXSktKDB8YXJbMTcwKygwfGFbZisxNj4+Ml0pPj4xXSl8MCkpPj0yKXtpZigoMHxhWzI4OCsoMHxhWzE2KyhtPTB8YVsoMz09KDB8KEE9MyZhW2w+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPCgwfGFbMjg4KygwfGFbMTYrKGw9MHxhWygyPT0oMHxBKT9sOmwrLTQ4''@;'; put 'put ''fDApKzQwPj4yXSk+PjJdKT4+Ml0pKXtWNShtLHA+Pj4xKTticmVha31WNShsLCgwfHApLy0yfDApO2JyZWFrfX13aGlsZSgwKTtjPWMrMXwwfUpVKCl9LEtVLGZ1bmN0aW9uIFViKCl7SHQoMHxhWzQ3Mzc1XSksYVs0NzM3NV09MCxhWzQ3Mzg3XT0wfSxtZyxtZyxtZyxtZyxtZyxtZyxtZ10s''@;'; put 'put ''bm89W3ZwLGZ1bmN0aW9uIFhyZShsKXt2YXIgYyxmLHAsbTtzd2l0Y2gobT1vZSxvZT1vZSsxNnwwLGM9bSs0fDAsZj1tLHA9MHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0sMHxhWyhsPWwrNjR8MCk+PjJdKXtjYXNlIDA6YVEocCk7YnJlYWs7Y2FzZSAxOjEmVHRbMTM2KygwfGFbcCsx''@;'; put 'put ''Nj4+Ml0pPj4xXSYmbFYocCk7YnJlYWs7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6THkocCxmLGMpLGZ1bmN0aW9uIF83ZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciB3LG09MCxBPTA7QT0wfFIwKDgyNDApLGFbNDY2OTBdPUE7ZTpkb3tzd2l0Y2goMHxwKXtjYXNlIDY6VHRbQSs4''@;'; put 'put ''MjMyPj4xXT0xNCxwPTY2NzY5O2JyZWFrO2Nhc2UgNTpUdFtBKzgyMzI+PjFdPTEyLHA9NjY3NzM7YnJlYWs7ZGVmYXVsdDppZigwfChwPTB8TGkobCw2Njc1MykpJiYwfHVlW3A+PjBdJiYoNjU1MzUmKG09MHxqMyhwKSkpPjEwKXtUdFs4MjMyKyhBPTB8YVs0NjY5MF0pPj4xXT1tO2JyZWFr''@;'; put 'put ''IGV9cD0wfGozKDY2NzY1KSxUdFs4MjMyKyhBPTB8YVs0NjY5MF0pPj4xXT1wLHA9NjY3NjV9fXdoaWxlKDApO2ZvcihhW0ErODIzNj4+Ml09cCwwfGFbMTgwKyhwPTB8YVsodz1sKzE2fDApPj4yXSk+PjJdPyhtPTB8ejIobCwwLDk5ODA4LDE5NTA1OSksQT0wfGFbNDY2OTBdLHA9MHxhW3c+''@;'; put 'put ''PjJdKTptPTAsYVtBPj4yXT1tLHA9OCZ1ZVtwKzExMz4+MF0/MHx6MihsLDAsNjY3NzcsMTk1MDU5KTowLGFbNCsoMHxhWzQ2NjkwXSk+PjJdPXAsQT0wfHoyKGwsMSw5OTgwOCwxOTUwNTkpLGFbOCsoMHxhWzQ2NjkwXSk+PjJdPUEsQT0wfHoyKGwsMSw2Njc3NywxOTUwNTkpLGFbMTIrKDB8''@;'; put 'put ''YVs0NjY5MF0pPj4yXT1BLEE9MHx6MihsLDIsOTk4MDgsMTk1MDU5KSxhWzE2KyhwPTB8YVs0NjY5MF0pPj4yXT1BLGY/KG09MHx6MihsLDIsNjY3ODUsMTk1MDU5KSxwPTB8YVs0NjY5MF0pOm09MCxhW3ArMjA+PjJdPW0sYz8obT0wfHoyKGwsMiw2Njc5MywxOTUwNTkpLHA9MHxhWzQ2Njkw''@;'; put 'put ''XSk6bT0wLGFbcCsyND4+Ml09bSwzMyYobT0wfHVlWzExMysoMHxhW3c+PjJdKT4+MF0pPyhBPTB8ejIobCwyLDY2Nzc3LDE5NTA1OSkscD0wfGFbNDY2OTBdLG09MHx1ZVsxMTMrKDB8YVt3Pj4yXSk+PjBdKTpBPTAsYVtwKzI4Pj4yXT1BLDImbT8oQT0wfHoyKGwsMiw2NjgwMSwxOTUwNTkp''@;'; put 'put ''LHA9MHxhWzQ2NjkwXSxtPTB8dWVbMTEzKygwfGFbdz4+Ml0pPj4wXSk6QT0wLGFbcCszMj4+Ml09QSw0Jm0/KG09MHx6MihsLDIsNjY4MTAsMTk1MDU5KSxwPTB8YVs0NjY5MF0pOm09MCxhW3ArMzY+PjJdPW0scD0wOzghPSgwfHApOylvcygxODY2MzIrKHA8PDQpfDAsMTAyNCw0MCsoMHxh''@;'; put 'put ''WzQ2NjkwXSkrKHA8PDEwKXwwKSxwPXArMXwwfShwLDB8YVtmPj4yXSwwfGFbYz4+Ml0sMHxhW2w+PjJdKX1vZT1tfSxmdW5jdGlvbiBOVyhsKXt2YXIgYyxmLHAsbTtzd2l0Y2goZj0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSwwfGFbNDY2NTVdfHwoYVs0NjY1NV09YVs0Njc4XSxh''@;'; put 'put ''WzQ2NjU2XT01NyxhWzQ2NjU3XT0xOSksYz0wfGFbKG09OCsoMHxhWyhwPWYrNjR8MCk+PjJdKXwwKT4+Ml0sYVttPj4yXT0xODY2MjAsMHxhW2wrNjQ+PjJdKXtjYXNlIDI6dFEobCxmLGwsMCk7YnJlYWs7Y2FzZSAzOnRRKGwsZixsLDEpO2JyZWFrO2Nhc2UgMTpjYXNlIDA6MTM0MjE3NzI4''@;'; put 'put ''JmFbbCsxNTI+PjJdfHwkbmUoZixsKTticmVhaztjYXNlIDY6Y2FzZSA1OmNhc2UgNDooZnVuY3Rpb24gemQobCl7bHw9MDt2YXIgYz0wLGY9MDtmb3IoKDB8KGM9MHxhWzQ2NjU5XSkpIT0oMHxhWzQ2NjU4XSkmJigoZj0wfGFbYVs0NjY5MF0+PjJdKXx8KGY9MHx6MihsLDAsOTk4MDgsMTk1''@;'; put 'put ''MDU5KSxhW2FbNDY2OTBdPj4yXT1mLGM9MHxhWzQ2NjU5XSksYz4+PjA+PSgwfGFbNDY2NjBdKT4+PjAmJihHMCgxODY2MzIsMSksYz0wfGFbNDY2NTldKSx1ZVtjPj4wXT0wLGFbNDY2NTldPWM9MHxhWzQ2NjU4XSxCbChsLGYsYykpLDB8YVsxMisoMHxhW2wrMTY+PjJdKT4+Ml0mJihmPTB8''@;'; put 'put ''YVs0KygwfGFbNDY2OTBdKT4+Ml0sKGM9MHxhWzQ2Njc1XSk+Pj4wPj0oMHxhWzQ2Njc2XSk+Pj4wJiYoRzAoMTg2Njk2LDEpLGM9MHxhWzQ2Njc1XSksdWVbYz4+MF09MCxhWzQ2Njc1XT1jPTB8YVs0NjY3NF0sQmwobCxmLGMpKSxmNyhsLDY2NzUzLDB8YVs4MjM2KygwfGFbNDY2OTBdKT4+''@;'; put 'put ''Ml0sMTk1MDU5KSxjPTA7OCE9KDB8Yyk7KWsyKDE4NjYzMisoYzw8NCl8MCksYz1jKzF8MDtIdCgwfGFbNDY2OTBdKSxfWzFdPTEsX1s1XT0xLGFbNDY2OTFdPTAsYVs0NjY5NV09MH0pKGYpLDEzNDIxNzcyOCZhW2wrMTUyPj4yXXx8JG5lKGYsbCl9YVs4KygwfGFbcD4+Ml0pPj4yXT1jfSxm''@;'; put 'put ''dW5jdGlvbiBLcmUobCl7dmFyIGYsYz0wO2Y9MHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0sYz0wfGFbYVs0NjY5MF0+PjJdLChsPTB8YVs0NjY2M10pPj4+MD49KDB8YVs0NjY2NF0pPj4+MCYmKEcwKDE4NjY0OCwxKSxsPTB8YVs0NjY2M10pLHVlW2w+PjBdPTAsYVs0NjY2M109bD0w''@;'; put 'put ''fGFbNDY2NjJdLEJsKGYsYyxsKSwwfGFbMTIrKDB8YVtmKzE2Pj4yXSk+PjJdJiYoYz0wfGFbNCsoMHxhWzQ2NjkwXSk+PjJdLChsPTB8YVs0NjY3OV0pPj4+MD49KDB8YVs0NjY4MF0pPj4+MCYmKEcwKDE4NjcxMiwxKSxsPTB8YVs0NjY3OV0pLHVlW2w+PjBdPTAsYVs0NjY3OV09bD0wfGFb''@;'; put 'put ''NDY2NzhdLEJsKGYsYyxsKSksX1syXT0xLF9bNl09MSxhWzQ2NjkyXT0wLGFbNDY2OTZdPTB9LGZ1bmN0aW9uICRyZShsKXt2YXIgZixjPTA7Zj0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSwoMHxhWzQ2NjYyXSkhPSgwfChsPTB8YVs0NjY2M10pKSYmKGM9MHxhWzgrKDB8YVs0NjY5''@;'; put 'put ''MF0pPj4yXSxsPj4+MD49KDB8YVs0NjY2NF0pPj4+MCYmKEcwKDE4NjY0OCwxKSxsPTB8YVs0NjY2M10pLHVlW2w+PjBdPTAsYVs0NjY2M109bD0wfGFbNDY2NjJdLEJsKGYsYyxsKSksKDB8YVs0NjY3OF0pIT0oMHwobD0wfGFbNDY2NzldKSkmJihjPTB8YVsxMisoMHxhWzQ2NjkwXSk+PjJd''@;'; put 'put ''LGw+Pj4wPj0oMHxhWzQ2NjgwXSk+Pj4wJiYoRzAoMTg2NzEyLDEpLGw9MHxhWzQ2Njc5XSksdWVbbD4+MF09MCxhWzQ2Njc5XT1sPTB8YVs0NjY3OF0sQmwoZixjLGwpKSxfWzldPTEsX1sxMV09MSxhWzQ2Njk5XT0wLGFbNDY3MDFdPTB9LGZ1bmN0aW9uIHFyZShsKXt2YXIgZixjPTA7Zj0w''@;'; put 'put ''fGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSwoMHxhWzQ2NjYyXSkhPSgwfChsPTB8YVs0NjY2M10pKSYmKGM9MHxhWzE2KygwfGFbNDY2OTBdKT4+Ml0sbD4+PjA+PSgwfGFbNDY2NjRdKT4+PjAmJihHMCgxODY2NDgsMSksbD0wfGFbNDY2NjNdKSx1ZVtsPj4wXT0wLGFbNDY2NjNdPWw9''@;'; put 'put ''MHxhWzQ2NjYyXSxCbChmLGMsbCkpLCgwfGFbNDY2NjZdKSE9KDB8KGw9MHxhWzQ2NjY3XSkpJiYoYz0wfGFbMjQrKDB8YVs0NjY5MF0pPj4yXSxsPj4+MD49KDB8YVs0NjY2OF0pPj4+MCYmKEcwKDE4NjY2NCwxKSxsPTB8YVs0NjY2N10pLHVlW2w+PjBdPTAsYVs0NjY2N109bD0wfGFbNDY2''@;'; put 'put ''NjZdLEJsKGYsYyxsKSksKDB8YVs0NjY3MF0pIT0oMHwobD0wfGFbNDY2NzFdKSkmJihjPTB8YVsyMCsoMHxhWzQ2NjkwXSk+PjJdLGw+Pj4wPj0oMHxhWzQ2NjcyXSk+Pj4wJiYoRzAoMTg2NjgwLDEpLGw9MHxhWzQ2NjcxXSksdWVbbD4+MF09MCxhWzQ2NjcxXT1sPTB8YVs0NjY3MF0sQmwo''@;'; put 'put ''ZixjLGwpKSwoMHxhWzQ2Njc4XSkhPSgwfChsPTB8YVs0NjY3OV0pKSYmKGM9MHxhWzI4KygwfGFbNDY2OTBdKT4+Ml0sbD4+PjA+PSgwfGFbNDY2ODBdKT4+PjAmJihHMCgxODY3MTIsMSksbD0wfGFbNDY2NzldKSx1ZVtsPj4wXT0wLGFbNDY2NzldPWw9MHxhWzQ2Njc4XSxCbChmLGMsbCkp''@;'; put 'put ''LCgwfGFbNDY2ODJdKSE9KDB8KGw9MHxhWzQ2NjgzXSkpJiYoYz0wfGFbMzYrKDB8YVs0NjY5MF0pPj4yXSxsPj4+MD49KDB8YVs0NjY4NF0pPj4+MCYmKEcwKDE4NjcyOCwxKSxsPTB8YVs0NjY4M10pLHVlW2w+PjBdPTAsYVs0NjY4M109bD0wfGFbNDY2ODJdLEJsKGYsYyxsKSksKDB8YVs0''@;'; put 'put ''NjY4Nl0pIT0oMHwobD0wfGFbNDY2ODddKSkmJihjPTB8YVszMisoMHxhWzQ2NjkwXSk+PjJdLGw+Pj4wPj0oMHxhWzQ2Njg4XSk+Pj4wJiYoRzAoMTg2NzQ0LDEpLGw9MHxhWzQ2Njg3XSksdWVbbD4+MF09MCxhWzQ2Njg3XT1sPTB8YVs0NjY4Nl0sQmwoZixjLGwpKSxfWzEwXT0xLF9bMTJd''@;'; put 'put ''PTEsX1szXT0xLF9bNF09MSxfWzddPTEsX1s4XT0xLGFbNDY3MDBdPTAsYVs0NjcwMl09MCxhWzQ2NjkzXT0wLGFbNDY2OTRdPTAsYVs0NjY5N109MCxhWzQ2Njk4XT0wfSxmdW5jdGlvbiBxRihsKXt2YXIgYz0wO3N3aXRjaCgwfGFbNjQrKGx8PTApPj4yXSl7Y2FzZSAwOmM9MHxmdW5jdGlv''@;'; put 'put ''biBuN2UobCl7dmFyIGMsZj0wLHA9MCxtPTA7cD1sfD0wLG09NDArKGY9Yz0wfG1yKDM5MikpfDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7cmV0dXJuIGFbKG09Yys2MHwwKT4+Ml09YVsocD1sKzYwfDApPj4yXSxhW20rND4+Ml09YVtw''@;'; put 'put ''KzQ+PjJdLGFbbSs4Pj4yXT1hW3ArOD4+Ml0sYVttKzEyPj4yXT1hW3ArMTI+PjJdLGFbbSsxNj4+Ml09YVtwKzE2Pj4yXSxhWyhtPWMrODB8MCk+PjJdPWFbKHA9bCs4MHwwKT4+Ml0sYVttKzQ+PjJdPWFbcCs0Pj4yXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFbbSsxMj4+Ml09YVtwKzEyPj4y''@;'; put 'put ''XSxhW20rMTY+PjJdPWFbcCsxNj4+Ml0sMHxjfSgwfGFbbD4+Ml0pLGZ1bmN0aW9uIG1yZShsLGMsZixwKXtwfD0wO3ZhciBtLEEsYix3PTA7Yj1vZSxvZT1vZSsxNnwwLEE9YixtPTB8YVs2MCsoY3w9MCk+PjJdLEVGKGx8PTAsZnw9MCksYVs1NisoYz0wfGFbbCsxNjQ+PjJdKT4+Ml09MHxD''@;'; put 'put ''YihjLDB8YVtjKzUyPj4yXSksMCE9KDB8ZjAobSwxMzc0ODMsMCwxKSkmJjAhPSgwfGFbOCsoMHxhW20rMTY+PjJdKT4+Ml0pfHw2NzEwODg2NCZhW2MrMTUyPj4yXT93PTU6KGM3KDk4OTExLEEpLGM9LTEpLDU9PSgwfHcpJiYoYVtjKzM2Pj4yXT1wLHB8fChhWyh3PWMrMTUyfDApPj4yXT0x''@;'; put 'put ''MzQyMTc3Mjh8YVt3Pj4yXSksdz0wfGROKGwsbSksSTkoYykseEYobCksYz13KSxvZT1ifShjLDB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSw2Nzc5NywwKSxmdW5jdGlvbiBzVyhsKXt4RihsfD0wKSxIdChsKX0oYyk7YnJlYWs7Y2FzZSAxOmFRKDB8YVsxNjgrKDB8YVtsPj4yXSk+PjJdKX19''@;'; put 'put ''LGZ1bmN0aW9uIGlpZShsKXt2YXIgYyxmLHAsbTtwPW9lLG9lPW9lKzE2fDAsYz1wLGY9MHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0sMHxhWzQ2NzAzXXx8KGFbNDY3MDNdPWFbNDY3OF0sYVs0NjcwNF09NTcsYVs0NjcwNV09MTkpLGFbOCsoMHxhW2YrNjQ+PjJdKT4+Ml09MTg2ODEy''@;'; put 'put ''LG9pZShmLDEpLGFbYz4+Ml09MCx1ZVtjKzQ+PjBdPTE9PSgwfHVlWzExNSsoMHxhW2YrMTY+PjJdKT4+MF0pJjEsdWVbYys1Pj4wXT0xJigwPT0oMHwobT0wfGFbbCs2ND4+Ml0pKXwzPT0oMHxtKSksdWVbYys2Pj4wXT0wLGFhKGYsbCwxLGMpLG9lPXB9LGZ1bmN0aW9uIGZpZShsKXt2YXIg''@;'; put 'put ''YyxmLHAsbSxBLHcsYixrO2M9b2Usb2U9b2UrMzJ8MCxmPWMrMjR8MCxwPWMrMTZ8MCxBPWMsbT0wfGFbMTYrKGx8PTApPj4yXSxUbihsLDY4NjIzKSxiPTB8YVs0KyhrPTB8YVthW2wrMTI+PjJdPj4yXSk+PjJdLHc9MHxhW2srOD4+Ml0sYVtBPj4yXT1hW2s+PjJdLGFbQSs0Pj4yXT1iLGFb''@;'; put 'put ''QSs4Pj4yXT13LFJyKGwsNjg2MzMsQSksYVtwPj4yXT0wfCRyKDB8YVttKzg+PjJdKSxScihsLDY4NjY4LHApLGFbZj4+Ml09MHx2cigwfGFbbCsxNjg+PjJdLDB8YVtsKzE2ND4+Ml0pLFJyKGwsNjg2ODEsZiksVG4obCw2ODY5NCksVG4obCw2ODcwNCksVG4obCw2ODcxMiksVG4obCw2ODcy''@;'; put 'put ''MCksVG4obCw2ODcyOCksVG4obCw2ODczNiksVG4obCw2ODc0NCksVG4obCw2ODc0OCksVG4obCw2ODc1Myksb2U9Y30sZnVuY3Rpb24gaGllKGwpe1RuKGx8PTAsNjg2MDQpfSxmdW5jdGlvbiBJN2UobCl7YVs0NjcxMF09Mn0sZnVuY3Rpb24gRDdlKGwpe2FbNDY3MTBdPTF9LGZ1bmN0aW9u''@;'; put 'put ''IEw3ZShsKXthWzQ2NzEwXT0yfSxmdW5jdGlvbiBkaWUobCl7YVs0NjcxMF09MH0sZnVuY3Rpb24gcGllKGwpe2FbNDY3MTBdPTJ9LGZ1bmN0aW9uIGJpZShsKXt2YXIgYz0wLGY9MCxwPTA7c3dpdGNoKGY9MHxhWzE2KyhsfD0wKT4+Ml0sMHxhW2wrNjQ+PjJdKXtjYXNlIDA6VG4obCw2ODIy''@;'; put 'put ''MCksMHwoZj0wfGFbKGM9ZisyMDh8MCk+PjJdKSYmMHx1ZVtmPj4wXSYmKFRuKGwsNjgyMzQpLFRuKGwsMHxYMSgwfGFbYz4+Ml0pKSxUbihsLDE1MzU5OSkpO2JyZWFrO2Nhc2UgMTowfChwPTB8YVsoYz1mKzIwOHwwKT4+Ml0pJiYwfHVlW3A+PjBdJiYoVG4obCw2ODIzNCksVG4obCwwfFgx''@;'; put 'put ''KDB8YVtjPj4yXSkpLFRuKGwsMTAyNjA0KSxUbihsLDB8WDEoMHwkcigwfGFbZis4Pj4yXSkpKSxUbihsLDE1MzU5OSkpO2JyZWFrO2Nhc2UgMzpwPTB8WDEoMHwkcigwfGFbZis4Pj4yXSkpLFRuKGwsNjgyNDMpLFRuKGwscCksVG4obCw2ODI1MyksVG4obCxwKSxUbihsLDY4MjA4KX19LGZ1''@;'; put 'put ''bmN0aW9uIFA3ZShsKXt2YXIgYztzd2l0Y2goYz0wfGFbMTYrKGx8PTApPj4yXSwwfGFbbCs2ND4+Ml0pe2Nhc2UgMjpoSShsLDB8YVtjKzI2ND4+Ml0sMHxhW2MrMjcyPj4yXSwwfGFbYysyNjg+PjJdLDB8YVtjKzIwOD4+Ml0sMHxhW2MrMjI4Pj4yXSwwfGFbYysyNDQ+PjJdLDB8YVtjKzIx''@;'; put 'put ''Mj4+Ml0pO2JyZWFrO2Nhc2UgMzpoSShsLDB8YVtjKzI2ND4+Ml0sMHxhW2MrMjcyPj4yXSwwfGFbYysyNjg+PjJdLDB8YVtjKzIwOD4+Ml0sMHxhW2MrMjI4Pj4yXSwwfGFbYysyNDQ+PjJdLDB8YVtjKzIxMj4+Ml0pLFRuKGwsNjgyMTIpfX0sZnVuY3Rpb24gX2llKGwpe3ZhciBjLGYscCxt''@;'; put 'put ''LEEsdyxiLGs7Yz1vZSxvZT1vZSszMnwwLGY9YysyNHwwLHA9YysxNnwwLEE9YyxtPTB8YVsxNisobHw9MCk+PjJdLFRuKGwsNjg2MjMpLGI9MHxhWzQrKGs9MHxhW2FbbCsxMj4+Ml0+PjJdKT4+Ml0sdz0wfGFbays4Pj4yXSxhW0E+PjJdPWFbaz4+Ml0sYVtBKzQ+PjJdPWIsYVtBKzg+PjJd''@;'; put 'put ''PXcsUnIobCw2ODYzMyxBKSxhW3A+PjJdPTB8JHIoMHxhW20rOD4+Ml0pLFJyKGwsNjg2NjgscCksYVtmPj4yXT0wfHZyKDB8YVtsKzE2OD4+Ml0sMHxhW2wrMTY0Pj4yXSksUnIobCw2ODY4MSxmKSxUbihsLDY4Njk0KSxUbihsLDY4NzA0KSxUbihsLDY4NzEyKSxUbihsLDY4NzIwKSxUbihs''@;'; put 'put ''LDY4NzI4KSxUbihsLDY4NzM2KSxUbihsLDY4NzQ0KSxUbihsLDY4NzQ4KSxUbihsLDY4NzUzKSxvZT1jfSxmdW5jdGlvbiBDaWUobCl7VG4obHw9MCw2ODYwNCl9LGZ1bmN0aW9uIG5IKGwpe2FbNDY3MTZdPTJ9LGZ1bmN0aW9uIFJDKGwpe2FbNDY3MTZdPTF9LGZ1bmN0aW9uIHpXKGwpe2Fb''@;'; put 'put ''NDY3MTZdPTJ9LGZ1bmN0aW9uIEdXKGwpe2FbNDY3MTZdPTB9LGZ1bmN0aW9uIEg3ZShsKXthWzQ2NzE2XT0yfSxmdW5jdGlvbiBZN2UobCl7dmFyIGMsZixwLG0sQTtmPW9lLG9lPW9lKzE2fDAsYz1mLFRuKGx8PTAsNzMzMzIpLFRuKGwsMj09KDB8YVtsKzY0Pj4yXSk/NzMzNDc6MTUzNTk5''@;'; put 'put ''KSxtPTB8YVs0KyhBPTB8YVthW2wrMTI+PjJdPj4yXSk+PjJdLHA9MHxhW0ErOD4+Ml0sYVtjPj4yXT1hW0E+PjJdLGFbYys0Pj4yXT1tLGFbYys4Pj4yXT1wLFJyKGwsNzMzNTgsYyksb2U9Zn0sZnVuY3Rpb24gVTdlKGwpe3ZhciBtLEEsYz0wLGY9MCxwPTA7QT1vZSxvZT1vZSszMnwwLG09''@;'; put 'put ''QSs4fDAscD1BLFRuKGx8PTAsNzMyODYpLGM9bCsxMnwwLDIhPSgwfGFbKGY9bCs2NHwwKT4+Ml0pJiYoYVtwPj4yXT1hWzI4KygwfGFbYz4+Ml0pPj4yXSxScihsLDczMjk3LHApKSwwPT0oMHxhWzIwKygwfGFbYz4+Ml0pPj4yXSkmJjIhPSgwfGFbZj4+Ml0pJiYoYz0wfGFbbCs0NzY+PjJd''@;'; put 'put ''LGY9MHxhW2wrNDgwPj4yXSxwPTB8YVtsKzQ4ND4+Ml0sYVttPj4yXT1hW2wrNDcyPj4yXSxhW20rND4+Ml09YyxhW20rOD4+Ml09ZixhW20rMTI+PjJdPXAsUnIobCw2OTY2NixtKSksVG4obCw3MzMxMiksVG4obCw3MzMyNSksb2U9QX0sZnVuY3Rpb24gUTdlKGwpe3ZhciBmLHAsbSxBLHcs''@;'; put 'put ''YixrLGM9MCxNPTAsRD0wO2lmKGs9b2Usb2U9b2UrMzJ8MCxiPWsrMjR8MCxwPWsrOHwwLHc9ayxtPTB8YVsxNisobHw9MCk+PjJdLHVlWzE5Mzc2OF09MCxBPW0rOHwwLCEoMHxhWzI4KygwfGFbKGY9bCsxMnwwKT4+Ml0pPj4yXSkpe2Fbdz4+Ml09MHwkcigwfGFbQT4+Ml0pLFJyKGwsNjk1''@;'; put 'put ''OTcsdyksVG4obCwyPT0oMHxhWyhjPWwrNjR8MCk+PjJdKT82OTYzMDo2OTYxMik7ZG97aWYoISgwfGFbMjArKDB8YVtmPj4yXSk+PjJdKSl7aWYoMj09KDB8YVtjPj4yXSkpe0Q9MHxhW2wrNDYwPj4yXSxNPTB8YVtsKzQ2ND4+Ml0sYz0wfGFbbCs0Njg+PjJdLGFbcD4+Ml09YVtsKzQ1Nj4+''@;'; put 'put ''Ml0sYVtwKzQ+PjJdPUQsYVtwKzg+PjJdPU0sYVtwKzEyPj4yXT1jLFJyKGwsNjk2NjYscCk7YnJlYWt9VG4obCw2OTY0Mik7YnJlYWt9fXdoaWxlKDApO1RuKGwsNjk2OTYpLFROKGwsMHxhWzI0KygwfGFbZj4+Ml0pPj4yXSwxM2UzKSxmdW5jdGlvbiBTYWUobCl7bHw9MDt2YXIgZixwLGM9''@;'; put 'put ''MCxtPTA7cD1vZSxvZT1vZSsxNnwwLGY9cCxjPTB8YVs0NzI2Nl07ZTpkb3tpZigwfGMpZm9yKGM9MHxtaVs2MyZhW2M+PjJdXShjLDAsMTI4KTs7KXtpZighYylicmVhayBlOzB8dWVbYysxNj4+MF18fChhW2Y+PjJdPWFbYysxMj4+Ml0sUnIobCwxMDQ0NjIsZiksVG4obCwxMDQ0ODApLEFR''@;'; put 'put ''KGwsYyksVG4obCwxMDQ0OTgpLFRuKGwsMTA0NTEzKSksYz0wfG1pWzYzJmFbKG09MHxhWzQ3MjY2XSk+PjJdXShtLGMsOCl9fXdoaWxlKDApO29lPXB9KGwpLDB8KGM9MHxhWzIwKygwfGFbZj4+Ml0pPj4yXSkmJihhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPTAsVE4obCwwLHcpKX1hWzQ2''@;'; put 'put ''NzIwXT0xPT0oMHx1ZVsxMTUrKDB8YVsxNisoMHxhW0E+PjJdKT4+Ml0pPj4wXSk/MTotMSwwfHVlWzE5Mzc2OF18fChUbihsLDY5NzE2KSx1ZVsxOTM3NjhdPTEpLDB8KGM9MHxhW20rMjA4Pj4yXSkmJihhW2I+PjJdPTB8SU4oYywwfGFbNDY3MjBdKSxScihsLDY5NzI5LGIpKSxvZT1rfSxm''@;'; put 'put ''dW5jdGlvbiBNaWUobCl7dmFyIHAsbSxBLHcsYixrLEQsUixHLEsscGUsbWUsT2UsTGUsQmUsYz0wLGY9MCxNPTAsYmU9MDttZT1vZSxvZT1vZSsxNDR8MCxwZT1tZSsxMjh8MCxLPW1lKzExMnwwLEc9bWUrNzJ8MCxSPW1lKzU2fDAsRD1tZSs0MHwwLE09bWUrMzJ8MCxwPW1lKzI0fDAsYz1t''@;'; put 'put ''ZSs4fDAsbT0wfGFbNDU2KyhsfD0wKT4+Ml0sYj0wfGFbbCs0NjA+PjJdLEE9MHxhW2wrNDY0Pj4yXSx3PTB8YVtsKzQ2OD4+Ml0sYVsoZj1tZSk+PjJdPWJlPTErKDB8YVsyOCsoMHxhWyhrPWwrMTJ8MCk+PjJdKT4+Ml0pfDAsYVtmKzQ+PjJdPWJlLFJyKGwsNjkyMDgsZiksMHxhWzIwKygw''@;'; put 'put ''fGFbaz4+Ml0pPj4yXXx8KGFbYz4+Ml09bSxhW2MrND4+Ml09YixhW2MrOD4+Ml09QSxhW2MrMTI+PjJdPXcsUnIobCw2OTIyNSxjKSksYVtwPj4yXT0wfGFbKGY9bCszNjB8MCk+PjJdPzY5MjU5OjY5MjY5LFJyKGwsNjkyNzgscCksMT09KDB8YVsoYz1sKzY0fDApPj4yXSkmJihhW00+PjJd''@;'; put 'put ''PUEsYVtNKzQ+PjJdPXcsUnIobCw2OTMwMyxNKSksTT0wfGFbbCsyMDA+PjJdLGJlPTB8YVtsKzIwND4+Ml0sYVtEPj4yXT1hW2wrMTk2Pj4yXSxhW0QrND4+Ml09TSxhW0QrOD4+Ml09YmUsUnIobCw2OTM0MixEKSwwfGFbMjArKDB8YVtrPj4yXSk+PjJdfHwoYVtSPj4yXT1tLGFbUis0Pj4y''@;'; put 'put ''XT1iLGFbUis4Pj4yXT1BLW0sYVtSKzEyPj4yXT13LWIsUnIobCw2OTM2MixSKSksQmU9K19bbCs0OTY+PjNdLGJlPTB8YVtmPj4yXSxMZT0rX1tsKzUwND4+M10sT2U9K19bbCs1MTI+PjNdLF9bRz4+M109K19bbCs0ODg+PjNdLF9bRys4Pj4zXT1CZSxhW0crMTY+PjJdPWJlLF9bRysyND4+''@;'; put 'put ''M109TGUsX1tHKzMyPj4zXT1PZSxScihsLDY5NDAyLEcpLDE9PSgwfGFbYz4+Ml0pJiYoKDB8QSk+MTQzOTl8KDB8dyk+MTQzOTkmJihiZT0wfGFbMTYrKDB8YVtrPj4yXSk+PjJdLGFbSz4+Ml09QSxhW0srND4+Ml09dyxhW0srOD4+Ml09MTQ0MDAseDJbNjMmYmVdKDY5NDQ1LEspKSxhW3Bl''@;'; put 'put ''Pj4yXT1tLGFbcGUrND4+Ml09YixhW3BlKzg+PjJdPUEsYVtwZSsxMj4+Ml09dyxScihsLDY5NTQwLHBlKSksb2U9bWV9LGZ1bmN0aW9uIGlIKGwpe3ZhciBjLGYscDtwPW9lLG9lPW9lKzE2fDAsZj1wLDB8YVsyMCsoMHxhWyhjPTEyKyhsfD0wKXwwKT4+Ml0pPj4yXSYmKFRuKGwsNjkxMzIp''@;'; put 'put ''LFROKGwsMCw0KygwfGFbMjArKDB8YVtjPj4yXSk+PjJdKXwwKSksVG4obCw2OTE0OSksVG4obCw2OTE3NiksYVtmPj4yXT1hWzI4KygwfGFbYz4+Ml0pPj4yXSxScihsLDY5MTkxLGYpLG9lPXB9LGZ1bmN0aW9uIEJDKGwpe3ZhciBjLGY7Yz1vZSxvZT1vZSsxNnwwLGFbKGY9Yyk+PjJdPTB8''@;'; put 'put ''JHIoMHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLFJyKGwsNjkxMjUsZiksVG4obCw2OTExOCksb2U9Y30sZnVuY3Rpb24gRWllKGwpe1RuKGx8PTAsODQ1NTIpfSxmdW5jdGlvbiBkSShsKXtUbihsfD0wLDY5MTE4KX0sZnVuY3Rpb24geGllKGwpe1RuKGx8PTAsODQ1NTIpfSxmdW5j''@;'; put 'put ''dGlvbiBZVyhsKXtUbihsfD0wLDY5MTE4KX0sZnVuY3Rpb24gVGllKGwpe1RuKGx8PTAsODQ1NTIpfSxmdW5jdGlvbiBvSChsKXt2YXIgYz0wO1RuKGx8PTAsNzQ4MzgpLDB8KGM9MHxMaSgwfGFbMTY4KygwfGFbbD4+Ml0pPj4yXSw3NDg5NCkpJiYwfHVlW2M+PjBdJiYoVG4obCw3NDkwNSks''@;'; put 'put ''VG4obCxjKSxUbihsLDc0OTI5KSksVG4obCw3NDk1MCksVG4obCw3NDk5OCksVG4obCw3NTA1MiksVG4obCwwfFgxKDB8YVthW2FbKGM9bCsxMnwwKT4+Ml0+PjJdPj4yXSkpLFRuKGwsNzgxODEpLFRuKGwsMHxYMSgwfGFbNCsoMHxhW2FbYz4+Ml0+PjJdKT4+Ml0pKSxUbihsLDc4MTkxKSxU''@;'; put 'put ''bihsLDB8WDEoMHxhWzgrKDB8YVthW2M+PjJdPj4yXSk+PjJdKSksVG4obCw3NTQzNCksVG4obCw3NTQ1OCl9LGZ1bmN0aW9uIEpXKGwpe3ZhciBwLG0sQSx3LGIsayxjPTAsZj0wO0E9b2Usb2U9b2UrNDh8MCxtPUErMTZ8MCxwPUErOHwwLGY9QSxjPTB8YVsxNisobHw9MCk+PjJdLFRuKGws''@;'; put 'put ''NzQ2NzMpLDB8dWVbKDB8JHIoMHxhWyhjPWMrOHwwKT4+Ml0pKT4+MF0mJihUbihsLDc1Mzk3KSxUbihsLDB8WDEoMHwkcigwfGFbYz4+Ml0pKSkpLGFbZj4+Ml09MHx2cigwfGFbbCsxNjg+PjJdLDB8YVtsKzE2ND4+Ml0pLFJyKGwsNzQ2NzgsZiksZj0wfGFbbCs0NTI+PjJdLGFbcD4+Ml09''@;'; put 'put ''YVtsKzQ0OD4+Ml0sYVtwKzQ+PjJdPWYsUnIobCw3NDY5NCxwKSxrPStfW2wrMzkyPj4zXSxiPStfW2wrNDAwPj4zXSx3PStfW2wrNDA4Pj4zXSxfW20+PjNdPStfW2wrMzg0Pj4zXSxfW20rOD4+M109ayxfW20rMTY+PjNdPWIsX1ttKzI0Pj4zXT13LFJyKGwsNzQ3MjcsbSksVG4obCw3NDc1''@;'; put 'put ''OCksVG4obCw3NDc5NCksVG4obCw3NjM4OCksb2U9QX0sZnVuY3Rpb24gWFcobCl7VG4obHw9MCw3NDY2NSl9LGZ1bmN0aW9uIFJpZShsKXtUbihsfD0wLDc0NTEzKX0sZnVuY3Rpb24gQmllKGwpe3ZhciBjLGYscCxtO2Y9b2Usb2U9b2UrMTZ8MCxwPWYseUkobHw9MCwwfGFbMjEyKyhtPTB8''@;'; put 'put ''YVtsKzE2Pj4yXSk+PjJdLDAsMTExNDk0LDB8YVsoYz1tKzh8MCk+PjJdKSxUbihsLDc0NjE3KSxOcyhsLCtfW2wrNDg4Pj4zXSksVG4obCwxMDI2MDQpLE5zKGwsK19bbCs0OTY+PjNdKSxhW3A+PjJdPTAtKDB8YVtsKzM2MD4+Ml0pLFJyKGwsNzQ2MzYscCksTnMobCwrX1tsKzUwND4+M10p''@;'; put 'put ''LFRuKGwsMTAyNjA0KSxOcyhsLC0rX1tsKzUxMj4+M10pLFRuKGwsNzQ2NjApLDB8dWVbKDB8JHIoMHxhW2M+PjJdKSk+PjBdJiYoVG4obCw3NDU2OSksVG4obCwwfFgxKDB8JHIoMHxhW2M+PjJdKSkpLFRuKGwsNzQ1NzcpKSxvZT1mfSxmdW5jdGlvbiBQaWUobCl7VG4obHw9MCw3NDUxMyl9''@;'; put 'put ''LGZ1bmN0aW9uIG1JKGwpe3ZhciBjLGY7eUkobHw9MCwwfGFbMjEyKyhmPTB8YVtsKzE2Pj4yXSk+PjJdLDAsMTA4MDA2LDB8YVsoYz1mKzh8MCk+PjJdKSxUbihsLDc2Mzg4KSxUbihsLDc0NTY5KSxUbihsLDB8WDEoMHwkcigwfGFbYz4+Ml0pKSksVG4obCw3NDU3Nyl9LGZ1bmN0aW9uIEtX''@;'; put 'put ''KGwpe1RuKGx8PTAsNzQ1MTMpfSxmdW5jdGlvbiBYN2UobCl7dmFyIGYscCxjPTA7eUkobHw9MCwwfGFbMjEyKyhmPTB8YVtsKzE2Pj4yXSk+PjJdLGM9KDB8KGM9MHxhW2wrMTYwPj4yXSkpPjE/MHxhWygwfGFbMzA4KygwfGFbbD4+Ml0pPj4yXSkrKGM8PDIpPj4yXTowLDExMTQ4MSwwfGFb''@;'; put 'put ''KHA9Zis4fDApPj4yXSksVG4obCw3NjM4OCksVG4obCw3NDU2OSksVG4obCwwfFgxKDB8JHIoMHxhW3A+PjJdKSkpLFRuKGwsNzQ1NzcpfSxmdW5jdGlvbiB2SShsKXtUbihsfD0wLDc0NTEzKX0sZnVuY3Rpb24gYUgobCl7dmFyIGYsYz0wO3lJKGx8PTAsMHxhWzIxMisoZj0wfGFbbCsxNj4+''@;'; put 'put ''Ml0pPj4yXSwwLDExMTQ1MCwwfGFbKGM9Zis4fDApPj4yXSksVG4obCw3NjM4OCksVG4obCw3NDU2OSksVG4obCwwfFgxKGM9MHx2MigxMDIwOTUsMHxhW2M+PjJdKSkpLEh0KGMpLFRuKGwsNzQ1NzcpfSxmdW5jdGlvbiBGaWUobCl7VG4obHw9MCw3NDUxMyl9LGZ1bmN0aW9uIHFXKGwpe1Ru''@;'; put 'put ''KGx8PTAsNzYzNDMpLFRuKGwsNzQ1MTMpfSxmdW5jdGlvbiB6aWUobCl7dmFyIGM7VG4obHw9MCw3NTQxOCksVG4obCwwfEZDKDB8YVthW2FbKGM9bCsxMnwwKT4+Ml0+PjJdPj4yXSkpLFRuKGwsNzgxODEpLFRuKGwsMHxGQygwfGFbNCsoMHxhW2FbYz4+Ml0+PjJdKT4+Ml0pKSxUbihsLDc4''@;'; put 'put ''MTkxKSxUbihsLDB8RkMoMHxhWzgrKDB8YVthW2M+PjJdPj4yXSk+PjJdKSksVG4obCw3NTQzNCl9LGZ1bmN0aW9uIEdpZShsKXt2YXIgZixwLGM9MDtwPW9lLG9lPW9lKzE2fDAsZj1wLGM9MHxhWzE2KyhsfD0wKT4+Ml0sVG4obCw3NTM5NSksMHx1ZVsoMHwkcigwfGFbKGM9Yys4fDApPj4y''@;'; put 'put ''XSkpPj4wXSYmKFRuKGwsNzUzOTcpLFRuKGwsMHxGQygwfCRyKDB8YVtjPj4yXSkpKSksYVtmPj4yXT0wfHZyKDB8YVtsKzE2OD4+Ml0sMHxhW2wrMTY0Pj4yXSksUnIobCw3NTQwNixmKSxhWzQ2NzIzXT0wLG9lPXB9LGZ1bmN0aW9uIFdpZShsKXthWzQ2NzIzXT0xfSxmdW5jdGlvbiBpWShs''@;'; put 'put ''KXthWzQ2NzIzXT0tMX0sZnVuY3Rpb24gVWllKGwpe3ZhciBjO1RuKGx8PTAsNzgxNTMpLFRuKGwsNzgxNjEpLFRuKGwsMHxNNSgwfGFbYVthWyhjPWwrMTJ8MCk+PjJdPj4yXT4+Ml0pKSxUbihsLDc4MTgxKSxUbihsLDB8TTUoMHxhWzQrKDB8YVthW2M+PjJdPj4yXSk+PjJdKSksVG4obCw3''@;'; put 'put ''ODE5MSksVG4obCwwfE01KDB8YVs4KygwfGFbYVtjPj4yXT4+Ml0pPj4yXSkpLFRuKGwsNzgxOTQpfSxmdW5jdGlvbiBRaWUobCl7dmFyIEEsdyxjPTAsZj0wLHA9MCxtPTA7dz1vZSxvZT1vZSszMnwwLEE9dysyNHwwLG09dysxNnwwLHA9dys4fDAsZj13LGM9MHxhWzE2KyhsfD0wKT4+Ml0s''@;'; put 'put ''YVs0NjcyN109fn4oK19bbCsyMzI+PjNdLStfW2wrMjE2Pj4zXSksYVs0NjcyNl09fn4oK19bbCsyMjQ+PjNdLStfW2wrMjA4Pj4zXSksVG4obCw3Njg0MCksVG4obCw3Njg0NyksYz0wfCRyKDB8YVtjKzg+PjJdKSwwfHVlW2M+PjBdJiYoVG4obCw3NjkxNiksVG4obCwwfE01KGMpKSxUbihs''@;'; put 'put ''LDc2OTI0KSksYVtmPj4yXT0wfHZyKDB8YVtsKzE2OD4+Ml0sMHxhW2wrMTY0Pj4yXSksUnIobCw3NjkzMyxmKSxUbihsLDc2OTUzKSxUbihsLDc2OTg4KSxUbihsLDc3MDE2KSxUbihsLDc3MDIyKSxUbihsLDc3MDY1KSxUbihsLDc3MTA2KSxUbihsLDc3MTI1KSxUbihsLDc3MTQyKSxUbihs''@;'; put 'put ''LDc3MTkwKSxUbihsLDc3MjQzKSxUbihsLDc3MzE5KSxUbihsLDc3Mzk1KSxUbihsLDc3NDA0KSxUbihsLDc3NDI3KSxUbihsLDc3NDU0KSxUbihsLDc3NTA3KSxUbihsLDc3NTI5KSxUbihsLDc3NTc0KSxUbihsLDc3NTg2KSxUbihsLDc3NTk2KSxUbihsLDc3NjIyKSxUbihsLDc3NTA3KSxU''@;'; put 'put ''bihsLDc3Njc0KSxUbihsLDc3NTc0KSxUbihsLDc3NTg2KSxUbihsLDc3NzE4KSxUbihsLDc3NDI3KSxUbihsLDc3NDU0KSxUbihsLDc3NTA3KSxUbihsLDc3Njc0KSxUbihsLDc3NTc0KSxUbihsLDc3NTg2KSxUbihsLDc3NTk2KSxUbihsLDc3NjIyKSxUbihsLDc3NTA3KSxUbihsLDc3NTI5''@;'; put 'put ''KSxUbihsLDc3NTc0KSxUbihsLDc3NTg2KSxUbihsLDc3NzMxKSxUbihsLDc3NzM5KSxUbihsLDc3NzQ1KSxUbihsLDc3NzU5KSxUbihsLDc3NzY3KSxUbihsLDc3ODAwKSxmPTEwKygwfGFbNDY3MjddKXwwLGFbcD4+Ml09YVs0NjcyNl0sYVtwKzQ+PjJdPWYsUnIobCw3Nzg3NyxwKSxUbihs''@;'; put 'put ''LDc3OTA3KSxUbihsLDc3OTE2KSxUbihsLDc3OTc0KSxUbihsLDc3OTg0KSxUbihsLDc4MDQ5KSxwPTB8YVs0NjcyN10sYVttPj4yXT1hWzQ2NzI2XSxhW20rND4+Ml09cCxScihsLDc4MDg2LG0pLG09MHxhWzQ2NzI3XSxhW0E+PjJdPWFbNDY3MjZdLGFbQSs0Pj4yXT1tLFJyKGwsNzgxMTQs''@;'; put 'put ''QSksb2U9d30sZnVuY3Rpb24gJDdlKGwpe1RuKGx8PTAsNzYzOTEpLFRuKGwsNzY0MDMpLFRuKGwsNzY0MTEpLFRuKGwsNzY0NzQpLFRuKGwsNzY0MDMpLFRuKGwsNzY1MTkpLFRuKGwsNzY1NjgpLFRuKGwsNzY2MjIpLFRuKGwsNzY0MDMpLFRuKGwsNzY3MjIpLFRuKGwsNzY3NzEpLFRuKGws''@;'; put 'put ''NzY0MDMpLFRuKGwsNzY4MjMpfSxmdW5jdGlvbiB1WShsKXtUbihsfD0wLDc2MzQzKX0sZnVuY3Rpb24gcnZlKGwpe3ZhciBjLGYscDtjPW9lLG9lPW9lKzE2fDAsZj1jKzh8MCxwPWMsVG4obHw9MCw4MDQ1MSksVG4obCw4MDQ2NiksVG4obCw4MDUwNSksVG4obCw4MDU1NCksYVtwPj4yXT0x''@;'; put 'put ''MzczMTQsYVtwKzQ+PjJdPTgwNjQyLFJyKGwsODA2MjMscCksYVtmPj4yXT0xMzcxOTgsYVtmKzQ+PjJdPTgwNjQ4LFJyKGwsODA2MjMsZiksb2U9Y30sZnVuY3Rpb24gaXZlKGwpe3ZhciBjLGYscCxtLEEsdyxiO2M9b2Usb2U9b2UrNjR8MCxmPWMrOHwwLGFbKGI9Yyk+PjJdPTB8JHIoMHxh''@;'; put 'put ''WzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLFJyKGwsNzk0MDQsYiksQT0uNSorX1tsKzM3Nj4+M10qK19bbCs0OTY+PjNdLG09MTgwKitWZiguMDAyMDAwMDAwMDk0OTk0OTAyNioodz0uNSorX1tsKzM2OD4+M10qK19bbCs0ODg+PjNdKSkqLjYzNjYxOTc3MjM2NzU4MTQscD0xODAqK1Zm''@;'; put 'put ''KC4wMDIwMDAwMDAwOTQ5OTQ5MDI2KkEpKi42MzY2MTk3NzIzNjc1ODE0LF9bZj4+M109dyxfW2YrOD4+M109QSxfW2YrMTY+PjNdPS01MDAsX1tmKzI0Pj4zXT13LF9bZiszMj4+M109QSxfW2YrNDA+PjNdPTAsX1tmKzQ4Pj4zXT0xLjIqKG0+cD9tOnApLFJyKGwsNzk0MjYsZiksVG4obCw3''@;'; put 'put ''OTU3MyksVG4obCw4MDQwMyksb2U9Y30sZnVuY3Rpb24gJGllKGwpe1RuKGx8PTAsNzkzODcpfSxmdW5jdGlvbiBhdmUobCl7VG4obHw9MCw3OTM0MCl9LGZ1bmN0aW9uIGx2ZShsKXtUbihsfD0wLDc5MzIyKX0sZnVuY3Rpb24gc3ZlKGwpe1RuKGx8PTAsNzkzMDYpfSxmdW5jdGlvbiB1dmUo''@;'; put 'put ''bCl7VG4obHw9MCw3OTI4NSksV25bNDY3MjhdPStXbls0NjcyOF0tMn0sZnVuY3Rpb24gY3ZlKGwpe1RuKGx8PTAsNzkyNjYpfSxmdW5jdGlvbiBzSChsKXt2YXIgYyxmO2M9b2Usb2U9b2UrMTZ8MCxhWyhmPWMpPj4yXT0wfCRyKDB8YVs4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSxScihs''@;'; put 'put ''LDc5MjQ0LGYpLG9lPWN9LGZ1bmN0aW9uIHFpZShsKXtUbihsfD0wLDc5MjI4KX0sZnVuY3Rpb24gaFkobCl7VG4obHw9MCw3OTIxMCksV25bNDY3MjhdPStXbls0NjcyOF0tNX0sZnVuY3Rpb24gZnZlKGwpe1RuKGx8PTAsNzkxOTQpLFduWzQ2NzI4XT0rV25bNDY3MjhdKzV9LGZ1bmN0aW9u''@;'; put 'put ''IEF2ZShsKXt2YXIgYyxmLHAsQSxiLGssbT0wLHc9MDtjPW9lLG9lPW9lKzMyfDAsZj1jKzI0fDAscD1jKzE2fDAsbT0wfGFbMTYrKGx8PTApPj4yXSxrPTB8YVsodz0wfGFbYVtsKzEyPj4yXT4+Ml0pPj4yXSxiPTB8YVt3KzQ+PjJdLHc9MHxhW3crOD4+Ml0sYVsoQT1jKT4+Ml09ODEwOTQs''@;'; put 'put ''YVtBKzQ+PjJdPWssYVtBKzg+PjJdPWIsYVtBKzEyPj4yXT13LFJyKGwsODM3MDQsQSksbT0wfCRyKDB8YVttKzg+PjJdKSxhW3A+PjJdPTgxMDk0LGFbcCs0Pj4yXT1tLFJyKGwsODM3MzYscCksYVtmPj4yXT04MTA5NCxScihsLDgzNzUwLGYpLG9lPWN9LGZ1bmN0aW9uIHl2ZShsKXt2YXIg''@;'; put 'put ''YyxmO2x8PTAsYz1vZSxvZT1vZSsxNnwwLGFbKGY9Yyk+PjJdPTgxMDk0LFJyKGwsODM2NTIsZiksb2U9Y30sZnVuY3Rpb24gd3ZlKGwpe3ZhciBmLG0sQSx3LGIsTSxELFIsRyxLLHBlLG1lLGJlLE9lLExlLEJlLEhlLGplLGV0LHJ0LEdlLGx0LE10LGt0LGF0LEV0LFp0LHV0LHd0LHJuLHlu''@;'; put 'put ''LEZuLGxyLE5yLGtyLGNyLENyLHFyLExyLGEwLEZpLGM9MCxwPTAsaz0wO0ZpPW9lLG9lPW9lKzMwNHwwLGEwPUZpKzI5NnwwLExyPUZpKzI4OHwwLHFyPUZpKzI3MnwwLGNyPUZpKzI2NHwwLGtyPUZpKzI1NnwwLE5yPUZpKzI0OHwwLGxyPUZpKzI0MHwwLEZuPUZpKzIzMnwwLHluPUZpKzIy''@;'; put 'put ''NHwwLHJuPUZpKzIxNnwwLHd0PUZpKzIwOHwwLHV0PUZpKzIwMHwwLFp0PUZpKzE5MnwwLEV0PUZpKzE4NHwwLGF0PUZpKzE3NnwwLGt0PUZpKzE2OHwwLE10PUZpKzE2MHwwLGx0PUZpKzE1MnwwLHJ0PUZpKzE0NHwwLGV0PUZpKzEzNnwwLGplPUZpKzEyOHwwLEhlPUZpKzEyMHwwLEJlPUZp''@;'; put 'put ''KzExMnwwLExlPUZpKzEwNHwwLE9lPUZpKzk2fDAsYmU9RmkrODh8MCxtZT1GaSs4MHwwLHBlPUZpKzcyfDAsSz1GaSs2NHwwLEc9RmkrNTZ8MCxSPUZpKzQ4fDAsQ3I9RmkrNDB8MCxHZT1GaSsyNHwwLEQ9RmkrMTZ8MCxNPUZpLEE9MHxhWzQ1NisobHw9MCk+PjJdLHc9MHxhW2wrNDYwPj4y''@;'; put 'put ''XSxiPTB8YVtsKzQ2ND4+Ml0saz0wfGFbbCs0Njg+PjJdLG09bCszNjB8MDtlOmRve2lmKDB8YVs0MDI1XSl7c3dpdGNoKDB8YVttPj4yXSl7Y2FzZSA5MDpjYXNlIDA6YnJlYWsgZX1yaSgpLGFbNDAyNV09MH19d2hpbGUoMCk7cD0uMDEzODg4ODg4ODg4ODg4ODg4KigrKDB8ayktKygwfHcp''@;'; put 'put ''KSxjPS4wMTM4ODg4ODg4ODg4ODg4ODgqKCsoMHxiKS0rKDB8QSkpLGY9KGs9OTA9PSgwfGFbbT4+Ml0pKT9wOmMscD1rP2M6cCxfW00+PjNdPWYsX1tNKzg+PjNdPXAsUnIobCw4MTI4MSxNKSxhW0Q+PjJdPTgxMDk0LFJyKGwsODEyOTYsRCksZj4wPyhjPStmdW5jdGlvbiBQdWUobCl7dmFy''@;'; put 'put ''IGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO19ba2k+PjNdPWw9K2wsYz0wfGFba2k+PjJdLHA9KDB8KGY9MHxhW2tpKzQ+PjJdKSk8MDtkb3tpZihwfGY+Pj4wPDEwNDg1NzYpe2lmKDA9PSgwfGMpJjA9PSgyMTQ3NDgzNjQ3JmZ8MCkpe2w9LTEvKGwqbCk7YnJlYWt9aWYo''@;'; put 'put ''cCl7bD0obC1sKS8wO2JyZWFrfV9ba2k+PjNdPTB4NDAwMDAwMDAwMDAwMDAqbCxmPTB8YVtraSs0Pj4yXSxwPS0xMDc3LGM9MHxhW2tpPj4yXSxtPTk7YnJlYWt9Zj4+PjA8PTIxNDY0MzUwNzEmJigwPT0oMHxjKSYhMCYxMDcyNjkzMjQ4PT0oMHxmKT9sPTA6KHA9LTEwMjMsbT05KSl9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDk9PSgwfG0pJiYobT1mKzYxNDI0MnwwLGFba2k+PjJdPWMsYVtraSs0Pj4yXT0xMDcyMDc5MDA2KygxMDQ4NTc1Jm0pLEE9KE09KGs9KGI9K19ba2k+PjNdLTEpLyhiKzIpKSprKSpNLF9ba2k+PjNdPWItKHc9YiooLjUqYikpLGY9MHxhW2tpKzQ+PjJdLGFba2k+PjJd''@;'; put 'put ''PTAsYVtraSs0Pj4yXT1mLEE9Yi0obD0rX1traT4+M10pLXcrayoodysoQSooQSooLjE1MzEzODM3Njk5MjA5MzczKkErLjIyMjIyMTk4NDMyMTQ5Nzg0KSsuMzk5OTk5OTk5OTk0MDk0MikrTSooQSooQSooLjE0Nzk4MTk4NjA1MTE2NTg2KkErLjE4MTgzNTcyMTYxNjE4MDUpKy4yODU3MTQy''@;'; put 'put ''ODc0MzY2MjM5KSsuNjY2NjY2NjY2NjY2NjczNSkpKSxsPShiPShrPS4zMDEwMjk5OTU2NjM2MTE3Nyoodz0rKHArKG0+Pj4yMCl8MCkpKSsoTT0uNDM0Mjk0NDgxODc4MTY4OSpsKSkrKE0rKGstYikrKC40MzQyOTQ0ODE4NzgxNjg5KkErKDM2OTQyMzkwNzcxNTg5MzFlLTI4KncrMjUwODI5''@;'; put 'put ''NDY3MTE2NDUyNzVlLTI3KihBK2wpKSkpKSwrbH0oZiksX1sxOTIxNF09YyxjPWMrMy0rKDB8fn5jKSk6Yz0zLGM9K0dsKDEwLCtjKSxfWzE5MjE0XT1jLF9bR2U+PjNdPWMsX1tHZSs4Pj4zXT1jLFJyKGwsODE0NjUsR2UpLGFbQ3I+PjJdPTgxMDk0LFJyKGwsODE1MDAsQ3IpLGFbUj4+Ml09''@;'; put 'put ''ODEwOTQsUnIobCw4MTU1OCxSKSxhW0c+PjJdPTgxMDk0LFJyKGwsODE2MTgsRyksYVtLPj4yXT04MTA5NCxScihsLDgxNjY3LEspLGFbcGU+PjJdPTgxMDk0LFJyKGwsODE3MDYscGUpLGFbbWU+PjJdPTgxMDk0LFJyKGwsODE3NTcsbWUpLGFbYmU+PjJdPTgxMDk0LFJyKGwsODE4MTksYmUp''@;'; put 'put ''LGFbT2U+PjJdPTgxMDk0LFJyKGwsODE5MjksT2UpLGFbTGU+PjJdPTgxMDk0LFJyKGwsODIwMjAsTGUpLGFbQmU+PjJdPTgxMDk0LFJyKGwsODIwNzQsQmUpLGFbSGU+PjJdPTgxMDk0LFJyKGwsODIxNDMsSGUpLFJyKGwsODIxNzksamUpLGFbZXQ+PjJdPTgxMDk0LFJyKGwsODIzMDQsZXQp''@;'; put 'put ''LGFbcnQ+PjJdPTgxMDk0LFJyKGwsODIzMzMscnQpLFJyKGwsODIzNzMsbHQpLGFbTXQ+PjJdPTgxMDk0LFJyKGwsODI0NjYsTXQpLGFba3Q+PjJdPTgxMDk0LFJyKGwsODI1MjUsa3QpLGFbYXQ+PjJdPTgxMDk0LFJyKGwsODI2MDYsYXQpLFJyKGwsODI2NzYsRXQpLGFbWnQ+PjJdPTgxMDk0''@;'; put 'put ''LFJyKGwsODI3NjUsWnQpLGFbdXQ+PjJdPTgxMDk0LFJyKGwsODI4NzAsdXQpLGFbd3Q+PjJdPTgxMDk0LFJyKGwsODI5NDYsd3QpLGFbcm4+PjJdPTgxMDk0LFJyKGwsODI5ODUscm4pLGFbeW4+PjJdPTgxMDk0LFJyKGwsODMwODQseW4pLGFbRm4+PjJdPTgxMDk0LFJyKGwsODMxMzAsRm4p''@;'; put 'put ''LFJyKGwsODMyMTksbHIpLGFbTnI+PjJdPTgxMDk0LFJyKGwsODMyNjAsTnIpLGFba3I+PjJdPTgxMDk0LFJyKGwsODMzNDMsa3IpLGFbY3I+PjJdPTgxMDk0LFJyKGwsODM0NDQsY3IpLF9bcXI+PjNdPXAsX1txcis4Pj4zXT1mLFJyKGwsODM1MDgscXIpLFJyKGwsODM1MzYsTHIpLFJyKGws''@;'; put 'put ''ODM1NDQsYTApLG9lPUZpfSxmdW5jdGlvbiBidmUobCl7dmFyIGM7Yz1vZSxvZT1vZSsxNnwwLFJyKGx8PTAsODEyNzQsYyksb2U9Y30sZnVuY3Rpb24gQnZlKGwpezB8Tm8obHw9MCkmJmZ1bmN0aW9uIF9JKGwpe3ZhciBBLHcsYz0wLGY9MCxwPTAsbT0wO2lmKHc9b2Usb2U9b2UrNDh8MCxB''@;'; put 'put ''PXcrMzJ8MCxtPXcsYz0wfFlUKGx8PTAsLTEsOCksZj0wfENDKGwsMCxtKSx0eShsLDIsOCxtKSwocD0oMHxjKTwwKSYoZj0wPT0oMHxmKSkpZkgobCk7ZWxzZXtmP2FbbSsxNj4+Ml09MzpjPXA/ODpjLGFbbSs4Pj4yXT1jLGFbbSsyMD4+Ml09MCxwPTB8ZzdlKGwsQSwwKSxjPTB8YVtBPj4y''@;'; put 'put ''XTtkb3tpZigxPT0oMHxjKSlmSChsKSxjPTA7ZWxzZXtpZigwfGFbODQrKDB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSk+PjJdKXtmSChsKSxjPTA7YnJlYWt9Zm9yKGFbbSsxMj4+Ml09MSxmPTA7ISgoMHxmKT49KDB8YykpOylQdmUoYz0wfGFbcCsoZjw8Mik+PjJdLGwpLGZIKGMpLGY9Zisx''@;'; put 'put ''fDAsYz0wfGFbQT4+Ml07RnZlKGwpLE5GKDB8YVtBPj4yXSxwLGwsbSksSHZlKGwpLHIwZSgwfGFbQT4+Ml0scCxsKSxjPTB9fXdoaWxlKDApO2Zvcig7ISgoMHxjKT49KDB8YVtBPj4yXSkpOylIdCgwfGFbOCsoMHxhWzE2KygwfGFbKG09cCsoYzw8Mil8MCk+PjJdKT4+Ml0pPj4yXSksdlko''@;'; put 'put ''MHxhW20+PjJdKSxuaShsLDB8YVttPj4yXSksYz1jKzF8MDtIdChwKX1vZT13fShsKSxqNyhsKX0sbjBlLGhWLGZ1bmN0aW9uIEZsZShsKXt2YXIgYz0wLGY9MDtmb3IoZj0wfEx0KGx8PTApO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspVzUoYyksYz0wfGswKGwsYyk7SzYoZiksZj0wfHp0KGws''@;'; put 'put ''Zil9IWZ1bmN0aW9uIEhsZShsKXtsfD0wLDAhPSgwfGFbNDcxMzRdKXwoMHxhWzQ2Nzk1XSk8MCYmd1YobCksKDB8aGkobCkpIT0oMHxsKSYmaHMobCwwLDEzNzQ4Myl9KGwpfSxmdW5jdGlvbiBnOWUobCl7bHw9MDt2YXIgcCxtLGM9MCxmPTAsQT0wLHc9MCxiPTA7Zm9yKHc9NCxBPTB8UjAo''@;'; put 'put ''NDApLGFbQT4+Ml09MCxtPStfWzIzMjkzXSxNbj0wLHA9K2I5KDEsMHxsKSxjPU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfFRpKDB8YVtjPj4yXSwwfEEsMHx3KSl8fFdlKDB8YywwfHhuKSxPbj14bik6Zj0tMSwxIT0oMHxmKT8oX1syMzI5M109cCxNbj0wLCRsKDEwMiwwfGwp''@;'; put 'put ''LGM9TW4sTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW2M+PjJdLDB8QSwwfHcpKXx8V2UoMHxjLDB8eG4pLE9uPXhuKTpmPS0xLDEhPSgwfGYpPyhBPTB8bzQoMTg3MjEyLDEsMHxBLDB8dyksdz1PbixmPU1uPTAsTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChjPTB8VGko''@;'; put 'put ''MHxhW2Y+PjJdLDB8QSwwfHcpKXx8V2UoMHxmLDB8eG4pLE9uPXhuKTpjPS0xLGM9MSE9KDB8Yyk/MDpPbik6Yz1Pbik6Yz1PbjshKDB8Yyk7KWlmKE1uPTAsJGwoMTAzLDB8bCksYz1NbixNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxUaSgwfGFbYz4+Ml0sMHxBLDB8dykpfHxXZSgw''@;'; put 'put ''fGMsMHx4biksT249eG4pOmY9LTEsMSE9KDB8ZikpaWYoTW49MCxxaSgyMiwwfGwpLGM9TW4sTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW2M+PjJdLDB8QSwwfHcpKXx8V2UoMHxjLDB8eG4pLE9uPXhuKTpmPS0xLDEhPSgwfGYpKWlmKDE0JlR0WzEzNisoMHxhW2wrMTY+''@;'; put 'put ''PjJdKT4+MV0mJihNbj0wLCRsKDEwNCwwfGwpLGM9TW4sTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8VGkoMHxhW2M+PjJdLDB8QSwwfHcpKXx8V2UoMHxjLDB8eG4pLE9uPXhuKTpmPS0xLDE9PSgwfGYpKSljPU9uO2Vsc2V7aWYoTW49MCxXMSgyMiwwfGwsMCksYz1NbixNbj0wLDAh''@;'; put 'put ''PSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxUaSgwfGFbYz4+Ml0sMHxBLDB8dykpfHxXZSgwfGMsMHx4biksT249eG4pOmY9LTEsMSE9KDB8Zikpe2I9MTI7YnJlYWt9Yz1Pbn1lbHNlIGM9T247ZWxzZSBjPU9uOzEyPT0oMHxiKSYmKF9bMjMyOTNdPW0pLEh0KDB8QSl9LGZ1bmN0aW9uIEo3KGwp''@;'; put 'put ''e3ZhciBjPTAsZj0wO2ZvcihmPTB8THQobHw9MCk7Zjspe2ZvcihjPTB8eTAobCxmKTtjOylXNShjKSxjPTB8azAobCxjKTtLNihmKSxmPTB8enQobCxmKX0hZnVuY3Rpb24gWEoobCl7UnNlKGx8PTApLEh0KDB8YVsxNTIrKDB8YVsobD1sKzE2fDApPj4yXSk+PjJdKSxIdCgwfGFbMTQwKygw''@;'; put 'put ''fGFbbD4+Ml0pPj4yXSl9KGwpfSxmdW5jdGlvbiBKc2UobCl7dmFyIGIsayxNLEQsRyxLLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLFI9MDtpZihLPW9lLG9lPW9lKzExMnwwLGI9Sys0MHwwLGs9SysxNnwwLEc9SysxMDB8MCxNPUssQT1LKzg4fDAsRD1LKzU2fDAsZnVuY3Rpb24gZHMobCl7''@;'; put 'put ''dmFyIGMsZj0wO1hkKGx8PTAsMiksYz0wfGVzKGwsMHxzaShsLDAsOTEzNjgsMCksMiwyKSxmPTY1NTM1JigwfGVzKGwsMHxzaShsLDAsOTEzNzQsMCksYywyKSksVHRbMTc2KygwfGFbMTYrKDB8aGkobCkpPj4yXSk+PjFdPWYsZj0oMHxhclsxNzYrKDB8YVsxNisoMHxoaShsKSk+PjJdKT4+''@;'; put 'put ''MV0pPDEwPzB8VHRbMTc2KygwfGFbMTYrKDB8aGkobCkpPj4yXSk+PjFdOjEwLFR0WzE3NisoMHxhWzE2KygwfGhpKGwpKT4+Ml0pPj4xXT1mLGFbNDcxMzddPWYmPTY1NTM1LFR0WzE3OCsoMHxhWzE2KygwfGhpKGwpKT4+Ml0pPj4xXT0oMHxjKTwoMHxmKT9jOmYsZnVuY3Rpb24gVWgobCl7''@;'; put 'put ''dmFyIGM9MCxmPTA7Zm9yKGM9MHxMdChsfD0wKTtjOylNayhjKSxjPTB8enQobCxjKTtmb3IoZj0wfEx0KGwpO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspUzllKGMpLGM9MHxrMChsLGMpO2Y9MHx6dChsLGYpfX0obCl9KGx8PTApLGM9MSYobT0yPT0oMHxhWzQ3MTM3XSkpLDB8Tm8obCkpe2lm''@;'; put 'put ''KGZ1bmN0aW9uIF85ZShsLGMpe2x8PTA7dmFyIHAsbSxBLGY9MDtBPW9lLG9lPW9lKzE2fDAsbT1BKzh8MCxhWyhmPUErMTJ8MCk+PjJdPWFbKHA9MTA4KyhjfD0wKXwwKT4+Ml0sMiE9KDB8ZlYobCwyLGYpKSYmWHIoMCw5MTE2OSxBKSxhW3A+PjJdPWFbZj4+Ml0sX1tjKzI0Pj4zXT0rY2wo''@;'; put 'put ''bCwwfHNpKGwsMCw5MTIwMiwwKSwtMSwwKSxfW2M+PjNdPS0rY2wobCwwfHNpKGwsMCw5MTIwNCwwKSwxLjAwMDEyMzQsMCksYVtjKzQwPj4yXT0wfGVzKGwsMHxzaShsLDAsOTEyMTksMCksMjE0NzQ4MzY0NywwKSxhW2MrMTIwPj4yXT0wfGZ1bmN0aW9uIFloKGwsYyl7bHw9MCxjfD0wO2Rv''@;'; put 'put ''e2lmKGMpe2lmKGw9MHxGbyhsLGMpLCgoYz0wfHVlW2w+PjBdKS00OHwwKT4+PjA8MTApe2w9KDB8KGw9MHxlMyhsKSkpPDU/bDowO2JyZWFrfWw9MHxUTChjKT8wfEEwKGwsOTEzMzApPzB8QTAobCw5MTMzOSk/MHxBMChsLDEzNTcwOSk/MHxBMChsLDkxMzUwKT8obD0wPT0oMHxBMChsLDkx''@;'; put 'put ''MzYxKSkpPzQ6MDozOjA6MToyOjB9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIDB8bH0obCwwfHNpKGwsMCw5MTIyNiwwKSksYVtjKzEzMj4+Ml09MHxmdW5jdGlvbiBrOWUobCxjKXtsfD0wLGN8PTA7ZG97aWYoYyl7aWYobD0wfEZvKGwsYyksKChjPTB8dWVbbD4+MF0pLTQ4fDApPj4+MDwx''@;'; put 'put ''MCl7bD0obD0wfGUzKGwpKT4+PjA8Mz9sOjE7YnJlYWt9bD0wfFRMKGMpPzAhPSgwfEEwKGwsMTM1NzA5KSkmJjAhPSgwfEEwKGwsMTM3MzA4KSk/MCE9KDB8QTAobCw5OTczMCkpJiYwIT0oMHxBMChsLDEwNzY1MikpJiYwIT0oMHxBMChsLDEwNzY1NykpJiYobD0wPT0oMHxBMChsLDkxMzI1''@;'; put 'put ''KSkpPzI6MTowOjF9ZWxzZSBsPTF9d2hpbGUoMCk7cmV0dXJuIDB8bH0obCwwfHNpKGwsMCw5MTIzNiwwKSksYVtjKzEzNj4+Ml09MCxhW2MrMTEyPj4yXT0yNTUmKDB8SjYoMHxMaShsLDkxMjQ1KSwwKSksYVtjKzEyOD4+Ml09MjU1JigwfEo2KDB8TGkobCw5MTI1NCksMSkpLF9bYysxNTI+''@;'; put 'put ''PjNdPStjbChsLDB8c2kobCwwLDkxMjY5LDApLDAsLTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiksZj0wfGVzKGwsMHxzaShsLDAsOTEyNzgsMCksMCwwKSxhWyhsPWMrMTYwfDApPj4yXT1mLCgwfGYpPjQmJihhW20+PjJdPWYsWHIoMCw5MTI5MSxtKSxhW2w+PjJdPTApLG9lPUF9KGwsUj0wfFhz''@;'; put 'put ''ZSgpKSxTWChsLGssMCksbSYxOD09KDB8YVtrPj4yXSk/KGFbUisxMjQ+PjJdPWFbays4Pj4yXSxfW1IrMTQ0Pj4zXT0rX1trKzE2Pj4zXSxJYyhBLGwpLDB8dWVbQSs4Pj4wXT8ocD0uMDEzODg4ODg4ODg4ODg4ODg4KitXbltBKzQ+PjJdLGY9LjAxMzg4ODg4ODg4ODg4ODg4OCorV25bQT4+''@;'; put 'put ''Ml0pOihwPS4wNTU1NTU1NTU1NTU1NTU1NSxmPS4wNTU1NTU1NTU1NTU1NTU1NSksX1tNPj4zXT1mLF9bTSs4Pj4zXT1wLGM9MCk6YVtSKzEyND4+Ml09LTEsdz0wfEFXKGwsRywwKSwxPT0oMHxhW0c+PjJdKSlhW2I+PjJdPWFbTT4+Ml0sYVtiKzQ+PjJdPWFbTSs0Pj4yXSxhW2IrOD4+Ml09''@;'; put 'put ''YVtNKzg+PjJdLGFbYisxMj4+Ml09YVtNKzEyPj4yXSwkNyhsLFIsYiksMHxjJiZxNyhsLGspLFE1KGwpLGM9MDtlbHNle2Zvcih0eShsLDIsOCxEKSxhW0QrMTI+PjJdPTEsQT0wPT0oMHxjKSxtPTA7ISgoMHxtKT49KDB8KGM9MHxhW0c+PjJdKSkpOylleShjPTB8YVt3KyhtPDwyKT4+Ml0p''@;'; put 'put ''LGFbYj4+Ml09YVtNPj4yXSxhW2IrND4+Ml09YVtNKzQ+PjJdLGFbYis4Pj4yXT1hW00rOD4+Ml0sYVtiKzEyPj4yXT1hW00rMTI+PjJdLCQ3KGMsUixiKSxBfHxxNyhjLGspLFhkKGMsMiksUTUoYyksbT1tKzF8MDtORihjLHcsbCxEKSxjPTB9Zm9yKDshKCgwfGMpPj0oMHxhW0c+PjJdKSk7''@;'; put 'put ''KW5pKGwsMHxhW3crKGM8PDIpPj4yXSksYz1jKzF8MDtIdCh3KSx6eShSKX1qNyhsKSxvZT1LfSxmdW5jdGlvbiBnWChsKXt2YXIgYz0wLGY9MDtmb3IoZj0wfEx0KGx8PTApO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspVzUoYyksYz0wfGswKGwsYyk7SzYoZiksZj0wfHp0KGwsZil9fSxmdW5j''@;'; put 'put ''dGlvbiBrVihsKXt2YXIgUixtZSxiZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLEs9MCxwZT0wO2lmKGJlPW9lLG9lPW9lKzgwfDAsaz1iZSszMnwwLEE9YmUrMjR8MCxtPWJlKzE2fDAsdz1iZSxtZT1iZSs3MnwwLFI9YmUrNDB8MCwwfE5vKGx8PTApKXtp''@;'; put 'put ''ZihmdW5jdGlvbiBrc2UobCl7WGQobHw9MCwyKSxUdFsxNzYrKDB8YVtsKzE2Pj4yXSk+PjFdPTIsYVs0NzEzN109MixmdW5jdGlvbiBISihsKXt2YXIgcCxtLGM9MCxmPTA7Zm9yKHA9MHxtcig1NiooYz0wfE5vKGx8PTApKXwwKSxjPTB8bXIoNCsoYzw8Mil8MCksYVsxNTIrKDB8YVsobT1s''@;'; put 'put ''KzE2fDApPj4yXSk+PjJdPWMsYz0wfEx0KGwpLGY9MDtjOylNayhjKSxhWzExMisoMHxhW2MrMTY+PjJdKT4+Ml09cCsoNTYqZnwwKSxhWygwfGFbMTUyKygwfGFbbT4+Ml0pPj4yXSkrKGY8PDIpPj4yXT1jLGM9MHx6dChsLGMpLGY9ZisxfDA7Zm9yKGY9MHxMdChsKTtmOyl7Zm9yKGM9MHx5''@;'; put 'put ''MChsLGYpO2M7KU5KKGMpLGM9MHxrMChsLGMpO2Y9MHx6dChsLGYpfX0obCl9KGwpLChwPTB8TGkobCw5NTczOCkpPzB8dWVbcD4+MF0/KGM9MHxNcihsLHAsMCkpP3BlPTA6KGFbbT4+Ml09cCxYcigwLDkwNDQ4LG0pLFhyKDMsOTA0ODgsQSksYz0wLHBlPTEpOihjPTAscGU9MSk6KGM9MCxw''@;'; put 'put ''ZT0wKSxEPTAhPSgwfChNPTB8c2kobCwxLDk1NzM4LDApKSksMHwocD0wfExpKGwsMTQwNzQyKSkmJjB8dWVbcD4+MF0mJihiPXcrOHwwLGFbaz4+Ml09dyxhW2srND4+Ml09YiwxPT0oMHwkYShwLDEwNTUwMyxrKSkpJiYoX1tiPj4zXT0rX1t3Pj4zXSksMHxObyhsKSl7aWYoaz0wfEFXKGws''@;'; put 'put ''bWUsMCksMT09KDB8YVttZT4+Ml0pKXttPTAhPSgwfGMpO2Rve2lmKG0pZj1jO2Vsc2V7aWYoRCYmMHwoZj0wfFZKKGwsTSkpKWJyZWFrO2Y9MH19d2hpbGUoMCk7cD0wfF9qKGwsZiksMCE9KDB8Zil8MV5EfHxCbChwLE0sMTQyNDYzKSxLPTE2KygwfEx0KGwpKXwwLEh0KDB8YVsxMTIrKDB8''@;'; put 'put ''YVtLPj4yXSk+PjJdKSxhWzExMisoMHxhW0s+PjJdKT4+Ml09MCxLNShsKSxRNShsKSxjPTA9PSgwfHBlKXxtP2M6cH1lbHNle2Zvcih0eShsLDIsOCxSKSxhW1IrMTI+PjJdPTAsYj0wPT0oMHxwZSksdz0wOyEoKDB8dyk+PSgwfGFbbWU+PjJdKSk7KXttPTB8YVtrKyh3PDwyKT4+Ml0sKGY9''@;'; put 'put ''MCE9KDB8YykpJiYwIT0oMHxIcihtLGMpKT9wPWM6Sz0yMztkb3tpZigyMz09KDB8Sykpe2lmKEs9MCxEJiYwfChHPTB8VkoobSxNKSkpe3A9RzticmVha31wPTB9fXdoaWxlKDApO2V5KG0pLEE9MHxfaihtLHApLGM9YnxmP2M6QSxEJiYwPT0oMHxwKXwoMHxwKT09KDB8YykmJkJsKEEsTSwx''@;'; put 'put ''NDI0NjMpLEs1KG0pLHc9dysxfDB9Sz0xNisoMHxMdChsKSl8MCxIdCgwfGFbMTEyKygwfGFbSz4+Ml0pPj4yXSksYVsxMTIrKDB8YVtLPj4yXSk+PjJdPTAsTkYoMHxhW21lPj4yXSxrLGwsUiksUTUobCl9Zm9yKGY9MDshKCgwfGYpPj0oMHxhW21lPj4yXSkpOyluaShsLDB8YVtrKyhmPDwy''@;'; put 'put ''KT4+Ml0pLGY9ZisxfDA7SHQoayl9MHxwZSYmTWMobCw5NTczOCwwfCRyKGMpKSxqNyhsKX1vZT1iZX0sZnVuY3Rpb24gakoobCl7dmFyIGM9MCxmPTA7aWYoMHwoYz0wfEx0KGx8PTApKSl7Zm9yKDtjOyl7Zm9yKGY9MHx5MChsLGMpO2Y7KVc1KGYpLGY9MHxrMChsLGYpO0s2KGMpLGM9MHx6''@;'; put 'put ''dChsLGMpfSFmdW5jdGlvbiBTc2UobCl7SHQoMHxhWzE1MisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSksKDB8aGkobCkpIT0oMHxsKSYmaHMobCwwLDEzNzQ4Myl9KGwpfX0sZnVuY3Rpb24gSzEobCl7MHxObyhsfD0wKSYmKGZ1bmN0aW9uIEs3KGwpe1hkKGx8PTAsMiksVHRbMTc2KygwfGFb''@;'; put 'put ''bCsxNj4+Ml0pPj4xXT0yLGFbNDcxMzddPTIsZnVuY3Rpb24gTFYobCl7dmFyIHAsbSxjPTAsZj0wO2ZvcihwPTB8bXIoKDB8Tm8obHw9MCkpPDwyKSxjPTB8bXIoNCsoKDB8Tm8obCkpPDwyKXwwKSxhWzE1MisoMHxhWyhtPWwrMTZ8MCk+PjJdKT4+Ml09YyxjPTB8THQobCksZj0wO2M7KU1r''@;'; put 'put ''KGMpLGFbMTEyKygwfGFbYysxNj4+Ml0pPj4yXT1wKyhmPDwyKSxhWygwfGFbMTUyKygwfGFbbT4+Ml0pPj4yXSkrKGY8PDIpPj4yXT1jLGM9MHx6dChsLGMpLGY9ZisxfDA7Zm9yKGY9MHxMdChsKTtmOyl7Zm9yKGM9MHx5MChsLGYpO2M7KU9WKGMpLGM9MHxrMChsLGMpO2Y9MHx6dChsLGYp''@;'; put 'put ''fX0obCl9KGwpLGZ1bmN0aW9uIFFzZShsKXt2YXIgcCx3LGM9MCxmPTAsbT0wLEE9MCxiPTA7aWYodz1vZSxvZT1vZSs0OHwwLGM9dyszMnwwLHA9dywwfE5vKGx8PTApKXtpZihBPTB8ZnVuY3Rpb24gZFgobCxjKXtsfD0wLGN8PTA7dmFyIGssRCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxN''@;'; put 'put ''PTA7Zm9yKEQ9b2Usb2U9b2UrMTZ8MCxrPUQsdWVbKE09RCs0fDApPj4wXT0wfHVlWzE4NTk2XSx1ZVtNKzE+PjBdPTB8dWVbMTg1OTddLHVlW00rMj4+MF09MHx1ZVsxODU5OF0sdWVbTSszPj4wXT0wfHVlWzE4NTk5XSxmMChNPTB8RWMoOTExNTYsTSwwKSw5MTE2NCwyODAsMSksYVsxNDAr''@;'; put 'put ''KDB8YVtsKzE2Pj4yXSk+PjJdPU0sZj0wfEx0KGwpO2Y7KTB8YVthWzExMisoMHxhWyhwPWYrMTZ8MCk+PjJdKT4+Ml0+PjJdfHwoYj0wfHBYKE0sMHwkcihmKSxmKSxhW2FbMTEyKygwfGFbcD4+Ml0pPj4yXT4+Ml09YiksZj0wfHp0KGwsZik7Zm9yKHA9MHxMdChsKTtwOyl7Zm9yKGY9MHx5''@;'; put 'put ''MChsLHApO2Y7KSgwfChtPTB8YVthWzExMisoMHxhWzE2KygwfGFbKDM9PSgwfChBPTMmYVtmPj4yXSkpP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXSkpIT0oMHwoQT0wfGFbYVsxMTIrKDB8YVsxNisoMHxhWygyPT0oMHxBKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0+PjJd''@;'; put 'put ''KSkmJmYwKDB8cmwoTSxtLEEsMCwxKSwxMzc0NjAsMTc2LDEpLGY9MHxrMChsLGYpO3A9MHx6dChsLHApfWZvcihiPTB8QVcoTSxrLDApLHA9MDshKCgwfHApPj0oMHxhW2s+PjJdKSk7KXtmb3IoZj0wfEx0KEE9MHxhW2IrKHA8PDIpPj4yXSk7Zjspe2ZvcihtPTB8eTAobCwwfGFbYVsxMTIr''@;'; put 'put ''KDB8YVtmKzE2Pj4yXSk+PjJdPj4yXSk7bTspKDB8ZikhPSgwfCh3PTB8YVthWzExMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbbT4+Ml18MCk/bTptKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXSkpJiYoZjAodz0wfHJsKE0sZix3LDAsMSksMTM3NDYwLDE3NiwxKSxPZChBLHcsMSkpLG09''@;'; put 'put ''MHxrMChsLG0pO2Y9MHx6dChBLGYpfXA9cCsxfDB9Zm9yKGY9MHxMdChNKTtmOyl7Zm9yKHA9MHx5MChNLGYpO3A7KWw9MHxtcig4KSxhWzEyMCsoMHxhW3ArMTY+PjJdKT4+Ml09bCxwPTB8azAoTSxwKTtmPTB8enQoTSxmKX1yZXR1cm4gYVtjPj4yXT1hW2s+PjJdLG9lPUQsMHxifShsLGMp''@;'; put 'put ''LG09MHxhW2M+PjJdLGM9MHxhW0E+PjJdLDE9PSgwfG0pKWJyKGMsbCksWUQoMHxhW0E+PjJdKSxLNShsKTtlbHNle2ZvcihmPTB8YVtjKzYwPj4yXSx0eShsLDIsOCxwKSxjPTA7ISgoMHxjKT49KDB8bSkpOylicihiPTB8YVtBKyhjPDwyKT4+Ml0sbCksSzUoYiksYz1jKzF8MDtmb3IoTkYo''@;'; put 'put ''bSxBLGYscCksYz0wOyEoKDB8Yyk+PSgwfG0pKTspWUQoMHxhW0ErKGM8PDIpPj4yXSksYz1jKzF8MH1IdChBKX1vZT13fShsKSxIdCgwfGFbMTEyKygwfGFbMTYrKDB8THQobCkpPj4yXSk+PjJdKSxRNShsKSxqNyhsKSl9LGZ1bmN0aW9uIHc5ZShsKXt2YXIgYz0wLGY9MCxwPTA7aWYoMHwo''@;'; put 'put ''Yz0wfEx0KGx8PTApKSl7Zm9yKGZ1bmN0aW9uIGI5ZShsKXt2YXIgYz0wLGY9MDtmb3IoZj0wfEx0KGx8PTApO2Y7KXtmb3IoYz0wfHkwKGwsZik7YzspSHQoMHxhWzEyMCsoMHxhW2MrMTY+PjJdKT4+Ml0pLGM9MHxrMChsLGMpO0h0KDB8YVsxMTIrKDB8YVsoYz1mKzE2fDApPj4yXSk+PjJd''@;'; put 'put ''KSxIdCgwfGFbMTMyKygwfGFbYz4+Ml0pPj4yXSksZj0wfHp0KGwsZil9UTEobCl9KDB8YVsxNDArKDB8YVsocD1sKzE2fDApPj4yXSk+PjJdKTtjOyl7Zm9yKGY9MHx5MChsLGMpO2Y7KVc1KGYpLGY9MHxrMChsLGYpO0s2KGMpLGM9MHx6dChsLGMpfUh0KDB8YVsxNTIrKDB8YVtwPj4yXSk+''@;'; put 'put ''PjJdKSwoMHxoaShsKSkhPSgwfGwpJiZocyhsLDAsMTM3NDgzKX19LGZ1bmN0aW9uIFJsZShsKXtsfD0wLGFbNDcxMzRdPTEsaFYobCksYVs0NzEzNF09MH0sZnVuY3Rpb24gQmxlKGwpe2x8PTAsYVs0NzEzNF09MixoVihsKSxhWzQ3MTM0XT0wfSxmdW5jdGlvbiBaSihsKXsoZnVuY3Rpb24g''@;'; put 'put ''VGsobCl7YVs0NzE0N109MHxzaShsfD0wLDEsMTA4MjMwLDEwODIzNiksWGQobCwyKSxUdFsxNzYrKDB8YVtsKzE2Pj4yXSk+PjFdPTIsYVs0NzEzN109MixzcChsLDApLGZ1bmN0aW9uIFNWKGwpe3ZhciBtLEEsYz0wLGY9MCxwPTA7Zm9yKG09MHxtcigoMHxObyhsfD0wKSk8PDIpLGM9MHxt''@;'; put 'put ''cig0KygoMHxObyhsKSk8PDIpfDApLGFbMTUyKygwfGFbKEE9bCsxNnwwKT4+Ml0pPj4yXT1jLGM9MHxMdChsKSxmPTA7Yzspe2ZvcihmMChjLDEzNzQ0NywzMDQsMSksYVsxMTIrKDB8YVtjKzE2Pj4yXSk+PjJdPW0rKGY8PDIpLGFbKDB8YVsxNTIrKDB8YVtBPj4yXSk+PjJdKSsoZjw8Mik+''@;'; put 'put ''PjJdPWMsekooYykscD0wfHkwKGwsYyk7cDspTXNlKHApLHA9MHxrMChsLHApO2M9MHx6dChsLGMpLGY9ZisxfDB9fShsKX0pKGx8PTApLDA9PSgwfE5vKGwpKSYmISgwfGFbMTgwKygwfGFbbCsxNj4+Ml0pPj4yXSl8fChmdW5jdGlvbiBvQWUobCl7dmFyIGMscCxtLGY9MDtjPW9lLG9lPW9l''@;'; put 'put ''KzMyfDAscD1jLGY9MHxzaShsfD0wLDEsOTQxMjIsMCksZj0obD0wfHEyZShsLDB8c2kobCwwLDk0MTIyLDApLGYsMHxzaShsLDAsOTQxMjcsMCkpKSsxNnwwLGZ1bmN0aW9uIHVBZShsLGMsZixwLG0pe2Y9K2YscD0rcCxtPSttLF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mLF9bbCsx''@;'; put 'put ''Nj4+M109cCxfW2wrMjQ+PjNdPW19KHAsMCwwLG09K0YwKCsoK19bbD4+M10rLjEpKSxtKSxhW2Y+PjJdPWFbcD4+Ml0sYVtmKzQ+PjJdPWFbcCs0Pj4yXSxhW2YrOD4+Ml09YVtwKzg+PjJdLGFbZisxMj4+Ml09YVtwKzEyPj4yXSxhW2YrMTY+PjJdPWFbcCsxNj4+Ml0sYVtmKzIwPj4yXT1h''@;'; put 'put ''W3ArMjA+PjJdLGFbZisyND4+Ml09YVtwKzI0Pj4yXSxhW2YrMjg+PjJdPWFbcCsyOD4+Ml0sZTFlKGwpLHZLKGwpLGVTKGwpLG9lPWN9KGwpLGo3KGwpKX0sZnVuY3Rpb24gR0oobCl7dmFyIGM9MCxmPTA7aWYoMHwoYz0wfEx0KGx8PTApKSl7Zm9yKEh0KDB8YVsxMTIrKDB8YVtjKzE2Pj4y''@;'; put 'put ''XSk+PjJdKTtjOyl7Zm9yKGY9MHx5MChsLGMpO2Y7KVc1KGYpLGY9MHxrMChsLGYpO0s2KGMpLGM9MHx6dChsLGMpfSFmdW5jdGlvbiBhOWUobCl7SHQoMHxhWzE1MisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSksKDB8aGkobCkpIT0oMHxsKSYmaHMobCwwLDEzNzQ4Myl9KGwpfX0sZnVuY3Rp''@;'; put 'put ''b24gV0oobCl7dmFyIGM9MCxmPTAscD0wO2lmKGZ1bmN0aW9uIEVzZShsKXt2YXIgYz0wLGY9MDtmb3IoWGQobHw9MCwyKSxUdFsxNzYrKDB8YVtsKzE2Pj4yXSk+PjFdPTIsYVs0NzEzN109MixjPTB8THQobCk7YzspTWsoYyksYz0wfHp0KGwsYyk7Zm9yKGY9MHxMdChsKTtmOyl7Zm9yKGM9''@;'; put 'put ''MHx5MChsLGYpO2M7KWYwKGMsMTM3NDYwLDE3NiwxKSxZNyhjKSxjPTB8azAobCxjKTtmPTB8enQobCxmKX19KGx8PTApLE1WKGwsMCkseHNlKGwsMCksWUoobCwwKSwwfGFbODQrKDB8YVs4KyhjPTB8YVtsKzE2Pj4yXSk+PjJdKT4+Ml0pe2ZvcihjPTB8THQobCk7YzspX1soZj0wfGFbMTMy''@;'; put 'put ''KyhwPTB8YVtjKzE2Pj4yXSk+PjJdKT4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1twKzE2Pj4zXSxfW2YrOD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1twKzI0Pj4zXSxjPTB8enQobCxjKTtQRChsLDEpfWVsc2UoYz0xNCZUdFtjKzEzNj4+MV0pPDwxNj4+MTYmJkJEKGwsNjU1MzUm''@;'; put 'put ''Yyk7ajcobCl9LGZ1bmN0aW9uIEpKKGwpe3ZhciBjPTA7Zm9yKGM9MHxMdChsfD0wKTtjOylLNihjKSxjPTB8enQobCxjKTtEc2UobCl9LGZ1bmN0aW9uIGZDKGwpe30sZnVuY3Rpb24gUmFlKGwpe2x8PTA7dmFyIHJ0LEdlLGx0LGt0LHJuLE5yLENyLHFyLExyLGEwLEZpLGM9MCxmPTAscD0w''@;'; put 'put ''LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLEs9MCxwZT0wLG1lPTAsYmU9MCxPZT0wLExlPTAsQmU9MCxIZT0wLGplPTAsZXQ9MCxNdD0wLGF0PTAsRXQ9MCxadD0wLHV0PTAsd3Q9MCx5bj0wLEZuPTAsbHI9MCxrcj0wLGNyPTAsUGk9MDtGaT1vZSxvZT1vZSsxNDR8MCxr''@;'; put 'put ''dD1GaSsxMTJ8MCxadD1GaSsxMDR8MCxHZT1GaSs5NnwwLGx0PUZpKzg4fDAsQT1GaSs4MHwwLENyPUZpKzY0fDAsTHI9RmkrNDh8MCxybj1GaSs0MHwwLHluPUZpKzMyfDAsdz1GaSsyNHwwLFI9RmkrMTZ8MCxydD1GaSsxMzZ8MCxldD1GaSsxMjh8MCxhdD1GaSxhMD0wfG1yKDQ4KSxtPTE2''@;'; put 'put ''MTY9PSgwfChrcj0wfGFbOCsoMHxhWzgrKDB8YVsocXI9bCsxNnwwKT4+Ml0pPj4yXSk+PjJdKSksY3I9MHxhW2tyPj4yXSxjPTB8YVtrcis0Pj4yXSxmPTB8YVtrcis4Pj4yXSxrPStfW2tyKzE2Pj4zXSxNPStfW2tyKzMyPj4zXSxEPStfW2tyKzI0Pj4zXSxjcnw9MjU1JigwfHIxKDB8TGko''@;'; put 'put ''bCwxMDU1MTEpKSk7ZG97aWYobSlwPTAsYj0wO2Vsc2V7aWYoIWNyKXtwPSsoMHx+figocD03MiorX1s0MCsoa3I9MHxhW3FyPj4yXSk+PjNdKSsocD49MD8uNTotLjUpKSksYj0rKDB8fn4oKGI9NzIqK19ba3IrMzI+PjNdKSsoYj49MD8uNTotLjUpKSk7YnJlYWt9KGI9K1BhZShsKSk+MHx8''@;'; put 'put ''KGI9KygwfH5+KChiPTcyKigocD0rX1szMisoa3I9MHxhW3FyPj4yXSk+PjNdKTwoYj0rX1trcis0MD4+M10pP3A6YikpKyhiPj0wPy41Oi0uNSkpKSkscD1ifX13aGlsZSgwKTtpZihrcj0wfGVzKGwsMHxhWzQ3MTYwXSxjLDApLE5yPStjbChsLDB8YVs0NzE2Ml0sMCwtMzYwKStrLGY/KE10''@;'; put 'put ''PWYsbHI9TSxGbj1EKToobHI9K2NsKGwsMHxhWzQ3MTYzXSwwLC0xMDApLE10PTB8ZXMobCwwfGFbNDcxNTldLDQsMCksRm49K2NsKGwsMHxhWzQ3MTY0XSwwLC0xMDApKSxhW0NyPj4yXT1hWyhmPTI0KyhjPTB8YVsxMDQrKDB8YVtxcj4+Ml0pPj4yXSl8MCk+PjJdLGFbQ3IrND4+Ml09YVtm''@;'; put 'put ''KzQ+PjJdLGFbQ3IrOD4+Ml09YVtmKzg+PjJdLGFbQ3IrMTI+PjJdPWFbZisxMj4+Ml0sKEc9K19bQ3I+PjNdKT4wP218fChFdD0xMSk6bXwhKCtfW0NyKzg+PjNdPjApfHwoRXQ9MTEpLDExPT0oMHxFdCkpe2M9MHxMaShsLDEwNTQ5Nik7ZG97aWYoYyl7aWYoX1tSPj4zXT0wLF9bdz4+M109''@;'; put 'put ''MCxhW0E+PjJdPXcsYVtBKzQ+PjJdPVIsYz0wfCRhKGMsMTA1NTAzLEEpLChrPStfW3c+PjNdKTwwJiYoX1t3Pj4zXT0wLGs9MCksKE09K19bUj4+M10pPDA/KF9bUj4+M109MCxEPTApOkQ9TSwoMHxjKTw9MCl7X1tDcj4+M109TT1HKzE2LGs9ODticmVha31fW0NyPj4zXT1NPUcrKGs9Kyh+''@;'; put 'put ''figoayo9NzIpKyhrPj0wPy41Oi0uNSkpPDwxfDApKSwxIT0oMHxjKSYmKGs9Kyh+figoaz03MipEKSsoaz49MD8uNTotLjUpKTw8MXwwKSl9ZWxzZSBfW0NyPj4zXT1NPUcrMTYsaz04fXdoaWxlKDApO19bKGM9Q3IrOHwwKT4+M109K19bYz4+M10rayxjPTB8YVsxMDQrKDB8YVtxcj4+Ml0p''@;'; put 'put ''Pj4yXSxHPU19cGU9K19bYysyND4+M10sKGs9K19bYVs4KygwfGFbMTYrKDB8ZnIobCkpPj4yXSk+PjJdPj4zXSk+MD8od3Q9K01RKEcsdXQ9KygwfH5+KCh1dD03MiprKSsodXQ+PTA/LjU6LS41KSkpKSxfW0NyPj4zXT13dCxfWyhSPUNyKzh8MCk+PjNdPStNUSgrX1tSPj4zXSx1dCkpOnd0''@;'; put 'put ''PUcsYz0wfGFbOCsoMHxhW3FyPj4yXSk+PjJdO2Rve2lmKDB8dWVbYysxMj4+MF0pe2lmKDk5PT0oMHx1ZVsoYz0wfGFbYz4+Ml0pPj4wXSkmJjA9PSgwfFppKGMsMTA1NTE5KSkpe2lmKGY9MHxMaShsLDEwNTUyNiksYkMocnQsMHxmcihsKSxmKSwtMT09KChtPTB8YVtydCs0Pj4yXSkmKGM9''@;'; put 'put ''MHxhW3J0Pj4yXSl8MCkpe2M9MHwkcihsKSxhW2x0Pj4yXT0wfGY/ZjoxMDU1MzYsYVtsdCs0Pj4yXT1jLFhyKDAsMTA1NTQyLGx0KSxmPTAsYz0wO2JyZWFrfXVlWzExNCsoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4wXT0xLGY9YysyfDAsYz1tKzJ8MDticmVha31mPTAsYz0wfWVsc2V7aWYo''@;'; put 'put ''MCE9KDB8KGY9MHxMaShsLDEwOTAyNSkpKSYmMCE9KDB8dWVbZj4+MF0pKXtpZihiQyhldCwwfGZyKGwpLGYpLC0xPT0oKG09MHxhW2V0KzQ+PjJdKSYoYz0wfGFbZXQ+PjJdKXwwKSl7Yz0wfCRyKGwpLGFbR2U+PjJdPWYsYVtHZSs0Pj4yXT1jLFhyKDAsMTA1NTg3LEdlKSxmPTAsYz0wO2Jy''@;'; put 'put ''ZWFrfXVlWzExNCsoMHxhWzE2KygwfGZyKGwpKT4+Ml0pPj4wXT0xLGY9YysyfDAsYz1tKzJ8MDticmVha31mPTAsYz0wfX13aGlsZSgwKTtfW0xyPj4zXT13dD4odXQ9KygwfGYpKT93dDp1dCxLPSsoMHxjKSxfWyhjPUxyKzh8MCk+PjNdPSh1dD0rX1tDcis4Pj4zXSk+Sz91dDpLLGY9KDB8''@;'; put 'put ''TXQpPDMmKDAhPUZufDAhPWxyKT8xMjA6TXQsQT0obT0wfExpKGwsMTA1NjI4KSk/KEE9MHx1ZVttPj4wXSk8PDI0Pj4yND09MTE2PzExNjpBPDwyND4+MjQ9PTk4Pzk4Ojk5Ojk5LHVlWzgwKygwfGFbMTA0KyhtPTB8YVtxcj4+Ml0pPj4yXSk+PjBdPUEsND09KDB8ZikmJigwPT1Gbj8wPT0o''@;'; put 'put ''MHwoMHx+fihOcisoTnI+PTA/LjU6LS41KSkpJTkwKTowKSYwPT1scj9SPTE6RXQ9Mzk7ZG97aWYoMzk9PSgwfEV0KSl7aWYoMHwobT0wfGFbNDQrKDB8YVs4KygwfGFbbSs4Pj4yXSk+PjJdKT4+Ml0pKXtSPTB8YVttPj4yXSxhW2t0Pj4yXT1hW0xyPj4yXSxhW2t0KzQ+PjJdPWFbTHIrND4+''@;'; put 'put ''Ml0sYVtrdCs4Pj4yXT1hW0xyKzg+PjJdLGFba3QrMTI+PjJdPWFbTHIrMTI+PjJdLHgyWzYzJlJdKGF0LGt0KSxhW0xyPj4yXT1hW2F0Pj4yXSxhW0xyKzQ+PjJdPWFbYXQrND4+Ml0sYVtMcis4Pj4yXT1hW2F0Kzg+PjJdLGFbTHIrMTI+PjJdPWFbYXQrMTI+PjJdLFI9MDticmVha31wPihN''@;'; put 'put ''PTEuNDE0MjEzNTYyMzczMDk1MSooaz0rX1tjPj4zXSkpJkE8PDI0Pj4yND09OTk/KEQ9K0YwKDEvKDEtKEQ9ay9wKSpEKSksX1tMcj4+M109RCo9K19bTHI+PjNdKTooX1tMcj4+M109RD0xLjQxNDIxMzU2MjM3MzA5NTEqK19bTHI+PjNdLF9bYz4+M109TSxrPU0pLCgwfGYpPjImJihqZT0r''@;'; put 'put ''bGEoMy4xNDE1OTI2NTM1ODk3OTMvKygwfGYpKSxfW0xyPj4zXT1EL2plLF9bYz4+M109ay9qZSksUj0wfX13aGlsZSgwKTtrPStfW2M+PjNdLG09MHxBMihsLDB8YVs0NzE2NV0sMTM3MzA4KSwxMTU9PSgwfHVlW20+PjBdKSYmMD09KDB8WmkobSwxMDgyMzApKT8oX1tMcj4+M109YixfW2M+''@;'; put 'put ''PjNdPXAsYVsoWnQ9YTArNDB8MCk+PjJdPTIwNDh8YVtadD4+Ml0pOigoMHxyMShtKSk8PDI0Pj4yND8oIShiPCtfWzI0KyhFdD0wfGFbMTA0KygwfGFbcXI+PjJdKT4+Ml0pPj4zXSkmJiEocDwrX1tFdCszMj4+M10pfHwoYXQ9MHwkcihsKSxFdD0wfCRyKDB8ZnIobCkpLGFbWnQ+PjJdPWF0''@;'; put 'put ''LGFbWnQrND4+Ml09RXQsWHIoMCwxMDU2MzcsWnQpKSxfW0xyPj4zXT1iKTooX1tMcj4+M109Yj1iPihqZT0rX1tMcj4+M10pP2I6amUscD1wPihqZT0rX1tjPj4zXSk/cDpqZSksX1tjPj4zXT1wKSxjcj8oX1tjPj4zXT1IZT1iPnA/YjpwLF9bTHI+PjNdPUhlLGplPUhlKTooamU9cCxIZT1i''@;'; put 'put ''KTtkb3tpZigoMHxyMSgwfEEyKGwsMHxhWzQ3MTU2XSwxMzczMDgpKSk8PDI0Pj4yNClwPXd0O2Vsc2V7aWYoUil7cD0rX1sod3Q+K19bTHI+PjNdP0NyOkxyKT4+M107YnJlYWt9cD11dDwocD0rX1tjPj4zXSk/d3Q+KHA9K19bTHI+PjNdKitGMCgrKDEtdXQqdXQvKHAqcCkpKSk/d3Q6cDp3''@;'; put 'put ''dH19d2hpbGUoMCk7X1s0MCsobT0wfGFbMTA0KygwfGFbcXI+PjJdKT4+Ml0pPj4zXT1wZS1HK3AsMjA0OCZhWyhldD1hMCs0MHwwKT4+Ml18fChCZT0rX1tjPj4zXS1rLF9bbSs0OD4+M109KHV0PEs/Sy11dCtCZTpCZSkrdXQpLG09KHc9KDB8a3IpPjEpP2tyOjE7ZTpkb3tpZigoMHxmKTwz''@;'; put 'put ''KWlmKG09MHxtcihtPDw1KSxiPS41KitfW0xyPj4zXSxwPS41KitfW2M+PjNdLF9bbT4+M109LWIsX1ttKzg+PjNdPS1wLF9bbSsxNj4+M109YixfW20rMjQ+PjNdPXAsdyl7Zm9yKGY9MSxBPTI7KDB8ZikhPSgwfGtyKTspamU9cCs0LF9bbSsoQTw8NCk+PjNdPS0oSGU9Yis0KSxfW20rKEE8''@;'; put 'put ''PDQpKzg+PjNdPS1qZSxfW20rKCh5bj0xfEEpPDw0KT4+M109SGUsX1ttKyh5bjw8NCkrOD4+M109amUsZj1mKzF8MCxBPUErMnwwLGI9SGUscD1qZTtfW0xyPj4zXT0yKmIsX1tjPj4zXT0yKnAsZj0yfWVsc2UgZj0yO2Vsc2V7bT0wfG1yKDB8dnIobTw8NCxmKSksQT0wfGFbNDQrKDB8YVs4''@;'; put 'put ''KygwfGFbOCsoMHxhW3FyPj4yXSk+PjJdKT4+Ml0pPj4yXTt0OmRve2lmKEEpeDJbNjMmYVtBKzQ+PjJdXShtLExyKSxiPS41KitfW2M+PjNdLHA9LjUqK19bTHI+PjNdO2Vsc2V7Zm9yKEs9K0lhKCsobWU9LjUqKEc9Ni4yODMxODUzMDcxNzk1ODYvKygwfGYpKSkpLHBlPStoUygrZW8oK2xy''@;'; put 'put ''KSsgK2VvKCtGbiksMSksbWU9MS40MTQyMTM1NjIzNzMwOTUxKkZuLytsYSgrbWUpLGJlPS41KmxyLHhMKC41KihHKy0zLjE0MTU5MjY1MzU4OTc5Mykscm4seW4pLE9lPS4wMTc0NTMyOTI1MTk5NDMyOTUqTnIsYj0wLHA9MCxrPTAsQT0wLE09LjUqK19beW4+PjNdLEQ9LjUqK19bcm4+PjNd''@;'; put 'put ''Ozspe2lmKCgwfEEpPj0oMHxmKSlicmVhayB0O2lmKHhMKGsrPUcscm4seW4pLHhMKCtxMigrKEQ9K19bcm4+PjNdKksrRCksKyhCZT0oRCptZStwZSkqKE09K19beW4+PjNdKksrTSkrYmUqRCkpK09lLHJuLHluKSxCZT0raFMoQmUsRCksTGU9K19beW4+PjNdKkJlKitfW0xyPj4zXSxCZT0r''@;'; put 'put ''X1tybj4+M10qQmUqK19bYz4+M10scD0oUGk9K2VvKCtMZSkpPnA/UGk6cCxiPShQaT0rZW8oK0JlKSk+Yj9QaTpiLF9bbSsoQTw8NCk+PjNdPUxlLF9bbSsoQTw8NCkrOD4+M109QmUsUilicmVhaztBPUErMXwwfV9bbSsxNj4+M109UGk9LUxlLF9bbSsyND4+M109QmUsX1ttKzMyPj4zXT1Q''@;'; put 'put ''aSxfW20rNDA+PjNdPVBpPS1CZSxfW20rNDg+PjNdPUxlLF9bbSs1Nj4+M109UGl9fXdoaWxlKDApO2ZvcihiKj0yLF9bTHI+PjNdPUhlPUhlPihwKj0yKT9IZTpwLF9bYz4+M109UGk9amU+Yj9qZTpiLHA9SGUvcCxiPVBpL2IsQT0wOyEoKDB8QSk+PSgwfGYpKTspUGk9K19bKGw9bSsoQTw8''@;'; put 'put ''NCkrOHwwKT4+M10qYixfWyhadD1tKyhBPDw0KXwwKT4+M109K19bWnQ+PjNdKnAsX1tsPj4zXT1QaSxBPUErMXwwO2lmKHcpe3A9K3EyKCsoKGs9K19bbSs4Pj4zXSktK19bbSsoKHc9ZistMXwwKTw8NCkrOD4+M10pLCsoKGI9K19bbT4+M10pLStfW20rKHc8PDQpPj4zXSkpLHc9MDt0OmZv''@;'; put 'put ''cig7ISgoMHx3KT49KDB8ZikpOylmb3IoUj13KzF8MCxBPSgwfFIpJSgwfGYpfDAsTT0rX1ttKyhBPDw0KT4+M10sRD0rX1ttKyhBPDw0KSs4Pj4zXSxHPStxMigrKEQtayksKyhNLWIpKSxqZT0uNSoocCszLjE0MTU5MjY1MzU4OTc5My1HKSxQaT00LytJYSgramUpLHhMKHAtamUscm4seW4p''@;'; put 'put ''LF9bcm4+PjNdPStfW3JuPj4zXSpQaSxfW3luPj4zXT0rX1t5bj4+M10qUGksQT0xLHA9azs7KXtpZigoMHxBKT09KDB8a3IpKXtwPUcsdz1SLGI9TSxrPUQ7Y29udGludWUgdH1qZT0rX1t5bj4+M10rYixQaT0rX1tybj4+M10rcCxsPSgwfHZyKEEsZikpK3d8MCxfW20rKGw8PDQpPj4zXT1q''@;'; put 'put ''ZSxfW20rKGw8PDQpKzg+PjNdPVBpLEE9QSsxfDAsYj1qZSxwPVBpfWZvcih3PTB8dnIoZixrcistMXwwKSxBPTA7Oyl7aWYoKDB8QSk+PSgwfGYpKWJyZWFrIGU7amU9K19bbSsoKHluPUErd3wwKTw8NCkrOD4+M10sSGU9MiorZW8oKyArX1ttKyh5bjw8NCk+PjNdKSxfW0xyPj4zXT1IZT4o''@;'; put 'put ''UGk9K19bTHI+PjNdKT9IZTpQaSxqZT0yKitlbygramUpLF9bYz4+M109amU+KFBpPStfW2M+PjNdKT9qZTpQaSxBPUErMXwwfX19fXdoaWxlKDApO2FbYTA+PjJdPWNyLGFbYTArND4+Ml09a3IsYVthMCs4Pj4yXT1mLF9bYTArMTY+PjNdPU5yLF9bYTArMzI+PjNdPWxyLF9bYTArMjQ+PjNd''@;'; put 'put ''PUZuLGFbYTArNDQ+PjJdPW0scD0rX1tMcj4+M10sMjA0OCZhW2V0Pj4yXT8oX1szMisoZj0wfGFbcXI+PjJdKT4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1sod3Q+cD9DcjpMcik+PjNdLGM9KHV0PitfW2M+PjNdP0NyOkxyKSs4fDApOl9bMzIrKGY9MHxhW3FyPj4yXSk+PjNdPS4wMTM4''@;'; put 'put ''ODg4ODg4ODg4ODg4ODgqcCxfW2YrNDA+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bYz4+M10sYVtmKzEyPj4yXT1hMCxvZT1GaX0sZnVuY3Rpb24gQWsobCl7MHwobD0wfGFbMTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pJiYoSHQoMHxhW2wrNDQ+PjJdKSxIdChsKSl9LGZ1bmN0aW9u''@;'; put 'put ''IEJhZShsKXtsfD0wO3ZhciBiLGssYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsTT0wLEQ9MDtpZihiPTB8bXIoNDgpLEE9MHxhWzQrKDB8YVs4KygwfGFbOCsoMHxhWyhrPWwrMTZ8MCk+PjJdKT4+Ml0pPj4yXSk+PjJdLG09K2NsKGwsMHxhWzQ3MTQ2XSwxNzk3NjkzMTM0ODYyMzE1N2UyOTIs''@;'; put 'put ''MCksYz0rY2wobCwwfGFbNDcxNDVdLDE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiwwKSxfWzQwKyh3PTB8YVtrPj4yXSk+PjNdPW09MTc5NzY5MzEzNDg2MjMxNTdlMjkyPT1jJjE3OTc2OTMxMzQ4NjIzMTU3ZTI5Mj09KG09bTxjP206Yyk/LjA1Om0+MD9tPjNlLTQ/bTozZS00Om0sX1t3KzMyPj4z''@;'; put 'put ''XT1tLGM9NzIqbSx3PTB8bXIoKDB8KEE9MHxlcyhsLDB8YVs0NzE2MF0sQSwwKSkpPDE/MzI6QTw8NSksX1t3Pj4zXT1wPS0obSo9MzYpLF9bdys4Pj4zXT1wLF9bdysxNj4+M109bSxfW3crMjQ+PjNdPW0sKDB8QSk+MSl7Zm9yKGw9MSxmPTIscD1tLGM9bTsoMHxsKSE9KDB8QSk7KW09Yys0''@;'; put 'put ''LF9bdysoZjw8NCk+PjNdPS0oTT1wKzQpLF9bdysoZjw8NCkrOD4+M109LW0sX1t3KygoRD0xfGYpPDw0KT4+M109TSxfW3crKEQ8PDQpKzg+PjNdPW0sbD1sKzF8MCxmPWYrMnwwLHA9TSxjPW07Yz0yKnB9YVtiPj4yXT0xLGFbYis0Pj4yXT1BLGFbYis4Pj4yXT0yLGFbKEQ9YisxNnwwKT4+''@;'; put 'put ''Ml09MCxhW0QrND4+Ml09MCxhW0QrOD4+Ml09MCxhW0QrMTI+PjJdPTAsYVtEKzE2Pj4yXT0wLGFbRCsyMD4+Ml09MCxhW2IrNDQ+PjJdPXcsX1szMisoRD0wfGFbaz4+Ml0pPj4zXT1NPS4wMTM4ODg4ODg4ODg4ODg4ODgqYyxfW0QrNDA+PjNdPU0sYVtEKzEyPj4yXT1ifSxmdW5jdGlvbiBG''@;'; put 'put ''eShsKXt2YXIgYixrLE0sUixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxEPTA7Uj1vZSxvZT1vZSs2NHwwLGI9Uis0MHwwLHA9UiszMnwwLGs9UisxNnwwLEQ9UixmPSgwfGFbMTE2KygwfGFbMTYrKDB8ZnIobHw9MCkpPj4yXSk+PjJdKT4+PjImMV4xLGFbNDcyODJdPW09MHxhW2FbMTA0Kygw''@;'; put 'put ''fGFbKE09bCsxNnwwKT4+Ml0pPj4yXT4+Ml0sKGM9MHxPTihsLGYsMSxtPTB8bXIoKCgwfChtPTB8em8obSkpKT4xP206MSkrMXwwKSkpfHwoYVtwPj4yXT1hW2FbMTA0KygwfGFbTT4+Ml0pPj4yXT4+Ml0sWHIoMSwxMDU0NzIscCksYVs0NzI4Ml09MTA1NDkzLGM9MHxPTihsLGYsMSxtKSks''@;'; put 'put ''SHQobSksQ1EoYixsLGMpLF9bRD4+M109dz0rKDB8fn4oKHc9NzIqK19bMzIrKGY9MHxhW00+PjJdKT4+M10pKyh3Pj0wPy41Oi0uNSkpKSxBPTcyKitfW2YrNDA+PjNdLF9bKGY9RCs4fDApPj4zXT1BPSsoMHx+fihBKyhBPj0wPy41Oi0uNSkpKSwoMHxyMSgwfEEyKGwsMHxhWzQ3MTY1XSwx''@;'; put 'put ''MzczMDgpKSk8PDI0Pj4yND8oZj1jKzh8MCxwPWMpOihfW0Q+PjNdPXc9K19bKCtfW2M+PjNdPnc/YzpEKT4+M10sX1tmPj4zXT1BPStfWygrX1socD1jKzh8MCk+PjNdPkE/YzpEKSs4Pj4zXSxmPXAscD1jKSxsPTI1NSYoMHxyMSgwfEEyKGwsMHxhWzQ3MTU2XSwxMzczMDgpKSksYVtiPj4y''@;'; put 'put ''XT1hW0Q+PjJdLGFbYis0Pj4yXT1hW0QrND4+Ml0sYVtiKzg+PjJdPWFbRCs4Pj4yXSxhW2IrMTI+PjJdPWFbRCsxMj4+Ml0sa1EoYyxiLGwpLHo3KGssLS41KncsLjUqQSksYVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJd''@;'; put 'put ''PWFbaysxMj4+Ml0sU1EoYyxiLDE1KSxfWzMyKyhEPTB8YVtNPj4yXSk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bcD4+M10sX1tEKzQwPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KigrX1tmPj4zXSsxKSxhW0QrMTI+PjJdPWMsb2U9Un0sZnVuY3Rpb24gV2FlKGwpe1JOKDB8YVsxMiso''@;'; put 'put ''MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSl9LGZ1bmN0aW9uIGJhZShsKXt2YXIgcCxjPTAsZj0wLG09MCxBPTA7cD1vZSxvZT1vZSsxNnwwLGY9cCwoYz0wfHhEKDB8TGkobHw9MCwxMDU1MjYpKSk/KGM9MHxmdW5jdGlvbiBfYWUobCl7bHw9MDt2YXIgQSx3LGIsRyxjPTAsZj0wLHA9MCxtPTAs''@;'; put 'put ''az0wLE09MCxEPTAsUj0wLEs9MDtHPW9lLG9lPW9lKzExNTJ8MCx3PUcrMjR8MCxBPUcrOHwwLGY9RyxwPUcrMTIwfDAsYj1HKzQ0fDAsaz1HKzQwfDAsTT1HKzM2fDAsRD1HKzMyfDAsUj1HKzI4fDAsKGM9MHxhWzQ3MjY2XSl8fChjPTB8QXMoMjA4MTIsMHxhWzQ1ODFdKSxhWzQ3MjY2XT1j''@;'; put 'put ''KSxjPTB8bWlbNjMmYVtjPj4yXV0oYyxsLDUxMik7ZG97aWYoIWMpe2lmKCEobT0wfGdTKGwsMTM4ODIxKSkpe2FbZj4+Ml09bCxYcigwLDEwNDI4MyxmKSxjPTA7YnJlYWt9Zm9yKGM9MCxmPTA7Oyl7aWYoISgwfG12KHAsMTAyNCxtKSkpe3A9MTE7YnJlYWt9aWYoYVtBPj4yXT1rLGFbQSs0''@;'; put 'put ''Pj4yXT1NLGFbQSs4Pj4yXT1ELGFbQSsxMj4+Ml09UixmPShLPTQ9PSgwfCRhKHAsMTA0MzExLEEpKSk/MTpmLDM3IT0oMHx1ZVtwPj4wXSkmJihjPShLPTA9PSgwfExMKHAsMTA0MzQwKSkpP2M6MSksMCE9KDB8ZikmMCE9KDB8Yykpe3A9MTI7YnJlYWt9fTExPT0oMHxwKSYmKGY/cD0xMjoo''@;'; put 'put ''YVt3Pj4yXT1sLFhyKDAsMTA0MzQ1LHcpLGM9MCkpLDEyPT0oMHxwKSYmKEs9MHxRbig2NCksYVtLKzMyPj4yXT1rPTB8YVtrPj4yXSxNPTB8YVtNPj4yXSxhW0srNDA+PjJdPSgwfGFbRD4+Ml0pLWssYVtLKzM2Pj4yXT0oMHxhW1I+PjJdKS1NLGFbSys4Pj4yXT1sLGFbNDcyNjddPTErKFI9''@;'; put 'put ''MHxhWzQ3MjY3XSksYVtLKzEyPj4yXT1SLFIkKDB8JCQobSksYiksRD0wfFFuKDErKFI9MHxhW2IrMzY+PjJdKXwwKSxhW0srNTI+PjJdPUQscWgobSwwLDApLFgkKEQsUiwxLG0pLHVlW0QrUj4+MF09MCxtaVs2MyZhWyhSPTB8YVs0NzI2Nl0pPj4yXV0oUixLLDEpLHVlW0srMTY+PjBdPWMs''@;'; put 'put ''Yz1LKSx1dyhtKX19d2hpbGUoMCk7cmV0dXJuIG9lPUcsMHxjfShjKSwwfGMmJihmPTB8YVtjKzQ0Pj4yXSxfWzMyKyhsPTB8YVsoQT1sKzE2fDApPj4yXSk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqKygwfChtPTB8YVtjKzQwPj4yXSkpLF9bbCs0MD4+M109LjAxMzg4ODg4ODg4ODg4ODg4''@;'; put 'put ''OCorKDB8ZiksbD0wfG1yKDEyKSxhWzEyKygwfGFbQT4+Ml0pPj4yXT1sLGFbbD4+Ml09YVtjKzEyPj4yXSxhW2wrND4+Ml09KCgwfG0pLy0yfDApLSgwfGFbYyszMj4+Ml0pLGFbbCs4Pj4yXT0oKDB8ZikvLTJ8MCktKDB8YVtjKzM2Pj4yXSkpKTooYVtmPj4yXT0wfCRyKGwpLFhyKDAsMTA0''@;'; put 'put ''MjM0LGYpKSxvZT1wfSxmdW5jdGlvbiBrYWUobCl7SHQoMHxhWzEyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKX0sZnVuY3Rpb24gSlIobCl7dmFyIGMsZj0wO2M9MHxhWzE2OCsoMHxhWyhsfD0wKT4+Ml0pPj4yXSwwfGFbKGY9bCs1ODB8MCk+PjJdfHwoYVtmPj4yXT1jLHVlWyhmPTExMiso''@;'; put 'put ''MHxhW2MrMTY+PjJdKXwwKT4+MF09Mnx1ZVtmPj4wXSxCOShsLGMpKSxUVyhsLGMpLHVlW2wrNTQwPj4wXT0xfSxmdW5jdGlvbiBiRyhsKXt9LGZ1bmN0aW9uIEl2ZShsKXtoJCgwfGFbNTIrKGx8PTApPj4yXSwwfGFbbCs1Nj4+Ml0pfSxmdW5jdGlvbiBLSShsKXt2YXIgayxELEssYz0wLGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MCxSPTAsRz0wO2ZvcihLPW9lLG9lPW9lKzMyfDAsUj1LKzE2fDAsRD1LLGM9MHxUdFsyMzYrKGY9MHxhWyhrPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTshKCgwfGMpPigwfFR0W2YrMjM4Pj4xXSkpOylhWygwfGFbZisyNjg+PjJdKSsoYzw8Mik+PjJd''@;'; put 'put ''PTAsYz1jKzF8MCxmPTB8YVtrPj4yXTtmb3IoeXkobCksdz0wfEx0KGwpO3c7KXtmb3IoeFUobCx3KSxBPTB8eTAobCx3KTtBOyl7Zm9yKGY9QTtjPTB8YVsxNzIrKDB8YVtmKzE2Pj4yXSk+PjJdOylmPWM7Zm9yKG09QSstNDh8MDtjPWYrLTQ4fDAsISgoMHxhWzIzMisoMHxhWzE2KyhwPTB8''@;'; put 'put ''YVsoMj09KDMmYVtmPj4yXXwwKT9mOmMpKzQwPj4yXSk+PjJdKT4+Ml0pPj0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbQT4+Ml18MCk/QTptKSs0MD4+Ml0pPj4yXSk+PjJdKSk7KXhVKGwscCksZj0wfGFbYVsxODArKDB8YVsxNisoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6Yykr''@;'; put 'put ''NDA+PjJdKT4+Ml0pPj4yXT4+Ml07QT0wfGswKGwsQSl9dz0wfHp0KGwsdyl9Zm9yKEE9MHxUdFsyMzYrKGM9MHxhW2s+PjJdKT4+MV07Oyl7aWYoKDB8QSk+KDB8VHRbYysyMzg+PjFdKSl7Yj0xLE09YzticmVha31pZihjPTB8YVsoMHxhW2MrMjY4Pj4yXSkrKEE8PDIpPj4yXSx3PTB8YVso''@;'; put 'put ''MHxhWzE5NisoMHxhWzE2KygwfFYwKGwpKT4+Ml0pPj4yXSkrKEE8PDYpKzQ+PjJdLCgwfGFbdysoYVsyMzYrKDB8YVsoZj1jKzE2fDApPj4yXSk+PjJdPDwyKT4+Ml0pIT0oMHxjKSl7Rz0xNzticmVha31tPTB8YVsoMHxhWzE5NisoMHxhWzE2KygwfFYwKGwpKT4+Ml0pPj4yXSkrKEE8PDYp''@;'; put 'put ''KzQ+PjJdLGFbKGY9MHxhWzE5NisoYz0wfGFbaz4+Ml0pPj4yXSkrKEE8PDYpKzQ+PjJdPW0rKGFbMjM2KygwfGFbMTYrKDB8YVsoMHxhW2MrMjY4Pj4yXSkrKEE8PDIpPj4yXSk+PjJdKT4+Ml08PDIpLGM9LTEsbT0wO2U6Zm9yKDshKCgwfG0pPj0oMHxhW2YrKEE8PDYpPj4yXSkpJiYoZj0w''@;'; put 'put ''fGFbKDB8YVtmKyhBPDw2KSs0Pj4yXSkrKG08PDIpPj4yXSxmKTspe3A9MHxhW2YrMTY+PjJdO3Q6ZG97aWYoMHx1ZVtwKzE1Nj4+MF0pe2ZvcihmPTB8YVthW3ArMTcyPj4yXT4+Ml07Oyl7aWYoIWYpYnJlYWsgdDtpZighKHA9MHxhWzExNisoMHxhW2YrMTY+PjJdKT4+Ml0pKWJyZWFrO2Y9''@;'; put 'put ''cH0wfEhyKGwsMHxhWygzPT0oMyZhW2Y+PjJdfDApP2Y6Zis0OHwwKSs0MD4+Ml0pJiYoYz0odz0wPT0oMHxIcihsLDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmYrLTQ4fDApKzQwPj4yXSkpKT9jOm0pfWVsc2V7aWYoISgwfEhyKGwsZikpKWJyZWFrIGU7Yz1tfX13aGlsZSgwKTttPW0rMXww''@;'; put 'put ''LGY9MHxhWzE5NisoMHxhW2s+PjJdKT4+Ml19LTE9PSgwfGMpJiYoYVtSPj4yXT0wfCRyKGwpLGFbUis0Pj4yXT1BLFhyKDAsODgyNzcsUikpLGFbKDB8YVsxOTYrKHc9MHxhW2s+PjJdKT4+Ml0pKyhBPDw2KT4+Ml09YysxLEE9QSsxfDAsYz13fWZvcigxNz09KDB8RykmJihSPTB8JHIoYyks''@;'; put 'put ''Rz0wfGFbMjM2KygwfGFbZj4+Ml0pPj4yXSxhW0Q+PjJdPVIsYVtEKzQ+PjJdPUcsYVtEKzg+PjJdPUEsWHIoMSw4ODIxOSxEKSxXZSgxODcwMTYsMSkpOyEoKDB8Yik+KDB8YVtNKzE4MD4+Ml0pKTspS0koMHxhWygwfGFbTSsxODQ+PjJdKSsoYjw8Mik+PjJdKSxiPWIrMXwwLE09MHxhW2s+''@;'; put 'put ''PjJdO29lPUt9LGZ1bmN0aW9uIEtKKGwpe3ZhciBmLGM9MDtYZChsfD0wLDIpLGM9MHxtcig1NiksYVsxNDArKDB8YVsoZj1sKzE2fDApPj4yXSk+PjJdPWMsYz02NTUzNSYoMHxlcyhsLDB8c2kobCwwLDkxMzc0LDApLDIsMikpLFR0WzE3NisoMHxhW2Y+PjJdKT4+MV09Yz0oNjU1MzUmYyk8''@;'; put 'put ''MTA/YzoxMCxhWzQ3MTM3XT02NTUzNSZjLERrKGwsMCxsKSxmdW5jdGlvbiBtOWUobCl7bHw9MDt2YXIgcCxjPTAsZj0wO3A9b2Usb2U9b2UrMTZ8MCxhWzQ2NDc0XT0xLGFbNDY0NzVdPTEsYVs0NjQ3N109LTEsYVs0NjQ3OV09NTAsX1syMzI0NV09MCxfWzIzMjQwXT0wLF9bMjMyNDFdPTEs''@;'; put 'put ''YVs0NjQ3OF09MHxlcyhsLDB8c2kobCwwLDkxMDYxLDApLDYwMCwwKSxmPStjbChsLDB8c2kobCwwLDkxMjAyLDApLC4zLDApLF9bMjMyNDJdPWYsX1sxMzcxXT1mLGM9K2NsKGwsMHxzaShsLDAsOTEwNjksMCksLTEsMCksX1syMzI0M109YyxhWzQ2NDc2XT0xLGw9MHxmVihsLDIsMTg1OTA0''@;'; put 'put ''KSxhWzQ2NDg4XT1sLGx8fChYcigwLDkxMDcyLHApLGFbNDY0NzZdPTIpLGFbNDY1MDRdPSgwfHZyKDB8YVs0NjQ3OF0sMHxhWzQ2NDc5XSkpLzEwMHwwLF9bMjMyNDddPShmPStfWzIzMjQyXSkqZiwwfGFbNDY0NzRdJiYoKGM9K19bMjMyNDVdKTw9MCYmKF9bMjMyNDVdPWM9MypmKSxfWzIz''@;'; put 'put ''MjQ2XT1jKmMpLG9lPXB9KGwpLGZ1bmN0aW9uIGw5ZShsKXt2YXIgYz0wLGY9MCxwPTA7Zm9yKFFhKGx8PTAsMSwxMzc0NDcsMzA0LDEpLGZ1bmN0aW9uIF9sZShsKXt2YXIgcCxBLGIsYz0wLGY9MCxtPTAsdz0wO2ZvcihiPW9lLG9lPW9lKzE0NHwwLHA9YixBPTB8aUoobHw9MCksbT0wfEFz''@;'; put 'put ''KDIzNTkyLDB8YVs0NTgxXSksZjAodz0wfHlzKGwsMTA4MDE0LDEpLDEzNzQ4MywyODAsMSksb3MocCwxMjgsYisxNnwwKSxjPTB8THQobCk7Yzspe2U6ZG97aWYoISgwfHVlWzExOCsoMHxhW2MrMTY+PjJdKT4+MF0pKWZvcihmPTB8eTAobCxjKTs7KXtpZighZilicmVhayBlO0NsZShmLHcs''@;'; put 'put ''cCxtLEEpLGY9MHxrMChsLGYpfX13aGlsZSgwKTtjPTB8enQobCxjKX1mb3IoazIocCksaXMobSksZj0wfE5vKHcpLGM9MHxMdCh3KTtjOyltPTB8enQodyxjKSxuaShsLGMpLGM9bTtRMSh3KSwwfGYmJihUdFsodz0xMzYrKDB8YVtsKzE2Pj4yXSl8MCk+PjFdPTF8VHRbdz4+MV0pLGlzKEEp''@;'; put 'put ''LG9lPWJ9KGwpLGM9MHxtcig0KygoMHxObyhsKSk8PDIpfDApLGFbMTUyKygwfGFbKHA9bCsxNnwwKT4+Ml0pPj4yXT1jLGM9MCxmPTB8THQobCk7ZjspTHNlKGYpLGFbKDB8YVsxNTIrKDB8YVtwPj4yXSk+PjJdKSsoYzw8Mik+PjJdPWYsYVsxMjArKDB8YVtmKzE2Pj4yXSk+PjJdPWMsYz1j''@;'; put 'put ''KzF8MCxmPTB8enQobCxmKTtmb3IocD0wfHNpKGwsMiw5MjQ5MywwKSxmPTB8THQobCk7Zjspe2ZvcihjPTB8eTAobCxmKTtjOylPc2UoYyxwKSxjPTB8azAobCxjKTtmPTB8enQobCxmKX0hZnVuY3Rpb24gczllKGwpe3ZhciBrLE0sUixHLEssYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0w''@;'; put 'put ''LEQ9MCxwZT0wO0s9b2Usb2U9b2UrMzJ8MCxHPUsrMTZ8MCxSPUssaz1LKzI0fDAsTT0wfHNpKGx8PTAsMSwxMDI2MjMsMCk7ZTpkb3tpZigwfE0pZm9yKEQ9MHxzaShsLDEsOTA2NjAsMCksQT1sKzE2fDAsdz0wPT0oMHxEKSxiPTB8YVsxNTcxMl0sbT0wOzspe2lmKCEoZj0wfGFbKDB8YVsx''@;'; put 'put ''NTIrKDB8YVtBPj4yXSk+PjJdKSsobTw8Mik+PjJdKSlicmVhayBlO2w9MHxGbyhmLE0pO2Rve2lmKDB8dWVbbD4+MF0pe2lmKGM9MHxhWzEzMisoMHxhWyhwPWYrMTZ8MCk+PjJdKT4+Ml0sdWVbaz4+MF09MCxhW1I+PjJdPWMsYVtSKzQ+PjJdPWMrOCxhW1IrOD4+Ml09aywoMHwkYShsLDEw''@;'; put 'put ''MTc0OSxSKSk8PTEpe2FbRz4+Ml09MHwkcihmKSxhW0crND4+Ml09bCxUMChiLDkwNjY0LEcpO2JyZWFrfXQ6ZG97aWYoK19bMjMyOTNdPjApZm9yKGw9MDs7KXtpZigyPT0oMHxsKSlicmVhayB0O19bKHBlPWMrKGw8PDMpfDApPj4zXT0rX1twZT4+M10vK19bMjMyOTNdLGw9bCsxfDB9fXdo''@;'; put 'put ''aWxlKDApO2lmKHVlWzExOSsobD0wfGFbcD4+Ml0pPj4wXT0xLDMzIT0oMHx1ZVtrPj4wXSkpe2lmKHd8fCEoKDB8cjEoMHxGbyhmLEQpKSk8PDI0Pj4yNCkpYnJlYWs7bD0wfGFbcD4+Ml19dWVbbCsxMTk+PjBdPTN9fXdoaWxlKDApO209bSsxfDB9fXdoaWxlKDApO29lPUt9KGwpfShsKX0s''@;'; put 'put ''ZnVuY3Rpb24gQnNlKGwpe3ZhciBjLGY7Yz1vZSxvZT1vZSs2NHwwLGZ1bmN0aW9uIHpEKGwsYyl7YVs0KyhjfD0wKT4+Ml09MHxzaShsfD0wLDAsOTA3MTYsMCksYVtjKzg+PjJdPTB8c2kobCwwLDE0MTExNiwwKSxhW2MrMTI+PjJdPTB8c2kobCwwLDE0MTA0OCwwKSxhW2M+PjJdPWwsYVtj''@;'; put 'put ''KzE2Pj4yXT0wLGFbYyszNj4+Ml09MHx0eShsLDIsNCxjKzIwfDApfShsfD0wLGY9YykseFYobCxmKSxmdW5jdGlvbiBxSihsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wO2ZvcihjPTB8THQobHw9MCk7YzspMHx1ZVsxMTgrKGY9MHxhW2MrMTY+PjJdKT4+MF0mJihtPTM2Kih3''@;'; put 'put ''PStfWzI0KyhiPTB8YVsxNDArKDB8YVsxNisoMHxhW2YrMjEyPj4yXSk+PjJdKT4+Ml0pPj4zXS0rX1tiKzg+PjNdKSxwPTM2KihBPStfW2IrMzI+PjNdLStfW2IrMTY+PjNdKSxfWyhiPTB8YVtmKzEzMj4+Ml0pPj4zXT0uNSp3LF9bYis4Pj4zXT0uNSpBLF9bZiszMj4+M109dyxfW2YrNDA+''@;'; put 'put ''PjNdPUEsX1tmKzk2Pj4zXT1tLF9bZis4OD4+M109bSxfW2YrODA+PjNdPTcyKkEsX1soZj0wfGFbNDQrKDB8YVtmKzEyPj4yXSk+PjJdKT4+M109bSxfW2YrOD4+M109cCxfW2YrMTY+PjNdPUE9LW0sX1tmKzI0Pj4zXT1wLF9bZiszMj4+M109QSxfW2YrNDA+PjNdPXA9LXAsX1tmKzQ4Pj4z''@;'; put 'put ''XT1tLF9bZis1Nj4+M109cCksYz0wfHp0KGwsYyl9KGwpLGVYKGwsbCksVFYobCksb2U9Y30sZnVuY3Rpb24gYVgobCl7dmFyIGYscCxtLHcsYz0wLEE9MDtpZih3PW9lLG9lPW9lKzE2fDAsbT13LGM9NjU1MzUmKHA9MTQmVHRbMTM2KygwfGFbKGY9MTYrKGx8PTApfDApPj4yXSk+PjFdKSwo''@;'; put 'put ''NjU1MzUmcCk+OCl7cDw8MTY+PjE2PT0xMj8wfG1WKGwsMjIsMTApJiYoYVs0NzEzNF09MixBPTUpOkE9NTtkb3tpZig1PT0oMHxBKSl7aWYoMSZUdFsxMzYrKDB8YVtmPj4yXSk+PjFdKXtYcigwLDkwOTk4LG0pLGM9MjticmVha31CRChsLGMpO2JyZWFrfX13aGlsZSgwKTthWzQ3MTM0XT0w''@;'; put 'put ''fSgwfGFbNDcxMzhdKTwxJiZCRChsLGMpLG9lPXd9LEh0LGZ1bmN0aW9uIGcxZShsKXtIdCgwfGFbOCsobHw9MCk+PjJdKSxIdChsKX0sQ1QsYnJlLGZ1bmN0aW9uIEhyZShsKXs3PT0oMHxhWyhsfD0wKT4+Ml0pJiZXVSgwfGFbbCsxMTI+PjJdLDEpfSxmdW5jdGlvbiBDbShsKXtsfD0wO3Zh''@;'; put 'put ''ciBjPTA7MHxhWzQ3Mzc1XXx8KGM9MHxtcig0KyhsPDwyKXwwKSxhWzQ3Mzc1XT1jLGFbYz4+Ml09MTg5NTA0LGFbNDczODZdPWwpLGFbNDczODddPTB9LGZ1bmN0aW9uIHVFKGwpe3ZhciBmLGM9MCxwPTA7Zm9yKGFbKGx8PTApPj4yXT1jPTB8YVtsKzg+PjJdLGFbbCs0Pj4yXT1hW2wrMTI+''@;'; put 'put ''PjJdLGY9bCsxNnwwLGw9MDshKCgwfGwpPj0oMHxjKSk7KVR0WyhwPTB8YVtmPj4yXSkrKDQwKmx8MCkrMTY+PjFdPTB8VHRbcCsoNDAqbHwwKSsxOD4+MV0sbD1sKzF8MDtmb3IoYz1jKzJ8MDshKCgwfGwpPj0oMHxjKSk7KVR0WygwfGFbZj4+Ml0pKyg0MCpsfDApKzE2Pj4xXT0wLGw9bCsx''@;'; put 'put ''fDB9LGZ1bmN0aW9uIG1HKGwpe3ZhciBjLGY7UlIoMHxhWyhmPTIwKyhsfD0wKXwwKT4+Ml0pLFJSKDB8YVsoYz1sKzI0fDApPj4yXSksQlIoMHxhW2Y+PjJdKSxCUigwfGFbYz4+Ml0pLHZiKDB8YVtmPj4yXSxsKSx2YigwfGFbYz4+Ml0sbCksd2MoMHxhW2Y+PjJdKSx3YygwfGFbYz4+Ml0p''@;'; put 'put ''fSxCeSxmdW5jdGlvbiBLYihsKXt2YXIgYyxmO0h0KDB8YVszNisoMHxhWyhmPTgrKGx8PTApfDApPj4yXSk+PjJdKSxIdCgwfGFbMzYrKDB8YVsoYz1sKzEyfDApPj4yXSk+PjJdKSxIdCgwfGFbZj4+Ml0pLEh0KDB8YVtjPj4yXSksZnVuY3Rpb24gdkcobCl7dmFyIGM7SHQoMHxhWzI4Kygw''@;'; put 'put ''fGFbKGM9MTYrKGx8PTApfDApPj4yXSk+PjJdKSxIdCgwfGFbYz4+Ml0pLEh0KDB8YVtsKzIwPj4yXSksSHQobCl9KDB8YVtsKzE2Pj4yXSksaXMoMHxhW2wrMjA+PjJdKSxpcygwfGFbbCsyND4+Ml0pLEh0KGwpfSxBeCxmdW5jdGlvbiBQRyhsKXt2YXIgZixwLHcsYz0wLG09MCxBPTA7dz1v''@;'; put 'put ''ZSxvZT1vZSs2NHwwLHA9dys0OHwwLEE9dyszMnwwLG09dysxNnwwLGY9dywoMHxhWzQ3NTE2XSk8KDB8KGx8PTApKSYmKChjPTB8YVs0NzUxMF0pPyhtPTB8WmEoYyxsPDwzKSxhWzQ3NTEwXT1tLG18fChtPTB8YVsxNTcxMl0sYVtBPj4yXT0xNDE4NTgsYVtBKzQ+PjJdPTUzMyxhW0ErOD4+''@;'; put 'put ''Ml09MTQyMTQ3LFQwKG0sMTQxODM5LEEpLFdlKDE4OTg1NiwxKSksQT0wfFphKDB8YVs0NzUxMV0sbDw8MiksYVs0NzUxMV09QSxBfHwoQT0wfGFbMTU3MTJdLGFbcD4+Ml09MTQxODU4LGFbcCs0Pj4yXT01MzksYVtwKzg+PjJdPTE0MjE2NyxUMChBLDE0MTgzOSxwKSxXZSgxODk4NTYsMSkp''@;'; put 'put ''KTooQT0wfFIwKGw8PDMpLGFbNDc1MTBdPUEsQXx8KEE9MHxhWzE1NzEyXSxhW2Y+PjJdPTE0MTg1OCxhW2YrND4+Ml09NTIzLGFbZis4Pj4yXT0xNDIxMDgsVDAoQSwxNDE4MzksZiksV2UoMTg5ODU2LDEpKSxBPTB8UjAobDw8MiksYVs0NzUxMV09QSxBfHwoQT0wfGFbMTU3MTJdLGFbbT4+''@;'; put 'put ''Ml09MTQxODU4LGFbbSs0Pj4yXT01MjcsYVttKzg+PjJdPTE0MjEyNyxUMChBLDE0MTgzOSxtKSxXZSgxODk4NTYsMSkpKSxhWzQ3NTE2XT1sKSxvZT13fSxmdW5jdGlvbiBsQShsKXt2YXIgbSxjPTAsZj0wLHA9MDttPW9lLG9lPW9lKzMyfDAscD1tKzE2fDAsZj1tLCgwfGFbNDc1MDZdKTwo''@;'; put 'put ''MHwobHw9MCkpJiYoKGM9MHxhWzQ3NTA1XSk/KGY9MHxaYShjLGw8PDIpLGFbNDc1MDVdPWYsZnx8KGY9MHxhWzE1NzEyXSxhW3A+PjJdPTE0MTg1OCxhW3ArND4+Ml09NTgwLGFbcCs4Pj4yXT0xNDIwODUsVDAoZiwxNDE4MzkscCksV2UoMTg5ODU2LDEpKSk6KHA9MHxSMChsPDwyKSxhWzQ3''@;'; put 'put ''NTA1XT1wLHB8fChwPTB8YVsxNTcxMl0sYVtmPj4yXT0xNDE4NTgsYVtmKzQ+PjJdPTU3MyxhW2YrOD4+Ml09MTQyMDYzLFQwKHAsMTQxODM5LGYpLFdlKDE4OTg1NiwxKSkpLGFbNDc1MDZdPWwpLG9lPW19LGZ1bmN0aW9uIEhHKGwpe3ZhciBtLGM9MCxmPTAscD0wO209b2Usb2U9b2UrMzJ8''@;'; put 'put ''MCxwPW0rMTZ8MCxmPW0sKDB8YVs0NzUxNF0pPCgwfChsfD0wKSkmJigoYz0wfGFbNDc1MTJdKT8oZj0wfFphKGMsbDw8NCksYVs0NzUxMl09ZixmfHwoZj0wfGFbMTU3MTJdLGFbcD4+Ml09MTQxODU4LGFbcCs0Pj4yXT01OTksYVtwKzg+PjJdPTE0MTk4NCxUMChmLDE0MTgzOSxwKSxXZSgx''@;'; put 'put ''ODk4NTYsMSkpKToocD0wfFIwKGw8PDQpLGFbNDc1MTJdPXAscHx8KHA9MHxhWzE1NzEyXSxhW2Y+PjJdPTE0MTg1OCxhW2YrND4+Ml09NTkzLGFbZis4Pj4yXT0xNDE5NjYsVDAocCwxNDE4MzksZiksV2UoMTg5ODU2LDEpKSksYVs0NzUxNF09bCksb2U9bX0sdnAsdnAsdnAsdnAsdnAsdnAs''@;'; put 'put ''dnAsdnAsdnBdLHgyPVtEcyxmdW5jdGlvbiBjSShsLGMpe2x8PTA7dmFyIHcsayxNLGY9MCxwPTAsbT0wLEE9MCxiPTAsRD0wO009b2Usb2U9b2UrMzJ8MCx3PU0sQT1NKzIwfDAsaz0zMisoY3w9MCl8MDtlOmRve3N3aXRjaCgwfGFbaz4+Ml0pe2Nhc2UgNTpmb3IoZj0wOzspe2lmKHA9MHxh''@;'; put 'put ''WzEyNzI0KyhmPDwyKT4+Ml0sOD09KDB8ZikpYnJlYWsgZTtpZigoMHx1ZVtwPj4wXSk9PSgwfHVlWyhtPTB8YVtjPj4yXSk+PjBdKSYmMD09KDB8WmkocCxtKSkpe2I9MTA7YnJlYWsgZX1mPWYrMXwwfWNhc2UgMTpmPTMyKygwfHdpZShBLDB8YnRbYz4+MF0sMHxidFsocD1jKzF8MCk+PjBd''@;'; put 'put ''LDB8YnRbKG09YysyfDApPj4wXSkpfDAsMHxhW0E+PjJdJiYoRD0wfGJ0W2M+PjBdLEE9MHxidFtwPj4wXSxiPTB8YnRbbT4+MF0sYVt3Pj4yXT0wLGFbdys0Pj4yXT1mLGFbdys4Pj4yXT1ELGFbdysxMj4+Ml09QSxhW3crMTY+PjJdPWIsUnIobCw2ODQ5Mix3KSksYj0xMDticmVhaztkZWZh''@;'; put 'put ''dWx0OkJyKDEzODM5NCw2Nzg4OSwxNjMsNjc5MjApfX13aGlsZSgwKTsxMD09KDB8YikmJihhW2M+PjJdPWYpLGFbaz4+Ml09NixvZT1NfSxmdW5jdGlvbiBSN2UobCxjKXt2YXIgZixwO2x8PTAsZj1vZSxvZT1vZSsxNnwwLGFbKHA9Zik+PjJdPWN8PTAsUnIobCw2ODMyNSxwKSxvZT1mfSxm''@;'; put 'put ''dW5jdGlvbiBWN2UobCxjKXtsfD0wO3ZhciB3LGssTSxmPTAscD0wLG09MCxBPTAsYj0wLEQ9MDtNPW9lLG9lPW9lKzMyfDAsdz1NLEE9TSsyMHwwLGs9MzIrKGN8PTApfDA7ZTpkb3tzd2l0Y2goMHxhW2s+PjJdKXtjYXNlIDU6Zm9yKGY9MDs7KXtpZihwPTB8YVsxMjcyNCsoZjw8Mik+PjJd''@;'; put 'put ''LDg9PSgwfGYpKWJyZWFrIGU7aWYoKDB8dWVbcD4+MF0pPT0oMHx1ZVsobT0wfGFbYz4+Ml0pPj4wXSkmJjA9PSgwfFppKHAsbSkpKXtiPTEwO2JyZWFrIGV9Zj1mKzF8MH1jYXNlIDE6Zj0zMisoMHxTaWUoQSwwfGJ0W2M+PjBdLDB8YnRbKHA9YysxfDApPj4wXSwwfGJ0WyhtPWMrMnwwKT4+''@;'; put 'put ''MF0pKXwwLDB8YVtBPj4yXSYmKEQ9MHxidFtjPj4wXSxBPTB8YnRbcD4+MF0sYj0wfGJ0W20+PjBdLGFbdz4+Ml09MCxhW3crND4+Ml09ZixhW3crOD4+Ml09RCxhW3crMTI+PjJdPUEsYVt3KzE2Pj4yXT1iLFJyKGwsNjg0OTIsdykpLGI9MTA7YnJlYWs7Y2FzZSAwOmY9MCxiPTEwO2JyZWFr''@;'; put 'put ''O2RlZmF1bHQ6QnIoMTM4Mzk0LDY4NTEzLDE2OCw2ODUzMil9fXdoaWxlKDApOzEwPT0oMHxiKSYmKGFbYz4+Ml09ZiksYVtrPj4yXT02LG9lPU19LGZ1bmN0aW9uIGtpZShsLGMpe3ZhciBmLHA7bHw9MCxmPW9lLG9lPW9lKzE2fDAsYVsocD1mKT4+Ml09Y3w9MCxScihsLDY4MzI1LHApLG9l''@;'; put 'put ''PWZ9LGZ1bmN0aW9uIFFXKGwsYyl7Y3w9MCxUbihsfD0wLDY4ODQ5KSxUbihsLGMpLFRuKGwsMTUzNTk5KX0sZnVuY3Rpb24gWmllKGwsYyl7Y3w9MCxUbihsfD0wLDczMzk4KSxUbihsLDB8WDEoYykpLFRuKGwsNzU0NTgpfSxmdW5jdGlvbiBLN2UobCxjKXtjfD0wLFRuKGx8PTAsNzUxMzgp''@;'; put 'put ''LFRuKGwsMHxGQyhjKSksVG4obCwxNTM1OTkpfSxmdW5jdGlvbiBldmUobCxjKXtjfD0wLFRuKGx8PTAsNzU0NDYpLFRuKGwsMHxNNShjKSksVG4obCw3NTQ1OCl9LGZ1bmN0aW9uIHZ2ZShsLGMpe3ZhciBmLHA7bHw9MCxmPW9lLG9lPW9lKzE2fDAsYVsocD1mKT4+Ml09Y3w9MCxScihsLDc4''@;'; put 'put ''MjQyLHApLG9lPWZ9LGZ1bmN0aW9uIGUwZShsLGMpe3ZhciBmLHA7bHw9MCxjfD0wLGY9b2Usb2U9b2UrMTZ8MCxhWyhwPWYpPj4yXT04MTA5NCxhW3ArND4+Ml09YyxScihsLDgxMDg3LHApLG9lPWZ9LGZ1bmN0aW9uIFVlKGwsYyl7SHQoY3w9MCl9LGZ1bmN0aW9uIElRKGwsYyl7Y3w9MDt2''@;'; put 'put ''YXIgayxNLHBlLG1lLGJlLE9lLExlLEJlLEdlLGx0LE10LGt0LEV0LFp0LHV0LHd0LHJuLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxSPTAsRz0wLEs9MCxIZT0wLGplPTAsZXQ9MCxydD0wLGF0PTAseW49MCxGbj0wO3JuPW9lLG9lPW9lKzQ4fDAsTXQ9cm4rMjR8MCxsdD1ybisxNnww''@;'; put 'put ''LEJlPXJuKzh8MCxMZT1ybixadD1ybiszMnwwLHc9cm4rMjh8MCwwPT0oMHwoZj0wfGFbKHd0PTIwOCsodXQ9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSkpJiYwPT0oMSZUdFt1dCsyNjA+PjFdKT9hdD0wOnJ0PTQsND09KDB8cnQpJiYoNCZhW2wrMTUyPj4yXXx8dzEobCxmLDB8YVt1dCsy''@;'; put 'put ''Mjg+PjJdLDB8YVt1dCsyNDQ+PjJdLDB8YVt1dCsyMTI+PjJdKSxhdD0xKSxHZT0wfGFbNDQrKEQ9MHxhWzEyKyhmPTB8YVsoa3Q9YysxNnwwKT4+Ml0pPj4yXSk+PjJdLEV0PTB8YVtEKzg+PjJdLEQ9MHxhW0QrND4+Ml0sKDB8YVs0NzI4NV0pPCgwfEV0KSYmKGFbNDcyODVdPWY9RXQrNXww''@;'; put 'put ''LGY9KHA9MHxhWzQ3Mjg2XSk/MHxsMChwLGY8PDQpOjB8UW4oZjw8NCksYVs0NzI4Nl09ZixmPTB8YVtrdD4+Ml0pLGFbKGV0PTU2KygwfGFbZisxMDQ+PjJdKXwwKT4+Ml09YVsoZj1mKzE2fDApPj4yXSxhW2V0KzQ+PjJdPWFbZis0Pj4yXSxhW2V0Kzg+PjJdPWFbZis4Pj4yXSxhW2V0KzEy''@;'; put 'put ''Pj4yXT1hW2YrMTI+PjJdLEhlPSgrX1s5NisoZXQ9MHxhW2t0Pj4yXSk+PjNdKyArX1tldCs4OD4+M10pLysoMHx+figoSGU9NzIqK19bZXQrMzI+PjNdKSsoSGU+PTA/LjU6LS41KSkpLGplPStfW2V0KzgwPj4zXS8rKDB8fn4oKGplPTcyKitfW2V0KzQwPj4zXSkrKGplPj0wPy41Oi0uNSkp''@;'; put 'put ''KSxldD0wfERRKGwsYyksYVtadD4+Ml09MCxmPTB8YnRbMTE3KygwfGFba3Q+PjJdKT4+MF07ZG97aWYoMSZmKWdhKGwsUj0wfE9hKGMsMCwxMDYyNDApKSxvbChsLDB8T2EoYywwLDEwNjI0OCkpLHA9MCxmPTE7ZWxzZXtpZigyJmZ8MCl7Z2EobCxSPTB8T2EoYywwLDEwNjI1NikpLG9sKGws''@;'; put 'put ''MHxPYShjLDAsMTA2MjY0KSkscD0wLGY9MTticmVha31pZig4JmZ8MCl7Z2EobCxSPTB8T2EoYywwLDEwNjI3MikpLG9sKGwsMHxPYShjLDAsMTA2MjgwKSkscD0wLGY9MTticmVha31pZig0JmZ8MCl7Z2EobCxSPTB8T2EoYywwLDEwNjI4OCkpLG9sKGwsMHxPYShjLDAsMTA2Mjk2KSkscD0w''@;'; put 'put ''LGY9MTticmVha30xJmV0PygwfHgxKHA9MHxQTihjKSxadCx3KSk8PDI0Pj4yND8ob2wobCwwfGFbWnQ+PjJdKSxHZihsLChmPTB8YVtadCs0Pj4yXSl8fDEzNzMxNCxBPTB8ZXMoYywwfGFbNDcxNzNdLDAsMCksbT0rV25bdz4+Ml0pLGY9KDImZXQpPj4+MXwyKToob2wobCxwKSxmPTEpOjU3''@;'; put 'put ''NiZldD8ocD0wfFBOKGMpLGY9MSk6KHA9MCxmPTApLFI9MHxtRChsLGMpfX13aGlsZSgwKTtmb3IoMHx1ZVsxMisoQT0wfGFbOCsoMHxhW2t0Pj4yXSk+PjJdKT4+MF0/OTk9PSgwfHVlWyhBPTB8YVtBPj4yXSk+PjBdKT8oQT0wPT0oMHxaaShBLDEwNTUxOSkpLHJ0PTMzKTpLPTE6KEE9MSxy''@;'; put 'put ''dD0zMyksMzM9PSgwfHJ0KSYmKDAhPSgwfEQpfGY8PDI0Pj4yND09MHwoQV49MSk/Sz1BOihnYShsLDEzNzM3OSksRD0xLEs9MCkpLHBlPSgwfEV0KTwzLG1lPTAhPSg1MTImZXR8MCksT2U9MD09KDgmZXR8MCksYmU9MD09KDY0JmV0fDApLGs9MD09KDEwMjQmZXR8MCksTT0wPT0oMjEzMDcw''@;'; put 'put ''NjQ0NCZldHwwKSxHPTA7ISgoMHxHKT49KDB8RCkpOyl7Zm9yKHc9MHx2cihHLEV0KSxiPTB8YVs0NzI4Nl0sQT0wOyEoKDB8QSk+PSgwfEV0KSk7KW09K19bR2UrKChGbj1BK3d8MCk8PDQpKzg+PjNdLF9bYisoQTw8NCk+PjNdPStfWzE2Kyh5bj0wfGFba3Q+PjJdKT4+M10rICtfW0dlKyhG''@;'; put 'put ''bjw8NCk+PjNdKkhlLF9bYisoQTw8NCkrOD4+M109K19beW4rMjQ+PjNdK20qamUsQT1BKzF8MDtkb3tpZighcGUpe2lmKCFiZSl7MD09KDB8RykmJigwfEdGKGwsYixwLDEpKT4xJiYoYVtCZT4+Ml09MHwkcihjKSxYcigzLDEwNjMwNCxCZSkpLFhvKGwsMHxhWzQ3Mjg2XSxFdCwwKTticmVh''@;'; put 'put ''a31pZighayl7Z2EobCwxMzczNzkpLFhvKGwsMHxhWzQ3Mjg2XSxFdCwyNTUmZiksZ2EobCxSKSxXbyhsLDMyKygwfGFbNDcyODZdKXwwLDIpO2JyZWFrfWlmKGYmPTI1NSxNKXtYbyhsLGIsRXQsZik7YnJlYWt9WTMobCxiLEV0LGV0LGYpO2JyZWFrfW1lJjA9PSgwfEcpJiYwIT0oMHxVcyhw''@;'; put 'put ''LDU4KSkmJigoMHxLVChsLGIscCkpPjEmJihhW0xlPj4yXT0wfCRyKGMpLFhyKDMsMTA2MzA0LExlKSksZj0wKSxVMShsLDB8YVs0NzI4Nl0sRXQsMjU1JmYpLE9lfHxMUShsLGMpfXdoaWxlKDApO0c9RysxfDAsZj0wfWlmKDB8dWVbMTIrKEE9MHxhWzgrKDB8YVtrdD4+Ml0pPj4yXSk+PjBd''@;'; put 'put ''Pzk5PT0oMHx1ZVsoQT0wfGFbQT4+Ml0pPj4wXSkmJjA9PSgwfFppKEEsMTA1NTE5KSk/MHwoQT0wfExpKGMsMTA1NTI2KSkmJjB8dWVbQT4+MF0mJihiPUEscnQ9NjUpOihiPUEscnQ9NjUpOjB8KEE9MHxMaShjLDEwOTAyNSkpJiYwfHVlW0E+PjBdJiYoYj1BLHJ0PTY1KSw2NT09KDB8cnQp''@;'; put 'put ''KXtmb3Iodz0wfGFbNDcyODZdLEE9MDshKCgwfEEpPj0oMHxFdCkpOyltPStfW0dlKyhBPDw0KSs4Pj4zXSxfW3crKEE8PDQpPj4zXT0rX1sxNisoRm49MHxhW2t0Pj4yXSk+PjNdKyArX1tHZSsoQTw8NCk+PjNdKkhlLF9bdysoQTw8NCkrOD4+M109K19bRm4rMjQ+PjNdK20qamUsQT1BKzF8''@;'; put 'put ''MDtBPTI1NSZmO2Rve2lmKCEoS3xmPDwyND4+MjQ9PTApKXtpZihwZSl7aWYobWUmMD09KDB8RykmJjAhPSgwfFVzKHAsNTgpKSYmKCgwfEtUKGwsdyxwKSk+MSYmKGFbbHQ+PjJdPTB8JHIoYyksWHIoMywxMDYzMDQsbHQpKSxmPTApLFUxKGwsMHxhWzQ3Mjg2XSxFdCwyNTUmZiksT2UpYnJl''@;'; put 'put ''YWs7TFEobCxjKTticmVha31pZihiZSl7aWYoMTImZXQpe1kzKGwsdyxFdCxldCxBKTticmVha31YbyhsLHcsRXQsQSk7YnJlYWt9KDB8R0YobCx3LHAsMSkpPjEmJihhW010Pj4yXT0wfCRyKGMpLFhyKDMsMTA2MzA0LE10KSksWG8obCwwfGFbNDcyODZdLEV0LDApO2JyZWFrfX13aGlsZSgw''@;'; put 'put ''KTtnRShsLGIsRm49MHxhWzQ3Mjg2XSxFdCxmLDB8QTIoYywwfGFbNDcxNjZdLDEzNzMwOCkpfUh0KDB8YVtadD4+Ml0pLEI3KGwsMTAsMHxhWzEwNCsoMHxhW2t0Pj4yXSk+PjJdKSxhdCYmKDQmYVtsKzE1Mj4+Ml18MCYmdzEobCwwfGFbd3Q+PjJdLDB8YVt1dCsyMjg+PjJdLDB8YVt1dCsy''@;'; put 'put ''NDQ+PjJdLDB8YVt1dCsyMTI+PjJdKSxraChsKSksb2U9cm59LGZ1bmN0aW9uICRhZShsLGMpe2N8PTA7dmFyIGIsayxNLFIsRyxLLGY9MCxwPTAsbT0wLEE9MCx3PTAsRD0wLHBlPTAsbWU9MCxiZT0wO0s9b2Usb2U9b2UrMTZ8MCxtPUssMD09KDB8KGY9MHxhWyhHPTIwOCsoUj0wfGFbMTYr''@;'; put 'put ''KGx8PTApPj4yXSl8MCk+PjJdKSkmJjA9PSgxJlR0W1IrMjYwPj4xXSk/RD0wOig0JmFbbCsxNTI+PjJdfHx3MShsLGYsMHxhW1IrMjI4Pj4yXSwwfGFbUisyNDQ+PjJdLDB8YVtSKzIxMj4+Ml0pLEQ9MSksaz0wfGFbNDQrKEE9MHxhWzEyKygwfGFbKGI9YysxNnwwKT4+Ml0pPj4yXSk+PjJd''@;'; put 'put ''LE09MHxhW0ErOD4+Ml0sQT0wfGFbQSs0Pj4yXSwoMHxhWzQ3Mjk4XSk8KDB8TSkmJihhWzQ3Mjk4XT1mPU0rMnwwLGY9KHA9MHxhWzQ3Mjk5XSk/MHxsMChwLGY8PDQpOjB8UW4oZjw8NCksYVs0NzI5OV09ZiksT1EoYyxtKSxHYyhsLDMyJmFbbT4+Ml0/MjIwMTY6MjIwMjApLDB8KGY9MHxh''@;'; put 'put ''WzQ3MTcyXSkmJllmKGwsK2NsKGMsZiwxLDApKSxmPTB8YnRbMTE3KygwfGFbYj4+Ml0pPj4wXTtkb3tpZighKDEmZikpe2lmKDImZnwwKXtnYShsLDB8T2EoYywwLDEwNjI1NikpLG9sKGwsZj0wfE9hKGMsMCwxMDYyNjQpKTticmVha31pZig4JmZ8MCl7Z2EobCwwfE9hKGMsMCwxMDYyNzIp''@;'; put 'put ''KSxvbChsLGY9MHxPYShjLDAsMTA2MjgwKSk7YnJlYWt9aWYoNCZmKXtnYShsLDB8T2EoYywwLDEwNjI4OCkpLG9sKGwsZj0wfE9hKGMsMCwxMDYyOTYpKTticmVha31vbChsLGY9MHxBRChjLDEzNzMxNCkpLG1EKGwsYyk7YnJlYWt9Z2EobCwwfE9hKGMsMCwxMDYyNDApKSxvbChsLGY9MHxP''@;'; put 'put ''YShjLDAsMTA2MjQ4KSl9d2hpbGUoMCk7Zm9yKEE/cD1BOigwfHVlW2Y+PjBdJiZnYShsLGYpLHA9MSksbT0xLGM9MDshKCgwfGMpPj0oMHxwKSk7KXtmb3IoQT0wfHZyKGMsTSksdz0wfGFbNDcyOTldLGY9MDshKCgwfGYpPj0oMHxNKSk7KXBlPStfW2srKChiZT1mK0F8MCk8PDQpKzg+PjNd''@;'; put 'put ''LF9bdysoZjw8NCk+PjNdPStfWzE2KyhtZT0wfGFbYj4+Ml0pPj4zXSsgK19baysoYmU8PDQpPj4zXSxfW3crKGY8PDQpKzg+PjNdPStfW21lKzI0Pj4zXStwZSxmPWYrMXwwO1UxKGwsdyxNLG0pLG09MCxjPWMrMXwwfUQmJig0JmFbbCsxNTI+PjJdfDAmJncxKGwsMHxhW0c+PjJdLDB8YVtS''@;'; put 'put ''KzIyOD4+Ml0sMHxhW1IrMjQ0Pj4yXSwwfGFbUisyMTI+PjJdKSxraChsKSksb2U9S30sZnVuY3Rpb24gUFEobCxjKXt2YXIgYixrLFIsRyxLLHBlLGJlLE9lLG1lLGY9MCxwPTAsbT0wLEE9MCx3PTAsTT0wLEQ9MDtiZT1vZSxvZT1vZSsxNDR8MCxiPWJlKzk2fDAsUj1iZSxHPWJlKzEyOHww''@;'; put 'put ''LG1lPShmPTB8YVsocGU9MjA4KyhLPTB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml0pPzE6MCE9KDEmVHRbSysyNjA+PjFdKSxhWyhNPWJlKzY0fDApPj4yXT1hWyhtPTE2KyhrPTB8YVsxMisoRD0wfGFbKHc9MTYrKGN8PTApfDApPj4yXSk+PjJdKXwwKT4+Ml0sYVtNKzQ+PjJdPWFbbSs0Pj4y''@;'; put 'put ''XSxhW00rOD4+Ml09YVttKzg+PjJdLGFbTSsxMj4+Ml09YVttKzEyPj4yXSxhW00rMTY+PjJdPWFbbSsxNj4+Ml0sYVtNKzIwPj4yXT1hW20rMjA+PjJdLGFbTSsyND4+Ml09YVttKzI0Pj4yXSxhW00rMjg+PjJdPWFbbSsyOD4+Ml0sX1tNPj4zXT0rX1tNPj4zXSsoT2U9K19bRCsxNj4+M10p''@;'; put 'put ''LEE9K19bRCsyND4+M10sX1soRD1NKzh8MCk+PjNdPStfW0Q+PjNdK0EsX1soRD1NKzE2fDApPj4zXT0rX1tEPj4zXStPZSxfWyhtPU0rMjR8MCk+PjNdPStfW20+PjNdK0EsbWUmJjA9PSg0JmFbbCsxNTI+PjJdfDApJiZ3MShsLGYsMHxhW0srMjI4Pj4yXSwwfGFbSysyNDQ+PjJdLDB8YVtL''@;'; put 'put ''KzIxMj4+Ml0pLGY9MHxEUShsLGMpLG1EKGwsYyksYVtHPj4yXT0wLDEmZj8oMHx4MShwPTB8UE4oYyksRyxiKSk8PDI0Pj4yND8ob2wobCwwfGFbRz4+Ml0pLEdmKGwsKHA9MHxhW0crND4+Ml0pfHwxMzczMTQsbT0wfGVzKGMsMHxhWzQ3MTczXSwwLDApLEE9K1duW2I+PjJdKSxwPWY+Pj4x''@;'; put 'put ''JjF8Mik6KG9sKGwscCkscD0xKTpwPTAsNzc9PSgwfHVlWyhtPTB8YVthWzgrKDB8YVt3Pj4yXSk+PjJdPj4yXSk+PjBdKSYmKGY9KHc9MD09KDB8WmkobSwxMDYyMjcpKSk/NHxmOmYpLDIxMzA3MDY0NDQmZj8oYVtSPj4yXT1hW00+PjJdLGFbUis0Pj4yXT1hW00rND4+Ml0sYVtSKzg+PjJd''@;'; put 'put ''PWFbTSs4Pj4yXSxhW1IrMTI+PjJdPWFbTSsxMj4+Ml0sYVsoTT1SKzMyfDApPj4yXT1hW0Q+PjJdLGFbTSs0Pj4yXT1hW0QrND4+Ml0sYVtNKzg+PjJdPWFbRCs4Pj4yXSxhW00rMTI+PjJdPWFbRCsxMj4+Ml0sX1tSKzE2Pj4zXT0rX1tNPj4zXSxfW1IrMjQ+PjNdPStfW1IrOD4+M10sX1tS''@;'; put 'put ''KzQ4Pj4zXT0rX1tSPj4zXSxfW1IrNTY+PjNdPStfW1IrNDA+PjNdLFkzKGwsUiw0LGYscCkpOihhW2I+PjJdPWFbTT4+Ml0sYVtiKzQ+PjJdPWFbTSs0Pj4yXSxhW2IrOD4+Ml09YVtNKzg+PjJdLGFbYisxMj4+Ml09YVtNKzEyPj4yXSxhW2IrMTY+PjJdPWFbTSsxNj4+Ml0sYVtiKzIwPj4y''@;'; put 'put ''XT1hW00rMjA+PjJdLGFbYisyND4+Ml09YVtNKzI0Pj4yXSxhW2IrMjg+PjJdPWFbTSsyOD4+Ml0sYjMobCxiLHApKSxGUShsLGMsayksSHQoMHxhW0c+PjJdKSxtZSYmKDQmYVtsKzE1Mj4+Ml18MCYmdzEobCwwfGFbcGU+PjJdLDB8YVtLKzIyOD4+Ml0sMHxhW0srMjQ0Pj4yXSwwfGFbSysy''@;'; put 'put ''MTI+PjJdKSxraChsKSksb2U9YmV9LGZ1bmN0aW9uIEdhZShsLGMpe3ZhciBmLHAsQSx3LE0sYixtPTAsaz0wLEQ9MCxSPTA7TT1vZSxvZT1vZSszMnwwLGs9TSxiPShtPTB8YVsodz0yMDgrKEE9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSk/MTowIT0oMSZUdFtBKzI2MD4+MV0pLDB8KHA9''@;'; put 'put ''MHxhWzEyKyhjPTB8YVsoZj0xNisoY3w9MCl8MCk+PjJdKT4+Ml0pJiYoYiYmMD09KDQmYVtsKzE1Mj4+Ml18MCkmJih3MShsLG0sMHxhW0ErMjI4Pj4yXSwwfGFbQSsyNDQ+PjJdLDB8YVtBKzIxMj4+Ml0pLGM9MHxhW2Y+PjJdKSxtPTB8YVtsKzM2Pj4yXSxSPStfW2MrMjQ+PjNdKyArKDB8''@;'; put 'put ''YVtwKzg+PjJdKSxEPTB8YVtwPj4yXSxfW2s+PjNdPStfW2MrMTY+PjNdKyArKDB8YVtwKzQ+PjJdKSxfW2srOD4+M109UixhW2srMTY+PjJdPUQsVDAobSwxMDY0NTAsayksYVsoaz01NisoMHxhWzEwNCsobT0wfGFbZj4+Ml0pPj4yXSl8MCk+PjJdPWFbKG09bSsxNnwwKT4+Ml0sYVtrKzQ+''@;'; put 'put ''PjJdPWFbbSs0Pj4yXSxhW2srOD4+Ml09YVttKzg+PjJdLGFbaysxMj4+Ml09YVttKzEyPj4yXSxCNyhsLDEwLDB8YVsxMDQrKDB8YVtmPj4yXSk+PjJdKSxiJiYoNCZhW2wrMTUyPj4yXXwwJiZ3MShsLDB8YVt3Pj4yXSwwfGFbQSsyMjg+PjJdLDB8YVtBKzI0ND4+Ml0sMHxhW0ErMjEyPj4y''@;'; put 'put ''XSksa2gobCkpKSxvZT1NfSxmdW5jdGlvbiBIYWUobCxjKXt2YXIgcCxmPTA7X1sobHw9MCk+PjNdPTQuOTc5Nzk2NTY5NzY1NTYqKGY9KHA9LjUyNTczMTExMjExOTEzMzYqK19bKGN8PTApPj4zXSk+KGY9Ljg5NDQyNzE5MDk5OTkxNTkqK19bYys4Pj4zXSk/cDpmKSxfW2wrOD4+M109NC43''@;'; put 'put ''MzYwNjc5Nzc0OTk3OSpmfSxmdW5jdGlvbiBOYWUobCxjKXtsfD0wO3ZhciB3LGIsTSxmPTAscD0wLG09MCxBPTAsaz0wLEQ9MCxSPTA7Zm9yKChmPShtPStfWyhNPTgrKGN8PTApfDApPj4zXSkvKHA9K19bYz4+M10pKT4uOTUxMDU2NTE2Mjk1MTUzNj9rPTEuMDUxNDYyMjI0MjM4MjY3Mipt''@;'; put 'put ''OmY8Ljk1MTA1NjUxNjI5NTE1MzY/KGs9cCxtPS45NTEwNTY1MTYyOTUxNTM2KnApOms9cCxwPS41MjU3MzExMTIxMTkxMzM2Kmssdz0uMjAwODExNDE1ODg2MjI3MjUqayxiPS4wNTAyMDI4NTM5NzE1NTY4MSprLGY9LjMxNDE1OTI2NTM1ODk3OTMsQT0wOyEoKDB8QSk+PTEwKTspX1tsKyhB''@;'; put 'put ''PDw0KT4+M109K2xhKCtmKSpwLF9bbCsoQTw8NCkrOD4+M109K0lhKCtmKSpwLWIsX1tsKygoRD0xfEEpPDw0KT4+M109K2xhKCsoUj1mKy42MjgzMTg1MzA3MTc5NTg2KSkqdyxfW2wrKEQ8PDQpKzg+PjNdPStJYSgrUikqdy1iLGYrPTEuMjU2NjM3MDYxNDM1OTE3MixBPUErMnwwO19bYz4+''@;'; put 'put ''M109ayxfW00+PjNdPW19LGZ1bmN0aW9uIFhhZShsLGMpe3ZhciBmO2x8PTAsX1soZj04KyhjfD0wKXwwKT4+M109MS4zNzUqK19bZj4+M10sYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19LGZ1bmN0''@;'; put 'put ''aW9uIEthZShsLGMpe3ZhciBwLG0sYixNLEQsZj0wLEE9MCx3PTAsaz0wO3c9LjUqKEQ9K19bOCsoY3w9MCk+PjNdKSxfWyhsfD0wKT4+M109bT0uNSooaz0rX1tjPj4zXSksX1tsKzg+PjNdPXA9LjQwOTA5MDkwOTA5MDkwOTA2KkQsX1tsKzE2Pj4zXT1tLF9bbCsyND4+M109QT0uNDU5MjUz''@;'; put 'put ''MDkwOTA5MDkwOSpELF9bbCszMj4+M109Yj0uMjc1ODkyKmssX1tsKzQwPj4zXT13LF9bbCs0OD4+M109MCxfW2wrNTY+PjNdPXcsX1tsKzY0Pj4zXT1rKj0tLjI3NTg5MixfW2wrNzI+PjNdPXcsX1tsKzgwPj4zXT1NPS1tLF9bbCs4OD4+M109QSxfWyhmPWwrOTZ8MCk+PjNdPU0sX1tsKzEw''@;'; put 'put ''ND4+M109cCxhWyhjPWwrMTEyfDApPj4yXT1hW2Y+PjJdLGFbYys0Pj4yXT1hW2YrND4+Ml0sYVtjKzg+PjJdPWFbZis4Pj4yXSxhW2MrMTI+PjJdPWFbZisxMj4+Ml0sX1soYz1sKzEyOHwwKT4+M109TSxfW2wrMTM2Pj4zXT0tLjQwOTA5MDkwOTA5MDkwOTA2KkQsYVsoZj1sKzE0NHwwKT4+''@;'; put 'put ''Ml09YVtjPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLF9bbCsxNjA+PjNdPU0sX1tsKzE2OD4+M109QT0tQSxfW2wrMTc2Pj4zXT1rLF9bbCsxODQ+PjNdPXc9LXcsX1tsKzE5Mj4+M109MCxfW2wrMjAwPj4zXT13LF9b''@;'; put 'put ''bCsyMDg+PjNdPWIsX1tsKzIxNj4+M109dyxfW2wrMjI0Pj4zXT1tLF9bbCsyMzI+PjNdPUEsX1soZj1sKzI0MHwwKT4+M109bSxfW2wrMjQ4Pj4zXT0tcCxhWyhjPWwrMjU2fDApPj4yXT1hW2Y+PjJdLGFbYys0Pj4yXT1hW2YrND4+Ml0sYVtjKzg+PjJdPWFbZis4Pj4yXSxhW2MrMTI+PjJd''@;'; put 'put ''PWFbZisxMj4+Ml0sYz1sKzI4OHwwLGFbKGY9bCsyNzJ8MCk+PjJdPWFbbD4+Ml0sYVtmKzQ+PjJdPWFbbCs0Pj4yXSxhW2YrOD4+Ml09YVtsKzg+PjJdLGFbZisxMj4+Ml09YVtsKzEyPj4yXSxhW2M+PjJdPWFbbD4+Ml0sYVtjKzQ+PjJdPWFbbCs0Pj4yXSxhW2MrOD4+Ml09YVtsKzg+PjJd''@;'; put 'put ''LGFbYysxMj4+Ml09YVtsKzEyPj4yXX0sZnVuY3Rpb24gSWIobCxjKXt2YXIgbSxBLHcsYixmPTAscD0wO2lmKGI9b2Usb2U9b2UrMTZ8MCxmPWIsbT0oK19bOCsoY3w9MCk+PjNdLStfWzU2OCsobHw9MCk+PjNdKS8rX1tsKzUyOD4+M10sISgrZW8oKyh3PSgrX1tjPj4zXS0rX1soQT1sKzU2''@;'; put 'put ''MHwwKT4+M10pLytfW2wrNTIwPj4zXSkpPDFlLTQmK2VvKCttKTwxZS00KSl7c3dpdGNoKDB8dWVbbCs1NDE+PjBdKXtjYXNlIDA6YVtmPj4yXT1hW2M+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sTzkobCxmKTticmVh''@;'; put 'put ''aztjYXNlIDI6cD0rX1tsKzM1Mj4+M10sMHxhW2wrMzYwPj4yXT8oX1soZj1sKzMzNnwwKT4+M109K19bZj4+M10tbS9wLF9bKGY9bCszNDR8MCk+PjNdPStfW2Y+PjNdK3cvcCk6KF9bKGY9bCszMzZ8MCk+PjNdPStfW2Y+PjNdLXcvcCxfWyhmPWwrMzQ0fDApPj4zXT0rX1tmPj4zXS1tL3Ap''@;'; put 'put ''LHVlW2wrNTM3Pj4wXT0xfWFbQT4+Ml09YVtjPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdfW9lPWJ9LGZ1bmN0aW9uIHdFKGwsYyl7QTcobD0wfGFbKGx8PTApPj4yXSwwfGFbbCsxNjg+PjJdLGN8PTApfSxkRCxjNyxm''@;'; put 'put ''dW5jdGlvbiBINihsLGMpe1ZuKGN8PTAsbHw9MCwxKX0sZnVuY3Rpb24gS29lKGwsYyl7bHw9MDt2YXIgYixrLE0sUixmPTAscD0wLG09MCxBPTAsdz0wLEQ9MDtSPW9lLG9lPW9lKzE2fDAsRD1SLE09KGN8PTApLTQ4fDAsYj1jKzQ4fDAsbT0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgw''@;'; put 'put ''fChtPTMmYVtjPj4yXSkpP2M6TSkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHxtKT9jOmIpKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFyWzE3MCsoMHxhWyhrPWMrMTZ8MCk+PjJdKT4+MV0pfDA7ZG97aWYoKDB8bSk+MCl7aWYoMT09KCgwfGFbMjc2Kyh3''@;'; put 'put ''PTB8YVsxNisoQT0wfGFbKDM9PSgwfChmPTMmYVtsPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSsoMHxhW3crMjY4Pj4yXSl8MCkpe1Y1KEEsbSk7YnJlYWt9aWYoMT09KCgwfGFbMjc2KyhwPTB8YVsxNisoZj0wfGFbKDI9PSgwfGYpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0p''@;'; put 'put ''Pj4yXSkrKDB8YVtwKzI2OD4+Ml0pfDApKXtWNShmLDAtbXwwKTticmVha31pZigoMHxhW3crMjg4Pj4yXSk8KDB8YVtwKzI4OD4+Ml0pKXtWNShBLG0pO2JyZWFrfVY1KGYsMC1tfDApO2JyZWFrfX13aGlsZSgwKTtpZihtPTB8JFUoMHxhWygzPT0oMHwobT0zJmFbYz4+Ml0pKT9jOmIpKzQw''@;'; put 'put ''Pj4yXSwwfGFbKDI9PSgwfG0pP2M6TSkrNDA+PjJdLHA9MHxhWzE2MCsoMHxhWyhmPWwrMTZ8MCk+PjJdKT4+Ml0sMSksKDB8JFUoMHxhWygyPT0oMHwodz0zJmFbYz4+Ml0pKT9jOk0pKzQwPj4yXSwwfGFbKDM9PSgwfHcpP2M6YikrNDA+PjJdLHAsMCkpPT0oMHxtKSlyZXR1cm4gYVsxNjAr''@;'; put 'put ''KDB8YVtrPj4yXSk+PjJdPTAtcCxhWzE2MCsoMHxhW2Y+PjJdKT4+Ml09MCxmdW5jdGlvbiBlYWUobCxjKXt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtmb3IoYVsxNjQrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml09YVsocD0xNjQrKDB8YVsoYj0xNisobHw9MCl8MCk+PjJd''@;'; put 'put ''KXwwKT4+Ml0sYVsoMHxhWzQ3MjU2XSkrKGFbcD4+Ml08PDIpPj4yXT1jLGFbMTY0KygwfGFbYj4+Ml0pPj4yXT0tMSxhWyhBPTI3NisocD0wfGFbKGI9MTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKXwwKT4+Ml0pfDApPj4yXT1rPShtPTB8YVtBPj4yXSktMXww''@;'; put 'put ''LEE9cCsyNzJ8MCx3PTA7Oyl7aWYoKDB8dyk+PSgwfG0pKXtNPTM7YnJlYWt9aWYoKDB8YVsoZj0wfGFbQT4+Ml0pKyh3PDwyKT4+Ml0pPT0oMHxsKSlicmVhazt3PXcrMXwwfWZvcigzPT0oMHxNKSYmKGY9MHxhW3ArMjcyPj4yXSksYVtmKyh3PDwyKT4+Ml09YVtmKyhrPDwyKT4+Ml0sYVso''@;'; put 'put ''MHxhWzI3MisoMHxhW2I+PjJdKT4+Ml0pKyhrPDwyKT4+Ml09MCxhWyhBPTI2OCsocD0wfGFbKGI9MTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSl8MCk+PjJdKXwwKT4+Ml09az0obT0wfGFbQT4+Ml0pLTF8MCxBPXArMjY0fDAsdz0wOzspe2lmKCgwfHcpPj0o''@;'; put 'put ''MHxtKSl7TT04O2JyZWFrfWlmKCgwfGFbKGY9MHxhW0E+PjJdKSsodzw8Mik+PjJdKT09KDB8bCkpYnJlYWs7dz13KzF8MH04PT0oMHxNKSYmKGY9MHxhW3ArMjY0Pj4yXSksYVtmKyh3PDwyKT4+Ml09YVtmKyhrPDwyKT4+Ml0sYVsoMHxhWzI2NCsoMHxhW2I+PjJdKT4+Ml0pKyhrPDwyKT4+''@;'; put 'put ''Ml09MCxrPTB8YVsyNzIrKGw9MHxhWyhNPTE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSl8MCk+PjJdKT4+Ml0sYVsobD1sKzI3NnwwKT4+Ml09MSsoYj0wfGFbbD4+Ml0pLGFbaysoYjw8Mik+PjJdPWMsYVsoMHxhWzI3MisoTT0wfGFbTT4+Ml0pPj4yXSkrKGFb''@;'; put 'put ''TSsyNzY+PjJdPDwyKT4+Ml09MCxrPTB8YVsyNjQrKGI9MHxhWyhNPTE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pfDApPj4yXSk+PjJdLGFbKGI9YisyNjh8MCk+PjJdPTErKGw9MHxhW2I+PjJdKSxhW2srKGw8PDIpPj4yXT1jLGFbKDB8YVsyNjQrKE09MHxh''@;'; put 'put ''W00+PjJdKT4+Ml0pKyhhW00rMjY4Pj4yXTw8Mik+PjJdPTB9KGwsYyksZkQobSwwfGFbMjgwKyhEPTB8YVttKzE2Pj4yXSk+PjJdLDB8YVtEKzI4ND4+Ml0pLHZvaWQob2U9Uik7WHIoMSwxMDIyNjIsRCksV2UoMTg4ODQ4LDEpfSxmdW5jdGlvbiBRaShsLGMpe2N8PTA7dmFyIHcsYixrLE0s''@;'; put 'put ''RCxHLEssZj0wLHA9MCxtPTAsQT0wLFI9MCxwZT0wO2ZvcihLPW9lLG9lPW9lKzY0fDAsRz1LKzMyfDAsUj1LKzE2fDAsYj1LLGs9Sys0OHwwLF91KDExMDkzNSxsfD0wKSxfdSgxMTA5NDYsbCksTT1jKzE2fDAsRD1iKzh8MCx3PWsrNHwwLEE9MDshKCgwfEEpPj0oMHxhW2M+PjJdKSk7KSgw''@;'; put 'put ''fChwPTB8YVsoZj0wfGFbTT4+Ml0pKyg0MCpBfDApKzIwPj4yXSkpPT0oMHwobT0wfGFbZisoNDAqQXwwKSsyND4+Ml0pKT8oY20oYixwKSxmPX5+K19bYj4+M10scD1+fitfW0Q+PjNdKTooX2IoaywwPT0oMSZhW3A+PjJdfDApP3A6bSxmKyg0MCpBfDApfDApLGY9MHxhW2s+PjJdLHA9MHxh''@;'; put 'put ''W3c+PjJdKSxhW1I+PjJdPUEsYVtSKzQ+PjJdPWYsYVtSKzg+PjJdPXAsVDAobCwxMTA5NjYsUiksQT1BKzF8MDtmb3IobT1jKzR8MCxwPWMrMjB8MCxmPTA7ISgoMHxmKT49KDB8YVttPj4yXSkpOyljPTB8YVsoUj0wfGFbcD4+Ml0pKygyNCpmfDApKzE2Pj4yXSxwZT0rX1tSKygyNCpmfDAp''@;'; put 'put ''Pj4zXSxhW0c+PjJdPWFbUisoMjQqZnwwKSsxMj4+Ml0sYVtHKzQ+PjJdPWMsX1tHKzg+PjNdPXBlLFQwKGwsMTEwOTg2LEcpLGY9ZisxfDA7X3UoMTExMDA4LGwpLG9lPUt9LGZ1bmN0aW9uIEJCKGwsYyl7Y3w9MDtkb3tpZigwfEEwKGMsMTQwNjAzKSl7aWYoMHxBMChjLDE0MDYwOSkmJjB8''@;'; put 'put ''QTAoYywxNDA2MTIpKXtpZighKDB8QTAoYywxNDA2MTUpKSl7YVs0NzQwOV09MjY1LHVlWzE4OTY2Ml09MDticmVha31pZighKDB8QTAoYywxNDA2MTgpKSl7YVs0NzQwOV09MjYzO2JyZWFrfWlmKCEoMHxBMChjLDE0MDYyMykpKXthWzQ3NDA5XT0yNjY7YnJlYWt9aWYoISgwfEEwKGMsMTQw''@;'; put 'put ''NjI4KSkpe2FbNDc0MDldPTI3MDticmVha31pZighKDB8QTAoYywxNDA2MzApKSl7YVs0NzQwOV09MjcxO2JyZWFrfWlmKCEoMHxBMChjLDE0MDYzMikpKXthWzQ3NDA5XT0yNzI7YnJlYWt9aWYoISgwfEEwKGMsMTQwNjM0KSkpe2FbNDc0MDldPTI2OTticmVha31pZighKDB8QTAoYywxNDA2''@;'; put 'put ''MzYpKSl7YVs0NzQwOV09MjczO2JyZWFrfWlmKCEoMHxBMChjLDE0MDY0MCkpKXthWzQ3NDA5XT0yNzQ7YnJlYWt9aWYoISgwfEEwKGMsMTQwNjQ0KSkpe2FbNDc0MDldPTI3NTticmVha31pZighKDB8QTAoYywxNDA2NDYpKSl7YVs0NzQwOV09MjgzPT0oMHxhWzQ3NDA5XSk/MjgyOjI1ODti''@;'; put 'put ''cmVha31pZighKDB8QTAoYywxNDA2NDkpKSl7YVs0NzQwOV09Mjc3PT0oMHxhWzQ3NDA5XSk/Mjc2OjI3ODticmVha31pZighKDB8QTAoYywxNDA2NTIpKSl7YVs0NzQwOV09MjgwPT0oMHxhWzQ3NDA5XSk/Mjc5OjI4MTticmVha31pZigwfEEwKGMsMTQwNjU1KSl7YXgoYyk7YnJlYWt9YVs0''@;'; put 'put ''NzQwOV09Mjg1PT0oMHxhWzQ3NDA5XSk/Mjg0OjI1OTticmVha31hWzQ3NDA5XT0yNjF9ZWxzZSBhWzQ3NDA5XT0yNjQsdWVbMTg5NjYyXT0xfXdoaWxlKDApfSxQbSxmdW5jdGlvbiBGRyhsLGMpe2x8PTAsY3w9MDt2YXIgdyxiLGY9MCxwPTAsbT0wLEE9MDtiPW9lLG9lPW9lKzE2fDAsdz1i''@;'; put 'put ''O2U6Zm9yKDs7KXtpZighKCgwfGMpPjMpKXtjPTk7YnJlYWt9Zm9yKHA9MDs7KXtpZigoMHxwKT49KDB8Yykpe2M9ODticmVhayBlfWlmKGY9KDB8KG09cCsxfDApKSUoMHxjKXwwLDB8Yl8ocCxBPShwKzJ8MCklKDB8Yyl8MCxsLGMpKWJyZWFrO3A9bX1mb3Ioc0EoMHxhW2wrKHA8PDIpPj4y''@;'; put 'put ''XSwwfGFbbCsoZjw8Mik+PjJdLDB8YVtsKyhBPDwyKT4+Ml0pLGM9YystMXwwOzspe2lmKCgwfGYpPj0oMHxjKSljb250aW51ZSBlO2FbbCsoZjw8Mik+PjJdPWFbbCsoKEE9ZisxfDApPDwyKT4+Ml0sZj1BfX04PT0oMHxjKT8obD0wfGFbMTU3MTJdLGFbdz4+Ml09MTQxODU4LGFbdys0Pj4y''@;'; put 'put ''XT0zMjQsYVt3Kzg+PjJdPTE0MjAwMyxUMChsLDE0MTgzOSx3KSk6OT09KDB8YykmJnNBKDB8YVtsPj4yXSwwfGFbbCs0Pj4yXSwwfGFbbCs4Pj4yXSksb2U9Yn0sZnVuY3Rpb24gd18obCxjKXt2YXIgYixrLE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxEPTAsUj0wLEc9MCxLPTA7Zm9yKGs9KGI9''@;'; put 'put ''MHxhWzQ3NTEzXSkrKDUyKihsfD0wKXwwKXwwLE09YisoNTIqKGN8PTApfDApfDAsQT0wOzMhPSgwfEEpOyl7Zm9yKEQ9YisoNTIqbHwwKSs0KyhBPDw0KXwwLFI9YisoNTIqbHwwKSs0KyhBPDw0KSs0fDAsRz1iKyg1MipsfDApKzQrKEE8PDQpKzEyfDAsbT0wOzMhPSgwfG0pOykoMHwoSz0w''@;'; put 'put ''fGFbYVtEPj4yXT4+Ml0pKT09KDB8KHc9MHxhW2FbYisoNTIqY3wwKSs0KyhtPDw0KT4+Ml0+PjJdKSk/cD0oMHxhW2FbUj4+Ml0+PjJdKT09KDB8KGY9MHxhW2FbYisoNTIqY3wwKSs0KyhtPDw0KSs0Pj4yXT4+Ml0pKT8xMDo4OihmPTB8YVthW2IrKDUyKmN8MCkrNCsobTw8NCkrND4+Ml0+''@;'; put 'put ''PjJdLHA9OCksOD09KDB8cCkmJihwPTAsKDB8Syk9PSgwfGYpKSYmKDB8YVthW1I+PjJdPj4yXSk9PSgwfHcpJiYocD0xMCksMTA9PSgwfHApJiYoYVtHPj4yXT1NLGFbYisoNTIqY3wwKSs0KyhtPDw0KSsxMj4+Ml09ayksbT1tKzF8MDtBPUErMXwwfX0sZnVuY3Rpb24gajQobCxjKXtjfD0w''@;'; put 'put ''O3ZhciBwLGY9MCxtPTA7bT0oMHwoZj0wfGFbNDc1MDhdKSk+PSgwfChwPTB8YVs0NzUwN10pKSwxPT0oMHwobHw9MCkpP20/KGFbYys0Pj4yXT1hWygwfGFbNDc1MDVdKSsocDw8Mik+PjJdLGw9MTkwMDI4LGY9LTEpOihsPTE5MDAyOCxmPS0xKTptPyhhW2MrND4+Ml09YVsoMHxhWzQ3NTA1''@;'; put 'put ''XSkrKGY8PDIpPj4yXSxsPTE5MDAzMixmPTEpOihsPTE5MDAzMixmPTEpLGFbbD4+Ml09bT0oMHxhW2w+PjJdKStmfDAsYVsoMHxhWzQ3NTA1XSkrKG08PDIpPj4yXT1jfSxmdW5jdGlvbiBlUChsLGMpe2FbKDE9PSgwfChsfD0wKSk/MTkwMDMyOjE5MDAyOCk+PjJdPWN8PTB9LERzLERzLERz''@;'; put 'put ''LERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzLERzXSxObD1bZGEsZnVuY3Rpb24gZWllKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIG0sQSx3LE0sRCxLLHBlLHA9MCxiPTAsaz0wLFI9MCxHPTA7cGU9''@;'; put 'put ''b2Usb2U9b2UrMTA1NnwwLEE9cGUrMTZ8MCxLPXBlKzh8MCxHPXBlLHc9cGUrMzJ8MCxjbyhEPTB8YVsxMTQxNisoKE09MHxhWzEyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKTw8Mik+PjJdLDY2OTE2KSxqNih3LCtfWzE2KygwfGFbKHA9Zis0fDApPj4yXSk+PjNdKSxjbyhELHcpLEM1KGws''@;'; put 'put ''MTk1MDU5LDB8YVthW3A+PjJdPj4yXSksTEMobCksUj0oUj0wfHVlW2YrNDg+PjBdKTw8MjQ+PjI0PT0xMDg/LTE6Ujw8MjQ+PjI0PT0xMTQmMSxwPShwPTB8YVtwPj4yXSk/MTI3JmFbcCsyND4+Ml06MCwoNjU1MzUmKG09MHxUdFs4MjMyKygwfGFbNDY2OTBdKT4+MV0pKT4xNCYmKDB8YVso''@;'; put 'put ''az0xODY3NjQrKE08PDIpfDApPj4yXSkhPSgwfChiPWFbMTE0NjQrKCg2NTUzNSZtKS0xNTw8Mik+PjJdJnApKSYmKGFbRz4+Ml09Yixhbyh3LDY2OTE5LEcpLGNvKEQsdyksYVtrPj4yXT1iKSxfWyhHPWMrOHwwKT4+M109K19bRz4+M10rICtfW2YrMjQ+PjNdLGNvKEQsNjY5MjUpLGFbQT4+''@;'; put 'put ''Ml09YVtjPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLF81KEQsQSksYVtLPj4yXT1SLGFvKHcsMTAyMjIwLEspLGNvKEQsdyksajYodywrX1tmKzMyPj4zXSksY28oRCx3KSxDNShsLDE5NTA1OSwwfGFbZj4+Ml0pLG9l''@;'; put 'put ''PXBlfSxmdW5jdGlvbiBEQyhsLGMsZil7dmFyIHAsbSxBLHc7Y3w9MCxmfD0wLHc9b2Usb2U9b2UrMTA0MHwwLG09dyxBPXcrMTZ8MCxwPTB8YVsxMisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxySShsKSxMQyhsKSxmPygzPT0oMXxmKT9hSShsLGYsYywyKTpsSShsKSxjbyhsPTB8YVsxMTQx''@;'; put 'put ''NisocDw8Mik+PjJdLDY2OTEwKSk6Y28obD0wfGFbMTE0MTYrKHA8PDIpPj4yXSw2NjkxMyksYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sXzUobCxtKSxqNihBLCtfW2MrMTY+PjNdLStfW2M+PjNd''@;'; put 'put ''KSxjbyhsLEEpLGo2KEEsK19bYysyND4+M10tK19bYys4Pj4zXSksY28obCxBKSxvZT13fSxmdW5jdGlvbiByaWUobCxjLGYpe2N8PTAsZnw9MCxySShsfD0wKSxMQyhsKSxPQyhsLDc2LGMsZil9LGZ1bmN0aW9uIGNpZShsLGMsZil7SHQoMHxhWzgrKGN8PTApPj4yXSksSHQoYyl9LGZ1bmN0''@;'; put 'put ''aW9uIGdpZShsLGMsZil7Y3w9MDt2YXIgbSxBLHcsYixrLE0sRCxSLEcsSyxwZSxwPTA7Uj1vZSxvZT1vZSs4MHwwLEQ9UixrPTB8YVsxNisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxNPTB8YVs0NjcxMF0sQT0wfGFbbCszNjA+PjJdPzEuNTcwNzk2MzI2Nzk0ODk2NjowLGI9LjMzMzMzMzMz''@;'; put 'put ''MzMzMzMzMzMqKG09K19bbCszNTI+PjNdKitfWzE2KyhwPTB8YVs0KyhmfD0wKT4+Ml0pPj4zXSkqKygoMHx6byh3PTB8YVtmPj4yXSkpPj4+MCkscD0ocD0wfGFbcCs4Pj4yXSk/MHxhW3ArMjA+PjJdOi0xLHBlPTB8dWVbZis0OD4+MF0sSz0rX1tjPj4zXSxHPStfW2MrOD4+M10sZj0wfGZ1''@;'; put 'put ''bmN0aW9uIEI3ZShsKXtsfD0wO3ZhciBBLHcsYz0wLGY9MCxwPTAsbT0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsQT13LChjPTB8YVs0NjcxMl0pfHwoYVs0NjcxM109NjQsYz0wfFIwKDY0KSxhWzQ2NzEyXT1jKSxmPTA7bT1sKzF8MCwocD0wfHVlW2w+PjBdKTw8MjQ+PjI0OykoMHxmKT4oKGw9''@;'; put 'put ''MHxhWzQ2NzEzXSktOHwwKSYmKGFbNDY3MTNdPWM9bDw8MSxjPTB8WmEoMHxhWzQ2NzEyXSxjKSxhWzQ2NzEyXT1jLGM9YytmfDApLHA8PDI0Pj4yNDw9LTE/KHVlW2M+PjBdPTkyLGFbQT4+Ml09MjU1JnAsYW8oYysxfDAsODEyMjQsQSksbD1tLGM9Yys0fDAsZj1mKzR8MCk6KHA8PDI0Pj4y''@;'; put 'put ''ND09OTImJih1ZVtjPj4wXT05MixmPWYrMXwwLGM9YysxfDApLHVlW2M+PjBdPXAsbD1tLGM9YysxfDAsZj1mKzF8MCk7cmV0dXJuIHVlW2M+PjBdPTAsb2U9dywwfGFbNDY3MTJdfSh3KSxhW0Q+PjJdPTQsYVtEKzQ+PjJdPXBlPDwyND4+MjQ9PTEwOD8wOnBlPDwyND4+MjQ9PTExND8yOjEs''@;'; put 'put ''YVtEKzg+PjJdPWssYVtEKzEyPj4yXT1NLGFbRCsxNj4+Ml09MCxhW0QrMjA+PjJdPXAsX1tEKzI0Pj4zXT1tLF9bRCszMj4+M109QSxhW0QrNDA+PjJdPTYsX1tEKzQ4Pj4zXT1tLF9bRCs1Nj4+M109YixhW0QrNjQ+PjJdPX5+KEsrKEs+PTA/LjU6LS41KSksYVtEKzY4Pj4yXT1+fihHKyhH''@;'; put 'put ''Ky03Mj49MD8tNzEuNTotNzIuNSkpLGFbRCs3Mj4+Ml09ZixScihsLDY4NTQ5LEQpLG9lPVJ9LGZ1bmN0aW9uIG1pZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGIsUixHLEsscGUsbWUsYmUsT2Usaz0wLE09MCxEPTA7cD1vZSxvZT1vZSsxMTJ8MCxtPXArOHwwLG1lPX5+K19bMTUy''@;'; put 'put ''KyhrPTB8YVsxNisobHw9MCk+PjJdKT4+M10scGU9MHxhW2srMTY+PjJdLEs9MHxhW2srNTY+PjJdLEc9MHxhWzQ2NzEwXSxmSShrLE9lPXArMTA0fDAsYmU9cCksaz1+figoRD0rX1tjPj4zXSkrKEQ+PTA/LjU6LS41KSksYj1+figoTT0rX1tjKzg+PjNdKSsoTT49MD8uNTotLjUpKSxEPSh3''@;'; put 'put ''PStfW2MrMTY+PjNdKS1ELE09KEE9K19bYysyND4+M10pLU0sYz0wfGFbT2U+PjJdLFI9K19bYmU+PjNdLGFbbT4+Ml09MSxhW20rND4+Ml09MSxhW20rOD4+Ml09YyxhW20rMTI+PjJdPW1lLGFbbSsxNj4+Ml09cGUsYVttKzIwPj4yXT1LLGFbbSsyND4+Ml09RyxhW20rMjg+PjJdPTAsYVtt''@;'; put 'put ''KzMyPj4yXT0wfGY/MjA6LTEsX1ttKzQwPj4zXT1SLGFbbSs0OD4+Ml09MCxfW20rNTY+PjNdPTAsYVttKzY0Pj4yXT1rLGFbbSs2OD4+Ml09YixhW20rNzI+PjJdPX5+KEQrKEQ+PTA/LjU6LS41KSksYVttKzc2Pj4yXT1+fihNKyhNPj0wPy41Oi0uNSkpLGFbbSs4MD4+Ml09ayxhW20rODQ+''@;'; put 'put ''PjJdPWIsYVttKzg4Pj4yXT1+fih3Kyh3Pj0wPy41Oi0uNSkpLGFbbSs5Mj4+Ml09fn4oQSsoQT49MD8uNTotLjUpKSxScihsLDY4NDI3LG0pLG9lPXB9LGZ1bmN0aW9uIEFpZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGIsayxELFIsTT0wO3A9b2Usb2U9b2UrOTZ8MCxtPXArOHww''@;'; put 'put ''LGs9fn4rX1sxNTIrKFI9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSxiPTB8YVtSKzE2Pj4yXSx3PTB8YVs0NjcxMF0sZkkoUixNPXArODB8MCxEPXApLE09MHxhW00+PjJdLEE9K19bRD4+M10sYVttPj4yXT0yLGFbbSs0Pj4yXT0xLGFbbSs4Pj4yXT1NLGFbbSsxMj4+Ml09ayxhW20rMTY+PjJd''@;'; put 'put ''PWIsYVttKzIwPj4yXT0wLGFbbSsyND4+Ml09dyxhW20rMjg+PjJdPTAsYVttKzMyPj4yXT0wLF9bbSs0MD4+M109QSxhW20rNDg+PjJdPTAsYVttKzUyPj4yXT0wLGFbbSs1Nj4+Ml09MCxhW20rNjA+PjJdPTAsYVttKzY0Pj4yXT0wLGFbbSs2OD4+Ml09ZixScihsLDY4MzMxLG0pLHlpZShs''@;'; put 'put ''LGMsZiwwKSxvZT1wfSxmdW5jdGlvbiBON2UobCxjLGYpe3ZhciBtLEEsdyxiLGssTSxELFIsRyxwPTA7TT1vZSxvZT1vZSs4MHwwLGs9TSx3PTB8YVsxNisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxiPTB8YVs0NjcxNl0sbT0rX1tsKzM1Mj4+M10qK19bMTYrKHA9MHxhWzQrKGZ8PTApPj4y''@;'; put 'put ''XSk+PjNdLEE9MHxhW2wrMzYwPj4yXT8xLjU3MDc5NjMyNjc5NDg5NjY6MCxwPShwPTB8YVtwKzg+PjJdKT8wfGFbcCsyMD4+Ml06LTEsRz0wfHVlW2YrNDg+PjBdLFI9K19bKGN8PTApPj4zXSxEPStfW2MrOD4+M10sZj0wfGZ1bmN0aW9uIFc3ZShsKXtsfD0wO3ZhciBBLHcsYz0wLGY9MCxw''@;'; put 'put ''PTAsbT0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsQT13LChjPTB8YVs0NjcxOF0pfHwoYVs0NjcxOV09NjQsYz0wfFIwKDY0KSxhWzQ2NzE4XT1jKSxmPTA7bT1sKzF8MCwocD0wfHVlW2w+PjBdKTw8MjQ+PjI0OykoMHxmKT4oKGw9MHxhWzQ2NzE5XSktOHwwKSYmKGFbNDY3MTldPWM9bDw8MSxj''@;'; put 'put ''PTB8WmEoMHxhWzQ2NzE4XSxjKSxhWzQ2NzE4XT1jLGM9YytmfDApLHA8PDI0Pj4yNDw9LTE/KHVlW2M+PjBdPTkyLGFbQT4+Ml09MjU1JnAsYW8oYysxfDAsODEyMjQsQSksbD1tLGM9Yys0fDAsZj1mKzR8MCk6KHA8PDI0Pj4yND09OTImJih1ZVtjPj4wXT05MixmPWYrMXwwLGM9YysxfDAp''@;'; put 'put ''LHVlW2M+PjBdPXAsbD1tLGM9YysxfDAsZj1mKzF8MCk7cmV0dXJuIHVlW2M+PjBdPTAsb2U9dywwfGFbNDY3MThdfSgwfGFbZj4+Ml0pLGFbaz4+Ml09NCxhW2srND4+Ml09Rzw8MjQ+PjI0PT0xMDg/MDpHPDwyND4+MjQ9PTExND8yOjEsYVtrKzg+PjJdPXcsYVtrKzEyPj4yXT1iLGFbaysx''@;'; put 'put ''Nj4+Ml09MCxhW2srMjA+PjJdPXAsX1trKzI0Pj4zXT1tLF9bayszMj4+M109QSxhW2srNDA+PjJdPTQsX1trKzQ4Pj4zXT0wLF9bays1Nj4+M109MCxhW2srNjQ+PjJdPX5+KFIrKFI+PTA/LjU6LS41KSksYVtrKzY4Pj4yXT1+fihEKyhEPj0wPy41Oi0uNSkpLGFbays3Mj4+Ml09ZixScihs''@;'; put 'put ''LDY4NTQ5LGspLG9lPU19LGZ1bmN0aW9uIGo3ZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGIsUixHLEsscGUsbWUsYmUsT2Usaz0wLE09MCxEPTA7cD1vZSxvZT1vZSsxMTJ8MCxtPXArOHwwLG1lPX5+K19bMTUyKyhrPTB8YVsxNisobHw9MCk+PjJdKT4+M10scGU9MHxhW2srMTY+''@;'; put 'put ''PjJdLEs9MHxhW2srNTY+PjJdLEc9MHxhWzQ2NzE2XSxySChrLE9lPXArMTA0fDAsYmU9cCksaz1+figoRD0rX1tjPj4zXSkrKEQ+PTA/LjU6LS41KSksYj1+figoTT0rX1tjKzg+PjNdKSsoTT49MD8uNTotLjUpKSxEPSh3PStfW2MrMTY+PjNdKS1ELE09KEE9K19bYysyND4+M10pLU0sYz0w''@;'; put 'put ''fGFbT2U+PjJdLFI9K19bYmU+PjNdLGFbbT4+Ml09MSxhW20rND4+Ml09MSxhW20rOD4+Ml09YyxhW20rMTI+PjJdPW1lLGFbbSsxNj4+Ml09cGUsYVttKzIwPj4yXT1LLGFbbSsyND4+Ml09RyxhW20rMjg+PjJdPTAsYVttKzMyPj4yXT0wfGY/MjA6LTEsX1ttKzQwPj4zXT1SLGFbbSs0OD4+''@;'; put 'put ''Ml09MCxfW20rNTY+PjNdPTAsYVttKzY0Pj4yXT1rLGFbbSs2OD4+Ml09YixhW20rNzI+PjJdPX5+KEQrKEQ+PTA/LjU6LS41KSksYVttKzc2Pj4yXT1+fihNKyhNPj0wPy41Oi0uNSkpLGFbbSs4MD4+Ml09ayxhW20rODQ+PjJdPWIsYVttKzg4Pj4yXT1+fih3Kyh3Pj0wPy41Oi0uNSkpLGFb''@;'; put 'put ''bSs5Mj4+Ml09fn4oQSsoQT49MD8uNTotLjUpKSxScihsLDY4NDI3LG0pLG9lPXB9LGZ1bmN0aW9uIEc3ZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGIsayxELFIsTT0wO3A9b2Usb2U9b2UrOTZ8MCxtPXArOHwwLGs9fn4rX1sxNTIrKFI9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSxi''@;'; put 'put ''PTB8YVtSKzE2Pj4yXSx3PTB8YVs0NjcxNl0sckgoUixNPXArODB8MCxEPXApLE09MHxhW00+PjJdLEE9K19bRD4+M10sYVttPj4yXT0yLGFbbSs0Pj4yXT0xLGFbbSs4Pj4yXT1NLGFbbSsxMj4+Ml09ayxhW20rMTY+PjJdPWIsYVttKzIwPj4yXT0wLGFbbSsyND4+Ml09dyxhW20rMjg+PjJd''@;'; put 'put ''PTAsYVttKzMyPj4yXT0wLF9bbSs0MD4+M109QSxhW20rNDg+PjJdPTAsYVttKzUyPj4yXT0wLGFbbSs1Nj4+Ml09MCxhW20rNjA+PjJdPTAsYVttKzY0Pj4yXT0wLGFbbSs2OD4+Ml09ZixScihsLDY4MzMxLG0pLFdXKGwsYyxmLDApLG9lPXB9LGZ1bmN0aW9uIERpZShsLGMsZil7Y3w9MCxm''@;'; put 'put ''fD0wO3ZhciB3LGIsayxwPTAsbT0wLEE9MCxNPTA7aWYoaz1vZSxvZT1vZSszMnwwLHc9ays4fDAsYj1rLCEoK19bNDArKHA9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXTwuNSkpe3N3aXRjaChHZChsLHArMTZ8MCksTnMobCwrX1sxNisoMHxhWyhBPWYrNHwwKT4+Ml0pPj4zXSksYVt3Pj4yXT1h''@;'; put 'put ''W2FbQT4+Ml0+PjJdLFJyKGwsNjg5NzMsdyksQT0wfElOKDB8YVtmPj4yXSwwfGFbNDY3MjBdKSwwfHVlW2YrNDg+PjBdKXtjYXNlIDExNDpwPU09ZiszMnwwLG09K19bTT4+M107YnJlYWs7Y2FzZSAxMDg6cD1mKzMyfDAsbT0wO2JyZWFrO2RlZmF1bHQ6cD1NPWYrMzJ8MCxtPS41KitfW00+''@;'; put 'put ''PjNdfV9bYz4+M109K19bYz4+M10tbSxfWyhNPWMrOHwwKT4+M109K19bTT4+M10rICtfW2YrMjQ+PjNdLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLEYzKGwsdyksVG4obCw2ODk4OCksTnMobCwr''@;'; put 'put ''X1twPj4zXSksYVtiPj4yXT1BLFJyKGwsNjg5OTcsYil9b2U9a30sZnVuY3Rpb24gTGllKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0sQSxwPTA7QT1vZSxvZT1vZSszMnwwLGFbKG09QSk+PjJdPWFbKGN8PTApPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVtt''@;'; put 'put ''KzEyPj4yXT1hW2MrMTI+PjJdLF9bbSsxNj4+M109K19bYysxNj4+M10tK19bYz4+M10sX1ttKzI0Pj4zXT0rX1tjKzI0Pj4zXS0rX1tjKzg+PjNdLGM9bCsxNnwwLDB8ZiYmK19bODArKHA9MHxhW2M+PjJdKT4+M10+LjUmJihHZChsLHArNTZ8MCksTmQobCxtLDIpLFRuKGwsNjg5MzEpKSwr''@;'; put 'put ''X1s0MCsoMHxhW2M+PjJdKT4+M10+LjUmJihfNyhsKSxHZChsLDE2KygwfGFbYz4+Ml0pfDApLE5kKGwsbSwyKSxUbihsLDY4OTUxKSksb2U9QX0sZnVuY3Rpb24gVVcobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxBLHA9MCx3PTA7aWYoQT1vZSxvZT1vZSsxNnwwLG09QSwrX1s0MCsoMHxhWyhw''@;'; put 'put ''PTE2KyhsfD0wKXwwKT4+Ml0pPj4zXT4uNSl7Zm9yKF83KGwpLEdkKGwsMTYrKDB8YVtwPj4yXSl8MCksVG4obCw2ODg1MiksYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sRjMobCxtKSxUbihsLDY4''@;'; put 'put ''ODYxKSxwPTE7ISgoMHxwKT49KDB8ZikpOylhW20+PjJdPWFbKHc9YysocDw8NCl8MCk+PjJdLGFbbSs0Pj4yXT1hW3crND4+Ml0sYVttKzg+PjJdPWFbdys4Pj4yXSxhW20rMTI+PjJdPWFbdysxMj4+Ml0sRjMobCxtKSxUbihsLDY4ODcwKSxwPXArMXwwO1RuKGwsNjg4NzkpfW9lPUF9LGZ1''@;'; put 'put ''bmN0aW9uIEhpZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBiLGssTSxELFIsRyxLLHBlLG1lLGJlLE9lLExlLEhlLGplLGV0LHJ0LGx0LE10LGF0LFp0LHV0LHd0LHA9MCxtPTAsQT0wLHc9MCxCZT0wLEdlPTAsa3Q9MCxFdD0wO3N3aXRjaCh3dD1vZSxvZT1vZSsxNzZ8MCx1dD13dCsxNjB8MCxa''@;'; put 'put ''dD13dCsxNTJ8MCxsdD13dCsxMzZ8MCxFdD13dCsxMjh8MCxHZT13dCsxMjB8MCxydD13dCsxMTJ8MCxldD13dCsxMDR8MCxqZT13dCs5NnwwLEhlPXd0Kzg4fDAsTGU9d3QrODB8MCxiZT13dCs3MnwwLG1lPXd0KzY0fDAscGU9d3QrNTZ8MCxLPXd0KzQ4fDAscD13dCs0MHwwLEQ9d3QrMzJ8''@;'; put 'put ''MCxHPXd0KzI0fDAsUj13dCsxNnwwLE09d3QrOHwwLGs9d3QsYXQ9MHxhWzE2KyhsfD0wKT4+Ml0sVG4obCw3NDA0NCksMHx1ZVtmKzQ4Pj4wXSl7Y2FzZSAxMDg6VG4obCw3NDA1MCk7YnJlYWs7Y2FzZSAxMTQ6VG4obCw3NDA3MSk7YnJlYWs7ZGVmYXVsdDpUbihsLDc0MDkwKX1pZihfWyhr''@;'; put 'put ''dD1jKzh8MCk+PjNdPU10PStfW2t0Pj4zXSsgK19bZisyND4+M10sNTEyJlR0WyhrdD1hdCsyNjB8MCk+PjFdfHwoVG4obCw3NDExMiksTnMobCwrX1tjPj4zXSksVG4obCw3NDExNyksTnMobCwtTXQpLFRuKGwsOTg3NDQpKSxiPTB8YVs4KyhjPTB8YVsoT2U9Zis0fDApPj4yXSk+PjJdKXtz''@;'; put 'put ''d2l0Y2goMHxhWzI0NCsoMHxhWzE2KygwfGFbMTY4KygwfGFbbD4+Ml0pPj4yXSk+PjJdKT4+Ml0pe2Nhc2UgMTp3PWIsYz1iKzE2fDAscD1iKzh8MDticmVhaztjYXNlIDI6dz1iKzI0fDAsYz1iKzMyfDAscD1iKzI4fDA7YnJlYWs7ZGVmYXVsdDp3PWIrNHwwLGM9YisxNnwwLHA9Yis4fDB9''@;'; put 'put ''bT0wfGFbYz4+Ml0sYz0wfGFbcD4+Ml0sQT0wfGFbYisxMj4+Ml0sYVtrPj4yXT1hW3c+PjJdLFJyKGwsNzQxMjMsayksMHwocD0wfGFbYisyND4+Ml0pJiYoYVtNPj4yXT1wLFJyKGwsNzQxNDAsTSkpLFRuKGwsOTg3NDQpLDB8YyYmKGFbUj4+Ml09YyxScihsLDc0MTQ0LFIpKSwwfEEmJihh''@;'; put 'put ''W0c+PjJdPUEsUnIobCw3NDE2MixHKSksbT8oYVtEPj4yXT1tLFJyKGwsNzQxODEsRCkpOm09MH1lbHNlIGFbcD4+Ml09YVtjPj4yXSxScihsLDc0MTk4LHApLG09MCxjPTA7c3dpdGNoKDB8KHA9MHxhW09lPj4yXSkmJjEyNyYoQmU9MHxhW3ArMjQ+PjJdKXwwJiYoMCE9KDB8Yyl8MD09KDEm''@;'; put 'put ''QmV8MCl8fFJyKGwsNzQyMTYsSyksMCE9KDB8bSl8MD09KDImQmV8MCl8fFJyKGwsNzQyMzYscGUpLDEwMCZCZXwwJiYoUnIobCw3NDI1NyxtZSksNCZCZT8oUnIobCwxMDU5ODYsYmUpLGM9MSk6Yz0wLDY0JkJlJiYoYVtMZT4+Ml09MHxjPzEwMDk5OToxOTUwNTksUnIobCw3NDI3NixMZSks''@;'; put 'put ''Yz0xKSwzMiZCZXwwJiYoYVtIZT4+Ml09MHxjPzEwMDk5OToxOTUwNTksUnIobCw3NDI4NyxIZSkpLFJyKGwsOTg3NDQsamUpKSw4JkJlfDAmJlJyKGwsNzQzMDIsZXQpLDE2JkJlfDAmJlJyKGwsNzQzMjYscnQpKSxfW0dlPj4zXT0rX1sxNisoMHxhW09lPj4yXSk+PjNdLFJyKGwsNzQzNDgs''@;'; put 'put ''R2UpLGM9YXQrMTZ8MCwwfGFbYXQrNDg+PjJdKXtjYXNlIDU6MHxBMChjPTB8YVtjPj4yXSwxMzczMTQpJiYoYVtFdD4+Ml09YyxScihsLDc0MzY2LEV0KSk7YnJlYWs7Y2FzZSAxOkdlPTB8YnRbYysxPj4wXSxFdD0wfGJ0W2MrMj4+MF0sYVtsdD4+Ml09YnRbYz4+MF0sYVtsdCs0Pj4yXT1H''@;'; put 'put ''ZSxhW2x0Kzg+PjJdPUV0LFJyKGwsNzQzNzcsbHQpO2JyZWFrO2RlZmF1bHQ6QnIoMTM4Mzk0LDczNTU4LDQ4Niw3NDM5OSl9VG4obCw3NDQxMiksNTEyJlR0W2t0Pj4xXSYmKGFbWnQ+PjJdPTB8WDEoMHxhW2F0KzIxMj4+Ml0pLFJyKGwsNzQ0MTQsWnQpLFRuKGwsNzQ0NjMpLE5zKGwsLU10''@;'; put 'put ''KSxUbihsLDc0NDgxKSksVG4obCwwfHdOKDB8YVtmPj4yXSwxKSksNTEyJlR0W2t0Pj4xXSYmUnIobCw3NDQ4NCx1dCksVG4obCw3NDUwNCksb2U9d3R9LGZ1bmN0aW9uIE5pZShsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTA7c3dpdGNoKDB8KGZ8PTApKXtjYXNlIDI6cD0wfHRZKGwsYywyKTti''@;'; put 'put ''cmVhaztjYXNlIDM6cD0wfG5ZKGwpO2JyZWFrO2RlZmF1bHQ6cD0wfVRuKGwsNzQwMDgpLEFJKGwsZixwKSxUbihsLDc0MDE3KSxOcyhsLCtfW2M+PjNdKSxUbihsLDc0MDIzKSxOcyhsLC0rX1soZj1jKzh8MCk+PjNdKSxUbihsLDc0MDMwKSxOcyhsLCtfW2MrMTY+PjNdLStfW2M+PjNdKSxU''@;'; put 'put ''bihsLDc0MDM3KSxOcyhsLCtfW2MrMjQ+PjNdLStfW2Y+PjNdKSxUbihsLDczNDI0KX0sZnVuY3Rpb24gamllKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MDtmb3IoVG4obHw9MCw3MzQwNCksQUkobCwwLDApLFRuKGwsNzM0MTQpLHA9MDshKCgwfHApPj0oMHxmKSk7KU5zKGwsK19bYysocDw8''@;'; put 'put ''NCk+PjNdKSxUbihsLDEwMDk5OSksTnMobCwtK19bYysocDw8NCkrOD4+M10pLFRuKGwsMTAyNjA0KSxwPXArMXwwO1RuKGwsNzM0MjQpfSxmdW5jdGlvbiBZaWUobCxjLGYpe2N8PTAsZnw9MDt2YXIgayxNLHA9MCxtPTAsQT0wLHc9MCxiPTA7aWYoTT1vZSxvZT1vZSs0OHwwLEE9TSs4fDAs''@;'; put 'put ''az1NLDB8YVsxNDQrKHA9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSYmMHwodz1+figrX1tsKzM1Mj4+M10qK19bMTYrKDB8YVsoYj1mKzR8MCk+PjJdKT4+M10pKSl7d0kobCksVG4obCw3NTMzNCksX1sobT1jKzh8MCk+PjNdPStfW20+PjNdLS41NSorKDB8dyksYVtBPj4yXT1hW2M+PjJdLGFb''@;'; put 'put ''QSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sRjMobCxBKSxUbihsLDc1MzQ4KSxUbihsLDB8YVtmPj4yXSksVG4obCw3NTM1NyksVG4obCw3NTE1NSksYz1wKzE2fDAscD0obT1BKSs0MHwwO2Rve2FbbT4+Ml09YVtjPj4yXSxtPW0r''@;'; put 'put ''NHwwLGM9Yys0fDB9d2hpbGUoKDB8bSk8KDB8cCkpO3N3aXRjaChDNyhsLEEpLFRuKGwsNzUzNTkpLGI9MHxhWygwPT0oMHwoYj0wfGFbOCsoQT0wfGFbYj4+Ml0pPj4yXSkpP0E6Yis0fDApPj4yXSxUbihsLDk4NzQ0KSxUbihsLGIpLFRuKGwsOTg3NDQpLGFbaz4+Ml09dyxScihsLDc1MzY4''@;'; put 'put ''LGspLDB8dWVbZis0OD4+MF0pe2Nhc2UgMTA4OlRuKGwsNzUzNzMpO2JyZWFrO2Nhc2UgMTE0OlRuKGwsNzUzODQpfWl5KGwpLFRuKGwsMTUzNTk5KX1vZT1NfSxmdW5jdGlvbiBvWShsLGMsZil7Y3w9MCxmfD0wO3ZhciBtLEEsdyxiLHA9MCxrPTAsTT0wLEQ9MDtpZihiPW9lLG9lPW9lKzQ4''@;'; put 'put ''fDAsbT1iLDB8YVsodz0xNDQrKEE9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSl7TT0rX1tjKzI0Pj4zXSxrPStfWyhwPWMrOHwwKT4+M10sX1tjPj4zXT0oRD0rX1tjPj4zXSktK19bYysxNj4+M10rRCxfW3A+PjNdPWstTStrLHdJKGwpLFRuKGwsNzUzMjApLE5kKGwsYywyKSxUbihsLDc1''@;'; put 'put ''MTU1KTtkb3tpZighZil7aWYoMHxhWzQ2NzIzXSl7VG4obCwxMzcxOTgpO2JyZWFrfVRuKGwsOTczMDkpO2JyZWFrfWY9QSs1NnwwLHA9KGM9bSkrNDB8MDtkb3thW2M+PjJdPWFbZj4+Ml0sYz1jKzR8MCxmPWYrNHwwfXdoaWxlKCgwfGMpPCgwfHApKTtDNyhsLG0pfXdoaWxlKDApOzE9PSgw''@;'; put 'put ''fGFbNDY3MjNdKSYmKGFbNDY3MjNdPTApLFRuKGwsNzUyNjYpLE5zKGwsK19bQSsxNTI+PjNdKSxUbihsLDc1MzA5KSxmPUErMTZ8MCxwPShjPW0pKzQwfDA7ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSk7QzcobCxtKSwxPT0oMHwoYz0wfGFb''@;'; put 'put ''dz4+Ml0pKSYmKFRuKGwsNzUxNjMpLGM9MHxhW3c+PjJdKSwyPT0oMHxjKSYmVG4obCw3NTE3MiksaXkobCksVG4obCwxNTM1OTkpfW9lPWJ9LGZ1bmN0aW9uIHNZKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsQSx3LGIsbT0wO2lmKGI9b2Usb2U9b2UrNDh8MCxBPWIsMHxhWyh3PTE0NCsocD0w''@;'; put 'put ''fGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKXt3SShsKSxUbihsLDc1MTQxKSxOZChsLGMsZiksVG4obCw3NTE1NSksYz1wKzE2fDAsZj0obT1BKSs0MHwwO2Rve2FbbT4+Ml09YVtjPj4yXSxtPW0rNHwwLGM9Yys0fDB9d2hpbGUoKDB8bSk8KDB8ZikpO0M3KGwsQSksMT09KDB8KGM9MHxhW3c+''@;'; put 'put ''PjJdKSkmJihUbihsLDc1MTYzKSxjPTB8YVt3Pj4yXSksMj09KDB8YykmJlRuKGwsNzUxNzIpLGl5KGwpLFRuKGwsMTUzNTk5KX1vZT1ifSxmdW5jdGlvbiBTNShsLGMsZil7Y3w9MDt2YXIgayxNLEQsUixHLEsscGUsbWUsYmUsT2UsQmUsamUsZXQscD0wLG09MCxBPTAsdz0wLGI9MCxMZT0w''@;'; put 'put ''LEhlPTA7c3dpdGNoKGplPW9lLG9lPW9lKzExMnwwLEJlPWplKzk2fDAsSGU9amUrODh8MCxPZT1qZSs4MHwwLFI9amUrNzJ8MCxiZT1qZSs2NHwwLHBlPWplKzU2fDAsSz1qZSs0OHwwLEc9amUrNDB8MCxEPWplKzI0fDAsTT1qZSs4fDAsaz1qZSxMZT0wfGFbMTYrKGx8PTApPj4yXSwwfHVl''@;'; put 'put ''WzQ4KyhmfD0wKT4+MF0pe2Nhc2UgMTA4OkE9K19bYz4+M10sYj0rX1tmKzMyPj4zXTticmVhaztjYXNlIDExNDpBPStfW2M+PjNdLShiPStfW2YrMzI+PjNdKTticmVhaztkZWZhdWx0OkE9K19bYz4+M10tLjUqKGI9K19bZiszMj4+M10pfXN3aXRjaCgobT0rX1socD1mKzQwfDApPj4zXSk8''@;'; put 'put ''KHc9K19bMTYrKDB8YVsobWU9Zis0fDApPj4yXSk+PjNdKSYmKF9bcD4+M109bT0xLjEqdysxKSxldD1BKy04LHc9KygoMHxhWzQ2NzI3XSk+Pj4wKS0rX1tjKzg+PjNdLW0rLjIqdysodzwxMj8xLjQ6MiksUnIobCw3NjAwNSxrKSxfW00+PjNdPWV0LF9bTSs4Pj4zXT13LFJyKGwsNzU5NDIs''@;'; put 'put ''TSksX1tEPj4zXT1BKzgrYi1ldCxfW0QrOD4+M109bSxScihsLDc1OTY2LEQpLFRuKGwsNzYwNDApLFRuKGwsNzYwNzQpLChjPTB8YVs4KyhwPTB8YVttZT4+Ml0pPj4yXSk/KGFbRz4+Ml09YVtjKzQ+PjJdLFJyKGwsNzYxNjQsRyksMHwocD0wfGFbYys4Pj4yXSkmJihhW0s+PjJdPXAsUnIo''@;'; put 'put ''bCw3NjE4MyxLKSksMHwocD0wfGFbYysxMj4+Ml0pJiYoYVtwZT4+Ml09cCxScihsLDc2MjAwLHBlKSksMHwocD0wfGFbYysxNj4+Ml0pJiYoYVtiZT4+Ml09cCxScihsLDc2MjE4LGJlKSkpOihhW1I+PjJdPWFbcD4+Ml0sUnIobCw3NjE2NCxSKSksX1tPZT4+M109K19bMTYrKDB8YVttZT4+''@;'; put 'put ''Ml0pPj4zXSxScihsLDc2MjM0LE9lKSxwPUxlKzE2fDAsMHxhW0xlKzQ4Pj4yXSl7Y2FzZSA1OjB8QTAocD0wfGFbcD4+Ml0sMTM3MzE0KSYmKGFbSGU+PjJdPXAsUnIobCw3NjI1NCxIZSkpO2JyZWFrO2Nhc2UgMTpMZT0wfGJ0W3ArMT4+MF0sSGU9MHxidFtwKzI+PjBdLGFbQmU+PjJdPWJ0''@;'; put 'put ''W3A+PjBdLGFbQmUrND4+Ml09TGUsYVtCZSs4Pj4yXT1IZSxScihsLDc2MjY0LEJlKTticmVhaztkZWZhdWx0OkJyKDEzODM5NCw3NTcyOCw0MzgsNzYyODUpfVRuKGwsNzYyOTgpLFRuKGwsMHxNNSgwfGFbZj4+Ml0pKSxUbihsLDc2MzA5KSxUbihsLDc2MzMyKSxvZT1qZX0sZnVuY3Rpb24g''@;'; put 'put ''SmllKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbSxBLHcsYixNLGs9MDtwPW9lLG9lPW9lKzMyfDAsbT1wKzE2fDAsYj1wLFRuKGx8PTAsNzU5MDYpLEE9KGs9K19bYysyND4+M10pLStfW2MrOD4+M10saz0rKCgwfGFbNDY3MjddKT4+PjApLWssX1tiPj4zXT0oTT0rX1tjPj4zXSktKHc9K19b''@;'; put 'put ''YysxNj4+M10tTSksX1tiKzg+PjNdPWssUnIobCw3NTk0MixiKSxfW20+PjNdPTIqdyxfW20rOD4+M109MipBLFJyKGwsNzU5NjYsbSksZlkobCxmKSxUbihsLDc1Nzg4KSxiSShsKSxUbihsLDc1OTk0KSxvZT1wfSxmdW5jdGlvbiBjWShsLGMsZil7Y3w9MCxmfD0wO3ZhciB3LGIsayxwPTAs''@;'; put 'put ''bT0wLEE9MCxNPTA7Zm9yKGs9b2Usb2U9b2UrNDh8MCxiPWsrMjR8MCx3PWsrOHwwLG09ayxUbihsfD0wLDc1NTExKSxBPTB8YVs0NjcyN10sYVttPj4yXT1hWzQ2NzI2XSxhW20rND4+Ml09QSxScihsLDc1NTQ4LG0pLFRuKGwsNzU1ODgpLG09ZistMXwwLEE9Yys4fDAscD0wOyEoKDB8cCk+''@;'; put 'put ''PSgwfGYpKTspcD8oTT0rKCgwfGFbNDY3MjddKT4+PjApLStfW2MrKHA8PDQpKzg+PjNdLF9bYj4+M109K19bYysocDw8NCk+PjNdLF9bYis4Pj4zXT1NLFJyKGwsNzU2MDQsYikpOihUbihsLDc1NjAwKSxNPSsoKDB8YVs0NjcyN10pPj4+MCktK19bQT4+M10sX1t3Pj4zXT0rX1tjPj4zXSxf''@;'; put 'put ''W3crOD4+M109TSxScihsLDc1NjA0LHcpLFRuKGwsNzU2MTUpKSwoMHxwKT09KDB8bSkmJlRuKGwsNzU2MTkpLHA9cCsxfDA7VG4obCw3NTYyMyksYkkobCksVG4obCw3NTYyNyksb2U9a30sZnVuY3Rpb24gaHZlKGwsYyxmKXtsfD0wLGN8PTA7dmFyIEQsRyxLLHBlLG1lLHA9MCxtPTAsQT0w''@;'; put 'put ''LHc9MCxiPTAsaz0wLE09MCxSPTA7c3dpdGNoKEc9b2Usb2U9b2UrMTQ0fDAsTT1HKzEwNHwwLFI9Rys1NnwwLGI9RyszMnwwLEE9RysyNHwwLHA9K19bMTYrKG09MHxhWyhEPTQrKGZ8PTApfDApPj4yXSk+PjNdLG09MHxhW20+PjJdLGFbKGs9Ryk+PjJdPWFbZj4+Ml0sX1trKzg+PjNdPXAs''@;'; put 'put ''YVtrKzE2Pj4yXT1tLFJyKGwsNzkwNDAsayksV25bNDY3MjldPStXbls0NjcyOF0tOSwwfHVlW2YrNDg+PjBdKXtjYXNlIDEwODpwPStfW2M+PjNdO2JyZWFrO2Nhc2UgMTE0Om09YyxwPStfW2M+PjNdLStfW2YrMzI+PjNdLHc9NTticmVhaztkZWZhdWx0Om09YyxwPStfW2M+PjNdLS41Kitf''@;'; put 'put ''W2YrMzI+PjNdLHc9NX01PT0oMHx3KSYmKF9bbT4+M109cCkscGU9KCtfW2wrNTA0Pj4zXStwKSoobWU9K19bbCs0ODg+PjNdKSxLPSgrX1tsKzUxMj4+M10rICtfW2MrOD4+M10pKitfW2wrNDk2Pj4zXSxfW0E+PjNdPStfWzE2KygwfGFbRD4+Ml0pPj4zXSptZSxrPTB8a2EobCw3OTA5MixB''@;'; put 'put ''KSxwPSsoMHxhW2wrMzYwPj4yXSksX1tiPj4zXT0wLF9bYis4Pj4zXT0wLF9bYisxNj4+M109cCxtPTB8a2EobCw3ODMwOSxiKSxwPStXbls0NjcyOV0sX1tNPj4zXT1wZSxfW00rOD4+M109SyxfW00rMTY+PjNdPXAsYz0wfGthKGwsNzgzNDEsTSksdz0xNisoMHxhW2wrMTY+PjJdKXwwLGI9''@;'; put 'put ''KEE9TSkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTtNPTB8b3kobCxNLDApLGY9MHxhW2Y+PjJdLGFbUj4+Ml09YVthW0Q+PjJdPj4yXSxfW1IrOD4+M109LjI1LF9bUisxNj4+M109MCxhW1IrMjQ+PjJdPWYsYVtSKzI4Pj4yXT03''@;'; put 'put ''OTE3OSxhW1IrMzI+PjJdPWssYVtSKzM2Pj4yXT1tLGFbUis0MD4+Ml09YyxhW1IrNDQ+PjJdPU0sVG4obCxSPTB8a2EobCw3OTEwNCxSKSksSHQoUiksSHQobSksSHQoTSksSHQoYyksSHQoayksb2U9R30sZnVuY3Rpb24gZHZlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIE0sRCxSLEcsSyxwZSxt''@;'; put 'put ''ZSxqZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxiZT0wLE9lPTAsTGU9MCxCZT0wLEhlPTAsZXQ9MDtqZT1vZSxvZT1vZSsyNDB8MCxCZT1qZSsxOTJ8MCxIZT1qZSsxNTJ8MCxtZT1qZSsxMjh8MCxLPWplKzEwNHwwLEQ9amUrODB8MCxNPWplKzQ4fDAscD1qZSsyNHwwLGs9amUsVG4obHw9''@;'; put 'put ''MCw3ODkxNyksV25bNDY3MjldPStXbls0NjcyOF0tNixSPSgrX1tsKzUwND4+M10rKEE9K19bYz4+M10pKSoodz0rX1tsKzQ4OD4+M10pLEc9KCtfW2wrNTEyPj4zXSsoZXQ9K19bYys4Pj4zXSkpKihiPStfW2wrNDk2Pj4zXSksQT0rX1sxNTIrKDB8YVsocGU9bCsxNnwwKT4+Ml0pPj4zXS8o''@;'; put 'put ''ZXQ9KGIqPStfW2MrMjQ+PjNdLWV0KSsodyo9K19bYysxNj4+M10tQSkpKjIuNSxfW2s+PjNdPXcsX1trKzg+PjNdPS4yNSpldCxfW2srMTY+PjNdPWIsYz0wfGthKGwsNzgyNzcsayksZXQ9KygwfGFbKGs9bCszNjB8MCk+PjJdKSxfW3A+PjNdPTkwLF9bcCs4Pj4zXT0wLF9bcCsxNj4+M109''@;'; put 'put ''ZXQscD0wfGthKGwsNzgzMDkscCksZXQ9K1duWzQ2NzI5XSxfW0JlPj4zXT1SLF9bQmUrOD4+M109RyxfW0JlKzE2Pj4zXT1ldCxtPTB8a2EobCw3ODM0MSxCZSksT2U9MTYrKDB8YVtwZT4+Ml0pfDAsTGU9KGJlPUJlKSs0MHwwO2Rve2FbYmU+PjJdPWFbT2U+PjJdLGJlPWJlKzR8MCxPZT1P''@;'; put 'put ''ZSs0fDB9d2hpbGUoKDB8YmUpPCgwfExlKSk7aWYoT2U9MHxveShsLEJlLDApLF9bTT4+M109MSxfW00rOD4+M109QSxhW00rMTY+PjJdPWMsYVtNKzIwPj4yXT1wLGFbTSsyND4+Ml09bSxhW00rMjg+PjJdPU9lLFRuKGwsTGU9MHxrYShsLDc4OTMyLE0pKSxIdChjKSxIdChwKSxIdChtKSxI''@;'; put 'put ''dChPZSksSHQoTGUpLDB8Zil7X1tEPj4zXT13LF9bRCs4Pj4zXT1iLF9bRCsxNj4+M109MSxtPTB8a2EobCw3ODI3NyxEKSxldD0rKDB8YVtrPj4yXSksX1tLPj4zXT0wLF9bSys4Pj4zXT0wLF9bSysxNj4+M109ZXQscD0wfGthKGwsNzgzMDksSyksZXQ9K1duWzQ2NzI5XSxfW21lPj4zXT1S''@;'; put 'put ''LF9bbWUrOD4+M109RyxfW21lKzE2Pj4zXT1ldCxjPTB8a2EobCw3ODM0MSxtZSksT2U9NTYrKDB8YVtwZT4+Ml0pfDAsTGU9KGJlPUJlKSs0MHwwO2Rve2FbYmU+PjJdPWFbT2U+PjJdLGJlPWJlKzR8MCxPZT1PZSs0fDB9d2hpbGUoKDB8YmUpPCgwfExlKSk7QmU9MHxveShsLEJlLDApLF9b''@;'; put 'put ''SGU+PjNdPTAsX1tIZSs4Pj4zXT0wLF9bSGUrMTY+PjNdPTAsYVtIZSsyND4+Ml09bSxhW0hlKzI4Pj4yXT1wLGFbSGUrMzI+PjJdPWMsYVtIZSszNj4+Ml09QmUsVG4obCxIZT0wfGthKGwsNzg5NzgsSGUpKSxIdChtKSxIdChwKSxIdChjKSxIdChCZSksSHQoSGUpfW9lPWplfSxmdW5jdGlv''@;'; put 'put ''biBtdmUobCxjLGYpe2N8PTAsZnw9MDt2YXIgYixELFIsSyxwZSxiZSxPZSxwPTAsbT0wLEE9MCx3PTAsaz0wLE09MCxHPTAsbWU9MCxMZT0wLEJlPTAsSGU9MDtPZT1vZSxvZT1vZSsxNjB8MCxwPU9lKzEyMHwwLGJlPU9lKzExMnwwLG1lPU9lKzk2fDAscGU9T2UrODh8MCxLPU9lKzU2fDAs''@;'; put 'put ''az1PZSs0OHwwLE09T2UrMjR8MCxHPU9lLFRuKGx8PTAsNzgyNjEpLFduWzQ2NzI5XT0rV25bNDY3MjhdLTYsTGU9K19bbCs0OTY+PjNdLF9bRz4+M109K19bbCs0ODg+PjNdLF9bRys4Pj4zXT1MZSxfW0crMTY+PjNdPTEsRz0wfGthKGwsNzgyNzcsRyksTGU9KygwfGFbbCszNjA+PjJdKSxf''@;'; put 'put ''W00+PjNdPTAsX1tNKzg+PjNdPTAsX1tNKzE2Pj4zXT1MZSxNPTB8a2EobCw3ODMwOSxNKSxMZT0rV25bNDY3MjldLF9bcD4+M109MCxfW3ArOD4+M109MCxfW3ArMTY+PjNdPUxlLEQ9MHxrYShsLDc4MzQxLHApLEE9MTYrKDB8YVsoUj1sKzE2fDApPj4yXSl8MCx3PShtPXApKzQwfDA7ZG97''@;'; put 'put ''YVttPj4yXT1hW0E+PjJdLG09bSs0fDAsQT1BKzR8MH13aGlsZSgoMHxtKTwoMHx3KSk7Zm9yKEE9MHxveShsLHAsMCksYVtrPj4yXT03ODQwNCxhW2srND4+Ml09Zix3PWwrNTA0fDAsYj1sKzUxMnwwLG09MCxwPTB8a2EobCw3ODM3MyxrKTshKCgwfG0pPj0oMHxmKSk7KUhlPStfW2I+PjNd''@;'; put 'put ''KyArX1tjKyhtPDw0KSs4Pj4zXSxMZT0rX1sxNTIrKDB8YVtSPj4yXSk+PjNdLF9bSz4+M109K19bdz4+M10rICtfW2MrKG08PDQpPj4zXSxfW0srOD4+M109SGUsX1tLKzE2Pj4zXT0wLF9bSysyND4+M109TGUsQmU9MHxrYShsLDc4NDE4LEspLGFbcGU+PjJdPXAsYVtwZSs0Pj4yXT1CZSxr''@;'; put 'put ''PTB8a2EobCw3ODQ0NyxwZSksSHQoQmUpLEh0KHApLG09bSsxfDAscD1rO2FbbWU+PjJdPUcsYVttZSs0Pj4yXT1NLGFbbWUrOD4+Ml09RCxhW21lKzEyPj4yXT1BLG1lPTB8a2EobCw3ODQ1NixtZSksYVtiZT4+Ml09cCxhW2JlKzQ+PjJdPW1lLEJlPTB8a2EobCw3ODUwMixiZSksSHQobWUp''@;'; put 'put ''LFRuKGwsQmUpLEh0KEcpLEh0KE0pLEh0KEQpLEh0KEEpLEh0KEJlKSxvZT1PZX0sZnVuY3Rpb24gX3ZlKGwsYyxmKXtsfD0wLGN8PTA7dmFyIGssTSxSLEcsSyxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MDtzd2l0Y2goSz1vZSxvZT1vZSs0OHwwLEc9SysyNHwwLFI9Sys4fDAsRD1LLDB8dWVb''@;'; put 'put ''NDgrKGZ8PTApPj4wXSl7Y2FzZSAxMDg6Yj1jLEE9K19bZiszMj4+M10sdz0rX1tjPj4zXTticmVhaztjYXNlIDExNDptPUE9K19bZiszMj4+M10scD01O2JyZWFrO2RlZmF1bHQ6bT0uNSooQT0rX1tmKzMyPj4zXSkscD01fTU9PSgwfHApJiYoX1tjPj4zXT13PStfW2M+PjNdLW0sYj1jKSxf''@;'; put 'put ''WyhjPWMrOHwwKT4+M109TT0rX1tjPj4zXSsuMDA0NjI5NjI5NjI5NjI5NjI5KihtPStfWzE2KyhwPTB8YVsoaz1mKzR8MCk+PjJdKT4+M10pLF9bYj4+M109QT13Ky4wMDY5NDQ0NDQ0NDQ0NDQ0NDQqQSxwPTB8YVtwPj4yXTtkb3tpZihwKXtpZigwfChjPTB8YVs0NjczMF0pJiYwPT0oMHxa''@;'; put 'put ''aShjLHApKSlicmVhazthW0Q+PjJdPTB8RXZlKHApLFJyKGwsODExNzMsRCksYVs0NjczMF09YVsoRD0wfGFbaz4+Ml0pPj4yXSxtPStfW0QrMTY+PjNdfX13aGlsZSgwKTsoMHwocD0oMHwocD1+fm0pKT4xP3A6MSkpIT0oMHxhWzQ2NzMxXSkmJih3PStfWzE5MjE0XSxhW1I+PjJdPXAsX1tS''@;'; put 'put ''Kzg+PjNdPXcsUnIobCw4MTE4MSxSKSxhWzQ2NzMxXT1wKSxhW0c+PjJdPTB8ZnVuY3Rpb24geHZlKGwpe2x8PTA7dmFyIEEsdyxjPTAsZj0wLHA9MCxtPTA7Zm9yKHc9b2Usb2U9b2UrMTZ8MCxBPXcsKGM9MHxhWzQ2NzMyXSl8fChhWzQ2NzMzXT02NCxjPTB8UjAoNjQpLGFbNDY3MzJdPWMp''@;'; put 'put ''LGY9MDttPWwrMXwwLChwPTB8dWVbbD4+MF0pPDwyND4+MjQ7KSgwfGYpPigobD0wfGFbNDY3MzNdKS04fDApJiYoYVs0NjczM109Yz1sPDwxLGM9MHxaYSgwfGFbNDY3MzJdLGMpLGFbNDY3MzJdPWMsYz1jK2Z8MCkscDw8MjQ+PjI0PD0tMT8odWVbYz4+MF09OTIsYVtBPj4yXT0yNTUmcCxh''@;'; put 'put ''byhjKzF8MCw4MTIyNCxBKSxsPW0sYz1jKzR8MCxmPWYrNHwwKToocDw8MjQ+PjI0PT05MiYmKHVlW2M+PjBdPTkyLGY9ZisxfDAsYz1jKzF8MCksdWVbYz4+MF09cCxsPW0sYz1jKzF8MCxmPWYrMXwwKTtyZXR1cm4gdWVbYz4+MF09MCxvZT13LDB8YVs0NjczMl19KDB8YVtmPj4yXSksX1tH''@;'; put 'put ''Kzg+PjNdPUEsX1tHKzE2Pj4zXT1NLFJyKGwsODEyMDIsRyksb2U9S30sZnVuY3Rpb24gQ3ZlKGwsYyxmKXt2YXIgcCxtLEEsdyxiLGs7bHw9MCxmfD0wLHA9b2Usb2U9b2UrNDh8MCxrPS4wMjc3Nzc3Nzc3Nzc3Nzc3NzYqKCtfWzE2KyhjfD0wKT4+M10tKHc9K19bYz4+M10pKSxiPS4wMjc3''@;'; put 'put ''Nzc3Nzc3Nzc3Nzc3NzYqKCtfW2MrMjQ+PjNdLShBPStfW2MrOD4+M10pKSxhWyhtPXApPj4yXT0xLGFbbSs0Pj4yXT0wfGY/ODExMTU6MTk1MDU5LF9bbSs4Pj4zXT1rLF9bbSsxNj4+M109YixfW20rMjQ+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqdyxfW20rMzI+PjNdPS4wMTM4ODg4ODg4''@;'; put 'put ''ODg4ODg4ODgqQSxScihsLDgxMTIxLG0pLG9lPXB9LGZ1bmN0aW9uIE12ZShsLGMsZil7dmFyIHA7Y3w9MCxmfD0wLHA9b2Usb2U9b2UrMTZ8MCx1SCgwfGFbMTYrKGx8PTApPj4yXSxwKzh8MCxwKSxFNShsLGMsZiwwKSxvZT1wfSxmdW5jdGlvbiBYMGUobCxjLGYpe2YwKGN8PTAsODcyMzAs''@;'; put 'put ''MHxhWyhmfD0wKT4+Ml0sMSl9LGZ1bmN0aW9uIFdIKGwsYyxmKXtmMChjfD0wLDg3Mzk3LDB8YVs0KyhmfD0wKT4+Ml0sMSl9LGZ1bmN0aW9uIFpJKGwsYyxmKXtmMChjfD0wLDg3MzgyLDB8YVs4KyhmfD0wKT4+Ml0sMSl9LGZ1bmN0aW9uIHJzZShsLGMsZil7SHQoY3w9MCl9LGZ1bmN0aW9u''@;'; put 'put ''IHlUKGwsYyxmKXtIdChjfD0wKX0sZnVuY3Rpb24gZUYobCxjLGYpe0h0KGN8PTApfSxmdW5jdGlvbiByRihsLGMsZil7JGkoMHxhWzQ2OTQyXSwwfGFbOCsoY3w9MCk+PjJdKSwkaSgwfGFbNDY5NDJdLDB8YVtjKzEyPj4yXSksSXQoMHxhWzQ2OTQyXSxjKX0sZnVuY3Rpb24gdUYobCxjLGYp''@;'; put 'put ''e30sZnVuY3Rpb24gUXQobCxjLGYpe2x8PTAsKDI4KyhsPTB8YVsxNisoY3w9MCk+PjJdKXwwKSE9KDB8YykmJkl0KDB8YVtsKzI0Pj4yXSxjKX0sZnVuY3Rpb24gZzAobCxjLGYpeyhmdW5jdGlvbiBTMChsKXt2YXIgYyxmPTA7Zm9yKGM9MTYrKGx8PTApfDAsbD0wfGFbbCsyND4+Ml07bDsp''@;'; put 'put ''Zj0wfGFbbCs0Pj4yXSxJdCgwfGFbYz4+Ml0sbCksbD1mfSkoY3w9MCksSXQoMHxhW2MrMTY+PjJdLGMpfSxmdW5jdGlvbiBKbmUobCxjLGYpe2x8PTAsY3w9MCwobD0wfGFbNDY5ODRdKT9JdChsLGMpOkh0KGMpfSxmdW5jdGlvbiB1N2UobCxjLGYpe2x8PTA7dmFyIHA9MDswfChsPTB8YVsy''@;'; put 'put ''MCsoY3w9MCk+PjJdKSYmdXcobCksMHxhW2MrNTI+PjJdJiYwfChwPTB8YVtjKzYwPj4yXSkmJm5vWzEyNyZwXShjKSxIdChjKX0sZnVuY3Rpb24gTm9lKGwsYyxmKXtIdChjfD0wKX0sZnVuY3Rpb24gc2FlKGwsYyxmKXtIdChjfD0wKX0sZnVuY3Rpb24gTjcobCxjLGYpe2FbKGN8PTApPj4y''@;'; put 'put ''XT1hWyhmPTM2KyhmfD0wKXwwKT4+Ml0sYVtmPj4yXT1jfSxmdW5jdGlvbiBDYWUobCxjLGYpe0h0KDB8YVs1MisoY3w9MCk+PjJdKX0sZnVuY3Rpb24ga2xlKGwsYyxmKXtIdChjfD0wKX0sZnVuY3Rpb24gU2xlKGwsYyxmKXtIdChjfD0wKX0sZnVuY3Rpb24gdW0obCxjLGYpe2lzKDB8YVsx''@;'; put 'put ''NisoY3w9MCk+PjJdKSxIdChjKX0sZnVuY3Rpb24gb0UobCxjLGYpeyhmdW5jdGlvbiBGUihsKXt2YXIgZixjPTAscD0wO2ZvcihmPTQrKGx8PTApfDAsYz0wO3A9MHxhW2Y+PjJdLCEoKDB8Yyk+PSgwfGFbbD4+Ml0pKTspaXMoMHxhW3ArKDEyKmN8MCkrOD4+Ml0pLGM9YysxfDA7SHQocCks''@;'; put 'put ''SHQobCl9KSgwfGFbMzIrKGN8PTApPj4yXSksSHQoMHxhW2MrMjg+PjJdKSxIdChjKX0sZnVuY3Rpb24gWFIobCxjLGYpe2x8PTAsZnw9MDt2YXIgYixwPTAsbT0wLEE9MCx3PTA7c3dpdGNoKGI9b2Usb2U9b2UrMTZ8MCxwPWIsMHwoY3w9MCkpe2Nhc2UgMTphW3A+PjJdPWFbZj4+Ml0sYVtw''@;'; put 'put ''KzQ+PjJdPWFbZis0Pj4yXSxhW3ArOD4+Ml09YVtmKzg+PjJdLGFbcCsxMj4+Ml09YVtmKzEyPj4yXSxPOShsLHApLGZ1bmN0aW9uIGdtKGwpe3ZhciBjPTAsZj0wLHA9MDtjPTB8YVsocD01ODArKGx8PTApfDApPj4yXTtlOmRve2lmKDB8Yylzd2l0Y2goMHxNaShjKSl7Y2FzZSAwOnVlWyhm''@;'; put 'put ''PTExMisoMHxhW2MrMTY+PjJdKXwwKT4+MF09LTcmdWVbZj4+MF18NDticmVhayBlO2Nhc2UgMTp1ZVsoZj0xMTcrKDB8YVtjKzE2Pj4yXSl8MCk+PjBdPS03JnVlW2Y+PjBdfDQ7YnJlYWsgZTtjYXNlIDI6dWVbKGY9MTE1KygwfGFbYysxNj4+Ml0pfDApPj4wXT0tNyZ1ZVtmPj4wXXw0O2Jy''@;'; put 'put ''ZWFrIGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKTswfChmPTB8YVsoYz1sKzU4OHwwKT4+Ml0pJiYoSHQoZiksYVtjPj4yXT0wKSxhW3A+PjJdPWM9MHxhW2wrNTc2Pj4yXTtlOmRve2lmKDB8Yylzd2l0Y2goMHxNaShjKSl7Y2FzZSAwOnVlWyhwPTExMisoMHxhW2MrMTY+PjJdKXwwKT4+''@;'; put 'put ''MF09Mnx1ZVtwPj4wXSxCOShsLGMpO2JyZWFrIGU7Y2FzZSAxOnVlWyhwPTExNysoMHxhW2MrMTY+PjJdKXwwKT4+MF09Mnx1ZVtwPj4wXSxXbChsLGMpO2JyZWFrIGU7Y2FzZSAyOnVlWyhwPTExNSsoMHxhW2MrMTY+PjJdKXwwKT4+MF09Mnx1ZVtwPj4wXSxtbShsLGMpO2JyZWFrIGU7ZGVm''@;'; put 'put ''YXVsdDpicmVhayBlfX13aGlsZSgwKX0obCksdWVbbCs1Mzg+PjBdPTEsdWVbbCs1NDE+PjBdPTEsdz0xMzticmVhaztjYXNlIDI6dWVbbCs1Mzg+PjBdPTEsdWVbbCs1NDE+PjBdPTIsdz0xMzticmVhaztjYXNlIDM6YVtwPj4yXT1hW2Y+PjJdLGFbcCs0Pj4yXT1hW2YrND4+Ml0sYVtwKzg+''@;'; put 'put ''PjJdPWFbZis4Pj4yXSxhW3ArMTI+PjJdPWFbZisxMj4+Ml0sTzkobCxwKSx1ZVtsKzUzOD4+MF09MSx1ZVtsKzU0MT4+MF09Myx3PTEzO2JyZWFrO2Nhc2UgNDp1ZVtsKzUzNj4+MF09MCwwfGFbbCszNjA+PjJdPyhfWyhjPWwrMzM2fDApPj4zXT0rX1tjPj4zXS0uMTAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDkqKCtfW2YrOD4+M10tLjUqKygoMHxhW2wrNDUyPj4yXSk+Pj4wKSkvKCtfW2wrNTI4Pj4zXSooQT0rX1socD1sKzM1MnwwKT4+M10pKSxtPStfW2Y+PjNdLS41KisoKDB8YVtsKzQ0OD4+Ml0pPj4+MCksYz1sKzUyMHwwKTooX1soYz1sKzMzNnwwKT4+M109LjEwMDAwMDAwMDAwMDAwMDA5''@;'; put 'put ''KigrX1tmPj4zXS0uNSorKCgwfGFbbCs0NDg+PjJdKT4+PjApKS8oK19bbCs1MjA+PjNdKihBPStfWyhwPWwrMzUyfDApPj4zXSkpKyArX1tjPj4zXSxtPStfW2YrOD4+M10tLjUqKygoMHxhW2wrNDUyPj4yXSk+Pj4wKSxjPWwrNTI4fDApLF9bKHc9bCszNDR8MCk+PjNdPS4xMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwOSptLygrX1tjPj4zXSpBKSsgK19bdz4+M10sX1twPj4zXT0xLjEqQSx3PTEzO2JyZWFrO2Nhc2UgNTp1ZVtsKzUzNj4+MF09MCxfWyh3PWwrMzUyfDApPj4zXT1BPS45MDkwOTA5MDkwOTA5MDkxKitfW3c+PjNdLDB8YVtsKzM2MD4+Ml0/KF9bKHA9bCszMzZ8MCk+PjNdPS4xMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwOSooK19bZis4Pj4zXS0uNSorKCgwfGFbbCs0NTI+PjJdKT4+PjApKS8oK19bbCs1Mjg+PjNdKkEpKyArX1twPj4zXSxtPStfW2Y+PjNdLS41KisoKDB8YVtsKzQ0OD4+Ml0pPj4+MCkscD1sKzUyMHwwKTooX1socD1sKzMzNnwwKT4+M109K19bcD4+M10tLjEwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDA5KigrX1tmPj4zXS0uNSorKCgwfGFbbCs0NDg+PjJdKT4+PjApKS8oK19bbCs1MjA+PjNdKkEpLG09K19bZis4Pj4zXS0uNSorKCgwfGFbbCs0NTI+PjJdKT4+PjApLHA9bCs1Mjh8MCksX1sodz1sKzM0NHwwKT4+M109K19bdz4+M10tLjEwMDAwMDAwMDAwMDAwMDA5Km0vKCtf''@;'; put 'put ''W3A+PjNdKkEpLHc9MTN9MTM9PSgwfHcpJiYodWVbbCs1Mzc+PjBdPTEpLGFbKGw9bCs1NjB8MCk+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXSxvZT1ifSxmdW5jdGlvbiBUYihsLGMsZil7dWVbNTM4Kyhs''@;'; put 'put ''fD0wKT4+MF09MCx1ZVtsKzU0MT4+MF09MH0sZnVuY3Rpb24gRGIobCxjLGYpe30sZnVuY3Rpb24gX0cobCxjLGYpe2Z8PTA7dmFyIGIscD0wLG09MCxBPTAsdz0wO2I9MHxhWyhsfD0wKT4+Ml0sKGN8PTApPzB8KGM9MHxnUyhjLDEzODgyMSkpJiYodz0wfFBUKGMsMCksdXcoYykscD01KToo''@;'; put 'put ''dz0wfFBUKDB8YVsxNTY0N10sMCkscD01KSw1PT0oMHxwKSYmMHx3JiYoMHwoYz0wfGFbKG09YisxNjh8MCk+PjJdKSYmKDAhPSgwfChwPTB8YVtiKzE3Mj4+Ml0pKSYmMCE9KDB8KEE9MHxhW3ArND4+Ml0pKSYmKG5vWzEyNyZBXShjKSxjPTB8YVttPj4yXSksZnVuY3Rpb24gV29lKGwpe3Zh''@;'; put 'put ''ciBjPTAsZj0wLHA9MDtjPTB8YVs4KyhmPTB8YVsocD0xNisobHw9MCl8MCk+PjJdKT4+Ml07ZG97aWYoYyl7aWYoKGY9MHxhW2MrODg+PjJdKSYmKFRyZShmKSwhKGM9MHxhWzgrKGY9MHxhW3A+PjJdKT4+Ml0pKSl7Yz1mO2JyZWFrfUh0KDB8YVtjKzkyPj4yXSksYz0wfGFbcD4+Ml19ZWxz''@;'; put 'put ''ZSBjPWZ9d2hpbGUoMCk7SHQoMHxhW2MrOD4+Ml0pLGFbOCsocD0wfGFbcD4+Ml0pPj4yXT0wLFZ1KDB8YVtwKzEyPj4yXSksaHMobCwwLDEzNzQ4Myl9KGMpLFExKDB8YVttPj4yXSkpLFFhKHcsMCwxMzc0ODMsMjgwLDEpLFFhKHcsMSwxMzc0NDcsMzA0LDEpLFFhKHcsMiwxMzc0NjAsMTc2''@;'; put 'put ''LDEpLGFbbT4+Ml09dyxhWzE0NCsoMHxhW3crMTY+PjJdKT4+Ml09YiwtMSE9KDB8QTcoYix3LGYpKSYmKGFbbCs1ODA+PjJdPTAsYVtsKzU3Nj4+Ml09MCx1ZVtsKzUzNz4+MF09MSkpfSxmdW5jdGlvbiBMYihsLGMsZil7Y3w9MCxmfD0wO3ZhciBBLHA9MCxtPTAsdz0wLGI9MDswIT0oMHwo''@;'; put 'put ''cD0wfGFbKG09MTYwKyhBPTB8YVsobHw9MCk+PjJdKXwwKT4+Ml0pKSYmMD09KDB8YVtBKzE2ND4+Ml0pPyh3PTB8YVsoYj1BKzE5MnwwKT4+Ml0sYVttPj4yXT0wLGFbYj4+Ml09MCxtPXcpOihtPTAscD0wKSxmdW5jdGlvbiB2cmUobCxjLGYscCl7cHw9MDt2YXIgbSxBLGIsdz0wO2I9b2Us''@;'; put 'put ''b2U9b2UrMTZ8MCxBPWIsbT0wfGFbNjArKGN8PTApPj4yXSxFRihsfD0wLGZ8PTApLGFbNTYrKGM9MHxhW2wrMTY0Pj4yXSk+PjJdPTB8Q2IoYywwfGFbYys1Mj4+Ml0pLDAhPSgwfGYwKG0sMTM3NDgzLDAsMSkpJiYwIT0oMHxhWzgrKDB8YVttKzE2Pj4yXSk+PjJdKXx8NjcxMDg4NjQmYVtj''@;'; put 'put ''KzE1Mj4+Ml0/dz01OihjNyg5ODkxMSxBKSxjPS0xKSw1PT0oMHx3KSYmKGZ1bmN0aW9uIGQxKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDsoZj0wfGFbKHA9MTYwKyhsfD0wKXwwKT4+Ml0pPyhwPTB8YVs0Njk5OV0pJiYoKGY9MHxhW3ArND4+Ml0pfHwoZj0wfG1yKDYzMiksYVs0KygwfGFbNDY5''@;'; put 'put ''OTldKT4+Ml09ZikpOihmPTB8bXIoNjMyKSxhW3A+PjJdPWYsYVtsKzE2ND4+Ml09ZiksYVs0Njk5OV09ZixhW2YrMzI+PjJdPWMsYVtmPj4yXT1sfShsLHApLHc9MHxkTihsLG0pLEk5KGMpLHdDKGMpLHhGKGwpLGM9dyksb2U9Yn0oQSwwfGFbQSsxNjg+PjJdLGMsZiksMHxwJiYoYVsxNjAr''@;'; put 'put ''KGI9MHxhW2w+PjJdKT4+Ml09cCxhW2IrMTkyPj4yXT1tKX0sZnVuY3Rpb24gV2IobCxjLGYpe0h0KGN8PTApfSxmdW5jdGlvbiBJQihsLGMsZil7aXMoMHxhWzgrKGN8PTApPj4yXSksSHQoYyl9LGZ1bmN0aW9uIHR4KGwsYyxmKXtIdChjfD0wKX0saUMsZ28sZnVuY3Rpb24gV3IobCxjLGYp''@;'; put 'put ''e2x8PTAsZnw9MDt2YXIgcD0wO2ZvcihhWzQ2OTU2XT1jfD0wLGY9MHxGcyhsLGMpO2Y7KXA9MHxUcyhsLGYsYyksZ28obCxmLDApLGY9cDttaVs2MyZhWyhwPTB8YVtsKzQwPj4yXSk+PjJdXShwLDE4NzgwOCwyKSxtaVs2MyZhWyhwPTB8YVtsKzM2Pj4yXSk+PjJdXShwLDE4NzgwOCwyKX0s''@;'; put 'put ''X2wsZnVuY3Rpb24gVWMobCxjLGYpe0NhKGN8PTAsZnw9MCl9LGZ1bmN0aW9uIFFvZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTA7Zm9yKGw9MTkyKygwfGFbMTYrKGx8PTApPj4yXSl8MCxwPTAsdz0wO2w9MHxhW2w+PjJdOyl7Zm9yKG09MHxhWzE4MCsoQT0wfGFbbCsx''@;'; put 'put ''Nj4+Ml0pPj4yXSxsPTA7MHxhW20rKGw8PDIpPj4yXTspbD1sKzF8MCxwPXArMXwwO2w9QSsxNjR8MCx3PXcrMXwwfWFbYz4+Ml09dyxhW2Y+PjJdPXB9LGZ1bmN0aW9uIGdsZShsLGMsZil7SHQoMHxhWyhjfD0wKT4+Ml0pLEh0KDB8YVtjKzQ+PjJdKSxIdChjKX0sbHAsZnVuY3Rpb24gZWMo''@;'; put 'put ''bCxjLGYpe2x8PTAsZnw9MDt2YXIgdyxiLGssTSxwPTAsbT0wLEE9MDtmb3IoTT1vZSxvZT1vZSszMnwwLHc9TSxjbShNKzE2fDAsY3w9MCksYj1jKzMyfDAsaz1jKzM2fDAsbT0wOyEoKDB8bSk+PSgwfGFbYj4+Ml0pKTspKDB8KHA9MHxhWzIwKyhBPTB8YVsoMHxhW2s+PjJdKSsobTw8Mik+''@;'; put 'put ''PjJdKT4+Ml0pKT09KDB8YykmJihwPTB8YVtBKzI0Pj4yXSksQjgodyxBLHApLHpjKGwsZixBLDApLG09bSsxfDA7YVtsPj4yXT0xKygwfGFbbD4+Ml0pLGFbZisyND4+Ml09YyxhW2YrMjA+PjJdPWMsb2U9TX0sZnVuY3Rpb24gYW0obCxjLGYpe2x8PTAsY3w9MDt2YXIgdyxiLHA9MCxtPTAs''@;'; put 'put ''QT0wLGs9MDtmb3IoYj0yMCsoZnw9MCl8MCx3PWYrMjR8MCxmPTA7ISgoMHxmKT49KDB8bCkpOyl7Zm9yKG09MHxhW2MrKGY8PDMpPj4yXSxBPTB8YVtjKyhmPDwzKSs0Pj4yXSxwPTA7ISgoMHxwKT49KDB8bSkpOylyRSgwfEtwKDB8YVsoMD09KDB8dWVbKGs9QSsoNTYqcHwwKXwwKT4+MF0p''@;'; put 'put ''P2I6dyk+PjJdLGspLGspLHA9cCsxfDA7Zj1mKzF8MH19LGZ1bmN0aW9uIG54KGwsYyxmKXsoZnVuY3Rpb24gVWEobCl7dmFyIGM7c3dpdGNoKGM9ODgrKGx8PTApfDAsMHx1ZVtsKzkyPj4wXSl7Y2FzZSAxOmZfKDB8YVtjPj4yXSk7YnJlYWs7Y2FzZSAyOnNCKDB8YVtjPj4yXSl9VmIobCks''@;'; put 'put ''SHQobCl9KSgwfGFbOCsoY3w9MCk+PjJdKSxIdChjKX0sZnVuY3Rpb24gREIobCxjLGYpe0h0KDB8YVs4KyhjfD0wKT4+Ml0pLEh0KGMpfSxmdW5jdGlvbiBMQihsLGMsZil7bHw9MCxmfD0wO3ZhciBtLHA9MCxBPTA7aWYoKGw9MHxUdFsobT0xMisoY3w9MCl8MCk+PjFdKTw8MTY+PjE2KXtm''@;'; put 'put ''b3IoZj0wLHA9MHxhWyhBPWMrOHwwKT4+Ml07ISgoMHxmKT49KGw8PDE2Pj4xNnwwKSk7KUh0KDB8YVtwPj4yXSksZj1mKzF8MCxwPXArNTZ8MCxsPTB8VHRbbT4+MV07SHQoMHxhW0E+PjJdKX1IdChjKX0sZnVuY3Rpb24gaXgobCxjLGYpe2x8PTAsY3w9MCxmfD0wO2Rve2lmKDB8QTAoYywx''@;'; put 'put ''NDA2MDMpKXtpZigwfEEwKGMsMTQwNjA5KSYmMHxBMChjLDE0MDYxMikpe2lmKCEoMHxBMChjLDE0MDYxNSkpKXt1ZVsxODk2NjJdPTEsYVs0NzM5OV09MHx4RyhmKSxhWzQ3NDA5XT0yODc7YnJlYWt9aWYoISgwfEEwKGMsMTQwNjIzKSkpe2FbNDczOTldPTB8TTMobCxmLDApLGFbNDc0MDld''@;'; put 'put ''PTI4ODticmVha31pZighKDB8QTAoYywxNDA2MjgpKSl7YVs0NzM5OV09MHxNMyhsLDAsMSksYVs0NzQwOV09MjkwO2JyZWFrfWlmKCEoMHxBMChjLDE0MDY0NCkpKXthWzQ3Mzk5XT0wfE0zKGwsMCwzMiksYVs0NzQwOV09Mjk1O2JyZWFrfWlmKCEoMHxBMChjLDE0MDYzMCkpKXthWzQ3Mzk5''@;'; put 'put ''XT0wfE0zKGwsMCw0KSxhWzQ3NDA5XT0yOTE7YnJlYWt9aWYoISgwfEEwKGMsMTQwNjMyKSkpe2FbNDczOTldPTB8TTMobCwwLDY0KSxhWzQ3NDA5XT0yOTI7YnJlYWt9aWYoISgwfEEwKGMsMTQwNjM0KSkpe2FbNDczOTldPTB8TTMobCwwLDIpLGFbNDc0MDldPTI4OTticmVha31pZighKDB8''@;'; put 'put ''QTAoYywxNDA2MzYpKSl7YVs0NzM5OV09MHxNMyhsLDAsOCksYVs0NzQwOV09MjkzO2JyZWFrfWlmKCEoMHxBMChjLDE0MDY0MCkpKXthWzQ3Mzk5XT0wfE0zKGwsMCwxNiksYVs0NzQwOV09Mjk0O2JyZWFrfWlmKCEoMHxBMChjLDE0MDY0NikpKXtseChmKSxhWzQ3NDA5XT0yODM7YnJlYWt9''@;'; put 'put ''aWYoISgwfEEwKGMsMTQwNjQ5KSkpe2FbNDc0MDldPTI3NzticmVha31pZighKDB8QTAoYywxNDA2NTIpKSl7YVs0NzQwOV09MjgwO2JyZWFrfWlmKCEoMHxBMChjLDE0MDY1NSkpKXthWzQ3Mzk5XT0wfHhzKGYpLGFbNDc0MDldPTI4NTticmVha31pZigwfEEwKGMsMTQwNjE4KSl7YXgoYyk7''@;'; put 'put ''YnJlYWt9YVs0NzQwOV09MjYyO2JyZWFrfXVlWzE4OTY2Ml09MCxhWzQ3NDA5XT0yNjB9ZWxzZSBhWzQ3Mzk5XT0wfFBCKGYpLHVlWzE4OTY2Ml09MCxhWzQ3NDA5XT0yODZ9d2hpbGUoMCl9LGZ1bmN0aW9uIG94KGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTA7aWYoMHx1''@;'; put 'put ''ZVsxODk2NjJdKXtmb3IobD0wO2Y7KUE9YysxfDAsKDI1NSYobT0wfHVlW2M+PjBdKSk+MzEmJigocD0wfGFbNCsoYz0wfGFbNDc0MTBdKT4+Ml0pPj4+MD49KDB8YVtjKzg+PjJdKT4+PjAmJihHMChjLDEpLGM9cD0wfGFbNDc0MTBdLHA9MHxhW3ArND4+Ml0pLGFbYys0Pj4yXT1wKzEsdWVb''@;'; put 'put ''cD4+MF09bSxsPWwrMXwwKSxjPUEsZj1mKy0xfDA7MHxsJiYoYVs0NzQwOV09MjY3KX19LGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRh''@;'; put 'put ''LGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhLGRhXSxZTD1bdmcsZnVuY3Rpb24gRHJlKGwsYyxmLHAsbSxBKXtsfD0wLHA9K3AsQXw9MDt2YXIgRCxSLEcsdz0wLGI9MCxrPTAsTT0wO0c9b2Usb2U9b2UrOTZ8MCxSPUcsRD0odz0rX1s4KyhmfD0w''@;'; put 'put ''KT4+M10pKihrPShtPSttKT40Py4wODc1Km06LjM1KSxrKj1iPStfW2Y+PjNdLF9bKE09Rys4MHwwKT4+M109Yj0ocD0rX1soY3w9MCk+PjNdKStiLF9bTSs4Pj4zXT13Kz1tPStfW2MrOD4+M10sZj1SKzY0fDAsMzImQT8oYVtmPj4yXT1hW2M+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtm''@;'; put 'put ''Kzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sYVtSPj4yXT1hW2M+PjJdLGFbUis0Pj4yXT1hW2MrND4+Ml0sYVtSKzg+PjJdPWFbYys4Pj4yXSxhW1IrMTI+PjJdPWFbYysxMj4+Ml0sYVsoYz1SKzMyfDApPj4yXT1hW00+PjJdLGFbYys0Pj4yXT1hW00rND4+Ml0sYVtj''@;'; put 'put ''Kzg+PjJdPWFbTSs4Pj4yXSxhW2MrMTI+PjJdPWFbTSsxMj4+Ml0pOihhW2Y+PjJdPWFbTT4+Ml0sYVtmKzQ+PjJdPWFbTSs0Pj4yXSxhW2YrOD4+Ml09YVtNKzg+PjJdLGFbZisxMj4+Ml09YVtNKzEyPj4yXSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09''@;'; put 'put ''YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSxhWyhNPVIrMzJ8MCk+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxtPXcscD1iKSxfW1IrMTY+PjNdPXArRCxfW1IrMjQ+PjNdPW0tayxfW1IrNDg+''@;'; put 'put ''PjNdPXAtRCxfW1IrNTY+PjNdPW0raztkb3tpZighKDY0JkEpKXtpZigxMjgmQSl7WG8obCxSKzMyfDAsMyxBPj4+NCYxXjEpO2JyZWFrfVhvKGwsUisxNnwwLDMsQT4+PjQmMV4xKTticmVha31YbyhsLFIsMyxBPj4+NCYxXjEpfXdoaWxlKDApO29lPUd9LGZ1bmN0aW9uIE51KGwsYyxmLHAs''@;'; put 'put ''bSxBKXtsfD0wO3ZhciBELFIsRyxMZSxCZSxIZSx3PTAsYj0wLGs9MCxNPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsamU9MDtIZT1vZSxvZT1vZSsxNjB8MCxCZT1IZSxMZT0oSz0hKChLPTQqKHA9K3ApKTwobT0rbSkpfChqZT0wPT0oMzImKEF8PTApfDApKT8uNDU6bS9LKi40NSkqKHBl''@;'; put 'put ''PS0oT2U9K19bOCsoZnw9MCk+PjNdKSksSyo9YmU9K19bZj4+M10scGUqPW1lPSEobT4xKXxqZT8wOi4wNSoobSstMSkvcCxtZSo9YmUsX1soRD1IZSsxNDR8MCk+PjNdPXA9KEc9K19bKGN8PTApPj4zXSkrYmUsX1tEKzg+PjNdPW09T2UrKFI9K19bYys4Pj4zXSksYmU9LjUqYmUrRyxPZT0u''@;'; put 'put ''NSpPZStSLGY9QmUrMTI4fDAsamU/KGFbZj4+Ml09YVtEPj4yXSxhW2YrND4+Ml09YVtEKzQ+PjJdLGFbZis4Pj4yXT1hW0QrOD4+Ml0sYVtmKzEyPj4yXT1hW0QrMTI+PjJdLGFbQmU+PjJdPWFbRD4+Ml0sYVtCZSs0Pj4yXT1hW0QrND4+Ml0sYVtCZSs4Pj4yXT1hW0QrOD4+Ml0sYVtCZSsx''@;'; put 'put ''Mj4+Ml09YVtEKzEyPj4yXSxhWyhqZT1CZSs2NHwwKT4+Ml09YVtjPj4yXSxhW2plKzQ+PjJdPWFbYys0Pj4yXSxhW2plKzg+PjJdPWFbYys4Pj4yXSxhW2plKzEyPj4yXT1hW2MrMTI+PjJdLHc9UixiPUcsaz1SLE09RyxtPVIscD1HKTooYVtmPj4yXT1hW2M+PjJdLGFbZis0Pj4yXT1hW2Mr''@;'; put 'put ''ND4+Ml0sYVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sYVtCZT4+Ml09YVtjPj4yXSxhW0JlKzQ+PjJdPWFbYys0Pj4yXSxhW0JlKzg+PjJdPWFbYys4Pj4yXSxhW0JlKzEyPj4yXT1hW2MrMTI+PjJdLGFbKGplPUJlKzY0fDApPj4yXT1hW0Q+PjJdLGFbamUrND4+''@;'; put 'put ''Ml09YVtEKzQ+PjJdLGFbamUrOD4+Ml09YVtEKzg+PjJdLGFbamUrMTI+PjJdPWFbRCsxMj4+Ml0sdz1tK21lLGI9cCtwZSxrPW0tbWUsTT1wLXBlKSxfW0JlKzE2Pj4zXT1wLUxlLF9bQmUrMjQ+PjNdPW0tSyxfW0JlKzMyPj4zXT1iZS1wZSxfW0JlKzQwPj4zXT1PZS1tZSxfW0JlKzQ4Pj4z''@;'; put 'put ''XT1NLF9bQmUrNTY+PjNdPWssX1tCZSs4MD4+M109YixfW0JlKzg4Pj4zXT13LF9bQmUrOTY+PjNdPWJlK3BlLF9bQmUrMTA0Pj4zXT1PZSttZSxfW0JlKzExMj4+M109cCtMZSxfW0JlKzEyMD4+M109bStLO2Rve2lmKCEoNjQmQSkpe2lmKDEyOCZBKXtYbyhsLEJlKzQ4fDAsNiwxKTticmVh''@;'; put 'put ''a31YbyhsLEJlLDksMSk7YnJlYWt9WG8obCxCZSw2LDEpfXdoaWxlKDApO29lPUhlfSxmdW5jdGlvbiBQYShsLGMsZixwLG0sQSl7bHw9MCxwPStwLG09K20sQXw9MDt2YXIgdyxiLEQsUixHLEssbWUsYmUsaz0wLE09MCxwZT0wO0s9b2Usb2U9b2UrNjR8MCxwPShrPStfWyhjfD0wKT4+M10p''@;'; put 'put ''KyhtZT0rX1soZnw9MCk+PjNdKSxtPShNPStfW2MrOD4+M10pKyhiZT0rX1tmKzg+PjNdKSx3PWsrLjIqbWUsYj1NKy4yKmJlLGsrPS42Km1lLE0rPS42KmJlLF9bKEc9Syk+PjNdPXctYmUsX1tHKzg+PjNdPWIrbWUsX1soRD1HKzE2fDApPj4zXT13K2JlLF9bKFI9RysyNHwwKT4+M109Yi1t''@;'; put 'put ''ZSxfW0crMzI+PjNdPWsrYmUsX1tHKzQwPj4zXT1NLW1lLF9bRys0OD4+M109ay1iZSxfW0crNTY+PjNdPU0rbWUsNjQmQT8oZj0zLEE9MCxwZT0zKToxMjgmQXwwJiYoZj0yLEE9MSxwZT0zKSwzPT0oMHxwZSkmJihfW0crKEE8PDQpPj4zXT13LF9bRysoQTw8NCkrOD4+M109YixfW0crKGY8''@;'; put 'put ''PDQpPj4zXT1rLF9bRysoZjw8NCkrOD4+M109TSksWG8obCxHLDQsMSksYVtHPj4yXT1hW2M+PjJdLGFbRys0Pj4yXT1hW2MrND4+Ml0sYVtHKzg+PjJdPWFbYys4Pj4yXSxhW0crMTI+PjJdPWFbYysxMj4+Ml0sX1tEPj4zXT1wLF9bUj4+M109bSxXbyhsLEcsMiksb2U9S30sZnVuY3Rpb24g''@;'; put 'put ''Z2wobCxjLGYscCxtLEEpe2x8PTAscD0rcCxtPSttLEF8PTA7dmFyIGssTSxELFIsSyxwZSxtZSxiZSx3PTAsYj0wLEc9MDtSPW9lLG9lPW9lKzY0fDAscGU9LS40KihiPStfWzgrKGZ8PTApPj4zXSksSz0uNCoodz0rX1tmPj4zXSkscD0oYmU9K19bKGN8PTApPj4zXSkrLjgqdyxtPShtZT0r''@;'; put 'put ''X1tjKzg+PjNdKSsuOCpiLHc9YmUrdyxiPW1lK2IsX1soRD1SKT4+M109YmUrcGUsX1soaz1EKzh8MCk+PjNdPW1lK0ssX1soZj1EKzE2fDApPj4zXT1iZS1wZSxfWyhNPUQrMjR8MCk+PjNdPW1lLUssX1tEKzMyPj4zXT1wLXBlLF9bRCs0MD4+M109bS1LLF9bRCs0OD4+M109cCtwZSxfW0Qr''@;'; put 'put ''NTY+PjNdPW0rSyw2NCZBPyhhW0Q+PjJdPWFbYz4+Ml0sYVtEKzQ+PjJdPWFbYys0Pj4yXSxhW0QrOD4+Ml09YVtjKzg+PjJdLGFbRCsxMj4+Ml09YVtjKzEyPj4yXSxmPTMsRz01KToxMjgmQXwwJiYoYVtmPj4yXT1hW2M+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPWFbYys4''@;'; put 'put ''Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sZj0yLEc9NSksNT09KDB8RykmJihfW0QrKGY8PDQpPj4zXT1wLF9bRCsoZjw8NCkrOD4+M109bSksWG8obCxELDQsQT4+PjQmMV4xKSxfW0Q+PjNdPXAsX1trPj4zXT1tLF9bRCsxNj4+M109dyxfW00+PjNdPWIsV28obCxELDIpLG9lPVJ9LGZ1''@;'; put 'put ''bmN0aW9uIExyZShsLGMsZixwLG0sQSl7dmFyIHcsYixrLE0sRCxSLEcsSztsfD0wLHA9K3AsbT0rbSxBfD0wLGI9b2Usb2U9b2UrODB8MCxrPS0uMzMzMzMzMzMzMzMzMzMzMyooRD0rX1s4KyhmfD0wKT4+M10pLG09LjMzMzMzMzMzMzMzMzMzMzMqKEc9K19bZj4+M10pLE09KEs9K19bKGN8''@;'; put 'put ''PTApPj4zXSkrLjUqRyxwPShSPStfW2MrOD4+M10pKy41KkQsZj0odz1iKSs2NHwwLF9bdys2ND4+M109SytHLF9bdys3Mj4+M109UitELGFbdz4+Ml09YVtmPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4Pj4yXT1hW2YrOD4+Ml0sYVt3KzEyPj4yXT1hW2YrMTI+PjJdLF9bdysxNj4+''@;'; put 'put ''M109TStrLF9bdysyND4+M109cCttLGFbKGY9dyszMnwwKT4+Ml09YVtjPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLF9bdys0OD4+M109TS1rLF9bdys1Nj4+M109cC1tO2Rve2lmKCEoNjQmQSkpe2lmKGY9QT4+PjQm''@;'; put 'put ''MV4xLDEyOCZBKXtYbyhsLHcsMyxmKTticmVha31YbyhsLHcsNCxmKTticmVha31YbyhsLGYsMyxBPj4+NCYxXjEpfXdoaWxlKDApO29lPWJ9LGZ1bmN0aW9uIFFUKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAscD0rcCxtPSttLEF8PTA7dmFyIHcsYixrLEQsTT0wO3c9b2Usb2U9b2UrMzJ8MCxi''@;'; put 'put ''PXcscD0uNSorRjAoKygobT0rX1s4KyhmfD0wKT4+M10pKm0rKE09K19bZj4+M10pKk0pKSxfW2I+PjNdPShEPStfW2M+PjNdKSsoTSo9LjUpLXAsX1tiKzg+PjNdPShrPStfW2MrOD4+M10pLXArKG0qPS41KSxfW2IrMTY+PjNdPUQrcCtNLF9bYisyND4+M109aytwK20sVTEobCxiLDIsQT4+''@;'; put 'put ''PjQmMV4xKSxvZT13fSxmdW5jdGlvbiBONihsLGMsZixwLG0sQSl7bHw9MCxwPStwLEF8PTA7dmFyIGssRyxLLHBlLG1lLGJlLHc9MCxiPTAsTT0wLEQ9MCxSPTA7YmU9b2Usb2U9b2UrMTEyfDAsSz1iZSs0OHwwLG1lPWJlLEc9K19bKGN8PTApPj4zXSx3PStfW2MrOD4+M10scD0oTT0rX1s4''@;'; put 'put ''KyhmfD0wKT4+M10pKihEPShtPSttKT40Py4xMjUqbTouNSksbT0oUj0rX1tmPj4zXSkqRCxhWyhwZT1iZSsxNnwwKT4+Ml09YVtjPj4yXSxhW3BlKzQ+PjJdPWFbYys0Pj4yXSxhW3BlKzg+PjJdPWFbYys4Pj4yXSxhW3BlKzEyPj4yXT1hW2MrMTI+PjJdLF9bcGUrMTY+PjNdPVIrRyxfW3Bl''@;'; put 'put ''KzI0Pj4zXT1NK3csX1tLPj4zXT1EKihSLU0pK0csX1tLKzg+PjNdPWs9KGI9RCooTStSKSkrdyxfW0srNDg+PjNdPWIrRyxfW0srNTY+PjNdPXc9RCooTS1SKSt3LE09KFI9LS45NSpwKSttK0csRD0xLjMzMzMzMzMzMzMzMzMzMzMqbSwzMiZBPyhiPTIuMzMzMzMzMzMzMzMzMzMzKm0sdys9''@;'; put 'put ''cCo9MS4zMzMzMzMzMzMzMzMzMzMzLG09aytwLHA9TStEKTooYj0tLjMzMzMzMzMzMzMzMzMzMzI2Km0sdy09cCo9MS4zMzMzMzMzMzMzMzMzMzMzLG09ay1wLHA9TS1EKSxfW0srMTY+PjNdPXAsX1tLKzI0Pj4zXT1tLF9bSyszMj4+M109Yi1SK0csX1tLKzQwPj4zXT13LFdvKGwscGUsMiks''@;'; put 'put ''NjQmQT93dShtZSxLLDMsLjUsMCxLKToxMjgmQXwwJiZ3dShtZSxLLDMsLjUsSywwKSxXZihsLEssNCwwLDAsMCksb2U9YmV9LGZ1bmN0aW9uIEpUKGwsYyxmLHAsbSxBKXt2YXIgdztsfD0wLHA9K3AsbT0rbSxBfD0wLEE9b2Usb2U9b2UrMzJ8MCxwPStfWyhmfD0wKT4+M10rICtfWyhjfD0w''@;'; put 'put ''KT4+M10sbT0rX1tmKzg+PjNdKyArX1tjKzg+PjNdLGFbKHc9QSk+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxfW3crMTY+PjNdPXAsX1t3KzI0Pj4zXT1tLFdvKGwsdywyKSxvZT1BfSx2Zyx2Zyx2Zyx2''@;'; put 'put ''Zyx2Zyx2Zyx2Z10sRmE9W2Z1bmN0aW9uIFNmZShsLGMsZixwKXtwMigxNyl9LGZ1bmN0aW9uIHRpZShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MCxySShsfD0wKSxMQyhsKSxwPygzPT0oMXxwKT9hSShsLHAsYyxmKTpsSShsKSxPQyhsLDgwLGMsZikpOk9DKGwsMTEyLGMsZil9LGZ1bmN0aW9u''@;'; put 'put ''IHZpZShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbSxBLHcsYixrLE0sRCxHLEssUj0wO209b2Usb2U9b2UrOTZ8MCxBPW0rOHwwLEQ9fn4rX1sxNTIrKEs9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSxNPTB8YVtLKzE2Pj4yXSxrPTB8YVtLKzU2Pj4yXSxiPTB8YVs0NjcxMF0sZkkoSyxS''@;'; put 'put ''PW0rODB8MCxHPW0pLFI9MHxhW1I+PjJdLHc9K19bRz4+M10sYVtBPj4yXT0yLGFbQSs0Pj4yXT0zLGFbQSs4Pj4yXT1SLGFbQSsxMj4+Ml09RCxhW0ErMTY+PjJdPU0sYVtBKzIwPj4yXT1rLGFbQSsyND4+Ml09YixhW0ErMjg+PjJdPTAsYVtBKzMyPj4yXT0wfHA/MjA6LTEsX1tBKzQwPj4z''@;'; put 'put ''XT13LGFbQSs0OD4+Ml09MCxhW0ErNTI+PjJdPTAsYVtBKzU2Pj4yXT0wLGFbQSs2MD4+Ml09MCxhW0ErNjQ+PjJdPTAsYVtBKzY4Pj4yXT1mKzEsUnIobCw2ODMzMSxBKSx5aWUobCxjLGYsMSksb2U9bX0sZnVuY3Rpb24gWjdlKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtLEEsdyxi''@;'; put 'put ''LGssTSxELEcsSyxSPTA7bT1vZSxvZT1vZSs5NnwwLEE9bSs4fDAsRD1+fitfWzE1MisoSz0wfGFbMTYrKGx8PTApPj4yXSk+PjNdLE09MHxhW0srMTY+PjJdLGs9MHxhW0srNTY+PjJdLGI9MHxhWzQ2NzE2XSxySChLLFI9bSs4MHwwLEc9bSksUj0wfGFbUj4+Ml0sdz0rX1tHPj4zXSxhW0E+''@;'; put 'put ''PjJdPTIsYVtBKzQ+PjJdPTMsYVtBKzg+PjJdPVIsYVtBKzEyPj4yXT1ELGFbQSsxNj4+Ml09TSxhW0ErMjA+PjJdPWssYVtBKzI0Pj4yXT1iLGFbQSsyOD4+Ml09MCxhW0ErMzI+PjJdPTB8cD8yMDotMSxfW0ErNDA+PjNdPXcsYVtBKzQ4Pj4yXT0wLGFbQSs1Mj4+Ml09MCxhW0ErNTY+PjJd''@;'; put 'put ''PTAsYVtBKzYwPj4yXT0wLGFbQSs2ND4+Ml09MCxhW0ErNjg+PjJdPWYrMSxScihsLDY4MzMxLEEpLFdXKGwsYyxmLDEpLG9lPW19LGZ1bmN0aW9uIEo3ZShsLGMsZixwKXt2YXIgbTtsfD0wLGN8PTAscHw9MCxjPW9lLG9lPW9lKzE2fDAsYVsobT1jKT4+Ml09Znw9MCxhW20rND4+Ml09cCxS''@;'; put 'put ''cihsLDY5NTgxLG0pLG9lPWN9LGZ1bmN0aW9uIHBJKGwsYyxmLHApe2N8PTAsZnw9MDt2YXIgdyxiLG09MCxBPTA7aWYoYj1vZSxvZT1vZSsxNnwwLHc9YixBPTE2KyhsfD0wKXwwLDB8KHB8PTApJiYrX1s4MCsobT0wfGFbQT4+Ml0pPj4zXT4uNSl7Zm9yKEdkKGwsbSs1NnwwKSxUbihsLDY4''@;'; put 'put ''ODUyKSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxGMyhsLHcpLFRuKGwsNjg4NjEpLHA9MTshKCgwfHApPj0oMHxmKSk7KWFbdz4+Ml09YVsobT1jKyhwPDw0KXwwKT4+Ml0sYVt3KzQ+PjJdPWFb''@;'; put 'put ''bSs0Pj4yXSxhW3crOD4+Ml09YVttKzg+PjJdLGFbdysxMj4+Ml09YVttKzEyPj4yXSxGMyhsLHcpLFRuKGwsNjg4NzApLHA9cCsxfDA7VG4obCw2ODg5Nyl9aWYoK19bNDArKDB8YVtBPj4yXSk+PjNdPi41KXtmb3IoXzcobCksR2QobCwxNisoMHxhW0E+PjJdKXwwKSxUbihsLDY4ODUyKSxh''@;'; put 'put ''W3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxGMyhsLHcpLFRuKGwsNjg4NjEpLHA9MTshKCgwfHApPj0oMHxmKSk7KWFbdz4+Ml09YVsoQT1jKyhwPDw0KXwwKT4+Ml0sYVt3KzQ+PjJdPWFbQSs0Pj4y''@;'; put 'put ''XSxhW3crOD4+Ml09YVtBKzg+PjJdLGFbdysxMj4+Ml09YVtBKzEyPj4yXSxGMyhsLHcpLFRuKGwsNjg4NzApLHA9cCsxfDA7VG4obCw2ODkxMyl9b2U9Yn0sZnVuY3Rpb24gT2llKGwsYyxmLHApe3lJKGx8PTAsY3w9MCwwLDEwMTUxMCwwfGFbOCsoMHxhW2wrMTY+PjJdKT4+Ml0pLFRuKGws''@;'; put 'put ''NzYzODgpfSxmdW5jdGlvbiBWaWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIG09MDtzd2l0Y2goMHwocHw9MCkpe2Nhc2UgMjptPTB8dFkobCxjLGYpO2JyZWFrO2Nhc2UgMzptPTB8blkobCk7YnJlYWs7ZGVmYXVsdDptPTB9Zm9yKFRuKGwsNzM5OTkpLEFJKGwscCxtKSxUbihsLDcz''@;'; put 'put ''NDE0KSxtPTA7ISgoMHxtKT49KDB8ZikpOylOcyhsLCtfW2MrKG08PDQpPj4zXSksVG4obCwxMDA5OTkpLE5zKGwsLStfW2MrKG08PDQpKzg+PjNdKSxUbihsLDEwMjYwNCksbT1tKzF8MDtOcyhsLCtfW2M+PjNdKSxUbihsLDEwMDk5OSksTnMobCwtK19bYys4Pj4zXSksVG4obCw3MzQyNCl9''@;'; put 'put ''LGZ1bmN0aW9uIGFZKGwsYyxmLHApe3ZhciBtLEEsdyxiO2lmKGN8PTAsZnw9MCxwfD0wLGI9b2Usb2U9b2UrNDh8MCxtPWIsMHxhWyh3PTE0NCsoQT0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKXt3SShsKSxUbihsLDc1MjkyKSxOZChsLGMsZiksVG4obCw3NTE1NSk7ZG97aWYoIXApe2lm''@;'; put 'put ''KDB8YVs0NjcyM10pe1RuKGwsMTM3MTk4KTticmVha31UbihsLDk3MzA5KTticmVha31mPUErNTZ8MCxwPShjPW0pKzQwfDA7ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSk7QzcobCxtKX13aGlsZSgwKTsxPT0oMHxhWzQ2NzIzXSkmJihhWzQ2''@;'; put 'put ''NzIzXT0wKSxUbihsLDc1MjY2KSxOcyhsLCtfW0ErMTUyPj4zXSksVG4obCw3NTMwOSksZj1BKzE2fDAscD0oYz1tKSs0MHwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9d2hpbGUoKDB8Yyk8KDB8cCkpO0M3KGwsbSksMT09KDB8KGM9MHxhW3c+PjJdKSkmJihUbihsLDc1''@;'; put 'put ''MTYzKSxjPTB8YVt3Pj4yXSksMj09KDB8YykmJlRuKGwsNzUxNzIpLGl5KGwpLFRuKGwsMTUzNTk5KX1vZT1ifSxmdW5jdGlvbiBYaWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsayxNLEQsbT0wLEE9MCx3PTA7Zm9yKE09b2Usb2U9b2UrNDh8MCxrPU0rMjR8MCxiPU0rOHwwLEE9''@;'; put 'put ''TSxUbihsfD0wLDc1NTExKSxEPTB8YVs0NjcyN10sYVtBPj4yXT1hWzQ2NzI2XSxhW0ErND4+Ml09RCxScihsLDc1NzY0LEEpLGZZKGwscCksVG4obCw3NTc4OCksYkkobCksVG4obCw3NTc5MSksQT1mKy0xfDAscD0wOyEoKDB8cCk+PSgwfGYpKTspdz0rX1tjKyhwPDw0KT4+M10sbT0rKCgw''@;'; put 'put ''fGFbNDY3MjddKT4+PjApLStfW2MrKHA8PDQpKzg+PjNdLHA/KF9baz4+M109dyxfW2srOD4+M109bSxScihsLDc1ODg0LGspKTooVG4obCw3NTgxOCksX1tiPj4zXT13LF9bYis4Pj4zXT1tLFJyKGwsNzU4ODQsYiksVG4obCw3NTg5NSkpLCgwfHApPT0oMHxBKSYmVG4obCw3NTg5OCkscD1w''@;'; put 'put ''KzF8MDtUbihsLDc1NjI3KSxvZT1NfSxmdW5jdGlvbiBvdmUobCxjLGYscCl7dmFyIG0sQTtsfD0wLGZ8PTAscHw9MCxtPW9lLG9lPW9lKzE2fDAsYVsoQT1tKT4+Ml09Y3w9MCxhW0ErND4+Ml09ZixhW0ErOD4+Ml09cCxScihsLDc5MzU3LEEpLFduWzQ2NzI4XT0rKDB8dnIoZiwtMTApKSxv''@;'; put 'put ''ZT1tfSxmdW5jdGlvbiBwdmUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEQsUixHLEsscGUsbWUsYmUsT2UsTGUsSGUsamUsZXQscnQsR2UsTXQsa3QsYXQsRXQsdXQsd3QsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsQmU9MCxsdD0wLFp0PTAscm49MCx5bj0wLEZuPTA7d3Q9b2Usb2U9''@;'; put 'put ''b2UrMzM2fDAscnQ9d3QrMjk2fDAsdXQ9d3QrMjg4fDAsWnQ9d3QrMjcyfDAsRXQ9d3QrMjY0fDAsYXQ9d3QrMjQwfDAsbHQ9d3QrMjMyfDAsZXQ9d3QrMjA4fDAsamU9d3QrMTg0fDAsTGU9d3QrMTYwfDAsT2U9d3QrMTUyfDAsYmU9d3QrMTM2fDAsbWU9d3QrMTI4fDAscGU9d3QrOTZ8MCxL''@;'; put 'put ''PXd0Kzg4fDAsRz13dCs1NnwwLG09d3QrNDh8MCxrPXd0KzI0fDAsYj13dCxUbihsfD0wLDc4NzgyKSxXbls0NjcyOV09K1duWzQ2NzI4XS0yLHJuPStfWyhSPWwrNDk2fDApPj4zXSxfW2I+PjNdPStfWyhEPWwrNDg4fDApPj4zXSxfW2IrOD4+M109cm4sX1tiKzE2Pj4zXT0xLGI9MHxrYShs''@;'; put 'put ''LDc4Mjc3LGIpLHJuPSsoMHxhWyhIZT1sKzM2MHwwKT4+Ml0pLF9baz4+M109MCxfW2srOD4+M109MCxfW2srMTY+PjNdPXJuLGs9MHxrYShsLDc4MzA5LGspLHJuPStXbls0NjcyOV0tMixfW3J0Pj4zXT0wLF9bcnQrOD4+M109MCxfW3J0KzE2Pj4zXT1ybixNPTB8a2EobCw3ODM0MSxydCks''@;'; put 'put ''dz0xNisoMHxhWyhHZT1sKzE2fDApPj4yXSl8MCxCZT0oQT1ydCkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfEJlKSk7Zm9yKHc9MHxveShsLHJ0LDApLGFbbT4+Ml09Nzg0MDQsYVttKzQ+PjJdPWYrMSxNdD1sKzUwNHwwLGt0PWwrNTEy''@;'; put 'put ''fDAsQT0wLG09MHxrYShsLDc4MzczLG0pOyEoKDB8QSk+PSgwfGYpKTspRm49K19ba3Q+PjNdKyArX1tjKyhBPDw0KSs4Pj4zXSxybj0rX1sxNTIrKDB8YVtHZT4+Ml0pPj4zXSxfW0c+PjNdPStfW010Pj4zXSsgK19bYysoQTw8NCk+PjNdLF9bRys4Pj4zXT1GbixfW0crMTY+PjNdPTAsX1tH''@;'; put 'put ''KzI0Pj4zXT1ybix5bj0wfGthKGwsNzg0MTgsRyksYVtLPj4yXT1tLGFbSys0Pj4yXT15bixCZT0wfGthKGwsNzg0NDcsSyksSHQoeW4pLEh0KG0pLEE9QSsxfDAsbT1CZTtpZihybj0rX1trdD4+M10rICtfW2MrOD4+M10sRm49K19bMTUyKygwfGFbR2U+PjJdKT4+M10sX1twZT4+M109K19b''@;'; put 'put ''TXQ+PjNdKyArX1tjPj4zXSxfW3BlKzg+PjNdPXJuLF9bcGUrMTY+PjNdPTAsX1twZSsyND4+M109Rm4sQmU9MHxrYShsLDc4NDE4LHBlKSxhW21lPj4yXT1tLGFbbWUrND4+Ml09QmUseW49MHxrYShsLDc4NDQ3LG1lKSxIdChCZSksSHQobSksYVtiZT4+Ml09YixhW2JlKzQ+PjJdPWssYVti''@;'; put 'put ''ZSs4Pj4yXT1NLGFbYmUrMTI+PjJdPXcsQmU9MHxrYShsLDc4Nzk3LGJlKSxhW09lPj4yXT15bixhW09lKzQ+PjJdPUJlLHluPTB8a2EobCw3ODUwMixPZSksSHQoQmUpLFRuKGwseW4pLEh0KGIpLEh0KGspLEh0KE0pLEh0KHcpLEh0KHluKSwwfHApe0ZuPStfW1I+PjNdLF9bTGU+PjNdPStf''@;'; put 'put ''W0Q+PjNdLF9bTGUrOD4+M109Rm4sX1tMZSsxNj4+M109MSxNPTB8a2EobCw3ODI3NyxMZSksRm49KygwfGFbSGU+PjJdKSxfW2plPj4zXT0wLF9bamUrOD4+M109MCxfW2plKzE2Pj4zXT1GbixrPTB8a2EobCw3ODMwOSxqZSksRm49K1duWzQ2NzI5XS0yLF9bZXQ+PjNdPTAsX1tldCs4Pj4z''@;'; put 'put ''XT0wLF9bZXQrMTY+PjNdPUZuLGI9MHxrYShsLDc4MzQxLGV0KSx3PTU2KygwfGFbR2U+PjJdKXwwLEJlPShBPXJ0KSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8QmUpKTtmb3Iodz0wfG95KGwscnQsLjI1KSxhW2x0Pj4yXT1mLEE9MCxt''@;'; put 'put ''PTB8a2EobCw3ODg0MixsdCk7ISgoMHxBKT49KDB8ZikpOylGbj0rX1trdD4+M10rICtfW2MrKEE8PDQpKzg+PjNdLF9bYXQ+PjNdPStfW010Pj4zXSsgK19bYysoQTw8NCk+PjNdLF9bYXQrOD4+M109Rm4sX1thdCsxNj4+M109MCxsdD0wfGthKGwsNzg4NTcsYXQpLGFbRXQ+PjJdPW0sYVtF''@;'; put 'put ''dCs0Pj4yXT1sdCx5bj0wfGthKGwsNzg4NzksRXQpLEh0KGx0KSxIdChtKSxBPUErMXwwLG09eW47YVtadD4+Ml09TSxhW1p0KzQ+PjJdPWssYVtadCs4Pj4yXT1iLGFbWnQrMTI+PjJdPXcsWnQ9MHxrYShsLDc4ODg5LFp0KSxhW3V0Pj4yXT1tLGFbdXQrND4+Ml09WnQseW49MHxrYShsLDc4''@;'; put 'put ''NTAyLHV0KSxIdChadCksVG4obCx5biksSHQoTSksSHQoayksSHQoYiksSHQodyksSHQoeW4pfW9lPXd0fSxmdW5jdGlvbiBrdmUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTAscD1vZSxvZT1vZSsxNnwwLHVIKDB8YVsxNisobHw9MCk+PjJdLHArOHwwLHApLEU1KGwsYyxmLDEpLG9lPXB9LGZ1''@;'; put 'put ''bmN0aW9uIEx2ZShsLGMsZixwKXtjfD0wLHB8PTA7dmFyIEEsdyxiLGssTSxELFIsbT0wO1I9b2Usb2U9b2UrOTZ8MCxEPVIrNTZ8MCxNPVIrMzJ8MCxrPVIsYj0rX1sxNisoZnw9MCk+PjNdLSh3PStfW2Y+PjNdKSxBPShtPStfW2YrMjQ+PjNdKS0rX1tmKzg+PjNdLChsfD0wKXx8QnIoMTEx''@;'; put 'put ''MjgyLDg0NDA3LDUzLDg0ODYwKSxjfHxCcigxMTEzMTIsODQ0MDcsNTQsODQ4NjApLDB8YVsocD1jKzh8MCk+PjJdfHxCcigxMTEzMTUsODQ0MDcsNTUsODQ4NjApLFRuKGwsODQ4NzkpLFRuKGwsMHxhW3A+PjJdKSxtPS1tLDB8YVsocD1sKzM2MHwwKT4+Ml0/KF9baz4+M109QSxfW2srOD4+''@;'; put 'put ''M109YixfW2srMTY+PjNdPXcsX1trKzI0Pj4zXT1tLFJyKGwsODQ4OTksayksYVtNPj4yXT1hW3A+PjJdLF9bTSs4Pj4zXT13LF9bTSsxNj4+M109bSxScihsLDg0OTc4LE0pKTooX1tEPj4zXT1iLF9bRCs4Pj4zXT1BLF9bRCsxNj4+M109dyxfW0QrMjQ+PjNdPW0sUnIobCw4NTAwOCxEKSks''@;'; put 'put ''VG4obCw4NTA4Nyksb2U9Un0sZnVuY3Rpb24gRHZlKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtLEEsdyxiPTAsaz0wLE09MDtpZih3PW9lLG9lPW9lKzEyOHwwLEE9dys4MHwwLG09dywobHw9MCl8fEJyKDExMTI4Miw4NDQwNyw5Nyw4NDc1MSksY3x8QnIoMTExMzEyLDg0NDA3LDk4''@;'; put 'put ''LDg0NzUxKSxwPTB8YVtjKzg+PjJdKXJldHVybiBiPX5+KChNPStfW2Y+PjNdKSsoTT49MD8uNTotLjUpKSxjPX5+KChNPStfW2YrOD4+M10pKyhNPj0wPy41Oi0uNSkpLGs9fn4oKE09K19bZisxNj4+M10pKyhNPj0wPy41Oi0uNSkpLGY9fn4oKE09K19bZisyND4+M10pKyhNPj0wPy41Oi0u''@;'; put 'put ''NSkpLGFbbT4+Ml09MixhW20rND4+Ml09NSxhW20rOD4+Ml09MCxhW20rMTI+PjJdPTAsYVttKzE2Pj4yXT0wLGFbbSsyMD4+Ml09LTEsYVttKzI0Pj4yXT0xLGFbbSsyOD4+Ml09LTEsYVttKzMyPj4yXT0wLF9bbSs0MD4+M109MCxhW20rNDg+PjJdPTAsYVttKzUyPj4yXT0wLGFbbSs1Nj4+''@;'; put 'put ''Ml09MCxhW20rNjA+PjJdPTAsYVttKzY0Pj4yXT0wLGFbbSs2OD4+Ml09NSxhW20rNzI+PjJdPTAsYVttKzc2Pj4yXT1wLFJyKGwsODQ3NzAsbSksYVtBPj4yXT1iLGFbQSs0Pj4yXT1jLGFbQSs4Pj4yXT1iLGFbQSsxMj4+Ml09ZixhW0ErMTY+PjJdPWssYVtBKzIwPj4yXT1mLGFbQSsyND4+''@;'; put 'put ''Ml09ayxhW0ErMjg+PjJdPWMsYVtBKzMyPj4yXT1iLGFbQSszNj4+Ml09YyxScihsLDg0ODI4LEEpLHZvaWQob2U9dyk7QnIoMTExMzE1LDg0NDA3LDk5LDg0NzUxKX0sZnVuY3Rpb24gVjIobCxjLGYscCl7dmFyIG0sQTtpZihjfD0wLGZ8PTAscHw9MCxBPW9lLG9lPW9lKzgwfDAsbT1BKzQ4''@;'; put 'put ''fDAsKGx8PTApfHxCcigxMTEyODIsODQ0MDcsMTIxLDg0NTYyKSwocD0wfGFbbCsxNj4+Ml0pfHxCcig5OTkwMiw4NDQwNywxMjMsODQ1NjIpLGN8fEJyKDExMTMxMiw4NDQwNywxMjQsODQ1NjIpLDB8YVsoZj1jKzh8MCk+PjJdfHxCcigxMTEzMTUsODQ0MDcsMTI1LDg0NTYyKSwwfGFbcCs4''@;'; put 'put ''Pj4yXSlyZXR1cm4gUnIobCw4NDU4MixBKSxScihsLDg0NTkxLEErOHwwKSxScihsLDg0NjE4LEErMTZ8MCksUnIobCw4NDY0MyxBKzI0fDApLFJyKGwsODQ2NzIsQSszMnwwKSxScihsLDg0NzAwLEErNDB8MCksYVttPj4yXT1hW2Y+PjJdLFJyKGwsODQ3MDcsbSksUnIobCw4NDc0NixBKzU2''@;'; put 'put ''fDApLFJyKGwsMTExMDA4LEErNjR8MCksdm9pZChvZT1BKTtCcigxMzg4NzksODQ0MDcsMTI4LDg0NTYyKX0sZnVuY3Rpb24gZFkobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLE0sRCxtPTAsQT0wLFI9MDtEPW9lLG9lPW9lKzExMnwwLE09RCsyNHwwLGs9RCsxNnwwLGI9RCxB''@;'; put 'put ''PUQrMjh8MCwobHw9MCl8fEJyKDExMTI4Miw4NDQwNywxNTMsODQ0ODgpLGN8fEJyKDExMTMxMiw4NDQwNywxNTQsODQ0ODgpLDB8YVtjKzg+PjJdfHxCcigxMTEzMTUsODQ0MDcsMTU1LDg0NDg4KSwwfGFbKHc9Yys1MnwwKT4+Ml0/MTAwPT0oMHwobT0wfGFbKHA9Yys2MHwwKT4+Ml0pKT9t''@;'; put 'put ''PTE4Oihub1sxMjcmbV0oYyksYVt3Pj4yXT0wLGFbcD4+Ml09MCxhW2MrNTY+PjJdPTAsbT0xMCk6bT0xMDtkb3tpZigxMD09KDB8bSkpe2lmKCEoKDB8VEYoYykpPDwyND4+MjQpKWJyZWFrO3A9MHwkJCgwfGFbYysyMD4+Ml0pLDY9PSgtMiZhW2MrMjQ+PjJdfDApPyhSJChwLEEpLGFbYys1''@;'; put 'put ''Nj4+Ml09QT0wfGFbQSszNj4+Ml0scD0wfE91ZSgwLEEsMSwxLHAsMCksYVt3Pj4yXT1wLHVlW2MrMTY+PjBdPTEpOnA9MHxhW3c+PjJdLDB8cCYmKGFbYys2MD4+Ml09MTAwKSxGNihjKSwwfGFbdz4+Ml0mJihtPTE4KX19d2hpbGUoMCk7MTg9PSgwfG0pJiYoUj0rX1tmKzg+PjNdLSsoMHxh''@;'; put 'put ''W2MrMzY+PjJdKSxfW2I+PjNdPStfW2Y+PjNdLSsoMHxhW2MrMzI+PjJdKSxfW2IrOD4+M109UixScihsLDg0NTA2LGIpLDB8dWVbYysxNj4+MF0/QVEobCxjKTooYVtrPj4yXT1hW2MrMTI+PjJdLFJyKGwsODQ1MzcsaykpLFJyKGwsODQ1NTIsTSkpLG9lPUR9LGZ1bmN0aW9uIFR2ZShsLGMs''@;'; put 'put ''ZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgdyxiLGssRCxSLEcsSyxtZSxiZSxtPTAsQT0wLE09MCxwZT0wLE9lPTA7aWYoYmU9b2Usb2U9b2UrMTYwfDAsbWU9YmUrMTUyfDAscGU9YmUrMTM2fDAsSz1iZSsxMjB8MCxrPWJlKzExMnwwLEQ9YmUrMTA0fDAsTT1iZSs4OHwwLGI9YmUrNzJ8MCx3''@;'; put 'put ''PWJlKzY0fDAsUj1iZSwobHw9MCl8fEJyKDExMTI4Miw4NDQwNywyMTIsODQ0MjYpLGN8fEJyKDExMTMxMiw4NDQwNywyMTMsODQ0MjYpLDB8YVsoRz1jKzh8MCk+PjJdfHxCcigxMTEzMTUsODQ0MDcsMjE0LDg0NDI2KSwwfGFbYys1Mj4+Ml0pe2lmKGFbUj4+Ml09YVtmPj4yXSxhW1IrND4+''@;'; put 'put ''Ml09YVtmKzQ+PjJdLGFbUis4Pj4yXT1hW2YrOD4+Ml0sYVtSKzEyPj4yXT1hW2YrMTI+PjJdLGFbKGM9UiszMnwwKT4+Ml09YVsoZj1mKzE2fDApPj4yXSxhW2MrND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLF9bUisxNj4+M109bT0r''@;'; put 'put ''X1tSPj4zXSxfW1IrMjQ+PjNdPStfW1IrNDA+PjNdLF9bUis0OD4+M109K19bYz4+M10sX1tSKzU2Pj4zXT1BPStfW1IrOD4+M10scDw8MjQ+PjI0KXtmb3IoUnIobCw4NDQ0Nyx3KSxjPTA7NCE9KDB8Yyk7KU9lPStfW1IrKGM8PDQpKzg+PjNdLF9bYj4+M109K19bUisoYzw8NCk+PjNdLF9b''@;'; put 'put ''Yis4Pj4zXT1PZSxScihsLDg0NDUwLGIpLGM9YysxfDA7X1tNPj4zXT1tLF9bTSs4Pj4zXT1BLFJyKGwsODQ0NTAsTSksTT0wfGFbRz4+Ml0sYVtEPj4yXT00LGFbRCs0Pj4yXT1NLFJyKGwsODQ0NTcsRCl9Zm9yKFJyKGwsODQ0NDcsayksYz0wOzQhPSgwfGMpOylPZT0rX1tSKyhjPDw0KSs4''@;'; put 'put ''Pj4zXSxfW0s+PjNdPStfW1IrKGM8PDQpPj4zXSxfW0srOD4+M109T2UsUnIobCw4NDQ1MCxLKSxjPWMrMXwwO19bcGU+PjNdPW0sX1twZSs4Pj4zXT1BLFJyKGwsODQ0NTAscGUpLHBlPTB8YVtHPj4yXSxhW21lPj4yXT00LGFbbWUrND4+Ml09cGUsUnIobCw4NDQ3MixtZSl9b2U9YmV9LGZ1''@;'; put 'put ''bmN0aW9uIGNIKGwsYyxmLHApe30sZnVuY3Rpb24gJEYobCxjLGYscCl7dmFyIG0sQSx3O2N8PTAsZnw9MCxwfD0wLHA9b2Usb2U9b2UrMTA0MHwwLHc9cCxtPXArMTZ8MCxjbyhBPTB8YVsxMTQxNisoYVsxMisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXTw8Mik+PjJdLDY3MDEzKSxhW3c+PjJd''@;'; put 'put ''PWFbZj4+Ml0sYVt3KzQ+PjJdPWFbZis0Pj4yXSxhW3crOD4+Ml09YVtmKzg+PjJdLGFbdysxMj4+Ml09YVtmKzEyPj4yXSxfNShBLHcpLGo2KG0sK19bZisxNj4+M10tK19bZj4+M10pLGNvKEEsbSksajYobSwrX1tmKzI0Pj4zXS0rX1tmKzg+PjNdKSxjbyhBLG0pLEM1KGwsMTk1MDU5LDB8''@;'; put 'put ''YVtjKzg+PjJdKSxvZT1wfSxmdW5jdGlvbiB0MGUobCxjLGYscCl7cHw9MDt2YXIgbSx3LGIsayxBPTA7cD1vZSxvZT1vZSs0OHwwLGs9K19bMTYrKGZ8PTApPj4zXS0odz0rX1tmPj4zXSksYj0oQT0rX1tmKzI0Pj4zXSktK19bZis4Pj4zXSxBPSsofn4oK19bMjMyKyhsfD0wKT4+M10tK19b''@;'; put 'put ''bCsyMTY+PjNdKT4+PjApLUEsYVsobT1wKT4+Ml09YVs4KyhjfD0wKT4+Ml0sX1ttKzg+PjNdPWssX1ttKzE2Pj4zXT1iLF9bbSsyND4+M109dyxfW20rMzI+PjNdPUEsUnIobCw4NDMxMCxtKSxUbihsLDg0NDAyKSxvZT1wfSxmdW5jdGlvbiBrbChsLGMsZixwKXt2YXIgbSxBLHcsYixrO2x8''@;'; put 'put ''PTAsZnw9MCxwfD0wLHA9b2Usb2U9b2UrMzJ8MCxtPXArOHwwLGFbKGI9cCk+PjJdPWs9MHxhWyhjPTgrKGN8PTApfDApPj4yXSxhW2IrND4+Ml09ayxScihsLDg0MjIzLGIpLHc9LjUqKCtfW2Y+PjNdKyArX1tmKzE2Pj4zXSksQT0uNSooK19bZis4Pj4zXSsgK19bZisyND4+M10pLGFbbT4+''@;'; put 'put ''Ml09YVtjPj4yXSxfW20rOD4+M109dyxfW20rMTY+PjNdPUEsUnIobCw4NDI2NSxtKSxvZT1wfSxmdW5jdGlvbiBkNyhsLGMsZixwKXswPT0oMSYoZnw9MCl8MCkmITAmJiRpKGx8PTAsZil9LGZ1bmN0aW9uIFZhZShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgayxELFIsbT0wLEE9MCx3''@;'; put 'put ''PTAsYj0wLE09MDtpZihSPW9lLG9lPW9lKzgwfDAsaz1SKzQwfDAsbT1SLEQ9Uis2NHwwLEE9Uis1NnwwLDB8dWVbKGZ8PTApPj4wXSl7dz0wPT0oMHxwKT8xMDYzNTY6cCxhW0Q+PjJdPTE1LHA9MHxhWyhiPWMrMTZ8MCk+PjJdO2Rve2lmKDB8dWVbODIrKDB8YVtwKzEwND4+Ml0pPj4wXSl7''@;'; put 'put ''aWYoIShwPTB8U0coYyxmLEQpKSl7cD0wfGFbYj4+Ml0sTT04O2JyZWFrfTB8eWsoYyxwLG0sdywwfGFbRD4+Ml0sMCkmJihhW2s+PjJdPTB8JHIoYyksYVtrKzQ+PjJdPWYsYVtrKzg+PjJdPXcsWHIoMCwxMDYzNTgsaykpfWVsc2UgTT04fXdoaWxlKDApOzg9PSgwfE0pJiYoMTY2ND09KDB8''@;'; put 'put ''YVs4KygwfGFbcCs4Pj4yXSk+PjJdKT9BPTA6KGFbQT4+Ml09YyxhW0ErND4+Ml09MCksMHx5ayhjLDAsbSxmLDB8YVtEPj4yXSxBKSYmRk4oYyxmKSksYVttKzM2Pj4yXT0wLEE9bCs0MHwwO2Rve2FbbD4+Ml09YVttPj4yXSxsPWwrNHwwLG09bSs0fDB9d2hpbGUoKDB8bCk8KDB8QSkpfWVs''@;'; put 'put ''c2V7bT00MjA4LEE9bCs0MHwwO2Rve2FbbD4+Ml09YVttPj4yXSxsPWwrNHwwLG09bSs0fDB9d2hpbGUoKDB8bCk8KDB8QSkpfW9lPVJ9LGZ1bmN0aW9uIFlhZShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgYixrLG09MCxBPTAsdz0wO2lmKGs9b2Usb2U9b2UrNjR8MCxiPWsrNDB8MCxt''@;'; put 'put ''PWssMHx1ZVsoZnw9MCk+PjBdKXtwPTA9PSgwfHApPzEwNjM1NjpwLCh3PTB8SFEoQT0wfGFbMTIrKDB8YVtjKzE2Pj4yXSk+PjJdLGYpKT8wfHlrKGMsdysxNnwwLG0scCwwfGJ0W3crNjU+PjBdLDApJiYoYVtiPj4yXT0wfCRyKGMpLGFbYis0Pj4yXT1mLGFbYis4Pj4yXT1wLFhyKDAsMTA2''@;'; put 'put ''MzU4LGIpKTowfHlrKGMsQSsxNnwwLG0sZiwxNSwwKSYmRk4oYyxmKSxwPWwrNDB8MDtkb3thW2w+PjJdPWFbbT4+Ml0sbD1sKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGwpPCgwfHApKX1lbHNle209NDIwOCxwPWwrNDB8MDtkb3thW2w+PjJdPWFbbT4+Ml0sbD1sKzR8MCxtPW0rNHwwfXdoaWxl''@;'; put 'put ''KCgwfGwpPCgwfHApKX1vZT1rfSx4aixmdW5jdGlvbiBrQWUobCxjLGYscCl7Y3w9MCxmfD0wO3ZhciB3LGIsbT0wLEE9MDtmb3Iodz03MisobHw9MCl8MCxiPTQrKHB8PTApfDA7ISgoZi1jfDApPD0xKTspe3N3aXRjaChtPTB8dWVbYysxPj4wXSwwfChsPShsPTB8dWVbYz4+MF0pPDwyND4+''@;'; put 'put ''MjQ/MHxzMChsLG0pOjB8YnRbdysoMjU1Jm0pPj4wXSkpe2Nhc2UgNTpkZWZhdWx0OmM9YysyfDA7YnJlYWs7Y2FzZSA2OmM9YyszfDA7YnJlYWs7Y2FzZSA3OmM9Yys0fDA7YnJlYWs7Y2FzZSAxMDphW2I+PjJdPS0xLGFbcD4+Ml09MSsoMHxhW3A+PjJdKSxjPWMrMnwwO2JyZWFrO2Nhc2Ug''@;'; put 'put ''OTphW3A+PjJdPTErKDB8YVtwPj4yXSksKGYtKEE9YysyfDApfDApPjE/KG09MHx1ZVtjKzM+PjBdLGM9MTA9PSgwfChsPShsPTB8dWVbQT4+MF0pPDwyND4+MjQ/MHxzMChsLG0pOjB8YnRbdysoMjU1Jm0pPj4wXSkpP2MrNHwwOkEpOmM9QSxhW2I+PjJdPS0xfWFbYj4+Ml09MSsoMHxhW2I+''@;'; put 'put ''PjJdKX19LGZ1bmN0aW9uIFBqKGwsYyxmLHApe2N8PTAsZnw9MDt2YXIgdyxiLG09MCxBPTA7Zm9yKHc9NzIrKGx8PTApfDAsYj00KyhwfD0wKXwwOyEoKGYtY3wwKTw9MSk7KXtzd2l0Y2gobT0wfHVlW2M+PjBdLDB8KGw9KGw9MHx1ZVtjKzE+PjBdKTw8MjQ+PjI0PzB8czAobCxtKTowfGJ0''@;'; put 'put ''W3crKDI1NSZtKT4+MF0pKXtjYXNlIDU6ZGVmYXVsdDpjPWMrMnwwO2JyZWFrO2Nhc2UgNjpjPWMrM3wwO2JyZWFrO2Nhc2UgNzpjPWMrNHwwO2JyZWFrO2Nhc2UgMTA6YVtiPj4yXT0tMSxhW3A+PjJdPTErKDB8YVtwPj4yXSksYz1jKzJ8MDticmVhaztjYXNlIDk6YVtwPj4yXT0xKygwfGFb''@;'; put 'put ''cD4+Ml0pLChmLShBPWMrMnwwKXwwKT4xPyhtPTB8dWVbQT4+MF0sYz0xMD09KDB8KGw9KGw9MHx1ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8czAobCxtKTowfGJ0W3crKDI1NSZtKT4+MF0pKT9jKzR8MDpBKTpjPUEsYVtiPj4yXT0tMX1hW2I+PjJdPTErKDB8YVtiPj4yXSl9fSxJMSxmdW5jdGlv''@;'; put 'put ''biBycyhsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgYixrLE0sRCxtPTAsQT0wLHc9MDtmb3IoRD1vZSxvZT1vZSszMnwwLGI9RCxjbShEKzE2fDAsY3w9MCksaz1jKzMyfDAsTT1jKzM2fDAsbT0wOyEoKDB8bSk+PSgwfGFbaz4+Ml0pKTspe0E9MHxhWygwfGFbTT4+Ml0pKyhtPDwyKT4+''@;'; put 'put ''Ml07ZG97aWYoISgwfHVlW0ErMzY+PjBdKSl7aWYoKDB8KHc9MHxhW0ErMjA+PjJdKSk9PSgwfGMpKXtCOChiLEEsMHxhW0ErMjQ+PjJdKSx6YyhsLHAsQSwwKTticmVha31COChiLEEsdyksemMobCxmLEEsMCk7YnJlYWt9fXdoaWxlKDApO209bSsxfDB9YVtsPj4yXT0yKygwfGFbbD4+Ml0p''@;'; put 'put ''LG9lPUR9LGZ1bmN0aW9uIEEzKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBldCxydCxHZSxsdCxNdCxrdCxFdCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxLPTAscGU9MCxtZT0wLGJlPTAsT2U9MCxMZT0wLEJlPTAsSGU9MCxqZT0wLGF0PTA7Zm9yKEV0PW9lLG9l''@;'; put 'put ''PW9lKzEyOHwwLEdlPUV0KzY0fDAsTT1FdCs0OHwwLGx0PUV0KzMyfDAsTXQ9RXQrMTZ8MCxrdD1FdCxtPTAsQT1mfD0wO0E7KW09bSsxfDAsQT0wfGFbQSs4Pj4yXTtmb3IocnQ9MHxtcigoNTYqbXwwKS0xMTJ8MCksYVtHZSs1Mj4+Ml09MCxhW0dlKzQ4Pj4yXT0wLEE9MHxhWzgrKGY9MHxh''@;'; put 'put ''WyhldD1mKzh8MCk+PjJdKT4+Ml0sMSZhWyhtPTB8YVtmKzIwPj4yXSk+PjJdJiYobT0wfGFbZisyND4+Ml0pLEI4KE0sZixtKSx3PWYsRz1mLFI9MCxEPStfW00+PjNdLGplPTAsaz0wLEJlPStfW00rOD4+M107MHxhWyhIZT1BKzh8MCk+PjJdOyl7aWYoeUIoYyxPZT0wfEVpKHcsQSksMHxh''@;'; put 'put ''W0crMTI+PjJdKSwoMHx1ZVsobWU9RyszNnwwKT4+MF0pPT0oMHx1ZVsoYmU9QSszNnwwKT4+MF0pPygwfGFbSGU+PjJdKT09KDB8cCk/KEI4KE10LEEsT2UpLGY9TXQsYXQ9MTIpOih3PUcsZj1qZSxiPUJlKTooY20obHQsT2UpLGY9bHQsYXQ9MTIpLDEyPT0oMHxhdCkpe2F0PTAsTGU9K19b''@;'; put 'put ''Zj4+M10sYj0rX1tmKzg+PjNdLEs9KDB8Ryk9PSgwfGFbZXQ+PjJdKSwocGU9KGY9MHx1ZVttZT4+MF0pPDwyND4+MjQ9PTApPyhmPTB8dWVbYmU+PjBdPygwfGFbQSsyMD4+Ml0pPT0oMHxPZSk/NDoyOjAsTT1PZSs0OHwwLEc9bSs0OHwwLHc9bSs0MHwwLG09Sz8wOlI+RD80OjIpOihmPWY8''@;'; put 'put ''PDI0Pj4yND09KDB8dWVbYmU+PjBdKT8wOigwfGFbQSsyMD4+Ml0pPT0oMHxPZSk/MTozLE09T2UrNDB8MCxHPW0rNDB8MCx3PW0rNDh8MCxtPUs/MDprPkJlPzE6MyksQzIoR2UsMSZwZSwrX1t3Pj4zXSwrX1tHPj4zXSwrX1tNPj4zXSxtLGYpLEc9amUrMXwwLGY9R2Usdz01NisobT1ydCso''@;'; put 'put ''NTYqamV8MCl8MCl8MDtkb3thW20+PjJdPWFbZj4+Ml0sbT1tKzR8MCxmPWYrNHwwfXdoaWxlKCgwfG0pPCgwfHcpKTtpZigoMHx1ZVttZT4+MF0pIT0oMHx1ZVtiZT4+MF0pJiYoMHxhW0hlPj4yXSk9PSgwfHApKXtCOChrdCxBLE9lKSxmPU9lKzQwfDAsbT1PZSs0OHwwLEMyKEdlLDEmKE09''@;'; put 'put ''MD09KDB8dWVbYmU+PjBdKSksK19bKE0/ZjptKT4+M10sUj0rX1soTT9tOmYpPj4zXSxSLE0/RD5MZT80OjI6QmU+Yj8xOjMsMCksTT1qZSsyfDAsZj1HZSx3PTU2KyhtPXJ0Kyg1NipHfDApfDApfDA7ZG97YVttPj4yXT1hW2Y+PjJdLG09bSs0fDAsZj1mKzR8MH13aGlsZSgoMHxtKTwoMHx3''@;'; put 'put ''KSk7bT1PZSx3PUEsUj1ELEQ9TGUsZj1NLGs9QmV9ZWxzZSBtPU9lLHc9QSxSPUQsRD1MZSxmPUcsaz1CZX1PZT1BLEE9MHxhW0hlPj4yXSxHPXcsamU9ZixCZT1iLHc9T2V9Zm9yKEE9MHxaYShydCw1NipqZXwwKSxmPWplKy0xfDAsbT0wOyEoKDB8bSk+PSgwfGplKSk7KSgwfG0pPjAmJihh''@;'; put 'put ''W0ErKDU2Km18MCkrNDg+PjJdPUErKDU2KihtKy0xfDApfDApKSwoMHxtKTwoMHxmKT8oYVtBKyg1NiptfDApKzUyPj4yXT1BKyg1NiooYXQ9bSsxfDApfDApLG09YXQpOm09bSsxfDA7YVtsPj4yXT1qZSxhW2wrND4+Ml09QSxvZT1FdH0sZnVuY3Rpb24gb3cobCxjLGYscCl7eGooNTg1ODQs''@;'; put 'put ''Y3w9MCxmfD0wLHB8PTApfV0sbjM9W0FnLGZ1bmN0aW9uIEY3ZShsLGMsZixwLG0pe3ZhciBBO2hJKGx8PTAsMHxhWzI2NCsoQT0wfGFbbCsxNj4+Ml0pPj4yXSwwfGFbQSsyNzI+PjJdLDB8YVtBKzI2OD4+Ml0sY3w9MCxmfD0wLHB8PTAsbXw9MCl9LGZ1bmN0aW9uIElpZShsLGMsZixwLG0p''@;'; put 'put ''e2x8PTAsZnw9MCxwfD0wO3ZhciBBPTA7cD1vZSxvZT1vZSsxNnwwLGY9cCwwfChjfD0wKSYmMHxhWyhBPTI3MisoMHxhW2wrMTY+PjJdKXwwKT4+Ml0mJihUbihsLDY5MDE0KSxOZChsLDB8YVtBPj4yXSwyKSxUbihsLDY5MDI1KSxhW2Y+PjJdPTB8SU4oYywwfGFbNDY3MjBdKSxScihsLDY5''@;'; put 'put ''MDI5LGYpKSxvZT1wfSxmdW5jdGlvbiBQQyhsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wO3ZhciBBLHcsayxNLEQsYj0wO0Q9b2Usb2U9b2UrMzJ8MCxBPUQrMTZ8MCxNPUQrOHwwLGs9RCx3PTE2KyhsfD0wKXwwLDB8KG18PTApJiYrX1s4MCsoYj0wfGFbdz4+Ml0pPj4zXT4uNSYmKEdkKGws''@;'; put 'put ''Yis1NnwwKSxUbihsLDg0NDQ3KSxOZChsLGYscCksVG4obCwxMDI2MDQpLGFbQT4+Ml09YVtmPj4yXSxhW0ErND4+Ml09YVtmKzQ+PjJdLGFbQSs4Pj4yXT1hW2YrOD4+Ml0sYVtBKzEyPj4yXT1hW2YrMTI+PjJdLEYzKGwsQSksYVtrPj4yXT1wLGFbays0Pj4yXT1jLFJyKGwsNjg3NjYsaykp''@;'; put 'put ''LCtfWzQwKygwfGFbdz4+Ml0pPj4zXT4uNSYmKF83KGwpLEdkKGwsMTYrKDB8YVt3Pj4yXSl8MCksVG4obCw4NDQ0NyksTmQobCxmLHApLFRuKGwsMTAyNjA0KSxhW0E+PjJdPWFbZj4+Ml0sYVtBKzQ+PjJdPWFbZis0Pj4yXSxhW0ErOD4+Ml09YVtmKzg+PjJdLGFbQSsxMj4+Ml09YVtmKzEy''@;'; put 'put ''Pj4yXSxGMyhsLEEpLGFbTT4+Ml09cCxhW00rND4+Ml09YyxScihsLDY4NzgyLE0pKSxvZT1EfSxmdW5jdGlvbiAkVyhsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTAsVG4obHw9MCw3NDUxOSksMHxtJiYoVG4obCw3NDUyMiksVG4obCwwfFgxKG0pKSxUbihsLDk4NzQ0KSksVG4obCw3''@;'; put 'put ''NDQxMiksVG4obCw3NjM0OSksMHxjJiYwfHVlW2M+PjBdJiYoVG4obCw3NDUzMCksVG4obCxjKSxUbihsLDk4NzQ0KSksMHxmJiYwfHVlW2Y+PjBdJiYoVG4obCw3NDU0NCksVG4obCwwfHdOKGYsMSkpLFRuKGwsOTg3NDQpKSwwfHAmJjB8dWVbcD4+MF0mJihUbihsLDc0NTU5KSxUbihsLDB8''@;'; put 'put ''WDEocCkpLFRuKGwsOTg3NDQpKSxUbihsLDc2Mzg4KX0sZnVuY3Rpb24gcTdlKGwsYyxmLHAsbSl7dmFyIEEsdyxiO2N8PTAsZnw9MCxwfD0wLG18PTAsYj1vZSxvZT1vZSszMnwwLHc9YisxNnwwLEE9Yis4fDAsbT1iLFRuKGx8PTAsNzYzNDkpLDB8YyYmMHx1ZVtjPj4wXSYmKGFbbT4+Ml09''@;'; put 'put ''MHxNNShjKSxScihsLDc2MzUyLG0pKSwwfGYmJjB8dWVbZj4+MF0mJihhW0E+PjJdPTB8TTUoZiksUnIobCw3NjM2MyxBKSksMHxwJiYwfHVlW3A+PjBdJiYoYVt3Pj4yXT0wfE01KHApLFJyKGwsNzYzNzUsdykpLFRuKGwsNzYzODgpLG9lPWJ9LGZ1bmN0aW9uIFhJKGwsYyxmLHAsbSl7cHw9''@;'; put 'put ''MDt2YXIgUixHLHBlLG1lLExlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEs9MCxiZT0wLE9lPTA7Zm9yKFI9MT09KDB8KG18PTApKSxHPTE2KyhtZT0wfGFbKDB8YVsoMHxhWzE5NisoMHxhWyhMZT0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKygoY3w9MCk8PDYpKzQ+PjJdKSsoKGZ8PTApPDwy''@;'; put 'put ''KT4+Ml0pfDAsRD1wZT1mKzF8MDs7KXtpZigoMHxEKT4oMHxwKSl7QT1wLE9lPXBlO2JyZWFrfU09MTYrKEs9MHxhWygwfGFbKDB8YVsxOTYrKDB8YVtMZT4+Ml0pPj4yXSkrKGM8PDYpKzQ+PjJdKSsoRDw8Mik+PjJdKXwwO2U6ZG97aWYoUilmb3IoOzspe2lmKCEoaz0wfGFbYVsxODArKGY9''@;'; put 'put ''MHxhW00+PjJdKT4+Ml0+PjJdKSlicmVhayBlO2Zvcih3PTB8YVsxODArKDB8YVtHPj4yXSk+PjJdLGI9aystNDh8MCxtPTA7Oyl7aWYoIShmPTB8YVt3KyhtPDwyKT4+Ml0pKXtiZT04O2JyZWFrfWlmKCgwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpmKy00OHwwKSs0MD4+Ml0pPT0oMHxhWygy''@;'; put 'put ''PT0oMyZhW2s+PjJdfDApP2s6YikrNDA+PjJdKSlicmVhazttPW0rMXwwfWZvcig4PT0oMHxiZSkmJihiZT0wLGY9MHxrZihtZSwwfGFbKDI9PSgzJmFbaz4+Ml18MCk/azpiKSs0MD4+Ml0saykpO209MHxhW2FbMTcyKygwfGFbTT4+Ml0pPj4yXT4+Ml07KXVjKG0sZiksVWQobSk7VWQoayl9''@;'; put 'put ''ZWxzZSBmb3IoOzspe2lmKCEoaz0wfGFbYVsxNzIrKGY9MHxhW00+PjJdKT4+Ml0+PjJdKSlicmVhayBlO2Zvcih3PTB8YVsxNzIrKDB8YVtHPj4yXSk+PjJdLGI9ays0OHwwLG09MDs7KXtpZighKGY9MHxhW3crKG08PDIpPj4yXSkpe2JlPTE3O2JyZWFrfWlmKCgwfGFbKDM9PSgzJmFbZj4+''@;'; put 'put ''Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSk9PSgwfGFbKDM9PSgzJmFbaz4+Ml18MCk/azpiKSs0MD4+Ml0pKWJyZWFrO209bSsxfDB9Zm9yKDE3PT0oMHxiZSkmJihiZT0wLGY9MHxrZigwfGFbKDM9PSgzJmFbaz4+Ml18MCk/azpiKSs0MD4+Ml0sbWUsaykpO209MHxhW2FbMTgwKygwfGFbTT4+''@;'; put 'put ''Ml0pPj4yXT4+Ml07KXVjKG0sZiksVWQobSk7VWQoayl9fXdoaWxlKDApO2lmKCgwfGFbZisxNzY+PjJdKSE9KDAtKDB8YVtmKzE4ND4+Ml0pfDApKXtiZT0yMzticmVha31ENShsLEspLEQ9RCsxfDB9Zm9yKDIzPT0oMHxiZSkmJkJyKDg4MzEzLDg4MzU3LDExNSw4ODM2NCk7ISgoMHwoQT1B''@;'; put 'put ''KzF8MCkpPj0oMHxhWyhtPShmPTB8YVsxOTYrKDB8YVtMZT4+Ml0pPj4yXSkrKGM8PDYpfDApPj4yXSkpOylhWyhwPTB8YVtmKyhjPDw2KSs0Pj4yXSkrKE9lPDwyKT4+Ml09YmU9MHxhW3ArKEE8PDIpPj4yXSxhWzIzNisoMHxhW2JlKzE2Pj4yXSk+PjJdPU9lLE9lPU9lKzF8MDthW20+PjJd''@;'; put 'put ''PU9lLGFbKDB8YVtmKyhjPDw2KSs0Pj4yXSkrKE9lPDwyKT4+Ml09MH0seXJlLGZ1bmN0aW9uIExSKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLE0sRCxSLEcsSyxwZSxtZSxiZSxPZSxCZSxIZSxldCxBPTAsdz0wLGs9MCxMZT0wLGplPTAscnQ9MCxHZT0wLGx0''@;'; put 'put ''PTAsTXQ9MCxrdD0wO2ZvcihldD1vZSxvZT1vZSsyMjR8MCxEPWV0KzE3NnwwLE09ZXQrMjA4fDAsSGU9ZXQrMTYwfDAsamU9ZXQrMTI4fDAsaz1ldCs5NnwwLGJlPWV0KzY0fDAsUj1ldCszMnwwLF9bKExlPShPZT1ldCkrOHwwKT4+M109MTc5NzY5MzEzNDg2MjMxNTdlMjkyLF9bT2U+PjNd''@;'; put 'put ''PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfWyhCZT1PZSsyNHwwKT4+M109LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfWyhHPU9lKzE2fDApPj4zXT0tMTc5NzY5MzEzNDg2MjMxNTdlMjkyLF91KDExMDE4MyxsKSxhW0Q+PjJdPTEwLGFbRCs0Pj4yXT0xMCxUMChsLDExMDU4OSxEKSxfdSgxMzgy''@;'; put 'put ''NjUsbCksdz1jKzR8MCxiPWMrMTJ8MCxLPWJlKzh8MCxwZT1iZSsxNnwwLG1lPWJlKzI0fDAsQT0wOyEoKDB8QSk+PSgwfGFbdz4+Ml0pKTspYVtiZT4+Ml09YVsoTXQ9KDB8YVtiPj4yXSkrKDcyKkF8MCkrNDB8MCk+PjJdLGFbYmUrND4+Ml09YVtNdCs0Pj4yXSxhW2JlKzg+PjJdPWFbTXQr''@;'; put 'put ''OD4+Ml0sYVtiZSsxMj4+Ml09YVtNdCsxMj4+Ml0sYVtiZSsxNj4+Ml09YVtNdCsxNj4+Ml0sYVtiZSsyMD4+Ml09YVtNdCsyMD4+Ml0sYVtiZSsyND4+Ml09YVtNdCsyND4+Ml0sYVtiZSsyOD4+Ml09YVtNdCsyOD4+Ml0sbHQ9K19bSz4+M10sR2U9K19bcGU+PjNdLHJ0PStfW21lPj4zXSxf''@;'; put 'put ''W2s+PjNdPStfW2JlPj4zXSxfW2srOD4+M109bHQsX1trKzE2Pj4zXT1HZSxfW2srMjQ+PjNdPXJ0LFQwKGwsMTM4Mjg0LGspLEE9QSsxfDA7Zm9yKEE9MDshKCgwfEEpPj0oMHxmKSk7KU10PTB8YVttKyhBPDwzKSs0Pj4yXSxhW00+PjJdPWFbKGs9cCsoQTw8Myl8MCk+PjJdLGFbTSs0Pj4y''@;'; put 'put ''XT1hW2srND4+Ml0sYVtEPj4yXT1hW09lPj4yXSxhW0QrND4+Ml09YVtPZSs0Pj4yXSxhW0QrOD4+Ml09YVtPZSs4Pj4yXSxhW0QrMTI+PjJdPWFbT2UrMTI+PjJdLGFbRCsxNj4+Ml09YVtPZSsxNj4+Ml0sYVtEKzIwPj4yXT1hW09lKzIwPj4yXSxhW0QrMjQ+PjJdPWFbT2UrMjQ+PjJdLGFb''@;'; put 'put ''RCsyOD4+Ml09YVtPZSsyOD4+Ml0sT1IoUixsLE10LE0sYyxEKSxhW09lPj4yXT1hW1I+PjJdLGFbT2UrND4+Ml09YVtSKzQ+PjJdLGFbT2UrOD4+Ml09YVtSKzg+PjJdLGFbT2UrMTI+PjJdPWFbUisxMj4+Ml0sYVtPZSsxNj4+Ml09YVtSKzE2Pj4yXSxhW09lKzIwPj4yXT1hW1IrMjA+PjJd''@;'; put 'put ''LGFbT2UrMjQ+PjJdPWFbUisyND4+Ml0sYVtPZSsyOD4+Ml09YVtSKzI4Pj4yXSxBPUErMXwwO2ZvcihfdSgxMTA2MDYsbCksdz1jKzh8MCxBPTA7ISgoMHxBKT49KDB8YVtjPj4yXSkpOylhW2JlPj4yXT1hWyhNdD0oMHxhW3c+PjJdKSsoNzIqQXwwKSs0MHwwKT4+Ml0sYVtiZSs0Pj4yXT1h''@;'; put 'put ''W010KzQ+PjJdLGFbYmUrOD4+Ml09YVtNdCs4Pj4yXSxhW2JlKzEyPj4yXT1hW010KzEyPj4yXSxhW2JlKzE2Pj4yXT1hW010KzE2Pj4yXSxhW2JlKzIwPj4yXT1hW010KzIwPj4yXSxhW2JlKzI0Pj4yXT1hW010KzI0Pj4yXSxhW2JlKzI4Pj4yXT1hW010KzI4Pj4yXSxydD0rX1tLPj4zXSxH''@;'; put 'put ''ZT0rX1twZT4+M10sbHQ9K19bbWU+PjNdLF9bamU+PjNdPWt0PStfW2JlPj4zXSxfW2plKzg+PjNdPXJ0LF9bamUrMTY+PjNdPUdlLF9bamUrMjQ+PjNdPWx0LFQwKGwsMTM4MzIxLGplKSxfW09lPj4zXT0rX1soK19bT2U+PjNdPGt0P09lOmJlKT4+M10sX1tMZT4+M109K19bKCtfW0xlPj4z''@;'; put 'put ''XTxydD9PZTpiZSkrOD4+M10sX1tHPj4zXT0rX1soK19bRz4+M10+R2U/T2U6YmUpKzE2Pj4zXSxfW0JlPj4zXT0rX1soK19bQmU+PjNdPmx0P09lOmJlKSsyND4+M10sQT1BKzF8MDtMZT1+figrX1tMZT4+M10rMTApLGplPX5+KCtfW0c+PjNdKzEwKSxNdD1+figrX1tCZT4+M10rMTApLGFb''@;'; put 'put ''SGU+PjJdPX5+KCtfW09lPj4zXSsxMCksYVtIZSs0Pj4yXT1MZSxhW0hlKzg+PjJdPWplLGFbSGUrMTI+PjJdPU10LFQwKGwsMTEwNjMxLEhlKSxvZT1ldH0sQWcsQWcsQWcsQWcsQWcsQWcsQWddLGd3PVtwdyxmdW5jdGlvbiBuaWUobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxBfD0wLHJJKGx8''@;'; put 'put ''PTApLExDKGwpLEE/KDM9PSgxfEEpP2FJKGwsQSxjLGYpOmxJKGwpLE9DKGwsOTgsYyxmKSk6T0MobCw2NixjLGYpfSxmdW5jdGlvbiBPN2UobCxjLGYscCxtLEEpe2N8PTAscHw9MCxtfD0wLEF8PTA7dmFyIE0sRCxLLHBlLG1lLGJlLE9lLExlLEJlLEhlLGplLGV0LHJ0LEdlLGx0LHc9MCxi''@;'; put 'put ''PTAsaz0wLFI9MCxHPTAsTXQ9MCxrdD0wLGF0PTA7Zm9yKGx0PW9lLG9lPW9lKzE5MnwwLEdlPWx0KzE3NnwwLGV0PWx0KzE2OHwwLHJ0PWx0KzEwNHwwLGplPWx0Kzk2fDAsdz1sdCs4OHwwLE9lPWx0KzE4MHwwLExlPWx0KzgwfDAsQmU9bHQrMTZ8MCxIZT1sdCxLPX5+K19bMTUyKyhwPTB8''@;'; put 'put ''YVsobT0xNisobHw9MCl8MCk+PjJdKT4+M10scGU9MHxhW3ArMTY+PjJdLG1lPTB8YVs0NjcxMF0sKDB8KGZ8PTApKTw9MyYmQnIoNjc4ODIsNjc4ODksMzYwLDY3OTA5KSxiZT0wfFIwKDE0MCsoMTQwKmZ8MCl8MCksZkkocCxPZSxMZSksQT8oUj01LGI9MHxhWzU2KygwfGFbbT4+Ml0pPj4y''@;'; put 'put ''XSxrPTIwKTooUj00LGI9MCxrPS0xKSxfWyhEPUJlKzQ4fDApPj4zXT1rdD0rX1tjPj4zXSxfW0JlKzU2Pj4zXT1NdD0rX1tjKzg+PjNdLGFbdz4+Ml09fn4oa3QrKGt0Pj0wPy41Oi0uNSkpLGFbdys0Pj4yXT1+fihNdCsoTXQ+PTA/LjU6LS41KSksTT1IZSs4fDAscD1iZSsoMHxhbyhiZSw4''@;'; put 'put ''MTA5OSx3KSl8MCxHPTEsQT0wOyEoKDB8KHc9QSszfDApKT49KDB8ZikpOyl7Zm9yKGFbQmU+PjJdPWFbRD4+Ml0sYVtCZSs0Pj4yXT1hW0QrND4+Ml0sYVtCZSs4Pj4yXT1hW0QrOD4+Ml0sYVtCZSsxMj4+Ml09YVtEKzEyPj4yXSxtPTE7Oyl7aWYoND09KDB8bSkpe209MTticmVha31fW0Jl''@;'; put 'put ''KyhtPDw0KT4+M109K19bYysoKGF0PW0rQXwwKTw8NCk+PjNdLF9bQmUrKG08PDQpKzg+PjNdPStfW2MrKGF0PDw0KSs4Pj4zXSxtPW0rMXwwfWZvcig7NyE9KDB8bSk7KXd1KEhlLEJlLDMsLjE2NjY2NjY2NjY2NjY2NjY2KisoMHxtKSwwLDApLGt0PStfW00+PjNdLGFbamU+PjJdPX5+KChN''@;'; put 'put ''dD0rX1tIZT4+M10pKyhNdD49MD8uNTotLjUpKSxhW2plKzQ+PjJdPX5+KGt0KyhrdD49MD8uNTotLjUpKSxtPW0rMXwwLHA9cCsoMHxhbyhwLDgxMDk5LGplKSl8MDtHPUcrNnwwLEE9d31mb3IobT0wfGFbT2U+PjJdLGt0PStfW0xlPj4zXSxhW3J0Pj4yXT0zLGFbcnQrND4+Ml09UixhW3J0''@;'; put 'put ''Kzg+PjJdPW0sYVtydCsxMj4+Ml09SyxhW3J0KzE2Pj4yXT1wZSxhW3J0KzIwPj4yXT1iLGFbcnQrMjQ+PjJdPW1lLGFbcnQrMjg+PjJdPTAsYVtydCszMj4+Ml09ayxfW3J0KzQwPj4zXT1rdCxhW3J0KzQ4Pj4yXT0wLGFbcnQrNTI+PjJdPTAsYVtydCs1Nj4+Ml09MCxhW3J0KzYwPj4yXT1H''@;'; put 'put ''LFJyKGwsNjgzODIscnQpLGFbZXQ+PjJdPWJlLFJyKGwsODExMDYsZXQpLEh0KGJlKSxtPUcrLTF8MCxwPTA7ISgoMHxwKT49KDB8RykpOylhW0dlPj4yXT0wIT0oMHwoMHxwKSUoMHxtKSkmMSxScihsLDgxMTExLEdlKSxwPXArMXwwO1RuKGwsMTUzNTk5KSxvZT1sdH0sZnVuY3Rpb24gejdl''@;'; put 'put ''KGwsYyxmLHAsbSxBKXtjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBNLEQsSyxwZSxtZSxiZSxPZSxMZSxCZSxIZSxqZSxldCxydCxHZSxsdCx3PTAsYj0wLGs9MCxSPTAsRz0wLE10PTAsa3Q9MCxhdD0wO2ZvcihsdD1vZSxvZT1vZSsxOTJ8MCxHZT1sdCsxNzZ8MCxldD1sdCsxNjh8MCxydD1s''@;'; put 'put ''dCsxMDR8MCxqZT1sdCs5NnwwLG09bHQrODh8MCxPZT1sdCsxODB8MCxMZT1sdCs4MHwwLEJlPWx0KzE2fDAsSGU9bHQsSz1+fitfWzE1MisoRz0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSk+PjNdLHBlPTB8YVtHKzE2Pj4yXSxtZT0wfGFbNDY3MTZdLGJlPTB8UjAoMTQwKygxNDAqKGZ8PTAp''@;'; put 'put ''fDApfDApLHJIKEcsT2UsTGUpLEE/KFI9NSxiPTB8YVs1NisoMHxhW3A+PjJdKT4+Ml0saz0yMCk6KFI9NCxiPTAsaz0tMSksX1soRD1CZSs0OHwwKT4+M109a3Q9K19bYz4+M10sX1tCZSs1Nj4+M109TXQ9K19bYys4Pj4zXSxhW20+PjJdPX5+KGt0KyhrdD49MD8uNTotLjUpKSxhW20rND4+''@;'; put 'put ''Ml09fn4oTXQrKE10Pj0wPy41Oi0uNSkpLE09SGUrOHwwLHA9YmUrKDB8YW8oYmUsODEwOTksbSkpfDAsRz0xLEE9MDshKCgwfCh3PUErM3wwKSk+PSgwfGYpKTspe2ZvcihhW0JlPj4yXT1hW0Q+PjJdLGFbQmUrND4+Ml09YVtEKzQ+PjJdLGFbQmUrOD4+Ml09YVtEKzg+PjJdLGFbQmUrMTI+''@;'; put 'put ''PjJdPWFbRCsxMj4+Ml0sbT0xOzspe2lmKDQ9PSgwfG0pKXttPTE7YnJlYWt9X1tCZSsobTw8NCk+PjNdPStfW2MrKChhdD1tK0F8MCk8PDQpPj4zXSxfW0JlKyhtPDw0KSs4Pj4zXT0rX1tjKyhhdDw8NCkrOD4+M10sbT1tKzF8MH1mb3IoOzchPSgwfG0pOyl3dShIZSxCZSwzLC4xNjY2NjY2''@;'; put 'put ''NjY2NjY2NjY2NiorKDB8bSksMCwwKSxrdD0rX1tNPj4zXSxhW2plPj4yXT1+figoTXQ9K19bSGU+PjNdKSsoTXQ+PTA/LjU6LS41KSksYVtqZSs0Pj4yXT1+fihrdCsoa3Q+PTA/LjU6LS41KSksbT1tKzF8MCxwPXArKDB8YW8ocCw4MTA5OSxqZSkpfDA7Rz1HKzZ8MCxBPXd9Zm9yKG09MHxh''@;'; put 'put ''W09lPj4yXSxrdD0rX1tMZT4+M10sYVtydD4+Ml09MyxhW3J0KzQ+PjJdPVIsYVtydCs4Pj4yXT1tLGFbcnQrMTI+PjJdPUssYVtydCsxNj4+Ml09cGUsYVtydCsyMD4+Ml09YixhW3J0KzI0Pj4yXT1tZSxhW3J0KzI4Pj4yXT0wLGFbcnQrMzI+PjJdPWssX1tydCs0MD4+M109a3QsYVtydCs0''@;'; put 'put ''OD4+Ml09MCxhW3J0KzUyPj4yXT0wLGFbcnQrNTY+PjJdPTAsYVtydCs2MD4+Ml09RyxScihsLDY4MzgyLHJ0KSxhW2V0Pj4yXT1iZSxScihsLDgxMTA2LGV0KSxIdChiZSksbT1HKy0xfDAscD0wOyEoKDB8cCk+PSgwfEcpKTspYVtHZT4+Ml09MCE9KDB8KDB8cCklKDB8bSkpJjEsUnIobCw4''@;'; put 'put ''MTExMSxHZSkscD1wKzF8MDtUbihsLDE1MzU5OSksb2U9bHR9LGZ1bmN0aW9uIGdJKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3LGssYj0wO2lmKGs9b2Usb2U9b2UrMTZ8MCxtPWssdz0xNisobHw9MCl8MCwwfChBfD0wKSYmK19bODArKGI9MHxhW3c+PjJdKT4+M10+''@;'; put 'put ''LjUpe2ZvcihHZChsLGIrNTZ8MCksVG4obCw2ODg1MiksYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sRjMobCxtKSxUbihsLDY4ODYxKSxwPTE7ISgoMHxwKT49KDB8ZikpOylOZChsLGMrKHA8PDQp''@;'; put 'put ''fDAsMyksVG4obCw2ODg4NykscD1wKzN8MDtUbihsLDY4ODk3KX1pZigrX1s0MCsoMHxhW3c+PjJdKT4+M10+LjUpe2ZvcihfNyhsKSxHZChsLDE2KygwfGFbdz4+Ml0pfDApLFRuKGwsNjg4NTIpLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+''@;'; put 'put ''Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLEYzKGwsbSksVG4obCw2ODg2MSkscD0xOyEoKDB8cCk+PSgwfGYpKTspTmQobCxjKyhwPDw0KXwwLDMpLFRuKGwsNjg4ODcpLHA9cCszfDA7VG4obCw2ODg3OSl9b2U9a30sZnVuY3Rpb24gZVkobCxjLGYscCxtLEEpe3N3aXRjaChjfD0wLGZ8PTAs''@;'; put 'put ''cHw9MCxtfD0wLG09MHxhWzE2KyhsfD0wKT4+Ml0sMHwoQXw9MCkpe2Nhc2UgMjpwPTB8dFkobCxjLGYpO2JyZWFrO2Nhc2UgMzpwPTB8blkobCk7YnJlYWs7ZGVmYXVsdDpwPTB9VG4obCw3MzU5NCksNTEyJlR0W20rMjYwPj4xXSYmKFRuKGwsNzM2MDApLFRuKGwsMHxYMSgwfGFbbSsyMTI+''@;'; put 'put ''PjJdKSksVG4obCw3MzYwNikpLEFJKGwsQSxwKSxUbihsLDczNjExKSxmdW5jdGlvbiByWShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEEsdyxwPTAsbT0wO2Zvcih3PW9lLG9lPW9lKzE2fDAsQT13LHA9NzcsbT0wOyEoKDB8bSk+PSgwfGYpKTspYVtBPj4yXT1wLFJyKGwsNzM2MTYsQSks''@;'; put 'put ''TnMobCwrX1tjKyhtPDw0KT4+M10pLFRuKGwsMTAwOTk5KSxOcyhsLC0rX1tjKyhtPDw0KSs4Pj4zXSkscD0wPT0oMHxtKT82NzozMixtPW0rMXwwO29lPXd9KGwsYyxmKSxUbihsLDczNDI0KX0sZnVuY3Rpb24gbFkobCxjLGYscCxtLEEpe3ZhciB3LGIsayxNO2lmKGN8PTAsZnw9MCxwfD0w''@;'; put 'put ''LG18PTAsQXw9MCxNPW9lLG9lPW9lKzQ4fDAsdz1NLDB8YVsoaz0xNDQrKGI9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSl7d0kobCksVG4obCw3NTE0MSksTmQobCxjLGYpLFRuKGwsNzUxNTUpLG09YisxNnwwLEE9KHA9dykrNDB8MDtkb3thW3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0r''@;'; put 'put ''NHwwfXdoaWxlKCgwfHApPCgwfEEpKTtDNyhsLHcpLFRuKGwsNzUyNjYpLE5zKGwsK19bYisxNTI+PjNdKSwxPT0oMHwocD0wfGFbaz4+Ml0pKSYmKFRuKGwsNzUxNjMpLHA9MHxhW2s+PjJdKSwyPT0oMHxwKSYmVG4obCw3NTE3MiksVG4obCw3NTI3NSksaXkobCksVG4obCwxNTM1OTkpfW9l''@;'; put 'put ''PU19LGZ1bmN0aW9uIGxIKGwsYyxmLHAsbSxBKXt2YXIgdztjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsbT1vZSxvZT1vZSsxNnwwLHA9bSxUbihsfD0wLDc1NTExKSx3PTB8YVs0NjcyN10sYVtwPj4yXT1hWzQ2NzI2XSxhW3ArND4+Ml09dyxScihsLDc1NzY0LHApLGZZKGwsQSksVG4obCw3''@;'; put 'put ''NTc4OCksYkkobCksVG4obCw3NTc5MSksZnVuY3Rpb24gbnZlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSx3LHA9MCxtPTAsYj0wLGs9MDtmb3Iodz1vZSxvZT1vZSszMnwwLEE9dyxwPTc1ODE4LG09MDshKCgwfG0pPj0oMHxmKSk7KWs9K19bYysobTw8NCk+PjNdLGI9KygoMHxhWzQ2''@;'; put 'put ''NzI3XSk+Pj4wKS0rX1tjKyhtPDw0KSs4Pj4zXSxhW0E+PjJdPXAsX1tBKzg+PjNdPWssX1tBKzE2Pj4zXT1iLFJyKGwsNzU4MjEsQSkscD0wPT0oMHxtKT83NTgzNDoxOTUwNTksbT1tKzF8MDtUbihsLDk4NzQ0KSxvZT13fShsLGMsZiksVG4obCw3NTgwNCksb2U9bX0sZnVuY3Rpb24gZ3Zl''@;'; put 'put ''KGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIE0sRCxSLEcsbWUsYmUsT2UsTGUsQmUsSGUsamUsZXQscnQsdz0wLGI9MCxrPTAsSz0wLHBlPTAsR2U9MCxsdD0wO3J0PW9lLG9lPW9lKzIwOHwwLHA9cnQrMTYwfDAsZXQ9cnQrMTUyfDAsamU9cnQrMTM2fDAsSGU9''@;'; put 'put ''cnQrMTI4fDAsQmU9cnQrOTZ8MCxMZT1ydCs4OHwwLE9lPXJ0KzU2fDAsYj1ydCs0OHwwLHBlPXJ0KzI0fDAsSz1ydCxUbihsfD0wLDc4NzA5KSxXbls0NjcyOV09K1duWzQ2NzI4XS00LEdlPStfW2wrNDk2Pj4zXSxfW0s+PjNdPStfW2wrNDg4Pj4zXSxfW0srOD4+M109R2UsX1tLKzE2Pj4z''@;'; put 'put ''XT0xLEs9MHxrYShsLDc4Mjc3LEspLEdlPSsoMHxhW2wrMzYwPj4yXSksX1twZT4+M109MCxfW3BlKzg+PjNdPTAsX1twZSsxNj4+M109R2UscGU9MHxrYShsLDc4MzA5LHBlKSxHZT0rV25bNDY3MjldLTIsX1twPj4zXT0wLF9bcCs4Pj4zXT0wLF9bcCsxNj4+M109R2UsbWU9MHxrYShsLDc4''@;'; put 'put ''MzQxLHApLEE9NTYrKDB8YVsoYmU9bCsxNnwwKT4+Ml0pfDAsdz0obT1wKSs0MHwwO2Rve2FbbT4+Ml09YVtBPj4yXSxtPW0rNHwwLEE9QSs0fDB9d2hpbGUoKDB8bSk8KDB8dykpO2ZvcihNPTB8b3kobCxwLDApLGFbYj4+Ml09Nzg3MjMsYVtiKzQ+PjJdPWYrMixEPWwrNTA0fDAsUj1sKzUx''@;'; put 'put ''MnwwLEc9ZistMXwwLGs9MCxwPTB8a2EobCw3ODM3MyxiKTshKCgwfGspPj0oMHxmKSk7KWx0PStfW1I+PjNdKyArX1soQT1jKyhrPDw0KSs4fDApPj4zXSxHZT0rX1sxNTIrKDB8YVtiZT4+Ml0pPj4zXSxfW09lPj4zXT0rX1tEPj4zXSsgK19bKG09Yysoazw8NCl8MCk+PjNdLF9bT2UrOD4+''@;'; put 'put ''M109bHQsX1tPZSsxNj4+M109MCxfW09lKzI0Pj4zXT1HZSxiPTB8a2EobCw3ODQxOCxPZSksYVtMZT4+Ml09cCxhW0xlKzQ+PjJdPWIsdz0wfGthKGwsNzg0NDcsTGUpLEh0KGIpLEh0KHApLDA9PSgwfGspfCgwfGspPT0oMHxHKT8oR2U9K19bUj4+M10rICtfW0E+PjNdLGx0PStfWzE1Miso''@;'; put 'put ''MHxhW2JlPj4yXSk+PjNdLF9bQmU+PjNdPStfW0Q+PjNdKyArX1ttPj4zXSxfW0JlKzg+PjNdPUdlLF9bQmUrMTY+PjNdPTAsX1tCZSsyND4+M109bHQsYj0wfGthKGwsNzg0MTgsQmUpLGFbSGU+PjJdPXcsYVtIZSs0Pj4yXT1iLHA9MHxrYShsLDc4NDQ3LEhlKSxIdChiKSxIdCh3KSk6cD13''@;'; put 'put ''LGs9aysxfDA7YVtqZT4+Ml09SyxhW2plKzQ+PjJdPXBlLGFbamUrOD4+Ml09bWUsYVtqZSsxMj4+Ml09TSxjPTB8a2EobCw3ODczMixqZSksYVtldD4+Ml09cCxhW2V0KzQ+PjJdPWMsZj0wfGthKGwsNzg1MDIsZXQpLEh0KGMpLFRuKGwsZiksSHQoSyksSHQocGUpLEh0KG1lKSxIdChNKSxI''@;'; put 'put ''dChmKSxvZT1ydH0sZnVuY3Rpb24gU3ZlKGwsYyxmLHAsbSxBKXtjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciB3LGIsRCxSLEcsSyxtZSxiZSxrPTAsTT0wLHBlPTAsT2U9MCxMZT0wLEJlPTA7Zm9yKGJlPW9lLG9lPW9lKzEyOHwwLG1lPWJlKzExMnwwLEs9YmUrMTA0fDAsRz1iZSs5NnwwLHA9''@;'; put 'put ''YmUrODh8MCxEPWJlKzE2fDAsUj1iZSxrPTB8YVsxNisobHw9MCk+PjJdLGI9MHxSMCgxNDArKDE0MCooZnw9MCl8MCl8MCksdUgoayxiZSsxMTZ8MCxiZSs4MHwwKSxfWyhrPUQrNDh8MCk+PjNdPUxlPStfW2M+PjNdLF9bRCs1Nj4+M109T2U9K19bYys4Pj4zXSxhW3A+PjJdPX5+KExlKyhM''@;'; put 'put ''ZT49MD8uNTotLjUpKSxhW3ArND4+Ml09fn4oT2UrKE9lPj0wPy41Oi0uNSkpLHc9Uis4fDAscD1iKygwfGFvKGIsODEwOTkscCkpfDAscGU9MSxBPTA7ISgoMHwoTT1BKzN8MCkpPj0oMHxmKSk7KXtmb3IoYVtEPj4yXT1hW2s+PjJdLGFbRCs0Pj4yXT1hW2srND4+Ml0sYVtEKzg+PjJdPWFb''@;'; put 'put ''ays4Pj4yXSxhW0QrMTI+PjJdPWFbaysxMj4+Ml0sbT0xOzspe2lmKDQ9PSgwfG0pKXttPTE7YnJlYWt9X1tEKyhtPDw0KT4+M109K19bYysoKEJlPW0rQXwwKTw8NCk+PjNdLF9bRCsobTw8NCkrOD4+M109K19bYysoQmU8PDQpKzg+PjNdLG09bSsxfDB9Zm9yKDs3IT0oMHxtKTspd3UoUixE''@;'; put 'put ''LDMsLjE2NjY2NjY2NjY2NjY2NjY2KisoMHxtKSwwLDApLExlPStfW3c+PjNdLGFbRz4+Ml09fn4oKE9lPStfW1I+PjNdKSsoT2U+PTA/LjU6LS41KSksYVtHKzQ+PjJdPX5+KExlKyhMZT49MD8uNTotLjUpKSxtPW0rMXwwLHA9cCsoMHxhbyhwLDgxMDk5LEcpKXwwO3BlPXBlKzZ8MCxBPU19''@;'; put 'put ''Zm9yKGFbSz4+Ml09YixScihsLDgxMTA2LEspLEh0KGIpLG09cGUrLTF8MCxwPTA7ISgoMHxwKT49KDB8cGUpKTspYVttZT4+Ml09MCE9KDB8KDB8cCklKDB8bSkpJjEsUnIobCw4MTExMSxtZSkscD1wKzF8MDtUbihsLDE1MzU5OSksb2U9YmV9LGZ1bmN0aW9uIGRmKGwsYyxmLHAsbSxBKXtj''@;'; put 'put ''fD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBMZSxCZSxIZSxNdCxrdCxadCx1dCx3dCxybixGbix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsSz0wLHBlPTAsbWU9MCxiZT0wLE9lPTAsamU9MCxldD0wLHJ0PTAsR2U9MCxsdD0wLEV0PTAsbHI9MCxOcj0wLGtyPTA7Zm9yKEZuPW9lLG9lPW9l''@;'; put 'put ''KzExMnwwLGt0PUZuKzg4fDAsTXQ9Rm4rNzJ8MCx3dD1Gbis1NnwwLHJuPUZuKzQwfDAsTGU9MD09KDB8KEF8PTApKSxCZT0odXQ9Rm4pKzh8MCxIZT04KyhadD1GbisxNnwwKXwwLE9lPTAsaz0wLE09MCxEPTAsUj0wLEE9MDshKCgwfE9lKT49KDB8ZikpOyl7Zm9yKGV0PTQ4KyhqZT0wfGFb''@;'; put 'put ''bSsoT2U8PDMpKzQ+PjJdKXwwLEdlPTE2KygwfGFbKHJ0PWplKzE2fDApPj4yXSl8MCxhW010Pj4yXT1hWyhiZT0xNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbamU+PjJdfDApP2plOmV0KSs0MD4+Ml0pPj4yXSl8MCk+PjJdLGFbTXQrND4+Ml09YVtiZSs0Pj4yXSxhW010Kzg+PjJdPWFbYmUr''@;'; put 'put ''OD4+Ml0sYVtNdCsxMj4+Ml09YVtiZSsxMj4+Ml0sYVtrdD4+Ml09YVtHZT4+Ml0sYVtrdCs0Pj4yXT1hW0dlKzQ+PjJdLGFba3QrOD4+Ml09YVtHZSs4Pj4yXSxhW2t0KzEyPj4yXT1hW0dlKzEyPj4yXSx5Myh3dCxNdCxrdCksYVtadD4+Ml09YVt3dD4+Ml0sYVtadCs0Pj4yXT1hW3d0KzQ+''@;'; put 'put ''PjJdLGFbWnQrOD4+Ml09YVt3dCs4Pj4yXSxhW1p0KzEyPj4yXT1hW3d0KzEyPj4yXSxHZT1qZSstNDh8MCxtZT01NisoMHxhW3J0Pj4yXSl8MCxhW010Pj4yXT1hWyhiZT0xNisoMHxhWzE2KygwfGFbKDI9PSgzJmFbamU+PjJdfDApP2plOkdlKSs0MD4+Ml0pPj4yXSl8MCk+PjJdLGFbTXQr''@;'; put 'put ''ND4+Ml09YVtiZSs0Pj4yXSxhW010Kzg+PjJdPWFbYmUrOD4+Ml0sYVtNdCsxMj4+Ml09YVtiZSsxMj4+Ml0sYVtrdD4+Ml09YVttZT4+Ml0sYVtrdCs0Pj4yXT1hW21lKzQ+PjJdLGFba3QrOD4+Ml09YVttZSs4Pj4yXSxhW2t0KzEyPj4yXT1hW21lKzEyPj4yXSx5MyhybixNdCxrdCksYVt1''@;'; put 'put ''dD4+Ml09YVtybj4+Ml0sYVt1dCs0Pj4yXT1hW3JuKzQ+PjJdLGFbdXQrOD4+Ml09YVtybis4Pj4yXSxhW3V0KzEyPj4yXT1hW3JuKzEyPj4yXSxiZT0wfGFbcCsoT2U8PDMpKzQ+PjJdLGx0PTErKHBlPTMqKG1lPTB8YVtwKyhPZTw8Myk+PjJdKXwwKXwwLCgwfHBlKT49KDB8TSkmJigwfGsm''@;'; put 'put ''Jkh0KEEpLGs9Uj0wfFFuKGx0PDw0KSxNPWx0LEQ9UixBPVIpLDB8dWVbYmU+PjBdPyh3PStYcChiZSxjKSxiPStfW0hlPj4zXSk6KGI9KygwfEFkKGJlLGMpKSx3PStfW1p0Pj4zXSksSz1rKzE2fDAsX1trKzE2Pj4zXT13LF9baysyND4+M109YixhW1I+PjJdPWFbSz4+Ml0sYVtSKzQ+PjJd''@;'; put 'put ''PWFbSys0Pj4yXSxhW1IrOD4+Ml09YVtLKzg+PjJdLGFbUisxMj4+Ml09YVtLKzEyPj4yXSxLPTEsRz1iZSxwZT0yOyEoKDB8Syk+PSgwfG1lKSk7KTB8dWVbKEc9YmUrKDU2Kkt8MCl8MCk+PjBdP3c9K1hwKEcsYyk6Yj0rKDB8QWQoRyxjKSksbHI9aysocGUrMjw8NCl8MCxrcj1rKyhwZSsx''@;'; put 'put ''PDw0KXwwLF9bKE5yPWsrKHBlPDw0KXwwKT4+M109dyxfW2srKHBlPDw0KSs4Pj4zXT1iLGFba3I+PjJdPWFbTnI+PjJdLGFba3IrND4+Ml09YVtOcis0Pj4yXSxhW2tyKzg+PjJdPWFbTnIrOD4+Ml0sYVtrcisxMj4+Ml09YVtOcisxMj4+Ml0sYVtscj4+Ml09YVtOcj4+Ml0sYVtscis0Pj4y''@;'; put 'put ''XT1hW05yKzQ+PjJdLGFbbHIrOD4+Ml09YVtOcis4Pj4yXSxhW2xyKzEyPj4yXT1hW05yKzEyPj4yXSxLPUsrMXwwLHBlPXBlKzN8MDswfHVlW0c+PjBdPyh3PStYcChHLGMpLGI9K19bQmU+PjNdKTooYj0rKDB8QWQoRyxjKSksdz0rX1t1dD4+M10pLGtyPWsrKHBlPDw0KXwwLF9bKE5yPWsr''@;'; put 'put ''KChscj1wZSsxfDApPDw0KXwwKT4+M109dyxfW2srKGxyPDw0KSs4Pj4zXT1iLGFba3I+PjJdPWFbTnI+PjJdLGFba3IrND4+Ml09YVtOcis0Pj4yXSxhW2tyKzg+PjJdPWFbTnIrOD4+Ml0sYVtrcisxMj4+Ml09YVtOcisxMj4+Ml0sQXUoamUsMHxhWygyPT0oMyZhW2plPj4yXXwwKT9qZTpH''@;'; put 'put ''ZSkrNDA+PjJdLGssbHQsMjU2ODApLCFMZSYmMHwoRXQ9MHxhWzk2KygwfGFbcnQ+PjJdKT4+Ml0pJiYwPT0oMHx1ZVtFdCs4MT4+MF0pJiYoYVtNdD4+Ml09YVtadD4+Ml0sYVtNdCs0Pj4yXT1hW1p0KzQ+PjJdLGFbTXQrOD4+Ml09YVtadCs4Pj4yXSxhW010KzEyPj4yXT1hW1p0KzEyPj4y''@;'; put 'put ''XSxhW2t0Pj4yXT1hW3V0Pj4yXSxhW2t0KzQ+PjJdPWFbdXQrND4+Ml0sYVtrdCs4Pj4yXT1hW3V0Kzg+PjJdLGFba3QrMTI+PjJdPWFbdXQrMTI+PjJdLE55KDAsamUpKSxPZT1PZSsxfDB9SHQoRCksb2U9Rm59LHB3LHB3LHB3LHB3LHB3XSxVTD1bZnVuY3Rpb24gRzIobCxjLGYscCxtLEEs''@;'; put 'put ''dyxiLGspe3AyKDIwKX1dO3JldHVybntfX19lcnJub19sb2NhdGlvbjpmdW5jdGlvbiB0cygpe3JldHVybiAxOTA1NzJ9LF9fX211bGRpMzpodyxfX191ZGl2ZGkzOmR3LF9fX3VyZW1kaTM6dlMsX2JpdHNoaWZ0NjRBc2hyOkdMLF9iaXRzaGlmdDY0THNocjpadSxfYml0c2hpZnQ2NFNobDpj''@;'; put 'put ''cyxfZHRleHRyYWN0OkwzLF9mcmVlOkh0LF9odG9uczpmdW5jdGlvbiBhY2UobCl7cmV0dXJuIDB8ZnVuY3Rpb24gZXllKGwpe3JldHVybiAwfHRxKDB8KGx8PTApKX0obHw9MCl9LF9pNjRBZGQ6SGwsX2k2NFN1YnRyYWN0OmdwLF9sbHZtX2Jzd2FwX2kxNjp0cSxfbGx2bV9ic3dhcF9pMzI6''@;'; put 'put ''bnEsX21hbGxvYzpSMCxfbWVtYWxpZ246ZnVuY3Rpb24gRXVlKGwsYyl7cmV0dXJuIGN8PTAsKGx8PTApPj4+MDw5PzB8KGM9MHxSMChjKSk6KGM9MHxmdW5jdGlvbiB4dWUobCxjKXtjfD0wO3ZhciBBLGY9MCxwPTAsbT0wLHc9MCxiPTA7aWYoKGw9KGx8PTApPj4+MD4xNj9sOjE2KSstMSZs''@;'; put 'put ''KWZvcihmPTE2Ozspe2lmKCEoZj4+PjA8bD4+PjApKXtsPWY7YnJlYWt9Zjw8PTF9aWYoKC02NC1sfDApPj4+MDw9Yz4+PjApcmV0dXJuIGFbNDc2NDNdPTEyLDA7aWYoIShmPTB8UjAoMTIrKEE9Yz4+PjA8MTE/MTY6YysxMSYtOCkrbHwwKSkpcmV0dXJuIDA7bT1mKy04fDA7ZG97aWYobCst''@;'; put 'put ''MSZmKXtpZihwPSgocD0oZitsKy0xJjAtbCktOHwwKS0oYz1tKXwwKT4+PjA+MTU/cDpwK2x8MCxmPSgtOCYoYj0wfGFbKGw9ZistNHwwKT4+Ml0pKS0oYz1wLWN8MCl8MCwzJmIpe2FbKGI9cCs0fDApPj4yXT1mfDEmYVtiPj4yXXwyLGFbKGY9cCtmKzR8MCk+PjJdPTF8YVtmPj4yXSxhW2w+''@;'; put 'put ''PjJdPWN8MSZhW2w+PjJdfDIsYVtiPj4yXT0xfGFbYj4+Ml0sa0wobSxjKSxsPXAsYz1wO2JyZWFrfWFbcD4+Ml09KDB8YVttPj4yXSkrYyxhW3ArND4+Ml09ZixsPXAsYz1wO2JyZWFrfWw9bSxjPW19d2hpbGUoMCk7cmV0dXJuIDMmKGY9MHxhWyhsPWwrNHwwKT4+Ml0pfDAmJih3PS04JmYp''@;'; put 'put ''Pj4+MD4oQSsxNnwwKT4+PjAmJihiPXctQXwwLG09YytBfDAsYVtsPj4yXT1BfDEmZnwyLGFbbSs0Pj4yXT0zfGIsYVsodz1jK3crNHwwKT4+Ml09MXxhW3c+PjJdLGtMKG0sYikpLDB8Yys4fShsLGMpLDB8Yyl9LF9tZW1jcHk6RG8sX21lbW1vdmU6bXAsX21lbXNldDpyMixfcmVhbGxvYzpa''@;'; put 'put ''YSxfc2F2ZVNldGptcDpvNCxfc2JyazpnZyxfdGVzdFNldGptcDpUaSxfdml6Q3JlYXRlRmlsZTpmdW5jdGlvbiBiN2UobCxjKXtTOSgwLDB8KGx8PTApLDB8KGN8PTApKX0sX3Zpekxhc3RFcnJvck1lc3NhZ2U6ZnVuY3Rpb24gSnJlKCl7cmV0dXJuIDB8YVs0NjY1NF19LF92aXpSZW5kZXJG''@;'; put 'put ''cm9tU3RyaW5nOmZ1bmN0aW9uIEhXKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgbSxBLHcsYixwPTA7Zm9yKGI9b2Usb2U9b2UrMTZ8MCxBPWIsYVsobT1iKzR8MCk+PjJdPTAsZ1codz0wfHBXKCksMTA5NzYpLGdXKHcsMTcyMjApLGdXKHcsMTc0NDApLGZ1bmN0aW9uIFVHKGwpe3ZhciBj''@;'; put 'put ''O2M9MHxhWzQ2OTM2XSxhWzQ2OTM2XT1sfD0wfSgxKSxmdW5jdGlvbiBZRyhsKXt2YXIgYztjPTB8YVs0NjkzNV0sYVs0NjkzNV09bHw9MH0oMTgpO2w9MHx3ZShsKSxwPTB8YVttPj4yXSxsOykwfHB8fChBNyh3LGwsZiksYzdlKHcsbCxjLG0sQSkpLGw9MTk1MDU5O3JldHVybiBvZT1iLDB8''@;'; put 'put ''cH0sZHluQ2FsbF9kOmZ1bmN0aW9uIGVmZShsKXtyZXR1cm4ra3NbMSYobHw9MCldKCl9LGR5bkNhbGxfZGRkZDpmdW5jdGlvbiB0ZmUobCxjLGYscCl7cmV0dXJuK01mZVs3JihsfD0wKV0oKyhjPStjKSwrKGY9K2YpLCsocD0rcCkpfSxkeW5DYWxsX2RpOmZ1bmN0aW9uIG5mZShsLGMpe3Jl''@;'; put 'put ''dHVybitac1sxJihsfD0wKV0oMHwoY3w9MCkpfSxkeW5DYWxsX2k6ZnVuY3Rpb24gcmZlKGwpe3JldHVybiAwfHlnWzMmKGx8PTApXSgpfSxkeW5DYWxsX2lpOmZ1bmN0aW9uIGlmZShsLGMpe3JldHVybiAwfHBhWzYzJihsfD0wKV0oMHwoY3w9MCkpfSxkeW5DYWxsX2lpaTpmdW5jdGlvbiBv''@;'; put 'put ''ZmUobCxjLGYpe3JldHVybiAwfFJpWzEyNyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApKX0sZHluQ2FsbF9paWlkZDpmdW5jdGlvbiBhZmUobCxjLGYscCxtKXtyZXR1cm4gMHxlZlszJihsfD0wKV0oMHwoY3w9MCksMHwoZnw9MCksKyhwPStwKSwrKG09K20pKX0sZHluQ2FsbF9paWlpOmZ1''@;'; put 'put ''bmN0aW9uIGxmZShsLGMsZixwKXtyZXR1cm4gMHxtaVs2MyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLDB8KHB8PTApKX0sZHluQ2FsbF9paWlpaTpmdW5jdGlvbiBzZmUobCxjLGYscCxtKXtyZXR1cm4gMHxEMFsxMjcmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfCht''@;'; put 'put ''fD0wKSl9LGR5bkNhbGxfaWlpaWlpOmZ1bmN0aW9uIHVmZShsLGMsZixwLG0sQSl7cmV0dXJuIDB8TDFbMTI3JihsfD0wKV0oMHwoY3w9MCksMHwoZnw9MCksMHwocHw9MCksMHwobXw9MCksMHwoQXw9MCkpfSxkeW5DYWxsX2lpaWlpaWk6ZnVuY3Rpb24gY2ZlKGwsYyxmLHAsbSxBLHcpe3Jl''@;'; put 'put ''dHVybiAwfFJjWzEmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSwwfChBfD0wKSwwfCh3fD0wKSl9LGR5bkNhbGxfaWlpaWlpaWlpaWk6ZnVuY3Rpb24gZmZlKGwsYyxmLHAsbSxBLHcsYixrLE0sRCl7cmV0dXJuIDB8eVpbMyYobHw9MCldKDB8KGN8PTApLDB8''@;'; put 'put ''KGZ8PTApLDB8KHB8PTApLDB8KG18PTApLDB8KEF8PTApLDB8KHd8PTApLDB8KGJ8PTApLDB8KGt8PTApLDB8KE18PTApLDB8KER8PTApKX0sZHluQ2FsbF92OmZ1bmN0aW9uIGhmZShsKXthNFsxNSYobHw9MCldKCl9LGR5bkNhbGxfdmk6ZnVuY3Rpb24gZGZlKGwsYyl7bm9bMTI3JihsfD0w''@;'; put 'put ''KV0oMHwoY3w9MCkpfSxkeW5DYWxsX3ZpaTpmdW5jdGlvbiBwZmUobCxjLGYpe3gyWzYzJihsfD0wKV0oMHwoY3w9MCksMHwoZnw9MCkpfSxkeW5DYWxsX3ZpaWk6ZnVuY3Rpb24gZ2ZlKGwsYyxmLHApe05sWzEyNyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLDB8KHB8PTApKX0sZHluQ2Fs''@;'; put 'put ''bF92aWlpZGRpOmZ1bmN0aW9uIG1mZShsLGMsZixwLG0sQSx3KXtZTFsxNSYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLDB8KHB8PTApLCsobT0rbSksKyhBPStBKSwwfCh3fD0wKSl9LGR5bkNhbGxfdmlpaWk6ZnVuY3Rpb24gdmZlKGwsYyxmLHAsbSl7RmFbMzEmKGx8PTApXSgwfChjfD0w''@;'; put 'put ''KSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSl9LGR5bkNhbGxfdmlpaWlpOmZ1bmN0aW9uIEFmZShsLGMsZixwLG0sQSl7bjNbMTUmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSwwfChBfD0wKSl9LGR5bkNhbGxfdmlpaWlpaTpmdW5jdGlvbiB5ZmUobCxj''@;'; put 'put ''LGYscCxtLEEsdyl7Z3dbMTUmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSwwfChBfD0wKSwwfCh3fD0wKSl9LGR5bkNhbGxfdmlpaWlpaWlpaTpmdW5jdGlvbiB3ZmUobCxjLGYscCxtLEEsdyxiLGssTSl7VUxbMCYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTAp''@;'; put 'put ''LDB8KHB8PTApLDB8KG18PTApLDB8KEF8PTApLDB8KHd8PTApLDB8KGJ8PTApLDB8KGt8PTApLDB8KE18PTApKX0sZXN0YWJsaXNoU3RhY2tTcGFjZTpmdW5jdGlvbiBRcmUobCxjKXtvZT1sfD0wLDB9LGdldFRlbXBSZXQwOmZ1bmN0aW9uIFpkKCl7cmV0dXJuIDB8T259LHJ1blBvc3RTZXRz''@;'; put 'put ''OmZ1bmN0aW9uICRjZSgpe30sc2V0VGVtcFJldDA6ZnVuY3Rpb24gWEYobCl7T249bHw9MH0sc2V0VGhyZXc6ZnVuY3Rpb24gRlcobCxjKXtNbnx8KE1uPWx8PTAseG49Y3w9MCl9LHN0YWNrQWxsb2M6ZnVuY3Rpb24gUFcobCl7dmFyIGM7cmV0dXJuIGM9b2Usb2U9MTUrKG9lPW9lKyhsfD0w''@;'; put 'put ''KXwwKSYtMTYsMHxjfSxzdGFja1Jlc3RvcmU6ZnVuY3Rpb24gQm8obCl7b2U9bHw9MH0sc3RhY2tTYXZlOmZ1bmN0aW9uIFVyZSgpe3JldHVybiAwfG9lfX19KFouYXNtR2xvYmFsQXJnLFouYXNtTGlicmFyeUFyZyxvbiksc2I9KFouX19fZXJybm9fbG9jYXRpb249VG8uX19fZXJybm9fbG9j''@;'; put 'put ''YXRpb24sWi5fX19tdWxkaTM9VG8uX19fbXVsZGkzLFouX19fdWRpdmRpMz1Uby5fX191ZGl2ZGkzLFouX19fdXJlbWRpMz1Uby5fX191cmVtZGkzLFouX2JpdHNoaWZ0NjRBc2hyPVRvLl9iaXRzaGlmdDY0QXNocixaLl9iaXRzaGlmdDY0THNocj1Uby5fYml0c2hpZnQ2NExzaHIsWi5fYml0''@;'; put 'put ''c2hpZnQ2NFNobD1Uby5fYml0c2hpZnQ2NFNobCxaLl9kdGV4dHJhY3Q9VG8uX2R0ZXh0cmFjdCxaLl9mcmVlPVRvLl9mcmVlKSxGcD0oWi5faHRvbnM9VG8uX2h0b25zLFouX2k2NEFkZD1Uby5faTY0QWRkLFouX2k2NFN1YnRyYWN0PVRvLl9pNjRTdWJ0cmFjdCxaLl9sbHZtX2Jzd2FwX2kx''@;'; put 'put ''Nj1Uby5fbGx2bV9ic3dhcF9pMTYsWi5fbGx2bV9ic3dhcF9pMzI9VG8uX2xsdm1fYnN3YXBfaTMyLFouX21hbGxvYz1Uby5fbWFsbG9jKSxRZz1aLl9tZW1hbGlnbj1Uby5fbWVtYWxpZ24sSmc9KFouX21lbWNweT1Uby5fbWVtY3B5LFouX21lbW1vdmU9VG8uX21lbW1vdmUsWi5fbWVtc2V0''@;'; put 'put ''PVRvLl9tZW1zZXQpLCRnPShaLl9yZWFsbG9jPVRvLl9yZWFsbG9jLFouX3NhdmVTZXRqbXA9VG8uX3NhdmVTZXRqbXAsWi5fc2Jyaz1Uby5fc2JyayxaLl90ZXN0U2V0am1wPVRvLl90ZXN0U2V0am1wLFouX3ZpekNyZWF0ZUZpbGU9VG8uX3ZpekNyZWF0ZUZpbGUsWi5fdml6TGFzdEVycm9y''@;'; put 'put ''TWVzc2FnZT1Uby5fdml6TGFzdEVycm9yTWVzc2FnZSxaLl92aXpSZW5kZXJGcm9tU3RyaW5nPVRvLl92aXpSZW5kZXJGcm9tU3RyaW5nLFouZXN0YWJsaXNoU3RhY2tTcGFjZT1Uby5lc3RhYmxpc2hTdGFja1NwYWNlLFouZ2V0VGVtcFJldDA9VG8uZ2V0VGVtcFJldDAsWi5ydW5Qb3N0U2V0''@;'; put 'put ''cz1Uby5ydW5Qb3N0U2V0cyxaLnNldFRlbXBSZXQwPVRvLnNldFRlbXBSZXQwLFouc2V0VGhyZXc9VG8uc2V0VGhyZXcsWi5zdGFja0FsbG9jPVRvLnN0YWNrQWxsb2MpLGs4PVouc3RhY2tSZXN0b3JlPVRvLnN0YWNrUmVzdG9yZSxZcz1aLnN0YWNrU2F2ZT1Uby5zdGFja1NhdmU7aWYoWi5k''@;'; put 'put ''eW5DYWxsX2Q9VG8uZHluQ2FsbF9kLFouZHluQ2FsbF9kZGRkPVRvLmR5bkNhbGxfZGRkZCxaLmR5bkNhbGxfZGk9VG8uZHluQ2FsbF9kaSxaLmR5bkNhbGxfaT1Uby5keW5DYWxsX2ksWi5keW5DYWxsX2lpPVRvLmR5bkNhbGxfaWksWi5keW5DYWxsX2lpaT1Uby5keW5DYWxsX2lpaSxaLmR5''@;'; put 'put ''bkNhbGxfaWlpZGQ9VG8uZHluQ2FsbF9paWlkZCxaLmR5bkNhbGxfaWlpaT1Uby5keW5DYWxsX2lpaWksWi5keW5DYWxsX2lpaWlpPVRvLmR5bkNhbGxfaWlpaWksWi5keW5DYWxsX2lpaWlpaT1Uby5keW5DYWxsX2lpaWlpaSxaLmR5bkNhbGxfaWlpaWlpaT1Uby5keW5DYWxsX2lpaWlpaWks''@;'; put 'put ''Wi5keW5DYWxsX2lpaWlpaWlpaWlpPVRvLmR5bkNhbGxfaWlpaWlpaWlpaWksWi5keW5DYWxsX3Y9VG8uZHluQ2FsbF92LFouZHluQ2FsbF92aT1Uby5keW5DYWxsX3ZpLFouZHluQ2FsbF92aWk9VG8uZHluQ2FsbF92aWksWi5keW5DYWxsX3ZpaWk9VG8uZHluQ2FsbF92aWlpLFouZHluQ2Fs''@;'; put 'put ''bF92aWlpZGRpPVRvLmR5bkNhbGxfdmlpaWRkaSxaLmR5bkNhbGxfdmlpaWk9VG8uZHluQ2FsbF92aWlpaSxaLmR5bkNhbGxfdmlpaWlpPVRvLmR5bkNhbGxfdmlpaWlpLFouZHluQ2FsbF92aWlpaWlpPVRvLmR5bkNhbGxfdmlpaWlpaSxaLmR5bkNhbGxfdmlpaWlpaWlpaT1Uby5keW5DYWxs''@;'; put 'put ''X3ZpaWlpaWlpaWksWi5hc209VG8sWi5jY2FsbD14LFouUG9pbnRlcl9zdHJpbmdpZnk9RixaLlVURjhUb1N0cmluZz1EZSxBbylpZihmYShBbyl8fCgiZnVuY3Rpb24iPT10eXBlb2YgWi5sb2NhdGVGaWxlP0FvPVoubG9jYXRlRmlsZShBbyk6Wi5tZW1vcnlJbml0aWFsaXplclByZWZpeFVS''@;'; put 'put ''TCYmKEFvPVoubWVtb3J5SW5pdGlhbGl6ZXJQcmVmaXhVUkwrQW8pKSxOfHxlZSl7dmFyIE5mPVoucmVhZEJpbmFyeShBbyk7bnQuc2V0KE5mLFRlKX1lbHNle2xldCBkdD1mdW5jdGlvbigpe1oucmVhZEFzeW5jKEFvLE91LGZ1bmN0aW9uKCl7dGhyb3ciY291bGQgbm90IGxvYWQgbWVtb3J5''@;'; put 'put ''IGluaXRpYWxpemVyICIrQW99KX07QmkoKTt2YXIgT3U9ZnVuY3Rpb24oRHQpe0R0LmJ5dGVMZW5ndGgmJihEdD1uZXcgVWludDhBcnJheShEdCkpLG50LnNldChEdCxUZSksWi5tZW1vcnlJbml0aWFsaXplclJlcXVlc3QmJmRlbGV0ZSBaLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdC5yZXNw''@;'; put 'put ''b25zZSxqMCgpfSxDND1KMihBbyk7aWYoQzQpT3UoQzQuYnVmZmVyKTtlbHNlIGlmKFoubWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0KXtsZXQgRHQ9ZnVuY3Rpb24oKXt2YXIgWHQ9Wi5tZW1vcnlJbml0aWFsaXplclJlcXVlc3QsdWU9WHQucmVzcG9uc2U7aWYoMjAwIT09WHQuc3RhdHVzJiYw''@;'; put 'put ''IT09WHQuc3RhdHVzKXt2YXIgVHQ9SjIoWi5tZW1vcnlJbml0aWFsaXplclJlcXVlc3RVUkwpO2lmKCFUdClyZXR1cm4gY29uc29sZS53YXJuKCJhIHByb2JsZW0gc2VlbXMgdG8gaGF2ZSBoYXBwZW5lZCB3aXRoIE1vZHVsZS5tZW1vcnlJbml0aWFsaXplclJlcXVlc3QsIHN0YXR1czogIitY''@;'; put 'put ''dC5zdGF0dXMrIiwgcmV0cnlpbmcgIitBbyksdm9pZCBkdCgpO3VlPVR0LmJ1ZmZlcn1PdSh1ZSl9O1oubWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0LnJlc3BvbnNlP3NldFRpbWVvdXQoRHQsMCk6Wi5tZW1vcnlJbml0aWFsaXplclJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsRHQp''@;'; put 'put ''fWVsc2UgZHQoKX1mdW5jdGlvbiBnMyhkdCl7dGhpcy5uYW1lPSJFeGl0U3RhdHVzIix0aGlzLm1lc3NhZ2U9IlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoIitkdCsiKSIsdGhpcy5zdGF0dXM9ZHR9ZnVuY3Rpb24ganAoZHQpe2Z1bmN0aW9uIER0KCl7Wi5jYWxsZWRSdW58fChaLmNh''@;'; put 'put ''bGxlZFJ1bj0hMCwhRWUmJihLbigpLFZ0KCksWi5vblJ1bnRpbWVJbml0aWFsaXplZCYmWi5vblJ1bnRpbWVJbml0aWFsaXplZCgpLFVuKCkpKX1kdD1kdHx8Wi5hcmd1bWVudHMsZTA+MHx8KGduKCksZTA+MCl8fFouY2FsbGVkUnVufHwoWi5zZXRTdGF0dXM/KFouc2V0U3RhdHVzKCJSdW5u''@;'; put 'put ''aW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtaLnNldFN0YXR1cygiIil9LDEpLER0KCl9LDEpKTpEdCgpKX1mdW5jdGlvbiBXTShkdCxEdCl7RHQmJloubm9FeGl0UnVudGltZSYmMD09PWR0fHwoWi5ub0V4aXRSdW50aW1lfHwoRWU9ITAsbW49''@;'; put 'put ''TGEsc24oKSxaLm9uRXhpdCYmWi5vbkV4aXQoZHQpKSxOJiZwcm9jZXNzLmV4aXQoZHQpLFoucXVpdChkdCxuZXcgZzMoZHQpKSl9ZnVuY3Rpb24gYTIoZHQpe3Rocm93IFoub25BYm9ydCYmWi5vbkFib3J0KGR0KSx2b2lkIDAhPT1kdD8oWi5wcmludChkdCksWi5wcmludEVycihkdCksZHQ9''@;'; put 'put ''SlNPTi5zdHJpbmdpZnkoZHQpKTpkdD0iIixFZT0hMCwiYWJvcnQoIitkdCsiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4ifWlmKChnMy5wcm90b3R5cGU9bmV3IEVycm9yKS5jb25zdHJ1Y3Rvcj1nMyxfMD1mdW5jdGlvbiBkdCgpe1ouY2FsbGVkUnVufHxq''@;'; put 'put ''cCgpLFouY2FsbGVkUnVufHwoXzA9ZHQpfSxaLnJ1bj1qcCxaLmV4aXQ9V00sWi5hYm9ydD1hMixaLnByZUluaXQpZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBaLnByZUluaXQmJihaLnByZUluaXQ9W1oucHJlSW5pdF0pO1oucHJlSW5pdC5sZW5ndGg+MDspWi5wcmVJbml0LnBvcCgpKCk7cmV0''@;'; put 'put ''dXJuIFoubm9FeGl0UnVudGltZT0hMCxqcCgpLFp9O2Z1bmN0aW9uIEUoUSl7dmFyIHEsWj1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/e306YXJndW1lbnRzWzFdLGllPXZvaWQgMD09PVouZm9ybWF0PyJzdmciOlouZm9ybWF0LGxlPXZvaWQgMD09PVouZW5n''@;'; put 'put ''aW5lPyJkb3QiOlouZW5naW5lLFk9Wi5zY2FsZSxXPVoudG90YWxNZW1vcnksTj12b2lkIDA9PT1aLmZpbGVzP1tdOlouZmlsZXMsZWU9dm9pZCAwPT09Wi5pbWFnZXM/W106Wi5pbWFnZXM7Zm9yKHE9MDtxPGVlLmxlbmd0aDtxKyspTi5wdXNoKHtwYXRoOmVlW3FdLnBhdGgsZGF0YTonPD94''@;'; put 'put ''bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+XG48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPlxuPHN2ZyB3aWR0aD0i''@;'; put 'put ''JytlZVtxXS53aWR0aCsnIiBoZWlnaHQ9IicrZWVbcV0uaGVpZ2h0KyciPjwvc3ZnPid9KTtyZXR1cm4icG5nLWltYWdlLWVsZW1lbnQiPT1pZT9FLnN2Z1htbFRvUG5nSW1hZ2VFbGVtZW50KE1lKFEsInN2ZyIsbGUsVyxOKSxZKTpNZShRLGllLGxlLFcsTil9ZnVuY3Rpb24gTWUoUSxaLGll''@;'; put 'put ''LGxlLFkpe3ZhciBOLFc9Qih7VE9UQUxfTUVNT1JZOmxlfSk7Zm9yKE49MDtOPFkubGVuZ3RoO04rKylXLmNjYWxsKCJ2aXpDcmVhdGVGaWxlIiwibnVtYmVyIixbInN0cmluZyIsInN0cmluZyJdLFtZW05dLnBhdGgsWVtOXS5kYXRhXSk7dmFyIGVlPVcuY2NhbGwoInZpelJlbmRlckZyb21T''@;'; put 'put ''dHJpbmciLCJudW1iZXIiLFsic3RyaW5nIiwic3RyaW5nIiwic3RyaW5nIl0sW1EsWixpZV0pLHE9Vy5Qb2ludGVyX3N0cmluZ2lmeShlZSksSj1XLmNjYWxsKCJ2aXpMYXN0RXJyb3JNZXNzYWdlIiwibnVtYmVyIixbXSxbXSksc2U9Vy5Qb2ludGVyX3N0cmluZ2lmeShKKTtpZigiIiE9c2Up''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKHNlKTtyZXR1cm4gcX1FLnN2Z1htbFRvUG5nSW1hZ2VFbGVtZW50PWZ1bmN0aW9uKFEsWixpZSl7dm9pZCAwPT09WiYmKFo9ImRldmljZVBpeGVsUmF0aW8iaW4gd2luZG93JiZ3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbz4xP3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlv''@;'; put 'put ''OjEpO3ZhciBsZT1uZXcgSW1hZ2U7dHJ5e2lmKCJvYmplY3QiPT10eXBlb2YgZmFicmljJiZmYWJyaWMubG9hZFNWR0Zyb21TdHJpbmcpZmFicmljLmxvYWRTVkdGcm9tU3RyaW5nKFEsZnVuY3Rpb24oVyxOKXtpZigwPT1XLmxlbmd0aCl7aWYodm9pZCAwIT09aWUpcmV0dXJuIHZvaWQgaWUo''@;'; put 'put ''bmV3IEVycm9yKCJFcnJvciBsb2FkaW5nIFNWRyB3aXRoIEZhYnJpYyIpKTt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGxvYWRpbmcgU1ZHIHdpdGggRmFicmljIil9dmFyIGVlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2VlLndpZHRoPU4ud2lkdGgsZWUuaGVpZ2h0PU4uaGVp''@;'; put 'put ''Z2h0O3ZhciBxPW5ldyBmYWJyaWMuQ2FudmFzKGVlLHtlbmFibGVSZXRpbmFTY2FsaW5nOiExfSksSj1mYWJyaWMudXRpbC5ncm91cFNWR0VsZW1lbnRzKFcsTik7cS5hZGQoSikucmVuZGVyQWxsKCksbGUuc3JjPXEudG9EYXRhVVJMKHttdWx0aXBsaWVyOlp9KSxsZS53aWR0aD1OLndpZHRo''@;'; put 'put ''LGxlLmhlaWdodD1OLmhlaWdodCx2b2lkIDAhPT1pZSYmaWUobnVsbCxsZSl9KTtlbHNle3ZhciBZPW5ldyBJbWFnZTtZLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBXPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO1cud2lkdGg9WS53aWR0aCpaLFcuaGVpZ2h0PVkuaGVpZ2h0Klos''@;'; put 'put ''Vy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShZLDAsMCxXLndpZHRoLFcuaGVpZ2h0KSxsZS5zcmM9Vy50b0RhdGFVUkwoImltYWdlL3BuZyIpLGxlLndpZHRoPVkud2lkdGgsbGUuaGVpZ2h0PVkuaGVpZ2h0LHZvaWQgMCE9PWllJiZpZShudWxsLGxlKX0sWS5vbmVycm9yPWZ1bmN0aW9u''@;'; put 'put ''KFcpe3ZhciBOO2lmKE49ImVycm9yImluIFc/Vy5lcnJvcjpuZXcgRXJyb3IoIkVycm9yIGxvYWRpbmcgU1ZHIiksdm9pZCAwPT09aWUpdGhyb3cgTjtpZShOKX0sWS5zcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsIitmdW5jdGlvbiBVKFEpe3JldHVybiBidG9hKGVuY29kZVVSSUNv''@;'; put 'put ''bXBvbmVudChRKS5yZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9nLGZ1bmN0aW9uKFosaWUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCIweCIraWUpfSkpfShRKX19Y2F0Y2goVyl7aWYodm9pZCAwPT09aWUpdGhyb3cgVztpZShXKX1pZih2b2lkIDA9PT1pZSlyZXR1cm4gbGV9LEUuc3Zn''@;'; put 'put ''WG1sVG9QbmdCYXNlNjQ9ZnVuY3Rpb24oUSxaLGllKXtFLnN2Z1htbFRvUG5nSW1hZ2VFbGVtZW50KFEsWixmdW5jdGlvbihsZSxZKXtsZT9pZShsZSk6aWUobnVsbCxZLnNyYy5zbGljZSgyMikpfSl9LFhlLmV4cG9ydHM9RX0oKX0sODg1ODM6KCk9PnsidXNlIHN0cmljdCI7IWZ1bmN0aW9u''@;'; put 'put ''KEN0KXtjb25zdCBjdD1DdC5wZXJmb3JtYW5jZTtmdW5jdGlvbiBOdCh2bil7Y3QmJmN0Lm1hcmsmJmN0Lm1hcmsodm4pfWZ1bmN0aW9uIHplKHZuLHVuKXtjdCYmY3QubWVhc3VyZSYmY3QubWVhc3VyZSh2bix1bil9TnQoIlpvbmUiKTtjb25zdCBZZT1DdC5fX1pvbmVfc3ltYm9sX3ByZWZp''@;'; put 'put ''eHx8Il9fem9uZV9zeW1ib2xfXyI7ZnVuY3Rpb24gQXQodm4pe3JldHVybiBZZSt2bn1jb25zdCBqdD0hMD09PUN0W0F0KCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVjayIpXTtpZihDdC5ab25lKXtpZihqdHx8ImZ1bmN0aW9uIiE9dHlwZW9mIEN0LlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIEN0LlpvbmV9bGV0IEp0PSgoKT0+e2NsYXNzIHZue2NvbnN0cnVjdG9yKGNuLFNuKXt0aGlzLl9wYXJlbnQ9Y24sdGhpcy5fbmFtZT1Tbj9Tbi5uYW1lfHwidW5uYW1lZCI6Ijxyb290PiIsdGhpcy5fcHJvcGVydGllcz1TbiYm''@;'; put 'put ''U24ucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBwbih0aGlzLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll96b25lRGVsZWdhdGUsU24pfXN0YXRpYyBhc3NlcnRab25lUGF0Y2hlZCgpe2lmKEN0LlByb21pc2UhPT1fbi5ab25lQXdhcmVQcm9taXNlKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiWm9uZS5qcyBoYXMgZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCkuUHJvbWlzZWAgaGFzIGJlZW4gb3ZlcndyaXR0ZW4uXG5Nb3N0IGxpa2VseSBjYXVzZSBpcyB0aGF0IGEgUHJvbWlzZSBwb2x5ZmlsbCBoYXMgYmVlbiBsb2FkZWQgYWZ0''@;'; put 'put ''ZXIgWm9uZS5qcyAoUG9seWZpbGxpbmcgUHJvbWlzZSBhcGkgaXMgbm90IG5lY2Vzc2FyeSB3aGVuIHpvbmUuanMgaXMgbG9hZGVkLiBJZiB5b3UgbXVzdCBsb2FkIG9uZSwgZG8gc28gYmVmb3JlIGxvYWRpbmcgem9uZS5qcy4pIil9c3RhdGljIGdldCByb290KCl7bGV0IGNuPXZuLmN1cnJl''@;'; put 'put ''bnQ7Zm9yKDtjbi5wYXJlbnQ7KWNuPWNuLnBhcmVudDtyZXR1cm4gY259c3RhdGljIGdldCBjdXJyZW50KCl7cmV0dXJuIEduLnpvbmV9c3RhdGljIGdldCBjdXJyZW50VGFzaygpe3JldHVybiBUcn1zdGF0aWMgX19sb2FkX3BhdGNoKGNuLFNuLEd0PSExKXtpZihfbi5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eShjbikpe2lmKCFHdCYmanQpdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK2NuKX1lbHNlIGlmKCFDdFsiX19ab25lX2Rpc2FibGVfIitjbl0pe2NvbnN0IEVuPSJab25lOiIrY247TnQoRW4pLF9uW2NuXT1TbihDdCx2bix0biksemUoRW4sRW4pfX1nZXQgcGFyZW50KCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3BhcmVudH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfWdldChjbil7Y29uc3QgU249dGhpcy5nZXRab25lV2l0aChjbik7aWYoU24pcmV0dXJuIFNuLl9wcm9wZXJ0aWVzW2NuXX1nZXRab25lV2l0aChjbil7bGV0IFNuPXRoaXM7Zm9yKDtTbjspe2lmKFNuLl9w''@;'; put 'put ''cm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGNuKSlyZXR1cm4gU247U249U24uX3BhcmVudH1yZXR1cm4gbnVsbH1mb3JrKGNuKXtpZighY24pdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyxjbil9d3JhcChj''@;'; put 'put ''bixTbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGNuKXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIitjbik7Y29uc3QgR3Q9dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLGNuLFNuKSxFbj10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBFbi5y''@;'; put 'put ''dW5HdWFyZGVkKEd0LHRoaXMsYXJndW1lbnRzLFNuKX19cnVuKGNuLFNuLEd0LEVuKXtHbj17cGFyZW50OkduLHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsY24sU24sR3QsRW4pfWZpbmFsbHl7R249R24ucGFyZW50fX1ydW5HdWFyZGVkKGNu''@;'; put 'put ''LFNuPW51bGwsR3QsRW4pe0duPXtwYXJlbnQ6R24sem9uZTp0aGlzfTt0cnl7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsY24sU24sR3QsRW4pfWNhdGNoKGpuKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxqbikpdGhyb3cgam59fWZp''@;'; put 'put ''bmFsbHl7R249R24ucGFyZW50fX1ydW5UYXNrKGNuLFNuLEd0KXtpZihjbi56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIHJ1biBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyhjbi56b25lfHxkcikubmFtZSsiOyBFeGVjdXRpb246''@;'; put 'put ''ICIrdGhpcy5uYW1lKyIpIik7aWYoY24uc3RhdGU9PT1uciYmKGNuLnR5cGU9PT1Vbnx8Y24udHlwZT09PXNuKSlyZXR1cm47Y29uc3QgRW49Y24uc3RhdGUhPVl0O0VuJiZjbi5fdHJhbnNpdGlvblRvKFl0LCRuKSxjbi5ydW5Db3VudCsrO2NvbnN0IGpuPVRyO1RyPWNuLEduPXtwYXJlbnQ6''@;'; put 'put ''R24sem9uZTp0aGlzfTt0cnl7Y24udHlwZT09c24mJmNuLmRhdGEmJiFjbi5kYXRhLmlzUGVyaW9kaWMmJihjbi5jYW5jZWxGbj12b2lkIDApO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcyxjbixTbixHdCl9Y2F0Y2gocXQpe2lmKHRoaXMuX3pvbmVEZWxl''@;'; put 'put ''Z2F0ZS5oYW5kbGVFcnJvcih0aGlzLHF0KSl0aHJvdyBxdH19ZmluYWxseXtjbi5zdGF0ZSE9PW5yJiZjbi5zdGF0ZSE9PUtuJiYoY24udHlwZT09VW58fGNuLmRhdGEmJmNuLmRhdGEuaXNQZXJpb2RpYz9FbiYmY24uX3RyYW5zaXRpb25UbygkbixZdCk6KGNuLnJ1bkNvdW50PTAsdGhpcy5f''@;'; put 'put ''dXBkYXRlVGFza0NvdW50KGNuLC0xKSxFbiYmY24uX3RyYW5zaXRpb25UbyhucixZdCxucikpKSxHbj1Hbi5wYXJlbnQsVHI9am59fXNjaGVkdWxlVGFzayhjbil7aWYoY24uem9uZSYmY24uem9uZSE9PXRoaXMpe2xldCBHdD10aGlzO2Zvcig7R3Q7KXtpZihHdD09PWNuLnpvbmUpdGhyb3cg''@;'; put 'put ''RXJyb3IoYGNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICR7dGhpcy5uYW1lfSB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAke2NuLnpvbmUubmFtZX1gKTtHdD1HdC5wYXJlbnR9fWNuLl90cmFuc2l0aW9uVG8od24sbnIpO2NvbnN0IFNuPVtdO2NuLl96b25l''@;'; put 'put ''RGVsZWdhdGVzPVNuLGNuLl96b25lPXRoaXM7dHJ5e2NuPXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyxjbil9Y2F0Y2goR3Qpe3Rocm93IGNuLl90cmFuc2l0aW9uVG8oS24sd24sbnIpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLEd0KSxHdH1yZXR1''@;'; put 'put ''cm4gY24uX3pvbmVEZWxlZ2F0ZXM9PT1TbiYmdGhpcy5fdXBkYXRlVGFza0NvdW50KGNuLDEpLGNuLnN0YXRlPT13biYmY24uX3RyYW5zaXRpb25Ubygkbix3biksY259c2NoZWR1bGVNaWNyb1Rhc2soY24sU24sR3QsRW4pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgYm4oVnQsY24s''@;'; put 'put ''U24sR3QsRW4sdm9pZCAwKSl9c2NoZWR1bGVNYWNyb1Rhc2soY24sU24sR3QsRW4sam4pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgYm4oc24sY24sU24sR3QsRW4sam4pKX1zY2hlZHVsZUV2ZW50VGFzayhjbixTbixHdCxFbixqbil7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5l''@;'; put 'put ''dyBibihVbixjbixTbixHdCxFbixqbikpfWNhbmNlbFRhc2soY24pe2lmKGNuLnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKGNuLnpvbmV8fGRyKS5uYW1lKyI7IEV4''@;'; put 'put ''ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTtjbi5fdHJhbnNpdGlvblRvKGduLCRuLFl0KTt0cnl7dGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRhc2sodGhpcyxjbil9Y2F0Y2goU24pe3Rocm93IGNuLl90cmFuc2l0aW9uVG8oS24sZ24pLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJv''@;'; put 'put ''cih0aGlzLFNuKSxTbn1yZXR1cm4gdGhpcy5fdXBkYXRlVGFza0NvdW50KGNuLC0xKSxjbi5fdHJhbnNpdGlvblRvKG5yLGduKSxjbi5ydW5Db3VudD0wLGNufV91cGRhdGVUYXNrQ291bnQoY24sU24pe2NvbnN0IEd0PWNuLl96b25lRGVsZWdhdGVzOy0xPT1TbiYmKGNuLl96b25lRGVsZWdh''@;'; put 'put ''dGVzPW51bGwpO2ZvcihsZXQgRW49MDtFbjxHdC5sZW5ndGg7RW4rKylHdFtFbl0uX3VwZGF0ZVRhc2tDb3VudChjbi50eXBlLFNuKX19cmV0dXJuIHZuLl9fc3ltYm9sX189QXQsdm59KSgpO2NvbnN0IG1uPXtuYW1lOiIiLG9uSGFzVGFzazoodm4sdW4sY24sU24pPT52bi5oYXNUYXNrKGNu''@;'; put 'put ''LFNuKSxvblNjaGVkdWxlVGFzazoodm4sdW4sY24sU24pPT52bi5zY2hlZHVsZVRhc2soY24sU24pLG9uSW52b2tlVGFzazoodm4sdW4sY24sU24sR3QsRW4pPT52bi5pbnZva2VUYXNrKGNuLFNuLEd0LEVuKSxvbkNhbmNlbFRhc2s6KHZuLHVuLGNuLFNuKT0+dm4uY2FuY2VsVGFzayhjbixT''@;'; put 'put ''bil9O2NsYXNzIHBue2NvbnN0cnVjdG9yKHVuLGNuLFNuKXt0aGlzLl90YXNrQ291bnRzPXttaWNyb1Rhc2s6MCxtYWNyb1Rhc2s6MCxldmVudFRhc2s6MH0sdGhpcy56b25lPXVuLHRoaXMuX3BhcmVudERlbGVnYXRlPWNuLHRoaXMuX2ZvcmtaUz1TbiYmKFNuJiZTbi5vbkZvcms/U246Y24u''@;'; put 'put ''X2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9U24mJihTbi5vbkZvcms/Y246Y24uX2ZvcmtEbGd0KSx0aGlzLl9mb3JrQ3VyclpvbmU9U24mJihTbi5vbkZvcms/dGhpcy56b25lOmNuLl9mb3JrQ3VyclpvbmUpLHRoaXMuX2ludGVyY2VwdFpTPVNuJiYoU24ub25JbnRlcmNlcHQ/U246Y24uX2lu''@;'; put 'put ''dGVyY2VwdFpTKSx0aGlzLl9pbnRlcmNlcHREbGd0PVNuJiYoU24ub25JbnRlcmNlcHQ/Y246Y24uX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPVNuJiYoU24ub25JbnRlcmNlcHQ/dGhpcy56b25lOmNuLl9pbnRlcmNlcHRDdXJyWm9uZSksdGhpcy5faW52b2tlWlM9''@;'; put 'put ''U24mJihTbi5vbkludm9rZT9Tbjpjbi5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9U24mJihTbi5vbkludm9rZT9jbjpjbi5faW52b2tlRGxndCksdGhpcy5faW52b2tlQ3VyclpvbmU9U24mJihTbi5vbkludm9rZT90aGlzLnpvbmU6Y24uX2ludm9rZUN1cnJab25lKSx0aGlzLl9oYW5k''@;'; put 'put ''bGVFcnJvclpTPVNuJiYoU24ub25IYW5kbGVFcnJvcj9Tbjpjbi5faGFuZGxlRXJyb3JaUyksdGhpcy5faGFuZGxlRXJyb3JEbGd0PVNuJiYoU24ub25IYW5kbGVFcnJvcj9jbjpjbi5faGFuZGxlRXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPVNuJiYoU24ub25IYW5kbGVF''@;'; put 'put ''cnJvcj90aGlzLnpvbmU6Y24uX2hhbmRsZUVycm9yQ3VyclpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPVNuJiYoU24ub25TY2hlZHVsZVRhc2s/U246Y24uX3NjaGVkdWxlVGFza1pTKSx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PVNuJiYoU24ub25TY2hlZHVsZVRhc2s/Y246Y24uX3NjaGVk''@;'; put 'put ''dWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPVNuJiYoU24ub25TY2hlZHVsZVRhc2s/dGhpcy56b25lOmNuLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksdGhpcy5faW52b2tlVGFza1pTPVNuJiYoU24ub25JbnZva2VUYXNrP1NuOmNuLl9pbnZva2VUYXNrWlMpLHRoaXMu''@;'; put 'put ''X2ludm9rZVRhc2tEbGd0PVNuJiYoU24ub25JbnZva2VUYXNrP2NuOmNuLl9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1cnJab25lPVNuJiYoU24ub25JbnZva2VUYXNrP3RoaXMuem9uZTpjbi5faW52b2tlVGFza0N1cnJab25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9U24mJihT''@;'; put 'put ''bi5vbkNhbmNlbFRhc2s/U246Y24uX2NhbmNlbFRhc2taUyksdGhpcy5fY2FuY2VsVGFza0RsZ3Q9U24mJihTbi5vbkNhbmNlbFRhc2s/Y246Y24uX2NhbmNlbFRhc2tEbGd0KSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9U24mJihTbi5vbkNhbmNlbFRhc2s/dGhpcy56b25lOmNuLl9jYW5j''@;'; put 'put ''ZWxUYXNrQ3VyclpvbmUpLHRoaXMuX2hhc1Rhc2taUz1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0PW51bGwsdGhpcy5faGFzVGFza0RsZ3RPd25lcj1udWxsLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1udWxsO2NvbnN0IEd0PVNuJiZTbi5vbkhhc1Rhc2s7KEd0fHxjbiYmY24uX2hhc1Rhc2taUykm''@;'; put 'put ''Jih0aGlzLl9oYXNUYXNrWlM9R3Q/U246bW4sdGhpcy5faGFzVGFza0RsZ3Q9Y24sdGhpcy5faGFzVGFza0RsZ3RPd25lcj10aGlzLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT11bixTbi5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVkdWxlVGFza1pTPW1uLHRoaXMuX3NjaGVkdWxlVGFza0Rs''@;'; put 'put ''Z3Q9Y24sdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxTbi5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9bW4sdGhpcy5faW52b2tlVGFza0RsZ3Q9Y24sdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksU24ub25DYW5jZWxUYXNrfHwodGhp''@;'; put 'put ''cy5fY2FuY2VsVGFza1pTPW1uLHRoaXMuX2NhbmNlbFRhc2tEbGd0PWNuLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1mb3JrKHVuLGNuKXtyZXR1cm4gdGhpcy5fZm9ya1pTP3RoaXMuX2ZvcmtaUy5vbkZvcmsodGhpcy5fZm9ya0RsZ3QsdGhpcy56b25lLHVuLGNuKTpu''@;'; put 'put ''ZXcgSnQodW4sY24pfWludGVyY2VwdCh1bixjbixTbil7cmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTP3RoaXMuX2ludGVyY2VwdFpTLm9uSW50ZXJjZXB0KHRoaXMuX2ludGVyY2VwdERsZ3QsdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsdW4sY24sU24pOmNufWludm9rZSh1bixjbixTbixHdCxF''@;'; put 'put ''bil7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsdW4sY24sU24sR3QsRW4pOmNuLmFwcGx5KFNuLEd0KX1oYW5kbGVFcnJvcih1bixjbil7cmV0dXJuIXRoaXMuX2hhbmRsZUVycm9yWlN8''@;'; put 'put ''fHRoaXMuX2hhbmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVFcnJvckRsZ3QsdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSx1bixjbil9c2NoZWR1bGVUYXNrKHVuLGNuKXtsZXQgU249Y247aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZTbi5f''@;'; put 'put ''em9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLFNuPXRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUsdW4sY24pLFNufHwoU249Y24pO2Vsc2UgaWYoY24uc2No''@;'; put 'put ''ZWR1bGVGbiljbi5zY2hlZHVsZUZuKGNuKTtlbHNle2lmKGNuLnR5cGUhPVZ0KXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7eHIoY24pfXJldHVybiBTbn1pbnZva2VUYXNrKHVuLGNuLFNuLEd0KXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMu''@;'; put 'put ''X2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHVuLGNuLFNuLEd0KTpjbi5jYWxsYmFjay5hcHBseShTbixHdCl9Y2FuY2VsVGFzayh1bixjbil7bGV0IFNuO2lmKHRoaXMuX2NhbmNlbFRhc2taUylTbj10aGlz''@;'; put 'put ''Ll9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSx1bixjbik7ZWxzZXtpZighY24uY2FuY2VsRm4pdGhyb3cgRXJyb3IoIlRhc2sgaXMgbm90IGNhbmNlbGFibGUiKTtTbj1jbi5jYW5jZWxGbihjbil9cmV0dXJu''@;'; put 'put ''IFNufWhhc1Rhc2sodW4sY24pe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLHVuLGNuKX1jYXRjaChTbil7dGhpcy5oYW5kbGVFcnJvcih1bixTbil9fV91cGRhdGVUYXNrQ291bnQo''@;'; put 'put ''dW4sY24pe2NvbnN0IFNuPXRoaXMuX3Rhc2tDb3VudHMsR3Q9U25bdW5dLEVuPVNuW3VuXT1HdCtjbjtpZihFbjwwKXRocm93IG5ldyBFcnJvcigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPUd0JiYwIT1Fbnx8dGhpcy5oYXNUYXNrKHRoaXMuem9uZSx7''@;'; put 'put ''bWljcm9UYXNrOlNuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpTbi5tYWNyb1Rhc2s+MCxldmVudFRhc2s6U24uZXZlbnRUYXNrPjAsY2hhbmdlOnVufSl9fWNsYXNzIGJue2NvbnN0cnVjdG9yKHVuLGNuLFNuLEd0LEVuLGpuKXtpZih0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRo''@;'; put 'put ''aXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9dW4sdGhpcy5zb3VyY2U9Y24sdGhpcy5kYXRhPUd0LHRoaXMuc2NoZWR1bGVGbj1Fbix0aGlzLmNhbmNlbEZuPWpuLCFTbil0aHJvdyBuZXcgRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBk''@;'; put 'put ''ZWZpbmVkIik7dGhpcy5jYWxsYmFjaz1Tbjtjb25zdCBxdD10aGlzO3RoaXMuaW52b2tlPXVuPT09VW4mJkd0JiZHdC51c2VHP2JuLmludm9rZVRhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gYm4uaW52b2tlVGFzay5jYWxsKEN0LHF0LHRoaXMsYXJndW1lbnRzKX19c3RhdGljIGludm9rZVRhc2so''@;'; put 'put ''dW4sY24sU24pe3VufHwodW49dGhpcyksUG4rKzt0cnl7cmV0dXJuIHVuLnJ1bkNvdW50KyssdW4uem9uZS5ydW5UYXNrKHVuLGNuLFNuKX1maW5hbGx5ezE9PVBuJiZlbigpLFBuLS19fWdldCB6b25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9Z2V0IHN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRl''@;'; put 'put ''fWNhbmNlbFNjaGVkdWxlUmVxdWVzdCgpe3RoaXMuX3RyYW5zaXRpb25Ubyhucix3bil9X3RyYW5zaXRpb25Ubyh1bixjbixTbil7aWYodGhpcy5fc3RhdGUhPT1jbiYmdGhpcy5fc3RhdGUhPT1Tbil0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy50eXBlfSAnJHt0aGlzLnNvdXJjZX0nOiBjYW4g''@;'; put 'put ''bm90IHRyYW5zaXRpb24gdG8gJyR7dW59JywgZXhwZWN0aW5nIHN0YXRlICcke2NufScke1NuPyIgb3IgJyIrU24rIiciOiIifSwgd2FzICcke3RoaXMuX3N0YXRlfScuYCk7dGhpcy5fc3RhdGU9dW4sdW49PW5yJiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX10b1N0cmluZygpe3JldHVy''@;'; put 'put ''biB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyl9dG9KU09OKCl7cmV0dXJue3R5cGU6dGhpcy50eXBlLHN0YXRlOnRoaXMuc3RhdGUsc291cmNlOnRo''@;'; put 'put ''aXMuc291cmNlLHpvbmU6dGhpcy56b25lLm5hbWUscnVuQ291bnQ6dGhpcy5ydW5Db3VudH19fWNvbnN0IGxuPUF0KCJzZXRUaW1lb3V0IiksTm49QXQoIlByb21pc2UiKSxrbj1BdCgidGhlbiIpO2xldCBYbixlcj1bXSx1cj0hMTtmdW5jdGlvbiBGcih2bil7aWYoWG58fEN0W05uXSYmKFhu''@;'; put 'put ''PUN0W05uXS5yZXNvbHZlKDApKSxYbil7bGV0IHVuPVhuW2tuXTt1bnx8KHVuPVhuLnRoZW4pLHVuLmNhbGwoWG4sdm4pfWVsc2UgQ3RbbG5dKHZuLDApfWZ1bmN0aW9uIHhyKHZuKXswPT09UG4mJjA9PT1lci5sZW5ndGgmJkZyKGVuKSx2biYmZXIucHVzaCh2bil9ZnVuY3Rpb24gZW4oKXtp''@;'; put 'put ''ZighdXIpe2Zvcih1cj0hMDtlci5sZW5ndGg7KXtjb25zdCB2bj1lcjtlcj1bXTtmb3IobGV0IHVuPTA7dW48dm4ubGVuZ3RoO3VuKyspe2NvbnN0IGNuPXZuW3VuXTt0cnl7Y24uem9uZS5ydW5UYXNrKGNuLG51bGwsbnVsbCl9Y2F0Y2goU24pe3RuLm9uVW5oYW5kbGVkRXJyb3IoU24pfX19''@;'; put 'put ''dG4ubWljcm90YXNrRHJhaW5Eb25lKCksdXI9ITF9fWNvbnN0IGRyPXtuYW1lOiJOTyBaT05FIn0sbnI9Im5vdFNjaGVkdWxlZCIsd249InNjaGVkdWxpbmciLCRuPSJzY2hlZHVsZWQiLFl0PSJydW5uaW5nIixnbj0iY2FuY2VsaW5nIixLbj0idW5rbm93biIsVnQ9Im1pY3JvVGFzayIsc249''@;'; put 'put ''Im1hY3JvVGFzayIsVW49ImV2ZW50VGFzayIsX249e30sdG49e3N5bWJvbDpBdCxjdXJyZW50Wm9uZUZyYW1lOigpPT5HbixvblVuaGFuZGxlZEVycm9yOlNyLG1pY3JvdGFza0RyYWluRG9uZTpTcixzY2hlZHVsZU1pY3JvVGFzazp4cixzaG93VW5jYXVnaHRFcnJvcjooKT0+IUp0W0F0KCJp''@;'; put 'put ''Z25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yIildLHBhdGNoRXZlbnRUYXJnZXQ6KCk9PltdLHBhdGNoT25Qcm9wZXJ0aWVzOlNyLHBhdGNoTWV0aG9kOigpPT5TcixiaW5kQXJndW1lbnRzOigpPT5bXSxwYXRjaFRoZW46KCk9PlNyLHBhdGNoTWFjcm9UYXNrOigpPT5TcixwYXRjaEV2''@;'; put 'put ''ZW50UHJvdG90eXBlOigpPT5Tcixpc0lFT3JFZGdlOigpPT4hMSxnZXRHbG9iYWxPYmplY3RzOigpPT57fSxPYmplY3REZWZpbmVQcm9wZXJ0eTooKT0+U3IsT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOigpPT57fSxPYmplY3RDcmVhdGU6KCk9Pnt9LEFycmF5U2xpY2U6KCk9Pltd''@;'; put 'put ''LHBhdGNoQ2xhc3M6KCk9PlNyLHdyYXBXaXRoQ3VycmVudFpvbmU6KCk9PlNyLGZpbHRlclByb3BlcnRpZXM6KCk9PltdLGF0dGFjaE9yaWdpblRvUGF0Y2hlZDooKT0+U3IsX3JlZGVmaW5lUHJvcGVydHk6KCk9PlNyLHBhdGNoQ2FsbGJhY2tzOigpPT5TcixuYXRpdmVTY2hlZHVsZU1pY3Jv''@;'; put 'put ''VGFzazpGcn07bGV0IEduPXtwYXJlbnQ6bnVsbCx6b25lOm5ldyBKdChudWxsLG51bGwpfSxUcj1udWxsLFBuPTA7ZnVuY3Rpb24gU3IoKXt9emUoIlpvbmUiLCJab25lIiksQ3QuWm9uZT1KdH0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8InVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiBzZWxmJiZzZWxmfHxnbG9iYWwpO2NvbnN0IFhlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsSmU9T2JqZWN0LmRlZmluZVByb3BlcnR5LEw9T2JqZWN0LmdldFByb3RvdHlwZU9mLGdlPU9iamVjdC5jcmVhdGUsQj1BcnJheS5wcm90b3R5cGUuc2xpY2UsRT0iYWRkRXZlbnRM''@;'; put 'put ''aXN0ZW5lciIsTWU9InJlbW92ZUV2ZW50TGlzdGVuZXIiLFU9Wm9uZS5fX3N5bWJvbF9fKEUpLFE9Wm9uZS5fX3N5bWJvbF9fKE1lKSxaPSJ0cnVlIixpZT0iZmFsc2UiLGxlPVpvbmUuX19zeW1ib2xfXygiIik7ZnVuY3Rpb24gWShDdCxjdCl7cmV0dXJuIFpvbmUuY3VycmVudC53cmFwKEN0''@;'; put 'put ''LGN0KX1mdW5jdGlvbiBXKEN0LGN0LE50LHplLFllKXtyZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKEN0LGN0LE50LHplLFllKX1jb25zdCBOPVpvbmUuX19zeW1ib2xfXyxlZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxxPWVlP3dpbmRvdzp2b2lkIDAsSj1lZSYm''@;'; put 'put ''cXx8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHxnbG9iYWw7ZnVuY3Rpb24gYWUoQ3QsY3Qpe2ZvcihsZXQgTnQ9Q3QubGVuZ3RoLTE7TnQ+PTA7TnQtLSkiZnVuY3Rpb24iPT10eXBlb2YgQ3RbTnRdJiYoQ3RbTnRdPVkoQ3RbTnRdLGN0KyJfIitOdCkpO3JldHVybiBDdH1mdW5jdGlv''@;'; put 'put ''biBkZShDdCl7cmV0dXJuIUN0fHwhMSE9PUN0LndyaXRhYmxlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBDdC5nZXQmJnZvaWQgMD09PUN0LnNldCl9Y29uc3QgdmU9InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3Bl''@;'; put 'put ''LEFlPSEoIm53ImluIEopJiZ2b2lkIDAhPT1KLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoSi5wcm9jZXNzKSxrZT0hQWUmJiF2ZSYmISghZWV8fCFxLkhUTUxFbGVtZW50KSxTZT12b2lkIDAhPT1KLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09''@;'; put 'put ''PXt9LnRvU3RyaW5nLmNhbGwoSi5wcm9jZXNzKSYmIXZlJiYhKCFlZXx8IXEuSFRNTEVsZW1lbnQpLEllPXt9LFRlPWZ1bmN0aW9uKEN0KXtpZighKEN0PUN0fHxKLmV2ZW50KSlyZXR1cm47bGV0IGN0PUllW0N0LnR5cGVdO2N0fHwoY3Q9SWVbQ3QudHlwZV09TigiT05fUFJPUEVSVFkiK0N0''@;'; put 'put ''LnR5cGUpKTtjb25zdCBOdD10aGlzfHxDdC50YXJnZXR8fEosemU9TnRbY3RdO2xldCBZZTtpZihrZSYmTnQ9PT1xJiYiZXJyb3IiPT09Q3QudHlwZSl7Y29uc3QgQXQ9Q3Q7WWU9emUmJnplLmNhbGwodGhpcyxBdC5tZXNzYWdlLEF0LmZpbGVuYW1lLEF0LmxpbmVubyxBdC5jb2xubyxBdC5l''@;'; put 'put ''cnJvciksITA9PT1ZZSYmQ3QucHJldmVudERlZmF1bHQoKX1lbHNlIFllPXplJiZ6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbnVsbCE9WWUmJiFZZSYmQ3QucHJldmVudERlZmF1bHQoKTtyZXR1cm4gWWV9O2Z1bmN0aW9uIEVlKEN0LGN0LE50KXtsZXQgemU9WGUoQ3QsY3QpO2lmKCF6ZSYm''@;'; put 'put ''TnQmJlhlKE50LGN0KSYmKHplPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLCF6ZXx8IXplLmNvbmZpZ3VyYWJsZSlyZXR1cm47Y29uc3QgWWU9Tigib24iK2N0KyJwYXRjaGVkIik7aWYoQ3QuaGFzT3duUHJvcGVydHkoWWUpJiZDdFtZZV0pcmV0dXJuO2RlbGV0ZSB6ZS53cml0''@;'; put 'put ''YWJsZSxkZWxldGUgemUudmFsdWU7Y29uc3QgQXQ9emUuZ2V0LGp0PXplLnNldCxKdD1jdC5zbGljZSgyKTtsZXQgbW49SWVbSnRdO21ufHwobW49SWVbSnRdPU4oIk9OX1BST1BFUlRZIitKdCkpLHplLnNldD1mdW5jdGlvbihwbil7bGV0IGJuPXRoaXM7IWJuJiZDdD09PUomJihibj1KKSxi''@;'; put 'put ''biYmKCJmdW5jdGlvbiI9PXR5cGVvZiBiblttbl0mJmJuLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnQsVGUpLGp0JiZqdC5jYWxsKGJuLG51bGwpLGJuW21uXT1wbiwiZnVuY3Rpb24iPT10eXBlb2YgcG4mJmJuLmFkZEV2ZW50TGlzdGVuZXIoSnQsVGUsITEpKX0semUuZ2V0PWZ1bmN0aW9uKCl7''@;'; put 'put ''bGV0IHBuPXRoaXM7aWYoIXBuJiZDdD09PUomJihwbj1KKSwhcG4pcmV0dXJuIG51bGw7Y29uc3QgYm49cG5bbW5dO2lmKGJuKXJldHVybiBibjtpZihBdCl7bGV0IGxuPUF0LmNhbGwodGhpcyk7aWYobG4pcmV0dXJuIHplLnNldC5jYWxsKHRoaXMsbG4pLCJmdW5jdGlvbiI9PXR5cGVvZiBw''@;'; put 'put ''bi5yZW1vdmVBdHRyaWJ1dGUmJnBuLnJlbW92ZUF0dHJpYnV0ZShjdCksbG59cmV0dXJuIG51bGx9LEplKEN0LGN0LHplKSxDdFtZZV09ITB9ZnVuY3Rpb24gaGUoQ3QsY3QsTnQpe2lmKGN0KWZvcihsZXQgemU9MDt6ZTxjdC5sZW5ndGg7emUrKylFZShDdCwib24iK2N0W3plXSxOdCk7ZWxz''@;'; put 'put ''ZXtjb25zdCB6ZT1bXTtmb3IoY29uc3QgWWUgaW4gQ3QpIm9uIj09WWUuc2xpY2UoMCwyKSYmemUucHVzaChZZSk7Zm9yKGxldCBZZT0wO1llPHplLmxlbmd0aDtZZSsrKUVlKEN0LHplW1llXSxOdCl9fWNvbnN0IE89Tigib3JpZ2luYWxJbnN0YW5jZSIpO2Z1bmN0aW9uIHooQ3Qpe2NvbnN0''@;'; put 'put ''IGN0PUpbQ3RdO2lmKCFjdClyZXR1cm47SltOKEN0KV09Y3QsSltDdF09ZnVuY3Rpb24oKXtjb25zdCBZZT1hZShhcmd1bWVudHMsQ3QpO3N3aXRjaChZZS5sZW5ndGgpe2Nhc2UgMDp0aGlzW09dPW5ldyBjdDticmVhaztjYXNlIDE6dGhpc1tPXT1uZXcgY3QoWWVbMF0pO2JyZWFrO2Nhc2Ug''@;'; put 'put ''Mjp0aGlzW09dPW5ldyBjdChZZVswXSxZZVsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbT109bmV3IGN0KFllWzBdLFllWzFdLFllWzJdKTticmVhaztjYXNlIDQ6dGhpc1tPXT1uZXcgY3QoWWVbMF0sWWVbMV0sWWVbMl0sWWVbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcg''@;'; put 'put ''bGlzdCB0b28gbG9uZy4iKX19LHgoSltDdF0sY3QpO2NvbnN0IE50PW5ldyBjdChmdW5jdGlvbigpe30pO2xldCB6ZTtmb3IoemUgaW4gTnQpIlhNTEh0dHBSZXF1ZXN0Ij09PUN0JiYicmVzcG9uc2VCbG9iIj09PXplfHxmdW5jdGlvbihZZSl7ImZ1bmN0aW9uIj09dHlwZW9mIE50W1llXT9K''@;'; put 'put ''W0N0XS5wcm90b3R5cGVbWWVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbT11bWWVdLmFwcGx5KHRoaXNbT10sYXJndW1lbnRzKX06SmUoSltDdF0ucHJvdG90eXBlLFllLHtzZXQ6ZnVuY3Rpb24oQXQpeyJmdW5jdGlvbiI9PXR5cGVvZiBBdD8odGhpc1tPXVtZZV09WShBdCxDdCsiLiIrWWUp''@;'; put 'put ''LHgodGhpc1tPXVtZZV0sQXQpKTp0aGlzW09dW1llXT1BdH0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbT11bWWVdfX0pfSh6ZSk7Zm9yKHplIGluIGN0KSJwcm90b3R5cGUiIT09emUmJmN0Lmhhc093blByb3BlcnR5KHplKSYmKEpbQ3RdW3plXT1jdFt6ZV0pfWZ1bmN0aW9uIG5lKEN0''@;'; put 'put ''LGN0LE50KXtsZXQgemU9Q3Q7Zm9yKDt6ZSYmIXplLmhhc093blByb3BlcnR5KGN0KTspemU9TCh6ZSk7IXplJiZDdFtjdF0mJih6ZT1DdCk7Y29uc3QgWWU9TihjdCk7bGV0IEF0PW51bGw7aWYoemUmJighKEF0PXplW1llXSl8fCF6ZS5oYXNPd25Qcm9wZXJ0eShZZSkpJiYoQXQ9emVbWWVd''@;'; put 'put ''PXplW2N0XSxkZSh6ZSYmWGUoemUsY3QpKSkpe2NvbnN0IEp0PU50KEF0LFllLGN0KTt6ZVtjdF09ZnVuY3Rpb24oKXtyZXR1cm4gSnQodGhpcyxhcmd1bWVudHMpfSx4KHplW2N0XSxBdCl9cmV0dXJuIEF0fWZ1bmN0aW9uIHRlKEN0LGN0LE50KXtsZXQgemU9bnVsbDtmdW5jdGlvbiBZZShB''@;'; put 'put ''dCl7Y29uc3QganQ9QXQuZGF0YTtyZXR1cm4ganQuYXJnc1tqdC5jYklkeF09ZnVuY3Rpb24oKXtBdC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx6ZS5hcHBseShqdC50YXJnZXQsanQuYXJncyksQXR9emU9bmUoQ3QsY3QsQXQ9PmZ1bmN0aW9uKGp0LEp0KXtjb25zdCBtbj1OdChq''@;'; put 'put ''dCxKdCk7cmV0dXJuIG1uLmNiSWR4Pj0wJiYiZnVuY3Rpb24iPT10eXBlb2YgSnRbbW4uY2JJZHhdP1cobW4ubmFtZSxKdFttbi5jYklkeF0sbW4sWWUpOkF0LmFwcGx5KGp0LEp0KX0pfWZ1bmN0aW9uIHgoQ3QsY3Qpe0N0W04oIk9yaWdpbmFsRGVsZWdhdGUiKV09Y3R9bGV0IFA9ITEsVj0h''@;'; put 'put ''MTtmdW5jdGlvbiBTKCl7aWYoUClyZXR1cm4gVjtQPSEwO3RyeXtjb25zdCBDdD1xLm5hdmlnYXRvci51c2VyQWdlbnQ7KC0xIT09Q3QuaW5kZXhPZigiTVNJRSAiKXx8LTEhPT1DdC5pbmRleE9mKCJUcmlkZW50LyIpfHwtMSE9PUN0LmluZGV4T2YoIkVkZ2UvIikpJiYoVj0hMCl9Y2F0Y2go''@;'; put 'put ''Q3Qpe31yZXR1cm4gVn1ab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKEN0LGN0LE50KT0+e2NvbnN0IHplPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsWWU9T2JqZWN0LmRlZmluZVByb3BlcnR5LGp0PU50LnN5bWJvbCxKdD1bXSxtbj0hMD09PUN0W2p0KCJE''@;'; put 'put ''SVNBQkxFX1dSQVBQSU5HX1VOQ0FVR0hUX1BST01JU0VfUkVKRUNUSU9OIildLHBuPWp0KCJQcm9taXNlIiksYm49anQoInRoZW4iKTtOdC5vblVuaGFuZGxlZEVycm9yPXF0PT57aWYoTnQuc2hvd1VuY2F1Z2h0RXJyb3IoKSl7Y29uc3QgTG49cXQmJnF0LnJlamVjdGlvbjtMbj9jb25zb2xl''@;'; put 'put ''LmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixMbiBpbnN0YW5jZW9mIEVycm9yP0xuLm1lc3NhZ2U6TG4sIjsgWm9uZToiLHF0LnpvbmUubmFtZSwiOyBUYXNrOiIscXQudGFzayYmcXQudGFzay5zb3VyY2UsIjsgVmFsdWU6IixMbixMbiBpbnN0YW5jZW9mIEVycm9yP0xu''@;'; put 'put ''LnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcihxdCl9fSxOdC5taWNyb3Rhc2tEcmFpbkRvbmU9KCk9Pntmb3IoO0p0Lmxlbmd0aDspe2NvbnN0IHF0PUp0LnNoaWZ0KCk7dHJ5e3F0LnpvbmUucnVuR3VhcmRlZCgoKT0+e3Rocm93IHF0LnRocm93T3JpZ2luYWw/cXQucmVqZWN0aW9uOnF0''@;'; put 'put ''fSl9Y2F0Y2goTG4pe2tuKExuKX19fTtjb25zdCBObj1qdCgidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKTtmdW5jdGlvbiBrbihxdCl7TnQub25VbmhhbmRsZWRFcnJvcihxdCk7dHJ5e2NvbnN0IExuPWN0W05uXTsiZnVuY3Rpb24iPT10eXBlb2YgTG4mJkxuLmNhbGwodGhp''@;'; put 'put ''cyxxdCl9Y2F0Y2goTG4pe319ZnVuY3Rpb24gZXIocXQpe3JldHVybiBxdCYmcXQudGhlbn1mdW5jdGlvbiB1cihxdCl7cmV0dXJuIHF0fWZ1bmN0aW9uIFhuKHF0KXtyZXR1cm4gY24ucmVqZWN0KHF0KX1jb25zdCBGcj1qdCgic3RhdGUiKSx4cj1qdCgidmFsdWUiKSxlbj1qdCgiZmluYWxs''@;'; put 'put ''eSIpLGRyPWp0KCJwYXJlbnRQcm9taXNlVmFsdWUiKSxucj1qdCgicGFyZW50UHJvbWlzZVN0YXRlIiksJG49bnVsbCxnbj0hMTtmdW5jdGlvbiBWdChxdCxMbil7cmV0dXJuIEpuPT57dHJ5e3RuKHF0LExuLEpuKX1jYXRjaChvcil7dG4ocXQsITEsb3IpfX19Y29uc3Qgc249ZnVuY3Rpb24o''@;'; put 'put ''KXtsZXQgcXQ9ITE7cmV0dXJuIGZ1bmN0aW9uKEpuKXtyZXR1cm4gZnVuY3Rpb24oKXtxdHx8KHF0PSEwLEpuLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9fX0sX249anQoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiB0bihxdCxMbixKbil7Y29uc3Qgb3I9c24oKTtpZihxdD09PUpuKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGYiKTtpZihxdFtGcl09PT0kbil7bGV0IGdyPW51bGw7dHJ5eygib2JqZWN0Ij09dHlwZW9mIEpufHwiZnVuY3Rpb24iPT10eXBlb2YgSm4pJiYoZ3I9Sm4mJkpuLnRoZW4pfWNhdGNoKEpyKXtyZXR1cm4gb3Io''@;'; put 'put ''KCk9Pnt0bihxdCwhMSxKcil9KSgpLHF0fWlmKExuIT09Z24mJkpuIGluc3RhbmNlb2YgY24mJkpuLmhhc093blByb3BlcnR5KEZyKSYmSm4uaGFzT3duUHJvcGVydHkoeHIpJiZKbltGcl0hPT0kbilUcihKbiksdG4ocXQsSm5bRnJdLEpuW3hyXSk7ZWxzZSBpZihMbiE9PWduJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgZ3IpdHJ5e2dyLmNhbGwoSm4sb3IoVnQocXQsTG4pKSxvcihWdChxdCwhMSkpKX1jYXRjaChKcil7b3IoKCk9Pnt0bihxdCwhMSxKcil9KSgpfWVsc2V7cXRbRnJdPUxuO2NvbnN0IEpyPXF0W3hyXTtpZihxdFt4cl09Sm4scXRbZW5dPT09ZW4mJiEwPT09TG4mJihxdFtG''@;'; put 'put ''cl09cXRbbnJdLHF0W3hyXT1xdFtkcl0pLExuPT09Z24mJkpuIGluc3RhbmNlb2YgRXJyb3Ipe2NvbnN0IFZyPWN0LmN1cnJlbnRUYXNrJiZjdC5jdXJyZW50VGFzay5kYXRhJiZjdC5jdXJyZW50VGFzay5kYXRhLl9fY3JlYXRpb25UcmFjZV9fO1ZyJiZZZShKbixfbix7Y29uZmlndXJhYmxl''@;'; put 'put ''OiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6VnJ9KX1mb3IobGV0IFZyPTA7VnI8SnIubGVuZ3RoOylQbihxdCxKcltWcisrXSxKcltWcisrXSxKcltWcisrXSxKcltWcisrXSk7aWYoMD09SnIubGVuZ3RoJiZMbj09Z24pe3F0W0ZyXT0wO2xldCBWcj1Kbjt0cnl7dGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJVbmNhdWdodCAoaW4gcHJvbWlzZSk6ICIrZnVuY3Rpb24gQXQocXQpe3JldHVybiBxdCYmcXQudG9TdHJpbmc9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPyhxdC5jb25zdHJ1Y3RvciYmcXQuY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnko''@;'; put 'put ''cXQpOnF0P3F0LnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHF0KX0oSm4pKyhKbiYmSm4uc3RhY2s/IlxuIitKbi5zdGFjazoiIikpfWNhdGNoKHRpKXtWcj10aX1tbiYmKFZyLnRocm93T3JpZ2luYWw9ITApLFZyLnJlamVjdGlvbj1KbixWci5wcm9taXNlPXF0''@;'; put 'put ''LFZyLnpvbmU9Y3QuY3VycmVudCxWci50YXNrPWN0LmN1cnJlbnRUYXNrLEp0LnB1c2goVnIpLE50LnNjaGVkdWxlTWljcm9UYXNrKCl9fX1yZXR1cm4gcXR9Y29uc3QgR249anQoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gVHIocXQpe2lmKDA9PT1xdFtGcl0pe3RyeXtj''@;'; put 'put ''b25zdCBMbj1jdFtHbl07TG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBMbiYmTG4uY2FsbCh0aGlzLHtyZWplY3Rpb246cXRbeHJdLHByb21pc2U6cXR9KX1jYXRjaChMbil7fXF0W0ZyXT1nbjtmb3IobGV0IExuPTA7TG48SnQubGVuZ3RoO0xuKyspcXQ9PT1KdFtMbl0ucHJvbWlzZSYmSnQuc3Bs''@;'; put 'put ''aWNlKExuLDEpfX1mdW5jdGlvbiBQbihxdCxMbixKbixvcixncil7VHIocXQpO2NvbnN0IEpyPXF0W0ZyXSxWcj1Kcj8iZnVuY3Rpb24iPT10eXBlb2Ygb3I/b3I6dXI6ImZ1bmN0aW9uIj09dHlwZW9mIGdyP2dyOlhuO0xuLnNjaGVkdWxlTWljcm9UYXNrKCJQcm9taXNlLnRoZW4iLCgpPT57''@;'; put 'put ''dHJ5e2NvbnN0IHRpPXF0W3hyXSxPcj0hIUpuJiZlbj09PUpuW2VuXTtPciYmKEpuW2RyXT10aSxKbltucl09SnIpO2NvbnN0IGxpPUxuLnJ1bihWcix2b2lkIDAsT3ImJlZyIT09WG4mJlZyIT09dXI/W106W3RpXSk7dG4oSm4sITAsbGkpfWNhdGNoKHRpKXt0bihKbiwhMSx0aSl9fSxKbil9''@;'; put 'put ''Y29uc3Qgdm49ZnVuY3Rpb24oKXt9LHVuPUN0LkFnZ3JlZ2F0ZUVycm9yO2NsYXNzIGNue3N0YXRpYyB0b1N0cmluZygpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifXN0YXRpYyByZXNvbHZlKExuKXtyZXR1cm4gdG4obmV3IHRoaXMobnVs''@;'; put 'put ''bCksITAsTG4pfXN0YXRpYyByZWplY3QoTG4pe3JldHVybiB0bihuZXcgdGhpcyhudWxsKSxnbixMbil9c3RhdGljIGFueShMbil7aWYoIUxufHwiZnVuY3Rpb24iIT10eXBlb2YgTG5bU3ltYm9sLml0ZXJhdG9yXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHVuKFtdLCJBbGwgcHJvbWlz''@;'; put 'put ''ZXMgd2VyZSByZWplY3RlZCIpKTtjb25zdCBKbj1bXTtsZXQgb3I9MDt0cnl7Zm9yKGxldCBWciBvZiBMbilvcisrLEpuLnB1c2goY24ucmVzb2x2ZShWcikpfWNhdGNoKFZyKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHVuKFtdLCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpKX1p''@;'; put 'put ''ZigwPT09b3IpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyB1bihbXSwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWQiKSk7bGV0IGdyPSExO2NvbnN0IEpyPVtdO3JldHVybiBuZXcgY24oKFZyLHRpKT0+e2ZvcihsZXQgT3I9MDtPcjxKbi5sZW5ndGg7T3IrKylKbltPcl0udGhlbihsaT0+''@;'; put 'put ''e2dyfHwoZ3I9ITAsVnIobGkpKX0sbGk9PntKci5wdXNoKGxpKSxvci0tLDA9PT1vciYmKGdyPSEwLHRpKG5ldyB1bihKciwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWQiKSkpfSl9KX1zdGF0aWMgcmFjZShMbil7bGV0IEpuLG9yLGdyPW5ldyB0aGlzKCh0aSxPcik9PntKbj10aSxvcj1P''@;'; put 'put ''cn0pO2Z1bmN0aW9uIEpyKHRpKXtKbih0aSl9ZnVuY3Rpb24gVnIodGkpe29yKHRpKX1mb3IobGV0IHRpIG9mIExuKWVyKHRpKXx8KHRpPXRoaXMucmVzb2x2ZSh0aSkpLHRpLnRoZW4oSnIsVnIpO3JldHVybiBncn1zdGF0aWMgYWxsKExuKXtyZXR1cm4gY24uYWxsV2l0aENhbGxiYWNrKExu''@;'; put 'put ''KX1zdGF0aWMgYWxsU2V0dGxlZChMbil7cmV0dXJuKHRoaXMmJnRoaXMucHJvdG90eXBlIGluc3RhbmNlb2YgY24/dGhpczpjbikuYWxsV2l0aENhbGxiYWNrKExuLHt0aGVuQ2FsbGJhY2s6b3I9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOm9yfSksZXJyb3JDYWxsYmFjazpvcj0+KHtz''@;'; put 'put ''dGF0dXM6InJlamVjdGVkIixyZWFzb246b3J9KX0pfXN0YXRpYyBhbGxXaXRoQ2FsbGJhY2soTG4sSm4pe2xldCBvcixncixKcj1uZXcgdGhpcygobGksSWkpPT57b3I9bGksZ3I9SWl9KSxWcj0yLHRpPTA7Y29uc3QgT3I9W107Zm9yKGxldCBsaSBvZiBMbil7ZXIobGkpfHwobGk9dGhpcy5y''@;'; put 'put ''ZXNvbHZlKGxpKSk7Y29uc3QgSWk9dGk7dHJ5e2xpLnRoZW4ocjA9PntPcltJaV09Sm4/Sm4udGhlbkNhbGxiYWNrKHIwKTpyMCxWci0tLDA9PT1WciYmb3IoT3IpfSxyMD0+e0puPyhPcltJaV09Sm4uZXJyb3JDYWxsYmFjayhyMCksVnItLSwwPT09VnImJm9yKE9yKSk6Z3IocjApfSl9Y2F0''@;'; put 'put ''Y2gocjApe2dyKHIwKX1WcisrLHRpKyt9cmV0dXJuIFZyLT0yLDA9PT1WciYmb3IoT3IpLEpyfWNvbnN0cnVjdG9yKExuKXtjb25zdCBKbj10aGlzO2lmKCEoSm4gaW5zdGFuY2VvZiBjbikpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGFuIGluc3RhbmNlb2YgUHJvbWlzZS4iKTtKbltGcl09''@;'; put 'put ''JG4sSm5beHJdPVtdO3RyeXtjb25zdCBvcj1zbigpO0xuJiZMbihvcihWdChKbiwhMCkpLG9yKFZ0KEpuLGduKSkpfWNhdGNoKG9yKXt0bihKbiwhMSxvcil9fWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIlByb21pc2UifWdldFtTeW1ib2wuc3BlY2llc10oKXtyZXR1cm4gY259''@;'; put 'put ''dGhlbihMbixKbil7dmFyIG9yO2xldCBncj1udWxsPT09KG9yPXRoaXMuY29uc3RydWN0b3IpfHx2b2lkIDA9PT1vcj92b2lkIDA6b3JbU3ltYm9sLnNwZWNpZXNdOyghZ3J8fCJmdW5jdGlvbiIhPXR5cGVvZiBncikmJihncj10aGlzLmNvbnN0cnVjdG9yfHxjbik7Y29uc3QgSnI9bmV3IGdy''@;'; put 'put ''KHZuKSxWcj1jdC5jdXJyZW50O3JldHVybiB0aGlzW0ZyXT09JG4/dGhpc1t4cl0ucHVzaChWcixKcixMbixKbik6UG4odGhpcyxWcixKcixMbixKbiksSnJ9Y2F0Y2goTG4pe3JldHVybiB0aGlzLnRoZW4obnVsbCxMbil9ZmluYWxseShMbil7dmFyIEpuO2xldCBvcj1udWxsPT09KEpuPXRo''@;'; put 'put ''aXMuY29uc3RydWN0b3IpfHx2b2lkIDA9PT1Kbj92b2lkIDA6Sm5bU3ltYm9sLnNwZWNpZXNdOyghb3J8fCJmdW5jdGlvbiIhPXR5cGVvZiBvcikmJihvcj1jbik7Y29uc3QgZ3I9bmV3IG9yKHZuKTtncltlbl09ZW47Y29uc3QgSnI9Y3QuY3VycmVudDtyZXR1cm4gdGhpc1tGcl09PSRuP3Ro''@;'; put 'put ''aXNbeHJdLnB1c2goSnIsZ3IsTG4sTG4pOlBuKHRoaXMsSnIsZ3IsTG4sTG4pLGdyfX1jbi5yZXNvbHZlPWNuLnJlc29sdmUsY24ucmVqZWN0PWNuLnJlamVjdCxjbi5yYWNlPWNuLnJhY2UsY24uYWxsPWNuLmFsbDtjb25zdCBTbj1DdFtwbl09Q3QuUHJvbWlzZTtDdC5Qcm9taXNlPWNuO2Nv''@;'; put 'put ''bnN0IEd0PWp0KCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIEVuKHF0KXtjb25zdCBMbj1xdC5wcm90b3R5cGUsSm49emUoTG4sInRoZW4iKTtpZihKbiYmKCExPT09Sm4ud3JpdGFibGV8fCFKbi5jb25maWd1cmFibGUpKXJldHVybjtjb25zdCBvcj1Mbi50aGVuO0xuW2JuXT1vcixxdC5wcm90''@;'; put 'put ''b3R5cGUudGhlbj1mdW5jdGlvbihncixKcil7cmV0dXJuIG5ldyBjbigodGksT3IpPT57b3IuY2FsbCh0aGlzLHRpLE9yKX0pLnRoZW4oZ3IsSnIpfSxxdFtHdF09ITB9cmV0dXJuIE50LnBhdGNoVGhlbj1FbixTbiYmKEVuKFNuKSxuZShDdCwiZmV0Y2giLHF0PT5mdW5jdGlvbiBqbihxdCl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKExuLEpuKXtsZXQgb3I9cXQuYXBwbHkoTG4sSm4pO2lmKG9yIGluc3RhbmNlb2YgY24pcmV0dXJuIG9yO2xldCBncj1vci5jb25zdHJ1Y3RvcjtyZXR1cm4gZ3JbR3RdfHxFbihnciksb3J9fShxdCkpKSxQcm9taXNlW2N0Ll9fc3ltYm9sX18oInVuY2F1Z2h0UHJv''@;'; put 'put ''bWlzZUVycm9ycyIpXT1KdCxjbn0pLFpvbmUuX19sb2FkX3BhdGNoKCJ0b1N0cmluZyIsQ3Q9Pntjb25zdCBjdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsTnQ9TigiT3JpZ2luYWxEZWxlZ2F0ZSIpLHplPU4oIlByb21pc2UiKSxZZT1OKCJFcnJvciIpLEF0PWZ1bmN0aW9uKCl7aWYo''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMpe2NvbnN0IHBuPXRoaXNbTnRdO2lmKHBuKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBwbj9jdC5jYWxsKHBuKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocG4pO2lmKHRoaXM9PT1Qcm9taXNlKXtjb25zdCBibj1DdFt6ZV07aWYoYm4p''@;'; put 'put ''cmV0dXJuIGN0LmNhbGwoYm4pfWlmKHRoaXM9PT1FcnJvcil7Y29uc3QgYm49Q3RbWWVdO2lmKGJuKXJldHVybiBjdC5jYWxsKGJuKX19cmV0dXJuIGN0LmNhbGwodGhpcyl9O0F0W050XT1jdCxGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9QXQ7Y29uc3QganQ9T2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZztPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2UmJnRoaXMgaW5zdGFuY2VvZiBQcm9taXNlPyJbb2JqZWN0IFByb21pc2VdIjpqdC5jYWxsKHRoaXMpfX0pO2xldCBGPSExO2lmKCJ1bmRlZmluZWQi''@;'; put 'put ''IT10eXBlb2Ygd2luZG93KXRyeXtjb25zdCBDdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtGPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixDdCxDdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLEN0LEN0''@;'; put 'put ''KX1jYXRjaChDdCl7Rj0hMX1jb25zdCB5ZT17dXNlRzohMH0sQ2U9e30sRGU9e30sUGU9bmV3IFJlZ0V4cCgiXiIrbGUrIihcXHcrKSh0cnVlfGZhbHNlKSQiKSxRZT1OKCJwcm9wYWdhdGlvblN0b3BwZWQiKTtmdW5jdGlvbiAkZShDdCxjdCl7Y29uc3QgTnQ9KGN0P2N0KEN0KTpDdCkraWUs''@;'; put 'put ''emU9KGN0P2N0KEN0KTpDdCkrWixZZT1sZStOdCxBdD1sZSt6ZTtDZVtDdF09e30sQ2VbQ3RdW2llXT1ZZSxDZVtDdF1bWl09QXR9ZnVuY3Rpb24gZ3QoQ3QsY3QsTnQsemUpe2NvbnN0IFllPXplJiZ6ZS5hZGR8fEUsQXQ9emUmJnplLnJtfHxNZSxqdD16ZSYmemUubGlzdGVuZXJzfHwiZXZl''@;'; put 'put ''bnRMaXN0ZW5lcnMiLEp0PXplJiZ6ZS5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIsbW49TihZZSkscG49Ii4iK1llKyI6IixObj1mdW5jdGlvbih4cixlbixkcil7aWYoeHIuaXNSZW1vdmVkKXJldHVybjtjb25zdCBucj14ci5jYWxsYmFjaztsZXQgd247Im9iamVjdCI9PXR5cGVvZiBu''@;'; put 'put ''ciYmbnIuaGFuZGxlRXZlbnQmJih4ci5jYWxsYmFjaz1ZdD0+bnIuaGFuZGxlRXZlbnQoWXQpLHhyLm9yaWdpbmFsRGVsZWdhdGU9bnIpO3RyeXt4ci5pbnZva2UoeHIsZW4sW2RyXSl9Y2F0Y2goWXQpe3duPVl0fWNvbnN0ICRuPXhyLm9wdGlvbnM7cmV0dXJuICRuJiYib2JqZWN0Ij09dHlw''@;'; put 'put ''ZW9mICRuJiYkbi5vbmNlJiZlbltBdF0uY2FsbChlbixkci50eXBlLHhyLm9yaWdpbmFsRGVsZWdhdGU/eHIub3JpZ2luYWxEZWxlZ2F0ZTp4ci5jYWxsYmFjaywkbiksd259O2Z1bmN0aW9uIGtuKHhyLGVuLGRyKXtpZighKGVuPWVufHxDdC5ldmVudCkpcmV0dXJuO2NvbnN0IG5yPXhyfHxl''@;'; put 'put ''bi50YXJnZXR8fEN0LHduPW5yW0NlW2VuLnR5cGVdW2RyP1o6aWVdXTtpZih3bil7Y29uc3QgJG49W107aWYoMT09PXduLmxlbmd0aCl7Y29uc3QgWXQ9Tm4od25bMF0sbnIsZW4pO1l0JiYkbi5wdXNoKFl0KX1lbHNle2NvbnN0IFl0PXduLnNsaWNlKCk7Zm9yKGxldCBnbj0wO2duPFl0Lmxl''@;'; put 'put ''bmd0aCYmKCFlbnx8ITAhPT1lbltRZV0pO2duKyspe2NvbnN0IEtuPU5uKFl0W2duXSxucixlbik7S24mJiRuLnB1c2goS24pfX1pZigxPT09JG4ubGVuZ3RoKXRocm93ICRuWzBdO2ZvcihsZXQgWXQ9MDtZdDwkbi5sZW5ndGg7WXQrKyl7Y29uc3QgZ249JG5bWXRdO2N0Lm5hdGl2ZVNjaGVk''@;'; put 'put ''dWxlTWljcm9UYXNrKCgpPT57dGhyb3cgZ259KX19fWNvbnN0IGVyPWZ1bmN0aW9uKHhyKXtyZXR1cm4ga24odGhpcyx4ciwhMSl9LHVyPWZ1bmN0aW9uKHhyKXtyZXR1cm4ga24odGhpcyx4ciwhMCl9O2Z1bmN0aW9uIFhuKHhyLGVuKXtpZigheHIpcmV0dXJuITE7bGV0IGRyPSEwO2VuJiZ2''@;'; put 'put ''b2lkIDAhPT1lbi51c2VHJiYoZHI9ZW4udXNlRyk7Y29uc3QgbnI9ZW4mJmVuLnZoO2xldCB3bj0hMDtlbiYmdm9pZCAwIT09ZW4uY2hrRHVwJiYod249ZW4uY2hrRHVwKTtsZXQgJG49ITE7ZW4mJnZvaWQgMCE9PWVuLnJ0JiYoJG49ZW4ucnQpO2xldCBZdD14cjtmb3IoO1l0JiYhWXQuaGFz''@;'; put 'put ''T3duUHJvcGVydHkoWWUpOylZdD1MKFl0KTtpZighWXQmJnhyW1llXSYmKFl0PXhyKSwhWXR8fFl0W21uXSlyZXR1cm4hMTtjb25zdCBnbj1lbiYmZW4uZXZlbnROYW1lVG9TdHJpbmcsS249e30sVnQ9WXRbbW5dPVl0W1llXSxzbj1ZdFtOKEF0KV09WXRbQXRdLFVuPVl0W04oanQpXT1ZdFtq''@;'; put 'put ''dF0sX249WXRbTihKdCldPVl0W0p0XTtsZXQgdG47ZnVuY3Rpb24gR24oSm4sb3Ipe3JldHVybiFGJiYib2JqZWN0Ij09dHlwZW9mIEpuJiZKbj8hIUpuLmNhcHR1cmU6RiYmb3I/ImJvb2xlYW4iPT10eXBlb2YgSm4/e2NhcHR1cmU6Sm4scGFzc2l2ZTohMH06Sm4/Im9iamVjdCI9PXR5cGVv''@;'; put 'put ''ZiBKbiYmITEhPT1Kbi5wYXNzaXZlP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxKbikse3Bhc3NpdmU6ITB9KTpKbjp7cGFzc2l2ZTohMH06Sm59ZW4mJmVuLnByZXBlbmQmJih0bj1ZdFtOKGVuLnByZXBlbmQpXT1ZdFtlbi5wcmVwZW5kXSk7Y29uc3QgY249ZHI/ZnVuY3Rpb24o''@;'; put 'put ''Sm4pe2lmKCFLbi5pc0V4aXN0aW5nKXJldHVybiBWdC5jYWxsKEtuLnRhcmdldCxLbi5ldmVudE5hbWUsS24uY2FwdHVyZT91cjplcixLbi5vcHRpb25zKX06ZnVuY3Rpb24oSm4pe3JldHVybiBWdC5jYWxsKEtuLnRhcmdldCxLbi5ldmVudE5hbWUsSm4uaW52b2tlLEtuLm9wdGlvbnMpfSxT''@;'; put 'put ''bj1kcj9mdW5jdGlvbihKbil7aWYoIUpuLmlzUmVtb3ZlZCl7Y29uc3Qgb3I9Q2VbSm4uZXZlbnROYW1lXTtsZXQgZ3I7b3ImJihncj1vcltKbi5jYXB0dXJlP1o6aWVdKTtjb25zdCBKcj1nciYmSm4udGFyZ2V0W2dyXTtpZihKcilmb3IobGV0IFZyPTA7VnI8SnIubGVuZ3RoO1ZyKyspaWYo''@;'; put 'put ''SnJbVnJdPT09Sm4pe0pyLnNwbGljZShWciwxKSxKbi5pc1JlbW92ZWQ9ITAsMD09PUpyLmxlbmd0aCYmKEpuLmFsbFJlbW92ZWQ9ITAsSm4udGFyZ2V0W2dyXT1udWxsKTticmVha319aWYoSm4uYWxsUmVtb3ZlZClyZXR1cm4gc24uY2FsbChKbi50YXJnZXQsSm4uZXZlbnROYW1lLEpuLmNh''@;'; put 'put ''cHR1cmU/dXI6ZXIsSm4ub3B0aW9ucyl9OmZ1bmN0aW9uKEpuKXtyZXR1cm4gc24uY2FsbChKbi50YXJnZXQsSm4uZXZlbnROYW1lLEpuLmludm9rZSxKbi5vcHRpb25zKX0sRW49ZW4mJmVuLmRpZmY/ZW4uZGlmZjpmdW5jdGlvbihKbixvcil7Y29uc3QgZ3I9dHlwZW9mIG9yO3JldHVybiJm''@;'; put 'put ''dW5jdGlvbiI9PT1nciYmSm4uY2FsbGJhY2s9PT1vcnx8Im9iamVjdCI9PT1nciYmSm4ub3JpZ2luYWxEZWxlZ2F0ZT09PW9yfSxqbj1ab25lW04oIlVOUEFUQ0hFRF9FVkVOVFMiKV0scXQ9Q3RbTigiUEFTU0lWRV9FVkVOVFMiKV0sTG49ZnVuY3Rpb24oSm4sb3IsZ3IsSnIsVnI9ITEsdGk9''@;'; put 'put ''ITEpe3JldHVybiBmdW5jdGlvbigpe2NvbnN0IE9yPXRoaXN8fEN0O2xldCBsaT1hcmd1bWVudHNbMF07ZW4mJmVuLnRyYW5zZmVyRXZlbnROYW1lJiYobGk9ZW4udHJhbnNmZXJFdmVudE5hbWUobGkpKTtsZXQgSWk9YXJndW1lbnRzWzFdO2lmKCFJaSlyZXR1cm4gSm4uYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpO2lmKEFlJiYidW5jYXVnaHRFeGNlcHRpb24iPT09bGkpcmV0dXJuIEpuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtsZXQgcjA9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIElpKXtpZighSWkuaGFuZGxlRXZlbnQpcmV0dXJuIEpuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyMD0h''@;'; put 'put ''MH1pZihuciYmIW5yKEpuLElpLE9yLGFyZ3VtZW50cykpcmV0dXJuO2NvbnN0IGUwPUYmJiEhcXQmJi0xIT09cXQuaW5kZXhPZihsaSksZDA9R24oYXJndW1lbnRzWzJdLGUwKTtpZihqbilmb3IobGV0IHBpPTA7cGk8am4ubGVuZ3RoO3BpKyspaWYobGk9PT1qbltwaV0pcmV0dXJuIGUwP0pu''@;'; put 'put ''LmNhbGwoT3IsbGksSWksZDApOkpuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtjb25zdCBfMD0hIWQwJiYoImJvb2xlYW4iPT10eXBlb2YgZDB8fGQwLmNhcHR1cmUpLFUwPSEoIWQwfHwib2JqZWN0IiE9dHlwZW9mIGQwKSYmZDAub25jZSxCaT1ab25lLmN1cnJlbnQ7bGV0IGowPUNlW2xpXTtq''@;'; put 'put ''MHx8KCRlKGxpLGduKSxqMD1DZVtsaV0pO2NvbnN0IEFvPWowW18wP1o6aWVdO2xldCBlbCxLbz1PcltBb10sZmE9ITE7aWYoS28pe2lmKGZhPSEwLHduKWZvcihsZXQgcGk9MDtwaTxLby5sZW5ndGg7cGkrKylpZihFbihLb1twaV0sSWkpKXJldHVybn1lbHNlIEtvPU9yW0FvXT1bXTtjb25z''@;'; put 'put ''dCBKaT1Pci5jb25zdHJ1Y3Rvci5uYW1lLE1hPURlW0ppXTtNYSYmKGVsPU1hW2xpXSksZWx8fChlbD1KaStvcisoZ24/Z24obGkpOmxpKSksS24ub3B0aW9ucz1kMCxVMCYmKEtuLm9wdGlvbnMub25jZT0hMSksS24udGFyZ2V0PU9yLEtuLmNhcHR1cmU9XzAsS24uZXZlbnROYW1lPWxpLEtu''@;'; put 'put ''LmlzRXhpc3Rpbmc9ZmE7Y29uc3QgeWw9ZHI/eWU6dm9pZCAwO3lsJiYoeWwudGFza0RhdGE9S24pO2NvbnN0IGZsPUJpLnNjaGVkdWxlRXZlbnRUYXNrKGVsLElpLHlsLGdyLEpyKTtyZXR1cm4gS24udGFyZ2V0PW51bGwseWwmJih5bC50YXNrRGF0YT1udWxsKSxVMCYmKGQwLm9uY2U9ITAp''@;'; put 'put ''LCFGJiYiYm9vbGVhbiI9PXR5cGVvZiBmbC5vcHRpb25zfHwoZmwub3B0aW9ucz1kMCksZmwudGFyZ2V0PU9yLGZsLmNhcHR1cmU9XzAsZmwuZXZlbnROYW1lPWxpLHIwJiYoZmwub3JpZ2luYWxEZWxlZ2F0ZT1JaSksdGk/S28udW5zaGlmdChmbCk6S28ucHVzaChmbCksVnI/T3I6dm9pZCAw''@;'; put 'put ''fX07cmV0dXJuIFl0W1llXT1MbihWdCxwbixjbixTbiwkbiksdG4mJihZdC5wcmVwZW5kTGlzdGVuZXI9TG4odG4sIi5wcmVwZW5kTGlzdGVuZXI6IixmdW5jdGlvbihKbil7cmV0dXJuIHRuLmNhbGwoS24udGFyZ2V0LEtuLmV2ZW50TmFtZSxKbi5pbnZva2UsS24ub3B0aW9ucyl9LFNuLCRu''@;'; put 'put ''LCEwKSksWXRbQXRdPWZ1bmN0aW9uKCl7Y29uc3QgSm49dGhpc3x8Q3Q7bGV0IG9yPWFyZ3VtZW50c1swXTtlbiYmZW4udHJhbnNmZXJFdmVudE5hbWUmJihvcj1lbi50cmFuc2ZlckV2ZW50TmFtZShvcikpO2NvbnN0IGdyPWFyZ3VtZW50c1syXSxKcj0hIWdyJiYoImJvb2xlYW4iPT10eXBl''@;'; put 'put ''b2YgZ3J8fGdyLmNhcHR1cmUpLFZyPWFyZ3VtZW50c1sxXTtpZighVnIpcmV0dXJuIHNuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihuciYmIW5yKHNuLFZyLEpuLGFyZ3VtZW50cykpcmV0dXJuO2NvbnN0IHRpPUNlW29yXTtsZXQgT3I7dGkmJihPcj10aVtKcj9aOmllXSk7Y29uc3QgbGk9''@;'; put 'put ''T3ImJkpuW09yXTtpZihsaSlmb3IobGV0IElpPTA7SWk8bGkubGVuZ3RoO0lpKyspe2NvbnN0IHIwPWxpW0lpXTtpZihFbihyMCxWcikpcmV0dXJuIGxpLnNwbGljZShJaSwxKSxyMC5pc1JlbW92ZWQ9ITAsMD09PWxpLmxlbmd0aCYmKHIwLmFsbFJlbW92ZWQ9ITAsSm5bT3JdPW51bGwsInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBvcikmJihKbltsZSsiT05fUFJPUEVSVFkiK29yXT1udWxsKSxyMC56b25lLmNhbmNlbFRhc2socjApLCRuP0puOnZvaWQgMH1yZXR1cm4gc24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxZdFtqdF09ZnVuY3Rpb24oKXtjb25zdCBKbj10aGlzfHxDdDtsZXQgb3I9YXJn''@;'; put 'put ''dW1lbnRzWzBdO2VuJiZlbi50cmFuc2ZlckV2ZW50TmFtZSYmKG9yPWVuLnRyYW5zZmVyRXZlbnROYW1lKG9yKSk7Y29uc3QgZ3I9W10sSnI9eXQoSm4sZ24/Z24ob3IpOm9yKTtmb3IobGV0IFZyPTA7VnI8SnIubGVuZ3RoO1ZyKyspe2NvbnN0IHRpPUpyW1ZyXTtnci5wdXNoKHRpLm9yaWdp''@;'; put 'put ''bmFsRGVsZWdhdGU/dGkub3JpZ2luYWxEZWxlZ2F0ZTp0aS5jYWxsYmFjayl9cmV0dXJuIGdyfSxZdFtKdF09ZnVuY3Rpb24oKXtjb25zdCBKbj10aGlzfHxDdDtsZXQgb3I9YXJndW1lbnRzWzBdO2lmKG9yKXtlbiYmZW4udHJhbnNmZXJFdmVudE5hbWUmJihvcj1lbi50cmFuc2ZlckV2ZW50''@;'; put 'put ''TmFtZShvcikpO2NvbnN0IGdyPUNlW29yXTtpZihncil7Y29uc3QgdGk9Sm5bZ3JbaWVdXSxPcj1KbltncltaXV07aWYodGkpe2NvbnN0IGxpPXRpLnNsaWNlKCk7Zm9yKGxldCBJaT0wO0lpPGxpLmxlbmd0aDtJaSsrKXtjb25zdCByMD1saVtJaV07dGhpc1tBdF0uY2FsbCh0aGlzLG9yLHIw''@;'; put 'put ''Lm9yaWdpbmFsRGVsZWdhdGU/cjAub3JpZ2luYWxEZWxlZ2F0ZTpyMC5jYWxsYmFjayxyMC5vcHRpb25zKX19aWYoT3Ipe2NvbnN0IGxpPU9yLnNsaWNlKCk7Zm9yKGxldCBJaT0wO0lpPGxpLmxlbmd0aDtJaSsrKXtjb25zdCByMD1saVtJaV07dGhpc1tBdF0uY2FsbCh0aGlzLG9yLHIwLm9y''@;'; put 'put ''aWdpbmFsRGVsZWdhdGU/cjAub3JpZ2luYWxEZWxlZ2F0ZTpyMC5jYWxsYmFjayxyMC5vcHRpb25zKX19fX1lbHNle2NvbnN0IGdyPU9iamVjdC5rZXlzKEpuKTtmb3IobGV0IEpyPTA7SnI8Z3IubGVuZ3RoO0pyKyspe2NvbnN0IHRpPVBlLmV4ZWMoZ3JbSnJdKTtsZXQgT3I9dGkmJnRpWzFd''@;'; put 'put ''O09yJiYicmVtb3ZlTGlzdGVuZXIiIT09T3ImJnRoaXNbSnRdLmNhbGwodGhpcyxPcil9dGhpc1tKdF0uY2FsbCh0aGlzLCJyZW1vdmVMaXN0ZW5lciIpfWlmKCRuKXJldHVybiB0aGlzfSx4KFl0W1llXSxWdCkseChZdFtBdF0sc24pLF9uJiZ4KFl0W0p0XSxfbiksVW4mJngoWXRbanRdLFVu''@;'; put 'put ''KSwhMH1sZXQgRnI9W107Zm9yKGxldCB4cj0wO3hyPE50Lmxlbmd0aDt4cisrKUZyW3hyXT1YbihOdFt4cl0semUpO3JldHVybiBGcn1mdW5jdGlvbiB5dChDdCxjdCl7aWYoIWN0KXtjb25zdCBBdD1bXTtmb3IobGV0IGp0IGluIEN0KXtjb25zdCBKdD1QZS5leGVjKGp0KTtsZXQgbW49SnQm''@;'; put 'put ''Jkp0WzFdO2lmKG1uJiYoIWN0fHxtbj09PWN0KSl7Y29uc3QgcG49Q3RbanRdO2lmKHBuKWZvcihsZXQgYm49MDtibjxwbi5sZW5ndGg7Ym4rKylBdC5wdXNoKHBuW2JuXSl9fXJldHVybiBBdH1sZXQgTnQ9Q2VbY3RdO050fHwoJGUoY3QpLE50PUNlW2N0XSk7Y29uc3QgemU9Q3RbTnRbaWVd''@;'; put 'put ''XSxZZT1DdFtOdFtaXV07cmV0dXJuIHplP1llP3plLmNvbmNhdChZZSk6emUuc2xpY2UoKTpZZT9ZZS5zbGljZSgpOltdfWZ1bmN0aW9uIHB0KEN0LGN0KXtjb25zdCBOdD1DdC5FdmVudDtOdCYmTnQucHJvdG90eXBlJiZjdC5wYXRjaE1ldGhvZChOdC5wcm90b3R5cGUsInN0b3BJbW1lZGlh''@;'; put 'put ''dGVQcm9wYWdhdGlvbiIsemU9PmZ1bmN0aW9uKFllLEF0KXtZZVtRZV09ITAsemUmJnplLmFwcGx5KFllLEF0KX0pfWZ1bmN0aW9uIG10KEN0LGN0LE50LHplLFllKXtjb25zdCBBdD1ab25lLl9fc3ltYm9sX18oemUpO2lmKGN0W0F0XSlyZXR1cm47Y29uc3QganQ9Y3RbQXRdPWN0W3plXTtj''@;'; put 'put ''dFt6ZV09ZnVuY3Rpb24oSnQsbW4scG4pe3JldHVybiBtbiYmbW4ucHJvdG90eXBlJiZZZS5mb3JFYWNoKGZ1bmN0aW9uKGJuKXtjb25zdCBsbj1gJHtOdH0uJHt6ZX06OmArYm4sTm49bW4ucHJvdG90eXBlO3RyeXtpZihObi5oYXNPd25Qcm9wZXJ0eShibikpe2NvbnN0IGtuPUN0Lk9iamVj''@;'; put 'put ''dEdldE93blByb3BlcnR5RGVzY3JpcHRvcihObixibik7a24mJmtuLnZhbHVlPyhrbi52YWx1ZT1DdC53cmFwV2l0aEN1cnJlbnRab25lKGtuLnZhbHVlLGxuKSxDdC5fcmVkZWZpbmVQcm9wZXJ0eShtbi5wcm90b3R5cGUsYm4sa24pKTpObltibl0mJihObltibl09Q3Qud3JhcFdpdGhDdXJy''@;'; put 'put ''ZW50Wm9uZShObltibl0sbG4pKX1lbHNlIE5uW2JuXSYmKE5uW2JuXT1DdC53cmFwV2l0aEN1cnJlbnRab25lKE5uW2JuXSxsbikpfWNhdGNoKGtuKXt9fSksanQuY2FsbChjdCxKdCxtbixwbil9LEN0LmF0dGFjaE9yaWdpblRvUGF0Y2hlZChjdFt6ZV0sanQpfWZ1bmN0aW9uIHZ0KEN0LGN0''@;'; put 'put ''LE50KXtpZighTnR8fDA9PT1OdC5sZW5ndGgpcmV0dXJuIGN0O2NvbnN0IHplPU50LmZpbHRlcihBdD0+QXQudGFyZ2V0PT09Q3QpO2lmKCF6ZXx8MD09PXplLmxlbmd0aClyZXR1cm4gY3Q7Y29uc3QgWWU9emVbMF0uaWdub3JlUHJvcGVydGllcztyZXR1cm4gY3QuZmlsdGVyKEF0PT4tMT09''@;'; put 'put ''PVllLmluZGV4T2YoQXQpKX1mdW5jdGlvbiBmdChDdCxjdCxOdCx6ZSl7Q3QmJmhlKEN0LHZ0KEN0LGN0LE50KSx6ZSl9ZnVuY3Rpb24gRnQoQ3Qpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhDdCkuZmlsdGVyKGN0PT5jdC5zdGFydHNXaXRoKCJvbiIpJiZjdC5sZW5ndGg+''@;'; put 'put ''MikubWFwKGN0PT5jdC5zdWJzdHJpbmcoMikpfVpvbmUuX19sb2FkX3BhdGNoKCJ1dGlsIiwoQ3QsY3QsTnQpPT57Y29uc3QgemU9RnQoQ3QpO050LnBhdGNoT25Qcm9wZXJ0aWVzPWhlLE50LnBhdGNoTWV0aG9kPW5lLE50LmJpbmRBcmd1bWVudHM9YWUsTnQucGF0Y2hNYWNyb1Rhc2s9dGU7''@;'; put 'put ''Y29uc3QgWWU9Y3QuX19zeW1ib2xfXygiQkxBQ0tfTElTVEVEX0VWRU5UUyIpLEF0PWN0Ll9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtDdFtBdF0mJihDdFtZZV09Q3RbQXRdKSxDdFtZZV0mJihjdFtZZV09Y3RbQXRdPUN0W1llXSksTnQucGF0Y2hFdmVudFByb3RvdHlwZT1wdCxO''@;'; put 'put ''dC5wYXRjaEV2ZW50VGFyZ2V0PWd0LE50LmlzSUVPckVkZ2U9UyxOdC5PYmplY3REZWZpbmVQcm9wZXJ0eT1KZSxOdC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9WGUsTnQuT2JqZWN0Q3JlYXRlPWdlLE50LkFycmF5U2xpY2U9QixOdC5wYXRjaENsYXNzPXosTnQud3JhcFdpdGhD''@;'; put 'put ''dXJyZW50Wm9uZT1ZLE50LmZpbHRlclByb3BlcnRpZXM9dnQsTnQuYXR0YWNoT3JpZ2luVG9QYXRjaGVkPXgsTnQuX3JlZGVmaW5lUHJvcGVydHk9T2JqZWN0LmRlZmluZVByb3BlcnR5LE50LnBhdGNoQ2FsbGJhY2tzPW10LE50LmdldEdsb2JhbE9iamVjdHM9KCk9Pih7Z2xvYmFsU291cmNl''@;'; put 'put ''czpEZSx6b25lU3ltYm9sRXZlbnROYW1lczpDZSxldmVudE5hbWVzOnplLGlzQnJvd3NlcjprZSxpc01peDpTZSxpc05vZGU6QWUsVFJVRV9TVFI6WixGQUxTRV9TVFI6aWUsWk9ORV9TWU1CT0xfUFJFRklYOmxlLEFERF9FVkVOVF9MSVNURU5FUl9TVFI6RSxSRU1PVkVfRVZFTlRfTElTVEVO''@;'; put 'put ''RVJfU1RSOk1lfSl9KTtjb25zdCBfdD1OKCJ6b25lVGFzayIpO2Z1bmN0aW9uIG50KEN0LGN0LE50LHplKXtsZXQgWWU9bnVsbCxBdD1udWxsO050Kz16ZTtjb25zdCBqdD17fTtmdW5jdGlvbiBKdChwbil7Y29uc3QgYm49cG4uZGF0YTtyZXR1cm4gYm4uYXJnc1swXT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBwbi5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxibi5oYW5kbGVJZD1ZZS5hcHBseShDdCxibi5hcmdzKSxwbn1mdW5jdGlvbiBtbihwbil7cmV0dXJuIEF0LmNhbGwoQ3QscG4uZGF0YS5oYW5kbGVJZCl9WWU9bmUoQ3QsY3QrPXplLHBuPT5mdW5jdGlvbihibixsbil7aWYo''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGxuWzBdKXtjb25zdCBObj17aXNQZXJpb2RpYzoiSW50ZXJ2YWwiPT09emUsZGVsYXk6IlRpbWVvdXQiPT09emV8fCJJbnRlcnZhbCI9PT16ZT9sblsxXXx8MDp2b2lkIDAsYXJnczpsbn0sa249bG5bMF07bG5bMF09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGtu''@;'; put 'put ''LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e05uLmlzUGVyaW9kaWN8fCgibnVtYmVyIj09dHlwZW9mIE5uLmhhbmRsZUlkP2RlbGV0ZSBqdFtObi5oYW5kbGVJZF06Tm4uaGFuZGxlSWQmJihObi5oYW5kbGVJZFtfdF09bnVsbCkpfX07Y29uc3QgZXI9VyhjdCxsblswXSxObixKdCxt''@;'; put 'put ''bik7aWYoIWVyKXJldHVybiBlcjtjb25zdCB1cj1lci5kYXRhLmhhbmRsZUlkO3JldHVybiJudW1iZXIiPT10eXBlb2YgdXI/anRbdXJdPWVyOnVyJiYodXJbX3RdPWVyKSx1ciYmdXIucmVmJiZ1ci51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIHVyLnJlZiYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IHVyLnVucmVmJiYoZXIucmVmPXVyLnJlZi5iaW5kKHVyKSxlci51bnJlZj11ci51bnJlZi5iaW5kKHVyKSksIm51bWJlciI9PXR5cGVvZiB1cnx8dXI/dXI6ZXJ9cmV0dXJuIHBuLmFwcGx5KEN0LGxuKX0pLEF0PW5lKEN0LE50LHBuPT5mdW5jdGlvbihibixsbil7Y29uc3QgTm49bG5bMF07''@;'; put 'put ''bGV0IGtuOyJudW1iZXIiPT10eXBlb2YgTm4/a249anRbTm5dOihrbj1ObiYmTm5bX3RdLGtufHwoa249Tm4pKSxrbiYmInN0cmluZyI9PXR5cGVvZiBrbi50eXBlPyJub3RTY2hlZHVsZWQiIT09a24uc3RhdGUmJihrbi5jYW5jZWxGbiYma24uZGF0YS5pc1BlcmlvZGljfHwwPT09a24ucnVu''@;'; put 'put ''Q291bnQpJiYoIm51bWJlciI9PXR5cGVvZiBObj9kZWxldGUganRbTm5dOk5uJiYoTm5bX3RdPW51bGwpLGtuLnpvbmUuY2FuY2VsVGFzayhrbikpOnBuLmFwcGx5KEN0LGxuKX0pfVpvbmUuX19sb2FkX3BhdGNoKCJsZWdhY3kiLEN0PT57Y29uc3QgY3Q9Q3RbWm9uZS5fX3N5bWJvbF9fKCJs''@;'; put 'put ''ZWdhY3lQYXRjaCIpXTtjdCYmY3QoKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJxdWV1ZU1pY3JvdGFzayIsKEN0LGN0LE50KT0+e050LnBhdGNoTWV0aG9kKEN0LCJxdWV1ZU1pY3JvdGFzayIsemU9PmZ1bmN0aW9uKFllLEF0KXtjdC5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJxdWV1ZU1p''@;'; put 'put ''Y3JvdGFzayIsQXRbMF0pfSl9KSxab25lLl9fbG9hZF9wYXRjaCgidGltZXJzIixDdD0+e2NvbnN0IE50PSJjbGVhciI7bnQoQ3QsInNldCIsTnQsIlRpbWVvdXQiKSxudChDdCwic2V0IixOdCwiSW50ZXJ2YWwiKSxudChDdCwic2V0IixOdCwiSW1tZWRpYXRlIil9KSxab25lLl9fbG9hZF9w''@;'; put 'put ''YXRjaCgicmVxdWVzdEFuaW1hdGlvbkZyYW1lIixDdD0+e250KEN0LCJyZXF1ZXN0IiwiY2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxudChDdCwibW96UmVxdWVzdCIsIm1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksbnQoQ3QsIndlYmtpdFJlcXVlc3QiLCJ3ZWJraXRDYW5jZWwiLCJB''@;'; put 'put ''bmltYXRpb25GcmFtZSIpfSksWm9uZS5fX2xvYWRfcGF0Y2goImJsb2NraW5nIiwoQ3QsY3QpPT57Y29uc3QgTnQ9WyJhbGVydCIsInByb21wdCIsImNvbmZpcm0iXTtmb3IobGV0IHplPTA7emU8TnQubGVuZ3RoO3plKyspbmUoQ3QsTnRbemVdLChBdCxqdCxKdCk9PmZ1bmN0aW9uKG1uLHBu''@;'; put 'put ''KXtyZXR1cm4gY3QuY3VycmVudC5ydW4oQXQsQ3QscG4sSnQpfSl9KSxab25lLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXQiLChDdCxjdCxOdCk9PnsoZnVuY3Rpb24gUnQoQ3QsY3Qpe2N0LnBhdGNoRXZlbnRQcm90b3R5cGUoQ3QsY3QpfSkoQ3QsTnQpLGZ1bmN0aW9uIG90KEN0LGN0KXtp''@;'; put 'put ''Zihab25lW2N0LnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSlyZXR1cm47Y29uc3R7ZXZlbnROYW1lczpOdCx6b25lU3ltYm9sRXZlbnROYW1lczp6ZSxUUlVFX1NUUjpZZSxGQUxTRV9TVFI6QXQsWk9ORV9TWU1CT0xfUFJFRklYOmp0fT1jdC5nZXRHbG9iYWxPYmplY3RzKCk7Zm9yKGxl''@;'; put 'put ''dCBtbj0wO21uPE50Lmxlbmd0aDttbisrKXtjb25zdCBwbj1OdFttbl0sTm49anQrKHBuK0F0KSxrbj1qdCsocG4rWWUpO3plW3BuXT17fSx6ZVtwbl1bQXRdPU5uLHplW3BuXVtZZV09a259Y29uc3QgSnQ9Q3QuRXZlbnRUYXJnZXQ7SnQmJkp0LnByb3RvdHlwZSYmY3QucGF0Y2hFdmVudFRh''@;'; put 'put ''cmdldChDdCxjdCxbSnQmJkp0LnByb3RvdHlwZV0pfShDdCxOdCk7Y29uc3QgemU9Q3QuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDt6ZSYmemUucHJvdG90eXBlJiZOdC5wYXRjaEV2ZW50VGFyZ2V0KEN0LE50LFt6ZS5wcm90b3R5cGVdKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJNdXRhdGlv''@;'; put 'put ''bk9ic2VydmVyIiwoQ3QsY3QsTnQpPT57eigiTXV0YXRpb25PYnNlcnZlciIpLHooIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsKEN0LGN0LE50KT0+e3ooIkludGVyc2VjdGlvbk9ic2VydmVyIil9KSxab25lLl9f''@;'; put 'put ''bG9hZF9wYXRjaCgiRmlsZVJlYWRlciIsKEN0LGN0LE50KT0+e3ooIkZpbGVSZWFkZXIiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJvbl9wcm9wZXJ0eSIsKEN0LGN0LE50KT0+eyFmdW5jdGlvbiBvbihDdCxjdCl7aWYoQWUmJiFTZXx8Wm9uZVtDdC5zeW1ib2woInBhdGNoRXZlbnRzIildKXJl''@;'; put 'put ''dHVybjtjb25zdCBOdD1jdC5fX1pvbmVfaWdub3JlX29uX3Byb3BlcnRpZXM7bGV0IHplPVtdO2lmKGtlKXtjb25zdCBZZT13aW5kb3c7emU9emUuY29uY2F0KFsiRG9jdW1lbnQiLCJTVkdFbGVtZW50IiwiRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiSFRNTEJvZHlFbGVtZW50IiwiSFRNTE1l''@;'; put 'put ''ZGlhRWxlbWVudCIsIkhUTUxGcmFtZVNldEVsZW1lbnQiLCJIVE1MRnJhbWVFbGVtZW50IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJIVE1MTWFycXVlZUVsZW1lbnQiLCJXb3JrZXIiXSk7Y29uc3QgQXQ9ZnVuY3Rpb24gVCgpe3RyeXtjb25zdCBDdD1xLm5hdmlnYXRvci51c2VyQWdlbnQ7aWYo''@;'; put 'put ''LTEhPT1DdC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PUN0LmluZGV4T2YoIlRyaWRlbnQvIikpcmV0dXJuITB9Y2F0Y2goQ3Qpe31yZXR1cm4hMX0oKT9be3RhcmdldDpZZSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJyb3IiXX1dOltdO2Z0KFllLEZ0KFllKSxOdCYmTnQuY29uY2F0KEF0KSxMKFll''@;'; put 'put ''KSl9emU9emUuY29uY2F0KFsiWE1MSHR0cFJlcXVlc3QiLCJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0IiwiSURCSW5kZXgiLCJJREJSZXF1ZXN0IiwiSURCT3BlbkRCUmVxdWVzdCIsIklEQkRhdGFiYXNlIiwiSURCVHJhbnNhY3Rpb24iLCJJREJDdXJzb3IiLCJXZWJTb2NrZXQiXSk7Zm9y''@;'; put 'put ''KGxldCBZZT0wO1llPHplLmxlbmd0aDtZZSsrKXtjb25zdCBBdD1jdFt6ZVtZZV1dO0F0JiZBdC5wcm90b3R5cGUmJmZ0KEF0LnByb3RvdHlwZSxGdChBdC5wcm90b3R5cGUpLE50KX19KE50LEN0KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJjdXN0b21FbGVtZW50cyIsKEN0LGN0LE50KT0+eyFm''@;'; put 'put ''dW5jdGlvbiBxZShDdCxjdCl7Y29uc3R7aXNCcm93c2VyOk50LGlzTWl4OnplfT1jdC5nZXRHbG9iYWxPYmplY3RzKCk7KE50fHx6ZSkmJkN0LmN1c3RvbUVsZW1lbnRzJiYiY3VzdG9tRWxlbWVudHMiaW4gQ3QmJmN0LnBhdGNoQ2FsbGJhY2tzKGN0LEN0LmN1c3RvbUVsZW1lbnRzLCJjdXN0''@;'; put 'put ''b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfShDdCxOdCl9KSxab25lLl9fbG9hZF9wYXRjaCgiWEhSIiwoQ3QsY3QpPT57IWZ1bmN0aW9u''@;'; put 'put ''IG1uKHBuKXtjb25zdCBibj1wbi5YTUxIdHRwUmVxdWVzdDtpZighYm4pcmV0dXJuO2NvbnN0IGxuPWJuLnByb3RvdHlwZTtsZXQga249bG5bVV0sZXI9bG5bUV07aWYoIWtuKXtjb25zdCBLbj1wbi5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O2lmKEtuKXtjb25zdCBWdD1Lbi5wcm90b3R5''@;'; put 'put ''cGU7a249VnRbVV0sZXI9VnRbUV19fWNvbnN0IHVyPSJyZWFkeXN0YXRlY2hhbmdlIixYbj0ic2NoZWR1bGVkIjtmdW5jdGlvbiBGcihLbil7Y29uc3QgVnQ9S24uZGF0YSxzbj1WdC50YXJnZXQ7c25bQXRdPSExLHNuW0p0XT0hMTtjb25zdCBVbj1zbltZZV07a258fChrbj1zbltVXSxlcj1z''@;'; put 'put ''bltRXSksVW4mJmVyLmNhbGwoc24sdXIsVW4pO2NvbnN0IF9uPXNuW1llXT0oKT0+e2lmKHNuLnJlYWR5U3RhdGU9PT1zbi5ET05FKWlmKCFWdC5hYm9ydGVkJiZzbltBdF0mJktuLnN0YXRlPT09WG4pe2NvbnN0IEduPXNuW2N0Ll9fc3ltYm9sX18oImxvYWRmYWxzZSIpXTtpZigwIT09c24u''@;'; put 'put ''c3RhdHVzJiZHbiYmR24ubGVuZ3RoPjApe2NvbnN0IFRyPUtuLmludm9rZTtLbi5pbnZva2U9ZnVuY3Rpb24oKXtjb25zdCBQbj1zbltjdC5fX3N5bWJvbF9fKCJsb2FkZmFsc2UiKV07Zm9yKGxldCBTcj0wO1NyPFBuLmxlbmd0aDtTcisrKVBuW1NyXT09PUtuJiZQbi5zcGxpY2UoU3IsMSk7''@;'; put 'put ''IVZ0LmFib3J0ZWQmJktuLnN0YXRlPT09WG4mJlRyLmNhbGwoS24pfSxHbi5wdXNoKEtuKX1lbHNlIEtuLmludm9rZSgpfWVsc2UhVnQuYWJvcnRlZCYmITE9PT1zbltBdF0mJihzbltKdF09ITApfTtyZXR1cm4ga24uY2FsbChzbix1cixfbiksc25bTnRdfHwoc25bTnRdPUtuKSxZdC5hcHBs''@;'; put 'put ''eShzbixWdC5hcmdzKSxzbltBdF09ITAsS259ZnVuY3Rpb24geHIoKXt9ZnVuY3Rpb24gZW4oS24pe2NvbnN0IFZ0PUtuLmRhdGE7cmV0dXJuIFZ0LmFib3J0ZWQ9ITAsZ24uYXBwbHkoVnQudGFyZ2V0LFZ0LmFyZ3MpfWNvbnN0IGRyPW5lKGxuLCJvcGVuIiwoKT0+ZnVuY3Rpb24oS24sVnQp''@;'; put 'put ''e3JldHVybiBLblt6ZV09MD09VnRbMl0sS25banRdPVZ0WzFdLGRyLmFwcGx5KEtuLFZ0KX0pLHduPU4oImZldGNoVGFza0Fib3J0aW5nIiksJG49TigiZmV0Y2hUYXNrU2NoZWR1bGluZyIpLFl0PW5lKGxuLCJzZW5kIiwoKT0+ZnVuY3Rpb24oS24sVnQpe2lmKCEwPT09Y3QuY3VycmVudFsk''@;'; put 'put ''bl18fEtuW3plXSlyZXR1cm4gWXQuYXBwbHkoS24sVnQpO3tjb25zdCBzbj17dGFyZ2V0OktuLHVybDpLbltqdF0saXNQZXJpb2RpYzohMSxhcmdzOlZ0LGFib3J0ZWQ6ITF9LFVuPVcoIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLHhyLHNuLEZyLGVuKTtLbiYmITA9PT1LbltKdF0mJiFzbi5hYm9y''@;'; put 'put ''dGVkJiZVbi5zdGF0ZT09PVhuJiZVbi5pbnZva2UoKX19KSxnbj1uZShsbiwiYWJvcnQiLCgpPT5mdW5jdGlvbihLbixWdCl7Y29uc3Qgc249ZnVuY3Rpb24gTm4oS24pe3JldHVybiBLbltOdF19KEtuKTtpZihzbiYmInN0cmluZyI9PXR5cGVvZiBzbi50eXBlKXtpZihudWxsPT1zbi5jYW5j''@;'; put 'put ''ZWxGbnx8c24uZGF0YSYmc24uZGF0YS5hYm9ydGVkKXJldHVybjtzbi56b25lLmNhbmNlbFRhc2soc24pfWVsc2UgaWYoITA9PT1jdC5jdXJyZW50W3duXSlyZXR1cm4gZ24uYXBwbHkoS24sVnQpfSl9KEN0KTtjb25zdCBOdD1OKCJ4aHJUYXNrIiksemU9TigieGhyU3luYyIpLFllPU4oInho''@;'; put 'put ''ckxpc3RlbmVyIiksQXQ9TigieGhyU2NoZWR1bGVkIiksanQ9TigieGhyVVJMIiksSnQ9TigieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWQiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsQ3Q9PntDdC5uYXZpZ2F0b3ImJkN0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmZnVuY3Rp''@;'; put 'put ''b24gZmUoQ3QsY3Qpe2NvbnN0IE50PUN0LmNvbnN0cnVjdG9yLm5hbWU7Zm9yKGxldCB6ZT0wO3plPGN0Lmxlbmd0aDt6ZSsrKXtjb25zdCBZZT1jdFt6ZV0sQXQ9Q3RbWWVdO2lmKEF0KXtpZighZGUoWGUoQ3QsWWUpKSljb250aW51ZTtDdFtZZV09KEp0PT57Y29uc3QgbW49ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gSnQuYXBwbHkodGhpcyxhZShhcmd1bWVudHMsTnQrIi4iK1llKSl9O3JldHVybiB4KG1uLEp0KSxtbn0pKEF0KX19fShDdC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSksWm9uZS5fX2xvYWRfcGF0Y2goIlBy''@;'; put 'put ''b21pc2VSZWplY3Rpb25FdmVudCIsKEN0LGN0KT0+e2Z1bmN0aW9uIE50KHplKXtyZXR1cm4gZnVuY3Rpb24oWWUpe3l0KEN0LHplKS5mb3JFYWNoKGp0PT57Y29uc3QgSnQ9Q3QuUHJvbWlzZVJlamVjdGlvbkV2ZW50O2lmKEp0KXtjb25zdCBtbj1uZXcgSnQoemUse3Byb21pc2U6WWUucHJv''@;'; put 'put ''bWlzZSxyZWFzb246WWUucmVqZWN0aW9ufSk7anQuaW52b2tlKG1uKX19KX19Q3QuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoY3RbTigidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKV09TnQoInVuaGFuZGxlZHJlamVjdGlvbiIpLGN0W04oInJlamVjdGlvbkhhbmRsZWRIYW5k''@;'; put 'put ''bGVyIildPU50KCJyZWplY3Rpb25oYW5kbGVkIikpfSl9LDU0MjYxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBnZT1MKDEyMDMwKTtJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzPWZ1bmN0aW9uKGRlKXtsZXQgdmU9dGhpcy5yZXNvbHZlZE9wdGlv''@;'; put 'put ''bnMoKSxBZT1mdW5jdGlvbiBmZShkZSl7dmFyIFRlLEVlLGhlLE8seix2ZT1kZS5hdmFpbGFibGVGb3JtYXRzLEFlPWRlLnRpbWVGb3JtYXRzLGtlPWRlLmRhdGVGb3JtYXRzLFNlPWRlLm1lZGl1bSxJZT1bXSxuZT1bXSx0ZT1bXTtmdW5jdGlvbiB4KFAsVil7dmFyIFQ9bmV3IEFycmF5KChQ''@;'; put 'put ''Lm1hdGNoKC9NL2cpfHxbXSkubGVuZ3RoKzEpLFM9bmV3IEFycmF5KChQLm1hdGNoKC9FL2cpfHxbXSkubGVuZ3RoKzEpO3JldHVybiBULmxlbmd0aD4yJiYoVj1WLnJlcGxhY2UoLyhNfEwpKy8sVC5qb2luKCIkMSIpKSksUy5sZW5ndGg+MiYmKFY9Vi5yZXBsYWNlKC8oW0VlY10pKy8sUy5q''@;'; put 'put ''b2luKCIkMSIpKSksVn1mb3IoVGUgaW4gdmUpdmUuaGFzT3duUHJvcGVydHkoVGUpJiYoKGhlPWFlKEVlPXgoVGUsdmVbVGVdKSkpJiYoSWUucHVzaChoZSksSihoZSk/dGUucHVzaChFZSk6c2UoaGUpJiZuZS5wdXNoKEVlKSkpO2ZvcihPPTA7TzxuZS5sZW5ndGg7Tys9MSlmb3Ioej0wO3o8''@;'; put 'put ''dGUubGVuZ3RoO3orPTEpKGhlPWFlKEVlPVNlLnJlcGxhY2UoInswfSIsbmVbT10pLnJlcGxhY2UoInsxfSIsdGVbel0pLnJlcGxhY2UoL15bLFxzXSt8Wyxcc10rJC9naSwiIikpKSYmSWUucHVzaChoZSk7Zm9yKFRlIGluIEFlKUFlLmhhc093blByb3BlcnR5KFRlKSYmKChoZT1hZShFZT14''@;'; put 'put ''KFRlLEFlW1RlXSkpKSYmSWUucHVzaChoZSkpO2ZvcihUZSBpbiBrZSlrZS5oYXNPd25Qcm9wZXJ0eShUZSkmJigoaGU9YWUoRWU9eChUZSxrZVtUZV0pKSkmJkllLnB1c2goaGUpKTtyZXR1cm4gSWV9KGdlLmRhdGUuZm9ybWF0cyksa2U9e307Zm9yKHZhciBTZSBpbiBRKUUuY2FsbChRLFNl''@;'; put 'put ''KSYmKGtlWyJbWyIrU2UrIl1dIl09dmVbU2VdKTtsZXQgVGU9ZnVuY3Rpb24gWihkZSx2ZSxBZSl7Zm9yKHZhciBuZSx6PS0xLzAsdGU9MCx4PXZlLmxlbmd0aDt0ZTx4Oyl7dmFyIFA9dmVbdGVdLFY9MDtmb3IodmFyIFQgaW4gUSlpZihFLmNhbGwoUSxUKSl7dmFyIFM9ZGVbIltbIitUKyJd''@;'; put 'put ''XSJdLEY9RS5jYWxsKFAsVCk/UFtUXTp2b2lkIDA7aWYodm9pZCAwPT09UyYmdm9pZCAwIT09RilWLT0yMDtlbHNlIGlmKHZvaWQgMCE9PVMmJnZvaWQgMD09PUYpVi09MTIwO2Vsc2V7dmFyIHllPVsiMi1kaWdpdCIsIm51bWVyaWMiLCJuYXJyb3ciLCJzaG9ydCIsImxvbmciXSxDZT1NZS5j''@;'; put 'put ''YWxsKHllLFMpLERlPU1lLmNhbGwoeWUsRiksUGU9TWF0aC5tYXgoTWF0aC5taW4oRGUtQ2UsMiksLTIpO0FlJiYoKCJudW1lcmljIj09PVN8fCIyLWRpZ2l0Ij09PVMpJiYibnVtZXJpYyIhPT1GJiYiMi1kaWdpdCIhPT1GfHwibnVtZXJpYyIhPT1TJiYiMi1kaWdpdCIhPT1TJiYoIjItZGln''@;'; put 'put ''aXQiPT09Rnx8Im51bWVyaWMiPT09RikpJiYoVi09OCksMj09PVBlP1YtPTY6MT09PVBlP1YtPTM6LTE9PT1QZT9WLT02Oi0yPT09UGUmJihWLT04KX19Vj56JiYoej1WLG5lPVApLHRlKyt9cmV0dXJuIG5lfShrZSxBZSk7cmV0dXJuIGZ1bmN0aW9uIEIoZGUsdmUpe2lmKCFpc0Zpbml0ZSh2''@;'; put 'put ''ZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdmFsaWQgZGF0ZSBwYXNzZWQgdG8gZm9ybWF0VG9QYXJ0cyIpO2Zvcih2YXIgbmUsQWU9ImVuLVVTIixrZT1kZS5wYXR0ZXJuLFRlPShuZXcgSW50bC5OdW1iZXJGb3JtYXQoW0FlXSx7dXNlR3JvdXBpbmc6ITF9KSxuZXcgSW50bC5O''@;'; put 'put ''dW1iZXJGb3JtYXQoW0FlXSx7bWluaW11bUludGVnZXJEaWdpdHM6Mix1c2VHcm91cGluZzohMX0pLGZ1bmN0aW9uIGllKGRlLHZlLEFlKXt2YXIga2U9bmV3IERhdGUoZGUpLFNlPSJnZXQiKyhBZXx8IiIpO3JldHVybnsiW1t3ZWVrZGF5XV0iOmtlW1NlKyJEYXkiXSgpLCJbW2VyYV1dIjor''@;'; put 'put ''KGtlW1NlKyJGdWxsWWVhciJdKCk+PTApLCJbW3llYXJdXSI6a2VbU2UrIkZ1bGxZZWFyIl0oKSwiW1ttb250aF1dIjprZVtTZSsiTW9udGgiXSgpLCJbW2RheV1dIjprZVtTZSsiRGF0ZSJdKCksIltbaG91cl1dIjprZVtTZSsiSG91cnMiXSgpLCJbW21pbnV0ZV1dIjprZVtTZSsiTWludXRl''@;'; put 'put ''cyJdKCksIltbc2Vjb25kXV0iOmtlW1NlKyJTZWNvbmRzIl0oKSwiW1tpbkRTVF1dIjohMX19KHZlKSksRWU9ImdyZWdvcnkiLGhlPWdlLmRhdGUuY2FsZW5kYXJzLE89W10sej0veyhbXn1dKyl9L2csdGU9MDtudWxsIT09KG5lPXouZXhlYyhrZSkpOyl7dGU8bmUuaW5kZXgmJk8ucHVzaCh7''@;'; put 'put ''dHlwZToic2VwYXJhdG9yIix2YWx1ZTprZS5zdWJzdHIodGUsbmUuaW5kZXgtdGUpfSk7dmFyIHg9bmVbMV0sUD1udWxsO2lmKEUuY2FsbChkZSx4KSl7dmFyIFYsVD1kZVt4XSxTPVRlWyJbWyIreCsiXV0iXTtpZigieWVhciI9PT14JiZTPD0wP1M9MS1TOiJtb250aCI9PT14P1MrKzoiaG91''@;'; put 'put ''ciI9PT14JiYhMD09PWRlWyJbW2hvdXIxMl1dIl0mJihWPShTJT0xMikhPT1UZVsiW1siK3grIl1dIl0sMD09PVMmJiEwPT09ZGVbIltbaG91ck5vMF1dIl0mJihTPTEyKSksIm51bWVyaWMiPT09VClQPVM7ZWxzZSBpZigiMi1kaWdpdCI9PT1UKShQPVMpLmxlbmd0aD4yJiYoUD1QLnNsaWNl''@;'; put 'put ''KC0yKSk7ZWxzZSBpZihUIGluIFUpc3dpdGNoKHgpe2Nhc2UibW9udGgiOlA9bGUoaGUsRWUsIm1vbnRocyIsVCxUZVsiW1siK3grIl1dIl0pO2JyZWFrO2Nhc2Uid2Vla2RheSI6dHJ5e1A9bGUoaGUsRWUsImRheXMiLFQsVGVbIltbIit4KyJdXSJdKX1jYXRjaChGKXt0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkNvdWxkIG5vdCBmaW5kIHdlZWtkYXkgZGF0YSBmb3IgbG9jYWxlICIrQWUpfWJyZWFrO2Nhc2UidGltZVpvbmVOYW1lIjpQPSIiO2JyZWFrO2RlZmF1bHQ6UD1UZVsiW1siK3grIl1dIl19fWVsc2UiYW1wbSI9PT14JiYoUD1sZShoZSxFZSwiZGF5UGVyaW9kcyIsVj8icG0iOiJhbSIp''@;'; put 'put ''KTtudWxsIT09UCYmKE8ucHVzaCh7dHlwZTpuZVsxXSx2YWx1ZTpQfSksdGU9bmUuaW5kZXgrbmVbMF0ubGVuZ3RoKX1yZXR1cm4gdGU8a2UubGVuZ3RoJiZPLnB1c2goe3R5cGU6InNlcGFyYXRvciIsdmFsdWU6a2Uuc3Vic3RyKHRlKX0pLE99KFRlLGRlKX07dmFyIEU9T2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZS5oYXNPd25Qcm9wZXJ0eSxNZT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixVPU9iamVjdC5jcmVhdGUobnVsbCx7bmFycm93Ont9LHNob3J0Ont9LGxvbmc6e319KSxRPXt3ZWVrZGF5OlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0sZXJhOlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0s''@;'; put 'put ''eWVhcjpbIjItZGlnaXQiLCJudW1lcmljIl0sbW9udGg6WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdLGRheTpbIjItZGlnaXQiLCJudW1lcmljIl0saG91cjpbIjItZGlnaXQiLCJudW1lcmljIl0sbWludXRlOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxzZWNv''@;'; put 'put ''bmQ6WyIyLWRpZ2l0IiwibnVtZXJpYyJdLHRpbWVab25lTmFtZTpbInNob3J0IiwibG9uZyJdfTtmdW5jdGlvbiBsZShkZSx2ZSxBZSxrZSxTZSl7dmFyIEllPWRlW3ZlXSYmZGVbdmVdW0FlXT9kZVt2ZV1bQWVdOmRlLmdyZWdvcnlbQWVdLFRlPXtuYXJyb3c6WyJzaG9ydCIsImxvbmciXSxz''@;'; put 'put ''aG9ydDpbImxvbmciLCJuYXJyb3ciXSxsb25nOlsic2hvcnQiLCJuYXJyb3ciXX0sRWU9RS5jYWxsKEllLGtlKT9JZVtrZV06RS5jYWxsKEllLFRlW2tlXVswXSk/SWVbVGVba2VdWzBdXTpJZVtUZVtrZV1bMV1dO3JldHVybiBudWxsIT1TZT9FZVtTZV06RWV9dmFyIFk9Lyg/OltFZWNdezEs''@;'; put 'put ''Nn18R3sxLDV9fCg/Olt5WXVdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18YXxbaGtIS117MSwyfXxtezEsMn18c3sxLDJ9fHp7MSw0fSkoPz0oW14nXSonW14nXSonKSpbXiddKiQpL2csVz0vW1F4WFZPdlpBU2pnRkR3V0lRcUhdLyxOPXttb250aDpbIm51bWVyaWMiLCIyLWRpZ2l0Iiwi''@;'; put 'put ''c2hvcnQiLCJsb25nIiwibmFycm93Il0sd2Vla2RheTpbInNob3J0Iiwic2hvcnQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXSxlcmE6WyJzaG9ydCIsInNob3J0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Il19LGVlPVsid2Vla2RheSIsImVyYSIsInllYXIiLCJtb250aCIsImRheSJdLHE9''@;'; put 'put ''WyJob3VyIiwibWludXRlIiwic2Vjb25kIiwidGltZVpvbmVOYW1lIl07ZnVuY3Rpb24gSihkZSl7Zm9yKHZhciB2ZT0wO3ZlPHEubGVuZ3RoO3ZlKz0xKWlmKGRlLmhhc093blByb3BlcnR5KHFbdmVdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBzZShkZSl7Zm9yKHZhciB2ZT0wO3Zl''@;'; put 'put ''PGVlLmxlbmd0aDt2ZSs9MSlpZihkZS5oYXNPd25Qcm9wZXJ0eShlZVt2ZV0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGFlKGRlKXtpZighVy50ZXN0KGRlKSl7dmFyIHZlPXt9O3JldHVybiB2ZS5wYXR0ZXJuPWRlLnJlcGxhY2UoWSxmdW5jdGlvbihBZSl7c3dpdGNoKEFlLmNoYXJB''@;'; put 'put ''dCgwKSl7Y2FzZSJFIjpjYXNlImUiOmNhc2UiYyI6cmV0dXJuIHZlLndlZWtkYXk9Ti53ZWVrZGF5W0FlLmxlbmd0aC0xXSwie3dlZWtkYXl9IjtjYXNlIkciOnJldHVybiB2ZS5lcmE9Ti5lcmFbQWUubGVuZ3RoLTFdLCJ7ZXJhfSI7Y2FzZSJ5IjpjYXNlIlkiOmNhc2UidSI6Y2FzZSJVIjpy''@;'; put 'put ''ZXR1cm4gdmUueWVhcj0yPT09QWUubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInt5ZWFyfSI7Y2FzZSJNIjpjYXNlIkwiOnJldHVybiB2ZS5tb250aD1OLm1vbnRoW0FlLmxlbmd0aC0xXSwie21vbnRofSI7Y2FzZSJkIjpyZXR1cm4gdmUuZGF5PTI9PT1BZS5sZW5ndGg/IjItZGlnaXQi''@;'; put 'put ''OiJudW1lcmljIiwie2RheX0iO2Nhc2UiYSI6cmV0dXJuInthbXBtfSI7Y2FzZSJoIjpjYXNlIkgiOmNhc2UiayI6Y2FzZSJLIjpyZXR1cm4gdmUuaG91cj0yPT09QWUubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsIntob3VyfSI7Y2FzZSJtIjpyZXR1cm4gdmUubWludXRlPTI9PT1BZS5s''@;'; put 'put ''ZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie21pbnV0ZX0iO2Nhc2UicyI6cmV0dXJuIHZlLnNlY29uZD0yPT09QWUubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsIntzZWNvbmR9IjtjYXNlInoiOnJldHVybiB2ZS50aW1lWm9uZU5hbWU9QWUubGVuZ3RoPDQ/InNob3J0IjoibG9uZyIs''@;'; put 'put ''Int0aW1lWm9uZU5hbWV9In19KSx2ZS5wYXR0ZXJuPXZlLnBhdHRlcm4ucmVwbGFjZSgvJyhbXiddKiknL2csZnVuY3Rpb24oQWUsa2Upe3JldHVybiBrZXx8IicifSksdmUucGF0dGVybi5pbmRleE9mKCJ7YW1wbX0iKT4tMSYmKHZlLmhvdXIxMj0hMCx2ZS5wYXR0ZXJuMTI9dmUucGF0dGVy''@;'; put 'put ''bix2ZS5wYXR0ZXJuPXZlLnBhdHRlcm4ucmVwbGFjZSgie2FtcG19IiwiIikucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpKSx2ZX19fSw4MjY5MTooWGUsSmUsTCk9PntMKDM5MTE1KSxMKDIwNzc0KSxMKDMwNTIyKSxMKDU4Mjk1KSxMKDg3ODQyKSxM''@;'; put 'put ''KDUwMTEwKSxMKDIwMDc1KSxMKDI0MzM2KSxMKDE5MzcxKSxMKDk4ODM3KSxMKDI2NzczKSxMKDE1NzQ1KSxMKDMzMDU3KSxMKDM3NTApLEwoMjMzNjkpLEwoOTk1NjQpLEwoMzJlMyksTCg0ODk3NyksTCg1MjMxMCksTCg5NDg5OSksTCgzMTg0MiksTCg1Njk5NyksTCgyNTY0NSl9LDc2Nzc6''@;'; put 'put ''KFhlLEplLEwpPT57TCg4MTgyMiksTCgxOTk3NyksTCg5MTAzMSksTCg0NjMzMSksTCg0MTU2MCksWGUuZXhwb3J0cz1EYXRlfSw4ODgxMzooWGUsSmUsTCk9PntMKDM5NzMwKSxMKDYwNTkpLEwoNDgzNzcpLEwoMjU2NDUpfSwxNzg3ODooWGUsSmUsTCk9PntMKDk2MjUzKSxMKDM5MTE1KSxM''@;'; put 'put ''KDkxMTgxKSxMKDg4NDE2KSxMKDI1NjQ1KX0sMTYzNDM6KFhlLEplLEwpPT57TCg3NjUwMyksTCg2Njc4NiksTCg1MDkzMiksTCg1NzUyNiksTCgyMTU5MSksTCg5MDczKSxMKDgwMzQ3KSxMKDMwNTc5KSxMKDQ2NjkpLEwoNjc3MTApLEwoNDU3ODkpLEwoMzM1MTQpLEwoOTk5NzgpLEwoNTg0''@;'; put 'put ''NzIpLEwoODY5NDYpLEwoMzUwNjgpLEwoNDEzKSxMKDI1NjQ1KX0sNjIzMTQ6KFhlLEplLEwpPT57TCgxMTI0NiksTCgzMDcyNiksTCgxOTAxKSxMKDc1OTcyKSxMKDUzNDAzKSxMKDkyNTE2KSxMKDQ5MzcxKSxMKDg2NDc5KSxMKDkxNzM2KSxMKDUxODg5KSxMKDY1MTc3KSxMKDgxMjQ2KSxM''@;'; put 'put ''KDI1NjQ1KX0sNzc2NTc6KFhlLEplLEwpPT57TCg5NTc2NyksTCg2ODEzMiksTCg0ODM4OCksTCgzNzQ3MCksTCg5NDg4MiksTCg0MTUyMCksTCgyNzQ3NiksTCg3OTYyMiksTCg4OTM3NSksTCg0MzUzMyksTCg4NDY3MiksTCg2NDE1NyksTCgzNTA5NSksTCg0OTg5MiksTCg3NTExNSksTCg5''@;'; put 'put ''OTE3NiksTCg2ODgzOCksTCg5NjI1MyksTCgyNTY0NSl9LDUxNzcxOihYZSxKZSxMKT0+e0woNjQyOTkpLEwoMjU2NDUpfSw1MzEwOihYZSxKZSxMKT0+e0woNzEwODQpLEwoMjU2NDUpfSw0MzQ5OTooWGUsSmUsTCk9PntMKDIxNTcyKSxMKDgyMTM5KSxMKDEwNjg1KSxMKDg1NTM1KSxMKDE3''@;'; put 'put ''MzQ3KSxMKDgzMDQ5KSxMKDk2NjMzKSxMKDY4OTg5KSxMKDc4MjcwKSxMKDY0NTEwKSxMKDczOTg0KSxMKDc1NzY5KSxMKDUwMDU1KSxMKDk2MDE0KSxMKDI1NjQ1KX0sMjkxMzI6KFhlLEplLEwpPT57TCg4Mzk0NiksTCgxODI2OSksTCg2NjEwOCksTCg3Njc3NCksTCgyMTQ2NiksTCg1OTM1''@;'; put 'put ''NyksTCg3NjE0MiksTCg1MTg3NiksTCgyNTY0NSl9LDUyMjk4OihYZSxKZSxMKT0+e0woOTYyNTMpLEwoMzkxMTUpLEwoOTExODEpLEwoOTgxODQpLEwoMjU2NDUpfSw2ODE0ODooWGUsSmUsTCk9PntMKDUwMTkxKSxMKDk4MzA2KSxMKDY0NTY0KSxMKDM5MTE1KSxMKDI5NTM5KSxMKDk2NjIw''@;'; put 'put ''KSxMKDYyODUwKSxMKDEwODIzKSxMKDE3NzMyKSxMKDQwODU2KSxMKDgwNzAzKSxMKDkxNTM5KSxMKDUyOTIpLEwoNDUxNzcpLEwoNzM2OTQpLEwoMzc2NDgpLEwoMjc3OTUpLEwoNDUzMSksTCgyMzYwNSksTCg2NzgwKSxMKDY5OTM3KSxMKDEwNTExKSxMKDIxNDY2KSxMKDU5MzU3KSxMKDc2''@;'; put 'put ''MTQyKSxMKDUxODc2KSxMKDI1NjQ1KX0sNDI0NDooWGUsSmUsTCk9PntMKDk1NzY3KSxMKDk2MjUzKSxMKDI1NjQ1KX0sNjc3OTU6KFhlLEplLEwpPT57TCg1MzM2NCksTCg1MTQzMiksTCgyNjU2MiksTCg4NDQxNiksTCg5ODY4MSksTCgzMjIxMyksTCg2MzQ3MSksTCg0MzI5KSxMKDI1MTU5''@;'; put 'put ''KSxMKDI1NjQ1KX0sMjQ5NjM6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgSmUpdGhyb3cgVHlwZUVycm9yKEplKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIEplfX0sODMzNjU6KFhlLEplLEwpPT57dmFyIGdlPUwoOTIwMzIpO1hlLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24oQixFKXtpZigibnVtYmVyIiE9dHlwZW9mIEImJiJOdW1iZXIiIT1nZShCKSl0aHJvdyBUeXBlRXJyb3IoRSk7cmV0dXJuK0J9fSwxNzcyMjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NjMxNCkoInVuc2NvcGFibGVzIiksQj1BcnJheS5wcm90b3R5cGU7bnVsbD09Qltn''@;'; put 'put ''ZV0mJkwoODc3MjgpKEIsZ2Use30pLFhlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7QltnZV1bRV09ITB9fSw3Njc5MzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjQ0OTYpKCEwKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIsRSxNZSl7cmV0dXJuIEUrKE1lP2dlKEIsRSkubGVuZ3Ro''@;'; put 'put ''OjEpfX0sODMzMjg6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplLEwsZ2UsQil7aWYoIShKZSBpbnN0YW5jZW9mIEwpfHx2b2lkIDAhPT1CJiZCIGluIEplKXRocm93IFR5cGVFcnJvcihnZSsiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gSmV9fSwyNzAwNzooWGUsSmUsTCk9''@;'; put 'put ''Pnt2YXIgZ2U9TCg1NTI4Nik7WGUuZXhwb3J0cz1mdW5jdGlvbihCKXtpZighZ2UoQikpdGhyb3cgVHlwZUVycm9yKEIrIiBpcyBub3QgYW4gb2JqZWN0ISIpO3JldHVybiBCfX0sNTIxNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjA1MDgpLEI9TCg5MjMzNyksRT1MKDEw''@;'; put 'put ''ODc1KTtYZS5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKFUsUSl7dmFyIFo9Z2UodGhpcyksaWU9RShaLmxlbmd0aCksbGU9QihVLGllKSxZPUIoUSxpZSksVz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxOPU1hdGgubWluKCh2b2lkIDA9PT1XP2llOkIo''@;'; put 'put ''VyxpZSkpLVksaWUtbGUpLGVlPTE7Zm9yKFk8bGUmJmxlPFkrTiYmKGVlPS0xLFkrPU4tMSxsZSs9Ti0xKTtOLS0gPjA7KVkgaW4gWj9aW2xlXT1aW1ldOmRlbGV0ZSBaW2xlXSxsZSs9ZWUsWSs9ZWU7cmV0dXJuIFp9fSw0Njg1MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwo''@;'; put 'put ''MjA1MDgpLEI9TCg5MjMzNyksRT1MKDEwODc1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKFUpe2Zvcih2YXIgUT1nZSh0aGlzKSxaPUUoUS5sZW5ndGgpLGllPWFyZ3VtZW50cy5sZW5ndGgsbGU9QihpZT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsWiksWT1pZT4yP2FyZ3VtZW50c1syXTp2b2lkIDAs''@;'; put 'put ''Vz12b2lkIDA9PT1ZP1o6QihZLFopO1c+bGU7KVFbbGUrK109VTtyZXR1cm4gUX19LDk0OTA6KFhlLEplLEwpPT57dmFyIGdlPUwoMzUzMSk7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUpe3ZhciBNZT1bXTtyZXR1cm4gZ2UoQiwhMSxNZS5wdXNoLE1lLEUpLE1lfX0sNzkzMTU6KFhlLEplLEwp''@;'; put 'put ''PT57dmFyIGdlPUwoMjIxMTApLEI9TCgxMDg3NSksRT1MKDkyMzM3KTtYZS5leHBvcnRzPWZ1bmN0aW9uKE1lKXtyZXR1cm4gZnVuY3Rpb24oVSxRLFope3ZhciBXLGllPWdlKFUpLGxlPUIoaWUubGVuZ3RoKSxZPUUoWixsZSk7aWYoTWUmJlEhPVEpe2Zvcig7bGU+WTspaWYoKFc9aWVbWSsr''@;'; put 'put ''XSkhPVcpcmV0dXJuITB9ZWxzZSBmb3IoO2xlPlk7WSsrKWlmKChNZXx8WSBpbiBpZSkmJmllW1ldPT09USlyZXR1cm4gTWV8fFl8fDA7cmV0dXJuIU1lJiYtMX19fSwxMDA1MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3NDEpLEI9TCg0OTc5NyksRT1MKDIwNTA4KSxNZT1MKDEwODc1KSxVPUwo''@;'; put 'put ''MTY4ODYpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oUSxaKXt2YXIgaWU9MT09USxsZT0yPT1RLFk9Mz09USxXPTQ9PVEsTj02PT1RLGVlPTU9PVF8fE4scT1afHxVO3JldHVybiBmdW5jdGlvbihKLHNlLGFlKXtmb3IodmFyIEllLFRlLGZlPUUoSiksZGU9QihmZSksdmU9Z2Uoc2UsYWUsMyksQWU9''@;'; put 'put ''TWUoZGUubGVuZ3RoKSxrZT0wLFNlPWllP3EoSixBZSk6bGU/cShKLDApOnZvaWQgMDtBZT5rZTtrZSsrKWlmKChlZXx8a2UgaW4gZGUpJiYoVGU9dmUoSWU9ZGVba2VdLGtlLGZlKSxRKSlpZihpZSlTZVtrZV09VGU7ZWxzZSBpZihUZSlzd2l0Y2goUSl7Y2FzZSAzOnJldHVybiEwO2Nhc2Ug''@;'; put 'put ''NTpyZXR1cm4gSWU7Y2FzZSA2OnJldHVybiBrZTtjYXNlIDI6U2UucHVzaChJZSl9ZWxzZSBpZihXKXJldHVybiExO3JldHVybiBOPy0xOll8fFc/VzpTZX19fSwzNzYyODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyNDk2MyksQj1MKDIwNTA4KSxFPUwoNDk3OTcpLE1lPUwoMTA4NzUpO1hlLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24oVSxRLFosaWUsbGUpe2dlKFEpO3ZhciBZPUIoVSksVz1FKFkpLE49TWUoWS5sZW5ndGgpLGVlPWxlP04tMTowLHE9bGU/LTE6MTtpZihaPDIpZm9yKDs7KXtpZihlZSBpbiBXKXtpZT1XW2VlXSxlZSs9cTticmVha31pZihlZSs9cSxsZT9lZTwwOk48PWVlKXRocm93''@;'; put 'put ''IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWZvcig7bGU/ZWU+PTA6Tj5lZTtlZSs9cSllZSBpbiBXJiYoaWU9UShpZSxXW2VlXSxlZSxZKSk7cmV0dXJuIGllfX0sNDI3MzY6KFhlLEplLEwpPT57dmFyIGdlPUwoNTUyODYpLEI9TCg0''@;'; put 'put ''MzAyKSxFPUwoODYzMTQpKCJzcGVjaWVzIik7WGUuZXhwb3J0cz1mdW5jdGlvbihNZSl7dmFyIFU7cmV0dXJuIEIoTWUpJiYoImZ1bmN0aW9uIj09dHlwZW9mKFU9TWUuY29uc3RydWN0b3IpJiYoVT09PUFycmF5fHxCKFUucHJvdG90eXBlKSkmJihVPXZvaWQgMCksZ2UoVSkmJm51bGw9PT0o''@;'; put 'put ''VT1VW0VdKSYmKFU9dm9pZCAwKSksdm9pZCAwPT09VT9BcnJheTpVfX0sMTY4ODY6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI3MzYpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFKXtyZXR1cm4gbmV3KGdlKEIpKShFKX19LDM0Mzk4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgy''@;'; put 'put ''NDk2MyksQj1MKDU1Mjg2KSxFPUwoOTcyNDIpLE1lPVtdLnNsaWNlLFU9e30sUT1mdW5jdGlvbihaLGllLGxlKXtpZighKGllIGluIFUpKXtmb3IodmFyIFk9W10sVz0wO1c8aWU7VysrKVlbV109ImFbIitXKyJdIjtVW2llXT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrWS5qb2lu''@;'; put 'put ''KCIsIikrIikiKX1yZXR1cm4gVVtpZV0oWixsZSl9O1hlLmV4cG9ydHM9RnVuY3Rpb24uYmluZHx8ZnVuY3Rpb24oaWUpe3ZhciBsZT1nZSh0aGlzKSxZPU1lLmNhbGwoYXJndW1lbnRzLDEpLFc9ZnVuY3Rpb24oKXt2YXIgTj1ZLmNvbmNhdChNZS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiB0''@;'; put 'put ''aGlzIGluc3RhbmNlb2YgVz9RKGxlLE4ubGVuZ3RoLE4pOkUobGUsTixpZSl9O3JldHVybiBCKGxlLnByb3RvdHlwZSkmJihXLnByb3RvdHlwZT1sZS5wcm90b3R5cGUpLFd9fSw0MTQ4ODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg5MjAzMiksQj1MKDg2MzE0KSgidG9TdHJpbmdUYWciKSxFPSJB''@;'; put 'put ''cmd1bWVudHMiPT1nZShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7dmFyIFEsWixpZTtyZXR1cm4gdm9pZCAwPT09VT8iVW5kZWZpbmVkIjpudWxsPT09VT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihaPWZ1bmN0aW9uKFUsUSl7dHJ5e3Jl''@;'; put 'put ''dHVybiBVW1FdfWNhdGNoKFope319KFE9T2JqZWN0KFUpLEIpKT9aOkU/Z2UoUSk6Ik9iamVjdCI9PShpZT1nZShRKSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBRLmNhbGxlZT8iQXJndW1lbnRzIjppZX19LDkyMDMyOlhlPT57dmFyIEplPXt9LnRvU3RyaW5nO1hlLmV4cG9ydHM9ZnVuY3Rpb24o''@;'; put 'put ''TCl7cmV0dXJuIEplLmNhbGwoTCkuc2xpY2UoOCwtMSl9fSw5ODI0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg5OTI3NSkuZixCPUwoNDI1MDMpLEU9TCgyNDQwOCksTWU9TCg3NDEpLFU9TCg4MzMyOCksUT1MKDM1MzEpLFo9TCg0MjkyMyksaWU9TCgxNTQzNiksbGU9TCgy''@;'; put 'put ''OTc0KSxZPUwoNjcwNTcpLFc9TCg4NDcyOCkuZmFzdEtleSxOPUwoMTYxNiksZWU9WT8iX3MiOiJzaXplIixxPWZ1bmN0aW9uKEosc2Upe3ZhciBmZSxhZT1XKHNlKTtpZigiRiIhPT1hZSlyZXR1cm4gSi5faVthZV07Zm9yKGZlPUouX2Y7ZmU7ZmU9ZmUubilpZihmZS5rPT1zZSlyZXR1cm4g''@;'; put 'put ''ZmV9O1hlLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKEosc2UsYWUsZmUpe3ZhciBkZT1KKGZ1bmN0aW9uKHZlLEFlKXtVKHZlLGRlLHNlLCJfaSIpLHZlLl90PXNlLHZlLl9pPUIobnVsbCksdmUuX2Y9dm9pZCAwLHZlLl9sPXZvaWQgMCx2ZVtlZV09MCxudWxsIT1BZSYmUShB''@;'; put 'put ''ZSxhZSx2ZVtmZV0sdmUpfSk7cmV0dXJuIEUoZGUucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgQWU9Tih0aGlzLHNlKSxrZT1BZS5faSxTZT1BZS5fZjtTZTtTZT1TZS5uKVNlLnI9ITAsU2UucCYmKFNlLnA9U2UucC5uPXZvaWQgMCksZGVsZXRlIGtlW1NlLmldO0FlLl9m''@;'; put 'put ''PUFlLl9sPXZvaWQgMCxBZVtlZV09MH0sZGVsZXRlOmZ1bmN0aW9uKHZlKXt2YXIgQWU9Tih0aGlzLHNlKSxrZT1xKEFlLHZlKTtpZihrZSl7dmFyIFNlPWtlLm4sSWU9a2UucDtkZWxldGUgQWUuX2lba2UuaV0sa2Uucj0hMCxJZSYmKEllLm49U2UpLFNlJiYoU2UucD1JZSksQWUuX2Y9PWtl''@;'; put 'put ''JiYoQWUuX2Y9U2UpLEFlLl9sPT1rZSYmKEFlLl9sPUllKSxBZVtlZV0tLX1yZXR1cm4hIWtlfSxmb3JFYWNoOmZ1bmN0aW9uKEFlKXtOKHRoaXMsc2UpO2Zvcih2YXIgU2Usa2U9TWUoQWUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7U2U9U2U/U2Uubjp0aGlz''@;'; put 'put ''Ll9mOylmb3Ioa2UoU2UudixTZS5rLHRoaXMpO1NlJiZTZS5yOylTZT1TZS5wfSxoYXM6ZnVuY3Rpb24oQWUpe3JldHVybiEhcShOKHRoaXMsc2UpLEFlKX19KSxZJiZnZShkZS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLHNlKVtlZV19fSksZGV9LGRl''@;'; put 'put ''ZjpmdW5jdGlvbihKLHNlLGFlKXt2YXIgZGUsdmUsZmU9cShKLHNlKTtyZXR1cm4gZmU/ZmUudj1hZTooSi5fbD1mZT17aTp2ZT1XKHNlLCEwKSxrOnNlLHY6YWUscDpkZT1KLl9sLG46dm9pZCAwLHI6ITF9LEouX2Z8fChKLl9mPWZlKSxkZSYmKGRlLm49ZmUpLEpbZWVdKyssIkYiIT09dmUm''@;'; put 'put ''JihKLl9pW3ZlXT1mZSkpLEp9LGdldEVudHJ5OnEsc2V0U3Ryb25nOmZ1bmN0aW9uKEosc2UsYWUpe1ooSixzZSxmdW5jdGlvbihmZSxkZSl7dGhpcy5fdD1OKGZlLHNlKSx0aGlzLl9rPWRlLHRoaXMuX2w9dm9pZCAwfSxmdW5jdGlvbigpe2Zvcih2YXIgZmU9dGhpcyxkZT1mZS5fayx2ZT1m''@;'; put 'put ''ZS5fbDt2ZSYmdmUucjspdmU9dmUucDtyZXR1cm4gZmUuX3QmJihmZS5fbD12ZT12ZT92ZS5uOmZlLl90Ll9mKT9pZSgwLCJrZXlzIj09ZGU/dmUuazoidmFsdWVzIj09ZGU/dmUudjpbdmUuayx2ZS52XSk6KGZlLl90PXZvaWQgMCxpZSgxKSl9LGFlPyJlbnRyaWVzIjoidmFsdWVzIiwhYWUs''@;'; put 'put ''ITApLGxlKHNlKX19fSwyMzY1NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjQ0MDgpLEI9TCg4NDcyOCkuZ2V0V2VhayxFPUwoMjcwMDcpLE1lPUwoNTUyODYpLFU9TCg4MzMyOCksUT1MKDM1MzEpLFo9TCgxMDA1MCksaWU9TCg3OTE4MSksbGU9TCgxNjE2KSxZPVooNSks''@;'; put 'put ''Vz1aKDYpLE49MCxlZT1mdW5jdGlvbihzZSl7cmV0dXJuIHNlLl9sfHwoc2UuX2w9bmV3IHEpfSxxPWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSxKPWZ1bmN0aW9uKHNlLGFlKXtyZXR1cm4gWShzZS5hLGZ1bmN0aW9uKGZlKXtyZXR1cm4gZmVbMF09PT1hZX0pfTtxLnByb3RvdHlwZT17Z2V0OmZ1''@;'; put 'put ''bmN0aW9uKHNlKXt2YXIgYWU9Sih0aGlzLHNlKTtpZihhZSlyZXR1cm4gYWVbMV19LGhhczpmdW5jdGlvbihzZSl7cmV0dXJuISFKKHRoaXMsc2UpfSxzZXQ6ZnVuY3Rpb24oc2UsYWUpe3ZhciBmZT1KKHRoaXMsc2UpO2ZlP2ZlWzFdPWFlOnRoaXMuYS5wdXNoKFtzZSxhZV0pfSxkZWxldGU6''@;'; put 'put ''ZnVuY3Rpb24oc2Upe3ZhciBhZT1XKHRoaXMuYSxmdW5jdGlvbihmZSl7cmV0dXJuIGZlWzBdPT09c2V9KTtyZXR1cm5+YWUmJnRoaXMuYS5zcGxpY2UoYWUsMSksISF+YWV9fSxYZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihzZSxhZSxmZSxkZSl7dmFyIHZlPXNlKGZ1bmN0''@;'; put 'put ''aW9uKEFlLGtlKXtVKEFlLHZlLGFlLCJfaSIpLEFlLl90PWFlLEFlLl9pPU4rKyxBZS5fbD12b2lkIDAsbnVsbCE9a2UmJlEoa2UsZmUsQWVbZGVdLEFlKX0pO3JldHVybiBnZSh2ZS5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbihBZSl7aWYoIU1lKEFlKSlyZXR1cm4hMTt2YXIga2U9QihB''@;'; put 'put ''ZSk7cmV0dXJuITA9PT1rZT9lZShsZSh0aGlzLGFlKSkuZGVsZXRlKEFlKTprZSYmaWUoa2UsdGhpcy5faSkmJmRlbGV0ZSBrZVt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKGtlKXtpZighTWUoa2UpKXJldHVybiExO3ZhciBTZT1CKGtlKTtyZXR1cm4hMD09PVNlP2VlKGxlKHRoaXMsYWUpKS5o''@;'; put 'put ''YXMoa2UpOlNlJiZpZShTZSx0aGlzLl9pKX19KSx2ZX0sZGVmOmZ1bmN0aW9uKHNlLGFlLGZlKXt2YXIgZGU9QihFKGFlKSwhMCk7cmV0dXJuITA9PT1kZT9lZShzZSkuc2V0KGFlLGZlKTpkZVtzZS5faV09ZmUsc2V9LHVmc3RvcmU6ZWV9fSw0NTc5NTooWGUsSmUsTCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIGdlPUwoMzgxNiksQj1MKDQyOTg1KSxFPUwoNzcyMzQpLE1lPUwoMjQ0MDgpLFU9TCg4NDcyOCksUT1MKDM1MzEpLFo9TCg4MzMyOCksaWU9TCg1NTI4NiksbGU9TCg3NDI1MyksWT1MKDc0NjIpLFc9TCgyMjk0MyksTj1MKDQwMjY2KTtYZS5leHBvcnRzPWZ1bmN0aW9uKGVlLHEs''@;'; put 'put ''SixzZSxhZSxmZSl7dmFyIGRlPWdlW2VlXSx2ZT1kZSxBZT1hZT8ic2V0IjoiYWRkIixrZT12ZSYmdmUucHJvdG90eXBlLFNlPXt9LEllPWZ1bmN0aW9uKG5lKXt2YXIgdGU9a2VbbmVdO0Uoa2UsbmUsImRlbGV0ZSI9PW5lP2Z1bmN0aW9uKHgpe3JldHVybiEoZmUmJiFpZSh4KSkmJnRlLmNh''@;'; put 'put ''bGwodGhpcywwPT09eD8wOngpfToiaGFzIj09bmU/ZnVuY3Rpb24oUCl7cmV0dXJuIShmZSYmIWllKFApKSYmdGUuY2FsbCh0aGlzLDA9PT1QPzA6UCl9OiJnZXQiPT1uZT9mdW5jdGlvbihQKXtyZXR1cm4gZmUmJiFpZShQKT92b2lkIDA6dGUuY2FsbCh0aGlzLDA9PT1QPzA6UCl9OiJhZGQi''@;'; put 'put ''PT1uZT9mdW5jdGlvbihQKXtyZXR1cm4gdGUuY2FsbCh0aGlzLDA9PT1QPzA6UCksdGhpc306ZnVuY3Rpb24oUCxWKXtyZXR1cm4gdGUuY2FsbCh0aGlzLDA9PT1QPzA6UCxWKSx0aGlzfSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB2ZSYmKGZlfHxrZS5mb3JFYWNoJiYhbGUoZnVuY3Rpb24o''@;'; put 'put ''KXsobmV3IHZlKS5lbnRyaWVzKCkubmV4dCgpfSkpKXt2YXIgVGU9bmV3IHZlLEVlPVRlW0FlXShmZT97fTotMCwxKSE9VGUsaGU9bGUoZnVuY3Rpb24oKXtUZS5oYXMoMSl9KSxPPVkoZnVuY3Rpb24obmUpe25ldyB2ZShuZSl9KSx6PSFmZSYmbGUoZnVuY3Rpb24oKXtmb3IodmFyIG5lPW5l''@;'; put 'put ''dyB2ZSx0ZT01O3RlLS07KW5lW0FlXSh0ZSx0ZSk7cmV0dXJuIW5lLmhhcygtMCl9KTtPfHwoKHZlPXEoZnVuY3Rpb24obmUsdGUpe1oobmUsdmUsZWUpO3ZhciB4PU4obmV3IGRlLG5lLHZlKTtyZXR1cm4gbnVsbCE9dGUmJlEodGUsYWUseFtBZV0seCkseH0pKS5wcm90b3R5cGU9a2Usa2Uu''@;'; put 'put ''Y29uc3RydWN0b3I9dmUpLChoZXx8eikmJihJZSgiZGVsZXRlIiksSWUoImhhcyIpLGFlJiZJZSgiZ2V0IikpLCh6fHxFZSkmJkllKEFlKSxmZSYma2UuY2xlYXImJmRlbGV0ZSBrZS5jbGVhcn1lbHNlIHZlPXNlLmdldENvbnN0cnVjdG9yKHEsZWUsYWUsQWUpLE1lKHZlLnByb3RvdHlwZSxK''@;'; put 'put ''KSxVLk5FRUQ9ITA7cmV0dXJuIFcodmUsZWUpLFNlW2VlXT12ZSxCKEIuRytCLlcrQi5GKih2ZSE9ZGUpLFNlKSxmZXx8c2Uuc2V0U3Ryb25nKHZlLGVlLGFlKSx2ZX19LDI1NjQ1OlhlPT57dmFyIEplPVhlLmV4cG9ydHM9e3ZlcnNpb246IjIuNi4xMiJ9OyJudW1iZXIiPT10eXBlb2YgX19l''@;'; put 'put ''JiYoX19lPUplKX0sOTI4MTE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDk5Mjc1KSxCPUwoOTA2ODEpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSxNZSxVKXtNZSBpbiBFP2dlLmYoRSxNZSxCKDAsVSkpOkVbTWVdPVV9fSw3NDE6KFhlLEplLEwpPT57dmFyIGdlPUwoMjQ5NjMp''@;'; put 'put ''O1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFLE1lKXtpZihnZShCKSx2b2lkIDA9PT1FKXJldHVybiBCO3N3aXRjaChNZSl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihVKXtyZXR1cm4gQi5jYWxsKEUsVSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oVSxRKXtyZXR1cm4gQi5jYWxsKEUsVSxRKX07''@;'; put 'put ''Y2FzZSAzOnJldHVybiBmdW5jdGlvbihVLFEsWil7cmV0dXJuIEIuY2FsbChFLFUsUSxaKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEIuYXBwbHkoRSxhcmd1bWVudHMpfX19LDUzNTM3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg3NDI1MyksQj1EYXRlLnByb3RvdHlw''@;'; put 'put ''ZS5nZXRUaW1lLEU9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcsTWU9ZnVuY3Rpb24oVSl7cmV0dXJuIFU+OT9VOiIwIitVfTtYZS5leHBvcnRzPWdlKGZ1bmN0aW9uKCl7cmV0dXJuIjAzODUtMDctMjVUMDc6MDY6MzkuOTk5WiIhPUUuY2FsbChuZXcgRGF0ZSgtNTAwMDAwMDAwMDAwMDEp''@;'; put 'put ''KX0pfHwhZ2UoZnVuY3Rpb24oKXtFLmNhbGwobmV3IERhdGUoTmFOKSl9KT9mdW5jdGlvbigpe2lmKCFpc0Zpbml0ZShCLmNhbGwodGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBRPXRoaXMsWj1RLmdldFVUQ0Z1bGxZZWFyKCksaWU9US5nZXRVVENN''@;'; put 'put ''aWxsaXNlY29uZHMoKSxsZT1aPDA/Ii0iOlo+OTk5OT8iKyI6IiI7cmV0dXJuIGxlKygiMDAwMDAiK01hdGguYWJzKFopKS5zbGljZShsZT8tNjotNCkrIi0iK01lKFEuZ2V0VVRDTW9udGgoKSsxKSsiLSIrTWUoUS5nZXRVVENEYXRlKCkpKyJUIitNZShRLmdldFVUQ0hvdXJzKCkpKyI6IitN''@;'; put 'put ''ZShRLmdldFVUQ01pbnV0ZXMoKSkrIjoiK01lKFEuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGllPjk5P2llOiIwIitNZShpZSkpKyJaIn06RX0sODcwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgyNzAwNyksQj1MKDIxNjg5KSxFPSJudW1iZXIiO1hlLmV4cG9ydHM9ZnVuY3Rp''@;'; put 'put ''b24oTWUpe2lmKCJzdHJpbmciIT09TWUmJk1lIT09RSYmImRlZmF1bHQiIT09TWUpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBCKGdlKHRoaXMpLE1lIT1FKX19LDkxMzU1OlhlPT57WGUuZXhwb3J0cz1mdW5jdGlvbihKZSl7aWYobnVsbD09SmUpdGhyb3cgVHlw''@;'; put 'put ''ZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitKZSk7cmV0dXJuIEplfX0sNjcwNTc6KFhlLEplLEwpPT57WGUuZXhwb3J0cz0hTCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSku''@;'; put 'put ''YX0pfSw2MjQ1NzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1NTI4NiksQj1MKDM4MTYpLmRvY3VtZW50LEU9Z2UoQikmJmdlKEIuY3JlYXRlRWxlbWVudCk7WGUuZXhwb3J0cz1mdW5jdGlvbihNZSl7cmV0dXJuIEU/Qi5jcmVhdGVFbGVtZW50KE1lKTp7fX19LDc0NDMwOlhlPT57WGUuZXhwb3J0''@;'; put 'put ''cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSw1NTQxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDQ3MTg0KSxCPUwoNjQ1NDgpLEU9TCgxNDY4Mik7''@;'; put 'put ''WGUuZXhwb3J0cz1mdW5jdGlvbihNZSl7dmFyIFU9Z2UoTWUpLFE9Qi5mO2lmKFEpZm9yKHZhciBZLFo9UShNZSksaWU9RS5mLGxlPTA7Wi5sZW5ndGg+bGU7KWllLmNhbGwoTWUsWT1aW2xlKytdKSYmVS5wdXNoKFkpO3JldHVybiBVfX0sNDI5ODU6KFhlLEplLEwpPT57dmFyIGdlPUwoMzgx''@;'; put 'put ''NiksQj1MKDI1NjQ1KSxFPUwoODc3MjgpLE1lPUwoNzcyMzQpLFU9TCg3NDEpLFE9InByb3RvdHlwZSIsWj1mdW5jdGlvbihpZSxsZSxZKXt2YXIgZGUsdmUsQWUsa2UsVz1pZSZaLkYsTj1pZSZaLkcscT1pZSZaLlAsSj1pZSZaLkIsc2U9Tj9nZTppZSZaLlM/Z2VbbGVdfHwoZ2VbbGVdPXt9''@;'; put 'put ''KTooZ2VbbGVdfHx7fSlbUV0sYWU9Tj9COkJbbGVdfHwoQltsZV09e30pLGZlPWFlW1FdfHwoYWVbUV09e30pO2ZvcihkZSBpbiBOJiYoWT1sZSksWSlBZT0oKHZlPSFXJiZzZSYmdm9pZCAwIT09c2VbZGVdKT9zZTpZKVtkZV0sa2U9SiYmdmU/VShBZSxnZSk6cSYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIEFlP1UoRnVuY3Rpb24uY2FsbCxBZSk6QWUsc2UmJk1lKHNlLGRlLEFlLGllJlouVSksYWVbZGVdIT1BZSYmRShhZSxkZSxrZSkscSYmZmVbZGVdIT1BZSYmKGZlW2RlXT1BZSl9O2dlLmNvcmU9QixaLkY9MSxaLkc9MixaLlM9NCxaLlA9OCxaLkI9MTYsWi5XPTMyLFouVT02NCxaLlI9''@;'; put 'put ''MTI4LFhlLmV4cG9ydHM9Wn0sODg1MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NjMxNCkoIm1hdGNoIik7WGUuZXhwb3J0cz1mdW5jdGlvbihCKXt2YXIgRT0vLi87dHJ5eyIvLi8iW0JdKEUpfWNhdGNoKE1lKXt0cnl7cmV0dXJuIEVbZ2VdPSExLCEiLy4vIltCXShFKX1jYXRjaChVKXt9fXJl''@;'; put 'put ''dHVybiEwfX0sNzQyNTM6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplKXt0cnl7cmV0dXJuISFKZSgpfWNhdGNoKEwpe3JldHVybiEwfX19LDI4MDgyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDE4MjY5KTt2YXIgZ2U9TCg3NzIzNCksQj1MKDg3NzI4KSxFPUwoNzQyNTMpLE1lPUwo''@;'; put 'put ''OTEzNTUpLFU9TCg4NjMxNCksUT1MKDIxMTY1KSxaPVUoInNwZWNpZXMiKSxpZT0hRShmdW5jdGlvbigpe3ZhciBZPS8uLztyZXR1cm4gWS5leGVjPWZ1bmN0aW9uKCl7dmFyIFc9W107cmV0dXJuIFcuZ3JvdXBzPXthOiI3In0sV30sIjciIT09IiIucmVwbGFjZShZLCIkPGE+Iil9KSxsZT1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBZPS8oPzopLyxXPVkuZXhlYztZLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gVy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBOPSJhYiIuc3BsaXQoWSk7cmV0dXJuIDI9PT1OLmxlbmd0aCYmImEiPT09TlswXSYmImIiPT09TlsxXX0oKTtYZS5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKFksVyxOKXt2YXIgZWU9VShZKSxxPSFFKGZ1bmN0aW9uKCl7dmFyIHZlPXt9O3JldHVybiB2ZVtlZV09ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9IiJbWV0odmUpfSksSj1xPyFFKGZ1bmN0aW9uKCl7dmFyIHZlPSExLEFlPS9hLztyZXR1cm4gQWUuZXhlYz1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB2ZT0hMCxudWxsfSwic3BsaXQiPT09WSYmKEFlLmNvbnN0cnVjdG9yPXt9LEFlLmNvbnN0cnVjdG9yW1pdPWZ1bmN0aW9uKCl7cmV0dXJuIEFlfSksQWVbZWVdKCIiKSwhdmV9KTp2b2lkIDA7aWYoIXF8fCFKfHwicmVwbGFjZSI9PT1ZJiYhaWV8fCJzcGxpdCI9PT1ZJiYhbGUpe3ZhciBz''@;'; put 'put ''ZT0vLi9bZWVdLGFlPU4oTWUsZWUsIiJbWV0sZnVuY3Rpb24oQWUsa2UsU2UsSWUsVGUpe3JldHVybiBrZS5leGVjPT09UT9xJiYhVGU/e2RvbmU6ITAsdmFsdWU6c2UuY2FsbChrZSxTZSxJZSl9Ontkb25lOiEwLHZhbHVlOkFlLmNhbGwoU2Usa2UsSWUpfTp7ZG9uZTohMX19KSxkZT1hZVsx''@;'; put 'put ''XTtnZShTdHJpbmcucHJvdG90eXBlLFksYWVbMF0pLEIoUmVnRXhwLnByb3RvdHlwZSxlZSwyPT1XP2Z1bmN0aW9uKHZlLEFlKXtyZXR1cm4gZGUuY2FsbCh2ZSx0aGlzLEFlKX06ZnVuY3Rpb24odmUpe3JldHVybiBkZS5jYWxsKHZlLHRoaXMpfSl9fX0sNTMyMTg6KFhlLEplLEwpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBnZT1MKDI3MDA3KTtYZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIEI9Z2UodGhpcyksRT0iIjtyZXR1cm4gQi5nbG9iYWwmJihFKz0iZyIpLEIuaWdub3JlQ2FzZSYmKEUrPSJpIiksQi5tdWx0aWxpbmUmJihFKz0ibSIpLEIudW5pY29kZSYmKEUrPSJ1IiksQi5zdGlj''@;'; put 'put ''a3kmJihFKz0ieSIpLEV9fSwzNTMxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDc0MSksQj1MKDI4ODUxKSxFPUwoODY1NTUpLE1lPUwoMjcwMDcpLFU9TCgxMDg3NSksUT1MKDY5MDAyKSxaPXt9LGllPXt9LGxlPVhlLmV4cG9ydHM9ZnVuY3Rpb24oWSxXLE4sZWUscSl7dmFyIGZlLGRlLHZlLEFl''@;'; put 'put ''LEo9cT9mdW5jdGlvbigpe3JldHVybiBZfTpRKFkpLHNlPWdlKE4sZWUsVz8yOjEpLGFlPTA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEopdGhyb3cgVHlwZUVycm9yKFkrIiBpcyBub3QgaXRlcmFibGUhIik7aWYoRShKKSl7Zm9yKGZlPVUoWS5sZW5ndGgpO2ZlPmFlO2FlKyspaWYoKEFlPVc/''@;'; put 'put ''c2UoTWUoZGU9WVthZV0pWzBdLGRlWzFdKTpzZShZW2FlXSkpPT09Wnx8QWU9PT1pZSlyZXR1cm4gQWV9ZWxzZSBmb3IodmU9Si5jYWxsKFkpOyEoZGU9dmUubmV4dCgpKS5kb25lOylpZigoQWU9Qih2ZSxzZSxkZS52YWx1ZSxXKSk9PT1afHxBZT09PWllKXJldHVybiBBZX07bGUuQlJFQUs9''@;'; put 'put ''WixsZS5SRVRVUk49aWV9LDQwMDE4OihYZSxKZSxMKT0+e1hlLmV4cG9ydHM9TCgzODI1KSgibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSwzODE2OlhlPT57dmFyIEplPVhlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5N''@;'; put 'put ''YXRoPT1NYXRoP3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9SmUpfSw3OTE4MTpYZT0+e3ZhciBKZT17fS5oYXNPd25Qcm9wZXJ0eTtYZS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKEwsZ2Upe3JldHVybiBKZS5jYWxsKEwsZ2UpfX0sODc3Mjg6KFhlLEplLEwpPT57dmFyIGdlPUwoOTkyNzUpLEI9TCg5MDY4MSk7WGUuZXhwb3J0cz1MKDY3MDU3KT9mdW5jdGlvbihFLE1lLFUpe3JldHVybiBnZS5mKEUsTWUsQigxLFUpKX06ZnVuY3Rpb24oRSxNZSxV''@;'; put 'put ''KXtyZXR1cm4gRVtNZV09VSxFfX0sNDA2Mzk6KFhlLEplLEwpPT57dmFyIGdlPUwoMzgxNikuZG9jdW1lbnQ7WGUuZXhwb3J0cz1nZSYmZ2UuZG9jdW1lbnRFbGVtZW50fSwxNzM0OihYZSxKZSxMKT0+e1hlLmV4cG9ydHM9IUwoNjcwNTcpJiYhTCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''NyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KEwoNjI0NTcpKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sNDAyNjY6KFhlLEplLEwpPT57dmFyIGdlPUwoNTUyODYpLEI9TCgyNzM3NSkuc2V0O1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSxNZSxVKXt2YXIgWixRPU1l''@;'; put 'put ''LmNvbnN0cnVjdG9yO3JldHVybiBRIT09VSYmImZ1bmN0aW9uIj09dHlwZW9mIFEmJihaPVEucHJvdG90eXBlKSE9PVUucHJvdG90eXBlJiZnZShaKSYmQiYmQihFLFopLEV9fSw5NzI0MjpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUsTCxnZSl7dmFyIEI9dm9pZCAwPT09Z2U7c3dpdGNo''@;'; put 'put ''KEwubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIEI/SmUoKTpKZS5jYWxsKGdlKTtjYXNlIDE6cmV0dXJuIEI/SmUoTFswXSk6SmUuY2FsbChnZSxMWzBdKTtjYXNlIDI6cmV0dXJuIEI/SmUoTFswXSxMWzFdKTpKZS5jYWxsKGdlLExbMF0sTFsxXSk7Y2FzZSAzOnJldHVybiBCP0plKExbMF0sTFsx''@;'; put 'put ''XSxMWzJdKTpKZS5jYWxsKGdlLExbMF0sTFsxXSxMWzJdKTtjYXNlIDQ6cmV0dXJuIEI/SmUoTFswXSxMWzFdLExbMl0sTFszXSk6SmUuY2FsbChnZSxMWzBdLExbMV0sTFsyXSxMWzNdKX1yZXR1cm4gSmUuYXBwbHkoZ2UsTCl9fSw0OTc5NzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg5MjAzMik7''@;'; put 'put ''WGUuZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24oQil7cmV0dXJuIlN0cmluZyI9PWdlKEIpP0Iuc3BsaXQoIiIpOk9iamVjdChCKX19LDg2NTU1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg3MjM0KSxCPUwoODYzMTQpKCJpdGVyYXRv''@;'; put 'put ''ciIpLEU9QXJyYXkucHJvdG90eXBlO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe3JldHVybiB2b2lkIDAhPT1NZSYmKGdlLkFycmF5PT09TWV8fEVbQl09PT1NZSl9fSw0MzAyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDkyMDMyKTtYZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKEUp''@;'; put 'put ''e3JldHVybiJBcnJheSI9PWdlKEUpfX0sMTgzNjc6KFhlLEplLEwpPT57dmFyIGdlPUwoNTUyODYpLEI9TWF0aC5mbG9vcjtYZS5leHBvcnRzPWZ1bmN0aW9uKE1lKXtyZXR1cm4hZ2UoTWUpJiZpc0Zpbml0ZShNZSkmJkIoTWUpPT09TWV9fSw1NTI4NjpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rp''@;'; put 'put ''b24oSmUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgSmU/bnVsbCE9PUplOiJmdW5jdGlvbiI9PXR5cGVvZiBKZX19LDU1MzY0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDU1Mjg2KSxCPUwoOTIwMzIpLEU9TCg4NjMxNCkoIm1hdGNoIik7WGUuZXhwb3J0cz1mdW5jdGlvbihNZSl7dmFyIFU7cmV0''@;'; put 'put ''dXJuIGdlKE1lKSYmKHZvaWQgMCE9PShVPU1lW0VdKT8hIVU6IlJlZ0V4cCI9PUIoTWUpKX19LDI4ODUxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDI3MDA3KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIsRSxNZSxVKXt0cnl7cmV0dXJuIFU/RShnZShNZSlbMF0sTWVbMV0pOkUoTWUpfWNhdGNoKFop''@;'; put 'put ''e3ZhciBRPUIucmV0dXJuO3Rocm93IHZvaWQgMCE9PVEmJmdlKFEuY2FsbChCKSksWn19fSw0OTk4ODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI1MDMpLEI9TCg5MDY4MSksRT1MKDIyOTQzKSxNZT17fTtMKDg3NzI4KShNZSxMKDg2MzE0KSgiaXRlcmF0b3IiKSxmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzfSksWGUuZXhwb3J0cz1mdW5jdGlvbihVLFEsWil7VS5wcm90b3R5cGU9Z2UoTWUse25leHQ6QigxLFopfSksRShVLFErIiBJdGVyYXRvciIpfX0sNDI5MjM6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDQ0NjEpLEI9TCg0Mjk4NSksRT1MKDc3''@;'; put 'put ''MjM0KSxNZT1MKDg3NzI4KSxVPUwoODcyMzQpLFE9TCg0OTk4OCksWj1MKDIyOTQzKSxpZT1MKDQ2OCksbGU9TCg4NjMxNCkoIml0ZXJhdG9yIiksWT0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxOPSJrZXlzIixlZT0idmFsdWVzIixxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O1hl''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oSixzZSxhZSxmZSxkZSx2ZSxBZSl7UShhZSxzZSxmZSk7dmFyIHRlLHgsUCxrZT1mdW5jdGlvbihWKXtpZighWSYmViBpbiBFZSlyZXR1cm4gRWVbVl07c3dpdGNoKFYpe2Nhc2UgTjpjYXNlIGVlOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgYWUodGhp''@;'; put 'put ''cyxWKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhZSh0aGlzLFYpfX0sU2U9c2UrIiBJdGVyYXRvciIsSWU9ZGU9PWVlLFRlPSExLEVlPUoucHJvdG90eXBlLGhlPUVlW2xlXXx8RWVbIkBAaXRlcmF0b3IiXXx8ZGUmJkVlW2RlXSxPPWhlfHxrZShkZSksej1kZT9JZT9rZSgiZW50''@;'; put 'put ''cmllcyIpOk86dm9pZCAwLG5lPSJBcnJheSI9PXNlJiZFZS5lbnRyaWVzfHxoZTtpZihuZSYmKFA9aWUobmUuY2FsbChuZXcgSikpKSE9PU9iamVjdC5wcm90b3R5cGUmJlAubmV4dCYmKFooUCxTZSwhMCksIWdlJiYiZnVuY3Rpb24iIT10eXBlb2YgUFtsZV0mJk1lKFAsbGUscSkpLEllJiZo''@;'; put 'put ''ZSYmaGUubmFtZSE9PWVlJiYoVGU9ITAsTz1mdW5jdGlvbigpe3JldHVybiBoZS5jYWxsKHRoaXMpfSksKCFnZXx8QWUpJiYoWXx8VGV8fCFFZVtsZV0pJiZNZShFZSxsZSxPKSxVW3NlXT1PLFVbU2VdPXEsZGUpaWYodGU9e3ZhbHVlczpJZT9POmtlKGVlKSxrZXlzOnZlP086a2UoTiksZW50''@;'; put 'put ''cmllczp6fSxBZSlmb3IoeCBpbiB0ZSl4IGluIEVlfHxFKEVlLHgsdGVbeF0pO2Vsc2UgQihCLlArQi5GKihZfHxUZSksc2UsdGUpO3JldHVybiB0ZX19LDc0NjI6KFhlLEplLEwpPT57dmFyIGdlPUwoODYzMTQpKCJpdGVyYXRvciIpLEI9ITE7dHJ5e3ZhciBFPVs3XVtnZV0oKTtFLnJldHVy''@;'; put 'put ''bj1mdW5jdGlvbigpe0I9ITB9LEFycmF5LmZyb20oRSxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaChNZSl7fVhlLmV4cG9ydHM9ZnVuY3Rpb24oTWUsVSl7aWYoIVUmJiFCKXJldHVybiExO3ZhciBRPSExO3RyeXt2YXIgWj1bN10saWU9WltnZV0oKTtpZS5uZXh0PWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJue2RvbmU6UT0hMH19LFpbZ2VdPWZ1bmN0aW9uKCl7cmV0dXJuIGllfSxNZShaKX1jYXRjaChsZSl7fXJldHVybiBRfX0sMTU0MzY6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplLEwpe3JldHVybnt2YWx1ZTpMLGRvbmU6ISFKZX19fSw4NzIzNDpYZT0+e1hlLmV4cG9ydHM9e319LDQ0''@;'; put 'put ''NjE6WGU9PntYZS5leHBvcnRzPSExfSwxMzA4NjpYZT0+e3ZhciBKZT1NYXRoLmV4cG0xO1hlLmV4cG9ydHM9IUplfHxKZSgxMCk+MjIwMjUuNDY1Nzk0ODA2NzE4fHxKZSgxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPUplKC0yZS0xNyk/ZnVuY3Rpb24oZ2Upe3JldHVybiAwPT0o''@;'; put 'put ''Z2U9K2dlKT9nZTpnZT4tMWUtNiYmZ2U8MWUtNj9nZStnZSpnZS8yOk1hdGguZXhwKGdlKS0xfTpKZX0sMzQ5MzQ6KFhlLEplLEwpPT57dmFyIGdlPUwoNjE4MDEpLEI9TWF0aC5wb3csRT1CKDIsLTUyKSxNZT1CKDIsLTIzKSxVPUIoMiwxMjcpKigyLU1lKSxRPUIoMiwtMTI2KTtYZS5leHBv''@;'; put 'put ''cnRzPU1hdGguZnJvdW5kfHxmdW5jdGlvbihsZSl7dmFyIE4sZWUsWT1NYXRoLmFicyhsZSksVz1nZShsZSk7cmV0dXJuIFk8UT9XKihZL1EvTWUrMS9FLTEvRSkqUSpNZTooZWU9KE49KDErTWUvRSkqWSktKE4tWSkpPlV8fGVlIT1lZT9XKigxLzApOlcqZWV9fSw0NjIwNjpYZT0+e1hlLmV4''@;'; put 'put ''cG9ydHM9TWF0aC5sb2cxcHx8ZnVuY3Rpb24oTCl7cmV0dXJuKEw9K0wpPi0xZS04JiZMPDFlLTg/TC1MKkwvMjpNYXRoLmxvZygxK0wpfX0sNjE4MDE6WGU9PntYZS5leHBvcnRzPU1hdGguc2lnbnx8ZnVuY3Rpb24oTCl7cmV0dXJuIDA9PShMPStMKXx8TCE9TD9MOkw8MD8tMToxfX0sODQ3''@;'; put 'put ''Mjg6KFhlLEplLEwpPT57dmFyIGdlPUwoOTM5NTMpKCJtZXRhIiksQj1MKDU1Mjg2KSxFPUwoNzkxODEpLE1lPUwoOTkyNzUpLmYsVT0wLFE9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sWj0hTCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4gUShPYmplY3QucHJl''@;'; put 'put ''dmVudEV4dGVuc2lvbnMoe30pKX0pLGllPWZ1bmN0aW9uKGVlKXtNZShlZSxnZSx7dmFsdWU6e2k6Ik8iKyArK1Usdzp7fX19KX0sTj1YZS5leHBvcnRzPXtLRVk6Z2UsTkVFRDohMSxmYXN0S2V5OmZ1bmN0aW9uKGVlLHEpe2lmKCFCKGVlKSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGVlP2Vl''@;'; put 'put ''Oigic3RyaW5nIj09dHlwZW9mIGVlPyJTIjoiUCIpK2VlO2lmKCFFKGVlLGdlKSl7aWYoIVEoZWUpKXJldHVybiJGIjtpZighcSlyZXR1cm4iRSI7aWUoZWUpfXJldHVybiBlZVtnZV0uaX0sZ2V0V2VhazpmdW5jdGlvbihlZSxxKXtpZighRShlZSxnZSkpe2lmKCFRKGVlKSlyZXR1cm4hMDtp''@;'; put 'put ''ZighcSlyZXR1cm4hMTtpZShlZSl9cmV0dXJuIGVlW2dlXS53fSxvbkZyZWV6ZTpmdW5jdGlvbihlZSl7cmV0dXJuIFomJk4uTkVFRCYmUShlZSkmJiFFKGVlLGdlKSYmaWUoZWUpLGVlfX19LDUwMTMzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg4NDE2KSxCPUwoNDI5ODUpLEU9TCgzODI1KSgi''@;'; put 'put ''bWV0YWRhdGEiKSxNZT1FLnN0b3JlfHwoRS5zdG9yZT1uZXcoTCgzMDE0NykpKSxVPWZ1bmN0aW9uKE4sZWUscSl7dmFyIEo9TWUuZ2V0KE4pO2lmKCFKKXtpZighcSlyZXR1cm47TWUuc2V0KE4sSj1uZXcgZ2UpfXZhciBzZT1KLmdldChlZSk7aWYoIXNlKXtpZighcSlyZXR1cm47Si5zZXQo''@;'; put 'put ''ZWUsc2U9bmV3IGdlKX1yZXR1cm4gc2V9O1hlLmV4cG9ydHM9e3N0b3JlOk1lLG1hcDpVLGhhczpmdW5jdGlvbihOLGVlLHEpe3ZhciBKPVUoZWUscSwhMSk7cmV0dXJuIHZvaWQgMCE9PUomJkouaGFzKE4pfSxnZXQ6ZnVuY3Rpb24oTixlZSxxKXt2YXIgSj1VKGVlLHEsITEpO3JldHVybiB2''@;'; put 'put ''b2lkIDA9PT1KP3ZvaWQgMDpKLmdldChOKX0sc2V0OmZ1bmN0aW9uKE4sZWUscSxKKXtVKHEsSiwhMCkuc2V0KE4sZWUpfSxrZXlzOmZ1bmN0aW9uKE4sZWUpe3ZhciBxPVUoTixlZSwhMSksSj1bXTtyZXR1cm4gcSYmcS5mb3JFYWNoKGZ1bmN0aW9uKHNlLGFlKXtKLnB1c2goYWUpfSksSn0s''@;'; put 'put ''a2V5OmZ1bmN0aW9uKE4pe3JldHVybiB2b2lkIDA9PT1OfHwic3ltYm9sIj09dHlwZW9mIE4/TjpTdHJpbmcoTil9LGV4cDpmdW5jdGlvbihOKXtCKEIuUywiUmVmbGVjdCIsTil9fX0sMzUzNDU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDY3MDU3KSxCPUwoNDcxODQpLEU9''@;'; put 'put ''TCg2NDU0OCksTWU9TCgxNDY4MiksVT1MKDIwNTA4KSxRPUwoNDk3OTcpLFo9T2JqZWN0LmFzc2lnbjtYZS5leHBvcnRzPSFafHxMKDc0MjUzKShmdW5jdGlvbigpe3ZhciBpZT17fSxsZT17fSxZPVN5bWJvbCgpLFc9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gaWVbWV09NyxXLnNw''@;'; put 'put ''bGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKE4pe2xlW05dPU59KSw3IT1aKHt9LGllKVtZXXx8T2JqZWN0LmtleXMoWih7fSxsZSkpLmpvaW4oIiIpIT1XfSk/ZnVuY3Rpb24obGUsWSl7Zm9yKHZhciBXPVUobGUpLE49YXJndW1lbnRzLmxlbmd0aCxlZT0xLHE9RS5mLEo9TWUuZjtOPmVlOylm''@;'; put 'put ''b3IodmFyIHZlLHNlPVEoYXJndW1lbnRzW2VlKytdKSxhZT1xP0Ioc2UpLmNvbmNhdChxKHNlKSk6QihzZSksZmU9YWUubGVuZ3RoLGRlPTA7ZmU+ZGU7KXZlPWFlW2RlKytdLCghZ2V8fEouY2FsbChzZSx2ZSkpJiYoV1t2ZV09c2VbdmVdKTtyZXR1cm4gV306Wn0sNDI1MDM6KFhlLEplLEwp''@;'; put 'put ''PT57dmFyIGdlPUwoMjcwMDcpLEI9TCgzNTU4OCksRT1MKDc0NDMwKSxNZT1MKDY5MzM1KSgiSUVfUFJPVE8iKSxVPWZ1bmN0aW9uKCl7fSxRPSJwcm90b3R5cGUiLFo9ZnVuY3Rpb24oKXt2YXIgTixpZT1MKDYyNDU3KSgiaWZyYW1lIiksbGU9RS5sZW5ndGg7Zm9yKGllLnN0eWxlLmRpc3Bs''@;'; put 'put ''YXk9Im5vbmUiLEwoNDA2MzkpLmFwcGVuZENoaWxkKGllKSxpZS5zcmM9ImphdmFzY3JpcHQ6IiwoTj1pZS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksTi53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxOLmNsb3NlKCksWj1OLkY7bGUtLTspZGVs''@;'; put 'put ''ZXRlIFpbUV1bRVtsZV1dO3JldHVybiBaKCl9O1hlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24obGUsWSl7dmFyIFc7cmV0dXJuIG51bGwhPT1sZT8oVVtRXT1nZShsZSksVz1uZXcgVSxVW1FdPW51bGwsV1tNZV09bGUpOlc9WigpLHZvaWQgMD09PVk/VzpCKFcsWSl9fSw5OTI3''@;'; put 'put ''NTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyNzAwNyksQj1MKDE3MzQpLEU9TCgyMTY4OSksTWU9T2JqZWN0LmRlZmluZVByb3BlcnR5O0plLmY9TCg2NzA1Nyk/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKFEsWixpZSl7aWYoZ2UoUSksWj1FKFosITApLGdlKGllKSxCKXRyeXtyZXR1''@;'; put 'put ''cm4gTWUoUSxaLGllKX1jYXRjaChsZSl7fWlmKCJnZXQiaW4gaWV8fCJzZXQiaW4gaWUpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gaWUmJihRW1pdPWllLnZhbHVlKSxRfX0sMzU1ODg6KFhlLEplLEwpPT57dmFyIGdlPUwoOTky''@;'; put 'put ''NzUpLEI9TCgyNzAwNyksRT1MKDQ3MTg0KTtYZS5leHBvcnRzPUwoNjcwNTcpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKFUsUSl7QihVKTtmb3IodmFyIFksWj1FKFEpLGllPVoubGVuZ3RoLGxlPTA7aWU+bGU7KWdlLmYoVSxZPVpbbGUrK10sUVtZXSk7cmV0dXJuIFV9fSwx''@;'; put 'put ''ODY5MzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgxNDY4MiksQj1MKDkwNjgxKSxFPUwoMjIxMTApLE1lPUwoMjE2ODkpLFU9TCg3OTE4MSksUT1MKDE3MzQpLFo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtKZS5mPUwoNjcwNTcpP1o6ZnVuY3Rpb24obGUsWSl7aWYobGU9RShsZSks''@;'; put 'put ''WT1NZShZLCEwKSxRKXRyeXtyZXR1cm4gWihsZSxZKX1jYXRjaChXKXt9aWYoVShsZSxZKSlyZXR1cm4gQighZ2UuZi5jYWxsKGxlLFkpLGxlW1ldKX19LDM5MzI3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDIyMTEwKSxCPUwoMjA2MTYpLmYsRT17fS50b1N0cmluZyxNZT0ib2JqZWN0Ij09dHlw''@;'; put 'put ''ZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO1hlLmV4cG9ydHMuZj1mdW5jdGlvbihaKXtyZXR1cm4gTWUmJiJbb2JqZWN0IFdpbmRvd10iPT1FLmNhbGwoWik/ZnVuY3Rpb24oUSl7dHJ5''@;'; put 'put ''e3JldHVybiBCKFEpfWNhdGNoKFope3JldHVybiBNZS5zbGljZSgpfX0oWik6QihnZShaKSl9fSwyMDYxNjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2MDE4OSksQj1MKDc0NDMwKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO0plLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1''@;'; put 'put ''bmN0aW9uKE1lKXtyZXR1cm4gZ2UoTWUsQil9fSw2NDU0ODooWGUsSmUpPT57SmUuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSw0Njg6KFhlLEplLEwpPT57dmFyIGdlPUwoNzkxODEpLEI9TCgyMDUwOCksRT1MKDY5MzM1KSgiSUVfUFJPVE8iKSxNZT1PYmplY3QucHJvdG90eXBl''@;'; put 'put ''O1hlLmV4cG9ydHM9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbihVKXtyZXR1cm4gVT1CKFUpLGdlKFUsRSk/VVtFXToiZnVuY3Rpb24iPT10eXBlb2YgVS5jb25zdHJ1Y3RvciYmVSBpbnN0YW5jZW9mIFUuY29uc3RydWN0b3I/VS5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6VSBpbnN0''@;'; put 'put ''YW5jZW9mIE9iamVjdD9NZTpudWxsfX0sNjAxODk6KFhlLEplLEwpPT57dmFyIGdlPUwoNzkxODEpLEI9TCgyMjExMCksRT1MKDc5MzE1KSghMSksTWU9TCg2OTMzNSkoIklFX1BST1RPIik7WGUuZXhwb3J0cz1mdW5jdGlvbihVLFEpe3ZhciBZLFo9QihVKSxpZT0wLGxlPVtdO2ZvcihZIGlu''@;'; put 'put ''IFopWSE9TWUmJmdlKFosWSkmJmxlLnB1c2goWSk7Zm9yKDtRLmxlbmd0aD5pZTspZ2UoWixZPVFbaWUrK10pJiYofkUobGUsWSl8fGxlLnB1c2goWSkpO3JldHVybiBsZX19LDQ3MTg0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDYwMTg5KSxCPUwoNzQ0MzApO1hlLmV4cG9ydHM9T2JqZWN0Lmtl''@;'; put 'put ''eXN8fGZ1bmN0aW9uKE1lKXtyZXR1cm4gZ2UoTWUsQil9fSwxNDY4MjooWGUsSmUpPT57SmUuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sMzMxNjA6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCgyNTY0NSksRT1MKDc0MjUzKTtYZS5leHBvcnRzPWZ1bmN0aW9uKE1lLFUpe3Zh''@;'; put 'put ''ciBRPShCLk9iamVjdHx8e30pW01lXXx8T2JqZWN0W01lXSxaPXt9O1pbTWVdPVUoUSksZ2UoZ2UuUytnZS5GKkUoZnVuY3Rpb24oKXtRKDEpfSksIk9iamVjdCIsWil9fSw1NzY0MzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMDYxNiksQj1MKDY0NTQ4KSxFPUwoMjcwMDcpLE1lPUwoMzgxNiku''@;'; put 'put ''UmVmbGVjdDtYZS5leHBvcnRzPU1lJiZNZS5vd25LZXlzfHxmdW5jdGlvbihRKXt2YXIgWj1nZS5mKEUoUSkpLGllPUIuZjtyZXR1cm4gaWU/Wi5jb25jYXQoaWUoUSkpOlp9fSw0Nzc0MzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgzODE2KS5wYXJzZUZsb2F0LEI9TCgyOTU5OSkudHJpbTtYZS5l''@;'; put 'put ''eHBvcnRzPTEvZ2UoTCg4NDY0NCkrIi0wIikhPS0xLzA/ZnVuY3Rpb24oTWUpe3ZhciBVPUIoU3RyaW5nKE1lKSwzKSxRPWdlKFUpO3JldHVybiAwPT09USYmIi0iPT1VLmNoYXJBdCgwKT8tMDpRfTpnZX0sNTU5NjA6KFhlLEplLEwpPT57dmFyIGdlPUwoMzgxNikucGFyc2VJbnQsQj1MKDI5''@;'; put 'put ''NTk5KS50cmltLEU9TCg4NDY0NCksTWU9L15bLStdPzBbeFhdLztYZS5leHBvcnRzPTghPT1nZShFKyIwOCIpfHwyMiE9PWdlKEUrIjB4MTYiKT9mdW5jdGlvbihRLFope3ZhciBpZT1CKFN0cmluZyhRKSwzKTtyZXR1cm4gZ2UoaWUsWj4+PjB8fChNZS50ZXN0KGllKT8xNjoxMCkpfTpnZX0s''@;'; put 'put ''OTA2ODE6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplLEwpe3JldHVybntlbnVtZXJhYmxlOiEoMSZKZSksY29uZmlndXJhYmxlOiEoMiZKZSksd3JpdGFibGU6ISg0JkplKSx2YWx1ZTpMfX19LDI0NDA4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDc3MjM0KTtYZS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KEIsRSxNZSl7Zm9yKHZhciBVIGluIEUpZ2UoQixVLEVbVV0sTWUpO3JldHVybiBCfX0sNzcyMzQ6KFhlLEplLEwpPT57dmFyIGdlPUwoMzgxNiksQj1MKDg3NzI4KSxFPUwoNzkxODEpLE1lPUwoOTM5NTMpKCJzcmMiKSxVPUwoNDAwMTgpLFE9InRvU3RyaW5nIixaPSgiIitVKS5zcGxpdChR''@;'; put 'put ''KTtMKDI1NjQ1KS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGllKXtyZXR1cm4gVS5jYWxsKGllKX0sKFhlLmV4cG9ydHM9ZnVuY3Rpb24oaWUsbGUsWSxXKXt2YXIgTj0iZnVuY3Rpb24iPT10eXBlb2YgWTtOJiYoRShZLCJuYW1lIil8fEIoWSwibmFtZSIsbGUpKSxpZVtsZV0hPT1ZJiYoTiYm''@;'; put 'put ''KEUoWSxNZSl8fEIoWSxNZSxpZVtsZV0/IiIraWVbbGVdOlouam9pbihTdHJpbmcobGUpKSkpLGllPT09Z2U/aWVbbGVdPVk6Vz9pZVtsZV0/aWVbbGVdPVk6QihpZSxsZSxZKTooZGVsZXRlIGllW2xlXSxCKGllLGxlLFkpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsUSxmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlzW01lXXx8VS5jYWxsKHRoaXMpfSl9LDI3Nzg3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0MTQ4OCksQj1SZWdFeHAucHJvdG90eXBlLmV4ZWM7WGUuZXhwb3J0cz1mdW5jdGlvbihFLE1lKXt2YXIgVT1FLmV4ZWM7''@;'; put 'put ''aWYoImZ1bmN0aW9uIj09dHlwZW9mIFUpe3ZhciBRPVUuY2FsbChFLE1lKTtpZigib2JqZWN0IiE9dHlwZW9mIFEpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIFF9''@;'; put 'put ''aWYoIlJlZ0V4cCIhPT1nZShFKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyIik7cmV0dXJuIEIuY2FsbChFLE1lKX19LDIxMTY1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbGUsWSxnZT1MKDUzMjE4KSxCPVJl''@;'; put 'put ''Z0V4cC5wcm90b3R5cGUuZXhlYyxFPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxNZT1CLFU9Imxhc3RJbmRleCIsUT0oWT0vYiovZyxCLmNhbGwobGU9L2EvLCJhIiksQi5jYWxsKFksImEiKSwwIT09bGVbVV18fDAhPT1ZW1VdKSxaPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoUXx8''@;'; put 'put ''WikmJihNZT1mdW5jdGlvbihZKXt2YXIgTixlZSxxLEosVz10aGlzO3JldHVybiBaJiYoZWU9bmV3IFJlZ0V4cCgiXiIrVy5zb3VyY2UrIiQoPyFcXHMpIixnZS5jYWxsKFcpKSksUSYmKE49V1tVXSkscT1CLmNhbGwoVyxZKSxRJiZxJiYoV1tVXT1XLmdsb2JhbD9xLmluZGV4K3FbMF0ubGVu''@;'; put 'put ''Z3RoOk4pLFomJnEmJnEubGVuZ3RoPjEmJkUuY2FsbChxWzBdLGVlLGZ1bmN0aW9uKCl7Zm9yKEo9MTtKPGFyZ3VtZW50cy5sZW5ndGgtMjtKKyspdm9pZCAwPT09YXJndW1lbnRzW0pdJiYocVtKXT12b2lkIDApfSkscX0pLFhlLmV4cG9ydHM9TWV9LDI3MTk1OlhlPT57WGUuZXhwb3J0cz1P''@;'; put 'put ''YmplY3QuaXN8fGZ1bmN0aW9uKEwsZ2Upe3JldHVybiBMPT09Z2U/MCE9PUx8fDEvTD09MS9nZTpMIT1MJiZnZSE9Z2V9fSwyNzM3NTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1NTI4NiksQj1MKDI3MDA3KSxFPWZ1bmN0aW9uKE1lLFUpe2lmKEIoTWUpLCFnZShVKSYmbnVsbCE9PVUpdGhyb3cg''@;'; put 'put ''VHlwZUVycm9yKFUrIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSEiKX07WGUuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbihNZSxVLFEpe3RyeXsoUT1MKDc0MSkoRnVuY3Rpb24uY2FsbCxMKDE4NjkzKS5mKE9iamVjdC5wcm90''@;'; put 'put ''b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSkoTWUsW10pLFU9IShNZSBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaChaKXtVPSEwfXJldHVybiBmdW5jdGlvbihpZSxsZSl7cmV0dXJuIEUoaWUsbGUpLFU/aWUuX19wcm90b19fPWxlOlEoaWUsbGUpLGllfX0oe30sITEpOnZvaWQgMCksY2hlY2s6''@;'; put 'put ''RX19LDI5NzQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDM4MTYpLEI9TCg5OTI3NSksRT1MKDY3MDU3KSxNZT1MKDg2MzE0KSgic3BlY2llcyIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7dmFyIFE9Z2VbVV07RSYmUSYmIVFbTWVdJiZCLmYoUSxNZSx7Y29uZmlndXJhYmxl''@;'; put 'put ''OiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sMjI5NDM6KFhlLEplLEwpPT57dmFyIGdlPUwoOTkyNzUpLmYsQj1MKDc5MTgxKSxFPUwoODYzMTQpKCJ0b1N0cmluZ1RhZyIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUsVSxRKXtNZSYmIUIoTWU9UT9NZTpNZS5wcm90b3R5cGUs''@;'; put 'put ''RSkmJmdlKE1lLEUse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpVfSl9fSw2OTMzNTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgzODI1KSgia2V5cyIpLEI9TCg5Mzk1Myk7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtyZXR1cm4gZ2VbRV18fChnZVtFXT1CKEUpKX19LDM4MjU6KFhlLEplLEwpPT57dmFy''@;'; put 'put ''IGdlPUwoMjU2NDUpLEI9TCgzODE2KSxFPSJfX2NvcmUtanNfc2hhcmVkX18iLE1lPUJbRV18fChCW0VdPXt9KTsoWGUuZXhwb3J0cz1mdW5jdGlvbihVLFEpe3JldHVybiBNZVtVXXx8KE1lW1VdPXZvaWQgMCE9PVE/UTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOmdlLnZl''@;'; put 'put ''cnNpb24sbW9kZTpMKDQ0NjEpPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6Ilx4YTkgMjAyMCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KX0sNTgzNjQ6KFhlLEplLEwpPT57dmFyIGdlPUwoMjcwMDcpLEI9TCgyNDk2MyksRT1MKDg2MzE0KSgic3BlY2llcyIpO1hlLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24oTWUsVSl7dmFyIFosUT1nZShNZSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PVF8fG51bGw9PShaPWdlKFEpW0VdKT9VOkIoWil9fSw3NzcxNzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNzQyNTMpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFKXty''@;'; put 'put ''ZXR1cm4hIUImJmdlKGZ1bmN0aW9uKCl7RT9CLmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6Qi5jYWxsKG51bGwpfSl9fSwyNDQ5NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4MTQ2NyksQj1MKDkxMzU1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEUpe3JldHVybiBmdW5jdGlvbihNZSxVKXt2YXIg''@;'; put 'put ''bGUsWSxRPVN0cmluZyhCKE1lKSksWj1nZShVKSxpZT1RLmxlbmd0aDtyZXR1cm4gWjwwfHxaPj1pZT9FPyIiOnZvaWQgMDoobGU9US5jaGFyQ29kZUF0KFopKTw1NTI5Nnx8bGU+NTYzMTl8fForMT09PWllfHwoWT1RLmNoYXJDb2RlQXQoWisxKSk8NTYzMjB8fFk+NTczNDM/RT9RLmNoYXJB''@;'; put 'put ''dChaKTpsZTpFP1Euc2xpY2UoWixaKzIpOlktNTYzMjArKGxlLTU1Mjk2PDwxMCkrNjU1MzZ9fX0sNDIwOTQ6KFhlLEplLEwpPT57dmFyIGdlPUwoNTUzNjQpLEI9TCg5MTM1NSk7WGUuZXhwb3J0cz1mdW5jdGlvbihFLE1lLFUpe2lmKGdlKE1lKSl0aHJvdyBUeXBlRXJyb3IoIlN0cmluZyMi''@;'; put 'put ''K1UrIiBkb2Vzbid0IGFjY2VwdCByZWdleCEiKTtyZXR1cm4gU3RyaW5nKEIoRSkpfX0sMjkzOTU6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCg3NDI1MyksRT1MKDkxMzU1KSxNZT0vIi9nLFU9ZnVuY3Rpb24oUSxaLGllLGxlKXt2YXIgWT1TdHJpbmcoRShRKSksVz0iPCIrWjty''@;'; put 'put ''ZXR1cm4iIiE9PWllJiYoVys9IiAiK2llKyc9IicrU3RyaW5nKGxlKS5yZXBsYWNlKE1lLCImcXVvdDsiKSsnIicpLFcrIj4iK1krIjwvIitaKyI+In07WGUuZXhwb3J0cz1mdW5jdGlvbihRLFope3ZhciBpZT17fTtpZVtRXT1aKFUpLGdlKGdlLlArZ2UuRipCKGZ1bmN0aW9uKCl7dmFyIGxl''@;'; put 'put ''PSIiW1FdKCciJyk7cmV0dXJuIGxlIT09bGUudG9Mb3dlckNhc2UoKXx8bGUuc3BsaXQoJyInKS5sZW5ndGg+M30pLCJTdHJpbmciLGllKX19LDY4NTk1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4MTQ2NyksQj1MKDkxMzU1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKE1lKXt2''@;'; put 'put ''YXIgVT1TdHJpbmcoQih0aGlzKSksUT0iIixaPWdlKE1lKTtpZihaPDB8fFo9PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7Wj4wOyhaPj4+PTEpJiYoVSs9VSkpMSZaJiYoUSs9VSk7cmV0dXJuIFF9fSwyOTU5OTooWGUsSmUsTCk9Pnt2YXIg''@;'; put 'put ''Z2U9TCg0Mjk4NSksQj1MKDkxMzU1KSxFPUwoNzQyNTMpLE1lPUwoODQ2NDQpLFU9IlsiK01lKyJdIixaPVJlZ0V4cCgiXiIrVStVKyIqIiksaWU9UmVnRXhwKFUrVSsiKiQiKSxsZT1mdW5jdGlvbihXLE4sZWUpe3ZhciBxPXt9LEo9RShmdW5jdGlvbigpe3JldHVybiEhTWVbV10oKXx8Ilx1''@;'; put 'put ''MjAwYlx4ODUiIT0iXHUyMDBiXHg4NSJbV10oKX0pLHNlPXFbV109Sj9OKFkpOk1lW1ddO2VlJiYocVtlZV09c2UpLGdlKGdlLlArZ2UuRipKLCJTdHJpbmciLHEpfSxZPWxlLnRyaW09ZnVuY3Rpb24oVyxOKXtyZXR1cm4gVz1TdHJpbmcoQihXKSksMSZOJiYoVz1XLnJlcGxhY2UoWiwiIikp''@;'; put 'put ''LDImTiYmKFc9Vy5yZXBsYWNlKGllLCIiKSksV307WGUuZXhwb3J0cz1sZX0sODQ2NDQ6WGU9PntYZS5leHBvcnRzPSJcdFxuXHZcZlxyIFx4YTBcdTE2ODBcdTE4MGVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMGFcdTIw''@;'; put 'put ''MmZcdTIwNWZcdTMwMDBcdTIwMjhcdTIwMjlcdWZlZmYifSw5MjMzNzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4MTQ2NyksQj1NYXRoLm1heCxFPU1hdGgubWluO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUsVSl7cmV0dXJuKE1lPWdlKE1lKSk8MD9CKE1lK1UsMCk6RShNZSxVKX19LDgxNDY3Olhl''@;'; put 'put ''PT57dmFyIEplPU1hdGguY2VpbCxMPU1hdGguZmxvb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihnZSl7cmV0dXJuIGlzTmFOKGdlPStnZSk/MDooZ2U+MD9MOkplKShnZSl9fSwyMjExMDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0OTc5NyksQj1MKDkxMzU1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEUp''@;'; put 'put ''e3JldHVybiBnZShCKEUpKX19LDEwODc1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDgxNDY3KSxCPU1hdGgubWluO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7cmV0dXJuIEU+MD9CKGdlKEUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSwyMDUwODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg5MTM1NSk7WGUu''@;'; put 'put ''ZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm4gT2JqZWN0KGdlKEIpKX19LDIxNjg5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDU1Mjg2KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIsRSl7aWYoIWdlKEIpKXJldHVybiBCO3ZhciBNZSxVO2lmKEUmJiJmdW5jdGlvbiI9PXR5cGVvZihNZT1CLnRvU3Ry''@;'; put 'put ''aW5nKSYmIWdlKFU9TWUuY2FsbChCKSl8fCJmdW5jdGlvbiI9PXR5cGVvZihNZT1CLnZhbHVlT2YpJiYhZ2UoVT1NZS5jYWxsKEIpKXx8IUUmJiJmdW5jdGlvbiI9PXR5cGVvZihNZT1CLnRvU3RyaW5nKSYmIWdlKFU9TWUuY2FsbChCKSkpcmV0dXJuIFU7dGhyb3cgVHlwZUVycm9yKCJDYW4n''@;'; put 'put ''dCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LDkzOTUzOlhlPT57dmFyIEplPTAsTD1NYXRoLnJhbmRvbSgpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oZ2Upe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09Z2U/IiI6Z2UsIilfIiwoKytKZStMKS50b1N0cmluZygz''@;'; put 'put ''NikpfX0sMTYxNjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1NTI4Nik7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUpe2lmKCFnZShCKXx8Qi5fdCE9PUUpdGhyb3cgVHlwZUVycm9yKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrRSsiIHJlcXVpcmVkISIpO3JldHVybiBCfX0sMzYwNzQ6KFhlLEpl''@;'; put 'put ''LEwpPT57dmFyIGdlPUwoMzgxNiksQj1MKDI1NjQ1KSxFPUwoNDQ2MSksTWU9TCgyODc4NyksVT1MKDk5Mjc1KS5mO1hlLmV4cG9ydHM9ZnVuY3Rpb24oUSl7dmFyIFo9Qi5TeW1ib2x8fChCLlN5bWJvbD1FP3t9OmdlLlN5bWJvbHx8e30pOyJfIiE9US5jaGFyQXQoMCkmJiEoUSBpbiBaKSYm''@;'; put 'put ''VShaLFEse3ZhbHVlOk1lLmYoUSl9KX19LDI4Nzg3OihYZSxKZSxMKT0+e0plLmY9TCg4NjMxNCl9LDg2MzE0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDM4MjUpKCJ3a3MiKSxCPUwoOTM5NTMpLEU9TCgzODE2KS5TeW1ib2wsTWU9ImZ1bmN0aW9uIj09dHlwZW9mIEU7KFhlLmV4cG9ydHM9ZnVu''@;'; put 'put ''Y3Rpb24oUSl7cmV0dXJuIGdlW1FdfHwoZ2VbUV09TWUmJkVbUV18fChNZT9FOkIpKCJTeW1ib2wuIitRKSl9KS5zdG9yZT1nZX0sNjkwMDI6KFhlLEplLEwpPT57dmFyIGdlPUwoNDE0ODgpLEI9TCg4NjMxNCkoIml0ZXJhdG9yIiksRT1MKDg3MjM0KTtYZS5leHBvcnRzPUwoMjU2NDUpLmdl''@;'; put 'put ''dEl0ZXJhdG9yTWV0aG9kPWZ1bmN0aW9uKE1lKXtpZihudWxsIT1NZSlyZXR1cm4gTWVbQl18fE1lWyJAQGl0ZXJhdG9yIl18fEVbZ2UoTWUpXX19LDMyZTM6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlAsIkFycmF5Iix7Y29weVdpdGhpbjpMKDUyMTYpfSksTCgxNzcyMiko''@;'; put 'put ''ImNvcHlXaXRoaW4iKX0sMTU3NDU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDQyOTg1KSxCPUwoMTAwNTApKDQpO2dlKGdlLlArZ2UuRiohTCg3NzcxNykoW10uZXZlcnksITApLCJBcnJheSIse2V2ZXJ5OmZ1bmN0aW9uKE1lKXtyZXR1cm4gQih0aGlzLE1lLGFyZ3VtZW50''@;'; put 'put ''c1sxXSl9fSl9LDQ4OTc3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5QLCJBcnJheSIse2ZpbGw6TCg0Njg1Mil9KSxMKDE3NzIyKSgiZmlsbCIpfSw5ODgzNzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgxMDA1MCkoMik7Z2UoZ2UuUCtn''@;'; put 'put ''ZS5GKiFMKDc3NzE3KShbXS5maWx0ZXIsITApLCJBcnJheSIse2ZpbHRlcjpmdW5jdGlvbihNZSl7cmV0dXJuIEIodGhpcyxNZSxhcmd1bWVudHNbMV0pfX0pfSw5NDg5OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgxMDA1MCkoNiksRT0iZmluZEluZGV4''@;'; put 'put ''IixNZT0hMDtFIGluW10mJkFycmF5KDEpW0VdKGZ1bmN0aW9uKCl7TWU9ITF9KSxnZShnZS5QK2dlLkYqTWUsIkFycmF5Iix7ZmluZEluZGV4OmZ1bmN0aW9uKFEpe3JldHVybiBCKHRoaXMsUSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksTCgxNzcyMikoRSl9''@;'; put 'put ''LDUyMzEwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0Mjk4NSksQj1MKDEwMDUwKSg1KSxFPSJmaW5kIixNZT0hMDtFIGluW10mJkFycmF5KDEpW0VdKGZ1bmN0aW9uKCl7TWU9ITF9KSxnZShnZS5QK2dlLkYqTWUsIkFycmF5Iix7ZmluZDpmdW5jdGlvbihRKXtyZXR1cm4g''@;'; put 'put ''Qih0aGlzLFEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLEwoMTc3MjIpKEUpfSwyNDMzNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgxMDA1MCkoMCksRT1MKDc3NzE3KShbXS5mb3JFYWNoLCEwKTtnZShnZS5QK2dlLkYq''@;'; put 'put ''IUUsIkFycmF5Iix7Zm9yRWFjaDpmdW5jdGlvbihVKXtyZXR1cm4gQih0aGlzLFUsYXJndW1lbnRzWzFdKX19KX0sMzA1MjI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDc0MSksQj1MKDQyOTg1KSxFPUwoMjA1MDgpLE1lPUwoMjg4NTEpLFU9TCg4NjU1NSksUT1MKDEwODc1''@;'; put 'put ''KSxaPUwoOTI4MTEpLGllPUwoNjkwMDIpO0IoQi5TK0IuRiohTCg3NDYyKShmdW5jdGlvbihsZSl7QXJyYXkuZnJvbShsZSl9KSwiQXJyYXkiLHtmcm9tOmZ1bmN0aW9uKFkpe3ZhciBmZSxkZSx2ZSxBZSxXPUUoWSksTj0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LGVlPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgscT1lZT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsSj12b2lkIDAhPT1xLHNlPTAsYWU9aWUoVyk7aWYoSiYmKHE9Z2UocSxlZT4yP2FyZ3VtZW50c1syXTp2b2lkIDAsMikpLG51bGw9PWFlfHxOPT1BcnJheSYmVShhZSkpZm9yKGRlPW5ldyBOKGZlPVEoVy5sZW5ndGgp''@;'; put 'put ''KTtmZT5zZTtzZSsrKVooZGUsc2UsSj9xKFdbc2VdLHNlKTpXW3NlXSk7ZWxzZSBmb3IoQWU9YWUuY2FsbChXKSxkZT1uZXcgTjshKHZlPUFlLm5leHQoKSkuZG9uZTtzZSsrKVooZGUsc2UsSj9NZShBZSxxLFt2ZS52YWx1ZSxzZV0sITApOnZlLnZhbHVlKTtyZXR1cm4gZGUubGVuZ3RoPXNl''@;'; put 'put ''LGRlfX0pfSwyMzM2OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCg3OTMxNSkoITEpLEU9W10uaW5kZXhPZixNZT0hIUUmJjEvWzFdLmluZGV4T2YoMSwtMCk8MDtnZShnZS5QK2dlLkYqKE1lfHwhTCg3NzcxNykoRSkpLCJBcnJheSIse2luZGV4T2Y6ZnVu''@;'; put 'put ''Y3Rpb24oUSl7cmV0dXJuIE1lP0UuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwOkIodGhpcyxRLGFyZ3VtZW50c1sxXSl9fSl9LDIwNzc0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TLCJBcnJheSIse2lzQXJyYXk6TCg0MzAyKX0pfSw1Njk5NzooWGUsSmUsTCk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIGdlPUwoMTc3MjIpLEI9TCgxNTQzNiksRT1MKDg3MjM0KSxNZT1MKDIyMTEwKTtYZS5leHBvcnRzPUwoNDI5MjMpKEFycmF5LCJBcnJheSIsZnVuY3Rpb24oVSxRKXt0aGlzLl90PU1lKFUpLHRoaXMuX2k9MCx0aGlzLl9rPVF9LGZ1bmN0aW9uKCl7dmFyIFU9dGhpcy5f''@;'; put 'put ''dCxRPXRoaXMuX2ssWj10aGlzLl9pKys7cmV0dXJuIVV8fFo+PVUubGVuZ3RoPyh0aGlzLl90PXZvaWQgMCxCKDEpKTpCKDAsImtleXMiPT1RP1o6InZhbHVlcyI9PVE/VVtaXTpbWixVW1pdXSl9LCJ2YWx1ZXMiKSxFLkFyZ3VtZW50cz1FLkFycmF5LGdlKCJrZXlzIiksZ2UoInZhbHVlcyIp''@;'; put 'put ''LGdlKCJlbnRyaWVzIil9LDg3ODQyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0Mjk4NSksQj1MKDIyMTEwKSxFPVtdLmpvaW47Z2UoZ2UuUCtnZS5GKihMKDQ5Nzk3KSE9T2JqZWN0fHwhTCg3NzcxNykoRSkpLCJBcnJheSIse2pvaW46ZnVuY3Rpb24oVSl7cmV0dXJuIEUu''@;'; put 'put ''Y2FsbChCKHRoaXMpLHZvaWQgMD09PVU/IiwiOlUpfX0pfSw5OTU2NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgyMjExMCksRT1MKDgxNDY3KSxNZT1MKDEwODc1KSxVPVtdLmxhc3RJbmRleE9mLFE9ISFVJiYxL1sxXS5sYXN0SW5kZXhPZigxLC0wKTww''@;'; put 'put ''O2dlKGdlLlArZ2UuRiooUXx8IUwoNzc3MTcpKFUpKSwiQXJyYXkiLHtsYXN0SW5kZXhPZjpmdW5jdGlvbihpZSl7aWYoUSlyZXR1cm4gVS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGxlPUIodGhpcyksWT1NZShsZS5sZW5ndGgpLFc9WS0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEm''@;'; put 'put ''JihXPU1hdGgubWluKFcsRShhcmd1bWVudHNbMV0pKSksVzwwJiYoVz1ZK1cpO1c+PTA7Vy0tKWlmKFcgaW4gbGUmJmxlW1ddPT09aWUpcmV0dXJuIFd8fDA7cmV0dXJuLTF9fSl9LDE5MzcxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0Mjk4NSksQj1MKDEwMDUwKSgxKTtn''@;'; put 'put ''ZShnZS5QK2dlLkYqIUwoNzc3MTcpKFtdLm1hcCwhMCksIkFycmF5Iix7bWFwOmZ1bmN0aW9uKE1lKXtyZXR1cm4gQih0aGlzLE1lLGFyZ3VtZW50c1sxXSl9fSl9LDU4Mjk1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0Mjk4NSksQj1MKDkyODExKTtnZShnZS5TK2dlLkYq''@;'; put 'put ''TCg3NDI1MykoZnVuY3Rpb24oKXtmdW5jdGlvbiBFKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChFKWluc3RhbmNlb2YgRSl9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbigpe2Zvcih2YXIgTWU9MCxVPWFyZ3VtZW50cy5sZW5ndGgsUT1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXM/dGhpczpB''@;'; put 'put ''cnJheSkoVSk7VT5NZTspQihRLE1lLGFyZ3VtZW50c1tNZSsrXSk7cmV0dXJuIFEubGVuZ3RoPVUsUX19KX0sMzc1MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgzNzYyOCk7Z2UoZ2UuUCtnZS5GKiFMKDc3NzE3KShbXS5yZWR1Y2VSaWdodCwhMCksIkFy''@;'; put 'put ''cmF5Iix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24oTWUpe3JldHVybiBCKHRoaXMsTWUsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHNbMV0sITApfX0pfSwzMzA1NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgzNzYyOCk7Z2UoZ2UuUCtnZS5GKiFMKDc3NzE3''@;'; put 'put ''KShbXS5yZWR1Y2UsITApLCJBcnJheSIse3JlZHVjZTpmdW5jdGlvbihNZSl7cmV0dXJuIEIodGhpcyxNZSxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50c1sxXSwhMSl9fSl9LDUwMTEwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0Mjk4NSksQj1MKDQwNjM5KSxFPUwoOTIw''@;'; put 'put ''MzIpLE1lPUwoOTIzMzcpLFU9TCgxMDg3NSksUT1bXS5zbGljZTtnZShnZS5QK2dlLkYqTCg3NDI1MykoZnVuY3Rpb24oKXtCJiZRLmNhbGwoQil9KSwiQXJyYXkiLHtzbGljZTpmdW5jdGlvbihpZSxsZSl7dmFyIFk9VSh0aGlzLmxlbmd0aCksVz1FKHRoaXMpO2lmKGxlPXZvaWQgMD09PWxl''@;'; put 'put ''P1k6bGUsIkFycmF5Ij09VylyZXR1cm4gUS5jYWxsKHRoaXMsaWUsbGUpO2Zvcih2YXIgTj1NZShpZSxZKSxlZT1NZShsZSxZKSxxPVUoZWUtTiksSj1uZXcgQXJyYXkocSksc2U9MDtzZTxxO3NlKyspSltzZV09IlN0cmluZyI9PVc/dGhpcy5jaGFyQXQoTitzZSk6dGhpc1tOK3NlXTtyZXR1''@;'; put 'put ''cm4gSn19KX0sMjY3NzM6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDQyOTg1KSxCPUwoMTAwNTApKDMpO2dlKGdlLlArZ2UuRiohTCg3NzcxNykoW10uc29tZSwhMCksIkFycmF5Iix7c29tZTpmdW5jdGlvbihNZSl7cmV0dXJuIEIodGhpcyxNZSxhcmd1bWVudHNbMV0pfX0p''@;'; put 'put ''fSwyMDA3NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgyNDk2MyksRT1MKDIwNTA4KSxNZT1MKDc0MjUzKSxVPVtdLnNvcnQsUT1bMSwyLDNdO2dlKGdlLlArZ2UuRiooTWUoZnVuY3Rpb24oKXtRLnNvcnQodm9pZCAwKX0pfHwhTWUoZnVuY3Rpb24oKXtR''@;'; put 'put ''LnNvcnQobnVsbCl9KXx8IUwoNzc3MTcpKFUpKSwiQXJyYXkiLHtzb3J0OmZ1bmN0aW9uKGllKXtyZXR1cm4gdm9pZCAwPT09aWU/VS5jYWxsKEUodGhpcykpOlUuY2FsbChFKHRoaXMpLEIoaWUpKX19KX0sMzE4NDI6KFhlLEplLEwpPT57TCgyOTc0KSgiQXJyYXkiKX0sODE4MjI6KFhlLEpl''@;'; put 'put ''LEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIkRhdGUiLHtub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19KX0sOTEwMzE6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCg1MzUzNyk7Z2UoZ2UuUCtnZS5GKihEYXRlLnByb3RvdHlwZS50b0lTT1N0''@;'; put 'put ''cmluZyE9PUIpLCJEYXRlIix7dG9JU09TdHJpbmc6Qn0pfSwxOTk3NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgyMDUwOCksRT1MKDIxNjg5KTtnZShnZS5QK2dlLkYqTCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PW5ldyBEYXRlKE5hTiku''@;'; put 'put ''dG9KU09OKCl8fDEhPT1EYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7dG9JU09TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMX19KX0pLCJEYXRlIix7dG9KU09OOmZ1bmN0aW9uKFUpe3ZhciBRPUIodGhpcyksWj1FKFEpO3JldHVybiJudW1iZXIiIT10eXBlb2YgWnx8aXNGaW5pdGUoWik/''@;'; put 'put ''US50b0lTT1N0cmluZygpOm51bGx9fSl9LDQxNTYwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg2MzE0KSgidG9QcmltaXRpdmUiKSxCPURhdGUucHJvdG90eXBlO2dlIGluIEJ8fEwoODc3MjgpKEIsZ2UsTCg4NzApKX0sNDYzMzE6KFhlLEplLEwpPT57dmFyIGdlPURhdGUucHJvdG90eXBlLEI9''@;'; put 'put ''IkludmFsaWQgRGF0ZSIsRT0idG9TdHJpbmciLE1lPWdlW0VdLFU9Z2UuZ2V0VGltZTtuZXcgRGF0ZShOYU4pKyIiIT1CJiZMKDc3MjM0KShnZSxFLGZ1bmN0aW9uKCl7dmFyIFo9VS5jYWxsKHRoaXMpO3JldHVybiBaPT1aP01lLmNhbGwodGhpcyk6Qn0pfSwzOTczMDooWGUsSmUsTCk9Pnt2''@;'; put 'put ''YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUCwiRnVuY3Rpb24iLHtiaW5kOkwoMzQzOTgpfSl9LDQ4Mzc3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg1NTI4NiksQj1MKDQ2OCksRT1MKDg2MzE0KSgiaGFzSW5zdGFuY2UiKSxNZT1GdW5jdGlvbi5wcm90b3R5cGU7RSBpbiBNZXx8''@;'; put 'put ''TCg5OTI3NSkuZihNZSxFLHt2YWx1ZTpmdW5jdGlvbihVKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IWdlKFUpKXJldHVybiExO2lmKCFnZSh0aGlzLnByb3RvdHlwZSkpcmV0dXJuIFUgaW5zdGFuY2VvZiB0aGlzO2Zvcig7VT1CKFUpOylpZih0aGlzLnByb3RvdHlwZT09PVUpcmV0''@;'; put 'put ''dXJuITA7cmV0dXJuITF9fSl9LDYwNTk6KFhlLEplLEwpPT57dmFyIGdlPUwoOTkyNzUpLmYsQj1GdW5jdGlvbi5wcm90b3R5cGUsRT0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLzsibmFtZSJpbiBCfHxMKDY3MDU3KSYmZ2UoQiwibmFtZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24o''@;'; put 'put ''KXt0cnl7cmV0dXJuKCIiK3RoaXMpLm1hdGNoKEUpWzFdfWNhdGNoKFUpe3JldHVybiIifX19KX0sODg0MTY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDk4MjQpLEI9TCgxNjE2KSxFPSJNYXAiO1hlLmV4cG9ydHM9TCg0NTc5NSkoRSxmdW5jdGlvbihNZSl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIE1lKHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2dldDpmdW5jdGlvbihVKXt2YXIgUT1nZS5nZXRFbnRyeShCKHRoaXMsRSksVSk7cmV0dXJuIFEmJlEudn0sc2V0OmZ1bmN0aW9uKFUsUSl7cmV0dXJuIGdlLmRlZihCKHRo''@;'; put 'put ''aXMsRSksMD09PVU/MDpVLFEpfX0sZ2UsITApfSw3NjUwMzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDQ2MjA2KSxFPU1hdGguc3FydCxNZT1NYXRoLmFjb3NoO2dlKGdlLlMrZ2UuRiohKE1lJiY3MTA9PU1hdGguZmxvb3IoTWUoTnVtYmVyLk1BWF9WQUxVRSkpJiZNZSgxLzAp''@;'; put 'put ''PT0xLzApLCJNYXRoIix7YWNvc2g6ZnVuY3Rpb24oUSl7cmV0dXJuKFE9K1EpPDE/TmFOOlE+OTQ5MDYyNjUuNjI0MjUxNTY/TWF0aC5sb2coUSkrTWF0aC5MTjI6QihRLTErRShRLTEpKkUoUSsxKSl9fSl9LDY2Nzg2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPU1hdGguYXNpbmg7''@;'; put 'put ''Z2UoZ2UuUytnZS5GKiEoQiYmMS9CKDApPjApLCJNYXRoIix7YXNpbmg6ZnVuY3Rpb24gRShNZSl7cmV0dXJuIGlzRmluaXRlKE1lPStNZSkmJjAhPU1lP01lPDA/LUUoLU1lKTpNYXRoLmxvZyhNZStNYXRoLnNxcnQoTWUqTWUrMSkpOk1lfX0pfSw1MDkzMjooWGUsSmUsTCk9Pnt2YXIgZ2U9''@;'; put 'put ''TCg0Mjk4NSksQj1NYXRoLmF0YW5oO2dlKGdlLlMrZ2UuRiohKEImJjEvQigtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbihNZSl7cmV0dXJuIDA9PShNZT0rTWUpP01lOk1hdGgubG9nKCgxK01lKS8oMS1NZSkpLzJ9fSl9LDU3NTI2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxC''@;'; put 'put ''PUwoNjE4MDEpO2dlKGdlLlMsIk1hdGgiLHtjYnJ0OmZ1bmN0aW9uKE1lKXtyZXR1cm4gQihNZT0rTWUpKk1hdGgucG93KE1hdGguYWJzKE1lKSwxLzMpfX0pfSwyMTU5MTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUywiTWF0aCIse2NsejMyOmZ1bmN0aW9uKEUpe3JldHVy''@;'; put 'put ''bihFPj4+PTApPzMxLU1hdGguZmxvb3IoTWF0aC5sb2coRSsuNSkqTWF0aC5MT0cyRSk6MzJ9fSl9LDkwNzM6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TWF0aC5leHA7Z2UoZ2UuUywiTWF0aCIse2Nvc2g6ZnVuY3Rpb24oTWUpe3JldHVybihCKE1lPStNZSkrQigtTWUpKS8yfX0p''@;'; put 'put ''fSw4MDM0NzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDEzMDg2KTtnZShnZS5TK2dlLkYqKEIhPU1hdGguZXhwbTEpLCJNYXRoIix7ZXhwbTE6Qn0pfSwzMDU3OTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUywiTWF0aCIse2Zyb3VuZDpMKDM0OTM0KX0pfSw0''@;'; put 'put ''NjY5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPU1hdGguYWJzO2dlKGdlLlMsIk1hdGgiLHtoeXBvdDpmdW5jdGlvbihNZSxVKXtmb3IodmFyIFksVyxRPTAsWj0wLGllPWFyZ3VtZW50cy5sZW5ndGgsbGU9MDtaPGllOylsZTwoWT1CKGFyZ3VtZW50c1taKytdKSk/KFE9USooVz1s''@;'; put 'put ''ZS9ZKSpXKzEsbGU9WSk6USs9WT4wPyhXPVkvbGUpKlc6WTtyZXR1cm4gbGU9PT0xLzA/MS8wOmxlKk1hdGguc3FydChRKX19KX0sNjc3MTA6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TWF0aC5pbXVsO2dlKGdlLlMrZ2UuRipMKDc0MjUzKShmdW5jdGlvbigpe3JldHVybi01IT1C''@;'; put 'put ''KDQyOTQ5NjcyOTUsNSl8fDIhPUIubGVuZ3RofSksIk1hdGgiLHtpbXVsOmZ1bmN0aW9uKE1lLFUpe3ZhciBRPTY1NTM1LFo9K01lLGllPStVLGxlPVEmWixZPVEmaWU7cmV0dXJuIDB8bGUqWSsoKFEmWj4+PjE2KSpZK2xlKihRJmllPj4+MTYpPDwxNj4+PjApfX0pfSw0NTc4OTooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUywiTWF0aCIse2xvZzEwOmZ1bmN0aW9uKEUpe3JldHVybiBNYXRoLmxvZyhFKSpNYXRoLkxPRzEwRX19KX0sMzM1MTQ6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIk1hdGgiLHtsb2cxcDpMKDQ2MjA2KX0pfSw5OTk3ODoo''@;'; put 'put ''WGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUywiTWF0aCIse2xvZzI6ZnVuY3Rpb24oRSl7cmV0dXJuIE1hdGgubG9nKEUpL01hdGguTE4yfX0pfSw1ODQ3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUywiTWF0aCIse3NpZ246TCg2MTgwMSl9KX0sODY5NDY6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCgxMzA4NiksRT1NYXRoLmV4cDtnZShnZS5TK2dlLkYqTCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4tMmUtMTchPSFNYXRoLnNpbmgoLTJlLTE3KX0pLCJNYXRoIix7c2luaDpmdW5jdGlvbihVKXtyZXR1cm4gTWF0aC5hYnMoVT0rVSk8''@;'; put 'put ''MT8oQihVKS1CKC1VKSkvMjooRShVLTEpLUUoLVUtMSkpKihNYXRoLkUvMil9fSl9LDM1MDY4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPUwoMTMwODYpLEU9TWF0aC5leHA7Z2UoZ2UuUywiTWF0aCIse3Rhbmg6ZnVuY3Rpb24oVSl7dmFyIFE9QihVPStVKSxaPUIoLVUpO3JldHVy''@;'; put 'put ''biBRPT0xLzA/MTpaPT0xLzA/LTE6KFEtWikvKEUoVSkrRSgtVSkpfX0pfSw0MTM6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIk1hdGgiLHt0cnVuYzpmdW5jdGlvbihFKXtyZXR1cm4oRT4wP01hdGguZmxvb3I6TWF0aC5jZWlsKShFKX19KX0sMTEyNDY6KFhlLEplLEwp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDM4MTYpLEI9TCg3OTE4MSksRT1MKDkyMDMyKSxNZT1MKDQwMjY2KSxVPUwoMjE2ODkpLFE9TCg3NDI1MyksWj1MKDIwNjE2KS5mLGllPUwoMTg2OTMpLmYsbGU9TCg5OTI3NSkuZixZPUwoMjk1OTkpLnRyaW0sVz0iTnVtYmVyIixOPWdlW1ddLGVl''@;'; put 'put ''PU4scT1OLnByb3RvdHlwZSxKPUUoTCg0MjUwMykocSkpPT1XLHNlPSJ0cmltImluIFN0cmluZy5wcm90b3R5cGUsYWU9ZnVuY3Rpb24oQWUpe3ZhciBrZT1VKEFlLCExKTtpZigic3RyaW5nIj09dHlwZW9mIGtlJiZrZS5sZW5ndGg+Mil7dmFyIEllLFRlLEVlLFNlPShrZT1zZT9rZS50cmlt''@;'; put 'put ''KCk6WShrZSwzKSkuY2hhckNvZGVBdCgwKTtpZig0Mz09PVNlfHw0NT09PVNlKXtpZig4OD09PShJZT1rZS5jaGFyQ29kZUF0KDIpKXx8MTIwPT09SWUpcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09U2Upe3N3aXRjaChrZS5jaGFyQ29kZUF0KDEpKXtjYXNlIDY2OmNhc2UgOTg6VGU9MixFZT00''@;'; put 'put ''OTticmVhaztjYXNlIDc5OmNhc2UgMTExOlRlPTgsRWU9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4ra2V9Zm9yKHZhciBuZSxoZT1rZS5zbGljZSgyKSxPPTAsej1oZS5sZW5ndGg7Tzx6O08rKylpZigobmU9aGUuY2hhckNvZGVBdChPKSk8NDh8fG5lPkVlKXJldHVybiBOYU47cmV0dXJuIHBh''@;'; put 'put ''cnNlSW50KGhlLFRlKX19cmV0dXJuK2tlfTtpZighTigiIDBvMSIpfHwhTigiMGIxIil8fE4oIisweDEiKSl7Tj1mdW5jdGlvbihrZSl7dmFyIFNlPWFyZ3VtZW50cy5sZW5ndGg8MT8wOmtlLEllPXRoaXM7cmV0dXJuIEllIGluc3RhbmNlb2YgTiYmKEo/UShmdW5jdGlvbigpe3EudmFsdWVP''@;'; put 'put ''Zi5jYWxsKEllKX0pOkUoSWUpIT1XKT9NZShuZXcgZWUoYWUoU2UpKSxJZSxOKTphZShTZSl9O2Zvcih2YXIgdmUsZmU9TCg2NzA1Nyk/WihlZSk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJ''@;'; put 'put ''bnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLGRlPTA7ZmUubGVuZ3RoPmRlO2RlKyspQihlZSx2ZT1mZVtkZV0pJiYhQihOLHZlKSYmbGUoTix2ZSxpZShl''@;'; put 'put ''ZSx2ZSkpO04ucHJvdG90eXBlPXEscS5jb25zdHJ1Y3Rvcj1OLEwoNzcyMzQpKGdlLFcsTil9fSw3NTk3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUywiTnVtYmVyIix7RVBTSUxPTjpNYXRoLnBvdygyLC01Mil9KX0sNTM0MDM6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5''@;'; put 'put ''ODUpLEI9TCgzODE2KS5pc0Zpbml0ZTtnZShnZS5TLCJOdW1iZXIiLHtpc0Zpbml0ZTpmdW5jdGlvbihNZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBNZSYmQihNZSl9fSl9LDkyNTE2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TLCJOdW1iZXIiLHtpc0ludGVnZXI6TCgx''@;'; put 'put ''ODM2Nyl9KX0sNDkzNzE6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIk51bWJlciIse2lzTmFOOmZ1bmN0aW9uKEUpe3JldHVybiBFIT1FfX0pfSw4NjQ3OTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDE4MzY3KSxFPU1hdGguYWJzO2dlKGdlLlMsIk51bWJl''@;'; put 'put ''ciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oVSl7cmV0dXJuIEIoVSkmJkUoVSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LDkxNzM2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TLCJOdW1iZXIiLHtNQVhfU0FGRV9JTlRFR0VSOjkwMDcxOTkyNTQ3NDA5OTF9KX0sNTE4ODk6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIk51bWJlciIse01JTl9TQUZFX0lOVEVHRVI6LTkwMDcxOTkyNTQ3NDA5OTF9KX0sNjUxNzc6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCg0Nzc0Myk7Z2UoZ2UuUytnZS5GKihOdW1iZXIucGFyc2VGbG9hdCE9Qiks''@;'; put 'put ''Ik51bWJlciIse3BhcnNlRmxvYXQ6Qn0pfSw4MTI0NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDU1OTYwKTtnZShnZS5TK2dlLkYqKE51bWJlci5wYXJzZUludCE9QiksIk51bWJlciIse3BhcnNlSW50OkJ9KX0sMzA3MjY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBn''@;'; put 'put ''ZT1MKDQyOTg1KSxCPUwoODE0NjcpLEU9TCg4MzM2NSksTWU9TCg2ODU5NSksVT0xLi50b0ZpeGVkLFE9TWF0aC5mbG9vcixaPVswLDAsMCwwLDAsMF0saWU9Ik51bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiLFk9ZnVuY3Rpb24oSixzZSl7Zm9yKHZhciBhZT0tMSxmZT1z''@;'; put 'put ''ZTsrK2FlPDY7KVpbYWVdPShmZSs9SipaW2FlXSklMWU3LGZlPVEoZmUvMWU3KX0sVz1mdW5jdGlvbihKKXtmb3IodmFyIHNlPTYsYWU9MDstLXNlPj0wOylaW3NlXT1RKChhZSs9WltzZV0pL0opLGFlPWFlJUoqMWU3fSxOPWZ1bmN0aW9uKCl7Zm9yKHZhciBKPTYsc2U9IiI7LS1KPj0wOylp''@;'; put 'put ''ZigiIiE9PXNlfHwwPT09Snx8MCE9PVpbSl0pe3ZhciBhZT1TdHJpbmcoWltKXSk7c2U9IiI9PT1zZT9hZTpzZStNZS5jYWxsKCIwIiw3LWFlLmxlbmd0aCkrYWV9cmV0dXJuIHNlfSxlZT1mdW5jdGlvbihKLHNlLGFlKXtyZXR1cm4gMD09PXNlP2FlOnNlJTI9PTE/ZWUoSixzZS0xLGFlKkop''@;'; put 'put ''OmVlKEoqSixzZS8yLGFlKX07Z2UoZ2UuUCtnZS5GKighIVUmJigiMC4wMDAiIT09OGUtNS50b0ZpeGVkKDMpfHwiMSIhPT0uOS50b0ZpeGVkKDApfHwiMS4yNSIhPT0xLjI1NS50b0ZpeGVkKDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQo''@;'; put 'put ''MCkpfHwhTCg3NDI1MykoZnVuY3Rpb24oKXtVLmNhbGwoe30pfSkpLCJOdW1iZXIiLHt0b0ZpeGVkOmZ1bmN0aW9uKHNlKXt2YXIgQWUsa2UsU2UsSWUsYWU9RSh0aGlzLGllKSxmZT1CKHNlKSxkZT0iIix2ZT0iMCI7aWYoZmU8MHx8ZmU+MjApdGhyb3cgUmFuZ2VFcnJvcihpZSk7aWYoYWUh''@;'; put 'put ''PWFlKXJldHVybiJOYU4iO2lmKGFlPD0tMWUyMXx8YWU+PTFlMjEpcmV0dXJuIFN0cmluZyhhZSk7aWYoYWU8MCYmKGRlPSItIixhZT0tYWUpLGFlPjFlLTIxKWlmKEFlPWZ1bmN0aW9uKEope2Zvcih2YXIgc2U9MCxhZT1KO2FlPj00MDk2OylzZSs9MTIsYWUvPTQwOTY7Zm9yKDthZT49Mjsp''@;'; put 'put ''c2UrPTEsYWUvPTI7cmV0dXJuIHNlfShhZSplZSgyLDY5LDEpKS02OSxrZT1BZTwwP2FlKmVlKDIsLUFlLDEpOmFlL2VlKDIsQWUsMSksa2UqPTQ1MDM1OTk2MjczNzA0OTYsKEFlPTUyLUFlKT4wKXtmb3IoWSgwLGtlKSxTZT1mZTtTZT49NzspWSgxZTcsMCksU2UtPTc7Zm9yKFkoZWUoMTAs''@;'; put 'put ''U2UsMSksMCksU2U9QWUtMTtTZT49MjM7KVcoMTw8MjMpLFNlLT0yMztXKDE8PFNlKSxZKDEsMSksVygyKSx2ZT1OKCl9ZWxzZSBZKDAsa2UpLFkoMTw8LUFlLDApLHZlPU4oKStNZS5jYWxsKCIwIixmZSk7cmV0dXJuIHZlPWZlPjA/ZGUrKChJZT12ZS5sZW5ndGgpPD1mZT8iMC4iK01lLmNh''@;'; put 'put ''bGwoIjAiLGZlLUllKSt2ZTp2ZS5zbGljZSgwLEllLWZlKSsiLiIrdmUuc2xpY2UoSWUtZmUpKTpkZSt2ZX19KX0sMTkwMTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCg3NDI1MyksRT1MKDgzMzY1KSxNZT0xLi50b1ByZWNpc2lvbjtnZShnZS5QK2dlLkYq''@;'; put 'put ''KEIoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1NZS5jYWxsKDEsdm9pZCAwKX0pfHwhQihmdW5jdGlvbigpe01lLmNhbGwoe30pfSkpLCJOdW1iZXIiLHt0b1ByZWNpc2lvbjpmdW5jdGlvbihRKXt2YXIgWj1FKHRoaXMsIk51bWJlciN0b1ByZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24h''@;'; put 'put ''Iik7cmV0dXJuIHZvaWQgMD09PVE/TWUuY2FsbChaKTpNZS5jYWxsKFosUSl9fSl9LDc1MTE1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TK2dlLkYsIk9iamVjdCIse2Fzc2lnbjpMKDM1MzQ1KX0pfSw2ODEzMjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2Uu''@;'; put 'put ''UywiT2JqZWN0Iix7Y3JlYXRlOkwoNDI1MDMpfSl9LDM3NDcwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TK2dlLkYqIUwoNjcwNTcpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0aWVzOkwoMzU1ODgpfSl9LDQ4Mzg4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShn''@;'; put 'put ''ZS5TK2dlLkYqIUwoNjcwNTcpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0eTpMKDk5Mjc1KS5mfSl9LDg5Mzc1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDU1Mjg2KSxCPUwoODQ3MjgpLm9uRnJlZXplO0woMzMxNjApKCJmcmVlemUiLGZ1bmN0aW9uKEUpe3JldHVybiBmdW5jdGlvbihVKXtyZXR1''@;'; put 'put ''cm4gRSYmZ2UoVSk/RShCKFUpKTpVfX0pfSw5NDg4MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMjExMCksQj1MKDE4NjkzKS5mO0woMzMxNjApKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKE1lLFUpe3JldHVybiBCKGdlKE1lKSxVKX19KX0s''@;'; put 'put ''Nzk2MjI6KFhlLEplLEwpPT57TCgzMzE2MCkoImdldE93blByb3BlcnR5TmFtZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIEwoMzkzMjcpLmZ9KX0sNDE1MjA6KFhlLEplLEwpPT57dmFyIGdlPUwoMjA1MDgpLEI9TCg0NjgpO0woMzMxNjApKCJnZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oTWUpe3JldHVybiBCKGdlKE1lKSl9fSl9LDQ5ODkyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDU1Mjg2KTtMKDMzMTYwKSgiaXNFeHRlbnNpYmxlIixmdW5jdGlvbihCKXtyZXR1cm4gZnVuY3Rpb24oTWUpe3JldHVybiEhZ2UoTWUpJiYoIUJ8fEIoTWUpKX19KX0sNjQxNTc6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIGdlPUwoNTUyODYpO0woMzMxNjApKCJpc0Zyb3plbiIsZnVuY3Rpb24oQil7cmV0dXJuIGZ1bmN0aW9uKE1lKXtyZXR1cm4hZ2UoTWUpfHwhIUImJkIoTWUpfX0pfSwzNTA5NTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1NTI4Nik7TCgzMzE2MCkoImlzU2VhbGVkIixm''@;'; put 'put ''dW5jdGlvbihCKXtyZXR1cm4gZnVuY3Rpb24oTWUpe3JldHVybiFnZShNZSl8fCEhQiYmQihNZSl9fSl9LDk5MTc2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TLCJPYmplY3QiLHtpczpMKDI3MTk1KX0pfSwyNzQ3NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMDUwOCksQj1M''@;'; put 'put ''KDQ3MTg0KTtMKDMzMTYwKSgia2V5cyIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oTWUpe3JldHVybiBCKGdlKE1lKSl9fSl9LDg0NjcyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDU1Mjg2KSxCPUwoODQ3MjgpLm9uRnJlZXplO0woMzMxNjApKCJwcmV2ZW50RXh0ZW5zaW9ucyIsZnVuY3Rp''@;'; put 'put ''b24oRSl7cmV0dXJuIGZ1bmN0aW9uKFUpe3JldHVybiBFJiZnZShVKT9FKEIoVSkpOlV9fSl9LDQzNTMzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDU1Mjg2KSxCPUwoODQ3MjgpLm9uRnJlZXplO0woMzMxNjApKCJzZWFsIixmdW5jdGlvbihFKXtyZXR1cm4gZnVuY3Rpb24oVSl7cmV0dXJuIEUm''@;'; put 'put ''JmdlKFUpP0UoQihVKSk6VX19KX0sNjg4Mzg6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIk9iamVjdCIse3NldFByb3RvdHlwZU9mOkwoMjczNzUpLnNldH0pfSw5NjI1MzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDE0ODgpLEI9e307QltMKDg2MzE0''@;'; put 'put ''KSgidG9TdHJpbmdUYWciKV09InoiLEIrIiIhPSJbb2JqZWN0IHpdIiYmTCg3NzIzNCkoT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIitnZSh0aGlzKSsiXSJ9LCEwKX0sNjQyOTk6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCg0''@;'; put 'put ''Nzc0Myk7Z2UoZ2UuRytnZS5GKihwYXJzZUZsb2F0IT1CKSx7cGFyc2VGbG9hdDpCfSl9LDcxMDg0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPUwoNTU5NjApO2dlKGdlLkcrZ2UuRioocGFyc2VJbnQhPUIpLHtwYXJzZUludDpCfSl9LDIxNTcyOihYZSxKZSxMKT0+e3ZhciBnZT1M''@;'; put 'put ''KDQyOTg1KSxCPUwoMjQ5NjMpLEU9TCgyNzAwNyksTWU9KEwoMzgxNikuUmVmbGVjdHx8e30pLmFwcGx5LFU9RnVuY3Rpb24uYXBwbHk7Z2UoZ2UuUytnZS5GKiFMKDc0MjUzKShmdW5jdGlvbigpe01lKGZ1bmN0aW9uKCl7fSl9KSwiUmVmbGVjdCIse2FwcGx5OmZ1bmN0aW9uKFosaWUsbGUp''@;'; put 'put ''e3ZhciBZPUIoWiksVz1FKGxlKTtyZXR1cm4gTWU/TWUoWSxpZSxXKTpVLmNhbGwoWSxpZSxXKX19KX0sODIxMzk6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpLEI9TCg0MjUwMyksRT1MKDI0OTYzKSxNZT1MKDI3MDA3KSxVPUwoNTUyODYpLFE9TCg3NDI1MyksWj1MKDM0Mzk4KSxpZT0o''@;'; put 'put ''TCgzODE2KS5SZWZsZWN0fHx7fSkuY29uc3RydWN0LGxlPVEoZnVuY3Rpb24oKXtmdW5jdGlvbiBXKCl7fXJldHVybiEoaWUoZnVuY3Rpb24oKXt9LFtdLFcpaW5zdGFuY2VvZiBXKX0pLFk9IVEoZnVuY3Rpb24oKXtpZShmdW5jdGlvbigpe30pfSk7Z2UoZ2UuUytnZS5GKihsZXx8WSksIlJl''@;'; put 'put ''ZmxlY3QiLHtjb25zdHJ1Y3Q6ZnVuY3Rpb24oTixlZSl7RShOKSxNZShlZSk7dmFyIHE9YXJndW1lbnRzLmxlbmd0aDwzP046RShhcmd1bWVudHNbMl0pO2lmKFkmJiFsZSlyZXR1cm4gaWUoTixlZSxxKTtpZihOPT1xKXtzd2l0Y2goZWUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBOO2Nh''@;'; put 'put ''c2UgMTpyZXR1cm4gbmV3IE4oZWVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IE4oZWVbMF0sZWVbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IE4oZWVbMF0sZWVbMV0sZWVbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IE4oZWVbMF0sZWVbMV0sZWVbMl0sZWVbM10pfXZhciBKPVtudWxsXTtyZXR1cm4gSi5w''@;'; put 'put ''dXNoLmFwcGx5KEosZWUpLG5ldyhaLmFwcGx5KE4sSikpfXZhciBzZT1xLnByb3RvdHlwZSxhZT1CKFUoc2UpP3NlOk9iamVjdC5wcm90b3R5cGUpLGZlPUZ1bmN0aW9uLmFwcGx5LmNhbGwoTixhZSxlZSk7cmV0dXJuIFUoZmUpP2ZlOmFlfX0pfSwxMDY4NTooWGUsSmUsTCk9Pnt2YXIgZ2U9''@;'; put 'put ''TCg5OTI3NSksQj1MKDQyOTg1KSxFPUwoMjcwMDcpLE1lPUwoMjE2ODkpO0IoQi5TK0IuRipMKDc0MjUzKShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkoZ2UuZih7fSwxLHt2YWx1ZToxfSksMSx7dmFsdWU6Mn0pfSksIlJlZmxlY3QiLHtkZWZpbmVQcm9wZXJ0eTpmdW5jdGlv''@;'; put 'put ''bihRLFosaWUpe0UoUSksWj1NZShaLCEwKSxFKGllKTt0cnl7cmV0dXJuIGdlLmYoUSxaLGllKSwhMH1jYXRjaChsZSl7cmV0dXJuITF9fX0pfSw4NTUzNTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDE4NjkzKS5mLEU9TCgyNzAwNyk7Z2UoZ2UuUywiUmVmbGVjdCIse2RlbGV0''@;'; put 'put ''ZVByb3BlcnR5OmZ1bmN0aW9uKFUsUSl7dmFyIFo9QihFKFUpLFEpO3JldHVybiEoWiYmIVouY29uZmlndXJhYmxlKSYmZGVsZXRlIFVbUV19fSl9LDE3MzQ3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg0Mjk4NSksQj1MKDI3MDA3KSxFPWZ1bmN0aW9uKE1lKXt0aGlzLl90''@;'; put 'put ''PUIoTWUpLHRoaXMuX2k9MDt2YXIgUSxVPXRoaXMuX2s9W107Zm9yKFEgaW4gTWUpVS5wdXNoKFEpfTtMKDQ5OTg4KShFLCJPYmplY3QiLGZ1bmN0aW9uKCl7dmFyIFEsVT10aGlzLl9rO2Rve2lmKHRoaXMuX2k+PVUubGVuZ3RoKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19d2hpbGUo''@;'; put 'put ''ISgoUT1VW3RoaXMuX2krK10paW4gdGhpcy5fdCkpO3JldHVybnt2YWx1ZTpRLGRvbmU6ITF9fSksZ2UoZ2UuUywiUmVmbGVjdCIse2VudW1lcmF0ZTpmdW5jdGlvbihVKXtyZXR1cm4gbmV3IEUoVSl9fSl9LDk2NjMzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDE4NjkzKSxCPUwoNDI5ODUpLEU9''@;'; put 'put ''TCgyNzAwNyk7QihCLlMsIlJlZmxlY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gZ2UuZihFKFUpLFEpfX0pfSw2ODk4OTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDQ2OCksRT1MKDI3MDA3KTtnZShnZS5TLCJSZWZsZWN0Iix7Z2V0''@;'; put 'put ''UHJvdG90eXBlT2Y6ZnVuY3Rpb24oVSl7cmV0dXJuIEIoRShVKSl9fSl9LDgzMDQ5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDE4NjkzKSxCPUwoNDY4KSxFPUwoNzkxODEpLE1lPUwoNDI5ODUpLFU9TCg1NTI4NiksUT1MKDI3MDA3KTtNZShNZS5TLCJSZWZsZWN0Iix7Z2V0OmZ1bmN0aW9uIFoo''@;'; put 'put ''aWUsbGUpe3ZhciBXLE4sWT1hcmd1bWVudHMubGVuZ3RoPDM/aWU6YXJndW1lbnRzWzJdO3JldHVybiBRKGllKT09PVk/aWVbbGVdOihXPWdlLmYoaWUsbGUpKT9FKFcsInZhbHVlIik/Vy52YWx1ZTp2b2lkIDAhPT1XLmdldD9XLmdldC5jYWxsKFkpOnZvaWQgMDpVKE49QihpZSkpP1ooTixs''@;'; put 'put ''ZSxZKTp2b2lkIDB9fSl9LDc4MjcwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KTtnZShnZS5TLCJSZWZsZWN0Iix7aGFzOmZ1bmN0aW9uKEUsTWUpe3JldHVybiBNZSBpbiBFfX0pfSw2NDUxMDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSksQj1MKDI3MDA3KSxFPU9iamVjdC5pc0V4''@;'; put 'put ''dGVuc2libGU7Z2UoZ2UuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbihVKXtyZXR1cm4gQihVKSwhRXx8RShVKX19KX0sNzM5ODQ6KFhlLEplLEwpPT57dmFyIGdlPUwoNDI5ODUpO2dlKGdlLlMsIlJlZmxlY3QiLHtvd25LZXlzOkwoNTc2NDMpfSl9LDc1NzY5OihYZSxKZSxM''@;'; put 'put ''KT0+e3ZhciBnZT1MKDQyOTg1KSxCPUwoMjcwMDcpLEU9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO2dlKGdlLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbihVKXtCKFUpO3RyeXtyZXR1cm4gRSYmRShVKSwhMH1jYXRjaChRKXtyZXR1cm4hMX19fSl9LDk2MDE0OihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPUwoMjczNzUpO0ImJmdlKGdlLlMsIlJlZmxlY3QiLHtzZXRQcm90b3R5cGVPZjpmdW5jdGlvbihNZSxVKXtCLmNoZWNrKE1lLFUpO3RyeXtyZXR1cm4gQi5zZXQoTWUsVSksITB9Y2F0Y2goUSl7cmV0dXJuITF9fX0pfSw1MDA1NTooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgZ2U9TCg5OTI3NSksQj1MKDE4NjkzKSxFPUwoNDY4KSxNZT1MKDc5MTgxKSxVPUwoNDI5ODUpLFE9TCg5MDY4MSksWj1MKDI3MDA3KSxpZT1MKDU1Mjg2KTtVKFUuUywiUmVmbGVjdCIse3NldDpmdW5jdGlvbiBsZShZLFcsTil7dmFyIEosc2UsZWU9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aDw0P1k6YXJndW1lbnRzWzNdLHE9Qi5mKFooWSksVyk7aWYoIXEpe2lmKGllKHNlPUUoWSkpKXJldHVybiBsZShzZSxXLE4sZWUpO3E9USgwKX1pZihNZShxLCJ2YWx1ZSIpKXtpZighMT09PXEud3JpdGFibGV8fCFpZShlZSkpcmV0dXJuITE7aWYoSj1CLmYoZWUsVykpe2lmKEouZ2V0fHxK''@;'; put 'put ''LnNldHx8ITE9PT1KLndyaXRhYmxlKXJldHVybiExO0oudmFsdWU9TixnZS5mKGVlLFcsSil9ZWxzZSBnZS5mKGVlLFcsUSgwLE4pKTtyZXR1cm4hMH1yZXR1cm4gdm9pZCAwIT09cS5zZXQmJihxLnNldC5jYWxsKGVlLE4pLCEwKX19KX0sODM5NDY6KFhlLEplLEwpPT57dmFyIGdlPUwoMzgx''@;'; put 'put ''NiksQj1MKDQwMjY2KSxFPUwoOTkyNzUpLmYsTWU9TCgyMDYxNikuZixVPUwoNTUzNjQpLFE9TCg1MzIxOCksWj1nZS5SZWdFeHAsaWU9WixsZT1aLnByb3RvdHlwZSxZPS9hL2csVz0vYS9nLE49bmV3IFooWSkhPT1ZO2lmKEwoNjcwNTcpJiYoIU58fEwoNzQyNTMpKGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIFdbTCg4NjMxNCkoIm1hdGNoIildPSExLFooWSkhPVl8fFooVyk9PVd8fCIvYS9pIiE9WihZLCJpIil9KSkpe1o9ZnVuY3Rpb24oYWUsZmUpe3ZhciBkZT10aGlzIGluc3RhbmNlb2YgWix2ZT1VKGFlKSxBZT12b2lkIDA9PT1mZTtyZXR1cm4hZGUmJnZlJiZhZS5jb25zdHJ1Y3Rvcj09''@;'; put 'put ''PVomJkFlP2FlOkIoTj9uZXcgaWUodmUmJiFBZT9hZS5zb3VyY2U6YWUsZmUpOmllKCh2ZT1hZSBpbnN0YW5jZW9mIFopP2FlLnNvdXJjZTphZSx2ZSYmQWU/US5jYWxsKGFlKTpmZSksZGU/dGhpczpsZSxaKX07Zm9yKHZhciBlZT1mdW5jdGlvbihzZSl7c2UgaW4gWnx8RShaLHNlLHtjb25m''@;'; put 'put ''aWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGllW3NlXX0sc2V0OmZ1bmN0aW9uKGFlKXtpZVtzZV09YWV9fSl9LHE9TWUoaWUpLEo9MDtxLmxlbmd0aD5KOyllZShxW0orK10pO2xlLmNvbnN0cnVjdG9yPVosWi5wcm90b3R5cGU9bGUsTCg3NzIzNCkoZ2UsIlJlZ0V4cCIsWil9''@;'; put 'put ''TCgyOTc0KSgiUmVnRXhwIil9LDE4MjY5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgyMTE2NSk7TCg0Mjk4NSkoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6Z2UhPT0vLi8uZXhlY30se2V4ZWM6Z2V9KX0sNzY3NzQ6KFhlLEplLEwpPT57TCg2NzA1NykmJiJn''@;'; put 'put ''IiE9Ly4vZy5mbGFncyYmTCg5OTI3NSkuZihSZWdFeHAucHJvdG90eXBlLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6TCg1MzIxOCl9KX0sMjE0NjY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDI3MDA3KSxCPUwoMTA4NzUpLEU9TCg3Njc5MyksTWU9TCgyNzc4Nyk7''@;'; put 'put ''TCgyODA4MikoIm1hdGNoIiwxLGZ1bmN0aW9uKFUsUSxaLGllKXtyZXR1cm5bZnVuY3Rpb24oWSl7dmFyIFc9VSh0aGlzKSxOPW51bGw9PVk/dm9pZCAwOllbUV07cmV0dXJuIHZvaWQgMCE9PU4/Ti5jYWxsKFksVyk6bmV3IFJlZ0V4cChZKVtRXShTdHJpbmcoVykpfSxmdW5jdGlvbihsZSl7''@;'; put 'put ''dmFyIFk9aWUoWixsZSx0aGlzKTtpZihZLmRvbmUpcmV0dXJuIFkudmFsdWU7dmFyIFc9Z2UobGUpLE49U3RyaW5nKHRoaXMpO2lmKCFXLmdsb2JhbClyZXR1cm4gTWUoVyxOKTt2YXIgZWU9Vy51bmljb2RlO1cubGFzdEluZGV4PTA7Zm9yKHZhciBzZSxxPVtdLEo9MDtudWxsIT09KHNlPU1l''@;'; put 'put ''KFcsTikpOyl7dmFyIGFlPVN0cmluZyhzZVswXSk7cVtKXT1hZSwiIj09PWFlJiYoVy5sYXN0SW5kZXg9RShOLEIoVy5sYXN0SW5kZXgpLGVlKSksSisrfXJldHVybiAwPT09Sj9udWxsOnF9XX0pfSw1OTM1NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjcwMDcpLEI9TCgy''@;'; put 'put ''MDUwOCksRT1MKDEwODc1KSxNZT1MKDgxNDY3KSxVPUwoNzY3OTMpLFE9TCgyNzc4NyksWj1NYXRoLm1heCxpZT1NYXRoLm1pbixsZT1NYXRoLmZsb29yLFk9L1wkKFskJmAnXXxcZFxkP3w8W14+XSo+KS9nLFc9L1wkKFskJmAnXXxcZFxkPykvZyxOPWZ1bmN0aW9uKGVlKXtyZXR1cm4gdm9p''@;'; put 'put ''ZCAwPT09ZWU/ZWU6U3RyaW5nKGVlKX07TCgyODA4MikoInJlcGxhY2UiLDIsZnVuY3Rpb24oZWUscSxKLHNlKXtyZXR1cm5bZnVuY3Rpb24oZGUsdmUpe3ZhciBBZT1lZSh0aGlzKSxrZT1udWxsPT1kZT92b2lkIDA6ZGVbcV07cmV0dXJuIHZvaWQgMCE9PWtlP2tlLmNhbGwoZGUsQWUsdmUp''@;'; put 'put ''OkouY2FsbChTdHJpbmcoQWUpLGRlLHZlKX0sZnVuY3Rpb24oZmUsZGUpe3ZhciB2ZT1zZShKLGZlLHRoaXMsZGUpO2lmKHZlLmRvbmUpcmV0dXJuIHZlLnZhbHVlO3ZhciBBZT1nZShmZSksa2U9U3RyaW5nKHRoaXMpLFNlPSJmdW5jdGlvbiI9PXR5cGVvZiBkZTtTZXx8KGRlPVN0cmluZyhk''@;'; put 'put ''ZSkpO3ZhciBJZT1BZS5nbG9iYWw7aWYoSWUpe3ZhciBUZT1BZS51bmljb2RlO0FlLmxhc3RJbmRleD0wfWZvcih2YXIgRWU9W107Oyl7dmFyIGhlPVEoQWUsa2UpO2lmKG51bGw9PT1oZXx8KEVlLnB1c2goaGUpLCFJZSkpYnJlYWs7IiI9PT1TdHJpbmcoaGVbMF0pJiYoQWUubGFzdEluZGV4''@;'; put 'put ''PVUoa2UsRShBZS5sYXN0SW5kZXgpLFRlKSl9Zm9yKHZhciB6PSIiLG5lPTAsdGU9MDt0ZTxFZS5sZW5ndGg7dGUrKyl7aGU9RWVbdGVdO2Zvcih2YXIgeD1TdHJpbmcoaGVbMF0pLFA9WihpZShNZShoZS5pbmRleCksa2UubGVuZ3RoKSwwKSxWPVtdLFQ9MTtUPGhlLmxlbmd0aDtUKyspVi5w''@;'; put 'put ''dXNoKE4oaGVbVF0pKTt2YXIgUz1oZS5ncm91cHM7aWYoU2Upe3ZhciBGPVt4XS5jb25jYXQoVixQLGtlKTt2b2lkIDAhPT1TJiZGLnB1c2goUyk7dmFyIHllPVN0cmluZyhkZS5hcHBseSh2b2lkIDAsRikpfWVsc2UgeWU9YWUoeCxrZSxQLFYsUyxkZSk7UD49bmUmJih6Kz1rZS5zbGljZShu''@;'; put 'put ''ZSxQKSt5ZSxuZT1QK3gubGVuZ3RoKX1yZXR1cm4geitrZS5zbGljZShuZSl9XTtmdW5jdGlvbiBhZShmZSxkZSx2ZSxBZSxrZSxTZSl7dmFyIEllPXZlK2ZlLmxlbmd0aCxUZT1BZS5sZW5ndGgsRWU9VztyZXR1cm4gdm9pZCAwIT09a2UmJihrZT1CKGtlKSxFZT1ZKSxKLmNhbGwoU2UsRWUs''@;'; put 'put ''ZnVuY3Rpb24oaGUsTyl7dmFyIHo7c3dpdGNoKE8uY2hhckF0KDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiBmZTtjYXNlImAiOnJldHVybiBkZS5zbGljZSgwLHZlKTtjYXNlIiciOnJldHVybiBkZS5zbGljZShJZSk7Y2FzZSI8Ijp6PWtlW08uc2xpY2UoMSwtMSldO2Jy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6dmFyIG5lPStPO2lmKDA9PT1uZSlyZXR1cm4gaGU7aWYobmU+VGUpe3ZhciB0ZT1sZShuZS8xMCk7cmV0dXJuIDA9PT10ZT9oZTp0ZTw9VGU/dm9pZCAwPT09QWVbdGUtMV0/Ty5jaGFyQXQoMSk6QWVbdGUtMV0rTy5jaGFyQXQoMSk6aGV9ej1BZVtuZS0xXX1yZXR1cm4g''@;'; put 'put ''dm9pZCAwPT09ej8iIjp6fSl9fSl9LDc2MTQyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgyNzAwNyksQj1MKDI3MTk1KSxFPUwoMjc3ODcpO0woMjgwODIpKCJzZWFyY2giLDEsZnVuY3Rpb24oTWUsVSxRLFope3JldHVybltmdW5jdGlvbihsZSl7dmFyIFk9TWUodGhpcyks''@;'; put 'put ''Vz1udWxsPT1sZT92b2lkIDA6bGVbVV07cmV0dXJuIHZvaWQgMCE9PVc/Vy5jYWxsKGxlLFkpOm5ldyBSZWdFeHAobGUpW1VdKFN0cmluZyhZKSl9LGZ1bmN0aW9uKGllKXt2YXIgbGU9WihRLGllLHRoaXMpO2lmKGxlLmRvbmUpcmV0dXJuIGxlLnZhbHVlO3ZhciBZPWdlKGllKSxXPVN0cmlu''@;'; put 'put ''Zyh0aGlzKSxOPVkubGFzdEluZGV4O0IoTiwwKXx8KFkubGFzdEluZGV4PTApO3ZhciBlZT1FKFksVyk7cmV0dXJuIEIoWS5sYXN0SW5kZXgsTil8fChZLmxhc3RJbmRleD1OKSxudWxsPT09ZWU/LTE6ZWUuaW5kZXh9XX0pfSw1MTg3NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdl''@;'; put 'put ''PUwoNTUzNjQpLEI9TCgyNzAwNyksRT1MKDU4MzY0KSxNZT1MKDc2NzkzKSxVPUwoMTA4NzUpLFE9TCgyNzc4NyksWj1MKDIxMTY1KSxpZT1MKDc0MjUzKSxsZT1NYXRoLm1pbixZPVtdLnB1c2gsVz0ic3BsaXQiLE49Imxlbmd0aCIsZWU9Imxhc3RJbmRleCIscT00Mjk0OTY3Mjk1LEo9IWll''@;'; put 'put ''KGZ1bmN0aW9uKCl7UmVnRXhwKHEsInkiKX0pO0woMjgwODIpKCJzcGxpdCIsMixmdW5jdGlvbihzZSxhZSxmZSxkZSl7dmFyIHZlO3JldHVybiB2ZT0iYyI9PSJhYmJjIltXXSgvKGIpKi8pWzFdfHw0IT0idGVzdCJbV10oLyg/OikvLC0xKVtOXXx8MiE9ImFiIltXXSgvKD86YWIpKi8pW05d''@;'; put 'put ''fHw0IT0iLiJbV10oLyguPykoLj8pLylbTl18fCIuIltXXSgvKCkoKS8pW05dPjF8fCIiW1ddKC8uPy8pW05dP2Z1bmN0aW9uKEFlLGtlKXt2YXIgU2U9U3RyaW5nKHRoaXMpO2lmKHZvaWQgMD09PUFlJiYwPT09a2UpcmV0dXJuW107aWYoIWdlKEFlKSlyZXR1cm4gZmUuY2FsbChTZSxBZSxr''@;'; put 'put ''ZSk7Zm9yKHZhciB6LG5lLHRlLEllPVtdLEVlPTAsaGU9dm9pZCAwPT09a2U/cTprZT4+PjAsTz1uZXcgUmVnRXhwKEFlLnNvdXJjZSwoQWUuaWdub3JlQ2FzZT8iaSI6IiIpKyhBZS5tdWx0aWxpbmU/Im0iOiIiKSsoQWUudW5pY29kZT8idSI6IiIpKyhBZS5zdGlja3k/InkiOiIiKSsiZyIp''@;'; put 'put ''Oyh6PVouY2FsbChPLFNlKSkmJiEoKG5lPU9bZWVdKT5FZSYmKEllLnB1c2goU2Uuc2xpY2UoRWUsei5pbmRleCkpLHpbTl0+MSYmei5pbmRleDxTZVtOXSYmWS5hcHBseShJZSx6LnNsaWNlKDEpKSx0ZT16WzBdW05dLEVlPW5lLEllW05dPj1oZSkpOylPW2VlXT09PXouaW5kZXgmJk9bZWVd''@;'; put 'put ''Kys7cmV0dXJuIEVlPT09U2VbTl0/KHRlfHwhTy50ZXN0KCIiKSkmJkllLnB1c2goIiIpOkllLnB1c2goU2Uuc2xpY2UoRWUpKSxJZVtOXT5oZT9JZS5zbGljZSgwLGhlKTpJZX06IjAiW1ddKHZvaWQgMCwwKVtOXT9mdW5jdGlvbihBZSxrZSl7cmV0dXJuIHZvaWQgMD09PUFlJiYwPT09a2U/''@;'; put 'put ''W106ZmUuY2FsbCh0aGlzLEFlLGtlKX06ZmUsW2Z1bmN0aW9uKGtlLFNlKXt2YXIgSWU9c2UodGhpcyksVGU9bnVsbD09a2U/dm9pZCAwOmtlW2FlXTtyZXR1cm4gdm9pZCAwIT09VGU/VGUuY2FsbChrZSxJZSxTZSk6dmUuY2FsbChTdHJpbmcoSWUpLGtlLFNlKX0sZnVuY3Rpb24oQWUsa2Up''@;'; put 'put ''e3ZhciBTZT1kZSh2ZSxBZSx0aGlzLGtlLHZlIT09ZmUpO2lmKFNlLmRvbmUpcmV0dXJuIFNlLnZhbHVlO3ZhciBJZT1CKEFlKSxUZT1TdHJpbmcodGhpcyksRWU9RShJZSxSZWdFeHApLGhlPUllLnVuaWNvZGUsej1uZXcgRWUoSj9JZToiXig/OiIrSWUuc291cmNlKyIpIiwoSWUuaWdub3Jl''@;'; put 'put ''Q2FzZT8iaSI6IiIpKyhJZS5tdWx0aWxpbmU/Im0iOiIiKSsoSWUudW5pY29kZT8idSI6IiIpKyhKPyJ5IjoiZyIpKSxuZT12b2lkIDA9PT1rZT9xOmtlPj4+MDtpZigwPT09bmUpcmV0dXJuW107aWYoMD09PVRlLmxlbmd0aClyZXR1cm4gbnVsbD09PVEoeixUZSk/W1RlXTpbXTtmb3IodmFy''@;'; put 'put ''IHRlPTAseD0wLFA9W107eDxUZS5sZW5ndGg7KXt6Lmxhc3RJbmRleD1KP3g6MDt2YXIgVCxWPVEoeixKP1RlOlRlLnNsaWNlKHgpKTtpZihudWxsPT09Vnx8KFQ9bGUoVSh6Lmxhc3RJbmRleCsoSj8wOngpKSxUZS5sZW5ndGgpKT09PXRlKXg9TWUoVGUseCxoZSk7ZWxzZXtpZihQLnB1c2go''@;'; put 'put ''VGUuc2xpY2UodGUseCkpLFAubGVuZ3RoPT09bmUpcmV0dXJuIFA7Zm9yKHZhciBTPTE7Uzw9Vi5sZW5ndGgtMTtTKyspaWYoUC5wdXNoKFZbU10pLFAubGVuZ3RoPT09bmUpcmV0dXJuIFA7eD10ZT1UfX1yZXR1cm4gUC5wdXNoKFRlLnNsaWNlKHRlKSksUH1dfSl9LDY2MTA4OihYZSxKZSxM''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0IjtMKDc2Nzc0KTt2YXIgZ2U9TCgyNzAwNyksQj1MKDUzMjE4KSxFPUwoNjcwNTcpLE1lPSJ0b1N0cmluZyIsVT0vLi9bTWVdLFE9ZnVuY3Rpb24oWil7TCg3NzIzNCkoUmVnRXhwLnByb3RvdHlwZSxNZSxaLCEwKX07TCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4i''@;'; put 'put ''L2EvYiIhPVUuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pP1EoZnVuY3Rpb24oKXt2YXIgaWU9Z2UodGhpcyk7cmV0dXJuIi8iLmNvbmNhdChpZS5zb3VyY2UsIi8iLCJmbGFncyJpbiBpZT9pZS5mbGFnczohRSYmaWUgaW5zdGFuY2VvZiBSZWdFeHA/Qi5jYWxsKGllKTp2b2lkIDAp''@;'; put 'put ''fSk6VS5uYW1lIT1NZSYmUShmdW5jdGlvbigpe3JldHVybiBVLmNhbGwodGhpcyl9KX0sOTgxODQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDk4MjQpLEI9TCgxNjE2KTtYZS5leHBvcnRzPUwoNDU3OTUpKCJTZXQiLGZ1bmN0aW9uKE1lKXtyZXR1cm4gZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gTWUodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKFUpe3JldHVybiBnZS5kZWYoQih0aGlzLCJTZXQiKSxVPTA9PT1VPzA6VSxVKX19LGdlKX0sNDA4NTY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJh''@;'; put 'put ''bmNob3IiLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oRSl7cmV0dXJuIGdlKHRoaXMsImEiLCJuYW1lIixFKX19KX0sODA3MDM6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJiaWciLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ2UodGhpcywi''@;'; put 'put ''YmlnIiwiIiwiIil9fSl9LDkxNTM5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDI5Mzk1KSgiYmxpbmsiLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ2UodGhpcywiYmxpbmsiLCIiLCIiKX19KX0sNTI5MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5''@;'; put 'put ''NSkoImJvbGQiLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ2UodGhpcywiYiIsIiIsIiIpfX0pfSwyOTUzOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCgyNDQ5NikoITEpO2dlKGdlLlAsIlN0cmluZyIse2NvZGVQb2ludEF0OmZ1''@;'; put 'put ''bmN0aW9uKE1lKXtyZXR1cm4gQih0aGlzLE1lKX19KX0sOTY2MjA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDQyOTg1KSxCPUwoMTA4NzUpLEU9TCg0MjA5NCksTWU9ImVuZHNXaXRoIixVPSIiW01lXTtnZShnZS5QK2dlLkYqTCg4ODUyKShNZSksIlN0cmluZyIse2VuZHNX''@;'; put 'put ''aXRoOmZ1bmN0aW9uKFope3ZhciBpZT1FKHRoaXMsWixNZSksbGU9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsWT1CKGllLmxlbmd0aCksVz12b2lkIDA9PT1sZT9ZOk1hdGgubWluKEIobGUpLFkpLE49U3RyaW5nKFopO3JldHVybiBVP1UuY2FsbChpZSxOLFcpOmll''@;'; put 'put ''LnNsaWNlKFctTi5sZW5ndGgsVyk9PT1OfX0pfSw0NTE3NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5NSkoImZpeGVkIixmdW5jdGlvbihnZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGdlKHRoaXMsInR0IiwiIiwiIil9fSl9LDczNjk0OihYZSxKZSxMKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtMKDI5Mzk1KSgiZm9udGNvbG9yIixmdW5jdGlvbihnZSl7cmV0dXJuIGZ1bmN0aW9uKEUpe3JldHVybiBnZSh0aGlzLCJmb250IiwiY29sb3IiLEUpfX0pfSwzNzY0ODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5NSkoImZvbnRzaXplIixmdW5jdGlvbihnZSl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKEUpe3JldHVybiBnZSh0aGlzLCJmb250Iiwic2l6ZSIsRSl9fSl9LDUwMTkxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPUwoOTIzMzcpLEU9U3RyaW5nLmZyb21DaGFyQ29kZSxNZT1TdHJpbmcuZnJvbUNvZGVQb2ludDtnZShnZS5TK2dlLkYqKCEhTWUmJjEhPU1l''@;'; put 'put ''Lmxlbmd0aCksIlN0cmluZyIse2Zyb21Db2RlUG9pbnQ6ZnVuY3Rpb24oUSl7Zm9yKHZhciBZLFo9W10saWU9YXJndW1lbnRzLmxlbmd0aCxsZT0wO2llPmxlOyl7aWYoWT0rYXJndW1lbnRzW2xlKytdLEIoWSwxMTE0MTExKSE9PVkpdGhyb3cgUmFuZ2VFcnJvcihZKyIgaXMgbm90IGEgdmFs''@;'; put 'put ''aWQgY29kZSBwb2ludCIpO1oucHVzaChZPDY1NTM2P0UoWSk6RSg1NTI5NisoKFktPTY1NTM2KT4+MTApLFklMTAyNCs1NjMyMCkpfXJldHVybiBaLmpvaW4oIiIpfX0pfSw2Mjg1MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoNDI5ODUpLEI9TCg0MjA5NCksRT0iaW5jbHVk''@;'; put 'put ''ZXMiO2dlKGdlLlArZ2UuRipMKDg4NTIpKEUpLCJTdHJpbmciLHtpbmNsdWRlczpmdW5jdGlvbihVKXtyZXR1cm4hIX5CKHRoaXMsVSxFKS5pbmRleE9mKFUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwyNzc5NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''TCgyOTM5NSkoIml0YWxpY3MiLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ2UodGhpcywiaSIsIiIsIiIpfX0pfSwzOTExNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjQ0OTYpKCEwKTtMKDQyOTIzKShTdHJpbmcsIlN0cmluZyIsZnVuY3Rpb24o''@;'; put 'put ''Qil7dGhpcy5fdD1TdHJpbmcoQiksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciBNZSxCPXRoaXMuX3QsRT10aGlzLl9pO3JldHVybiBFPj1CLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9OihNZT1nZShCLEUpLHRoaXMuX2krPU1lLmxlbmd0aCx7dmFsdWU6TWUsZG9uZTohMX0pfSl9''@;'; put 'put ''LDQ1MzE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJsaW5rIixmdW5jdGlvbihnZSl7cmV0dXJuIGZ1bmN0aW9uKEUpe3JldHVybiBnZSh0aGlzLCJhIiwiaHJlZiIsRSl9fSl9LDk4MzA2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQyOTg1KSxCPUwoMjIxMTApLEU9TCgxMDg3''@;'; put 'put ''NSk7Z2UoZ2UuUywiU3RyaW5nIix7cmF3OmZ1bmN0aW9uKFUpe2Zvcih2YXIgUT1CKFUucmF3KSxaPUUoUS5sZW5ndGgpLGllPWFyZ3VtZW50cy5sZW5ndGgsbGU9W10sWT0wO1o+WTspbGUucHVzaChTdHJpbmcoUVtZKytdKSksWTxpZSYmbGUucHVzaChTdHJpbmcoYXJndW1lbnRzW1ldKSk7''@;'; put 'put ''cmV0dXJuIGxlLmpvaW4oIiIpfX0pfSwxMDgyMzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0Mjk4NSk7Z2UoZ2UuUCwiU3RyaW5nIix7cmVwZWF0OkwoNjg1OTUpfSl9LDIzNjA1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDI5Mzk1KSgic21hbGwiLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gZ2UodGhpcywic21hbGwiLCIiLCIiKX19KX0sMTc3MzI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDQyOTg1KSxCPUwoMTA4NzUpLEU9TCg0MjA5NCksTWU9InN0YXJ0c1dpdGgiLFU9IiJbTWVdO2dlKGdlLlArZ2UuRipMKDg4NTIpKE1lKSwiU3Ry''@;'; put 'put ''aW5nIix7c3RhcnRzV2l0aDpmdW5jdGlvbihaKXt2YXIgaWU9RSh0aGlzLFosTWUpLGxlPUIoTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsaWUubGVuZ3RoKSksWT1TdHJpbmcoWik7cmV0dXJuIFU/VS5jYWxsKGllLFksbGUpOmllLnNsaWNlKGxlLGxl''@;'; put 'put ''K1kubGVuZ3RoKT09PVl9fSl9LDY3ODA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJzdHJpa2UiLGZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ2UodGhpcywic3RyaWtlIiwiIiwiIil9fSl9LDY5OTM3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtM''@;'; put 'put ''KDI5Mzk1KSgic3ViIixmdW5jdGlvbihnZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGdlKHRoaXMsInN1YiIsIiIsIiIpfX0pfSwxMDUxMTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5NSkoInN1cCIsZnVuY3Rpb24oZ2Upe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnZSh0''@;'; put 'put ''aGlzLCJzdXAiLCIiLCIiKX19KX0sNjQ1NjQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjk1OTkpKCJ0cmltIixmdW5jdGlvbihnZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGdlKHRoaXMsMyl9fSl9LDk1NzY3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgzODE2''@;'; put 'put ''KSxCPUwoNzkxODEpLEU9TCg2NzA1NyksTWU9TCg0Mjk4NSksVT1MKDc3MjM0KSxRPUwoODQ3MjgpLktFWSxaPUwoNzQyNTMpLGllPUwoMzgyNSksbGU9TCgyMjk0MyksWT1MKDkzOTUzKSxXPUwoODYzMTQpLE49TCgyODc4NyksZWU9TCgzNjA3NCkscT1MKDU1NDEpLEo9TCg0MzAyKSxzZT1M''@;'; put 'put ''KDI3MDA3KSxhZT1MKDU1Mjg2KSxmZT1MKDIwNTA4KSxkZT1MKDIyMTEwKSx2ZT1MKDIxNjg5KSxBZT1MKDkwNjgxKSxrZT1MKDQyNTAzKSxTZT1MKDM5MzI3KSxJZT1MKDE4NjkzKSxUZT1MKDY0NTQ4KSxFZT1MKDk5Mjc1KSxoZT1MKDQ3MTg0KSxPPUllLmYsej1FZS5mLG5lPVNlLmYsdGU9''@;'; put 'put ''Z2UuU3ltYm9sLHg9Z2UuSlNPTixQPXgmJnguc3RyaW5naWZ5LFY9InByb3RvdHlwZSIsVD1XKCJfaGlkZGVuIiksUz1XKCJ0b1ByaW1pdGl2ZSIpLEY9e30ucHJvcGVydHlJc0VudW1lcmFibGUseWU9aWUoInN5bWJvbC1yZWdpc3RyeSIpLENlPWllKCJzeW1ib2xzIiksRGU9aWUoIm9wLXN5''@;'; put 'put ''bWJvbHMiKSxQZT1PYmplY3RbVl0sUWU9ImZ1bmN0aW9uIj09dHlwZW9mIHRlJiYhIVRlLmYsJGU9Z2UuUU9iamVjdCxndD0hJGV8fCEkZVtWXXx8ISRlW1ZdLmZpbmRDaGlsZCx5dD1FJiZaKGZ1bmN0aW9uKCl7cmV0dXJuIDchPWtlKHooe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''eih0aGlzLCJhIix7dmFsdWU6N30pLmF9fSkpLmF9KT9mdW5jdGlvbih6ZSxZZSxBdCl7dmFyIGp0PU8oUGUsWWUpO2p0JiZkZWxldGUgUGVbWWVdLHooemUsWWUsQXQpLGp0JiZ6ZSE9PVBlJiZ6KFBlLFllLGp0KX06eixwdD1mdW5jdGlvbih6ZSl7dmFyIFllPUNlW3plXT1rZSh0ZVtWXSk7''@;'; put 'put ''cmV0dXJuIFllLl9rPXplLFllfSxtdD1RZSYmInN5bWJvbCI9PXR5cGVvZiB0ZS5pdGVyYXRvcj9mdW5jdGlvbih6ZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB6ZX06ZnVuY3Rpb24oemUpe3JldHVybiB6ZSBpbnN0YW5jZW9mIHRlfSx2dD1mdW5jdGlvbihZZSxBdCxqdCl7cmV0dXJuIFll''@;'; put 'put ''PT09UGUmJnZ0KERlLEF0LGp0KSxzZShZZSksQXQ9dmUoQXQsITApLHNlKGp0KSxCKENlLEF0KT8oanQuZW51bWVyYWJsZT8oQihZZSxUKSYmWWVbVF1bQXRdJiYoWWVbVF1bQXRdPSExKSxqdD1rZShqdCx7ZW51bWVyYWJsZTpBZSgwLCExKX0pKTooQihZZSxUKXx8eihZZSxULEFlKDEse30p''@;'; put 'put ''KSxZZVtUXVtBdF09ITApLHl0KFllLEF0LGp0KSk6eihZZSxBdCxqdCl9LGZ0PWZ1bmN0aW9uKFllLEF0KXtzZShZZSk7Zm9yKHZhciBwbixqdD1xKEF0PWRlKEF0KSksSnQ9MCxtbj1qdC5sZW5ndGg7bW4+SnQ7KXZ0KFllLHBuPWp0W0p0KytdLEF0W3BuXSk7cmV0dXJuIFllfSxvbj1mdW5j''@;'; put 'put ''dGlvbihZZSl7dmFyIEF0PUYuY2FsbCh0aGlzLFllPXZlKFllLCEwKSk7cmV0dXJuISh0aGlzPT09UGUmJkIoQ2UsWWUpJiYhQihEZSxZZSkpJiYoIShBdHx8IUIodGhpcyxZZSl8fCFCKENlLFllKXx8Qih0aGlzLFQpJiZ0aGlzW1RdW1llXSl8fEF0KX0sX3Q9ZnVuY3Rpb24oWWUsQXQpe2lm''@;'; put 'put ''KFllPWRlKFllKSxBdD12ZShBdCwhMCksWWUhPT1QZXx8IUIoQ2UsQXQpfHxCKERlLEF0KSl7dmFyIGp0PU8oWWUsQXQpO3JldHVybiBqdCYmQihDZSxBdCkmJiEoQihZZSxUKSYmWWVbVF1bQXRdKSYmKGp0LmVudW1lcmFibGU9ITApLGp0fX0sbnQ9ZnVuY3Rpb24oWWUpe2Zvcih2YXIgbW4s''@;'; put 'put ''QXQ9bmUoZGUoWWUpKSxqdD1bXSxKdD0wO0F0Lmxlbmd0aD5KdDspIUIoQ2UsbW49QXRbSnQrK10pJiZtbiE9VCYmbW4hPVEmJmp0LnB1c2gobW4pO3JldHVybiBqdH0scWU9ZnVuY3Rpb24oWWUpe2Zvcih2YXIgcG4sQXQ9WWU9PT1QZSxqdD1uZShBdD9EZTpkZShZZSkpLEp0PVtdLG1uPTA7''@;'; put 'put ''anQubGVuZ3RoPm1uOylCKENlLHBuPWp0W21uKytdKSYmKCFBdHx8QihQZSxwbikpJiZKdC5wdXNoKENlW3BuXSk7cmV0dXJuIEp0fTtRZXx8KFUoKHRlPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIHRlKXRocm93IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9y''@;'; put 'put ''ISIpO3ZhciBZZT1ZKGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKSxBdD1mdW5jdGlvbihqdCl7dGhpcz09PVBlJiZBdC5jYWxsKERlLGp0KSxCKHRoaXMsVCkmJkIodGhpc1tUXSxZZSkmJih0aGlzW1RdW1llXT0hMSkseXQodGhpcyxZZSxBZSgxLGp0KSl9O3JldHVy''@;'; put 'put ''biBFJiZndCYmeXQoUGUsWWUse2NvbmZpZ3VyYWJsZTohMCxzZXQ6QXR9KSxwdChZZSl9KVtWXSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2t9KSxJZS5mPV90LEVlLmY9dnQsTCgyMDYxNikuZj1TZS5mPW50LEwoMTQ2ODIpLmY9b24sVGUuZj1xZSxFJiYhTCg0NDYxKSYm''@;'; put 'put ''VShQZSwicHJvcGVydHlJc0VudW1lcmFibGUiLG9uLCEwKSxOLmY9ZnVuY3Rpb24oemUpe3JldHVybiBwdChXKHplKSl9KSxNZShNZS5HK01lLlcrTWUuRiohUWUse1N5bWJvbDp0ZX0pO2Zvcih2YXIgb3Q9Imhhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxy''@;'; put 'put ''ZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzIi5zcGxpdCgiLCIpLFJ0PTA7b3QubGVuZ3RoPlJ0OylXKG90W1J0KytdKTtmb3IodmFyIEN0PWhlKFcuc3RvcmUpLGN0PTA7Q3QubGVuZ3RoPmN0OyllZShDdFtjdCsrXSk7TWUo''@;'; put 'put ''TWUuUytNZS5GKiFRZSwiU3ltYm9sIix7Zm9yOmZ1bmN0aW9uKHplKXtyZXR1cm4gQih5ZSx6ZSs9IiIpP3llW3plXTp5ZVt6ZV09dGUoemUpfSxrZXlGb3I6ZnVuY3Rpb24oWWUpe2lmKCFtdChZZSkpdGhyb3cgVHlwZUVycm9yKFllKyIgaXMgbm90IGEgc3ltYm9sISIpO2Zvcih2YXIgQXQg''@;'; put 'put ''aW4geWUpaWYoeWVbQXRdPT09WWUpcmV0dXJuIEF0fSx1c2VTZXR0ZXI6ZnVuY3Rpb24oKXtndD0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7Z3Q9ITF9fSksTWUoTWUuUytNZS5GKiFRZSwiT2JqZWN0Iix7Y3JlYXRlOmZ1bmN0aW9uKFllLEF0KXtyZXR1cm4gdm9pZCAwPT09QXQ/a2UoWWUp''@;'; put 'put ''OmZ0KGtlKFllKSxBdCl9LGRlZmluZVByb3BlcnR5OnZ0LGRlZmluZVByb3BlcnRpZXM6ZnQsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOl90LGdldE93blByb3BlcnR5TmFtZXM6bnQsZ2V0T3duUHJvcGVydHlTeW1ib2xzOnFlfSk7dmFyIE50PVooZnVuY3Rpb24oKXtUZS5mKDEpfSk7TWUo''@;'; put 'put ''TWUuUytNZS5GKk50LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24oWWUpe3JldHVybiBUZS5mKGZlKFllKSl9fSkseCYmTWUoTWUuUytNZS5GKighUWV8fFooZnVuY3Rpb24oKXt2YXIgemU9dGUoKTtyZXR1cm4iW251bGxdIiE9UChbemVdKXx8Int9IiE9UCh7YTp6''@;'; put 'put ''ZX0pfHwie30iIT1QKE9iamVjdCh6ZSkpfSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uKFllKXtmb3IodmFyIEp0LG1uLEF0PVtZZV0sanQ9MTthcmd1bWVudHMubGVuZ3RoPmp0OylBdC5wdXNoKGFyZ3VtZW50c1tqdCsrXSk7aWYobW49SnQ9QXRbMV0sKGFlKEp0KXx8dm9pZCAwIT09''@;'; put 'put ''WWUpJiYhbXQoWWUpKXJldHVybiBKKEp0KXx8KEp0PWZ1bmN0aW9uKHBuLGJuKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbW4mJihibj1tbi5jYWxsKHRoaXMscG4sYm4pKSwhbXQoYm4pKXJldHVybiBibn0pLEF0WzFdPUp0LFAuYXBwbHkoeCxBdCl9fSksdGVbVl1bU118fEwoODc3MjgpKHRl''@;'; put 'put ''W1ZdLFMsdGVbVl0udmFsdWVPZiksbGUodGUsIlN5bWJvbCIpLGxlKE1hdGgsIk1hdGgiLCEwKSxsZShnZS5KU09OLCJKU09OIiwhMCl9LDMwMTQ3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSixnZT1MKDM4MTYpLEI9TCgxMDA1MCkoMCksRT1MKDc3MjM0KSxNZT1MKDg0NzI4KSxV''@;'; put 'put ''PUwoMzUzNDUpLFE9TCgyMzY1NyksWj1MKDU1Mjg2KSxpZT1MKDE2MTYpLGxlPUwoMTYxNiksWT0hZ2UuQWN0aXZlWE9iamVjdCYmIkFjdGl2ZVhPYmplY3QiaW4gZ2UsVz0iV2Vha01hcCIsTj1NZS5nZXRXZWFrLGVlPU9iamVjdC5pc0V4dGVuc2libGUscT1RLnVmc3RvcmUsc2U9ZnVuY3Rp''@;'; put 'put ''b24oZGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBkZSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKX19LGFlPXtnZXQ6ZnVuY3Rpb24odmUpe2lmKFoodmUpKXt2YXIgQWU9Tih2ZSk7cmV0dXJuITA9PT1BZT9xKGllKHRoaXMsVykpLmdldCh2ZSk6QWU/''@;'; put 'put ''QWVbdGhpcy5faV06dm9pZCAwfX0sc2V0OmZ1bmN0aW9uKHZlLEFlKXtyZXR1cm4gUS5kZWYoaWUodGhpcyxXKSx2ZSxBZSl9fSxmZT1YZS5leHBvcnRzPUwoNDU3OTUpKFcsc2UsYWUsUSwhMCwhMCk7bGUmJlkmJihVKChKPVEuZ2V0Q29uc3RydWN0b3Ioc2UsVykpLnByb3RvdHlwZSxhZSks''@;'; put 'put ''TWUuTkVFRD0hMCxCKFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwic2V0Il0sZnVuY3Rpb24oZGUpe3ZhciB2ZT1mZS5wcm90b3R5cGUsQWU9dmVbZGVdO0UodmUsZGUsZnVuY3Rpb24oa2UsU2Upe2lmKFooa2UpJiYhZWUoa2UpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgSik7dmFyIEllPXRoaXMu''@;'; put 'put ''X2ZbZGVdKGtlLFNlKTtyZXR1cm4ic2V0Ij09ZGU/dGhpczpJZX1yZXR1cm4gQWUuY2FsbCh0aGlzLGtlLFNlKX0pfSkpfSw1MzM2NDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1MDEzMyksQj1MKDI3MDA3KSxFPWdlLmtleSxNZT1nZS5zZXQ7Z2UuZXhwKHtkZWZpbmVNZXRhZGF0YTpmdW5jdGlv''@;'; put 'put ''bihRLFosaWUsbGUpe01lKFEsWixCKGllKSxFKGxlKSl9fSl9LDUxNDMyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDUwMTMzKSxCPUwoMjcwMDcpLEU9Z2Uua2V5LE1lPWdlLm1hcCxVPWdlLnN0b3JlO2dlLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24oWixpZSl7dmFyIGxlPWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg8Mz92b2lkIDA6RShhcmd1bWVudHNbMl0pLFk9TWUoQihpZSksbGUsITEpO2lmKHZvaWQgMD09PVl8fCFZLmRlbGV0ZShaKSlyZXR1cm4hMTtpZihZLnNpemUpcmV0dXJuITA7dmFyIFc9VS5nZXQoaWUpO3JldHVybiBXLmRlbGV0ZShsZSksISFXLnNpemV8fFUuZGVsZXRlKGll''@;'; put 'put ''KX19KX0sODQ0MTY6KFhlLEplLEwpPT57dmFyIGdlPUwoOTgxODQpLEI9TCg5NDkwKSxFPUwoNTAxMzMpLE1lPUwoMjcwMDcpLFU9TCg0NjgpLFE9RS5rZXlzLFo9RS5rZXksaWU9ZnVuY3Rpb24obGUsWSl7dmFyIFc9UShsZSxZKSxOPVUobGUpO2lmKG51bGw9PT1OKXJldHVybiBXO3ZhciBl''@;'; put 'put ''ZT1pZShOLFkpO3JldHVybiBlZS5sZW5ndGg/Vy5sZW5ndGg/QihuZXcgZ2UoVy5jb25jYXQoZWUpKSk6ZWU6V307RS5leHAoe2dldE1ldGFkYXRhS2V5czpmdW5jdGlvbihZKXtyZXR1cm4gaWUoTWUoWSksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDpaKGFyZ3VtZW50c1sxXSkpfX0pfSwy''@;'; put 'put ''NjU2MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1MDEzMyksQj1MKDI3MDA3KSxFPUwoNDY4KSxNZT1nZS5oYXMsVT1nZS5nZXQsUT1nZS5rZXksWj1mdW5jdGlvbihpZSxsZSxZKXtpZihNZShpZSxsZSxZKSlyZXR1cm4gVShpZSxsZSxZKTt2YXIgTj1FKGxlKTtyZXR1cm4gbnVsbCE9PU4/Wihp''@;'; put 'put ''ZSxOLFkpOnZvaWQgMH07Z2UuZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbihsZSxZKXtyZXR1cm4gWihsZSxCKFkpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6UShhcmd1bWVudHNbMl0pKX19KX0sMzIyMTM6KFhlLEplLEwpPT57dmFyIGdlPUwoNTAxMzMpLEI9TCgyNzAwNyksRT1nZS5r''@;'; put 'put ''ZXlzLE1lPWdlLmtleTtnZS5leHAoe2dldE93bk1ldGFkYXRhS2V5czpmdW5jdGlvbihRKXtyZXR1cm4gRShCKFEpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6TWUoYXJndW1lbnRzWzFdKSl9fSl9LDk4NjgxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDUwMTMzKSxCPUwoMjcwMDcpLEU9Z2Uu''@;'; put 'put ''Z2V0LE1lPWdlLmtleTtnZS5leHAoe2dldE93bk1ldGFkYXRhOmZ1bmN0aW9uKFEsWil7cmV0dXJuIEUoUSxCKFopLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6TWUoYXJndW1lbnRzWzJdKSl9fSl9LDYzNDcxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDUwMTMzKSxCPUwoMjcwMDcpLEU9TCg0''@;'; put 'put ''NjgpLE1lPWdlLmhhcyxVPWdlLmtleSxRPWZ1bmN0aW9uKFosaWUsbGUpe2lmKE1lKFosaWUsbGUpKXJldHVybiEwO3ZhciBXPUUoaWUpO3JldHVybiBudWxsIT09VyYmUShaLFcsbGUpfTtnZS5leHAoe2hhc01ldGFkYXRhOmZ1bmN0aW9uKGllLGxlKXtyZXR1cm4gUShpZSxCKGxlKSxhcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPDM/dm9pZCAwOlUoYXJndW1lbnRzWzJdKSl9fSl9LDQzMjk6KFhlLEplLEwpPT57dmFyIGdlPUwoNTAxMzMpLEI9TCgyNzAwNyksRT1nZS5oYXMsTWU9Z2Uua2V5O2dlLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24oUSxaKXtyZXR1cm4gRShRLEIoWiksYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aDwzP3ZvaWQgMDpNZShhcmd1bWVudHNbMl0pKX19KX0sMjUxNTk6KFhlLEplLEwpPT57dmFyIGdlPUwoNTAxMzMpLEI9TCgyNzAwNyksRT1MKDI0OTYzKSxNZT1nZS5rZXksVT1nZS5zZXQ7Z2UuZXhwKHttZXRhZGF0YTpmdW5jdGlvbihaLGllKXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''WSxXKXtVKFosaWUsKHZvaWQgMCE9PVc/QjpFKShZKSxNZShXKSl9fX0pfSw5MTE4MTooWGUsSmUsTCk9Pntmb3IodmFyIGdlPUwoNTY5OTcpLEI9TCg0NzE4NCksRT1MKDc3MjM0KSxNZT1MKDM4MTYpLFU9TCg4NzcyOCksUT1MKDg3MjM0KSxaPUwoODYzMTQpLGllPVooIml0ZXJhdG9yIiks''@;'; put 'put ''bGU9WigidG9TdHJpbmdUYWciKSxZPVEuQXJyYXksVz17Q1NTUnVsZUxpc3Q6ITAsQ1NTU3R5bGVEZWNsYXJhdGlvbjohMSxDU1NWYWx1ZUxpc3Q6ITEsQ2xpZW50UmVjdExpc3Q6ITEsRE9NUmVjdExpc3Q6ITEsRE9NU3RyaW5nTGlzdDohMSxET01Ub2tlbkxpc3Q6ITAsRGF0YVRyYW5zZmVy''@;'; put 'put ''SXRlbUxpc3Q6ITEsRmlsZUxpc3Q6ITEsSFRNTEFsbENvbGxlY3Rpb246ITEsSFRNTENvbGxlY3Rpb246ITEsSFRNTEZvcm1FbGVtZW50OiExLEhUTUxTZWxlY3RFbGVtZW50OiExLE1lZGlhTGlzdDohMCxNaW1lVHlwZUFycmF5OiExLE5hbWVkTm9kZU1hcDohMSxOb2RlTGlzdDohMCxQYWlu''@;'; put 'put ''dFJlcXVlc3RMaXN0OiExLFBsdWdpbjohMSxQbHVnaW5BcnJheTohMSxTVkdMZW5ndGhMaXN0OiExLFNWR051bWJlckxpc3Q6ITEsU1ZHUGF0aFNlZ0xpc3Q6ITEsU1ZHUG9pbnRMaXN0OiExLFNWR1N0cmluZ0xpc3Q6ITEsU1ZHVHJhbnNmb3JtTGlzdDohMSxTb3VyY2VCdWZmZXJMaXN0OiEx''@;'; put 'put ''LFN0eWxlU2hlZXRMaXN0OiEwLFRleHRUcmFja0N1ZUxpc3Q6ITEsVGV4dFRyYWNrTGlzdDohMSxUb3VjaExpc3Q6ITF9LE49QihXKSxlZT0wO2VlPE4ubGVuZ3RoO2VlKyspe3ZhciBmZSxxPU5bZWVdLEo9V1txXSxzZT1NZVtxXSxhZT1zZSYmc2UucHJvdG90eXBlO2lmKGFlJiYoYWVbaWVd''@;'; put 'put ''fHxVKGFlLGllLFkpLGFlW2xlXXx8VShhZSxsZSxxKSxRW3FdPVksSikpZm9yKGZlIGluIGdlKWFlW2ZlXXx8RShhZSxmZSxnZVtmZV0sITApfX0sODE0NTA6KFhlLEplLEwpPT57dmFyIGdlPUwoMTIwMTQpLEI9TCg5NDY3NiksRT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihNZSl7''@;'; put 'put ''aWYoZ2UoTWUpKXJldHVybiBNZTt0aHJvdyBFKEIoTWUpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX19LDU2NTgxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDQ5NDUzKSxCPUwoOTQ2NzYpLEU9VHlwZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe2lmKGdlKE1lKSlyZXR1cm4gTWU7dGhyb3cg''@;'; put 'put ''RShCKE1lKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIil9fSw3MDA4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDEyMDE0KSxCPVN0cmluZyxFPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKE1lKXtpZigib2JqZWN0Ij09dHlwZW9mIE1lfHxnZShNZSkpcmV0dXJuIE1lO3Rocm93IEUoIkNh''@;'; put 'put ''bid0IHNldCAiK0IoTWUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDc0OTY1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDI1NDYpLEI9TCg3NDQxMCksRT1MKDUxMTgzKS5mLE1lPWdlKCJ1bnNjb3BhYmxlcyIpLFU9QXJyYXkucHJvdG90eXBlO251bGw9PVVbTWVdJiZFKFUsTWUse2NvbmZpZ3VyYWJs''@;'; put 'put ''ZTohMCx2YWx1ZTpCKG51bGwpfSksWGUuZXhwb3J0cz1mdW5jdGlvbihRKXtVW01lXVtRXT0hMH19LDYxNjc2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg3NTA1OCkuY2hhckF0O1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFLE1lKXtyZXR1cm4gRSsoTWU/Z2UoQixFKS5sZW5n''@;'; put 'put ''dGg6MSl9fSw5NTIwNDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgzNzQ3NCksQj1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihFLE1lKXtpZihnZShNZSxFKSlyZXR1cm4gRTt0aHJvdyBCKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfX0sNTg2NDc6KFhlLEplLEwpPT57dmFyIGdlPUwoNzE0''@;'; put 'put ''OTYpLEI9U3RyaW5nLEU9VHlwZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe2lmKGdlKE1lKSlyZXR1cm4gTWU7dGhyb3cgRShCKE1lKSsiIGlzIG5vdCBhbiBvYmplY3QiKX19LDYyNzg5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDIzNTIzKTtYZS5leHBvcnRzPWdlKGZ1bmN0aW9uKCl7''@;'; put 'put ''aWYoImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyKXt2YXIgQj1uZXcgQXJyYXlCdWZmZXIoOCk7T2JqZWN0LmlzRXh0ZW5zaWJsZShCKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImEiLHt2YWx1ZTo4fSl9fSl9LDU3MTc5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9''@;'; put 'put ''TCg2ODA3MSksQj1MKDc2MTYzKSxFPUwoNTQ0NTApO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7Zm9yKHZhciBRPWdlKHRoaXMpLFo9RShRKSxpZT1hcmd1bWVudHMubGVuZ3RoLGxlPUIoaWU+MT9hcmd1bWVudHNbMV06dm9pZCAwLFopLFk9aWU+Mj9hcmd1bWVudHNbMl06dm9pZCAwLFc9dm9p''@;'; put 'put ''ZCAwPT09WT9aOkIoWSxaKTtXPmxlOylRW2xlKytdPVU7cmV0dXJuIFF9fSwzNzMxOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoOTU2NjkpLmZvckVhY2gsRT1MKDYzMTI0KSgiZm9yRWFjaCIpO1hlLmV4cG9ydHM9RT9bXS5mb3JFYWNoOmZ1bmN0aW9uKFUpe3JldHVybiBn''@;'; put 'put ''ZSh0aGlzLFUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0sNjY2NjY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDg1NDkpLEI9TCgzNTYyKSxFPUwoNjgwNzEpLE1lPUwoMTg3NiksVT1MKDk3MTA2KSxRPUwoNDk0NTMpLFo9TCg1NDQ1MCksaWU9''@;'; put 'put ''TCg5NTAwNCksbGU9TCgxMjk4OSksWT1MKDY2Mjg4KSxXPUFycmF5O1hlLmV4cG9ydHM9ZnVuY3Rpb24oZWUpe3ZhciBxPUUoZWUpLEo9USh0aGlzKSxzZT1hcmd1bWVudHMubGVuZ3RoLGFlPXNlPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxmZT12b2lkIDAhPT1hZTtmZSYmKGFlPWdlKGFlLHNl''@;'; put 'put ''PjI/YXJndW1lbnRzWzJdOnZvaWQgMCkpO3ZhciBBZSxrZSxTZSxJZSxUZSxFZSxkZT1ZKHEpLHZlPTA7aWYoIWRlfHx0aGlzPT09VyYmVShkZSkpZm9yKEFlPVoocSksa2U9Sj9uZXcgdGhpcyhBZSk6VyhBZSk7QWU+dmU7dmUrKylFZT1mZT9hZShxW3ZlXSx2ZSk6cVt2ZV0saWUoa2UsdmUs''@;'; put 'put ''RWUpO2Vsc2UgZm9yKFRlPShJZT1sZShxLGRlKSkubmV4dCxrZT1KP25ldyB0aGlzOltdOyEoU2U9QihUZSxJZSkpLmRvbmU7dmUrKylFZT1mZT9NZShJZSxhZSxbU2UudmFsdWUsdmVdLCEwKTpTZS52YWx1ZSxpZShrZSx2ZSxFZSk7cmV0dXJuIGtlLmxlbmd0aD12ZSxrZX19LDM2MzA1OihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBnZT1MKDUwMzI3KSxCPUwoNzYxNjMpLEU9TCg1NDQ1MCksTWU9ZnVuY3Rpb24oVSl7cmV0dXJuIGZ1bmN0aW9uKFEsWixpZSl7dmFyIE4sbGU9Z2UoUSksWT1FKGxlKSxXPUIoaWUsWSk7aWYoVSYmWiE9Wil7Zm9yKDtZPlc7KWlmKChOPWxlW1crK10pIT1OKXJldHVy''@;'; put 'put ''biEwfWVsc2UgZm9yKDtZPlc7VysrKWlmKChVfHxXIGluIGxlKSYmbGVbV109PT1aKXJldHVybiBVfHxXfHwwO3JldHVybiFVJiYtMX19O1hlLmV4cG9ydHM9e2luY2x1ZGVzOk1lKCEwKSxpbmRleE9mOk1lKCExKX19LDk1NjY5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NDkpLEI9TCg2NjEz''@;'; put 'put ''KSxFPUwoNTY2MDcpLE1lPUwoNjgwNzEpLFU9TCg1NDQ1MCksUT1MKDMxODU3KSxaPUIoW10ucHVzaCksaWU9ZnVuY3Rpb24obGUpe3ZhciBZPTE9PWxlLFc9Mj09bGUsTj0zPT1sZSxlZT00PT1sZSxxPTY9PWxlLEo9Nz09bGUsc2U9NT09bGV8fHE7cmV0dXJuIGZ1bmN0aW9uKGFlLGZlLGRl''@;'; put 'put ''LHZlKXtmb3IodmFyIE8seixBZT1NZShhZSksa2U9RShBZSksU2U9Z2UoZmUsZGUpLEllPVUoa2UpLFRlPTAsRWU9dmV8fFEsaGU9WT9FZShhZSxJZSk6V3x8Sj9FZShhZSwwKTp2b2lkIDA7SWU+VGU7VGUrKylpZigoc2V8fFRlIGluIGtlKSYmKHo9U2UoTz1rZVtUZV0sVGUsQWUpLGxlKSlp''@;'; put 'put ''ZihZKWhlW1RlXT16O2Vsc2UgaWYoeilzd2l0Y2gobGUpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIE87Y2FzZSA2OnJldHVybiBUZTtjYXNlIDI6WihoZSxPKX1lbHNlIHN3aXRjaChsZSl7Y2FzZSA0OnJldHVybiExO2Nhc2UgNzpaKGhlLE8pfXJldHVybiBxPy0xOk58fGVlP2Vl''@;'; put 'put ''OmhlfX07WGUuZXhwb3J0cz17Zm9yRWFjaDppZSgwKSxtYXA6aWUoMSksZmlsdGVyOmllKDIpLHNvbWU6aWUoMyksZXZlcnk6aWUoNCksZmluZDppZSg1KSxmaW5kSW5kZXg6aWUoNiksZmlsdGVyUmVqZWN0OmllKDcpfX0sOTYyMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwo''@;'; put 'put ''MTEzMDYpLEI9TCg1MDMyNyksRT1MKDQwNzAyKSxNZT1MKDU0NDUwKSxVPUwoNjMxMjQpLFE9TWF0aC5taW4sWj1bXS5sYXN0SW5kZXhPZixpZT0hIVomJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDAsbGU9VSgibGFzdEluZGV4T2YiKTtYZS5leHBvcnRzPWllfHwhbGU/ZnVuY3Rpb24oTil7''@;'; put 'put ''aWYoaWUpcmV0dXJuIGdlKFosdGhpcyxhcmd1bWVudHMpfHwwO3ZhciBlZT1CKHRoaXMpLHE9TWUoZWUpLEo9cS0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihKPVEoSixFKGFyZ3VtZW50c1sxXSkpKSxKPDAmJihKPXErSik7Sj49MDtKLS0paWYoSiBpbiBlZSYmZWVbSl09PT1OKXJldHVy''@;'; put 'put ''biBKfHwwO3JldHVybi0xfTpafSw1MTI5ODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMzUyMyksQj1MKDI1NDYpLEU9TCgyOTM4NSksTWU9Qigic3BlY2llcyIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7cmV0dXJuIEU+PTUxfHwhZ2UoZnVuY3Rpb24oKXt2YXIgUT1bXTtyZXR1cm4oUS5jb25z''@;'; put 'put ''dHJ1Y3Rvcj17fSlbTWVdPWZ1bmN0aW9uKCl7cmV0dXJue2ZvbzoxfX0sMSE9PVFbVV0oQm9vbGVhbikuZm9vfSl9fSw2MzEyNDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMjM1MjMpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFKXt2YXIgTWU9W11bQl07cmV0dXJuISFNZSYm''@;'; put 'put ''Z2UoZnVuY3Rpb24oKXtNZS5jYWxsKG51bGwsRXx8ZnVuY3Rpb24oKXtyZXR1cm4gMX0sMSl9KX19LDczNzYwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDgxNDUwKSxCPUwoNjgwNzEpLEU9TCg1NjYwNyksTWU9TCg1NDQ1MCksVT1UeXBlRXJyb3IsUT1mdW5jdGlvbihaKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oaWUsbGUsWSxXKXtnZShsZSk7dmFyIE49QihpZSksZWU9RShOKSxxPU1lKE4pLEo9Wj9xLTE6MCxzZT1aPy0xOjE7aWYoWTwyKWZvcig7Oyl7aWYoSiBpbiBlZSl7Vz1lZVtKXSxKKz1zZTticmVha31pZihKKz1zZSxaP0o8MDpxPD1KKXRocm93IFUoIlJlZHVjZSBvZiBlbXB0eSBhcnJh''@;'; put 'put ''eSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO1o/Sj49MDpxPko7Sis9c2UpSiBpbiBlZSYmKFc9bGUoVyxlZVtKXSxKLE4pKTtyZXR1cm4gV319O1hlLmV4cG9ydHM9e2xlZnQ6USghMSkscmlnaHQ6USghMCl9fSw4Njc1OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwo''@;'; put 'put ''ODU2MjQpLEI9TCgyOTEwNiksRT1UeXBlRXJyb3IsTWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixVPWdlJiYhZnVuY3Rpb24oKXtpZih2b2lkIDAhPT10aGlzKXJldHVybiEwO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkubGVu''@;'; put 'put ''Z3RoPTF9Y2F0Y2goUSl7cmV0dXJuIFEgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpO1hlLmV4cG9ydHM9VT9mdW5jdGlvbihRLFope2lmKEIoUSkmJiFNZShRLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBFKCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIFEubGVuZ3Ro''@;'; put 'put ''PVp9OmZ1bmN0aW9uKFEsWil7cmV0dXJuIFEubGVuZ3RoPVp9fSwxMDg3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3NjE2MyksQj1MKDU0NDUwKSxFPUwoOTUwMDQpLE1lPUFycmF5LFU9TWF0aC5tYXg7WGUuZXhwb3J0cz1mdW5jdGlvbihRLFosaWUpe2Zvcih2YXIgbGU9QihRKSxZPWdlKFos''@;'; put 'put ''bGUpLFc9Z2Uodm9pZCAwPT09aWU/bGU6aWUsbGUpLE49TWUoVShXLVksMCkpLGVlPTA7WTxXO1krKyxlZSsrKUUoTixlZSxRW1ldKTtyZXR1cm4gTi5sZW5ndGg9ZWUsTn19LDQwOTMwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpO1hlLmV4cG9ydHM9Z2UoW10uc2xpY2UpfSwzMjU5NDoo''@;'; put 'put ''WGUsSmUsTCk9Pnt2YXIgZ2U9TCgxMDg3MiksQj1NYXRoLmZsb29yLEU9ZnVuY3Rpb24oUSxaKXt2YXIgaWU9US5sZW5ndGgsbGU9QihpZS8yKTtyZXR1cm4gaWU8OD9NZShRLFopOlUoUSxFKGdlKFEsMCxsZSksWiksRShnZShRLGxlKSxaKSxaKX0sTWU9ZnVuY3Rpb24oUSxaKXtmb3IodmFy''@;'; put 'put ''IFksVyxpZT1RLmxlbmd0aCxsZT0xO2xlPGllOyl7Zm9yKFc9bGUsWT1RW2xlXTtXJiZaKFFbVy0xXSxZKT4wOylRW1ddPVFbLS1XXTtXIT09bGUrKyYmKFFbV109WSl9cmV0dXJuIFF9LFU9ZnVuY3Rpb24oUSxaLGllLGxlKXtmb3IodmFyIFk9Wi5sZW5ndGgsVz1pZS5sZW5ndGgsTj0wLGVl''@;'; put 'put ''PTA7TjxZfHxlZTxXOylRW04rZWVdPU48WSYmZWU8Vz9sZShaW05dLGllW2VlXSk8PTA/WltOKytdOmllW2VlKytdOk48WT9aW04rK106aWVbZWUrK107cmV0dXJuIFF9O1hlLmV4cG9ydHM9RX0sNTc4MzU6KFhlLEplLEwpPT57dmFyIGdlPUwoMjkxMDYpLEI9TCg0OTQ1MyksRT1MKDcxNDk2''@;'; put 'put ''KSxVPUwoMjU0NikoInNwZWNpZXMiKSxRPUFycmF5O1hlLmV4cG9ydHM9ZnVuY3Rpb24oWil7dmFyIGllO3JldHVybiBnZShaKSYmKEIoaWU9Wi5jb25zdHJ1Y3RvcikmJihpZT09PVF8fGdlKGllLnByb3RvdHlwZSkpfHxFKGllKSYmbnVsbD09PShpZT1pZVtVXSkpJiYoaWU9dm9pZCAwKSx2''@;'; put 'put ''b2lkIDA9PT1pZT9ROmllfX0sMzE4NTc6KFhlLEplLEwpPT57dmFyIGdlPUwoNTc4MzUpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFKXtyZXR1cm4gbmV3KGdlKEIpKSgwPT09RT8wOkUpfX0sMTg3NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1ODY0NyksQj1MKDgwMzA3KTtYZS5leHBvcnRzPWZ1''@;'; put 'put ''bmN0aW9uKEUsTWUsVSxRKXt0cnl7cmV0dXJuIFE/TWUoZ2UoVSlbMF0sVVsxXSk6TWUoVSl9Y2F0Y2goWil7QihFLCJ0aHJvdyIsWil9fX0sMjc3OTI6KFhlLEplLEwpPT57dmFyIEI9TCgyNTQ2KSgiaXRlcmF0b3IiKSxFPSExO3RyeXt2YXIgTWU9MCxVPXtuZXh0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJue2RvbmU6ISFNZSsrfX0scmV0dXJuOmZ1bmN0aW9uKCl7RT0hMH19O1VbQl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShVLGZ1bmN0aW9uKCl7dGhyb3cgMn0pfWNhdGNoKFEpe31YZS5leHBvcnRzPWZ1bmN0aW9uKFEsWil7aWYoIVomJiFFKXJldHVybiExO3ZhciBp''@;'; put 'put ''ZT0hMTt0cnl7dmFyIGxlPXt9O2xlW0JdPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTppZT0hMH19fX0sUShsZSl9Y2F0Y2goWSl7fXJldHVybiBpZX19LDk0NzIzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpLEI9Z2Uoe30udG9TdHJpbmcpLEU9Z2Uo''@;'; put 'put ''IiIuc2xpY2UpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe3JldHVybiBFKEIoTWUpLDgsLTEpfX0sNzk1MjA6KFhlLEplLEwpPT57dmFyIGdlPUwoMjc0OTApLEI9TCgxMjAxNCksRT1MKDk0NzIzKSxVPUwoMjU0NikoInRvU3RyaW5nVGFnIiksUT1PYmplY3QsWj0iQXJndW1lbnRzIj09RShm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO1hlLmV4cG9ydHM9Z2U/RTpmdW5jdGlvbihsZSl7dmFyIFksVyxOO3JldHVybiB2b2lkIDA9PT1sZT8iVW5kZWZpbmVkIjpudWxsPT09bGU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoVz1mdW5jdGlvbihsZSxZKXt0cnl7cmV0dXJuIGxl''@;'; put 'put ''W1ldfWNhdGNoKFcpe319KFk9UShsZSksVSkpP1c6Wj9FKFkpOiJPYmplY3QiPT0oTj1FKFkpKSYmQihZLmNhbGxlZSk/IkFyZ3VtZW50cyI6Tn19LDQ1MTQwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg1MTE4MykuZixCPUwoNzQ0MTApLEU9TCg3NDA2OSksTWU9TCg4NTQ5''@;'; put 'put ''KSxVPUwoOTUyMDQpLFE9TCg2Mzc0KSxaPUwoMjY1NDMpLGllPUwoNjQ1NjApLGxlPUwoNjgzMTUpLFk9TCg4NTYyNCksVz1MKDcxODMyKS5mYXN0S2V5LE49TCg3MjcpLGVlPU4uc2V0LHE9Ti5nZXR0ZXJGb3I7WGUuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24oSixzZSxhZSxm''@;'; put 'put ''ZSl7dmFyIGRlPUooZnVuY3Rpb24oSWUsVGUpe1UoSWUsdmUpLGVlKEllLHt0eXBlOnNlLGluZGV4OkIobnVsbCksZmlyc3Q6dm9pZCAwLGxhc3Q6dm9pZCAwLHNpemU6MH0pLFl8fChJZS5zaXplPTApLFEoVGUpfHxaKFRlLEllW2ZlXSx7dGhhdDpJZSxBU19FTlRSSUVTOmFlfSl9KSx2ZT1k''@;'; put 'put ''ZS5wcm90b3R5cGUsQWU9cShzZSksa2U9ZnVuY3Rpb24oSWUsVGUsRWUpe3ZhciB6LG5lLGhlPUFlKEllKSxPPVNlKEllLFRlKTtyZXR1cm4gTz9PLnZhbHVlPUVlOihoZS5sYXN0PU89e2luZGV4Om5lPVcoVGUsITApLGtleTpUZSx2YWx1ZTpFZSxwcmV2aW91czp6PWhlLmxhc3QsbmV4dDp2''@;'; put 'put ''b2lkIDAscmVtb3ZlZDohMX0saGUuZmlyc3R8fChoZS5maXJzdD1PKSx6JiYoei5uZXh0PU8pLFk/aGUuc2l6ZSsrOkllLnNpemUrKywiRiIhPT1uZSYmKGhlLmluZGV4W25lXT1PKSksSWV9LFNlPWZ1bmN0aW9uKEllLFRlKXt2YXIgTyxFZT1BZShJZSksaGU9VyhUZSk7aWYoIkYiIT09aGUp''@;'; put 'put ''cmV0dXJuIEVlLmluZGV4W2hlXTtmb3IoTz1FZS5maXJzdDtPO089Ty5uZXh0KWlmKE8ua2V5PT1UZSlyZXR1cm4gT307cmV0dXJuIEUodmUse2NsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciBFZT1BZSh0aGlzKSxoZT1FZS5pbmRleCxPPUVlLmZpcnN0O087KU8ucmVtb3ZlZD0hMCxPLnByZXZp''@;'; put 'put ''b3VzJiYoTy5wcmV2aW91cz1PLnByZXZpb3VzLm5leHQ9dm9pZCAwKSxkZWxldGUgaGVbTy5pbmRleF0sTz1PLm5leHQ7RWUuZmlyc3Q9RWUubGFzdD12b2lkIDAsWT9FZS5zaXplPTA6dGhpcy5zaXplPTB9LGRlbGV0ZTpmdW5jdGlvbihJZSl7dmFyIEVlPUFlKHRoaXMpLGhlPVNlKHRoaXMs''@;'; put 'put ''SWUpO2lmKGhlKXt2YXIgTz1oZS5uZXh0LHo9aGUucHJldmlvdXM7ZGVsZXRlIEVlLmluZGV4W2hlLmluZGV4XSxoZS5yZW1vdmVkPSEwLHomJih6Lm5leHQ9TyksTyYmKE8ucHJldmlvdXM9eiksRWUuZmlyc3Q9PWhlJiYoRWUuZmlyc3Q9TyksRWUubGFzdD09aGUmJihFZS5sYXN0PXopLFk/''@;'; put 'put ''RWUuc2l6ZS0tOnRoaXMuc2l6ZS0tfXJldHVybiEhaGV9LGZvckVhY2g6ZnVuY3Rpb24oVGUpe2Zvcih2YXIgTyxFZT1BZSh0aGlzKSxoZT1NZShUZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7Tz1PP08ubmV4dDpFZS5maXJzdDspZm9yKGhlKE8udmFsdWUsTy5r''@;'; put 'put ''ZXksdGhpcyk7TyYmTy5yZW1vdmVkOylPPU8ucHJldmlvdXN9LGhhczpmdW5jdGlvbihUZSl7cmV0dXJuISFTZSh0aGlzLFRlKX19KSxFKHZlLGFlP3tnZXQ6ZnVuY3Rpb24oVGUpe3ZhciBFZT1TZSh0aGlzLFRlKTtyZXR1cm4gRWUmJkVlLnZhbHVlfSxzZXQ6ZnVuY3Rpb24oVGUsRWUpe3Jl''@;'; put 'put ''dHVybiBrZSh0aGlzLDA9PT1UZT8wOlRlLEVlKX19OnthZGQ6ZnVuY3Rpb24oVGUpe3JldHVybiBrZSh0aGlzLFRlPTA9PT1UZT8wOlRlLFRlKX19KSxZJiZnZSh2ZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBBZSh0aGlzKS5zaXplfX0pLGRlfSxzZXRTdHJvbmc6ZnVuY3Rpb24o''@;'; put 'put ''SixzZSxhZSl7dmFyIGZlPXNlKyIgSXRlcmF0b3IiLGRlPXEoc2UpLHZlPXEoZmUpO2llKEosc2UsZnVuY3Rpb24oQWUsa2Upe2VlKHRoaXMse3R5cGU6ZmUsdGFyZ2V0OkFlLHN0YXRlOmRlKEFlKSxraW5kOmtlLGxhc3Q6dm9pZCAwfSl9LGZ1bmN0aW9uKCl7Zm9yKHZhciBBZT12ZSh0aGlz''@;'; put 'put ''KSxrZT1BZS5raW5kLFNlPUFlLmxhc3Q7U2UmJlNlLnJlbW92ZWQ7KVNlPVNlLnByZXZpb3VzO3JldHVybiBBZS50YXJnZXQmJihBZS5sYXN0PVNlPVNlP1NlLm5leHQ6QWUuc3RhdGUuZmlyc3QpPyJrZXlzIj09a2U/e3ZhbHVlOlNlLmtleSxkb25lOiExfToidmFsdWVzIj09a2U/e3ZhbHVl''@;'; put 'put ''OlNlLnZhbHVlLGRvbmU6ITF9Ont2YWx1ZTpbU2Uua2V5LFNlLnZhbHVlXSxkb25lOiExfTooQWUudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX0sYWU/ImVudHJpZXMiOiJ2YWx1ZXMiLCFhZSwhMCksbGUoc2UpfX19LDQyOTY5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgZ2U9TCg2NjEzKSxCPUwoNzQwNjkpLEU9TCg3MTgzMikuZ2V0V2Vha0RhdGEsTWU9TCg5NTIwNCksVT1MKDU4NjQ3KSxRPUwoNjM3NCksWj1MKDcxNDk2KSxpZT1MKDI2NTQzKSxsZT1MKDk1NjY5KSxZPUwoNDg4MTEpLFc9TCg3MjcpLE49Vy5zZXQsZWU9Vy5nZXR0ZXJGb3IscT1s''@;'; put 'put ''ZS5maW5kLEo9bGUuZmluZEluZGV4LHNlPWdlKFtdLnNwbGljZSksYWU9MCxmZT1mdW5jdGlvbihBZSl7cmV0dXJuIEFlLmZyb3plbnx8KEFlLmZyb3plbj1uZXcgZGUpfSxkZT1mdW5jdGlvbigpe3RoaXMuZW50cmllcz1bXX0sdmU9ZnVuY3Rpb24oQWUsa2Upe3JldHVybiBxKEFlLmVudHJp''@;'; put 'put ''ZXMsZnVuY3Rpb24oU2Upe3JldHVybiBTZVswXT09PWtlfSl9O2RlLnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKEFlKXt2YXIga2U9dmUodGhpcyxBZSk7aWYoa2UpcmV0dXJuIGtlWzFdfSxoYXM6ZnVuY3Rpb24oQWUpe3JldHVybiEhdmUodGhpcyxBZSl9LHNldDpmdW5jdGlvbihBZSxrZSl7''@;'; put 'put ''dmFyIFNlPXZlKHRoaXMsQWUpO1NlP1NlWzFdPWtlOnRoaXMuZW50cmllcy5wdXNoKFtBZSxrZV0pfSxkZWxldGU6ZnVuY3Rpb24oQWUpe3ZhciBrZT1KKHRoaXMuZW50cmllcyxmdW5jdGlvbihTZSl7cmV0dXJuIFNlWzBdPT09QWV9KTtyZXR1cm5+a2UmJnNlKHRoaXMuZW50cmllcyxrZSwx''@;'; put 'put ''KSwhIX5rZX19LFhlLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKEFlLGtlLFNlLEllKXt2YXIgVGU9QWUoZnVuY3Rpb24oeixuZSl7TWUoeixFZSksTih6LHt0eXBlOmtlLGlkOmFlKyssZnJvemVuOnZvaWQgMH0pLFEobmUpfHxpZShuZSx6W0llXSx7dGhhdDp6LEFTX0VOVFJJ''@;'; put 'put ''RVM6U2V9KX0pLEVlPVRlLnByb3RvdHlwZSxoZT1lZShrZSksTz1mdW5jdGlvbih6LG5lLHRlKXt2YXIgeD1oZSh6KSxQPUUoVShuZSksITApO3JldHVybiEwPT09UD9mZSh4KS5zZXQobmUsdGUpOlBbeC5pZF09dGUsen07cmV0dXJuIEIoRWUse2RlbGV0ZTpmdW5jdGlvbih6KXt2YXIgbmU9''@;'; put 'put ''aGUodGhpcyk7aWYoIVooeikpcmV0dXJuITE7dmFyIHRlPUUoeik7cmV0dXJuITA9PT10ZT9mZShuZSkuZGVsZXRlKHopOnRlJiZZKHRlLG5lLmlkKSYmZGVsZXRlIHRlW25lLmlkXX0saGFzOmZ1bmN0aW9uKG5lKXt2YXIgdGU9aGUodGhpcyk7aWYoIVoobmUpKXJldHVybiExO3ZhciB4PUUo''@;'; put 'put ''bmUpO3JldHVybiEwPT09eD9mZSh0ZSkuaGFzKG5lKTp4JiZZKHgsdGUuaWQpfX0pLEIoRWUsU2U/e2dldDpmdW5jdGlvbihuZSl7dmFyIHRlPWhlKHRoaXMpO2lmKFoobmUpKXt2YXIgeD1FKG5lKTtyZXR1cm4hMD09PXg/ZmUodGUpLmdldChuZSk6eD94W3RlLmlkXTp2b2lkIDB9fSxzZXQ6''@;'; put 'put ''ZnVuY3Rpb24obmUsdGUpe3JldHVybiBPKHRoaXMsbmUsdGUpfX06e2FkZDpmdW5jdGlvbihuZSl7cmV0dXJuIE8odGhpcyxuZSwhMCl9fSksVGV9fX0sNDY4NTc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDg1NjQ4KSxCPUwoNzA3MDUpLEU9TCg2NjEzKSxNZT1MKDY3NTA3''@;'; put 'put ''KSxVPUwoMjU2NjYpLFE9TCg3MTgzMiksWj1MKDI2NTQzKSxpZT1MKDk1MjA0KSxsZT1MKDEyMDE0KSxZPUwoNjM3NCksVz1MKDcxNDk2KSxOPUwoMjM1MjMpLGVlPUwoMjc3OTIpLHE9TCg1NTk2OCksSj1MKDUxODQ5KTtYZS5leHBvcnRzPWZ1bmN0aW9uKHNlLGFlLGZlKXt2YXIgZGU9LTEh''@;'; put 'put ''PT1zZS5pbmRleE9mKCJNYXAiKSx2ZT0tMSE9PXNlLmluZGV4T2YoIldlYWsiKSxBZT1kZT8ic2V0IjoiYWRkIixrZT1CW3NlXSxTZT1rZSYma2UucHJvdG90eXBlLEllPWtlLFRlPXt9LEVlPWZ1bmN0aW9uKFApe3ZhciBWPUUoU2VbUF0pO1UoU2UsUCwiYWRkIj09UD9mdW5jdGlvbihTKXty''@;'; put 'put ''ZXR1cm4gVih0aGlzLDA9PT1TPzA6UyksdGhpc306ImRlbGV0ZSI9PVA/ZnVuY3Rpb24oVCl7cmV0dXJuISh2ZSYmIVcoVCkpJiZWKHRoaXMsMD09PVQ/MDpUKX06ImdldCI9PVA/ZnVuY3Rpb24oUyl7cmV0dXJuIHZlJiYhVyhTKT92b2lkIDA6Vih0aGlzLDA9PT1TPzA6Uyl9OiJoYXMiPT1Q''@;'; put 'put ''P2Z1bmN0aW9uKFMpe3JldHVybiEodmUmJiFXKFMpKSYmVih0aGlzLDA9PT1TPzA6Uyl9OmZ1bmN0aW9uKFMsRil7cmV0dXJuIFYodGhpcywwPT09Uz8wOlMsRiksdGhpc30pfTtpZihNZShzZSwhbGUoa2UpfHwhKHZlfHxTZS5mb3JFYWNoJiYhTihmdW5jdGlvbigpeyhuZXcga2UpLmVudHJp''@;'; put 'put ''ZXMoKS5uZXh0KCl9KSkpKUllPWZlLmdldENvbnN0cnVjdG9yKGFlLHNlLGRlLEFlKSxRLmVuYWJsZSgpO2Vsc2UgaWYoTWUoc2UsITApKXt2YXIgTz1uZXcgSWUsej1PW0FlXSh2ZT97fTotMCwxKSE9TyxuZT1OKGZ1bmN0aW9uKCl7Ty5oYXMoMSl9KSx0ZT1lZShmdW5jdGlvbihQKXtuZXcg''@;'; put 'put ''a2UoUCl9KSx4PSF2ZSYmTihmdW5jdGlvbigpe2Zvcih2YXIgUD1uZXcga2UsVj01O1YtLTspUFtBZV0oVixWKTtyZXR1cm4hUC5oYXMoLTApfSk7dGV8fCgoSWU9YWUoZnVuY3Rpb24oUCxWKXtpZShQLFNlKTt2YXIgVD1KKG5ldyBrZSxQLEllKTtyZXR1cm4gWShWKXx8WihWLFRbQWVdLHt0''@;'; put 'put ''aGF0OlQsQVNfRU5UUklFUzpkZX0pLFR9KSkucHJvdG90eXBlPVNlLFNlLmNvbnN0cnVjdG9yPUllKSwobmV8fHgpJiYoRWUoImRlbGV0ZSIpLEVlKCJoYXMiKSxkZSYmRWUoImdldCIpKSwoeHx8eikmJkVlKEFlKSx2ZSYmU2UuY2xlYXImJmRlbGV0ZSBTZS5jbGVhcn1yZXR1cm4gVGVbc2Vd''@;'; put 'put ''PUllLGdlKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOkllIT1rZX0sVGUpLHEoSWUsc2UpLHZlfHxmZS5zZXRTdHJvbmcoSWUsc2UsZGUpLEllfX0sNzc1NDg6KFhlLEplLEwpPT57dmFyIGdlPUwoNDg4MTEpLEI9TCgyMTE5OSksRT1MKDQ3OTg3KSxNZT1MKDUxMTgzKTtYZS5l''@;'; put 'put ''eHBvcnRzPWZ1bmN0aW9uKFUsUSxaKXtmb3IodmFyIGllPUIoUSksbGU9TWUuZixZPUUuZixXPTA7VzxpZS5sZW5ndGg7VysrKXt2YXIgTj1pZVtXXTshZ2UoVSxOKSYmKCFafHwhZ2UoWixOKSkmJmxlKFUsTixZKFEsTikpfX19LDc2NTcxOihYZSxKZSxMKT0+e3ZhciBCPUwoMjU0NikoIm1h''@;'; put 'put ''dGNoIik7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXt2YXIgTWU9Ly4vO3RyeXsiLy4vIltFXShNZSl9Y2F0Y2goVSl7dHJ5e3JldHVybiBNZVtCXT0hMSwiLy4vIltFXShNZSl9Y2F0Y2goUSl7fX1yZXR1cm4hMX19LDQ2MDg2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDIzNTIzKTtYZS5leHBvcnRz''@;'; put 'put ''PSFnZShmdW5jdGlvbigpe2Z1bmN0aW9uIEIoKXt9cmV0dXJuIEIucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBCKSE9PUIucHJvdG90eXBlfSl9LDk1MTEwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpLEI9TCgyNDU3MiksRT1MKDkyMSks''@;'; put 'put ''TWU9LyIvZyxVPWdlKCIiLnJlcGxhY2UpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oUSxaLGllLGxlKXt2YXIgWT1FKEIoUSkpLFc9IjwiK1o7cmV0dXJuIiIhPT1pZSYmKFcrPSIgIitpZSsnPSInK1UoRShsZSksTWUsIiZxdW90OyIpKyciJyksVysiPiIrWSsiPC8iK1orIj4ifX0sMTYwMTc6KFhl''@;'; put 'put ''LEplLEwpPT57dmFyIGdlPUwoODU2MjQpLEI9TCg1MTE4MyksRT1MKDczOTIwKTtYZS5leHBvcnRzPWdlP2Z1bmN0aW9uKE1lLFUsUSl7cmV0dXJuIEIuZihNZSxVLEUoMSxRKSl9OmZ1bmN0aW9uKE1lLFUsUSl7cmV0dXJuIE1lW1VdPVEsTWV9fSw3MzkyMDpYZT0+e1hlLmV4cG9ydHM9ZnVu''@;'; put 'put ''Y3Rpb24oSmUsTCl7cmV0dXJue2VudW1lcmFibGU6ISgxJkplKSxjb25maWd1cmFibGU6ISgyJkplKSx3cml0YWJsZTohKDQmSmUpLHZhbHVlOkx9fX0sOTUwMDQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDg0MDk0KSxCPUwoNTExODMpLEU9TCg3MzkyMCk7WGUuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihNZSxVLFEpe3ZhciBaPWdlKFUpO1ogaW4gTWU/Qi5mKE1lLFosRSgwLFEpKTpNZVtaXT1RfX0sMjU2NjY6KFhlLEplLEwpPT57dmFyIGdlPUwoMTIwMTQpLEI9TCg1MTE4MyksRT1MKDM0NDY4KSxNZT1MKDczNDcwKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSxaLGllKXtp''@;'; put 'put ''ZXx8KGllPXt9KTt2YXIgbGU9aWUuZW51bWVyYWJsZSxZPXZvaWQgMCE9PWllLm5hbWU/aWUubmFtZTpRO2lmKGdlKFopJiZFKFosWSxpZSksaWUuZ2xvYmFsKWxlP1VbUV09WjpNZShRLFopO2Vsc2V7dHJ5e2llLnVuc2FmZT9VW1FdJiYobGU9ITApOmRlbGV0ZSBVW1FdfWNhdGNoKFcpe31s''@;'; put 'put ''ZT9VW1FdPVo6Qi5mKFUsUSx7dmFsdWU6WixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohaWUubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFpZS5ub25Xcml0YWJsZX0pfXJldHVybiBVfX0sNzQwNjk6KFhlLEplLEwpPT57dmFyIGdlPUwoMjU2NjYpO1hlLmV4cG9ydHM9ZnVuY3Rpb24o''@;'; put 'put ''QixFLE1lKXtmb3IodmFyIFUgaW4gRSlnZShCLFUsRVtVXSxNZSk7cmV0dXJuIEJ9fSw3MzQ3MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3MDcwNSksQj1PYmplY3QuZGVmaW5lUHJvcGVydHk7WGUuZXhwb3J0cz1mdW5jdGlvbihFLE1lKXt0cnl7QihnZSxFLHt2YWx1ZTpNZSxjb25maWd1cmFi''@;'; put 'put ''bGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChVKXtnZVtFXT1NZX1yZXR1cm4gTWV9fSw0NjI4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg5NDY3NiksQj1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihFLE1lKXtpZighZGVsZXRlIEVbTWVdKXRocm93IEIoIkNhbm5v''@;'; put 'put ''dCBkZWxldGUgcHJvcGVydHkgIitnZShNZSkrIiBvZiAiK2dlKEUpKX19LDg1NjI0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDIzNTIzKTtYZS5leHBvcnRzPSFnZShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9''@;'; put 'put ''fSlbMV19KX0sNDYzMTM6KFhlLEplLEwpPT57dmFyIGdlPUwoNzA3MDUpLEI9TCg3MTQ5NiksRT1nZS5kb2N1bWVudCxNZT1CKEUpJiZCKEUuY3JlYXRlRWxlbWVudCk7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtyZXR1cm4gTWU/RS5jcmVhdGVFbGVtZW50KFUpOnt9fX0sMjMxMjQ6WGU9Pnt2''@;'; put 'put ''YXIgSmU9VHlwZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oZ2Upe2lmKGdlPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgSmUoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBnZX19LDE5MjMxOlhlPT57WGUuZXhwb3J0cz17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURl''@;'; put 'put ''Y2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxlY3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxG''@;'; put 'put ''b3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVuZ3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQ''@;'; put 'put ''YXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxUb3VjaExpc3Q6MH19LDI5OTEwOihYZSxKZSxMKT0+''@;'; put 'put ''e3ZhciBCPUwoNDYzMTMpKCJzcGFuIikuY2xhc3NMaXN0LEU9QiYmQi5jb25zdHJ1Y3RvciYmQi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7WGUuZXhwb3J0cz1FPT09T2JqZWN0LnByb3RvdHlwZT92b2lkIDA6RX0sNzU3MDY6KFhlLEplLEwpPT57dmFyIEI9TCg3NzgzOSkubWF0Y2goL2ZpcmVm''@;'; put 'put ''b3hcLyhcZCspL2kpO1hlLmV4cG9ydHM9ISFCJiYrQlsxXX0sOTg4NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3NzgzOSk7WGUuZXhwb3J0cz0vTVNJRXxUcmlkZW50Ly50ZXN0KGdlKX0sNzg1MjA6KFhlLEplLEwpPT57dmFyIGdlPUwoNzc4MzkpO1hlLmV4cG9ydHM9Lyg/OmlwYWR8aXBob25l''@;'; put 'put ''fGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3QoZ2UpfSw4NzI0NDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg5NDcyMyksQj1MKDcwNzA1KTtYZS5leHBvcnRzPSJwcm9jZXNzIj09Z2UoQi5wcm9jZXNzKX0sNzc4Mzk6KFhlLEplLEwpPT57dmFyIGdlPUwoNDY2OTMpO1hlLmV4cG9ydHM9Z2UoIm5h''@;'; put 'put ''dmlnYXRvciIsInVzZXJBZ2VudCIpfHwiIn0sMjkzODU6KFhlLEplLEwpPT57dmFyIFosaWUsZ2U9TCg3MDcwNSksQj1MKDc3ODM5KSxFPWdlLnByb2Nlc3MsTWU9Z2UuRGVubyxVPUUmJkUudmVyc2lvbnN8fE1lJiZNZS52ZXJzaW9uLFE9VSYmVS52ODtRJiYoaWU9KFo9US5zcGxpdCgiLiIp''@;'; put 'put ''KVswXT4wJiZaWzBdPDQ/MTorKFpbMF0rWlsxXSkpLCFpZSYmQiYmKCEoWj1CLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8WlsxXT49NzQpJiYoWj1CLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYoaWU9K1pbMV0pLFhlLmV4cG9ydHM9aWV9LDk2MzQ6KFhlLEplLEwpPT57dmFyIEI9TCg3Nzgz''@;'; put 'put ''OSkubWF0Y2goL0FwcGxlV2ViS2l0XC8oXGQrKVwuLyk7WGUuZXhwb3J0cz0hIUImJitCWzFdfSw0NzgzMzpYZT0+e1hlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmci''@;'; put 'put ''LCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sODU2NDg6KFhlLEplLEwpPT57dmFyIGdlPUwoNzA3MDUpLEI9TCg0Nzk4NykuZixFPUwoMTYwMTcpLE1lPUwoMjU2NjYpLFU9TCg3MzQ3MCksUT1MKDc3NTQ4KSxaPUwoNjc1MDcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oaWUsbGUpe3ZhciBxLEosc2Us''@;'; put 'put ''YWUsZmUsWT1pZS50YXJnZXQsVz1pZS5nbG9iYWwsTj1pZS5zdGF0O2lmKHE9Vz9nZTpOP2dlW1ldfHxVKFkse30pOihnZVtZXXx8e30pLnByb3RvdHlwZSlmb3IoSiBpbiBsZSl7aWYoYWU9bGVbSl0sc2U9aWUuZG9udENhbGxHZXRTZXQ/KGZlPUIocSxKKSkmJmZlLnZhbHVlOnFbSl0sIVoo''@;'; put 'put ''Vz9KOlkrKE4/Ii4iOiIjIikrSixpZS5mb3JjZWQpJiZ2b2lkIDAhPT1zZSl7aWYodHlwZW9mIGFlPT10eXBlb2Ygc2UpY29udGludWU7UShhZSxzZSl9KGllLnNoYW18fHNlJiZzZS5zaGFtKSYmRShhZSwic2hhbSIsITApLE1lKHEsSixhZSxpZSl9fX0sMjM1MjM6WGU9PntYZS5leHBvcnRz''@;'; put 'put ''PWZ1bmN0aW9uKEplKXt0cnl7cmV0dXJuISFKZSgpfWNhdGNoKEwpe3JldHVybiEwfX19LDIyODE0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDQyNzYwKTt2YXIgZ2U9TCg2NjEzKSxCPUwoMjU2NjYpLEU9TCgyMjIzNCksTWU9TCgyMzUyMyksVT1MKDI1NDYpLFE9TCgxNjAxNyksWj1V''@;'; put 'put ''KCJzcGVjaWVzIiksaWU9UmVnRXhwLnByb3RvdHlwZTtYZS5leHBvcnRzPWZ1bmN0aW9uKGxlLFksVyxOKXt2YXIgZWU9VShsZSkscT0hTWUoZnVuY3Rpb24oKXt2YXIgZmU9e307cmV0dXJuIGZlW2VlXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIltsZV0oZmUpfSksSj1xJiYhTWUoZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgZmU9ITEsZGU9L2EvO3JldHVybiJzcGxpdCI9PT1sZSYmKChkZT17fSkuY29uc3RydWN0b3I9e30sZGUuY29uc3RydWN0b3JbWl09ZnVuY3Rpb24oKXtyZXR1cm4gZGV9LGRlLmZsYWdzPSIiLGRlW2VlXT0vLi9bZWVdKSxkZS5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIGZl''@;'; put 'put ''PSEwLG51bGx9LGRlW2VlXSgiIiksIWZlfSk7aWYoIXF8fCFKfHxXKXt2YXIgc2U9Z2UoLy4vW2VlXSksYWU9WShlZSwiIltsZV0sZnVuY3Rpb24oZmUsZGUsdmUsQWUsa2Upe3ZhciBTZT1nZShmZSksSWU9ZGUuZXhlYztyZXR1cm4gSWU9PT1FfHxJZT09PWllLmV4ZWM/cSYmIWtlP3tkb25l''@;'; put 'put ''OiEwLHZhbHVlOnNlKGRlLHZlLEFlKX06e2RvbmU6ITAsdmFsdWU6U2UodmUsZGUsQWUpfTp7ZG9uZTohMX19KTtCKFN0cmluZy5wcm90b3R5cGUsbGUsYWVbMF0pLEIoaWUsZWUsYWVbMV0pfU4mJlEoaWVbZWVdLCJzaGFtIiwhMCl9fSwxMjU2NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMzUy''@;'; put 'put ''Myk7WGUuZXhwb3J0cz0hZ2UoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pfSwxMTMwNjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgzNjU2MSksQj1GdW5jdGlvbi5wcm90b3R5cGUsRT1CLmFwcGx5LE1lPUIuY2FsbDtY''@;'; put 'put ''ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5hcHBseXx8KGdlP01lLmJpbmQoRSk6ZnVuY3Rpb24oKXtyZXR1cm4gTWUuYXBwbHkoRSxhcmd1bWVudHMpfSl9LDg1NDk6KFhlLEplLEwpPT57dmFyIGdlPUwoNjYxMyksQj1MKDgxNDUwKSxFPUwoMzY1NjEpLE1l''@;'; put 'put ''PWdlKGdlLmJpbmQpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSxRKXtyZXR1cm4gQihVKSx2b2lkIDA9PT1RP1U6RT9NZShVLFEpOmZ1bmN0aW9uKCl7cmV0dXJuIFUuYXBwbHkoUSxhcmd1bWVudHMpfX19LDM2NTYxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDIzNTIzKTtYZS5leHBvcnRzPSFnZShm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBCPWZ1bmN0aW9uKCl7fS5iaW5kKCk7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIEJ8fEIuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpfSl9LDY5ODk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDY2MTMpLEI9TCg4MTQ1MCksRT1MKDcxNDk2KSxN''@;'; put 'put ''ZT1MKDQ4ODExKSxVPUwoNDA5MzApLFE9TCgzNjU2MSksWj1GdW5jdGlvbixpZT1nZShbXS5jb25jYXQpLGxlPWdlKFtdLmpvaW4pLFk9e30sVz1mdW5jdGlvbihOLGVlLHEpe2lmKCFNZShZLGVlKSl7Zm9yKHZhciBKPVtdLHNlPTA7c2U8ZWU7c2UrKylKW3NlXT0iYVsiK3NlKyJdIjtZW2Vl''@;'; put 'put ''XT1aKCJDLGEiLCJyZXR1cm4gbmV3IEMoIitsZShKLCIsIikrIikiKX1yZXR1cm4gWVtlZV0oTixxKX07WGUuZXhwb3J0cz1RP1ouYmluZDpmdW5jdGlvbihlZSl7dmFyIHE9Qih0aGlzKSxKPXEucHJvdG90eXBlLHNlPVUoYXJndW1lbnRzLDEpLGFlPWZ1bmN0aW9uKCl7dmFyIGRlPWllKHNl''@;'; put 'put ''LFUoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhZT9XKHEsZGUubGVuZ3RoLGRlKTpxLmFwcGx5KGVlLGRlKX07cmV0dXJuIEUoSikmJihhZS5wcm90b3R5cGU9SiksYWV9fSwzNTYyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDM2NTYxKSxCPUZ1bmN0aW9uLnByb3RvdHlwZS5j''@;'; put 'put ''YWxsO1hlLmV4cG9ydHM9Z2U/Qi5iaW5kKEIpOmZ1bmN0aW9uKCl7cmV0dXJuIEIuYXBwbHkoQixhcmd1bWVudHMpfX0sMTM4Njk6KFhlLEplLEwpPT57dmFyIGdlPUwoODU2MjQpLEI9TCg0ODgxMSksRT1GdW5jdGlvbi5wcm90b3R5cGUsTWU9Z2UmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURl''@;'; put 'put ''c2NyaXB0b3IsVT1CKEUsIm5hbWUiKSxRPVUmJiJzb21ldGhpbmciPT09ZnVuY3Rpb24oKXt9Lm5hbWUsWj1VJiYoIWdlfHxnZSYmTWUoRSwibmFtZSIpLmNvbmZpZ3VyYWJsZSk7WGUuZXhwb3J0cz17RVhJU1RTOlUsUFJPUEVSOlEsQ09ORklHVVJBQkxFOlp9fSw2NjEzOihYZSxKZSxMKT0+''@;'; put 'put ''e3ZhciBnZT1MKDM2NTYxKSxCPUZ1bmN0aW9uLnByb3RvdHlwZSxNZT1CLmNhbGwsVT1nZSYmQi5iaW5kLmJpbmQoTWUsTWUpO1hlLmV4cG9ydHM9Z2U/ZnVuY3Rpb24oUSl7cmV0dXJuIFEmJlUoUSl9OmZ1bmN0aW9uKFEpe3JldHVybiBRJiZmdW5jdGlvbigpe3JldHVybiBNZS5hcHBseShR''@;'; put 'put ''LGFyZ3VtZW50cyl9fX0sNDY2OTM6KFhlLEplLEwpPT57dmFyIGdlPUwoNzA3MDUpLEI9TCgxMjAxNCksRT1mdW5jdGlvbihNZSl7cmV0dXJuIEIoTWUpP01lOnZvaWQgMH07WGUuZXhwb3J0cz1mdW5jdGlvbihNZSxVKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0UoZ2VbTWVdKTpnZVtN''@;'; put 'put ''ZV0mJmdlW01lXVtVXX19LDY2Mjg4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDc5NTIwKSxCPUwoMjA5NDgpLEU9TCg2Mzc0KSxNZT1MKDk1MjU3KSxRPUwoMjU0NikoIml0ZXJhdG9yIik7WGUuZXhwb3J0cz1mdW5jdGlvbihaKXtpZighRShaKSlyZXR1cm4gQihaLFEpfHxCKFosIkBAaXRlcmF0''@;'; put 'put ''b3IiKXx8TWVbZ2UoWildfX0sMTI5ODk6KFhlLEplLEwpPT57dmFyIGdlPUwoMzU2MiksQj1MKDgxNDUwKSxFPUwoNTg2NDcpLE1lPUwoOTQ2NzYpLFU9TCg2NjI4OCksUT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihaLGllKXt2YXIgbGU9YXJndW1lbnRzLmxlbmd0aDwyP1UoWik6''@;'; put 'put ''aWU7aWYoQihsZSkpcmV0dXJuIEUoZ2UobGUsWikpO3Rocm93IFEoTWUoWikrIiBpcyBub3QgaXRlcmFibGUiKX19LDIwOTQ4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDgxNDUwKSxCPUwoNjM3NCk7WGUuZXhwb3J0cz1mdW5jdGlvbihFLE1lKXt2YXIgVT1FW01lXTtyZXR1cm4gQihVKT92b2lk''@;'; put 'put ''IDA6Z2UoVSl9fSw2MzM4MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2NjEzKSxCPUwoNjgwNzEpLEU9TWF0aC5mbG9vcixNZT1nZSgiIi5jaGFyQXQpLFU9Z2UoIiIucmVwbGFjZSksUT1nZSgiIi5zbGljZSksWj0vXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZyxpZT0vXCQoWyQmJ2BdfFxk''@;'; put 'put ''ezEsMn0pL2c7WGUuZXhwb3J0cz1mdW5jdGlvbihsZSxZLFcsTixlZSxxKXt2YXIgSj1XK2xlLmxlbmd0aCxzZT1OLmxlbmd0aCxhZT1pZTtyZXR1cm4gdm9pZCAwIT09ZWUmJihlZT1CKGVlKSxhZT1aKSxVKHEsYWUsZnVuY3Rpb24oZmUsZGUpe3ZhciB2ZTtzd2l0Y2goTWUoZGUsMCkpe2Nh''@;'; put 'put ''c2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIGxlO2Nhc2UiYCI6cmV0dXJuIFEoWSwwLFcpO2Nhc2UiJyI6cmV0dXJuIFEoWSxKKTtjYXNlIjwiOnZlPWVlW1EoZGUsMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIEFlPStkZTtpZigwPT09QWUpcmV0dXJuIGZlO2lmKEFlPnNlKXt2YXIg''@;'; put 'put ''a2U9RShBZS8xMCk7cmV0dXJuIDA9PT1rZT9mZTprZTw9c2U/dm9pZCAwPT09TltrZS0xXT9NZShkZSwxKTpOW2tlLTFdK01lKGRlLDEpOmZlfXZlPU5bQWUtMV19cmV0dXJuIHZvaWQgMD09PXZlPyIiOnZlfSl9fSw3MDcwNTpYZT0+e3ZhciBKZT1mdW5jdGlvbihMKXtyZXR1cm4gTCYmTC5N''@;'; put 'put ''YXRoPT1NYXRoJiZMfTtYZS5leHBvcnRzPUplKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fEplKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxKZSgib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxKZSgib2JqZWN0Ij09dHlwZW9mIGdsb2Jh''@;'; put 'put ''bCYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sNDg4MTE6KFhlLEplLEwpPT57dmFyIGdlPUwoNjYxMyksQj1MKDY4MDcxKSxFPWdlKHt9Lmhhc093blByb3BlcnR5KTtYZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0''@;'; put 'put ''aW9uKFUsUSl7cmV0dXJuIEUoQihVKSxRKX19LDE5OTA5OlhlPT57WGUuZXhwb3J0cz17fX0sNTk0MDY6KFhlLEplLEwpPT57dmFyIGdlPUwoNDY2OTMpO1hlLmV4cG9ydHM9Z2UoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDk0Njc1OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjI0''@;'; put 'put ''KSxCPUwoMjM1MjMpLEU9TCg0NjMxMyk7WGUuZXhwb3J0cz0hZ2UmJiFCKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sNTY2MDc6KFhlLEplLEwpPT57dmFyIGdlPUwoNjYxMyks''@;'; put 'put ''Qj1MKDIzNTIzKSxFPUwoOTQ3MjMpLE1lPU9iamVjdCxVPWdlKCIiLnNwbGl0KTtYZS5leHBvcnRzPUIoZnVuY3Rpb24oKXtyZXR1cm4hTWUoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKFEpe3JldHVybiJTdHJpbmciPT1FKFEpP1UoUSwiIik6TWUoUSl9Ok1lfSw1''@;'; put 'put ''MTg0OTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgxMjAxNCksQj1MKDcxNDk2KSxFPUwoMTk1ODcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUsVSxRKXt2YXIgWixpZTtyZXR1cm4gRSYmZ2UoWj1VLmNvbnN0cnVjdG9yKSYmWiE9PVEmJkIoaWU9Wi5wcm90b3R5cGUpJiZpZSE9PVEucHJvdG90eXBl''@;'; put 'put ''JiZFKE1lLGllKSxNZX19LDU3MzcxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpLEI9TCgxMjAxNCksRT1MKDgxMDY5KSxNZT1nZShGdW5jdGlvbi50b1N0cmluZyk7QihFLmluc3BlY3RTb3VyY2UpfHwoRS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKFUpe3JldHVybiBNZShVKX0pLFhlLmV4''@;'; put 'put ''cG9ydHM9RS5pbnNwZWN0U291cmNlfSw3MTgzMjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDY2MTMpLEU9TCgxOTkwOSksTWU9TCg3MTQ5NiksVT1MKDQ4ODExKSxRPUwoNTExODMpLmYsWj1MKDc1NDMxKSxpZT1MKDM1ODA4KSxsZT1MKDU1MjE4KSxZPUwoNTI4MTApLFc9TCgx''@;'; put 'put ''MjU2NiksTj0hMSxlZT1ZKCJtZXRhIikscT0wLEo9ZnVuY3Rpb24oQWUpe1EoQWUsZWUse3ZhbHVlOntvYmplY3RJRDoiTyIrcSsrLHdlYWtEYXRhOnt9fX0pfSx2ZT1YZS5leHBvcnRzPXtlbmFibGU6ZnVuY3Rpb24oKXt2ZS5lbmFibGU9ZnVuY3Rpb24oKXt9LE49ITA7dmFyIEFlPVouZixr''@;'; put 'put ''ZT1CKFtdLnNwbGljZSksU2U9e307U2VbZWVdPTEsQWUoU2UpLmxlbmd0aCYmKFouZj1mdW5jdGlvbihJZSl7Zm9yKHZhciBUZT1BZShJZSksRWU9MCxoZT1UZS5sZW5ndGg7RWU8aGU7RWUrKylpZihUZVtFZV09PT1lZSl7a2UoVGUsRWUsMSk7YnJlYWt9cmV0dXJuIFRlfSxnZSh7dGFyZ2V0''@;'; put 'put ''OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiEwfSx7Z2V0T3duUHJvcGVydHlOYW1lczppZS5mfSkpfSxmYXN0S2V5OmZ1bmN0aW9uKEFlLGtlKXtpZighTWUoQWUpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgQWU/QWU6KCJzdHJpbmciPT10eXBlb2YgQWU/IlMiOiJQIikrQWU7aWYoIVUoQWUs''@;'; put 'put ''ZWUpKXtpZighbGUoQWUpKXJldHVybiJGIjtpZigha2UpcmV0dXJuIkUiO0ooQWUpfXJldHVybiBBZVtlZV0ub2JqZWN0SUR9LGdldFdlYWtEYXRhOmZ1bmN0aW9uKEFlLGtlKXtpZighVShBZSxlZSkpe2lmKCFsZShBZSkpcmV0dXJuITA7aWYoIWtlKXJldHVybiExO0ooQWUpfXJldHVybiBB''@;'; put 'put ''ZVtlZV0ud2Vha0RhdGF9LG9uRnJlZXplOmZ1bmN0aW9uKEFlKXtyZXR1cm4gVyYmTiYmbGUoQWUpJiYhVShBZSxlZSkmJkooQWUpLEFlfX07RVtlZV09ITB9LDcyNzooWGUsSmUsTCk9Pnt2YXIgZWUscSxKLGdlPUwoMTc1NDIpLEI9TCg3MDcwNSksRT1MKDY2MTMpLE1lPUwoNzE0OTYpLFU9''@;'; put 'put ''TCgxNjAxNyksUT1MKDQ4ODExKSxaPUwoODEwNjkpLGllPUwoMjcyMzApLGxlPUwoMTk5MDkpLFk9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixXPUIuVHlwZUVycm9yO2lmKGdlfHxaLnN0YXRlKXt2YXIgZmU9Wi5zdGF0ZXx8KFouc3RhdGU9bmV3KDAsQi5XZWFrTWFwKSksZGU9RShm''@;'; put 'put ''ZS5nZXQpLHZlPUUoZmUuaGFzKSxBZT1FKGZlLnNldCk7ZWU9ZnVuY3Rpb24oU2UsSWUpe2lmKHZlKGZlLFNlKSl0aHJvdyBXKFkpO3JldHVybiBJZS5mYWNhZGU9U2UsQWUoZmUsU2UsSWUpLEllfSxxPWZ1bmN0aW9uKFNlKXtyZXR1cm4gZGUoZmUsU2UpfHx7fX0sSj1mdW5jdGlvbihTZSl7''@;'; put 'put ''cmV0dXJuIHZlKGZlLFNlKX19ZWxzZXt2YXIga2U9aWUoInN0YXRlIik7bGVba2VdPSEwLGVlPWZ1bmN0aW9uKFNlLEllKXtpZihRKFNlLGtlKSl0aHJvdyBXKFkpO3JldHVybiBJZS5mYWNhZGU9U2UsVShTZSxrZSxJZSksSWV9LHE9ZnVuY3Rpb24oU2Upe3JldHVybiBRKFNlLGtlKT9TZVtr''@;'; put 'put ''ZV06e319LEo9ZnVuY3Rpb24oU2Upe3JldHVybiBRKFNlLGtlKX19WGUuZXhwb3J0cz17c2V0OmVlLGdldDpxLGhhczpKLGVuZm9yY2U6ZnVuY3Rpb24oU2Upe3JldHVybiBKKFNlKT9xKFNlKTplZShTZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihTZSl7cmV0dXJuIGZ1bmN0aW9uKEllKXt2''@;'; put 'put ''YXIgVGU7aWYoIU1lKEllKXx8KFRlPXEoSWUpKS50eXBlIT09U2UpdGhyb3cgVygiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK1NlKyIgcmVxdWlyZWQiKTtyZXR1cm4gVGV9fX19LDk3MTA2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDI1NDYpLEI9TCg5NTI1NyksRT1nZSgiaXRlcmF0b3IiKSxN''@;'; put 'put ''ZT1BcnJheS5wcm90b3R5cGU7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtyZXR1cm4gdm9pZCAwIT09VSYmKEIuQXJyYXk9PT1VfHxNZVtFXT09PVUpfX0sMjkxMDY6KFhlLEplLEwpPT57dmFyIGdlPUwoOTQ3MjMpO1hlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oRSl7cmV0dXJu''@;'; put 'put ''IkFycmF5Ij09Z2UoRSl9fSwxMjAxNDpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBKZX19LDQ5NDUzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpLEI9TCgyMzUyMyksRT1MKDEyMDE0KSxNZT1MKDc5NTIwKSxVPUwoNDY2OTMpLFE9TCg1''@;'; put 'put ''NzM3MSksWj1mdW5jdGlvbigpe30saWU9W10sbGU9VSgiUmVmbGVjdCIsImNvbnN0cnVjdCIpLFk9L15ccyooPzpjbGFzc3xmdW5jdGlvbilcYi8sVz1nZShZLmV4ZWMpLE49IVkuZXhlYyhaKSxlZT1mdW5jdGlvbihzZSl7aWYoIUUoc2UpKXJldHVybiExO3RyeXtyZXR1cm4gbGUoWixpZSxz''@;'; put 'put ''ZSksITB9Y2F0Y2goYWUpe3JldHVybiExfX0scT1mdW5jdGlvbihzZSl7aWYoIUUoc2UpKXJldHVybiExO3N3aXRjaChNZShzZSkpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1cm4hMX10cnl7cmV0''@;'; put 'put ''dXJuIE58fCEhVyhZLFEoc2UpKX1jYXRjaChhZSl7cmV0dXJuITB9fTtxLnNoYW09ITAsWGUuZXhwb3J0cz0hbGV8fEIoZnVuY3Rpb24oKXt2YXIgSjtyZXR1cm4gZWUoZWUuY2FsbCl8fCFlZShPYmplY3QpfHwhZWUoZnVuY3Rpb24oKXtKPSEwfSl8fEp9KT9xOmVlfSwxNDEyNTooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgZ2U9TCg0ODgxMSk7WGUuZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm4gdm9pZCAwIT09QiYmKGdlKEIsInZhbHVlIil8fGdlKEIsIndyaXRhYmxlIikpfX0sNjc1MDc6KFhlLEplLEwpPT57dmFyIGdlPUwoMjM1MjMpLEI9TCgxMjAxNCksRT0vI3xcLnByb3RvdHlwZVwuLyxN''@;'; put 'put ''ZT1mdW5jdGlvbihsZSxZKXt2YXIgVz1RW1UobGUpXTtyZXR1cm4gVz09aWV8fFchPVomJihCKFkpP2dlKFkpOiEhWSl9LFU9TWUubm9ybWFsaXplPWZ1bmN0aW9uKGxlKXtyZXR1cm4gU3RyaW5nKGxlKS5yZXBsYWNlKEUsIi4iKS50b0xvd2VyQ2FzZSgpfSxRPU1lLmRhdGE9e30sWj1NZS5O''@;'; put 'put ''QVRJVkU9Ik4iLGllPU1lLlBPTFlGSUxMPSJQIjtYZS5leHBvcnRzPU1lfSwzMDQyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDcxNDk2KSxCPU1hdGguZmxvb3I7WGUuZXhwb3J0cz1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihNZSl7cmV0dXJuIWdlKE1lKSYmaXNGaW5pdGUoTWUpJiZCKE1l''@;'; put 'put ''KT09PU1lfX0sNjM3NDpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUpe3JldHVybiBudWxsPT1KZX19LDcxNDk2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDEyMDE0KSxCPSJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmFsbDtYZS5leHBvcnRzPXZvaWQgMD09PUImJnZvaWQg''@;'; put 'put ''MCE9PUI/ZnVuY3Rpb24oTWUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgTWU/bnVsbCE9PU1lOmdlKE1lKXx8TWU9PT1CfTpmdW5jdGlvbihNZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBNZT9udWxsIT09TWU6Z2UoTWUpfX0sMTAwMTc6WGU9PntYZS5leHBvcnRzPSExfSw0MTgwNDooWGUs''@;'; put 'put ''SmUsTCk9Pnt2YXIgZ2U9TCg3MTQ5NiksQj1MKDk0NzIzKSxNZT1MKDI1NDYpKCJtYXRjaCIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7dmFyIFE7cmV0dXJuIGdlKFUpJiYodm9pZCAwIT09KFE9VVtNZV0pPyEhUToiUmVnRXhwIj09QihVKSl9fSw2OTc1OihYZSxKZSxMKT0+e3ZhciBnZT1M''@;'; put 'put ''KDQ2NjkzKSxCPUwoMTIwMTQpLEU9TCgzNzQ3NCksTWU9TCgyMzk2MSksVT1PYmplY3Q7WGUuZXhwb3J0cz1NZT9mdW5jdGlvbihRKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIFF9OmZ1bmN0aW9uKFEpe3ZhciBaPWdlKCJTeW1ib2wiKTtyZXR1cm4gQihaKSYmRShaLnByb3RvdHlwZSxVKFEp''@;'; put 'put ''KX19LDI2NTQzOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NDkpLEI9TCgzNTYyKSxFPUwoNTg2NDcpLE1lPUwoOTQ2NzYpLFU9TCg5NzEwNiksUT1MKDU0NDUwKSxaPUwoMzc0NzQpLGllPUwoMTI5ODkpLGxlPUwoNjYyODgpLFk9TCg4MDMwNyksVz1UeXBlRXJyb3IsTj1mdW5jdGlvbihxLEop''@;'; put 'put ''e3RoaXMuc3RvcHBlZD1xLHRoaXMucmVzdWx0PUp9LGVlPU4ucHJvdG90eXBlO1hlLmV4cG9ydHM9ZnVuY3Rpb24ocSxKLHNlKXt2YXIgU2UsSWUsVGUsRWUsaGUsTyx6LGZlPSEoIXNlfHwhc2UuQVNfRU5UUklFUyksZGU9ISghc2V8fCFzZS5JU19SRUNPUkQpLHZlPSEoIXNlfHwhc2UuSVNf''@;'; put 'put ''SVRFUkFUT1IpLEFlPSEoIXNlfHwhc2UuSU5URVJSVVBURUQpLGtlPWdlKEosc2UmJnNlLnRoYXQpLG5lPWZ1bmN0aW9uKHgpe3JldHVybiBTZSYmWShTZSwibm9ybWFsIix4KSxuZXcgTighMCx4KX0sdGU9ZnVuY3Rpb24oeCl7cmV0dXJuIGZlPyhFKHgpLEFlP2tlKHhbMF0seFsxXSxuZSk6''@;'; put 'put ''a2UoeFswXSx4WzFdKSk6QWU/a2UoeCxuZSk6a2UoeCl9O2lmKGRlKVNlPXEuaXRlcmF0b3I7ZWxzZSBpZih2ZSlTZT1xO2Vsc2V7aWYoIShJZT1sZShxKSkpdGhyb3cgVyhNZShxKSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKFUoSWUpKXtmb3IoVGU9MCxFZT1RKHEpO0VlPlRlO1RlKyspaWYo''@;'; put 'put ''KGhlPXRlKHFbVGVdKSkmJlooZWUsaGUpKXJldHVybiBoZTtyZXR1cm4gbmV3IE4oITEpfVNlPWllKHEsSWUpfWZvcihPPWRlP3EubmV4dDpTZS5uZXh0OyEoej1CKE8sU2UpKS5kb25lOyl7dHJ5e2hlPXRlKHoudmFsdWUpfWNhdGNoKHgpe1koU2UsInRocm93Iix4KX1pZigib2JqZWN0Ij09''@;'; put 'put ''dHlwZW9mIGhlJiZoZSYmWihlZSxoZSkpcmV0dXJuIGhlfXJldHVybiBuZXcgTighMSl9fSw4MDMwNzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgzNTYyKSxCPUwoNTg2NDcpLEU9TCgyMDk0OCk7WGUuZXhwb3J0cz1mdW5jdGlvbihNZSxVLFEpe3ZhciBaLGllO0IoTWUpO3RyeXtpZighKFo9RShN''@;'; put 'put ''ZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09VSl0aHJvdyBRO3JldHVybiBRfVo9Z2UoWixNZSl9Y2F0Y2gobGUpe2llPSEwLFo9bGV9aWYoInRocm93Ij09PVUpdGhyb3cgUTtpZihpZSl0aHJvdyBaO3JldHVybiBCKFopLFF9fSw4Nzk3NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IGdlPUwoMTg1NDYpLkl0ZXJhdG9yUHJvdG90eXBlLEI9TCg3NDQxMCksRT1MKDczOTIwKSxNZT1MKDU1OTY4KSxVPUwoOTUyNTcpLFE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307WGUuZXhwb3J0cz1mdW5jdGlvbihaLGllLGxlLFkpe3ZhciBXPWllKyIgSXRlcmF0b3IiO3JldHVybiBaLnBy''@;'; put 'put ''b3RvdHlwZT1CKGdlLHtuZXh0OkUoKyFZLGxlKX0pLE1lKFosVywhMSwhMCksVVtXXT1RLFp9fSw2NDU2MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCgzNTYyKSxFPUwoMTAwMTcpLE1lPUwoMTM4NjkpLFU9TCgxMjAxNCksUT1MKDg3OTc1KSxaPUwoODI3''@;'; put 'put ''MzMpLGllPUwoMTk1ODcpLGxlPUwoNTU5NjgpLFk9TCgxNjAxNyksVz1MKDI1NjY2KSxOPUwoMjU0NiksZWU9TCg5NTI1NykscT1MKDE4NTQ2KSxKPU1lLlBST1BFUixzZT1NZS5DT05GSUdVUkFCTEUsYWU9cS5JdGVyYXRvclByb3RvdHlwZSxmZT1xLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMs''@;'; put 'put ''ZGU9TigiaXRlcmF0b3IiKSxBZT0idmFsdWVzIixrZT0iZW50cmllcyIsU2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307WGUuZXhwb3J0cz1mdW5jdGlvbihJZSxUZSxFZSxoZSxPLHosbmUpe1EoRWUsVGUsaGUpO3ZhciB5ZSxDZSxEZSx0ZT1mdW5jdGlvbihQZSl7aWYoUGU9PT1PJiZTKXJl''@;'; put 'put ''dHVybiBTO2lmKCFmZSYmUGUgaW4gVilyZXR1cm4gVltQZV07c3dpdGNoKFBlKXtjYXNlImtleXMiOmNhc2UgQWU6Y2FzZSBrZTpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEVlKHRoaXMsUGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEVlKHRoaXMpfX0seD1UZSsiIEl0''@;'; put 'put ''ZXJhdG9yIixQPSExLFY9SWUucHJvdG90eXBlLFQ9VltkZV18fFZbIkBAaXRlcmF0b3IiXXx8TyYmVltPXSxTPSFmZSYmVHx8dGUoTyksRj0iQXJyYXkiPT1UZSYmVi5lbnRyaWVzfHxUO2lmKEYmJih5ZT1aKEYuY2FsbChuZXcgSWUpKSkhPT1PYmplY3QucHJvdG90eXBlJiZ5ZS5uZXh0JiYo''@;'; put 'put ''IUUmJlooeWUpIT09YWUmJihpZT9pZSh5ZSxhZSk6VSh5ZVtkZV0pfHxXKHllLGRlLFNlKSksbGUoeWUseCwhMCwhMCksRSYmKGVlW3hdPVNlKSksSiYmTz09QWUmJlQmJlQubmFtZSE9PUFlJiYoIUUmJnNlP1koViwibmFtZSIsQWUpOihQPSEwLFM9ZnVuY3Rpb24oKXtyZXR1cm4gQihULHRo''@;'; put 'put ''aXMpfSkpLE8paWYoQ2U9e3ZhbHVlczp0ZShBZSksa2V5czp6P1M6dGUoImtleXMiKSxlbnRyaWVzOnRlKGtlKX0sbmUpZm9yKERlIGluIENlKShmZXx8UHx8IShEZSBpbiBWKSkmJlcoVixEZSxDZVtEZV0pO2Vsc2UgZ2Uoe3RhcmdldDpUZSxwcm90bzohMCxmb3JjZWQ6ZmV8fFB9LENlKTty''@;'; put 'put ''ZXR1cm4oIUV8fG5lKSYmVltkZV0hPT1TJiZXKFYsZGUsUyx7bmFtZTpPfSksZWVbVGVdPVMsQ2V9fSwxODU0NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIFcsTixlZSxnZT1MKDIzNTIzKSxCPUwoMTIwMTQpLEU9TCg3MTQ5NiksTWU9TCg3NDQxMCksVT1MKDgyNzMzKSxRPUwoMjU2''@;'; put 'put ''NjYpLFo9TCgyNTQ2KSxpZT1MKDEwMDE3KSxsZT1aKCJpdGVyYXRvciIpLFk9ITE7W10ua2V5cyYmKCJuZXh0ImluKGVlPVtdLmtleXMoKSk/KE49VShVKGVlKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKFc9Tik6WT0hMCksIUUoVyl8fGdlKGZ1bmN0aW9uKCl7dmFyIEo9e307cmV0dXJuIFdb''@;'; put 'put ''bGVdLmNhbGwoSikhPT1KfSk/Vz17fTppZSYmKFc9TWUoVykpLEIoV1tsZV0pfHxRKFcsbGUsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFhlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOlcsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpZfX0sOTUyNTc6WGU9PntYZS5leHBvcnRzPXt9fSw1''@;'; put 'put ''NDQ1MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2NTMxNik7WGUuZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm4gZ2UoQi5sZW5ndGgpfX0sMzQ0Njg6KFhlLEplLEwpPT57dmFyIGdlPUwoMjM1MjMpLEI9TCgxMjAxNCksRT1MKDQ4ODExKSxNZT1MKDg1NjI0KSxVPUwoMTM4NjkpLkNPTkZJR1VS''@;'; put 'put ''QUJMRSxRPUwoNTczNzEpLFo9TCg3MjcpLGllPVouZW5mb3JjZSxsZT1aLmdldCxZPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxXPU1lJiYhZ2UoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PVkoZnVuY3Rpb24oKXt9LCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSksTj1TdHJpbmcoU3RyaW5nKS5z''@;'; put 'put ''cGxpdCgiU3RyaW5nIiksZWU9WGUuZXhwb3J0cz1mdW5jdGlvbihxLEosc2UpeyJTeW1ib2woIj09PVN0cmluZyhKKS5zbGljZSgwLDcpJiYoSj0iWyIrU3RyaW5nKEopLnJlcGxhY2UoL15TeW1ib2xcKChbXildKilcKS8sIiQxIikrIl0iKSxzZSYmc2UuZ2V0dGVyJiYoSj0iZ2V0ICIrSiks''@;'; put 'put ''c2UmJnNlLnNldHRlciYmKEo9InNldCAiK0opLCghRShxLCJuYW1lIil8fFUmJnEubmFtZSE9PUopJiYoTWU/WShxLCJuYW1lIix7dmFsdWU6Sixjb25maWd1cmFibGU6ITB9KTpxLm5hbWU9SiksVyYmc2UmJkUoc2UsImFyaXR5IikmJnEubGVuZ3RoIT09c2UuYXJpdHkmJlkocSwibGVuZ3Ro''@;'; put 'put ''Iix7dmFsdWU6c2UuYXJpdHl9KTt0cnl7c2UmJkUoc2UsImNvbnN0cnVjdG9yIikmJnNlLmNvbnN0cnVjdG9yP01lJiZZKHEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6cS5wcm90b3R5cGUmJihxLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGZlKXt9dmFyIGFlPWllKHEpO3JldHVybiBF''@;'; put 'put ''KGFlLCJzb3VyY2UiKXx8KGFlLnNvdXJjZT1OLmpvaW4oInN0cmluZyI9PXR5cGVvZiBKP0o6IiIpKSxxfTtGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9ZWUoZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzKSYmbGUodGhpcykuc291cmNlfHxRKHRoaXMpfSwidG9TdHJpbmciKX0sODQ3NDQ6''@;'; put 'put ''WGU9Pnt2YXIgSmU9TWF0aC5jZWlsLEw9TWF0aC5mbG9vcjtYZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKEIpe3ZhciBFPStCO3JldHVybihFPjA/TDpKZSkoRSl9fSw0MTk2MTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0MTgwNCksQj1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlv''@;'; put 'put ''bihFKXtpZihnZShFKSl0aHJvdyBCKCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnMiKTtyZXR1cm4gRX19LDQ3OTU5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTYyNCksQj1MKDY2MTMpLEU9TCgzNTYyKSxNZT1MKDIzNTIzKSxVPUwo''@;'; put 'put ''MTQ1NDUpLFE9TCg1NTM0KSxaPUwoNDY5MDEpLGllPUwoNjgwNzEpLGxlPUwoNTY2MDcpLFk9T2JqZWN0LmFzc2lnbixXPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxOPUIoW10uY29uY2F0KTtYZS5leHBvcnRzPSFZfHxNZShmdW5jdGlvbigpe2lmKGdlJiYxIT09WSh7YjoxfSxZKFcoe30sImEi''@;'; put 'put ''LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1codGhpcywiYiIse3ZhbHVlOjMsZW51bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgZWU9e30scT17fSxKPVN5bWJvbCgpLHNlPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIGVlW0pdPTcsc2Uuc3BsaXQo''@;'; put 'put ''IiIpLmZvckVhY2goZnVuY3Rpb24oYWUpe3FbYWVdPWFlfSksNyE9WSh7fSxlZSlbSl18fFUoWSh7fSxxKSkuam9pbigiIikhPXNlfSk/ZnVuY3Rpb24ocSxKKXtmb3IodmFyIHNlPWllKHEpLGFlPWFyZ3VtZW50cy5sZW5ndGgsZmU9MSxkZT1RLmYsdmU9Wi5mO2FlPmZlOylmb3IodmFyIFRl''@;'; put 'put ''LEFlPWxlKGFyZ3VtZW50c1tmZSsrXSksa2U9ZGU/TihVKEFlKSxkZShBZSkpOlUoQWUpLFNlPWtlLmxlbmd0aCxJZT0wO1NlPkllOylUZT1rZVtJZSsrXSwoIWdlfHxFKHZlLEFlLFRlKSkmJihzZVtUZV09QWVbVGVdKTtyZXR1cm4gc2V9Oll9LDc0NDEwOihYZSxKZSxMKT0+e3ZhciBhZSxn''@;'; put 'put ''ZT1MKDU4NjQ3KSxCPUwoNzczMjgpLEU9TCg0NzgzMyksTWU9TCgxOTkwOSksVT1MKDU5NDA2KSxRPUwoNDYzMTMpLFo9TCgyNzIzMCksWT0icHJvdG90eXBlIixXPSJzY3JpcHQiLE49WigiSUVfUFJPVE8iKSxlZT1mdW5jdGlvbigpe30scT1mdW5jdGlvbihkZSl7cmV0dXJuIjwiK1crIj4i''@;'; put 'put ''K2RlKyI8LyIrVysiPiJ9LEo9ZnVuY3Rpb24oZGUpe2RlLndyaXRlKHEoIiIpKSxkZS5jbG9zZSgpO3ZhciB2ZT1kZS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBkZT1udWxsLHZlfSxmZT1mdW5jdGlvbigpe3RyeXthZT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaCh2''@;'; put 'put ''ZSl7fWZlPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhZT9KKGFlKTpmdW5jdGlvbigpe3ZhciBBZSxkZT1RKCJpZnJhbWUiKTtyZXR1cm4gZGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsVS5hcHBlbmRDaGlsZChkZSksZGUuc3JjPVN0cmluZygiamF2YXNj''@;'; put 'put ''cmlwdDoiKSwoQWU9ZGUuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLEFlLndyaXRlKHEoImRvY3VtZW50LkY9T2JqZWN0IikpLEFlLmNsb3NlKCksQWUuRn0oKTpKKGFlKTtmb3IodmFyIGRlPUUubGVuZ3RoO2RlLS07KWRlbGV0ZSBmZVtZXVtFW2RlXV07cmV0dXJuIGZlKCl9O01l''@;'; put 'put ''W05dPSEwLFhlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odmUsQWUpe3ZhciBrZTtyZXR1cm4gbnVsbCE9PXZlPyhlZVtZXT1nZSh2ZSksa2U9bmV3IGVlLGVlW1ldPW51bGwsa2VbTl09dmUpOmtlPWZlKCksdm9pZCAwPT09QWU/a2U6Qi5mKGtlLEFlKX19LDc3MzI4OihYZSxK''@;'; put 'put ''ZSxMKT0+e3ZhciBnZT1MKDg1NjI0KSxCPUwoMjAxMTgpLEU9TCg1MTE4MyksTWU9TCg1ODY0NyksVT1MKDUwMzI3KSxRPUwoMTQ1NDUpO0plLmY9Z2UmJiFCP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGllLGxlKXtNZShpZSk7Zm9yKHZhciBxLFk9VShsZSksVz1RKGxlKSxO''@;'; put 'put ''PVcubGVuZ3RoLGVlPTA7Tj5lZTspRS5mKGllLHE9V1tlZSsrXSxZW3FdKTtyZXR1cm4gaWV9fSw1MTE4MzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTYyNCksQj1MKDk0Njc1KSxFPUwoMjAxMTgpLE1lPUwoNTg2NDcpLFU9TCg4NDA5NCksUT1UeXBlRXJyb3IsWj1PYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHksaWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixsZT0iZW51bWVyYWJsZSIsWT0iY29uZmlndXJhYmxlIixXPSJ3cml0YWJsZSI7SmUuZj1nZT9FP2Z1bmN0aW9uKGVlLHEsSil7aWYoTWUoZWUpLHE9VShxKSxNZShKKSwiZnVuY3Rpb24iPT10eXBlb2YgZWUmJiJwcm90''@;'; put 'put ''b3R5cGUiPT09cSYmInZhbHVlImluIEomJlcgaW4gSiYmIUpbV10pe3ZhciBzZT1pZShlZSxxKTtzZSYmc2VbV10mJihlZVtxXT1KLnZhbHVlLEo9e2NvbmZpZ3VyYWJsZTpZIGluIEo/SltZXTpzZVtZXSxlbnVtZXJhYmxlOmxlIGluIEo/SltsZV06c2VbbGVdLHdyaXRhYmxlOiExfSl9cmV0''@;'; put 'put ''dXJuIFooZWUscSxKKX06WjpmdW5jdGlvbihlZSxxLEope2lmKE1lKGVlKSxxPVUocSksTWUoSiksQil0cnl7cmV0dXJuIFooZWUscSxKKX1jYXRjaChzZSl7fWlmKCJnZXQiaW4gSnx8InNldCJpbiBKKXRocm93IFEoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImlu''@;'; put 'put ''IEomJihlZVtxXT1KLnZhbHVlKSxlZX19LDQ3OTg3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjI0KSxCPUwoMzU2MiksRT1MKDQ2OTAxKSxNZT1MKDczOTIwKSxVPUwoNTAzMjcpLFE9TCg4NDA5NCksWj1MKDQ4ODExKSxpZT1MKDk0Njc1KSxsZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj''@;'; put 'put ''cmlwdG9yO0plLmY9Z2U/bGU6ZnVuY3Rpb24oVyxOKXtpZihXPVUoVyksTj1RKE4pLGllKXRyeXtyZXR1cm4gbGUoVyxOKX1jYXRjaChlZSl7fWlmKFooVyxOKSlyZXR1cm4gTWUoIUIoRS5mLFcsTiksV1tOXSl9fSwzNTgwODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg5NDcyMyksQj1MKDUwMzI3''@;'; put 'put ''KSxFPUwoNzU0MzEpLmYsTWU9TCgxMDg3MiksVT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO1hlLmV4cG9ydHMuZj1mdW5jdGlvbihpZSl7cmV0dXJuIFUmJiJX''@;'; put 'put ''aW5kb3ciPT1nZShpZSk/ZnVuY3Rpb24oWil7dHJ5e3JldHVybiBFKFopfWNhdGNoKGllKXtyZXR1cm4gTWUoVSl9fShpZSk6RShCKGllKSl9fSw3NTQzMTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyNDk2NyksRT1MKDQ3ODMzKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO0plLmY9T2Jq''@;'; put 'put ''ZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKFUpe3JldHVybiBnZShVLEUpfX0sNTUzNDooWGUsSmUpPT57SmUuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSw4MjczMzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0ODgxMSksQj1MKDEyMDE0KSxFPUwoNjgwNzEpLE1lPUwo''@;'; put 'put ''MjcyMzApLFU9TCg0NjA4NiksUT1NZSgiSUVfUFJPVE8iKSxaPU9iamVjdCxpZT1aLnByb3RvdHlwZTtYZS5leHBvcnRzPVU/Wi5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihsZSl7dmFyIFk9RShsZSk7aWYoZ2UoWSxRKSlyZXR1cm4gWVtRXTt2YXIgVz1ZLmNvbnN0cnVjdG9yO3JldHVybiBC''@;'; put 'put ''KFcpJiZZIGluc3RhbmNlb2YgVz9XLnByb3RvdHlwZTpZIGluc3RhbmNlb2YgWj9pZTpudWxsfX0sNTUyMTg6KFhlLEplLEwpPT57dmFyIGdlPUwoMjM1MjMpLEI9TCg3MTQ5NiksRT1MKDk0NzIzKSxNZT1MKDYyNzg5KSxVPU9iamVjdC5pc0V4dGVuc2libGUsUT1nZShmdW5jdGlvbigpe1Uo''@;'; put 'put ''MSl9KTtYZS5leHBvcnRzPVF8fE1lP2Z1bmN0aW9uKGllKXtyZXR1cm4hKCFCKGllKXx8TWUmJiJBcnJheUJ1ZmZlciI9PUUoaWUpKSYmKCFVfHxVKGllKSl9OlV9LDM3NDc0OihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpO1hlLmV4cG9ydHM9Z2Uoe30uaXNQcm90b3R5cGVPZil9LDI0OTY3''@;'; put 'put ''OihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpLEI9TCg0ODgxMSksRT1MKDUwMzI3KSxNZT1MKDM2MzA1KS5pbmRleE9mLFU9TCgxOTkwOSksUT1nZShbXS5wdXNoKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFosaWUpe3ZhciBOLGxlPUUoWiksWT0wLFc9W107Zm9yKE4gaW4gbGUpIUIoVSxOKSYm''@;'; put 'put ''QihsZSxOKSYmUShXLE4pO2Zvcig7aWUubGVuZ3RoPlk7KUIobGUsTj1pZVtZKytdKSYmKH5NZShXLE4pfHxRKFcsTikpO3JldHVybiBXfX0sMTQ1NDU6KFhlLEplLEwpPT57dmFyIGdlPUwoMjQ5NjcpLEI9TCg0NzgzMyk7WGUuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oTWUpe3Jl''@;'; put 'put ''dHVybiBnZShNZSxCKX19LDQ2OTAxOihYZSxKZSk9PnsidXNlIHN0cmljdCI7dmFyIEw9e30ucHJvcGVydHlJc0VudW1lcmFibGUsZ2U9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixCPWdlJiYhTC5jYWxsKHsxOjJ9LDEpO0plLmY9Qj9mdW5jdGlvbihNZSl7dmFyIFU9Z2UodGhp''@;'; put 'put ''cyxNZSk7cmV0dXJuISFVJiZVLmVudW1lcmFibGV9Okx9LDE5NTg3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDY2MTMpLEI9TCg1ODY0NyksRT1MKDcwMDgpO1hlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIFEsTWU9ITEsVT17''@;'; put 'put ''fTt0cnl7KFE9Z2UoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQpKShVLFtdKSxNZT1VIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goWil7fXJldHVybiBmdW5jdGlvbihpZSxsZSl7cmV0dXJuIEIoaWUpLEUobGUpLE1lP1Eo''@;'; put 'put ''aWUsbGUpOmllLl9fcHJvdG9fXz1sZSxpZX19KCk6dm9pZCAwKX0sNDQ1ODI6KFhlLEplLEwpPT57dmFyIGdlPUwoODU2MjQpLEI9TCg2NjEzKSxFPUwoMTQ1NDUpLE1lPUwoNTAzMjcpLFE9QihMKDQ2OTAxKS5mKSxaPUIoW10ucHVzaCksaWU9ZnVuY3Rpb24obGUpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihZKXtmb3IodmFyIHNlLFc9TWUoWSksTj1FKFcpLGVlPU4ubGVuZ3RoLHE9MCxKPVtdO2VlPnE7KXNlPU5bcSsrXSwoIWdlfHxRKFcsc2UpKSYmWihKLGxlP1tzZSxXW3NlXV06V1tzZV0pO3JldHVybiBKfX07WGUuZXhwb3J0cz17ZW50cmllczppZSghMCksdmFsdWVzOmllKCExKX19LDc3''@;'; put 'put ''MDU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDI3NDkwKSxCPUwoNzk1MjApO1hlLmV4cG9ydHM9Z2U/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK0IodGhpcykrIl0ifX0sNjM0MTU6KFhlLEplLEwpPT57dmFyIGdlPUwoMzU2MiksQj1MKDEyMDE0''@;'; put 'put ''KSxFPUwoNzE0OTYpLE1lPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSl7dmFyIFosaWU7aWYoInN0cmluZyI9PT1RJiZCKFo9VS50b1N0cmluZykmJiFFKGllPWdlKFosVSkpfHxCKFo9VS52YWx1ZU9mKSYmIUUoaWU9Z2UoWixVKSl8fCJzdHJpbmciIT09USYmQihaPVUudG9T''@;'; put 'put ''dHJpbmcpJiYhRShpZT1nZShaLFUpKSlyZXR1cm4gaWU7dGhyb3cgTWUoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sMjExOTk6KFhlLEplLEwpPT57dmFyIGdlPUwoNDY2OTMpLEI9TCg2NjEzKSxFPUwoNzU0MzEpLE1lPUwoNTUzNCksVT1MKDU4NjQ3KSxR''@;'; put 'put ''PUIoW10uY29uY2F0KTtYZS5leHBvcnRzPWdlKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbihpZSl7dmFyIGxlPUUuZihVKGllKSksWT1NZS5mO3JldHVybiBZP1EobGUsWShpZSkpOmxlfX0sOTI3MzM6KFhlLEplLEwpPT57dmFyIGdlPUwoNzA3MDUpO1hlLmV4cG9ydHM9Z2V9LDc4''@;'; put 'put ''ODA6KFhlLEplLEwpPT57dmFyIGdlPUwoNTExODMpLmY7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUsTWUpe01lIGluIEJ8fGdlKEIsTWUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRVtNZV19LHNldDpmdW5jdGlvbihVKXtFW01lXT1VfX0pfX0sNTgxMjY6KFhlLEpl''@;'; put 'put ''LEwpPT57dmFyIGdlPUwoMzU2MiksQj1MKDU4NjQ3KSxFPUwoMTIwMTQpLE1lPUwoOTQ3MjMpLFU9TCgyMjIzNCksUT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihaLGllKXt2YXIgbGU9Wi5leGVjO2lmKEUobGUpKXt2YXIgWT1nZShsZSxaLGllKTtyZXR1cm4gbnVsbCE9PVkmJkIo''@;'; put 'put ''WSksWX1pZigiUmVnRXhwIj09PU1lKFopKXJldHVybiBnZShVLFosaWUpO3Rocm93IFEoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKX19LDIyMjM0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIga2UsU2UsZ2U9TCgzNTYyKSxCPUwoNjYxMyksRT1M''@;'; put 'put ''KDkyMSksTWU9TCg0ODcyNSksVT1MKDk3MTg5KSxRPUwoNjg4MzUpLFo9TCg3NDQxMCksaWU9TCg3MjcpLmdldCxsZT1MKDQzMTg2KSxZPUwoNTE5NDkpLFc9USgibmF0aXZlLXN0cmluZy1yZXBsYWNlIixTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLE49UmVnRXhwLnByb3RvdHlwZS5leGVj''@;'; put 'put ''LGVlPU4scT1CKCIiLmNoYXJBdCksSj1CKCIiLmluZGV4T2YpLHNlPUIoIiIucmVwbGFjZSksYWU9QigiIi5zbGljZSksZmU9KFNlPS9iKi9nLGdlKE4sa2U9L2EvLCJhIiksZ2UoTixTZSwiYSIpLDAhPT1rZS5sYXN0SW5kZXh8fDAhPT1TZS5sYXN0SW5kZXgpLGRlPVUuQlJPS0VOX0NBUkVU''@;'; put 'put ''LHZlPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoZmV8fHZlfHxkZXx8bGV8fFkpJiYoZWU9ZnVuY3Rpb24oU2Upe3ZhciBPLHosbmUsdGUseCxQLFYsSWU9dGhpcyxUZT1pZShJZSksRWU9RShTZSksaGU9VGUucmF3O2lmKGhlKXJldHVybiBoZS5sYXN0SW5kZXg9SWUubGFzdEluZGV4''@;'; put 'put ''LE89Z2UoZWUsaGUsRWUpLEllLmxhc3RJbmRleD1oZS5sYXN0SW5kZXgsTzt2YXIgVD1UZS5ncm91cHMsUz1kZSYmSWUuc3RpY2t5LEY9Z2UoTWUsSWUpLHllPUllLnNvdXJjZSxDZT0wLERlPUVlO2lmKFMmJihGPXNlKEYsInkiLCIiKSwtMT09PUooRiwiZyIpJiYoRis9ImciKSxEZT1hZShF''@;'; put 'put ''ZSxJZS5sYXN0SW5kZXgpLEllLmxhc3RJbmRleD4wJiYoIUllLm11bHRpbGluZXx8SWUubXVsdGlsaW5lJiYiXG4iIT09cShFZSxJZS5sYXN0SW5kZXgtMSkpJiYoeWU9Iig/OiAiK3llKyIpIixEZT0iICIrRGUsQ2UrKyksej1uZXcgUmVnRXhwKCJeKD86Iit5ZSsiKSIsRikpLHZlJiYoej1u''@;'; put 'put ''ZXcgUmVnRXhwKCJeIit5ZSsiJCg/IVxccykiLEYpKSxmZSYmKG5lPUllLmxhc3RJbmRleCksdGU9Z2UoTixTP3o6SWUsRGUpLFM/dGU/KHRlLmlucHV0PWFlKHRlLmlucHV0LENlKSx0ZVswXT1hZSh0ZVswXSxDZSksdGUuaW5kZXg9SWUubGFzdEluZGV4LEllLmxhc3RJbmRleCs9dGVbMF0u''@;'; put 'put ''bGVuZ3RoKTpJZS5sYXN0SW5kZXg9MDpmZSYmdGUmJihJZS5sYXN0SW5kZXg9SWUuZ2xvYmFsP3RlLmluZGV4K3RlWzBdLmxlbmd0aDpuZSksdmUmJnRlJiZ0ZS5sZW5ndGg+MSYmZ2UoVyx0ZVswXSx6LGZ1bmN0aW9uKCl7Zm9yKHg9MTt4PGFyZ3VtZW50cy5sZW5ndGgtMjt4Kyspdm9pZCAw''@;'; put 'put ''PT09YXJndW1lbnRzW3hdJiYodGVbeF09dm9pZCAwKX0pLHRlJiZUKWZvcih0ZS5ncm91cHM9UD1aKG51bGwpLHg9MDt4PFQubGVuZ3RoO3grKylQWyhWPVRbeF0pWzBdXT10ZVtWWzFdXTtyZXR1cm4gdGV9KSxYZS5leHBvcnRzPWVlfSw0ODcyNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIGdlPUwoNTg2NDcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgQj1nZSh0aGlzKSxFPSIiO3JldHVybiBCLmhhc0luZGljZXMmJihFKz0iZCIpLEIuZ2xvYmFsJiYoRSs9ImciKSxCLmlnbm9yZUNhc2UmJihFKz0iaSIpLEIubXVsdGlsaW5lJiYoRSs9Im0iKSxCLmRvdEFsbCYmKEUr''@;'; put 'put ''PSJzIiksQi51bmljb2RlJiYoRSs9InUiKSxCLnVuaWNvZGVTZXRzJiYoRSs9InYiKSxCLnN0aWNreSYmKEUrPSJ5IiksRX19LDgxNjIwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDM1NjIpLEI9TCg0ODgxMSksRT1MKDM3NDc0KSxNZT1MKDQ4NzI1KSxVPVJlZ0V4cC5wcm90b3R5cGU7WGUuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihRKXt2YXIgWj1RLmZsYWdzO3JldHVybiB2b2lkIDAhPT1afHwiZmxhZ3MiaW4gVXx8QihRLCJmbGFncyIpfHwhRShVLFEpP1o6Z2UoTWUsUSl9fSw5NzE4OTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMzUyMyksRT1MKDcwNzA1KS5SZWdFeHAsTWU9Z2UoZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgWj1FKCJhIiwieSIpO3JldHVybiBaLmxhc3RJbmRleD0yLG51bGwhPVouZXhlYygiYWJjZCIpfSksVT1NZXx8Z2UoZnVuY3Rpb24oKXtyZXR1cm4hRSgiYSIsInkiKS5zdGlja3l9KSxRPU1lfHxnZShmdW5jdGlvbigpe3ZhciBaPUUoIl5yIiwiZ3kiKTtyZXR1cm4gWi5sYXN0SW5k''@;'; put 'put ''ZXg9MixudWxsIT1aLmV4ZWMoInN0ciIpfSk7WGUuZXhwb3J0cz17QlJPS0VOX0NBUkVUOlEsTUlTU0VEX1NUSUNLWTpVLFVOU1VQUE9SVEVEX1k6TWV9fSw0MzE4NjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyMzUyMyksRT1MKDcwNzA1KS5SZWdFeHA7WGUuZXhwb3J0cz1nZShmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBNZT1FKCIuIiwicyIpO3JldHVybiEoTWUuZG90QWxsJiZNZS5leGVjKCJcbiIpJiYicyI9PT1NZS5mbGFncyl9KX0sNTE5NDk6KFhlLEplLEwpPT57dmFyIGdlPUwoMjM1MjMpLEU9TCg3MDcwNSkuUmVnRXhwO1hlLmV4cG9ydHM9Z2UoZnVuY3Rpb24oKXt2YXIgTWU9RSgiKD88YT5i''@;'; put 'put ''KSIsImciKTtyZXR1cm4iYiIhPT1NZS5leGVjKCJiIikuZ3JvdXBzLmF8fCJiYyIhPT0iYiIucmVwbGFjZShNZSwiJDxhPmMiKX0pfSwyNDU3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2Mzc0KSxCPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKEUpe2lmKGdlKEUpKXRocm93IEIoIkNh''@;'; put 'put ''bid0IGNhbGwgbWV0aG9kIG9uICIrRSk7cmV0dXJuIEV9fSw1NTg4MTpYZT0+e1hlLmV4cG9ydHM9T2JqZWN0LmlzfHxmdW5jdGlvbihMLGdlKXtyZXR1cm4gTD09PWdlPzAhPT1MfHwxL0w9PTEvZ2U6TCE9TCYmZ2UhPWdlfX0sOTU4OTU6KFhlLEplLEwpPT57dmFyIGdlPUwoNzA3MDUpLEI9''@;'; put 'put ''TCgxMTMwNiksRT1MKDEyMDE0KSxNZT1MKDc3ODM5KSxVPUwoNDA5MzApLFE9TCg3OTU0NSksWj0vTVNJRSAuXC4vLnRlc3QoTWUpLGllPWdlLkZ1bmN0aW9uLGxlPWZ1bmN0aW9uKFkpe3JldHVybiBaP2Z1bmN0aW9uKFcsTil7dmFyIGVlPVEoYXJndW1lbnRzLmxlbmd0aCwxKT4yLHE9RShX''@;'; put 'put ''KT9XOmllKFcpLEo9ZWU/VShhcmd1bWVudHMsMik6dm9pZCAwO3JldHVybiBZKGVlP2Z1bmN0aW9uKCl7QihxLHRoaXMsSil9OnEsTil9Oll9O1hlLmV4cG9ydHM9e3NldFRpbWVvdXQ6bGUoZ2Uuc2V0VGltZW91dCksc2V0SW50ZXJ2YWw6bGUoZ2Uuc2V0SW50ZXJ2YWwpfX0sNjgzMTU6KFhl''@;'; put 'put ''LEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDQ2NjkzKSxCPUwoNTExODMpLEU9TCgyNTQ2KSxNZT1MKDg1NjI0KSxVPUUoInNwZWNpZXMiKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFEpe3ZhciBaPWdlKFEpO01lJiZaJiYhWltVXSYmKDAsQi5mKShaLFUse2NvbmZpZ3VyYWJsZTohMCxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LDU1OTY4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDUxMTgzKS5mLEI9TCg0ODgxMSksTWU9TCgyNTQ2KSgidG9TdHJpbmdUYWciKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSxaKXtVJiYhWiYmKFU9VS5wcm90b3R5cGUpLFUmJiFCKFUsTWUp''@;'; put 'put ''JiZnZShVLE1lLHtjb25maWd1cmFibGU6ITAsdmFsdWU6UX0pfX0sMjcyMzA6KFhlLEplLEwpPT57dmFyIGdlPUwoNjg4MzUpLEI9TCg1MjgxMCksRT1nZSgia2V5cyIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe3JldHVybiBFW01lXXx8KEVbTWVdPUIoTWUpKX19LDgxMDY5OihYZSxKZSxM''@;'; put 'put ''KT0+e3ZhciBnZT1MKDcwNzA1KSxCPUwoNzM0NzApLEU9Il9fY29yZS1qc19zaGFyZWRfXyIsTWU9Z2VbRV18fEIoRSx7fSk7WGUuZXhwb3J0cz1NZX0sNjg4MzU6KFhlLEplLEwpPT57dmFyIGdlPUwoMTAwMTcpLEI9TCg4MTA2OSk7KFhlLmV4cG9ydHM9ZnVuY3Rpb24oRSxNZSl7cmV0dXJu''@;'; put 'put ''IEJbRV18fChCW0VdPXZvaWQgMCE9PU1lP01lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMjUuMCIsbW9kZTpnZT8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiJceGE5IDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0''@;'; put 'put ''cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yNS4wL0xJQ0VOU0UiLHNvdXJjZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSl9LDkxMzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg1ODY0NyksQj1MKDU2NTgxKSxFPUwoNjM3NCksVT1MKDI1NDYp''@;'; put 'put ''KCJzcGVjaWVzIik7WGUuZXhwb3J0cz1mdW5jdGlvbihRLFope3ZhciBsZSxpZT1nZShRKS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09aWV8fEUobGU9Z2UoaWUpW1VdKT9aOkIobGUpfX0sOTc4MTg6KFhlLEplLEwpPT57dmFyIGdlPUwoMjM1MjMpO1hlLmV4cG9ydHM9ZnVuY3Rpb24o''@;'; put 'put ''Qil7cmV0dXJuIGdlKGZ1bmN0aW9uKCl7dmFyIEU9IiJbQl0oJyInKTtyZXR1cm4gRSE9PUUudG9Mb3dlckNhc2UoKXx8RS5zcGxpdCgnIicpLmxlbmd0aD4zfSl9fSw3NTA1ODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2NjEzKSxCPUwoNDA3MDIpLEU9TCg5MjEpLE1lPUwoMjQ1NzIpLFU9Z2Uo''@;'; put 'put ''IiIuY2hhckF0KSxRPWdlKCIiLmNoYXJDb2RlQXQpLFo9Z2UoIiIuc2xpY2UpLGllPWZ1bmN0aW9uKGxlKXtyZXR1cm4gZnVuY3Rpb24oWSxXKXt2YXIgSixzZSxOPUUoTWUoWSkpLGVlPUIoVykscT1OLmxlbmd0aDtyZXR1cm4gZWU8MHx8ZWU+PXE/bGU/IiI6dm9pZCAwOihKPVEoTixlZSkp''@;'; put 'put ''PDU1Mjk2fHxKPjU2MzE5fHxlZSsxPT09cXx8KHNlPVEoTixlZSsxKSk8NTYzMjB8fHNlPjU3MzQzP2xlP1UoTixlZSk6SjpsZT9aKE4sZWUsZWUrMik6c2UtNTYzMjArKEotNTUyOTY8PDEwKSs2NTUzNn19O1hlLmV4cG9ydHM9e2NvZGVBdDppZSghMSksY2hhckF0OmllKCEwKX19LDcyMjEw''@;'; put 'put ''OihYZSxKZSxMKT0+e3ZhciBnZT1MKDc3ODM5KTtYZS5leHBvcnRzPS9WZXJzaW9uXC8xMCg/OlwuXGQrKXsxLDJ9KD86IFtcdy4vXSspPyg/OiBNb2JpbGVcL1x3Kyk/IFNhZmFyaVwvLy50ZXN0KGdlKX0sMjEyODU6KFhlLEplLEwpPT57dmFyIGdlPUwoNjYxMyksQj1MKDY1MzE2KSxFPUwo''@;'; put 'put ''OTIxKSxNZT1MKDQ1OTYwKSxVPUwoMjQ1NzIpLFE9Z2UoTWUpLFo9Z2UoIiIuc2xpY2UpLGllPU1hdGguY2VpbCxsZT1mdW5jdGlvbihZKXtyZXR1cm4gZnVuY3Rpb24oVyxOLGVlKXt2YXIgZmUsZGUscT1FKFUoVykpLEo9QihOKSxzZT1xLmxlbmd0aCxhZT12b2lkIDA9PT1lZT8iICI6RShl''@;'; put 'put ''ZSk7cmV0dXJuIEo8PXNlfHwiIj09YWU/cTooKGRlPVEoYWUsaWUoKGZlPUotc2UpL2FlLmxlbmd0aCkpKS5sZW5ndGg+ZmUmJihkZT1aKGRlLDAsZmUpKSxZP3ErZGU6ZGUrcSl9fTtYZS5leHBvcnRzPXtzdGFydDpsZSghMSksZW5kOmxlKCEwKX19LDQ1OTYwOihYZSxKZSxMKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgZ2U9TCg0MDcwMiksQj1MKDkyMSksRT1MKDI0NTcyKSxNZT1SYW5nZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oUSl7dmFyIFo9QihFKHRoaXMpKSxpZT0iIixsZT1nZShRKTtpZihsZTwwfHxsZT09MS8wKXRocm93IE1lKCJXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlv''@;'; put 'put ''bnMiKTtmb3IoO2xlPjA7KGxlPj4+PTEpJiYoWis9WikpMSZsZSYmKGllKz1aKTtyZXR1cm4gaWV9fSw0NTcxMjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgxMzg2OSkuUFJPUEVSLEI9TCgyMzUyMyksRT1MKDc3ODYzKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFUpe3JldHVybiBCKGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuISFFW1VdKCl8fCJcdTIwMGJceDg1XHUxODBlIiE9PSJcdTIwMGJceDg1XHUxODBlIltVXSgpfHxnZSYmRVtVXS5uYW1lIT09VX0pfX0sOTMxNjY6KFhlLEplLEwpPT57dmFyIGdlPUwoNjYxMyksQj1MKDI0NTcyKSxFPUwoOTIxKSxNZT1MKDc3ODYzKSxVPWdlKCIiLnJlcGxhY2Up''@;'; put 'put ''LFE9IlsiK01lKyJdIixaPVJlZ0V4cCgiXiIrUStRKyIqIiksaWU9UmVnRXhwKFErUSsiKiQiKSxsZT1mdW5jdGlvbihZKXtyZXR1cm4gZnVuY3Rpb24oVyl7dmFyIE49RShCKFcpKTtyZXR1cm4gMSZZJiYoTj1VKE4sWiwiIikpLDImWSYmKE49VShOLGllLCIiKSksTn19O1hlLmV4cG9ydHM9''@;'; put 'put ''e3N0YXJ0OmxlKDEpLGVuZDpsZSgyKSx0cmltOmxlKDMpfX0sMjkzMzk6KFhlLEplLEwpPT57dmFyIGdlPUwoMjkzODUpLEI9TCgyMzUyMyk7WGUuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFCKGZ1bmN0aW9uKCl7dmFyIEU9U3ltYm9sKCk7cmV0dXJuIVN0cmlu''@;'; put 'put ''ZyhFKXx8IShPYmplY3QoRSlpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmZ2UmJmdlPDQxfSl9LDE0NDk4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDM1NjIpLEI9TCg0NjY5MyksRT1MKDI1NDYpLE1lPUwoMjU2NjYpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgVT1CKCJTeW1i''@;'; put 'put ''b2wiKSxRPVUmJlUucHJvdG90eXBlLFo9USYmUS52YWx1ZU9mLGllPUUoInRvUHJpbWl0aXZlIik7USYmIVFbaWVdJiZNZShRLGllLGZ1bmN0aW9uKGxlKXtyZXR1cm4gZ2UoWix0aGlzKX0se2FyaXR5OjF9KX19LDcxODI5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDI5MzM5KTtYZS5leHBvcnRz''@;'; put 'put ''PWdlJiYhIVN5bWJvbC5mb3ImJiEhU3ltYm9sLmtleUZvcn0sNTUyNjE6KFhlLEplLEwpPT57dmFyIFNlLEllLFRlLEVlLGdlPUwoNzA3MDUpLEI9TCgxMTMwNiksRT1MKDg1NDkpLE1lPUwoMTIwMTQpLFU9TCg0ODgxMSksUT1MKDIzNTIzKSxaPUwoNTk0MDYpLGllPUwoNDA5MzApLGxlPUwo''@;'; put 'put ''NDYzMTMpLFk9TCg3OTU0NSksVz1MKDc4NTIwKSxOPUwoODcyNDQpLGVlPWdlLnNldEltbWVkaWF0ZSxxPWdlLmNsZWFySW1tZWRpYXRlLEo9Z2UucHJvY2VzcyxzZT1nZS5EaXNwYXRjaCxhZT1nZS5GdW5jdGlvbixmZT1nZS5NZXNzYWdlQ2hhbm5lbCxkZT1nZS5TdHJpbmcsdmU9MCxBZT17''@;'; put 'put ''fSxrZT0ib25yZWFkeXN0YXRlY2hhbmdlIjt0cnl7U2U9Z2UubG9jYXRpb259Y2F0Y2godGUpe312YXIgaGU9ZnVuY3Rpb24odGUpe2lmKFUoQWUsdGUpKXt2YXIgeD1BZVt0ZV07ZGVsZXRlIEFlW3RlXSx4KCl9fSxPPWZ1bmN0aW9uKHRlKXtyZXR1cm4gZnVuY3Rpb24oKXtoZSh0ZSl9fSx6''@;'; put 'put ''PWZ1bmN0aW9uKHRlKXtoZSh0ZS5kYXRhKX0sbmU9ZnVuY3Rpb24odGUpe2dlLnBvc3RNZXNzYWdlKGRlKHRlKSxTZS5wcm90b2NvbCsiLy8iK1NlLmhvc3QpfTsoIWVlfHwhcSkmJihlZT1mdW5jdGlvbih4KXtZKGFyZ3VtZW50cy5sZW5ndGgsMSk7dmFyIFA9TWUoeCk/eDphZSh4KSxWPWll''@;'; put 'put ''KGFyZ3VtZW50cywxKTtyZXR1cm4gQWVbKyt2ZV09ZnVuY3Rpb24oKXtCKFAsdm9pZCAwLFYpfSxJZSh2ZSksdmV9LHE9ZnVuY3Rpb24oeCl7ZGVsZXRlIEFlW3hdfSxOP0llPWZ1bmN0aW9uKHRlKXtKLm5leHRUaWNrKE8odGUpKX06c2UmJnNlLm5vdz9JZT1mdW5jdGlvbih0ZSl7c2Uubm93''@;'; put 'put ''KE8odGUpKX06ZmUmJiFXPyhFZT0oVGU9bmV3IGZlKS5wb3J0MixUZS5wb3J0MS5vbm1lc3NhZ2U9eixJZT1FKEVlLnBvc3RNZXNzYWdlLEVlKSk6Z2UuYWRkRXZlbnRMaXN0ZW5lciYmTWUoZ2UucG9zdE1lc3NhZ2UpJiYhZ2UuaW1wb3J0U2NyaXB0cyYmU2UmJiJmaWxlOiIhPT1TZS5wcm90''@;'; put 'put ''b2NvbCYmIVEobmUpPyhJZT1uZSxnZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix6LCExKSk6SWU9a2UgaW4gbGUoInNjcmlwdCIpP2Z1bmN0aW9uKHRlKXtaLmFwcGVuZENoaWxkKGxlKCJzY3JpcHQiKSlba2VdPWZ1bmN0aW9uKCl7Wi5yZW1vdmVDaGlsZCh0aGlzKSxoZSh0ZSl9fTpm''@;'; put 'put ''dW5jdGlvbih0ZSl7c2V0VGltZW91dChPKHRlKSwwKX0pLFhlLmV4cG9ydHM9e3NldDplZSxjbGVhcjpxfX0sMTQyNjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg2NjEzKTtYZS5leHBvcnRzPWdlKDEuLnZhbHVlT2YpfSw3NjE2MzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg0MDcwMiksQj1NYXRoLm1h''@;'; put 'put ''eCxFPU1hdGgubWluO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTWUsVSl7dmFyIFE9Z2UoTWUpO3JldHVybiBRPDA/QihRK1UsMCk6RShRLFUpfX0sNTAzMjc6KFhlLEplLEwpPT57dmFyIGdlPUwoNTY2MDcpLEI9TCgyNDU3Mik7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtyZXR1cm4gZ2UoQihFKSl9''@;'; put 'put ''fSw0MDcwMjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NDc0NCk7WGUuZXhwb3J0cz1mdW5jdGlvbihCKXt2YXIgRT0rQjtyZXR1cm4gRSE9RXx8MD09PUU/MDpnZShFKX19LDY1MzE2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDQwNzAyKSxCPU1hdGgubWluO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7''@;'; put 'put ''cmV0dXJuIEU+MD9CKGdlKEUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSw2ODA3MTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyNDU3MiksQj1PYmplY3Q7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtyZXR1cm4gQihnZShFKSl9fSw3NTUzNzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgzNTYyKSxCPUwoNzE0''@;'; put 'put ''OTYpLEU9TCg2OTc1KSxNZT1MKDIwOTQ4KSxVPUwoNjM0MTUpLFE9TCgyNTQ2KSxaPVR5cGVFcnJvcixpZT1RKCJ0b1ByaW1pdGl2ZSIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24obGUsWSl7aWYoIUIobGUpfHxFKGxlKSlyZXR1cm4gbGU7dmFyIE4sVz1NZShsZSxpZSk7aWYoVyl7aWYodm9pZCAw''@;'; put 'put ''PT09WSYmKFk9ImRlZmF1bHQiKSxOPWdlKFcsbGUsWSksIUIoTil8fEUoTikpcmV0dXJuIE47dGhyb3cgWigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9cmV0dXJuIHZvaWQgMD09PVkmJihZPSJudW1iZXIiKSxVKGxlLFkpfX0sODQwOTQ6KFhlLEplLEwpPT57''@;'; put 'put ''dmFyIGdlPUwoNzU1MzcpLEI9TCg2OTc1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEUpe3ZhciBNZT1nZShFLCJzdHJpbmciKTtyZXR1cm4gQihNZSk/TWU6TWUrIiJ9fSwyNzQ5MDooWGUsSmUsTCk9Pnt2YXIgRT17fTtFW0woMjU0NikoInRvU3RyaW5nVGFnIildPSJ6IixYZS5leHBvcnRzPSJb''@;'; put 'put ''b2JqZWN0IHpdIj09PVN0cmluZyhFKX0sOTIxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDc5NTIwKSxCPVN0cmluZztYZS5leHBvcnRzPWZ1bmN0aW9uKEUpe2lmKCJTeW1ib2wiPT09Z2UoRSkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmlu''@;'; put 'put ''ZyIpO3JldHVybiBCKEUpfX0sOTQ2NzY6WGU9Pnt2YXIgSmU9U3RyaW5nO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTCl7dHJ5e3JldHVybiBKZShMKX1jYXRjaChnZSl7cmV0dXJuIk9iamVjdCJ9fX0sNTI4MTA6KFhlLEplLEwpPT57dmFyIGdlPUwoNjYxMyksQj0wLEU9TWF0aC5yYW5kb20oKSxN''@;'; put 'put ''ZT1nZSgxLi50b1N0cmluZyk7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PVU/IiI6VSkrIilfIitNZSgrK0IrRSwzNil9fSwyMzk2MTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyOTMzOSk7WGUuZXhwb3J0cz1nZSYmIVN5bWJvbC5zaGFtJiYic3ltYm9s''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sMjAxMTg6KFhlLEplLEwpPT57dmFyIGdlPUwoODU2MjQpLEI9TCgyMzUyMyk7WGUuZXhwb3J0cz1nZSYmQihmdW5jdGlvbigpe3JldHVybiA0MiE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSwicHJvdG90eXBlIix7dmFsdWU6''@;'; put 'put ''NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KX0sNzk1NDU6WGU9Pnt2YXIgSmU9VHlwZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTCxnZSl7aWYoTDxnZSl0aHJvdyBKZSgiTm90IGVub3VnaCBhcmd1bWVudHMiKTtyZXR1cm4gTH19LDE3NTQyOihYZSxKZSxMKT0+e3ZhciBnZT1MKDcw''@;'; put 'put ''NzA1KSxCPUwoMTIwMTQpLEU9Z2UuV2Vha01hcDtYZS5leHBvcnRzPUIoRSkmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoRSkpfSwxMDA3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg5MjczMyksQj1MKDQ4ODExKSxFPUwoMjgxMSksTWU9TCg1MTE4MykuZjtYZS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KFUpe3ZhciBRPWdlLlN5bWJvbHx8KGdlLlN5bWJvbD17fSk7QihRLFUpfHxNZShRLFUse3ZhbHVlOkUuZihVKX0pfX0sMjgxMTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCgyNTQ2KTtKZS5mPWdlfSwyNTQ2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDcwNzA1KSxCPUwoNjg4MzUpLEU9TCg0ODgxMSks''@;'; put 'put ''TWU9TCg1MjgxMCksVT1MKDI5MzM5KSxRPUwoMjM5NjEpLFo9Qigid2tzIiksaWU9Z2UuU3ltYm9sLGxlPWllJiZpZS5mb3IsWT1RP2llOmllJiZpZS53aXRob3V0U2V0dGVyfHxNZTtYZS5leHBvcnRzPWZ1bmN0aW9uKFcpe2lmKCFFKFosVyl8fCFVJiYic3RyaW5nIiE9dHlwZW9mIFpbV10p''@;'; put 'put ''e3ZhciBOPSJTeW1ib2wuIitXO1pbV109VSYmRShpZSxXKT9pZVtXXTpRJiZsZT9sZShOKTpZKE4pfXJldHVybiBaW1ddfX0sNzc4NjM6WGU9PntYZS5leHBvcnRzPSJcdFxuXHZcZlxyIFx4YTBcdTE2ODBcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdc''@;'; put 'put ''dTIwMDhcdTIwMDlcdTIwMGFcdTIwMmZcdTIwNWZcdTMwMDBcdTIwMjhcdTIwMjlcdWZlZmYifSwzMTEyMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCgyMzUyMyksRT1MKDI5MTA2KSxNZT1MKDcxNDk2KSxVPUwoNjgwNzEpLFE9TCg1NDQ1MCksWj1MKDIz''@;'; put 'put ''MTI0KSxpZT1MKDk1MDA0KSxsZT1MKDMxODU3KSxZPUwoNTEyOTgpLFc9TCgyNTQ2KSxOPUwoMjkzODUpLGVlPVcoImlzQ29uY2F0U3ByZWFkYWJsZSIpLHE9Tj49NTF8fCFCKGZ1bmN0aW9uKCl7dmFyIGZlPVtdO3JldHVybiBmZVtlZV09ITEsZmUuY29uY2F0KClbMF0hPT1mZX0pLEo9WSgi''@;'; put 'put ''Y29uY2F0Iiksc2U9ZnVuY3Rpb24oZmUpe2lmKCFNZShmZSkpcmV0dXJuITE7dmFyIGRlPWZlW2VlXTtyZXR1cm4gdm9pZCAwIT09ZGU/ISFkZTpFKGZlKX07Z2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOiFxfHwhSn0se2NvbmNhdDpmdW5jdGlvbihkZSl7dmFy''@;'; put 'put ''IFNlLEllLFRlLEVlLGhlLHZlPVUodGhpcyksQWU9bGUodmUsMCksa2U9MDtmb3IoU2U9LTEsVGU9YXJndW1lbnRzLmxlbmd0aDtTZTxUZTtTZSsrKWlmKHNlKGhlPS0xPT09U2U/dmU6YXJndW1lbnRzW1NlXSkpZm9yKEVlPVEoaGUpLFooa2UrRWUpLEllPTA7SWU8RWU7SWUrKyxrZSsrKUll''@;'; put 'put ''IGluIGhlJiZpZShBZSxrZSxoZVtJZV0pO2Vsc2UgWihrZSsxKSxpZShBZSxrZSsrLGhlKTtyZXR1cm4gQWUubGVuZ3RoPWtlLEFlfX0pfSwyNDgwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoNTcxNzkpLEU9TCg3NDk2NSk7Z2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7''@;'; put 'put ''ZmlsbDpCfSksRSgiZmlsbCIpfSwzNDc3MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg5NTY2OSkuZmlsdGVyO2dlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IUwoNTEyOTgpKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbihRKXtyZXR1''@;'; put 'put ''cm4gQih0aGlzLFEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwzNTgxMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg5NTY2OSkuZmluZEluZGV4LEU9TCg3NDk2NSksTWU9ImZpbmRJbmRleCIsVT0hMDtNZSBpbltdJiZB''@;'; put 'put ''cnJheSgxKVtNZV0oZnVuY3Rpb24oKXtVPSExfSksZ2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpVfSx7ZmluZEluZGV4OmZ1bmN0aW9uKFope3JldHVybiBCKHRoaXMsWixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksRShNZSl9LDU0Njc5OihY''@;'; put 'put ''ZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDk1NjY5KS5maW5kLEU9TCg3NDk2NSksTWU9ImZpbmQiLFU9ITA7TWUgaW5bXSYmQXJyYXkoMSlbTWVdKGZ1bmN0aW9uKCl7VT0hMX0pLGdlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6VX0se2ZpbmQ6''@;'; put 'put ''ZnVuY3Rpb24oWil7cmV0dXJuIEIodGhpcyxaLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxFKE1lKX0sNjkxMDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDY2NjY2KTtnZSh7dGFyZ2V0OiJBcnJheSIsc3RhdDohMCxmb3JjZWQ6IUwoMjc3OTIp''@;'; put 'put ''KGZ1bmN0aW9uKFUpe0FycmF5LmZyb20oVSl9KX0se2Zyb206Qn0pfSwxMzQwMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCgzNjMwNSkuaW5jbHVkZXMsRT1MKDIzNTIzKSxNZT1MKDc0OTY1KTtnZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2Vk''@;'; put 'put ''OkUoZnVuY3Rpb24oKXtyZXR1cm4hQXJyYXkoMSkuaW5jbHVkZXMoKX0pfSx7aW5jbHVkZXM6ZnVuY3Rpb24oWil7cmV0dXJuIEIodGhpcyxaLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxNZSgiaW5jbHVkZXMiKX0sNjM5Njc6KFhlLEplLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBnZT1MKDg1NjQ4KSxCPUwoNjYxMyksRT1MKDM2MzA1KS5pbmRleE9mLE1lPUwoNjMxMjQpLFU9QihbXS5pbmRleE9mKSxRPSEhVSYmMS9VKFsxXSwxLC0wKTwwLFo9TWUoImluZGV4T2YiKTtnZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlF8fCFafSx7aW5k''@;'; put 'put ''ZXhPZjpmdW5jdGlvbihsZSl7dmFyIFk9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIFE/VSh0aGlzLGxlLFkpfHwwOkUodGhpcyxsZSxZKX19KX0sNTc5NDM6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDUwMzI3KSxCPUwoNzQ5NjUpLEU9''@;'; put 'put ''TCg5NTI1NyksTWU9TCg3MjcpLFU9TCg1MTE4MykuZixRPUwoNjQ1NjApLFo9TCgxMDAxNyksaWU9TCg4NTYyNCksbGU9IkFycmF5IEl0ZXJhdG9yIixZPU1lLnNldCxXPU1lLmdldHRlckZvcihsZSk7WGUuZXhwb3J0cz1RKEFycmF5LCJBcnJheSIsZnVuY3Rpb24oZWUscSl7WSh0aGlzLHt0''@;'; put 'put ''eXBlOmxlLHRhcmdldDpnZShlZSksaW5kZXg6MCxraW5kOnF9KX0sZnVuY3Rpb24oKXt2YXIgZWU9Vyh0aGlzKSxxPWVlLnRhcmdldCxKPWVlLmtpbmQsc2U9ZWUuaW5kZXgrKztyZXR1cm4hcXx8c2U+PXEubGVuZ3RoPyhlZS50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0p''@;'; put 'put ''OiJrZXlzIj09Sj97dmFsdWU6c2UsZG9uZTohMX06InZhbHVlcyI9PUo/e3ZhbHVlOnFbc2VdLGRvbmU6ITF9Ont2YWx1ZTpbc2UscVtzZV1dLGRvbmU6ITF9fSwidmFsdWVzIik7dmFyIE49RS5Bcmd1bWVudHM9RS5BcnJheTtpZihCKCJrZXlzIiksQigidmFsdWVzIiksQigiZW50cmllcyIp''@;'; put 'put ''LCFaJiZpZSYmInZhbHVlcyIhPT1OLm5hbWUpdHJ5e1UoTiwibmFtZSIse3ZhbHVlOiJ2YWx1ZXMifSl9Y2F0Y2goZWUpe319LDc2NzQ5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDY2MTMpLEU9TCg1NjYwNyksTWU9TCg1MDMyNyksVT1MKDYzMTI0KSxR''@;'; put 'put ''PUIoW10uam9pbiksWj1FIT1PYmplY3QsaWU9VSgiam9pbiIsIiwiKTtnZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlp8fCFpZX0se2pvaW46ZnVuY3Rpb24oWSl7cmV0dXJuIFEoTWUodGhpcyksdm9pZCAwPT09WT8iLCI6WSl9fSl9LDU4MDooWGUsSmUsTCk9Pnt2YXIgZ2U9''@;'; put 'put ''TCg4NTY0OCksQj1MKDk2MjIpO2dlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6QiE9PVtdLmxhc3RJbmRleE9mfSx7bGFzdEluZGV4T2Y6Qn0pfSw4MzAyODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg5NTY2OSkubWFwO2dlKHt0YXJnZXQ6''@;'; put 'put ''IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IUwoNTEyOTgpKCJtYXAiKX0se21hcDpmdW5jdGlvbihRKXtyZXR1cm4gQih0aGlzLFEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw3MTc3MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgp''@;'; put 'put ''LEI9TCg3Mzc2MCkubGVmdCxFPUwoNjMxMjQpLE1lPUwoMjkzODUpLFU9TCg4NzI0NCk7Z2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohRSgicmVkdWNlIil8fCFVJiZNZT43OSYmTWU8ODN9LHtyZWR1Y2U6ZnVuY3Rpb24obGUpe3ZhciBZPWFyZ3VtZW50cy5sZW5ndGg7cmV0''@;'; put 'put ''dXJuIEIodGhpcyxsZSxZLFk+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sODM1OTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDg1NjQ4KSxCPUwoNjYxMyksRT1MKDI5MTA2KSxNZT1CKFtdLnJldmVyc2UpLFU9WzEsMl07Z2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEw''@;'; put 'put ''LGZvcmNlZDpTdHJpbmcoVSk9PT1TdHJpbmcoVS5yZXZlcnNlKCkpfSx7cmV2ZXJzZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMpJiYodGhpcy5sZW5ndGg9dGhpcy5sZW5ndGgpLE1lKHRoaXMpfX0pfSw5NzA4NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9''@;'; put 'put ''TCgyOTEwNiksRT1MKDQ5NDUzKSxNZT1MKDcxNDk2KSxVPUwoNzYxNjMpLFE9TCg1NDQ1MCksWj1MKDUwMzI3KSxpZT1MKDk1MDA0KSxsZT1MKDI1NDYpLFk9TCg1MTI5OCksVz1MKDQwOTMwKSxOPVkoInNsaWNlIiksZWU9bGUoInNwZWNpZXMiKSxxPUFycmF5LEo9TWF0aC5tYXg7Z2Uoe3Rh''@;'; put 'put ''cmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohTn0se3NsaWNlOmZ1bmN0aW9uKGFlLGZlKXt2YXIgU2UsSWUsVGUsZGU9Wih0aGlzKSx2ZT1RKGRlKSxBZT1VKGFlLHZlKSxrZT1VKHZvaWQgMD09PWZlP3ZlOmZlLHZlKTtpZihCKGRlKSYmKChFKFNlPWRlLmNvbnN0cnVjdG9yKSYmKFNl''@;'; put 'put ''PT09cXx8QihTZS5wcm90b3R5cGUpKXx8TWUoU2UpJiZudWxsPT09KFNlPVNlW2VlXSkpJiYoU2U9dm9pZCAwKSxTZT09PXF8fHZvaWQgMD09PVNlKSlyZXR1cm4gVyhkZSxBZSxrZSk7Zm9yKEllPW5ldyh2b2lkIDA9PT1TZT9xOlNlKShKKGtlLUFlLDApKSxUZT0wO0FlPGtlO0FlKyssVGUr''@;'; put 'put ''KylBZSBpbiBkZSYmaWUoSWUsVGUsZGVbQWVdKTtyZXR1cm4gSWUubGVuZ3RoPVRlLEllfX0pfSwxMzI3ODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg2NjEzKSxFPUwoODE0NTApLE1lPUwoNjgwNzEpLFU9TCg1NDQ1MCksUT1MKDQ2MjgpLFo9TCg5MjEp''@;'; put 'put ''LGllPUwoMjM1MjMpLGxlPUwoMzI1OTQpLFk9TCg2MzEyNCksVz1MKDc1NzA2KSxOPUwoOTg4NiksZWU9TCgyOTM4NSkscT1MKDk2MzQpLEo9W10sc2U9QihKLnNvcnQpLGFlPUIoSi5wdXNoKSxmZT1pZShmdW5jdGlvbigpe0ouc29ydCh2b2lkIDApfSksZGU9aWUoZnVuY3Rpb24oKXtKLnNv''@;'; put 'put ''cnQobnVsbCl9KSx2ZT1ZKCJzb3J0IiksQWU9IWllKGZ1bmN0aW9uKCl7aWYoZWUpcmV0dXJuIGVlPDcwO2lmKCEoVyYmVz4zKSl7aWYoTilyZXR1cm4hMDtpZihxKXJldHVybiBxPDYwMzt2YXIgVGUsRWUsaGUsTyxJZT0iIjtmb3IoVGU9NjU7VGU8NzY7VGUrKyl7c3dpdGNoKEVlPVN0cmlu''@;'; put 'put ''Zy5mcm9tQ2hhckNvZGUoVGUpLFRlKXtjYXNlIDY2OmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDcyOmhlPTM7YnJlYWs7Y2FzZSA2ODpjYXNlIDcxOmhlPTQ7YnJlYWs7ZGVmYXVsdDpoZT0yfWZvcihPPTA7Tzw0NztPKyspSi5wdXNoKHtrOkVlK08sdjpoZX0pfWZvcihKLnNvcnQoZnVuY3Rpb24o''@;'; put 'put ''eixuZSl7cmV0dXJuIG5lLnYtei52fSksTz0wO088Si5sZW5ndGg7TysrKUVlPUpbT10uay5jaGFyQXQoMCksSWUuY2hhckF0KEllLmxlbmd0aC0xKSE9PUVlJiYoSWUrPUVlKTtyZXR1cm4iREdCRUZIQUNJSksiIT09SWV9fSk7Z2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpm''@;'; put 'put ''ZXx8IWRlfHwhdmV8fCFBZX0se3NvcnQ6ZnVuY3Rpb24oVGUpe3ZvaWQgMCE9PVRlJiZFKFRlKTt2YXIgRWU9TWUodGhpcyk7aWYoQWUpcmV0dXJuIHZvaWQgMD09PVRlP3NlKEVlKTpzZShFZSxUZSk7dmFyIHosbmUsaGU9W10sTz1VKEVlKTtmb3IobmU9MDtuZTxPO25lKyspbmUgaW4gRWUm''@;'; put 'put ''JmFlKGhlLEVlW25lXSk7Zm9yKGxlKGhlLGZ1bmN0aW9uKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUsRWUpe3JldHVybiB2b2lkIDA9PT1FZT8tMTp2b2lkIDA9PT1UZT8xOnZvaWQgMCE9PUllPytJZShUZSxFZSl8fDA6WihUZSk+WihFZSk/MTotMX19KFRlKSksej1VKGhlKSxuZT0wO25lPHo7''@;'; put 'put ''KUVlW25lXT1oZVtuZSsrXTtmb3IoO25lPE87KVEoRWUsbmUrKyk7cmV0dXJuIEVlfX0pfSw1MjMxMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg2ODA3MSksRT1MKDc2MTYzKSxNZT1MKDQwNzAyKSxVPUwoNTQ0NTApLFE9TCg4Njc1OSksWj1MKDIzMTI0''@;'; put 'put ''KSxpZT1MKDMxODU3KSxsZT1MKDk1MDA0KSxZPUwoNDYyOCksTj1MKDUxMjk4KSgic3BsaWNlIiksZWU9TWF0aC5tYXgscT1NYXRoLm1pbjtnZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFOfSx7c3BsaWNlOmZ1bmN0aW9uKHNlLGFlKXt2YXIga2UsU2UsSWUsVGUsRWUsaGUs''@;'; put 'put ''ZmU9Qih0aGlzKSxkZT1VKGZlKSx2ZT1FKHNlLGRlKSxBZT1hcmd1bWVudHMubGVuZ3RoO2ZvcigwPT09QWU/a2U9U2U9MDoxPT09QWU/KGtlPTAsU2U9ZGUtdmUpOihrZT1BZS0yLFNlPXEoZWUoTWUoYWUpLDApLGRlLXZlKSksWihkZStrZS1TZSksSWU9aWUoZmUsU2UpLFRlPTA7VGU8U2U7''@;'; put 'put ''VGUrKykoRWU9dmUrVGUpaW4gZmUmJmxlKEllLFRlLGZlW0VlXSk7aWYoSWUubGVuZ3RoPVNlLGtlPFNlKXtmb3IoVGU9dmU7VGU8ZGUtU2U7VGUrKyloZT1UZStrZSwoRWU9VGUrU2UpaW4gZmU/ZmVbaGVdPWZlW0VlXTpZKGZlLGhlKTtmb3IoVGU9ZGU7VGU+ZGUtU2Ura2U7VGUtLSlZKGZl''@;'; put 'put ''LFRlLTEpfWVsc2UgaWYoa2U+U2UpZm9yKFRlPWRlLVNlO1RlPnZlO1RlLS0paGU9VGUra2UtMSwoRWU9VGUrU2UtMSlpbiBmZT9mZVtoZV09ZmVbRWVdOlkoZmUsaGUpO2ZvcihUZT0wO1RlPGtlO1RlKyspZmVbVGUrdmVdPWFyZ3VtZW50c1tUZSsyXTtyZXR1cm4gUShmZSxkZS1TZStrZSks''@;'; put 'put ''SWV9fSl9LDE4MTU4OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjI0KSxCPUwoMTM4NjkpLkVYSVNUUyxFPUwoNjYxMyksTWU9TCg1MTE4MykuZixVPUZ1bmN0aW9uLnByb3RvdHlwZSxRPUUoVS50b1N0cmluZyksWj0vZnVuY3Rpb25cYig/OlxzfFwvXCpbXFNcc10qP1wqXC98XC9cL1teXG5c''@;'; put 'put ''cl0qW1xuXHJdKykqKFteXHMoL10qKS8saWU9RShaLmV4ZWMpO2dlJiYhQiYmTWUoVSwibmFtZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGllKFosUSh0aGlzKSlbMV19Y2F0Y2goWSl7cmV0dXJuIiJ9fX0pfSwxMzAwNjooWGUsSmUsTCk9Pnt2YXIgZ2U9''@;'; put 'put ''TCg4NTY0OCksQj1MKDQ2NjkzKSxFPUwoMTEzMDYpLE1lPUwoMzU2MiksVT1MKDY2MTMpLFE9TCgyMzUyMyksWj1MKDI5MTA2KSxpZT1MKDEyMDE0KSxsZT1MKDcxNDk2KSxZPUwoNjk3NSksVz1MKDQwOTMwKSxOPUwoMjkzMzkpLGVlPUIoIkpTT04iLCJzdHJpbmdpZnkiKSxxPVUoLy4vLmV4''@;'; put 'put ''ZWMpLEo9VSgiIi5jaGFyQXQpLHNlPVUoIiIuY2hhckNvZGVBdCksYWU9VSgiIi5yZXBsYWNlKSxmZT1VKDEuLnRvU3RyaW5nKSxkZT0vW1x1RDgwMC1cdURGRkZdL2csdmU9L15bXHVEODAwLVx1REJGRl0kLyxBZT0vXltcdURDMDAtXHVERkZGXSQvLGtlPSFOfHxRKGZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IEVlPUIoIlN5bWJvbCIpKCk7cmV0dXJuIltudWxsXSIhPWVlKFtFZV0pfHwie30iIT1lZSh7YTpFZX0pfHwie30iIT1lZShPYmplY3QoRWUpKX0pLFNlPVEoZnVuY3Rpb24oKXtyZXR1cm4nIlxcdWRmMDZcXHVkODM0IichPT1lZSgiXHVkZjA2XHVkODM0Iil8fCciXFx1ZGVhZCInIT09ZWUo''@;'; put 'put ''Ilx1ZGVhZCIpfSksSWU9ZnVuY3Rpb24oRWUsaGUpe3ZhciBPPVcoYXJndW1lbnRzKSx6PWhlO2lmKChsZShoZSl8fHZvaWQgMCE9PUVlKSYmIVkoRWUpKXJldHVybiBaKGhlKXx8KGhlPWZ1bmN0aW9uKG5lLHRlKXtpZihpZSh6KSYmKHRlPU1lKHosdGhpcyxuZSx0ZSkpLCFZKHRlKSlyZXR1''@;'; put 'put ''cm4gdGV9KSxPWzFdPWhlLEUoZWUsbnVsbCxPKX0sVGU9ZnVuY3Rpb24oRWUsaGUsTyl7dmFyIHo9SihPLGhlLTEpLG5lPUooTyxoZSsxKTtyZXR1cm4gcSh2ZSxFZSkmJiFxKEFlLG5lKXx8cShBZSxFZSkmJiFxKHZlLHopPyJcXHUiK2ZlKHNlKEVlLDApLDE2KTpFZX07ZWUmJmdlKHt0YXJn''@;'; put 'put ''ZXQ6IkpTT04iLHN0YXQ6ITAsYXJpdHk6Myxmb3JjZWQ6a2V8fFNlfSx7c3RyaW5naWZ5OmZ1bmN0aW9uKGhlLE8seil7dmFyIG5lPVcoYXJndW1lbnRzKSx0ZT1FKGtlP0llOmVlLG51bGwsbmUpO3JldHVybiBTZSYmInN0cmluZyI9PXR5cGVvZiB0ZT9hZSh0ZSxkZSxUZSk6dGV9fSl9LDg4''@;'; put 'put ''NzYyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDQ2ODU3KSgiTWFwIixmdW5jdGlvbihFKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxMKDQ1MTQwKSl9LDk2NjQ6KFhlLEplLEwpPT57TCg4ODc2Mil9''@;'; put 'put ''LDY0OTUyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTYyNCksQj1MKDcwNzA1KSxFPUwoNjYxMyksTWU9TCg2NzUwNyksVT1MKDI1NjY2KSxRPUwoNDg4MTEpLFo9TCg1MTg0OSksaWU9TCgzNzQ3NCksbGU9TCg2OTc1KSxZPUwoNzU1MzcpLFc9TCgyMzUyMyksTj1MKDc1''@;'; put 'put ''NDMxKS5mLGVlPUwoNDc5ODcpLmYscT1MKDUxMTgzKS5mLEo9TCgxNDI2KSxzZT1MKDkzMTY2KS50cmltLGFlPSJOdW1iZXIiLGZlPUJbYWVdLGRlPWZlLnByb3RvdHlwZSx2ZT1CLlR5cGVFcnJvcixBZT1FKCIiLnNsaWNlKSxrZT1FKCIiLmNoYXJDb2RlQXQpLFNlPWZ1bmN0aW9uKHope3Zh''@;'; put 'put ''ciBuZT1ZKHosIm51bWJlciIpO3JldHVybiJiaWdpbnQiPT10eXBlb2YgbmU/bmU6SWUobmUpfSxJZT1mdW5jdGlvbih6KXt2YXIgdGUseCxQLFYsVCxTLEYseWUsbmU9WSh6LCJudW1iZXIiKTtpZihsZShuZSkpdGhyb3cgdmUoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEg''@;'; put 'put ''bnVtYmVyIik7aWYoInN0cmluZyI9PXR5cGVvZiBuZSYmbmUubGVuZ3RoPjIpaWYobmU9c2UobmUpLDQzPT09KHRlPWtlKG5lLDApKXx8NDU9PT10ZSl7aWYoODg9PT0oeD1rZShuZSwyKSl8fDEyMD09PXgpcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09dGUpe3N3aXRjaChrZShuZSwxKSl7Y2Fz''@;'; put 'put ''ZSA2NjpjYXNlIDk4OlA9MixWPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6UD04LFY9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rbmV9Zm9yKFM9KFQ9QWUobmUsMikpLmxlbmd0aCxGPTA7RjxTO0YrKylpZigoeWU9a2UoVCxGKSk8NDh8fHllPlYpcmV0dXJuIE5hTjtyZXR1cm4gcGFyc2VJ''@;'; put 'put ''bnQoVCxQKX1yZXR1cm4rbmV9O2lmKE1lKGFlLCFmZSgiIDBvMSIpfHwhZmUoIjBiMSIpfHxmZSgiKzB4MSIpKSl7Zm9yKHZhciBPLFRlPWZ1bmN0aW9uKG5lKXt2YXIgdGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6ZmUoU2UobmUpKSx4PXRoaXM7cmV0dXJuIGllKGRlLHgpJiZXKGZ1bmN0aW9u''@;'; put 'put ''KCl7Sih4KX0pP1ooT2JqZWN0KHRlKSx4LFRlKTp0ZX0sRWU9Z2U/TihmZSk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04sTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLGlzRmluaXRlLGlzSW50ZWdl''@;'; put 'put ''cixpc05hTixpc1NhZmVJbnRlZ2VyLHBhcnNlRmxvYXQscGFyc2VJbnQsZnJvbVN0cmluZyxyYW5nZSIuc3BsaXQoIiwiKSxoZT0wO0VlLmxlbmd0aD5oZTtoZSsrKVEoZmUsTz1FZVtoZV0pJiYhUShUZSxPKSYmcShUZSxPLGVlKGZlLE8pKTtUZS5wcm90b3R5cGU9ZGUsZGUuY29uc3RydWN0''@;'; put 'put ''b3I9VGUsVShCLGFlLFRlLHtjb25zdHJ1Y3RvcjohMH0pfX0sNzA4NjQ6KFhlLEplLEwpPT57TCg4NTY0OCkoe3RhcmdldDoiTnVtYmVyIixzdGF0OiEwfSx7aXNJbnRlZ2VyOkwoMzA0Mil9KX0sNDIxNDA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDg1NjQ4KSxCPUwoNjYx''@;'; put 'put ''MyksRT1MKDQwNzAyKSxNZT1MKDE0MjYpLFU9TCg0NTk2MCksUT1MKDIzNTIzKSxaPVJhbmdlRXJyb3IsaWU9U3RyaW5nLGxlPU1hdGguZmxvb3IsWT1CKFUpLFc9QigiIi5zbGljZSksTj1CKDEuLnRvRml4ZWQpLGVlPWZ1bmN0aW9uKGRlLHZlLEFlKXtyZXR1cm4gMD09PXZlP0FlOnZlJTI9''@;'; put 'put ''PTE/ZWUoZGUsdmUtMSxBZSpkZSk6ZWUoZGUqZGUsdmUvMixBZSl9LEo9ZnVuY3Rpb24oZGUsdmUsQWUpe2Zvcih2YXIga2U9LTEsU2U9QWU7KytrZTw2OylkZVtrZV09KFNlKz12ZSpkZVtrZV0pJTFlNyxTZT1sZShTZS8xZTcpfSxzZT1mdW5jdGlvbihkZSx2ZSl7Zm9yKHZhciBBZT02LGtl''@;'; put 'put ''PTA7LS1BZT49MDspZGVbQWVdPWxlKChrZSs9ZGVbQWVdKS92ZSksa2U9a2UldmUqMWU3fSxhZT1mdW5jdGlvbihkZSl7Zm9yKHZhciB2ZT02LEFlPSIiOy0tdmU+PTA7KWlmKCIiIT09QWV8fDA9PT12ZXx8MCE9PWRlW3ZlXSl7dmFyIGtlPWllKGRlW3ZlXSk7QWU9IiI9PT1BZT9rZTpBZStZ''@;'; put 'put ''KCIwIiw3LWtlLmxlbmd0aCkra2V9cmV0dXJuIEFlfTtnZSh7dGFyZ2V0OiJOdW1iZXIiLHByb3RvOiEwLGZvcmNlZDpRKGZ1bmN0aW9uKCl7cmV0dXJuIjAuMDAwIiE9PU4oOGUtNSwzKXx8IjEiIT09TiguOSwwKXx8IjEuMjUiIT09TigxLjI1NSwyKXx8IjEwMDAwMDAwMDAwMDAwMDAxMjgi''@;'; put 'put ''IT09TigweGRlMGI2YjNhNzY0MDA4MCwwKX0pfHwhUShmdW5jdGlvbigpe04oe30pfSl9LHt0b0ZpeGVkOmZ1bmN0aW9uKHZlKXt2YXIgRWUsaGUsTyx6LEFlPU1lKHRoaXMpLGtlPUUodmUpLFNlPVswLDAsMCwwLDAsMF0sSWU9IiIsVGU9IjAiO2lmKGtlPDB8fGtlPjIwKXRocm93IFooIklu''@;'; put 'put ''Y29ycmVjdCBmcmFjdGlvbiBkaWdpdHMiKTtpZihBZSE9QWUpcmV0dXJuIk5hTiI7aWYoQWU8PS0xZTIxfHxBZT49MWUyMSlyZXR1cm4gaWUoQWUpO2lmKEFlPDAmJihJZT0iLSIsQWU9LUFlKSxBZT4xZS0yMSlpZihFZT1mdW5jdGlvbihkZSl7Zm9yKHZhciB2ZT0wLEFlPWRlO0FlPj00MDk2''@;'; put 'put ''Oyl2ZSs9MTIsQWUvPTQwOTY7Zm9yKDtBZT49MjspdmUrPTEsQWUvPTI7cmV0dXJuIHZlfShBZSplZSgyLDY5LDEpKS02OSxoZT1FZTwwP0FlKmVlKDIsLUVlLDEpOkFlL2VlKDIsRWUsMSksaGUqPTQ1MDM1OTk2MjczNzA0OTYsKEVlPTUyLUVlKT4wKXtmb3IoSihTZSwwLGhlKSxPPWtlO08+''@;'; put 'put ''PTc7KUooU2UsMWU3LDApLE8tPTc7Zm9yKEooU2UsZWUoMTAsTywxKSwwKSxPPUVlLTE7Tz49MjM7KXNlKFNlLDE8PDIzKSxPLT0yMztzZShTZSwxPDxPKSxKKFNlLDEsMSksc2UoU2UsMiksVGU9YWUoU2UpfWVsc2UgSihTZSwwLGhlKSxKKFNlLDE8PC1FZSwwKSxUZT1hZShTZSkrWSgiMCIs''@;'; put 'put ''a2UpO3JldHVybiBUZT1rZT4wP0llKygoej1UZS5sZW5ndGgpPD1rZT8iMC4iK1koIjAiLGtlLXopK1RlOlcoVGUsMCx6LWtlKSsiLiIrVyhUZSx6LWtlKSk6SWUrVGV9fSl9LDMzNDcwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoNDc5NTkpO2dlKHt0YXJnZXQ6Ik9iamVjdCIs''@;'; put 'put ''c3RhdDohMCxhcml0eToyLGZvcmNlZDpPYmplY3QuYXNzaWduIT09Qn0se2Fzc2lnbjpCfSl9LDgyNzU2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoMTI1NjYpLEU9TCgyMzUyMyksTWU9TCg3MTQ5NiksVT1MKDcxODMyKS5vbkZyZWV6ZSxRPU9iamVjdC5mcmVlemU7Z2Uoe3Rh''@;'; put 'put ''cmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpFKGZ1bmN0aW9uKCl7USgxKX0pLHNoYW06IUJ9LHtmcmVlemU6ZnVuY3Rpb24obGUpe3JldHVybiBRJiZNZShsZSk/UShVKGxlKSk6bGV9fSl9LDU0NzQwOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoMjM1MjMpLEU9TCg1MDMy''@;'; put 'put ''NyksTWU9TCg0Nzk4NykuZixVPUwoODU2MjQpLFE9QihmdW5jdGlvbigpe01lKDEpfSk7Z2Uoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohVXx8USxzaGFtOiFVfSx7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKGxlLFkpe3JldHVybiBNZShFKGxlKSxZKX19KX0s''@;'; put 'put ''NTU2MTU6KFhlLEplLEwpPT57dmFyIGdlPUwoODU2NDgpLEI9TCg4NTYyNCksRT1MKDIxMTk5KSxNZT1MKDUwMzI3KSxVPUwoNDc5ODcpLFE9TCg5NTAwNCk7Z2Uoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLHNoYW06IUJ9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKGll''@;'; put 'put ''KXtmb3IodmFyIHEsSixsZT1NZShpZSksWT1VLmYsVz1FKGxlKSxOPXt9LGVlPTA7Vy5sZW5ndGg+ZWU7KXZvaWQgMCE9PShKPVkobGUscT1XW2VlKytdKSkmJlEoTixxLEopO3JldHVybiBOfX0pfSw0Mzk5OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoMjM1MjMpLEU9TCgzNTgw''@;'; put 'put ''OCkuZjtnZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOkIoZnVuY3Rpb24oKXtyZXR1cm4hT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoMSl9KX0se2dldE93blByb3BlcnR5TmFtZXM6RX0pfSw2MzE5ODooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDI5MzM5KSxF''@;'; put 'put ''PUwoMjM1MjMpLE1lPUwoNTUzNCksVT1MKDY4MDcxKTtnZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFCfHxFKGZ1bmN0aW9uKCl7TWUuZigxKX0pfSx7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKGllKXt2YXIgbGU9TWUuZjtyZXR1cm4gbGU/bGUoVShpZSkpOltd''@;'; put 'put ''fX0pfSwyODc2NDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDIzNTIzKSxFPUwoNjgwNzEpLE1lPUwoODI3MzMpLFU9TCg0NjA4Nik7Z2Uoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpCKGZ1bmN0aW9uKCl7TWUoMSl9KSxzaGFtOiFVfSx7Z2V0UHJvdG90eXBlT2Y6''@;'; put 'put ''ZnVuY3Rpb24oaWUpe3JldHVybiBNZShFKGllKSl9fSl9LDk2MjUxOihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoNjgwNzEpLEU9TCgxNDU0NSk7Z2Uoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpMKDIzNTIzKShmdW5jdGlvbigpe0UoMSl9KX0se2tleXM6ZnVuY3Rp''@;'; put 'put ''b24oWil7cmV0dXJuIEUoQihaKSl9fSl9LDE2MTYxOihYZSxKZSxMKT0+e0woODU2NDgpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se3NldFByb3RvdHlwZU9mOkwoMTk1ODcpfSl9LDIwNjQ3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDI3NDkwKSxCPUwoMjU2NjYpLEU9TCg3NzA1KTtnZXx8''@;'; put 'put ''QihPYmplY3QucHJvdG90eXBlLCJ0b1N0cmluZyIsRSx7dW5zYWZlOiEwfSl9LDgzODU3OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoNDQ1ODIpLnZhbHVlcztnZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITB9LHt2YWx1ZXM6ZnVuY3Rpb24oTWUpe3JldHVybiBCKE1lKX19KX0s''@;'; put 'put ''OTE2ODM6KFhlLEplLEwpPT57dmFyIGdlPUwoODU2NDgpLEI9TCg0NjY5MyksRT1MKDExMzA2KSxNZT1MKDY5ODkpLFU9TCg1NjU4MSksUT1MKDU4NjQ3KSxaPUwoNzE0OTYpLGllPUwoNzQ0MTApLGxlPUwoMjM1MjMpLFk9QigiUmVmbGVjdCIsImNvbnN0cnVjdCIpLFc9T2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZSxOPVtdLnB1c2gsZWU9bGUoZnVuY3Rpb24oKXtmdW5jdGlvbiBzZSgpe31yZXR1cm4hKFkoZnVuY3Rpb24oKXt9LFtdLHNlKWluc3RhbmNlb2Ygc2UpfSkscT0hbGUoZnVuY3Rpb24oKXtZKGZ1bmN0aW9uKCl7fSl9KSxKPWVlfHxxO2dlKHt0YXJnZXQ6IlJlZmxlY3QiLHN0YXQ6ITAs''@;'; put 'put ''Zm9yY2VkOkosc2hhbTpKfSx7Y29uc3RydWN0OmZ1bmN0aW9uKGFlLGZlKXtVKGFlKSxRKGZlKTt2YXIgZGU9YXJndW1lbnRzLmxlbmd0aDwzP2FlOlUoYXJndW1lbnRzWzJdKTtpZihxJiYhZWUpcmV0dXJuIFkoYWUsZmUsZGUpO2lmKGFlPT1kZSl7c3dpdGNoKGZlLmxlbmd0aCl7Y2FzZSAw''@;'; put 'put ''OnJldHVybiBuZXcgYWU7Y2FzZSAxOnJldHVybiBuZXcgYWUoZmVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGFlKGZlWzBdLGZlWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBhZShmZVswXSxmZVsxXSxmZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgYWUoZmVbMF0sZmVbMV0sZmVbMl0sZmVbM10pfXZh''@;'; put 'put ''ciB2ZT1bbnVsbF07cmV0dXJuIEUoTix2ZSxmZSksbmV3KEUoTWUsYWUsdmUpKX12YXIgQWU9ZGUucHJvdG90eXBlLGtlPWllKFooQWUpP0FlOlcpLFNlPUUoYWUsa2UsZmUpO3JldHVybiBaKFNlKT9TZTprZX19KX0sMjAyNzM6KFhlLEplLEwpPT57dmFyIGdlPUwoODU2NDgpLEI9TCgzNTYy''@;'; put 'put ''KSxFPUwoNzE0OTYpLE1lPUwoNTg2NDcpLFU9TCgxNDEyNSksUT1MKDQ3OTg3KSxaPUwoODI3MzMpO2dlKHt0YXJnZXQ6IlJlZmxlY3QiLHN0YXQ6ITB9LHtnZXQ6ZnVuY3Rpb24gaWUobGUsWSl7dmFyIE4sZWUsVz1hcmd1bWVudHMubGVuZ3RoPDM/bGU6YXJndW1lbnRzWzJdO3JldHVybiBN''@;'; put 'put ''ZShsZSk9PT1XP2xlW1ldOihOPVEuZihsZSxZKSk/VShOKT9OLnZhbHVlOnZvaWQgMD09PU4uZ2V0P3ZvaWQgMDpCKE4uZ2V0LFcpOkUoZWU9WihsZSkpP2llKGVlLFksVyk6dm9pZCAwfX0pfSwxNjgyNTooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTYyNCksQj1MKDcwNzA1KSxFPUwoNjYxMyks''@;'; put 'put ''TWU9TCg2NzUwNyksVT1MKDUxODQ5KSxRPUwoMTYwMTcpLFo9TCg3NTQzMSkuZixpZT1MKDM3NDc0KSxsZT1MKDQxODA0KSxZPUwoOTIxKSxXPUwoODE2MjApLE49TCg5NzE4OSksZWU9TCg3ODgwKSxxPUwoMjU2NjYpLEo9TCgyMzUyMyksc2U9TCg0ODgxMSksYWU9TCg3MjcpLmVuZm9yY2Us''@;'; put 'put ''ZmU9TCg2ODMxNSksZGU9TCgyNTQ2KSx2ZT1MKDQzMTg2KSxBZT1MKDUxOTQ5KSxrZT1kZSgibWF0Y2giKSxTZT1CLlJlZ0V4cCxJZT1TZS5wcm90b3R5cGUsVGU9Qi5TeW50YXhFcnJvcixFZT1FKEllLmV4ZWMpLGhlPUUoIiIuY2hhckF0KSxPPUUoIiIucmVwbGFjZSksej1FKCIiLmluZGV4''@;'; put 'put ''T2YpLG5lPUUoIiIuc2xpY2UpLHRlPS9eXD88W15cc1xkISMlJiorPD0+QF5dW15ccyEjJSYqKzw9PkBeXSo+Lyx4PS9hL2csUD0vYS9nLFY9bmV3IFNlKHgpIT09eCxUPU4uTUlTU0VEX1NUSUNLWSxTPU4uVU5TVVBQT1JURURfWTtpZihNZSgiUmVnRXhwIixnZSYmKCFWfHxUfHx2ZXx8QWV8''@;'; put 'put ''fEooZnVuY3Rpb24oKXtyZXR1cm4gUFtrZV09ITEsU2UoeCkhPXh8fFNlKFApPT1QfHwiL2EvaSIhPVNlKHgsImkiKX0pKSkpe2Zvcih2YXIgRGU9ZnVuY3Rpb24oZ3QseXQpe3ZhciBvbixfdCxudCxxZSxvdCxSdCxwdD1pZShJZSx0aGlzKSxtdD1sZShndCksdnQ9dm9pZCAwPT09eXQsZnQ9''@;'; put 'put ''W10sRnQ9Z3Q7aWYoIXB0JiZtdCYmdnQmJmd0LmNvbnN0cnVjdG9yPT09RGUpcmV0dXJuIGd0O2lmKChtdHx8aWUoSWUsZ3QpKSYmKGd0PWd0LnNvdXJjZSx2dCYmKHl0PVcoRnQpKSksZ3Q9dm9pZCAwPT09Z3Q/IiI6WShndCkseXQ9dm9pZCAwPT09eXQ/IiI6WSh5dCksRnQ9Z3QsdmUmJiJk''@;'; put 'put ''b3RBbGwiaW4geCYmKF90PSEheXQmJnooeXQsInMiKT4tMSkmJih5dD1PKHl0LC9zL2csIiIpKSxvbj15dCxUJiYic3RpY2t5ImluIHgmJihudD0hIXl0JiZ6KHl0LCJ5Iik+LTEpJiZTJiYoeXQ9Tyh5dCwveS9nLCIiKSksQWUmJihxZT1mdW5jdGlvbigkZSl7Zm9yKHZhciBudCxndD0kZS5s''@;'; put 'put ''ZW5ndGgseXQ9MCxwdD0iIixtdD1bXSx2dD17fSxmdD0hMSxGdD0hMSxvbj0wLF90PSIiO3l0PD1ndDt5dCsrKXtpZigiXFwiPT09KG50PWhlKCRlLHl0KSkpbnQrPWhlKCRlLCsreXQpO2Vsc2UgaWYoIl0iPT09bnQpZnQ9ITE7ZWxzZSBpZighZnQpc3dpdGNoKCEwKXtjYXNlIlsiPT09bnQ6''@;'; put 'put ''ZnQ9ITA7YnJlYWs7Y2FzZSIoIj09PW50OkVlKHRlLG5lKCRlLHl0KzEpKSYmKHl0Kz0yLEZ0PSEwKSxwdCs9bnQsb24rKztjb250aW51ZTtjYXNlIj4iPT09bnQmJkZ0OmlmKCIiPT09X3R8fHNlKHZ0LF90KSl0aHJvdyBuZXcgVGUoIkludmFsaWQgY2FwdHVyZSBncm91cCBuYW1lIik7dnRb''@;'; put 'put ''X3RdPSEwLG10W210Lmxlbmd0aF09W190LG9uXSxGdD0hMSxfdD0iIjtjb250aW51ZX1GdD9fdCs9bnQ6cHQrPW50fXJldHVybltwdCxtdF19KGd0KSxndD1xZVswXSxmdD1xZVsxXSksb3Q9VShTZShndCx5dCkscHQ/dGhpczpJZSxEZSksKF90fHxudHx8ZnQubGVuZ3RoKSYmKFJ0PWFlKG90''@;'; put 'put ''KSxfdCYmKFJ0LmRvdEFsbD0hMCxSdC5yYXc9RGUoZnVuY3Rpb24oJGUpe2Zvcih2YXIgdnQsZ3Q9JGUubGVuZ3RoLHl0PTAscHQ9IiIsbXQ9ITE7eXQ8PWd0O3l0KyspIlxcIiE9PSh2dD1oZSgkZSx5dCkpP210fHwiLiIhPT12dD8oIlsiPT09dnQ/bXQ9ITA6Il0iPT09dnQmJihtdD0hMSks''@;'; put 'put ''cHQrPXZ0KTpwdCs9IltcXHNcXFNdIjpwdCs9dnQraGUoJGUsKyt5dCk7cmV0dXJuIHB0fShndCksb24pKSxudCYmKFJ0LnN0aWNreT0hMCksZnQubGVuZ3RoJiYoUnQuZ3JvdXBzPWZ0KSksZ3QhPT1GdCl0cnl7UShvdCwic291cmNlIiwiIj09PUZ0PyIoPzopIjpGdCl9Y2F0Y2goQ3Qpe31y''@;'; put 'put ''ZXR1cm4gb3R9LFBlPVooU2UpLFFlPTA7UGUubGVuZ3RoPlFlOyllZShEZSxTZSxQZVtRZSsrXSk7SWUuY29uc3RydWN0b3I9RGUsRGUucHJvdG90eXBlPUllLHEoQiwiUmVnRXhwIixEZSx7Y29uc3RydWN0b3I6ITB9KX1mZSgiUmVnRXhwIil9LDQyNzYwOihYZSxKZSxMKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDIyMjM0KTtnZSh7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDovLi8uZXhlYyE9PUJ9LHtleGVjOkJ9KX0sMzA1NzE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDEzODY5KS5QUk9QRVIsQj1MKDI1NjY2KSxFPUwoNTg2''@;'; put 'put ''NDcpLE1lPUwoOTIxKSxVPUwoMjM1MjMpLFE9TCg4MTYyMCksWj0idG9TdHJpbmciLGxlPVJlZ0V4cC5wcm90b3R5cGVbWl07KFUoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPWxlLmNhbGwoe3NvdXJjZToiYSIsZmxhZ3M6ImIifSl9KXx8Z2UmJmxlLm5hbWUhPVopJiZCKFJlZ0V4cC5wcm90''@;'; put 'put ''b3R5cGUsWixmdW5jdGlvbigpe3ZhciBlZT1FKHRoaXMpO3JldHVybiIvIitNZShlZS5zb3VyY2UpKyIvIitNZShRKGVlKSl9LHt1bnNhZmU6ITB9KX0sODAwNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCg0Njg1NykoIlNldCIsZnVuY3Rpb24oRSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEUodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sTCg0NTE0MCkpfSwxODMyMzooWGUsSmUsTCk9PntMKDgwMDYpfSwxNjY2MTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg3NTA1OCkuY29kZUF0O2dlKHt0YXJnZXQ6''@;'; put 'put ''IlN0cmluZyIscHJvdG86ITB9LHtjb2RlUG9pbnRBdDpmdW5jdGlvbihNZSl7cmV0dXJuIEIodGhpcyxNZSl9fSl9LDM3NDk5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSixnZT1MKDg1NjQ4KSxCPUwoNjYxMyksRT1MKDQ3OTg3KS5mLE1lPUwoNjUzMTYpLFU9TCg5MjEpLFE9TCg0''@;'; put 'put ''MTk2MSksWj1MKDI0NTcyKSxpZT1MKDc2NTcxKSxsZT1MKDEwMDE3KSxZPUIoIiIuZW5kc1dpdGgpLFc9QigiIi5zbGljZSksTj1NYXRoLm1pbixlZT1pZSgiZW5kc1dpdGgiKTtnZSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohKCFsZSYmIWVlJiYoSj1FKFN0cmluZy5wcm90''@;'; put 'put ''b3R5cGUsImVuZHNXaXRoIiksSiYmIUoud3JpdGFibGUpfHxlZSl9LHtlbmRzV2l0aDpmdW5jdGlvbihzZSl7dmFyIGFlPVUoWih0aGlzKSk7UShzZSk7dmFyIGZlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGRlPWFlLmxlbmd0aCx2ZT12b2lkIDA9PT1mZT9kZTpO''@;'; put 'put ''KE1lKGZlKSxkZSksQWU9VShzZSk7cmV0dXJuIFk/WShhZSxBZSx2ZSk6VyhhZSx2ZS1BZS5sZW5ndGgsdmUpPT09QWV9fSl9LDQ1MTM1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDY2MTMpLEU9TCg0MTk2MSksTWU9TCgyNDU3MiksVT1MKDkyMSksUT1M''@;'; put 'put ''KDc2NTcxKSxaPUIoIiIuaW5kZXhPZik7Z2Uoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6IVEoImluY2x1ZGVzIil9LHtpbmNsdWRlczpmdW5jdGlvbihsZSl7cmV0dXJuISF+WihVKE1lKHRoaXMpKSxVKEUobGUpKSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZv''@;'; put 'put ''aWQgMCl9fSl9LDUzOTUwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg3NTA1OCkuY2hhckF0LEI9TCg5MjEpLEU9TCg3MjcpLE1lPUwoNjQ1NjApLFU9IlN0cmluZyBJdGVyYXRvciIsUT1FLnNldCxaPUUuZ2V0dGVyRm9yKFUpO01lKFN0cmluZywiU3RyaW5nIixmdW5jdGlv''@;'; put 'put ''bihpZSl7USh0aGlzLHt0eXBlOlUsc3RyaW5nOkIoaWUpLGluZGV4OjB9KX0sZnVuY3Rpb24oKXt2YXIgTixsZT1aKHRoaXMpLFk9bGUuc3RyaW5nLFc9bGUuaW5kZXg7cmV0dXJuIFc+PVkubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KE49Z2UoWSxXKSxsZS5pbmRleCs9Ti5sZW5n''@;'; put 'put ''dGgse3ZhbHVlOk4sZG9uZTohMX0pfSl9LDQ5Mjk1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDk1MTEwKTtnZSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpMKDk3ODE4KSgibGluayIpfSx7bGluazpmdW5jdGlvbihVKXtyZXR1cm4gQih0''@;'; put 'put ''aGlzLCJhIiwiaHJlZiIsVSl9fSl9LDI3NjI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDM1NjIpLEI9TCgyMjgxNCksRT1MKDU4NjQ3KSxNZT1MKDYzNzQpLFU9TCg2NTMxNiksUT1MKDkyMSksWj1MKDI0NTcyKSxpZT1MKDIwOTQ4KSxsZT1MKDYxNjc2KSxZPUwoNTgxMjYp''@;'; put 'put ''O0IoIm1hdGNoIixmdW5jdGlvbihXLE4sZWUpe3JldHVybltmdW5jdGlvbihKKXt2YXIgc2U9Wih0aGlzKSxhZT1NZShKKT92b2lkIDA6aWUoSixXKTtyZXR1cm4gYWU/Z2UoYWUsSixzZSk6bmV3IFJlZ0V4cChKKVtXXShRKHNlKSl9LGZ1bmN0aW9uKHEpe3ZhciBKPUUodGhpcyksc2U9UShx''@;'; put 'put ''KSxhZT1lZShOLEosc2UpO2lmKGFlLmRvbmUpcmV0dXJuIGFlLnZhbHVlO2lmKCFKLmdsb2JhbClyZXR1cm4gWShKLHNlKTt2YXIgZmU9Si51bmljb2RlO0oubGFzdEluZGV4PTA7Zm9yKHZhciBBZSxkZT1bXSx2ZT0wO251bGwhPT0oQWU9WShKLHNlKSk7KXt2YXIga2U9UShBZVswXSk7ZGVb''@;'; put 'put ''dmVdPWtlLCIiPT09a2UmJihKLmxhc3RJbmRleD1sZShzZSxVKEoubGFzdEluZGV4KSxmZSkpLHZlKyt9cmV0dXJuIDA9PT12ZT9udWxsOmRlfV19KX0sNzgyNDY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDg1NjQ4KSxCPUwoMjEyODUpLnN0YXJ0O2dlKHt0YXJnZXQ6IlN0''@;'; put 'put ''cmluZyIscHJvdG86ITAsZm9yY2VkOkwoNzIyMTApfSx7cGFkU3RhcnQ6ZnVuY3Rpb24oVSl7cmV0dXJuIEIodGhpcyxVLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sMTA0MTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBnZT1MKDExMzA2KSxCPUwo''@;'; put 'put ''MzU2MiksRT1MKDY2MTMpLE1lPUwoMjI4MTQpLFU9TCgyMzUyMyksUT1MKDU4NjQ3KSxaPUwoMTIwMTQpLGllPUwoNjM3NCksbGU9TCg0MDcwMiksWT1MKDY1MzE2KSxXPUwoOTIxKSxOPUwoMjQ1NzIpLGVlPUwoNjE2NzYpLHE9TCgyMDk0OCksSj1MKDYzMzgyKSxzZT1MKDU4MTI2KSxmZT1M''@;'; put 'put ''KDI1NDYpKCJyZXBsYWNlIiksZGU9TWF0aC5tYXgsdmU9TWF0aC5taW4sQWU9RShbXS5jb25jYXQpLGtlPUUoW10ucHVzaCksU2U9RSgiIi5pbmRleE9mKSxJZT1FKCIiLnNsaWNlKSxUZT1mdW5jdGlvbih6KXtyZXR1cm4gdm9pZCAwPT09ej96OlN0cmluZyh6KX0sRWU9IiQwIj09PSJhIi5y''@;'; put 'put ''ZXBsYWNlKC8uLywiJDAiKSxoZT0hIS8uL1tmZV0mJiIiPT09Ly4vW2ZlXSgiYSIsIiQwIik7TWUoInJlcGxhY2UiLGZ1bmN0aW9uKHosbmUsdGUpe3ZhciB4PWhlPyIkIjoiJDAiO3JldHVybltmdW5jdGlvbihWLFQpe3ZhciBTPU4odGhpcyksRj1pZShWKT92b2lkIDA6cShWLGZlKTtyZXR1''@;'; put 'put ''cm4gRj9CKEYsVixTLFQpOkIobmUsVyhTKSxWLFQpfSxmdW5jdGlvbihQLFYpe3ZhciBUPVEodGhpcyksUz1XKFApO2lmKCJzdHJpbmciPT10eXBlb2YgViYmLTE9PT1TZShWLHgpJiYtMT09PVNlKFYsIiQ8Iikpe3ZhciBGPXRlKG5lLFQsUyxWKTtpZihGLmRvbmUpcmV0dXJuIEYudmFsdWV9''@;'; put 'put ''dmFyIHllPVooVik7eWV8fChWPVcoVikpO3ZhciBDZT1ULmdsb2JhbDtpZihDZSl7dmFyIERlPVQudW5pY29kZTtULmxhc3RJbmRleD0wfWZvcih2YXIgUGU9W107Oyl7dmFyIFFlPXNlKFQsUyk7aWYobnVsbD09PVFlfHwoa2UoUGUsUWUpLCFDZSkpYnJlYWs7IiI9PT1XKFFlWzBdKSYmKFQu''@;'; put 'put ''bGFzdEluZGV4PWVlKFMsWShULmxhc3RJbmRleCksRGUpKX1mb3IodmFyIGd0PSIiLHl0PTAscHQ9MDtwdDxQZS5sZW5ndGg7cHQrKyl7Zm9yKHZhciBtdD1XKChRZT1QZVtwdF0pWzBdKSx2dD1kZSh2ZShsZShRZS5pbmRleCksUy5sZW5ndGgpLDApLGZ0PVtdLEZ0PTE7RnQ8UWUubGVuZ3Ro''@;'; put 'put ''O0Z0Kyspa2UoZnQsVGUoUWVbRnRdKSk7dmFyIG9uPVFlLmdyb3VwcztpZih5ZSl7dmFyIF90PUFlKFttdF0sZnQsdnQsUyk7dm9pZCAwIT09b24mJmtlKF90LG9uKTt2YXIgbnQ9VyhnZShWLHZvaWQgMCxfdCkpfWVsc2UgbnQ9SihtdCxTLHZ0LGZ0LG9uLFYpO3Z0Pj15dCYmKGd0Kz1JZShT''@;'; put 'put ''LHl0LHZ0KStudCx5dD12dCttdC5sZW5ndGgpfXJldHVybiBndCtJZShTLHl0KX1dfSwhIVUoZnVuY3Rpb24oKXt2YXIgej0vLi87cmV0dXJuIHouZXhlYz1mdW5jdGlvbigpe3ZhciBuZT1bXTtyZXR1cm4gbmUuZ3JvdXBzPXthOiI3In0sbmV9LCI3IiE9PSIiLnJlcGxhY2UoeiwiJDxhPiIp''@;'; put 'put ''fSl8fCFFZXx8aGUpfSw3Nzk0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCgzNTYyKSxCPUwoMjI4MTQpLEU9TCg1ODY0NyksTWU9TCg2Mzc0KSxVPUwoMjQ1NzIpLFE9TCg1NTg4MSksWj1MKDkyMSksaWU9TCgyMDk0OCksbGU9TCg1ODEyNik7Qigic2VhcmNoIixmdW5jdGlv''@;'; put 'put ''bihZLFcsTil7cmV0dXJuW2Z1bmN0aW9uKHEpe3ZhciBKPVUodGhpcyksc2U9TWUocSk/dm9pZCAwOmllKHEsWSk7cmV0dXJuIHNlP2dlKHNlLHEsSik6bmV3IFJlZ0V4cChxKVtZXShaKEopKX0sZnVuY3Rpb24oZWUpe3ZhciBxPUUodGhpcyksSj1aKGVlKSxzZT1OKFcscSxKKTtpZihzZS5k''@;'; put 'put ''b25lKXJldHVybiBzZS52YWx1ZTt2YXIgYWU9cS5sYXN0SW5kZXg7UShhZSwwKXx8KHEubGFzdEluZGV4PTApO3ZhciBmZT1sZShxLEopO3JldHVybiBRKHEubGFzdEluZGV4LGFlKXx8KHEubGFzdEluZGV4PWFlKSxudWxsPT09ZmU/LTE6ZmUuaW5kZXh9XX0pfSw2NDQxODooWGUsSmUsTCk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoMTEzMDYpLEI9TCgzNTYyKSxFPUwoNjYxMyksTWU9TCgyMjgxNCksVT1MKDU4NjQ3KSxRPUwoNjM3NCksWj1MKDQxODA0KSxpZT1MKDI0NTcyKSxsZT1MKDkxMyksWT1MKDYxNjc2KSxXPUwoNjUzMTYpLE49TCg5MjEpLGVlPUwoMjA5NDgpLHE9TCgx''@;'; put 'put ''MDg3MiksSj1MKDU4MTI2KSxzZT1MKDIyMjM0KSxhZT1MKDk3MTg5KSxmZT1MKDIzNTIzKSxkZT1hZS5VTlNVUFBPUlRFRF9ZLHZlPTQyOTQ5NjcyOTUsQWU9TWF0aC5taW4sa2U9W10ucHVzaCxTZT1FKC8uLy5leGVjKSxJZT1FKGtlKSxUZT1FKCIiLnNsaWNlKTtNZSgic3BsaXQiLGZ1bmN0''@;'; put 'put ''aW9uKGhlLE8seil7dmFyIG5lO3JldHVybiBuZT0iYyI9PSJhYmJjIi5zcGxpdCgvKGIpKi8pWzFdfHw0IT0idGVzdCIuc3BsaXQoLyg/OikvLC0xKS5sZW5ndGh8fDIhPSJhYiIuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGh8fDQhPSIuIi5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGh8fCIuIi5z''@;'; put 'put ''cGxpdCgvKCkoKS8pLmxlbmd0aD4xfHwiIi5zcGxpdCgvLj8vKS5sZW5ndGg/ZnVuY3Rpb24odGUseCl7dmFyIFA9TihpZSh0aGlzKSksVj12b2lkIDA9PT14P3ZlOng+Pj4wO2lmKDA9PT1WKXJldHVybltdO2lmKHZvaWQgMD09PXRlKXJldHVybltQXTtpZighWih0ZSkpcmV0dXJuIEIoTyxQ''@;'; put 'put ''LHRlLFYpO2Zvcih2YXIgQ2UsRGUsUGUsVD1bXSxGPTAseWU9bmV3IFJlZ0V4cCh0ZS5zb3VyY2UsKHRlLmlnbm9yZUNhc2U/ImkiOiIiKSsodGUubXVsdGlsaW5lPyJtIjoiIikrKHRlLnVuaWNvZGU/InUiOiIiKSsodGUuc3RpY2t5PyJ5IjoiIikrImciKTsoQ2U9QihzZSx5ZSxQKSkmJiEo''@;'; put 'put ''KERlPXllLmxhc3RJbmRleCk+RiYmKEllKFQsVGUoUCxGLENlLmluZGV4KSksQ2UubGVuZ3RoPjEmJkNlLmluZGV4PFAubGVuZ3RoJiZnZShrZSxULHEoQ2UsMSkpLFBlPUNlWzBdLmxlbmd0aCxGPURlLFQubGVuZ3RoPj1WKSk7KXllLmxhc3RJbmRleD09PUNlLmluZGV4JiZ5ZS5sYXN0SW5k''@;'; put 'put ''ZXgrKztyZXR1cm4gRj09PVAubGVuZ3RoPyhQZXx8IVNlKHllLCIiKSkmJkllKFQsIiIpOkllKFQsVGUoUCxGKSksVC5sZW5ndGg+Vj9xKFQsMCxWKTpUfToiMCIuc3BsaXQodm9pZCAwLDApLmxlbmd0aD9mdW5jdGlvbih0ZSx4KXtyZXR1cm4gdm9pZCAwPT09dGUmJjA9PT14P1tdOkIoTyx0''@;'; put 'put ''aGlzLHRlLHgpfTpPLFtmdW5jdGlvbih4LFApe3ZhciBWPWllKHRoaXMpLFQ9USh4KT92b2lkIDA6ZWUoeCxoZSk7cmV0dXJuIFQ/QihULHgsVixQKTpCKG5lLE4oVikseCxQKX0sZnVuY3Rpb24odGUseCl7dmFyIFA9VSh0aGlzKSxWPU4odGUpLFQ9eihuZSxQLFYseCxuZSE9PU8pO2lmKFQu''@;'; put 'put ''ZG9uZSlyZXR1cm4gVC52YWx1ZTt2YXIgUz1sZShQLFJlZ0V4cCksRj1QLnVuaWNvZGUsQ2U9bmV3IFMoZGU/Il4oPzoiK1Auc291cmNlKyIpIjpQLChQLmlnbm9yZUNhc2U/ImkiOiIiKSsoUC5tdWx0aWxpbmU/Im0iOiIiKSsoUC51bmljb2RlPyJ1IjoiIikrKGRlPyJnIjoieSIpKSxEZT12''@;'; put 'put ''b2lkIDA9PT14P3ZlOng+Pj4wO2lmKDA9PT1EZSlyZXR1cm5bXTtpZigwPT09Vi5sZW5ndGgpcmV0dXJuIG51bGw9PT1KKENlLFYpP1tWXTpbXTtmb3IodmFyIFBlPTAsUWU9MCwkZT1bXTtRZTxWLmxlbmd0aDspe0NlLmxhc3RJbmRleD1kZT8wOlFlO3ZhciB5dCxndD1KKENlLGRlP1RlKFYs''@;'; put 'put ''UWUpOlYpO2lmKG51bGw9PT1ndHx8KHl0PUFlKFcoQ2UubGFzdEluZGV4KyhkZT9RZTowKSksVi5sZW5ndGgpKT09PVBlKVFlPVkoVixRZSxGKTtlbHNle2lmKEllKCRlLFRlKFYsUGUsUWUpKSwkZS5sZW5ndGg9PT1EZSlyZXR1cm4gJGU7Zm9yKHZhciBwdD0xO3B0PD1ndC5sZW5ndGgtMTtw''@;'; put 'put ''dCsrKWlmKEllKCRlLGd0W3B0XSksJGUubGVuZ3RoPT09RGUpcmV0dXJuICRlO1FlPVBlPXl0fX1yZXR1cm4gSWUoJGUsVGUoVixQZSkpLCRlfV19LCEhZmUoZnVuY3Rpb24oKXt2YXIgaGU9Lyg/OikvLE89aGUuZXhlYztoZS5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIE8uYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpfTt2YXIgej0iYWIiLnNwbGl0KGhlKTtyZXR1cm4gMiE9PXoubGVuZ3RofHwiYSIhPT16WzBdfHwiYiIhPT16WzFdfSksZGUpfSw4NTczNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIEosZ2U9TCg4NTY0OCksQj1MKDY2MTMpLEU9TCg0Nzk4NykuZixNZT1MKDY1MzE2''@;'; put 'put ''KSxVPUwoOTIxKSxRPUwoNDE5NjEpLFo9TCgyNDU3MiksaWU9TCg3NjU3MSksbGU9TCgxMDAxNyksWT1CKCIiLnN0YXJ0c1dpdGgpLFc9QigiIi5zbGljZSksTj1NYXRoLm1pbixlZT1pZSgic3RhcnRzV2l0aCIpO2dlKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiEoIWxlJiYh''@;'; put 'put ''ZWUmJihKPUUoU3RyaW5nLnByb3RvdHlwZSwic3RhcnRzV2l0aCIpLEomJiFKLndyaXRhYmxlKXx8ZWUpfSx7c3RhcnRzV2l0aDpmdW5jdGlvbihzZSl7dmFyIGFlPVUoWih0aGlzKSk7UShzZSk7dmFyIGZlPU1lKE4oYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsYWUu''@;'; put 'put ''bGVuZ3RoKSksZGU9VShzZSk7cmV0dXJuIFk/WShhZSxkZSxmZSk6VyhhZSxmZSxmZStkZS5sZW5ndGgpPT09ZGV9fSl9LDgzNjIwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDkzMTY2KS50cmltO2dlKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9y''@;'; put 'put ''Y2VkOkwoNDU3MTIpKCJ0cmltIil9LHt0cmltOmZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcyl9fSl9LDQ0NjQ2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ2U9TCg4NTY0OCksQj1MKDcwNzA1KSxFPUwoMzU2MiksTWU9TCg2NjEzKSxVPUwoMTAwMTcpLFE9TCg4NTYyNCksWj1MKDI5''@;'; put 'put ''MzM5KSxpZT1MKDIzNTIzKSxsZT1MKDQ4ODExKSxZPUwoMzc0NzQpLFc9TCg1ODY0NyksTj1MKDUwMzI3KSxlZT1MKDg0MDk0KSxxPUwoOTIxKSxKPUwoNzM5MjApLHNlPUwoNzQ0MTApLGFlPUwoMTQ1NDUpLGZlPUwoNzU0MzEpLGRlPUwoMzU4MDgpLHZlPUwoNTUzNCksQWU9TCg0Nzk4Nyks''@;'; put 'put ''a2U9TCg1MTE4MyksU2U9TCg3NzMyOCksSWU9TCg0NjkwMSksVGU9TCgyNTY2NiksRWU9TCg2ODgzNSksaGU9TCgyNzIzMCksTz1MKDE5OTA5KSx6PUwoNTI4MTApLG5lPUwoMjU0NiksdGU9TCgyODExKSx4PUwoMTAwNzIpLFA9TCgxNDQ5OCksVj1MKDU1OTY4KSxUPUwoNzI3KSxTPUwoOTU2''@;'; put 'put ''NjkpLmZvckVhY2gsRj1oZSgiaGlkZGVuIikseWU9IlN5bWJvbCIsQ2U9InByb3RvdHlwZSIsRGU9VC5zZXQsUGU9VC5nZXR0ZXJGb3IoeWUpLFFlPU9iamVjdFtDZV0sJGU9Qi5TeW1ib2wsZ3Q9JGUmJiRlW0NlXSx5dD1CLlR5cGVFcnJvcixwdD1CLlFPYmplY3QsbXQ9QWUuZix2dD1rZS5m''@;'; put 'put ''LGZ0PWRlLmYsRnQ9SWUuZixvbj1NZShbXS5wdXNoKSxfdD1FZSgic3ltYm9scyIpLG50PUVlKCJvcC1zeW1ib2xzIikscWU9RWUoIndrcyIpLG90PSFwdHx8IXB0W0NlXXx8IXB0W0NlXS5maW5kQ2hpbGQsUnQ9USYmaWUoZnVuY3Rpb24oKXtyZXR1cm4gNyE9c2UodnQoe30sImEiLHtnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdnQodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24obW4scG4sYm4pe3ZhciBsbj1tdChRZSxwbik7bG4mJmRlbGV0ZSBRZVtwbl0sdnQobW4scG4sYm4pLGxuJiZtbiE9PVFlJiZ2dChRZSxwbixsbil9OnZ0LEN0PWZ1bmN0aW9uKG1uLHBu''@;'; put 'put ''KXt2YXIgYm49X3RbbW5dPXNlKGd0KTtyZXR1cm4gRGUoYm4se3R5cGU6eWUsdGFnOm1uLGRlc2NyaXB0aW9uOnBufSksUXx8KGJuLmRlc2NyaXB0aW9uPXBuKSxibn0sY3Q9ZnVuY3Rpb24ocG4sYm4sbG4pe3BuPT09UWUmJmN0KG50LGJuLGxuKSxXKHBuKTt2YXIgTm49ZWUoYm4pO3JldHVy''@;'; put 'put ''biBXKGxuKSxsZShfdCxObik/KGxuLmVudW1lcmFibGU/KGxlKHBuLEYpJiZwbltGXVtObl0mJihwbltGXVtObl09ITEpLGxuPXNlKGxuLHtlbnVtZXJhYmxlOkooMCwhMSl9KSk6KGxlKHBuLEYpfHx2dChwbixGLEooMSx7fSkpLHBuW0ZdW05uXT0hMCksUnQocG4sTm4sbG4pKTp2dChwbixO''@;'; put 'put ''bixsbil9LE50PWZ1bmN0aW9uKHBuLGJuKXtXKHBuKTt2YXIgbG49TihibiksTm49YWUobG4pLmNvbmNhdChKdChsbikpO3JldHVybiBTKE5uLGZ1bmN0aW9uKGtuKXsoIVF8fEUoWWUsbG4sa24pKSYmY3QocG4sa24sbG5ba25dKX0pLHBufSxZZT1mdW5jdGlvbihwbil7dmFyIGJuPWVlKHBu''@;'; put 'put ''KSxsbj1FKEZ0LHRoaXMsYm4pO3JldHVybiEodGhpcz09PVFlJiZsZShfdCxibikmJiFsZShudCxibikpJiYoIShsbnx8IWxlKHRoaXMsYm4pfHwhbGUoX3QsYm4pfHxsZSh0aGlzLEYpJiZ0aGlzW0ZdW2JuXSl8fGxuKX0sQXQ9ZnVuY3Rpb24ocG4sYm4pe3ZhciBsbj1OKHBuKSxObj1lZShi''@;'; put 'put ''bik7aWYobG4hPT1RZXx8IWxlKF90LE5uKXx8bGUobnQsTm4pKXt2YXIga249bXQobG4sTm4pO3JldHVybiBrbiYmbGUoX3QsTm4pJiYhKGxlKGxuLEYpJiZsbltGXVtObl0pJiYoa24uZW51bWVyYWJsZT0hMCksa259fSxqdD1mdW5jdGlvbihwbil7dmFyIGJuPWZ0KE4ocG4pKSxsbj1bXTty''@;'; put 'put ''ZXR1cm4gUyhibixmdW5jdGlvbihObil7IWxlKF90LE5uKSYmIWxlKE8sTm4pJiZvbihsbixObil9KSxsbn0sSnQ9ZnVuY3Rpb24obW4pe3ZhciBwbj1tbj09PVFlLGJuPWZ0KHBuP250Ok4obW4pKSxsbj1bXTtyZXR1cm4gUyhibixmdW5jdGlvbihObil7bGUoX3QsTm4pJiYoIXBufHxsZShR''@;'; put 'put ''ZSxObikpJiZvbihsbixfdFtObl0pfSksbG59O1p8fChUZShndD0oJGU9ZnVuY3Rpb24oKXtpZihZKGd0LHRoaXMpKXRocm93IHl0KCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgcG49YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP3EoYXJndW1lbnRz''@;'; put 'put ''WzBdKTp2b2lkIDAsYm49eihwbiksbG49ZnVuY3Rpb24oTm4pe3RoaXM9PT1RZSYmRShsbixudCxObiksbGUodGhpcyxGKSYmbGUodGhpc1tGXSxibikmJih0aGlzW0ZdW2JuXT0hMSksUnQodGhpcyxibixKKDEsTm4pKX07cmV0dXJuIFEmJm90JiZSdChRZSxibix7Y29uZmlndXJhYmxlOiEw''@;'; put 'put ''LHNldDpsbn0pLEN0KGJuLHBuKX0pW0NlXSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuIFBlKHRoaXMpLnRhZ30pLFRlKCRlLCJ3aXRob3V0U2V0dGVyIixmdW5jdGlvbihtbil7cmV0dXJuIEN0KHoobW4pLG1uKX0pLEllLmY9WWUsa2UuZj1jdCxTZS5mPU50LEFlLmY9QXQsZmUuZj1k''@;'; put 'put ''ZS5mPWp0LHZlLmY9SnQsdGUuZj1mdW5jdGlvbihtbil7cmV0dXJuIEN0KG5lKG1uKSxtbil9LFEmJih2dChndCwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFBlKHRoaXMpLmRlc2NyaXB0aW9ufX0pLFV8fFRlKFFlLCJwcm9wZXJ0eUlzRW51''@;'; put 'put ''bWVyYWJsZSIsWWUse3Vuc2FmZTohMH0pKSksZ2Uoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCx3cmFwOiEwLGZvcmNlZDohWixzaGFtOiFafSx7U3ltYm9sOiRlfSksUyhhZShxZSksZnVuY3Rpb24obW4pe3gobW4pfSksZ2Uoe3RhcmdldDp5ZSxzdGF0OiEwLGZvcmNlZDohWn0se3VzZVNl''@;'; put 'put ''dHRlcjpmdW5jdGlvbigpe290PSEwfSx1c2VTaW1wbGU6ZnVuY3Rpb24oKXtvdD0hMX19KSxnZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFaLHNoYW06IVF9LHtjcmVhdGU6ZnVuY3Rpb24ocG4sYm4pe3JldHVybiB2b2lkIDA9PT1ibj9zZShwbik6TnQoc2UocG4pLGJuKX0s''@;'; put 'put ''ZGVmaW5lUHJvcGVydHk6Y3QsZGVmaW5lUHJvcGVydGllczpOdCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6QXR9KSxnZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFafSx7Z2V0T3duUHJvcGVydHlOYW1lczpqdH0pLFAoKSxWKCRlLHllKSxPW0ZdPSEwfSw4NjQyNzooWGUs''@;'; put 'put ''SmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIGdlPUwoODU2NDgpLEI9TCg4NTYyNCksRT1MKDcwNzA1KSxNZT1MKDY2MTMpLFU9TCg0ODgxMSksUT1MKDEyMDE0KSxaPUwoMzc0NzQpLGllPUwoOTIxKSxsZT1MKDUxMTgzKS5mLFk9TCg3NzU0OCksVz1FLlN5bWJvbCxOPVcmJlcucHJvdG90eXBl''@;'; put 'put ''O2lmKEImJlEoVykmJighKCJkZXNjcmlwdGlvbiJpbiBOKXx8dm9pZCAwIT09VygpLmRlc2NyaXB0aW9uKSl7dmFyIGVlPXt9LHE9ZnVuY3Rpb24oKXt2YXIga2U9YXJndW1lbnRzLmxlbmd0aDwxfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/dm9pZCAwOmllKGFyZ3VtZW50c1swXSksU2U9WihO''@;'; put 'put ''LHRoaXMpP25ldyBXKGtlKTp2b2lkIDA9PT1rZT9XKCk6VyhrZSk7cmV0dXJuIiI9PT1rZSYmKGVlW1NlXT0hMCksU2V9O1kocSxXKSxxLnByb3RvdHlwZT1OLE4uY29uc3RydWN0b3I9cTt2YXIgSj0iU3ltYm9sKHRlc3QpIj09U3RyaW5nKFcoInRlc3QiKSksc2U9TWUoTi52YWx1ZU9mKSxh''@;'; put 'put ''ZT1NZShOLnRvU3RyaW5nKSxmZT0vXlN5bWJvbFwoKC4qKVwpW14pXSskLyxkZT1NZSgiIi5yZXBsYWNlKSx2ZT1NZSgiIi5zbGljZSk7bGUoTiwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIGtlPXNlKHRoaXMpO2lmKFUoZWUsa2UpKXJldHVybiIi''@;'; put 'put ''O3ZhciBTZT1hZShrZSksSWU9Sj92ZShTZSw3LC0xKTpkZShTZSxmZSwiJDEiKTtyZXR1cm4iIj09PUllP3ZvaWQgMDpJZX19KSxnZSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDohMH0se1N5bWJvbDpxfSl9fSw3ODc5MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1M''@;'; put 'put ''KDQ2NjkzKSxFPUwoNDg4MTEpLE1lPUwoOTIxKSxVPUwoNjg4MzUpLFE9TCg3MTgyOSksWj1VKCJzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5IiksaWU9VSgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpO2dlKHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IVF9LHtmb3I6ZnVu''@;'; put 'put ''Y3Rpb24obGUpe3ZhciBZPU1lKGxlKTtpZihFKFosWSkpcmV0dXJuIFpbWV07dmFyIFc9QigiU3ltYm9sIikoWSk7cmV0dXJuIFpbWV09VyxpZVtXXT1ZLFd9fSl9LDMzNTgzOihYZSxKZSxMKT0+e0woMTAwNzIpKCJpdGVyYXRvciIpfSwyNjU3OihYZSxKZSxMKT0+e0woNDQ2NDYpLEwoNzg3''@;'; put 'put ''OTApLEwoMjg1NDApLEwoMTMwMDYpLEwoNjMxOTgpfSwyODU0MDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDQ4ODExKSxFPUwoNjk3NSksTWU9TCg5NDY3NiksVT1MKDY4ODM1KSxRPUwoNzE4MjkpLFo9VSgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpO2dlKHt0YXJnZXQ6''@;'; put 'put ''IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IVF9LHtrZXlGb3I6ZnVuY3Rpb24obGUpe2lmKCFFKGxlKSl0aHJvdyBUeXBlRXJyb3IoTWUobGUpKyIgaXMgbm90IGEgc3ltYm9sIik7aWYoQihaLGxlKSlyZXR1cm4gWltsZV19fSl9LDE5MzA4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''TixnZT1MKDcwNzA1KSxCPUwoNjYxMyksRT1MKDc0MDY5KSxNZT1MKDcxODMyKSxVPUwoNDY4NTcpLFE9TCg0Mjk2OSksWj1MKDcxNDk2KSxpZT1MKDU1MjE4KSxsZT1MKDcyNykuZW5mb3JjZSxZPUwoMTc1NDIpLFc9IWdlLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIGdlLGVl''@;'; put 'put ''PWZ1bmN0aW9uKHZlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdmUodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0scT1VKCJXZWFrTWFwIixlZSxRKTtpZihZJiZXKXtOPVEuZ2V0Q29uc3RydWN0b3IoZWUsIldlYWtNYXAiLCEwKSxNZS5lbmFibGUoKTt2''@;'; put 'put ''YXIgSj1xLnByb3RvdHlwZSxzZT1CKEouZGVsZXRlKSxhZT1CKEouaGFzKSxmZT1CKEouZ2V0KSxkZT1CKEouc2V0KTtFKEose2RlbGV0ZTpmdW5jdGlvbih2ZSl7aWYoWih2ZSkmJiFpZSh2ZSkpe3ZhciBBZT1sZSh0aGlzKTtyZXR1cm4gQWUuZnJvemVufHwoQWUuZnJvemVuPW5ldyBOKSxz''@;'; put 'put ''ZSh0aGlzLHZlKXx8QWUuZnJvemVuLmRlbGV0ZSh2ZSl9cmV0dXJuIHNlKHRoaXMsdmUpfSxoYXM6ZnVuY3Rpb24oQWUpe2lmKFooQWUpJiYhaWUoQWUpKXt2YXIga2U9bGUodGhpcyk7cmV0dXJuIGtlLmZyb3plbnx8KGtlLmZyb3plbj1uZXcgTiksYWUodGhpcyxBZSl8fGtlLmZyb3plbi5o''@;'; put 'put ''YXMoQWUpfXJldHVybiBhZSh0aGlzLEFlKX0sZ2V0OmZ1bmN0aW9uKEFlKXtpZihaKEFlKSYmIWllKEFlKSl7dmFyIGtlPWxlKHRoaXMpO3JldHVybiBrZS5mcm96ZW58fChrZS5mcm96ZW49bmV3IE4pLGFlKHRoaXMsQWUpP2ZlKHRoaXMsQWUpOmtlLmZyb3plbi5nZXQoQWUpfXJldHVybiBm''@;'; put 'put ''ZSh0aGlzLEFlKX0sc2V0OmZ1bmN0aW9uKEFlLGtlKXtpZihaKEFlKSYmIWllKEFlKSl7dmFyIFNlPWxlKHRoaXMpO1NlLmZyb3plbnx8KFNlLmZyb3plbj1uZXcgTiksYWUodGhpcyxBZSk/ZGUodGhpcyxBZSxrZSk6U2UuZnJvemVuLnNldChBZSxrZSl9ZWxzZSBkZSh0aGlzLEFlLGtlKTty''@;'; put 'put ''ZXR1cm4gdGhpc319KX19LDY1MTI1OihYZSxKZSxMKT0+e0woMTkzMDgpfSw5ODM3MzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCg0Njg1NykoIldlYWtTZXQiLGZ1bmN0aW9uKEUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNb''@;'; put 'put ''MF06dm9pZCAwKX19LEwoNDI5NjkpKX0sMzgxODM6KFhlLEplLEwpPT57TCg5ODM3Myl9LDIyNDk2OihYZSxKZSxMKT0+e3ZhciBnZT1MKDg1NjQ4KSxCPUwoNzA3MDUpLEU9TCg1NTI2MSkuY2xlYXI7Z2Uoe2dsb2JhbDohMCxiaW5kOiEwLGVudW1lcmFibGU6ITAsZm9yY2VkOkIuY2xlYXJJ''@;'; put 'put ''bW1lZGlhdGUhPT1FfSx7Y2xlYXJJbW1lZGlhdGU6RX0pfSw1ODU5NDooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3MDcwNSksQj1MKDE5MjMxKSxFPUwoMjk5MTApLE1lPUwoMzczMTkpLFU9TCgxNjAxNyksUT1mdW5jdGlvbihpZSl7aWYoaWUmJmllLmZvckVhY2ghPT1NZSl0cnl7VShpZSwiZm9y''@;'; put 'put ''RWFjaCIsTWUpfWNhdGNoKGxlKXtpZS5mb3JFYWNoPU1lfX07Zm9yKHZhciBaIGluIEIpQltaXSYmUShnZVtaXSYmZ2VbWl0ucHJvdG90eXBlKTtRKEUpfSw1ODI3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg3MDcwNSksQj1MKDE5MjMxKSxFPUwoMjk5MTApLE1lPUwoNTc5NDMpLFU9TCgxNjAx''@;'; put 'put ''NyksUT1MKDI1NDYpLFo9USgiaXRlcmF0b3IiKSxpZT1RKCJ0b1N0cmluZ1RhZyIpLGxlPU1lLnZhbHVlcyxZPWZ1bmN0aW9uKE4sZWUpe2lmKE4pe2lmKE5bWl0hPT1sZSl0cnl7VShOLFosbGUpfWNhdGNoKEope05bWl09bGV9aWYoTltpZV18fFUoTixpZSxlZSksQltlZV0pZm9yKHZhciBx''@;'; put 'put ''IGluIE1lKWlmKE5bcV0hPT1NZVtxXSl0cnl7VShOLHEsTWVbcV0pfWNhdGNoKEope05bcV09TWVbcV19fX07Zm9yKHZhciBXIGluIEIpWShnZVtXXSYmZ2VbV10ucHJvdG90eXBlLFcpO1koRSwiRE9NVG9rZW5MaXN0Iil9LDkxOTQ1OihYZSxKZSxMKT0+e0woMjI0OTYpLEwoMzQ0NDMpfSwz''@;'; put 'put ''NDQ0MzooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDcwNzA1KSxFPUwoNTUyNjEpLnNldDtnZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZW51bWVyYWJsZTohMCxmb3JjZWQ6Qi5zZXRJbW1lZGlhdGUhPT1FfSx7c2V0SW1tZWRpYXRlOkV9KX0sNTY2NzA6KFhlLEplLEwpPT57dmFyIGdl''@;'; put 'put ''PUwoODU2NDgpLEI9TCg3MDcwNSksRT1MKDk1ODk1KS5zZXRJbnRlcnZhbDtnZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZm9yY2VkOkIuc2V0SW50ZXJ2YWwhPT1FfSx7c2V0SW50ZXJ2YWw6RX0pfSw1OTE3MjooWGUsSmUsTCk9Pnt2YXIgZ2U9TCg4NTY0OCksQj1MKDcwNzA1KSxFPUwoOTU4OTUp''@;'; put 'put ''LnNldFRpbWVvdXQ7Z2Uoe2dsb2JhbDohMCxiaW5kOiEwLGZvcmNlZDpCLnNldFRpbWVvdXQhPT1FfSx7c2V0VGltZW91dDpFfSl9LDU4MzI0OihYZSxKZSxMKT0+e0woNTY2NzApLEwoNTkxNzIpfSw0NjcwMDooWGUsSmUsTCk9Pnt2YXIgZ2U9eyIuL2FmIjoyNzA4OCwiLi9hZi5qcyI6Mjcw''@;'; put 'put ''ODgsIi4vYXIiOjE3MDM4LCIuL2FyLWR6Ijo1MjUwMiwiLi9hci1kei5qcyI6NTI1MDIsIi4vYXIta3ciOjMwMTI4LCIuL2FyLWt3LmpzIjozMDEyOCwiLi9hci1seSI6ODQ1MTksIi4vYXItbHkuanMiOjg0NTE5LCIuL2FyLW1hIjo2NTQ0MywiLi9hci1tYS5qcyI6NjU0NDMsIi4vYXItc2Ei''@;'; put 'put ''OjE3NjQyLCIuL2FyLXNhLmpzIjoxNzY0MiwiLi9hci10biI6Njg1OTIsIi4vYXItdG4uanMiOjY4NTkyLCIuL2FyLmpzIjoxNzAzOCwiLi9heiI6NTEyMTMsIi4vYXouanMiOjUxMjEzLCIuL2JlIjo2OTE5MSwiLi9iZS5qcyI6NjkxOTEsIi4vYmciOjkwMzIyLCIuL2JnLmpzIjo5MDMyMiwi''@;'; put 'put ''Li9ibSI6MjgwNDIsIi4vYm0uanMiOjI4MDQyLCIuL2JuIjo1OTYyMCwiLi9ibi1iZCI6NjU5MDMsIi4vYm4tYmQuanMiOjY1OTAzLCIuL2JuLmpzIjo1OTYyMCwiLi9ibyI6Njk2NDUsIi4vYm8uanMiOjY5NjQ1LCIuL2JyIjo0NTAyMCwiLi9ici5qcyI6NDUwMjAsIi4vYnMiOjY0NzkyLCIu''@;'; put 'put ''L2JzLmpzIjo2NDc5MiwiLi9jYSI6NDc5ODAsIi4vY2EuanMiOjQ3OTgwLCIuL2NzIjo0NzMyMiwiLi9jcy5qcyI6NDczMjIsIi4vY3YiOjkwMzY1LCIuL2N2LmpzIjo5MDM2NSwiLi9jeSI6MzIwOTIsIi4vY3kuanMiOjMyMDkyLCIuL2RhIjo3NzM4NywiLi9kYS5qcyI6NzczODcsIi4vZGUi''@;'; put 'put ''OjU0MzA3LCIuL2RlLWF0IjoyOTQ1OSwiLi9kZS1hdC5qcyI6Mjk0NTksIi4vZGUtY2giOjY3MjQzLCIuL2RlLWNoLmpzIjo2NzI0MywiLi9kZS5qcyI6NTQzMDcsIi4vZHYiOjM5NjU5LCIuL2R2LmpzIjozOTY1OSwiLi9lbCI6MzQ2MCwiLi9lbC5qcyI6MzQ2MCwiLi9lbi1hdSI6OTQzNjks''@;'; put 'put ''Ii4vZW4tYXUuanMiOjk0MzY5LCIuL2VuLWNhIjo2MDUzMCwiLi9lbi1jYS5qcyI6NjA1MzAsIi4vZW4tZ2IiOjk5OTgsIi4vZW4tZ2IuanMiOjk5OTgsIi4vZW4taWUiOjEzMzkxLCIuL2VuLWllLmpzIjoxMzM5MSwiLi9lbi1pbCI6NzU0MTQsIi4vZW4taWwuanMiOjc1NDE0LCIuL2VuLWlu''@;'; put 'put ''IjoxOTYxNSwiLi9lbi1pbi5qcyI6MTk2MTUsIi4vZW4tbnoiOjIxMjQ4LCIuL2VuLW56LmpzIjoyMTI0OCwiLi9lbi1zZyI6MTM3NjcsIi4vZW4tc2cuanMiOjEzNzY3LCIuL2VvIjo4NDUzMCwiLi9lby5qcyI6ODQ1MzAsIi4vZXMiOjg2ODY2LCIuL2VzLWRvIjoxODk0NCwiLi9lcy1kby5q''@;'; put 'put ''cyI6MTg5NDQsIi4vZXMtbXgiOjI5MTE2LCIuL2VzLW14LmpzIjoyOTExNiwiLi9lcy11cyI6ODM2MDksIi4vZXMtdXMuanMiOjgzNjA5LCIuL2VzLmpzIjo4Njg2NiwiLi9ldCI6OTY3MjUsIi4vZXQuanMiOjk2NzI1LCIuL2V1Ijo2NzkzMSwiLi9ldS5qcyI6Njc5MzEsIi4vZmEiOjU2NDE3''@;'; put 'put ''LCIuL2ZhLmpzIjo1NjQxNywiLi9maSI6MjA5NDQsIi4vZmkuanMiOjIwOTQ0LCIuL2ZpbCI6NjE3NjYsIi4vZmlsLmpzIjo2MTc2NiwiLi9mbyI6OTU4NjcsIi4vZm8uanMiOjk1ODY3LCIuL2ZyIjoxNjM2LCIuL2ZyLWNhIjoxNjg0OCwiLi9mci1jYS5qcyI6MTY4NDgsIi4vZnItY2giOjc3''@;'; put 'put ''NzczLCIuL2ZyLWNoLmpzIjo3Nzc3MywiLi9mci5qcyI6MTYzNiwiLi9meSI6MTQ5NDAsIi4vZnkuanMiOjE0OTQwLCIuL2dhIjo5MTQwMiwiLi9nYS5qcyI6OTE0MDIsIi4vZ2QiOjQ2OTI0LCIuL2dkLmpzIjo0NjkyNCwiLi9nbCI6MTYzOTgsIi4vZ2wuanMiOjE2Mzk4LCIuL2dvbS1kZXZh''@;'; put 'put ''Ijo3MjQ1NywiLi9nb20tZGV2YS5qcyI6NzI0NTcsIi4vZ29tLWxhdG4iOjUyNTQ1LCIuL2dvbS1sYXRuLmpzIjo1MjU0NSwiLi9ndSI6NDI2NDEsIi4vZ3UuanMiOjQyNjQxLCIuL2hlIjo3NTM2LCIuL2hlLmpzIjo3NTM2LCIuL2hpIjo5NjMzNSwiLi9oaS5qcyI6OTYzMzUsIi4vaHIiOjc0''@;'; put 'put ''NTgsIi4vaHIuanMiOjc0NTgsIi4vaHUiOjU2NTQwLCIuL2h1LmpzIjo1NjU0MCwiLi9oeS1hbSI6NjUyODMsIi4vaHktYW0uanMiOjY1MjgzLCIuL2lkIjo5ODc4MCwiLi9pZC5qcyI6OTg3ODAsIi4vaXMiOjE0MjA1LCIuL2lzLmpzIjoxNDIwNSwiLi9pdCI6MzQyMTEsIi4vaXQtY2giOjI5''@;'; put 'put ''OTg1LCIuL2l0LWNoLmpzIjoyOTk4NSwiLi9pdC5qcyI6MzQyMTEsIi4vamEiOjMxMDAzLCIuL2phLmpzIjozMTAwMywiLi9qdiI6NjA0MjAsIi4vanYuanMiOjYwNDIwLCIuL2thIjo0MDg1MSwiLi9rYS5qcyI6NDA4NTEsIi4va2siOjE2MDc0LCIuL2trLmpzIjoxNjA3NCwiLi9rbSI6NTMz''@;'; put 'put ''NDMsIi4va20uanMiOjUzMzQzLCIuL2tuIjo0NDc5OSwiLi9rbi5qcyI6NDQ3OTksIi4va28iOjEzNTQ5LCIuL2tvLmpzIjoxMzU0OSwiLi9rdSI6OTEwMzcsIi4va3UuanMiOjkxMDM3LCIuL2t5Ijo5MzEyNSwiLi9reS5qcyI6OTMxMjUsIi4vbGIiOjY5NTg2LCIuL2xiLmpzIjo2OTU4Niwi''@;'; put 'put ''Li9sbyI6MzIzNDksIi4vbG8uanMiOjMyMzQ5LCIuL2x0Ijo5MjQwMCwiLi9sdC5qcyI6OTI0MDAsIi4vbHYiOjM5OTkxLCIuL2x2LmpzIjozOTk5MSwiLi9tZSI6Mjg0NzcsIi4vbWUuanMiOjI4NDc3LCIuL21pIjo1NTExOCwiLi9taS5qcyI6NTUxMTgsIi4vbWsiOjE1OTQzLCIuL21rLmpz''@;'; put 'put ''IjoxNTk0MywiLi9tbCI6MTM4NDksIi4vbWwuanMiOjEzODQ5LCIuL21uIjozMTk3NywiLi9tbi5qcyI6MzE5NzcsIi4vbXIiOjY2MTg0LCIuL21yLmpzIjo2NjE4NCwiLi9tcyI6NzA0ODUsIi4vbXMtbXkiOjY0NTI0LCIuL21zLW15LmpzIjo2NDUyNCwiLi9tcy5qcyI6NzA0ODUsIi4vbXQi''@;'; put 'put ''OjM2NjgxLCIuL210LmpzIjozNjY4MSwiLi9teSI6NTIwMjQsIi4vbXkuanMiOjUyMDI0LCIuL25iIjo0MjY4OCwiLi9uYi5qcyI6NDI2ODgsIi4vbmUiOjY4OTE0LCIuL25lLmpzIjo2ODkxNCwiLi9ubCI6MTE3NTgsIi4vbmwtYmUiOjUyMjcyLCIuL25sLWJlLmpzIjo1MjI3MiwiLi9ubC5q''@;'; put 'put ''cyI6MTE3NTgsIi4vbm4iOjQxNTEwLCIuL25uLmpzIjo0MTUxMCwiLi9vYy1sbmMiOjUyNzk3LCIuL29jLWxuYy5qcyI6NTI3OTcsIi4vcGEtaW4iOjM3OTQ0LCIuL3BhLWluLmpzIjozNzk0NCwiLi9wbCI6MTYwNSwiLi9wbC5qcyI6MTYwNSwiLi9wdCI6NTQyMjUsIi4vcHQtYnIiOjczODQw''@;'; put 'put ''LCIuL3B0LWJyLmpzIjo3Mzg0MCwiLi9wdC5qcyI6NTQyMjUsIi4vcm8iOjQ1MTI4LCIuL3JvLmpzIjo0NTEyOCwiLi9ydSI6MzUxMjcsIi4vcnUuanMiOjM1MTI3LCIuL3NkIjozMjUyNSwiLi9zZC5qcyI6MzI1MjUsIi4vc2UiOjU5ODkzLCIuL3NlLmpzIjo1OTg5MywiLi9zaSI6MzMxMjMs''@;'; put 'put ''Ii4vc2kuanMiOjMzMTIzLCIuL3NrIjo1OTYzNSwiLi9zay5qcyI6NTk2MzUsIi4vc2wiOjc4MTA2LCIuL3NsLmpzIjo3ODEwNiwiLi9zcSI6ODg3OTksIi4vc3EuanMiOjg4Nzk5LCIuL3NyIjo5Nzk0OSwiLi9zci1jeXJsIjo1Mjg3MiwiLi9zci1jeXJsLmpzIjo1Mjg3MiwiLi9zci5qcyI6''@;'; put 'put ''OTc5NDksIi4vc3MiOjg2MTY3LCIuL3NzLmpzIjo4NjE2NywiLi9zdiI6Mzk3MTMsIi4vc3YuanMiOjM5NzEzLCIuL3N3Ijo0MTk4MiwiLi9zdy5qcyI6NDE5ODIsIi4vdGEiOjIyNzMyLCIuL3RhLmpzIjoyMjczMiwiLi90ZSI6NDM2MzYsIi4vdGUuanMiOjQzNjM2LCIuL3RldCI6MjExNSwi''@;'; put 'put ''Li90ZXQuanMiOjIxMTUsIi4vdGciOjY5ODAxLCIuL3RnLmpzIjo2OTgwMSwiLi90aCI6Mjg2OCwiLi90aC5qcyI6Mjg2OCwiLi90ayI6MzEzMTAsIi4vdGsuanMiOjMxMzEwLCIuL3RsLXBoIjoyMjM2MCwiLi90bC1waC5qcyI6MjIzNjAsIi4vdGxoIjo2NjY0NSwiLi90bGguanMiOjY2NjQ1''@;'; put 'put ''LCIuL3RyIjo5ODM3NCwiLi90ci5qcyI6OTgzNzQsIi4vdHpsIjoyNTYsIi4vdHpsLmpzIjoyNTYsIi4vdHptIjo2MTU5NSwiLi90em0tbGF0biI6NjE2MzEsIi4vdHptLWxhdG4uanMiOjYxNjMxLCIuL3R6bS5qcyI6NjE1OTUsIi4vdWctY24iOjYwNTAsIi4vdWctY24uanMiOjYwNTAsIi4v''@;'; put 'put ''dWsiOjY1NjEwLCIuL3VrLmpzIjo2NTYxMCwiLi91ciI6ODYwNzcsIi4vdXIuanMiOjg2MDc3LCIuL3V6IjoyMjg2MiwiLi91ei1sYXRuIjoxMjIwNywiLi91ei1sYXRuLmpzIjoxMjIwNywiLi91ei5qcyI6MjI4NjIsIi4vdmkiOjQ4MDkzLCIuL3ZpLmpzIjo0ODA5MywiLi94LXBzZXVkbyI6''@;'; put 'put ''MjU1OTAsIi4veC1wc2V1ZG8uanMiOjI1NTkwLCIuL3lvIjo5MDU4LCIuL3lvLmpzIjo5MDU4LCIuL3poLWNuIjo3NzkwOCwiLi96aC1jbi5qcyI6Nzc5MDgsIi4vemgtaGsiOjg4NjcsIi4vemgtaGsuanMiOjg4NjcsIi4vemgtbW8iOjMxMTMzLCIuL3poLW1vLmpzIjozMTEzMywiLi96aC10''@;'; put 'put ''dyI6ODMyOTEsIi4vemgtdHcuanMiOjgzMjkxfTtmdW5jdGlvbiBCKE1lKXt2YXIgVT1FKE1lKTtyZXR1cm4gTChVKX1mdW5jdGlvbiBFKE1lKXtpZighTC5vKGdlLE1lKSl7dmFyIFU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrTWUrIiciKTt0aHJvdyBVLmNvZGU9Ik1PRFVM''@;'; put 'put ''RV9OT1RfRk9VTkQiLFV9cmV0dXJuIGdlW01lXX1CLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoZ2UpfSxCLnJlc29sdmU9RSxYZS5leHBvcnRzPUIsQi5pZD00NjcwMH0sNzg3NzM6KCk9Pnt9LDgwOTUwOigpPT57fSw0NjYwMTooKT0+e30sODYyMzooKT0+e30sNzc0ODoo''@;'; put 'put ''KT0+e30sODU1Njg6KCk9Pnt9LDE5NTI3OigpPT57fSw2OTMzMTooKT0+e30sNTY2MTk6KCk9Pnt9LDc3MTA4OigpPT57fSw1MjM2MTooKT0+e30sOTQ2MTY6KCk9Pnt9LDM1MTU5OigpPT57fSw3NTcwMTooKT0+e30sMTcxNTY6WGU9PntmdW5jdGlvbiBKZShnZSxCLEUsTWUsVSxRLFope3Ry''@;'; put 'put ''eXt2YXIgaWU9Z2VbUV0oWiksbGU9aWUudmFsdWV9Y2F0Y2goWSl7cmV0dXJuIHZvaWQgRShZKX1pZS5kb25lP0IobGUpOlByb21pc2UucmVzb2x2ZShsZSkudGhlbihNZSxVKX1YZS5leHBvcnRzPWZ1bmN0aW9uIEwoZ2Upe3JldHVybiBmdW5jdGlvbigpe3ZhciBCPXRoaXMsRT1hcmd1bWVu''@;'; put 'put ''dHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKE1lLFUpe3ZhciBRPWdlLmFwcGx5KEIsRSk7ZnVuY3Rpb24gWihsZSl7SmUoUSxNZSxVLFosaWUsIm5leHQiLGxlKX1mdW5jdGlvbiBpZShsZSl7SmUoUSxNZSxVLFosaWUsInRocm93IixsZSl9Wih2b2lkIDApfSl9fSxYZS5leHBvcnRz''@;'; put 'put ''Ll9fZXNNb2R1bGU9ITAsWGUuZXhwb3J0cy5kZWZhdWx0PVhlLmV4cG9ydHN9LDQ0OTQ2OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhZXMtMTI4LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxv''@;'; put 'put ''Y2sifSwiYWVzLTE5Mi1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MCwibW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTI4''@;'; put 'put ''LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xOTItY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTI1Ni1jYmMiOnsiY2lw''@;'; put 'put ''aGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxMjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxOTIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIs''@;'; put 'put ''Iml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMyNTYiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTI4LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoi''@;'; put 'put ''Q0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlw''@;'; put 'put ''ZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJz''@;'; put 'put ''dHJlYW0ifSwiYWVzLTI1Ni1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFt''@;'; put 'put ''In0sImFlcy0xOTItY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJh''@;'; put 'put ''ZXMtMTI4LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LW9m''@;'; put 'put ''YiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWN0ciI6eyJjaXBo''@;'; put 'put ''ZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWdjbSI6eyJjaXBoZXIiOiJBRVMi''@;'; put 'put ''LCJrZXkiOjEyOCwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTE5Mi1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn0sImFlcy0yNTYtZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJp''@;'; put 'put ''diI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9fScpfSw3NTIwNzpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ3sic2hhMjI0V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IjMwMmQzMDBkMDYwOTYwODY0''@;'; put 'put ''ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sIlJTQS1TSEEyMjQiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sInNoYTI1NldpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNo''@;'; put 'put ''Ijoic2hhMjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCJ9LCJSU0EtU0hBMjU2Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCJ9LCJzaGEzODRXaXRo''@;'; put 'put ''UlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAifSwiUlNBLVNIQTM4NCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiMzA0MTMwMGQwNjA5NjA4NjQ4''@;'; put 'put ''MDE2NTAzMDQwMjAyMDUwMDA0MzAifSwic2hhNTEyV2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEE1MTIiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2gi''@;'; put 'put ''OiJzaGE1MTIiLCJpZCI6IjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEExIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0In0sImVjZHNhLXdpdGgtU0hBMSI6eyJzaWduIjoiZWNk''@;'; put 'put ''c2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sInNoYTI1NiI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwic2hhMjI0Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJzaGEzODQiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTM4''@;'; put 'put ''NCIsImlkIjoiIn0sInNoYTUxMiI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVNIQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EtU0hBMSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EiOnsi''@;'; put 'put ''c2lnbiI6ImRzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwiRFNBLVNIQTIyNCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTI1NiI6eyJz''@;'; put 'put ''aWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1TSEEyNTYiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEzODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJEU0EtU0hBMzg0Ijp7InNpZ24i''@;'; put 'put ''OiJkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVNIQTUxMiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiIn0sIkRTQS1SSVBFTUQxNjAiOnsic2lnbiI6''@;'; put 'put ''ImRzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IiJ9LCJyaXBlbWQxNjBXaXRoUlNBIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTQifSwiUlNBLVJJUEVNRDE2MCI6eyJzaWduIjoicnNhIiwiaGFzaCI6InJtZDE2MCIs''@;'; put 'put ''ImlkIjoiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0In0sIm1kNVdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifSwiUlNBLU1ENSI6eyJzaWduIjoicnNhIiwiaGFzaCI6''@;'; put 'put ''Im1kNSIsImlkIjoiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwIn19Jyl9LDEzMDg6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjEuMy4xMzIuMC4xMCI6InNlY3AyNTZrMSIsIjEuMy4xMzIuMC4zMyI6InAyMjQiLCIxLjIuODQwLjEwMDQ1''@;'; put 'put ''LjMuMS4xIjoicDE5MiIsIjEuMi44NDAuMTAwNDUuMy4xLjciOiJwMjU2IiwiMS4zLjEzMi4wLjM0IjoicDM4NCIsIjEuMy4xMzIuMC4zNSI6InA1MjEifScpfSwyOTc5OTpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ3sibW9kcDEiOnsiZ2VuIjoiMDIiLCJwcmlt''@;'; put 'put ''ZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZm''@;'; put 'put ''NDRjNDJlOWE2M2EzNjIwZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMiI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5''@;'; put 'put ''YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwNSI6''@;'; put 'put ''eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1''@;'; put 'put ''ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJm''@;'; put 'put ''MzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2EyMzczMjdmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNCI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4''@;'; put 'put ''YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFm''@;'; put 'put ''ZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5''@;'; put 'put ''ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFjYWE2OGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE1Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3''@;'; put 'put ''ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2''@;'; put 'put ''NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3''@;'; put 'put ''MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3''@;'; put 'put ''YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE2Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIz''@;'; put 'put ''NGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4''@;'; put 'put ''NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhj''@;'; put 'put ''YTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2Jh''@;'; put 'put ''NjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcw''@;'; put 'put ''OTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0''@;'; put 'put ''MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwNjMxOTlmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmZmIn0sIm1vZHAxNyI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0''@;'; put 'put ''ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVk''@;'; put 'put ''MjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5''@;'; put 'put ''NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZi''@;'; put 'put ''ZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMy''@;'; put 'put ''NzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1''@;'; put 'put ''YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkx''@;'; put 'put ''OGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3''@;'; put 'put ''Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMy''@;'; put 'put ''ZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRjYzQwMjRmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxOCI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMx''@;'; put 'put ''Y2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFl''@;'; put 'put ''OWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0''@;'; put 'put ''NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRi''@;'; put 'put ''ZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIw''@;'; put 'put ''OGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5''@;'; put 'put ''NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAy''@;'; put 'put ''NjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJm''@;'; put 'put ''NTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1''@;'; put 'put ''ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEy''@;'; put 'put ''ZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2Mw''@;'; put 'put ''NzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFi''@;'; put 'put ''NDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5''@;'; put 'put ''OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmYifX0nKX0sMTg1OTc6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz17aTg6IjYuNS40In19LDYzNDgwOlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siODc0MCIsIlx1NDNmMFx1NGMzMlx1NDYwM1x1NDVhNlx1NDU3''@;'; put 'put ''OFx1ezI3MjY3fVx1NGQ3N1x1NDViM1x1ezI3Y2IxfVx1NGNlMlx1ezI3Y2M1fVx1M2I5NVx1NDczNlx1NDc0NFx1NGM0N1x1NGM0MFx1ezI0MmJmfVx1ezIzNjE3fVx1ezI3MzUyfVx1ezI2ZThifVx1ezI3MGQyfVx1NGM1N1x1ezJhMzUxfVx1NDc0Zlx1NDVkYVx1NGM4NVx1ezI3YzZjfVx1''@;'; put 'put ''NGQwN1x1NGFhNFx1NDZhMVx1ezI2YjIzfVx1NzIyNVx1ezI1YTU0fVx1ezIxYTYzfVx1ezIzZTA2fVx1ezIzZjYxfVx1NjY0ZFx1NTZmYiJdLFsiODc2NyIsIlx1N2Q5NVx1NTkxZFx1ezI4YmI5fVx1M2RmNFx1OTczNFx1ezI3YmVmfVx1NWJkYlx1ezIxZDVlfVx1NWFhNFx1MzYyNVx1ezI5''@;'; put 'put ''ZWIwfVx1NWFkMVx1NWJiN1x1NWNmY1x1Njc2ZVx1ODU5M1x1ezI5OTQ1fVx1NzQ2MVx1NzQ5ZFx1Mzg3NVx1ezIxZDUzfVx1ezIzNjllfVx1ezI2MDIxfVx1M2VlYyJdLFsiODdhMSIsIlx1ezI1OGRlfVx1M2FmNVx1N2FmY1x1OWY5N1x1ezI0MTYxfVx1ezI4OTBkfVx1ezIzMWVhfVx1ezIw''@;'; put 'put ''YThhfVx1ezIzMjVlfVx1NDMwYVx1ODQ4NFx1OWY5Nlx1OTQyZlx1NDkzMFx1ODYxM1x1NTg5Nlx1OTc0YVx1OTIxOFx1NzlkMFx1N2EzMlx1NjY2MFx1NmEyOVx1ODg5ZFx1NzQ0Y1x1N2JjNVx1Njc4Mlx1N2EyY1x1NTI0Zlx1OTA0Nlx1MzRlNlx1NzNjNFx1ezI1ZGI5fVx1NzRjNlx1OWZj''@;'; put 'put ''N1x1NTdiM1x1NDkyZlx1NTQ0Y1x1NDEzMVx1ezIzNjhlfVx1NTgxOFx1N2E3Mlx1ezI3YjY1fVx1OGI4Zlx1NDZhZVx1ezI2ZTg4fVx1NDE4MVx1ezI1ZDk5fVx1N2JhZVx1ezIyNGJjfVx1OWZjOFx1ezIyNGMxfVx1ezIyNGM5fVx1ezIyNGNjfVx1OWZjOVx1ODUwNFx1ezIzNWJifVx1NDBi''@;'; put 'put ''NFx1OWZjYVx1NDRlMVx1ezJhZGZmfVx1NjJjMVx1NzA2ZVx1OWZjYiJdLFsiODg0MCIsIlx1MzFjMCIsNCwiXHV7MjAxMGN9XHUzMWM1XHV7MjAwZDF9XHV7MjAwY2R9XHUzMWM2XHUzMWM3XHV7MjAwY2J9XHV7MjFmZTh9XHUzMWM4XHV7MjAwY2F9XHUzMWM5XHUzMWNhXHUzMWNiXHUzMWNj''@;'; put 'put ''XHV7MjAxMGV9XHUzMWNkXHUzMWNlXHUwMTAwXHhjMVx1MDFjZFx4YzBcdTAxMTJceGM5XHUwMTFhXHhjOFx1MDE0Y1x4ZDNcdTAxZDFceGQyXHUwZmZmXHhjYVx1MDMwNFx1MWViZVx1MGZmZlx4Y2FcdTAzMGNcdTFlYzBceGNhXHUwMTAxXHhlMVx1MDFjZVx4ZTBcdTAyNTFcdTAxMTNceGU5''@;'; put 'put ''XHUwMTFiXHhlOFx1MDEyYlx4ZWRcdTAxZDBceGVjXHUwMTRkXHhmM1x1MDFkMlx4ZjJcdTAxNmJceGZhXHUwMWQ0XHhmOVx1MDFkNlx1MDFkOFx1MDFkYSJdLFsiODhhMSIsIlx1MDFkY1x4ZmNcdTBmZmZceGVhXHUwMzA0XHUxZWJmXHUwZmZmXHhlYVx1MDMwY1x1MWVjMVx4ZWFcdTAyNjFc''@;'; put 'put ''dTIzZGFcdTIzZGIiXSxbIjg5NDAiLCJcdXsyYTNhOX1cdXsyMTE0NX0iXSxbIjg5NDMiLCJcdTY1MGEiXSxbIjg5NDYiLCJcdTRlM2RcdTZlZGRcdTlkNGVcdTkxZGYiXSxbIjg5NGMiLCJcdXsyNzczNX1cdTY0OTFcdTRmMWFcdTRmMjhcdTRmYThcdTUxNTZcdTUxNzRcdTUxOWNcdTUxZTRc''@;'; put 'put ''dTUyYTFcdTUyYThcdTUzM2JcdTUzNGVcdTUzZDFcdTUzZDhcdTU2ZTJcdTU4ZjBcdTU5MDRcdTU5MDdcdTU5MzJcdTU5MzRcdTViNjZcdTViOWVcdTViOWZcdTVjOWFcdTVlODZcdTYwM2JcdTY1ODlcdTY3ZmVcdTY4MDRcdTY4NjVcdTZkNGVcdTcwYmNcdTc1MzVcdTdlYTRcdTdlYWNcdTdl''@;'; put 'put ''YmFcdTdlYzdcdTdlY2ZcdTdlZGZcdTdmMDZcdTdmMzdcdTgyN2FcdTgyY2ZcdTgzNmZcdTg5YzZcdThiYmVcdThiZTJcdThmNjZcdThmNjdcdThmNmUiXSxbIjg5YTEiLCJcdTc0MTFcdTdjZmNcdTdkY2RcdTY5NDZcdTdhYzlcdTUyMjciXSxbIjg5YWIiLCJcdTkxOGNcdTc4YjhcdTkxNWVc''@;'; put 'put ''dTgwYmMiXSxbIjg5YjAiLCJcdThkMGJcdTgwZjZcdXsyMDllN30iXSxbIjg5YjUiLCJcdTgwOWZcdTllYzdcdTRjY2RcdTlkYzlcdTllMGNcdTRjM2VcdXsyOWRmNn1cdXsyNzAwZX1cdTllMGFcdXsyYTEzM31cdTM1YzEiXSxbIjg5YzEiLCJcdTZlOWFcdTgyM2VcdTc1MTkiXSxbIjg5YzUi''@;'; put 'put ''LCJcdTQ5MTFcdTlhNmNcdTlhOGZcdTlmOTlcdTc5ODdcdXsyODQ2Y31cdXsyMWRjYX1cdXsyMDVkMH1cdXsyMmFlNn1cdTRlMjRcdTRlODFcdTRlODBcdTRlODdcdTRlYmZcdTRlZWJcdTRmMzdcdTM0NGNcdTRmYmRcdTNlNDhcdTUwMDNcdTUwODhcdTM0N2RcdTM0OTNcdTM0YTVcdTUxODZc''@;'; put 'put ''dTU5MDVcdTUxZGJcdTUxZmNcdTUyMDVcdTRlODlcdTUyNzlcdTUyOTBcdTUzMjdcdTM1YzdcdTUzYTlcdTM1NTFcdTUzYjBcdTM1NTNcdTUzYzJcdTU0MjNcdTM1NmRcdTM1NzJcdTM2ODFcdTU0OTNcdTU0YTNcdTU0YjRcdTU0YjlcdTU0ZDBcdTU0ZWZcdTU1MThcdTU1MjNcdTU1MjhcdTM1''@;'; put 'put ''OThcdTU1M2ZcdTM1YTVcdTM1YmZcdTU1ZDdcdTM1YzUiXSxbIjhhNDAiLCJcdXsyN2Q4NH1cdTU1MjUiXSxbIjhhNDMiLCJcdXsyMGM0Mn1cdXsyMGQxNX1cdXsyNTEyYn1cdTU1OTBcdXsyMmNjNn1cdTM5ZWNcdXsyMDM0MX1cdThlNDZcdXsyNGRiOH1cdXsyOTRlNX1cdTQwNTNcdXsyODBi''@;'; put 'put ''ZX1cdTc3N2FcdXsyMmMzOH1cdTNhMzRcdTQ3ZDVcdXsyODE1ZH1cdXsyNjlmMn1cdXsyNGRlYX1cdTY0ZGRcdXsyMGQ3Y31cdXsyMGZiNH1cdXsyMGNkNX1cdXsyMTBmNH1cdTY0OGRcdThlN2VcdXsyMGU5Nn1cdXsyMGMwYn1cdXsyMGY2NH1cdXsyMmNhOX1cdXsyODI1Nn1cdXsyNDRkM30i''@;'; put 'put ''XSxbIjhhNjQiLCJcdXsyMGQ0Nn1cdXsyOWE0ZH1cdXsyODBlOX1cdTQ3ZjRcdXsyNGVhN31cdXsyMmNjMn1cdTlhYjJcdTNhNjdcdXsyOTVmNH1cdTNmZWRcdTM1MDZcdXsyNTJjN31cdXsyOTdkNH1cdXsyNzhjOH1cdXsyMmQ0NH1cdTlkNmVcdTk4MTUiXSxbIjhhNzYiLCJcdTQzZDlcdXsy''@;'; put 'put ''NjBhNX1cdTY0YjRcdTU0ZTNcdXsyMmQ0Y31cdXsyMmJjYX1cdXsyMTA3N31cdTM5ZmJcdXsyMTA2Zn0iXSxbIjhhYTEiLCJcdXsyNjZkYX1cdXsyNjcxNn1cdXsyNzlhMH1cdTY0ZWFcdXsyNTA1Mn1cdXsyMGM0M31cdThlNjhcdXsyMjFhMX1cdXsyOGI0Y31cdXsyMDczMX0iXSxbIjhhYWMi''@;'; put 'put ''LCJcdTQ4MGJcdXsyMDFhOX1cdTNmZmFcdTU4NzNcdXsyMmQ4ZH0iXSxbIjhhYjIiLCJcdXsyNDVjOH1cdXsyMDRmY31cdXsyNjA5N31cdXsyMGY0Y31cdXsyMGQ5Nn1cdTU1NzlcdTQwYmJcdTQzYmEiXSxbIjhhYmIiLCJcdTRhYjRcdXsyMmE2Nn1cdXsyMTA5ZH1cdTgxYWFcdTk4ZjVcdXsy''@;'; put 'put ''MGQ5Y31cdTYzNzlcdTM5ZmVcdXsyMjc3NX1cdThkYzBcdTU2YTFcdTY0N2NcdTNlNDMiXSxbIjhhYzkiLCJcdXsyYTYwMX1cdXsyMGUwOX1cdXsyMmFjZn1cdXsyMmNjOX0iXSxbIjhhY2UiLCJcdXsyMTBjOH1cdXsyMzljMn1cdTM5OTJcdTNhMDZcdXsyODI5Yn1cdTM1NzhcdXsyNWU0OX1c''@;'; put 'put ''dXsyMjBjN31cdTU2NTJcdXsyMGYzMX1cdXsyMmNiMn1cdXsyOTcyMH1cdTM0YmNcdTZjM2RcdXsyNGUzYn0iXSxbIjhhZGYiLCJcdXsyNzU3NH1cdXsyMmU4Yn1cdXsyMjIwOH1cdXsyYTY1Yn1cdXsyOGNjZH1cdXsyMGU3YX1cdXsyMGMzNH1cdXsyNjgxY31cdTdmOTNcdXsyMTBjZn1cdXsy''@;'; put 'put ''MjgwM31cdXsyMjkzOX1cdTM1ZmJcdXsyNTFlM31cdXsyMGU4Y31cdXsyMGY4ZH1cdXsyMGVhYX1cdTNmOTNcdXsyMGYzMH1cdXsyMGQ0N31cdXsyMTE0Zn1cdXsyMGU0Y30iXSxbIjhhZjYiLCJcdXsyMGVhYn1cdXsyMGJhOX1cdXsyMGQ0OH1cdXsyMTBjMH1cdXsyMTEzZH1cdTNmZjlcdXsy''@;'; put 'put ''MjY5Nn1cdTY0MzJcdXsyMGZhZH0iXSxbIjhiNDAiLCJcdXsyMzNmNH1cdXsyNzYzOX1cdXsyMmJjZX1cdXsyMGQ3ZX1cdXsyMGQ3Zn1cdXsyMmM1MX1cdXsyMmM1NX1cdTNhMThcdXsyMGU5OH1cdXsyMTBjN31cdXsyMGYyZX1cdXsyYTYzMn1cdXsyNmI1MH1cdXsyOGNkMn1cdXsyOGQ5OX1c''@;'; put 'put ''dXsyOGNjYX1cdTk1YWFcdTU0Y2NcdTgyYzRcdTU1YjkiXSxbIjhiNTUiLCJcdXsyOWVjM31cdTljMjZcdTlhYjZcdXsyNzc1ZX1cdXsyMmRlZX1cdTcxNDBcdTgxNmRcdTgwZWNcdTVjMWNcdXsyNjU3Mn1cdTgxMzRcdTM3OTdcdTUzNWZcdXsyODBiZH1cdTkxYjZcdXsyMGVmYX1cdXsyMGUw''@;'; put 'put ''Zn1cdXsyMGU3N31cdXsyMGVmYn1cdTM1ZGRcdXsyNGRlYn1cdTM2MDlcdXsyMGNkNn1cdTU2YWZcdXsyMjdiNX1cdXsyMTBjOX1cdXsyMGUxMH1cdXsyMGU3OH1cdXsyMTA3OH1cdXsyMTE0OH1cdXsyODIwN31cdXsyMTQ1NX1cdXsyMGU3OX1cdXsyNGU1MH1cdXsyMmRhNH1cdTVhNTRcdXsy''@;'; put 'put ''MTAxZH1cdXsyMTAxZX1cdXsyMTBmNX1cdXsyMTBmNn1cdTU3OWNcdXsyMGUxMX0iXSxbIjhiYTEiLCJcdXsyNzY5NH1cdXsyODJjZH1cdXsyMGZiNX1cdXsyMGU3Yn1cdXsyNTE3ZX1cdTM3MDNcdXsyMGZiNn1cdXsyMTE4MH1cdXsyNTJkOH1cdXsyYTJiZH1cdXsyNDlkYX1cdXsyMTgzYX1c''@;'; put 'put ''dXsyNDE3N31cdXsyODI3Y31cdTU4OTlcdTUyNjhcdTM2MWFcdXsyNTczZH1cdTdiYjJcdTViNjhcdTQ4MDBcdTRiMmNcdTlmMjdcdTQ5ZTdcdTljMWZcdTliOGRcdXsyNWI3NH1cdXsyMzEzZH1cdTU1ZmJcdTM1ZjJcdTU2ODlcdTRlMjhcdTU5MDJcdXsyMWJjMX1cdXsyZjg3OH1cdTk3NTFc''@;'; put 'put ''dXsyMDA4Nn1cdTRlNWJcdTRlYmJcdTM1M2VcdTVjMjNcdTVmNTFcdTVmYzRcdTM4ZmFcdTYyNGNcdTY1MzVcdTZiN2FcdTZjMzVcdTZjM2FcdTcwNmNcdTcyMmJcdTRlMmNcdTcyYWRcdXsyNDhlOX1cdTdmNTJcdTc5M2JcdTdjZjlcdTdmNTNcdXsyNjI2YX1cdTM0YzEiXSxbIjhiZGUiLCJc''@;'; put 'put ''dXsyNjM0Yn1cdTgwMDJcdTgwODBcdXsyNjYxMn1cdXsyNjk1MX1cdTUzNWRcdTg4NjRcdTg5YzFcdXsyNzhiMn1cdThiYTBcdThkMWRcdTk0ODVcdTk1NzhcdTk1N2ZcdTk1ZThcdXsyOGUwZn1cdTk3ZTZcdTk4NzVcdTk4Y2VcdTk4ZGVcdTk5NjNcdXsyOTgxMH1cdTljN2NcdTllMWZcdTll''@;'; put 'put ''YzRcdTZiNmZcdWY5MDdcdTRlMzdcdXsyMDA4N31cdTk2MWRcdTYyMzdcdTk0YTIiXSxbIjhjNDAiLCJcdTUwM2JcdTZkZmVcdXsyOWM3M31cdTlmYTZcdTNkYzlcdTg4OGZcdXsyNDE0ZX1cdTcwNzdcdTVjZjVcdTRiMjBcdXsyNTFjZH1cdTM1NTlcdXsyNWQzMH1cdTYxMjJcdXsyOGEzMn1c''@;'; put 'put ''dThmYTdcdTkxZjZcdTcxOTFcdTY3MTlcdTczYmFcdXsyMzI4MX1cdXsyYTEwN31cdTNjOGJcdXsyMTk4MH1cdTRiMTBcdTc4ZTRcdTc0MDJcdTUxYWVcdXsyODcwZn1cdTQwMDlcdTZhNjNcdXsyYTJiYX1cdTQyMjNcdTg2MGZcdXsyMGE2Zn1cdTdhMmFcdXsyOTk0N31cdXsyOGFlYX1cdTk3''@;'; put 'put ''NTVcdTcwNGRcdTUzMjRcdXsyMjA3ZX1cdTkzZjRcdTc2ZDlcdXsyODllM31cdTlmYTdcdTc3ZGRcdTRlYTNcdTRmZjBcdTUwYmNcdTRlMmZcdTRmMTdcdTlmYThcdTU0MzRcdTdkOGJcdTU4OTJcdTU4ZDBcdXsyMWRiNn1cdTVlOTJcdTVlOTlcdTVmYzJcdXsyMjcxMn1cdTY1OGIiXSxbIjhj''@;'; put 'put ''YTEiLCJcdXsyMzNmOX1cdTY5MTlcdTZhNDNcdXsyM2M2M31cdTZjZmYiXSxbIjhjYTciLCJcdTcyMDBcdXsyNDUwNX1cdTczOGNcdTNlZGJcdXsyNGExM31cdTViMTVcdTc0YjlcdThiODNcdXsyNWNhNH1cdXsyNTY5NX1cdTdhOTNcdTdiZWNcdTdjYzNcdTdlNmNcdTgyZjhcdTg1OTdcdTlm''@;'; put 'put ''YTlcdTg4OTBcdTlmYWFcdThlYjlcdTlmYWJcdThmY2ZcdTg1NWZcdTk5ZTBcdTkyMjFcdTlmYWNcdXsyOGRiOX1cdXsyMTQzZn1cdTQwNzFcdTQyYTJcdTVhMWEiXSxbIjhjYzkiLCJcdTk4NjhcdTY3NmJcdTQyNzZcdTU3M2QiXSxbIjhjY2UiLCJcdTg1ZDZcdXsyNDk3Yn1cdTgyYmZcdXsy''@;'; put 'put ''NzEwZH1cdTRjODFcdXsyNmQ3NH1cdTVkN2JcdXsyNmIxNX1cdXsyNmZiZX1cdTlmYWRcdTlmYWVcdTViOTZcdTlmYWZcdTY2ZTdcdTdlNWJcdTZlNTdcdTc5Y2FcdTNkODhcdTQ0YzNcdXsyMzI1Nn1cdXsyMjc5Nn1cdTQzOWFcdTQ1MzYiXSxbIjhjZTYiLCJcdTVjZDVcdXsyM2IxYX1cdThh''@;'; put 'put ''ZjlcdTVjNzhcdTNkMTJcdXsyMzU1MX1cdTVkNzhcdTlmYjJcdTcxNTdcdTQ1NThcdXsyNDBlY31cdXsyMWUyM31cdTRjNzdcdTM5NzhcdTM0NGFcdXsyMDFhNH1cdXsyNmM0MX1cdThhY2NcdTRmYjRcdXsyMDIzOX1cdTU5YmZcdTgxNmNcdTk4NTZcdXsyOThmYX1cdTVmM2IiXSxbIjhkNDAi''@;'; put 'put ''LCJcdXsyMGI5Zn0iXSxbIjhkNDIiLCJcdXsyMjFjMX1cdXsyODk2ZH1cdTQxMDJcdTQ2YmJcdXsyOTA3OX1cdTNmMDdcdTlmYjNcdXsyYTFiNX1cdTQwZjhcdTM3ZDZcdTQ2ZjdcdXsyNmM0Nn1cdTQxN2NcdXsyODZiMn1cdXsyNzNmZn1cdTQ1NmRcdTM4ZDRcdXsyNTQ5YX1cdTQ1NjFcdTQ1''@;'; put 'put ''MWJcdTRkODlcdTRjN2JcdTRkNzZcdTQ1ZWFcdTNmYzhcdXsyNGIwZn1cdTM2NjFcdTQ0ZGVcdTQ0YmRcdTQxZWRcdTVkM2VcdTVkNDhcdTVkNTZcdTNkZmNcdTM4MGZcdTVkYTRcdTVkYjlcdTM4MjBcdTM4MzhcdTVlNDJcdTVlYmRcdTVmMjVcdTVmODNcdTM5MDhcdTM5MTRcdTM5M2ZcdTM5''@;'; put 'put ''NGRcdTYwZDdcdTYxM2RcdTVjZTVcdTM5ODlcdTYxYjdcdTYxYjlcdTYxY2ZcdTM5YjhcdTYyMmNcdTYyOTBcdTYyZTVcdTYzMThcdTM5ZjhcdTU2YjEiXSxbIjhkYTEiLCJcdTNhMDNcdTYzZTJcdTYzZmJcdTY0MDdcdTY0NWFcdTNhNGJcdTY0YzBcdTVkMTVcdTU2MjFcdTlmOWZcdTNhOTdc''@;'; put 'put ''dTY1ODZcdTNhYmRcdTY1ZmZcdTY2NTNcdTNhZjJcdTY2OTJcdTNiMjJcdTY3MTZcdTNiNDJcdTY3YTRcdTY4MDBcdTNiNThcdTY4NGFcdTY4ODRcdTNiNzJcdTNiNzFcdTNiN2JcdTY5MDlcdTY5NDNcdTcyNWNcdTY5NjRcdTY5OWZcdTY5ODVcdTNiYmNcdTY5ZDZcdTNiZGRcdTZhNjVcdTZh''@;'; put 'put ''NzRcdTZhNzFcdTZhODJcdTNiZWNcdTZhOTlcdTNiZjJcdTZhYWJcdTZhYjVcdTZhZDRcdTZhZjZcdTZiODFcdTZiYzFcdTZiZWFcdTZjNzVcdTZjYWFcdTNjY2JcdTZkMDJcdTZkMDZcdTZkMjZcdTZkODFcdTNjZWZcdTZkYTRcdTZkYjFcdTZlMTVcdTZlMThcdTZlMjlcdTZlODZcdXsyODlj''@;'; put 'put ''MH1cdTZlYmJcdTZlZTJcdTZlZGFcdTlmN2ZcdTZlZThcdTZlZTlcdTZmMjRcdTZmMzRcdTNkNDZcdXsyM2Y0MX1cdTZmODFcdTZmYmVcdTNkNmFcdTNkNzVcdTcxYjdcdTVjOTlcdTNkOGFcdTcwMmNcdTNkOTFcdTcwNTBcdTcwNTRcdTcwNmZcdTcwN2ZcdTcwODlcdXsyMDMyNX1cdTQzYzFc''@;'; put 'put ''dTM1ZjFcdXsyMGVkOH0iXSxbIjhlNDAiLCJcdXsyM2VkN31cdTU3YmVcdXsyNmVkM31cdTcxM2VcdXsyNTdlMH1cdTM2NGVcdTY5YTJcdXsyOGJlOX1cdTViNzRcdTdhNDlcdXsyNThlMX1cdXsyOTRkOX1cdTdhNjVcdTdhN2RcdXsyNTlhY31cdTdhYmJcdTdhYjBcdTdhYzJcdTdhYzNcdTcx''@;'; put 'put ''ZDFcdXsyNjQ4ZH1cdTQxY2FcdTdhZGFcdTdhZGRcdTdhZWFcdTQxZWZcdTU0YjJcdXsyNWMwMX1cdTdiMGJcdTdiNTVcdTdiMjlcdXsyNTMwZX1cdXsyNWNmZX1cdTdiYTJcdTdiNmZcdTgzOWNcdXsyNWJiNH1cdXsyNmM3Zn1cdTdiZDBcdTg0MjFcdTdiOTJcdTdiYjhcdXsyNWQyMH1cdTNk''@;'; put 'put ''YWRcdXsyNWM2NX1cdTg0OTJcdTdiZmFcdTdjMDZcdTdjMzVcdXsyNWNjMX1cdTdjNDRcdTdjODNcdXsyNDg4Mn1cdTdjYTZcdTY2N2RcdXsyNDU3OH1cdTdjYzlcdTdjYzdcdTdjZTZcdTdjNzRcdTdjZjNcdTdjZjVcdTdjY2UiXSxbIjhlYTEiLCJcdTdlNjdcdTQ1MWRcdXsyNmU0NH1cdTdk''@;'; put 'put ''NWRcdXsyNmVkNn1cdTc0OGRcdTdkODlcdTdkYWJcdTcxMzVcdTdkYjNcdTdkZDJcdXsyNDA1N31cdXsyNjAyOX1cdTdkZTRcdTNkMTNcdTdkZjVcdXsyMTdmOX1cdTdkZTVcdXsyODM2ZH1cdTdlMWRcdXsyNjEyMX1cdXsyNjE1YX1cdTdlNmVcdTdlOTJcdTQzMmJcdTk0NmNcdTdlMjdcdTdm''@;'; put 'put ''NDBcdTdmNDFcdTdmNDdcdTc5MzZcdXsyNjJkMH1cdTk5ZTFcdTdmOTdcdXsyNjM1MX1cdTdmYTNcdXsyMTY2MX1cdXsyMDA2OH1cdTQ1NWNcdXsyMzc2Nn1cdTQ1MDNcdXsyODMzYX1cdTdmZmFcdXsyNjQ4OX1cdTgwMDVcdTgwMDhcdTgwMWRcdTgwMjhcdTgwMmZcdXsyYTA4N31cdXsyNmNj''@;'; put 'put ''M31cdTgwM2JcdTgwM2NcdTgwNjFcdXsyMjcxNH1cdTQ5ODlcdXsyNjYyNn1cdXsyM2RlM31cdXsyNjZlOH1cdTY3MjVcdTgwYTdcdXsyOGE0OH1cdTgxMDdcdTgxMWFcdTU4YjBcdXsyMjZmNn1cdTZjN2ZcdXsyNjQ5OH1cdXsyNGZiOH1cdTY0ZTdcdXsyMTQ4YX1cdTgyMThcdXsyMTg1ZX1c''@;'; put 'put ''dTZhNTNcdXsyNGE2NX1cdXsyNGE5NX1cdTQ0N2FcdTgyMjlcdXsyMGIwZH1cdXsyNmE1Mn1cdXsyM2Q3ZX1cdTRmZjlcdXsyMTRmZH1cdTg0ZTJcdTgzNjJcdXsyNmIwYX1cdXsyNDlhN31cdXsyMzUzMH1cdXsyMTc3M31cdXsyM2RmOH1cdTgyYWFcdTY5MWJcdXsyZjk5NH1cdTQxZGIiXSxb''@;'; put 'put ''IjhmNDAiLCJcdTg1NGJcdTgyZDBcdTgzMWFcdXsyMGUxNn1cdXsyMTdiNH1cdTM2YzFcdXsyMzE3ZH1cdXsyMzU1YX1cdTgyN2JcdTgyZTJcdTgzMThcdXsyM2U4Yn1cdXsyNmRhM31cdXsyNmIwNX1cdXsyNmI5N31cdXsyMzVjZX1cdTNkYmZcdTgzMWRcdTU1ZWNcdTgzODVcdTQ1MGJcdXsy''@;'; put 'put ''NmRhNX1cdTgzYWNcdTgzYzFcdTgzZDNcdTM0N2VcdXsyNmVkNH1cdTZhNTdcdTg1NWFcdTM0OTZcdXsyNmU0Mn1cdXsyMmVlZn1cdTg0NThcdXsyNWJlNH1cdTg0NzFcdTNkZDNcdTQ0ZTRcdTZhYTdcdTg0NGFcdXsyM2NiNX1cdTc5NThcdTg0YThcdXsyNmI5Nn1cdXsyNmU3N31cdXsyNmU0''@;'; put 'put ''M31cdTg0ZGVcdTg0MGZcdTgzOTFcdTQ0YTBcdTg0OTNcdTg0ZTRcdXsyNWM5MX1cdTQyNDBcdXsyNWNjMH1cdTQ1NDNcdTg1MzRcdTVhZjJcdXsyNmU5OX1cdTQ1MjdcdTg1NzNcdTQ1MTZcdTY3YmZcdTg2MTYiXSxbIjhmYTEiLCJcdXsyODYyNX1cdXsyODYzYn1cdTg1YzFcdXsyNzA4OH1c''@;'; put 'put ''dTg2MDJcdXsyMTU4Mn1cdXsyNzBjZH1cdXsyZjliMn1cdTQ1NmFcdTg2MjhcdTM2NDhcdXsyMThhMn1cdTUzZjdcdXsyNzM5YX1cdTg2N2VcdTg3NzFcdXsyYTBmOH1cdTg3ZWVcdXsyMmMyN31cdTg3YjFcdTg3ZGFcdTg4MGZcdTU2NjFcdTg2NmNcdTY4NTZcdTQ2MGZcdTg4NDVcdTg4NDZc''@;'; put 'put ''dXsyNzVlMH1cdXsyM2RiOX1cdXsyNzVlNH1cdTg4NWVcdTg4OWNcdTQ2NWJcdTg4YjRcdTg4YjVcdTYzYzFcdTg4YzVcdTc3NzdcdXsyNzcwZn1cdTg5ODdcdTg5OGFcdTg5YTZcdTg5YTlcdTg5YTdcdTg5YmNcdXsyOGEyNX1cdTg5ZTdcdXsyNzkyNH1cdXsyN2FiZH1cdThhOWNcdTc3OTNc''@;'; put 'put ''dTkxZmVcdThhOTBcdXsyN2E1OX1cdTdhZTlcdXsyN2IzYX1cdXsyM2Y4Zn1cdTQ3MTNcdXsyN2IzOH1cdTcxN2NcdThiMGNcdThiMWZcdXsyNTQzMH1cdXsyNTU2NX1cdThiM2ZcdThiNGNcdThiNGRcdThhYTlcdXsyNGE3YX1cdThiOTBcdThiOWJcdThhYWZcdXsyMTZkZn1cdTQ2MTVcdTg4''@;'; put 'put ''NGZcdThjOWJcdXsyN2Q1NH1cdXsyN2Q4Zn1cdXsyZjlkNH1cdTM3MjVcdXsyN2Q1M31cdThjZDZcdXsyN2Q5OH1cdXsyN2RiZH1cdThkMTJcdThkMDNcdXsyMTkxMH1cdThjZGJcdTcwNWNcdThkMTFcdXsyNGNjOX1cdTNlZDBcdThkNzciXSxbIjkwNDAiLCJcdThkYTlcdXsyODAwMn1cdXsy''@;'; put 'put ''MTAxNH1cdXsyNDk4YX1cdTNiN2NcdXsyODFiY31cdXsyNzEwY31cdTdhZTdcdThlYWRcdThlYjZcdThlYzNcdTkyZDRcdThmMTlcdThmMmRcdXsyODM2NX1cdXsyODQxMn1cdThmYTVcdTkzMDNcdXsyYTI5Zn1cdXsyMGE1MH1cdThmYjNcdTQ5MmFcdXsyODlkZX1cdXsyODUzZH1cdXsyM2Ri''@;'; put 'put ''Yn1cdTVlZjhcdXsyMzI2Mn1cdThmZjlcdXsyYTAxNH1cdXsyODZiY31cdXsyODUwMX1cdXsyMjMyNX1cdTM5ODBcdXsyNmVkN31cdTkwMzdcdXsyODUzY31cdXsyN2FiZX1cdTkwNjFcdXsyODU2Y31cdXsyODYwYn1cdTkwYThcdXsyODcxM31cdTkwYzRcdXsyODZlNn1cdTkwYWVcdTkwZmRc''@;'; put 'put ''dTkxNjdcdTNhZjBcdTkxYTlcdTkxYzRcdTdjYWNcdXsyODkzM31cdXsyMWU4OX1cdTkyMGVcdTZjOWZcdTkyNDFcdTkyNjJcdXsyNTViOX1cdTkyYjlcdXsyOGFjNn1cdXsyM2M5Yn1cdXsyOGIwY31cdXsyNTVkYn0iXSxbIjkwYTEiLCJcdXsyMGQzMX1cdTkzMmNcdTkzNmJcdXsyOGFlMX1c''@;'; put 'put ''dXsyOGJlYn1cdTcwOGZcdTVhYzNcdXsyOGFlMn1cdXsyOGFlNX1cdTQ5NjVcdTkyNDRcdXsyOGJlY31cdXsyOGMzOX1cdXsyOGJmZn1cdTkzNzNcdTk0NWJcdThlYmNcdTk1ODVcdTk1YTZcdTk0MjZcdTk1YTBcdTZmZjZcdTQyYjlcdXsyMjY3YX1cdXsyODZkOH1cdXsyMTI3Y31cdXsyM2Uy''@;'; put 'put ''ZX1cdTQ5ZGZcdTZjMWNcdTk2N2JcdTk2OTZcdTQxNmNcdTk2YTNcdXsyNmVkNX1cdTYxZGFcdTk2YjZcdTc4ZjVcdXsyOGFlMH1cdTk2YmRcdTUzY2NcdTQ5YTFcdXsyNmNiOH1cdXsyMDI3NH1cdXsyNjQxMH1cdXsyOTBhZn1cdXsyOTBlNX1cdXsyNGFkMX1cdXsyMTkxNX1cdXsyMzMwYX1c''@;'; put 'put ''dTk3MzFcdTg2NDJcdTk3MzZcdTRhMGZcdTQ1M2RcdTQ1ODVcdXsyNGFlOX1cdTcwNzVcdTViNDFcdTk3MWJcdTk3NWNcdXsyOTFkNX1cdTk3NTdcdTViNGFcdXsyOTFlYn1cdTk3NWZcdTk0MjVcdTUwZDBcdXsyMzBiN31cdXsyMzBiY31cdTk3ODlcdTk3OWZcdTk3YjFcdTk3YmVcdTk3YzBc''@;'; put 'put ''dTk3ZDJcdTk3ZTBcdXsyNTQ2Y31cdTk3ZWVcdTc0MWNcdXsyOTQzM31cdTk3ZmZcdTk3ZjVcdXsyOTQxZH1cdXsyNzk3YX1cdTRhZDFcdTk4MzRcdTk4MzNcdTk4NGJcdTk4NjZcdTNiMGVcdXsyNzE3NX1cdTNkNTFcdXsyMDYzMH1cdXsyNDE1Y30iXSxbIjkxNDAiLCJcdXsyNTcwNn1cdTk4''@;'; put 'put ''Y2FcdTk4YjdcdTk4YzhcdTk4YzdcdTRhZmZcdXsyNmQyN31cdXsyMTZkM31cdTU1YjBcdTk4ZTFcdTk4ZTZcdTk4ZWNcdTkzNzhcdTk5MzlcdXsyNGEyOX1cdTRiNzJcdXsyOTg1N31cdXsyOTkwNX1cdTk5ZjVcdTlhMGNcdTlhM2JcdTlhMTBcdTlhNThcdXsyNTcyNX1cdTM2YzRcdXsyOTBi''@;'; put 'put ''MX1cdXsyOWJkNX1cdTlhZTBcdTlhZTJcdXsyOWIwNX1cdTlhZjRcdTRjMGVcdTliMTRcdTliMmRcdXsyODYwMH1cdTUwMzRcdTliMzRcdXsyNjlhOH1cdTM4YzNcdXsyMzA3ZH1cdTliNTBcdTliNDBcdXsyOWQzZX1cdTVhNDVcdXsyMTg2M31cdTliOGVcdXsyNDI0Yn1cdTljMDJcdTliZmZc''@;'; put 'put ''dTljMGNcdXsyOWU2OH1cdTlkZDRcdXsyOWZiN31cdXsyYTE5Mn1cdXsyYTFhYn1cdXsyYTBlMX1cdXsyYTEyM31cdXsyYTFkZn1cdTlkN2VcdTlkODNcdXsyYTEzNH1cdTllMGVcdTY4ODgiXSxbIjkxYTEiLCJcdTlkYzRcdXsyMjE1Yn1cdXsyYTE5M31cdXsyYTIyMH1cdXsyMTkzYn1cdXsy''@;'; put 'put ''YTIzM31cdTlkMzlcdXsyYTBiOX1cdXsyYTJiNH1cdTllOTBcdTllOTVcdTllOWVcdTllYTJcdTRkMzRcdTllYWFcdTllYWZcdXsyNDM2NH1cdTllYzFcdTNiNjBcdTM5ZTVcdTNkMWRcdTRmMzJcdTM3YmVcdXsyOGMyYn1cdTlmMDJcdTlmMDhcdTRiOTZcdTk0MjRcdXsyNmRhMn1cdTlmMTdc''@;'; put 'put ''dTlmMTZcdTlmMzlcdTU2OWZcdTU2OGFcdTlmNDVcdTk5YjhcdXsyOTA4Yn1cdTk3ZjJcdTg0N2ZcdTlmNjJcdTlmNjlcdTdhZGNcdTlmOGVcdTcyMTZcdTRiYmVcdXsyNDk3NX1cdXsyNDliYn1cdTcxNzdcdXsyNDlmOH1cdXsyNDM0OH1cdXsyNGE1MX1cdTczOWVcdXsyOGJkYX1cdXsyMThm''@;'; put 'put ''YX1cdTc5OWZcdXsyODk3ZX1cdXsyOGUzNn1cdTkzNjlcdTkzZjNcdXsyOGE0NH1cdTkyZWNcdTkzODFcdTkzY2JcdXsyODk2Y31cdXsyNDRiOX1cdTcyMTdcdTNlZWJcdTc3NzJcdTdhNDNcdTcwZDBcdXsyNDQ3M31cdXsyNDNmOH1cdTcxN2VcdXsyMTdlZn1cdTcwYTNcdXsyMThiZX1cdXsy''@;'; put 'put ''MzU5OX1cdTNlYzdcdXsyMTg4NX1cdXsyNTQyZn1cdXsyMTdmOH1cdTM3MjJcdXsyMTZmYn1cdXsyMTgzOX1cdTM2ZTFcdXsyMTc3NH1cdXsyMThkMX1cdXsyNWY0Yn1cdTM3MjNcdXsyMTZjMH1cdTU3NWJcdXsyNGEyNX1cdXsyMTNmZX1cdXsyMTJhOH0iXSxbIjkyNDAiLCJcdXsyMTNjNn1c''@;'; put 'put ''dXsyMTRiNn1cdTg1MDNcdXsyMzZhNn1cdTg1MDNcdTg0NTVcdXsyNDk5NH1cdXsyNzE2NX1cdXsyM2UzMX1cdXsyNTU1Y31cdXsyM2VmYn1cdXsyNzA1Mn1cdTQ0ZjRcdXsyMzZlZX1cdXsyOTk5ZH1cdXsyNmYyNn1cdTY3ZjlcdTM3MzNcdTNjMTVcdTNkZTdcdTU4NmNcdXsyMTkyMn1cdTY4''@;'; put 'put ''MTBcdTQwNTdcdXsyMzczZn1cdXsyNDBlMX1cdXsyNDA4Yn1cdXsyNDEwZn1cdXsyNmMyMX1cdTU0Y2JcdTU2OWVcdXsyNjZiMX1cdTU2OTJcdXsyMGZkZn1cdXsyMGJhOH1cdXsyMGUwZH1cdTkzYzZcdXsyOGIxM31cdTkzOWNcdTRlZjhcdTUxMmJcdTM4MTlcdXsyNDQzNn1cdTRlYmNcdXsy''@;'; put 'put ''MDQ2NX1cdXsyMDM3Zn1cdTRmNGJcdTRmOGFcdXsyNTY1MX1cdTVhNjhcdXsyMDFhYn1cdXsyMDNjYn1cdTM5OTlcdXsyMDMwYX1cdXsyMDQxNH1cdTM0MzVcdTRmMjlcdXsyMDJjMH1cdXsyOGViM31cdXsyMDI3NX1cdThhZGFcdXsyMDIwY31cdTRlOTgiXSxbIjkyYTEiLCJcdTUwY2RcdTUx''@;'; put 'put ''MGRcdTRmYTJcdTRmMDNcdXsyNGEwZX1cdXsyM2U4YX1cdTRmNDJcdTUwMmVcdTUwNmNcdTUwODFcdTRmY2NcdTRmZTVcdTUwNThcdTUwZmNcdTUxNTlcdTUxNWJcdTUxNWRcdTUxNWVcdTZlNzZcdXsyMzU5NX1cdXsyM2UzOX1cdXsyM2ViZn1cdTZkNzJcdXsyMTg4NH1cdXsyM2U4OX1cdTUx''@;'; put 'put ''YThcdTUxYzNcdXsyMDVlMH1cdTQ0ZGRcdXsyMDRhM31cdXsyMDQ5Mn1cdXsyMDQ5MX1cdThkN2FcdXsyOGE5Y31cdXsyMDcwZX1cdTUyNTlcdTUyYTRcdXsyMDg3M31cdTUyZTFcdTkzNmVcdTQ2N2FcdTcxOGNcdXsyNDM4Y31cdXsyMGMyMH1cdXsyNDlhY31cdXsyMTBlNH1cdTY5ZDFcdXsy''@;'; put 'put ''MGUxZH1cdTc0NzlcdTNlZGVcdTc0OTlcdTc0MTRcdTc0NTZcdTczOThcdTRiOGVcdXsyNGFiY31cdXsyNDA4ZH1cdTUzZDBcdTM1ODRcdTcyMGZcdXsyNDBjOX1cdTU1YjRcdXsyMDM0NX1cdTU0Y2RcdXsyMGJjNn1cdTU3MWRcdTkyNWRcdTk2ZjRcdTkzNjZcdTU3ZGRcdTU3OGRcdTU3N2Zc''@;'; put 'put ''dTM2M2VcdTU4Y2JcdTVhOTlcdXsyOGE0Nn1cdXsyMTZmYX1cdXsyMTc2Zn1cdXsyMTcxMH1cdTVhMmNcdTU5YjhcdTkyOGZcdTVhN2VcdTVhY2ZcdTVhMTJcdXsyNTk0Nn1cdXsyMTlmM31cdXsyMTg2MX1cdXsyNDI5NX1cdTM2ZjVcdTZkMDVcdTc0NDNcdTVhMjFcdXsyNWU4M30iXSxbIjkz''@;'; put 'put ''NDAiLCJcdTVhODFcdXsyOGJkN31cdXsyMDQxM31cdTkzZTBcdTc0OGNcdXsyMTMwM31cdTcxMDVcdTQ5NzJcdTk0MDhcdXsyODlmYn1cdTkzYmRcdTM3YTBcdTVjMWVcdTVjOWVcdTVlNWVcdTVlNDhcdXsyMTk5Nn1cdXsyMTk3Y31cdXsyM2FlZX1cdTVlY2RcdTViNGZcdXsyMTkwM31cdXsy''@;'; put 'put ''MTkwNH1cdTM3MDFcdXsyMThhMH1cdTM2ZGRcdXsyMTZmZX1cdTM2ZDNcdTgxMmFcdXsyOGE0N31cdXsyMWRiYX1cdXsyMzQ3Mn1cdXsyODlhOH1cdTVmMGNcdTVmMGVcdXsyMTkyN31cdXsyMTdhYn1cdTVhNmJcdXsyMTczYn1cdTViNDRcdTg2MTRcdXsyNzVmZH1cdTg4NjBcdTYwN2VcdXsy''@;'; put 'put ''Mjg2MH1cdXsyMjYyYn1cdTVmZGJcdTNlYjhcdXsyMjVhZn1cdXsyMjViZX1cdXsyOTA4OH1cdXsyNmY3M31cdTYxYzBcdXsyMDAzZX1cdXsyMDA0Nn1cdXsyMjYxYn1cdTYxOTlcdTYxOThcdTYwNzVcdXsyMmM5Yn1cdXsyMmQwN31cdXsyNDZkNH1cdXsyOTE0ZH0iXSxbIjkzYTEiLCJcdTY0''@;'; put 'put ''NzFcdXsyNDY2NX1cdXsyMmI2YX1cdTNhMjlcdXsyMmIyMn1cdXsyMzQ1MH1cdXsyOThlYX1cdXsyMmU3OH1cdTYzMzdcdXsyYTQ1Yn1cdTY0YjZcdTYzMzFcdTYzZDFcdXsyNDllM31cdXsyMmQ2N31cdTYyYTRcdXsyMmNhMX1cdTY0M2JcdTY1NmJcdTY5NzJcdTNiZjRcdXsyMzA4ZX1cdXsy''@;'; put 'put ''MzJhZH1cdXsyNDk4OX1cdXsyMzJhYn1cdTU1MGRcdXsyMzJlMH1cdXsyMThkOX1cdXsyOTQzZn1cdTY2Y2VcdXsyMzI4OX1cdXsyMzFiM31cdTNhZTBcdTQxOTBcdXsyNTU4NH1cdXsyOGIyMn1cdXsyNTU4Zn1cdXsyMTZmY31cdXsyNTU1Yn1cdXsyNTQyNX1cdTc4ZWVcdXsyMzEwM31cdXsy''@;'; put 'put ''MTgyYX1cdXsyMzIzNH1cdTM0NjRcdXsyMzIwZn1cdXsyMzE4Mn1cdXsyNDJjOX1cdTY2OGVcdXsyNmQyNH1cdTY2NmJcdTRiOTNcdTY2MzBcdXsyNzg3MH1cdXsyMWRlYn1cdTY2NjNcdXsyMzJkMn1cdXsyMzJlMX1cdTY2MWVcdXsyNTg3Mn1cdTM4ZDFcdXsyMzgzYX1cdXsyMzdiY31cdTNi''@;'; put 'put ''OTlcdXsyMzdhMn1cdXsyMzNmZX1cdTc0ZDBcdTNiOTZcdTY3OGZcdXsyNDYyYX1cdTY4YjZcdTY4MWVcdTNiYzRcdTZhYmVcdTM4NjNcdXsyMzdkNX1cdXsyNDQ4N31cdTZhMzNcdTZhNTJcdTZhYzlcdTZiMDVcdXsyMTkxMn1cdTY1MTFcdTY4OThcdTZhNGNcdTNiZDdcdTZhN2FcdTZiNTdc''@;'; put 'put ''dXsyM2ZjMH1cdXsyM2M5YX1cdTkzYTBcdTkyZjJcdXsyOGJlYX1cdXsyOGFjYn0iXSxbIjk0NDAiLCJcdTkyODlcdXsyODAxZX1cdXsyODlkY31cdTk0NjdcdTZkYTVcdTZmMGJcdXsyNDllY31cdTZkNjdcdXsyM2Y3Zn1cdTNkOGZcdTZlMDRcdXsyNDAzY31cdTVhM2RcdTZlMGFcdTU4NDdc''@;'; put 'put ''dTZkMjRcdTc4NDJcdTcxM2JcdXsyNDMxYX1cdXsyNDI3Nn1cdTcwZjFcdTcyNTBcdTcyODdcdTcyOTRcdXsyNDc4Zn1cdXsyNDcyNX1cdTUxNzlcdXsyNGFhNH1cdXsyMDVlYn1cdTc0N2FcdXsyM2VmOH1cdXsyMzY1Zn1cdXsyNGE0YX1cdXsyNDkxN31cdXsyNWZlMX1cdTNmMDZcdTNlYjFc''@;'; put 'put ''dXsyNGFkZn1cdXsyOGMyM31cdXsyM2YzNX1cdTYwYTdcdTNlZjNcdTc0Y2NcdTc0M2NcdTkzODdcdTc0MzdcdTQ0OWZcdXsyNmRlYX1cdTQ1NTFcdTc1ODNcdTNmNjNcdXsyNGNkOX1cdXsyNGQwNn1cdTNmNThcdTc1NTVcdTc2NzNcdXsyYTVjNn1cdTNiMTlcdTc0NjhcdXsyOGFjY31cdXsy''@;'; put 'put ''NDlhYn1cdXsyNDk4ZX1cdTNhZmIiXSxbIjk0YTEiLCJcdTNkY2RcdXsyNGE0ZX1cdTNlZmZcdXsyNDljNX1cdXsyNDhmM31cdTkxZmFcdTU3MzJcdTkzNDJcdXsyOGFlM31cdXsyMTg2NH1cdTUwZGZcdXsyNTIyMX1cdXsyNTFlN31cdTc3NzhcdXsyMzIzMn1cdTc3MGVcdTc3MGZcdTc3N2Jc''@;'; put 'put ''dXsyNDY5N31cdXsyMzc4MX1cdTNhNWVcdXsyNDhmMH1cdTc0MzhcdTc0OWJcdTNlYmZcdXsyNGFiYX1cdXsyNGFjN31cdTQwYzhcdXsyNGE5Nn1cdXsyNjFhZX1cdTkzMDdcdXsyNTU4MX1cdTc4MWVcdTc4OGRcdTc4ODhcdTc4ZDJcdTczZDBcdTc5NTlcdXsyNzc0MX1cdXsyNTZlM31cdTQx''@;'; put 'put ''MGVcdTc5OWJcdTg0OTZcdTc5YTVcdTZhMmRcdXsyM2VmYX1cdTdhM2FcdTc5ZjRcdTQxNmVcdXsyMTZlNn1cdTQxMzJcdTkyMzVcdTc5ZjFcdXsyMGQ0Y31cdXsyNDk4Y31cdXsyMDI5OX1cdXsyM2RiYX1cdXsyMTc2ZX1cdTM1OTdcdTU1NmJcdTM1NzBcdTM2YWFcdXsyMDFkNH1cdXsyMGMw''@;'; put 'put ''ZH1cdTdhZTJcdTVhNTlcdXsyMjZmNX1cdXsyNWFhZn1cdXsyNWE5Y31cdTVhMGRcdXsyMDI1Yn1cdTc4ZjBcdTVhMmFcdXsyNWJjNn1cdTdhZmVcdTQxZjlcdTdjNWRcdTdjNmRcdTQyMTFcdXsyNWJiM31cdXsyNWViY31cdXsyNWVhNn1cdTdjY2RcdXsyNDlmOX1cdXsyMTdiMH1cdTdjOGVc''@;'; put 'put ''dTdjN2NcdTdjYWVcdTZhYjJcdTdkZGNcdTdlMDdcdTdkZDNcdTdmNGVcdXsyNjI2MX0iXSxbIjk1NDAiLCJcdXsyNjE1Y31cdXsyN2I0OH1cdTdkOTdcdXsyNWU4Mn1cdTQyNmFcdXsyNmI3NX1cdXsyMDkxNn1cdTY3ZDZcdXsyMDA0ZX1cdXsyMzVjZn1cdTU3YzRcdXsyNjQxMn1cdXsyNjNm''@;'; put 'put ''OH1cdXsyNDk2Mn1cdTdmZGRcdTdiMjdcdXsyMDgyY31cdXsyNWFlOX1cdXsyNWQ0M31cdTdiMGNcdXsyNWUwZX1cdTk5ZTZcdTg2NDVcdTlhNjNcdTZhMWNcdXsyMzQzZn1cdTM5ZTJcdXsyNDlmN31cdXsyNjVhZH1cdTlhMWZcdXsyNjVhMH1cdTg0ODBcdXsyNzEyN31cdXsyNmNkMX1cdTQ0''@;'; put 'put ''ZWFcdTgxMzdcdTQ0MDJcdTgwYzZcdTgxMDlcdTgxNDJcdXsyNjdiNH1cdTk4YzNcdXsyNmE0Mn1cdTgyNjJcdTgyNjVcdXsyNmE1MX1cdTg0NTNcdXsyNmRhN31cdTg2MTBcdXsyNzIxYn1cdTVhODZcdTQxN2ZcdXsyMTg0MH1cdTViMmJcdXsyMThhMX1cdTVhZTRcdXsyMThkOH1cdTg2YTBc''@;'; put 'put ''dXsyZjliY31cdXsyM2Q4Zn1cdTg4MmRcdXsyNzQyMn1cdTVhMDIiXSxbIjk1YTEiLCJcdTg4NmVcdTRmNDVcdTg4ODdcdTg4YmZcdTg4ZTZcdTg5NjVcdTg5NGRcdXsyNTY4M31cdTg5NTRcdXsyNzc4NX1cdXsyNzc4NH1cdXsyOGJmNX1cdXsyOGJkOX1cdXsyOGI5Y31cdXsyODlmOX1cdTNl''@;'; put 'put ''YWRcdTg0YTNcdTQ2ZjVcdTQ2Y2ZcdTM3ZjJcdThhM2RcdThhMWNcdXsyOTQ0OH1cdTVmNGRcdTkyMmJcdXsyNDI4NH1cdTY1ZDRcdTcxMjlcdTcwYzRcdXsyMTg0NX1cdTlkNmRcdThjOWZcdThjZTlcdXsyN2RkY31cdTU5OWFcdTc3YzNcdTU5ZjBcdTQzNmVcdTM2ZDRcdThlMmFcdThlYTdc''@;'; put 'put ''dXsyNGMwOX1cdThmMzBcdThmNGFcdTQyZjRcdTZjNThcdTZmYmJcdXsyMjMyMX1cdTQ4OWJcdTZmNzlcdTZlOGJcdXsyMTdkYX1cdTliZTlcdTM2YjVcdXsyNDkyZn1cdTkwYmJcdTkwOTdcdTU1NzFcdTQ5MDZcdTkxYmJcdTk0MDRcdXsyOGE0Yn1cdTQwNjJcdXsyOGFmY31cdTk0MjdcdXsy''@;'; put 'put ''OGMxZH1cdXsyOGMzYn1cdTg0ZTVcdThhMmJcdTk1OTlcdTk1YTdcdTk1OTdcdTk1OTZcdXsyOGQzNH1cdTc0NDVcdTNlYzJcdXsyNDhmZn1cdXsyNGE0Mn1cdXsyNDNlYX1cdTNlZTdcdXsyMzIyNX1cdTk2OGZcdXsyOGVlN31cdXsyOGU2Nn1cdXsyOGU2NX1cdTNlY2NcdXsyNDllZH1cdXsy''@;'; put 'put ''NGE3OH1cdXsyM2ZlZX1cdTc0MTJcdTc0NmJcdTNlZmNcdTk3NDFcdXsyOTBiMH0iXSxbIjk2NDAiLCJcdTY4NDdcdTRhMWRcdXsyOTA5M31cdXsyNTdkZn1cdTk3NWRcdTkzNjhcdXsyODk4OX1cdXsyOGMyNn1cdXsyOGIyZn1cdXsyNjNiZX1cdTkyYmFcdTViMTFcdThiNjlcdTQ5M2NcdTcz''@;'; put 'put ''ZjlcdXsyNDIxYn1cdTk3OWJcdTk3NzFcdTk5MzhcdXsyMGYyNn1cdTVkYzFcdXsyOGJjNX1cdXsyNGFiMn1cdTk4MWZcdXsyOTRkYX1cdTkyZjZcdXsyOTVkN31cdTkxZTVcdTQ0YzBcdXsyOGI1MH1cdXsyNGE2N31cdXsyOGI2NH1cdTk4ZGNcdXsyOGE0NX1cdTNmMDBcdTkyMmFcdTQ5MjVc''@;'; put 'put ''dTg0MTRcdTk5M2JcdTk5NGRcdXsyN2IwNn1cdTNkZmRcdTk5OWJcdTRiNmZcdTk5YWFcdTlhNWNcdXsyOGI2NX1cdXsyNThjOH1cdTZhOGZcdTlhMjFcdTVhZmVcdTlhMmZcdXsyOThmMX1cdTRiOTBcdXsyOTk0OH1cdTk5YmNcdTRiYmRcdTRiOTdcdTkzN2RcdTU4NzJcdXsyMTMwMn1cdTU4''@;'; put 'put ''MjJcdXsyNDliOH0iXSxbIjk2YTEiLCJcdXsyMTRlOH1cdTc4NDRcdXsyMjcxZn1cdXsyM2RiOH1cdTY4YzVcdTNkN2RcdTk0NThcdTM5MjdcdTYxNTBcdXsyMjc4MX1cdXsyMjk2Yn1cdTYxMDdcdTljNGZcdTljNTNcdTljN2JcdTljMzVcdTljMTBcdTliN2ZcdTliY2ZcdXsyOWUyZH1cdTli''@;'; put 'put ''OWZcdXsyYTFmNX1cdXsyYTBmZX1cdTlkMjFcdTRjYWVcdXsyNDEwNH1cdTllMThcdTRjYjBcdTlkMGNcdXsyYTFiNH1cdXsyYTBlZH1cdXsyYTBmM31cdXsyOTkyZn1cdTlkYTVcdTg0YmRcdXsyNmUxMn1cdXsyNmZkZn1cdXsyNmI4Mn1cdTg1ZmNcdTQ1MzNcdXsyNmRhNH1cdXsyNmU4NH1c''@;'; put 'put ''dXsyNmRmMH1cdTg0MjBcdTg1ZWVcdXsyNmUwMH1cdXsyMzdkN31cdXsyNjA2NH1cdTc5ZTJcdXsyMzU5Y31cdXsyMzY0MH1cdTQ5MmRcdXsyNDlkZX1cdTNkNjJcdTkzZGJcdTkyYmVcdTkzNDhcdXsyMDJiZn1cdTc4YjlcdTkyNzdcdTk0NGRcdTRmZTRcdTM0NDBcdTkwNjRcdXsyNTU1ZH1c''@;'; put 'put ''dTc4M2RcdTc4NTRcdTc4YjZcdTc4NGJcdXsyMTc1N31cdXsyMzFjOX1cdXsyNDk0MX1cdTM2OWFcdTRmNzJcdTZmZGFcdTZmZDlcdTcwMWVcdTcwMWVcdTU0MTRcdXsyNDFiNX1cdTU3YmJcdTU4ZjNcdTU3OGFcdTlkMTZcdTU3ZDdcdTcxMzRcdTM0YWZcdXsyNDFhY31cdTcxZWJcdXsyNmM0''@;'; put 'put ''MH1cdXsyNGY5N31cdTViMjhcdXsyMTdiNX1cdXsyOGE0OX0iXSxbIjk3NDAiLCJcdTYxMGNcdTVhY2VcdTVhMGJcdTQyYmNcdXsyNDQ4OH1cdTM3MmNcdTRiN2JcdXsyODlmY31cdTkzYmJcdTkzYjhcdXsyMThkNn1cdXsyMGYxZH1cdTg0NzJcdXsyNmNjMH1cdXsyMTQxM31cdXsyNDJmYX1c''@;'; put 'put ''dXsyMmMyNn1cdXsyNDNjMX1cdTU5OTRcdXsyM2RiN31cdXsyNjc0MX1cdTdkYThcdXsyNjE1Yn1cdXsyNjBhNH1cdXsyNDliOX1cdXsyNDk4Yn1cdXsyODlmYX1cdTkyZTVcdTczZTJcdTNlZTlcdTc0YjRcdXsyOGI2M31cdXsyMTg5Zn1cdTNlZTFcdXsyNGFiM31cdTZhZDhcdTczZjNcdTcz''@;'; put 'put ''ZmJcdTNlZDZcdXsyNGEzZX1cdXsyNGE5NH1cdXsyMTdkOX1cdXsyNGE2Nn1cdXsyMDNhN31cdXsyMTQyNH1cdXsyNDllNX1cdTc0NDhcdXsyNDkxNn1cdTcwYTVcdXsyNDk3Nn1cdTkyODRcdTczZTZcdTkzNWZcdXsyMDRmZX1cdTkzMzFcdXsyOGFjZX1cdXsyOGExNn1cdTkzODZcdXsyOGJl''@;'; put 'put ''N31cdXsyNTVkNX1cdTQ5MzVcdXsyOGE4Mn1cdTcxNmIiXSxbIjk3YTEiLCJcdXsyNDk0M31cdXsyMGNmZn1cdTU2YTRcdXsyMDYxYX1cdXsyMGJlYn1cdXsyMGNiOH1cdTU1MDJcdTc5YzRcdXsyMTdmYX1cdTdkZmVcdXsyMTZjMn1cdXsyNGE1MH1cdXsyMTg1Mn1cdTQ1MmVcdTk0MDFcdTM3''@;'; put 'put ''MGFcdXsyOGFjMH1cdXsyNDlhZH1cdTU5YjBcdXsyMThiZn1cdXsyMTg4M31cdXsyNzQ4NH1cdTVhYTFcdTM2ZTJcdXsyM2Q1Yn1cdTM2YjBcdTkyNWZcdTVhNzlcdXsyOGE4MX1cdXsyMTg2Mn1cdTkzNzRcdTNjY2RcdXsyMGFiNH1cdTRhOTZcdTM5OGFcdTUwZjRcdTNkNjlcdTNkNGNcdXsy''@;'; put 'put ''MTM5Y31cdTcxNzVcdTQyZmJcdXsyODIxOH1cdTZlMGZcdXsyOTBlNH1cdTQ0ZWJcdTZkNTdcdXsyN2U0Zn1cdTcwNjdcdTZjYWZcdTNjZDZcdXsyM2ZlZH1cdXsyM2UyZH1cdTZlMDJcdTZmMGNcdTNkNmZcdXsyMDNmNX1cdTc1NTFcdTM2YmNcdTM0YzhcdTQ2ODBcdTNlZGFcdTQ4NzFcdTU5''@;'; put 'put ''YzRcdTkyNmVcdTQ5M2VcdThmNDFcdXsyOGMxY31cdXsyNmJjMH1cdTU4MTJcdTU3YzhcdTM2ZDZcdXsyMTQ1Mn1cdTcwZmVcdXsyNDM2Mn1cdXsyNGE3MX1cdXsyMmZlM31cdXsyMTJiMH1cdXsyMjNiZH1cdTY4YjlcdTY5NjdcdXsyMTM5OH1cdXsyMzRlNX1cdXsyN2JmNH1cdXsyMzZkZn1c''@;'; put 'put ''dXsyOGE4M31cdXsyMzdkNn1cdXsyMzNmYX1cdXsyNGM5Zn1cdTZhMWFcdXsyMzZhZH1cdXsyNmNiN31cdTg0M2VcdTQ0ZGZcdTQ0Y2UiXSxbIjk4NDAiLCJcdXsyNmQyNn1cdXsyNmQ1MX1cdXsyNmM4Mn1cdXsyNmZkZX1cdTZmMTdcdXsyNzEwOX1cdTgzM2RcdXsyMTczYX1cdTgzZWRcdXsy''@;'; put 'put ''NmM4MH1cdXsyNzA1M31cdXsyMTdkYn1cdTU5ODlcdTVhODJcdXsyMTdiM31cdTVhNjFcdTVhNzFcdXsyMTkwNX1cdXsyNDFmY31cdTM3MmRcdTU5ZWZcdXsyMTczY31cdTM2YzdcdTcxOGVcdTkzOTBcdTY2OWFcdXsyNDJhNX1cdTVhNmVcdTVhMmJcdXsyNDI5M31cdTZhMmJcdXsyM2VmOX1c''@;'; put 'put ''dXsyNzczNn1cdXsyNDQ1Yn1cdXsyNDJjYX1cdTcxMWRcdXsyNDI1OX1cdXsyODllMX1cdTRmYjBcdXsyNmQyOH1cdTVjYzJcdXsyNDRjZX1cdXsyN2U0ZH1cdXsyNDNiZH1cdTZhMGNcdXsyNDI1Nn1cdXsyMTMwNH1cdTcwYTZcdTcxMzNcdXsyNDNlOX1cdTNkYTVcdTZjZGZcdXsyZjgyNX1c''@;'; put 'put ''dXsyNGE0Zn1cdTdlNjVcdTU5ZWJcdTVkMmZcdTNkZjNcdTVmNWNcdXsyNGE1ZH1cdXsyMTdkZn1cdTdkYTRcdTg0MjYiXSxbIjk4YTEiLCJcdTU0ODVcdXsyM2FmYX1cdXsyMzMwMH1cdXsyMDIxNH1cdTU3N2VcdXsyMDhkNX1cdXsyMDYxOX1cdTNmZTVcdXsyMWY5ZX1cdXsyYTJiNn1cdTcw''@;'; put 'put ''MDNcdXsyOTE1Yn1cdTVkNzBcdTczOGZcdTdjZDNcdXsyOGE1OX1cdXsyOTQyMH1cdTRmYzhcdTdmZTdcdTcyY2RcdTczMTBcdXsyN2FmNH1cdTczMzhcdTczMzlcdXsyNTZmNn1cdTczNDFcdTczNDhcdTNlYTlcdXsyN2IxOH1cdTkwNmNcdTcxZjVcdXsyNDhmMn1cdTczZTFcdTgxZjZcdTNl''@;'; put 'put ''Y2FcdTc3MGNcdTNlZDFcdTZjYTJcdTU2ZmRcdTc0MTlcdTc0MWVcdTc0MWZcdTNlZTJcdTNlZjBcdTNlZjRcdTNlZmFcdTc0ZDNcdTNmMGVcdTNmNTNcdTc1NDJcdTc1NmRcdTc1NzJcdTc1OGRcdTNmN2NcdTc1YzhcdTc1ZGNcdTNmYzBcdTc2NGRcdTNmZDdcdTc2NzRcdTNmZGNcdTc2N2Fc''@;'; put 'put ''dXsyNGY1Y31cdTcxODhcdTU2MjNcdTg5ODBcdTU4NjlcdTQwMWRcdTc3NDNcdTQwMzlcdTY3NjFcdTQwNDVcdTM1ZGJcdTc3OThcdTQwNmFcdTQwNmZcdTVjNWVcdTc3YmVcdTc3Y2JcdTU4ZjJcdTc4MThcdTcwYjlcdTc4MWNcdTQwYThcdTc4MzlcdTc4NDdcdTc4NTFcdTc4NjZcdTg0NDhc''@;'; put 'put ''dXsyNTUzNX1cdTc5MzNcdTY4MDNcdTc5MzJcdTQxMDMiXSxbIjk5NDAiLCJcdTQxMDlcdTc5OTFcdTc5OTlcdThmYmJcdTdhMDZcdThmYmNcdTQxNjdcdTdhOTFcdTQxYjJcdTdhYmNcdTgyNzlcdTQxYzRcdTdhY2ZcdTdhZGJcdTQxY2ZcdTRlMjFcdTdiNjJcdTdiNmNcdTdiN2JcdTdjMTJc''@;'; put 'put ''dTdjMWJcdTQyNjBcdTQyN2FcdTdjN2JcdTdjOWNcdTQyOGNcdTdjYjhcdTQyOTRcdTdjZWRcdThmOTNcdTcwYzBcdXsyMGNjZn1cdTdkY2ZcdTdkZDRcdTdkZDBcdTdkZmRcdTdmYWVcdTdmYjRcdTcyOWZcdTQzOTdcdTgwMjBcdTgwMjVcdTdiMzlcdTgwMmVcdTgwMzFcdTgwNTRcdTNkY2Nc''@;'; put 'put ''dTU3YjRcdTcwYTBcdTgwYjdcdTgwZTlcdTQzZWRcdTgxMGNcdTczMmFcdTgxMGVcdTgxMTJcdTc1NjBcdTgxMTRcdTQ0MDFcdTNiMzlcdTgxNTZcdTgxNTlcdTgxNWEiXSxbIjk5YTEiLCJcdTQ0MTNcdTU4M2FcdTgxN2NcdTgxODRcdTQ0MjVcdTgxOTNcdTQ0MmRcdTgxYTVcdTU3ZWZcdTgx''@;'; put 'put ''YzFcdTgxZTRcdTgyNTRcdTQ0OGZcdTgyYTZcdTgyNzZcdTgyY2FcdTgyZDhcdTgyZmZcdTQ0YjBcdTgzNTdcdTk2NjlcdTY5OGFcdTg0MDVcdTcwZjVcdTg0NjRcdTYwZTNcdTg0ODhcdTQ1MDRcdTg0YmVcdTg0ZTFcdTg0ZjhcdTg1MTBcdTg1MzhcdTg1NTJcdTQ1M2JcdTg1NmZcdTg1NzBc''@;'; put 'put ''dTg1ZTBcdTQ1NzdcdTg2NzJcdTg2OTJcdTg2YjJcdTg2ZWZcdTk2NDVcdTg3OGJcdTQ2MDZcdTQ2MTdcdTg4YWVcdTg4ZmZcdTg5MjRcdTg5NDdcdTg5OTFcdXsyNzk2N31cdThhMjlcdThhMzhcdThhOTRcdThhYjRcdThjNTFcdThjZDRcdThjZjJcdThkMWNcdTQ3OThcdTU4NWZcdThkYzNc''@;'; put 'put ''dTQ3ZWRcdTRlZWVcdThlM2FcdTU1ZDhcdTU3NTRcdThlNzFcdTU1ZjVcdThlYjBcdTQ4MzdcdThlY2VcdThlZTJcdThlZTRcdThlZWRcdThlZjJcdThmYjdcdThmYzFcdThmY2FcdThmY2NcdTkwMzNcdTk5YzRcdTQ4YWRcdTk4ZTBcdTkyMTNcdTQ5MWVcdTkyMjhcdTkyNThcdTkyNmJcdTky''@;'; put 'put ''YjFcdTkyYWVcdTkyYmYiXSxbIjlhNDAiLCJcdTkyZTNcdTkyZWJcdTkyZjNcdTkyZjRcdTkyZmRcdTkzNDNcdTkzODRcdTkzYWRcdTQ5NDVcdTQ5NTFcdTllYmZcdTk0MTdcdTUzMDFcdTk0MWRcdTk0MmRcdTk0M2VcdTQ5NmFcdTk0NTRcdTk0NzlcdTk1MmRcdTk1YTJcdTQ5YTdcdTk1ZjRc''@;'; put 'put ''dTk2MzNcdTQ5ZTVcdTY3YTBcdTRhMjRcdTk3NDBcdTRhMzVcdTk3YjJcdTk3YzJcdTU2NTRcdTRhZTRcdTYwZThcdTk4YjlcdTRiMTlcdTk4ZjFcdTU4NDRcdTk5MGVcdTk5MTlcdTUxYjRcdTk5MWNcdTk5MzdcdTk5NDJcdTk5NWRcdTk5NjJcdTRiNzBcdTk5YzVcdTRiOWRcdTlhM2NcdTli''@;'; put 'put ''MGZcdTdhODNcdTliNjlcdTliODFcdTliZGRcdTliZjFcdTliZjRcdTRjNmRcdTljMjBcdTM3NmZcdXsyMWJjMn1cdTlkNDlcdTljM2EiXSxbIjlhYTEiLCJcdTllZmVcdTU2NTBcdTlkOTNcdTlkYmRcdTlkYzBcdTlkZmNcdTk0ZjZcdThmYjZcdTllN2JcdTllYWNcdTllYjFcdTllYmRcdTll''@;'; put 'put ''YzZcdTk0ZGNcdTllZTJcdTllZjFcdTllZjhcdTdhYzhcdTlmNDRcdXsyMDA5NH1cdXsyMDJiN31cdXsyMDNhMH1cdTY5MWFcdTk0YzNcdTU5YWNcdXsyMDRkN31cdTU4NDBcdTk0YzFcdTM3YjlcdXsyMDVkNX1cdXsyMDYxNX1cdXsyMDY3Nn1cdXsyMTZiYX1cdTU3NTdcdTcxNzNcdXsyMGFj''@;'; put 'put ''Mn1cdXsyMGFjZH1cdXsyMGJiZn1cdTU0NmFcdXsyZjgzYn1cdXsyMGJjYn1cdTU0OWVcdXsyMGJmYn1cdXsyMGMzYn1cdXsyMGM1M31cdXsyMGM2NX1cdXsyMGM3Y31cdTYwZTdcdXsyMGM4ZH1cdTU2N2FcdXsyMGNiNX1cdXsyMGNkZH1cdXsyMGNlZH1cdXsyMGQ2Zn1cdXsyMGRiMn1cdXsy''@;'; put 'put ''MGRjOH1cdTY5NTVcdTljMmZcdTg3YTVcdXsyMGUwNH1cdXsyMGUwZX1cdXsyMGVkN31cdXsyMGY5MH1cdXsyMGYyZH1cdXsyMGU3M31cdTVjMjBcdXsyMGZiY31cdTVlMGJcdXsyMTA1Y31cdXsyMTA0Zn1cdXsyMTA3Nn1cdTY3MWVcdXsyMTA3Yn1cdXsyMTA4OH1cdXsyMTA5Nn1cdTM2NDdc''@;'; put 'put ''dXsyMTBiZn1cdXsyMTBkM31cdXsyMTEyZn1cdXsyMTEzYn1cdTUzNjRcdTg0YWRcdXsyMTJlM31cdXsyMTM3NX1cdXsyMTMzNn1cdThiODFcdXsyMTU3N31cdXsyMTYxOX1cdXsyMTdjM31cdXsyMTdjN31cdTRlNzhcdTcwYmJcdXsyMTgyZH1cdXsyMTk2YX0iXSxbIjliNDAiLCJcdXsyMWEy''@;'; put 'put ''ZH1cdXsyMWE0NX1cdXsyMWMyYX1cdXsyMWM3MH1cdXsyMWNhY31cdXsyMWVjOH1cdTYyYzNcdXsyMWVkNX1cdXsyMWYxNX1cdTcxOThcdTY4NTVcdXsyMjA0NX1cdTY5ZTlcdTM2YzhcdXsyMjI3Y31cdXsyMjNkN31cdXsyMjNmYX1cdXsyMjcyYX1cdXsyMjg3MX1cdXsyMjk0Zn1cdTgyZmRc''@;'; put 'put ''dXsyMjk2N31cdXsyMjk5M31cdXsyMmFkNX1cdTg5YTVcdXsyMmFlOH1cdThmYTBcdXsyMmIwZX1cdTk3YjhcdXsyMmIzZn1cdTk4NDdcdTlhYmRcdXsyMmM0Y30iXSxbIjliNjIiLCJcdXsyMmM4OH1cdXsyMmNiN31cdXsyNWJlOH1cdXsyMmQwOH1cdXsyMmQxMn1cdXsyMmRiN31cdXsyMmQ5''@;'; put 'put ''NX1cdXsyMmU0Mn1cdXsyMmY3NH1cdXsyMmZjY31cdXsyMzAzM31cdXsyMzA2Nn1cdXsyMzMxZn1cdXsyMzNkZX1cdTVmYjFcdTY2NDhcdTY2YmZcdXsyN2E3OX1cdXsyMzU2N31cdXsyMzVmM31cdTcyMDFcdXsyNDliYX1cdTc3ZDdcdXsyMzYxYX1cdXsyMzcxNn1cdTdlODdcdXsyMDM0Nn1c''@;'; put 'put ''dTU4YjVcdTY3MGUiXSxbIjliYTEiLCJcdTY5MThcdXsyM2FhN31cdXsyNzY1N31cdXsyNWZlMn1cdXsyM2UxMX1cdXsyM2ViOX1cdXsyNzVmZX1cdXsyMjA5YX1cdTQ4ZDBcdTRhYjhcdXsyNDExOX1cdXsyOGE5YX1cdXsyNDJlZX1cdXsyNDMwZH1cdXsyNDAzYn1cdXsyNDMzNH1cdXsyNDM5''@;'; put 'put ''Nn1cdXsyNGE0NX1cdXsyMDVjYX1cdTUxZDJcdXsyMDYxMX1cdTU5OWZcdXsyMWVhOH1cdTNiYmVcdXsyM2NmZn1cdXsyNDQwNH1cdXsyNDRkNn1cdTU3ODhcdXsyNDY3NH1cdTM5OWJcdXsyNDcyZn1cdXsyODVlOH1cdXsyOTljOX1cdTM3NjJcdXsyMjFjM31cdThiNWVcdXsyOGI0ZX1cdTk5''@;'; put 'put ''ZDZcdXsyNDgxMn1cdXsyNDhmYn1cdXsyNGExNX1cdTcyMDlcdXsyNGFjMH1cdXsyMGM3OH1cdTU5NjVcdXsyNGVhNX1cdXsyNGY4Nn1cdXsyMDc3OX1cdThlZGFcdXsyNTAyY31cdTUyOGZcdTU3M2ZcdTcxNzFcdXsyNTI5OX1cdXsyNTQxOX1cdXsyM2Y0YX1cdXsyNGFhN31cdTU1YmNcdXsy''@;'; put 'put ''NTQ0Nn1cdXsyNTQ2ZX1cdXsyNmI1Mn1cdTkxZDRcdTM0NzNcdXsyNTUzZn1cdXsyNzYzMn1cdXsyNTU1ZX1cdTQ3MThcdXsyNTU2Mn1cdXsyNTU2Nn1cdXsyNTdjN31cdXsyNDkzZn1cdXsyNTg1ZH1cdTUwNjZcdTM0ZmJcdXsyMzNjY31cdTYwZGVcdXsyNTkwM31cdTQ3N2NcdXsyODk0OH1c''@;'; put 'put ''dXsyNWFhZX1cdXsyNWI4OX1cdXsyNWMwNn1cdXsyMWQ5MH1cdTU3YTFcdTcxNTFcdTZmYjZcdXsyNjEwMn1cdXsyN2MxMn1cdTkwNTZcdXsyNjFiMn1cdXsyNGY5YX1cdThiNjJcdXsyNjQwMn1cdXsyNjQ0YX0iXSxbIjljNDAiLCJcdTVkNWJcdXsyNmJmN31cdThmMzZcdXsyNjQ4NH1cdXsy''@;'; put 'put ''MTkxY31cdThhZWFcdXsyNDlmNn1cdXsyNjQ4OH1cdXsyM2ZlZn1cdXsyNjUxMn1cdTRiYzBcdXsyNjViZn1cdXsyNjZiNX1cdXsyMjcxYn1cdTk0NjVcdXsyNTdlMX1cdTYxOTVcdTVhMjdcdXsyZjhjZH1cdTRmYmJcdTU2YjlcdXsyNDUyMX1cdXsyNjZmY31cdTRlNmFcdXsyNDkzNH1cdTk2''@;'; put 'put ''NTZcdTZkOGZcdXsyNmNiZH1cdTM2MThcdTg5NzdcdXsyNjc5OX1cdXsyNjg2ZX1cdXsyNjQxMX1cdXsyNjg1ZX1cdTcxZGZcdXsyNjhjN31cdTdiNDJcdXsyOTBjMH1cdXsyMGExMX1cdXsyNjkyNn1cdTkxMDRcdXsyNjkzOX1cdTdhNDVcdTlkZjBcdXsyNjlmYX1cdTlhMjZcdXsyNmEyZH1c''@;'; put 'put ''dTM2NWZcdXsyNjQ2OX1cdXsyMDAyMX1cdTc5ODNcdXsyNmEzNH1cdXsyNmI1Yn1cdTVkMmNcdXsyMzUxOX1cdTgzY2ZcdXsyNmI5ZH1cdTQ2ZDBcdXsyNmNhNH1cdTc1M2JcdTg4NjVcdXsyNmRhZX1cdTU4YjYiXSxbIjljYTEiLCJcdTM3MWNcdXsyMjU4ZH1cdXsyNzA0Yn1cdXsyNzFjZH1c''@;'; put 'put ''dTNjNTRcdXsyNzI4MH1cdXsyNzI4NX1cdTkyODFcdXsyMjE3YX1cdXsyNzI4Yn1cdTkzMzBcdXsyNzJlNn1cdXsyNDlkMH1cdTZjMzlcdTk0OWZcdXsyNzQ1MH1cdXsyMGVmOH1cdTg4MjdcdTg4ZjVcdXsyMjkyNn1cdXsyODQ3M31cdXsyMTdiMX1cdTZlYjhcdXsyNGEyYX1cdXsyMTgyMH1c''@;'; put 'put ''dTM5YTRcdTM2YjlcdTVjMTBcdTc5ZTNcdTQ1M2ZcdTY2YjZcdXsyOWNhZH1cdXsyOThhNH1cdTg5NDNcdXsyNzdjY31cdXsyNzg1OH1cdTU2ZDZcdTQwZGZcdXsyMTYwYX1cdTM5YTFcdXsyMzcyZn1cdXsyODBlOH1cdXsyMTNjNX1cdTcxYWRcdTgzNjZcdXsyNzlkZH1cdXsyOTFhOH1cdTVh''@;'; put 'put ''NjdcdTRjYjdcdXsyNzBhZn1cdXsyODlhYn1cdXsyNzlmZH1cdXsyN2EwYX1cdXsyN2IwYn1cdXsyN2Q2Nn1cdXsyNDE3YX1cdTdiNDNcdTc5N2VcdXsyODAwOX1cdTZmYjVcdXsyYTJkZn1cdTZhMDNcdXsyODMxOH1cdTUzYTJcdXsyNmUwN31cdTkzYmZcdTY4MzZcdTk3NWRcdXsyODE2Zn1c''@;'; put 'put ''dXsyODAyM31cdXsyNjliNX1cdXsyMTNlZH1cdXsyMzIyZn1cdXsyODA0OH1cdTVkODVcdXsyOGMzMH1cdXsyODA4M31cdTU3MTVcdTk4MjNcdXsyODk0OX1cdTVkYWJcdXsyNDk4OH1cdTY1YmVcdTY5ZDVcdTUzZDJcdXsyNGFhNX1cdXsyM2Y4MX1cdTNjMTFcdTY3MzZcdXsyODA5MH1cdXsy''@;'; put 'put ''ODBmNH1cdXsyODEyZX1cdXsyMWZhMX1cdXsyODE0Zn0iXSxbIjlkNDAiLCJcdXsyODE4OX1cdXsyODFhZn1cdXsyODIxYX1cdXsyODMwNn1cdXsyODMyZn1cdXsyODM4YX1cdTM1Y2FcdXsyODQ2OH1cdXsyODZhYX1cdTQ4ZmFcdTYzZTZcdXsyODk1Nn1cdTc4MDhcdTkyNTVcdXsyODliOH1c''@;'; put 'put ''dTQzZjJcdXsyODllN31cdTQzZGZcdXsyODllOH1cdXsyOGI0Nn1cdXsyOGJkNH1cdTU5ZjhcdXsyOGMwOX1cdThmMGJcdXsyOGZjNX1cdXsyOTBlY31cdTdiNTFcdXsyOTExMH1cdXsyOTEzY31cdTNkZjdcdXsyOTE1ZX1cdXsyNGFjYX1cdThmZDBcdTcyOGZcdTU2OGJcdXsyOTRlN31cdXsy''@;'; put 'put ''OTVlOX1cdXsyOTViMH1cdXsyOTViOH1cdXsyOTczMn1cdXsyOThkMX1cdXsyOTk0OX1cdXsyOTk2YX1cdXsyOTljM31cdXsyOWEyOH1cdXsyOWIwZX1cdXsyOWQ1YX1cdXsyOWQ5Yn1cdTdlOWZcdXsyOWVmOH1cdXsyOWYyM31cdTRjYTRcdTk1NDdcdXsyYTI5M31cdTcxYTJcdXsyYTJmZn1c''@;'; put 'put ''dTRkOTFcdTkwMTJcdXsyYTVjYn1cdTRkOWNcdXsyMGM5Y31cdThmYmVcdTU1YzEiXSxbIjlkYTEiLCJcdThmYmFcdXsyMjRiMH1cdThmYjlcdXsyNGE5M31cdTQ1MDlcdTdlN2ZcdTZmNTZcdTZhYjFcdTRlZWFcdTM0ZTRcdXsyOGIyY31cdXsyNzg5ZH1cdTM3M2FcdThlODBcdXsyMTdmNX1c''@;'; put 'put ''dXsyODAyNH1cdXsyOGI2Y31cdXsyOGI5OX1cdXsyN2EzZX1cdXsyNjZhZn1cdTNkZWJcdXsyNzY1NX1cdXsyM2NiN31cdXsyNTYzNX1cdXsyNTk1Nn1cdTRlOWFcdXsyNWU4MX1cdXsyNjI1OH1cdTU2YmZcdXsyMGU2ZH1cdThlMGVcdTViNmRcdXsyM2U4OH1cdXsyNGM5ZX1cdTYzZGVcdTYy''@;'; put 'put ''ZDBcdXsyMTdmNn1cdXsyMTg3Yn1cdTY1MzBcdTU2MmRcdXsyNWM0YX1cdTU0MWFcdXsyNTMxMX1cdTNkYzZcdXsyOWQ5OH1cdTRjN2RcdTU2MjJcdTU2MWVcdTdmNDlcdXsyNWVkOH1cdTU5NzVcdXsyM2Q0MH1cdTg3NzBcdTRlMWNcdXsyMGZlYX1cdXsyMGQ0OX1cdXsyMzZiYX1cdTgxMTdc''@;'; put 'put ''dTlkNWVcdThkMThcdTc2M2JcdTljNDVcdTc2NGVcdTc3YjlcdTkzNDVcdTU0MzJcdTgxNDhcdTgyZjdcdTU2MjVcdTgxMzJcdTg0MThcdTgwYmRcdTU1ZWFcdTc5NjJcdTU2NDNcdTU0MTZcdXsyMGU5ZH1cdTM1Y2VcdTU2MDVcdTU1ZjFcdTY2ZjFcdXsyODJlMn1cdTM2MmRcdTc1MzRcdTU1''@;'; put 'put ''ZjBcdTU1YmFcdTU0OTdcdTU1NzJcdXsyMGM0MX1cdXsyMGM5Nn1cdTVlZDBcdXsyNTE0OH1cdXsyMGU3Nn1cdXsyMmM2Mn0iXSxbIjllNDAiLCJcdXsyMGVhMn1cdTllYWJcdTdkNWFcdTU1ZGVcdXsyMTA3NX1cdTYyOWRcdTk3NmRcdTU0OTRcdThjY2RcdTcxZjZcdTkxNzZcdTYzZmNcdTYz''@;'; put 'put ''YjlcdTYzZmVcdTU1NjlcdXsyMmI0M31cdTljNzJcdXsyMmViM31cdTUxOWFcdTM0ZGZcdXsyMGRhN31cdTUxYTdcdTU0NGRcdTU1MWVcdTU1MTNcdTc2NjZcdThlMmRcdXsyNjg4YX1cdTc1YjFcdTgwYjZcdTg4MDRcdTg3ODZcdTg4YzdcdTgxYjZcdTg0MWNcdXsyMTBjMX1cdTQ0ZWNcdTcz''@;'; put 'put ''MDRcdXsyNDcwNn1cdTViOTBcdTgzMGJcdXsyNjg5M31cdTU2N2JcdXsyMjZmNH1cdXsyN2QyZn1cdXsyNDFhM31cdXsyN2Q3M31cdXsyNmVkMH1cdXsyNzJiNn1cdTkxNzBcdXsyMTFkOX1cdTkyMDhcdXsyM2NmY31cdXsyYTZhOX1cdXsyMGVhY31cdXsyMGVmOX1cdTcyNjZcdXsyMWNhMn1c''@;'; put 'put ''dTQ3NGVcdXsyNGZjMn1cdXsyN2ZmOX1cdXsyMGZlYn1cdTQwZmEiXSxbIjllYTEiLCJcdTljNWRcdTY1MWZcdXsyMmRhMH1cdTQ4ZjNcdXsyNDdlMH1cdXsyOWQ3Y31cdXsyMGZlY31cdXsyMGUwYX1cdTYwNjJcdXsyNzVhM31cdXsyMGZlZH0iXSxbIjllYWQiLCJcdXsyNjA0OH1cdXsyMTE4''@;'; put 'put ''N31cdTcxYTNcdTdlOGVcdTlkNTBcdTRlMWFcdTRlMDRcdTM1NzdcdTViMGRcdTZjYjJcdTUzNjdcdTM2YWNcdTM5ZGNcdTUzN2RcdTM2YTVcdXsyNDYxOH1cdTU4OWFcdXsyNGI2ZX1cdTgyMmRcdTU0NGJcdTU3YWFcdXsyNWE5NX1cdXsyMDk3OX0iXSxbIjllYzUiLCJcdTNhNTJcdXsyMjQ2''@;'; put 'put ''NX1cdTczNzRcdXsyOWVhY31cdTRkMDlcdTliZWRcdXsyM2NmZX1cdXsyOWYzMH1cdTRjNWJcdXsyNGZhOX1cdXsyOTU5ZX1cdXsyOWZkZX1cdTg0NWNcdXsyM2RiNn1cdXsyNzJiMn1cdXsyNjdiM31cdXsyMzcyMH1cdTYzMmVcdTdkMjVcdXsyM2VmN31cdXsyM2UyY31cdTNhMmFcdTkwMDhc''@;'; put 'put ''dTUyY2NcdTNlNzRcdTM2N2FcdTQ1ZTlcdXsyMDQ4ZX1cdTc2NDBcdTVhZjBcdXsyMGViNn1cdTc4N2FcdXsyN2YyZX1cdTU4YTdcdTQwYmZcdTU2N2NcdTliOGJcdTVkNzRcdTc2NTRcdXsyYTQzNH1cdTllODVcdTRjZTFcdTc1ZjlcdTM3ZmJcdTYxMTlcdXsyMzBkYX1cdXsyNDNmMn0iXSxb''@;'; put 'put ''IjllZjUiLCJcdTU2NWRcdXsyMTJhOX1cdTU3YTdcdXsyNDk2M31cdXsyOWUwNn1cdTUyMzRcdXsyNzBhZX1cdTM1YWRcdTZjNGFcdTlkN2MiXSxbIjlmNDAiLCJcdTdjNTZcdTliMzlcdTU3ZGVcdXsyMTc2Y31cdTVjNTNcdTY0ZDNcdXsyOTRkMH1cdXsyNjMzNX1cdXsyNzE2NH1cdTg2YWRc''@;'; put 'put ''dXsyMGQyOH1cdXsyNmQyMn1cdXsyNGFlMn1cdXsyMGQ3MX0iXSxbIjlmNGYiLCJcdTUxZmVcdXsyMWYwZn1cdTVkOGVcdTk3MDNcdXsyMWRkMX1cdTllODFcdTkwNGNcdTdiMWZcdTliMDJcdTVjZDFcdTdiYTNcdTYyNjhcdTYzMzVcdTlhZmZcdTdiY2ZcdTliMmFcdTdjN2VcdTliMmVcdTdj''@;'; put 'put ''NDJcdTdjODZcdTljMTVcdTdiZmNcdTliMDlcdTlmMTdcdTljMWJcdXsyNDkzZX1cdTlmNWFcdTU1NzNcdTViYzNcdTRmZmRcdTllOThcdTRmZjJcdTUyNjBcdTNlMDZcdTUyZDFcdTU3NjdcdTUwNTZcdTU5YjdcdTVlMTJcdTk3YzhcdTlkYWJcdThmNWNcdTU0NjlcdTk3YjRcdTk5NDBcdTk3''@;'; put 'put ''YmFcdTUzMmNcdTYxMzAiXSxbIjlmYTEiLCJcdTY5MmNcdTUzZGFcdTljMGFcdTlkMDJcdTRjM2JcdTk2NDFcdTY5ODBcdTUwYTZcdTc1NDZcdXsyMTc2ZH1cdTk5ZGFcdTUyNzMiXSxbIjlmYWUiLCJcdTkxNTlcdTk2ODFcdTkxNWMiXSxbIjlmYjIiLCJcdTkxNTFcdXsyOGU5N31cdTYzN2Zc''@;'; put 'put ''dXsyNmQyM31cdTZhY2FcdTU2MTFcdTkxOGVcdTc1N2FcdTYyODVcdXsyMDNmY31cdTczNGZcdTdjNzBcdXsyNWMyMX1cdXsyM2NmZH0iXSxbIjlmYzEiLCJcdXsyNDkxOX1cdTc2ZDZcdTliOWRcdTRlMmFcdXsyMGNkNH1cdTgzYmVcdTg4NDIiXSxbIjlmYzkiLCJcdTVjNGFcdTY5YzBcdTUw''@;'; put 'put ''ZWRcdTU3N2FcdTUyMWZcdTVkZjVcdTRlY2VcdTZjMzFcdXsyMDFmMn1cdTRmMzlcdTU0OWNcdTU0ZGFcdTUyOWFcdThkODJcdTM1ZmVcdTVmMGNcdTM1ZjMiXSxbIjlmZGIiLCJcdTZiNTJcdTkxN2NcdTlmYTVcdTliOTdcdTk4MmVcdTk4YjRcdTlhYmFcdTllYThcdTllODRcdTcxN2FcdTdi''@;'; put 'put ''MTQiXSxbIjlmZTciLCJcdTZiZmFcdTg4MThcdTdmNzgiXSxbIjlmZWIiLCJcdTU2MjBcdXsyYTY0YX1cdThlNzdcdTlmNTMiXSxbIjlmZjAiLCJcdThkZDRcdThlNGZcdTllMWNcdThlMDFcdTYyODJcdXsyODM3ZH1cdThlMjhcdThlNzVcdTdhZDNcdXsyNGE3N31cdTdhM2VcdTc4ZDhcdTZj''@;'; put 'put ''ZWFcdThhNjdcdTc2MDciXSxbImEwNDAiLCJcdXsyOGE1YX1cdTlmMjZcdTZjY2VcdTg3ZDZcdTc1YzNcdXsyYTJiMn1cdTc4NTNcdXsyZjg0MH1cdThkMGNcdTcyZTJcdTczNzFcdThiMmRcdTczMDJcdTc0ZjFcdThjZWJcdXsyNGFiYn1cdTg2MmZcdTVmYmFcdTg4YTBcdTQ0YjciXSxbImEw''@;'; put 'put ''NTUiLCJcdXsyMTgzYn1cdXsyNmUwNX0iXSxbImEwNTgiLCJcdThhN2VcdXsyMjUxYn0iXSxbImEwNWIiLCJcdTYwZmRcdTc2NjdcdTlhZDdcdTlkNDRcdTkzNmVcdTliOGZcdTg3ZjUiXSxbImEwNjMiLCJcdTg4MGZcdThjZjdcdTczMmNcdTk3MjFcdTliYjBcdTM1ZDZcdTcyYjJcdTRjMDdc''@;'; put 'put ''dTdjNTFcdTk5NGFcdXsyNjE1OX1cdTYxNTlcdTRjMDRcdTllOTZcdTYxN2QiXSxbImEwNzMiLCJcdTU3NWZcdTYxNmZcdTYyYTZcdTYyMzlcdTYyY2VcdTNhNWNcdTYxZTJcdTUzYWFcdXsyMzNmNX1cdTYzNjRcdTY4MDJcdTM1ZDIiXSxbImEwYTEiLCJcdTVkNTdcdXsyOGJjMn1cdThmZGFc''@;'; put 'put ''dXsyOGUzOX0iXSxbImEwYTYiLCJcdTUwZDlcdXsyMWQ0Nn1cdTc5MDZcdTUzMzJcdTk2MzhcdXsyMGYzYn1cdTQwNjUiXSxbImEwYWUiLCJcdTc3ZmUiXSxbImEwYjAiLCJcdTdjYzJcdXsyNWYxYX1cdTdjZGFcdTdhMmRcdTgwNjZcdTgwNjNcdTdkNGRcdTc1MDVcdTc0ZjJcdTg5OTRcdTgy''@;'; put 'put ''MWFcdTY3MGNcdTgwNjJcdXsyNzQ4Nn1cdTgwNWJcdTc0ZjBcdTgxMDNcdTc3MjRcdTg5ODlcdXsyNjdjY31cdTc1NTNcdXsyNmVkMX1cdTg3YTlcdTg3Y2VcdTgxYzhcdTg3OGNcdThhNDlcdThjYWRcdThiNDNcdTc3MmJcdTc0ZjhcdTg0ZGFcdTM2MzVcdTY5YjJcdThkYTYiXSxbImEwZDQi''@;'; put 'put ''LCJcdTg5YTlcdTc0NjhcdTZkYjlcdTg3YzFcdXsyNDAxMX1cdTc0ZTdcdTNkZGJcdTcxNzZcdTYwYTRcdTYxOWNcdTNjZDFcdTcxNjJcdTYwNzciXSxbImEwZTIiLCJcdTdmNzFcdXsyOGIyZH1cdTcyNTBcdTYwZTlcdTRiN2VcdTUyMjBcdTNjMThcdXsyM2NjN31cdXsyNWVkN31cdXsyNzY1''@;'; put 'put ''Nn1cdXsyNTUzMX1cdXsyMTk0NH1cdXsyMTJmZX1cdXsyOTkwM31cdXsyNmRkY31cdXsyNzBhZH1cdTVjYzFcdXsyNjFhZH1cdXsyOGEwZn1cdXsyMzY3N31cdXsyMDBlZX1cdXsyNjg0Nn1cdXsyNGYwZX1cdTQ1NjJcdTViMWZcdXsyNjM0Y31cdTlmNTBcdTllYTZcdXsyNjI2Yn0iXSxbImEz''@;'; put 'put ''YzAiLCJcdTI0MDAiLDMxLCJcdTI0MjEiXSxbImM2YTEiLCJcdTI0NjAiLDksIlx1MjQ3NCIsOSwiXHUyMTcwIiw5LCJcdTRlMzZcdTRlM2ZcdTRlODVcdTRlYTBcdTUxODJcdTUxOTZcdTUxYWJcdTUyZjlcdTUzMzhcdTUzNjlcdTUzYjZcdTU5MGFcdTViODBcdTVkZGJcdTJmMzNcdTVlN2Zc''@;'; put 'put ''dTVlZjRcdTVmNTBcdTVmNjFcdTY1MzRcdTY1ZTBcdTc1OTJcdTc2NzZcdThmYjVcdTk2YjZceGE4XHUwMmM2XHUzMGZkXHUzMGZlXHUzMDlkXHUzMDllXHUzMDAzXHU0ZWRkXHUzMDA1XHUzMDA2XHUzMDA3XHUzMGZjXHVmZjNiXHVmZjNkXHUyNzNkXHUzMDQxIiwyM10sWyJjNzQwIiwiXHUz''@;'; put 'put ''MDU5Iiw1OCwiXHUzMGExXHUzMGEyXHUzMGEzXHUzMGE0Il0sWyJjN2ExIiwiXHUzMGE1Iiw4MSwiXHUwNDEwIiw1LCJcdTA0MDFcdTA0MTYiLDRdLFsiYzg0MCIsIlx1MDQxYiIsMjYsIlx1MDQ1MVx1MDQzNiIsMjUsIlx1MjFlN1x1MjFiOFx1MjFiOVx1MzFjZlx1ezIwMGNjfVx1NGU1YVx1''@;'; put 'put ''ezIwMDhhfVx1NTIwMlx1NDQ5MSJdLFsiYzhhMSIsIlx1OWZiMFx1NTE4OFx1OWZiMVx1ezI3NjA3fSJdLFsiYzhjZCIsIlx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1MzIzMVx1MjExNlx1MjEyMVx1MzA5Ylx1MzA5Y1x1MmU4MFx1MmU4NFx1MmU4Nlx1MmU4N1x1MmU4OFx1MmU4YVx1MmU4''@;'; put 'put ''Y1x1MmU4ZFx1MmU5NVx1MmU5Y1x1MmU5ZFx1MmVhNVx1MmVhN1x1MmVhYVx1MmVhY1x1MmVhZVx1MmViNlx1MmViY1x1MmViZVx1MmVjNlx1MmVjYVx1MmVjY1x1MmVjZFx1MmVjZlx1MmVkNlx1MmVkN1x1MmVkZVx1MmVlMyJdLFsiYzhmNSIsIlx1MDI4M1x1MDI1MFx1MDI1Ylx1MDI1NFx1''@;'; put 'put ''MDI3NVx1MDE1M1x4ZjhcdTAxNGJcdTAyOGFcdTAyNmEiXSxbImY5ZmUiLCJcdWZmZWQiXSxbImZhNDAiLCJcdXsyMDU0N31cdTkyZGJcdXsyMDVkZn1cdXsyM2ZjNX1cdTg1NGNcdTQyYjVcdTczZWZcdTUxYjVcdTM2NDlcdXsyNDk0Mn1cdXsyODllNH1cdTkzNDRcdXsyMTlkYn1cdTgyZWVc''@;'; put 'put ''dXsyM2NjOH1cdTc4M2NcdTY3NDRcdTYyZGZcdXsyNDkzM31cdXsyODlhYX1cdXsyMDJhMH1cdXsyNmJiM31cdXsyMTMwNX1cdTRmYWJcdXsyMjRlZH1cdTUwMDhcdXsyNmQyOX1cdXsyN2E4NH1cdXsyMzYwMH1cdXsyNGFiMX1cdXsyMjUxM31cdTUwMjlcdXsyMDM3ZX1cdTVmYTRcdXsyMDM4''@;'; put 'put ''MH1cdXsyMDM0N31cdTZlZGJcdXsyMDQxZn1cdTUwN2RcdTUxMDFcdTM0N2FcdTUxMGVcdTk4NmNcdTM3NDNcdTg0MTZcdXsyNDlhNH1cdXsyMDQ4N31cdTUxNjBcdXsyMzNiNH1cdTUxNmFcdXsyMGJmZn1cdXsyMjBmY31cdXsyMDJlNX1cdXsyMjUzMH1cdXsyMDU4ZX1cdXsyMzIzM31cdXsy''@;'; put 'put ''MTk4M31cdTViODJcdTg3N2RcdXsyMDViM31cdXsyM2M5OX1cdTUxYjJcdTUxYjgiXSxbImZhYTEiLCJcdTlkMzRcdTUxYzlcdTUxY2ZcdTUxZDFcdTNjZGNcdTUxZDNcdXsyNGFhNn1cdTUxYjNcdTUxZTJcdTUzNDJcdTUxZWRcdTgzY2RcdTY5M2VcdXsyMzcyZH1cdTVmN2JcdTUyMGJcdTUy''@;'; put 'put ''MjZcdTUyM2NcdTUyYjVcdTUyNTdcdTUyOTRcdTUyYjlcdTUyYzVcdTdjMTVcdTg1NDJcdTUyZTBcdTg2MGRcdXsyNmIxM31cdTUzMDVcdXsyOGFkZX1cdTU1NDlcdTZlZDlcdXsyM2Y4MH1cdXsyMDk1NH1cdXsyM2ZlY31cdTUzMzNcdTUzNDRcdXsyMGJlMn1cdTZjY2JcdXsyMTcyNn1cdTY4''@;'; put 'put ''MWJcdTczZDVcdTYwNGFcdTNlYWFcdTM4Y2NcdXsyMTZlOH1cdTcxZGRcdTQ0YTJcdTUzNmRcdTUzNzRcdXsyODZhYn1cdTUzN2VcdTUzN2ZcdXsyMTU5Nn1cdXsyMTYxM31cdTc3ZTZcdTUzOTNcdXsyOGE5Yn1cdTUzYTBcdTUzYWJcdTUzYWVcdTczYTdcdXsyNTc3Mn1cdTNmNTlcdTczOWNc''@;'; put 'put ''dTUzYzFcdTUzYzVcdTZjNDlcdTRlNDlcdTU3ZmVcdTUzZDlcdTNhYWJcdXsyMGI4Zn1cdTUzZTBcdXsyM2ZlYn1cdXsyMmRhM31cdTUzZjZcdXsyMGM3N31cdTU0MTNcdTcwNzlcdTU1MmJcdTY2NTdcdTZkNWJcdTU0NmRcdXsyNmI1M31cdXsyMGQ3NH1cdTU1NWRcdTU0OGZcdTU0YTRcdTQ3''@;'; put 'put ''YTZcdXsyMTcwZH1cdXsyMGVkZH1cdTNkYjRcdXsyMGQ0ZH0iXSxbImZiNDAiLCJcdXsyODliY31cdXsyMjY5OH1cdTU1NDdcdTRjZWRcdTU0MmZcdTc0MTdcdTU1ODZcdTU1YTlcdTU2MDVcdXsyMThkN31cdXsyNDAzYX1cdTQ1NTJcdXsyNDQzNX1cdTY2YjNcdXsyMTBiNH1cdTU2MzdcdTY2''@;'; put 'put ''Y2RcdXsyMzI4YX1cdTY2YTRcdTY2YWRcdTU2NGRcdTU2NGZcdTc4ZjFcdTU2ZjFcdTk3ODdcdTUzZmVcdTU3MDBcdTU2ZWZcdTU2ZWRcdXsyOGI2Nn1cdTM2MjNcdXsyMTI0Zn1cdTU3NDZcdXsyNDFhNX1cdTZjNmVcdTcwOGJcdTU3NDJcdTM2YjFcdXsyNmM3ZX1cdTU3ZTZcdXsyMTQxNn1c''@;'; put 'put ''dTU4MDNcdXsyMTQ1NH1cdXsyNDM2M31cdTU4MjZcdXsyNGJmNX1cdTU4NWNcdTU4YWFcdTM1NjFcdTU4ZTBcdTU4ZGNcdXsyMTIzY31cdTU4ZmJcdTViZmZcdTU3NDNcdXsyYTE1MH1cdXsyNDI3OH1cdTkzZDNcdTM1YTFcdTU5MWZcdTY4YTZcdTM2YzNcdTZlNTkiXSxbImZiYTEiLCJcdXsy''@;'; put 'put ''MTYzZX1cdTVhMjRcdTU1NTNcdXsyMTY5Mn1cdTg1MDVcdTU5YzlcdXsyMGQ0ZX1cdXsyNmM4MX1cdXsyNmQyYX1cdXsyMTdkY31cdTU5ZDlcdXsyMTdmYn1cdXsyMTdiMn1cdXsyNmRhNn1cdTZkNzFcdXsyMTgyOH1cdXsyMTZkNX1cdTU5ZjlcdXsyNmU0NX1cdTVhYWJcdTVhNjNcdTM2ZTZc''@;'; put 'put ''dXsyNDlhOX1cdTVhNzdcdTM3MDhcdTVhOTZcdTc0NjVcdTVhZDNcdXsyNmZhMX1cdXsyMjU1NH1cdTNkODVcdXsyMTkxMX1cdTM3MzJcdXsyMTZiOH1cdTVlODNcdTUyZDBcdTViNzZcdTY1ODhcdTViN2NcdXsyN2EwZX1cdTQwMDRcdTQ4NWRcdXsyMDIwNH1cdTViZDVcdTYxNjBcdXsyMWEz''@;'; put 'put ''NH1cdXsyNTljY31cdXsyMDVhNX1cdTViZjNcdTViOWRcdTRkMTBcdTVjMDVcdXsyMWI0NH1cdTVjMTNcdTczY2VcdTVjMTRcdXsyMWNhNX1cdXsyNmIyOH1cdTVjNDlcdTQ4ZGRcdTVjODVcdTVjZTlcdTVjZWZcdTVkOGJcdXsyMWRmOX1cdXsyMWUzN31cdTVkMTBcdTVkMThcdTVkNDZcdXsy''@;'; put 'put ''MWVhNH1cdTVjYmFcdTVkZDdcdTgyZmNcdTM4MmRcdXsyNDkwMX1cdXsyMjA0OX1cdXsyMjE3M31cdTgyODdcdTM4MzZcdTNiYzJcdTVlMmVcdTZhOGFcdTVlNzVcdTVlN2FcdXsyNDRiY31cdXsyMGNkM31cdTUzYTZcdTRlYjdcdTVlZDBcdTUzYThcdXsyMTc3MX1cdTVlMDlcdTVlZjRcdXsy''@;'; put 'put ''ODQ4Mn0iXSxbImZjNDAiLCJcdTVlZjlcdTVlZmJcdTM4YTBcdTVlZmNcdTY4M2VcdTk0MWJcdTVmMGRcdXsyMDFjMX1cdXsyZjg5NH1cdTNhZGVcdTQ4YWVcdXsyMTMzYX1cdTVmM2FcdXsyNjg4OH1cdXsyMjNkMH1cdTVmNThcdXsyMjQ3MX1cdTVmNjNcdTk3YmRcdXsyNmU2ZX1cdTVmNzJc''@;'; put 'put ''dTkzNDBcdXsyOGEzNn1cdTVmYTdcdTVkYjZcdTNkNWZcdXsyNTI1MH1cdXsyMWY2YX1cdXsyNzBmOH1cdXsyMjY2OH1cdTkxZDZcdXsyMDI5ZX1cdXsyOGEyOX1cdTYwMzFcdTY2ODVcdXsyMTg3N31cdTM5NjNcdTNkYzdcdTM2MzlcdTU3OTBcdXsyMjdiNH1cdTc5NzFcdTNlNDBcdTYwOWVc''@;'; put 'put ''dTYwYTRcdTYwYjNcdXsyNDk4Mn1cdXsyNDk4Zn1cdXsyN2E1M31cdTc0YTRcdTUwZTFcdTVhYTBcdTYxNjRcdTg0MjRcdTYxNDJcdXsyZjhhNn1cdXsyNmVkMn1cdTYxODFcdTUxZjRcdXsyMDY1Nn1cdTYxODdcdTViYWFcdXsyM2ZiN30iXSxbImZjYTEiLCJcdXsyMjg1Zn1cdTYxZDNcdXsy''@;'; put 'put ''OGI5ZH1cdXsyOTk1ZH1cdTYxZDBcdTM5MzJcdXsyMjk4MH1cdXsyMjhjMX1cdTYwMjNcdTYxNWNcdTY1MWVcdTYzOGJcdXsyMDExOH1cdTYyYzVcdXsyMTc3MH1cdTYyZDVcdXsyMmUwZH1cdTYzNmNcdXsyNDlkZn1cdTNhMTdcdTY0MzhcdTYzZjhcdXsyMTM4ZX1cdXsyMTdmY31cdTY0OTBc''@;'; put 'put ''dTZmOGFcdXsyMmUzNn1cdTk4MTRcdXsyNDA4Y31cdXsyNTcxZH1cdTY0ZTFcdTY0ZTVcdTk0N2JcdTNhNjZcdTY0M2FcdTNhNTdcdTY1NGRcdTZmMTZcdXsyNGEyOH1cdXsyNGEyM31cdTY1ODVcdTY1NmRcdTY1NWZcdXsyMzA3ZX1cdTY1YjVcdXsyNDk0MH1cdTRiMzdcdTY1ZDFcdTQwZDhc''@;'; put 'put ''dXsyMTgyOX1cdTY1ZTBcdTY1ZTNcdTVmZGZcdXsyMzQwMH1cdTY2MThcdXsyMzFmN31cdXsyMzFmOH1cdTY2NDRcdXsyMzFhNH1cdXsyMzFhNX1cdTY2NGJcdXsyMGU3NX1cdTY2NjdcdXsyNTFlNn1cdTY2NzNcdTY2NzRcdXsyMWUzZH1cdXsyMzIzMX1cdXsyODVmNH1cdXsyMzFjOH1cdXsy''@;'; put 'put ''NTMxM31cdTc3YzVcdXsyMjhmN31cdTk5YTRcdTY3MDJcdXsyNDM5Y31cdXsyNGEyMX1cdTNiMmJcdTY5ZmFcdXsyMzdjMn1cdTY3NWVcdTY3NjdcdTY3NjJcdXsyNDFjZH1cdXsyOTBlZH1cdTY3ZDdcdTQ0ZTlcdTY4MjJcdTZlNTBcdTkyM2NcdTY4MDFcdXsyMzNlNn1cdXsyNmRhMH1cdTY4''@;'; put 'put ''NWQiXSxbImZkNDAiLCJcdXsyMzQ2Zn1cdTY5ZTFcdTZhMGJcdXsyOGFkZn1cdTY5NzNcdTY4YzNcdXsyMzVjZH1cdTY5MDFcdTY5MDBcdTNkMzJcdTNhMDFcdXsyMzYzY31cdTNiODBcdTY3YWNcdTY5NjFcdXsyOGE0YX1cdTQyZmNcdTY5MzZcdTY5OThcdTNiYTFcdXsyMDNjOX1cdTgzNjNc''@;'; put 'put ''dTUwOTBcdTY5ZjlcdXsyMzY1OX1cdXsyMjEyYX1cdTZhNDVcdXsyMzcwM31cdTZhOWRcdTNiZjNcdTY3YjFcdTZhYzhcdXsyOTE5Y31cdTNjMGRcdTZiMWRcdXsyMDkyM31cdTYwZGVcdTZiMzVcdTZiNzRcdXsyMjdjZH1cdTZlYjVcdXsyM2FkYn1cdXsyMDNiNX1cdXsyMTk1OH1cdTM3NDBc''@;'; put 'put ''dTU0MjFcdXsyM2I1YX1cdTZiZTFcdXsyM2VmY31cdTZiZGNcdTZjMzdcdXsyMjQ4Yn1cdXsyNDhmMX1cdXsyNmI1MX1cdTZjNWFcdTgyMjZcdTZjNzlcdXsyM2RiY31cdTQ0YzVcdXsyM2RiZH1cdXsyNDFhNH1cdXsyNDkwY31cdXsyNDkwMH0iXSxbImZkYTEiLCJcdXsyM2NjOX1cdTM2ZTVc''@;'; put 'put ''dTNjZWJcdXsyMGQzMn1cdTliODNcdXsyMzFmOX1cdXsyMjQ5MX1cdTdmOGZcdTY4MzdcdXsyNmQyNX1cdXsyNmRhMX1cdXsyNmRlYn1cdTZkOTZcdTZkNWNcdTZlN2NcdTZmMDRcdXsyNDk3Zn1cdXsyNDA4NX1cdXsyNmU3Mn1cdTg1MzNcdXsyNmY3NH1cdTUxYzdcdTZjOWNcdTZlMWRcdTg0''@;'; put 'put ''MmVcdXsyOGIyMX1cdTZlMmZcdXsyM2UyZn1cdTc0NTNcdXsyM2Y4Mn1cdTc5Y2NcdTZlNGZcdTVhOTFcdXsyMzA0Yn1cdTZmZjhcdTM3MGRcdTZmOWRcdXsyM2UzMH1cdTZlZmFcdXsyMTQ5N31cdXsyNDAzZH1cdTQ1NTVcdTkzZjBcdTZmNDRcdTZmNWNcdTNkNGVcdTZmNzRcdXsyOTE3MH1c''@;'; put 'put ''dTNkM2JcdTZmOWZcdXsyNDE0NH1cdTZmZDNcdXsyNDA5MX1cdXsyNDE1NX1cdXsyNDAzOX1cdXsyM2ZmMH1cdXsyM2ZiNH1cdXsyNDEzZn1cdTUxZGZcdXsyNDE1Nn1cdXsyNDE1N31cdXsyNDE0MH1cdXsyNjFkZH1cdTcwNGJcdTcwN2VcdTcwYTdcdTcwODFcdTcwY2NcdTcwZDVcdTcwZDZc''@;'; put 'put ''dTcwZGZcdTQxMDRcdTNkZThcdTcxYjRcdTcxOTZcdXsyNDI3N31cdTcxMmJcdTcxNDVcdTVhODhcdTcxNGFcdTcxNmVcdTVjOWNcdXsyNDM2NX1cdTcxNGZcdTkzNjJcdXsyNDJjMX1cdTcxMmNcdXsyNDQ1YX1cdXsyNGEyN31cdXsyNGEyMn1cdTcxYmFcdXsyOGJlOH1cdTcwYmRcdTcyMGUi''@;'; put 'put ''XSxbImZlNDAiLCJcdTk0NDJcdTcyMTVcdTU5MTFcdTk0NDNcdTcyMjRcdTkzNDFcdXsyNTYwNX1cdTcyMmVcdTcyNDBcdXsyNDk3NH1cdTY4YmRcdTcyNTVcdTcyNTdcdTNlNTVcdXsyMzA0NH1cdTY4MGRcdTZmM2RcdTcyODJcdTczMmFcdTczMmJcdXsyNDgyM31cdXsyODgyYn1cdTQ4ZWRc''@;'; put 'put ''dXsyODgwNH1cdTczMjhcdTczMmVcdTczY2ZcdTczYWFcdXsyMGMzYX1cdXsyNmEyZX1cdTczYzlcdTc0NDlcdXsyNDFlMn1cdXsyMTZlN31cdXsyNGEyNH1cdTY2MjNcdTM2YzVcdXsyNDliN31cdXsyNDk4ZH1cdXsyNDlmYn1cdTczZjdcdTc0MTVcdTY5MDNcdXsyNGEyNn1cdTc0MzlcdXsy''@;'; put 'put ''MDVjM31cdTNlZDdcdTc0NWNcdXsyMjhhZH1cdTc0NjBcdXsyOGViMn1cdTc0NDdcdTczZTRcdTc0NzZcdTgzYjlcdTc0NmNcdTM3MzBcdTc0NzRcdTkzZjFcdTZhMmNcdTc0ODJcdTQ5NTNcdXsyNGE4Y30iXSxbImZlYTEiLCJcdXsyNDE1Zn1cdXsyNGE3OX1cdXsyOGI4Zn1cdTViNDZcdXsy''@;'; put 'put ''OGMwM31cdXsyMTg5ZX1cdTc0YzhcdXsyMTk4OH1cdTc1MGVcdTc0ZTlcdTc1MWVcdXsyOGVkOX1cdXsyMWE0Yn1cdTViZDdcdXsyOGVhY31cdTkzODVcdTc1NGRcdTc1NGFcdTc1NjdcdTc1NmVcdXsyNGY4Mn1cdTNmMDRcdXsyNGQxM31cdTc1OGVcdTc0NWRcdTc1OWVcdTc1YjRcdTc2MDJc''@;'; put 'put ''dTc2MmNcdTc2NTFcdTc2NGZcdTc2NmZcdTc2NzZcdXsyNjNmNX1cdTc2OTBcdTgxZWZcdTM3ZjhcdXsyNjkxMX1cdXsyNjkwZX1cdTc2YTFcdTc2YTVcdTc2YjdcdTc2Y2NcdXsyNmY5Zn1cdTg0NjJcdXsyNTA5ZH1cdXsyNTE3ZH1cdXsyMWUxY31cdTc3MWVcdTc3MjZcdTc3NDBcdTY0YWZc''@;'; put 'put ''dXsyNTIyMH1cdTc3NThcdXsyMzJhY31cdTc3YWZcdXsyODk2NH1cdXsyODk2OH1cdXsyMTZjMX1cdTc3ZjRcdTc4MDlcdXsyMTM3Nn1cdXsyNGExMn1cdTY4Y2FcdTc4YWZcdTc4YzdcdTc4ZDNcdTk2YTVcdTc5MmVcdXsyNTVlMH1cdTc4ZDdcdTc5MzRcdTc4YjFcdXsyNzYwY31cdThmYjhc''@;'; put 'put ''dTg4ODRcdXsyOGIyYn1cdXsyNjA4M31cdXsyMjYxY31cdTc5ODZcdTg5MDBcdTY5MDJcdTc5ODBcdXsyNTg1N31cdTc5OWRcdXsyN2IzOX1cdTc5M2NcdTc5YTlcdTZlMmFcdXsyNzEyNn1cdTNlYThcdTc5YzZcdXsyOTEwZH1cdTc5ZDQiXV0nKX0sMTMzMzY6WGU9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''WGUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI3LCJcdTIwYWMiXSxbIjgxNDAiLCJcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMDZcdTRlMGZcdTRlMTJcdTRlMTdcdTRlMWZcdTRlMjBcdTRlMjFcdTRlMjNcdTRlMjZcdTRlMjlcdTRlMmVcdTRlMmZcdTRlMzFcdTRlMzNc''@;'; put 'put ''dTRlMzVcdTRlMzdcdTRlM2NcdTRlNDBcdTRlNDFcdTRlNDJcdTRlNDRcdTRlNDZcdTRlNGFcdTRlNTFcdTRlNTVcdTRlNTdcdTRlNWFcdTRlNWJcdTRlNjJcdTRlNjNcdTRlNjRcdTRlNjVcdTRlNjdcdTRlNjhcdTRlNmEiLDUsIlx1NGU3Mlx1NGU3NCIsOSwiXHU0ZTdmIiw2LCJcdTRlODdc''@;'; put 'put ''dTRlOGEiXSxbIjgxODAiLCJcdTRlOTBcdTRlOTZcdTRlOTdcdTRlOTlcdTRlOWNcdTRlOWRcdTRlOWVcdTRlYTNcdTRlYWFcdTRlYWZcdTRlYjBcdTRlYjFcdTRlYjRcdTRlYjZcdTRlYjdcdTRlYjhcdTRlYjlcdTRlYmNcdTRlYmRcdTRlYmVcdTRlYzhcdTRlY2NcdTRlY2ZcdTRlZDBcdTRl''@;'; put 'put ''ZDJcdTRlZGFcdTRlZGJcdTRlZGNcdTRlZTBcdTRlZTJcdTRlZTZcdTRlZTdcdTRlZTlcdTRlZWRcdTRlZWVcdTRlZWZcdTRlZjFcdTRlZjRcdTRlZjhcdTRlZjlcdTRlZmFcdTRlZmNcdTRlZmVcdTRmMDBcdTRmMDIiLDYsIlx1NGYwYlx1NGYwY1x1NGYxMiIsNCwiXHU0ZjFjXHU0ZjFkXHU0''@;'; put 'put ''ZjIxXHU0ZjIzXHU0ZjI4XHU0ZjI5XHU0ZjJjXHU0ZjJkXHU0ZjJlXHU0ZjMxXHU0ZjMzXHU0ZjM1XHU0ZjM3XHU0ZjM5XHU0ZjNiXHU0ZjNlIiw0LCJcdTRmNDRcdTRmNDVcdTRmNDciLDUsIlx1NGY1Mlx1NGY1NFx1NGY1Nlx1NGY2MVx1NGY2Mlx1NGY2Nlx1NGY2OFx1NGY2YVx1NGY2Ylx1''@;'; put 'put ''NGY2ZFx1NGY2ZVx1NGY3MVx1NGY3Mlx1NGY3NVx1NGY3N1x1NGY3OFx1NGY3OVx1NGY3YVx1NGY3ZFx1NGY4MFx1NGY4MVx1NGY4Mlx1NGY4NVx1NGY4Nlx1NGY4N1x1NGY4YVx1NGY4Y1x1NGY4ZVx1NGY5MFx1NGY5Mlx1NGY5M1x1NGY5NVx1NGY5Nlx1NGY5OFx1NGY5OVx1NGY5YVx1NGY5''@;'; put 'put ''Y1x1NGY5ZVx1NGY5Zlx1NGZhMVx1NGZhMiJdLFsiODI0MCIsIlx1NGZhNFx1NGZhYlx1NGZhZFx1NGZiMCIsNCwiXHU0ZmI2Iiw4LCJcdTRmYzBcdTRmYzFcdTRmYzJcdTRmYzZcdTRmYzdcdTRmYzhcdTRmYzlcdTRmY2JcdTRmY2NcdTRmY2RcdTRmZDIiLDQsIlx1NGZkOVx1NGZkYlx1NGZl''@;'; put 'put ''MFx1NGZlMlx1NGZlNFx1NGZlNVx1NGZlN1x1NGZlYlx1NGZlY1x1NGZmMFx1NGZmMlx1NGZmNFx1NGZmNVx1NGZmNlx1NGZmN1x1NGZmOVx1NGZmYlx1NGZmY1x1NGZmZFx1NGZmZiIsMTFdLFsiODI4MCIsIlx1NTAwYlx1NTAwZVx1NTAxMFx1NTAxMVx1NTAxM1x1NTAxNVx1NTAxNlx1NTAx''@;'; put 'put ''N1x1NTAxYlx1NTAxZFx1NTAxZVx1NTAyMFx1NTAyMlx1NTAyM1x1NTAyNFx1NTAyN1x1NTAyYlx1NTAyZiIsMTAsIlx1NTAzYlx1NTAzZFx1NTAzZlx1NTA0MFx1NTA0MVx1NTA0Mlx1NTA0NFx1NTA0NVx1NTA0Nlx1NTA0OVx1NTA0YVx1NTA0Ylx1NTA0ZFx1NTA1MCIsNCwiXHU1MDU2XHU1''@;'; put 'put ''MDU3XHU1MDU4XHU1MDU5XHU1MDViXHU1MDVkIiw3LCJcdTUwNjYiLDUsIlx1NTA2ZCIsOCwiXHU1MDc4XHU1MDc5XHU1MDdhXHU1MDdjXHU1MDdkXHU1MDgxXHU1MDgyXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDg3XHU1MDg5XHU1MDhhXHU1MDhiXHU1MDhjXHU1MDhlIiwyMCwiXHU1MGE0XHU1''@;'; put 'put ''MGE2XHU1MGFhXHU1MGFiXHU1MGFkIiw0LCJcdTUwYjMiLDYsIlx1NTBiYyJdLFsiODM0MCIsIlx1NTBiZCIsMTcsIlx1NTBkMCIsNSwiXHU1MGQ3XHU1MGQ4XHU1MGQ5XHU1MGRiIiwxMCwiXHU1MGU4XHU1MGU5XHU1MGVhXHU1MGViXHU1MGVmXHU1MGYwXHU1MGYxXHU1MGYyXHU1MGY0XHU1''@;'; put 'put ''MGY2Iiw0LCJcdTUwZmMiLDksIlx1NTEwOCJdLFsiODM4MCIsIlx1NTEwOVx1NTEwYVx1NTEwYyIsNSwiXHU1MTEzIiwxMywiXHU1MTIyIiwyOCwiXHU1MTQyXHU1MTQ3XHU1MTRhXHU1MTRjXHU1MTRlXHU1MTRmXHU1MTUwXHU1MTUyXHU1MTUzXHU1MTU3XHU1MTU4XHU1MTU5XHU1MTViXHU1''@;'; put 'put ''MTVkIiw0LCJcdTUxNjNcdTUxNjRcdTUxNjZcdTUxNjdcdTUxNjlcdTUxNmFcdTUxNmZcdTUxNzJcdTUxN2FcdTUxN2VcdTUxN2ZcdTUxODNcdTUxODRcdTUxODZcdTUxODdcdTUxOGFcdTUxOGJcdTUxOGVcdTUxOGZcdTUxOTBcdTUxOTFcdTUxOTNcdTUxOTRcdTUxOThcdTUxOWFcdTUxOWRc''@;'; put 'put ''dTUxOWVcdTUxOWZcdTUxYTFcdTUxYTNcdTUxYTYiLDQsIlx1NTFhZFx1NTFhZVx1NTFiNFx1NTFiOFx1NTFiOVx1NTFiYVx1NTFiZVx1NTFiZlx1NTFjMVx1NTFjMlx1NTFjM1x1NTFjNVx1NTFjOFx1NTFjYVx1NTFjZFx1NTFjZVx1NTFkMFx1NTFkMiIsNV0sWyI4NDQwIiwiXHU1MWQ4XHU1''@;'; put 'put ''MWQ5XHU1MWRhXHU1MWRjXHU1MWRlXHU1MWRmXHU1MWUyXHU1MWUzXHU1MWU1Iiw1LCJcdTUxZWNcdTUxZWVcdTUxZjFcdTUxZjJcdTUxZjRcdTUxZjdcdTUxZmVcdTUyMDRcdTUyMDVcdTUyMDlcdTUyMGJcdTUyMGNcdTUyMGZcdTUyMTBcdTUyMTNcdTUyMTRcdTUyMTVcdTUyMWNcdTUyMWVc''@;'; put 'put ''dTUyMWZcdTUyMjFcdTUyMjJcdTUyMjNcdTUyMjVcdTUyMjZcdTUyMjdcdTUyMmFcdTUyMmNcdTUyMmZcdTUyMzFcdTUyMzJcdTUyMzRcdTUyMzVcdTUyM2NcdTUyM2VcdTUyNDQiLDUsIlx1NTI0Ylx1NTI0ZVx1NTI0Zlx1NTI1Mlx1NTI1M1x1NTI1NVx1NTI1N1x1NTI1OCJdLFsiODQ4MCIs''@;'; put 'put ''Ilx1NTI1OVx1NTI1YVx1NTI1Ylx1NTI1ZFx1NTI1Zlx1NTI2MFx1NTI2Mlx1NTI2M1x1NTI2NFx1NTI2Nlx1NTI2OFx1NTI2Ylx1NTI2Y1x1NTI2ZFx1NTI2ZVx1NTI3MFx1NTI3MVx1NTI3MyIsOSwiXHU1MjdlXHU1MjgwXHU1MjgzIiw0LCJcdTUyODkiLDYsIlx1NTI5MVx1NTI5Mlx1NTI5''@;'; put 'put ''NCIsNiwiXHU1MjljXHU1MmE0XHU1MmE1XHU1MmE2XHU1MmE3XHU1MmFlXHU1MmFmXHU1MmIwXHU1MmI0Iiw5LCJcdTUyYzBcdTUyYzFcdTUyYzJcdTUyYzRcdTUyYzVcdTUyYzZcdTUyYzhcdTUyY2FcdTUyY2NcdTUyY2RcdTUyY2VcdTUyY2ZcdTUyZDFcdTUyZDNcdTUyZDRcdTUyZDVcdTUy''@;'; put 'put ''ZDdcdTUyZDkiLDUsIlx1NTJlMFx1NTJlMVx1NTJlMlx1NTJlM1x1NTJlNSIsMTAsIlx1NTJmMSIsNywiXHU1MmZiXHU1MmZjXHU1MmZkXHU1MzAxXHU1MzAyXHU1MzAzXHU1MzA0XHU1MzA3XHU1MzA5XHU1MzBhXHU1MzBiXHU1MzBjXHU1MzBlIl0sWyI4NTQwIiwiXHU1MzExXHU1MzEyXHU1''@;'; put 'put ''MzEzXHU1MzE0XHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFmXHU1MzIyXHU1MzI0XHU1MzI1XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzJmIiw5LCJcdTUzM2NcdTUzM2RcdTUzNDBcdTUzNDJcdTUzNDRcdTUzNDZcdTUzNGJcdTUzNGNcdTUzNGRcdTUzNTBc''@;'; put 'put ''dTUzNTRcdTUzNThcdTUzNTlcdTUzNWJcdTUzNWRcdTUzNjVcdTUzNjhcdTUzNmFcdTUzNmNcdTUzNmRcdTUzNzJcdTUzNzZcdTUzNzlcdTUzN2JcdTUzN2NcdTUzN2RcdTUzN2VcdTUzODBcdTUzODFcdTUzODNcdTUzODdcdTUzODhcdTUzOGFcdTUzOGVcdTUzOGYiXSxbIjg1ODAiLCJcdTUz''@;'; put 'put ''OTAiLDQsIlx1NTM5Nlx1NTM5N1x1NTM5OVx1NTM5Ylx1NTM5Y1x1NTM5ZVx1NTNhMFx1NTNhMVx1NTNhNFx1NTNhN1x1NTNhYVx1NTNhYlx1NTNhY1x1NTNhZFx1NTNhZiIsNiwiXHU1M2I3XHU1M2I4XHU1M2I5XHU1M2JhXHU1M2JjXHU1M2JkXHU1M2JlXHU1M2MwXHU1M2MzIiw0LCJcdTUz''@;'; put 'put ''Y2VcdTUzY2ZcdTUzZDBcdTUzZDJcdTUzZDNcdTUzZDVcdTUzZGFcdTUzZGNcdTUzZGRcdTUzZGVcdTUzZTFcdTUzZTJcdTUzZTdcdTUzZjRcdTUzZmFcdTUzZmVcdTUzZmZcdTU0MDBcdTU0MDJcdTU0MDVcdTU0MDdcdTU0MGJcdTU0MTRcdTU0MThcdTU0MTlcdTU0MWFcdTU0MWNcdTU0MjJc''@;'; put 'put ''dTU0MjRcdTU0MjVcdTU0MmFcdTU0MzBcdTU0MzNcdTU0MzZcdTU0MzdcdTU0M2FcdTU0M2RcdTU0M2ZcdTU0NDFcdTU0NDJcdTU0NDRcdTU0NDVcdTU0NDdcdTU0NDlcdTU0NGNcdTU0NGRcdTU0NGVcdTU0NGZcdTU0NTFcdTU0NWFcdTU0NWQiLDQsIlx1NTQ2M1x1NTQ2NVx1NTQ2N1x1NTQ2''@;'; put 'put ''OSIsNywiXHU1NDc0XHU1NDc5XHU1NDdhXHU1NDdlXHU1NDdmXHU1NDgxXHU1NDgzXHU1NDg1XHU1NDg3XHU1NDg4XHU1NDg5XHU1NDhhXHU1NDhkXHU1NDkxXHU1NDkzXHU1NDk3XHU1NDk4XHU1NDljXHU1NDllXHU1NDlmXHU1NGEwXHU1NGExIl0sWyI4NjQwIiwiXHU1NGEyXHU1NGE1XHU1''@;'; put 'put ''NGFlXHU1NGIwXHU1NGIyXHU1NGI1XHU1NGI2XHU1NGI3XHU1NGI5XHU1NGJhXHU1NGJjXHU1NGJlXHU1NGMzXHU1NGM1XHU1NGNhXHU1NGNiXHU1NGQ2XHU1NGQ4XHU1NGRiXHU1NGUwIiw0LCJcdTU0ZWJcdTU0ZWNcdTU0ZWZcdTU0ZjBcdTU0ZjFcdTU0ZjQiLDUsIlx1NTRmYlx1NTRmZVx1''@;'; put 'put ''NTUwMFx1NTUwMlx1NTUwM1x1NTUwNFx1NTUwNVx1NTUwOFx1NTUwYSIsNCwiXHU1NTEyXHU1NTEzXHU1NTE1Iiw1LCJcdTU1MWNcdTU1MWRcdTU1MWVcdTU1MWZcdTU1MjFcdTU1MjVcdTU1MjYiXSxbIjg2ODAiLCJcdTU1MjhcdTU1MjlcdTU1MmJcdTU1MmRcdTU1MzJcdTU1MzRcdTU1MzVc''@;'; put 'put ''dTU1MzZcdTU1MzhcdTU1MzlcdTU1M2FcdTU1M2JcdTU1M2RcdTU1NDBcdTU1NDJcdTU1NDVcdTU1NDdcdTU1NDhcdTU1NGIiLDQsIlx1NTU1MVx1NTU1Mlx1NTU1M1x1NTU1NFx1NTU1NyIsNCwiXHU1NTVkXHU1NTVlXHU1NTVmXHU1NTYwXHU1NTYyXHU1NTYzXHU1NTY4XHU1NTY5XHU1NTZi''@;'; put 'put ''XHU1NTZmIiw1LCJcdTU1NzlcdTU1N2FcdTU1N2RcdTU1N2ZcdTU1ODVcdTU1ODZcdTU1OGNcdTU1OGRcdTU1OGVcdTU1OTBcdTU1OTJcdTU1OTNcdTU1OTVcdTU1OTZcdTU1OTdcdTU1OWFcdTU1OWJcdTU1OWVcdTU1YTAiLDYsIlx1NTVhOCIsOCwiXHU1NWIyXHU1NWI0XHU1NWI2XHU1NWI4''@;'; put 'put ''XHU1NWJhXHU1NWJjXHU1NWJmIiw0LCJcdTU1YzZcdTU1YzdcdTU1YzhcdTU1Y2FcdTU1Y2JcdTU1Y2VcdTU1Y2ZcdTU1ZDBcdTU1ZDVcdTU1ZDciLDQsIlx1NTVkZVx1NTVlMFx1NTVlMlx1NTVlN1x1NTVlOVx1NTVlZFx1NTVlZVx1NTVmMFx1NTVmMVx1NTVmNFx1NTVmNlx1NTVmOCIsNCwi''@;'; put 'put ''XHU1NWZmXHU1NjAyXHU1NjAzXHU1NjA0XHU1NjA1Il0sWyI4NzQwIiwiXHU1NjA2XHU1NjA3XHU1NjBhXHU1NjBiXHU1NjBkXHU1NjEwIiw3LCJcdTU2MTlcdTU2MWFcdTU2MWNcdTU2MWRcdTU2MjBcdTU2MjFcdTU2MjJcdTU2MjVcdTU2MjZcdTU2MjhcdTU2MjlcdTU2MmFcdTU2MmJcdTU2''@;'; put 'put ''MmVcdTU2MmZcdTU2MzBcdTU2MzNcdTU2MzVcdTU2MzdcdTU2MzhcdTU2M2FcdTU2M2NcdTU2M2RcdTU2M2VcdTU2NDAiLDExLCJcdTU2NGYiLDQsIlx1NTY1NVx1NTY1Nlx1NTY1YVx1NTY1Ylx1NTY1ZCIsNF0sWyI4NzgwIiwiXHU1NjYzXHU1NjY1XHU1NjY2XHU1NjY3XHU1NjZkXHU1NjZl''@;'; put 'put ''XHU1NjZmXHU1NjcwXHU1NjcyXHU1NjczXHU1Njc0XHU1Njc1XHU1Njc3XHU1Njc4XHU1Njc5XHU1NjdhXHU1NjdkIiw3LCJcdTU2ODciLDYsIlx1NTY5MFx1NTY5MVx1NTY5Mlx1NTY5NCIsMTQsIlx1NTZhNCIsMTAsIlx1NTZiMCIsNiwiXHU1NmI4XHU1NmI5XHU1NmJhXHU1NmJiXHU1NmJk''@;'; put 'put ''IiwxMiwiXHU1NmNiIiw4LCJcdTU2ZDVcdTU2ZDZcdTU2ZDhcdTU2ZDlcdTU2ZGNcdTU2ZTNcdTU2ZTUiLDUsIlx1NTZlY1x1NTZlZVx1NTZlZlx1NTZmMlx1NTZmM1x1NTZmNlx1NTZmN1x1NTZmOFx1NTZmYlx1NTZmY1x1NTcwMFx1NTcwMVx1NTcwMlx1NTcwNVx1NTcwN1x1NTcwYiIsNl0s''@;'; put 'put ''WyI4ODQwIiwiXHU1NzEyIiw5LCJcdTU3MWRcdTU3MWVcdTU3MjBcdTU3MjFcdTU3MjJcdTU3MjRcdTU3MjVcdTU3MjZcdTU3MjdcdTU3MmJcdTU3MzFcdTU3MzJcdTU3MzQiLDQsIlx1NTczY1x1NTczZFx1NTczZlx1NTc0MVx1NTc0M1x1NTc0NFx1NTc0NVx1NTc0Nlx1NTc0OFx1NTc0OVx1''@;'; put 'put ''NTc0Ylx1NTc1MiIsNCwiXHU1NzU4XHU1NzU5XHU1NzYyXHU1NzYzXHU1NzY1XHU1NzY3XHU1NzZjXHU1NzZlXHU1NzcwXHU1NzcxXHU1NzcyXHU1Nzc0XHU1Nzc1XHU1Nzc4XHU1Nzc5XHU1NzdhXHU1NzdkXHU1NzdlXHU1NzdmXHU1NzgwIl0sWyI4ODgwIiwiXHU1NzgxXHU1Nzg3XHU1Nzg4''@;'; put 'put ''XHU1Nzg5XHU1NzhhXHU1NzhkIiw0LCJcdTU3OTQiLDYsIlx1NTc5Y1x1NTc5ZFx1NTc5ZVx1NTc5Zlx1NTdhNVx1NTdhOFx1NTdhYVx1NTdhY1x1NTdhZlx1NTdiMFx1NTdiMVx1NTdiM1x1NTdiNVx1NTdiNlx1NTdiN1x1NTdiOSIsOCwiXHU1N2M0Iiw2LCJcdTU3Y2NcdTU3Y2RcdTU3ZDBc''@;'; put 'put ''dTU3ZDFcdTU3ZDNcdTU3ZDZcdTU3ZDdcdTU3ZGJcdTU3ZGNcdTU3ZGVcdTU3ZTFcdTU3ZTJcdTU3ZTNcdTU3ZTUiLDcsIlx1NTdlZVx1NTdmMFx1NTdmMVx1NTdmMlx1NTdmM1x1NTdmNVx1NTdmNlx1NTdmN1x1NTdmYlx1NTdmY1x1NTdmZVx1NTdmZlx1NTgwMVx1NTgwM1x1NTgwNFx1NTgw''@;'; put 'put ''NVx1NTgwOFx1NTgwOVx1NTgwYVx1NTgwY1x1NTgwZVx1NTgwZlx1NTgxMFx1NTgxMlx1NTgxM1x1NTgxNFx1NTgxNlx1NTgxN1x1NTgxOFx1NTgxYVx1NTgxYlx1NTgxY1x1NTgxZFx1NTgxZlx1NTgyMlx1NTgyM1x1NTgyNSIsNCwiXHU1ODJiIiw0LCJcdTU4MzFcdTU4MzJcdTU4MzNcdTU4''@;'; put 'put ''MzRcdTU4MzYiLDddLFsiODk0MCIsIlx1NTgzZSIsNSwiXHU1ODQ1Iiw2LCJcdTU4NGVcdTU4NGZcdTU4NTBcdTU4NTJcdTU4NTNcdTU4NTVcdTU4NTZcdTU4NTdcdTU4NTkiLDQsIlx1NTg1ZiIsNSwiXHU1ODY2Iiw0LCJcdTU4NmQiLDE2LCJcdTU4N2ZcdTU4ODJcdTU4ODRcdTU4ODZcdTU4''@;'; put 'put ''ODdcdTU4ODhcdTU4OGFcdTU4OGJcdTU4OGMiXSxbIjg5ODAiLCJcdTU4OGQiLDQsIlx1NTg5NCIsNCwiXHU1ODliXHU1ODljXHU1ODlkXHU1OGEwIiw3LCJcdTU4YWEiLDE3LCJcdTU4YmRcdTU4YmVcdTU4YmZcdTU4YzBcdTU4YzJcdTU4YzNcdTU4YzRcdTU4YzYiLDEwLCJcdTU4ZDJcdTU4''@;'; put 'put ''ZDNcdTU4ZDRcdTU4ZDYiLDEzLCJcdTU4ZTUiLDUsIlx1NThlZFx1NThlZlx1NThmMVx1NThmMlx1NThmNFx1NThmNVx1NThmN1x1NThmOFx1NThmYSIsNywiXHU1OTAzXHU1OTA1XHU1OTA2XHU1OTA4Iiw0LCJcdTU5MGVcdTU5MTBcdTU5MTFcdTU5MTJcdTU5MTNcdTU5MTdcdTU5MThcdTU5''@;'; put 'put ''MWJcdTU5MWRcdTU5MWVcdTU5MjBcdTU5MjFcdTU5MjJcdTU5MjNcdTU5MjZcdTU5MjhcdTU5MmNcdTU5MzBcdTU5MzJcdTU5MzNcdTU5MzVcdTU5MzZcdTU5M2IiXSxbIjhhNDAiLCJcdTU5M2RcdTU5M2VcdTU5M2ZcdTU5NDBcdTU5NDNcdTU5NDVcdTU5NDZcdTU5NGFcdTU5NGNcdTU5NGRc''@;'; put 'put ''dTU5NTBcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWIiLDQsIlx1NTk2MVx1NTk2M1x1NTk2NFx1NTk2NiIsMTIsIlx1NTk3NVx1NTk3N1x1NTk3YVx1NTk3Ylx1NTk3Y1x1NTk3ZVx1NTk3Zlx1NTk4MFx1NTk4NVx1NTk4OVx1NTk4Ylx1NTk4Y1x1NTk4ZVx1NTk4Zlx1NTk5MFx1NTk5MVx1NTk5''@;'; put 'put ''NFx1NTk5NVx1NTk5OFx1NTk5YVx1NTk5Ylx1NTk5Y1x1NTk5ZFx1NTk5Zlx1NTlhMFx1NTlhMVx1NTlhMlx1NTlhNiJdLFsiOGE4MCIsIlx1NTlhN1x1NTlhY1x1NTlhZFx1NTliMFx1NTliMVx1NTliMyIsNSwiXHU1OWJhXHU1OWJjXHU1OWJkXHU1OWJmIiw2LCJcdTU5YzdcdTU5YzhcdTU5''@;'; put 'put ''YzlcdTU5Y2NcdTU5Y2RcdTU5Y2VcdTU5Y2ZcdTU5ZDVcdTU5ZDZcdTU5ZDlcdTU5ZGJcdTU5ZGUiLDQsIlx1NTllNFx1NTllNlx1NTllN1x1NTllOVx1NTllYVx1NTllYlx1NTllZCIsMTEsIlx1NTlmYVx1NTlmY1x1NTlmZFx1NTlmZVx1NWEwMFx1NWEwMlx1NWEwYVx1NWEwYlx1NWEwZFx1''@;'; put 'put ''NWEwZVx1NWEwZlx1NWExMFx1NWExMlx1NWExNFx1NWExNVx1NWExNlx1NWExN1x1NWExOVx1NWExYVx1NWExYlx1NWExZFx1NWExZVx1NWEyMVx1NWEyMlx1NWEyNFx1NWEyNlx1NWEyN1x1NWEyOFx1NWEyYSIsNiwiXHU1YTMzXHU1YTM1XHU1YTM3Iiw0LCJcdTVhM2RcdTVhM2VcdTVhM2Zc''@;'; put 'put ''dTVhNDEiLDQsIlx1NWE0N1x1NWE0OFx1NWE0YiIsOSwiXHU1YTU2XHU1YTU3XHU1YTU4XHU1YTU5XHU1YTViIiw1XSxbIjhiNDAiLCJcdTVhNjFcdTVhNjNcdTVhNjRcdTVhNjVcdTVhNjZcdTVhNjhcdTVhNjlcdTVhNmIiLDgsIlx1NWE3OFx1NWE3OVx1NWE3Ylx1NWE3Y1x1NWE3ZFx1NWE3''@;'; put 'put ''ZVx1NWE4MCIsMTcsIlx1NWE5MyIsNiwiXHU1YTljIiwxMywiXHU1YWFiXHU1YWFjIl0sWyI4YjgwIiwiXHU1YWFkIiw0LCJcdTVhYjRcdTVhYjZcdTVhYjdcdTVhYjkiLDQsIlx1NWFiZlx1NWFjMFx1NWFjMyIsNSwiXHU1YWNhXHU1YWNiXHU1YWNkIiw0LCJcdTVhZDNcdTVhZDVcdTVhZDdc''@;'; put 'put ''dTVhZDlcdTVhZGFcdTVhZGJcdTVhZGRcdTVhZGVcdTVhZGZcdTVhZTJcdTVhZTRcdTVhZTVcdTVhZTdcdTVhZThcdTVhZWFcdTVhZWMiLDQsIlx1NWFmMiIsMjIsIlx1NWIwYSIsMTEsIlx1NWIxOCIsMjUsIlx1NWIzM1x1NWIzNVx1NWIzNlx1NWIzOCIsNywiXHU1YjQxIiw2XSxbIjhjNDAi''@;'; put 'put ''LCJcdTViNDgiLDcsIlx1NWI1Mlx1NWI1Nlx1NWI1ZVx1NWI2MFx1NWI2MVx1NWI2N1x1NWI2OFx1NWI2Ylx1NWI2ZFx1NWI2ZVx1NWI2Zlx1NWI3Mlx1NWI3NFx1NWI3Nlx1NWI3N1x1NWI3OFx1NWI3OVx1NWI3Ylx1NWI3Y1x1NWI3ZVx1NWI3Zlx1NWI4Mlx1NWI4Nlx1NWI4YVx1NWI4ZFx1''@;'; put 'put ''NWI4ZVx1NWI5MFx1NWI5MVx1NWI5Mlx1NWI5NFx1NWI5Nlx1NWI5Zlx1NWJhN1x1NWJhOFx1NWJhOVx1NWJhY1x1NWJhZFx1NWJhZVx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1NWJiYVx1NWJiYlx1NWJiY1x1NWJjMFx1NWJjMVx1NWJjM1x1NWJjOFx1NWJjOVx1NWJjYVx1NWJjYlx1NWJj''@;'; put 'put ''ZFx1NWJjZVx1NWJjZiJdLFsiOGM4MCIsIlx1NWJkMVx1NWJkNCIsOCwiXHU1YmUwXHU1YmUyXHU1YmUzXHU1YmU2XHU1YmU3XHU1YmU5Iiw0LCJcdTViZWZcdTViZjEiLDYsIlx1NWJmZFx1NWJmZVx1NWMwMFx1NWMwMlx1NWMwM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwYlx1NWMwY1x1NWMw''@;'; put 'put ''ZFx1NWMwZVx1NWMxMFx1NWMxMlx1NWMxM1x1NWMxN1x1NWMxOVx1NWMxYlx1NWMxZVx1NWMxZlx1NWMyMFx1NWMyMVx1NWMyM1x1NWMyNlx1NWMyOFx1NWMyOVx1NWMyYVx1NWMyYlx1NWMyZFx1NWMyZVx1NWMyZlx1NWMzMFx1NWMzMlx1NWMzM1x1NWMzNVx1NWMzNlx1NWMzN1x1NWM0M1x1''@;'; put 'put ''NWM0NFx1NWM0Nlx1NWM0N1x1NWM0Y1x1NWM0ZFx1NWM1Mlx1NWM1M1x1NWM1NFx1NWM1Nlx1NWM1N1x1NWM1OFx1NWM1YVx1NWM1Ylx1NWM1Y1x1NWM1ZFx1NWM1Zlx1NWM2Mlx1NWM2NFx1NWM2NyIsNiwiXHU1YzcwXHU1YzcyIiw2LCJcdTVjN2JcdTVjN2NcdTVjN2RcdTVjN2VcdTVjODBc''@;'; put 'put ''dTVjODMiLDQsIlx1NWM4OVx1NWM4YVx1NWM4Ylx1NWM4ZVx1NWM4Zlx1NWM5Mlx1NWM5M1x1NWM5NVx1NWM5ZCIsNCwiXHU1Y2E0Iiw0XSxbIjhkNDAiLCJcdTVjYWFcdTVjYWVcdTVjYWZcdTVjYjBcdTVjYjJcdTVjYjRcdTVjYjZcdTVjYjlcdTVjYmFcdTVjYmJcdTVjYmNcdTVjYmVcdTVj''@;'; put 'put ''YzBcdTVjYzJcdTVjYzNcdTVjYzUiLDUsIlx1NWNjYyIsNSwiXHU1Y2QzIiw1LCJcdTVjZGEiLDYsIlx1NWNlMlx1NWNlM1x1NWNlN1x1NWNlOVx1NWNlYlx1NWNlY1x1NWNlZVx1NWNlZlx1NWNmMSIsOSwiXHU1Y2ZjIiw0XSxbIjhkODAiLCJcdTVkMDFcdTVkMDRcdTVkMDVcdTVkMDgiLDUs''@;'; put 'put ''Ilx1NWQwZiIsNCwiXHU1ZDE1XHU1ZDE3XHU1ZDE4XHU1ZDE5XHU1ZDFhXHU1ZDFjXHU1ZDFkXHU1ZDFmIiw0LCJcdTVkMjVcdTVkMjhcdTVkMmFcdTVkMmJcdTVkMmNcdTVkMmYiLDQsIlx1NWQzNSIsNywiXHU1ZDNmIiw3LCJcdTVkNDhcdTVkNDlcdTVkNGQiLDEwLCJcdTVkNTlcdTVkNWFc''@;'; put 'put ''dTVkNWNcdTVkNWUiLDEwLCJcdTVkNmFcdTVkNmRcdTVkNmVcdTVkNzBcdTVkNzFcdTVkNzJcdTVkNzNcdTVkNzUiLDEyLCJcdTVkODMiLDIxLCJcdTVkOWFcdTVkOWJcdTVkOWNcdTVkOWVcdTVkOWZcdTVkYTAiXSxbIjhlNDAiLCJcdTVkYTEiLDIxLCJcdTVkYjgiLDEyLCJcdTVkYzYiLDYs''@;'; put 'put ''Ilx1NWRjZSIsMTIsIlx1NWRkY1x1NWRkZlx1NWRlMFx1NWRlM1x1NWRlNFx1NWRlYVx1NWRlY1x1NWRlZCJdLFsiOGU4MCIsIlx1NWRmMFx1NWRmNVx1NWRmNlx1NWRmOCIsNCwiXHU1ZGZmXHU1ZTAwXHU1ZTA0XHU1ZTA3XHU1ZTA5XHU1ZTBhXHU1ZTBiXHU1ZTBkXHU1ZTBlXHU1ZTEyXHU1''@;'; put 'put ''ZTEzXHU1ZTE3XHU1ZTFlIiw3LCJcdTVlMjgiLDQsIlx1NWUyZlx1NWUzMFx1NWUzMiIsNCwiXHU1ZTM5XHU1ZTNhXHU1ZTNlXHU1ZTNmXHU1ZTQwXHU1ZTQxXHU1ZTQzXHU1ZTQ2Iiw1LCJcdTVlNGQiLDYsIlx1NWU1NiIsNCwiXHU1ZTVjXHU1ZTVkXHU1ZTVmXHU1ZTYwXHU1ZTYzIiwxNCwi''@;'; put 'put ''XHU1ZTc1XHU1ZTc3XHU1ZTc5XHU1ZTdlXHU1ZTgxXHU1ZTgyXHU1ZTgzXHU1ZTg1XHU1ZTg4XHU1ZTg5XHU1ZThjXHU1ZThkXHU1ZThlXHU1ZTkyXHU1ZTk4XHU1ZTliXHU1ZTlkXHU1ZWExXHU1ZWEyXHU1ZWEzXHU1ZWE0XHU1ZWE4Iiw0LCJcdTVlYWUiLDQsIlx1NWViNFx1NWViYVx1NWVi''@;'; put 'put ''Ylx1NWViY1x1NWViZFx1NWViZiIsNl0sWyI4ZjQwIiwiXHU1ZWM2XHU1ZWM3XHU1ZWM4XHU1ZWNiIiw1LCJcdTVlZDRcdTVlZDVcdTVlZDdcdTVlZDhcdTVlZDlcdTVlZGFcdTVlZGMiLDExLCJcdTVlZTlcdTVlZWIiLDgsIlx1NWVmNVx1NWVmOFx1NWVmOVx1NWVmYlx1NWVmY1x1NWVmZFx1''@;'; put 'put ''NWYwNVx1NWYwNlx1NWYwN1x1NWYwOVx1NWYwY1x1NWYwZFx1NWYwZVx1NWYxMFx1NWYxMlx1NWYxNFx1NWYxNlx1NWYxOVx1NWYxYVx1NWYxY1x1NWYxZFx1NWYxZVx1NWYyMVx1NWYyMlx1NWYyM1x1NWYyNCJdLFsiOGY4MCIsIlx1NWYyOFx1NWYyYlx1NWYyY1x1NWYyZVx1NWYzMFx1NWYz''@;'; put 'put ''MiIsNiwiXHU1ZjNiXHU1ZjNkXHU1ZjNlXHU1ZjNmXHU1ZjQxIiwxNCwiXHU1ZjUxXHU1ZjU0XHU1ZjU5XHU1ZjVhXHU1ZjViXHU1ZjVjXHU1ZjVlXHU1ZjVmXHU1ZjYwXHU1ZjYzXHU1ZjY1XHU1ZjY3XHU1ZjY4XHU1ZjZiXHU1ZjZlXHU1ZjZmXHU1ZjcyXHU1Zjc0XHU1Zjc1XHU1Zjc2XHU1''@;'; put 'put ''Zjc4XHU1ZjdhXHU1ZjdkXHU1ZjdlXHU1ZjdmXHU1ZjgzXHU1Zjg2XHU1ZjhkXHU1ZjhlXHU1ZjhmXHU1ZjkxXHU1ZjkzXHU1Zjk0XHU1Zjk2XHU1ZjlhXHU1ZjliXHU1ZjlkXHU1ZjllXHU1ZjlmXHU1ZmEwXHU1ZmEyIiw1LCJcdTVmYTlcdTVmYWJcdTVmYWNcdTVmYWYiLDUsIlx1NWZiNlx1''@;'; put 'put ''NWZiOFx1NWZiOVx1NWZiYVx1NWZiYlx1NWZiZSIsNCwiXHU1ZmM3XHU1ZmM4XHU1ZmNhXHU1ZmNiXHU1ZmNlXHU1ZmQzXHU1ZmQ0XHU1ZmQ1XHU1ZmRhXHU1ZmRiXHU1ZmRjXHU1ZmRlXHU1ZmRmXHU1ZmUyXHU1ZmUzXHU1ZmU1XHU1ZmU2XHU1ZmU4XHU1ZmU5XHU1ZmVjXHU1ZmVmXHU1ZmYw''@;'; put 'put ''XHU1ZmYyXHU1ZmYzXHU1ZmY0XHU1ZmY2XHU1ZmY3XHU1ZmY5XHU1ZmZhXHU1ZmZjXHU2MDA3Il0sWyI5MDQwIiwiXHU2MDA4XHU2MDA5XHU2MDBiXHU2MDBjXHU2MDEwXHU2MDExXHU2MDEzXHU2MDE3XHU2MDE4XHU2MDFhXHU2MDFlXHU2MDFmXHU2MDIyXHU2MDIzXHU2MDI0XHU2MDJjXHU2''@;'; put 'put ''MDJkXHU2MDJlXHU2MDMwIiw0LCJcdTYwMzYiLDQsIlx1NjAzZFx1NjAzZVx1NjA0MFx1NjA0NCIsNiwiXHU2MDRjXHU2MDRlXHU2MDRmXHU2MDUxXHU2MDUzXHU2MDU0XHU2MDU2XHU2MDU3XHU2MDU4XHU2MDViXHU2MDVjXHU2MDVlXHU2MDVmXHU2MDYwXHU2MDYxXHU2MDY1XHU2MDY2XHU2''@;'; put 'put ''MDZlXHU2MDcxXHU2MDcyXHU2MDc0XHU2MDc1XHU2MDc3XHU2MDdlXHU2MDgwIl0sWyI5MDgwIiwiXHU2MDgxXHU2MDgyXHU2MDg1XHU2MDg2XHU2MDg3XHU2MDg4XHU2MDhhXHU2MDhiXHU2MDhlXHU2MDhmXHU2MDkwXHU2MDkxXHU2MDkzXHU2MDk1XHU2MDk3XHU2MDk4XHU2MDk5XHU2MDlj''@;'; put 'put ''XHU2MDllXHU2MGExXHU2MGEyXHU2MGE0XHU2MGE1XHU2MGE3XHU2MGE5XHU2MGFhXHU2MGFlXHU2MGIwXHU2MGIzXHU2MGI1XHU2MGI2XHU2MGI3XHU2MGI5XHU2MGJhXHU2MGJkIiw3LCJcdTYwYzdcdTYwYzhcdTYwYzlcdTYwY2MiLDQsIlx1NjBkMlx1NjBkM1x1NjBkNFx1NjBkNlx1NjBk''@;'; put 'put ''N1x1NjBkOVx1NjBkYlx1NjBkZVx1NjBlMSIsNCwiXHU2MGVhXHU2MGYxXHU2MGYyXHU2MGY1XHU2MGY3XHU2MGY4XHU2MGZiIiw0LCJcdTYxMDJcdTYxMDNcdTYxMDRcdTYxMDVcdTYxMDdcdTYxMGFcdTYxMGJcdTYxMGNcdTYxMTAiLDQsIlx1NjExNlx1NjExN1x1NjExOFx1NjExOVx1NjEx''@;'; put 'put ''Ylx1NjExY1x1NjExZFx1NjExZVx1NjEyMVx1NjEyMlx1NjEyNVx1NjEyOFx1NjEyOVx1NjEyYVx1NjEyYyIsMTgsIlx1NjE0MCIsNl0sWyI5MTQwIiwiXHU2MTQ3XHU2MTQ5XHU2MTRiXHU2MTRkXHU2MTRmXHU2MTUwXHU2MTUyXHU2MTUzXHU2MTU0XHU2MTU2Iiw2LCJcdTYxNWVcdTYxNWZc''@;'; put 'put ''dTYxNjBcdTYxNjFcdTYxNjNcdTYxNjRcdTYxNjVcdTYxNjZcdTYxNjkiLDYsIlx1NjE3MVx1NjE3Mlx1NjE3M1x1NjE3NFx1NjE3Nlx1NjE3OCIsMTgsIlx1NjE4Y1x1NjE4ZFx1NjE4ZiIsNCwiXHU2MTk1Il0sWyI5MTgwIiwiXHU2MTk2Iiw2LCJcdTYxOWUiLDgsIlx1NjFhYVx1NjFhYlx1''@;'; put 'put ''NjFhZCIsOSwiXHU2MWI4Iiw1LCJcdTYxYmZcdTYxYzBcdTYxYzFcdTYxYzMiLDQsIlx1NjFjOVx1NjFjYyIsNCwiXHU2MWQzXHU2MWQ1IiwxNiwiXHU2MWU3IiwxMywiXHU2MWY2Iiw4LCJcdTYyMDAiLDUsIlx1NjIwN1x1NjIwOVx1NjIxM1x1NjIxNFx1NjIxOVx1NjIxY1x1NjIxZFx1NjIx''@;'; put 'put ''ZVx1NjIyMFx1NjIyM1x1NjIyNlx1NjIyN1x1NjIyOFx1NjIyOVx1NjIyYlx1NjIyZFx1NjIyZlx1NjIzMFx1NjIzMVx1NjIzMlx1NjIzNVx1NjIzNlx1NjIzOCIsNCwiXHU2MjQyXHU2MjQ0XHU2MjQ1XHU2MjQ2XHU2MjRhIl0sWyI5MjQwIiwiXHU2MjRmXHU2MjUwXHU2MjU1XHU2MjU2XHU2''@;'; put 'put ''MjU3XHU2MjU5XHU2MjVhXHU2MjVjIiw2LCJcdTYyNjRcdTYyNjVcdTYyNjhcdTYyNzFcdTYyNzJcdTYyNzRcdTYyNzVcdTYyNzdcdTYyNzhcdTYyN2FcdTYyN2JcdTYyN2RcdTYyODFcdTYyODJcdTYyODNcdTYyODVcdTYyODZcdTYyODdcdTYyODhcdTYyOGIiLDUsIlx1NjI5NFx1NjI5OVx1''@;'; put 'put ''NjI5Y1x1NjI5ZFx1NjI5ZVx1NjJhM1x1NjJhNlx1NjJhN1x1NjJhOVx1NjJhYVx1NjJhZFx1NjJhZVx1NjJhZlx1NjJiMFx1NjJiMlx1NjJiM1x1NjJiNFx1NjJiNlx1NjJiN1x1NjJiOFx1NjJiYVx1NjJiZVx1NjJjMFx1NjJjMSJdLFsiOTI4MCIsIlx1NjJjM1x1NjJjYlx1NjJjZlx1NjJk''@;'; put 'put ''MVx1NjJkNVx1NjJkZFx1NjJkZVx1NjJlMFx1NjJlMVx1NjJlNFx1NjJlYVx1NjJlYlx1NjJmMFx1NjJmMlx1NjJmNVx1NjJmOFx1NjJmOVx1NjJmYVx1NjJmYlx1NjMwMFx1NjMwM1x1NjMwNFx1NjMwNVx1NjMwNlx1NjMwYVx1NjMwYlx1NjMwY1x1NjMwZFx1NjMwZlx1NjMxMFx1NjMxMlx1''@;'; put 'put ''NjMxM1x1NjMxNFx1NjMxNVx1NjMxN1x1NjMxOFx1NjMxOVx1NjMxY1x1NjMyNlx1NjMyN1x1NjMyOVx1NjMyY1x1NjMyZFx1NjMyZVx1NjMzMFx1NjMzMVx1NjMzMyIsNSwiXHU2MzNiXHU2MzNjXHU2MzNlXHU2MzNmXHU2MzQwXHU2MzQxXHU2MzQ0XHU2MzQ3XHU2MzQ4XHU2MzRhXHU2MzUx''@;'; put 'put ''XHU2MzUyXHU2MzUzXHU2MzU0XHU2MzU2Iiw3LCJcdTYzNjBcdTYzNjRcdTYzNjVcdTYzNjZcdTYzNjhcdTYzNmFcdTYzNmJcdTYzNmNcdTYzNmZcdTYzNzBcdTYzNzJcdTYzNzNcdTYzNzRcdTYzNzVcdTYzNzhcdTYzNzlcdTYzN2NcdTYzN2RcdTYzN2VcdTYzN2ZcdTYzODFcdTYzODNcdTYz''@;'; put 'put ''ODRcdTYzODVcdTYzODZcdTYzOGJcdTYzOGRcdTYzOTFcdTYzOTNcdTYzOTRcdTYzOTVcdTYzOTdcdTYzOTkiLDYsIlx1NjNhMVx1NjNhNFx1NjNhNlx1NjNhYlx1NjNhZlx1NjNiMVx1NjNiMlx1NjNiNVx1NjNiNlx1NjNiOVx1NjNiYlx1NjNiZFx1NjNiZlx1NjNjMCJdLFsiOTM0MCIsIlx1''@;'; put 'put ''NjNjMVx1NjNjMlx1NjNjM1x1NjNjNVx1NjNjN1x1NjNjOFx1NjNjYVx1NjNjYlx1NjNjY1x1NjNkMVx1NjNkM1x1NjNkNFx1NjNkNVx1NjNkNyIsNiwiXHU2M2RmXHU2M2UyXHU2M2U0Iiw0LCJcdTYzZWJcdTYzZWNcdTYzZWVcdTYzZWZcdTYzZjBcdTYzZjFcdTYzZjNcdTYzZjVcdTYzZjdc''@;'; put 'put ''dTYzZjlcdTYzZmFcdTYzZmJcdTYzZmNcdTYzZmVcdTY0MDNcdTY0MDRcdTY0MDYiLDQsIlx1NjQwZFx1NjQwZVx1NjQxMVx1NjQxMlx1NjQxNSIsNSwiXHU2NDFkXHU2NDFmXHU2NDIyXHU2NDIzXHU2NDI0Il0sWyI5MzgwIiwiXHU2NDI1XHU2NDI3XHU2NDI4XHU2NDI5XHU2NDJiXHU2NDJl''@;'; put 'put ''Iiw1LCJcdTY0MzUiLDQsIlx1NjQzYlx1NjQzY1x1NjQzZVx1NjQ0MFx1NjQ0Mlx1NjQ0M1x1NjQ0OVx1NjQ0YiIsNiwiXHU2NDUzXHU2NDU1XHU2NDU2XHU2NDU3XHU2NDU5Iiw0LCJcdTY0NWYiLDcsIlx1NjQ2OFx1NjQ2YVx1NjQ2Ylx1NjQ2Y1x1NjQ2ZSIsOSwiXHU2NDdiIiw2LCJcdTY0''@;'; put 'put ''ODNcdTY0ODZcdTY0ODgiLDgsIlx1NjQ5M1x1NjQ5NFx1NjQ5N1x1NjQ5OFx1NjQ5YVx1NjQ5Ylx1NjQ5Y1x1NjQ5ZFx1NjQ5ZiIsNCwiXHU2NGE1XHU2NGE2XHU2NGE3XHU2NGE4XHU2NGFhXHU2NGFiXHU2NGFmXHU2NGIxXHU2NGIyXHU2NGIzXHU2NGI0XHU2NGI2XHU2NGI5XHU2NGJiXHU2''@;'; put 'put ''NGJkXHU2NGJlXHU2NGJmXHU2NGMxXHU2NGMzXHU2NGM0XHU2NGM2Iiw2LCJcdTY0Y2ZcdTY0ZDFcdTY0ZDNcdTY0ZDRcdTY0ZDVcdTY0ZDZcdTY0ZDlcdTY0ZGEiXSxbIjk0NDAiLCJcdTY0ZGJcdTY0ZGNcdTY0ZGRcdTY0ZGZcdTY0ZTBcdTY0ZTFcdTY0ZTNcdTY0ZTVcdTY0ZTciLDI0LCJc''@;'; put 'put ''dTY1MDEiLDcsIlx1NjUwYSIsNywiXHU2NTEzIiw0LCJcdTY1MTkiLDhdLFsiOTQ4MCIsIlx1NjUyMlx1NjUyM1x1NjUyNFx1NjUyNiIsNCwiXHU2NTJjXHU2NTJkXHU2NTMwXHU2NTMxXHU2NTMyXHU2NTMzXHU2NTM3XHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQwIiw0LCJcdTY1NDZcdTY1NDdc''@;'; put 'put ''dTY1NGFcdTY1NGJcdTY1NGRcdTY1NGVcdTY1NTBcdTY1NTJcdTY1NTNcdTY1NTRcdTY1NTdcdTY1NThcdTY1NWFcdTY1NWNcdTY1NWZcdTY1NjBcdTY1NjFcdTY1NjRcdTY1NjVcdTY1NjdcdTY1NjhcdTY1NjlcdTY1NmFcdTY1NmRcdTY1NmVcdTY1NmZcdTY1NzFcdTY1NzNcdTY1NzVcdTY1''@;'; put 'put ''NzZcdTY1NzgiLDE0LCJcdTY1ODhcdTY1ODlcdTY1OGFcdTY1OGRcdTY1OGVcdTY1OGZcdTY1OTJcdTY1OTRcdTY1OTVcdTY1OTZcdTY1OThcdTY1OWFcdTY1OWRcdTY1OWVcdTY1YTBcdTY1YTJcdTY1YTNcdTY1YTZcdTY1YThcdTY1YWFcdTY1YWNcdTY1YWVcdTY1YjEiLDcsIlx1NjViYVx1''@;'; put 'put ''NjViYlx1NjViZVx1NjViZlx1NjVjMFx1NjVjMlx1NjVjN1x1NjVjOFx1NjVjOVx1NjVjYVx1NjVjZFx1NjVkMFx1NjVkMVx1NjVkM1x1NjVkNFx1NjVkNVx1NjVkOCIsNywiXHU2NWUxXHU2NWUzXHU2NWU0XHU2NWVhXHU2NWViIl0sWyI5NTQwIiwiXHU2NWYyXHU2NWYzXHU2NWY0XHU2NWY1''@;'; put 'put ''XHU2NWY4XHU2NWY5XHU2NWZiIiw0LCJcdTY2MDFcdTY2MDRcdTY2MDVcdTY2MDdcdTY2MDhcdTY2MDlcdTY2MGJcdTY2MGRcdTY2MTBcdTY2MTFcdTY2MTJcdTY2MTZcdTY2MTdcdTY2MThcdTY2MWFcdTY2MWJcdTY2MWNcdTY2MWVcdTY2MjFcdTY2MjJcdTY2MjNcdTY2MjRcdTY2MjZcdTY2''@;'; put 'put ''MjlcdTY2MmFcdTY2MmJcdTY2MmNcdTY2MmVcdTY2MzBcdTY2MzJcdTY2MzNcdTY2MzciLDQsIlx1NjYzZFx1NjYzZlx1NjY0MFx1NjY0Mlx1NjY0NCIsNiwiXHU2NjRkXHU2NjRlXHU2NjUwXHU2NjUxXHU2NjU4Il0sWyI5NTgwIiwiXHU2NjU5XHU2NjViXHU2NjVjXHU2NjVkXHU2NjVlXHU2''@;'; put 'put ''NjYwXHU2NjYyXHU2NjYzXHU2NjY1XHU2NjY3XHU2NjY5Iiw0LCJcdTY2NzFcdTY2NzJcdTY2NzNcdTY2NzVcdTY2NzhcdTY2NzlcdTY2N2JcdTY2N2NcdTY2N2RcdTY2N2ZcdTY2ODBcdTY2ODFcdTY2ODNcdTY2ODVcdTY2ODZcdTY2ODhcdTY2ODlcdTY2OGFcdTY2OGJcdTY2OGRcdTY2OGVc''@;'; put 'put ''dTY2OGZcdTY2OTBcdTY2OTJcdTY2OTNcdTY2OTRcdTY2OTVcdTY2OTgiLDQsIlx1NjY5ZSIsOCwiXHU2NmE5Iiw0LCJcdTY2YWYiLDQsIlx1NjZiNVx1NjZiNlx1NjZiN1x1NjZiOFx1NjZiYVx1NjZiYlx1NjZiY1x1NjZiZFx1NjZiZiIsMjUsIlx1NjZkYVx1NjZkZSIsNywiXHU2NmU3XHU2''@;'; put 'put ''NmU4XHU2NmVhIiw1LCJcdTY2ZjFcdTY2ZjVcdTY2ZjZcdTY2ZjhcdTY2ZmFcdTY2ZmJcdTY2ZmRcdTY3MDFcdTY3MDJcdTY3MDMiXSxbIjk2NDAiLCJcdTY3MDRcdTY3MDVcdTY3MDZcdTY3MDdcdTY3MGNcdTY3MGVcdTY3MGZcdTY3MTFcdTY3MTJcdTY3MTNcdTY3MTZcdTY3MThcdTY3MTlc''@;'; put 'put ''dTY3MWFcdTY3MWNcdTY3MWVcdTY3MjAiLDUsIlx1NjcyN1x1NjcyOVx1NjcyZVx1NjczMFx1NjczMlx1NjczM1x1NjczNlx1NjczN1x1NjczOFx1NjczOVx1NjczYlx1NjczY1x1NjczZVx1NjczZlx1Njc0MVx1Njc0NFx1Njc0NVx1Njc0N1x1Njc0YVx1Njc0Ylx1Njc0ZFx1Njc1Mlx1Njc1''@;'; put 'put ''NFx1Njc1NVx1Njc1NyIsNCwiXHU2NzVkXHU2NzYyXHU2NzYzXHU2NzY0XHU2NzY2XHU2NzY3XHU2NzZiXHU2NzZjXHU2NzZlXHU2NzcxXHU2Nzc0XHU2Nzc2Il0sWyI5NjgwIiwiXHU2Nzc4XHU2Nzc5XHU2NzdhXHU2NzdiXHU2NzdkXHU2NzgwXHU2NzgyXHU2NzgzXHU2Nzg1XHU2Nzg2XHU2''@;'; put 'put ''Nzg4XHU2NzhhXHU2NzhjXHU2NzhkXHU2NzhlXHU2NzhmXHU2NzkxXHU2NzkyXHU2NzkzXHU2Nzk0XHU2Nzk2XHU2Nzk5XHU2NzliXHU2NzlmXHU2N2EwXHU2N2ExXHU2N2E0XHU2N2E2XHU2N2E5XHU2N2FjXHU2N2FlXHU2N2IxXHU2N2IyXHU2N2I0XHU2N2I5Iiw3LCJcdTY3YzJcdTY3YzUi''@;'; put 'put ''LDksIlx1NjdkNVx1NjdkNlx1NjdkN1x1NjdkYlx1NjdkZlx1NjdlMVx1NjdlM1x1NjdlNFx1NjdlNlx1NjdlN1x1NjdlOFx1NjdlYVx1NjdlYlx1NjdlZFx1NjdlZVx1NjdmMlx1NjdmNSIsNywiXHU2N2ZlXHU2ODAxXHU2ODAyXHU2ODAzXHU2ODA0XHU2ODA2XHU2ODBkXHU2ODEwXHU2ODEy''@;'; put 'put ''XHU2ODE0XHU2ODE1XHU2ODE4Iiw0LCJcdTY4MWVcdTY4MWZcdTY4MjBcdTY4MjIiLDYsIlx1NjgyYiIsNiwiXHU2ODM0XHU2ODM1XHU2ODM2XHU2ODNhXHU2ODNiXHU2ODNmXHU2ODQ3XHU2ODRiXHU2ODRkXHU2ODRmXHU2ODUyXHU2ODU2Iiw1XSxbIjk3NDAiLCJcdTY4NWNcdTY4NWRcdTY4''@;'; put 'put ''NWVcdTY4NWZcdTY4NmFcdTY4NmMiLDcsIlx1Njg3NVx1Njg3OCIsOCwiXHU2ODgyXHU2ODg0XHU2ODg3Iiw3LCJcdTY4OTBcdTY4OTFcdTY4OTJcdTY4OTRcdTY4OTVcdTY4OTZcdTY4OTgiLDksIlx1NjhhM1x1NjhhNFx1NjhhNVx1NjhhOVx1NjhhYVx1NjhhYlx1NjhhY1x1NjhhZVx1Njhi''@;'; put 'put ''MVx1NjhiMlx1NjhiNFx1NjhiNlx1NjhiN1x1NjhiOCJdLFsiOTc4MCIsIlx1NjhiOSIsNiwiXHU2OGMxXHU2OGMzIiw1LCJcdTY4Y2FcdTY4Y2NcdTY4Y2VcdTY4Y2ZcdTY4ZDBcdTY4ZDFcdTY4ZDNcdTY4ZDRcdTY4ZDZcdTY4ZDdcdTY4ZDlcdTY4ZGIiLDQsIlx1NjhlMVx1NjhlMlx1Njhl''@;'; put 'put ''NCIsOSwiXHU2OGVmXHU2OGYyXHU2OGYzXHU2OGY0XHU2OGY2XHU2OGY3XHU2OGY4XHU2OGZiXHU2OGZkXHU2OGZlXHU2OGZmXHU2OTAwXHU2OTAyXHU2OTAzXHU2OTA0XHU2OTA2Iiw0LCJcdTY5MGNcdTY5MGZcdTY5MTFcdTY5MTMiLDExLCJcdTY5MjFcdTY5MjJcdTY5MjNcdTY5MjUiLDcs''@;'; put 'put ''Ilx1NjkyZVx1NjkyZlx1NjkzMVx1NjkzMlx1NjkzM1x1NjkzNVx1NjkzNlx1NjkzN1x1NjkzOFx1NjkzYVx1NjkzYlx1NjkzY1x1NjkzZVx1Njk0MFx1Njk0MVx1Njk0MyIsMTYsIlx1Njk1NVx1Njk1Nlx1Njk1OFx1Njk1OVx1Njk1Ylx1Njk1Y1x1Njk1ZiJdLFsiOTg0MCIsIlx1Njk2MVx1''@;'; put 'put ''Njk2Mlx1Njk2NFx1Njk2NVx1Njk2N1x1Njk2OFx1Njk2OVx1Njk2YVx1Njk2Y1x1Njk2ZFx1Njk2Zlx1Njk3MFx1Njk3MiIsNCwiXHU2OTdhXHU2OTdiXHU2OTdkXHU2OTdlXHU2OTdmXHU2OTgxXHU2OTgzXHU2OTg1XHU2OThhXHU2OThiXHU2OThjXHU2OThlIiw1LCJcdTY5OTZcdTY5OTdc''@;'; put 'put ''dTY5OTlcdTY5OWFcdTY5OWQiLDksIlx1NjlhOVx1NjlhYVx1NjlhY1x1NjlhZVx1NjlhZlx1NjliMFx1NjliMlx1NjliM1x1NjliNVx1NjliNlx1NjliOFx1NjliOVx1NjliYVx1NjliY1x1NjliZCJdLFsiOTg4MCIsIlx1NjliZVx1NjliZlx1NjljMFx1NjljMiIsNywiXHU2OWNiXHU2OWNk''@;'; put 'put ''XHU2OWNmXHU2OWQxXHU2OWQyXHU2OWQzXHU2OWQ1Iiw1LCJcdTY5ZGNcdTY5ZGRcdTY5ZGVcdTY5ZTEiLDExLCJcdTY5ZWVcdTY5ZWZcdTY5ZjBcdTY5ZjFcdTY5ZjMiLDksIlx1NjlmZVx1NmEwMCIsOSwiXHU2YTBiIiwxMSwiXHU2YTE5Iiw1LCJcdTZhMjBcdTZhMjIiLDUsIlx1NmEyOVx1''@;'; put 'put ''NmEyYlx1NmEyY1x1NmEyZFx1NmEyZVx1NmEzMFx1NmEzMlx1NmEzM1x1NmEzNFx1NmEzNiIsNiwiXHU2YTNmIiw0LCJcdTZhNDVcdTZhNDZcdTZhNDgiLDcsIlx1NmE1MSIsNiwiXHU2YTVhIl0sWyI5OTQwIiwiXHU2YTVjIiw0LCJcdTZhNjJcdTZhNjNcdTZhNjRcdTZhNjYiLDEwLCJcdTZh''@;'; put 'put ''NzIiLDYsIlx1NmE3YVx1NmE3Ylx1NmE3ZFx1NmE3ZVx1NmE3Zlx1NmE4MVx1NmE4Mlx1NmE4M1x1NmE4NSIsOCwiXHU2YThmXHU2YTkyIiw0LCJcdTZhOTgiLDcsIlx1NmFhMSIsNV0sWyI5OTgwIiwiXHU2YWE3XHU2YWE4XHU2YWFhXHU2YWFkIiwxMTQsIlx1NmIyNVx1NmIyNlx1NmIyOCIs''@;'; put 'put ''Nl0sWyI5YTQwIiwiXHU2YjJmXHU2YjMwXHU2YjMxXHU2YjMzXHU2YjM0XHU2YjM1XHU2YjM2XHU2YjM4XHU2YjNiXHU2YjNjXHU2YjNkXHU2YjNmXHU2YjQwXHU2YjQxXHU2YjQyXHU2YjQ0XHU2YjQ1XHU2YjQ4XHU2YjRhXHU2YjRiXHU2YjRkIiwxMSwiXHU2YjVhIiw3LCJcdTZiNjhcdTZi''@;'; put 'put ''NjlcdTZiNmIiLDEzLCJcdTZiN2FcdTZiN2RcdTZiN2VcdTZiN2ZcdTZiODBcdTZiODVcdTZiODgiXSxbIjlhODAiLCJcdTZiOGNcdTZiOGVcdTZiOGZcdTZiOTBcdTZiOTFcdTZiOTRcdTZiOTVcdTZiOTdcdTZiOThcdTZiOTlcdTZiOWMiLDQsIlx1NmJhMiIsNywiXHU2YmFiIiw3LCJcdTZi''@;'; put 'put ''YjZcdTZiYjgiLDYsIlx1NmJjMFx1NmJjM1x1NmJjNFx1NmJjNiIsNCwiXHU2YmNjXHU2YmNlXHU2YmQwXHU2YmQxXHU2YmQ4XHU2YmRhXHU2YmRjIiw0LCJcdTZiZTIiLDcsIlx1NmJlY1x1NmJlZFx1NmJlZVx1NmJmMFx1NmJmMVx1NmJmMlx1NmJmNFx1NmJmNlx1NmJmN1x1NmJmOFx1NmJm''@;'; put 'put ''YVx1NmJmYlx1NmJmY1x1NmJmZSIsNiwiXHU2YzA4Iiw0LCJcdTZjMGVcdTZjMTJcdTZjMTdcdTZjMWNcdTZjMWRcdTZjMWVcdTZjMjBcdTZjMjNcdTZjMjVcdTZjMmJcdTZjMmNcdTZjMmRcdTZjMzFcdTZjMzNcdTZjMzZcdTZjMzdcdTZjMzlcdTZjM2FcdTZjM2JcdTZjM2NcdTZjM2VcdTZj''@;'; put 'put ''M2ZcdTZjNDNcdTZjNDRcdTZjNDVcdTZjNDhcdTZjNGIiLDQsIlx1NmM1MVx1NmM1Mlx1NmM1M1x1NmM1Nlx1NmM1OCJdLFsiOWI0MCIsIlx1NmM1OVx1NmM1YVx1NmM2Mlx1NmM2M1x1NmM2NVx1NmM2Nlx1NmM2N1x1NmM2YiIsNCwiXHU2YzcxXHU2YzczXHU2Yzc1XHU2Yzc3XHU2Yzc4XHU2''@;'; put 'put ''YzdhXHU2YzdiXHU2YzdjXHU2YzdmXHU2YzgwXHU2Yzg0XHU2Yzg3XHU2YzhhXHU2YzhiXHU2YzhkXHU2YzhlXHU2YzkxXHU2YzkyXHU2Yzk1XHU2Yzk2XHU2Yzk3XHU2Yzk4XHU2YzlhXHU2YzljXHU2YzlkXHU2YzllXHU2Y2EwXHU2Y2EyXHU2Y2E4XHU2Y2FjXHU2Y2FmXHU2Y2IwXHU2Y2I0''@;'; put 'put ''XHU2Y2I1XHU2Y2I2XHU2Y2I3XHU2Y2JhXHU2Y2MwXHU2Y2MxXHU2Y2MyXHU2Y2MzXHU2Y2M2XHU2Y2M3XHU2Y2M4XHU2Y2NiXHU2Y2NkXHU2Y2NlXHU2Y2NmXHU2Y2QxXHU2Y2QyXHU2Y2Q4Il0sWyI5YjgwIiwiXHU2Y2Q5XHU2Y2RhXHU2Y2RjXHU2Y2RkXHU2Y2RmXHU2Y2U0XHU2Y2U2XHU2''@;'; put 'put ''Y2U3XHU2Y2U5XHU2Y2VjXHU2Y2VkXHU2Y2YyXHU2Y2Y0XHU2Y2Y5XHU2Y2ZmXHU2ZDAwXHU2ZDAyXHU2ZDAzXHU2ZDA1XHU2ZDA2XHU2ZDA4XHU2ZDA5XHU2ZDBhXHU2ZDBkXHU2ZDBmXHU2ZDEwXHU2ZDExXHU2ZDEzXHU2ZDE0XHU2ZDE1XHU2ZDE2XHU2ZDE4XHU2ZDFjXHU2ZDFkXHU2ZDFm''@;'; put 'put ''Iiw1LCJcdTZkMjZcdTZkMjhcdTZkMjlcdTZkMmNcdTZkMmRcdTZkMmZcdTZkMzBcdTZkMzRcdTZkMzZcdTZkMzdcdTZkMzhcdTZkM2FcdTZkM2ZcdTZkNDBcdTZkNDJcdTZkNDRcdTZkNDlcdTZkNGNcdTZkNTBcdTZkNTVcdTZkNTZcdTZkNTdcdTZkNThcdTZkNWJcdTZkNWRcdTZkNWZcdTZk''@;'; put 'put ''NjFcdTZkNjJcdTZkNjRcdTZkNjVcdTZkNjdcdTZkNjhcdTZkNmJcdTZkNmNcdTZkNmRcdTZkNzBcdTZkNzFcdTZkNzJcdTZkNzNcdTZkNzVcdTZkNzZcdTZkNzlcdTZkN2FcdTZkN2JcdTZkN2QiLDQsIlx1NmQ4M1x1NmQ4NFx1NmQ4Nlx1NmQ4N1x1NmQ4YVx1NmQ4Ylx1NmQ4ZFx1NmQ4Zlx1''@;'; put 'put ''NmQ5MFx1NmQ5Mlx1NmQ5NiIsNCwiXHU2ZDljXHU2ZGEyXHU2ZGE1XHU2ZGFjXHU2ZGFkXHU2ZGIwXHU2ZGIxXHU2ZGIzXHU2ZGI0XHU2ZGI2XHU2ZGI3XHU2ZGI5Iiw1LCJcdTZkYzFcdTZkYzJcdTZkYzNcdTZkYzhcdTZkYzlcdTZkY2EiXSxbIjljNDAiLCJcdTZkY2RcdTZkY2VcdTZkY2Zc''@;'; put 'put ''dTZkZDBcdTZkZDJcdTZkZDNcdTZkZDRcdTZkZDVcdTZkZDdcdTZkZGFcdTZkZGJcdTZkZGNcdTZkZGZcdTZkZTJcdTZkZTNcdTZkZTVcdTZkZTdcdTZkZThcdTZkZTlcdTZkZWFcdTZkZWRcdTZkZWZcdTZkZjBcdTZkZjJcdTZkZjRcdTZkZjVcdTZkZjZcdTZkZjhcdTZkZmFcdTZkZmQiLDcs''@;'; put 'put ''Ilx1NmUwNlx1NmUwN1x1NmUwOFx1NmUwOVx1NmUwYlx1NmUwZlx1NmUxMlx1NmUxM1x1NmUxNVx1NmUxOFx1NmUxOVx1NmUxYlx1NmUxY1x1NmUxZVx1NmUxZlx1NmUyMlx1NmUyNlx1NmUyN1x1NmUyOFx1NmUyYVx1NmUyY1x1NmUyZVx1NmUzMFx1NmUzMVx1NmUzM1x1NmUzNSJdLFsiOWM4''@;'; put 'put ''MCIsIlx1NmUzNlx1NmUzN1x1NmUzOVx1NmUzYiIsNywiXHU2ZTQ1Iiw3LCJcdTZlNGZcdTZlNTBcdTZlNTFcdTZlNTJcdTZlNTVcdTZlNTdcdTZlNTlcdTZlNWFcdTZlNWNcdTZlNWRcdTZlNWVcdTZlNjAiLDEwLCJcdTZlNmNcdTZlNmRcdTZlNmYiLDE0LCJcdTZlODBcdTZlODFcdTZlODJc''@;'; put 'put ''dTZlODRcdTZlODdcdTZlODhcdTZlOGEiLDQsIlx1NmU5MSIsNiwiXHU2ZTk5XHU2ZTlhXHU2ZTliXHU2ZTlkXHU2ZTllXHU2ZWEwXHU2ZWExXHU2ZWEzXHU2ZWE0XHU2ZWE2XHU2ZWE4XHU2ZWE5XHU2ZWFiXHU2ZWFjXHU2ZWFkXHU2ZWFlXHU2ZWIwXHU2ZWIzXHU2ZWI1XHU2ZWI4XHU2ZWI5''@;'; put 'put ''XHU2ZWJjXHU2ZWJlXHU2ZWJmXHU2ZWMwXHU2ZWMzXHU2ZWM0XHU2ZWM1XHU2ZWM2XHU2ZWM4XHU2ZWM5XHU2ZWNhXHU2ZWNjXHU2ZWNkXHU2ZWNlXHU2ZWQwXHU2ZWQyXHU2ZWQ2XHU2ZWQ4XHU2ZWQ5XHU2ZWRiXHU2ZWRjXHU2ZWRkXHU2ZWUzXHU2ZWU3XHU2ZWVhIiw1XSxbIjlkNDAiLCJc''@;'; put 'put ''dTZlZjBcdTZlZjFcdTZlZjJcdTZlZjNcdTZlZjVcdTZlZjZcdTZlZjdcdTZlZjhcdTZlZmEiLDcsIlx1NmYwM1x1NmYwNFx1NmYwNVx1NmYwN1x1NmYwOFx1NmYwYSIsNCwiXHU2ZjEwXHU2ZjExXHU2ZjEyXHU2ZjE2Iiw5LCJcdTZmMjFcdTZmMjJcdTZmMjNcdTZmMjVcdTZmMjZcdTZmMjdc''@;'; put 'put ''dTZmMjhcdTZmMmNcdTZmMmVcdTZmMzBcdTZmMzJcdTZmMzRcdTZmMzVcdTZmMzciLDYsIlx1NmYzZlx1NmY0MFx1NmY0MVx1NmY0MiJdLFsiOWQ4MCIsIlx1NmY0M1x1NmY0NFx1NmY0NVx1NmY0OFx1NmY0OVx1NmY0YVx1NmY0Y1x1NmY0ZSIsOSwiXHU2ZjU5XHU2ZjVhXHU2ZjViXHU2ZjVk''@;'; put 'put ''XHU2ZjVmXHU2ZjYwXHU2ZjYxXHU2ZjYzXHU2ZjY0XHU2ZjY1XHU2ZjY3Iiw1LCJcdTZmNmZcdTZmNzBcdTZmNzFcdTZmNzNcdTZmNzVcdTZmNzZcdTZmNzdcdTZmNzlcdTZmN2JcdTZmN2QiLDYsIlx1NmY4NVx1NmY4Nlx1NmY4N1x1NmY4YVx1NmY4Ylx1NmY4ZiIsMTIsIlx1NmY5ZFx1NmY5''@;'; put 'put ''ZVx1NmY5Zlx1NmZhMFx1NmZhMiIsNCwiXHU2ZmE4IiwxMCwiXHU2ZmI0XHU2ZmI1XHU2ZmI3XHU2ZmI4XHU2ZmJhIiw1LCJcdTZmYzFcdTZmYzMiLDUsIlx1NmZjYSIsNiwiXHU2ZmQzIiwxMCwiXHU2ZmRmXHU2ZmUyXHU2ZmUzXHU2ZmU0XHU2ZmU1Il0sWyI5ZTQwIiwiXHU2ZmU2Iiw3LCJc''@;'; put 'put ''dTZmZjAiLDMyLCJcdTcwMTIiLDcsIlx1NzAxYyIsNiwiXHU3MDI0Iiw2XSxbIjllODAiLCJcdTcwMmIiLDksIlx1NzAzNlx1NzAzN1x1NzAzOFx1NzAzYSIsMTcsIlx1NzA0ZFx1NzA0ZVx1NzA1MCIsMTMsIlx1NzA1ZiIsMTEsIlx1NzA2ZVx1NzA3MVx1NzA3Mlx1NzA3M1x1NzA3NFx1NzA3''@;'; put 'put ''N1x1NzA3OVx1NzA3YVx1NzA3Ylx1NzA3ZFx1NzA4MVx1NzA4Mlx1NzA4M1x1NzA4NFx1NzA4Nlx1NzA4N1x1NzA4OFx1NzA4Ylx1NzA4Y1x1NzA4ZFx1NzA4Zlx1NzA5MFx1NzA5MVx1NzA5M1x1NzA5N1x1NzA5OFx1NzA5YVx1NzA5Ylx1NzA5ZSIsMTIsIlx1NzBiMFx1NzBiMlx1NzBiNFx1''@;'; put 'put ''NzBiNVx1NzBiNlx1NzBiYVx1NzBiZVx1NzBiZlx1NzBjNFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBjOVx1NzBjYiIsMTIsIlx1NzBkYSJdLFsiOWY0MCIsIlx1NzBkY1x1NzBkZFx1NzBkZVx1NzBlMFx1NzBlMVx1NzBlMlx1NzBlM1x1NzBlNVx1NzBlYVx1NzBlZVx1NzBmMCIsNiwiXHU3MGY4''@;'; put 'put ''XHU3MGZhXHU3MGZiXHU3MGZjXHU3MGZlIiwxMCwiXHU3MTBiIiw0LCJcdTcxMTFcdTcxMTJcdTcxMTRcdTcxMTdcdTcxMWIiLDEwLCJcdTcxMjciLDcsIlx1NzEzMlx1NzEzM1x1NzEzNCJdLFsiOWY4MCIsIlx1NzEzNVx1NzEzNyIsMTMsIlx1NzE0Nlx1NzE0N1x1NzE0OFx1NzE0OVx1NzE0''@;'; put 'put ''Ylx1NzE0ZFx1NzE0ZiIsMTIsIlx1NzE1ZFx1NzE1ZiIsNCwiXHU3MTY1XHU3MTY5Iiw0LCJcdTcxNmZcdTcxNzBcdTcxNzFcdTcxNzRcdTcxNzVcdTcxNzZcdTcxNzdcdTcxNzlcdTcxN2JcdTcxN2NcdTcxN2UiLDUsIlx1NzE4NSIsNCwiXHU3MThiXHU3MThjXHU3MThkXHU3MThlXHU3MTkw''@;'; put 'put ''XHU3MTkxXHU3MTkyXHU3MTkzXHU3MTk1XHU3MTk2XHU3MTk3XHU3MTlhIiw0LCJcdTcxYTEiLDYsIlx1NzFhOVx1NzFhYVx1NzFhYlx1NzFhZCIsNSwiXHU3MWI0XHU3MWI2XHU3MWI3XHU3MWI4XHU3MWJhIiw4LCJcdTcxYzQiLDksIlx1NzFjZiIsNF0sWyJhMDQwIiwiXHU3MWQ2Iiw5LCJc''@;'; put 'put ''dTcxZTFcdTcxZTJcdTcxZTNcdTcxZTRcdTcxZTZcdTcxZTgiLDUsIlx1NzFlZiIsOSwiXHU3MWZhIiwxMSwiXHU3MjA3IiwxOV0sWyJhMDgwIiwiXHU3MjFiXHU3MjFjXHU3MjFlIiw5LCJcdTcyMjlcdTcyMmJcdTcyMmRcdTcyMmVcdTcyMmZcdTcyMzJcdTcyMzNcdTcyMzRcdTcyM2FcdTcy''@;'; put 'put ''M2NcdTcyM2VcdTcyNDAiLDYsIlx1NzI0OVx1NzI0YVx1NzI0Ylx1NzI0ZVx1NzI0Zlx1NzI1MFx1NzI1MVx1NzI1M1x1NzI1NFx1NzI1NVx1NzI1N1x1NzI1OFx1NzI1YVx1NzI1Y1x1NzI1ZVx1NzI2MFx1NzI2M1x1NzI2NFx1NzI2NVx1NzI2OFx1NzI2YVx1NzI2Ylx1NzI2Y1x1NzI2ZFx1''@;'; put 'put ''NzI3MFx1NzI3MVx1NzI3M1x1NzI3NFx1NzI3Nlx1NzI3N1x1NzI3OFx1NzI3Ylx1NzI3Y1x1NzI3ZFx1NzI4Mlx1NzI4M1x1NzI4NSIsNCwiXHU3MjhjXHU3MjhlXHU3MjkwXHU3MjkxXHU3MjkzIiwxMSwiXHU3MmEwIiwxMSwiXHU3MmFlXHU3MmIxXHU3MmIyXHU3MmIzXHU3MmI1XHU3MmJh''@;'; put 'put ''Iiw2LCJcdTcyYzVcdTcyYzZcdTcyYzdcdTcyYzlcdTcyY2FcdTcyY2JcdTcyY2NcdTcyY2ZcdTcyZDFcdTcyZDNcdTcyZDRcdTcyZDVcdTcyZDZcdTcyZDhcdTcyZGFcdTcyZGIiXSxbImExYTEiLCJcdTMwMDBcdTMwMDFcdTMwMDJceGI3XHUwMmM5XHUwMmM3XHhhOFx1MzAwM1x1MzAwNVx1''@;'; put 'put ''MjAxNFx1ZmY1ZVx1MjAxNlx1MjAyNlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOCIsNywiXHUzMDE2XHUzMDE3XHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUyMjM2XHUyMjI3XHUyMjI4XHUyMjExXHUyMjBmXHUyMjJhXHUyMjI5XHUyMjA4XHUyMjM3XHUyMjFh''@;'; put 'put ''XHUyMmE1XHUyMjI1XHUyMjIwXHUyMzEyXHUyMjk5XHUyMjJiXHUyMjJlXHUyMjYxXHUyMjRjXHUyMjQ4XHUyMjNkXHUyMjFkXHUyMjYwXHUyMjZlXHUyMjZmXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM1XHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmYwNFx4YTRc''@;'; put 'put ''dWZmZTBcdWZmZTFcdTIwMzBceGE3XHUyMTE2XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyMDNiXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzIl0sWyJhMmExIiwiXHUyMTcwIiw5XSxbImEyYjEiLCJcdTI0''@;'; put 'put ''ODgiLDE5LCJcdTI0NzQiLDE5LCJcdTI0NjAiLDldLFsiYTJlNSIsIlx1MzIyMCIsOV0sWyJhMmYxIiwiXHUyMTYwIiwxMV0sWyJhM2ExIiwiXHVmZjAxXHVmZjAyXHVmZjAzXHVmZmU1XHVmZjA1Iiw4OCwiXHVmZmUzIl0sWyJhNGExIiwiXHUzMDQxIiw4Ml0sWyJhNWExIiwiXHUzMGExIiw4''@;'; put 'put ''NV0sWyJhNmExIiwiXHUwMzkxIiwxNiwiXHUwM2EzIiw2XSxbImE2YzEiLCJcdTAzYjEiLDE2LCJcdTAzYzMiLDZdLFsiYTZlMCIsIlx1ZmUzNVx1ZmUzNlx1ZmUzOVx1ZmUzYVx1ZmUzZlx1ZmU0MFx1ZmUzZFx1ZmUzZVx1ZmU0MVx1ZmU0Mlx1ZmU0M1x1ZmU0NCJdLFsiYTZlZSIsIlx1ZmUz''@;'; put 'put ''Ylx1ZmUzY1x1ZmUzN1x1ZmUzOFx1ZmUzMSJdLFsiYTZmNCIsIlx1ZmUzM1x1ZmUzNCJdLFsiYTdhMSIsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhN2QxIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImE4NDAiLCJcdTAyY2FcdTAyY2JcdTAyZDlcdTIwMTNcdTIw''@;'; put 'put ''MTVcdTIwMjVcdTIwMzVcdTIxMDVcdTIxMDlcdTIxOTZcdTIxOTdcdTIxOThcdTIxOTlcdTIyMTVcdTIyMWZcdTIyMjNcdTIyNTJcdTIyNjZcdTIyNjdcdTIyYmZcdTI1NTAiLDM1LCJcdTI1ODEiLDZdLFsiYTg4MCIsIlx1MjU4OCIsNywiXHUyNTkzXHUyNTk0XHUyNTk1XHUyNWJjXHUyNWJk''@;'; put 'put ''XHUyNWUyXHUyNWUzXHUyNWU0XHUyNWU1XHUyNjA5XHUyMjk1XHUzMDEyXHUzMDFkXHUzMDFlIl0sWyJhOGExIiwiXHUwMTAxXHhlMVx1MDFjZVx4ZTBcdTAxMTNceGU5XHUwMTFiXHhlOFx1MDEyYlx4ZWRcdTAxZDBceGVjXHUwMTRkXHhmM1x1MDFkMlx4ZjJcdTAxNmJceGZhXHUwMWQ0XHhm''@;'; put 'put ''OVx1MDFkNlx1MDFkOFx1MDFkYVx1MDFkY1x4ZmNceGVhXHUwMjUxIl0sWyJhOGJkIiwiXHUwMTQ0XHUwMTQ4Il0sWyJhOGMwIiwiXHUwMjYxIl0sWyJhOGM1IiwiXHUzMTA1IiwzNl0sWyJhOTQwIiwiXHUzMDIxIiw4LCJcdTMyYTNcdTMzOGVcdTMzOGZcdTMzOWNcdTMzOWRcdTMzOWVcdTMz''@;'; put 'put ''YTFcdTMzYzRcdTMzY2VcdTMzZDFcdTMzZDJcdTMzZDVcdWZlMzBcdWZmZTJcdWZmZTQiXSxbImE5NTkiLCJcdTIxMjFcdTMyMzEiXSxbImE5NWMiLCJcdTIwMTAiXSxbImE5NjAiLCJcdTMwZmNcdTMwOWJcdTMwOWNcdTMwZmRcdTMwZmVcdTMwMDZcdTMwOWRcdTMwOWVcdWZlNDkiLDksIlx1''@;'; put 'put ''ZmU1NFx1ZmU1NVx1ZmU1Nlx1ZmU1N1x1ZmU1OSIsOF0sWyJhOTgwIiwiXHVmZTYyIiw0LCJcdWZlNjhcdWZlNjlcdWZlNmFcdWZlNmIiXSxbImE5OTYiLCJcdTMwMDciXSxbImE5YTQiLCJcdTI1MDAiLDc1XSxbImFhNDAiLCJcdTcyZGNcdTcyZGRcdTcyZGZcdTcyZTIiLDUsIlx1NzJlYVx1''@;'; put 'put ''NzJlYlx1NzJmNVx1NzJmNlx1NzJmOVx1NzJmZFx1NzJmZVx1NzJmZlx1NzMwMFx1NzMwMlx1NzMwNCIsNSwiXHU3MzBiXHU3MzBjXHU3MzBkXHU3MzBmXHU3MzEwXHU3MzExXHU3MzEyXHU3MzE0XHU3MzE4XHU3MzE5XHU3MzFhXHU3MzFmXHU3MzIwXHU3MzIzXHU3MzI0XHU3MzI2XHU3MzI3''@;'; put 'put ''XHU3MzI4XHU3MzJkXHU3MzJmXHU3MzMwXHU3MzMyXHU3MzMzXHU3MzM1XHU3MzM2XHU3MzNhXHU3MzNiXHU3MzNjXHU3MzNkXHU3MzQwIiw4XSxbImFhODAiLCJcdTczNDlcdTczNGFcdTczNGJcdTczNGNcdTczNGVcdTczNGZcdTczNTFcdTczNTNcdTczNTRcdTczNTVcdTczNTZcdTczNTgi''@;'; put 'put ''LDcsIlx1NzM2MSIsMTAsIlx1NzM2ZVx1NzM3MFx1NzM3MSJdLFsiYWI0MCIsIlx1NzM3MiIsMTEsIlx1NzM3ZiIsNCwiXHU3Mzg1XHU3Mzg2XHU3Mzg4XHU3MzhhXHU3MzhjXHU3MzhkXHU3MzhmXHU3MzkwXHU3MzkyXHU3MzkzXHU3Mzk0XHU3Mzk1XHU3Mzk3XHU3Mzk4XHU3Mzk5XHU3Mzlh''@;'; put 'put ''XHU3MzljXHU3MzlkXHU3MzllXHU3M2EwXHU3M2ExXHU3M2EzIiw1LCJcdTczYWFcdTczYWNcdTczYWRcdTczYjFcdTczYjRcdTczYjVcdTczYjZcdTczYjhcdTczYjlcdTczYmNcdTczYmRcdTczYmVcdTczYmZcdTczYzFcdTczYzMiLDRdLFsiYWI4MCIsIlx1NzNjYlx1NzNjY1x1NzNjZVx1''@;'; put 'put ''NzNkMiIsNiwiXHU3M2RhXHU3M2RiXHU3M2RjXHU3M2RkXHU3M2RmXHU3M2UxXHU3M2UyXHU3M2UzXHU3M2U0XHU3M2U2XHU3M2U4XHU3M2VhXHU3M2ViXHU3M2VjXHU3M2VlXHU3M2VmXHU3M2YwXHU3M2YxXHU3M2YzIiw0XSxbImFjNDAiLCJcdTczZjgiLDEwLCJcdTc0MDRcdTc0MDdcdTc0''@;'; put 'put ''MDhcdTc0MGJcdTc0MGNcdTc0MGRcdTc0MGVcdTc0MTEiLDgsIlx1NzQxYyIsNSwiXHU3NDIzXHU3NDI0XHU3NDI3XHU3NDI5XHU3NDJiXHU3NDJkXHU3NDJmXHU3NDMxXHU3NDMyXHU3NDM3Iiw0LCJcdTc0M2RcdTc0M2VcdTc0M2ZcdTc0NDBcdTc0NDIiLDExXSxbImFjODAiLCJcdTc0NGUi''@;'; put 'put ''LDYsIlx1NzQ1Nlx1NzQ1OFx1NzQ1ZFx1NzQ2MCIsMTIsIlx1NzQ2ZVx1NzQ2Zlx1NzQ3MSIsNCwiXHU3NDc4XHU3NDc5XHU3NDdhIl0sWyJhZDQwIiwiXHU3NDdiXHU3NDdjXHU3NDdkXHU3NDdmXHU3NDgyXHU3NDg0XHU3NDg1XHU3NDg2XHU3NDg4XHU3NDg5XHU3NDhhXHU3NDhjXHU3NDhk''@;'; put 'put ''XHU3NDhmXHU3NDkxIiwxMCwiXHU3NDlkXHU3NDlmIiw3LCJcdTc0YWEiLDE1LCJcdTc0YmIiLDEyXSxbImFkODAiLCJcdTc0YzgiLDksIlx1NzRkMyIsOCwiXHU3NGRkXHU3NGRmXHU3NGUxXHU3NGU1XHU3NGU3Iiw2LCJcdTc0ZjBcdTc0ZjFcdTc0ZjIiXSxbImFlNDAiLCJcdTc0ZjNcdTc0''@;'; put 'put ''ZjVcdTc0ZjgiLDYsIlx1NzUwMFx1NzUwMVx1NzUwMlx1NzUwM1x1NzUwNSIsNywiXHU3NTBlXHU3NTEwXHU3NTEyXHU3NTE0XHU3NTE1XHU3NTE2XHU3NTE3XHU3NTFiXHU3NTFkXHU3NTFlXHU3NTIwIiw0LCJcdTc1MjZcdTc1MjdcdTc1MmFcdTc1MmVcdTc1MzRcdTc1MzZcdTc1MzlcdTc1''@;'; put 'put ''M2NcdTc1M2RcdTc1M2ZcdTc1NDFcdTc1NDJcdTc1NDNcdTc1NDRcdTc1NDZcdTc1NDdcdTc1NDlcdTc1NGFcdTc1NGRcdTc1NTBcdTc1NTFcdTc1NTJcdTc1NTNcdTc1NTVcdTc1NTZcdTc1NTdcdTc1NTgiXSxbImFlODAiLCJcdTc1NWQiLDcsIlx1NzU2N1x1NzU2OFx1NzU2OVx1NzU2YiIs''@;'; put 'put ''NiwiXHU3NTczXHU3NTc1XHU3NTc2XHU3NTc3XHU3NTdhIiw0LCJcdTc1ODBcdTc1ODFcdTc1ODJcdTc1ODRcdTc1ODVcdTc1ODciXSxbImFmNDAiLCJcdTc1ODhcdTc1ODlcdTc1OGFcdTc1OGNcdTc1OGRcdTc1OGVcdTc1OTBcdTc1OTNcdTc1OTVcdTc1OThcdTc1OWJcdTc1OWNcdTc1OWVc''@;'; put 'put ''dTc1YTJcdTc1YTYiLDQsIlx1NzVhZFx1NzViNlx1NzViN1x1NzViYVx1NzViYlx1NzViZlx1NzVjMFx1NzVjMVx1NzVjNlx1NzVjYlx1NzVjY1x1NzVjZVx1NzVjZlx1NzVkMFx1NzVkMVx1NzVkM1x1NzVkN1x1NzVkOVx1NzVkYVx1NzVkY1x1NzVkZFx1NzVkZlx1NzVlMFx1NzVlMVx1NzVl''@;'; put 'put ''NVx1NzVlOVx1NzVlY1x1NzVlZFx1NzVlZVx1NzVlZlx1NzVmMlx1NzVmM1x1NzVmNVx1NzVmNlx1NzVmN1x1NzVmOFx1NzVmYVx1NzVmYlx1NzVmZFx1NzVmZVx1NzYwMlx1NzYwNFx1NzYwNlx1NzYwNyJdLFsiYWY4MCIsIlx1NzYwOFx1NzYwOVx1NzYwYlx1NzYwZFx1NzYwZVx1NzYwZlx1''@;'; put 'put ''NzYxMVx1NzYxMlx1NzYxM1x1NzYxNFx1NzYxNlx1NzYxYVx1NzYxY1x1NzYxZFx1NzYxZVx1NzYyMVx1NzYyM1x1NzYyN1x1NzYyOFx1NzYyY1x1NzYyZVx1NzYyZlx1NzYzMVx1NzYzMlx1NzYzNlx1NzYzN1x1NzYzOVx1NzYzYVx1NzYzYlx1NzYzZFx1NzY0MVx1NzY0Mlx1NzY0NCJdLFsi''@;'; put 'put ''YjA0MCIsIlx1NzY0NSIsNiwiXHU3NjRlIiw1LCJcdTc2NTVcdTc2NTciLDQsIlx1NzY1ZFx1NzY1Zlx1NzY2MFx1NzY2MVx1NzY2Mlx1NzY2NCIsNiwiXHU3NjZjXHU3NjZkXHU3NjZlXHU3NjcwIiw3LCJcdTc2NzlcdTc2N2FcdTc2N2NcdTc2N2ZcdTc2ODBcdTc2ODFcdTc2ODNcdTc2ODVc''@;'; put 'put ''dTc2ODlcdTc2OGFcdTc2OGNcdTc2OGRcdTc2OGZcdTc2OTBcdTc2OTJcdTc2OTRcdTc2OTVcdTc2OTdcdTc2OThcdTc2OWFcdTc2OWIiXSxbImIwODAiLCJcdTc2OWMiLDcsIlx1NzZhNSIsOCwiXHU3NmFmXHU3NmIwXHU3NmIzXHU3NmI1Iiw5LCJcdTc2YzBcdTc2YzFcdTc2YzNcdTU1NGFc''@;'; put 'put ''dTk2M2ZcdTU3YzNcdTYzMjhcdTU0Y2VcdTU1MDlcdTU0YzBcdTc2OTFcdTc2NGNcdTg1M2NcdTc3ZWVcdTgyN2VcdTc4OGRcdTcyMzFcdTk2OThcdTk3OGRcdTZjMjhcdTViODlcdTRmZmFcdTYzMDlcdTY2OTdcdTVjYjhcdTgwZmFcdTY4NDhcdTgwYWVcdTY2MDJcdTc2Y2VcdTUxZjlcdTY1''@;'; put 'put ''NTZcdTcxYWNcdTdmZjFcdTg4ODRcdTUwYjJcdTU5NjVcdTYxY2FcdTZmYjNcdTgyYWRcdTYzNGNcdTYyNTJcdTUzZWRcdTU0MjdcdTdiMDZcdTUxNmJcdTc1YTRcdTVkZjRcdTYyZDRcdThkY2JcdTk3NzZcdTYyOGFcdTgwMTlcdTU3NWRcdTk3MzhcdTdmNjJcdTcyMzhcdTc2N2RcdTY3Y2Zc''@;'; put 'put ''dTc2N2VcdTY0NDZcdTRmNzBcdThkMjVcdTYyZGNcdTdhMTdcdTY1OTFcdTczZWRcdTY0MmNcdTYyNzNcdTgyMmNcdTk4ODFcdTY3N2ZcdTcyNDhcdTYyNmVcdTYyY2NcdTRmMzRcdTc0ZTNcdTUzNGFcdTUyOWVcdTdlY2FcdTkwYTZcdTVlMmVcdTY4ODZcdTY5OWNcdTgxODBcdTdlZDFcdTY4''@;'; put 'put ''ZDJcdTc4YzVcdTg2OGNcdTk1NTFcdTUwOGRcdThjMjRcdTgyZGVcdTgwZGVcdTUzMDVcdTg5MTJcdTUyNjUiXSxbImIxNDAiLCJcdTc2YzRcdTc2YzdcdTc2YzlcdTc2Y2JcdTc2Y2NcdTc2ZDNcdTc2ZDVcdTc2ZDlcdTc2ZGFcdTc2ZGNcdTc2ZGRcdTc2ZGVcdTc2ZTAiLDQsIlx1NzZlNiIs''@;'; put 'put ''NywiXHU3NmYwXHU3NmYzXHU3NmY1XHU3NmY2XHU3NmY3XHU3NmZhXHU3NmZiXHU3NmZkXHU3NmZmXHU3NzAwXHU3NzAyXHU3NzAzXHU3NzA1XHU3NzA2XHU3NzBhXHU3NzBjXHU3NzBlIiwxMCwiXHU3NzFiXHU3NzFjXHU3NzFkXHU3NzFlXHU3NzIxXHU3NzIzXHU3NzI0XHU3NzI1XHU3NzI3''@;'; put 'put ''XHU3NzJhXHU3NzJiIl0sWyJiMTgwIiwiXHU3NzJjXHU3NzJlXHU3NzMwIiw0LCJcdTc3MzlcdTc3M2JcdTc3M2RcdTc3M2VcdTc3M2ZcdTc3NDJcdTc3NDRcdTc3NDVcdTc3NDZcdTc3NDgiLDcsIlx1Nzc1MiIsNywiXHU3NzVjXHU4NTg0XHU5NmY5XHU0ZmRkXHU1ODIxXHU5OTcxXHU1Yjlk''@;'; put 'put ''XHU2MmIxXHU2MmE1XHU2NmI0XHU4Yzc5XHU5YzhkXHU3MjA2XHU2NzZmXHU3ODkxXHU2MGIyXHU1MzUxXHU1MzE3XHU4Zjg4XHU4MGNjXHU4ZDFkXHU5NGExXHU1MDBkXHU3MmM4XHU1OTA3XHU2MGViXHU3MTE5XHU4OGFiXHU1OTU0XHU4MmVmXHU2NzJjXHU3YjI4XHU1ZDI5XHU3ZWY3XHU3''@;'; put 'put ''NTJkXHU2Y2Y1XHU4ZTY2XHU4ZmY4XHU5MDNjXHU5ZjNiXHU2YmQ0XHU5MTE5XHU3YjE0XHU1ZjdjXHU3OGE3XHU4NGQ2XHU4NTNkXHU2YmQ1XHU2YmQ5XHU2YmQ2XHU1ZTAxXHU1ZTg3XHU3NWY5XHU5NWVkXHU2NTVkXHU1ZjBhXHU1ZmM1XHU4ZjlmXHU1OGMxXHU4MWMyXHU5MDdmXHU5NjVi''@;'; put 'put ''XHU5N2FkXHU4ZmI5XHU3ZjE2XHU4ZDJjXHU2MjQxXHU0ZmJmXHU1M2Q4XHU1MzVlXHU4ZmE4XHU4ZmE5XHU4ZmFiXHU5MDRkXHU2ODA3XHU1ZjZhXHU4MTk4XHU4ODY4XHU5Y2Q2XHU2MThiXHU1MjJiXHU3NjJhXHU1ZjZjXHU2NThjXHU2ZmQyXHU2ZWU4XHU1YmJlXHU2NDQ4XHU1MTc1XHU1''@;'; put 'put ''MWIwXHU2N2M0XHU0ZTE5XHU3OWM5XHU5OTdjXHU3MGIzIl0sWyJiMjQwIiwiXHU3NzVkXHU3NzVlXHU3NzVmXHU3NzYwXHU3NzY0XHU3NzY3XHU3NzY5XHU3NzZhXHU3NzZkIiwxMSwiXHU3NzdhXHU3NzdiXHU3NzdjXHU3NzgxXHU3NzgyXHU3NzgzXHU3Nzg2Iiw1LCJcdTc3OGZcdTc3OTBc''@;'; put 'put ''dTc3OTMiLDExLCJcdTc3YTFcdTc3YTNcdTc3YTRcdTc3YTZcdTc3YThcdTc3YWJcdTc3YWRcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjJcdTc3YjRcdTc3YjYiLDRdLFsiYjI4MCIsIlx1NzdiY1x1NzdiZVx1NzdjMCIsMTIsIlx1NzdjZSIsOCwiXHU3N2Q4XHU3N2Q5XHU3N2RhXHU3N2RkIiw0''@;'; put 'put ''LCJcdTc3ZTRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBcdTY0YWRcdTYyZThcdTk0YjVcdTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVlMWJcdTgyMzZcdTgxMTZcdTgxOGFcdTZlMjRcdTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBc''@;'; put 'put ''dTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYwMTZcdTY0ZTZcdTczMWNcdTg4YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlcdTgzZGNcdTg1MjFcdTk5MTBcdTUzYzJcdTg2OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRl''@;'; put 'put ''ZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRcdTY2ZjlcdTgzNDlcdTUzOTVcdTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUzYzlcdTgzMmNcdTgzMzZcdTY3ZTVcdTc4YjRcdTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRc''@;'; put 'put ''dThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThjMTdcdTdmMjBcdTk0ZjJcdTRlYTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTYiXSxbImIzNDAiLCJcdTc3ZTZcdTc3ZThcdTc3ZWFcdTc3ZWZcdTc3ZjBcdTc3ZjFcdTc3ZjJcdTc3ZjRcdTc3ZjVcdTc3ZjdcdTc3ZjlcdTc3ZmFcdTc3''@;'; put 'put ''ZmJcdTc3ZmNcdTc4MDMiLDUsIlx1NzgwYVx1NzgwYlx1NzgwZVx1NzgwZlx1NzgxMFx1NzgxM1x1NzgxNVx1NzgxOVx1NzgxYlx1NzgxZVx1NzgyMFx1NzgyMVx1NzgyMlx1NzgyNFx1NzgyOFx1NzgyYVx1NzgyYlx1NzgyZVx1NzgyZlx1NzgzMVx1NzgzMlx1NzgzM1x1NzgzNVx1NzgzNlx1''@;'; put 'put ''NzgzZFx1NzgzZlx1Nzg0MVx1Nzg0Mlx1Nzg0M1x1Nzg0NFx1Nzg0Nlx1Nzg0OFx1Nzg0OVx1Nzg0YVx1Nzg0Ylx1Nzg0ZFx1Nzg0Zlx1Nzg1MVx1Nzg1M1x1Nzg1NFx1Nzg1OFx1Nzg1OVx1Nzg1YSJdLFsiYjM4MCIsIlx1Nzg1Ylx1Nzg1Y1x1Nzg1ZSIsMTEsIlx1Nzg2ZiIsNywiXHU3ODc4''@;'; put 'put ''XHU3ODc5XHU3ODdhXHU3ODdiXHU3ODdkIiw2LCJcdTU3M2FcdTVjMWRcdTVlMzhcdTk1N2ZcdTUwN2ZcdTgwYTBcdTUzODJcdTY1NWVcdTc1NDVcdTU1MzFcdTUwMjFcdThkODVcdTYyODRcdTk0OWVcdTY3MWRcdTU2MzJcdTZmNmVcdTVkZTJcdTU0MzVcdTcwOTJcdThmNjZcdTYyNmZcdTY0''@;'; put 'put ''YTRcdTYzYTNcdTVmN2JcdTZmODhcdTkwZjRcdTgxZTNcdThmYjBcdTVjMThcdTY2NjhcdTVmZjFcdTZjODlcdTk2NDhcdThkODFcdTg4NmNcdTY0OTFcdTc5ZjBcdTU3Y2VcdTZhNTlcdTYyMTBcdTU0NDhcdTRlNThcdTdhMGJcdTYwZTlcdTZmODRcdThiZGFcdTYyN2ZcdTkwMWVcdTlhOGJc''@;'; put 'put ''dTc5ZTRcdTU0MDNcdTc1ZjRcdTYzMDFcdTUzMTlcdTZjNjBcdThmZGZcdTVmMWJcdTlhNzBcdTgwM2JcdTlmN2ZcdTRmODhcdTVjM2FcdThkNjRcdTdmYzVcdTY1YTVcdTcwYmRcdTUxNDVcdTUxYjJcdTg2NmJcdTVkMDdcdTViYTBcdTYyYmRcdTkxNmNcdTc1NzRcdThlMGNcdTdhMjBcdTYx''@;'; put 'put ''MDFcdTdiNzlcdTRlYzdcdTdlZjhcdTc3ODVcdTRlMTFcdTgxZWRcdTUyMWRcdTUxZmFcdTZhNzFcdTUzYThcdThlODdcdTk1MDRcdTk2Y2ZcdTZlYzFcdTk2NjRcdTY5NWEiXSxbImI0NDAiLCJcdTc4ODRcdTc4ODVcdTc4ODZcdTc4ODhcdTc4OGFcdTc4OGJcdTc4OGZcdTc4OTBcdTc4OTJc''@;'; put 'put ''dTc4OTRcdTc4OTVcdTc4OTZcdTc4OTlcdTc4OWRcdTc4OWVcdTc4YTBcdTc4YTJcdTc4YTRcdTc4YTZcdTc4YTgiLDcsIlx1NzhiNVx1NzhiNlx1NzhiN1x1NzhiOFx1NzhiYVx1NzhiYlx1NzhiY1x1NzhiZFx1NzhiZlx1NzhjMFx1NzhjMlx1NzhjM1x1NzhjNFx1NzhjNlx1NzhjN1x1Nzhj''@;'; put 'put ''OFx1NzhjY1x1NzhjZFx1NzhjZVx1NzhjZlx1NzhkMVx1NzhkMlx1NzhkM1x1NzhkNlx1NzhkN1x1NzhkOFx1NzhkYSIsOV0sWyJiNDgwIiwiXHU3OGU0XHU3OGU1XHU3OGU2XHU3OGU3XHU3OGU5XHU3OGVhXHU3OGViXHU3OGVkIiw0LCJcdTc4ZjNcdTc4ZjVcdTc4ZjZcdTc4ZjhcdTc4Zjlc''@;'; put 'put ''dTc4ZmIiLDUsIlx1NzkwMlx1NzkwM1x1NzkwNFx1NzkwNiIsNiwiXHU3ODQwXHU1MGE4XHU3N2Q3XHU2NDEwXHU4OWU2XHU1OTA0XHU2M2UzXHU1ZGRkXHU3YTdmXHU2OTNkXHU0ZjIwXHU4MjM5XHU1NTk4XHU0ZTMyXHU3NWFlXHU3YTk3XHU1ZTYyXHU1ZThhXHU5NWVmXHU1MjFiXHU1NDM5''@;'; put 'put ''XHU3MDhhXHU2Mzc2XHU5NTI0XHU1NzgyXHU2NjI1XHU2OTNmXHU5MTg3XHU1NTA3XHU2ZGYzXHU3ZWFmXHU4ODIyXHU2MjMzXHU3ZWYwXHU3NWI1XHU4MzI4XHU3OGMxXHU5NmNjXHU4ZjllXHU2MTQ4XHU3NGY3XHU4YmNkXHU2YjY0XHU1MjNhXHU4ZDUwXHU2YjIxXHU4MDZhXHU4NDcxXHU1''@;'; put 'put ''NmYxXHU1MzA2XHU0ZWNlXHU0ZTFiXHU1MWQxXHU3Yzk3XHU5MThiXHU3YzA3XHU0ZmMzXHU4ZTdmXHU3YmUxXHU3YTljXHU2NDY3XHU1ZDE0XHU1MGFjXHU4MTA2XHU3NjAxXHU3Y2I5XHU2ZGVjXHU3ZmUwXHU2NzUxXHU1YjU4XHU1YmY4XHU3OGNiXHU2NGFlXHU2NDEzXHU2M2FhXHU2MzJi''@;'; put 'put ''XHU5NTE5XHU2NDJkXHU4ZmJlXHU3YjU0XHU3NjI5XHU2MjUzXHU1OTI3XHU1NDQ2XHU2Yjc5XHU1MGEzXHU2MjM0XHU1ZTI2XHU2Yjg2XHU0ZWUzXHU4ZDM3XHU4ODhiXHU1Zjg1XHU5MDJlIl0sWyJiNTQwIiwiXHU3OTBkIiw1LCJcdTc5MTQiLDksIlx1NzkxZiIsNCwiXHU3OTI1IiwxNCwi''@;'; put 'put ''XHU3OTM1Iiw0LCJcdTc5M2RcdTc5M2ZcdTc5NDJcdTc5NDNcdTc5NDRcdTc5NDVcdTc5NDdcdTc5NGEiLDgsIlx1Nzk1NFx1Nzk1NVx1Nzk1OFx1Nzk1OVx1Nzk2MVx1Nzk2MyJdLFsiYjU4MCIsIlx1Nzk2NFx1Nzk2Nlx1Nzk2OVx1Nzk2YVx1Nzk2Ylx1Nzk2Y1x1Nzk2ZVx1Nzk3MCIsNiwi''@;'; put 'put ''XHU3OTc5XHU3OTdiIiw0LCJcdTc5ODJcdTc5ODNcdTc5ODZcdTc5ODdcdTc5ODhcdTc5ODlcdTc5OGJcdTc5OGNcdTc5OGRcdTc5OGVcdTc5OTBcdTc5OTFcdTc5OTJcdTYwMjBcdTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZcdTY1ZTZcdTZjMmVcdTRmNDZcdTYw''@;'; put 'put ''ZWVcdTZkZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFcdTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJcdTVjOWJcdTc5NzdcdTViZmNcdTUyMzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2ODRcdThlNmNcdTcwNmZcdTc2N2Jc''@;'; put 'put ''dTdiNDlcdTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZlZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVhZTFcdTYyYjVcdTVlOTVcdTU3MzBcdTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBcdTYzODJcdTZlYzdcdTc4OThcdTcw''@;'; put 'put ''YjlcdTUxNzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1MzhcdTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNcdTk2ZDVcdTUxY2JcdTUyMDFcdTYzODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3NzZcdThmZWRcdThjMGRcdTUzZTAi''@;'; put 'put ''XSxbImI2NDAiLCJcdTc5OTMiLDYsIlx1Nzk5YiIsMTEsIlx1NzlhOCIsMTAsIlx1NzliNCIsNCwiXHU3OWJjXHU3OWJmXHU3OWMyXHU3OWM0XHU3OWM1XHU3OWM3XHU3OWM4XHU3OWNhXHU3OWNjXHU3OWNlXHU3OWNmXHU3OWQwXHU3OWQzXHU3OWQ0XHU3OWQ2XHU3OWQ3XHU3OWQ5Iiw1LCJc''@;'; put 'put ''dTc5ZTBcdTc5ZTFcdTc5ZTJcdTc5ZTVcdTc5ZThcdTc5ZWEiXSxbImI2ODAiLCJcdTc5ZWNcdTc5ZWVcdTc5ZjEiLDYsIlx1NzlmOVx1NzlmYVx1NzlmY1x1NzlmZVx1NzlmZlx1N2EwMVx1N2EwNFx1N2EwNVx1N2EwN1x1N2EwOFx1N2EwOVx1N2EwYVx1N2EwY1x1N2EwZiIsNCwiXHU3YTE1''@;'; put 'put ''XHU3YTE2XHU3YTE4XHU3YTE5XHU3YTFiXHU3YTFjXHU0ZTAxXHU3NmVmXHU1M2VlXHU5NDg5XHU5ODc2XHU5ZjBlXHU5NTJkXHU1YjlhXHU4YmEyXHU0ZTIyXHU0ZTFjXHU1MWFjXHU4NDYzXHU2MWMyXHU1MmE4XHU2ODBiXHU0Zjk3XHU2MDZiXHU1MWJiXHU2ZDFlXHU1MTVjXHU2Mjk2XHU2''@;'; put 'put ''NTk3XHU5NjYxXHU4YzQ2XHU5MDE3XHU3NWQ4XHU5MGZkXHU3NzYzXHU2YmQyXHU3MjhhXHU3MmVjXHU4YmZiXHU1ODM1XHU3Nzc5XHU4ZDRjXHU2NzVjXHU5NTQwXHU4MDlhXHU1ZWE2XHU2ZTIxXHU1OTkyXHU3YWVmXHU3N2VkXHU5NTNiXHU2YmI1XHU2NWFkXHU3ZjBlXHU1ODA2XHU1MTUx''@;'; put 'put ''XHU5NjFmXHU1YmY5XHU1OGE5XHU1NDI4XHU4ZTcyXHU2NTY2XHU5ODdmXHU1NmU0XHU5NDlkXHU3NmZlXHU5MDQxXHU2Mzg3XHU1NGM2XHU1OTFhXHU1OTNhXHU1NzliXHU4ZWIyXHU2NzM1XHU4ZGZhXHU4MjM1XHU1MjQxXHU2MGYwXHU1ODE1XHU4NmZlXHU1Y2U4XHU5ZTQ1XHU0ZmM0XHU5''@;'; put 'put ''ODlkXHU4YmI5XHU1YTI1XHU2MDc2XHU1Mzg0XHU2MjdjXHU5MDRmXHU5MTAyXHU5OTdmXHU2MDY5XHU4MDBjXHU1MTNmXHU4MDMzXHU1YzE0XHU5OTc1XHU2ZDMxXHU0ZThjIl0sWyJiNzQwIiwiXHU3YTFkXHU3YTFmXHU3YTIxXHU3YTIyXHU3YTI0IiwxNCwiXHU3YTM0XHU3YTM1XHU3YTM2''@;'; put 'put ''XHU3YTM4XHU3YTNhXHU3YTNlXHU3YTQwIiw1LCJcdTdhNDciLDksIlx1N2E1MiIsNCwiXHU3YTU4IiwxNl0sWyJiNzgwIiwiXHU3YTY5Iiw2LCJcdTdhNzFcdTdhNzJcdTdhNzNcdTdhNzVcdTdhN2JcdTdhN2NcdTdhN2RcdTdhN2VcdTdhODJcdTdhODVcdTdhODdcdTdhODlcdTdhOGFcdTdh''@;'; put 'put ''OGJcdTdhOGNcdTdhOGVcdTdhOGZcdTdhOTBcdTdhOTNcdTdhOTRcdTdhOTlcdTdhOWFcdTdhOWJcdTdhOWVcdTdhYTFcdTdhYTJcdThkMzBcdTUzZDFcdTdmNWFcdTdiNGZcdTRmMTBcdTRlNGZcdTk2MDBcdTZjZDVcdTczZDBcdTg1ZTlcdTVlMDZcdTc1NmFcdTdmZmJcdTZhMGFcdTc3ZmVc''@;'; put 'put ''dTk0OTJcdTdlNDFcdTUxZTFcdTcwZTZcdTUzY2RcdThmZDRcdTgzMDNcdThkMjlcdTcyYWZcdTk5NmRcdTZjZGJcdTU3NGFcdTgyYjNcdTY1YjlcdTgwYWFcdTYyM2ZcdTk2MzJcdTU5YThcdTRlZmZcdThiYmZcdTdlYmFcdTY1M2VcdTgzZjJcdTk3NWVcdTU1NjFcdTk4ZGVcdTgwYTVcdTUz''@;'; put 'put ''MmFcdThiZmRcdTU0MjBcdTgwYmFcdTVlOWZcdTZjYjhcdThkMzlcdTgyYWNcdTkxNWFcdTU0MjlcdTZjMWJcdTUyMDZcdTdlYjdcdTU3NWZcdTcxMWFcdTZjN2VcdTdjODlcdTU5NGJcdTRlZmRcdTVmZmZcdTYxMjRcdTdjYWFcdTRlMzBcdTVjMDFcdTY3YWJcdTg3MDJcdTVjZjBcdTk1MGJc''@;'; put 'put ''dTk4Y2VcdTc1YWZcdTcwZmRcdTkwMjJcdTUxYWZcdTdmMWRcdThiYmRcdTU5NDlcdTUxZTRcdTRmNWJcdTU0MjZcdTU5MmJcdTY1NzdcdTgwYTRcdTViNzVcdTYyNzZcdTYyYzJcdThmOTBcdTVlNDVcdTZjMWZcdTdiMjZcdTRmMGZcdTRmZDhcdTY3MGQiXSxbImI4NDAiLCJcdTdhYTNcdTdh''@;'; put 'put ''YTRcdTdhYTdcdTdhYTlcdTdhYWFcdTdhYWJcdTdhYWUiLDQsIlx1N2FiNCIsMTAsIlx1N2FjMCIsMTAsIlx1N2FjYyIsOSwiXHU3YWQ3XHU3YWQ4XHU3YWRhXHU3YWRiXHU3YWRjXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU0XHU3YWU3Iiw1LCJcdTdhZWVcdTdhZjBcdTdhZjFcdTdhZjJcdTdh''@;'; put 'put ''ZjMiXSxbImI4ODAiLCJcdTdhZjQiLDQsIlx1N2FmYlx1N2FmY1x1N2FmZVx1N2IwMFx1N2IwMVx1N2IwMlx1N2IwNVx1N2IwN1x1N2IwOVx1N2IwY1x1N2IwZFx1N2IwZVx1N2IxMFx1N2IxMlx1N2IxM1x1N2IxNlx1N2IxN1x1N2IxOFx1N2IxYVx1N2IxY1x1N2IxZFx1N2IxZlx1N2IyMVx1''@;'; put 'put ''N2IyMlx1N2IyM1x1N2IyN1x1N2IyOVx1N2IyZFx1NmQ2ZVx1NmRhYVx1Nzk4Zlx1ODhiMVx1NWYxN1x1NzUyYlx1NjI5YVx1OGY4NVx1NGZlZlx1OTFkY1x1NjVhN1x1ODEyZlx1ODE1MVx1NWU5Y1x1ODE1MFx1OGQ3NFx1NTI2Zlx1ODk4Nlx1OGQ0Ylx1NTkwZFx1NTA4NVx1NGVkOFx1OTYx''@;'; put 'put ''Y1x1NzIzNlx1ODE3OVx1OGQxZlx1NWJjY1x1OGJhM1x1OTY0NFx1NTk4N1x1N2YxYVx1NTQ5MFx1NTY3Nlx1NTYwZVx1OGJlNVx1NjUzOVx1Njk4Mlx1OTQ5OVx1NzZkNlx1NmU4OVx1NWU3Mlx1NzUxOFx1Njc0Nlx1NjdkMVx1N2FmZlx1ODA5ZFx1OGQ3Nlx1NjExZlx1NzljNlx1NjU2Mlx1''@;'; put 'put ''OGQ2M1x1NTE4OFx1NTIxYVx1OTRhMlx1N2YzOFx1ODA5Ylx1N2ViMlx1NWM5N1x1NmUyZlx1Njc2MFx1N2JkOVx1NzY4Ylx1OWFkOFx1ODE4Zlx1N2Y5NFx1N2NkNVx1NjQxZVx1OTU1MFx1N2EzZlx1NTQ0YVx1NTRlNVx1NmI0Y1x1NjQwMVx1NjIwOFx1OWUzZFx1ODBmM1x1NzU5OVx1NTI3''@;'; put 'put ''Mlx1OTc2OVx1ODQ1Ylx1NjgzY1x1ODZlNFx1OTYwMVx1OTY5NFx1OTRlY1x1NGUyYVx1NTQwNFx1N2VkOVx1NjgzOVx1OGRkZlx1ODAxNVx1NjZmNFx1NWU5YVx1N2ZiOSJdLFsiYjk0MCIsIlx1N2IyZlx1N2IzMFx1N2IzMlx1N2IzNFx1N2IzNVx1N2IzNlx1N2IzN1x1N2IzOVx1N2IzYlx1''@;'; put 'put ''N2IzZFx1N2IzZiIsNSwiXHU3YjQ2XHU3YjQ4XHU3YjRhXHU3YjRkXHU3YjRlXHU3YjUzXHU3YjU1XHU3YjU3XHU3YjU5XHU3YjVjXHU3YjVlXHU3YjVmXHU3YjYxXHU3YjYzIiwxMCwiXHU3YjZmXHU3YjcwXHU3YjczXHU3Yjc0XHU3Yjc2XHU3Yjc4XHU3YjdhXHU3YjdjXHU3YjdkXHU3Yjdm''@;'; put 'put ''XHU3YjgxXHU3YjgyXHU3YjgzXHU3Yjg0XHU3Yjg2Iiw2LCJcdTdiOGVcdTdiOGYiXSxbImI5ODAiLCJcdTdiOTFcdTdiOTJcdTdiOTNcdTdiOTZcdTdiOThcdTdiOTlcdTdiOWFcdTdiOWJcdTdiOWVcdTdiOWZcdTdiYTBcdTdiYTNcdTdiYTRcdTdiYTVcdTdiYWVcdTdiYWZcdTdiYjBcdTdi''@;'; put 'put ''YjJcdTdiYjNcdTdiYjVcdTdiYjZcdTdiYjdcdTdiYjkiLDcsIlx1N2JjMlx1N2JjM1x1N2JjNFx1NTdjMlx1ODAzZlx1Njg5N1x1NWRlNVx1NjUzYlx1NTI5Zlx1NjA2ZFx1OWY5YVx1NGY5Ylx1OGVhY1x1NTE2Y1x1NWJhYlx1NWYxM1x1NWRlOVx1NmM1ZVx1NjJmMVx1OGQyMVx1NTE3MVx1''@;'; put 'put ''OTRhOVx1NTJmZVx1NmM5Zlx1ODJkZlx1NzJkN1x1NTdhMlx1Njc4NFx1OGQyZFx1NTkxZlx1OGY5Y1x1ODNjN1x1NTQ5NVx1N2I4ZFx1NGYzMFx1NmNiZFx1NWI2NFx1NTlkMVx1OWYxM1x1NTNlNFx1ODZjYVx1OWFhOFx1OGMzN1x1ODBhMVx1NjU0NVx1OTg3ZVx1NTZmYVx1OTZjN1x1NTIy''@;'; put 'put ''ZVx1NzRkY1x1NTI1MFx1NWJlMVx1NjMwMlx1ODkwMlx1NGU1Nlx1NjJkMFx1NjAyYVx1NjhmYVx1NTE3M1x1NWI5OFx1NTFhMFx1ODljMlx1N2JhMVx1OTk4Nlx1N2Y1MFx1NjBlZlx1NzA0Y1x1OGQyZlx1NTE0OVx1NWU3Zlx1OTAxYlx1NzQ3MFx1ODljNFx1NTcyZFx1Nzg0NVx1NWY1Mlx1''@;'; put 'put ''OWY5Zlx1OTVmYVx1OGY2OFx1OWIzY1x1OGJlMVx1NzY3OFx1Njg0Mlx1NjdkY1x1OGRlYVx1OGQzNVx1NTIzZFx1OGY4YVx1NmVkYVx1NjhjZFx1OTUwNVx1OTBlZFx1NTZmZFx1Njc5Y1x1ODhmOVx1OGZjN1x1NTRjOCJdLFsiYmE0MCIsIlx1N2JjNVx1N2JjOFx1N2JjOVx1N2JjYVx1N2Jj''@;'; put 'put ''Ylx1N2JjZFx1N2JjZVx1N2JjZlx1N2JkMFx1N2JkMlx1N2JkNCIsNCwiXHU3YmRiXHU3YmRjXHU3YmRlXHU3YmRmXHU3YmUwXHU3YmUyXHU3YmUzXHU3YmU0XHU3YmU3XHU3YmU4XHU3YmU5XHU3YmViXHU3YmVjXHU3YmVkXHU3YmVmXHU3YmYwXHU3YmYyIiw0LCJcdTdiZjhcdTdiZjlcdTdi''@;'; put 'put ''ZmFcdTdiZmJcdTdiZmRcdTdiZmYiLDcsIlx1N2MwOFx1N2MwOVx1N2MwYVx1N2MwZFx1N2MwZVx1N2MxMCIsNSwiXHU3YzE3XHU3YzE4XHU3YzE5Il0sWyJiYTgwIiwiXHU3YzFhIiw0LCJcdTdjMjAiLDUsIlx1N2MyOFx1N2MyOVx1N2MyYiIsMTIsIlx1N2MzOSIsNSwiXHU3YzQyXHU5YWI4''@;'; put 'put ''XHU1YjY5XHU2ZDc3XHU2YzI2XHU0ZWE1XHU1YmIzXHU5YTg3XHU5MTYzXHU2MWE4XHU5MGFmXHU5N2U5XHU1NDJiXHU2ZGI1XHU1YmQyXHU1MWZkXHU1NThhXHU3ZjU1XHU3ZmYwXHU2NGJjXHU2MzRkXHU2NWYxXHU2MWJlXHU2MDhkXHU3MTBhXHU2YzU3XHU2YzQ5XHU1OTJmXHU2NzZkXHU4''@;'; put 'put ''MjJhXHU1OGQ1XHU1NjhlXHU4YzZhXHU2YmViXHU5MGRkXHU1OTdkXHU4MDE3XHU1M2Y3XHU2ZDY5XHU1NDc1XHU1NTlkXHU4Mzc3XHU4M2NmXHU2ODM4XHU3OWJlXHU1NDhjXHU0ZjU1XHU1NDA4XHU3NmQyXHU4Yzg5XHU5NjAyXHU2Y2IzXHU2ZGI4XHU4ZDZiXHU4OTEwXHU5ZTY0XHU4ZDNh''@;'; put 'put ''XHU1NjNmXHU5ZWQxXHU3NWQ1XHU1Zjg4XHU3MmUwXHU2MDY4XHU1NGZjXHU0ZWE4XHU2YTJhXHU4ODYxXHU2MDUyXHU4ZjcwXHU1NGM0XHU3MGQ4XHU4Njc5XHU5ZTNmXHU2ZDJhXHU1YjhmXHU1ZjE4XHU3ZWEyXHU1NTg5XHU0ZmFmXHU3MzM0XHU1NDNjXHU1MzlhXHU1MDE5XHU1NDBlXHU1''@;'; put 'put ''NDdjXHU0ZTRlXHU1ZmZkXHU3NDVhXHU1OGY2XHU4NDZiXHU4MGUxXHU4Nzc0XHU3MmQwXHU3Y2NhXHU2ZTU2Il0sWyJiYjQwIiwiXHU3YzQzIiw5LCJcdTdjNGUiLDM2LCJcdTdjNzUiLDUsIlx1N2M3ZSIsOV0sWyJiYjgwIiwiXHU3Yzg4XHU3YzhhIiw2LCJcdTdjOTNcdTdjOTRcdTdjOTZc''@;'; put 'put ''dTdjOTlcdTdjOWFcdTdjOWJcdTdjYTBcdTdjYTFcdTdjYTNcdTdjYTZcdTdjYTdcdTdjYThcdTdjYTlcdTdjYWJcdTdjYWNcdTdjYWRcdTdjYWZcdTdjYjBcdTdjYjQiLDQsIlx1N2NiYVx1N2NiYlx1NWYyN1x1ODY0ZVx1NTUyY1x1NjJhNFx1NGU5Mlx1NmNhYVx1NjIzN1x1ODJiMVx1NTRk''@;'; put 'put ''N1x1NTM0ZVx1NzMzZVx1NmVkMVx1NzUzYlx1NTIxMlx1NTMxNlx1OGJkZFx1NjlkMFx1NWY4YVx1NjAwMFx1NmRlZVx1NTc0Zlx1NmIyMlx1NzNhZlx1Njg1M1x1OGZkOFx1N2YxM1x1NjM2Mlx1NjBhM1x1NTUyNFx1NzVlYVx1OGM2Mlx1NzExNVx1NmRhM1x1NWJhNlx1NWU3Ylx1ODM1Mlx1''@;'; put 'put ''NjE0Y1x1OWVjNFx1NzhmYVx1ODc1N1x1N2MyN1x1NzY4N1x1NTFmMFx1NjBmNlx1NzE0Y1x1NjY0M1x1NWU0Y1x1NjA0ZFx1OGMwZVx1NzA3MFx1NjMyNVx1OGY4OVx1NWZiZFx1NjA2Mlx1ODZkNFx1NTZkZVx1NmJjMVx1NjA5NFx1NjE2N1x1NTM0OVx1NjBlMFx1NjY2Nlx1OGQzZlx1Nzlm''@;'; put 'put ''ZFx1NGYxYVx1NzBlOVx1NmM0N1x1OGJiM1x1OGJmMlx1N2VkOFx1ODM2NFx1NjYwZlx1NWE1YVx1OWI0Mlx1NmQ1MVx1NmRmN1x1OGM0MVx1NmQzYlx1NGYxOVx1NzA2Ylx1ODNiN1x1NjIxNlx1NjBkMVx1OTcwZFx1OGQyN1x1Nzk3OFx1NTFmYlx1NTczZVx1NTdmYVx1NjczYVx1NzU3OFx1''@;'; put 'put ''N2EzZFx1NzllZlx1N2I5NSJdLFsiYmM0MCIsIlx1N2NiZlx1N2NjMFx1N2NjMlx1N2NjM1x1N2NjNFx1N2NjNlx1N2NjOVx1N2NjYlx1N2NjZSIsNiwiXHU3Y2Q4XHU3Y2RhXHU3Y2RiXHU3Y2RkXHU3Y2RlXHU3Y2UxIiw2LCJcdTdjZTkiLDUsIlx1N2NmMCIsNywiXHU3Y2Y5XHU3Y2ZhXHU3''@;'; put 'put ''Y2ZjIiwxMywiXHU3ZDBiIiw1XSxbImJjODAiLCJcdTdkMTEiLDE0LCJcdTdkMjFcdTdkMjNcdTdkMjRcdTdkMjVcdTdkMjZcdTdkMjhcdTdkMjlcdTdkMmFcdTdkMmNcdTdkMmRcdTdkMmVcdTdkMzAiLDYsIlx1ODA4Y1x1OTk2NVx1OGZmOVx1NmZjMFx1OGJhNVx1OWUyMVx1NTllY1x1N2Vl''@;'; put 'put ''OVx1N2YwOVx1NTQwOVx1Njc4MVx1NjhkOFx1OGY5MVx1N2M0ZFx1OTZjNlx1NTNjYVx1NjAyNVx1NzViZVx1NmM3Mlx1NTM3M1x1NWFjOVx1N2VhN1x1NjMyNFx1NTFlMFx1ODEwYVx1NWRmMVx1ODRkZlx1NjI4MFx1NTE4MFx1NWI2M1x1NGYwZVx1Nzk2ZFx1NTI0Mlx1NjBiOFx1NmQ0ZVx1''@;'; put 'put ''NWJjNFx1NWJjMlx1OGJhMVx1OGJiMFx1NjVlMlx1NWZjY1x1OTY0NVx1NTk5M1x1N2VlN1x1N2VhYVx1NTYwOVx1NjdiN1x1NTkzOVx1NGY3M1x1NWJiNlx1NTJhMFx1ODM1YVx1OTg4YVx1OGQzZVx1NzUzMlx1OTRiZVx1NTA0N1x1N2EzY1x1NGVmN1x1NjdiNlx1OWE3ZVx1NWFjMVx1NmI3''@;'; put 'put ''Y1x1NzZkMVx1NTc1YVx1NWMxNlx1N2IzYVx1OTVmNFx1NzE0ZVx1NTE3Y1x1ODBhOVx1ODI3MFx1NTk3OFx1N2YwNFx1ODMyN1x1NjhjMFx1NjdlY1x1NzhiMVx1Nzg3N1x1NjJlM1x1NjM2MVx1N2I4MFx1NGZlZFx1NTI2YVx1NTFjZlx1ODM1MFx1NjlkYlx1OTI3NFx1OGRmNVx1OGQzMVx1''@;'; put 'put ''ODljMVx1OTUyZVx1N2JhZFx1NGVmNiJdLFsiYmQ0MCIsIlx1N2QzNyIsNTQsIlx1N2Q2ZiIsN10sWyJiZDgwIiwiXHU3ZDc4IiwzMiwiXHU1MDY1XHU4MjMwXHU1MjUxXHU5OTZmXHU2ZTEwXHU2ZTg1XHU2ZGE3XHU1ZWZhXHU1MGY1XHU1OWRjXHU1YzA2XHU2ZDQ2XHU2YzVmXHU3NTg2XHU4''@;'; put 'put ''NDhiXHU2ODY4XHU1OTU2XHU4YmIyXHU1MzIwXHU5MTcxXHU5NjRkXHU4NTQ5XHU2OTEyXHU3OTAxXHU3MTI2XHU4MGY2XHU0ZWE0XHU5MGNhXHU2ZDQ3XHU5YTg0XHU1YTA3XHU1NmJjXHU2NDA1XHU5NGYwXHU3N2ViXHU0ZmE1XHU4MTFhXHU3MmUxXHU4OWQyXHU5OTdhXHU3ZjM0XHU3ZWRl''@;'; put 'put ''XHU1MjdmXHU2NTU5XHU5MTc1XHU4ZjdmXHU4ZjgzXHU1M2ViXHU3YTk2XHU2M2VkXHU2M2E1XHU3Njg2XHU3OWY4XHU4ODU3XHU5NjM2XHU2MjJhXHU1MmFiXHU4MjgyXHU2ODU0XHU2NzcwXHU2Mzc3XHU3NzZiXHU3YWVkXHU2ZDAxXHU3ZWQzXHU4OWUzXHU1OWQwXHU2MjEyXHU4NWM5XHU4''@;'; put 'put ''MmE1XHU3NTRjXHU1MDFmXHU0ZWNiXHU3NWE1XHU4YmViXHU1YzRhXHU1ZGZlXHU3YjRiXHU2NWE0XHU5MWQxXHU0ZWNhXHU2ZDI1XHU4OTVmXHU3ZDI3XHU5NTI2XHU0ZWM1XHU4YzI4XHU4ZmRiXHU5NzczXHU2NjRiXHU3OTgxXHU4ZmQxXHU3MGVjXHU2ZDc4Il0sWyJiZTQwIiwiXHU3ZDk5''@;'; put 'put ''IiwxMiwiXHU3ZGE3Iiw2LCJcdTdkYWYiLDQyXSxbImJlODAiLCJcdTdkZGEiLDMyLCJcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdjYmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZcdTk4ODhcdTk3NTlcdTU4ODNc''@;'; put 'put ''dTY1NmNcdTk1NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdhZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZcdTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJcdTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0OGVcdTVjMzFcdTc1OWFcdTk3''@;'; put 'put ''YTBcdTYyZDhcdTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2FcdTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYzNmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdcdTYzNTBcdTllNDNcdTVhMWZc''@;'; put 'put ''dTUwMjZcdTc3MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYyODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRcdTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJcdTVjZmIiXSxbImJmNDAiLCJcdTdkZmIiLDYyXSxbImJmODAiLCJcdTdlM2FcdTdlM2Mi''@;'; put 'put ''LDQsIlx1N2U0MiIsNCwiXHU3ZTQ4IiwyMSwiXHU0ZmNhXHU3YWUzXHU2ZDVhXHU5MGUxXHU5YThmXHU1NTgwXHU1NDk2XHU1MzYxXHU1NGFmXHU1ZjAwXHU2M2U5XHU2OTc3XHU1MWVmXHU2MTY4XHU1MjBhXHU1ODJhXHU1MmQ4XHU1NzRlXHU3ODBkXHU3NzBiXHU1ZWI3XHU2MTc3XHU3Y2Uw''@;'; put 'put ''XHU2MjViXHU2Mjk3XHU0ZWEyXHU3MDk1XHU4MDAzXHU2MmY3XHU3MGU0XHU5NzYwXHU1Nzc3XHU4MmRiXHU2N2VmXHU2OGY1XHU3OGQ1XHU5ODk3XHU3OWQxXHU1OGYzXHU1NGIzXHU1M2VmXHU2ZTM0XHU1MTRiXHU1MjNiXHU1YmEyXHU4YmZlXHU4MGFmXHU1NTQzXHU1N2E2XHU2MDczXHU1''@;'; put 'put ''NzUxXHU1NDJkXHU3YTdhXHU2MDUwXHU1YjU0XHU2M2E3XHU2MmEwXHU1M2UzXHU2MjYzXHU1YmM3XHU2N2FmXHU1NGVkXHU3YTlmXHU4MmU2XHU5MTc3XHU1ZTkzXHU4OGU0XHU1OTM4XHU1N2FlXHU2MzBlXHU4ZGU4XHU4MGVmXHU1NzU3XHU3Yjc3XHU0ZmE5XHU1ZmViXHU1YmJkXHU2YjNl''@;'; put 'put ''XHU1MzIxXHU3YjUwXHU3MmMyXHU2ODQ2XHU3N2ZmXHU3NzM2XHU2NWY3XHU1MWI1XHU0ZThmXHU3NmQ0XHU1Y2JmXHU3YWE1XHU4NDc1XHU1OTRlXHU5YjQxXHU1MDgwIl0sWyJjMDQwIiwiXHU3ZTVlIiwzNSwiXHU3ZTgzIiwyMywiXHU3ZTljXHU3ZTlkXHU3ZTllIl0sWyJjMDgwIiwiXHU3''@;'; put 'put ''ZWFlXHU3ZWI0XHU3ZWJiXHU3ZWJjXHU3ZWQ2XHU3ZWU0XHU3ZWVjXHU3ZWY5XHU3ZjBhXHU3ZjEwXHU3ZjFlXHU3ZjM3XHU3ZjM5XHU3ZjNiIiw2LCJcdTdmNDNcdTdmNDYiLDksIlx1N2Y1Mlx1N2Y1M1x1OTk4OFx1NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1''@;'; put 'put ''NjI2OVx1NWVkM1x1OTYxNFx1NTc4M1x1NjJjOVx1NTU4N1x1ODcyMVx1ODE0YVx1OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJlNlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVl''@;'; put 'put ''NVx1NzQwNVx1Njk5NFx1NzJmY1x1NWVjYVx1OTBjZVx1NjcxN1x1NmQ2YVx1NjM1ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1''@;'; put 'put ''N2M3Ylx1NmNlYVx1NjhmMVx1Njk1ZVx1NTFiN1x1NTM5OFx1NjhhOFx1NzI4MVx1OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNhNFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQwZlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIy''@;'; put 'put ''OVx1NTA4OFx1NGY4Ylx1NGZkMCJdLFsiYzE0MCIsIlx1N2Y1Nlx1N2Y1OVx1N2Y1Ylx1N2Y1Y1x1N2Y1ZFx1N2Y1ZVx1N2Y2MFx1N2Y2MyIsNCwiXHU3ZjZiXHU3ZjZjXHU3ZjZkXHU3ZjZmXHU3ZjcwXHU3ZjczXHU3Zjc1XHU3Zjc2XHU3Zjc3XHU3Zjc4XHU3ZjdhXHU3ZjdiXHU3ZjdjXHU3''@;'; put 'put ''ZjdkXHU3ZjdmXHU3ZjgwXHU3ZjgyIiw3LCJcdTdmOGJcdTdmOGRcdTdmOGYiLDQsIlx1N2Y5NSIsNCwiXHU3ZjliXHU3ZjljXHU3ZmEwXHU3ZmEyXHU3ZmEzXHU3ZmE1XHU3ZmE2XHU3ZmE4Iiw2LCJcdTdmYjEiXSxbImMxODAiLCJcdTdmYjMiLDQsIlx1N2ZiYVx1N2ZiYlx1N2ZiZVx1N2Zj''@;'; put 'put ''MFx1N2ZjMlx1N2ZjM1x1N2ZjNFx1N2ZjNlx1N2ZjN1x1N2ZjOFx1N2ZjOVx1N2ZjYlx1N2ZjZFx1N2ZjZiIsNCwiXHU3ZmQ2XHU3ZmQ3XHU3ZmQ5Iiw1LCJcdTdmZTJcdTdmZTNcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgwNTRcdTgz''@;'; put 'put ''YjJcdThmZGVcdTk1NzBcdTVlYzlcdTYwMWNcdTZkOWZcdTVlMThcdTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdjYjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2VcdTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFcdTc1OTdc''@;'; put 'put ''dTcxY2VcdTViZTVcdThmYmRcdTZmNjZcdTRlODZcdTY0ODJcdTk1NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdcdTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZkY2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTczYjJcdTgz''@;'; put 'put ''ZjFcdTk2ZjZcdTlmODRcdTk0YzNcdTRmMzZcdTdmOWFcdTUxY2NcdTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFcdTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlcdTdiM2Nc''@;'; put 'put ''dTdhYmYiXSxbImMyNDAiLCJcdTdmZTRcdTdmZTdcdTdmZThcdTdmZWFcdTdmZWJcdTdmZWNcdTdmZWRcdTdmZWZcdTdmZjJcdTdmZjQiLDYsIlx1N2ZmZFx1N2ZmZVx1N2ZmZlx1ODAwMlx1ODAwN1x1ODAwOFx1ODAwOVx1ODAwYVx1ODAwZVx1ODAwZlx1ODAxMVx1ODAxM1x1ODAxYVx1ODAx''@;'; put 'put ''Ylx1ODAxZFx1ODAxZVx1ODAxZlx1ODAyMVx1ODAyM1x1ODAyNFx1ODAyYiIsNSwiXHU4MDMyXHU4MDM0XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQxXHU4MDQ0XHU4MDQ1XHU4MDQ3XHU4MDQ4XHU4MDQ5XHU4MDRlXHU4MDRmXHU4MDUwXHU4MDUxXHU4MDUzXHU4MDU1XHU4''@;'; put 'put ''MDU2XHU4MDU3Il0sWyJjMjgwIiwiXHU4MDU5XHU4MDViIiwxMywiXHU4MDZiIiw1LCJcdTgwNzIiLDExLCJcdTk2ODZcdTU3ODRcdTYyZTJcdTk2NDdcdTY5N2NcdTVhMDRcdTY0MDJcdTdiZDNcdTZmMGZcdTk2NGJcdTgyYTZcdTUzNjJcdTk4ODVcdTVlOTBcdTcwODlcdTYzYjNcdTUzNjRc''@;'; put 'put ''dTg2NGZcdTljODFcdTllOTNcdTc4OGNcdTk3MzJcdThkZWZcdThkNDJcdTllN2ZcdTZmNWVcdTc5ODRcdTVmNTVcdTk2NDZcdTYyMmVcdTlhNzRcdTU0MTVcdTk0ZGRcdTRmYTNcdTY1YzVcdTVjNjVcdTVjNjFcdTdmMTVcdTg2NTFcdTZjMmZcdTVmOGJcdTczODdcdTZlZTRcdTdlZmZcdTVj''@;'; put 'put ''ZTZcdTYzMWJcdTViNmFcdTZlZTZcdTUzNzVcdTRlNzFcdTYzYTBcdTc1NjVcdTYyYTFcdThmNmVcdTRmMjZcdTRlZDFcdTZjYTZcdTdlYjZcdThiYmFcdTg0MWRcdTg3YmFcdTdmNTdcdTkwM2JcdTk1MjNcdTdiYTlcdTlhYTFcdTg4ZjhcdTg0M2RcdTZkMWJcdTlhODZcdTdlZGNcdTU5ODhc''@;'; put 'put ''dTllYmJcdTczOWJcdTc4MDFcdTg2ODJcdTlhNmNcdTlhODJcdTU2MWJcdTU0MTdcdTU3Y2JcdTRlNzBcdTllYTZcdTUzNTZcdThmYzhcdTgxMDlcdTc3OTJcdTk5OTJcdTg2ZWVcdTZlZTFcdTg1MTNcdTY2ZmNcdTYxNjJcdTZmMmIiXSxbImMzNDAiLCJcdTgwN2VcdTgwODFcdTgwODJcdTgw''@;'; put 'put ''ODVcdTgwODhcdTgwOGFcdTgwOGQiLDUsIlx1ODA5NFx1ODA5NVx1ODA5N1x1ODA5OVx1ODA5ZVx1ODBhM1x1ODBhNlx1ODBhN1x1ODBhOFx1ODBhY1x1ODBiMFx1ODBiM1x1ODBiNVx1ODBiNlx1ODBiOFx1ODBiOVx1ODBiYlx1ODBjNVx1ODBjNyIsNCwiXHU4MGNmIiw2LCJcdTgwZDhcdTgw''@;'; put 'put ''ZGZcdTgwZTBcdTgwZTJcdTgwZTNcdTgwZTZcdTgwZWVcdTgwZjVcdTgwZjdcdTgwZjlcdTgwZmJcdTgwZmVcdTgwZmZcdTgxMDBcdTgxMDFcdTgxMDNcdTgxMDRcdTgxMDVcdTgxMDdcdTgxMDhcdTgxMGIiXSxbImMzODAiLCJcdTgxMGNcdTgxMTVcdTgxMTdcdTgxMTlcdTgxMWJcdTgxMWNc''@;'; put 'put ''dTgxMWRcdTgxMWYiLDEyLCJcdTgxMmRcdTgxMmVcdTgxMzBcdTgxMzNcdTgxMzRcdTgxMzVcdTgxMzdcdTgxMzkiLDQsIlx1ODEzZlx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1NWZkOVx1ODNiZFx1NzMyYlx1ODMwNVx1OTUxYVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMw''@;'; put 'put ''Mlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQzOFx1NGU0OFx1NzNhYlx1Njc5YVx1Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYyN1x1NWJkMFx1NTliOVx1NWE5YVx1OTVlOFx1OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1''@;'; put 'put ''NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1NWI1Zlx1NzcyZlx1OTE5YVx1OTc2MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1NWU0Mlx1NjhjOVx1NzcyMFx1N2VmNVx1NTE5NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2''@;'; put 'put ''Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVkMFx1NzlkMlx1NmUzYVx1NWU5OVx1NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5Zlx1OWUyM1x1OTRlZFx1NTQwZFx1NTQ3ZFx1OGMyY1x1NjQ3OCJdLFsiYzQ0MCIsIlx1ODE0MCIs''@;'; put 'put ''NSwiXHU4MTQ3XHU4MTQ5XHU4MTRkXHU4MTRlXHU4MTRmXHU4MTUyXHU4MTU2XHU4MTU3XHU4MTU4XHU4MTViIiw0LCJcdTgxNjFcdTgxNjJcdTgxNjNcdTgxNjRcdTgxNjZcdTgxNjhcdTgxNmFcdTgxNmJcdTgxNmNcdTgxNmZcdTgxNzJcdTgxNzNcdTgxNzVcdTgxNzZcdTgxNzdcdTgxNzhc''@;'; put 'put ''dTgxODFcdTgxODMiLDQsIlx1ODE4OVx1ODE4Ylx1ODE4Y1x1ODE4ZFx1ODE4ZVx1ODE5MFx1ODE5MiIsNSwiXHU4MTk5XHU4MTlhXHU4MTllIiw0LCJcdTgxYTRcdTgxYTUiXSxbImM0ODAiLCJcdTgxYTdcdTgxYTlcdTgxYWIiLDcsIlx1ODFiNCIsNSwiXHU4MWJjXHU4MWJkXHU4MWJlXHU4''@;'; put 'put ''MWJmXHU4MWM0XHU4MWM1XHU4MWM3XHU4MWM4XHU4MWM5XHU4MWNiXHU4MWNkIiw2LCJcdTY0NzlcdTg2MTFcdTZhMjFcdTgxOWNcdTc4ZThcdTY0NjlcdTliNTRcdTYyYjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBc''@;'; put 'put ''dTYyYzdcdTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2YWVcdTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2ZWVcdTc3NjZcdTcyNjdcdTdhNDZcdTYyZmZcdTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUz''@;'; put 'put ''NTdcdTc1MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2NcdTk1ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVcdTVhZTlcdTgwZmRcdTU5YWVcdTk3MTNcdTUwMmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRc''@;'; put 'put ''dTc4YmVcdTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTllMWZcdTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1NmVcdTk1NGFcdTk1NGRcdTZkODVcdTYwYThcdTY3ZTBcdTcyZGVcdTUxZGRcdTViODEiXSxbImM1NDAiLCJcdTgxZDQiLDE0LCJcdTgxZTRcdTgxZTVcdTgxZTZcdTgx''@;'; put 'put ''ZThcdTgxZTlcdTgxZWJcdTgxZWUiLDQsIlx1ODFmNSIsNSwiXHU4MWZkXHU4MWZmXHU4MjAzXHU4MjA3Iiw0LCJcdTgyMGVcdTgyMGZcdTgyMTFcdTgyMTNcdTgyMTUiLDUsIlx1ODIxZFx1ODIyMFx1ODIyNFx1ODIyNVx1ODIyNlx1ODIyN1x1ODIyOVx1ODIyZVx1ODIzMlx1ODIzYVx1ODIz''@;'; put 'put ''Y1x1ODIzZFx1ODIzZiJdLFsiYzU4MCIsIlx1ODI0MFx1ODI0MVx1ODI0Mlx1ODI0M1x1ODI0NVx1ODI0Nlx1ODI0OFx1ODI0YVx1ODI0Y1x1ODI0ZFx1ODI0ZVx1ODI1MCIsNywiXHU4MjU5XHU4MjViXHU4MjVjXHU4MjVkXHU4MjVlXHU4MjYwIiw3LCJcdTgyNjlcdTYyZTdcdTZjZGVcdTcy''@;'; put 'put ''NWJcdTYyNmRcdTk0YWVcdTdlYmRcdTgxMTNcdTZkNTNcdTUxOWNcdTVmMDRcdTU5NzRcdTUyYWFcdTYwMTJcdTU5NzNcdTY2OTZcdTg2NTBcdTc1OWZcdTYzMmFcdTYxZTZcdTdjZWZcdThiZmFcdTU0ZTZcdTZiMjdcdTllMjVcdTZiYjRcdTg1ZDVcdTU0NTVcdTUwNzZcdTZjYTRcdTU1NmFc''@;'; put 'put ''dThkYjRcdTcyMmNcdTVlMTVcdTYwMTVcdTc0MzZcdTYyY2RcdTYzOTJcdTcyNGNcdTVmOThcdTZlNDNcdTZkM2VcdTY1MDBcdTZmNThcdTc2ZDhcdTc4ZDBcdTc2ZmNcdTc1NTRcdTUyMjRcdTUzZGJcdTRlNTNcdTVlOWVcdTY1YzFcdTgwMmFcdTgwZDZcdTYyOWJcdTU0ODZcdTUyMjhcdTcw''@;'; put 'put ''YWVcdTg4OGRcdThkZDFcdTZjZTFcdTU0NzhcdTgwZGFcdTU3ZjlcdTg4ZjRcdThkNTRcdTk2NmFcdTkxNGRcdTRmNjlcdTZjOWJcdTU1YjdcdTc2YzZcdTc4MzBcdTYyYThcdTcwZjlcdTZmOGVcdTVmNmRcdTg0ZWNcdTY4ZGFcdTc4N2NcdTdiZjdcdTgxYThcdTY3MGJcdTllNGZcdTYzNjdc''@;'; put 'put ''dTc4YjBcdTU3NmZcdTc4MTJcdTk3MzlcdTYyNzlcdTYyYWJcdTUyODhcdTc0MzVcdTZiZDciXSxbImM2NDAiLCJcdTgyNmFcdTgyNmJcdTgyNmNcdTgyNmRcdTgyNzFcdTgyNzVcdTgyNzZcdTgyNzdcdTgyNzhcdTgyN2JcdTgyN2NcdTgyODBcdTgyODFcdTgyODNcdTgyODVcdTgyODZcdTgy''@;'; put 'put ''ODdcdTgyODlcdTgyOGNcdTgyOTBcdTgyOTNcdTgyOTRcdTgyOTVcdTgyOTZcdTgyOWFcdTgyOWJcdTgyOWVcdTgyYTBcdTgyYTJcdTgyYTNcdTgyYTdcdTgyYjJcdTgyYjVcdTgyYjZcdTgyYmFcdTgyYmJcdTgyYmNcdTgyYmZcdTgyYzBcdTgyYzJcdTgyYzNcdTgyYzVcdTgyYzZcdTgyYzlc''@;'; put 'put ''dTgyZDBcdTgyZDZcdTgyZDlcdTgyZGFcdTgyZGRcdTgyZTJcdTgyZTdcdTgyZThcdTgyZTlcdTgyZWFcdTgyZWNcdTgyZWRcdTgyZWVcdTgyZjBcdTgyZjJcdTgyZjNcdTgyZjVcdTgyZjZcdTgyZjgiXSxbImM2ODAiLCJcdTgyZmFcdTgyZmMiLDQsIlx1ODMwYVx1ODMwYlx1ODMwZFx1ODMx''@;'; put 'put ''MFx1ODMxMlx1ODMxM1x1ODMxNlx1ODMxOFx1ODMxOVx1ODMxZCIsOSwiXHU4MzI5XHU4MzJhXHU4MzJlXHU4MzMwXHU4MzMyXHU4MzM3XHU4MzNiXHU4MzNkXHU1NTY0XHU4MTNlXHU3NWIyXHU3NmFlXHU1MzM5XHU3NWRlXHU1MGZiXHU1YzQxXHU4YjZjXHU3YmM3XHU1MDRmXHU3MjQ3XHU5''@;'; put 'put ''YTk3XHU5OGQ4XHU2ZjAyXHU3NGUyXHU3OTY4XHU2NDg3XHU3N2E1XHU2MmZjXHU5ODkxXHU4ZDJiXHU1NGMxXHU4MDU4XHU0ZTUyXHU1NzZhXHU4MmY5XHU4NDBkXHU1ZTczXHU1MWVkXHU3NGY2XHU4YmM0XHU1YzRmXHU1NzYxXHU2Y2ZjXHU5ODg3XHU1YTQ2XHU3ODM0XHU5YjQ0XHU4ZmVi''@;'; put 'put ''XHU3Yzk1XHU1MjU2XHU2MjUxXHU5NGZhXHU0ZWM2XHU4Mzg2XHU4NDYxXHU4M2U5XHU4NGIyXHU1N2Q0XHU2NzM0XHU1NzAzXHU2NjZlXHU2ZDY2XHU4YzMxXHU2NmRkXHU3MDExXHU2NzFmXHU2YjNhXHU2ODE2XHU2MjFhXHU1OWJiXHU0ZTAzXHU1MWM0XHU2ZjA2XHU2N2QyXHU2YzhmXHU1''@;'; put 'put ''MTc2XHU2OGNiXHU1OTQ3XHU2YjY3XHU3NTY2XHU1ZDBlXHU4MTEwXHU5ZjUwXHU2NWQ3XHU3OTQ4XHU3OTQxXHU5YTkxXHU4ZDc3XHU1YzgyXHU0ZTVlXHU0ZjAxXHU1NDJmXHU1OTUxXHU3ODBjXHU1NjY4XHU2YzE0XHU4ZmM0XHU1ZjAzXHU2YzdkXHU2Y2UzXHU4YmFiXHU2MzkwIl0sWyJj''@;'; put 'put ''NzQwIiwiXHU4MzNlXHU4MzNmXHU4MzQxXHU4MzQyXHU4MzQ0XHU4MzQ1XHU4MzQ4XHU4MzRhIiw0LCJcdTgzNTNcdTgzNTUiLDQsIlx1ODM1ZFx1ODM2Mlx1ODM3MCIsNiwiXHU4Mzc5XHU4MzdhXHU4MzdlIiw2LCJcdTgzODdcdTgzODhcdTgzOGFcdTgzOGJcdTgzOGNcdTgzOGRcdTgzOGZc''@;'; put 'put ''dTgzOTBcdTgzOTFcdTgzOTRcdTgzOTVcdTgzOTZcdTgzOTdcdTgzOTlcdTgzOWFcdTgzOWRcdTgzOWZcdTgzYTEiLDYsIlx1ODNhY1x1ODNhZFx1ODNhZSJdLFsiYzc4MCIsIlx1ODNhZlx1ODNiNVx1ODNiYlx1ODNiZVx1ODNiZlx1ODNjMlx1ODNjM1x1ODNjNFx1ODNjNlx1ODNjOFx1ODNj''@;'; put 'put ''OVx1ODNjYlx1ODNjZFx1ODNjZVx1ODNkMFx1ODNkMVx1ODNkMlx1ODNkM1x1ODNkNVx1ODNkN1x1ODNkOVx1ODNkYVx1ODNkYlx1ODNkZVx1ODNlMlx1ODNlM1x1ODNlNFx1ODNlNlx1ODNlN1x1ODNlOFx1ODNlYlx1ODNlY1x1ODNlZFx1NjA3MFx1NmQzZFx1NzI3NVx1NjI2Nlx1OTQ4ZVx1''@;'; put 'put ''OTRjNVx1NTM0M1x1OGZjMVx1N2I3ZVx1NGVkZlx1OGMyNlx1NGU3ZVx1OWVkNFx1OTRiMVx1OTRiM1x1NTI0ZFx1NmY1Y1x1OTA2M1x1NmQ0NVx1OGMzNFx1NTgxMVx1NWQ0Y1x1NmIyMFx1NmI0OVx1NjdhYVx1NTQ1Ylx1ODE1NFx1N2Y4Y1x1NTg5OVx1ODUzN1x1NWYzYVx1NjJhMlx1NmE0''@;'; put 'put ''N1x1OTUzOVx1NjU3Mlx1NjA4NFx1Njg2NVx1NzdhN1x1NGU1NFx1NGZhOFx1NWRlN1x1OTc5OFx1NjRhY1x1N2ZkOFx1NWNlZFx1NGZjZlx1N2E4ZFx1NTIwN1x1ODMwNFx1NGUxNFx1NjAyZlx1N2E4M1x1OTRhNlx1NGZiNVx1NGViMlx1NzllNlx1NzQzNFx1NTJlNFx1ODJiOVx1NjRkMlx1''@;'; put 'put ''NzliZFx1NWJkZFx1NmM4MVx1OTc1Mlx1OGY3Ylx1NmMyMlx1NTAzZVx1NTM3Zlx1NmUwNVx1NjRjZVx1NjY3NFx1NmMzMFx1NjBjNVx1OTg3N1x1OGJmN1x1NWU4Nlx1NzQzY1x1N2E3N1x1NzljYlx1NGUxOFx1OTBiMVx1NzQwM1x1NmM0Mlx1NTZkYVx1OTE0Ylx1NmNjNVx1OGQ4Ylx1NTMz''@;'; put 'put ''YVx1ODZjNlx1NjZmMlx1OGVhZlx1NWM0OFx1OWE3MVx1NmUyMCJdLFsiYzg0MCIsIlx1ODNlZVx1ODNlZlx1ODNmMyIsNCwiXHU4M2ZhXHU4M2ZiXHU4M2ZjXHU4M2ZlXHU4M2ZmXHU4NDAwXHU4NDAyXHU4NDA1XHU4NDA3XHU4NDA4XHU4NDA5XHU4NDBhXHU4NDEwXHU4NDEyIiw1LCJcdTg0''@;'; put 'put ''MTlcdTg0MWFcdTg0MWJcdTg0MWUiLDUsIlx1ODQyOSIsNywiXHU4NDMyIiw1LCJcdTg0MzlcdTg0M2FcdTg0M2JcdTg0M2UiLDcsIlx1ODQ0N1x1ODQ0OFx1ODQ0OSJdLFsiYzg4MCIsIlx1ODQ0YSIsNiwiXHU4NDUyIiw0LCJcdTg0NThcdTg0NWRcdTg0NWVcdTg0NWZcdTg0NjBcdTg0NjJc''@;'; put 'put ''dTg0NjQiLDQsIlx1ODQ2YVx1ODQ2ZVx1ODQ2Zlx1ODQ3MFx1ODQ3Mlx1ODQ3NFx1ODQ3N1x1ODQ3OVx1ODQ3Ylx1ODQ3Y1x1NTNkNlx1NWEzNlx1OWY4Ylx1OGRhM1x1NTNiYlx1NTcwOFx1OThhN1x1Njc0M1x1OTE5Ylx1NmNjOVx1NTE2OFx1NzVjYVx1NjJmM1x1NzJhY1x1NTIzOFx1NTI5''@;'; put 'put ''ZFx1N2YzYVx1NzA5NFx1NzYzOFx1NTM3NFx1OWU0YVx1NjliN1x1Nzg2ZVx1OTZjMFx1ODhkOVx1N2ZhNFx1NzEzNlx1NzFjM1x1NTE4OVx1NjdkM1x1NzRlNFx1NThlNFx1NjUxOFx1NTZiN1x1OGJhOVx1OTk3Nlx1NjI3MFx1N2VkNVx1NjBmOVx1NzBlZFx1NThlY1x1NGVjMVx1NGViYVx1''@;'; put 'put ''NWZjZFx1OTdlN1x1NGVmYlx1OGJhNFx1NTIwM1x1NTk4YVx1N2VhYlx1NjI1NFx1NGVjZFx1NjVlNVx1NjIwZVx1ODMzOFx1ODRjOVx1ODM2M1x1ODc4ZFx1NzE5NFx1NmViNlx1NWJiOVx1N2VkMlx1NTE5N1x1NjNjOVx1NjdkNFx1ODA4OVx1ODMzOVx1ODgxNVx1NTExMlx1NWI3YVx1NTk4''@;'; put 'put ''Mlx1OGZiMVx1NGU3M1x1NmM1ZFx1NTE2NVx1ODkyNVx1OGY2Zlx1OTYyZVx1ODU0YVx1NzQ1ZVx1OTUxMFx1OTVmMFx1NmRhNlx1ODJlNVx1NWYzMVx1NjQ5Mlx1NmQxMlx1ODQyOFx1ODE2ZVx1OWNjM1x1NTg1ZVx1OGQ1Ylx1NGUwOVx1NTNjMSJdLFsiYzk0MCIsIlx1ODQ3ZCIsNCwiXHU4''@;'; put 'put ''NDgzXHU4NDg0XHU4NDg1XHU4NDg2XHU4NDhhXHU4NDhkXHU4NDhmIiw3LCJcdTg0OThcdTg0OWFcdTg0OWJcdTg0OWRcdTg0OWVcdTg0OWZcdTg0YTBcdTg0YTIiLDEyLCJcdTg0YjBcdTg0YjFcdTg0YjNcdTg0YjVcdTg0YjZcdTg0YjdcdTg0YmJcdTg0YmNcdTg0YmVcdTg0YzBcdTg0YzJc''@;'; put 'put ''dTg0YzNcdTg0YzVcdTg0YzZcdTg0YzdcdTg0YzhcdTg0Y2JcdTg0Y2NcdTg0Y2VcdTg0Y2ZcdTg0ZDJcdTg0ZDRcdTg0ZDVcdTg0ZDciXSxbImM5ODAiLCJcdTg0ZDgiLDQsIlx1ODRkZVx1ODRlMVx1ODRlMlx1ODRlNFx1ODRlNyIsNCwiXHU4NGVkXHU4NGVlXHU4NGVmXHU4NGYxIiwxMCwi''@;'; put 'put ''XHU4NGZkXHU4NGZlXHU4NTAwXHU4NTAxXHU4NTAyXHU0ZjFlXHU2NTYzXHU2ODUxXHU1NWQzXHU0ZTI3XHU2NDE0XHU5YTlhXHU2MjZiXHU1YWMyXHU3NDVmXHU4MjcyXHU2ZGE5XHU2OGVlXHU1MGU3XHU4MzhlXHU3ODAyXHU2NzQwXHU1MjM5XHU2Yzk5XHU3ZWIxXHU1MGJiXHU1NTY1XHU3''@;'; put 'put ''MTVlXHU3YjViXHU2NjUyXHU3M2NhXHU4MmViXHU2NzQ5XHU1YzcxXHU1MjIwXHU3MTdkXHU4ODZiXHU5NWVhXHU5NjU1XHU2NGM1XHU4ZDYxXHU4MWIzXHU1NTg0XHU2YzU1XHU2MjQ3XHU3ZjJlXHU1ODkyXHU0ZjI0XHU1NTQ2XHU4ZDRmXHU2NjRjXHU0ZTBhXHU1YzFhXHU4OGYzXHU2OGEy''@;'; put 'put ''XHU2MzRlXHU3YTBkXHU3MGU3XHU4MjhkXHU1MmZhXHU5N2Y2XHU1YzExXHU1NGU4XHU5MGI1XHU3ZWNkXHU1OTYyXHU4ZDRhXHU4NmM3XHU4MjBjXHU4MjBkXHU4ZDY2XHU2NDQ0XHU1YzA0XHU2MTUxXHU2ZDg5XHU3OTNlXHU4YmJlXHU3ODM3XHU3NTMzXHU1NDdiXHU0ZjM4XHU4ZWFiXHU2''@;'; put 'put ''ZGYxXHU1YTIwXHU3ZWM1XHU3OTVlXHU2Yzg4XHU1YmExXHU1YTc2XHU3NTFhXHU4MGJlXHU2MTRlXHU2ZTE3XHU1OGYwXHU3NTFmXHU3NTI1XHU3MjcyXHU1MzQ3XHU3ZWYzIl0sWyJjYTQwIiwiXHU4NTAzIiw4LCJcdTg1MGRcdTg1MGVcdTg1MGZcdTg1MTBcdTg1MTJcdTg1MTRcdTg1MTVc''@;'; put 'put ''dTg1MTZcdTg1MThcdTg1MTlcdTg1MWJcdTg1MWNcdTg1MWRcdTg1MWVcdTg1MjBcdTg1MjIiLDgsIlx1ODUyZCIsOSwiXHU4NTNlIiw0LCJcdTg1NDRcdTg1NDVcdTg1NDZcdTg1NDdcdTg1NGIiLDEwXSxbImNhODAiLCJcdTg1NTdcdTg1NThcdTg1NWFcdTg1NWJcdTg1NWNcdTg1NWRcdTg1''@;'; put 'put ''NWYiLDQsIlx1ODU2NVx1ODU2Nlx1ODU2N1x1ODU2OSIsOCwiXHU4NTczXHU4NTc1XHU4NTc2XHU4NTc3XHU4NTc4XHU4NTdjXHU4NTdkXHU4NTdmXHU4NTgwXHU4NTgxXHU3NzAxXHU3NmRiXHU1MjY5XHU4MGRjXHU1NzIzXHU1ZTA4XHU1OTMxXHU3MmVlXHU2NWJkXHU2ZTdmXHU4YmQ3XHU1''@;'; put 'put ''YzM4XHU4NjcxXHU1MzQxXHU3N2YzXHU2MmZlXHU2NWY2XHU0ZWMwXHU5OGRmXHU4NjgwXHU1YjllXHU4YmM2XHU1M2YyXHU3N2UyXHU0ZjdmXHU1YzRlXHU5YTc2XHU1OWNiXHU1ZjBmXHU3OTNhXHU1OGViXHU0ZTE2XHU2N2ZmXHU0ZThiXHU2MmVkXHU4YTkzXHU5MDFkXHU1MmJmXHU2NjJm''@;'; put 'put ''XHU1NWRjXHU1NjZjXHU5MDAyXHU0ZWQ1XHU0ZjhkXHU5MWNhXHU5OTcwXHU2YzBmXHU1ZTAyXHU2MDQzXHU1YmE0XHU4OWM2XHU4YmQ1XHU2NTM2XHU2MjRiXHU5OTk2XHU1Yjg4XHU1YmZmXHU2Mzg4XHU1NTJlXHU1M2Q3XHU3NjI2XHU1MTdkXHU4NTJjXHU2N2EyXHU2OGIzXHU2YjhhXHU2''@;'; put 'put ''MjkyXHU4ZjkzXHU1M2Q0XHU4MjEyXHU2ZGQxXHU3NThmXHU0ZTY2XHU4ZDRlXHU1YjcwXHU3MTlmXHU4NWFmXHU2NjkxXHU2NmQ5XHU3ZjcyXHU4NzAwXHU5ZWNkXHU5ZjIwXHU1YzVlXHU2NzJmXHU4ZmYwXHU2ODExXHU2NzVmXHU2MjBkXHU3YWQ2XHU1ODg1XHU1ZWI2XHU2NTcwXHU2ZjMx''@;'; put 'put ''Il0sWyJjYjQwIiwiXHU4NTgyXHU4NTgzXHU4NTg2XHU4NTg4Iiw2LCJcdTg1OTAiLDEwLCJcdTg1OWQiLDYsIlx1ODVhNVx1ODVhNlx1ODVhN1x1ODVhOVx1ODVhYlx1ODVhY1x1ODVhZFx1ODViMSIsNSwiXHU4NWI4XHU4NWJhIiw2LCJcdTg1YzIiLDYsIlx1ODVjYSIsNCwiXHU4NWQxXHU4''@;'; put 'put ''NWQyIl0sWyJjYjgwIiwiXHU4NWQ0XHU4NWQ2Iiw1LCJcdTg1ZGQiLDYsIlx1ODVlNVx1ODVlNlx1ODVlN1x1ODVlOFx1ODVlYSIsMTQsIlx1NjA1NVx1NTIzN1x1ODAwZFx1NjQ1NFx1ODg3MFx1NzUyOVx1NWUwNVx1NjgxM1x1NjJmNFx1OTcxY1x1NTNjY1x1NzIzZFx1OGMwMVx1NmMzNFx1''@;'; put 'put ''Nzc2MVx1N2EwZVx1NTQyZVx1NzdhY1x1OTg3YVx1ODIxY1x1OGJmNFx1Nzg1NVx1NjcxNFx1NzBjMVx1NjVhZlx1NjQ5NVx1NTYzNlx1NjAxZFx1NzljMVx1NTNmOFx1NGUxZFx1NmI3Ylx1ODA4Nlx1NWJmYVx1NTVlM1x1NTZkYlx1NGYzYVx1NGYzY1x1OTk3Mlx1NWRmM1x1Njc3ZVx1ODAz''@;'; put 'put ''OFx1NjAwMlx1OTg4Mlx1OTAwMVx1NWI4Ylx1OGJiY1x1OGJmNVx1NjQxY1x1ODI1OFx1NjRkZVx1NTVmZFx1ODJjZlx1OTE2NVx1NGZkN1x1N2QyMFx1OTAxZlx1N2M5Zlx1NTBmM1x1NTg1MVx1NmVhZlx1NWJiZlx1OGJjOVx1ODA4M1x1OTE3OFx1ODQ5Y1x1N2I5N1x1ODY3ZFx1OTY4Ylx1''@;'; put 'put ''OTY4Zlx1N2VlNVx1OWFkM1x1Nzg4ZVx1NWM4MVx1N2E1N1x1OTA0Mlx1OTZhN1x1Nzk1Zlx1NWI1OVx1NjM1Zlx1N2IwYlx1ODRkMVx1NjhhZFx1NTUwNlx1N2YyOVx1NzQxMFx1N2QyMlx1OTUwMVx1NjI0MFx1NTg0Y1x1NGVkNlx1NWI4M1x1NTk3OVx1NTg1NCJdLFsiY2M0MCIsIlx1ODVm''@;'; put 'put ''OVx1ODVmYVx1ODVmY1x1ODVmZFx1ODVmZVx1ODYwMCIsNCwiXHU4NjA2IiwxMCwiXHU4NjEyXHU4NjEzXHU4NjE0XHU4NjE1XHU4NjE3IiwxNSwiXHU4NjI4XHU4NjJhIiwxMywiXHU4NjM5XHU4NjNhXHU4NjNiXHU4NjNkXHU4NjNlXHU4NjNmXHU4NjQwIl0sWyJjYzgwIiwiXHU4NjQxIiwx''@;'; put 'put ''MSwiXHU4NjUyXHU4NjUzXHU4NjU1Iiw0LCJcdTg2NWJcdTg2NWNcdTg2NWRcdTg2NWZcdTg2NjBcdTg2NjFcdTg2NjMiLDcsIlx1NzM2ZFx1NjMxZVx1OGU0Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1NTc0ZFx1NjQ0YVx1''@;'; put 'put ''OGQyYVx1NzYyYlx1NmVlOVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1NjNhMlx1NTNmOVx1NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGViYVx1NmRjY1x1OGQ5''@;'; put 'put ''Zlx1NzBlYlx1NjM4Zlx1NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3OVx1ODVlNFx1ODE3ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1NGY1M1x1NjZmZlx1''@;'; put 'put ''NTY4Zlx1NjBkNVx1NmQ5NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRmYlx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1NjMxMVx1Njc2MVx1OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjMyJdLFsiY2Q0MCIsIlx1ODY2ZFx1ODY2''@;'; put 'put ''Zlx1ODY3MFx1ODY3MiIsNiwiXHU4NjgzIiw2LCJcdTg2OGUiLDQsIlx1ODY5NFx1ODY5NiIsNSwiXHU4NjllIiw0LCJcdTg2YTVcdTg2YTZcdTg2YWJcdTg2YWRcdTg2YWVcdTg2YjJcdTg2YjNcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmIiLDQsIlx1ODZjMVx1ODZjMlx1ODZjM1x1ODZjNVx1''@;'; put 'put ''ODZjOFx1ODZjY1x1ODZjZFx1ODZkMlx1ODZkM1x1ODZkNVx1ODZkNlx1ODZkN1x1ODZkYVx1ODZkYyJdLFsiY2Q4MCIsIlx1ODZkZFx1ODZlMFx1ODZlMVx1ODZlMlx1ODZlM1x1ODZlNVx1ODZlNlx1ODZlN1x1ODZlOFx1ODZlYVx1ODZlYlx1ODZlY1x1ODZlZlx1ODZmNVx1ODZmNlx1ODZm''@;'; put 'put ''N1x1ODZmYVx1ODZmYlx1ODZmY1x1ODZmZFx1ODZmZlx1ODcwMVx1ODcwNFx1ODcwNVx1ODcwNlx1ODcwYlx1ODcwY1x1ODcwZVx1ODcwZlx1ODcxMFx1ODcxMVx1ODcxNFx1ODcxNlx1NmM0MFx1NWVmN1x1NTA1Y1x1NGVhZFx1NWVhZFx1NjMzYVx1ODI0N1x1OTAxYVx1Njg1MFx1OTE2ZVx1''@;'; put 'put ''NzdiM1x1NTQwY1x1OTRkY1x1NWY2NFx1N2FlNVx1Njg3Nlx1NjM0NVx1N2I1Mlx1N2VkZlx1NzVkYlx1NTA3N1x1NjI5NVx1NTkzNFx1OTAwZlx1NTFmOFx1NzljM1x1N2E4MVx1NTZmZVx1NWY5Mlx1OTAxNFx1NmQ4Mlx1NWM2MFx1NTcxZlx1NTQxMFx1NTE1NFx1NmU0ZFx1NTZlMlx1NjNh''@;'; put 'put ''OFx1OTg5M1x1ODE3Zlx1ODcxNVx1ODkyYVx1OTAwMFx1NTQxZVx1NWM2Zlx1ODFjMFx1NjJkNlx1NjI1OFx1ODEzMVx1OWUzNVx1OTY0MFx1OWE2ZVx1OWE3Y1x1NjkyZFx1NTlhNVx1NjJkM1x1NTUzZVx1NjMxNlx1NTRjN1x1ODZkOVx1NmQzY1x1NWEwM1x1NzRlNlx1ODg5Y1x1NmI2YVx1''@;'; put 'put ''NTkxNlx1OGM0Y1x1NWYyZlx1NmU3ZVx1NzNhOVx1OTg3ZFx1NGUzOFx1NzBmN1x1NWI4Y1x1Nzg5N1x1NjMzZFx1NjY1YVx1NzY5Nlx1NjBjYlx1NWI5Ylx1NWE0OVx1NGUwN1x1ODE1NVx1NmM2YVx1NzM4Ylx1NGVhMVx1Njc4OVx1N2Y1MVx1NWY4MFx1NjVmYVx1NjcxYlx1NWZkOFx1NTk4''@;'; put 'put ''NFx1NWEwMSJdLFsiY2U0MCIsIlx1ODcxOVx1ODcxYlx1ODcxZFx1ODcxZlx1ODcyMFx1ODcyNFx1ODcyNlx1ODcyN1x1ODcyOFx1ODcyYVx1ODcyYlx1ODcyY1x1ODcyZFx1ODcyZlx1ODczMFx1ODczMlx1ODczM1x1ODczNVx1ODczNlx1ODczOFx1ODczOVx1ODczYVx1ODczY1x1ODczZFx1''@;'; put 'put ''ODc0MCIsNiwiXHU4NzRhXHU4NzRiXHU4NzRkXHU4NzRmXHU4NzUwXHU4NzUxXHU4NzUyXHU4NzU0XHU4NzU1XHU4NzU2XHU4NzU4XHU4NzVhIiw1LCJcdTg3NjFcdTg3NjJcdTg3NjYiLDcsIlx1ODc2Zlx1ODc3MVx1ODc3Mlx1ODc3M1x1ODc3NSJdLFsiY2U4MCIsIlx1ODc3N1x1ODc3OFx1''@;'; put 'put ''ODc3OVx1ODc3YVx1ODc3Zlx1ODc4MFx1ODc4MVx1ODc4NFx1ODc4Nlx1ODc4N1x1ODc4OVx1ODc4YVx1ODc4Y1x1ODc4ZSIsNCwiXHU4Nzk0XHU4Nzk1XHU4Nzk2XHU4Nzk4Iiw2LCJcdTg3YTAiLDQsIlx1NWRjZFx1NWZhZVx1NTM3MVx1OTdlNlx1OGZkZFx1Njg0NVx1NTZmNFx1NTUyZlx1''@;'; put 'put ''NjBkZlx1NGUzYVx1NmY0ZFx1N2VmNFx1ODJjN1x1ODQwZVx1NTlkNFx1NGYxZlx1NGYyYVx1NWMzZVx1N2VhY1x1NjcyYVx1ODUxYVx1NTQ3M1x1NzU0Zlx1ODBjM1x1NTU4Mlx1OWI0Zlx1NGY0ZFx1NmUyZFx1OGMxM1x1NWMwOVx1NjE3MFx1NTM2Ylx1NzYxZlx1NmUyOVx1ODY4YVx1NjU4''@;'; put 'put ''N1x1OTVmYlx1N2ViOVx1NTQzYlx1N2EzM1x1N2QwYVx1OTVlZVx1NTVlMVx1N2ZjMVx1NzRlZVx1NjMxZFx1ODcxN1x1NmRhMVx1N2E5ZFx1NjIxMVx1NjVhMVx1NTM2N1x1NjNlMVx1NmM4M1x1NWRlYlx1NTQ1Y1x1OTRhOFx1NGU0Y1x1NmM2MVx1OGJlY1x1NWM0Ylx1NjVlMFx1ODI5Y1x1''@;'; put 'put ''NjhhN1x1NTQzZVx1NTQzNFx1NmJjYlx1NmI2Nlx1NGU5NFx1NjM0Mlx1NTM0OFx1ODIxZVx1NGYwZFx1NGZhZVx1NTc1ZVx1NjIwYVx1OTZmZVx1NjY2NFx1NzI2OVx1NTJmZlx1NTJhMVx1NjA5Zlx1OGJlZlx1NjYxNFx1NzE5OVx1Njc5MFx1ODk3Zlx1Nzg1Mlx1NzdmZFx1NjY3MFx1NTYz''@;'; put 'put ''Ylx1NTQzOFx1OTUyMVx1NzI3YSJdLFsiY2Y0MCIsIlx1ODdhNVx1ODdhNlx1ODdhN1x1ODdhOVx1ODdhYVx1ODdhZVx1ODdiMFx1ODdiMVx1ODdiMlx1ODdiNFx1ODdiNlx1ODdiN1x1ODdiOFx1ODdiOVx1ODdiYlx1ODdiY1x1ODdiZVx1ODdiZlx1ODdjMSIsNCwiXHU4N2M3XHU4N2M4XHU4''@;'; put 'put ''N2M5XHU4N2NjIiw0LCJcdTg3ZDQiLDYsIlx1ODdkY1x1ODdkZFx1ODdkZVx1ODdkZlx1ODdlMVx1ODdlMlx1ODdlM1x1ODdlNFx1ODdlNlx1ODdlN1x1ODdlOFx1ODdlOVx1ODdlYlx1ODdlY1x1ODdlZFx1ODdlZiIsOV0sWyJjZjgwIiwiXHU4N2ZhXHU4N2ZiXHU4N2ZjXHU4N2ZkXHU4N2Zm''@;'; put 'put ''XHU4ODAwXHU4ODAxXHU4ODAyXHU4ODA0Iiw1LCJcdTg4MGIiLDcsIlx1ODgxNFx1ODgxN1x1ODgxOFx1ODgxOVx1ODgxYVx1ODgxYyIsNCwiXHU4ODIzXHU3YTAwXHU2MDZmXHU1ZTBjXHU2MDg5XHU4MTlkXHU1OTE1XHU2MGRjXHU3MTg0XHU3MGVmXHU2ZWFhXHU2YzUwXHU3MjgwXHU2YTg0''@;'; put 'put ''XHU4OGFkXHU1ZTJkXHU0ZTYwXHU1YWIzXHU1NTljXHU5NGUzXHU2ZDE3XHU3Y2ZiXHU5Njk5XHU2MjBmXHU3ZWM2XHU3NzhlXHU4NjdlXHU1MzIzXHU5NzFlXHU4Zjk2XHU2Njg3XHU1Y2UxXHU0ZmEwXHU3MmVkXHU0ZTBiXHU1M2E2XHU1OTBmXHU1NDEzXHU2MzgwXHU5NTI4XHU1MTQ4XHU0''@;'; put 'put ''ZWQ5XHU5YzljXHU3ZWE0XHU1NGI4XHU4ZDI0XHU4ODU0XHU4MjM3XHU5NWYyXHU2ZDhlXHU1ZjI2XHU1YWNjXHU2NjNlXHU5NjY5XHU3M2IwXHU3MzJlXHU1M2JmXHU4MTdhXHU5OTg1XHU3ZmExXHU1YmFhXHU5Njc3XHU5NjUwXHU3ZWJmXHU3NmY4XHU1M2EyXHU5NTc2XHU5OTk5XHU3YmIx''@;'; put 'put ''XHU4OTQ0XHU2ZTU4XHU0ZTYxXHU3ZmQ0XHU3OTY1XHU4YmU2XHU2MGYzXHU1NGNkXHU0ZWFiXHU5ODc5XHU1ZGY3XHU2YTYxXHU1MGNmXHU1NDExXHU4YzYxXHU4NDI3XHU3ODVkXHU5NzA0XHU1MjRhXHU1NGVlXHU1NmEzXHU5NTAwXHU2ZDg4XHU1YmI1XHU2ZGM2XHU2NjUzIl0sWyJkMDQw''@;'; put 'put ''IiwiXHU4ODI0IiwxMywiXHU4ODMzIiw1LCJcdTg4M2FcdTg4M2JcdTg4M2RcdTg4M2VcdTg4M2ZcdTg4NDFcdTg4NDJcdTg4NDNcdTg4NDYiLDUsIlx1ODg0ZSIsNSwiXHU4ODU1XHU4ODU2XHU4ODU4XHU4ODVhIiw2LCJcdTg4NjZcdTg4NjdcdTg4NmFcdTg4NmRcdTg4NmZcdTg4NzFcdTg4''@;'; put 'put ''NzNcdTg4NzRcdTg4NzVcdTg4NzZcdTg4NzhcdTg4NzlcdTg4N2EiXSxbImQwODAiLCJcdTg4N2JcdTg4N2NcdTg4ODBcdTg4ODNcdTg4ODZcdTg4ODdcdTg4ODlcdTg4OGFcdTg4OGNcdTg4OGVcdTg4OGZcdTg4OTBcdTg4OTFcdTg4OTNcdTg4OTRcdTg4OTVcdTg4OTciLDQsIlx1ODg5ZCIs''@;'; put 'put ''NCwiXHU4OGEzXHU4OGE1Iiw1LCJcdTVjMGZcdTViNWRcdTY4MjFcdTgwOTZcdTU1NzhcdTdiMTFcdTY1NDhcdTY5NTRcdTRlOWJcdTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUzNzhcdTg3ZjlcdTYxYzhc''@;'; put 'put ''dTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgyYWZcdTk1MGNcdTZiMjNcdThmOWJcdTY1YjBcdTVmZmJcdTVmYzNcdTRmZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJcdTVlNzhcdTY3NGZcdTYw''@;'; put 'put ''MjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhcdTZjNzlcdTk2YzRcdTcxOGFcdTRmMTFcdTRmZWVcdTdmOWVcdTY3M2RcdTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThiYjhcdTg0YzRcdTkxNTdc''@;'; put 'put ''dTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdkNmVcdTVhN2ZcdTdlZWFcdTdlZWRcdThmNjlcdTU1YTdcdTViYTNcdTYwYWNcdTY1Y2JcdTczODQiXSxbImQxNDAiLCJcdTg4YWNcdTg4YWVcdTg4YWZcdTg4YjBcdTg4YjIiLDQsIlx1ODhiOFx1ODhiOVx1ODhiYVx1ODhiYlx1ODhi''@;'; put 'put ''ZFx1ODhiZVx1ODhiZlx1ODhjMFx1ODhjM1x1ODhjNFx1ODhjN1x1ODhjOFx1ODhjYVx1ODhjYlx1ODhjY1x1ODhjZFx1ODhjZlx1ODhkMFx1ODhkMVx1ODhkM1x1ODhkNlx1ODhkN1x1ODhkYSIsNCwiXHU4OGUwXHU4OGUxXHU4OGU2XHU4OGU3XHU4OGU5Iiw2LCJcdTg4ZjJcdTg4ZjVcdTg4''@;'; put 'put ''ZjZcdTg4ZjdcdTg4ZmFcdTg4ZmJcdTg4ZmRcdTg4ZmZcdTg5MDBcdTg5MDFcdTg5MDMiLDVdLFsiZDE4MCIsIlx1ODkwOVx1ODkwYiIsNCwiXHU4OTExXHU4OTE0Iiw0LCJcdTg5MWMiLDQsIlx1ODkyMlx1ODkyM1x1ODkyNFx1ODkyNlx1ODkyN1x1ODkyOFx1ODkyOVx1ODkyY1x1ODkyZFx1''@;'; put 'put ''ODkyZVx1ODkyZlx1ODkzMVx1ODkzMlx1ODkzM1x1ODkzNVx1ODkzN1x1OTAwOVx1NzY2M1x1NzcyOVx1N2VkYVx1OTc3NFx1ODU5Ylx1NWI2Nlx1N2E3NFx1OTZlYVx1ODg0MFx1NTJjYlx1NzE4Zlx1NWZhYVx1NjVlY1x1OGJlMlx1NWJmYlx1OWE2Zlx1NWRlMVx1NmI4OVx1NmM1Ylx1OGJh''@;'; put 'put ''ZFx1OGJhZlx1OTAwYVx1OGZjNVx1NTM4Ylx1NjJiY1x1OWUyNlx1OWUyZFx1NTQ0MFx1NGUyYlx1ODJiZFx1NzI1OVx1ODY5Y1x1NWQxNlx1ODg1OVx1NmRhZlx1OTZjNVx1NTRkMVx1NGU5YVx1OGJiNlx1NzEwOVx1NTRiZFx1OTYwOVx1NzBkZlx1NmRmOVx1NzZkMFx1NGUyNVx1NzgxNFx1''@;'; put 'put ''ODcxMlx1NWNhOVx1NWVmNlx1OGEwMFx1OTg5Y1x1OTYwZVx1NzA4ZVx1NmNiZlx1NTk0NFx1NjNhOVx1NzczY1x1ODg0ZFx1NmYxNFx1ODI3M1x1NTgzMFx1NzFkNVx1NTM4Y1x1NzgxYVx1OTZjMVx1NTUwMVx1NWY2Nlx1NzEzMFx1NWJiNFx1OGMxYVx1OWE4Y1x1NmI4M1x1NTkyZVx1OWUy''@;'; put 'put ''Zlx1NzllN1x1Njc2OFx1NjI2Y1x1NGY2Zlx1NzVhMVx1N2Y4YVx1NmQwYlx1OTYzM1x1NmMyN1x1NGVmMFx1NzVkMlx1NTE3Ylx1NjgzN1x1NmYzZVx1OTA4MFx1ODE3MFx1NTk5Nlx1NzQ3NiJdLFsiZDI0MCIsIlx1ODkzOCIsOCwiXHU4OTQyXHU4OTQzXHU4OTQ1IiwyNCwiXHU4OTYwIiw1''@;'; put 'put ''LCJcdTg5NjciLDE5LCJcdTg5N2MiXSxbImQyODAiLCJcdTg5N2RcdTg5N2VcdTg5ODBcdTg5ODJcdTg5ODRcdTg5ODVcdTg5ODciLDI2LCJcdTY0NDdcdTVjMjdcdTkwNjVcdTdhOTFcdThjMjNcdTU5ZGFcdTU0YWNcdTgyMDBcdTgzNmZcdTg5ODFcdTgwMDBcdTY5MzBcdTU2NGVcdTgwMzZc''@;'; put 'put ''dTcyMzdcdTkxY2VcdTUxYjZcdTRlNWZcdTk4NzVcdTYzOTZcdTRlMWFcdTUzZjZcdTY2ZjNcdTgxNGJcdTU5MWNcdTZkYjJcdTRlMDBcdTU4ZjlcdTUzM2JcdTYzZDZcdTk0ZjFcdTRmOWRcdTRmMGFcdTg4NjNcdTk4OTBcdTU5MzdcdTkwNTdcdTc5ZmJcdTRlZWFcdTgwZjBcdTc1OTFcdTZj''@;'; put 'put ''ODJcdTViOWNcdTU5ZThcdTVmNWRcdTY5MDVcdTg2ODFcdTUwMWFcdTVkZjJcdTRlNTlcdTc3ZTNcdTRlZTVcdTgyN2FcdTYyOTFcdTY2MTNcdTkwOTFcdTVjNzlcdTRlYmZcdTVmNzlcdTgxYzZcdTkwMzhcdTgwODRcdTc1YWJcdTRlYTZcdTg4ZDRcdTYxMGZcdTZiYzVcdTVmYzZcdTRlNDlc''@;'; put 'put ''dTc2Y2FcdTZlYTJcdThiZTNcdThiYWVcdThjMGFcdThiZDFcdTVmMDJcdTdmZmNcdTdmY2NcdTdlY2VcdTgzMzVcdTgzNmJcdTU2ZTBcdTZiYjdcdTk3ZjNcdTk2MzRcdTU5ZmJcdTU0MWZcdTk0ZjZcdTZkZWJcdTViYzVcdTk5NmVcdTVjMzlcdTVmMTVcdTk2OTAiXSxbImQzNDAiLCJcdTg5''@;'; put 'put ''YTIiLDMwLCJcdTg5YzNcdTg5Y2RcdTg5ZDNcdTg5ZDRcdTg5ZDVcdTg5ZDdcdTg5ZDhcdTg5ZDlcdTg5ZGJcdTg5ZGRcdTg5ZGZcdTg5ZTBcdTg5ZTFcdTg5ZTJcdTg5ZTRcdTg5ZTdcdTg5ZThcdTg5ZTlcdTg5ZWFcdTg5ZWNcdTg5ZWRcdTg5ZWVcdTg5ZjBcdTg5ZjFcdTg5ZjJcdTg5ZjQi''@;'; put 'put ''LDZdLFsiZDM4MCIsIlx1ODlmYiIsNCwiXHU4YTAxIiw1LCJcdThhMDgiLDIxLCJcdTUzNzBcdTgyZjFcdTZhMzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2YzhcdTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0''@;'; put 'put ''ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1YzhcdTVlYjhcdTk2Y2RcdThlMGFcdTg2ZjlcdTU0OGZcdTZjZjNcdTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlc''@;'; put 'put ''dTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFcdTkxYzlcdThiZjFcdTUzYzhcdTVlN2NcdThmYzJcdTZkZTRcdTRlOGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRcdTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRl''@;'; put 'put ''MGVcdTVjN2ZcdTc5YjlcdTViODdcdThiZWRcdTdmYmRcdTczODlcdTU3ZGZcdTgyOGJcdTkwYzFcdTU0MDFcdTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODkiXSxbImQ0NDAiLCJcdThhMWUiLDMxLCJcdThhM2YiLDgsIlx1OGE0OSIsMjFdLFsi''@;'; put 'put ''ZDQ4MCIsIlx1OGE1ZiIsMjUsIlx1OGE3YSIsNiwiXHU2ZDc0XHU1YmQzXHU4OGQ1XHU5ODg0XHU4YzZiXHU5YTZkXHU5ZTMzXHU2ZTBhXHU1MWE0XHU1MTQzXHU1N2EzXHU4ODgxXHU1MzlmXHU2M2Y0XHU4Zjk1XHU1NmVkXHU1NDU4XHU1NzA2XHU3MzNmXHU2ZTkwXHU3ZjE4XHU4ZmRjXHU4''@;'; put 'put ''MmQxXHU2MTNmXHU2MDI4XHU5NjYyXHU2NmYwXHU3ZWE2XHU4ZDhhXHU4ZGMzXHU5NGE1XHU1Y2IzXHU3Y2E0XHU2NzA4XHU2MGE2XHU5NjA1XHU4MDE4XHU0ZTkxXHU5MGU3XHU1MzAwXHU5NjY4XHU1MTQxXHU4ZmQwXHU4NTc0XHU5MTVkXHU2NjU1XHU5N2Y1XHU1YjU1XHU1MzFkXHU3ODM4''@;'; put 'put ''XHU2NzQyXHU2ODNkXHU1NGM5XHU3MDdlXHU1YmIwXHU4ZjdkXHU1MThkXHU1NzI4XHU1NGIxXHU2NTEyXHU2NjgyXHU4ZDVlXHU4ZDQzXHU4MTBmXHU4NDZjXHU5MDZkXHU3Y2RmXHU1MWZmXHU4NWZiXHU2N2EzXHU2NWU5XHU2ZmExXHU4NmE0XHU4ZTgxXHU1NjZhXHU5MDIwXHU3NjgyXHU3''@;'; put 'put ''MDc2XHU3MWU1XHU4ZDIzXHU2MmU5XHU1MjE5XHU2Y2ZkXHU4ZDNjXHU2MDBlXHU1ODllXHU2MThlXHU2NmZlXHU4ZDYwXHU2MjRlXHU1NWIzXHU2ZTIzXHU2NzJkXHU4ZjY3Il0sWyJkNTQwIiwiXHU4YTgxIiw3LCJcdThhOGIiLDcsIlx1OGE5NCIsNDZdLFsiZDU4MCIsIlx1OGFjMyIsMzIs''@;'; put 'put ''Ilx1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1NjU4Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1NjVhOVx1OGY5N1x1NWQyZFx1NWM1NVx1ODYzOFx1NjgwOFx1''@;'; put 'put ''NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2FlMFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4Y1x1NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYyZFx1NjI3ZVx1NmNiY1x1OGQ3NVx1NzE2N1x1N2Y2OVx1NTE0''@;'; put 'put ''Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1OGZkOVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1Njc5NVx1NzViOVx1OGJjYVx1OTcwN1x1NjMyZlx1OTU0N1x1''@;'; put 'put ''OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2M1x1NjUzZiJdLFsiZDY0MCIsIlx1OGFlNCIsMzQsIlx1OGIwOCIsMjddLFsiZDY4MCIsIlx1OGIyNFx1OGIyNVx1OGIyNyIsMzAsIlx1NWUyN1x1NzVjN1x1OTBkMVx1OGJjMVx1''@;'; put 'put ''ODI5ZFx1Njc5ZFx1NjUyZlx1NTQzMVx1ODcxOFx1NzdlNVx1ODBhMlx1ODEwMlx1NmM0MVx1NGU0Ylx1N2VjN1x1ODA0Y1x1NzZmNFx1NjkwZFx1NmI5Nlx1NjI2N1x1NTAzY1x1NGY4NFx1NTc0MFx1NjMwN1x1NmI2Mlx1OGRiZVx1NTNlYVx1NjVlOFx1N2ViOFx1NWZkN1x1NjMxYVx1NjNi''@;'; put 'put ''N1x1ODFmM1x1ODFmNFx1N2Y2ZVx1NWUxY1x1NWNkOVx1NTIzNlx1NjY3YVx1NzllOVx1N2ExYVx1OGQyOFx1NzA5OVx1NzVkNFx1NmVkZVx1NmNiYlx1N2E5Mlx1NGUyZFx1NzZjNVx1NWZlMFx1OTQ5Zlx1ODg3N1x1N2VjOFx1NzljZFx1ODBiZlx1OTFjZFx1NGVmMlx1NGYxN1x1ODIxZlx1''@;'; put 'put ''NTQ2OFx1NWRkZVx1NmQzMlx1OGJjY1x1N2NhNVx1OGY3NFx1ODA5OFx1NWUxYVx1NTQ5Mlx1NzZiMVx1NWI5OVx1NjYzY1x1OWFhNFx1NzNlMFx1NjgyYVx1ODZkYlx1NjczMVx1NzMyYVx1OGJmOFx1OGJkYlx1OTAxMFx1N2FmOVx1NzBkYlx1NzE2ZVx1NjJjNFx1NzdhOVx1NTYzMVx1NGUz''@;'; put 'put ''Ylx1ODQ1N1x1NjdmMVx1NTJhOVx1ODZjMFx1OGQyZVx1OTRmOFx1N2I1MSJdLFsiZDc0MCIsIlx1OGI0NiIsMzEsIlx1OGI2NyIsNCwiXHU4YjZkIiwyNV0sWyJkNzgwIiwiXHU4Yjg3IiwyNCwiXHU4YmFjXHU4YmIxXHU4YmJiXHU4YmM3XHU4YmQwXHU4YmVhXHU4YzA5XHU4YzFlXHU0ZjRm''@;'; put 'put ''XHU2Y2U4XHU3OTVkXHU5YTdiXHU2MjkzXHU3MjJhXHU2MmZkXHU0ZTEzXHU3ODE2XHU4ZjZjXHU2NGIwXHU4ZDVhXHU3YmM2XHU2ODY5XHU1ZTg0XHU4OGM1XHU1OTg2XHU2NDllXHU1OGVlXHU3MmI2XHU2OTBlXHU5NTI1XHU4ZmZkXHU4ZDU4XHU1NzYwXHU3ZjAwXHU4YzA2XHU1MWM2XHU2''@;'; put 'put ''MzQ5XHU2MmQ5XHU1MzUzXHU2ODRjXHU3NDIyXHU4MzAxXHU5MTRjXHU1NTQ0XHU3NzQwXHU3MDdjXHU2ZDRhXHU1MTc5XHU1NGE4XHU4ZDQ0XHU1OWZmXHU2ZWNiXHU2ZGM0XHU1YjVjXHU3ZDJiXHU0ZWQ0XHU3YzdkXHU2ZWQzXHU1YjUwXHU4MWVhXHU2ZTBkXHU1YjU3XHU5YjAzXHU2OGQ1''@;'; put 'put ''XHU4ZTJhXHU1Yjk3XHU3ZWZjXHU2MDNiXHU3ZWI1XHU5MGI5XHU4ZDcwXHU1OTRmXHU2M2NkXHU3OWRmXHU4ZGIzXHU1MzUyXHU2NWNmXHU3OTU2XHU4YmM1XHU5NjNiXHU3ZWM0XHU5NGJiXHU3ZTgyXHU1NjM0XHU5MTg5XHU2NzAwXHU3ZjZhXHU1YzBhXHU5MDc1XHU2NjI4XHU1ZGU2XHU0''@;'; put 'put ''ZjUwXHU2N2RlXHU1MDVhXHU0ZjVjXHU1NzUwXHU1ZWE3Il0sWyJkODQwIiwiXHU4YzM4Iiw4LCJcdThjNDJcdThjNDNcdThjNDRcdThjNDVcdThjNDhcdThjNGFcdThjNGJcdThjNGQiLDcsIlx1OGM1Nlx1OGM1N1x1OGM1OFx1OGM1OVx1OGM1YiIsNSwiXHU4YzYzIiw2LCJcdThjNmMiLDYs''@;'; put 'put ''Ilx1OGM3NFx1OGM3NVx1OGM3Nlx1OGM3N1x1OGM3YiIsNiwiXHU4YzgzXHU4Yzg0XHU4Yzg2XHU4Yzg3Il0sWyJkODgwIiwiXHU4Yzg4XHU4YzhiXHU4YzhkIiw2LCJcdThjOTVcdThjOTZcdThjOTdcdThjOTkiLDIwLCJcdTRlOGRcdTRlMGNcdTUxNDBcdTRlMTBcdTVlZmZcdTUzNDVcdTRl''@;'; put 'put ''MTVcdTRlOThcdTRlMWVcdTliMzJcdTViNmNcdTU2NjlcdTRlMjhcdTc5YmFcdTRlM2ZcdTUzMTVcdTRlNDdcdTU5MmRcdTcyM2JcdTUzNmVcdTZjMTBcdTU2ZGZcdTgwZTRcdTk5OTdcdTZiZDNcdTc3N2VcdTlmMTdcdTRlMzZcdTRlOWZcdTlmMTBcdTRlNWNcdTRlNjlcdTRlOTNcdTgyODhc''@;'; put 'put ''dTViNWJcdTU1NmNcdTU2MGZcdTRlYzRcdTUzOGRcdTUzOWRcdTUzYTNcdTUzYTVcdTUzYWVcdTk3NjVcdThkNWRcdTUzMWFcdTUzZjVcdTUzMjZcdTUzMmVcdTUzM2VcdThkNWNcdTUzNjZcdTUzNjNcdTUyMDJcdTUyMDhcdTUyMGVcdTUyMmRcdTUyMzNcdTUyM2ZcdTUyNDBcdTUyNGNcdTUy''@;'; put 'put ''NWVcdTUyNjFcdTUyNWNcdTg0YWZcdTUyN2RcdTUyODJcdTUyODFcdTUyOTBcdTUyOTNcdTUxODJcdTdmNTRcdTRlYmJcdTRlYzNcdTRlYzlcdTRlYzJcdTRlZThcdTRlZTFcdTRlZWJcdTRlZGVcdTRmMWJcdTRlZjNcdTRmMjJcdTRmNjRcdTRlZjVcdTRmMjVcdTRmMjdcdTRmMDlcdTRmMmJc''@;'; put 'put ''dTRmNWVcdTRmNjdcdTY1MzhcdTRmNWFcdTRmNWQiXSxbImQ5NDAiLCJcdThjYWUiLDYyXSxbImQ5ODAiLCJcdThjZWQiLDMyLCJcdTRmNWZcdTRmNTdcdTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRmN2JcdTRmYWFcdTRmN2NcdTRmYWNc''@;'; put 'put ''dTRmOTRcdTRmZTZcdTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRmZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUwMmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2VcdTUwNDNcdTUwNTVcdTUwNDhcdTUw''@;'; put 'put ''NGVcdTUwNmNcdTUwN2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFcdTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJcdTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVkZmRcdTllYzlcdTk5OThcdTUxODFc''@;'; put 'put ''dTU5MTRcdTUyZjlcdTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgxMTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmMiXSxbImRhNDAiLCJcdThkMGUiLDE0''@;'; put 'put ''LCJcdThkMjBcdThkNTFcdThkNTJcdThkNTdcdThkNWZcdThkNjVcdThkNjhcdThkNjlcdThkNmFcdThkNmNcdThkNmVcdThkNmZcdThkNzFcdThkNzJcdThkNzgiLDgsIlx1OGQ4Mlx1OGQ4M1x1OGQ4Nlx1OGQ4N1x1OGQ4OFx1OGQ4OVx1OGQ4YyIsNCwiXHU4ZDkyXHU4ZDkzXHU4ZDk1Iiw5''@;'; put 'put ''LCJcdThkYTBcdThkYTEiXSxbImRhODAiLCJcdThkYTJcdThkYTQiLDEyLCJcdThkYjJcdThkYjZcdThkYjdcdThkYjlcdThkYmJcdThkYmRcdThkYzBcdThkYzFcdThkYzJcdThkYzVcdThkYzdcdThkYzhcdThkYzlcdThkY2FcdThkY2RcdThkZDBcdThkZDJcdThkZDNcdThkZDRcdTUxYzdc''@;'; put 'put ''dTUxOTZcdTUxYTJcdTUxYTVcdThiYTBcdThiYTZcdThiYTdcdThiYWFcdThiYjRcdThiYjVcdThiYjdcdThiYzJcdThiYzNcdThiY2JcdThiY2ZcdThiY2VcdThiZDJcdThiZDNcdThiZDRcdThiZDZcdThiZDhcdThiZDlcdThiZGNcdThiZGZcdThiZTBcdThiZTRcdThiZThcdThiZTlcdThi''@;'; put 'put ''ZWVcdThiZjBcdThiZjNcdThiZjZcdThiZjlcdThiZmNcdThiZmZcdThjMDBcdThjMDJcdThjMDRcdThjMDdcdThjMGNcdThjMGZcdThjMTFcdThjMTJcdThjMTRcdThjMTVcdThjMTZcdThjMTlcdThjMWJcdThjMThcdThjMWRcdThjMWZcdThjMjBcdThjMjFcdThjMjVcdThjMjdcdThjMmFc''@;'; put 'put ''dThjMmJcdThjMmVcdThjMmZcdThjMzJcdThjMzNcdThjMzVcdThjMzZcdTUzNjlcdTUzN2FcdTk2MWRcdTk2MjJcdTk2MjFcdTk2MzFcdTk2MmFcdTk2M2RcdTk2M2NcdTk2NDJcdTk2NDlcdTk2NTRcdTk2NWZcdTk2NjdcdTk2NmNcdTk2NzJcdTk2NzRcdTk2ODhcdTk2OGRcdTk2OTdcdTk2''@;'; put 'put ''YjBcdTkwOTdcdTkwOWJcdTkwOWRcdTkwOTlcdTkwYWNcdTkwYTFcdTkwYjRcdTkwYjNcdTkwYjZcdTkwYmEiXSxbImRiNDAiLCJcdThkZDVcdThkZDhcdThkZDlcdThkZGNcdThkZTBcdThkZTFcdThkZTJcdThkZTVcdThkZTZcdThkZTdcdThkZTlcdThkZWRcdThkZWVcdThkZjBcdThkZjFc''@;'; put 'put ''dThkZjJcdThkZjRcdThkZjZcdThkZmNcdThkZmUiLDYsIlx1OGUwNlx1OGUwN1x1OGUwOFx1OGUwYlx1OGUwZFx1OGUwZVx1OGUxMFx1OGUxMVx1OGUxMlx1OGUxM1x1OGUxNSIsNywiXHU4ZTIwXHU4ZTIxXHU4ZTI0Iiw0LCJcdThlMmJcdThlMmRcdThlMzBcdThlMzJcdThlMzNcdThlMzRc''@;'; put 'put ''dThlMzZcdThlMzdcdThlMzhcdThlM2JcdThlM2NcdThlM2UiXSxbImRiODAiLCJcdThlM2ZcdThlNDNcdThlNDVcdThlNDZcdThlNGMiLDQsIlx1OGU1MyIsNSwiXHU4ZTVhIiwxMSwiXHU4ZTY3XHU4ZTY4XHU4ZTZhXHU4ZTZiXHU4ZTZlXHU4ZTcxXHU5MGI4XHU5MGIwXHU5MGNmXHU5MGM1''@;'; put 'put ''XHU5MGJlXHU5MGQwXHU5MGM0XHU5MGM3XHU5MGQzXHU5MGU2XHU5MGUyXHU5MGRjXHU5MGQ3XHU5MGRiXHU5MGViXHU5MGVmXHU5MGZlXHU5MTA0XHU5MTIyXHU5MTFlXHU5MTIzXHU5MTMxXHU5MTJmXHU5MTM5XHU5MTQzXHU5MTQ2XHU1MjBkXHU1OTQyXHU1MmEyXHU1MmFjXHU1MmFkXHU1''@;'; put 'put ''MmJlXHU1NGZmXHU1MmQwXHU1MmQ2XHU1MmYwXHU1M2RmXHU3MWVlXHU3N2NkXHU1ZWY0XHU1MWY1XHU1MWZjXHU5YjJmXHU1M2I2XHU1ZjAxXHU3NTVhXHU1ZGVmXHU1NzRjXHU1N2E5XHU1N2ExXHU1ODdlXHU1OGJjXHU1OGM1XHU1OGQxXHU1NzI5XHU1NzJjXHU1NzJhXHU1NzMzXHU1NzM5''@;'; put 'put ''XHU1NzJlXHU1NzJmXHU1NzVjXHU1NzNiXHU1NzQyXHU1NzY5XHU1Nzg1XHU1NzZiXHU1Nzg2XHU1NzdjXHU1NzdiXHU1NzY4XHU1NzZkXHU1Nzc2XHU1NzczXHU1N2FkXHU1N2E0XHU1NzhjXHU1N2IyXHU1N2NmXHU1N2E3XHU1N2I0XHU1NzkzXHU1N2EwXHU1N2Q1XHU1N2Q4XHU1N2RhXHU1''@;'; put 'put ''N2Q5XHU1N2QyXHU1N2I4XHU1N2Y0XHU1N2VmXHU1N2Y4XHU1N2U0XHU1N2RkIl0sWyJkYzQwIiwiXHU4ZTczXHU4ZTc1XHU4ZTc3Iiw0LCJcdThlN2RcdThlN2VcdThlODBcdThlODJcdThlODNcdThlODRcdThlODZcdThlODgiLDYsIlx1OGU5MVx1OGU5Mlx1OGU5M1x1OGU5NSIsNiwiXHU4''@;'; put 'put ''ZTlkXHU4ZTlmIiwxMSwiXHU4ZWFkXHU4ZWFlXHU4ZWIwXHU4ZWIxXHU4ZWIzIiw2LCJcdThlYmIiLDddLFsiZGM4MCIsIlx1OGVjMyIsMTAsIlx1OGVjZiIsMjEsIlx1NTgwYlx1NTgwZFx1NTdmZFx1NTdlZFx1NTgwMFx1NTgxZVx1NTgxOVx1NTg0NFx1NTgyMFx1NTg2NVx1NTg2Y1x1NTg4''@;'; put 'put ''MVx1NTg4OVx1NTg5YVx1NTg4MFx1OTlhOFx1OWYxOVx1NjFmZlx1ODI3OVx1ODI3ZFx1ODI3Zlx1ODI4Zlx1ODI4YVx1ODJhOFx1ODI4NFx1ODI4ZVx1ODI5MVx1ODI5N1x1ODI5OVx1ODJhYlx1ODJiOFx1ODJiZVx1ODJiMFx1ODJjOFx1ODJjYVx1ODJlM1x1ODI5OFx1ODJiN1x1ODJhZVx1''@;'; put 'put ''ODJjYlx1ODJjY1x1ODJjMVx1ODJhOVx1ODJiNFx1ODJhMVx1ODJhYVx1ODI5Zlx1ODJjNFx1ODJjZVx1ODJhNFx1ODJlMVx1ODMwOVx1ODJmN1x1ODJlNFx1ODMwZlx1ODMwN1x1ODJkY1x1ODJmNFx1ODJkMlx1ODJkOFx1ODMwY1x1ODJmYlx1ODJkM1x1ODMxMVx1ODMxYVx1ODMwNlx1ODMx''@;'; put 'put ''NFx1ODMxNVx1ODJlMFx1ODJkNVx1ODMxY1x1ODM1MVx1ODM1Ylx1ODM1Y1x1ODMwOFx1ODM5Mlx1ODMzY1x1ODMzNFx1ODMzMVx1ODM5Ylx1ODM1ZVx1ODMyZlx1ODM0Zlx1ODM0N1x1ODM0M1x1ODM1Zlx1ODM0MFx1ODMxN1x1ODM2MFx1ODMyZFx1ODMzYVx1ODMzM1x1ODM2Nlx1ODM2NSJd''@;'; put 'put ''LFsiZGQ0MCIsIlx1OGVlNSIsNjJdLFsiZGQ4MCIsIlx1OGYyNCIsMzIsIlx1ODM2OFx1ODMxYlx1ODM2OVx1ODM2Y1x1ODM2YVx1ODM2ZFx1ODM2ZVx1ODNiMFx1ODM3OFx1ODNiM1x1ODNiNFx1ODNhMFx1ODNhYVx1ODM5M1x1ODM5Y1x1ODM4NVx1ODM3Y1x1ODNiNlx1ODNhOVx1ODM3ZFx1''@;'; put 'put ''ODNiOFx1ODM3Ylx1ODM5OFx1ODM5ZVx1ODNhOFx1ODNiYVx1ODNiY1x1ODNjMVx1ODQwMVx1ODNlNVx1ODNkOFx1NTgwN1x1ODQxOFx1ODQwYlx1ODNkZFx1ODNmZFx1ODNkNlx1ODQxY1x1ODQzOFx1ODQxMVx1ODQwNlx1ODNkNFx1ODNkZlx1ODQwZlx1ODQwM1x1ODNmOFx1ODNmOVx1ODNl''@;'; put 'put ''YVx1ODNjNVx1ODNjMFx1ODQyNlx1ODNmMFx1ODNlMVx1ODQ1Y1x1ODQ1MVx1ODQ1YVx1ODQ1OVx1ODQ3M1x1ODQ4N1x1ODQ4OFx1ODQ3YVx1ODQ4OVx1ODQ3OFx1ODQzY1x1ODQ0Nlx1ODQ2OVx1ODQ3Nlx1ODQ4Y1x1ODQ4ZVx1ODQzMVx1ODQ2ZFx1ODRjMVx1ODRjZFx1ODRkMFx1ODRlNlx1''@;'; put 'put ''ODRiZFx1ODRkM1x1ODRjYVx1ODRiZlx1ODRiYVx1ODRlMFx1ODRhMVx1ODRiOVx1ODRiNFx1ODQ5N1x1ODRlNVx1ODRlM1x1ODUwY1x1NzUwZFx1ODUzOFx1ODRmMFx1ODUzOVx1ODUxZlx1ODUzYSJdLFsiZGU0MCIsIlx1OGY0NSIsMzIsIlx1OGY2YVx1OGY4MFx1OGY4Y1x1OGY5Mlx1OGY5''@;'; put 'put ''ZFx1OGZhMFx1OGZhMVx1OGZhMlx1OGZhNFx1OGZhNVx1OGZhNlx1OGZhN1x1OGZhYVx1OGZhY1x1OGZhZFx1OGZhZVx1OGZhZlx1OGZiMlx1OGZiM1x1OGZiNFx1OGZiNVx1OGZiN1x1OGZiOFx1OGZiYVx1OGZiYlx1OGZiY1x1OGZiZlx1OGZjMFx1OGZjM1x1OGZjNiJdLFsiZGU4MCIsIlx1''@;'; put 'put ''OGZjOSIsNCwiXHU4ZmNmXHU4ZmQyXHU4ZmQ2XHU4ZmQ3XHU4ZmRhXHU4ZmUwXHU4ZmUxXHU4ZmUzXHU4ZmU3XHU4ZmVjXHU4ZmVmXHU4ZmYxXHU4ZmYyXHU4ZmY0XHU4ZmY1XHU4ZmY2XHU4ZmZhXHU4ZmZiXHU4ZmZjXHU4ZmZlXHU4ZmZmXHU5MDA3XHU5MDA4XHU5MDBjXHU5MDBlXHU5MDEz''@;'; put 'put ''XHU5MDE1XHU5MDE4XHU4NTU2XHU4NTNiXHU4NGZmXHU4NGZjXHU4NTU5XHU4NTQ4XHU4NTY4XHU4NTY0XHU4NTVlXHU4NTdhXHU3N2EyXHU4NTQzXHU4NTcyXHU4NTdiXHU4NWE0XHU4NWE4XHU4NTg3XHU4NThmXHU4NTc5XHU4NWFlXHU4NTljXHU4NTg1XHU4NWI5XHU4NWI3XHU4NWIwXHU4''@;'; put 'put ''NWQzXHU4NWMxXHU4NWRjXHU4NWZmXHU4NjI3XHU4NjA1XHU4NjI5XHU4NjE2XHU4NjNjXHU1ZWZlXHU1ZjA4XHU1OTNjXHU1OTQxXHU4MDM3XHU1OTU1XHU1OTVhXHU1OTU4XHU1MzBmXHU1YzIyXHU1YzI1XHU1YzJjXHU1YzM0XHU2MjRjXHU2MjZhXHU2MjlmXHU2MmJiXHU2MmNhXHU2MmRh''@;'; put 'put ''XHU2MmQ3XHU2MmVlXHU2MzIyXHU2MmY2XHU2MzM5XHU2MzRiXHU2MzQzXHU2M2FkXHU2M2Y2XHU2MzcxXHU2MzdhXHU2MzhlXHU2M2I0XHU2MzZkXHU2M2FjXHU2MzhhXHU2MzY5XHU2M2FlXHU2M2JjXHU2M2YyXHU2M2Y4XHU2M2UwXHU2M2ZmXHU2M2M0XHU2M2RlXHU2M2NlXHU2NDUyXHU2''@;'; put 'put ''M2M2XHU2M2JlXHU2NDQ1XHU2NDQxXHU2NDBiXHU2NDFiXHU2NDIwXHU2NDBjXHU2NDI2XHU2NDIxXHU2NDVlXHU2NDg0XHU2NDZkXHU2NDk2Il0sWyJkZjQwIiwiXHU5MDE5XHU5MDFjXHU5MDIzXHU5MDI0XHU5MDI1XHU5MDI3Iiw1LCJcdTkwMzAiLDQsIlx1OTAzN1x1OTAzOVx1OTAzYVx1''@;'; put 'put ''OTAzZFx1OTAzZlx1OTA0MFx1OTA0M1x1OTA0NVx1OTA0Nlx1OTA0OCIsNCwiXHU5MDRlXHU5MDU0XHU5MDU1XHU5MDU2XHU5MDU5XHU5MDVhXHU5MDVjIiw1LCJcdTkwNjRcdTkwNjZcdTkwNjdcdTkwNjlcdTkwNmFcdTkwNmJcdTkwNmNcdTkwNmYiLDQsIlx1OTA3NiIsNiwiXHU5MDdlXHU5''@;'; put 'put ''MDgxIl0sWyJkZjgwIiwiXHU5MDg0XHU5MDg1XHU5MDg2XHU5MDg3XHU5MDg5XHU5MDhhXHU5MDhjIiw0LCJcdTkwOTJcdTkwOTRcdTkwOTZcdTkwOThcdTkwOWFcdTkwOWNcdTkwOWVcdTkwOWZcdTkwYTBcdTkwYTRcdTkwYTVcdTkwYTdcdTkwYThcdTkwYTlcdTkwYWJcdTkwYWRcdTkwYjJc''@;'; put 'put ''dTkwYjdcdTkwYmNcdTkwYmRcdTkwYmZcdTkwYzBcdTY0N2FcdTY0YjdcdTY0YjhcdTY0OTlcdTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVmMTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUz''@;'; put 'put ''ZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJcdTU0NTJcdTU0NTNcdTU0NTRcdTU0NTZcdTU0NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJcdTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRc''@;'; put 'put ''dTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0YTZcdTU0ZDNcdTU0ZDRcdTU0NzJcdTU0YTNcdTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0''@;'; put 'put ''ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFcdTU1MjdcdTU1MmFcdTU1NjdcdTU1OGZcdTU1YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2MiXSxbImUwNDAiLCJcdTkwYzJcdTkwYzNcdTkwYzZcdTkwYzhcdTkwYzlcdTkwY2JcdTkwY2NcdTkwY2RcdTkwZDJc''@;'; put 'put ''dTkwZDRcdTkwZDVcdTkwZDZcdTkwZDhcdTkwZDlcdTkwZGFcdTkwZGVcdTkwZGZcdTkwZTBcdTkwZTNcdTkwZTRcdTkwZTVcdTkwZTlcdTkwZWFcdTkwZWNcdTkwZWVcdTkwZjBcdTkwZjFcdTkwZjJcdTkwZjNcdTkwZjVcdTkwZjZcdTkwZjdcdTkwZjlcdTkwZmFcdTkwZmJcdTkwZmNcdTkw''@;'; put 'put ''ZmZcdTkxMDBcdTkxMDFcdTkxMDNcdTkxMDUiLDE5LCJcdTkxMWFcdTkxMWJcdTkxMWMiXSxbImUwODAiLCJcdTkxMWRcdTkxMWZcdTkxMjBcdTkxMjFcdTkxMjQiLDEwLCJcdTkxMzBcdTkxMzIiLDYsIlx1OTEzYSIsOCwiXHU5MTQ0XHU1NTM3XHU1NTU2XHU1NTc1XHU1NTc2XHU1NTc3XHU1''@;'; put 'put ''NTMzXHU1NTMwXHU1NTVjXHU1NThiXHU1NWQyXHU1NTgzXHU1NWIxXHU1NWI5XHU1NTg4XHU1NTgxXHU1NTlmXHU1NTdlXHU1NWQ2XHU1NTkxXHU1NTdiXHU1NWRmXHU1NWJkXHU1NWJlXHU1NTk0XHU1NTk5XHU1NWVhXHU1NWY3XHU1NWM5XHU1NjFmXHU1NWQxXHU1NWViXHU1NWVjXHU1NWQ0''@;'; put 'put ''XHU1NWU2XHU1NWRkXHU1NWM0XHU1NWVmXHU1NWU1XHU1NWYyXHU1NWYzXHU1NWNjXHU1NWNkXHU1NWU4XHU1NWY1XHU1NWU0XHU4Zjk0XHU1NjFlXHU1NjA4XHU1NjBjXHU1NjAxXHU1NjI0XHU1NjIzXHU1NWZlXHU1NjAwXHU1NjI3XHU1NjJkXHU1NjU4XHU1NjM5XHU1NjU3XHU1NjJjXHU1''@;'; put 'put ''NjRkXHU1NjYyXHU1NjU5XHU1NjVjXHU1NjRjXHU1NjU0XHU1Njg2XHU1NjY0XHU1NjcxXHU1NjZiXHU1NjdiXHU1NjdjXHU1Njg1XHU1NjkzXHU1NmFmXHU1NmQ0XHU1NmQ3XHU1NmRkXHU1NmUxXHU1NmY1XHU1NmViXHU1NmY5XHU1NmZmXHU1NzA0XHU1NzBhXHU1NzA5XHU1NzFjXHU1ZTBm''@;'; put 'put ''XHU1ZTE5XHU1ZTE0XHU1ZTExXHU1ZTMxXHU1ZTNiXHU1ZTNjIl0sWyJlMTQwIiwiXHU5MTQ1XHU5MTQ3XHU5MTQ4XHU5MTUxXHU5MTUzXHU5MTU0XHU5MTU1XHU5MTU2XHU5MTU4XHU5MTU5XHU5MTViXHU5MTVjXHU5MTVmXHU5MTYwXHU5MTY2XHU5MTY3XHU5MTY4XHU5MTZiXHU5MTZkXHU5''@;'; put 'put ''MTczXHU5MTdhXHU5MTdiXHU5MTdjXHU5MTgwIiw0LCJcdTkxODZcdTkxODhcdTkxOGFcdTkxOGVcdTkxOGZcdTkxOTMiLDYsIlx1OTE5YyIsNSwiXHU5MWE0Iiw1LCJcdTkxYWJcdTkxYWNcdTkxYjBcdTkxYjFcdTkxYjJcdTkxYjNcdTkxYjZcdTkxYjdcdTkxYjhcdTkxYjlcdTkxYmIiXSxb''@;'; put 'put ''ImUxODAiLCJcdTkxYmMiLDEwLCJcdTkxYzhcdTkxY2JcdTkxZDBcdTkxZDIiLDksIlx1OTFkZCIsOCwiXHU1ZTM3XHU1ZTQ0XHU1ZTU0XHU1ZTViXHU1ZTVlXHU1ZTYxXHU1YzhjXHU1YzdhXHU1YzhkXHU1YzkwXHU1Yzk2XHU1Yzg4XHU1Yzk4XHU1Yzk5XHU1YzkxXHU1YzlhXHU1YzljXHU1''@;'; put 'put ''Y2I1XHU1Y2EyXHU1Y2JkXHU1Y2FjXHU1Y2FiXHU1Y2IxXHU1Y2EzXHU1Y2MxXHU1Y2I3XHU1Y2M0XHU1Y2QyXHU1Y2U0XHU1Y2NiXHU1Y2U1XHU1ZDAyXHU1ZDAzXHU1ZDI3XHU1ZDI2XHU1ZDJlXHU1ZDI0XHU1ZDFlXHU1ZDA2XHU1ZDFiXHU1ZDU4XHU1ZDNlXHU1ZDM0XHU1ZDNkXHU1ZDZj''@;'; put 'put ''XHU1ZDViXHU1ZDZmXHU1ZDVkXHU1ZDZiXHU1ZDRiXHU1ZDRhXHU1ZDY5XHU1ZDc0XHU1ZDgyXHU1ZDk5XHU1ZDlkXHU4YzczXHU1ZGI3XHU1ZGM1XHU1ZjczXHU1Zjc3XHU1ZjgyXHU1Zjg3XHU1Zjg5XHU1ZjhjXHU1Zjk1XHU1Zjk5XHU1ZjljXHU1ZmE4XHU1ZmFkXHU1ZmI1XHU1ZmJjXHU4''@;'; put 'put ''ODYyXHU1ZjYxXHU3MmFkXHU3MmIwXHU3MmI0XHU3MmI3XHU3MmI4XHU3MmMzXHU3MmMxXHU3MmNlXHU3MmNkXHU3MmQyXHU3MmU4XHU3MmVmXHU3MmU5XHU3MmYyXHU3MmY0XHU3MmY3XHU3MzAxXHU3MmYzXHU3MzAzXHU3MmZhIl0sWyJlMjQwIiwiXHU5MWU2Iiw2Ml0sWyJlMjgwIiwiXHU5''@;'; put 'put ''MjI1IiwzMiwiXHU3MmZiXHU3MzE3XHU3MzEzXHU3MzIxXHU3MzBhXHU3MzFlXHU3MzFkXHU3MzE1XHU3MzIyXHU3MzM5XHU3MzI1XHU3MzJjXHU3MzM4XHU3MzMxXHU3MzUwXHU3MzRkXHU3MzU3XHU3MzYwXHU3MzZjXHU3MzZmXHU3MzdlXHU4MjFiXHU1OTI1XHU5OGU3XHU1OTI0XHU1OTAy''@;'; put 'put ''XHU5OTYzXHU5OTY3Iiw1LCJcdTk5NzRcdTk5NzdcdTk5N2RcdTk5ODBcdTk5ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFcdTVlOGJcdTVlOTZcdTVlYTVcdTVlYTBcdTVlYjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVl''@;'; put 'put ''ZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRcdTVmYzlcdTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVmZWFcdTVmZWRcdTVmZjhcdTYwMTlcdTYwMzVcdTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlc''@;'; put 'put ''dTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYwN2JcdTYwN2FcdTYwNDIiXSxbImUzNDAiLCJcdTkyNDYiLDQ1LCJcdTkyNzUiLDE2XSxbImUzODAiLCJcdTkyODYiLDcsIlx1OTI4ZiIsMjQsIlx1NjA2YVx1NjA3ZFx1NjA5Nlx1NjA5YVx1NjBhZFx1NjA5ZFx1NjA4M1x1''@;'; put 'put ''NjA5Mlx1NjA4Y1x1NjA5Ylx1NjBlY1x1NjBiYlx1NjBiMVx1NjBkZFx1NjBkOFx1NjBjNlx1NjBkYVx1NjBiNFx1NjEyMFx1NjEyNlx1NjExNVx1NjEyM1x1NjBmNFx1NjEwMFx1NjEwZVx1NjEyYlx1NjE0YVx1NjE3NVx1NjFhY1x1NjE5NFx1NjFhN1x1NjFiN1x1NjFkNFx1NjFmNVx1NWZk''@;'; put 'put ''ZFx1OTZiM1x1OTVlOVx1OTVlYlx1OTVmMVx1OTVmM1x1OTVmNVx1OTVmNlx1OTVmY1x1OTVmZVx1OTYwM1x1OTYwNFx1OTYwNlx1OTYwOFx1OTYwYVx1OTYwYlx1OTYwY1x1OTYwZFx1OTYwZlx1OTYxMlx1OTYxNVx1OTYxNlx1OTYxN1x1OTYxOVx1OTYxYVx1NGUyY1x1NzIzZlx1NjIxNVx1''@;'; put 'put ''NmMzNVx1NmM1NFx1NmM1Y1x1NmM0YVx1NmNhM1x1NmM4NVx1NmM5MFx1NmM5NFx1NmM4Y1x1NmM2OFx1NmM2OVx1NmM3NFx1NmM3Nlx1NmM4Nlx1NmNhOVx1NmNkMFx1NmNkNFx1NmNhZFx1NmNmN1x1NmNmOFx1NmNmMVx1NmNkN1x1NmNiMlx1NmNlMFx1NmNkNlx1NmNmYVx1NmNlYlx1NmNl''@;'; put 'put ''ZVx1NmNiMVx1NmNkM1x1NmNlZlx1NmNmZSJdLFsiZTQ0MCIsIlx1OTJhOCIsNSwiXHU5MmFmIiwyNCwiXHU5MmM5IiwzMV0sWyJlNDgwIiwiXHU5MmU5IiwzMiwiXHU2ZDM5XHU2ZDI3XHU2ZDBjXHU2ZDQzXHU2ZDQ4XHU2ZDA3XHU2ZDA0XHU2ZDE5XHU2ZDBlXHU2ZDJiXHU2ZDRkXHU2ZDJl''@;'; put 'put ''XHU2ZDM1XHU2ZDFhXHU2ZDRmXHU2ZDUyXHU2ZDU0XHU2ZDMzXHU2ZDkxXHU2ZDZmXHU2ZDllXHU2ZGEwXHU2ZDVlXHU2ZDkzXHU2ZDk0XHU2ZDVjXHU2ZDYwXHU2ZDdjXHU2ZDYzXHU2ZTFhXHU2ZGM3XHU2ZGM1XHU2ZGRlXHU2ZTBlXHU2ZGJmXHU2ZGUwXHU2ZTExXHU2ZGU2XHU2ZGRkXHU2''@;'; put 'put ''ZGQ5XHU2ZTE2XHU2ZGFiXHU2ZTBjXHU2ZGFlXHU2ZTJiXHU2ZTZlXHU2ZTRlXHU2ZTZiXHU2ZWIyXHU2ZTVmXHU2ZTg2XHU2ZTUzXHU2ZTU0XHU2ZTMyXHU2ZTI1XHU2ZTQ0XHU2ZWRmXHU2ZWIxXHU2ZTk4XHU2ZWUwXHU2ZjJkXHU2ZWUyXHU2ZWE1XHU2ZWE3XHU2ZWJkXHU2ZWJiXHU2ZWI3''@;'; put 'put ''XHU2ZWQ3XHU2ZWI0XHU2ZWNmXHU2ZThmXHU2ZWMyXHU2ZTlmXHU2ZjYyXHU2ZjQ2XHU2ZjQ3XHU2ZjI0XHU2ZjE1XHU2ZWY5XHU2ZjJmXHU2ZjM2XHU2ZjRiXHU2Zjc0XHU2ZjJhXHU2ZjA5XHU2ZjI5XHU2Zjg5XHU2ZjhkXHU2ZjhjXHU2Zjc4XHU2ZjcyXHU2ZjdjXHU2ZjdhXHU2ZmQxIl0s''@;'; put 'put ''WyJlNTQwIiwiXHU5MzBhIiw1MSwiXHU5MzNmIiwxMF0sWyJlNTgwIiwiXHU5MzRhIiwzMSwiXHU5MzZiXHU2ZmM5XHU2ZmE3XHU2ZmI5XHU2ZmI2XHU2ZmMyXHU2ZmUxXHU2ZmVlXHU2ZmRlXHU2ZmUwXHU2ZmVmXHU3MDFhXHU3MDIzXHU3MDFiXHU3MDM5XHU3MDM1XHU3MDRmXHU3MDVlXHU1''@;'; put 'put ''YjgwXHU1Yjg0XHU1Yjk1XHU1YjkzXHU1YmE1XHU1YmI4XHU3NTJmXHU5YTllXHU2NDM0XHU1YmU0XHU1YmVlXHU4OTMwXHU1YmYwXHU4ZTQ3XHU4YjA3XHU4ZmI2XHU4ZmQzXHU4ZmQ1XHU4ZmU1XHU4ZmVlXHU4ZmU0XHU4ZmU5XHU4ZmU2XHU4ZmYzXHU4ZmU4XHU5MDA1XHU5MDA0XHU5MDBi''@;'; put 'put ''XHU5MDI2XHU5MDExXHU5MDBkXHU5MDE2XHU5MDIxXHU5MDM1XHU5MDM2XHU5MDJkXHU5MDJmXHU5MDQ0XHU5MDUxXHU5MDUyXHU5MDUwXHU5MDY4XHU5MDU4XHU5MDYyXHU5MDViXHU2NmI5XHU5MDc0XHU5MDdkXHU5MDgyXHU5MDg4XHU5MDgzXHU5MDhiXHU1ZjUwXHU1ZjU3XHU1ZjU2XHU1''@;'; put 'put ''ZjU4XHU1YzNiXHU1NGFiXHU1YzUwXHU1YzU5XHU1YjcxXHU1YzYzXHU1YzY2XHU3ZmJjXHU1ZjJhXHU1ZjI5XHU1ZjJkXHU4Mjc0XHU1ZjNjXHU5YjNiXHU1YzZlXHU1OTgxXHU1OTgzXHU1OThkXHU1OWE5XHU1OWFhXHU1OWEzIl0sWyJlNjQwIiwiXHU5MzZjIiwzNCwiXHU5MzkwIiwyN10s''@;'; put 'put ''WyJlNjgwIiwiXHU5M2FjIiwyOSwiXHU5M2NiXHU5M2NjXHU5M2NkXHU1OTk3XHU1OWNhXHU1OWFiXHU1OTllXHU1OWE0XHU1OWQyXHU1OWIyXHU1OWFmXHU1OWQ3XHU1OWJlXHU1YTA1XHU1YTA2XHU1OWRkXHU1YTA4XHU1OWUzXHU1OWQ4XHU1OWY5XHU1YTBjXHU1YTA5XHU1YTMyXHU1YTM0''@;'; put 'put ''XHU1YTExXHU1YTIzXHU1YTEzXHU1YTQwXHU1YTY3XHU1YTRhXHU1YTU1XHU1YTNjXHU1YTYyXHU1YTc1XHU4MGVjXHU1YWFhXHU1YTliXHU1YTc3XHU1YTdhXHU1YWJlXHU1YWViXHU1YWIyXHU1YWQyXHU1YWQ0XHU1YWI4XHU1YWUwXHU1YWUzXHU1YWYxXHU1YWQ2XHU1YWU2XHU1YWQ4XHU1''@;'; put 'put ''YWRjXHU1YjA5XHU1YjE3XHU1YjE2XHU1YjMyXHU1YjM3XHU1YjQwXHU1YzE1XHU1YzFjXHU1YjVhXHU1YjY1XHU1YjczXHU1YjUxXHU1YjUzXHU1YjYyXHU5YTc1XHU5YTc3XHU5YTc4XHU5YTdhXHU5YTdmXHU5YTdkXHU5YTgwXHU5YTgxXHU5YTg1XHU5YTg4XHU5YThhXHU5YTkwXHU5YTky''@;'; put 'put ''XHU5YTkzXHU5YTk2XHU5YTk4XHU5YTliXHU5YTljXHU5YTlkXHU5YTlmXHU5YWEwXHU5YWEyXHU5YWEzXHU5YWE1XHU5YWE3XHU3ZTlmXHU3ZWExXHU3ZWEzXHU3ZWE1XHU3ZWE4XHU3ZWE5Il0sWyJlNzQwIiwiXHU5M2NlIiw3LCJcdTkzZDciLDU0XSxbImU3ODAiLCJcdTk0MGUiLDMyLCJc''@;'; put 'put ''dTdlYWRcdTdlYjBcdTdlYmVcdTdlYzBcdTdlYzFcdTdlYzJcdTdlYzlcdTdlY2JcdTdlY2NcdTdlZDBcdTdlZDRcdTdlZDdcdTdlZGJcdTdlZTBcdTdlZTFcdTdlZThcdTdlZWJcdTdlZWVcdTdlZWZcdTdlZjFcdTdlZjJcdTdmMGRcdTdlZjZcdTdlZmFcdTdlZmJcdTdlZmVcdTdmMDFcdTdm''@;'; put 'put ''MDJcdTdmMDNcdTdmMDdcdTdmMDhcdTdmMGJcdTdmMGNcdTdmMGZcdTdmMTFcdTdmMTJcdTdmMTdcdTdmMTlcdTdmMWNcdTdmMWJcdTdmMWZcdTdmMjEiLDYsIlx1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZiIsNCwiXHU3ZjM1XHU1ZTdhXHU3NTdmXHU1ZGRiXHU3NTNlXHU5MDk1XHU3''@;'; put 'put ''MzhlXHU3MzkxXHU3M2FlXHU3M2EyXHU3MzlmXHU3M2NmXHU3M2MyXHU3M2QxXHU3M2I3XHU3M2IzXHU3M2MwXHU3M2M5XHU3M2M4XHU3M2U1XHU3M2Q5XHU5ODdjXHU3NDBhXHU3M2U5XHU3M2U3XHU3M2RlXHU3M2JhXHU3M2YyXHU3NDBmXHU3NDJhXHU3NDViXHU3NDI2XHU3NDI1XHU3NDI4''@;'; put 'put ''XHU3NDMwXHU3NDJlXHU3NDJjIl0sWyJlODQwIiwiXHU5NDJmIiwxNCwiXHU5NDNmIiw0MywiXHU5NDZjXHU5NDZkXHU5NDZlXHU5NDZmIl0sWyJlODgwIiwiXHU5NDcwIiwyMCwiXHU5NDkxXHU5NDk2XHU5NDk4XHU5NGM3XHU5NGNmXHU5NGQzXHU5NGQ0XHU5NGRhXHU5NGU2XHU5NGZiXHU5''@;'; put 'put ''NTFjXHU5NTIwXHU3NDFiXHU3NDFhXHU3NDQxXHU3NDVjXHU3NDU3XHU3NDU1XHU3NDU5XHU3NDc3XHU3NDZkXHU3NDdlXHU3NDljXHU3NDhlXHU3NDgwXHU3NDgxXHU3NDg3XHU3NDhiXHU3NDllXHU3NGE4XHU3NGE5XHU3NDkwXHU3NGE3XHU3NGQyXHU3NGJhXHU5N2VhXHU5N2ViXHU5N2Vj''@;'; put 'put ''XHU2NzRjXHU2NzUzXHU2NzVlXHU2NzQ4XHU2NzY5XHU2N2E1XHU2Nzg3XHU2NzZhXHU2NzczXHU2Nzk4XHU2N2E3XHU2Nzc1XHU2N2E4XHU2NzllXHU2N2FkXHU2NzhiXHU2Nzc3XHU2NzdjXHU2N2YwXHU2ODA5XHU2N2Q4XHU2ODBhXHU2N2U5XHU2N2IwXHU2ODBjXHU2N2Q5XHU2N2I1XHU2''@;'; put 'put ''N2RhXHU2N2IzXHU2N2RkXHU2ODAwXHU2N2MzXHU2N2I4XHU2N2UyXHU2ODBlXHU2N2MxXHU2N2ZkXHU2ODMyXHU2ODMzXHU2ODYwXHU2ODYxXHU2ODRlXHU2ODYyXHU2ODQ0XHU2ODY0XHU2ODgzXHU2ODFkXHU2ODU1XHU2ODY2XHU2ODQxXHU2ODY3XHU2ODQwXHU2ODNlXHU2ODRhXHU2ODQ5''@;'; put 'put ''XHU2ODI5XHU2OGI1XHU2ODhmXHU2ODc0XHU2ODc3XHU2ODkzXHU2ODZiXHU2OGMyXHU2OTZlXHU2OGZjXHU2OTFmXHU2OTIwXHU2OGY5Il0sWyJlOTQwIiwiXHU5NTI3XHU5NTMzXHU5NTNkXHU5NTQzXHU5NTQ4XHU5NTRiXHU5NTU1XHU5NTVhXHU5NTYwXHU5NTZlXHU5NTc0XHU5NTc1XHU5''@;'; put 'put ''NTc3Iiw3LCJcdTk1ODAiLDQyXSxbImU5ODAiLCJcdTk1YWIiLDMyLCJcdTY5MjRcdTY4ZjBcdTY5MGJcdTY5MDFcdTY5NTdcdTY4ZTNcdTY5MTBcdTY5NzFcdTY5MzlcdTY5NjBcdTY5NDJcdTY5NWRcdTY5ODRcdTY5NmJcdTY5ODBcdTY5OThcdTY5NzhcdTY5MzRcdTY5Y2NcdTY5ODdcdTY5''@;'; put 'put ''ODhcdTY5Y2VcdTY5ODlcdTY5NjZcdTY5NjNcdTY5NzlcdTY5OWJcdTY5YTdcdTY5YmJcdTY5YWJcdTY5YWRcdTY5ZDRcdTY5YjFcdTY5YzFcdTY5Y2FcdTY5ZGZcdTY5OTVcdTY5ZTBcdTY5OGRcdTY5ZmZcdTZhMmZcdTY5ZWRcdTZhMTdcdTZhMThcdTZhNjVcdTY5ZjJcdTZhNDRcdTZhM2Vc''@;'; put 'put ''dTZhYTBcdTZhNTBcdTZhNWJcdTZhMzVcdTZhOGVcdTZhNzlcdTZhM2RcdTZhMjhcdTZhNThcdTZhN2NcdTZhOTFcdTZhOTBcdTZhYTlcdTZhOTdcdTZhYWJcdTczMzdcdTczNTJcdTZiODFcdTZiODJcdTZiODdcdTZiODRcdTZiOTJcdTZiOTNcdTZiOGRcdTZiOWFcdTZiOWJcdTZiYTFcdTZi''@;'; put 'put ''YWFcdThmNmJcdThmNmRcdThmNzFcdThmNzJcdThmNzNcdThmNzVcdThmNzZcdThmNzhcdThmNzdcdThmNzlcdThmN2FcdThmN2NcdThmN2VcdThmODFcdThmODJcdThmODRcdThmODdcdThmOGIiXSxbImVhNDAiLCJcdTk1Y2MiLDI3LCJcdTk1ZWNcdTk1ZmZcdTk2MDdcdTk2MTNcdTk2MThc''@;'; put 'put ''dTk2MWJcdTk2MWVcdTk2MjBcdTk2MjMiLDYsIlx1OTYyYlx1OTYyY1x1OTYyZFx1OTYyZlx1OTYzMFx1OTYzN1x1OTYzOFx1OTYzOVx1OTYzYVx1OTYzZVx1OTY0MVx1OTY0M1x1OTY0YVx1OTY0ZVx1OTY0Zlx1OTY1MVx1OTY1Mlx1OTY1M1x1OTY1Nlx1OTY1NyJdLFsiZWE4MCIsIlx1OTY1''@;'; put 'put ''OFx1OTY1OVx1OTY1YVx1OTY1Y1x1OTY1ZFx1OTY1ZVx1OTY2MFx1OTY2M1x1OTY2NVx1OTY2Nlx1OTY2Ylx1OTY2ZCIsNCwiXHU5NjczXHU5Njc4IiwxMiwiXHU5Njg3XHU5Njg5XHU5NjhhXHU4ZjhkXHU4ZjhlXHU4ZjhmXHU4Zjk4XHU4ZjlhXHU4ZWNlXHU2MjBiXHU2MjE3XHU2MjFiXHU2''@;'; put 'put ''MjFmXHU2MjIyXHU2MjIxXHU2MjI1XHU2MjI0XHU2MjJjXHU4MWU3XHU3NGVmXHU3NGY0XHU3NGZmXHU3NTBmXHU3NTExXHU3NTEzXHU2NTM0XHU2NWVlXHU2NWVmXHU2NWYwXHU2NjBhXHU2NjE5XHU2NzcyXHU2NjAzXHU2NjE1XHU2NjAwXHU3MDg1XHU2NmY3XHU2NjFkXHU2NjM0XHU2NjMx''@;'; put 'put ''XHU2NjM2XHU2NjM1XHU4MDA2XHU2NjVmXHU2NjU0XHU2NjQxXHU2NjRmXHU2NjU2XHU2NjYxXHU2NjU3XHU2Njc3XHU2Njg0XHU2NjhjXHU2NmE3XHU2NjlkXHU2NmJlXHU2NmRiXHU2NmRjXHU2NmU2XHU2NmU5XHU4ZDMyXHU4ZDMzXHU4ZDM2XHU4ZDNiXHU4ZDNkXHU4ZDQwXHU4ZDQ1XHU4''@;'; put 'put ''ZDQ2XHU4ZDQ4XHU4ZDQ5XHU4ZDQ3XHU4ZDRkXHU4ZDU1XHU4ZDU5XHU4OWM3XHU4OWNhXHU4OWNiXHU4OWNjXHU4OWNlXHU4OWNmXHU4OWQwXHU4OWQxXHU3MjZlXHU3MjlmXHU3MjVkXHU3MjY2XHU3MjZmXHU3MjdlXHU3MjdmXHU3Mjg0XHU3MjhiXHU3MjhkXHU3MjhmXHU3MjkyXHU2MzA4''@;'; put 'put ''XHU2MzMyXHU2M2IwIl0sWyJlYjQwIiwiXHU5NjhjXHU5NjhlXHU5NjkxXHU5NjkyXHU5NjkzXHU5Njk1XHU5Njk2XHU5NjlhXHU5NjliXHU5NjlkIiw5LCJcdTk2YTgiLDcsIlx1OTZiMVx1OTZiMlx1OTZiNFx1OTZiNVx1OTZiN1x1OTZiOFx1OTZiYVx1OTZiYlx1OTZiZlx1OTZjMlx1OTZj''@;'; put 'put ''M1x1OTZjOFx1OTZjYVx1OTZjYlx1OTZkMFx1OTZkMVx1OTZkM1x1OTZkNFx1OTZkNiIsOSwiXHU5NmUxIiw2LCJcdTk2ZWIiXSxbImViODAiLCJcdTk2ZWNcdTk2ZWRcdTk2ZWVcdTk2ZjBcdTk2ZjFcdTk2ZjJcdTk2ZjRcdTk2ZjVcdTk2ZjhcdTk2ZmFcdTk2ZmJcdTk2ZmNcdTk2ZmRcdTk2''@;'; put 'put ''ZmZcdTk3MDJcdTk3MDNcdTk3MDVcdTk3MGFcdTk3MGJcdTk3MGNcdTk3MTBcdTk3MTFcdTk3MTJcdTk3MTRcdTk3MTVcdTk3MTciLDQsIlx1OTcxZFx1OTcxZlx1OTcyMFx1NjQzZlx1NjRkOFx1ODAwNFx1NmJlYVx1NmJmM1x1NmJmZFx1NmJmNVx1NmJmOVx1NmMwNVx1NmMwN1x1NmMwNlx1''@;'; put 'put ''NmMwZFx1NmMxNVx1NmMxOFx1NmMxOVx1NmMxYVx1NmMyMVx1NmMyOVx1NmMyNFx1NmMyYVx1NmMzMlx1NjUzNVx1NjU1NVx1NjU2Ylx1NzI0ZFx1NzI1Mlx1NzI1Nlx1NzIzMFx1ODY2Mlx1NTIxNlx1ODA5Zlx1ODA5Y1x1ODA5M1x1ODBiY1x1NjcwYVx1ODBiZFx1ODBiMVx1ODBhYlx1ODBh''@;'; put 'put ''ZFx1ODBiNFx1ODBiN1x1ODBlN1x1ODBlOFx1ODBlOVx1ODBlYVx1ODBkYlx1ODBjMlx1ODBjNFx1ODBkOVx1ODBjZFx1ODBkN1x1NjcxMFx1ODBkZFx1ODBlYlx1ODBmMVx1ODBmNFx1ODBlZFx1ODEwZFx1ODEwZVx1ODBmMlx1ODBmY1x1NjcxNVx1ODExMlx1OGM1YVx1ODEzNlx1ODExZVx1''@;'; put 'put ''ODEyY1x1ODExOFx1ODEzMlx1ODE0OFx1ODE0Y1x1ODE1M1x1ODE3NFx1ODE1OVx1ODE1YVx1ODE3MVx1ODE2MFx1ODE2OVx1ODE3Y1x1ODE3ZFx1ODE2ZFx1ODE2N1x1NTg0ZFx1NWFiNVx1ODE4OFx1ODE4Mlx1ODE5MVx1NmVkNVx1ODFhM1x1ODFhYVx1ODFjY1x1NjcyNlx1ODFjYVx1ODFi''@;'; put 'put ''YiJdLFsiZWM0MCIsIlx1OTcyMSIsOCwiXHU5NzJiXHU5NzJjXHU5NzJlXHU5NzJmXHU5NzMxXHU5NzMzIiw0LCJcdTk3M2FcdTk3M2JcdTk3M2NcdTk3M2RcdTk3M2YiLDE4LCJcdTk3NTRcdTk3NTVcdTk3NTdcdTk3NThcdTk3NWFcdTk3NWNcdTk3NWRcdTk3NWZcdTk3NjNcdTk3NjRcdTk3''@;'; put 'put ''NjZcdTk3NjdcdTk3NjhcdTk3NmEiLDddLFsiZWM4MCIsIlx1OTc3Mlx1OTc3NVx1OTc3NyIsNCwiXHU5NzdkIiw3LCJcdTk3ODYiLDQsIlx1OTc4Y1x1OTc4ZVx1OTc4Zlx1OTc5MFx1OTc5M1x1OTc5NVx1OTc5Nlx1OTc5N1x1OTc5OSIsNCwiXHU4MWMxXHU4MWE2XHU2YjI0XHU2YjM3XHU2''@;'; put 'put ''YjM5XHU2YjQzXHU2YjQ2XHU2YjU5XHU5OGQxXHU5OGQyXHU5OGQzXHU5OGQ1XHU5OGQ5XHU5OGRhXHU2YmIzXHU1ZjQwXHU2YmMyXHU4OWYzXHU2NTkwXHU5ZjUxXHU2NTkzXHU2NWJjXHU2NWM2XHU2NWM0XHU2NWMzXHU2NWNjXHU2NWNlXHU2NWQyXHU2NWQ2XHU3MDgwXHU3MDljXHU3MDk2''@;'; put 'put ''XHU3MDlkXHU3MGJiXHU3MGMwXHU3MGI3XHU3MGFiXHU3MGIxXHU3MGU4XHU3MGNhXHU3MTEwXHU3MTEzXHU3MTE2XHU3MTJmXHU3MTMxXHU3MTczXHU3MTVjXHU3MTY4XHU3MTQ1XHU3MTcyXHU3MTRhXHU3MTc4XHU3MTdhXHU3MTk4XHU3MWIzXHU3MWI1XHU3MWE4XHU3MWEwXHU3MWUwXHU3''@;'; put 'put ''MWQ0XHU3MWU3XHU3MWY5XHU3MjFkXHU3MjI4XHU3MDZjXHU3MTE4XHU3MTY2XHU3MWI5XHU2MjNlXHU2MjNkXHU2MjQzXHU2MjQ4XHU2MjQ5XHU3OTNiXHU3OTQwXHU3OTQ2XHU3OTQ5XHU3OTViXHU3OTVjXHU3OTUzXHU3OTVhXHU3OTYyXHU3OTU3XHU3OTYwXHU3OTZmXHU3OTY3XHU3OTdh''@;'; put 'put ''XHU3OTg1XHU3OThhXHU3OTlhXHU3OWE3XHU3OWIzXHU1ZmQxXHU1ZmQwIl0sWyJlZDQwIiwiXHU5NzllXHU5NzlmXHU5N2ExXHU5N2EyXHU5N2E0Iiw2LCJcdTk3YWNcdTk3YWVcdTk3YjBcdTk3YjFcdTk3YjNcdTk3YjUiLDQ2XSxbImVkODAiLCJcdTk3ZTRcdTk3ZTVcdTk3ZThcdTk3ZWUi''@;'; put 'put ''LDQsIlx1OTdmNFx1OTdmNyIsMjMsIlx1NjAzY1x1NjA1ZFx1NjA1YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFjYlx1NjFkMVx1NjIwNlx1ODA4MFx1ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1Nzgw''@;'; put 'put ''MFx1NzgwOVx1NzgxN1x1NzgxOFx1NzgxMVx1NjVhYlx1NzgyZFx1NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1''@;'; put 'put ''Nzg5M1x1Nzg5YVx1Nzg4N1x1Nzg5Y1x1NzhhMVx1NzhhM1x1NzhiMlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1NzkyNFx1NzkxZVx1NzkzNFx1OWY5Ylx1OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZm''@;'; put 'put ''OVx1NzcwN1x1NzcwOFx1NzcxYVx1NzcyMlx1NzcxOVx1NzcyZFx1NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OCJdLFsiZWU0MCIsIlx1OTgwZiIsNjJdLFsiZWU4MCIsIlx1OTg0ZSIsMzIsIlx1Nzc2Mlx1Nzc2NVx1Nzc3Zlx1Nzc4ZFx1Nzc3''@;'; put 'put ''ZFx1Nzc4MFx1Nzc4Y1x1Nzc5MVx1Nzc5Zlx1NzdhMFx1NzdiMFx1NzdiNVx1NzdiZFx1NzUzYVx1NzU0MFx1NzU0ZVx1NzU0Ylx1NzU0OFx1NzU1Ylx1NzU3Mlx1NzU3OVx1NzU4M1x1N2Y1OFx1N2Y2MVx1N2Y1Zlx1OGE0OFx1N2Y2OFx1N2Y3NFx1N2Y3MVx1N2Y3OVx1N2Y4MVx1N2Y3ZVx1''@;'; put 'put ''NzZjZFx1NzZlNVx1ODgzMlx1OTQ4NVx1OTQ4Nlx1OTQ4N1x1OTQ4Ylx1OTQ4YVx1OTQ4Y1x1OTQ4ZFx1OTQ4Zlx1OTQ5MFx1OTQ5NFx1OTQ5N1x1OTQ5NVx1OTQ5YVx1OTQ5Ylx1OTQ5Y1x1OTRhM1x1OTRhNFx1OTRhYlx1OTRhYVx1OTRhZFx1OTRhY1x1OTRhZlx1OTRiMFx1OTRiMlx1OTRi''@;'; put 'put ''NFx1OTRiNiIsNCwiXHU5NGJjXHU5NGJkXHU5NGJmXHU5NGM0XHU5NGM4Iiw2LCJcdTk0ZDBcdTk0ZDFcdTk0ZDJcdTk0ZDVcdTk0ZDZcdTk0ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWEiXSxbImVmNDAi''@;'; put 'put ''LCJcdTk4NmYiLDUsIlx1OTg4Ylx1OTg4ZVx1OTg5Mlx1OTg5NVx1OTg5OVx1OThhM1x1OThhOCIsMzcsIlx1OThjZlx1OThkMFx1OThkNFx1OThkNlx1OThkN1x1OThkYlx1OThkY1x1OThkZFx1OThlMCIsNF0sWyJlZjgwIiwiXHU5OGU1XHU5OGU2XHU5OGU5IiwzMCwiXHU5NGU5XHU5NGVi''@;'; put 'put ''XHU5NGVlXHU5NGVmXHU5NGYzXHU5NGY0XHU5NGY1XHU5NGY3XHU5NGY5XHU5NGZjXHU5NGZkXHU5NGZmXHU5NTAzXHU5NTAyXHU5NTA2XHU5NTA3XHU5NTA5XHU5NTBhXHU5NTBkXHU5NTBlXHU5NTBmXHU5NTEyIiw0LCJcdTk1MThcdTk1MWJcdTk1MWRcdTk1MWVcdTk1MWZcdTk1MjJcdTk1''@;'; put 'put ''MmFcdTk1MmJcdTk1MjlcdTk1MmNcdTk1MzFcdTk1MzJcdTk1MzRcdTk1MzZcdTk1MzdcdTk1MzhcdTk1M2NcdTk1M2VcdTk1M2ZcdTk1NDJcdTk1MzVcdTk1NDRcdTk1NDVcdTk1NDZcdTk1NDlcdTk1NGNcdTk1NGVcdTk1NGZcdTk1NTJcdTk1NTNcdTk1NTRcdTk1NTZcdTk1NTdcdTk1NThc''@;'; put 'put ''dTk1NTlcdTk1NWJcdTk1NWVcdTk1NWZcdTk1NWRcdTk1NjFcdTk1NjJcdTk1NjQiLDgsIlx1OTU2Zlx1OTU3MVx1OTU3Mlx1OTU3M1x1OTUzYVx1NzdlN1x1NzdlY1x1OTZjOVx1NzlkNVx1NzllZFx1NzllM1x1NzllYlx1N2EwNlx1NWQ0N1x1N2EwM1x1N2EwMlx1N2ExZVx1N2ExNCJdLFsi''@;'; put 'put ''ZjA0MCIsIlx1OTkwOCIsNCwiXHU5OTBlXHU5OTBmXHU5OTExIiwyOCwiXHU5OTJmIiwyNl0sWyJmMDgwIiwiXHU5OTRhIiw5LCJcdTk5NTYiLDEyLCJcdTk5NjRcdTk5NjZcdTk5NzNcdTk5NzhcdTk5NzlcdTk5N2JcdTk5N2VcdTk5ODJcdTk5ODNcdTk5ODlcdTdhMzlcdTdhMzdcdTdhNTFc''@;'; put 'put ''dTllY2ZcdTk5YTVcdTdhNzBcdTc2ODhcdTc2OGVcdTc2OTNcdTc2OTlcdTc2YTRcdTc0ZGVcdTc0ZTBcdTc1MmNcdTllMjBcdTllMjJcdTllMjgiLDQsIlx1OWUzMlx1OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0''@;'; put 'put ''N1x1OWU0OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0ZVx1OWU1MVx1OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1OWU1ZVx1OWU2M1x1OWU2NiIsNiwiXHU5ZTcxXHU5ZTZkXHU5ZTczXHU3NTkyXHU3NTk0XHU3NTk2XHU3NWEwXHU3NTlkXHU3NWFjXHU3NWEzXHU3NWIzXHU3NWI0XHU3''@;'; put 'put ''NWI4XHU3NWM0XHU3NWIxXHU3NWIwXHU3NWMzXHU3NWMyXHU3NWQ2XHU3NWNkXHU3NWUzXHU3NWU4XHU3NWU2XHU3NWU0XHU3NWViXHU3NWU3XHU3NjAzXHU3NWYxXHU3NWZjXHU3NWZmXHU3NjEwXHU3NjAwXHU3NjA1XHU3NjBjXHU3NjE3XHU3NjBhXHU3NjI1XHU3NjE4XHU3NjE1XHU3NjE5''@;'; put 'put ''Il0sWyJmMTQwIiwiXHU5OThjXHU5OThlXHU5OTlhIiwxMCwiXHU5OWE2XHU5OWE3XHU5OWE5Iiw0N10sWyJmMTgwIiwiXHU5OWQ5IiwzMiwiXHU3NjFiXHU3NjNjXHU3NjIyXHU3NjIwXHU3NjQwXHU3NjJkXHU3NjMwXHU3NjNmXHU3NjM1XHU3NjQzXHU3NjNlXHU3NjMzXHU3NjRkXHU3NjVl''@;'; put 'put ''XHU3NjU0XHU3NjVjXHU3NjU2XHU3NjZiXHU3NjZmXHU3ZmNhXHU3YWU2XHU3YTc4XHU3YTc5XHU3YTgwXHU3YTg2XHU3YTg4XHU3YTk1XHU3YWE2XHU3YWEwXHU3YWFjXHU3YWE4XHU3YWFkXHU3YWIzXHU4ODY0XHU4ODY5XHU4ODcyXHU4ODdkXHU4ODdmXHU4ODgyXHU4OGEyXHU4OGM2XHU4''@;'; put 'put ''OGI3XHU4OGJjXHU4OGM5XHU4OGUyXHU4OGNlXHU4OGUzXHU4OGU1XHU4OGYxXHU4OTFhXHU4OGZjXHU4OGU4XHU4OGZlXHU4OGYwXHU4OTIxXHU4OTE5XHU4OTEzXHU4OTFiXHU4OTBhXHU4OTM0XHU4OTJiXHU4OTM2XHU4OTQxXHU4OTY2XHU4OTdiXHU3NThiXHU4MGU1XHU3NmIyXHU3NmI0''@;'; put 'put ''XHU3N2RjXHU4MDEyXHU4MDE0XHU4MDE2XHU4MDFjXHU4MDIwXHU4MDIyXHU4MDI1XHU4MDI2XHU4MDI3XHU4MDI5XHU4MDI4XHU4MDMxXHU4MDBiXHU4MDM1XHU4MDQzXHU4MDQ2XHU4MDRkXHU4MDUyXHU4MDY5XHU4MDcxXHU4OTgzXHU5ODc4XHU5ODgwXHU5ODgzIl0sWyJmMjQwIiwiXHU5''@;'; put 'put ''OWZhIiw2Ml0sWyJmMjgwIiwiXHU5YTM5IiwzMiwiXHU5ODg5XHU5ODhjXHU5ODhkXHU5ODhmXHU5ODk0XHU5ODlhXHU5ODliXHU5ODllXHU5ODlmXHU5OGExXHU5OGEyXHU5OGE1XHU5OGE2XHU4NjRkXHU4NjU0XHU4NjZjXHU4NjZlXHU4NjdmXHU4NjdhXHU4NjdjXHU4NjdiXHU4NmE4XHU4''@;'; put 'put ''NjhkXHU4NjhiXHU4NmFjXHU4NjlkXHU4NmE3XHU4NmEzXHU4NmFhXHU4NjkzXHU4NmE5XHU4NmI2XHU4NmM0XHU4NmI1XHU4NmNlXHU4NmIwXHU4NmJhXHU4NmIxXHU4NmFmXHU4NmM5XHU4NmNmXHU4NmI0XHU4NmU5XHU4NmYxXHU4NmYyXHU4NmVkXHU4NmYzXHU4NmQwXHU4NzEzXHU4NmRl''@;'; put 'put ''XHU4NmY0XHU4NmRmXHU4NmQ4XHU4NmQxXHU4NzAzXHU4NzA3XHU4NmY4XHU4NzA4XHU4NzBhXHU4NzBkXHU4NzA5XHU4NzIzXHU4NzNiXHU4NzFlXHU4NzI1XHU4NzJlXHU4NzFhXHU4NzNlXHU4NzQ4XHU4NzM0XHU4NzMxXHU4NzI5XHU4NzM3XHU4NzNmXHU4NzgyXHU4NzIyXHU4NzdkXHU4''@;'; put 'put ''NzdlXHU4NzdiXHU4NzYwXHU4NzcwXHU4NzRjXHU4NzZlXHU4NzhiXHU4NzUzXHU4NzYzXHU4NzdjXHU4NzY0XHU4NzU5XHU4NzY1XHU4NzkzXHU4N2FmXHU4N2E4XHU4N2QyIl0sWyJmMzQwIiwiXHU5YTVhIiwxNywiXHU5YTcyXHU5YTgzXHU5YTg5XHU5YThkXHU5YThlXHU5YTk0XHU5YTk1''@;'; put 'put ''XHU5YTk5XHU5YWE2XHU5YWE5Iiw2LCJcdTlhYjJcdTlhYjNcdTlhYjRcdTlhYjVcdTlhYjlcdTlhYmJcdTlhYmRcdTlhYmVcdTlhYmZcdTlhYzNcdTlhYzRcdTlhYzYiLDQsIlx1OWFjZFx1OWFjZVx1OWFjZlx1OWFkMFx1OWFkMlx1OWFkNFx1OWFkNVx1OWFkNlx1OWFkN1x1OWFkOVx1OWFk''@;'; put 'put ''YVx1OWFkYlx1OWFkYyJdLFsiZjM4MCIsIlx1OWFkZFx1OWFkZVx1OWFlMFx1OWFlMlx1OWFlM1x1OWFlNFx1OWFlNVx1OWFlN1x1OWFlOFx1OWFlOVx1OWFlYVx1OWFlY1x1OWFlZVx1OWFmMCIsOCwiXHU5YWZhXHU5YWZjIiw2LCJcdTliMDRcdTliMDVcdTliMDZcdTg3YzZcdTg3ODhcdTg3''@;'; put 'put ''ODVcdTg3YWRcdTg3OTdcdTg3ODNcdTg3YWJcdTg3ZTVcdTg3YWNcdTg3YjVcdTg3YjNcdTg3Y2JcdTg3ZDNcdTg3YmRcdTg3ZDFcdTg3YzBcdTg3Y2FcdTg3ZGJcdTg3ZWFcdTg3ZTBcdTg3ZWVcdTg4MTZcdTg4MTNcdTg3ZmVcdTg4MGFcdTg4MWJcdTg4MjFcdTg4MzlcdTg4M2NcdTdmMzZc''@;'; put 'put ''dTdmNDJcdTdmNDRcdTdmNDVcdTgyMTBcdTdhZmFcdTdhZmRcdTdiMDhcdTdiMDNcdTdiMDRcdTdiMTVcdTdiMGFcdTdiMmJcdTdiMGZcdTdiNDdcdTdiMzhcdTdiMmFcdTdiMTlcdTdiMmVcdTdiMzFcdTdiMjBcdTdiMjVcdTdiMjRcdTdiMzNcdTdiM2VcdTdiMWVcdTdiNThcdTdiNWFcdTdi''@;'; put 'put ''NDVcdTdiNzVcdTdiNGNcdTdiNWRcdTdiNjBcdTdiNmVcdTdiN2JcdTdiNjJcdTdiNzJcdTdiNzFcdTdiOTBcdTdiYTZcdTdiYTdcdTdiYjhcdTdiYWNcdTdiOWRcdTdiYThcdTdiODVcdTdiYWFcdTdiOWNcdTdiYTJcdTdiYWJcdTdiYjRcdTdiZDFcdTdiYzFcdTdiY2NcdTdiZGRcdTdiZGFc''@;'; put 'put ''dTdiZTVcdTdiZTZcdTdiZWFcdTdjMGNcdTdiZmVcdTdiZmNcdTdjMGZcdTdjMTZcdTdjMGIiXSxbImY0NDAiLCJcdTliMDdcdTliMDkiLDUsIlx1OWIxMFx1OWIxMVx1OWIxMlx1OWIxNCIsMTAsIlx1OWIyMFx1OWIyMVx1OWIyMlx1OWIyNCIsMTAsIlx1OWIzMFx1OWIzMVx1OWIzMyIsNywi''@;'; put 'put ''XHU5YjNkXHU5YjNlXHU5YjNmXHU5YjQwXHU5YjQ2XHU5YjRhXHU5YjRiXHU5YjRjXHU5YjRlXHU5YjUwXHU5YjUyXHU5YjUzXHU5YjU1Iiw1XSxbImY0ODAiLCJcdTliNWIiLDMyLCJcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDRc''@;'; put 'put ''dTgxZWNcdTg4NDRcdTgyMjFcdTgyMjJcdTgyMjNcdTgyMmRcdTgyMmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlcdTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5NWVcdTdm''@;'; put 'put ''OWRcdTdmOWZcdTdmYTdcdTdmYWZcdTdmYjBcdTdmYjJcdTdjN2NcdTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdjYzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZcdTdmY2Vc''@;'; put 'put ''dTdmZDVcdTdmZTVcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZWVcdTdmZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNcdThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkxNGVcdTkx''@;'; put 'put ''NGZcdTkxNjQiXSxbImY1NDAiLCJcdTliN2MiLDYyXSxbImY1ODAiLCJcdTliYmIiLDMyLCJcdTkxNjJcdTkxNjFcdTkxNzBcdTkxNjlcdTkxNmZcdTkxN2RcdTkxN2VcdTkxNzJcdTkxNzRcdTkxNzlcdTkxOGNcdTkxODVcdTkxOTBcdTkxOGRcdTkxOTFcdTkxYTJcdTkxYTNcdTkxYWFcdTkx''@;'; put 'put ''YWRcdTkxYWVcdTkxYWZcdTkxYjVcdTkxYjRcdTkxYmFcdThjNTVcdTllN2VcdThkYjhcdThkZWJcdThlMDVcdThlNTlcdThlNjlcdThkYjVcdThkYmZcdThkYmNcdThkYmFcdThkYzRcdThkZDZcdThkZDdcdThkZGFcdThkZGVcdThkY2VcdThkY2ZcdThkZGJcdThkYzZcdThkZWNcdThkZjdc''@;'; put 'put ''dThkZjhcdThkZTNcdThkZjlcdThkZmJcdThkZTRcdThlMDlcdThkZmRcdThlMTRcdThlMWRcdThlMWZcdThlMmNcdThlMmVcdThlMjNcdThlMmZcdThlM2FcdThlNDBcdThlMzlcdThlMzVcdThlM2RcdThlMzFcdThlNDlcdThlNDFcdThlNDJcdThlNTFcdThlNTJcdThlNGFcdThlNzBcdThl''@;'; put 'put ''NzZcdThlN2NcdThlNmZcdThlNzRcdThlODVcdThlOGZcdThlOTRcdThlOTBcdThlOWNcdThlOWVcdThjNzhcdThjODJcdThjOGFcdThjODVcdThjOThcdThjOTRcdTY1OWJcdTg5ZDZcdTg5ZGVcdTg5ZGFcdTg5ZGMiXSxbImY2NDAiLCJcdTliZGMiLDYyXSxbImY2ODAiLCJcdTljMWIiLDMy''@;'; put 'put ''LCJcdTg5ZTVcdTg5ZWJcdTg5ZWZcdThhM2VcdThiMjZcdTk3NTNcdTk2ZTlcdTk2ZjNcdTk2ZWZcdTk3MDZcdTk3MDFcdTk3MDhcdTk3MGZcdTk3MGVcdTk3MmFcdTk3MmRcdTk3MzBcdTk3M2VcdTlmODBcdTlmODNcdTlmODUiLDUsIlx1OWY4Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1''@;'; put 'put ''OTZiY1x1OTZiZFx1OTZjZVx1OTZkMlx1NzdiZlx1OTZlMFx1OTI4ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5''@;'; put 'put ''NFx1OWM5NVx1OWM5YVx1OWM5Ylx1OWM5ZSIsNSwiXHU5Y2E1Iiw0LCJcdTljYWJcdTljYWRcdTljYWVcdTljYjAiLDcsIlx1OWNiYVx1OWNiYlx1OWNiY1x1OWNiZFx1OWNjNFx1OWNjNVx1OWNjNlx1OWNjN1x1OWNjYVx1OWNjYiJdLFsiZjc0MCIsIlx1OWMzYyIsNjJdLFsiZjc4MCIsIlx1''@;'; put 'put ''OWM3Ylx1OWM3ZFx1OWM3ZVx1OWM4MFx1OWM4M1x1OWM4NFx1OWM4OVx1OWM4YVx1OWM4Y1x1OWM4Zlx1OWM5M1x1OWM5Nlx1OWM5N1x1OWM5OFx1OWM5OVx1OWM5ZFx1OWNhYVx1OWNhY1x1OWNhZlx1OWNiOVx1OWNiZSIsNCwiXHU5Y2M4XHU5Y2M5XHU5Y2QxXHU5Y2QyXHU5Y2RhXHU5Y2Ri''@;'; put 'put ''XHU5Y2UwXHU5Y2UxXHU5Y2NjIiw0LCJcdTljZDNcdTljZDRcdTljZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTll''@;'; put 'put ''NThcdTlhYjZcdTlhYmFcdTlhYmNcdTlhYzFcdTlhYzBcdTlhYzVcdTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThcdTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJc''@;'; put 'put ''dTlhZmJcdTlhZWRcdTlhZjlcdTliMDhcdTliMGZcdTliMTNcdTliMWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTllOWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTll''@;'; put 'put ''ZTVcdTllZWFcdTllZWZcdTlmMjJcdTlmMmNcdTlmMmZcdTlmMzlcdTlmMzdcdTlmM2RcdTlmM2VcdTlmNDQiXSxbImY4NDAiLCJcdTljZTMiLDYyXSxbImY4ODAiLCJcdTlkMjIiLDMyXSxbImY5NDAiLCJcdTlkNDMiLDYyXSxbImY5ODAiLCJcdTlkODIiLDMyXSxbImZhNDAiLCJcdTlkYTMi''@;'; put 'put ''LDYyXSxbImZhODAiLCJcdTlkZTIiLDMyXSxbImZiNDAiLCJcdTllMDMiLDI3LCJcdTllMjRcdTllMjdcdTllMmVcdTllMzBcdTllMzRcdTllM2JcdTllM2NcdTllNDBcdTllNGRcdTllNTBcdTllNTJcdTllNTNcdTllNTRcdTllNTZcdTllNTlcdTllNWRcdTllNWZcdTllNjBcdTllNjFcdTll''@;'; put 'put ''NjJcdTllNjVcdTllNmVcdTllNmZcdTllNzJcdTllNzQiLDksIlx1OWU4MCJdLFsiZmI4MCIsIlx1OWU4MVx1OWU4M1x1OWU4NFx1OWU4NVx1OWU4Nlx1OWU4OVx1OWU4YVx1OWU4YyIsNSwiXHU5ZTk0Iiw4LCJcdTllOWVcdTllYTAiLDUsIlx1OWVhN1x1OWVhOFx1OWVhOVx1OWVhYSJdLFsi''@;'; put 'put ''ZmM0MCIsIlx1OWVhYiIsOCwiXHU5ZWI1XHU5ZWI2XHU5ZWI3XHU5ZWI5XHU5ZWJhXHU5ZWJjXHU5ZWJmIiw0LCJcdTllYzVcdTllYzZcdTllYzdcdTllYzhcdTllY2FcdTllY2JcdTllY2NcdTllZDBcdTllZDJcdTllZDNcdTllZDVcdTllZDZcdTllZDdcdTllZDlcdTllZGFcdTllZGVcdTll''@;'; put 'put ''ZTFcdTllZTNcdTllZTRcdTllZTZcdTllZThcdTllZWJcdTllZWNcdTllZWRcdTllZWVcdTllZjAiLDgsIlx1OWVmYVx1OWVmZFx1OWVmZiIsNl0sWyJmYzgwIiwiXHU5ZjA2Iiw0LCJcdTlmMGNcdTlmMGZcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTVcdTlmMTZcdTlmMThcdTlmMWEiLDUsIlx1''@;'; put 'put ''OWYyMVx1OWYyMyIsOCwiXHU5ZjJkXHU5ZjJlXHU5ZjMwXHU5ZjMxIl0sWyJmZDQwIiwiXHU5ZjMyIiw0LCJcdTlmMzhcdTlmM2FcdTlmM2NcdTlmM2YiLDQsIlx1OWY0NSIsMTAsIlx1OWY1MiIsMzhdLFsiZmQ4MCIsIlx1OWY3OSIsNSwiXHU5ZjgxXHU5ZjgyXHU5ZjhkIiwxMSwiXHU5Zjlj''@;'; put 'put ''XHU5ZjlkXHU5ZjllXHU5ZmExIiw0LCJcdWY5MmNcdWY5NzlcdWY5OTVcdWY5ZTdcdWY5ZjEiXSxbImZlNDAiLCJcdWZhMGNcdWZhMGRcdWZhMGVcdWZhMGZcdWZhMTFcdWZhMTNcdWZhMTRcdWZhMThcdWZhMWZcdWZhMjBcdWZhMjFcdWZhMjNcdWZhMjRcdWZhMjdcdWZhMjhcdWZhMjkiXV0n''@;'; put 'put ''KX0sNzczNDg6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI3XSxbIjgxNDEiLCJcdWFjMDJcdWFjMDNcdWFjMDVcdWFjMDZcdWFjMGIiLDQsIlx1YWMxOFx1YWMxZVx1YWMxZlx1YWMyMVx1YWMyMlx1YWMyM1x1YWMyNSIsNiwiXHVh''@;'; put 'put ''YzJlXHVhYzMyXHVhYzMzXHVhYzM0Il0sWyI4MTYxIiwiXHVhYzM1XHVhYzM2XHVhYzM3XHVhYzNhXHVhYzNiXHVhYzNkXHVhYzNlXHVhYzNmXHVhYzQxIiw5LCJcdWFjNGNcdWFjNGUiLDUsIlx1YWM1NSJdLFsiODE4MSIsIlx1YWM1Nlx1YWM1N1x1YWM1OVx1YWM1YVx1YWM1Ylx1YWM1ZCIs''@;'; put 'put ''MTgsIlx1YWM3Mlx1YWM3M1x1YWM3NVx1YWM3Nlx1YWM3OVx1YWM3YiIsNCwiXHVhYzgyXHVhYzg3XHVhYzg4XHVhYzhkXHVhYzhlXHVhYzhmXHVhYzkxXHVhYzkyXHVhYzkzXHVhYzk1Iiw2LCJcdWFjOWVcdWFjYTIiLDUsIlx1YWNhYlx1YWNhZFx1YWNhZVx1YWNiMSIsNiwiXHVhY2JhXHVh''@;'; put 'put ''Y2JlXHVhY2JmXHVhY2MwXHVhY2MyXHVhY2MzXHVhY2M1XHVhY2M2XHVhY2M3XHVhY2M5XHVhY2NhXHVhY2NiXHVhY2NkIiw3LCJcdWFjZDZcdWFjZDgiLDcsIlx1YWNlMlx1YWNlM1x1YWNlNVx1YWNlNlx1YWNlOVx1YWNlYlx1YWNlZFx1YWNlZVx1YWNmMlx1YWNmNFx1YWNmNyIsNCwiXHVh''@;'; put 'put ''Y2ZlXHVhY2ZmXHVhZDAxXHVhZDAyXHVhZDAzXHVhZDA1XHVhZDA3Iiw0LCJcdWFkMGVcdWFkMTBcdWFkMTJcdWFkMTMiXSxbIjgyNDEiLCJcdWFkMTRcdWFkMTVcdWFkMTZcdWFkMTdcdWFkMTlcdWFkMWFcdWFkMWJcdWFkMWRcdWFkMWVcdWFkMWZcdWFkMjEiLDcsIlx1YWQyYVx1YWQyYlx1''@;'; put 'put ''YWQyZSIsNV0sWyI4MjYxIiwiXHVhZDM2XHVhZDM3XHVhZDM5XHVhZDNhXHVhZDNiXHVhZDNkIiw2LCJcdWFkNDZcdWFkNDhcdWFkNGEiLDUsIlx1YWQ1MVx1YWQ1Mlx1YWQ1M1x1YWQ1NVx1YWQ1Nlx1YWQ1NyJdLFsiODI4MSIsIlx1YWQ1OSIsNywiXHVhZDYyXHVhZDY0Iiw3LCJcdWFkNmVc''@;'; put 'put ''dWFkNmZcdWFkNzFcdWFkNzJcdWFkNzdcdWFkNzhcdWFkNzlcdWFkN2FcdWFkN2VcdWFkODBcdWFkODMiLDQsIlx1YWQ4YVx1YWQ4Ylx1YWQ4ZFx1YWQ4ZVx1YWQ4Zlx1YWQ5MSIsMTAsIlx1YWQ5ZSIsNSwiXHVhZGE1IiwxNywiXHVhZGI4Iiw3LCJcdWFkYzJcdWFkYzNcdWFkYzVcdWFkYzZc''@;'; put 'put ''dWFkYzdcdWFkYzkiLDYsIlx1YWRkMlx1YWRkNCIsNywiXHVhZGRkXHVhZGRlXHVhZGRmXHVhZGUxXHVhZGUyXHVhZGUzXHVhZGU1IiwxOF0sWyI4MzQxIiwiXHVhZGZhXHVhZGZiXHVhZGZkXHVhZGZlXHVhZTAyIiw1LCJcdWFlMGFcdWFlMGNcdWFlMGUiLDUsIlx1YWUxNSIsN10sWyI4MzYx''@;'; put 'put ''IiwiXHVhZTFkIiwxOCwiXHVhZTMyXHVhZTMzXHVhZTM1XHVhZTM2XHVhZTM5XHVhZTNiXHVhZTNjIl0sWyI4MzgxIiwiXHVhZTNkXHVhZTNlXHVhZTNmXHVhZTQyXHVhZTQ0XHVhZTQ3XHVhZTQ4XHVhZTQ5XHVhZTRiXHVhZTRmXHVhZTUxXHVhZTUyXHVhZTUzXHVhZTU1XHVhZTU3Iiw0LCJc''@;'; put 'put ''dWFlNWVcdWFlNjJcdWFlNjNcdWFlNjRcdWFlNjZcdWFlNjdcdWFlNmFcdWFlNmJcdWFlNmRcdWFlNmVcdWFlNmZcdWFlNzEiLDYsIlx1YWU3YVx1YWU3ZSIsNSwiXHVhZTg2Iiw1LCJcdWFlOGQiLDQ2LCJcdWFlYmZcdWFlYzFcdWFlYzJcdWFlYzNcdWFlYzUiLDYsIlx1YWVjZVx1YWVkMiIs''@;'; put 'put ''NSwiXHVhZWRhXHVhZWRiXHVhZWRkIiw4XSxbIjg0NDEiLCJcdWFlZTZcdWFlZTdcdWFlZTlcdWFlZWFcdWFlZWNcdWFlZWUiLDUsIlx1YWVmNVx1YWVmNlx1YWVmN1x1YWVmOVx1YWVmYVx1YWVmYlx1YWVmZCIsOF0sWyI4NDYxIiwiXHVhZjA2XHVhZjA5XHVhZjBhXHVhZjBiXHVhZjBjXHVh''@;'; put 'put ''ZjBlXHVhZjBmXHVhZjExIiwxOF0sWyI4NDgxIiwiXHVhZjI0Iiw3LCJcdWFmMmVcdWFmMmZcdWFmMzFcdWFmMzNcdWFmMzUiLDYsIlx1YWYzZVx1YWY0MFx1YWY0NFx1YWY0NVx1YWY0Nlx1YWY0N1x1YWY0YSIsNSwiXHVhZjUxIiwxMCwiXHVhZjVlIiw1LCJcdWFmNjYiLDE4LCJcdWFmN2Ei''@;'; put 'put ''LDUsIlx1YWY4MVx1YWY4Mlx1YWY4M1x1YWY4NVx1YWY4Nlx1YWY4N1x1YWY4OSIsNiwiXHVhZjkyXHVhZjkzXHVhZjk0XHVhZjk2Iiw1LCJcdWFmOWQiLDI2LCJcdWFmYmFcdWFmYmJcdWFmYmRcdWFmYmUiXSxbIjg1NDEiLCJcdWFmYmZcdWFmYzEiLDUsIlx1YWZjYVx1YWZjY1x1YWZjZiIs''@;'; put 'put ''NCwiXHVhZmQ1Iiw2LCJcdWFmZGQiLDRdLFsiODU2MSIsIlx1YWZlMiIsNSwiXHVhZmVhIiw1LCJcdWFmZjJcdWFmZjNcdWFmZjVcdWFmZjZcdWFmZjdcdWFmZjkiLDYsIlx1YjAwMlx1YjAwMyJdLFsiODU4MSIsIlx1YjAwNSIsNiwiXHViMDBkXHViMDBlXHViMDBmXHViMDExXHViMDEyXHVi''@;'; put 'put ''MDEzXHViMDE1Iiw2LCJcdWIwMWUiLDksIlx1YjAyOSIsMjYsIlx1YjA0Nlx1YjA0N1x1YjA0OVx1YjA0Ylx1YjA0ZFx1YjA0Zlx1YjA1MFx1YjA1MVx1YjA1Mlx1YjA1Nlx1YjA1OFx1YjA1YVx1YjA1Ylx1YjA1Y1x1YjA1ZSIsMjksIlx1YjA3ZVx1YjA3Zlx1YjA4MVx1YjA4Mlx1YjA4M1x1''@;'; put 'put ''YjA4NSIsNiwiXHViMDhlXHViMDkwXHViMDkyIiw1LCJcdWIwOWJcdWIwOWRcdWIwOWVcdWIwYTNcdWIwYTQiXSxbIjg2NDEiLCJcdWIwYTVcdWIwYTZcdWIwYTdcdWIwYWFcdWIwYjBcdWIwYjJcdWIwYjZcdWIwYjdcdWIwYjlcdWIwYmFcdWIwYmJcdWIwYmQiLDYsIlx1YjBjNlx1YjBjYSIs''@;'; put 'put ''NSwiXHViMGQyIl0sWyI4NjYxIiwiXHViMGQzXHViMGQ1XHViMGQ2XHViMGQ3XHViMGQ5Iiw2LCJcdWIwZTFcdWIwZTJcdWIwZTNcdWIwZTRcdWIwZTYiLDEwXSxbIjg2ODEiLCJcdWIwZjEiLDIyLCJcdWIxMGFcdWIxMGRcdWIxMGVcdWIxMGZcdWIxMTFcdWIxMTRcdWIxMTVcdWIxMTZcdWIx''@;'; put 'put ''MTdcdWIxMWFcdWIxMWUiLDQsIlx1YjEyNlx1YjEyN1x1YjEyOVx1YjEyYVx1YjEyYlx1YjEyZCIsNiwiXHViMTM2XHViMTNhIiw1LCJcdWIxNDJcdWIxNDNcdWIxNDVcdWIxNDZcdWIxNDdcdWIxNDkiLDYsIlx1YjE1Mlx1YjE1M1x1YjE1Nlx1YjE1N1x1YjE1OVx1YjE1YVx1YjE1Ylx1YjE1''@;'; put 'put ''ZFx1YjE1ZVx1YjE1Zlx1YjE2MSIsMjIsIlx1YjE3YVx1YjE3Ylx1YjE3ZFx1YjE3ZVx1YjE3Zlx1YjE4MVx1YjE4MyIsNCwiXHViMThhXHViMThjXHViMThlXHViMThmXHViMTkwXHViMTkxXHViMTk1XHViMTk2XHViMTk3XHViMTk5XHViMTlhXHViMTliXHViMTlkIl0sWyI4NzQxIiwiXHVi''@;'; put 'put ''MTllIiw5LCJcdWIxYTkiLDE1XSxbIjg3NjEiLCJcdWIxYjkiLDE4LCJcdWIxY2RcdWIxY2VcdWIxY2ZcdWIxZDFcdWIxZDJcdWIxZDNcdWIxZDUiXSxbIjg3ODEiLCJcdWIxZDYiLDUsIlx1YjFkZVx1YjFlMCIsNywiXHViMWVhXHViMWViXHViMWVkXHViMWVlXHViMWVmXHViMWYxIiw3LCJc''@;'; put 'put ''dWIxZmFcdWIxZmNcdWIxZmUiLDUsIlx1YjIwNlx1YjIwN1x1YjIwOVx1YjIwYVx1YjIwZCIsNiwiXHViMjE2XHViMjE4XHViMjFhIiw1LCJcdWIyMjEiLDE4LCJcdWIyMzUiLDYsIlx1YjIzZCIsMjYsIlx1YjI1OVx1YjI1YVx1YjI1Ylx1YjI1ZFx1YjI1ZVx1YjI1Zlx1YjI2MSIsNiwiXHVi''@;'; put 'put ''MjZhIiw0XSxbIjg4NDEiLCJcdWIyNmYiLDQsIlx1YjI3NiIsNSwiXHViMjdkIiw2LCJcdWIyODZcdWIyODdcdWIyODhcdWIyOGEiLDRdLFsiODg2MSIsIlx1YjI4Zlx1YjI5Mlx1YjI5M1x1YjI5NVx1YjI5Nlx1YjI5N1x1YjI5YiIsNCwiXHViMmEyXHViMmE0XHViMmE3XHViMmE4XHViMmE5''@;'; put 'put ''XHViMmFiXHViMmFkXHViMmFlXHViMmFmXHViMmIxXHViMmIyXHViMmIzXHViMmI1XHViMmI2XHViMmI3Il0sWyI4ODgxIiwiXHViMmI4IiwxNSwiXHViMmNhXHViMmNiXHViMmNkXHViMmNlXHViMmNmXHViMmQxXHViMmQzIiw0LCJcdWIyZGFcdWIyZGNcdWIyZGVcdWIyZGZcdWIyZTBcdWIy''@;'; put 'put ''ZTFcdWIyZTNcdWIyZTdcdWIyZTlcdWIyZWFcdWIyZjBcdWIyZjFcdWIyZjJcdWIyZjZcdWIyZmNcdWIyZmRcdWIyZmVcdWIzMDJcdWIzMDNcdWIzMDVcdWIzMDZcdWIzMDdcdWIzMDkiLDYsIlx1YjMxMlx1YjMxNiIsNSwiXHViMzFkIiw1NCwiXHViMzU3XHViMzU5XHViMzVhXHViMzVkXHVi''@;'; put 'put ''MzYwXHViMzYxXHViMzYyXHViMzYzIl0sWyI4OTQxIiwiXHViMzY2XHViMzY4XHViMzZhXHViMzZjXHViMzZkXHViMzZmXHViMzcyXHViMzczXHViMzc1XHViMzc2XHViMzc3XHViMzc5Iiw2LCJcdWIzODJcdWIzODYiLDUsIlx1YjM4ZCJdLFsiODk2MSIsIlx1YjM4ZVx1YjM4Zlx1YjM5MVx1''@;'; put 'put ''YjM5Mlx1YjM5M1x1YjM5NSIsMTAsIlx1YjNhMiIsNSwiXHViM2E5XHViM2FhXHViM2FiXHViM2FkIl0sWyI4OTgxIiwiXHViM2FlIiwyMSwiXHViM2M2XHViM2M3XHViM2M5XHViM2NhXHViM2NkXHViM2NmXHViM2QxXHViM2QyXHViM2QzXHViM2Q2XHViM2Q4XHViM2RhXHViM2RjXHViM2Rl''@;'; put 'put ''XHViM2RmXHViM2UxXHViM2UyXHViM2UzXHViM2U1XHViM2U2XHViM2U3XHViM2U5IiwxOCwiXHViM2ZkIiwxOCwiXHViNDExIiw2LCJcdWI0MTlcdWI0MWFcdWI0MWJcdWI0MWRcdWI0MWVcdWI0MWZcdWI0MjEiLDYsIlx1YjQyYVx1YjQyYyIsNywiXHViNDM1IiwxNV0sWyI4YTQxIiwiXHVi''@;'; put 'put ''NDQ1IiwxMCwiXHViNDUyXHViNDUzXHViNDU1XHViNDU2XHViNDU3XHViNDU5Iiw2LCJcdWI0NjJcdWI0NjRcdWI0NjYiXSxbIjhhNjEiLCJcdWI0NjciLDQsIlx1YjQ2ZCIsMTgsIlx1YjQ4MVx1YjQ4MiJdLFsiOGE4MSIsIlx1YjQ4MyIsNCwiXHViNDg5IiwxOSwiXHViNDllIiw1LCJcdWI0''@;'; put 'put ''YTVcdWI0YTZcdWI0YTdcdWI0YTlcdWI0YWFcdWI0YWJcdWI0YWQiLDcsIlx1YjRiNlx1YjRiOFx1YjRiYSIsNSwiXHViNGMxXHViNGMyXHViNGMzXHViNGM1XHViNGM2XHViNGM3XHViNGM5Iiw2LCJcdWI0ZDFcdWI0ZDJcdWI0ZDNcdWI0ZDRcdWI0ZDYiLDUsIlx1YjRkZVx1YjRkZlx1YjRl''@;'; put 'put ''MVx1YjRlMlx1YjRlNVx1YjRlNyIsNCwiXHViNGVlXHViNGYwXHViNGYyIiw1LCJcdWI0ZjkiLDI2LCJcdWI1MTZcdWI1MTdcdWI1MTlcdWI1MWFcdWI1MWQiXSxbIjhiNDEiLCJcdWI1MWUiLDUsIlx1YjUyNlx1YjUyYiIsNCwiXHViNTMyXHViNTMzXHViNTM1XHViNTM2XHViNTM3XHViNTM5''@;'; put 'put ''Iiw2LCJcdWI1NDJcdWI1NDYiXSxbIjhiNjEiLCJcdWI1NDdcdWI1NDhcdWI1NDlcdWI1NGFcdWI1NGVcdWI1NGZcdWI1NTFcdWI1NTJcdWI1NTNcdWI1NTUiLDYsIlx1YjU1ZVx1YjU2MiIsOF0sWyI4YjgxIiwiXHViNTZiIiw1MiwiXHViNWEyXHViNWEzXHViNWE1XHViNWE2XHViNWE3XHVi''@;'; put 'put ''NWE5XHViNWFjXHViNWFkXHViNWFlXHViNWFmXHViNWIyXHViNWI2Iiw0LCJcdWI1YmVcdWI1YmZcdWI1YzFcdWI1YzJcdWI1YzNcdWI1YzUiLDYsIlx1YjVjZVx1YjVkMiIsNSwiXHViNWQ5IiwxOCwiXHViNWVkIiwxOF0sWyI4YzQxIiwiXHViNjAwIiwxNSwiXHViNjEyXHViNjEzXHViNjE1''@;'; put 'put ''XHViNjE2XHViNjE3XHViNjE5Iiw0XSxbIjhjNjEiLCJcdWI2MWUiLDYsIlx1YjYyNiIsNSwiXHViNjJkIiw2LCJcdWI2MzUiLDVdLFsiOGM4MSIsIlx1YjYzYiIsMTIsIlx1YjY0OSIsMjYsIlx1YjY2NVx1YjY2Nlx1YjY2N1x1YjY2OSIsNTAsIlx1YjY5ZVx1YjY5Zlx1YjZhMVx1YjZhMlx1''@;'; put 'put ''YjZhM1x1YjZhNSIsNSwiXHViNmFkXHViNmFlXHViNmFmXHViNmIwXHViNmIyIiwxNl0sWyI4ZDQxIiwiXHViNmMzIiwxNiwiXHViNmQ1Iiw4XSxbIjhkNjEiLCJcdWI2ZGUiLDE3LCJcdWI2ZjFcdWI2ZjJcdWI2ZjNcdWI2ZjVcdWI2ZjZcdWI2ZjdcdWI2ZjlcdWI2ZmEiXSxbIjhkODEiLCJc''@;'; put 'put ''dWI2ZmIiLDQsIlx1YjcwMlx1YjcwM1x1YjcwNFx1YjcwNiIsMzMsIlx1YjcyYVx1YjcyYlx1YjcyZFx1YjcyZVx1YjczMSIsNiwiXHViNzNhXHViNzNjIiw3LCJcdWI3NDVcdWI3NDZcdWI3NDdcdWI3NDlcdWI3NGFcdWI3NGJcdWI3NGQiLDYsIlx1Yjc1NiIsOSwiXHViNzYxXHViNzYyXHVi''@;'; put 'put ''NzYzXHViNzY1XHViNzY2XHViNzY3XHViNzY5Iiw2LCJcdWI3NzJcdWI3NzRcdWI3NzYiLDUsIlx1Yjc3ZVx1Yjc3Zlx1Yjc4MVx1Yjc4Mlx1Yjc4M1x1Yjc4NSIsNiwiXHViNzhlXHViNzkzXHViNzk0XHViNzk1XHViNzlhXHViNzliXHViNzlkXHViNzllIl0sWyI4ZTQxIiwiXHViNzlmXHVi''@;'; put 'put ''N2ExIiw2LCJcdWI3YWFcdWI3YWUiLDUsIlx1YjdiNlx1YjdiN1x1YjdiOSIsOF0sWyI4ZTYxIiwiXHViN2MyIiw0LCJcdWI3YzhcdWI3Y2EiLDE5XSxbIjhlODEiLCJcdWI3ZGUiLDEzLCJcdWI3ZWVcdWI3ZWZcdWI3ZjFcdWI3ZjJcdWI3ZjNcdWI3ZjUiLDYsIlx1YjdmZVx1YjgwMiIsNCwi''@;'; put 'put ''XHViODBhXHViODBiXHViODBkXHViODBlXHViODBmXHViODExIiw2LCJcdWI4MWFcdWI4MWNcdWI4MWUiLDUsIlx1YjgyNlx1YjgyN1x1YjgyOVx1YjgyYVx1YjgyYlx1YjgyZCIsNiwiXHViODM2XHViODNhIiw1LCJcdWI4NDFcdWI4NDJcdWI4NDNcdWI4NDUiLDExLCJcdWI4NTJcdWI4NTQi''@;'; put 'put ''LDcsIlx1Yjg1ZVx1Yjg1Zlx1Yjg2MVx1Yjg2Mlx1Yjg2M1x1Yjg2NSIsNiwiXHViODZlXHViODcwXHViODcyIiw1LCJcdWI4NzlcdWI4N2FcdWI4N2JcdWI4N2QiLDddLFsiOGY0MSIsIlx1Yjg4NSIsNywiXHViODhlIiwxN10sWyI4ZjYxIiwiXHViOGEwIiw3LCJcdWI4YTkiLDYsIlx1Yjhi''@;'; put 'put ''MVx1YjhiMlx1YjhiM1x1YjhiNVx1YjhiNlx1YjhiN1x1YjhiOSIsNF0sWyI4ZjgxIiwiXHViOGJlXHViOGJmXHViOGMyXHViOGM0XHViOGM2Iiw1LCJcdWI4Y2RcdWI4Y2VcdWI4Y2ZcdWI4ZDFcdWI4ZDJcdWI4ZDNcdWI4ZDUiLDcsIlx1YjhkZVx1YjhlMFx1YjhlMiIsNSwiXHViOGVhXHVi''@;'; put 'put ''OGViXHViOGVkXHViOGVlXHViOGVmXHViOGYxIiw2LCJcdWI4ZmFcdWI4ZmNcdWI4ZmUiLDUsIlx1YjkwNSIsMTgsIlx1YjkxOSIsNiwiXHViOTIxIiwyNiwiXHViOTNlXHViOTNmXHViOTQxXHViOTQyXHViOTQzXHViOTQ1Iiw2LCJcdWI5NGRcdWI5NGVcdWI5NTBcdWI5NTIiLDVdLFsiOTA0''@;'; put 'put ''MSIsIlx1Yjk1YVx1Yjk1Ylx1Yjk1ZFx1Yjk1ZVx1Yjk1Zlx1Yjk2MSIsNiwiXHViOTZhXHViOTZjXHViOTZlIiw1LCJcdWI5NzZcdWI5NzdcdWI5NzlcdWI5N2FcdWI5N2JcdWI5N2QiXSxbIjkwNjEiLCJcdWI5N2UiLDUsIlx1Yjk4Nlx1Yjk4OFx1Yjk4Ylx1Yjk4Y1x1Yjk4ZiIsMTVdLFsi''@;'; put 'put ''OTA4MSIsIlx1Yjk5ZiIsMTIsIlx1YjlhZVx1YjlhZlx1YjliMVx1YjliMlx1YjliM1x1YjliNSIsNiwiXHViOWJlXHViOWMwXHViOWMyIiw1LCJcdWI5Y2FcdWI5Y2JcdWI5Y2RcdWI5ZDMiLDQsIlx1YjlkYVx1YjlkY1x1YjlkZlx1YjllMFx1YjllMlx1YjllNlx1YjllN1x1YjllOVx1Yjll''@;'; put 'put ''YVx1YjllYlx1YjllZCIsNiwiXHViOWY2XHViOWZiIiw0LCJcdWJhMDIiLDUsIlx1YmEwOSIsMTEsIlx1YmExNiIsMzMsIlx1YmEzYVx1YmEzYlx1YmEzZFx1YmEzZVx1YmEzZlx1YmE0MVx1YmE0M1x1YmE0NFx1YmE0NVx1YmE0NiJdLFsiOTE0MSIsIlx1YmE0N1x1YmE0YVx1YmE0Y1x1YmE0''@;'; put 'put ''Zlx1YmE1MFx1YmE1MVx1YmE1Mlx1YmE1Nlx1YmE1N1x1YmE1OVx1YmE1YVx1YmE1Ylx1YmE1ZCIsNiwiXHViYTY2XHViYTZhIiw1XSxbIjkxNjEiLCJcdWJhNzJcdWJhNzNcdWJhNzVcdWJhNzZcdWJhNzdcdWJhNzkiLDksIlx1YmE4Nlx1YmE4OFx1YmE4OVx1YmE4YVx1YmE4Ylx1YmE4ZCIs''@;'; put 'put ''NV0sWyI5MTgxIiwiXHViYTkzIiwyMCwiXHViYWFhXHViYWFkXHViYWFlXHViYWFmXHViYWIxXHViYWIzIiw0LCJcdWJhYmFcdWJhYmNcdWJhYmUiLDUsIlx1YmFjNVx1YmFjNlx1YmFjN1x1YmFjOSIsMTQsIlx1YmFkYSIsMzMsIlx1YmFmZFx1YmFmZVx1YmFmZlx1YmIwMVx1YmIwMlx1YmIw''@;'; put 'put ''M1x1YmIwNSIsNywiXHViYjBlXHViYjEwXHViYjEyIiw1LCJcdWJiMTlcdWJiMWFcdWJiMWJcdWJiMWRcdWJiMWVcdWJiMWZcdWJiMjEiLDZdLFsiOTI0MSIsIlx1YmIyOFx1YmIyYVx1YmIyYyIsNywiXHViYjM3XHViYjM5XHViYjNhXHViYjNmIiw0LCJcdWJiNDZcdWJiNDhcdWJiNGFcdWJi''@;'; put 'put ''NGJcdWJiNGNcdWJiNGVcdWJiNTFcdWJiNTIiXSxbIjkyNjEiLCJcdWJiNTNcdWJiNTVcdWJiNTZcdWJiNTdcdWJiNTkiLDcsIlx1YmI2Mlx1YmI2NCIsNywiXHViYjZkIiw0XSxbIjkyODEiLCJcdWJiNzIiLDIxLCJcdWJiODlcdWJiOGFcdWJiOGJcdWJiOGRcdWJiOGVcdWJiOGZcdWJiOTEi''@;'; put 'put ''LDE4LCJcdWJiYTVcdWJiYTZcdWJiYTdcdWJiYTlcdWJiYWFcdWJiYWJcdWJiYWQiLDYsIlx1YmJiNVx1YmJiNlx1YmJiOCIsNywiXHViYmMxXHViYmMyXHViYmMzXHViYmM1XHViYmM2XHViYmM3XHViYmM5Iiw2LCJcdWJiZDFcdWJiZDJcdWJiZDQiLDM1LCJcdWJiZmFcdWJiZmJcdWJiZmRc''@;'; put 'put ''dWJiZmVcdWJjMDEiXSxbIjkzNDEiLCJcdWJjMDMiLDQsIlx1YmMwYVx1YmMwZVx1YmMxMFx1YmMxMlx1YmMxM1x1YmMxOVx1YmMxYVx1YmMyMFx1YmMyMVx1YmMyMlx1YmMyM1x1YmMyNlx1YmMyOFx1YmMyYVx1YmMyYlx1YmMyY1x1YmMyZVx1YmMyZlx1YmMzMlx1YmMzM1x1YmMzNSJdLFsi''@;'; put 'put ''OTM2MSIsIlx1YmMzNlx1YmMzN1x1YmMzOSIsNiwiXHViYzQyXHViYzQ2XHViYzQ3XHViYzQ4XHViYzRhXHViYzRiXHViYzRlXHViYzRmXHViYzUxIiw4XSxbIjkzODEiLCJcdWJjNWFcdWJjNWJcdWJjNWNcdWJjNWUiLDM3LCJcdWJjODZcdWJjODdcdWJjODlcdWJjOGFcdWJjOGRcdWJjOGYi''@;'; put 'put ''LDQsIlx1YmM5Nlx1YmM5OFx1YmM5YiIsNCwiXHViY2EyXHViY2EzXHViY2E1XHViY2E2XHViY2E5Iiw2LCJcdWJjYjJcdWJjYjYiLDUsIlx1YmNiZVx1YmNiZlx1YmNjMVx1YmNjMlx1YmNjM1x1YmNjNSIsNywiXHViY2NlXHViY2QyXHViY2QzXHViY2Q0XHViY2Q2XHViY2Q3XHViY2Q5XHVi''@;'; put 'put ''Y2RhXHViY2RiXHViY2RkIiwyMiwiXHViY2Y3XHViY2Y5XHViY2ZhXHViY2ZiXHViY2ZkIl0sWyI5NDQxIiwiXHViY2ZlIiw1LCJcdWJkMDZcdWJkMDhcdWJkMGEiLDUsIlx1YmQxMVx1YmQxMlx1YmQxM1x1YmQxNSIsOF0sWyI5NDYxIiwiXHViZDFlIiw1LCJcdWJkMjUiLDYsIlx1YmQyZCIs''@;'; put 'put ''MTJdLFsiOTQ4MSIsIlx1YmQzYSIsNSwiXHViZDQxIiw2LCJcdWJkNGFcdWJkNGJcdWJkNGRcdWJkNGVcdWJkNGZcdWJkNTEiLDYsIlx1YmQ1YSIsOSwiXHViZDY1XHViZDY2XHViZDY3XHViZDY5IiwyMiwiXHViZDgyXHViZDgzXHViZDg1XHViZDg2XHViZDhiIiw0LCJcdWJkOTJcdWJkOTRc''@;'; put 'put ''dWJkOTZcdWJkOTdcdWJkOThcdWJkOWJcdWJkOWQiLDYsIlx1YmRhNSIsMTAsIlx1YmRiMSIsNiwiXHViZGI5IiwyNF0sWyI5NTQxIiwiXHViZGQyXHViZGQzXHViZGQ2XHViZGQ3XHViZGQ5XHViZGRhXHViZGRiXHViZGRkIiwxMSwiXHViZGVhIiw1LCJcdWJkZjEiXSxbIjk1NjEiLCJcdWJk''@;'; put 'put ''ZjJcdWJkZjNcdWJkZjVcdWJkZjZcdWJkZjdcdWJkZjkiLDYsIlx1YmUwMVx1YmUwMlx1YmUwNFx1YmUwNiIsNSwiXHViZTBlXHViZTBmXHViZTExXHViZTEyXHViZTEzIl0sWyI5NTgxIiwiXHViZTE1Iiw2LCJcdWJlMWVcdWJlMjAiLDM1LCJcdWJlNDZcdWJlNDdcdWJlNDlcdWJlNGFcdWJl''@;'; put 'put ''NGJcdWJlNGRcdWJlNGYiLDQsIlx1YmU1Nlx1YmU1OFx1YmU1Y1x1YmU1ZFx1YmU1ZVx1YmU1Zlx1YmU2Mlx1YmU2M1x1YmU2NVx1YmU2Nlx1YmU2N1x1YmU2OVx1YmU2YiIsNCwiXHViZTcyXHViZTc2Iiw0LCJcdWJlN2VcdWJlN2ZcdWJlODFcdWJlODJcdWJlODNcdWJlODUiLDYsIlx1YmU4''@;'; put 'put ''ZVx1YmU5MiIsNSwiXHViZTlhIiwxMywiXHViZWE5IiwxNF0sWyI5NjQxIiwiXHViZWI4IiwyMywiXHViZWQyXHViZWQzIl0sWyI5NjYxIiwiXHViZWQ1XHViZWQ2XHViZWQ5Iiw2LCJcdWJlZTFcdWJlZTJcdWJlZTYiLDUsIlx1YmVlZCIsOF0sWyI5NjgxIiwiXHViZWY2IiwxMCwiXHViZjAy''@;'; put 'put ''Iiw1LCJcdWJmMGEiLDEzLCJcdWJmMWFcdWJmMWUiLDMzLCJcdWJmNDJcdWJmNDNcdWJmNDVcdWJmNDZcdWJmNDdcdWJmNDkiLDYsIlx1YmY1Mlx1YmY1M1x1YmY1NFx1YmY1NiIsNDRdLFsiOTc0MSIsIlx1YmY4MyIsMTYsIlx1YmY5NSIsOF0sWyI5NzYxIiwiXHViZjllIiwxNywiXHViZmIx''@;'; put 'put ''Iiw3XSxbIjk3ODEiLCJcdWJmYjkiLDExLCJcdWJmYzYiLDUsIlx1YmZjZVx1YmZjZlx1YmZkMVx1YmZkMlx1YmZkM1x1YmZkNSIsNiwiXHViZmRkXHViZmRlXHViZmUwXHViZmUyIiw4OSwiXHVjMDNkXHVjMDNlXHVjMDNmIl0sWyI5ODQxIiwiXHVjMDQwIiwxNiwiXHVjMDUyIiw1LCJcdWMw''@;'; put 'put ''NTlcdWMwNWFcdWMwNWIiXSxbIjk4NjEiLCJcdWMwNWRcdWMwNWVcdWMwNWZcdWMwNjEiLDYsIlx1YzA2YSIsMTVdLFsiOTg4MSIsIlx1YzA3YSIsMjEsIlx1YzA5Mlx1YzA5M1x1YzA5NVx1YzA5Nlx1YzA5N1x1YzA5OSIsNiwiXHVjMGEyXHVjMGE0XHVjMGE2Iiw1LCJcdWMwYWVcdWMwYjFc''@;'; put 'put ''dWMwYjJcdWMwYjciLDQsIlx1YzBiZVx1YzBjMlx1YzBjM1x1YzBjNFx1YzBjNlx1YzBjN1x1YzBjYVx1YzBjYlx1YzBjZFx1YzBjZVx1YzBjZlx1YzBkMSIsNiwiXHVjMGRhXHVjMGRlIiw1LCJcdWMwZTZcdWMwZTdcdWMwZTlcdWMwZWFcdWMwZWJcdWMwZWQiLDYsIlx1YzBmNlx1YzBmOFx1''@;'; put 'put ''YzBmYSIsNSwiXHVjMTAxXHVjMTAyXHVjMTAzXHVjMTA1XHVjMTA2XHVjMTA3XHVjMTA5Iiw2LCJcdWMxMTFcdWMxMTJcdWMxMTNcdWMxMTRcdWMxMTYiLDUsIlx1YzEyMVx1YzEyMlx1YzEyNVx1YzEyOFx1YzEyOVx1YzEyYVx1YzEyYlx1YzEyZSJdLFsiOTk0MSIsIlx1YzEzMlx1YzEzM1x1''@;'; put 'put ''YzEzNFx1YzEzNVx1YzEzN1x1YzEzYVx1YzEzYlx1YzEzZFx1YzEzZVx1YzEzZlx1YzE0MSIsNiwiXHVjMTRhXHVjMTRlIiw1LCJcdWMxNTZcdWMxNTciXSxbIjk5NjEiLCJcdWMxNTlcdWMxNWFcdWMxNWJcdWMxNWQiLDYsIlx1YzE2Nlx1YzE2YSIsNSwiXHVjMTcxXHVjMTcyXHVjMTczXHVj''@;'; put 'put ''MTc1XHVjMTc2XHVjMTc3XHVjMTc5XHVjMTdhXHVjMTdiIl0sWyI5OTgxIiwiXHVjMTdjIiw4LCJcdWMxODYiLDUsIlx1YzE4Zlx1YzE5MVx1YzE5Mlx1YzE5M1x1YzE5NVx1YzE5NyIsNCwiXHVjMTllXHVjMWEwXHVjMWEyXHVjMWEzXHVjMWE0XHVjMWE2XHVjMWE3XHVjMWFhXHVjMWFiXHVj''@;'; put 'put ''MWFkXHVjMWFlXHVjMWFmXHVjMWIxIiwxMSwiXHVjMWJlIiw1LCJcdWMxYzVcdWMxYzZcdWMxYzdcdWMxYzlcdWMxY2FcdWMxY2JcdWMxY2QiLDYsIlx1YzFkNVx1YzFkNlx1YzFkOSIsNiwiXHVjMWUxXHVjMWUyXHVjMWUzXHVjMWU1XHVjMWU2XHVjMWU3XHVjMWU5Iiw2LCJcdWMxZjJcdWMx''@;'; put 'put ''ZjQiLDcsIlx1YzFmZVx1YzFmZlx1YzIwMVx1YzIwMlx1YzIwM1x1YzIwNSIsNiwiXHVjMjBlXHVjMjEwXHVjMjEyIiw1LCJcdWMyMWFcdWMyMWJcdWMyMWRcdWMyMWVcdWMyMjFcdWMyMjJcdWMyMjMiXSxbIjlhNDEiLCJcdWMyMjRcdWMyMjVcdWMyMjZcdWMyMjdcdWMyMmFcdWMyMmNcdWMy''@;'; put 'put ''MmVcdWMyMzBcdWMyMzNcdWMyMzUiLDE2XSxbIjlhNjEiLCJcdWMyNDZcdWMyNDdcdWMyNDkiLDYsIlx1YzI1Mlx1YzI1M1x1YzI1NVx1YzI1Nlx1YzI1N1x1YzI1OSIsNiwiXHVjMjYxXHVjMjYyXHVjMjYzXHVjMjY0XHVjMjY2Il0sWyI5YTgxIiwiXHVjMjY3Iiw0LCJcdWMyNmVcdWMyNmZc''@;'; put 'put ''dWMyNzFcdWMyNzJcdWMyNzNcdWMyNzUiLDYsIlx1YzI3ZVx1YzI4MFx1YzI4MiIsNSwiXHVjMjhhIiw1LCJcdWMyOTEiLDYsIlx1YzI5OVx1YzI5YVx1YzI5Y1x1YzI5ZSIsNSwiXHVjMmE2XHVjMmE3XHVjMmE5XHVjMmFhXHVjMmFiXHVjMmFlIiw1LCJcdWMyYjZcdWMyYjhcdWMyYmEiLDMz''@;'; put 'put ''LCJcdWMyZGVcdWMyZGZcdWMyZTFcdWMyZTJcdWMyZTUiLDUsIlx1YzJlZVx1YzJmMFx1YzJmMlx1YzJmM1x1YzJmNFx1YzJmNVx1YzJmN1x1YzJmYVx1YzJmZFx1YzJmZVx1YzJmZlx1YzMwMSIsNiwiXHVjMzBhXHVjMzBiXHVjMzBlXHVjMzBmIl0sWyI5YjQxIiwiXHVjMzEwXHVjMzExXHVj''@;'; put 'put ''MzEyXHVjMzE2XHVjMzE3XHVjMzE5XHVjMzFhXHVjMzFiXHVjMzFkIiw2LCJcdWMzMjZcdWMzMjdcdWMzMmEiLDhdLFsiOWI2MSIsIlx1YzMzMyIsMTcsIlx1YzM0NiIsN10sWyI5YjgxIiwiXHVjMzRlIiwyNSwiXHVjMzZhXHVjMzZiXHVjMzZkXHVjMzZlXHVjMzZmXHVjMzcxXHVjMzczIiw0''@;'; put 'put ''LCJcdWMzN2FcdWMzN2JcdWMzN2UiLDUsIlx1YzM4NVx1YzM4Nlx1YzM4N1x1YzM4OVx1YzM4YVx1YzM4Ylx1YzM4ZCIsNTAsIlx1YzNjMSIsMjIsIlx1YzNkYSJdLFsiOWM0MSIsIlx1YzNkYlx1YzNkZFx1YzNkZVx1YzNlMVx1YzNlMyIsNCwiXHVjM2VhXHVjM2ViXHVjM2VjXHVjM2VlIiw1''@;'; put 'put ''LCJcdWMzZjZcdWMzZjdcdWMzZjkiLDVdLFsiOWM2MSIsIlx1YzNmZiIsOCwiXHVjNDA5Iiw2LCJcdWM0MTEiLDldLFsiOWM4MSIsIlx1YzQxYiIsOCwiXHVjNDI1Iiw2LCJcdWM0MmRcdWM0MmVcdWM0MmZcdWM0MzFcdWM0MzJcdWM0MzNcdWM0MzUiLDYsIlx1YzQzZSIsOSwiXHVjNDQ5Iiwy''@;'; put 'put ''NiwiXHVjNDY2XHVjNDY3XHVjNDY5XHVjNDZhXHVjNDZiXHVjNDZkIiw2LCJcdWM0NzZcdWM0NzdcdWM0NzhcdWM0N2EiLDUsIlx1YzQ4MSIsMTgsIlx1YzQ5NSIsNiwiXHVjNDlkIiwxMl0sWyI5ZDQxIiwiXHVjNGFhIiwxMywiXHVjNGI5XHVjNGJhXHVjNGJiXHVjNGJkIiw4XSxbIjlkNjEi''@;'; put 'put ''LCJcdWM0YzYiLDI1XSxbIjlkODEiLCJcdWM0ZTAiLDgsIlx1YzRlYSIsNSwiXHVjNGYyXHVjNGYzXHVjNGY1XHVjNGY2XHVjNGY3XHVjNGY5XHVjNGZiXHVjNGZjXHVjNGZkXHVjNGZlXHVjNTAyIiw5LCJcdWM1MGRcdWM1MGVcdWM1MGZcdWM1MTFcdWM1MTJcdWM1MTNcdWM1MTUiLDYsIlx1''@;'; put 'put ''YzUxZCIsMTAsIlx1YzUyYVx1YzUyYlx1YzUyZFx1YzUyZVx1YzUyZlx1YzUzMSIsNiwiXHVjNTNhXHVjNTNjXHVjNTNlIiw1LCJcdWM1NDZcdWM1NDdcdWM1NGJcdWM1NGZcdWM1NTBcdWM1NTFcdWM1NTJcdWM1NTZcdWM1NWFcdWM1NWJcdWM1NWNcdWM1NWZcdWM1NjJcdWM1NjNcdWM1NjVc''@;'; put 'put ''dWM1NjZcdWM1NjdcdWM1NjkiLDYsIlx1YzU3Mlx1YzU3NiIsNSwiXHVjNTdlXHVjNTdmXHVjNTgxXHVjNTgyXHVjNTgzXHVjNTg1XHVjNTg2XHVjNTg4XHVjNTg5XHVjNThhXHVjNThiXHVjNThlXHVjNTkwXHVjNTkyXHVjNTkzXHVjNTk0Il0sWyI5ZTQxIiwiXHVjNTk2XHVjNTk5XHVjNTlh''@;'; put 'put ''XHVjNTliXHVjNTlkXHVjNTllXHVjNTlmXHVjNWExIiw3LCJcdWM1YWEiLDksIlx1YzViNiJdLFsiOWU2MSIsIlx1YzViN1x1YzViYVx1YzViZiIsNCwiXHVjNWNiXHVjNWNkXHVjNWNmXHVjNWQyXHVjNWQzXHVjNWQ1XHVjNWQ2XHVjNWQ3XHVjNWQ5Iiw2LCJcdWM1ZTJcdWM1ZTRcdWM1ZTZc''@;'; put 'put ''dWM1ZTciXSxbIjllODEiLCJcdWM1ZThcdWM1ZTlcdWM1ZWFcdWM1ZWJcdWM1ZWZcdWM1ZjFcdWM1ZjJcdWM1ZjNcdWM1ZjVcdWM1ZjhcdWM1ZjlcdWM1ZmFcdWM1ZmJcdWM2MDJcdWM2MDNcdWM2MDRcdWM2MDlcdWM2MGFcdWM2MGJcdWM2MGRcdWM2MGVcdWM2MGZcdWM2MTEiLDYsIlx1YzYx''@;'; put 'put ''YVx1YzYxZCIsNiwiXHVjNjI2XHVjNjI3XHVjNjI5XHVjNjJhXHVjNjJiXHVjNjJmXHVjNjMxXHVjNjMyXHVjNjM2XHVjNjM4XHVjNjNhXHVjNjNjXHVjNjNkXHVjNjNlXHVjNjNmXHVjNjQyXHVjNjQzXHVjNjQ1XHVjNjQ2XHVjNjQ3XHVjNjQ5Iiw2LCJcdWM2NTJcdWM2NTYiLDUsIlx1YzY1''@;'; put 'put ''ZVx1YzY1Zlx1YzY2MSIsMTAsIlx1YzY2ZFx1YzY2ZVx1YzY3MFx1YzY3MiIsNSwiXHVjNjdhXHVjNjdiXHVjNjdkXHVjNjdlXHVjNjdmXHVjNjgxIiw2LCJcdWM2OGFcdWM2OGNcdWM2OGUiLDUsIlx1YzY5Nlx1YzY5N1x1YzY5OVx1YzY5YVx1YzY5Ylx1YzY5ZCIsNiwiXHVjNmE2Il0sWyI5''@;'; put 'put ''ZjQxIiwiXHVjNmE4XHVjNmFhIiw1LCJcdWM2YjJcdWM2YjNcdWM2YjVcdWM2YjZcdWM2YjdcdWM2YmIiLDQsIlx1YzZjMlx1YzZjNFx1YzZjNiIsNSwiXHVjNmNlIl0sWyI5ZjYxIiwiXHVjNmNmXHVjNmQxXHVjNmQyXHVjNmQzXHVjNmQ1Iiw2LCJcdWM2ZGVcdWM2ZGZcdWM2ZTIiLDUsIlx1''@;'; put 'put ''YzZlYVx1YzZlYlx1YzZlZFx1YzZlZVx1YzZlZlx1YzZmMVx1YzZmMiJdLFsiOWY4MSIsIlx1YzZmMyIsNCwiXHVjNmZhXHVjNmZiXHVjNmZjXHVjNmZlIiw1LCJcdWM3MDZcdWM3MDdcdWM3MDlcdWM3MGFcdWM3MGJcdWM3MGQiLDYsIlx1YzcxNlx1YzcxOFx1YzcxYSIsNSwiXHVjNzIyXHVj''@;'; put 'put ''NzIzXHVjNzI1XHVjNzI2XHVjNzI3XHVjNzI5Iiw2LCJcdWM3MzJcdWM3MzRcdWM3MzZcdWM3MzhcdWM3MzlcdWM3M2FcdWM3M2JcdWM3M2VcdWM3M2ZcdWM3NDFcdWM3NDJcdWM3NDNcdWM3NDUiLDQsIlx1Yzc0Ylx1Yzc0ZVx1Yzc1MFx1Yzc1OVx1Yzc1YVx1Yzc1Ylx1Yzc1ZFx1Yzc1ZVx1''@;'; put 'put ''Yzc1Zlx1Yzc2MSIsNiwiXHVjNzY5XHVjNzZhXHVjNzZjIiw3LCJcdWM3NzZcdWM3NzdcdWM3NzlcdWM3N2FcdWM3N2JcdWM3N2ZcdWM3ODBcdWM3ODFcdWM3ODJcdWM3ODZcdWM3OGJcdWM3OGNcdWM3OGRcdWM3OGZcdWM3OTJcdWM3OTNcdWM3OTVcdWM3OTlcdWM3OWIiLDQsIlx1YzdhMlx1''@;'; put 'put ''YzdhNyIsNCwiXHVjN2FlXHVjN2FmXHVjN2IxXHVjN2IyXHVjN2IzXHVjN2I1XHVjN2I2XHVjN2I3Il0sWyJhMDQxIiwiXHVjN2I4XHVjN2I5XHVjN2JhXHVjN2JiXHVjN2JlXHVjN2MyIiw1LCJcdWM3Y2FcdWM3Y2JcdWM3Y2RcdWM3Y2ZcdWM3ZDEiLDYsIlx1YzdkOVx1YzdkYVx1YzdkYlx1''@;'; put 'put ''YzdkYyJdLFsiYTA2MSIsIlx1YzdkZSIsNSwiXHVjN2U1XHVjN2U2XHVjN2U3XHVjN2U5XHVjN2VhXHVjN2ViXHVjN2VkIiwxM10sWyJhMDgxIiwiXHVjN2ZiIiw0LCJcdWM4MDJcdWM4MDNcdWM4MDVcdWM4MDZcdWM4MDdcdWM4MDlcdWM4MGIiLDQsIlx1YzgxMlx1YzgxNFx1YzgxNyIsNCwi''@;'; put 'put ''XHVjODFlXHVjODFmXHVjODIxXHVjODIyXHVjODIzXHVjODI1Iiw2LCJcdWM4MmVcdWM4MzBcdWM4MzIiLDUsIlx1YzgzOVx1YzgzYVx1YzgzYlx1YzgzZFx1YzgzZVx1YzgzZlx1Yzg0MSIsNiwiXHVjODRhXHVjODRiXHVjODRlIiw1LCJcdWM4NTUiLDI2LCJcdWM4NzJcdWM4NzNcdWM4NzVc''@;'; put 'put ''dWM4NzZcdWM4NzdcdWM4NzlcdWM4N2IiLDQsIlx1Yzg4Mlx1Yzg4NFx1Yzg4OFx1Yzg4OVx1Yzg4YVx1Yzg4ZSIsNSwiXHVjODk1Iiw3LCJcdWM4OWVcdWM4YTBcdWM4YTJcdWM4YTNcdWM4YTQiXSxbImExNDEiLCJcdWM4YTVcdWM4YTZcdWM4YTdcdWM4YTkiLDE4LCJcdWM4YmVcdWM4YmZc''@;'; put 'put ''dWM4YzBcdWM4YzEiXSxbImExNjEiLCJcdWM4YzJcdWM4YzNcdWM4YzVcdWM4YzZcdWM4YzdcdWM4YzlcdWM4Y2FcdWM4Y2JcdWM4Y2QiLDYsIlx1YzhkNlx1YzhkOFx1YzhkYSIsNSwiXHVjOGUyXHVjOGUzXHVjOGU1Il0sWyJhMTgxIiwiXHVjOGU2IiwxNCwiXHVjOGY2Iiw1LCJcdWM4ZmVc''@;'; put 'put ''dWM4ZmZcdWM5MDFcdWM5MDJcdWM5MDNcdWM5MDciLDQsIlx1YzkwZVx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTIwMjVcdTIwMjZceGE4XHUzMDAzXHhhZFx1MjAxNVx1MjIyNVx1ZmYzY1x1MjIzY1x1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOCIsOSwiXHhiMVx4''@;'; put 'put ''ZDdceGY3XHUyMjYwXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM0XHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1MjEyYlx1ZmZlMFx1ZmZlMVx1ZmZlNVx1MjY0Mlx1MjY0MFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx4YTdcdTIwM2JcdTI2MDZcdTI2MDVcdTI1Y2Jc''@;'; put 'put ''dTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTI1YmRcdTI1YmNcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTIxOTRcdTMwMTNcdTIyNmFcdTIyNmJcdTIyMWFcdTIyM2RcdTIyMWRcdTIyMzVcdTIyMmJcdTIyMmNcdTIyMDhcdTIyMGJcdTIyODZcdTIy''@;'; put 'put ''ODdcdTIyODJcdTIyODNcdTIyMmFcdTIyMjlcdTIyMjdcdTIyMjhcdWZmZTIiXSxbImEyNDEiLCJcdWM5MTBcdWM5MTIiLDUsIlx1YzkxOSIsMThdLFsiYTI2MSIsIlx1YzkyZCIsNiwiXHVjOTM1IiwxOF0sWyJhMjgxIiwiXHVjOTQ4Iiw3LCJcdWM5NTJcdWM5NTNcdWM5NTVcdWM5NTZcdWM5''@;'; put 'put ''NTdcdWM5NTkiLDYsIlx1Yzk2Mlx1Yzk2NCIsNywiXHVjOTZkXHVjOTZlXHVjOTZmXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzXHhiNFx1ZmY1ZVx1MDJjN1x1MDJkOFx1MDJkZFx1MDJkYVx1MDJkOVx4YjhcdTAyZGJceGExXHhiZlx1MDJkMFx1MjIyZVx1MjIxMVx1MjIwZlx4YTRcdTIxMDlc''@;'; put 'put ''dTIwMzBcdTI1YzFcdTI1YzBcdTI1YjdcdTI1YjZcdTI2NjRcdTI2NjBcdTI2NjFcdTI2NjVcdTI2NjdcdTI2NjNcdTIyOTlcdTI1YzhcdTI1YTNcdTI1ZDBcdTI1ZDFcdTI1OTJcdTI1YTRcdTI1YTVcdTI1YThcdTI1YTdcdTI1YTZcdTI1YTlcdTI2NjhcdTI2MGZcdTI2MGVcdTI2MWNcdTI2''@;'; put 'put ''MWVceGI2XHUyMDIwXHUyMDIxXHUyMTk1XHUyMTk3XHUyMTk5XHUyMTk2XHUyMTk4XHUyNjZkXHUyNjY5XHUyNjZhXHUyNjZjXHUzMjdmXHUzMjFjXHUyMTE2XHUzM2M3XHUyMTIyXHUzM2MyXHUzM2Q4XHUyMTIxXHUyMGFjXHhhZSJdLFsiYTM0MSIsIlx1Yzk3MVx1Yzk3Mlx1Yzk3M1x1Yzk3''@;'; put 'put ''NSIsNiwiXHVjOTdkIiwxMCwiXHVjOThhXHVjOThiXHVjOThkXHVjOThlXHVjOThmIl0sWyJhMzYxIiwiXHVjOTkxIiw2LCJcdWM5OWFcdWM5OWNcdWM5OWUiLDE2XSxbImEzODEiLCJcdWM5YWYiLDE2LCJcdWM5YzJcdWM5YzNcdWM5YzVcdWM5YzZcdWM5YzlcdWM5Y2IiLDQsIlx1YzlkMlx1''@;'; put 'put ''YzlkNFx1YzlkN1x1YzlkOFx1YzlkYlx1ZmYwMSIsNTgsIlx1ZmZlNlx1ZmYzZCIsMzIsIlx1ZmZlMyJdLFsiYTQ0MSIsIlx1YzlkZVx1YzlkZlx1YzllMVx1YzllM1x1YzllNVx1YzllNlx1YzllOFx1YzllOVx1YzllYVx1YzllYlx1YzllZVx1YzlmMiIsNSwiXHVjOWZhXHVjOWZiXHVjOWZk''@;'; put 'put ''XHVjOWZlXHVjOWZmXHVjYTAxXHVjYTAyXHVjYTAzXHVjYTA0Il0sWyJhNDYxIiwiXHVjYTA1XHVjYTA2XHVjYTA3XHVjYTBhXHVjYTBlIiw1LCJcdWNhMTVcdWNhMTZcdWNhMTdcdWNhMTkiLDEyXSxbImE0ODEiLCJcdWNhMjZcdWNhMjdcdWNhMjhcdWNhMmEiLDI4LCJcdTMxMzEiLDkzXSxb''@;'; put 'put ''ImE1NDEiLCJcdWNhNDciLDQsIlx1Y2E0ZVx1Y2E0Zlx1Y2E1MVx1Y2E1Mlx1Y2E1M1x1Y2E1NSIsNiwiXHVjYTVlXHVjYTYyIiw1LCJcdWNhNjlcdWNhNmEiXSxbImE1NjEiLCJcdWNhNmIiLDE3LCJcdWNhN2UiLDUsIlx1Y2E4NVx1Y2E4NiJdLFsiYTU4MSIsIlx1Y2E4NyIsMTYsIlx1Y2E5''@;'; put 'put ''OSIsMTQsIlx1MjE3MCIsOV0sWyJhNWIwIiwiXHUyMTYwIiw5XSxbImE1YzEiLCJcdTAzOTEiLDE2LCJcdTAzYTMiLDZdLFsiYTVlMSIsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNl0sWyJhNjQxIiwiXHVjYWE4IiwxOSwiXHVjYWJlXHVjYWJmXHVjYWMxXHVjYWMyXHVjYWMzXHVjYWM1Il0sWyJh''@;'; put 'put ''NjYxIiwiXHVjYWM2Iiw1LCJcdWNhY2VcdWNhZDBcdWNhZDJcdWNhZDRcdWNhZDVcdWNhZDZcdWNhZDdcdWNhZGEiLDUsIlx1Y2FlMSIsNl0sWyJhNjgxIiwiXHVjYWU4XHVjYWU5XHVjYWVhXHVjYWViXHVjYWVkIiw2LCJcdWNhZjUiLDE4LCJcdWNiMDlcdWNiMGFcdTI1MDBcdTI1MDJcdTI1''@;'; put 'put ''MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVc''@;'; put 'put ''dTI1MzhcdTI1NDJcdTI1MTJcdTI1MTFcdTI1MWFcdTI1MTlcdTI1MTZcdTI1MTVcdTI1MGVcdTI1MGRcdTI1MWVcdTI1MWZcdTI1MjFcdTI1MjJcdTI1MjZcdTI1MjdcdTI1MjlcdTI1MmFcdTI1MmRcdTI1MmVcdTI1MzFcdTI1MzJcdTI1MzVcdTI1MzZcdTI1MzlcdTI1M2FcdTI1M2RcdTI1''@;'; put 'put ''M2VcdTI1NDBcdTI1NDFcdTI1NDMiLDddLFsiYTc0MSIsIlx1Y2IwYiIsNCwiXHVjYjExXHVjYjEyXHVjYjEzXHVjYjE1XHVjYjE2XHVjYjE3XHVjYjE5Iiw2LCJcdWNiMjIiLDddLFsiYTc2MSIsIlx1Y2IyYSIsMjIsIlx1Y2I0Mlx1Y2I0M1x1Y2I0NCJdLFsiYTc4MSIsIlx1Y2I0NVx1Y2I0''@;'; put 'put ''Nlx1Y2I0N1x1Y2I0YVx1Y2I0Ylx1Y2I0ZFx1Y2I0ZVx1Y2I0Zlx1Y2I1MSIsNiwiXHVjYjVhXHVjYjViXHVjYjVjXHVjYjVlIiw1LCJcdWNiNjUiLDcsIlx1MzM5NVx1MzM5Nlx1MzM5N1x1MjExM1x1MzM5OFx1MzNjNFx1MzNhM1x1MzNhNFx1MzNhNVx1MzNhNlx1MzM5OSIsOSwiXHUzM2Nh''@;'; put 'put ''XHUzMzhkXHUzMzhlXHUzMzhmXHUzM2NmXHUzMzg4XHUzMzg5XHUzM2M4XHUzM2E3XHUzM2E4XHUzM2IwIiw5LCJcdTMzODAiLDQsIlx1MzNiYSIsNSwiXHUzMzkwIiw0LCJcdTIxMjZcdTMzYzBcdTMzYzFcdTMzOGFcdTMzOGJcdTMzOGNcdTMzZDZcdTMzYzVcdTMzYWRcdTMzYWVcdTMzYWZc''@;'; put 'put ''dTMzZGJcdTMzYTlcdTMzYWFcdTMzYWJcdTMzYWNcdTMzZGRcdTMzZDBcdTMzZDNcdTMzYzNcdTMzYzlcdTMzZGNcdTMzYzYiXSxbImE4NDEiLCJcdWNiNmQiLDEwLCJcdWNiN2EiLDE0XSxbImE4NjEiLCJcdWNiODkiLDE4LCJcdWNiOWQiLDZdLFsiYTg4MSIsIlx1Y2JhNCIsMTksIlx1Y2Ji''@;'; put 'put ''OSIsMTEsIlx4YzZceGQwXHhhYVx1MDEyNiJdLFsiYThhNiIsIlx1MDEzMiJdLFsiYThhOCIsIlx1MDEzZlx1MDE0MVx4ZDhcdTAxNTJceGJhXHhkZVx1MDE2Nlx1MDE0YSJdLFsiYThiMSIsIlx1MzI2MCIsMjcsIlx1MjRkMCIsMjUsIlx1MjQ2MCIsMTQsIlx4YmRcdTIxNTNcdTIxNTRceGJj''@;'; put 'put ''XHhiZVx1MjE1Ylx1MjE1Y1x1MjE1ZFx1MjE1ZSJdLFsiYTk0MSIsIlx1Y2JjNSIsMTQsIlx1Y2JkNSIsMTBdLFsiYTk2MSIsIlx1Y2JlMFx1Y2JlMVx1Y2JlMlx1Y2JlM1x1Y2JlNVx1Y2JlNlx1Y2JlOFx1Y2JlYSIsMThdLFsiYTk4MSIsIlx1Y2JmZCIsMTQsIlx1Y2MwZVx1Y2MwZlx1Y2Mx''@;'; put 'put ''MVx1Y2MxMlx1Y2MxM1x1Y2MxNSIsNiwiXHVjYzFlXHVjYzFmXHVjYzIwXHVjYzIzXHVjYzI0XHhlNlx1MDExMVx4ZjBcdTAxMjdcdTAxMzFcdTAxMzNcdTAxMzhcdTAxNDBcdTAxNDJceGY4XHUwMTUzXHhkZlx4ZmVcdTAxNjdcdTAxNGJcdTAxNDlcdTMyMDAiLDI3LCJcdTI0OWMiLDI1LCJc''@;'; put 'put ''dTI0NzQiLDE0LCJceGI5XHhiMlx4YjNcdTIwNzRcdTIwN2ZcdTIwODFcdTIwODJcdTIwODNcdTIwODQiXSxbImFhNDEiLCJcdWNjMjVcdWNjMjZcdWNjMmFcdWNjMmJcdWNjMmRcdWNjMmZcdWNjMzEiLDYsIlx1Y2MzYVx1Y2MzZiIsNCwiXHVjYzQ2XHVjYzQ3XHVjYzQ5XHVjYzRhXHVjYzRi''@;'; put 'put ''XHVjYzRkXHVjYzRlIl0sWyJhYTYxIiwiXHVjYzRmIiw0LCJcdWNjNTZcdWNjNWEiLDUsIlx1Y2M2MVx1Y2M2Mlx1Y2M2M1x1Y2M2NVx1Y2M2N1x1Y2M2OSIsNiwiXHVjYzcxXHVjYzcyIl0sWyJhYTgxIiwiXHVjYzczXHVjYzc0XHVjYzc2IiwyOSwiXHUzMDQxIiw4Ml0sWyJhYjQxIiwiXHVj''@;'; put 'put ''Yzk0XHVjYzk1XHVjYzk2XHVjYzk3XHVjYzlhXHVjYzliXHVjYzlkXHVjYzllXHVjYzlmXHVjY2ExIiw2LCJcdWNjYWFcdWNjYWUiLDUsIlx1Y2NiNlx1Y2NiN1x1Y2NiOSJdLFsiYWI2MSIsIlx1Y2NiYVx1Y2NiYlx1Y2NiZCIsNiwiXHVjY2M2XHVjY2M4XHVjY2NhIiw1LCJcdWNjZDFcdWNj''@;'; put 'put ''ZDJcdWNjZDNcdWNjZDUiLDVdLFsiYWI4MSIsIlx1Y2NkYiIsOCwiXHVjY2U1Iiw2LCJcdWNjZWRcdWNjZWVcdWNjZWZcdWNjZjEiLDEyLCJcdTMwYTEiLDg1XSxbImFjNDEiLCJcdWNjZmVcdWNjZmZcdWNkMDBcdWNkMDIiLDUsIlx1Y2QwYVx1Y2QwYlx1Y2QwZFx1Y2QwZVx1Y2QwZlx1Y2Qx''@;'; put 'put ''MSIsNiwiXHVjZDFhXHVjZDFjXHVjZDFlXHVjZDFmXHVjZDIwIl0sWyJhYzYxIiwiXHVjZDIxXHVjZDIyXHVjZDIzXHVjZDI1XHVjZDI2XHVjZDI3XHVjZDI5XHVjZDJhXHVjZDJiXHVjZDJkIiwxMSwiXHVjZDNhIiw0XSxbImFjODEiLCJcdWNkM2YiLDI4LCJcdWNkNWRcdWNkNWVcdWNkNWZc''@;'; put 'put ''dTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsMjVdLFsiYWNkMSIsIlx1MDQzMCIsNSwiXHUwNDUxXHUwNDM2IiwyNV0sWyJhZDQxIiwiXHVjZDYxXHVjZDYyXHVjZDYzXHVjZDY1Iiw2LCJcdWNkNmVcdWNkNzBcdWNkNzIiLDUsIlx1Y2Q3OSIsN10sWyJhZDYxIiwiXHVjZDgxIiw2LCJcdWNkODki''@;'; put 'put ''LDEwLCJcdWNkOTZcdWNkOTdcdWNkOTlcdWNkOWFcdWNkOWJcdWNkOWRcdWNkOWVcdWNkOWYiXSxbImFkODEiLCJcdWNkYTBcdWNkYTFcdWNkYTJcdWNkYTNcdWNkYTZcdWNkYThcdWNkYWEiLDUsIlx1Y2RiMSIsMTgsIlx1Y2RjNSJdLFsiYWU0MSIsIlx1Y2RjNiIsNSwiXHVjZGNkXHVjZGNl''@;'; put 'put ''XHVjZGNmXHVjZGQxIiwxNl0sWyJhZTYxIiwiXHVjZGUyIiw1LCJcdWNkZTlcdWNkZWFcdWNkZWJcdWNkZWRcdWNkZWVcdWNkZWZcdWNkZjEiLDYsIlx1Y2RmYVx1Y2RmY1x1Y2RmZSIsNF0sWyJhZTgxIiwiXHVjZTAzXHVjZTA1XHVjZTA2XHVjZTA3XHVjZTA5XHVjZTBhXHVjZTBiXHVjZTBk''@;'; put 'put ''Iiw2LCJcdWNlMTVcdWNlMTZcdWNlMTdcdWNlMThcdWNlMWEiLDUsIlx1Y2UyMlx1Y2UyM1x1Y2UyNVx1Y2UyNlx1Y2UyN1x1Y2UyOVx1Y2UyYVx1Y2UyYiJdLFsiYWY0MSIsIlx1Y2UyY1x1Y2UyZFx1Y2UyZVx1Y2UyZlx1Y2UzMlx1Y2UzNFx1Y2UzNiIsMTldLFsiYWY2MSIsIlx1Y2U0YSIs''@;'; put 'put ''MTMsIlx1Y2U1YVx1Y2U1Ylx1Y2U1ZFx1Y2U1ZVx1Y2U2MiIsNSwiXHVjZTZhXHVjZTZjIl0sWyJhZjgxIiwiXHVjZTZlIiw1LCJcdWNlNzZcdWNlNzdcdWNlNzlcdWNlN2FcdWNlN2JcdWNlN2QiLDYsIlx1Y2U4Nlx1Y2U4OFx1Y2U4YSIsNSwiXHVjZTkyXHVjZTkzXHVjZTk1XHVjZTk2XHVj''@;'; put 'put ''ZTk3XHVjZTk5Il0sWyJiMDQxIiwiXHVjZTlhIiw1LCJcdWNlYTJcdWNlYTYiLDUsIlx1Y2VhZSIsMTJdLFsiYjA2MSIsIlx1Y2ViYiIsNSwiXHVjZWMyIiwxOV0sWyJiMDgxIiwiXHVjZWQ2IiwxMywiXHVjZWU2XHVjZWU3XHVjZWU5XHVjZWVhXHVjZWVkIiw2LCJcdWNlZjZcdWNlZmEiLDUs''@;'; put 'put ''Ilx1YWMwMFx1YWMwMVx1YWMwNFx1YWMwN1x1YWMwOFx1YWMwOVx1YWMwYVx1YWMxMCIsNywiXHVhYzE5Iiw0LCJcdWFjMjBcdWFjMjRcdWFjMmNcdWFjMmRcdWFjMmZcdWFjMzBcdWFjMzFcdWFjMzhcdWFjMzlcdWFjM2NcdWFjNDBcdWFjNGJcdWFjNGRcdWFjNTRcdWFjNThcdWFjNWNcdWFj''@;'; put 'put ''NzBcdWFjNzFcdWFjNzRcdWFjNzdcdWFjNzhcdWFjN2FcdWFjODBcdWFjODFcdWFjODNcdWFjODRcdWFjODVcdWFjODZcdWFjODlcdWFjOGFcdWFjOGJcdWFjOGNcdWFjOTBcdWFjOTRcdWFjOWNcdWFjOWRcdWFjOWZcdWFjYTBcdWFjYTFcdWFjYThcdWFjYTlcdWFjYWFcdWFjYWNcdWFjYWZc''@;'; put 'put ''dWFjYjBcdWFjYjhcdWFjYjlcdWFjYmJcdWFjYmNcdWFjYmRcdWFjYzFcdWFjYzRcdWFjYzhcdWFjY2NcdWFjZDVcdWFjZDdcdWFjZTBcdWFjZTFcdWFjZTRcdWFjZTdcdWFjZThcdWFjZWFcdWFjZWNcdWFjZWZcdWFjZjBcdWFjZjFcdWFjZjNcdWFjZjVcdWFjZjZcdWFjZmNcdWFjZmRcdWFk''@;'; put 'put ''MDBcdWFkMDRcdWFkMDYiXSxbImIxNDEiLCJcdWNmMDJcdWNmMDNcdWNmMDVcdWNmMDZcdWNmMDdcdWNmMDkiLDYsIlx1Y2YxMlx1Y2YxNFx1Y2YxNiIsNSwiXHVjZjFkXHVjZjFlXHVjZjFmXHVjZjIxXHVjZjIyXHVjZjIzIl0sWyJiMTYxIiwiXHVjZjI1Iiw2LCJcdWNmMmVcdWNmMzIiLDUs''@;'; put 'put ''Ilx1Y2YzOSIsMTFdLFsiYjE4MSIsIlx1Y2Y0NSIsMTQsIlx1Y2Y1Nlx1Y2Y1N1x1Y2Y1OVx1Y2Y1YVx1Y2Y1Ylx1Y2Y1ZCIsNiwiXHVjZjY2XHVjZjY4XHVjZjZhXHVjZjZiXHVjZjZjXHVhZDBjXHVhZDBkXHVhZDBmXHVhZDExXHVhZDE4XHVhZDFjXHVhZDIwXHVhZDI5XHVhZDJjXHVhZDJk''@;'; put 'put ''XHVhZDM0XHVhZDM1XHVhZDM4XHVhZDNjXHVhZDQ0XHVhZDQ1XHVhZDQ3XHVhZDQ5XHVhZDUwXHVhZDU0XHVhZDU4XHVhZDYxXHVhZDYzXHVhZDZjXHVhZDZkXHVhZDcwXHVhZDczXHVhZDc0XHVhZDc1XHVhZDc2XHVhZDdiXHVhZDdjXHVhZDdkXHVhZDdmXHVhZDgxXHVhZDgyXHVhZDg4XHVh''@;'; put 'put ''ZDg5XHVhZDhjXHVhZDkwXHVhZDljXHVhZDlkXHVhZGE0XHVhZGI3XHVhZGMwXHVhZGMxXHVhZGM0XHVhZGM4XHVhZGQwXHVhZGQxXHVhZGQzXHVhZGRjXHVhZGUwXHVhZGU0XHVhZGY4XHVhZGY5XHVhZGZjXHVhZGZmXHVhZTAwXHVhZTAxXHVhZTA4XHVhZTA5XHVhZTBiXHVhZTBkXHVhZTE0''@;'; put 'put ''XHVhZTMwXHVhZTMxXHVhZTM0XHVhZTM3XHVhZTM4XHVhZTNhXHVhZTQwXHVhZTQxXHVhZTQzXHVhZTQ1XHVhZTQ2XHVhZTRhXHVhZTRjXHVhZTRkXHVhZTRlXHVhZTUwXHVhZTU0XHVhZTU2XHVhZTVjXHVhZTVkXHVhZTVmXHVhZTYwXHVhZTYxXHVhZTY1XHVhZTY4XHVhZTY5XHVhZTZjXHVh''@;'; put 'put ''ZTcwXHVhZTc4Il0sWyJiMjQxIiwiXHVjZjZkXHVjZjZlXHVjZjZmXHVjZjcyXHVjZjczXHVjZjc1XHVjZjc2XHVjZjc3XHVjZjc5Iiw2LCJcdWNmODFcdWNmODJcdWNmODNcdWNmODRcdWNmODYiLDUsIlx1Y2Y4ZCJdLFsiYjI2MSIsIlx1Y2Y4ZSIsMTgsIlx1Y2ZhMiIsNSwiXHVjZmE5Il0s''@;'; put 'put ''WyJiMjgxIiwiXHVjZmFhIiw1LCJcdWNmYjEiLDE4LCJcdWNmYzUiLDYsIlx1YWU3OVx1YWU3Ylx1YWU3Y1x1YWU3ZFx1YWU4NFx1YWU4NVx1YWU4Y1x1YWViY1x1YWViZFx1YWViZVx1YWVjMFx1YWVjNFx1YWVjY1x1YWVjZFx1YWVjZlx1YWVkMFx1YWVkMVx1YWVkOFx1YWVkOVx1YWVkY1x1''@;'; put 'put ''YWVlOFx1YWVlYlx1YWVlZFx1YWVmNFx1YWVmOFx1YWVmY1x1YWYwN1x1YWYwOFx1YWYwZFx1YWYxMFx1YWYyY1x1YWYyZFx1YWYzMFx1YWYzMlx1YWYzNFx1YWYzY1x1YWYzZFx1YWYzZlx1YWY0MVx1YWY0Mlx1YWY0M1x1YWY0OFx1YWY0OVx1YWY1MFx1YWY1Y1x1YWY1ZFx1YWY2NFx1YWY2''@;'; put 'put ''NVx1YWY3OVx1YWY4MFx1YWY4NFx1YWY4OFx1YWY5MFx1YWY5MVx1YWY5NVx1YWY5Y1x1YWZiOFx1YWZiOVx1YWZiY1x1YWZjMFx1YWZjN1x1YWZjOFx1YWZjOVx1YWZjYlx1YWZjZFx1YWZjZVx1YWZkNFx1YWZkY1x1YWZlOFx1YWZlOVx1YWZmMFx1YWZmMVx1YWZmNFx1YWZmOFx1YjAwMFx1''@;'; put 'put ''YjAwMVx1YjAwNFx1YjAwY1x1YjAxMFx1YjAxNFx1YjAxY1x1YjAxZFx1YjAyOFx1YjA0NFx1YjA0NVx1YjA0OFx1YjA0YVx1YjA0Y1x1YjA0ZVx1YjA1M1x1YjA1NFx1YjA1NVx1YjA1N1x1YjA1OSJdLFsiYjM0MSIsIlx1Y2ZjYyIsMTksIlx1Y2ZlMlx1Y2ZlM1x1Y2ZlNVx1Y2ZlNlx1Y2Zl''@;'; put 'put ''N1x1Y2ZlOSJdLFsiYjM2MSIsIlx1Y2ZlYSIsNSwiXHVjZmYyXHVjZmY0XHVjZmY2Iiw1LCJcdWNmZmRcdWNmZmVcdWNmZmZcdWQwMDFcdWQwMDJcdWQwMDNcdWQwMDUiLDVdLFsiYjM4MSIsIlx1ZDAwYiIsNSwiXHVkMDEyIiw1LCJcdWQwMTkiLDE5LCJcdWIwNWRcdWIwN2NcdWIwN2RcdWIw''@;'; put 'put ''ODBcdWIwODRcdWIwOGNcdWIwOGRcdWIwOGZcdWIwOTFcdWIwOThcdWIwOTlcdWIwOWFcdWIwOWNcdWIwOWZcdWIwYTBcdWIwYTFcdWIwYTJcdWIwYThcdWIwYTlcdWIwYWIiLDQsIlx1YjBiMVx1YjBiM1x1YjBiNFx1YjBiNVx1YjBiOFx1YjBiY1x1YjBjNFx1YjBjNVx1YjBjN1x1YjBjOFx1''@;'; put 'put ''YjBjOVx1YjBkMFx1YjBkMVx1YjBkNFx1YjBkOFx1YjBlMFx1YjBlNVx1YjEwOFx1YjEwOVx1YjEwYlx1YjEwY1x1YjExMFx1YjExMlx1YjExM1x1YjExOFx1YjExOVx1YjExYlx1YjExY1x1YjExZFx1YjEyM1x1YjEyNFx1YjEyNVx1YjEyOFx1YjEyY1x1YjEzNFx1YjEzNVx1YjEzN1x1YjEz''@;'; put 'put ''OFx1YjEzOVx1YjE0MFx1YjE0MVx1YjE0NFx1YjE0OFx1YjE1MFx1YjE1MVx1YjE1NFx1YjE1NVx1YjE1OFx1YjE1Y1x1YjE2MFx1YjE3OFx1YjE3OVx1YjE3Y1x1YjE4MFx1YjE4Mlx1YjE4OFx1YjE4OVx1YjE4Ylx1YjE4ZFx1YjE5Mlx1YjE5M1x1YjE5NFx1YjE5OFx1YjE5Y1x1YjFhOFx1''@;'; put 'put ''YjFjY1x1YjFkMFx1YjFkNFx1YjFkY1x1YjFkZCJdLFsiYjQ0MSIsIlx1ZDAyZSIsNSwiXHVkMDM2XHVkMDM3XHVkMDM5XHVkMDNhXHVkMDNiXHVkMDNkIiw2LCJcdWQwNDZcdWQwNDhcdWQwNGEiLDVdLFsiYjQ2MSIsIlx1ZDA1MVx1ZDA1Mlx1ZDA1M1x1ZDA1NVx1ZDA1Nlx1ZDA1N1x1ZDA1''@;'; put 'put ''OSIsNiwiXHVkMDYxIiwxMCwiXHVkMDZlXHVkMDZmIl0sWyJiNDgxIiwiXHVkMDcxXHVkMDcyXHVkMDczXHVkMDc1Iiw2LCJcdWQwN2VcdWQwN2ZcdWQwODBcdWQwODIiLDE4LCJcdWIxZGZcdWIxZThcdWIxZTlcdWIxZWNcdWIxZjBcdWIxZjlcdWIxZmJcdWIxZmRcdWIyMDRcdWIyMDVcdWIy''@;'; put 'put ''MDhcdWIyMGJcdWIyMGNcdWIyMTRcdWIyMTVcdWIyMTdcdWIyMTlcdWIyMjBcdWIyMzRcdWIyM2NcdWIyNThcdWIyNWNcdWIyNjBcdWIyNjhcdWIyNjlcdWIyNzRcdWIyNzVcdWIyN2NcdWIyODRcdWIyODVcdWIyODlcdWIyOTBcdWIyOTFcdWIyOTRcdWIyOThcdWIyOTlcdWIyOWFcdWIyYTBc''@;'; put 'put ''dWIyYTFcdWIyYTNcdWIyYTVcdWIyYTZcdWIyYWFcdWIyYWNcdWIyYjBcdWIyYjRcdWIyYzhcdWIyYzlcdWIyY2NcdWIyZDBcdWIyZDJcdWIyZDhcdWIyZDlcdWIyZGJcdWIyZGRcdWIyZTJcdWIyZTRcdWIyZTVcdWIyZTZcdWIyZThcdWIyZWIiLDQsIlx1YjJmM1x1YjJmNFx1YjJmNVx1YjJm''@;'; put 'put ''NyIsNCwiXHViMmZmXHViMzAwXHViMzAxXHViMzA0XHViMzA4XHViMzEwXHViMzExXHViMzEzXHViMzE0XHViMzE1XHViMzFjXHViMzU0XHViMzU1XHViMzU2XHViMzU4XHViMzViXHViMzVjXHViMzVlXHViMzVmXHViMzY0XHViMzY1Il0sWyJiNTQxIiwiXHVkMDk1IiwxNCwiXHVkMGE2XHVk''@;'; put 'put ''MGE3XHVkMGE5XHVkMGFhXHVkMGFiXHVkMGFkIiw1XSxbImI1NjEiLCJcdWQwYjNcdWQwYjZcdWQwYjhcdWQwYmEiLDUsIlx1ZDBjMlx1ZDBjM1x1ZDBjNVx1ZDBjNlx1ZDBjN1x1ZDBjYSIsNSwiXHVkMGQyXHVkMGQ2Iiw0XSxbImI1ODEiLCJcdWQwZGJcdWQwZGVcdWQwZGZcdWQwZTFcdWQw''@;'; put 'put ''ZTJcdWQwZTNcdWQwZTUiLDYsIlx1ZDBlZVx1ZDBmMiIsNSwiXHVkMGY5IiwxMSwiXHViMzY3XHViMzY5XHViMzZiXHViMzZlXHViMzcwXHViMzcxXHViMzc0XHViMzc4XHViMzgwXHViMzgxXHViMzgzXHViMzg0XHViMzg1XHViMzhjXHViMzkwXHViMzk0XHViM2EwXHViM2ExXHViM2E4XHVi''@;'; put 'put ''M2FjXHViM2M0XHViM2M1XHViM2M4XHViM2NiXHViM2NjXHViM2NlXHViM2QwXHViM2Q0XHViM2Q1XHViM2Q3XHViM2Q5XHViM2RiXHViM2RkXHViM2UwXHViM2U0XHViM2U4XHViM2ZjXHViNDEwXHViNDE4XHViNDFjXHViNDIwXHViNDI4XHViNDI5XHViNDJiXHViNDM0XHViNDUwXHViNDUx''@;'; put 'put ''XHViNDU0XHViNDU4XHViNDYwXHViNDYxXHViNDYzXHViNDY1XHViNDZjXHViNDgwXHViNDg4XHViNDlkXHViNGE0XHViNGE4XHViNGFjXHViNGI1XHViNGI3XHViNGI5XHViNGMwXHViNGM0XHViNGM4XHViNGQwXHViNGQ1XHViNGRjXHViNGRkXHViNGUwXHViNGUzXHViNGU0XHViNGU2XHVi''@;'; put 'put ''NGVjXHViNGVkXHViNGVmXHViNGYxXHViNGY4XHViNTE0XHViNTE1XHViNTE4XHViNTFiXHViNTFjXHViNTI0XHViNTI1XHViNTI3XHViNTI4XHViNTI5XHViNTJhXHViNTMwXHViNTMxXHViNTM0XHViNTM4Il0sWyJiNjQxIiwiXHVkMTA1Iiw3LCJcdWQxMGUiLDE3XSxbImI2NjEiLCJcdWQx''@;'; put 'put ''MjAiLDE1LCJcdWQxMzJcdWQxMzNcdWQxMzVcdWQxMzZcdWQxMzdcdWQxMzlcdWQxM2JcdWQxM2NcdWQxM2RcdWQxM2UiXSxbImI2ODEiLCJcdWQxM2ZcdWQxNDJcdWQxNDYiLDUsIlx1ZDE0ZVx1ZDE0Zlx1ZDE1MVx1ZDE1Mlx1ZDE1M1x1ZDE1NSIsNiwiXHVkMTVlXHVkMTYwXHVkMTYyIiw1''@;'; put 'put ''LCJcdWQxNjlcdWQxNmFcdWQxNmJcdWQxNmRcdWI1NDBcdWI1NDFcdWI1NDNcdWI1NDRcdWI1NDVcdWI1NGJcdWI1NGNcdWI1NGRcdWI1NTBcdWI1NTRcdWI1NWNcdWI1NWRcdWI1NWZcdWI1NjBcdWI1NjFcdWI1YTBcdWI1YTFcdWI1YTRcdWI1YThcdWI1YWFcdWI1YWJcdWI1YjBcdWI1YjFc''@;'; put 'put ''dWI1YjNcdWI1YjRcdWI1YjVcdWI1YmJcdWI1YmNcdWI1YmRcdWI1YzBcdWI1YzRcdWI1Y2NcdWI1Y2RcdWI1Y2ZcdWI1ZDBcdWI1ZDFcdWI1ZDhcdWI1ZWNcdWI2MTBcdWI2MTFcdWI2MTRcdWI2MThcdWI2MjVcdWI2MmNcdWI2MzRcdWI2NDhcdWI2NjRcdWI2NjhcdWI2OWNcdWI2OWRcdWI2''@;'; put 'put ''YTBcdWI2YTRcdWI2YWJcdWI2YWNcdWI2YjFcdWI2ZDRcdWI2ZjBcdWI2ZjRcdWI2ZjhcdWI3MDBcdWI3MDFcdWI3MDVcdWI3MjhcdWI3MjlcdWI3MmNcdWI3MmZcdWI3MzBcdWI3MzhcdWI3MzlcdWI3M2JcdWI3NDRcdWI3NDhcdWI3NGNcdWI3NTRcdWI3NTVcdWI3NjBcdWI3NjRcdWI3Njhc''@;'; put 'put ''dWI3NzBcdWI3NzFcdWI3NzNcdWI3NzVcdWI3N2NcdWI3N2RcdWI3ODBcdWI3ODRcdWI3OGNcdWI3OGRcdWI3OGZcdWI3OTBcdWI3OTFcdWI3OTJcdWI3OTZcdWI3OTciXSxbImI3NDEiLCJcdWQxNmUiLDEzLCJcdWQxN2QiLDYsIlx1ZDE4NVx1ZDE4Nlx1ZDE4N1x1ZDE4OVx1ZDE4YSJdLFsi''@;'; put 'put ''Yjc2MSIsIlx1ZDE4YiIsMjAsIlx1ZDFhMlx1ZDFhM1x1ZDFhNVx1ZDFhNlx1ZDFhNyJdLFsiYjc4MSIsIlx1ZDFhOSIsNiwiXHVkMWIyXHVkMWI0XHVkMWI2XHVkMWI3XHVkMWI4XHVkMWI5XHVkMWJiXHVkMWJkXHVkMWJlXHVkMWJmXHVkMWMxIiwxNCwiXHViNzk4XHViNzk5XHViNzljXHVi''@;'; put 'put ''N2EwXHViN2E4XHViN2E5XHViN2FiXHViN2FjXHViN2FkXHViN2I0XHViN2I1XHViN2I4XHViN2M3XHViN2M5XHViN2VjXHViN2VkXHViN2YwXHViN2Y0XHViN2ZjXHViN2ZkXHViN2ZmXHViODAwXHViODAxXHViODA3XHViODA4XHViODA5XHViODBjXHViODEwXHViODE4XHViODE5XHViODFi''@;'; put 'put ''XHViODFkXHViODI0XHViODI1XHViODI4XHViODJjXHViODM0XHViODM1XHViODM3XHViODM4XHViODM5XHViODQwXHViODQ0XHViODUxXHViODUzXHViODVjXHViODVkXHViODYwXHViODY0XHViODZjXHViODZkXHViODZmXHViODcxXHViODc4XHViODdjXHViODhkXHViOGE4XHViOGIwXHVi''@;'; put 'put ''OGI0XHViOGI4XHViOGMwXHViOGMxXHViOGMzXHViOGM1XHViOGNjXHViOGQwXHViOGQ0XHViOGRkXHViOGRmXHViOGUxXHViOGU4XHViOGU5XHViOGVjXHViOGYwXHViOGY4XHViOGY5XHViOGZiXHViOGZkXHViOTA0XHViOTE4XHViOTIwXHViOTNjXHViOTNkXHViOTQwXHViOTQ0XHViOTRj''@;'; put 'put ''XHViOTRmXHViOTUxXHViOTU4XHViOTU5XHViOTVjXHViOTYwXHViOTY4XHViOTY5Il0sWyJiODQxIiwiXHVkMWQwIiw3LCJcdWQxZDkiLDE3XSxbImI4NjEiLCJcdWQxZWIiLDgsIlx1ZDFmNVx1ZDFmNlx1ZDFmN1x1ZDFmOSIsMTNdLFsiYjg4MSIsIlx1ZDIwOFx1ZDIwYSIsNSwiXHVkMjEx''@;'; put 'put ''IiwyNCwiXHViOTZiXHViOTZkXHViOTc0XHViOTc1XHViOTc4XHViOTdjXHViOTg0XHViOTg1XHViOTg3XHViOTg5XHViOThhXHViOThkXHViOThlXHViOWFjXHViOWFkXHViOWIwXHViOWI0XHViOWJjXHViOWJkXHViOWJmXHViOWMxXHViOWM4XHViOWM5XHViOWNjXHViOWNlIiw0LCJcdWI5''@;'; put 'put ''ZDhcdWI5ZDlcdWI5ZGJcdWI5ZGRcdWI5ZGVcdWI5ZTFcdWI5ZTNcdWI5ZTRcdWI5ZTVcdWI5ZThcdWI5ZWNcdWI5ZjRcdWI5ZjVcdWI5ZjdcdWI5ZjhcdWI5ZjlcdWI5ZmFcdWJhMDBcdWJhMDFcdWJhMDhcdWJhMTVcdWJhMzhcdWJhMzlcdWJhM2NcdWJhNDBcdWJhNDJcdWJhNDhcdWJhNDlc''@;'; put 'put ''dWJhNGJcdWJhNGRcdWJhNGVcdWJhNTNcdWJhNTRcdWJhNTVcdWJhNThcdWJhNWNcdWJhNjRcdWJhNjVcdWJhNjdcdWJhNjhcdWJhNjlcdWJhNzBcdWJhNzFcdWJhNzRcdWJhNzhcdWJhODNcdWJhODRcdWJhODVcdWJhODdcdWJhOGNcdWJhYThcdWJhYTlcdWJhYWJcdWJhYWNcdWJhYjBcdWJh''@;'; put 'put ''YjJcdWJhYjhcdWJhYjlcdWJhYmJcdWJhYmRcdWJhYzRcdWJhYzhcdWJhZDhcdWJhZDlcdWJhZmMiXSxbImI5NDEiLCJcdWQyMmFcdWQyMmJcdWQyMmVcdWQyMmZcdWQyMzFcdWQyMzJcdWQyMzNcdWQyMzUiLDYsIlx1ZDIzZVx1ZDI0MFx1ZDI0MiIsNSwiXHVkMjQ5XHVkMjRhXHVkMjRiXHVk''@;'; put 'put ''MjRjIl0sWyJiOTYxIiwiXHVkMjRkIiwxNCwiXHVkMjVkIiw2LCJcdWQyNjVcdWQyNjZcdWQyNjdcdWQyNjgiXSxbImI5ODEiLCJcdWQyNjkiLDIyLCJcdWQyODJcdWQyODNcdWQyODVcdWQyODZcdWQyODdcdWQyODlcdWQyOGFcdWQyOGJcdWQyOGNcdWJiMDBcdWJiMDRcdWJiMGRcdWJiMGZc''@;'; put 'put ''dWJiMTFcdWJiMThcdWJiMWNcdWJiMjBcdWJiMjlcdWJiMmJcdWJiMzRcdWJiMzVcdWJiMzZcdWJiMzhcdWJiM2JcdWJiM2NcdWJiM2RcdWJiM2VcdWJiNDRcdWJiNDVcdWJiNDdcdWJiNDlcdWJiNGRcdWJiNGZcdWJiNTBcdWJiNTRcdWJiNThcdWJiNjFcdWJiNjNcdWJiNmNcdWJiODhcdWJi''@;'; put 'put ''OGNcdWJiOTBcdWJiYTRcdWJiYThcdWJiYWNcdWJiYjRcdWJiYjdcdWJiYzBcdWJiYzRcdWJiYzhcdWJiZDBcdWJiZDNcdWJiZjhcdWJiZjlcdWJiZmNcdWJiZmZcdWJjMDBcdWJjMDJcdWJjMDhcdWJjMDlcdWJjMGJcdWJjMGNcdWJjMGRcdWJjMGZcdWJjMTFcdWJjMTQiLDQsIlx1YmMxYiIs''@;'; put 'put ''NCwiXHViYzI0XHViYzI1XHViYzI3XHViYzI5XHViYzJkXHViYzMwXHViYzMxXHViYzM0XHViYzM4XHViYzQwXHViYzQxXHViYzQzXHViYzQ0XHViYzQ1XHViYzQ5XHViYzRjXHViYzRkXHViYzUwXHViYzVkXHViYzg0XHViYzg1XHViYzg4XHViYzhiXHViYzhjXHViYzhlXHViYzk0XHViYzk1''@;'; put 'put ''XHViYzk3Il0sWyJiYTQxIiwiXHVkMjhkXHVkMjhlXHVkMjhmXHVkMjkyXHVkMjkzXHVkMjk0XHVkMjk2Iiw1LCJcdWQyOWRcdWQyOWVcdWQyOWZcdWQyYTFcdWQyYTJcdWQyYTNcdWQyYTUiLDYsIlx1ZDJhZCJdLFsiYmE2MSIsIlx1ZDJhZVx1ZDJhZlx1ZDJiMFx1ZDJiMiIsNSwiXHVkMmJh''@;'; put 'put ''XHVkMmJiXHVkMmJkXHVkMmJlXHVkMmMxXHVkMmMzIiw0LCJcdWQyY2FcdWQyY2MiLDVdLFsiYmE4MSIsIlx1ZDJkMlx1ZDJkM1x1ZDJkNVx1ZDJkNlx1ZDJkN1x1ZDJkOVx1ZDJkYVx1ZDJkYlx1ZDJkZCIsNiwiXHVkMmU2Iiw5LCJcdWQyZjJcdWQyZjNcdWQyZjVcdWQyZjZcdWQyZjdcdWQy''@;'; put 'put ''ZjlcdWQyZmFcdWJjOTlcdWJjOWFcdWJjYTBcdWJjYTFcdWJjYTRcdWJjYTdcdWJjYThcdWJjYjBcdWJjYjFcdWJjYjNcdWJjYjRcdWJjYjVcdWJjYmNcdWJjYmRcdWJjYzBcdWJjYzRcdWJjY2RcdWJjY2ZcdWJjZDBcdWJjZDFcdWJjZDVcdWJjZDhcdWJjZGNcdWJjZjRcdWJjZjVcdWJjZjZc''@;'; put 'put ''dWJjZjhcdWJjZmNcdWJkMDRcdWJkMDVcdWJkMDdcdWJkMDlcdWJkMTBcdWJkMTRcdWJkMjRcdWJkMmNcdWJkNDBcdWJkNDhcdWJkNDlcdWJkNGNcdWJkNTBcdWJkNThcdWJkNTlcdWJkNjRcdWJkNjhcdWJkODBcdWJkODFcdWJkODRcdWJkODdcdWJkODhcdWJkODlcdWJkOGFcdWJkOTBcdWJk''@;'; put 'put ''OTFcdWJkOTNcdWJkOTVcdWJkOTlcdWJkOWFcdWJkOWNcdWJkYTRcdWJkYjBcdWJkYjhcdWJkZDRcdWJkZDVcdWJkZDhcdWJkZGNcdWJkZTlcdWJkZjBcdWJkZjRcdWJkZjhcdWJlMDBcdWJlMDNcdWJlMDVcdWJlMGNcdWJlMGRcdWJlMTBcdWJlMTRcdWJlMWNcdWJlMWRcdWJlMWZcdWJlNDRc''@;'; put 'put ''dWJlNDVcdWJlNDhcdWJlNGNcdWJlNGVcdWJlNTRcdWJlNTVcdWJlNTdcdWJlNTlcdWJlNWFcdWJlNWJcdWJlNjBcdWJlNjFcdWJlNjQiXSxbImJiNDEiLCJcdWQyZmIiLDQsIlx1ZDMwMlx1ZDMwNFx1ZDMwNiIsNSwiXHVkMzBmXHVkMzExXHVkMzEyXHVkMzEzXHVkMzE1XHVkMzE3Iiw0LCJc''@;'; put 'put ''dWQzMWVcdWQzMjJcdWQzMjMiXSxbImJiNjEiLCJcdWQzMjRcdWQzMjZcdWQzMjdcdWQzMmFcdWQzMmJcdWQzMmRcdWQzMmVcdWQzMmZcdWQzMzEiLDYsIlx1ZDMzYVx1ZDMzZSIsNSwiXHVkMzQ2XHVkMzQ3XHVkMzQ4XHVkMzQ5Il0sWyJiYjgxIiwiXHVkMzRhIiwzMSwiXHViZTY4XHViZTZh''@;'; put 'put ''XHViZTcwXHViZTcxXHViZTczXHViZTc0XHViZTc1XHViZTdiXHViZTdjXHViZTdkXHViZTgwXHViZTg0XHViZThjXHViZThkXHViZThmXHViZTkwXHViZTkxXHViZTk4XHViZTk5XHViZWE4XHViZWQwXHViZWQxXHViZWQ0XHViZWQ3XHViZWQ4XHViZWUwXHViZWUzXHViZWU0XHViZWU1XHVi''@;'; put 'put ''ZWVjXHViZjAxXHViZjA4XHViZjA5XHViZjE4XHViZjE5XHViZjFiXHViZjFjXHViZjFkXHViZjQwXHViZjQxXHViZjQ0XHViZjQ4XHViZjUwXHViZjUxXHViZjU1XHViZjk0XHViZmIwXHViZmM1XHViZmNjXHViZmNkXHViZmQwXHViZmQ0XHViZmRjXHViZmRmXHViZmUxXHVjMDNjXHVjMDUx''@;'; put 'put ''XHVjMDU4XHVjMDVjXHVjMDYwXHVjMDY4XHVjMDY5XHVjMDkwXHVjMDkxXHVjMDk0XHVjMDk4XHVjMGEwXHVjMGExXHVjMGEzXHVjMGE1XHVjMGFjXHVjMGFkXHVjMGFmXHVjMGIwXHVjMGIzXHVjMGI0XHVjMGI1XHVjMGI2XHVjMGJjXHVjMGJkXHVjMGJmXHVjMGMwXHVjMGMxXHVjMGM1XHVj''@;'; put 'put ''MGM4XHVjMGM5XHVjMGNjXHVjMGQwXHVjMGQ4XHVjMGQ5XHVjMGRiXHVjMGRjXHVjMGRkXHVjMGU0Il0sWyJiYzQxIiwiXHVkMzZhIiwxNywiXHVkMzdlXHVkMzdmXHVkMzgxXHVkMzgyXHVkMzgzXHVkMzg1XHVkMzg2XHVkMzg3Il0sWyJiYzYxIiwiXHVkMzg4XHVkMzg5XHVkMzhhXHVkMzhi''@;'; put 'put ''XHVkMzhlXHVkMzkyIiw1LCJcdWQzOWFcdWQzOWJcdWQzOWRcdWQzOWVcdWQzOWZcdWQzYTEiLDYsIlx1ZDNhYVx1ZDNhY1x1ZDNhZSJdLFsiYmM4MSIsIlx1ZDNhZiIsNCwiXHVkM2I1XHVkM2I2XHVkM2I3XHVkM2I5XHVkM2JhXHVkM2JiXHVkM2JkIiw2LCJcdWQzYzZcdWQzYzdcdWQzY2Ei''@;'; put 'put ''LDUsIlx1ZDNkMSIsNSwiXHVjMGU1XHVjMGU4XHVjMGVjXHVjMGY0XHVjMGY1XHVjMGY3XHVjMGY5XHVjMTAwXHVjMTA0XHVjMTA4XHVjMTEwXHVjMTE1XHVjMTFjIiw0LCJcdWMxMjNcdWMxMjRcdWMxMjZcdWMxMjdcdWMxMmNcdWMxMmRcdWMxMmZcdWMxMzBcdWMxMzFcdWMxMzZcdWMxMzhc''@;'; put 'put ''dWMxMzlcdWMxM2NcdWMxNDBcdWMxNDhcdWMxNDlcdWMxNGJcdWMxNGNcdWMxNGRcdWMxNTRcdWMxNTVcdWMxNThcdWMxNWNcdWMxNjRcdWMxNjVcdWMxNjdcdWMxNjhcdWMxNjlcdWMxNzBcdWMxNzRcdWMxNzhcdWMxODVcdWMxOGNcdWMxOGRcdWMxOGVcdWMxOTBcdWMxOTRcdWMxOTZcdWMx''@;'; put 'put ''OWNcdWMxOWRcdWMxOWZcdWMxYTFcdWMxYTVcdWMxYThcdWMxYTlcdWMxYWNcdWMxYjBcdWMxYmRcdWMxYzRcdWMxYzhcdWMxY2NcdWMxZDRcdWMxZDdcdWMxZDhcdWMxZTBcdWMxZTRcdWMxZThcdWMxZjBcdWMxZjFcdWMxZjNcdWMxZmNcdWMxZmRcdWMyMDBcdWMyMDRcdWMyMGNcdWMyMGRc''@;'; put 'put ''dWMyMGZcdWMyMTFcdWMyMThcdWMyMTlcdWMyMWNcdWMyMWZcdWMyMjBcdWMyMjhcdWMyMjlcdWMyMmJcdWMyMmQiXSxbImJkNDEiLCJcdWQzZDdcdWQzZDkiLDcsIlx1ZDNlMlx1ZDNlNCIsNywiXHVkM2VlXHVkM2VmXHVkM2YxXHVkM2YyXHVkM2YzXHVkM2Y1XHVkM2Y2XHVkM2Y3Il0sWyJi''@;'; put 'put ''ZDYxIiwiXHVkM2Y4XHVkM2Y5XHVkM2ZhXHVkM2ZiXHVkM2ZlXHVkNDAwXHVkNDAyIiw1LCJcdWQ0MDkiLDEzXSxbImJkODEiLCJcdWQ0MTciLDUsIlx1ZDQxZSIsMjUsIlx1YzIyZlx1YzIzMVx1YzIzMlx1YzIzNFx1YzI0OFx1YzI1MFx1YzI1MVx1YzI1NFx1YzI1OFx1YzI2MFx1YzI2NVx1''@;'; put 'put ''YzI2Y1x1YzI2ZFx1YzI3MFx1YzI3NFx1YzI3Y1x1YzI3ZFx1YzI3Zlx1YzI4MVx1YzI4OFx1YzI4OVx1YzI5MFx1YzI5OFx1YzI5Ylx1YzI5ZFx1YzJhNFx1YzJhNVx1YzJhOFx1YzJhY1x1YzJhZFx1YzJiNFx1YzJiNVx1YzJiN1x1YzJiOVx1YzJkY1x1YzJkZFx1YzJlMFx1YzJlM1x1YzJl''@;'; put 'put ''NFx1YzJlYlx1YzJlY1x1YzJlZFx1YzJlZlx1YzJmMVx1YzJmNlx1YzJmOFx1YzJmOVx1YzJmYlx1YzJmY1x1YzMwMFx1YzMwOFx1YzMwOVx1YzMwY1x1YzMwZFx1YzMxM1x1YzMxNFx1YzMxNVx1YzMxOFx1YzMxY1x1YzMyNFx1YzMyNVx1YzMyOFx1YzMyOVx1YzM0NVx1YzM2OFx1YzM2OVx1''@;'; put 'put ''YzM2Y1x1YzM3MFx1YzM3Mlx1YzM3OFx1YzM3OVx1YzM3Y1x1YzM3ZFx1YzM4NFx1YzM4OFx1YzM4Y1x1YzNjMFx1YzNkOFx1YzNkOVx1YzNkY1x1YzNkZlx1YzNlMFx1YzNlMlx1YzNlOFx1YzNlOVx1YzNlZFx1YzNmNFx1YzNmNVx1YzNmOFx1YzQwOFx1YzQxMFx1YzQyNFx1YzQyY1x1YzQz''@;'; put 'put ''MCJdLFsiYmU0MSIsIlx1ZDQzOCIsNywiXHVkNDQxXHVkNDQyXHVkNDQzXHVkNDQ1IiwxNF0sWyJiZTYxIiwiXHVkNDU0Iiw3LCJcdWQ0NWRcdWQ0NWVcdWQ0NWZcdWQ0NjFcdWQ0NjJcdWQ0NjNcdWQ0NjUiLDcsIlx1ZDQ2ZVx1ZDQ3MFx1ZDQ3MVx1ZDQ3MiJdLFsiYmU4MSIsIlx1ZDQ3MyIs''@;'; put 'put ''NCwiXHVkNDdhXHVkNDdiXHVkNDdkXHVkNDdlXHVkNDgxXHVkNDgzIiw0LCJcdWQ0OGFcdWQ0OGNcdWQ0OGUiLDUsIlx1ZDQ5NSIsOCwiXHVjNDM0XHVjNDNjXHVjNDNkXHVjNDQ4XHVjNDY0XHVjNDY1XHVjNDY4XHVjNDZjXHVjNDc0XHVjNDc1XHVjNDc5XHVjNDgwXHVjNDk0XHVjNDljXHVj''@;'; put 'put ''NGI4XHVjNGJjXHVjNGU5XHVjNGYwXHVjNGYxXHVjNGY0XHVjNGY4XHVjNGZhXHVjNGZmXHVjNTAwXHVjNTAxXHVjNTBjXHVjNTEwXHVjNTE0XHVjNTFjXHVjNTI4XHVjNTI5XHVjNTJjXHVjNTMwXHVjNTM4XHVjNTM5XHVjNTNiXHVjNTNkXHVjNTQ0XHVjNTQ1XHVjNTQ4XHVjNTQ5XHVjNTRh''@;'; put 'put ''XHVjNTRjXHVjNTRkXHVjNTRlXHVjNTUzXHVjNTU0XHVjNTU1XHVjNTU3XHVjNTU4XHVjNTU5XHVjNTVkXHVjNTVlXHVjNTYwXHVjNTYxXHVjNTY0XHVjNTY4XHVjNTcwXHVjNTcxXHVjNTczXHVjNTc0XHVjNTc1XHVjNTdjXHVjNTdkXHVjNTgwXHVjNTg0XHVjNTg3XHVjNThjXHVjNThkXHVj''@;'; put 'put ''NThmXHVjNTkxXHVjNTk1XHVjNTk3XHVjNTk4XHVjNTljXHVjNWEwXHVjNWE5XHVjNWI0XHVjNWI1XHVjNWI4XHVjNWI5XHVjNWJiXHVjNWJjXHVjNWJkXHVjNWJlXHVjNWM0Iiw2LCJcdWM1Y2NcdWM1Y2UiXSxbImJmNDEiLCJcdWQ0OWUiLDEwLCJcdWQ0YWEiLDE0XSxbImJmNjEiLCJcdWQ0''@;'; put 'put ''YjkiLDE4LCJcdWQ0Y2RcdWQ0Y2VcdWQ0Y2ZcdWQ0ZDFcdWQ0ZDJcdWQ0ZDNcdWQ0ZDUiXSxbImJmODEiLCJcdWQ0ZDYiLDUsIlx1ZDRkZFx1ZDRkZVx1ZDRlMCIsNywiXHVkNGU5XHVkNGVhXHVkNGViXHVkNGVkXHVkNGVlXHVkNGVmXHVkNGYxIiw2LCJcdWQ0ZjlcdWQ0ZmFcdWQ0ZmNcdWM1''@;'; put 'put ''ZDBcdWM1ZDFcdWM1ZDRcdWM1ZDhcdWM1ZTBcdWM1ZTFcdWM1ZTNcdWM1ZTVcdWM1ZWNcdWM1ZWRcdWM1ZWVcdWM1ZjBcdWM1ZjRcdWM1ZjZcdWM1ZjdcdWM1ZmMiLDUsIlx1YzYwNVx1YzYwNlx1YzYwN1x1YzYwOFx1YzYwY1x1YzYxMFx1YzYxOFx1YzYxOVx1YzYxYlx1YzYxY1x1YzYyNFx1''@;'; put 'put ''YzYyNVx1YzYyOFx1YzYyY1x1YzYyZFx1YzYyZVx1YzYzMFx1YzYzM1x1YzYzNFx1YzYzNVx1YzYzN1x1YzYzOVx1YzYzYlx1YzY0MFx1YzY0MVx1YzY0NFx1YzY0OFx1YzY1MFx1YzY1MVx1YzY1M1x1YzY1NFx1YzY1NVx1YzY1Y1x1YzY1ZFx1YzY2MFx1YzY2Y1x1YzY2Zlx1YzY3MVx1YzY3''@;'; put 'put ''OFx1YzY3OVx1YzY3Y1x1YzY4MFx1YzY4OFx1YzY4OVx1YzY4Ylx1YzY4ZFx1YzY5NFx1YzY5NVx1YzY5OFx1YzY5Y1x1YzZhNFx1YzZhNVx1YzZhN1x1YzZhOVx1YzZiMFx1YzZiMVx1YzZiNFx1YzZiOFx1YzZiOVx1YzZiYVx1YzZjMFx1YzZjMVx1YzZjM1x1YzZjNVx1YzZjY1x1YzZjZFx1''@;'; put 'put ''YzZkMFx1YzZkNFx1YzZkY1x1YzZkZFx1YzZlMFx1YzZlMVx1YzZlOCJdLFsiYzA0MSIsIlx1ZDRmZSIsNSwiXHVkNTA1XHVkNTA2XHVkNTA3XHVkNTA5XHVkNTBhXHVkNTBiXHVkNTBkIiw2LCJcdWQ1MTZcdWQ1MTgiLDVdLFsiYzA2MSIsIlx1ZDUxZSIsMjVdLFsiYzA4MSIsIlx1ZDUzOFx1''@;'; put 'put ''ZDUzOVx1ZDUzYVx1ZDUzYlx1ZDUzZVx1ZDUzZlx1ZDU0MVx1ZDU0Mlx1ZDU0M1x1ZDU0NSIsNiwiXHVkNTRlXHVkNTUwXHVkNTUyIiw1LCJcdWQ1NWFcdWQ1NWJcdWQ1NWRcdWQ1NWVcdWQ1NWZcdWQ1NjFcdWQ1NjJcdWQ1NjNcdWM2ZTlcdWM2ZWNcdWM2ZjBcdWM2ZjhcdWM2ZjlcdWM2ZmRc''@;'; put 'put ''dWM3MDRcdWM3MDVcdWM3MDhcdWM3MGNcdWM3MTRcdWM3MTVcdWM3MTdcdWM3MTlcdWM3MjBcdWM3MjFcdWM3MjRcdWM3MjhcdWM3MzBcdWM3MzFcdWM3MzNcdWM3MzVcdWM3MzdcdWM3M2NcdWM3M2RcdWM3NDBcdWM3NDRcdWM3NGFcdWM3NGNcdWM3NGRcdWM3NGZcdWM3NTEiLDcsIlx1Yzc1''@;'; put 'put ''Y1x1Yzc2MFx1Yzc2OFx1Yzc2Ylx1Yzc3NFx1Yzc3NVx1Yzc3OFx1Yzc3Y1x1Yzc3ZFx1Yzc3ZVx1Yzc4M1x1Yzc4NFx1Yzc4NVx1Yzc4N1x1Yzc4OFx1Yzc4OVx1Yzc4YVx1Yzc4ZVx1Yzc5MFx1Yzc5MVx1Yzc5NFx1Yzc5Nlx1Yzc5N1x1Yzc5OFx1Yzc5YVx1YzdhMFx1YzdhMVx1YzdhM1x1''@;'; put 'put ''YzdhNFx1YzdhNVx1YzdhNlx1YzdhY1x1YzdhZFx1YzdiMFx1YzdiNFx1YzdiY1x1YzdiZFx1YzdiZlx1YzdjMFx1YzdjMVx1YzdjOFx1YzdjOVx1YzdjY1x1YzdjZVx1YzdkMFx1YzdkOFx1YzdkZFx1YzdlNFx1YzdlOFx1YzdlY1x1YzgwMFx1YzgwMVx1YzgwNFx1YzgwOFx1YzgwYSJdLFsi''@;'; put 'put ''YzE0MSIsIlx1ZDU2NFx1ZDU2Nlx1ZDU2N1x1ZDU2YVx1ZDU2Y1x1ZDU2ZSIsNSwiXHVkNTc2XHVkNTc3XHVkNTc5XHVkNTdhXHVkNTdiXHVkNTdkIiw2LCJcdWQ1ODZcdWQ1OGFcdWQ1OGIiXSxbImMxNjEiLCJcdWQ1OGNcdWQ1OGRcdWQ1OGVcdWQ1OGZcdWQ1OTEiLDE5LCJcdWQ1YTZcdWQ1''@;'; put 'put ''YTciXSxbImMxODEiLCJcdWQ1YTgiLDMxLCJcdWM4MTBcdWM4MTFcdWM4MTNcdWM4MTVcdWM4MTZcdWM4MWNcdWM4MWRcdWM4MjBcdWM4MjRcdWM4MmNcdWM4MmRcdWM4MmZcdWM4MzFcdWM4MzhcdWM4M2NcdWM4NDBcdWM4NDhcdWM4NDlcdWM4NGNcdWM4NGRcdWM4NTRcdWM4NzBcdWM4NzFc''@;'; put 'put ''dWM4NzRcdWM4NzhcdWM4N2FcdWM4ODBcdWM4ODFcdWM4ODNcdWM4ODVcdWM4ODZcdWM4ODdcdWM4OGJcdWM4OGNcdWM4OGRcdWM4OTRcdWM4OWRcdWM4OWZcdWM4YTFcdWM4YThcdWM4YmNcdWM4YmRcdWM4YzRcdWM4YzhcdWM4Y2NcdWM4ZDRcdWM4ZDVcdWM4ZDdcdWM4ZDlcdWM4ZTBcdWM4''@;'; put 'put ''ZTFcdWM4ZTRcdWM4ZjVcdWM4ZmNcdWM4ZmRcdWM5MDBcdWM5MDRcdWM5MDVcdWM5MDZcdWM5MGNcdWM5MGRcdWM5MGZcdWM5MTFcdWM5MThcdWM5MmNcdWM5MzRcdWM5NTBcdWM5NTFcdWM5NTRcdWM5NThcdWM5NjBcdWM5NjFcdWM5NjNcdWM5NmNcdWM5NzBcdWM5NzRcdWM5N2NcdWM5ODhc''@;'; put 'put ''dWM5ODlcdWM5OGNcdWM5OTBcdWM5OThcdWM5OTlcdWM5OWJcdWM5OWRcdWM5YzBcdWM5YzFcdWM5YzRcdWM5YzdcdWM5YzhcdWM5Y2FcdWM5ZDBcdWM5ZDFcdWM5ZDMiXSxbImMyNDEiLCJcdWQ1Y2FcdWQ1Y2JcdWQ1Y2RcdWQ1Y2VcdWQ1Y2ZcdWQ1ZDFcdWQ1ZDMiLDQsIlx1ZDVkYVx1ZDVk''@;'; put 'put ''Y1x1ZDVkZSIsNSwiXHVkNWU2XHVkNWU3XHVkNWU5XHVkNWVhXHVkNWViXHVkNWVkXHVkNWVlIl0sWyJjMjYxIiwiXHVkNWVmIiw0LCJcdWQ1ZjZcdWQ1ZjhcdWQ1ZmEiLDUsIlx1ZDYwMlx1ZDYwM1x1ZDYwNVx1ZDYwNlx1ZDYwN1x1ZDYwOSIsNiwiXHVkNjEyIl0sWyJjMjgxIiwiXHVkNjE2''@;'; put 'put ''Iiw1LCJcdWQ2MWRcdWQ2MWVcdWQ2MWZcdWQ2MjFcdWQ2MjJcdWQ2MjNcdWQ2MjUiLDcsIlx1ZDYyZSIsOSwiXHVkNjNhXHVkNjNiXHVjOWQ1XHVjOWQ2XHVjOWQ5XHVjOWRhXHVjOWRjXHVjOWRkXHVjOWUwXHVjOWUyXHVjOWU0XHVjOWU3XHVjOWVjXHVjOWVkXHVjOWVmXHVjOWYwXHVjOWYx''@;'; put 'put ''XHVjOWY4XHVjOWY5XHVjOWZjXHVjYTAwXHVjYTA4XHVjYTA5XHVjYTBiXHVjYTBjXHVjYTBkXHVjYTE0XHVjYTE4XHVjYTI5XHVjYTRjXHVjYTRkXHVjYTUwXHVjYTU0XHVjYTVjXHVjYTVkXHVjYTVmXHVjYTYwXHVjYTYxXHVjYTY4XHVjYTdkXHVjYTg0XHVjYTk4XHVjYWJjXHVjYWJkXHVj''@;'; put 'put ''YWMwXHVjYWM0XHVjYWNjXHVjYWNkXHVjYWNmXHVjYWQxXHVjYWQzXHVjYWQ4XHVjYWQ5XHVjYWUwXHVjYWVjXHVjYWY0XHVjYjA4XHVjYjEwXHVjYjE0XHVjYjE4XHVjYjIwXHVjYjIxXHVjYjQxXHVjYjQ4XHVjYjQ5XHVjYjRjXHVjYjUwXHVjYjU4XHVjYjU5XHVjYjVkXHVjYjY0XHVjYjc4''@;'; put 'put ''XHVjYjc5XHVjYjljXHVjYmI4XHVjYmQ0XHVjYmU0XHVjYmU3XHVjYmU5XHVjYzBjXHVjYzBkXHVjYzEwXHVjYzE0XHVjYzFjXHVjYzFkXHVjYzIxXHVjYzIyXHVjYzI3XHVjYzI4XHVjYzI5XHVjYzJjXHVjYzJlXHVjYzMwXHVjYzM4XHVjYzM5XHVjYzNiIl0sWyJjMzQxIiwiXHVkNjNkXHVk''@;'; put 'put ''NjNlXHVkNjNmXHVkNjQxXHVkNjQyXHVkNjQzXHVkNjQ0XHVkNjQ2XHVkNjQ3XHVkNjRhXHVkNjRjXHVkNjRlXHVkNjRmXHVkNjUwXHVkNjUyXHVkNjUzXHVkNjU2XHVkNjU3XHVkNjU5XHVkNjVhXHVkNjViXHVkNjVkIiw0XSxbImMzNjEiLCJcdWQ2NjIiLDQsIlx1ZDY2OFx1ZDY2YSIsNSwi''@;'; put 'put ''XHVkNjcyXHVkNjczXHVkNjc1IiwxMV0sWyJjMzgxIiwiXHVkNjgxXHVkNjgyXHVkNjg0XHVkNjg2Iiw1LCJcdWQ2OGVcdWQ2OGZcdWQ2OTFcdWQ2OTJcdWQ2OTNcdWQ2OTUiLDcsIlx1ZDY5ZVx1ZDZhMFx1ZDZhMiIsNSwiXHVkNmE5XHVkNmFhXHVjYzNjXHVjYzNkXHVjYzNlXHVjYzQ0XHVj''@;'; put 'put ''YzQ1XHVjYzQ4XHVjYzRjXHVjYzU0XHVjYzU1XHVjYzU3XHVjYzU4XHVjYzU5XHVjYzYwXHVjYzY0XHVjYzY2XHVjYzY4XHVjYzcwXHVjYzc1XHVjYzk4XHVjYzk5XHVjYzljXHVjY2EwXHVjY2E4XHVjY2E5XHVjY2FiXHVjY2FjXHVjY2FkXHVjY2I0XHVjY2I1XHVjY2I4XHVjY2JjXHVjY2M0''@;'; put 'put ''XHVjY2M1XHVjY2M3XHVjY2M5XHVjY2QwXHVjY2Q0XHVjY2U0XHVjY2VjXHVjY2YwXHVjZDAxXHVjZDA4XHVjZDA5XHVjZDBjXHVjZDEwXHVjZDE4XHVjZDE5XHVjZDFiXHVjZDFkXHVjZDI0XHVjZDI4XHVjZDJjXHVjZDM5XHVjZDVjXHVjZDYwXHVjZDY0XHVjZDZjXHVjZDZkXHVjZDZmXHVj''@;'; put 'put ''ZDcxXHVjZDc4XHVjZDg4XHVjZDk0XHVjZDk1XHVjZDk4XHVjZDljXHVjZGE0XHVjZGE1XHVjZGE3XHVjZGE5XHVjZGIwXHVjZGM0XHVjZGNjXHVjZGQwXHVjZGU4XHVjZGVjXHVjZGYwXHVjZGY4XHVjZGY5XHVjZGZiXHVjZGZkXHVjZTA0XHVjZTA4XHVjZTBjXHVjZTE0XHVjZTE5XHVjZTIw''@;'; put 'put ''XHVjZTIxXHVjZTI0XHVjZTI4XHVjZTMwXHVjZTMxXHVjZTMzXHVjZTM1Il0sWyJjNDQxIiwiXHVkNmFiXHVkNmFkXHVkNmFlXHVkNmFmXHVkNmIxIiw3LCJcdWQ2YmFcdWQ2YmMiLDcsIlx1ZDZjNlx1ZDZjN1x1ZDZjOVx1ZDZjYVx1ZDZjYiJdLFsiYzQ2MSIsIlx1ZDZjZFx1ZDZjZVx1ZDZj''@;'; put 'put ''Zlx1ZDZkMFx1ZDZkMlx1ZDZkM1x1ZDZkNVx1ZDZkNlx1ZDZkOFx1ZDZkYSIsNSwiXHVkNmUxXHVkNmUyXHVkNmUzXHVkNmU1XHVkNmU2XHVkNmU3XHVkNmU5Iiw0XSxbImM0ODEiLCJcdWQ2ZWVcdWQ2ZWZcdWQ2ZjFcdWQ2ZjJcdWQ2ZjNcdWQ2ZjRcdWQ2ZjYiLDUsIlx1ZDZmZVx1ZDZmZlx1''@;'; put 'put ''ZDcwMVx1ZDcwMlx1ZDcwM1x1ZDcwNSIsMTEsIlx1ZDcxMlx1ZDcxM1x1ZDcxNFx1Y2U1OFx1Y2U1OVx1Y2U1Y1x1Y2U1Zlx1Y2U2MFx1Y2U2MVx1Y2U2OFx1Y2U2OVx1Y2U2Ylx1Y2U2ZFx1Y2U3NFx1Y2U3NVx1Y2U3OFx1Y2U3Y1x1Y2U4NFx1Y2U4NVx1Y2U4N1x1Y2U4OVx1Y2U5MFx1Y2U5''@;'; put 'put ''MVx1Y2U5NFx1Y2U5OFx1Y2VhMFx1Y2VhMVx1Y2VhM1x1Y2VhNFx1Y2VhNVx1Y2VhY1x1Y2VhZFx1Y2VjMVx1Y2VlNFx1Y2VlNVx1Y2VlOFx1Y2VlYlx1Y2VlY1x1Y2VmNFx1Y2VmNVx1Y2VmN1x1Y2VmOFx1Y2VmOVx1Y2YwMFx1Y2YwMVx1Y2YwNFx1Y2YwOFx1Y2YxMFx1Y2YxMVx1Y2YxM1x1''@;'; put 'put ''Y2YxNVx1Y2YxY1x1Y2YyMFx1Y2YyNFx1Y2YyY1x1Y2YyZFx1Y2YyZlx1Y2YzMFx1Y2YzMVx1Y2YzOFx1Y2Y1NFx1Y2Y1NVx1Y2Y1OFx1Y2Y1Y1x1Y2Y2NFx1Y2Y2NVx1Y2Y2N1x1Y2Y2OVx1Y2Y3MFx1Y2Y3MVx1Y2Y3NFx1Y2Y3OFx1Y2Y4MFx1Y2Y4NVx1Y2Y4Y1x1Y2ZhMVx1Y2ZhOFx1Y2Zi''@;'; put 'put ''MFx1Y2ZjNFx1Y2ZlMFx1Y2ZlMVx1Y2ZlNFx1Y2ZlOFx1Y2ZmMFx1Y2ZmMVx1Y2ZmM1x1Y2ZmNVx1Y2ZmY1x1ZDAwMFx1ZDAwNFx1ZDAxMVx1ZDAxOFx1ZDAyZFx1ZDAzNFx1ZDAzNVx1ZDAzOFx1ZDAzYyJdLFsiYzU0MSIsIlx1ZDcxNVx1ZDcxNlx1ZDcxN1x1ZDcxYVx1ZDcxYlx1ZDcxZFx1''@;'; put 'put ''ZDcxZVx1ZDcxZlx1ZDcyMSIsNiwiXHVkNzJhXHVkNzJjXHVkNzJlIiw1LCJcdWQ3MzZcdWQ3MzdcdWQ3MzkiXSxbImM1NjEiLCJcdWQ3M2FcdWQ3M2JcdWQ3M2QiLDYsIlx1ZDc0NVx1ZDc0Nlx1ZDc0OFx1ZDc0YSIsNSwiXHVkNzUyXHVkNzUzXHVkNzU1XHVkNzVhIiw0XSxbImM1ODEiLCJc''@;'; put 'put ''dWQ3NWZcdWQ3NjJcdWQ3NjRcdWQ3NjZcdWQ3NjdcdWQ3NjhcdWQ3NmFcdWQ3NmJcdWQ3NmRcdWQ3NmVcdWQ3NmZcdWQ3NzFcdWQ3NzJcdWQ3NzNcdWQ3NzUiLDYsIlx1ZDc3ZVx1ZDc3Zlx1ZDc4MFx1ZDc4MiIsNSwiXHVkNzhhXHVkNzhiXHVkMDQ0XHVkMDQ1XHVkMDQ3XHVkMDQ5XHVkMDUw''@;'; put 'put ''XHVkMDU0XHVkMDU4XHVkMDYwXHVkMDZjXHVkMDZkXHVkMDcwXHVkMDc0XHVkMDdjXHVkMDdkXHVkMDgxXHVkMGE0XHVkMGE1XHVkMGE4XHVkMGFjXHVkMGI0XHVkMGI1XHVkMGI3XHVkMGI5XHVkMGMwXHVkMGMxXHVkMGM0XHVkMGM4XHVkMGM5XHVkMGQwXHVkMGQxXHVkMGQzXHVkMGQ0XHVk''@;'; put 'put ''MGQ1XHVkMGRjXHVkMGRkXHVkMGUwXHVkMGU0XHVkMGVjXHVkMGVkXHVkMGVmXHVkMGYwXHVkMGYxXHVkMGY4XHVkMTBkXHVkMTMwXHVkMTMxXHVkMTM0XHVkMTM4XHVkMTNhXHVkMTQwXHVkMTQxXHVkMTQzXHVkMTQ0XHVkMTQ1XHVkMTRjXHVkMTRkXHVkMTUwXHVkMTU0XHVkMTVjXHVkMTVk''@;'; put 'put ''XHVkMTVmXHVkMTYxXHVkMTY4XHVkMTZjXHVkMTdjXHVkMTg0XHVkMTg4XHVkMWEwXHVkMWExXHVkMWE0XHVkMWE4XHVkMWIwXHVkMWIxXHVkMWIzXHVkMWI1XHVkMWJhXHVkMWJjXHVkMWMwXHVkMWQ4XHVkMWY0XHVkMWY4XHVkMjA3XHVkMjA5XHVkMjEwXHVkMjJjXHVkMjJkXHVkMjMwXHVk''@;'; put 'put ''MjM0XHVkMjNjXHVkMjNkXHVkMjNmXHVkMjQxXHVkMjQ4XHVkMjVjIl0sWyJjNjQxIiwiXHVkNzhkXHVkNzhlXHVkNzhmXHVkNzkxIiw2LCJcdWQ3OWFcdWQ3OWNcdWQ3OWUiLDVdLFsiYzZhMSIsIlx1ZDI2NFx1ZDI4MFx1ZDI4MVx1ZDI4NFx1ZDI4OFx1ZDI5MFx1ZDI5MVx1ZDI5NVx1ZDI5''@;'; put 'put ''Y1x1ZDJhMFx1ZDJhNFx1ZDJhY1x1ZDJiMVx1ZDJiOFx1ZDJiOVx1ZDJiY1x1ZDJiZlx1ZDJjMFx1ZDJjMlx1ZDJjOFx1ZDJjOVx1ZDJjYlx1ZDJkNFx1ZDJkOFx1ZDJkY1x1ZDJlNFx1ZDJlNVx1ZDJmMFx1ZDJmMVx1ZDJmNFx1ZDJmOFx1ZDMwMFx1ZDMwMVx1ZDMwM1x1ZDMwNVx1ZDMwY1x1''@;'; put 'put ''ZDMwZFx1ZDMwZVx1ZDMxMFx1ZDMxNFx1ZDMxNlx1ZDMxY1x1ZDMxZFx1ZDMxZlx1ZDMyMFx1ZDMyMVx1ZDMyNVx1ZDMyOFx1ZDMyOVx1ZDMyY1x1ZDMzMFx1ZDMzOFx1ZDMzOVx1ZDMzYlx1ZDMzY1x1ZDMzZFx1ZDM0NFx1ZDM0NVx1ZDM3Y1x1ZDM3ZFx1ZDM4MFx1ZDM4NFx1ZDM4Y1x1ZDM4''@;'; put 'put ''ZFx1ZDM4Zlx1ZDM5MFx1ZDM5MVx1ZDM5OFx1ZDM5OVx1ZDM5Y1x1ZDNhMFx1ZDNhOFx1ZDNhOVx1ZDNhYlx1ZDNhZFx1ZDNiNFx1ZDNiOFx1ZDNiY1x1ZDNjNFx1ZDNjNVx1ZDNjOFx1ZDNjOVx1ZDNkMFx1ZDNkOFx1ZDNlMVx1ZDNlM1x1ZDNlY1x1ZDNlZFx1ZDNmMFx1ZDNmNFx1ZDNmY1x1''@;'; put 'put ''ZDNmZFx1ZDNmZlx1ZDQwMSJdLFsiYzdhMSIsIlx1ZDQwOFx1ZDQxZFx1ZDQ0MFx1ZDQ0NFx1ZDQ1Y1x1ZDQ2MFx1ZDQ2NFx1ZDQ2ZFx1ZDQ2Zlx1ZDQ3OFx1ZDQ3OVx1ZDQ3Y1x1ZDQ3Zlx1ZDQ4MFx1ZDQ4Mlx1ZDQ4OFx1ZDQ4OVx1ZDQ4Ylx1ZDQ4ZFx1ZDQ5NFx1ZDRhOVx1ZDRjY1x1ZDRk''@;'; put 'put ''MFx1ZDRkNFx1ZDRkY1x1ZDRkZlx1ZDRlOFx1ZDRlY1x1ZDRmMFx1ZDRmOFx1ZDRmYlx1ZDRmZFx1ZDUwNFx1ZDUwOFx1ZDUwY1x1ZDUxNFx1ZDUxNVx1ZDUxN1x1ZDUzY1x1ZDUzZFx1ZDU0MFx1ZDU0NFx1ZDU0Y1x1ZDU0ZFx1ZDU0Zlx1ZDU1MVx1ZDU1OFx1ZDU1OVx1ZDU1Y1x1ZDU2MFx1''@;'; put 'put ''ZDU2NVx1ZDU2OFx1ZDU2OVx1ZDU2Ylx1ZDU2ZFx1ZDU3NFx1ZDU3NVx1ZDU3OFx1ZDU3Y1x1ZDU4NFx1ZDU4NVx1ZDU4N1x1ZDU4OFx1ZDU4OVx1ZDU5MFx1ZDVhNVx1ZDVjOFx1ZDVjOVx1ZDVjY1x1ZDVkMFx1ZDVkMlx1ZDVkOFx1ZDVkOVx1ZDVkYlx1ZDVkZFx1ZDVlNFx1ZDVlNVx1ZDVl''@;'; put 'put ''OFx1ZDVlY1x1ZDVmNFx1ZDVmNVx1ZDVmN1x1ZDVmOVx1ZDYwMFx1ZDYwMVx1ZDYwNFx1ZDYwOFx1ZDYxMFx1ZDYxMVx1ZDYxM1x1ZDYxNFx1ZDYxNVx1ZDYxY1x1ZDYyMCJdLFsiYzhhMSIsIlx1ZDYyNFx1ZDYyZFx1ZDYzOFx1ZDYzOVx1ZDYzY1x1ZDY0MFx1ZDY0NVx1ZDY0OFx1ZDY0OVx1''@;'; put 'put ''ZDY0Ylx1ZDY0ZFx1ZDY1MVx1ZDY1NFx1ZDY1NVx1ZDY1OFx1ZDY1Y1x1ZDY2N1x1ZDY2OVx1ZDY3MFx1ZDY3MVx1ZDY3NFx1ZDY4M1x1ZDY4NVx1ZDY4Y1x1ZDY4ZFx1ZDY5MFx1ZDY5NFx1ZDY5ZFx1ZDY5Zlx1ZDZhMVx1ZDZhOFx1ZDZhY1x1ZDZiMFx1ZDZiOVx1ZDZiYlx1ZDZjNFx1ZDZj''@;'; put 'put ''NVx1ZDZjOFx1ZDZjY1x1ZDZkMVx1ZDZkNFx1ZDZkN1x1ZDZkOVx1ZDZlMFx1ZDZlNFx1ZDZlOFx1ZDZmMFx1ZDZmNVx1ZDZmY1x1ZDZmZFx1ZDcwMFx1ZDcwNFx1ZDcxMVx1ZDcxOFx1ZDcxOVx1ZDcxY1x1ZDcyMFx1ZDcyOFx1ZDcyOVx1ZDcyYlx1ZDcyZFx1ZDczNFx1ZDczNVx1ZDczOFx1''@;'; put 'put ''ZDczY1x1ZDc0NFx1ZDc0N1x1ZDc0OVx1ZDc1MFx1ZDc1MVx1ZDc1NFx1ZDc1Nlx1ZDc1N1x1ZDc1OFx1ZDc1OVx1ZDc2MFx1ZDc2MVx1ZDc2M1x1ZDc2NVx1ZDc2OVx1ZDc2Y1x1ZDc3MFx1ZDc3NFx1ZDc3Y1x1ZDc3ZFx1ZDc4MVx1ZDc4OFx1ZDc4OVx1ZDc4Y1x1ZDc5MFx1ZDc5OFx1ZDc5''@;'; put 'put ''OVx1ZDc5Ylx1ZDc5ZCJdLFsiY2FhMSIsIlx1NGYzZFx1NGY3M1x1NTA0N1x1NTBmOVx1NTJhMFx1NTNlZlx1NTQ3NVx1NTRlNVx1NTYwOVx1NWFjMVx1NWJiNlx1NjY4N1x1NjdiNlx1NjdiN1x1NjdlZlx1NmI0Y1x1NzNjMlx1NzVjMlx1N2EzY1x1ODJkYlx1ODMwNFx1ODg1N1x1ODg4OFx1''@;'; put 'put ''OGEzNlx1OGNjOFx1OGRjZlx1OGVmYlx1OGZlNlx1OTlkNVx1NTIzYlx1NTM3NFx1NTQwNFx1NjA2YVx1NjE2NFx1NmJiY1x1NzNjZlx1ODExYVx1ODliYVx1ODlkMlx1OTVhM1x1NGY4M1x1NTIwYVx1NThiZVx1NTk3OFx1NTllNlx1NWU3Mlx1NWU3OVx1NjFjN1x1NjNjMFx1Njc0Nlx1Njdl''@;'; put 'put ''Y1x1Njg3Zlx1NmY5N1x1NzY0ZVx1NzcwYlx1NzhmNVx1N2EwOFx1N2FmZlx1N2MyMVx1ODA5ZFx1ODI2ZVx1ODI3MVx1OGFlYlx1OTU5M1x1NGU2Ylx1NTU5ZFx1NjZmN1x1NmUzNFx1NzhhM1x1N2FlZFx1ODQ1Ylx1ODkxMFx1ODc0ZVx1OTdhOFx1NTJkOFx1NTc0ZVx1NTgyYVx1NWQ0Y1x1''@;'; put 'put ''NjExZlx1NjFiZVx1NjIyMVx1NjU2Mlx1NjdkMVx1NmE0NFx1NmUxYlx1NzUxOFx1NzViM1x1NzZlM1x1NzdiMFx1N2QzYVx1OTBhZlx1OTQ1MVx1OTQ1Mlx1OWY5NSJdLFsiY2JhMSIsIlx1NTMyM1x1NWNhY1x1NzUzMlx1ODBkYlx1OTI0MFx1OTU5OFx1NTI1Ylx1NTgwOFx1NTlkY1x1NWNh''@;'; put 'put ''MVx1NWQxN1x1NWViN1x1NWYzYVx1NWY0YVx1NjE3N1x1NmM1Zlx1NzU3YVx1NzU4Nlx1N2NlMFx1N2Q3M1x1N2RiMVx1N2Y4Y1x1ODE1NFx1ODIyMVx1ODU5MVx1ODk0MVx1OGIxYlx1OTJmY1x1OTY0ZFx1OWM0N1x1NGVjYlx1NGVmN1x1NTAwYlx1NTFmMVx1NTg0Zlx1NjEzN1x1NjEzZVx1''@;'; put 'put ''NjE2OFx1NjUzOVx1NjllYVx1NmYxMVx1NzVhNVx1NzY4Nlx1NzZkNlx1N2I4N1x1ODJhNVx1ODRjYlx1ZjkwMFx1OTNhN1x1OTU4Ylx1NTU4MFx1NWJhMlx1NTc1MVx1ZjkwMVx1N2NiM1x1N2ZiOVx1OTFiNVx1NTAyOFx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjM2ZVx1NjRkYVx1NjRl''@;'; put 'put ''N1x1NmUyMFx1NzBhY1x1Nzk1Ylx1OGRkZFx1OGUxZVx1ZjkwMlx1OTA3ZFx1OTI0NVx1OTJmOFx1NGU3ZVx1NGVmNlx1NTA2NVx1NWRmZVx1NWVmYVx1NjEwNlx1Njk1N1x1ODE3MVx1ODY1NFx1OGU0N1x1OTM3NVx1OWEyYlx1NGU1ZVx1NTA5MVx1Njc3MFx1Njg0MFx1NTEwOVx1NTI4ZFx1''@;'; put 'put ''NTI5Mlx1NmFhMiJdLFsiY2NhMSIsIlx1NzdiY1x1OTIxMFx1OWVkNFx1NTJhYlx1NjAyZlx1OGZmMlx1NTA0OFx1NjFhOVx1NjNlZFx1NjRjYVx1NjgzY1x1NmE4NFx1NmZjMFx1ODE4OFx1ODlhMVx1OTY5NFx1NTgwNVx1NzI3ZFx1NzJhY1x1NzUwNFx1N2Q3OVx1N2U2ZFx1ODBhOVx1ODk4''@;'; put 'put ''Ylx1OGI3NFx1OTA2M1x1OWQ1MVx1NjI4OVx1NmM3YVx1NmY1NFx1N2Q1MFx1N2YzYVx1OGEyM1x1NTE3Y1x1NjE0YVx1N2I5ZFx1OGIxOVx1OTI1N1x1OTM4Y1x1NGVhY1x1NGZkM1x1NTAxZVx1NTBiZVx1NTEwNlx1NTJjMVx1NTJjZFx1NTM3Zlx1NTc3MFx1NTg4M1x1NWU5YVx1NWY5MVx1''@;'; put 'put ''NjE3Nlx1NjFhY1x1NjRjZVx1NjU2Y1x1NjY2Zlx1NjZiYlx1NjZmNFx1Njg5N1x1NmQ4N1x1NzA4NVx1NzBmMVx1NzQ5Zlx1NzRhNVx1NzRjYVx1NzVkOVx1Nzg2Y1x1NzhlY1x1N2FkZlx1N2FmNlx1N2Q0NVx1N2Q5M1x1ODAxNVx1ODAzZlx1ODExYlx1ODM5Nlx1OGI2Nlx1OGYxNVx1OTAx''@;'; put 'put ''NVx1OTNlMVx1OTgwM1x1OTgzOFx1OWE1YVx1OWJlOFx1NGZjMlx1NTU1M1x1NTgzYVx1NTk1MVx1NWI2M1x1NWM0Nlx1NjBiOFx1NjIxMlx1Njg0Mlx1NjhiMCJdLFsiY2RhMSIsIlx1NjhlOFx1NmVhYVx1NzU0Y1x1NzY3OFx1NzhjZVx1N2EzZFx1N2NmYlx1N2U2Ylx1N2U3Y1x1OGEwOFx1''@;'; put 'put ''OGFhMVx1OGMzZlx1OTY4ZVx1OWRjNFx1NTNlNFx1NTNlOVx1NTQ0YVx1NTQ3MVx1NTZmYVx1NTlkMVx1NWI2NFx1NWMzYlx1NWVhYlx1NjJmN1x1NjUzN1x1NjU0NVx1NjU3Mlx1NjZhMFx1NjdhZlx1NjljMVx1NmNiZFx1NzVmY1x1NzY5MFx1Nzc3ZVx1N2EzZlx1N2Y5NFx1ODAwM1x1ODBh''@;'; put 'put ''MVx1ODE4Zlx1ODJlNlx1ODJmZFx1ODNmMFx1ODVjMVx1ODgzMVx1ODhiNFx1OGFhNVx1ZjkwM1x1OGY5Y1x1OTMyZVx1OTZjN1x1OTg2N1x1OWFkOFx1OWYxM1x1NTRlZFx1NjU5Ylx1NjZmMlx1Njg4Zlx1N2E0MFx1OGMzN1x1OWQ2MFx1NTZmMFx1NTc2NFx1NWQxMVx1NjYwNlx1NjhiMVx1''@;'; put 'put ''NjhjZFx1NmVmZVx1NzQyOFx1ODg5ZVx1OWJlNFx1NmM2OFx1ZjkwNFx1OWFhOFx1NGY5Ylx1NTE2Y1x1NTE3MVx1NTI5Zlx1NWI1NFx1NWRlNVx1NjA1MFx1NjA2ZFx1NjJmMVx1NjNhN1x1NjUzYlx1NzNkOVx1N2E3YVx1ODZhM1x1OGNhMlx1OTc4Zlx1NGUzMlx1NWJlMVx1NjIwOFx1Njc5''@;'; put 'put ''Y1x1NzRkYyJdLFsiY2VhMSIsIlx1NzlkMVx1ODNkM1x1OGE4N1x1OGFiMlx1OGRlOFx1OTA0ZVx1OTM0Ylx1OTg0Nlx1NWVkM1x1NjllOFx1ODVmZlx1OTBlZFx1ZjkwNVx1NTFhMFx1NWI5OFx1NWJlY1x1NjE2M1x1NjhmYVx1NmIzZVx1NzA0Y1x1NzQyZlx1NzRkOFx1N2JhMVx1N2Y1MFx1''@;'; put 'put ''ODNjNVx1ODljMFx1OGNhYlx1OTVkY1x1OTkyOFx1NTIyZVx1NjA1ZFx1NjJlY1x1OTAwMlx1NGY4YVx1NTE0OVx1NTMyMVx1NThkOVx1NWVlM1x1NjZlMFx1NmQzOFx1NzA5YVx1NzJjMlx1NzNkNlx1N2I1MFx1ODBmMVx1OTQ1Ylx1NTM2Nlx1NjM5Ylx1N2Y2Ylx1NGU1Nlx1NTA4MFx1NTg0''@;'; put 'put ''YVx1NThkZVx1NjAyYVx1NjEyN1x1NjJkMFx1NjlkMFx1OWI0MVx1NWI4Zlx1N2QxOFx1ODBiMVx1OGY1Zlx1NGVhNFx1NTBkMVx1NTRhY1x1NTVhY1x1NWIwY1x1NWRhMFx1NWRlN1x1NjUyYVx1NjU0ZVx1NjgyMVx1NmE0Ylx1NzJlMVx1NzY4ZVx1NzdlZlx1N2Q1ZVx1N2ZmOVx1ODFhMFx1''@;'; put 'put ''ODU0ZVx1ODZkZlx1OGYwM1x1OGY0ZVx1OTBjYVx1OTkwM1x1OWE1NVx1OWJhYlx1NGUxOFx1NGU0NVx1NGU1ZFx1NGVjN1x1NGZmMVx1NTE3N1x1NTJmZSJdLFsiY2ZhMSIsIlx1NTM0MFx1NTNlM1x1NTNlNVx1NTQ4ZVx1NTYxNFx1NTc3NVx1NTdhMlx1NWJjN1x1NWQ4N1x1NWVkMFx1NjFm''@;'; put 'put ''Y1x1NjJkOFx1NjU1MVx1NjdiOFx1NjdlOVx1NjljYlx1NmI1MFx1NmJjNlx1NmJlY1x1NmM0Mlx1NmU5ZFx1NzA3OFx1NzJkN1x1NzM5Nlx1NzQwM1x1NzdiZlx1NzdlOVx1N2E3Nlx1N2Q3Zlx1ODAwOVx1ODFmY1x1ODIwNVx1ODIwYVx1ODJkZlx1ODg2Mlx1OGIzM1x1OGNmY1x1OGVjMFx1''@;'; put 'put ''OTAxMVx1OTBiMVx1OTI2NFx1OTJiNlx1OTlkMlx1OWE0NVx1OWNlOVx1OWRkN1x1OWY5Y1x1NTcwYlx1NWM0MFx1ODNjYVx1OTdhMFx1OTdhYlx1OWViNFx1NTQxYlx1N2E5OFx1N2ZhNFx1ODhkOVx1OGVjZFx1OTBlMVx1NTgwMFx1NWM0OFx1NjM5OFx1N2E5Zlx1NWJhZVx1NWYxM1x1N2E3''@;'; put 'put ''OVx1N2FhZVx1ODI4ZVx1OGVhY1x1NTAyNlx1NTIzOFx1NTJmOFx1NTM3N1x1NTcwOFx1NjJmM1x1NjM3Mlx1NmIwYVx1NmRjM1x1NzczN1x1NTNhNVx1NzM1N1x1ODU2OFx1OGU3Nlx1OTVkNVx1NjczYVx1NmFjM1x1NmY3MFx1OGE2ZFx1OGVjY1x1OTk0Ylx1ZjkwNlx1NjY3N1x1NmI3OFx1''@;'; put 'put ''OGNiNCJdLFsiZDBhMSIsIlx1OWIzY1x1ZjkwN1x1NTNlYlx1NTcyZFx1NTk0ZVx1NjNjNlx1NjlmYlx1NzNlYVx1Nzg0NVx1N2FiYVx1N2FjNVx1N2NmZVx1ODQ3NVx1ODk4Zlx1OGQ3M1x1OTAzNVx1OTVhOFx1NTJmYlx1NTc0N1x1NzU0N1x1N2I2MFx1ODNjY1x1OTIxZVx1ZjkwOFx1NmE1''@;'; put 'put ''OFx1NTE0Ylx1NTI0Ylx1NTI4N1x1NjIxZlx1NjhkOFx1Njk3NVx1OTY5OVx1NTBjNVx1NTJhNFx1NTJlNFx1NjFjM1x1NjVhNFx1NjgzOVx1NjlmZlx1NzQ3ZVx1N2I0Ylx1ODJiOVx1ODNlYlx1ODliMlx1OGIzOVx1OGZkMVx1OTk0OVx1ZjkwOVx1NGVjYVx1NTk5N1x1NjRkMlx1NjYxMVx1''@;'; put 'put ''NmE4ZVx1NzQzNFx1Nzk4MVx1NzliZFx1ODJhOVx1ODg3ZVx1ODg3Zlx1ODk1Zlx1ZjkwYVx1OTMyNlx1NGYwYlx1NTNjYVx1NjAyNVx1NjI3MVx1NmM3Mlx1N2QxYVx1N2Q2Nlx1NGU5OFx1NTE2Mlx1NzdkY1x1ODBhZlx1NGYwMVx1NGYwZVx1NTE3Nlx1NTE4MFx1NTVkY1x1NTY2OFx1NTcz''@;'; put 'put ''Ylx1NTdmYVx1NTdmY1x1NTkxNFx1NTk0N1x1NTk5M1x1NWJjNFx1NWM5MFx1NWQwZVx1NWRmMVx1NWU3ZVx1NWZjY1x1NjI4MFx1NjVkN1x1NjVlMyJdLFsiZDFhMSIsIlx1NjcxZVx1NjcxZlx1Njc1ZVx1NjhjYlx1NjhjNFx1NmE1Zlx1NmIzYVx1NmMyM1x1NmM3ZFx1NmM4Mlx1NmRjN1x1''@;'; put 'put ''NzM5OFx1NzQyNlx1NzQyYVx1NzQ4Mlx1NzRhM1x1NzU3OFx1NzU3Zlx1Nzg4MVx1NzhlZlx1Nzk0MVx1Nzk0N1x1Nzk0OFx1Nzk3YVx1N2I5NVx1N2QwMFx1N2RiYVx1N2Y4OFx1ODAwNlx1ODAyZFx1ODA4Y1x1OGExOFx1OGI0Zlx1OGM0OFx1OGQ3N1x1OTMyMVx1OTMyNFx1OThlMlx1OTk1''@;'; put 'put ''MVx1OWEwZVx1OWEwZlx1OWE2NVx1OWU5Mlx1N2RjYVx1NGY3Nlx1NTQwOVx1NjJlZVx1Njg1NFx1OTFkMVx1NTVhYlx1NTEzYVx1ZjkwYlx1ZjkwY1x1NWExY1x1NjFlNlx1ZjkwZFx1NjJjZlx1NjJmZlx1ZjkwZSIsNSwiXHU5MGEzXHVmOTE0Iiw0LCJcdThhZmVcdWY5MTlcdWY5MWFcdWY5''@;'; put 'put ''MWJcdWY5MWNcdTY2OTZcdWY5MWRcdTcxNTZcdWY5MWVcdWY5MWZcdTk2ZTNcdWY5MjBcdTYzNGZcdTYzN2FcdTUzNTdcdWY5MjFcdTY3OGZcdTY5NjBcdTZlNzNcdWY5MjJcdTc1MzdcdWY5MjNcdWY5MjRcdWY5MjUiXSxbImQyYTEiLCJcdTdkMGRcdWY5MjZcdWY5MjdcdTg4NzJcdTU2Y2Fc''@;'; put 'put ''dTVhMThcdWY5MjgiLDQsIlx1NGU0M1x1ZjkyZFx1NTE2N1x1NTk0OFx1NjdmMFx1ODAxMFx1ZjkyZVx1NTk3M1x1NWU3NFx1NjQ5YVx1NzljYVx1NWZmNVx1NjA2Y1x1NjJjOFx1NjM3Ylx1NWJlN1x1NWJkN1x1NTJhYVx1ZjkyZlx1NTk3NFx1NWYyOVx1NjAxMlx1ZjkzMFx1ZjkzMVx1Zjkz''@;'; put 'put ''Mlx1NzQ1OVx1ZjkzMyIsNSwiXHU5OWQxXHVmOTM5IiwxMCwiXHU2ZmMzXHVmOTQ0XHVmOTQ1XHU4MWJmXHU4ZmIyXHU2MGYxXHVmOTQ2XHVmOTQ3XHU4MTY2XHVmOTQ4XHVmOTQ5XHU1YzNmXHVmOTRhIiw3LCJcdTVhZTlcdThhMjVcdTY3N2JcdTdkMTBcdWY5NTIiLDUsIlx1ODBmZFx1Zjk1''@;'; put 'put ''OFx1Zjk1OVx1NWMzY1x1NmNlNVx1NTMzZlx1NmViYVx1NTkxYVx1ODMzNiJdLFsiZDNhMSIsIlx1NGUzOVx1NGViNlx1NGY0Nlx1NTVhZVx1NTcxOFx1NThjN1x1NWY1Nlx1NjViN1x1NjVlNlx1NmE4MFx1NmJiNVx1NmU0ZFx1NzdlZFx1N2FlZlx1N2MxZVx1N2RkZVx1ODZjYlx1ODg5Mlx1''@;'; put 'put ''OTEzMlx1OTM1Ylx1NjRiYlx1NmZiZVx1NzM3YVx1NzViOFx1OTA1NFx1NTU1Nlx1NTc0ZFx1NjFiYVx1NjRkNFx1NjZjN1x1NmRlMVx1NmU1Ylx1NmY2ZFx1NmZiOVx1NzVmMFx1ODA0M1x1ODFiZFx1ODU0MVx1ODk4M1x1OGFjN1x1OGI1YVx1OTMxZlx1NmM5M1x1NzU1M1x1N2I1NFx1OGUw''@;'; put 'put ''Zlx1OTA1ZFx1NTUxMFx1NTgwMlx1NTg1OFx1NWU2Mlx1NjIwN1x1NjQ5ZVx1NjhlMFx1NzU3Nlx1N2NkNlx1ODdiM1x1OWVlOFx1NGVlM1x1NTc4OFx1NTc2ZVx1NTkyN1x1NWMwZFx1NWNiMVx1NWUzNlx1NWY4NVx1NjIzNFx1NjRlMVx1NzNiM1x1ODFmYVx1ODg4Ylx1OGNiOFx1OTY4YVx1''@;'; put 'put ''OWVkYlx1NWI4NVx1NWZiN1x1NjBiM1x1NTAxMlx1NTIwMFx1NTIzMFx1NTcxNlx1NTgzNVx1NTg1N1x1NWMwZVx1NWM2MFx1NWNmNlx1NWQ4Ylx1NWVhNlx1NWY5Mlx1NjBiY1x1NjMxMVx1NjM4OVx1NjQxN1x1Njg0MyJdLFsiZDRhMSIsIlx1NjhmOVx1NmFjMlx1NmRkOFx1NmUyMVx1NmVk''@;'; put 'put ''NFx1NmZlNFx1NzFmZVx1NzZkY1x1Nzc3OVx1NzliMVx1N2EzYlx1ODQwNFx1ODlhOVx1OGNlZFx1OGRmM1x1OGU0OFx1OTAwM1x1OTAxNFx1OTA1M1x1OTBmZFx1OTM0ZFx1OTY3Nlx1OTdkY1x1NmJkMlx1NzAwNlx1NzI1OFx1NzJhMlx1NzM2OFx1Nzc2M1x1NzliZlx1N2JlNFx1N2U5Ylx1''@;'; put 'put ''OGI4MFx1NThhOVx1NjBjN1x1NjU2Nlx1NjVmZFx1NjZiZVx1NmM4Y1x1NzExZVx1NzFjOVx1OGM1YVx1OTgxM1x1NGU2ZFx1N2E4MVx1NGVkZFx1NTFhY1x1NTFjZFx1NTJkNVx1NTQwY1x1NjFhN1x1Njc3MVx1Njg1MFx1NjhkZlx1NmQxZVx1NmY3Y1x1NzViY1x1NzdiM1x1N2FlNVx1ODBm''@;'; put 'put ''NFx1ODQ2M1x1OTI4NVx1NTE1Y1x1NjU5N1x1Njc1Y1x1Njc5M1x1NzVkOFx1N2FjN1x1ODM3M1x1Zjk1YVx1OGM0Nlx1OTAxN1x1OTgyZFx1NWM2Zlx1ODFjMFx1ODI5YVx1OTA0MVx1OTA2Zlx1OTIwZFx1NWY5N1x1NWQ5ZFx1NmE1OVx1NzFjOFx1NzY3Ylx1N2I0OVx1ODVlNFx1OGIwNFx1''@;'; put 'put ''OTEyN1x1OWEzMFx1NTU4N1x1NjFmNlx1Zjk1Ylx1NzY2OVx1N2Y4NSJdLFsiZDVhMSIsIlx1ODYzZlx1ODdiYVx1ODhmOFx1OTA4Zlx1Zjk1Y1x1NmQxYlx1NzBkOVx1NzNkZVx1N2Q2MVx1ODQzZFx1Zjk1ZFx1OTE2YVx1OTlmMVx1Zjk1ZVx1NGU4Mlx1NTM3NVx1NmIwNFx1NmIxMlx1NzAz''@;'; put 'put ''ZVx1NzIxYlx1ODYyZFx1OWUxZVx1NTI0Y1x1OGZhM1x1NWQ1MFx1NjRlNVx1NjUyY1x1NmIxNlx1NmZlYlx1N2M0M1x1N2U5Y1x1ODVjZFx1ODk2NFx1ODliZFx1NjJjOVx1ODFkOFx1ODgxZlx1NWVjYVx1NjcxN1x1NmQ2YVx1NzJmY1x1NzQwNVx1NzQ2Zlx1ODc4Mlx1OTBkZVx1NGY4Nlx1''@;'; put 'put ''NWQwZFx1NWZhMFx1ODQwYVx1NTFiN1x1NjNhMFx1NzU2NVx1NGVhZVx1NTAwNlx1NTE2OVx1NTFjOVx1Njg4MVx1NmExMVx1N2NhZVx1N2NiMVx1N2NlN1x1ODI2Zlx1OGFkMlx1OGYxYlx1OTFjZlx1NGZiNlx1NTEzN1x1NTJmNVx1NTQ0Mlx1NWVlY1x1NjE2ZVx1NjIzZVx1NjVjNVx1NmFk''@;'; put 'put ''YVx1NmZmZVx1NzkyYVx1ODVkY1x1ODgyM1x1OTVhZFx1OWE2Mlx1OWE2YVx1OWU5N1x1OWVjZVx1NTI5Ylx1NjZjNlx1NmI3N1x1NzAxZFx1NzkyYlx1OGY2Mlx1OTc0Mlx1NjE5MFx1NjIwMFx1NjUyM1x1NmYyMyJdLFsiZDZhMSIsIlx1NzE0OVx1NzQ4OVx1N2RmNFx1ODA2Zlx1ODRlZVx1''@;'; put 'put ''OGYyNlx1OTAyM1x1OTM0YVx1NTFiZFx1NTIxN1x1NTJhM1x1NmQwY1x1NzBjOFx1ODhjMlx1NWVjOVx1NjU4Mlx1NmJhZVx1NmZjMlx1N2MzZVx1NzM3NVx1NGVlNFx1NGYzNlx1NTZmOVx1Zjk1Zlx1NWNiYVx1NWRiYVx1NjAxY1x1NzNiMlx1N2IyZFx1N2Y5YVx1N2ZjZVx1ODA0Nlx1OTAx''@;'; put 'put ''ZVx1OTIzNFx1OTZmNlx1OTc0OFx1OTgxOFx1OWY2MVx1NGY4Ylx1NmZhN1x1NzlhZVx1OTFiNFx1OTZiN1x1NTJkZVx1Zjk2MFx1NjQ4OFx1NjRjNFx1NmFkM1x1NmY1ZVx1NzAxOFx1NzIxMFx1NzZlN1x1ODAwMVx1ODYwNlx1ODY1Y1x1OGRlZlx1OGYwNVx1OTczMlx1OWI2Zlx1OWRmYVx1''@;'; put 'put ''OWU3NVx1Nzg4Y1x1Nzk3Zlx1N2RhMFx1ODNjOVx1OTMwNFx1OWU3Zlx1OWU5M1x1OGFkNlx1NThkZlx1NWYwNFx1NjcyN1x1NzAyN1x1NzRjZlx1N2M2MFx1ODA3ZVx1NTEyMVx1NzAyOFx1NzI2Mlx1NzhjYVx1OGNjMlx1OGNkYVx1OGNmNFx1OTZmN1x1NGU4Nlx1NTBkYVx1NWJlZVx1NWVk''@;'; put 'put ''Nlx1NjU5OVx1NzFjZVx1NzY0Mlx1NzdhZFx1ODA0YVx1ODRmYyJdLFsiZDdhMSIsIlx1OTA3Y1x1OWIyN1x1OWY4ZFx1NThkOFx1NWE0MVx1NWM2Mlx1NmExM1x1NmRkYVx1NmYwZlx1NzYzYlx1N2QyZlx1N2UzN1x1ODUxZVx1ODkzOFx1OTNlNFx1OTY0Ylx1NTI4OVx1NjVkMlx1NjdmM1x1''@;'; put 'put ''NjliNFx1NmQ0MVx1NmU5Y1x1NzAwZlx1NzQwOVx1NzQ2MFx1NzU1OVx1NzYyNFx1Nzg2Ylx1OGIyY1x1OTg1ZVx1NTE2ZFx1NjIyZVx1OTY3OFx1NGY5Nlx1NTAyYlx1NWQxOVx1NmRlYVx1N2RiOFx1OGYyYVx1NWY4Ylx1NjE0NFx1NjgxN1x1Zjk2MVx1OTY4Nlx1NTJkMlx1ODA4Ylx1NTFk''@;'; put 'put ''Y1x1NTFjY1x1Njk1ZVx1N2ExY1x1N2RiZVx1ODNmMVx1OTY3NVx1NGZkYVx1NTIyOVx1NTM5OFx1NTQwZlx1NTUwZVx1NWM2NVx1NjBhN1x1Njc0ZVx1NjhhOFx1NmQ2Y1x1NzI4MVx1NzJmOFx1NzQwNlx1NzQ4M1x1Zjk2Mlx1NzVlMlx1N2M2Y1x1N2Y3OVx1N2ZiOFx1ODM4OVx1ODhjZlx1''@;'; put 'put ''ODhlMVx1OTFjY1x1OTFkMFx1OTZlMlx1OWJjOVx1NTQxZFx1NmY3ZVx1NzFkMFx1NzQ5OFx1ODVmYVx1OGVhYVx1OTZhM1x1OWM1N1x1OWU5Zlx1Njc5N1x1NmRjYlx1NzQzM1x1ODFlOFx1OTcxNlx1NzgyYyJdLFsiZDhhMSIsIlx1N2FjYlx1N2IyMFx1N2M5Mlx1NjQ2OVx1NzQ2YVx1NzVm''@;'; put 'put ''Mlx1NzhiY1x1NzhlOFx1OTlhY1x1OWI1NFx1OWViYlx1NWJkZVx1NWU1NVx1NmYyMFx1ODE5Y1x1ODNhYlx1OTA4OFx1NGUwN1x1NTM0ZFx1NWEyOVx1NWRkMlx1NWY0ZVx1NjE2Mlx1NjMzZFx1NjY2OVx1NjZmY1x1NmVmZlx1NmYyYlx1NzA2M1x1Nzc5ZVx1ODQyY1x1ODUxM1x1ODgzYlx1''@;'; put 'put ''OGYxM1x1OTk0NVx1OWMzYlx1NTUxY1x1NjJiOVx1NjcyYlx1NmNhYlx1ODMwOVx1ODk2YVx1OTc3YVx1NGVhMVx1NTk4NFx1NWZkOFx1NWZkOVx1NjcxYlx1N2RiMlx1N2Y1NFx1ODI5Mlx1ODMyYlx1ODNiZFx1OGYxZVx1OTA5OVx1NTdjYlx1NTliOVx1NWE5Mlx1NWJkMFx1NjYyN1x1Njc5''@;'; put 'put ''YVx1Njg4NVx1NmJjZlx1NzE2NFx1N2Y3NVx1OGNiN1x1OGNlM1x1OTA4MVx1OWI0NVx1ODEwOFx1OGM4YVx1OTY0Y1x1OWE0MFx1OWVhNVx1NWI1Zlx1NmMxM1x1NzMxYlx1NzZmMlx1NzZkZlx1ODQwY1x1NTFhYVx1ODk5M1x1NTE0ZFx1NTE5NVx1NTJjOVx1NjhjOVx1NmM5NFx1NzcwNFx1''@;'; put 'put ''NzcyMFx1N2RiZlx1N2RlY1x1OTc2Mlx1OWViNVx1NmVjNSJdLFsiZDlhMSIsIlx1ODUxMVx1NTFhNVx1NTQwZFx1NTQ3ZFx1NjYwZVx1NjY5ZFx1NjkyN1x1NmU5Zlx1NzZiZlx1Nzc5MVx1ODMxN1x1ODRjMlx1ODc5Zlx1OTE2OVx1OTI5OFx1OWNmNFx1ODg4Mlx1NGZhZVx1NTE5Mlx1NTJk''@;'; put 'put ''Zlx1NTljNlx1NWUzZFx1NjE1NVx1NjQ3OFx1NjQ3OVx1NjZhZVx1NjdkMFx1NmEyMVx1NmJjZFx1NmJkYlx1NzI1Zlx1NzI2MVx1NzQ0MVx1NzczOFx1NzdkYlx1ODAxN1x1ODJiY1x1ODMwNVx1OGIwMFx1OGIyOFx1OGM4Y1x1NjcyOFx1NmM5MFx1NzI2N1x1NzZlZVx1Nzc2Nlx1N2E0Nlx1''@;'; put 'put ''OWRhOVx1NmI3Zlx1NmM5Mlx1NTkyMlx1NjcyNlx1ODQ5OVx1NTM2Zlx1NTg5M1x1NTk5OVx1NWVkZlx1NjNjZlx1NjYzNFx1Njc3M1x1NmUzYVx1NzMyYlx1N2FkN1x1ODJkN1x1OTMyOFx1NTJkOVx1NWRlYlx1NjFhZVx1NjFjYlx1NjIwYVx1NjJjN1x1NjRhYlx1NjVlMFx1Njk1OVx1NmI2''@;'; put 'put ''Nlx1NmJjYlx1NzEyMVx1NzNmN1x1NzU1ZFx1N2U0Nlx1ODIxZVx1ODMwMlx1ODU2YVx1OGFhM1x1OGNiZlx1OTcyN1x1OWQ2MVx1NThhOFx1OWVkOFx1NTAxMVx1NTIwZVx1NTQzYlx1NTU0Zlx1NjU4NyJdLFsiZGFhMSIsIlx1NmM3Nlx1N2QwYVx1N2QwYlx1ODA1ZVx1ODY4YVx1OTU4MFx1''@;'; put 'put ''OTZlZlx1NTJmZlx1NmM5NVx1NzI2OVx1NTQ3M1x1NWE5YVx1NWMzZVx1NWQ0Ylx1NWY0Y1x1NWZhZVx1NjcyYVx1NjhiNlx1Njk2M1x1NmUzY1x1NmU0NFx1NzcwOVx1N2M3M1x1N2Y4ZVx1ODU4N1x1OGIwZVx1OGZmN1x1OTc2MVx1OWVmNFx1NWNiN1x1NjBiNlx1NjEwZFx1NjFhYlx1NjU0''@;'; put 'put ''Zlx1NjVmYlx1NjVmY1x1NmMxMVx1NmNlZlx1NzM5Zlx1NzNjOVx1N2RlMVx1OTU5NFx1NWJjNlx1ODcxY1x1OGIxMFx1NTI1ZFx1NTM1YVx1NjJjZFx1NjQwZlx1NjRiMlx1NjczNFx1NmEzOFx1NmNjYVx1NzNjMFx1NzQ5ZVx1N2I5NFx1N2M5NVx1N2UxYlx1ODE4YVx1ODIzNlx1ODU4NFx1''@;'; put 'put ''OGZlYlx1OTZmOVx1OTljMVx1NGYzNFx1NTM0YVx1NTNjZFx1NTNkYlx1NjJjY1x1NjQyY1x1NjUwMFx1NjU5MVx1NjljM1x1NmNlZVx1NmY1OFx1NzNlZFx1NzU1NFx1NzYyMlx1NzZlNFx1NzZmY1x1NzhkMFx1NzhmYlx1NzkyY1x1N2Q0Nlx1ODIyY1x1ODdlMFx1OGZkNFx1OTgxMlx1OThl''@;'; put 'put ''Zlx1NTJjM1x1NjJkNFx1NjRhNVx1NmUyNFx1NmY1MSJdLFsiZGJhMSIsIlx1NzY3Y1x1OGRjYlx1OTFiMVx1OTI2Mlx1OWFlZVx1OWI0M1x1NTAyM1x1NTA4ZFx1NTc0YVx1NTlhOFx1NWMyOFx1NWU0N1x1NWY3N1x1NjIzZlx1NjUzZVx1NjViOVx1NjVjMVx1NjYwOVx1Njc4Ylx1Njk5Y1x1''@;'; put 'put ''NmVjMlx1NzhjNVx1N2QyMVx1ODBhYVx1ODE4MFx1ODIyYlx1ODJiM1x1ODRhMVx1ODY4Y1x1OGEyYVx1OGIxN1x1OTBhNlx1OTYzMlx1OWY5MFx1NTAwZFx1NGZmM1x1Zjk2M1x1NTdmOVx1NWY5OFx1NjJkY1x1NjM5Mlx1Njc2Zlx1NmU0M1x1NzExOVx1NzZjM1x1ODBjY1x1ODBkYVx1ODhm''@;'; put 'put ''NFx1ODhmNVx1ODkxOVx1OGNlMFx1OGYyOVx1OTE0ZFx1OTY2YVx1NGYyZlx1NGY3MFx1NWUxYlx1NjdjZlx1NjgyMlx1NzY3ZFx1NzY3ZVx1OWI0NFx1NWU2MVx1NmEwYVx1NzE2OVx1NzFkNFx1NzU2YVx1Zjk2NFx1N2U0MVx1ODU0M1x1ODVlOVx1OThkY1x1NGYxMFx1N2I0Zlx1N2Y3MFx1''@;'; put 'put ''OTVhNVx1NTFlMVx1NWUwNlx1NjhiNVx1NmMzZVx1NmM0ZVx1NmNkYlx1NzJhZlx1N2JjNFx1ODMwM1x1NmNkNVx1NzQzYVx1NTBmYlx1NTI4OFx1NThjMVx1NjRkOFx1NmE5N1x1NzRhN1x1NzY1NiJdLFsiZGNhMSIsIlx1NzhhN1x1ODYxN1x1OTVlMlx1OTczOVx1Zjk2NVx1NTM1ZVx1NWYw''@;'; put 'put ''MVx1OGI4YVx1OGZhOFx1OGZhZlx1OTA4YVx1NTIyNVx1NzdhNVx1OWM0OVx1OWYwOFx1NGUxOVx1NTAwMlx1NTE3NVx1NWM1Ylx1NWU3N1x1NjYxZVx1NjYzYVx1NjdjNFx1NjhjNVx1NzBiM1x1NzUwMVx1NzVjNVx1NzljOVx1N2FkZFx1OGYyN1x1OTkyMFx1OWEwOFx1NGZkZFx1NTgyMVx1''@;'; put 'put ''NTgzMVx1NWJmNlx1NjY2ZVx1NmI2NVx1NmQxMVx1NmU3YVx1NmY3ZFx1NzNlNFx1NzUyYlx1ODNlOVx1ODhkY1x1ODkxM1x1OGI1Y1x1OGYxNFx1NGYwZlx1NTBkNVx1NTMxMFx1NTM1Y1x1NWI5M1x1NWZhOVx1NjcwZFx1Nzk4Zlx1ODE3OVx1ODMyZlx1ODUxNFx1ODkwN1x1ODk4Nlx1OGYz''@;'; put 'put ''OVx1OGYzYlx1OTlhNVx1OWMxMlx1NjcyY1x1NGU3Nlx1NGZmOFx1NTk0OVx1NWMwMVx1NWNlZlx1NWNmMFx1NjM2N1x1NjhkMlx1NzBmZFx1NzFhMlx1NzQyYlx1N2UyYlx1ODRlY1x1ODcwMlx1OTAyMlx1OTJkMlx1OWNmM1x1NGUwZFx1NGVkOFx1NGZlZlx1NTA4NVx1NTI1Nlx1NTI2Zlx1''@;'; put 'put ''NTQyNlx1NTQ5MFx1NTdlMFx1NTkyYlx1NWE2NiJdLFsiZGRhMSIsIlx1NWI1YVx1NWI3NVx1NWJjY1x1NWU5Y1x1Zjk2Nlx1NjI3Nlx1NjU3N1x1NjVhN1x1NmQ2ZVx1NmVhNVx1NzIzNlx1N2IyNlx1N2MzZlx1N2YzNlx1ODE1MFx1ODE1MVx1ODE5YVx1ODI0MFx1ODI5OVx1ODNhOVx1OGEw''@;'; put 'put ''M1x1OGNhMFx1OGNlNlx1OGNmYlx1OGQ3NFx1OGRiYVx1OTBlOFx1OTFkY1x1OTYxY1x1OTY0NFx1OTlkOVx1OWNlN1x1NTMxN1x1NTIwNlx1NTQyOVx1NTY3NFx1NThiM1x1NTk1NFx1NTk2ZVx1NWZmZlx1NjFhNFx1NjI2ZVx1NjYxMFx1NmM3ZVx1NzExYVx1NzZjNlx1N2M4OVx1N2NkZVx1''@;'; put 'put ''N2QxYlx1ODJhY1x1OGNjMVx1OTZmMFx1Zjk2N1x1NGY1Ylx1NWYxN1x1NWY3Zlx1NjJjMlx1NWQyOVx1NjcwYlx1NjhkYVx1Nzg3Y1x1N2U0M1x1OWQ2Y1x1NGUxNVx1NTA5OVx1NTMxNVx1NTMyYVx1NTM1MVx1NTk4M1x1NWE2Mlx1NWU4N1x1NjBiMlx1NjE4YVx1NjI0OVx1NjI3OVx1NjU5''@;'; put 'put ''MFx1Njc4N1x1NjlhN1x1NmJkNFx1NmJkNlx1NmJkN1x1NmJkOFx1NmNiOFx1Zjk2OFx1NzQzNVx1NzVmYVx1NzgxMlx1Nzg5MVx1NzlkNVx1NzlkOFx1N2M4M1x1N2RjYlx1N2ZlMVx1ODBhNSJdLFsiZGVhMSIsIlx1ODEzZVx1ODFjMlx1ODNmMlx1ODcxYVx1ODhlOFx1OGFiOVx1OGI2Y1x1''@;'; put 'put ''OGNiYlx1OTExOVx1OTc1ZVx1OThkYlx1OWYzYlx1NTZhY1x1NWIyYVx1NWY2Y1x1NjU4Y1x1NmFiM1x1NmJhZlx1NmQ1Y1x1NmZmMVx1NzAxNVx1NzI1ZFx1NzNhZFx1OGNhN1x1OGNkM1x1OTgzYlx1NjE5MVx1NmMzN1x1ODA1OFx1OWEwMVx1NGU0ZFx1NGU4Ylx1NGU5Ylx1NGVkNVx1NGYz''@;'; put 'put ''YVx1NGYzY1x1NGY3Zlx1NGZkZlx1NTBmZlx1NTNmMlx1NTNmOFx1NTUwNlx1NTVlM1x1NTZkYlx1NThlYlx1NTk2Mlx1NWExMVx1NWJlYlx1NWJmYVx1NWMwNFx1NWRmM1x1NWUyYlx1NWY5OVx1NjAxZFx1NjM2OFx1NjU5Y1x1NjVhZlx1NjdmNlx1NjdmYlx1NjhhZFx1NmI3Ylx1NmM5OVx1''@;'; put 'put ''NmNkN1x1NmUyM1x1NzAwOVx1NzM0NVx1NzgwMlx1NzkzZVx1Nzk0MFx1Nzk2MFx1NzljMVx1N2JlOVx1N2QxN1x1N2Q3Mlx1ODA4Nlx1ODIwZFx1ODM4ZVx1ODRkMVx1ODZjN1x1ODhkZlx1OGE1MFx1OGE1ZVx1OGIxZFx1OGNkY1x1OGQ2Nlx1OGZhZFx1OTBhYVx1OThmY1x1OTlkZlx1OWU5''@;'; put 'put ''ZFx1NTI0YVx1Zjk2OVx1NjcxNFx1Zjk2YSJdLFsiZGZhMSIsIlx1NTA5OFx1NTIyYVx1NWM3MVx1NjU2M1x1NmM1NVx1NzNjYVx1NzUyM1x1NzU5ZFx1N2I5N1x1ODQ5Y1x1OTE3OFx1OTczMFx1NGU3N1x1NjQ5Mlx1NmJiYVx1NzE1ZVx1ODVhOVx1NGUwOVx1Zjk2Ylx1Njc0OVx1NjhlZVx1''@;'; put 'put ''NmUxN1x1ODI5Zlx1ODUxOFx1ODg2Ylx1NjNmN1x1NmY4MVx1OTIxMlx1OThhZlx1NGUwYVx1NTBiN1x1NTBjZlx1NTExZlx1NTU0Nlx1NTVhYVx1NTYxN1x1NWI0MFx1NWMxOVx1NWNlMFx1NWUzOFx1NWU4YVx1NWVhMFx1NWVjMlx1NjBmM1x1Njg1MVx1NmE2MVx1NmU1OFx1NzIzZFx1NzI0''@;'; put 'put ''MFx1NzJjMFx1NzZmOFx1Nzk2NVx1N2JiMVx1N2ZkNFx1ODhmM1x1ODlmNFx1OGE3M1x1OGM2MVx1OGNkZVx1OTcxY1x1NTg1ZVx1NzRiZFx1OGNmZFx1NTVjN1x1Zjk2Y1x1N2E2MVx1N2QyMlx1ODI3Mlx1NzI3Mlx1NzUxZlx1NzUyNVx1Zjk2ZFx1N2IxOVx1NTg4NVx1NThmYlx1NWRiY1x1''@;'; put 'put ''NWU4Zlx1NWViNlx1NWY5MFx1NjA1NVx1NjI5Mlx1NjM3Zlx1NjU0ZFx1NjY5MVx1NjZkOVx1NjZmOFx1NjgxNlx1NjhmMlx1NzI4MFx1NzQ1ZVx1N2I2ZVx1N2Q2ZVx1N2RkNlx1N2Y3MiJdLFsiZTBhMSIsIlx1ODBlNVx1ODIxMlx1ODVhZlx1ODk3Zlx1OGE5M1x1OTAxZFx1OTJlNFx1OWVj''@;'; put 'put ''ZFx1OWYyMFx1NTkxNVx1NTk2ZFx1NWUyZFx1NjBkY1x1NjYxNFx1NjY3M1x1Njc5MFx1NmM1MFx1NmRjNVx1NmY1Zlx1NzdmM1x1NzhhOVx1ODRjNlx1OTFjYlx1OTMyYlx1NGVkOVx1NTBjYVx1NTE0OFx1NTU4NFx1NWIwYlx1NWJhM1x1NjI0N1x1NjU3ZVx1NjVjYlx1NmUzMlx1NzE3ZFx1''@;'; put 'put ''NzQwMVx1NzQ0NFx1NzQ4N1x1NzRiZlx1NzY2Y1x1NzlhYVx1N2RkYVx1N2U1NVx1N2ZhOFx1ODE3YVx1ODFiM1x1ODIzOVx1ODYxYVx1ODdlY1x1OGE3NVx1OGRlM1x1OTA3OFx1OTI5MVx1OTQyNVx1OTk0ZFx1OWJhZVx1NTM2OFx1NWM1MVx1Njk1NFx1NmNjNFx1NmQyOVx1NmUyYlx1ODIw''@;'; put 'put ''Y1x1ODU5Ylx1ODkzYlx1OGEyZFx1OGFhYVx1OTZlYVx1OWY2N1x1NTI2MVx1NjZiOVx1NmJiMlx1N2U5Nlx1ODdmZVx1OGQwZFx1OTU4M1x1OTY1ZFx1NjUxZFx1NmQ4OVx1NzFlZVx1Zjk2ZVx1NTdjZVx1NTlkM1x1NWJhY1x1NjAyN1x1NjBmYVx1NjIxMFx1NjYxZlx1NjY1Zlx1NzMyOVx1''@;'; put 'put ''NzNmOVx1NzZkYlx1NzcwMVx1N2I2YyJdLFsiZTFhMSIsIlx1ODA1Nlx1ODA3Mlx1ODE2NVx1OGFhMFx1OTE5Mlx1NGUxNlx1NTJlMlx1NmI3Mlx1NmQxN1x1N2EwNVx1N2IzOVx1N2QzMFx1Zjk2Zlx1OGNiMFx1NTNlY1x1NTYyZlx1NTg1MVx1NWJiNVx1NWMwZlx1NWMxMVx1NWRlMlx1NjI0''@;'; put 'put ''MFx1NjM4M1x1NjQxNFx1NjYyZFx1NjhiM1x1NmNiY1x1NmQ4OFx1NmVhZlx1NzAxZlx1NzBhNFx1NzFkMlx1NzUyNlx1NzU4Zlx1NzU4ZVx1NzYxOVx1N2IxMVx1N2JlMFx1N2MyYlx1N2QyMFx1N2QzOVx1ODUyY1x1ODU2ZFx1ODYwN1x1OGEzNFx1OTAwZFx1OTA2MVx1OTBiNVx1OTJiN1x1''@;'; put 'put ''OTdmNlx1OWEzN1x1NGZkN1x1NWM2Y1x1Njc1Zlx1NmQ5MVx1N2M5Zlx1N2U4Y1x1OGIxNlx1OGQxNlx1OTAxZlx1NWI2Ylx1NWRmZFx1NjQwZFx1ODRjMFx1OTA1Y1x1OThlMVx1NzM4N1x1NWI4Ylx1NjA5YVx1Njc3ZVx1NmRkZVx1OGExZlx1OGFhNlx1OTAwMVx1OTgwY1x1NTIzN1x1Zjk3''@;'; put 'put ''MFx1NzA1MVx1Nzg4ZVx1OTM5Nlx1ODg3MFx1OTFkN1x1NGZlZVx1NTNkN1x1NTVmZFx1NTZkYVx1NTc4Mlx1NThmZFx1NWFjMlx1NWI4OFx1NWNhYlx1NWNjMFx1NWUyNVx1NjEwMSJdLFsiZTJhMSIsIlx1NjIwZFx1NjI0Ylx1NjM4OFx1NjQxY1x1NjUzNlx1NjU3OFx1NmEzOVx1NmI4YVx1''@;'; put 'put ''NmMzNFx1NmQxOVx1NmYzMVx1NzFlN1x1NzJlOVx1NzM3OFx1NzQwN1x1NzRiMlx1NzYyNlx1Nzc2MVx1NzljMFx1N2E1N1x1N2FlYVx1N2NiOVx1N2Q4Zlx1N2RhY1x1N2U2MVx1N2Y5ZVx1ODEyOVx1ODMzMVx1ODQ5MFx1ODRkYVx1ODVlYVx1ODg5Nlx1OGFiMFx1OGI5MFx1OGYzOFx1OTA0''@;'; put 'put ''Mlx1OTA4M1x1OTE2Y1x1OTI5Nlx1OTJiOVx1OTY4Ylx1OTZhN1x1OTZhOFx1OTZkNlx1OTcwMFx1OTgwOFx1OTk5Nlx1OWFkM1x1OWIxYVx1NTNkNFx1NTg3ZVx1NTkxOVx1NWI3MFx1NWJiZlx1NmRkMVx1NmY1YVx1NzE5Zlx1NzQyMVx1NzRiOVx1ODA4NVx1ODNmZFx1NWRlMVx1NWY4N1x1''@;'; put 'put ''NWZhYVx1NjA0Mlx1NjVlY1x1NjgxMlx1Njk2Zlx1NmE1M1x1NmI4OVx1NmQzNVx1NmRmM1x1NzNlM1x1NzZmZVx1NzdhY1x1N2I0ZFx1N2QxNFx1ODEyM1x1ODIxY1x1ODM0MFx1ODRmNFx1ODU2M1x1OGE2Mlx1OGFjNFx1OTE4N1x1OTMxZVx1OTgwNlx1OTliNFx1NjIwY1x1ODg1M1x1OGZm''@;'; put 'put ''MFx1OTI2NVx1NWQwN1x1NWQyNyJdLFsiZTNhMSIsIlx1NWQ2OVx1NzQ1Zlx1ODE5ZFx1ODc2OFx1NmZkNVx1NjJmZVx1N2ZkMlx1ODkzNlx1ODk3Mlx1NGUxZVx1NGU1OFx1NTBlN1x1NTJkZFx1NTM0N1x1NjI3Zlx1NjYwN1x1N2U2OVx1ODgwNVx1OTY1ZVx1NGY4ZFx1NTMxOVx1NTYzNlx1''@;'; put 'put ''NTljYlx1NWFhNFx1NWMzOFx1NWM0ZVx1NWM0ZFx1NWUwMlx1NWYxMVx1NjA0M1x1NjViZFx1NjYyZlx1NjY0Mlx1NjdiZVx1NjdmNFx1NzMxY1x1NzdlMlx1NzkzYVx1N2ZjNVx1ODQ5NFx1ODRjZFx1ODk5Nlx1OGE2Nlx1OGE2OVx1OGFlMVx1OGM1NVx1OGM3YVx1NTdmNFx1NWJkNFx1NWYw''@;'; put 'put ''Zlx1NjA2Zlx1NjJlZFx1NjkwZFx1NmI5Nlx1NmU1Y1x1NzE4NFx1N2JkMlx1ODc1NVx1OGI1OFx1OGVmZVx1OThkZlx1OThmZVx1NGYzOFx1NGY4MVx1NGZlMVx1NTQ3Ylx1NWEyMFx1NWJiOFx1NjEzY1x1NjViMFx1NjY2OFx1NzFmY1x1NzUzM1x1Nzk1ZVx1N2QzM1x1ODE0ZVx1ODFlM1x1''@;'; put 'put ''ODM5OFx1ODVhYVx1ODVjZVx1ODcwM1x1OGEwYVx1OGVhYlx1OGY5Ylx1Zjk3MVx1OGZjNVx1NTkzMVx1NWJhNFx1NWJlNlx1NjA4OVx1NWJlOVx1NWMwYlx1NWZjM1x1NmM4MSJdLFsiZTRhMSIsIlx1Zjk3Mlx1NmRmMVx1NzAwYlx1NzUxYVx1ODJhZlx1OGFmNlx1NGVjMFx1NTM0MVx1Zjk3''@;'; put 'put ''M1x1OTZkOVx1NmMwZlx1NGU5ZVx1NGZjNFx1NTE1Mlx1NTU1ZVx1NWEyNVx1NWNlOFx1NjIxMVx1NzI1OVx1ODJiZFx1ODNhYVx1ODZmZVx1ODg1OVx1OGExZFx1OTYzZlx1OTZjNVx1OTkxM1x1OWQwOVx1OWQ1ZFx1NTgwYVx1NWNiM1x1NWRiZFx1NWU0NFx1NjBlMVx1NjExNVx1NjNlMVx1''@;'; put 'put ''NmEwMlx1NmUyNVx1OTEwMlx1OTM1NFx1OTg0ZVx1OWMxMFx1OWY3N1x1NWI4OVx1NWNiOFx1NjMwOVx1NjY0Zlx1Njg0OFx1NzczY1x1OTZjMVx1OTc4ZFx1OTg1NFx1OWI5Zlx1NjVhMVx1OGIwMVx1OGVjYlx1OTViY1x1NTUzNVx1NWNhOVx1NWRkNlx1NWViNVx1NjY5N1x1NzY0Y1x1ODNm''@;'; put 'put ''NFx1OTVjN1x1NThkM1x1NjJiY1x1NzJjZVx1OWQyOFx1NGVmMFx1NTkyZVx1NjAwZlx1NjYzYlx1NmI4M1x1NzllN1x1OWQyNlx1NTM5M1x1NTRjMFx1NTdjM1x1NWQxNlx1NjExYlx1NjZkNlx1NmRhZlx1Nzg4ZFx1ODI3ZVx1OTY5OFx1OTc0NFx1NTM4NFx1NjI3Y1x1NjM5Nlx1NmRiMlx1''@;'; put 'put ''N2UwYVx1ODE0Ylx1OTg0ZCJdLFsiZTVhMSIsIlx1NmFmYlx1N2Y0Y1x1OWRhZlx1OWUxYVx1NGU1Zlx1NTAzYlx1NTFiNlx1NTkxY1x1NjBmOVx1NjNmNlx1NjkzMFx1NzIzYVx1ODAzNlx1Zjk3NFx1OTFjZVx1NWYzMVx1Zjk3NVx1Zjk3Nlx1N2QwNFx1ODJlNVx1ODQ2Zlx1ODRiYlx1ODVl''@;'; put 'put ''NVx1OGU4ZFx1Zjk3N1x1NGY2Zlx1Zjk3OFx1Zjk3OVx1NThlNFx1NWI0M1x1NjA1OVx1NjNkYVx1NjUxOFx1NjU2ZFx1NjY5OFx1Zjk3YVx1Njk0YVx1NmEyM1x1NmQwYlx1NzAwMVx1NzE2Y1x1NzVkMlx1NzYwZFx1NzliM1x1N2E3MFx1Zjk3Ylx1N2Y4YVx1Zjk3Y1x1ODk0NFx1Zjk3ZFx1''@;'; put 'put ''OGI5M1x1OTFjMFx1OTY3ZFx1Zjk3ZVx1OTkwYVx1NTcwNFx1NWZhMVx1NjViY1x1NmYwMVx1NzYwMFx1NzlhNlx1OGE5ZVx1OTlhZFx1OWI1YVx1OWY2Y1x1NTEwNFx1NjFiNlx1NjI5MVx1NmE4ZFx1ODFjNlx1NTA0M1x1NTgzMFx1NWY2Nlx1NzEwOVx1OGEwMFx1OGFmYVx1NWI3Y1x1ODYx''@;'; put 'put ''Nlx1NGZmYVx1NTEzY1x1NTZiNFx1NTk0NFx1NjNhOVx1NmRmOVx1NWRhYVx1Njk2ZFx1NTE4Nlx1NGU4OFx1NGY1OVx1Zjk3Zlx1Zjk4MFx1Zjk4MVx1NTk4Mlx1Zjk4MiJdLFsiZTZhMSIsIlx1Zjk4M1x1NmI1Zlx1NmM1ZFx1Zjk4NFx1NzRiNVx1NzkxNlx1Zjk4NVx1ODIwN1x1ODI0NVx1''@;'; put 'put ''ODMzOVx1OGYzZlx1OGY1ZFx1Zjk4Nlx1OTkxOFx1Zjk4N1x1Zjk4OFx1Zjk4OVx1NGVhNlx1Zjk4YVx1NTdkZlx1NWY3OVx1NjYxM1x1Zjk4Ylx1Zjk4Y1x1NzVhYlx1N2U3OVx1OGI2Zlx1Zjk4ZFx1OTAwNlx1OWE1Ylx1NTZhNVx1NTgyN1x1NTlmOFx1NWExZlx1NWJiNFx1Zjk4ZVx1NWVm''@;'; put 'put ''Nlx1Zjk4Zlx1Zjk5MFx1NjM1MFx1NjMzYlx1Zjk5MVx1NjkzZFx1NmM4N1x1NmNiZlx1NmQ4ZVx1NmQ5M1x1NmRmNVx1NmYxNFx1Zjk5Mlx1NzBkZlx1NzEzNlx1NzE1OVx1Zjk5M1x1NzFjM1x1NzFkNVx1Zjk5NFx1Nzg0Zlx1Nzg2Zlx1Zjk5NVx1N2I3NVx1N2RlM1x1Zjk5Nlx1N2UyZlx1''@;'; put 'put ''Zjk5N1x1ODg0ZFx1OGVkZlx1Zjk5OFx1Zjk5OVx1Zjk5YVx1OTI1Ylx1Zjk5Ylx1OWNmNlx1Zjk5Y1x1Zjk5ZFx1Zjk5ZVx1NjA4NVx1NmQ4NVx1Zjk5Zlx1NzFiMVx1ZjlhMFx1ZjlhMVx1OTViMVx1NTNhZFx1ZjlhMlx1ZjlhM1x1ZjlhNFx1NjdkM1x1ZjlhNVx1NzA4ZVx1NzEzMFx1NzQz''@;'; put 'put ''MFx1ODI3Nlx1ODJkMiJdLFsiZTdhMSIsIlx1ZjlhNlx1OTViYlx1OWFlNVx1OWU3ZFx1NjZjNFx1ZjlhN1x1NzFjMVx1ODQ0OVx1ZjlhOFx1ZjlhOVx1NTg0Ylx1ZjlhYVx1ZjlhYlx1NWRiOFx1NWY3MVx1ZjlhY1x1NjYyMFx1NjY4ZVx1Njk3OVx1NjlhZVx1NmMzOFx1NmNmM1x1NmUzNlx1''@;'; put 'put ''NmY0MVx1NmZkYVx1NzAxYlx1NzAyZlx1NzE1MFx1NzFkZlx1NzM3MFx1ZjlhZFx1NzQ1Ylx1ZjlhZVx1NzRkNFx1NzZjOFx1N2E0ZVx1N2U5M1x1ZjlhZlx1ZjliMFx1ODJmMVx1OGE2MFx1OGZjZVx1ZjliMVx1OTM0OFx1ZjliMlx1OTcxOVx1ZjliM1x1ZjliNFx1NGU0Mlx1NTAyYVx1Zjli''@;'; put 'put ''NVx1NTIwOFx1NTNlMVx1NjZmM1x1NmM2ZFx1NmZjYVx1NzMwYVx1Nzc3Zlx1N2E2Mlx1ODJhZVx1ODVkZFx1ODYwMlx1ZjliNlx1ODhkNFx1OGE2M1x1OGI3ZFx1OGM2Ylx1ZjliN1x1OTJiM1x1ZjliOFx1OTcxM1x1OTgxMFx1NGU5NFx1NGYwZFx1NGZjOVx1NTBiMlx1NTM0OFx1NTQzZVx1''@;'; put 'put ''NTQzM1x1NTVkYVx1NTg2Mlx1NThiYVx1NTk2N1x1NWExYlx1NWJlNFx1NjA5Zlx1ZjliOVx1NjFjYVx1NjU1Nlx1NjVmZlx1NjY2NFx1NjhhN1x1NmM1YVx1NmZiMyJdLFsiZThhMSIsIlx1NzBjZlx1NzFhY1x1NzM1Mlx1N2I3ZFx1ODcwOFx1OGFhNFx1OWMzMlx1OWYwN1x1NWM0Ylx1NmM4''@;'; put 'put ''M1x1NzM0NFx1NzM4OVx1OTIzYVx1NmVhYlx1NzQ2NVx1NzYxZlx1N2E2OVx1N2UxNVx1ODYwYVx1NTE0MFx1NThjNVx1NjRjMVx1NzRlZVx1NzUxNVx1NzY3MFx1N2ZjMVx1OTA5NVx1OTZjZFx1OTk1NFx1NmUyNlx1NzRlNlx1N2FhOVx1N2FhYVx1ODFlNVx1ODZkOVx1ODc3OFx1OGExYlx1''@;'; put 'put ''NWE0OVx1NWI4Y1x1NWI5Ylx1NjhhMVx1NjkwMFx1NmQ2M1x1NzNhOVx1NzQxM1x1NzQyY1x1Nzg5N1x1N2RlOVx1N2ZlYlx1ODExOFx1ODE1NVx1ODM5ZVx1OGM0Y1x1OTYyZVx1OTgxMVx1NjZmMFx1NWY4MFx1NjVmYVx1Njc4OVx1NmM2YVx1NzM4Ylx1NTAyZFx1NWEwM1x1NmI2YVx1Nzdl''@;'; put 'put ''ZVx1NTkxNlx1NWQ2Y1x1NWRjZFx1NzMyNVx1NzU0Zlx1ZjliYVx1ZjliYlx1NTBlNVx1NTFmOVx1NTgyZlx1NTkyZFx1NTk5Nlx1NTlkYVx1NWJlNVx1ZjliY1x1ZjliZFx1NWRhMlx1NjJkN1x1NjQxNlx1NjQ5M1x1NjRmZVx1ZjliZVx1NjZkY1x1ZjliZlx1NmE0OFx1ZjljMFx1NzFmZlx1''@;'; put 'put ''NzQ2NFx1ZjljMSJdLFsiZTlhMSIsIlx1N2E4OFx1N2FhZlx1N2U0N1x1N2U1ZVx1ODAwMFx1ODE3MFx1ZjljMlx1ODdlZlx1ODk4MVx1OGIyMFx1OTA1OVx1ZjljM1x1OTA4MFx1OTk1Mlx1NjE3ZVx1NmIzMlx1NmQ3NFx1N2UxZlx1ODkyNVx1OGZiMVx1NGZkMVx1NTBhZFx1NTE5N1x1NTJj''@;'; put 'put ''N1x1NTdjN1x1NTg4OVx1NWJiOVx1NWViOFx1NjE0Mlx1Njk5NVx1NmQ4Y1x1NmU2N1x1NmViNlx1NzE5NFx1NzQ2Mlx1NzUyOFx1NzUyY1x1ODA3M1x1ODMzOFx1ODRjOVx1OGUwYVx1OTM5NFx1OTNkZVx1ZjljNFx1NGU4ZVx1NGY1MVx1NTA3Nlx1NTEyYVx1NTNjOFx1NTNjYlx1NTNmM1x1''@;'; put 'put ''NWI4N1x1NWJkM1x1NWMyNFx1NjExYVx1NjE4Mlx1NjVmNFx1NzI1Ylx1NzM5N1x1NzQ0MFx1NzZjMlx1Nzk1MFx1Nzk5MVx1NzliOVx1N2QwNlx1N2ZiZFx1ODI4Ylx1ODVkNVx1ODY1ZVx1OGZjMlx1OTA0N1x1OTBmNVx1OTFlYVx1OTY4NVx1OTZlOFx1OTZlOVx1NTJkNlx1NWY2N1x1NjVl''@;'; put 'put ''ZFx1NjYzMVx1NjgyZlx1NzE1Y1x1N2EzNlx1OTBjMVx1OTgwYVx1NGU5MVx1ZjljNVx1NmE1Mlx1NmI5ZVx1NmY5MFx1NzE4OVx1ODAxOFx1ODJiOFx1ODU1MyJdLFsiZWFhMSIsIlx1OTA0Ylx1OTY5NVx1OTZmMlx1OTdmYlx1ODUxYVx1OWIzMVx1NGU5MFx1NzE4YVx1OTZjNFx1NTE0M1x1''@;'; put 'put ''NTM5Zlx1NTRlMVx1NTcxM1x1NTcxMlx1NTdhM1x1NWE5Ylx1NWFjNFx1NWJjM1x1NjAyOFx1NjEzZlx1NjNmNFx1NmM4NVx1NmQzOVx1NmU3Mlx1NmU5MFx1NzIzMFx1NzMzZlx1NzQ1N1x1ODJkMVx1ODg4MVx1OGY0NVx1OTA2MFx1ZjljNlx1OTY2Mlx1OTg1OFx1OWQxYlx1NjcwOFx1OGQ4''@;'; put 'put ''YVx1OTI1ZVx1NGY0ZFx1NTA0OVx1NTBkZVx1NTM3MVx1NTcwZFx1NTlkNFx1NWEwMVx1NWMwOVx1NjE3MFx1NjY5MFx1NmUyZFx1NzIzMlx1NzQ0Ylx1N2RlZlx1ODBjM1x1ODQwZVx1ODQ2Nlx1ODUzZlx1ODc1Zlx1ODg1Ylx1ODkxOFx1OGIwMlx1OTA1NVx1OTdjYlx1OWI0Zlx1NGU3M1x1''@;'; put 'put ''NGY5MVx1NTExMlx1NTE2YVx1ZjljN1x1NTUyZlx1NTVhOVx1NWI3YVx1NWJhNVx1NWU3Y1x1NWU3ZFx1NWViZVx1NjBhMFx1NjBkZlx1NjEwOFx1NjEwOVx1NjNjNFx1NjUzOFx1NjcwOVx1ZjljOFx1NjdkNFx1NjdkYVx1ZjljOVx1Njk2MVx1Njk2Mlx1NmNiOVx1NmQyN1x1ZjljYVx1NmUz''@;'; put 'put ''OFx1ZjljYiJdLFsiZWJhMSIsIlx1NmZlMVx1NzMzNlx1NzMzN1x1ZjljY1x1NzQ1Y1x1NzUzMVx1ZjljZFx1NzY1Mlx1ZjljZVx1ZjljZlx1N2RhZFx1ODFmZVx1ODQzOFx1ODhkNVx1OGE5OFx1OGFkYlx1OGFlZFx1OGUzMFx1OGU0Mlx1OTA0YVx1OTAzZVx1OTA3YVx1OTE0OVx1OTFjOVx1''@;'; put 'put ''OTM2ZVx1ZjlkMFx1ZjlkMVx1NTgwOVx1ZjlkMlx1NmJkM1x1ODA4OVx1ODBiMlx1ZjlkM1x1ZjlkNFx1NTE0MVx1NTk2Ylx1NWMzOVx1ZjlkNVx1ZjlkNlx1NmY2NFx1NzNhN1x1ODBlNFx1OGQwN1x1ZjlkN1x1OTIxN1x1OTU4Zlx1ZjlkOFx1ZjlkOVx1ZjlkYVx1ZjlkYlx1ODA3Zlx1NjIw''@;'; put 'put ''ZVx1NzAxY1x1N2Q2OFx1ODc4ZFx1ZjlkY1x1NTdhMFx1NjA2OVx1NjE0N1x1NmJiN1x1OGFiZVx1OTI4MFx1OTZiMVx1NGU1OVx1NTQxZlx1NmRlYlx1ODUyZFx1OTY3MFx1OTdmM1x1OThlZVx1NjNkNlx1NmNlM1x1OTA5MVx1NTFkZFx1NjFjOVx1ODFiYVx1OWRmOVx1NGY5ZFx1NTAxYVx1''@;'; put 'put ''NTEwMFx1NWI5Y1x1NjEwZlx1NjFmZlx1NjRlY1x1NjkwNVx1NmJjNVx1NzU5MVx1NzdlM1x1N2ZhOVx1ODI2NFx1ODU4Zlx1ODdmYlx1ODg2M1x1OGFiYyJdLFsiZWNhMSIsIlx1OGI3MFx1OTFhYlx1NGU4Y1x1NGVlNVx1NGYwYVx1ZjlkZFx1ZjlkZVx1NTkzN1x1NTllOFx1ZjlkZlx1NWRm''@;'; put 'put ''Mlx1NWYxYlx1NWY1Ylx1NjAyMVx1ZjllMFx1ZjllMVx1ZjllMlx1ZjllM1x1NzIzZVx1NzNlNVx1ZjllNFx1NzU3MFx1NzVjZFx1ZjllNVx1NzlmYlx1ZjllNlx1ODAwY1x1ODAzM1x1ODA4NFx1ODJlMVx1ODM1MVx1ZjllN1x1ZjllOFx1OGNiZFx1OGNiM1x1OTA4N1x1ZjllOVx1ZjllYVx1''@;'; put 'put ''OThmNFx1OTkwY1x1ZjllYlx1ZjllY1x1NzAzN1x1NzZjYVx1N2ZjYVx1N2ZjY1x1N2ZmY1x1OGIxYVx1NGViYVx1NGVjMVx1NTIwM1x1NTM3MFx1ZjllZFx1NTRiZFx1NTZlMFx1NTlmYlx1NWJjNVx1NWYxNVx1NWZjZFx1NmU2ZVx1ZjllZVx1ZjllZlx1N2Q2YVx1ODMzNVx1ZjlmMFx1ODY5''@;'; put 'put ''M1x1OGE4ZFx1ZjlmMVx1OTc2ZFx1OTc3N1x1ZjlmMlx1ZjlmM1x1NGUwMFx1NGY1YVx1NGY3ZVx1NThmOVx1NjVlNVx1NmVhMlx1OTAzOFx1OTNiMFx1OTliOVx1NGVmYlx1NThlY1x1NTk4YVx1NTlkOVx1NjA0MVx1ZjlmNFx1ZjlmNVx1N2ExNFx1ZjlmNlx1ODM0Zlx1OGNjM1x1NTE2NVx1''@;'; put 'put ''NTM0NCJdLFsiZWRhMSIsIlx1ZjlmN1x1ZjlmOFx1ZjlmOVx1NGVjZFx1NTI2OVx1NWI1NVx1ODJiZlx1NGVkNFx1NTIzYVx1NTRhOFx1NTljOVx1NTlmZlx1NWI1MFx1NWI1N1x1NWI1Y1x1NjA2M1x1NjE0OFx1NmVjYlx1NzA5OVx1NzE2ZVx1NzM4Nlx1NzRmN1x1NzViNVx1NzhjMVx1N2Qy''@;'; put 'put ''Ylx1ODAwNVx1ODFlYVx1ODMyOFx1ODUxN1x1ODVjOVx1OGFlZVx1OGNjN1x1OTZjY1x1NGY1Y1x1NTJmYVx1NTZiY1x1NjVhYlx1NjYyOFx1NzA3Y1x1NzBiOFx1NzIzNVx1N2RiZFx1ODI4ZFx1OTE0Y1x1OTZjMFx1OWQ3Mlx1NWI3MVx1NjhlN1x1NmI5OFx1NmY3YVx1NzZkZVx1NWM5MVx1''@;'; put 'put ''NjZhYlx1NmY1Ylx1N2JiNFx1N2MyYVx1ODgzNlx1OTZkY1x1NGUwOFx1NGVkN1x1NTMyMFx1NTgzNFx1NThiYlx1NThlZlx1NTk2Y1x1NWMwN1x1NWUzM1x1NWU4NFx1NWYzNVx1NjM4Y1x1NjZiMlx1Njc1Nlx1NmExZlx1NmFhM1x1NmIwY1x1NmYzZlx1NzI0Nlx1ZjlmYVx1NzM1MFx1NzQ4''@;'; put 'put ''Ylx1N2FlMFx1N2NhN1x1ODE3OFx1ODFkZlx1ODFlN1x1ODM4YVx1ODQ2Y1x1ODUyM1x1ODU5NFx1ODVjZlx1ODhkZFx1OGQxM1x1OTFhY1x1OTU3NyJdLFsiZWVhMSIsIlx1OTY5Y1x1NTE4ZFx1NTRjOVx1NTcyOFx1NWJiMFx1NjI0ZFx1Njc1MFx1NjgzZFx1Njg5M1x1NmUzZFx1NmVkM1x1''@;'; put 'put ''NzA3ZFx1N2UyMVx1ODhjMVx1OGNhMVx1OGYwOVx1OWY0Ylx1OWY0ZVx1NzIyZFx1N2I4Zlx1OGFjZFx1OTMxYVx1NGY0N1x1NGY0ZVx1NTEzMlx1NTQ4MFx1NTlkMFx1NWU5NVx1NjJiNVx1Njc3NVx1Njk2ZVx1NmExN1x1NmNhZVx1NmUxYVx1NzJkOVx1NzMyYVx1NzViZFx1N2JiOFx1N2Qz''@;'; put 'put ''NVx1ODJlN1x1ODNmOVx1ODQ1N1x1ODVmN1x1OGE1Ylx1OGNhZlx1OGU4N1x1OTAxOVx1OTBiOFx1OTZjZVx1OWY1Zlx1NTJlM1x1NTQwYVx1NWFlMVx1NWJjMlx1NjQ1OFx1NjU3NVx1NmVmNFx1NzJjNFx1ZjlmYlx1NzY4NFx1N2E0ZFx1N2IxYlx1N2M0ZFx1N2UzZVx1N2ZkZlx1ODM3Ylx1''@;'; put 'put ''OGIyYlx1OGNjYVx1OGQ2NFx1OGRlMVx1OGU1Zlx1OGZlYVx1OGZmOVx1OTA2OVx1OTNkMVx1NGY0M1x1NGY3YVx1NTBiM1x1NTE2OFx1NTE3OFx1NTI0ZFx1NTI2YVx1NTg2MVx1NTg3Y1x1NTk2MFx1NWMwOFx1NWM1NVx1NWVkYlx1NjA5Ylx1NjIzMFx1NjgxM1x1NmJiZlx1NmMwOFx1NmZi''@;'; put 'put ''MSJdLFsiZWZhMSIsIlx1NzE0ZVx1NzQyMFx1NzUzMFx1NzUzOFx1NzU1MVx1NzY3Mlx1N2I0Y1x1N2I4Ylx1N2JhZFx1N2JjNlx1N2U4Zlx1OGE2ZVx1OGYzZVx1OGY0OVx1OTIzZlx1OTI5M1x1OTMyMlx1OTQyYlx1OTZmYlx1OTg1YVx1OTg2Ylx1OTkxZVx1NTIwN1x1NjIyYVx1NjI5OFx1''@;'; put 'put ''NmQ1OVx1NzY2NFx1N2FjYVx1N2JjMFx1N2Q3Nlx1NTM2MFx1NWNiZVx1NWU5N1x1NmYzOFx1NzBiOVx1N2M5OFx1OTcxMVx1OWI4ZVx1OWVkZVx1NjNhNVx1NjQ3YVx1ODc3Nlx1NGUwMVx1NGU5NVx1NGVhZFx1NTA1Y1x1NTA3NVx1NTQ0OFx1NTljM1x1NWI5YVx1NWU0MFx1NWVhZFx1NWVm''@;'; put 'put ''N1x1NWY4MVx1NjBjNVx1NjMzYVx1NjUzZlx1NjU3NFx1NjVjY1x1NjY3Nlx1NjY3OFx1NjdmZVx1Njk2OFx1NmE4OVx1NmI2M1x1NmM0MFx1NmRjMFx1NmRlOFx1NmUxZlx1NmU1ZVx1NzAxZVx1NzBhMVx1NzM4ZVx1NzNmZFx1NzUzYVx1Nzc1Ylx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2E3ZFx1''@;'; put 'put ''N2NiZVx1N2Q4ZVx1ODI0N1x1OGEwMlx1OGFlYVx1OGM5ZVx1OTEyZFx1OTE0YVx1OTFkOFx1OTI2Nlx1OTJjY1x1OTMyMFx1OTcwNlx1OTc1NiJdLFsiZjBhMSIsIlx1OTc1Y1x1OTgwMlx1OWYwZVx1NTIzNlx1NTI5MVx1NTU3Y1x1NTgyNFx1NWUxZFx1NWYxZlx1NjA4Y1x1NjNkMFx1Njhh''@;'; put 'put ''Zlx1NmZkZlx1Nzk2ZFx1N2IyY1x1ODFjZFx1ODViYVx1ODhmZFx1OGFmOFx1OGU0NFx1OTE4ZFx1OTY2NFx1OTY5Ylx1OTczZFx1OTg0Y1x1OWY0YVx1NGZjZVx1NTE0Nlx1NTFjYlx1NTJhOVx1NTYzMlx1NWYxNFx1NWY2Ylx1NjNhYVx1NjRjZFx1NjVlOVx1NjY0MVx1NjZmYVx1NjZmOVx1''@;'; put 'put ''NjcxZFx1Njg5ZFx1NjhkN1x1NjlmZFx1NmYxNVx1NmY2ZVx1NzE2N1x1NzFlNVx1NzIyYVx1NzRhYVx1NzczYVx1Nzk1Nlx1Nzk1YVx1NzlkZlx1N2EyMFx1N2E5NVx1N2M5N1x1N2NkZlx1N2Q0NFx1N2U3MFx1ODA4N1x1ODVmYlx1ODZhNFx1OGE1NFx1OGFiZlx1OGQ5OVx1OGU4MVx1OTAy''@;'; put 'put ''MFx1OTA2ZFx1OTFlM1x1OTYzYlx1OTZkNVx1OWNlNVx1NjVjZlx1N2MwN1x1OGRiM1x1OTNjM1x1NWI1OFx1NWMwYVx1NTM1Mlx1NjJkOVx1NzMxZFx1NTAyN1x1NWI5N1x1NWY5ZVx1NjBiMFx1NjE2Ylx1NjhkNVx1NmRkOVx1NzQyZVx1N2EyZVx1N2Q0Mlx1N2Q5Y1x1N2UzMVx1ODE2YiJd''@;'; put 'put ''LFsiZjFhMSIsIlx1OGUyYVx1OGUzNVx1OTM3ZVx1OTQxOFx1NGY1MFx1NTc1MFx1NWRlNlx1NWVhN1x1NjMyYlx1N2Y2YVx1NGUzYlx1NGY0Zlx1NGY4Zlx1NTA1YVx1NTlkZFx1ODBjNFx1NTQ2YVx1NTQ2OFx1NTVmZVx1NTk0Zlx1NWI5OVx1NWRkZVx1NWVkYVx1NjY1ZFx1NjczMVx1Njdm''@;'; put 'put ''MVx1NjgyYVx1NmNlOFx1NmQzMlx1NmU0YVx1NmY4ZFx1NzBiN1x1NzNlMFx1NzU4N1x1N2M0Y1x1N2QwMlx1N2QyY1x1N2RhMlx1ODIxZlx1ODZkYlx1OGEzYlx1OGE4NVx1OGQ3MFx1OGU4YVx1OGYzM1x1OTAzMVx1OTE0ZVx1OTE1Mlx1OTQ0NFx1OTlkMFx1N2FmOVx1N2NhNVx1NGZjYVx1''@;'; put 'put ''NTEwMVx1NTFjNlx1NTdjOFx1NWJlZlx1NWNmYlx1NjY1OVx1NmEzZFx1NmQ1YVx1NmU5Nlx1NmZlY1x1NzEwY1x1NzU2Zlx1N2FlM1x1ODgyMlx1OTAyMVx1OTA3NVx1OTZjYlx1OTlmZlx1ODMwMVx1NGUyZFx1NGVmMlx1ODg0Nlx1OTFjZFx1NTM3ZFx1NmFkYlx1Njk2Ylx1NmM0MVx1ODQ3''@;'; put 'put ''YVx1NTg5ZVx1NjE4ZVx1NjZmZVx1NjJlZlx1NzBkZFx1NzUxMVx1NzVjN1x1N2U1Mlx1ODRiOFx1OGI0OVx1OGQwOFx1NGU0Ylx1NTNlYSJdLFsiZjJhMSIsIlx1NTRhYlx1NTczMFx1NTc0MFx1NWZkN1x1NjMwMVx1NjMwN1x1NjQ2Zlx1NjUyZlx1NjVlOFx1NjY3YVx1Njc5ZFx1NjdiM1x1''@;'; put 'put ''NmI2Mlx1NmM2MFx1NmM5YVx1NmYyY1x1NzdlNVx1NzgyNVx1Nzk0OVx1Nzk1N1x1N2QxOVx1ODBhMlx1ODEwMlx1ODFmM1x1ODI5ZFx1ODJiN1x1ODcxOFx1OGE4Y1x1ZjlmY1x1OGQwNFx1OGRiZVx1OTA3Mlx1NzZmNFx1N2ExOVx1N2EzN1x1N2U1NFx1ODA3N1x1NTUwN1x1NTVkNFx1NTg3''@;'; put 'put ''NVx1NjMyZlx1NjQyMlx1NjY0OVx1NjY0Ylx1Njg2ZFx1Njk5Ylx1NmI4NFx1NmQyNVx1NmViMVx1NzNjZFx1NzQ2OFx1NzRhMVx1NzU1Ylx1NzViOVx1NzZlMVx1NzcxZVx1Nzc4Ylx1NzllNlx1N2UwOVx1N2UxZFx1ODFmYlx1ODUyZlx1ODg5N1x1OGEzYVx1OGNkMVx1OGVlYlx1OGZiMFx1''@;'; put 'put ''OTAzMlx1OTNhZFx1OTY2M1x1OTY3M1x1OTcwN1x1NGY4NFx1NTNmMVx1NTllYVx1NWFjOVx1NWUxOVx1Njg0ZVx1NzRjNlx1NzViZVx1NzllOVx1N2E5Mlx1ODFhM1x1ODZlZFx1OGNlYVx1OGRjY1x1OGZlZFx1NjU5Zlx1NjcxNVx1ZjlmZFx1NTdmN1x1NmY1N1x1N2RkZFx1OGYyZiJdLFsi''@;'; put 'put ''ZjNhMSIsIlx1OTNmNlx1OTZjNlx1NWZiNVx1NjFmMlx1NmY4NFx1NGUxNFx1NGY5OFx1NTAxZlx1NTNjOVx1NTVkZlx1NWQ2Zlx1NWRlZVx1NmIyMVx1NmI2NFx1NzhjYlx1N2I5YVx1ZjlmZVx1OGU0OVx1OGVjYVx1OTA2ZVx1NjM0OVx1NjQzZVx1Nzc0MFx1N2E4NFx1OTMyZlx1OTQ3Zlx1''@;'; put 'put ''OWY2YVx1NjRiMFx1NmZhZlx1NzFlNlx1NzRhOFx1NzRkYVx1N2FjNFx1N2MxMlx1N2U4Mlx1N2NiMlx1N2U5OFx1OGI5YVx1OGQwYVx1OTQ3ZFx1OTkxMFx1OTk0Y1x1NTIzOVx1NWJkZlx1NjRlNlx1NjcyZFx1N2QyZVx1NTBlZFx1NTNjM1x1NTg3OVx1NjE1OFx1NjE1OVx1NjFmYVx1NjVh''@;'; put 'put ''Y1x1N2FkOVx1OGI5Mlx1OGI5Nlx1NTAwOVx1NTAyMVx1NTI3NVx1NTUzMVx1NWEzY1x1NWVlMFx1NWY3MFx1NjEzNFx1NjU1ZVx1NjYwY1x1NjYzNlx1NjZhMlx1NjljZFx1NmVjNFx1NmYzMlx1NzMxNlx1NzYyMVx1N2E5M1x1ODEzOVx1ODI1OVx1ODNkNlx1ODRiY1x1NTBiNVx1NTdmMFx1''@;'; put 'put ''NWJjMFx1NWJlOFx1NWY2OVx1NjNhMVx1NzgyNlx1N2RiNVx1ODNkY1x1ODUyMVx1OTFjN1x1OTFmNVx1NTE4YVx1NjdmNVx1N2I1NiJdLFsiZjRhMSIsIlx1OGNhY1x1NTFjNFx1NTliYlx1NjBiZFx1ODY1NVx1NTAxY1x1ZjlmZlx1NTI1NFx1NWMzYVx1NjE3ZFx1NjIxYVx1NjJkM1x1NjRm''@;'; put 'put ''Mlx1NjVhNVx1NmVjY1x1NzYyMFx1ODEwYVx1OGU2MFx1OTY1Zlx1OTZiYlx1NGVkZlx1NTM0M1x1NTU5OFx1NTkyOVx1NWRkZFx1NjRjNVx1NmNjOVx1NmRmYVx1NzM5NFx1N2E3Zlx1ODIxYlx1ODVhNlx1OGNlNFx1OGUxMFx1OTA3N1x1OTFlN1x1OTVlMVx1OTYyMVx1OTdjNlx1NTFmOFx1''@;'; put 'put ''NTRmMlx1NTU4Nlx1NWZiOVx1NjRhNFx1NmY4OFx1N2RiNFx1OGYxZlx1OGY0ZFx1OTQzNVx1NTBjOVx1NWMxNlx1NmNiZVx1NmRmYlx1NzUxYlx1NzdiYlx1N2MzZFx1N2M2NFx1OGE3OVx1OGFjMlx1NTgxZVx1NTliZVx1NWUxNlx1NjM3N1x1NzI1Mlx1NzU4YVx1Nzc2Ylx1OGFkY1x1OGNi''@;'; put 'put ''Y1x1OGYxMlx1NWVmM1x1NjY3NFx1NmRmOFx1ODA3ZFx1ODNjMVx1OGFjYlx1OTc1MVx1OWJkNlx1ZmEwMFx1NTI0M1x1NjZmZlx1NmQ5NVx1NmVlZlx1N2RlMFx1OGFlNlx1OTAyZVx1OTA1ZVx1OWFkNFx1NTIxZFx1NTI3Zlx1NTRlOFx1NjE5NFx1NjI4NFx1NjJkYlx1NjhhMiJdLFsiZjVh''@;'; put 'put ''MSIsIlx1NjkxMlx1Njk1YVx1NmEzNVx1NzA5Mlx1NzEyNlx1Nzg1ZFx1NzkwMVx1NzkwZVx1NzlkMlx1N2EwZFx1ODA5Nlx1ODI3OFx1ODJkNVx1ODM0OVx1ODU0OVx1OGM4Mlx1OGQ4NVx1OTE2Mlx1OTE4Ylx1OTFhZVx1NGZjM1x1NTZkMVx1NzFlZFx1NzdkN1x1ODcwMFx1ODlmOFx1NWJm''@;'; put 'put ''OFx1NWZkNlx1Njc1MVx1OTBhOFx1NTNlMlx1NTg1YVx1NWJmNVx1NjBhNFx1NjE4MVx1NjQ2MFx1N2UzZFx1ODA3MFx1ODUyNVx1OTI4M1x1NjRhZVx1NTBhY1x1NWQxNFx1NjcwMFx1NTg5Y1x1NjJiZFx1NjNhOFx1NjkwZVx1Njk3OFx1NmExZVx1NmU2Ylx1NzZiYVx1NzljYlx1ODJiYlx1''@;'; put 'put ''ODQyOVx1OGFjZlx1OGRhOFx1OGZmZFx1OTExMlx1OTE0Ylx1OTE5Y1x1OTMxMFx1OTMxOFx1OTM5YVx1OTZkYlx1OWEzNlx1OWMwZFx1NGUxMVx1NzU1Y1x1Nzk1ZFx1N2FmYVx1N2I1MVx1N2JjOVx1N2UyZVx1ODRjNFx1OGU1OVx1OGU3NFx1OGVmOFx1OTAxMFx1NjYyNVx1NjkzZlx1NzQ0''@;'; put 'put ''M1x1NTFmYVx1NjcyZVx1OWVkY1x1NTE0NVx1NWZlMFx1NmM5Nlx1ODdmMlx1ODg1ZFx1ODg3N1x1NjBiNFx1ODFiNVx1ODQwMyJdLFsiZjZhMSIsIlx1OGQwNVx1NTNkNlx1NTQzOVx1NTYzNFx1NWEzNlx1NWMzMVx1NzA4YVx1N2ZlMFx1ODA1YVx1ODEwNlx1ODFlZFx1OGRhM1x1OTE4OVx1''@;'; put 'put ''OWE1Zlx1OWRmMlx1NTA3NFx1NGVjNFx1NTNhMFx1NjBmYlx1NmUyY1x1NWM2NFx1NGY4OFx1NTAyNFx1NTVlNFx1NWNkOVx1NWU1Zlx1NjA2NVx1Njg5NFx1NmNiYlx1NmRjNFx1NzFiZVx1NzVkNFx1NzVmNFx1NzY2MVx1N2ExYVx1N2E0OVx1N2RjN1x1N2RmYlx1N2Y2ZVx1ODFmNFx1ODZh''@;'; put 'put ''OVx1OGYxY1x1OTZjOVx1OTliM1x1OWY1Mlx1NTI0N1x1NTJjNVx1OThlZFx1ODlhYVx1NGUwM1x1NjdkMlx1NmYwNlx1NGZiNVx1NWJlMlx1Njc5NVx1NmM4OFx1NmQ3OFx1NzQxYlx1NzgyN1x1OTFkZFx1OTM3Y1x1ODdjNFx1NzllNFx1N2EzMVx1NWZlYlx1NGVkNlx1NTRhNFx1NTUzZVx1''@;'; put 'put ''NThhZVx1NTlhNVx1NjBmMFx1NjI1M1x1NjJkNlx1NjczNlx1Njk1NVx1ODIzNVx1OTY0MFx1OTliMVx1OTlkZFx1NTAyY1x1NTM1M1x1NTU0NFx1NTc3Y1x1ZmEwMVx1NjI1OFx1ZmEwMlx1NjRlMlx1NjY2Ylx1NjdkZFx1NmZjMVx1NmZlZlx1NzQyMlx1NzQzOFx1OGExNyJdLFsiZjdhMSIs''@;'; put 'put ''Ilx1OTQzOFx1NTQ1MVx1NTYwNlx1NTc2Nlx1NWY0OFx1NjE5YVx1NmI0ZVx1NzA1OFx1NzBhZFx1N2RiYlx1OGE5NVx1NTk2YVx1ODEyYlx1NjNhMlx1NzcwOFx1ODAzZFx1OGNhYVx1NTg1NFx1NjQyZFx1NjliYlx1NWI5NVx1NWUxMVx1NmU2Zlx1ZmEwM1x1ODU2OVx1NTE0Y1x1NTNmMFx1''@;'; put 'put ''NTkyYVx1NjAyMFx1NjE0Ylx1NmI4Nlx1NmM3MFx1NmNmMFx1N2IxZVx1ODBjZVx1ODJkNFx1OGRjNlx1OTBiMFx1OThiMVx1ZmEwNFx1NjRjN1x1NmZhNFx1NjQ5MVx1NjUwNFx1NTE0ZVx1NTQxMFx1NTcxZlx1OGEwZVx1NjE1Zlx1Njg3Nlx1ZmEwNVx1NzVkYlx1N2I1Mlx1N2Q3MVx1OTAx''@;'; put 'put ''YVx1NTgwNlx1NjljY1x1ODE3Zlx1ODkyYVx1OTAwMFx1OTgzOVx1NTA3OFx1NTk1N1x1NTlhY1x1NjI5NVx1OTAwZlx1OWIyYVx1NjE1ZFx1NzI3OVx1OTVkNlx1NTc2MVx1NWE0Nlx1NWRmNFx1NjI4YVx1NjRhZFx1NjRmYVx1Njc3N1x1NmNlMlx1NmQzZVx1NzIyY1x1NzQzNlx1NzgzNFx1''@;'; put 'put ''N2Y3N1x1ODJhZFx1OGRkYlx1OTgxN1x1NTIyNFx1NTc0Mlx1Njc3Zlx1NzI0OFx1NzRlM1x1OGNhOVx1OGZhNlx1OTIxMSJdLFsiZjhhMSIsIlx1OTYyYVx1NTE2Ylx1NTNlZFx1NjM0Y1x1NGY2OVx1NTUwNFx1NjA5Nlx1NjU1N1x1NmM5Ylx1NmQ3Zlx1NzI0Y1x1NzJmZFx1N2ExN1x1ODk4''@;'; put 'put ''N1x1OGM5ZFx1NWY2ZFx1NmY4ZVx1NzBmOVx1ODFhOFx1NjEwZVx1NGZiZlx1NTA0Zlx1NjI0MVx1NzI0N1x1N2JjN1x1N2RlOFx1N2ZlOVx1OTA0ZFx1OTdhZFx1OWExOVx1OGNiNlx1NTc2YVx1NWU3M1x1NjdiMFx1ODQwZFx1OGE1NVx1NTQyMFx1NWIxNlx1NWU2M1x1NWVlMlx1NWYwYVx1''@;'; put 'put ''NjU4M1x1ODBiYVx1ODUzZFx1OTU4OVx1OTY1Ylx1NGY0OFx1NTMwNVx1NTMwZFx1NTMwZlx1NTQ4Nlx1NTRmYVx1NTcwM1x1NWUwM1x1NjAxNlx1NjI5Ylx1NjJiMVx1NjM1NVx1ZmEwNlx1NmNlMVx1NmQ2Nlx1NzViMVx1NzgzMlx1ODBkZVx1ODEyZlx1ODJkZVx1ODQ2MVx1ODRiMlx1ODg4''@;'; put 'put ''ZFx1ODkxMlx1OTAwYlx1OTJlYVx1OThmZFx1OWI5MVx1NWU0NVx1NjZiNFx1NjZkZFx1NzAxMVx1NzIwNlx1ZmEwN1x1NGZmNVx1NTI3ZFx1NWY2YVx1NjE1M1x1Njc1M1x1NmExOVx1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGM3OVx1OThjN1x1OThjNFx1OWE0MyJdLFsiZjlhMSIsIlx1''@;'; put 'put ''NTRjMVx1N2ExZlx1Njk1M1x1OGFmN1x1OGM0YVx1OThhOFx1OTlhZVx1NWY3Y1x1NjJhYlx1NzViMlx1NzZhZVx1ODhhYlx1OTA3Zlx1OTY0Mlx1NTMzOVx1NWYzY1x1NWZjNVx1NmNjY1x1NzNjY1x1NzU2Mlx1NzU4Ylx1N2I0Nlx1ODJmZVx1OTk5ZFx1NGU0Zlx1OTAzY1x1NGUwYlx1NGY1''@;'; put 'put ''NVx1NTNhNlx1NTkwZlx1NWVjOFx1NjYzMFx1NmNiM1x1NzQ1NVx1ODM3N1x1ODc2Nlx1OGNjMFx1OTA1MFx1OTcxZVx1OWMxNVx1NThkMVx1NWI3OFx1ODY1MFx1OGIxNFx1OWRiNFx1NWJkMlx1NjA2OFx1NjA4ZFx1NjVmMVx1NmM1N1x1NmYyMlx1NmZhM1x1NzAxYVx1N2Y1NVx1N2ZmMFx1''@;'; put 'put ''OTU5MVx1OTU5Mlx1OTY1MFx1OTdkM1x1NTI3Mlx1OGY0NFx1NTFmZFx1NTQyYlx1NTRiOFx1NTU2M1x1NTU4YVx1NmFiYlx1NmRiNVx1N2RkOFx1ODI2Nlx1OTI5Y1x1OTY3N1x1OWU3OVx1NTQwOFx1NTRjOFx1NzZkMlx1ODZlNFx1OTVhNFx1OTVkNFx1OTY1Y1x1NGVhMlx1NGYwOVx1NTll''@;'; put 'put ''ZVx1NWFlNlx1NWRmN1x1NjA1Mlx1NjI5N1x1Njc2ZFx1Njg0MVx1NmM4Nlx1NmUyZlx1N2YzOFx1ODA5Ylx1ODIyYSJdLFsiZmFhMSIsIlx1ZmEwOFx1ZmEwOVx1OTgwNVx1NGVhNVx1NTA1NVx1NTRiM1x1NTc5M1x1NTk1YVx1NWI2OVx1NWJiM1x1NjFjOFx1Njk3N1x1NmQ3N1x1NzAyM1x1''@;'; put 'put ''ODdmOVx1ODllM1x1OGE3Mlx1OGFlN1x1OTA4Mlx1OTllZFx1OWFiOFx1NTJiZVx1NjgzOFx1NTAxNlx1NWU3OFx1Njc0Zlx1ODM0N1x1ODg0Y1x1NGVhYlx1NTQxMVx1NTZhZVx1NzNlNlx1OTExNVx1OTdmZlx1OTkwOVx1OTk1N1x1OTk5OVx1NTY1M1x1NTg5Zlx1ODY1Ylx1OGEzMVx1NjFi''@;'; put 'put ''Mlx1NmFmNlx1NzM3Ylx1OGVkMlx1NmI0N1x1OTZhYVx1OWE1N1x1NTk1NVx1NzIwMFx1OGQ2Ylx1OTc2OVx1NGZkNFx1NWNmNFx1NWYyNlx1NjFmOFx1NjY1Ylx1NmNlYlx1NzBhYlx1NzM4NFx1NzNiOVx1NzNmZVx1NzcyOVx1Nzc0ZFx1N2Q0M1x1N2Q2Mlx1N2UyM1x1ODIzN1x1ODg1Mlx1''@;'; put 'put ''ZmEwYVx1OGNlMlx1OTI0OVx1OTg2Zlx1NWI1MVx1N2E3NFx1ODg0MFx1OTgwMVx1NWFjY1x1NGZlMFx1NTM1NFx1NTkzZVx1NWNmZFx1NjMzZVx1NmQ3OVx1NzJmOVx1ODEwNVx1ODEwN1x1ODNhMlx1OTJjZlx1OTgzMFx1NGVhOFx1NTE0NFx1NTIxMVx1NTc4YiJdLFsiZmJhMSIsIlx1NWY2''@;'; put 'put ''Mlx1NmNjMlx1NmVjZVx1NzAwNVx1NzA1MFx1NzBhZlx1NzE5Mlx1NzNlOVx1NzQ2OVx1ODM0YVx1ODdhMlx1ODg2MVx1OTAwOFx1OTBhMlx1OTNhM1x1OTlhOFx1NTE2ZVx1NWY1N1x1NjBlMFx1NjE2N1x1NjZiM1x1ODU1OVx1OGU0YVx1OTFhZlx1OTc4Ylx1NGU0ZVx1NGU5Mlx1NTQ3Y1x1''@;'; put 'put ''NThkNVx1NThmYVx1NTk3ZFx1NWNiNVx1NWYyN1x1NjIzNlx1NjI0OFx1NjYwYVx1NjY2N1x1NmJlYlx1NmQ2OVx1NmRjZlx1NmU1Nlx1NmVmOFx1NmY5NFx1NmZlMFx1NmZlOVx1NzA1ZFx1NzJkMFx1NzQyNVx1NzQ1YVx1NzRlMFx1NzY5M1x1Nzk1Y1x1N2NjYVx1N2UxZVx1ODBlMVx1ODJh''@;'; put 'put ''Nlx1ODQ2Ylx1ODRiZlx1ODY0ZVx1ODY1Zlx1ODc3NFx1OGI3N1x1OGM2YVx1OTNhY1x1OTgwMFx1OTg2NVx1NjBkMVx1NjIxNlx1OTE3N1x1NWE1YVx1NjYwZlx1NmRmN1x1NmUzZVx1NzQzZlx1OWI0Mlx1NWZmZFx1NjBkYVx1N2IwZlx1NTRjNFx1NWYxOFx1NmM1ZVx1NmNkM1x1NmQyYVx1''@;'; put 'put ''NzBkOFx1N2QwNVx1ODY3OVx1OGEwY1x1OWQzYlx1NTMxNlx1NTQ4Y1x1NWIwNVx1NmEzYVx1NzA2Ylx1NzU3NSJdLFsiZmNhMSIsIlx1Nzk4ZFx1NzliZVx1ODJiMVx1ODNlZlx1OGE3MVx1OGI0MVx1OGNhOFx1OTc3NFx1ZmEwYlx1NjRmNFx1NjUyYlx1NzhiYVx1NzhiYlx1N2E2Ylx1NGUz''@;'; put 'put ''OFx1NTU5YVx1NTk1MFx1NWJhNlx1NWU3Ylx1NjBhM1x1NjNkYlx1NmI2MVx1NjY2NVx1Njg1M1x1NmUxOVx1NzE2NVx1NzRiMFx1N2QwOFx1OTA4NFx1OWE2OVx1OWMyNVx1NmQzYlx1NmVkMVx1NzMzZVx1OGM0MVx1OTVjYVx1NTFmMFx1NWU0Y1x1NWZhOFx1NjA0ZFx1NjBmNlx1NjEzMFx1''@;'; put 'put ''NjE0Y1x1NjY0M1x1NjY0NFx1NjlhNVx1NmNjMVx1NmU1Zlx1NmVjOVx1NmY2Mlx1NzE0Y1x1NzQ5Y1x1NzY4N1x1N2JjMVx1N2MyN1x1ODM1Mlx1ODc1N1x1OTA1MVx1OTY4ZFx1OWVjM1x1NTMyZlx1NTZkZVx1NWVmYlx1NWY4YVx1NjA2Mlx1NjA5NFx1NjFmN1x1NjY2Nlx1NjcwM1x1NmE5''@;'; put 'put ''Y1x1NmRlZVx1NmZhZVx1NzA3MFx1NzM2YVx1N2U2YVx1ODFiZVx1ODMzNFx1ODZkNFx1OGFhOFx1OGNjNFx1NTI4M1x1NzM3Mlx1NWI5Nlx1NmE2Ylx1OTQwNFx1NTRlZVx1NTY4Nlx1NWI1ZFx1NjU0OFx1NjU4NVx1NjZjOVx1Njg5Zlx1NmQ4ZFx1NmRjNiJdLFsiZmRhMSIsIlx1NzIzYlx1''@;'; put 'put ''ODBiNFx1OTE3NVx1OWE0ZFx1NGZhZlx1NTAxOVx1NTM5YVx1NTQwZVx1NTQzY1x1NTU4OVx1NTVjNVx1NWUzZlx1NWY4Y1x1NjczZFx1NzE2Nlx1NzNkZFx1OTAwNVx1NTJkYlx1NTJmM1x1NTg2NFx1NThjZVx1NzEwNFx1NzE4Zlx1NzFmYlx1ODViMFx1OGExM1x1NjY4OFx1ODVhOFx1NTVh''@;'; put 'put ''N1x1NjY4NFx1NzE0YVx1ODQzMVx1NTM0OVx1NTU5OVx1NmJjMVx1NWY1OVx1NWZiZFx1NjNlZVx1NjY4OVx1NzE0N1x1OGFmMVx1OGYxZFx1OWViZVx1NGYxMVx1NjQzYVx1NzBjYlx1NzU2Nlx1ODY2N1x1NjA2NFx1OGI0ZVx1OWRmOFx1NTE0N1x1NTFmNlx1NTMwOFx1NmQzNlx1ODBmOFx1''@;'; put 'put ''OWVkMVx1NjYxNVx1NmIyM1x1NzA5OFx1NzVkNVx1NTQwM1x1NWM3OVx1N2QwN1x1OGExNlx1NmIyMFx1NmIzZFx1NmI0Nlx1NTQzOFx1NjA3MFx1NmQzZFx1N2ZkNVx1ODIwOFx1NTBkNlx1NTFkZVx1NTU5Y1x1NTY2Ylx1NTZjZFx1NTllY1x1NWIwOVx1NWUwY1x1NjE5OVx1NjE5OFx1NjIz''@;'; put 'put ''MVx1NjY1ZVx1NjZlNlx1NzE5OVx1NzFiOVx1NzFiYVx1NzJhN1x1NzlhN1x1N2EwMFx1N2ZiMlx1OGE3MCJdXScpfSw3NDI4NDpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjddLFsiYTE0MCIsIlx1MzAwMFx1ZmYwY1x1MzAwMVx1''@;'; put 'put ''MzAwMlx1ZmYwZVx1MjAyN1x1ZmYxYlx1ZmYxYVx1ZmYxZlx1ZmYwMVx1ZmUzMFx1MjAyNlx1MjAyNVx1ZmU1MFx1ZmU1MVx1ZmU1Mlx4YjdcdWZlNTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZmNWNcdTIwMTNcdWZlMzFcdTIwMTRcdWZlMzNcdTI1NzRcdWZlMzRcdWZlNGZcdWZmMDhcdWZmMDlc''@;'; put 'put ''dWZlMzVcdWZlMzZcdWZmNWJcdWZmNWRcdWZlMzdcdWZlMzhcdTMwMTRcdTMwMTVcdWZlMzlcdWZlM2FcdTMwMTBcdTMwMTFcdWZlM2JcdWZlM2NcdTMwMGFcdTMwMGJcdWZlM2RcdWZlM2VcdTMwMDhcdTMwMDlcdWZlM2ZcdWZlNDBcdTMwMGNcdTMwMGRcdWZlNDFcdWZlNDJcdTMwMGVcdTMw''@;'; put 'put ''MGZcdWZlNDNcdWZlNDRcdWZlNTlcdWZlNWEiXSxbImExYTEiLCJcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTMwMWRcdTMwMWVcdTIwMzVcdTIwMzJcdWZmMDNcdWZmMDZcdWZmMGFcdTIwM2JceGE3XHUzMDAzXHUyNWNiXHUyNWNmXHUyNWIzXHUy''@;'; put 'put ''NWIyXHUyNWNlXHUyNjA2XHUyNjA1XHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWJkXHUyNWJjXHUzMmEzXHUyMTA1XHhhZlx1ZmZlM1x1ZmYzZlx1MDJjZFx1ZmU0OVx1ZmU0YVx1ZmU0ZFx1ZmU0ZVx1ZmU0Ylx1ZmU0Y1x1ZmU1Zlx1ZmU2MFx1ZmU2MVx1ZmYwYlx1ZmYwZFx4ZDdceGY3''@;'; put 'put ''XHhiMVx1MjIxYVx1ZmYxY1x1ZmYxZVx1ZmYxZFx1MjI2Nlx1MjI2N1x1MjI2MFx1MjIxZVx1MjI1Mlx1MjI2MVx1ZmU2MiIsNCwiXHVmZjVlXHUyMjI5XHUyMjJhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUzM2QyXHUzM2QxXHUyMjJiXHUyMjJlXHUyMjM1XHUyMjM0XHUyNjQwXHUyNjQy''@;'; put 'put ''XHUyMjk1XHUyMjk5XHUyMTkxXHUyMTkzXHUyMTkwXHUyMTkyXHUyMTk2XHUyMTk3XHUyMTk5XHUyMTk4XHUyMjI1XHUyMjIzXHVmZjBmIl0sWyJhMjQwIiwiXHVmZjNjXHUyMjE1XHVmZTY4XHVmZjA0XHVmZmU1XHUzMDEyXHVmZmUwXHVmZmUxXHVmZjA1XHVmZjIwXHUyMTAzXHUyMTA5XHVm''@;'; put 'put ''ZTY5XHVmZTZhXHVmZTZiXHUzM2Q1XHUzMzljXHUzMzlkXHUzMzllXHUzM2NlXHUzM2ExXHUzMzhlXHUzMzhmXHUzM2M0XHhiMFx1NTE1OVx1NTE1Ylx1NTE1ZVx1NTE1ZFx1NTE2MVx1NTE2M1x1NTVlN1x1NzRlOVx1N2NjZVx1MjU4MSIsNywiXHUyNThmXHUyNThlXHUyNThkXHUyNThjXHUy''@;'; put 'put ''NThiXHUyNThhXHUyNTg5XHUyNTNjXHUyNTM0XHUyNTJjXHUyNTI0XHUyNTFjXHUyNTk0XHUyNTAwXHUyNTAyXHUyNTk1XHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTZkIl0sWyJhMmExIiwiXHUyNTZlXHUyNTcwXHUyNTZmXHUyNTUwXHUyNTVlXHUyNTZhXHUyNTYxXHUyNWUyXHUyNWUz''@;'; put 'put ''XHUyNWU1XHUyNWU0XHUyNTcxXHUyNTcyXHUyNTczXHVmZjEwIiw5LCJcdTIxNjAiLDksIlx1MzAyMSIsOCwiXHU1MzQxXHU1MzQ0XHU1MzQ1XHVmZjIxIiwyNSwiXHVmZjQxIiwyMV0sWyJhMzQwIiwiXHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHUwMzkxIiwxNiwiXHUwM2EzIiw2LCJcdTAz''@;'; put 'put ''YjEiLDE2LCJcdTAzYzMiLDYsIlx1MzEwNSIsMTBdLFsiYTNhMSIsIlx1MzExMCIsMjUsIlx1MDJkOVx1MDJjOVx1MDJjYVx1MDJjN1x1MDJjYiJdLFsiYTNlMSIsIlx1MjBhYyJdLFsiYTQ0MCIsIlx1NGUwMFx1NGU1OVx1NGUwMVx1NGUwM1x1NGU0M1x1NGU1ZFx1NGU4Nlx1NGU4Y1x1NGVi''@;'; put 'put ''YVx1NTEzZlx1NTE2NVx1NTE2Ylx1NTFlMFx1NTIwMFx1NTIwMVx1NTI5Ylx1NTMxNVx1NTM0MVx1NTM1Y1x1NTNjOFx1NGUwOVx1NGUwYlx1NGUwOFx1NGUwYVx1NGUyYlx1NGUzOFx1NTFlMVx1NGU0NVx1NGU0OFx1NGU1Zlx1NGU1ZVx1NGU4ZVx1NGVhMVx1NTE0MFx1NTIwM1x1NTJmYVx1''@;'; put 'put ''NTM0M1x1NTNjOVx1NTNlM1x1NTcxZlx1NThlYlx1NTkxNVx1NTkyN1x1NTk3M1x1NWI1MFx1NWI1MVx1NWI1M1x1NWJmOFx1NWMwZlx1NWMyMlx1NWMzOFx1NWM3MVx1NWRkZFx1NWRlNVx1NWRmMVx1NWRmMlx1NWRmM1x1NWRmZVx1NWU3Mlx1NWVmZVx1NWYwYlx1NWYxM1x1NjI0ZCJdLFsi''@;'; put 'put ''YTRhMSIsIlx1NGUxMVx1NGUxMFx1NGUwZFx1NGUyZFx1NGUzMFx1NGUzOVx1NGU0Ylx1NWMzOVx1NGU4OFx1NGU5MVx1NGU5NVx1NGU5Mlx1NGU5NFx1NGVhMlx1NGVjMVx1NGVjMFx1NGVjM1x1NGVjNlx1NGVjN1x1NGVjZFx1NGVjYVx1NGVjYlx1NGVjNFx1NTE0M1x1NTE0MVx1NTE2N1x1''@;'; put 'put ''NTE2ZFx1NTE2ZVx1NTE2Y1x1NTE5N1x1NTFmNlx1NTIwNlx1NTIwN1x1NTIwOFx1NTJmYlx1NTJmZVx1NTJmZlx1NTMxNlx1NTMzOVx1NTM0OFx1NTM0N1x1NTM0NVx1NTM1ZVx1NTM4NFx1NTNjYlx1NTNjYVx1NTNjZFx1NThlY1x1NTkyOVx1NTkyYlx1NTkyYVx1NTkyZFx1NWI1NFx1NWMx''@;'; put 'put ''MVx1NWMyNFx1NWMzYVx1NWM2Zlx1NWRmNFx1NWU3Ylx1NWVmZlx1NWYxNFx1NWYxNVx1NWZjM1x1NjIwOFx1NjIzNlx1NjI0Ylx1NjI0ZVx1NjUyZlx1NjU4N1x1NjU5N1x1NjVhNFx1NjViOVx1NjVlNVx1NjZmMFx1NjcwOFx1NjcyOFx1NmIyMFx1NmI2Mlx1NmI3OVx1NmJjYlx1NmJkNFx1''@;'; put 'put ''NmJkYlx1NmMwZlx1NmMzNFx1NzA2Ylx1NzIyYVx1NzIzNlx1NzIzYlx1NzI0N1x1NzI1OVx1NzI1Ylx1NzJhY1x1NzM4Ylx1NGUxOSJdLFsiYTU0MCIsIlx1NGUxNlx1NGUxNVx1NGUxNFx1NGUxOFx1NGUzYlx1NGU0ZFx1NGU0Zlx1NGU0ZVx1NGVlNVx1NGVkOFx1NGVkNFx1NGVkNVx1NGVk''@;'; put 'put ''Nlx1NGVkN1x1NGVlM1x1NGVlNFx1NGVkOVx1NGVkZVx1NTE0NVx1NTE0NFx1NTE4OVx1NTE4YVx1NTFhY1x1NTFmOVx1NTFmYVx1NTFmOFx1NTIwYVx1NTJhMFx1NTI5Zlx1NTMwNVx1NTMwNlx1NTMxN1x1NTMxZFx1NGVkZlx1NTM0YVx1NTM0OVx1NTM2MVx1NTM2MFx1NTM2Zlx1NTM2ZVx1''@;'; put 'put ''NTNiYlx1NTNlZlx1NTNlNFx1NTNmM1x1NTNlY1x1NTNlZVx1NTNlOVx1NTNlOFx1NTNmY1x1NTNmOFx1NTNmNVx1NTNlYlx1NTNlNlx1NTNlYVx1NTNmMlx1NTNmMVx1NTNmMFx1NTNlNVx1NTNlZFx1NTNmYlx1NTZkYlx1NTZkYVx1NTkxNiJdLFsiYTVhMSIsIlx1NTkyZVx1NTkzMVx1NTk3''@;'; put 'put ''NFx1NTk3Nlx1NWI1NVx1NWI4M1x1NWMzY1x1NWRlOFx1NWRlN1x1NWRlNlx1NWUwMlx1NWUwM1x1NWU3M1x1NWU3Y1x1NWYwMVx1NWYxOFx1NWYxN1x1NWZjNVx1NjIwYVx1NjI1M1x1NjI1NFx1NjI1Mlx1NjI1MVx1NjVhNVx1NjVlNlx1NjcyZVx1NjcyY1x1NjcyYVx1NjcyYlx1NjcyZFx1''@;'; put 'put ''NmI2M1x1NmJjZFx1NmMxMVx1NmMxMFx1NmMzOFx1NmM0MVx1NmM0MFx1NmMzZVx1NzJhZlx1NzM4NFx1NzM4OVx1NzRkY1x1NzRlNlx1NzUxOFx1NzUxZlx1NzUyOFx1NzUyOVx1NzUzMFx1NzUzMVx1NzUzMlx1NzUzM1x1NzU4Ylx1NzY3ZFx1NzZhZVx1NzZiZlx1NzZlZVx1NzdkYlx1Nzdl''@;'; put 'put ''Mlx1NzdmM1x1NzkzYVx1NzliZVx1N2E3NFx1N2FjYlx1NGUxZVx1NGUxZlx1NGU1Mlx1NGU1M1x1NGU2OVx1NGU5OVx1NGVhNFx1NGVhNlx1NGVhNVx1NGVmZlx1NGYwOVx1NGYxOVx1NGYwYVx1NGYxNVx1NGYwZFx1NGYxMFx1NGYxMVx1NGYwZlx1NGVmMlx1NGVmNlx1NGVmYlx1NGVmMFx1''@;'; put 'put ''NGVmM1x1NGVmZFx1NGYwMVx1NGYwYlx1NTE0OVx1NTE0N1x1NTE0Nlx1NTE0OFx1NTE2OCJdLFsiYTY0MCIsIlx1NTE3MVx1NTE4ZFx1NTFiMFx1NTIxN1x1NTIxMVx1NTIxMlx1NTIwZVx1NTIxNlx1NTJhM1x1NTMwOFx1NTMyMVx1NTMyMFx1NTM3MFx1NTM3MVx1NTQwOVx1NTQwZlx1NTQw''@;'; put 'put ''Y1x1NTQwYVx1NTQxMFx1NTQwMVx1NTQwYlx1NTQwNFx1NTQxMVx1NTQwZFx1NTQwOFx1NTQwM1x1NTQwZVx1NTQwNlx1NTQxMlx1NTZlMFx1NTZkZVx1NTZkZFx1NTczM1x1NTczMFx1NTcyOFx1NTcyZFx1NTcyY1x1NTcyZlx1NTcyOVx1NTkxOVx1NTkxYVx1NTkzN1x1NTkzOFx1NTk4NFx1''@;'; put 'put ''NTk3OFx1NTk4M1x1NTk3ZFx1NTk3OVx1NTk4Mlx1NTk4MVx1NWI1N1x1NWI1OFx1NWI4N1x1NWI4OFx1NWI4NVx1NWI4OVx1NWJmYVx1NWMxNlx1NWM3OVx1NWRkZVx1NWUwNlx1NWU3Nlx1NWU3NCJdLFsiYTZhMSIsIlx1NWYwZlx1NWYxYlx1NWZkOVx1NWZkNlx1NjIwZVx1NjIwY1x1NjIw''@;'; put 'put ''ZFx1NjIxMFx1NjI2M1x1NjI1Ylx1NjI1OFx1NjUzNlx1NjVlOVx1NjVlOFx1NjVlY1x1NjVlZFx1NjZmMlx1NjZmM1x1NjcwOVx1NjczZFx1NjczNFx1NjczMVx1NjczNVx1NmIyMVx1NmI2NFx1NmI3Ylx1NmMxNlx1NmM1ZFx1NmM1N1x1NmM1OVx1NmM1Zlx1NmM2MFx1NmM1MFx1NmM1NVx1''@;'; put 'put ''NmM2MVx1NmM1Ylx1NmM0ZFx1NmM0ZVx1NzA3MFx1NzI1Zlx1NzI1ZFx1NzY3ZVx1N2FmOVx1N2M3M1x1N2NmOFx1N2YzNlx1N2Y4YVx1N2ZiZFx1ODAwMVx1ODAwM1x1ODAwY1x1ODAxMlx1ODAzM1x1ODA3Zlx1ODA4OVx1ODA4Ylx1ODA4Y1x1ODFlM1x1ODFlYVx1ODFmM1x1ODFmY1x1ODIw''@;'; put 'put ''Y1x1ODIxYlx1ODIxZlx1ODI2ZVx1ODI3Mlx1ODI3ZVx1ODY2Ylx1ODg0MFx1ODg0Y1x1ODg2M1x1ODk3Zlx1OTYyMVx1NGUzMlx1NGVhOFx1NGY0ZFx1NGY0Zlx1NGY0N1x1NGY1N1x1NGY1ZVx1NGYzNFx1NGY1Ylx1NGY1NVx1NGYzMFx1NGY1MFx1NGY1MVx1NGYzZFx1NGYzYVx1NGYzOFx1''@;'; put 'put ''NGY0M1x1NGY1NFx1NGYzY1x1NGY0Nlx1NGY2MyJdLFsiYTc0MCIsIlx1NGY1Y1x1NGY2MFx1NGYyZlx1NGY0ZVx1NGYzNlx1NGY1OVx1NGY1ZFx1NGY0OFx1NGY1YVx1NTE0Y1x1NTE0Ylx1NTE0ZFx1NTE3NVx1NTFiNlx1NTFiN1x1NTIyNVx1NTIyNFx1NTIyOVx1NTIyYVx1NTIyOFx1NTJh''@;'; put 'put ''Ylx1NTJhOVx1NTJhYVx1NTJhY1x1NTMyM1x1NTM3M1x1NTM3NVx1NTQxZFx1NTQyZFx1NTQxZVx1NTQzZVx1NTQyNlx1NTQ0ZVx1NTQyN1x1NTQ0Nlx1NTQ0M1x1NTQzM1x1NTQ0OFx1NTQ0Mlx1NTQxYlx1NTQyOVx1NTQ0YVx1NTQzOVx1NTQzYlx1NTQzOFx1NTQyZVx1NTQzNVx1NTQzNlx1''@;'; put 'put ''NTQyMFx1NTQzY1x1NTQ0MFx1NTQzMVx1NTQyYlx1NTQxZlx1NTQyY1x1NTZlYVx1NTZmMFx1NTZlNFx1NTZlYlx1NTc0YVx1NTc1MVx1NTc0MFx1NTc0ZCJdLFsiYTdhMSIsIlx1NTc0N1x1NTc0ZVx1NTczZVx1NTc1MFx1NTc0Zlx1NTczYlx1NThlZlx1NTkzZVx1NTk5ZFx1NTk5Mlx1NTlh''@;'; put 'put ''OFx1NTk5ZVx1NTlhM1x1NTk5OVx1NTk5Nlx1NTk4ZFx1NTlhNFx1NTk5M1x1NTk4YVx1NTlhNVx1NWI1ZFx1NWI1Y1x1NWI1YVx1NWI1Ylx1NWI4Y1x1NWI4Ylx1NWI4Zlx1NWMyY1x1NWM0MFx1NWM0MVx1NWMzZlx1NWMzZVx1NWM5MFx1NWM5MVx1NWM5NFx1NWM4Y1x1NWRlYlx1NWUwY1x1''@;'; put 'put ''NWU4Zlx1NWU4N1x1NWU4YVx1NWVmN1x1NWYwNFx1NWYxZlx1NWY2NFx1NWY2Mlx1NWY3N1x1NWY3OVx1NWZkOFx1NWZjY1x1NWZkN1x1NWZjZFx1NWZmMVx1NWZlYlx1NWZmOFx1NWZlYVx1NjIxMlx1NjIxMVx1NjI4NFx1NjI5N1x1NjI5Nlx1NjI4MFx1NjI3Nlx1NjI4OVx1NjI2ZFx1NjI4''@;'; put 'put ''YVx1NjI3Y1x1NjI3ZVx1NjI3OVx1NjI3M1x1NjI5Mlx1NjI2Zlx1NjI5OFx1NjI2ZVx1NjI5NVx1NjI5M1x1NjI5MVx1NjI4Nlx1NjUzOVx1NjUzYlx1NjUzOFx1NjVmMVx1NjZmNFx1Njc1Zlx1Njc0ZVx1Njc0Zlx1Njc1MFx1Njc1MVx1Njc1Y1x1Njc1Nlx1Njc1ZVx1Njc0OVx1Njc0Nlx1''@;'; put 'put ''Njc2MCJdLFsiYTg0MCIsIlx1Njc1M1x1Njc1N1x1NmI2NVx1NmJjZlx1NmM0Mlx1NmM1ZVx1NmM5OVx1NmM4MVx1NmM4OFx1NmM4OVx1NmM4NVx1NmM5Ylx1NmM2YVx1NmM3YVx1NmM5MFx1NmM3MFx1NmM4Y1x1NmM2OFx1NmM5Nlx1NmM5Mlx1NmM3ZFx1NmM4M1x1NmM3Mlx1NmM3ZVx1NmM3''@;'; put 'put ''NFx1NmM4Nlx1NmM3Nlx1NmM4ZFx1NmM5NFx1NmM5OFx1NmM4Mlx1NzA3Nlx1NzA3Y1x1NzA3ZFx1NzA3OFx1NzI2Mlx1NzI2MVx1NzI2MFx1NzJjNFx1NzJjMlx1NzM5Nlx1NzUyY1x1NzUyYlx1NzUzN1x1NzUzOFx1NzY4Mlx1NzZlZlx1NzdlM1x1NzljMVx1NzljMFx1NzliZlx1N2E3Nlx1''@;'; put 'put ''N2NmYlx1N2Y1NVx1ODA5Nlx1ODA5M1x1ODA5ZFx1ODA5OFx1ODA5Ylx1ODA5YVx1ODBiMlx1ODI2Zlx1ODI5MiJdLFsiYThhMSIsIlx1ODI4Ylx1ODI4ZFx1ODk4Ylx1ODlkMlx1OGEwMFx1OGMzN1x1OGM0Nlx1OGM1NVx1OGM5ZFx1OGQ2NFx1OGQ3MFx1OGRiM1x1OGVhYlx1OGVjYVx1OGY5''@;'; put 'put ''Ylx1OGZiMFx1OGZjMlx1OGZjNlx1OGZjNVx1OGZjNFx1NWRlMVx1OTA5MVx1OTBhMlx1OTBhYVx1OTBhNlx1OTBhM1x1OTE0OVx1OTFjNlx1OTFjY1x1OTYzMlx1OTYyZVx1OTYzMVx1OTYyYVx1OTYyY1x1NGUyNlx1NGU1Nlx1NGU3M1x1NGU4Ylx1NGU5Ylx1NGU5ZVx1NGVhYlx1NGVhY1x1''@;'; put 'put ''NGY2Zlx1NGY5ZFx1NGY4ZFx1NGY3M1x1NGY3Zlx1NGY2Y1x1NGY5Ylx1NGY4Ylx1NGY4Nlx1NGY4M1x1NGY3MFx1NGY3NVx1NGY4OFx1NGY2OVx1NGY3Ylx1NGY5Nlx1NGY3ZVx1NGY4Zlx1NGY5MVx1NGY3YVx1NTE1NFx1NTE1Mlx1NTE1NVx1NTE2OVx1NTE3N1x1NTE3Nlx1NTE3OFx1NTFi''@;'; put 'put ''ZFx1NTFmZFx1NTIzYlx1NTIzOFx1NTIzN1x1NTIzYVx1NTIzMFx1NTIyZVx1NTIzNlx1NTI0MVx1NTJiZVx1NTJiYlx1NTM1Mlx1NTM1NFx1NTM1M1x1NTM1MVx1NTM2Nlx1NTM3N1x1NTM3OFx1NTM3OVx1NTNkNlx1NTNkNFx1NTNkN1x1NTQ3M1x1NTQ3NSJdLFsiYTk0MCIsIlx1NTQ5Nlx1''@;'; put 'put ''NTQ3OFx1NTQ5NVx1NTQ4MFx1NTQ3Ylx1NTQ3N1x1NTQ4NFx1NTQ5Mlx1NTQ4Nlx1NTQ3Y1x1NTQ5MFx1NTQ3MVx1NTQ3Nlx1NTQ4Y1x1NTQ5YVx1NTQ2Mlx1NTQ2OFx1NTQ4Ylx1NTQ3ZFx1NTQ4ZVx1NTZmYVx1NTc4M1x1NTc3N1x1NTc2YVx1NTc2OVx1NTc2MVx1NTc2Nlx1NTc2NFx1NTc3''@;'; put 'put ''Y1x1NTkxY1x1NTk0OVx1NTk0N1x1NTk0OFx1NTk0NFx1NTk1NFx1NTliZVx1NTliYlx1NTlkNFx1NTliOVx1NTlhZVx1NTlkMVx1NTljNlx1NTlkMFx1NTljZFx1NTljYlx1NTlkM1x1NTljYVx1NTlhZlx1NTliM1x1NTlkMlx1NTljNVx1NWI1Zlx1NWI2NFx1NWI2M1x1NWI5N1x1NWI5YVx1''@;'; put 'put ''NWI5OFx1NWI5Y1x1NWI5OVx1NWI5Ylx1NWMxYVx1NWM0OFx1NWM0NSJdLFsiYTlhMSIsIlx1NWM0Nlx1NWNiN1x1NWNhMVx1NWNiOFx1NWNhOVx1NWNhYlx1NWNiMVx1NWNiM1x1NWUxOFx1NWUxYVx1NWUxNlx1NWUxNVx1NWUxYlx1NWUxMVx1NWU3OFx1NWU5YVx1NWU5N1x1NWU5Y1x1NWU5''@;'; put 'put ''NVx1NWU5Nlx1NWVmNlx1NWYyNlx1NWYyN1x1NWYyOVx1NWY4MFx1NWY4MVx1NWY3Zlx1NWY3Y1x1NWZkZFx1NWZlMFx1NWZmZFx1NWZmNVx1NWZmZlx1NjAwZlx1NjAxNFx1NjAyZlx1NjAzNVx1NjAxNlx1NjAyYVx1NjAxNVx1NjAyMVx1NjAyN1x1NjAyOVx1NjAyYlx1NjAxYlx1NjIxNlx1''@;'; put 'put ''NjIxNVx1NjIzZlx1NjIzZVx1NjI0MFx1NjI3Zlx1NjJjOVx1NjJjY1x1NjJjNFx1NjJiZlx1NjJjMlx1NjJiOVx1NjJkMlx1NjJkYlx1NjJhYlx1NjJkM1x1NjJkNFx1NjJjYlx1NjJjOFx1NjJhOFx1NjJiZFx1NjJiY1x1NjJkMFx1NjJkOVx1NjJjN1x1NjJjZFx1NjJiNVx1NjJkYVx1NjJi''@;'; put 'put ''MVx1NjJkOFx1NjJkNlx1NjJkN1x1NjJjNlx1NjJhY1x1NjJjZVx1NjUzZVx1NjVhN1x1NjViY1x1NjVmYVx1NjYxNFx1NjYxM1x1NjYwY1x1NjYwNlx1NjYwMlx1NjYwZVx1NjYwMFx1NjYwZlx1NjYxNVx1NjYwYSJdLFsiYWE0MCIsIlx1NjYwN1x1NjcwZFx1NjcwYlx1Njc2ZFx1Njc4Ylx1''@;'; put 'put ''Njc5NVx1Njc3MVx1Njc5Y1x1Njc3M1x1Njc3N1x1Njc4N1x1Njc5ZFx1Njc5N1x1Njc2Zlx1Njc3MFx1Njc3Zlx1Njc4OVx1Njc3ZVx1Njc5MFx1Njc3NVx1Njc5YVx1Njc5M1x1Njc3Y1x1Njc2YVx1Njc3Mlx1NmIyM1x1NmI2Nlx1NmI2N1x1NmI3Zlx1NmMxM1x1NmMxYlx1NmNlM1x1NmNl''@;'; put 'put ''OFx1NmNmM1x1NmNiMVx1NmNjY1x1NmNlNVx1NmNiM1x1NmNiZFx1NmNiZVx1NmNiY1x1NmNlMlx1NmNhYlx1NmNkNVx1NmNkM1x1NmNiOFx1NmNjNFx1NmNiOVx1NmNjMVx1NmNhZVx1NmNkN1x1NmNjNVx1NmNmMVx1NmNiZlx1NmNiYlx1NmNlMVx1NmNkYlx1NmNjYVx1NmNhY1x1NmNlZlx1''@;'; put 'put ''NmNkY1x1NmNkNlx1NmNlMCJdLFsiYWFhMSIsIlx1NzA5NVx1NzA4ZVx1NzA5Mlx1NzA4YVx1NzA5OVx1NzIyY1x1NzIyZFx1NzIzOFx1NzI0OFx1NzI2N1x1NzI2OVx1NzJjMFx1NzJjZVx1NzJkOVx1NzJkN1x1NzJkMFx1NzNhOVx1NzNhOFx1NzM5Zlx1NzNhYlx1NzNhNVx1NzUzZFx1NzU5''@;'; put 'put ''ZFx1NzU5OVx1NzU5YVx1NzY4NFx1NzZjMlx1NzZmMlx1NzZmNFx1NzdlNVx1NzdmZFx1NzkzZVx1Nzk0MFx1Nzk0MVx1NzljOVx1NzljOFx1N2E3YVx1N2E3OVx1N2FmYVx1N2NmZVx1N2Y1NFx1N2Y4Y1x1N2Y4Ylx1ODAwNVx1ODBiYVx1ODBhNVx1ODBhMlx1ODBiMVx1ODBhMVx1ODBhYlx1''@;'; put 'put ''ODBhOVx1ODBiNFx1ODBhYVx1ODBhZlx1ODFlNVx1ODFmZVx1ODIwZFx1ODJiM1x1ODI5ZFx1ODI5OVx1ODJhZFx1ODJiZFx1ODI5Zlx1ODJiOVx1ODJiMVx1ODJhY1x1ODJhNVx1ODJhZlx1ODJiOFx1ODJhM1x1ODJiMFx1ODJiZVx1ODJiN1x1ODY0ZVx1ODY3MVx1NTIxZFx1ODg2OFx1OGVj''@;'; put 'put ''Ylx1OGZjZVx1OGZkNFx1OGZkMVx1OTBiNVx1OTBiOFx1OTBiMVx1OTBiNlx1OTFjN1x1OTFkMVx1OTU3N1x1OTU4MFx1OTYxY1x1OTY0MFx1OTYzZlx1OTYzYlx1OTY0NCJdLFsiYWI0MCIsIlx1OTY0Mlx1OTZiOVx1OTZlOFx1OTc1Mlx1OTc1ZVx1NGU5Zlx1NGVhZFx1NGVhZVx1NGZlMVx1''@;'; put 'put ''NGZiNVx1NGZhZlx1NGZiZlx1NGZlMFx1NGZkMVx1NGZjZlx1NGZkZFx1NGZjM1x1NGZiNlx1NGZkOFx1NGZkZlx1NGZjYVx1NGZkN1x1NGZhZVx1NGZkMFx1NGZjNFx1NGZjMlx1NGZkYVx1NGZjZVx1NGZkZVx1NGZiN1x1NTE1N1x1NTE5Mlx1NTE5MVx1NTFhMFx1NTI0ZVx1NTI0M1x1NTI0''@;'; put 'put ''YVx1NTI0ZFx1NTI0Y1x1NTI0Ylx1NTI0N1x1NTJjN1x1NTJjOVx1NTJjM1x1NTJjMVx1NTMwZFx1NTM1N1x1NTM3Ylx1NTM5YVx1NTNkYlx1NTRhY1x1NTRjMFx1NTRhOFx1NTRjZVx1NTRjOVx1NTRiOFx1NTRhNlx1NTRiM1x1NTRjN1x1NTRjMlx1NTRiZFx1NTRhYVx1NTRjMSJdLFsiYWJh''@;'; put 'put ''MSIsIlx1NTRjNFx1NTRjOFx1NTRhZlx1NTRhYlx1NTRiMVx1NTRiYlx1NTRhOVx1NTRhN1x1NTRiZlx1NTZmZlx1NTc4Mlx1NTc4Ylx1NTdhMFx1NTdhM1x1NTdhMlx1NTdjZVx1NTdhZVx1NTc5M1x1NTk1NVx1NTk1MVx1NTk0Zlx1NTk0ZVx1NTk1MFx1NTlkY1x1NTlkOFx1NTlmZlx1NTll''@;'; put 'put ''M1x1NTllOFx1NWEwM1x1NTllNVx1NTllYVx1NTlkYVx1NTllNlx1NWEwMVx1NTlmYlx1NWI2OVx1NWJhM1x1NWJhNlx1NWJhNFx1NWJhMlx1NWJhNVx1NWMwMVx1NWM0ZVx1NWM0Zlx1NWM0ZFx1NWM0Ylx1NWNkOVx1NWNkMlx1NWRmN1x1NWUxZFx1NWUyNVx1NWUxZlx1NWU3ZFx1NWVhMFx1''@;'; put 'put ''NWVhNlx1NWVmYVx1NWYwOFx1NWYyZFx1NWY2NVx1NWY4OFx1NWY4NVx1NWY4YVx1NWY4Ylx1NWY4N1x1NWY4Y1x1NWY4OVx1NjAxMlx1NjAxZFx1NjAyMFx1NjAyNVx1NjAwZVx1NjAyOFx1NjA0ZFx1NjA3MFx1NjA2OFx1NjA2Mlx1NjA0Nlx1NjA0M1x1NjA2Y1x1NjA2Ylx1NjA2YVx1NjA2''@;'; put 'put ''NFx1NjI0MVx1NjJkY1x1NjMxNlx1NjMwOVx1NjJmY1x1NjJlZFx1NjMwMVx1NjJlZVx1NjJmZFx1NjMwN1x1NjJmMVx1NjJmNyJdLFsiYWM0MCIsIlx1NjJlZlx1NjJlY1x1NjJmZVx1NjJmNFx1NjMxMVx1NjMwMlx1NjUzZlx1NjU0NVx1NjVhYlx1NjViZFx1NjVlMlx1NjYyNVx1NjYyZFx1''@;'; put 'put ''NjYyMFx1NjYyN1x1NjYyZlx1NjYxZlx1NjYyOFx1NjYzMVx1NjYyNFx1NjZmN1x1NjdmZlx1NjdkM1x1NjdmMVx1NjdkNFx1NjdkMFx1NjdlY1x1NjdiNlx1NjdhZlx1NjdmNVx1NjdlOVx1NjdlZlx1NjdjNFx1NjdkMVx1NjdiNFx1NjdkYVx1NjdlNVx1NjdiOFx1NjdjZlx1NjdkZVx1Njdm''@;'; put 'put ''M1x1NjdiMFx1NjdkOVx1NjdlMlx1NjdkZFx1NjdkMlx1NmI2YVx1NmI4M1x1NmI4Nlx1NmJiNVx1NmJkMlx1NmJkN1x1NmMxZlx1NmNjOVx1NmQwYlx1NmQzMlx1NmQyYVx1NmQ0MVx1NmQyNVx1NmQwY1x1NmQzMVx1NmQxZVx1NmQxNyJdLFsiYWNhMSIsIlx1NmQzYlx1NmQzZFx1NmQzZVx1''@;'; put 'put ''NmQzNlx1NmQxYlx1NmNmNVx1NmQzOVx1NmQyN1x1NmQzOFx1NmQyOVx1NmQyZVx1NmQzNVx1NmQwZVx1NmQyYlx1NzBhYlx1NzBiYVx1NzBiM1x1NzBhY1x1NzBhZlx1NzBhZFx1NzBiOFx1NzBhZVx1NzBhNFx1NzIzMFx1NzI3Mlx1NzI2Zlx1NzI3NFx1NzJlOVx1NzJlMFx1NzJlMVx1NzNi''@;'; put 'put ''N1x1NzNjYVx1NzNiYlx1NzNiMlx1NzNjZFx1NzNjMFx1NzNiM1x1NzUxYVx1NzUyZFx1NzU0Zlx1NzU0Y1x1NzU0ZVx1NzU0Ylx1NzVhYlx1NzVhNFx1NzVhNVx1NzVhMlx1NzVhM1x1NzY3OFx1NzY4Nlx1NzY4N1x1NzY4OFx1NzZjOFx1NzZjNlx1NzZjM1x1NzZjNVx1NzcwMVx1NzZmOVx1''@;'; put 'put ''NzZmOFx1NzcwOVx1NzcwYlx1NzZmZVx1NzZmY1x1NzcwN1x1NzdkY1x1NzgwMlx1NzgxNFx1NzgwY1x1NzgwZFx1Nzk0Nlx1Nzk0OVx1Nzk0OFx1Nzk0N1x1NzliOVx1NzliYVx1NzlkMVx1NzlkMlx1NzljYlx1N2E3Zlx1N2E4MVx1N2FmZlx1N2FmZFx1N2M3ZFx1N2QwMlx1N2QwNVx1N2Qw''@;'; put 'put ''MFx1N2QwOVx1N2QwN1x1N2QwNFx1N2QwNlx1N2YzOFx1N2Y4ZVx1N2ZiZlx1ODAwNCJdLFsiYWQ0MCIsIlx1ODAxMFx1ODAwZFx1ODAxMVx1ODAzNlx1ODBkNlx1ODBlNVx1ODBkYVx1ODBjM1x1ODBjNFx1ODBjY1x1ODBlMVx1ODBkYlx1ODBjZVx1ODBkZVx1ODBlNFx1ODBkZFx1ODFmNFx1''@;'; put 'put ''ODIyMlx1ODJlN1x1ODMwM1x1ODMwNVx1ODJlM1x1ODJkYlx1ODJlNlx1ODMwNFx1ODJlNVx1ODMwMlx1ODMwOVx1ODJkMlx1ODJkN1x1ODJmMVx1ODMwMVx1ODJkY1x1ODJkNFx1ODJkMVx1ODJkZVx1ODJkM1x1ODJkZlx1ODJlZlx1ODMwNlx1ODY1MFx1ODY3OVx1ODY3Ylx1ODY3YVx1ODg0''@;'; put 'put ''ZFx1ODg2Ylx1ODk4MVx1ODlkNFx1OGEwOFx1OGEwMlx1OGEwM1x1OGM5ZVx1OGNhMFx1OGQ3NFx1OGQ3M1x1OGRiNFx1OGVjZFx1OGVjY1x1OGZmMFx1OGZlNlx1OGZlMlx1OGZlYVx1OGZlNSJdLFsiYWRhMSIsIlx1OGZlZFx1OGZlYlx1OGZlNFx1OGZlOFx1OTBjYVx1OTBjZVx1OTBjMVx1''@;'; put 'put ''OTBjM1x1OTE0Ylx1OTE0YVx1OTFjZFx1OTU4Mlx1OTY1MFx1OTY0Ylx1OTY0Y1x1OTY0ZFx1OTc2Mlx1OTc2OVx1OTdjYlx1OTdlZFx1OTdmM1x1OTgwMVx1OThhOFx1OThkYlx1OThkZlx1OTk5Nlx1OTk5OVx1NGU1OFx1NGViM1x1NTAwY1x1NTAwZFx1NTAyM1x1NGZlZlx1NTAyNlx1NTAy''@;'; put 'put ''NVx1NGZmOFx1NTAyOVx1NTAxNlx1NTAwNlx1NTAzY1x1NTAxZlx1NTAxYVx1NTAxMlx1NTAxMVx1NGZmYVx1NTAwMFx1NTAxNFx1NTAyOFx1NGZmMVx1NTAyMVx1NTAwYlx1NTAxOVx1NTAxOFx1NGZmM1x1NGZlZVx1NTAyZFx1NTAyYVx1NGZmZVx1NTAyYlx1NTAwOVx1NTE3Y1x1NTFhNFx1''@;'; put 'put ''NTFhNVx1NTFhMlx1NTFjZFx1NTFjY1x1NTFjNlx1NTFjYlx1NTI1Nlx1NTI1Y1x1NTI1NFx1NTI1Ylx1NTI1ZFx1NTMyYVx1NTM3Zlx1NTM5Zlx1NTM5ZFx1NTNkZlx1NTRlOFx1NTUxMFx1NTUwMVx1NTUzN1x1NTRmY1x1NTRlNVx1NTRmMlx1NTUwNlx1NTRmYVx1NTUxNFx1NTRlOVx1NTRl''@;'; put 'put ''ZFx1NTRlMVx1NTUwOVx1NTRlZVx1NTRlYSJdLFsiYWU0MCIsIlx1NTRlNlx1NTUyN1x1NTUwN1x1NTRmZFx1NTUwZlx1NTcwM1x1NTcwNFx1NTdjMlx1NTdkNFx1NTdjYlx1NTdjM1x1NTgwOVx1NTkwZlx1NTk1N1x1NTk1OFx1NTk1YVx1NWExMVx1NWExOFx1NWExY1x1NWExZlx1NWExYlx1''@;'; put 'put ''NWExM1x1NTllY1x1NWEyMFx1NWEyM1x1NWEyOVx1NWEyNVx1NWEwY1x1NWEwOVx1NWI2Ylx1NWM1OFx1NWJiMFx1NWJiM1x1NWJiNlx1NWJiNFx1NWJhZVx1NWJiNVx1NWJiOVx1NWJiOFx1NWMwNFx1NWM1MVx1NWM1NVx1NWM1MFx1NWNlZFx1NWNmZFx1NWNmYlx1NWNlYVx1NWNlOFx1NWNm''@;'; put 'put ''MFx1NWNmNlx1NWQwMVx1NWNmNFx1NWRlZVx1NWUyZFx1NWUyYlx1NWVhYlx1NWVhZFx1NWVhN1x1NWYzMVx1NWY5Mlx1NWY5MVx1NWY5MFx1NjA1OSJdLFsiYWVhMSIsIlx1NjA2M1x1NjA2NVx1NjA1MFx1NjA1NVx1NjA2ZFx1NjA2OVx1NjA2Zlx1NjA4NFx1NjA5Zlx1NjA5YVx1NjA4ZFx1''@;'; put 'put ''NjA5NFx1NjA4Y1x1NjA4NVx1NjA5Nlx1NjI0N1x1NjJmM1x1NjMwOFx1NjJmZlx1NjM0ZVx1NjMzZVx1NjMyZlx1NjM1NVx1NjM0Mlx1NjM0Nlx1NjM0Zlx1NjM0OVx1NjMzYVx1NjM1MFx1NjMzZFx1NjMyYVx1NjMyYlx1NjMyOFx1NjM0ZFx1NjM0Y1x1NjU0OFx1NjU0OVx1NjU5OVx1NjVj''@;'; put 'put ''MVx1NjVjNVx1NjY0Mlx1NjY0OVx1NjY0Zlx1NjY0M1x1NjY1Mlx1NjY0Y1x1NjY0NVx1NjY0MVx1NjZmOFx1NjcxNFx1NjcxNVx1NjcxN1x1NjgyMVx1NjgzOFx1Njg0OFx1Njg0Nlx1Njg1M1x1NjgzOVx1Njg0Mlx1Njg1NFx1NjgyOVx1NjhiM1x1NjgxN1x1Njg0Y1x1Njg1MVx1NjgzZFx1''@;'; put 'put ''NjdmNFx1Njg1MFx1Njg0MFx1NjgzY1x1Njg0M1x1NjgyYVx1Njg0NVx1NjgxM1x1NjgxOFx1Njg0MVx1NmI4YVx1NmI4OVx1NmJiN1x1NmMyM1x1NmMyN1x1NmMyOFx1NmMyNlx1NmMyNFx1NmNmMFx1NmQ2YVx1NmQ5NVx1NmQ4OFx1NmQ4N1x1NmQ2Nlx1NmQ3OFx1NmQ3N1x1NmQ1OVx1NmQ5''@;'; put 'put ''MyJdLFsiYWY0MCIsIlx1NmQ2Y1x1NmQ4OVx1NmQ2ZVx1NmQ1YVx1NmQ3NFx1NmQ2OVx1NmQ4Y1x1NmQ4YVx1NmQ3OVx1NmQ4NVx1NmQ2NVx1NmQ5NFx1NzBjYVx1NzBkOFx1NzBlNFx1NzBkOVx1NzBjOFx1NzBjZlx1NzIzOVx1NzI3OVx1NzJmY1x1NzJmOVx1NzJmZFx1NzJmOFx1NzJmN1x1''@;'; put 'put ''NzM4Nlx1NzNlZFx1NzQwOVx1NzNlZVx1NzNlMFx1NzNlYVx1NzNkZVx1NzU1NFx1NzU1ZFx1NzU1Y1x1NzU1YVx1NzU1OVx1NzViZVx1NzVjNVx1NzVjN1x1NzViMlx1NzViM1x1NzViZFx1NzViY1x1NzViOVx1NzVjMlx1NzViOFx1NzY4Ylx1NzZiMFx1NzZjYVx1NzZjZFx1NzZjZVx1Nzcy''@;'; put 'put ''OVx1NzcxZlx1NzcyMFx1NzcyOFx1NzdlOVx1NzgzMFx1NzgyN1x1NzgzOFx1NzgxZFx1NzgzNFx1NzgzNyJdLFsiYWZhMSIsIlx1NzgyNVx1NzgyZFx1NzgyMFx1NzgxZlx1NzgzMlx1Nzk1NVx1Nzk1MFx1Nzk2MFx1Nzk1Zlx1Nzk1Nlx1Nzk1ZVx1Nzk1ZFx1Nzk1N1x1Nzk1YVx1NzllNFx1''@;'; put 'put ''NzllM1x1NzllN1x1NzlkZlx1NzllNlx1NzllOVx1NzlkOFx1N2E4NFx1N2E4OFx1N2FkOVx1N2IwNlx1N2IxMVx1N2M4OVx1N2QyMVx1N2QxN1x1N2QwYlx1N2QwYVx1N2QyMFx1N2QyMlx1N2QxNFx1N2QxMFx1N2QxNVx1N2QxYVx1N2QxY1x1N2QwZFx1N2QxOVx1N2QxYlx1N2YzYVx1N2Y1''@;'; put 'put ''Zlx1N2Y5NFx1N2ZjNVx1N2ZjMVx1ODAwNlx1ODAxOFx1ODAxNVx1ODAxOVx1ODAxN1x1ODAzZFx1ODAzZlx1ODBmMVx1ODEwMlx1ODBmMFx1ODEwNVx1ODBlZFx1ODBmNFx1ODEwNlx1ODBmOFx1ODBmM1x1ODEwOFx1ODBmZFx1ODEwYVx1ODBmY1x1ODBlZlx1ODFlZFx1ODFlY1x1ODIwMFx1''@;'; put 'put ''ODIxMFx1ODIyYVx1ODIyYlx1ODIyOFx1ODIyY1x1ODJiYlx1ODMyYlx1ODM1Mlx1ODM1NFx1ODM0YVx1ODMzOFx1ODM1MFx1ODM0OVx1ODMzNVx1ODMzNFx1ODM0Zlx1ODMzMlx1ODMzOVx1ODMzNlx1ODMxN1x1ODM0MFx1ODMzMVx1ODMyOFx1ODM0MyJdLFsiYjA0MCIsIlx1ODY1NFx1ODY4''@;'; put 'put ''YVx1ODZhYVx1ODY5M1x1ODZhNFx1ODZhOVx1ODY4Y1x1ODZhM1x1ODY5Y1x1ODg3MFx1ODg3N1x1ODg4MVx1ODg4Mlx1ODg3ZFx1ODg3OVx1OGExOFx1OGExMFx1OGEwZVx1OGEwY1x1OGExNVx1OGEwYVx1OGExN1x1OGExM1x1OGExNlx1OGEwZlx1OGExMVx1OGM0OFx1OGM3YVx1OGM3OVx1''@;'; put 'put ''OGNhMVx1OGNhMlx1OGQ3N1x1OGVhY1x1OGVkMlx1OGVkNFx1OGVjZlx1OGZiMVx1OTAwMVx1OTAwNlx1OGZmN1x1OTAwMFx1OGZmYVx1OGZmNFx1OTAwM1x1OGZmZFx1OTAwNVx1OGZmOFx1OTA5NVx1OTBlMVx1OTBkZFx1OTBlMlx1OTE1Mlx1OTE0ZFx1OTE0Y1x1OTFkOFx1OTFkZFx1OTFk''@;'; put 'put ''N1x1OTFkY1x1OTFkOVx1OTU4M1x1OTY2Mlx1OTY2M1x1OTY2MSJdLFsiYjBhMSIsIlx1OTY1Ylx1OTY1ZFx1OTY2NFx1OTY1OFx1OTY1ZVx1OTZiYlx1OThlMlx1OTlhY1x1OWFhOFx1OWFkOFx1OWIyNVx1OWIzMlx1OWIzY1x1NGU3ZVx1NTA3YVx1NTA3ZFx1NTA1Y1x1NTA0N1x1NTA0M1x1''@;'; put 'put ''NTA0Y1x1NTA1YVx1NTA0OVx1NTA2NVx1NTA3Nlx1NTA0ZVx1NTA1NVx1NTA3NVx1NTA3NFx1NTA3N1x1NTA0Zlx1NTAwZlx1NTA2Zlx1NTA2ZFx1NTE1Y1x1NTE5NVx1NTFmMFx1NTI2YVx1NTI2Zlx1NTJkMlx1NTJkOVx1NTJkOFx1NTJkNVx1NTMxMFx1NTMwZlx1NTMxOVx1NTMzZlx1NTM0''@;'; put 'put ''MFx1NTMzZVx1NTNjM1x1NjZmY1x1NTU0Nlx1NTU2YVx1NTU2Nlx1NTU0NFx1NTU1ZVx1NTU2MVx1NTU0M1x1NTU0YVx1NTUzMVx1NTU1Nlx1NTU0Zlx1NTU1NVx1NTUyZlx1NTU2NFx1NTUzOFx1NTUyZVx1NTU1Y1x1NTUyY1x1NTU2M1x1NTUzM1x1NTU0MVx1NTU1N1x1NTcwOFx1NTcwYlx1''@;'; put 'put ''NTcwOVx1NTdkZlx1NTgwNVx1NTgwYVx1NTgwNlx1NTdlMFx1NTdlNFx1NTdmYVx1NTgwMlx1NTgzNVx1NTdmN1x1NTdmOVx1NTkyMFx1NTk2Mlx1NWEzNlx1NWE0MVx1NWE0OVx1NWE2Nlx1NWE2YVx1NWE0MCJdLFsiYjE0MCIsIlx1NWEzY1x1NWE2Mlx1NWE1YVx1NWE0Nlx1NWE0YVx1NWI3''@;'; put 'put ''MFx1NWJjN1x1NWJjNVx1NWJjNFx1NWJjMlx1NWJiZlx1NWJjNlx1NWMwOVx1NWMwOFx1NWMwN1x1NWM2MFx1NWM1Y1x1NWM1ZFx1NWQwN1x1NWQwNlx1NWQwZVx1NWQxYlx1NWQxNlx1NWQyMlx1NWQxMVx1NWQyOVx1NWQxNFx1NWQxOVx1NWQyNFx1NWQyN1x1NWQxN1x1NWRlMlx1NWUzOFx1''@;'; put 'put ''NWUzNlx1NWUzM1x1NWUzN1x1NWViN1x1NWViOFx1NWViNlx1NWViNVx1NWViZVx1NWYzNVx1NWYzN1x1NWY1N1x1NWY2Y1x1NWY2OVx1NWY2Ylx1NWY5N1x1NWY5OVx1NWY5ZVx1NWY5OFx1NWZhMVx1NWZhMFx1NWY5Y1x1NjA3Zlx1NjBhM1x1NjA4OVx1NjBhMFx1NjBhOFx1NjBjYlx1NjBi''@;'; put 'put ''NFx1NjBlNlx1NjBiZCJdLFsiYjFhMSIsIlx1NjBjNVx1NjBiYlx1NjBiNVx1NjBkY1x1NjBiY1x1NjBkOFx1NjBkNVx1NjBjNlx1NjBkZlx1NjBiOFx1NjBkYVx1NjBjN1x1NjIxYVx1NjIxYlx1NjI0OFx1NjNhMFx1NjNhN1x1NjM3Mlx1NjM5Nlx1NjNhMlx1NjNhNVx1NjM3N1x1NjM2N1x1''@;'; put 'put ''NjM5OFx1NjNhYVx1NjM3MVx1NjNhOVx1NjM4OVx1NjM4M1x1NjM5Ylx1NjM2Ylx1NjNhOFx1NjM4NFx1NjM4OFx1NjM5OVx1NjNhMVx1NjNhY1x1NjM5Mlx1NjM4Zlx1NjM4MFx1NjM3Ylx1NjM2OVx1NjM2OFx1NjM3YVx1NjU1ZFx1NjU1Nlx1NjU1MVx1NjU1OVx1NjU1N1x1NTU1Zlx1NjU0''@;'; put 'put ''Zlx1NjU1OFx1NjU1NVx1NjU1NFx1NjU5Y1x1NjU5Ylx1NjVhY1x1NjVjZlx1NjVjYlx1NjVjY1x1NjVjZVx1NjY1ZFx1NjY1YVx1NjY2NFx1NjY2OFx1NjY2Nlx1NjY1ZVx1NjZmOVx1NTJkN1x1NjcxYlx1Njg4MVx1NjhhZlx1NjhhMlx1Njg5M1x1NjhiNVx1Njg3Zlx1Njg3Nlx1NjhiMVx1''@;'; put 'put ''NjhhN1x1Njg5N1x1NjhiMFx1Njg4M1x1NjhjNFx1NjhhZFx1Njg4Nlx1Njg4NVx1Njg5NFx1Njg5ZFx1NjhhOFx1Njg5Zlx1NjhhMVx1Njg4Mlx1NmIzMlx1NmJiYSJdLFsiYjI0MCIsIlx1NmJlYlx1NmJlY1x1NmMyYlx1NmQ4ZVx1NmRiY1x1NmRmM1x1NmRkOVx1NmRiMlx1NmRlMVx1NmRj''@;'; put 'put ''Y1x1NmRlNFx1NmRmYlx1NmRmYVx1NmUwNVx1NmRjN1x1NmRjYlx1NmRhZlx1NmRkMVx1NmRhZVx1NmRkZVx1NmRmOVx1NmRiOFx1NmRmN1x1NmRmNVx1NmRjNVx1NmRkMlx1NmUxYVx1NmRiNVx1NmRkYVx1NmRlYlx1NmRkOFx1NmRlYVx1NmRmMVx1NmRlZVx1NmRlOFx1NmRjNlx1NmRjNFx1''@;'; put 'put ''NmRhYVx1NmRlY1x1NmRiZlx1NmRlNlx1NzBmOVx1NzEwOVx1NzEwYVx1NzBmZFx1NzBlZlx1NzIzZFx1NzI3ZFx1NzI4MVx1NzMxY1x1NzMxYlx1NzMxNlx1NzMxM1x1NzMxOVx1NzM4N1x1NzQwNVx1NzQwYVx1NzQwM1x1NzQwNlx1NzNmZVx1NzQwZFx1NzRlMFx1NzRmNiJdLFsiYjJhMSIs''@;'; put 'put ''Ilx1NzRmN1x1NzUxY1x1NzUyMlx1NzU2NVx1NzU2Nlx1NzU2Mlx1NzU3MFx1NzU4Zlx1NzVkNFx1NzVkNVx1NzViNVx1NzVjYVx1NzVjZFx1NzY4ZVx1NzZkNFx1NzZkMlx1NzZkYlx1NzczN1x1NzczZVx1NzczY1x1NzczNlx1NzczOFx1NzczYVx1Nzg2Ylx1Nzg0M1x1Nzg0ZVx1Nzk2NVx1''@;'; put 'put ''Nzk2OFx1Nzk2ZFx1NzlmYlx1N2E5Mlx1N2E5NVx1N2IyMFx1N2IyOFx1N2IxYlx1N2IyY1x1N2IyNlx1N2IxOVx1N2IxZVx1N2IyZVx1N2M5Mlx1N2M5N1x1N2M5NVx1N2Q0Nlx1N2Q0M1x1N2Q3MVx1N2QyZVx1N2QzOVx1N2QzY1x1N2Q0MFx1N2QzMFx1N2QzM1x1N2Q0NFx1N2QyZlx1N2Q0''@;'; put 'put ''Mlx1N2QzMlx1N2QzMVx1N2YzZFx1N2Y5ZVx1N2Y5YVx1N2ZjY1x1N2ZjZVx1N2ZkMlx1ODAxY1x1ODA0YVx1ODA0Nlx1ODEyZlx1ODExNlx1ODEyM1x1ODEyYlx1ODEyOVx1ODEzMFx1ODEyNFx1ODIwMlx1ODIzNVx1ODIzN1x1ODIzNlx1ODIzOVx1ODM4ZVx1ODM5ZVx1ODM5OFx1ODM3OFx1''@;'; put 'put ''ODNhMlx1ODM5Nlx1ODNiZFx1ODNhYlx1ODM5Mlx1ODM4YVx1ODM5M1x1ODM4OVx1ODNhMFx1ODM3N1x1ODM3Ylx1ODM3YyJdLFsiYjM0MCIsIlx1ODM4Nlx1ODNhN1x1ODY1NVx1NWY2YVx1ODZjN1x1ODZjMFx1ODZiNlx1ODZjNFx1ODZiNVx1ODZjNlx1ODZjYlx1ODZiMVx1ODZhZlx1ODZj''@;'; put 'put ''OVx1ODg1M1x1ODg5ZVx1ODg4OFx1ODhhYlx1ODg5Mlx1ODg5Nlx1ODg4ZFx1ODg4Ylx1ODk5M1x1ODk4Zlx1OGEyYVx1OGExZFx1OGEyM1x1OGEyNVx1OGEzMVx1OGEyZFx1OGExZlx1OGExYlx1OGEyMlx1OGM0OVx1OGM1YVx1OGNhOVx1OGNhY1x1OGNhYlx1OGNhOFx1OGNhYVx1OGNhN1x1''@;'; put 'put ''OGQ2N1x1OGQ2Nlx1OGRiZVx1OGRiYVx1OGVkYlx1OGVkZlx1OTAxOVx1OTAwZFx1OTAxYVx1OTAxN1x1OTAyM1x1OTAxZlx1OTAxZFx1OTAxMFx1OTAxNVx1OTAxZVx1OTAyMFx1OTAwZlx1OTAyMlx1OTAxNlx1OTAxYlx1OTAxNCJdLFsiYjNhMSIsIlx1OTBlOFx1OTBlZFx1OTBmZFx1OTE1''@;'; put 'put ''N1x1OTFjZVx1OTFmNVx1OTFlNlx1OTFlM1x1OTFlN1x1OTFlZFx1OTFlOVx1OTU4OVx1OTY2YVx1OTY3NVx1OTY3M1x1OTY3OFx1OTY3MFx1OTY3NFx1OTY3Nlx1OTY3N1x1OTY2Y1x1OTZjMFx1OTZlYVx1OTZlOVx1N2FlMFx1N2FkZlx1OTgwMlx1OTgwM1x1OWI1YVx1OWNlNVx1OWU3NVx1''@;'; put 'put ''OWU3Zlx1OWVhNVx1OWViYlx1NTBhMlx1NTA4ZFx1NTA4NVx1NTA5OVx1NTA5MVx1NTA4MFx1NTA5Nlx1NTA5OFx1NTA5YVx1NjcwMFx1NTFmMVx1NTI3Mlx1NTI3NFx1NTI3NVx1NTI2OVx1NTJkZVx1NTJkZFx1NTJkYlx1NTM1YVx1NTNhNVx1NTU3Ylx1NTU4MFx1NTVhN1x1NTU3Y1x1NTU4''@;'; put 'put ''YVx1NTU5ZFx1NTU5OFx1NTU4Mlx1NTU5Y1x1NTVhYVx1NTU5NFx1NTU4N1x1NTU4Ylx1NTU4M1x1NTViM1x1NTVhZVx1NTU5Zlx1NTUzZVx1NTViMlx1NTU5YVx1NTViYlx1NTVhY1x1NTViMVx1NTU3ZVx1NTU4OVx1NTVhYlx1NTU5OVx1NTcwZFx1NTgyZlx1NTgyYVx1NTgzNFx1NTgyNFx1''@;'; put 'put ''NTgzMFx1NTgzMVx1NTgyMVx1NTgxZFx1NTgyMFx1NThmOVx1NThmYVx1NTk2MCJdLFsiYjQ0MCIsIlx1NWE3N1x1NWE5YVx1NWE3Zlx1NWE5Mlx1NWE5Ylx1NWFhN1x1NWI3M1x1NWI3MVx1NWJkMlx1NWJjY1x1NWJkM1x1NWJkMFx1NWMwYVx1NWMwYlx1NWMzMVx1NWQ0Y1x1NWQ1MFx1NWQz''@;'; put 'put ''NFx1NWQ0N1x1NWRmZFx1NWU0NVx1NWUzZFx1NWU0MFx1NWU0M1x1NWU3ZVx1NWVjYVx1NWVjMVx1NWVjMlx1NWVjNFx1NWYzY1x1NWY2ZFx1NWZhOVx1NWZhYVx1NWZhOFx1NjBkMVx1NjBlMVx1NjBiMlx1NjBiNlx1NjBlMFx1NjExY1x1NjEyM1x1NjBmYVx1NjExNVx1NjBmMFx1NjBmYlx1''@;'; put 'put ''NjBmNFx1NjE2OFx1NjBmMVx1NjEwZVx1NjBmNlx1NjEwOVx1NjEwMFx1NjExMlx1NjIxZlx1NjI0OVx1NjNhM1x1NjM4Y1x1NjNjZlx1NjNjMFx1NjNlOVx1NjNjOVx1NjNjNlx1NjNjZCJdLFsiYjRhMSIsIlx1NjNkMlx1NjNlM1x1NjNkMFx1NjNlMVx1NjNkNlx1NjNlZFx1NjNlZVx1NjM3''@;'; put 'put ''Nlx1NjNmNFx1NjNlYVx1NjNkYlx1NjQ1Mlx1NjNkYVx1NjNmOVx1NjU1ZVx1NjU2Nlx1NjU2Mlx1NjU2M1x1NjU5MVx1NjU5MFx1NjVhZlx1NjY2ZVx1NjY3MFx1NjY3NFx1NjY3Nlx1NjY2Zlx1NjY5MVx1NjY3YVx1NjY3ZVx1NjY3N1x1NjZmZVx1NjZmZlx1NjcxZlx1NjcxZFx1NjhmYVx1''@;'; put 'put ''NjhkNVx1NjhlMFx1NjhkOFx1NjhkN1x1NjkwNVx1NjhkZlx1NjhmNVx1NjhlZVx1NjhlN1x1NjhmOVx1NjhkMlx1NjhmMlx1NjhlM1x1NjhjYlx1NjhjZFx1NjkwZFx1NjkxMlx1NjkwZVx1NjhjOVx1NjhkYVx1Njk2ZVx1NjhmYlx1NmIzZVx1NmIzYVx1NmIzZFx1NmI5OFx1NmI5Nlx1NmJi''@;'; put 'put ''Y1x1NmJlZlx1NmMyZVx1NmMyZlx1NmMyY1x1NmUyZlx1NmUzOFx1NmU1NFx1NmUyMVx1NmUzMlx1NmU2N1x1NmU0YVx1NmUyMFx1NmUyNVx1NmUyM1x1NmUxYlx1NmU1Ylx1NmU1OFx1NmUyNFx1NmU1Nlx1NmU2ZVx1NmUyZFx1NmUyNlx1NmU2Zlx1NmUzNFx1NmU0ZFx1NmUzYVx1NmUyY1x1''@;'; put 'put ''NmU0M1x1NmUxZFx1NmUzZVx1NmVjYiJdLFsiYjU0MCIsIlx1NmU4OVx1NmUxOVx1NmU0ZVx1NmU2M1x1NmU0NFx1NmU3Mlx1NmU2OVx1NmU1Zlx1NzExOVx1NzExYVx1NzEyNlx1NzEzMFx1NzEyMVx1NzEzNlx1NzE2ZVx1NzExY1x1NzI0Y1x1NzI4NFx1NzI4MFx1NzMzNlx1NzMyNVx1NzMz''@;'; put 'put ''NFx1NzMyOVx1NzQzYVx1NzQyYVx1NzQzM1x1NzQyMlx1NzQyNVx1NzQzNVx1NzQzNlx1NzQzNFx1NzQyZlx1NzQxYlx1NzQyNlx1NzQyOFx1NzUyNVx1NzUyNlx1NzU2Ylx1NzU2YVx1NzVlMlx1NzVkYlx1NzVlM1x1NzVkOVx1NzVkOFx1NzVkZVx1NzVlMFx1NzY3Ylx1NzY3Y1x1NzY5Nlx1''@;'; put 'put ''NzY5M1x1NzZiNFx1NzZkY1x1Nzc0Zlx1NzdlZFx1Nzg1ZFx1Nzg2Y1x1Nzg2Zlx1N2EwZFx1N2EwOFx1N2EwYlx1N2EwNVx1N2EwMFx1N2E5OCJdLFsiYjVhMSIsIlx1N2E5N1x1N2E5Nlx1N2FlNVx1N2FlM1x1N2I0OVx1N2I1Nlx1N2I0Nlx1N2I1MFx1N2I1Mlx1N2I1NFx1N2I0ZFx1N2I0''@;'; put 'put ''Ylx1N2I0Zlx1N2I1MVx1N2M5Zlx1N2NhNVx1N2Q1ZVx1N2Q1MFx1N2Q2OFx1N2Q1NVx1N2QyYlx1N2Q2ZVx1N2Q3Mlx1N2Q2MVx1N2Q2Nlx1N2Q2Mlx1N2Q3MFx1N2Q3M1x1NTU4NFx1N2ZkNFx1N2ZkNVx1ODAwYlx1ODA1Mlx1ODA4NVx1ODE1NVx1ODE1NFx1ODE0Ylx1ODE1MVx1ODE0ZVx1''@;'; put 'put ''ODEzOVx1ODE0Nlx1ODEzZVx1ODE0Y1x1ODE1M1x1ODE3NFx1ODIxMlx1ODIxY1x1ODNlOVx1ODQwM1x1ODNmOFx1ODQwZFx1ODNlMFx1ODNjNVx1ODQwYlx1ODNjMVx1ODNlZlx1ODNmMVx1ODNmNFx1ODQ1N1x1ODQwYVx1ODNmMFx1ODQwY1x1ODNjY1x1ODNmZFx1ODNmMlx1ODNjYVx1ODQz''@;'; put 'put ''OFx1ODQwZVx1ODQwNFx1ODNkY1x1ODQwN1x1ODNkNFx1ODNkZlx1ODY1Ylx1ODZkZlx1ODZkOVx1ODZlZFx1ODZkNFx1ODZkYlx1ODZlNFx1ODZkMFx1ODZkZVx1ODg1N1x1ODhjMVx1ODhjMlx1ODhiMVx1ODk4M1x1ODk5Nlx1OGEzYlx1OGE2MFx1OGE1NVx1OGE1ZVx1OGEzY1x1OGE0MSJd''@;'; put 'put ''LFsiYjY0MCIsIlx1OGE1NFx1OGE1Ylx1OGE1MFx1OGE0Nlx1OGEzNFx1OGEzYVx1OGEzNlx1OGE1Nlx1OGM2MVx1OGM4Mlx1OGNhZlx1OGNiY1x1OGNiM1x1OGNiZFx1OGNjMVx1OGNiYlx1OGNjMFx1OGNiNFx1OGNiN1x1OGNiNlx1OGNiZlx1OGNiOFx1OGQ4YVx1OGQ4NVx1OGQ4MVx1OGRj''@;'; put 'put ''ZVx1OGRkZFx1OGRjYlx1OGRkYVx1OGRkMVx1OGRjY1x1OGRkYlx1OGRjNlx1OGVmYlx1OGVmOFx1OGVmY1x1OGY5Y1x1OTAyZVx1OTAzNVx1OTAzMVx1OTAzOFx1OTAzMlx1OTAzNlx1OTEwMlx1OTBmNVx1OTEwOVx1OTBmZVx1OTE2M1x1OTE2NVx1OTFjZlx1OTIxNFx1OTIxNVx1OTIyM1x1''@;'; put 'put ''OTIwOVx1OTIxZVx1OTIwZFx1OTIxMFx1OTIwN1x1OTIxMVx1OTU5NFx1OTU4Zlx1OTU4Ylx1OTU5MSJdLFsiYjZhMSIsIlx1OTU5M1x1OTU5Mlx1OTU4ZVx1OTY4YVx1OTY4ZVx1OTY4Ylx1OTY3ZFx1OTY4NVx1OTY4Nlx1OTY4ZFx1OTY3Mlx1OTY4NFx1OTZjMVx1OTZjNVx1OTZjNFx1OTZj''@;'; put 'put ''Nlx1OTZjN1x1OTZlZlx1OTZmMlx1OTdjY1x1OTgwNVx1OTgwNlx1OTgwOFx1OThlN1x1OThlYVx1OThlZlx1OThlOVx1OThmMlx1OThlZFx1OTlhZVx1OTlhZFx1OWVjM1x1OWVjZFx1OWVkMVx1NGU4Mlx1NTBhZFx1NTBiNVx1NTBiMlx1NTBiM1x1NTBjNVx1NTBiZVx1NTBhY1x1NTBiN1x1''@;'; put 'put ''NTBiYlx1NTBhZlx1NTBjN1x1NTI3Zlx1NTI3N1x1NTI3ZFx1NTJkZlx1NTJlNlx1NTJlNFx1NTJlMlx1NTJlM1x1NTMyZlx1NTVkZlx1NTVlOFx1NTVkM1x1NTVlNlx1NTVjZVx1NTVkY1x1NTVjN1x1NTVkMVx1NTVlM1x1NTVlNFx1NTVlZlx1NTVkYVx1NTVlMVx1NTVjNVx1NTVjNlx1NTVl''@;'; put 'put ''NVx1NTVjOVx1NTcxMlx1NTcxM1x1NTg1ZVx1NTg1MVx1NTg1OFx1NTg1N1x1NTg1YVx1NTg1NFx1NTg2Ylx1NTg0Y1x1NTg2ZFx1NTg0YVx1NTg2Mlx1NTg1Mlx1NTg0Ylx1NTk2N1x1NWFjMVx1NWFjOVx1NWFjY1x1NWFiZVx1NWFiZFx1NWFiYyJdLFsiYjc0MCIsIlx1NWFiM1x1NWFjMlx1''@;'; put 'put ''NWFiMlx1NWQ2OVx1NWQ2Zlx1NWU0Y1x1NWU3OVx1NWVjOVx1NWVjOFx1NWYxMlx1NWY1OVx1NWZhY1x1NWZhZVx1NjExYVx1NjEwZlx1NjE0OFx1NjExZlx1NjBmM1x1NjExYlx1NjBmOVx1NjEwMVx1NjEwOFx1NjE0ZVx1NjE0Y1x1NjE0NFx1NjE0ZFx1NjEzZVx1NjEzNFx1NjEyN1x1NjEw''@;'; put 'put ''ZFx1NjEwNlx1NjEzN1x1NjIyMVx1NjIyMlx1NjQxM1x1NjQzZVx1NjQxZVx1NjQyYVx1NjQyZFx1NjQzZFx1NjQyY1x1NjQwZlx1NjQxY1x1NjQxNFx1NjQwZFx1NjQzNlx1NjQxNlx1NjQxN1x1NjQwNlx1NjU2Y1x1NjU5Zlx1NjViMFx1NjY5N1x1NjY4OVx1NjY4N1x1NjY4OFx1NjY5Nlx1''@;'; put 'put ''NjY4NFx1NjY5OFx1NjY4ZFx1NjcwM1x1Njk5NFx1Njk2ZCJdLFsiYjdhMSIsIlx1Njk1YVx1Njk3N1x1Njk2MFx1Njk1NFx1Njk3NVx1NjkzMFx1Njk4Mlx1Njk0YVx1Njk2OFx1Njk2Ylx1Njk1ZVx1Njk1M1x1Njk3OVx1Njk4Nlx1Njk1ZFx1Njk2M1x1Njk1Ylx1NmI0N1x1NmI3Mlx1NmJj''@;'; put 'put ''MFx1NmJiZlx1NmJkM1x1NmJmZFx1NmVhMlx1NmVhZlx1NmVkM1x1NmViNlx1NmVjMlx1NmU5MFx1NmU5ZFx1NmVjN1x1NmVjNVx1NmVhNVx1NmU5OFx1NmViY1x1NmViYVx1NmVhYlx1NmVkMVx1NmU5Nlx1NmU5Y1x1NmVjNFx1NmVkNFx1NmVhYVx1NmVhN1x1NmViNFx1NzE0ZVx1NzE1OVx1''@;'; put 'put ''NzE2OVx1NzE2NFx1NzE0OVx1NzE2N1x1NzE1Y1x1NzE2Y1x1NzE2Nlx1NzE0Y1x1NzE2NVx1NzE1ZVx1NzE0Nlx1NzE2OFx1NzE1Nlx1NzIzYVx1NzI1Mlx1NzMzN1x1NzM0NVx1NzMzZlx1NzMzZVx1NzQ2Zlx1NzQ1YVx1NzQ1NVx1NzQ1Zlx1NzQ1ZVx1NzQ0MVx1NzQzZlx1NzQ1OVx1NzQ1''@;'; put 'put ''Ylx1NzQ1Y1x1NzU3Nlx1NzU3OFx1NzYwMFx1NzVmMFx1NzYwMVx1NzVmMlx1NzVmMVx1NzVmYVx1NzVmZlx1NzVmNFx1NzVmM1x1NzZkZVx1NzZkZlx1Nzc1Ylx1Nzc2Ylx1Nzc2Nlx1Nzc1ZVx1Nzc2MyJdLFsiYjg0MCIsIlx1Nzc3OVx1Nzc2YVx1Nzc2Y1x1Nzc1Y1x1Nzc2NVx1Nzc2OFx1''@;'; put 'put ''Nzc2Mlx1NzdlZVx1Nzg4ZVx1NzhiMFx1Nzg5N1x1Nzg5OFx1Nzg4Y1x1Nzg4OVx1Nzg3Y1x1Nzg5MVx1Nzg5M1x1Nzg3Zlx1Nzk3YVx1Nzk3Zlx1Nzk4MVx1ODQyY1x1NzliZFx1N2ExY1x1N2ExYVx1N2EyMFx1N2ExNFx1N2ExZlx1N2ExZVx1N2E5Zlx1N2FhMFx1N2I3N1x1N2JjMFx1N2I2''@;'; put 'put ''MFx1N2I2ZVx1N2I2N1x1N2NiMVx1N2NiM1x1N2NiNVx1N2Q5M1x1N2Q3OVx1N2Q5MVx1N2Q4MVx1N2Q4Zlx1N2Q1Ylx1N2Y2ZVx1N2Y2OVx1N2Y2YVx1N2Y3Mlx1N2ZhOVx1N2ZhOFx1N2ZhNFx1ODA1Nlx1ODA1OFx1ODA4Nlx1ODA4NFx1ODE3MVx1ODE3MFx1ODE3OFx1ODE2NVx1ODE2ZVx1''@;'; put 'put ''ODE3M1x1ODE2YiJdLFsiYjhhMSIsIlx1ODE3OVx1ODE3YVx1ODE2Nlx1ODIwNVx1ODI0N1x1ODQ4Mlx1ODQ3N1x1ODQzZFx1ODQzMVx1ODQ3NVx1ODQ2Nlx1ODQ2Ylx1ODQ0OVx1ODQ2Y1x1ODQ1Ylx1ODQzY1x1ODQzNVx1ODQ2MVx1ODQ2M1x1ODQ2OVx1ODQ2ZFx1ODQ0Nlx1ODY1ZVx1ODY1''@;'; put 'put ''Y1x1ODY1Zlx1ODZmOVx1ODcxM1x1ODcwOFx1ODcwN1x1ODcwMFx1ODZmZVx1ODZmYlx1ODcwMlx1ODcwM1x1ODcwNlx1ODcwYVx1ODg1OVx1ODhkZlx1ODhkNFx1ODhkOVx1ODhkY1x1ODhkOFx1ODhkZFx1ODhlMVx1ODhjYVx1ODhkNVx1ODhkMlx1ODk5Y1x1ODllM1x1OGE2Ylx1OGE3Mlx1''@;'; put 'put ''OGE3M1x1OGE2Nlx1OGE2OVx1OGE3MFx1OGE4N1x1OGE3Y1x1OGE2M1x1OGFhMFx1OGE3MVx1OGE4NVx1OGE2ZFx1OGE2Mlx1OGE2ZVx1OGE2Y1x1OGE3OVx1OGE3Ylx1OGEzZVx1OGE2OFx1OGM2Mlx1OGM4YVx1OGM4OVx1OGNjYVx1OGNjN1x1OGNjOFx1OGNjNFx1OGNiMlx1OGNjM1x1OGNj''@;'; put 'put ''Mlx1OGNjNVx1OGRlMVx1OGRkZlx1OGRlOFx1OGRlZlx1OGRmM1x1OGRmYVx1OGRlYVx1OGRlNFx1OGRlNlx1OGViMlx1OGYwM1x1OGYwOVx1OGVmZVx1OGYwYSJdLFsiYjk0MCIsIlx1OGY5Zlx1OGZiMlx1OTA0Ylx1OTA0YVx1OTA1M1x1OTA0Mlx1OTA1NFx1OTAzY1x1OTA1NVx1OTA1MFx1''@;'; put 'put ''OTA0N1x1OTA0Zlx1OTA0ZVx1OTA0ZFx1OTA1MVx1OTAzZVx1OTA0MVx1OTExMlx1OTExN1x1OTE2Y1x1OTE2YVx1OTE2OVx1OTFjOVx1OTIzN1x1OTI1N1x1OTIzOFx1OTIzZFx1OTI0MFx1OTIzZVx1OTI1Ylx1OTI0Ylx1OTI2NFx1OTI1MVx1OTIzNFx1OTI0OVx1OTI0ZFx1OTI0NVx1OTIz''@;'; put 'put ''OVx1OTIzZlx1OTI1YVx1OTU5OFx1OTY5OFx1OTY5NFx1OTY5NVx1OTZjZFx1OTZjYlx1OTZjOVx1OTZjYVx1OTZmN1x1OTZmYlx1OTZmOVx1OTZmNlx1OTc1Nlx1OTc3NFx1OTc3Nlx1OTgxMFx1OTgxMVx1OTgxM1x1OTgwYVx1OTgxMlx1OTgwY1x1OThmY1x1OThmNCJdLFsiYjlhMSIsIlx1''@;'; put 'put ''OThmZFx1OThmZVx1OTliM1x1OTliMVx1OTliNFx1OWFlMVx1OWNlOVx1OWU4Mlx1OWYwZVx1OWYxM1x1OWYyMFx1NTBlN1x1NTBlZVx1NTBlNVx1NTBkNlx1NTBlZFx1NTBkYVx1NTBkNVx1NTBjZlx1NTBkMVx1NTBmMVx1NTBjZVx1NTBlOVx1NTE2Mlx1NTFmM1x1NTI4M1x1NTI4Mlx1NTMz''@;'; put 'put ''MVx1NTNhZFx1NTVmZVx1NTYwMFx1NTYxYlx1NTYxN1x1NTVmZFx1NTYxNFx1NTYwNlx1NTYwOVx1NTYwZFx1NTYwZVx1NTVmN1x1NTYxNlx1NTYxZlx1NTYwOFx1NTYxMFx1NTVmNlx1NTcxOFx1NTcxNlx1NTg3NVx1NTg3ZVx1NTg4M1x1NTg5M1x1NTg4YVx1NTg3OVx1NTg4NVx1NTg3ZFx1''@;'; put 'put ''NThmZFx1NTkyNVx1NTkyMlx1NTkyNFx1NTk2YVx1NTk2OVx1NWFlMVx1NWFlNlx1NWFlOVx1NWFkN1x1NWFkNlx1NWFkOFx1NWFlM1x1NWI3NVx1NWJkZVx1NWJlN1x1NWJlMVx1NWJlNVx1NWJlNlx1NWJlOFx1NWJlMlx1NWJlNFx1NWJkZlx1NWMwZFx1NWM2Mlx1NWQ4NFx1NWQ4N1x1NWU1''@;'; put 'put ''Ylx1NWU2M1x1NWU1NVx1NWU1N1x1NWU1NFx1NWVkM1x1NWVkNlx1NWYwYVx1NWY0Nlx1NWY3MFx1NWZiOVx1NjE0NyJdLFsiYmE0MCIsIlx1NjEzZlx1NjE0Ylx1NjE3N1x1NjE2Mlx1NjE2M1x1NjE1Zlx1NjE1YVx1NjE1OFx1NjE3NVx1NjIyYVx1NjQ4N1x1NjQ1OFx1NjQ1NFx1NjRhNFx1''@;'; put 'put ''NjQ3OFx1NjQ1Zlx1NjQ3YVx1NjQ1MVx1NjQ2N1x1NjQzNFx1NjQ2ZFx1NjQ3Ylx1NjU3Mlx1NjVhMVx1NjVkN1x1NjVkNlx1NjZhMlx1NjZhOFx1NjY5ZFx1Njk5Y1x1NjlhOFx1Njk5NVx1NjljMVx1NjlhZVx1NjlkM1x1NjljYlx1Njk5Ylx1NjliN1x1NjliYlx1NjlhYlx1NjliNFx1Njlk''@;'; put 'put ''MFx1NjljZFx1NjlhZFx1NjljY1x1NjlhNlx1NjljM1x1NjlhM1x1NmI0OVx1NmI0Y1x1NmMzM1x1NmYzM1x1NmYxNFx1NmVmZVx1NmYxM1x1NmVmNFx1NmYyOVx1NmYzZVx1NmYyMFx1NmYyY1x1NmYwZlx1NmYwMlx1NmYyMiJdLFsiYmFhMSIsIlx1NmVmZlx1NmVlZlx1NmYwNlx1NmYzMVx1''@;'; put 'put ''NmYzOFx1NmYzMlx1NmYyM1x1NmYxNVx1NmYyYlx1NmYyZlx1NmY4OFx1NmYyYVx1NmVlY1x1NmYwMVx1NmVmMlx1NmVjY1x1NmVmN1x1NzE5NFx1NzE5OVx1NzE3ZFx1NzE4YVx1NzE4NFx1NzE5Mlx1NzIzZVx1NzI5Mlx1NzI5Nlx1NzM0NFx1NzM1MFx1NzQ2NFx1NzQ2M1x1NzQ2YVx1NzQ3''@;'; put 'put ''MFx1NzQ2ZFx1NzUwNFx1NzU5MVx1NzYyN1x1NzYwZFx1NzYwYlx1NzYwOVx1NzYxM1x1NzZlMVx1NzZlM1x1Nzc4NFx1Nzc3ZFx1Nzc3Zlx1Nzc2MVx1NzhjMVx1Nzg5Zlx1NzhhN1x1NzhiM1x1NzhhOVx1NzhhM1x1Nzk4ZVx1Nzk4Zlx1Nzk4ZFx1N2EyZVx1N2EzMVx1N2FhYVx1N2FhOVx1''@;'; put 'put ''N2FlZFx1N2FlZlx1N2JhMVx1N2I5NVx1N2I4Ylx1N2I3NVx1N2I5N1x1N2I5ZFx1N2I5NFx1N2I4Zlx1N2JiOFx1N2I4N1x1N2I4NFx1N2NiOVx1N2NiZFx1N2NiZVx1N2RiYlx1N2RiMFx1N2Q5Y1x1N2RiZFx1N2RiZVx1N2RhMFx1N2RjYVx1N2RiNFx1N2RiMlx1N2RiMVx1N2RiYVx1N2Rh''@;'; put 'put ''Mlx1N2RiZlx1N2RiNVx1N2RiOFx1N2RhZFx1N2RkMlx1N2RjN1x1N2RhYyJdLFsiYmI0MCIsIlx1N2Y3MFx1N2ZlMFx1N2ZlMVx1N2ZkZlx1ODA1ZVx1ODA1YVx1ODA4N1x1ODE1MFx1ODE4MFx1ODE4Zlx1ODE4OFx1ODE4YVx1ODE3Zlx1ODE4Mlx1ODFlN1x1ODFmYVx1ODIwN1x1ODIxNFx1''@;'; put 'put ''ODIxZVx1ODI0Ylx1ODRjOVx1ODRiZlx1ODRjNlx1ODRjNFx1ODQ5OVx1ODQ5ZVx1ODRiMlx1ODQ5Y1x1ODRjYlx1ODRiOFx1ODRjMFx1ODRkM1x1ODQ5MFx1ODRiY1x1ODRkMVx1ODRjYVx1ODczZlx1ODcxY1x1ODczYlx1ODcyMlx1ODcyNVx1ODczNFx1ODcxOFx1ODc1NVx1ODczN1x1ODcy''@;'; put 'put ''OVx1ODhmM1x1ODkwMlx1ODhmNFx1ODhmOVx1ODhmOFx1ODhmZFx1ODhlOFx1ODkxYVx1ODhlZlx1OGFhNlx1OGE4Y1x1OGE5ZVx1OGFhM1x1OGE4ZFx1OGFhMVx1OGE5M1x1OGFhNCJdLFsiYmJhMSIsIlx1OGFhYVx1OGFhNVx1OGFhOFx1OGE5OFx1OGE5MVx1OGE5YVx1OGFhN1x1OGM2YVx1''@;'; put 'put ''OGM4ZFx1OGM4Y1x1OGNkM1x1OGNkMVx1OGNkMlx1OGQ2Ylx1OGQ5OVx1OGQ5NVx1OGRmY1x1OGYxNFx1OGYxMlx1OGYxNVx1OGYxM1x1OGZhM1x1OTA2MFx1OTA1OFx1OTA1Y1x1OTA2M1x1OTA1OVx1OTA1ZVx1OTA2Mlx1OTA1ZFx1OTA1Ylx1OTExOVx1OTExOFx1OTExZVx1OTE3NVx1OTE3''@;'; put 'put ''OFx1OTE3N1x1OTE3NFx1OTI3OFx1OTI4MFx1OTI4NVx1OTI5OFx1OTI5Nlx1OTI3Ylx1OTI5M1x1OTI5Y1x1OTJhOFx1OTI3Y1x1OTI5MVx1OTVhMVx1OTVhOFx1OTVhOVx1OTVhM1x1OTVhNVx1OTVhNFx1OTY5OVx1OTY5Y1x1OTY5Ylx1OTZjY1x1OTZkMlx1OTcwMFx1OTc3Y1x1OTc4NVx1''@;'; put 'put ''OTdmNlx1OTgxN1x1OTgxOFx1OThhZlx1OThiMVx1OTkwM1x1OTkwNVx1OTkwY1x1OTkwOVx1OTljMVx1OWFhZlx1OWFiMFx1OWFlNlx1OWI0MVx1OWI0Mlx1OWNmNFx1OWNmNlx1OWNmM1x1OWViY1x1OWYzYlx1OWY0YVx1NTEwNFx1NTEwMFx1NTBmYlx1NTBmNVx1NTBmOVx1NTEwMlx1NTEw''@;'; put 'put ''OFx1NTEwOVx1NTEwNVx1NTFkYyJdLFsiYmM0MCIsIlx1NTI4N1x1NTI4OFx1NTI4OVx1NTI4ZFx1NTI4YVx1NTJmMFx1NTNiMlx1NTYyZVx1NTYzYlx1NTYzOVx1NTYzMlx1NTYzZlx1NTYzNFx1NTYyOVx1NTY1M1x1NTY0ZVx1NTY1N1x1NTY3NFx1NTYzNlx1NTYyZlx1NTYzMFx1NTg4MFx1''@;'; put 'put ''NTg5Zlx1NTg5ZVx1NThiM1x1NTg5Y1x1NThhZVx1NThhOVx1NThhNlx1NTk2ZFx1NWIwOVx1NWFmYlx1NWIwYlx1NWFmNVx1NWIwY1x1NWIwOFx1NWJlZVx1NWJlY1x1NWJlOVx1NWJlYlx1NWM2NFx1NWM2NVx1NWQ5ZFx1NWQ5NFx1NWU2Mlx1NWU1Zlx1NWU2MVx1NWVlMlx1NWVkYVx1NWVk''@;'; put 'put ''Zlx1NWVkZFx1NWVlM1x1NWVlMFx1NWY0OFx1NWY3MVx1NWZiN1x1NWZiNVx1NjE3Nlx1NjE2N1x1NjE2ZVx1NjE1ZFx1NjE1NVx1NjE4MiJdLFsiYmNhMSIsIlx1NjE3Y1x1NjE3MFx1NjE2Ylx1NjE3ZVx1NjFhN1x1NjE5MFx1NjFhYlx1NjE4ZVx1NjFhY1x1NjE5YVx1NjFhNFx1NjE5NFx1''@;'; put 'put ''NjFhZVx1NjIyZVx1NjQ2OVx1NjQ2Zlx1NjQ3OVx1NjQ5ZVx1NjRiMlx1NjQ4OFx1NjQ5MFx1NjRiMFx1NjRhNVx1NjQ5M1x1NjQ5NVx1NjRhOVx1NjQ5Mlx1NjRhZVx1NjRhZFx1NjRhYlx1NjQ5YVx1NjRhY1x1NjQ5OVx1NjRhMlx1NjRiM1x1NjU3NVx1NjU3N1x1NjU3OFx1NjZhZVx1NjZh''@;'; put 'put ''Ylx1NjZiNFx1NjZiMVx1NmEyM1x1NmExZlx1NjllOFx1NmEwMVx1NmExZVx1NmExOVx1NjlmZFx1NmEyMVx1NmExM1x1NmEwYVx1NjlmM1x1NmEwMlx1NmEwNVx1NjllZFx1NmExMVx1NmI1MFx1NmI0ZVx1NmJhNFx1NmJjNVx1NmJjNlx1NmYzZlx1NmY3Y1x1NmY4NFx1NmY1MVx1NmY2Nlx1''@;'; put 'put ''NmY1NFx1NmY4Nlx1NmY2ZFx1NmY1Ylx1NmY3OFx1NmY2ZVx1NmY4ZVx1NmY3YVx1NmY3MFx1NmY2NFx1NmY5N1x1NmY1OFx1NmVkNVx1NmY2Zlx1NmY2MFx1NmY1Zlx1NzE5Zlx1NzFhY1x1NzFiMVx1NzFhOFx1NzI1Nlx1NzI5Ylx1NzM0ZVx1NzM1N1x1NzQ2OVx1NzQ4Ylx1NzQ4MyJdLFsi''@;'; put 'put ''YmQ0MCIsIlx1NzQ3ZVx1NzQ4MFx1NzU3Zlx1NzYyMFx1NzYyOVx1NzYxZlx1NzYyNFx1NzYyNlx1NzYyMVx1NzYyMlx1NzY5YVx1NzZiYVx1NzZlNFx1Nzc4ZVx1Nzc4N1x1Nzc4Y1x1Nzc5MVx1Nzc4Ylx1NzhjYlx1NzhjNVx1NzhiYVx1NzhjYVx1NzhiZVx1NzhkNVx1NzhiY1x1NzhkMFx1''@;'; put 'put ''N2EzZlx1N2EzY1x1N2E0MFx1N2EzZFx1N2EzN1x1N2EzYlx1N2FhZlx1N2FhZVx1N2JhZFx1N2JiMVx1N2JjNFx1N2JiNFx1N2JjNlx1N2JjN1x1N2JjMVx1N2JhMFx1N2JjY1x1N2NjYVx1N2RlMFx1N2RmNFx1N2RlZlx1N2RmYlx1N2RkOFx1N2RlY1x1N2RkZFx1N2RlOFx1N2RlM1x1N2Rk''@;'; put 'put ''YVx1N2RkZVx1N2RlOVx1N2Q5ZVx1N2RkOVx1N2RmMlx1N2RmOVx1N2Y3NVx1N2Y3N1x1N2ZhZiJdLFsiYmRhMSIsIlx1N2ZlOVx1ODAyNlx1ODE5Ylx1ODE5Y1x1ODE5ZFx1ODFhMFx1ODE5YVx1ODE5OFx1ODUxN1x1ODUzZFx1ODUxYVx1ODRlZVx1ODUyY1x1ODUyZFx1ODUxM1x1ODUxMVx1''@;'; put 'put ''ODUyM1x1ODUyMVx1ODUxNFx1ODRlY1x1ODUyNVx1ODRmZlx1ODUwNlx1ODc4Mlx1ODc3NFx1ODc3Nlx1ODc2MFx1ODc2Nlx1ODc3OFx1ODc2OFx1ODc1OVx1ODc1N1x1ODc0Y1x1ODc1M1x1ODg1Ylx1ODg1ZFx1ODkxMFx1ODkwN1x1ODkxMlx1ODkxM1x1ODkxNVx1ODkwYVx1OGFiY1x1OGFk''@;'; put 'put ''Mlx1OGFjN1x1OGFjNFx1OGE5NVx1OGFjYlx1OGFmOFx1OGFiMlx1OGFjOVx1OGFjMlx1OGFiZlx1OGFiMFx1OGFkNlx1OGFjZFx1OGFiNlx1OGFiOVx1OGFkYlx1OGM0Y1x1OGM0ZVx1OGM2Y1x1OGNlMFx1OGNkZVx1OGNlNlx1OGNlNFx1OGNlY1x1OGNlZFx1OGNlMlx1OGNlM1x1OGNkY1x1''@;'; put 'put ''OGNlYVx1OGNlMVx1OGQ2ZFx1OGQ5Zlx1OGRhM1x1OGUyYlx1OGUxMFx1OGUxZFx1OGUyMlx1OGUwZlx1OGUyOVx1OGUxZlx1OGUyMVx1OGUxZVx1OGViYVx1OGYxZFx1OGYxYlx1OGYxZlx1OGYyOVx1OGYyNlx1OGYyYVx1OGYxY1x1OGYxZSJdLFsiYmU0MCIsIlx1OGYyNVx1OTA2OVx1OTA2''@;'; put 'put ''ZVx1OTA2OFx1OTA2ZFx1OTA3N1x1OTEzMFx1OTEyZFx1OTEyN1x1OTEzMVx1OTE4N1x1OTE4OVx1OTE4Ylx1OTE4M1x1OTJjNVx1OTJiYlx1OTJiN1x1OTJlYVx1OTJhY1x1OTJlNFx1OTJjMVx1OTJiM1x1OTJiY1x1OTJkMlx1OTJjN1x1OTJmMFx1OTJiMlx1OTVhZFx1OTViMVx1OTcwNFx1''@;'; put 'put ''OTcwNlx1OTcwN1x1OTcwOVx1OTc2MFx1OTc4ZFx1OTc4Ylx1OTc4Zlx1OTgyMVx1OTgyYlx1OTgxY1x1OThiM1x1OTkwYVx1OTkxM1x1OTkxMlx1OTkxOFx1OTlkZFx1OTlkMFx1OTlkZlx1OTlkYlx1OTlkMVx1OTlkNVx1OTlkMlx1OTlkOVx1OWFiN1x1OWFlZVx1OWFlZlx1OWIyN1x1OWI0''@;'; put 'put ''NVx1OWI0NFx1OWI3N1x1OWI2Zlx1OWQwNlx1OWQwOSJdLFsiYmVhMSIsIlx1OWQwM1x1OWVhOVx1OWViZVx1OWVjZVx1NThhOFx1OWY1Mlx1NTExMlx1NTExOFx1NTExNFx1NTExMFx1NTExNVx1NTE4MFx1NTFhYVx1NTFkZFx1NTI5MVx1NTI5M1x1NTJmM1x1NTY1OVx1NTY2Ylx1NTY3OVx1''@;'; put 'put ''NTY2OVx1NTY2NFx1NTY3OFx1NTY2YVx1NTY2OFx1NTY2NVx1NTY3MVx1NTY2Zlx1NTY2Y1x1NTY2Mlx1NTY3Nlx1NThjMVx1NThiZVx1NThjN1x1NThjNVx1NTk2ZVx1NWIxZFx1NWIzNFx1NWI3OFx1NWJmMFx1NWMwZVx1NWY0YVx1NjFiMlx1NjE5MVx1NjFhOVx1NjE4YVx1NjFjZFx1NjFi''@;'; put 'put ''Nlx1NjFiZVx1NjFjYVx1NjFjOFx1NjIzMFx1NjRjNVx1NjRjMVx1NjRjYlx1NjRiYlx1NjRiY1x1NjRkYVx1NjRjNFx1NjRjN1x1NjRjMlx1NjRjZFx1NjRiZlx1NjRkMlx1NjRkNFx1NjRiZVx1NjU3NFx1NjZjNlx1NjZjOVx1NjZiOVx1NjZjNFx1NjZjN1x1NjZiOFx1NmEzZFx1NmEzOFx1''@;'; put 'put ''NmEzYVx1NmE1OVx1NmE2Ylx1NmE1OFx1NmEzOVx1NmE0NFx1NmE2Mlx1NmE2MVx1NmE0Ylx1NmE0N1x1NmEzNVx1NmE1Zlx1NmE0OFx1NmI1OVx1NmI3N1x1NmMwNVx1NmZjMlx1NmZiMVx1NmZhMSJdLFsiYmY0MCIsIlx1NmZjM1x1NmZhNFx1NmZjMVx1NmZhN1x1NmZiM1x1NmZjMFx1NmZi''@;'; put 'put ''OVx1NmZiNlx1NmZhNlx1NmZhMFx1NmZiNFx1NzFiZVx1NzFjOVx1NzFkMFx1NzFkMlx1NzFjOFx1NzFkNVx1NzFiOVx1NzFjZVx1NzFkOVx1NzFkY1x1NzFjM1x1NzFjNFx1NzM2OFx1NzQ5Y1x1NzRhM1x1NzQ5OFx1NzQ5Zlx1NzQ5ZVx1NzRlMlx1NzUwY1x1NzUwZFx1NzYzNFx1NzYzOFx1''@;'; put 'put ''NzYzYVx1NzZlN1x1NzZlNVx1NzdhMFx1Nzc5ZVx1Nzc5Zlx1NzdhNVx1NzhlOFx1NzhkYVx1NzhlY1x1NzhlN1x1NzlhNlx1N2E0ZFx1N2E0ZVx1N2E0Nlx1N2E0Y1x1N2E0Ylx1N2FiYVx1N2JkOVx1N2MxMVx1N2JjOVx1N2JlNFx1N2JkYlx1N2JlMVx1N2JlOVx1N2JlNlx1N2NkNVx1N2Nk''@;'; put 'put ''Nlx1N2UwYSJdLFsiYmZhMSIsIlx1N2UxMVx1N2UwOFx1N2UxYlx1N2UyM1x1N2UxZVx1N2UxZFx1N2UwOVx1N2UxMFx1N2Y3OVx1N2ZiMlx1N2ZmMFx1N2ZmMVx1N2ZlZVx1ODAyOFx1ODFiM1x1ODFhOVx1ODFhOFx1ODFmYlx1ODIwOFx1ODI1OFx1ODI1OVx1ODU0YVx1ODU1OVx1ODU0OFx1''@;'; put 'put ''ODU2OFx1ODU2OVx1ODU0M1x1ODU0OVx1ODU2ZFx1ODU2YVx1ODU1ZVx1ODc4M1x1ODc5Zlx1ODc5ZVx1ODdhMlx1ODc4ZFx1ODg2MVx1ODkyYVx1ODkzMlx1ODkyNVx1ODkyYlx1ODkyMVx1ODlhYVx1ODlhNlx1OGFlNlx1OGFmYVx1OGFlYlx1OGFmMVx1OGIwMFx1OGFkY1x1OGFlN1x1OGFl''@;'; put 'put ''ZVx1OGFmZVx1OGIwMVx1OGIwMlx1OGFmN1x1OGFlZFx1OGFmM1x1OGFmNlx1OGFmY1x1OGM2Ylx1OGM2ZFx1OGM5M1x1OGNmNFx1OGU0NFx1OGUzMVx1OGUzNFx1OGU0Mlx1OGUzOVx1OGUzNVx1OGYzYlx1OGYyZlx1OGYzOFx1OGYzM1x1OGZhOFx1OGZhNlx1OTA3NVx1OTA3NFx1OTA3OFx1''@;'; put 'put ''OTA3Mlx1OTA3Y1x1OTA3YVx1OTEzNFx1OTE5Mlx1OTMyMFx1OTMzNlx1OTJmOFx1OTMzM1x1OTMyZlx1OTMyMlx1OTJmY1x1OTMyYlx1OTMwNFx1OTMxYSJdLFsiYzA0MCIsIlx1OTMxMFx1OTMyNlx1OTMyMVx1OTMxNVx1OTMyZVx1OTMxOVx1OTViYlx1OTZhN1x1OTZhOFx1OTZhYVx1OTZk''@;'; put 'put ''NVx1OTcwZVx1OTcxMVx1OTcxNlx1OTcwZFx1OTcxM1x1OTcwZlx1OTc1Ylx1OTc1Y1x1OTc2Nlx1OTc5OFx1OTgzMFx1OTgzOFx1OTgzYlx1OTgzN1x1OTgyZFx1OTgzOVx1OTgyNFx1OTkxMFx1OTkyOFx1OTkxZVx1OTkxYlx1OTkyMVx1OTkxYVx1OTllZFx1OTllMlx1OTlmMVx1OWFiOFx1''@;'; put 'put ''OWFiY1x1OWFmYlx1OWFlZFx1OWIyOFx1OWI5MVx1OWQxNVx1OWQyM1x1OWQyNlx1OWQyOFx1OWQxMlx1OWQxYlx1OWVkOFx1OWVkNFx1OWY4ZFx1OWY5Y1x1NTEyYVx1NTExZlx1NTEyMVx1NTEzMlx1NTJmNVx1NTY4ZVx1NTY4MFx1NTY5MFx1NTY4NVx1NTY4NyJdLFsiYzBhMSIsIlx1NTY4''@;'; put 'put ''Zlx1NThkNVx1NThkM1x1NThkMVx1NThjZVx1NWIzMFx1NWIyYVx1NWIyNFx1NWI3YVx1NWMzN1x1NWM2OFx1NWRiY1x1NWRiYVx1NWRiZFx1NWRiOFx1NWU2Ylx1NWY0Y1x1NWZiZFx1NjFjOVx1NjFjMlx1NjFjN1x1NjFlNlx1NjFjYlx1NjIzMlx1NjIzNFx1NjRjZVx1NjRjYVx1NjRkOFx1''@;'; put 'put ''NjRlMFx1NjRmMFx1NjRlNlx1NjRlY1x1NjRmMVx1NjRlMlx1NjRlZFx1NjU4Mlx1NjU4M1x1NjZkOVx1NjZkNlx1NmE4MFx1NmE5NFx1NmE4NFx1NmFhMlx1NmE5Y1x1NmFkYlx1NmFhM1x1NmE3ZVx1NmE5N1x1NmE5MFx1NmFhMFx1NmI1Y1x1NmJhZVx1NmJkYVx1NmMwOFx1NmZkOFx1NmZm''@;'; put 'put ''MVx1NmZkZlx1NmZlMFx1NmZkYlx1NmZlNFx1NmZlYlx1NmZlZlx1NmY4MFx1NmZlY1x1NmZlMVx1NmZlOVx1NmZkNVx1NmZlZVx1NmZmMFx1NzFlN1x1NzFkZlx1NzFlZVx1NzFlNlx1NzFlNVx1NzFlZFx1NzFlY1x1NzFmNFx1NzFlMFx1NzIzNVx1NzI0Nlx1NzM3MFx1NzM3Mlx1NzRhOVx1''@;'; put 'put ''NzRiMFx1NzRhNlx1NzRhOFx1NzY0Nlx1NzY0Mlx1NzY0Y1x1NzZlYVx1NzdiM1x1NzdhYVx1NzdiMFx1NzdhYyJdLFsiYzE0MCIsIlx1NzdhN1x1NzdhZFx1NzdlZlx1NzhmN1x1NzhmYVx1NzhmNFx1NzhlZlx1NzkwMVx1NzlhN1x1NzlhYVx1N2E1N1x1N2FiZlx1N2MwN1x1N2MwZFx1N2Jm''@;'; put 'put ''ZVx1N2JmN1x1N2MwY1x1N2JlMFx1N2NlMFx1N2NkY1x1N2NkZVx1N2NlMlx1N2NkZlx1N2NkOVx1N2NkZFx1N2UyZVx1N2UzZVx1N2U0Nlx1N2UzN1x1N2UzMlx1N2U0M1x1N2UyYlx1N2UzZFx1N2UzMVx1N2U0NVx1N2U0MVx1N2UzNFx1N2UzOVx1N2U0OFx1N2UzNVx1N2UzZlx1N2UyZlx1''@;'; put 'put ''N2Y0NFx1N2ZmM1x1N2ZmY1x1ODA3MVx1ODA3Mlx1ODA3MFx1ODA2Zlx1ODA3M1x1ODFjNlx1ODFjM1x1ODFiYVx1ODFjMlx1ODFjMFx1ODFiZlx1ODFiZFx1ODFjOVx1ODFiZVx1ODFlOFx1ODIwOVx1ODI3MVx1ODVhYSJdLFsiYzFhMSIsIlx1ODU4NFx1ODU3ZVx1ODU5Y1x1ODU5MVx1ODU5''@;'; put 'put ''NFx1ODVhZlx1ODU5Ylx1ODU4N1x1ODVhOFx1ODU4YVx1ODY2N1x1ODdjMFx1ODdkMVx1ODdiM1x1ODdkMlx1ODdjNlx1ODdhYlx1ODdiYlx1ODdiYVx1ODdjOFx1ODdjYlx1ODkzYlx1ODkzNlx1ODk0NFx1ODkzOFx1ODkzZFx1ODlhY1x1OGIwZVx1OGIxN1x1OGIxOVx1OGIxYlx1OGIwYVx1''@;'; put 'put ''OGIyMFx1OGIxZFx1OGIwNFx1OGIxMFx1OGM0MVx1OGMzZlx1OGM3M1x1OGNmYVx1OGNmZFx1OGNmY1x1OGNmOFx1OGNmYlx1OGRhOFx1OGU0OVx1OGU0Ylx1OGU0OFx1OGU0YVx1OGY0NFx1OGYzZVx1OGY0Mlx1OGY0NVx1OGYzZlx1OTA3Zlx1OTA3ZFx1OTA4NFx1OTA4MVx1OTA4Mlx1OTA4''@;'; put 'put ''MFx1OTEzOVx1OTFhM1x1OTE5ZVx1OTE5Y1x1OTM0ZFx1OTM4Mlx1OTMyOFx1OTM3NVx1OTM0YVx1OTM2NVx1OTM0Ylx1OTMxOFx1OTM3ZVx1OTM2Y1x1OTM1Ylx1OTM3MFx1OTM1YVx1OTM1NFx1OTVjYVx1OTVjYlx1OTVjY1x1OTVjOFx1OTVjNlx1OTZiMVx1OTZiOFx1OTZkNlx1OTcxY1x1''@;'; put 'put ''OTcxZVx1OTdhMFx1OTdkM1x1OTg0Nlx1OThiNlx1OTkzNVx1OWEwMSJdLFsiYzI0MCIsIlx1OTlmZlx1OWJhZVx1OWJhYlx1OWJhYVx1OWJhZFx1OWQzYlx1OWQzZlx1OWU4Ylx1OWVjZlx1OWVkZVx1OWVkY1x1OWVkZFx1OWVkYlx1OWYzZVx1OWY0Ylx1NTNlMlx1NTY5NVx1NTZhZVx1NThk''@;'; put 'put ''OVx1NThkOFx1NWIzOFx1NWY1ZFx1NjFlM1x1NjIzM1x1NjRmNFx1NjRmMlx1NjRmZVx1NjUwNlx1NjRmYVx1NjRmYlx1NjRmN1x1NjViN1x1NjZkY1x1NjcyNlx1NmFiM1x1NmFhY1x1NmFjM1x1NmFiYlx1NmFiOFx1NmFjMlx1NmFhZVx1NmFhZlx1NmI1Zlx1NmI3OFx1NmJhZlx1NzAwOVx1''@;'; put 'put ''NzAwYlx1NmZmZVx1NzAwNlx1NmZmYVx1NzAxMVx1NzAwZlx1NzFmYlx1NzFmY1x1NzFmZVx1NzFmOFx1NzM3N1x1NzM3NVx1NzRhN1x1NzRiZlx1NzUxNVx1NzY1Nlx1NzY1OCJdLFsiYzJhMSIsIlx1NzY1Mlx1NzdiZFx1NzdiZlx1NzdiYlx1NzdiY1x1NzkwZVx1NzlhZVx1N2E2MVx1N2E2''@;'; put 'put ''Mlx1N2E2MFx1N2FjNFx1N2FjNVx1N2MyYlx1N2MyN1x1N2MyYVx1N2MxZVx1N2MyM1x1N2MyMVx1N2NlN1x1N2U1NFx1N2U1NVx1N2U1ZVx1N2U1YVx1N2U2MVx1N2U1Mlx1N2U1OVx1N2Y0OFx1N2ZmOVx1N2ZmYlx1ODA3N1x1ODA3Nlx1ODFjZFx1ODFjZlx1ODIwYVx1ODVjZlx1ODVhOVx1''@;'; put 'put ''ODVjZFx1ODVkMFx1ODVjOVx1ODViMFx1ODViYVx1ODViOVx1ODVhNlx1ODdlZlx1ODdlY1x1ODdmMlx1ODdlMFx1ODk4Nlx1ODliMlx1ODlmNFx1OGIyOFx1OGIzOVx1OGIyY1x1OGIyYlx1OGM1MFx1OGQwNVx1OGU1OVx1OGU2M1x1OGU2Nlx1OGU2NFx1OGU1Zlx1OGU1NVx1OGVjMFx1OGY0''@;'; put 'put ''OVx1OGY0ZFx1OTA4N1x1OTA4M1x1OTA4OFx1OTFhYlx1OTFhY1x1OTFkMFx1OTM5NFx1OTM4YVx1OTM5Nlx1OTNhMlx1OTNiM1x1OTNhZVx1OTNhY1x1OTNiMFx1OTM5OFx1OTM5YVx1OTM5N1x1OTVkNFx1OTVkNlx1OTVkMFx1OTVkNVx1OTZlMlx1OTZkY1x1OTZkOVx1OTZkYlx1OTZkZVx1''@;'; put 'put ''OTcyNFx1OTdhM1x1OTdhNiJdLFsiYzM0MCIsIlx1OTdhZFx1OTdmOVx1OTg0ZFx1OTg0Zlx1OTg0Y1x1OTg0ZVx1OTg1M1x1OThiYVx1OTkzZVx1OTkzZlx1OTkzZFx1OTkyZVx1OTlhNVx1OWEwZVx1OWFjMVx1OWIwM1x1OWIwNlx1OWI0Zlx1OWI0ZVx1OWI0ZFx1OWJjYVx1OWJjOVx1OWJm''@;'; put 'put ''ZFx1OWJjOFx1OWJjMFx1OWQ1MVx1OWQ1ZFx1OWQ2MFx1OWVlMFx1OWYxNVx1OWYyY1x1NTEzM1x1NTZhNVx1NThkZVx1NThkZlx1NThlMlx1NWJmNVx1OWY5MFx1NWVlY1x1NjFmMlx1NjFmN1x1NjFmNlx1NjFmNVx1NjUwMFx1NjUwZlx1NjZlMFx1NjZkZFx1NmFlNVx1NmFkZFx1NmFkYVx1''@;'; put 'put ''NmFkM1x1NzAxYlx1NzAxZlx1NzAyOFx1NzAxYVx1NzAxZFx1NzAxNVx1NzAxOFx1NzIwNlx1NzIwZFx1NzI1OFx1NzJhMlx1NzM3OCJdLFsiYzNhMSIsIlx1NzM3YVx1NzRiZFx1NzRjYVx1NzRlM1x1NzU4N1x1NzU4Nlx1NzY1Zlx1NzY2MVx1NzdjN1x1NzkxOVx1NzliMVx1N2E2Ylx1N2E2''@;'; put 'put ''OVx1N2MzZVx1N2MzZlx1N2MzOFx1N2MzZFx1N2MzN1x1N2M0MFx1N2U2Ylx1N2U2ZFx1N2U3OVx1N2U2OVx1N2U2YVx1N2Y4NVx1N2U3M1x1N2ZiNlx1N2ZiOVx1N2ZiOFx1ODFkOFx1ODVlOVx1ODVkZFx1ODVlYVx1ODVkNVx1ODVlNFx1ODVlNVx1ODVmN1x1ODdmYlx1ODgwNVx1ODgwZFx1''@;'; put 'put ''ODdmOVx1ODdmZVx1ODk2MFx1ODk1Zlx1ODk1Nlx1ODk1ZVx1OGI0MVx1OGI1Y1x1OGI1OFx1OGI0OVx1OGI1YVx1OGI0ZVx1OGI0Zlx1OGI0Nlx1OGI1OVx1OGQwOFx1OGQwYVx1OGU3Y1x1OGU3Mlx1OGU4N1x1OGU3Nlx1OGU2Y1x1OGU3YVx1OGU3NFx1OGY1NFx1OGY0ZVx1OGZhZFx1OTA4''@;'; put 'put ''YVx1OTA4Ylx1OTFiMVx1OTFhZVx1OTNlMVx1OTNkMVx1OTNkZlx1OTNjM1x1OTNjOFx1OTNkY1x1OTNkZFx1OTNkNlx1OTNlMlx1OTNjZFx1OTNkOFx1OTNlNFx1OTNkN1x1OTNlOFx1OTVkY1x1OTZiNFx1OTZlM1x1OTcyYVx1OTcyN1x1OTc2MVx1OTdkY1x1OTdmYlx1OTg1ZSJdLFsiYzQ0''@;'; put 'put ''MCIsIlx1OTg1OFx1OTg1Ylx1OThiY1x1OTk0NVx1OTk0OVx1OWExNlx1OWExOVx1OWIwZFx1OWJlOFx1OWJlN1x1OWJkNlx1OWJkYlx1OWQ4OVx1OWQ2MVx1OWQ3Mlx1OWQ2YVx1OWQ2Y1x1OWU5Mlx1OWU5N1x1OWU5M1x1OWViNFx1NTJmOFx1NTZhOFx1NTZiN1x1NTZiNlx1NTZiNFx1NTZi''@;'; put 'put ''Y1x1NThlNFx1NWI0MFx1NWI0M1x1NWI3ZFx1NWJmNlx1NWRjOVx1NjFmOFx1NjFmYVx1NjUxOFx1NjUxNFx1NjUxOVx1NjZlNlx1NjcyN1x1NmFlY1x1NzAzZVx1NzAzMFx1NzAzMlx1NzIxMFx1NzM3Ylx1NzRjZlx1NzY2Mlx1NzY2NVx1NzkyNlx1NzkyYVx1NzkyY1x1NzkyYlx1N2FjN1x1''@;'; put 'put ''N2FmNlx1N2M0Y1x1N2M0M1x1N2M0ZFx1N2NlZlx1N2NmMFx1OGZhZVx1N2U3ZFx1N2U3YyJdLFsiYzRhMSIsIlx1N2U4Mlx1N2Y0Y1x1ODAwMFx1ODFkYVx1ODI2Nlx1ODVmYlx1ODVmOVx1ODYxMVx1ODVmYVx1ODYwNlx1ODYwYlx1ODYwN1x1ODYwYVx1ODgxNFx1ODgxNVx1ODk2NFx1ODli''@;'; put 'put ''YVx1ODlmOFx1OGI3MFx1OGI2Y1x1OGI2Nlx1OGI2Zlx1OGI1Zlx1OGI2Ylx1OGQwZlx1OGQwZFx1OGU4OVx1OGU4MVx1OGU4NVx1OGU4Mlx1OTFiNFx1OTFjYlx1OTQxOFx1OTQwM1x1OTNmZFx1OTVlMVx1OTczMFx1OThjNFx1OTk1Mlx1OTk1MVx1OTlhOFx1OWEyYlx1OWEzMFx1OWEzN1x1''@;'; put 'put ''OWEzNVx1OWMxM1x1OWMwZFx1OWU3OVx1OWViNVx1OWVlOFx1OWYyZlx1OWY1Zlx1OWY2M1x1OWY2MVx1NTEzN1x1NTEzOFx1NTZjMVx1NTZjMFx1NTZjMlx1NTkxNFx1NWM2Y1x1NWRjZFx1NjFmY1x1NjFmZVx1NjUxZFx1NjUxY1x1NjU5NVx1NjZlOVx1NmFmYlx1NmIwNFx1NmFmYVx1NmJi''@;'; put 'put ''Mlx1NzA0Y1x1NzIxYlx1NzJhN1x1NzRkNlx1NzRkNFx1NzY2OVx1NzdkM1x1N2M1MFx1N2U4Zlx1N2U4Y1x1N2ZiY1x1ODYxN1x1ODYyZFx1ODYxYVx1ODgyM1x1ODgyMlx1ODgyMVx1ODgxZlx1ODk2YVx1ODk2Y1x1ODliZFx1OGI3NCJdLFsiYzU0MCIsIlx1OGI3N1x1OGI3ZFx1OGQxM1x1''@;'; put 'put ''OGU4YVx1OGU4ZFx1OGU4Ylx1OGY1Zlx1OGZhZlx1OTFiYVx1OTQyZVx1OTQzM1x1OTQzNVx1OTQzYVx1OTQzOFx1OTQzMlx1OTQyYlx1OTVlMlx1OTczOFx1OTczOVx1OTczMlx1OTdmZlx1OTg2N1x1OTg2NVx1OTk1N1x1OWE0NVx1OWE0M1x1OWE0MFx1OWEzZVx1OWFjZlx1OWI1NFx1OWI1''@;'; put 'put ''MVx1OWMyZFx1OWMyNVx1OWRhZlx1OWRiNFx1OWRjMlx1OWRiOFx1OWU5ZFx1OWVlZlx1OWYxOVx1OWY1Y1x1OWY2Nlx1OWY2N1x1NTEzY1x1NTEzYlx1NTZjOFx1NTZjYVx1NTZjOVx1NWI3Zlx1NWRkNFx1NWRkMlx1NWY0ZVx1NjFmZlx1NjUyNFx1NmIwYVx1NmI2MVx1NzA1MVx1NzA1OFx1''@;'; put 'put ''NzM4MFx1NzRlNFx1NzU4YVx1NzY2ZVx1NzY2YyJdLFsiYzVhMSIsIlx1NzliM1x1N2M2MFx1N2M1Zlx1ODA3ZVx1ODA3ZFx1ODFkZlx1ODk3Mlx1ODk2Zlx1ODlmY1x1OGI4MFx1OGQxNlx1OGQxN1x1OGU5MVx1OGU5M1x1OGY2MVx1OTE0OFx1OTQ0NFx1OTQ1MVx1OTQ1Mlx1OTczZFx1OTcz''@;'; put 'put ''ZVx1OTdjM1x1OTdjMVx1OTg2Ylx1OTk1NVx1OWE1NVx1OWE0ZFx1OWFkMlx1OWIxYVx1OWM0OVx1OWMzMVx1OWMzZVx1OWMzYlx1OWRkM1x1OWRkN1x1OWYzNFx1OWY2Y1x1OWY2YVx1OWY5NFx1NTZjY1x1NWRkNlx1NjIwMFx1NjUyM1x1NjUyYlx1NjUyYVx1NjZlY1x1NmIxMFx1NzRkYVx1''@;'; put 'put ''N2FjYVx1N2M2NFx1N2M2M1x1N2M2NVx1N2U5M1x1N2U5Nlx1N2U5NFx1ODFlMlx1ODYzOFx1ODYzZlx1ODgzMVx1OGI4YVx1OTA5MFx1OTA4Zlx1OTQ2M1x1OTQ2MFx1OTQ2NFx1OTc2OFx1OTg2Zlx1OTk1Y1x1OWE1YVx1OWE1Ylx1OWE1N1x1OWFkM1x1OWFkNFx1OWFkMVx1OWM1NFx1OWM1''@;'; put 'put ''N1x1OWM1Nlx1OWRlNVx1OWU5Zlx1OWVmNFx1NTZkMVx1NThlOVx1NjUyY1x1NzA1ZVx1NzY3MVx1NzY3Mlx1NzdkN1x1N2Y1MFx1N2Y4OFx1ODgzNlx1ODgzOVx1ODg2Mlx1OGI5M1x1OGI5MiJdLFsiYzY0MCIsIlx1OGI5Nlx1ODI3N1x1OGQxYlx1OTFjMFx1OTQ2YVx1OTc0Mlx1OTc0OFx1''@;'; put 'put ''OTc0NFx1OTdjNlx1OTg3MFx1OWE1Zlx1OWIyMlx1OWI1OFx1OWM1Zlx1OWRmOVx1OWRmYVx1OWU3Y1x1OWU3ZFx1OWYwN1x1OWY3N1x1OWY3Mlx1NWVmM1x1NmIxNlx1NzA2M1x1N2M2Y1x1N2M2ZVx1ODgzYlx1ODljMFx1OGVhMVx1OTFjMVx1OTQ3Mlx1OTQ3MFx1OTg3MVx1OTk1ZVx1OWFk''@;'; put 'put ''Nlx1OWIyM1x1OWVjY1x1NzA2NFx1NzdkYVx1OGI5YVx1OTQ3N1x1OTdjOVx1OWE2Mlx1OWE2NVx1N2U5Y1x1OGI5Y1x1OGVhYVx1OTFjNVx1OTQ3ZFx1OTQ3ZVx1OTQ3Y1x1OWM3N1x1OWM3OFx1OWVmN1x1OGM1NFx1OTQ3Zlx1OWUxYVx1NzIyOFx1OWE2YVx1OWIzMVx1OWUxYlx1OWUxZVx1''@;'; put 'put ''N2M3MiJdLFsiYzk0MCIsIlx1NGU0Mlx1NGU1Y1x1NTFmNVx1NTMxYVx1NTM4Mlx1NGUwN1x1NGUwY1x1NGU0N1x1NGU4ZFx1NTZkN1x1ZmEwY1x1NWM2ZVx1NWY3M1x1NGUwZlx1NTE4N1x1NGUwZVx1NGUyZVx1NGU5M1x1NGVjMlx1NGVjOVx1NGVjOFx1NTE5OFx1NTJmY1x1NTM2Y1x1NTNi''@;'; put 'put ''OVx1NTcyMFx1NTkwM1x1NTkyY1x1NWMxMFx1NWRmZlx1NjVlMVx1NmJiM1x1NmJjY1x1NmMxNFx1NzIzZlx1NGUzMVx1NGUzY1x1NGVlOFx1NGVkY1x1NGVlOVx1NGVlMVx1NGVkZFx1NGVkYVx1NTIwY1x1NTMxY1x1NTM0Y1x1NTcyMlx1NTcyM1x1NTkxN1x1NTkyZlx1NWI4MVx1NWI4NFx1''@;'; put 'put ''NWMxMlx1NWMzYlx1NWM3NFx1NWM3M1x1NWUwNFx1NWU4MFx1NWU4Mlx1NWZjOVx1NjIwOVx1NjI1MFx1NmMxNSJdLFsiYzlhMSIsIlx1NmMzNlx1NmM0M1x1NmMzZlx1NmMzYlx1NzJhZVx1NzJiMFx1NzM4YVx1NzliOFx1ODA4YVx1OTYxZVx1NGYwZVx1NGYxOFx1NGYyY1x1NGVmNVx1NGYx''@;'; put 'put ''NFx1NGVmMVx1NGYwMFx1NGVmN1x1NGYwOFx1NGYxZFx1NGYwMlx1NGYwNVx1NGYyMlx1NGYxM1x1NGYwNFx1NGVmNFx1NGYxMlx1NTFiMVx1NTIxM1x1NTIwOVx1NTIxMFx1NTJhNlx1NTMyMlx1NTMxZlx1NTM0ZFx1NTM4YVx1NTQwN1x1NTZlMVx1NTZkZlx1NTcyZVx1NTcyYVx1NTczNFx1''@;'; put 'put ''NTkzY1x1NTk4MFx1NTk3Y1x1NTk4NVx1NTk3Ylx1NTk3ZVx1NTk3N1x1NTk3Zlx1NWI1Nlx1NWMxNVx1NWMyNVx1NWM3Y1x1NWM3YVx1NWM3Ylx1NWM3ZVx1NWRkZlx1NWU3NVx1NWU4NFx1NWYwMlx1NWYxYVx1NWY3NFx1NWZkNVx1NWZkNFx1NWZjZlx1NjI1Y1x1NjI1ZVx1NjI2NFx1NjI2''@;'; put 'put ''MVx1NjI2Nlx1NjI2Mlx1NjI1OVx1NjI2MFx1NjI1YVx1NjI2NVx1NjVlZlx1NjVlZVx1NjczZVx1NjczOVx1NjczOFx1NjczYlx1NjczYVx1NjczZlx1NjczY1x1NjczM1x1NmMxOFx1NmM0Nlx1NmM1Mlx1NmM1Y1x1NmM0Zlx1NmM0YVx1NmM1NFx1NmM0YiJdLFsiY2E0MCIsIlx1NmM0Y1x1''@;'; put 'put ''NzA3MVx1NzI1ZVx1NzJiNFx1NzJiNVx1NzM4ZVx1NzUyYVx1NzY3Zlx1N2E3NVx1N2Y1MVx1ODI3OFx1ODI3Y1x1ODI4MFx1ODI3ZFx1ODI3Zlx1ODY0ZFx1ODk3ZVx1OTA5OVx1OTA5N1x1OTA5OFx1OTA5Ylx1OTA5NFx1OTYyMlx1OTYyNFx1OTYyMFx1OTYyM1x1NGY1Nlx1NGYzYlx1NGY2''@;'; put 'put ''Mlx1NGY0OVx1NGY1M1x1NGY2NFx1NGYzZVx1NGY2N1x1NGY1Mlx1NGY1Zlx1NGY0MVx1NGY1OFx1NGYyZFx1NGYzM1x1NGYzZlx1NGY2MVx1NTE4Zlx1NTFiOVx1NTIxY1x1NTIxZVx1NTIyMVx1NTJhZFx1NTJhZVx1NTMwOVx1NTM2M1x1NTM3Mlx1NTM4ZVx1NTM4Zlx1NTQzMFx1NTQzN1x1''@;'; put 'put ''NTQyYVx1NTQ1NFx1NTQ0NVx1NTQxOVx1NTQxY1x1NTQyNVx1NTQxOCJdLFsiY2FhMSIsIlx1NTQzZFx1NTQ0Zlx1NTQ0MVx1NTQyOFx1NTQyNFx1NTQ0N1x1NTZlZVx1NTZlN1x1NTZlNVx1NTc0MVx1NTc0NVx1NTc0Y1x1NTc0OVx1NTc0Ylx1NTc1Mlx1NTkwNlx1NTk0MFx1NTlhNlx1NTk5''@;'; put 'put ''OFx1NTlhMFx1NTk5N1x1NTk4ZVx1NTlhMlx1NTk5MFx1NTk4Zlx1NTlhN1x1NTlhMVx1NWI4ZVx1NWI5Mlx1NWMyOFx1NWMyYVx1NWM4ZFx1NWM4Zlx1NWM4OFx1NWM4Ylx1NWM4OVx1NWM5Mlx1NWM4YVx1NWM4Nlx1NWM5M1x1NWM5NVx1NWRlMFx1NWUwYVx1NWUwZVx1NWU4Ylx1NWU4OVx1''@;'; put 'put ''NWU4Y1x1NWU4OFx1NWU4ZFx1NWYwNVx1NWYxZFx1NWY3OFx1NWY3Nlx1NWZkMlx1NWZkMVx1NWZkMFx1NWZlZFx1NWZlOFx1NWZlZVx1NWZmM1x1NWZlMVx1NWZlNFx1NWZlM1x1NWZmYVx1NWZlZlx1NWZmN1x1NWZmYlx1NjAwMFx1NWZmNFx1NjIzYVx1NjI4M1x1NjI4Y1x1NjI4ZVx1NjI4''@;'; put 'put ''Zlx1NjI5NFx1NjI4N1x1NjI3MVx1NjI3Ylx1NjI3YVx1NjI3MFx1NjI4MVx1NjI4OFx1NjI3N1x1NjI3ZFx1NjI3Mlx1NjI3NFx1NjUzN1x1NjVmMFx1NjVmNFx1NjVmM1x1NjVmMlx1NjVmNVx1Njc0NVx1Njc0NyJdLFsiY2I0MCIsIlx1Njc1OVx1Njc1NVx1Njc0Y1x1Njc0OFx1Njc1ZFx1''@;'; put 'put ''Njc0ZFx1Njc1YVx1Njc0Ylx1NmJkMFx1NmMxOVx1NmMxYVx1NmM3OFx1NmM2N1x1NmM2Ylx1NmM4NFx1NmM4Ylx1NmM4Zlx1NmM3MVx1NmM2Zlx1NmM2OVx1NmM5YVx1NmM2ZFx1NmM4N1x1NmM5NVx1NmM5Y1x1NmM2Nlx1NmM3M1x1NmM2NVx1NmM3Ylx1NmM4ZVx1NzA3NFx1NzA3YVx1NzI2''@;'; put 'put ''M1x1NzJiZlx1NzJiZFx1NzJjM1x1NzJjNlx1NzJjMVx1NzJiYVx1NzJjNVx1NzM5NVx1NzM5N1x1NzM5M1x1NzM5NFx1NzM5Mlx1NzUzYVx1NzUzOVx1NzU5NFx1NzU5NVx1NzY4MVx1NzkzZFx1ODAzNFx1ODA5NVx1ODA5OVx1ODA5MFx1ODA5Mlx1ODA5Y1x1ODI5MFx1ODI4Zlx1ODI4NVx1''@;'; put 'put ''ODI4ZVx1ODI5MVx1ODI5MyJdLFsiY2JhMSIsIlx1ODI4YVx1ODI4M1x1ODI4NFx1OGM3OFx1OGZjOVx1OGZiZlx1OTA5Zlx1OTBhMVx1OTBhNVx1OTA5ZVx1OTBhN1x1OTBhMFx1OTYzMFx1OTYyOFx1OTYyZlx1OTYyZFx1NGUzM1x1NGY5OFx1NGY3Y1x1NGY4NVx1NGY3ZFx1NGY4MFx1NGY4''@;'; put 'put ''N1x1NGY3Nlx1NGY3NFx1NGY4OVx1NGY4NFx1NGY3N1x1NGY0Y1x1NGY5N1x1NGY2YVx1NGY5YVx1NGY3OVx1NGY4MVx1NGY3OFx1NGY5MFx1NGY5Y1x1NGY5NFx1NGY5ZVx1NGY5Mlx1NGY4Mlx1NGY5NVx1NGY2Ylx1NGY2ZVx1NTE5ZVx1NTFiY1x1NTFiZVx1NTIzNVx1NTIzMlx1NTIzM1x1''@;'; put 'put ''NTI0Nlx1NTIzMVx1NTJiY1x1NTMwYVx1NTMwYlx1NTMzY1x1NTM5Mlx1NTM5NFx1NTQ4N1x1NTQ3Zlx1NTQ4MVx1NTQ5MVx1NTQ4Mlx1NTQ4OFx1NTQ2Ylx1NTQ3YVx1NTQ3ZVx1NTQ2NVx1NTQ2Y1x1NTQ3NFx1NTQ2Nlx1NTQ4ZFx1NTQ2Zlx1NTQ2MVx1NTQ2MFx1NTQ5OFx1NTQ2M1x1NTQ2''@;'; put 'put ''N1x1NTQ2NFx1NTZmN1x1NTZmOVx1NTc2Zlx1NTc3Mlx1NTc2ZFx1NTc2Ylx1NTc3MVx1NTc3MFx1NTc3Nlx1NTc4MFx1NTc3NVx1NTc3Ylx1NTc3M1x1NTc3NFx1NTc2MiJdLFsiY2M0MCIsIlx1NTc2OFx1NTc3ZFx1NTkwY1x1NTk0NVx1NTliNVx1NTliYVx1NTljZlx1NTljZVx1NTliMlx1''@;'; put 'put ''NTljY1x1NTljMVx1NTliNlx1NTliY1x1NTljM1x1NTlkNlx1NTliMVx1NTliZFx1NTljMFx1NTljOFx1NTliNFx1NTljN1x1NWI2Mlx1NWI2NVx1NWI5M1x1NWI5NVx1NWM0NFx1NWM0N1x1NWNhZVx1NWNhNFx1NWNhMFx1NWNiNVx1NWNhZlx1NWNhOFx1NWNhY1x1NWM5Zlx1NWNhM1x1NWNh''@;'; put 'put ''ZFx1NWNhMlx1NWNhYVx1NWNhN1x1NWM5ZFx1NWNhNVx1NWNiNlx1NWNiMFx1NWNhNlx1NWUxN1x1NWUxNFx1NWUxOVx1NWYyOFx1NWYyMlx1NWYyM1x1NWYyNFx1NWY1NFx1NWY4Mlx1NWY3ZVx1NWY3ZFx1NWZkZVx1NWZlNVx1NjAyZFx1NjAyNlx1NjAxOVx1NjAzMlx1NjAwYiJdLFsiY2Nh''@;'; put 'put ''MSIsIlx1NjAzNFx1NjAwYVx1NjAxN1x1NjAzM1x1NjAxYVx1NjAxZVx1NjAyY1x1NjAyMlx1NjAwZFx1NjAxMFx1NjAyZVx1NjAxM1x1NjAxMVx1NjAwY1x1NjAwOVx1NjAxY1x1NjIxNFx1NjIzZFx1NjJhZFx1NjJiNFx1NjJkMVx1NjJiZVx1NjJhYVx1NjJiNlx1NjJjYVx1NjJhZVx1NjJi''@;'; put 'put ''M1x1NjJhZlx1NjJiYlx1NjJhOVx1NjJiMFx1NjJiOFx1NjUzZFx1NjVhOFx1NjViYlx1NjYwOVx1NjVmY1x1NjYwNFx1NjYxMlx1NjYwOFx1NjVmYlx1NjYwM1x1NjYwYlx1NjYwZFx1NjYwNVx1NjVmZFx1NjYxMVx1NjYxMFx1NjZmNlx1NjcwYVx1Njc4NVx1Njc2Y1x1Njc4ZVx1Njc5Mlx1''@;'; put 'put ''Njc3Nlx1Njc3Ylx1Njc5OFx1Njc4Nlx1Njc4NFx1Njc3NFx1Njc4ZFx1Njc4Y1x1Njc3YVx1Njc5Zlx1Njc5MVx1Njc5OVx1Njc4M1x1Njc3ZFx1Njc4MVx1Njc3OFx1Njc3OVx1Njc5NFx1NmIyNVx1NmI4MFx1NmI3ZVx1NmJkZVx1NmMxZFx1NmM5M1x1NmNlY1x1NmNlYlx1NmNlZVx1NmNk''@;'; put 'put ''OVx1NmNiNlx1NmNkNFx1NmNhZFx1NmNlN1x1NmNiN1x1NmNkMFx1NmNjMlx1NmNiYVx1NmNjM1x1NmNjNlx1NmNlZFx1NmNmMiJdLFsiY2Q0MCIsIlx1NmNkMlx1NmNkZFx1NmNiNFx1NmM4YVx1NmM5ZFx1NmM4MFx1NmNkZVx1NmNjMFx1NmQzMFx1NmNjZFx1NmNjN1x1NmNiMFx1NmNmOVx1''@;'; put 'put ''NmNjZlx1NmNlOVx1NmNkMVx1NzA5NFx1NzA5OFx1NzA4NVx1NzA5M1x1NzA4Nlx1NzA4NFx1NzA5MVx1NzA5Nlx1NzA4Mlx1NzA5YVx1NzA4M1x1NzI2YVx1NzJkNlx1NzJjYlx1NzJkOFx1NzJjOVx1NzJkY1x1NzJkMlx1NzJkNFx1NzJkYVx1NzJjY1x1NzJkMVx1NzNhNFx1NzNhMVx1NzNh''@;'; put 'put ''ZFx1NzNhNlx1NzNhMlx1NzNhMFx1NzNhY1x1NzM5ZFx1NzRkZFx1NzRlOFx1NzUzZlx1NzU0MFx1NzUzZVx1NzU4Y1x1NzU5OFx1NzZhZlx1NzZmM1x1NzZmMVx1NzZmMFx1NzZmNVx1NzdmOFx1NzdmY1x1NzdmOVx1NzdmYlx1NzdmYSJdLFsiY2RhMSIsIlx1NzdmN1x1Nzk0Mlx1NzkzZlx1''@;'; put 'put ''NzljNVx1N2E3OFx1N2E3Ylx1N2FmYlx1N2M3NVx1N2NmZFx1ODAzNVx1ODA4Zlx1ODBhZVx1ODBhM1x1ODBiOFx1ODBiNVx1ODBhZFx1ODIyMFx1ODJhMFx1ODJjMFx1ODJhYlx1ODI5YVx1ODI5OFx1ODI5Ylx1ODJiNVx1ODJhN1x1ODJhZVx1ODJiY1x1ODI5ZVx1ODJiYVx1ODJiNFx1ODJh''@;'; put 'put ''OFx1ODJhMVx1ODJhOVx1ODJjMlx1ODJhNFx1ODJjM1x1ODJiNlx1ODJhMlx1ODY3MFx1ODY2Zlx1ODY2ZFx1ODY2ZVx1OGM1Nlx1OGZkMlx1OGZjYlx1OGZkM1x1OGZjZFx1OGZkNlx1OGZkNVx1OGZkN1x1OTBiMlx1OTBiNFx1OTBhZlx1OTBiM1x1OTBiMFx1OTYzOVx1OTYzZFx1OTYzY1x1''@;'; put 'put ''OTYzYVx1OTY0M1x1NGZjZFx1NGZjNVx1NGZkM1x1NGZiMlx1NGZjOVx1NGZjYlx1NGZjMVx1NGZkNFx1NGZkY1x1NGZkOVx1NGZiYlx1NGZiM1x1NGZkYlx1NGZjN1x1NGZkNlx1NGZiYVx1NGZjMFx1NGZiOVx1NGZlY1x1NTI0NFx1NTI0OVx1NTJjMFx1NTJjMlx1NTMzZFx1NTM3Y1x1NTM5''@;'; put 'put ''N1x1NTM5Nlx1NTM5OVx1NTM5OFx1NTRiYVx1NTRhMVx1NTRhZFx1NTRhNVx1NTRjZiJdLFsiY2U0MCIsIlx1NTRjM1x1ODMwZFx1NTRiN1x1NTRhZVx1NTRkNlx1NTRiNlx1NTRjNVx1NTRjNlx1NTRhMFx1NTQ3MFx1NTRiY1x1NTRhMlx1NTRiZVx1NTQ3Mlx1NTRkZVx1NTRiMFx1NTdiNVx1''@;'; put 'put ''NTc5ZVx1NTc5Zlx1NTdhNFx1NTc4Y1x1NTc5N1x1NTc5ZFx1NTc5Ylx1NTc5NFx1NTc5OFx1NTc4Zlx1NTc5OVx1NTdhNVx1NTc5YVx1NTc5NVx1NThmNFx1NTkwZFx1NTk1M1x1NTllMVx1NTlkZVx1NTllZVx1NWEwMFx1NTlmMVx1NTlkZFx1NTlmYVx1NTlmZFx1NTlmY1x1NTlmNlx1NTll''@;'; put 'put ''NFx1NTlmMlx1NTlmN1x1NTlkYlx1NTllOVx1NTlmM1x1NTlmNVx1NTllMFx1NTlmZVx1NTlmNFx1NTllZFx1NWJhOFx1NWM0Y1x1NWNkMFx1NWNkOFx1NWNjY1x1NWNkN1x1NWNjYlx1NWNkYiJdLFsiY2VhMSIsIlx1NWNkZVx1NWNkYVx1NWNjOVx1NWNjN1x1NWNjYVx1NWNkNlx1NWNkM1x1''@;'; put 'put ''NWNkNFx1NWNjZlx1NWNjOFx1NWNjNlx1NWNjZVx1NWNkZlx1NWNmOFx1NWRmOVx1NWUyMVx1NWUyMlx1NWUyM1x1NWUyMFx1NWUyNFx1NWViMFx1NWVhNFx1NWVhMlx1NWU5Ylx1NWVhM1x1NWVhNVx1NWYwN1x1NWYyZVx1NWY1Nlx1NWY4Nlx1NjAzN1x1NjAzOVx1NjA1NFx1NjA3Mlx1NjA1''@;'; put 'put ''ZVx1NjA0NVx1NjA1M1x1NjA0N1x1NjA0OVx1NjA1Ylx1NjA0Y1x1NjA0MFx1NjA0Mlx1NjA1Zlx1NjAyNFx1NjA0NFx1NjA1OFx1NjA2Nlx1NjA2ZVx1NjI0Mlx1NjI0M1x1NjJjZlx1NjMwZFx1NjMwYlx1NjJmNVx1NjMwZVx1NjMwM1x1NjJlYlx1NjJmOVx1NjMwZlx1NjMwY1x1NjJmOFx1''@;'; put 'put ''NjJmNlx1NjMwMFx1NjMxM1x1NjMxNFx1NjJmYVx1NjMxNVx1NjJmYlx1NjJmMFx1NjU0MVx1NjU0M1x1NjVhYVx1NjViZlx1NjYzNlx1NjYyMVx1NjYzMlx1NjYzNVx1NjYxY1x1NjYyNlx1NjYyMlx1NjYzM1x1NjYyYlx1NjYzYVx1NjYxZFx1NjYzNFx1NjYzOVx1NjYyZVx1NjcwZlx1Njcx''@;'; put 'put ''MFx1NjdjMVx1NjdmMlx1NjdjOFx1NjdiYSJdLFsiY2Y0MCIsIlx1NjdkY1x1NjdiYlx1NjdmOFx1NjdkOFx1NjdjMFx1NjdiN1x1NjdjNVx1NjdlYlx1NjdlNFx1NjdkZlx1NjdiNVx1NjdjZFx1NjdiM1x1NjdmN1x1NjdmNlx1NjdlZVx1NjdlM1x1NjdjMlx1NjdiOVx1NjdjZVx1NjdlN1x1''@;'; put 'put ''NjdmMFx1NjdiMlx1NjdmY1x1NjdjNlx1NjdlZFx1NjdjY1x1NjdhZVx1NjdlNlx1NjdkYlx1NjdmYVx1NjdjOVx1NjdjYVx1NjdjM1x1NjdlYVx1NjdjYlx1NmIyOFx1NmI4Mlx1NmI4NFx1NmJiNlx1NmJkNlx1NmJkOFx1NmJlMFx1NmMyMFx1NmMyMVx1NmQyOFx1NmQzNFx1NmQyZFx1NmQx''@;'; put 'put ''Zlx1NmQzY1x1NmQzZlx1NmQxMlx1NmQwYVx1NmNkYVx1NmQzM1x1NmQwNFx1NmQxOVx1NmQzYVx1NmQxYVx1NmQxMVx1NmQwMFx1NmQxZFx1NmQ0MiJdLFsiY2ZhMSIsIlx1NmQwMVx1NmQxOFx1NmQzN1x1NmQwM1x1NmQwZlx1NmQ0MFx1NmQwN1x1NmQyMFx1NmQyY1x1NmQwOFx1NmQyMlx1''@;'; put 'put ''NmQwOVx1NmQxMFx1NzBiN1x1NzA5Zlx1NzBiZVx1NzBiMVx1NzBiMFx1NzBhMVx1NzBiNFx1NzBiNVx1NzBhOVx1NzI0MVx1NzI0OVx1NzI0YVx1NzI2Y1x1NzI3MFx1NzI3M1x1NzI2ZVx1NzJjYVx1NzJlNFx1NzJlOFx1NzJlYlx1NzJkZlx1NzJlYVx1NzJlNlx1NzJlM1x1NzM4NVx1NzNj''@;'; put 'put ''Y1x1NzNjMlx1NzNjOFx1NzNjNVx1NzNiOVx1NzNiNlx1NzNiNVx1NzNiNFx1NzNlYlx1NzNiZlx1NzNjN1x1NzNiZVx1NzNjM1x1NzNjNlx1NzNiOFx1NzNjYlx1NzRlY1x1NzRlZVx1NzUyZVx1NzU0N1x1NzU0OFx1NzVhN1x1NzVhYVx1NzY3OVx1NzZjNFx1NzcwOFx1NzcwM1x1NzcwNFx1''@;'; put 'put ''NzcwNVx1NzcwYVx1NzZmN1x1NzZmYlx1NzZmYVx1NzdlN1x1NzdlOFx1NzgwNlx1NzgxMVx1NzgxMlx1NzgwNVx1NzgxMFx1NzgwZlx1NzgwZVx1NzgwOVx1NzgwM1x1NzgxM1x1Nzk0YVx1Nzk0Y1x1Nzk0Ylx1Nzk0NVx1Nzk0NFx1NzlkNVx1NzljZFx1NzljZlx1NzlkNlx1NzljZVx1N2E4''@;'; put 'put ''MCJdLFsiZDA0MCIsIlx1N2E3ZVx1N2FkMVx1N2IwMFx1N2IwMVx1N2M3YVx1N2M3OFx1N2M3OVx1N2M3Zlx1N2M4MFx1N2M4MVx1N2QwM1x1N2QwOFx1N2QwMVx1N2Y1OFx1N2Y5MVx1N2Y4ZFx1N2ZiZVx1ODAwN1x1ODAwZVx1ODAwZlx1ODAxNFx1ODAzN1x1ODBkOFx1ODBjN1x1ODBlMFx1''@;'; put 'put ''ODBkMVx1ODBjOFx1ODBjMlx1ODBkMFx1ODBjNVx1ODBlM1x1ODBkOVx1ODBkY1x1ODBjYVx1ODBkNVx1ODBjOVx1ODBjZlx1ODBkN1x1ODBlNlx1ODBjZFx1ODFmZlx1ODIyMVx1ODI5NFx1ODJkOVx1ODJmZVx1ODJmOVx1ODMwN1x1ODJlOFx1ODMwMFx1ODJkNVx1ODMzYVx1ODJlYlx1ODJk''@;'; put 'put ''Nlx1ODJmNFx1ODJlY1x1ODJlMVx1ODJmMlx1ODJmNVx1ODMwY1x1ODJmYlx1ODJmNlx1ODJmMFx1ODJlYSJdLFsiZDBhMSIsIlx1ODJlNFx1ODJlMFx1ODJmYVx1ODJmM1x1ODJlZFx1ODY3N1x1ODY3NFx1ODY3Y1x1ODY3M1x1ODg0MVx1ODg0ZVx1ODg2N1x1ODg2YVx1ODg2OVx1ODlkM1x1''@;'; put 'put ''OGEwNFx1OGEwN1x1OGQ3Mlx1OGZlM1x1OGZlMVx1OGZlZVx1OGZlMFx1OTBmMVx1OTBiZFx1OTBiZlx1OTBkNVx1OTBjNVx1OTBiZVx1OTBjN1x1OTBjYlx1OTBjOFx1OTFkNFx1OTFkM1x1OTY1NFx1OTY0Zlx1OTY1MVx1OTY1M1x1OTY0YVx1OTY0ZVx1NTAxZVx1NTAwNVx1NTAwN1x1NTAx''@;'; put 'put ''M1x1NTAyMlx1NTAzMFx1NTAxYlx1NGZmNVx1NGZmNFx1NTAzM1x1NTAzN1x1NTAyY1x1NGZmNlx1NGZmN1x1NTAxN1x1NTAxY1x1NTAyMFx1NTAyN1x1NTAzNVx1NTAyZlx1NTAzMVx1NTAwZVx1NTE1YVx1NTE5NFx1NTE5M1x1NTFjYVx1NTFjNFx1NTFjNVx1NTFjOFx1NTFjZVx1NTI2MVx1''@;'; put 'put ''NTI1YVx1NTI1Mlx1NTI1ZVx1NTI1Zlx1NTI1NVx1NTI2Mlx1NTJjZFx1NTMwZVx1NTM5ZVx1NTUyNlx1NTRlMlx1NTUxN1x1NTUxMlx1NTRlN1x1NTRmM1x1NTRlNFx1NTUxYVx1NTRmZlx1NTUwNFx1NTUwOFx1NTRlYlx1NTUxMVx1NTUwNVx1NTRmMSJdLFsiZDE0MCIsIlx1NTUwYVx1NTRm''@;'; put 'put ''Ylx1NTRmN1x1NTRmOFx1NTRlMFx1NTUwZVx1NTUwM1x1NTUwYlx1NTcwMVx1NTcwMlx1NTdjY1x1NTgzMlx1NTdkNVx1NTdkMlx1NTdiYVx1NTdjNlx1NTdiZFx1NTdiY1x1NTdiOFx1NTdiNlx1NTdiZlx1NTdjN1x1NTdkMFx1NTdiOVx1NTdjMVx1NTkwZVx1NTk0YVx1NWExOVx1NWExNlx1''@;'; put 'put ''NWEyZFx1NWEyZVx1NWExNVx1NWEwZlx1NWExN1x1NWEwYVx1NWExZVx1NWEzM1x1NWI2Y1x1NWJhN1x1NWJhZFx1NWJhY1x1NWMwM1x1NWM1Nlx1NWM1NFx1NWNlY1x1NWNmZlx1NWNlZVx1NWNmMVx1NWNmN1x1NWQwMFx1NWNmOVx1NWUyOVx1NWUyOFx1NWVhOFx1NWVhZVx1NWVhYVx1NWVh''@;'; put 'put ''Y1x1NWYzM1x1NWYzMFx1NWY2N1x1NjA1ZFx1NjA1YVx1NjA2NyJdLFsiZDFhMSIsIlx1NjA0MVx1NjBhMlx1NjA4OFx1NjA4MFx1NjA5Mlx1NjA4MVx1NjA5ZFx1NjA4M1x1NjA5NVx1NjA5Ylx1NjA5N1x1NjA4N1x1NjA5Y1x1NjA4ZVx1NjIxOVx1NjI0Nlx1NjJmMlx1NjMxMFx1NjM1Nlx1''@;'; put 'put ''NjMyY1x1NjM0NFx1NjM0NVx1NjMzNlx1NjM0M1x1NjNlNFx1NjMzOVx1NjM0Ylx1NjM0YVx1NjMzY1x1NjMyOVx1NjM0MVx1NjMzNFx1NjM1OFx1NjM1NFx1NjM1OVx1NjMyZFx1NjM0N1x1NjMzM1x1NjM1YVx1NjM1MVx1NjMzOFx1NjM1N1x1NjM0MFx1NjM0OFx1NjU0YVx1NjU0Nlx1NjVj''@;'; put 'put ''Nlx1NjVjM1x1NjVjNFx1NjVjMlx1NjY0YVx1NjY1Zlx1NjY0N1x1NjY1MVx1NjcxMlx1NjcxM1x1NjgxZlx1NjgxYVx1Njg0OVx1NjgzMlx1NjgzM1x1NjgzYlx1Njg0Ylx1Njg0Zlx1NjgxNlx1NjgzMVx1NjgxY1x1NjgzNVx1NjgyYlx1NjgyZFx1NjgyZlx1Njg0ZVx1Njg0NFx1NjgzNFx1''@;'; put 'put ''NjgxZFx1NjgxMlx1NjgxNFx1NjgyNlx1NjgyOFx1NjgyZVx1Njg0ZFx1NjgzYVx1NjgyNVx1NjgyMFx1NmIyY1x1NmIyZlx1NmIyZFx1NmIzMVx1NmIzNFx1NmI2ZFx1ODA4Mlx1NmI4OFx1NmJlNlx1NmJlNCJdLFsiZDI0MCIsIlx1NmJlOFx1NmJlM1x1NmJlMlx1NmJlN1x1NmMyNVx1NmQ3''@;'; put 'put ''YVx1NmQ2M1x1NmQ2NFx1NmQ3Nlx1NmQwZFx1NmQ2MVx1NmQ5Mlx1NmQ1OFx1NmQ2Mlx1NmQ2ZFx1NmQ2Zlx1NmQ5MVx1NmQ4ZFx1NmRlZlx1NmQ3Zlx1NmQ4Nlx1NmQ1ZVx1NmQ2N1x1NmQ2MFx1NmQ5N1x1NmQ3MFx1NmQ3Y1x1NmQ1Zlx1NmQ4Mlx1NmQ5OFx1NmQyZlx1NmQ2OFx1NmQ4Ylx1''@;'; put 'put ''NmQ3ZVx1NmQ4MFx1NmQ4NFx1NmQxNlx1NmQ4M1x1NmQ3Ylx1NmQ3ZFx1NmQ3NVx1NmQ5MFx1NzBkY1x1NzBkM1x1NzBkMVx1NzBkZFx1NzBjYlx1N2YzOVx1NzBlMlx1NzBkN1x1NzBkMlx1NzBkZVx1NzBlMFx1NzBkNFx1NzBjZFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBkYVx1NzBjZVx1NzBl''@;'; put 'put ''MVx1NzI0Mlx1NzI3OCJdLFsiZDJhMSIsIlx1NzI3N1x1NzI3Nlx1NzMwMFx1NzJmYVx1NzJmNFx1NzJmZVx1NzJmNlx1NzJmM1x1NzJmYlx1NzMwMVx1NzNkM1x1NzNkOVx1NzNlNVx1NzNkNlx1NzNiY1x1NzNlN1x1NzNlM1x1NzNlOVx1NzNkY1x1NzNkMlx1NzNkYlx1NzNkNFx1NzNkZFx1''@;'; put 'put ''NzNkYVx1NzNkN1x1NzNkOFx1NzNlOFx1NzRkZVx1NzRkZlx1NzRmNFx1NzRmNVx1NzUyMVx1NzU1Ylx1NzU1Zlx1NzViMFx1NzVjMVx1NzViYlx1NzVjNFx1NzVjMFx1NzViZlx1NzViNlx1NzViYVx1NzY4YVx1NzZjOVx1NzcxZFx1NzcxYlx1NzcxMFx1NzcxM1x1NzcxMlx1NzcyM1x1Nzcx''@;'; put 'put ''MVx1NzcxNVx1NzcxOVx1NzcxYVx1NzcyMlx1NzcyN1x1NzgyM1x1NzgyY1x1NzgyMlx1NzgzNVx1NzgyZlx1NzgyOFx1NzgyZVx1NzgyYlx1NzgyMVx1NzgyOVx1NzgzM1x1NzgyYVx1NzgzMVx1Nzk1NFx1Nzk1Ylx1Nzk0Zlx1Nzk1Y1x1Nzk1M1x1Nzk1Mlx1Nzk1MVx1NzllYlx1NzllY1x1''@;'; put 'put ''NzllMFx1NzllZVx1NzllZFx1NzllYVx1NzlkY1x1NzlkZVx1NzlkZFx1N2E4Nlx1N2E4OVx1N2E4NVx1N2E4Ylx1N2E4Y1x1N2E4YVx1N2E4N1x1N2FkOFx1N2IxMCJdLFsiZDM0MCIsIlx1N2IwNFx1N2IxM1x1N2IwNVx1N2IwZlx1N2IwOFx1N2IwYVx1N2IwZVx1N2IwOVx1N2IxMlx1N2M4''@;'; put 'put ''NFx1N2M5MVx1N2M4YVx1N2M4Y1x1N2M4OFx1N2M4ZFx1N2M4NVx1N2QxZVx1N2QxZFx1N2QxMVx1N2QwZVx1N2QxOFx1N2QxNlx1N2QxM1x1N2QxZlx1N2QxMlx1N2QwZlx1N2QwY1x1N2Y1Y1x1N2Y2MVx1N2Y1ZVx1N2Y2MFx1N2Y1ZFx1N2Y1Ylx1N2Y5Nlx1N2Y5Mlx1N2ZjM1x1N2ZjMlx1''@;'; put 'put ''N2ZjMFx1ODAxNlx1ODAzZVx1ODAzOVx1ODBmYVx1ODBmMlx1ODBmOVx1ODBmNVx1ODEwMVx1ODBmYlx1ODEwMFx1ODIwMVx1ODIyZlx1ODIyNVx1ODMzM1x1ODMyZFx1ODM0NFx1ODMxOVx1ODM1MVx1ODMyNVx1ODM1Nlx1ODMzZlx1ODM0MVx1ODMyNlx1ODMxY1x1ODMyMiJdLFsiZDNhMSIs''@;'; put 'put ''Ilx1ODM0Mlx1ODM0ZVx1ODMxYlx1ODMyYVx1ODMwOFx1ODMzY1x1ODM0ZFx1ODMxNlx1ODMyNFx1ODMyMFx1ODMzN1x1ODMyZlx1ODMyOVx1ODM0N1x1ODM0NVx1ODM0Y1x1ODM1M1x1ODMxZVx1ODMyY1x1ODM0Ylx1ODMyN1x1ODM0OFx1ODY1M1x1ODY1Mlx1ODZhMlx1ODZhOFx1ODY5Nlx1''@;'; put 'put ''ODY4ZFx1ODY5MVx1ODY5ZVx1ODY4N1x1ODY5N1x1ODY4Nlx1ODY4Ylx1ODY5YVx1ODY4NVx1ODZhNVx1ODY5OVx1ODZhMVx1ODZhN1x1ODY5NVx1ODY5OFx1ODY4ZVx1ODY5ZFx1ODY5MFx1ODY5NFx1ODg0M1x1ODg0NFx1ODg2ZFx1ODg3NVx1ODg3Nlx1ODg3Mlx1ODg4MFx1ODg3MVx1ODg3''@;'; put 'put ''Zlx1ODg2Zlx1ODg4M1x1ODg3ZVx1ODg3NFx1ODg3Y1x1OGExMlx1OGM0N1x1OGM1N1x1OGM3Ylx1OGNhNFx1OGNhM1x1OGQ3Nlx1OGQ3OFx1OGRiNVx1OGRiN1x1OGRiNlx1OGVkMVx1OGVkM1x1OGZmZVx1OGZmNVx1OTAwMlx1OGZmZlx1OGZmYlx1OTAwNFx1OGZmY1x1OGZmNlx1OTBkNlx1''@;'; put 'put ''OTBlMFx1OTBkOVx1OTBkYVx1OTBlM1x1OTBkZlx1OTBlNVx1OTBkOFx1OTBkYlx1OTBkN1x1OTBkY1x1OTBlNFx1OTE1MCJdLFsiZDQ0MCIsIlx1OTE0ZVx1OTE0Zlx1OTFkNVx1OTFlMlx1OTFkYVx1OTY1Y1x1OTY1Zlx1OTZiY1x1OThlM1x1OWFkZlx1OWIyZlx1NGU3Zlx1NTA3MFx1NTA2''@;'; put 'put ''YVx1NTA2MVx1NTA1ZVx1NTA2MFx1NTA1M1x1NTA0Ylx1NTA1ZFx1NTA3Mlx1NTA0OFx1NTA0ZFx1NTA0MVx1NTA1Ylx1NTA0YVx1NTA2Mlx1NTAxNVx1NTA0NVx1NTA1Zlx1NTA2OVx1NTA2Ylx1NTA2M1x1NTA2NFx1NTA0Nlx1NTA0MFx1NTA2ZVx1NTA3M1x1NTA1N1x1NTA1MVx1NTFkMFx1''@;'; put 'put ''NTI2Ylx1NTI2ZFx1NTI2Y1x1NTI2ZVx1NTJkNlx1NTJkM1x1NTMyZFx1NTM5Y1x1NTU3NVx1NTU3Nlx1NTUzY1x1NTU0ZFx1NTU1MFx1NTUzNFx1NTUyYVx1NTU1MVx1NTU2Mlx1NTUzNlx1NTUzNVx1NTUzMFx1NTU1Mlx1NTU0NSJdLFsiZDRhMSIsIlx1NTUwY1x1NTUzMlx1NTU2NVx1NTU0''@;'; put 'put ''ZVx1NTUzOVx1NTU0OFx1NTUyZFx1NTUzYlx1NTU0MFx1NTU0Ylx1NTcwYVx1NTcwN1x1NTdmYlx1NTgxNFx1NTdlMlx1NTdmNlx1NTdkY1x1NTdmNFx1NTgwMFx1NTdlZFx1NTdmZFx1NTgwOFx1NTdmOFx1NTgwYlx1NTdmM1x1NTdjZlx1NTgwN1x1NTdlZVx1NTdlM1x1NTdmMlx1NTdlNVx1''@;'; put 'put ''NTdlY1x1NTdlMVx1NTgwZVx1NTdmY1x1NTgxMFx1NTdlN1x1NTgwMVx1NTgwY1x1NTdmMVx1NTdlOVx1NTdmMFx1NTgwZFx1NTgwNFx1NTk1Y1x1NWE2MFx1NWE1OFx1NWE1NVx1NWE2N1x1NWE1ZVx1NWEzOFx1NWEzNVx1NWE2ZFx1NWE1MFx1NWE1Zlx1NWE2NVx1NWE2Y1x1NWE1M1x1NWE2''@;'; put 'put ''NFx1NWE1N1x1NWE0M1x1NWE1ZFx1NWE1Mlx1NWE0NFx1NWE1Ylx1NWE0OFx1NWE4ZVx1NWEzZVx1NWE0ZFx1NWEzOVx1NWE0Y1x1NWE3MFx1NWE2OVx1NWE0N1x1NWE1MVx1NWE1Nlx1NWE0Mlx1NWE1Y1x1NWI3Mlx1NWI2ZVx1NWJjMVx1NWJjMFx1NWM1OVx1NWQxZVx1NWQwYlx1NWQxZFx1''@;'; put 'put ''NWQxYVx1NWQyMFx1NWQwY1x1NWQyOFx1NWQwZFx1NWQyNlx1NWQyNVx1NWQwZiJdLFsiZDU0MCIsIlx1NWQzMFx1NWQxMlx1NWQyM1x1NWQxZlx1NWQyZVx1NWUzZVx1NWUzNFx1NWViMVx1NWViNFx1NWViOVx1NWViMlx1NWViM1x1NWYzNlx1NWYzOFx1NWY5Ylx1NWY5Nlx1NWY5Zlx1NjA4''@;'; put 'put ''YVx1NjA5MFx1NjA4Nlx1NjBiZVx1NjBiMFx1NjBiYVx1NjBkM1x1NjBkNFx1NjBjZlx1NjBlNFx1NjBkOVx1NjBkZFx1NjBjOFx1NjBiMVx1NjBkYlx1NjBiN1x1NjBjYVx1NjBiZlx1NjBjM1x1NjBjZFx1NjBjMFx1NjMzMlx1NjM2NVx1NjM4YVx1NjM4Mlx1NjM3ZFx1NjNiZFx1NjM5ZVx1''@;'; put 'put ''NjNhZFx1NjM5ZFx1NjM5N1x1NjNhYlx1NjM4ZVx1NjM2Zlx1NjM4N1x1NjM5MFx1NjM2ZVx1NjNhZlx1NjM3NVx1NjM5Y1x1NjM2ZFx1NjNhZVx1NjM3Y1x1NjNhNFx1NjMzYlx1NjM5ZiJdLFsiZDVhMSIsIlx1NjM3OFx1NjM4NVx1NjM4MVx1NjM5MVx1NjM4ZFx1NjM3MFx1NjU1M1x1NjVj''@;'; put 'put ''ZFx1NjY2NVx1NjY2MVx1NjY1Ylx1NjY1OVx1NjY1Y1x1NjY2Mlx1NjcxOFx1Njg3OVx1Njg4N1x1Njg5MFx1Njg5Y1x1Njg2ZFx1Njg2ZVx1NjhhZVx1NjhhYlx1Njk1Nlx1Njg2Zlx1NjhhM1x1NjhhY1x1NjhhOVx1Njg3NVx1Njg3NFx1NjhiMlx1Njg4Zlx1Njg3N1x1Njg5Mlx1Njg3Y1x1''@;'; put 'put ''Njg2Ylx1Njg3Mlx1NjhhYVx1Njg4MFx1Njg3MVx1Njg3ZVx1Njg5Ylx1Njg5Nlx1Njg4Ylx1NjhhMFx1Njg4OVx1NjhhNFx1Njg3OFx1Njg3Ylx1Njg5MVx1Njg4Y1x1Njg4YVx1Njg3ZFx1NmIzNlx1NmIzM1x1NmIzN1x1NmIzOFx1NmI5MVx1NmI4Zlx1NmI4ZFx1NmI4ZVx1NmI4Y1x1NmMy''@;'; put 'put ''YVx1NmRjMFx1NmRhYlx1NmRiNFx1NmRiM1x1NmU3NFx1NmRhY1x1NmRlOVx1NmRlMlx1NmRiN1x1NmRmNlx1NmRkNFx1NmUwMFx1NmRjOFx1NmRlMFx1NmRkZlx1NmRkNlx1NmRiZVx1NmRlNVx1NmRkY1x1NmRkZFx1NmRkYlx1NmRmNFx1NmRjYVx1NmRiZFx1NmRlZFx1NmRmMFx1NmRiYVx1''@;'; put 'put ''NmRkNVx1NmRjMlx1NmRjZlx1NmRjOSJdLFsiZDY0MCIsIlx1NmRkMFx1NmRmMlx1NmRkM1x1NmRmZFx1NmRkN1x1NmRjZFx1NmRlM1x1NmRiYlx1NzBmYVx1NzEwZFx1NzBmN1x1NzExN1x1NzBmNFx1NzEwY1x1NzBmMFx1NzEwNFx1NzBmM1x1NzExMFx1NzBmY1x1NzBmZlx1NzEwNlx1NzEx''@;'; put 'put ''M1x1NzEwMFx1NzBmOFx1NzBmNlx1NzEwYlx1NzEwMlx1NzEwZVx1NzI3ZVx1NzI3Ylx1NzI3Y1x1NzI3Zlx1NzMxZFx1NzMxN1x1NzMwN1x1NzMxMVx1NzMxOFx1NzMwYVx1NzMwOFx1NzJmZlx1NzMwZlx1NzMxZVx1NzM4OFx1NzNmNlx1NzNmOFx1NzNmNVx1NzQwNFx1NzQwMVx1NzNmZFx1''@;'; put 'put ''NzQwN1x1NzQwMFx1NzNmYVx1NzNmY1x1NzNmZlx1NzQwY1x1NzQwYlx1NzNmNFx1NzQwOFx1NzU2NFx1NzU2M1x1NzVjZVx1NzVkMlx1NzVjZiJdLFsiZDZhMSIsIlx1NzVjYlx1NzVjY1x1NzVkMVx1NzVkMFx1NzY4Zlx1NzY4OVx1NzZkM1x1NzczOVx1NzcyZlx1NzcyZFx1NzczMVx1Nzcz''@;'; put 'put ''Mlx1NzczNFx1NzczM1x1NzczZFx1NzcyNVx1NzczYlx1NzczNVx1Nzg0OFx1Nzg1Mlx1Nzg0OVx1Nzg0ZFx1Nzg0YVx1Nzg0Y1x1NzgyNlx1Nzg0NVx1Nzg1MFx1Nzk2NFx1Nzk2N1x1Nzk2OVx1Nzk2YVx1Nzk2M1x1Nzk2Ylx1Nzk2MVx1NzliYlx1NzlmYVx1NzlmOFx1NzlmNlx1NzlmN1x1''@;'; put 'put ''N2E4Zlx1N2E5NFx1N2E5MFx1N2IzNVx1N2I0N1x1N2IzNFx1N2IyNVx1N2IzMFx1N2IyMlx1N2IyNFx1N2IzM1x1N2IxOFx1N2IyYVx1N2IxZFx1N2IzMVx1N2IyYlx1N2IyZFx1N2IyZlx1N2IzMlx1N2IzOFx1N2IxYVx1N2IyM1x1N2M5NFx1N2M5OFx1N2M5Nlx1N2NhM1x1N2QzNVx1N2Qz''@;'; put 'put ''ZFx1N2QzOFx1N2QzNlx1N2QzYVx1N2Q0NVx1N2QyY1x1N2QyOVx1N2Q0MVx1N2Q0N1x1N2QzZVx1N2QzZlx1N2Q0YVx1N2QzYlx1N2QyOFx1N2Y2M1x1N2Y5NVx1N2Y5Y1x1N2Y5ZFx1N2Y5Ylx1N2ZjYVx1N2ZjYlx1N2ZjZFx1N2ZkMFx1N2ZkMVx1N2ZjN1x1N2ZjZlx1N2ZjOVx1ODAxZiJd''@;'; put 'put ''LFsiZDc0MCIsIlx1ODAxZVx1ODAxYlx1ODA0N1x1ODA0M1x1ODA0OFx1ODExOFx1ODEyNVx1ODExOVx1ODExYlx1ODEyZFx1ODExZlx1ODEyY1x1ODExZVx1ODEyMVx1ODExNVx1ODEyN1x1ODExZFx1ODEyMlx1ODIxMVx1ODIzOFx1ODIzM1x1ODIzYVx1ODIzNFx1ODIzMlx1ODI3NFx1ODM5''@;'; put 'put ''MFx1ODNhM1x1ODNhOFx1ODM4ZFx1ODM3YVx1ODM3M1x1ODNhNFx1ODM3NFx1ODM4Zlx1ODM4MVx1ODM5NVx1ODM5OVx1ODM3NVx1ODM5NFx1ODNhOVx1ODM3ZFx1ODM4M1x1ODM4Y1x1ODM5ZFx1ODM5Ylx1ODNhYVx1ODM4Ylx1ODM3ZVx1ODNhNVx1ODNhZlx1ODM4OFx1ODM5N1x1ODNiMFx1''@;'; put 'put ''ODM3Zlx1ODNhNlx1ODM4N1x1ODNhZVx1ODM3Nlx1ODM5YVx1ODY1OVx1ODY1Nlx1ODZiZlx1ODZiNyJdLFsiZDdhMSIsIlx1ODZjMlx1ODZjMVx1ODZjNVx1ODZiYVx1ODZiMFx1ODZjOFx1ODZiOVx1ODZiM1x1ODZiOFx1ODZjY1x1ODZiNFx1ODZiYlx1ODZiY1x1ODZjM1x1ODZiZFx1ODZi''@;'; put 'put ''ZVx1ODg1Mlx1ODg4OVx1ODg5NVx1ODhhOFx1ODhhMlx1ODhhYVx1ODg5YVx1ODg5MVx1ODhhMVx1ODg5Zlx1ODg5OFx1ODhhN1x1ODg5OVx1ODg5Ylx1ODg5N1x1ODhhNFx1ODhhY1x1ODg4Y1x1ODg5M1x1ODg4ZVx1ODk4Mlx1ODlkNlx1ODlkOVx1ODlkNVx1OGEzMFx1OGEyN1x1OGEyY1x1''@;'; put 'put ''OGExZVx1OGMzOVx1OGMzYlx1OGM1Y1x1OGM1ZFx1OGM3ZFx1OGNhNVx1OGQ3ZFx1OGQ3Ylx1OGQ3OVx1OGRiY1x1OGRjMlx1OGRiOVx1OGRiZlx1OGRjMVx1OGVkOFx1OGVkZVx1OGVkZFx1OGVkY1x1OGVkN1x1OGVlMFx1OGVlMVx1OTAyNFx1OTAwYlx1OTAxMVx1OTAxY1x1OTAwY1x1OTAy''@;'; put 'put ''MVx1OTBlZlx1OTBlYVx1OTBmMFx1OTBmNFx1OTBmMlx1OTBmM1x1OTBkNFx1OTBlYlx1OTBlY1x1OTBlOVx1OTE1Nlx1OTE1OFx1OTE1YVx1OTE1M1x1OTE1NVx1OTFlY1x1OTFmNFx1OTFmMVx1OTFmM1x1OTFmOFx1OTFlNFx1OTFmOVx1OTFlYSJdLFsiZDg0MCIsIlx1OTFlYlx1OTFmN1x1''@;'; put 'put ''OTFlOFx1OTFlZVx1OTU3YVx1OTU4Nlx1OTU4OFx1OTY3Y1x1OTY2ZFx1OTY2Ylx1OTY3MVx1OTY2Zlx1OTZiZlx1OTc2YVx1OTgwNFx1OThlNVx1OTk5N1x1NTA5Ylx1NTA5NVx1NTA5NFx1NTA5ZVx1NTA4Ylx1NTBhM1x1NTA4M1x1NTA4Y1x1NTA4ZVx1NTA5ZFx1NTA2OFx1NTA5Y1x1NTA5''@;'; put 'put ''Mlx1NTA4Mlx1NTA4N1x1NTE1Zlx1NTFkNFx1NTMxMlx1NTMxMVx1NTNhNFx1NTNhN1x1NTU5MVx1NTVhOFx1NTVhNVx1NTVhZFx1NTU3N1x1NTY0NVx1NTVhMlx1NTU5M1x1NTU4OFx1NTU4Zlx1NTViNVx1NTU4MVx1NTVhM1x1NTU5Mlx1NTVhNFx1NTU3ZFx1NTU4Y1x1NTVhNlx1NTU3Zlx1''@;'; put 'put ''NTU5NVx1NTVhMVx1NTU4ZVx1NTcwY1x1NTgyOVx1NTgzNyJdLFsiZDhhMSIsIlx1NTgxOVx1NTgxZVx1NTgyN1x1NTgyM1x1NTgyOFx1NTdmNVx1NTg0OFx1NTgyNVx1NTgxY1x1NTgxYlx1NTgzM1x1NTgzZlx1NTgzNlx1NTgyZVx1NTgzOVx1NTgzOFx1NTgyZFx1NTgyY1x1NTgzYlx1NTk2''@;'; put 'put ''MVx1NWFhZlx1NWE5NFx1NWE5Zlx1NWE3YVx1NWFhMlx1NWE5ZVx1NWE3OFx1NWFhNlx1NWE3Y1x1NWFhNVx1NWFhY1x1NWE5NVx1NWFhZVx1NWEzN1x1NWE4NFx1NWE4YVx1NWE5N1x1NWE4M1x1NWE4Ylx1NWFhOVx1NWE3Ylx1NWE3ZFx1NWE4Y1x1NWE5Y1x1NWE4Zlx1NWE5M1x1NWE5ZFx1''@;'; put 'put ''NWJlYVx1NWJjZFx1NWJjYlx1NWJkNFx1NWJkMVx1NWJjYVx1NWJjZVx1NWMwY1x1NWMzMFx1NWQzN1x1NWQ0M1x1NWQ2Ylx1NWQ0MVx1NWQ0Ylx1NWQzZlx1NWQzNVx1NWQ1MVx1NWQ0ZVx1NWQ1NVx1NWQzM1x1NWQzYVx1NWQ1Mlx1NWQzZFx1NWQzMVx1NWQ1OVx1NWQ0Mlx1NWQzOVx1NWQ0''@;'; put 'put ''OVx1NWQzOFx1NWQzY1x1NWQzMlx1NWQzNlx1NWQ0MFx1NWQ0NVx1NWU0NFx1NWU0MVx1NWY1OFx1NWZhNlx1NWZhNVx1NWZhYlx1NjBjOVx1NjBiOVx1NjBjY1x1NjBlMlx1NjBjZVx1NjBjNFx1NjExNCJdLFsiZDk0MCIsIlx1NjBmMlx1NjEwYVx1NjExNlx1NjEwNVx1NjBmNVx1NjExM1x1''@;'; put 'put ''NjBmOFx1NjBmY1x1NjBmZVx1NjBjMVx1NjEwM1x1NjExOFx1NjExZFx1NjExMFx1NjBmZlx1NjEwNFx1NjEwYlx1NjI0YVx1NjM5NFx1NjNiMVx1NjNiMFx1NjNjZVx1NjNlNVx1NjNlOFx1NjNlZlx1NjNjM1x1NjQ5ZFx1NjNmM1x1NjNjYVx1NjNlMFx1NjNmNlx1NjNkNVx1NjNmMlx1NjNm''@;'; put 'put ''NVx1NjQ2MVx1NjNkZlx1NjNiZVx1NjNkZFx1NjNkY1x1NjNjNFx1NjNkOFx1NjNkM1x1NjNjMlx1NjNjN1x1NjNjY1x1NjNjYlx1NjNjOFx1NjNmMFx1NjNkN1x1NjNkOVx1NjUzMlx1NjU2N1x1NjU2YVx1NjU2NFx1NjU1Y1x1NjU2OFx1NjU2NVx1NjU4Y1x1NjU5ZFx1NjU5ZVx1NjVhZVx1''@;'; put 'put ''NjVkMFx1NjVkMiJdLFsiZDlhMSIsIlx1NjY3Y1x1NjY2Y1x1NjY3Ylx1NjY4MFx1NjY3MVx1NjY3OVx1NjY2YVx1NjY3Mlx1NjcwMVx1NjkwY1x1NjhkM1x1NjkwNFx1NjhkY1x1NjkyYVx1NjhlY1x1NjhlYVx1NjhmMVx1NjkwZlx1NjhkNlx1NjhmN1x1NjhlYlx1NjhlNFx1NjhmNlx1Njkx''@;'; put 'put ''M1x1NjkxMFx1NjhmM1x1NjhlMVx1NjkwN1x1NjhjY1x1NjkwOFx1Njk3MFx1NjhiNFx1NjkxMVx1NjhlZlx1NjhjNlx1NjkxNFx1NjhmOFx1NjhkMFx1NjhmZFx1NjhmY1x1NjhlOFx1NjkwYlx1NjkwYVx1NjkxN1x1NjhjZVx1NjhjOFx1NjhkZFx1NjhkZVx1NjhlNlx1NjhmNFx1NjhkMVx1''@;'; put 'put ''NjkwNlx1NjhkNFx1NjhlOVx1NjkxNVx1NjkyNVx1NjhjN1x1NmIzOVx1NmIzYlx1NmIzZlx1NmIzY1x1NmI5NFx1NmI5N1x1NmI5OVx1NmI5NVx1NmJiZFx1NmJmMFx1NmJmMlx1NmJmM1x1NmMzMFx1NmRmY1x1NmU0Nlx1NmU0N1x1NmUxZlx1NmU0OVx1NmU4OFx1NmUzY1x1NmUzZFx1NmU0''@;'; put 'put ''NVx1NmU2Mlx1NmUyYlx1NmUzZlx1NmU0MVx1NmU1ZFx1NmU3M1x1NmUxY1x1NmUzM1x1NmU0Ylx1NmU0MFx1NmU1MVx1NmUzYlx1NmUwM1x1NmUyZVx1NmU1ZSJdLFsiZGE0MCIsIlx1NmU2OFx1NmU1Y1x1NmU2MVx1NmUzMVx1NmUyOFx1NmU2MFx1NmU3MVx1NmU2Ylx1NmUzOVx1NmUyMlx1''@;'; put 'put ''NmUzMFx1NmU1M1x1NmU2NVx1NmUyN1x1NmU3OFx1NmU2NFx1NmU3N1x1NmU1NVx1NmU3OVx1NmU1Mlx1NmU2Nlx1NmUzNVx1NmUzNlx1NmU1YVx1NzEyMFx1NzExZVx1NzEyZlx1NzBmYlx1NzEyZVx1NzEzMVx1NzEyM1x1NzEyNVx1NzEyMlx1NzEzMlx1NzExZlx1NzEyOFx1NzEzYVx1NzEx''@;'; put 'put ''Ylx1NzI0Ylx1NzI1YVx1NzI4OFx1NzI4OVx1NzI4Nlx1NzI4NVx1NzI4Ylx1NzMxMlx1NzMwYlx1NzMzMFx1NzMyMlx1NzMzMVx1NzMzM1x1NzMyN1x1NzMzMlx1NzMyZFx1NzMyNlx1NzMyM1x1NzMzNVx1NzMwY1x1NzQyZVx1NzQyY1x1NzQzMFx1NzQyYlx1NzQxNiJdLFsiZGFhMSIsIlx1''@;'; put 'put ''NzQxYVx1NzQyMVx1NzQyZFx1NzQzMVx1NzQyNFx1NzQyM1x1NzQxZFx1NzQyOVx1NzQyMFx1NzQzMlx1NzRmYlx1NzUyZlx1NzU2Zlx1NzU2Y1x1NzVlN1x1NzVkYVx1NzVlMVx1NzVlNlx1NzVkZFx1NzVkZlx1NzVlNFx1NzVkN1x1NzY5NVx1NzY5Mlx1NzZkYVx1Nzc0Nlx1Nzc0N1x1Nzc0''@;'; put 'put ''NFx1Nzc0ZFx1Nzc0NVx1Nzc0YVx1Nzc0ZVx1Nzc0Ylx1Nzc0Y1x1NzdkZVx1NzdlY1x1Nzg2MFx1Nzg2NFx1Nzg2NVx1Nzg1Y1x1Nzg2ZFx1Nzg3MVx1Nzg2YVx1Nzg2ZVx1Nzg3MFx1Nzg2OVx1Nzg2OFx1Nzg1ZVx1Nzg2Mlx1Nzk3NFx1Nzk3M1x1Nzk3Mlx1Nzk3MFx1N2EwMlx1N2EwYVx1''@;'; put 'put ''N2EwM1x1N2EwY1x1N2EwNFx1N2E5OVx1N2FlNlx1N2FlNFx1N2I0YVx1N2IzYlx1N2I0NFx1N2I0OFx1N2I0Y1x1N2I0ZVx1N2I0MFx1N2I1OFx1N2I0NVx1N2NhMlx1N2M5ZVx1N2NhOFx1N2NhMVx1N2Q1OFx1N2Q2Zlx1N2Q2M1x1N2Q1M1x1N2Q1Nlx1N2Q2N1x1N2Q2YVx1N2Q0Zlx1N2Q2''@;'; put 'put ''ZFx1N2Q1Y1x1N2Q2Ylx1N2Q1Mlx1N2Q1NFx1N2Q2OVx1N2Q1MVx1N2Q1Zlx1N2Q0ZVx1N2YzZVx1N2YzZlx1N2Y2NSJdLFsiZGI0MCIsIlx1N2Y2Nlx1N2ZhMlx1N2ZhMFx1N2ZhMVx1N2ZkN1x1ODA1MVx1ODA0Zlx1ODA1MFx1ODBmZVx1ODBkNFx1ODE0M1x1ODE0YVx1ODE1Mlx1ODE0Zlx1''@;'; put 'put ''ODE0N1x1ODEzZFx1ODE0ZFx1ODEzYVx1ODFlNlx1ODFlZVx1ODFmN1x1ODFmOFx1ODFmOVx1ODIwNFx1ODIzY1x1ODIzZFx1ODIzZlx1ODI3NVx1ODMzYlx1ODNjZlx1ODNmOVx1ODQyM1x1ODNjMFx1ODNlOFx1ODQxMlx1ODNlN1x1ODNlNFx1ODNmY1x1ODNmNlx1ODQxMFx1ODNjNlx1ODNj''@;'; put 'put ''OFx1ODNlYlx1ODNlM1x1ODNiZlx1ODQwMVx1ODNkZFx1ODNlNVx1ODNkOFx1ODNmZlx1ODNlMVx1ODNjYlx1ODNjZVx1ODNkNlx1ODNmNVx1ODNjOVx1ODQwOVx1ODQwZlx1ODNkZVx1ODQxMVx1ODQwNlx1ODNjMlx1ODNmMyJdLFsiZGJhMSIsIlx1ODNkNVx1ODNmYVx1ODNjN1x1ODNkMVx1''@;'; put 'put ''ODNlYVx1ODQxM1x1ODNjM1x1ODNlY1x1ODNlZVx1ODNjNFx1ODNmYlx1ODNkN1x1ODNlMlx1ODQxYlx1ODNkYlx1ODNmZVx1ODZkOFx1ODZlMlx1ODZlNlx1ODZkM1x1ODZlM1x1ODZkYVx1ODZlYVx1ODZkZFx1ODZlYlx1ODZkY1x1ODZlY1x1ODZlOVx1ODZkN1x1ODZlOFx1ODZkMVx1ODg0''@;'; put 'put ''OFx1ODg1Nlx1ODg1NVx1ODhiYVx1ODhkN1x1ODhiOVx1ODhiOFx1ODhjMFx1ODhiZVx1ODhiNlx1ODhiY1x1ODhiN1x1ODhiZFx1ODhiMlx1ODkwMVx1ODhjOVx1ODk5NVx1ODk5OFx1ODk5N1x1ODlkZFx1ODlkYVx1ODlkYlx1OGE0ZVx1OGE0ZFx1OGEzOVx1OGE1OVx1OGE0MFx1OGE1N1x1''@;'; put 'put ''OGE1OFx1OGE0NFx1OGE0NVx1OGE1Mlx1OGE0OFx1OGE1MVx1OGE0YVx1OGE0Y1x1OGE0Zlx1OGM1Zlx1OGM4MVx1OGM4MFx1OGNiYVx1OGNiZVx1OGNiMFx1OGNiOVx1OGNiNVx1OGQ4NFx1OGQ4MFx1OGQ4OVx1OGRkOFx1OGRkM1x1OGRjZFx1OGRjN1x1OGRkNlx1OGRkY1x1OGRjZlx1OGRk''@;'; put 'put ''NVx1OGRkOVx1OGRjOFx1OGRkN1x1OGRjNVx1OGVlZlx1OGVmN1x1OGVmYSJdLFsiZGM0MCIsIlx1OGVmOVx1OGVlNlx1OGVlZVx1OGVlNVx1OGVmNVx1OGVlN1x1OGVlOFx1OGVmNlx1OGVlYlx1OGVmMVx1OGVlY1x1OGVmNFx1OGVlOVx1OTAyZFx1OTAzNFx1OTAyZlx1OTEwNlx1OTEyY1x1''@;'; put 'put ''OTEwNFx1OTBmZlx1OTBmY1x1OTEwOFx1OTBmOVx1OTBmYlx1OTEwMVx1OTEwMFx1OTEwN1x1OTEwNVx1OTEwM1x1OTE2MVx1OTE2NFx1OTE1Zlx1OTE2Mlx1OTE2MFx1OTIwMVx1OTIwYVx1OTIyNVx1OTIwM1x1OTIxYVx1OTIyNlx1OTIwZlx1OTIwY1x1OTIwMFx1OTIxMlx1OTFmZlx1OTFm''@;'; put 'put ''ZFx1OTIwNlx1OTIwNFx1OTIyN1x1OTIwMlx1OTIxY1x1OTIyNFx1OTIxOVx1OTIxN1x1OTIwNVx1OTIxNlx1OTU3Ylx1OTU4ZFx1OTU4Y1x1OTU5MFx1OTY4N1x1OTY3ZVx1OTY4OCJdLFsiZGNhMSIsIlx1OTY4OVx1OTY4M1x1OTY4MFx1OTZjMlx1OTZjOFx1OTZjM1x1OTZmMVx1OTZmMFx1''@;'; put 'put ''OTc2Y1x1OTc3MFx1OTc2ZVx1OTgwN1x1OThhOVx1OThlYlx1OWNlNlx1OWVmOVx1NGU4M1x1NGU4NFx1NGViNlx1NTBiZFx1NTBiZlx1NTBjNlx1NTBhZVx1NTBjNFx1NTBjYVx1NTBiNFx1NTBjOFx1NTBjMlx1NTBiMFx1NTBjMVx1NTBiYVx1NTBiMVx1NTBjYlx1NTBjOVx1NTBiNlx1NTBi''@;'; put 'put ''OFx1NTFkN1x1NTI3YVx1NTI3OFx1NTI3Ylx1NTI3Y1x1NTVjM1x1NTVkYlx1NTVjY1x1NTVkMFx1NTVjYlx1NTVjYVx1NTVkZFx1NTVjMFx1NTVkNFx1NTVjNFx1NTVlOVx1NTViZlx1NTVkMlx1NTU4ZFx1NTVjZlx1NTVkNVx1NTVlMlx1NTVkNlx1NTVjOFx1NTVmMlx1NTVjZFx1NTVkOVx1''@;'; put 'put ''NTVjMlx1NTcxNFx1NTg1M1x1NTg2OFx1NTg2NFx1NTg0Zlx1NTg0ZFx1NTg0OVx1NTg2Zlx1NTg1NVx1NTg0ZVx1NTg1ZFx1NTg1OVx1NTg2NVx1NTg1Ylx1NTgzZFx1NTg2M1x1NTg3MVx1NThmY1x1NWFjN1x1NWFjNFx1NWFjYlx1NWFiYVx1NWFiOFx1NWFiMVx1NWFiNVx1NWFiMFx1NWFi''@;'; put 'put ''Zlx1NWFjOFx1NWFiYlx1NWFjNiJdLFsiZGQ0MCIsIlx1NWFiN1x1NWFjMFx1NWFjYVx1NWFiNFx1NWFiNlx1NWFjZFx1NWFiOVx1NWE5MFx1NWJkNlx1NWJkOFx1NWJkOVx1NWMxZlx1NWMzM1x1NWQ3MVx1NWQ2M1x1NWQ0YVx1NWQ2NVx1NWQ3Mlx1NWQ2Y1x1NWQ1ZVx1NWQ2OFx1NWQ2N1x1''@;'; put 'put ''NWQ2Mlx1NWRmMFx1NWU0Zlx1NWU0ZVx1NWU0YVx1NWU0ZFx1NWU0Ylx1NWVjNVx1NWVjY1x1NWVjNlx1NWVjYlx1NWVjN1x1NWY0MFx1NWZhZlx1NWZhZFx1NjBmN1x1NjE0OVx1NjE0YVx1NjEyYlx1NjE0NVx1NjEzNlx1NjEzMlx1NjEyZVx1NjE0Nlx1NjEyZlx1NjE0Zlx1NjEyOVx1NjE0''@;'; put 'put ''MFx1NjIyMFx1OTE2OFx1NjIyM1x1NjIyNVx1NjIyNFx1NjNjNVx1NjNmMVx1NjNlYlx1NjQxMFx1NjQxMlx1NjQwOVx1NjQyMFx1NjQyNCJdLFsiZGRhMSIsIlx1NjQzM1x1NjQ0M1x1NjQxZlx1NjQxNVx1NjQxOFx1NjQzOVx1NjQzN1x1NjQyMlx1NjQyM1x1NjQwY1x1NjQyNlx1NjQzMFx1''@;'; put 'put ''NjQyOFx1NjQ0MVx1NjQzNVx1NjQyZlx1NjQwYVx1NjQxYVx1NjQ0MFx1NjQyNVx1NjQyN1x1NjQwYlx1NjNlN1x1NjQxYlx1NjQyZVx1NjQyMVx1NjQwZVx1NjU2Zlx1NjU5Mlx1NjVkM1x1NjY4Nlx1NjY4Y1x1NjY5NVx1NjY5MFx1NjY4Ylx1NjY4YVx1NjY5OVx1NjY5NFx1NjY3OFx1Njcy''@;'; put 'put ''MFx1Njk2Nlx1Njk1Zlx1NjkzOFx1Njk0ZVx1Njk2Mlx1Njk3MVx1NjkzZlx1Njk0NVx1Njk2YVx1NjkzOVx1Njk0Mlx1Njk1N1x1Njk1OVx1Njk3YVx1Njk0OFx1Njk0OVx1NjkzNVx1Njk2Y1x1NjkzM1x1NjkzZFx1Njk2NVx1NjhmMFx1Njk3OFx1NjkzNFx1Njk2OVx1Njk0MFx1Njk2Zlx1''@;'; put 'put ''Njk0NFx1Njk3Nlx1Njk1OFx1Njk0MVx1Njk3NFx1Njk0Y1x1NjkzYlx1Njk0Ylx1NjkzN1x1Njk1Y1x1Njk0Zlx1Njk1MVx1NjkzMlx1Njk1Mlx1NjkyZlx1Njk3Ylx1NjkzY1x1NmI0Nlx1NmI0NVx1NmI0M1x1NmI0Mlx1NmI0OFx1NmI0MVx1NmI5Ylx1ZmEwZFx1NmJmYlx1NmJmYyJdLFsi''@;'; put 'put ''ZGU0MCIsIlx1NmJmOVx1NmJmN1x1NmJmOFx1NmU5Ylx1NmVkNlx1NmVjOFx1NmU4Zlx1NmVjMFx1NmU5Zlx1NmU5M1x1NmU5NFx1NmVhMFx1NmViMVx1NmViOVx1NmVjNlx1NmVkMlx1NmViZFx1NmVjMVx1NmU5ZVx1NmVjOVx1NmViN1x1NmViMFx1NmVjZFx1NmVhNlx1NmVjZlx1NmViMlx1''@;'; put 'put ''NmViZVx1NmVjM1x1NmVkY1x1NmVkOFx1NmU5OVx1NmU5Mlx1NmU4ZVx1NmU4ZFx1NmVhNFx1NmVhMVx1NmViZlx1NmViM1x1NmVkMFx1NmVjYVx1NmU5N1x1NmVhZVx1NmVhM1x1NzE0N1x1NzE1NFx1NzE1Mlx1NzE2M1x1NzE2MFx1NzE0MVx1NzE1ZFx1NzE2Mlx1NzE3Mlx1NzE3OFx1NzE2''@;'; put 'put ''YVx1NzE2MVx1NzE0Mlx1NzE1OFx1NzE0M1x1NzE0Ylx1NzE3MFx1NzE1Zlx1NzE1MFx1NzE1MyJdLFsiZGVhMSIsIlx1NzE0NFx1NzE0ZFx1NzE1YVx1NzI0Zlx1NzI4ZFx1NzI4Y1x1NzI5MVx1NzI5MFx1NzI4ZVx1NzMzY1x1NzM0Mlx1NzMzYlx1NzMzYVx1NzM0MFx1NzM0YVx1NzM0OVx1''@;'; put 'put ''NzQ0NFx1NzQ0YVx1NzQ0Ylx1NzQ1Mlx1NzQ1MVx1NzQ1N1x1NzQ0MFx1NzQ0Zlx1NzQ1MFx1NzQ0ZVx1NzQ0Mlx1NzQ0Nlx1NzQ0ZFx1NzQ1NFx1NzRlMVx1NzRmZlx1NzRmZVx1NzRmZFx1NzUxZFx1NzU3OVx1NzU3N1x1Njk4M1x1NzVlZlx1NzYwZlx1NzYwM1x1NzVmN1x1NzVmZVx1NzVm''@;'; put 'put ''Y1x1NzVmOVx1NzVmOFx1NzYxMFx1NzVmYlx1NzVmNlx1NzVlZFx1NzVmNVx1NzVmZFx1NzY5OVx1NzZiNVx1NzZkZFx1Nzc1NVx1Nzc1Zlx1Nzc2MFx1Nzc1Mlx1Nzc1Nlx1Nzc1YVx1Nzc2OVx1Nzc2N1x1Nzc1NFx1Nzc1OVx1Nzc2ZFx1NzdlMFx1Nzg4N1x1Nzg5YVx1Nzg5NFx1Nzg4Zlx1''@;'; put 'put ''Nzg4NFx1Nzg5NVx1Nzg4NVx1Nzg4Nlx1NzhhMVx1Nzg4M1x1Nzg3OVx1Nzg5OVx1Nzg4MFx1Nzg5Nlx1Nzg3Ylx1Nzk3Y1x1Nzk4Mlx1Nzk3ZFx1Nzk3OVx1N2ExMVx1N2ExOFx1N2ExOVx1N2ExMlx1N2ExN1x1N2ExNVx1N2EyMlx1N2ExMyJdLFsiZGY0MCIsIlx1N2ExYlx1N2ExMFx1N2Fh''@;'; put 'put ''M1x1N2FhMlx1N2E5ZVx1N2FlYlx1N2I2Nlx1N2I2NFx1N2I2ZFx1N2I3NFx1N2I2OVx1N2I3Mlx1N2I2NVx1N2I3M1x1N2I3MVx1N2I3MFx1N2I2MVx1N2I3OFx1N2I3Nlx1N2I2M1x1N2NiMlx1N2NiNFx1N2NhZlx1N2Q4OFx1N2Q4Nlx1N2Q4MFx1N2Q4ZFx1N2Q3Zlx1N2Q4NVx1N2Q3YVx1''@;'; put 'put ''N2Q4ZVx1N2Q3Ylx1N2Q4M1x1N2Q3Y1x1N2Q4Y1x1N2Q5NFx1N2Q4NFx1N2Q3ZFx1N2Q5Mlx1N2Y2ZFx1N2Y2Ylx1N2Y2N1x1N2Y2OFx1N2Y2Y1x1N2ZhNlx1N2ZhNVx1N2ZhN1x1N2ZkYlx1N2ZkY1x1ODAyMVx1ODE2NFx1ODE2MFx1ODE3N1x1ODE1Y1x1ODE2OVx1ODE1Ylx1ODE2Mlx1ODE3''@;'; put 'put ''Mlx1NjcyMVx1ODE1ZVx1ODE3Nlx1ODE2N1x1ODE2ZiJdLFsiZGZhMSIsIlx1ODE0NFx1ODE2MVx1ODIxZFx1ODI0OVx1ODI0NFx1ODI0MFx1ODI0Mlx1ODI0NVx1ODRmMVx1ODQzZlx1ODQ1Nlx1ODQ3Nlx1ODQ3OVx1ODQ4Zlx1ODQ4ZFx1ODQ2NVx1ODQ1MVx1ODQ0MFx1ODQ4Nlx1ODQ2N1x1''@;'; put 'put ''ODQzMFx1ODQ0ZFx1ODQ3ZFx1ODQ1YVx1ODQ1OVx1ODQ3NFx1ODQ3M1x1ODQ1ZFx1ODUwN1x1ODQ1ZVx1ODQzN1x1ODQzYVx1ODQzNFx1ODQ3YVx1ODQ0M1x1ODQ3OFx1ODQzMlx1ODQ0NVx1ODQyOVx1ODNkOVx1ODQ0Ylx1ODQyZlx1ODQ0Mlx1ODQyZFx1ODQ1Zlx1ODQ3MFx1ODQzOVx1ODQ0''@;'; put 'put ''ZVx1ODQ0Y1x1ODQ1Mlx1ODQ2Zlx1ODRjNVx1ODQ4ZVx1ODQzYlx1ODQ0N1x1ODQzNlx1ODQzM1x1ODQ2OFx1ODQ3ZVx1ODQ0NFx1ODQyYlx1ODQ2MFx1ODQ1NFx1ODQ2ZVx1ODQ1MFx1ODcwYlx1ODcwNFx1ODZmN1x1ODcwY1x1ODZmYVx1ODZkNlx1ODZmNVx1ODc0ZFx1ODZmOFx1ODcwZVx1''@;'; put 'put ''ODcwOVx1ODcwMVx1ODZmNlx1ODcwZFx1ODcwNVx1ODhkNlx1ODhjYlx1ODhjZFx1ODhjZVx1ODhkZVx1ODhkYlx1ODhkYVx1ODhjY1x1ODhkMFx1ODk4NVx1ODk5Ylx1ODlkZlx1ODllNVx1ODllNCJdLFsiZTA0MCIsIlx1ODllMVx1ODllMFx1ODllMlx1ODlkY1x1ODllNlx1OGE3Nlx1OGE4''@;'; put 'put ''Nlx1OGE3Zlx1OGE2MVx1OGEzZlx1OGE3N1x1OGE4Mlx1OGE4NFx1OGE3NVx1OGE4M1x1OGE4MVx1OGE3NFx1OGE3YVx1OGMzY1x1OGM0Ylx1OGM0YVx1OGM2NVx1OGM2NFx1OGM2Nlx1OGM4Nlx1OGM4NFx1OGM4NVx1OGNjY1x1OGQ2OFx1OGQ2OVx1OGQ5MVx1OGQ4Y1x1OGQ4ZVx1OGQ4Zlx1''@;'; put 'put ''OGQ4ZFx1OGQ5M1x1OGQ5NFx1OGQ5MFx1OGQ5Mlx1OGRmMFx1OGRlMFx1OGRlY1x1OGRmMVx1OGRlZVx1OGRkMFx1OGRlOVx1OGRlM1x1OGRlMlx1OGRlN1x1OGRmMlx1OGRlYlx1OGRmNFx1OGYwNlx1OGVmZlx1OGYwMVx1OGYwMFx1OGYwNVx1OGYwN1x1OGYwOFx1OGYwMlx1OGYwYlx1OTA1''@;'; put 'put ''Mlx1OTAzZiJdLFsiZTBhMSIsIlx1OTA0NFx1OTA0OVx1OTAzZFx1OTExMFx1OTEwZFx1OTEwZlx1OTExMVx1OTExNlx1OTExNFx1OTEwYlx1OTEwZVx1OTE2ZVx1OTE2Zlx1OTI0OFx1OTI1Mlx1OTIzMFx1OTIzYVx1OTI2Nlx1OTIzM1x1OTI2NVx1OTI1ZVx1OTI4M1x1OTIyZVx1OTI0YVx1''@;'; put 'put ''OTI0Nlx1OTI2ZFx1OTI2Y1x1OTI0Zlx1OTI2MFx1OTI2N1x1OTI2Zlx1OTIzNlx1OTI2MVx1OTI3MFx1OTIzMVx1OTI1NFx1OTI2M1x1OTI1MFx1OTI3Mlx1OTI0ZVx1OTI1M1x1OTI0Y1x1OTI1Nlx1OTIzMlx1OTU5Zlx1OTU5Y1x1OTU5ZVx1OTU5Ylx1OTY5Mlx1OTY5M1x1OTY5MVx1OTY5''@;'; put 'put ''N1x1OTZjZVx1OTZmYVx1OTZmZFx1OTZmOFx1OTZmNVx1OTc3M1x1OTc3N1x1OTc3OFx1OTc3Mlx1OTgwZlx1OTgwZFx1OTgwZVx1OThhY1x1OThmNlx1OThmOVx1OTlhZlx1OTliMlx1OTliMFx1OTliNVx1OWFhZFx1OWFhYlx1OWI1Ylx1OWNlYVx1OWNlZFx1OWNlN1x1OWU4MFx1OWVmZFx1''@;'; put 'put ''NTBlNlx1NTBkNFx1NTBkN1x1NTBlOFx1NTBmM1x1NTBkYlx1NTBlYVx1NTBkZFx1NTBlNFx1NTBkM1x1NTBlY1x1NTBmMFx1NTBlZlx1NTBlM1x1NTBlMCJdLFsiZTE0MCIsIlx1NTFkOFx1NTI4MFx1NTI4MVx1NTJlOVx1NTJlYlx1NTMzMFx1NTNhY1x1NTYyN1x1NTYxNVx1NTYwY1x1NTYx''@;'; put 'put ''Mlx1NTVmY1x1NTYwZlx1NTYxY1x1NTYwMVx1NTYxM1x1NTYwMlx1NTVmYVx1NTYxZFx1NTYwNFx1NTVmZlx1NTVmOVx1NTg4OVx1NTg3Y1x1NTg5MFx1NTg5OFx1NTg4Nlx1NTg4MVx1NTg3Zlx1NTg3NFx1NTg4Ylx1NTg3YVx1NTg4N1x1NTg5MVx1NTg4ZVx1NTg3Nlx1NTg4Mlx1NTg4OFx1''@;'; put 'put ''NTg3Ylx1NTg5NFx1NTg4Zlx1NThmZVx1NTk2Ylx1NWFkY1x1NWFlZVx1NWFlNVx1NWFkNVx1NWFlYVx1NWFkYVx1NWFlZFx1NWFlYlx1NWFmM1x1NWFlMlx1NWFlMFx1NWFkYlx1NWFlY1x1NWFkZVx1NWFkZFx1NWFkOVx1NWFlOFx1NWFkZlx1NWI3N1x1NWJlMCJdLFsiZTFhMSIsIlx1NWJl''@;'; put 'put ''M1x1NWM2M1x1NWQ4Mlx1NWQ4MFx1NWQ3ZFx1NWQ4Nlx1NWQ3YVx1NWQ4MVx1NWQ3N1x1NWQ4YVx1NWQ4OVx1NWQ4OFx1NWQ3ZVx1NWQ3Y1x1NWQ4ZFx1NWQ3OVx1NWQ3Zlx1NWU1OFx1NWU1OVx1NWU1M1x1NWVkOFx1NWVkMVx1NWVkN1x1NWVjZVx1NWVkY1x1NWVkNVx1NWVkOVx1NWVkMlx1''@;'; put 'put ''NWVkNFx1NWY0NFx1NWY0M1x1NWY2Zlx1NWZiNlx1NjEyY1x1NjEyOFx1NjE0MVx1NjE1ZVx1NjE3MVx1NjE3M1x1NjE1Mlx1NjE1M1x1NjE3Mlx1NjE2Y1x1NjE4MFx1NjE3NFx1NjE1NFx1NjE3YVx1NjE1Ylx1NjE2NVx1NjEzYlx1NjE2YVx1NjE2MVx1NjE1Nlx1NjIyOVx1NjIyN1x1NjIy''@;'; put 'put ''Ylx1NjQyYlx1NjQ0ZFx1NjQ1Ylx1NjQ1ZFx1NjQ3NFx1NjQ3Nlx1NjQ3Mlx1NjQ3M1x1NjQ3ZFx1NjQ3NVx1NjQ2Nlx1NjRhNlx1NjQ0ZVx1NjQ4Mlx1NjQ1ZVx1NjQ1Y1x1NjQ0Ylx1NjQ1M1x1NjQ2MFx1NjQ1MFx1NjQ3Zlx1NjQzZlx1NjQ2Y1x1NjQ2Ylx1NjQ1OVx1NjQ2NVx1NjQ3N1x1''@;'; put 'put ''NjU3M1x1NjVhMFx1NjZhMVx1NjZhMFx1NjY5Zlx1NjcwNVx1NjcwNFx1NjcyMlx1NjliMVx1NjliNlx1NjljOSJdLFsiZTI0MCIsIlx1NjlhMFx1NjljZVx1Njk5Nlx1NjliMFx1NjlhY1x1NjliY1x1Njk5MVx1Njk5OVx1Njk4ZVx1NjlhN1x1Njk4ZFx1NjlhOVx1NjliZVx1NjlhZlx1Njli''@;'; put 'put ''Zlx1NjljNFx1NjliZFx1NjlhNFx1NjlkNFx1NjliOVx1NjljYVx1Njk5YVx1NjljZlx1NjliM1x1Njk5M1x1NjlhYVx1NjlhMVx1Njk5ZVx1NjlkOVx1Njk5N1x1Njk5MFx1NjljMlx1NjliNVx1NjlhNVx1NjljNlx1NmI0YVx1NmI0ZFx1NmI0Ylx1NmI5ZVx1NmI5Zlx1NmJhMFx1NmJjM1x1''@;'; put 'put ''NmJjNFx1NmJmZVx1NmVjZVx1NmVmNVx1NmVmMVx1NmYwM1x1NmYyNVx1NmVmOFx1NmYzN1x1NmVmYlx1NmYyZVx1NmYwOVx1NmY0ZVx1NmYxOVx1NmYxYVx1NmYyN1x1NmYxOFx1NmYzYlx1NmYxMlx1NmVlZFx1NmYwYSJdLFsiZTJhMSIsIlx1NmYzNlx1NmY3M1x1NmVmOVx1NmVlZVx1NmYy''@;'; put 'put ''ZFx1NmY0MFx1NmYzMFx1NmYzY1x1NmYzNVx1NmVlYlx1NmYwN1x1NmYwZVx1NmY0M1x1NmYwNVx1NmVmZFx1NmVmNlx1NmYzOVx1NmYxY1x1NmVmY1x1NmYzYVx1NmYxZlx1NmYwZFx1NmYxZVx1NmYwOFx1NmYyMVx1NzE4N1x1NzE5MFx1NzE4OVx1NzE4MFx1NzE4NVx1NzE4Mlx1NzE4Zlx1''@;'; put 'put ''NzE3Ylx1NzE4Nlx1NzE4MVx1NzE5N1x1NzI0NFx1NzI1M1x1NzI5N1x1NzI5NVx1NzI5M1x1NzM0M1x1NzM0ZFx1NzM1MVx1NzM0Y1x1NzQ2Mlx1NzQ3M1x1NzQ3MVx1NzQ3NVx1NzQ3Mlx1NzQ2N1x1NzQ2ZVx1NzUwMFx1NzUwMlx1NzUwM1x1NzU3ZFx1NzU5MFx1NzYxNlx1NzYwOFx1NzYw''@;'; put 'put ''Y1x1NzYxNVx1NzYxMVx1NzYwYVx1NzYxNFx1NzZiOFx1Nzc4MVx1Nzc3Y1x1Nzc4NVx1Nzc4Mlx1Nzc2ZVx1Nzc4MFx1Nzc2Zlx1Nzc3ZVx1Nzc4M1x1NzhiMlx1NzhhYVx1NzhiNFx1NzhhZFx1NzhhOFx1Nzg3ZVx1NzhhYlx1Nzg5ZVx1NzhhNVx1NzhhMFx1NzhhY1x1NzhhMlx1NzhhNFx1''@;'; put 'put ''Nzk5OFx1Nzk4YVx1Nzk4Ylx1Nzk5Nlx1Nzk5NVx1Nzk5NFx1Nzk5MyJdLFsiZTM0MCIsIlx1Nzk5N1x1Nzk4OFx1Nzk5Mlx1Nzk5MFx1N2EyYlx1N2E0YVx1N2EzMFx1N2EyZlx1N2EyOFx1N2EyNlx1N2FhOFx1N2FhYlx1N2FhY1x1N2FlZVx1N2I4OFx1N2I5Y1x1N2I4YVx1N2I5MVx1N2I5''@;'; put 'put ''MFx1N2I5Nlx1N2I4ZFx1N2I4Y1x1N2I5Ylx1N2I4ZVx1N2I4NVx1N2I5OFx1NTI4NFx1N2I5OVx1N2JhNFx1N2I4Mlx1N2NiYlx1N2NiZlx1N2NiY1x1N2NiYVx1N2RhN1x1N2RiN1x1N2RjMlx1N2RhM1x1N2RhYVx1N2RjMVx1N2RjMFx1N2RjNVx1N2Q5ZFx1N2RjZVx1N2RjNFx1N2RjNlx1''@;'; put 'put ''N2RjYlx1N2RjY1x1N2RhZlx1N2RiOVx1N2Q5Nlx1N2RiY1x1N2Q5Zlx1N2RhNlx1N2RhZVx1N2RhOVx1N2RhMVx1N2RjOVx1N2Y3M1x1N2ZlMlx1N2ZlM1x1N2ZlNVx1N2ZkZSJdLFsiZTNhMSIsIlx1ODAyNFx1ODA1ZFx1ODA1Y1x1ODE4OVx1ODE4Nlx1ODE4M1x1ODE4N1x1ODE4ZFx1ODE4''@;'; put 'put ''Y1x1ODE4Ylx1ODIxNVx1ODQ5N1x1ODRhNFx1ODRhMVx1ODQ5Zlx1ODRiYVx1ODRjZVx1ODRjMlx1ODRhY1x1ODRhZVx1ODRhYlx1ODRiOVx1ODRiNFx1ODRjMVx1ODRjZFx1ODRhYVx1ODQ5YVx1ODRiMVx1ODRkMFx1ODQ5ZFx1ODRhN1x1ODRiYlx1ODRhMlx1ODQ5NFx1ODRjN1x1ODRjY1x1''@;'; put 'put ''ODQ5Ylx1ODRhOVx1ODRhZlx1ODRhOFx1ODRkNlx1ODQ5OFx1ODRiNlx1ODRjZlx1ODRhMFx1ODRkN1x1ODRkNFx1ODRkMlx1ODRkYlx1ODRiMFx1ODQ5MVx1ODY2MVx1ODczM1x1ODcyM1x1ODcyOFx1ODc2Ylx1ODc0MFx1ODcyZVx1ODcxZVx1ODcyMVx1ODcxOVx1ODcxYlx1ODc0M1x1ODcy''@;'; put 'put ''Y1x1ODc0MVx1ODczZVx1ODc0Nlx1ODcyMFx1ODczMlx1ODcyYVx1ODcyZFx1ODczY1x1ODcxMlx1ODczYVx1ODczMVx1ODczNVx1ODc0Mlx1ODcyNlx1ODcyN1x1ODczOFx1ODcyNFx1ODcxYVx1ODczMFx1ODcxMVx1ODhmN1x1ODhlN1x1ODhmMVx1ODhmMlx1ODhmYVx1ODhmZVx1ODhlZVx1''@;'; put 'put ''ODhmY1x1ODhmNlx1ODhmYiJdLFsiZTQ0MCIsIlx1ODhmMFx1ODhlY1x1ODhlYlx1ODk5ZFx1ODlhMVx1ODk5Zlx1ODk5ZVx1ODllOVx1ODllYlx1ODllOFx1OGFhYlx1OGE5OVx1OGE4Ylx1OGE5Mlx1OGE4Zlx1OGE5Nlx1OGMzZFx1OGM2OFx1OGM2OVx1OGNkNVx1OGNjZlx1OGNkN1x1OGQ5''@;'; put 'put ''Nlx1OGUwOVx1OGUwMlx1OGRmZlx1OGUwZFx1OGRmZFx1OGUwYVx1OGUwM1x1OGUwN1x1OGUwNlx1OGUwNVx1OGRmZVx1OGUwMFx1OGUwNFx1OGYxMFx1OGYxMVx1OGYwZVx1OGYwZFx1OTEyM1x1OTExY1x1OTEyMFx1OTEyMlx1OTExZlx1OTExZFx1OTExYVx1OTEyNFx1OTEyMVx1OTExYlx1''@;'; put 'put ''OTE3YVx1OTE3Mlx1OTE3OVx1OTE3M1x1OTJhNVx1OTJhNFx1OTI3Nlx1OTI5Ylx1OTI3YVx1OTJhMFx1OTI5NFx1OTJhYVx1OTI4ZCJdLFsiZTRhMSIsIlx1OTJhNlx1OTI5YVx1OTJhYlx1OTI3OVx1OTI5N1x1OTI3Zlx1OTJhM1x1OTJlZVx1OTI4ZVx1OTI4Mlx1OTI5NVx1OTJhMlx1OTI3''@;'; put 'put ''ZFx1OTI4OFx1OTJhMVx1OTI4YVx1OTI4Nlx1OTI4Y1x1OTI5OVx1OTJhN1x1OTI3ZVx1OTI4N1x1OTJhOVx1OTI5ZFx1OTI4Ylx1OTIyZFx1OTY5ZVx1OTZhMVx1OTZmZlx1OTc1OFx1OTc3ZFx1OTc3YVx1OTc3ZVx1OTc4M1x1OTc4MFx1OTc4Mlx1OTc3Ylx1OTc4NFx1OTc4MVx1OTc3Zlx1''@;'; put 'put ''OTdjZVx1OTdjZFx1OTgxNlx1OThhZFx1OThhZVx1OTkwMlx1OTkwMFx1OTkwN1x1OTk5ZFx1OTk5Y1x1OTljM1x1OTliOVx1OTliYlx1OTliYVx1OTljMlx1OTliZFx1OTljN1x1OWFiMVx1OWFlM1x1OWFlN1x1OWIzZVx1OWIzZlx1OWI2MFx1OWI2MVx1OWI1Zlx1OWNmMVx1OWNmMlx1OWNm''@;'; put 'put ''NVx1OWVhN1x1NTBmZlx1NTEwM1x1NTEzMFx1NTBmOFx1NTEwNlx1NTEwN1x1NTBmNlx1NTBmZVx1NTEwYlx1NTEwY1x1NTBmZFx1NTEwYVx1NTI4Ylx1NTI4Y1x1NTJmMVx1NTJlZlx1NTY0OFx1NTY0Mlx1NTY0Y1x1NTYzNVx1NTY0MVx1NTY0YVx1NTY0OVx1NTY0Nlx1NTY1OCJdLFsiZTU0''@;'; put 'put ''MCIsIlx1NTY1YVx1NTY0MFx1NTYzM1x1NTYzZFx1NTYyY1x1NTYzZVx1NTYzOFx1NTYyYVx1NTYzYVx1NTcxYVx1NThhYlx1NTg5ZFx1NThiMVx1NThhMFx1NThhM1x1NThhZlx1NThhY1x1NThhNVx1NThhMVx1NThmZlx1NWFmZlx1NWFmNFx1NWFmZFx1NWFmN1x1NWFmNlx1NWIwM1x1NWFm''@;'; put 'put ''OFx1NWIwMlx1NWFmOVx1NWIwMVx1NWIwN1x1NWIwNVx1NWIwZlx1NWM2N1x1NWQ5OVx1NWQ5N1x1NWQ5Zlx1NWQ5Mlx1NWRhMlx1NWQ5M1x1NWQ5NVx1NWRhMFx1NWQ5Y1x1NWRhMVx1NWQ5YVx1NWQ5ZVx1NWU2OVx1NWU1ZFx1NWU2MFx1NWU1Y1x1N2RmM1x1NWVkYlx1NWVkZVx1NWVlMVx1''@;'; put 'put ''NWY0OVx1NWZiMlx1NjE4Ylx1NjE4M1x1NjE3OVx1NjFiMVx1NjFiMFx1NjFhMlx1NjE4OSJdLFsiZTVhMSIsIlx1NjE5Ylx1NjE5M1x1NjFhZlx1NjFhZFx1NjE5Zlx1NjE5Mlx1NjFhYVx1NjFhMVx1NjE4ZFx1NjE2Nlx1NjFiM1x1NjIyZFx1NjQ2ZVx1NjQ3MFx1NjQ5Nlx1NjRhMFx1NjQ4''@;'; put 'put ''NVx1NjQ5N1x1NjQ5Y1x1NjQ4Zlx1NjQ4Ylx1NjQ4YVx1NjQ4Y1x1NjRhM1x1NjQ5Zlx1NjQ2OFx1NjRiMVx1NjQ5OFx1NjU3Nlx1NjU3YVx1NjU3OVx1NjU3Ylx1NjViMlx1NjViM1x1NjZiNVx1NjZiMFx1NjZhOVx1NjZiMlx1NjZiN1x1NjZhYVx1NjZhZlx1NmEwMFx1NmEwNlx1NmExN1x1''@;'; put 'put ''NjllNVx1NjlmOFx1NmExNVx1NjlmMVx1NjllNFx1NmEyMFx1NjlmZlx1NjllY1x1NjllMlx1NmExYlx1NmExZFx1NjlmZVx1NmEyN1x1NjlmMlx1NjllZVx1NmExNFx1NjlmN1x1NjllN1x1NmE0MFx1NmEwOFx1NjllNlx1NjlmYlx1NmEwZFx1NjlmY1x1NjllYlx1NmEwOVx1NmEwNFx1NmEx''@;'; put 'put ''OFx1NmEyNVx1NmEwZlx1NjlmNlx1NmEyNlx1NmEwN1x1NjlmNFx1NmExNlx1NmI1MVx1NmJhNVx1NmJhM1x1NmJhMlx1NmJhNlx1NmMwMVx1NmMwMFx1NmJmZlx1NmMwMlx1NmY0MVx1NmYyNlx1NmY3ZVx1NmY4N1x1NmZjNlx1NmY5MiJdLFsiZTY0MCIsIlx1NmY4ZFx1NmY4OVx1NmY4Y1x1''@;'; put 'put ''NmY2Mlx1NmY0Zlx1NmY4NVx1NmY1YVx1NmY5Nlx1NmY3Nlx1NmY2Y1x1NmY4Mlx1NmY1NVx1NmY3Mlx1NmY1Mlx1NmY1MFx1NmY1N1x1NmY5NFx1NmY5M1x1NmY1ZFx1NmYwMFx1NmY2MVx1NmY2Ylx1NmY3ZFx1NmY2N1x1NmY5MFx1NmY1M1x1NmY4Ylx1NmY2OVx1NmY3Zlx1NmY5NVx1NmY2''@;'; put 'put ''M1x1NmY3N1x1NmY2YVx1NmY3Ylx1NzFiMlx1NzFhZlx1NzE5Ylx1NzFiMFx1NzFhMFx1NzE5YVx1NzFhOVx1NzFiNVx1NzE5ZFx1NzFhNVx1NzE5ZVx1NzFhNFx1NzFhMVx1NzFhYVx1NzE5Y1x1NzFhN1x1NzFiM1x1NzI5OFx1NzI5YVx1NzM1OFx1NzM1Mlx1NzM1ZVx1NzM1Zlx1NzM2MFx1''@;'; put 'put ''NzM1ZFx1NzM1Ylx1NzM2MVx1NzM1YVx1NzM1OSJdLFsiZTZhMSIsIlx1NzM2Mlx1NzQ4N1x1NzQ4OVx1NzQ4YVx1NzQ4Nlx1NzQ4MVx1NzQ3ZFx1NzQ4NVx1NzQ4OFx1NzQ3Y1x1NzQ3OVx1NzUwOFx1NzUwN1x1NzU3ZVx1NzYyNVx1NzYxZVx1NzYxOVx1NzYxZFx1NzYxY1x1NzYyM1x1NzYx''@;'; put 'put ''YVx1NzYyOFx1NzYxYlx1NzY5Y1x1NzY5ZFx1NzY5ZVx1NzY5Ylx1Nzc4ZFx1Nzc4Zlx1Nzc4OVx1Nzc4OFx1NzhjZFx1NzhiYlx1NzhjZlx1NzhjY1x1NzhkMVx1NzhjZVx1NzhkNFx1NzhjOFx1NzhjM1x1NzhjNFx1NzhjOVx1Nzk5YVx1NzlhMVx1NzlhMFx1Nzk5Y1x1NzlhMlx1Nzk5Ylx1''@;'; put 'put ''NmI3Nlx1N2EzOVx1N2FiMlx1N2FiNFx1N2FiM1x1N2JiN1x1N2JjYlx1N2JiZVx1N2JhY1x1N2JjZVx1N2JhZlx1N2JiOVx1N2JjYVx1N2JiNVx1N2NjNVx1N2NjOFx1N2NjY1x1N2NjYlx1N2RmN1x1N2RkYlx1N2RlYVx1N2RlN1x1N2RkN1x1N2RlMVx1N2UwM1x1N2RmYVx1N2RlNlx1N2Rm''@;'; put 'put ''Nlx1N2RmMVx1N2RmMFx1N2RlZVx1N2RkZlx1N2Y3Nlx1N2ZhY1x1N2ZiMFx1N2ZhZFx1N2ZlZFx1N2ZlYlx1N2ZlYVx1N2ZlY1x1N2ZlNlx1N2ZlOFx1ODA2NFx1ODA2N1x1ODFhM1x1ODE5ZiJdLFsiZTc0MCIsIlx1ODE5ZVx1ODE5NVx1ODFhMlx1ODE5OVx1ODE5N1x1ODIxNlx1ODI0Zlx1''@;'; put 'put ''ODI1M1x1ODI1Mlx1ODI1MFx1ODI0ZVx1ODI1MVx1ODUyNFx1ODUzYlx1ODUwZlx1ODUwMFx1ODUyOVx1ODUwZVx1ODUwOVx1ODUwZFx1ODUxZlx1ODUwYVx1ODUyN1x1ODUxY1x1ODRmYlx1ODUyYlx1ODRmYVx1ODUwOFx1ODUwY1x1ODRmNFx1ODUyYVx1ODRmMlx1ODUxNVx1ODRmN1x1ODRl''@;'; put 'put ''Ylx1ODRmM1x1ODRmY1x1ODUxMlx1ODRlYVx1ODRlOVx1ODUxNlx1ODRmZVx1ODUyOFx1ODUxZFx1ODUyZVx1ODUwMlx1ODRmZFx1ODUxZVx1ODRmNlx1ODUzMVx1ODUyNlx1ODRlN1x1ODRlOFx1ODRmMFx1ODRlZlx1ODRmOVx1ODUxOFx1ODUyMFx1ODUzMFx1ODUwYlx1ODUxOVx1ODUyZlx1''@;'; put 'put ''ODY2MiJdLFsiZTdhMSIsIlx1ODc1Nlx1ODc2M1x1ODc2NFx1ODc3N1x1ODdlMVx1ODc3M1x1ODc1OFx1ODc1NFx1ODc1Ylx1ODc1Mlx1ODc2MVx1ODc1YVx1ODc1MVx1ODc1ZVx1ODc2ZFx1ODc2YVx1ODc1MFx1ODc0ZVx1ODc1Zlx1ODc1ZFx1ODc2Zlx1ODc2Y1x1ODc3YVx1ODc2ZVx1ODc1''@;'; put 'put ''Y1x1ODc2NVx1ODc0Zlx1ODc3Ylx1ODc3NVx1ODc2Mlx1ODc2N1x1ODc2OVx1ODg1YVx1ODkwNVx1ODkwY1x1ODkxNFx1ODkwYlx1ODkxN1x1ODkxOFx1ODkxOVx1ODkwNlx1ODkxNlx1ODkxMVx1ODkwZVx1ODkwOVx1ODlhMlx1ODlhNFx1ODlhM1x1ODllZFx1ODlmMFx1ODllY1x1OGFjZlx1''@;'; put 'put ''OGFjNlx1OGFiOFx1OGFkM1x1OGFkMVx1OGFkNFx1OGFkNVx1OGFiYlx1OGFkN1x1OGFiZVx1OGFjMFx1OGFjNVx1OGFkOFx1OGFjM1x1OGFiYVx1OGFiZFx1OGFkOVx1OGMzZVx1OGM0ZFx1OGM4Zlx1OGNlNVx1OGNkZlx1OGNkOVx1OGNlOFx1OGNkYVx1OGNkZFx1OGNlN1x1OGRhMFx1OGQ5''@;'; put 'put ''Y1x1OGRhMVx1OGQ5Ylx1OGUyMFx1OGUyM1x1OGUyNVx1OGUyNFx1OGUyZVx1OGUxNVx1OGUxYlx1OGUxNlx1OGUxMVx1OGUxOVx1OGUyNlx1OGUyNyJdLFsiZTg0MCIsIlx1OGUxNFx1OGUxMlx1OGUxOFx1OGUxM1x1OGUxY1x1OGUxN1x1OGUxYVx1OGYyY1x1OGYyNFx1OGYxOFx1OGYxYVx1''@;'; put 'put ''OGYyMFx1OGYyM1x1OGYxNlx1OGYxN1x1OTA3M1x1OTA3MFx1OTA2Zlx1OTA2N1x1OTA2Ylx1OTEyZlx1OTEyYlx1OTEyOVx1OTEyYVx1OTEzMlx1OTEyNlx1OTEyZVx1OTE4NVx1OTE4Nlx1OTE4YVx1OTE4MVx1OTE4Mlx1OTE4NFx1OTE4MFx1OTJkMFx1OTJjM1x1OTJjNFx1OTJjMFx1OTJk''@;'; put 'put ''OVx1OTJiNlx1OTJjZlx1OTJmMVx1OTJkZlx1OTJkOFx1OTJlOVx1OTJkN1x1OTJkZFx1OTJjY1x1OTJlZlx1OTJjMlx1OTJlOFx1OTJjYVx1OTJjOFx1OTJjZVx1OTJlNlx1OTJjZFx1OTJkNVx1OTJjOVx1OTJlMFx1OTJkZVx1OTJlN1x1OTJkMVx1OTJkMyJdLFsiZThhMSIsIlx1OTJiNVx1''@;'; put 'put ''OTJlMVx1OTJjNlx1OTJiNFx1OTU3Y1x1OTVhY1x1OTVhYlx1OTVhZVx1OTViMFx1OTZhNFx1OTZhMlx1OTZkM1x1OTcwNVx1OTcwOFx1OTcwMlx1OTc1YVx1OTc4YVx1OTc4ZVx1OTc4OFx1OTdkMFx1OTdjZlx1OTgxZVx1OTgxZFx1OTgyNlx1OTgyOVx1OTgyOFx1OTgyMFx1OTgxYlx1OTgy''@;'; put 'put ''N1x1OThiMlx1OTkwOFx1OThmYVx1OTkxMVx1OTkxNFx1OTkxNlx1OTkxN1x1OTkxNVx1OTlkY1x1OTljZFx1OTljZlx1OTlkM1x1OTlkNFx1OTljZVx1OTljOVx1OTlkNlx1OTlkOFx1OTljYlx1OTlkN1x1OTljY1x1OWFiM1x1OWFlY1x1OWFlYlx1OWFmM1x1OWFmMlx1OWFmMVx1OWI0Nlx1''@;'; put 'put ''OWI0M1x1OWI2N1x1OWI3NFx1OWI3MVx1OWI2Nlx1OWI3Nlx1OWI3NVx1OWI3MFx1OWI2OFx1OWI2NFx1OWI2Y1x1OWNmY1x1OWNmYVx1OWNmZFx1OWNmZlx1OWNmN1x1OWQwN1x1OWQwMFx1OWNmOVx1OWNmYlx1OWQwOFx1OWQwNVx1OWQwNFx1OWU4M1x1OWVkM1x1OWYwZlx1OWYxMFx1NTEx''@;'; put 'put ''Y1x1NTExM1x1NTExN1x1NTExYVx1NTExMVx1NTFkZVx1NTMzNFx1NTNlMVx1NTY3MFx1NTY2MFx1NTY2ZSJdLFsiZTk0MCIsIlx1NTY3M1x1NTY2Nlx1NTY2M1x1NTY2ZFx1NTY3Mlx1NTY1ZVx1NTY3N1x1NTcxY1x1NTcxYlx1NThjOFx1NThiZFx1NThjOVx1NThiZlx1NThiYVx1NThjMlx1''@;'; put 'put ''NThiY1x1NThjNlx1NWIxN1x1NWIxOVx1NWIxYlx1NWIyMVx1NWIxNFx1NWIxM1x1NWIxMFx1NWIxNlx1NWIyOFx1NWIxYVx1NWIyMFx1NWIxZVx1NWJlZlx1NWRhY1x1NWRiMVx1NWRhOVx1NWRhN1x1NWRiNVx1NWRiMFx1NWRhZVx1NWRhYVx1NWRhOFx1NWRiMlx1NWRhZFx1NWRhZlx1NWRi''@;'; put 'put ''NFx1NWU2N1x1NWU2OFx1NWU2Nlx1NWU2Zlx1NWVlOVx1NWVlN1x1NWVlNlx1NWVlOFx1NWVlNVx1NWY0Ylx1NWZiY1x1NjE5ZFx1NjFhOFx1NjE5Nlx1NjFjNVx1NjFiNFx1NjFjNlx1NjFjMVx1NjFjY1x1NjFiYSJdLFsiZTlhMSIsIlx1NjFiZlx1NjFiOFx1NjE4Y1x1NjRkN1x1NjRkNlx1''@;'; put 'put ''NjRkMFx1NjRjZlx1NjRjOVx1NjRiZFx1NjQ4OVx1NjRjM1x1NjRkYlx1NjRmM1x1NjRkOVx1NjUzM1x1NjU3Zlx1NjU3Y1x1NjVhMlx1NjZjOFx1NjZiZVx1NjZjMFx1NjZjYVx1NjZjYlx1NjZjZlx1NjZiZFx1NjZiYlx1NjZiYVx1NjZjY1x1NjcyM1x1NmEzNFx1NmE2Nlx1NmE0OVx1NmE2''@;'; put 'put ''N1x1NmEzMlx1NmE2OFx1NmEzZVx1NmE1ZFx1NmE2ZFx1NmE3Nlx1NmE1Ylx1NmE1MVx1NmEyOFx1NmE1YVx1NmEzYlx1NmEzZlx1NmE0MVx1NmE2YVx1NmE2NFx1NmE1MFx1NmE0Zlx1NmE1NFx1NmE2Zlx1NmE2OVx1NmE2MFx1NmEzY1x1NmE1ZVx1NmE1Nlx1NmE1NVx1NmE0ZFx1NmE0ZVx1''@;'; put 'put ''NmE0Nlx1NmI1NVx1NmI1NFx1NmI1Nlx1NmJhN1x1NmJhYVx1NmJhYlx1NmJjOFx1NmJjN1x1NmMwNFx1NmMwM1x1NmMwNlx1NmZhZFx1NmZjYlx1NmZhM1x1NmZjN1x1NmZiY1x1NmZjZVx1NmZjOFx1NmY1ZVx1NmZjNFx1NmZiZFx1NmY5ZVx1NmZjYVx1NmZhOFx1NzAwNFx1NmZhNVx1NmZh''@;'; put 'put ''ZVx1NmZiYVx1NmZhY1x1NmZhYVx1NmZjZlx1NmZiZlx1NmZiOCJdLFsiZWE0MCIsIlx1NmZhMlx1NmZjOVx1NmZhYlx1NmZjZFx1NmZhZlx1NmZiMlx1NmZiMFx1NzFjNVx1NzFjMlx1NzFiZlx1NzFiOFx1NzFkNlx1NzFjMFx1NzFjMVx1NzFjYlx1NzFkNFx1NzFjYVx1NzFjN1x1NzFjZlx1''@;'; put 'put ''NzFiZFx1NzFkOFx1NzFiY1x1NzFjNlx1NzFkYVx1NzFkYlx1NzI5ZFx1NzI5ZVx1NzM2OVx1NzM2Nlx1NzM2N1x1NzM2Y1x1NzM2NVx1NzM2Ylx1NzM2YVx1NzQ3Zlx1NzQ5YVx1NzRhMFx1NzQ5NFx1NzQ5Mlx1NzQ5NVx1NzRhMVx1NzUwYlx1NzU4MFx1NzYyZlx1NzYyZFx1NzYzMVx1NzYz''@;'; put 'put ''ZFx1NzYzM1x1NzYzY1x1NzYzNVx1NzYzMlx1NzYzMFx1NzZiYlx1NzZlNlx1Nzc5YVx1Nzc5ZFx1NzdhMVx1Nzc5Y1x1Nzc5Ylx1NzdhMlx1NzdhM1x1Nzc5NVx1Nzc5OSJdLFsiZWFhMSIsIlx1Nzc5N1x1NzhkZFx1NzhlOVx1NzhlNVx1NzhlYVx1NzhkZVx1NzhlM1x1NzhkYlx1NzhlMVx1''@;'; put 'put ''NzhlMlx1NzhlZFx1NzhkZlx1NzhlMFx1NzlhNFx1N2E0NFx1N2E0OFx1N2E0N1x1N2FiNlx1N2FiOFx1N2FiNVx1N2FiMVx1N2FiN1x1N2JkZVx1N2JlM1x1N2JlN1x1N2JkZFx1N2JkNVx1N2JlNVx1N2JkYVx1N2JlOFx1N2JmOVx1N2JkNFx1N2JlYVx1N2JlMlx1N2JkY1x1N2JlYlx1N2Jk''@;'; put 'put ''OFx1N2JkZlx1N2NkMlx1N2NkNFx1N2NkN1x1N2NkMFx1N2NkMVx1N2UxMlx1N2UyMVx1N2UxN1x1N2UwY1x1N2UxZlx1N2UyMFx1N2UxM1x1N2UwZVx1N2UxY1x1N2UxNVx1N2UxYVx1N2UyMlx1N2UwYlx1N2UwZlx1N2UxNlx1N2UwZFx1N2UxNFx1N2UyNVx1N2UyNFx1N2Y0M1x1N2Y3Ylx1''@;'; put 'put ''N2Y3Y1x1N2Y3YVx1N2ZiMVx1N2ZlZlx1ODAyYVx1ODAyOVx1ODA2Y1x1ODFiMVx1ODFhNlx1ODFhZVx1ODFiOVx1ODFiNVx1ODFhYlx1ODFiMFx1ODFhY1x1ODFiNFx1ODFiMlx1ODFiN1x1ODFhN1x1ODFmMlx1ODI1NVx1ODI1Nlx1ODI1N1x1ODU1Nlx1ODU0NVx1ODU2Ylx1ODU0ZFx1ODU1''@;'; put 'put ''M1x1ODU2MVx1ODU1OCJdLFsiZWI0MCIsIlx1ODU0MFx1ODU0Nlx1ODU2NFx1ODU0MVx1ODU2Mlx1ODU0NFx1ODU1MVx1ODU0N1x1ODU2M1x1ODUzZVx1ODU1Ylx1ODU3MVx1ODU0ZVx1ODU2ZVx1ODU3NVx1ODU1NVx1ODU2N1x1ODU2MFx1ODU4Y1x1ODU2Nlx1ODU1ZFx1ODU1NFx1ODU2NVx1''@;'; put 'put ''ODU2Y1x1ODY2M1x1ODY2NVx1ODY2NFx1ODc5Ylx1ODc4Zlx1ODc5N1x1ODc5M1x1ODc5Mlx1ODc4OFx1ODc4MVx1ODc5Nlx1ODc5OFx1ODc3OVx1ODc4N1x1ODdhM1x1ODc4NVx1ODc5MFx1ODc5MVx1ODc5ZFx1ODc4NFx1ODc5NFx1ODc5Y1x1ODc5YVx1ODc4OVx1ODkxZVx1ODkyNlx1ODkz''@;'; put 'put ''MFx1ODkyZFx1ODkyZVx1ODkyN1x1ODkzMVx1ODkyMlx1ODkyOVx1ODkyM1x1ODkyZlx1ODkyY1x1ODkxZlx1ODlmMVx1OGFlMCJdLFsiZWJhMSIsIlx1OGFlMlx1OGFmMlx1OGFmNFx1OGFmNVx1OGFkZFx1OGIxNFx1OGFlNFx1OGFkZlx1OGFmMFx1OGFjOFx1OGFkZVx1OGFlMVx1OGFlOFx1''@;'; put 'put ''OGFmZlx1OGFlZlx1OGFmYlx1OGM5MVx1OGM5Mlx1OGM5MFx1OGNmNVx1OGNlZVx1OGNmMVx1OGNmMFx1OGNmM1x1OGQ2Y1x1OGQ2ZVx1OGRhNVx1OGRhN1x1OGUzM1x1OGUzZVx1OGUzOFx1OGU0MFx1OGU0NVx1OGUzNlx1OGUzY1x1OGUzZFx1OGU0MVx1OGUzMFx1OGUzZlx1OGViZFx1OGYz''@;'; put 'put ''Nlx1OGYyZVx1OGYzNVx1OGYzMlx1OGYzOVx1OGYzN1x1OGYzNFx1OTA3Nlx1OTA3OVx1OTA3Ylx1OTA4Nlx1OTBmYVx1OTEzM1x1OTEzNVx1OTEzNlx1OTE5M1x1OTE5MFx1OTE5MVx1OTE4ZFx1OTE4Zlx1OTMyN1x1OTMxZVx1OTMwOFx1OTMxZlx1OTMwNlx1OTMwZlx1OTM3YVx1OTMzOFx1''@;'; put 'put ''OTMzY1x1OTMxYlx1OTMyM1x1OTMxMlx1OTMwMVx1OTM0Nlx1OTMyZFx1OTMwZVx1OTMwZFx1OTJjYlx1OTMxZFx1OTJmYVx1OTMyNVx1OTMxM1x1OTJmOVx1OTJmN1x1OTMzNFx1OTMwMlx1OTMyNFx1OTJmZlx1OTMyOVx1OTMzOVx1OTMzNVx1OTMyYVx1OTMxNFx1OTMwYyJdLFsiZWM0MCIs''@;'; put 'put ''Ilx1OTMwYlx1OTJmZVx1OTMwOVx1OTMwMFx1OTJmYlx1OTMxNlx1OTViY1x1OTVjZFx1OTViZVx1OTViOVx1OTViYVx1OTViNlx1OTViZlx1OTViNVx1OTViZFx1OTZhOVx1OTZkNFx1OTcwYlx1OTcxMlx1OTcxMFx1OTc5OVx1OTc5N1x1OTc5NFx1OTdmMFx1OTdmOFx1OTgzNVx1OTgyZlx1''@;'; put 'put ''OTgzMlx1OTkyNFx1OTkxZlx1OTkyN1x1OTkyOVx1OTk5ZVx1OTllZVx1OTllY1x1OTllNVx1OTllNFx1OTlmMFx1OTllM1x1OTllYVx1OTllOVx1OTllN1x1OWFiOVx1OWFiZlx1OWFiNFx1OWFiYlx1OWFmNlx1OWFmYVx1OWFmOVx1OWFmN1x1OWIzM1x1OWI4MFx1OWI4NVx1OWI4N1x1OWI3''@;'; put 'put ''Y1x1OWI3ZVx1OWI3Ylx1OWI4Mlx1OWI5M1x1OWI5Mlx1OWI5MFx1OWI3YVx1OWI5NSJdLFsiZWNhMSIsIlx1OWI3ZFx1OWI4OFx1OWQyNVx1OWQxN1x1OWQyMFx1OWQxZVx1OWQxNFx1OWQyOVx1OWQxZFx1OWQxOFx1OWQyMlx1OWQxMFx1OWQxOVx1OWQxZlx1OWU4OFx1OWU4Nlx1OWU4N1x1''@;'; put 'put ''OWVhZVx1OWVhZFx1OWVkNVx1OWVkNlx1OWVmYVx1OWYxMlx1OWYzZFx1NTEyNlx1NTEyNVx1NTEyMlx1NTEyNFx1NTEyMFx1NTEyOVx1NTJmNFx1NTY5M1x1NTY4Y1x1NTY4ZFx1NTY4Nlx1NTY4NFx1NTY4M1x1NTY3ZVx1NTY4Mlx1NTY3Zlx1NTY4MVx1NThkNlx1NThkNFx1NThjZlx1NThk''@;'; put 'put ''Mlx1NWIyZFx1NWIyNVx1NWIzMlx1NWIyM1x1NWIyY1x1NWIyN1x1NWIyNlx1NWIyZlx1NWIyZVx1NWI3Ylx1NWJmMVx1NWJmMlx1NWRiN1x1NWU2Y1x1NWU2YVx1NWZiZVx1NWZiYlx1NjFjM1x1NjFiNVx1NjFiY1x1NjFlN1x1NjFlMFx1NjFlNVx1NjFlNFx1NjFlOFx1NjFkZVx1NjRlZlx1''@;'; put 'put ''NjRlOVx1NjRlM1x1NjRlYlx1NjRlNFx1NjRlOFx1NjU4MVx1NjU4MFx1NjViNlx1NjVkYVx1NjZkMlx1NmE4ZFx1NmE5Nlx1NmE4MVx1NmFhNVx1NmE4OVx1NmE5Zlx1NmE5Ylx1NmFhMVx1NmE5ZVx1NmE4N1x1NmE5M1x1NmE4ZSJdLFsiZWQ0MCIsIlx1NmE5NVx1NmE4M1x1NmFhOFx1NmFh''@;'; put 'put ''NFx1NmE5MVx1NmE3Zlx1NmFhNlx1NmE5YVx1NmE4NVx1NmE4Y1x1NmE5Mlx1NmI1Ylx1NmJhZFx1NmMwOVx1NmZjY1x1NmZhOVx1NmZmNFx1NmZkNFx1NmZlM1x1NmZkY1x1NmZlZFx1NmZlN1x1NmZlNlx1NmZkZVx1NmZmMlx1NmZkZFx1NmZlMlx1NmZlOFx1NzFlMVx1NzFmMVx1NzFlOFx1''@;'; put 'put ''NzFmMlx1NzFlNFx1NzFmMFx1NzFlMlx1NzM3M1x1NzM2ZVx1NzM2Zlx1NzQ5N1x1NzRiMlx1NzRhYlx1NzQ5MFx1NzRhYVx1NzRhZFx1NzRiMVx1NzRhNVx1NzRhZlx1NzUxMFx1NzUxMVx1NzUxMlx1NzUwZlx1NzU4NFx1NzY0M1x1NzY0OFx1NzY0OVx1NzY0N1x1NzZhNFx1NzZlOVx1Nzdi''@;'; put 'put ''NVx1NzdhYlx1NzdiMlx1NzdiN1x1NzdiNiJdLFsiZWRhMSIsIlx1NzdiNFx1NzdiMVx1NzdhOFx1NzdmMFx1NzhmM1x1NzhmZFx1NzkwMlx1NzhmYlx1NzhmY1x1NzhmMlx1NzkwNVx1NzhmOVx1NzhmZVx1NzkwNFx1NzlhYlx1NzlhOFx1N2E1Y1x1N2E1Ylx1N2E1Nlx1N2E1OFx1N2E1NFx1''@;'; put 'put ''N2E1YVx1N2FiZVx1N2FjMFx1N2FjMVx1N2MwNVx1N2MwZlx1N2JmMlx1N2MwMFx1N2JmZlx1N2JmYlx1N2MwZVx1N2JmNFx1N2MwYlx1N2JmM1x1N2MwMlx1N2MwOVx1N2MwM1x1N2MwMVx1N2JmOFx1N2JmZFx1N2MwNlx1N2JmMFx1N2JmMVx1N2MxMFx1N2MwYVx1N2NlOFx1N2UyZFx1N2Uz''@;'; put 'put ''Y1x1N2U0Mlx1N2UzM1x1OTg0OFx1N2UzOFx1N2UyYVx1N2U0OVx1N2U0MFx1N2U0N1x1N2UyOVx1N2U0Y1x1N2UzMFx1N2UzYlx1N2UzNlx1N2U0NFx1N2UzYVx1N2Y0NVx1N2Y3Zlx1N2Y3ZVx1N2Y3ZFx1N2ZmNFx1N2ZmMlx1ODAyY1x1ODFiYlx1ODFjNFx1ODFjY1x1ODFjYVx1ODFjNVx1''@;'; put 'put ''ODFjN1x1ODFiY1x1ODFlOVx1ODI1Ylx1ODI1YVx1ODI1Y1x1ODU4M1x1ODU4MFx1ODU4Zlx1ODVhN1x1ODU5NVx1ODVhMFx1ODU4Ylx1ODVhM1x1ODU3Ylx1ODVhNFx1ODU5YVx1ODU5ZSJdLFsiZWU0MCIsIlx1ODU3N1x1ODU3Y1x1ODU4OVx1ODVhMVx1ODU3YVx1ODU3OFx1ODU1N1x1ODU4''@;'; put 'put ''ZVx1ODU5Nlx1ODU4Nlx1ODU4ZFx1ODU5OVx1ODU5ZFx1ODU4MVx1ODVhMlx1ODU4Mlx1ODU4OFx1ODU4NVx1ODU3OVx1ODU3Nlx1ODU5OFx1ODU5MFx1ODU5Zlx1ODY2OFx1ODdiZVx1ODdhYVx1ODdhZFx1ODdjNVx1ODdiMFx1ODdhY1x1ODdiOVx1ODdiNVx1ODdiY1x1ODdhZVx1ODdjOVx1''@;'; put 'put ''ODdjM1x1ODdjMlx1ODdjY1x1ODdiN1x1ODdhZlx1ODdjNFx1ODdjYVx1ODdiNFx1ODdiNlx1ODdiZlx1ODdiOFx1ODdiZFx1ODdkZVx1ODdiMlx1ODkzNVx1ODkzM1x1ODkzY1x1ODkzZVx1ODk0MVx1ODk1Mlx1ODkzN1x1ODk0Mlx1ODlhZFx1ODlhZlx1ODlhZVx1ODlmMlx1ODlmM1x1OGIx''@;'; put 'put ''ZSJdLFsiZWVhMSIsIlx1OGIxOFx1OGIxNlx1OGIxMVx1OGIwNVx1OGIwYlx1OGIyMlx1OGIwZlx1OGIxMlx1OGIxNVx1OGIwN1x1OGIwZFx1OGIwOFx1OGIwNlx1OGIxY1x1OGIxM1x1OGIxYVx1OGM0Zlx1OGM3MFx1OGM3Mlx1OGM3MVx1OGM2Zlx1OGM5NVx1OGM5NFx1OGNmOVx1OGQ2Zlx1''@;'; put 'put ''OGU0ZVx1OGU0ZFx1OGU1M1x1OGU1MFx1OGU0Y1x1OGU0N1x1OGY0M1x1OGY0MFx1OTA4NVx1OTA3ZVx1OTEzOFx1OTE5YVx1OTFhMlx1OTE5Ylx1OTE5OVx1OTE5Zlx1OTFhMVx1OTE5ZFx1OTFhMFx1OTNhMVx1OTM4M1x1OTNhZlx1OTM2NFx1OTM1Nlx1OTM0N1x1OTM3Y1x1OTM1OFx1OTM1''@;'; put 'put ''Y1x1OTM3Nlx1OTM0OVx1OTM1MFx1OTM1MVx1OTM2MFx1OTM2ZFx1OTM4Zlx1OTM0Y1x1OTM2YVx1OTM3OVx1OTM1N1x1OTM1NVx1OTM1Mlx1OTM0Zlx1OTM3MVx1OTM3N1x1OTM3Ylx1OTM2MVx1OTM1ZVx1OTM2M1x1OTM2N1x1OTM4MFx1OTM0ZVx1OTM1OVx1OTVjN1x1OTVjMFx1OTVjOVx1''@;'; put 'put ''OTVjM1x1OTVjNVx1OTViN1x1OTZhZVx1OTZiMFx1OTZhY1x1OTcyMFx1OTcxZlx1OTcxOFx1OTcxZFx1OTcxOVx1OTc5YVx1OTdhMVx1OTc5YyJdLFsiZWY0MCIsIlx1OTc5ZVx1OTc5ZFx1OTdkNVx1OTdkNFx1OTdmMVx1OTg0MVx1OTg0NFx1OTg0YVx1OTg0OVx1OTg0NVx1OTg0M1x1OTky''@;'; put 'put ''NVx1OTkyYlx1OTkyY1x1OTkyYVx1OTkzM1x1OTkzMlx1OTkyZlx1OTkyZFx1OTkzMVx1OTkzMFx1OTk5OFx1OTlhM1x1OTlhMVx1OWEwMlx1OTlmYVx1OTlmNFx1OTlmN1x1OTlmOVx1OTlmOFx1OTlmNlx1OTlmYlx1OTlmZFx1OTlmZVx1OTlmY1x1OWEwM1x1OWFiZVx1OWFmZVx1OWFmZFx1''@;'; put 'put ''OWIwMVx1OWFmY1x1OWI0OFx1OWI5YVx1OWJhOFx1OWI5ZVx1OWI5Ylx1OWJhNlx1OWJhMVx1OWJhNVx1OWJhNFx1OWI4Nlx1OWJhMlx1OWJhMFx1OWJhZlx1OWQzM1x1OWQ0MVx1OWQ2N1x1OWQzNlx1OWQyZVx1OWQyZlx1OWQzMVx1OWQzOFx1OWQzMCJdLFsiZWZhMSIsIlx1OWQ0NVx1OWQ0''@;'; put 'put ''Mlx1OWQ0M1x1OWQzZVx1OWQzN1x1OWQ0MFx1OWQzZFx1N2ZmNVx1OWQyZFx1OWU4YVx1OWU4OVx1OWU4ZFx1OWViMFx1OWVjOFx1OWVkYVx1OWVmYlx1OWVmZlx1OWYyNFx1OWYyM1x1OWYyMlx1OWY1NFx1OWZhMFx1NTEzMVx1NTEyZFx1NTEyZVx1NTY5OFx1NTY5Y1x1NTY5N1x1NTY5YVx1''@;'; put 'put ''NTY5ZFx1NTY5OVx1NTk3MFx1NWIzY1x1NWM2OVx1NWM2YVx1NWRjMFx1NWU2ZFx1NWU2ZVx1NjFkOFx1NjFkZlx1NjFlZFx1NjFlZVx1NjFmMVx1NjFlYVx1NjFmMFx1NjFlYlx1NjFkNlx1NjFlOVx1NjRmZlx1NjUwNFx1NjRmZFx1NjRmOFx1NjUwMVx1NjUwM1x1NjRmY1x1NjU5NFx1NjVk''@;'; put 'put ''Ylx1NjZkYVx1NjZkYlx1NjZkOFx1NmFjNVx1NmFiOVx1NmFiZFx1NmFlMVx1NmFjNlx1NmFiYVx1NmFiNlx1NmFiN1x1NmFjN1x1NmFiNFx1NmFhZFx1NmI1ZVx1NmJjOVx1NmMwYlx1NzAwN1x1NzAwY1x1NzAwZFx1NzAwMVx1NzAwNVx1NzAxNFx1NzAwZVx1NmZmZlx1NzAwMFx1NmZmYlx1''@;'; put 'put ''NzAyNlx1NmZmY1x1NmZmN1x1NzAwYVx1NzIwMVx1NzFmZlx1NzFmOVx1NzIwM1x1NzFmZFx1NzM3NiJdLFsiZjA0MCIsIlx1NzRiOFx1NzRjMFx1NzRiNVx1NzRjMVx1NzRiZVx1NzRiNlx1NzRiYlx1NzRjMlx1NzUxNFx1NzUxM1x1NzY1Y1x1NzY2NFx1NzY1OVx1NzY1MFx1NzY1M1x1NzY1''@;'; put 'put ''N1x1NzY1YVx1NzZhNlx1NzZiZFx1NzZlY1x1NzdjMlx1NzdiYVx1NzhmZlx1NzkwY1x1NzkxM1x1NzkxNFx1NzkwOVx1NzkxMFx1NzkxMlx1NzkxMVx1NzlhZFx1NzlhY1x1N2E1Zlx1N2MxY1x1N2MyOVx1N2MxOVx1N2MyMFx1N2MxZlx1N2MyZFx1N2MxZFx1N2MyNlx1N2MyOFx1N2MyMlx1''@;'; put 'put ''N2MyNVx1N2MzMFx1N2U1Y1x1N2U1MFx1N2U1Nlx1N2U2M1x1N2U1OFx1N2U2Mlx1N2U1Zlx1N2U1MVx1N2U2MFx1N2U1N1x1N2U1M1x1N2ZiNVx1N2ZiM1x1N2ZmN1x1N2ZmOFx1ODA3NVx1ODFkMVx1ODFkMiJdLFsiZjBhMSIsIlx1ODFkMFx1ODI1Zlx1ODI1ZVx1ODViNFx1ODVjNlx1ODVj''@;'; put 'put ''MFx1ODVjM1x1ODVjMlx1ODViM1x1ODViNVx1ODViZFx1ODVjN1x1ODVjNFx1ODViZlx1ODVjYlx1ODVjZVx1ODVjOFx1ODVjNVx1ODViMVx1ODViNlx1ODVkMlx1ODYyNFx1ODViOFx1ODViN1x1ODViZVx1ODY2OVx1ODdlN1x1ODdlNlx1ODdlMlx1ODdkYlx1ODdlYlx1ODdlYVx1ODdlNVx1''@;'; put 'put ''ODdkZlx1ODdmM1x1ODdlNFx1ODdkNFx1ODdkY1x1ODdkM1x1ODdlZFx1ODdkOFx1ODdlM1x1ODdhNFx1ODdkN1x1ODdkOVx1ODgwMVx1ODdmNFx1ODdlOFx1ODdkZFx1ODk1M1x1ODk0Ylx1ODk0Zlx1ODk0Y1x1ODk0Nlx1ODk1MFx1ODk1MVx1ODk0OVx1OGIyYVx1OGIyN1x1OGIyM1x1OGIz''@;'; put 'put ''M1x1OGIzMFx1OGIzNVx1OGI0N1x1OGIyZlx1OGIzY1x1OGIzZVx1OGIzMVx1OGIyNVx1OGIzN1x1OGIyNlx1OGIzNlx1OGIyZVx1OGIyNFx1OGIzYlx1OGIzZFx1OGIzYVx1OGM0Mlx1OGM3NVx1OGM5OVx1OGM5OFx1OGM5N1x1OGNmZVx1OGQwNFx1OGQwMlx1OGQwMFx1OGU1Y1x1OGU2Mlx1''@;'; put 'put ''OGU2MFx1OGU1N1x1OGU1Nlx1OGU1ZVx1OGU2NVx1OGU2NyJdLFsiZjE0MCIsIlx1OGU1Ylx1OGU1YVx1OGU2MVx1OGU1ZFx1OGU2OVx1OGU1NFx1OGY0Nlx1OGY0N1x1OGY0OFx1OGY0Ylx1OTEyOFx1OTEzYVx1OTEzYlx1OTEzZVx1OTFhOFx1OTFhNVx1OTFhN1x1OTFhZlx1OTFhYVx1OTNi''@;'; put 'put ''NVx1OTM4Y1x1OTM5Mlx1OTNiN1x1OTM5Ylx1OTM5ZFx1OTM4OVx1OTNhN1x1OTM4ZVx1OTNhYVx1OTM5ZVx1OTNhNlx1OTM5NVx1OTM4OFx1OTM5OVx1OTM5Zlx1OTM4ZFx1OTNiMVx1OTM5MVx1OTNiMlx1OTNhNFx1OTNhOFx1OTNiNFx1OTNhM1x1OTNhNVx1OTVkMlx1OTVkM1x1OTVkMVx1''@;'; put 'put ''OTZiM1x1OTZkN1x1OTZkYVx1NWRjMlx1OTZkZlx1OTZkOFx1OTZkZFx1OTcyM1x1OTcyMlx1OTcyNVx1OTdhY1x1OTdhZVx1OTdhOFx1OTdhYlx1OTdhNFx1OTdhYSJdLFsiZjFhMSIsIlx1OTdhMlx1OTdhNVx1OTdkN1x1OTdkOVx1OTdkNlx1OTdkOFx1OTdmYVx1OTg1MFx1OTg1MVx1OTg1''@;'; put 'put ''Mlx1OThiOFx1OTk0MVx1OTkzY1x1OTkzYVx1OWEwZlx1OWEwYlx1OWEwOVx1OWEwZFx1OWEwNFx1OWExMVx1OWEwYVx1OWEwNVx1OWEwN1x1OWEwNlx1OWFjMFx1OWFkY1x1OWIwOFx1OWIwNFx1OWIwNVx1OWIyOVx1OWIzNVx1OWI0YVx1OWI0Y1x1OWI0Ylx1OWJjN1x1OWJjNlx1OWJjM1x1''@;'; put 'put ''OWJiZlx1OWJjMVx1OWJiNVx1OWJiOFx1OWJkM1x1OWJiNlx1OWJjNFx1OWJiOVx1OWJiZFx1OWQ1Y1x1OWQ1M1x1OWQ0Zlx1OWQ0YVx1OWQ1Ylx1OWQ0Ylx1OWQ1OVx1OWQ1Nlx1OWQ0Y1x1OWQ1N1x1OWQ1Mlx1OWQ1NFx1OWQ1Zlx1OWQ1OFx1OWQ1YVx1OWU4ZVx1OWU4Y1x1OWVkZlx1OWYw''@;'; put 'put ''MVx1OWYwMFx1OWYxNlx1OWYyNVx1OWYyYlx1OWYyYVx1OWYyOVx1OWYyOFx1OWY0Y1x1OWY1NVx1NTEzNFx1NTEzNVx1NTI5Nlx1NTJmN1x1NTNiNFx1NTZhYlx1NTZhZFx1NTZhNlx1NTZhN1x1NTZhYVx1NTZhY1x1NThkYVx1NThkZFx1NThkYlx1NTkxMlx1NWIzZFx1NWIzZVx1NWIzZlx1''@;'; put 'put ''NWRjM1x1NWU3MCJdLFsiZjI0MCIsIlx1NWZiZlx1NjFmYlx1NjUwN1x1NjUxMFx1NjUwZFx1NjUwOVx1NjUwY1x1NjUwZVx1NjU4NFx1NjVkZVx1NjVkZFx1NjZkZVx1NmFlN1x1NmFlMFx1NmFjY1x1NmFkMVx1NmFkOVx1NmFjYlx1NmFkZlx1NmFkY1x1NmFkMFx1NmFlYlx1NmFjZlx1NmFj''@;'; put 'put ''ZFx1NmFkZVx1NmI2MFx1NmJiMFx1NmMwY1x1NzAxOVx1NzAyN1x1NzAyMFx1NzAxNlx1NzAyYlx1NzAyMVx1NzAyMlx1NzAyM1x1NzAyOVx1NzAxN1x1NzAyNFx1NzAxY1x1NzAyYVx1NzIwY1x1NzIwYVx1NzIwN1x1NzIwMlx1NzIwNVx1NzJhNVx1NzJhNlx1NzJhNFx1NzJhM1x1NzJhMVx1''@;'; put 'put ''NzRjYlx1NzRjNVx1NzRiN1x1NzRjM1x1NzUxNlx1NzY2MFx1NzdjOVx1NzdjYVx1NzdjNFx1NzdmMVx1NzkxZFx1NzkxYiJdLFsiZjJhMSIsIlx1NzkyMVx1NzkxY1x1NzkxN1x1NzkxZVx1NzliMFx1N2E2N1x1N2E2OFx1N2MzM1x1N2MzY1x1N2MzOVx1N2MyY1x1N2MzYlx1N2NlY1x1N2Nl''@;'; put 'put ''YVx1N2U3Nlx1N2U3NVx1N2U3OFx1N2U3MFx1N2U3N1x1N2U2Zlx1N2U3YVx1N2U3Mlx1N2U3NFx1N2U2OFx1N2Y0Ylx1N2Y0YVx1N2Y4M1x1N2Y4Nlx1N2ZiN1x1N2ZmZFx1N2ZmZVx1ODA3OFx1ODFkN1x1ODFkNVx1ODI2NFx1ODI2MVx1ODI2M1x1ODVlYlx1ODVmMVx1ODVlZFx1ODVkOVx1''@;'; put 'put ''ODVlMVx1ODVlOFx1ODVkYVx1ODVkN1x1ODVlY1x1ODVmMlx1ODVmOFx1ODVkOFx1ODVkZlx1ODVlM1x1ODVkY1x1ODVkMVx1ODVmMFx1ODVlNlx1ODVlZlx1ODVkZVx1ODVlMlx1ODgwMFx1ODdmYVx1ODgwM1x1ODdmNlx1ODdmN1x1ODgwOVx1ODgwY1x1ODgwYlx1ODgwNlx1ODdmY1x1ODgw''@;'; put 'put ''OFx1ODdmZlx1ODgwYVx1ODgwMlx1ODk2Mlx1ODk1YVx1ODk1Ylx1ODk1N1x1ODk2MVx1ODk1Y1x1ODk1OFx1ODk1ZFx1ODk1OVx1ODk4OFx1ODliN1x1ODliNlx1ODlmNlx1OGI1MFx1OGI0OFx1OGI0YVx1OGI0MFx1OGI1M1x1OGI1Nlx1OGI1NFx1OGI0Ylx1OGI1NSJdLFsiZjM0MCIsIlx1''@;'; put 'put ''OGI1MVx1OGI0Mlx1OGI1Mlx1OGI1N1x1OGM0M1x1OGM3N1x1OGM3Nlx1OGM5YVx1OGQwNlx1OGQwN1x1OGQwOVx1OGRhY1x1OGRhYVx1OGRhZFx1OGRhYlx1OGU2ZFx1OGU3OFx1OGU3M1x1OGU2YVx1OGU2Zlx1OGU3Ylx1OGVjMlx1OGY1Mlx1OGY1MVx1OGY0Zlx1OGY1MFx1OGY1M1x1OGZi''@;'; put 'put ''NFx1OTE0MFx1OTEzZlx1OTFiMFx1OTFhZFx1OTNkZVx1OTNjN1x1OTNjZlx1OTNjMlx1OTNkYVx1OTNkMFx1OTNmOVx1OTNlY1x1OTNjY1x1OTNkOVx1OTNhOVx1OTNlNlx1OTNjYVx1OTNkNFx1OTNlZVx1OTNlM1x1OTNkNVx1OTNjNFx1OTNjZVx1OTNjMFx1OTNkMlx1OTNlN1x1OTU3ZFx1''@;'; put 'put ''OTVkYVx1OTVkYlx1OTZlMVx1OTcyOVx1OTcyYlx1OTcyY1x1OTcyOFx1OTcyNiJdLFsiZjNhMSIsIlx1OTdiM1x1OTdiN1x1OTdiNlx1OTdkZFx1OTdkZVx1OTdkZlx1OTg1Y1x1OTg1OVx1OTg1ZFx1OTg1N1x1OThiZlx1OThiZFx1OThiYlx1OThiZVx1OTk0OFx1OTk0N1x1OTk0M1x1OTlh''@;'; put 'put ''Nlx1OTlhN1x1OWExYVx1OWExNVx1OWEyNVx1OWExZFx1OWEyNFx1OWExYlx1OWEyMlx1OWEyMFx1OWEyN1x1OWEyM1x1OWExZVx1OWExY1x1OWExNFx1OWFjMlx1OWIwYlx1OWIwYVx1OWIwZVx1OWIwY1x1OWIzN1x1OWJlYVx1OWJlYlx1OWJlMFx1OWJkZVx1OWJlNFx1OWJlNlx1OWJlMlx1''@;'; put 'put ''OWJmMFx1OWJkNFx1OWJkN1x1OWJlY1x1OWJkY1x1OWJkOVx1OWJlNVx1OWJkNVx1OWJlMVx1OWJkYVx1OWQ3N1x1OWQ4MVx1OWQ4YVx1OWQ4NFx1OWQ4OFx1OWQ3MVx1OWQ4MFx1OWQ3OFx1OWQ4Nlx1OWQ4Ylx1OWQ4Y1x1OWQ3ZFx1OWQ2Ylx1OWQ3NFx1OWQ3NVx1OWQ3MFx1OWQ2OVx1OWQ4''@;'; put 'put ''NVx1OWQ3M1x1OWQ3Ylx1OWQ4Mlx1OWQ2Zlx1OWQ3OVx1OWQ3Zlx1OWQ4N1x1OWQ2OFx1OWU5NFx1OWU5MVx1OWVjMFx1OWVmY1x1OWYyZFx1OWY0MFx1OWY0MVx1OWY0ZFx1OWY1Nlx1OWY1N1x1OWY1OFx1NTMzN1x1NTZiMiJdLFsiZjQ0MCIsIlx1NTZiNVx1NTZiM1x1NThlM1x1NWI0NVx1''@;'; put 'put ''NWRjNlx1NWRjN1x1NWVlZVx1NWVlZlx1NWZjMFx1NWZjMVx1NjFmOVx1NjUxN1x1NjUxNlx1NjUxNVx1NjUxM1x1NjVkZlx1NjZlOFx1NjZlM1x1NjZlNFx1NmFmM1x1NmFmMFx1NmFlYVx1NmFlOFx1NmFmOVx1NmFmMVx1NmFlZVx1NmFlZlx1NzAzY1x1NzAzNVx1NzAyZlx1NzAzN1x1NzAz''@;'; put 'put ''NFx1NzAzMVx1NzA0Mlx1NzAzOFx1NzAzZlx1NzAzYVx1NzAzOVx1NzA0MFx1NzAzYlx1NzAzM1x1NzA0MVx1NzIxM1x1NzIxNFx1NzJhOFx1NzM3ZFx1NzM3Y1x1NzRiYVx1NzZhYlx1NzZhYVx1NzZiZVx1NzZlZFx1NzdjY1x1NzdjZVx1NzdjZlx1NzdjZFx1NzdmMlx1NzkyNVx1NzkyM1x1''@;'; put 'put ''NzkyN1x1NzkyOFx1NzkyNFx1NzkyOSJdLFsiZjRhMSIsIlx1NzliMlx1N2E2ZVx1N2E2Y1x1N2E2ZFx1N2FmN1x1N2M0OVx1N2M0OFx1N2M0YVx1N2M0N1x1N2M0NVx1N2NlZVx1N2U3Ylx1N2U3ZVx1N2U4MVx1N2U4MFx1N2ZiYVx1N2ZmZlx1ODA3OVx1ODFkYlx1ODFkOVx1ODIwYlx1ODI2''@;'; put 'put ''OFx1ODI2OVx1ODYyMlx1ODVmZlx1ODYwMVx1ODVmZVx1ODYxYlx1ODYwMFx1ODVmNlx1ODYwNFx1ODYwOVx1ODYwNVx1ODYwY1x1ODVmZFx1ODgxOVx1ODgxMFx1ODgxMVx1ODgxN1x1ODgxM1x1ODgxNlx1ODk2M1x1ODk2Nlx1ODliOVx1ODlmN1x1OGI2MFx1OGI2YVx1OGI1ZFx1OGI2OFx1''@;'; put 'put ''OGI2M1x1OGI2NVx1OGI2N1x1OGI2ZFx1OGRhZVx1OGU4Nlx1OGU4OFx1OGU4NFx1OGY1OVx1OGY1Nlx1OGY1N1x1OGY1NVx1OGY1OFx1OGY1YVx1OTA4ZFx1OTE0M1x1OTE0MVx1OTFiN1x1OTFiNVx1OTFiMlx1OTFiM1x1OTQwYlx1OTQxM1x1OTNmYlx1OTQyMFx1OTQwZlx1OTQxNFx1OTNm''@;'; put 'put ''ZVx1OTQxNVx1OTQxMFx1OTQyOFx1OTQxOVx1OTQwZFx1OTNmNVx1OTQwMFx1OTNmN1x1OTQwN1x1OTQwZVx1OTQxNlx1OTQxMlx1OTNmYVx1OTQwOVx1OTNmOFx1OTQwYVx1OTNmZiJdLFsiZjU0MCIsIlx1OTNmY1x1OTQwY1x1OTNmNlx1OTQxMVx1OTQwNlx1OTVkZVx1OTVlMFx1OTVkZlx1''@;'; put 'put ''OTcyZVx1OTcyZlx1OTdiOVx1OTdiYlx1OTdmZFx1OTdmZVx1OTg2MFx1OTg2Mlx1OTg2M1x1OTg1Zlx1OThjMVx1OThjMlx1OTk1MFx1OTk0ZVx1OTk1OVx1OTk0Y1x1OTk0Ylx1OTk1M1x1OWEzMlx1OWEzNFx1OWEzMVx1OWEyY1x1OWEyYVx1OWEzNlx1OWEyOVx1OWEyZVx1OWEzOFx1OWEy''@;'; put 'put ''ZFx1OWFjN1x1OWFjYVx1OWFjNlx1OWIxMFx1OWIxMlx1OWIxMVx1OWMwYlx1OWMwOFx1OWJmN1x1OWMwNVx1OWMxMlx1OWJmOFx1OWM0MFx1OWMwN1x1OWMwZVx1OWMwNlx1OWMxN1x1OWMxNFx1OWMwOVx1OWQ5Zlx1OWQ5OVx1OWRhNFx1OWQ5ZFx1OWQ5Mlx1OWQ5OFx1OWQ5MFx1OWQ5YiJd''@;'; put 'put ''LFsiZjVhMSIsIlx1OWRhMFx1OWQ5NFx1OWQ5Y1x1OWRhYVx1OWQ5N1x1OWRhMVx1OWQ5YVx1OWRhMlx1OWRhOFx1OWQ5ZVx1OWRhM1x1OWRiZlx1OWRhOVx1OWQ5Nlx1OWRhNlx1OWRhN1x1OWU5OVx1OWU5Ylx1OWU5YVx1OWVlNVx1OWVlNFx1OWVlN1x1OWVlNlx1OWYzMFx1OWYyZVx1OWY1''@;'; put 'put ''Ylx1OWY2MFx1OWY1ZVx1OWY1ZFx1OWY1OVx1OWY5MVx1NTEzYVx1NTEzOVx1NTI5OFx1NTI5N1x1NTZjM1x1NTZiZFx1NTZiZVx1NWI0OFx1NWI0N1x1NWRjYlx1NWRjZlx1NWVmMVx1NjFmZFx1NjUxYlx1NmIwMlx1NmFmY1x1NmIwM1x1NmFmOFx1NmIwMFx1NzA0M1x1NzA0NFx1NzA0YVx1''@;'; put 'put ''NzA0OFx1NzA0OVx1NzA0NVx1NzA0Nlx1NzIxZFx1NzIxYVx1NzIxOVx1NzM3ZVx1NzUxN1x1NzY2YVx1NzdkMFx1NzkyZFx1NzkzMVx1NzkyZlx1N2M1NFx1N2M1M1x1N2NmMlx1N2U4YVx1N2U4N1x1N2U4OFx1N2U4Ylx1N2U4Nlx1N2U4ZFx1N2Y0ZFx1N2ZiYlx1ODAzMFx1ODFkZFx1ODYx''@;'; put 'put ''OFx1ODYyYVx1ODYyNlx1ODYxZlx1ODYyM1x1ODYxY1x1ODYxOVx1ODYyN1x1ODYyZVx1ODYyMVx1ODYyMFx1ODYyOVx1ODYxZVx1ODYyNSJdLFsiZjY0MCIsIlx1ODgyOVx1ODgxZFx1ODgxYlx1ODgyMFx1ODgyNFx1ODgxY1x1ODgyYlx1ODg0YVx1ODk2ZFx1ODk2OVx1ODk2ZVx1ODk2Ylx1''@;'; put 'put ''ODlmYVx1OGI3OVx1OGI3OFx1OGI0NVx1OGI3YVx1OGI3Ylx1OGQxMFx1OGQxNFx1OGRhZlx1OGU4ZVx1OGU4Y1x1OGY1ZVx1OGY1Ylx1OGY1ZFx1OTE0Nlx1OTE0NFx1OTE0NVx1OTFiOVx1OTQzZlx1OTQzYlx1OTQzNlx1OTQyOVx1OTQzZFx1OTQzY1x1OTQzMFx1OTQzOVx1OTQyYVx1OTQz''@;'; put 'put ''N1x1OTQyY1x1OTQ0MFx1OTQzMVx1OTVlNVx1OTVlNFx1OTVlM1x1OTczNVx1OTczYVx1OTdiZlx1OTdlMVx1OTg2NFx1OThjOVx1OThjNlx1OThjMFx1OTk1OFx1OTk1Nlx1OWEzOVx1OWEzZFx1OWE0Nlx1OWE0NFx1OWE0Mlx1OWE0MVx1OWEzYSJdLFsiZjZhMSIsIlx1OWEzZlx1OWFjZFx1''@;'; put 'put ''OWIxNVx1OWIxN1x1OWIxOFx1OWIxNlx1OWIzYVx1OWI1Mlx1OWMyYlx1OWMxZFx1OWMxY1x1OWMyY1x1OWMyM1x1OWMyOFx1OWMyOVx1OWMyNFx1OWMyMVx1OWRiN1x1OWRiNlx1OWRiY1x1OWRjMVx1OWRjN1x1OWRjYVx1OWRjZlx1OWRiZVx1OWRjNVx1OWRjM1x1OWRiYlx1OWRiNVx1OWRj''@;'; put 'put ''ZVx1OWRiOVx1OWRiYVx1OWRhY1x1OWRjOFx1OWRiMVx1OWRhZFx1OWRjY1x1OWRiM1x1OWRjZFx1OWRiMlx1OWU3YVx1OWU5Y1x1OWVlYlx1OWVlZVx1OWVlZFx1OWYxYlx1OWYxOFx1OWYxYVx1OWYzMVx1OWY0ZVx1OWY2NVx1OWY2NFx1OWY5Mlx1NGViOVx1NTZjNlx1NTZjNVx1NTZjYlx1''@;'; put 'put ''NTk3MVx1NWI0Ylx1NWI0Y1x1NWRkNVx1NWRkMVx1NWVmMlx1NjUyMVx1NjUyMFx1NjUyNlx1NjUyMlx1NmIwYlx1NmIwOFx1NmIwOVx1NmMwZFx1NzA1NVx1NzA1Nlx1NzA1N1x1NzA1Mlx1NzIxZVx1NzIxZlx1NzJhOVx1NzM3Zlx1NzRkOFx1NzRkNVx1NzRkOVx1NzRkN1x1NzY2ZFx1NzZh''@;'; put 'put ''ZFx1NzkzNVx1NzliNFx1N2E3MFx1N2E3MVx1N2M1N1x1N2M1Y1x1N2M1OVx1N2M1Ylx1N2M1YSJdLFsiZjc0MCIsIlx1N2NmNFx1N2NmMVx1N2U5MVx1N2Y0Zlx1N2Y4N1x1ODFkZVx1ODI2Ylx1ODYzNFx1ODYzNVx1ODYzM1x1ODYyY1x1ODYzMlx1ODYzNlx1ODgyY1x1ODgyOFx1ODgyNlx1''@;'; put 'put ''ODgyYVx1ODgyNVx1ODk3MVx1ODliZlx1ODliZVx1ODlmYlx1OGI3ZVx1OGI4NFx1OGI4Mlx1OGI4Nlx1OGI4NVx1OGI3Zlx1OGQxNVx1OGU5NVx1OGU5NFx1OGU5YVx1OGU5Mlx1OGU5MFx1OGU5Nlx1OGU5N1x1OGY2MFx1OGY2Mlx1OTE0N1x1OTQ0Y1x1OTQ1MFx1OTQ0YVx1OTQ0Ylx1OTQ0''@;'; put 'put ''Zlx1OTQ0N1x1OTQ0NVx1OTQ0OFx1OTQ0OVx1OTQ0Nlx1OTczZlx1OTdlM1x1OTg2YVx1OTg2OVx1OThjYlx1OTk1NFx1OTk1Ylx1OWE0ZVx1OWE1M1x1OWE1NFx1OWE0Y1x1OWE0Zlx1OWE0OFx1OWE0YSJdLFsiZjdhMSIsIlx1OWE0OVx1OWE1Mlx1OWE1MFx1OWFkMFx1OWIxOVx1OWIyYlx1''@;'; put 'put ''OWIzYlx1OWI1Nlx1OWI1NVx1OWM0Nlx1OWM0OFx1OWMzZlx1OWM0NFx1OWMzOVx1OWMzM1x1OWM0MVx1OWMzY1x1OWMzN1x1OWMzNFx1OWMzMlx1OWMzZFx1OWMzNlx1OWRkYlx1OWRkMlx1OWRkZVx1OWRkYVx1OWRjYlx1OWRkMFx1OWRkY1x1OWRkMVx1OWRkZlx1OWRlOVx1OWRkOVx1OWRk''@;'; put 'put ''OFx1OWRkNlx1OWRmNVx1OWRkNVx1OWRkZFx1OWViNlx1OWVmMFx1OWYzNVx1OWYzM1x1OWYzMlx1OWY0Mlx1OWY2Ylx1OWY5NVx1OWZhMlx1NTEzZFx1NTI5OVx1NThlOFx1NThlN1x1NTk3Mlx1NWI0ZFx1NWRkOFx1ODgyZlx1NWY0Zlx1NjIwMVx1NjIwM1x1NjIwNFx1NjUyOVx1NjUyNVx1''@;'; put 'put ''NjU5Nlx1NjZlYlx1NmIxMVx1NmIxMlx1NmIwZlx1NmJjYVx1NzA1Ylx1NzA1YVx1NzIyMlx1NzM4Mlx1NzM4MVx1NzM4M1x1NzY3MFx1NzdkNFx1N2M2N1x1N2M2Nlx1N2U5NVx1ODI2Y1x1ODYzYVx1ODY0MFx1ODYzOVx1ODYzY1x1ODYzMVx1ODYzYlx1ODYzZVx1ODgzMFx1ODgzMlx1ODgy''@;'; put 'put ''ZVx1ODgzM1x1ODk3Nlx1ODk3NFx1ODk3M1x1ODlmZSJdLFsiZjg0MCIsIlx1OGI4Y1x1OGI4ZVx1OGI4Ylx1OGI4OFx1OGM0NVx1OGQxOVx1OGU5OFx1OGY2NFx1OGY2M1x1OTFiY1x1OTQ2Mlx1OTQ1NVx1OTQ1ZFx1OTQ1N1x1OTQ1ZVx1OTdjNFx1OTdjNVx1OTgwMFx1OWE1Nlx1OWE1OVx1''@;'; put 'put ''OWIxZVx1OWIxZlx1OWIyMFx1OWM1Mlx1OWM1OFx1OWM1MFx1OWM0YVx1OWM0ZFx1OWM0Ylx1OWM1NVx1OWM1OVx1OWM0Y1x1OWM0ZVx1OWRmYlx1OWRmN1x1OWRlZlx1OWRlM1x1OWRlYlx1OWRmOFx1OWRlNFx1OWRmNlx1OWRlMVx1OWRlZVx1OWRlNlx1OWRmMlx1OWRmMFx1OWRlMlx1OWRl''@;'; put 'put ''Y1x1OWRmNFx1OWRmM1x1OWRlOFx1OWRlZFx1OWVjMlx1OWVkMFx1OWVmMlx1OWVmM1x1OWYwNlx1OWYxY1x1OWYzOFx1OWYzN1x1OWYzNlx1OWY0M1x1OWY0ZiJdLFsiZjhhMSIsIlx1OWY3MVx1OWY3MFx1OWY2ZVx1OWY2Zlx1NTZkM1x1NTZjZFx1NWI0ZVx1NWM2ZFx1NjUyZFx1NjZlZFx1''@;'; put 'put ''NjZlZVx1NmIxM1x1NzA1Zlx1NzA2MVx1NzA1ZFx1NzA2MFx1NzIyM1x1NzRkYlx1NzRlNVx1NzdkNVx1NzkzOFx1NzliN1x1NzliNlx1N2M2YVx1N2U5N1x1N2Y4OVx1ODI2ZFx1ODY0M1x1ODgzOFx1ODgzN1x1ODgzNVx1ODg0Ylx1OGI5NFx1OGI5NVx1OGU5ZVx1OGU5Zlx1OGVhMFx1OGU5''@;'; put 'put ''ZFx1OTFiZVx1OTFiZFx1OTFjMlx1OTQ2Ylx1OTQ2OFx1OTQ2OVx1OTZlNVx1OTc0Nlx1OTc0M1x1OTc0N1x1OTdjN1x1OTdlNVx1OWE1ZVx1OWFkNVx1OWI1OVx1OWM2M1x1OWM2N1x1OWM2Nlx1OWM2Mlx1OWM1ZVx1OWM2MFx1OWUwMlx1OWRmZVx1OWUwN1x1OWUwM1x1OWUwNlx1OWUwNVx1''@;'; put 'put ''OWUwMFx1OWUwMVx1OWUwOVx1OWRmZlx1OWRmZFx1OWUwNFx1OWVhMFx1OWYxZVx1OWY0Nlx1OWY3NFx1OWY3NVx1OWY3Nlx1NTZkNFx1NjUyZVx1NjViOFx1NmIxOFx1NmIxOVx1NmIxN1x1NmIxYVx1NzA2Mlx1NzIyNlx1NzJhYVx1NzdkOFx1NzdkOVx1NzkzOVx1N2M2OVx1N2M2Ylx1N2Nm''@;'; put 'put ''Nlx1N2U5YSJdLFsiZjk0MCIsIlx1N2U5OFx1N2U5Ylx1N2U5OVx1ODFlMFx1ODFlMVx1ODY0Nlx1ODY0N1x1ODY0OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ODk3Ylx1ODlmZlx1OGI5OFx1OGI5OVx1OGVhNVx1OGVhNFx1OGVhM1x1OTQ2ZVx1OTQ2ZFx1OTQ2Zlx1OTQ3MVx1OTQ3M1x1OTc0OVx1''@;'; put 'put ''OTg3Mlx1OTk1Zlx1OWM2OFx1OWM2ZVx1OWM2ZFx1OWUwYlx1OWUwZFx1OWUxMFx1OWUwZlx1OWUxMlx1OWUxMVx1OWVhMVx1OWVmNVx1OWYwOVx1OWY0N1x1OWY3OFx1OWY3Ylx1OWY3YVx1OWY3OVx1NTcxZVx1NzA2Nlx1N2M2Zlx1ODgzY1x1OGRiMlx1OGVhNlx1OTFjM1x1OTQ3NFx1OTQ3''@;'; put 'put ''OFx1OTQ3Nlx1OTQ3NVx1OWE2MFx1OWM3NFx1OWM3M1x1OWM3MVx1OWM3NVx1OWUxNFx1OWUxM1x1OWVmNlx1OWYwYSJdLFsiZjlhMSIsIlx1OWZhNFx1NzA2OFx1NzA2NVx1N2NmN1x1ODY2YVx1ODgzZVx1ODgzZFx1ODgzZlx1OGI5ZVx1OGM5Y1x1OGVhOVx1OGVjOVx1OTc0Ylx1OTg3M1x1''@;'; put 'put ''OTg3NFx1OThjY1x1OTk2MVx1OTlhYlx1OWE2NFx1OWE2Nlx1OWE2N1x1OWIyNFx1OWUxNVx1OWUxN1x1OWY0OFx1NjIwN1x1NmIxZVx1NzIyN1x1ODY0Y1x1OGVhOFx1OTQ4Mlx1OTQ4MFx1OTQ4MVx1OWE2OVx1OWE2OFx1OWIyZVx1OWUxOVx1NzIyOVx1ODY0Ylx1OGI5Zlx1OTQ4M1x1OWM3''@;'; put 'put ''OVx1OWViN1x1NzY3NVx1OWE2Ylx1OWM3YVx1OWUxZFx1NzA2OVx1NzA2YVx1OWVhNFx1OWY3ZVx1OWY0OVx1OWY5OFx1Nzg4MVx1OTJiOVx1ODhjZlx1NThiYlx1NjA1Mlx1N2NhN1x1NWFmYVx1MjU1NFx1MjU2Nlx1MjU1N1x1MjU2MFx1MjU2Y1x1MjU2M1x1MjU1YVx1MjU2OVx1MjU1ZFx1''@;'; put 'put ''MjU1Mlx1MjU2NFx1MjU1NVx1MjU1ZVx1MjU2YVx1MjU2MVx1MjU1OFx1MjU2N1x1MjU1Ylx1MjU1M1x1MjU2NVx1MjU1Nlx1MjU1Zlx1MjU2Ylx1MjU2Mlx1MjU1OVx1MjU2OFx1MjU1Y1x1MjU1MVx1MjU1MFx1MjU2ZFx1MjU2ZVx1MjU3MFx1MjU2Zlx1MjU5MyJdXScpfSwzMTUzMjpYZT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjddLFsiOGVhMSIsIlx1ZmY2MSIsNjJdLFsiYTFhMSIsIlx1MzAwMFx1MzAwMVx1MzAwMlx1ZmYwY1x1ZmYwZVx1MzBmYlx1ZmYxYVx1ZmYxYlx1ZmYxZlx1ZmYwMVx1MzA5Ylx1MzA5Y1x4YjRc''@;'; put 'put ''dWZmNDBceGE4XHVmZjNlXHVmZmUzXHVmZjNmXHUzMGZkXHUzMGZlXHUzMDlkXHUzMDllXHUzMDAzXHU0ZWRkXHUzMDA1XHUzMDA2XHUzMDA3XHUzMGZjXHUyMDE1XHUyMDEwXHVmZjBmXHVmZjNjXHVmZjVlXHUyMjI1XHVmZjVjXHUyMDI2XHUyMDI1XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFk''@;'; put 'put ''XHVmZjA4XHVmZjA5XHUzMDE0XHUzMDE1XHVmZjNiXHVmZjNkXHVmZjViXHVmZjVkXHUzMDA4Iiw5LCJcdWZmMGJcdWZmMGRceGIxXHhkN1x4ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAz''@;'; put 'put ''XHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVmZjA1XHVmZjAzXHVmZjA2XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjNyJdLFsiYTJhMSIsIlx1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAxMlx1MjE5''@;'; put 'put ''Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxMyJdLFsiYTJiYSIsIlx1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOSJdLFsiYTJjYSIsIlx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwMyJdLFsiYTJkYyIsIlx1MjIyMFx1MjJhNVx1''@;'; put 'put ''MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyYyJdLFsiYTJmMiIsIlx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjYiXSxbImEyZmUiLCJcdTI1ZWYiXSxbImEzYjAiLCJc''@;'; put 'put ''dWZmMTAiLDldLFsiYTNjMSIsIlx1ZmYyMSIsMjVdLFsiYTNlMSIsIlx1ZmY0MSIsMjVdLFsiYTRhMSIsIlx1MzA0MSIsODJdLFsiYTVhMSIsIlx1MzBhMSIsODVdLFsiYTZhMSIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyJhNmMxIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbImE3YTEi''@;'; put 'put ''LCJcdTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsMjVdLFsiYTdkMSIsIlx1MDQzMCIsNSwiXHUwNDUxXHUwNDM2IiwyNV0sWyJhOGExIiwiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE4XHUyNTE0XHUyNTFjXHUyNTJjXHUyNTI0XHUyNTM0XHUyNTNjXHUyNTAxXHUyNTAzXHUyNTBmXHUy''@;'; put 'put ''NTEzXHUyNTFiXHUyNTE3XHUyNTIzXHUyNTMzXHUyNTJiXHUyNTNiXHUyNTRiXHUyNTIwXHUyNTJmXHUyNTI4XHUyNTM3XHUyNTNmXHUyNTFkXHUyNTMwXHUyNTI1XHUyNTM4XHUyNTQyIl0sWyJhZGExIiwiXHUyNDYwIiwxOSwiXHUyMTYwIiw5XSxbImFkYzAiLCJcdTMzNDlcdTMzMTRcdTMz''@;'; put 'put ''MjJcdTMzNGRcdTMzMThcdTMzMjdcdTMzMDNcdTMzMzZcdTMzNTFcdTMzNTdcdTMzMGRcdTMzMjZcdTMzMjNcdTMzMmJcdTMzNGFcdTMzM2JcdTMzOWNcdTMzOWRcdTMzOWVcdTMzOGVcdTMzOGZcdTMzYzRcdTMzYTEiXSxbImFkZGYiLCJcdTMzN2JcdTMwMWRcdTMwMWZcdTIxMTZcdTMzY2Rc''@;'; put 'put ''dTIxMjFcdTMyYTQiLDQsIlx1MzIzMVx1MzIzMlx1MzIzOVx1MzM3ZVx1MzM3ZFx1MzM3Y1x1MjI1Mlx1MjI2MVx1MjIyYlx1MjIyZVx1MjIxMVx1MjIxYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MjIzNVx1MjIyOVx1MjIyYSJdLFsiYjBhMSIsIlx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYz''@;'; put 'put ''Zlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMxY1x1N2E1MFx1NjBhYVx1NjNlMVx1NmUyNVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1OThmNFx1N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1''@;'; put 'put ''N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1OTVjN1x1OTc4ZFx1Njc0Zlx1NGVlNVx1NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3MFx1NjYxM1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3''@;'; put 'put ''MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIwMlx1OTA1NVx1OTA3YVx1NTMzYlx1NGU5NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1ODI4Ylx1OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1''@;'; put 'put ''NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1ODUyZCJdLFsiYjFhMSIsIlx1OTY2Mlx1OTY3MFx1OTZhMFx1OTdmYlx1NTQwYlx1NTNmM1x1NWI4N1x1NzBjZlx1N2ZiZFx1OGZjMlx1OTZlOFx1NTM2Zlx1OWQ1Y1x1N2FiYVx1NGUxMVx1Nzg5M1x1ODFmY1x1NmUy''@;'; put 'put ''Nlx1NTYxOFx1NTUwNFx1NmIxZFx1ODUxYVx1OWMzYlx1NTllNVx1NTNhOVx1NmQ2Nlx1NzRkY1x1OTU4Zlx1NTY0Mlx1NGU5MVx1OTA0Ylx1OTZmMlx1ODM0Zlx1OTkwY1x1NTNlMVx1NTViNlx1NWIzMFx1NWY3MVx1NjYyMFx1NjZmM1x1NjgwNFx1NmMzOFx1NmNmM1x1NmQyOVx1NzQ1Ylx1''@;'; put 'put ''NzZjOFx1N2E0ZVx1OTgzNFx1ODJmMVx1ODg1Ylx1OGE2MFx1OTJlZFx1NmRiMlx1NzVhYlx1NzZjYVx1OTljNVx1NjBhNlx1OGIwMVx1OGQ4YVx1OTViMlx1Njk4ZVx1NTNhZFx1NTE4Nlx1NTcxMlx1NTgzMFx1NTk0NFx1NWJiNFx1NWVmNlx1NjAyOFx1NjNhOVx1NjNmNFx1NmNiZlx1NmYx''@;'; put 'put ''NFx1NzA4ZVx1NzExNFx1NzE1OVx1NzFkNVx1NzMzZlx1N2UwMVx1ODI3Nlx1ODJkMVx1ODU5N1x1OTA2MFx1OTI1Ylx1OWQxYlx1NTg2OVx1NjViY1x1NmM1YVx1NzUyNVx1NTFmOVx1NTkyZVx1NTk2NVx1NWY4MFx1NWZkYyJdLFsiYjJhMSIsIlx1NjJiY1x1NjVmYVx1NmEyYVx1NmIyN1x1''@;'; put 'put ''NmJiNFx1NzM4Ylx1N2ZjMVx1ODk1Nlx1OWQyY1x1OWQwZVx1OWVjNFx1NWNhMVx1NmM5Nlx1ODM3Ylx1NTEwNFx1NWM0Ylx1NjFiNlx1ODFjNlx1Njg3Nlx1NzI2MVx1NGU1OVx1NGZmYVx1NTM3OFx1NjA2OVx1NmUyOVx1N2E0Zlx1OTdmM1x1NGUwYlx1NTMxNlx1NGVlZVx1NGY1NVx1NGYz''@;'; put 'put ''ZFx1NGZhMVx1NGY3M1x1NTJhMFx1NTNlZlx1NTYwOVx1NTkwZlx1NWFjMVx1NWJiNlx1NWJlMVx1NzlkMVx1NjY4N1x1Njc5Y1x1NjdiNlx1NmI0Y1x1NmNiM1x1NzA2Ylx1NzNjMlx1Nzk4ZFx1NzliZVx1N2EzY1x1N2I4N1x1ODJiMVx1ODJkYlx1ODMwNFx1ODM3N1x1ODNlZlx1ODNkM1x1''@;'; put 'put ''ODc2Nlx1OGFiMlx1NTYyOVx1OGNhOFx1OGZlNlx1OTA0ZVx1OTcxZVx1ODY4YVx1NGZjNFx1NWNlOFx1NjIxMVx1NzI1OVx1NzUzYlx1ODFlNVx1ODJiZFx1ODZmZVx1OGNjMFx1OTZjNVx1OTkxM1x1OTlkNVx1NGVjYlx1NGYxYVx1ODllM1x1NTZkZVx1NTg0YVx1NThjYVx1NWVmYlx1NWZl''@;'; put 'put ''Ylx1NjAyYVx1NjA5NFx1NjA2Mlx1NjFkMFx1NjIxMlx1NjJkMFx1NjUzOSJdLFsiYjNhMSIsIlx1OWI0MVx1NjY2Nlx1NjhiMFx1NmQ3N1x1NzA3MFx1NzU0Y1x1NzY4Nlx1N2Q3NVx1ODJhNVx1ODdmOVx1OTU4Ylx1OTY4ZVx1OGM5ZFx1NTFmMVx1NTJiZVx1NTkxNlx1NTRiM1x1NWJiM1x1''@;'; put 'put ''NWQxNlx1NjE2OFx1Njk4Mlx1NmRhZlx1Nzg4ZFx1ODRjYlx1ODg1N1x1OGE3Mlx1OTNhN1x1OWFiOFx1NmQ2Y1x1OTlhOFx1ODZkOVx1NTdhM1x1NjdmZlx1ODZjZVx1OTIwZVx1NTI4M1x1NTY4N1x1NTQwNFx1NWVkM1x1NjJlMVx1NjRiOVx1NjgzY1x1NjgzOFx1NmJiYlx1NzM3Mlx1Nzhi''@;'; put 'put ''YVx1N2E2Ylx1ODk5YVx1ODlkMlx1OGQ2Ylx1OGYwM1x1OTBlZFx1OTVhM1x1OTY5NFx1OTc2OVx1NWI2Nlx1NWNiM1x1Njk3ZFx1OTg0ZFx1OTg0ZVx1NjM5Ylx1N2IyMFx1NmEyYlx1NmE3Zlx1NjhiNlx1OWMwZFx1NmY1Zlx1NTI3Mlx1NTU5ZFx1NjA3MFx1NjJlY1x1NmQzYlx1NmUwN1x1''@;'; put 'put ''NmVkMVx1ODQ1Ylx1ODkxMFx1OGY0NFx1NGUxNFx1OWMzOVx1NTNmNlx1NjkxYlx1NmEzYVx1OTc4NFx1NjgyYVx1NTE1Y1x1N2FjM1x1ODRiMlx1OTFkY1x1OTM4Y1x1NTY1Ylx1OWQyOFx1NjgyMlx1ODMwNVx1ODQzMSJdLFsiYjRhMSIsIlx1N2NhNVx1NTIwOFx1ODJjNVx1NzRlNlx1NGU3''@;'; put 'put ''ZVx1NGY4M1x1NTFhMFx1NWJkMlx1NTIwYVx1NTJkOFx1NTJlN1x1NWRmYlx1NTU5YVx1NTgyYVx1NTllNlx1NWI4Y1x1NWI5OFx1NWJkYlx1NWU3Mlx1NWU3OVx1NjBhM1x1NjExZlx1NjE2M1x1NjFiZVx1NjNkYlx1NjU2Mlx1NjdkMVx1Njg1M1x1NjhmYVx1NmIzZVx1NmI1M1x1NmM1N1x1''@;'; put 'put ''NmYyMlx1NmY5N1x1NmY0NVx1NzRiMFx1NzUxOFx1NzZlM1x1NzcwYlx1N2FmZlx1N2JhMVx1N2MyMVx1N2RlOVx1N2YzNlx1N2ZmMFx1ODA5ZFx1ODI2Nlx1ODM5ZVx1ODliM1x1OGFjY1x1OGNhYlx1OTA4NFx1OTQ1MVx1OTU5M1x1OTU5MVx1OTVhMlx1OTY2NVx1OTdkM1x1OTkyOFx1ODIx''@;'; put 'put ''OFx1NGUzOFx1NTQyYlx1NWNiOFx1NWRjY1x1NzNhOVx1NzY0Y1x1NzczY1x1NWNhOVx1N2ZlYlx1OGQwYlx1OTZjMVx1OTgxMVx1OTg1NFx1OTg1OFx1NGYwMVx1NGYwZVx1NTM3MVx1NTU5Y1x1NTY2OFx1NTdmYVx1NTk0N1x1NWIwOVx1NWJjNFx1NWM5MFx1NWUwY1x1NWU3ZVx1NWZjY1x1''@;'; put 'put ''NjNlZVx1NjczYVx1NjVkN1x1NjVlMlx1NjcxZlx1NjhjYlx1NjhjNCJdLFsiYjVhMSIsIlx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNiNFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1OWEw''@;'; put 'put ''ZVx1OWIzY1x1NGU4MFx1NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIyZlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1NzgyN1x1''@;'; put 'put ''Njc3NVx1OWVjZFx1NTM3NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYxM1x1NjAyNVx1NjU1MVx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNlM1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1N2QxYVx1N2Nm''@;'; put 'put ''ZVx1N2Q2Nlx1NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhYyJdLFsiYjZhMSIsIlx1NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1''@;'; put 'put ''NTE3MVx1NTFmNlx1NTM1NFx1NTMyMVx1NTM3Zlx1NTNlYlx1NTVhY1x1NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEwNVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdm''@;'; put 'put ''Zlx1OTk1N1x1OWE1YVx1NGVmMFx1NTFkZFx1NWMyZFx1NjY4MVx1Njk2ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1''@;'; put 'put ''ODNjY1x1ODg3Zlx1ODk1Zlx1OGIzOVx1OGZkMVx1OTFkMVx1NTQxZlx1OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJlNlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0''@;'; put 'put ''N1x1OTY4NVx1NGUzMlx1NmFkYlx1OTFlN1x1NWM1MVx1NWM0OCJdLFsiYjdhMSIsIlx1NjM5OFx1N2E5Zlx1NmM5M1x1OTc3NFx1OGY2MVx1N2FhYVx1NzE4YVx1OTY4OFx1N2M4Mlx1NjgxN1x1N2U3MFx1Njg1MVx1OTM2Y1x1NTJmMlx1NTQxYlx1ODVhYlx1OGExM1x1N2ZhNFx1OGVjZFx1''@;'; put 'put ''OTBlMVx1NTM2Nlx1ODg4OFx1Nzk0MVx1NGZjMlx1NTBiZVx1NTIxMVx1NTE0NFx1NTU1M1x1NTcyZFx1NzNlYVx1NTc4Ylx1NTk1MVx1NWY2Mlx1NWY4NFx1NjA3NVx1NjE3Nlx1NjE2N1x1NjFhOVx1NjNiMlx1NjQzYVx1NjU2Y1x1NjY2Zlx1Njg0Mlx1NmUxM1x1NzU2Nlx1N2EzZFx1N2Nm''@;'; put 'put ''Ylx1N2Q0Y1x1N2Q5OVx1N2U0Ylx1N2Y2Ylx1ODMwZVx1ODM0YVx1ODZjZFx1OGEwOFx1OGE2M1x1OGI2Nlx1OGVmZFx1OTgxYVx1OWQ4Zlx1ODJiOFx1OGZjZVx1OWJlOFx1NTI4N1x1NjIxZlx1NjQ4M1x1NmZjMFx1OTY5OVx1Njg0MVx1NTA5MVx1NmIyMFx1NmM3YVx1NmY1NFx1N2E3NFx1''@;'; put 'put ''N2Q1MFx1ODg0MFx1OGEyM1x1NjcwOFx1NGVmNlx1NTAzOVx1NTAyNlx1NTA2NVx1NTE3Y1x1NTIzOFx1NTI2M1x1NTVhN1x1NTcwZlx1NTgwNVx1NWFjY1x1NWVmYVx1NjFiMlx1NjFmOFx1NjJmM1x1NjM3MiJdLFsiYjhhMSIsIlx1NjkxY1x1NmEyOVx1NzI3ZFx1NzJhY1x1NzMyZVx1Nzgx''@;'; put 'put ''NFx1Nzg2Zlx1N2Q3OVx1NzcwY1x1ODBhOVx1ODk4Ylx1OGIxOVx1OGNlMlx1OGVkMlx1OTA2M1x1OTM3NVx1OTY3YVx1OTg1NVx1OWExM1x1OWU3OFx1NTE0M1x1NTM5Zlx1NTNiM1x1NWU3Ylx1NWYyNlx1NmUxYlx1NmU5MFx1NzM4NFx1NzNmZVx1N2Q0M1x1ODIzN1x1OGEwMFx1OGFmYVx1''@;'; put 'put ''OTY1MFx1NGU0ZVx1NTAwYlx1NTNlNFx1NTQ3Y1x1NTZmYVx1NTlkMVx1NWI2NFx1NWRmMVx1NWVhYlx1NWYyN1x1NjIzOFx1NjU0NVx1NjdhZlx1NmU1Nlx1NzJkMFx1N2NjYVx1ODhiNFx1ODBhMVx1ODBlMVx1ODNmMFx1ODY0ZVx1OGE4N1x1OGRlOFx1OTIzN1x1OTZjN1x1OTg2N1x1OWYx''@;'; put 'put ''M1x1NGU5NFx1NGU5Mlx1NGYwZFx1NTM0OFx1NTQ0OVx1NTQzZVx1NWEyZlx1NWY4Y1x1NWZhMVx1NjA5Zlx1NjhhN1x1NmE4ZVx1NzQ1YVx1Nzg4MVx1OGE5ZVx1OGFhNFx1OGI3N1x1OTE5MFx1NGU1ZVx1OWJjOVx1NGVhNFx1NGY3Y1x1NGZhZlx1NTAxOVx1NTAxNlx1NTE0OVx1NTE2Y1x1''@;'; put 'put ''NTI5Zlx1NTJiOVx1NTJmZVx1NTM5YVx1NTNlM1x1NTQxMSJdLFsiYjlhMSIsIlx1NTQwZVx1NTU4OVx1NTc1MVx1NTdhMlx1NTk3ZFx1NWI1NFx1NWI1ZFx1NWI4Zlx1NWRlNVx1NWRlN1x1NWRmN1x1NWU3OFx1NWU4M1x1NWU5YVx1NWViN1x1NWYxOFx1NjA1Mlx1NjE0Y1x1NjI5N1x1NjJk''@;'; put 'put ''OFx1NjNhN1x1NjUzYlx1NjYwMlx1NjY0M1x1NjZmNFx1Njc2ZFx1NjgyMVx1Njg5N1x1NjljYlx1NmM1Zlx1NmQyYVx1NmQ2OVx1NmUyZlx1NmU5ZFx1NzUzMlx1NzY4N1x1Nzg2Y1x1N2EzZlx1N2NlMFx1N2QwNVx1N2QxOFx1N2Q1ZVx1N2RiMVx1ODAxNVx1ODAwM1x1ODBhZlx1ODBiMVx1''@;'; put 'put ''ODE1NFx1ODE4Zlx1ODIyYVx1ODM1Mlx1ODg0Y1x1ODg2MVx1OGIxYlx1OGNhMlx1OGNmY1x1OTBjYVx1OTE3NVx1OTI3MVx1NzgzZlx1OTJmY1x1OTVhNFx1OTY0ZFx1OTgwNVx1OTk5OVx1OWFkOFx1OWQzYlx1NTI1Ylx1NTJhYlx1NTNmN1x1NTQwOFx1NThkNVx1NjJmN1x1NmZlMFx1OGM2''@;'; put 'put ''YVx1OGY1Zlx1OWViOVx1NTE0Ylx1NTIzYlx1NTQ0YVx1NTZmZFx1N2E0MFx1OTE3N1x1OWQ2MFx1OWVkMlx1NzM0NFx1NmYwOVx1ODE3MFx1NzUxMVx1NWZmZFx1NjBkYVx1OWFhOFx1NzJkYlx1OGZiYyJdLFsiYmFhMSIsIlx1NmI2NFx1OTgwM1x1NGVjYVx1NTZmMFx1NTc2NFx1NThiZVx1''@;'; put 'put ''NWE1YVx1NjA2OFx1NjFjN1x1NjYwZlx1NjYwNlx1NjgzOVx1NjhiMVx1NmRmN1x1NzVkNVx1N2QzYVx1ODI2ZVx1OWI0Mlx1NGU5Ylx1NGY1MFx1NTNjOVx1NTUwNlx1NWQ2Zlx1NWRlNlx1NWRlZVx1NjdmYlx1NmM5OVx1NzQ3M1x1NzgwMlx1OGE1MFx1OTM5Nlx1ODhkZlx1NTc1MFx1NWVh''@;'; put 'put ''N1x1NjMyYlx1NTBiNVx1NTBhY1x1NTE4ZFx1NjcwMFx1NTRjOVx1NTg1ZVx1NTliYlx1NWJiMFx1NWY2OVx1NjI0ZFx1NjNhMVx1NjgzZFx1NmI3M1x1NmUwOFx1NzA3ZFx1OTFjN1x1NzI4MFx1NzgxNVx1NzgyNlx1Nzk2ZFx1NjU4ZVx1N2QzMFx1ODNkY1x1ODhjMVx1OGYwOVx1OTY5Ylx1''@;'; put 'put ''NTI2NFx1NTcyOFx1Njc1MFx1N2Y2YVx1OGNhMVx1NTFiNFx1NTc0Mlx1OTYyYVx1NTgzYVx1Njk4YVx1ODBiNFx1NTRiMlx1NWQwZVx1NTdmY1x1Nzg5NVx1OWRmYVx1NGY1Y1x1NTI0YVx1NTQ4Ylx1NjQzZVx1NjYyOFx1NjcxNFx1NjdmNVx1N2E4NFx1N2I1Nlx1N2QyMlx1OTMyZlx1Njg1''@;'; put 'put ''Y1x1OWJhZFx1N2IzOVx1NTMxOVx1NTE4YVx1NTIzNyJdLFsiYmJhMSIsIlx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMwNlx1OWJhYlx1NzZiZlx1NjY1Mlx1NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1''@;'; put 'put ''NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5N1x1N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1NGY3Zlx1NTIzYVx1NTNmOFx1NTNmMlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTlj''@;'; put 'put ''OVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1NjAxZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2Mlx1NmI3Ylx1NmMwZlx1NzM0NVx1Nzk0OVx1NzljMVx1N2NmOFx1N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1''@;'; put 'put ''OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNjN1x1OGNkY1x1OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1NjY0MiJdLFsiYmNhMSIsIlx1NmIyMVx1NmVjYlx1NmNiYlx1NzIzZVx1NzRiZFx1NzVkNFx1Nzhj''@;'; put 'put ''MVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1MFx1OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFjOVx1NWJhNFx1NjA4OVx1NmU3Zlx1NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1''@;'; put 'put ''ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1N2UxZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1OTA2ZVx1ODZjN1x1OTBhYVx1NTAxZlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3''@;'; put 'put ''Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYzMVx1NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1Mlx1OTk5Nlx1NTExMlx1NTNkN1x1NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1''@;'; put 'put ''N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OCJdLFsiYmRhMSIsIlx1NWI5N1x1NWMzMVx1NWRkZVx1NGZlZVx1NjEwMVx1NjJmZVx1NmQzMlx1NzljMFx1NzljYlx1N2Q0Mlx1N2U0ZFx1N2ZkMlx1ODFlZFx1ODIxZlx1ODQ5MFx1ODg0Nlx1ODk3Mlx1OGI5MFx1OGU3NFx1OGYyZlx1OTAz''@;'; put 'put ''MVx1OTE0Ylx1OTE2Y1x1OTZjNlx1OTE5Y1x1NGVjMFx1NGY0Zlx1NTE0NVx1NTM0MVx1NWY5M1x1NjIwZVx1NjdkNFx1NmM0MVx1NmUwYlx1NzM2M1x1N2UyNlx1OTFjZFx1OTI4M1x1NTNkNFx1NTkxOVx1NWJiZlx1NmRkMVx1Nzk1ZFx1N2UyZVx1N2M5Ylx1NTg3ZVx1NzE5Zlx1NTFmYVx1''@;'; put 'put ''ODg1M1x1OGZmMFx1NGZjYVx1NWNmYlx1NjYyNVx1NzdhY1x1N2FlM1x1ODIxY1x1OTlmZlx1NTFjNlx1NWZhYVx1NjVlY1x1Njk2Zlx1NmI4OVx1NmRmM1x1NmU5Nlx1NmY2NFx1NzZmZVx1N2QxNFx1NWRlMVx1OTA3NVx1OTE4N1x1OTgwNlx1NTFlNlx1NTIxZFx1NjI0MFx1NjY5MVx1NjZk''@;'; put 'put ''OVx1NmUxYVx1NWViNlx1N2RkMlx1N2Y3Mlx1NjZmOFx1ODVhZlx1ODVmN1x1OGFmOFx1NTJhOVx1NTNkOVx1NTk3M1x1NWU4Zlx1NWY5MFx1NjA1NVx1OTJlNFx1OTY2NFx1NTBiN1x1NTExZiJdLFsiYmVhMSIsIlx1NTJkZFx1NTMyMFx1NTM0N1x1NTNlY1x1NTRlOFx1NTU0Nlx1NTUzMVx1''@;'; put 'put ''NTYxN1x1NTk2OFx1NTliZVx1NWEzY1x1NWJiNVx1NWMwNlx1NWMwZlx1NWMxMVx1NWMxYVx1NWU4NFx1NWU4YVx1NWVlMFx1NWY3MFx1NjI3Zlx1NjI4NFx1NjJkYlx1NjM4Y1x1NjM3N1x1NjYwN1x1NjYwY1x1NjYyZFx1NjY3Nlx1Njc3ZVx1NjhhMlx1NmExZlx1NmEzNVx1NmNiY1x1NmQ4''@;'; put 'put ''OFx1NmUwOVx1NmU1OFx1NzEzY1x1NzEyNlx1NzE2N1x1NzVjN1x1NzcwMVx1Nzg1ZFx1NzkwMVx1Nzk2NVx1NzlmMFx1N2FlMFx1N2IxMVx1N2NhN1x1N2QzOVx1ODA5Nlx1ODNkNlx1ODQ4Ylx1ODU0OVx1ODg1ZFx1ODhmM1x1OGExZlx1OGEzY1x1OGE1NFx1OGE3M1x1OGM2MVx1OGNkZVx1''@;'; put 'put ''OTFhNFx1OTI2Nlx1OTM3ZVx1OTQxOFx1OTY5Y1x1OTc5OFx1NGUwYVx1NGUwOFx1NGUxZVx1NGU1N1x1NTE5N1x1NTI3MFx1NTdjZVx1NTgzNFx1NThjY1x1NWIyMlx1NWUzOFx1NjBjNVx1NjRmZVx1Njc2MVx1Njc1Nlx1NmQ0NFx1NzJiNlx1NzU3M1x1N2E2M1x1ODRiOFx1OGI3Mlx1OTFi''@;'; put 'put ''OFx1OTMyMFx1NTYzMVx1NTdmNFx1OThmZSJdLFsiYmZhMSIsIlx1NjJlZFx1NjkwZFx1NmI5Nlx1NzFlZFx1N2U1NFx1ODA3N1x1ODI3Mlx1ODllNlx1OThkZlx1ODc1NVx1OGZiMVx1NWMzYlx1NGYzOFx1NGZlMVx1NGZiNVx1NTUwN1x1NWEyMFx1NWJkZFx1NWJlOVx1NWZjM1x1NjE0ZVx1''@;'; put 'put ''NjMyZlx1NjViMFx1NjY0Ylx1NjhlZVx1Njk5Ylx1NmQ3OFx1NmRmMVx1NzUzM1x1NzViOVx1NzcxZlx1Nzk1ZVx1NzllNlx1N2QzM1x1ODFlM1x1ODJhZlx1ODVhYVx1ODlhYVx1OGEzYVx1OGVhYlx1OGY5Ylx1OTAzMlx1OTFkZFx1OTcwN1x1NGViYVx1NGVjMVx1NTIwM1x1NTg3NVx1NThl''@;'; put 'put ''Y1x1NWMwYlx1NzUxYVx1NWMzZFx1ODE0ZVx1OGEwYVx1OGZjNVx1OTY2M1x1OTc2ZFx1N2IyNVx1OGFjZlx1OTgwOFx1OTE2Mlx1NTZmM1x1NTNhOFx1OTAxN1x1NTQzOVx1NTc4Mlx1NWUyNVx1NjNhOFx1NmMzNFx1NzA4YVx1Nzc2MVx1N2M4Ylx1N2ZlMFx1ODg3MFx1OTA0Mlx1OTE1NFx1''@;'; put 'put ''OTMxMFx1OTMxOFx1OTY4Zlx1NzQ1ZVx1OWFjNFx1NWQwN1x1NWQ2OVx1NjU3MFx1NjdhMlx1OGRhOFx1OTZkYlx1NjM2ZVx1Njc0OVx1NjkxOVx1ODNjNVx1OTgxN1x1OTZjMFx1ODhmZSJdLFsiYzBhMSIsIlx1NmY4NFx1NjQ3YVx1NWJmOFx1NGUxNlx1NzAyY1x1NzU1ZFx1NjYyZlx1NTFj''@;'; put 'put ''NFx1NTIzNlx1NTJlMlx1NTlkM1x1NWY4MVx1NjAyN1x1NjIxMFx1NjUzZlx1NjU3NFx1NjYxZlx1NjY3NFx1NjhmMlx1NjgxNlx1NmI2M1x1NmUwNVx1NzI3Mlx1NzUxZlx1NzZkYlx1N2NiZVx1ODA1Nlx1NThmMFx1ODhmZFx1ODk3Zlx1OGFhMFx1OGE5M1x1OGFjYlx1OTAxZFx1OTE5Mlx1''@;'; put 'put ''OTc1Mlx1OTc1OVx1NjU4OVx1N2EwZVx1ODEwNlx1OTZiYlx1NWUyZFx1NjBkY1x1NjIxYVx1NjVhNVx1NjYxNFx1Njc5MFx1NzdmM1x1N2E0ZFx1N2M0ZFx1N2UzZVx1ODEwYVx1OGNhY1x1OGQ2NFx1OGRlMVx1OGU1Zlx1NzhhOVx1NTIwN1x1NjJkOVx1NjNhNVx1NjQ0Mlx1NjI5OFx1OGEy''@;'; put 'put ''ZFx1N2E4M1x1N2JjMFx1OGFhY1x1OTZlYVx1N2Q3Nlx1ODIwY1x1ODc0OVx1NGVkOVx1NTE0OFx1NTM0M1x1NTM2MFx1NWJhM1x1NWMwMlx1NWMxNlx1NWRkZFx1NjIyNlx1NjI0N1x1NjRiMFx1NjgxM1x1NjgzNFx1NmNjOVx1NmQ0NVx1NmQxN1x1NjdkM1x1NmY1Y1x1NzE0ZVx1NzE3ZFx1''@;'; put 'put ''NjVjYlx1N2E3Zlx1N2JhZFx1N2RkYSJdLFsiYzFhMSIsIlx1N2U0YVx1N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1ODVhNlx1OGE2ZVx1OGNjZVx1OGRmNVx1OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4NFx1NmYzOFx1NzEzNlx1NTE2OFx1Nzk4NVx1N2U1''@;'; put 'put ''NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZmZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4Zlx1NzU4ZVx1NzkwZVx1Nzk1Nlx1NzlkZlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1OWYyMFx1NTBlN1x1NTI3NVx1NTNjY1x1NTNlMlx1''@;'; put 'put ''NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1NjM4M1x1NjMzZlx1NjNiYlx1NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYxNVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1N2E5M1x1N2NkZlx1N2Rj''@;'; put 'put ''Zlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVmYlx1ODhjNVx1OGQ3MFx1OTAwMVx1OTA2ZFx1OTM5N1x1OTcxY1x1OWExMlx1NTBjZlx1NTg5N1x1NjE4ZSJdLFsiYzJhMSIsIlx1ODFkM1x1ODUzNVx1OGQwOFx1OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3M1x1''@;'; put 'put ''NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1ODg5Nlx1NTE3Nlx1NjNjM1x1NWI1OFx1NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkxYVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1NTgx''@;'; put 'put ''NVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJmZVx1ODAxMFx1NWNiMVx1NWUyZlx1NWY4NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNiOFx1''@;'; put 'put ''OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1NmVkZFx1NzAyN1x1NTM1M1x1NTU0NFx1NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQyMlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1ODMz''@;'; put 'put ''OFx1NTFlN1x1ODZmOFx1NTNlYSJdLFsiYzNhMSIsIlx1NTNlOVx1NGY0Nlx1OTA1NFx1OGZiMFx1NTk2YVx1ODEzMVx1NWRmZFx1N2FlYVx1OGZiZlx1NjhkYVx1OGMzN1x1NzJmOFx1OWM0OFx1NmEzZFx1OGFiMFx1NGUzOVx1NTM1OFx1NTYwNlx1NTc2Nlx1NjJjNVx1NjNhMlx1NjVlNlx1''@;'; put 'put ''NmI0ZVx1NmRlMVx1NmU1Ylx1NzBhZFx1NzdlZFx1N2FlZlx1N2JhYVx1N2RiYlx1ODAzZFx1ODBjNlx1ODZjYlx1OGE5NVx1OTM1Ylx1NTZlM1x1NThjN1x1NWYzZVx1NjVhZFx1NjY5Nlx1NmE4MFx1NmJiNVx1NzUzN1x1OGFjN1x1NTAyNFx1NzdlNVx1NTczMFx1NWYxYlx1NjA2NVx1NjY3''@;'; put 'put ''YVx1NmM2MFx1NzVmNFx1N2ExYVx1N2Y2ZVx1ODFmNFx1ODcxOFx1OTA0NVx1OTliM1x1N2JjOVx1NzU1Y1x1N2FmOVx1N2I1MVx1ODRjNFx1OTAxMFx1NzllOVx1N2E5Mlx1ODMzNlx1NWFlMVx1Nzc0MFx1NGUyZFx1NGVmMlx1NWI5OVx1NWZlMFx1NjJiZFx1NjYzY1x1NjdmMVx1NmNlOFx1''@;'; put 'put ''ODY2Ylx1ODg3N1x1OGEzYlx1OTE0ZVx1OTJmM1x1OTlkMFx1NmExN1x1NzAyNlx1NzMyYVx1ODJlN1x1ODQ1N1x1OGNhZlx1NGUwMVx1NTE0Nlx1NTFjYlx1NTU4Ylx1NWJmNSJdLFsiYzRhMSIsIlx1NWUxNlx1NWUzM1x1NWU4MVx1NWYxNFx1NWYzNVx1NWY2Ylx1NWZiNFx1NjFmMlx1NjMx''@;'; put 'put ''MVx1NjZhMlx1NjcxZFx1NmY2ZVx1NzI1Mlx1NzUzYVx1NzczYVx1ODA3NFx1ODEzOVx1ODE3OFx1ODc3Nlx1OGFiZlx1OGFkY1x1OGQ4NVx1OGRmM1x1OTI5YVx1OTU3N1x1OTgwMlx1OWNlNVx1NTJjNVx1NjM1N1x1NzZmNFx1NjcxNVx1NmM4OFx1NzNjZFx1OGNjM1x1OTNhZVx1OTY3M1x1''@;'; put 'put ''NmQyNVx1NTg5Y1x1NjkwZVx1NjljY1x1OGZmZFx1OTM5YVx1NzVkYlx1OTAxYVx1NTg1YVx1NjgwMlx1NjNiNFx1NjlmYlx1NGY0M1x1NmYyY1x1NjdkOFx1OGZiYlx1ODUyNlx1N2RiNFx1OTM1NFx1NjkzZlx1NmY3MFx1NTc2YVx1NThmN1x1NWIyY1x1N2QyY1x1NzIyYVx1NTQwYVx1OTFl''@;'; put 'put ''M1x1OWRiNFx1NGVhZFx1NGY0ZVx1NTA1Y1x1NTA3NVx1NTI0M1x1OGM5ZVx1NTQ0OFx1NTgyNFx1NWI5YVx1NWUxZFx1NWU5NVx1NWVhZFx1NWVmN1x1NWYxZlx1NjA4Y1x1NjJiNVx1NjMzYVx1NjNkMFx1NjhhZlx1NmM0MFx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2RlMFx1ODI0N1x1OGEwMlx1''@;'; put 'put ''OGFlNlx1OGU0NFx1OTAxMyJdLFsiYzVhMSIsIlx1OTBiOFx1OTEyZFx1OTFkOFx1OWYwZVx1NmNlNVx1NjQ1OFx1NjRlMlx1NjU3NVx1NmVmNFx1NzY4NFx1N2IxYlx1OTA2OVx1OTNkMVx1NmViYVx1NTRmMlx1NWZiOVx1NjRhNFx1OGY0ZFx1OGZlZFx1OTI0NFx1NTE3OFx1NTg2Ylx1NTky''@;'; put 'put ''OVx1NWM1NVx1NWU5N1x1NmRmYlx1N2U4Zlx1NzUxY1x1OGNiY1x1OGVlMlx1OTg1Ylx1NzBiOVx1NGYxZFx1NmJiZlx1NmZiMVx1NzUzMFx1OTZmYlx1NTE0ZVx1NTQxMFx1NTgzNVx1NTg1N1x1NTlhY1x1NWM2MFx1NWY5Mlx1NjU5N1x1Njc1Y1x1NmUyMVx1NzY3Ylx1ODNkZlx1OGNlZFx1''@;'; put 'put ''OTAxNFx1OTBmZFx1OTM0ZFx1NzgyNVx1NzgzYVx1NTJhYVx1NWVhNlx1NTcxZlx1NTk3NFx1NjAxMlx1NTAxMlx1NTE1YVx1NTFhY1x1NTFjZFx1NTIwMFx1NTUxMFx1NTg1NFx1NTg1OFx1NTk1N1x1NWI5NVx1NWNmNlx1NWQ4Ylx1NjBiY1x1NjI5NVx1NjQyZFx1Njc3MVx1Njg0M1x1Njhi''@;'; put 'put ''Y1x1NjhkZlx1NzZkN1x1NmRkOFx1NmU2Zlx1NmQ5Ylx1NzA2Zlx1NzFjOFx1NWY1M1x1NzVkOFx1Nzk3N1x1N2I0OVx1N2I1NFx1N2I1Mlx1N2NkNlx1N2Q3MVx1NTIzMCJdLFsiYzZhMSIsIlx1ODQ2M1x1ODU2OVx1ODVlNFx1OGEwZVx1OGIwNFx1OGM0Nlx1OGUwZlx1OTAwM1x1OTAwZlx1''@;'; put 'put ''OTQxOVx1OTY3Nlx1OTgyZFx1OWEzMFx1OTVkOFx1NTBjZFx1NTJkNVx1NTQwY1x1NTgwMlx1NWMwZVx1NjFhN1x1NjQ5ZVx1NmQxZVx1NzdiM1x1N2FlNVx1ODBmNFx1ODQwNFx1OTA1M1x1OTI4NVx1NWNlMFx1OWQwN1x1NTMzZlx1NWY5N1x1NWZiM1x1NmQ5Y1x1NzI3OVx1Nzc2M1x1Nzli''@;'; put 'put ''Zlx1N2JlNFx1NmJkMlx1NzJlY1x1OGFhZFx1NjgwM1x1NmE2MVx1NTFmOFx1N2E4MVx1NjkzNFx1NWM0YVx1OWNmNlx1ODJlYlx1NWJjNVx1OTE0OVx1NzAxZVx1NTY3OFx1NWM2Zlx1NjBjN1x1NjU2Nlx1NmM4Y1x1OGM1YVx1OTA0MVx1OTgxM1x1NTQ1MVx1NjZjN1x1OTIwZFx1NTk0OFx1''@;'; put 'put ''OTBhM1x1NTE4NVx1NGU0ZFx1NTFlYVx1ODU5OVx1OGIwZVx1NzA1OFx1NjM3YVx1OTM0Ylx1Njk2Mlx1OTliNFx1N2UwNFx1NzU3N1x1NTM1N1x1Njk2MFx1OGVkZlx1OTZlM1x1NmM1ZFx1NGU4Y1x1NWMzY1x1NWYxMFx1OGZlOVx1NTMwMlx1OGNkMVx1ODA4OVx1ODY3OVx1NWVmZlx1NjVl''@;'; put 'put ''NVx1NGU3M1x1NTE2NSJdLFsiYzdhMSIsIlx1NTk4Mlx1NWMzZlx1OTdlZVx1NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFiMVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1''@;'; put 'put ''NTdkY1x1NTZhMlx1NjBhOVx1NmZjM1x1N2QwZFx1ODBmZFx1ODEzM1x1ODFiZlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJhZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5''@;'; put 'put ''Mlx1NjU1N1x1Njc2Zlx1NzZjM1x1NzI0Y1x1ODBjY1x1ODBiYVx1OGYyOVx1OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NVx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThmMlx1OGNlMFx1OTY2YVx1OTAxOVx1ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1''@;'; put 'put ''NjJjZFx1NjdjZlx1NmNjYVx1NzY3ZFx1N2I5NFx1N2M5NVx1ODIzNlx1ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNiJdLFsiYzhhMSIsIlx1NTFmZFx1N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1''@;'; put 'put ''MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4Y1x1NzY3YVx1OTE5N1x1OWFlYVx1NGYxMFx1N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIyNFx1NTM0YVx1NTNjZFx1NTNkYlx1NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1''@;'; put 'put ''NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1NzU1NFx1N2U0MVx1ODIyY1x1ODVlOVx1OGNhOVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1ODU0M1x1ODZlZVx1NTMyYVx1NTM1MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBi''@;'; put 'put ''Mlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5MFx1NmJkNFx1NmNjY1x1NzViMlx1NzZhZVx1Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThkYlx1NmEwYlx1N2MzOFx1NTA5OVx1NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1''@;'; put 'put ''NzcwOVx1N2Y4ZSJdLFsiYzlhMSIsIlx1OWYzYlx1NjdjYVx1N2ExN1x1NTMzOVx1NzU4Ylx1OWFlZFx1NWY2Nlx1ODE5ZFx1ODNmMVx1ODA5OFx1NWYzY1x1NWZjNVx1NzU2Mlx1N2I0Nlx1OTAzY1x1Njg2N1x1NTllYlx1NWE5Ylx1N2QxMFx1NzY3ZVx1OGIyY1x1NGZmNVx1NWY2YVx1NmEx''@;'; put 'put ''OVx1NmMzN1x1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGE1NVx1OGM3OVx1NWVkZlx1NjNjZlx1NzVjNVx1NzlkMlx1ODJkN1x1OTMyOFx1OTJmMlx1ODQ5Y1x1ODZlZFx1OWMyZFx1NTRjMVx1NWY2Y1x1NjU4Y1x1NmQ1Y1x1NzAxNVx1OGNhN1x1OGNkM1x1OTgzYlx1NjU0Zlx1NzRmNlx1''@;'; put 'put ''NGUwZFx1NGVkOFx1NTdlMFx1NTkyYlx1NWE2Nlx1NWJjY1x1NTFhOFx1NWUwM1x1NWU5Y1x1NjAxNlx1NjI3Nlx1NjU3N1x1NjVhN1x1NjY2ZVx1NmQ2ZVx1NzIzNlx1N2IyNlx1ODE1MFx1ODE5YVx1ODI5OVx1OGI1Y1x1OGNhMFx1OGNlNlx1OGQ3NFx1OTYxY1x1OTY0NFx1NGZhZVx1NjRh''@;'; put 'put ''Ylx1NmI2Nlx1ODIxZVx1ODQ2MVx1ODU2YVx1OTBlOFx1NWMwMVx1Njk1M1x1OThhOFx1ODQ3YVx1ODU1N1x1NGYwZlx1NTI2Zlx1NWZhOVx1NWU0NVx1NjcwZCJdLFsiY2FhMSIsIlx1Nzk4Zlx1ODE3OVx1ODkwN1x1ODk4Nlx1NmRmNVx1NWYxN1x1NjI1NVx1NmNiOFx1NGVjZlx1NzI2OVx1''@;'; put 'put ''OWI5Mlx1NTIwNlx1NTQzYlx1NTY3NFx1NThiM1x1NjFhNFx1NjI2ZVx1NzExYVx1NTk2ZVx1N2M4OVx1N2NkZVx1N2QxYlx1OTZmMFx1NjU4N1x1ODA1ZVx1NGUxOVx1NGY3NVx1NTE3NVx1NTg0MFx1NWU2M1x1NWU3M1x1NWYwYVx1NjdjNFx1NGUyNlx1ODUzZFx1OTU4OVx1OTY1Ylx1N2M3''@;'; put 'put ''M1x1OTgwMVx1NTBmYlx1NThjMVx1NzY1Nlx1NzhhN1x1NTIyNVx1NzdhNVx1ODUxMVx1N2I4Nlx1NTA0Zlx1NTkwOVx1NzI0N1x1N2JjN1x1N2RlOFx1OGZiYVx1OGZkNFx1OTA0ZFx1NGZiZlx1NTJjOVx1NWEyOVx1NWYwMVx1OTdhZFx1NGZkZFx1ODIxN1x1OTJlYVx1NTcwM1x1NjM1NVx1''@;'; put 'put ''NmI2OVx1NzUyYlx1ODhkY1x1OGYxNFx1N2E0Mlx1NTJkZlx1NTg5M1x1NjE1NVx1NjIwYVx1NjZhZVx1NmJjZFx1N2MzZlx1ODNlOVx1NTAyM1x1NGZmOFx1NTMwNVx1NTQ0Nlx1NTgzMVx1NTk0OVx1NWI5ZFx1NWNmMFx1NWNlZlx1NWQyOVx1NWU5Nlx1NjJiMVx1NjM2N1x1NjUzZVx1NjVi''@;'; put 'put ''OVx1NjcwYiJdLFsiY2JhMSIsIlx1NmNkNVx1NmNlMVx1NzBmOVx1NzgzMlx1N2UyYlx1ODBkZVx1ODJiM1x1ODQwY1x1ODRlY1x1ODcwMlx1ODkxMlx1OGEyYVx1OGM0YVx1OTBhNlx1OTJkMlx1OThmZFx1OWNmM1x1OWQ2Y1x1NGU0Zlx1NGVhMVx1NTA4ZFx1NTI1Nlx1NTc0YVx1NTlhOFx1''@;'; put 'put ''NWUzZFx1NWZkOFx1NWZkOVx1NjIzZlx1NjZiNFx1NjcxYlx1NjdkMFx1NjhkMlx1NTE5Mlx1N2QyMVx1ODBhYVx1ODFhOFx1OGIwMFx1OGM4Y1x1OGNiZlx1OTI3ZVx1OTYzMlx1NTQyMFx1OTgyY1x1NTMxN1x1NTBkNVx1NTM1Y1x1NThhOFx1NjRiMlx1NjczNFx1NzI2N1x1Nzc2Nlx1N2E0''@;'; put 'put ''Nlx1OTFlNlx1NTJjM1x1NmNhMVx1NmI4Nlx1NTgwMFx1NWU0Y1x1NTk1NFx1NjcyY1x1N2ZmYlx1NTFlMVx1NzZjNlx1NjQ2OVx1NzhlOFx1OWI1NFx1OWViYlx1NTdjYlx1NTliOVx1NjYyN1x1Njc5YVx1NmJjZVx1NTRlOVx1NjlkOVx1NWU1NVx1ODE5Y1x1Njc5NVx1OWJhYVx1NjdmZVx1''@;'; put 'put ''OWM1Mlx1Njg1ZFx1NGVhNlx1NGZlM1x1NTNjOFx1NjJiOVx1NjcyYlx1NmNhYlx1OGZjNFx1NGZhZFx1N2U2ZFx1OWViZlx1NGUwN1x1NjE2Mlx1NmU4MCJdLFsiY2NhMSIsIlx1NmYyYlx1ODUxM1x1NTQ3M1x1NjcyYVx1OWI0NVx1NWRmM1x1N2I5NVx1NWNhY1x1NWJjNlx1ODcxY1x1NmU0''@;'; put 'put ''YVx1ODRkMVx1N2ExNFx1ODEwOFx1NTk5OVx1N2M4ZFx1NmMxMVx1NzcyMFx1NTJkOVx1NTkyMlx1NzEyMVx1NzI1Zlx1NzdkYlx1OTcyN1x1OWQ2MVx1NjkwYlx1NWE3Zlx1NWExOFx1NTFhNVx1NTQwZFx1NTQ3ZFx1NjYwZVx1NzZkZlx1OGZmN1x1OTI5OFx1OWNmNFx1NTllYVx1NzI1ZFx1''@;'; put 'put ''NmVjNVx1NTE0ZFx1NjhjOVx1N2RiZlx1N2RlY1x1OTc2Mlx1OWViYVx1NjQ3OFx1NmEyMVx1ODMwMlx1NTk4NFx1NWI1Zlx1NmJkYlx1NzMxYlx1NzZmMlx1N2RiMlx1ODAxN1x1ODQ5OVx1NTEzMlx1NjcyOFx1OWVkOVx1NzZlZVx1Njc2Mlx1NTJmZlx1OTkwNVx1NWMyNFx1NjIzYlx1N2M3''@;'; put 'put ''ZVx1OGNiMFx1NTU0Zlx1NjBiNlx1N2QwYlx1OTU4MFx1NTMwMVx1NGU1Zlx1NTFiNlx1NTkxY1x1NzIzYVx1ODAzNlx1OTFjZVx1NWYyNVx1NzdlMlx1NTM4NFx1NWY3OVx1N2QwNFx1ODVhY1x1OGEzM1x1OGU4ZFx1OTc1Nlx1NjdmM1x1ODVhZVx1OTQ1M1x1NjEwOVx1NjEwOFx1NmNiOVx1''@;'; put 'put ''NzY1MiJdLFsiY2RhMSIsIlx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1NTEyYVx1NTJjN1x1NTNjYlx1NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1MFx1ODhkNVx1OGE5OFx1OTA0YVx1OTA5MVx1OTBm''@;'; put 'put ''NVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4OVx1OGYzZlx1OTgxMFx1NTBhZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1NzE5NFx1NzUyOFx1N2FhZlx1N2Y4YVx1ODAwMFx1''@;'; put 'put ''ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1OTkwYVx1NjE3ZVx1NjI5MVx1NmIzMlx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNiMVx1OTgzY1x1OTZmN1x1NmQxYlx1N2Q2MVx1ODQzZFx1OTE2YVx1NGU3''@;'; put 'put ''MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlhN1x1NTIyOVx1NTQwZlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4MyJdLFsiY2VhMSIsIlx1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1NWY4Ylx1NzM4N1x1N2FjYlx1ODQ0ZVx1NjNhMFx1''@;'; put 'put ''NzU2NVx1NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4MVx1NmRiY1x1NzMxZlx1NzY0Mlx1NzdhZFx1N2Ex''@;'; put 'put ''Y1x1N2NlN1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgxOFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1NmQ5OVx1N2QyZlx1OTg1ZVx1NGVlNFx1NGYzNlx1''@;'; put 'put ''NGY4Ylx1NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5MFx1NmYyM1x1NzE0OVx1N2MzZVx1N2RmNFx1ODA2''@;'; put 'put ''ZiJdLFsiY2ZhMSIsIlx1ODRlZVx1OTAyM1x1OTMyY1x1NTQ0Mlx1OWI2Zlx1NmFkM1x1NzA4OVx1OGNjMlx1OGRlZlx1OTczMlx1NTJiNFx1NWE0MVx1NWVjYVx1NWYwNFx1NjcxN1x1Njk3Y1x1Njk5NFx1NmQ2YVx1NmYwZlx1NzI2Mlx1NzJmY1x1N2JlZFx1ODAwMVx1ODA3ZVx1ODc0Ylx1''@;'; put 'put ''OTBjZVx1NTE2ZFx1OWU5M1x1Nzk4NFx1ODA4Ylx1OTMzMlx1OGFkNlx1NTAyZFx1NTQ4Y1x1OGE3MVx1NmI2YVx1OGNjNFx1ODEwN1x1NjBkMVx1NjdhMFx1OWRmMlx1NGU5OVx1NGU5OFx1OWMxMFx1OGE2Ylx1ODVjMVx1ODU2OFx1NjkwMFx1NmU3ZVx1Nzg5N1x1ODE1NSJdLFsiZDBhMSIs''@;'; put 'put ''Ilx1NWYwY1x1NGUxMFx1NGUxNVx1NGUyYVx1NGUzMVx1NGUzNlx1NGUzY1x1NGUzZlx1NGU0Mlx1NGU1Nlx1NGU1OFx1NGU4Mlx1NGU4NVx1OGM2Ylx1NGU4YVx1ODIxMlx1NWYwZFx1NGU4ZVx1NGU5ZVx1NGU5Zlx1NGVhMFx1NGVhMlx1NGViMFx1NGViM1x1NGViNlx1NGVjZVx1NGVjZFx1''@;'; put 'put ''NGVjNFx1NGVjNlx1NGVjMlx1NGVkN1x1NGVkZVx1NGVlZFx1NGVkZlx1NGVmN1x1NGYwOVx1NGY1YVx1NGYzMFx1NGY1Ylx1NGY1ZFx1NGY1N1x1NGY0N1x1NGY3Nlx1NGY4OFx1NGY4Zlx1NGY5OFx1NGY3Ylx1NGY2OVx1NGY3MFx1NGY5MVx1NGY2Zlx1NGY4Nlx1NGY5Nlx1NTExOFx1NGZk''@;'; put 'put ''NFx1NGZkZlx1NGZjZVx1NGZkOFx1NGZkYlx1NGZkMVx1NGZkYVx1NGZkMFx1NGZlNFx1NGZlNVx1NTAxYVx1NTAyOFx1NTAxNFx1NTAyYVx1NTAyNVx1NTAwNVx1NGYxY1x1NGZmNlx1NTAyMVx1NTAyOVx1NTAyY1x1NGZmZVx1NGZlZlx1NTAxMVx1NTAwNlx1NTA0M1x1NTA0N1x1NjcwM1x1''@;'; put 'put ''NTA1NVx1NTA1MFx1NTA0OFx1NTA1YVx1NTA1Nlx1NTA2Y1x1NTA3OFx1NTA4MFx1NTA5YVx1NTA4NVx1NTBiNFx1NTBiMiJdLFsiZDFhMSIsIlx1NTBjOVx1NTBjYVx1NTBiM1x1NTBjMlx1NTBkNlx1NTBkZVx1NTBlNVx1NTBlZFx1NTBlM1x1NTBlZVx1NTBmOVx1NTBmNVx1NTEwOVx1NTEw''@;'; put 'put ''MVx1NTEwMlx1NTExNlx1NTExNVx1NTExNFx1NTExYVx1NTEyMVx1NTEzYVx1NTEzN1x1NTEzY1x1NTEzYlx1NTEzZlx1NTE0MFx1NTE1Mlx1NTE0Y1x1NTE1NFx1NTE2Mlx1N2FmOFx1NTE2OVx1NTE2YVx1NTE2ZVx1NTE4MFx1NTE4Mlx1NTZkOFx1NTE4Y1x1NTE4OVx1NTE4Zlx1NTE5MVx1''@;'; put 'put ''NTE5M1x1NTE5NVx1NTE5Nlx1NTFhNFx1NTFhNlx1NTFhMlx1NTFhOVx1NTFhYVx1NTFhYlx1NTFiM1x1NTFiMVx1NTFiMlx1NTFiMFx1NTFiNVx1NTFiZFx1NTFjNVx1NTFjOVx1NTFkYlx1NTFlMFx1ODY1NVx1NTFlOVx1NTFlZFx1NTFmMFx1NTFmNVx1NTFmZVx1NTIwNFx1NTIwYlx1NTIx''@;'; put 'put ''NFx1NTIwZVx1NTIyN1x1NTIyYVx1NTIyZVx1NTIzM1x1NTIzOVx1NTI0Zlx1NTI0NFx1NTI0Ylx1NTI0Y1x1NTI1ZVx1NTI1NFx1NTI2YVx1NTI3NFx1NTI2OVx1NTI3M1x1NTI3Zlx1NTI3ZFx1NTI4ZFx1NTI5NFx1NTI5Mlx1NTI3MVx1NTI4OFx1NTI5MVx1OGZhOCJdLFsiZDJhMSIsIlx1''@;'; put 'put ''OGZhN1x1NTJhY1x1NTJhZFx1NTJiY1x1NTJiNVx1NTJjMVx1NTJjZFx1NTJkN1x1NTJkZVx1NTJlM1x1NTJlNlx1OThlZFx1NTJlMFx1NTJmM1x1NTJmNVx1NTJmOFx1NTJmOVx1NTMwNlx1NTMwOFx1NzUzOFx1NTMwZFx1NTMxMFx1NTMwZlx1NTMxNVx1NTMxYVx1NTMyM1x1NTMyZlx1NTMz''@;'; put 'put ''MVx1NTMzM1x1NTMzOFx1NTM0MFx1NTM0Nlx1NTM0NVx1NGUxN1x1NTM0OVx1NTM0ZFx1NTFkNlx1NTM1ZVx1NTM2OVx1NTM2ZVx1NTkxOFx1NTM3Ylx1NTM3N1x1NTM4Mlx1NTM5Nlx1NTNhMFx1NTNhNlx1NTNhNVx1NTNhZVx1NTNiMFx1NTNiNlx1NTNjM1x1N2MxMlx1OTZkOVx1NTNkZlx1''@;'; put 'put ''NjZmY1x1NzFlZVx1NTNlZVx1NTNlOFx1NTNlZFx1NTNmYVx1NTQwMVx1NTQzZFx1NTQ0MFx1NTQyY1x1NTQyZFx1NTQzY1x1NTQyZVx1NTQzNlx1NTQyOVx1NTQxZFx1NTQ0ZVx1NTQ4Zlx1NTQ3NVx1NTQ4ZVx1NTQ1Zlx1NTQ3MVx1NTQ3N1x1NTQ3MFx1NTQ5Mlx1NTQ3Ylx1NTQ4MFx1NTQ3''@;'; put 'put ''Nlx1NTQ4NFx1NTQ5MFx1NTQ4Nlx1NTRjN1x1NTRhMlx1NTRiOFx1NTRhNVx1NTRhY1x1NTRjNFx1NTRjOFx1NTRhOCJdLFsiZDNhMSIsIlx1NTRhYlx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1NTRmYVx1''@;'; put 'put ''NTRlMlx1NTUzOVx1NTU0MFx1NTU2M1x1NTU0Y1x1NTUyZVx1NTU1Y1x1NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVhZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4N1x1NTVh''@;'; put 'put ''OFx1NTVkYVx1NTVjNVx1NTVkZlx1NTVjNFx1NTVkY1x1NTVlNFx1NTVkNFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVmOVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOFx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1NTY2YVx1NTY4Nlx1''@;'; put 'put ''NTY4MFx1NTY4YVx1NTZhMFx1NTY5NFx1NTY4Zlx1NTZhNVx1NTZhZVx1NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZmOVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOSJdLFsiZDRhMSIsIlx1NTcw''@;'; put 'put ''OFx1NTcwYlx1NTcwZFx1NTcxM1x1NTcxOFx1NTcxNlx1NTVjN1x1NTcxY1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1''@;'; put 'put ''NTdjNlx1NTdkNFx1NTdkMlx1NTdkM1x1NTgwYVx1NTdkNlx1NTdlM1x1NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThhYlx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThh''@;'; put 'put ''ZVx1NThjNVx1NThkM1x1NThkMVx1NThkN1x1NThkOVx1NThkOFx1NThlNVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThmY1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1''@;'; put 'put ''N2FkMlx1NTk1NVx1NTk1MFx1NTk0ZVx1NTk1YVx1NTk1OFx1NTk2Mlx1NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OSJdLFsiZDVhMSIsIlx1NTk3OFx1NTk4MVx1NTk5ZFx1NGY1ZVx1NGZhYlx1NTlhM1x1NTliMlx1NTljNlx1NTllOFx1NTlkY1x1NTk4ZFx1NTlkOVx1NTlkYVx1NWEyNVx1NWEx''@;'; put 'put ''Zlx1NWExMVx1NWExY1x1NWEwOVx1NWExYVx1NWE0MFx1NWE2Y1x1NWE0OVx1NWEzNVx1NWEzNlx1NWE2Mlx1NWE2YVx1NWE5YVx1NWFiY1x1NWFiZVx1NWFjYlx1NWFjMlx1NWFiZFx1NWFlM1x1NWFkN1x1NWFlNlx1NWFlOVx1NWFkNlx1NWFmYVx1NWFmYlx1NWIwY1x1NWIwYlx1NWIxNlx1''@;'; put 'put ''NWIzMlx1NWFkMFx1NWIyYVx1NWIzNlx1NWIzZVx1NWI0M1x1NWI0NVx1NWI0MFx1NWI1MVx1NWI1NVx1NWI1YVx1NWI1Ylx1NWI2NVx1NWI2OVx1NWI3MFx1NWI3M1x1NWI3NVx1NWI3OFx1NjU4OFx1NWI3YVx1NWI4MFx1NWI4M1x1NWJhNlx1NWJiOFx1NWJjM1x1NWJjN1x1NWJjOVx1NWJk''@;'; put 'put ''NFx1NWJkMFx1NWJlNFx1NWJlNlx1NWJlMlx1NWJkZVx1NWJlNVx1NWJlYlx1NWJmMFx1NWJmNlx1NWJmM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwZFx1NWMxM1x1NWMyMFx1NWMyMlx1NWMyOFx1NWMzOFx1NWMzOVx1NWM0MVx1NWM0Nlx1NWM0ZVx1NWM1MyJdLFsiZDZhMSIsIlx1NWM1MFx1''@;'; put 'put ''NWM0Zlx1NWI3MVx1NWM2Y1x1NWM2ZVx1NGU2Mlx1NWM3Nlx1NWM3OVx1NWM4Y1x1NWM5MVx1NWM5NFx1NTk5Ylx1NWNhYlx1NWNiYlx1NWNiNlx1NWNiY1x1NWNiN1x1NWNjNVx1NWNiZVx1NWNjN1x1NWNkOVx1NWNlOVx1NWNmZFx1NWNmYVx1NWNlZFx1NWQ4Y1x1NWNlYVx1NWQwYlx1NWQx''@;'; put 'put ''NVx1NWQxN1x1NWQ1Y1x1NWQxZlx1NWQxYlx1NWQxMVx1NWQxNFx1NWQyMlx1NWQxYVx1NWQxOVx1NWQxOFx1NWQ0Y1x1NWQ1Mlx1NWQ0ZVx1NWQ0Ylx1NWQ2Y1x1NWQ3M1x1NWQ3Nlx1NWQ4N1x1NWQ4NFx1NWQ4Mlx1NWRhMlx1NWQ5ZFx1NWRhY1x1NWRhZVx1NWRiZFx1NWQ5MFx1NWRiN1x1''@;'; put 'put ''NWRiY1x1NWRjOVx1NWRjZFx1NWRkM1x1NWRkMlx1NWRkNlx1NWRkYlx1NWRlYlx1NWRmMlx1NWRmNVx1NWUwYlx1NWUxYVx1NWUxOVx1NWUxMVx1NWUxYlx1NWUzNlx1NWUzN1x1NWU0NFx1NWU0M1x1NWU0MFx1NWU0ZVx1NWU1N1x1NWU1NFx1NWU1Zlx1NWU2Mlx1NWU2NFx1NWU0N1x1NWU3''@;'; put 'put ''NVx1NWU3Nlx1NWU3YVx1OWViY1x1NWU3Zlx1NWVhMFx1NWVjMVx1NWVjMlx1NWVjOFx1NWVkMFx1NWVjZiJdLFsiZDdhMSIsIlx1NWVkNlx1NWVlM1x1NWVkZFx1NWVkYVx1NWVkYlx1NWVlMlx1NWVlMVx1NWVlOFx1NWVlOVx1NWVlY1x1NWVmMVx1NWVmM1x1NWVmMFx1NWVmNFx1NWVmOFx1''@;'; put 'put ''NWVmZVx1NWYwM1x1NWYwOVx1NWY1ZFx1NWY1Y1x1NWYwYlx1NWYxMVx1NWYxNlx1NWYyOVx1NWYyZFx1NWYzOFx1NWY0MVx1NWY0OFx1NWY0Y1x1NWY0ZVx1NWYyZlx1NWY1MVx1NWY1Nlx1NWY1N1x1NWY1OVx1NWY2MVx1NWY2ZFx1NWY3M1x1NWY3N1x1NWY4M1x1NWY4Mlx1NWY3Zlx1NWY4''@;'; put 'put ''YVx1NWY4OFx1NWY5MVx1NWY4N1x1NWY5ZVx1NWY5OVx1NWY5OFx1NWZhMFx1NWZhOFx1NWZhZFx1NWZiY1x1NWZkNlx1NWZmYlx1NWZlNFx1NWZmOFx1NWZmMVx1NWZkZFx1NjBiM1x1NWZmZlx1NjAyMVx1NjA2MFx1NjAxOVx1NjAxMFx1NjAyOVx1NjAwZVx1NjAzMVx1NjAxYlx1NjAxNVx1''@;'; put 'put ''NjAyYlx1NjAyNlx1NjAwZlx1NjAzYVx1NjA1YVx1NjA0MVx1NjA2YVx1NjA3N1x1NjA1Zlx1NjA0YVx1NjA0Nlx1NjA0ZFx1NjA2M1x1NjA0M1x1NjA2NFx1NjA0Mlx1NjA2Y1x1NjA2Ylx1NjA1OVx1NjA4MVx1NjA4ZFx1NjBlN1x1NjA4M1x1NjA5YSJdLFsiZDhhMSIsIlx1NjA4NFx1NjA5''@;'; put 'put ''Ylx1NjA5Nlx1NjA5N1x1NjA5Mlx1NjBhN1x1NjA4Ylx1NjBlMVx1NjBiOFx1NjBlMFx1NjBkM1x1NjBiNFx1NWZmMFx1NjBiZFx1NjBjNlx1NjBiNVx1NjBkOFx1NjE0ZFx1NjExNVx1NjEwNlx1NjBmNlx1NjBmN1x1NjEwMFx1NjBmNFx1NjBmYVx1NjEwM1x1NjEyMVx1NjBmYlx1NjBmMVx1''@;'; put 'put ''NjEwZFx1NjEwZVx1NjE0N1x1NjEzZVx1NjEyOFx1NjEyN1x1NjE0YVx1NjEzZlx1NjEzY1x1NjEyY1x1NjEzNFx1NjEzZFx1NjE0Mlx1NjE0NFx1NjE3M1x1NjE3N1x1NjE1OFx1NjE1OVx1NjE1YVx1NjE2Ylx1NjE3NFx1NjE2Zlx1NjE2NVx1NjE3MVx1NjE1Zlx1NjE1ZFx1NjE1M1x1NjE3''@;'; put 'put ''NVx1NjE5OVx1NjE5Nlx1NjE4N1x1NjFhY1x1NjE5NFx1NjE5YVx1NjE4YVx1NjE5MVx1NjFhYlx1NjFhZVx1NjFjY1x1NjFjYVx1NjFjOVx1NjFmN1x1NjFjOFx1NjFjM1x1NjFjNlx1NjFiYVx1NjFjYlx1N2Y3OVx1NjFjZFx1NjFlNlx1NjFlM1x1NjFmNlx1NjFmYVx1NjFmNFx1NjFmZlx1''@;'; put 'put ''NjFmZFx1NjFmY1x1NjFmZVx1NjIwMFx1NjIwOFx1NjIwOVx1NjIwZFx1NjIwY1x1NjIxNFx1NjIxYiJdLFsiZDlhMSIsIlx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIzM1x1NjI0MVx1NjI0ZVx1NjI1ZVx1NjI2M1x1NjI1Ylx1NjI2MFx1NjI2OFx1NjI3Y1x1NjI4''@;'; put 'put ''Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJkNFx1NjI4M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1NjJjYVx1NjJjMlx1NjJjN1x1NjI5Ylx1NjJjOVx1NjMwY1x1NjJlZVx1NjJmMVx1NjMyN1x1''@;'; put 'put ''NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1NjM0ZFx1NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNiNVx1NjM2Ylx1NjM2OVx1NjNiZVx1NjNlOVx1NjNjMFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNk''@;'; put 'put ''Mlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQwNlx1NjQxM1x1NjQyNlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1NjQ5NVx1NjQ5M1x1NjRhNVx1NjRhOVx1NjQ4OFx1NjRiYyJdLFsiZGFhMSIsIlx1NjRkYVx1NjRkMlx1''@;'; put 'put ''NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRmZFx1NjUxOFx1NjUxY1x1NjUwNVx1NjUyNFx1NjUyM1x1NjUyYlx1NjUzNFx1NjUz''@;'; put 'put ''NVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1NjViN1x1NjVjM1x1NjVjNlx1NjVjMVx1NjVjNFx1NjVjY1x1NjVkMlx1NjVkYlx1''@;'; put 'put ''NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2NFx1NjY2N1x1NjY2OFx1NjY1Zlx1NjY2Mlx1NjY3MFx1NjY4M1x1NjY4OFx1NjY4''@;'; put 'put ''ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZjOVx1NjZiZVx1NjZiYyJdLFsiZGJhMSIsIlx1NjZjNFx1NjZiOFx1NjZkNlx1NjZkYVx1NjZlMFx1NjYzZlx1NjZlNlx1NjZlOVx1NjZmMFx1NjZmNVx1NjZmN1x1NjcwZlx1NjcxNlx1NjcxZVx1NjcyNlx1NjcyN1x1''@;'; put 'put ''OTczOFx1NjcyZVx1NjczZlx1NjczNlx1Njc0MVx1NjczOFx1NjczN1x1Njc0Nlx1Njc1ZVx1Njc2MFx1Njc1OVx1Njc2M1x1Njc2NFx1Njc4OVx1Njc3MFx1NjdhOVx1Njc3Y1x1Njc2YVx1Njc4Y1x1Njc4Ylx1NjdhNlx1NjdhMVx1Njc4NVx1NjdiN1x1NjdlZlx1NjdiNFx1NjdlY1x1Njdi''@;'; put 'put ''M1x1NjdlOVx1NjdiOFx1NjdlNFx1NjdkZVx1NjdkZFx1NjdlMlx1NjdlZVx1NjdiOVx1NjdjZVx1NjdjNlx1NjdlN1x1NmE5Y1x1NjgxZVx1Njg0Nlx1NjgyOVx1Njg0MFx1Njg0ZFx1NjgzMlx1Njg0ZVx1NjhiM1x1NjgyYlx1Njg1OVx1Njg2M1x1Njg3N1x1Njg3Zlx1Njg5Zlx1Njg4Zlx1''@;'; put 'put ''NjhhZFx1Njg5NFx1Njg5ZFx1Njg5Ylx1Njg4M1x1NmFhZVx1NjhiOVx1Njg3NFx1NjhiNVx1NjhhMFx1NjhiYVx1NjkwZlx1Njg4ZFx1Njg3ZVx1NjkwMVx1NjhjYVx1NjkwOFx1NjhkOFx1NjkyMlx1NjkyNlx1NjhlMVx1NjkwY1x1NjhjZCJdLFsiZGNhMSIsIlx1NjhkNFx1NjhlN1x1Njhk''@;'; put 'put ''NVx1NjkzNlx1NjkxMlx1NjkwNFx1NjhkN1x1NjhlM1x1NjkyNVx1NjhmOVx1NjhlMFx1NjhlZlx1NjkyOFx1NjkyYVx1NjkxYVx1NjkyM1x1NjkyMVx1NjhjNlx1Njk3OVx1Njk3N1x1Njk1Y1x1Njk3OFx1Njk2Ylx1Njk1NFx1Njk3ZVx1Njk2ZVx1NjkzOVx1Njk3NFx1NjkzZFx1Njk1OVx1''@;'; put 'put ''NjkzMFx1Njk2MVx1Njk1ZVx1Njk1ZFx1Njk4MVx1Njk2YVx1NjliMlx1NjlhZVx1NjlkMFx1NjliZlx1NjljMVx1NjlkM1x1NjliZVx1NjljZVx1NWJlOFx1NjljYVx1NjlkZFx1NjliYlx1NjljM1x1NjlhN1x1NmEyZVx1Njk5MVx1NjlhMFx1Njk5Y1x1Njk5NVx1NjliNFx1NjlkZVx1Njll''@;'; put 'put ''OFx1NmEwMlx1NmExYlx1NjlmZlx1NmIwYVx1NjlmOVx1NjlmMlx1NjllN1x1NmEwNVx1NjliMVx1NmExZVx1NjllZFx1NmExNFx1NjllYlx1NmEwYVx1NmExMlx1NmFjMVx1NmEyM1x1NmExM1x1NmE0NFx1NmEwY1x1NmE3Mlx1NmEzNlx1NmE3OFx1NmE0N1x1NmE2Mlx1NmE1OVx1NmE2Nlx1''@;'; put 'put ''NmE0OFx1NmEzOFx1NmEyMlx1NmE5MFx1NmE4ZFx1NmFhMFx1NmE4NFx1NmFhMlx1NmFhMyJdLFsiZGRhMSIsIlx1NmE5N1x1ODYxN1x1NmFiYlx1NmFjM1x1NmFjMlx1NmFiOFx1NmFiM1x1NmFhY1x1NmFkZVx1NmFkMVx1NmFkZlx1NmFhYVx1NmFkYVx1NmFlYVx1NmFmYlx1NmIwNVx1ODYx''@;'; put 'put ''Nlx1NmFmYVx1NmIxMlx1NmIxNlx1OWIzMVx1NmIxZlx1NmIzOFx1NmIzN1x1NzZkY1x1NmIzOVx1OThlZVx1NmI0N1x1NmI0M1x1NmI0OVx1NmI1MFx1NmI1OVx1NmI1NFx1NmI1Ylx1NmI1Zlx1NmI2MVx1NmI3OFx1NmI3OVx1NmI3Zlx1NmI4MFx1NmI4NFx1NmI4M1x1NmI4ZFx1NmI5OFx1''@;'; put 'put ''NmI5NVx1NmI5ZVx1NmJhNFx1NmJhYVx1NmJhYlx1NmJhZlx1NmJiMlx1NmJiMVx1NmJiM1x1NmJiN1x1NmJiY1x1NmJjNlx1NmJjYlx1NmJkM1x1NmJkZlx1NmJlY1x1NmJlYlx1NmJmM1x1NmJlZlx1OWViZVx1NmMwOFx1NmMxM1x1NmMxNFx1NmMxYlx1NmMyNFx1NmMyM1x1NmM1ZVx1NmM1''@;'; put 'put ''NVx1NmM2Mlx1NmM2YVx1NmM4Mlx1NmM4ZFx1NmM5YVx1NmM4MVx1NmM5Ylx1NmM3ZVx1NmM2OFx1NmM3M1x1NmM5Mlx1NmM5MFx1NmNjNFx1NmNmMVx1NmNkM1x1NmNiZFx1NmNkN1x1NmNjNVx1NmNkZFx1NmNhZVx1NmNiMVx1NmNiZSJdLFsiZGVhMSIsIlx1NmNiYVx1NmNkYlx1NmNlZlx1''@;'; put 'put ''NmNkOVx1NmNlYVx1NmQxZlx1ODg0ZFx1NmQzNlx1NmQyYlx1NmQzZFx1NmQzOFx1NmQxOVx1NmQzNVx1NmQzM1x1NmQxMlx1NmQwY1x1NmQ2M1x1NmQ5M1x1NmQ2NFx1NmQ1YVx1NmQ3OVx1NmQ1OVx1NmQ4ZVx1NmQ5NVx1NmZlNFx1NmQ4NVx1NmRmOVx1NmUxNVx1NmUwYVx1NmRiNVx1NmRj''@;'; put 'put ''N1x1NmRlNlx1NmRiOFx1NmRjNlx1NmRlY1x1NmRkZVx1NmRjY1x1NmRlOFx1NmRkMlx1NmRjNVx1NmRmYVx1NmRkOVx1NmRlNFx1NmRkNVx1NmRlYVx1NmRlZVx1NmUyZFx1NmU2ZVx1NmUyZVx1NmUxOVx1NmU3Mlx1NmU1Zlx1NmUzZVx1NmUyM1x1NmU2Ylx1NmUyYlx1NmU3Nlx1NmU0ZFx1''@;'; put 'put ''NmUxZlx1NmU0M1x1NmUzYVx1NmU0ZVx1NmUyNFx1NmVmZlx1NmUxZFx1NmUzOFx1NmU4Mlx1NmVhYVx1NmU5OFx1NmVjOVx1NmViN1x1NmVkM1x1NmViZFx1NmVhZlx1NmVjNFx1NmViMlx1NmVkNFx1NmVkNVx1NmU4Zlx1NmVhNVx1NmVjMlx1NmU5Zlx1NmY0MVx1NmYxMVx1NzA0Y1x1NmVl''@;'; put 'put ''Y1x1NmVmOFx1NmVmZVx1NmYzZlx1NmVmMlx1NmYzMVx1NmVlZlx1NmYzMlx1NmVjYyJdLFsiZGZhMSIsIlx1NmYzZVx1NmYxM1x1NmVmN1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1NmY4Mlx1NmY3Y1x1NmY1OFx1NmY4ZVx1NmY5MVx1''@;'; put 'put ''NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1NmZjNlx1NmZhYVx1NmZkZlx1NmZkNVx1NmZlY1x1NmZkNFx1NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAwZlx1NmZmZVx1NzAxYlx1NzAxYVx1NmY3NFx1NzAx''@;'; put 'put ''ZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2M1x1NzA5OVx1NzA5Mlx1NzBhZlx1NzBmMVx1NzBhY1x1NzBiOFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBjYlx1NzBkZFx1NzBkOVx1NzEwOVx1NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1NzE1NVx1NzE4OFx1NzE2Nlx1''@;'; put 'put ''NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1NzE5NVx1NzFhOFx1NzFhY1x1NzFkN1x1NzFiOVx1NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFmNVx1NzFmYyJdLFsiZTBhMSIsIlx1NzFmOVx1NzFmZlx1NzIwZFx1NzIx''@;'; put 'put ''MFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIzYlx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1NzI0Ylx1NzI1OFx1NzI3NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1NzJjNFx1''@;'; put 'put ''NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMxNlx1NzMxZFx1NzMzNFx1NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3NVx1NzM3''@;'; put 'put ''Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNlNVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1NzQ2Zlx1NzQyNVx1NzNmOFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQzZlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1NzQ3Nlx1''@;'; put 'put ''NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1NzNmMSJdLFsiZTFhMSIsIlx1NzRlMFx1NzRlM1x1NzRlN1x1NzRlOVx1NzRlZVx1NzRmMlx1NzRmMFx1NzRmMVx1NzRmOFx1NzRmN1x1NzUwNFx1NzUwM1x1NzUwNVx1NzUwY1x1NzUwZVx1NzUwZFx1NzUxNVx1NzUx''@;'; put 'put ''M1x1NzUxZVx1NzUyNlx1NzUyY1x1NzUzY1x1NzU0NFx1NzU0ZFx1NzU0YVx1NzU0OVx1NzU1Ylx1NzU0Nlx1NzU1YVx1NzU2OVx1NzU2NFx1NzU2N1x1NzU2Ylx1NzU2ZFx1NzU3OFx1NzU3Nlx1NzU4Nlx1NzU4N1x1NzU3NFx1NzU4YVx1NzU4OVx1NzU4Mlx1NzU5NFx1NzU5YVx1NzU5ZFx1''@;'; put 'put ''NzVhNVx1NzVhM1x1NzVjMlx1NzViM1x1NzVjM1x1NzViNVx1NzViZFx1NzViOFx1NzViY1x1NzViMVx1NzVjZFx1NzVjYVx1NzVkMlx1NzVkOVx1NzVlM1x1NzVkZVx1NzVmZVx1NzVmZlx1NzVmY1x1NzYwMVx1NzVmMFx1NzVmYVx1NzVmMlx1NzVmM1x1NzYwYlx1NzYwZFx1NzYwOVx1NzYx''@;'; put 'put ''Zlx1NzYyN1x1NzYyMFx1NzYyMVx1NzYyMlx1NzYyNFx1NzYzNFx1NzYzMFx1NzYzYlx1NzY0N1x1NzY0OFx1NzY0Nlx1NzY1Y1x1NzY1OFx1NzY2MVx1NzY2Mlx1NzY2OFx1NzY2OVx1NzY2YVx1NzY2N1x1NzY2Y1x1NzY3MCJdLFsiZTJhMSIsIlx1NzY3Mlx1NzY3Nlx1NzY3OFx1NzY3Y1x1''@;'; put 'put ''NzY4MFx1NzY4M1x1NzY4OFx1NzY4Ylx1NzY4ZVx1NzY5Nlx1NzY5M1x1NzY5OVx1NzY5YVx1NzZiMFx1NzZiNFx1NzZiOFx1NzZiOVx1NzZiYVx1NzZjMlx1NzZjZFx1NzZkNlx1NzZkMlx1NzZkZVx1NzZlMVx1NzZlNVx1NzZlN1x1NzZlYVx1ODYyZlx1NzZmYlx1NzcwOFx1NzcwN1x1Nzcw''@;'; put 'put ''NFx1NzcyOVx1NzcyNFx1NzcxZVx1NzcyNVx1NzcyNlx1NzcxYlx1NzczN1x1NzczOFx1Nzc0N1x1Nzc1YVx1Nzc2OFx1Nzc2Ylx1Nzc1Ylx1Nzc2NVx1Nzc3Zlx1Nzc3ZVx1Nzc3OVx1Nzc4ZVx1Nzc4Ylx1Nzc5MVx1NzdhMFx1Nzc5ZVx1NzdiMFx1NzdiNlx1NzdiOVx1NzdiZlx1NzdiY1x1''@;'; put 'put ''NzdiZFx1NzdiYlx1NzdjN1x1NzdjZFx1NzdkN1x1NzdkYVx1NzdkY1x1NzdlM1x1NzdlZVx1NzdmY1x1NzgwY1x1NzgxMlx1NzkyNlx1NzgyMFx1NzkyYVx1Nzg0NVx1Nzg4ZVx1Nzg3NFx1Nzg4Nlx1Nzg3Y1x1Nzg5YVx1Nzg4Y1x1NzhhM1x1NzhiNVx1NzhhYVx1NzhhZlx1NzhkMVx1Nzhj''@;'; put 'put ''Nlx1NzhjYlx1NzhkNFx1NzhiZVx1NzhiY1x1NzhjNVx1NzhjYVx1NzhlYyJdLFsiZTNhMSIsIlx1NzhlN1x1NzhkYVx1NzhmZFx1NzhmNFx1NzkwN1x1NzkxMlx1NzkxMVx1NzkxOVx1NzkyY1x1NzkyYlx1Nzk0MFx1Nzk2MFx1Nzk1N1x1Nzk1Zlx1Nzk1YVx1Nzk1NVx1Nzk1M1x1Nzk3YVx1''@;'; put 'put ''Nzk3Zlx1Nzk4YVx1Nzk5ZFx1NzlhN1x1OWY0Ylx1NzlhYVx1NzlhZVx1NzliM1x1NzliOVx1NzliYVx1NzljOVx1NzlkNVx1NzllN1x1NzllY1x1NzllMVx1NzllM1x1N2EwOFx1N2EwZFx1N2ExOFx1N2ExOVx1N2EyMFx1N2ExZlx1Nzk4MFx1N2EzMVx1N2EzYlx1N2EzZVx1N2EzN1x1N2E0''@;'; put 'put ''M1x1N2E1N1x1N2E0OVx1N2E2MVx1N2E2Mlx1N2E2OVx1OWY5ZFx1N2E3MFx1N2E3OVx1N2E3ZFx1N2E4OFx1N2E5N1x1N2E5NVx1N2E5OFx1N2E5Nlx1N2FhOVx1N2FjOFx1N2FiMFx1N2FiNlx1N2FjNVx1N2FjNFx1N2FiZlx1OTA4M1x1N2FjN1x1N2FjYVx1N2FjZFx1N2FjZlx1N2FkNVx1''@;'; put 'put ''N2FkM1x1N2FkOVx1N2FkYVx1N2FkZFx1N2FlMVx1N2FlMlx1N2FlNlx1N2FlZFx1N2FmMFx1N2IwMlx1N2IwZlx1N2IwYVx1N2IwNlx1N2IzM1x1N2IxOFx1N2IxOVx1N2IxZVx1N2IzNVx1N2IyOFx1N2IzNlx1N2I1MCJdLFsiZTRhMSIsIlx1N2I3YVx1N2IwNFx1N2I0ZFx1N2IwYlx1N2I0''@;'; put 'put ''Y1x1N2I0NVx1N2I3NVx1N2I2NVx1N2I3NFx1N2I2N1x1N2I3MFx1N2I3MVx1N2I2Y1x1N2I2ZVx1N2I5ZFx1N2I5OFx1N2I5Zlx1N2I4ZFx1N2I5Y1x1N2I5YVx1N2I4Ylx1N2I5Mlx1N2I4Zlx1N2I1ZFx1N2I5OVx1N2JjYlx1N2JjMVx1N2JjY1x1N2JjZlx1N2JiNFx1N2JjNlx1N2JkZFx1''@;'; put 'put ''N2JlOVx1N2MxMVx1N2MxNFx1N2JlNlx1N2JlNVx1N2M2MFx1N2MwMFx1N2MwN1x1N2MxM1x1N2JmM1x1N2JmN1x1N2MxN1x1N2MwZFx1N2JmNlx1N2MyM1x1N2MyN1x1N2MyYVx1N2MxZlx1N2MzN1x1N2MyYlx1N2MzZFx1N2M0Y1x1N2M0M1x1N2M1NFx1N2M0Zlx1N2M0MFx1N2M1MFx1N2M1''@;'; put 'put ''OFx1N2M1Zlx1N2M2NFx1N2M1Nlx1N2M2NVx1N2M2Y1x1N2M3NVx1N2M4M1x1N2M5MFx1N2NhNFx1N2NhZFx1N2NhMlx1N2NhYlx1N2NhMVx1N2NhOFx1N2NiM1x1N2NiMlx1N2NiMVx1N2NhZVx1N2NiOVx1N2NiZFx1N2NjMFx1N2NjNVx1N2NjMlx1N2NkOFx1N2NkMlx1N2NkY1x1N2NlMlx1''@;'; put 'put ''OWIzYlx1N2NlZlx1N2NmMlx1N2NmNFx1N2NmNlx1N2NmYVx1N2QwNiJdLFsiZTVhMSIsIlx1N2QwMlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2QzZlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2''@;'; put 'put ''M1x1N2Q5M1x1N2Q4OVx1N2Q1Ylx1N2Q4Zlx1N2Q3ZFx1N2Q5Ylx1N2RiYVx1N2RhZVx1N2RhM1x1N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1''@;'; put 'put ''N2UwNVx1N2UwYVx1N2UyM1x1N2UyMVx1N2UxMlx1N2UzMVx1N2UxZlx1N2UwOVx1N2UwYlx1N2UyMlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzN1x1N2UzMlx1N2UzYVx1N2U2N1x1N2U1ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2''@;'; put 'put ''OVx1N2U3Y1x1N2U3Ylx1N2U4M1x1N2RkNVx1N2U3ZFx1OGZhZVx1N2U3Zlx1N2U4OFx1N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYSJdLFsiZTZhMSIsIlx1N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1''@;'; put 'put ''N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1OFx1N2Y1Zlx1N2Y2MFx1N2Y2OFx1N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2ZiMlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3''@;'; put 'put ''MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1N2ZkNVx1N2ZkNFx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1''@;'; put 'put ''ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3M1x1ODA3Mlx1ODA3MFx1ODA3Nlx1ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBhY1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBkZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBl''@;'; put 'put ''Zlx1ODBmMVx1ODExYlx1ODEyOVx1ODEyM1x1ODEyZlx1ODE0YiJdLFsiZTdhMSIsIlx1OTY4Ylx1ODE0Nlx1ODEzZVx1ODE1M1x1ODE1MVx1ODBmY1x1ODE3MVx1ODE2ZVx1ODE2NVx1ODE2Nlx1ODE3NFx1ODE4M1x1ODE4OFx1ODE4YVx1ODE4MFx1ODE4Mlx1ODFhMFx1ODE5NVx1ODFhNFx1''@;'; put 'put ''ODFhM1x1ODE1Zlx1ODE5M1x1ODFhOVx1ODFiMFx1ODFiNVx1ODFiZVx1ODFiOFx1ODFiZFx1ODFjMFx1ODFjMlx1ODFiYVx1ODFjOVx1ODFjZFx1ODFkMVx1ODFkOVx1ODFkOFx1ODFjOFx1ODFkYVx1ODFkZlx1ODFlMFx1ODFlN1x1ODFmYVx1ODFmYlx1ODFmZVx1ODIwMVx1ODIwMlx1ODIw''@;'; put 'put ''NVx1ODIwN1x1ODIwYVx1ODIwZFx1ODIxMFx1ODIxNlx1ODIyOVx1ODIyYlx1ODIzOFx1ODIzM1x1ODI0MFx1ODI1OVx1ODI1OFx1ODI1ZFx1ODI1YVx1ODI1Zlx1ODI2NFx1ODI2Mlx1ODI2OFx1ODI2YVx1ODI2Ylx1ODIyZVx1ODI3MVx1ODI3N1x1ODI3OFx1ODI3ZVx1ODI4ZFx1ODI5Mlx1''@;'; put 'put ''ODJhYlx1ODI5Zlx1ODJiYlx1ODJhY1x1ODJlMVx1ODJlM1x1ODJkZlx1ODJkMlx1ODJmNFx1ODJmM1x1ODJmYVx1ODM5M1x1ODMwM1x1ODJmYlx1ODJmOVx1ODJkZVx1ODMwNlx1ODJkY1x1ODMwOVx1ODJkOSJdLFsiZThhMSIsIlx1ODMzNVx1ODMzNFx1ODMxNlx1ODMzMlx1ODMzMVx1ODM0''@;'; put 'put ''MFx1ODMzOVx1ODM1MFx1ODM0NVx1ODMyZlx1ODMyYlx1ODMxN1x1ODMxOFx1ODM4NVx1ODM5YVx1ODNhYVx1ODM5Zlx1ODNhMlx1ODM5Nlx1ODMyM1x1ODM4ZVx1ODM4N1x1ODM4YVx1ODM3Y1x1ODNiNVx1ODM3M1x1ODM3NVx1ODNhMFx1ODM4OVx1ODNhOFx1ODNmNFx1ODQxM1x1ODNlYlx1''@;'; put 'put ''ODNjZVx1ODNmZFx1ODQwM1x1ODNkOFx1ODQwYlx1ODNjMVx1ODNmN1x1ODQwN1x1ODNlMFx1ODNmMlx1ODQwZFx1ODQyMlx1ODQyMFx1ODNiZFx1ODQzOFx1ODUwNlx1ODNmYlx1ODQ2ZFx1ODQyYVx1ODQzY1x1ODU1YVx1ODQ4NFx1ODQ3N1x1ODQ2Ylx1ODRhZFx1ODQ2ZVx1ODQ4Mlx1ODQ2''@;'; put 'put ''OVx1ODQ0Nlx1ODQyY1x1ODQ2Zlx1ODQ3OVx1ODQzNVx1ODRjYVx1ODQ2Mlx1ODRiOVx1ODRiZlx1ODQ5Zlx1ODRkOVx1ODRjZFx1ODRiYlx1ODRkYVx1ODRkMFx1ODRjMVx1ODRjNlx1ODRkNlx1ODRhMVx1ODUyMVx1ODRmZlx1ODRmNFx1ODUxN1x1ODUxOFx1ODUyY1x1ODUxZlx1ODUxNVx1''@;'; put 'put ''ODUxNFx1ODRmY1x1ODU0MFx1ODU2M1x1ODU1OFx1ODU0OCJdLFsiZTlhMSIsIlx1ODU0MVx1ODYwMlx1ODU0Ylx1ODU1NVx1ODU4MFx1ODVhNFx1ODU4OFx1ODU5MVx1ODU4YVx1ODVhOFx1ODU2ZFx1ODU5NFx1ODU5Ylx1ODVlYVx1ODU4N1x1ODU5Y1x1ODU3N1x1ODU3ZVx1ODU5MFx1ODVj''@;'; put 'put ''OVx1ODViYVx1ODVjZlx1ODViOVx1ODVkMFx1ODVkNVx1ODVkZFx1ODVlNVx1ODVkY1x1ODVmOVx1ODYwYVx1ODYxM1x1ODYwYlx1ODVmZVx1ODVmYVx1ODYwNlx1ODYyMlx1ODYxYVx1ODYzMFx1ODYzZlx1ODY0ZFx1NGU1NVx1ODY1NFx1ODY1Zlx1ODY2N1x1ODY3MVx1ODY5M1x1ODZhM1x1''@;'; put 'put ''ODZhOVx1ODZhYVx1ODY4Ylx1ODY4Y1x1ODZiNlx1ODZhZlx1ODZjNFx1ODZjNlx1ODZiMFx1ODZjOVx1ODgyM1x1ODZhYlx1ODZkNFx1ODZkZVx1ODZlOVx1ODZlY1x1ODZkZlx1ODZkYlx1ODZlZlx1ODcxMlx1ODcwNlx1ODcwOFx1ODcwMFx1ODcwM1x1ODZmYlx1ODcxMVx1ODcwOVx1ODcw''@;'; put 'put ''ZFx1ODZmOVx1ODcwYVx1ODczNFx1ODczZlx1ODczN1x1ODczYlx1ODcyNVx1ODcyOVx1ODcxYVx1ODc2MFx1ODc1Zlx1ODc3OFx1ODc0Y1x1ODc0ZVx1ODc3NFx1ODc1N1x1ODc2OFx1ODc2ZVx1ODc1OSJdLFsiZWFhMSIsIlx1ODc1M1x1ODc2M1x1ODc2YVx1ODgwNVx1ODdhMlx1ODc5Zlx1''@;'; put 'put ''ODc4Mlx1ODdhZlx1ODdjYlx1ODdiZFx1ODdjMFx1ODdkMFx1OTZkNlx1ODdhYlx1ODdjNFx1ODdiM1x1ODdjN1x1ODdjNlx1ODdiYlx1ODdlZlx1ODdmMlx1ODdlMFx1ODgwZlx1ODgwZFx1ODdmZVx1ODdmNlx1ODdmN1x1ODgwZVx1ODdkMlx1ODgxMVx1ODgxNlx1ODgxNVx1ODgyMlx1ODgy''@;'; put 'put ''MVx1ODgzMVx1ODgzNlx1ODgzOVx1ODgyN1x1ODgzYlx1ODg0NFx1ODg0Mlx1ODg1Mlx1ODg1OVx1ODg1ZVx1ODg2Mlx1ODg2Ylx1ODg4MVx1ODg3ZVx1ODg5ZVx1ODg3NVx1ODg3ZFx1ODhiNVx1ODg3Mlx1ODg4Mlx1ODg5N1x1ODg5Mlx1ODhhZVx1ODg5OVx1ODhhMlx1ODg4ZFx1ODhhNFx1''@;'; put 'put ''ODhiMFx1ODhiZlx1ODhiMVx1ODhjM1x1ODhjNFx1ODhkNFx1ODhkOFx1ODhkOVx1ODhkZFx1ODhmOVx1ODkwMlx1ODhmY1x1ODhmNFx1ODhlOFx1ODhmMlx1ODkwNFx1ODkwY1x1ODkwYVx1ODkxM1x1ODk0M1x1ODkxZVx1ODkyNVx1ODkyYVx1ODkyYlx1ODk0MVx1ODk0NFx1ODkzYlx1ODkz''@;'; put 'put ''Nlx1ODkzOFx1ODk0Y1x1ODkxZFx1ODk2MFx1ODk1ZSJdLFsiZWJhMSIsIlx1ODk2Nlx1ODk2NFx1ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlhOVx1ODlhNlx1ODlhY1x1ODlhZlx1ODliMlx1ODliYVx1''@;'; put 'put ''ODliZFx1ODliZlx1ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1ODlmNFx1ODlmOFx1OGEwM1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1OGE3Y1x1OGE2ZFx1OGE2Y1x1OGE2Mlx1OGE4NVx1OGE4''@;'; put 'put ''Mlx1OGE4NFx1OGFhOFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5YVx1OGFhM1x1OGFjNFx1OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlN1x1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1OGFmN1x1OGFkZVx1OGFkYlx1OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1''@;'; put 'put ''OGIxNlx1OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1OGIyYlx1OGIzZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2YiJdLFsiZWNhMSIsIlx1OGI1Zlx1OGI2Y1x1OGI2Zlx1OGI3NFx1OGI3ZFx1OGI4MFx1OGI4''@;'; put 'put ''Y1x1OGI4ZVx1OGI5Mlx1OGI5M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMzYVx1OGM0MVx1OGMzZlx1OGM0OFx1OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1OGM4ZFx1OGM4ZVx1OGM5NFx1OGM3Y1x1OGM5OFx1''@;'; put 'put ''NjIxZFx1OGNhZFx1OGNhYVx1OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1OGNiNlx1OGNjOFx1OGNjMVx1OGNlNFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQxMFx1OWY0ZVx1OGQxM1x1OGNjZFx1OGQxNFx1OGQx''@;'; put 'put ''Nlx1OGQ2N1x1OGQ2ZFx1OGQ3MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRjMlx1OGRiZVx1OGRiYVx1OGRjZlx1OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1OGRmZlx1OGUxZFx1OGUxZVx1OGUxMFx1OGUxZlx1''@;'; put 'put ''OGU0Mlx1OGUzNVx1OGUzMFx1OGUzNFx1OGU0YSJdLFsiZWRhMSIsIlx1OGU0N1x1OGU0OVx1OGU0Y1x1OGU1MFx1OGU0OFx1OGU1OVx1OGU2NFx1OGU2MFx1OGUyYVx1OGU2M1x1OGU1NVx1OGU3Nlx1OGU3Mlx1OGU3Y1x1OGU4MVx1OGU4N1x1OGU4NVx1OGU4NFx1OGU4Ylx1OGU4YVx1OGU5''@;'; put 'put ''M1x1OGU5MVx1OGU5NFx1OGU5OVx1OGVhYVx1OGVhMVx1OGVhY1x1OGViMFx1OGVjNlx1OGViMVx1OGViZVx1OGVjNVx1OGVjOFx1OGVjYlx1OGVkYlx1OGVlM1x1OGVmY1x1OGVmYlx1OGVlYlx1OGVmZVx1OGYwYVx1OGYwNVx1OGYxNVx1OGYxMlx1OGYxOVx1OGYxM1x1OGYxY1x1OGYxZlx1''@;'; put 'put ''OGYxYlx1OGYwY1x1OGYyNlx1OGYzM1x1OGYzYlx1OGYzOVx1OGY0NVx1OGY0Mlx1OGYzZVx1OGY0Y1x1OGY0OVx1OGY0Nlx1OGY0ZVx1OGY1N1x1OGY1Y1x1OGY2Mlx1OGY2M1x1OGY2NFx1OGY5Y1x1OGY5Zlx1OGZhM1x1OGZhZFx1OGZhZlx1OGZiN1x1OGZkYVx1OGZlNVx1OGZlMlx1OGZl''@;'; put 'put ''YVx1OGZlZlx1OTA4N1x1OGZmNFx1OTAwNVx1OGZmOVx1OGZmYVx1OTAxMVx1OTAxNVx1OTAyMVx1OTAwZFx1OTAxZVx1OTAxNlx1OTAwYlx1OTAyN1x1OTAzNlx1OTAzNVx1OTAzOVx1OGZmOCJdLFsiZWVhMSIsIlx1OTA0Zlx1OTA1MFx1OTA1MVx1OTA1Mlx1OTAwZVx1OTA0OVx1OTAzZVx1''@;'; put 'put ''OTA1Nlx1OTA1OFx1OTA1ZVx1OTA2OFx1OTA2Zlx1OTA3Nlx1OTZhOFx1OTA3Mlx1OTA4Mlx1OTA3ZFx1OTA4MVx1OTA4MFx1OTA4YVx1OTA4OVx1OTA4Zlx1OTBhOFx1OTBhZlx1OTBiMVx1OTBiNVx1OTBlMlx1OTBlNFx1NjI0OFx1OTBkYlx1OTEwMlx1OTExMlx1OTExOVx1OTEzMlx1OTEz''@;'; put 'put ''MFx1OTE0YVx1OTE1Nlx1OTE1OFx1OTE2M1x1OTE2NVx1OTE2OVx1OTE3M1x1OTE3Mlx1OTE4Ylx1OTE4OVx1OTE4Mlx1OTFhMlx1OTFhYlx1OTFhZlx1OTFhYVx1OTFiNVx1OTFiNFx1OTFiYVx1OTFjMFx1OTFjMVx1OTFjOVx1OTFjYlx1OTFkMFx1OTFkNlx1OTFkZlx1OTFlMVx1OTFkYlx1''@;'; put 'put ''OTFmY1x1OTFmNVx1OTFmNlx1OTIxZVx1OTFmZlx1OTIxNFx1OTIyY1x1OTIxNVx1OTIxMVx1OTI1ZVx1OTI1N1x1OTI0NVx1OTI0OVx1OTI2NFx1OTI0OFx1OTI5NVx1OTIzZlx1OTI0Ylx1OTI1MFx1OTI5Y1x1OTI5Nlx1OTI5M1x1OTI5Ylx1OTI1YVx1OTJjZlx1OTJiOVx1OTJiN1x1OTJl''@;'; put 'put ''OVx1OTMwZlx1OTJmYVx1OTM0NFx1OTMyZSJdLFsiZWZhMSIsIlx1OTMxOVx1OTMyMlx1OTMxYVx1OTMyM1x1OTMzYVx1OTMzNVx1OTMzYlx1OTM1Y1x1OTM2MFx1OTM3Y1x1OTM2ZVx1OTM1Nlx1OTNiMFx1OTNhY1x1OTNhZFx1OTM5NFx1OTNiOVx1OTNkNlx1OTNkN1x1OTNlOFx1OTNlNVx1''@;'; put 'put ''OTNkOFx1OTNjM1x1OTNkZFx1OTNkMFx1OTNjOFx1OTNlNFx1OTQxYVx1OTQxNFx1OTQxM1x1OTQwM1x1OTQwN1x1OTQxMFx1OTQzNlx1OTQyYlx1OTQzNVx1OTQyMVx1OTQzYVx1OTQ0MVx1OTQ1Mlx1OTQ0NFx1OTQ1Ylx1OTQ2MFx1OTQ2Mlx1OTQ1ZVx1OTQ2YVx1OTIyOVx1OTQ3MFx1OTQ3''@;'; put 'put ''NVx1OTQ3N1x1OTQ3ZFx1OTQ1YVx1OTQ3Y1x1OTQ3ZVx1OTQ4MVx1OTQ3Zlx1OTU4Mlx1OTU4N1x1OTU4YVx1OTU5NFx1OTU5Nlx1OTU5OFx1OTU5OVx1OTVhMFx1OTVhOFx1OTVhN1x1OTVhZFx1OTViY1x1OTViYlx1OTViOVx1OTViZVx1OTVjYVx1NmZmNlx1OTVjM1x1OTVjZFx1OTVjY1x1''@;'; put 'put ''OTVkNVx1OTVkNFx1OTVkNlx1OTVkY1x1OTVlMVx1OTVlNVx1OTVlMlx1OTYyMVx1OTYyOFx1OTYyZVx1OTYyZlx1OTY0Mlx1OTY0Y1x1OTY0Zlx1OTY0Ylx1OTY3N1x1OTY1Y1x1OTY1ZSJdLFsiZjBhMSIsIlx1OTY1ZFx1OTY1Zlx1OTY2Nlx1OTY3Mlx1OTY2Y1x1OTY4ZFx1OTY5OFx1OTY5''@;'; put 'put ''NVx1OTY5N1x1OTZhYVx1OTZhN1x1OTZiMVx1OTZiMlx1OTZiMFx1OTZiNFx1OTZiNlx1OTZiOFx1OTZiOVx1OTZjZVx1OTZjYlx1OTZjOVx1OTZjZFx1ODk0ZFx1OTZkY1x1OTcwZFx1OTZkNVx1OTZmOVx1OTcwNFx1OTcwNlx1OTcwOFx1OTcxM1x1OTcwZVx1OTcxMVx1OTcwZlx1OTcxNlx1''@;'; put 'put ''OTcxOVx1OTcyNFx1OTcyYVx1OTczMFx1OTczOVx1OTczZFx1OTczZVx1OTc0NFx1OTc0Nlx1OTc0OFx1OTc0Mlx1OTc0OVx1OTc1Y1x1OTc2MFx1OTc2NFx1OTc2Nlx1OTc2OFx1NTJkMlx1OTc2Ylx1OTc3MVx1OTc3OVx1OTc4NVx1OTc3Y1x1OTc4MVx1OTc3YVx1OTc4Nlx1OTc4Ylx1OTc4''@;'; put 'put ''Zlx1OTc5MFx1OTc5Y1x1OTdhOFx1OTdhNlx1OTdhM1x1OTdiM1x1OTdiNFx1OTdjM1x1OTdjNlx1OTdjOFx1OTdjYlx1OTdkY1x1OTdlZFx1OWY0Zlx1OTdmMlx1N2FkZlx1OTdmNlx1OTdmNVx1OTgwZlx1OTgwY1x1OTgzOFx1OTgyNFx1OTgyMVx1OTgzN1x1OTgzZFx1OTg0Nlx1OTg0Zlx1''@;'; put 'put ''OTg0Ylx1OTg2Ylx1OTg2Zlx1OTg3MCJdLFsiZjFhMSIsIlx1OTg3MVx1OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1OThjM1x1OThjNlx1OThlOVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1OTkxOFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTky''@;'; put 'put ''MFx1OTkyY1x1OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5N1x1OTk5OFx1OTlhNVx1OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlkZFx1OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1''@;'; put 'put ''OTlmMlx1OTlmYlx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0M1x1OWEzZVx1OWE1NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2Mlx1OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFi''@;'; put 'put ''MFx1OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFkZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFlYlx1OWFlZVx1OWFmNFx1OWFmMVx1OWFmNyJdLFsiZjJhMSIsIlx1OWFmYlx1OWIwNlx1OWIxOFx1OWIxYVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1''@;'; put 'put ''OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1OWI5M1x1OWI4M1x1OWI5MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJhOFx1OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJj''@;'; put 'put ''Nlx1OWJjZlx1OWJkMVx1OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJkNFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMwOVx1OWMxM1x1OWMwY1x1OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1OWMyZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1''@;'; put 'put ''OWMzMFx1OWM0N1x1OWMzMlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1OWNlYlx1OWQwM1x1OWQwNlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQxZlx1OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQz''@;'; put 'put ''Zlx1OWQzZVx1OWQ0Nlx1OWQ0OCJdLFsiZjNhMSIsIlx1OWQ1ZFx1OWQ1ZVx1OWQ2NFx1OWQ1MVx1OWQ1MFx1OWQ1OVx1OWQ3Mlx1OWQ4OVx1OWQ4N1x1OWRhYlx1OWQ2Zlx1OWQ3YVx1OWQ5YVx1OWRhNFx1OWRhOVx1OWRiMlx1OWRjNFx1OWRjMVx1OWRiYlx1OWRiOFx1OWRiYVx1OWRjNlx1''@;'; put 'put ''OWRjZlx1OWRjMlx1OWRkOVx1OWRkM1x1OWRmOFx1OWRlNlx1OWRlZFx1OWRlZlx1OWRmZFx1OWUxYVx1OWUxYlx1OWUxZVx1OWU3NVx1OWU3OVx1OWU3ZFx1OWU4MVx1OWU4OFx1OWU4Ylx1OWU4Y1x1OWU5Mlx1OWU5NVx1OWU5MVx1OWU5ZFx1OWVhNVx1OWVhOVx1OWViOFx1OWVhYVx1OWVh''@;'; put 'put ''ZFx1OTc2MVx1OWVjY1x1OWVjZVx1OWVjZlx1OWVkMFx1OWVkNFx1OWVkY1x1OWVkZVx1OWVkZFx1OWVlMFx1OWVlNVx1OWVlOFx1OWVlZlx1OWVmNFx1OWVmNlx1OWVmN1x1OWVmOVx1OWVmYlx1OWVmY1x1OWVmZFx1OWYwN1x1OWYwOFx1NzZiN1x1OWYxNVx1OWYyMVx1OWYyY1x1OWYzZVx1''@;'; put 'put ''OWY0YVx1OWY1Mlx1OWY1NFx1OWY2M1x1OWY1Zlx1OWY2MFx1OWY2MVx1OWY2Nlx1OWY2N1x1OWY2Y1x1OWY2YVx1OWY3N1x1OWY3Mlx1OWY3Nlx1OWY5NVx1OWY5Y1x1OWZhMCJdLFsiZjRhMSIsIlx1NTgyZlx1NjljN1x1OTA1OVx1NzQ2NFx1NTFkY1x1NzE5OSJdLFsiZjlhMSIsIlx1N2U4''@;'; put 'put ''YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYzMVx1NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1NGY5YVx1NGY5NFx1NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1''@;'; put 'put ''NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YVx1NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIxNVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3Mlx1NTM5M1x1NTNiMlx1NTNkZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRm''@;'; put 'put ''Zlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1NTdjN1x1ZmEwZlx1ZmExMFx1NTg5ZVx1NThiMlx1NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1NzUyZlx1NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1''@;'; put 'put ''NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRiOVx1NWRkMFx1NWYyMVx1NWYzNFx1NWY2N1x1NWZiNyJdLFsiZmFhMSIsIlx1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjExMVx1NjEzN1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNm''@;'; put 'put ''NVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYzYlx1NjYwOVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1NjcwZVx1ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1''@;'; put 'put ''NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1NjllMlx1NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQwNFx1NmQ4N1x1NmQ2Zlx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRm''@;'; put 'put ''OFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmViZlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1NzFmZVx1NzJiMSJdLFsiZmJhMSIsIlx1NzJiZVx1''@;'; put 'put ''NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1Nzgy''@;'; put 'put ''MVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1''@;'; put 'put ''ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3''@;'; put 'put ''Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYSJdLFsiZmNhMSIsIlx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1''@;'; put 'put ''OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQz''@;'; put 'put ''MVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1''@;'; put 'put ''OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMSJdLFsiZmNmMSIsIlx1MjE3MCIsOSwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyIl0sWyI4ZmEyYWYiLCJcdTAyZDhcdTAyYzdceGI4XHUwMmQ5XHUwMmRkXHhhZlx1MDJkYlx1MDJkYVx1ZmY1ZVx1MDM4NFx1''@;'; put 'put ''MDM4NSJdLFsiOGZhMmMyIiwiXHhhMVx4YTZceGJmIl0sWyI4ZmEyZWIiLCJceGJhXHhhYVx4YTlceGFlXHUyMTIyXHhhNFx1MjExNiJdLFsiOGZhNmUxIiwiXHUwMzg2XHUwMzg4XHUwMzg5XHUwMzhhXHUwM2FhIl0sWyI4ZmE2ZTciLCJcdTAzOGMiXSxbIjhmYTZlOSIsIlx1MDM4ZVx1MDNh''@;'; put 'put ''YiJdLFsiOGZhNmVjIiwiXHUwMzhmIl0sWyI4ZmE2ZjEiLCJcdTAzYWNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzY2FcdTAzOTBcdTAzY2NcdTAzYzJcdTAzY2RcdTAzY2JcdTAzYjBcdTAzY2UiXSxbIjhmYTdjMiIsIlx1MDQwMiIsMTAsIlx1MDQwZVx1MDQwZiJdLFsiOGZhN2YyIiwiXHUwNDUy''@;'; put 'put ''IiwxMCwiXHUwNDVlXHUwNDVmIl0sWyI4ZmE5YTEiLCJceGM2XHUwMTEwIl0sWyI4ZmE5YTQiLCJcdTAxMjYiXSxbIjhmYTlhNiIsIlx1MDEzMiJdLFsiOGZhOWE4IiwiXHUwMTQxXHUwMTNmIl0sWyI4ZmE5YWIiLCJcdTAxNGFceGQ4XHUwMTUyIl0sWyI4ZmE5YWYiLCJcdTAxNjZceGRlIl0s''@;'; put 'put ''WyI4ZmE5YzEiLCJceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEzOFx1MDE0Mlx1MDE0MFx1MDE0OVx1MDE0Ylx4ZjhcdTAxNTNceGRmXHUwMTY3XHhmZSJdLFsiOGZhYWExIiwiXHhjMVx4YzBceGM0XHhjMlx1MDEwMlx1MDFjZFx1MDEwMFx1MDEwNFx4YzVceGMzXHUwMTA2''@;'; put 'put ''XHUwMTA4XHUwMTBjXHhjN1x1MDEwYVx1MDEwZVx4YzlceGM4XHhjYlx4Y2FcdTAxMWFcdTAxMTZcdTAxMTJcdTAxMTgiXSxbIjhmYWFiYSIsIlx1MDExY1x1MDExZVx1MDEyMlx1MDEyMFx1MDEyNFx4Y2RceGNjXHhjZlx4Y2VcdTAxY2ZcdTAxMzBcdTAxMmFcdTAxMmVcdTAxMjhcdTAxMzRc''@;'; put 'put ''dTAxMzZcdTAxMzlcdTAxM2RcdTAxM2JcdTAxNDNcdTAxNDdcdTAxNDVceGQxXHhkM1x4ZDJceGQ2XHhkNFx1MDFkMVx1MDE1MFx1MDE0Y1x4ZDVcdTAxNTRcdTAxNThcdTAxNTZcdTAxNWFcdTAxNWNcdTAxNjBcdTAxNWVcdTAxNjRcdTAxNjJceGRhXHhkOVx4ZGNceGRiXHUwMTZjXHUwMWQz''@;'; put 'put ''XHUwMTcwXHUwMTZhXHUwMTcyXHUwMTZlXHUwMTY4XHUwMWQ3XHUwMWRiXHUwMWQ5XHUwMWQ1XHUwMTc0XHhkZFx1MDE3OFx1MDE3Nlx1MDE3OVx1MDE3ZFx1MDE3YiJdLFsiOGZhYmExIiwiXHhlMVx4ZTBceGU0XHhlMlx1MDEwM1x1MDFjZVx1MDEwMVx1MDEwNVx4ZTVceGUzXHUwMTA3XHUw''@;'; put 'put ''MTA5XHUwMTBkXHhlN1x1MDEwYlx1MDEwZlx4ZTlceGU4XHhlYlx4ZWFcdTAxMWJcdTAxMTdcdTAxMTNcdTAxMTlcdTAxZjVcdTAxMWRcdTAxMWYiXSxbIjhmYWJiZCIsIlx1MDEyMVx1MDEyNVx4ZWRceGVjXHhlZlx4ZWVcdTAxZDAiXSxbIjhmYWJjNSIsIlx1MDEyYlx1MDEyZlx1MDEyOVx1''@;'; put 'put ''MDEzNVx1MDEzN1x1MDEzYVx1MDEzZVx1MDEzY1x1MDE0NFx1MDE0OFx1MDE0Nlx4ZjFceGYzXHhmMlx4ZjZceGY0XHUwMWQyXHUwMTUxXHUwMTRkXHhmNVx1MDE1NVx1MDE1OVx1MDE1N1x1MDE1Ylx1MDE1ZFx1MDE2MVx1MDE1Zlx1MDE2NVx1MDE2M1x4ZmFceGY5XHhmY1x4ZmJcdTAxNmRc''@;'; put 'put ''dTAxZDRcdTAxNzFcdTAxNmJcdTAxNzNcdTAxNmZcdTAxNjlcdTAxZDhcdTAxZGNcdTAxZGFcdTAxZDZcdTAxNzVceGZkXHhmZlx1MDE3N1x1MDE3YVx1MDE3ZVx1MDE3YyJdLFsiOGZiMGExIiwiXHU0ZTAyXHU0ZTA0XHU0ZTA1XHU0ZTBjXHU0ZTEyXHU0ZTFmXHU0ZTIzXHU0ZTI0XHU0ZTI4''@;'; put 'put ''XHU0ZTJiXHU0ZTJlXHU0ZTJmXHU0ZTMwXHU0ZTM1XHU0ZTQwXHU0ZTQxXHU0ZTQ0XHU0ZTQ3XHU0ZTUxXHU0ZTVhXHU0ZTVjXHU0ZTYzXHU0ZTY4XHU0ZTY5XHU0ZTc0XHU0ZTc1XHU0ZTc5XHU0ZTdmXHU0ZThkXHU0ZTk2XHU0ZTk3XHU0ZTlkXHU0ZWFmXHU0ZWI5XHU0ZWMzXHU0ZWQwXHU0''@;'; put 'put ''ZWRhXHU0ZWRiXHU0ZWUwXHU0ZWUxXHU0ZWUyXHU0ZWU4XHU0ZWVmXHU0ZWYxXHU0ZWYzXHU0ZWY1XHU0ZWZkXHU0ZWZlXHU0ZWZmXHU0ZjAwXHU0ZjAyXHU0ZjAzXHU0ZjA4XHU0ZjBiXHU0ZjBjXHU0ZjEyXHU0ZjE1XHU0ZjE2XHU0ZjE3XHU0ZjE5XHU0ZjJlXHU0ZjMxXHU0ZjYwXHU0ZjMz''@;'; put 'put ''XHU0ZjM1XHU0ZjM3XHU0ZjM5XHU0ZjNiXHU0ZjNlXHU0ZjQwXHU0ZjQyXHU0ZjQ4XHU0ZjQ5XHU0ZjRiXHU0ZjRjXHU0ZjUyXHU0ZjU0XHU0ZjU2XHU0ZjU4XHU0ZjVmXHU0ZjYzXHU0ZjZhXHU0ZjZjXHU0ZjZlXHU0ZjcxXHU0Zjc3XHU0Zjc4XHU0Zjc5XHU0ZjdhXHU0ZjdkXHU0ZjdlXHU0''@;'; put 'put ''ZjgxXHU0ZjgyXHU0Zjg0Il0sWyI4ZmIxYTEiLCJcdTRmODVcdTRmODlcdTRmOGFcdTRmOGNcdTRmOGVcdTRmOTBcdTRmOTJcdTRmOTNcdTRmOTRcdTRmOTdcdTRmOTlcdTRmOWFcdTRmOWVcdTRmOWZcdTRmYjJcdTRmYjdcdTRmYjlcdTRmYmJcdTRmYmNcdTRmYmRcdTRmYmVcdTRmYzBcdTRm''@;'; put 'put ''YzFcdTRmYzVcdTRmYzZcdTRmYzhcdTRmYzlcdTRmY2JcdTRmY2NcdTRmY2RcdTRmY2ZcdTRmZDJcdTRmZGNcdTRmZTBcdTRmZTJcdTRmZjBcdTRmZjJcdTRmZmNcdTRmZmRcdTRmZmZcdTUwMDBcdTUwMDFcdTUwMDRcdTUwMDdcdTUwMGFcdTUwMGNcdTUwMGVcdTUwMTBcdTUwMTNcdTUwMTdc''@;'; put 'put ''dTUwMThcdTUwMWJcdTUwMWNcdTUwMWRcdTUwMWVcdTUwMjJcdTUwMjdcdTUwMmVcdTUwMzBcdTUwMzJcdTUwMzNcdTUwMzVcdTUwNDBcdTUwNDFcdTUwNDJcdTUwNDVcdTUwNDZcdTUwNGFcdTUwNGNcdTUwNGVcdTUwNTFcdTUwNTJcdTUwNTNcdTUwNTdcdTUwNTlcdTUwNWZcdTUwNjBcdTUw''@;'; put 'put ''NjJcdTUwNjNcdTUwNjZcdTUwNjdcdTUwNmFcdTUwNmRcdTUwNzBcdTUwNzFcdTUwM2JcdTUwODFcdTUwODNcdTUwODRcdTUwODZcdTUwOGFcdTUwOGVcdTUwOGZcdTUwOTAiXSxbIjhmYjJhMSIsIlx1NTA5Mlx1NTA5M1x1NTA5NFx1NTA5Nlx1NTA5Ylx1NTA5Y1x1NTA5ZSIsNCwiXHU1MGFh''@;'; put 'put ''XHU1MGFmXHU1MGIwXHU1MGI5XHU1MGJhXHU1MGJkXHU1MGMwXHU1MGMzXHU1MGM0XHU1MGM3XHU1MGNjXHU1MGNlXHU1MGQwXHU1MGQzXHU1MGQ0XHU1MGQ4XHU1MGRjXHU1MGRkXHU1MGRmXHU1MGUyXHU1MGU0XHU1MGU2XHU1MGU4XHU1MGU5XHU1MGVmXHU1MGYxXHU1MGY2XHU1MGZhXHU1''@;'; put 'put ''MGZlXHU1MTAzXHU1MTA2XHU1MTA3XHU1MTA4XHU1MTBiXHU1MTBjXHU1MTBkXHU1MTBlXHU1MGYyXHU1MTEwXHU1MTE3XHU1MTE5XHU1MTFiXHU1MTFjXHU1MTFkXHU1MTFlXHU1MTIzXHU1MTI3XHU1MTI4XHU1MTJjXHU1MTJkXHU1MTJmXHU1MTMxXHU1MTMzXHU1MTM0XHU1MTM1XHU1MTM4''@;'; put 'put ''XHU1MTM5XHU1MTQyXHU1MTRhXHU1MTRmXHU1MTUzXHU1MTU1XHU1MTU3XHU1MTU4XHU1MTVmXHU1MTY0XHU1MTY2XHU1MTdlXHU1MTgzXHU1MTg0XHU1MThiXHU1MThlXHU1MTk4XHU1MTlkXHU1MWExXHU1MWEzXHU1MWFkXHU1MWI4XHU1MWJhXHU1MWJjXHU1MWJlXHU1MWJmXHU1MWMyIl0s''@;'; put 'put ''WyI4ZmIzYTEiLCJcdTUxYzhcdTUxY2ZcdTUxZDFcdTUxZDJcdTUxZDNcdTUxZDVcdTUxZDhcdTUxZGVcdTUxZTJcdTUxZTVcdTUxZWVcdTUxZjJcdTUxZjNcdTUxZjRcdTUxZjdcdTUyMDFcdTUyMDJcdTUyMDVcdTUyMTJcdTUyMTNcdTUyMTVcdTUyMTZcdTUyMThcdTUyMjJcdTUyMjhcdTUy''@;'; put 'put ''MzFcdTUyMzJcdTUyMzVcdTUyM2NcdTUyNDVcdTUyNDlcdTUyNTVcdTUyNTdcdTUyNThcdTUyNWFcdTUyNWNcdTUyNWZcdTUyNjBcdTUyNjFcdTUyNjZcdTUyNmVcdTUyNzdcdTUyNzhcdTUyNzlcdTUyODBcdTUyODJcdTUyODVcdTUyOGFcdTUyOGNcdTUyOTNcdTUyOTVcdTUyOTZcdTUyOTdc''@;'; put 'put ''dTUyOThcdTUyOWFcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdcdTUyYWZcdTUyYjBcdTUyYjZcdTUyYjdcdTUyYjhcdTUyYmFcdTUyYmJcdTUyYmRcdTUyYzBcdTUyYzRcdTUyYzZcdTUyYzhcdTUyY2NcdTUyY2ZcdTUyZDFcdTUyZDRcdTUyZDZcdTUyZGJcdTUyZGNcdTUyZTFcdTUy''@;'; put 'put ''ZTVcdTUyZThcdTUyZTlcdTUyZWFcdTUyZWNcdTUyZjBcdTUyZjFcdTUyZjRcdTUyZjZcdTUyZjdcdTUzMDBcdTUzMDNcdTUzMGFcdTUzMGIiXSxbIjhmYjRhMSIsIlx1NTMwY1x1NTMxMVx1NTMxM1x1NTMxOFx1NTMxYlx1NTMxY1x1NTMxZVx1NTMxZlx1NTMyNVx1NTMyN1x1NTMyOFx1NTMy''@;'; put 'put ''OVx1NTMyYlx1NTMyY1x1NTMyZFx1NTMzMFx1NTMzMlx1NTMzNVx1NTMzY1x1NTMzZFx1NTMzZVx1NTM0Mlx1NTM0Y1x1NTM0Ylx1NTM1OVx1NTM1Ylx1NTM2MVx1NTM2M1x1NTM2NVx1NTM2Y1x1NTM2ZFx1NTM3Mlx1NTM3OVx1NTM3ZVx1NTM4M1x1NTM4N1x1NTM4OFx1NTM4ZVx1NTM5M1x1''@;'; put 'put ''NTM5NFx1NTM5OVx1NTM5ZFx1NTNhMVx1NTNhNFx1NTNhYVx1NTNhYlx1NTNhZlx1NTNiMlx1NTNiNFx1NTNiNVx1NTNiN1x1NTNiOFx1NTNiYVx1NTNiZFx1NTNjMFx1NTNjNVx1NTNjZlx1NTNkMlx1NTNkM1x1NTNkNVx1NTNkYVx1NTNkZFx1NTNkZVx1NTNlMFx1NTNlNlx1NTNlN1x1NTNm''@;'; put 'put ''NVx1NTQwMlx1NTQxM1x1NTQxYVx1NTQyMVx1NTQyN1x1NTQyOFx1NTQyYVx1NTQyZlx1NTQzMVx1NTQzNFx1NTQzNVx1NTQ0M1x1NTQ0NFx1NTQ0N1x1NTQ0ZFx1NTQ0Zlx1NTQ1ZVx1NTQ2Mlx1NTQ2NFx1NTQ2Nlx1NTQ2N1x1NTQ2OVx1NTQ2Ylx1NTQ2ZFx1NTQ2ZVx1NTQ3NFx1NTQ3ZiJd''@;'; put 'put ''LFsiOGZiNWExIiwiXHU1NDgxXHU1NDgzXHU1NDg1XHU1NDg4XHU1NDg5XHU1NDhkXHU1NDkxXHU1NDk1XHU1NDk2XHU1NDljXHU1NDlmXHU1NGExXHU1NGE2XHU1NGE3XHU1NGE5XHU1NGFhXHU1NGFkXHU1NGFlXHU1NGIxXHU1NGI3XHU1NGI5XHU1NGJhXHU1NGJiXHU1NGJmXHU1NGM2XHU1''@;'; put 'put ''NGNhXHU1NGNkXHU1NGNlXHU1NGUwXHU1NGVhXHU1NGVjXHU1NGVmXHU1NGY2XHU1NGZjXHU1NGZlXHU1NGZmXHU1NTAwXHU1NTAxXHU1NTA1XHU1NTA4XHU1NTA5XHU1NTBjXHU1NTBkXHU1NTBlXHU1NTE1XHU1NTJhXHU1NTJiXHU1NTMyXHU1NTM1XHU1NTM2XHU1NTNiXHU1NTNjXHU1NTNk''@;'; put 'put ''XHU1NTQxXHU1NTQ3XHU1NTQ5XHU1NTRhXHU1NTRkXHU1NTUwXHU1NTUxXHU1NTU4XHU1NTVhXHU1NTViXHU1NTVlXHU1NTYwXHU1NTYxXHU1NTY0XHU1NTY2XHU1NTdmXHU1NTgxXHU1NTgyXHU1NTg2XHU1NTg4XHU1NThlXHU1NThmXHU1NTkxXHU1NTkyXHU1NTkzXHU1NTk0XHU1NTk3XHU1''@;'; put 'put ''NWEzXHU1NWE0XHU1NWFkXHU1NWIyXHU1NWJmXHU1NWMxXHU1NWMzXHU1NWM2XHU1NWM5XHU1NWNiXHU1NWNjXHU1NWNlXHU1NWQxXHU1NWQyIl0sWyI4ZmI2YTEiLCJcdTU1ZDNcdTU1ZDdcdTU1ZDhcdTU1ZGJcdTU1ZGVcdTU1ZTJcdTU1ZTlcdTU1ZjZcdTU1ZmZcdTU2MDVcdTU2MDhcdTU2''@;'; put 'put ''MGFcdTU2MGQiLDUsIlx1NTYxOVx1NTYyY1x1NTYzMFx1NTYzM1x1NTYzNVx1NTYzN1x1NTYzOVx1NTYzYlx1NTYzY1x1NTYzZFx1NTYzZlx1NTY0MFx1NTY0MVx1NTY0M1x1NTY0NFx1NTY0Nlx1NTY0OVx1NTY0Ylx1NTY0ZFx1NTY0Zlx1NTY1NFx1NTY1ZVx1NTY2MFx1NTY2MVx1NTY2Mlx1''@;'; put 'put ''NTY2M1x1NTY2Nlx1NTY2OVx1NTY2ZFx1NTY2Zlx1NTY3MVx1NTY3Mlx1NTY3NVx1NTY4NFx1NTY4NVx1NTY4OFx1NTY4Ylx1NTY4Y1x1NTY5NVx1NTY5OVx1NTY5YVx1NTY5ZFx1NTY5ZVx1NTY5Zlx1NTZhNlx1NTZhN1x1NTZhOFx1NTZhOVx1NTZhYlx1NTZhY1x1NTZhZFx1NTZiMVx1NTZi''@;'; put 'put ''M1x1NTZiN1x1NTZiZVx1NTZjNVx1NTZjOVx1NTZjYVx1NTZjYlx1NTZjZlx1NTZkMFx1NTZjY1x1NTZjZFx1NTZkOVx1NTZkY1x1NTZkZFx1NTZkZlx1NTZlMVx1NTZlNCIsNCwiXHU1NmYxXHU1NmViXHU1NmVkIl0sWyI4ZmI3YTEiLCJcdTU2ZjZcdTU2ZjdcdTU3MDFcdTU3MDJcdTU3MDdc''@;'; put 'put ''dTU3MGFcdTU3MGNcdTU3MTFcdTU3MTVcdTU3MWFcdTU3MWJcdTU3MWRcdTU3MjBcdTU3MjJcdTU3MjNcdTU3MjRcdTU3MjVcdTU3MjlcdTU3MmFcdTU3MmNcdTU3MmVcdTU3MmZcdTU3MzNcdTU3MzRcdTU3M2RcdTU3M2VcdTU3M2ZcdTU3NDVcdTU3NDZcdTU3NGNcdTU3NGRcdTU3NTJcdTU3''@;'; put 'put ''NjJcdTU3NjVcdTU3NjdcdTU3NjhcdTU3NmJcdTU3NmQiLDQsIlx1NTc3M1x1NTc3NFx1NTc3NVx1NTc3N1x1NTc3OVx1NTc3YVx1NTc3Ylx1NTc3Y1x1NTc3ZVx1NTc4MVx1NTc4M1x1NTc4Y1x1NTc5NFx1NTc5N1x1NTc5OVx1NTc5YVx1NTc5Y1x1NTc5ZFx1NTc5ZVx1NTc5Zlx1NTdhMVx1''@;'; put 'put ''NTc5NVx1NTdhN1x1NTdhOFx1NTdhOVx1NTdhY1x1NTdiOFx1NTdiZFx1NTdjN1x1NTdjOFx1NTdjY1x1NTdjZlx1NTdkNVx1NTdkZFx1NTdkZVx1NTdlNFx1NTdlNlx1NTdlN1x1NTdlOVx1NTdlZFx1NTdmMFx1NTdmNVx1NTdmNlx1NTdmOFx1NTdmZFx1NTdmZVx1NTdmZlx1NTgwM1x1NTgw''@;'; put 'put ''NFx1NTgwOFx1NTgwOVx1NTdlMSJdLFsiOGZiOGExIiwiXHU1ODBjXHU1ODBkXHU1ODFiXHU1ODFlXHU1ODFmXHU1ODIwXHU1ODI2XHU1ODI3XHU1ODJkXHU1ODMyXHU1ODM5XHU1ODNmXHU1ODQ5XHU1ODRjXHU1ODRkXHU1ODRmXHU1ODUwXHU1ODU1XHU1ODVmXHU1ODYxXHU1ODY0XHU1ODY3''@;'; put 'put ''XHU1ODY4XHU1ODc4XHU1ODdjXHU1ODdmXHU1ODgwXHU1ODgxXHU1ODg3XHU1ODg4XHU1ODg5XHU1ODhhXHU1ODhjXHU1ODhkXHU1ODhmXHU1ODkwXHU1ODk0XHU1ODk2XHU1ODlkXHU1OGEwXHU1OGExXHU1OGEyXHU1OGE2XHU1OGE5XHU1OGIxXHU1OGIyXHU1OGM0XHU1OGJjXHU1OGMyXHU1''@;'; put 'put ''OGM4XHU1OGNkXHU1OGNlXHU1OGQwXHU1OGQyXHU1OGQ0XHU1OGQ2XHU1OGRhXHU1OGRkXHU1OGUxXHU1OGUyXHU1OGU5XHU1OGYzXHU1OTA1XHU1OTA2XHU1OTBiXHU1OTBjXHU1OTEyXHU1OTEzXHU1OTE0XHU4NjQxXHU1OTFkXHU1OTIxXHU1OTIzXHU1OTI0XHU1OTI4XHU1OTJmXHU1OTMw''@;'; put 'put ''XHU1OTMzXHU1OTM1XHU1OTM2XHU1OTNmXHU1OTQzXHU1OTQ2XHU1OTUyXHU1OTUzXHU1OTU5XHU1OTViXHU1OTVkXHU1OTVlXHU1OTVmXHU1OTYxXHU1OTYzXHU1OTZiXHU1OTZkIl0sWyI4ZmI5YTEiLCJcdTU5NmZcdTU5NzJcdTU5NzVcdTU5NzZcdTU5NzlcdTU5N2JcdTU5N2NcdTU5OGJc''@;'; put 'put ''dTU5OGNcdTU5OGVcdTU5OTJcdTU5OTVcdTU5OTdcdTU5OWZcdTU5YTRcdTU5YTdcdTU5YWRcdTU5YWVcdTU5YWZcdTU5YjBcdTU5YjNcdTU5YjdcdTU5YmFcdTU5YmNcdTU5YzFcdTU5YzNcdTU5YzRcdTU5YzhcdTU5Y2FcdTU5Y2RcdTU5ZDJcdTU5ZGRcdTU5ZGVcdTU5ZGZcdTU5ZTNcdTU5''@;'; put 'put ''ZTRcdTU5ZTdcdTU5ZWVcdTU5ZWZcdTU5ZjFcdTU5ZjJcdTU5ZjRcdTU5ZjdcdTVhMDBcdTVhMDRcdTVhMGNcdTVhMGRcdTVhMGVcdTVhMTJcdTVhMTNcdTVhMWVcdTVhMjNcdTVhMjRcdTVhMjdcdTVhMjhcdTVhMmFcdTVhMmRcdTVhMzBcdTVhNDRcdTVhNDVcdTVhNDdcdTVhNDhcdTVhNGNc''@;'; put 'put ''dTVhNTBcdTVhNTVcdTVhNWVcdTVhNjNcdTVhNjVcdTVhNjdcdTVhNmRcdTVhNzdcdTVhN2FcdTVhN2JcdTVhN2VcdTVhOGJcdTVhOTBcdTVhOTNcdTVhOTZcdTVhOTlcdTVhOWNcdTVhOWVcdTVhOWZcdTVhYTBcdTVhYTJcdTVhYTdcdTVhYWNcdTVhYjFcdTVhYjJcdTVhYjNcdTVhYjVcdTVh''@;'; put 'put ''YjhcdTVhYmFcdTVhYmJcdTVhYmYiXSxbIjhmYmFhMSIsIlx1NWFjNFx1NWFjNlx1NWFjOFx1NWFjZlx1NWFkYVx1NWFkY1x1NWFlMFx1NWFlNVx1NWFlYVx1NWFlZVx1NWFmNVx1NWFmNlx1NWFmZFx1NWIwMFx1NWIwMVx1NWIwOFx1NWIxN1x1NWIzNFx1NWIxOVx1NWIxYlx1NWIxZFx1NWIy''@;'; put 'put ''MVx1NWIyNVx1NWIyZFx1NWIzOFx1NWI0MVx1NWI0Ylx1NWI0Y1x1NWI1Mlx1NWI1Nlx1NWI1ZVx1NWI2OFx1NWI2ZVx1NWI2Zlx1NWI3Y1x1NWI3ZFx1NWI3ZVx1NWI3Zlx1NWI4MVx1NWI4NFx1NWI4Nlx1NWI4YVx1NWI4ZVx1NWI5MFx1NWI5MVx1NWI5M1x1NWI5NFx1NWI5Nlx1NWJhOFx1''@;'; put 'put ''NWJhOVx1NWJhY1x1NWJhZFx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1NWJiYVx1NWJiY1x1NWJjMFx1NWJjMVx1NWJjZFx1NWJjZlx1NWJkNiIsNCwiXHU1YmUwXHU1YmVmXHU1YmYxXHU1YmY0XHU1YmZkXHU1YzBjXHU1YzE3XHU1YzFlXHU1YzFmXHU1YzIzXHU1YzI2XHU1YzI5XHU1YzJi''@;'; put 'put ''XHU1YzJjXHU1YzJlXHU1YzMwXHU1YzMyXHU1YzM1XHU1YzM2XHU1YzU5XHU1YzVhXHU1YzVjXHU1YzYyXHU1YzYzXHU1YzY3XHU1YzY4XHU1YzY5Il0sWyI4ZmJiYTEiLCJcdTVjNmRcdTVjNzBcdTVjNzRcdTVjNzVcdTVjN2FcdTVjN2JcdTVjN2NcdTVjN2RcdTVjODdcdTVjODhcdTVjOGFc''@;'; put 'put ''dTVjOGZcdTVjOTJcdTVjOWRcdTVjOWZcdTVjYTBcdTVjYTJcdTVjYTNcdTVjYTZcdTVjYWFcdTVjYjJcdTVjYjRcdTVjYjVcdTVjYmFcdTVjYzlcdTVjY2JcdTVjZDJcdTVjZGRcdTVjZDdcdTVjZWVcdTVjZjFcdTVjZjJcdTVjZjRcdTVkMDFcdTVkMDZcdTVkMGRcdTVkMTJcdTVkMmJcdTVk''@;'; put 'put ''MjNcdTVkMjRcdTVkMjZcdTVkMjdcdTVkMzFcdTVkMzRcdTVkMzlcdTVkM2RcdTVkM2ZcdTVkNDJcdTVkNDNcdTVkNDZcdTVkNDhcdTVkNTVcdTVkNTFcdTVkNTlcdTVkNGFcdTVkNWZcdTVkNjBcdTVkNjFcdTVkNjJcdTVkNjRcdTVkNmFcdTVkNmRcdTVkNzBcdTVkNzlcdTVkN2FcdTVkN2Vc''@;'; put 'put ''dTVkN2ZcdTVkODFcdTVkODNcdTVkODhcdTVkOGFcdTVkOTJcdTVkOTNcdTVkOTRcdTVkOTVcdTVkOTlcdTVkOWJcdTVkOWZcdTVkYTBcdTVkYTdcdTVkYWJcdTVkYjBcdTVkYjRcdTVkYjhcdTVkYjlcdTVkYzNcdTVkYzdcdTVkY2JcdTVkZDBcdTVkY2VcdTVkZDhcdTVkZDlcdTVkZTBcdTVk''@;'; put 'put ''ZTQiXSxbIjhmYmNhMSIsIlx1NWRlOVx1NWRmOFx1NWRmOVx1NWUwMFx1NWUwN1x1NWUwZFx1NWUxMlx1NWUxNFx1NWUxNVx1NWUxOFx1NWUxZlx1NWUyMFx1NWUyZVx1NWUyOFx1NWUzMlx1NWUzNVx1NWUzZVx1NWU0Ylx1NWU1MFx1NWU0OVx1NWU1MVx1NWU1Nlx1NWU1OFx1NWU1Ylx1NWU1''@;'; put 'put ''Y1x1NWU1ZVx1NWU2OFx1NWU2YSIsNCwiXHU1ZTcwXHU1ZTgwXHU1ZThiXHU1ZThlXHU1ZWEyXHU1ZWE0XHU1ZWE1XHU1ZWE4XHU1ZWFhXHU1ZWFjXHU1ZWIxXHU1ZWIzXHU1ZWJkXHU1ZWJlXHU1ZWJmXHU1ZWM2XHU1ZWNjXHU1ZWNiXHU1ZWNlXHU1ZWQxXHU1ZWQyXHU1ZWQ0XHU1ZWQ1XHU1''@;'; put 'put ''ZWRjXHU1ZWRlXHU1ZWU1XHU1ZWViXHU1ZjAyXHU1ZjA2XHU1ZjA3XHU1ZjA4XHU1ZjBlXHU1ZjE5XHU1ZjFjXHU1ZjFkXHU1ZjIxXHU1ZjIyXHU1ZjIzXHU1ZjI0XHU1ZjI4XHU1ZjJiXHU1ZjJjXHU1ZjJlXHU1ZjMwXHU1ZjM0XHU1ZjM2XHU1ZjNiXHU1ZjNkXHU1ZjNmXHU1ZjQwXHU1ZjQ0''@;'; put 'put ''XHU1ZjQ1XHU1ZjQ3XHU1ZjRkXHU1ZjUwXHU1ZjU0XHU1ZjU4XHU1ZjViXHU1ZjYwXHU1ZjYzXHU1ZjY0XHU1ZjY3Il0sWyI4ZmJkYTEiLCJcdTVmNmZcdTVmNzJcdTVmNzRcdTVmNzVcdTVmNzhcdTVmN2FcdTVmN2RcdTVmN2VcdTVmODlcdTVmOGRcdTVmOGZcdTVmOTZcdTVmOWNcdTVmOWRc''@;'; put 'put ''dTVmYTJcdTVmYTdcdTVmYWJcdTVmYTRcdTVmYWNcdTVmYWZcdTVmYjBcdTVmYjFcdTVmYjhcdTVmYzRcdTVmYzdcdTVmYzhcdTVmYzlcdTVmY2JcdTVmZDAiLDQsIlx1NWZkZVx1NWZlMVx1NWZlMlx1NWZlOFx1NWZlOVx1NWZlYVx1NWZlY1x1NWZlZFx1NWZlZVx1NWZlZlx1NWZmMlx1NWZm''@;'; put 'put ''M1x1NWZmNlx1NWZmYVx1NWZmY1x1NjAwN1x1NjAwYVx1NjAwZFx1NjAxM1x1NjAxNFx1NjAxN1x1NjAxOFx1NjAxYVx1NjAxZlx1NjAyNFx1NjAyZFx1NjAzM1x1NjAzNVx1NjA0MFx1NjA0N1x1NjA0OFx1NjA0OVx1NjA0Y1x1NjA1MVx1NjA1NFx1NjA1Nlx1NjA1N1x1NjA1ZFx1NjA2MVx1''@;'; put 'put ''NjA2N1x1NjA3MVx1NjA3ZVx1NjA3Zlx1NjA4Mlx1NjA4Nlx1NjA4OFx1NjA4YVx1NjA4ZVx1NjA5MVx1NjA5M1x1NjA5NVx1NjA5OFx1NjA5ZFx1NjA5ZVx1NjBhMlx1NjBhNFx1NjBhNVx1NjBhOFx1NjBiMFx1NjBiMVx1NjBiNyJdLFsiOGZiZWExIiwiXHU2MGJiXHU2MGJlXHU2MGMyXHU2''@;'; put 'put ''MGM0XHU2MGM4XHU2MGM5XHU2MGNhXHU2MGNiXHU2MGNlXHU2MGNmXHU2MGQ0XHU2MGQ1XHU2MGQ5XHU2MGRiXHU2MGRkXHU2MGRlXHU2MGUyXHU2MGU1XHU2MGYyXHU2MGY1XHU2MGY4XHU2MGZjXHU2MGZkXHU2MTAyXHU2MTA3XHU2MTBhXHU2MTBjXHU2MTEwIiw0LCJcdTYxMTZcdTYxMTdc''@;'; put 'put ''dTYxMTlcdTYxMWNcdTYxMWVcdTYxMjJcdTYxMmFcdTYxMmJcdTYxMzBcdTYxMzFcdTYxMzVcdTYxMzZcdTYxMzdcdTYxMzlcdTYxNDFcdTYxNDVcdTYxNDZcdTYxNDlcdTYxNWVcdTYxNjBcdTYxNmNcdTYxNzJcdTYxNzhcdTYxN2JcdTYxN2NcdTYxN2ZcdTYxODBcdTYxODFcdTYxODNcdTYx''@;'; put 'put ''ODRcdTYxOGJcdTYxOGRcdTYxOTJcdTYxOTNcdTYxOTdcdTYxOThcdTYxOWNcdTYxOWRcdTYxOWZcdTYxYTBcdTYxYTVcdTYxYThcdTYxYWFcdTYxYWRcdTYxYjhcdTYxYjlcdTYxYmNcdTYxYzBcdTYxYzFcdTYxYzJcdTYxY2VcdTYxY2ZcdTYxZDVcdTYxZGNcdTYxZGRcdTYxZGVcdTYxZGZc''@;'; put 'put ''dTYxZTFcdTYxZTJcdTYxZTdcdTYxZTlcdTYxZTUiXSxbIjhmYmZhMSIsIlx1NjFlY1x1NjFlZFx1NjFlZlx1NjIwMVx1NjIwM1x1NjIwNFx1NjIwN1x1NjIxM1x1NjIxNVx1NjIxY1x1NjIyMFx1NjIyMlx1NjIyM1x1NjIyN1x1NjIyOVx1NjIyYlx1NjIzOVx1NjIzZFx1NjI0Mlx1NjI0M1x1''@;'; put 'put ''NjI0NFx1NjI0Nlx1NjI0Y1x1NjI1MFx1NjI1MVx1NjI1Mlx1NjI1NFx1NjI1Nlx1NjI1YVx1NjI1Y1x1NjI2NFx1NjI2ZFx1NjI2Zlx1NjI3M1x1NjI3YVx1NjI3ZFx1NjI4ZFx1NjI4ZVx1NjI4Zlx1NjI5MFx1NjJhNlx1NjJhOFx1NjJiM1x1NjJiNlx1NjJiN1x1NjJiYVx1NjJiZVx1NjJi''@;'; put 'put ''Zlx1NjJjNFx1NjJjZVx1NjJkNVx1NjJkNlx1NjJkYVx1NjJlYVx1NjJmMlx1NjJmNFx1NjJmY1x1NjJmZFx1NjMwM1x1NjMwNFx1NjMwYVx1NjMwYlx1NjMwZFx1NjMxMFx1NjMxM1x1NjMxNlx1NjMxOFx1NjMyOVx1NjMyYVx1NjMyZFx1NjMzNVx1NjMzNlx1NjMzOVx1NjMzY1x1NjM0MVx1''@;'; put 'put ''NjM0Mlx1NjM0M1x1NjM0NFx1NjM0Nlx1NjM0YVx1NjM0Ylx1NjM0ZVx1NjM1Mlx1NjM1M1x1NjM1NFx1NjM1OFx1NjM1Ylx1NjM2NVx1NjM2Nlx1NjM2Y1x1NjM2ZFx1NjM3MVx1NjM3NFx1NjM3NSJdLFsiOGZjMGExIiwiXHU2Mzc4XHU2MzdjXHU2MzdkXHU2MzdmXHU2MzgyXHU2Mzg0XHU2''@;'; put 'put ''Mzg3XHU2MzhhXHU2MzkwXHU2Mzk0XHU2Mzk1XHU2Mzk5XHU2MzlhXHU2MzllXHU2M2E0XHU2M2E2XHU2M2FkXHU2M2FlXHU2M2FmXHU2M2JkXHU2M2MxXHU2M2M1XHU2M2M4XHU2M2NlXHU2M2QxXHU2M2QzXHU2M2Q0XHU2M2Q1XHU2M2RjXHU2M2UwXHU2M2U1XHU2M2VhXHU2M2VjXHU2M2Yy''@;'; put 'put ''XHU2M2YzXHU2M2Y1XHU2M2Y4XHU2M2Y5XHU2NDA5XHU2NDBhXHU2NDEwXHU2NDEyXHU2NDE0XHU2NDE4XHU2NDFlXHU2NDIwXHU2NDIyXHU2NDI0XHU2NDI1XHU2NDI5XHU2NDJhXHU2NDJmXHU2NDMwXHU2NDM1XHU2NDNkXHU2NDNmXHU2NDRiXHU2NDRmXHU2NDUxXHU2NDUyXHU2NDUzXHU2''@;'; put 'put ''NDU0XHU2NDVhXHU2NDViXHU2NDVjXHU2NDVkXHU2NDVmXHU2NDYwXHU2NDYxXHU2NDYzXHU2NDZkXHU2NDczXHU2NDc0XHU2NDdiXHU2NDdkXHU2NDg1XHU2NDg3XHU2NDhmXHU2NDkwXHU2NDkxXHU2NDk4XHU2NDk5XHU2NDliXHU2NDlkXHU2NDlmXHU2NGExXHU2NGEzXHU2NGE2XHU2NGE4''@;'; put 'put ''XHU2NGFjXHU2NGIzXHU2NGJkXHU2NGJlXHU2NGJmIl0sWyI4ZmMxYTEiLCJcdTY0YzRcdTY0YzlcdTY0Y2FcdTY0Y2JcdTY0Y2NcdTY0Y2VcdTY0ZDBcdTY0ZDFcdTY0ZDVcdTY0ZDdcdTY0ZTRcdTY0ZTVcdTY0ZTlcdTY0ZWFcdTY0ZWRcdTY0ZjBcdTY0ZjVcdTY0ZjdcdTY0ZmJcdTY0ZmZc''@;'; put 'put ''dTY1MDFcdTY1MDRcdTY1MDhcdTY1MDlcdTY1MGFcdTY1MGZcdTY1MTNcdTY1MTRcdTY1MTZcdTY1MTlcdTY1MWJcdTY1MWVcdTY1MWZcdTY1MjJcdTY1MjZcdTY1MjlcdTY1MmVcdTY1MzFcdTY1M2FcdTY1M2NcdTY1M2RcdTY1NDNcdTY1NDdcdTY1NDlcdTY1NTBcdTY1NTJcdTY1NTRcdTY1''@;'; put 'put ''NWZcdTY1NjBcdTY1NjdcdTY1NmJcdTY1N2FcdTY1N2RcdTY1ODFcdTY1ODVcdTY1OGFcdTY1OTJcdTY1OTVcdTY1OThcdTY1OWRcdTY1YTBcdTY1YTNcdTY1YTZcdTY1YWVcdTY1YjJcdTY1YjNcdTY1YjRcdTY1YmZcdTY1YzJcdTY1YzhcdTY1YzlcdTY1Y2VcdTY1ZDBcdTY1ZDRcdTY1ZDZc''@;'; put 'put ''dTY1ZDhcdTY1ZGZcdTY1ZjBcdTY1ZjJcdTY1ZjRcdTY1ZjVcdTY1ZjlcdTY1ZmVcdTY1ZmZcdTY2MDBcdTY2MDRcdTY2MDhcdTY2MDlcdTY2MGRcdTY2MTFcdTY2MTJcdTY2MTVcdTY2MTZcdTY2MWQiXSxbIjhmYzJhMSIsIlx1NjYxZVx1NjYyMVx1NjYyMlx1NjYyM1x1NjYyNFx1NjYyNlx1''@;'; put 'put ''NjYyOVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMVx1NjYzM1x1NjYzOVx1NjYzN1x1NjY0MFx1NjY0NVx1NjY0Nlx1NjY0YVx1NjY0Y1x1NjY1MVx1NjY0ZVx1NjY1N1x1NjY1OFx1NjY1OVx1NjY1Ylx1NjY1Y1x1NjY2MFx1NjY2MVx1NjZmYlx1NjY2YVx1NjY2Ylx1NjY2''@;'; put 'put ''Y1x1NjY3ZVx1NjY3M1x1NjY3NVx1NjY3Zlx1NjY3N1x1NjY3OFx1NjY3OVx1NjY3Ylx1NjY4MFx1NjY3Y1x1NjY4Ylx1NjY4Y1x1NjY4ZFx1NjY5MFx1NjY5Mlx1NjY5OVx1NjY5YVx1NjY5Ylx1NjY5Y1x1NjY5Zlx1NjZhMFx1NjZhNFx1NjZhZFx1NjZiMVx1NjZiMlx1NjZiNVx1NjZiYlx1''@;'; put 'put ''NjZiZlx1NjZjMFx1NjZjMlx1NjZjM1x1NjZjOFx1NjZjY1x1NjZjZVx1NjZjZlx1NjZkNFx1NjZkYlx1NjZkZlx1NjZlOFx1NjZlYlx1NjZlY1x1NjZlZVx1NjZmYVx1NjcwNVx1NjcwN1x1NjcwZVx1NjcxM1x1NjcxOVx1NjcxY1x1NjcyMFx1NjcyMlx1NjczM1x1NjczZVx1Njc0NVx1Njc0''@;'; put 'put ''N1x1Njc0OFx1Njc0Y1x1Njc1NFx1Njc1NVx1Njc1ZCJdLFsiOGZjM2ExIiwiXHU2NzY2XHU2NzZjXHU2NzZlXHU2Nzc0XHU2Nzc2XHU2NzdiXHU2NzgxXHU2Nzg0XHU2NzhlXHU2NzhmXHU2NzkxXHU2NzkzXHU2Nzk2XHU2Nzk4XHU2Nzk5XHU2NzliXHU2N2IwXHU2N2IxXHU2N2IyXHU2N2I1''@;'; put 'put ''XHU2N2JiXHU2N2JjXHU2N2JkXHU2N2Y5XHU2N2MwXHU2N2MyXHU2N2MzXHU2N2M1XHU2N2M4XHU2N2M5XHU2N2QyXHU2N2Q3XHU2N2Q5XHU2N2RjXHU2N2UxXHU2N2U2XHU2N2YwXHU2N2YyXHU2N2Y2XHU2N2Y3XHU2ODUyXHU2ODE0XHU2ODE5XHU2ODFkXHU2ODFmXHU2ODI4XHU2ODI3XHU2''@;'; put 'put ''ODJjXHU2ODJkXHU2ODJmXHU2ODMwXHU2ODMxXHU2ODMzXHU2ODNiXHU2ODNmXHU2ODQ0XHU2ODQ1XHU2ODRhXHU2ODRjXHU2ODU1XHU2ODU3XHU2ODU4XHU2ODViXHU2ODZiXHU2ODZlIiw0LCJcdTY4NzVcdTY4NzlcdTY4N2FcdTY4N2JcdTY4N2NcdTY4ODJcdTY4ODRcdTY4ODZcdTY4ODhc''@;'; put 'put ''dTY4OTZcdTY4OThcdTY4OWFcdTY4OWNcdTY4YTFcdTY4YTNcdTY4YTVcdTY4YTlcdTY4YWFcdTY4YWVcdTY4YjJcdTY4YmJcdTY4YzVcdTY4YzhcdTY4Y2NcdTY4Y2YiXSxbIjhmYzRhMSIsIlx1NjhkMFx1NjhkMVx1NjhkM1x1NjhkNlx1NjhkOVx1NjhkY1x1NjhkZFx1NjhlNVx1NjhlOFx1''@;'; put 'put ''NjhlYVx1NjhlYlx1NjhlY1x1NjhlZFx1NjhmMFx1NjhmMVx1NjhmNVx1NjhmNlx1NjhmYlx1NjhmY1x1NjhmZFx1NjkwNlx1NjkwOVx1NjkwYVx1NjkxMFx1NjkxMVx1NjkxM1x1NjkxNlx1NjkxN1x1NjkzMVx1NjkzM1x1NjkzNVx1NjkzOFx1NjkzYlx1Njk0Mlx1Njk0NVx1Njk0OVx1Njk0''@;'; put 'put ''ZVx1Njk1N1x1Njk1Ylx1Njk2M1x1Njk2NFx1Njk2NVx1Njk2Nlx1Njk2OFx1Njk2OVx1Njk2Y1x1Njk3MFx1Njk3MVx1Njk3Mlx1Njk3YVx1Njk3Ylx1Njk3Zlx1Njk4MFx1Njk4ZFx1Njk5Mlx1Njk5Nlx1Njk5OFx1NjlhMVx1NjlhNVx1NjlhNlx1NjlhOFx1NjlhYlx1NjlhZFx1NjlhZlx1''@;'; put 'put ''NjliN1x1NjliOFx1NjliYVx1NjliY1x1NjljNVx1NjljOFx1NjlkMVx1NjlkNlx1NjlkN1x1NjllMlx1NjllNVx1NjllZVx1NjllZlx1NjlmMVx1NjlmM1x1NjlmNVx1NjlmZVx1NmEwMFx1NmEwMVx1NmEwM1x1NmEwZlx1NmExMVx1NmExNVx1NmExYVx1NmExZFx1NmEyMFx1NmEyNFx1NmEy''@;'; put 'put ''OFx1NmEzMFx1NmEzMiJdLFsiOGZjNWExIiwiXHU2YTM0XHU2YTM3XHU2YTNiXHU2YTNlXHU2YTNmXHU2YTQ1XHU2YTQ2XHU2YTQ5XHU2YTRhXHU2YTRlXHU2YTUwXHU2YTUxXHU2YTUyXHU2YTU1XHU2YTU2XHU2YTViXHU2YTY0XHU2YTY3XHU2YTZhXHU2YTcxXHU2YTczXHU2YTdlXHU2YTgx''@;'; put 'put ''XHU2YTgzXHU2YTg2XHU2YTg3XHU2YTg5XHU2YThiXHU2YTkxXHU2YTliXHU2YTlkXHU2YTllXHU2YTlmXHU2YWE1XHU2YWFiXHU2YWFmXHU2YWIwXHU2YWIxXHU2YWI0XHU2YWJkXHU2YWJlXHU2YWJmXHU2YWM2XHU2YWM5XHU2YWM4XHU2YWNjXHU2YWQwXHU2YWQ0XHU2YWQ1XHU2YWQ2XHU2''@;'; put 'put ''YWRjXHU2YWRkXHU2YWU0XHU2YWU3XHU2YWVjXHU2YWYwXHU2YWYxXHU2YWYyXHU2YWZjXHU2YWZkXHU2YjAyXHU2YjAzXHU2YjA2XHU2YjA3XHU2YjA5XHU2YjBmXHU2YjEwXHU2YjExXHU2YjE3XHU2YjFiXHU2YjFlXHU2YjI0XHU2YjI4XHU2YjJiXHU2YjJjXHU2YjJmXHU2YjM1XHU2YjM2''@;'; put 'put ''XHU2YjNiXHU2YjNmXHU2YjQ2XHU2YjRhXHU2YjRkXHU2YjUyXHU2YjU2XHU2YjU4XHU2YjVkXHU2YjYwXHU2YjY3XHU2YjZiXHU2YjZlXHU2YjcwXHU2Yjc1XHU2YjdkIl0sWyI4ZmM2YTEiLCJcdTZiN2VcdTZiODJcdTZiODVcdTZiOTdcdTZiOWJcdTZiOWZcdTZiYTBcdTZiYTJcdTZiYTNc''@;'; put 'put ''dTZiYThcdTZiYTlcdTZiYWNcdTZiYWRcdTZiYWVcdTZiYjBcdTZiYjhcdTZiYjlcdTZiYmRcdTZiYmVcdTZiYzNcdTZiYzRcdTZiYzlcdTZiY2NcdTZiZDZcdTZiZGFcdTZiZTFcdTZiZTNcdTZiZTZcdTZiZTdcdTZiZWVcdTZiZjFcdTZiZjdcdTZiZjlcdTZiZmZcdTZjMDJcdTZjMDRcdTZj''@;'; put 'put ''MDVcdTZjMDlcdTZjMGRcdTZjMGVcdTZjMTBcdTZjMTJcdTZjMTlcdTZjMWZcdTZjMjZcdTZjMjdcdTZjMjhcdTZjMmNcdTZjMmVcdTZjMzNcdTZjMzVcdTZjMzZcdTZjM2FcdTZjM2JcdTZjM2ZcdTZjNGFcdTZjNGJcdTZjNGRcdTZjNGZcdTZjNTJcdTZjNTRcdTZjNTlcdTZjNWJcdTZjNWNc''@;'; put 'put ''dTZjNmJcdTZjNmRcdTZjNmZcdTZjNzRcdTZjNzZcdTZjNzhcdTZjNzlcdTZjN2JcdTZjODVcdTZjODZcdTZjODdcdTZjODlcdTZjOTRcdTZjOTVcdTZjOTdcdTZjOThcdTZjOWNcdTZjOWZcdTZjYjBcdTZjYjJcdTZjYjRcdTZjYzJcdTZjYzZcdTZjY2RcdTZjY2ZcdTZjZDBcdTZjZDFcdTZj''@;'; put 'put ''ZDJcdTZjZDRcdTZjZDYiXSxbIjhmYzdhMSIsIlx1NmNkYVx1NmNkY1x1NmNlMFx1NmNlN1x1NmNlOVx1NmNlYlx1NmNlY1x1NmNlZVx1NmNmMlx1NmNmNFx1NmQwNFx1NmQwN1x1NmQwYVx1NmQwZVx1NmQwZlx1NmQxMVx1NmQxM1x1NmQxYVx1NmQyNlx1NmQyN1x1NmQyOFx1NmM2N1x1NmQy''@;'; put 'put ''ZVx1NmQyZlx1NmQzMVx1NmQzOVx1NmQzY1x1NmQzZlx1NmQ1N1x1NmQ1ZVx1NmQ1Zlx1NmQ2MVx1NmQ2NVx1NmQ2N1x1NmQ2Zlx1NmQ3MFx1NmQ3Y1x1NmQ4Mlx1NmQ4N1x1NmQ5MVx1NmQ5Mlx1NmQ5NFx1NmQ5Nlx1NmQ5N1x1NmQ5OFx1NmRhYVx1NmRhY1x1NmRiNFx1NmRiN1x1NmRiOVx1''@;'; put 'put ''NmRiZFx1NmRiZlx1NmRjNFx1NmRjOFx1NmRjYVx1NmRjZVx1NmRjZlx1NmRkNlx1NmRkYlx1NmRkZFx1NmRkZlx1NmRlMFx1NmRlMlx1NmRlNVx1NmRlOVx1NmRlZlx1NmRmMFx1NmRmNFx1NmRmNlx1NmRmY1x1NmUwMFx1NmUwNFx1NmUxZVx1NmUyMlx1NmUyN1x1NmUzMlx1NmUzNlx1NmUz''@;'; put 'put ''OVx1NmUzYlx1NmUzY1x1NmU0NFx1NmU0NVx1NmU0OFx1NmU0OVx1NmU0Ylx1NmU0Zlx1NmU1MVx1NmU1Mlx1NmU1M1x1NmU1NFx1NmU1N1x1NmU1Y1x1NmU1ZFx1NmU1ZSJdLFsiOGZjOGExIiwiXHU2ZTYyXHU2ZTYzXHU2ZTY4XHU2ZTczXHU2ZTdiXHU2ZTdkXHU2ZThkXHU2ZTkzXHU2ZTk5''@;'; put 'put ''XHU2ZWEwXHU2ZWE3XHU2ZWFkXHU2ZWFlXHU2ZWIxXHU2ZWIzXHU2ZWJiXHU2ZWJmXHU2ZWMwXHU2ZWMxXHU2ZWMzXHU2ZWM3XHU2ZWM4XHU2ZWNhXHU2ZWNkXHU2ZWNlXHU2ZWNmXHU2ZWViXHU2ZWVkXHU2ZWVlXHU2ZWY5XHU2ZWZiXHU2ZWZkXHU2ZjA0XHU2ZjA4XHU2ZjBhXHU2ZjBjXHU2''@;'; put 'put ''ZjBkXHU2ZjE2XHU2ZjE4XHU2ZjFhXHU2ZjFiXHU2ZjI2XHU2ZjI5XHU2ZjJhXHU2ZjJmXHU2ZjMwXHU2ZjMzXHU2ZjM2XHU2ZjNiXHU2ZjNjXHU2ZjJkXHU2ZjRmXHU2ZjUxXHU2ZjUyXHU2ZjUzXHU2ZjU3XHU2ZjU5XHU2ZjVhXHU2ZjVkXHU2ZjVlXHU2ZjYxXHU2ZjYyXHU2ZjY4XHU2ZjZj''@;'; put 'put ''XHU2ZjdkXHU2ZjdlXHU2ZjgzXHU2Zjg3XHU2Zjg4XHU2ZjhiXHU2ZjhjXHU2ZjhkXHU2ZjkwXHU2ZjkyXHU2ZjkzXHU2Zjk0XHU2Zjk2XHU2ZjlhXHU2ZjlmXHU2ZmEwXHU2ZmE1XHU2ZmE2XHU2ZmE3XHU2ZmE4XHU2ZmFlXHU2ZmFmXHU2ZmIwXHU2ZmI1XHU2ZmI2XHU2ZmJjXHU2ZmM1XHU2''@;'; put 'put ''ZmM3XHU2ZmM4XHU2ZmNhIl0sWyI4ZmM5YTEiLCJcdTZmZGFcdTZmZGVcdTZmZThcdTZmZTlcdTZmZjBcdTZmZjVcdTZmZjlcdTZmZmNcdTZmZmRcdTcwMDBcdTcwMDVcdTcwMDZcdTcwMDdcdTcwMGRcdTcwMTdcdTcwMjBcdTcwMjNcdTcwMmZcdTcwMzRcdTcwMzdcdTcwMzlcdTcwM2NcdTcw''@;'; put 'put ''NDNcdTcwNDRcdTcwNDhcdTcwNDlcdTcwNGFcdTcwNGJcdTcwNTRcdTcwNTVcdTcwNWRcdTcwNWVcdTcwNGVcdTcwNjRcdTcwNjVcdTcwNmNcdTcwNmVcdTcwNzVcdTcwNzZcdTcwN2VcdTcwODFcdTcwODVcdTcwODZcdTcwOTQiLDQsIlx1NzA5Ylx1NzBhNFx1NzBhYlx1NzBiMFx1NzBiMVx1''@;'; put 'put ''NzBiNFx1NzBiN1x1NzBjYVx1NzBkMVx1NzBkM1x1NzBkNFx1NzBkNVx1NzBkNlx1NzBkOFx1NzBkY1x1NzBlNFx1NzBmYVx1NzEwMyIsNCwiXHU3MTBiXHU3MTBjXHU3MTBmXHU3MTFlXHU3MTIwXHU3MTJiXHU3MTJkXHU3MTJmXHU3MTMwXHU3MTMxXHU3MTM4XHU3MTQxXHU3MTQ1XHU3MTQ2''@;'; put 'put ''XHU3MTQ3XHU3MTRhXHU3MTRiXHU3MTUwXHU3MTUyXHU3MTU3XHU3MTVhXHU3MTVjXHU3MTVlXHU3MTYwIl0sWyI4ZmNhYTEiLCJcdTcxNjhcdTcxNzlcdTcxODBcdTcxODVcdTcxODdcdTcxOGNcdTcxOTJcdTcxOWFcdTcxOWJcdTcxYTBcdTcxYTJcdTcxYWZcdTcxYjBcdTcxYjJcdTcxYjNc''@;'; put 'put ''dTcxYmFcdTcxYmZcdTcxYzBcdTcxYzFcdTcxYzRcdTcxY2JcdTcxY2NcdTcxZDNcdTcxZDZcdTcxZDlcdTcxZGFcdTcxZGNcdTcxZjhcdTcxZmVcdTcyMDBcdTcyMDdcdTcyMDhcdTcyMDlcdTcyMTNcdTcyMTdcdTcyMWFcdTcyMWRcdTcyMWZcdTcyMjRcdTcyMmJcdTcyMmZcdTcyMzRcdTcy''@;'; put 'put ''MzhcdTcyMzlcdTcyNDFcdTcyNDJcdTcyNDNcdTcyNDVcdTcyNGVcdTcyNGZcdTcyNTBcdTcyNTNcdTcyNTVcdTcyNTZcdTcyNWFcdTcyNWNcdTcyNWVcdTcyNjBcdTcyNjNcdTcyNjhcdTcyNmJcdTcyNmVcdTcyNmZcdTcyNzFcdTcyNzdcdTcyNzhcdTcyN2JcdTcyN2NcdTcyN2ZcdTcyODRc''@;'; put 'put ''dTcyODlcdTcyOGRcdTcyOGVcdTcyOTNcdTcyOWJcdTcyYThcdTcyYWRcdTcyYWVcdTcyYjFcdTcyYjRcdTcyYmVcdTcyYzFcdTcyYzdcdTcyYzlcdTcyY2NcdTcyZDVcdTcyZDZcdTcyZDhcdTcyZGZcdTcyZTVcdTcyZjNcdTcyZjRcdTcyZmFcdTcyZmIiXSxbIjhmY2JhMSIsIlx1NzJmZVx1''@;'; put 'put ''NzMwMlx1NzMwNFx1NzMwNVx1NzMwN1x1NzMwYlx1NzMwZFx1NzMxMlx1NzMxM1x1NzMxOFx1NzMxOVx1NzMxZVx1NzMyMlx1NzMyNFx1NzMyN1x1NzMyOFx1NzMyY1x1NzMzMVx1NzMzMlx1NzMzNVx1NzMzYVx1NzMzYlx1NzMzZFx1NzM0M1x1NzM0ZFx1NzM1MFx1NzM1Mlx1NzM1Nlx1NzM1''@;'; put 'put ''OFx1NzM1ZFx1NzM1ZVx1NzM1Zlx1NzM2MFx1NzM2Nlx1NzM2N1x1NzM2OVx1NzM2Ylx1NzM2Y1x1NzM2ZVx1NzM2Zlx1NzM3MVx1NzM3N1x1NzM3OVx1NzM3Y1x1NzM4MFx1NzM4MVx1NzM4M1x1NzM4NVx1NzM4Nlx1NzM4ZVx1NzM5MFx1NzM5M1x1NzM5NVx1NzM5N1x1NzM5OFx1NzM5Y1x1''@;'; put 'put ''NzM5ZVx1NzM5Zlx1NzNhMFx1NzNhMlx1NzNhNVx1NzNhNlx1NzNhYVx1NzNhYlx1NzNhZFx1NzNiNVx1NzNiN1x1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZlx1NzNjNVx1NzNjNlx1NzNjOVx1NzNjYlx1NzNjY1x1NzNjZlx1NzNkMlx1NzNkM1x1NzNkNlx1NzNkOVx1NzNkZFx1NzNlMVx1NzNl''@;'; put 'put ''M1x1NzNlNlx1NzNlN1x1NzNlOVx1NzNmNFx1NzNmNVx1NzNmN1x1NzNmOVx1NzNmYVx1NzNmYlx1NzNmZCJdLFsiOGZjY2ExIiwiXHU3M2ZmXHU3NDAwXHU3NDAxXHU3NDA0XHU3NDA3XHU3NDBhXHU3NDExXHU3NDFhXHU3NDFiXHU3NDI0XHU3NDI2XHU3NDI4Iiw5LCJcdTc0MzlcdTc0NDBc''@;'; put 'put ''dTc0NDNcdTc0NDRcdTc0NDZcdTc0NDdcdTc0NGJcdTc0NGRcdTc0NTFcdTc0NTJcdTc0NTdcdTc0NWRcdTc0NjJcdTc0NjZcdTc0NjdcdTc0NjhcdTc0NmJcdTc0NmRcdTc0NmVcdTc0NzFcdTc0NzJcdTc0ODBcdTc0ODFcdTc0ODVcdTc0ODZcdTc0ODdcdTc0ODlcdTc0OGZcdTc0OTBcdTc0''@;'; put 'put ''OTFcdTc0OTJcdTc0OThcdTc0OTlcdTc0OWFcdTc0OWNcdTc0OWZcdTc0YTBcdTc0YTFcdTc0YTNcdTc0YTZcdTc0YThcdTc0YTlcdTc0YWFcdTc0YWJcdTc0YWVcdTc0YWZcdTc0YjFcdTc0YjJcdTc0YjVcdTc0YjlcdTc0YmJcdTc0YmZcdTc0YzhcdTc0YzlcdTc0Y2NcdTc0ZDBcdTc0ZDNc''@;'; put 'put ''dTc0ZDhcdTc0ZGFcdTc0ZGJcdTc0ZGVcdTc0ZGZcdTc0ZTRcdTc0ZThcdTc0ZWFcdTc0ZWJcdTc0ZWZcdTc0ZjRcdTc0ZmFcdTc0ZmJcdTc0ZmNcdTc0ZmZcdTc1MDYiXSxbIjhmY2RhMSIsIlx1NzUxMlx1NzUxNlx1NzUxN1x1NzUyMFx1NzUyMVx1NzUyNFx1NzUyN1x1NzUyOVx1NzUyYVx1''@;'; put 'put ''NzUyZlx1NzUzNlx1NzUzOVx1NzUzZFx1NzUzZVx1NzUzZlx1NzU0MFx1NzU0M1x1NzU0N1x1NzU0OFx1NzU0ZVx1NzU1MFx1NzU1Mlx1NzU1N1x1NzU1ZVx1NzU1Zlx1NzU2MVx1NzU2Zlx1NzU3MVx1NzU3OSIsNSwiXHU3NTgxXHU3NTg1XHU3NTkwXHU3NTkyXHU3NTkzXHU3NTk1XHU3NTk5''@;'; put 'put ''XHU3NTljXHU3NWEyXHU3NWE0XHU3NWI0XHU3NWJhXHU3NWJmXHU3NWMwXHU3NWMxXHU3NWM0XHU3NWM2XHU3NWNjXHU3NWNlXHU3NWNmXHU3NWQ3XHU3NWRjXHU3NWRmXHU3NWUwXHU3NWUxXHU3NWU0XHU3NWU3XHU3NWVjXHU3NWVlXHU3NWVmXHU3NWYxXHU3NWY5XHU3NjAwXHU3NjAyXHU3''@;'; put 'put ''NjAzXHU3NjA0XHU3NjA3XHU3NjA4XHU3NjBhXHU3NjBjXHU3NjBmXHU3NjEyXHU3NjEzXHU3NjE1XHU3NjE2XHU3NjE5XHU3NjFiXHU3NjFjXHU3NjFkXHU3NjFlXHU3NjIzXHU3NjI1XHU3NjI2XHU3NjI5XHU3NjJkXHU3NjMyXHU3NjMzXHU3NjM1XHU3NjM4XHU3NjM5Il0sWyI4ZmNlYTEi''@;'; put 'put ''LCJcdTc2M2FcdTc2M2NcdTc2NGFcdTc2NDBcdTc2NDFcdTc2NDNcdTc2NDRcdTc2NDVcdTc2NDlcdTc2NGJcdTc2NTVcdTc2NTlcdTc2NWZcdTc2NjRcdTc2NjVcdTc2NmRcdTc2NmVcdTc2NmZcdTc2NzFcdTc2NzRcdTc2ODFcdTc2ODVcdTc2OGNcdTc2OGRcdTc2OTVcdTc2OWJcdTc2OWNc''@;'; put 'put ''dTc2OWRcdTc2OWZcdTc2YTBcdTc2YTIiLDYsIlx1NzZhYVx1NzZhZFx1NzZiZFx1NzZjMVx1NzZjNVx1NzZjOVx1NzZjYlx1NzZjY1x1NzZjZVx1NzZkNFx1NzZkOVx1NzZlMFx1NzZlNlx1NzZlOFx1NzZlY1x1NzZmMFx1NzZmMVx1NzZmNlx1NzZmOVx1NzZmY1x1NzcwMFx1NzcwNlx1Nzcw''@;'; put 'put ''YVx1NzcwZVx1NzcxMlx1NzcxNFx1NzcxNVx1NzcxN1x1NzcxOVx1NzcxYVx1NzcxY1x1NzcyMlx1NzcyOFx1NzcyZFx1NzcyZVx1NzcyZlx1NzczNFx1NzczNVx1NzczNlx1NzczOVx1NzczZFx1NzczZVx1Nzc0Mlx1Nzc0NVx1Nzc0Nlx1Nzc0YVx1Nzc0ZFx1Nzc0ZVx1Nzc0Zlx1Nzc1Mlx1''@;'; put 'put ''Nzc1Nlx1Nzc1N1x1Nzc1Y1x1Nzc1ZVx1Nzc1Zlx1Nzc2MFx1Nzc2MiJdLFsiOGZjZmExIiwiXHU3NzY0XHU3NzY3XHU3NzZhXHU3NzZjXHU3NzcwXHU3NzcyXHU3NzczXHU3Nzc0XHU3NzdhXHU3NzdkXHU3NzgwXHU3Nzg0XHU3NzhjXHU3NzhkXHU3Nzk0XHU3Nzk1XHU3Nzk2XHU3NzlhXHU3''@;'; put 'put ''NzlmXHU3N2EyXHU3N2E3XHU3N2FhXHU3N2FlXHU3N2FmXHU3N2IxXHU3N2I1XHU3N2JlXHU3N2MzXHU3N2M5XHU3N2QxXHU3N2QyXHU3N2Q1XHU3N2Q5XHU3N2RlXHU3N2RmXHU3N2UwXHU3N2U0XHU3N2U2XHU3N2VhXHU3N2VjXHU3N2YwXHU3N2YxXHU3N2Y0XHU3N2Y4XHU3N2ZiXHU3ODA1''@;'; put 'put ''XHU3ODA2XHU3ODA5XHU3ODBkXHU3ODBlXHU3ODExXHU3ODFkXHU3ODIxXHU3ODIyXHU3ODIzXHU3ODJkXHU3ODJlXHU3ODMwXHU3ODM1XHU3ODM3XHU3ODQzXHU3ODQ0XHU3ODQ3XHU3ODQ4XHU3ODRjXHU3ODRlXHU3ODUyXHU3ODVjXHU3ODVlXHU3ODYwXHU3ODYxXHU3ODYzXHU3ODY0XHU3''@;'; put 'put ''ODY4XHU3ODZhXHU3ODZlXHU3ODdhXHU3ODdlXHU3ODhhXHU3ODhmXHU3ODk0XHU3ODk4XHU3OGExXHU3ODlkXHU3ODllXHU3ODlmXHU3OGE0XHU3OGE4XHU3OGFjXHU3OGFkXHU3OGIwXHU3OGIxXHU3OGIyXHU3OGIzIl0sWyI4ZmQwYTEiLCJcdTc4YmJcdTc4YmRcdTc4YmZcdTc4YzdcdTc4''@;'; put 'put ''YzhcdTc4YzlcdTc4Y2NcdTc4Y2VcdTc4ZDJcdTc4ZDNcdTc4ZDVcdTc4ZDZcdTc4ZTRcdTc4ZGJcdTc4ZGZcdTc4ZTBcdTc4ZTFcdTc4ZTZcdTc4ZWFcdTc4ZjJcdTc4ZjNcdTc5MDBcdTc4ZjZcdTc4ZjdcdTc4ZmFcdTc4ZmJcdTc4ZmZcdTc5MDZcdTc5MGNcdTc5MTBcdTc5MWFcdTc5MWNc''@;'; put 'put ''dTc5MWVcdTc5MWZcdTc5MjBcdTc5MjVcdTc5MjdcdTc5MjlcdTc5MmRcdTc5MzFcdTc5MzRcdTc5MzVcdTc5M2JcdTc5M2RcdTc5M2ZcdTc5NDRcdTc5NDVcdTc5NDZcdTc5NGFcdTc5NGJcdTc5NGZcdTc5NTFcdTc5NTRcdTc5NThcdTc5NWJcdTc5NWNcdTc5NjdcdTc5NjlcdTc5NmJcdTc5''@;'; put 'put ''NzJcdTc5NzlcdTc5N2JcdTc5N2NcdTc5N2VcdTc5OGJcdTc5OGNcdTc5OTFcdTc5OTNcdTc5OTRcdTc5OTVcdTc5OTZcdTc5OThcdTc5OWJcdTc5OWNcdTc5YTFcdTc5YThcdTc5YTlcdTc5YWJcdTc5YWZcdTc5YjFcdTc5YjRcdTc5YjhcdTc5YmJcdTc5YzJcdTc5YzRcdTc5YzdcdTc5Yzhc''@;'; put 'put ''dTc5Y2FcdTc5Y2ZcdTc5ZDRcdTc5ZDZcdTc5ZGFcdTc5ZGRcdTc5ZGUiXSxbIjhmZDFhMSIsIlx1NzllMFx1NzllMlx1NzllNVx1NzllYVx1NzllYlx1NzllZFx1NzlmMVx1NzlmOFx1NzlmY1x1N2EwMlx1N2EwM1x1N2EwN1x1N2EwOVx1N2EwYVx1N2EwY1x1N2ExMVx1N2ExNVx1N2ExYlx1''@;'; put 'put ''N2ExZVx1N2EyMVx1N2EyN1x1N2EyYlx1N2EyZFx1N2EyZlx1N2EzMFx1N2EzNFx1N2EzNVx1N2EzOFx1N2EzOVx1N2EzYVx1N2E0NFx1N2E0NVx1N2E0N1x1N2E0OFx1N2E0Y1x1N2E1NVx1N2E1Nlx1N2E1OVx1N2E1Y1x1N2E1ZFx1N2E1Zlx1N2E2MFx1N2E2NVx1N2E2N1x1N2E2YVx1N2E2''@;'; put 'put ''ZFx1N2E3NVx1N2E3OFx1N2E3ZVx1N2E4MFx1N2E4Mlx1N2E4NVx1N2E4Nlx1N2E4YVx1N2E4Ylx1N2E5MFx1N2E5MVx1N2E5NFx1N2E5ZVx1N2FhMFx1N2FhM1x1N2FhY1x1N2FiM1x1N2FiNVx1N2FiOVx1N2FiYlx1N2FiY1x1N2FjNlx1N2FjOVx1N2FjY1x1N2FjZVx1N2FkMVx1N2FkYlx1''@;'; put 'put ''N2FlOFx1N2FlOVx1N2FlYlx1N2FlY1x1N2FmMVx1N2FmNFx1N2FmYlx1N2FmZFx1N2FmZVx1N2IwN1x1N2IxNFx1N2IxZlx1N2IyM1x1N2IyN1x1N2IyOVx1N2IyYVx1N2IyYlx1N2IyZFx1N2IyZVx1N2IyZlx1N2IzMCJdLFsiOGZkMmExIiwiXHU3YjMxXHU3YjM0XHU3YjNkXHU3YjNmXHU3''@;'; put 'put ''YjQwXHU3YjQxXHU3YjQ3XHU3YjRlXHU3YjU1XHU3YjYwXHU3YjY0XHU3YjY2XHU3YjY5XHU3YjZhXHU3YjZkXHU3YjZmXHU3YjcyXHU3YjczXHU3Yjc3XHU3Yjg0XHU3Yjg5XHU3YjhlXHU3YjkwXHU3YjkxXHU3Yjk2XHU3YjliXHU3YjllXHU3YmEwXHU3YmE1XHU3YmFjXHU3YmFmXHU3YmIw''@;'; put 'put ''XHU3YmIyXHU3YmI1XHU3YmI2XHU3YmJhXHU3YmJiXHU3YmJjXHU3YmJkXHU3YmMyXHU3YmM1XHU3YmM4XHU3YmNhXHU3YmQ0XHU3YmQ2XHU3YmQ3XHU3YmQ5XHU3YmRhXHU3YmRiXHU3YmU4XHU3YmVhXHU3YmYyXHU3YmY0XHU3YmY1XHU3YmY4XHU3YmY5XHU3YmZhXHU3YmZjXHU3YmZlXHU3''@;'; put 'put ''YzAxXHU3YzAyXHU3YzAzXHU3YzA0XHU3YzA2XHU3YzA5XHU3YzBiXHU3YzBjXHU3YzBlXHU3YzBmXHU3YzE5XHU3YzFiXHU3YzIwXHU3YzI1XHU3YzI2XHU3YzI4XHU3YzJjXHU3YzMxXHU3YzMzXHU3YzM0XHU3YzM2XHU3YzM5XHU3YzNhXHU3YzQ2XHU3YzRhXHU3YzU1XHU3YzUxXHU3YzUy''@;'; put 'put ''XHU3YzUzXHU3YzU5Iiw1XSxbIjhmZDNhMSIsIlx1N2M2MVx1N2M2M1x1N2M2N1x1N2M2OVx1N2M2ZFx1N2M2ZVx1N2M3MFx1N2M3Mlx1N2M3OVx1N2M3Y1x1N2M3ZFx1N2M4Nlx1N2M4N1x1N2M4Zlx1N2M5NFx1N2M5ZVx1N2NhMFx1N2NhNlx1N2NiMFx1N2NiNlx1N2NiN1x1N2NiYVx1N2Ni''@;'; put 'put ''Ylx1N2NiY1x1N2NiZlx1N2NjNFx1N2NjN1x1N2NjOFx1N2NjOVx1N2NjZFx1N2NjZlx1N2NkM1x1N2NkNFx1N2NkNVx1N2NkN1x1N2NkOVx1N2NkYVx1N2NkZFx1N2NlNlx1N2NlOVx1N2NlYlx1N2NmNVx1N2QwM1x1N2QwN1x1N2QwOFx1N2QwOVx1N2QwZlx1N2QxMVx1N2QxMlx1N2QxM1x1''@;'; put 'put ''N2QxNlx1N2QxZFx1N2QxZVx1N2QyM1x1N2QyNlx1N2QyYVx1N2QyZFx1N2QzMVx1N2QzY1x1N2QzZFx1N2QzZVx1N2Q0MFx1N2Q0MVx1N2Q0N1x1N2Q0OFx1N2Q0ZFx1N2Q1MVx1N2Q1M1x1N2Q1N1x1N2Q1OVx1N2Q1YVx1N2Q1Y1x1N2Q1ZFx1N2Q2NVx1N2Q2N1x1N2Q2YVx1N2Q3MFx1N2Q3''@;'; put 'put ''OFx1N2Q3YVx1N2Q3Ylx1N2Q3Zlx1N2Q4MVx1N2Q4Mlx1N2Q4M1x1N2Q4NVx1N2Q4Nlx1N2Q4OFx1N2Q4Ylx1N2Q4Y1x1N2Q4ZFx1N2Q5MVx1N2Q5Nlx1N2Q5N1x1N2Q5ZCJdLFsiOGZkNGExIiwiXHU3ZDllXHU3ZGE2XHU3ZGE3XHU3ZGFhXHU3ZGIzXHU3ZGI2XHU3ZGI3XHU3ZGI5XHU3ZGMy''@;'; put 'put ''Iiw0LCJcdTdkY2NcdTdkY2RcdTdkY2VcdTdkZDdcdTdkZDlcdTdlMDBcdTdkZTJcdTdkZTVcdTdkZTZcdTdkZWFcdTdkZWJcdTdkZWRcdTdkZjFcdTdkZjVcdTdkZjZcdTdkZjlcdTdkZmFcdTdlMDhcdTdlMTBcdTdlMTFcdTdlMTVcdTdlMTdcdTdlMWNcdTdlMWRcdTdlMjBcdTdlMjdcdTdl''@;'; put 'put ''MjhcdTdlMmNcdTdlMmRcdTdlMmZcdTdlMzNcdTdlMzZcdTdlM2ZcdTdlNDRcdTdlNDVcdTdlNDdcdTdlNGVcdTdlNTBcdTdlNTJcdTdlNThcdTdlNWZcdTdlNjFcdTdlNjJcdTdlNjVcdTdlNmJcdTdlNmVcdTdlNmZcdTdlNzNcdTdlNzhcdTdlN2VcdTdlODFcdTdlODZcdTdlODdcdTdlOGFc''@;'; put 'put ''dTdlOGRcdTdlOTFcdTdlOTVcdTdlOThcdTdlOWFcdTdlOWRcdTdlOWVcdTdmM2NcdTdmM2JcdTdmM2RcdTdmM2VcdTdmM2ZcdTdmNDNcdTdmNDRcdTdmNDdcdTdmNGZcdTdmNTJcdTdmNTNcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNjFcdTdmNjNcdTdmNjRcdTdmNjVcdTdmNjZcdTdmNmQiXSxb''@;'; put 'put ''IjhmZDVhMSIsIlx1N2Y3MVx1N2Y3ZFx1N2Y3ZVx1N2Y3Zlx1N2Y4MFx1N2Y4Ylx1N2Y4ZFx1N2Y4Zlx1N2Y5MFx1N2Y5MVx1N2Y5Nlx1N2Y5N1x1N2Y5Y1x1N2ZhMVx1N2ZhMlx1N2ZhNlx1N2ZhYVx1N2ZhZFx1N2ZiNFx1N2ZiY1x1N2ZiZlx1N2ZjMFx1N2ZjM1x1N2ZjOFx1N2ZjZVx1N2Zj''@;'; put 'put ''Zlx1N2ZkYlx1N2ZkZlx1N2ZlM1x1N2ZlNVx1N2ZlOFx1N2ZlY1x1N2ZlZVx1N2ZlZlx1N2ZmMlx1N2ZmYVx1N2ZmZFx1N2ZmZVx1N2ZmZlx1ODAwN1x1ODAwOFx1ODAwYVx1ODAwZFx1ODAwZVx1ODAwZlx1ODAxMVx1ODAxM1x1ODAxNFx1ODAxNlx1ODAxZFx1ODAxZVx1ODAxZlx1ODAyMFx1''@;'; put 'put ''ODAyNFx1ODAyNlx1ODAyY1x1ODAyZVx1ODAzMFx1ODAzNFx1ODAzNVx1ODAzN1x1ODAzOVx1ODAzYVx1ODAzY1x1ODAzZVx1ODA0MFx1ODA0NFx1ODA2MFx1ODA2NFx1ODA2Nlx1ODA2ZFx1ODA3MVx1ODA3NVx1ODA4MVx1ODA4OFx1ODA4ZVx1ODA5Y1x1ODA5ZVx1ODBhNlx1ODBhN1x1ODBh''@;'; put 'put ''Ylx1ODBiOFx1ODBiOVx1ODBjOFx1ODBjZFx1ODBjZlx1ODBkMlx1ODBkNFx1ODBkNVx1ODBkN1x1ODBkOFx1ODBlMFx1ODBlZFx1ODBlZSJdLFsiOGZkNmExIiwiXHU4MGYwXHU4MGYyXHU4MGYzXHU4MGY2XHU4MGY5XHU4MGZhXHU4MGZlXHU4MTAzXHU4MTBiXHU4MTE2XHU4MTE3XHU4MTE4''@;'; put 'put ''XHU4MTFjXHU4MTFlXHU4MTIwXHU4MTI0XHU4MTI3XHU4MTJjXHU4MTMwXHU4MTM1XHU4MTNhXHU4MTNjXHU4MTQ1XHU4MTQ3XHU4MTRhXHU4MTRjXHU4MTUyXHU4MTU3XHU4MTYwXHU4MTYxXHU4MTY3XHU4MTY4XHU4MTY5XHU4MTZkXHU4MTZmXHU4MTc3XHU4MTgxXHU4MTkwXHU4MTg0XHU4''@;'; put 'put ''MTg1XHU4MTg2XHU4MThiXHU4MThlXHU4MTk2XHU4MTk4XHU4MTliXHU4MTllXHU4MWEyXHU4MWFlXHU4MWIyXHU4MWI0XHU4MWJiXHU4MWNiXHU4MWMzXHU4MWM1XHU4MWNhXHU4MWNlXHU4MWNmXHU4MWQ1XHU4MWQ3XHU4MWRiXHU4MWRkXHU4MWRlXHU4MWUxXHU4MWU0XHU4MWViXHU4MWVj''@;'; put 'put ''XHU4MWYwXHU4MWYxXHU4MWYyXHU4MWY1XHU4MWY2XHU4MWY4XHU4MWY5XHU4MWZkXHU4MWZmXHU4MjAwXHU4MjAzXHU4MjBmXHU4MjEzXHU4MjE0XHU4MjE5XHU4MjFhXHU4MjFkXHU4MjIxXHU4MjIyXHU4MjI4XHU4MjMyXHU4MjM0XHU4MjNhXHU4MjQzXHU4MjQ0XHU4MjQ1XHU4MjQ2Il0s''@;'; put 'put ''WyI4ZmQ3YTEiLCJcdTgyNGJcdTgyNGVcdTgyNGZcdTgyNTFcdTgyNTZcdTgyNWNcdTgyNjBcdTgyNjNcdTgyNjdcdTgyNmRcdTgyNzRcdTgyN2JcdTgyN2RcdTgyN2ZcdTgyODBcdTgyODFcdTgyODNcdTgyODRcdTgyODdcdTgyODlcdTgyOGFcdTgyOGVcdTgyOTFcdTgyOTRcdTgyOTZcdTgy''@;'; put 'put ''OThcdTgyOWFcdTgyOWJcdTgyYTBcdTgyYTFcdTgyYTNcdTgyYTRcdTgyYTdcdTgyYThcdTgyYTlcdTgyYWFcdTgyYWVcdTgyYjBcdTgyYjJcdTgyYjRcdTgyYjdcdTgyYmFcdTgyYmNcdTgyYmVcdTgyYmZcdTgyYzZcdTgyZDBcdTgyZDVcdTgyZGFcdTgyZTBcdTgyZTJcdTgyZTRcdTgyZThc''@;'; put 'put ''dTgyZWFcdTgyZWRcdTgyZWZcdTgyZjZcdTgyZjdcdTgyZmRcdTgyZmVcdTgzMDBcdTgzMDFcdTgzMDdcdTgzMDhcdTgzMGFcdTgzMGJcdTgzNTRcdTgzMWJcdTgzMWRcdTgzMWVcdTgzMWZcdTgzMjFcdTgzMjJcdTgzMmNcdTgzMmRcdTgzMmVcdTgzMzBcdTgzMzNcdTgzMzdcdTgzM2FcdTgz''@;'; put 'put ''M2NcdTgzM2RcdTgzNDJcdTgzNDNcdTgzNDRcdTgzNDdcdTgzNGRcdTgzNGVcdTgzNTFcdTgzNTVcdTgzNTZcdTgzNTdcdTgzNzBcdTgzNzgiXSxbIjhmZDhhMSIsIlx1ODM3ZFx1ODM3Zlx1ODM4MFx1ODM4Mlx1ODM4NFx1ODM4Nlx1ODM4ZFx1ODM5Mlx1ODM5NFx1ODM5NVx1ODM5OFx1ODM5''@;'; put 'put ''OVx1ODM5Ylx1ODM5Y1x1ODM5ZFx1ODNhNlx1ODNhN1x1ODNhOVx1ODNhY1x1ODNiZVx1ODNiZlx1ODNjMFx1ODNjN1x1ODNjOVx1ODNjZlx1ODNkMFx1ODNkMVx1ODNkNFx1ODNkZFx1ODM1M1x1ODNlOFx1ODNlYVx1ODNmNlx1ODNmOFx1ODNmOVx1ODNmY1x1ODQwMVx1ODQwNlx1ODQwYVx1''@;'; put 'put ''ODQwZlx1ODQxMVx1ODQxNVx1ODQxOVx1ODNhZFx1ODQyZlx1ODQzOVx1ODQ0NVx1ODQ0N1x1ODQ0OFx1ODQ0YVx1ODQ0ZFx1ODQ0Zlx1ODQ1MVx1ODQ1Mlx1ODQ1Nlx1ODQ1OFx1ODQ1OVx1ODQ1YVx1ODQ1Y1x1ODQ2MFx1ODQ2NFx1ODQ2NVx1ODQ2N1x1ODQ2YVx1ODQ3MFx1ODQ3M1x1ODQ3''@;'; put 'put ''NFx1ODQ3Nlx1ODQ3OFx1ODQ3Y1x1ODQ3ZFx1ODQ4MVx1ODQ4NVx1ODQ5Mlx1ODQ5M1x1ODQ5NVx1ODQ5ZVx1ODRhNlx1ODRhOFx1ODRhOVx1ODRhYVx1ODRhZlx1ODRiMVx1ODRiNFx1ODRiYVx1ODRiZFx1ODRiZVx1ODRjMFx1ODRjMlx1ODRjN1x1ODRjOFx1ODRjY1x1ODRjZlx1ODRkMyJd''@;'; put 'put ''LFsiOGZkOWExIiwiXHU4NGRjXHU4NGU3XHU4NGVhXHU4NGVmXHU4NGYwXHU4NGYxXHU4NGYyXHU4NGY3XHU4NTMyXHU4NGZhXHU4NGZiXHU4NGZkXHU4NTAyXHU4NTAzXHU4NTA3XHU4NTBjXHU4NTBlXHU4NTEwXHU4NTFjXHU4NTFlXHU4NTIyXHU4NTIzXHU4NTI0XHU4NTI1XHU4NTI3XHU4''@;'; put 'put ''NTJhXHU4NTJiXHU4NTJmXHU4NTMzXHU4NTM0XHU4NTM2XHU4NTNmXHU4NTQ2XHU4NTRmIiw0LCJcdTg1NTZcdTg1NTlcdTg1NWMiLDYsIlx1ODU2NFx1ODU2Ylx1ODU2Zlx1ODU3OVx1ODU3YVx1ODU3Ylx1ODU3ZFx1ODU3Zlx1ODU4MVx1ODU4NVx1ODU4Nlx1ODU4OVx1ODU4Ylx1ODU4Y1x1''@;'; put 'put ''ODU4Zlx1ODU5M1x1ODU5OFx1ODU5ZFx1ODU5Zlx1ODVhMFx1ODVhMlx1ODVhNVx1ODVhN1x1ODViNFx1ODViNlx1ODViN1x1ODViOFx1ODViY1x1ODViZFx1ODViZVx1ODViZlx1ODVjMlx1ODVjN1x1ODVjYVx1ODVjYlx1ODVjZVx1ODVhZFx1ODVkOFx1ODVkYVx1ODVkZlx1ODVlMFx1ODVl''@;'; put 'put ''Nlx1ODVlOFx1ODVlZFx1ODVmM1x1ODVmNlx1ODVmYyJdLFsiOGZkYWExIiwiXHU4NWZmXHU4NjAwXHU4NjA0XHU4NjA1XHU4NjBkXHU4NjBlXHU4NjEwXHU4NjExXHU4NjEyXHU4NjE4XHU4NjE5XHU4NjFiXHU4NjFlXHU4NjIxXHU4NjI3XHU4NjI5XHU4NjM2XHU4NjM4XHU4NjNhXHU4NjNj''@;'; put 'put ''XHU4NjNkXHU4NjQwXHU4NjQyXHU4NjQ2XHU4NjUyXHU4NjUzXHU4NjU2XHU4NjU3XHU4NjU4XHU4NjU5XHU4NjVkXHU4NjYwIiw0LCJcdTg2NjlcdTg2NmNcdTg2NmZcdTg2NzVcdTg2NzZcdTg2NzdcdTg2N2FcdTg2OGRcdTg2OTFcdTg2OTZcdTg2OThcdTg2OWFcdTg2OWNcdTg2YTFcdTg2''@;'; put 'put ''YTZcdTg2YTdcdTg2YThcdTg2YWRcdTg2YjFcdTg2YjNcdTg2YjRcdTg2YjVcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmZcdTg2YzBcdTg2YzFcdTg2YzNcdTg2YzVcdTg2ZDFcdTg2ZDJcdTg2ZDVcdTg2ZDdcdTg2ZGFcdTg2ZGNcdTg2ZTBcdTg2ZTNcdTg2ZTVcdTg2ZTdcdTg2ODhcdTg2ZmFc''@;'; put 'put ''dTg2ZmNcdTg2ZmRcdTg3MDRcdTg3MDVcdTg3MDdcdTg3MGJcdTg3MGVcdTg3MGZcdTg3MTBcdTg3MTNcdTg3MTRcdTg3MTlcdTg3MWVcdTg3MWZcdTg3MjFcdTg3MjMiXSxbIjhmZGJhMSIsIlx1ODcyOFx1ODcyZVx1ODcyZlx1ODczMVx1ODczMlx1ODczOVx1ODczYVx1ODczY1x1ODczZFx1''@;'; put 'put ''ODczZVx1ODc0MFx1ODc0M1x1ODc0NVx1ODc0ZFx1ODc1OFx1ODc1ZFx1ODc2MVx1ODc2NFx1ODc2NVx1ODc2Zlx1ODc3MVx1ODc3Mlx1ODc3Ylx1ODc4MyIsNiwiXHU4NzhiXHU4NzhjXHU4NzkwXHU4NzkzXHU4Nzk1XHU4Nzk3XHU4Nzk4XHU4Nzk5XHU4NzllXHU4N2EwXHU4N2EzXHU4N2E3''@;'; put 'put ''XHU4N2FjXHU4N2FkXHU4N2FlXHU4N2IxXHU4N2I1XHU4N2JlXHU4N2JmXHU4N2MxXHU4N2M4XHU4N2M5XHU4N2NhXHU4N2NlXHU4N2Q1XHU4N2Q2XHU4N2Q5XHU4N2RhXHU4N2RjXHU4N2RmXHU4N2UyXHU4N2UzXHU4N2U0XHU4N2VhXHU4N2ViXHU4N2VkXHU4N2YxXHU4N2YzXHU4N2Y4XHU4''@;'; put 'put ''N2ZhXHU4N2ZmXHU4ODAxXHU4ODAzXHU4ODA2XHU4ODA5XHU4ODBhXHU4ODBiXHU4ODEwXHU4ODE5XHU4ODEyXHU4ODEzXHU4ODE0XHU4ODE4XHU4ODFhXHU4ODFiXHU4ODFjXHU4ODFlXHU4ODFmXHU4ODI4XHU4ODJkXHU4ODJlXHU4ODMwXHU4ODMyXHU4ODM1Il0sWyI4ZmRjYTEiLCJcdTg4''@;'; put 'put ''M2FcdTg4M2NcdTg4NDFcdTg4NDNcdTg4NDVcdTg4NDhcdTg4NDlcdTg4NGFcdTg4NGJcdTg4NGVcdTg4NTFcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWFcdTg4NWNcdTg4NWZcdTg4NjBcdTg4NjRcdTg4NjlcdTg4NzFcdTg4NzlcdTg4N2JcdTg4ODBcdTg4OThcdTg4OWFcdTg4OWJcdTg4OWNc''@;'; put 'put ''dTg4OWZcdTg4YTBcdTg4YThcdTg4YWFcdTg4YmFcdTg4YmRcdTg4YmVcdTg4YzBcdTg4Y2EiLDQsIlx1ODhkMVx1ODhkMlx1ODhkM1x1ODhkYlx1ODhkZVx1ODhlN1x1ODhlZlx1ODhmMFx1ODhmMVx1ODhmNVx1ODhmN1x1ODkwMVx1ODkwNlx1ODkwZFx1ODkwZVx1ODkwZlx1ODkxNVx1ODkx''@;'; put 'put ''Nlx1ODkxOFx1ODkxOVx1ODkxYVx1ODkxY1x1ODkyMFx1ODkyNlx1ODkyN1x1ODkyOFx1ODkzMFx1ODkzMVx1ODkzMlx1ODkzNVx1ODkzOVx1ODkzYVx1ODkzZVx1ODk0MFx1ODk0Mlx1ODk0NVx1ODk0Nlx1ODk0OVx1ODk0Zlx1ODk1Mlx1ODk1N1x1ODk1YVx1ODk1Ylx1ODk1Y1x1ODk2MVx1''@;'; put 'put ''ODk2Mlx1ODk2M1x1ODk2Ylx1ODk2ZVx1ODk3MFx1ODk3M1x1ODk3NVx1ODk3YSJdLFsiOGZkZGExIiwiXHU4OTdiXHU4OTdjXHU4OTdkXHU4OTg5XHU4OThkXHU4OTkwXHU4OTk0XHU4OTk1XHU4OTliXHU4OTljXHU4OTlmXHU4OWEwXHU4OWE1XHU4OWIwXHU4OWI0XHU4OWI1XHU4OWI2XHU4''@;'; put 'put ''OWI3XHU4OWJjXHU4OWQ0Iiw0LCJcdTg5ZTVcdTg5ZTlcdTg5ZWJcdTg5ZWRcdTg5ZjFcdTg5ZjNcdTg5ZjZcdTg5ZjlcdTg5ZmRcdTg5ZmZcdThhMDRcdThhMDVcdThhMDdcdThhMGZcdThhMTFcdThhMTJcdThhMTRcdThhMTVcdThhMWVcdThhMjBcdThhMjJcdThhMjRcdThhMjZcdThhMmJc''@;'; put 'put ''dThhMmNcdThhMmZcdThhMzVcdThhMzdcdThhM2RcdThhM2VcdThhNDBcdThhNDNcdThhNDVcdThhNDdcdThhNDlcdThhNGRcdThhNGVcdThhNTNcdThhNTZcdThhNTdcdThhNThcdThhNWNcdThhNWRcdThhNjFcdThhNjVcdThhNjdcdThhNzVcdThhNzZcdThhNzdcdThhNzlcdThhN2FcdThh''@;'; put 'put ''N2JcdThhN2VcdThhN2ZcdThhODBcdThhODNcdThhODZcdThhOGJcdThhOGZcdThhOTBcdThhOTJcdThhOTZcdThhOTdcdThhOTlcdThhOWZcdThhYTdcdThhYTlcdThhYWVcdThhYWZcdThhYjMiXSxbIjhmZGVhMSIsIlx1OGFiNlx1OGFiN1x1OGFiYlx1OGFiZVx1OGFjM1x1OGFjNlx1OGFj''@;'; put 'put ''OFx1OGFjOVx1OGFjYVx1OGFkMVx1OGFkM1x1OGFkNFx1OGFkNVx1OGFkN1x1OGFkZFx1OGFkZlx1OGFlY1x1OGFmMFx1OGFmNFx1OGFmNVx1OGFmNlx1OGFmY1x1OGFmZlx1OGIwNVx1OGIwNlx1OGIwYlx1OGIxMVx1OGIxY1x1OGIxZVx1OGIxZlx1OGIwYVx1OGIyZFx1OGIzMFx1OGIzN1x1''@;'; put 'put ''OGIzY1x1OGI0MiIsNCwiXHU4YjQ4XHU4YjUyXHU4YjUzXHU4YjU0XHU4YjU5XHU4YjRkXHU4YjVlXHU4YjYzXHU4YjZkXHU4Yjc2XHU4Yjc4XHU4Yjc5XHU4YjdjXHU4YjdlXHU4YjgxXHU4Yjg0XHU4Yjg1XHU4YjhiXHU4YjhkXHU4YjhmXHU4Yjk0XHU4Yjk1XHU4YjljXHU4YjllXHU4Yjlm''@;'; put 'put ''XHU4YzM4XHU4YzM5XHU4YzNkXHU4YzNlXHU4YzQ1XHU4YzQ3XHU4YzQ5XHU4YzRiXHU4YzRmXHU4YzUxXHU4YzUzXHU4YzU0XHU4YzU3XHU4YzU4XHU4YzViXHU4YzVkXHU4YzU5XHU4YzYzXHU4YzY0XHU4YzY2XHU4YzY4XHU4YzY5XHU4YzZkXHU4YzczXHU4Yzc1XHU4Yzc2XHU4YzdiXHU4''@;'; put 'put ''YzdlXHU4Yzg2Il0sWyI4ZmRmYTEiLCJcdThjODdcdThjOGJcdThjOTBcdThjOTJcdThjOTNcdThjOTlcdThjOWJcdThjOWNcdThjYTRcdThjYjlcdThjYmFcdThjYzVcdThjYzZcdThjYzlcdThjY2JcdThjY2ZcdThjZDZcdThjZDVcdThjZDlcdThjZGRcdThjZTFcdThjZThcdThjZWNcdThj''@;'; put 'put ''ZWZcdThjZjBcdThjZjJcdThjZjVcdThjZjdcdThjZjhcdThjZmVcdThjZmZcdThkMDFcdThkMDNcdThkMDlcdThkMTJcdThkMTdcdThkMWJcdThkNjVcdThkNjlcdThkNmNcdThkNmVcdThkN2ZcdThkODJcdThkODRcdThkODhcdThkOGRcdThkOTBcdThkOTFcdThkOTVcdThkOWVcdThkOWZc''@;'; put 'put ''dThkYTBcdThkYTZcdThkYWJcdThkYWNcdThkYWZcdThkYjJcdThkYjVcdThkYjdcdThkYjlcdThkYmJcdThkYzBcdThkYzVcdThkYzZcdThkYzdcdThkYzhcdThkY2FcdThkY2VcdThkZDFcdThkZDRcdThkZDVcdThkZDdcdThkZDlcdThkZTRcdThkZTVcdThkZTdcdThkZWNcdThkZjBcdThk''@;'; put 'put ''YmNcdThkZjFcdThkZjJcdThkZjRcdThkZmRcdThlMDFcdThlMDRcdThlMDVcdThlMDZcdThlMGJcdThlMTFcdThlMTRcdThlMTZcdThlMjBcdThlMjFcdThlMjIiXSxbIjhmZTBhMSIsIlx1OGUyM1x1OGUyNlx1OGUyN1x1OGUzMVx1OGUzM1x1OGUzNlx1OGUzN1x1OGUzOFx1OGUzOVx1OGUz''@;'; put 'put ''ZFx1OGU0MFx1OGU0MVx1OGU0Ylx1OGU0ZFx1OGU0ZVx1OGU0Zlx1OGU1NFx1OGU1Ylx1OGU1Y1x1OGU1ZFx1OGU1ZVx1OGU2MVx1OGU2Mlx1OGU2OVx1OGU2Y1x1OGU2ZFx1OGU2Zlx1OGU3MFx1OGU3MVx1OGU3OVx1OGU3YVx1OGU3Ylx1OGU4Mlx1OGU4M1x1OGU4OVx1OGU5MFx1OGU5Mlx1''@;'; put 'put ''OGU5NVx1OGU5YVx1OGU5Ylx1OGU5ZFx1OGU5ZVx1OGVhMlx1OGVhN1x1OGVhOVx1OGVhZFx1OGVhZVx1OGViM1x1OGViNVx1OGViYVx1OGViYlx1OGVjMFx1OGVjMVx1OGVjM1x1OGVjNFx1OGVjN1x1OGVjZlx1OGVkMVx1OGVkNFx1OGVkY1x1OGVlOFx1OGVlZVx1OGVmMFx1OGVmMVx1OGVm''@;'; put 'put ''N1x1OGVmOVx1OGVmYVx1OGVlZFx1OGYwMFx1OGYwMlx1OGYwN1x1OGYwOFx1OGYwZlx1OGYxMFx1OGYxNlx1OGYxN1x1OGYxOFx1OGYxZVx1OGYyMFx1OGYyMVx1OGYyM1x1OGYyNVx1OGYyN1x1OGYyOFx1OGYyY1x1OGYyZFx1OGYyZVx1OGYzNFx1OGYzNVx1OGYzNlx1OGYzN1x1OGYzYVx1''@;'; put 'put ''OGY0MFx1OGY0MSJdLFsiOGZlMWExIiwiXHU4ZjQzXHU4ZjQ3XHU4ZjRmXHU4ZjUxIiw0LCJcdThmNThcdThmNWRcdThmNWVcdThmNjVcdThmOWRcdThmYTBcdThmYTFcdThmYTRcdThmYTVcdThmYTZcdThmYjVcdThmYjZcdThmYjhcdThmYmVcdThmYzBcdThmYzFcdThmYzZcdThmY2FcdThm''@;'; put 'put ''Y2JcdThmY2RcdThmZDBcdThmZDJcdThmZDNcdThmZDVcdThmZTBcdThmZTNcdThmZTRcdThmZThcdThmZWVcdThmZjFcdThmZjVcdThmZjZcdThmZmJcdThmZmVcdTkwMDJcdTkwMDRcdTkwMDhcdTkwMGNcdTkwMThcdTkwMWJcdTkwMjhcdTkwMjlcdTkwMmZcdTkwMmFcdTkwMmNcdTkwMmRc''@;'; put 'put ''dTkwMzNcdTkwMzRcdTkwMzdcdTkwM2ZcdTkwNDNcdTkwNDRcdTkwNGNcdTkwNWJcdTkwNWRcdTkwNjJcdTkwNjZcdTkwNjdcdTkwNmNcdTkwNzBcdTkwNzRcdTkwNzlcdTkwODVcdTkwODhcdTkwOGJcdTkwOGNcdTkwOGVcdTkwOTBcdTkwOTVcdTkwOTdcdTkwOThcdTkwOTlcdTkwOWJcdTkw''@;'; put 'put ''YTBcdTkwYTFcdTkwYTJcdTkwYTVcdTkwYjBcdTkwYjJcdTkwYjNcdTkwYjRcdTkwYjZcdTkwYmRcdTkwY2NcdTkwYmVcdTkwYzMiXSxbIjhmZTJhMSIsIlx1OTBjNFx1OTBjNVx1OTBjN1x1OTBjOFx1OTBkNVx1OTBkN1x1OTBkOFx1OTBkOVx1OTBkY1x1OTBkZFx1OTBkZlx1OTBlNVx1OTBk''@;'; put 'put ''Mlx1OTBmNlx1OTBlYlx1OTBlZlx1OTBmMFx1OTBmNFx1OTBmZVx1OTBmZlx1OTEwMFx1OTEwNFx1OTEwNVx1OTEwNlx1OTEwOFx1OTEwZFx1OTExMFx1OTExNFx1OTExNlx1OTExN1x1OTExOFx1OTExYVx1OTExY1x1OTExZVx1OTEyMFx1OTEyNVx1OTEyMlx1OTEyM1x1OTEyN1x1OTEyOVx1''@;'; put 'put ''OTEyZVx1OTEyZlx1OTEzMVx1OTEzNFx1OTEzNlx1OTEzN1x1OTEzOVx1OTEzYVx1OTEzY1x1OTEzZFx1OTE0M1x1OTE0N1x1OTE0OFx1OTE0Zlx1OTE1M1x1OTE1N1x1OTE1OVx1OTE1YVx1OTE1Ylx1OTE2MVx1OTE2NFx1OTE2N1x1OTE2ZFx1OTE3NFx1OTE3OVx1OTE3YVx1OTE3Ylx1OTE4''@;'; put 'put ''MVx1OTE4M1x1OTE4NVx1OTE4Nlx1OTE4YVx1OTE4ZVx1OTE5MVx1OTE5M1x1OTE5NFx1OTE5NVx1OTE5OFx1OTE5ZVx1OTFhMVx1OTFhNlx1OTFhOFx1OTFhY1x1OTFhZFx1OTFhZVx1OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFiYlx1OTFiY1x1OTFiZFx1OTFiZiJdLFsiOGZl''@;'; put 'put ''M2ExIiwiXHU5MWMyXHU5MWMzXHU5MWM1XHU5MWQzXHU5MWQ0XHU5MWQ3XHU5MWQ5XHU5MWRhXHU5MWRlXHU5MWU0XHU5MWU1XHU5MWU5XHU5MWVhXHU5MWVjIiw1LCJcdTkxZjdcdTkxZjlcdTkxZmJcdTkxZmRcdTkyMDBcdTkyMDFcdTkyMDRcdTkyMDVcdTkyMDZcdTkyMDdcdTkyMDlcdTky''@;'; put 'put ''MGFcdTkyMGNcdTkyMTBcdTkyMTJcdTkyMTNcdTkyMTZcdTkyMThcdTkyMWNcdTkyMWRcdTkyMjNcdTkyMjRcdTkyMjVcdTkyMjZcdTkyMjhcdTkyMmVcdTkyMmZcdTkyMzBcdTkyMzNcdTkyMzVcdTkyMzZcdTkyMzhcdTkyMzlcdTkyM2FcdTkyM2NcdTkyM2VcdTkyNDBcdTkyNDJcdTkyNDNc''@;'; put 'put ''dTkyNDZcdTkyNDdcdTkyNGFcdTkyNGRcdTkyNGVcdTkyNGZcdTkyNTFcdTkyNThcdTkyNTlcdTkyNWNcdTkyNWRcdTkyNjBcdTkyNjFcdTkyNjVcdTkyNjdcdTkyNjhcdTkyNjlcdTkyNmVcdTkyNmZcdTkyNzBcdTkyNzUiLDQsIlx1OTI3Ylx1OTI3Y1x1OTI3ZFx1OTI3Zlx1OTI4OFx1OTI4''@;'; put 'put ''OVx1OTI4YVx1OTI4ZFx1OTI4ZVx1OTI5Mlx1OTI5NyJdLFsiOGZlNGExIiwiXHU5Mjk5XHU5MjlmXHU5MmEwXHU5MmE0XHU5MmE1XHU5MmE3XHU5MmE4XHU5MmFiXHU5MmFmXHU5MmIyXHU5MmI2XHU5MmI4XHU5MmJhXHU5MmJiXHU5MmJjXHU5MmJkXHU5MmJmIiw0LCJcdTkyYzVcdTkyYzZc''@;'; put 'put ''dTkyYzdcdTkyYzhcdTkyY2JcdTkyY2NcdTkyY2RcdTkyY2VcdTkyZDBcdTkyZDNcdTkyZDVcdTkyZDdcdTkyZDhcdTkyZDlcdTkyZGNcdTkyZGRcdTkyZGZcdTkyZTBcdTkyZTFcdTkyZTNcdTkyZTVcdTkyZTdcdTkyZThcdTkyZWNcdTkyZWVcdTkyZjBcdTkyZjlcdTkyZmJcdTkyZmZcdTkz''@;'; put 'put ''MDBcdTkzMDJcdTkzMDhcdTkzMGRcdTkzMTFcdTkzMTRcdTkzMTVcdTkzMWNcdTkzMWRcdTkzMWVcdTkzMWZcdTkzMjFcdTkzMjRcdTkzMjVcdTkzMjdcdTkzMjlcdTkzMmFcdTkzMzNcdTkzMzRcdTkzMzZcdTkzMzdcdTkzNDdcdTkzNDhcdTkzNDlcdTkzNTBcdTkzNTFcdTkzNTJcdTkzNTVc''@;'; put 'put ''dTkzNTdcdTkzNThcdTkzNWFcdTkzNWVcdTkzNjRcdTkzNjVcdTkzNjdcdTkzNjlcdTkzNmFcdTkzNmRcdTkzNmZcdTkzNzBcdTkzNzFcdTkzNzNcdTkzNzRcdTkzNzYiXSxbIjhmZTVhMSIsIlx1OTM3YVx1OTM3ZFx1OTM3Zlx1OTM4MFx1OTM4MVx1OTM4Mlx1OTM4OFx1OTM4YVx1OTM4Ylx1''@;'; put 'put ''OTM4ZFx1OTM4Zlx1OTM5Mlx1OTM5NVx1OTM5OFx1OTM5Ylx1OTM5ZVx1OTNhMVx1OTNhM1x1OTNhNFx1OTNhNlx1OTNhOFx1OTNhYlx1OTNiNFx1OTNiNVx1OTNiNlx1OTNiYVx1OTNhOVx1OTNjMVx1OTNjNFx1OTNjNVx1OTNjNlx1OTNjN1x1OTNjOSIsNCwiXHU5M2QzXHU5M2Q5XHU5M2Rj''@;'; put 'put ''XHU5M2RlXHU5M2RmXHU5M2UyXHU5M2U2XHU5M2U3XHU5M2Y5XHU5M2Y3XHU5M2Y4XHU5M2ZhXHU5M2ZiXHU5M2ZkXHU5NDAxXHU5NDAyXHU5NDA0XHU5NDA4XHU5NDA5XHU5NDBkXHU5NDBlXHU5NDBmXHU5NDE1XHU5NDE2XHU5NDE3XHU5NDFmXHU5NDJlXHU5NDJmXHU5NDMxXHU5NDMyXHU5''@;'; put 'put ''NDMzXHU5NDM0XHU5NDNiXHU5NDNmXHU5NDNkXHU5NDQzXHU5NDQ1XHU5NDQ4XHU5NDRhXHU5NDRjXHU5NDU1XHU5NDU5XHU5NDVjXHU5NDVmXHU5NDYxXHU5NDYzXHU5NDY4XHU5NDZiXHU5NDZkXHU5NDZlXHU5NDZmXHU5NDcxXHU5NDcyXHU5NDg0XHU5NDgzXHU5NTc4XHU5NTc5Il0sWyI4''@;'; put 'put ''ZmU2YTEiLCJcdTk1N2VcdTk1ODRcdTk1ODhcdTk1OGNcdTk1OGRcdTk1OGVcdTk1OWRcdTk1OWVcdTk1OWZcdTk1YTFcdTk1YTZcdTk1YTlcdTk1YWJcdTk1YWNcdTk1YjRcdTk1YjZcdTk1YmFcdTk1YmRcdTk1YmZcdTk1YzZcdTk1YzhcdTk1YzlcdTk1Y2JcdTk1ZDBcdTk1ZDFcdTk1ZDJc''@;'; put 'put ''dTk1ZDNcdTk1ZDlcdTk1ZGFcdTk1ZGRcdTk1ZGVcdTk1ZGZcdTk1ZTBcdTk1ZTRcdTk1ZTZcdTk2MWRcdTk2MWVcdTk2MjJcdTk2MjRcdTk2MjVcdTk2MjZcdTk2MmNcdTk2MzFcdTk2MzNcdTk2MzdcdTk2MzhcdTk2MzlcdTk2M2FcdTk2M2NcdTk2M2RcdTk2NDFcdTk2NTJcdTk2NTRcdTk2''@;'; put 'put ''NTZcdTk2NTdcdTk2NThcdTk2NjFcdTk2NmVcdTk2NzRcdTk2N2JcdTk2N2NcdTk2N2VcdTk2N2ZcdTk2ODFcdTk2ODJcdTk2ODNcdTk2ODRcdTk2ODlcdTk2OTFcdTk2OTZcdTk2OWFcdTk2OWRcdTk2OWZcdTk2YTRcdTk2YTVcdTk2YTZcdTk2YTlcdTk2YWVcdTk2YWZcdTk2YjNcdTk2YmFc''@;'; put 'put ''dTk2Y2FcdTk2ZDJcdTVkYjJcdTk2ZDhcdTk2ZGFcdTk2ZGRcdTk2ZGVcdTk2ZGZcdTk2ZTlcdTk2ZWZcdTk2ZjFcdTk2ZmFcdTk3MDIiXSxbIjhmZTdhMSIsIlx1OTcwM1x1OTcwNVx1OTcwOVx1OTcxYVx1OTcxYlx1OTcxZFx1OTcyMVx1OTcyMlx1OTcyM1x1OTcyOFx1OTczMVx1OTczM1x1''@;'; put 'put ''OTc0MVx1OTc0M1x1OTc0YVx1OTc0ZVx1OTc0Zlx1OTc1NVx1OTc1N1x1OTc1OFx1OTc1YVx1OTc1Ylx1OTc2M1x1OTc2N1x1OTc2YVx1OTc2ZVx1OTc3M1x1OTc3Nlx1OTc3N1x1OTc3OFx1OTc3Ylx1OTc3ZFx1OTc3Zlx1OTc4MFx1OTc4OVx1OTc5NVx1OTc5Nlx1OTc5N1x1OTc5OVx1OTc5''@;'; put 'put ''YVx1OTc5ZVx1OTc5Zlx1OTdhMlx1OTdhY1x1OTdhZVx1OTdiMVx1OTdiMlx1OTdiNVx1OTdiNlx1OTdiOFx1OTdiOVx1OTdiYVx1OTdiY1x1OTdiZVx1OTdiZlx1OTdjMVx1OTdjNFx1OTdjNVx1OTdjN1x1OTdjOVx1OTdjYVx1OTdjY1x1OTdjZFx1OTdjZVx1OTdkMFx1OTdkMVx1OTdkNFx1''@;'; put 'put ''OTdkN1x1OTdkOFx1OTdkOVx1OTdkZFx1OTdkZVx1OTdlMFx1OTdkYlx1OTdlMVx1OTdlNFx1OTdlZlx1OTdmMVx1OTdmNFx1OTdmN1x1OTdmOFx1OTdmYVx1OTgwN1x1OTgwYVx1OTgxOVx1OTgwZFx1OTgwZVx1OTgxNFx1OTgxNlx1OTgxY1x1OTgxZVx1OTgyMFx1OTgyM1x1OTgyNiJdLFsi''@;'; put 'put ''OGZlOGExIiwiXHU5ODJiXHU5ODJlXHU5ODJmXHU5ODMwXHU5ODMyXHU5ODMzXHU5ODM1XHU5ODI1XHU5ODNlXHU5ODQ0XHU5ODQ3XHU5ODRhXHU5ODUxXHU5ODUyXHU5ODUzXHU5ODU2XHU5ODU3XHU5ODU5XHU5ODVhXHU5ODYyXHU5ODYzXHU5ODY1XHU5ODY2XHU5ODZhXHU5ODZjXHU5OGFi''@;'; put 'put ''XHU5OGFkXHU5OGFlXHU5OGIwXHU5OGI0XHU5OGI3XHU5OGI4XHU5OGJhXHU5OGJiXHU5OGJmXHU5OGMyXHU5OGM1XHU5OGM4XHU5OGNjXHU5OGUxXHU5OGUzXHU5OGU1XHU5OGU2XHU5OGU3XHU5OGVhXHU5OGYzXHU5OGY2XHU5OTAyXHU5OTA3XHU5OTA4XHU5OTExXHU5OTE1XHU5OTE2XHU5''@;'; put 'put ''OTE3XHU5OTFhXHU5OTFiXHU5OTFjXHU5OTFmXHU5OTIyXHU5OTI2XHU5OTI3XHU5OTJiXHU5OTMxIiw0LCJcdTk5MzlcdTk5M2FcdTk5M2JcdTk5M2NcdTk5NDBcdTk5NDFcdTk5NDZcdTk5NDdcdTk5NDhcdTk5NGRcdTk5NGVcdTk5NTRcdTk5NThcdTk5NTlcdTk5NWJcdTk5NWNcdTk5NWVc''@;'; put 'put ''dTk5NWZcdTk5NjBcdTk5OWJcdTk5OWRcdTk5OWZcdTk5YTZcdTk5YjBcdTk5YjFcdTk5YjJcdTk5YjUiXSxbIjhmZTlhMSIsIlx1OTliOVx1OTliYVx1OTliZFx1OTliZlx1OTljM1x1OTljOVx1OTlkM1x1OTlkNFx1OTlkOVx1OTlkYVx1OTlkY1x1OTlkZVx1OTllN1x1OTllYVx1OTllYlx1''@;'; put 'put ''OTllY1x1OTlmMFx1OTlmNFx1OTlmNVx1OTlmOVx1OTlmZFx1OTlmZVx1OWEwMlx1OWEwM1x1OWEwNFx1OWEwYlx1OWEwY1x1OWExMFx1OWExMVx1OWExNlx1OWExZVx1OWEyMFx1OWEyMlx1OWEyM1x1OWEyNFx1OWEyN1x1OWEyZFx1OWEyZVx1OWEzM1x1OWEzNVx1OWEzNlx1OWEzOFx1OWE0''@;'; put 'put ''N1x1OWE0MVx1OWE0NFx1OWE0YVx1OWE0Ylx1OWE0Y1x1OWE0ZVx1OWE1MVx1OWE1NFx1OWE1Nlx1OWE1ZFx1OWFhYVx1OWFhY1x1OWFhZVx1OWFhZlx1OWFiMlx1OWFiNFx1OWFiNVx1OWFiNlx1OWFiOVx1OWFiYlx1OWFiZVx1OWFiZlx1OWFjMVx1OWFjM1x1OWFjNlx1OWFjOFx1OWFjZVx1''@;'; put 'put ''OWFkMFx1OWFkMlx1OWFkNVx1OWFkNlx1OWFkN1x1OWFkYlx1OWFkY1x1OWFlMFx1OWFlNFx1OWFlNVx1OWFlN1x1OWFlOVx1OWFlY1x1OWFmMlx1OWFmM1x1OWFmNVx1OWFmOVx1OWFmYVx1OWFmZFx1OWFmZiIsNF0sWyI4ZmVhYTEiLCJcdTliMDRcdTliMDVcdTliMDhcdTliMDlcdTliMGJc''@;'; put 'put ''dTliMGNcdTliMGRcdTliMGVcdTliMTBcdTliMTJcdTliMTZcdTliMTlcdTliMWJcdTliMWNcdTliMjBcdTliMjZcdTliMmJcdTliMmRcdTliMzNcdTliMzRcdTliMzVcdTliMzdcdTliMzlcdTliM2FcdTliM2RcdTliNDhcdTliNGJcdTliNGNcdTliNTVcdTliNTZcdTliNTdcdTliNWJcdTli''@;'; put 'put ''NWVcdTliNjFcdTliNjNcdTliNjVcdTliNjZcdTliNjhcdTliNmEiLDQsIlx1OWI3M1x1OWI3NVx1OWI3N1x1OWI3OFx1OWI3OVx1OWI3Zlx1OWI4MFx1OWI4NFx1OWI4NVx1OWI4Nlx1OWI4N1x1OWI4OVx1OWI4YVx1OWI4Ylx1OWI4ZFx1OWI4Zlx1OWI5MFx1OWI5NFx1OWI5YVx1OWI5ZFx1''@;'; put 'put ''OWI5ZVx1OWJhNlx1OWJhN1x1OWJhOVx1OWJhY1x1OWJiMFx1OWJiMVx1OWJiMlx1OWJiN1x1OWJiOFx1OWJiYlx1OWJiY1x1OWJiZVx1OWJiZlx1OWJjMVx1OWJjN1x1OWJjOFx1OWJjZVx1OWJkMFx1OWJkN1x1OWJkOFx1OWJkZFx1OWJkZlx1OWJlNVx1OWJlN1x1OWJlYVx1OWJlYlx1OWJl''@;'; put 'put ''Zlx1OWJmM1x1OWJmN1x1OWJmOCJdLFsiOGZlYmExIiwiXHU5YmY5XHU5YmZhXHU5YmZkXHU5YmZmXHU5YzAwXHU5YzAyXHU5YzBiXHU5YzBmXHU5YzExXHU5YzE2XHU5YzE4XHU5YzE5XHU5YzFhXHU5YzFjXHU5YzFlXHU5YzIyXHU5YzIzXHU5YzI2Iiw0LCJcdTljMzFcdTljMzVcdTljMzZc''@;'; put 'put ''dTljMzdcdTljM2RcdTljNDFcdTljNDNcdTljNDRcdTljNDVcdTljNDlcdTljNGFcdTljNGVcdTljNGZcdTljNTBcdTljNTNcdTljNTRcdTljNTZcdTljNThcdTljNWJcdTljNWRcdTljNWVcdTljNWZcdTljNjNcdTljNjlcdTljNmFcdTljNWNcdTljNmJcdTljNjhcdTljNmVcdTljNzBcdTlj''@;'; put 'put ''NzJcdTljNzVcdTljNzdcdTljN2JcdTljZTZcdTljZjJcdTljZjdcdTljZjlcdTlkMGJcdTlkMDJcdTlkMTFcdTlkMTdcdTlkMThcdTlkMWNcdTlkMWRcdTlkMWVcdTlkMmZcdTlkMzBcdTlkMzJcdTlkMzNcdTlkMzRcdTlkM2FcdTlkM2NcdTlkNDVcdTlkM2RcdTlkNDJcdTlkNDNcdTlkNDdc''@;'; put 'put ''dTlkNGFcdTlkNTNcdTlkNTRcdTlkNWZcdTlkNjNcdTlkNjJcdTlkNjVcdTlkNjlcdTlkNmFcdTlkNmJcdTlkNzBcdTlkNzZcdTlkNzdcdTlkN2IiXSxbIjhmZWNhMSIsIlx1OWQ3Y1x1OWQ3ZVx1OWQ4M1x1OWQ4NFx1OWQ4Nlx1OWQ4YVx1OWQ4ZFx1OWQ4ZVx1OWQ5Mlx1OWQ5M1x1OWQ5NVx1''@;'; put 'put ''OWQ5Nlx1OWQ5N1x1OWQ5OFx1OWRhMVx1OWRhYVx1OWRhY1x1OWRhZVx1OWRiMVx1OWRiNVx1OWRiOVx1OWRiY1x1OWRiZlx1OWRjM1x1OWRjN1x1OWRjOVx1OWRjYVx1OWRkNFx1OWRkNVx1OWRkNlx1OWRkN1x1OWRkYVx1OWRkZVx1OWRkZlx1OWRlMFx1OWRlNVx1OWRlN1x1OWRlOVx1OWRl''@;'; put 'put ''Ylx1OWRlZVx1OWRmMFx1OWRmM1x1OWRmNFx1OWRmZVx1OWUwYVx1OWUwMlx1OWUwN1x1OWUwZVx1OWUxMFx1OWUxMVx1OWUxMlx1OWUxNVx1OWUxNlx1OWUxOVx1OWUxY1x1OWUxZFx1OWU3YVx1OWU3Ylx1OWU3Y1x1OWU4MFx1OWU4Mlx1OWU4M1x1OWU4NFx1OWU4NVx1OWU4N1x1OWU4ZVx1''@;'; put 'put ''OWU4Zlx1OWU5Nlx1OWU5OFx1OWU5Ylx1OWU5ZVx1OWVhNFx1OWVhOFx1OWVhY1x1OWVhZVx1OWVhZlx1OWViMFx1OWViM1x1OWViNFx1OWViNVx1OWVjNlx1OWVjOFx1OWVjYlx1OWVkNVx1OWVkZlx1OWVlNFx1OWVlN1x1OWVlY1x1OWVlZFx1OWVlZVx1OWVmMFx1OWVmMVx1OWVmMlx1OWVm''@;'; put 'put ''NSJdLFsiOGZlZGExIiwiXHU5ZWY4XHU5ZWZmXHU5ZjAyXHU5ZjAzXHU5ZjA5XHU5ZjBmXHU5ZjEwXHU5ZjExXHU5ZjEyXHU5ZjE0XHU5ZjE2XHU5ZjE3XHU5ZjE5XHU5ZjFhXHU5ZjFiXHU5ZjFmXHU5ZjIyXHU5ZjI2XHU5ZjJhXHU5ZjJiXHU5ZjJmXHU5ZjMxXHU5ZjMyXHU5ZjM0XHU5ZjM3''@;'; put 'put ''XHU5ZjM5XHU5ZjNhXHU5ZjNjXHU5ZjNkXHU5ZjNmXHU5ZjQxXHU5ZjQzIiw0LCJcdTlmNTNcdTlmNTVcdTlmNTZcdTlmNTdcdTlmNThcdTlmNWFcdTlmNWRcdTlmNWVcdTlmNjhcdTlmNjlcdTlmNmQiLDQsIlx1OWY3M1x1OWY3NVx1OWY3YVx1OWY3ZFx1OWY4Zlx1OWY5MFx1OWY5MVx1OWY5''@;'; put 'put ''Mlx1OWY5NFx1OWY5Nlx1OWY5N1x1OWY5ZVx1OWZhMVx1OWZhMlx1OWZhM1x1OWZhNSJdXScpfSwzNjI1ODpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ3sidUNoYXJzIjpbMTI4LDE2NSwxNjksMTc4LDE4NCwyMTYsMjI2LDIzNSwyMzgsMjQ0LDI0OCwyNTEsMjUz''@;'; put 'put ''LDI1OCwyNzYsMjg0LDMwMCwzMjUsMzI5LDMzNCwzNjQsNDYzLDQ2NSw0NjcsNDY5LDQ3MSw0NzMsNDc1LDQ3Nyw1MDYsNTk0LDYxMCw3MTIsNzE2LDczMCw5MzAsOTM4LDk2Miw5NzAsMTAyNiwxMTA0LDExMDYsODIwOSw4MjE1LDgyMTgsODIyMiw4MjMxLDgyNDEsODI0NCw4MjQ2LDgyNTIs''@;'; put 'put ''ODM2NSw4NDUyLDg0NTQsODQ1OCw4NDcxLDg0ODIsODU1Niw4NTcwLDg1OTYsODYwMiw4NzEzLDg3MjAsODcyMiw4NzI2LDg3MzEsODczNyw4NzQwLDg3NDIsODc0OCw4NzUxLDg3NjAsODc2Niw4Nzc3LDg3ODEsODc4Nyw4ODAyLDg4MDgsODgxNiw4ODU0LDg4NTgsODg3MCw4ODk2LDg5Nzks''@;'; put 'put ''OTMyMiw5MzcyLDk1NDgsOTU4OCw5NjE2LDk2MjIsOTYzNCw5NjUyLDk2NjIsOTY3Miw5Njc2LDk2ODAsOTcwMiw5NzM1LDk3MzgsOTc5Myw5Nzk1LDExOTA2LDExOTA5LDExOTEzLDExOTE3LDExOTI4LDExOTQ0LDExOTQ3LDExOTUxLDExOTU2LDExOTYwLDExOTY0LDExOTc5LDEyMjg0LDEy''@;'; put 'put ''MjkyLDEyMzEyLDEyMzE5LDEyMzMwLDEyMzUxLDEyNDM2LDEyNDQ3LDEyNTM1LDEyNTQzLDEyNTg2LDEyODQyLDEyODUwLDEyOTY0LDEzMjAwLDEzMjE1LDEzMjE4LDEzMjUzLDEzMjYzLDEzMjY3LDEzMjcwLDEzMzg0LDEzNDI4LDEzNzI3LDEzODM5LDEzODUxLDE0NjE3LDE0NzAzLDE0ODAx''@;'; put 'put ''LDE0ODE2LDE0OTY0LDE1MTgzLDE1NDcxLDE1NTg1LDE2NDcxLDE2NzM2LDE3MjA4LDE3MzI1LDE3MzMwLDE3Mzc0LDE3NjIzLDE3OTk3LDE4MDE4LDE4MjEyLDE4MjE4LDE4MzAxLDE4MzE4LDE4NzYwLDE4ODExLDE4ODE0LDE4ODIwLDE4ODIzLDE4ODQ0LDE4ODQ4LDE4ODcyLDE5NTc2LDE5''@;'; put 'put ''NjIwLDE5NzM4LDE5ODg3LDQwODcwLDU5MjQ0LDU5MzM2LDU5MzY3LDU5NDEzLDU5NDE3LDU5NDIzLDU5NDMxLDU5NDM3LDU5NDQzLDU5NDUyLDU5NDYwLDU5NDc4LDU5NDkzLDYzNzg5LDYzODY2LDYzODk0LDYzOTc2LDYzOTg2LDY0MDE2LDY0MDE4LDY0MDIxLDY0MDI1LDY0MDM0LDY0MDM3''@;'; put 'put ''LDY0MDQyLDY1MDc0LDY1MDkzLDY1MTA3LDY1MTEyLDY1MTI3LDY1MTMyLDY1Mzc1LDY1NTEwLDY1NTM2XSwiZ2JDaGFycyI6WzAsMzYsMzgsNDUsNTAsODEsODksOTUsOTYsMTAwLDEwMywxMDQsMTA1LDEwOSwxMjYsMTMzLDE0OCwxNzIsMTc1LDE3OSwyMDgsMzA2LDMwNywzMDgsMzA5LDMx''@;'; put 'put ''MCwzMTEsMzEyLDMxMywzNDEsNDI4LDQ0Myw1NDQsNTQ1LDU1OCw3NDEsNzQyLDc0OSw3NTAsODA1LDgxOSw4MjAsNzkyMiw3OTI0LDc5MjUsNzkyNyw3OTM0LDc5NDMsNzk0NCw3OTQ1LDc5NTAsODA2Miw4MTQ4LDgxNDksODE1Miw4MTY0LDgxNzQsODIzNiw4MjQwLDgyNjIsODI2NCw4Mzc0''@;'; put 'put ''LDgzODAsODM4MSw4Mzg0LDgzODgsODM5MCw4MzkyLDgzOTMsODM5NCw4Mzk2LDg0MDEsODQwNiw4NDE2LDg0MTksODQyNCw4NDM3LDg0MzksODQ0NSw4NDgyLDg0ODUsODQ5Niw4NTIxLDg2MDMsODkzNiw4OTQ2LDkwNDYsOTA1MCw5MDYzLDkwNjYsOTA3Niw5MDkyLDkxMDAsOTEwOCw5MTEx''@;'; put 'put ''LDkxMTMsOTEzMSw5MTYyLDkxNjQsOTIxOCw5MjE5LDExMzI5LDExMzMxLDExMzM0LDExMzM2LDExMzQ2LDExMzYxLDExMzYzLDExMzY2LDExMzcwLDExMzcyLDExMzc1LDExMzg5LDExNjgyLDExNjg2LDExNjg3LDExNjkyLDExNjk0LDExNzE0LDExNzE2LDExNzIzLDExNzI1LDExNzMwLDEx''@;'; put 'put ''NzM2LDExOTgyLDExOTg5LDEyMTAyLDEyMzM2LDEyMzQ4LDEyMzUwLDEyMzg0LDEyMzkzLDEyMzk1LDEyMzk3LDEyNTEwLDEyNTUzLDEyODUxLDEyOTYyLDEyOTczLDEzNzM4LDEzODIzLDEzOTE5LDEzOTMzLDE0MDgwLDE0Mjk4LDE0NTg1LDE0Njk4LDE1NTgzLDE1ODQ3LDE2MzE4LDE2NDM0''@;'; put 'put ''LDE2NDM4LDE2NDgxLDE2NzI5LDE3MTAyLDE3MTIyLDE3MzE1LDE3MzIwLDE3NDAyLDE3NDE4LDE3ODU5LDE3OTA5LDE3OTExLDE3OTE1LDE3OTE2LDE3OTM2LDE3OTM5LDE3OTYxLDE4NjY0LDE4NzAzLDE4ODE0LDE4OTYyLDE5MDQzLDMzNDY5LDMzNDcwLDMzNDcxLDMzNDg0LDMzNDg1LDMz''@;'; put 'put ''NDkwLDMzNDk3LDMzNTAxLDMzNTA1LDMzNTEzLDMzNTIwLDMzNTM2LDMzNTUwLDM3ODQ1LDM3OTIxLDM3OTQ4LDM4MDI5LDM4MDM4LDM4MDY0LDM4MDY1LDM4MDY2LDM4MDY5LDM4MDc1LDM4MDc2LDM4MDc4LDM5MTA4LDM5MTA5LDM5MTEzLDM5MTE0LDM5MTE1LDM5MTE2LDM5MjY1LDM5Mzk0''@;'; put 'put ''LDE4OTAwMF19Jyl9LDQ0MzQ2OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siYTE0MCIsIlx1ZTRjNiIsNjJdLFsiYTE4MCIsIlx1ZTUwNSIsMzJdLFsiYTI0MCIsIlx1ZTUyNiIsNjJdLFsiYTI4MCIsIlx1ZTU2NSIsMzJdLFsiYTJhYiIsIlx1ZTc2NiIsNV0s''@;'; put 'put ''WyJhMmUzIiwiXHUyMGFjXHVlNzZkIl0sWyJhMmVmIiwiXHVlNzZlXHVlNzZmIl0sWyJhMmZkIiwiXHVlNzcwXHVlNzcxIl0sWyJhMzQwIiwiXHVlNTg2Iiw2Ml0sWyJhMzgwIiwiXHVlNWM1IiwzMSwiXHUzMDAwIl0sWyJhNDQwIiwiXHVlNWU2Iiw2Ml0sWyJhNDgwIiwiXHVlNjI1IiwzMl0s''@;'; put 'put ''WyJhNGY0IiwiXHVlNzcyIiwxMF0sWyJhNTQwIiwiXHVlNjQ2Iiw2Ml0sWyJhNTgwIiwiXHVlNjg1IiwzMl0sWyJhNWY3IiwiXHVlNzdkIiw3XSxbImE2NDAiLCJcdWU2YTYiLDYyXSxbImE2ODAiLCJcdWU2ZTUiLDMyXSxbImE2YjkiLCJcdWU3ODUiLDddLFsiYTZkOSIsIlx1ZTc4ZCIsNl0s''@;'; put 'put ''WyJhNmVjIiwiXHVlNzk0XHVlNzk1Il0sWyJhNmYzIiwiXHVlNzk2Il0sWyJhNmY2IiwiXHVlNzk3Iiw4XSxbImE3NDAiLCJcdWU3MDYiLDYyXSxbImE3ODAiLCJcdWU3NDUiLDMyXSxbImE3YzIiLCJcdWU3YTAiLDE0XSxbImE3ZjIiLCJcdWU3YWYiLDEyXSxbImE4OTYiLCJcdWU3YmMiLDEw''@;'; put 'put ''XSxbImE4YmMiLCJcdWU3YzciXSxbImE4YmYiLCJcdTAxZjkiXSxbImE4YzEiLCJcdWU3YzlcdWU3Y2FcdWU3Y2JcdWU3Y2MiXSxbImE4ZWEiLCJcdWU3Y2QiLDIwXSxbImE5NTgiLCJcdWU3ZTIiXSxbImE5NWIiLCJcdWU3ZTMiXSxbImE5NWQiLCJcdWU3ZTRcdWU3ZTVcdWU3ZTYiXSxbImE5''@;'; put 'put ''ODkiLCJcdTMwM2VcdTJmZjAiLDExXSxbImE5OTciLCJcdWU3ZjQiLDEyXSxbImE5ZjAiLCJcdWU4MDEiLDE0XSxbImFhYTEiLCJcdWUwMDAiLDkzXSxbImFiYTEiLCJcdWUwNWUiLDkzXSxbImFjYTEiLCJcdWUwYmMiLDkzXSxbImFkYTEiLCJcdWUxMWEiLDkzXSxbImFlYTEiLCJcdWUxNzgi''@;'; put 'put ''LDkzXSxbImFmYTEiLCJcdWUxZDYiLDkzXSxbImQ3ZmEiLCJcdWU4MTAiLDRdLFsiZjhhMSIsIlx1ZTIzNCIsOTNdLFsiZjlhMSIsIlx1ZTI5MiIsOTNdLFsiZmFhMSIsIlx1ZTJmMCIsOTNdLFsiZmJhMSIsIlx1ZTM0ZSIsOTNdLFsiZmNhMSIsIlx1ZTNhYyIsOTNdLFsiZmRhMSIsIlx1ZTQw''@;'; put 'put ''YSIsOTNdLFsiZmU1MCIsIlx1MmU4MVx1ZTgxNlx1ZTgxN1x1ZTgxOFx1MmU4NFx1MzQ3M1x1MzQ0N1x1MmU4OFx1MmU4Ylx1ZTgxZVx1MzU5ZVx1MzYxYVx1MzYwZVx1MmU4Y1x1MmU5N1x1Mzk2ZVx1MzkxOFx1ZTgyNlx1MzljZlx1MzlkZlx1M2E3M1x1MzlkMFx1ZTgyYlx1ZTgyY1x1M2I0''@;'; put 'put ''ZVx1M2M2ZVx1M2NlMFx1MmVhN1x1ZTgzMVx1ZTgzMlx1MmVhYVx1NDA1Nlx1NDE1Zlx1MmVhZVx1NDMzN1x1MmViM1x1MmViNlx1MmViN1x1ZTgzYlx1NDNiMVx1NDNhY1x1MmViYlx1NDNkZFx1NDRkNlx1NDY2MVx1NDY0Y1x1ZTg0MyJdLFsiZmU4MCIsIlx1NDcyM1x1NDcyOVx1NDc3Y1x1''@;'; put 'put ''NDc4ZFx1MmVjYVx1NDk0N1x1NDk3YVx1NDk3ZFx1NDk4Mlx1NDk4M1x1NDk4NVx1NDk4Nlx1NDk5Zlx1NDk5Ylx1NDliN1x1NDliNlx1ZTg1NFx1ZTg1NVx1NGNhM1x1NGM5Zlx1NGNhMFx1NGNhMVx1NGM3N1x1NGNhMlx1NGQxMyIsNiwiXHU0ZGFlXHVlODY0XHVlNDY4Iiw5M11dJyl9LDI3''@;'; put 'put ''MDE0OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIsIlxcdTAwMDAiLDEyOF0sWyJhMSIsIlx1ZmY2MSIsNjJdLFsiODE0MCIsIlx1MzAwMFx1MzAwMVx1MzAwMlx1ZmYwY1x1ZmYwZVx1MzBmYlx1ZmYxYVx1ZmYxYlx1ZmYxZlx1ZmYwMVx1MzA5Ylx1MzA5''@;'; put 'put ''Y1x4YjRcdWZmNDBceGE4XHVmZjNlXHVmZmUzXHVmZjNmXHUzMGZkXHUzMGZlXHUzMDlkXHUzMDllXHUzMDAzXHU0ZWRkXHUzMDA1XHUzMDA2XHUzMDA3XHUzMGZjXHUyMDE1XHUyMDEwXHVmZjBmXHVmZjNjXHVmZjVlXHUyMjI1XHVmZjVjXHUyMDI2XHUyMDI1XHUyMDE4XHUyMDE5XHUyMDFj''@;'; put 'put ''XHUyMDFkXHVmZjA4XHVmZjA5XHUzMDE0XHUzMDE1XHVmZjNiXHVmZjNkXHVmZjViXHVmZjVkXHUzMDA4Iiw5LCJcdWZmMGJcdWZmMGRceGIxXHhkNyJdLFsiODE4MCIsIlx4ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIw''@;'; put 'put ''XHUyMDMyXHUyMDMzXHUyMTAzXHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVmZjA1XHVmZjAzXHVmZjA2XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAx''@;'; put 'put ''Mlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxMyJdLFsiODFiOCIsIlx1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOSJdLFsiODFjOCIsIlx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwMyJdLFsiODFkYSIsIlx1MjIyMFx1''@;'; put 'put ''MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyYyJdLFsiODFmMCIsIlx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjYiXSxbIjgxZmMiLCJcdTI1ZWYiXSxbIjgy''@;'; put 'put ''NGYiLCJcdWZmMTAiLDldLFsiODI2MCIsIlx1ZmYyMSIsMjVdLFsiODI4MSIsIlx1ZmY0MSIsMjVdLFsiODI5ZiIsIlx1MzA0MSIsODJdLFsiODM0MCIsIlx1MzBhMSIsNjJdLFsiODM4MCIsIlx1MzBlMCIsMjJdLFsiODM5ZiIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyI4M2JmIiwiXHUw''@;'; put 'put ''M2IxIiwxNiwiXHUwM2MzIiw2XSxbIjg0NDAiLCJcdTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsMjVdLFsiODQ3MCIsIlx1MDQzMCIsNSwiXHUwNDUxXHUwNDM2Iiw3XSxbIjg0ODAiLCJcdTA0M2UiLDE3XSxbIjg0OWYiLCJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1''@;'; put 'put ''MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDIiXSxbIjg3NDAiLCJc''@;'; put 'put ''dTI0NjAiLDE5LCJcdTIxNjAiLDldLFsiODc1ZiIsIlx1MzM0OVx1MzMxNFx1MzMyMlx1MzM0ZFx1MzMxOFx1MzMyN1x1MzMwM1x1MzMzNlx1MzM1MVx1MzM1N1x1MzMwZFx1MzMyNlx1MzMyM1x1MzMyYlx1MzM0YVx1MzMzYlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzM4ZVx1MzM4Zlx1MzNjNFx1''@;'; put 'put ''MzNhMSJdLFsiODc3ZSIsIlx1MzM3YiJdLFsiODc4MCIsIlx1MzAxZFx1MzAxZlx1MjExNlx1MzNjZFx1MjEyMVx1MzJhNCIsNCwiXHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYxXHUyMjJiXHUyMjJlXHUyMjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFm''@;'; put 'put ''XHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhIl0sWyI4ODlmIiwiXHU0ZTljXHU1NTE2XHU1YTAzXHU5NjNmXHU1NGMwXHU2MTFiXHU2MzI4XHU1OWY2XHU5MDIyXHU4NDc1XHU4MzFjXHU3YTUwXHU2MGFhXHU2M2UxXHU2ZTI1XHU2NWVkXHU4NDY2XHU4MmE2XHU5YmY1XHU2ODkzXHU1NzI3XHU2''@;'; put 'put ''NWExXHU2MjcxXHU1YjliXHU1OWQwXHU4NjdiXHU5OGY0XHU3ZDYyXHU3ZGJlXHU5YjhlXHU2MjE2XHU3YzlmXHU4OGI3XHU1Yjg5XHU1ZWI1XHU2MzA5XHU2Njk3XHU2ODQ4XHU5NWM3XHU5NzhkXHU2NzRmXHU0ZWU1XHU0ZjBhXHU0ZjRkXHU0ZjlkXHU1MDQ5XHU1NmYyXHU1OTM3XHU1OWQ0''@;'; put 'put ''XHU1YTAxXHU1YzA5XHU2MGRmXHU2MTBmXHU2MTcwXHU2NjEzXHU2OTA1XHU3MGJhXHU3NTRmXHU3NTcwXHU3OWZiXHU3ZGFkXHU3ZGVmXHU4MGMzXHU4NDBlXHU4ODYzXHU4YjAyXHU5MDU1XHU5MDdhXHU1MzNiXHU0ZTk1XHU0ZWE1XHU1N2RmXHU4MGIyXHU5MGMxXHU3OGVmXHU0ZTAwXHU1''@;'; put 'put ''OGYxXHU2ZWEyXHU5MDM4XHU3YTMyXHU4MzI4XHU4MjhiXHU5YzJmXHU1MTQxXHU1MzcwXHU1NGJkXHU1NGUxXHU1NmUwXHU1OWZiXHU1ZjE1XHU5OGYyXHU2ZGViXHU4MGU0XHU4NTJkIl0sWyI4OTQwIiwiXHU5NjYyXHU5NjcwXHU5NmEwXHU5N2ZiXHU1NDBiXHU1M2YzXHU1Yjg3XHU3MGNm''@;'; put 'put ''XHU3ZmJkXHU4ZmMyXHU5NmU4XHU1MzZmXHU5ZDVjXHU3YWJhXHU0ZTExXHU3ODkzXHU4MWZjXHU2ZTI2XHU1NjE4XHU1NTA0XHU2YjFkXHU4NTFhXHU5YzNiXHU1OWU1XHU1M2E5XHU2ZDY2XHU3NGRjXHU5NThmXHU1NjQyXHU0ZTkxXHU5MDRiXHU5NmYyXHU4MzRmXHU5OTBjXHU1M2UxXHU1''@;'; put 'put ''NWI2XHU1YjMwXHU1ZjcxXHU2NjIwXHU2NmYzXHU2ODA0XHU2YzM4XHU2Y2YzXHU2ZDI5XHU3NDViXHU3NmM4XHU3YTRlXHU5ODM0XHU4MmYxXHU4ODViXHU4YTYwXHU5MmVkXHU2ZGIyXHU3NWFiXHU3NmNhXHU5OWM1XHU2MGE2XHU4YjAxXHU4ZDhhXHU5NWIyXHU2OThlXHU1M2FkXHU1MTg2''@;'; put 'put ''Il0sWyI4OTgwIiwiXHU1NzEyXHU1ODMwXHU1OTQ0XHU1YmI0XHU1ZWY2XHU2MDI4XHU2M2E5XHU2M2Y0XHU2Y2JmXHU2ZjE0XHU3MDhlXHU3MTE0XHU3MTU5XHU3MWQ1XHU3MzNmXHU3ZTAxXHU4Mjc2XHU4MmQxXHU4NTk3XHU5MDYwXHU5MjViXHU5ZDFiXHU1ODY5XHU2NWJjXHU2YzVhXHU3''@;'; put 'put ''NTI1XHU1MWY5XHU1OTJlXHU1OTY1XHU1ZjgwXHU1ZmRjXHU2MmJjXHU2NWZhXHU2YTJhXHU2YjI3XHU2YmI0XHU3MzhiXHU3ZmMxXHU4OTU2XHU5ZDJjXHU5ZDBlXHU5ZWM0XHU1Y2ExXHU2Yzk2XHU4MzdiXHU1MTA0XHU1YzRiXHU2MWI2XHU4MWM2XHU2ODc2XHU3MjYxXHU0ZTU5XHU0ZmZh''@;'; put 'put ''XHU1Mzc4XHU2MDY5XHU2ZTI5XHU3YTRmXHU5N2YzXHU0ZTBiXHU1MzE2XHU0ZWVlXHU0ZjU1XHU0ZjNkXHU0ZmExXHU0ZjczXHU1MmEwXHU1M2VmXHU1NjA5XHU1OTBmXHU1YWMxXHU1YmI2XHU1YmUxXHU3OWQxXHU2Njg3XHU2NzljXHU2N2I2XHU2YjRjXHU2Y2IzXHU3MDZiXHU3M2MyXHU3''@;'; put 'put ''OThkXHU3OWJlXHU3YTNjXHU3Yjg3XHU4MmIxXHU4MmRiXHU4MzA0XHU4Mzc3XHU4M2VmXHU4M2QzXHU4NzY2XHU4YWIyXHU1NjI5XHU4Y2E4XHU4ZmU2XHU5MDRlXHU5NzFlXHU4NjhhXHU0ZmM0XHU1Y2U4XHU2MjExXHU3MjU5XHU3NTNiXHU4MWU1XHU4MmJkXHU4NmZlXHU4Y2MwXHU5NmM1''@;'; put 'put ''XHU5OTEzXHU5OWQ1XHU0ZWNiXHU0ZjFhXHU4OWUzXHU1NmRlXHU1ODRhXHU1OGNhXHU1ZWZiXHU1ZmViXHU2MDJhXHU2MDk0XHU2MDYyXHU2MWQwXHU2MjEyXHU2MmQwXHU2NTM5Il0sWyI4YTQwIiwiXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1XHU4''@;'; put 'put ''MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1MmJlXHU1OTE2XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2OTgyXHU2ZGFmXHU3ODhkXHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1Mjgz''@;'; put 'put ''XHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNjXHU2ODM4XHU2YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlhXHU4OWQyXHU4ZDZiXHU4ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJiIl0s''@;'; put 'put ''WyI4YTgwIiwiXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlkXHU2MDcwXHU2MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4NDViXHU4OTEwXHU4ZjQ0XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5Mzhj''@;'; put 'put ''XHU1NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxXHU3Y2E1XHU1MjA4XHU4MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQyXHU1MjBhXHU1MmQ4XHU1MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2''@;'; put 'put ''MTYzXHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2OGZhXHU2YjNlXHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3NGIwXHU3NTE4XHU3NmUzXHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNj''@;'; put 'put ''XHU4Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEyXHU5NjY1XHU5N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4XHU1ZGNjXHU3M2E5XHU3NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1''@;'; put 'put ''NTljXHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1YzkwXHU1ZTBjXHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2NWUyXHU2NzFmXHU2OGNiXHU2OGM0Il0sWyI4YjQwIiwiXHU2YTVmXHU1ZTMwXHU2YmM1XHU2YzE3XHU2YzdkXHU3NTdmXHU3OTQ4XHU1YjYzXHU3YTAw''@;'; put 'put ''XHU3ZDAwXHU1ZmJkXHU4OThmXHU4YTE4XHU4Y2I0XHU4ZDc3XHU4ZWNjXHU4ZjFkXHU5OGUyXHU5YTBlXHU5YjNjXHU0ZTgwXHU1MDdkXHU1MTAwXHU1OTkzXHU1YjljXHU2MjJmXHU2MjgwXHU2NGVjXHU2YjNhXHU3MmEwXHU3NTkxXHU3OTQ3XHU3ZmE5XHU4N2ZiXHU4YWJjXHU4YjcwXHU2''@;'; put 'put ''M2FjXHU4M2NhXHU5N2EwXHU1NDA5XHU1NDAzXHU1NWFiXHU2ODU0XHU2YTU4XHU4YTcwXHU3ODI3XHU2Nzc1XHU5ZWNkXHU1Mzc0XHU1YmEyXHU4MTFhXHU4NjUwXHU5MDA2XHU0ZTE4XHU0ZTQ1XHU0ZWM3XHU0ZjExXHU1M2NhXHU1NDM4XHU1YmFlXHU1ZjEzXHU2MDI1XHU2NTUxIl0sWyI4''@;'; put 'put ''YjgwIiwiXHU2NzNkXHU2YzQyXHU2YzcyXHU2Y2UzXHU3MDc4XHU3NDAzXHU3YTc2XHU3YWFlXHU3YjA4XHU3ZDFhXHU3Y2ZlXHU3ZDY2XHU2NWU3XHU3MjViXHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MmUwXHU2MzE5XHU2ZTIwXHU4NjVhXHU4YTMxXHU4ZGRkXHU5MmY4XHU2ZjAxXHU3''@;'; put 'put ''OWE2XHU5YjVhXHU0ZWE4XHU0ZWFiXHU0ZWFjXHU0ZjliXHU0ZmEwXHU1MGQxXHU1MTQ3XHU3YWY2XHU1MTcxXHU1MWY2XHU1MzU0XHU1MzIxXHU1MzdmXHU1M2ViXHU1NWFjXHU1ODgzXHU1Y2UxXHU1ZjM3XHU1ZjRhXHU2MDJmXHU2MDUwXHU2MDZkXHU2MzFmXHU2NTU5XHU2YTRiXHU2Y2Mx''@;'; put 'put ''XHU3MmMyXHU3MmVkXHU3N2VmXHU4MGY4XHU4MTA1XHU4MjA4XHU4NTRlXHU5MGY3XHU5M2UxXHU5N2ZmXHU5OTU3XHU5YTVhXHU0ZWYwXHU1MWRkXHU1YzJkXHU2NjgxXHU2OTZkXHU1YzQwXHU2NmYyXHU2OTc1XHU3Mzg5XHU2ODUwXHU3YzgxXHU1MGM1XHU1MmU0XHU1NzQ3XHU1ZGZlXHU5''@;'; put 'put ''MzI2XHU2NWE0XHU2YjIzXHU2YjNkXHU3NDM0XHU3OTgxXHU3OWJkXHU3YjRiXHU3ZGNhXHU4MmI5XHU4M2NjXHU4ODdmXHU4OTVmXHU4YjM5XHU4ZmQxXHU5MWQxXHU1NDFmXHU5MjgwXHU0ZTVkXHU1MDM2XHU1M2U1XHU1MzNhXHU3MmQ3XHU3Mzk2XHU3N2U5XHU4MmU2XHU4ZWFmXHU5OWM2''@;'; put 'put ''XHU5OWM4XHU5OWQyXHU1MTc3XHU2MTFhXHU4NjVlXHU1NWIwXHU3YTdhXHU1MDc2XHU1YmQzXHU5MDQ3XHU5Njg1XHU0ZTMyXHU2YWRiXHU5MWU3XHU1YzUxXHU1YzQ4Il0sWyI4YzQwIiwiXHU2Mzk4XHU3YTlmXHU2YzkzXHU5Nzc0XHU4ZjYxXHU3YWFhXHU3MThhXHU5Njg4XHU3YzgyXHU2''@;'; put 'put ''ODE3XHU3ZTcwXHU2ODUxXHU5MzZjXHU1MmYyXHU1NDFiXHU4NWFiXHU4YTEzXHU3ZmE0XHU4ZWNkXHU5MGUxXHU1MzY2XHU4ODg4XHU3OTQxXHU0ZmMyXHU1MGJlXHU1MjExXHU1MTQ0XHU1NTUzXHU1NzJkXHU3M2VhXHU1NzhiXHU1OTUxXHU1ZjYyXHU1Zjg0XHU2MDc1XHU2MTc2XHU2MTY3''@;'; put 'put ''XHU2MWE5XHU2M2IyXHU2NDNhXHU2NTZjXHU2NjZmXHU2ODQyXHU2ZTEzXHU3NTY2XHU3YTNkXHU3Y2ZiXHU3ZDRjXHU3ZDk5XHU3ZTRiXHU3ZjZiXHU4MzBlXHU4MzRhXHU4NmNkXHU4YTA4XHU4YTYzXHU4YjY2XHU4ZWZkXHU5ODFhXHU5ZDhmXHU4MmI4XHU4ZmNlXHU5YmU4Il0sWyI4Yzgw''@;'; put 'put ''IiwiXHU1Mjg3XHU2MjFmXHU2NDgzXHU2ZmMwXHU5Njk5XHU2ODQxXHU1MDkxXHU2YjIwXHU2YzdhXHU2ZjU0XHU3YTc0XHU3ZDUwXHU4ODQwXHU4YTIzXHU2NzA4XHU0ZWY2XHU1MDM5XHU1MDI2XHU1MDY1XHU1MTdjXHU1MjM4XHU1MjYzXHU1NWE3XHU1NzBmXHU1ODA1XHU1YWNjXHU1ZWZh''@;'; put 'put ''XHU2MWIyXHU2MWY4XHU2MmYzXHU2MzcyXHU2OTFjXHU2YTI5XHU3MjdkXHU3MmFjXHU3MzJlXHU3ODE0XHU3ODZmXHU3ZDc5XHU3NzBjXHU4MGE5XHU4OThiXHU4YjE5XHU4Y2UyXHU4ZWQyXHU5MDYzXHU5Mzc1XHU5NjdhXHU5ODU1XHU5YTEzXHU5ZTc4XHU1MTQzXHU1MzlmXHU1M2IzXHU1''@;'; put 'put ''ZTdiXHU1ZjI2XHU2ZTFiXHU2ZTkwXHU3Mzg0XHU3M2ZlXHU3ZDQzXHU4MjM3XHU4YTAwXHU4YWZhXHU5NjUwXHU0ZTRlXHU1MDBiXHU1M2U0XHU1NDdjXHU1NmZhXHU1OWQxXHU1YjY0XHU1ZGYxXHU1ZWFiXHU1ZjI3XHU2MjM4XHU2NTQ1XHU2N2FmXHU2ZTU2XHU3MmQwXHU3Y2NhXHU4OGI0''@;'; put 'put ''XHU4MGExXHU4MGUxXHU4M2YwXHU4NjRlXHU4YTg3XHU4ZGU4XHU5MjM3XHU5NmM3XHU5ODY3XHU5ZjEzXHU0ZTk0XHU0ZTkyXHU0ZjBkXHU1MzQ4XHU1NDQ5XHU1NDNlXHU1YTJmXHU1ZjhjXHU1ZmExXHU2MDlmXHU2OGE3XHU2YThlXHU3NDVhXHU3ODgxXHU4YTllXHU4YWE0XHU4Yjc3XHU5''@;'; put 'put ''MTkwXHU0ZTVlXHU5YmM5XHU0ZWE0XHU0ZjdjXHU0ZmFmXHU1MDE5XHU1MDE2XHU1MTQ5XHU1MTZjXHU1MjlmXHU1MmI5XHU1MmZlXHU1MzlhXHU1M2UzXHU1NDExIl0sWyI4ZDQwIiwiXHU1NDBlXHU1NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3''@;'; put 'put ''XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlhXHU1ZWI3XHU1ZjE4XHU2MDUyXHU2MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNiXHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3''@;'; put 'put ''YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3ZDVlXHU3ZGIxXHU4MDE1XHU4MDAzXHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkIl0sWyI4ZDgwIiwi''@;'; put 'put ''XHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjViXHU1MmFiXHU1M2Y3XHU1NDA4XHU1OGQ1XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2''@;'; put 'put ''MGRhXHU5YWE4XHU3MmRiXHU4ZmJjXHU2YjY0XHU5ODAzXHU0ZWNhXHU1NmYwXHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2''@;'; put 'put ''XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAyXHU4YTUwXHU5Mzk2XHU4OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3''@;'; put 'put ''MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3ZDMwXHU4M2RjXHU4OGMxXHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRh''@;'; put 'put ''XHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1XHU3YTg0XHU3YjU2XHU3ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3Il0sWyI4ZTQwIiwiXHU1YmRmXHU2MmY2XHU2NGFlXHU2NGU2XHU2NzJkXHU2YmJhXHU4NWE5XHU5NmQxXHU3NjkwXHU5YmQ2XHU2''@;'; put 'put ''MzRjXHU5MzA2XHU5YmFiXHU3NmJmXHU2NjUyXHU0ZTA5XHU1MDk4XHU1M2MyXHU1YzcxXHU2MGU4XHU2NDkyXHU2NTYzXHU2ODVmXHU3MWU2XHU3M2NhXHU3NTIzXHU3Yjk3XHU3ZTgyXHU4Njk1XHU4YjgzXHU4Y2RiXHU5MTc4XHU5OTEwXHU2NWFjXHU2NmFiXHU2YjhiXHU0ZWQ1XHU0ZWQ0''@;'; put 'put ''XHU0ZjNhXHU0ZjdmXHU1MjNhXHU1M2Y4XHU1M2YyXHU1NWUzXHU1NmRiXHU1OGViXHU1OWNiXHU1OWM5XHU1OWZmXHU1YjUwXHU1YzRkXHU1ZTAyXHU1ZTJiXHU1ZmQ3XHU2MDFkXHU2MzA3XHU2NTJmXHU1YjVjXHU2NWFmXHU2NWJkXHU2NWU4XHU2NzlkXHU2YjYyIl0sWyI4ZTgwIiwiXHU2''@;'; put 'put ''YjdiXHU2YzBmXHU3MzQ1XHU3OTQ5XHU3OWMxXHU3Y2Y4XHU3ZDE5XHU3ZDJiXHU4MGEyXHU4MTAyXHU4MWYzXHU4OTk2XHU4YTVlXHU4YTY5XHU4YTY2XHU4YThjXHU4YWVlXHU4Y2M3XHU4Y2RjXHU5NmNjXHU5OGZjXHU2YjZmXHU0ZThiXHU0ZjNjXHU0ZjhkXHU1MTUwXHU1YjU3XHU1YmZh''@;'; put 'put ''XHU2MTQ4XHU2MzAxXHU2NjQyXHU2YjIxXHU2ZWNiXHU2Y2JiXHU3MjNlXHU3NGJkXHU3NWQ0XHU3OGMxXHU3OTNhXHU4MDBjXHU4MDMzXHU4MWVhXHU4NDk0XHU4ZjllXHU2YzUwXHU5ZTdmXHU1ZjBmXHU4YjU4XHU5ZDJiXHU3YWZhXHU4ZWY4XHU1YjhkXHU5NmViXHU0ZTAzXHU1M2YxXHU1''@;'; put 'put ''N2Y3XHU1OTMxXHU1YWM5XHU1YmE0XHU2MDg5XHU2ZTdmXHU2ZjA2XHU3NWJlXHU4Y2VhXHU1YjlmXHU4NTAwXHU3YmUwXHU1MDcyXHU2N2Y0XHU4MjlkXHU1YzYxXHU4NTRhXHU3ZTFlXHU4MjBlXHU1MTk5XHU1YzA0XHU2MzY4XHU4ZDY2XHU2NTljXHU3MTZlXHU3OTNlXHU3ZDE3XHU4MDA1''@;'; put 'put ''XHU4YjFkXHU4ZWNhXHU5MDZlXHU4NmM3XHU5MGFhXHU1MDFmXHU1MmZhXHU1YzNhXHU2NzUzXHU3MDdjXHU3MjM1XHU5MTRjXHU5MWM4XHU5MzJiXHU4MmU1XHU1YmMyXHU1ZjMxXHU2MGY5XHU0ZTNiXHU1M2Q2XHU1Yjg4XHU2MjRiXHU2NzMxXHU2YjhhXHU3MmU5XHU3M2UwXHU3YTJlXHU4''@;'; put 'put ''MTZiXHU4ZGEzXHU5MTUyXHU5OTk2XHU1MTEyXHU1M2Q3XHU1NDZhXHU1YmZmXHU2Mzg4XHU2YTM5XHU3ZGFjXHU5NzAwXHU1NmRhXHU1M2NlXHU1NDY4Il0sWyI4ZjQwIiwiXHU1Yjk3XHU1YzMxXHU1ZGRlXHU0ZmVlXHU2MTAxXHU2MmZlXHU2ZDMyXHU3OWMwXHU3OWNiXHU3ZDQyXHU3ZTRk''@;'; put 'put ''XHU3ZmQyXHU4MWVkXHU4MjFmXHU4NDkwXHU4ODQ2XHU4OTcyXHU4YjkwXHU4ZTc0XHU4ZjJmXHU5MDMxXHU5MTRiXHU5MTZjXHU5NmM2XHU5MTljXHU0ZWMwXHU0ZjRmXHU1MTQ1XHU1MzQxXHU1ZjkzXHU2MjBlXHU2N2Q0XHU2YzQxXHU2ZTBiXHU3MzYzXHU3ZTI2XHU5MWNkXHU5MjgzXHU1''@;'; put 'put ''M2Q0XHU1OTE5XHU1YmJmXHU2ZGQxXHU3OTVkXHU3ZTJlXHU3YzliXHU1ODdlXHU3MTlmXHU1MWZhXHU4ODUzXHU4ZmYwXHU0ZmNhXHU1Y2ZiXHU2NjI1XHU3N2FjXHU3YWUzXHU4MjFjXHU5OWZmXHU1MWM2XHU1ZmFhXHU2NWVjXHU2OTZmXHU2Yjg5XHU2ZGYzIl0sWyI4ZjgwIiwiXHU2ZTk2''@;'; put 'put ''XHU2ZjY0XHU3NmZlXHU3ZDE0XHU1ZGUxXHU5MDc1XHU5MTg3XHU5ODA2XHU1MWU2XHU1MjFkXHU2MjQwXHU2NjkxXHU2NmQ5XHU2ZTFhXHU1ZWI2XHU3ZGQyXHU3ZjcyXHU2NmY4XHU4NWFmXHU4NWY3XHU4YWY4XHU1MmE5XHU1M2Q5XHU1OTczXHU1ZThmXHU1ZjkwXHU2MDU1XHU5MmU0XHU5''@;'; put 'put ''NjY0XHU1MGI3XHU1MTFmXHU1MmRkXHU1MzIwXHU1MzQ3XHU1M2VjXHU1NGU4XHU1NTQ2XHU1NTMxXHU1NjE3XHU1OTY4XHU1OWJlXHU1YTNjXHU1YmI1XHU1YzA2XHU1YzBmXHU1YzExXHU1YzFhXHU1ZTg0XHU1ZThhXHU1ZWUwXHU1ZjcwXHU2MjdmXHU2Mjg0XHU2MmRiXHU2MzhjXHU2Mzc3''@;'; put 'put ''XHU2NjA3XHU2NjBjXHU2NjJkXHU2Njc2XHU2NzdlXHU2OGEyXHU2YTFmXHU2YTM1XHU2Y2JjXHU2ZDg4XHU2ZTA5XHU2ZTU4XHU3MTNjXHU3MTI2XHU3MTY3XHU3NWM3XHU3NzAxXHU3ODVkXHU3OTAxXHU3OTY1XHU3OWYwXHU3YWUwXHU3YjExXHU3Y2E3XHU3ZDM5XHU4MDk2XHU4M2Q2XHU4''@;'; put 'put ''NDhiXHU4NTQ5XHU4ODVkXHU4OGYzXHU4YTFmXHU4YTNjXHU4YTU0XHU4YTczXHU4YzYxXHU4Y2RlXHU5MWE0XHU5MjY2XHU5MzdlXHU5NDE4XHU5NjljXHU5Nzk4XHU0ZTBhXHU0ZTA4XHU0ZTFlXHU0ZTU3XHU1MTk3XHU1MjcwXHU1N2NlXHU1ODM0XHU1OGNjXHU1YjIyXHU1ZTM4XHU2MGM1''@;'; put 'put ''XHU2NGZlXHU2NzYxXHU2NzU2XHU2ZDQ0XHU3MmI2XHU3NTczXHU3YTYzXHU4NGI4XHU4YjcyXHU5MWI4XHU5MzIwXHU1NjMxXHU1N2Y0XHU5OGZlIl0sWyI5MDQwIiwiXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4OWU2XHU5OGRmXHU4NzU1XHU4ZmIxXHU1''@;'; put 'put ''YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1YmRkXHU1YmU5XHU1ZmMzXHU2MTRlXHU2MzJmXHU2NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUzXHU4MmFmXHU4NWFhXHU4OWFhXHU4YTNh''@;'; put 'put ''XHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJhXHU0ZWMxXHU1MjAzXHU1ODc1XHU1OGVjXHU1YzBiXHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1M2E4Il0sWyI5MDgwIiwiXHU5MDE3XHU1''@;'; put 'put ''NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3YzhiXHU3ZmUwXHU4ODcwXHU5MDQyXHU5MTU0XHU5MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5XHU2OTE5XHU4M2M1XHU5ODE3''@;'; put 'put ''XHU5NmMwXHU4OGZlXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2XHU3MDJjXHU3NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUyXHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3MjcyXHU3NTFmXHU3NmRiXHU3''@;'; put 'put ''Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4YTkzXHU4YWNiXHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRkXHU3ZTNlXHU4MTBhXHU4Y2Fj''@;'; put 'put ''XHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5XHU2M2E1XHU2NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMwXHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1ZGRkXHU2MjI2XHU2MjQ3XHU2''@;'; put 'put ''NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2N2QzXHU2ZjVjXHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3YmFkXHU3ZGRhIl0sWyI5MTQwIiwiXHU3ZTRhXHU3ZmE4XHU4MTdhXHU4MjFiXHU4MjM5XHU4NWE2XHU4YTZlXHU4Y2NlXHU4ZGY1XHU5MDc4XHU5MDc3XHU5MmFk''@;'; put 'put ''XHU5MjkxXHU5NTgzXHU5YmFlXHU1MjRkXHU1NTg0XHU2ZjM4XHU3MTM2XHU1MTY4XHU3OTg1XHU3ZTU1XHU4MWIzXHU3Y2NlXHU1NjRjXHU1ODUxXHU1Y2E4XHU2M2FhXHU2NmZlXHU2NmZkXHU2OTVhXHU3MmQ5XHU3NThmXHU3NThlXHU3OTBlXHU3OTU2XHU3OWRmXHU3Yzk3XHU3ZDIwXHU3''@;'; put 'put ''ZDQ0XHU4NjA3XHU4YTM0XHU5NjNiXHU5MDYxXHU5ZjIwXHU1MGU3XHU1Mjc1XHU1M2NjXHU1M2UyXHU1MDA5XHU1NWFhXHU1OGVlXHU1OTRmXHU3MjNkXHU1YjhiXHU1YzY0XHU1MzFkXHU2MGUzXHU2MGYzXHU2MzVjXHU2MzgzXHU2MzNmXHU2M2JiIl0sWyI5MTgwIiwiXHU2NGNkXHU2NWU5''@;'; put 'put ''XHU2NmY5XHU1ZGUzXHU2OWNkXHU2OWZkXHU2ZjE1XHU3MWU1XHU0ZTg5XHU3NWU5XHU3NmY4XHU3YTkzXHU3Y2RmXHU3ZGNmXHU3ZDljXHU4MDYxXHU4MzQ5XHU4MzU4XHU4NDZjXHU4NGJjXHU4NWZiXHU4OGM1XHU4ZDcwXHU5MDAxXHU5MDZkXHU5Mzk3XHU5NzFjXHU5YTEyXHU1MGNmXHU1''@;'; put 'put ''ODk3XHU2MThlXHU4MWQzXHU4NTM1XHU4ZDA4XHU5MDIwXHU0ZmMzXHU1MDc0XHU1MjQ3XHU1MzczXHU2MDZmXHU2MzQ5XHU2NzVmXHU2ZTJjXHU4ZGIzXHU5MDFmXHU0ZmQ3XHU1YzVlXHU4Y2NhXHU2NWNmXHU3ZDlhXHU1MzUyXHU4ODk2XHU1MTc2XHU2M2MzXHU1YjU4XHU1YjZiXHU1YzBh''@;'; put 'put ''XHU2NDBkXHU2NzUxXHU5MDVjXHU0ZWQ2XHU1OTFhXHU1OTJhXHU2YzcwXHU4YTUxXHU1NTNlXHU1ODE1XHU1OWE1XHU2MGYwXHU2MjUzXHU2N2MxXHU4MjM1XHU2OTU1XHU5NjQwXHU5OWM0XHU5YTI4XHU0ZjUzXHU1ODA2XHU1YmZlXHU4MDEwXHU1Y2IxXHU1ZTJmXHU1Zjg1XHU2MDIwXHU2''@;'; put 'put ''MTRiXHU2MjM0XHU2NmZmXHU2Y2YwXHU2ZWRlXHU4MGNlXHU4MTdmXHU4MmQ0XHU4ODhiXHU4Y2I4XHU5MDAwXHU5MDJlXHU5NjhhXHU5ZWRiXHU5YmRiXHU0ZWUzXHU1M2YwXHU1OTI3XHU3YjJjXHU5MThkXHU5ODRjXHU5ZGY5XHU2ZWRkXHU3MDI3XHU1MzUzXHU1NTQ0XHU1Yjg1XHU2MjU4''@;'; put 'put ''XHU2MjllXHU2MmQzXHU2Y2EyXHU2ZmVmXHU3NDIyXHU4YTE3XHU5NDM4XHU2ZmMxXHU4YWZlXHU4MzM4XHU1MWU3XHU4NmY4XHU1M2VhIl0sWyI5MjQwIiwiXHU1M2U5XHU0ZjQ2XHU5MDU0XHU4ZmIwXHU1OTZhXHU4MTMxXHU1ZGZkXHU3YWVhXHU4ZmJmXHU2OGRhXHU4YzM3XHU3MmY4XHU5''@;'; put 'put ''YzQ4XHU2YTNkXHU4YWIwXHU0ZTM5XHU1MzU4XHU1NjA2XHU1NzY2XHU2MmM1XHU2M2EyXHU2NWU2XHU2YjRlXHU2ZGUxXHU2ZTViXHU3MGFkXHU3N2VkXHU3YWVmXHU3YmFhXHU3ZGJiXHU4MDNkXHU4MGM2XHU4NmNiXHU4YTk1XHU5MzViXHU1NmUzXHU1OGM3XHU1ZjNlXHU2NWFkXHU2Njk2''@;'; put 'put ''XHU2YTgwXHU2YmI1XHU3NTM3XHU4YWM3XHU1MDI0XHU3N2U1XHU1NzMwXHU1ZjFiXHU2MDY1XHU2NjdhXHU2YzYwXHU3NWY0XHU3YTFhXHU3ZjZlXHU4MWY0XHU4NzE4XHU5MDQ1XHU5OWIzXHU3YmM5XHU3NTVjXHU3YWY5XHU3YjUxXHU4NGM0Il0sWyI5MjgwIiwiXHU5MDEwXHU3OWU5XHU3''@;'; put 'put ''YTkyXHU4MzM2XHU1YWUxXHU3NzQwXHU0ZTJkXHU0ZWYyXHU1Yjk5XHU1ZmUwXHU2MmJkXHU2NjNjXHU2N2YxXHU2Y2U4XHU4NjZiXHU4ODc3XHU4YTNiXHU5MTRlXHU5MmYzXHU5OWQwXHU2YTE3XHU3MDI2XHU3MzJhXHU4MmU3XHU4NDU3XHU4Y2FmXHU0ZTAxXHU1MTQ2XHU1MWNiXHU1NThi''@;'; put 'put ''XHU1YmY1XHU1ZTE2XHU1ZTMzXHU1ZTgxXHU1ZjE0XHU1ZjM1XHU1ZjZiXHU1ZmI0XHU2MWYyXHU2MzExXHU2NmEyXHU2NzFkXHU2ZjZlXHU3MjUyXHU3NTNhXHU3NzNhXHU4MDc0XHU4MTM5XHU4MTc4XHU4Nzc2XHU4YWJmXHU4YWRjXHU4ZDg1XHU4ZGYzXHU5MjlhXHU5NTc3XHU5ODAyXHU5''@;'; put 'put ''Y2U1XHU1MmM1XHU2MzU3XHU3NmY0XHU2NzE1XHU2Yzg4XHU3M2NkXHU4Y2MzXHU5M2FlXHU5NjczXHU2ZDI1XHU1ODljXHU2OTBlXHU2OWNjXHU4ZmZkXHU5MzlhXHU3NWRiXHU5MDFhXHU1ODVhXHU2ODAyXHU2M2I0XHU2OWZiXHU0ZjQzXHU2ZjJjXHU2N2Q4XHU4ZmJiXHU4NTI2XHU3ZGI0''@;'; put 'put ''XHU5MzU0XHU2OTNmXHU2ZjcwXHU1NzZhXHU1OGY3XHU1YjJjXHU3ZDJjXHU3MjJhXHU1NDBhXHU5MWUzXHU5ZGI0XHU0ZWFkXHU0ZjRlXHU1MDVjXHU1MDc1XHU1MjQzXHU4YzllXHU1NDQ4XHU1ODI0XHU1YjlhXHU1ZTFkXHU1ZTk1XHU1ZWFkXHU1ZWY3XHU1ZjFmXHU2MDhjXHU2MmI1XHU2''@;'; put 'put ''MzNhXHU2M2QwXHU2OGFmXHU2YzQwXHU3ODg3XHU3OThlXHU3YTBiXHU3ZGUwXHU4MjQ3XHU4YTAyXHU4YWU2XHU4ZTQ0XHU5MDEzIl0sWyI5MzQwIiwiXHU5MGI4XHU5MTJkXHU5MWQ4XHU5ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2Qx''@;'; put 'put ''XHU2ZWJhXHU1NGYyXHU1ZmI5XHU2NGE0XHU4ZjRkXHU4ZmVkXHU5MjQ0XHU1MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4Y2JjXHU4ZWUyXHU5ODViXHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1''@;'; put 'put ''ODU3XHU1OWFjXHU1YzYwXHU1ZjkyXHU2NTk3XHU2NzVjXHU2ZTIxXHU3NjdiXHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFhXHU1ZWE2XHU1NzFmXHU1OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjIl0sWyI5MzgwIiwiXHU1MWNkXHU1MjAwXHU1NTEw''@;'; put 'put ''XHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2Mjk1XHU2NDJkXHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2ZDliXHU3MDZmXHU3MWM4XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1''@;'; put 'put ''MjMwXHU4NDYzXHU4NTY5XHU4NWU0XHU4YTBlXHU4YjA0XHU4YzQ2XHU4ZTBmXHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1XHU1NDBjXHU1ODAyXHU1YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUz''@;'; put 'put ''XHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNmXHU1Zjk3XHU1ZmIzXHU2ZDljXHU3Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1MWY4XHU3YTgxXHU2OTM0XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2''@;'; put 'put ''MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5MDQxXHU5ODEzXHU1NDUxXHU2NmM3XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4XHU2MzdhXHU5MzRiXHU2OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVk''@;'; put 'put ''XHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5XHU1MzAyXHU4Y2QxXHU4MDg5XHU4Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1Il0sWyI5NDQwIiwiXHU1OTgyXHU1YzNmXHU5N2VlXHU0ZWZiXHU1OThhXHU1ZmNkXHU4YThkXHU2ZmUxXHU3OWIwXHU3OTYyXHU1YmU3XHU4NDcxXHU3MzJiXHU3''@;'; put 'put ''MWIxXHU1ZTc0XHU1ZmY1XHU2MzdiXHU2NDlhXHU3MWMzXHU3Yzk4XHU0ZTQzXHU1ZWZjXHU0ZTRiXHU1N2RjXHU1NmEyXHU2MGE5XHU2ZmMzXHU3ZDBkXHU4MGZkXHU4MTMzXHU4MWJmXHU4ZmIyXHU4OTk3XHU4NmE0XHU1ZGY0XHU2MjhhXHU2NGFkXHU4OTg3XHU2Nzc3XHU2Y2UyXHU2ZDNl''@;'; put 'put ''XHU3NDM2XHU3ODM0XHU1YTQ2XHU3Zjc1XHU4MmFkXHU5OWFjXHU0ZmYzXHU1ZWMzXHU2MmRkXHU2MzkyXHU2NTU3XHU2NzZmXHU3NmMzXHU3MjRjXHU4MGNjXHU4MGJhXHU4ZjI5XHU5MTRkXHU1MDBkXHU1N2Y5XHU1YTkyXHU2ODg1Il0sWyI5NDgwIiwiXHU2OTczXHU3MTY0XHU3MmZkXHU4''@;'; put 'put ''Y2I3XHU1OGYyXHU4Y2UwXHU5NjZhXHU5MDE5XHU4NzdmXHU3OWU0XHU3N2U3XHU4NDI5XHU0ZjJmXHU1MjY1XHU1MzVhXHU2MmNkXHU2N2NmXHU2Y2NhXHU3NjdkXHU3Yjk0XHU3Yzk1XHU4MjM2XHU4NTg0XHU4ZmViXHU2NmRkXHU2ZjIwXHU3MjA2XHU3ZTFiXHU4M2FiXHU5OWMxXHU5ZWE2''@;'; put 'put ''XHU1MWZkXHU3YmIxXHU3ODcyXHU3YmI4XHU4MDg3XHU3YjQ4XHU2YWU4XHU1ZTYxXHU4MDhjXHU3NTUxXHU3NTYwXHU1MTZiXHU5MjYyXHU2ZThjXHU3NjdhXHU5MTk3XHU5YWVhXHU0ZjEwXHU3ZjcwXHU2MjljXHU3YjRmXHU5NWE1XHU5Y2U5XHU1NjdhXHU1ODU5XHU4NmU0XHU5NmJjXHU0''@;'; put 'put ''ZjM0XHU1MjI0XHU1MzRhXHU1M2NkXHU1M2RiXHU1ZTA2XHU2NDJjXHU2NTkxXHU2NzdmXHU2YzNlXHU2YzRlXHU3MjQ4XHU3MmFmXHU3M2VkXHU3NTU0XHU3ZTQxXHU4MjJjXHU4NWU5XHU4Y2E5XHU3YmM0XHU5MWM2XHU3MTY5XHU5ODEyXHU5OGVmXHU2MzNkXHU2NjY5XHU3NTZhXHU3NmU0''@;'; put 'put ''XHU3OGQwXHU4NTQzXHU4NmVlXHU1MzJhXHU1MzUxXHU1NDI2XHU1OTgzXHU1ZTg3XHU1ZjdjXHU2MGIyXHU2MjQ5XHU2Mjc5XHU2MmFiXHU2NTkwXHU2YmQ0XHU2Y2NjXHU3NWIyXHU3NmFlXHU3ODkxXHU3OWQ4XHU3ZGNiXHU3Zjc3XHU4MGE1XHU4OGFiXHU4YWI5XHU4Y2JiXHU5MDdmXHU5''@;'; put 'put ''NzVlXHU5OGRiXHU2YTBiXHU3YzM4XHU1MDk5XHU1YzNlXHU1ZmFlXHU2Nzg3XHU2YmQ4XHU3NDM1XHU3NzA5XHU3ZjhlIl0sWyI5NTQwIiwiXHU5ZjNiXHU2N2NhXHU3YTE3XHU1MzM5XHU3NThiXHU5YWVkXHU1ZjY2XHU4MTlkXHU4M2YxXHU4MDk4XHU1ZjNjXHU1ZmM1XHU3NTYyXHU3YjQ2''@;'; put 'put ''XHU5MDNjXHU2ODY3XHU1OWViXHU1YTliXHU3ZDEwXHU3NjdlXHU4YjJjXHU0ZmY1XHU1ZjZhXHU2YTE5XHU2YzM3XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4YTU1XHU4Yzc5XHU1ZWRmXHU2M2NmXHU3NWM1XHU3OWQyXHU4MmQ3XHU5MzI4XHU5MmYyXHU4NDljXHU4NmVkXHU5YzJkXHU1''@;'; put 'put ''NGMxXHU1ZjZjXHU2NThjXHU2ZDVjXHU3MDE1XHU4Y2E3XHU4Y2QzXHU5ODNiXHU2NTRmXHU3NGY2XHU0ZTBkXHU0ZWQ4XHU1N2UwXHU1OTJiXHU1YTY2XHU1YmNjXHU1MWE4XHU1ZTAzXHU1ZTljXHU2MDE2XHU2Mjc2XHU2NTc3Il0sWyI5NTgwIiwiXHU2NWE3XHU2NjZlXHU2ZDZlXHU3MjM2''@;'; put 'put ''XHU3YjI2XHU4MTUwXHU4MTlhXHU4Mjk5XHU4YjVjXHU4Y2EwXHU4Y2U2XHU4ZDc0XHU5NjFjXHU5NjQ0XHU0ZmFlXHU2NGFiXHU2YjY2XHU4MjFlXHU4NDYxXHU4NTZhXHU5MGU4XHU1YzAxXHU2OTUzXHU5OGE4XHU4NDdhXHU4NTU3XHU0ZjBmXHU1MjZmXHU1ZmE5XHU1ZTQ1XHU2NzBkXHU3''@;'; put 'put ''OThmXHU4MTc5XHU4OTA3XHU4OTg2XHU2ZGY1XHU1ZjE3XHU2MjU1XHU2Y2I4XHU0ZWNmXHU3MjY5XHU5YjkyXHU1MjA2XHU1NDNiXHU1Njc0XHU1OGIzXHU2MWE0XHU2MjZlXHU3MTFhXHU1OTZlXHU3Yzg5XHU3Y2RlXHU3ZDFiXHU5NmYwXHU2NTg3XHU4MDVlXHU0ZTE5XHU0Zjc1XHU1MTc1''@;'; put 'put ''XHU1ODQwXHU1ZTYzXHU1ZTczXHU1ZjBhXHU2N2M0XHU0ZTI2XHU4NTNkXHU5NTg5XHU5NjViXHU3YzczXHU5ODAxXHU1MGZiXHU1OGMxXHU3NjU2XHU3OGE3XHU1MjI1XHU3N2E1XHU4NTExXHU3Yjg2XHU1MDRmXHU1OTA5XHU3MjQ3XHU3YmM3XHU3ZGU4XHU4ZmJhXHU4ZmQ0XHU5MDRkXHU0''@;'; put 'put ''ZmJmXHU1MmM5XHU1YTI5XHU1ZjAxXHU5N2FkXHU0ZmRkXHU4MjE3XHU5MmVhXHU1NzAzXHU2MzU1XHU2YjY5XHU3NTJiXHU4OGRjXHU4ZjE0XHU3YTQyXHU1MmRmXHU1ODkzXHU2MTU1XHU2MjBhXHU2NmFlXHU2YmNkXHU3YzNmXHU4M2U5XHU1MDIzXHU0ZmY4XHU1MzA1XHU1NDQ2XHU1ODMx''@;'; put 'put ''XHU1OTQ5XHU1YjlkXHU1Y2YwXHU1Y2VmXHU1ZDI5XHU1ZTk2XHU2MmIxXHU2MzY3XHU2NTNlXHU2NWI5XHU2NzBiIl0sWyI5NjQwIiwiXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5''@;'; put 'put ''MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1MDhkXHU1MjU2XHU1NzRhXHU1OWE4XHU1ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAwXHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIw''@;'; put 'put ''XHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIyXHU2NzM0XHU3MjY3XHU3NzY2XHU3YTQ2XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2Il0sWyI5NjgwIiwiXHU2NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1''@;'; put 'put ''N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1XHU4MTljXHU2Nzk1XHU5YmFhXHU2N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJmXHU0ZTA3XHU2MTYyXHU2ZTgwXHU2ZjJi''@;'; put 'put ''XHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1XHU1Y2FjXHU1YmM2XHU4NzFjXHU2ZTRhXHU4NGQxXHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1''@;'; put 'put ''MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5Mjk4XHU5Y2Y0XHU1OWVhXHU3MjVkXHU2ZWM1XHU1MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFiXHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5''@;'; put 'put ''XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZmXHU5OTA1XHU1YzI0XHU2MjNiXHU3YzdlXHU4Y2IwXHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4''@;'; put 'put ''NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5NDUzXHU2MTA5XHU2MTA4XHU2Y2I5XHU3NjUyIl0sWyI5NzQwIiwiXHU4YWVkXHU4ZjM4XHU1NTJmXHU0ZjUxXHU1MTJhXHU1MmM3XHU1M2NiXHU1YmE1XHU1ZTdkXHU2MGEwXHU2MTgyXHU2M2Q2XHU2NzA5XHU2N2RhXHU2ZTY3''@;'; put 'put ''XHU2ZDhjXHU3MzM2XHU3MzM3XHU3NTMxXHU3OTUwXHU4OGQ1XHU4YTk4XHU5MDRhXHU5MDkxXHU5MGY1XHU5NmM0XHU4NzhkXHU1OTE1XHU0ZTg4XHU0ZjU5XHU0ZTBlXHU4YTg5XHU4ZjNmXHU5ODEwXHU1MGFkXHU1ZTdjXHU1OTk2XHU1YmI5XHU1ZWI4XHU2M2RhXHU2M2ZhXHU2NGMxXHU2''@;'; put 'put ''NmRjXHU2OTRhXHU2OWQ4XHU2ZDBiXHU2ZWI2XHU3MTk0XHU3NTI4XHU3YWFmXHU3ZjhhXHU4MDAwXHU4NDQ5XHU4NGM5XHU4OTgxXHU4YjIxXHU4ZTBhXHU5MDY1XHU5NjdkXHU5OTBhXHU2MTdlXHU2MjkxXHU2YjMyIl0sWyI5NzgwIiwiXHU2YzgzXHU2ZDc0XHU3ZmNjXHU3ZmZjXHU2ZGMw''@;'; put 'put ''XHU3Zjg1XHU4N2JhXHU4OGY4XHU2NzY1XHU4M2IxXHU5ODNjXHU5NmY3XHU2ZDFiXHU3ZDYxXHU4NDNkXHU5MTZhXHU0ZTcxXHU1Mzc1XHU1ZDUwXHU2YjA0XHU2ZmViXHU4NWNkXHU4NjJkXHU4OWE3XHU1MjI5XHU1NDBmXHU1YzY1XHU2NzRlXHU2OGE4XHU3NDA2XHU3NDgzXHU3NWUyXHU4''@;'; put 'put ''OGNmXHU4OGUxXHU5MWNjXHU5NmUyXHU5Njc4XHU1ZjhiXHU3Mzg3XHU3YWNiXHU4NDRlXHU2M2EwXHU3NTY1XHU1Mjg5XHU2ZDQxXHU2ZTljXHU3NDA5XHU3NTU5XHU3ODZiXHU3YzkyXHU5Njg2XHU3YWRjXHU5ZjhkXHU0ZmI2XHU2MTZlXHU2NWM1XHU4NjVjXHU0ZTg2XHU0ZWFlXHU1MGRh''@;'; put 'put ''XHU0ZTIxXHU1MWNjXHU1YmVlXHU2NTk5XHU2ODgxXHU2ZGJjXHU3MzFmXHU3NjQyXHU3N2FkXHU3YTFjXHU3Y2U3XHU4MjZmXHU4YWQyXHU5MDdjXHU5MWNmXHU5Njc1XHU5ODE4XHU1MjliXHU3ZGQxXHU1MDJiXHU1Mzk4XHU2Nzk3XHU2ZGNiXHU3MWQwXHU3NDMzXHU4MWU4XHU4ZjJhXHU5''@;'; put 'put ''NmEzXHU5YzU3XHU5ZTlmXHU3NDYwXHU1ODQxXHU2ZDk5XHU3ZDJmXHU5ODVlXHU0ZWU0XHU0ZjM2XHU0ZjhiXHU1MWI3XHU1MmIxXHU1ZGJhXHU2MDFjXHU3M2IyXHU3OTNjXHU4MmQzXHU5MjM0XHU5NmI3XHU5NmY2XHU5NzBhXHU5ZTk3XHU5ZjYyXHU2NmE2XHU2Yjc0XHU1MjE3XHU1MmEz''@;'; put 'put ''XHU3MGM4XHU4OGMyXHU1ZWM5XHU2MDRiXHU2MTkwXHU2ZjIzXHU3MTQ5XHU3YzNlXHU3ZGY0XHU4MDZmIl0sWyI5ODQwIiwiXHU4NGVlXHU5MDIzXHU5MzJjXHU1NDQyXHU5YjZmXHU2YWQzXHU3MDg5XHU4Y2MyXHU4ZGVmXHU5NzMyXHU1MmI0XHU1YTQxXHU1ZWNhXHU1ZjA0XHU2NzE3XHU2''@;'; put 'put ''OTdjXHU2OTk0XHU2ZDZhXHU2ZjBmXHU3MjYyXHU3MmZjXHU3YmVkXHU4MDAxXHU4MDdlXHU4NzRiXHU5MGNlXHU1MTZkXHU5ZTkzXHU3OTg0XHU4MDhiXHU5MzMyXHU4YWQ2XHU1MDJkXHU1NDhjXHU4YTcxXHU2YjZhXHU4Y2M0XHU4MTA3XHU2MGQxXHU2N2EwXHU5ZGYyXHU0ZTk5XHU0ZTk4''@;'; put 'put ''XHU5YzEwXHU4YTZiXHU4NWMxXHU4NTY4XHU2OTAwXHU2ZTdlXHU3ODk3XHU4MTU1Il0sWyI5ODlmIiwiXHU1ZjBjXHU0ZTEwXHU0ZTE1XHU0ZTJhXHU0ZTMxXHU0ZTM2XHU0ZTNjXHU0ZTNmXHU0ZTQyXHU0ZTU2XHU0ZTU4XHU0ZTgyXHU0ZTg1XHU4YzZiXHU0ZThhXHU4MjEyXHU1ZjBkXHU0''@;'; put 'put ''ZThlXHU0ZTllXHU0ZTlmXHU0ZWEwXHU0ZWEyXHU0ZWIwXHU0ZWIzXHU0ZWI2XHU0ZWNlXHU0ZWNkXHU0ZWM0XHU0ZWM2XHU0ZWMyXHU0ZWQ3XHU0ZWRlXHU0ZWVkXHU0ZWRmXHU0ZWY3XHU0ZjA5XHU0ZjVhXHU0ZjMwXHU0ZjViXHU0ZjVkXHU0ZjU3XHU0ZjQ3XHU0Zjc2XHU0Zjg4XHU0Zjhm''@;'; put 'put ''XHU0Zjk4XHU0ZjdiXHU0ZjY5XHU0ZjcwXHU0ZjkxXHU0ZjZmXHU0Zjg2XHU0Zjk2XHU1MTE4XHU0ZmQ0XHU0ZmRmXHU0ZmNlXHU0ZmQ4XHU0ZmRiXHU0ZmQxXHU0ZmRhXHU0ZmQwXHU0ZmU0XHU0ZmU1XHU1MDFhXHU1MDI4XHU1MDE0XHU1MDJhXHU1MDI1XHU1MDA1XHU0ZjFjXHU0ZmY2XHU1''@;'; put 'put ''MDIxXHU1MDI5XHU1MDJjXHU0ZmZlXHU0ZmVmXHU1MDExXHU1MDA2XHU1MDQzXHU1MDQ3XHU2NzAzXHU1MDU1XHU1MDUwXHU1MDQ4XHU1MDVhXHU1MDU2XHU1MDZjXHU1MDc4XHU1MDgwXHU1MDlhXHU1MDg1XHU1MGI0XHU1MGIyIl0sWyI5OTQwIiwiXHU1MGM5XHU1MGNhXHU1MGIzXHU1MGMy''@;'; put 'put ''XHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVlXHU1MGY5XHU1MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1MTE2XHU1MTE1XHU1MTE0XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3YWY4XHU1''@;'; put 'put ''MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1MThjXHU1MTg5XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1XHU1MTk2XHU1MWE0XHU1MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5XHU1MWRi''@;'; put 'put ''XHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkIl0sWyI5OTgwIiwiXHU1MWYwXHU1MWY1XHU1MWZlXHU1MjA0XHU1MjBiXHU1MjE0XHU1MjBlXHU1MjI3XHU1MjJhXHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1''@;'; put 'put ''MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4XHU1MjkxXHU4ZmE4XHU4ZmE3XHU1MmFjXHU1MmFkXHU1MmJjXHU1MmI1XHU1MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2''@;'; put 'put ''XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1XHU1MzFhXHU1MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1MzQwXHU1MzQ2XHU1MzQ1XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1''@;'; put 'put ''M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1M2MzXHU3YzEyXHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2VlXHU1M2U4XHU1M2VkXHU1M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhm''@;'; put 'put ''XHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcwXHU1NDkyXHU1NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1NDg2XHU1NGM3XHU1NGEyXHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4Il0sWyI5YTQwIiwiXHU1NGFiXHU1NGMyXHU1NGE0XHU1NGJlXHU1''@;'; put 'put ''NGJjXHU1NGQ4XHU1NGU1XHU1NGU2XHU1NTBmXHU1NTE0XHU1NGZkXHU1NGVlXHU1NGVkXHU1NGZhXHU1NGUyXHU1NTM5XHU1NTQwXHU1NTYzXHU1NTRjXHU1NTJlXHU1NTVjXHU1NTQ1XHU1NTU2XHU1NTU3XHU1NTM4XHU1NTMzXHU1NTVkXHU1NTk5XHU1NTgwXHU1NGFmXHU1NThhXHU1NTlm''@;'; put 'put ''XHU1NTdiXHU1NTdlXHU1NTk4XHU1NTllXHU1NWFlXHU1NTdjXHU1NTgzXHU1NWE5XHU1NTg3XHU1NWE4XHU1NWRhXHU1NWM1XHU1NWRmXHU1NWM0XHU1NWRjXHU1NWU0XHU1NWQ0XHU1NjE0XHU1NWY3XHU1NjE2XHU1NWZlXHU1NWZkXHU1NjFiXHU1NWY5XHU1NjRlXHU1NjUwXHU3MWRmXHU1''@;'; put 'put ''NjM0XHU1NjM2XHU1NjMyXHU1NjM4Il0sWyI5YTgwIiwiXHU1NjZiXHU1NjY0XHU1NjJmXHU1NjZjXHU1NjZhXHU1Njg2XHU1NjgwXHU1NjhhXHU1NmEwXHU1Njk0XHU1NjhmXHU1NmE1XHU1NmFlXHU1NmI2XHU1NmI0XHU1NmMyXHU1NmJjXHU1NmMxXHU1NmMzXHU1NmMwXHU1NmM4XHU1NmNl''@;'; put 'put ''XHU1NmQxXHU1NmQzXHU1NmQ3XHU1NmVlXHU1NmY5XHU1NzAwXHU1NmZmXHU1NzA0XHU1NzA5XHU1NzA4XHU1NzBiXHU1NzBkXHU1NzEzXHU1NzE4XHU1NzE2XHU1NWM3XHU1NzFjXHU1NzI2XHU1NzM3XHU1NzM4XHU1NzRlXHU1NzNiXHU1NzQwXHU1NzRmXHU1NzY5XHU1N2MwXHU1Nzg4XHU1''@;'; put 'put ''NzYxXHU1NzdmXHU1Nzg5XHU1NzkzXHU1N2EwXHU1N2IzXHU1N2E0XHU1N2FhXHU1N2IwXHU1N2MzXHU1N2M2XHU1N2Q0XHU1N2QyXHU1N2QzXHU1ODBhXHU1N2Q2XHU1N2UzXHU1ODBiXHU1ODE5XHU1ODFkXHU1ODcyXHU1ODIxXHU1ODYyXHU1ODRiXHU1ODcwXHU2YmMwXHU1ODUyXHU1ODNk''@;'; put 'put ''XHU1ODc5XHU1ODg1XHU1OGI5XHU1ODlmXHU1OGFiXHU1OGJhXHU1OGRlXHU1OGJiXHU1OGI4XHU1OGFlXHU1OGM1XHU1OGQzXHU1OGQxXHU1OGQ3XHU1OGQ5XHU1OGQ4XHU1OGU1XHU1OGRjXHU1OGU0XHU1OGRmXHU1OGVmXHU1OGZhXHU1OGY5XHU1OGZiXHU1OGZjXHU1OGZkXHU1OTAyXHU1''@;'; put 'put ''OTBhXHU1OTEwXHU1OTFiXHU2OGE2XHU1OTI1XHU1OTJjXHU1OTJkXHU1OTMyXHU1OTM4XHU1OTNlXHU3YWQyXHU1OTU1XHU1OTUwXHU1OTRlXHU1OTVhXHU1OTU4XHU1OTYyXHU1OTYwXHU1OTY3XHU1OTZjXHU1OTY5Il0sWyI5YjQwIiwiXHU1OTc4XHU1OTgxXHU1OTlkXHU0ZjVlXHU0ZmFi''@;'; put 'put ''XHU1OWEzXHU1OWIyXHU1OWM2XHU1OWU4XHU1OWRjXHU1OThkXHU1OWQ5XHU1OWRhXHU1YTI1XHU1YTFmXHU1YTExXHU1YTFjXHU1YTA5XHU1YTFhXHU1YTQwXHU1YTZjXHU1YTQ5XHU1YTM1XHU1YTM2XHU1YTYyXHU1YTZhXHU1YTlhXHU1YWJjXHU1YWJlXHU1YWNiXHU1YWMyXHU1YWJkXHU1''@;'; put 'put ''YWUzXHU1YWQ3XHU1YWU2XHU1YWU5XHU1YWQ2XHU1YWZhXHU1YWZiXHU1YjBjXHU1YjBiXHU1YjE2XHU1YjMyXHU1YWQwXHU1YjJhXHU1YjM2XHU1YjNlXHU1YjQzXHU1YjQ1XHU1YjQwXHU1YjUxXHU1YjU1XHU1YjVhXHU1YjViXHU1YjY1XHU1YjY5XHU1YjcwXHU1YjczXHU1Yjc1XHU1Yjc4''@;'; put 'put ''XHU2NTg4XHU1YjdhXHU1YjgwIl0sWyI5YjgwIiwiXHU1YjgzXHU1YmE2XHU1YmI4XHU1YmMzXHU1YmM3XHU1YmM5XHU1YmQ0XHU1YmQwXHU1YmU0XHU1YmU2XHU1YmUyXHU1YmRlXHU1YmU1XHU1YmViXHU1YmYwXHU1YmY2XHU1YmYzXHU1YzA1XHU1YzA3XHU1YzA4XHU1YzBkXHU1YzEzXHU1''@;'; put 'put ''YzIwXHU1YzIyXHU1YzI4XHU1YzM4XHU1YzM5XHU1YzQxXHU1YzQ2XHU1YzRlXHU1YzUzXHU1YzUwXHU1YzRmXHU1YjcxXHU1YzZjXHU1YzZlXHU0ZTYyXHU1Yzc2XHU1Yzc5XHU1YzhjXHU1YzkxXHU1Yzk0XHU1OTliXHU1Y2FiXHU1Y2JiXHU1Y2I2XHU1Y2JjXHU1Y2I3XHU1Y2M1XHU1Y2Jl''@;'; put 'put ''XHU1Y2M3XHU1Y2Q5XHU1Y2U5XHU1Y2ZkXHU1Y2ZhXHU1Y2VkXHU1ZDhjXHU1Y2VhXHU1ZDBiXHU1ZDE1XHU1ZDE3XHU1ZDVjXHU1ZDFmXHU1ZDFiXHU1ZDExXHU1ZDE0XHU1ZDIyXHU1ZDFhXHU1ZDE5XHU1ZDE4XHU1ZDRjXHU1ZDUyXHU1ZDRlXHU1ZDRiXHU1ZDZjXHU1ZDczXHU1ZDc2XHU1''@;'; put 'put ''ZDg3XHU1ZDg0XHU1ZDgyXHU1ZGEyXHU1ZDlkXHU1ZGFjXHU1ZGFlXHU1ZGJkXHU1ZDkwXHU1ZGI3XHU1ZGJjXHU1ZGM5XHU1ZGNkXHU1ZGQzXHU1ZGQyXHU1ZGQ2XHU1ZGRiXHU1ZGViXHU1ZGYyXHU1ZGY1XHU1ZTBiXHU1ZTFhXHU1ZTE5XHU1ZTExXHU1ZTFiXHU1ZTM2XHU1ZTM3XHU1ZTQ0''@;'; put 'put ''XHU1ZTQzXHU1ZTQwXHU1ZTRlXHU1ZTU3XHU1ZTU0XHU1ZTVmXHU1ZTYyXHU1ZTY0XHU1ZTQ3XHU1ZTc1XHU1ZTc2XHU1ZTdhXHU5ZWJjXHU1ZTdmXHU1ZWEwXHU1ZWMxXHU1ZWMyXHU1ZWM4XHU1ZWQwXHU1ZWNmIl0sWyI5YzQwIiwiXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1''@;'; put 'put ''ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5XHU1ZWVjXHU1ZWYxXHU1ZWYzXHU1ZWYwXHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2''@;'; put 'put ''XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1ZjZkXHU1ZjczXHU1Zjc3XHU1ZjgzXHU1ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1''@;'; put 'put ''ZmZmXHU2MDIxXHU2MDYwIl0sWyI5YzgwIiwiXHU2MDE5XHU2MDEwXHU2MDI5XHU2MDBlXHU2MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQy''@;'; put 'put ''XHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2MDhkXHU2MGU3XHU2MDgzXHU2MDlhXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2''@;'; put 'put ''MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0XHU2MGZhXHU2MTAzXHU2MTIxXHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJjXHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5''@;'; put 'put ''XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2MTY1XHU2MTcxXHU2MTVmXHU2MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2''@;'; put 'put ''MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2XHU2MWUzXHU2MWY2XHU2MWZhXHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFiIl0sWyI5ZDQwIiwiXHU2MjFlXHU2MjIxXHU2MjJhXHU2MjJlXHU2MjMwXHU2MjMy''@;'; put 'put ''XHU2MjMzXHU2MjQxXHU2MjRlXHU2MjVlXHU2MjYzXHU2MjViXHU2MjYwXHU2MjY4XHU2MjdjXHU2MjgyXHU2Mjg5XHU2MjdlXHU2MjkyXHU2MjkzXHU2Mjk2XHU2MmQ0XHU2MjgzXHU2Mjk0XHU2MmQ3XHU2MmQxXHU2MmJiXHU2MmNmXHU2MmZmXHU2MmM2XHU2NGQ0XHU2MmM4XHU2MmRjXHU2''@;'; put 'put ''MmNjXHU2MmNhXHU2MmMyXHU2MmM3XHU2MjliXHU2MmM5XHU2MzBjXHU2MmVlXHU2MmYxXHU2MzI3XHU2MzAyXHU2MzA4XHU2MmVmXHU2MmY1XHU2MzUwXHU2MzNlXHU2MzRkXHU2NDFjXHU2MzRmXHU2Mzk2XHU2MzhlXHU2MzgwXHU2M2FiXHU2Mzc2XHU2M2EzXHU2MzhmXHU2Mzg5XHU2Mzlm''@;'; put 'put ''XHU2M2I1XHU2MzZiIl0sWyI5ZDgwIiwiXHU2MzY5XHU2M2JlXHU2M2U5XHU2M2MwXHU2M2M2XHU2M2UzXHU2M2M5XHU2M2QyXHU2M2Y2XHU2M2M0XHU2NDE2XHU2NDM0XHU2NDA2XHU2NDEzXHU2NDI2XHU2NDM2XHU2NTFkXHU2NDE3XHU2NDI4XHU2NDBmXHU2NDY3XHU2NDZmXHU2NDc2XHU2''@;'; put 'put ''NDRlXHU2NTJhXHU2NDk1XHU2NDkzXHU2NGE1XHU2NGE5XHU2NDg4XHU2NGJjXHU2NGRhXHU2NGQyXHU2NGM1XHU2NGM3XHU2NGJiXHU2NGQ4XHU2NGMyXHU2NGYxXHU2NGU3XHU4MjA5XHU2NGUwXHU2NGUxXHU2MmFjXHU2NGUzXHU2NGVmXHU2NTJjXHU2NGY2XHU2NGY0XHU2NGYyXHU2NGZh''@;'; put 'put ''XHU2NTAwXHU2NGZkXHU2NTE4XHU2NTFjXHU2NTA1XHU2NTI0XHU2NTIzXHU2NTJiXHU2NTM0XHU2NTM1XHU2NTM3XHU2NTM2XHU2NTM4XHU3NTRiXHU2NTQ4XHU2NTU2XHU2NTU1XHU2NTRkXHU2NTU4XHU2NTVlXHU2NTVkXHU2NTcyXHU2NTc4XHU2NTgyXHU2NTgzXHU4YjhhXHU2NTliXHU2''@;'; put 'put ''NTlmXHU2NWFiXHU2NWI3XHU2NWMzXHU2NWM2XHU2NWMxXHU2NWM0XHU2NWNjXHU2NWQyXHU2NWRiXHU2NWQ5XHU2NWUwXHU2NWUxXHU2NWYxXHU2NzcyXHU2NjBhXHU2NjAzXHU2NWZiXHU2NzczXHU2NjM1XHU2NjM2XHU2NjM0XHU2NjFjXHU2NjRmXHU2NjQ0XHU2NjQ5XHU2NjQxXHU2NjVl''@;'; put 'put ''XHU2NjVkXHU2NjY0XHU2NjY3XHU2NjY4XHU2NjVmXHU2NjYyXHU2NjcwXHU2NjgzXHU2Njg4XHU2NjhlXHU2Njg5XHU2Njg0XHU2Njk4XHU2NjlkXHU2NmMxXHU2NmI5XHU2NmM5XHU2NmJlXHU2NmJjIl0sWyI5ZTQwIiwiXHU2NmM0XHU2NmI4XHU2NmQ2XHU2NmRhXHU2NmUwXHU2NjNmXHU2''@;'; put 'put ''NmU2XHU2NmU5XHU2NmYwXHU2NmY1XHU2NmY3XHU2NzBmXHU2NzE2XHU2NzFlXHU2NzI2XHU2NzI3XHU5NzM4XHU2NzJlXHU2NzNmXHU2NzM2XHU2NzQxXHU2NzM4XHU2NzM3XHU2NzQ2XHU2NzVlXHU2NzYwXHU2NzU5XHU2NzYzXHU2NzY0XHU2Nzg5XHU2NzcwXHU2N2E5XHU2NzdjXHU2NzZh''@;'; put 'put ''XHU2NzhjXHU2NzhiXHU2N2E2XHU2N2ExXHU2Nzg1XHU2N2I3XHU2N2VmXHU2N2I0XHU2N2VjXHU2N2IzXHU2N2U5XHU2N2I4XHU2N2U0XHU2N2RlXHU2N2RkXHU2N2UyXHU2N2VlXHU2N2I5XHU2N2NlXHU2N2M2XHU2N2U3XHU2YTljXHU2ODFlXHU2ODQ2XHU2ODI5XHU2ODQwXHU2ODRkXHU2''@;'; put 'put ''ODMyXHU2ODRlIl0sWyI5ZTgwIiwiXHU2OGIzXHU2ODJiXHU2ODU5XHU2ODYzXHU2ODc3XHU2ODdmXHU2ODlmXHU2ODhmXHU2OGFkXHU2ODk0XHU2ODlkXHU2ODliXHU2ODgzXHU2YWFlXHU2OGI5XHU2ODc0XHU2OGI1XHU2OGEwXHU2OGJhXHU2OTBmXHU2ODhkXHU2ODdlXHU2OTAxXHU2OGNh''@;'; put 'put ''XHU2OTA4XHU2OGQ4XHU2OTIyXHU2OTI2XHU2OGUxXHU2OTBjXHU2OGNkXHU2OGQ0XHU2OGU3XHU2OGQ1XHU2OTM2XHU2OTEyXHU2OTA0XHU2OGQ3XHU2OGUzXHU2OTI1XHU2OGY5XHU2OGUwXHU2OGVmXHU2OTI4XHU2OTJhXHU2OTFhXHU2OTIzXHU2OTIxXHU2OGM2XHU2OTc5XHU2OTc3XHU2''@;'; put 'put ''OTVjXHU2OTc4XHU2OTZiXHU2OTU0XHU2OTdlXHU2OTZlXHU2OTM5XHU2OTc0XHU2OTNkXHU2OTU5XHU2OTMwXHU2OTYxXHU2OTVlXHU2OTVkXHU2OTgxXHU2OTZhXHU2OWIyXHU2OWFlXHU2OWQwXHU2OWJmXHU2OWMxXHU2OWQzXHU2OWJlXHU2OWNlXHU1YmU4XHU2OWNhXHU2OWRkXHU2OWJi''@;'; put 'put ''XHU2OWMzXHU2OWE3XHU2YTJlXHU2OTkxXHU2OWEwXHU2OTljXHU2OTk1XHU2OWI0XHU2OWRlXHU2OWU4XHU2YTAyXHU2YTFiXHU2OWZmXHU2YjBhXHU2OWY5XHU2OWYyXHU2OWU3XHU2YTA1XHU2OWIxXHU2YTFlXHU2OWVkXHU2YTE0XHU2OWViXHU2YTBhXHU2YTEyXHU2YWMxXHU2YTIzXHU2''@;'; put 'put ''YTEzXHU2YTQ0XHU2YTBjXHU2YTcyXHU2YTM2XHU2YTc4XHU2YTQ3XHU2YTYyXHU2YTU5XHU2YTY2XHU2YTQ4XHU2YTM4XHU2YTIyXHU2YTkwXHU2YThkXHU2YWEwXHU2YTg0XHU2YWEyXHU2YWEzIl0sWyI5ZjQwIiwiXHU2YTk3XHU4NjE3XHU2YWJiXHU2YWMzXHU2YWMyXHU2YWI4XHU2YWIz''@;'; put 'put ''XHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRhXHU2YWVhXHU2YWZiXHU2YjA1XHU4NjE2XHU2YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5XHU2YjUwXHU2YjU5XHU2YjU0XHU2YjViXHU2''@;'; put 'put ''YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2Yjg0XHU2YjgzXHU2YjhkXHU2Yjk4XHU2Yjk1XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2YmQzXHU2YmRmXHU2YmVjXHU2YmViXHU2YmYz''@;'; put 'put ''XHU2YmVmIl0sWyI5ZjgwIiwiXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2YzFiXHU2YzI0XHU2YzIzXHU2YzVlXHU2YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2YzkwXHU2Y2M0XHU2Y2YxXHU2Y2QzXHU2''@;'; put 'put ''Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlXHU2Y2JhXHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2VhXHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2ZDkzXHU2ZDY0XHU2ZDVhXHU2ZDc5''@;'; put 'put ''XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5XHU2ZTE1XHU2ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVhXHU2ZGVlXHU2ZTJkXHU2ZTZlXHU2''@;'; put 'put ''ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2ZTZiXHU2ZTJiXHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQzXHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2ZWJkXHU2ZWFmXHU2ZWM0XHU2ZWIy''@;'; put 'put ''XHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlmXHU2ZjQxXHU2ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjIl0sWyJlMDQwIiwiXHU2ZjNlXHU2ZjEzXHU2ZWY3XHU2Zjg2XHU2ZjdhXHU2Zjc4XHU2ZjgxXHU2''@;'; put 'put ''ZjgwXHU2ZjZmXHU2ZjViXHU2ZmYzXHU2ZjZkXHU2ZjgyXHU2ZjdjXHU2ZjU4XHU2ZjhlXHU2ZjkxXHU2ZmMyXHU2ZjY2XHU2ZmIzXHU2ZmEzXHU2ZmExXHU2ZmE0XHU2ZmI5XHU2ZmM2XHU2ZmFhXHU2ZmRmXHU2ZmQ1XHU2ZmVjXHU2ZmQ0XHU2ZmQ4XHU2ZmYxXHU2ZmVlXHU2ZmRiXHU3MDA5''@;'; put 'put ''XHU3MDBiXHU2ZmZhXHU3MDExXHU3MDAxXHU3MDBmXHU2ZmZlXHU3MDFiXHU3MDFhXHU2Zjc0XHU3MDFkXHU3MDE4XHU3MDFmXHU3MDMwXHU3MDNlXHU3MDMyXHU3MDUxXHU3MDYzXHU3MDk5XHU3MDkyXHU3MGFmXHU3MGYxXHU3MGFjXHU3MGI4XHU3MGIzXHU3MGFlXHU3MGRmXHU3MGNiXHU3''@;'; put 'put ''MGRkIl0sWyJlMDgwIiwiXHU3MGQ5XHU3MTA5XHU3MGZkXHU3MTFjXHU3MTE5XHU3MTY1XHU3MTU1XHU3MTg4XHU3MTY2XHU3MTYyXHU3MTRjXHU3MTU2XHU3MTZjXHU3MThmXHU3MWZiXHU3MTg0XHU3MTk1XHU3MWE4XHU3MWFjXHU3MWQ3XHU3MWI5XHU3MWJlXHU3MWQyXHU3MWM5XHU3MWQ0''@;'; put 'put ''XHU3MWNlXHU3MWUwXHU3MWVjXHU3MWU3XHU3MWY1XHU3MWZjXHU3MWY5XHU3MWZmXHU3MjBkXHU3MjEwXHU3MjFiXHU3MjI4XHU3MjJkXHU3MjJjXHU3MjMwXHU3MjMyXHU3MjNiXHU3MjNjXHU3MjNmXHU3MjQwXHU3MjQ2XHU3MjRiXHU3MjU4XHU3Mjc0XHU3MjdlXHU3MjgyXHU3MjgxXHU3''@;'; put 'put ''Mjg3XHU3MjkyXHU3Mjk2XHU3MmEyXHU3MmE3XHU3MmI5XHU3MmIyXHU3MmMzXHU3MmM2XHU3MmM0XHU3MmNlXHU3MmQyXHU3MmUyXHU3MmUwXHU3MmUxXHU3MmY5XHU3MmY3XHU1MDBmXHU3MzE3XHU3MzBhXHU3MzFjXHU3MzE2XHU3MzFkXHU3MzM0XHU3MzJmXHU3MzI5XHU3MzI1XHU3MzNl''@;'; put 'put ''XHU3MzRlXHU3MzRmXHU5ZWQ4XHU3MzU3XHU3MzZhXHU3MzY4XHU3MzcwXHU3Mzc4XHU3Mzc1XHU3MzdiXHU3MzdhXHU3M2M4XHU3M2IzXHU3M2NlXHU3M2JiXHU3M2MwXHU3M2U1XHU3M2VlXHU3M2RlXHU3NGEyXHU3NDA1XHU3NDZmXHU3NDI1XHU3M2Y4XHU3NDMyXHU3NDNhXHU3NDU1XHU3''@;'; put 'put ''NDNmXHU3NDVmXHU3NDU5XHU3NDQxXHU3NDVjXHU3NDY5XHU3NDcwXHU3NDYzXHU3NDZhXHU3NDc2XHU3NDdlXHU3NDhiXHU3NDllXHU3NGE3XHU3NGNhXHU3NGNmXHU3NGQ0XHU3M2YxIl0sWyJlMTQwIiwiXHU3NGUwXHU3NGUzXHU3NGU3XHU3NGU5XHU3NGVlXHU3NGYyXHU3NGYwXHU3NGYx''@;'; put 'put ''XHU3NGY4XHU3NGY3XHU3NTA0XHU3NTAzXHU3NTA1XHU3NTBjXHU3NTBlXHU3NTBkXHU3NTE1XHU3NTEzXHU3NTFlXHU3NTI2XHU3NTJjXHU3NTNjXHU3NTQ0XHU3NTRkXHU3NTRhXHU3NTQ5XHU3NTViXHU3NTQ2XHU3NTVhXHU3NTY5XHU3NTY0XHU3NTY3XHU3NTZiXHU3NTZkXHU3NTc4XHU3''@;'; put 'put ''NTc2XHU3NTg2XHU3NTg3XHU3NTc0XHU3NThhXHU3NTg5XHU3NTgyXHU3NTk0XHU3NTlhXHU3NTlkXHU3NWE1XHU3NWEzXHU3NWMyXHU3NWIzXHU3NWMzXHU3NWI1XHU3NWJkXHU3NWI4XHU3NWJjXHU3NWIxXHU3NWNkXHU3NWNhXHU3NWQyXHU3NWQ5XHU3NWUzXHU3NWRlXHU3NWZlXHU3NWZm''@;'; put 'put ''Il0sWyJlMTgwIiwiXHU3NWZjXHU3NjAxXHU3NWYwXHU3NWZhXHU3NWYyXHU3NWYzXHU3NjBiXHU3NjBkXHU3NjA5XHU3NjFmXHU3NjI3XHU3NjIwXHU3NjIxXHU3NjIyXHU3NjI0XHU3NjM0XHU3NjMwXHU3NjNiXHU3NjQ3XHU3NjQ4XHU3NjQ2XHU3NjVjXHU3NjU4XHU3NjYxXHU3NjYyXHU3''@;'; put 'put ''NjY4XHU3NjY5XHU3NjZhXHU3NjY3XHU3NjZjXHU3NjcwXHU3NjcyXHU3Njc2XHU3Njc4XHU3NjdjXHU3NjgwXHU3NjgzXHU3Njg4XHU3NjhiXHU3NjhlXHU3Njk2XHU3NjkzXHU3Njk5XHU3NjlhXHU3NmIwXHU3NmI0XHU3NmI4XHU3NmI5XHU3NmJhXHU3NmMyXHU3NmNkXHU3NmQ2XHU3NmQy''@;'; put 'put ''XHU3NmRlXHU3NmUxXHU3NmU1XHU3NmU3XHU3NmVhXHU4NjJmXHU3NmZiXHU3NzA4XHU3NzA3XHU3NzA0XHU3NzI5XHU3NzI0XHU3NzFlXHU3NzI1XHU3NzI2XHU3NzFiXHU3NzM3XHU3NzM4XHU3NzQ3XHU3NzVhXHU3NzY4XHU3NzZiXHU3NzViXHU3NzY1XHU3NzdmXHU3NzdlXHU3Nzc5XHU3''@;'; put 'put ''NzhlXHU3NzhiXHU3NzkxXHU3N2EwXHU3NzllXHU3N2IwXHU3N2I2XHU3N2I5XHU3N2JmXHU3N2JjXHU3N2JkXHU3N2JiXHU3N2M3XHU3N2NkXHU3N2Q3XHU3N2RhXHU3N2RjXHU3N2UzXHU3N2VlXHU3N2ZjXHU3ODBjXHU3ODEyXHU3OTI2XHU3ODIwXHU3OTJhXHU3ODQ1XHU3ODhlXHU3ODc0''@;'; put 'put ''XHU3ODg2XHU3ODdjXHU3ODlhXHU3ODhjXHU3OGEzXHU3OGI1XHU3OGFhXHU3OGFmXHU3OGQxXHU3OGM2XHU3OGNiXHU3OGQ0XHU3OGJlXHU3OGJjXHU3OGM1XHU3OGNhXHU3OGVjIl0sWyJlMjQwIiwiXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3''@;'; put 'put ''OTJjXHU3OTJiXHU3OTQwXHU3OTYwXHU3OTU3XHU3OTVmXHU3OTVhXHU3OTU1XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3OWFhXHU3OWFlXHU3OWIzXHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBk''@;'; put 'put ''XHU3YTE4XHU3YTE5XHU3YTIwXHU3YTFmXHU3OTgwXHU3YTMxXHU3YTNiXHU3YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5XHU5ZjlkXHU3YTcwXHU3YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwIl0s''@;'; put 'put ''WyJlMjgwIiwiXHU3YWI2XHU3YWM1XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3XHU3YWNhXHU3YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU2XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5''@;'; put 'put ''XHU3YjFlXHU3YjM1XHU3YjI4XHU3YjM2XHU3YjUwXHU3YjdhXHU3YjA0XHU3YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3YjcwXHU3YjcxXHU3YjZjXHU3YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3''@;'; put 'put ''YjhmXHU3YjVkXHU3Yjk5XHU3YmNiXHU3YmMxXHU3YmNjXHU3YmNmXHU3YmI0XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3YzAwXHU3YzA3XHU3YzEzXHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFm''@;'; put 'put ''XHU3YzM3XHU3YzJiXHU3YzNkXHU3YzRjXHU3YzQzXHU3YzU0XHU3YzRmXHU3YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1XHU3YzgzXHU3YzkwXHU3Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3''@;'; put 'put ''Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2MwXHU3Y2M1XHU3Y2MyXHU3Y2Q4XHU3Y2QyXHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3ZDA2Il0sWyJlMzQwIiwiXHU3ZDAyXHU3ZDFjXHU3ZDE1XHU3ZDBhXHU3ZDQ1XHU3ZDRiXHU3ZDJlXHU3ZDMyXHU3ZDNm''@;'; put 'put ''XHU3ZDM1XHU3ZDQ2XHU3ZDczXHU3ZDU2XHU3ZDRlXHU3ZDcyXHU3ZDY4XHU3ZDZlXHU3ZDRmXHU3ZDYzXHU3ZDkzXHU3ZDg5XHU3ZDViXHU3ZDhmXHU3ZDdkXHU3ZDliXHU3ZGJhXHU3ZGFlXHU3ZGEzXHU3ZGI1XHU3ZGM3XHU3ZGJkXHU3ZGFiXHU3ZTNkXHU3ZGEyXHU3ZGFmXHU3ZGRjXHU3''@;'; put 'put ''ZGI4XHU3ZDlmXHU3ZGIwXHU3ZGQ4XHU3ZGRkXHU3ZGU0XHU3ZGRlXHU3ZGZiXHU3ZGYyXHU3ZGUxXHU3ZTA1XHU3ZTBhXHU3ZTIzXHU3ZTIxXHU3ZTEyXHU3ZTMxXHU3ZTFmXHU3ZTA5XHU3ZTBiXHU3ZTIyXHU3ZTQ2XHU3ZTY2XHU3ZTNiXHU3ZTM1XHU3ZTM5XHU3ZTQzXHU3ZTM3Il0sWyJl''@;'; put 'put ''MzgwIiwiXHU3ZTMyXHU3ZTNhXHU3ZTY3XHU3ZTVkXHU3ZTU2XHU3ZTVlXHU3ZTU5XHU3ZTVhXHU3ZTc5XHU3ZTZhXHU3ZTY5XHU3ZTdjXHU3ZTdiXHU3ZTgzXHU3ZGQ1XHU3ZTdkXHU4ZmFlXHU3ZTdmXHU3ZTg4XHU3ZTg5XHU3ZThjXHU3ZTkyXHU3ZTkwXHU3ZTkzXHU3ZTk0XHU3ZTk2XHU3''@;'; put 'put ''ZThlXHU3ZTliXHU3ZTljXHU3ZjM4XHU3ZjNhXHU3ZjQ1XHU3ZjRjXHU3ZjRkXHU3ZjRlXHU3ZjUwXHU3ZjUxXHU3ZjU1XHU3ZjU0XHU3ZjU4XHU3ZjVmXHU3ZjYwXHU3ZjY4XHU3ZjY5XHU3ZjY3XHU3Zjc4XHU3ZjgyXHU3Zjg2XHU3ZjgzXHU3Zjg4XHU3Zjg3XHU3ZjhjXHU3Zjk0XHU3Zjll''@;'; put 'put ''XHU3ZjlkXHU3ZjlhXHU3ZmEzXHU3ZmFmXHU3ZmIyXHU3ZmI5XHU3ZmFlXHU3ZmI2XHU3ZmI4XHU4YjcxXHU3ZmM1XHU3ZmM2XHU3ZmNhXHU3ZmQ1XHU3ZmQ0XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmYzXHU3ZmY5XHU5OGRjXHU4MDA2XHU4MDA0XHU4MDBiXHU4MDEyXHU4MDE4XHU4MDE5XHU4''@;'; put 'put ''MDFjXHU4MDIxXHU4MDI4XHU4MDNmXHU4MDNiXHU4MDRhXHU4MDQ2XHU4MDUyXHU4MDU4XHU4MDVhXHU4MDVmXHU4MDYyXHU4MDY4XHU4MDczXHU4MDcyXHU4MDcwXHU4MDc2XHU4MDc5XHU4MDdkXHU4MDdmXHU4MDg0XHU4MDg2XHU4MDg1XHU4MDliXHU4MDkzXHU4MDlhXHU4MGFkXHU1MTkw''@;'; put 'put ''XHU4MGFjXHU4MGRiXHU4MGU1XHU4MGQ5XHU4MGRkXHU4MGM0XHU4MGRhXHU4MGQ2XHU4MTA5XHU4MGVmXHU4MGYxXHU4MTFiXHU4MTI5XHU4MTIzXHU4MTJmXHU4MTRiIl0sWyJlNDQwIiwiXHU5NjhiXHU4MTQ2XHU4MTNlXHU4MTUzXHU4MTUxXHU4MGZjXHU4MTcxXHU4MTZlXHU4MTY1XHU4''@;'; put 'put ''MTY2XHU4MTc0XHU4MTgzXHU4MTg4XHU4MThhXHU4MTgwXHU4MTgyXHU4MWEwXHU4MTk1XHU4MWE0XHU4MWEzXHU4MTVmXHU4MTkzXHU4MWE5XHU4MWIwXHU4MWI1XHU4MWJlXHU4MWI4XHU4MWJkXHU4MWMwXHU4MWMyXHU4MWJhXHU4MWM5XHU4MWNkXHU4MWQxXHU4MWQ5XHU4MWQ4XHU4MWM4''@;'; put 'put ''XHU4MWRhXHU4MWRmXHU4MWUwXHU4MWU3XHU4MWZhXHU4MWZiXHU4MWZlXHU4MjAxXHU4MjAyXHU4MjA1XHU4MjA3XHU4MjBhXHU4MjBkXHU4MjEwXHU4MjE2XHU4MjI5XHU4MjJiXHU4MjM4XHU4MjMzXHU4MjQwXHU4MjU5XHU4MjU4XHU4MjVkXHU4MjVhXHU4MjVmXHU4MjY0Il0sWyJlNDgw''@;'; put 'put ''IiwiXHU4MjYyXHU4MjY4XHU4MjZhXHU4MjZiXHU4MjJlXHU4MjcxXHU4Mjc3XHU4Mjc4XHU4MjdlXHU4MjhkXHU4MjkyXHU4MmFiXHU4MjlmXHU4MmJiXHU4MmFjXHU4MmUxXHU4MmUzXHU4MmRmXHU4MmQyXHU4MmY0XHU4MmYzXHU4MmZhXHU4MzkzXHU4MzAzXHU4MmZiXHU4MmY5XHU4MmRl''@;'; put 'put ''XHU4MzA2XHU4MmRjXHU4MzA5XHU4MmQ5XHU4MzM1XHU4MzM0XHU4MzE2XHU4MzMyXHU4MzMxXHU4MzQwXHU4MzM5XHU4MzUwXHU4MzQ1XHU4MzJmXHU4MzJiXHU4MzE3XHU4MzE4XHU4Mzg1XHU4MzlhXHU4M2FhXHU4MzlmXHU4M2EyXHU4Mzk2XHU4MzIzXHU4MzhlXHU4Mzg3XHU4MzhhXHU4''@;'; put 'put ''MzdjXHU4M2I1XHU4MzczXHU4Mzc1XHU4M2EwXHU4Mzg5XHU4M2E4XHU4M2Y0XHU4NDEzXHU4M2ViXHU4M2NlXHU4M2ZkXHU4NDAzXHU4M2Q4XHU4NDBiXHU4M2MxXHU4M2Y3XHU4NDA3XHU4M2UwXHU4M2YyXHU4NDBkXHU4NDIyXHU4NDIwXHU4M2JkXHU4NDM4XHU4NTA2XHU4M2ZiXHU4NDZk''@;'; put 'put ''XHU4NDJhXHU4NDNjXHU4NTVhXHU4NDg0XHU4NDc3XHU4NDZiXHU4NGFkXHU4NDZlXHU4NDgyXHU4NDY5XHU4NDQ2XHU4NDJjXHU4NDZmXHU4NDc5XHU4NDM1XHU4NGNhXHU4NDYyXHU4NGI5XHU4NGJmXHU4NDlmXHU4NGQ5XHU4NGNkXHU4NGJiXHU4NGRhXHU4NGQwXHU4NGMxXHU4NGM2XHU4''@;'; put 'put ''NGQ2XHU4NGExXHU4NTIxXHU4NGZmXHU4NGY0XHU4NTE3XHU4NTE4XHU4NTJjXHU4NTFmXHU4NTE1XHU4NTE0XHU4NGZjXHU4NTQwXHU4NTYzXHU4NTU4XHU4NTQ4Il0sWyJlNTQwIiwiXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4''@;'; put 'put ''XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTljXHU4NTc3XHU4NTdlXHU4NTkwXHU4NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBiXHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4''@;'; put 'put ''NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4NjY3XHU4NjcxXHU4NjkzXHU4NmEzXHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4NmQ0XHU4NmRlXHU4NmU5XHU4NmVjIl0sWyJlNTgwIiwi''@;'; put 'put ''XHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4NzAzXHU4NmZiXHU4NzExXHU4NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVmXHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4''@;'; put 'put ''NzU3XHU4NzY4XHU4NzZlXHU4NzU5XHU4NzUzXHU4NzYzXHU4NzZhXHU4ODA1XHU4N2EyXHU4NzlmXHU4NzgyXHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBk''@;'; put 'put ''XHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODExXHU4ODE2XHU4ODE1XHU4ODIyXHU4ODIxXHU4ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgxXHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4''@;'; put 'put ''OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4ODk5XHU4OGEyXHU4ODhkXHU4OGE0XHU4OGIwXHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBh''@;'; put 'put ''XHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJiXHU4OTQxXHU4OTQ0XHU4OTNiXHU4OTM2XHU4OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlIl0sWyJlNjQwIiwiXHU4OTY2XHU4OTY0XHU4OTZkXHU4OTZhXHU4OTZmXHU4OTc0XHU4OTc3XHU4OTdlXHU4OTgzXHU4OTg4XHU4''@;'; put 'put ''OThhXHU4OTkzXHU4OTk4XHU4OWExXHU4OWE5XHU4OWE2XHU4OWFjXHU4OWFmXHU4OWIyXHU4OWJhXHU4OWJkXHU4OWJmXHU4OWMwXHU4OWRhXHU4OWRjXHU4OWRkXHU4OWU3XHU4OWY0XHU4OWY4XHU4YTAzXHU4YTE2XHU4YTEwXHU4YTBjXHU4YTFiXHU4YTFkXHU4YTI1XHU4YTM2XHU4YTQx''@;'; put 'put ''XHU4YTViXHU4YTUyXHU4YTQ2XHU4YTQ4XHU4YTdjXHU4YTZkXHU4YTZjXHU4YTYyXHU4YTg1XHU4YTgyXHU4YTg0XHU4YWE4XHU4YWExXHU4YTkxXHU4YWE1XHU4YWE2XHU4YTlhXHU4YWEzXHU4YWM0XHU4YWNkXHU4YWMyXHU4YWRhXHU4YWViXHU4YWYzXHU4YWU3Il0sWyJlNjgwIiwiXHU4''@;'; put 'put ''YWU0XHU4YWYxXHU4YjE0XHU4YWUwXHU4YWUyXHU4YWY3XHU4YWRlXHU4YWRiXHU4YjBjXHU4YjA3XHU4YjFhXHU4YWUxXHU4YjE2XHU4YjEwXHU4YjE3XHU4YjIwXHU4YjMzXHU5N2FiXHU4YjI2XHU4YjJiXHU4YjNlXHU4YjI4XHU4YjQxXHU4YjRjXHU4YjRmXHU4YjRlXHU4YjQ5XHU4YjU2''@;'; put 'put ''XHU4YjViXHU4YjVhXHU4YjZiXHU4YjVmXHU4YjZjXHU4YjZmXHU4Yjc0XHU4YjdkXHU4YjgwXHU4YjhjXHU4YjhlXHU4YjkyXHU4YjkzXHU4Yjk2XHU4Yjk5XHU4YjlhXHU4YzNhXHU4YzQxXHU4YzNmXHU4YzQ4XHU4YzRjXHU4YzRlXHU4YzUwXHU4YzU1XHU4YzYyXHU4YzZjXHU4Yzc4XHU4''@;'; put 'put ''YzdhXHU4YzgyXHU4Yzg5XHU4Yzg1XHU4YzhhXHU4YzhkXHU4YzhlXHU4Yzk0XHU4YzdjXHU4Yzk4XHU2MjFkXHU4Y2FkXHU4Y2FhXHU4Y2JkXHU4Y2IyXHU4Y2IzXHU4Y2FlXHU4Y2I2XHU4Y2M4XHU4Y2MxXHU4Y2U0XHU4Y2UzXHU4Y2RhXHU4Y2ZkXHU4Y2ZhXHU4Y2ZiXHU4ZDA0XHU4ZDA1''@;'; put 'put ''XHU4ZDBhXHU4ZDA3XHU4ZDBmXHU4ZDBkXHU4ZDEwXHU5ZjRlXHU4ZDEzXHU4Y2NkXHU4ZDE0XHU4ZDE2XHU4ZDY3XHU4ZDZkXHU4ZDcxXHU4ZDczXHU4ZDgxXHU4ZDk5XHU4ZGMyXHU4ZGJlXHU4ZGJhXHU4ZGNmXHU4ZGRhXHU4ZGQ2XHU4ZGNjXHU4ZGRiXHU4ZGNiXHU4ZGVhXHU4ZGViXHU4''@;'; put 'put ''ZGRmXHU4ZGUzXHU4ZGZjXHU4ZTA4XHU4ZTA5XHU4ZGZmXHU4ZTFkXHU4ZTFlXHU4ZTEwXHU4ZTFmXHU4ZTQyXHU4ZTM1XHU4ZTMwXHU4ZTM0XHU4ZTRhIl0sWyJlNzQwIiwiXHU4ZTQ3XHU4ZTQ5XHU4ZTRjXHU4ZTUwXHU4ZTQ4XHU4ZTU5XHU4ZTY0XHU4ZTYwXHU4ZTJhXHU4ZTYzXHU4ZTU1''@;'; put 'put ''XHU4ZTc2XHU4ZTcyXHU4ZTdjXHU4ZTgxXHU4ZTg3XHU4ZTg1XHU4ZTg0XHU4ZThiXHU4ZThhXHU4ZTkzXHU4ZTkxXHU4ZTk0XHU4ZTk5XHU4ZWFhXHU4ZWExXHU4ZWFjXHU4ZWIwXHU4ZWM2XHU4ZWIxXHU4ZWJlXHU4ZWM1XHU4ZWM4XHU4ZWNiXHU4ZWRiXHU4ZWUzXHU4ZWZjXHU4ZWZiXHU4''@;'; put 'put ''ZWViXHU4ZWZlXHU4ZjBhXHU4ZjA1XHU4ZjE1XHU4ZjEyXHU4ZjE5XHU4ZjEzXHU4ZjFjXHU4ZjFmXHU4ZjFiXHU4ZjBjXHU4ZjI2XHU4ZjMzXHU4ZjNiXHU4ZjM5XHU4ZjQ1XHU4ZjQyXHU4ZjNlXHU4ZjRjXHU4ZjQ5XHU4ZjQ2XHU4ZjRlXHU4ZjU3XHU4ZjVjIl0sWyJlNzgwIiwiXHU4ZjYy''@;'; put 'put ''XHU4ZjYzXHU4ZjY0XHU4ZjljXHU4ZjlmXHU4ZmEzXHU4ZmFkXHU4ZmFmXHU4ZmI3XHU4ZmRhXHU4ZmU1XHU4ZmUyXHU4ZmVhXHU4ZmVmXHU5MDg3XHU4ZmY0XHU5MDA1XHU4ZmY5XHU4ZmZhXHU5MDExXHU5MDE1XHU5MDIxXHU5MDBkXHU5MDFlXHU5MDE2XHU5MDBiXHU5MDI3XHU5MDM2XHU5''@;'; put 'put ''MDM1XHU5MDM5XHU4ZmY4XHU5MDRmXHU5MDUwXHU5MDUxXHU5MDUyXHU5MDBlXHU5MDQ5XHU5MDNlXHU5MDU2XHU5MDU4XHU5MDVlXHU5MDY4XHU5MDZmXHU5MDc2XHU5NmE4XHU5MDcyXHU5MDgyXHU5MDdkXHU5MDgxXHU5MDgwXHU5MDhhXHU5MDg5XHU5MDhmXHU5MGE4XHU5MGFmXHU5MGIx''@;'; put 'put ''XHU5MGI1XHU5MGUyXHU5MGU0XHU2MjQ4XHU5MGRiXHU5MTAyXHU5MTEyXHU5MTE5XHU5MTMyXHU5MTMwXHU5MTRhXHU5MTU2XHU5MTU4XHU5MTYzXHU5MTY1XHU5MTY5XHU5MTczXHU5MTcyXHU5MThiXHU5MTg5XHU5MTgyXHU5MWEyXHU5MWFiXHU5MWFmXHU5MWFhXHU5MWI1XHU5MWI0XHU5''@;'; put 'put ''MWJhXHU5MWMwXHU5MWMxXHU5MWM5XHU5MWNiXHU5MWQwXHU5MWQ2XHU5MWRmXHU5MWUxXHU5MWRiXHU5MWZjXHU5MWY1XHU5MWY2XHU5MjFlXHU5MWZmXHU5MjE0XHU5MjJjXHU5MjE1XHU5MjExXHU5MjVlXHU5MjU3XHU5MjQ1XHU5MjQ5XHU5MjY0XHU5MjQ4XHU5Mjk1XHU5MjNmXHU5MjRi''@;'; put 'put ''XHU5MjUwXHU5MjljXHU5Mjk2XHU5MjkzXHU5MjliXHU5MjVhXHU5MmNmXHU5MmI5XHU5MmI3XHU5MmU5XHU5MzBmXHU5MmZhXHU5MzQ0XHU5MzJlIl0sWyJlODQwIiwiXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5MzZlXHU5''@;'; put 'put ''MzU2XHU5M2IwXHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5M2Q2XHU5M2Q3XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNhXHU5NDQx''@;'; put 'put ''XHU5NDUyXHU5NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVlXHU5NDZhXHU5MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdjXHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5Il0sWyJlODgwIiwiXHU5NWEwXHU5''@;'; put 'put ''NWE4XHU5NWE3XHU5NWFkXHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNhXHU2ZmY2XHU5NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3''@;'; put 'put ''XHU5NjVjXHU5NjVlXHU5NjVkXHU5NjVmXHU5NjY2XHU5NjcyXHU5NjZjXHU5NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIyXHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5''@;'; put 'put ''NmQ1XHU5NmY5XHU5NzA0XHU5NzA2XHU5NzA4XHU5NzEzXHU5NzBlXHU5NzExXHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQy''@;'; put 'put ''XHU5NzZiXHU5NzcxXHU5Nzc5XHU5Nzg1XHU5NzdjXHU5NzgxXHU5NzdhXHU5Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2EzXHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5''@;'; put 'put ''N2Y1XHU5ODBmXHU5ODBjXHU5ODM4XHU5ODI0XHU5ODIxXHU5ODM3XHU5ODNkXHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwIl0sWyJlOTQwIiwiXHU5ODcxXHU5ODc0XHU5ODczXHU5OGFhXHU5OGFmXHU5OGIxXHU5OGI2XHU5OGM0XHU5OGMzXHU5OGM2XHU5OGU5XHU5OGVi''@;'; put 'put ''XHU5OTAzXHU5OTA5XHU5OTEyXHU5OTE0XHU5OTE4XHU5OTIxXHU5OTFkXHU5OTFlXHU5OTI0XHU5OTIwXHU5OTJjXHU5OTJlXHU5OTNkXHU5OTNlXHU5OTQyXHU5OTQ5XHU5OTQ1XHU5OTUwXHU5OTRiXHU5OTUxXHU5OTUyXHU5OTRjXHU5OTU1XHU5OTk3XHU5OTk4XHU5OWE1XHU5OWFkXHU5''@;'; put 'put ''OWFlXHU5OWJjXHU5OWRmXHU5OWRiXHU5OWRkXHU5OWQ4XHU5OWQxXHU5OWVkXHU5OWVlXHU5OWYxXHU5OWYyXHU5OWZiXHU5OWY4XHU5YTAxXHU5YTBmXHU5YTA1XHU5OWUyXHU5YTE5XHU5YTJiXHU5YTM3XHU5YTQ1XHU5YTQyXHU5YTQwXHU5YTQzIl0sWyJlOTgwIiwiXHU5YTNlXHU5YTU1''@;'; put 'put ''XHU5YTRkXHU5YTViXHU5YTU3XHU5YTVmXHU5YTYyXHU5YTY1XHU5YTY0XHU5YTY5XHU5YTZiXHU5YTZhXHU5YWFkXHU5YWIwXHU5YWJjXHU5YWMwXHU5YWNmXHU5YWQxXHU5YWQzXHU5YWQ0XHU5YWRlXHU5YWRmXHU5YWUyXHU5YWUzXHU5YWU2XHU5YWVmXHU5YWViXHU5YWVlXHU5YWY0XHU5''@;'; put 'put ''YWYxXHU5YWY3XHU5YWZiXHU5YjA2XHU5YjE4XHU5YjFhXHU5YjFmXHU5YjIyXHU5YjIzXHU5YjI1XHU5YjI3XHU5YjI4XHU5YjI5XHU5YjJhXHU5YjJlXHU5YjJmXHU5YjMyXHU5YjQ0XHU5YjQzXHU5YjRmXHU5YjRkXHU5YjRlXHU5YjUxXHU5YjU4XHU5Yjc0XHU5YjkzXHU5YjgzXHU5Yjkx''@;'; put 'put ''XHU5Yjk2XHU5Yjk3XHU5YjlmXHU5YmEwXHU5YmE4XHU5YmI0XHU5YmMwXHU5YmNhXHU5YmI5XHU5YmM2XHU5YmNmXHU5YmQxXHU5YmQyXHU5YmUzXHU5YmUyXHU5YmU0XHU5YmQ0XHU5YmUxXHU5YzNhXHU5YmYyXHU5YmYxXHU5YmYwXHU5YzE1XHU5YzE0XHU5YzA5XHU5YzEzXHU5YzBjXHU5''@;'; put 'put ''YzA2XHU5YzA4XHU5YzEyXHU5YzBhXHU5YzA0XHU5YzJlXHU5YzFiXHU5YzI1XHU5YzI0XHU5YzIxXHU5YzMwXHU5YzQ3XHU5YzMyXHU5YzQ2XHU5YzNlXHU5YzVhXHU5YzYwXHU5YzY3XHU5Yzc2XHU5Yzc4XHU5Y2U3XHU5Y2VjXHU5Y2YwXHU5ZDA5XHU5ZDA4XHU5Y2ViXHU5ZDAzXHU5ZDA2''@;'; put 'put ''XHU5ZDJhXHU5ZDI2XHU5ZGFmXHU5ZDIzXHU5ZDFmXHU5ZDQ0XHU5ZDE1XHU5ZDEyXHU5ZDQxXHU5ZDNmXHU5ZDNlXHU5ZDQ2XHU5ZDQ4Il0sWyJlYTQwIiwiXHU5ZDVkXHU5ZDVlXHU5ZDY0XHU5ZDUxXHU5ZDUwXHU5ZDU5XHU5ZDcyXHU5ZDg5XHU5ZDg3XHU5ZGFiXHU5ZDZmXHU5ZDdhXHU5''@;'; put 'put ''ZDlhXHU5ZGE0XHU5ZGE5XHU5ZGIyXHU5ZGM0XHU5ZGMxXHU5ZGJiXHU5ZGI4XHU5ZGJhXHU5ZGM2XHU5ZGNmXHU5ZGMyXHU5ZGQ5XHU5ZGQzXHU5ZGY4XHU5ZGU2XHU5ZGVkXHU5ZGVmXHU5ZGZkXHU5ZTFhXHU5ZTFiXHU5ZTFlXHU5ZTc1XHU5ZTc5XHU5ZTdkXHU5ZTgxXHU5ZTg4XHU5ZThi''@;'; put 'put ''XHU5ZThjXHU5ZTkyXHU5ZTk1XHU5ZTkxXHU5ZTlkXHU5ZWE1XHU5ZWE5XHU5ZWI4XHU5ZWFhXHU5ZWFkXHU5NzYxXHU5ZWNjXHU5ZWNlXHU5ZWNmXHU5ZWQwXHU5ZWQ0XHU5ZWRjXHU5ZWRlXHU5ZWRkXHU5ZWUwXHU5ZWU1XHU5ZWU4XHU5ZWVmIl0sWyJlYTgwIiwiXHU5ZWY0XHU5ZWY2XHU5''@;'; put 'put ''ZWY3XHU5ZWY5XHU5ZWZiXHU5ZWZjXHU5ZWZkXHU5ZjA3XHU5ZjA4XHU3NmI3XHU5ZjE1XHU5ZjIxXHU5ZjJjXHU5ZjNlXHU5ZjRhXHU5ZjUyXHU5ZjU0XHU5ZjYzXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjY2XHU5ZjY3XHU5ZjZjXHU5ZjZhXHU5Zjc3XHU5ZjcyXHU5Zjc2XHU5Zjk1XHU5Zjlj''@;'; put 'put ''XHU5ZmEwXHU1ODJmXHU2OWM3XHU5MDU5XHU3NDY0XHU1MWRjXHU3MTk5Il0sWyJlZDQwIiwiXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0''@;'; put 'put ''ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3''@;'; put 'put ''XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmIl0sWyJlZDgwIiwiXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1''@;'; put 'put ''OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRl''@;'; put 'put ''XHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2''@;'; put 'put ''NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVj''@;'; put 'put ''XHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3''@;'; put 'put ''MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxIl0sWyJlZTQwIiwiXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAx''@;'; put 'put ''XHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2XHVmYTE3XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5XHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3''@;'; put 'put ''ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3ZmExXHVmYTFlXHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5Il0sWyJlZTgwIiwiXHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3''@;'; put 'put ''XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4YjdmXHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5''@;'; put 'put ''MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5MjNjXHU5MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFl''@;'; put 'put ''XHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0XHU5M2M2XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVm''@;'; put 'put ''YTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5XHU5YWRjXHU5Yjc1XHU5YjcyXHU5YjhmXHU5YmIxXHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxIl0sWyJlZWVmIiwiXHUyMTcwIiw5LCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDIiXSxbImYwNDAiLCJc''@;'; put 'put ''dWUwMDAiLDYyXSxbImYwODAiLCJcdWUwM2YiLDEyNF0sWyJmMTQwIiwiXHVlMGJjIiw2Ml0sWyJmMTgwIiwiXHVlMGZiIiwxMjRdLFsiZjI0MCIsIlx1ZTE3OCIsNjJdLFsiZjI4MCIsIlx1ZTFiNyIsMTI0XSxbImYzNDAiLCJcdWUyMzQiLDYyXSxbImYzODAiLCJcdWUyNzMiLDEyNF0sWyJm''@;'; put 'put ''NDQwIiwiXHVlMmYwIiw2Ml0sWyJmNDgwIiwiXHVlMzJmIiwxMjRdLFsiZjU0MCIsIlx1ZTNhYyIsNjJdLFsiZjU4MCIsIlx1ZTNlYiIsMTI0XSxbImY2NDAiLCJcdWU0NjgiLDYyXSxbImY2ODAiLCJcdWU0YTciLDEyNF0sWyJmNzQwIiwiXHVlNTI0Iiw2Ml0sWyJmNzgwIiwiXHVlNTYzIiwx''@;'; put 'put ''MjRdLFsiZjg0MCIsIlx1ZTVlMCIsNjJdLFsiZjg4MCIsIlx1ZTYxZiIsMTI0XSxbImY5NDAiLCJcdWU2OWMiXSxbImZhNDAiLCJcdTIxNzAiLDksIlx1MjE2MCIsOSwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyXHUzMjMxXHUyMTE2XHUyMTIxXHUyMjM1XHU3ZThhXHU4OTFjXHU5MzQ4XHU5''@;'; put 'put ''Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQy''@;'; put 'put ''XHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhIl0sWyJmYTgwIiwiXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1''@;'; put 'put ''NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUz''@;'; put 'put ''XHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2''@;'; put 'put ''NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNm''@;'; put 'put ''XHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmIl0sWyJmYjQwIiwiXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2''@;'; put 'put ''ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3''@;'; put 'put ''XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2XHVmYTE3XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3''@;'; put 'put ''ODdhXHU3OTMwXHVmYTE4XHVmYTE5Il0sWyJmYjgwIiwiXHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3ZmExXHVmYTFlXHU4MzAxXHU4MzYyXHU4Mzdm''@;'; put 'put ''XHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5XHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4YjdmXHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVm''@;'; put 'put ''YTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5MjNjXHU5MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3''@;'; put 'put ''XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0XHU5M2M2XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5''@;'; put 'put ''NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5Il0sWyJmYzQwIiwiXHU5YWRjXHU5Yjc1XHU5YjcyXHU5YjhmXHU5YmIx''@;'; put 'put ''XHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxIl1dJyl9LDIyNTYyOlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xIjoiYWVzLTEyOC1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yIjoiYWVz''@;'; put 'put ''LTEyOC1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zIjoiYWVzLTEyOC1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40IjoiYWVzLTEyOC1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMSI6ImFlcy0xOTItZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjIiOiJhZXMtMTkyLWNi''@;'; put 'put ''YyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIzIjoiYWVzLTE5Mi1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNCI6ImFlcy0xOTItY2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDEiOiJhZXMtMjU2LWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQyIjoiYWVzLTI1Ni1jYmMiLCIy''@;'; put 'put ''LjE2Ljg0MC4xLjEwMS4zLjQuMS40MyI6ImFlcy0yNTYtb2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDQiOiJhZXMtMjU2LWNmYiJ9Jyl9LDEyMDMwOlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJsb2NhbGUiOiJlbiIsImRhdGUiOnsiY2EiOlsiZ3JlZ29y''@;'; put 'put ''eSIsImJ1ZGRoaXN0IiwiY2hpbmVzZSIsImNvcHRpYyIsImRhbmdpIiwiZXRoaW9hYSIsImV0aGlvcGljIiwiZ2VuZXJpYyIsImhlYnJldyIsImluZGlhbiIsImlzbGFtaWMiLCJpc2xhbWljYyIsImphcGFuZXNlIiwicGVyc2lhbiIsInJvYyJdLCJob3VyTm8wIjp0cnVlLCJob3VyMTIiOnRy''@;'; put 'put ''dWUsImZvcm1hdHMiOnsic2hvcnQiOiJ7MX0sIHswfSIsIm1lZGl1bSI6InsxfSwgezB9IiwiZnVsbCI6InsxfSBcJ2F0XCcgezB9IiwibG9uZyI6InsxfSBcJ2F0XCcgezB9IiwiYXZhaWxhYmxlRm9ybWF0cyI6eyJkIjoiZCIsIkUiOiJjY2MiLCJFZCI6ImQgRSIsIkVobSI6IkUgaDptbSBh''@;'; put 'put ''IiwiRUhtIjoiRSBISDptbSIsIkVobXMiOiJFIGg6bW06c3MgYSIsIkVIbXMiOiJFIEhIOm1tOnNzIiwiR3kiOiJ5IEciLCJHeU1NTSI6Ik1NTSB5IEciLCJHeU1NTWQiOiJNTU0gZCwgeSBHIiwiR3lNTU1FZCI6IkUsIE1NTSBkLCB5IEciLCJoIjoiaCBhIiwiSCI6IkhIIiwiaG0iOiJoOm1t''@;'; put 'put ''IGEiLCJIbSI6IkhIOm1tIiwiaG1zIjoiaDptbTpzcyBhIiwiSG1zIjoiSEg6bW06c3MiLCJobXN2IjoiaDptbTpzcyBhIHYiLCJIbXN2IjoiSEg6bW06c3MgdiIsImhtdiI6Img6bW0gYSB2IiwiSG12IjoiSEg6bW0gdiIsIk0iOiJMIiwiTWQiOiJNL2QiLCJNRWQiOiJFLCBNL2QiLCJNTU0i''@;'; put 'put ''OiJMTEwiLCJNTU1kIjoiTU1NIGQiLCJNTU1FZCI6IkUsIE1NTSBkIiwiTU1NTWQiOiJNTU1NIGQiLCJtcyI6Im1tOnNzIiwieSI6InkiLCJ5TSI6Ik0veSIsInlNZCI6Ik0vZC95IiwieU1FZCI6IkUsIE0vZC95IiwieU1NTSI6Ik1NTSB5IiwieU1NTWQiOiJNTU0gZCwgeSIsInlNTU1FZCI6''@;'; put 'put ''IkUsIE1NTSBkLCB5IiwieU1NTU0iOiJNTU1NIHkiLCJ5UVFRIjoiUVFRIHkiLCJ5UVFRUSI6IlFRUVEgeSJ9LCJkYXRlRm9ybWF0cyI6eyJ5TU1NTUVFRUVkIjoiRUVFRSwgTU1NTSBkLCB5IiwieU1NTU1kIjoiTU1NTSBkLCB5IiwieU1NTWQiOiJNTU0gZCwgeSIsInlNZCI6Ik0vZC95eSJ9''@;'; put 'put ''LCJ0aW1lRm9ybWF0cyI6eyJobW1zc3p6enoiOiJoOm1tOnNzIGEgenp6eiIsImhtc3oiOiJoOm1tOnNzIGEgeiIsImhtcyI6Img6bW06c3MgYSIsImhtIjoiaDptbSBhIn19LCJjYWxlbmRhcnMiOnsiYnVkZGhpc3QiOnsibW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwiTSIs''@;'; put 'put ''IkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmciOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1''@;'; put 'put ''bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0s''@;'; put 'put ''ImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkJFIl0sInNob3J0IjpbIkJFIl0sImxvbmciOlsiQkUiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoi''@;'; put 'put ''UE0ifX0sImNoaW5lc2UiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTW8xIiwiTW8yIiwiTW8zIiwiTW80IiwiTW81IiwiTW82IiwiTW83IiwiTW84IiwiTW85IiwiTW8xMCIsIk1vMTEi''@;'; put 'put ''LCJNbzEyIl0sImxvbmciOlsiTW9udGgxIiwiTW9udGgyIiwiTW9udGgzIiwiTW9udGg0IiwiTW9udGg1IiwiTW9udGg2IiwiTW9udGg3IiwiTW9udGg4IiwiTW9udGg5IiwiTW9udGgxMCIsIk1vbnRoMTEiLCJNb250aDEyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwi''@;'; put 'put ''VCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJkYXlQZXJpb2RzIjp7ImFtIjoi''@;'; put 'put ''QU0iLCJwbSI6IlBNIn19LCJjb3B0aWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyJdLCJzaG9ydCI6WyJUb3V0IiwiQmFiYSIsIkhhdG9yIiwiS2lhaGsiLCJUb2JhIiwiQW1zaGlyIiwiQmFyYW1o''@;'; put 'put ''YXQiLCJCYXJhbW91ZGEiLCJCYXNoYW5zIiwiUGFvbmEiLCJFcGVwIiwiTWVzcmEiLCJOYXNpZSJdLCJsb25nIjpbIlRvdXQiLCJCYWJhIiwiSGF0b3IiLCJLaWFoayIsIlRvYmEiLCJBbXNoaXIiLCJCYXJhbWhhdCIsIkJhcmFtb3VkYSIsIkJhc2hhbnMiLCJQYW9uYSIsIkVwZXAiLCJNZXNy''@;'; put 'put ''YSIsIk5hc2llIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVy''@;'; put 'put ''c2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJFUkEwIiwiRVJBMSJdLCJzaG9ydCI6WyJFUkEwIiwiRVJBMSJdLCJsb25nIjpbIkVSQTAiLCJFUkExIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJkYW5naSI6eyJtb250aHMiOnsi''@;'; put 'put ''bmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNbzEiLCJNbzIiLCJNbzMiLCJNbzQiLCJNbzUiLCJNbzYiLCJNbzciLCJNbzgiLCJNbzkiLCJNbzEwIiwiTW8xMSIsIk1vMTIiXSwibG9uZyI6WyJNb250aDEiLCJN''@;'; put 'put ''b250aDIiLCJNb250aDMiLCJNb250aDQiLCJNb250aDUiLCJNb250aDYiLCJNb250aDciLCJNb250aDgiLCJNb250aDkiLCJNb250aDEwIiwiTW9udGgxMSIsIk1vbnRoMTIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwi''@;'; put 'put ''TW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImV0aGlvcGljIjp7''@;'; put 'put ''Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiXSwic2hvcnQiOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNhcyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90''@;'; put 'put ''IiwiU2VuZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXSwibG9uZyI6WyJNZXNrZXJlbSIsIlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc3NlIiwiUGFndW1lbiJdfSwi''@;'; put 'put ''ZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXki''@;'; put 'put ''LCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiRVJBMCIsIkVSQTEiXSwic2hvcnQiOlsiRVJBMCIsIkVSQTEiXSwibG9uZyI6WyJFUkEwIiwiRVJBMSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZXRoaW9hYSI6eyJtb250aHMiOnsibmFycm93IjpbIjEi''@;'; put 'put ''LCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIl0sInNob3J0IjpbIk1lc2tlcmVtIiwiVGVrZW10IiwiSGVkYXIiLCJUYWhzYXMiLCJUZXIiLCJZZWthdGl0IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFz''@;'; put 'put ''c2UiLCJQYWd1bWVuIl0sImxvbmciOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNhcyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2VuZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJN''@;'; put 'put ''IiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsi''@;'; put 'put ''bmFycm93IjpbIkVSQTAiXSwic2hvcnQiOlsiRVJBMCJdLCJsb25nIjpbIkVSQTAiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImdlbmVyaWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwi''@;'; put 'put ''MTIiXSwic2hvcnQiOlsiTTAxIiwiTTAyIiwiTTAzIiwiTTA0IiwiTTA1IiwiTTA2IiwiTTA3IiwiTTA4IiwiTTA5IiwiTTEwIiwiTTExIiwiTTEyIl0sImxvbmciOlsiTTAxIiwiTTAyIiwiTTAzIiwiTTA0IiwiTTA1IiwiTTA2IiwiTTA3IiwiTTA4IiwiTTA5IiwiTTEwIiwiTTExIiwiTTEy''@;'; put 'put ''Il19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZy''@;'; put 'put ''aWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJFUkEwIiwiRVJBMSJdLCJzaG9ydCI6WyJFUkEwIiwiRVJBMSJdLCJsb25nIjpbIkVSQTAiLCJFUkExIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJncmVnb3J5Ijp7Im1vbnRocyI6eyJuYXJyb3ci''@;'; put 'put ''OlsiSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sInNob3J0IjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJsb25nIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1h''@;'; put 'put ''cmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldl''@;'; put 'put ''ZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJCIiwiQSIsIkJDRSIsIkNFIl0sInNob3J0IjpbIkJDIiwiQUQiLCJCQ0Ui''@;'; put 'put ''LCJDRSJdLCJsb25nIjpbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSIsIkJlZm9yZSBDb21tb24gRXJhIiwiQ29tbW9uIEVyYSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiaGVicmV3Ijp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUi''@;'; put 'put ''LCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCI3Il0sInNob3J0IjpbIlRpc2hyaSIsIkhlc2h2YW4iLCJLaXNsZXYiLCJUZXZldCIsIlNoZXZhdCIsIkFkYXIgSSIsIkFkYXIiLCJOaXNhbiIsIkl5YXIiLCJTaXZhbiIsIlRhbXV6IiwiQXYiLCJFbHVsIiwiQWRhciBJSSJd''@;'; put 'put ''LCJsb25nIjpbIlRpc2hyaSIsIkhlc2h2YW4iLCJLaXNsZXYiLCJUZXZldCIsIlNoZXZhdCIsIkFkYXIgSSIsIkFkYXIiLCJOaXNhbiIsIkl5YXIiLCJTaXZhbiIsIlRhbXV6IiwiQXYiLCJFbHVsIiwiQWRhciBJSSJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJG''@;'; put 'put ''IiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQU0iXSwi''@;'; put 'put ''c2hvcnQiOlsiQU0iXSwibG9uZyI6WyJBTSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiaW5kaWFuIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIkNoYWl0cmEi''@;'; put 'put ''LCJWYWlzYWtoYSIsIkp5YWlzdGhhIiwiQXNhZGhhIiwiU3JhdmFuYSIsIkJoYWRyYSIsIkFzdmluYSIsIkthcnRpa2EiLCJBZ3JhaGF5YW5hIiwiUGF1c2EiLCJNYWdoYSIsIlBoYWxndW5hIl0sImxvbmciOlsiQ2hhaXRyYSIsIlZhaXNha2hhIiwiSnlhaXN0aGEiLCJBc2FkaGEiLCJTcmF2''@;'; put 'put ''YW5hIiwiQmhhZHJhIiwiQXN2aW5hIiwiS2FydGlrYSIsIkFncmFoYXlhbmEiLCJQYXVzYSIsIk1hZ2hhIiwiUGhhbGd1bmEiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJp''@;'; put 'put ''IiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIlNha2EiXSwic2hvcnQiOlsiU2FrYSJdLCJsb25nIjpbIlNha2EiXX0sImRheVBlcmlvZHMiOnsi''@;'; put 'put ''YW0iOiJBTSIsInBtIjoiUE0ifX0sImlzbGFtaWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTXVoLiIsIlNhZi4iLCJSYWIuIEkiLCJSYWIuIElJIiwiSnVtLiBJIiwiSnVtLiBJSSIs''@;'; put 'put ''IlJhai4iLCJTaGEuIiwiUmFtLiIsIlNoYXcuIiwiRGh1XHUwMmJibC1RLiIsIkRodVx1MDJiYmwtSC4iXSwibG9uZyI6WyJNdWhhcnJhbSIsIlNhZmFyIiwiUmFiaVx1MDJiYiBJIiwiUmFiaVx1MDJiYiBJSSIsIkp1bWFkYSBJIiwiSnVtYWRhIElJIiwiUmFqYWIiLCJTaGFcdTAyYmJiYW4i''@;'; put 'put ''LCJSYW1hZGFuIiwiU2hhd3dhbCIsIkRodVx1MDJiYmwtUWlcdTAyYmJkYWgiLCJEaHVcdTAyYmJsLUhpamphaCJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQi''@;'; put 'put ''XSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQUgiXSwic2hvcnQiOlsiQUgiXSwibG9uZyI6WyJBSCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0i''@;'; put 'put ''OiJQTSJ9fSwiaXNsYW1pY2MiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTXVoLiIsIlNhZi4iLCJSYWIuIEkiLCJSYWIuIElJIiwiSnVtLiBJIiwiSnVtLiBJSSIsIlJhai4iLCJTaGEu''@;'; put 'put ''IiwiUmFtLiIsIlNoYXcuIiwiRGh1XHUwMmJibC1RLiIsIkRodVx1MDJiYmwtSC4iXSwibG9uZyI6WyJNdWhhcnJhbSIsIlNhZmFyIiwiUmFiaVx1MDJiYiBJIiwiUmFiaVx1MDJiYiBJSSIsIkp1bWFkYSBJIiwiSnVtYWRhIElJIiwiUmFqYWIiLCJTaGFcdTAyYmJiYW4iLCJSYW1hZGFuIiwi''@;'; put 'put ''U2hhd3dhbCIsIkRodVx1MDJiYmwtUWlcdTAyYmJkYWgiLCJEaHVcdTAyYmJsLUhpamphaCJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJT''@;'; put 'put ''dW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQUgiXSwic2hvcnQiOlsiQUgiXSwibG9uZyI6WyJBSCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiamFw''@;'; put 'put ''YW5lc2UiOnsibW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmci''@;'; put 'put ''OlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hv''@;'; put 'put ''cnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIlRhaWthICg2NDVcdTIwMTM2''@;'; put 'put ''NTApIiwiSGFrdWNoaSAoNjUwXHUyMDEzNjcxKSIsIkhha3VoXHUwMTRkICg2NzJcdTIwMTM2ODYpIiwiU2h1Y2hcdTAxNGQgKDY4Nlx1MjAxMzcwMSkiLCJUYWloXHUwMTRkICg3MDFcdTIwMTM3MDQpIiwiS2VpdW4gKDcwNFx1MjAxMzcwOCkiLCJXYWRcdTAxNGQgKDcwOFx1MjAxMzcxNSki''@;'; put 'put ''LCJSZWlraSAoNzE1XHUyMDEzNzE3KSIsIllcdTAxNGRyXHUwMTRkICg3MTdcdTIwMTM3MjQpIiwiSmlua2kgKDcyNFx1MjAxMzcyOSkiLCJUZW5weVx1MDE0ZCAoNzI5XHUyMDEzNzQ5KSIsIlRlbnB5XHUwMTRkLWthbXBcdTAxNGQgKDc0OS03NDkpIiwiVGVucHlcdTAxNGQtc2hcdTAxNGRo''@;'; put 'put ''XHUwMTRkICg3NDktNzU3KSIsIlRlbnB5XHUwMTRkLWhcdTAxNGRqaSAoNzU3LTc2NSkiLCJUZW5weVx1MDE0ZC1qaW5nbyAoNzY1LTc2NykiLCJKaW5nby1rZWl1biAoNzY3LTc3MCkiLCJIXHUwMTRka2kgKDc3MFx1MjAxMzc4MCkiLCJUZW4tXHUwMTRkICg3ODEtNzgyKSIsIkVucnlha3Ug''@;'; put 'put ''KDc4Mlx1MjAxMzgwNikiLCJEYWlkXHUwMTRkICg4MDZcdTIwMTM4MTApIiwiS1x1MDE0ZG5pbiAoODEwXHUyMDEzODI0KSIsIlRlbmNoXHUwMTRkICg4MjRcdTIwMTM4MzQpIiwiSlx1MDE0ZHdhICg4MzRcdTIwMTM4NDgpIiwiS2FqXHUwMTRkICg4NDhcdTIwMTM4NTEpIiwiTmluanUgKDg1''@;'; put 'put ''MVx1MjAxMzg1NCkiLCJTYWlrXHUwMTRkICg4NTRcdTIwMTM4NTcpIiwiVGVuLWFuICg4NTctODU5KSIsIkpcdTAxNGRnYW4gKDg1OVx1MjAxMzg3NykiLCJHYW5neVx1MDE0ZCAoODc3XHUyMDEzODg1KSIsIk5pbm5hICg4ODVcdTIwMTM4ODkpIiwiS2FucHlcdTAxNGQgKDg4OVx1MjAxMzg5''@;'; put 'put ''OCkiLCJTaFx1MDE0ZHRhaSAoODk4XHUyMDEzOTAxKSIsIkVuZ2kgKDkwMVx1MjAxMzkyMykiLCJFbmNoXHUwMTRkICg5MjNcdTIwMTM5MzEpIiwiSlx1MDE0ZGhlaSAoOTMxXHUyMDEzOTM4KSIsIlRlbmd5XHUwMTRkICg5MzhcdTIwMTM5NDcpIiwiVGVucnlha3UgKDk0N1x1MjAxMzk1Nyki''@;'; put 'put ''LCJUZW50b2t1ICg5NTdcdTIwMTM5NjEpIiwiXHUwMTRjd2EgKDk2MVx1MjAxMzk2NCkiLCJLXHUwMTRkaFx1MDE0ZCAoOTY0XHUyMDEzOTY4KSIsIkFubmEgKDk2OFx1MjAxMzk3MCkiLCJUZW5yb2t1ICg5NzBcdTIwMTM5NzMpIiwiVGVuXHUyMDE5ZW4gKDk3M1x1MjAxMzk3NikiLCJKXHUw''@;'; put 'put ''MTRkZ2VuICg5NzZcdTIwMTM5NzgpIiwiVGVuZ2VuICg5NzhcdTIwMTM5ODMpIiwiRWlrYW4gKDk4M1x1MjAxMzk4NSkiLCJLYW5uYSAoOTg1XHUyMDEzOTg3KSIsIkVpZW4gKDk4N1x1MjAxMzk4OSkiLCJFaXNvICg5ODlcdTIwMTM5OTApIiwiU2hcdTAxNGRyeWFrdSAoOTkwXHUyMDEzOTk1''@;'; put 'put ''KSIsIkNoXHUwMTRkdG9rdSAoOTk1XHUyMDEzOTk5KSIsIkNoXHUwMTRkaFx1MDE0ZCAoOTk5XHUyMDEzMTAwNCkiLCJLYW5rXHUwMTRkICgxMDA0XHUyMDEzMTAxMikiLCJDaFx1MDE0ZHdhICgxMDEyXHUyMDEzMTAxNykiLCJLYW5uaW4gKDEwMTdcdTIwMTMxMDIxKSIsIkppYW4gKDEwMjFc''@;'; put 'put ''dTIwMTMxMDI0KSIsIk1hbmp1ICgxMDI0XHUyMDEzMTAyOCkiLCJDaFx1MDE0ZGdlbiAoMTAyOFx1MjAxMzEwMzcpIiwiQ2hcdTAxNGRyeWFrdSAoMTAzN1x1MjAxMzEwNDApIiwiQ2hcdTAxNGRreVx1MDE2YiAoMTA0MFx1MjAxMzEwNDQpIiwiS2FudG9rdSAoMTA0NFx1MjAxMzEwNDYpIiwi''@;'; put 'put ''RWlzaFx1MDE0ZCAoMTA0Nlx1MjAxMzEwNTMpIiwiVGVuZ2kgKDEwNTNcdTIwMTMxMDU4KSIsIktcdTAxNGRoZWkgKDEwNThcdTIwMTMxMDY1KSIsIkppcnlha3UgKDEwNjVcdTIwMTMxMDY5KSIsIkVua3lcdTAxNmIgKDEwNjlcdTIwMTMxMDc0KSIsIlNoXHUwMTRkaG8gKDEwNzRcdTIwMTMx''@;'; put 'put ''MDc3KSIsIlNoXHUwMTRkcnlha3UgKDEwNzdcdTIwMTMxMDgxKSIsIkVpaFx1MDE0ZCAoMTA4MVx1MjAxMzEwODQpIiwiXHUwMTRjdG9rdSAoMTA4NFx1MjAxMzEwODcpIiwiS2FuamkgKDEwODdcdTIwMTMxMDk0KSIsIkthaFx1MDE0ZCAoMTA5NFx1MjAxMzEwOTYpIiwiRWljaFx1MDE0ZCAo''@;'; put 'put ''MTA5Nlx1MjAxMzEwOTcpIiwiSlx1MDE0ZHRva3UgKDEwOTdcdTIwMTMxMDk5KSIsIktcdTAxNGR3YSAoMTA5OVx1MjAxMzExMDQpIiwiQ2hcdTAxNGRqaSAoMTEwNFx1MjAxMzExMDYpIiwiS2FzaFx1MDE0ZCAoMTEwNlx1MjAxMzExMDgpIiwiVGVubmluICgxMTA4XHUyMDEzMTExMCkiLCJU''@;'; put 'put ''ZW4tZWkgKDExMTAtMTExMykiLCJFaWt5XHUwMTZiICgxMTEzXHUyMDEzMTExOCkiLCJHZW5cdTIwMTllaSAoMTExOFx1MjAxMzExMjApIiwiSFx1MDE0ZGFuICgxMTIwXHUyMDEzMTEyNCkiLCJUZW5qaSAoMTEyNFx1MjAxMzExMjYpIiwiRGFpamkgKDExMjZcdTIwMTMxMTMxKSIsIlRlbnNo''@;'; put 'put ''XHUwMTRkICgxMTMxXHUyMDEzMTEzMikiLCJDaFx1MDE0ZHNoXHUwMTRkICgxMTMyXHUyMDEzMTEzNSkiLCJIXHUwMTRkZW4gKDExMzVcdTIwMTMxMTQxKSIsIkVpamkgKDExNDFcdTIwMTMxMTQyKSIsIktcdTAxNGRqaSAoMTE0Mlx1MjAxMzExNDQpIiwiVGVuXHUyMDE5eVx1MDE0ZCAoMTE0''@;'; put 'put ''NFx1MjAxMzExNDUpIiwiS3lcdTAxNmJhbiAoMTE0NVx1MjAxMzExNTEpIiwiTmlucGVpICgxMTUxXHUyMDEzMTE1NCkiLCJLeVx1MDE2Ymp1ICgxMTU0XHUyMDEzMTE1NikiLCJIXHUwMTRkZ2VuICgxMTU2XHUyMDEzMTE1OSkiLCJIZWlqaSAoMTE1OVx1MjAxMzExNjApIiwiRWlyeWFrdSAo''@;'; put 'put ''MTE2MFx1MjAxMzExNjEpIiwiXHUwMTRjaG8gKDExNjFcdTIwMTMxMTYzKSIsIkNoXHUwMTRka2FuICgxMTYzXHUyMDEzMTE2NSkiLCJFaW1hbiAoMTE2NVx1MjAxMzExNjYpIiwiTmluXHUyMDE5YW4gKDExNjZcdTIwMTMxMTY5KSIsIkthXHUwMTRkICgxMTY5XHUyMDEzMTE3MSkiLCJTaFx1''@;'; put 'put ''MDE0ZGFuICgxMTcxXHUyMDEzMTE3NSkiLCJBbmdlbiAoMTE3NVx1MjAxMzExNzcpIiwiSmlzaFx1MDE0ZCAoMTE3N1x1MjAxMzExODEpIiwiWVx1MDE0ZHdhICgxMTgxXHUyMDEzMTE4MikiLCJKdWVpICgxMTgyXHUyMDEzMTE4NCkiLCJHZW5yeWFrdSAoMTE4NFx1MjAxMzExODUpIiwiQnVu''@;'; put 'put ''amkgKDExODVcdTIwMTMxMTkwKSIsIktlbmt5XHUwMTZiICgxMTkwXHUyMDEzMTE5OSkiLCJTaFx1MDE0ZGppICgxMTk5XHUyMDEzMTIwMSkiLCJLZW5uaW4gKDEyMDFcdTIwMTMxMjA0KSIsIkdlbmt5XHUwMTZiICgxMjA0XHUyMDEzMTIwNikiLCJLZW5cdTIwMTllaSAoMTIwNlx1MjAxMzEy''@;'; put 'put ''MDcpIiwiSlx1MDE0ZGdlbiAoMTIwN1x1MjAxMzEyMTEpIiwiS2Vucnlha3UgKDEyMTFcdTIwMTMxMjEzKSIsIktlbnBcdTAxNGQgKDEyMTNcdTIwMTMxMjE5KSIsIkpcdTAxNGRreVx1MDE2YiAoMTIxOVx1MjAxMzEyMjIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTIyMlx1MjAxMzEyMjQpIiwiR2Vu''@;'; put 'put ''bmluICgxMjI0XHUyMDEzMTIyNSkiLCJLYXJva3UgKDEyMjVcdTIwMTMxMjI3KSIsIkFudGVpICgxMjI3XHUyMDEzMTIyOSkiLCJLYW5raSAoMTIyOVx1MjAxMzEyMzIpIiwiSlx1MDE0ZGVpICgxMjMyXHUyMDEzMTIzMykiLCJUZW5wdWt1ICgxMjMzXHUyMDEzMTIzNCkiLCJCdW5yeWFrdSAo''@;'; put 'put ''MTIzNFx1MjAxMzEyMzUpIiwiS2F0ZWkgKDEyMzVcdTIwMTMxMjM4KSIsIlJ5YWt1bmluICgxMjM4XHUyMDEzMTIzOSkiLCJFblx1MjAxOVx1MDE0ZCAoMTIzOVx1MjAxMzEyNDApIiwiTmluamkgKDEyNDBcdTIwMTMxMjQzKSIsIkthbmdlbiAoMTI0M1x1MjAxMzEyNDcpIiwiSFx1MDE0ZGpp''@;'; put 'put ''ICgxMjQ3XHUyMDEzMTI0OSkiLCJLZW5jaFx1MDE0ZCAoMTI0OVx1MjAxMzEyNTYpIiwiS1x1MDE0ZGdlbiAoMTI1Nlx1MjAxMzEyNTcpIiwiU2hcdTAxNGRrYSAoMTI1N1x1MjAxMzEyNTkpIiwiU2hcdTAxNGRnZW4gKDEyNTlcdTIwMTMxMjYwKSIsIkJ1blx1MjAxOVx1MDE0ZCAoMTI2MFx1''@;'; put 'put ''MjAxMzEyNjEpIiwiS1x1MDE0ZGNoXHUwMTRkICgxMjYxXHUyMDEzMTI2NCkiLCJCdW5cdTIwMTllaSAoMTI2NFx1MjAxMzEyNzUpIiwiS2VuamkgKDEyNzVcdTIwMTMxMjc4KSIsIktcdTAxNGRhbiAoMTI3OFx1MjAxMzEyODgpIiwiU2hcdTAxNGRcdTAxNGQgKDEyODhcdTIwMTMxMjkzKSIs''@;'; put 'put ''IkVpbmluICgxMjkzXHUyMDEzMTI5OSkiLCJTaFx1MDE0ZGFuICgxMjk5XHUyMDEzMTMwMikiLCJLZW5nZW4gKDEzMDJcdTIwMTMxMzAzKSIsIkthZ2VuICgxMzAzXHUyMDEzMTMwNikiLCJUb2t1amkgKDEzMDZcdTIwMTMxMzA4KSIsIkVua3lcdTAxNGQgKDEzMDhcdTIwMTMxMzExKSIsIlx1''@;'; put 'put ''MDE0Y2NoXHUwMTRkICgxMzExXHUyMDEzMTMxMikiLCJTaFx1MDE0ZHdhICgxMzEyXHUyMDEzMTMxNykiLCJCdW5wXHUwMTRkICgxMzE3XHUyMDEzMTMxOSkiLCJHZW5cdTAxNGQgKDEzMTlcdTIwMTMxMzIxKSIsIkdlbmtcdTAxNGQgKDEzMjFcdTIwMTMxMzI0KSIsIlNoXHUwMTRkY2hcdTAx''@;'; put 'put ''NmIgKDEzMjRcdTIwMTMxMzI2KSIsIkthcnlha3UgKDEzMjZcdTIwMTMxMzI5KSIsIkdlbnRva3UgKDEzMjlcdTIwMTMxMzMxKSIsIkdlbmtcdTAxNGQgKDEzMzFcdTIwMTMxMzM0KSIsIktlbm11ICgxMzM0XHUyMDEzMTMzNikiLCJFbmdlbiAoMTMzNlx1MjAxMzEzNDApIiwiS1x1MDE0ZGtv''@;'; put 'put ''a3UgKDEzNDBcdTIwMTMxMzQ2KSIsIlNoXHUwMTRkaGVpICgxMzQ2XHUyMDEzMTM3MCkiLCJLZW50b2t1ICgxMzcwXHUyMDEzMTM3MikiLCJCdW5jaFx1MDE2YiAoMTM3Mlx1MjAxMzEzNzUpIiwiVGVuanUgKDEzNzVcdTIwMTMxMzc5KSIsIktcdTAxNGRyeWFrdSAoMTM3OVx1MjAxMzEzODEp''@;'; put 'put ''IiwiS1x1MDE0ZHdhICgxMzgxXHUyMDEzMTM4NCkiLCJHZW5jaFx1MDE2YiAoMTM4NFx1MjAxMzEzOTIpIiwiTWVpdG9rdSAoMTM4NFx1MjAxMzEzODcpIiwiS2FrZWkgKDEzODdcdTIwMTMxMzg5KSIsIktcdTAxNGRcdTAxNGQgKDEzODlcdTIwMTMxMzkwKSIsIk1laXRva3UgKDEzOTBcdTIw''@;'; put 'put ''MTMxMzk0KSIsIlx1MDE0Y2VpICgxMzk0XHUyMDEzMTQyOCkiLCJTaFx1MDE0ZGNoXHUwMTRkICgxNDI4XHUyMDEzMTQyOSkiLCJFaWt5XHUwMTRkICgxNDI5XHUyMDEzMTQ0MSkiLCJLYWtpdHN1ICgxNDQxXHUyMDEzMTQ0NCkiLCJCdW5cdTIwMTlhbiAoMTQ0NFx1MjAxMzE0NDkpIiwiSFx1''@;'; put 'put ''MDE0ZHRva3UgKDE0NDlcdTIwMTMxNDUyKSIsIkt5XHUwMTRkdG9rdSAoMTQ1Mlx1MjAxMzE0NTUpIiwiS1x1MDE0ZHNoXHUwMTRkICgxNDU1XHUyMDEzMTQ1NykiLCJDaFx1MDE0ZHJva3UgKDE0NTdcdTIwMTMxNDYwKSIsIkthbnNoXHUwMTRkICgxNDYwXHUyMDEzMTQ2NikiLCJCdW5zaFx1''@;'; put 'put ''MDE0ZCAoMTQ2Nlx1MjAxMzE0NjcpIiwiXHUwMTRjbmluICgxNDY3XHUyMDEzMTQ2OSkiLCJCdW5tZWkgKDE0NjlcdTIwMTMxNDg3KSIsIkNoXHUwMTRka3lcdTAxNGQgKDE0ODdcdTIwMTMxNDg5KSIsIkVudG9rdSAoMTQ4OVx1MjAxMzE0OTIpIiwiTWVpXHUwMTRkICgxNDkyXHUyMDEzMTUw''@;'; put 'put ''MSkiLCJCdW5raSAoMTUwMVx1MjAxMzE1MDQpIiwiRWlzaFx1MDE0ZCAoMTUwNFx1MjAxMzE1MjEpIiwiVGFpZWkgKDE1MjFcdTIwMTMxNTI4KSIsIkt5XHUwMTRkcm9rdSAoMTUyOFx1MjAxMzE1MzIpIiwiVGVuYnVuICgxNTMyXHUyMDEzMTU1NSkiLCJLXHUwMTRkamkgKDE1NTVcdTIwMTMx''@;'; put 'put ''NTU4KSIsIkVpcm9rdSAoMTU1OFx1MjAxMzE1NzApIiwiR2Vua2kgKDE1NzBcdTIwMTMxNTczKSIsIlRlbnNoXHUwMTRkICgxNTczXHUyMDEzMTU5MikiLCJCdW5yb2t1ICgxNTkyXHUyMDEzMTU5NikiLCJLZWljaFx1MDE0ZCAoMTU5Nlx1MjAxMzE2MTUpIiwiR2VubmEgKDE2MTVcdTIwMTMx''@;'; put 'put ''NjI0KSIsIkthblx1MjAxOWVpICgxNjI0XHUyMDEzMTY0NCkiLCJTaFx1MDE0ZGhvICgxNjQ0XHUyMDEzMTY0OCkiLCJLZWlhbiAoMTY0OFx1MjAxMzE2NTIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTY1Mlx1MjAxMzE2NTUpIiwiTWVpcmVraSAoMTY1NVx1MjAxMzE2NTgpIiwiTWFuamkgKDE2NThc''@;'; put 'put ''dTIwMTMxNjYxKSIsIkthbmJ1biAoMTY2MVx1MjAxMzE2NzMpIiwiRW5wXHUwMTRkICgxNjczXHUyMDEzMTY4MSkiLCJUZW5uYSAoMTY4MVx1MjAxMzE2ODQpIiwiSlx1MDE0ZGt5XHUwMTRkICgxNjg0XHUyMDEzMTY4OCkiLCJHZW5yb2t1ICgxNjg4XHUyMDEzMTcwNCkiLCJIXHUwMTRkZWkg''@;'; put 'put ''KDE3MDRcdTIwMTMxNzExKSIsIlNoXHUwMTRkdG9rdSAoMTcxMVx1MjAxMzE3MTYpIiwiS3lcdTAxNGRoXHUwMTRkICgxNzE2XHUyMDEzMTczNikiLCJHZW5idW4gKDE3MzZcdTIwMTMxNzQxKSIsIkthbnBcdTAxNGQgKDE3NDFcdTIwMTMxNzQ0KSIsIkVua3lcdTAxNGQgKDE3NDRcdTIwMTMx''@;'; put 'put ''NzQ4KSIsIkthblx1MjAxOWVuICgxNzQ4XHUyMDEzMTc1MSkiLCJIXHUwMTRkcmVraSAoMTc1MVx1MjAxMzE3NjQpIiwiTWVpd2EgKDE3NjRcdTIwMTMxNzcyKSIsIkFuXHUyMDE5ZWkgKDE3NzJcdTIwMTMxNzgxKSIsIlRlbm1laSAoMTc4MVx1MjAxMzE3ODkpIiwiS2Fuc2VpICgxNzg5XHUy''@;'; put 'put ''MDEzMTgwMSkiLCJLeVx1MDE0ZHdhICgxODAxXHUyMDEzMTgwNCkiLCJCdW5rYSAoMTgwNFx1MjAxMzE4MTgpIiwiQnVuc2VpICgxODE4XHUyMDEzMTgzMCkiLCJUZW5wXHUwMTRkICgxODMwXHUyMDEzMTg0NCkiLCJLXHUwMTRka2EgKDE4NDRcdTIwMTMxODQ4KSIsIkthZWkgKDE4NDhcdTIw''@;'; put 'put ''MTMxODU0KSIsIkFuc2VpICgxODU0XHUyMDEzMTg2MCkiLCJNYW5cdTIwMTllbiAoMTg2MFx1MjAxMzE4NjEpIiwiQnVua3lcdTAxNmIgKDE4NjFcdTIwMTMxODY0KSIsIkdlbmppICgxODY0XHUyMDEzMTg2NSkiLCJLZWlcdTAxNGQgKDE4NjVcdTIwMTMxODY4KSIsIk0iLCJUIiwiUyIsIkgi''@;'; put 'put ''XSwic2hvcnQiOlsiVGFpa2EgKDY0NVx1MjAxMzY1MCkiLCJIYWt1Y2hpICg2NTBcdTIwMTM2NzEpIiwiSGFrdWhcdTAxNGQgKDY3Mlx1MjAxMzY4NikiLCJTaHVjaFx1MDE0ZCAoNjg2XHUyMDEzNzAxKSIsIlRhaWhcdTAxNGQgKDcwMVx1MjAxMzcwNCkiLCJLZWl1biAoNzA0XHUyMDEzNzA4''@;'; put 'put ''KSIsIldhZFx1MDE0ZCAoNzA4XHUyMDEzNzE1KSIsIlJlaWtpICg3MTVcdTIwMTM3MTcpIiwiWVx1MDE0ZHJcdTAxNGQgKDcxN1x1MjAxMzcyNCkiLCJKaW5raSAoNzI0XHUyMDEzNzI5KSIsIlRlbnB5XHUwMTRkICg3MjlcdTIwMTM3NDkpIiwiVGVucHlcdTAxNGQta2FtcFx1MDE0ZCAoNzQ5''@;'; put 'put ''LTc0OSkiLCJUZW5weVx1MDE0ZC1zaFx1MDE0ZGhcdTAxNGQgKDc0OS03NTcpIiwiVGVucHlcdTAxNGQtaFx1MDE0ZGppICg3NTctNzY1KSIsIlRlbnB5XHUwMTRkLWppbmdvICg3NjUtNzY3KSIsIkppbmdvLWtlaXVuICg3NjctNzcwKSIsIkhcdTAxNGRraSAoNzcwXHUyMDEzNzgwKSIsIlRl''@;'; put 'put ''bi1cdTAxNGQgKDc4MS03ODIpIiwiRW5yeWFrdSAoNzgyXHUyMDEzODA2KSIsIkRhaWRcdTAxNGQgKDgwNlx1MjAxMzgxMCkiLCJLXHUwMTRkbmluICg4MTBcdTIwMTM4MjQpIiwiVGVuY2hcdTAxNGQgKDgyNFx1MjAxMzgzNCkiLCJKXHUwMTRkd2EgKDgzNFx1MjAxMzg0OCkiLCJLYWpcdTAx''@;'; put 'put ''NGQgKDg0OFx1MjAxMzg1MSkiLCJOaW5qdSAoODUxXHUyMDEzODU0KSIsIlNhaWtcdTAxNGQgKDg1NFx1MjAxMzg1NykiLCJUZW4tYW4gKDg1Ny04NTkpIiwiSlx1MDE0ZGdhbiAoODU5XHUyMDEzODc3KSIsIkdhbmd5XHUwMTRkICg4NzdcdTIwMTM4ODUpIiwiTmlubmEgKDg4NVx1MjAxMzg4''@;'; put 'put ''OSkiLCJLYW5weVx1MDE0ZCAoODg5XHUyMDEzODk4KSIsIlNoXHUwMTRkdGFpICg4OThcdTIwMTM5MDEpIiwiRW5naSAoOTAxXHUyMDEzOTIzKSIsIkVuY2hcdTAxNGQgKDkyM1x1MjAxMzkzMSkiLCJKXHUwMTRkaGVpICg5MzFcdTIwMTM5MzgpIiwiVGVuZ3lcdTAxNGQgKDkzOFx1MjAxMzk0''@;'; put 'put ''NykiLCJUZW5yeWFrdSAoOTQ3XHUyMDEzOTU3KSIsIlRlbnRva3UgKDk1N1x1MjAxMzk2MSkiLCJcdTAxNGN3YSAoOTYxXHUyMDEzOTY0KSIsIktcdTAxNGRoXHUwMTRkICg5NjRcdTIwMTM5NjgpIiwiQW5uYSAoOTY4XHUyMDEzOTcwKSIsIlRlbnJva3UgKDk3MFx1MjAxMzk3MykiLCJUZW5c''@;'; put 'put ''dTIwMTllbiAoOTczXHUyMDEzOTc2KSIsIkpcdTAxNGRnZW4gKDk3Nlx1MjAxMzk3OCkiLCJUZW5nZW4gKDk3OFx1MjAxMzk4MykiLCJFaWthbiAoOTgzXHUyMDEzOTg1KSIsIkthbm5hICg5ODVcdTIwMTM5ODcpIiwiRWllbiAoOTg3XHUyMDEzOTg5KSIsIkVpc28gKDk4OVx1MjAxMzk5MCki''@;'; put 'put ''LCJTaFx1MDE0ZHJ5YWt1ICg5OTBcdTIwMTM5OTUpIiwiQ2hcdTAxNGR0b2t1ICg5OTVcdTIwMTM5OTkpIiwiQ2hcdTAxNGRoXHUwMTRkICg5OTlcdTIwMTMxMDA0KSIsIkthbmtcdTAxNGQgKDEwMDRcdTIwMTMxMDEyKSIsIkNoXHUwMTRkd2EgKDEwMTJcdTIwMTMxMDE3KSIsIkthbm5pbiAo''@;'; put 'put ''MTAxN1x1MjAxMzEwMjEpIiwiSmlhbiAoMTAyMVx1MjAxMzEwMjQpIiwiTWFuanUgKDEwMjRcdTIwMTMxMDI4KSIsIkNoXHUwMTRkZ2VuICgxMDI4XHUyMDEzMTAzNykiLCJDaFx1MDE0ZHJ5YWt1ICgxMDM3XHUyMDEzMTA0MCkiLCJDaFx1MDE0ZGt5XHUwMTZiICgxMDQwXHUyMDEzMTA0NCki''@;'; put 'put ''LCJLYW50b2t1ICgxMDQ0XHUyMDEzMTA0NikiLCJFaXNoXHUwMTRkICgxMDQ2XHUyMDEzMTA1MykiLCJUZW5naSAoMTA1M1x1MjAxMzEwNTgpIiwiS1x1MDE0ZGhlaSAoMTA1OFx1MjAxMzEwNjUpIiwiSmlyeWFrdSAoMTA2NVx1MjAxMzEwNjkpIiwiRW5reVx1MDE2YiAoMTA2OVx1MjAxMzEw''@;'; put 'put ''NzQpIiwiU2hcdTAxNGRobyAoMTA3NFx1MjAxMzEwNzcpIiwiU2hcdTAxNGRyeWFrdSAoMTA3N1x1MjAxMzEwODEpIiwiRWloXHUwMTRkICgxMDgxXHUyMDEzMTA4NCkiLCJcdTAxNGN0b2t1ICgxMDg0XHUyMDEzMTA4NykiLCJLYW5qaSAoMTA4N1x1MjAxMzEwOTQpIiwiS2FoXHUwMTRkICgx''@;'; put 'put ''MDk0XHUyMDEzMTA5NikiLCJFaWNoXHUwMTRkICgxMDk2XHUyMDEzMTA5NykiLCJKXHUwMTRkdG9rdSAoMTA5N1x1MjAxMzEwOTkpIiwiS1x1MDE0ZHdhICgxMDk5XHUyMDEzMTEwNCkiLCJDaFx1MDE0ZGppICgxMTA0XHUyMDEzMTEwNikiLCJLYXNoXHUwMTRkICgxMTA2XHUyMDEzMTEwOCki''@;'; put 'put ''LCJUZW5uaW4gKDExMDhcdTIwMTMxMTEwKSIsIlRlbi1laSAoMTExMC0xMTEzKSIsIkVpa3lcdTAxNmIgKDExMTNcdTIwMTMxMTE4KSIsIkdlblx1MjAxOWVpICgxMTE4XHUyMDEzMTEyMCkiLCJIXHUwMTRkYW4gKDExMjBcdTIwMTMxMTI0KSIsIlRlbmppICgxMTI0XHUyMDEzMTEyNikiLCJE''@;'; put 'put ''YWlqaSAoMTEyNlx1MjAxMzExMzEpIiwiVGVuc2hcdTAxNGQgKDExMzFcdTIwMTMxMTMyKSIsIkNoXHUwMTRkc2hcdTAxNGQgKDExMzJcdTIwMTMxMTM1KSIsIkhcdTAxNGRlbiAoMTEzNVx1MjAxMzExNDEpIiwiRWlqaSAoMTE0MVx1MjAxMzExNDIpIiwiS1x1MDE0ZGppICgxMTQyXHUyMDEz''@;'; put 'put ''MTE0NCkiLCJUZW5cdTIwMTl5XHUwMTRkICgxMTQ0XHUyMDEzMTE0NSkiLCJLeVx1MDE2YmFuICgxMTQ1XHUyMDEzMTE1MSkiLCJOaW5wZWkgKDExNTFcdTIwMTMxMTU0KSIsIkt5XHUwMTZianUgKDExNTRcdTIwMTMxMTU2KSIsIkhcdTAxNGRnZW4gKDExNTZcdTIwMTMxMTU5KSIsIkhlaWpp''@;'; put 'put ''ICgxMTU5XHUyMDEzMTE2MCkiLCJFaXJ5YWt1ICgxMTYwXHUyMDEzMTE2MSkiLCJcdTAxNGNobyAoMTE2MVx1MjAxMzExNjMpIiwiQ2hcdTAxNGRrYW4gKDExNjNcdTIwMTMxMTY1KSIsIkVpbWFuICgxMTY1XHUyMDEzMTE2NikiLCJOaW5cdTIwMTlhbiAoMTE2Nlx1MjAxMzExNjkpIiwiS2Fc''@;'; put 'put ''dTAxNGQgKDExNjlcdTIwMTMxMTcxKSIsIlNoXHUwMTRkYW4gKDExNzFcdTIwMTMxMTc1KSIsIkFuZ2VuICgxMTc1XHUyMDEzMTE3NykiLCJKaXNoXHUwMTRkICgxMTc3XHUyMDEzMTE4MSkiLCJZXHUwMTRkd2EgKDExODFcdTIwMTMxMTgyKSIsIkp1ZWkgKDExODJcdTIwMTMxMTg0KSIsIkdl''@;'; put 'put ''bnJ5YWt1ICgxMTg0XHUyMDEzMTE4NSkiLCJCdW5qaSAoMTE4NVx1MjAxMzExOTApIiwiS2Vua3lcdTAxNmIgKDExOTBcdTIwMTMxMTk5KSIsIlNoXHUwMTRkamkgKDExOTlcdTIwMTMxMjAxKSIsIktlbm5pbiAoMTIwMVx1MjAxMzEyMDQpIiwiR2Vua3lcdTAxNmIgKDEyMDRcdTIwMTMxMjA2''@;'; put 'put ''KSIsIktlblx1MjAxOWVpICgxMjA2XHUyMDEzMTIwNykiLCJKXHUwMTRkZ2VuICgxMjA3XHUyMDEzMTIxMSkiLCJLZW5yeWFrdSAoMTIxMVx1MjAxMzEyMTMpIiwiS2VucFx1MDE0ZCAoMTIxM1x1MjAxMzEyMTkpIiwiSlx1MDE0ZGt5XHUwMTZiICgxMjE5XHUyMDEzMTIyMikiLCJKXHUwMTRk''@;'; put 'put ''XHUwMTRkICgxMjIyXHUyMDEzMTIyNCkiLCJHZW5uaW4gKDEyMjRcdTIwMTMxMjI1KSIsIkthcm9rdSAoMTIyNVx1MjAxMzEyMjcpIiwiQW50ZWkgKDEyMjdcdTIwMTMxMjI5KSIsIkthbmtpICgxMjI5XHUyMDEzMTIzMikiLCJKXHUwMTRkZWkgKDEyMzJcdTIwMTMxMjMzKSIsIlRlbnB1a3Ug''@;'; put 'put ''KDEyMzNcdTIwMTMxMjM0KSIsIkJ1bnJ5YWt1ICgxMjM0XHUyMDEzMTIzNSkiLCJLYXRlaSAoMTIzNVx1MjAxMzEyMzgpIiwiUnlha3VuaW4gKDEyMzhcdTIwMTMxMjM5KSIsIkVuXHUyMDE5XHUwMTRkICgxMjM5XHUyMDEzMTI0MCkiLCJOaW5qaSAoMTI0MFx1MjAxMzEyNDMpIiwiS2FuZ2Vu''@;'; put 'put ''ICgxMjQzXHUyMDEzMTI0NykiLCJIXHUwMTRkamkgKDEyNDdcdTIwMTMxMjQ5KSIsIktlbmNoXHUwMTRkICgxMjQ5XHUyMDEzMTI1NikiLCJLXHUwMTRkZ2VuICgxMjU2XHUyMDEzMTI1NykiLCJTaFx1MDE0ZGthICgxMjU3XHUyMDEzMTI1OSkiLCJTaFx1MDE0ZGdlbiAoMTI1OVx1MjAxMzEy''@;'; put 'put ''NjApIiwiQnVuXHUyMDE5XHUwMTRkICgxMjYwXHUyMDEzMTI2MSkiLCJLXHUwMTRkY2hcdTAxNGQgKDEyNjFcdTIwMTMxMjY0KSIsIkJ1blx1MjAxOWVpICgxMjY0XHUyMDEzMTI3NSkiLCJLZW5qaSAoMTI3NVx1MjAxMzEyNzgpIiwiS1x1MDE0ZGFuICgxMjc4XHUyMDEzMTI4OCkiLCJTaFx1''@;'; put 'put ''MDE0ZFx1MDE0ZCAoMTI4OFx1MjAxMzEyOTMpIiwiRWluaW4gKDEyOTNcdTIwMTMxMjk5KSIsIlNoXHUwMTRkYW4gKDEyOTlcdTIwMTMxMzAyKSIsIktlbmdlbiAoMTMwMlx1MjAxMzEzMDMpIiwiS2FnZW4gKDEzMDNcdTIwMTMxMzA2KSIsIlRva3VqaSAoMTMwNlx1MjAxMzEzMDgpIiwiRW5r''@;'; put 'put ''eVx1MDE0ZCAoMTMwOFx1MjAxMzEzMTEpIiwiXHUwMTRjY2hcdTAxNGQgKDEzMTFcdTIwMTMxMzEyKSIsIlNoXHUwMTRkd2EgKDEzMTJcdTIwMTMxMzE3KSIsIkJ1bnBcdTAxNGQgKDEzMTdcdTIwMTMxMzE5KSIsIkdlblx1MDE0ZCAoMTMxOVx1MjAxMzEzMjEpIiwiR2Vua1x1MDE0ZCAoMTMy''@;'; put 'put ''MVx1MjAxMzEzMjQpIiwiU2hcdTAxNGRjaFx1MDE2YiAoMTMyNFx1MjAxMzEzMjYpIiwiS2FyeWFrdSAoMTMyNlx1MjAxMzEzMjkpIiwiR2VudG9rdSAoMTMyOVx1MjAxMzEzMzEpIiwiR2Vua1x1MDE0ZCAoMTMzMVx1MjAxMzEzMzQpIiwiS2VubXUgKDEzMzRcdTIwMTMxMzM2KSIsIkVuZ2Vu''@;'; put 'put ''ICgxMzM2XHUyMDEzMTM0MCkiLCJLXHUwMTRka29rdSAoMTM0MFx1MjAxMzEzNDYpIiwiU2hcdTAxNGRoZWkgKDEzNDZcdTIwMTMxMzcwKSIsIktlbnRva3UgKDEzNzBcdTIwMTMxMzcyKSIsIkJ1bmNoXHUwMTZiICgxMzcyXHUyMDEzMTM3NSkiLCJUZW5qdSAoMTM3NVx1MjAxMzEzNzkpIiwi''@;'; put 'put ''S1x1MDE0ZHJ5YWt1ICgxMzc5XHUyMDEzMTM4MSkiLCJLXHUwMTRkd2EgKDEzODFcdTIwMTMxMzg0KSIsIkdlbmNoXHUwMTZiICgxMzg0XHUyMDEzMTM5MikiLCJNZWl0b2t1ICgxMzg0XHUyMDEzMTM4NykiLCJLYWtlaSAoMTM4N1x1MjAxMzEzODkpIiwiS1x1MDE0ZFx1MDE0ZCAoMTM4OVx1''@;'; put 'put ''MjAxMzEzOTApIiwiTWVpdG9rdSAoMTM5MFx1MjAxMzEzOTQpIiwiXHUwMTRjZWkgKDEzOTRcdTIwMTMxNDI4KSIsIlNoXHUwMTRkY2hcdTAxNGQgKDE0MjhcdTIwMTMxNDI5KSIsIkVpa3lcdTAxNGQgKDE0MjlcdTIwMTMxNDQxKSIsIktha2l0c3UgKDE0NDFcdTIwMTMxNDQ0KSIsIkJ1blx1''@;'; put 'put ''MjAxOWFuICgxNDQ0XHUyMDEzMTQ0OSkiLCJIXHUwMTRkdG9rdSAoMTQ0OVx1MjAxMzE0NTIpIiwiS3lcdTAxNGR0b2t1ICgxNDUyXHUyMDEzMTQ1NSkiLCJLXHUwMTRkc2hcdTAxNGQgKDE0NTVcdTIwMTMxNDU3KSIsIkNoXHUwMTRkcm9rdSAoMTQ1N1x1MjAxMzE0NjApIiwiS2Fuc2hcdTAx''@;'; put 'put ''NGQgKDE0NjBcdTIwMTMxNDY2KSIsIkJ1bnNoXHUwMTRkICgxNDY2XHUyMDEzMTQ2NykiLCJcdTAxNGNuaW4gKDE0NjdcdTIwMTMxNDY5KSIsIkJ1bm1laSAoMTQ2OVx1MjAxMzE0ODcpIiwiQ2hcdTAxNGRreVx1MDE0ZCAoMTQ4N1x1MjAxMzE0ODkpIiwiRW50b2t1ICgxNDg5XHUyMDEzMTQ5''@;'; put 'put ''MikiLCJNZWlcdTAxNGQgKDE0OTJcdTIwMTMxNTAxKSIsIkJ1bmtpICgxNTAxXHUyMDEzMTUwNCkiLCJFaXNoXHUwMTRkICgxNTA0XHUyMDEzMTUyMSkiLCJUYWllaSAoMTUyMVx1MjAxMzE1MjgpIiwiS3lcdTAxNGRyb2t1ICgxNTI4XHUyMDEzMTUzMikiLCJUZW5idW4gKDE1MzJcdTIwMTMx''@;'; put 'put ''NTU1KSIsIktcdTAxNGRqaSAoMTU1NVx1MjAxMzE1NTgpIiwiRWlyb2t1ICgxNTU4XHUyMDEzMTU3MCkiLCJHZW5raSAoMTU3MFx1MjAxMzE1NzMpIiwiVGVuc2hcdTAxNGQgKDE1NzNcdTIwMTMxNTkyKSIsIkJ1bnJva3UgKDE1OTJcdTIwMTMxNTk2KSIsIktlaWNoXHUwMTRkICgxNTk2XHUy''@;'; put 'put ''MDEzMTYxNSkiLCJHZW5uYSAoMTYxNVx1MjAxMzE2MjQpIiwiS2FuXHUyMDE5ZWkgKDE2MjRcdTIwMTMxNjQ0KSIsIlNoXHUwMTRkaG8gKDE2NDRcdTIwMTMxNjQ4KSIsIktlaWFuICgxNjQ4XHUyMDEzMTY1MikiLCJKXHUwMTRkXHUwMTRkICgxNjUyXHUyMDEzMTY1NSkiLCJNZWlyZWtpICgx''@;'; put 'put ''NjU1XHUyMDEzMTY1OCkiLCJNYW5qaSAoMTY1OFx1MjAxMzE2NjEpIiwiS2FuYnVuICgxNjYxXHUyMDEzMTY3MykiLCJFbnBcdTAxNGQgKDE2NzNcdTIwMTMxNjgxKSIsIlRlbm5hICgxNjgxXHUyMDEzMTY4NCkiLCJKXHUwMTRka3lcdTAxNGQgKDE2ODRcdTIwMTMxNjg4KSIsIkdlbnJva3Ug''@;'; put 'put ''KDE2ODhcdTIwMTMxNzA0KSIsIkhcdTAxNGRlaSAoMTcwNFx1MjAxMzE3MTEpIiwiU2hcdTAxNGR0b2t1ICgxNzExXHUyMDEzMTcxNikiLCJLeVx1MDE0ZGhcdTAxNGQgKDE3MTZcdTIwMTMxNzM2KSIsIkdlbmJ1biAoMTczNlx1MjAxMzE3NDEpIiwiS2FucFx1MDE0ZCAoMTc0MVx1MjAxMzE3''@;'; put 'put ''NDQpIiwiRW5reVx1MDE0ZCAoMTc0NFx1MjAxMzE3NDgpIiwiS2FuXHUyMDE5ZW4gKDE3NDhcdTIwMTMxNzUxKSIsIkhcdTAxNGRyZWtpICgxNzUxXHUyMDEzMTc2NCkiLCJNZWl3YSAoMTc2NFx1MjAxMzE3NzIpIiwiQW5cdTIwMTllaSAoMTc3Mlx1MjAxMzE3ODEpIiwiVGVubWVpICgxNzgx''@;'; put 'put ''XHUyMDEzMTc4OSkiLCJLYW5zZWkgKDE3ODlcdTIwMTMxODAxKSIsIkt5XHUwMTRkd2EgKDE4MDFcdTIwMTMxODA0KSIsIkJ1bmthICgxODA0XHUyMDEzMTgxOCkiLCJCdW5zZWkgKDE4MThcdTIwMTMxODMwKSIsIlRlbnBcdTAxNGQgKDE4MzBcdTIwMTMxODQ0KSIsIktcdTAxNGRrYSAoMTg0''@;'; put 'put ''NFx1MjAxMzE4NDgpIiwiS2FlaSAoMTg0OFx1MjAxMzE4NTQpIiwiQW5zZWkgKDE4NTRcdTIwMTMxODYwKSIsIk1hblx1MjAxOWVuICgxODYwXHUyMDEzMTg2MSkiLCJCdW5reVx1MDE2YiAoMTg2MVx1MjAxMzE4NjQpIiwiR2VuamkgKDE4NjRcdTIwMTMxODY1KSIsIktlaVx1MDE0ZCAoMTg2''@;'; put 'put ''NVx1MjAxMzE4NjgpIiwiTWVpamkiLCJUYWlzaFx1MDE0ZCIsIlNoXHUwMTRkd2EiLCJIZWlzZWkiXSwibG9uZyI6WyJUYWlrYSAoNjQ1XHUyMDEzNjUwKSIsIkhha3VjaGkgKDY1MFx1MjAxMzY3MSkiLCJIYWt1aFx1MDE0ZCAoNjcyXHUyMDEzNjg2KSIsIlNodWNoXHUwMTRkICg2ODZcdTIw''@;'; put 'put ''MTM3MDEpIiwiVGFpaFx1MDE0ZCAoNzAxXHUyMDEzNzA0KSIsIktlaXVuICg3MDRcdTIwMTM3MDgpIiwiV2FkXHUwMTRkICg3MDhcdTIwMTM3MTUpIiwiUmVpa2kgKDcxNVx1MjAxMzcxNykiLCJZXHUwMTRkclx1MDE0ZCAoNzE3XHUyMDEzNzI0KSIsIkppbmtpICg3MjRcdTIwMTM3MjkpIiwi''@;'; put 'put ''VGVucHlcdTAxNGQgKDcyOVx1MjAxMzc0OSkiLCJUZW5weVx1MDE0ZC1rYW1wXHUwMTRkICg3NDktNzQ5KSIsIlRlbnB5XHUwMTRkLXNoXHUwMTRkaFx1MDE0ZCAoNzQ5LTc1NykiLCJUZW5weVx1MDE0ZC1oXHUwMTRkamkgKDc1Ny03NjUpIiwiVGVucHlcdTAxNGQtamluZ28gKDc2NS03Njcp''@;'; put 'put ''IiwiSmluZ28ta2VpdW4gKDc2Ny03NzApIiwiSFx1MDE0ZGtpICg3NzBcdTIwMTM3ODApIiwiVGVuLVx1MDE0ZCAoNzgxLTc4MikiLCJFbnJ5YWt1ICg3ODJcdTIwMTM4MDYpIiwiRGFpZFx1MDE0ZCAoODA2XHUyMDEzODEwKSIsIktcdTAxNGRuaW4gKDgxMFx1MjAxMzgyNCkiLCJUZW5jaFx1''@;'; put 'put ''MDE0ZCAoODI0XHUyMDEzODM0KSIsIkpcdTAxNGR3YSAoODM0XHUyMDEzODQ4KSIsIkthalx1MDE0ZCAoODQ4XHUyMDEzODUxKSIsIk5pbmp1ICg4NTFcdTIwMTM4NTQpIiwiU2Fpa1x1MDE0ZCAoODU0XHUyMDEzODU3KSIsIlRlbi1hbiAoODU3LTg1OSkiLCJKXHUwMTRkZ2FuICg4NTlcdTIw''@;'; put 'put ''MTM4NzcpIiwiR2FuZ3lcdTAxNGQgKDg3N1x1MjAxMzg4NSkiLCJOaW5uYSAoODg1XHUyMDEzODg5KSIsIkthbnB5XHUwMTRkICg4ODlcdTIwMTM4OTgpIiwiU2hcdTAxNGR0YWkgKDg5OFx1MjAxMzkwMSkiLCJFbmdpICg5MDFcdTIwMTM5MjMpIiwiRW5jaFx1MDE0ZCAoOTIzXHUyMDEzOTMx''@;'; put 'put ''KSIsIkpcdTAxNGRoZWkgKDkzMVx1MjAxMzkzOCkiLCJUZW5neVx1MDE0ZCAoOTM4XHUyMDEzOTQ3KSIsIlRlbnJ5YWt1ICg5NDdcdTIwMTM5NTcpIiwiVGVudG9rdSAoOTU3XHUyMDEzOTYxKSIsIlx1MDE0Y3dhICg5NjFcdTIwMTM5NjQpIiwiS1x1MDE0ZGhcdTAxNGQgKDk2NFx1MjAxMzk2''@;'; put 'put ''OCkiLCJBbm5hICg5NjhcdTIwMTM5NzApIiwiVGVucm9rdSAoOTcwXHUyMDEzOTczKSIsIlRlblx1MjAxOWVuICg5NzNcdTIwMTM5NzYpIiwiSlx1MDE0ZGdlbiAoOTc2XHUyMDEzOTc4KSIsIlRlbmdlbiAoOTc4XHUyMDEzOTgzKSIsIkVpa2FuICg5ODNcdTIwMTM5ODUpIiwiS2FubmEgKDk4''@;'; put 'put ''NVx1MjAxMzk4NykiLCJFaWVuICg5ODdcdTIwMTM5ODkpIiwiRWlzbyAoOTg5XHUyMDEzOTkwKSIsIlNoXHUwMTRkcnlha3UgKDk5MFx1MjAxMzk5NSkiLCJDaFx1MDE0ZHRva3UgKDk5NVx1MjAxMzk5OSkiLCJDaFx1MDE0ZGhcdTAxNGQgKDk5OVx1MjAxMzEwMDQpIiwiS2Fua1x1MDE0ZCAo''@;'; put 'put ''MTAwNFx1MjAxMzEwMTIpIiwiQ2hcdTAxNGR3YSAoMTAxMlx1MjAxMzEwMTcpIiwiS2FubmluICgxMDE3XHUyMDEzMTAyMSkiLCJKaWFuICgxMDIxXHUyMDEzMTAyNCkiLCJNYW5qdSAoMTAyNFx1MjAxMzEwMjgpIiwiQ2hcdTAxNGRnZW4gKDEwMjhcdTIwMTMxMDM3KSIsIkNoXHUwMTRkcnlh''@;'; put 'put ''a3UgKDEwMzdcdTIwMTMxMDQwKSIsIkNoXHUwMTRka3lcdTAxNmIgKDEwNDBcdTIwMTMxMDQ0KSIsIkthbnRva3UgKDEwNDRcdTIwMTMxMDQ2KSIsIkVpc2hcdTAxNGQgKDEwNDZcdTIwMTMxMDUzKSIsIlRlbmdpICgxMDUzXHUyMDEzMTA1OCkiLCJLXHUwMTRkaGVpICgxMDU4XHUyMDEzMTA2''@;'; put 'put ''NSkiLCJKaXJ5YWt1ICgxMDY1XHUyMDEzMTA2OSkiLCJFbmt5XHUwMTZiICgxMDY5XHUyMDEzMTA3NCkiLCJTaFx1MDE0ZGhvICgxMDc0XHUyMDEzMTA3NykiLCJTaFx1MDE0ZHJ5YWt1ICgxMDc3XHUyMDEzMTA4MSkiLCJFaWhcdTAxNGQgKDEwODFcdTIwMTMxMDg0KSIsIlx1MDE0Y3Rva3Ug''@;'; put 'put ''KDEwODRcdTIwMTMxMDg3KSIsIkthbmppICgxMDg3XHUyMDEzMTA5NCkiLCJLYWhcdTAxNGQgKDEwOTRcdTIwMTMxMDk2KSIsIkVpY2hcdTAxNGQgKDEwOTZcdTIwMTMxMDk3KSIsIkpcdTAxNGR0b2t1ICgxMDk3XHUyMDEzMTA5OSkiLCJLXHUwMTRkd2EgKDEwOTlcdTIwMTMxMTA0KSIsIkNo''@;'; put 'put ''XHUwMTRkamkgKDExMDRcdTIwMTMxMTA2KSIsIkthc2hcdTAxNGQgKDExMDZcdTIwMTMxMTA4KSIsIlRlbm5pbiAoMTEwOFx1MjAxMzExMTApIiwiVGVuLWVpICgxMTEwLTExMTMpIiwiRWlreVx1MDE2YiAoMTExM1x1MjAxMzExMTgpIiwiR2VuXHUyMDE5ZWkgKDExMThcdTIwMTMxMTIwKSIs''@;'; put 'put ''IkhcdTAxNGRhbiAoMTEyMFx1MjAxMzExMjQpIiwiVGVuamkgKDExMjRcdTIwMTMxMTI2KSIsIkRhaWppICgxMTI2XHUyMDEzMTEzMSkiLCJUZW5zaFx1MDE0ZCAoMTEzMVx1MjAxMzExMzIpIiwiQ2hcdTAxNGRzaFx1MDE0ZCAoMTEzMlx1MjAxMzExMzUpIiwiSFx1MDE0ZGVuICgxMTM1XHUy''@;'; put 'put ''MDEzMTE0MSkiLCJFaWppICgxMTQxXHUyMDEzMTE0MikiLCJLXHUwMTRkamkgKDExNDJcdTIwMTMxMTQ0KSIsIlRlblx1MjAxOXlcdTAxNGQgKDExNDRcdTIwMTMxMTQ1KSIsIkt5XHUwMTZiYW4gKDExNDVcdTIwMTMxMTUxKSIsIk5pbnBlaSAoMTE1MVx1MjAxMzExNTQpIiwiS3lcdTAxNmJq''@;'; put 'put ''dSAoMTE1NFx1MjAxMzExNTYpIiwiSFx1MDE0ZGdlbiAoMTE1Nlx1MjAxMzExNTkpIiwiSGVpamkgKDExNTlcdTIwMTMxMTYwKSIsIkVpcnlha3UgKDExNjBcdTIwMTMxMTYxKSIsIlx1MDE0Y2hvICgxMTYxXHUyMDEzMTE2MykiLCJDaFx1MDE0ZGthbiAoMTE2M1x1MjAxMzExNjUpIiwiRWlt''@;'; put 'put ''YW4gKDExNjVcdTIwMTMxMTY2KSIsIk5pblx1MjAxOWFuICgxMTY2XHUyMDEzMTE2OSkiLCJLYVx1MDE0ZCAoMTE2OVx1MjAxMzExNzEpIiwiU2hcdTAxNGRhbiAoMTE3MVx1MjAxMzExNzUpIiwiQW5nZW4gKDExNzVcdTIwMTMxMTc3KSIsIkppc2hcdTAxNGQgKDExNzdcdTIwMTMxMTgxKSIs''@;'; put 'put ''IllcdTAxNGR3YSAoMTE4MVx1MjAxMzExODIpIiwiSnVlaSAoMTE4Mlx1MjAxMzExODQpIiwiR2Vucnlha3UgKDExODRcdTIwMTMxMTg1KSIsIkJ1bmppICgxMTg1XHUyMDEzMTE5MCkiLCJLZW5reVx1MDE2YiAoMTE5MFx1MjAxMzExOTkpIiwiU2hcdTAxNGRqaSAoMTE5OVx1MjAxMzEyMDEp''@;'; put 'put ''IiwiS2VubmluICgxMjAxXHUyMDEzMTIwNCkiLCJHZW5reVx1MDE2YiAoMTIwNFx1MjAxMzEyMDYpIiwiS2VuXHUyMDE5ZWkgKDEyMDZcdTIwMTMxMjA3KSIsIkpcdTAxNGRnZW4gKDEyMDdcdTIwMTMxMjExKSIsIktlbnJ5YWt1ICgxMjExXHUyMDEzMTIxMykiLCJLZW5wXHUwMTRkICgxMjEz''@;'; put 'put ''XHUyMDEzMTIxOSkiLCJKXHUwMTRka3lcdTAxNmIgKDEyMTlcdTIwMTMxMjIyKSIsIkpcdTAxNGRcdTAxNGQgKDEyMjJcdTIwMTMxMjI0KSIsIkdlbm5pbiAoMTIyNFx1MjAxMzEyMjUpIiwiS2Fyb2t1ICgxMjI1XHUyMDEzMTIyNykiLCJBbnRlaSAoMTIyN1x1MjAxMzEyMjkpIiwiS2Fua2kg''@;'; put 'put ''KDEyMjlcdTIwMTMxMjMyKSIsIkpcdTAxNGRlaSAoMTIzMlx1MjAxMzEyMzMpIiwiVGVucHVrdSAoMTIzM1x1MjAxMzEyMzQpIiwiQnVucnlha3UgKDEyMzRcdTIwMTMxMjM1KSIsIkthdGVpICgxMjM1XHUyMDEzMTIzOCkiLCJSeWFrdW5pbiAoMTIzOFx1MjAxMzEyMzkpIiwiRW5cdTIwMTlc''@;'; put 'put ''dTAxNGQgKDEyMzlcdTIwMTMxMjQwKSIsIk5pbmppICgxMjQwXHUyMDEzMTI0MykiLCJLYW5nZW4gKDEyNDNcdTIwMTMxMjQ3KSIsIkhcdTAxNGRqaSAoMTI0N1x1MjAxMzEyNDkpIiwiS2VuY2hcdTAxNGQgKDEyNDlcdTIwMTMxMjU2KSIsIktcdTAxNGRnZW4gKDEyNTZcdTIwMTMxMjU3KSIs''@;'; put 'put ''IlNoXHUwMTRka2EgKDEyNTdcdTIwMTMxMjU5KSIsIlNoXHUwMTRkZ2VuICgxMjU5XHUyMDEzMTI2MCkiLCJCdW5cdTIwMTlcdTAxNGQgKDEyNjBcdTIwMTMxMjYxKSIsIktcdTAxNGRjaFx1MDE0ZCAoMTI2MVx1MjAxMzEyNjQpIiwiQnVuXHUyMDE5ZWkgKDEyNjRcdTIwMTMxMjc1KSIsIktl''@;'; put 'put ''bmppICgxMjc1XHUyMDEzMTI3OCkiLCJLXHUwMTRkYW4gKDEyNzhcdTIwMTMxMjg4KSIsIlNoXHUwMTRkXHUwMTRkICgxMjg4XHUyMDEzMTI5MykiLCJFaW5pbiAoMTI5M1x1MjAxMzEyOTkpIiwiU2hcdTAxNGRhbiAoMTI5OVx1MjAxMzEzMDIpIiwiS2VuZ2VuICgxMzAyXHUyMDEzMTMwMyki''@;'; put 'put ''LCJLYWdlbiAoMTMwM1x1MjAxMzEzMDYpIiwiVG9rdWppICgxMzA2XHUyMDEzMTMwOCkiLCJFbmt5XHUwMTRkICgxMzA4XHUyMDEzMTMxMSkiLCJcdTAxNGNjaFx1MDE0ZCAoMTMxMVx1MjAxMzEzMTIpIiwiU2hcdTAxNGR3YSAoMTMxMlx1MjAxMzEzMTcpIiwiQnVucFx1MDE0ZCAoMTMxN1x1''@;'; put 'put ''MjAxMzEzMTkpIiwiR2VuXHUwMTRkICgxMzE5XHUyMDEzMTMyMSkiLCJHZW5rXHUwMTRkICgxMzIxXHUyMDEzMTMyNCkiLCJTaFx1MDE0ZGNoXHUwMTZiICgxMzI0XHUyMDEzMTMyNikiLCJLYXJ5YWt1ICgxMzI2XHUyMDEzMTMyOSkiLCJHZW50b2t1ICgxMzI5XHUyMDEzMTMzMSkiLCJHZW5r''@;'; put 'put ''XHUwMTRkICgxMzMxXHUyMDEzMTMzNCkiLCJLZW5tdSAoMTMzNFx1MjAxMzEzMzYpIiwiRW5nZW4gKDEzMzZcdTIwMTMxMzQwKSIsIktcdTAxNGRrb2t1ICgxMzQwXHUyMDEzMTM0NikiLCJTaFx1MDE0ZGhlaSAoMTM0Nlx1MjAxMzEzNzApIiwiS2VudG9rdSAoMTM3MFx1MjAxMzEzNzIpIiwi''@;'; put 'put ''QnVuY2hcdTAxNmIgKDEzNzJcdTIwMTMxMzc1KSIsIlRlbmp1ICgxMzc1XHUyMDEzMTM3OSkiLCJLXHUwMTRkcnlha3UgKDEzNzlcdTIwMTMxMzgxKSIsIktcdTAxNGR3YSAoMTM4MVx1MjAxMzEzODQpIiwiR2VuY2hcdTAxNmIgKDEzODRcdTIwMTMxMzkyKSIsIk1laXRva3UgKDEzODRcdTIw''@;'; put 'put ''MTMxMzg3KSIsIktha2VpICgxMzg3XHUyMDEzMTM4OSkiLCJLXHUwMTRkXHUwMTRkICgxMzg5XHUyMDEzMTM5MCkiLCJNZWl0b2t1ICgxMzkwXHUyMDEzMTM5NCkiLCJcdTAxNGNlaSAoMTM5NFx1MjAxMzE0MjgpIiwiU2hcdTAxNGRjaFx1MDE0ZCAoMTQyOFx1MjAxMzE0MjkpIiwiRWlreVx1''@;'; put 'put ''MDE0ZCAoMTQyOVx1MjAxMzE0NDEpIiwiS2FraXRzdSAoMTQ0MVx1MjAxMzE0NDQpIiwiQnVuXHUyMDE5YW4gKDE0NDRcdTIwMTMxNDQ5KSIsIkhcdTAxNGR0b2t1ICgxNDQ5XHUyMDEzMTQ1MikiLCJLeVx1MDE0ZHRva3UgKDE0NTJcdTIwMTMxNDU1KSIsIktcdTAxNGRzaFx1MDE0ZCAoMTQ1''@;'; put 'put ''NVx1MjAxMzE0NTcpIiwiQ2hcdTAxNGRyb2t1ICgxNDU3XHUyMDEzMTQ2MCkiLCJLYW5zaFx1MDE0ZCAoMTQ2MFx1MjAxMzE0NjYpIiwiQnVuc2hcdTAxNGQgKDE0NjZcdTIwMTMxNDY3KSIsIlx1MDE0Y25pbiAoMTQ2N1x1MjAxMzE0NjkpIiwiQnVubWVpICgxNDY5XHUyMDEzMTQ4NykiLCJD''@;'; put 'put ''aFx1MDE0ZGt5XHUwMTRkICgxNDg3XHUyMDEzMTQ4OSkiLCJFbnRva3UgKDE0ODlcdTIwMTMxNDkyKSIsIk1laVx1MDE0ZCAoMTQ5Mlx1MjAxMzE1MDEpIiwiQnVua2kgKDE1MDFcdTIwMTMxNTA0KSIsIkVpc2hcdTAxNGQgKDE1MDRcdTIwMTMxNTIxKSIsIlRhaWVpICgxNTIxXHUyMDEzMTUy''@;'; put 'put ''OCkiLCJLeVx1MDE0ZHJva3UgKDE1MjhcdTIwMTMxNTMyKSIsIlRlbmJ1biAoMTUzMlx1MjAxMzE1NTUpIiwiS1x1MDE0ZGppICgxNTU1XHUyMDEzMTU1OCkiLCJFaXJva3UgKDE1NThcdTIwMTMxNTcwKSIsIkdlbmtpICgxNTcwXHUyMDEzMTU3MykiLCJUZW5zaFx1MDE0ZCAoMTU3M1x1MjAx''@;'; put 'put ''MzE1OTIpIiwiQnVucm9rdSAoMTU5Mlx1MjAxMzE1OTYpIiwiS2VpY2hcdTAxNGQgKDE1OTZcdTIwMTMxNjE1KSIsIkdlbm5hICgxNjE1XHUyMDEzMTYyNCkiLCJLYW5cdTIwMTllaSAoMTYyNFx1MjAxMzE2NDQpIiwiU2hcdTAxNGRobyAoMTY0NFx1MjAxMzE2NDgpIiwiS2VpYW4gKDE2NDhc''@;'; put 'put ''dTIwMTMxNjUyKSIsIkpcdTAxNGRcdTAxNGQgKDE2NTJcdTIwMTMxNjU1KSIsIk1laXJla2kgKDE2NTVcdTIwMTMxNjU4KSIsIk1hbmppICgxNjU4XHUyMDEzMTY2MSkiLCJLYW5idW4gKDE2NjFcdTIwMTMxNjczKSIsIkVucFx1MDE0ZCAoMTY3M1x1MjAxMzE2ODEpIiwiVGVubmEgKDE2ODFc''@;'; put 'put ''dTIwMTMxNjg0KSIsIkpcdTAxNGRreVx1MDE0ZCAoMTY4NFx1MjAxMzE2ODgpIiwiR2Vucm9rdSAoMTY4OFx1MjAxMzE3MDQpIiwiSFx1MDE0ZGVpICgxNzA0XHUyMDEzMTcxMSkiLCJTaFx1MDE0ZHRva3UgKDE3MTFcdTIwMTMxNzE2KSIsIkt5XHUwMTRkaFx1MDE0ZCAoMTcxNlx1MjAxMzE3''@;'; put 'put ''MzYpIiwiR2VuYnVuICgxNzM2XHUyMDEzMTc0MSkiLCJLYW5wXHUwMTRkICgxNzQxXHUyMDEzMTc0NCkiLCJFbmt5XHUwMTRkICgxNzQ0XHUyMDEzMTc0OCkiLCJLYW5cdTIwMTllbiAoMTc0OFx1MjAxMzE3NTEpIiwiSFx1MDE0ZHJla2kgKDE3NTFcdTIwMTMxNzY0KSIsIk1laXdhICgxNzY0''@;'; put 'put ''XHUyMDEzMTc3MikiLCJBblx1MjAxOWVpICgxNzcyXHUyMDEzMTc4MSkiLCJUZW5tZWkgKDE3ODFcdTIwMTMxNzg5KSIsIkthbnNlaSAoMTc4OVx1MjAxMzE4MDEpIiwiS3lcdTAxNGR3YSAoMTgwMVx1MjAxMzE4MDQpIiwiQnVua2EgKDE4MDRcdTIwMTMxODE4KSIsIkJ1bnNlaSAoMTgxOFx1''@;'; put 'put ''MjAxMzE4MzApIiwiVGVucFx1MDE0ZCAoMTgzMFx1MjAxMzE4NDQpIiwiS1x1MDE0ZGthICgxODQ0XHUyMDEzMTg0OCkiLCJLYWVpICgxODQ4XHUyMDEzMTg1NCkiLCJBbnNlaSAoMTg1NFx1MjAxMzE4NjApIiwiTWFuXHUyMDE5ZW4gKDE4NjBcdTIwMTMxODYxKSIsIkJ1bmt5XHUwMTZiICgx''@;'; put 'put ''ODYxXHUyMDEzMTg2NCkiLCJHZW5qaSAoMTg2NFx1MjAxMzE4NjUpIiwiS2VpXHUwMTRkICgxODY1XHUyMDEzMTg2OCkiLCJNZWlqaSIsIlRhaXNoXHUwMTRkIiwiU2hcdTAxNGR3YSIsIkhlaXNlaSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwicGVyc2lhbiI6eyJt''@;'; put 'put ''b250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJGYXJ2YXJkaW4iLCJPcmRpYmVoZXNodCIsIktob3JkYWQiLCJUaXIiLCJNb3JkYWQiLCJTaGFocml2YXIiLCJNZWhyIiwiQWJhbiIsIkF6YXIiLCJE''@;'; put 'put ''ZXkiLCJCYWhtYW4iLCJFc2ZhbmQiXSwibG9uZyI6WyJGYXJ2YXJkaW4iLCJPcmRpYmVoZXNodCIsIktob3JkYWQiLCJUaXIiLCJNb3JkYWQiLCJTaGFocml2YXIiLCJNZWhyIiwiQWJhbiIsIkF6YXIiLCJEZXkiLCJCYWhtYW4iLCJFc2ZhbmQiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJN''@;'; put 'put ''IiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsi''@;'; put 'put ''bmFycm93IjpbIkFQIl0sInNob3J0IjpbIkFQIl0sImxvbmciOlsiQVAiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sInJvYyI6eyJtb250aHMiOnsibmFycm93IjpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLCJzaG9ydCI6''@;'; put 'put ''WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3Rv''@;'; put 'put ''YmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5Iiwi''@;'; put 'put ''V2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQmVmb3JlIFIuTy5DLiIsIk1pbmd1byJdLCJzaG9ydCI6WyJCZWZvcmUgUi5PLkMuIiwiTWluZ3VvIl0sImxvbmciOlsiQmVmb3JlIFIuTy5DLiIsIk1pbmd1byJdfSwiZGF5UGVy''@;'; put 'put ''aW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fX19LCJudW1iZXIiOnsibnUiOlsibGF0biJdLCJwYXR0ZXJucyI6eyJkZWNpbWFsIjp7InBvc2l0aXZlUGF0dGVybiI6IntudW1iZXJ9IiwibmVnYXRpdmVQYXR0ZXJuIjoie21pbnVzU2lnbn17bnVtYmVyfSJ9LCJjdXJyZW5jeSI6eyJwb3Np''@;'; put 'put ''dGl2ZVBhdHRlcm4iOiJ7Y3VycmVuY3l9e251bWJlcn0iLCJuZWdhdGl2ZVBhdHRlcm4iOiJ7bWludXNTaWdufXtjdXJyZW5jeX17bnVtYmVyfSJ9LCJwZXJjZW50Ijp7InBvc2l0aXZlUGF0dGVybiI6IntudW1iZXJ9e3BlcmNlbnRTaWdufSIsIm5lZ2F0aXZlUGF0dGVybiI6InttaW51c1Np''@;'; put 'put ''Z259e251bWJlcn17cGVyY2VudFNpZ259In19LCJzeW1ib2xzIjp7ImxhdG4iOnsiZGVjaW1hbCI6Ii4iLCJncm91cCI6IiwiLCJuYW4iOiJOYU4iLCJwbHVzU2lnbiI6IisiLCJtaW51c1NpZ24iOiItIiwicGVyY2VudFNpZ24iOiIlIiwiaW5maW5pdHkiOiJcdTIyMWUifX0sImN1cnJlbmNp''@;'; put 'put ''ZXMiOnsiQVVEIjoiQSQiLCJCUkwiOiJSJCIsIkNBRCI6IkNBJCIsIkNOWSI6IkNOXHhhNSIsIkVVUiI6Ilx1MjBhYyIsIkdCUCI6Ilx4YTMiLCJIS0QiOiJISyQiLCJJTFMiOiJcdTIwYWEiLCJJTlIiOiJcdTIwYjkiLCJKUFkiOiJceGE1IiwiS1JXIjoiXHUyMGE5IiwiTVhOIjoiTVgkIiwi''@;'; put 'put ''TlpEIjoiTlokIiwiVFdEIjoiTlQkIiwiVVNEIjoiJCIsIlZORCI6Ilx1MjBhYiIsIlhBRiI6IkZDRkEiLCJYQ0QiOiJFQyQiLCJYT0YiOiJDRkEiLCJYUEYiOiJDRlBGIn19fScpfX0sWGU9PntYZShYZS5zPTIzNDE3KX1dKTs='';'; 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.61e771b472ecb588-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlLHM9e30sdj17fTtmdW5jdGlvbiBhKGUpe3ZhciBuPXZbZV07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO3ZhciByPXZbZV09e2lkOmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBzW2VdLmNhbGwoci5leHBvcnRzLHIsci5leHBv''@;'; put 'put ''cnRzLGEpLHIubG9hZGVkPSEwLHIuZXhwb3J0c31hLm09cyxlPVtdLGEuTz0obixyLG8sbCk9PntpZighcil7dmFyIHU9MS8wO2Zvcih0PTA7dDxlLmxlbmd0aDt0Kyspe2Zvcih2YXJbcixvLGxdPWVbdF0sZD0hMCxmPTA7ZjxyLmxlbmd0aDtmKyspKCExJmx8fHU+PWwpJiZPYmplY3Qua2V5''@;'; put 'put ''cyhhLk8pLmV2ZXJ5KHA9PmEuT1twXShyW2ZdKSk/ci5zcGxpY2UoZi0tLDEpOihkPSExLGw8dSYmKHU9bCkpO2lmKGQpe2Uuc3BsaWNlKHQtLSwxKTt2YXIgYz1vKCk7dm9pZCAwIT09YyYmKG49Yyl9fXJldHVybiBufWw9bHx8MDtmb3IodmFyIHQ9ZS5sZW5ndGg7dD4wJiZlW3QtMV1bMl0+''@;'; put 'put ''bDt0LS0pZVt0XT1lW3QtMV07ZVt0XT1bcixvLGxdfSxhLm49ZT0+e3ZhciBuPWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBhLmQobix7YTpufSksbn0sYS5kPShlLG4pPT57Zm9yKHZhciByIGluIG4pYS5vKG4scikmJiFhLm8oZSxyKSYmT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6bltyXX0pfSxhLm89KGUsbik9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pLGEucj1lPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sYS5ubWQ9ZT0+KGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10pLGUpLCgoKT0+e3ZhciBlPXs2NjY6''@;'; put 'put ''MH07YS5PLmo9bz0+MD09PWVbb107dmFyIG49KG8sbCk9Pnt2YXIgZixjLFt0LHUsZF09bCxpPTA7aWYodC5zb21lKF89PjAhPT1lW19dKSl7Zm9yKGYgaW4gdSlhLm8odSxmKSYmKGEubVtmXT11W2ZdKTtpZihkKXZhciBiPWQoYSl9Zm9yKG8mJm8obCk7aTx0Lmxlbmd0aDtpKyspYS5vKGUs''@;'; put 'put ''Yz10W2ldKSYmZVtjXSYmZVtjXVswXSgpLGVbY109MDtyZXR1cm4gYS5PKGIpfSxyPXNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W107ci5mb3JFYWNoKG4uYmluZChudWxsLDApKSxyLnB1c2g9bi5iaW5kKG51bGwsci5w''@;'; put 'put ''dXNoLmJpbmQocikpfSkoKX0pKCk7'';'; 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.b81387d1a259d626-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 ''KGZ1bmN0aW9uKFgsRjEsayl7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihBKXt2YXIgZT17fTtmdW5jdGlvbiBsKHIpe2lmKGVbcl0pcmV0dXJuIGVbcl0uZXhwb3J0czt2YXIgYT1lW3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gQVtyXS5jYWxsKGEuZXhwb3J0cyxhLGEuZXhwb3J0''@;'; put 'put ''cyxsKSxhLmw9ITAsYS5leHBvcnRzfWwubT1BLGwuYz1lLGwuZD1mdW5jdGlvbihyLGEsYyl7bC5vKHIsYSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGEse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpjfSl9LGwubj1mdW5jdGlvbihyKXt2YXIgYT1yJiZyLl9fZXNNb2R1''@;'; put 'put ''bGU/ZnVuY3Rpb24oKXtyZXR1cm4gci5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiByfTtyZXR1cm4gbC5kKGEsImEiLGEpLGF9LGwubz1mdW5jdGlvbihyLGEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixhKX0sbC5wPSIiLGwobC5zPTEyOSl9KShb''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMiksYT1sKDI2KSxjPWwoMTEpLG89bCgxMiksaD1sKDE4KSxmPSJwcm90b3R5cGUiLGc9ZnVuY3Rpb24odSxwLHYpe3ZhciBILEMsVixTLF89dSZnLkYsYj11JmcuRyxNPXUmZy5QLHg9dSZnLkIsRT1iP3I6dSZnLlM/cltwXXx8KHJbcF09e30pOihy''@;'; put 'put ''W3BdfHx7fSlbZl0sdz1iP2E6YVtwXXx8KGFbcF09e30pLE49d1tmXXx8KHdbZl09e30pO2ZvcihIIGluIGImJih2PXApLHYpVj0oKEM9IV8mJkUmJkVbSF0hPT1rKT9FOnYpW0hdLFM9eCYmQz9oKFYscik6TSYmImZ1bmN0aW9uIj09dHlwZW9mIFY/aChGdW5jdGlvbi5jYWxsLFYpOlYsRSYm''@;'; put 'put ''byhFLEgsVix1JmcuVSksd1tIXSE9ViYmYyh3LEgsUyksTSYmTltIXSE9ViYmKE5bSF09Vil9O3IuY29yZT1hLGcuRj0xLGcuRz0yLGcuUz00LGcuUD04LGcuQj0xNixnLlc9MzIsZy5VPTY0LGcuUj0xMjgsQS5leHBvcnRzPWd9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpO0EuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihhKXtpZighcihhKSl0aHJvdyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIGF9fSxmdW5jdGlvbihBLGUpe3ZhciBsPUEuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIEYxJiYoRjE9bCl9LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwpe3RyeXtyZXR1cm4hIWwoKX1jYXRjaChyKXtyZXR1cm4hMH19''@;'; put 'put ''fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGw/bnVsbCE9PWw6ImZ1bmN0aW9uIj09dHlwZW9mIGx9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0NykoIndrcyIpLGE9bCgzMyksYz1sKDIpLlN5bWJvbCxvPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBjOyhBLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIHJbaF18fChyW2hdPW8mJmNbaF18fChvP2M6YSkoIlN5bWJvbC4iK2gpKX0pLnN0b3JlPXJ9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIwKSxhPU1hdGgubWluO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gMDxj''@;'; put 'put ''P2EocihjKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24oQSxlLGwpe0EuZXhwb3J0cz0hbCgzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIg''@;'; put 'put ''cj1sKDEpLGE9bCg5MyksYz1sKDIyKSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9bCg3KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZixnLHUpe2lmKHIoZiksZz1jKGcsITApLHIodSksYSl0cnl7cmV0dXJuIG8oZixnLHUpfWNhdGNoKHApe31pZigiZ2V0ImluIHV8fCJz''@;'; put 'put ''ZXQiaW4gdSl0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiB1JiYoZltnXT11LnZhbHVlKSxmfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0KHIoYSkpfX0sZnVu''@;'; put 'put ''Y3Rpb24oQSxlKXtBLmV4cG9ydHM9ZnVuY3Rpb24obCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGwpdGhyb3cgVHlwZUVycm9yKGwrIiBpcyBub3QgYSBmdW5jdGlvbiEiKTtyZXR1cm4gbH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLGE9bCgzMik7QS5leHBvcnRzPWwoNyk/ZnVuY3Rp''@;'; put 'put ''b24oYyxvLGgpe3JldHVybiByLmYoYyxvLGEoMSxoKSl9OmZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gY1tvXT1oLGN9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoMTEpLGM9bCgxNCksbz1sKDMzKSgic3JjIiksaD1sKDEzMSksZj0idG9TdHJpbmciLGc9KCIiK2gpLnNwbGl0KGYp''@;'; put 'put ''O2woMjYpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odSl7cmV0dXJuIGguY2FsbCh1KX0sKEEuZXhwb3J0cz1mdW5jdGlvbih1LHAsdixIKXt2YXIgQz0iZnVuY3Rpb24iPT10eXBlb2YgdjtDJiYoYyh2LCJuYW1lIil8fGEodiwibmFtZSIscCkpLHVbcF0hPT12JiYoQyYmKGModixvKXx8YSh2''@;'; put 'put ''LG8sdVtwXT8iIit1W3BdOmcuam9pbihTdHJpbmcocCkpKSksdT09PXI/dVtwXT12Okg/dVtwXT91W3BdPXY6YSh1LHAsdik6KGRlbGV0ZSB1W3BdLGEodSxwLHYpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsZixmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlz''@;'; put 'put ''W29dfHxoLmNhbGwodGhpcyl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDMpLGM9bCgyMyksbz0vIi9nLGg9ZnVuY3Rpb24oZixnLHUscCl7dmFyIHY9U3RyaW5nKGMoZikpLEg9IjwiK2c7cmV0dXJuIiIhPT11JiYoSCs9IiAiK3UrJz0iJytTdHJpbmcocCkucmVwbGFjZShv''@;'; put 'put ''LCImcXVvdDsiKSsnIicpLEgrIj4iK3YrIjwvIitnKyI+In07QS5leHBvcnRzPWZ1bmN0aW9uKGYsZyl7dmFyIHU9e307dVtmXT1nKGgpLHIoci5QK3IuRiphKGZ1bmN0aW9uKCl7dmFyIHA9IiJbZl0oJyInKTtyZXR1cm4gcCE9PXAudG9Mb3dlckNhc2UoKXx8MzxwLnNwbGl0KCciJykubGVu''@;'; put 'put ''Z3RofSksIlN0cmluZyIsdSl9fSxmdW5jdGlvbihBLGUpe3ZhciBsPXt9Lmhhc093blByb3BlcnR5O0EuZXhwb3J0cz1mdW5jdGlvbihyLGEpe3JldHVybiBsLmNhbGwocixhKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQ4KSxhPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1''@;'; put 'put ''cm4gcihhKGMpKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQ5KSxhPWwoMzIpLGM9bCgxNSksbz1sKDIyKSxoPWwoMTQpLGY9bCg5MyksZz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1sKDcpP2c6ZnVuY3Rpb24ocCx2KXtpZihwPWMocCksdj1vKHYsITApLGYpdHJ5''@;'; put 'put ''e3JldHVybiBnKHAsdil9Y2F0Y2goSCl7fWlmKGgocCx2KSlyZXR1cm4gYSghci5mLmNhbGwocCx2KSxwW3ZdKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE0KSxhPWwoOSksYz1sKDY4KSgiSUVfUFJPVE8iKSxvPU9iamVjdC5wcm90b3R5cGU7QS5leHBvcnRzPU9iamVjdC5nZXRQcm90''@;'; put 'put ''b3R5cGVPZnx8ZnVuY3Rpb24oaCl7cmV0dXJuIGg9YShoKSxyKGgsYyk/aFtjXToiZnVuY3Rpb24iPT10eXBlb2YgaC5jb25zdHJ1Y3RvciYmaCBpbnN0YW5jZW9mIGguY29uc3RydWN0b3I/aC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6aCBpbnN0YW5jZW9mIE9iamVjdD9vOm51bGx9fSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgxMCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyxvKXtpZihyKGEpLGM9PT1rKXJldHVybiBhO3N3aXRjaChvKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBhLmNhbGwoYyxoKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihoLGYpe3JldHVybiBh''@;'; put 'put ''LmNhbGwoYyxoLGYpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGgsZixnKXtyZXR1cm4gYS5jYWxsKGMsaCxmLGcpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oQSxlKXt2YXIgbD17fS50b1N0cmluZztBLmV4cG9ydHM9ZnVuY3Rp''@;'; put 'put ''b24ocil7cmV0dXJuIGwuY2FsbChyKS5zbGljZSg4LC0xKX19LGZ1bmN0aW9uKEEsZSl7dmFyIGw9TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjtBLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGlzTmFOKGE9K2EpPzA6KDA8YT9yOmwpKGEpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMyk7''@;'; put 'put ''QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyl7cmV0dXJuISFhJiZyKGZ1bmN0aW9uKCl7Yz9hLmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6YS5jYWxsKG51bGwpfSl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KTtBLmV4cG9ydHM9ZnVuY3Rpb24oYSxjKXtpZighcihhKSlyZXR1cm4gYTt2''@;'; put 'put ''YXIgbyxoO2lmKGMmJiJmdW5jdGlvbiI9PXR5cGVvZihvPWEudG9TdHJpbmcpJiYhcihoPW8uY2FsbChhKSl8fCJmdW5jdGlvbiI9PXR5cGVvZihvPWEudmFsdWVPZikmJiFyKGg9by5jYWxsKGEpKXx8IWMmJiJmdW5jdGlvbiI9PXR5cGVvZihvPWEudG9TdHJpbmcpJiYhcihoPW8uY2FsbChh''@;'; put 'put ''KSkpcmV0dXJuIGg7dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwpe2lmKGw9PWspdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitsKTtyZXR1''@;'; put 'put ''cm4gbH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNiksYz1sKDMpO0EuZXhwb3J0cz1mdW5jdGlvbihvLGgpe3ZhciBmPShhLk9iamVjdHx8e30pW29dfHxPYmplY3Rbb10sZz17fTtnW29dPWgoZikscihyLlMrci5GKmMoZnVuY3Rpb24oKXtmKDEpfSksIk9iamVjdCIsZyl9''@;'; put 'put ''fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxOCksYT1sKDQ4KSxjPWwoOSksbz1sKDYpLGg9bCg4NCk7QS5leHBvcnRzPWZ1bmN0aW9uKGYsZyl7dmFyIHU9MT09ZixwPTI9PWYsdj0zPT1mLEg9ND09ZixDPTY9PWYsVj01PT1mfHxDLFM9Z3x8aDtyZXR1cm4gZnVuY3Rpb24oXyxiLE0pe2Zv''@;'; put 'put ''cih2YXIgeCxFLHc9YyhfKSxOPWEodyksST1yKGIsTSwzKSxXPW8oTi5sZW5ndGgpLE89MCxCPXU/UyhfLFcpOnA/UyhfLDApOms7TzxXO08rKylpZigoVnx8TyBpbiBOKSYmKEU9SSh4PU5bT10sTyx3KSxmKSlpZih1KUJbT109RTtlbHNlIGlmKEUpc3dpdGNoKGYpe2Nhc2UgMzpyZXR1cm4h''@;'; put 'put ''MDtjYXNlIDU6cmV0dXJuIHg7Y2FzZSA2OnJldHVybiBPO2Nhc2UgMjpCLnB1c2goeCl9ZWxzZSBpZihIKXJldHVybiExO3JldHVybiBDPy0xOnZ8fEg/SDpCfX19LGZ1bmN0aW9uKEEsZSl7dmFyIGw9QS5leHBvcnRzPXt2ZXJzaW9uOiIyLjYuMTEifTsibnVtYmVyIj09dHlwZW9mIFgmJihY''@;'; put 'put ''PWwpfSxmdW5jdGlvbihBLGUsbCl7aWYobCg3KSl7dmFyIHI9bCgyOSksYT1sKDIpLGM9bCgzKSxvPWwoMCksaD1sKDYyKSxmPWwoOTIpLGc9bCgxOCksdT1sKDM5KSxwPWwoMzIpLHY9bCgxMSksSD1sKDQxKSxDPWwoMjApLFY9bCg2KSxTPWwoMTIyKSxfPWwoMzUpLGI9bCgyMiksTT1sKDE0''@;'; put 'put ''KSx4PWwoNDQpLEU9bCg0KSx3PWwoOSksTj1sKDgxKSxJPWwoMzYpLFc9bCgxNyksTz1sKDM3KS5mLEI9bCg4Myksej1sKDMzKSxsMT1sKDUpLGExPWwoMjUpLGgxPWwoNTIpLHAxPWwoNTEpLGcxPWwoODYpLEgxPWwoNDYpLEQxPWwoNTcpLGo9bCgzOCksbjE9bCg4NSksbTE9bCgxMTApLF8x''@;'; put 'put ''PWwoOCksSj1sKDE2KSxvMT1fMS5mLE0xPUouZixiMT1hLlJhbmdlRXJyb3IsQjE9YS5UeXBlRXJyb3IsJD1hLlVpbnQ4QXJyYXksUj0iQXJyYXlCdWZmZXIiLFo9IlNoYXJlZCIrUixEPSJCWVRFU19QRVJfRUxFTUVOVCIseT0icHJvdG90eXBlIixUPUFycmF5W3ldLFA9Zi5BcnJheUJ1ZmZl''@;'; put 'put ''cix0MT1mLkRhdGFWaWV3LHMxPWExKDApLGYxPWExKDIpLFk9YTEoMykscT1hMSg0KSxRPWExKDUpLGQxPWExKDYpLE4xPWgxKCEwKSxTMT1oMSghMSkscjE9ZzEudmFsdWVzLGkxPWcxLmtleXMsQTE9ZzEuZW50cmllcyx4MT1ULmxhc3RJbmRleE9mLEkxPVQucmVkdWNlLEoxPVQucmVkdWNl''@;'; put 'put ''UmlnaHQsdDA9VC5qb2luLGYwPVQuc29ydCxNMD1ULnNsaWNlLF8wPVQudG9TdHJpbmcsaTI9VC50b0xvY2FsZVN0cmluZyx6MD1sMSgiaXRlcmF0b3IiKSxVMD1sMSgidG9TdHJpbmdUYWciKSxLMD16KCJ0eXBlZF9jb25zdHJ1Y3RvciIpLGswPXooImRlZl9jb25zdHJ1Y3RvciIpLHUyPWgu''@;'; put 'put ''Q09OU1RSLFgwPWguVFlQRUQsa3Q9aC5WSUVXLGEyPSJXcm9uZyBsZW5ndGghIixEMj1hMSgxLGZ1bmN0aW9uKHcxLHUxKXtyZXR1cm4gUTAocDEodzEsdzFbazBdKSx1MSl9KSxwMj1jKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgJChuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBd''@;'; put 'put ''fSksT3Q9ISEkJiYhISRbeV0uc2V0JiZjKGZ1bmN0aW9uKCl7bmV3ICQoMSkuc2V0KHt9KX0pLGYyPWZ1bmN0aW9uKHcxLHUxKXt2YXIgRTE9Qyh3MSk7aWYoRTE8MHx8RTEldTEpdGhyb3cgYjEoIldyb25nIG9mZnNldCEiKTtyZXR1cm4gRTF9LFkxPWZ1bmN0aW9uKHcxKXtpZihFKHcxKSYm''@;'; put 'put ''WDAgaW4gdzEpcmV0dXJuIHcxO3Rocm93IEIxKHcxKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkhIil9LFEwPWZ1bmN0aW9uKHcxLHUxKXtpZighRSh3MSl8fCEoSzAgaW4gdzEpKXRocm93IEIxKCJJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEiKTtyZXR1cm4gbmV3IHcxKHUx''@;'; put 'put ''KX0sZzI9ZnVuY3Rpb24odzEsdTEpe3JldHVybiBFMihwMSh3MSx3MVtrMF0pLHUxKX0sRTI9ZnVuY3Rpb24odzEsdTEpe2Zvcih2YXIgRTE9MCxQMT11MS5sZW5ndGgsUjE9UTAodzEsUDEpO0UxPFAxOylSMVtFMV09dTFbRTErK107cmV0dXJuIFIxfSxBMj1mdW5jdGlvbih3MSx1MSxFMSl7''@;'; put 'put ''bzEodzEsdTEse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kW0UxXX19KX0sVDI9ZnVuY3Rpb24odTEpe3ZhciBFMSxQMSxSMSxkMCxxMSx2MSx5MT13KHUxKSxXMD1hcmd1bWVudHMubGVuZ3RoLE8wPTE8VzA/YXJndW1lbnRzWzFdOmssSzE9TzAhPT1rLGUwPUIoeTEpO2lmKGUwIT1r''@;'; put 'put ''JiYhTihlMCkpe2Zvcih2MT1lMC5jYWxsKHkxKSxSMT1bXSxFMT0wOyEocTE9djEubmV4dCgpKS5kb25lO0UxKyspUjEucHVzaChxMS52YWx1ZSk7eTE9UjF9Zm9yKEsxJiYyPFcwJiYoTzA9ZyhPMCxhcmd1bWVudHNbMl0sMikpLEUxPTAsUDE9Vih5MS5sZW5ndGgpLGQwPVEwKHRoaXMsUDEp''@;'; put 'put ''O0UxPFAxO0UxKyspZDBbRTFdPUsxP08wKHkxW0UxXSxFMSk6eTFbRTFdO3JldHVybiBkMH0sWDI9ZnVuY3Rpb24oKXtmb3IodmFyIHUxPTAsRTE9YXJndW1lbnRzLmxlbmd0aCxQMT1RMCh0aGlzLEUxKTt1MTxFMTspUDFbdTFdPWFyZ3VtZW50c1t1MSsrXTtyZXR1cm4gUDF9LFEyPSEhJCYm''@;'; put 'put ''YyhmdW5jdGlvbigpe2kyLmNhbGwobmV3ICQoMSkpfSksTjI9ZnVuY3Rpb24oKXtyZXR1cm4gaTIuYXBwbHkoUTI/TTAuY2FsbChZMSh0aGlzKSk6WTEodGhpcyksYXJndW1lbnRzKX0sSjI9e2NvcHlXaXRoaW46ZnVuY3Rpb24odTEsRTEpe3JldHVybiBtMS5jYWxsKFkxKHRoaXMpLHUxLEUx''@;'; put 'put ''LDI8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMl06ayl9LGV2ZXJ5OmZ1bmN0aW9uKHUxKXtyZXR1cm4gcShZMSh0aGlzKSx1MSwxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmspfSxmaWxsOmZ1bmN0aW9uKHUxKXtyZXR1cm4gbjEuYXBwbHkoWTEodGhpcyksYXJndW1lbnRz''@;'; put 'put ''KX0sZmlsdGVyOmZ1bmN0aW9uKHUxKXtyZXR1cm4gZzIodGhpcyxmMShZMSh0aGlzKSx1MSwxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmspKX0sZmluZDpmdW5jdGlvbih1MSl7cmV0dXJuIFEoWTEodGhpcyksdTEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0s''@;'; put 'put ''ZmluZEluZGV4OmZ1bmN0aW9uKHUxKXtyZXR1cm4gZDEoWTEodGhpcyksdTEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0sZm9yRWFjaDpmdW5jdGlvbih1MSl7czEoWTEodGhpcyksdTEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0saW5kZXhPZjpmdW5j''@;'; put 'put ''dGlvbih1MSl7cmV0dXJuIFMxKFkxKHRoaXMpLHUxLDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06ayl9LGluY2x1ZGVzOmZ1bmN0aW9uKHUxKXtyZXR1cm4gTjEoWTEodGhpcyksdTEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0sam9pbjpmdW5jdGlvbih1MSl7''@;'; put 'put ''cmV0dXJuIHQwLmFwcGx5KFkxKHRoaXMpLGFyZ3VtZW50cyl9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKHUxKXtyZXR1cm4geDEuYXBwbHkoWTEodGhpcyksYXJndW1lbnRzKX0sbWFwOmZ1bmN0aW9uKHUxKXtyZXR1cm4gRDIoWTEodGhpcyksdTEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50''@;'; put 'put ''c1sxXTprKX0scmVkdWNlOmZ1bmN0aW9uKHUxKXtyZXR1cm4gSTEuYXBwbHkoWTEodGhpcyksYXJndW1lbnRzKX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24odTEpe3JldHVybiBKMS5hcHBseShZMSh0aGlzKSxhcmd1bWVudHMpfSxyZXZlcnNlOmZ1bmN0aW9uKCl7Zm9yKHZhciB1MSxFMT10aGlz''@;'; put 'put ''LFAxPVkxKEUxKS5sZW5ndGgsUjE9TWF0aC5mbG9vcihQMS8yKSxkMD0wO2QwPFIxOyl1MT1FMVtkMF0sRTFbZDArK109RTFbLS1QMV0sRTFbUDFdPXUxO3JldHVybiBFMX0sc29tZTpmdW5jdGlvbih1MSl7cmV0dXJuIFkoWTEodGhpcyksdTEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50''@;'; put 'put ''c1sxXTprKX0sc29ydDpmdW5jdGlvbih1MSl7cmV0dXJuIGYwLmNhbGwoWTEodGhpcyksdTEpfSxzdWJhcnJheTpmdW5jdGlvbih1MSxFMSl7dmFyIFAxPVkxKHRoaXMpLFIxPVAxLmxlbmd0aCxkMD1fKHUxLFIxKTtyZXR1cm4gbmV3KHAxKFAxLFAxW2swXSkpKFAxLmJ1ZmZlcixQMS5ieXRl''@;'; put 'put ''T2Zmc2V0K2QwKlAxLkJZVEVTX1BFUl9FTEVNRU5ULFYoKEUxPT09az9SMTpfKEUxLFIxKSktZDApKX19LEYyPWZ1bmN0aW9uKHUxLEUxKXtyZXR1cm4gZzIodGhpcyxNMC5jYWxsKFkxKHRoaXMpLHUxLEUxKSl9LEkyPWZ1bmN0aW9uKHUxKXtZMSh0aGlzKTt2YXIgRTE9ZjIoYXJndW1lbnRz''@;'; put 'put ''WzFdLDEpLFAxPXRoaXMubGVuZ3RoLFIxPXcodTEpLGQwPVYoUjEubGVuZ3RoKSxxMT0wO2lmKFAxPGQwK0UxKXRocm93IGIxKGEyKTtmb3IoO3ExPGQwOyl0aGlzW0UxK3ExXT1SMVtxMSsrXX0sWjA9e2VudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gQTEuY2FsbChZMSh0aGlzKSl9LGtleXM6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gaTEuY2FsbChZMSh0aGlzKSl9LHZhbHVlczpmdW5jdGlvbigpe3JldHVybiByMS5jYWxsKFkxKHRoaXMpKX19LGsyPWZ1bmN0aW9uKHcxLHUxKXtyZXR1cm4gRSh3MSkmJncxW1gwXSYmInN5bWJvbCIhPXR5cGVvZiB1MSYmdTEgaW4gdzEmJlN0cmluZygrdTEp''@;'; put 'put ''PT1TdHJpbmcodTEpfSx0dD1mdW5jdGlvbih1MSxFMSl7cmV0dXJuIGsyKHUxLEUxPWIoRTEsITApKT9wKDIsdTFbRTFdKTpNMSh1MSxFMSl9LEEwPWZ1bmN0aW9uKHUxLEUxLFAxKXtyZXR1cm4hKGsyKHUxLEUxPWIoRTEsITApKSYmRShQMSkmJk0oUDEsInZhbHVlIikpfHxNKFAxLCJnZXQi''@;'; put 'put ''KXx8TShQMSwic2V0Iil8fFAxLmNvbmZpZ3VyYWJsZXx8TShQMSwid3JpdGFibGUiKSYmIVAxLndyaXRhYmxlfHxNKFAxLCJlbnVtZXJhYmxlIikmJiFQMS5lbnVtZXJhYmxlP28xKHUxLEUxLFAxKToodTFbRTFdPVAxLnZhbHVlLHUxKX07dTJ8fChKLmY9dHQsXzEuZj1BMCksbyhvLlMrby5G''@;'; put 'put ''KiF1MiwiT2JqZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnR0LGRlZmluZVByb3BlcnR5OkEwfSksYyhmdW5jdGlvbigpe18wLmNhbGwoe30pfSkmJihfMD1pMj1mdW5jdGlvbigpe3JldHVybiB0MC5jYWxsKHRoaXMpfSk7dmFyIHcwPUgoe30sSjIpO0godzAsWjApLHYodzAsejAs''@;'; put 'put ''WjAudmFsdWVzKSxIKHcwLHtzbGljZTpGMixzZXQ6STIsY29uc3RydWN0b3I6ZnVuY3Rpb24oKXt9LHRvU3RyaW5nOl8wLHRvTG9jYWxlU3RyaW5nOk4yfSksQTIodzAsImJ1ZmZlciIsImIiKSxBMih3MCwiYnl0ZU9mZnNldCIsIm8iKSxBMih3MCwiYnl0ZUxlbmd0aCIsImwiKSxBMih3MCwi''@;'; put 'put ''bGVuZ3RoIiwiZSIpLG8xKHcwLFUwLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tYMF19fSksQS5leHBvcnRzPWZ1bmN0aW9uKHcxLHUxLEUxLFAxKXt2YXIgUjE9dzErKChQMT0hIVAxKT8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsZDA9ImdldCIrdzEscTE9InNldCIrdzEsdjE9YVtSMV0s''@;'; put 'put ''eTE9djF8fHt9LFcwPXYxJiZXKHYxKSxPMD17fSxLMT12MSYmdjFbeV0sZTA9ZnVuY3Rpb24oZzAsWDEpe28xKGcwLFgxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oSDA9dGhpcy5fZCkudltkMF0oWDEqdTErSDAubyxwMik7dmFyIEgwfSxzZXQ6ZnVuY3Rpb24oSDApe3JldHVybiBEMD1YMSx1''@;'; put 'put ''MD1IMCx4MD10aGlzLl9kLFAxJiYodTA9KHUwPU1hdGgucm91bmQodTApKTwwPzA6MjU1PHUwPzI1NToyNTUmdTApLHZvaWQgeDAudltxMV0oRDAqdTEreDAubyx1MCxwMik7dmFyIEQwLHUwLHgwfSxlbnVtZXJhYmxlOiEwfSl9O3YxJiZoLkFCVj9jKGZ1bmN0aW9uKCl7djEoMSl9KSYmYyhm''@;'; put 'put ''dW5jdGlvbigpe25ldyB2MSgtMSl9KSYmRDEoZnVuY3Rpb24oZzApe25ldyB2MSxuZXcgdjEobnVsbCksbmV3IHYxKDEuNSksbmV3IHYxKGcwKX0sITApfHwodjE9RTEoZnVuY3Rpb24oZzAsWDEsSDAsRDApe3ZhciB1MDtyZXR1cm4gdShnMCx2MSxSMSksRShYMSk/WDEgaW5zdGFuY2VvZiBQ''@;'; put 'put ''fHwodTA9eChYMSkpPT1SfHx1MD09Wj9EMCE9PWs/bmV3IHkxKFgxLGYyKEgwLHUxKSxEMCk6SDAhPT1rP25ldyB5MShYMSxmMihIMCx1MSkpOm5ldyB5MShYMSk6WDAgaW4gWDE/RTIodjEsWDEpOlQyLmNhbGwodjEsWDEpOm5ldyB5MShTKFgxKSl9KSxzMShXMCE9PUZ1bmN0aW9uLnByb3Rv''@;'; put 'put ''dHlwZT9PKHkxKS5jb25jYXQoTyhXMCkpOk8oeTEpLGZ1bmN0aW9uKGcwKXtnMCBpbiB2MXx8dih2MSxnMCx5MVtnMF0pfSksdjFbeV09SzEscnx8KEsxLmNvbnN0cnVjdG9yPXYxKSk6KHYxPUUxKGZ1bmN0aW9uKGcwLFgxLEgwLEQwKXt1KGcwLHYxLFIxLCJfZCIpO3ZhciB1MCx4MCxCMCxQ''@;'; put 'put ''Mix2Mj0wLHIyPTA7aWYoRShYMSkpe2lmKCEoWDEgaW5zdGFuY2VvZiBQfHwoUDI9eChYMSkpPT1SfHxQMj09WikpcmV0dXJuIFgwIGluIFgxP0UyKHYxLFgxKTpUMi5jYWxsKHYxLFgxKTt1MD1YMSxyMj1mMihIMCx1MSk7dmFyIHMwPVgxLmJ5dGVMZW5ndGg7aWYoRDA9PT1rKXtpZihzMCV1''@;'; put 'put ''MXx8KHgwPXMwLXIyKTwwKXRocm93IGIxKGEyKX1lbHNlIGlmKHMwPCh4MD1WKEQwKSp1MSkrcjIpdGhyb3cgYjEoYTIpO0IwPXgwL3UxfWVsc2UgQjA9UyhYMSksdTA9bmV3IFAoeDA9QjAqdTEpO2Zvcih2KGcwLCJfZCIse2I6dTAsbzpyMixsOngwLGU6QjAsdjpuZXcgdDEodTApfSk7djI8''@;'; put 'put ''QjA7KWUwKGcwLHYyKyspfSksSzE9djFbeV09SSh3MCksdihLMSwiY29uc3RydWN0b3IiLHYxKSk7dmFyIEowPUsxW3owXSxQMD0hIUowJiYoInZhbHVlcyI9PUowLm5hbWV8fEowLm5hbWU9PWspLE8yPVowLnZhbHVlczt2KHYxLEswLCEwKSx2KEsxLFgwLFIxKSx2KEsxLGt0LCEwKSx2KEsx''@;'; put 'put ''LGswLHYxKSwoUDE/bmV3IHYxKDEpW1UwXT09UjE6VTAgaW4gSzEpfHxvMShLMSxVMCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFIxfX0pLG8oby5HK28uVytvLkYqKChPMFtSMV09djEpIT15MSksTzApLG8oby5TLFIxLHtCWVRFU19QRVJfRUxFTUVOVDp1MX0pLG8oby5TK28uRipjKGZ1bmN0''@;'; put 'put ''aW9uKCl7eTEub2YuY2FsbCh2MSwxKX0pLFIxLHtmcm9tOlQyLG9mOlgyfSksRCBpbiBLMXx8dihLMSxELHUxKSxvKG8uUCxSMSxKMiksaihSMSksbyhvLlArby5GKk90LFIxLHtzZXQ6STJ9KSxvKG8uUCtvLkYqIVAwLFIxLFowKSxyfHxLMS50b1N0cmluZz09XzB8fChLMS50b1N0cmluZz1f''@;'; put 'put ''MCksbyhvLlArby5GKmMoZnVuY3Rpb24oKXtuZXcgdjEoMSkuc2xpY2UoKX0pLFIxLHtzbGljZTpGMn0pLG8oby5QK28uRiooYyhmdW5jdGlvbigpe3JldHVyblsxLDJdLnRvTG9jYWxlU3RyaW5nKCkhPW5ldyB2MShbMSwyXSkudG9Mb2NhbGVTdHJpbmcoKX0pfHwhYyhmdW5jdGlvbigpe0sx''@;'; put 'put ''LnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpLFIxLHt0b0xvY2FsZVN0cmluZzpOMn0pLEgxW1IxXT1QMD9KMDpPMixyfHxQMHx8dihLMSx6MCxPMil9fWVsc2UgQS5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTE2KSxhPWwoMCksYz1sKDQ3KSgi''@;'; put 'put ''bWV0YWRhdGEiKSxvPWMuc3RvcmV8fChjLnN0b3JlPW5ldyhsKDExOSkpKSxoPWZ1bmN0aW9uKGYsZyx1KXt2YXIgcD1vLmdldChmKTtpZighcCl7aWYoIXUpcmV0dXJuIGs7by5zZXQoZixwPW5ldyByKX12YXIgdj1wLmdldChnKTtpZighdil7aWYoIXUpcmV0dXJuIGs7cC5zZXQoZyx2PW5l''@;'; put 'put ''dyByKX1yZXR1cm4gdn07QS5leHBvcnRzPXtzdG9yZTpvLG1hcDpoLGhhczpmdW5jdGlvbihmLGcsdSl7dmFyIHA9aChnLHUsITEpO3JldHVybiBwIT09ayYmcC5oYXMoZil9LGdldDpmdW5jdGlvbihmLGcsdSl7dmFyIHA9aChnLHUsITEpO3JldHVybiBwPT09az9rOnAuZ2V0KGYpfSxzZXQ6''@;'; put 'put ''ZnVuY3Rpb24oZixnLHUscCl7aCh1LHAsITApLnNldChmLGcpfSxrZXlzOmZ1bmN0aW9uKGYsZyl7dmFyIHU9aChmLGcsITEpLHA9W107cmV0dXJuIHUmJnUuZm9yRWFjaChmdW5jdGlvbih2LEgpe3AucHVzaChIKX0pLHB9LGtleTpmdW5jdGlvbihmKXtyZXR1cm4gZj09PWt8fCJzeW1ib2wi''@;'; put 'put ''PT10eXBlb2YgZj9mOlN0cmluZyhmKX0sZXhwOmZ1bmN0aW9uKGYpe2EoYS5TLCJSZWZsZWN0IixmKX19fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz0hMX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMzMpKCJtZXRhIiksYT1sKDQpLGM9bCgxNCksbz1sKDgpLmYsaD0wLGY9T2JqZWN0Lmlz''@;'; put 'put ''RXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZz0hbCgzKShmdW5jdGlvbigpe3JldHVybiBmKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSksdT1mdW5jdGlvbih2KXtvKHYscix7dmFsdWU6e2k6Ik8iKyArK2gsdzp7fX19KX0scD1BLmV4cG9ydHM9e0tFWTpyLE5FRUQ6''@;'; put 'put ''ITEsZmFzdEtleTpmdW5jdGlvbih2LEgpe2lmKCFhKHYpKXJldHVybiJzeW1ib2wiPT10eXBlb2Ygdj92Oigic3RyaW5nIj09dHlwZW9mIHY/IlMiOiJQIikrdjtpZighYyh2LHIpKXtpZighZih2KSlyZXR1cm4iRiI7aWYoIUgpcmV0dXJuIkUiO3Uodil9cmV0dXJuIHZbcl0uaX0sZ2V0V2Vh''@;'; put 'put ''azpmdW5jdGlvbih2LEgpe2lmKCFjKHYscikpe2lmKCFmKHYpKXJldHVybiEwO2lmKCFIKXJldHVybiExO3Uodil9cmV0dXJuIHZbcl0ud30sb25GcmVlemU6ZnVuY3Rpb24odil7cmV0dXJuIGcmJnAuTkVFRCYmZih2KSYmIWModixyKSYmdSh2KSx2fX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIg''@;'; put 'put ''cj1sKDUpKCJ1bnNjb3BhYmxlcyIpLGE9QXJyYXkucHJvdG90eXBlO2Fbcl09PWsmJmwoMTEpKGEscix7fSksQS5leHBvcnRzPWZ1bmN0aW9uKGMpe2Fbcl1bY109ITB9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsLHIpe3JldHVybntlbnVtZXJhYmxlOiEoMSZsKSxjb25m''@;'; put 'put ''aWd1cmFibGU6ISgyJmwpLHdyaXRhYmxlOiEoNCZsKSx2YWx1ZTpyfX19LGZ1bmN0aW9uKEEsZSl7dmFyIGw9MCxyPU1hdGgucmFuZG9tKCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEpe3JldHVybiJTeW1ib2woIi5jb25jYXQoYT09PWs/IiI6YSwiKV8iLCgrK2wrcikudG9TdHJpbmcoMzYpKX19''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDk1KSxhPWwoNjkpO0EuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24obyl7cmV0dXJuIHIobyxhKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIwKSxhPU1hdGgubWF4LGM9TWF0aC5taW47QS5leHBvcnRzPWZ1bmN0aW9uKG8saCl7cmV0''@;'; put 'put ''dXJuKG89cihvKSk8MD9hKG8raCwwKTpjKG8saCl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKSxhPWwoOTYpLGM9bCg2OSksbz1sKDY4KSgiSUVfUFJPVE8iKSxoPWZ1bmN0aW9uKCl7fSxmPSJwcm90b3R5cGUiLGc9ZnVuY3Rpb24oKXt2YXIgdSxwPWwoNjYpKCJpZnJhbWUiKSx2PWMu''@;'; put 'put ''bGVuZ3RoO2ZvcihwLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGwoNzApLmFwcGVuZENoaWxkKHApLHAuc3JjPSJqYXZhc2NyaXB0OiIsKHU9cC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksdS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSx1LmNsb3Nl''@;'; put 'put ''KCksZz11LkY7di0tOylkZWxldGUgZ1tmXVtjW3ZdXTtyZXR1cm4gZygpfTtBLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24ocCx2KXt2YXIgSDtyZXR1cm4gbnVsbCE9PXA/KGhbZl09cihwKSxIPW5ldyBoLGhbZl09bnVsbCxIW29dPXApOkg9ZygpLHY9PT1rP0g6YShILHYpfX0s''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOTUpLGE9bCg2OSkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKG8pe3JldHVybiByKG8sYSl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoOCksYz1sKDcp''@;'; put 'put ''LG89bCg1KSgic3BlY2llcyIpO0EuZXhwb3J0cz1mdW5jdGlvbihoKXt2YXIgZj1yW2hdO2MmJmYmJiFmW29dJiZhLmYoZixvLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsLHIsYSxjKXtp''@;'; put 'put ''ZighKGwgaW5zdGFuY2VvZiByKXx8YyE9PWsmJmMgaW4gbCl0aHJvdyBUeXBlRXJyb3IoYSsiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gbH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE4KSxhPWwoMTA4KSxjPWwoODEpLG89bCgxKSxoPWwoNiksZj1sKDgzKSxnPXt9LHU9''@;'; put 'put ''e307KGU9QS5leHBvcnRzPWZ1bmN0aW9uKHAsdixILEMsVil7dmFyIFMsXyxiLE0seD1WP2Z1bmN0aW9uKCl7cmV0dXJuIHB9OmYocCksRT1yKEgsQyx2PzI6MSksdz0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB4KXRocm93IFR5cGVFcnJvcihwKyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKGMo''@;'; put 'put ''eCkpe2ZvcihTPWgocC5sZW5ndGgpO3c8Uzt3KyspaWYoKE09dj9FKG8oXz1wW3ddKVswXSxfWzFdKTpFKHBbd10pKT09PWd8fE09PT11KXJldHVybiBNfWVsc2UgZm9yKGI9eC5jYWxsKHApOyEoXz1iLm5leHQoKSkuZG9uZTspaWYoKE09YShiLEUsXy52YWx1ZSx2KSk9PT1nfHxNPT09dSly''@;'; put 'put ''ZXR1cm4gTX0pLkJSRUFLPWcsZS5SRVRVUk49dX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTIpO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMsbyl7Zm9yKHZhciBoIGluIGMpcihhLGgsY1toXSxvKTtyZXR1cm4gYX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpO0EuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbihhLGMpe2lmKCFyKGEpfHxhLl90IT09Yyl0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitjKyIgcmVxdWlyZWQhIik7cmV0dXJuIGF9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg4KS5mLGE9bCgxNCksYz1sKDUpKCJ0b1N0cmluZ1RhZyIpO0EuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihvLGgsZil7byYmIWEobz1mP286by5wcm90b3R5cGUsYykmJnIobyxjLHtjb25maWd1cmFibGU6ITAsdmFsdWU6aH0pfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTkpLGE9bCg1KSgidG9TdHJpbmdUYWciKSxjPSJBcmd1bWVudHMiPT1yKGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGFyZ3VtZW50c30oKSk7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3ZhciBoLGYsZztyZXR1cm4gbz09PWs/IlVuZGVmaW5lZCI6bnVsbD09PW8/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoZj1mdW5jdGlvbih1LHApe3RyeXtyZXR1cm4gdVtwXX1jYXRjaCh2KXt9fShoPU9iamVjdChvKSxhKSk/''@;'; put 'put ''ZjpjP3IoaCk6Ik9iamVjdCI9PShnPXIoaCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgaC5jYWxsZWU/IkFyZ3VtZW50cyI6Z319LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyMyksYz1sKDMpLG89bCg3MyksaD0iWyIrbysiXSIsZj1SZWdFeHAoIl4iK2graCsiKiIpLGc9UmVnRXhw''@;'; put 'put ''KGgraCsiKiQiKSx1PWZ1bmN0aW9uKHYsSCxDKXt2YXIgVj17fSxTPWMoZnVuY3Rpb24oKXtyZXR1cm4hIW9bdl0oKXx8Ilx1MjAwYlx4ODUiIT0iXHUyMDBiXHg4NSJbdl0oKX0pLF89Vlt2XT1TP0gocCk6b1t2XTtDJiYoVltDXT1fKSxyKHIuUCtyLkYqUywiU3RyaW5nIixWKX0scD11LnRy''@;'; put 'put ''aW09ZnVuY3Rpb24odixIKXtyZXR1cm4gdj1TdHJpbmcoYSh2KSksMSZIJiYodj12LnJlcGxhY2UoZiwiIikpLDImSCYmKHY9di5yZXBsYWNlKGcsIiIpKSx2fTtBLmV4cG9ydHM9dX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9e319LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDI2KSxhPWwo''@;'; put 'put ''MiksYz0iX19jb3JlLWpzX3NoYXJlZF9fIixvPWFbY118fChhW2NdPXt9KTsoQS5leHBvcnRzPWZ1bmN0aW9uKGgsZil7cmV0dXJuIG9baF18fChvW2hdPWYhPT1rP2Y6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjpyLnZlcnNpb24sbW9kZTpsKDI5KT8icHVyZSI6Imdsb2Jh''@;'; put 'put ''bCIsY29weXJpZ2h0OiJceGE5IDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE5KTtBLmV4cG9ydHM9T2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCk/T2JqZWN0OmZ1bmN0aW9uKGEpe3JldHVybiJTdHJpbmci''@;'; put 'put ''PT1yKGEpP2Euc3BsaXQoIiIpOk9iamVjdChhKX19LGZ1bmN0aW9uKEEsZSl7ZS5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKTtBLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgYT1yKHRoaXMpLGM9IiI7cmV0dXJuIGEuZ2xvYmFsJiYoYys9Imci''@;'; put 'put ''KSxhLmlnbm9yZUNhc2UmJihjKz0iaSIpLGEubXVsdGlsaW5lJiYoYys9Im0iKSxhLnVuaWNvZGUmJihjKz0idSIpLGEuc3RpY2t5JiYoYys9InkiKSxjfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMSksYT1sKDEwKSxjPWwoNSkoInNwZWNpZXMiKTtBLmV4cG9ydHM9ZnVuY3Rpb24obyxo''@;'; put 'put ''KXt2YXIgZixnPXIobykuY29uc3RydWN0b3I7cmV0dXJuIGc9PT1rfHwoZj1yKGcpW2NdKT09az9oOmEoZil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxNSksYT1sKDYpLGM9bCgzNSk7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihoLGYsZyl7dmFyIHUscD1yKGgp''@;'; put 'put ''LHY9YShwLmxlbmd0aCksSD1jKGcsdik7aWYobyYmZiE9Zil7Zm9yKDtIPHY7KWlmKCh1PXBbSCsrXSkhPXUpcmV0dXJuITB9ZWxzZSBmb3IoO0g8djtIKyspaWYoKG98fEggaW4gcCkmJnBbSF09PT1mKXJldHVybiBvfHxIfHwwO3JldHVybiFvJiYtMX19fSxmdW5jdGlvbihBLGUpe2UuZj1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxOSk7QS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGMpe3JldHVybiJBcnJheSI9PXIoYyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyMCksYT1sKDIzKTtBLmV4cG9ydHM9ZnVu''@;'; put 'put ''Y3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKG8saCl7dmFyIGYsZyx1PVN0cmluZyhhKG8pKSxwPXIoaCksdj11Lmxlbmd0aDtyZXR1cm4gcDwwfHx2PD1wP2M/IiI6azooZj11LmNoYXJDb2RlQXQocCkpPDU1Mjk2fHw1NjMxOTxmfHxwKzE9PT12fHwoZz11LmNoYXJDb2RlQXQocCsxKSk8NTYz''@;'; put 'put ''MjB8fDU3MzQzPGc/Yz91LmNoYXJBdChwKTpmOmM/dS5zbGljZShwLHArMik6Zy01NjMyMCsoZi01NTI5Njw8MTApKzY1NTM2fX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpLGE9bCgxOSksYz1sKDUpKCJtYXRjaCIpO0EuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgaDtyZXR1cm4gcihv''@;'; put 'put ''KSYmKChoPW9bY10pIT09az8hIWg6IlJlZ0V4cCI9PWEobykpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNSkoIml0ZXJhdG9yIiksYT0hMTt0cnl7dmFyIGM9WzddW3JdKCk7Yy5yZXR1cm49ZnVuY3Rpb24oKXthPSEwfSxBcnJheS5mcm9tKGMsZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0''@;'; put 'put ''Y2gobyl7fUEuZXhwb3J0cz1mdW5jdGlvbihvLGgpe2lmKCFoJiYhYSlyZXR1cm4hMTt2YXIgZj0hMTt0cnl7dmFyIGc9WzddLHU9Z1tyXSgpO3UubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOmY9ITB9fSxnW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHV9LG8oZyl9Y2F0Y2gocCl7fXJldHVy''@;'; put 'put ''biBmfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNDQpLGE9UmVnRXhwLnByb3RvdHlwZS5leGVjO0EuZXhwb3J0cz1mdW5jdGlvbihjLG8pe3ZhciBoPWMuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgaCl7dmFyIGY9aC5jYWxsKGMsbyk7aWYoIm9iamVjdCIhPXR5cGVvZiBmKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCIpO3JldHVybiBmfWlmKCJSZWdFeHAiIT09cihjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRp''@;'; put 'put ''YmxlIHJlY2VpdmVyIik7cmV0dXJuIGEuY2FsbChjLG8pfX0sZnVuY3Rpb24oQSxlLGwpe2woMTEyKTt2YXIgcj1sKDEyKSxhPWwoMTEpLGM9bCgzKSxvPWwoMjMpLGg9bCg1KSxmPWwoODcpLGc9aCgic3BlY2llcyIpLHU9IWMoZnVuY3Rpb24oKXt2YXIgdj0vLi87cmV0dXJuIHYuZXhlYz1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBIPVtdO3JldHVybiBILmdyb3Vwcz17YToiNyJ9LEh9LCI3IiE9PSIiLnJlcGxhY2UodiwiJDxhPiIpfSkscD1mdW5jdGlvbigpe3ZhciB2PS8oPzopLyxIPXYuZXhlYzt2LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gSC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBD''@;'; put 'put ''PSJhYiIuc3BsaXQodik7cmV0dXJuIDI9PT1DLmxlbmd0aCYmImEiPT09Q1swXSYmImIiPT09Q1sxXX0oKTtBLmV4cG9ydHM9ZnVuY3Rpb24odixILEMpe3ZhciBWPWgodiksUz0hYyhmdW5jdGlvbigpe3ZhciBFPXt9O3JldHVybiBFW1ZdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3Zd''@;'; put 'put ''KEUpfSksXz1TPyFjKGZ1bmN0aW9uKCl7dmFyIEU9ITEsdz0vYS87cmV0dXJuIHcuZXhlYz1mdW5jdGlvbigpe3JldHVybiBFPSEwLG51bGx9LCJzcGxpdCI9PT12JiYody5jb25zdHJ1Y3Rvcj17fSx3LmNvbnN0cnVjdG9yW2ddPWZ1bmN0aW9uKCl7cmV0dXJuIHd9KSx3W1ZdKCIiKSwhRX0p''@;'; put 'put ''Oms7aWYoIVN8fCFffHwicmVwbGFjZSI9PT12JiYhdXx8InNwbGl0Ij09PXYmJiFwKXt2YXIgYj0vLi9bVl0sTT1DKG8sViwiIlt2XSxmdW5jdGlvbih3LE4sSSxXLE8pe3JldHVybiBOLmV4ZWM9PT1mP1MmJiFPP3tkb25lOiEwLHZhbHVlOmIuY2FsbChOLEksVyl9Ontkb25lOiEwLHZhbHVl''@;'; put 'put ''OncuY2FsbChJLE4sVyl9Ontkb25lOiExfX0pLHg9TVsxXTtyKFN0cmluZy5wcm90b3R5cGUsdixNWzBdKSxhKFJlZ0V4cC5wcm90b3R5cGUsViwyPT1IP2Z1bmN0aW9uKEUsdyl7cmV0dXJuIHguY2FsbChFLHRoaXMsdyl9OmZ1bmN0aW9uKEUpe3JldHVybiB4LmNhbGwoRSx0aGlzKX0pfX19''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIpLm5hdmlnYXRvcjtBLmV4cG9ydHM9ciYmci51c2VyQWdlbnR8fCIifSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoMCksYz1sKDEyKSxvPWwoNDEpLGg9bCgzMCksZj1sKDQwKSxnPWwoMzkpLHU9bCg0KSxwPWwoMyksdj1sKDU3KSxI''@;'; put 'put ''PWwoNDMpLEM9bCg3Mik7QS5leHBvcnRzPWZ1bmN0aW9uKFYsUyxfLGIsTSx4KXt2YXIgRT1yW1ZdLHc9RSxOPU0/InNldCI6ImFkZCIsST13JiZ3LnByb3RvdHlwZSxXPXt9LE89ZnVuY3Rpb24ocDEpe3ZhciBnMT1JW3AxXTtjKEkscDEsImRlbGV0ZSI9PXAxP2Z1bmN0aW9uKEgxKXtyZXR1''@;'; put 'put ''cm4hKHgmJiF1KEgxKSkmJmcxLmNhbGwodGhpcywwPT09SDE/MDpIMSl9OiJoYXMiPT1wMT9mdW5jdGlvbihEMSl7cmV0dXJuISh4JiYhdShEMSkpJiZnMS5jYWxsKHRoaXMsMD09PUQxPzA6RDEpfToiZ2V0Ij09cDE/ZnVuY3Rpb24oRDEpe3JldHVybiB4JiYhdShEMSk/azpnMS5jYWxsKHRo''@;'; put 'put ''aXMsMD09PUQxPzA6RDEpfToiYWRkIj09cDE/ZnVuY3Rpb24oRDEpe3JldHVybiBnMS5jYWxsKHRoaXMsMD09PUQxPzA6RDEpLHRoaXN9OmZ1bmN0aW9uKEQxLGope3JldHVybiBnMS5jYWxsKHRoaXMsMD09PUQxPzA6RDEsaiksdGhpc30pfTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdyYmKHh8''@;'; put 'put ''fEkuZm9yRWFjaCYmIXAoZnVuY3Rpb24oKXsobmV3IHcpLmVudHJpZXMoKS5uZXh0KCl9KSkpe3ZhciBCPW5ldyB3LHo9QltOXSh4P3t9Oi0wLDEpIT1CLGwxPXAoZnVuY3Rpb24oKXtCLmhhcygxKX0pLGExPXYoZnVuY3Rpb24ocDEpe25ldyB3KHAxKX0pLGgxPSF4JiZwKGZ1bmN0aW9uKCl7''@;'; put 'put ''Zm9yKHZhciBwMT1uZXcgdyxnMT01O2cxLS07KXAxW05dKGcxLGcxKTtyZXR1cm4hcDEuaGFzKC0wKX0pO2ExfHwoKCh3PVMoZnVuY3Rpb24ocDEsZzEpe2cocDEsdyxWKTt2YXIgSDE9QyhuZXcgRSxwMSx3KTtyZXR1cm4gZzEhPWsmJmYoZzEsTSxIMVtOXSxIMSksSDF9KSkucHJvdG90eXBl''@;'; put 'put ''PUkpLmNvbnN0cnVjdG9yPXcpLChsMXx8aDEpJiYoTygiZGVsZXRlIiksTygiaGFzIiksTSYmTygiZ2V0IikpLChoMXx8eikmJk8oTikseCYmSS5jbGVhciYmZGVsZXRlIEkuY2xlYXJ9ZWxzZSB3PWIuZ2V0Q29uc3RydWN0b3IoUyxWLE0sTiksbyh3LnByb3RvdHlwZSxfKSxoLk5FRUQ9ITA7''@;'; put 'put ''cmV0dXJuIEgodyxWKSxhKGEuRythLlcrYS5GKigoV1tWXT13KSE9RSksVykseHx8Yi5zZXRTdHJvbmcodyxWLE0pLHd9fSxmdW5jdGlvbihBLGUsbCl7Zm9yKHZhciByLGE9bCgyKSxjPWwoMTEpLG89bCgzMyksaD1vKCJ0eXBlZF9hcnJheSIpLGY9bygidmlldyIpLGc9ISghYS5BcnJheUJ1''@;'; put 'put ''ZmZlcnx8IWEuRGF0YVZpZXcpLHU9ZyxwPTAsdj0iSW50OEFycmF5LFVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXkiLnNwbGl0KCIsIik7cDw5Oykocj1hW3Zb''@;'; put 'put ''cCsrXV0pPyhjKHIucHJvdG90eXBlLGgsITApLGMoci5wcm90b3R5cGUsZiwhMCkpOnU9ITE7QS5leHBvcnRzPXtBQlY6ZyxDT05TVFI6dSxUWVBFRDpoLFZJRVc6Zn19LGZ1bmN0aW9uKEEsZSxsKXtBLmV4cG9ydHM9bCgyOSl8fCFsKDMpKGZ1bmN0aW9uKCl7dmFyIHI9TWF0aC5yYW5kb20o''@;'; put 'put ''KTtfX2RlZmluZVNldHRlcl9fLmNhbGwobnVsbCxyLGZ1bmN0aW9uKCl7fSksZGVsZXRlIGwoMilbcl19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEpe3Ioci5TLGEse29mOmZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsaD1u''@;'; put 'put ''ZXcgQXJyYXkobyk7by0tOyloW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gbmV3IHRoaXMoaCl9fSl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTApLGM9bCgxOCksbz1sKDQwKTtBLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cihyLlMsaCx7ZnJvbTpmdW5jdGlvbihnKXt2YXIgdSxw''@;'; put 'put ''LHYsSCxDPWFyZ3VtZW50c1sxXTtyZXR1cm4gYSh0aGlzKSwodT1DIT09aykmJmEoQyksZz09az9uZXcgdGhpczoocD1bXSx1Pyh2PTAsSD1jKEMsYXJndW1lbnRzWzJdLDIpLG8oZywhMSxmdW5jdGlvbihWKXtwLnB1c2goSChWLHYrKykpfSkpOm8oZywhMSxwLnB1c2gscCksbmV3IHRoaXMo''@;'; put 'put ''cCkpfX0pfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDIpLmRvY3VtZW50LGM9cihhKSYmcihhLmNyZWF0ZUVsZW1lbnQpO0EuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gYz9hLmNyZWF0ZUVsZW1lbnQobyk6e319fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwo''@;'; put 'put ''MjYpLGM9bCgyOSksbz1sKDk0KSxoPWwoOCkuZjtBLmV4cG9ydHM9ZnVuY3Rpb24oZil7dmFyIGc9YS5TeW1ib2x8fChhLlN5bWJvbD1jP3t9OnIuU3ltYm9sfHx7fSk7Il8iPT1mLmNoYXJBdCgwKXx8ZiBpbiBnfHxoKGcsZix7dmFsdWU6by5mKGYpfSl9fSxmdW5jdGlvbihBLGUsbCl7dmFy''@;'; put 'put ''IHI9bCg0NykoImtleXMiKSxhPWwoMzMpO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gcltjXXx8KHJbY109YShjKSl9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xv''@;'; put 'put ''Y2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKS5kb2N1bWVudDtBLmV4cG9ydHM9ciYmci5kb2N1bWVudEVsZW1lbnR9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpLGE9bCgxKSxjPWZ1bmN0aW9uKG8saCl7aWYoYShv''@;'; put 'put ''KSwhcihoKSYmbnVsbCE9PWgpdGhyb3cgVHlwZUVycm9yKGgrIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSEiKX07QS5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKG8saCxmKXt0cnl7KGY9bCgxOCkoRnVuY3Rpb24uY2FsbCxs''@;'; put 'put ''KDE2KS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSkobyxbXSksaD0hKG8gaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2goZyl7aD0hMH1yZXR1cm4gZnVuY3Rpb24odSxwKXtyZXR1cm4gYyh1LHApLGg/dS5fX3Byb3RvX189cDpmKHUscCksdX19KHt9LCExKTprKSxjaGVj''@;'; put 'put ''azpjfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDcxKS5zZXQ7QS5leHBvcnRzPWZ1bmN0aW9uKGMsbyxoKXt2YXIgZixnPW8uY29uc3RydWN0b3I7cmV0dXJuIGchPT1oJiYiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGY9Zy5wcm90b3R5cGUpIT09aC5wcm90b3R5cGUmJnIoZikm''@;'; put 'put ''JmEmJmEoYyxmKSxjfX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1''@;'; put 'put ''ZmVmZiJ9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIwKSxhPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgaD1TdHJpbmcoYSh0aGlzKSksZj0iIixnPXIobyk7aWYoZzwwfHxnPT0xLzApdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoOzA8''@;'; put 'put ''ZzsoZz4+Pj0xKSYmKGgrPWgpKTEmZyYmKGYrPWgpO3JldHVybiBmfX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihyKXtyZXR1cm4gMD09KHI9K3IpfHxyIT1yP3I6cjwwPy0xOjF9fSxmdW5jdGlvbihBLGUpe3ZhciBsPU1hdGguZXhwbTE7QS5leHBvcnRz''@;'; put 'put ''PSFsfHwyMjAyNS40NjU3OTQ4MDY3MTg8bCgxMCl8fGwoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1sKC0yZS0xNyk/ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PShhPSthKT9hOi0xZS02PGEmJmE8MWUtNj9hK2EqYS8yOk1hdGguZXhwKGEpLTF9Omx9LGZ1bmN0aW9uKEEsZSxsKXt2''@;'; put 'put ''YXIgcj1sKDU2KSxhPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihjLG8saCl7aWYocihvKSl0aHJvdyBUeXBlRXJyb3IoIlN0cmluZyMiK2grIiBkb2Vzbid0IGFjY2VwdCByZWdleCEiKTtyZXR1cm4gU3RyaW5nKGEoYykpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNSkoIm1hdGNoIik7''@;'; put 'put ''QS5leHBvcnRzPWZ1bmN0aW9uKGEpe3ZhciBjPS8uLzt0cnl7Ii8uLyJbYV0oYyl9Y2F0Y2gobyl7dHJ5e3JldHVybiBjW3JdPSExLCEiLy4vIlthXShjKX1jYXRjaChoKXt9fXJldHVybiEwfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjkpLGE9bCgwKSxjPWwoMTIpLG89bCgxMSksaD1s''@;'; put 'put ''KDQ2KSxmPWwoODApLGc9bCg0MyksdT1sKDE3KSxwPWwoNSkoIml0ZXJhdG9yIiksdj0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxIPSJ2YWx1ZXMiLEM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307QS5leHBvcnRzPWZ1bmN0aW9uKFYsUyxfLGIsTSx4LEUpe2YoXyxTLGIpO3ZhciB3''@;'; put 'put ''LE4sSSxXPWZ1bmN0aW9uKEgxKXtpZighdiYmSDEgaW4gbDEpcmV0dXJuIGwxW0gxXTtzd2l0Y2goSDEpe2Nhc2Uia2V5cyI6Y2FzZSBIOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgXyh0aGlzLEgxKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfKHRoaXMsSDEpfX0sTz1T''@;'; put 'put ''KyIgSXRlcmF0b3IiLEI9TT09SCx6PSExLGwxPVYucHJvdG90eXBlLGExPWwxW3BdfHxsMVsiQEBpdGVyYXRvciJdfHxNJiZsMVtNXSxoMT1hMXx8VyhNKSxwMT1NP0I/VygiZW50cmllcyIpOmgxOmssZzE9IkFycmF5Ij09UyYmbDEuZW50cmllc3x8YTE7aWYoZzEmJihJPXUoZzEuY2FsbChu''@;'; put 'put ''ZXcgVikpKSE9PU9iamVjdC5wcm90b3R5cGUmJkkubmV4dCYmKGcoSSxPLCEwKSxyfHwiZnVuY3Rpb24iPT10eXBlb2YgSVtwXXx8byhJLHAsQykpLEImJmExJiZhMS5uYW1lIT09SCYmKHo9ITAsaDE9ZnVuY3Rpb24oKXtyZXR1cm4gYTEuY2FsbCh0aGlzKX0pLHImJiFFfHwhdiYmIXomJmwx''@;'; put 'put ''W3BdfHxvKGwxLHAsaDEpLGhbU109aDEsaFtPXT1DLE0paWYodz17dmFsdWVzOkI/aDE6VyhIKSxrZXlzOng/aDE6Vygia2V5cyIpLGVudHJpZXM6cDF9LEUpZm9yKE4gaW4gdylOIGluIGwxfHxjKGwxLE4sd1tOXSk7ZWxzZSBhKGEuUCthLkYqKHZ8fHopLFMsdyk7cmV0dXJuIHd9fSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgzNiksYT1sKDMyKSxjPWwoNDMpLG89e307bCgxMSkobyxsKDUpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxBLmV4cG9ydHM9ZnVuY3Rpb24oaCxmLGcpe2gucHJvdG90eXBlPXIobyx7bmV4dDphKDEsZyl9KSxjKGgsZisiIEl0ZXJh''@;'; put 'put ''dG9yIil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0NiksYT1sKDUpKCJpdGVyYXRvciIpLGM9QXJyYXkucHJvdG90eXBlO0EuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gbyE9PWsmJihyLkFycmF5PT09b3x8Y1thXT09PW8pfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOCksYT1s''@;'; put 'put ''KDMyKTtBLmV4cG9ydHM9ZnVuY3Rpb24oYyxvLGgpe28gaW4gYz9yLmYoYyxvLGEoMCxoKSk6Y1tvXT1ofX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNDQpLGE9bCg1KSgiaXRlcmF0b3IiKSxjPWwoNDYpO0EuZXhwb3J0cz1sKDI2KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbihvKXtp''@;'; put 'put ''ZihvIT1rKXJldHVybiBvW2FdfHxvWyJAQGl0ZXJhdG9yIl18fGNbcihvKV19fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyMTMpO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMpe3JldHVybiBuZXcocihhKSkoYyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg5KSxhPWwoMzUpLGM9bCg2KTtB''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oaCl7Zm9yKHZhciBmPXIodGhpcyksZz1jKGYubGVuZ3RoKSx1PWFyZ3VtZW50cy5sZW5ndGgscD1hKDE8dT9hcmd1bWVudHNbMV06ayxnKSx2PTI8dT9hcmd1bWVudHNbMl06ayxIPXY9PT1rP2c6YSh2LGcpO3A8SDspZltwKytdPWg7cmV0dXJuIGZ9fSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgzMSksYT1sKDExMSksYz1sKDQ2KSxvPWwoMTUpO0EuZXhwb3J0cz1sKDc5KShBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKGgsZil7dGhpcy5fdD1vKGgpLHRoaXMuX2k9MCx0aGlzLl9rPWZ9LGZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5fdCxmPXRoaXMuX2ssZz10''@;'; put 'put ''aGlzLl9pKys7cmV0dXJuIWh8fGgubGVuZ3RoPD1nPyh0aGlzLl90PWssYSgxKSk6YSgwLCJrZXlzIj09Zj9nOiJ2YWx1ZXMiPT1mP2hbZ106W2csaFtnXV0pfSwidmFsdWVzIiksYy5Bcmd1bWVudHM9Yy5BcnJheSxyKCJrZXlzIikscigidmFsdWVzIikscigiZW50cmllcyIpfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHIsYSxjPWwoNTApLG89UmVnRXhwLnByb3RvdHlwZS5leGVjLGg9U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGY9byxnPSJsYXN0SW5kZXgiLHU9KGE9L2IqL2csby5jYWxsKHI9L2EvLCJhIiksby5jYWxsKGEsImEiKSwwIT09cltnXXx8MCE9PWFbZ10pLHA9LygpPz8v''@;'; put 'put ''LmV4ZWMoIiIpWzFdIT09azsodXx8cCkmJihmPWZ1bmN0aW9uKEgpe3ZhciBDLFYsUyxfLGI9dGhpcztyZXR1cm4gcCYmKFY9bmV3IFJlZ0V4cCgiXiIrYi5zb3VyY2UrIiQoPyFcXHMpIixjLmNhbGwoYikpKSx1JiYoQz1iW2ddKSxTPW8uY2FsbChiLEgpLHUmJlMmJihiW2ddPWIuZ2xvYmFs''@;'; put 'put ''P1MuaW5kZXgrU1swXS5sZW5ndGg6QykscCYmUyYmMTxTLmxlbmd0aCYmaC5jYWxsKFNbMF0sVixmdW5jdGlvbigpe2ZvcihfPTE7Xzxhcmd1bWVudHMubGVuZ3RoLTI7XysrKWFyZ3VtZW50c1tfXT09PWsmJihTW19dPWspfSksU30pLEEuZXhwb3J0cz1mfSxmdW5jdGlvbihBLGUsbCl7dmFy''@;'; put 'put ''IHI9bCg1NSkoITApO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMsbyl7cmV0dXJuIGMrKG8/cihhLGMpLmxlbmd0aDoxKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcixhLGMsbz1sKDE4KSxoPWwoMTAxKSxmPWwoNzApLGc9bCg2NiksdT1sKDIpLHA9dS5wcm9jZXNzLHY9dS5zZXRJbW1lZGlhdGUs''@;'; put 'put ''SD11LmNsZWFySW1tZWRpYXRlLEM9dS5NZXNzYWdlQ2hhbm5lbCxWPXUuRGlzcGF0Y2gsUz0wLF89e30sYj0ib25yZWFkeXN0YXRlY2hhbmdlIixNPWZ1bmN0aW9uKCl7dmFyIEU9K3RoaXM7aWYoXy5oYXNPd25Qcm9wZXJ0eShFKSl7dmFyIHc9X1tFXTtkZWxldGUgX1tFXSx3KCl9fSx4PWZ1''@;'; put 'put ''bmN0aW9uKEUpe00uY2FsbChFLmRhdGEpfTt2JiZIfHwodj1mdW5jdGlvbih3KXtmb3IodmFyIE49W10sST0xO0k8YXJndW1lbnRzLmxlbmd0aDspTi5wdXNoKGFyZ3VtZW50c1tJKytdKTtyZXR1cm4gX1srK1NdPWZ1bmN0aW9uKCl7aCgiZnVuY3Rpb24iPT10eXBlb2Ygdz93OkZ1bmN0aW9u''@;'; put 'put ''KHcpLE4pfSxyKFMpLFN9LEg9ZnVuY3Rpb24odyl7ZGVsZXRlIF9bd119LCJwcm9jZXNzIj09bCgxOSkocCk/cj1mdW5jdGlvbihFKXtwLm5leHRUaWNrKG8oTSxFLDEpKX06ViYmVi5ub3c/cj1mdW5jdGlvbihFKXtWLm5vdyhvKE0sRSwxKSl9OkM/KGM9KGE9bmV3IEMpLnBvcnQyLGEucG9y''@;'; put 'put ''dDEub25tZXNzYWdlPXgscj1vKGMucG9zdE1lc3NhZ2UsYywxKSk6dS5hZGRFdmVudExpc3RlbmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgcG9zdE1lc3NhZ2UmJiF1LmltcG9ydFNjcmlwdHM/KHI9ZnVuY3Rpb24oRSl7dS5wb3N0TWVzc2FnZShFKyIiLCIqIil9LHUuYWRkRXZlbnRMaXN0ZW5l''@;'; put 'put ''cigibWVzc2FnZSIseCwhMSkpOnI9YiBpbiBnKCJzY3JpcHQiKT9mdW5jdGlvbihFKXtmLmFwcGVuZENoaWxkKGcoInNjcmlwdCIpKVtiXT1mdW5jdGlvbigpe2YucmVtb3ZlQ2hpbGQodGhpcyksTS5jYWxsKEUpfX06ZnVuY3Rpb24oRSl7c2V0VGltZW91dChvKE0sRSwxKSwwKX0pLEEuZXhw''@;'; put 'put ''b3J0cz17c2V0OnYsY2xlYXI6SH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIpLGE9bCg4OSkuc2V0LGM9ci5NdXRhdGlvbk9ic2VydmVyfHxyLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsbz1yLnByb2Nlc3MsaD1yLlByb21pc2UsZj0icHJvY2VzcyI9PWwoMTkpKG8pO0EuZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBnLHUscCx2PWZ1bmN0aW9uKCl7dmFyIFMsXztmb3IoZiYmKFM9by5kb21haW4pJiZTLmV4aXQoKTtnOyl7Xz1nLmZuLGc9Zy5uZXh0O3RyeXtfKCl9Y2F0Y2goYil7dGhyb3cgZz9wKCk6dT1rLGJ9fXU9ayxTJiZTLmVudGVyKCl9O2lmKGYpcD1mdW5jdGlvbigpe28u''@;'; put 'put ''bmV4dFRpY2sodil9O2Vsc2UgaWYoIWN8fHIubmF2aWdhdG9yJiZyLm5hdmlnYXRvci5zdGFuZGFsb25lKWlmKGgmJmgucmVzb2x2ZSl7dmFyIEg9aC5yZXNvbHZlKGspO3A9ZnVuY3Rpb24oKXtILnRoZW4odil9fWVsc2UgcD1mdW5jdGlvbigpe2EuY2FsbChyLHYpfTtlbHNle3ZhciBDPSEw''@;'; put 'put ''LFY9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyBjKHYpLm9ic2VydmUoVix7Y2hhcmFjdGVyRGF0YTohMH0pLHA9ZnVuY3Rpb24oKXtWLmRhdGE9Qz0hQ319cmV0dXJuIGZ1bmN0aW9uKFMpe3ZhciBfPXtmbjpTLG5leHQ6a307dSYmKHUubmV4dD1fKSxnfHwoZz1fLHAoKSksdT1f''@;'; put 'put ''fX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEwKTtmdW5jdGlvbiBhKGMpe3ZhciBvLGg7dGhpcy5wcm9taXNlPW5ldyBjKGZ1bmN0aW9uKGYsZyl7aWYobyE9PWt8fGghPT1rKXRocm93IFR5cGVFcnJvcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTtvPWYsaD1nfSksdGhpcy5yZXNv''@;'; put 'put ''bHZlPXIobyksdGhpcy5yZWplY3Q9cihoKX1BLmV4cG9ydHMuZj1mdW5jdGlvbihjKXtyZXR1cm4gbmV3IGEoYyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoNyksYz1sKDI5KSxvPWwoNjIpLGg9bCgxMSksZj1sKDQxKSxnPWwoMyksdT1sKDM5KSxwPWwoMjApLHY9bCg2KSxI''@;'; put 'put ''PWwoMTIyKSxDPWwoMzcpLmYsVj1sKDgpLmYsUz1sKDg1KSxfPWwoNDMpLGI9IkFycmF5QnVmZmVyIixNPSJEYXRhVmlldyIseD0icHJvdG90eXBlIixFPSJXcm9uZyBpbmRleCEiLHc9cltiXSxOPXJbTV0sST1yLk1hdGgsVz1yLlJhbmdlRXJyb3IsTz1yLkluZmluaXR5LEI9dyx6PUkuYWJz''@;'; put 'put ''LGwxPUkucG93LGExPUkuZmxvb3IsaDE9SS5sb2cscDE9SS5MTjIsZzE9ImJ5dGVMZW5ndGgiLEgxPSJieXRlT2Zmc2V0IixEMT1hPyJfYiI6ImJ1ZmZlciIsaj1hPyJfbCI6ZzEsbjE9YT8iX28iOkgxO2Z1bmN0aW9uIG0xKFkscSxRKXt2YXIgZDEsTjEsUzEscjE9bmV3IEFycmF5KFEpLGkx''@;'; put 'put ''PTgqUS1xLTEsQTE9KDE8PGkxKS0xLHgxPUExPj4xLEkxPTIzPT09cT9sMSgyLC0yNCktbDEoMiwtNzcpOjAsSjE9MCx0MD1ZPDB8fDA9PT1ZJiYxL1k8MD8xOjA7Zm9yKChZPXooWSkpIT1ZfHxZPT09Tz8oTjE9WSE9WT8xOjAsZDE9QTEpOihkMT1hMShoMShZKS9wMSksWSooUzE9bDEoMiwt''@;'; put 'put ''ZDEpKTwxJiYoZDEtLSxTMSo9MiksMjw9KFkrPTE8PWQxK3gxP0kxL1MxOkkxKmwxKDIsMS14MSkpKlMxJiYoZDErKyxTMS89MiksQTE8PWQxK3gxPyhOMT0wLGQxPUExKToxPD1kMSt4MT8oTjE9KFkqUzEtMSkqbDEoMixxKSxkMSs9eDEpOihOMT1ZKmwxKDIseDEtMSkqbDEoMixxKSxkMT0w''@;'; put 'put ''KSk7ODw9cTtyMVtKMSsrXT0yNTUmTjEsTjEvPTI1NixxLT04KTtmb3IoZDE9ZDE8PHF8TjEsaTErPXE7MDxpMTtyMVtKMSsrXT0yNTUmZDEsZDEvPTI1NixpMS09OCk7cmV0dXJuIHIxWy0tSjFdfD0xMjgqdDAscjF9ZnVuY3Rpb24gXzEoWSxxLFEpe3ZhciBkMSxOMT04KlEtcS0xLFMxPSgx''@;'; put 'put ''PDxOMSktMSxyMT1TMT4+MSxpMT1OMS03LEExPVEtMSx4MT1ZW0ExLS1dLEkxPTEyNyZ4MTtmb3IoeDE+Pj03OzA8aTE7STE9MjU2KkkxK1lbQTFdLEExLS0saTEtPTgpO2ZvcihkMT1JMSYoMTw8LWkxKS0xLEkxPj49LWkxLGkxKz1xOzA8aTE7ZDE9MjU2KmQxK1lbQTFdLEExLS0saTEtPTgp''@;'; put 'put ''O2lmKDA9PT1JMSlJMT0xLXIxO2Vsc2V7aWYoSTE9PT1TMSlyZXR1cm4gZDE/TmFOOngxPy1POk87ZDErPWwxKDIscSksSTEtPXIxfXJldHVybih4MT8tMToxKSpkMSpsMSgyLEkxLXEpfWZ1bmN0aW9uIEooWSl7cmV0dXJuIFlbM108PDI0fFlbMl08PDE2fFlbMV08PDh8WVswXX1mdW5jdGlv''@;'; put 'put ''biBvMShZKXtyZXR1cm5bMjU1JlldfWZ1bmN0aW9uIE0xKFkpe3JldHVyblsyNTUmWSxZPj44JjI1NV19ZnVuY3Rpb24gYjEoWSl7cmV0dXJuWzI1NSZZLFk+PjgmMjU1LFk+PjE2JjI1NSxZPj4yNCYyNTVdfWZ1bmN0aW9uIEIxKFkpe3JldHVybiBtMShZLDUyLDgpfWZ1bmN0aW9uICQoWSl7''@;'; put 'put ''cmV0dXJuIG0xKFksMjMsNCl9ZnVuY3Rpb24gUihZLHEsUSl7VihZW3hdLHEse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW1FdfX0pfWZ1bmN0aW9uIFooWSxxLFEsZDEpe3ZhciBOMT1IKCtRKTtpZihZW2pdPE4xK3EpdGhyb3cgVyhFKTt2YXIgUzE9TjErWVtuMV0scjE9WVtEMV0uX2Iu''@;'; put 'put ''c2xpY2UoUzEsUzErcSk7cmV0dXJuIGQxP3IxOnIxLnJldmVyc2UoKX1mdW5jdGlvbiBEKFkscSxRLGQxLE4xLFMxKXt2YXIgcjE9SCgrUSk7aWYoWVtqXTxyMStxKXRocm93IFcoRSk7Zm9yKHZhciBpMT1ZW0QxXS5fYixBMT1yMStZW24xXSx4MT1kMSgrTjEpLEkxPTA7STE8cTtJMSsrKWkx''@;'; put 'put ''W0ExK0kxXT14MVtTMT9JMTpxLUkxLTFdfWlmKG8uQUJWKXtpZighZyhmdW5jdGlvbigpe3coMSl9KXx8IWcoZnVuY3Rpb24oKXtuZXcgdygtMSl9KXx8ZyhmdW5jdGlvbigpe3JldHVybiBuZXcgdyxuZXcgdygxLjUpLG5ldyB3KE5hTiksdy5uYW1lIT1ifSkpe2Zvcih2YXIgeSxUPSh3PWZ1''@;'; put 'put ''bmN0aW9uKHEpe3JldHVybiB1KHRoaXMsdyksbmV3IEIoSChxKSl9KVt4XT1CW3hdLFA9QyhCKSx0MT0wO3QxPFAubGVuZ3RoOykoeT1QW3QxKytdKWluIHd8fGgodyx5LEJbeV0pO2N8fChULmNvbnN0cnVjdG9yPXcpfXZhciBzMT1uZXcgTihuZXcgdygyKSksZjE9Tlt4XS5zZXRJbnQ4O3Mx''@;'; put 'put ''LnNldEludDgoMCwyMTQ3NDgzNjQ4KSxzMS5zZXRJbnQ4KDEsMjE0NzQ4MzY0OSksIXMxLmdldEludDgoMCkmJnMxLmdldEludDgoMSl8fGYoTlt4XSx7c2V0SW50ODpmdW5jdGlvbihxLFEpe2YxLmNhbGwodGhpcyxxLFE8PDI0Pj4yNCl9LHNldFVpbnQ4OmZ1bmN0aW9uKHEsUSl7ZjEuY2Fs''@;'; put 'put ''bCh0aGlzLHEsUTw8MjQ+PjI0KX19LCEwKX1lbHNlIHc9ZnVuY3Rpb24ocSl7dSh0aGlzLHcsYik7dmFyIFE9SChxKTt0aGlzLl9iPVMuY2FsbChuZXcgQXJyYXkoUSksMCksdGhpc1tqXT1RfSxOPWZ1bmN0aW9uKHEsUSxkMSl7dSh0aGlzLE4sTSksdShxLHcsTSk7dmFyIE4xPXFbal0sUzE9''@;'; put 'put ''cChRKTtpZihTMTwwfHxOMTxTMSl0aHJvdyBXKCJXcm9uZyBvZmZzZXQhIik7aWYoTjE8UzErKGQxPWQxPT09az9OMS1TMTp2KGQxKSkpdGhyb3cgVygiV3JvbmcgbGVuZ3RoISIpO3RoaXNbRDFdPXEsdGhpc1tuMV09UzEsdGhpc1tqXT1kMX0sYSYmKFIodyxnMSwiX2wiKSxSKE4sImJ1ZmZl''@;'; put 'put ''ciIsIl9iIiksUihOLGcxLCJfbCIpLFIoTixIMSwiX28iKSksZihOW3hdLHtnZXRJbnQ4OmZ1bmN0aW9uKHEpe3JldHVybiBaKHRoaXMsMSxxKVswXTw8MjQ+PjI0fSxnZXRVaW50ODpmdW5jdGlvbihxKXtyZXR1cm4gWih0aGlzLDEscSlbMF19LGdldEludDE2OmZ1bmN0aW9uKHEpe3ZhciBR''@;'; put 'put ''PVoodGhpcywyLHEsYXJndW1lbnRzWzFdKTtyZXR1cm4oUVsxXTw8OHxRWzBdKTw8MTY+PjE2fSxnZXRVaW50MTY6ZnVuY3Rpb24ocSl7dmFyIFE9Wih0aGlzLDIscSxhcmd1bWVudHNbMV0pO3JldHVybiBRWzFdPDw4fFFbMF19LGdldEludDMyOmZ1bmN0aW9uKHEpe3JldHVybiBKKFoodGhp''@;'; put 'put ''cyw0LHEsYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbihxKXtyZXR1cm4gSihaKHRoaXMsNCxxLGFyZ3VtZW50c1sxXSkpPj4+MH0sZ2V0RmxvYXQzMjpmdW5jdGlvbihxKXtyZXR1cm4gXzEoWih0aGlzLDQscSxhcmd1bWVudHNbMV0pLDIzLDQpfSxnZXRGbG9hdDY0OmZ1bmN0''@;'; put 'put ''aW9uKHEpe3JldHVybiBfMShaKHRoaXMsOCxxLGFyZ3VtZW50c1sxXSksNTIsOCl9LHNldEludDg6ZnVuY3Rpb24ocSxRKXtEKHRoaXMsMSxxLG8xLFEpfSxzZXRVaW50ODpmdW5jdGlvbihxLFEpe0QodGhpcywxLHEsbzEsUSl9LHNldEludDE2OmZ1bmN0aW9uKHEsUSl7RCh0aGlzLDIscSxN''@;'; put 'put ''MSxRLGFyZ3VtZW50c1syXSl9LHNldFVpbnQxNjpmdW5jdGlvbihxLFEpe0QodGhpcywyLHEsTTEsUSxhcmd1bWVudHNbMl0pfSxzZXRJbnQzMjpmdW5jdGlvbihxLFEpe0QodGhpcyw0LHEsYjEsUSxhcmd1bWVudHNbMl0pfSxzZXRVaW50MzI6ZnVuY3Rpb24ocSxRKXtEKHRoaXMsNCxxLGIx''@;'; put 'put ''LFEsYXJndW1lbnRzWzJdKX0sc2V0RmxvYXQzMjpmdW5jdGlvbihxLFEpe0QodGhpcyw0LHEsJCxRLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24ocSxRKXtEKHRoaXMsOCxxLEIxLFEsYXJndW1lbnRzWzJdKX19KTtfKHcsYiksXyhOLE0pLGgoTlt4XSxvLlZJRVcsITApLGVb''@;'; put 'put ''Yl09dyxlW01dPU59LGZ1bmN0aW9uKEEsZSxsKXtBLmV4cG9ydHM9IWwoNykmJiFsKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShsKDY2KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKEEsZSxsKXtlLmY9''@;'; put 'put ''bCg1KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTQpLGE9bCgxNSksYz1sKDUyKSghMSksbz1sKDY4KSgiSUVfUFJPVE8iKTtBLmV4cG9ydHM9ZnVuY3Rpb24oaCxmKXt2YXIgZyx1PWEoaCkscD0wLHY9W107Zm9yKGcgaW4gdSlnIT1vJiZyKHUsZykmJnYucHVzaChnKTtmb3IoO3A8Zi5s''@;'; put 'put ''ZW5ndGg7KXIodSxnPWZbcCsrXSkmJih+Yyh2LGcpfHx2LnB1c2goZykpO3JldHVybiB2fX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOCksYT1sKDEpLGM9bCgzNCk7QS5leHBvcnRzPWwoNyk/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oaCxmKXthKGgpO2Zvcih2YXIgZyx1''@;'; put 'put ''PWMoZikscD11Lmxlbmd0aCx2PTA7djxwOylyLmYoaCxnPXVbdisrXSxmW2ddKTtyZXR1cm4gaH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE1KSxhPWwoMzcpLmYsYz17fS50b1N0cmluZyxvPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0''@;'; put 'put ''eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107QS5leHBvcnRzLmY9ZnVuY3Rpb24oZil7cmV0dXJuIG8mJiJbb2JqZWN0IFdpbmRvd10iPT1jLmNhbGwoZik/ZnVuY3Rpb24oZyl7dHJ5e3JldHVybiBhKGcpfWNhdGNoKHUpe3JldHVybiBvLnNsaWNlKCl9fShm''@;'; put 'put ''KTphKHIoZikpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNyksYT1sKDM0KSxjPWwoNTMpLG89bCg0OSksaD1sKDkpLGY9bCg0OCksZz1PYmplY3QuYXNzaWduO0EuZXhwb3J0cz0hZ3x8bCgzKShmdW5jdGlvbigpe3ZhciB1PXt9LHA9e30sdj1TeW1ib2woKSxIPSJhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdCI7cmV0dXJuIHVbdl09NyxILnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3BbQ109Q30pLDchPWcoe30sdSlbdl18fE9iamVjdC5rZXlzKGcoe30scCkpLmpvaW4oIiIpIT1IfSk/ZnVuY3Rpb24ocCx2KXtmb3IodmFyIEg9aChwKSxDPWFyZ3VtZW50cy5sZW5ndGgsVj0x''@;'; put 'put ''LFM9Yy5mLF89by5mO1Y8QzspZm9yKHZhciBiLE09Zihhcmd1bWVudHNbVisrXSkseD1TP2EoTSkuY29uY2F0KFMoTSkpOmEoTSksRT14Lmxlbmd0aCx3PTA7dzxFOyliPXhbdysrXSxyJiYhXy5jYWxsKE0sYil8fChIW2JdPU1bYl0pO3JldHVybiBIfTpnfSxmdW5jdGlvbihBLGUpe0EuZXhw''@;'; put 'put ''b3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI9PT1hPzAhPT1yfHwxL3I9PTEvYTpyIT1yJiZhIT1hfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTApLGE9bCg0KSxjPWwoMTAxKSxvPVtdLnNsaWNlLGg9e307QS5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9u''@;'; put 'put ''KGcpe3ZhciB1PXIodGhpcykscD1vLmNhbGwoYXJndW1lbnRzLDEpLHY9ZnVuY3Rpb24oKXt2YXIgSD1wLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB2P2Z1bmN0aW9uKEMsVixTKXtpZighKFYgaW4gaCkpe2Zvcih2YXIgXz1bXSxiPTA7YjxWO2Ir''@;'; put 'put ''KylfW2JdPSJhWyIrYisiXSI7aFtWXT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrXy5qb2luKCIsIikrIikiKX1yZXR1cm4gaFtWXShDLFMpfSh1LEgubGVuZ3RoLEgpOmModSxILGcpfTtyZXR1cm4gYSh1LnByb3RvdHlwZSkmJih2LnByb3RvdHlwZT11LnByb3RvdHlwZSksdn19''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwscixhKXt2YXIgYz1hPT09aztzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gYz9sKCk6bC5jYWxsKGEpO2Nhc2UgMTpyZXR1cm4gYz9sKHJbMF0pOmwuY2FsbChhLHJbMF0pO2Nhc2UgMjpyZXR1cm4gYz9sKHJbMF0sclsx''@;'; put 'put ''XSk6bC5jYWxsKGEsclswXSxyWzFdKTtjYXNlIDM6cmV0dXJuIGM/bChyWzBdLHJbMV0sclsyXSk6bC5jYWxsKGEsclswXSxyWzFdLHJbMl0pO2Nhc2UgNDpyZXR1cm4gYz9sKHJbMF0sclsxXSxyWzJdLHJbM10pOmwuY2FsbChhLHJbMF0sclsxXSxyWzJdLHJbM10pfXJldHVybiBsLmFwcGx5''@;'; put 'put ''KGEscil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxOSk7QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyl7aWYoIm51bWJlciIhPXR5cGVvZiBhJiYiTnVtYmVyIiE9cihhKSl0aHJvdyBUeXBlRXJyb3IoYyk7cmV0dXJuK2F9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KSxhPU1hdGguZmxv''@;'; put 'put ''b3I7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiFyKG8pJiZpc0Zpbml0ZShvKSYmYShvKT09PW99fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKS5wYXJzZUZsb2F0LGE9bCg0NSkudHJpbTtBLmV4cG9ydHM9MS9yKGwoNzMpKyItMCIpIT0tMS8wP2Z1bmN0aW9uKG8pe3ZhciBoPWEo''@;'; put 'put ''U3RyaW5nKG8pLDMpLGY9cihoKTtyZXR1cm4gMD09PWYmJiItIj09aC5jaGFyQXQoMCk/LTA6Zn06cn0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMikucGFyc2VJbnQsYT1sKDQ1KS50cmltLGM9bCg3Myksbz0vXlstK10/MFt4WF0vO0EuZXhwb3J0cz04IT09cihjKyIwOCIpfHwyMiE9PXIo''@;'; put 'put ''YysiMHgxNiIpP2Z1bmN0aW9uKGYsZyl7dmFyIHU9YShTdHJpbmcoZiksMyk7cmV0dXJuIHIodSxnPj4+MHx8KG8udGVzdCh1KT8xNjoxMCkpfTpyfSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbihyKXtyZXR1cm4tMWUtODwocj0rcikmJnI8MWUtOD9yLXIq''@;'; put 'put ''ci8yOk1hdGgubG9nKDErcil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg3NSksYT1NYXRoLnBvdyxjPWEoMiwtNTIpLG89YSgyLC0yMyksaD1hKDIsMTI3KSooMi1vKSxmPWEoMiwtMTI2KTtBLmV4cG9ydHM9TWF0aC5mcm91bmR8fGZ1bmN0aW9uKHUpe3ZhciBwLHYsSD1NYXRoLmFicyh1''@;'; put 'put ''KSxDPXIodSk7cmV0dXJuIEg8Zj9DKihIL2YvbysxL2MtMS9jKSpmKm86aDwodj0ocD0oMStvL2MpKkgpLShwLUgpKXx8diE9dj9DKigxLzApOkMqdn19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMsbyxoKXt0cnl7cmV0dXJuIGg/YyhyKG8pWzBd''@;'; put 'put ''LG9bMV0pOmMobyl9Y2F0Y2goZyl7dmFyIGY9YS5yZXR1cm47dGhyb3cgZiE9PWsmJnIoZi5jYWxsKGEpKSxnfX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEwKSxhPWwoOSksYz1sKDQ4KSxvPWwoNik7QS5leHBvcnRzPWZ1bmN0aW9uKGgsZixnLHUscCl7cihmKTt2YXIgdj1hKGgpLEg9''@;'; put 'put ''Yyh2KSxDPW8odi5sZW5ndGgpLFY9cD9DLTE6MCxTPXA/LTE6MTtpZihnPDIpZm9yKDs7KXtpZihWIGluIEgpe3U9SFtWXSxWKz1TO2JyZWFrfWlmKFYrPVMscD9WPDA6Qzw9Vil0aHJvdyBUeXBlRXJyb3IoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1m''@;'; put 'put ''b3IoO3A/MDw9VjpWPEM7Vis9UylWIGluIEgmJih1PWYodSxIW1ZdLFYsdikpO3JldHVybiB1fX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOSksYT1sKDM1KSxjPWwoNik7QS5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKGgsZil7dmFyIGc9cih0aGlzKSx1PWMoZy5sZW5ndGgp''@;'; put 'put ''LHA9YShoLHUpLHY9YShmLHUpLEg9Mjxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1syXTprLEM9TWF0aC5taW4oKEg9PT1rP3U6YShILHUpKS12LHUtcCksVj0xO2Zvcih2PHAmJnA8ditDJiYoVj0tMSx2Kz1DLTEscCs9Qy0xKTswPEMtLTspdiBpbiBnP2dbcF09Z1t2XTpkZWxldGUgZ1tw''@;'; put 'put ''XSxwKz1WLHYrPVY7cmV0dXJuIGd9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsLHIpe3JldHVybnt2YWx1ZTpyLGRvbmU6ISFsfX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDg3KTtsKDApKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOnIhPT0vLi8uZXhl''@;'; put 'put ''Y30se2V4ZWM6cn0pfSxmdW5jdGlvbihBLGUsbCl7bCg3KSYmImciIT0vLi9nLmZsYWdzJiZsKDgpLmYoUmVnRXhwLnByb3RvdHlwZSwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0OmwoNTApfSl9LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwpe3RyeXtyZXR1cm57ZToh''@;'; put 'put ''MSx2OmwoKX19Y2F0Y2gocil7cmV0dXJue2U6ITAsdjpyfX19fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKSxhPWwoNCksYz1sKDkxKTtBLmV4cG9ydHM9ZnVuY3Rpb24obyxoKXtpZihyKG8pLGEoaCkmJmguY29uc3RydWN0b3I9PT1vKXJldHVybiBoO3ZhciBmPWMuZihvKTtyZXR1cm4o''@;'; put 'put ''MCxmLnJlc29sdmUpKGgpLGYucHJvbWlzZX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDExNyksYT1sKDQyKTtBLmV4cG9ydHM9bCg2MSkoIk1hcCIsZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmsp''@;'; put 'put ''fX0se2dldDpmdW5jdGlvbihvKXt2YXIgaD1yLmdldEVudHJ5KGEodGhpcywiTWFwIiksbyk7cmV0dXJuIGgmJmgudn0sc2V0OmZ1bmN0aW9uKG8saCl7cmV0dXJuIHIuZGVmKGEodGhpcywiTWFwIiksMD09PW8/MDpvLGgpfX0sciwhMCl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLmYs''@;'; put 'put ''YT1sKDM2KSxjPWwoNDEpLG89bCgxOCksaD1sKDM5KSxmPWwoNDApLGc9bCg3OSksdT1sKDExMSkscD1sKDM4KSx2PWwoNyksSD1sKDMwKS5mYXN0S2V5LEM9bCg0MiksVj12PyJfcyI6InNpemUiLFM9ZnVuY3Rpb24oXyxiKXt2YXIgTSx4PUgoYik7aWYoIkYiIT09eClyZXR1cm4gXy5faVt4''@;'; put 'put ''XTtmb3IoTT1fLl9mO007TT1NLm4paWYoTS5rPT1iKXJldHVybiBNfTtBLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKF8sYixNLHgpe3ZhciBFPV8oZnVuY3Rpb24odyxOKXtoKHcsRSxiLCJfaSIpLHcuX3Q9Yix3Ll9pPWEobnVsbCksdy5fZj1rLHcuX2w9ayx3W1ZdPTAsTiE9''@;'; put 'put ''ayYmZihOLE0sd1t4XSx3KX0pO3JldHVybiBjKEUucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgTj1DKHRoaXMsYiksST1OLl9pLFc9Ti5fZjtXO1c9Vy5uKVcucj0hMCxXLnAmJihXLnA9Vy5wLm49ayksZGVsZXRlIElbVy5pXTtOLl9mPU4uX2w9ayxOW1ZdPTB9LGRlbGV0''@;'; put 'put ''ZTpmdW5jdGlvbih3KXt2YXIgTj1DKHRoaXMsYiksST1TKE4sdyk7aWYoSSl7dmFyIFc9SS5uLE89SS5wO2RlbGV0ZSBOLl9pW0kuaV0sSS5yPSEwLE8mJihPLm49VyksVyYmKFcucD1PKSxOLl9mPT1JJiYoTi5fZj1XKSxOLl9sPT1JJiYoTi5fbD1PKSxOW1ZdLS19cmV0dXJuISFJfSxmb3JF''@;'; put 'put ''YWNoOmZ1bmN0aW9uKE4pe0ModGhpcyxiKTtmb3IodmFyIEksVz1vKE4sMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprLDMpO0k9ST9JLm46dGhpcy5fZjspZm9yKFcoSS52LEkuayx0aGlzKTtJJiZJLnI7KUk9SS5wfSxoYXM6ZnVuY3Rpb24oTil7cmV0dXJuISFTKEModGhpcyxi''@;'; put 'put ''KSxOKX19KSx2JiZyKEUucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcyxiKVtWXX19KSxFfSxkZWY6ZnVuY3Rpb24oXyxiLE0pe3ZhciB4LEUsdz1TKF8sYik7cmV0dXJuIHc/dy52PU06KF8uX2w9dz17aTpFPUgoYiwhMCksazpiLHY6TSxwOng9Xy5fbCxu''@;'; put 'put ''OmsscjohMX0sXy5fZnx8KF8uX2Y9dykseCYmKHgubj13KSxfW1ZdKyssIkYiIT09RSYmKF8uX2lbRV09dykpLF99LGdldEVudHJ5OlMsc2V0U3Ryb25nOmZ1bmN0aW9uKF8sYixNKXtnKF8sYixmdW5jdGlvbih4LEUpe3RoaXMuX3Q9Qyh4LGIpLHRoaXMuX2s9RSx0aGlzLl9sPWt9LGZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKHZhciB4PXRoaXMsRT14Ll9rLHc9eC5fbDt3JiZ3LnI7KXc9dy5wO3JldHVybiB4Ll90JiYoeC5fbD13PXc/dy5uOnguX3QuX2YpP3UoMCwia2V5cyI9PUU/dy5rOiJ2YWx1ZXMiPT1FP3cudjpbdy5rLHcudl0pOih4Ll90PWssdSgxKSl9LE0/ImVudHJpZXMiOiJ2YWx1ZXMi''@;'; put 'put ''LCFNLCEwKSxwKGIpfX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDExNyksYT1sKDQyKTtBLmV4cG9ydHM9bCg2MSkoIlNldCIsZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmspfX0se2FkZDpmdW5j''@;'; put 'put ''dGlvbihvKXtyZXR1cm4gci5kZWYoYSh0aGlzLCJTZXQiKSxvPTA9PT1vPzA6byxvKX19LHIpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHIsYT1sKDIpLGM9bCgyNSkoMCksbz1sKDEyKSxoPWwoMzApLGY9bCg5OCksZz1sKDEyMCksdT1sKDQpLHA9bCg0Miksdj1sKDQyKSxIPSFhLkFjdGl2ZVhP''@;'; put 'put ''YmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIGEsQz0iV2Vha01hcCIsVj1oLmdldFdlYWssUz1PYmplY3QuaXNFeHRlbnNpYmxlLF89Zy51ZnN0b3JlLGI9ZnVuY3Rpb24oRSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmsp''@;'; put 'put ''fX0sTT17Z2V0OmZ1bmN0aW9uKHcpe2lmKHUodykpe3ZhciBOPVYodyk7cmV0dXJuITA9PT1OP18ocCh0aGlzLEMpKS5nZXQodyk6Tj9OW3RoaXMuX2ldOmt9fSxzZXQ6ZnVuY3Rpb24odyxOKXtyZXR1cm4gZy5kZWYocCh0aGlzLEMpLHcsTil9fSx4PUEuZXhwb3J0cz1sKDYxKShDLGIsTSxn''@;'; put 'put ''LCEwLCEwKTt2JiZIJiYoZigocj1nLmdldENvbnN0cnVjdG9yKGIsQykpLnByb3RvdHlwZSxNKSxoLk5FRUQ9ITAsYyhbImRlbGV0ZSIsImhhcyIsImdldCIsInNldCJdLGZ1bmN0aW9uKEUpe3ZhciB3PXgucHJvdG90eXBlLE49d1tFXTtvKHcsRSxmdW5jdGlvbihJLFcpe2lmKHUoSSkmJiFT''@;'; put 'put ''KEkpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgcik7dmFyIE89dGhpcy5fZltFXShJLFcpO3JldHVybiJzZXQiPT1FP3RoaXM6T31yZXR1cm4gTi5jYWxsKHRoaXMsSSxXKX0pfSkpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0MSksYT1sKDMwKS5nZXRXZWFrLGM9bCgxKSxvPWwoNCksaD1s''@;'; put 'put ''KDM5KSxmPWwoNDApLGc9bCgyNSksdT1sKDE0KSxwPWwoNDIpLHY9Zyg1KSxIPWcoNiksQz0wLFY9ZnVuY3Rpb24oYil7cmV0dXJuIGIuX2x8fChiLl9sPW5ldyBTKX0sUz1mdW5jdGlvbigpe3RoaXMuYT1bXX0sXz1mdW5jdGlvbihiLE0pe3JldHVybiB2KGIuYSxmdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4geFswXT09PU19KX07Uy5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihiKXt2YXIgTT1fKHRoaXMsYik7aWYoTSlyZXR1cm4gTVsxXX0saGFzOmZ1bmN0aW9uKGIpe3JldHVybiEhXyh0aGlzLGIpfSxzZXQ6ZnVuY3Rpb24oYixNKXt2YXIgeD1fKHRoaXMsYik7eD94WzFdPU06dGhpcy5hLnB1''@;'; put 'put ''c2goW2IsTV0pfSxkZWxldGU6ZnVuY3Rpb24oYil7dmFyIE09SCh0aGlzLmEsZnVuY3Rpb24oeCl7cmV0dXJuIHhbMF09PT1ifSk7cmV0dXJufk0mJnRoaXMuYS5zcGxpY2UoTSwxKSwhIX5NfX0sQS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihiLE0seCxFKXt2YXIgdz1iKGZ1''@;'; put 'put ''bmN0aW9uKE4sSSl7aChOLHcsTSwiX2kiKSxOLl90PU0sTi5faT1DKyssSSE9KE4uX2w9aykmJmYoSSx4LE5bRV0sTil9KTtyZXR1cm4gcih3LnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKE4pe2lmKCFvKE4pKXJldHVybiExO3ZhciBJPWEoTik7cmV0dXJuITA9PT1JP1YocCh0aGlzLE0p''@;'; put 'put ''KS5kZWxldGUoTik6SSYmdShJLHRoaXMuX2kpJiZkZWxldGUgSVt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKEkpe2lmKCFvKEkpKXJldHVybiExO3ZhciBXPWEoSSk7cmV0dXJuITA9PT1XP1YocCh0aGlzLE0pKS5oYXMoSSk6VyYmdShXLHRoaXMuX2kpfX0pLHd9LGRlZjpmdW5jdGlvbihiLE0s''@;'; put 'put ''eCl7dmFyIEU9YShjKE0pLCEwKTtyZXR1cm4hMD09PUU/VihiKS5zZXQoTSx4KTpFW2IuX2ldPXgsYn0sdWZzdG9yZTpWfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMzcpLGE9bCg1MyksYz1sKDEpLG89bCgyKS5SZWZsZWN0O0EuZXhwb3J0cz1vJiZvLm93bktleXN8fGZ1bmN0aW9uKGYp''@;'; put 'put ''e3ZhciBnPXIuZihjKGYpKSx1PWEuZjtyZXR1cm4gdT9nLmNvbmNhdCh1KGYpKTpnfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjApLGE9bCg2KTtBLmV4cG9ydHM9ZnVuY3Rpb24oYyl7aWYoYz09PWspcmV0dXJuIDA7dmFyIG89cihjKSxoPWEobyk7aWYobyE9PWgpdGhyb3cgUmFuZ2VF''@;'; put 'put ''cnJvcigiV3JvbmcgbGVuZ3RoISIpO3JldHVybiBofX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNTQpLGE9bCg0KSxjPWwoNiksbz1sKDE4KSxoPWwoNSkoImlzQ29uY2F0U3ByZWFkYWJsZSIpO0EuZXhwb3J0cz1mdW5jdGlvbiBmKGcsdSxwLHYsSCxDLFYsUyl7Zm9yKHZhciBfLGIsTT1I''@;'; put 'put ''LHg9MCxFPSEhViYmbyhWLFMsMyk7eDx2Oyl7aWYoeCBpbiBwKXtpZihfPUU/RShwW3hdLHgsdSk6cFt4XSxiPSExLGEoXykmJihiPShiPV9baF0pIT09az8hIWI6cihfKSksYiYmMDxDKU09ZihnLHUsXyxjKF8ubGVuZ3RoKSxNLEMtMSktMTtlbHNle2lmKDkwMDcxOTkyNTQ3NDA5OTE8PU0p''@;'; put 'put ''dGhyb3cgVHlwZUVycm9yKCk7Z1tNXT1ffU0rK314Kyt9cmV0dXJuIE19fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg2KSxhPWwoNzQpLGM9bCgyMyk7QS5leHBvcnRzPWZ1bmN0aW9uKG8saCxmLGcpe3ZhciB1PVN0cmluZyhjKG8pKSxwPXUubGVuZ3RoLHY9Zj09PWs/IiAiOlN0cmluZyhm''@;'; put 'put ''KSxIPXIoaCk7aWYoSDw9cHx8IiI9PXYpcmV0dXJuIHU7dmFyIEM9SC1wLFY9YS5jYWxsKHYsTWF0aC5jZWlsKEMvdi5sZW5ndGgpKTtyZXR1cm4gQzxWLmxlbmd0aCYmKFY9Vi5zbGljZSgwLEMpKSxnP1YrdTp1K1Z9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg3KSxhPWwoMzQpLGM9bCgx''@;'; put 'put ''NSksbz1sKDQ5KS5mO0EuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBnLHU9YyhmKSxwPWEodSksdj1wLmxlbmd0aCxIPTAsQz1bXTtIPHY7KWc9cFtIKytdLHImJiFvLmNhbGwodSxnKXx8Qy5wdXNoKGg/W2csdVtnXV06dVtnXSk7cmV0dXJuIEN9fX0s''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNDQpLGE9bCgxMjcpO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihyKHRoaXMpIT1jKXRocm93IFR5cGVFcnJvcihjKyIjdG9KU09OIGlzbid0IGdlbmVyaWMiKTtyZXR1cm4gYSh0aGlzKX19fSxmdW5jdGlvbihBLGUs''@;'; put 'put ''bCl7dmFyIHI9bCg0MCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyl7dmFyIG89W107cmV0dXJuIHIoYSwhMSxvLnB1c2gsbyxjKSxvfX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9TWF0aC5zY2FsZXx8ZnVuY3Rpb24ocixhLGMsbyxoKXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGh8fHIh''@;'; put 'put ''PXJ8fGEhPWF8fGMhPWN8fG8hPW98fGghPWg/TmFOOnI9PT0xLzB8fHI9PT0tMS8wP3I6KHItYSkqKGgtbykvKGMtYSkrb319LGZ1bmN0aW9uKEEsZSxsKXtsKDEzMCksbCgxMzMpLGwoMTM0KSxsKDEzNSksbCgxMzYpLGwoMTM3KSxsKDEzOCksbCgxMzkpLGwoMTQwKSxsKDE0MSksbCgxNDIp''@;'; put 'put ''LGwoMTQzKSxsKDE0NCksbCgxNDUpLGwoMTQ2KSxsKDE0NyksbCgxNDgpLGwoMTQ5KSxsKDE1MCksbCgxNTEpLGwoMTUyKSxsKDE1MyksbCgxNTQpLGwoMTU1KSxsKDE1NiksbCgxNTcpLGwoMTU4KSxsKDE1OSksbCgxNjApLGwoMTYxKSxsKDE2MiksbCgxNjMpLGwoMTY0KSxsKDE2NSksbCgx''@;'; put 'put ''NjYpLGwoMTY3KSxsKDE2OCksbCgxNjkpLGwoMTcwKSxsKDE3MSksbCgxNzIpLGwoMTczKSxsKDE3NCksbCgxNzUpLGwoMTc2KSxsKDE3NyksbCgxNzgpLGwoMTc5KSxsKDE4MCksbCgxODEpLGwoMTgyKSxsKDE4MyksbCgxODQpLGwoMTg1KSxsKDE4NiksbCgxODcpLGwoMTg4KSxsKDE4OSks''@;'; put 'put ''bCgxOTApLGwoMTkxKSxsKDE5MiksbCgxOTMpLGwoMTk0KSxsKDE5NSksbCgxOTYpLGwoMTk3KSxsKDE5OCksbCgxOTkpLGwoMjAwKSxsKDIwMSksbCgyMDIpLGwoMjAzKSxsKDIwNCksbCgyMDUpLGwoMjA2KSxsKDIwNyksbCgyMDgpLGwoMjA5KSxsKDIxMCksbCgyMTEpLGwoMjEyKSxsKDIx''@;'; put 'put ''NCksbCgyMTUpLGwoMjE2KSxsKDIxNyksbCgyMTgpLGwoMjE5KSxsKDIyMCksbCgyMjEpLGwoMjIyKSxsKDIyMyksbCgyMjQpLGwoMjI1KSxsKDg2KSxsKDIyNiksbCgyMjcpLGwoMTEyKSxsKDIyOCksbCgxMTMpLGwoMjI5KSxsKDIzMCksbCgyMzEpLGwoMjMyKSxsKDIzMyksbCgxMTYpLGwo''@;'; put 'put ''MTE4KSxsKDExOSksbCgyMzQpLGwoMjM1KSxsKDIzNiksbCgyMzcpLGwoMjM4KSxsKDIzOSksbCgyNDApLGwoMjQxKSxsKDI0MiksbCgyNDMpLGwoMjQ0KSxsKDI0NSksbCgyNDYpLGwoMjQ3KSxsKDI0OCksbCgyNDkpLGwoMjUwKSxsKDI1MSksbCgyNTMpLGwoMjU0KSxsKDI1NiksbCgyNTcp''@;'; put 'put ''LGwoMjU4KSxsKDI1OSksbCgyNjApLGwoMjYxKSxsKDI2MiksbCgyNjMpLGwoMjY0KSxsKDI2NSksbCgyNjYpLGwoMjY3KSxsKDI2OCksbCgyNjkpLGwoMjcwKSxsKDI3MSksbCgyNzIpLGwoMjczKSxsKDI3NCksbCgyNzUpLGwoMjc2KSxsKDI3NyksbCgyNzgpLGwoMjc5KSxsKDI4MCksbCgy''@;'; put 'put ''ODEpLGwoMjgyKSxsKDI4MyksbCgyODQpLGwoMjg1KSxsKDI4NiksbCgyODcpLGwoMjg4KSxsKDI4OSksbCgyOTApLGwoMjkxKSxsKDI5MiksbCgyOTMpLGwoMjk0KSxsKDI5NSksbCgyOTYpLGwoMjk3KSxsKDI5OCksbCgyOTkpLGwoMzAwKSxsKDMwMSksbCgzMDIpLGwoMzAzKSxsKDMwNCks''@;'; put 'put ''bCgzMDUpLGwoMzA2KSxsKDMwNyksbCgzMDgpLGwoMzA5KSxsKDMxMCksbCgzMTEpLGwoMzEyKSxsKDMxMyksbCgzMTQpLGwoMzE1KSxsKDMxNiksbCgzMTcpLGwoMzE4KSxsKDMxOSksbCgzMjApLGwoMzIxKSxsKDMyMiksbCgzMjMpLGwoMzI0KSxBLmV4cG9ydHM9bCgzMjUpfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoMTQpLGM9bCg3KSxvPWwoMCksaD1sKDEyKSxmPWwoMzApLktFWSxnPWwoMyksdT1sKDQ3KSxwPWwoNDMpLHY9bCgzMyksSD1sKDUpLEM9bCg5NCksVj1sKDY3KSxTPWwoMTMyKSxfPWwoNTQpLGI9bCgxKSxNPWwoNCkseD1sKDkpLEU9bCgxNSksdz1s''@;'; put 'put ''KDIyKSxOPWwoMzIpLEk9bCgzNiksVz1sKDk3KSxPPWwoMTYpLEI9bCg1Myksej1sKDgpLGwxPWwoMzQpLGExPU8uZixoMT16LmYscDE9Vy5mLGcxPXIuU3ltYm9sLEgxPXIuSlNPTixEMT1IMSYmSDEuc3RyaW5naWZ5LGo9InByb3RvdHlwZSIsbjE9SCgiX2hpZGRlbiIpLG0xPUgoInRvUHJp''@;'; put 'put ''bWl0aXZlIiksXzE9e30ucHJvcGVydHlJc0VudW1lcmFibGUsSj11KCJzeW1ib2wtcmVnaXN0cnkiKSxvMT11KCJzeW1ib2xzIiksTTE9dSgib3Atc3ltYm9scyIpLGIxPU9iamVjdFtqXSxCMT0iZnVuY3Rpb24iPT10eXBlb2YgZzEmJiEhQi5mLCQ9ci5RT2JqZWN0LFI9ISR8fCEkW2pdfHwh''@;'; put 'put ''JFtqXS5maW5kQ2hpbGQsWj1jJiZnKGZ1bmN0aW9uKCl7cmV0dXJuIDchPUkoaDEoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaDEodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24ocjEsaTEsQTEpe3ZhciB4MT1hMShiMSxpMSk7eDEmJmRlbGV0ZSBiMVtpMV0s''@;'; put 'put ''aDEocjEsaTEsQTEpLHgxJiZyMSE9PWIxJiZoMShiMSxpMSx4MSl9OmgxLEQ9ZnVuY3Rpb24ocjEpe3ZhciBpMT1vMVtyMV09SShnMVtqXSk7cmV0dXJuIGkxLl9rPXIxLGkxfSx5PUIxJiYic3ltYm9sIj09dHlwZW9mIGcxLml0ZXJhdG9yP2Z1bmN0aW9uKHIxKXtyZXR1cm4ic3ltYm9sIj09''@;'; put 'put ''dHlwZW9mIHIxfTpmdW5jdGlvbihyMSl7cmV0dXJuIHIxIGluc3RhbmNlb2YgZzF9LFQ9ZnVuY3Rpb24oaTEsQTEseDEpe3JldHVybiBpMT09PWIxJiZUKE0xLEExLHgxKSxiKGkxKSxBMT13KEExLCEwKSxiKHgxKSxhKG8xLEExKT8oeDEuZW51bWVyYWJsZT8oYShpMSxuMSkmJmkxW24xXVtB''@;'; put 'put ''MV0mJihpMVtuMV1bQTFdPSExKSx4MT1JKHgxLHtlbnVtZXJhYmxlOk4oMCwhMSl9KSk6KGEoaTEsbjEpfHxoMShpMSxuMSxOKDEse30pKSxpMVtuMV1bQTFdPSEwKSxaKGkxLEExLHgxKSk6aDEoaTEsQTEseDEpfSxQPWZ1bmN0aW9uKGkxLEExKXtiKGkxKTtmb3IodmFyIHgxLEkxPVMoQTE9''@;'; put 'put ''RShBMSkpLEoxPTAsdDA9STEubGVuZ3RoO0oxPHQwOylUKGkxLHgxPUkxW0oxKytdLEExW3gxXSk7cmV0dXJuIGkxfSx0MT1mdW5jdGlvbihpMSl7dmFyIEExPV8xLmNhbGwodGhpcyxpMT13KGkxLCEwKSk7cmV0dXJuISh0aGlzPT09YjEmJmEobzEsaTEpJiYhYShNMSxpMSkpJiYoIShBMXx8''@;'; put 'put ''IWEodGhpcyxpMSl8fCFhKG8xLGkxKXx8YSh0aGlzLG4xKSYmdGhpc1tuMV1baTFdKXx8QTEpfSxzMT1mdW5jdGlvbihpMSxBMSl7aWYoaTE9RShpMSksQTE9dyhBMSwhMCksaTEhPT1iMXx8IWEobzEsQTEpfHxhKE0xLEExKSl7dmFyIHgxPWExKGkxLEExKTtyZXR1cm4heDF8fCFhKG8xLEEx''@;'; put 'put ''KXx8YShpMSxuMSkmJmkxW24xXVtBMV18fCh4MS5lbnVtZXJhYmxlPSEwKSx4MX19LGYxPWZ1bmN0aW9uKGkxKXtmb3IodmFyIEExLHgxPXAxKEUoaTEpKSxJMT1bXSxKMT0wO0oxPHgxLmxlbmd0aDspYShvMSxBMT14MVtKMSsrXSl8fEExPT1uMXx8QTE9PWZ8fEkxLnB1c2goQTEpO3JldHVy''@;'; put 'put ''biBJMX0sWT1mdW5jdGlvbihpMSl7Zm9yKHZhciBBMSx4MT1pMT09PWIxLEkxPXAxKHgxP00xOkUoaTEpKSxKMT1bXSx0MD0wO3QwPEkxLmxlbmd0aDspIWEobzEsQTE9STFbdDArK10pfHx4MSYmIWEoYjEsQTEpfHxKMS5wdXNoKG8xW0ExXSk7cmV0dXJuIEoxfTtCMXx8KGgoKGcxPWZ1bmN0''@;'; put 'put ''aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIGcxKXRocm93IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yISIpO3ZhciBpMT12KDA8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06ayksQTE9ZnVuY3Rpb24oeDEpe3RoaXM9PT1iMSYmQTEuY2FsbChNMSx4MSksYSh0''@;'; put 'put ''aGlzLG4xKSYmYSh0aGlzW24xXSxpMSkmJih0aGlzW24xXVtpMV09ITEpLFoodGhpcyxpMSxOKDEseDEpKX07cmV0dXJuIGMmJlImJlooYjEsaTEse2NvbmZpZ3VyYWJsZTohMCxzZXQ6QTF9KSxEKGkxKX0pW2pdLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLE8uZj1z''@;'; put 'put ''MSx6LmY9VCxsKDM3KS5mPVcuZj1mMSxsKDQ5KS5mPXQxLEIuZj1ZLGMmJiFsKDI5KSYmaChiMSwicHJvcGVydHlJc0VudW1lcmFibGUiLHQxLCEwKSxDLmY9ZnVuY3Rpb24ocjEpe3JldHVybiBEKEgocjEpKX0pLG8oby5HK28uVytvLkYqIUIxLHtTeW1ib2w6ZzF9KTtmb3IodmFyIHE9Imhh''@;'; put 'put ''c0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzIi5zcGxpdCgiLCIpLFE9MDtRPHEubGVuZ3RoOylIKHFbUSsrXSk7Zm9yKHZhciBkMT1sMShILnN0''@;'; put 'put ''b3JlKSxOMT0wO04xPGQxLmxlbmd0aDspVihkMVtOMSsrXSk7byhvLlMrby5GKiFCMSwiU3ltYm9sIix7Zm9yOmZ1bmN0aW9uKHIxKXtyZXR1cm4gYShKLHIxKz0iIik/SltyMV06SltyMV09ZzEocjEpfSxrZXlGb3I6ZnVuY3Rpb24oaTEpe2lmKCF5KGkxKSl0aHJvdyBUeXBlRXJyb3IoaTEr''@;'; put 'put ''IiBpcyBub3QgYSBzeW1ib2whIik7Zm9yKHZhciBBMSBpbiBKKWlmKEpbQTFdPT09aTEpcmV0dXJuIEExfSx1c2VTZXR0ZXI6ZnVuY3Rpb24oKXtSPSEwfSx1c2VTaW1wbGU6ZnVuY3Rpb24oKXtSPSExfX0pLG8oby5TK28uRiohQjEsIk9iamVjdCIse2NyZWF0ZTpmdW5jdGlvbihpMSxBMSl7''@;'; put 'put ''cmV0dXJuIEExPT09az9JKGkxKTpQKEkoaTEpLEExKX0sZGVmaW5lUHJvcGVydHk6VCxkZWZpbmVQcm9wZXJ0aWVzOlAsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnMxLGdldE93blByb3BlcnR5TmFtZXM6ZjEsZ2V0T3duUHJvcGVydHlTeW1ib2xzOll9KTt2YXIgUzE9ZyhmdW5jdGlvbigp''@;'; put 'put ''e0IuZigxKX0pO28oby5TK28uRipTMSwiT2JqZWN0Iix7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKGkxKXtyZXR1cm4gQi5mKHgoaTEpKX19KSxIMSYmbyhvLlMrby5GKighQjF8fGcoZnVuY3Rpb24oKXt2YXIgcjE9ZzEoKTtyZXR1cm4iW251bGxdIiE9RDEoW3IxXSl8fCJ7fSIh''@;'; put 'put ''PUQxKHthOnIxfSl8fCJ7fSIhPUQxKE9iamVjdChyMSkpfSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uKGkxKXtmb3IodmFyIEExLHgxLEkxPVtpMV0sSjE9MTtKMTxhcmd1bWVudHMubGVuZ3RoOylJMS5wdXNoKGFyZ3VtZW50c1tKMSsrXSk7aWYoeDE9QTE9STFbMV0sKE0oQTEpfHxp''@;'; put 'put ''MSE9PWspJiYheShpMSkpcmV0dXJuIF8oQTEpfHwoQTE9ZnVuY3Rpb24odDAsZjApe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB4MSYmKGYwPXgxLmNhbGwodGhpcyx0MCxmMCkpLCF5KGYwKSlyZXR1cm4gZjB9KSxJMVsxXT1BMSxEMS5hcHBseShIMSxJMSl9fSksZzFbal1bbTFdfHxsKDExKShn''@;'; put 'put ''MVtqXSxtMSxnMVtqXS52YWx1ZU9mKSxwKGcxLCJTeW1ib2wiKSxwKE1hdGgsIk1hdGgiLCEwKSxwKHIuSlNPTiwiSlNPTiIsITApfSxmdW5jdGlvbihBLGUsbCl7QS5leHBvcnRzPWwoNDcpKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LGZ1bmN0aW9u''@;'; put 'put ''KEEsZSxsKXt2YXIgcj1sKDM0KSxhPWwoNTMpLGM9bCg0OSk7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3ZhciBoPXIobyksZj1hLmY7aWYoZilmb3IodmFyIGcsdT1mKG8pLHA9Yy5mLHY9MDt2PHUubGVuZ3RoOylwLmNhbGwobyxnPXVbdisrXSkmJmgucHVzaChnKTtyZXR1cm4gaH19LGZ1bmN0''@;'; put 'put ''aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TK3IuRiohbCg3KSwiT2JqZWN0Iix7ZGVmaW5lUHJvcGVydHk6bCg4KS5mfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TK3IuRiohbCg3KSwiT2JqZWN0Iix7ZGVmaW5lUHJvcGVydGllczpsKDk2KX0pfSxmdW5jdGlvbihBLGUs''@;'; put 'put ''bCl7dmFyIHI9bCgxNSksYT1sKDE2KS5mO2woMjQpKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8saCl7cmV0dXJuIGEocihvKSxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk9iamVjdCIse2NyZWF0ZTpsKDM2''@;'; put 'put ''KX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg5KSxhPWwoMTcpO2woMjQpKCJnZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIGEocihvKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDkpLGE9bCgzNCk7bCgyNCkoImtleXMiLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBhKHIobykpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgyNCkoImdldE93blByb3BlcnR5TmFtZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGwoOTcpLmZ9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDMwKS5vbkZyZWV6ZTtsKDI0''@;'; put 'put ''KSgiZnJlZXplIixmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGMmJnIoaCk/YyhhKGgpKTpofX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KSxhPWwoMzApLm9uRnJlZXplO2woMjQpKCJzZWFsIixmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IGMmJnIoaCk/YyhhKGgpKTpofX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KSxhPWwoMzApLm9uRnJlZXplO2woMjQpKCJwcmV2ZW50RXh0ZW5zaW9ucyIsZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBjJiZyKGgpP2MoYShoKSk6aH19KX0sZnVuY3Rpb24oQSxl''@;'; put 'put ''LGwpe3ZhciByPWwoNCk7bCgyNCkoImlzRnJvemVuIixmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIXIobyl8fCEhYSYmYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCk7bCgyNCkoImlzU2VhbGVkIixmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7''@;'; put 'put ''cmV0dXJuIXIobyl8fCEhYSYmYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCk7bCgyNCkoImlzRXh0ZW5zaWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiEhcihvKSYmKCFhfHxhKG8pKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihy''@;'; put 'put ''LlMrci5GLCJPYmplY3QiLHthc3NpZ246bCg5OCl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk9iamVjdCIse2lzOmwoOTkpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJPYmplY3QiLHtzZXRQcm90b3R5cGVPZjpsKDcxKS5zZXR9KX0sZnVuY3Rp''@;'; put 'put ''b24oQSxlLGwpe3ZhciByPWwoNDQpLGE9e307YVtsKDUpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsYSsiIiE9IltvYmplY3Qgel0iJiZsKDEyKShPYmplY3QucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK3IodGhpcykrIl0ifSwhMCl9LGZ1bmN0aW9uKEEs''@;'; put 'put ''ZSxsKXt2YXIgcj1sKDApO3Ioci5QLCJGdW5jdGlvbiIse2JpbmQ6bCgxMDApfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLmYsYT1GdW5jdGlvbi5wcm90b3R5cGUsYz0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLzsibmFtZSJpbiBhfHxsKDcpJiZyKGEsIm5hbWUiLHtjb25maWd1cmFi''@;'; put 'put ''bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3JldHVybigiIit0aGlzKS5tYXRjaChjKVsxXX1jYXRjaChvKXtyZXR1cm4iIn19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpLGE9bCgxNyksYz1sKDUpKCJoYXNJbnN0YW5jZSIpLG89RnVuY3Rpb24ucHJvdG90eXBlO2MgaW4gb3x8bCg4''@;'; put 'put ''KS5mKG8sYyx7dmFsdWU6ZnVuY3Rpb24oaCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXN8fCFyKGgpKXJldHVybiExO2lmKCFyKHRoaXMucHJvdG90eXBlKSlyZXR1cm4gaCBpbnN0YW5jZW9mIHRoaXM7Zm9yKDtoPWEoaCk7KWlmKHRoaXMucHJvdG90eXBlPT09aClyZXR1cm4hMDtyZXR1''@;'; put 'put ''cm4hMX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMiksYT1sKDE0KSxjPWwoMTkpLG89bCg3MiksaD1sKDIyKSxmPWwoMyksZz1sKDM3KS5mLHU9bCgxNikuZixwPWwoOCkuZix2PWwoNDUpLnRyaW0sSD0iTnVtYmVyIixDPXJbSF0sVj1DLFM9Qy5wcm90b3R5cGUsXz1jKGwoMzYpKFMp''@;'; put 'put ''KT09SCxiPSJ0cmltImluIFN0cmluZy5wcm90b3R5cGUsTT1mdW5jdGlvbihOKXt2YXIgST1oKE4sITEpO2lmKCJzdHJpbmciPT10eXBlb2YgSSYmMjxJLmxlbmd0aCl7dmFyIFcsTyxCLHo9KEk9Yj9JLnRyaW0oKTp2KEksMykpLmNoYXJDb2RlQXQoMCk7aWYoNDM9PT16fHw0NT09PXope2lm''@;'; put 'put ''KDg4PT09KFc9SS5jaGFyQ29kZUF0KDIpKXx8MTIwPT09VylyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT16KXtzd2l0Y2goSS5jaGFyQ29kZUF0KDEpKXtjYXNlIDY2OmNhc2UgOTg6Tz0yLEI9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpPPTgsQj01NTticmVhaztkZWZhdWx0OnJldHVybitJ''@;'; put 'put ''fWZvcih2YXIgbDEsYTE9SS5zbGljZSgyKSxoMT0wLHAxPWExLmxlbmd0aDtoMTxwMTtoMSsrKWlmKChsMT1hMS5jaGFyQ29kZUF0KGgxKSk8NDh8fEI8bDEpcmV0dXJuIE5hTjtyZXR1cm4gcGFyc2VJbnQoYTEsTyl9fXJldHVybitJfTtpZighQygiIDBvMSIpfHwhQygiMGIxIil8fEMoIisw''@;'; put 'put ''eDEiKSl7Qz1mdW5jdGlvbihJKXt2YXIgVz1hcmd1bWVudHMubGVuZ3RoPDE/MDpJLE89dGhpcztyZXR1cm4gTyBpbnN0YW5jZW9mIEMmJihfP2YoZnVuY3Rpb24oKXtTLnZhbHVlT2YuY2FsbChPKX0pOmMoTykhPUgpP28obmV3IFYoTShXKSksTyxDKTpNKFcpfTtmb3IodmFyIHgsRT1sKDcp''@;'; put 'put ''P2coVik6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJ''@;'; put 'put ''bnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLHc9MDt3PEUubGVuZ3RoO3crKylhKFYseD1FW3ddKSYmIWEoQyx4KSYmcChDLHgsdShWLHgpKTsoQy5wcm90b3R5cGU9UykuY29uc3RydWN0b3I9QyxsKDEyKShyLEgsQyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMjApLGM9bCgx''@;'; put 'put ''MDIpLG89bCg3NCksaD0xLi50b0ZpeGVkLGY9TWF0aC5mbG9vcixnPVswLDAsMCwwLDAsMF0sdT0iTnVtYmVyLnRvRml4ZWQ6IGluY29ycmVjdCBpbnZvY2F0aW9uISIscD1mdW5jdGlvbihWLFMpe2Zvcih2YXIgXz0tMSxiPVM7KytfPDY7KWdbX109KGIrPVYqZ1tfXSklMWU3LGI9ZihiLzFl''@;'; put 'put ''Nyl9LHY9ZnVuY3Rpb24oVil7Zm9yKHZhciBTPTYsXz0wOzA8PS0tUzspZ1tTXT1mKChfKz1nW1NdKS9WKSxfPV8lVioxZTd9LEg9ZnVuY3Rpb24oKXtmb3IodmFyIFY9NixTPSIiOzA8PS0tVjspaWYoIiIhPT1TfHwwPT09Vnx8MCE9PWdbVl0pe3ZhciBfPVN0cmluZyhnW1ZdKTtTPSIiPT09''@;'; put 'put ''Uz9fOlMrby5jYWxsKCIwIiw3LV8ubGVuZ3RoKStffXJldHVybiBTfSxDPWZ1bmN0aW9uKFYsUyxfKXtyZXR1cm4gMD09PVM/XzpTJTI9PTE/QyhWLFMtMSxfKlYpOkMoVipWLFMvMixfKX07cihyLlArci5GKighIWgmJigiMC4wMDAiIT09OGUtNS50b0ZpeGVkKDMpfHwiMSIhPT0uOS50b0Zp''@;'; put 'put ''eGVkKDApfHwiMS4yNSIhPT0xLjI1NS50b0ZpeGVkKDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQoMCkpfHwhbCgzKShmdW5jdGlvbigpe2guY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oUyl7dmFyIF8sYixNLHgs''@;'; put 'put ''RT1jKHRoaXMsdSksdz1hKFMpLE49IiIsST0iMCI7aWYodzwwfHwyMDx3KXRocm93IFJhbmdlRXJyb3IodSk7aWYoRSE9RSlyZXR1cm4iTmFOIjtpZihFPD0tMWUyMXx8MWUyMTw9RSlyZXR1cm4gU3RyaW5nKEUpO2lmKEU8MCYmKE49Ii0iLEU9LUUpLDFlLTIxPEUpaWYoYj0oXz1mdW5jdGlv''@;'; put 'put ''bihXKXtmb3IodmFyIE89MCxCPVc7NDA5Njw9QjspTys9MTIsQi89NDA5Njtmb3IoOzI8PUI7KU8rPTEsQi89MjtyZXR1cm4gT30oRSpDKDIsNjksMSkpLTY5KTwwP0UqQygyLC1fLDEpOkUvQygyLF8sMSksYio9NDUwMzU5OTYyNzM3MDQ5NiwwPChfPTUyLV8pKXtmb3IocCgwLGIpLE09dzs3''@;'; put 'put ''PD1NOylwKDFlNywwKSxNLT03O2ZvcihwKEMoMTAsTSwxKSwwKSxNPV8tMTsyMzw9TTspdigxPDwyMyksTS09MjM7digxPDxNKSxwKDEsMSksdigyKSxJPUgoKX1lbHNlIHAoMCxiKSxwKDE8PC1fLDApLEk9SCgpK28uY2FsbCgiMCIsdyk7cmV0dXJuIDA8dz9OKygoeD1JLmxlbmd0aCk8PXc/''@;'; put 'put ''IjAuIitvLmNhbGwoIjAiLHcteCkrSTpJLnNsaWNlKDAseC13KSsiLiIrSS5zbGljZSh4LXcpKTpOK0l9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgzKSxjPWwoMTAyKSxvPTEuLnRvUHJlY2lzaW9uO3Ioci5QK3IuRiooYShmdW5jdGlvbigpe3JldHVybiIxIiE9PW8uY2Fs''@;'; put 'put ''bCgxLGspfSl8fCFhKGZ1bmN0aW9uKCl7by5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZil7dmFyIGc9Yyh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiBmPT09az9vLmNhbGwoZyk6by5jYWxsKGcsZil9''@;'; put 'put ''fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMikuaXNGaW5pdGU7cihyLlMsIk51bWJlciIse2lzRmluaXRlOmZ1bmN0aW9uKG8pe3JldHVybiJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgbyYmYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk51bWJlciIse2lzSW50ZWdlcjpsKDEwMyl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk51bWJlciIse2lzTmFOOmZ1bmN0aW9uKGMpe3JldHVybiBjIT1jfX0pfSxm''@;'; put 'put ''dW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTAzKSxjPU1hdGguYWJzO3Ioci5TLCJOdW1iZXIiLHtpc1NhZmVJbnRlZ2VyOmZ1bmN0aW9uKGgpe3JldHVybiBhKGgpJiZjKGgpPD05MDA3MTk5MjU0NzQwOTkxfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTnVt''@;'; put 'put ''YmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJOdW1iZXIiLHtNSU5fU0FGRV9JTlRFR0VSOi05MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMDQpO3Ioci5T''@;'; put 'put ''K3IuRiooTnVtYmVyLnBhcnNlRmxvYXQhPWEpLCJOdW1iZXIiLHtwYXJzZUZsb2F0OmF9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEwNSk7cihyLlMrci5GKihOdW1iZXIucGFyc2VJbnQhPWEpLCJOdW1iZXIiLHtwYXJzZUludDphfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIg''@;'; put 'put ''cj1sKDApLGE9bCgxMDUpO3Ioci5HK3IuRioocGFyc2VJbnQhPWEpLHtwYXJzZUludDphfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMDQpO3Ioci5HK3IuRioocGFyc2VGbG9hdCE9YSkse3BhcnNlRmxvYXQ6YX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwo''@;'; put 'put ''MTA2KSxjPU1hdGguc3FydCxvPU1hdGguYWNvc2g7cihyLlMrci5GKiEobyYmNzEwPT1NYXRoLmZsb29yKG8oTnVtYmVyLk1BWF9WQUxVRSkpJiZvKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihmKXtyZXR1cm4oZj0rZik8MT9OYU46OTQ5MDYyNjUuNjI0MjUxNTY8Zj9NYXRo''@;'; put 'put ''LmxvZyhmKStNYXRoLkxOMjphKGYtMStjKGYtMSkqYyhmKzEpKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1NYXRoLmFzaW5oO3Ioci5TK3IuRiohKGEmJjA8MS9hKDApKSwiTWF0aCIse2FzaW5oOmZ1bmN0aW9uIGMobyl7cmV0dXJuIGlzRmluaXRlKG89K28pJiYwIT1vP288''@;'; put 'put ''MD8tYygtbyk6TWF0aC5sb2cobytNYXRoLnNxcnQobypvKzEpKTpvfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPU1hdGguYXRhbmg7cihyLlMrci5GKiEoYSYmMS9hKC0wKTwwKSwiTWF0aCIse2F0YW5oOmZ1bmN0aW9uKG8pe3JldHVybiAwPT0obz0rbyk/bzpNYXRoLmxvZygo''@;'; put 'put ''MStvKS8oMS1vKSkvMn19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDc1KTtyKHIuUywiTWF0aCIse2NicnQ6ZnVuY3Rpb24obyl7cmV0dXJuIGEobz0rbykqTWF0aC5wb3coTWF0aC5hYnMobyksMS8zKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1h''@;'; put 'put ''dGgiLHtjbHozMjpmdW5jdGlvbihjKXtyZXR1cm4oYz4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKGMrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPU1hdGguZXhwO3Ioci5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbihvKXtyZXR1cm4oYShv''@;'; put 'put ''PStvKSthKC1vKSkvMn19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDc2KTtyKHIuUytyLkYqKGEhPU1hdGguZXhwbTEpLCJNYXRoIix7ZXhwbTE6YX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTWF0aCIse2Zyb3VuZDpsKDEwNyl9KX0sZnVuY3Rpb24o''@;'; put 'put ''QSxlLGwpe3ZhciByPWwoMCksYT1NYXRoLmFicztyKHIuUywiTWF0aCIse2h5cG90OmZ1bmN0aW9uKG8saCl7Zm9yKHZhciBmLGcsdT0wLHA9MCx2PWFyZ3VtZW50cy5sZW5ndGgsSD0wO3A8djspSDwoZj1hKGFyZ3VtZW50c1twKytdKSk/KHU9dSooZz1IL2YpKmcrMSxIPWYpOnUrPTA8Zj8o''@;'; put 'put ''Zz1mL0gpKmc6ZjtyZXR1cm4gSD09PTEvMD8xLzA6SCpNYXRoLnNxcnQodSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9TWF0aC5pbXVsO3Ioci5TK3IuRipsKDMpKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPWEoNDI5NDk2NzI5NSw1KXx8MiE9YS5sZW5ndGh9KSwiTWF0aCIse2lt''@;'; put 'put ''dWw6ZnVuY3Rpb24obyxoKXt2YXIgZj02NTUzNSxnPStvLHU9K2gscD1mJmcsdj1mJnU7cmV0dXJuIDB8cCp2KygoZiZnPj4+MTYpKnYrcCooZiZ1Pj4+MTYpPDwxNj4+PjApfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTWF0aCIse2xvZzEwOmZ1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiBNYXRoLmxvZyhjKSpNYXRoLkxPRzEwRX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtsb2cxcDpsKDEwNil9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtsb2cyOmZ1bmN0aW9uKGMpe3JldHVybiBNYXRoLmxvZyhj''@;'; put 'put ''KS9NYXRoLkxOMn19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtzaWduOmwoNzUpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg3NiksYz1NYXRoLmV4cDtyKHIuUytyLkYqbCgzKShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2lu''@;'; put 'put ''aCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKGgpe3JldHVybiBNYXRoLmFicyhoPStoKTwxPyhhKGgpLWEoLWgpKS8yOihjKGgtMSktYygtaC0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDc2KSxjPU1hdGguZXhwO3Ioci5TLCJNYXRo''@;'; put 'put ''Iix7dGFuaDpmdW5jdGlvbihoKXt2YXIgZj1hKGg9K2gpLGc9YSgtaCk7cmV0dXJuIGY9PTEvMD8xOmc9PTEvMD8tMTooZi1nKS8oYyhoKStjKC1oKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24oYyl7cmV0dXJuKDA8Yz9NYXRo''@;'; put 'put ''LmZsb29yOk1hdGguY2VpbCkoYyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgzNSksYz1TdHJpbmcuZnJvbUNoYXJDb2RlLG89U3RyaW5nLmZyb21Db2RlUG9pbnQ7cihyLlMrci5GKighIW8mJjEhPW8ubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlv''@;'; put 'put ''bihmKXtmb3IodmFyIGcsdT1bXSxwPWFyZ3VtZW50cy5sZW5ndGgsdj0wO3Y8cDspe2lmKGc9K2FyZ3VtZW50c1t2KytdLGEoZywxMTE0MTExKSE9PWcpdGhyb3cgUmFuZ2VFcnJvcihnKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO3UucHVzaChnPDY1NTM2P2MoZyk6Yyg1NTI5Niso''@;'; put 'put ''KGctPTY1NTM2KT4+MTApLGclMTAyNCs1NjMyMCkpfXJldHVybiB1LmpvaW4oIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTUpLGM9bCg2KTtyKHIuUywiU3RyaW5nIix7cmF3OmZ1bmN0aW9uKGgpe2Zvcih2YXIgZj1hKGgucmF3KSxnPWMoZi5sZW5ndGgpLHU9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCxwPVtdLHY9MDt2PGc7KXAucHVzaChTdHJpbmcoZlt2KytdKSksdjx1JiZwLnB1c2goU3RyaW5nKGFyZ3VtZW50c1t2XSkpO3JldHVybiBwLmpvaW4oIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCg0NSkoInRyaW0iLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiByKHRoaXMsMyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg1NSkoITEpO3Ioci5QLCJTdHJpbmciLHtjb2RlUG9pbnRBdDpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoNiksYz1sKDc3KSxv''@;'; put 'put ''PSJlbmRzV2l0aCIsaD0iIltvXTtyKHIuUCtyLkYqbCg3OCkobyksIlN0cmluZyIse2VuZHNXaXRoOmZ1bmN0aW9uKGcpe3ZhciB1PWModGhpcyxnLG8pLHA9MTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprLHY9YSh1Lmxlbmd0aCksSD1wPT09az92Ok1hdGgubWluKGEocCksdiks''@;'; put 'put ''Qz1TdHJpbmcoZyk7cmV0dXJuIGg/aC5jYWxsKHUsQyxIKTp1LnNsaWNlKEgtQy5sZW5ndGgsSCk9PT1DfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoNzcpLGM9ImluY2x1ZGVzIjtyKHIuUCtyLkYqbCg3OCkoYyksIlN0cmluZyIse2luY2x1ZGVzOmZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiEhfmEodGhpcyxoLGMpLmluZGV4T2YoaCwxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmspfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUCwiU3RyaW5nIix7cmVwZWF0OmwoNzQpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg2KSxjPWwo''@;'; put 'put ''NzcpLG89InN0YXJ0c1dpdGgiLGg9IiJbb107cihyLlArci5GKmwoNzgpKG8pLCJTdHJpbmciLHtzdGFydHNXaXRoOmZ1bmN0aW9uKGcpe3ZhciB1PWModGhpcyxnLG8pLHA9YShNYXRoLm1pbigxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmssdS5sZW5ndGgpKSx2PVN0cmluZyhn''@;'; put 'put ''KTtyZXR1cm4gaD9oLmNhbGwodSx2LHApOnUuc2xpY2UocCxwK3YubGVuZ3RoKT09PXZ9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDU1KSghMCk7bCg3OSkoU3RyaW5nLCJTdHJpbmciLGZ1bmN0aW9uKGEpe3RoaXMuX3Q9U3RyaW5nKGEpLHRoaXMuX2k9MH0sZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''YSxjPXRoaXMuX3Qsbz10aGlzLl9pO3JldHVybiBjLmxlbmd0aDw9bz97dmFsdWU6ayxkb25lOiEwfTooYT1yKGMsbyksdGhpcy5faSs9YS5sZW5ndGgse3ZhbHVlOmEsZG9uZTohMX0pfSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiYW5jaG9yIixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oYyl7cmV0dXJuIHIodGhpcywiYSIsIm5hbWUiLGMpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoImJpZyIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcywiYmlnIiwiIiwiIil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiYmxpbmsiLGZ1bmN0aW9u''@;'; put 'put ''KHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiYm9sZCIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcywiYiIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMyko''@;'; put 'put ''ImZpeGVkIixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLCJ0dCIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoImZvbnRjb2xvciIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiByKHRoaXMsImZvbnQiLCJjb2xvciIsYyl9''@;'; put 'put ''fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiZm9udHNpemUiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gcih0aGlzLCJmb250Iiwic2l6ZSIsYyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiaXRhbGljcyIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHIodGhpcywiaSIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoImxpbmsiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gcih0aGlzLCJhIiwiaHJlZiIsYyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgic21hbGwiLGZ1bmN0aW9uKHIpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgic3RyaWtlIixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLCJzdHJpa2UiLCIiLCIiKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMTMp''@;'; put 'put ''KCJzdWIiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsInN1YiIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoInN1cCIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcywic3VwIiwiIiwiIil9fSl9LGZ1bmN0aW9u''@;'; put 'put ''KEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJBcnJheSIse2lzQXJyYXk6bCg1NCl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTgpLGE9bCgwKSxjPWwoOSksbz1sKDEwOCksaD1sKDgxKSxmPWwoNiksZz1sKDgyKSx1PWwoODMpO2EoYS5TK2EuRiohbCg1NykoZnVuY3Rpb24ocCl7QXJy''@;'; put 'put ''YXkuZnJvbShwKX0pLCJBcnJheSIse2Zyb206ZnVuY3Rpb24odil7dmFyIEgsQyxWLFMsXz1jKHYpLGI9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSxNPWFyZ3VtZW50cy5sZW5ndGgseD0xPE0/YXJndW1lbnRzWzFdOmssRT14IT09ayx3PTAsTj11KF8pO2lmKEUmJih4PXIo''@;'; put 'put ''eCwyPE0/YXJndW1lbnRzWzJdOmssMikpLE49PWt8fGI9PUFycmF5JiZoKE4pKWZvcihDPW5ldyBiKEg9ZihfLmxlbmd0aCkpO3c8SDt3KyspZyhDLHcsRT94KF9bd10sdyk6X1t3XSk7ZWxzZSBmb3IoUz1OLmNhbGwoXyksQz1uZXcgYjshKFY9Uy5uZXh0KCkpLmRvbmU7dysrKWcoQyx3LEU/''@;'; put 'put ''byhTLHgsW1YudmFsdWUsd10sITApOlYudmFsdWUpO3JldHVybiBDLmxlbmd0aD13LEN9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg4Mik7cihyLlMrci5GKmwoMykoZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChjKWluc3RhbmNlb2Yg''@;'; put 'put ''Yyl9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbigpe2Zvcih2YXIgbz0wLGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShoKTtvPGg7KWEoZixvLGFyZ3VtZW50c1tvKytdKTtyZXR1cm4gZi5sZW5ndGg9aCxmfX0pfSxmdW5jdGlvbihB''@;'; put 'put ''LGUsbCl7dmFyIHI9bCgwKSxhPWwoMTUpLGM9W10uam9pbjtyKHIuUCtyLkYqKGwoNDgpIT1PYmplY3R8fCFsKDIxKShjKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbihoKXtyZXR1cm4gYy5jYWxsKGEodGhpcyksaD09PWs/IiwiOmgpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxh''@;'; put 'put ''PWwoNzApLGM9bCgxOSksbz1sKDM1KSxoPWwoNiksZj1bXS5zbGljZTtyKHIuUCtyLkYqbCgzKShmdW5jdGlvbigpe2EmJmYuY2FsbChhKX0pLCJBcnJheSIse3NsaWNlOmZ1bmN0aW9uKHUscCl7dmFyIHY9aCh0aGlzLmxlbmd0aCksSD1jKHRoaXMpO2lmKHA9cD09PWs/djpwLCJBcnJheSI9''@;'; put 'put ''PUgpcmV0dXJuIGYuY2FsbCh0aGlzLHUscCk7Zm9yKHZhciBDPW8odSx2KSxWPW8ocCx2KSxTPWgoVi1DKSxfPW5ldyBBcnJheShTKSxiPTA7YjxTO2IrKylfW2JdPSJTdHJpbmciPT1IP3RoaXMuY2hhckF0KEMrYik6dGhpc1tDK2JdO3JldHVybiBffX0pfSxmdW5jdGlvbihBLGUsbCl7dmFy''@;'; put 'put ''IHI9bCgwKSxhPWwoMTApLGM9bCg5KSxvPWwoMyksaD1bXS5zb3J0LGY9WzEsMiwzXTtyKHIuUCtyLkYqKG8oZnVuY3Rpb24oKXtmLnNvcnQoayl9KXx8IW8oZnVuY3Rpb24oKXtmLnNvcnQobnVsbCl9KXx8IWwoMjEpKGgpKSwiQXJyYXkiLHtzb3J0OmZ1bmN0aW9uKHUpe3JldHVybiB1PT09''@;'; put 'put ''az9oLmNhbGwoYyh0aGlzKSk6aC5jYWxsKGModGhpcyksYSh1KSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNSkoMCksYz1sKDIxKShbXS5mb3JFYWNoLCEwKTtyKHIuUCtyLkYqIWMsIkFycmF5Iix7Zm9yRWFjaDpmdW5jdGlvbihoKXtyZXR1cm4gYSh0aGlzLGgsYXJn''@;'; put 'put ''dW1lbnRzWzFdKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDU0KSxjPWwoNSkoInNwZWNpZXMiKTtBLmV4cG9ydHM9ZnVuY3Rpb24obyl7dmFyIGg7cmV0dXJuIGEobykmJigiZnVuY3Rpb24iIT10eXBlb2YoaD1vLmNvbnN0cnVjdG9yKXx8aCE9PUFycmF5JiYhYShoLnBy''@;'; put 'put ''b3RvdHlwZSl8fChoPWspLHIoaCkmJm51bGw9PT0oaD1oW2NdKSYmKGg9aykpLGg9PT1rP0FycmF5Omh9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMjUpKDEpO3Ioci5QK3IuRiohbCgyMSkoW10ubWFwLCEwKSwiQXJyYXkiLHttYXA6ZnVuY3Rpb24obyl7cmV0dXJuIGEodGhp''@;'; put 'put ''cyxvLGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNSkoMik7cihyLlArci5GKiFsKDIxKShbXS5maWx0ZXIsITApLCJBcnJheSIse2ZpbHRlcjpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24oQSxl''@;'; put 'put ''LGwpe3ZhciByPWwoMCksYT1sKDI1KSgzKTtyKHIuUCtyLkYqIWwoMjEpKFtdLnNvbWUsITApLCJBcnJheSIse3NvbWU6ZnVuY3Rpb24obyl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNSkoNCk7cihyLlArci5GKiFs''@;'; put 'put ''KDIxKShbXS5ldmVyeSwhMCksIkFycmF5Iix7ZXZlcnk6ZnVuY3Rpb24obyl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMDkpO3Ioci5QK3IuRiohbCgyMSkoW10ucmVkdWNlLCEwKSwiQXJyYXkiLHtyZWR1Y2U6ZnVu''@;'; put 'put ''Y3Rpb24obyl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEwOSk7cihyLlArci5GKiFsKDIxKShbXS5yZWR1Y2VSaWdodCwhMCksIkFycmF5Iix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24o''@;'; put 'put ''byl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCEwKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDUyKSghMSksYz1bXS5pbmRleE9mLG89ISFjJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7cihyLlArci5GKihvfHwhbCgyMSkoYykpLCJB''@;'; put 'put ''cnJheSIse2luZGV4T2Y6ZnVuY3Rpb24oZil7cmV0dXJuIG8/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6YSh0aGlzLGYsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDE1KSxjPWwoMjApLG89bCg2KSxoPVtdLmxhc3RJbmRleE9mLGY9ISFoJiYx''@;'; put 'put ''L1sxXS5sYXN0SW5kZXhPZigxLC0wKTwwO3Ioci5QK3IuRiooZnx8IWwoMjEpKGgpKSwiQXJyYXkiLHtsYXN0SW5kZXhPZjpmdW5jdGlvbih1KXtpZihmKXJldHVybiBoLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDt2YXIgcD1hKHRoaXMpLHY9byhwLmxlbmd0aCksSD12LTE7Zm9yKDE8YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCYmKEg9TWF0aC5taW4oSCxjKGFyZ3VtZW50c1sxXSkpKSxIPDAmJihIPXYrSCk7MDw9SDtILS0paWYoSCBpbiBwJiZwW0hdPT09dSlyZXR1cm4gSHx8MDtyZXR1cm4tMX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlAsIkFycmF5Iix7Y29weVdpdGhp''@;'; put 'put ''bjpsKDExMCl9KSxsKDMxKSgiY29weVdpdGhpbiIpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUCwiQXJyYXkiLHtmaWxsOmwoODUpfSksbCgzMSkoImZpbGwiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDI1KSg1KSxjPSJmaW5kIixvPSEwO2MgaW5bXSYmQXJy''@;'; put 'put ''YXkoMSlbY10oZnVuY3Rpb24oKXtvPSExfSkscihyLlArci5GKm8sIkFycmF5Iix7ZmluZDpmdW5jdGlvbihmKXtyZXR1cm4gYSh0aGlzLGYsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX19KSxsKDMxKShjKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDI1KSg2''@;'; put 'put ''KSxjPSJmaW5kSW5kZXgiLG89ITA7YyBpbltdJiZBcnJheSgxKVtjXShmdW5jdGlvbigpe289ITF9KSxyKHIuUCtyLkYqbywiQXJyYXkiLHtmaW5kSW5kZXg6ZnVuY3Rpb24oZil7cmV0dXJuIGEodGhpcyxmLDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06ayl9fSksbCgzMSkoYyl9''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXtsKDM4KSgiQXJyYXkiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMiksYT1sKDcyKSxjPWwoOCkuZixvPWwoMzcpLmYsaD1sKDU2KSxmPWwoNTApLGc9ci5SZWdFeHAsdT1nLHA9Zy5wcm90b3R5cGUsdj0vYS9nLEg9L2EvZyxDPW5ldyBnKHYpIT09djtpZihs''@;'; put 'put ''KDcpJiYoIUN8fGwoMykoZnVuY3Rpb24oKXtyZXR1cm4gSFtsKDUpKCJtYXRjaCIpXT0hMSxnKHYpIT12fHxnKEgpPT1IfHwiL2EvaSIhPWcodiwiaSIpfSkpKXtnPWZ1bmN0aW9uKE0seCl7dmFyIEU9dGhpcyBpbnN0YW5jZW9mIGcsdz1oKE0pLE49eD09PWs7cmV0dXJuIUUmJncmJk0uY29u''@;'; put 'put ''c3RydWN0b3I9PT1nJiZOP006YShDP25ldyB1KHcmJiFOP00uc291cmNlOk0seCk6dSgodz1NIGluc3RhbmNlb2YgZyk/TS5zb3VyY2U6TSx3JiZOP2YuY2FsbChNKTp4KSxFP3RoaXM6cCxnKX07Zm9yKHZhciBWPWZ1bmN0aW9uKGIpe2IgaW4gZ3x8YyhnLGIse2NvbmZpZ3VyYWJsZTohMCxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdVtiXX0sc2V0OmZ1bmN0aW9uKE0pe3VbYl09TX19KX0sUz1vKHUpLF89MDtfPFMubGVuZ3RoOylWKFNbXysrXSk7KHAuY29uc3RydWN0b3I9ZykucHJvdG90eXBlPXAsbCgxMikociwiUmVnRXhwIixnKX1sKDM4KSgiUmVnRXhwIil9LGZ1bmN0aW9uKEEs''@;'; put 'put ''ZSxsKXtsKDExMyk7dmFyIHI9bCgxKSxhPWwoNTApLGM9bCg3KSxvPSJ0b1N0cmluZyIsaD0vLi9bb10sZj1mdW5jdGlvbihnKXtsKDEyKShSZWdFeHAucHJvdG90eXBlLG8sZywhMCl9O2woMykoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPWguY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9''@;'; put 'put ''KX0pP2YoZnVuY3Rpb24oKXt2YXIgdT1yKHRoaXMpO3JldHVybiIvIi5jb25jYXQodS5zb3VyY2UsIi8iLCJmbGFncyJpbiB1P3UuZmxhZ3M6IWMmJnUgaW5zdGFuY2VvZiBSZWdFeHA/YS5jYWxsKHUpOmspfSk6aC5uYW1lIT1vJiZmKGZ1bmN0aW9uKCl7cmV0dXJuIGguY2FsbCh0aGlzKX0p''@;'; put 'put ''fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKSxhPWwoNiksYz1sKDg4KSxvPWwoNTgpO2woNTkpKCJtYXRjaCIsMSxmdW5jdGlvbihoLGYsZyx1KXtyZXR1cm5bZnVuY3Rpb24odil7dmFyIEg9aCh0aGlzKSxDPXY9PWs/azp2W2ZdO3JldHVybiBDIT09az9DLmNhbGwodixIKTpuZXcgUmVn''@;'; put 'put ''RXhwKHYpW2ZdKFN0cmluZyhIKSl9LGZ1bmN0aW9uKHApe3ZhciB2PXUoZyxwLHRoaXMpO2lmKHYuZG9uZSlyZXR1cm4gdi52YWx1ZTt2YXIgSD1yKHApLEM9U3RyaW5nKHRoaXMpO2lmKCFILmdsb2JhbClyZXR1cm4gbyhILEMpO2Zvcih2YXIgVixTPUgudW5pY29kZSxfPVtdLGI9SC5sYXN0''@;'; put 'put ''SW5kZXg9MDtudWxsIT09KFY9byhILEMpKTspe3ZhciBNPVN0cmluZyhWWzBdKTsiIj09PShfW2JdPU0pJiYoSC5sYXN0SW5kZXg9YyhDLGEoSC5sYXN0SW5kZXgpLFMpKSxiKyt9cmV0dXJuIDA9PT1iP251bGw6X31dfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpLGE9bCg5KSxjPWwo''@;'; put 'put ''Niksbz1sKDIwKSxoPWwoODgpLGY9bCg1OCksZz1NYXRoLm1heCx1PU1hdGgubWluLHA9TWF0aC5mbG9vcix2PS9cJChbJCZgJ118XGRcZD98PFtePl0qPikvZyxIPS9cJChbJCZgJ118XGRcZD8pL2c7bCg1OSkoInJlcGxhY2UiLDIsZnVuY3Rpb24oQyxWLFMsXyl7cmV0dXJuW2Z1bmN0aW9u''@;'; put 'put ''KHgsRSl7dmFyIHc9Qyh0aGlzKSxOPXg9PWs/azp4W1ZdO3JldHVybiBOIT09az9OLmNhbGwoeCx3LEUpOlMuY2FsbChTdHJpbmcodykseCxFKX0sZnVuY3Rpb24oTSx4KXt2YXIgRT1fKFMsTSx0aGlzLHgpO2lmKEUuZG9uZSlyZXR1cm4gRS52YWx1ZTt2YXIgdz1yKE0pLE49U3RyaW5nKHRo''@;'; put 'put ''aXMpLEk9ImZ1bmN0aW9uIj09dHlwZW9mIHg7SXx8KHg9U3RyaW5nKHgpKTt2YXIgVz13Lmdsb2JhbDtpZihXKXt2YXIgTz13LnVuaWNvZGU7dy5sYXN0SW5kZXg9MH1mb3IodmFyIEI9W107Oyl7dmFyIHo9Zih3LE4pO2lmKG51bGw9PT16fHwoQi5wdXNoKHopLCFXKSlicmVhazsiIj09PVN0''@;'; put 'put ''cmluZyh6WzBdKSYmKHcubGFzdEluZGV4PWgoTixjKHcubGFzdEluZGV4KSxPKSl9Zm9yKHZhciBsMSxhMT0iIixoMT0wLHAxPTA7cDE8Qi5sZW5ndGg7cDErKyl7ej1CW3AxXTtmb3IodmFyIGcxPVN0cmluZyh6WzBdKSxIMT1nKHUobyh6LmluZGV4KSxOLmxlbmd0aCksMCksRDE9W10saj0x''@;'; put 'put ''O2o8ei5sZW5ndGg7aisrKUQxLnB1c2goKGwxPXpbal0pPT09az9sMTpTdHJpbmcobDEpKTt2YXIgbjE9ei5ncm91cHM7aWYoSSl7dmFyIG0xPVtnMV0uY29uY2F0KEQxLEgxLE4pO24xIT09ayYmbTEucHVzaChuMSk7dmFyIF8xPVN0cmluZyh4LmFwcGx5KGssbTEpKX1lbHNlIF8xPWIoZzEs''@;'; put 'put ''TixIMSxEMSxuMSx4KTtoMTw9SDEmJihhMSs9Ti5zbGljZShoMSxIMSkrXzEsaDE9SDErZzEubGVuZ3RoKX1yZXR1cm4gYTErTi5zbGljZShoMSl9XTtmdW5jdGlvbiBiKE0seCxFLHcsTixJKXt2YXIgVz1FK00ubGVuZ3RoLE89dy5sZW5ndGgsQj1IO3JldHVybiBOIT09ayYmKE49YShOKSxC''@;'; put 'put ''PXYpLFMuY2FsbChJLEIsZnVuY3Rpb24oeixsMSl7dmFyIGExO3N3aXRjaChsMS5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIE07Y2FzZSJgIjpyZXR1cm4geC5zbGljZSgwLEUpO2Nhc2UiJyI6cmV0dXJuIHguc2xpY2UoVyk7Y2FzZSI8IjphMT1OW2wxLnNs''@;'; put 'put ''aWNlKDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBoMT0rbDE7aWYoMD09PWgxKXJldHVybiB6O2lmKE88aDEpe3ZhciBwMT1wKGgxLzEwKTtyZXR1cm4gMD09PXAxP3o6cDE8PU8/d1twMS0xXT09PWs/bDEuY2hhckF0KDEpOndbcDEtMV0rbDEuY2hhckF0KDEpOnp9YTE9d1toMS0xXX1yZXR1''@;'; put 'put ''cm4gYTE9PT1rPyIiOmExfSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpLGE9bCg5OSksYz1sKDU4KTtsKDU5KSgic2VhcmNoIiwxLGZ1bmN0aW9uKG8saCxmLGcpe3JldHVybltmdW5jdGlvbihwKXt2YXIgdj1vKHRoaXMpLEg9cD09az9rOnBbaF07cmV0dXJuIEghPT1rP0guY2Fs''@;'; put 'put ''bChwLHYpOm5ldyBSZWdFeHAocClbaF0oU3RyaW5nKHYpKX0sZnVuY3Rpb24odSl7dmFyIHA9ZyhmLHUsdGhpcyk7aWYocC5kb25lKXJldHVybiBwLnZhbHVlO3ZhciB2PXIodSksSD1TdHJpbmcodGhpcyksQz12Lmxhc3RJbmRleDthKEMsMCl8fCh2Lmxhc3RJbmRleD0wKTt2YXIgVj1jKHYs''@;'; put 'put ''SCk7cmV0dXJuIGEodi5sYXN0SW5kZXgsQyl8fCh2Lmxhc3RJbmRleD1DKSxudWxsPT09Vj8tMTpWLmluZGV4fV19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNTYpLGE9bCgxKSxjPWwoNTEpLG89bCg4OCksaD1sKDYpLGY9bCg1OCksZz1sKDg3KSx1PWwoMykscD1NYXRoLm1pbix2PVtd''@;'; put 'put ''LnB1c2gsSD0ic3BsaXQiLEM9Imxlbmd0aCIsVj0ibGFzdEluZGV4IixTPTQyOTQ5NjcyOTUsXz0hdShmdW5jdGlvbigpe1JlZ0V4cChTLCJ5Iil9KTtsKDU5KSgic3BsaXQiLDIsZnVuY3Rpb24oYixNLHgsRSl7dmFyIHc7cmV0dXJuIHc9ImMiPT0iYWJiYyJbSF0oLyhiKSovKVsxXXx8NCE9''@;'; put 'put ''InRlc3QiW0hdKC8oPzopLywtMSlbQ118fDIhPSJhYiJbSF0oLyg/OmFiKSovKVtDXXx8NCE9Ii4iW0hdKC8oLj8pKC4/KS8pW0NdfHwxPCIuIltIXSgvKCkoKS8pW0NdfHwiIltIXSgvLj8vKVtDXT9mdW5jdGlvbihOLEkpe3ZhciBXPVN0cmluZyh0aGlzKTtpZihOPT09ayYmMD09PUkpcmV0''@;'; put 'put ''dXJuW107aWYoIXIoTikpcmV0dXJuIHguY2FsbChXLE4sSSk7Zm9yKHZhciBPLEIseixsMT1bXSxhMT0wLGgxPUk9PT1rP1M6ST4+PjAscDE9bmV3IFJlZ0V4cChOLnNvdXJjZSwoTi5pZ25vcmVDYXNlPyJpIjoiIikrKE4ubXVsdGlsaW5lPyJtIjoiIikrKE4udW5pY29kZT8idSI6IiIpKyhO''@;'; put 'put ''LnN0aWNreT8ieSI6IiIpKyJnIik7KE89Zy5jYWxsKHAxLFcpKSYmIShhMTwoQj1wMVtWXSkmJihsMS5wdXNoKFcuc2xpY2UoYTEsTy5pbmRleCkpLDE8T1tDXSYmTy5pbmRleDxXW0NdJiZ2LmFwcGx5KGwxLE8uc2xpY2UoMSkpLHo9T1swXVtDXSxhMT1CLGgxPD1sMVtDXSkpOylwMVtWXT09''@;'; put 'put ''PU8uaW5kZXgmJnAxW1ZdKys7cmV0dXJuIGExPT09V1tDXT8heiYmcDEudGVzdCgiIil8fGwxLnB1c2goIiIpOmwxLnB1c2goVy5zbGljZShhMSkpLGgxPGwxW0NdP2wxLnNsaWNlKDAsaDEpOmwxfToiMCJbSF0oaywwKVtDXT9mdW5jdGlvbihOLEkpe3JldHVybiBOPT09ayYmMD09PUk/W106''@;'; put 'put ''eC5jYWxsKHRoaXMsTixJKX06eCxbZnVuY3Rpb24oSSxXKXt2YXIgTz1iKHRoaXMpLEI9ST09az9rOklbTV07cmV0dXJuIEIhPT1rP0IuY2FsbChJLE8sVyk6dy5jYWxsKFN0cmluZyhPKSxJLFcpfSxmdW5jdGlvbihOLEkpe3ZhciBXPUUodyxOLHRoaXMsSSx3IT09eCk7aWYoVy5kb25lKXJl''@;'; put 'put ''dHVybiBXLnZhbHVlO3ZhciBPPWEoTiksQj1TdHJpbmcodGhpcyksej1jKE8sUmVnRXhwKSxsMT1PLnVuaWNvZGUsYTE9bmV3IHooXz9POiJeKD86IitPLnNvdXJjZSsiKSIsKE8uaWdub3JlQ2FzZT8iaSI6IiIpKyhPLm11bHRpbGluZT8ibSI6IiIpKyhPLnVuaWNvZGU/InUiOiIiKSsoXz8i''@;'; put 'put ''eSI6ImciKSksaDE9ST09PWs/UzpJPj4+MDtpZigwPT09aDEpcmV0dXJuW107aWYoMD09PUIubGVuZ3RoKXJldHVybiBudWxsPT09ZihhMSxCKT9bQl06W107Zm9yKHZhciBwMT0wLGcxPTAsSDE9W107ZzE8Qi5sZW5ndGg7KXthMS5sYXN0SW5kZXg9Xz9nMTowO3ZhciBEMSxqPWYoYTEsXz9C''@;'; put 'put ''OkIuc2xpY2UoZzEpKTtpZihudWxsPT09anx8KEQxPXAoaChhMS5sYXN0SW5kZXgrKF8/MDpnMSkpLEIubGVuZ3RoKSk9PT1wMSlnMT1vKEIsZzEsbDEpO2Vsc2V7aWYoSDEucHVzaChCLnNsaWNlKHAxLGcxKSksSDEubGVuZ3RoPT09aDEpcmV0dXJuIEgxO2Zvcih2YXIgbjE9MTtuMTw9ai5s''@;'; put 'put ''ZW5ndGgtMTtuMSsrKWlmKEgxLnB1c2goaltuMV0pLEgxLmxlbmd0aD09PWgxKXJldHVybiBIMTtnMT1wMT1EMX19cmV0dXJuIEgxLnB1c2goQi5zbGljZShwMSkpLEgxfV19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByLGEsYyxvLGg9bCgyOSksZj1sKDIpLGc9bCgxOCksdT1sKDQ0KSxwPWwo''@;'; put 'put ''MCksdj1sKDQpLEg9bCgxMCksQz1sKDM5KSxWPWwoNDApLFM9bCg1MSksXz1sKDg5KS5zZXQsYj1sKDkwKSgpLE09bCg5MSkseD1sKDExNCksRT1sKDYwKSx3PWwoMTE1KSxOPSJQcm9taXNlIixJPWYuVHlwZUVycm9yLFc9Zi5wcm9jZXNzLE89VyYmVy52ZXJzaW9ucyxCPU8mJk8udjh8fCIi''@;'; put 'put ''LHo9ZltOXSxsMT0icHJvY2VzcyI9PXUoVyksYTE9ZnVuY3Rpb24oKXt9LGgxPWE9TS5mLHAxPSEhZnVuY3Rpb24oKXt0cnl7dmFyIEo9ei5yZXNvbHZlKDEpLG8xPShKLmNvbnN0cnVjdG9yPXt9KVtsKDUpKCJzcGVjaWVzIildPWZ1bmN0aW9uKE0xKXtNMShhMSxhMSl9O3JldHVybihsMXx8''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCkmJkoudGhlbihhMSlpbnN0YW5jZW9mIG8xJiYwIT09Qi5pbmRleE9mKCI2LjYiKSYmLTE9PT1FLmluZGV4T2YoIkNocm9tZS82NiIpfWNhdGNoKE0xKXt9fSgpLGcxPWZ1bmN0aW9uKEope3ZhciBvMTtyZXR1cm4hKCF2''@;'; put 'put ''KEopfHwiZnVuY3Rpb24iIT10eXBlb2YobzE9Si50aGVuKSkmJm8xfSxIMT1mdW5jdGlvbihKLG8xKXtpZighSi5fbil7Si5fbj0hMDt2YXIgTTE9Si5fYztiKGZ1bmN0aW9uKCl7Zm9yKHZhciBiMT1KLl92LEIxPTE9PUouX3MsJD0wLFI9ZnVuY3Rpb24oWil7dmFyIEQseSxULFA9QjE/Wi5v''@;'; put 'put ''azpaLmZhaWwsdDE9Wi5yZXNvbHZlLHMxPVoucmVqZWN0LGYxPVouZG9tYWluO3RyeXtQPyhCMXx8KDI9PUouX2gmJm4xKEopLEouX2g9MSksITA9PT1QP0Q9YjE6KGYxJiZmMS5lbnRlcigpLEQ9UChiMSksZjEmJihmMS5leGl0KCksVD0hMCkpLEQ9PT1aLnByb21pc2U/czEoSSgiUHJvbWlz''@;'; put 'put ''ZS1jaGFpbiBjeWNsZSIpKTooeT1nMShEKSk/eS5jYWxsKEQsdDEsczEpOnQxKEQpKTpzMShiMSl9Y2F0Y2goWSl7ZjEmJiFUJiZmMS5leGl0KCksczEoWSl9fTskPE0xLmxlbmd0aDspUihNMVskKytdKTtKLl9jPVtdLEouX249ITEsbzEmJiFKLl9oJiZEMShKKX0pfX0sRDE9ZnVuY3Rpb24o''@;'; put 'put ''Sil7Xy5jYWxsKGYsZnVuY3Rpb24oKXt2YXIgbzEsTTEsYjEsQjE9Si5fdiwkPWooSik7aWYoJCYmKG8xPXgoZnVuY3Rpb24oKXtsMT9XLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIsQjEsSik6KE0xPWYub251bmhhbmRsZWRyZWplY3Rpb24pP00xKHtwcm9taXNlOkoscmVhc29uOkIxfSk6''@;'; put 'put ''KGIxPWYuY29uc29sZSkmJmIxLmVycm9yJiZiMS5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixCMSl9KSxKLl9oPWwxfHxqKEopPzI6MSksSi5fYT1rLCQmJm8xLmUpdGhyb3cgbzEudn0pfSxqPWZ1bmN0aW9uKEope3JldHVybiAxIT09Si5faCYmMD09PShKLl9hfHxKLl9j''@;'; put 'put ''KS5sZW5ndGh9LG4xPWZ1bmN0aW9uKEope18uY2FsbChmLGZ1bmN0aW9uKCl7dmFyIG8xO2wxP1cuZW1pdCgicmVqZWN0aW9uSGFuZGxlZCIsSik6KG8xPWYub25yZWplY3Rpb25oYW5kbGVkKSYmbzEoe3Byb21pc2U6SixyZWFzb246Si5fdn0pfSl9LG0xPWZ1bmN0aW9uKEope3ZhciBvMT10''@;'; put 'put ''aGlzO28xLl9kfHwobzEuX2Q9ITAsKG8xPW8xLl93fHxvMSkuX3Y9SixvMS5fcz0yLG8xLl9hfHwobzEuX2E9bzEuX2Muc2xpY2UoKSksSDEobzEsITApKX0sXzE9ZnVuY3Rpb24oSil7dmFyIG8xLE0xPXRoaXM7aWYoIU0xLl9kKXtNMS5fZD0hMCxNMT1NMS5fd3x8TTE7dHJ5e2lmKE0xPT09''@;'; put 'put ''Sil0aHJvdyBJKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhvMT1nMShKKSk/YihmdW5jdGlvbigpe3ZhciBiMT17X3c6TTEsX2Q6ITF9O3RyeXtvMS5jYWxsKEosZyhfMSxiMSwxKSxnKG0xLGIxLDEpKX1jYXRjaChCMSl7bTEuY2FsbChiMSxCMSl9fSk6KE0xLl92PUos''@;'; put 'put ''TTEuX3M9MSxIMShNMSwhMSkpfWNhdGNoKGIxKXttMS5jYWxsKHtfdzpNMSxfZDohMX0sYjEpfX19O3AxfHwoej1mdW5jdGlvbihvMSl7Qyh0aGlzLHosTiwiX2giKSxIKG8xKSxyLmNhbGwodGhpcyk7dHJ5e28xKGcoXzEsdGhpcywxKSxnKG0xLHRoaXMsMSkpfWNhdGNoKE0xKXttMS5jYWxs''@;'; put 'put ''KHRoaXMsTTEpfX0sKHI9ZnVuY3Rpb24obzEpe3RoaXMuX2M9W10sdGhpcy5fYT1rLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9ayx0aGlzLl9oPTAsdGhpcy5fbj0hMX0pLnByb3RvdHlwZT1sKDQxKSh6LnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbihvMSxNMSl7dmFyIGIxPWgxKFMo''@;'; put 'put ''dGhpcyx6KSk7cmV0dXJuIGIxLm9rPSJmdW5jdGlvbiIhPXR5cGVvZiBvMXx8bzEsYjEuZmFpbD0iZnVuY3Rpb24iPT10eXBlb2YgTTEmJk0xLGIxLmRvbWFpbj1sMT9XLmRvbWFpbjprLHRoaXMuX2MucHVzaChiMSksdGhpcy5fYSYmdGhpcy5fYS5wdXNoKGIxKSx0aGlzLl9zJiZIMSh0aGlz''@;'; put 'put ''LCExKSxiMS5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbihKKXtyZXR1cm4gdGhpcy50aGVuKGssSil9fSksYz1mdW5jdGlvbigpe3ZhciBKPW5ldyByO3RoaXMucHJvbWlzZT1KLHRoaXMucmVzb2x2ZT1nKF8xLEosMSksdGhpcy5yZWplY3Q9ZyhtMSxKLDEpfSxNLmY9aDE9ZnVuY3Rpb24oSil7''@;'; put 'put ''cmV0dXJuIEo9PT16fHxKPT09bz9uZXcgYyhKKTphKEopfSkscChwLkcrcC5XK3AuRiohcDEse1Byb21pc2U6en0pLGwoNDMpKHosTiksbCgzOCkoTiksbz1sKDI2KVtOXSxwKHAuUytwLkYqIXAxLE4se3JlamVjdDpmdW5jdGlvbihvMSl7dmFyIE0xPWgxKHRoaXMpO3JldHVybigwLE0xLnJl''@;'; put 'put ''amVjdCkobzEpLE0xLnByb21pc2V9fSkscChwLlMrcC5GKihofHwhcDEpLE4se3Jlc29sdmU6ZnVuY3Rpb24obzEpe3JldHVybiB3KGgmJnRoaXM9PT1vP3o6dGhpcyxvMSl9fSkscChwLlMrcC5GKiEocDEmJmwoNTcpKGZ1bmN0aW9uKEope3ouYWxsKEopLmNhdGNoKGExKX0pKSxOLHthbGw6''@;'; put 'put ''ZnVuY3Rpb24obzEpe3ZhciBNMT10aGlzLGIxPWgxKE0xKSxCMT1iMS5yZXNvbHZlLCQ9YjEucmVqZWN0LFI9eChmdW5jdGlvbigpe3ZhciBaPVtdLEQ9MCx5PTE7VihvMSwhMSxmdW5jdGlvbihUKXt2YXIgUD1EKyssdDE9ITE7Wi5wdXNoKGspLHkrKyxNMS5yZXNvbHZlKFQpLnRoZW4oZnVu''@;'; put 'put ''Y3Rpb24oczEpe3QxfHwodDE9ITAsWltQXT1zMSwtLXl8fEIxKFopKX0sJCl9KSwtLXl8fEIxKFopfSk7cmV0dXJuIFIuZSYmJChSLnYpLGIxLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24obzEpe3ZhciBNMT10aGlzLGIxPWgxKE0xKSxCMT1iMS5yZWplY3QsJD14KGZ1bmN0aW9uKCl7VihvMSwh''@;'; put 'put ''MSxmdW5jdGlvbihSKXtNMS5yZXNvbHZlKFIpLnRoZW4oYjEucmVzb2x2ZSxCMSl9KX0pO3JldHVybiAkLmUmJkIxKCQudiksYjEucHJvbWlzZX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTIwKSxhPWwoNDIpLGM9IldlYWtTZXQiO2woNjEpKGMsZnVuY3Rpb24obyl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIG8odGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmspfX0se2FkZDpmdW5jdGlvbihoKXtyZXR1cm4gci5kZWYoYSh0aGlzLGMpLGgsITApfX0sciwhMSwhMCl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMCksYz1sKDEpLG89KGwo''@;'; put 'put ''MikuUmVmbGVjdHx8e30pLmFwcGx5LGg9RnVuY3Rpb24uYXBwbHk7cihyLlMrci5GKiFsKDMpKGZ1bmN0aW9uKCl7byhmdW5jdGlvbigpe30pfSksIlJlZmxlY3QiLHthcHBseTpmdW5jdGlvbihnLHUscCl7dmFyIHY9YShnKSxIPWMocCk7cmV0dXJuIG8/byh2LHUsSCk6aC5jYWxsKHYsdSxI''@;'; put 'put ''KX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDM2KSxjPWwoMTApLG89bCgxKSxoPWwoNCksZj1sKDMpLGc9bCgxMDApLHU9KGwoMikuUmVmbGVjdHx8e30pLmNvbnN0cnVjdCxwPWYoZnVuY3Rpb24oKXtmdW5jdGlvbiBIKCl7fXJldHVybiEodShmdW5jdGlvbigpe30sW10s''@;'; put 'put ''SClpbnN0YW5jZW9mIEgpfSksdj0hZihmdW5jdGlvbigpe3UoZnVuY3Rpb24oKXt9KX0pO3Ioci5TK3IuRioocHx8diksIlJlZmxlY3QiLHtjb25zdHJ1Y3Q6ZnVuY3Rpb24oQyxWKXtjKEMpLG8oVik7dmFyIFM9YXJndW1lbnRzLmxlbmd0aDwzP0M6Yyhhcmd1bWVudHNbMl0pO2lmKHYmJiFw''@;'; put 'put ''KXJldHVybiB1KEMsVixTKTtpZihDPT1TKXtzd2l0Y2goVi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IEM7Y2FzZSAxOnJldHVybiBuZXcgQyhWWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBDKFZbMF0sVlsxXSk7Y2FzZSAzOnJldHVybiBuZXcgQyhWWzBdLFZbMV0sVlsyXSk7Y2FzZSA0OnJl''@;'; put 'put ''dHVybiBuZXcgQyhWWzBdLFZbMV0sVlsyXSxWWzNdKX12YXIgXz1bbnVsbF07cmV0dXJuIF8ucHVzaC5hcHBseShfLFYpLG5ldyhnLmFwcGx5KEMsXykpfXZhciBiPVMucHJvdG90eXBlLE09YShoKGIpP2I6T2JqZWN0LnByb3RvdHlwZSkseD1GdW5jdGlvbi5hcHBseS5jYWxsKEMsTSxWKTty''@;'; put 'put ''ZXR1cm4gaCh4KT94Ok19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLGE9bCgwKSxjPWwoMSksbz1sKDIyKTthKGEuUythLkYqbCgzKShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkoci5mKHt9LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSwiUmVmbGVjdCIse2Rl''@;'; put 'put ''ZmluZVByb3BlcnR5OmZ1bmN0aW9uKGYsZyx1KXtjKGYpLGc9byhnLCEwKSxjKHUpO3RyeXtyZXR1cm4gci5mKGYsZyx1KSwhMH1jYXRjaChwKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxNikuZixjPWwoMSk7cihyLlMsIlJlZmxlY3QiLHtkZWxldGVQ''@;'; put 'put ''cm9wZXJ0eTpmdW5jdGlvbihoLGYpe3ZhciBnPWEoYyhoKSxmKTtyZXR1cm4hKGcmJiFnLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSBoW2ZdfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMSksYz1mdW5jdGlvbihvKXt0aGlzLl90PWEobyksdGhpcy5faT0wO3ZhciBoLGY9dGhp''@;'; put 'put ''cy5faz1bXTtmb3IoaCBpbiBvKWYucHVzaChoKX07bCg4MCkoYywiT2JqZWN0IixmdW5jdGlvbigpe3ZhciBvLGg9dGhpcy5faztkb3tpZihoLmxlbmd0aDw9dGhpcy5faSlyZXR1cm57dmFsdWU6ayxkb25lOiEwfX13aGlsZSghKChvPWhbdGhpcy5faSsrXSlpbiB0aGlzLl90KSk7cmV0dXJu''@;'; put 'put ''e3ZhbHVlOm8sZG9uZTohMX19KSxyKHIuUywiUmVmbGVjdCIse2VudW1lcmF0ZTpmdW5jdGlvbihoKXtyZXR1cm4gbmV3IGMoaCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE2KSxhPWwoMTcpLGM9bCgxNCksbz1sKDApLGg9bCg0KSxmPWwoMSk7byhvLlMsIlJlZmxlY3QiLHtnZXQ6''@;'; put 'put ''ZnVuY3Rpb24gZyh1LHApe3ZhciB2LEgsQz1hcmd1bWVudHMubGVuZ3RoPDM/dTphcmd1bWVudHNbMl07cmV0dXJuIGYodSk9PT1DP3VbcF06KHY9ci5mKHUscCkpP2ModiwidmFsdWUiKT92LnZhbHVlOnYuZ2V0IT09az92LmdldC5jYWxsKEMpOms6aChIPWEodSkpP2coSCxwLEMpOnZvaWQg''@;'; put 'put ''MH19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTYpLGE9bCgwKSxjPWwoMSk7YShhLlMsIlJlZmxlY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oaCxmKXtyZXR1cm4gci5mKGMoaCksZil9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxNyksYz1s''@;'; put 'put ''KDEpO3Ioci5TLCJSZWZsZWN0Iix7Z2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oaCl7cmV0dXJuIGEoYyhoKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJSZWZsZWN0Iix7aGFzOmZ1bmN0aW9uKGMsbyl7cmV0dXJuIG8gaW4gY319KX0sZnVuY3Rpb24oQSxlLGwpe3Zh''@;'; put 'put ''ciByPWwoMCksYT1sKDEpLGM9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHIuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbihoKXtyZXR1cm4gYShoKSwhY3x8YyhoKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIlJlZmxlY3QiLHtvd25LZXlzOmwoMTIxKX0p''@;'; put 'put ''fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMSksYz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cihyLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbihoKXthKGgpO3RyeXtyZXR1cm4gYyYmYyhoKSwhMH1jYXRjaChmKXtyZXR1cm4hMX19fSl9LGZ1bmN0''@;'; put 'put ''aW9uKEEsZSxsKXt2YXIgcj1sKDgpLGE9bCgxNiksYz1sKDE3KSxvPWwoMTQpLGg9bCgwKSxmPWwoMzIpLGc9bCgxKSx1PWwoNCk7aChoLlMsIlJlZmxlY3QiLHtzZXQ6ZnVuY3Rpb24gcCh2LEgsQyl7dmFyIFYsUyxfPWFyZ3VtZW50cy5sZW5ndGg8ND92OmFyZ3VtZW50c1szXSxiPWEuZihn''@;'; put 'put ''KHYpLEgpO2lmKCFiKXtpZih1KFM9Yyh2KSkpcmV0dXJuIHAoUyxILEMsXyk7Yj1mKDApfWlmKG8oYiwidmFsdWUiKSl7aWYoITE9PT1iLndyaXRhYmxlfHwhdShfKSlyZXR1cm4hMTtpZihWPWEuZihfLEgpKXtpZihWLmdldHx8Vi5zZXR8fCExPT09Vi53cml0YWJsZSlyZXR1cm4hMTtWLnZh''@;'; put 'put ''bHVlPUMsci5mKF8sSCxWKX1lbHNlIHIuZihfLEgsZigwLEMpKTtyZXR1cm4hMH1yZXR1cm4gYi5zZXQhPT1rJiYoYi5zZXQuY2FsbChfLEMpLCEwKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDcxKTthJiZyKHIuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0''@;'; put 'put ''aW9uKG8saCl7YS5jaGVjayhvLGgpO3RyeXtyZXR1cm4gYS5zZXQobyxoKSwhMH1jYXRjaChmKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJEYXRlIix7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LGZ1bmN0aW9u''@;'; put 'put ''KEEsZSxsKXt2YXIgcj1sKDApLGE9bCg5KSxjPWwoMjIpO3Ioci5QK3IuRipsKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9''@;'; put 'put ''KSwiRGF0ZSIse3RvSlNPTjpmdW5jdGlvbihoKXt2YXIgZj1hKHRoaXMpLGc9YyhmKTtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGd8fGlzRmluaXRlKGcpP2YudG9JU09TdHJpbmcoKTpudWxsfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMjUyKTtyKHIuUCtyLkYqKERhdGUu''@;'; put 'put ''cHJvdG90eXBlLnRvSVNPU3RyaW5nIT09YSksIkRhdGUiLHt0b0lTT1N0cmluZzphfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDMpLGE9RGF0ZS5wcm90b3R5cGUuZ2V0VGltZSxjPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nLG89ZnVuY3Rpb24oaCl7cmV0dXJuIDk8aD9oOiIwIito''@;'; put 'put ''fTtBLmV4cG9ydHM9cihmdW5jdGlvbigpe3JldHVybiIwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVoiIT1jLmNhbGwobmV3IERhdGUoLTUwMDAwMDAwMDAwMDAxKSl9KXx8IXIoZnVuY3Rpb24oKXtjLmNhbGwobmV3IERhdGUoTmFOKSl9KT9mdW5jdGlvbigpe2lmKCFpc0Zpbml0ZShhLmNhbGwo''@;'; put 'put ''dGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBmPXRoaXMsZz1mLmdldFVUQ0Z1bGxZZWFyKCksdT1mLmdldFVUQ01pbGxpc2Vjb25kcygpLHA9ZzwwPyItIjo5OTk5PGc/IisiOiIiO3JldHVybiBwKygiMDAwMDAiK01hdGguYWJzKGcpKS5zbGljZShw''@;'; put 'put ''Py02Oi00KSsiLSIrbyhmLmdldFVUQ01vbnRoKCkrMSkrIi0iK28oZi5nZXRVVENEYXRlKCkpKyJUIitvKGYuZ2V0VVRDSG91cnMoKSkrIjoiK28oZi5nZXRVVENNaW51dGVzKCkpKyI6IitvKGYuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKDk5PHU/dToiMCIrbyh1KSkrIloifTpjfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHI9RGF0ZS5wcm90b3R5cGUsYT0iSW52YWxpZCBEYXRlIixjPSJ0b1N0cmluZyIsbz1yW2NdLGg9ci5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPWEmJmwoMTIpKHIsYyxmdW5jdGlvbigpe3ZhciBnPWguY2FsbCh0aGlzKTtyZXR1cm4gZz09Zz9vLmNhbGwodGhpcyk6''@;'; put 'put ''YX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg1KSgidG9QcmltaXRpdmUiKSxhPURhdGUucHJvdG90eXBlO3IgaW4gYXx8bCgxMSkoYSxyLGwoMjU1KSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpLGE9bCgyMik7QS5leHBvcnRzPWZ1bmN0aW9uKGMpe2lmKCJzdHJpbmciIT09YyYm''@;'; put 'put ''Im51bWJlciIhPT1jJiYiZGVmYXVsdCIhPT1jKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0IGhpbnQiKTtyZXR1cm4gYShyKHRoaXMpLCJudW1iZXIiIT1jKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg2MiksYz1sKDkyKSxvPWwoMSksaD1sKDM1KSxmPWwoNiksZz1sKDQp''@;'; put 'put ''LHU9bCgyKS5BcnJheUJ1ZmZlcixwPWwoNTEpLHY9Yy5BcnJheUJ1ZmZlcixIPWMuRGF0YVZpZXcsQz1hLkFCViYmdS5pc1ZpZXcsVj12LnByb3RvdHlwZS5zbGljZSxTPWEuVklFVyxfPSJBcnJheUJ1ZmZlciI7cihyLkcrci5XK3IuRioodSE9PXYpLHtBcnJheUJ1ZmZlcjp2fSkscihyLlMr''@;'; put 'put ''ci5GKiFhLkNPTlNUUixfLHtpc1ZpZXc6ZnVuY3Rpb24oTSl7cmV0dXJuIEMmJkMoTSl8fGcoTSkmJlMgaW4gTX19KSxyKHIuUCtyLlUrci5GKmwoMykoZnVuY3Rpb24oKXtyZXR1cm4hbmV3IHYoMikuc2xpY2UoMSxrKS5ieXRlTGVuZ3RofSksXyx7c2xpY2U6ZnVuY3Rpb24oTSx4KXtpZihW''@;'; put 'put ''IT09ayYmeD09PWspcmV0dXJuIFYuY2FsbChvKHRoaXMpLE0pO2Zvcih2YXIgRT1vKHRoaXMpLmJ5dGVMZW5ndGgsdz1oKE0sRSksTj1oKHg9PT1rP0U6eCxFKSxJPW5ldyhwKHRoaXMsdikpKGYoTi13KSksVz1uZXcgSCh0aGlzKSxPPW5ldyBIKEkpLEI9MDt3PE47KU8uc2V0VWludDgoQisr''@;'; put 'put ''LFcuZ2V0VWludDgodysrKSk7cmV0dXJuIEl9fSksbCgzOCkoXyl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5HK3IuVytyLkYqIWwoNjIpLkFCVix7RGF0YVZpZXc6bCg5MikuRGF0YVZpZXd9KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJJbnQ4IiwxLGZ1bmN0aW9uKHIpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDI3KSgiVWludDgiLDEsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gcih0aGlzLGMsbyxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJVaW50''@;'; put 'put ''OCIsMSxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oYyxvLGgpe3JldHVybiByKHRoaXMsYyxvLGgpfX0sITApfSxmdW5jdGlvbihBLGUsbCl7bCgyNykoIkludDE2IiwyLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0''@;'; put 'put ''aW9uKEEsZSxsKXtsKDI3KSgiVWludDE2IiwyLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDI3KSgiSW50MzIiLDQsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gcih0''@;'; put 'put ''aGlzLGMsbyxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJVaW50MzIiLDQsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gcih0aGlzLGMsbyxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJGbG9hdDMyIiw0LGZ1bmN0aW9uKHIpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDI3KSgiRmxvYXQ2NCIsOCxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oYyxvLGgpe3JldHVybiByKHRoaXMsYyxvLGgpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoNTIp''@;'; put 'put ''KCEwKTtyKHIuUCwiQXJyYXkiLHtpbmNsdWRlczpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8sMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX19KSxsKDMxKSgiaW5jbHVkZXMiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEyMyksYz1sKDkpLG89bCg2KSxo''@;'; put 'put ''PWwoMTApLGY9bCg4NCk7cihyLlAsIkFycmF5Iix7ZmxhdE1hcDpmdW5jdGlvbih1KXt2YXIgcCx2LEg9Yyh0aGlzKTtyZXR1cm4gaCh1KSxwPW8oSC5sZW5ndGgpLHY9ZihILDApLGEodixILEgscCwwLDEsdSxhcmd1bWVudHNbMV0pLHZ9fSksbCgzMSkoImZsYXRNYXAiKX0sZnVuY3Rpb24o''@;'; put 'put ''QSxlLGwpe3ZhciByPWwoMCksYT1sKDEyMyksYz1sKDkpLG89bCg2KSxoPWwoMjApLGY9bCg4NCk7cihyLlAsIkFycmF5Iix7ZmxhdHRlbjpmdW5jdGlvbigpe3ZhciB1PWFyZ3VtZW50c1swXSxwPWModGhpcyksdj1vKHAubGVuZ3RoKSxIPWYocCwwKTtyZXR1cm4gYShILHAscCx2LDAsdT09''@;'; put 'put ''PWs/MTpoKHUpKSxIfX0pLGwoMzEpKCJmbGF0dGVuIil9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg1NSkoITApO3Ioci5QLCJTdHJpbmciLHthdDpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTI0KSxjPWwo''@;'; put 'put ''NjApLG89L1ZlcnNpb25cLzEwXC5cZCsoXC5cZCspPyggTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChjKTtyKHIuUCtyLkYqbywiU3RyaW5nIix7cGFkU3RhcnQ6ZnVuY3Rpb24oZil7cmV0dXJuIGEodGhpcyxmLDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06aywhMCl9fSl9''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMjQpLGM9bCg2MCksbz0vVmVyc2lvblwvMTBcLlxkKyhcLlxkKyk/KCBNb2JpbGVcL1x3Kyk/IFNhZmFyaVwvLy50ZXN0KGMpO3Ioci5QK3IuRipvLCJTdHJpbmciLHtwYWRFbmQ6ZnVuY3Rpb24oZil7cmV0dXJuIGEodGhpcyxmLDE8''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06aywhMSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDQ1KSgidHJpbUxlZnQiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsMSl9fSwidHJpbVN0YXJ0Iil9LGZ1bmN0aW9uKEEsZSxsKXtsKDQ1KSgidHJpbVJp''@;'; put 'put ''Z2h0IixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLDIpfX0sInRyaW1FbmQiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDIzKSxjPWwoNiksbz1sKDU2KSxoPWwoNTApLGY9UmVnRXhwLnByb3RvdHlwZSxnPWZ1bmN0aW9uKHUscCl7dGhpcy5f''@;'; put 'put ''cj11LHRoaXMuX3M9cH07bCg4MCkoZywiUmVnRXhwIFN0cmluZyIsZnVuY3Rpb24oKXt2YXIgcD10aGlzLl9yLmV4ZWModGhpcy5fcyk7cmV0dXJue3ZhbHVlOnAsZG9uZTpudWxsPT09cH19KSxyKHIuUCwiU3RyaW5nIix7bWF0Y2hBbGw6ZnVuY3Rpb24ocCl7aWYoYSh0aGlzKSwhbyhwKSl0''@;'; put 'put ''aHJvdyBUeXBlRXJyb3IocCsiIGlzIG5vdCBhIHJlZ2V4cCEiKTt2YXIgdj1TdHJpbmcodGhpcyksSD0iZmxhZ3MiaW4gZj9TdHJpbmcocC5mbGFncyk6aC5jYWxsKHApLEM9bmV3IFJlZ0V4cChwLnNvdXJjZSx+SC5pbmRleE9mKCJnIik/SDoiZyIrSCk7cmV0dXJuIEMubGFzdEluZGV4PWMo''@;'; put 'put ''cC5sYXN0SW5kZXgpLG5ldyBnKEMsdil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDY3KSgiYXN5bmNJdGVyYXRvciIpfSxmdW5jdGlvbihBLGUsbCl7bCg2NykoIm9ic2VydmFibGUiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEyMSksYz1sKDE1KSxvPWwoMTYpLGg9bCg4Mik7''@;'; put 'put ''cihyLlMsIk9iamVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcnM6ZnVuY3Rpb24oZyl7Zm9yKHZhciB1LHAsdj1jKGcpLEg9by5mLEM9YSh2KSxWPXt9LFM9MDtTPEMubGVuZ3RoOykocD1IKHYsdT1DW1MrK10pKSE9PWsmJmgoVix1LHApO3JldHVybiBWfX0pfSxmdW5jdGlvbihBLGUs''@;'; put 'put ''bCl7dmFyIHI9bCgwKSxhPWwoMTI1KSghMSk7cihyLlMsIk9iamVjdCIse3ZhbHVlczpmdW5jdGlvbihvKXtyZXR1cm4gYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEyNSkoITApO3Ioci5TLCJPYmplY3QiLHtlbnRyaWVzOmZ1bmN0aW9uKG8pe3JldHVybiBhKG8p''@;'; put 'put ''fX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDEwKSxvPWwoOCk7bCg3KSYmcihyLlArbCg2MyksIk9iamVjdCIse19fZGVmaW5lR2V0dGVyX186ZnVuY3Rpb24oZixnKXtvLmYoYSh0aGlzKSxmLHtnZXQ6YyhnKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MH0pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDEwKSxvPWwoOCk7bCg3KSYmcihyLlArbCg2MyksIk9iamVjdCIse19fZGVmaW5lU2V0dGVyX186ZnVuY3Rpb24oZixnKXtvLmYoYSh0aGlzKSxmLHtzZXQ6YyhnKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs''@;'; put 'put ''ZTohMH0pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDIyKSxvPWwoMTcpLGg9bCgxNikuZjtsKDcpJiZyKHIuUCtsKDYzKSwiT2JqZWN0Iix7X19sb29rdXBHZXR0ZXJfXzpmdW5jdGlvbihnKXt2YXIgdSxwPWEodGhpcyksdj1jKGcsITApO2Rve2lmKHU9aChw''@;'; put 'put ''LHYpKXJldHVybiB1LmdldH13aGlsZShwPW8ocCkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDIyKSxvPWwoMTcpLGg9bCgxNikuZjtsKDcpJiZyKHIuUCtsKDYzKSwiT2JqZWN0Iix7X19sb29rdXBTZXR0ZXJfXzpmdW5jdGlvbihnKXt2YXIgdSxwPWEodGhp''@;'; put 'put ''cyksdj1jKGcsITApO2Rve2lmKHU9aChwLHYpKXJldHVybiB1LnNldH13aGlsZShwPW8ocCkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUCtyLlIsIk1hcCIse3RvSlNPTjpsKDEyNikoIk1hcCIpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5QK3IuUiwi''@;'; put 'put ''U2V0Iix7dG9KU09OOmwoMTI2KSgiU2V0Iil9KX0sZnVuY3Rpb24oQSxlLGwpe2woNjQpKCJNYXAiKX0sZnVuY3Rpb24oQSxlLGwpe2woNjQpKCJTZXQiKX0sZnVuY3Rpb24oQSxlLGwpe2woNjQpKCJXZWFrTWFwIil9LGZ1bmN0aW9uKEEsZSxsKXtsKDY0KSgiV2Vha1NldCIpfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7bCg2NSkoIk1hcCIpfSxmdW5jdGlvbihBLGUsbCl7bCg2NSkoIlNldCIpfSxmdW5jdGlvbihBLGUsbCl7bCg2NSkoIldlYWtNYXAiKX0sZnVuY3Rpb24oQSxlLGwpe2woNjUpKCJXZWFrU2V0Iil9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5HLHtnbG9iYWw6bCgy''@;'; put 'put ''KX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiU3lzdGVtIix7Z2xvYmFsOmwoMil9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDE5KTtyKHIuUywiRXJyb3IiLHtpc0Vycm9yOmZ1bmN0aW9uKG8pe3JldHVybiJFcnJvciI9PT1hKG8pfX0pfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTWF0aCIse2NsYW1wOmZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gTWF0aC5taW4oaCxNYXRoLm1heChvLGMpKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtERUdfUEVSX1JBRDpNYXRoLlBJLzE4MH0pfSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPTE4MC9NYXRoLlBJO3Ioci5TLCJNYXRoIix7ZGVncmVlczpmdW5jdGlvbihvKXtyZXR1cm4gbyphfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTI4KSxjPWwoMTA3KTtyKHIuUywiTWF0aCIse2ZzY2FsZTpmdW5jdGlvbihoLGYs''@;'; put 'put ''Zyx1LHApe3JldHVybiBjKGEoaCxmLGcsdSxwKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7aWFkZGg6ZnVuY3Rpb24oYyxvLGgsZil7dmFyIGc9Yz4+PjAsdT1oPj4+MDtyZXR1cm4obz4+PjApKyhmPj4+MCkrKChnJnV8KGd8dSkmfihnK3U+Pj4wKSk+''@;'; put 'put ''Pj4zMSl8MH19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtpc3ViaDpmdW5jdGlvbihjLG8saCxmKXt2YXIgZz1jPj4+MCx1PWg+Pj4wO3JldHVybihvPj4+MCktKGY+Pj4wKS0oKH5nJnV8fihnXnUpJmctdT4+PjApPj4+MzEpfDB9fSl9LGZ1bmN0aW9uKEEs''@;'; put 'put ''ZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7aW11bGg6ZnVuY3Rpb24oYyxvKXt2YXIgaD0rYyxmPStvLGc9NjU1MzUmaCx1PTY1NTM1JmYscD1oPj4xNix2PWY+PjE2LEg9KHAqdT4+PjApKyhnKnU+Pj4xNik7cmV0dXJuIHAqdisoSD4+MTYpKygoZyp2Pj4+MCkrKDY1NTM1JkgpPj4x''@;'; put 'put ''Nil9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7UkFEX1BFUl9ERUc6MTgwL01hdGguUEl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1NYXRoLlBJLzE4MDtyKHIuUywiTWF0aCIse3JhZGlhbnM6ZnVuY3Rpb24obyl7cmV0dXJuIG8qYX19KX0s''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtzY2FsZTpsKDEyOCl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHt1bXVsaDpmdW5jdGlvbihjLG8pe3ZhciBoPStjLGY9K28sZz02NTUzNSZoLHU9NjU1MzUmZixwPWg+Pj4xNix2PWY+''@;'; put 'put ''Pj4xNixIPShwKnU+Pj4wKSsoZyp1Pj4+MTYpO3JldHVybiBwKnYrKEg+Pj4xNikrKChnKnY+Pj4wKSsoNjU1MzUmSCk+Pj4xNil9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7c2lnbmJpdDpmdW5jdGlvbihjKXtyZXR1cm4oYz0rYykhPWM/YzowPT1jPzEv''@;'; put 'put ''Yz09MS8wOjA8Y319KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDI2KSxjPWwoMiksbz1sKDUxKSxoPWwoMTE1KTtyKHIuUCtyLlIsIlByb21pc2UiLHtmaW5hbGx5OmZ1bmN0aW9uKGYpe3ZhciBnPW8odGhpcyxhLlByb21pc2V8fGMuUHJvbWlzZSksdT0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgZjtyZXR1cm4gdGhpcy50aGVuKHU/ZnVuY3Rpb24ocCl7cmV0dXJuIGgoZyxmKCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcH0pfTpmLHU/ZnVuY3Rpb24ocCl7cmV0dXJuIGgoZyxmKCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBwfSl9OmYpfX0pfSxmdW5jdGlvbihBLGUsbCl7''@;'; put 'put ''dmFyIHI9bCgwKSxhPWwoOTEpLGM9bCgxMTQpO3Ioci5TLCJQcm9taXNlIix7dHJ5OmZ1bmN0aW9uKG8pe3ZhciBoPWEuZih0aGlzKSxmPWMobyk7cmV0dXJuKGYuZT9oLnJlamVjdDpoLnJlc29sdmUpKGYudiksaC5wcm9taXNlfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1s''@;'; put 'put ''KDEpLGM9ci5rZXksbz1yLnNldDtyLmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24oZixnLHUscCl7byhmLGcsYSh1KSxjKHApKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjgpLGE9bCgxKSxjPXIua2V5LG89ci5tYXAsaD1yLnN0b3JlO3IuZXhwKHtkZWxldGVNZXRhZGF0YTpm''@;'; put 'put ''dW5jdGlvbihnLHUpe3ZhciBwPWFyZ3VtZW50cy5sZW5ndGg8Mz9rOmMoYXJndW1lbnRzWzJdKSx2PW8oYSh1KSxwLCExKTtpZih2PT09a3x8IXYuZGVsZXRlKGcpKXJldHVybiExO2lmKHYuc2l6ZSlyZXR1cm4hMDt2YXIgSD1oLmdldCh1KTtyZXR1cm4gSC5kZWxldGUocCksISFILnNpemV8''@;'; put 'put ''fGguZGVsZXRlKHUpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9bCgxNyksbz1yLmhhcyxoPXIuZ2V0LGY9ci5rZXksZz1mdW5jdGlvbih1LHAsdil7aWYobyh1LHAsdikpcmV0dXJuIGgodSxwLHYpO3ZhciBIPWMocCk7cmV0dXJuIG51bGwhPT1IP2codSxILHYp''@;'; put 'put ''Omt9O3IuZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbihwLHYpe3JldHVybiBnKHAsYSh2KSxhcmd1bWVudHMubGVuZ3RoPDM/azpmKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxMTgpLGE9bCgxMjcpLGM9bCgyOCksbz1sKDEpLGg9bCgxNyksZj1jLmtleXMs''@;'; put 'put ''Zz1jLmtleSx1PWZ1bmN0aW9uKHAsdil7dmFyIEg9ZihwLHYpLEM9aChwKTtpZihudWxsPT09QylyZXR1cm4gSDt2YXIgVj11KEMsdik7cmV0dXJuIFYubGVuZ3RoP0gubGVuZ3RoP2EobmV3IHIoSC5jb25jYXQoVikpKTpWOkh9O2MuZXhwKHtnZXRNZXRhZGF0YUtleXM6ZnVuY3Rpb24odil7''@;'; put 'put ''cmV0dXJuIHUobyh2KSxhcmd1bWVudHMubGVuZ3RoPDI/azpnKGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9ci5nZXQsbz1yLmtleTtyLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24oZixnKXtyZXR1cm4gYyhmLGEoZyksYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aDwzP2s6byhhcmd1bWVudHNbMl0pKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjgpLGE9bCgxKSxjPXIua2V5cyxvPXIua2V5O3IuZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6ZnVuY3Rpb24oZil7cmV0dXJuIGMoYShmKSxhcmd1bWVudHMubGVuZ3RoPDI/azpvKGFy''@;'; put 'put ''Z3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9bCgxNyksbz1yLmhhcyxoPXIua2V5LGY9ZnVuY3Rpb24oZyx1LHApe2lmKG8oZyx1LHApKXJldHVybiEwO3ZhciB2PWModSk7cmV0dXJuIG51bGwhPT12JiZmKGcsdixwKX07ci5leHAoe2hhc01l''@;'; put 'put ''dGFkYXRhOmZ1bmN0aW9uKHUscCl7cmV0dXJuIGYodSxhKHApLGFyZ3VtZW50cy5sZW5ndGg8Mz9rOmgoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDI4KSxhPWwoMSksYz1yLmhhcyxvPXIua2V5O3IuZXhwKHtoYXNPd25NZXRhZGF0YTpmdW5jdGlvbihmLGcp''@;'; put 'put ''e3JldHVybiBjKGYsYShnKSxhcmd1bWVudHMubGVuZ3RoPDM/azpvKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9bCgxMCksbz1yLmtleSxoPXIuc2V0O3IuZXhwKHttZXRhZGF0YTpmdW5jdGlvbihnLHUpe3JldHVybiBmdW5jdGlvbih2''@;'; put 'put ''LEgpe2goZyx1LChIIT09az9hOmMpKHYpLG8oSCkpfX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDkwKSgpLGM9bCgyKS5wcm9jZXNzLG89InByb2Nlc3MiPT1sKDE5KShjKTtyKHIuRyx7YXNhcDpmdW5jdGlvbihmKXt2YXIgZz1vJiZjLmRvbWFpbjthKGc/Zy5iaW5kKGYp''@;'; put 'put ''OmYpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMiksYz1sKDI2KSxvPWwoOTApKCksaD1sKDUpKCJvYnNlcnZhYmxlIiksZj1sKDEwKSxnPWwoMSksdT1sKDM5KSxwPWwoNDEpLHY9bCgxMSksSD1sKDQwKSxDPUguUkVUVVJOLFY9ZnVuY3Rpb24odyl7cmV0dXJuIG51bGw9''@;'; put 'put ''PXc/azpmKHcpfSxTPWZ1bmN0aW9uKHcpe3ZhciBOPXcuX2M7TiYmKHcuX2M9ayxOKCkpfSxfPWZ1bmN0aW9uKHcpe3JldHVybiB3Ll9vPT09a30sYj1mdW5jdGlvbih3KXtfKHcpfHwody5fbz1rLFModykpfSxNPWZ1bmN0aW9uKHcsTil7Zyh3KSx0aGlzLl9jPWssdGhpcy5fbz13LHc9bmV3''@;'; put 'put ''IHgodGhpcyk7dHJ5e3ZhciBJPU4odyksVz1JO251bGwhPUkmJigiZnVuY3Rpb24iPT10eXBlb2YgSS51bnN1YnNjcmliZT9JPWZ1bmN0aW9uKCl7Vy51bnN1YnNjcmliZSgpfTpmKEkpLHRoaXMuX2M9SSl9Y2F0Y2goTyl7cmV0dXJuIHZvaWQgdy5lcnJvcihPKX1fKHRoaXMpJiZTKHRoaXMp''@;'; put 'put ''fTtNLnByb3RvdHlwZT1wKHt9LHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe2IodGhpcyl9fSk7dmFyIHg9ZnVuY3Rpb24odyl7dGhpcy5fcz13fTt4LnByb3RvdHlwZT1wKHt9LHtuZXh0OmZ1bmN0aW9uKE4pe3ZhciBJPXRoaXMuX3M7aWYoIV8oSSkpe3ZhciBXPUkuX287dHJ5e3ZhciBPPVYo''@;'; put 'put ''Vy5uZXh0KTtpZihPKXJldHVybiBPLmNhbGwoVyxOKX1jYXRjaChCKXt0cnl7YihJKX1maW5hbGx5e3Rocm93IEJ9fX19LGVycm9yOmZ1bmN0aW9uKE4pe3ZhciBJPXRoaXMuX3M7aWYoXyhJKSl0aHJvdyBOO3ZhciBXPUkuX287SS5fbz1rO3RyeXt2YXIgTz1WKFcuZXJyb3IpO2lmKCFPKXRo''@;'; put 'put ''cm93IE47Tj1PLmNhbGwoVyxOKX1jYXRjaChCKXt0cnl7UyhJKX1maW5hbGx5e3Rocm93IEJ9fXJldHVybiBTKEkpLE59LGNvbXBsZXRlOmZ1bmN0aW9uKE4pe3ZhciBJPXRoaXMuX3M7aWYoIV8oSSkpe3ZhciBXPUkuX287SS5fbz1rO3RyeXt2YXIgTz1WKFcuY29tcGxldGUpO049Tz9PLmNh''@;'; put 'put ''bGwoVyxOKTprfWNhdGNoKEIpe3RyeXtTKEkpfWZpbmFsbHl7dGhyb3cgQn19cmV0dXJuIFMoSSksTn19fSk7dmFyIEU9ZnVuY3Rpb24oTil7dSh0aGlzLEUsIk9ic2VydmFibGUiLCJfZiIpLl9mPWYoTil9O3AoRS5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbihOKXtyZXR1cm4gbmV3''@;'; put 'put ''IE0oTix0aGlzLl9mKX0sZm9yRWFjaDpmdW5jdGlvbihOKXt2YXIgST10aGlzO3JldHVybiBuZXcoYy5Qcm9taXNlfHxhLlByb21pc2UpKGZ1bmN0aW9uKFcsTyl7ZihOKTt2YXIgQj1JLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih6KXt0cnl7cmV0dXJuIE4oeil9Y2F0Y2gobDEpe08obDEp''@;'; put 'put ''LEIudW5zdWJzY3JpYmUoKX19LGVycm9yOk8sY29tcGxldGU6V30pfSl9fSkscChFLHtmcm9tOmZ1bmN0aW9uKE4pe3ZhciBJPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6RSxXPVYoZyhOKVtoXSk7aWYoVyl7dmFyIE89ZyhXLmNhbGwoTikpO3JldHVybiBPLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''ST9POm5ldyBJKGZ1bmN0aW9uKEIpe3JldHVybiBPLnN1YnNjcmliZShCKX0pfXJldHVybiBuZXcgSShmdW5jdGlvbihCKXt2YXIgej0hMTtyZXR1cm4gbyhmdW5jdGlvbigpe2lmKCF6KXt0cnl7aWYoSChOLCExLGZ1bmN0aW9uKGwxKXtpZihCLm5leHQobDEpLHopcmV0dXJuIEN9KT09PUMp''@;'; put 'put ''cmV0dXJufWNhdGNoKGwxKXtpZih6KXRocm93IGwxO3JldHVybiB2b2lkIEIuZXJyb3IobDEpfUIuY29tcGxldGUoKX19KSxmdW5jdGlvbigpe3o9ITB9fSl9LG9mOmZ1bmN0aW9uKCl7Zm9yKHZhciBOPTAsST1hcmd1bWVudHMubGVuZ3RoLFc9bmV3IEFycmF5KEkpO048STspV1tOXT1hcmd1''@;'; put 'put ''bWVudHNbTisrXTtyZXR1cm4gbmV3KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6RSkoZnVuY3Rpb24oTyl7dmFyIEI9ITE7cmV0dXJuIG8oZnVuY3Rpb24oKXtpZighQil7Zm9yKHZhciB6PTA7ejxXLmxlbmd0aDsrK3opaWYoTy5uZXh0KFdbel0pLEIpcmV0dXJuO08uY29tcGxldGUo''@;'; put 'put ''KX19KSxmdW5jdGlvbigpe0I9ITB9fSl9fSksdihFLnByb3RvdHlwZSxoLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyKHIuRyx7T2JzZXJ2YWJsZTpFfSksbCgzOCkoIk9ic2VydmFibGUiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDg5KTtyKHIuRytyLkIse3NldEltbWVk''@;'; put 'put ''aWF0ZTphLnNldCxjbGVhckltbWVkaWF0ZTphLmNsZWFyfSl9LGZ1bmN0aW9uKEEsZSxsKXtmb3IodmFyIHI9bCg4NiksYT1sKDM0KSxjPWwoMTIpLG89bCgyKSxoPWwoMTEpLGY9bCg0NiksZz1sKDUpLHU9ZygiaXRlcmF0b3IiKSxwPWcoInRvU3RyaW5nVGFnIiksdj1mLkFycmF5LEg9e0NT''@;'; put 'put ''U1J1bGVMaXN0OiEwLENTU1N0eWxlRGVjbGFyYXRpb246ITEsQ1NTVmFsdWVMaXN0OiExLENsaWVudFJlY3RMaXN0OiExLERPTVJlY3RMaXN0OiExLERPTVN0cmluZ0xpc3Q6ITEsRE9NVG9rZW5MaXN0OiEwLERhdGFUcmFuc2Zlckl0ZW1MaXN0OiExLEZpbGVMaXN0OiExLEhUTUxBbGxDb2xs''@;'; put 'put ''ZWN0aW9uOiExLEhUTUxDb2xsZWN0aW9uOiExLEhUTUxGb3JtRWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxNZWRpYUxpc3Q6ITAsTWltZVR5cGVBcnJheTohMSxOYW1lZE5vZGVNYXA6ITEsTm9kZUxpc3Q6ITAsUGFpbnRSZXF1ZXN0TGlzdDohMSxQbHVnaW46ITEsUGx1Z2luQXJy''@;'; put 'put ''YXk6ITEsU1ZHTGVuZ3RoTGlzdDohMSxTVkdOdW1iZXJMaXN0OiExLFNWR1BhdGhTZWdMaXN0OiExLFNWR1BvaW50TGlzdDohMSxTVkdTdHJpbmdMaXN0OiExLFNWR1RyYW5zZm9ybUxpc3Q6ITEsU291cmNlQnVmZmVyTGlzdDohMSxTdHlsZVNoZWV0TGlzdDohMCxUZXh0VHJhY2tDdWVMaXN0''@;'; put 'put ''OiExLFRleHRUcmFja0xpc3Q6ITEsVG91Y2hMaXN0OiExfSxDPWEoSCksVj0wO1Y8Qy5sZW5ndGg7VisrKXt2YXIgUyxfPUNbVl0sYj1IW19dLE09b1tfXSx4PU0mJk0ucHJvdG90eXBlO2lmKHgmJih4W3VdfHxoKHgsdSx2KSx4W3BdfHxoKHgscCxfKSxmW19dPXYsYikpZm9yKFMgaW4gcil4''@;'; put 'put ''W1NdfHxjKHgsUyxyW1NdLCEwKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIpLGE9bCgwKSxjPWwoNjApLG89W10uc2xpY2UsaD0vTVNJRSAuXC4vLnRlc3QoYyksZj1mdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24odSxwKXt2YXIgdj0yPGFyZ3VtZW50cy5sZW5ndGgsSD0hIXYmJm8u''@;'; put 'put ''Y2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGcodj9mdW5jdGlvbigpeygiZnVuY3Rpb24iPT10eXBlb2YgdT91OkZ1bmN0aW9uKHUpKS5hcHBseSh0aGlzLEgpfTp1LHApfX07YShhLkcrYS5CK2EuRipoLHtzZXRUaW1lb3V0OmYoci5zZXRUaW1lb3V0KSxzZXRJbnRlcnZhbDpmKHIuc2V0SW50''@;'; put 'put ''ZXJ2YWwpfSl9XSksInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPVg6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gWH0pOkYxLmNvcmU9WH0pKDEsMSksd2luZG93Lk11''@;'; put 'put ''dGF0aW9uT2JzZXJ2ZXJ8fCh3aW5kb3cuTXV0YXRpb25PYnNlcnZlcj1mdW5jdGlvbihYKXtmdW5jdGlvbiBGMShDKXt0aGlzLmk9W10sdGhpcy5tPUN9ZnVuY3Rpb24gQShDKXt2YXIgUyxWPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsYWRkZWROb2RlczpbXSxyZW1vdmVkTm9kZXM6W10scHJl''@;'; put 'put ''dmlvdXNTaWJsaW5nOm51bGwsbmV4dFNpYmxpbmc6bnVsbCxhdHRyaWJ1dGVOYW1lOm51bGwsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwsb2xkVmFsdWU6bnVsbH07Zm9yKFMgaW4gQylWW1NdIT09WCYmQ1tTXSE9PVgmJihWW1NdPUNbU10pO3JldHVybiBWfWZ1bmN0aW9uIGUoQyxWKXt2YXIg''@;'; put 'put ''Uz1vKEMsVik7cmV0dXJuIGZ1bmN0aW9uKF8pe3ZhciBiPV8ubGVuZ3RoO2lmKFYuYSYmMz09PUMubm9kZVR5cGUmJkMubm9kZVZhbHVlIT09Uy5hJiZfLnB1c2gobmV3IEEoe3R5cGU6ImNoYXJhY3RlckRhdGEiLHRhcmdldDpDLG9sZFZhbHVlOlMuYX0pKSxWLmImJlMuYiYmYShfLEMsUy5i''@;'; put 'put ''LFYuZiksVi5jfHxWLmcpdmFyIE09ZnVuY3Rpb24gYyhDLFYsUyxfKXtmdW5jdGlvbiBiKEUsdyxOLEksVyl7dmFyIEIseixsMSxPPUUubGVuZ3RoLTE7Zm9yKFc9LX4oKE8tVykvMik7bDE9RS5wb3AoKTspQj1OW2wxLmpdLHo9SVtsMS5sXSxfLmMmJlcmJk1hdGguYWJzKGwxLmotbDEubCk+''@;'; put 'put ''PU8mJihDLnB1c2goQSh7dHlwZToiY2hpbGRMaXN0Iix0YXJnZXQ6dyxhZGRlZE5vZGVzOltCXSxyZW1vdmVkTm9kZXM6W0JdLG5leHRTaWJsaW5nOkIubmV4dFNpYmxpbmcscHJldmlvdXNTaWJsaW5nOkIucHJldmlvdXNTaWJsaW5nfSkpLFctLSksXy5iJiZ6LmImJmEoQyxCLHouYixfLmYp''@;'; put 'put ''LF8uYSYmMz09PUIubm9kZVR5cGUmJkIubm9kZVZhbHVlIT09ei5hJiZDLnB1c2goQSh7dHlwZToiY2hhcmFjdGVyRGF0YSIsdGFyZ2V0OkIsb2xkVmFsdWU6ei5hfSkpLF8uZyYmTShCLHopfWZ1bmN0aW9uIE0oRSx3KXtmb3IodmFyIEIseixsMSxhMSxoMSxOPUUuY2hpbGROb2RlcyxJPXcu''@;'; put 'put ''YyxXPU4ubGVuZ3RoLE89ST9JLmxlbmd0aDowLHAxPTAsZzE9MCxIMT0wO2cxPFd8fEgxPE87KShhMT1OW2cxXSk9PT0oaDE9KGwxPUlbSDFdKSYmbDEubm9kZSk/KF8uYiYmbDEuYiYmYShDLGExLGwxLmIsXy5mKSxfLmEmJmwxLmEhPT1YJiZhMS5ub2RlVmFsdWUhPT1sMS5hJiZDLnB1c2go''@;'; put 'put ''QSh7dHlwZToiY2hhcmFjdGVyRGF0YSIsdGFyZ2V0OmExLG9sZFZhbHVlOmwxLmF9KSkseiYmYih6LEUsTixJLHAxKSxfLmcmJihhMS5jaGlsZE5vZGVzLmxlbmd0aHx8bDEuYyYmbDEuYy5sZW5ndGgpJiZNKGExLGwxKSxnMSsrLEgxKyspOih4PSEwLEJ8fChCPXt9LHo9W10pLGExJiYoQlts''@;'; put 'put ''MT1oKGExKV18fChCW2wxXT0hMCwtMT09PShsMT11KEksYTEsSDEsIm5vZGUiKSk/Xy5jJiYoQy5wdXNoKEEoe3R5cGU6ImNoaWxkTGlzdCIsdGFyZ2V0OkUsYWRkZWROb2RlczpbYTFdLG5leHRTaWJsaW5nOmExLm5leHRTaWJsaW5nLHByZXZpb3VzU2libGluZzphMS5wcmV2aW91c1NpYmxp''@;'; put 'put ''bmd9KSkscDErKyk6ei5wdXNoKHtqOmcxLGw6bDF9KSksZzErKyksaDEmJmgxIT09TltnMV0mJihCW2wxPWgoaDEpXXx8KEJbbDFdPSEwLC0xPT09KGwxPXUoTixoMSxnMSkpP18uYyYmKEMucHVzaChBKHt0eXBlOiJjaGlsZExpc3QiLHRhcmdldDp3Lm5vZGUscmVtb3ZlZE5vZGVzOltoMV0s''@;'; put 'put ''bmV4dFNpYmxpbmc6SVtIMSsxXSxwcmV2aW91c1NpYmxpbmc6SVtIMS0xXX0pKSxwMS0tKTp6LnB1c2goe2o6bDEsbDpIMX0pKSxIMSsrKSk7eiYmYih6LEUsTixJLHAxKX12YXIgeDtyZXR1cm4gTShWLFMpLHh9KF8sQyxTLFYpOyhNfHxfLmxlbmd0aCE9PWIpJiYoUz1vKEMsVikpfX1mdW5j''@;'; put 'put ''dGlvbiBhKEMsVixTLF8pe2Zvcih2YXIgeCxFLGI9e30sTT1WLmF0dHJpYnV0ZXMsdz1NLmxlbmd0aDt3LS07KUU9KHg9TVt3XSkubmFtZSxfJiZfW0VdPT09WHx8KHYoVix4KSE9PVNbRV0mJkMucHVzaChBKHt0eXBlOiJhdHRyaWJ1dGVzIix0YXJnZXQ6VixhdHRyaWJ1dGVOYW1lOkUsb2xk''@;'; put 'put ''VmFsdWU6U1tFXSxhdHRyaWJ1dGVOYW1lc3BhY2U6eC5uYW1lc3BhY2VVUkl9KSksYltFXT0hMCk7Zm9yKEUgaW4gUyliW0VdfHxDLnB1c2goQSh7dGFyZ2V0OlYsdHlwZToiYXR0cmlidXRlcyIsYXR0cmlidXRlTmFtZTpFLG9sZFZhbHVlOlNbRV19KSl9ZnVuY3Rpb24gbyhDLFYpe3ZhciBT''@;'; put 'put ''PSEwO3JldHVybiBmdW5jdGlvbiBfKGIpe3ZhciBNPXtub2RlOmJ9O3JldHVybiFWLmF8fDMhPT1iLm5vZGVUeXBlJiY4IT09Yi5ub2RlVHlwZT8oVi5iJiZTJiYxPT09Yi5ub2RlVHlwZSYmKE0uYj1nKGIuYXR0cmlidXRlcyxmdW5jdGlvbih4LEUpe3JldHVybighVi5mfHxWLmZbRS5uYW1l''@;'; put 'put ''XSkmJih4W0UubmFtZV09dihiLEUpKSx4fSx7fSkpLFMmJihWLmN8fFYuYXx8Vi5iJiZWLmcpJiYoTS5jPWZ1bmN0aW9uIGYoQyxWKXtmb3IodmFyIFM9W10sXz0wO188Qy5sZW5ndGg7XysrKVNbX109VihDW19dLF8sQyk7cmV0dXJuIFN9KGIuY2hpbGROb2RlcyxfKSksUz1WLmcpOk0uYT1i''@;'; put 'put ''Lm5vZGVWYWx1ZSxNfShDKX1mdW5jdGlvbiBoKEMpe3RyeXtyZXR1cm4gQy5pZHx8KEMubW9faWQ9Qy5tb19pZHx8SCsrKX1jYXRjaChWKXt0cnl7cmV0dXJuIEMubm9kZVZhbHVlfWNhdGNoKFMpe3JldHVybiBIKyt9fX1mdW5jdGlvbiBnKEMsVixTKXtmb3IodmFyIF89MDtfPEMubGVuZ3Ro''@;'; put 'put ''O18rKylTPVYoUyxDW19dLF8sQyk7cmV0dXJuIFN9ZnVuY3Rpb24gdShDLFYsUyxfKXtmb3IoO1M8Qy5sZW5ndGg7UysrKWlmKChfP0NbU11bX106Q1tTXSk9PT1WKXJldHVybiBTO3JldHVybi0xfUYxLl9wZXJpb2Q9MzAsRjEucHJvdG90eXBlPXtvYnNlcnZlOmZ1bmN0aW9uKEMsVil7Zm9y''@;'; put 'put ''KHZhciBTPXtiOiEhKFYuYXR0cmlidXRlc3x8Vi5hdHRyaWJ1dGVGaWx0ZXJ8fFYuYXR0cmlidXRlT2xkVmFsdWUpLGM6ISFWLmNoaWxkTGlzdCxnOiEhVi5zdWJ0cmVlLGE6ISghVi5jaGFyYWN0ZXJEYXRhJiYhVi5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUpfSxfPXRoaXMuaSxiPTA7YjxfLmxl''@;'; put 'put ''bmd0aDtiKyspX1tiXS5zPT09QyYmXy5zcGxpY2UoYiwxKTtWLmF0dHJpYnV0ZUZpbHRlciYmKFMuZj1nKFYuYXR0cmlidXRlRmlsdGVyLGZ1bmN0aW9uKE0seCl7cmV0dXJuIE1beF09ITAsTX0se30pKSxfLnB1c2goe3M6QyxvOmUoQyxTKX0pLHRoaXMuaHx8ZnVuY3Rpb24gayhDKXshZnVu''@;'; put 'put ''Y3Rpb24gVigpe3ZhciBTPUMudGFrZVJlY29yZHMoKTtTLmxlbmd0aCYmQy5tKFMsQyksQy5oPXNldFRpbWVvdXQoVixGMS5fcGVyaW9kKX0oKX0odGhpcyl9LHRha2VSZWNvcmRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBDPVtdLFY9dGhpcy5pLFM9MDtTPFYubGVuZ3RoO1MrKylWW1NdLm8oQyk7''@;'; put 'put ''cmV0dXJuIEN9LGRpc2Nvbm5lY3Q6ZnVuY3Rpb24oKXt0aGlzLmk9W10sY2xlYXJUaW1lb3V0KHRoaXMuaCksdGhpcy5oPW51bGx9fTt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpIik7cC5zdHlsZS50b3A9MDt2YXIgdj0ocD0ibnVsbCIhPXAuYXR0cmlidXRlcy5zdHlsZS52YWx1''@;'; put 'put ''ZSk/ZnVuY3Rpb24gbChDLFYpe3JldHVybiBWLnZhbHVlfTpmdW5jdGlvbiByKEMsVil7cmV0dXJuInN0eWxlIiE9PVYubmFtZT9WLnZhbHVlOkMuc3R5bGUuY3NzVGV4dH0sSD0xO3JldHVybiBGMX0odm9pZCAwKSksZnVuY3Rpb24oKXt2YXIgayxBLFg9e30sRjE9e307KGZ1bmN0aW9uKGss''@;'; put 'put ''QSl7ZnVuY3Rpb24gbCgpe3RoaXMuX2RlbGF5PTAsdGhpcy5fZW5kRGVsYXk9MCx0aGlzLl9maWxsPSJub25lIix0aGlzLl9pdGVyYXRpb25TdGFydD0wLHRoaXMuX2l0ZXJhdGlvbnM9MSx0aGlzLl9kdXJhdGlvbj0wLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2RpcmVjdGlvbj0ibm9y''@;'; put 'put ''bWFsIix0aGlzLl9lYXNpbmc9ImxpbmVhciIsdGhpcy5fZWFzaW5nRnVuY3Rpb249d31mdW5jdGlvbiByKCl7cmV0dXJuIGsuaXNEZXByZWNhdGVkKCJJbnZhbGlkIHRpbWluZyBpbnB1dHMiLCIyMDE2LTAzLTAyIiwiVHlwZUVycm9yIGV4Y2VwdGlvbnMgd2lsbCBiZSB0aHJvd24gaW5zdGVh''@;'; put 'put ''ZC4iLCEwKX1mdW5jdGlvbiBhKGosbjEsbTEpe3ZhciBfMT1uZXcgbDtyZXR1cm4gbjEmJihfMS5maWxsPSJib3RoIixfMS5kdXJhdGlvbj0iYXV0byIpLCJudW1iZXIiIT10eXBlb2Yganx8aXNOYU4oaik/dm9pZCAwIT09aiYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaikuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihKKXtpZigiYXV0byIhPWpbSl0pe2lmKCgibnVtYmVyIj09dHlwZW9mIF8xW0pdfHwiZHVyYXRpb24iPT1KKSYmKCJudW1iZXIiIT10eXBlb2YgaltKXXx8aXNOYU4oaltKXSkpfHwiZmlsbCI9PUomJi0xPT14LmluZGV4T2YoaltKXSl8fCJkaXJlY3Rpb24iPT1KJiYtMT09''@;'; put 'put ''RS5pbmRleE9mKGpbSl0pfHwicGxheWJhY2tSYXRlIj09SiYmMSE9PWpbSl0mJmsuaXNEZXByZWNhdGVkKCJBbmltYXRpb25FZmZlY3RUaW1pbmcucGxheWJhY2tSYXRlIiwiMjAxNC0xMS0yOCIsIlVzZSBBbmltYXRpb24ucGxheWJhY2tSYXRlIGluc3RlYWQuIikpcmV0dXJuO18xW0pdPWpb''@;'; put 'put ''Sl19fSk6XzEuZHVyYXRpb249aixfMX1mdW5jdGlvbiBoKGosbjEsbTEsXzEpe3JldHVybiBqPDB8fGo+MXx8bTE8MHx8bTE+MT93OmZ1bmN0aW9uKEope2Z1bmN0aW9uIG8xKEQseSxUKXtyZXR1cm4gMypEKigxLVQpKigxLVQpKlQrMyp5KigxLVQpKlQqVCtUKlQqVH1pZihKPD0wKXt2YXIg''@;'; put 'put ''TTE9MDtyZXR1cm4gaj4wP00xPW4xL2o6IW4xJiZtMT4wJiYoTTE9XzEvbTEpLE0xKkp9aWYoSj49MSl7dmFyIGIxPTA7cmV0dXJuIG0xPDE/YjE9KF8xLTEpLyhtMS0xKToxPT1tMSYmajwxJiYoYjE9KG4xLTEpLyhqLTEpKSwxK2IxKihKLTEpfWZvcih2YXIgQjE9MCwkPTE7QjE8JDspe3Zh''@;'; put 'put ''ciBSPShCMSskKS8yLFo9bzEoaixtMSxSKTtpZihNYXRoLmFicyhKLVopPDFlLTUpcmV0dXJuIG8xKG4xLF8xLFIpO1o8Sj9CMT1SOiQ9Un1yZXR1cm4gbzEobjEsXzEsUil9fWZ1bmN0aW9uIGYoaixuMSl7cmV0dXJuIGZ1bmN0aW9uKG0xKXtpZihtMT49MSlyZXR1cm4gMTt2YXIgXzE9MS9q''@;'; put 'put ''O3JldHVybihtMSs9bjEqXzEpLW0xJV8xfX1mdW5jdGlvbiBnKGope0J8fChCPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlKSxCLmFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uPSIiLEIuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249ajt2YXIgbjE9Qi5hbmltYXRpb25UaW1pbmdG''@;'; put 'put ''dW5jdGlvbjtpZigiIj09bjEmJnIoKSl0aHJvdyBuZXcgVHlwZUVycm9yKGorIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgZWFzaW5nIik7cmV0dXJuIG4xfWZ1bmN0aW9uIHUoail7aWYoImxpbmVhciI9PWopcmV0dXJuIHc7dmFyIG4xPWwxLmV4ZWMoaik7aWYobjEpcmV0dXJuIGguYXBw''@;'; put 'put ''bHkodGhpcyxuMS5zbGljZSgxKS5tYXAoTnVtYmVyKSk7dmFyIG0xPWExLmV4ZWMoaik7aWYobTEpcmV0dXJuIGYoTnVtYmVyKG0xWzFdKSxXKTt2YXIgXzE9aDEuZXhlYyhqKTtyZXR1cm4gXzE/ZihOdW1iZXIoXzFbMV0pLHtzdGFydDpOLG1pZGRsZTpJLGVuZDpXfVtfMVsyXV0pOk9bal18''@;'; put 'put ''fHd9ZnVuY3Rpb24gSChqLG4xLG0xKXtpZihudWxsPT1uMSlyZXR1cm4gcDE7dmFyIF8xPW0xLmRlbGF5K2orbTEuZW5kRGVsYXk7cmV0dXJuIG4xPE1hdGgubWluKG0xLmRlbGF5LF8xKT9nMTpuMT49TWF0aC5taW4obTEuZGVsYXkraixfMSk/SDE6RDF9dmFyIHg9ImJhY2t3YXJkc3xmb3J3''@;'; put 'put ''YXJkc3xib3RofG5vbmUiLnNwbGl0KCJ8IiksRT0icmV2ZXJzZXxhbHRlcm5hdGV8YWx0ZXJuYXRlLXJldmVyc2UiLnNwbGl0KCJ8Iiksdz1mdW5jdGlvbihqKXtyZXR1cm4gan07bC5wcm90b3R5cGU9e19zZXRNZW1iZXI6ZnVuY3Rpb24oaixuMSl7dGhpc1siXyIral09bjEsdGhpcy5fZWZm''@;'; put 'put ''ZWN0JiYodGhpcy5fZWZmZWN0Ll90aW1pbmdJbnB1dFtqXT1uMSx0aGlzLl9lZmZlY3QuX3RpbWluZz1rLm5vcm1hbGl6ZVRpbWluZ0lucHV0KHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXQpLHRoaXMuX2VmZmVjdC5hY3RpdmVEdXJhdGlvbj1rLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRo''@;'; put 'put ''aXMuX2VmZmVjdC5fdGltaW5nKSx0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbiYmdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCkpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IGRlbGF5KGope3RoaXMu''@;'; put 'put ''X3NldE1lbWJlcigiZGVsYXkiLGopfSxnZXQgZGVsYXkoKXtyZXR1cm4gdGhpcy5fZGVsYXl9LHNldCBlbmREZWxheShqKXt0aGlzLl9zZXRNZW1iZXIoImVuZERlbGF5IixqKX0sZ2V0IGVuZERlbGF5KCl7cmV0dXJuIHRoaXMuX2VuZERlbGF5fSxzZXQgZmlsbChqKXt0aGlzLl9zZXRNZW1i''@;'; put 'put ''ZXIoImZpbGwiLGopfSxnZXQgZmlsbCgpe3JldHVybiB0aGlzLl9maWxsfSxzZXQgaXRlcmF0aW9uU3RhcnQoail7aWYoKGlzTmFOKGopfHxqPDApJiZyKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaXRlcmF0aW9uU3RhcnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIHJlY2VpdmVk''@;'; put 'put ''OiAiK2opO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9uU3RhcnQiLGopfSxnZXQgaXRlcmF0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5faXRlcmF0aW9uU3RhcnR9LHNldCBkdXJhdGlvbihqKXtpZigiYXV0byIhPWomJihpc05hTihqKXx8ajwwKSYmcigpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''ImR1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIG9yIGF1dG8sIHJlY2VpdmVkOiAiK2opO3RoaXMuX3NldE1lbWJlcigiZHVyYXRpb24iLGopfSxnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldCBkaXJlY3Rpb24oail7dGhpcy5fc2V0TWVtYmVyKCJkaXJlY3Rp''@;'; put 'put ''b24iLGopfSxnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn0sc2V0IGVhc2luZyhqKXt0aGlzLl9lYXNpbmdGdW5jdGlvbj11KGcoaikpLHRoaXMuX3NldE1lbWJlcigiZWFzaW5nIixqKX0sZ2V0IGVhc2luZygpe3JldHVybiB0aGlzLl9lYXNpbmd9LHNldCBpdGVyYXRp''@;'; put 'put ''b25zKGope2lmKChpc05hTihqKXx8ajwwKSYmcigpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvbnMgbXVzdCBiZSBub24tbmVnYXRpdmUsIHJlY2VpdmVkOiAiK2opO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9ucyIsail9LGdldCBpdGVyYXRpb25zKCl7cmV0dXJuIHRoaXMuX2l0''@;'; put 'put ''ZXJhdGlvbnN9fTt2YXIgTj0xLEk9LjUsVz0wLE89e2Vhc2U6aCguMjUsLjEsLjI1LDEpLCJlYXNlLWluIjpoKC40MiwwLDEsMSksImVhc2Utb3V0IjpoKDAsMCwuNTgsMSksImVhc2UtaW4tb3V0IjpoKC40MiwwLC41OCwxKSwic3RlcC1zdGFydCI6ZigxLE4pLCJzdGVwLW1pZGRsZSI6Zigx''@;'; put 'put ''LEkpLCJzdGVwLWVuZCI6ZigxLFcpfSxCPW51bGwsej0iXFxzKigtP1xcZCtcXC4/XFxkKnwtP1xcLlxcZCspXFxzKiIsbDE9bmV3IFJlZ0V4cCgiY3ViaWMtYmV6aWVyXFwoIit6KyIsIit6KyIsIit6KyIsIit6KyJcXCkiKSxhMT0vc3RlcHNcKFxzKihcZCspXHMqXCkvLGgxPS9zdGVwc1wo''@;'; put 'put ''XHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLHAxPTAsZzE9MSxIMT0yLEQxPTM7ay5jbG9uZVRpbWluZ0lucHV0PWZ1bmN0aW9uIGUoail7aWYoIm51bWJlciI9PXR5cGVvZiBqKXJldHVybiBqO3ZhciBuMT17fTtmb3IodmFyIG0xIGluIGopbjFbbTFdPWpbbTFdO3Jl''@;'; put 'put ''dHVybiBuMX0say5tYWtlVGltaW5nPWEsay5udW1lcmljVGltaW5nVG9PYmplY3Q9ZnVuY3Rpb24gYyhqKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGomJihqPWlzTmFOKGopP3tkdXJhdGlvbjowfTp7ZHVyYXRpb246an0pLGp9LGsubm9ybWFsaXplVGltaW5nSW5wdXQ9ZnVuY3Rpb24gbyhq''@;'; put 'put ''LG4xKXtyZXR1cm4gYShqPWsubnVtZXJpY1RpbWluZ1RvT2JqZWN0KGopLG4xKX0say5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbj1mdW5jdGlvbiBwKGope3JldHVybiBNYXRoLmFicyhmdW5jdGlvbiB2KGope3JldHVybiAwPT09ai5kdXJhdGlvbnx8MD09PWouaXRlcmF0aW9ucz8wOmouZHVy''@;'; put 'put ''YXRpb24qai5pdGVyYXRpb25zfShqKS9qLnBsYXliYWNrUmF0ZSl9LGsuY2FsY3VsYXRlSXRlcmF0aW9uUHJvZ3Jlc3M9ZnVuY3Rpb24gTShqLG4xLG0xKXt2YXIgXzE9SChqLG4xLG0xKSxKPWZ1bmN0aW9uIEMoaixuMSxtMSxfMSxKKXtzd2l0Y2goXzEpe2Nhc2UgZzE6cmV0dXJuImJhY2t3''@;'; put 'put ''YXJkcyI9PW4xfHwiYm90aCI9PW4xPzA6bnVsbDtjYXNlIEQxOnJldHVybiBtMS1KO2Nhc2UgSDE6cmV0dXJuImZvcndhcmRzIj09bjF8fCJib3RoIj09bjE/ajpudWxsO2Nhc2UgcDE6cmV0dXJuIG51bGx9fShqLG0xLmZpbGwsbjEsXzEsbTEuZGVsYXkpO2lmKG51bGw9PT1KKXJldHVybiBu''@;'; put 'put ''dWxsO3ZhciBvMT1mdW5jdGlvbiBWKGosbjEsbTEsXzEsSil7dmFyIG8xPUo7cmV0dXJuIDA9PT1qP24xIT09ZzEmJihvMSs9bTEpOm8xKz1fMS9qLG8xfShtMS5kdXJhdGlvbixfMSxtMS5pdGVyYXRpb25zLEosbTEuaXRlcmF0aW9uU3RhcnQpLE0xPWZ1bmN0aW9uIFMoaixuMSxtMSxfMSxK''@;'; put 'put ''LG8xKXt2YXIgTTE9aj09PTEvMD9uMSUxOmolMTtyZXR1cm4gMCE9PU0xfHxtMSE9PUgxfHwwPT09XzF8fDA9PT1KJiYwIT09bzF8fChNMT0xKSxNMX0obzEsbTEuaXRlcmF0aW9uU3RhcnQsXzEsbTEuaXRlcmF0aW9ucyxKLG0xLmR1cmF0aW9uKSxiMT1mdW5jdGlvbiBfKGosbjEsbTEsXzEp''@;'; put 'put ''e3JldHVybiBqPT09SDEmJm4xPT09MS8wPzEvMDoxPT09bTE/TWF0aC5mbG9vcihfMSktMTpNYXRoLmZsb29yKF8xKX0oXzEsbTEuaXRlcmF0aW9ucyxNMSxvMSksQjE9ZnVuY3Rpb24gYihqLG4xLG0xKXt2YXIgXzE9ajtpZigibm9ybWFsIiE9PWomJiJyZXZlcnNlIiE9PWope3ZhciBKPW4x''@;'; put 'put ''OyJhbHRlcm5hdGUtcmV2ZXJzZSI9PT1qJiYoSis9MSksXzE9Im5vcm1hbCIsSiE9PTEvMCYmSiUyIT0wJiYoXzE9InJldmVyc2UiKX1yZXR1cm4ibm9ybWFsIj09PV8xP20xOjEtbTF9KG0xLmRpcmVjdGlvbixiMSxNMSk7cmV0dXJuIG0xLl9lYXNpbmdGdW5jdGlvbihCMSl9LGsuY2FsY3Vs''@;'; put 'put ''YXRlUGhhc2U9SCxrLm5vcm1hbGl6ZUVhc2luZz1nLGsucGFyc2VFYXNpbmdGdW5jdGlvbj11fSkoWCksZnVuY3Rpb24oayxBKXtmdW5jdGlvbiBlKHUscCl7cmV0dXJuIHUgaW4gZyYmZ1t1XVtwXXx8cH1mdW5jdGlvbiByKHUscCx2KXtpZighZnVuY3Rpb24gbCh1KXtyZXR1cm4iZGlzcGxh''@;'; put 'put ''eSI9PT11fHwwPT09dS5sYXN0SW5kZXhPZigiYW5pbWF0aW9uIiwwKXx8MD09PXUubGFzdEluZGV4T2YoInRyYW5zaXRpb24iLDApfSh1KSl7dmFyIEg9b1t1XTtpZihIKWZvcih2YXIgQyBpbiBoLnN0eWxlW3VdPXAsSCl7dmFyIFY9SFtDXTt2W1ZdPWUoVixoLnN0eWxlW1ZdKX1lbHNlIHZb''@;'; put 'put ''dV09ZSh1LHApfX1mdW5jdGlvbiBhKHUpe3ZhciBwPVtdO2Zvcih2YXIgdiBpbiB1KWlmKCEodiBpblsiZWFzaW5nIiwib2Zmc2V0IiwiY29tcG9zaXRlIl0pKXt2YXIgSD11W3ZdO0FycmF5LmlzQXJyYXkoSCl8fChIPVtIXSk7Zm9yKHZhciBDLFY9SC5sZW5ndGgsUz0wO1M8VjtTKyspKEM9''@;'; put 'put ''e30pLm9mZnNldD0ib2Zmc2V0ImluIHU/dS5vZmZzZXQ6MT09Vj8xOlMvKFYtMSksImVhc2luZyJpbiB1JiYoQy5lYXNpbmc9dS5lYXNpbmcpLCJjb21wb3NpdGUiaW4gdSYmKEMuY29tcG9zaXRlPXUuY29tcG9zaXRlKSxDW3ZdPUhbU10scC5wdXNoKEMpfXJldHVybiBwLnNvcnQoZnVuY3Rp''@;'; put 'put ''b24oXyxiKXtyZXR1cm4gXy5vZmZzZXQtYi5vZmZzZXR9KSxwfXZhciBvPXtiYWNrZ3JvdW5kOlsiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZEF0dGFjaG1lbnQiLCJiYWNrZ3JvdW5k''@;'; put 'put ''T3JpZ2luIiwiYmFja2dyb3VuZENsaXAiLCJiYWNrZ3JvdW5kQ29sb3IiXSxib3JkZXI6WyJib3JkZXJUb3BDb2xvciIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3Jk''@;'; put 'put ''ZXJCb3R0b21Db2xvciIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJMZWZ0Q29sb3IiLCJib3JkZXJMZWZ0U3R5bGUiLCJib3JkZXJMZWZ0V2lkdGgiXSxib3JkZXJCb3R0b206WyJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbVN0eWxlIiwi''@;'; put 'put ''Ym9yZGVyQm90dG9tQ29sb3IiXSxib3JkZXJDb2xvcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyUmlnaHRDb2xvciIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyTGVmdDpbImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxl''@;'; put 'put ''ZnRDb2xvciJdLGJvcmRlclJhZGl1czpbImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyJdLGJvcmRlclJpZ2h0OlsiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlclJpZ2h0''@;'; put 'put ''U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIl0sYm9yZGVyVG9wOlsiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENvbG9yIl0sYm9yZGVyV2lkdGg6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRl''@;'; put 'put ''ckxlZnRXaWR0aCJdLGZsZXg6WyJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJmbGV4QmFzaXMiXSxmb250OlsiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFN0eWxlIiwiZm9udFZhcmlhbnQiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCJdLG1hcmdpbjpbIm1hcmdpblRvcCIsIm1hcmdp''@;'; put 'put ''blJpZ2h0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCJdLG91dGxpbmU6WyJvdXRsaW5lQ29sb3IiLCJvdXRsaW5lU3R5bGUiLCJvdXRsaW5lV2lkdGgiXSxwYWRkaW5nOlsicGFkZGluZ1RvcCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCJdfSxoPWRv''@;'; put 'put ''Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLGY9e3RoaW46IjFweCIsbWVkaXVtOiIzcHgiLHRoaWNrOiI1cHgifSxnPXtib3JkZXJCb3R0b21XaWR0aDpmLGJvcmRlckxlZnRXaWR0aDpmLGJvcmRlclJpZ2h0V2lkdGg6Zixib3Jk''@;'; put 'put ''ZXJUb3BXaWR0aDpmLGZvbnRTaXplOnsieHgtc21hbGwiOiI2MCUiLCJ4LXNtYWxsIjoiNzUlIixzbWFsbDoiODklIixtZWRpdW06IjEwMCUiLGxhcmdlOiIxMjAlIiwieC1sYXJnZSI6IjE1MCUiLCJ4eC1sYXJnZSI6IjIwMCUifSxmb250V2VpZ2h0Ontub3JtYWw6IjQwMCIsYm9sZDoiNzAw''@;'; put 'put ''In0sb3V0bGluZVdpZHRoOmYsdGV4dFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQifSxib3hTaGFkb3c6e25vbmU6IjBweCAwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9fTtrLmNvbnZlcnRUb0FycmF5Rm9ybT1hLGsubm9ybWFsaXplS2V5ZnJhbWVzPWZ1bmN0aW9uIGMo''@;'; put 'put ''dSl7aWYobnVsbD09dSlyZXR1cm5bXTt3aW5kb3cuU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJkFycmF5LnByb3RvdHlwZS5mcm9tJiZ1W1N5bWJvbC5pdGVyYXRvcl0mJih1PUFycmF5LmZyb20odSkpLEFycmF5LmlzQXJyYXkodSl8fCh1PWEodSkpO2Zvcih2YXIgdj11Lm1hcChmdW5jdGlv''@;'; put 'put ''bihfKXt2YXIgYj17fTtmb3IodmFyIE0gaW4gXyl7dmFyIHg9X1tNXTtpZigib2Zmc2V0Ij09TSl7aWYobnVsbCE9eCl7aWYoeD1OdW1iZXIoeCksIWlzRmluaXRlKHgpKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lIG9mZnNldHMgbXVzdCBiZSBudW1iZXJzLiIpO2lmKHg8MHx8eD4x''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lIG9mZnNldHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEuIil9fWVsc2UgaWYoImNvbXBvc2l0ZSI9PU0pe2lmKCJhZGQiPT14fHwiYWNjdW11bGF0ZSI9PXgpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFt''@;'; put 'put ''ZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6ImFkZCBjb21wb3NpdGluZyBpcyBub3Qgc3VwcG9ydGVkIn07aWYoInJlcGxhY2UiIT14KXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY29tcG9zaXRlIG1vZGUgIit4KyIuIil9ZWxzZSB4PSJlYXNpbmciPT1NP2subm9ybWFsaXpl''@;'; put 'put ''RWFzaW5nKHgpOiIiK3g7cihNLHgsYil9cmV0dXJuIG51bGw9PWIub2Zmc2V0JiYoYi5vZmZzZXQ9bnVsbCksbnVsbD09Yi5lYXNpbmcmJihiLmVhc2luZz0ibGluZWFyIiksYn0pLEg9ITAsQz0tMS8wLFY9MDtWPHYubGVuZ3RoO1YrKyl7dmFyIFM9dltWXS5vZmZzZXQ7aWYobnVsbCE9Uyl7''@;'; put 'put ''aWYoUzxDKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lcyBhcmUgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldC4gU29ydCBvciBzcGVjaWZ5IG9mZnNldHMuIik7Qz1TfWVsc2UgSD0hMX1yZXR1cm4gdj12LmZpbHRlcihmdW5jdGlvbihfKXtyZXR1cm4gXy5vZmZzZXQ+PTAmJl8u''@;'; put 'put ''b2Zmc2V0PD0xfSksSHx8ZnVuY3Rpb24gcCgpe3ZhciBfPXYubGVuZ3RoO251bGw9PXZbXy0xXS5vZmZzZXQmJih2W18tMV0ub2Zmc2V0PTEpLF8+MSYmbnVsbD09dlswXS5vZmZzZXQmJih2WzBdLm9mZnNldD0wKTtmb3IodmFyIGI9MCxNPXZbMF0ub2Zmc2V0LHg9MTt4PF87eCsrKXt2YXIg''@;'; put 'put ''RT12W3hdLm9mZnNldDtpZihudWxsIT1FKXtmb3IodmFyIHc9MTt3PHgtYjt3KyspdltiK3ddLm9mZnNldD1NKyhFLU0pKncvKHgtYik7Yj14LE09RX19fSgpLHZ9fShYKSxBPXt9LChrPVgpLmlzRGVwcmVjYXRlZD1mdW5jdGlvbihlLGwscixhKXt2YXIgYz1hPyJhcmUiOiJpcyIsbz1uZXcg''@;'; put 'put ''RGF0ZSxoPW5ldyBEYXRlKGwpO3JldHVybiBoLnNldE1vbnRoKGguZ2V0TW9udGgoKSszKSwhKG88aCYmKGUgaW4gQXx8Y29uc29sZS53YXJuKCJXZWIgQW5pbWF0aW9uczogIitlKyIgIitjKyIgZGVwcmVjYXRlZCBhbmQgd2lsbCBzdG9wIHdvcmtpbmcgb24gIitoLnRvRGF0ZVN0cmluZygp''@;'; put 'put ''KyIuICIrciksQVtlXT0hMCwxKSl9LGsuZGVwcmVjYXRlZD1mdW5jdGlvbihlLGwscixhKXt2YXIgYz1hPyJhcmUiOiJpcyI7aWYoay5pc0RlcHJlY2F0ZWQoZSxsLHIsYSkpdGhyb3cgbmV3IEVycm9yKGUrIiAiK2MrIiBubyBsb25nZXIgc3VwcG9ydGVkLiAiK3IpfSxmdW5jdGlvbigpe2lm''@;'; put 'put ''KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKXt2YXIgaz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYW5pbWF0ZShbXSwwKSxBPSEwO2lmKGsmJihBPSExLCJwbGF5fGN1cnJlbnRUaW1lfHBhdXNlfHJldmVyc2V8cGxheWJhY2tSYXRlfGNhbmNlbHxmaW5pc2h8c3RhcnRUaW1l''@;'; put 'put ''fHBsYXlTdGF0ZSIuc3BsaXQoInwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWtbZV0mJihBPSEwKX0pKSwhQSlyZXR1cm59dmFyIGUsbDtlPVgsKGw9RjEpLmNvbnZlcnRFZmZlY3RJbnB1dD1mdW5jdGlvbihvKXt2YXIgZj1mdW5jdGlvbiBhKG8pe2Zvcih2YXIgaD17fSxmPTA7''@;'; put 'put ''ZjxvLmxlbmd0aDtmKyspZm9yKHZhciBnIGluIG9bZl0paWYoIm9mZnNldCIhPWcmJiJlYXNpbmciIT1nJiYiY29tcG9zaXRlIiE9Zyl7dmFyIHU9e29mZnNldDpvW2ZdLm9mZnNldCxlYXNpbmc6b1tmXS5lYXNpbmcsdmFsdWU6b1tmXVtnXX07aFtnXT1oW2ddfHxbXSxoW2ddLnB1c2godSl9''@;'; put 'put ''Zm9yKHZhciBwIGluIGgpe3ZhciB2PWhbcF07aWYoMCE9dlswXS5vZmZzZXR8fDEhPXZbdi5sZW5ndGgtMV0ub2Zmc2V0KXRocm93e3R5cGU6RE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSLG5hbWU6Ik5vdFN1cHBvcnRlZEVycm9yIixtZXNzYWdlOiJQYXJ0aWFsIGtleWZyYW1lcyBh''@;'; put 'put ''cmUgbm90IHN1cHBvcnRlZCJ9fXJldHVybiBofShlLm5vcm1hbGl6ZUtleWZyYW1lcyhvKSksZz1mdW5jdGlvbiBjKG8pe3ZhciBoPVtdO2Zvcih2YXIgZiBpbiBvKWZvcih2YXIgZz1vW2ZdLHU9MDt1PGcubGVuZ3RoLTE7dSsrKXt2YXIgcD11LHY9dSsxLEg9Z1twXS5vZmZzZXQsQz1nW3Zd''@;'; put 'put ''Lm9mZnNldCxWPUgsUz1DOzA9PXUmJihWPS0xLzAsMD09QyYmKHY9cCkpLHU9PWcubGVuZ3RoLTImJihTPTEvMCwxPT1IJiYocD12KSksaC5wdXNoKHthcHBseUZyb206VixhcHBseVRvOlMsc3RhcnRPZmZzZXQ6Z1twXS5vZmZzZXQsZW5kT2Zmc2V0Omdbdl0ub2Zmc2V0LGVhc2luZ0Z1bmN0''@;'; put 'put ''aW9uOmUucGFyc2VFYXNpbmdGdW5jdGlvbihnW3BdLmVhc2luZykscHJvcGVydHk6ZixpbnRlcnBvbGF0aW9uOmwucHJvcGVydHlJbnRlcnBvbGF0aW9uKGYsZ1twXS52YWx1ZSxnW3ZdLnZhbHVlKX0pfXJldHVybiBoLnNvcnQoZnVuY3Rpb24oXyxiKXtyZXR1cm4gXy5zdGFydE9mZnNldC1i''@;'; put 'put ''LnN0YXJ0T2Zmc2V0fSksaH0oZik7cmV0dXJuIGZ1bmN0aW9uKHUscCl7aWYobnVsbCE9cClnLmZpbHRlcihmdW5jdGlvbihIKXtyZXR1cm4gcD49SC5hcHBseUZyb20mJnA8SC5hcHBseVRvfSkuZm9yRWFjaChmdW5jdGlvbihIKXt2YXIgVj1ILmVuZE9mZnNldC1ILnN0YXJ0T2Zmc2V0LFM9''@;'; put 'put ''MD09Vj8wOkguZWFzaW5nRnVuY3Rpb24oKHAtSC5zdGFydE9mZnNldCkvVik7bC5hcHBseSh1LEgucHJvcGVydHksSC5pbnRlcnBvbGF0aW9uKFMpKX0pO2Vsc2UgZm9yKHZhciB2IGluIGYpIm9mZnNldCIhPXYmJiJlYXNpbmciIT12JiYiY29tcG9zaXRlIiE9diYmbC5jbGVhcih1LHYpfX0s''@;'; put 'put ''ZnVuY3Rpb24oZSxsLHIpe2Z1bmN0aW9uIGEodSl7cmV0dXJuIHUucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9uKHAsdil7cmV0dXJuIHYudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIGModSxwLHYpe2Zbdl09Zlt2XXx8W10sZlt2XS5wdXNoKFt1LHBdKX12YXIgZj17fTtsLmFkZFByb3BlcnRp''@;'; put 'put ''ZXNIYW5kbGVyPWZ1bmN0aW9uIG8odSxwLHYpe2Zvcih2YXIgSD0wO0g8di5sZW5ndGg7SCsrKWModSxwLGEodltIXSkpfTt2YXIgZz17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xv''@;'; put 'put ''ciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRD''@;'; put 'put ''b2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRv''@;'; put 'put ''IixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4''@;'; put 'put ''IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNl''@;'; put 'put ''dDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsc3Ryb2tlRGFzaGFycmF5OiJub25lIixzdHJva2VEYXNob2Zmc2V0OiIwcHgiLHRleHRJ''@;'; put 'put ''bmRlbnQ6IjBweCIsdGV4dFNoYWRvdzoiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQiLHRvcDoiYXV0byIsdHJhbnNmb3JtOiIiLHZlcnRpY2FsQWxpZ246IjBweCIsdmlzaWJpbGl0eToidmlzaWJsZSIsd2lkdGg6ImF1dG8iLHdvcmRTcGFjaW5nOiJub3JtYWwiLHpJbmRleDoiYXV0byJ9O2wu''@;'; put 'put ''cHJvcGVydHlJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uIGgodSxwLHYpe3ZhciBIPXU7Ly0vLnRlc3QodSkmJiFlLmlzRGVwcmVjYXRlZCgiSHlwaGVuYXRlZCBwcm9wZXJ0eSBuYW1lcyIsIjIwMTYtMDMtMjIiLCJVc2UgY2FtZWxDYXNlIGluc3RlYWQuIiwhMCkmJihIPWEodSkpLCJpbml0aWFs''@;'; put 'put ''IiE9cCYmImluaXRpYWwiIT12fHwoImluaXRpYWwiPT1wJiYocD1nW0hdKSwiaW5pdGlhbCI9PXYmJih2PWdbSF0pKTtmb3IodmFyIEM9cD09dj9bXTpmW0hdLFY9MDtDJiZWPEMubGVuZ3RoO1YrKyl7dmFyIFM9Q1tWXVswXShwKSxfPUNbVl1bMF0odik7aWYodm9pZCAwIT09UyYmdm9pZCAw''@;'; put 'put ''IT09Xyl7dmFyIGI9Q1tWXVsxXShTLF8pO2lmKGIpe3ZhciBNPWwuSW50ZXJwb2xhdGlvbi5hcHBseShudWxsLGIpO3JldHVybiBmdW5jdGlvbih4KXtyZXR1cm4gMD09eD9wOjE9PXg/djpNKHgpfX19fXJldHVybiBsLkludGVycG9sYXRpb24oITEsITAsZnVuY3Rpb24oeCl7cmV0dXJuIHg/''@;'; put 'put ''djpwfSl9fShYLEYxKSxmdW5jdGlvbihlLGwscil7bC5LZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihjLG8saCxmKXt2YXIgZyx1PWZ1bmN0aW9uIGEoYyl7dmFyIG89ZS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihjKSxoPWZ1bmN0aW9uKGYpe3JldHVybiBlLmNhbGN1bGF0ZUl0ZXJhdGlvblBy''@;'; put 'put ''b2dyZXNzKG8sZixjKX07cmV0dXJuIGguX3RvdGFsRHVyYXRpb249Yy5kZWxheStvK2MuZW5kRGVsYXksaH0oZS5ub3JtYWxpemVUaW1pbmdJbnB1dChoKSkscD1sLmNvbnZlcnRFZmZlY3RJbnB1dChvKSx2PWZ1bmN0aW9uKCl7cChjLGcpfTtyZXR1cm4gdi5fdXBkYXRlPWZ1bmN0aW9uKEgp''@;'; put 'put ''e3JldHVybiBudWxsIT09KGc9dShIKSl9LHYuX2NsZWFyPWZ1bmN0aW9uKCl7cChjLG51bGwpfSx2Ll9oYXNTYW1lVGFyZ2V0PWZ1bmN0aW9uKEgpe3JldHVybiBjPT09SH0sdi5fdGFyZ2V0PWMsdi5fdG90YWxEdXJhdGlvbj11Ll90b3RhbER1cmF0aW9uLHYuX2lkPWYsdn19KFgsRjEpLGZ1''@;'; put 'put ''bmN0aW9uKGUsbCl7ZnVuY3Rpb24gYShILEMsVil7Vi5lbnVtZXJhYmxlPSEwLFYuY29uZmlndXJhYmxlPSEwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShILEMsVil9ZnVuY3Rpb24gYyhIKXt0aGlzLl9lbGVtZW50PUgsdGhpcy5fc3Vycm9nYXRlU3R5bGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu''@;'; put 'put ''dE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iikuc3R5bGUsdGhpcy5fc3R5bGU9SC5zdHlsZSx0aGlzLl9sZW5ndGg9MCx0aGlzLl9pc0FuaW1hdGVkUHJvcGVydHk9e30sdGhpcy5fdXBkYXRlU3ZnVHJhbnNmb3JtQXR0cj1mdW5jdGlvbiByKEgsQyl7cmV0dXJuISgh''@;'; put 'put ''Qy5uYW1lc3BhY2VVUkl8fC0xPT1DLm5hbWVzcGFjZVVSSS5pbmRleE9mKCIvc3ZnIikpJiYoaCBpbiBIfHwoSFtoXT0vVHJpZGVudHxNU0lFfElFTW9iaWxlfEVkZ2V8QW5kcm9pZCA0L2kudGVzdChILm5hdmlnYXRvci51c2VyQWdlbnQpKSxIW2hdKX0od2luZG93LEgpLHRoaXMuX3NhdmVk''@;'; put 'put ''VHJhbnNmb3JtQXR0cj1udWxsO2Zvcih2YXIgQz0wO0M8dGhpcy5fc3R5bGUubGVuZ3RoO0MrKyl7dmFyIFY9dGhpcy5fc3R5bGVbQ107dGhpcy5fc3Vycm9nYXRlU3R5bGVbVl09dGhpcy5fc3R5bGVbVl19dGhpcy5fdXBkYXRlSW5kaWNlcygpfXZhciBoPSJfd2ViQW5pbWF0aW9uc1VwZGF0''@;'; put 'put ''ZVN2Z1RyYW5zZm9ybUF0dHIiLGY9e2Nzc1RleHQ6MSxsZW5ndGg6MSxwYXJlbnRSdWxlOjF9LGc9e2dldFByb3BlcnR5Q1NTVmFsdWU6MSxnZXRQcm9wZXJ0eVByaW9yaXR5OjEsZ2V0UHJvcGVydHlWYWx1ZToxLGl0ZW06MSxyZW1vdmVQcm9wZXJ0eToxLHNldFByb3BlcnR5OjF9LHU9e3Jl''@;'; put 'put ''bW92ZVByb3BlcnR5OjEsc2V0UHJvcGVydHk6MX07Zm9yKHZhciBwIGluIGMucHJvdG90eXBlPXtnZXQgY3NzVGV4dCgpe3JldHVybiB0aGlzLl9zdXJyb2dhdGVTdHlsZS5jc3NUZXh0fSxzZXQgY3NzVGV4dChIKXtmb3IodmFyIEM9e30sVj0wO1Y8dGhpcy5fc3Vycm9nYXRlU3R5bGUubGVu''@;'; put 'put ''Z3RoO1YrKylDW3RoaXMuX3N1cnJvZ2F0ZVN0eWxlW1ZdXT0hMDtmb3IodGhpcy5fc3Vycm9nYXRlU3R5bGUuY3NzVGV4dD1ILHRoaXMuX3VwZGF0ZUluZGljZXMoKSxWPTA7Vjx0aGlzLl9zdXJyb2dhdGVTdHlsZS5sZW5ndGg7VisrKUNbdGhpcy5fc3Vycm9nYXRlU3R5bGVbVl1dPSEwO2Zv''@;'; put 'put ''cih2YXIgUyBpbiBDKXRoaXMuX2lzQW5pbWF0ZWRQcm9wZXJ0eVtTXXx8dGhpcy5fc3R5bGUuc2V0UHJvcGVydHkoUyx0aGlzLl9zdXJyb2dhdGVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFMpKX0sZ2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9zdXJyb2dhdGVTdHlsZS5sZW5ndGh9LGdldCBw''@;'; put 'put ''YXJlbnRSdWxlKCl7cmV0dXJuIHRoaXMuX3N0eWxlLnBhcmVudFJ1bGV9LF91cGRhdGVJbmRpY2VzOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9sZW5ndGg8dGhpcy5fc3Vycm9nYXRlU3R5bGUubGVuZ3RoOylPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0aGlzLl9sZW5ndGgse2NvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbihIKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3Vycm9nYXRlU3R5bGVbSF19fSh0aGlzLl9sZW5ndGgpfSksdGhpcy5fbGVuZ3RoKys7Zm9yKDt0aGlzLl9sZW5ndGg+dGhpcy5fc3Vycm9nYXRlU3R5bGUubGVuZ3Ro''@;'; put 'put ''Oyl0aGlzLl9sZW5ndGgtLSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0aGlzLl9sZW5ndGgse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOnZvaWQgMH0pfSxfc2V0OmZ1bmN0aW9uKEgsQyl7dGhpcy5fc3R5bGVbSF09Qyx0aGlzLl9pc0FuaW1hdGVkUHJvcGVydHlb''@;'; put 'put ''SF09ITAsdGhpcy5fdXBkYXRlU3ZnVHJhbnNmb3JtQXR0ciYmInRyYW5zZm9ybSI9PWUudW5wcmVmaXhlZFByb3BlcnR5TmFtZShIKSYmKG51bGw9PXRoaXMuX3NhdmVkVHJhbnNmb3JtQXR0ciYmKHRoaXMuX3NhdmVkVHJhbnNmb3JtQXR0cj10aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgi''@;'; put 'put ''dHJhbnNmb3JtIikpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGUudHJhbnNmb3JtVG9TdmdNYXRyaXgoQykpKX0sX2NsZWFyOmZ1bmN0aW9uKEgpe3RoaXMuX3N0eWxlW0hdPXRoaXMuX3N1cnJvZ2F0ZVN0eWxlW0hdLHRoaXMuX3VwZGF0ZVN2Z1RyYW5zZm9ybUF0''@;'; put 'put ''dHImJiJ0cmFuc2Zvcm0iPT1lLnVucHJlZml4ZWRQcm9wZXJ0eU5hbWUoSCkmJih0aGlzLl9zYXZlZFRyYW5zZm9ybUF0dHI/dGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdGhpcy5fc2F2ZWRUcmFuc2Zvcm1BdHRyKTp0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0''@;'; put 'put ''ZSgidHJhbnNmb3JtIiksdGhpcy5fc2F2ZWRUcmFuc2Zvcm1BdHRyPW51bGwpLGRlbGV0ZSB0aGlzLl9pc0FuaW1hdGVkUHJvcGVydHlbSF19fSxnKWMucHJvdG90eXBlW3BdPWZ1bmN0aW9uKEgsQyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFY9dGhpcy5fc3Vycm9nYXRlU3R5bGVbSF0uYXBw''@;'; put 'put ''bHkodGhpcy5fc3Vycm9nYXRlU3R5bGUsYXJndW1lbnRzKTtyZXR1cm4gQyYmKHRoaXMuX2lzQW5pbWF0ZWRQcm9wZXJ0eVthcmd1bWVudHNbMF1dfHx0aGlzLl9zdHlsZVtIXS5hcHBseSh0aGlzLl9zdHlsZSxhcmd1bWVudHMpLHRoaXMuX3VwZGF0ZUluZGljZXMoKSksVn19KHAscCBpbiB1''@;'; put 'put ''KTtmb3IodmFyIHYgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlKXYgaW4gZnx8diBpbiBnfHxmdW5jdGlvbihIKXthKGMucHJvdG90eXBlLEgse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXJyb2dhdGVTdHlsZVtIXX0sc2V0OmZ1bmN0aW9uKEMpe3RoaXMuX3N1cnJv''@;'; put 'put ''Z2F0ZVN0eWxlW0hdPUMsdGhpcy5fdXBkYXRlSW5kaWNlcygpLHRoaXMuX2lzQW5pbWF0ZWRQcm9wZXJ0eVtIXXx8KHRoaXMuX3N0eWxlW0hdPUMpfX0pfSh2KTtlLmFwcGx5PWZ1bmN0aW9uKEgsQyxWKXsoZnVuY3Rpb24gbyhIKXtpZighSC5fd2ViQW5pbWF0aW9uc1BhdGNoZWRTdHlsZSl7''@;'; put 'put ''dmFyIEM9bmV3IGMoSCk7dHJ5e2EoSCwic3R5bGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ319KX1jYXRjaChWKXtILnN0eWxlLl9zZXQ9ZnVuY3Rpb24oUyxfKXtILnN0eWxlW1NdPV99LEguc3R5bGUuX2NsZWFyPWZ1bmN0aW9uKFMpe0guc3R5bGVbU109IiJ9fUguX3dlYkFuaW1hdGlv''@;'; put 'put ''bnNQYXRjaGVkU3R5bGU9SC5zdHlsZX19KShIKSxILnN0eWxlLl9zZXQoZS5wcm9wZXJ0eU5hbWUoQyksVil9LGUuY2xlYXI9ZnVuY3Rpb24oSCxDKXtILl93ZWJBbmltYXRpb25zUGF0Y2hlZFN0eWxlJiZILnN0eWxlLl9jbGVhcihlLnByb3BlcnR5TmFtZShDKSl9fShGMSksZnVuY3Rpb24o''@;'; put 'put ''ZSl7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24obCxyKXt2YXIgYT0iIjtyZXR1cm4gciYmci5pZCYmKGE9ci5pZCksZS50aW1lbGluZS5fcGxheShlLktleWZyYW1lRWZmZWN0KHRoaXMsbCxyLGEpKX19KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIoYSxj''@;'; put 'put ''LG8pe2lmKCJudW1iZXIiPT10eXBlb2YgYSYmIm51bWJlciI9PXR5cGVvZiBjKXJldHVybiBhKigxLW8pK2MqbztpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiYiYm9vbGVhbiI9PXR5cGVvZiBjKXJldHVybiBvPC41P2E6YztpZihhLmxlbmd0aD09Yy5sZW5ndGgpe2Zvcih2YXIgaD1bXSxmPTA7''@;'; put 'put ''ZjxhLmxlbmd0aDtmKyspaC5wdXNoKHIoYVtmXSxjW2ZdLG8pKTtyZXR1cm4gaH10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrY31lLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxjLG8pe3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gbyhyKGEsYyxo''@;'; put 'put ''KSl9fX0oRjEpLGZ1bmN0aW9uKGUsbCl7dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBvKGcsdSl7Zm9yKHZhciBwPVtbMCwwLDAsMF0sWzAsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF1dLHY9MDt2PDQ7disrKWZvcih2YXIgSD0wO0g8NDtIKyspZm9yKHZhciBDPTA7Qzw0O0MrKylwW3Zd''@;'; put 'put ''W0hdKz11W3ZdW0NdKmdbQ11bSF07cmV0dXJuIHB9cmV0dXJuIGZ1bmN0aW9uIGYoZyx1LHAsdixIKXtmb3IodmFyIEM9W1sxLDAsMCwwXSxbMCwxLDAsMF0sWzAsMCwxLDBdLFswLDAsMCwxXV0sVj0wO1Y8NDtWKyspQ1tWXVszXT1IW1ZdO2ZvcihWPTA7VjwzO1YrKylmb3IodmFyIFM9MDtT''@;'; put 'put ''PDM7UysrKUNbM11bVl0rPWdbU10qQ1tTXVtWXTt2YXIgXz12WzBdLGI9dlsxXSxNPXZbMl0seD12WzNdLEU9W1sxLDAsMCwwXSxbMCwxLDAsMF0sWzAsMCwxLDBdLFswLDAsMCwxXV07RVswXVswXT0xLTIqKGIqYitNKk0pLEVbMF1bMV09MiooXypiLU0qeCksRVswXVsyXT0yKihfKk0rYip4''@;'; put 'put ''KSxFWzFdWzBdPTIqKF8qYitNKngpLEVbMV1bMV09MS0yKihfKl8rTSpNKSxFWzFdWzJdPTIqKGIqTS1fKngpLEVbMl1bMF09MiooXypNLWIqeCksRVsyXVsxXT0yKihiKk0rXyp4KSxFWzJdWzJdPTEtMiooXypfK2IqYiksQz1vKEMsRSk7dmFyIHc9W1sxLDAsMCwwXSxbMCwxLDAsMF0sWzAs''@;'; put 'put ''MCwxLDBdLFswLDAsMCwxXV07Zm9yKHBbMl0mJih3WzJdWzFdPXBbMl0sQz1vKEMsdykpLHBbMV0mJih3WzJdWzFdPTAsd1syXVswXT1wWzBdLEM9byhDLHcpKSxwWzBdJiYod1syXVswXT0wLHdbMV1bMF09cFswXSxDPW8oQyx3KSksVj0wO1Y8MztWKyspZm9yKFM9MDtTPDM7UysrKUNbVl1b''@;'; put 'put ''U10qPXVbVl07cmV0dXJuIGZ1bmN0aW9uIGgoZyl7cmV0dXJuIDA9PWdbMF1bMl0mJjA9PWdbMF1bM10mJjA9PWdbMV1bMl0mJjA9PWdbMV1bM10mJjA9PWdbMl1bMF0mJjA9PWdbMl1bMV0mJjE9PWdbMl1bMl0mJjA9PWdbMl1bM10mJjA9PWdbM11bMl0mJjE9PWdbM11bM119KEMpP1tDWzBd''@;'; put 'put ''WzBdLENbMF1bMV0sQ1sxXVswXSxDWzFdWzFdLENbM11bMF0sQ1szXVsxXV06Q1swXS5jb25jYXQoQ1sxXSxDWzJdLENbM10pfX0oKTtlLmNvbXBvc2VNYXRyaXg9YyxlLnF1YXQ9ZnVuY3Rpb24gYShvLGgsZil7dmFyIGc9ZS5kb3QobyxoKTtnPWZ1bmN0aW9uIHIobyxoLGYpe3JldHVybiBN''@;'; put 'put ''YXRoLm1heChNYXRoLm1pbihvLGYpLGgpfShnLC0xLDEpO3ZhciB1PVtdO2lmKDE9PT1nKXU9bztlbHNlIGZvcih2YXIgcD1NYXRoLmFjb3MoZyksdj0xKk1hdGguc2luKGYqcCkvTWF0aC5zcXJ0KDEtZypnKSxIPTA7SDw0O0grKyl1LnB1c2gob1tIXSooTWF0aC5jb3MoZipwKS1nKnYpK2hb''@;'; put 'put ''SF0qdik7cmV0dXJuIHV9fShGMSksZnVuY3Rpb24oZSxsLHIpe2Uuc2VxdWVuY2VOdW1iZXI9MDt2YXIgYT1mdW5jdGlvbihjLG8saCl7dGhpcy50YXJnZXQ9Yyx0aGlzLmN1cnJlbnRUaW1lPW8sdGhpcy50aW1lbGluZVRpbWU9aCx0aGlzLnR5cGU9ImZpbmlzaCIsdGhpcy5idWJibGVzPSEx''@;'; put 'put ''LHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9Yyx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfTtsLkFuaW1hdGlvbj1mdW5jdGlvbihjKXt0aGlzLmlkPSIiLGMmJmMu''@;'; put 'put ''X2lkJiYodGhpcy5pZD1jLl9pZCksdGhpcy5fc2VxdWVuY2VOdW1iZXI9ZS5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2luVGltZWxpbmU9ITAsdGhpcy5f''@;'; put 'put ''ZmluaXNoZWRGbGFnPSEwLHRoaXMub25maW5pc2g9bnVsbCx0aGlzLl9maW5pc2hIYW5kbGVycz1bXSx0aGlzLl9lZmZlY3Q9Yyx0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgwKSx0aGlzLl9pZGxlPSEwLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMX0sbC5BbmltYXRp''@;'; put 'put ''b24ucHJvdG90eXBlPXtfZW5zdXJlQWxpdmU6ZnVuY3Rpb24oKXt0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSh0aGlzLnBsYXliYWNrUmF0ZTwwJiYwPT09dGhpcy5jdXJyZW50VGltZT8tMTp0aGlzLmN1cnJlbnRUaW1lKSx0aGlzLl9pblRpbWVsaW5lfHwhdGhpcy5faW5F''@;'; put 'put ''ZmZlY3QmJnRoaXMuX2ZpbmlzaGVkRmxhZ3x8KHRoaXMuX2luVGltZWxpbmU9ITAsbC50aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpKX0sX3RpY2tDdXJyZW50VGltZTpmdW5jdGlvbihjLG8pe2MhPXRoaXMuX2N1cnJlbnRUaW1lJiYodGhpcy5fY3VycmVudFRpbWU9Yyx0aGlzLl9p''@;'; put 'put ''c0ZpbmlzaGVkJiYhbyYmKHRoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3BsYXliYWNrUmF0ZT4wP3RoaXMuX3RvdGFsRHVyYXRpb246MCksdGhpcy5fZW5zdXJlQWxpdmUoKSl9LGdldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLl9pZGxlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/bnVs''@;'; put 'put ''bDp0aGlzLl9jdXJyZW50VGltZX0sc2V0IGN1cnJlbnRUaW1lKGMpe2M9K2MsaXNOYU4oYyl8fChsLnJlc3RhcnQoKSx0aGlzLl9wYXVzZWR8fG51bGw9PXRoaXMuX3N0YXJ0VGltZXx8KHRoaXMuX3N0YXJ0VGltZT10aGlzLl90aW1lbGluZS5jdXJyZW50VGltZS1jL3RoaXMuX3BsYXliYWNr''@;'; put 'put ''UmF0ZSksdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLHRoaXMuX2N1cnJlbnRUaW1lIT1jJiYodGhpcy5faWRsZSYmKHRoaXMuX2lkbGU9ITEsdGhpcy5fcGF1c2VkPSEwKSx0aGlzLl90aWNrQ3VycmVudFRpbWUoYywhMCksbC5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpKX0sZ2V0''@;'; put 'put ''IHN0YXJ0VGltZSgpe3JldHVybiB0aGlzLl9zdGFydFRpbWV9LHNldCBzdGFydFRpbWUoYyl7Yz0rYyxpc05hTihjKXx8dGhpcy5fcGF1c2VkfHx0aGlzLl9pZGxlfHwodGhpcy5fc3RhcnRUaW1lPWMsdGhpcy5fdGlja0N1cnJlbnRUaW1lKCh0aGlzLl90aW1lbGluZS5jdXJyZW50VGltZS10''@;'; put 'put ''aGlzLl9zdGFydFRpbWUpKnRoaXMucGxheWJhY2tSYXRlKSxsLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fcGxheWJhY2tSYXRlfSxzZXQgcGxheWJhY2tSYXRlKGMpe2lmKGMhPXRoaXMuX3BsYXliYWNrUmF0ZSl7dmFyIG89''@;'; put 'put ''dGhpcy5jdXJyZW50VGltZTt0aGlzLl9wbGF5YmFja1JhdGU9Yyx0aGlzLl9zdGFydFRpbWU9bnVsbCwicGF1c2VkIiE9dGhpcy5wbGF5U3RhdGUmJiJpZGxlIiE9dGhpcy5wbGF5U3RhdGUmJih0aGlzLl9maW5pc2hlZEZsYWc9ITEsdGhpcy5faWRsZT0hMSx0aGlzLl9lbnN1cmVBbGl2ZSgp''@;'; put 'put ''LGwuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKSxudWxsIT1vJiYodGhpcy5jdXJyZW50VGltZT1vKX19LGdldCBfaXNGaW5pc2hlZCgpe3JldHVybiF0aGlzLl9pZGxlJiYodGhpcy5fcGxheWJhY2tSYXRlPjAmJnRoaXMuX2N1cnJlbnRUaW1lPj10aGlzLl90b3RhbER1cmF0aW9ufHx0''@;'; put 'put ''aGlzLl9wbGF5YmFja1JhdGU8MCYmdGhpcy5fY3VycmVudFRpbWU8PTApfSxnZXQgX3RvdGFsRHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZWZmZWN0Ll90b3RhbER1cmF0aW9ufSxnZXQgcGxheVN0YXRlKCl7cmV0dXJuIHRoaXMuX2lkbGU/ImlkbGUiOm51bGw9PXRoaXMuX3N0YXJ0VGltZSYm''@;'; put 'put ''IXRoaXMuX3BhdXNlZCYmMCE9dGhpcy5wbGF5YmFja1JhdGV8fHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz8icGVuZGluZyI6dGhpcy5fcGF1c2VkPyJwYXVzZWQiOnRoaXMuX2lzRmluaXNoZWQ/ImZpbmlzaGVkIjoicnVubmluZyJ9LF9yZXdpbmQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9wbGF5''@;'; put 'put ''YmFja1JhdGU+PTApdGhpcy5fY3VycmVudFRpbWU9MDtlbHNle2lmKCEodGhpcy5fdG90YWxEdXJhdGlvbjwxLzApKXRocm93IG5ldyBET01FeGNlcHRpb24oIlVuYWJsZSB0byByZXdpbmQgbmVnYXRpdmUgcGxheWJhY2sgcmF0ZSBhbmltYXRpb24gd2l0aCBpbmZpbml0ZSBkdXJhdGlvbiIs''@;'; put 'put ''IkludmFsaWRTdGF0ZUVycm9yIik7dGhpcy5fY3VycmVudFRpbWU9dGhpcy5fdG90YWxEdXJhdGlvbn19LHBsYXk6ZnVuY3Rpb24oKXt0aGlzLl9wYXVzZWQ9ITEsKHRoaXMuX2lzRmluaXNoZWR8fHRoaXMuX2lkbGUpJiYodGhpcy5fcmV3aW5kKCksdGhpcy5fc3RhcnRUaW1lPW51bGwpLHRo''@;'; put 'put ''aXMuX2ZpbmlzaGVkRmxhZz0hMSx0aGlzLl9pZGxlPSExLHRoaXMuX2Vuc3VyZUFsaXZlKCksbC5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcyl9LHBhdXNlOmZ1bmN0aW9uKCl7dGhpcy5faXNGaW5pc2hlZHx8dGhpcy5fcGF1c2VkfHx0aGlzLl9pZGxlP3RoaXMuX2lkbGUmJih0aGlzLl9y''@;'; put 'put ''ZXdpbmQoKSx0aGlzLl9pZGxlPSExKTp0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSEwfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9pZGxlfHwodGhpcy5jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90''@;'; put 'put ''b3RhbER1cmF0aW9uOjAsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb24tdGhpcy5jdXJyZW50VGltZSx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsbC5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl9pbkVmZmVjdCYmKHRo''@;'; put 'put ''aXMuX2luRWZmZWN0PSExLHRoaXMuX2lkbGU9ITAsdGhpcy5fcGF1c2VkPSExLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMCx0aGlzLl9jdXJyZW50VGltZT0wLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX2VmZmVjdC5fdXBkYXRlKG51bGwpLGwuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMp''@;'; put 'put ''KX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMucGxheWJhY2tSYXRlKj0tMSx0aGlzLnBsYXkoKX0sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihjLG8peyJmdW5jdGlvbiI9PXR5cGVvZiBvJiYiZmluaXNoIj09YyYmdGhpcy5fZmluaXNoSGFuZGxlcnMucHVzaChvKX0scmVtb3ZlRXZlbnRM''@;'; put 'put ''aXN0ZW5lcjpmdW5jdGlvbihjLG8pe2lmKCJmaW5pc2giPT1jKXt2YXIgaD10aGlzLl9maW5pc2hIYW5kbGVycy5pbmRleE9mKG8pO2g+PTAmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnNwbGljZShoLDEpfX0sX2ZpcmVFdmVudHM6ZnVuY3Rpb24oYyl7aWYodGhpcy5faXNGaW5pc2hlZCl7aWYo''@;'; put 'put ''IXRoaXMuX2ZpbmlzaGVkRmxhZyl7dmFyIG89bmV3IGEodGhpcyx0aGlzLl9jdXJyZW50VGltZSxjKSxoPXRoaXMuX2ZpbmlzaEhhbmRsZXJzLmNvbmNhdCh0aGlzLm9uZmluaXNoP1t0aGlzLm9uZmluaXNoXTpbXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2guZm9yRWFjaChmdW5jdGlvbihm''@;'; put 'put ''KXtmLmNhbGwoby50YXJnZXQsbyl9KX0sMCksdGhpcy5fZmluaXNoZWRGbGFnPSEwfX1lbHNlIHRoaXMuX2ZpbmlzaGVkRmxhZz0hMX0sX3RpY2s6ZnVuY3Rpb24oYyxvKXt0aGlzLl9pZGxlfHx0aGlzLl9wYXVzZWR8fChudWxsPT10aGlzLl9zdGFydFRpbWU/byYmKHRoaXMuc3RhcnRUaW1l''@;'; put 'put ''PWMtdGhpcy5fY3VycmVudFRpbWUvdGhpcy5wbGF5YmFja1JhdGUpOnRoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3RpY2tDdXJyZW50VGltZSgoYy10aGlzLl9zdGFydFRpbWUpKnRoaXMucGxheWJhY2tSYXRlKSksbyYmKHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9maXJlRXZl''@;'; put 'put ''bnRzKGMpKX0sZ2V0IF9uZWVkc1RpY2soKXtyZXR1cm4gdGhpcy5wbGF5U3RhdGUgaW57cGVuZGluZzoxLHJ1bm5pbmc6MX18fCF0aGlzLl9maW5pc2hlZEZsYWd9LF90YXJnZXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fZWZmZWN0Ll90YXJnZXQ7cmV0dXJuIGMuX2FjdGl2''@;'; put 'put ''ZUFuaW1hdGlvbnN8fChjLl9hY3RpdmVBbmltYXRpb25zPVtdKSxjLl9hY3RpdmVBbmltYXRpb25zfSxfbWFya1RhcmdldDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuX3RhcmdldEFuaW1hdGlvbnMoKTstMT09PWMuaW5kZXhPZih0aGlzKSYmYy5wdXNoKHRoaXMpfSxfdW5tYXJrVGFyZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGM9dGhpcy5fdGFyZ2V0QW5pbWF0aW9ucygpLG89Yy5pbmRleE9mKHRoaXMpOy0xIT09byYmYy5zcGxpY2UobywxKX19fShYLEYxKSxmdW5jdGlvbihlLGwscil7ZnVuY3Rpb24gYShiKXt2YXIgTT11O3U9W10sYjxfLmN1cnJlbnRUaW1lJiYoYj1fLmN1cnJlbnRUaW1l''@;'; put 'put ''KSxfLl9hbmltYXRpb25zLnNvcnQoYyksXy5fYW5pbWF0aW9ucz1mKGIsITAsXy5fYW5pbWF0aW9ucylbMF0sTS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3hbMV0oYil9KSxoKCl9ZnVuY3Rpb24gYyhiLE0pe3JldHVybiBiLl9zZXF1ZW5jZU51bWJlci1NLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlv''@;'; put 'put ''biBvKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gaCgpe1YuZm9yRWFjaChmdW5jdGlvbihiKXtiKCl9KSxWLmxlbmd0aD0wfWZ1bmN0aW9uIGYoYixN''@;'; put 'put ''LHgpe1M9ITAsQz0hMSxsLnRpbWVsaW5lLmN1cnJlbnRUaW1lPWIsSD0hMTt2YXIgRT1bXSx3PVtdLE49W10sST1bXTtyZXR1cm4geC5mb3JFYWNoKGZ1bmN0aW9uKFcpe1cuX3RpY2soYixNKSxXLl9pbkVmZmVjdD8ody5wdXNoKFcuX2VmZmVjdCksVy5fbWFya1RhcmdldCgpKTooRS5wdXNo''@;'; put 'put ''KFcuX2VmZmVjdCksVy5fdW5tYXJrVGFyZ2V0KCkpLFcuX25lZWRzVGljayYmKEg9ITApO3ZhciBPPVcuX2luRWZmZWN0fHxXLl9uZWVkc1RpY2s7Vy5faW5UaW1lbGluZT1PLE8/Ti5wdXNoKFcpOkkucHVzaChXKX0pLFYucHVzaC5hcHBseShWLEUpLFYucHVzaC5hcHBseShWLHcpLEgmJnJl''@;'; put 'put ''cXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLFM9ITEsW04sSV19dmFyIGc9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSx1PVtdLHA9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGIpe3ZhciBNPXArKztyZXR1cm4gMD09dS5sZW5ndGgmJmcoYSks''@;'; put 'put ''dS5wdXNoKFtNLGJdKSxNfSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYil7dS5mb3JFYWNoKGZ1bmN0aW9uKE0pe01bMF09PWImJihNWzFdPWZ1bmN0aW9uKCl7fSl9KX0sby5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGIpe2IuX3RpbWluZz1lLm5vcm1hbGl6ZVRp''@;'; put 'put ''bWluZ0lucHV0KGIudGltaW5nKTt2YXIgTT1uZXcgbC5BbmltYXRpb24oYik7cmV0dXJuIE0uX2lkbGU9ITEsTS5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goTSksbC5yZXN0YXJ0KCksbC5hcHBseURpcnRpZWRBbmltYXRpb24oTSksTX19O3ZhciBIPSExLEM9ITE7bC5y''@;'; put 'put ''ZXN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEh8fChIPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLEM9ITApLEN9LGwuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uPWZ1bmN0aW9uKGIpe2lmKCFTKXtiLl9tYXJrVGFyZ2V0KCk7dmFyIE09Yi5fdGFyZ2V0QW5pbWF0aW9ucygp''@;'; put 'put ''O00uc29ydChjKSxmKGwudGltZWxpbmUuY3VycmVudFRpbWUsITEsTS5zbGljZSgpKVsxXS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBFPV8uX2FuaW1hdGlvbnMuaW5kZXhPZih4KTstMSE9PUUmJl8uX2FuaW1hdGlvbnMuc3BsaWNlKEUsMSl9KSxoKCl9fTt2YXIgVj1bXSxTPSExLF89bmV3''@;'; put 'put ''IG87bC50aW1lbGluZT1ffShYLEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIodSxwKXtmb3IodmFyIHY9MCxIPTA7SDx1Lmxlbmd0aDtIKyspdis9dVtIXSpwW0hdO3JldHVybiB2fWZ1bmN0aW9uIGEodSxwKXtyZXR1cm5bdVswXSpwWzBdK3VbNF0qcFsxXSt1WzhdKnBbMl0rdVsxMl0q''@;'; put 'put ''cFszXSx1WzFdKnBbMF0rdVs1XSpwWzFdK3VbOV0qcFsyXSt1WzEzXSpwWzNdLHVbMl0qcFswXSt1WzZdKnBbMV0rdVsxMF0qcFsyXSt1WzE0XSpwWzNdLHVbM10qcFswXSt1WzddKnBbMV0rdVsxMV0qcFsyXSt1WzE1XSpwWzNdLHVbMF0qcFs0XSt1WzRdKnBbNV0rdVs4XSpwWzZdK3VbMTJd''@;'; put 'put ''KnBbN10sdVsxXSpwWzRdK3VbNV0qcFs1XSt1WzldKnBbNl0rdVsxM10qcFs3XSx1WzJdKnBbNF0rdVs2XSpwWzVdK3VbMTBdKnBbNl0rdVsxNF0qcFs3XSx1WzNdKnBbNF0rdVs3XSpwWzVdK3VbMTFdKnBbNl0rdVsxNV0qcFs3XSx1WzBdKnBbOF0rdVs0XSpwWzldK3VbOF0qcFsxMF0rdVsx''@;'; put 'put ''Ml0qcFsxMV0sdVsxXSpwWzhdK3VbNV0qcFs5XSt1WzldKnBbMTBdK3VbMTNdKnBbMTFdLHVbMl0qcFs4XSt1WzZdKnBbOV0rdVsxMF0qcFsxMF0rdVsxNF0qcFsxMV0sdVszXSpwWzhdK3VbN10qcFs5XSt1WzExXSpwWzEwXSt1WzE1XSpwWzExXSx1WzBdKnBbMTJdK3VbNF0qcFsxM10rdVs4''@;'; put 'put ''XSpwWzE0XSt1WzEyXSpwWzE1XSx1WzFdKnBbMTJdK3VbNV0qcFsxM10rdVs5XSpwWzE0XSt1WzEzXSpwWzE1XSx1WzJdKnBbMTJdK3VbNl0qcFsxM10rdVsxMF0qcFsxNF0rdVsxNF0qcFsxNV0sdVszXSpwWzEyXSt1WzddKnBbMTNdK3VbMTFdKnBbMTRdK3VbMTVdKnBbMTVdXX1mdW5jdGlv''@;'; put 'put ''biBjKHUpe3JldHVybigodS5kZWd8fDApLzM2MCsodS5ncmFkfHwwKS80MDArKHUudHVybnx8MCkpKigyKk1hdGguUEkpKyh1LnJhZHx8MCl9ZnVuY3Rpb24gbyh1KXtzd2l0Y2godS50KXtjYXNlInJvdGF0ZXgiOnZhciBiPWModS5kWzBdKTtyZXR1cm5bMSwwLDAsMCwwLE1hdGguY29zKGIp''@;'; put 'put ''LE1hdGguc2luKGIpLDAsMCwtTWF0aC5zaW4oYiksTWF0aC5jb3MoYiksMCwwLDAsMCwxXTtjYXNlInJvdGF0ZXkiOnJldHVybiBiPWModS5kWzBdKSxbTWF0aC5jb3MoYiksMCwtTWF0aC5zaW4oYiksMCwwLDEsMCwwLE1hdGguc2luKGIpLDAsTWF0aC5jb3MoYiksMCwwLDAsMCwxXTtjYXNl''@;'; put 'put ''InJvdGF0ZSI6Y2FzZSJyb3RhdGV6IjpyZXR1cm4gYj1jKHUuZFswXSksW01hdGguY29zKGIpLE1hdGguc2luKGIpLDAsMCwtTWF0aC5zaW4oYiksTWF0aC5jb3MoYiksMCwwLDAsMCwxLDAsMCwwLDAsMV07Y2FzZSJyb3RhdGUzZCI6dmFyIE09dS5kWzBdLHg9dS5kWzFdLEU9dS5kWzJdLHA9''@;'; put 'put ''KGI9Yyh1LmRbM10pLE0qTSt4KngrRSpFKTtpZigwPT09cClNPTEseD0wLEU9MDtlbHNlIGlmKDEhPT1wKXt2YXIgdj1NYXRoLnNxcnQocCk7TS89dix4Lz12LEUvPXZ9dmFyIEg9TWF0aC5zaW4oYi8yKSxDPUgqTWF0aC5jb3MoYi8yKSxWPUgqSDtyZXR1cm5bMS0yKih4KngrRSpFKSpWLDIq''@;'; put 'put ''KE0qeCpWK0UqQyksMiooTSpFKlYteCpDKSwwLDIqKE0qeCpWLUUqQyksMS0yKihNKk0rRSpFKSpWLDIqKHgqRSpWK00qQyksMCwyKihNKkUqVit4KkMpLDIqKHgqRSpWLU0qQyksMS0yKihNKk0reCp4KSpWLDAsMCwwLDAsMV07Y2FzZSJzY2FsZSI6cmV0dXJuW3UuZFswXSwwLDAsMCwwLHUu''@;'; put 'put ''ZFsxXSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInNjYWxleCI6cmV0dXJuW3UuZFswXSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07Y2FzZSJzY2FsZXkiOnJldHVyblsxLDAsMCwwLDAsdS5kWzBdLDAsMCwwLDAsMSwwLDAsMCwwLDFdO2Nhc2Uic2NhbGV6IjpyZXR1cm5bMSww''@;'; put 'put ''LDAsMCwwLDEsMCwwLDAsMCx1LmRbMF0sMCwwLDAsMCwxXTtjYXNlInNjYWxlM2QiOnJldHVyblt1LmRbMF0sMCwwLDAsMCx1LmRbMV0sMCwwLDAsMCx1LmRbMl0sMCwwLDAsMCwxXTtjYXNlInNrZXciOnZhciBTPWModS5kWzBdKSxfPWModS5kWzFdKTtyZXR1cm5bMSxNYXRoLnRhbihfKSww''@;'; put 'put ''LDAsTWF0aC50YW4oUyksMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInNrZXd4IjpyZXR1cm4gYj1jKHUuZFswXSksWzEsMCwwLDAsTWF0aC50YW4oYiksMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInNrZXd5IjpyZXR1cm4gYj1jKHUuZFswXSksWzEsTWF0aC50YW4oYiksMCwwLDAs''@;'; put 'put ''MSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInRyYW5zbGF0ZSI6cmV0dXJuWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLE09dS5kWzBdLnB4fHwwLHg9dS5kWzFdLnB4fHwwLDAsMV07Y2FzZSJ0cmFuc2xhdGV4IjpyZXR1cm5bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsTT11LmRbMF0ucHh8''@;'; put 'put ''fDAsMCwwLDFdO2Nhc2UidHJhbnNsYXRleSI6cmV0dXJuWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAseD11LmRbMF0ucHh8fDAsMCwxXTtjYXNlInRyYW5zbGF0ZXoiOnJldHVyblsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsRT11LmRbMF0ucHh8fDAsMV07Y2FzZSJ0cmFuc2xhdGUz''@;'; put 'put ''ZCI6cmV0dXJuWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLE09dS5kWzBdLnB4fHwwLHg9dS5kWzFdLnB4fHwwLEU9dS5kWzJdLnB4fHwwLDFdO2Nhc2UicGVyc3BlY3RpdmUiOnJldHVyblsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsdS5kWzBdLnB4Py0xL3UuZFswXS5weDowLDAsMCwwLDFdO2Nh''@;'; put 'put ''c2UibWF0cml4IjpyZXR1cm5bdS5kWzBdLHUuZFsxXSwwLDAsdS5kWzJdLHUuZFszXSwwLDAsMCwwLDEsMCx1LmRbNF0sdS5kWzVdLDAsMV07Y2FzZSJtYXRyaXgzZCI6cmV0dXJuIHUuZH19ZnVuY3Rpb24gaCh1KXtyZXR1cm4gMD09PXUubGVuZ3RoP1sxLDAsMCwwLDAsMSwwLDAsMCwwLDEs''@;'; put 'put ''MCwwLDAsMCwxXTp1Lm1hcChvKS5yZWR1Y2UoYSl9dmFyIGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB1KE0pe3JldHVybiBNWzBdWzBdKk1bMV1bMV0qTVsyXVsyXStNWzFdWzBdKk1bMl1bMV0qTVswXVsyXStNWzJdWzBdKk1bMF1bMV0qTVsxXVsyXS1NWzBdWzJdKk1bMV1bMV0qTVsyXVswXS1N''@;'; put 'put ''WzFdWzJdKk1bMl1bMV0qTVswXVswXS1NWzJdWzJdKk1bMF1bMV0qTVsxXVswXX1mdW5jdGlvbiBDKE0pe3ZhciB4PVYoTSk7cmV0dXJuW01bMF0veCxNWzFdL3gsTVsyXS94XX1mdW5jdGlvbiBWKE0pe3JldHVybiBNYXRoLnNxcnQoTVswXSpNWzBdK01bMV0qTVsxXStNWzJdKk1bMl0pfWZ1''@;'; put 'put ''bmN0aW9uIFMoTSx4LEUsdyl7cmV0dXJuW0UqTVswXSt3KnhbMF0sRSpNWzFdK3cqeFsxXSxFKk1bMl0rdyp4WzJdXX1yZXR1cm4gZnVuY3Rpb24gYihNKXt2YXIgeD1bTS5zbGljZSgwLDQpLE0uc2xpY2UoNCw4KSxNLnNsaWNlKDgsMTIpLE0uc2xpY2UoMTIsMTYpXTtpZigxIT09eFszXVsz''@;'; put 'put ''XSlyZXR1cm4gbnVsbDtmb3IodmFyIEU9W10sdz0wO3c8NDt3KyspRS5wdXNoKHhbd10uc2xpY2UoKSk7Zm9yKHc9MDt3PDM7dysrKUVbd11bM109MDtpZigwPT09dShFKSlyZXR1cm4gbnVsbDt2YXIgTixJPVtdO3hbMF1bM118fHhbMV1bM118fHhbMl1bM10/KEkucHVzaCh4WzBdWzNdKSxJ''@;'; put 'put ''LnB1c2goeFsxXVszXSksSS5wdXNoKHhbMl1bM10pLEkucHVzaCh4WzNdWzNdKSxOPWZ1bmN0aW9uIEgoTSx4KXtmb3IodmFyIEU9W10sdz0wO3c8NDt3Kyspe2Zvcih2YXIgTj0wLEk9MDtJPDQ7SSsrKU4rPU1bSV0qeFtJXVt3XTtFLnB1c2goTil9cmV0dXJuIEV9KEksZnVuY3Rpb24gdihN''@;'; put 'put ''KXtyZXR1cm5bW01bMF1bMF0sTVsxXVswXSxNWzJdWzBdLE1bM11bMF1dLFtNWzBdWzFdLE1bMV1bMV0sTVsyXVsxXSxNWzNdWzFdXSxbTVswXVsyXSxNWzFdWzJdLE1bMl1bMl0sTVszXVsyXV0sW01bMF1bM10sTVsxXVszXSxNWzJdWzNdLE1bM11bM11dXX0oZnVuY3Rpb24gcChNKXtmb3Io''@;'; put 'put ''dmFyIHg9MS91KE0pLEU9TVswXVswXSx3PU1bMF1bMV0sTj1NWzBdWzJdLEk9TVsxXVswXSxXPU1bMV1bMV0sTz1NWzFdWzJdLEI9TVsyXVswXSx6PU1bMl1bMV0sbDE9TVsyXVsyXSxhMT1bWyhXKmwxLU8qeikqeCwoTip6LXcqbDEpKngsKHcqTy1OKlcpKngsMF0sWyhPKkItSSpsMSkqeCwo''@;'; put 'put ''RSpsMS1OKkIpKngsKE4qSS1FKk8pKngsMF0sWyhJKnotVypCKSp4LChCKnctRSp6KSp4LChFKlctdypJKSp4LDBdXSxoMT1bXSxwMT0wO3AxPDM7cDErKyl7Zm9yKHZhciBnMT0wLEgxPTA7SDE8MztIMSsrKWcxKz1NWzNdW0gxXSphMVtIMV1bcDFdO2gxLnB1c2goZzEpfXJldHVybiBoMS5w''@;'; put 'put ''dXNoKDEpLGExLnB1c2goaDEpLGExfShFKSkpKTpOPVswLDAsMCwxXTt2YXIgVz14WzNdLnNsaWNlKDAsMyksTz1bXTtPLnB1c2goeFswXS5zbGljZSgwLDMpKTt2YXIgQj1bXTtCLnB1c2goVihPWzBdKSksT1swXT1DKE9bMF0pO3ZhciB6PVtdO08ucHVzaCh4WzFdLnNsaWNlKDAsMykpLHou''@;'; put 'put ''cHVzaChyKE9bMF0sT1sxXSkpLE9bMV09UyhPWzFdLE9bMF0sMSwtelswXSksQi5wdXNoKFYoT1sxXSkpLE9bMV09QyhPWzFdKSx6WzBdLz1CWzFdLE8ucHVzaCh4WzJdLnNsaWNlKDAsMykpLHoucHVzaChyKE9bMF0sT1syXSkpLE9bMl09UyhPWzJdLE9bMF0sMSwtelsxXSksei5wdXNoKHIo''@;'; put 'put ''T1sxXSxPWzJdKSksT1syXT1TKE9bMl0sT1sxXSwxLC16WzJdKSxCLnB1c2goVihPWzJdKSksT1syXT1DKE9bMl0pLHpbMV0vPUJbMl0selsyXS89QlsyXTt2YXIgbDE9ZnVuY3Rpb24gXyhNLHgpe3JldHVybltNWzFdKnhbMl0tTVsyXSp4WzFdLE1bMl0qeFswXS1NWzBdKnhbMl0sTVswXSp4''@;'; put 'put ''WzFdLU1bMV0qeFswXV19KE9bMV0sT1syXSk7aWYocihPWzBdLGwxKTwwKWZvcih3PTA7dzwzO3crKylCW3ddKj0tMSxPW3ddWzBdKj0tMSxPW3ddWzFdKj0tMSxPW3ddWzJdKj0tMTt2YXIgYTEsaDEscDE9T1swXVswXStPWzFdWzFdK09bMl1bMl0rMTtyZXR1cm4gcDE+MWUtND8oYTE9LjUv''@;'; put 'put ''TWF0aC5zcXJ0KHAxKSxoMT1bKE9bMl1bMV0tT1sxXVsyXSkqYTEsKE9bMF1bMl0tT1syXVswXSkqYTEsKE9bMV1bMF0tT1swXVsxXSkqYTEsLjI1L2ExXSk6T1swXVswXT5PWzFdWzFdJiZPWzBdWzBdPk9bMl1bMl0/aDE9Wy4yNSooYTE9MipNYXRoLnNxcnQoMStPWzBdWzBdLU9bMV1bMV0t''@;'; put 'put ''T1syXVsyXSkpLChPWzBdWzFdK09bMV1bMF0pL2ExLChPWzBdWzJdK09bMl1bMF0pL2ExLChPWzJdWzFdLU9bMV1bMl0pL2ExXTpPWzFdWzFdPk9bMl1bMl0/KGExPTIqTWF0aC5zcXJ0KDErT1sxXVsxXS1PWzBdWzBdLU9bMl1bMl0pLGgxPVsoT1swXVsxXStPWzFdWzBdKS9hMSwuMjUqYTEs''@;'; put 'put ''KE9bMV1bMl0rT1syXVsxXSkvYTEsKE9bMF1bMl0tT1syXVswXSkvYTFdKTooYTE9MipNYXRoLnNxcnQoMStPWzJdWzJdLU9bMF1bMF0tT1sxXVsxXSksaDE9WyhPWzBdWzJdK09bMl1bMF0pL2ExLChPWzFdWzJdK09bMl1bMV0pL2ExLC4yNSphMSwoT1sxXVswXS1PWzBdWzFdKS9hMV0pLFtX''@;'; put 'put ''LEIseixoMSxOXX19KCk7ZS5kb3Q9cixlLm1ha2VNYXRyaXhEZWNvbXBvc2l0aW9uPWZ1bmN0aW9uIGYodSl7cmV0dXJuW2coaCh1KSldfSxlLnRyYW5zZm9ybUxpc3RUb01hdHJpeD1ofShGMSksZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbCh2LEgpe3ZhciBDPXYuZXhlYyhIKTtpZihDKXJldHVy''@;'; put 'put ''bltDPXYuaWdub3JlQ2FzZT9DWzBdLnRvTG93ZXJDYXNlKCk6Q1swXSxILnN1YnN0cihDLmxlbmd0aCldfWZ1bmN0aW9uIHIodixIKXt2YXIgQz12KEg9SC5yZXBsYWNlKC9eXHMqLywiIikpO2lmKEMpcmV0dXJuW0NbMF0sQ1sxXS5yZXBsYWNlKC9eXHMqLywiIildfWZ1bmN0aW9uIHUodixI''@;'; put 'put ''LEMsVixTKXtmb3IodmFyIF89W10sYj1bXSxNPVtdLHg9ZnVuY3Rpb24gbyh2LEgpe2Zvcih2YXIgQz12LFY9SDtDJiZWOylDPlY/QyU9VjpWJT1DO3JldHVybiB2KkgvKEMrVil9KFYubGVuZ3RoLFMubGVuZ3RoKSxFPTA7RTx4O0UrKyl7dmFyIHc9SChWW0UlVi5sZW5ndGhdLFNbRSVTLmxl''@;'; put 'put ''bmd0aF0pO2lmKCF3KXJldHVybjtfLnB1c2god1swXSksYi5wdXNoKHdbMV0pLE0ucHVzaCh3WzJdKX1yZXR1cm5bXyxiLGZ1bmN0aW9uKE4pe3ZhciBJPU4ubWFwKGZ1bmN0aW9uKFcsTyl7cmV0dXJuIE1bT10oVyl9KS5qb2luKEMpO3JldHVybiB2P3YoSSk6SX1dfWUuY29uc3VtZVRva2Vu''@;'; put 'put ''PWwsZS5jb25zdW1lVHJpbW1lZD1yLGUuY29uc3VtZVJlcGVhdGVkPWZ1bmN0aW9uIGEodixILEMpe3Y9ci5iaW5kKG51bGwsdik7Zm9yKHZhciBWPVtdOzspe3ZhciBTPXYoQyk7aWYoIVMpcmV0dXJuW1YsQ107aWYoVi5wdXNoKFNbMF0pLCEoUz1sKEgsQz1TWzFdKSl8fCIiPT1TWzFdKXJl''@;'; put 'put ''dHVybltWLENdO0M9U1sxXX19LGUuY29uc3VtZVBhcmVudGhlc2lzZWQ9ZnVuY3Rpb24gYyh2LEgpe2Zvcih2YXIgQz0wLFY9MDtWPEgubGVuZ3RoJiYoIS9cc3wsLy50ZXN0KEhbVl0pfHwwIT1DKTtWKyspaWYoIigiPT1IW1ZdKUMrKztlbHNlIGlmKCIpIj09SFtWXSYmKDA9PS0tQyYmVisr''@;'; put 'put ''LEM8PTApKWJyZWFrO3ZhciBTPXYoSC5zdWJzdHIoMCxWKSk7cmV0dXJuIG51bGw9PVM/dm9pZCAwOltTLEguc3Vic3RyKFYpXX0sZS5pZ25vcmU9ZnVuY3Rpb24gaCh2KXtyZXR1cm4gZnVuY3Rpb24oSCl7dmFyIEM9dihIKTtyZXR1cm4gQyYmKENbMF09dm9pZCAwKSxDfX0sZS5vcHRpb25h''@;'; put 'put ''bD1mdW5jdGlvbiBmKHYsSCl7cmV0dXJuIGZ1bmN0aW9uKEMpe3JldHVybiB2KEMpfHxbSCxDXX19LGUuY29uc3VtZUxpc3Q9ZnVuY3Rpb24gZyh2LEgpe2Zvcih2YXIgQz1bXSxWPTA7Vjx2Lmxlbmd0aDtWKyspe3ZhciBTPWUuY29uc3VtZVRyaW1tZWQodltWXSxIKTtpZighU3x8IiI9PVNb''@;'; put 'put ''MF0pcmV0dXJuO3ZvaWQgMCE9PVNbMF0mJkMucHVzaChTWzBdKSxIPVNbMV19aWYoIiI9PUgpcmV0dXJuIEN9LGUubWVyZ2VOZXN0ZWRSZXBlYXRlZD11LmJpbmQobnVsbCxudWxsKSxlLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkPXUsZS5tZXJnZUxpc3Q9ZnVuY3Rpb24gcCh2LEgsQyl7''@;'; put 'put ''Zm9yKHZhciBWPVtdLFM9W10sXz1bXSxiPTAsTT0wO008Qy5sZW5ndGg7TSsrKWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBDW01dKXt2YXIgeD1DW01dKHZbYl0sSFtiKytdKTtWLnB1c2goeFswXSksUy5wdXNoKHhbMV0pLF8ucHVzaCh4WzJdKX1lbHNlIWZ1bmN0aW9uKEUpe1YucHVzaCghMSks''@;'; put 'put ''Uy5wdXNoKCExKSxfLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gQ1tFXX0pfShNKTtyZXR1cm5bVixTLGZ1bmN0aW9uKEUpe2Zvcih2YXIgdz0iIixOPTA7TjxFLmxlbmd0aDtOKyspdys9X1tOXShFW05dKTtyZXR1cm4gd31dfX0oRjEpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGwoaCl7dmFyIGc9''@;'; put 'put ''e2luc2V0OiExLGxlbmd0aHM6W10sY29sb3I6bnVsbH0sdT1lLmNvbnN1bWVSZXBlYXRlZChmdW5jdGlvbiBmKHApe3ZhciB2PWUuY29uc3VtZVRva2VuKC9eaW5zZXQvaSxwKTtyZXR1cm4gdj8oZy5pbnNldD0hMCx2KToodj1lLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQocCkpPyhnLmxlbmd0''@;'; put 'put ''aHMucHVzaCh2WzBdKSx2KToodj1lLmNvbnN1bWVDb2xvcihwKSk/KGcuY29sb3I9dlswXSx2KTp2b2lkIDB9LC9eLyxoKTtpZih1JiZ1WzBdLmxlbmd0aClyZXR1cm5bZyx1WzFdXX12YXIgbz1mdW5jdGlvbiBjKGgsZixnLHUpe2Z1bmN0aW9uIHAoXyl7cmV0dXJue2luc2V0Ol8sY29sb3I6''@;'; put 'put ''WzAsMCwwLDBdLGxlbmd0aHM6W3tweDowfSx7cHg6MH0se3B4OjB9LHtweDowfV19fWZvcih2YXIgdj1bXSxIPVtdLEM9MDtDPGcubGVuZ3RofHxDPHUubGVuZ3RoO0MrKyl7dmFyIFY9Z1tDXXx8cCh1W0NdLmluc2V0KSxTPXVbQ118fHAoZ1tDXS5pbnNldCk7di5wdXNoKFYpLEgucHVzaChT''@;'; put 'put ''KX1yZXR1cm4gZS5tZXJnZU5lc3RlZFJlcGVhdGVkKGgsZix2LEgpfS5iaW5kKG51bGwsZnVuY3Rpb24gYShoLGYpe2Zvcig7aC5sZW5ndGhzLmxlbmd0aDxNYXRoLm1heChoLmxlbmd0aHMubGVuZ3RoLGYubGVuZ3Rocy5sZW5ndGgpOyloLmxlbmd0aHMucHVzaCh7cHg6MH0pO2Zvcig7Zi5s''@;'; put 'put ''ZW5ndGhzLmxlbmd0aDxNYXRoLm1heChoLmxlbmd0aHMubGVuZ3RoLGYubGVuZ3Rocy5sZW5ndGgpOylmLmxlbmd0aHMucHVzaCh7cHg6MH0pO2lmKGguaW5zZXQ9PWYuaW5zZXQmJiEhaC5jb2xvcj09ISFmLmNvbG9yKXtmb3IodmFyIGcsdT1bXSxwPVtbXSwwXSx2PVtbXSwwXSxIPTA7SDxo''@;'; put 'put ''Lmxlbmd0aHMubGVuZ3RoO0grKyl7dmFyIEM9ZS5tZXJnZURpbWVuc2lvbnMoaC5sZW5ndGhzW0hdLGYubGVuZ3Roc1tIXSwyPT1IKTtwWzBdLnB1c2goQ1swXSksdlswXS5wdXNoKENbMV0pLHUucHVzaChDWzJdKX1pZihoLmNvbG9yJiZmLmNvbG9yKXt2YXIgVj1lLm1lcmdlQ29sb3JzKGgu''@;'; put 'put ''Y29sb3IsZi5jb2xvcik7cFsxXT1WWzBdLHZbMV09VlsxXSxnPVZbMl19cmV0dXJuW3AsdixmdW5jdGlvbihTKXtmb3IodmFyIF89aC5pbnNldD8iaW5zZXQgIjoiICIsYj0wO2I8dS5sZW5ndGg7YisrKV8rPXVbYl0oU1swXVtiXSkrIiAiO3JldHVybiBnJiYoXys9ZyhTWzFdKSksX31dfX0s''@;'; put 'put ''IiwgIik7ZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihmdW5jdGlvbiByKGgpe3ZhciBmPWUuY29uc3VtZVJlcGVhdGVkKGwsL14sLyxoKTtpZihmJiYiIj09ZlsxXSlyZXR1cm4gZlswXX0sbyxbImJveC1zaGFkb3ciLCJ0ZXh0LXNoYWRvdyJdKX0oRjEpLGZ1bmN0aW9uKGUsbCl7ZnVuY3Rpb24g''@;'; put 'put ''cihIKXtyZXR1cm4gSC50b0ZpeGVkKDMpLnJlcGxhY2UoLzArJC8sIiIpLnJlcGxhY2UoL1wuJC8sIiIpfWZ1bmN0aW9uIGEoSCxDLFYpe3JldHVybiBNYXRoLm1pbihDLE1hdGgubWF4KEgsVikpfWZ1bmN0aW9uIGMoSCl7aWYoL15ccypbLStdPyhcZCpcLik/XGQrXHMqJC8udGVzdChIKSly''@;'; put 'put ''ZXR1cm4gTnVtYmVyKEgpfWZ1bmN0aW9uIGcoSCxDKXtyZXR1cm4gZnVuY3Rpb24oVixTKXtyZXR1cm5bVixTLGZ1bmN0aW9uKF8pe3JldHVybiByKGEoSCxDLF8pKX1dfX1mdW5jdGlvbiB1KEgpe3ZhciBDPUgudHJpbSgpLnNwbGl0KC9ccypbXHMsXVxzKi8pO2lmKDAhPT1DLmxlbmd0aCl7''@;'; put 'put ''Zm9yKHZhciBWPVtdLFM9MDtTPEMubGVuZ3RoO1MrKyl7dmFyIF89YyhDW1NdKTtpZih2b2lkIDA9PT1fKXJldHVybjtWLnB1c2goXyl9cmV0dXJuIFZ9fWUuY2xhbXA9YSxlLmFkZFByb3BlcnRpZXNIYW5kbGVyKHUsZnVuY3Rpb24gcChILEMpe2lmKEgubGVuZ3RoPT1DLmxlbmd0aClyZXR1''@;'; put 'put ''cm5bSCxDLGZ1bmN0aW9uKFYpe3JldHVybiBWLm1hcChyKS5qb2luKCIgIil9XX0sWyJzdHJva2UtZGFzaGFycmF5Il0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxnKDAsMS8wKSxbImJvcmRlci1pbWFnZS13aWR0aCIsImxpbmUtaGVpZ2h0Il0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIo''@;'; put 'put ''YyxnKDAsMSksWyJvcGFjaXR5Iiwic2hhcGUtaW1hZ2UtdGhyZXNob2xkIl0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmdW5jdGlvbiBoKEgsQyl7aWYoMCE9SClyZXR1cm4gZygwLDEvMCkoSCxDKX0sWyJmbGV4LWdyb3ciLCJmbGV4LXNocmluayJdKSxlLmFkZFByb3BlcnRpZXNIYW5k''@;'; put 'put ''bGVyKGMsZnVuY3Rpb24gZihILEMpe3JldHVybltILEMsZnVuY3Rpb24oVil7cmV0dXJuIE1hdGgucm91bmQoYSgxLDEvMCxWKSl9XX0sWyJvcnBoYW5zIiwid2lkb3dzIl0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmdW5jdGlvbiB2KEgsQyl7cmV0dXJuW0gsQyxNYXRoLnJvdW5kXX0s''@;'; put 'put ''WyJ6LWluZGV4Il0pLGUucGFyc2VOdW1iZXI9YyxlLnBhcnNlTnVtYmVyTGlzdD11LGUubWVyZ2VOdW1iZXJzPWZ1bmN0aW9uIG8oSCxDKXtyZXR1cm5bSCxDLHJdfSxlLm51bWJlclRvU3RyaW5nPXJ9KEYxKSxmdW5jdGlvbihlLGwpe2UuYWRkUHJvcGVydGllc0hhbmRsZXIoU3RyaW5nLGZ1''@;'; put 'put ''bmN0aW9uIHIoYSxjKXtpZigidmlzaWJsZSI9PWF8fCJ2aXNpYmxlIj09YylyZXR1cm5bMCwxLGZ1bmN0aW9uKG8pe3JldHVybiBvPD0wP2E6bz49MT9jOiJ2aXNpYmxlIn1dfSxbInZpc2liaWxpdHkiXSl9KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIoaCl7aD1oLnRyaW0oKSxvLmZp''@;'; put 'put ''bGxTdHlsZT0iIzAwMCIsby5maWxsU3R5bGU9aDt2YXIgZj1vLmZpbGxTdHlsZTtpZihvLmZpbGxTdHlsZT0iI2ZmZiIsby5maWxsU3R5bGU9aCxmPT1vLmZpbGxTdHlsZSl7by5maWxsUmVjdCgwLDAsMSwxKTt2YXIgZz1vLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhO28uY2xlYXJSZWN0''@;'; put 'put ''KDAsMCwxLDEpO3ZhciB1PWdbM10vMjU1O3JldHVybltnWzBdKnUsZ1sxXSp1LGdbMl0qdSx1XX19ZnVuY3Rpb24gYShoLGYpe3JldHVybltoLGYsZnVuY3Rpb24oZyl7aWYoZ1szXSlmb3IodmFyIHA9MDtwPDM7cCsrKWdbcF09TWF0aC5yb3VuZChNYXRoLm1heCgwLE1hdGgubWluKDI1NSxn''@;'; put 'put ''W3BdL2dbM10pKSk7cmV0dXJuIGdbM109ZS5udW1iZXJUb1N0cmluZyhlLmNsYW1wKDAsMSxnWzNdKSksInJnYmEoIitnLmpvaW4oIiwiKSsiKSJ9XX12YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKTtjLndpZHRo''@;'; put 'put ''PWMuaGVpZ2h0PTE7dmFyIG89Yy5nZXRDb250ZXh0KCIyZCIpO2UuYWRkUHJvcGVydGllc0hhbmRsZXIocixhLFsiYmFja2dyb3VuZC1jb2xvciIsImJvcmRlci1ib3R0b20tY29sb3IiLCJib3JkZXItbGVmdC1jb2xvciIsImJvcmRlci1yaWdodC1jb2xvciIsImJvcmRlci10b3AtY29sb3Ii''@;'; put 'put ''LCJjb2xvciIsImZpbGwiLCJmbG9vZC1jb2xvciIsImxpZ2h0aW5nLWNvbG9yIiwib3V0bGluZS1jb2xvciIsInN0b3AtY29sb3IiLCJzdHJva2UiLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiXSksZS5jb25zdW1lQ29sb3I9ZS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsciksZS5t''@;'; put 'put ''ZXJnZUNvbG9ycz1hfShGMSksZnVuY3Rpb24oZSxsKXtmdW5jdGlvbiByKF8pe2Z1bmN0aW9uIGIoKXt2YXIgVz1JLmV4ZWMoXyk7Tj1XP1dbMF06dm9pZCAwfWZ1bmN0aW9uIHgoKXtpZigiKCIhPT1OKXJldHVybiBmdW5jdGlvbiBNKCl7dmFyIFc9TnVtYmVyKE4pO3JldHVybiBiKCksV30o''@;'; put 'put ''KTtiKCk7dmFyIFc9dygpO3JldHVybiIpIiE9PU4/TmFOOihiKCksVyl9ZnVuY3Rpb24gRSgpe2Zvcih2YXIgVz14KCk7IioiPT09Tnx8Ii8iPT09Tjspe3ZhciBPPU47YigpO3ZhciBCPXgoKTsiKiI9PT1PP1cqPUI6Vy89Qn1yZXR1cm4gV31mdW5jdGlvbiB3KCl7Zm9yKHZhciBXPUUoKTsi''@;'; put 'put ''KyI9PT1OfHwiLSI9PT1OOyl7dmFyIE89TjtiKCk7dmFyIEI9RSgpOyIrIj09PU8/Vys9QjpXLT1CfXJldHVybiBXfXZhciBOLEk9LyhbXCtcLVx3XC5dK3xbXChcKVwqXC9dKS9nO3JldHVybiBiKCksdygpfWZ1bmN0aW9uIGEoXyxiKXtpZigiMCI9PShiPWIudHJpbSgpLnRvTG93ZXJDYXNl''@;'; put 'put ''KCkpJiYicHgiLnNlYXJjaChfKT49MClyZXR1cm57cHg6MH07aWYoL15bXihdKiR8XmNhbGMvLnRlc3QoYikpe2I9Yi5yZXBsYWNlKC9jYWxjXCgvZywiKCIpO3ZhciBNPXt9O2I9Yi5yZXBsYWNlKF8sZnVuY3Rpb24oTyl7cmV0dXJuIE1bT109bnVsbCwiVSIrT30pO2Zvcih2YXIgeD0iVSgi''@;'; put 'put ''K18uc291cmNlKyIpIixFPWIucmVwbGFjZSgvWy0rXT8oXGQqXC4pP1xkKyhbRWVdWy0rXT9cZCspPy9nLCJOIikucmVwbGFjZShuZXcgUmVnRXhwKCJOIit4LCJnIiksIkQiKS5yZXBsYWNlKC9cc1srLV1ccy9nLCJPIikucmVwbGFjZSgvXHMvZywiIiksdz1bL05cKihEKS9nLC8oTnxEKVsq''@;'; put 'put ''XC9dTi9nLC8oTnxEKU9cMS9nLC9cKChOfEQpXCkvZ10sTj0wO048dy5sZW5ndGg7KXdbTl0udGVzdChFKT8oRT1FLnJlcGxhY2Uod1tOXSwiJDEiKSxOPTApOk4rKztpZigiRCI9PUUpe2Zvcih2YXIgSSBpbiBNKXt2YXIgVz1yKGIucmVwbGFjZShuZXcgUmVnRXhwKCJVIitJLCJnIiksIiIp''@;'; put 'put ''LnJlcGxhY2UobmV3IFJlZ0V4cCh4LCJnIiksIiowIikpO2lmKCFpc0Zpbml0ZShXKSlyZXR1cm47TVtJXT1XfXJldHVybiBNfX19ZnVuY3Rpb24gYyhfLGIpe3JldHVybiBvKF8sYiwhMCl9ZnVuY3Rpb24gbyhfLGIsTSl7dmFyIHgsRT1bXTtmb3IoeCBpbiBfKUUucHVzaCh4KTtmb3IoeCBp''@;'; put 'put ''biBiKUUuaW5kZXhPZih4KTwwJiZFLnB1c2goeCk7cmV0dXJuIF89RS5tYXAoZnVuY3Rpb24odyl7cmV0dXJuIF9bd118fDB9KSxiPUUubWFwKGZ1bmN0aW9uKHcpe3JldHVybiBiW3ddfHwwfSksW18sYixmdW5jdGlvbih3KXt2YXIgTj13Lm1hcChmdW5jdGlvbihJLFcpe3JldHVybiAxPT13''@;'; put 'put ''Lmxlbmd0aCYmTSYmKEk9TWF0aC5tYXgoSSwwKSksZS5udW1iZXJUb1N0cmluZyhJKStFW1ddfSkuam9pbigiICsgIik7cmV0dXJuIHcubGVuZ3RoPjE/ImNhbGMoIitOKyIpIjpOfV19dmFyIGg9InB4fGVtfGV4fGNofHJlbXx2d3x2aHx2bWlufHZtYXh8Y218bW18aW58cHR8cGMiLGY9YS5i''@;'; put 'put ''aW5kKG51bGwsbmV3IFJlZ0V4cChoLCJnIikpLGc9YS5iaW5kKG51bGwsbmV3IFJlZ0V4cChoKyJ8JSIsImciKSksdT1hLmJpbmQobnVsbCwvZGVnfHJhZHxncmFkfHR1cm4vZyk7ZS5wYXJzZUxlbmd0aD1mLGUucGFyc2VMZW5ndGhPclBlcmNlbnQ9ZyxlLmNvbnN1bWVMZW5ndGhPclBlcmNl''@;'; put 'put ''bnQ9ZS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsZyksZS5wYXJzZUFuZ2xlPXUsZS5tZXJnZURpbWVuc2lvbnM9bzt2YXIgcD1lLmNvbnN1bWVQYXJlbnRoZXNpc2VkLmJpbmQobnVsbCxmKSx2PWUuY29uc3VtZVJlcGVhdGVkLmJpbmQodm9pZCAwLHAsL14vKSxIPWUuY29uc3Vt''@;'; put 'put ''ZVJlcGVhdGVkLmJpbmQodm9pZCAwLHYsL14sLyk7ZS5jb25zdW1lU2l6ZVBhaXJMaXN0PUg7dmFyIFY9ZS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGMsIiAiKSxTPWUubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxWLCIsIik7ZS5tZXJnZU5vbk5lZ2F0aXZlU2l6''@;'; put 'put ''ZVBhaXI9VixlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGZ1bmN0aW9uKF8pe3ZhciBiPUgoXyk7aWYoYiYmIiI9PWJbMV0pcmV0dXJuIGJbMF19LFMsWyJiYWNrZ3JvdW5kLXNpemUiXSksZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihnLGMsWyJib3JkZXItYm90dG9tLXdpZHRoIiwiYm9yZGVyLWlt''@;'; put 'put ''YWdlLXdpZHRoIiwiYm9yZGVyLWxlZnQtd2lkdGgiLCJib3JkZXItcmlnaHQtd2lkdGgiLCJib3JkZXItdG9wLXdpZHRoIiwiZmxleC1iYXNpcyIsImZvbnQtc2l6ZSIsImhlaWdodCIsImxpbmUtaGVpZ2h0IiwibWF4LWhlaWdodCIsIm1heC13aWR0aCIsIm91dGxpbmUtd2lkdGgiLCJ3aWR0''@;'; put 'put ''aCJdKSxlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGcsbyxbImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIsImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsImJvdHRvbSIsImxlZnQiLCJsZXR0ZXIt''@;'; put 'put ''c3BhY2luZyIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJtaW4taGVpZ2h0IiwibWluLXdpZHRoIiwib3V0bGluZS1vZmZzZXQiLCJwYWRkaW5nLWJvdHRvbSIsInBhZGRpbmctbGVmdCIsInBhZGRpbmctcmlnaHQiLCJwYWRkaW5n''@;'; put 'put ''LXRvcCIsInBlcnNwZWN0aXZlIiwicmlnaHQiLCJzaGFwZS1tYXJnaW4iLCJzdHJva2UtZGFzaG9mZnNldCIsInRleHQtaW5kZW50IiwidG9wIiwidmVydGljYWwtYWxpZ24iLCJ3b3JkLXNwYWNpbmciXSl9KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIoZil7cmV0dXJuIGUuY29uc3Vt''@;'; put 'put ''ZUxlbmd0aE9yUGVyY2VudChmKXx8ZS5jb25zdW1lVG9rZW4oL15hdXRvLyxmKX1mdW5jdGlvbiBhKGYpe3ZhciBnPWUuY29uc3VtZUxpc3QoW2UuaWdub3JlKGUuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXnJlY3QvKSksZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZChudWxsLC9eXCgv''@;'; put 'put ''KSksZS5jb25zdW1lUmVwZWF0ZWQuYmluZChudWxsLHIsL14sLyksZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZChudWxsLC9eXCkvKSldLGYpO2lmKGcmJjQ9PWdbMF0ubGVuZ3RoKXJldHVybiBnWzBdfXZhciBoPWUubWVyZ2VXcmFwcGVkTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGZ1''@;'; put 'put ''bmN0aW9uIG8oZil7cmV0dXJuInJlY3QoIitmKyIpIn0sZnVuY3Rpb24gYyhmLGcpe3JldHVybiJhdXRvIj09Znx8ImF1dG8iPT1nP1shMCwhMSxmdW5jdGlvbih1KXt2YXIgcD11P2Y6ZztpZigiYXV0byI9PXApcmV0dXJuImF1dG8iO3ZhciB2PWUubWVyZ2VEaW1lbnNpb25zKHAscCk7cmV0''@;'; put 'put ''dXJuIHZbMl0odlswXSl9XTplLm1lcmdlRGltZW5zaW9ucyhmLGcpfSwiLCAiKTtlLnBhcnNlQm94PWEsZS5tZXJnZUJveGVzPWgsZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihhLGgsWyJjbGlwIl0pfShGMSksZnVuY3Rpb24oZSxsKXtmdW5jdGlvbiByKFYpe3JldHVybiBmdW5jdGlvbihTKXt2''@;'; put 'put ''YXIgXz0wO3JldHVybiBWLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYj09PXA/U1tfKytdOmJ9KX19ZnVuY3Rpb24gYShWKXtyZXR1cm4gVn1mdW5jdGlvbiBjKFYpe2lmKCJub25lIj09KFY9Vi50b0xvd2VyQ2FzZSgpLnRyaW0oKSkpcmV0dXJuW107Zm9yKHZhciBTLF89L1xzKihcdyspXCgo''@;'; put 'put ''W14pXSopXCkvZyxiPVtdLE09MDtTPV8uZXhlYyhWKTspe2lmKFMuaW5kZXghPU0pcmV0dXJuO009Uy5pbmRleCtTWzBdLmxlbmd0aDt2YXIgeD1TWzFdLEU9Q1t4XTtpZighRSlyZXR1cm47dmFyIHc9U1syXS5zcGxpdCgiLCIpLE49RVswXTtpZihOLmxlbmd0aDx3Lmxlbmd0aClyZXR1cm47''@;'; put 'put ''Zm9yKHZhciBJPVtdLFc9MDtXPE4ubGVuZ3RoO1crKyl7dmFyIE8sQj13W1ddLHo9TltXXTtpZih2b2lkIDA9PT0oTz1CP3tBOmZ1bmN0aW9uKGwxKXtyZXR1cm4iMCI9PWwxLnRyaW0oKT9IOmUucGFyc2VBbmdsZShsMSl9LE46ZS5wYXJzZU51bWJlcixUOmUucGFyc2VMZW5ndGhPclBlcmNl''@;'; put 'put ''bnQsTDplLnBhcnNlTGVuZ3RofVt6LnRvVXBwZXJDYXNlKCldKEIpOnthOkgsbjpJWzBdLHQ6dn1bel0pKXJldHVybjtJLnB1c2goTyl9aWYoYi5wdXNoKHt0OngsZDpJfSksXy5sYXN0SW5kZXg9PVYubGVuZ3RoKXJldHVybiBifX1mdW5jdGlvbiBvKFYpe3JldHVybiBWLnRvRml4ZWQoNiku''@;'; put 'put ''cmVwbGFjZSgiLjAwMDAwMCIsIiIpfWZ1bmN0aW9uIGgoVixTKXtpZihWLmRlY29tcG9zaXRpb25QYWlyIT09Uyl7Vi5kZWNvbXBvc2l0aW9uUGFpcj1TO3ZhciBfPWUubWFrZU1hdHJpeERlY29tcG9zaXRpb24oVil9aWYoUy5kZWNvbXBvc2l0aW9uUGFpciE9PVYpe1MuZGVjb21wb3NpdGlv''@;'; put 'put ''blBhaXI9Vjt2YXIgYj1lLm1ha2VNYXRyaXhEZWNvbXBvc2l0aW9uKFMpfXJldHVybiBudWxsPT1fWzBdfHxudWxsPT1iWzBdP1tbITFdLFshMF0sZnVuY3Rpb24oTSl7cmV0dXJuIE0/U1swXS5kOlZbMF0uZH1dOihfWzBdLnB1c2goMCksYlswXS5wdXNoKDEpLFtfLGIsZnVuY3Rpb24oTSl7''@;'; put 'put ''dmFyIHg9ZS5xdWF0KF9bMF1bM10sYlswXVszXSxNWzVdKTtyZXR1cm4gZS5jb21wb3NlTWF0cml4KE1bMF0sTVsxXSxNWzJdLHgsTVs0XSkubWFwKG8pLmpvaW4oIiwiKX1dKX1mdW5jdGlvbiBmKFYpe3JldHVybiBWLnJlcGxhY2UoL1t4eV0vLCIiKX1mdW5jdGlvbiBnKFYpe3JldHVybiBW''@;'; put 'put ''LnJlcGxhY2UoLyh4fHl8enwzZCk/JC8sIjNkIil9dmFyIHA9bnVsbCx2PXtweDowfSxIPXtkZWc6MH0sQz17bWF0cml4OlsiTk5OTk5OIixbcCxwLDAsMCxwLHAsMCwwLDAsMCwxLDAscCxwLDAsMV0sYV0sbWF0cml4M2Q6WyJOTk5OTk5OTk5OTk5OTk5OIixhXSxyb3RhdGU6WyJBIl0scm90''@;'; put 'put ''YXRleDpbIkEiXSxyb3RhdGV5OlsiQSJdLHJvdGF0ZXo6WyJBIl0scm90YXRlM2Q6WyJOTk5BIl0scGVyc3BlY3RpdmU6WyJMIl0sc2NhbGU6WyJObiIscihbcCxwLDFdKSxhXSxzY2FsZXg6WyJOIixyKFtwLDEsMV0pLHIoW3AsMV0pXSxzY2FsZXk6WyJOIixyKFsxLHAsMV0pLHIoWzEscF0p''@;'; put 'put ''XSxzY2FsZXo6WyJOIixyKFsxLDEscF0pXSxzY2FsZTNkOlsiTk5OIixhXSxza2V3OlsiQWEiLG51bGwsYV0sc2tld3g6WyJBIixudWxsLHIoW3AsSF0pXSxza2V3eTpbIkEiLG51bGwscihbSCxwXSldLHRyYW5zbGF0ZTpbIlR0IixyKFtwLHAsdl0pLGFdLHRyYW5zbGF0ZXg6WyJUIixyKFtw''@;'; put 'put ''LHYsdl0pLHIoW3Asdl0pXSx0cmFuc2xhdGV5OlsiVCIscihbdixwLHZdKSxyKFt2LHBdKV0sdHJhbnNsYXRlejpbIkwiLHIoW3YsdixwXSldLHRyYW5zbGF0ZTNkOlsiVFRMIixhXX07ZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihjLGZ1bmN0aW9uIHUoVixTKXt2YXIgXz1lLm1ha2VNYXRyaXhE''@;'; put 'put ''ZWNvbXBvc2l0aW9uJiYhMCxiPSExO2lmKCFWLmxlbmd0aHx8IVMubGVuZ3RoKXtWLmxlbmd0aHx8KGI9ITAsVj1TLFM9W10pO2Zvcih2YXIgTT0wO008Vi5sZW5ndGg7TSsrKXt2YXIgRT1WW01dLmQsdz0ic2NhbGUiPT0oeD1WW01dLnQpLnN1YnN0cigwLDUpPzE6MDtTLnB1c2goe3Q6eCxk''@;'; put 'put ''OkUubWFwKGZ1bmN0aW9uKEope2lmKCJudW1iZXIiPT10eXBlb2YgSilyZXR1cm4gdzt2YXIgbzE9e307Zm9yKHZhciBNMSBpbiBKKW8xW00xXT13O3JldHVybiBvMX0pfSl9fXZhciBKLG8xLEk9W10sVz1bXSxPPVtdO2lmKFYubGVuZ3RoIT1TLmxlbmd0aCl7aWYoIV8pcmV0dXJuO0k9WyhC''@;'; put 'put ''PWgoVixTKSlbMF1dLFc9W0JbMV1dLE89W1sibWF0cml4IixbQlsyXV1dXX1lbHNlIGZvcihNPTA7TTxWLmxlbmd0aDtNKyspe3ZhciB4LHo9VltNXS50LGwxPVNbTV0udCxhMT1WW01dLmQsaDE9U1tNXS5kLHAxPUNbel0sZzE9Q1tsMV07aWYobzE9bDEsInBlcnNwZWN0aXZlIj09KEo9eikm''@;'; put 'put ''JiJwZXJzcGVjdGl2ZSI9PW8xfHwoIm1hdHJpeCI9PUp8fCJtYXRyaXgzZCI9PUopJiYoIm1hdHJpeCI9PW8xfHwibWF0cml4M2QiPT1vMSkpe2lmKCFfKXJldHVybjt2YXIgQj1oKFtWW01dXSxbU1tNXV0pO0kucHVzaChCWzBdKSxXLnB1c2goQlsxXSksTy5wdXNoKFsibWF0cml4IixbQlsy''@;'; put 'put ''XV1dKX1lbHNle2lmKHo9PWwxKXg9ejtlbHNlIGlmKHAxWzJdJiZnMVsyXSYmZih6KT09ZihsMSkpeD1mKHopLGExPXAxWzJdKGExKSxoMT1nMVsyXShoMSk7ZWxzZXtpZighcDFbMV18fCFnMVsxXXx8Zyh6KSE9ZyhsMSkpe2lmKCFfKXJldHVybjtJPVsoQj1oKFYsUykpWzBdXSxXPVtCWzFd''@;'; put 'put ''XSxPPVtbIm1hdHJpeCIsW0JbMl1dXV07YnJlYWt9eD1nKHopLGExPXAxWzFdKGExKSxoMT1nMVsxXShoMSl9Zm9yKHZhciBIMT1bXSxEMT1bXSxqPVtdLG4xPTA7bjE8YTEubGVuZ3RoO24xKyspQj0oIm51bWJlciI9PXR5cGVvZiBhMVtuMV0/ZS5tZXJnZU51bWJlcnM6ZS5tZXJnZURpbWVu''@;'; put 'put ''c2lvbnMpKGExW24xXSxoMVtuMV0pLEgxW24xXT1CWzBdLEQxW24xXT1CWzFdLGoucHVzaChCWzJdKTtJLnB1c2goSDEpLFcucHVzaChEMSksTy5wdXNoKFt4LGpdKX19aWYoYil7dmFyIF8xPUk7ST1XLFc9XzF9cmV0dXJuW0ksVyxmdW5jdGlvbihKKXtyZXR1cm4gSi5tYXAoZnVuY3Rpb24o''@;'; put 'put ''bzEsTTEpe3ZhciBiMT1vMS5tYXAoZnVuY3Rpb24oQjEsJCl7cmV0dXJuIE9bTTFdWzFdWyRdKEIxKX0pLmpvaW4oIiwiKTtyZXR1cm4ibWF0cml4Ij09T1tNMV1bMF0mJjE2PT1iMS5zcGxpdCgiLCIpLmxlbmd0aCYmKE9bTTFdWzBdPSJtYXRyaXgzZCIpLE9bTTFdWzBdKyIoIitiMSsiKSJ9''@;'; put 'put ''KS5qb2luKCIgIil9XX0sWyJ0cmFuc2Zvcm0iXSksZS50cmFuc2Zvcm1Ub1N2Z01hdHJpeD1mdW5jdGlvbihWKXt2YXIgUz1lLnRyYW5zZm9ybUxpc3RUb01hdHJpeChjKFYpKTtyZXR1cm4ibWF0cml4KCIrbyhTWzBdKSsiICIrbyhTWzFdKSsiICIrbyhTWzRdKSsiICIrbyhTWzVdKSsiICIr''@;'; put 'put ''byhTWzEyXSkrIiAiK28oU1sxM10pKyIpIn19KEYxKSxmdW5jdGlvbihlKXtmdW5jdGlvbiByKGMpe3JldHVybiBjPTEwMCpNYXRoLnJvdW5kKGMvMTAwKSw0MDA9PT0oYz1lLmNsYW1wKDEwMCw5MDAsYykpPyJub3JtYWwiOjcwMD09PWM/ImJvbGQiOlN0cmluZyhjKX1lLmFkZFByb3BlcnRp''@;'; put 'put ''ZXNIYW5kbGVyKGZ1bmN0aW9uIGwoYyl7dmFyIG89TnVtYmVyKGMpO2lmKCEoaXNOYU4obyl8fG88MTAwfHxvPjkwMHx8byUxMDAhPTApKXJldHVybiBvfSxmdW5jdGlvbiBhKGMsbyl7cmV0dXJuW2MsbyxyXX0sWyJmb250LXdlaWdodCJdKX0oRjEpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGwo''@;'; put 'put ''dSl7dmFyIHA9e307Zm9yKHZhciB2IGluIHUpcFt2XT0tdVt2XTtyZXR1cm4gcH1mdW5jdGlvbiByKHUpe3JldHVybiBlLmNvbnN1bWVUb2tlbigvXihsZWZ0fGNlbnRlcnxyaWdodHx0b3B8Ym90dG9tKVxiL2ksdSl8fGUuY29uc3VtZUxlbmd0aE9yUGVyY2VudCh1KX1mdW5jdGlvbiBhKHUs''@;'; put 'put ''cCl7dmFyIHY9ZS5jb25zdW1lUmVwZWF0ZWQociwvXi8scCk7aWYodiYmIiI9PXZbMV0pe3ZhciBIPXZbMF07aWYoSFswXT1IWzBdfHwiY2VudGVyIixIWzFdPUhbMV18fCJjZW50ZXIiLDM9PXUmJihIWzJdPUhbMl18fHtweDowfSksSC5sZW5ndGg9PXUpe2lmKC90b3B8Ym90dG9tLy50ZXN0''@;'; put 'put ''KEhbMF0pfHwvbGVmdHxyaWdodC8udGVzdChIWzFdKSl7dmFyIEM9SFswXTtIWzBdPUhbMV0sSFsxXT1DfWlmKC9sZWZ0fHJpZ2h0fGNlbnRlcnxPYmplY3QvLnRlc3QoSFswXSkmJi90b3B8Ym90dG9tfGNlbnRlcnxPYmplY3QvLnRlc3QoSFsxXSkpcmV0dXJuIEgubWFwKGZ1bmN0aW9uKFYp''@;'; put 'put ''e3JldHVybiJvYmplY3QiPT10eXBlb2YgVj9WOmhbVl19KX19fWZ1bmN0aW9uIGModSl7dmFyIHA9ZS5jb25zdW1lUmVwZWF0ZWQociwvXi8sdSk7aWYocCl7Zm9yKHZhciB2PXBbMF0sSD1beyIlIjo1MH0seyIlIjo1MH1dLEM9MCxWPSExLFM9MDtTPHYubGVuZ3RoO1MrKyl7dmFyIF89dltT''@;'; put 'put ''XTsic3RyaW5nIj09dHlwZW9mIF8/KFY9L2JvdHRvbXxyaWdodC8udGVzdChfKSxIW0M9e2xlZnQ6MCxyaWdodDowLGNlbnRlcjpDLHRvcDoxLGJvdHRvbToxfVtfXV09aFtfXSwiY2VudGVyIj09XyYmQysrKTooViYmKChfPWwoXykpWyIlIl09KF9bIiUiXXx8MCkrMTAwKSxIW0NdPV8sQysr''@;'; put 'put ''LFY9ITEpfXJldHVybltILHBbMV1dfX12YXIgaD17bGVmdDp7IiUiOjB9LGNlbnRlcjp7IiUiOjUwfSxyaWdodDp7IiUiOjEwMH0sdG9wOnsiJSI6MH0sYm90dG9tOnsiJSI6MTAwfX0sZj1lLm1lcmdlTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGUubWVyZ2VEaW1lbnNpb25zLCIgIik7ZS5h''@;'; put 'put ''ZGRQcm9wZXJ0aWVzSGFuZGxlcihhLmJpbmQobnVsbCwzKSxmLFsidHJhbnNmb3JtLW9yaWdpbiJdKSxlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGEuYmluZChudWxsLDIpLGYsWyJwZXJzcGVjdGl2ZS1vcmlnaW4iXSksZS5jb25zdW1lUG9zaXRpb249YyxlLm1lcmdlT2Zmc2V0TGlzdD1mO3Zh''@;'; put 'put ''ciBnPWUubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKG51bGwsZiwiLCAiKTtlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGZ1bmN0aW9uIG8odSl7dmFyIHA9ZS5jb25zdW1lUmVwZWF0ZWQoYywvXiwvLHUpO2lmKHAmJiIiPT1wWzFdKXJldHVybiBwWzBdfSxnLFsiYmFja2dyb3VuZC1wb3NpdGlv''@;'; put 'put ''biIsIm9iamVjdC1wb3NpdGlvbiJdKX0oRjEpLGZ1bmN0aW9uKGUpe3ZhciBhPWUuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGUucGFyc2VMZW5ndGhPclBlcmNlbnQpLGM9ZS5jb25zdW1lUmVwZWF0ZWQuYmluZCh2b2lkIDAsYSwvXi8pLG89ZS5tZXJnZU5lc3RlZFJlcGVhdGVk''@;'; put 'put ''LmJpbmQodm9pZCAwLGUubWVyZ2VEaW1lbnNpb25zLCIgIiksaD1lLm1lcmdlTmVzdGVkUmVwZWF0ZWQuYmluZCh2b2lkIDAsbywiLCIpO2UuYWRkUHJvcGVydGllc0hhbmRsZXIoZnVuY3Rpb24gbChmKXt2YXIgZz1lLmNvbnN1bWVUb2tlbigvXmNpcmNsZS8sZik7aWYoZyYmZ1swXSlyZXR1''@;'; put 'put ''cm5bImNpcmNsZSJdLmNvbmNhdChlLmNvbnN1bWVMaXN0KFtlLmlnbm9yZShlLmNvbnN1bWVUb2tlbi5iaW5kKHZvaWQgMCwvXlwoLykpLGEsZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZCh2b2lkIDAsL15hdC8pKSxlLmNvbnN1bWVQb3NpdGlvbixlLmlnbm9yZShlLmNvbnN1bWVUb2tl''@;'; put 'put ''bi5iaW5kKHZvaWQgMCwvXlwpLykpXSxnWzFdKSk7dmFyIHU9ZS5jb25zdW1lVG9rZW4oL15lbGxpcHNlLyxmKTtpZih1JiZ1WzBdKXJldHVyblsiZWxsaXBzZSJdLmNvbmNhdChlLmNvbnN1bWVMaXN0KFtlLmlnbm9yZShlLmNvbnN1bWVUb2tlbi5iaW5kKHZvaWQgMCwvXlwoLykpLGMsZS5p''@;'; put 'put ''Z25vcmUoZS5jb25zdW1lVG9rZW4uYmluZCh2b2lkIDAsL15hdC8pKSxlLmNvbnN1bWVQb3NpdGlvbixlLmlnbm9yZShlLmNvbnN1bWVUb2tlbi5iaW5kKHZvaWQgMCwvXlwpLykpXSx1WzFdKSk7dmFyIHA9ZS5jb25zdW1lVG9rZW4oL15wb2x5Z29uLyxmKTtyZXR1cm4gcCYmcFswXT9bInBv''@;'; put 'put ''bHlnb24iXS5jb25jYXQoZS5jb25zdW1lTGlzdChbZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZCh2b2lkIDAsL15cKC8pKSxlLm9wdGlvbmFsKGUuY29uc3VtZVRva2VuLmJpbmQodm9pZCAwLC9ebm9uemVyb1xzKix8XmV2ZW5vZGRccyosLyksIm5vbnplcm8sIiksZS5jb25zdW1lU2l6''@;'; put 'put ''ZVBhaXJMaXN0LGUuaWdub3JlKGUuY29uc3VtZVRva2VuLmJpbmQodm9pZCAwLC9eXCkvKSldLHBbMV0pKTp2b2lkIDB9LGZ1bmN0aW9uIHIoZixnKXtpZihmWzBdPT09Z1swXSlyZXR1cm4iY2lyY2xlIj09ZlswXT9lLm1lcmdlTGlzdChmLnNsaWNlKDEpLGcuc2xpY2UoMSksWyJjaXJjbGUo''@;'; put 'put ''IixlLm1lcmdlRGltZW5zaW9ucywiIGF0ICIsZS5tZXJnZU9mZnNldExpc3QsIikiXSk6ImVsbGlwc2UiPT1mWzBdP2UubWVyZ2VMaXN0KGYuc2xpY2UoMSksZy5zbGljZSgxKSxbImVsbGlwc2UoIixlLm1lcmdlTm9uTmVnYXRpdmVTaXplUGFpciwiIGF0ICIsZS5tZXJnZU9mZnNldExpc3Qs''@;'; put 'put ''IikiXSk6InBvbHlnb24iPT1mWzBdJiZmWzFdPT1nWzFdP2UubWVyZ2VMaXN0KGYuc2xpY2UoMiksZy5zbGljZSgyKSxbInBvbHlnb24oIixmWzFdLGgsIikiXSk6dm9pZCAwfSxbInNoYXBlLW91dHNpZGUiXSl9KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIobyxoKXtoLmNvbmNhdChb''@;'; put 'put ''b10pLmZvckVhY2goZnVuY3Rpb24oZil7ZiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJihhW29dPWYpLGNbZl09b30pfXZhciBhPXt9LGM9e307cigidHJhbnNmb3JtIixbIndlYmtpdFRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIl0pLHIoInRyYW5zZm9ybU9yaWdpbiIsWyJ3''@;'; put 'put ''ZWJraXRUcmFuc2Zvcm1PcmlnaW4iXSkscigicGVyc3BlY3RpdmUiLFsid2Via2l0UGVyc3BlY3RpdmUiXSkscigicGVyc3BlY3RpdmVPcmlnaW4iLFsid2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iXSksZS5wcm9wZXJ0eU5hbWU9ZnVuY3Rpb24obyl7cmV0dXJuIGFbb118fG99LGUudW5wcmVm''@;'; put 'put ''aXhlZFByb3BlcnR5TmFtZT1mdW5jdGlvbihvKXtyZXR1cm4gY1tvXXx8b319KEYxKX0oKSxmdW5jdGlvbigpe2lmKHZvaWQgMD09PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmFuaW1hdGUoW10pLm9uY2FuY2VsKXtpZih3aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5v''@;'; put 'put ''dyl2YXIgaz1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX07ZWxzZSBrPWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9O3ZhciBBPWZ1bmN0aW9uKGwscixhKXt0aGlzLnRhcmdldD1sLHRoaXMuY3VycmVudFRpbWU9cix0aGlzLnRpbWVsaW5lVGltZT1hLHRoaXMudHlw''@;'; put 'put ''ZT0iY2FuY2VsIix0aGlzLmJ1YmJsZXM9ITEsdGhpcy5jYW5jZWxhYmxlPSExLHRoaXMuY3VycmVudFRhcmdldD1sLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMSx0aGlzLmV2ZW50UGhhc2U9RXZlbnQuQVRfVEFSR0VULHRoaXMudGltZVN0YW1wPURhdGUubm93KCl9LGU9d2luZG93LkVsZW1l''@;'; put 'put ''bnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24obCxyKXt2YXIgYT1lLmNhbGwodGhpcyxsLHIpO2EuX2NhbmNlbEhhbmRsZXJzPVtdLGEub25jYW5jZWw9bnVsbDt2YXIgYz1hLmNhbmNlbDthLmNhbmNlbD1mdW5jdGlvbigpe2Mu''@;'; put 'put ''Y2FsbCh0aGlzKTt2YXIgZj1uZXcgQSh0aGlzLG51bGwsaygpKSxnPXRoaXMuX2NhbmNlbEhhbmRsZXJzLmNvbmNhdCh0aGlzLm9uY2FuY2VsP1t0aGlzLm9uY2FuY2VsXTpbXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2cuZm9yRWFjaChmdW5jdGlvbih1KXt1LmNhbGwoZi50YXJnZXQsZil9''@;'; put 'put ''KX0sMCl9O3ZhciBvPWEuYWRkRXZlbnRMaXN0ZW5lcjthLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZixnKXsiZnVuY3Rpb24iPT10eXBlb2YgZyYmImNhbmNlbCI9PWY/dGhpcy5fY2FuY2VsSGFuZGxlcnMucHVzaChnKTpvLmNhbGwodGhpcyxmLGcpfTt2YXIgaD1hLnJlbW92ZUV2ZW50''@;'; put 'put ''TGlzdGVuZXI7cmV0dXJuIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihmLGcpe2lmKCJjYW5jZWwiPT1mKXt2YXIgdT10aGlzLl9jYW5jZWxIYW5kbGVycy5pbmRleE9mKGcpO3U+PTAmJnRoaXMuX2NhbmNlbEhhbmRsZXJzLnNwbGljZSh1LDEpfWVsc2UgaC5jYWxsKHRoaXMsZixn''@;'; put 'put ''KX0sYX19fSgpLGZ1bmN0aW9uKGspe3ZhciBBPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlPW51bGwsbD0hMTt0cnl7dmFyIGE9IjAiPT1nZXRDb21wdXRlZFN0eWxlKEEpLmdldFByb3BlcnR5VmFsdWUoIm9wYWNpdHkiKT8iMSI6IjAiOyhlPUEuYW5pbWF0ZSh7b3BhY2l0eTpbYSxhXX0s''@;'; put 'put ''e2R1cmF0aW9uOjF9KSkuY3VycmVudFRpbWU9MCxsPWdldENvbXB1dGVkU3R5bGUoQSkuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpPT1hfWNhdGNoKG8pe31maW5hbGx5e2UmJmUuY2FuY2VsKCl9aWYoIWwpe3ZhciBjPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRv''@;'; put 'put ''dy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKG8saCl7cmV0dXJuIHdpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJm9bU3ltYm9sLml0ZXJhdG9yXSYmKG89QXJyYXkuZnJvbShvKSksQXJyYXkuaXNBcnJheShvKXx8bnVsbD09''@;'; put 'put ''PW98fChvPWsuY29udmVydFRvQXJyYXlGb3JtKG8pKSxjLmNhbGwodGhpcyxvLGgpfX19KFgpfSgpLGZ1bmN0aW9uKFgsRjEpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/RjEoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYm''@;'; put 'put ''ZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sRjEpOkYxKChYPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOlh8fHNlbGYpLm1hcmtlZD17fSl9KHRoaXMsZnVuY3Rpb24oWCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEYxKCQsUil7Zm9yKHZhciBaPTA7WjxS''@;'; put 'put ''Lmxlbmd0aDtaKyspe3ZhciBEPVJbWl07RC5lbnVtZXJhYmxlPUQuZW51bWVyYWJsZXx8ITEsRC5jb25maWd1cmFibGU9ITAsInZhbHVlImluIEQmJihELndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxELmtleSxEKX19ZnVuY3Rpb24gaygkLFIpeyhudWxsPT1SfHxSPiQu''@;'; put 'put ''bGVuZ3RoKSYmKFI9JC5sZW5ndGgpO2Zvcih2YXIgWj0wLEQ9bmV3IEFycmF5KFIpO1o8UjtaKyspRFtaXT0kW1pdO3JldHVybiBEfWZ1bmN0aW9uIEEoJCxSKXt2YXIgWixEPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiYkW1N5bWJvbC5pdGVyYXRvcl18fCRbIkBAaXRlcmF0b3IiXTtp''@;'; put 'put ''ZihEKXJldHVybihEPUQuY2FsbCgkKSkubmV4dC5iaW5kKEQpO2lmKEFycmF5LmlzQXJyYXkoJCl8fChEPWZ1bmN0aW9uKHksVCl7dmFyIFA7aWYoeSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHk/ayh5LFQpOiJNYXAiPT09KFA9Ik9iamVjdCI9PT0oUD1PYmplY3QucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nLmNhbGwoeSkuc2xpY2UoOCwtMSkpJiZ5LmNvbnN0cnVjdG9yP3kuY29uc3RydWN0b3IubmFtZTpQKXx8IlNldCI9PT1QP0FycmF5LmZyb20oeSk6IkFyZ3VtZW50cyI9PT1QfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChQKT9rKHksVCk6dm9p''@;'; put 'put ''ZCAwfSgkKSl8fFImJiQmJiJudW1iZXIiPT10eXBlb2YgJC5sZW5ndGgpcmV0dXJuIEQmJigkPUQpLFo9MCxmdW5jdGlvbigpe3JldHVybiBaPj0kLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6JFtaKytdfX07dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRv''@;'; put 'put ''IGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIGUoKXtyZXR1cm57YXN5bmM6ITEsYmFzZVVybDpudWxsLGJyZWFr''@;'; put 'put ''czohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhlYWRlcklkczohMCxoZWFkZXJQcmVmaXg6IiIsaGlnaGxpZ2h0Om51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6''@;'; put 'put ''ITEsc21hcnRMaXN0czohMSxzbWFydHlwYW50czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51bGwseGh0bWw6ITF9fWZ1bmN0aW9uIGwoJCl7cmV0dXJuIGhbJF19WC5kZWZhdWx0cz17YXN5bmM6ITEsYmFzZVVybDpudWxsLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEw''@;'; put 'put ''LGhlYWRlcklkczohMCxoZWFkZXJQcmVmaXg6IiIsaGlnaGxpZ2h0Om51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnRMaXN0czohMSxzbWFydHlwYW50''@;'; put 'put ''czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51bGwseGh0bWw6ITF9O3ZhciByPS9bJjw+IiddLyxhPS9bJjw+IiddL2csYz0vWzw+IiddfCYoPyEjP1x3KzspLyxvPS9bPD4iJ118Jig/ISM/XHcrOykvZyxoPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm''@;'; put 'put ''cXVvdDsiLCInIjoiJiMzOTsifTtmdW5jdGlvbiBmKCQsUil7aWYoUil7aWYoci50ZXN0KCQpKXJldHVybiAkLnJlcGxhY2UoYSxsKX1lbHNlIGlmKGMudGVzdCgkKSlyZXR1cm4gJC5yZXBsYWNlKG8sbCk7cmV0dXJuICR9dmFyIGc9LyYoIyg/OlxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/''@;'; put 'put ''Olx3KykpOz8vZ2k7ZnVuY3Rpb24gdSgkKXtyZXR1cm4gJC5yZXBsYWNlKGcsZnVuY3Rpb24oUixaKXtyZXR1cm4iY29sb24iPT09KFo9Wi50b0xvd2VyQ2FzZSgpKT8iOiI6IiMiPT09Wi5jaGFyQXQoMCk/IngiPT09Wi5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCha''@;'; put 'put ''LnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK1ouc3Vic3RyaW5nKDEpKToiIn0pfXZhciBwPS8oXnxbXlxbXSlcXi9nO2Z1bmN0aW9uIHYoJCxSKXskPSJzdHJpbmciPT10eXBlb2YgJD8kOiQuc291cmNlLFI9Unx8IiI7dmFyIFo9e3JlcGxhY2U6ZnVuY3Rpb24oRCx5''@;'; put 'put ''KXtyZXR1cm4geT0oeT15LnNvdXJjZXx8eSkucmVwbGFjZShwLCIkMSIpLCQ9JC5yZXBsYWNlKEQseSksWn0sZ2V0UmVnZXg6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJlZ0V4cCgkLFIpfX07cmV0dXJuIFp9dmFyIEg9L1teXHc6XS9nLEM9L14kfF5bYS16XVthLXowLTkrLi1dKjp8Xls/I10v''@;'; put 'put ''aTtmdW5jdGlvbiBWKCQsUixaKXtpZigkKXt0cnl7RD1kZWNvZGVVUklDb21wb25lbnQodShaKSkucmVwbGFjZShILCIiKS50b0xvd2VyQ2FzZSgpfWNhdGNoKHkpe3JldHVybiBudWxsfWlmKDA9PT1ELmluZGV4T2YoImphdmFzY3JpcHQ6Iil8fDA9PT1ELmluZGV4T2YoInZic2NyaXB0OiIp''@;'; put 'put ''fHwwPT09RC5pbmRleE9mKCJkYXRhOiIpKXJldHVybiBudWxsfXZhciBEO1ImJiFDLnRlc3QoWikmJigkPVosU1siICIrKEQ9UildfHwoU1siICIrRF09Xy50ZXN0KEQpP0QrIi8iOncoRCwiLyIsITApKSxSPS0xPT09KEQ9U1siICIrRF0pLmluZGV4T2YoIjoiKSxaPSIvLyI9PT0kLnN1YnN0''@;'; put 'put ''cmluZygwLDIpP1I/JDpELnJlcGxhY2UoYiwiJDEiKSskOiIvIj09PSQuY2hhckF0KDApP1I/JDpELnJlcGxhY2UoTSwiJDEiKSskOkQrJCk7dHJ5e1o9ZW5jb2RlVVJJKFopLnJlcGxhY2UoLyUyNS9nLCIlIil9Y2F0Y2goeSl7cmV0dXJuIG51bGx9cmV0dXJuIFp9dmFyIFM9e30sXz0vXlte''@;'; put 'put ''Ol0rOlwvKlteL10qJC8sYj0vXihbXjpdKzopW1xzXFNdKiQvLE09L14oW146XSs6XC8qW14vXSopW1xzXFNdKiQvLG4xPXtleGVjOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24geCgkKXtmb3IodmFyIFIsWixEPTE7RDxhcmd1bWVudHMubGVuZ3RoO0QrKylmb3IoWiBpbiBSPWFyZ3VtZW50c1tE''@;'; put 'put ''XSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUixaKSYmKCRbWl09UltaXSk7cmV0dXJuICR9ZnVuY3Rpb24gRSgkLFIpe3ZhciBaPSQucmVwbGFjZSgvXHwvZyxmdW5jdGlvbih5LFQsUCl7Zm9yKHZhciB0MT0hMSxzMT1UOzA8PS0tczEmJiJcXCI9PT1QW3MxXTspdDE9''@;'; put 'put ''IXQxO3JldHVybiB0MT8ifCI6IiB8In0pLnNwbGl0KC8gXHwvKSxEPTA7aWYoWlswXS50cmltKCl8fFouc2hpZnQoKSwwPFoubGVuZ3RoJiYhWltaLmxlbmd0aC0xXS50cmltKCkmJloucG9wKCksWi5sZW5ndGg+UilaLnNwbGljZShSKTtlbHNlIGZvcig7Wi5sZW5ndGg8UjspWi5wdXNoKCIi''@;'; put 'put ''KTtmb3IoO0Q8Wi5sZW5ndGg7RCsrKVpbRF09WltEXS50cmltKCkucmVwbGFjZSgvXFxcfC9nLCJ8Iik7cmV0dXJuIFp9ZnVuY3Rpb24gdygkLFIsWil7dmFyIEQ9JC5sZW5ndGg7aWYoMD09PUQpcmV0dXJuIiI7Zm9yKHZhciB5PTA7eTxEOyl7dmFyIFQ9JC5jaGFyQXQoRC15LTEpO2lmKChU''@;'; put 'put ''IT09Unx8WikmJihUPT09Unx8IVopKWJyZWFrO3krK31yZXR1cm4gJC5zbGljZSgwLEQteSl9ZnVuY3Rpb24gTigkKXskJiYkLnNhbml0aXplJiYhJC5zaWxlbnQmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHNhbml0aXplIGFuZCBzYW5pdGl6ZXIgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRl''@;'; put 'put ''ZCBzaW5jZSB2ZXJzaW9uIDAuNy4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnLyMvVVNJTkdfQURWQU5DRUQubWQjb3B0aW9ucyIpfWZ1bmN0aW9uIEkoJCxSKXtpZihS''@;'; put 'put ''PDEpcmV0dXJuIiI7Zm9yKHZhciBaPSIiOzE8UjspMSZSJiYoWis9JCksUj4+PTEsJCs9JDtyZXR1cm4gWiskfWZ1bmN0aW9uIFcoJCxULFosRCl7dmFyIHk9VC5ocmVmLFA9KFQ9VC50aXRsZT9mKFQudGl0bGUpOm51bGwsJFsxXS5yZXBsYWNlKC9cXChbXFtcXV0pL2csIiQxIikpO3JldHVy''@;'; put 'put ''biIhIiE9PSRbMF0uY2hhckF0KDApPyhELnN0YXRlLmluTGluaz0hMCwkPXt0eXBlOiJsaW5rIixyYXc6WixocmVmOnksdGl0bGU6VCx0ZXh0OlAsdG9rZW5zOkQuaW5saW5lVG9rZW5zKFApfSxELnN0YXRlLmluTGluaz0hMSwkKTp7dHlwZToiaW1hZ2UiLHJhdzpaLGhyZWY6eSx0aXRsZTpU''@;'; put 'put ''LHRleHQ6ZihQKX19dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiAkKFope3RoaXMub3B0aW9ucz1afHxYLmRlZmF1bHRzfXZhciBSPSQucHJvdG90eXBlO3JldHVybiBSLnNwYWNlPWZ1bmN0aW9uKFope2lmKChaPXRoaXMucnVsZXMuYmxvY2submV3bGluZS5leGVjKFopKSYmMDxaWzBdLmxl''@;'; put 'put ''bmd0aClyZXR1cm57dHlwZToic3BhY2UiLHJhdzpaWzBdfX0sUi5jb2RlPWZ1bmN0aW9uKHkpe3ZhciBEO2lmKHk9dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoeSkpcmV0dXJuIEQ9eVswXS5yZXBsYWNlKC9eIHsxLDR9L2dtLCIiKSx7dHlwZToiY29kZSIscmF3OnlbMF0sY29kZUJsb2Nr''@;'; put 'put ''U3R5bGU6ImluZGVudGVkIix0ZXh0OnRoaXMub3B0aW9ucy5wZWRhbnRpYz9EOncoRCwiXG4iKX19LFIuZmVuY2VzPWZ1bmN0aW9uKHQxKXt2YXIgRCx5LFQsUDtpZih0MT10aGlzLnJ1bGVzLmJsb2NrLmZlbmNlcy5leGVjKHQxKSlyZXR1cm4geT1EPXQxWzBdLFQ9dDFbM118fCIiLHk9bnVs''@;'; put 'put ''bD09PSh5PUQubWF0Y2goL14oXHMrKSg/OmBgYCkvKSk/VDooUD15WzFdLFQuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKHMxKXt2YXIgZjE9czEubWF0Y2goL15ccysvKTtyZXR1cm4gbnVsbCE9PWYxJiZmMVswXS5sZW5ndGg+PVAubGVuZ3RoP3MxLnNsaWNlKFAubGVuZ3RoKTpzMX0pLmpv''@;'; put 'put ''aW4oIlxuIikpLHt0eXBlOiJjb2RlIixyYXc6RCxsYW5nOnQxWzJdJiZ0MVsyXS50cmltKCksdGV4dDp5fX0sUi5oZWFkaW5nPWZ1bmN0aW9uKFQpe3ZhciBELHk7aWYoVD10aGlzLnJ1bGVzLmJsb2NrLmhlYWRpbmcuZXhlYyhUKSlyZXR1cm4gRD1UWzJdLnRyaW0oKSwvIyQvLnRlc3QoRCkm''@;'; put 'put ''Jih5PXcoRCwiIyIpLCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJnkmJiEvICQvLnRlc3QoeSl8fChEPXkudHJpbSgpKSkse3R5cGU6ImhlYWRpbmciLHJhdzpUWzBdLGRlcHRoOlRbMV0ubGVuZ3RoLHRleHQ6RCx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoRCl9fSxSLmhyPWZ1bmN0aW9uKFop''@;'; put 'put ''e2lmKFo9dGhpcy5ydWxlcy5ibG9jay5oci5leGVjKFopKXJldHVybnt0eXBlOiJociIscmF3OlpbMF19fSxSLmJsb2NrcXVvdGU9ZnVuY3Rpb24oeSl7dmFyIEQ7aWYoeT10aGlzLnJ1bGVzLmJsb2NrLmJsb2NrcXVvdGUuZXhlYyh5KSlyZXR1cm4gRD15WzBdLnJlcGxhY2UoL14gKj5bIFx0''@;'; put 'put ''XT8vZ20sIiIpLHt0eXBlOiJibG9ja3F1b3RlIixyYXc6eVswXSx0b2tlbnM6dGhpcy5sZXhlci5ibG9ja1Rva2VucyhELFtdKSx0ZXh0OkR9fSxSLmxpc3Q9ZnVuY3Rpb24oWil7dmFyIEQ9dGhpcy5ydWxlcy5ibG9jay5saXN0LmV4ZWMoWik7aWYoRCl7dmFyIHksVCxQLHQxLHMxLGYxLFks''@;'; put 'put ''cSxRLGQxLE4xLFMxPTE8KGkxPURbMV0udHJpbSgpKS5sZW5ndGgscjE9e3R5cGU6Imxpc3QiLHJhdzoiIixvcmRlcmVkOlMxLHN0YXJ0OlMxPytpMS5zbGljZSgwLC0xKToiIixsb29zZTohMSxpdGVtczpbXX0saTE9UzE/IlxcZHsxLDl9XFwiK2kxLnNsaWNlKC0xKToiXFwiK2kxO3RoaXMu''@;'; put 'put ''b3B0aW9ucy5wZWRhbnRpYyYmKGkxPVMxP2kxOiJbKistXSIpO2Zvcih2YXIgQTE9bmV3IFJlZ0V4cCgiXiggezAsM30iK2kxKyIpKCg/OltcdCBdW15cXG5dKik/KD86XFxufCQpKSIpO1omJihOMT0hMSxEPUExLmV4ZWMoWikpJiYhdGhpcy5ydWxlcy5ibG9jay5oci50ZXN0KFopOyl7aWYo''@;'; put 'put ''Wj1aLnN1YnN0cmluZygoeT1EWzBdKS5sZW5ndGgpLFk9RFsyXS5zcGxpdCgiXG4iLDEpWzBdLHE9Wi5zcGxpdCgiXG4iLDEpWzBdLHRoaXMub3B0aW9ucy5wZWRhbnRpYz8odDE9MixkMT1ZLnRyaW1MZWZ0KCkpOih0MT1EWzJdLnNlYXJjaCgvW14gXS8pLGQxPVkuc2xpY2UodDE9NDx0MT8x''@;'; put 'put ''OnQxKSx0MSs9RFsxXS5sZW5ndGgpLHMxPSExLCFZJiYvXiAqJC8udGVzdChxKSYmKHkrPXErIlxuIixaPVouc3Vic3RyaW5nKHEubGVuZ3RoKzEpLE4xPSEwKSwhTjEpZm9yKHZhciB4MT1uZXcgUmVnRXhwKCJeIHswLCIrTWF0aC5taW4oMyx0MS0xKSsifSg/OlsqKy1dfFxcZHsxLDl9Wy4p''@;'; put 'put ''XSkoKD86IFteXFxuXSopPyg/OlxcbnwkKSkiKSxJMT1uZXcgUmVnRXhwKCJeIHswLCIrTWF0aC5taW4oMyx0MS0xKSsifSgoPzotICopezMsfXwoPzpfICopezMsfXwoPzpcXCogKil7Myx9KSg/Olxcbit8JCkiKSxKMT1uZXcgUmVnRXhwKCJeIHswLCIrTWF0aC5taW4oMyx0MS0xKSsifSg/''@;'; put 'put ''OmBgYHx+fn4pIiksdDA9bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMsdDEtMSkrIn0jIik7WiYmKFk9UT1aLnNwbGl0KCJcbiIsMSlbMF0sdGhpcy5vcHRpb25zLnBlZGFudGljJiYoWT1ZLnJlcGxhY2UoL14gezEsNH0oPz0oIHs0fSkqW14gXSkvZywiICAiKSksIUoxLnRlc3QoWSkp''@;'; put 'put ''JiYhdDAudGVzdChZKSYmIXgxLnRlc3QoWSkmJiFJMS50ZXN0KFopOyl7aWYoWS5zZWFyY2goL1teIF0vKT49dDF8fCFZLnRyaW0oKSlkMSs9IlxuIitZLnNsaWNlKHQxKTtlbHNle2lmKHMxKWJyZWFrO2QxKz0iXG4iK1l9czF8fFkudHJpbSgpfHwoczE9ITApLHkrPVErIlxuIixaPVouc3Vi''@;'; put 'put ''c3RyaW5nKFEubGVuZ3RoKzEpfXIxLmxvb3NlfHwoZjE/cjEubG9vc2U9ITA6L1xuICpcbiAqJC8udGVzdCh5KSYmKGYxPSEwKSksdGhpcy5vcHRpb25zLmdmbSYmKFQ9L15cW1sgeFhdXF0gLy5leGVjKGQxKSkmJihQPSJbIF0gIiE9PVRbMF0sZDE9ZDEucmVwbGFjZSgvXlxbWyB4WF1cXSAr''@;'; put 'put ''LywiIikpLHIxLml0ZW1zLnB1c2goe3R5cGU6Imxpc3RfaXRlbSIscmF3OnksdGFzazohIVQsY2hlY2tlZDpQLGxvb3NlOiExLHRleHQ6ZDF9KSxyMS5yYXcrPXl9cjEuaXRlbXNbcjEuaXRlbXMubGVuZ3RoLTFdLnJhdz15LnRyaW1SaWdodCgpLHIxLml0ZW1zW3IxLml0ZW1zLmxlbmd0aC0x''@;'; put 'put ''XS50ZXh0PWQxLnRyaW1SaWdodCgpLHIxLnJhdz1yMS5yYXcudHJpbVJpZ2h0KCk7Zm9yKHZhciBmMD1yMS5pdGVtcy5sZW5ndGgsTTA9MDtNMDxmMDtNMCsrKXt0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxyMS5pdGVtc1tNMF0udG9rZW5zPXRoaXMubGV4ZXIuYmxvY2tUb2tlbnMocjEuaXRl''@;'; put 'put ''bXNbTTBdLnRleHQsW10pO3ZhciBfMD1yMS5pdGVtc1tNMF0udG9rZW5zLmZpbHRlcihmdW5jdGlvbih6MCl7cmV0dXJuInNwYWNlIj09PXowLnR5cGV9KSxpMj1fMC5ldmVyeShmdW5jdGlvbih6MCl7Zm9yKHZhciBVMCxLMD0wLGswPUEoejAucmF3LnNwbGl0KCIiKSk7IShVMD1rMCgpKS5k''@;'; put 'put ''b25lOylpZigiXG4iPT09VTAudmFsdWUmJihLMCs9MSksMTxLMClyZXR1cm4hMDtyZXR1cm4hMX0pOyFyMS5sb29zZSYmXzAubGVuZ3RoJiZpMiYmKHIxLmxvb3NlPSEwLHIxLml0ZW1zW00wXS5sb29zZT0hMCl9cmV0dXJuIHIxfX0sUi5odG1sPWZ1bmN0aW9uKHkpe3ZhciBEO2lmKHk9dGhp''@;'; put 'put ''cy5ydWxlcy5ibG9jay5odG1sLmV4ZWMoeSkpcmV0dXJuIEQ9e3R5cGU6Imh0bWwiLHJhdzp5WzBdLHByZTohdGhpcy5vcHRpb25zLnNhbml0aXplciYmKCJwcmUiPT09eVsxXXx8InNjcmlwdCI9PT15WzFdfHwic3R5bGUiPT09eVsxXSksdGV4dDp5WzBdfSx0aGlzLm9wdGlvbnMuc2FuaXRp''@;'; put 'put ''emUmJih5PXRoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcih5WzBdKTpmKHlbMF0pLEQudHlwZT0icGFyYWdyYXBoIixELnRleHQ9eSxELnRva2Vucz10aGlzLmxleGVyLmlubGluZSh5KSksRH0sUi5kZWY9ZnVuY3Rpb24oWil7aWYoWj10aGlzLnJ1bGVzLmJs''@;'; put 'put ''b2NrLmRlZi5leGVjKFopKXJldHVybiBaWzNdJiYoWlszXT1aWzNdLnN1YnN0cmluZygxLFpbM10ubGVuZ3RoLTEpKSx7dHlwZToiZGVmIix0YWc6WlsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzKy9nLCIgIikscmF3OlpbMF0saHJlZjpaWzJdLHRpdGxlOlpbM119fSxSLnRhYmxlPWZ1''@;'; put 'put ''bmN0aW9uKFope2lmKFo9dGhpcy5ydWxlcy5ibG9jay50YWJsZS5leGVjKFopKXt2YXIgRD17dHlwZToidGFibGUiLGhlYWRlcjpFKFpbMV0pLm1hcChmdW5jdGlvbihmMSl7cmV0dXJue3RleHQ6ZjF9fSksYWxpZ246WlsyXS5yZXBsYWNlKC9eICp8XHwgKiQvZywiIikuc3BsaXQoLyAqXHwg''@;'; put 'put ''Ki8pLHJvd3M6WlszXSYmWlszXS50cmltKCk/WlszXS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKS5zcGxpdCgiXG4iKTpbXX07aWYoRC5oZWFkZXIubGVuZ3RoPT09RC5hbGlnbi5sZW5ndGgpe0QucmF3PVpbMF07Zm9yKHZhciB5LFQsUCx0MT1ELmFsaWduLmxlbmd0aCxzMT0wO3MxPHQxO3Mx''@;'; put 'put ''KyspRC5hbGlnbltzMV09L14gKi0rOiAqJC8udGVzdChELmFsaWduW3MxXSk/InJpZ2h0IjovXiAqOi0rOiAqJC8udGVzdChELmFsaWduW3MxXSk/ImNlbnRlciI6L14gKjotKyAqJC8udGVzdChELmFsaWduW3MxXSk/ImxlZnQiOm51bGw7Zm9yKHQxPUQucm93cy5sZW5ndGgsczE9MDtzMTx0''@;'; put 'put ''MTtzMSsrKUQucm93c1tzMV09RShELnJvd3NbczFdLEQuaGVhZGVyLmxlbmd0aCkubWFwKGZ1bmN0aW9uKGYxKXtyZXR1cm57dGV4dDpmMX19KTtmb3IodDE9RC5oZWFkZXIubGVuZ3RoLHk9MDt5PHQxO3krKylELmhlYWRlclt5XS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoRC5oZWFkZXJb''@;'; put 'put ''eV0udGV4dCk7Zm9yKHQxPUQucm93cy5sZW5ndGgseT0wO3k8dDE7eSsrKWZvcihQPUQucm93c1t5XSxUPTA7VDxQLmxlbmd0aDtUKyspUFtUXS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoUFtUXS50ZXh0KTtyZXR1cm4gRH19fSxSLmxoZWFkaW5nPWZ1bmN0aW9uKFope2lmKFo9dGhpcy5y''@;'; put 'put ''dWxlcy5ibG9jay5saGVhZGluZy5leGVjKFopKXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6WlswXSxkZXB0aDoiPSI9PT1aWzJdLmNoYXJBdCgwKT8xOjIsdGV4dDpaWzFdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShaWzFdKX19LFIucGFyYWdyYXBoPWZ1bmN0aW9uKHkpe3ZhciBEO2lm''@;'; put 'put ''KHk9dGhpcy5ydWxlcy5ibG9jay5wYXJhZ3JhcGguZXhlYyh5KSlyZXR1cm4gRD0iXG4iPT09eVsxXS5jaGFyQXQoeVsxXS5sZW5ndGgtMSk/eVsxXS5zbGljZSgwLC0xKTp5WzFdLHt0eXBlOiJwYXJhZ3JhcGgiLHJhdzp5WzBdLHRleHQ6RCx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoRCl9''@;'; put 'put ''fSxSLnRleHQ9ZnVuY3Rpb24oWil7aWYoWj10aGlzLnJ1bGVzLmJsb2NrLnRleHQuZXhlYyhaKSlyZXR1cm57dHlwZToidGV4dCIscmF3OlpbMF0sdGV4dDpaWzBdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShaWzBdKX19LFIuZXNjYXBlPWZ1bmN0aW9uKFope2lmKFo9dGhpcy5ydWxlcy5p''@;'; put 'put ''bmxpbmUuZXNjYXBlLmV4ZWMoWikpcmV0dXJue3R5cGU6ImVzY2FwZSIscmF3OlpbMF0sdGV4dDpmKFpbMV0pfX0sUi50YWc9ZnVuY3Rpb24oWil7aWYoWj10aGlzLnJ1bGVzLmlubGluZS50YWcuZXhlYyhaKSlyZXR1cm4hdGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePGEgL2kudGVzdCha''@;'; put 'put ''WzBdKT90aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148XC9hPi9pLnRlc3QoWlswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMSksIXRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmL148KHByZXxjb2RlfGtiZHxzY3JpcHQpKFxz''@;'; put 'put ''fD4pL2kudGVzdChaWzBdKT90aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITA6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLnRlc3QoWlswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITEpLHt0eXBlOnRo''@;'; put 'put ''aXMub3B0aW9ucy5zYW5pdGl6ZT8idGV4dCI6Imh0bWwiLHJhdzpaWzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayx0ZXh0OnRoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3Ro''@;'; put 'put ''aXMub3B0aW9ucy5zYW5pdGl6ZXIoWlswXSk6ZihaWzBdKTpaWzBdfX0sUi5saW5rPWZ1bmN0aW9uKFope2lmKFo9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVjKFopKXt2YXIgRD1aWzJdLnRyaW0oKTtpZighdGhpcy5vcHRpb25zLnBlZGFudGljJiYvXjwvLnRlc3QoRCkpe2lmKCEvPiQv''@;'; put 'put ''LnRlc3QoRCkpcmV0dXJuO3ZhciBUPXcoRC5zbGljZSgwLC0xKSwiXFwiKTtpZigoRC5sZW5ndGgtVC5sZW5ndGgpJTI9PTApcmV0dXJufWVsc2UtMTwoVD1mdW5jdGlvbih0MSxzMSl7aWYoLTEhPT10MS5pbmRleE9mKCIoKSJbMV0pKWZvcih2YXIgZjE9dDEubGVuZ3RoLFk9MCxxPTA7cTxm''@;'; put 'put ''MTtxKyspaWYoIlxcIj09PXQxW3FdKXErKztlbHNlIGlmKHQxW3FdPT09IigpIlswXSlZKys7ZWxzZSBpZih0MVtxXT09PSIoKSJbMV0mJi0tWTwwKXJldHVybiBxO3JldHVybi0xfShaWzJdKSkmJihQPSgwPT09WlswXS5pbmRleE9mKCIhIik/NTo0KStaWzFdLmxlbmd0aCtULFpbMl09Wlsy''@;'; put 'put ''XS5zdWJzdHJpbmcoMCxUKSxaWzBdPVpbMF0uc3Vic3RyaW5nKDAsUCkudHJpbSgpLFpbM109IiIpO1Q9WlsyXTt2YXIgeSxQPSIiO3JldHVybiB0aGlzLm9wdGlvbnMucGVkYW50aWM/KHk9L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLy5leGVjKFQpKSYmKFQ9eVsxXSxQPXlbM10p''@;'; put 'put ''OlA9WlszXT9aWzNdLnNsaWNlKDEsLTEpOiIiLFQ9VC50cmltKCksVyhaLHtocmVmOihUPS9ePC8udGVzdChUKT90aGlzLm9wdGlvbnMucGVkYW50aWMmJiEvPiQvLnRlc3QoRCk/VC5zbGljZSgxKTpULnNsaWNlKDEsLTEpOlQpJiZULnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2Fw''@;'; put 'put ''ZXMsIiQxIiksdGl0bGU6UCYmUC5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpfSxaWzBdLHRoaXMubGV4ZXIpfX0sUi5yZWZsaW5rPWZ1bmN0aW9uKFosRCl7dmFyIHk7aWYoKHk9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKFopKXx8KHk9dGhpcy5ydWxl''@;'; put 'put ''cy5pbmxpbmUubm9saW5rLmV4ZWMoWikpKXJldHVybihaPURbKFo9KHlbMl18fHlbMV0pLnJlcGxhY2UoL1xzKy9nLCIgIikpLnRvTG93ZXJDYXNlKCldKSYmWi5ocmVmP1coeSxaLHlbMF0sdGhpcy5sZXhlcik6e3R5cGU6InRleHQiLHJhdzpEPXlbMF0uY2hhckF0KDApLHRleHQ6RH19LFIu''@;'; put 'put ''ZW1TdHJvbmc9ZnVuY3Rpb24oWixELHkpe3ZvaWQgMD09PXkmJih5PSIiKTt2YXIgVD10aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5sRGVsaW0uZXhlYyhaKTtpZihUJiYoIVRbM118fCF5Lm1hdGNoKC8oPzpbMC05QS1aYS16XHhBQVx4QjJceEIzXHhCNVx4QjlceEJBXHhCQy1ceEJFXHhD''@;'; put 'put ''MC1ceEQ2XHhEOC1ceEY2XHhGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzdGXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3''@;'; put 'put ''LVx1MDQ4MVx1MDQ4QS1cdTA1MkZcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYwLVx1MDU4OFx1MDVEMC1cdTA1RUFcdTA1RUYtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2MC1cdTA2NjlcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFLVx1MDZGQ1x1MDZG''@;'; put 'put ''Rlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0MwLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwODYwLVx1MDg2QVx1MDg3MC1cdTA4ODdcdTA4ODktXHUwODhFXHUwOEEwLVx1MDhD''@;'; put 'put ''OVx1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTY2LVx1MDk2Rlx1MDk3MS1cdTA5ODBcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURG''@;'; put 'put ''LVx1MDlFMVx1MDlFNi1cdTA5RjFcdTA5RjQtXHUwOUY5XHUwOUZDXHUwQTA1LVx1MEEwQVx1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE2Ni1cdTBBNkZcdTBBNzIt''@;'; put 'put ''XHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBBRTYtXHUwQUVGXHUwQUY5XHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhc''@;'; put 'put ''dTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNjYtXHUwQjZGXHUwQjcxLVx1MEI3N1x1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1''@;'; put 'put ''MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQkU2LVx1MEJGMlx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzlcdTBDM0RcdTBDNTgtXHUwQzVBXHUwQzVEXHUwQzYwXHUwQzYxXHUwQzY2LVx1MEM2Rlx1''@;'; put 'put ''MEM3OC1cdTBDN0VcdTBDODBcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERFx1MENERVx1MENFMFx1MENFMVx1MENFNi1cdTBDRUZcdTBDRjFcdTBDRjJcdTBEMDQtXHUwRDBDXHUwRDBFLVx1MEQxMFx1''@;'; put 'put ''MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENTQtXHUwRDU2XHUwRDU4LVx1MEQ2MVx1MEQ2Ni1cdTBENzhcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MERFNi1cdTBERUZcdTBFMDEtXHUwRTMwXHUwRTMy''@;'; put 'put ''XHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU1MC1cdTBFNTlcdTBFODFcdTBFODJcdTBFODRcdTBFODYtXHUwRThBXHUwRThDLVx1MEVBM1x1MEVBNVx1MEVBNy1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRUQwLVx1MEVEOVx1MEVEQy1cdTBFREZcdTBGMDBc''@;'; put 'put ''dTBGMjAtXHUwRjMzXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhDXHUxMDAwLVx1MTAyQVx1MTAzRi1cdTEwNDlcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXHUxMDhFXHUxMDkwLVx1MTA5''@;'; put 'put ''OVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUx''@;'; put 'put ''MkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzNjktXHUxMzdDXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjVcdTEzRjgtXHUxM0ZEXHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEw''@;'; put 'put ''LVx1MTZFQVx1MTZFRS1cdTE2RjhcdTE3MDAtXHUxNzExXHUxNzFGLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE3RTAtXHUxN0U5XHUxN0YwLVx1MTdGOVx1MTgxMC1cdTE4MTlcdTE4MjAtXHUxODc4XHUx''@;'; put 'put ''ODgwLVx1MTg4NFx1MTg4Ny1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxRVx1MTk0Ni1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTE5RDAtXHUxOURBXHUxQTAwLVx1MUExNlx1MUEyMC1cdTFBNTRcdTFBODAtXHUxQTg5XHUxQTkw''@;'; put 'put ''LVx1MUE5OVx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRDXHUxQjUwLVx1MUI1OVx1MUI4My1cdTFCQTBcdTFCQUUtXHUxQkU1XHUxQzAwLVx1MUMyM1x1MUM0MC1cdTFDNDlcdTFDNEQtXHUxQzdEXHUxQzgwLVx1MUM4OFx1MUM5MC1cdTFDQkFcdTFDQkQtXHUxQ0JGXHUxQ0U5LVx1''@;'; put 'put ''MUNFQ1x1MUNFRS1cdTFDRjNcdTFDRjVcdTFDRjZcdTFDRkFcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1c''@;'; put 'put ''dTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcwXHUyMDcxXHUyMDc0LVx1MjA3OVx1MjA3Ri1cdTIwODlcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3''@;'; put 'put ''XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTUwLVx1MjE4OVx1MjQ2MC1cdTI0OUJcdTI0RUEtXHUyNEZGXHUyNzc2LVx1Mjc5M1x1MkMw''@;'; put 'put ''MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXHUyQ0ZEXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJE''@;'; put 'put ''QzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDUtXHUzMDA3XHUzMDIxLVx1MzAyOVx1MzAzMS1cdTMwMzVcdTMwMzgtXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkZcdTMxMzEt''@;'; put 'put ''XHUzMThFXHUzMTkyLVx1MzE5NVx1MzFBMC1cdTMxQkZcdTMxRjAtXHUzMUZGXHUzMjIwLVx1MzIyOVx1MzI0OC1cdTMyNEZcdTMyNTEtXHUzMjVGXHUzMjgwLVx1MzI4OVx1MzJCMS1cdTMyQkZcdTM0MDAtXHU0REJGXHU0RTAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVB''@;'; put 'put ''NjEwLVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjlEXHVBNkEwLVx1QTZFRlx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTdDQVx1QTdEMFx1QTdEMVx1QTdEM1x1QTdENS1cdUE3RDlcdUE3RjItXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMt''@;'; put 'put ''XHVBODIyXHVBODMwLVx1QTgzNVx1QTg0MC1cdUE4NzNcdUE4ODItXHVBOEIzXHVBOEQwLVx1QThEOVx1QThGMi1cdUE4RjdcdUE4RkJcdUE4RkRcdUE4RkVcdUE5MDAtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGLVx1QTlEOVx1QTlFMC1cdUE5''@;'; put 'put ''RTRcdUE5RTYtXHVBOUZFXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTUwLVx1QUE1OVx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0UtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVB''@;'; put 'put ''QUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNjlcdUFCNzAtXHVBQkUyXHVBQkYwLVx1QUJGOVx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NC''@;'; put 'put ''LVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1''@;'; put 'put ''MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjEwLVx1RkYxOVx1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENd''@;'; put 'put ''fFx1RDgwMFtcdURDMDAtXHVEQzBCXHVEQzBELVx1REMyNlx1REMyOC1cdURDM0FcdURDM0NcdURDM0RcdURDM0YtXHVEQzREXHVEQzUwLVx1REM1RFx1REM4MC1cdURDRkFcdUREMDctXHVERDMzXHVERDQwLVx1REQ3OFx1REQ4QVx1REQ4Qlx1REU4MC1cdURFOUNcdURFQTAtXHVERUQwXHVE''@;'; put 'put ''RUUxLVx1REVGQlx1REYwMC1cdURGMjNcdURGMkQtXHVERjRBXHVERjUwLVx1REY3NVx1REY4MC1cdURGOURcdURGQTAtXHVERkMzXHVERkM4LVx1REZDRlx1REZEMS1cdURGRDVdfFx1RDgwMVtcdURDMDAtXHVEQzlEXHVEQ0EwLVx1RENBOVx1RENCMC1cdURDRDNcdURDRDgtXHVEQ0ZCXHVE''@;'; put 'put ''RDAwLVx1REQyN1x1REQzMC1cdURENjNcdURENzAtXHVERDdBXHVERDdDLVx1REQ4QVx1REQ4Qy1cdUREOTJcdUREOTRcdUREOTVcdUREOTctXHVEREExXHVEREEzLVx1RERCMVx1RERCMy1cdUREQjlcdUREQkJcdUREQkNcdURFMDAtXHVERjM2XHVERjQwLVx1REY1NVx1REY2MC1cdURGNjdc''@;'; put 'put ''dURGODAtXHVERjg1XHVERjg3LVx1REZCMFx1REZCMi1cdURGQkFdfFx1RDgwMltcdURDMDAtXHVEQzA1XHVEQzA4XHVEQzBBLVx1REMzNVx1REMzN1x1REMzOFx1REMzQ1x1REMzRi1cdURDNTVcdURDNTgtXHVEQzc2XHVEQzc5LVx1REM5RVx1RENBNy1cdURDQUZcdURDRTAtXHVEQ0YyXHVE''@;'; put 'put ''Q0Y0XHVEQ0Y1XHVEQ0ZCLVx1REQxQlx1REQyMC1cdUREMzlcdUREODAtXHVEREI3XHVEREJDLVx1RERDRlx1REREMi1cdURFMDBcdURFMTAtXHVERTEzXHVERTE1LVx1REUxN1x1REUxOS1cdURFMzVcdURFNDAtXHVERTQ4XHVERTYwLVx1REU3RVx1REU4MC1cdURFOUZcdURFQzAtXHVERUM3''@;'; put 'put ''XHVERUM5LVx1REVFNFx1REVFQi1cdURFRUZcdURGMDAtXHVERjM1XHVERjQwLVx1REY1NVx1REY1OC1cdURGNzJcdURGNzgtXHVERjkxXHVERkE5LVx1REZBRl18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMlx1RENGQS1cdUREMjNcdUREMzAtXHVERDM5''@;'; put 'put ''XHVERTYwLVx1REU3RVx1REU4MC1cdURFQTlcdURFQjBcdURFQjFcdURGMDAtXHVERjI3XHVERjMwLVx1REY0NVx1REY1MS1cdURGNTRcdURGNzAtXHVERjgxXHVERkIwLVx1REZDQlx1REZFMC1cdURGRjZdfFx1RDgwNFtcdURDMDMtXHVEQzM3XHVEQzUyLVx1REM2Rlx1REM3MVx1REM3Mlx1''@;'; put 'put ''REM3NVx1REM4My1cdURDQUZcdURDRDAtXHVEQ0U4XHVEQ0YwLVx1RENGOVx1REQwMy1cdUREMjZcdUREMzYtXHVERDNGXHVERDQ0XHVERDQ3XHVERDUwLVx1REQ3Mlx1REQ3Nlx1REQ4My1cdUREQjJcdUREQzEtXHVEREM0XHVEREQwLVx1REREQVx1REREQ1x1RERFMS1cdURERjRcdURFMDAt''@;'; put 'put ''XHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERUYwLVx1REVGOVx1REYwNS1cdURGMENcdURGMEZcdURGMTBcdURGMTMtXHVERjI4XHVERjJBLVx1REYzMFx1REYzMlx1REYz''@;'; put 'put ''M1x1REYzNS1cdURGMzlcdURGM0RcdURGNTBcdURGNUQtXHVERjYxXXxcdUQ4MDVbXHVEQzAwLVx1REMzNFx1REM0Ny1cdURDNEFcdURDNTAtXHVEQzU5XHVEQzVGLVx1REM2MVx1REM4MC1cdURDQUZcdURDQzRcdURDQzVcdURDQzdcdURDRDAtXHVEQ0Q5XHVERDgwLVx1RERBRVx1REREOC1c''@;'; put 'put ''dUREREJcdURFMDAtXHVERTJGXHVERTQ0XHVERTUwLVx1REU1OVx1REU4MC1cdURFQUFcdURFQjhcdURFQzAtXHVERUM5XHVERjAwLVx1REYxQVx1REYzMC1cdURGM0JcdURGNDAtXHVERjQ2XXxcdUQ4MDZbXHVEQzAwLVx1REMyQlx1RENBMC1cdURDRjJcdURDRkYtXHVERDA2XHVERDA5XHVE''@;'; put 'put ''RDBDLVx1REQxM1x1REQxNVx1REQxNlx1REQxOC1cdUREMkZcdUREM0ZcdURENDFcdURENTAtXHVERDU5XHVEREEwLVx1RERBN1x1RERBQS1cdURERDBcdURERTFcdURERTNcdURFMDBcdURFMEItXHVERTMyXHVERTNBXHVERTUwXHVERTVDLVx1REU4OVx1REU5RFx1REVCMC1cdURFRjhdfFx1''@;'; put 'put ''RDgwN1tcdURDMDAtXHVEQzA4XHVEQzBBLVx1REMyRVx1REM0MFx1REM1MC1cdURDNkNcdURDNzItXHVEQzhGXHVERDAwLVx1REQwNlx1REQwOFx1REQwOVx1REQwQi1cdUREMzBcdURENDZcdURENTAtXHVERDU5XHVERDYwLVx1REQ2NVx1REQ2N1x1REQ2OFx1REQ2QS1cdUREODlcdUREOThc''@;'; put 'put ''dUREQTAtXHVEREE5XHVERUUwLVx1REVGMlx1REZCMFx1REZDMC1cdURGRDRdfFx1RDgwOFtcdURDMDAtXHVERjk5XXxcdUQ4MDlbXHVEQzAwLVx1REM2RVx1REM4MC1cdURENDNdfFx1RDgwQltcdURGOTAtXHVERkYwXXxbXHVEODBDXHVEODFDLVx1RDgyMFx1RDgyMlx1RDg0MC1cdUQ4Njhc''@;'; put 'put ''dUQ4NkEtXHVEODZDXHVEODZGLVx1RDg3Mlx1RDg3NC1cdUQ4NzlcdUQ4ODAtXHVEODgzXVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRV18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REU2MC1cdURFNjlcdURFNzAt''@;'; put 'put ''XHVERUJFXHVERUMwLVx1REVDOVx1REVEMC1cdURFRURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY1MC1cdURGNTlcdURGNUItXHVERjYxXHVERjYzLVx1REY3N1x1REY3RC1cdURGOEZdfFx1RDgxQltcdURFNDAtXHVERTk2XHVERjAwLVx1REY0QVx1REY1MFx1REY5My1cdURGOUZc''@;'; put 'put ''dURGRTBcdURGRTFcdURGRTNdfFx1RDgyMVtcdURDMDAtXHVERkY3XXxcdUQ4MjNbXHVEQzAwLVx1RENENVx1REQwMC1cdUREMDhdfFx1RDgyQltcdURGRjAtXHVERkYzXHVERkY1LVx1REZGQlx1REZGRFx1REZGRV18XHVEODJDW1x1REMwMC1cdUREMjJcdURENTAtXHVERDUyXHVERDY0LVx1''@;'; put 'put ''REQ2N1x1REQ3MC1cdURFRkJdfFx1RDgyRltcdURDMDAtXHVEQzZBXHVEQzcwLVx1REM3Q1x1REM4MC1cdURDODhcdURDOTAtXHVEQzk5XXxcdUQ4MzRbXHVERUUwLVx1REVGM1x1REY2MC1cdURGNzhdfFx1RDgzNVtcdURDMDAtXHVEQzU0XHVEQzU2LVx1REM5Q1x1REM5RVx1REM5Rlx1RENB''@;'; put 'put ''Mlx1RENBNVx1RENBNlx1RENBOS1cdURDQUNcdURDQUUtXHVEQ0I5XHVEQ0JCXHVEQ0JELVx1RENDM1x1RENDNS1cdUREMDVcdUREMDctXHVERDBBXHVERDBELVx1REQxNFx1REQxNi1cdUREMUNcdUREMUUtXHVERDM5XHVERDNCLVx1REQzRVx1REQ0MC1cdURENDRcdURENDZcdURENEEtXHVE''@;'; put 'put ''RDUwXHVERDUyLVx1REVBNVx1REVBOC1cdURFQzBcdURFQzItXHVERURBXHVERURDLVx1REVGQVx1REVGQy1cdURGMTRcdURGMTYtXHVERjM0XHVERjM2LVx1REY0RVx1REY1MC1cdURGNkVcdURGNzAtXHVERjg4XHVERjhBLVx1REZBOFx1REZBQS1cdURGQzJcdURGQzQtXHVERkNCXHVERkNF''@;'; put 'put ''LVx1REZGRl18XHVEODM3W1x1REYwMC1cdURGMUVdfFx1RDgzOFtcdUREMDAtXHVERDJDXHVERDM3LVx1REQzRFx1REQ0MC1cdURENDlcdURENEVcdURFOTAtXHVERUFEXHVERUMwLVx1REVFQlx1REVGMC1cdURFRjldfFx1RDgzOVtcdURGRTAtXHVERkU2XHVERkU4LVx1REZFQlx1REZFRFx1''@;'; put 'put ''REZFRVx1REZGMC1cdURGRkVdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVEQ0M3LVx1RENDRlx1REQwMC1cdURENDNcdURENEJcdURENTAtXHVERDU5XXxcdUQ4M0JbXHVEQzcxLVx1RENBQlx1RENBRC1cdURDQUZcdURDQjEtXHVEQ0I0XHVERDAxLVx1REQyRFx1REQyRi1cdUREM0RcdURFMDAt''@;'; put 'put ''XHVERTAzXHVERTA1LVx1REUxRlx1REUyMVx1REUyMlx1REUyNFx1REUyN1x1REUyOS1cdURFMzJcdURFMzQtXHVERTM3XHVERTM5XHVERTNCXHVERTQyXHVERTQ3XHVERTQ5XHVERTRCXHVERTRELVx1REU0Rlx1REU1MVx1REU1Mlx1REU1NFx1REU1N1x1REU1OVx1REU1Qlx1REU1RFx1REU1''@;'; put 'put ''Rlx1REU2MVx1REU2Mlx1REU2NFx1REU2Ny1cdURFNkFcdURFNkMtXHVERTcyXHVERTc0LVx1REU3N1x1REU3OS1cdURFN0NcdURFN0VcdURFODAtXHVERTg5XHVERThCLVx1REU5Qlx1REVBMS1cdURFQTNcdURFQTUtXHVERUE5XHVERUFCLVx1REVCQl18XHVEODNDW1x1REQwMC1cdUREMENd''@;'; put 'put ''fFx1RDgzRVtcdURGRjAtXHVERkY5XXxcdUQ4NjlbXHVEQzAwLVx1REVERlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM4XHVERjQwLVx1REZGRl18XHVEODZFW1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1''@;'; put 'put ''RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF18XHVEODg0W1x1REMwMC1cdURGNEFdKS8pKSYmKCFUWzFdJiYhVFsyXXx8IiI9PT15fHx0aGlzLnJ1bGVzLmlubGluZS5wdW5jdHVhdGlvbi5leGVjKHkpKSl7dmFyIHQxPVRbMF0ubGVuZ3RoLTEsczE9dDEsZjE9MCxZ''@;'; put 'put ''PSIqIj09PVRbMF1bMF0/dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltQXN0OnRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nLnJEZWxpbVVuZDtmb3IoWS5sYXN0SW5kZXg9MCxEPUQuc2xpY2UoLTEqWi5sZW5ndGgrdDEpO251bGwhPShUPVkuZXhlYyhEKSk7KXt2YXIgcSxRPVRb''@;'; put 'put ''MV18fFRbMl18fFRbM118fFRbNF18fFRbNV18fFRbNl07aWYoUSlpZihRPVEubGVuZ3RoLFRbM118fFRbNF0pczErPVE7ZWxzZSBpZigoVFs1XXx8VFs2XSkmJnQxJTMmJiEoKHQxK1EpJTMpKWYxKz1RO2Vsc2UgaWYoISgwPChzMS09USkpKXJldHVybiBRPU1hdGgubWluKFEsUStzMStmMSks''@;'; put 'put ''TWF0aC5taW4odDEsUSklMj8ocT1aLnNsaWNlKDEsdDErVC5pbmRleCtRKSx7dHlwZToiZW0iLHJhdzpaLnNsaWNlKDAsdDErVC5pbmRleCtRKzEpLHRleHQ6cSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMocSl9KToocT1aLnNsaWNlKDIsdDErVC5pbmRleCtRLTEpLHt0eXBlOiJz''@;'; put 'put ''dHJvbmciLHJhdzpaLnNsaWNlKDAsdDErVC5pbmRleCtRKzEpLHRleHQ6cSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMocSl9KX19fSxSLmNvZGVzcGFuPWZ1bmN0aW9uKFApe3ZhciBELHksVDtpZihQPXRoaXMucnVsZXMuaW5saW5lLmNvZGUuZXhlYyhQKSlyZXR1cm4gVD1QWzJd''@;'; put 'put ''LnJlcGxhY2UoL1xuL2csIiAiKSxEPS9bXiBdLy50ZXN0KFQpLHk9L14gLy50ZXN0KFQpJiYvICQvLnRlc3QoVCksVD1mKFQ9RCYmeT9ULnN1YnN0cmluZygxLFQubGVuZ3RoLTEpOlQsITApLHt0eXBlOiJjb2Rlc3BhbiIscmF3OlBbMF0sdGV4dDpUfX0sUi5icj1mdW5jdGlvbihaKXtpZiha''@;'; put 'put ''PXRoaXMucnVsZXMuaW5saW5lLmJyLmV4ZWMoWikpcmV0dXJue3R5cGU6ImJyIixyYXc6WlswXX19LFIuZGVsPWZ1bmN0aW9uKFope2lmKFo9dGhpcy5ydWxlcy5pbmxpbmUuZGVsLmV4ZWMoWikpcmV0dXJue3R5cGU6ImRlbCIscmF3OlpbMF0sdGV4dDpaWzJdLHRva2Vuczp0aGlzLmxleGVy''@;'; put 'put ''LmlubGluZVRva2VucyhaWzJdKX19LFIuYXV0b2xpbms9ZnVuY3Rpb24oVCxEKXt2YXIgeTtpZihUPXRoaXMucnVsZXMuaW5saW5lLmF1dG9saW5rLmV4ZWMoVCkpcmV0dXJuIEQ9IkAiPT09VFsyXT8ibWFpbHRvOiIrKHk9Zih0aGlzLm9wdGlvbnMubWFuZ2xlP0QoVFsxXSk6VFsxXSkpOnk9''@;'; put 'put ''ZihUWzFdKSx7dHlwZToibGluayIscmF3OlRbMF0sdGV4dDp5LGhyZWY6RCx0b2tlbnM6W3t0eXBlOiJ0ZXh0IixyYXc6eSx0ZXh0Onl9XX19LFIudXJsPWZ1bmN0aW9uKFosRCl7dmFyIHksVCxQLHQxO2lmKHk9dGhpcy5ydWxlcy5pbmxpbmUudXJsLmV4ZWMoWikpe2lmKCJAIj09PXlbMl0p''@;'; put 'put ''UD0ibWFpbHRvOiIrKFQ9Zih0aGlzLm9wdGlvbnMubWFuZ2xlP0QoeVswXSk6eVswXSkpO2Vsc2V7Zm9yKDt0MT15WzBdLHlbMF09dGhpcy5ydWxlcy5pbmxpbmUuX2JhY2twZWRhbC5leGVjKHlbMF0pWzBdLHQxIT09eVswXTspO1Q9Zih5WzBdKSxQPSJ3d3cuIj09PXlbMV0/Imh0dHA6Ly8i''@;'; put 'put ''K1Q6VH1yZXR1cm57dHlwZToibGluayIscmF3OnlbMF0sdGV4dDpULGhyZWY6UCx0b2tlbnM6W3t0eXBlOiJ0ZXh0IixyYXc6VCx0ZXh0OlR9XX19fSxSLmlubGluZVRleHQ9ZnVuY3Rpb24oWixEKXtpZihaPXRoaXMucnVsZXMuaW5saW5lLnRleHQuZXhlYyhaKSlyZXR1cm4gRD10aGlzLmxl''@;'; put 'put ''eGVyLnN0YXRlLmluUmF3QmxvY2s/dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihaWzBdKTpmKFpbMF0pOlpbMF06Zih0aGlzLm9wdGlvbnMuc21hcnR5cGFudHM/RChaWzBdKTpaWzBdKSx7dHlwZToidGV4dCIscmF3''@;'; put 'put ''OlpbMF0sdGV4dDpEfX0sJH0oKSxCPXtuZXdsaW5lOi9eKD86ICooPzpcbnwkKSkrLyxjb2RlOi9eKCB7NH1bXlxuXSsoPzpcbig/OiAqKD86XG58JCkpKik/KSsvLGZlbmNlczovXiB7MCwzfShgezMsfSg/PVteYFxuXSpcbil8fnszLH0pKFteXG5dKilcbig/OnwoW1xzXFNdKj8pXG4pKD86''@;'; put 'put ''IHswLDN9XDFbfmBdKiAqKD89XG58JCl8JCkvLGhyOi9eIHswLDN9KCg/Oi1bXHQgXSopezMsfXwoPzpfWyBcdF0qKXszLH18KD86XCpbIFx0XSopezMsfSkoPzpcbit8JCkvLGhlYWRpbmc6L14gezAsM30oI3sxLDZ9KSg/PVxzfCQpKC4qKSg/OlxuK3wkKS8sYmxvY2txdW90ZTovXiggezAs''@;'; put 'put ''M30+ID8ocGFyYWdyYXBofFteXG5dKikoPzpcbnwkKSkrLyxsaXN0Oi9eKCB7MCwzfWJ1bGwpKFsgXHRdW15cbl0rPyk/KD86XG58JCkvLGh0bWw6Il4gezAsM30oPzo8KHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW1xccz5dW1xcc1xcU10qPyg/OjwvXFwxPlteXFxuXSpcXG4rfCQpfGNv''@;'; put 'put ''bW1lbnRbXlxcbl0qKFxcbit8JCl8PFxcP1tcXHNcXFNdKj8oPzpcXD8+XFxuKnwkKXw8IVtBLVpdW1xcc1xcU10qPyg/Oj5cXG4qfCQpfDwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/KD86XFxdXFxdPlxcbip8JCl8PC8/KHRhZykoPzogK3xcXG58Lz8+KVtcXHNcXFNdKj8oPzooPzpcXG4gKikr''@;'; put 'put ''XFxufCQpfDwoPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKShbYS16XVtcXHctXSopKD86YXR0cmlidXRlKSo/ICovPz4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpfDwvKD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpc''@;'; put 'put ''XHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCkpIixkZWY6L14gezAsM31cWyhsYWJlbClcXTogKig/OlxuICopPzw/KFteXHM+XSspPj8oPzooPzogKyg/OlxuICopP3wgKlxuICopKHRpdGxlKSk/ICooPzpcbit8JCkvLHRhYmxlOm4xLGxoZWFk''@;'; put 'put ''aW5nOi9eKFteXG5dKylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sX3BhcmFncmFwaDovXihbXlxuXSsoPzpcbig/IWhyfGhlYWRpbmd8bGhlYWRpbmd8YmxvY2txdW90ZXxmZW5jZXN8bGlzdHxodG1sfHRhYmxlfCArXG4pW15cbl0rKSopLyx0ZXh0Oi9eW15cbl0rLyxfbGFiZWw6Lyg/''@;'; put 'put ''IVxzKlxdKSg/OlxcLnxbXlxbXF1cXF0pKy8sX3RpdGxlOi8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpcblteJ1xuXSspKlxuPyd8XChbXigpXSpcKSkvfSx6PShCLmRlZj12KEIuZGVmKS5yZXBsYWNlKCJsYWJlbCIsQi5fbGFiZWwpLnJlcGxhY2UoInRpdGxlIixCLl90aXRs''@;'; put 'put ''ZSkuZ2V0UmVnZXgoKSxCLmJ1bGxldD0vKD86WyorLV18XGR7MSw5fVsuKV0pLyxCLmxpc3RJdGVtU3RhcnQ9digvXiggKikoYnVsbCkgKi8pLnJlcGxhY2UoImJ1bGwiLEIuYnVsbGV0KS5nZXRSZWdleCgpLEIubGlzdD12KEIubGlzdCkucmVwbGFjZSgvYnVsbC9nLEIuYnVsbGV0KS5yZXBs''@;'; put 'put ''YWNlKCJociIsIlxcbisoPz1cXDE/KD86KD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpKSIpLnJlcGxhY2UoImRlZiIsIlxcbisoPz0iK0IuZGVmLnNvdXJjZSsiKSIpLmdldFJlZ2V4KCksQi5fdGFnPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxi''@;'; put 'put ''YXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRldGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8ZHR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8''@;'; put 'put ''aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1lc3xvbHxvcHRncm91cHxvcHRpb258cHxwYXJhbXxzZWN0aW9ufHNvdXJjZXxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixCLl9jb21t''@;'; put 'put ''ZW50PS88IS0tKD8hLT8+KVtcc1xTXSo/KD86LS0+fCQpLyxCLmh0bWw9dihCLmh0bWwsImkiKS5yZXBsYWNlKCJjb21tZW50IixCLl9jb21tZW50KS5yZXBsYWNlKCJ0YWciLEIuX3RhZykucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0q''@;'; put 'put ''InwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxCLnBhcmFncmFwaD12KEIuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEIuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgifGxoZWFkaW5nIiwiIikucmVwbGFjZSgi''@;'; put 'put ''fHRhYmxlIiwiIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAiKS5yZXBsYWNlKCJodG1s''@;'; put 'put ''IiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLEIuX3RhZykuZ2V0UmVnZXgoKSxCLmJsb2NrcXVvdGU9dihCLmJsb2NrcXVvdGUpLnJlcGxhY2UoInBhcmFncmFwaCIsQi5wYXJhZ3JhcGgpLmdldFJl''@;'; put 'put ''Z2V4KCksQi5ub3JtYWw9eCh7fSxCKSxCLmdmbT14KHt9LEIubm9ybWFsLHt0YWJsZToiXiAqKFteXFxuIF0uKlxcfC4qKVxcbiB7MCwzfSg/OlxcfCAqKT8oOj8tKzo/ICooPzpcXHwgKjo/LSs6PyAqKSopKD86XFx8ICopPyg/OlxcbigoPzooPyEgKlxcbnxocnxoZWFkaW5nfGJsb2NrcXVv''@;'; put 'put ''dGV8Y29kZXxmZW5jZXN8bGlzdHxodG1sKS4qKD86XFxufCQpKSopXFxuKnwkKSJ9KSxCLmdmbS50YWJsZT12KEIuZ2ZtLnRhYmxlKS5yZXBsYWNlKCJociIsQi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJl''@;'; put 'put ''cGxhY2UoImNvZGUiLCIgezR9W15cXG5dIikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzog''@;'; put 'put ''K3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixCLl90YWcpLmdldFJlZ2V4KCksQi5nZm0ucGFyYWdyYXBoPXYoQi5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsQi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAi''@;'; put 'put ''KS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ0YWJsZSIsQi5nZm0udGFibGUpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxp''@;'; put 'put ''c3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixCLl90YWcpLmdldFJlZ2V4KCksQi5wZWRhbnRpYz14KHt9LEIubm9ybWFs''@;'; put 'put ''LHtodG1sOnYoIl4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OlwiW15cIl0qXCJ8J1teJ10qJ3xcXHNbXidcIi8+XFxzXSopKj8vPz4gKig/OlxcbnsyLH18XFxzKiQpKSIpLnJlcGxhY2UoImNvbW1l''@;'; put 'put ''bnQiLEIuX2NvbW1lbnQpLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFsbHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylc''@;'; put 'put ''XGIpXFx3Kyg/ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhbXlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOm4xLHBhcmFncmFw''@;'; put 'put ''aDp2KEIubm9ybWFsLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixCLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIikucmVwbGFjZSgibGhlYWRpbmciLEIubGhlYWRpbmcpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgifGZlbmNlcyIsIiIp''@;'; put 'put ''LnJlcGxhY2UoInxsaXN0IiwiIikucmVwbGFjZSgifGh0bWwiLCIiKS5nZXRSZWdleCgpfSkse2VzY2FwZTovXlxcKFshIiMkJSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1cXF5fYHt8fX5dKS8sYXV0b2xpbms6L148KHNjaGVtZTpbXlxzXHgwMC1ceDFmPD5dKnxlbWFpbCk+Lyx1cmw6bjEsdGFn''@;'; put 'put ''OiJeY29tbWVudHxePC9bYS16QS1aXVtcXHc6LV0qXFxzKj58XjxbYS16QS1aXVtcXHctXSooPzphdHRyaWJ1dGUpKj9cXHMqLz8+fF48XFw/W1xcc1xcU10qP1xcPz58XjwhW2EtekEtWl0rXFxzW1xcc1xcU10qPz58XjwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XFxdXFxdPiIsbGluazovXiE/''@;'; put 'put ''XFsobGFiZWwpXF1cKFxzKihocmVmKSg/OlxzKyh0aXRsZSkpP1xzKlwpLyxyZWZsaW5rOi9eIT9cWyhsYWJlbClcXVxbKHJlZilcXS8sbm9saW5rOi9eIT9cWyhyZWYpXF0oPzpcW1xdKT8vLHJlZmxpbmtTZWFyY2g6InJlZmxpbmt8bm9saW5rKD8hXFwoKSIsZW1TdHJvbmc6e2xEZWxpbTov''@;'; put 'put ''Xig/OlwqKyg/OihbcHVuY3RfXSl8W15ccypdKSl8Xl8rKD86KFtwdW5jdCpdKXwoW15cc19dKSkvLHJEZWxpbUFzdDovXlteXypdKj9cX1xfW15fKl0qP1wqW15fKl0qPyg/PVxfXF8pfFteKl0rKD89W14qXSl8W3B1bmN0X10oXCorKSg/PVtcc118JCl8W15wdW5jdCpfXHNdKFwqKykoPz1b''@;'; put 'put ''cHVuY3RfXHNdfCQpfFtwdW5jdF9cc10oXCorKSg/PVtecHVuY3QqX1xzXSl8W1xzXShcKispKD89W3B1bmN0X10pfFtwdW5jdF9dKFwqKykoPz1bcHVuY3RfXSl8W15wdW5jdCpfXHNdKFwqKykoPz1bXnB1bmN0Kl9cc10pLyxyRGVsaW1VbmQ6L15bXl8qXSo/XCpcKlteXypdKj9cX1teXypd''@;'; put 'put ''Kj8oPz1cKlwqKXxbXl9dKyg/PVteX10pfFtwdW5jdCpdKFxfKykoPz1bXHNdfCQpfFtecHVuY3QqX1xzXShcXyspKD89W3B1bmN0KlxzXXwkKXxbcHVuY3QqXHNdKFxfKykoPz1bXnB1bmN0Kl9cc10pfFtcc10oXF8rKSg/PVtwdW5jdCpdKXxbcHVuY3QqXShcXyspKD89W3B1bmN0Kl0pL30s''@;'; put 'put ''Y29kZTovXihgKykoW15gXXxbXmBdW1xzXFNdKj9bXmBdKVwxKD8hYCkvLGJyOi9eKCB7Mix9fFxcKVxuKD8hXHMqJCkvLGRlbDpuMSx0ZXh0Oi9eKGArfFteYF0pKD86KD89IHsyLH1cbil8W1xzXFNdKj8oPzooPz1bXFw8IVxbYCpfXXxcYl98JCl8W14gXSg/PSB7Mix9XG4pKSkvLHB1bmN0''@;'; put 'put ''dWF0aW9uOi9eKFtcc3B1bmN0dWF0aW9uXSkvfSk7ZnVuY3Rpb24gbDEoJCl7cmV0dXJuICQucmVwbGFjZSgvLS0tL2csIlx1MjAxNCIpLnJlcGxhY2UoLy0tL2csIlx1MjAxMyIpLnJlcGxhY2UoLyhefFstXHUyMDE0LyhcW3siXHNdKScvZywiJDFcdTIwMTgiKS5yZXBsYWNlKC8nL2csIlx1''@;'; put 'put ''MjAxOSIpLnJlcGxhY2UoLyhefFstXHUyMDE0LyhcW3tcdTIwMThcc10pIi9nLCIkMVx1MjAxYyIpLnJlcGxhY2UoLyIvZywiXHUyMDFkIikucmVwbGFjZSgvXC57M30vZywiXHUyMDI2Iil9ZnVuY3Rpb24gYTEoJCl7Zm9yKHZhciBSLFo9IiIsRD0kLmxlbmd0aCx5PTA7eTxEO3krKylSPSQu''@;'; put 'put ''Y2hhckNvZGVBdCh5KSxaKz0iJiMiKyhSPS41PE1hdGgucmFuZG9tKCk/IngiK1IudG9TdHJpbmcoMTYpOlIpKyI7IjtyZXR1cm4gWn16Ll9wdW5jdHVhdGlvbj0iIVwiIyQlJicoKStcXC0uLC86Ozw9Pj9AXFxbXFxdYF57fH1+Iix6LnB1bmN0dWF0aW9uPXYoei5wdW5jdHVhdGlvbikucmVw''@;'; put 'put ''bGFjZSgvcHVuY3R1YXRpb24vZyx6Ll9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx6LmJsb2NrU2tpcD0vXFtbXlxdXSo/XF1cKFteXCldKj9cKXxgW15gXSo/YHw8W14+XSo/Pi9nLHouZXNjYXBlZEVtU3Q9L1xcXCp8XFxfL2csei5fY29tbWVudD12KEIuX2NvbW1lbnQpLnJlcGxhY2UoIig/''@;'; put 'put ''Oi0tXHgzZXwkKSIsIi0tXHgzZSIpLmdldFJlZ2V4KCksei5lbVN0cm9uZy5sRGVsaW09dih6LmVtU3Ryb25nLmxEZWxpbSkucmVwbGFjZSgvcHVuY3QvZyx6Ll9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx6LmVtU3Ryb25nLnJEZWxpbUFzdD12KHouZW1TdHJvbmcuckRlbGltQXN0LCJnIiku''@;'; put 'put ''cmVwbGFjZSgvcHVuY3QvZyx6Ll9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx6LmVtU3Ryb25nLnJEZWxpbVVuZD12KHouZW1TdHJvbmcuckRlbGltVW5kLCJnIikucmVwbGFjZSgvcHVuY3QvZyx6Ll9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx6Ll9lc2NhcGVzPS9cXChbISIjJCUmJygpKiss''@;'; put 'put ''XC0uLzo7PD0+P0BcW1xdXFxeX2B7fH1+XSkvZyx6Ll9zY2hlbWU9L1thLXpBLVpdW2EtekEtWjAtOSsuLV17MSwzMX0vLHouX2VtYWlsPS9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dKyhAKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/Olwu''@;'; put 'put ''W2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSsoPyFbLV9dKS8sei5hdXRvbGluaz12KHouYXV0b2xpbmspLnJlcGxhY2UoInNjaGVtZSIsei5fc2NoZW1lKS5yZXBsYWNlKCJlbWFpbCIsei5fZW1haWwpLmdldFJlZ2V4KCksei5fYXR0cmlidXRlPS9ccytb''@;'; put 'put ''YS16QS1aOl9dW1x3LjotXSooPzpccyo9XHMqIlteIl0qInxccyo9XHMqJ1teJ10qJ3xccyo9XHMqW15ccyInPTw+YF0rKT8vLHoudGFnPXYoei50YWcpLnJlcGxhY2UoImNvbW1lbnQiLHouX2NvbW1lbnQpLnJlcGxhY2UoImF0dHJpYnV0ZSIsei5fYXR0cmlidXRlKS5nZXRSZWdleCgpLHou''@;'; put 'put ''X2xhYmVsPS8oPzpcWyg/OlxcLnxbXlxbXF1cXF0pKlxdfFxcLnxgW15gXSpgfFteXFtcXVxcYF0pKj8vLHouX2hyZWY9LzwoPzpcXC58W15cbjw+XFxdKSs+fFteXHNceDAwLVx4MWZdKi8sei5fdGl0bGU9LyIoPzpcXCI/fFteIlxcXSkqInwnKD86XFwnP3xbXidcXF0pKid8XCgoPzpcXFwp''@;'; put 'put ''P3xbXilcXF0pKlwpLyx6Lmxpbms9dih6LmxpbmspLnJlcGxhY2UoImxhYmVsIix6Ll9sYWJlbCkucmVwbGFjZSgiaHJlZiIsei5faHJlZikucmVwbGFjZSgidGl0bGUiLHouX3RpdGxlKS5nZXRSZWdleCgpLHoucmVmbGluaz12KHoucmVmbGluaykucmVwbGFjZSgibGFiZWwiLHouX2xhYmVs''@;'; put 'put ''KS5yZXBsYWNlKCJyZWYiLEIuX2xhYmVsKS5nZXRSZWdleCgpLHoubm9saW5rPXYoei5ub2xpbmspLnJlcGxhY2UoInJlZiIsQi5fbGFiZWwpLmdldFJlZ2V4KCksei5yZWZsaW5rU2VhcmNoPXYoei5yZWZsaW5rU2VhcmNoLCJnIikucmVwbGFjZSgicmVmbGluayIsei5yZWZsaW5rKS5yZXBs''@;'; put 'put ''YWNlKCJub2xpbmsiLHoubm9saW5rKS5nZXRSZWdleCgpLHoubm9ybWFsPXgoe30seiksei5wZWRhbnRpYz14KHt9LHoubm9ybWFsLHtzdHJvbmc6e3N0YXJ0Oi9eX198XCpcKi8sbWlkZGxlOi9eX18oPz1cUykoW1xzXFNdKj9cUylfXyg/IV8pfF5cKlwqKD89XFMpKFtcc1xTXSo/XFMpXCpc''@;'; put 'put ''Kig/IVwqKS8sZW5kQXN0Oi9cKlwqKD8hXCopL2csZW5kVW5kOi9fXyg/IV8pL2d9LGVtOntzdGFydDovXl98XCovLG1pZGRsZTovXigpXCooPz1cUykoW1xzXFNdKj9cUylcKig/IVwqKXxeXyg/PVxTKShbXHNcU10qP1xTKV8oPyFfKS8sZW5kQXN0Oi9cKig/IVwqKS9nLGVuZFVuZDovXyg/''@;'; put 'put ''IV8pL2d9LGxpbms6digvXiE/XFsobGFiZWwpXF1cKCguKj8pXCkvKS5yZXBsYWNlKCJsYWJlbCIsei5fbGFiZWwpLmdldFJlZ2V4KCkscmVmbGluazp2KC9eIT9cWyhsYWJlbClcXVxzKlxbKFteXF1dKilcXS8pLnJlcGxhY2UoImxhYmVsIix6Ll9sYWJlbCkuZ2V0UmVnZXgoKX0pLHouZ2Zt''@;'; put 'put ''PXgoe30sei5ub3JtYWwse2VzY2FwZTp2KHouZXNjYXBlKS5yZXBsYWNlKCJdKSIsIn58XSkiKS5nZXRSZWdleCgpLF9leHRlbmRlZF9lbWFpbDovW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XC5bYS16QS1aMC05LV9dKlthLXpBLVowLTldKSsoPyFbLV9dKS8sdXJsOi9e''@;'; put 'put ''KCg/OmZ0cHxodHRwcz8pOlwvXC98d3d3XC4pKD86W2EtekEtWjAtOVwtXStcLj8pK1teXHM8XSp8XmVtYWlsLyxfYmFja3BlZGFsOi8oPzpbXj8hLiw6OypffigpJl0rfFwoW14pXSpcKXwmKD8hW2EtekEtWjAtOV0rOyQpfFs/IS4sOjsqX34pXSsoPyEkKSkrLyxkZWw6L14ofn4/KSg/PVte''@;'; put 'put ''XHN+XSkoW1xzXFNdKj9bXlxzfl0pXDEoPz1bXn5dfCQpLyx0ZXh0Oi9eKFtgfl0rfFteYH5dKSg/Oig/PSB7Mix9XG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApfFtcc1xTXSo/KD86KD89W1xcPCFcW2Aqfl9dfFxiX3xodHRwcz86XC9cL3xmdHA6XC9cL3x3d3dc''@;'; put 'put ''LnwkKXxbXiBdKD89IHsyLH1cbil8W15hLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dKD89W2EtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0rQCkpKS99KSx6LmdmbS51cmw9dih6LmdmbS51cmwsImkiKS5yZXBsYWNlKCJlbWFpbCIsei5nZm0uX2V4dGVuZGVkX2VtYWlsKS5n''@;'; put 'put ''ZXRSZWdleCgpLHouYnJlYWtzPXgoe30sei5nZm0se2JyOnYoei5icikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6dih6LmdmbS50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxiX3wgezIsfVxcbiIpLnJlcGxhY2UoL1x7MixcfS9nLCIqIikuZ2V0UmVnZXgoKX0pO3ZhciBo''@;'; put 'put ''MT1mdW5jdGlvbigpe2Z1bmN0aW9uICQoeSl7dGhpcy50b2tlbnM9W10sdGhpcy50b2tlbnMubGlua3M9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnM9eXx8WC5kZWZhdWx0cyx0aGlzLm9wdGlvbnMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXJ8fG5ldyBPLHRoaXMu''@;'; put 'put ''dG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXIsdGhpcy50b2tlbml6ZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMpLmlubGluZVF1ZXVlPVtdLHRoaXMuc3RhdGU9e2luTGluazohMSxpblJhd0Jsb2NrOiExLHRvcDohMH0seT17YmxvY2s6''@;'; put 'put ''Qi5ub3JtYWwsaW5saW5lOnoubm9ybWFsfSx0aGlzLm9wdGlvbnMucGVkYW50aWM/KHkuYmxvY2s9Qi5wZWRhbnRpYyx5LmlubGluZT16LnBlZGFudGljKTp0aGlzLm9wdGlvbnMuZ2ZtJiYoeS5ibG9jaz1CLmdmbSx5LmlubGluZT10aGlzLm9wdGlvbnMuYnJlYWtzP3ouYnJlYWtzOnouZ2Zt''@;'; put 'put ''KSx0aGlzLnRva2VuaXplci5ydWxlcz15fSQubGV4PWZ1bmN0aW9uKHksVCl7cmV0dXJuIG5ldyAkKFQpLmxleCh5KX0sJC5sZXhJbmxpbmU9ZnVuY3Rpb24oeSxUKXtyZXR1cm4gbmV3ICQoVCkuaW5saW5lVG9rZW5zKHkpfTt2YXIgWixEPSQucHJvdG90eXBlO3JldHVybiBELmxleD1mdW5j''@;'; put 'put ''dGlvbih5KXt2YXIgVDtmb3IoeT15LnJlcGxhY2UoL1xyXG58XHIvZywiXG4iKSx0aGlzLmJsb2NrVG9rZW5zKHksdGhpcy50b2tlbnMpO1Q9dGhpcy5pbmxpbmVRdWV1ZS5zaGlmdCgpOyl0aGlzLmlubGluZVRva2VucyhULnNyYyxULnRva2Vucyk7cmV0dXJuIHRoaXMudG9rZW5zfSxELmJs''@;'; put 'put ''b2NrVG9rZW5zPWZ1bmN0aW9uKHksVCl7dmFyIFAsdDEsczEsZjEsWT10aGlzO2Zvcih2b2lkIDA9PT1UJiYoVD1bXSkseT10aGlzLm9wdGlvbnMucGVkYW50aWM/eS5yZXBsYWNlKC9cdC9nLCIgICAgIikucmVwbGFjZSgvXiArJC9nbSwiIik6eS5yZXBsYWNlKC9eKCAqKShcdCspL2dtLGZ1''@;'; put 'put ''bmN0aW9uKFEsZDEsTjEpe3JldHVybiBkMSsiICAgICIucmVwZWF0KE4xLmxlbmd0aCl9KTt5OylpZighKHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5ibG9jayYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2suc29tZShmdW5jdGlvbihRKXty''@;'; put 'put ''ZXR1cm4hIShQPVEuY2FsbCh7bGV4ZXI6WX0seSxUKSkmJih5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApLCEwKX0pKSlpZihQPXRoaXMudG9rZW5pemVyLnNwYWNlKHkpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwxPT09UC5yYXcubGVuZ3RoJiYwPFQubGVuZ3Ro''@;'; put 'put ''P1RbVC5sZW5ndGgtMV0ucmF3Kz0iXG4iOlQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuY29kZSh5KSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksISh0MT1UW1QubGVuZ3RoLTFdKXx8InBhcmFncmFwaCIhPT10MS50eXBlJiYidGV4dCIhPT10MS50eXBlP1QucHVzaChQ''@;'; put 'put ''KToodDEucmF3Kz0iXG4iK1AucmF3LHQxLnRleHQrPSJcbiIrUC50ZXh0LHRoaXMuaW5saW5lUXVldWVbdGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPXQxLnRleHQpO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5mZW5jZXMoeSkpeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQu''@;'; put 'put ''cHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuaGVhZGluZyh5KSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5ocih5KSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlz''@;'; put 'put ''LnRva2VuaXplci5ibG9ja3F1b3RlKHkpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSxULnB1c2goUCk7ZWxzZSBpZihQPXRoaXMudG9rZW5pemVyLmxpc3QoeSkpeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuaHRtbCh5''@;'; put 'put ''KSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5kZWYoeSkpeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLCEodDE9VFtULmxlbmd0aC0xXSl8fCJwYXJhZ3JhcGgiIT09dDEudHlwZSYmInRleHQiIT09dDEudHlwZT90aGlz''@;'; put 'put ''LnRva2Vucy5saW5rc1tQLnRhZ118fCh0aGlzLnRva2Vucy5saW5rc1tQLnRhZ109e2hyZWY6UC5ocmVmLHRpdGxlOlAudGl0bGV9KToodDEucmF3Kz0iXG4iK1AucmF3LHQxLnRleHQrPSJcbiIrUC5yYXcsdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9''@;'; put 'put ''dDEudGV4dCk7ZWxzZSBpZihQPXRoaXMudG9rZW5pemVyLnRhYmxlKHkpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSxULnB1c2goUCk7ZWxzZSBpZihQPXRoaXMudG9rZW5pemVyLmxoZWFkaW5nKHkpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSxULnB1c2goUCk7ZWxzZSBpZihz''@;'; put 'put ''MT15LHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrJiZmdW5jdGlvbigpe3ZhciBRPTEvMCxkMT15LnNsaWNlKDEpLE4xPXZvaWQgMDtZLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrLmZvckVhY2goZnVuY3Rpb24oUzEpeyJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YoTjE9UzEuY2FsbCh7bGV4ZXI6dGhpc30sZDEpKSYmMDw9TjEmJihRPU1hdGgubWluKFEsTjEpKX0pLFE8MS8wJiYwPD1RJiYoczE9eS5zdWJzdHJpbmcoMCxRKzEpKX0oKSx0aGlzLnN0YXRlLnRvcCYmKFA9dGhpcy50b2tlbml6ZXIucGFyYWdyYXBoKHMxKSkpdDE9''@;'; put 'put ''VFtULmxlbmd0aC0xXSxmMSYmInBhcmFncmFwaCI9PT10MS50eXBlPyh0MS5yYXcrPSJcbiIrUC5yYXcsdDEudGV4dCs9IlxuIitQLnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5wb3AoKSx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz10MS50ZXh0KTpULnB1''@;'; put 'put ''c2goUCksZjE9czEubGVuZ3RoIT09eS5sZW5ndGgseT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci50ZXh0KHkpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwodDE9VFtULmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PXQxLnR5cGU/KHQxLnJhdys9''@;'; put 'put ''IlxuIitQLnJhdyx0MS50ZXh0Kz0iXG4iK1AudGV4dCx0aGlzLmlubGluZVF1ZXVlLnBvcCgpLHRoaXMuaW5saW5lUXVldWVbdGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPXQxLnRleHQpOlQucHVzaChQKTtlbHNlIGlmKHkpe3ZhciBxPSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIr''@;'; put 'put ''eS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3IocSk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKHEpfXJldHVybiB0aGlzLnN0YXRlLnRvcD0hMCxUfSxELmlubGluZT1mdW5jdGlvbih5LFQpe3JldHVybiB0aGlzLmlubGluZVF1ZXVlLnB1c2goe3Ny''@;'; put 'put ''Yzp5LHRva2VuczpUPXZvaWQgMD09PVQ/W106VH0pLFR9LEQuaW5saW5lVG9rZW5zPWZ1bmN0aW9uKHksVCl7dmFyIFAsdDEsczEsZjEsWSxxLFE9dGhpcyxkMT0odm9pZCAwPT09VCYmKFQ9W10pLHkpO2lmKHRoaXMudG9rZW5zLmxpbmtzKXt2YXIgTjE9T2JqZWN0LmtleXModGhpcy50b2tl''@;'; put 'put ''bnMubGlua3MpO2lmKDA8TjEubGVuZ3RoKWZvcig7bnVsbCE9KGYxPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5yZWZsaW5rU2VhcmNoLmV4ZWMoZDEpKTspTjEuaW5jbHVkZXMoZjFbMF0uc2xpY2UoZjFbMF0ubGFzdEluZGV4T2YoIlsiKSsxLC0xKSkmJihkMT1kMS5zbGljZSgwLGYx''@;'; put 'put ''LmluZGV4KSsiWyIrSSgiYSIsZjFbMF0ubGVuZ3RoLTIpKyJdIitkMS5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5sYXN0SW5kZXgpKX1mb3IoO251bGwhPShmMT10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMoZDEpKTsp''@;'; put 'put ''ZDE9ZDEuc2xpY2UoMCxmMS5pbmRleCkrIlsiK0koImEiLGYxWzBdLmxlbmd0aC0yKSsiXSIrZDEuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmJsb2NrU2tpcC5sYXN0SW5kZXgpO2Zvcig7bnVsbCE9KGYxPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5lc2NhcGVkRW1T''@;'; put 'put ''dC5leGVjKGQxKSk7KWQxPWQxLnNsaWNlKDAsZjEuaW5kZXgpKyIrKyIrZDEuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmVzY2FwZWRFbVN0Lmxhc3RJbmRleCk7Zm9yKDt5OylpZihZfHwocT0iIiksWT0hMSwhKHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlv''@;'; put 'put ''bnMuZXh0ZW5zaW9ucy5pbmxpbmUmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLmlubGluZS5zb21lKGZ1bmN0aW9uKHIxKXtyZXR1cm4hIShQPXIxLmNhbGwoe2xleGVyOlF9LHksVCkpJiYoeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKSwhMCl9KSkpaWYoUD10aGlzLnRv''@;'; put 'put ''a2VuaXplci5lc2NhcGUoeSkpeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIudGFnKHkpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwodDE9VFtULmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PVAudHlwZSYmInRleHQiPT09dDEu''@;'; put 'put ''dHlwZT8odDEucmF3Kz1QLnJhdyx0MS50ZXh0Kz1QLnRleHQpOlQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIubGluayh5KSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5yZWZsaW5rKHksdGhpcy50b2tlbnMu''@;'; put 'put ''bGlua3MpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwodDE9VFtULmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PVAudHlwZSYmInRleHQiPT09dDEudHlwZT8odDEucmF3Kz1QLnJhdyx0MS50ZXh0Kz1QLnRleHQpOlQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuZW1TdHJvbmco''@;'; put 'put ''eSxkMSxxKSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5jb2Rlc3Bhbih5KSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5icih5KSl5PXkuc3Vic3RyaW5n''@;'; put 'put ''KFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5kZWwoeSkpeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuYXV0b2xpbmsoeSxhMSkpeT15LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQu''@;'; put 'put ''cHVzaChQKTtlbHNlIGlmKCF0aGlzLnN0YXRlLmluTGluayYmKFA9dGhpcy50b2tlbml6ZXIudXJsKHksYTEpKSl5PXkuc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoczE9eSx0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMu''@;'; put 'put ''c3RhcnRJbmxpbmUmJmZ1bmN0aW9uKCl7dmFyIHIxPTEvMCxpMT15LnNsaWNlKDEpLEExPXZvaWQgMDtRLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGZ1bmN0aW9uKHgxKXsibnVtYmVyIj09dHlwZW9mKEExPXgxLmNhbGwoe2xleGVyOnRoaXN9LGkxKSkmJjA8PUEx''@;'; put 'put ''JiYocjE9TWF0aC5taW4ocjEsQTEpKX0pLHIxPDEvMCYmMDw9cjEmJihzMT15LnN1YnN0cmluZygwLHIxKzEpKX0oKSxQPXRoaXMudG9rZW5pemVyLmlubGluZVRleHQoczEsbDEpKXk9eS5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwiXyIhPT1QLnJhdy5zbGljZSgtMSkmJihxPVAucmF3LnNs''@;'; put 'put ''aWNlKC0xKSksWT0hMCwodDE9VFtULmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PXQxLnR5cGU/KHQxLnJhdys9UC5yYXcsdDEudGV4dCs9UC50ZXh0KTpULnB1c2goUCk7ZWxzZSBpZih5KXt2YXIgUzE9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIit5LmNoYXJDb2RlQXQoMCk7aWYodGhpcy5vcHRp''@;'; put 'put ''b25zLnNpbGVudCl7Y29uc29sZS5lcnJvcihTMSk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKFMxKX1yZXR1cm4gVH0sRD0kLChaPVt7a2V5OiJydWxlcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2Jsb2NrOkIsaW5saW5lOnp9fX1dKSYmRjEoRCxaKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRCwi''@;'; put 'put ''cHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSwkfSgpLHAxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gJChaKXt0aGlzLm9wdGlvbnM9Wnx8WC5kZWZhdWx0c312YXIgUj0kLnByb3RvdHlwZTtyZXR1cm4gUi5jb2RlPWZ1bmN0aW9uKFosUCx5KXt2YXIgVDtyZXR1cm4gUD0oUHx8IiIpLm1hdGNoKC9c''@;'; put 'put ''UyovKVswXSx0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0JiZudWxsIT0oVD10aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KFosUCkpJiZUIT09WiYmKHk9ITAsWj1UKSxaPVoucmVwbGFjZSgvXG4kLywiIikrIlxuIixQPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K2Yo''@;'; put 'put ''UCwhMCkrJyI+JysoeT9aOmYoWiwhMCkpKyI8L2NvZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKHk/WjpmKFosITApKSsiPC9jb2RlPjwvcHJlPlxuIn0sUi5ibG9ja3F1b3RlPWZ1bmN0aW9uKFope3JldHVybiI8YmxvY2txdW90ZT5cbiIrWisiPC9ibG9ja3F1b3RlPlxuIn0sUi5odG1s''@;'; put 'put ''PWZ1bmN0aW9uKFope3JldHVybiBafSxSLmhlYWRpbmc9ZnVuY3Rpb24oWixELHksVCl7cmV0dXJuIHRoaXMub3B0aW9ucy5oZWFkZXJJZHM/IjxoIitEKycgaWQ9IicrKHRoaXMub3B0aW9ucy5oZWFkZXJQcmVmaXgrVC5zbHVnKHkpKSsnIj4nK1orIjwvaCIrRCsiPlxuIjoiPGgiK0QrIj4i''@;'; put 'put ''K1orIjwvaCIrRCsiPlxuIn0sUi5ocj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxoci8+XG4iOiI8aHI+XG4ifSxSLmxpc3Q9ZnVuY3Rpb24oWixELHkpe3ZhciBUPUQ/Im9sIjoidWwiO3JldHVybiI8IitUKyhEJiYxIT09eT8nIHN0YXJ0PSInK3krJyInOiIiKSsi''@;'; put 'put ''PlxuIitaKyI8LyIrVCsiPlxuIn0sUi5saXN0aXRlbT1mdW5jdGlvbihaKXtyZXR1cm4iPGxpPiIrWisiPC9saT5cbiJ9LFIuY2hlY2tib3g9ZnVuY3Rpb24oWil7cmV0dXJuIjxpbnB1dCAiKyhaPydjaGVja2VkPSIiICc6IiIpKydkaXNhYmxlZD0iIiB0eXBlPSJjaGVja2JveCInKyh0aGlz''@;'; put 'put ''Lm9wdGlvbnMueGh0bWw/IiAvIjoiIikrIj4gIn0sUi5wYXJhZ3JhcGg9ZnVuY3Rpb24oWil7cmV0dXJuIjxwPiIrWisiPC9wPlxuIn0sUi50YWJsZT1mdW5jdGlvbihaLEQpe3JldHVybiI8dGFibGU+XG48dGhlYWQ+XG4iK1orIjwvdGhlYWQ+XG4iKyhEPUQmJiI8dGJvZHk+IitEKyI8L3Ri''@;'; put 'put ''b2R5PiIpKyI8L3RhYmxlPlxuIn0sUi50YWJsZXJvdz1mdW5jdGlvbihaKXtyZXR1cm4iPHRyPlxuIitaKyI8L3RyPlxuIn0sUi50YWJsZWNlbGw9ZnVuY3Rpb24oWixEKXt2YXIgeT1ELmhlYWRlcj8idGgiOiJ0ZCI7cmV0dXJuKEQuYWxpZ24/IjwiK3krJyBhbGlnbj0iJytELmFsaWduKyci''@;'; put 'put ''Pic6IjwiK3krIj4iKStaKyI8LyIreSsiPlxuIn0sUi5zdHJvbmc9ZnVuY3Rpb24oWil7cmV0dXJuIjxzdHJvbmc+IitaKyI8L3N0cm9uZz4ifSxSLmVtPWZ1bmN0aW9uKFope3JldHVybiI8ZW0+IitaKyI8L2VtPiJ9LFIuY29kZXNwYW49ZnVuY3Rpb24oWil7cmV0dXJuIjxjb2RlPiIrWisi''@;'; put 'put ''PC9jb2RlPiJ9LFIuYnI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8YnIvPiI6Ijxicj4ifSxSLmRlbD1mdW5jdGlvbihaKXtyZXR1cm4iPGRlbD4iK1orIjwvZGVsPiJ9LFIubGluaz1mdW5jdGlvbihaLEQseSl7cmV0dXJuIG51bGw9PT0oWj1WKHRoaXMub3B0aW9u''@;'; put 'put ''cy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCxaKSk/eTooWj0nPGEgaHJlZj0iJytmKFopKyciJyxEJiYoWis9JyB0aXRsZT0iJytEKyciJyksWisiPiIreSsiPC9hPiIpfSxSLmltYWdlPWZ1bmN0aW9uKFosRCx5KXtyZXR1cm4gbnVsbD09PShaPVYodGhpcy5vcHRpb25zLnNhbml0''@;'; put 'put ''aXplLHRoaXMub3B0aW9ucy5iYXNlVXJsLFopKT95OihaPSc8aW1nIHNyYz0iJytaKyciIGFsdD0iJyt5KyciJyxEJiYoWis9JyB0aXRsZT0iJytEKyciJyksWisodGhpcy5vcHRpb25zLnhodG1sPyIvPiI6Ij4iKSl9LFIudGV4dD1mdW5jdGlvbihaKXtyZXR1cm4gWn0sJH0oKSxnMT1mdW5j''@;'; put 'put ''dGlvbigpe2Z1bmN0aW9uICQoKXt9dmFyIFI9JC5wcm90b3R5cGU7cmV0dXJuIFIuc3Ryb25nPWZ1bmN0aW9uKFope3JldHVybiBafSxSLmVtPWZ1bmN0aW9uKFope3JldHVybiBafSxSLmNvZGVzcGFuPWZ1bmN0aW9uKFope3JldHVybiBafSxSLmRlbD1mdW5jdGlvbihaKXtyZXR1cm4gWn0s''@;'; put 'put ''Ui5odG1sPWZ1bmN0aW9uKFope3JldHVybiBafSxSLnRleHQ9ZnVuY3Rpb24oWil7cmV0dXJuIFp9LFIubGluaz1mdW5jdGlvbihaLEQseSl7cmV0dXJuIiIreX0sUi5pbWFnZT1mdW5jdGlvbihaLEQseSl7cmV0dXJuIiIreX0sUi5icj1mdW5jdGlvbigpe3JldHVybiIifSwkfSgpLEgxPWZ1''@;'; put 'put ''bmN0aW9uKCl7ZnVuY3Rpb24gJCgpe3RoaXMuc2Vlbj17fX12YXIgUj0kLnByb3RvdHlwZTtyZXR1cm4gUi5zZXJpYWxpemU9ZnVuY3Rpb24oWil7cmV0dXJuIFoudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZSgvPFshXC9hLXpdLio/Pi9naSwiIikucmVwbGFjZSgvW1x1MjAwMC1cdTIw''@;'; put 'put ''NkZcdTJFMDAtXHUyRTdGXFwnISIjJCUmKCkqKywuLzo7PD0+P0BbXF1eYHt8fX5dL2csIiIpLnJlcGxhY2UoL1xzL2csIi0iKX0sUi5nZXROZXh0U2FmZVNsdWc9ZnVuY3Rpb24oWixEKXt2YXIgeT1aLFQ9MDtpZih0aGlzLnNlZW4uaGFzT3duUHJvcGVydHkoeSkpZm9yKFQ9dGhpcy5zZWVu''@;'; put 'put ''W1pdO3k9WisiLSIrICsrVCx0aGlzLnNlZW4uaGFzT3duUHJvcGVydHkoeSk7KTtyZXR1cm4gRHx8KHRoaXMuc2VlbltaXT1ULHRoaXMuc2Vlblt5XT0wKSx5fSxSLnNsdWc9ZnVuY3Rpb24oWixEKXtyZXR1cm4gdm9pZCAwPT09RCYmKEQ9e30pLFo9dGhpcy5zZXJpYWxpemUoWiksdGhpcy5n''@;'; put 'put ''ZXROZXh0U2FmZVNsdWcoWixELmRyeXJ1bil9LCR9KCksRDE9ZnVuY3Rpb24oKXtmdW5jdGlvbiAkKFope3RoaXMub3B0aW9ucz1afHxYLmRlZmF1bHRzLHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBwMSx0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9u''@;'; put 'put ''cy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRlcmVyPW5ldyBnMSx0aGlzLnNsdWdnZXI9bmV3IEgxfSQucGFyc2U9ZnVuY3Rpb24oWixEKXtyZXR1cm4gbmV3ICQoRCkucGFyc2UoWil9LCQucGFyc2VJbmxpbmU9ZnVuY3Rpb24oWixE''@;'; put 'put ''KXtyZXR1cm4gbmV3ICQoRCkucGFyc2VJbmxpbmUoWil9O3ZhciBSPSQucHJvdG90eXBlO3JldHVybiBSLnBhcnNlPWZ1bmN0aW9uKFosRCl7dm9pZCAwPT09RCYmKEQ9ITApO2Zvcih2YXIgeSxULFAsdDEsczEsZjEsWSxxLFEsZDEsTjEsUzEscjEsaTEsQTEseDEsSTE9IiIsSjE9Wi5sZW5n''@;'; put 'put ''dGgsdDA9MDt0MDxKMTt0MCsrKWlmKHE9Wlt0MF0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3EudHlwZV0mJighMSE9PSh4MT10aGlzLm9wdGlvbnMuZXh0ZW5zaW9u''@;'; put 'put ''cy5yZW5kZXJlcnNbcS50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30scSkpfHwhWyJzcGFjZSIsImhyIiwiaGVhZGluZyIsImNvZGUiLCJ0YWJsZSIsImJsb2NrcXVvdGUiLCJsaXN0IiwiaHRtbCIsInBhcmFncmFwaCIsInRleHQiXS5pbmNsdWRlcyhxLnR5cGUpKSlJMSs9eDF8fCIiO2Vsc2Ug''@;'; put 'put ''c3dpdGNoKHEudHlwZSl7Y2FzZSJzcGFjZSI6Y29udGludWU7Y2FzZSJociI6STErPXRoaXMucmVuZGVyZXIuaHIoKTtjb250aW51ZTtjYXNlImhlYWRpbmciOkkxKz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZShxLnRva2VucykscS5kZXB0aCx1KHRoaXMucGFyc2VJ''@;'; put 'put ''bmxpbmUocS50b2tlbnMsdGhpcy50ZXh0UmVuZGVyZXIpKSx0aGlzLnNsdWdnZXIpO2NvbnRpbnVlO2Nhc2UiY29kZSI6STErPXRoaXMucmVuZGVyZXIuY29kZShxLnRleHQscS5sYW5nLHEuZXNjYXBlZCk7Y29udGludWU7Y2FzZSJ0YWJsZSI6Zm9yKGYxPVE9IiIsUD1xLmhlYWRlci5sZW5n''@;'; put 'put ''dGgseT0wO3k8UDt5KyspZjErPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUocS5oZWFkZXJbeV0udG9rZW5zKSx7aGVhZGVyOiEwLGFsaWduOnEuYWxpZ25beV19KTtmb3IoUSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhmMSksWT0iIixQPXEucm93cy5sZW5ndGgs''@;'; put 'put ''eT0wO3k8UDt5Kyspe2ZvcihmMT0iIix0MT0oczE9cS5yb3dzW3ldKS5sZW5ndGgsVD0wO1Q8dDE7VCsrKWYxKz10aGlzLnJlbmRlcmVyLnRhYmxlY2VsbCh0aGlzLnBhcnNlSW5saW5lKHMxW1RdLnRva2Vucykse2hlYWRlcjohMSxhbGlnbjpxLmFsaWduW1RdfSk7WSs9dGhpcy5yZW5kZXJl''@;'; put 'put ''ci50YWJsZXJvdyhmMSl9STErPXRoaXMucmVuZGVyZXIudGFibGUoUSxZKTtjb250aW51ZTtjYXNlImJsb2NrcXVvdGUiOlk9dGhpcy5wYXJzZShxLnRva2VucyksSTErPXRoaXMucmVuZGVyZXIuYmxvY2txdW90ZShZKTtjb250aW51ZTtjYXNlImxpc3QiOmZvcihRPXEub3JkZXJlZCxmMD1x''@;'; put 'put ''LnN0YXJ0LGQxPXEubG9vc2UsUD1xLml0ZW1zLmxlbmd0aCxZPSIiLHk9MDt5PFA7eSsrKXIxPShTMT1xLml0ZW1zW3ldKS5jaGVja2VkLGkxPVMxLnRhc2ssTjE9IiIsUzEudGFzayYmKEExPXRoaXMucmVuZGVyZXIuY2hlY2tib3gocjEpLGQxPzA8UzEudG9rZW5zLmxlbmd0aCYmInBhcmFn''@;'; put 'put ''cmFwaCI9PT1TMS50b2tlbnNbMF0udHlwZT8oUzEudG9rZW5zWzBdLnRleHQ9QTErIiAiK1MxLnRva2Vuc1swXS50ZXh0LFMxLnRva2Vuc1swXS50b2tlbnMmJjA8UzEudG9rZW5zWzBdLnRva2Vucy5sZW5ndGgmJiJ0ZXh0Ij09PVMxLnRva2Vuc1swXS50b2tlbnNbMF0udHlwZSYmKFMxLnRv''@;'; put 'put ''a2Vuc1swXS50b2tlbnNbMF0udGV4dD1BMSsiICIrUzEudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0KSk6UzEudG9rZW5zLnVuc2hpZnQoe3R5cGU6InRleHQiLHRleHQ6QTF9KTpOMSs9QTEpLE4xKz10aGlzLnBhcnNlKFMxLnRva2VucyxkMSksWSs9dGhpcy5yZW5kZXJlci5saXN0aXRlbShO''@;'; put 'put ''MSxpMSxyMSk7STErPXRoaXMucmVuZGVyZXIubGlzdChZLFEsZjApO2NvbnRpbnVlO2Nhc2UiaHRtbCI6STErPXRoaXMucmVuZGVyZXIuaHRtbChxLnRleHQpO2NvbnRpbnVlO2Nhc2UicGFyYWdyYXBoIjpJMSs9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShxLnRv''@;'; put 'put ''a2VucykpO2NvbnRpbnVlO2Nhc2UidGV4dCI6Zm9yKFk9cS50b2tlbnM/dGhpcy5wYXJzZUlubGluZShxLnRva2Vucyk6cS50ZXh0O3QwKzE8SjEmJiJ0ZXh0Ij09PVpbdDArMV0udHlwZTspWSs9IlxuIisoKHE9WlsrK3QwXSkudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUocS50b2tlbnMpOnEu''@;'; put 'put ''dGV4dCk7STErPUQ/dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgoWSk6WTtjb250aW51ZTtkZWZhdWx0OnZhciBmMD0nVG9rZW4gd2l0aCAiJytxLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKGYwKTt0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoZjApfXJldHVybiBJMX0sUi5wYXJzZUlubGluZT1mdW5jdGlvbihaLEQpe0Q9RHx8dGhpcy5yZW5kZXJlcjtmb3IodmFyIHksVCxQPSIiLHQxPVoubGVuZ3RoLHMxPTA7czE8dDE7czErKylpZih5PVpbczFdLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9w''@;'; put 'put ''dGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1t5LnR5cGVdJiYoITEhPT0oVD10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbeS50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30seSkpfHwhWyJlc2NhcGUiLCJodG1sIiwi''@;'; put 'put ''bGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKHkudHlwZSkpKVArPVR8fCIiO2Vsc2Ugc3dpdGNoKHkudHlwZSl7Y2FzZSJlc2NhcGUiOmNhc2UidGV4dCI6UCs9RC50ZXh0KHkudGV4dCk7YnJlYWs7Y2FzZSJodG1sIjpQ''@;'; put 'put ''Kz1ELmh0bWwoeS50ZXh0KTticmVhaztjYXNlImxpbmsiOlArPUQubGluayh5LmhyZWYseS50aXRsZSx0aGlzLnBhcnNlSW5saW5lKHkudG9rZW5zLEQpKTticmVhaztjYXNlImltYWdlIjpQKz1ELmltYWdlKHkuaHJlZix5LnRpdGxlLHkudGV4dCk7YnJlYWs7Y2FzZSJzdHJvbmciOlArPUQu''@;'; put 'put ''c3Ryb25nKHRoaXMucGFyc2VJbmxpbmUoeS50b2tlbnMsRCkpO2JyZWFrO2Nhc2UiZW0iOlArPUQuZW0odGhpcy5wYXJzZUlubGluZSh5LnRva2VucyxEKSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6UCs9RC5jb2Rlc3Bhbih5LnRleHQpO2JyZWFrO2Nhc2UiYnIiOlArPUQuYnIoKTticmVhaztj''@;'; put 'put ''YXNlImRlbCI6UCs9RC5kZWwodGhpcy5wYXJzZUlubGluZSh5LnRva2VucyxEKSk7YnJlYWs7ZGVmYXVsdDp2YXIgZjE9J1Rva2VuIHdpdGggIicreS50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihm''@;'; put 'put ''MSk7dGhyb3cgbmV3IEVycm9yKGYxKX1yZXR1cm4gUH0sJH0oKTtmdW5jdGlvbiBqKCQsUixaKXtpZihudWxsPT0kKXRocm93IG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpO2lmKCJzdHJpbmciIT10eXBlb2YgJCl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSAiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgkKSsiLCBzdHJpbmcgZXhwZWN0ZWQiKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUiYmKFo9UixSPW51bGwpLE4oUj14KHt9LGouZGVmYXVsdHMsUnx8e30p''@;'; put 'put ''KSxaKXt2YXIgRCx5PVIuaGlnaGxpZ2h0O3RyeXtEPWgxLmxleCgkLFIpfWNhdGNoKGYxKXtyZXR1cm4gWihmMSl9dmFyIFQsUD1mdW5jdGlvbihmMSl7dmFyIFk7aWYoIWYxKXRyeXtSLndhbGtUb2tlbnMmJmoud2Fsa1Rva2VucyhELFIud2Fsa1Rva2VucyksWT1EMS5wYXJzZShELFIpfWNh''@;'; put 'put ''dGNoKHEpe2YxPXF9cmV0dXJuIFIuaGlnaGxpZ2h0PXksZjE/WihmMSk6WihudWxsLFkpfTtyZXR1cm4heXx8eS5sZW5ndGg8Mz9QKCk6KGRlbGV0ZSBSLmhpZ2hsaWdodCxELmxlbmd0aD8oVD0wLGoud2Fsa1Rva2VucyhELGZ1bmN0aW9uKGYxKXsiY29kZSI9PT1mMS50eXBlJiYoVCsrLHNl''@;'; put 'put ''dFRpbWVvdXQoZnVuY3Rpb24oKXt5KGYxLnRleHQsZjEubGFuZyxmdW5jdGlvbihZLHEpe2lmKFkpcmV0dXJuIFAoWSk7bnVsbCE9cSYmcSE9PWYxLnRleHQmJihmMS50ZXh0PXEsZjEuZXNjYXBlZD0hMCksMD09LS1UJiZQKCl9KX0sMCkpfSksdm9pZCgwPT09VCYmUCgpKSk6UCgpKX1mdW5j''@;'; put 'put ''dGlvbiB0MShmMSl7aWYoZjEubWVzc2FnZSs9IlxuUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuIixSLnNpbGVudClyZXR1cm4iPHA+QW4gZXJyb3Igb2NjdXJyZWQ6PC9wPjxwcmU+IitmKGYxLm1lc3NhZ2UrIiIsITApKyI8L3ByZT4i''@;'; put 'put ''O3Rocm93IGYxfXRyeXt2YXIgczE9aDEubGV4KCQsUik7aWYoUi53YWxrVG9rZW5zKXtpZihSLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChqLndhbGtUb2tlbnMoczEsUi53YWxrVG9rZW5zKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBEMS5wYXJzZShzMSxSKX0pLmNhdGNoKHQxKTtqLndh''@;'; put 'put ''bGtUb2tlbnMoczEsUi53YWxrVG9rZW5zKX1yZXR1cm4gRDEucGFyc2UoczEsUil9Y2F0Y2goZjEpe3QxKGYxKX19ai5vcHRpb25zPWouc2V0T3B0aW9ucz1mdW5jdGlvbigkKXtyZXR1cm4geChqLmRlZmF1bHRzLCQpLFguZGVmYXVsdHM9JD1qLmRlZmF1bHRzLGp9LGouZ2V0RGVmYXVsdHM9''@;'; put 'put ''ZSxqLmRlZmF1bHRzPVguZGVmYXVsdHMsai51c2U9ZnVuY3Rpb24oKXtmb3IodmFyICQ9YXJndW1lbnRzLmxlbmd0aCxSPW5ldyBBcnJheSgkKSxaPTA7WjwkO1orKylSW1pdPWFyZ3VtZW50c1taXTt2YXIgRCx5PXguYXBwbHkodm9pZCAwLFt7fV0uY29uY2F0KFIpKSxUPWouZGVmYXVsdHMu''@;'; put 'put ''ZXh0ZW5zaW9uc3x8e3JlbmRlcmVyczp7fSxjaGlsZFRva2Vuczp7fX07Ui5mb3JFYWNoKGZ1bmN0aW9uKFApe2lmKFAuZXh0ZW5zaW9ucyYmKEQ9ITAsUC5leHRlbnNpb25zLmZvckVhY2goZnVuY3Rpb24oUSl7aWYoIVEubmFtZSl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBuYW1lIHJl''@;'; put 'put ''cXVpcmVkIik7dmFyIGQxO2lmKFEucmVuZGVyZXImJihULnJlbmRlcmVyc1tRLm5hbWVdPShkMT1ULnJlbmRlcmVycz9ULnJlbmRlcmVyc1tRLm5hbWVdOm51bGwpP2Z1bmN0aW9uKCl7Zm9yKHZhciBOMT1hcmd1bWVudHMubGVuZ3RoLFMxPW5ldyBBcnJheShOMSkscjE9MDtyMTxOMTtyMSsr''@;'; put 'put ''KVMxW3IxXT1hcmd1bWVudHNbcjFdO3ZhciBpMT1RLnJlbmRlcmVyLmFwcGx5KHRoaXMsUzEpO3JldHVybiExPT09aTE/ZDEuYXBwbHkodGhpcyxTMSk6aTF9OlEucmVuZGVyZXIpLFEudG9rZW5pemVyKXtpZighUS5sZXZlbHx8ImJsb2NrIiE9PVEubGV2ZWwmJiJpbmxpbmUiIT09US5sZXZl''@;'; put 'put ''bCl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBsZXZlbCBtdXN0IGJlICdibG9jaycgb3IgJ2lubGluZSciKTtUW1EubGV2ZWxdP1RbUS5sZXZlbF0udW5zaGlmdChRLnRva2VuaXplcik6VFtRLmxldmVsXT1bUS50b2tlbml6ZXJdLFEuc3RhcnQmJigiYmxvY2siPT09US5sZXZlbD9ULnN0''@;'; put 'put ''YXJ0QmxvY2s/VC5zdGFydEJsb2NrLnB1c2goUS5zdGFydCk6VC5zdGFydEJsb2NrPVtRLnN0YXJ0XToiaW5saW5lIj09PVEubGV2ZWwmJihULnN0YXJ0SW5saW5lP1Quc3RhcnRJbmxpbmUucHVzaChRLnN0YXJ0KTpULnN0YXJ0SW5saW5lPVtRLnN0YXJ0XSkpfVEuY2hpbGRUb2tlbnMmJihU''@;'; put 'put ''LmNoaWxkVG9rZW5zW1EubmFtZV09US5jaGlsZFRva2Vucyl9KSksUC5yZW5kZXJlcil7dmFyIHQxLHMxPWouZGVmYXVsdHMucmVuZGVyZXJ8fG5ldyBwMTtmb3IodDEgaW4gUC5yZW5kZXJlcikhZnVuY3Rpb24oUSl7dmFyIGQxPXMxW1FdO3MxW1FdPWZ1bmN0aW9uKCl7Zm9yKHZhciBOMT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLFMxPW5ldyBBcnJheShOMSkscjE9MDtyMTxOMTtyMSsrKVMxW3IxXT1hcmd1bWVudHNbcjFdO3ZhciBpMT1QLnJlbmRlcmVyW1FdLmFwcGx5KHMxLFMxKTtyZXR1cm4hMT09PWkxP2QxLmFwcGx5KHMxLFMxKTppMX19KHQxKTt5LnJlbmRlcmVyPXMxfWlmKFAudG9r''@;'; put 'put ''ZW5pemVyKXt2YXIgZjEsWT1qLmRlZmF1bHRzLnRva2VuaXplcnx8bmV3IE87Zm9yKGYxIGluIFAudG9rZW5pemVyKSFmdW5jdGlvbihRKXt2YXIgZDE9WVtRXTtZW1FdPWZ1bmN0aW9uKCl7Zm9yKHZhciBOMT1hcmd1bWVudHMubGVuZ3RoLFMxPW5ldyBBcnJheShOMSkscjE9MDtyMTxOMTty''@;'; put 'put ''MSsrKVMxW3IxXT1hcmd1bWVudHNbcjFdO3ZhciBpMT1QLnRva2VuaXplcltRXS5hcHBseShZLFMxKTtyZXR1cm4hMT09PWkxP2QxLmFwcGx5KFksUzEpOmkxfX0oZjEpO3kudG9rZW5pemVyPVl9dmFyIHE7UC53YWxrVG9rZW5zJiYocT1qLmRlZmF1bHRzLndhbGtUb2tlbnMseS53YWxrVG9r''@;'; put 'put ''ZW5zPWZ1bmN0aW9uKFEpe3ZhciBkMT1bXTtyZXR1cm4gZDEucHVzaChQLndhbGtUb2tlbnMuY2FsbCh0aGlzLFEpKSxxP2QxLmNvbmNhdChxLmNhbGwodGhpcyxRKSk6ZDF9KSxEJiYoeS5leHRlbnNpb25zPVQpLGouc2V0T3B0aW9ucyh5KX0pfSxqLndhbGtUb2tlbnM9ZnVuY3Rpb24oJCxS''@;'; put 'put ''KXtmb3IodmFyIFosRD1bXSx5PUEoJCk7IShaPXkoKSkuZG9uZTspIWZ1bmN0aW9uKCl7dmFyIFQ9Wi52YWx1ZTtzd2l0Y2goRD1ELmNvbmNhdChSLmNhbGwoaixUKSksVC50eXBlKXtjYXNlInRhYmxlIjpmb3IodmFyIFA9QShULmhlYWRlcik7ISh0MT1QKCkpLmRvbmU7KXt2YXIgdDE9dDEu''@;'; put 'put ''dmFsdWU7RD1ELmNvbmNhdChqLndhbGtUb2tlbnModDEudG9rZW5zLFIpKX1mb3IodmFyIHMxLGYxPUEoVC5yb3dzKTshKHMxPWYxKCkpLmRvbmU7KWZvcih2YXIgWT1BKHMxLnZhbHVlKTshKHE9WSgpKS5kb25lOyl7dmFyIHE9cS52YWx1ZTtEPUQuY29uY2F0KGoud2Fsa1Rva2VucyhxLnRv''@;'; put 'put ''a2VucyxSKSl9YnJlYWs7Y2FzZSJsaXN0IjpEPUQuY29uY2F0KGoud2Fsa1Rva2VucyhULml0ZW1zLFIpKTticmVhaztkZWZhdWx0OmouZGVmYXVsdHMuZXh0ZW5zaW9ucyYmai5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zJiZqLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tl''@;'; put 'put ''bnNbVC50eXBlXT9qLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnNbVC50eXBlXS5mb3JFYWNoKGZ1bmN0aW9uKFEpe0Q9RC5jb25jYXQoai53YWxrVG9rZW5zKFRbUV0sUikpfSk6VC50b2tlbnMmJihEPUQuY29uY2F0KGoud2Fsa1Rva2VucyhULnRva2VucyxSKSkpfX0oKTtyZXR1''@;'; put 'put ''cm4gRH0sai5wYXJzZUlubGluZT1mdW5jdGlvbigkLFIpe2lmKG51bGw9PSQpdGhyb3cgbmV3IEVycm9yKCJtYXJrZWQucGFyc2VJbmxpbmUoKTogaW5wdXQgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZCBvciBudWxsIik7aWYoInN0cmluZyIhPXR5cGVvZiAkKXRocm93IG5ldyBFcnJvcigibWFy''@;'; put 'put ''a2VkLnBhcnNlSW5saW5lKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCQpKyIsIHN0cmluZyBleHBlY3RlZCIpO04oUj14KHt9LGouZGVmYXVsdHMsUnx8e30pKTt0cnl7dmFyIFo9aDEubGV4SW5saW5lKCQsUik7cmV0dXJu''@;'; put 'put ''IFIud2Fsa1Rva2VucyYmai53YWxrVG9rZW5zKFosUi53YWxrVG9rZW5zKSxEMS5wYXJzZUlubGluZShaLFIpfWNhdGNoKEQpe2lmKEQubWVzc2FnZSs9IlxuUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuIixSLnNpbGVudClyZXR1cm4i''@;'; put 'put ''PHA+QW4gZXJyb3Igb2NjdXJyZWQ6PC9wPjxwcmU+IitmKEQubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7dGhyb3cgRH19LGouUGFyc2VyPUQxLGoucGFyc2VyPUQxLnBhcnNlLGouUmVuZGVyZXI9cDEsai5UZXh0UmVuZGVyZXI9ZzEsai5MZXhlcj1oMSxqLmxleGVyPWgxLmxleCxqLlRva2Vu''@;'; put 'put ''aXplcj1PLGouU2x1Z2dlcj1IMSxuMT0oai5wYXJzZT1qKS5vcHRpb25zO3ZhciBtMT1qLnNldE9wdGlvbnMsXzE9ai51c2UsSj1qLndhbGtUb2tlbnMsbzE9ai5wYXJzZUlubGluZSxNMT1qLGIxPUQxLnBhcnNlLEIxPWgxLmxleDtYLkxleGVyPWgxLFguUGFyc2VyPUQxLFguUmVuZGVyZXI9''@;'; put 'put ''cDEsWC5TbHVnZ2VyPUgxLFguVGV4dFJlbmRlcmVyPWcxLFguVG9rZW5pemVyPU8sWC5nZXREZWZhdWx0cz1lLFgubGV4ZXI9QjEsWC5tYXJrZWQ9aixYLm9wdGlvbnM9bjEsWC5wYXJzZT1NMSxYLnBhcnNlSW5saW5lPW8xLFgucGFyc2VyPWIxLFguc2V0T3B0aW9ucz1tMSxYLnVzZT1fMSxY''@;'; put 'put ''LndhbGtUb2tlbnM9SixPYmplY3QuZGVmaW5lUHJvcGVydHkoWCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjshZnVuY3Rpb24oKXtpZih2b2lkIDA9PT13aW5kb3cuUmVmbGVjdHx8dm9pZCAwPT09d2luZG93LmN1c3RvbUVsZW1lbnRzfHx3aW5k''@;'; put 'put ''b3cuY3VzdG9tRWxlbWVudHMucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjaylyZXR1cm47Y29uc3QgWD1IVE1MRWxlbWVudDt3aW5kb3cuSFRNTEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoWCxbXSx0aGlzLmNvbnN0cnVjdG9yKX0sSFRNTEVsZW1lbnQucHJv''@;'; put 'put ''dG90eXBlPVgucHJvdG90eXBlLEhUTUxFbGVtZW50LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IVE1MRWxlbWVudCxPYmplY3Quc2V0UHJvdG90eXBlT2YoSFRNTEVsZW1lbnQsWCl9KCl9KCksZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFg7ZnVuY3Rpb24gRjEodCl7dmFyIGk9MDtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXtyZXR1cm4gaTx0Lmxlbmd0aD97ZG9uZTohMSx2YWx1ZTp0W2krK119Ontkb25lOiEwfX19dmFyIG8saz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHQsaSxuKXtyZXR1cm4gdD09''@;'; put 'put ''QXJyYXkucHJvdG90eXBlfHx0PT1PYmplY3QucHJvdG90eXBlfHwodFtpXT1uLnZhbHVlKSx0fSxlPWZ1bmN0aW9uIEEodCl7dD1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLHQsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDsrK2kpe3ZhciBuPXRbaV07aWYobiYmbi5NYXRoPT1NYXRoKXJldHVybiBufXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iil9KHRoaXMpO2Z1bmN0''@;'; put 'put ''aW9uIGwodCxpKXtpZihpKXQ6e3ZhciBuPWU7dD10LnNwbGl0KCIuIik7Zm9yKHZhciBzPTA7czx0Lmxlbmd0aC0xO3MrKyl7dmFyIGQ9dFtzXTtpZighKGQgaW4gbikpYnJlYWsgdDtuPW5bZF19KGk9aShzPW5bdD10W3QubGVuZ3RoLTFdXSkpIT1zJiZudWxsIT1pJiZrKG4sdCx7Y29uZmln''@;'; put 'put ''dXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOml9KX19ZnVuY3Rpb24gcih0KXtyZXR1cm4odD17bmV4dDp0fSlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0fWZ1bmN0aW9uIGEodCl7dmFyIGk9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5p''@;'; put 'put ''dGVyYXRvciYmdFtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBpP2kuY2FsbCh0KTp7bmV4dDpGMSh0KX19ZnVuY3Rpb24gYyh0KXtpZighKHQgaW5zdGFuY2VvZiBBcnJheSkpe3Q9YSh0KTtmb3IodmFyIGksbj1bXTshKGk9dC5uZXh0KCkpLmRvbmU7KW4ucHVzaChpLnZhbHVlKTt0PW59cmV0''@;'; put 'put ''dXJuIHR9aWYobCgiU3ltYm9sIixmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGQsbSl7dGhpcy5nPWQsayh0aGlzLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTptfSl9aWYodClyZXR1cm4gdDtuLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmd9O3ZhciBzPTA7cmV0dXJuIGZ1bmN0aW9uIGkoZCl7aWYodGhpcyBpbnN0YW5jZW9mIGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7cmV0dXJuIG5ldyBuKCJqc2NvbXBfc3ltYm9sXyIrKGR8fCIiKSsiXyIrcysrLGQpfX0p''@;'; put 'put ''LGwoIlN5bWJvbC5pdGVyYXRvciIsZnVuY3Rpb24odCl7aWYodClyZXR1cm4gdDt0PVN5bWJvbCgiU3ltYm9sLml0ZXJhdG9yIik7Zm9yKHZhciBpPSJBcnJheSBJbnQ4QXJyYXkgVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBJbnQxNkFycmF5IFVpbnQxNkFycmF5IEludDMyQXJyYXkg''@;'; put 'put ''VWludDMyQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSIuc3BsaXQoIiAiKSxuPTA7bjxpLmxlbmd0aDtuKyspe3ZhciBzPWVbaVtuXV07ImZ1bmN0aW9uIj09dHlwZW9mIHMmJiJmdW5jdGlvbiIhPXR5cGVvZiBzLnByb3RvdHlwZVt0XSYmayhzLnByb3RvdHlwZSx0LHtjb25maWd1''@;'; put 'put ''cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcihGMSh0aGlzKSl9fSl9cmV0dXJuIHR9KSwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mKW89T2JqZWN0LnNldFByb3RvdHlwZU9mO2Vsc2V7dmFyIGg7dDp7dmFyIGc9e307dHJ5e2cu''@;'; put 'put ''X19wcm90b19fPXthOiEwfSxoPWcuYTticmVhayB0fWNhdGNoKHQpe31oPSExfW89aD9mdW5jdGlvbih0LGkpe2lmKHQuX19wcm90b19fPWksdC5fX3Byb3RvX18hPT1pKXRocm93IG5ldyBUeXBlRXJyb3IodCsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIHR9Om51bGx9dmFyIHU9bztm''@;'; put 'put ''dW5jdGlvbiBwKCl7dGhpcy51PSExLHRoaXMuaD1udWxsLHRoaXMuS2E9dm9pZCAwLHRoaXMuZz0xLHRoaXMuZGE9MCx0aGlzLmk9bnVsbH1mdW5jdGlvbiB2KHQpe2lmKHQudSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dC51PSEwfWZ1bmN0''@;'; put 'put ''aW9uIEgodCxpKXt0Lmk9e1dhOmksJGE6ITB9LHQuZz10LmRhfWZ1bmN0aW9uIEModCxpKXtyZXR1cm4gdC5nPTMse3ZhbHVlOml9fWZ1bmN0aW9uIFYodCl7dGhpcy5nPW5ldyBwLHRoaXMuaD10fWZ1bmN0aW9uIF8odCxpLG4scyl7dHJ5e3ZhciBkPWkuY2FsbCh0LmcuaCxuKTtpZighKGQg''@;'; put 'put ''aW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2QrIiBpcyBub3QgYW4gb2JqZWN0Iik7aWYoIWQuZG9uZSlyZXR1cm4gdC5nLnU9ITEsZDt2YXIgbT1kLnZhbHVlfWNhdGNoKEwpe3JldHVybiB0LmcuaD1udWxsLEgodC5nLEwpLGIodCl9''@;'; put 'put ''cmV0dXJuIHQuZy5oPW51bGwscy5jYWxsKHQuZyxtKSxiKHQpfWZ1bmN0aW9uIGIodCl7Zm9yKDt0LmcuZzspdHJ5e3ZhciBpPXQuaCh0LmcpO2lmKGkpcmV0dXJuIHQuZy51PSExLHt2YWx1ZTppLnZhbHVlLGRvbmU6ITF9fWNhdGNoKG4pe3QuZy5LYT12b2lkIDAsSCh0Lmcsbil9aWYodC5n''@;'; put 'put ''LnU9ITEsdC5nLmkpe2lmKGk9dC5nLmksdC5nLmk9bnVsbCxpLiRhKXRocm93IGkuV2E7cmV0dXJue3ZhbHVlOmkucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19ZnVuY3Rpb24gTSh0KXt0aGlzLm5leHQ9ZnVuY3Rpb24oaSl7cmV0dXJuIHYodC5nKSx0Lmcu''@;'; put 'put ''aD9pPV8odCx0LmcuaC5uZXh0LGksdC5nLk8pOih0LmcuTyhpKSxpPWIodCkpLGl9LHRoaXMudGhyb3c9ZnVuY3Rpb24oaSl7cmV0dXJuIHYodC5nKSx0LmcuaD9pPV8odCx0LmcuaC50aHJvdyxpLHQuZy5PKTooSCh0LmcsaSksaT1iKHQpKSxpfSx0aGlzLnJldHVybj1mdW5jdGlvbihpKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gUyh0LGkpe3YodC5nKTt2YXIgbj10LmcuaDtyZXR1cm4gbj9fKHQsInJldHVybiJpbiBuP24ucmV0dXJuOmZ1bmN0aW9uKHMpe3JldHVybnt2YWx1ZTpzLGRvbmU6ITB9fSxpLHQuZy5yZXR1cm4pOih0LmcucmV0dXJuKGkpLGIodCkpfSh0LGkpfSx0aGlzW1N5bWJv''@;'; put 'put ''bC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319ZnVuY3Rpb24geCh0LGkpe3JldHVybiBpPW5ldyBNKG5ldyBWKGkpKSx1JiZ0LnByb3RvdHlwZSYmdShpLHQucHJvdG90eXBlKSxpfXAucHJvdG90eXBlLk89ZnVuY3Rpb24odCl7dGhpcy5LYT10fSxwLnByb3RvdHlwZS5yZXR1''@;'; put 'put ''cm49ZnVuY3Rpb24odCl7dGhpcy5pPXtyZXR1cm46dH0sdGhpcy5nPXRoaXMuZGF9LEFycmF5LmZyb218fChBcnJheS5mcm9tPWZ1bmN0aW9uKHQpe3JldHVybltdLnNsaWNlLmNhbGwodCl9KSxPYmplY3QuYXNzaWdufHwoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbih0KXtmb3IodmFyIHMsaT1b''@;'; put 'put ''XS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPTA7bjxpLmxlbmd0aDtuKyspaWYocz1pW25dKWZvcih2YXIgZD10LG09T2JqZWN0LmtleXMocyksTD0wO0w8bS5sZW5ndGg7TCsrKXt2YXIgRj1tW0xdO2RbRl09c1tGXX1yZXR1cm4gdH0pO3ZhciBFPXNldFRpbWVvdXQ7ZnVuY3Rpb24gdygp''@;'; put 'put ''e31mdW5jdGlvbiBJKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEkpKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhp''@;'; put 'put ''cy5OPTAsdGhpcy5FYT0hMSx0aGlzLkk9dm9pZCAwLHRoaXMuYmE9W10sYTEodCx0aGlzKX1mdW5jdGlvbiBXKHQsaSl7Zm9yKDszPT09dC5OOyl0PXQuSTswPT09dC5OP3QuYmEucHVzaChpKToodC5FYT0hMCxEMShmdW5jdGlvbigpe3ZhciBuPTE9PT10Lk4/aS5iYjppLmNiO2lmKG51bGw9''@;'; put 'put ''PT1uKSgxPT09dC5OP086QikoaS5wcm9taXNlLHQuSSk7ZWxzZXt0cnl7dmFyIHM9bih0LkkpfWNhdGNoKGQpe3JldHVybiB2b2lkIEIoaS5wcm9taXNlLGQpfU8oaS5wcm9taXNlLHMpfX0pKX1mdW5jdGlvbiBPKHQsaSl7dHJ5e2lmKGk9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkEgcHJv''@;'; put 'put ''bWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIik7aWYoaSYmKCJvYmplY3QiPT10eXBlb2YgaXx8ImZ1bmN0aW9uIj09dHlwZW9mIGkpKXt2YXIgbj1pLnRoZW47aWYoaSBpbnN0YW5jZW9mIEkpcmV0dXJuIHQuTj0zLHQuST1pLHZvaWQgeih0KTtpZigiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgbilyZXR1cm4gdm9pZCBhMShmdW5jdGlvbiBOKHQsaSl7cmV0dXJuIGZ1bmN0aW9uKCl7dC5hcHBseShpLGFyZ3VtZW50cyl9fShuLGkpLHQpfXQuTj0xLHQuST1pLHoodCl9Y2F0Y2gocyl7Qih0LHMpfX1mdW5jdGlvbiBCKHQsaSl7dC5OPTIsdC5JPWkseih0KX1mdW5jdGlvbiB6''@;'; put 'put ''KHQpezI9PT10Lk4mJjA9PT10LmJhLmxlbmd0aCYmRDEoZnVuY3Rpb24oKXt0LkVhfHwidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUmJmNvbnNvbGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiIsdC5JKX0pO2Zvcih2YXIgaT0wLG49dC5i''@;'; put 'put ''YS5sZW5ndGg7aTxuO2krKylXKHQsdC5iYVtpXSk7dC5iYT1udWxsfWZ1bmN0aW9uIGwxKHQsaSxuKXt0aGlzLmJiPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbCx0aGlzLmNiPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6bnVsbCx0aGlzLnByb21pc2U9bn1mdW5jdGlvbiBhMSh0LGkpe3Zh''@;'; put 'put ''ciBuPSExO3RyeXt0KGZ1bmN0aW9uKHMpe258fChuPSEwLE8oaSxzKSl9LGZ1bmN0aW9uKHMpe258fChuPSEwLEIoaSxzKSl9KX1jYXRjaChzKXtufHwobj0hMCxCKGkscykpfX1mdW5jdGlvbiBwMSh0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yPT09ST90''@;'; put 'put ''Om5ldyBJKGZ1bmN0aW9uKGkpe2kodCl9KX1JLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LEkucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24odCxpKXt2YXIgbj1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih3KTtyZXR1cm4gVyh0aGlzLG5ldyBsMSh0''@;'; put 'put ''LGksbikpLG59LEkucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiBpLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sZnVuY3Rpb24obil7cmV0dXJuIGku''@;'; put 'put ''cmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gaS5yZWplY3Qobil9KX0pfTt2YXIgdCxpLG0sbixzLGQsRDE9ImZ1bmN0aW9uIj09dHlwZW9mIHNldEltbWVkaWF0ZSYmZnVuY3Rpb24odCl7c2V0SW1tZWRpYXRlKHQpfXx8ZnVuY3Rpb24odCl7RSh0LDApfTtpZighd2luZG93''@;'; put 'put ''LlByb21pc2Upe3dpbmRvdy5Qcm9taXNlPUksSS5wcm90b3R5cGUudGhlbj1JLnByb3RvdHlwZS50aGVuLEkuYWxsPWZ1bmN0aW9uIGgxKHQpe3JldHVybiBuZXcgSShmdW5jdGlvbihpLG4pe2Z1bmN0aW9uIHMoRixHKXt0cnl7aWYoRyYmKCJvYmplY3QiPT10eXBlb2YgR3x8ImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIEcpKXt2YXIgVT1HLnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIFUpcmV0dXJuIHZvaWQgVS5jYWxsKEcsZnVuY3Rpb24oSyl7cyhGLEspfSxuKX1kW0ZdPUcsMD09LS1tJiZpKGQpfWNhdGNoKEspe24oSyl9fWlmKCF0fHx2b2lkIDA9PT10Lmxlbmd0aClyZXR1cm4gbihu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJQcm9taXNlLmFsbCBhY2NlcHRzIGFuIGFycmF5IikpO3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gaShbXSk7Zm9yKHZhciBtPWQubGVuZ3RoLEw9MDtMPGQubGVuZ3RoO0wrKylzKEwsZFtMXSl9KX0sSS5y''@;'; put 'put ''YWNlPWZ1bmN0aW9uIEgxKHQpe3JldHVybiBuZXcgSShmdW5jdGlvbihpLG4pe2lmKCF0fHx2b2lkIDA9PT10Lmxlbmd0aClyZXR1cm4gbihuZXcgVHlwZUVycm9yKCJQcm9taXNlLnJhY2UgYWNjZXB0cyBhbiBhcnJheSIpKTtmb3IodmFyIHM9MCxkPXQubGVuZ3RoO3M8ZDtzKyspcDEodFtz''@;'; put 'put ''XSkudGhlbihpLG4pfSl9LEkucmVzb2x2ZT1wMSxJLnJlamVjdD1mdW5jdGlvbiBnMSh0KXtyZXR1cm4gbmV3IEkoZnVuY3Rpb24oaSxuKXtuKHQpfSl9O3ZhciBqPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSxuMT1bXTtuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgdD1uMS5sZW5ndGgsaT0wO2k8dDtpKyspbjFbaV0oKTtuMS5zcGxpY2UoMCx0KX0pLm9ic2VydmUoaix7Y2hhcmFjdGVyRGF0YTohMH0pLEQxPWZ1bmN0aW9uKHQpe24xLnB1c2godCksai50ZXh0Q29udGVudD0wPGoudGV4dENvbnRlbnQubGVuZ3RoPyIiOiJhIn19KGZ1bmN0aW9uKHQs''@;'; put 'put ''aSl7aWYoIShpIGluIHQpKXt2YXIgbj10eXBlb2YgZ2xvYmFsPT10eXBlb2Ygbj93aW5kb3c6Z2xvYmFsLHM9MCxkPVN0cmluZyhNYXRoLnJhbmRvbSgpKSxtPSJfX1x4MDFzeW1ib2xAQCIrZCxMPXQuZ2V0T3duUHJvcGVydHlOYW1lcyxGPXQuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEc9''@;'; put 'put ''dC5jcmVhdGUsVT10LmtleXMsSz10LmZyZWV6ZXx8dCxDMT10LmRlZmluZVByb3BlcnR5LFExPXQuZGVmaW5lUHJvcGVydGllcyxqMT1GKHQsImdldE93blByb3BlcnR5TmFtZXMiKSxaMT10LnByb3RvdHlwZSwkMT1aMS5oYXNPd25Qcm9wZXJ0eSx6MT1aMS5wcm9wZXJ0eUlzRW51bWVyYWJs''@;'; put 'put ''ZSxvMD1aMS50b1N0cmluZyxrMT1mdW5jdGlvbihWMSxVMSxpMCl7JDEuY2FsbChWMSxtKXx8QzEoVjEsbSx7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITEsdmFsdWU6e319KSxWMVttXVsiQEAiK1UxXT1pMH0sbTA9ZnVuY3Rpb24oVjEsVTEpe3ZhciBpMD1HKFYx''@;'; put 'put ''KTtyZXR1cm4gTChVMSkuZm9yRWFjaChmdW5jdGlvbihjMSl7ZTIuY2FsbChVMSxjMSkmJksyKGkwLGMxLFUxW2MxXSl9KSxpMH0sVDE9ZnVuY3Rpb24oKXt9LHQyPWZ1bmN0aW9uKFYxKXtyZXR1cm4gVjEhPW0mJiEkMS5jYWxsKEkwLFYxKX0sRjA9ZnVuY3Rpb24oVjEpe3JldHVybiBWMSE9''@;'; put 'put ''bSYmJDEuY2FsbChJMCxWMSl9LGUyPWZ1bmN0aW9uKFYxKXt2YXIgVTE9U3RyaW5nKFYxKTtyZXR1cm4gRjAoVTEpPyQxLmNhbGwodGhpcyxVMSkmJiEhdGhpc1ttXSYmdGhpc1ttXVsiQEAiK1UxXTp6MS5jYWxsKHRoaXMsVjEpfSxlMT1mdW5jdGlvbihWMSl7cmV0dXJuIEMxKFoxLFYxLHtl''@;'; put 'put ''bnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCxnZXQ6VDEsc2V0OmZ1bmN0aW9uKFUxKXtkMih0aGlzLFYxLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpVMX0pLGsxKHRoaXMsVjEsITApfX0pLEkwW1YxXT1DMSh0KFYxKSwiY29uc3RydWN0b3Ii''@;'; put 'put ''LFVlKSxLKEkwW1YxXSl9LGwwPWZ1bmN0aW9uIFYxKFUxKXtpZih0aGlzIGluc3RhbmNlb2YgVjEpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7cmV0dXJuIGUxKCJfX1x4MDFzeW1ib2w6Ii5jb25jYXQoVTF8fCIiLGQsKytzKSl9LEkwPUcobnVs''@;'; put 'put ''bCksVWU9e3ZhbHVlOmwwfSxUdD1mdW5jdGlvbihWMSl7cmV0dXJuIEkwW1YxXX0sSzI9ZnVuY3Rpb24oVjEsVTEsaTApe3ZhciBjMT1TdHJpbmcoVTEpO2lmKEYwKGMxKSl7aWYoVTE9ZDIsaTAuZW51bWVyYWJsZSl7dmFyIEwxPUcoaTApO0wxLmVudW1lcmFibGU9ITF9ZWxzZSBMMT1pMDtV''@;'; put 'put ''MShWMSxjMSxMMSksazEoVjEsYzEsISFpMC5lbnVtZXJhYmxlKX1lbHNlIEMxKFYxLFUxLGkwKTtyZXR1cm4gVjF9LE50PWZ1bmN0aW9uKFYxKXtyZXR1cm4gTChWMSkuZmlsdGVyKEYwKS5tYXAoVHQpfTtqMS52YWx1ZT1LMixDMSh0LCJkZWZpbmVQcm9wZXJ0eSIsajEpLGoxLnZhbHVlPU50''@;'; put 'put ''LEMxKHQsaSxqMSksajEudmFsdWU9ZnVuY3Rpb24oVjEpe3JldHVybiBMKFYxKS5maWx0ZXIodDIpfSxDMSh0LCJnZXRPd25Qcm9wZXJ0eU5hbWVzIixqMSksajEudmFsdWU9ZnVuY3Rpb24oVjEsVTEpe3ZhciBpMD1OdChVMSk7cmV0dXJuIGkwLmxlbmd0aD9VKFUxKS5jb25jYXQoaTApLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oYzEpe2UyLmNhbGwoVTEsYzEpJiZLMihWMSxjMSxVMVtjMV0pfSk6UTEoVjEsVTEpLFYxfSxDMSh0LCJkZWZpbmVQcm9wZXJ0aWVzIixqMSksajEudmFsdWU9ZTIsQzEoWjEsInByb3BlcnR5SXNFbnVtZXJhYmxlIixqMSksajEudmFsdWU9bDAsQzEobiwiU3ltYm9s''@;'; put 'put ''IixqMSksajEudmFsdWU9ZnVuY3Rpb24oVjEpe3JldHVybihWMT0iX19ceDAxc3ltYm9sOiIuY29uY2F0KCJfX1x4MDFzeW1ib2w6IixWMSxkKSlpbiBaMT9JMFtWMV06ZTEoVjEpfSxDMShsMCwiZm9yIixqMSksajEudmFsdWU9ZnVuY3Rpb24oVjEpe2lmKHQyKFYxKSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKFYxKyIgaXMgbm90IGEgc3ltYm9sIik7aWYoJDEuY2FsbChJMCxWMSkmJiJfX1x4MDFzeW1ib2w6Ij09PShWMT1WMS5zbGljZSgxMCkpLnNsaWNlKDAsMTApJiYoVjE9VjEuc2xpY2UoMTApKSE9PWQpcmV0dXJuIDA8KFYxPVYxLnNsaWNlKDAsVjEubGVuZ3RoLWQubGVuZ3RoKSku''@;'; put 'put ''bGVuZ3RoP1YxOnZvaWQgMH0sQzEobDAsImtleUZvciIsajEpLGoxLnZhbHVlPWZ1bmN0aW9uKFYxLFUxKXt2YXIgaTA9RihWMSxVMSk7cmV0dXJuIGkwJiZGMChVMSkmJihpMC5lbnVtZXJhYmxlPWUyLmNhbGwoVjEsVTEpKSxpMH0sQzEodCwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIixq''@;'; put 'put ''MSksajEudmFsdWU9ZnVuY3Rpb24oVjEsVTEpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aHx8dm9pZCAwPT09VTE/RyhWMSk6bTAoVjEsVTEpfSxDMSh0LCJjcmVhdGUiLGoxKSxqMS52YWx1ZT1mdW5jdGlvbigpe3ZhciBWMT1vMC5jYWxsKHRoaXMpO3JldHVybiJbb2JqZWN0IFN0cmlu''@;'; put 'put ''Z10iPT09VjEmJkYwKHRoaXMpPyJbb2JqZWN0IFN5bWJvbF0iOlYxfSxDMShaMSwidG9TdHJpbmciLGoxKTt0cnl7aWYoITAhPT1HKEMxKHt9LCJfX1x4MDFzeW1ib2w6Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEMxKHRoaXMsIl9fXHgwMXN5bWJvbDoiLHt2YWx1ZTohMH0pWyJfX1x4MDFz''@;'; put 'put ''eW1ib2w6Il19fSkpWyJfX1x4MDFzeW1ib2w6Il0pdGhyb3ciSUUxMSI7dmFyIGQyPUMxfWNhdGNoKFYxKXtkMj1mdW5jdGlvbihVMSxpMCxjMSl7dmFyIEwxPUYoWjEsaTApO2RlbGV0ZSBaMVtpMF0sQzEoVTEsaTAsYzEpLEMxKFoxLGkwLEwxKX19fX0pKE9iamVjdCwiZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlTeW1ib2xzIiksdD1PYmplY3QsaT1TeW1ib2wsbj10LmRlZmluZVByb3BlcnR5LGQ9KHM9dC5wcm90b3R5cGUpLnRvU3RyaW5nLCJpdGVyYXRvciBtYXRjaCByZXBsYWNlIHNlYXJjaCBzcGxpdCBoYXNJbnN0YW5jZSBpc0NvbmNhdFNwcmVhZGFibGUgdW5zY29wYWJsZXMgc3BlY2llcyB0''@;'; put 'put ''b1ByaW1pdGl2ZSB0b1N0cmluZ1RhZyIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKEwpe0wgaW4gaXx8KG4oaSxMLHt2YWx1ZTppKEwpfSksInRvU3RyaW5nVGFnIj09PUwmJigobT10LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLCJ0b1N0cmluZyIpKS52YWx1ZT1mdW5jdGlvbigp''@;'; put 'put ''e3ZhciBGPWQuY2FsbCh0aGlzKSxHPW51bGw9PXRoaXM/dGhpczp0aGlzW2kudG9TdHJpbmdUYWddO3JldHVybiBudWxsPT1HP0Y6IltvYmplY3QgIitHKyJdIn0sbihzLCJ0b1N0cmluZyIsbSkpKX0pLGZ1bmN0aW9uKHQsaSxuKXtmdW5jdGlvbiBzKCl7cmV0dXJuIHRoaXN9aVt0XXx8KGlb''@;'; put 'put ''dF09ZnVuY3Rpb24oKXt2YXIgZD0wLG09dGhpcyxMPXtuZXh0OmZ1bmN0aW9uKCl7dmFyIEY9bS5sZW5ndGg8PWQ7cmV0dXJuIEY/e2RvbmU6Rn06e2RvbmU6Rix2YWx1ZTptW2QrK119fX07cmV0dXJuIExbdF09cyxMfSksblt0XXx8KG5bdF09ZnVuY3Rpb24oKXt2YXIgZD1TdHJpbmcuZnJv''@;'; put 'put ''bUNvZGVQb2ludCxtPXRoaXMsTD0wLEY9bS5sZW5ndGgsRz17bmV4dDpmdW5jdGlvbigpe3ZhciBVPUY8PUwsSz1VPyIiOmQobS5jb2RlUG9pbnRBdChMKSk7cmV0dXJuIEwrPUsubGVuZ3RoLFU/e2RvbmU6VX06e2RvbmU6VSx2YWx1ZTpLfX19O3JldHVybiBHW3RdPXMsR30pfShTeW1ib2wu''@;'; put 'put ''aXRlcmF0b3IsQXJyYXkucHJvdG90eXBlLFN0cmluZy5wcm90b3R5cGUpO3ZhciBtMT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcz8iW29iamVjdCBVbmRlZmluZWRdIjpudWxsPT09dGhp''@;'; put 'put ''cz8iW29iamVjdCBOdWxsXSI6bTEuY2FsbCh0aGlzKX0sT2JqZWN0LmtleXM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4oaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSkpJiZpLmVu''@;'; put 'put ''dW1lcmFibGV9KX0sU3RyaW5nLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdJiZTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0fHwoU3RyaW5nLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uIHQoKXt2YXIgaSxuPXRoaXM7cmV0dXJuIHgodCxmdW5jdGlvbihzKXtpZigx''@;'; put 'put ''PT1zLmcmJihpPTApLDMhPXMuZylyZXR1cm4gaTxuLmxlbmd0aD9zPUMocyxuW2ldKToocy5nPTAscz12b2lkIDApLHM7aSsrLHMuZz0yfSl9KSxTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl18fChTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24gdCgpe3ZhciBp''@;'; put 'put ''LHMsbj10aGlzO3JldHVybiB4KHQsZnVuY3Rpb24oZCl7aWYoMT09ZC5nJiYoaT1bXSxuLmZvckVhY2goZnVuY3Rpb24obSl7aS5wdXNoKG0pfSkscz0wKSwzIT1kLmcpcmV0dXJuIHM8aS5sZW5ndGg/ZD1DKGQsaVtzXSk6KGQuZz0wLGQ9dm9pZCAwKSxkO3MrKyxkLmc9Mn0pfSksTWFwLnBy''@;'; put 'put ''b3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdfHwoTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uIHQoKXt2YXIgaSxzLG49dGhpcztyZXR1cm4geCh0LGZ1bmN0aW9uKGQpe2lmKDE9PWQuZyYmKGk9W10sbi5mb3JFYWNoKGZ1bmN0aW9uKG0sTCl7aS5wdXNoKFtMLG1dKX0p''@;'; put 'put ''LHM9MCksMyE9ZC5nKXJldHVybiBzPGkubGVuZ3RoP2Q9QyhkLGlbc10pOihkLmc9MCxkPXZvaWQgMCksZDtzKyssZC5nPTJ9KX0pO3ZhciBfMT1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtpZihfMS5pbml0RXZlbnQoImZvbyIsITAsITApLF8xLnByZXZlbnREZWZhdWx0KCksIV8x''@;'; put 'put ''LmRlZmF1bHRQcmV2ZW50ZWQpe3ZhciBKPUV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdDtFdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbGFibGUmJihKLmNhbGwodGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImRlZmF1bHRQ''@;'; put 'put ''cmV2ZW50ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sY29uZmlndXJhYmxlOiEwfSkpfX12YXIgbzE9L1RyaWRlbnQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7aWYoIXdpbmRvdy5FdmVudHx8bzEmJiJmdW5jdGlvbiIhPXR5cGVvZiB3aW5kb3cuRXZlbnQpe3ZhciBNMT13aW5k''@;'; put 'put ''b3cuRXZlbnQ7aWYod2luZG93LkV2ZW50PWZ1bmN0aW9uKHQsaSl7aT1pfHx7fTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gbi5pbml0RXZlbnQodCwhIWkuYnViYmxlcywhIWkuY2FuY2VsYWJsZSksbn0sTTEpe2Zvcih2YXIgYjEgaW4gTTEpd2luZG93LkV2''@;'; put 'put ''ZW50W2IxXT1NMVtiMV07d2luZG93LkV2ZW50LnByb3RvdHlwZT1NMS5wcm90b3R5cGV9fWlmKCghd2luZG93LkN1c3RvbUV2ZW50fHxvMSYmImZ1bmN0aW9uIiE9dHlwZW9mIHdpbmRvdy5DdXN0b21FdmVudCkmJih3aW5kb3cuQ3VzdG9tRXZlbnQ9ZnVuY3Rpb24odCxpKXtpPWl8fHt9O3Zh''@;'; put 'put ''ciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpO3JldHVybiBuLmluaXRDdXN0b21FdmVudCh0LCEhaS5idWJibGVzLCEhaS5jYW5jZWxhYmxlLGkuZGV0YWlsKSxufSx3aW5kb3cuQ3VzdG9tRXZlbnQucHJvdG90eXBlPXdpbmRvdy5FdmVudC5wcm90b3R5cGUpLCF3aW5k''@;'; put 'put ''b3cuTW91c2VFdmVudHx8bzEmJiJmdW5jdGlvbiIhPXR5cGVvZiB3aW5kb3cuTW91c2VFdmVudCl7dmFyIEIxPXdpbmRvdy5Nb3VzZUV2ZW50O2lmKHdpbmRvdy5Nb3VzZUV2ZW50PWZ1bmN0aW9uKHQsaSl7aT1pfHx7fTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIp''@;'; put 'put ''O3JldHVybiBuLmluaXRNb3VzZUV2ZW50KHQsISFpLmJ1YmJsZXMsISFpLmNhbmNlbGFibGUsaS52aWV3fHx3aW5kb3csaS5kZXRhaWwsaS5zY3JlZW5YLGkuc2NyZWVuWSxpLmNsaWVudFgsaS5jbGllbnRZLGkuY3RybEtleSxpLmFsdEtleSxpLnNoaWZ0S2V5LGkubWV0YUtleSxpLmJ1dHRv''@;'; put 'put ''bixpLnJlbGF0ZWRUYXJnZXQpLG59LEIxKWZvcih2YXIgJCBpbiBCMSl3aW5kb3cuTW91c2VFdmVudFskXT1CMVskXTt3aW5kb3cuTW91c2VFdmVudC5wcm90b3R5cGU9QjEucHJvdG90eXBlfU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZS5wcm90b3R5cGUsImJhc2VVUkki''@;'; put 'put ''KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCJiYXNlVVJJIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMub3duZXJEb2N1bWVudHx8dGhpcykucXVlcnlTZWxlY3RvcigiYmFzZVtocmVmXSIpO3JldHVybiB0JiZ0LmhyZWZ8fHdpbmRvdy5sb2NhdGlvbi5ocmVm''@;'; put 'put ''fSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pO3ZhciBSLFosRD1FbGVtZW50LnByb3RvdHlwZSx5PW51bGwhPT0oUj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEQsImF0dHJpYnV0ZXMiKSkmJnZvaWQgMCE9PVI/UjpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKE5vZGUucHJvdG90eXBlLCJhdHRyaWJ1dGVzIiksVD1udWxsIT09KFo9bnVsbD09eT92b2lkIDA6eS5nZXQpJiZ2b2lkIDAhPT1aP1o6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzfSxQPUFycmF5LnByb3RvdHlwZS5tYXA7RC5oYXNPd25Qcm9wZXJ0eSgiZ2V0QXR0cmli''@;'; put 'put ''dXRlTmFtZXMiKXx8KEQuZ2V0QXR0cmlidXRlTmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gUC5jYWxsKFQuY2FsbCh0aGlzKSxmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lfSl9KTt2YXIgdDEsczE9RWxlbWVudC5wcm90b3R5cGU7czEuaGFzT3duUHJvcGVydHkoIm1hdGNoZXMiKXx8KHMxLm1h''@;'; put 'put ''dGNoZXM9bnVsbCE9PSh0MT1zMS53ZWJraXRNYXRjaGVzU2VsZWN0b3IpJiZ2b2lkIDAhPT10MT90MTpzMS5tc01hdGNoZXNTZWxlY3Rvcik7dmFyIGYxPU5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO2Z1bmN0aW9uIFkodCl7KHQ9dC5wcm90b3R5cGUpLmhhc093blByb3BlcnR5KCJhcHBl''@;'; put 'put ''bmQiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImFwcGVuZCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKGkpe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoOysrcyluW3NdPWFyZ3VtZW50c1tzXTtmb3Iocz0o''@;'; put 'put ''bj1hKG4pKS5uZXh0KCk7IXMuZG9uZTtzPW4ubmV4dCgpKWYxLmNhbGwodGhpcywic3RyaW5nIj09dHlwZW9mKHM9cy52YWx1ZSk/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocyk6cyl9fSl9WShEb2N1bWVudCksWShEb2N1bWVudEZyYWdtZW50KSxZKEVsZW1lbnQpO3ZhciBxLFEsZDE9Tm9k''@;'; put 'put ''ZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLE4xPW51bGwhPT0oUT1udWxsPT09KHE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIpKXx8dm9pZCAwPT09cT92b2lkIDA6cS5nZXQpJiZ2b2lkIDAhPT1RP1E6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5maXJzdENoaWxkfTtmdW5jdGlvbiBTMSh0KXsodD10LnByb3RvdHlwZSkuaGFzT3duUHJvcGVydHkoInByZXBlbmQiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByZXBlbmQiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihpKXtmb3IodmFyIG49W10scz0wO3M8YXJndW1lbnRzLmxlbmd0aDsrK3MpbltzXT1hcmd1bWVudHNbc107cz1OMS5jYWxsKHRoaXMpO2Zvcih2YXIgZD0obj1hKG4pKS5uZXh0KCk7IWQuZG9uZTtkPW4ubmV4dCgpKWQxLmNhbGwodGhpcywic3RyaW5nIj09dHlwZW9mKGQ9ZC52YWx1''@;'; put 'put ''ZSk/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZCk6ZCxzKX19KX1TMShEb2N1bWVudCksUzEoRG9jdW1lbnRGcmFnbWVudCksUzEoRWxlbWVudCk7dmFyIHIxLGkxLEExPU5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkLHgxPU5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkLEkxPW51bGwhPT0o''@;'; put 'put ''aTE9bnVsbD09PShyMT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJmaXJzdENoaWxkIikpfHx2b2lkIDA9PT1yMT92b2lkIDA6cjEuZ2V0KSYmdm9pZCAwIT09aTE/aTE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maXJzdENoaWxkfTtmdW5jdGlvbiBK''@;'; put 'put ''MSh0KXsodD10LnByb3RvdHlwZSkuaGFzT3duUHJvcGVydHkoInJlcGxhY2VDaGlsZHJlbiIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmVwbGFjZUNoaWxkcmVuIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oaSl7Zm9yKHZh''@;'; put 'put ''ciBuPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7KytzKW5bc109YXJndW1lbnRzW3NdO2Zvcig7bnVsbCE9PShzPUkxLmNhbGwodGhpcykpOyl4MS5jYWxsKHRoaXMscyk7Zm9yKHM9KG49YShuKSkubmV4dCgpOyFzLmRvbmU7cz1uLm5leHQoKSlBMS5jYWxsKHRoaXMsInN0cmluZyI9PXR5''@;'; put 'put ''cGVvZihzPXMudmFsdWUpP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMpOnMpfX0pfUoxKERvY3VtZW50KSxKMShEb2N1bWVudEZyYWdtZW50KSxKMShFbGVtZW50KTt2YXIgdDAsZjAsTTAsXzAsaTI9Tm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLHowPW51bGwhPT0oZjA9bnVsbD09PSh0''@;'; put 'put ''MD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJwYXJlbnROb2RlIikpfHx2b2lkIDA9PT10MD92b2lkIDA6dDAuZ2V0KSYmdm9pZCAwIT09ZjA/ZjA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfSxVMD1udWxsIT09KF8wPW51bGw9PT0o''@;'; put 'put ''TTA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwibmV4dFNpYmxpbmciKSl8fHZvaWQgMD09PU0wP3ZvaWQgMDpNMC5nZXQpJiZ2b2lkIDAhPT1fMD9fMDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5leHRTaWJsaW5nfTtmdW5jdGlvbiBLMCh0KXsodD10''@;'; put 'put ''LnByb3RvdHlwZSkuaGFzT3duUHJvcGVydHkoImFmdGVyIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJhZnRlciIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKGkpe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''OysrcyluW3NdPWFyZ3VtZW50c1tzXTtpZihudWxsIT09KHM9ejAuY2FsbCh0aGlzKSkpZm9yKHZhciBkPVUwLmNhbGwodGhpcyksbT0obj1hKG4pKS5uZXh0KCk7IW0uZG9uZTttPW4ubmV4dCgpKWkyLmNhbGwocywic3RyaW5nIj09dHlwZW9mKG09bS52YWx1ZSk/ZG9jdW1lbnQuY3JlYXRl''@;'; put 'put ''VGV4dE5vZGUobSk6bSxkKX19KX1LMChDaGFyYWN0ZXJEYXRhKSxLMChFbGVtZW50KTt2YXIgazAsdTIsWDA9Tm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLGt0PW51bGwhPT0odTI9bnVsbD09PShrMD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJw''@;'; put 'put ''YXJlbnROb2RlIikpfHx2b2lkIDA9PT1rMD92b2lkIDA6azAuZ2V0KSYmdm9pZCAwIT09dTI/dTI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfTtmdW5jdGlvbiBhMih0KXsodD10LnByb3RvdHlwZSkuaGFzT3duUHJvcGVydHkoImJlZm9yZSIpfHxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkodCwiYmVmb3JlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oaSl7Zm9yKHZhciBuPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7KytzKW5bc109YXJndW1lbnRzW3NdO2lmKG51bGwhPT0ocz1rdC5jYWxsKHRoaXMpKSlm''@;'; put 'put ''b3IodmFyIGQ9KG49YShuKSkubmV4dCgpOyFkLmRvbmU7ZD1uLm5leHQoKSlYMC5jYWxsKHMsInN0cmluZyI9PXR5cGVvZihkPWQudmFsdWUpP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGQpOmQsdGhpcyl9fSl9YTIoQ2hhcmFjdGVyRGF0YSksYTIoRWxlbWVudCk7dmFyIEQyLHAyLE90PU5v''@;'; put 'put ''ZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkLGYyPW51bGwhPT0ocDI9bnVsbD09PShEMj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJwYXJlbnROb2RlIikpfHx2b2lkIDA9PT1EMj92b2lkIDA6RDIuZ2V0KSYmdm9pZCAwIT09cDI/cDI6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfTtmdW5jdGlvbiBZMSh0KXsodD10LnByb3RvdHlwZSkuaGFzT3duUHJvcGVydHkoInJlbW92ZSIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmVtb3ZlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgaT1mMi5jYWxsKHRoaXMpO2kmJk90LmNhbGwoaSx0aGlzKX19KX1ZMShDaGFyYWN0ZXJEYXRhKSxZMShFbGVtZW50KTt2YXIgUTAsZzIsRTI9Tm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLEEyPU5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkLFQyPW51bGwhPT0o''@;'; put 'put ''ZzI9bnVsbD09PShRMD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJwYXJlbnROb2RlIikpfHx2b2lkIDA9PT1RMD92b2lkIDA6UTAuZ2V0KSYmdm9pZCAwIT09ZzI/ZzI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfTtmdW5jdGlvbiBY''@;'; put 'put ''Mih0KXsodD10LnByb3RvdHlwZSkuaGFzT3duUHJvcGVydHkoInJlcGxhY2VXaXRoIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyZXBsYWNlV2l0aCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKGkpe2Zvcih2YXIgbj1bXSxz''@;'; put 'put ''PTA7czxhcmd1bWVudHMubGVuZ3RoOysrcyluW3NdPWFyZ3VtZW50c1tzXTtpZihudWxsIT09KHM9VDIuY2FsbCh0aGlzKSkpe2Zvcih2YXIgZD0obj1hKG4pKS5uZXh0KCk7IWQuZG9uZTtkPW4ubmV4dCgpKUUyLmNhbGwocywic3RyaW5nIj09dHlwZW9mKGQ9ZC52YWx1ZSk/ZG9jdW1lbnQu''@;'; put 'put ''Y3JlYXRlVGV4dE5vZGUoZCk6ZCx0aGlzKTtBMi5jYWxsKHMsdGhpcyl9fX0pfVgyKENoYXJhY3RlckRhdGEpLFgyKEVsZW1lbnQpO3ZhciBRMj13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUsTjI9d2luZG93LkhUTUxFbGVtZW50LnByb3RvdHlwZSxKMj13aW5kb3cuU1ZHRWxlbWVudC5wcm90''@;'; put 'put ''b3R5cGU7IU4yLmhhc093blByb3BlcnR5KCJjbGFzc0xpc3QiKXx8UTIuaGFzT3duUHJvcGVydHkoImNsYXNzTGlzdCIpfHxKMi5oYXNPd25Qcm9wZXJ0eSgiY2xhc3NMaXN0Iil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRMiwiY2xhc3NMaXN0IixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj''@;'; put 'put ''cmlwdG9yKE4yLCJjbGFzc0xpc3QiKSk7dmFyIEYyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7RjIudGV4dENvbnRlbnQ9ImJvZHkge3RyYW5zaXRpb246IG9wYWNpdHkgZWFzZS1pbiAwLjJzOyB9IFxuYm9keVt1bnJlc29sdmVkXSB7b3BhY2l0eTogMDsgZGlzcGxheTogYmxv''@;'; put 'put ''Y2s7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSBcbiI7dmFyIEkyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImhlYWQiKTtJMi5pbnNlcnRCZWZvcmUoRjIsSTIuZmlyc3RDaGlsZCk7dmFyIFowPXdpbmRvdztaMC5XZWJDb21wb25lbnRzPVowLldlYkNvbXBvbmVu''@;'; put 'put ''dHN8fHtmbGFnczp7fX07dmFyIGsyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmMqPSJ3ZWJjb21wb25lbnRzLWJ1bmRsZSJdJyksdHQ9L3djLSguKykvLEEwPXt9O2lmKCFBMC5ub09wdHMpe2lmKGxvY2F0aW9uLnNlYXJjaC5zbGljZSgxKS5zcGxpdCgiJiIpLmZvckVhY2go''@;'; put 'put ''ZnVuY3Rpb24odCl7dmFyIGk7KHQ9dC5zcGxpdCgiPSIpKVswXSYmKGk9dFswXS5tYXRjaCh0dCkpJiYoQTBbaVsxXV09dFsxXXx8ITApfSksazIpZm9yKHZhciB3MD0wLHcxPXZvaWQgMDt3MT1rMi5hdHRyaWJ1dGVzW3cwXTt3MCsrKSJzcmMiIT09dzEubmFtZSYmKEEwW3cxLm5hbWVdPXcx''@;'; put 'put ''LnZhbHVlfHwhMCk7dmFyIHUxPXt9O0EwLmxvZyYmQTAubG9nLnNwbGl0JiZBMC5sb2cuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3UxW3RdPSEwfSksQTAubG9nPXUxfVowLldlYkNvbXBvbmVudHMuZmxhZ3M9QTA7dmFyIEUxPUEwLnNoYWR5ZG9tO2lmKEUxKXtaMC5TaGFkeURP''@;'; put 'put ''TT1aMC5TaGFkeURPTXx8e30sWjAuU2hhZHlET00uZm9yY2U9RTE7dmFyIFAxPUEwLm5vUGF0Y2g7WjAuU2hhZHlET00ubm9QYXRjaD0idHJ1ZSI9PT1QMXx8UDF9dmFyIFIxPUEwLnJlZ2lzdGVyfHxBMC5jZTtmdW5jdGlvbiBkMCgpe31mdW5jdGlvbiBxMSh0KXtyZXR1cm4gdC5fX3NoYWR5''@;'; put 'put ''fHwodC5fX3NoYWR5PW5ldyBkMCksdC5fX3NoYWR5fWZ1bmN0aW9uIHYxKHQpe3JldHVybiB0JiZ0Ll9fc2hhZHl9UjEmJndpbmRvdy5jdXN0b21FbGVtZW50cyYmKFowLmN1c3RvbUVsZW1lbnRzLmZvcmNlUG9seWZpbGw9UjEpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiBp''@;'; put 'put ''KGMxLEwxKXtpZighYzEuY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuW107c3dpdGNoKGMxLm5vZGVUeXBlKXtjYXNlIE5vZGUuRE9DVU1FTlRfTk9ERTpyZXR1cm4gJDEuY2FsbChjMSxMMSk7Y2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6cmV0dXJuIHoxLmNhbGwoYzEsTDEpO2Rl''@;'; put 'put ''ZmF1bHQ6cmV0dXJuIFoxLmNhbGwoYzEsTDEpfX12YXIgbj0idW5kZWZpbmVkIj09dHlwZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQscz0hKGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5jbG9uZU5vZGUoKWluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCksZD0hMTsvVHJpZGVu''@;'; put 'put ''dC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmZnVuY3Rpb24oKXtmdW5jdGlvbiBjMShPMSxwMCl7aWYoTzEgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KWZvcih2YXIgRnQ7RnQ9TzEuZmlyc3RDaGlsZDspVzEuY2FsbCh0aGlzLEZ0LHAwKTtlbHNlIFcxLmNhbGwodGhpcyxPMSxw''@;'; put 'put ''MCk7cmV0dXJuIE8xfWQ9ITA7dmFyIEwxPU5vZGUucHJvdG90eXBlLmNsb25lTm9kZTtOb2RlLnByb3RvdHlwZS5jbG9uZU5vZGU9ZnVuY3Rpb24oTzEpe3JldHVybiBPMT1MMS5jYWxsKHRoaXMsTzEpLHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50JiYoTzEuX19wcm90b19fPURv''@;'; put 'put ''Y3VtZW50RnJhZ21lbnQucHJvdG90eXBlKSxPMX0sRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbD1IVE1MRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbCxEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yPUhUTUxFbGVtZW50''@;'; put 'put ''LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLHtub2RlVHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERX0sY29uZmlndXJhYmxlOiEwfSxsb2NhbE5hbWU6''@;'; put 'put ''e2dldDpmdW5jdGlvbigpe30sY29uZmlndXJhYmxlOiEwfSxub2RlTmFtZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIiNkb2N1bWVudC1mcmFnbWVudCJ9LGNvbmZpZ3VyYWJsZTohMH19KTt2YXIgVzE9Tm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlO05vZGUucHJvdG90eXBlLmluc2VydEJl''@;'; put 'put ''Zm9yZT1jMTt2YXIgYTA9Tm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ7Tm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oTzEpe3JldHVybiBPMSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQ/YzEuY2FsbCh0aGlzLE8xLG51bGwpOmEwLmNhbGwodGhpcyxPMSksTzF9O3Zh''@;'; put 'put ''ciBiMD1Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxSMD1Ob2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ7Tm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkPWZ1bmN0aW9uKE8xLHAwKXtyZXR1cm4gTzEgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50PyhjMS5jYWxsKHRoaXMsTzEscDAp''@;'; put 'put ''LGIwLmNhbGwodGhpcyxwMCkpOlIwLmNhbGwodGhpcyxPMSxwMCkscDB9LERvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50PWZ1bmN0aW9uKCl7dmFyIE8xPXRoaXMuY3JlYXRlRWxlbWVudCgiZGYiKTtyZXR1cm4gTzEuX19wcm90b19fPURvY3VtZW50RnJhZ21lbnQu''@;'; put 'put ''cHJvdG90eXBlLE8xfTt2YXIgbDI9RG9jdW1lbnQucHJvdG90eXBlLmltcG9ydE5vZGU7RG9jdW1lbnQucHJvdG90eXBlLmltcG9ydE5vZGU9ZnVuY3Rpb24oTzEscDApe3JldHVybiBwMD1sMi5jYWxsKHRoaXMsTzEscDB8fCExKSxPMSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQmJihw''@;'; put 'put ''MC5fX3Byb3RvX189RG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUpLHAwfX0oKTt2YXIgbT1Ob2RlLnByb3RvdHlwZS5jbG9uZU5vZGUsTD1Eb2N1bWVudC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCxGPURvY3VtZW50LnByb3RvdHlwZS5pbXBvcnROb2RlLEc9Tm9kZS5wcm90b3R5cGUucmVt''@;'; put 'put ''b3ZlQ2hpbGQsVT1Ob2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCxLPU5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZCxDMT1ET01QYXJzZXIucHJvdG90eXBlLnBhcnNlRnJvbVN0cmluZyxRMT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdy5IVE1MRWxlbWVudC5wcm90''@;'; put 'put ''b3R5cGUsImlubmVySFRNTCIpfHx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXJIVE1MfSxzZXQ6ZnVuY3Rpb24oYzEpe3RoaXMuaW5uZXJIVE1MPWMxfX0sajE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cuTm9kZS5wcm90b3R5cGUsImNoaWxkTm9kZXMi''@;'; put 'put ''KXx8e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9fSxaMT1FbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsLCQxPURvY3VtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsLHoxPURvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JB''@;'; put 'put ''bGwsbzA9ZnVuY3Rpb24oKXtpZighbil7dmFyIGMxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIiksTDE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gTDEuY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSks''@;'; put 'put ''YzEuY29udGVudC5hcHBlbmRDaGlsZChMMSksMD09PShjMT1jMS5jbG9uZU5vZGUoITApKS5jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RofHwwPT09YzEuY29udGVudC5maXJzdENoaWxkLmNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGh8fHN9fSgpO2lmKG4pe3ZhciBrMT1kb2N1bWVudC5pbXBs''@;'; put 'put ''ZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInRlbXBsYXRlIiksbTA9ITAsVDE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtUMS50ZXh0Q29udGVudD0idGVtcGxhdGV7ZGlzcGxheTpub25lO30iO3ZhciB0Mj1kb2N1bWVudC5oZWFkO3QyLmluc2VydEJlZm9yZShUMSx0''@;'; put 'put ''Mi5maXJzdEVsZW1lbnRDaGlsZCksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUpO3ZhciBGMD0hZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikuaGFzT3duUHJvcGVydHkoImlubmVySFRNTCIpO3QuWj1mdW5jdGlvbihjMSl7aWYoIWMxLmNvbnRl''@;'; put 'put ''bnQmJmMxLm5hbWVzcGFjZVVSST09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkkpe2MxLmNvbnRlbnQ9azEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2Zvcih2YXIgTDE7TDE9YzEuZmlyc3RDaGlsZDspVS5jYWxsKGMxLmNvbnRlbnQsTDEpO2lmKEYwKWMxLl9fcHJv''@;'; put 'put ''dG9fXz10LnByb3RvdHlwZTtlbHNlIGlmKGMxLmNsb25lTm9kZT1mdW5jdGlvbihXMSl7cmV0dXJuIHQuc2EodGhpcyxXMSl9LG0wKXRyeXtlMShjMSksbDAoYzEpfWNhdGNoKFcxKXttMD0hMX10LmJvb3RzdHJhcChjMS5jb250ZW50KX19O3ZhciBlMj17b3B0aW9uOlsic2VsZWN0Il0sdGhl''@;'; put 'put ''YWQ6WyJ0YWJsZSJdLGNvbDpbImNvbGdyb3VwIiwidGFibGUiXSx0cjpbInRib2R5IiwidGFibGUiXSx0aDpbInRyIiwidGJvZHkiLCJ0YWJsZSJdLHRkOlsidHIiLCJ0Ym9keSIsInRhYmxlIl19LGUxPWZ1bmN0aW9uKGMxKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYzEsImlubmVySFRNTCIs''@;'; put 'put ''e2dldDpmdW5jdGlvbigpe3JldHVybiBkMih0aGlzKX0sc2V0OmZ1bmN0aW9uKEwxKXt2YXIgVzE9ZTJbKC88KFthLXpdW14vXDA+XHgyMFx0XHJcblxmXSspL2kuZXhlYyhMMSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldO2lmKFcxKWZvcih2YXIgYTA9MDthMDxXMS5sZW5ndGg7YTAr''@;'; put 'put ''KylMMT0iPCIrVzFbYTBdKyI+IitMMSsiPC8iK1cxW2EwXSsiPiI7Zm9yKGsxLmJvZHkuaW5uZXJIVE1MPUwxLHQuYm9vdHN0cmFwKGsxKTt0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZDspRy5jYWxsKHRoaXMuY29udGVudCx0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZCk7aWYoTDE9azEuYm9keSxX''@;'; put 'put ''MSlmb3IoYTA9MDthMDxXMS5sZW5ndGg7YTArKylMMT1MMS5sYXN0Q2hpbGQ7Zm9yKDtMMS5maXJzdENoaWxkOylVLmNhbGwodGhpcy5jb250ZW50LEwxLmZpcnN0Q2hpbGQpfSxjb25maWd1cmFibGU6ITB9KX0sbDA9ZnVuY3Rpb24oYzEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjMSwib3V0''@;'; put 'put ''ZXJIVE1MIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjx0ZW1wbGF0ZT4iK3RoaXMuaW5uZXJIVE1MKyI8L3RlbXBsYXRlPiJ9LHNldDpmdW5jdGlvbihMMSl7aWYoIXRoaXMucGFyZW50Tm9kZSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIHNldCB0aGUgJ291dGVySFRNTCcgcHJvcGVydHkgb24g''@;'; put 'put ''J0VsZW1lbnQnOiBUaGlzIGVsZW1lbnQgaGFzIG5vIHBhcmVudCBub2RlLiIpO2ZvcihrMS5ib2R5LmlubmVySFRNTD1MMSxMMT10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2sxLmJvZHkuZmlyc3RDaGlsZDspVS5jYWxsKEwxLGsxLmJvZHkuZmlyc3RDaGls''@;'; put 'put ''ZCk7Sy5jYWxsKHRoaXMucGFyZW50Tm9kZSxMMSx0aGlzKX0sY29uZmlndXJhYmxlOiEwfSl9O2UxKHQucHJvdG90eXBlKSxsMCh0LnByb3RvdHlwZSksdC5ib290c3RyYXA9ZnVuY3Rpb24oYzEpe2Zvcih2YXIgYTAsTDE9MCxXMT0oYzE9aShjMSwidGVtcGxhdGUiKSkubGVuZ3RoO0wxPFcx''@;'; put 'put ''JiYoYTA9YzFbTDFdKTtMMSsrKXQuWihhMCl9LGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7dC5ib290c3RyYXAoZG9jdW1lbnQpfSksRG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYzE9TC5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuInRlbXBsYXRlIj09PWMxLmxvY2FsTmFtZSYmdC5aKGMxKSxjMX0sRE9NUGFyc2VyLnByb3RvdHlwZS5wYXJzZUZyb21TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYzE9QzEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0LmJvb3RzdHJhcChjMSks''@;'; put 'put ''YzF9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MRWxlbWVudC5wcm90b3R5cGUsImlubmVySFRNTCIse2dldDpmdW5jdGlvbigpe3JldHVybiBkMih0aGlzKX0sc2V0OmZ1bmN0aW9uKGMxKXtRMS5zZXQuY2FsbCh0aGlzLGMxKSx0LmJvb3RzdHJhcCh0aGlzKX0sY29uZmlndXJhYmxlOiEw''@;'; put 'put ''LGVudW1lcmFibGU6ITB9KTt2YXIgSTA9L1smXHUwMEEwIl0vZyxVZT0vWyZcdTAwQTA8Pl0vZyxUdD1mdW5jdGlvbihjMSl7c3dpdGNoKGMxKXtjYXNlIiYiOnJldHVybiImYW1wOyI7Y2FzZSI8IjpyZXR1cm4iJmx0OyI7Y2FzZSI+IjpyZXR1cm4iJmd0OyI7Y2FzZSciJzpyZXR1cm4iJnF1''@;'; put 'put ''b3Q7IjtjYXNlIlx4YTAiOnJldHVybiImbmJzcDsifX0sSzI9KFQxPWZ1bmN0aW9uKGMxKXtmb3IodmFyIEwxPXt9LFcxPTA7VzE8YzEubGVuZ3RoO1cxKyspTDFbYzFbVzFdXT0hMDtyZXR1cm4gTDF9KSgiYXJlYSBiYXNlIGJyIGNvbCBjb21tYW5kIGVtYmVkIGhyIGltZyBpbnB1dCBrZXln''@;'; put 'put ''ZW4gbGluayBtZXRhIHBhcmFtIHNvdXJjZSB0cmFjayB3YnIiLnNwbGl0KCIgIikpLE50PVQxKCJzdHlsZSBzY3JpcHQgeG1wIGlmcmFtZSBub2VtYmVkIG5vZnJhbWVzIHBsYWludGV4dCBub3NjcmlwdCIuc3BsaXQoIiAiKSksZDI9ZnVuY3Rpb24oYzEsTDEpeyJ0ZW1wbGF0ZSI9PT1jMS5s''@;'; put 'put ''b2NhbE5hbWUmJihjMT1jMS5jb250ZW50KTtmb3IodmFyIGwyLFcxPSIiLGEwPUwxP0wxKGMxKTpqMS5nZXQuY2FsbChjMSksYjA9MCxSMD1hMC5sZW5ndGg7YjA8UjAmJihsMj1hMFtiMF0pO2IwKyspe3Q6e3ZhciBPMT1sMixwMD1jMSxGdD1MMTtzd2l0Y2goTzEubm9kZVR5cGUpe2Nhc2Ug''@;'; put 'put ''Tm9kZS5FTEVNRU5UX05PREU6Zm9yKHZhciBXZT1PMS5sb2NhbE5hbWUsSXQ9IjwiK1dlLFVyPU8xLmF0dHJpYnV0ZXMsb2E9MDtwMD1VcltvYV07b2ErKylJdCs9IiAiK3AwLm5hbWUrJz0iJytwMC52YWx1ZS5yZXBsYWNlKEkwLFR0KSsnIic7SXQrPSI+IixPMT1LMltXZV0/SXQ6SXQrZDIo''@;'; put 'put ''TzEsRnQpKyI8LyIrV2UrIj4iO2JyZWFrIHQ7Y2FzZSBOb2RlLlRFWFRfTk9ERTpPMT1PMS5kYXRhLE8xPXAwJiZOdFtwMC5sb2NhbE5hbWVdP08xOk8xLnJlcGxhY2UoVWUsVHQpO2JyZWFrIHQ7Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpPMT0iXHgzYyEtLSIrTzEuZGF0YSsiLS1ceDNlIjti''@;'; put 'put ''cmVhayB0O2RlZmF1bHQ6dGhyb3cgd2luZG93LmNvbnNvbGUuZXJyb3IoTzEpLEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKX19VzErPU8xfXJldHVybiBXMX19aWYobnx8bzApe3Quc2E9ZnVuY3Rpb24oYzEsTDEpe3ZhciBXMT1tLmNhbGwoYzEsITEpO3JldHVybiB0aGlzLlomJnRoaXMuWihX''@;'; put 'put ''MSksTDEmJihVLmNhbGwoVzEuY29udGVudCxtLmNhbGwoYzEuY29udGVudCwhMCkpLFYxKFcxLmNvbnRlbnQsYzEuY29udGVudCkpLFcxfTt2YXIgVjE9ZnVuY3Rpb24oYzEsTDEpe2lmKEwxLnF1ZXJ5U2VsZWN0b3JBbGwmJjAhPT0oTDE9aShMMSwidGVtcGxhdGUiKSkubGVuZ3RoKWZvcih2''@;'; put 'put ''YXIgYjAsUjAsVzE9MCxhMD0oYzE9aShjMSwidGVtcGxhdGUiKSkubGVuZ3RoO1cxPGEwO1cxKyspUjA9TDFbVzFdLGIwPWMxW1cxXSx0JiZ0LlomJnQuWihSMCksSy5jYWxsKGIwLnBhcmVudE5vZGUsVTEuY2FsbChSMCwhMCksYjApfSxVMT1Ob2RlLnByb3RvdHlwZS5jbG9uZU5vZGU9ZnVu''@;'; put 'put ''Y3Rpb24oYzEpe2lmKCFkJiZzJiZ0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCl7aWYoIWMxKXJldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO3ZhciBMMT1pMC5jYWxsKHRoaXMub3duZXJEb2N1bWVudCx0aGlzLCEwKX1lbHNlIEwxPXRo''@;'; put 'put ''aXMubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmInRlbXBsYXRlIj09PXRoaXMubG9jYWxOYW1lJiZ0aGlzLm5hbWVzcGFjZVVSST09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST90LnNhKHRoaXMsYzEpOm0uY2FsbCh0aGlzLGMxKTtyZXR1cm4gYzEmJlYxKEwx''@;'; put 'put ''LHRoaXMpLEwxfSxpMD1Eb2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZT1mdW5jdGlvbihjMSxMMSl7aWYoTDE9TDF8fCExLCJ0ZW1wbGF0ZSI9PT1jMS5sb2NhbE5hbWUpcmV0dXJuIHQuc2EoYzEsTDEpO3ZhciBXMT1GLmNhbGwodGhpcyxjMSxMMSk7aWYoTDEpe1YxKFcxLGMxKSxjMT1p''@;'; put 'put ''KFcxLCdzY3JpcHQ6bm90KFt0eXBlXSksc2NyaXB0W3R5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiXSxzY3JpcHRbdHlwZT0idGV4dC9qYXZhc2NyaXB0Il0nKTtmb3IodmFyIGEwLGIwPTA7YjA8YzEubGVuZ3RoO2IwKyspe2EwPWMxW2IwXSwoTDE9TC5jYWxsKGRvY3VtZW50LCJzY3Jp''@;'; put 'put ''cHQiKSkudGV4dENvbnRlbnQ9YTAudGV4dENvbnRlbnQ7Zm9yKHZhciBPMSxSMD1hMC5hdHRyaWJ1dGVzLGwyPTA7bDI8UjAubGVuZ3RoO2wyKyspTDEuc2V0QXR0cmlidXRlKChPMT1SMFtsMl0pLm5hbWUsTzEudmFsdWUpO0suY2FsbChhMC5wYXJlbnROb2RlLEwxLGEwKX19cmV0dXJuIFcx''@;'; put 'put ''fX1uJiYod2luZG93LkhUTUxUZW1wbGF0ZUVsZW1lbnQ9dCl9KCksZDAucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt9fTt2YXIgeTE9d2luZG93LlNoYWR5RE9NfHx7fTt5MS5ZYT0hKCFFbGVtZW50LnByb3RvdHlwZS5hdHRhY2hTaGFkb3d8fCFOb2RlLnByb3RvdHlwZS5n''@;'; put 'put ''ZXRSb290Tm9kZSk7dmFyIFcwPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZS5wcm90b3R5cGUsImZpcnN0Q2hpbGQiKTtmdW5jdGlvbiBPMCgpe3JldHVybiBEb2N1bWVudC5wcm90b3R5cGUubXNFbGVtZW50c0Zyb21Qb2ludD8ibXNFbGVtZW50c0Zyb21Qb2ludCI6ImVs''@;'; put 'put ''ZW1lbnRzRnJvbVBvaW50In1mdW5jdGlvbiBLMSh0KXtyZXR1cm4odD12MSh0KSkmJnZvaWQgMCE9PXQuZmlyc3RDaGlsZH1mdW5jdGlvbiBlMCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3R9ZnVuY3Rpb24gSjAodCl7cmV0dXJuKHQ9KHQ9djEodCkpJiZ0LnJvb3QpJiYkbCh0''@;'; put 'put ''KX15MS5IPSEhKFcwJiZXMC5jb25maWd1cmFibGUmJlcwLmdldCkseTEueWE9eTEuZm9yY2V8fCF5MS5ZYSx5MS5KPXkxLm5vUGF0Y2h8fCExLHkxLmZhPXkxLnByZWZlclBlcmZvcm1hbmNlLHkxLkFhPSJvbi1kZW1hbmQiPT09eTEuSix5MS5OYT1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNo''@;'; put 'put ''KCJUcmlkZW50Iik7dmFyIFAwPUVsZW1lbnQucHJvdG90eXBlLE8yPVAwLm1hdGNoZXN8fFAwLm1hdGNoZXNTZWxlY3Rvcnx8UDAubW96TWF0Y2hlc1NlbGVjdG9yfHxQMC5tc01hdGNoZXNTZWxlY3Rvcnx8UDAub01hdGNoZXNTZWxlY3Rvcnx8UDAud2Via2l0TWF0Y2hlc1NlbGVjdG9yLGcw''@;'; put 'put ''PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSxYMT0wLEgwPVtdO2Z1bmN0aW9uIEQwKHQpe0gwLnB1c2godCksZzAudGV4dENvbnRlbnQ9WDErK31uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2Zvcig7SDAubGVuZ3RoOyl0cnl7SDAuc2hpZnQoKSgpfWNhdGNoKHQpe3Rocm93''@;'; put 'put ''IGcwLnRleHRDb250ZW50PVgxKyssdH19KS5vYnNlcnZlKGcwLHtjaGFyYWN0ZXJEYXRhOiEwfSk7dmFyIHUwPWRvY3VtZW50LmNvbnRhaW5zP2Z1bmN0aW9uKHQsaSl7cmV0dXJuIHQuX19zaGFkeV9uYXRpdmVfY29udGFpbnMoaSl9OmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQ9PT1pfHx0LmRv''@;'; put 'put ''Y3VtZW50RWxlbWVudCYmdC5kb2N1bWVudEVsZW1lbnQuX19zaGFkeV9uYXRpdmVfY29udGFpbnMoaSl9O2Z1bmN0aW9uIHgwKHQsaSl7Zm9yKDtpOyl7aWYoaT09dClyZXR1cm4hMDtpPWkuX19zaGFkeV9wYXJlbnROb2RlfXJldHVybiExfWZ1bmN0aW9uIEIwKHQpe2Zvcih2YXIgaT10Lmxl''@;'; put 'put ''bmd0aC0xOzA8PWk7aS0tKXt2YXIgbj10W2ldLHM9bi5nZXRBdHRyaWJ1dGUoImlkIil8fG4uZ2V0QXR0cmlidXRlKCJuYW1lIik7cyYmImxlbmd0aCIhPT1zJiZpc05hTihzKSYmKHRbc109bil9cmV0dXJuIHQuaXRlbT1mdW5jdGlvbihkKXtyZXR1cm4gdFtkXX0sdC5uYW1lZEl0ZW09ZnVu''@;'; put 'put ''Y3Rpb24oZCl7aWYoImxlbmd0aCIhPT1kJiZpc05hTihkKSYmdFtkXSlyZXR1cm4gdFtkXTtmb3IodmFyIG09YSh0KSxMPW0ubmV4dCgpOyFMLmRvbmU7TD1tLm5leHQoKSlpZigoKEw9TC52YWx1ZSkuZ2V0QXR0cmlidXRlKCJpZCIpfHxMLmdldEF0dHJpYnV0ZSgibmFtZSIpKT09ZClyZXR1''@;'; put 'put ''cm4gTDtyZXR1cm4gbnVsbH0sdH1mdW5jdGlvbiBQMih0KXt2YXIgaT1bXTtmb3IodD10Ll9fc2hhZHlfbmF0aXZlX2ZpcnN0Q2hpbGQ7dDt0PXQuX19zaGFkeV9uYXRpdmVfbmV4dFNpYmxpbmcpaS5wdXNoKHQpO3JldHVybiBpfWZ1bmN0aW9uIHYyKHQpe3ZhciBpPVtdO2Zvcih0PXQuX19z''@;'; put 'put ''aGFkeV9maXJzdENoaWxkO3Q7dD10Ll9fc2hhZHlfbmV4dFNpYmxpbmcpaS5wdXNoKHQpO3JldHVybiBpfWZ1bmN0aW9uIHIyKHQsaSxuKXtpZihuLmNvbmZpZ3VyYWJsZT0hMCxuLnZhbHVlKXRbaV09bi52YWx1ZTtlbHNlIHRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG4pfWNhdGNo''@;'; put 'put ''KHMpe319ZnVuY3Rpb24gczAodCxpLG4scyl7Zm9yKHZhciBkIGluIG49dm9pZCAwPT09bj8iIjpuLGkpcyYmMDw9cy5pbmRleE9mKGQpfHxyMih0LG4rZCxpW2RdKX1mdW5jdGlvbiBQdCh0LGkpe2Zvcih2YXIgbiBpbiBpKW4gaW4gdCYmcjIodCxuLGlbbl0pfWZ1bmN0aW9uIG4wKHQpe3Zh''@;'; put 'put ''ciBpPXt9O3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lbbl09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pfSksaX1mdW5jdGlvbiBCdCh0LGkpe2Zvcih2YXIgZCxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz''@;'; put 'put ''KGkpLHM9MDtzPG4ubGVuZ3RoO3MrKyl0W2Q9bltzXV09aVtkXX1mdW5jdGlvbiAkZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE5vZGU/dDpkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIit0KX1mdW5jdGlvbiBIMih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24p''@;'; put 'put ''aVtuXT1hcmd1bWVudHNbbl07aWYoMT09PWkubGVuZ3RoKXJldHVybiAkZShpWzBdKTtuPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtmb3IodmFyIHM9KGk9YShpKSkubmV4dCgpOyFzLmRvbmU7cz1pLm5leHQoKSluLmFwcGVuZENoaWxkKCRlKHMudmFsdWUpKTtyZXR1cm4g''@;'; put 'put ''bn12YXIgR3QsQjI9W107ZnVuY3Rpb24gcWUodCl7R3R8fChHdD0hMCxEMChldCkpLEIyLnB1c2godCl9ZnVuY3Rpb24gZXQoKXtHdD0hMTtmb3IodmFyIHQ9ISFCMi5sZW5ndGg7QjIubGVuZ3RoOylCMi5zaGlmdCgpKCk7cmV0dXJuIHR9ZnVuY3Rpb24ganQoKXt0aGlzLmc9ITEsdGhpcy5h''@;'; put 'put ''ZGRlZE5vZGVzPVtdLHRoaXMucmVtb3ZlZE5vZGVzPVtdLHRoaXMub2E9bmV3IFNldH1ldC5saXN0PUIyLGp0LnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuZyl7dGhpcy5nPSExO3ZhciB0PXRoaXMudGFrZVJlY29yZHMoKTt0Lmxlbmd0aCYmdGhpcy5vYS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKGkpe2kodCl9KX19LGp0LnByb3RvdHlwZS50YWtlUmVjb3Jkcz1mdW5jdGlvbigpe2lmKHRoaXMuYWRkZWROb2Rlcy5sZW5ndGh8fHRoaXMucmVtb3ZlZE5vZGVzLmxlbmd0aCl7dmFyIHQ9W3thZGRlZE5vZGVzOnRoaXMuYWRkZWROb2RlcyxyZW1vdmVkTm9kZXM6dGhpcy5yZW1v''@;'; put 'put ''dmVkTm9kZXN9XTtyZXR1cm4gdGhpcy5hZGRlZE5vZGVzPVtdLHRoaXMucmVtb3ZlZE5vZGVzPVtdLHR9cmV0dXJuW119O3ZhciBwYT0vWyZcdTAwQTAiXS9nLGZhPS9bJlx1MDBBMDw+XS9nO2Z1bmN0aW9uIFllKHQpe3N3aXRjaCh0KXtjYXNlIiYiOnJldHVybiImYW1wOyI7Y2FzZSI8Ijpy''@;'; put 'put ''ZXR1cm4iJmx0OyI7Y2FzZSI+IjpyZXR1cm4iJmd0OyI7Y2FzZSciJzpyZXR1cm4iJnF1b3Q7IjtjYXNlIlx4YTAiOnJldHVybiImbmJzcDsifX1mdW5jdGlvbiBLZSh0KXtmb3IodmFyIGk9e30sbj0wO248dC5sZW5ndGg7bisrKWlbdFtuXV09ITA7cmV0dXJuIGl9dmFyIGdhPUtlKCJhcmVh''@;'; put 'put ''IGJhc2UgYnIgY29sIGNvbW1hbmQgZW1iZWQgaHIgaW1nIGlucHV0IGtleWdlbiBsaW5rIG1ldGEgcGFyYW0gc291cmNlIHRyYWNrIHdiciIuc3BsaXQoIiAiKSksQWE9S2UoInN0eWxlIHNjcmlwdCB4bXAgaWZyYW1lIG5vZW1iZWQgbm9mcmFtZXMgcGxhaW50ZXh0IG5vc2NyaXB0Ii5zcGxp''@;'; put 'put ''dCgiICIpKTtmdW5jdGlvbiBSdCh0LGkpeyJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZSYmKHQ9dC5jb250ZW50KTtmb3IodmFyIG49IiIscz1pP2kodCk6dC5jaGlsZE5vZGVzLGQ9MCxtPXMubGVuZ3RoLEw9dm9pZCAwO2Q8bSYmKEw9c1tkXSk7ZCsrKXt0Ont2YXIgRj1MLEc9dCxVPWk7c3dp''@;'; put 'put ''dGNoKEYubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6Zm9yKHZhciBqMSxLPSI8IisoRz1GLmxvY2FsTmFtZSksQzE9Ri5hdHRyaWJ1dGVzLFExPTA7ajE9QzFbUTFdO1ExKyspSys9IiAiK2oxLm5hbWUrJz0iJytqMS52YWx1ZS5yZXBsYWNlKHBhLFllKSsnIic7Sys9Ij4iLEY9''@;'; put 'put ''Z2FbR10/SzpLK1J0KEYsVSkrIjwvIitHKyI+IjticmVhayB0O2Nhc2UgTm9kZS5URVhUX05PREU6Rj1GLmRhdGEsRj1HJiZBYVtHLmxvY2FsTmFtZV0/RjpGLnJlcGxhY2UoZmEsWWUpO2JyZWFrIHQ7Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpGPSJceDNjIS0tIitGLmRhdGErIi0tXHgzZSI7''@;'; put 'put ''YnJlYWsgdDtkZWZhdWx0OnRocm93IHdpbmRvdy5jb25zb2xlLmVycm9yKEYpLEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKX19bis9Rn1yZXR1cm4gbn12YXIgbHQ9eTEuSCx6dD17cXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9xdWVyeVNlbGVj''@;'; put 'put ''dG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX3F1ZXJ5U2VsZWN0b3JBbGwodCl9fSxYZT17fTtmdW5jdGlvbiBRZSh0KXtYZVt0XT1mdW5jdGlvbihpKXtyZXR1cm4gaVsiX19zaGFkeV9uYXRpdmVfIit0XX19ZnVuY3Rpb24g''@;'; put 'put ''RzIodCxpKXtmb3IodmFyIG4gaW4gczAodCxpLCJfX3NoYWR5X25hdGl2ZV8iKSxpKVFlKG4pfWZ1bmN0aW9uIGMwKHQsaSl7aT12b2lkIDA9PT1pP1tdOmk7Zm9yKHZhciBuPTA7bjxpLmxlbmd0aDtuKyspe3ZhciBzPWlbbl0sZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQs''@;'; put 'put ''cyk7ZCYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX3NoYWR5X25hdGl2ZV8iK3MsZCksZC52YWx1ZT96dFtzXXx8KHp0W3NdPWQudmFsdWUpOlFlKHMpKX19dmFyIHkwPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsTm9kZUZpbHRlci5TSE9XX0FMTCxudWxsLCExKSxM''@;'; put 'put ''MD1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULG51bGwsITEpLFV0PWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiaW5lcnQiKTtmdW5jdGlvbiBKZSh0KXtmb3IodmFyIGk7aT10Ll9fc2hhZHlfbmF0''@;'; put 'put ''aXZlX2ZpcnN0Q2hpbGQ7KXQuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQoaSl9dmFyIFd0PVsiZmlyc3RFbGVtZW50Q2hpbGQiLCJsYXN0RWxlbWVudENoaWxkIiwiY2hpbGRyZW4iLCJjaGlsZEVsZW1lbnRDb3VudCJdLCR0PVsicXVlcnlTZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3JBbGwi''@;'; put 'put ''LCJhcHBlbmQiLCJwcmVwZW5kIiwicmVwbGFjZUNoaWxkcmVuIl0scXQ9bjAoe2dldCBjaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9jaGlsZE5vZGVzfSxnZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLl9fc2hhZHlfZmlyc3RDaGlsZH0sZ2V0IGxhc3RDaGlsZCgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9fc2hhZHlfbGFzdENoaWxkfSxnZXQgY2hpbGRFbGVtZW50Q291bnQoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X2NoaWxkRWxlbWVudENvdW50fSxnZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5fX3NoYWR5X2NoaWxkcmVufSxnZXQgZmlyc3RFbGVtZW50Q2hpbGQoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fX3NoYWR5X2ZpcnN0RWxlbWVudENoaWxkfSxnZXQgbGFzdEVsZW1lbnRDaGlsZCgpe3JldHVybiB0aGlzLl9fc2hhZHlfbGFzdEVsZW1lbnRDaGlsZH0sZ2V0IHNoYWRvd1Jvb3QoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X3NoYWRvd1Jvb3R9fSksWXQ9bjAoe2dldCB0ZXh0Q29udGVu''@;'; put 'put ''dCgpe3JldHVybiB0aGlzLl9fc2hhZHlfdGV4dENvbnRlbnR9LHNldCB0ZXh0Q29udGVudCh0KXt0aGlzLl9fc2hhZHlfdGV4dENvbnRlbnQ9dH0sZ2V0IGlubmVySFRNTCgpe3JldHVybiB0aGlzLl9fc2hhZHlfaW5uZXJIVE1MfSxzZXQgaW5uZXJIVE1MKHQpe3RoaXMuX19zaGFkeV9pbm5l''@;'; put 'put ''ckhUTUw9dH19KSxLdD1uMCh7Z2V0IHBhcmVudEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X3BhcmVudEVsZW1lbnR9LGdldCBwYXJlbnROb2RlKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9wYXJlbnROb2RlfSxnZXQgbmV4dFNpYmxpbmcoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X25leHRT''@;'; put 'put ''aWJsaW5nfSxnZXQgcHJldmlvdXNTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9wcmV2aW91c1NpYmxpbmd9LGdldCBuZXh0RWxlbWVudFNpYmxpbmcoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X25leHRFbGVtZW50U2libGluZ30sZ2V0IHByZXZpb3VzRWxlbWVudFNpYmxpbmcoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fX3NoYWR5X3ByZXZpb3VzRWxlbWVudFNpYmxpbmd9LGdldCBjbGFzc05hbWUoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X2NsYXNzTmFtZX0sc2V0IGNsYXNzTmFtZSh0KXt0aGlzLl9fc2hhZHlfY2xhc3NOYW1lPXR9fSk7ZnVuY3Rpb24gWHQodCl7Zm9yKHZhciBpIGluIHQpe3Zh''@;'; put 'put ''ciBuPXRbaV07biYmKG4uZW51bWVyYWJsZT0hMSl9fVh0KHF0KSxYdChZdCksWHQoS3QpO3ZhciB0bD15MS5IfHwhMD09PXkxLkosZWw9dGw/ZnVuY3Rpb24oKXt9OmZ1bmN0aW9uKHQpe3ZhciBpPXExKHQpO2kuUGF8fChpLlBhPSEwLFB0KHQsS3QpKX0sbGw9dGw/ZnVuY3Rpb24oKXt9OmZ1''@;'; put 'put ''bmN0aW9uKHQpe3ZhciBpPXExKHQpO2kuT2F8fChpLk9hPSEwLFB0KHQscXQpLHdpbmRvdy5jdXN0b21FbGVtZW50cyYmd2luZG93LmN1c3RvbUVsZW1lbnRzLnBvbHlmaWxsV3JhcEZsdXNoQ2FsbGJhY2smJiF5MS5KfHxQdCh0LFl0KSl9LGoyPSJfX2V2ZW50V3JhcHBlcnMiK0RhdGUubm93''@;'; put 'put ''KCksUXQ9ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV2ZW50LnByb3RvdHlwZSwiY29tcG9zZWQiKTtyZXR1cm4gdD9mdW5jdGlvbihpKXtyZXR1cm4gdC5nZXQuY2FsbChpKX06bnVsbH0oKSxIYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dmFy''@;'; put 'put ''IGk9ITEsbj17Z2V0IGNhcHR1cmUoKXtyZXR1cm4gaT0hMCwhMX19O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsdCxuKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsdCxuKSxpfSgpO2Z1bmN0aW9uIGlsKHQpe2lmKHQmJiJvYmplY3QiPT10eXBlb2Yg''@;'; put 'put ''dCl2YXIgaT0hIXQuY2FwdHVyZSxuPSEhdC5vbmNlLHM9ISF0LnBhc3NpdmUsZD10LlU7ZWxzZSBpPSEhdCxzPW49ITE7cmV0dXJue0xhOmQsY2FwdHVyZTppLG9uY2U6bixwYXNzaXZlOnMsSmE6SGE/dDppfX12YXIgQ2E9e2JsdXI6ITAsZm9jdXM6ITAsZm9jdXNpbjohMCxmb2N1c291dDoh''@;'; put 'put ''MCxjbGljazohMCxkYmxjbGljazohMCxtb3VzZWRvd246ITAsbW91c2VlbnRlcjohMCxtb3VzZWxlYXZlOiEwLG1vdXNlbW92ZTohMCxtb3VzZW91dDohMCxtb3VzZW92ZXI6ITAsbW91c2V1cDohMCx3aGVlbDohMCxiZWZvcmVpbnB1dDohMCxpbnB1dDohMCxrZXlkb3duOiEwLGtleXVwOiEw''@;'; put 'put ''LGNvbXBvc2l0aW9uc3RhcnQ6ITAsY29tcG9zaXRpb251cGRhdGU6ITAsY29tcG9zaXRpb25lbmQ6ITAsdG91Y2hzdGFydDohMCx0b3VjaGVuZDohMCx0b3VjaG1vdmU6ITAsdG91Y2hjYW5jZWw6ITAscG9pbnRlcm92ZXI6ITAscG9pbnRlcmVudGVyOiEwLHBvaW50ZXJkb3duOiEwLHBvaW50''@;'; put 'put ''ZXJtb3ZlOiEwLHBvaW50ZXJ1cDohMCxwb2ludGVyY2FuY2VsOiEwLHBvaW50ZXJvdXQ6ITAscG9pbnRlcmxlYXZlOiEwLGdvdHBvaW50ZXJjYXB0dXJlOiEwLGxvc3Rwb2ludGVyY2FwdHVyZTohMCxkcmFnc3RhcnQ6ITAsZHJhZzohMCxkcmFnZW50ZXI6ITAsZHJhZ2xlYXZlOiEwLGRyYWdv''@;'; put 'put ''dmVyOiEwLGRyb3A6ITAsZHJhZ2VuZDohMCxET01BY3RpdmF0ZTohMCxET01Gb2N1c0luOiEwLERPTUZvY3VzT3V0OiEwLGtleXByZXNzOiEwfSxhbD17RE9NQXR0ck1vZGlmaWVkOiEwLERPTUF0dHJpYnV0ZU5hbWVDaGFuZ2VkOiEwLERPTUNoYXJhY3RlckRhdGFNb2RpZmllZDohMCxET01F''@;'; put 'put ''bGVtZW50TmFtZUNoYW5nZWQ6ITAsRE9NTm9kZUluc2VydGVkOiEwLERPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudDohMCxET01Ob2RlUmVtb3ZlZDohMCxET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudDohMCxET01TdWJ0cmVlTW9kaWZpZWQ6ITB9O2Z1bmN0aW9uIHJsKHQpe3JldHVybiB0''@;'; put 'put ''IGluc3RhbmNlb2YgTm9kZT90Ll9fc2hhZHlfZ2V0Um9vdE5vZGUoKTp0fWZ1bmN0aW9uIGl0KHQsaSl7dmFyIG49W10scz10O2Zvcih0PXJsKHQpO3M7KW4ucHVzaChzKSxzPXMuX19zaGFkeV9hc3NpZ25lZFNsb3Q/cy5fX3NoYWR5X2Fzc2lnbmVkU2xvdDpzLm5vZGVUeXBlPT09Tm9kZS5E''@;'; put 'put ''T0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZzLmhvc3QmJihpfHxzIT09dCk/cy5ob3N0OnMuX19zaGFkeV9wYXJlbnROb2RlO3JldHVybiBuW24ubGVuZ3RoLTFdPT09ZG9jdW1lbnQmJm4ucHVzaCh3aW5kb3cpLG59ZnVuY3Rpb24gSnQodCxpKXtpZighZTApcmV0dXJuIHQ7dD1pdCh0LCEwKTtm''@;'; put 'put ''b3IodmFyIHMsbSxuPTAsZD12b2lkIDAsTD12b2lkIDA7bjxpLmxlbmd0aDtuKyspaWYoKG09cmwocz1pW25dKSkhPT1kJiYoTD10LmluZGV4T2YobSksZD1tKSwhZTAobSl8fC0xPEwpcmV0dXJuIHN9ZnVuY3Rpb24gdGUodCl7ZnVuY3Rpb24gaShuLHMpe3JldHVybihuPW5ldyB0KG4scykp''@;'; put 'put ''Ll9fY29tcG9zZWQ9cyYmISFzLmNvbXBvc2VkLG59cmV0dXJuIGkuX19wcm90b19fPXQsaS5wcm90b3R5cGU9dC5wcm90b3R5cGUsaX12YXIgbmw9e2ZvY3VzOiEwLGJsdXI6ITB9O2Z1bmN0aW9uIGNsKHQpe3JldHVybiB0Ll9fdGFyZ2V0IT09dC50YXJnZXR8fHQuX19yZWxhdGVkVGFyZ2V0''@;'; put 'put ''IT09dC5yZWxhdGVkVGFyZ2V0fWZ1bmN0aW9uIG9sKHQsaSxuKXtpZihuPWkuX19oYW5kbGVycyYmaS5fX2hhbmRsZXJzW3QudHlwZV0mJmkuX19oYW5kbGVyc1t0LnR5cGVdW25dKWZvcih2YXIgZCxzPTA7KGQ9bltzXSkmJighY2wodCl8fHQudGFyZ2V0IT09dC5yZWxhdGVkVGFyZ2V0KSYm''@;'; put 'put ''KGQuY2FsbChpLHQpLCF0Ll9faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKTtzKyspO31mdW5jdGlvbiBzbCh0KXt2YXIgaT10LmNvbXBvc2VkUGF0aCgpLG49aS5tYXAoZnVuY3Rpb24oRyl7cmV0dXJuIEp0KEcsaSl9KSxzPXQuYnViYmxlcztPYmplY3QuZGVmaW5lUHJvcGVydHkodCwi''@;'; put 'put ''Y3VycmVudFRhcmdldCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBMfX0pO3ZhciBkPUV2ZW50LkNBUFRVUklOR19QSEFTRTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZXZlbnRQaGFzZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxl''@;'; put 'put ''OiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkfX0pO2Zvcih2YXIgbT1pLmxlbmd0aC0xOzA8PW07bS0tKXt2YXIgTD1pW21dO2lmKGQ9TD09PW5bbV0/RXZlbnQuQVRfVEFSR0VUOkV2ZW50LkNBUFRVUklOR19QSEFTRSxvbCh0LEwsImNhcHR1cmUiKSx0LnJhKXJldHVybn1mb3IobT0wO208''@;'; put 'put ''aS5sZW5ndGg7bSsrKXt2YXIgRj0oTD1pW21dKT09PW5bbV07aWYoKEZ8fHMpJiYoZD1GP0V2ZW50LkFUX1RBUkdFVDpFdmVudC5CVUJCTElOR19QSEFTRSxvbCh0LEwsImJ1YmJsZSIpLHQucmEpKXJldHVybn1kPTAsTD1udWxsfWZ1bmN0aW9uIGhsKHQsaSxuLHMsZCxtKXtmb3IodmFyIEw9''@;'; put 'put ''MDtMPHQubGVuZ3RoO0wrKyl7dmFyIEY9dFtMXTtpZihpPT09Ri5ub2RlJiZuPT09Ri50eXBlJiZzPT09Ri5jYXB0dXJlJiZkPT09Ri5vbmNlJiZtPT09Ri5wYXNzaXZlKXJldHVybiBMfXJldHVybi0xfWZ1bmN0aW9uIGRsKHQpe3JldHVybiBldCgpLCF5MS5mYSYmdGhpcyBpbnN0YW5jZW9m''@;'; put 'put ''IE5vZGUmJiF1MChkb2N1bWVudCx0aGlzKT8odC5fX3RhcmdldHx8aWUodCx0aGlzKSxzbCh0KSk6dGhpcy5fX3NoYWR5X25hdGl2ZV9kaXNwYXRjaEV2ZW50KHQpfWZ1bmN0aW9uIGVlKHQsaSxuKXt2YXIgcz1pbChuKSxkPXMuY2FwdHVyZSxtPXMub25jZSxMPXMucGFzc2l2ZSxGPXMuTGE7''@;'; put 'put ''aWYocz1zLkphLGkpe3ZhciBHPXR5cGVvZiBpO2lmKCgiZnVuY3Rpb24iPT09R3x8Im9iamVjdCI9PT1HKSYmKCJvYmplY3QiIT09R3x8aS5oYW5kbGVFdmVudCYmImZ1bmN0aW9uIj09dHlwZW9mIGkuaGFuZGxlRXZlbnQpKXtpZihhbFt0XSlyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9h''@;'; put 'put ''ZGRFdmVudExpc3RlbmVyKHQsaSxzKTt2YXIgVT1GfHx0aGlzO2lmKEY9aVtqMl0pe2lmKC0xPGhsKEYsVSx0LGQsbSxMKSlyZXR1cm59ZWxzZSBpW2oyXT1bXTtGPWZ1bmN0aW9uKEspe2lmKG0mJnRoaXMuX19zaGFkeV9yZW1vdmVFdmVudExpc3RlbmVyKHQsaSxuKSxLLl9fdGFyZ2V0fHxp''@;'; put 'put ''ZShLKSxVIT09dGhpcyl7dmFyIEMxPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSywiY3VycmVudFRhcmdldCIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShLLCJjdXJyZW50VGFyZ2V0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFV9LGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBRMT1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEssImV2ZW50UGhhc2UiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSywiZXZlbnRQaGFzZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkP0V2ZW50LkNBUFRVUklOR19QSEFTRTpFdmVu''@;'; put 'put ''dC5CVUJCTElOR19QSEFTRX19KX1pZihLLl9fcHJldmlvdXNDdXJyZW50VGFyZ2V0PUsuY3VycmVudFRhcmdldCwoIWUwKFUpJiYic2xvdCIhPT1VLmxvY2FsTmFtZXx8LTEhPUsuY29tcG9zZWRQYXRoKCkuaW5kZXhPZihVKSkmJihLLmNvbXBvc2VkfHwtMTxLLmNvbXBvc2VkUGF0aCgpLmlu''@;'; put 'put ''ZGV4T2YoVSkpKWlmKGNsKEspJiZLLnRhcmdldD09PUsucmVsYXRlZFRhcmdldClLLmV2ZW50UGhhc2U9PT1FdmVudC5CVUJCTElOR19QSEFTRSYmSy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtlbHNlIGlmKEsuZXZlbnRQaGFzZT09PUV2ZW50LkNBUFRVUklOR19QSEFTRXx8Sy5idWJi''@;'; put 'put ''bGVzfHxLLnRhcmdldD09PVV8fFUgaW5zdGFuY2VvZiBXaW5kb3cpe3ZhciBqMT0iZnVuY3Rpb24iPT09Rz9pLmNhbGwoVSxLKTppLmhhbmRsZUV2ZW50JiZpLmhhbmRsZUV2ZW50KEspO3JldHVybiBVIT09dGhpcyYmKEMxPyhPYmplY3QuZGVmaW5lUHJvcGVydHkoSywiY3VycmVudFRhcmdl''@;'; put 'put ''dCIsQzEpLEMxPW51bGwpOmRlbGV0ZSBLLmN1cnJlbnRUYXJnZXQsUTE/KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLCJldmVudFBoYXNlIixRMSksUTE9bnVsbCk6ZGVsZXRlIEsuZXZlbnRQaGFzZSksajF9fSxpW2oyXS5wdXNoKHtub2RlOlUsdHlwZTp0LGNhcHR1cmU6ZCxvbmNlOm0scGFz''@;'; put 'put ''c2l2ZTpMLHBiOkZ9KSx0aGlzLl9faGFuZGxlcnM9dGhpcy5fX2hhbmRsZXJzfHx7fSx0aGlzLl9faGFuZGxlcnNbdF09dGhpcy5fX2hhbmRsZXJzW3RdfHx7Y2FwdHVyZTpbXSxidWJibGU6W119LHRoaXMuX19oYW5kbGVyc1t0XVtkPyJjYXB0dXJlIjoiYnViYmxlIl0ucHVzaChGKSxubFt0''@;'; put 'put ''XXx8dGhpcy5fX3NoYWR5X25hdGl2ZV9hZGRFdmVudExpc3RlbmVyKHQsRixzKX19fWZ1bmN0aW9uIGxlKHQsaSxuKXtpZihpKXt2YXIgcz1pbChuKTtuPXMuY2FwdHVyZTt2YXIgZD1zLm9uY2UsbT1zLnBhc3NpdmUsTD1zLkxhO2lmKHM9cy5KYSxhbFt0XSlyZXR1cm4gdGhpcy5fX3NoYWR5''@;'; put 'put ''X25hdGl2ZV9yZW1vdmVFdmVudExpc3RlbmVyKHQsaSxzKTt2YXIgRj1MfHx0aGlzO0w9dm9pZCAwO3ZhciBHPW51bGw7dHJ5e0c9aVtqMl19Y2F0Y2goVSl7fUcmJi0xPChkPWhsKEcsRix0LG4sZCxtKSkmJihMPUcuc3BsaWNlKGQsMSlbMF0ucGIsRy5sZW5ndGh8fChpW2oyXT12b2lkIDAp''@;'; put 'put ''KSx0aGlzLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUV2ZW50TGlzdGVuZXIodCxMfHxpLHMpLEwmJnRoaXMuX19oYW5kbGVycyYmdGhpcy5fX2hhbmRsZXJzW3RdJiYtMTwoaT0odD10aGlzLl9faGFuZGxlcnNbdF1bbj8iY2FwdHVyZSI6ImJ1YmJsZSJdKS5pbmRleE9mKEwpKSYmdC5zcGxpY2Uo''@;'; put 'put ''aSwxKX19dmFyIHVsPW4wKHtnZXQgY29tcG9zZWQoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fX2NvbXBvc2VkJiYoUXQ/dGhpcy5fX2NvbXBvc2VkPSJmb2N1c2luIj09PXRoaXMudHlwZXx8ImZvY3Vzb3V0Ij09PXRoaXMudHlwZXx8UXQodGhpcyk6ITEhPT10aGlzLmlzVHJ1c3RlZCYmKHRo''@;'; put 'put ''aXMuX19jb21wb3NlZD1DYVt0aGlzLnR5cGVdKSksdGhpcy5fX2NvbXBvc2VkfHwhMX0sY29tcG9zZWRQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19jb21wb3NlZFBhdGh8fCh0aGlzLl9fY29tcG9zZWRQYXRoPWl0KHRoaXMuX190YXJnZXQsdGhpcy5jb21wb3NlZCkpLHRoaXMuX19j''@;'; put 'put ''b21wb3NlZFBhdGh9LGdldCB0YXJnZXQoKXtyZXR1cm4gSnQodGhpcy5jdXJyZW50VGFyZ2V0fHx0aGlzLl9fcHJldmlvdXNDdXJyZW50VGFyZ2V0LHRoaXMuY29tcG9zZWRQYXRoKCkpfSxnZXQgcmVsYXRlZFRhcmdldCgpe3JldHVybiB0aGlzLl9fcmVsYXRlZFRhcmdldD8odGhpcy5fX3Jl''@;'; put 'put ''bGF0ZWRUYXJnZXRDb21wb3NlZFBhdGh8fCh0aGlzLl9fcmVsYXRlZFRhcmdldENvbXBvc2VkUGF0aD1pdCh0aGlzLl9fcmVsYXRlZFRhcmdldCwhMCkpLEp0KHRoaXMuY3VycmVudFRhcmdldHx8dGhpcy5fX3ByZXZpb3VzQ3VycmVudFRhcmdldCx0aGlzLl9fcmVsYXRlZFRhcmdldENvbXBv''@;'; put 'put ''c2VkUGF0aCkpOm51bGx9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe0V2ZW50LnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb24uY2FsbCh0aGlzKSx0aGlzLnJhPSEwfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXtFdmVudC5wcm90b3R5cGUuc3RvcEltbWVkaWF0ZVBy''@;'; put 'put ''b3BhZ2F0aW9uLmNhbGwodGhpcyksdGhpcy5yYT10aGlzLl9faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPSEwfX0pO2Z1bmN0aW9uIGllKHQsaSl7aWYodC5fX3RhcmdldD1pPXZvaWQgMD09PWk/dC50YXJnZXQ6aSx0Ll9fcmVsYXRlZFRhcmdldD10LnJlbGF0ZWRUYXJnZXQseTEuSCl7''@;'; put 'put ''aWYoIShpPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuaGFzT3duUHJvcGVydHkoIl9fc2hhZHlfcGF0Y2hlZFByb3RvIikpe3ZhciBuPU9iamVjdC5jcmVhdGUoaSk7bi5fX3NoYWR5X3NvdXJjZVByb3RvPWksczAobix1bCksaS5fX3NoYWR5X3BhdGNoZWRQcm90bz1ufXQuX19wcm90b19f''@;'; put 'put ''PWkuX19zaGFkeV9wYXRjaGVkUHJvdG99ZWxzZSBzMCh0LHVsKX12YXIgTWE9dGUoRXZlbnQpLFphPXRlKEN1c3RvbUV2ZW50KSx5YT10ZShNb3VzZUV2ZW50KSxwbD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhFbGVtZW50LnByb3RvdHlwZSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVy''@;'; put 'put ''biJvbiI9PT10LnN1YnN0cmluZygwLDIpfSksZmw9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoSFRNTEVsZW1lbnQucHJvdG90eXBlKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIm9uIj09PXQuc3Vic3RyaW5nKDAsMil9KTtmdW5jdGlvbiBnbCh0KXtyZXR1cm57c2V0OmZ1bmN0aW9u''@;'; put 'put ''KGkpe3ZhciBuPXExKHRoaXMpLHM9dC5zdWJzdHJpbmcoMik7bi5UfHwobi5UPXt9KSxuLlRbdF0mJnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLG4uVFt0XSksdGhpcy5fX3NoYWR5X2FkZEV2ZW50TGlzdGVuZXIocyxpKSxuLlRbdF09aX0sZ2V0OmZ1bmN0aW9uKCl7dmFyIGk9djEodGhp''@;'; put 'put ''cyk7cmV0dXJuIGkmJmkuVCYmaS5UW3RdfSxjb25maWd1cmFibGU6ITB9fWZ1bmN0aW9uIFIyKHQsaSl7cmV0dXJue2luZGV4OnQsZ2E6W10sbmE6aX19ZnVuY3Rpb24gU2EodCxpLG4scyl7dmFyIGQ9MCxtPTAsTD0wLEY9MCxHPU1hdGgubWluKGktZCxzLW0pO2lmKDA9PWQmJjA9PW0pdDp7''@;'; put 'put ''Zm9yKEw9MDtMPEc7TCsrKWlmKHRbTF0hPT1uW0xdKWJyZWFrIHQ7TD1HfWlmKGk9PXQubGVuZ3RoJiZzPT1uLmxlbmd0aCl7Rj10Lmxlbmd0aDtmb3IodmFyIFU9bi5sZW5ndGgsSz0wO0s8Ry1MJiZiYSh0Wy0tRl0sblstLVVdKTspSysrO0Y9S31pZihtKz1MLHMtPUYsKGktPUYpLShkKz1M''@;'; put 'put ''KT09MCYmcy1tPT0wKXJldHVybltdO2lmKGQ9PWkpe2ZvcihpPVIyKGQsMCk7bTxzOylpLmdhLnB1c2goblttKytdKTtyZXR1cm5baV19aWYobT09cylyZXR1cm5bUjIoZCxpLWQpXTtmb3Iocz1zLShMPW0pKzEsRj1pLShHPWQpKzEsaT1BcnJheShzKSxVPTA7VTxzO1UrKylpW1VdPUFycmF5''@;'; put 'put ''KEYpLGlbVV1bMF09VTtmb3IoVT0wO1U8RjtVKyspaVswXVtVXT1VO2ZvcihVPTE7VTxzO1UrKylmb3IoSz0xO0s8RjtLKyspaWYodFtHK0stMV09PT1uW0wrVS0xXSlpW1VdW0tdPWlbVS0xXVtLLTFdO2Vsc2V7dmFyIEMxPWlbVS0xXVtLXSsxLFExPWlbVV1bSy0xXSsxO2lbVV1bS109QzE8''@;'; put 'put ''UTE/QzE6UTF9Zm9yKHM9aVtHPWkubGVuZ3RoLTFdW0w9aVswXS5sZW5ndGgtMV0sdD1bXTswPEd8fDA8TDspMD09Rz8odC5wdXNoKDIpLEwtLSk6MD09TD8odC5wdXNoKDMpLEctLSk6KEY9aVtHLTFdW0wtMV0sKEMxPShVPWlbRy0xXVtMXSk8KEs9aVtHXVtMLTFdKT9VPEY/VTpGOks8Rj9L''@;'; put 'put ''OkYpPT1GPyhGPT1zP3QucHVzaCgwKToodC5wdXNoKDEpLHM9RiksRy0tLEwtLSk6QzE9PVU/KHQucHVzaCgzKSxHLS0scz1VKToodC5wdXNoKDIpLEwtLSxzPUspKTtmb3IodC5yZXZlcnNlKCksaT12b2lkIDAsRz1bXSxMPTA7TDx0Lmxlbmd0aDtMKyspc3dpdGNoKHRbTF0pe2Nhc2UgMDpp''@;'; put 'put ''JiYoRy5wdXNoKGkpLGk9dm9pZCAwKSxkKyssbSsrO2JyZWFrO2Nhc2UgMTppfHwoaT1SMihkLDApKSxpLm5hKyssZCsrLGkuZ2EucHVzaChuW21dKSxtKys7YnJlYWs7Y2FzZSAyOml8fChpPVIyKGQsMCkpLGkubmErKyxkKys7YnJlYWs7Y2FzZSAzOml8fChpPVIyKGQsMCkpLGkuZ2EucHVz''@;'; put 'put ''aChuW21dKSxtKyt9cmV0dXJuIGkmJkcucHVzaChpKSxHfWZ1bmN0aW9uIGJhKHQsaSl7cmV0dXJuIHQ9PT1pfXZhciBBbD1uMCh7ZGlzcGF0Y2hFdmVudDpkbCxhZGRFdmVudExpc3RlbmVyOmVlLHJlbW92ZUV2ZW50TGlzdGVuZXI6bGV9KSxhZT1udWxsO2Z1bmN0aW9uIG4yKCl7cmV0dXJu''@;'; put 'put ''IGFlfHwoYWU9d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0pLGFlfHxudWxsfWZ1bmN0aW9uIHZsKHQsaSxuKXt2YXIgcz1uMigpO3JldHVybiEoIXN8fCJjbGFzcyIhPT1pfHwocy5zZXRFbGVtZW50Q2xhc3ModCxuKSwwKSl9ZnVuY3Rpb24gSGwodCxpKXt2''@;'; put 'put ''YXIgbj1uMigpO24mJm4udW5zY29wZU5vZGUodCxpKX1mdW5jdGlvbiBDbCh0LGkpe3ZhciBuPW4yKCk7aWYoIW4pcmV0dXJuITA7aWYodC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSl7Zm9yKG49ITAsdD10Ll9fc2hhZHlfZmlyc3RDaGlsZDt0O3Q9dC5fX3NoYWR5''@;'; put 'put ''X25leHRTaWJsaW5nKW49biYmQ2wodCxpKTtyZXR1cm4gbn1yZXR1cm4gdC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFfHxuLmN1cnJlbnRTY29wZUZvck5vZGUodCk9PT1pfWZ1bmN0aW9uIGF0KHQpe2lmKHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4iIjt2YXIg''@;'; put 'put ''aT1uMigpO3JldHVybiBpP2kuY3VycmVudFNjb3BlRm9yTm9kZSh0KToiIn1mdW5jdGlvbiByZSh0LGkpe2lmKHQpZm9yKHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmaSh0KSx0PXQuX19zaGFkeV9maXJzdENoaWxkO3Q7dD10Ll9fc2hhZHlfbmV4dFNpYmxpbmcpdC5ub2RlVHlw''@;'; put 'put ''ZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZyZSh0LGkpfXZhciBuZT13aW5kb3cuZG9jdW1lbnQsY2U9eTEuZmEsVmw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwiaXNDb25uZWN0ZWQiKSxtbD1WbCYmVmwuZ2V0O2Z1bmN0aW9uIG9lKHQpe2Zvcih2YXIg''@;'; put 'put ''aTtpPXQuX19zaGFkeV9maXJzdENoaWxkOyl0Ll9fc2hhZHlfcmVtb3ZlQ2hpbGQoaSl9ZnVuY3Rpb24gTWwodCl7dmFyIGk9djEodCk7aWYoaSYmdm9pZCAwIT09aS5xYSlmb3IoaT10Ll9fc2hhZHlfZmlyc3RDaGlsZDtpO2k9aS5fX3NoYWR5X25leHRTaWJsaW5nKU1sKGkpOyh0PXYxKHQp''@;'; put 'put ''KSYmKHQucWE9dm9pZCAwKX1mdW5jdGlvbiBabCh0KXt2YXIgaT10O2lmKHQmJiJzbG90Ij09PXQubG9jYWxOYW1lKXt2YXIgbj12MSh0KTsobj1uJiZuLmFhKSYmKGk9bi5sZW5ndGg/blswXTpabCh0Ll9fc2hhZHlfbmV4dFNpYmxpbmcpKX1yZXR1cm4gaX1mdW5jdGlvbiB5bCh0LGksbil7''@;'; put 'put ''aWYodD0odD12MSh0KSkmJnQuZWEpe2lmKGkpaWYoaS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSlmb3IodmFyIHM9MCxkPWkuY2hpbGROb2Rlcy5sZW5ndGg7czxkO3MrKyl0LmFkZGVkTm9kZXMucHVzaChpLmNoaWxkTm9kZXNbc10pO2Vsc2UgdC5hZGRlZE5vZGVz''@;'; put 'put ''LnB1c2goaSk7biYmdC5yZW1vdmVkTm9kZXMucHVzaChuKSxmdW5jdGlvbiBzYSh0KXt0Lmd8fCh0Lmc9ITAsRDAoZnVuY3Rpb24oKXt0LmZsdXNoKCl9KSl9KHQpfX12YXIgcnQ9bjAoe2dldCBwYXJlbnROb2RlKCl7dmFyIHQ9djEodGhpcyk7cmV0dXJuIHZvaWQgMCE9PSh0PXQmJnQucGFy''@;'; put 'put ''ZW50Tm9kZSk/dDp0aGlzLl9fc2hhZHlfbmF0aXZlX3BhcmVudE5vZGV9LGdldCBmaXJzdENoaWxkKCl7dmFyIHQ9djEodGhpcyk7cmV0dXJuIHZvaWQgMCE9PSh0PXQmJnQuZmlyc3RDaGlsZCk/dDp0aGlzLl9fc2hhZHlfbmF0aXZlX2ZpcnN0Q2hpbGR9LGdldCBsYXN0Q2hpbGQoKXt2YXIg''@;'; put 'put ''dD12MSh0aGlzKTtyZXR1cm4gdm9pZCAwIT09KHQ9dCYmdC5sYXN0Q2hpbGQpP3Q6dGhpcy5fX3NoYWR5X25hdGl2ZV9sYXN0Q2hpbGR9LGdldCBuZXh0U2libGluZygpe3ZhciB0PXYxKHRoaXMpO3JldHVybiB2b2lkIDAhPT0odD10JiZ0Lm5leHRTaWJsaW5nKT90OnRoaXMuX19zaGFkeV9u''@;'; put 'put ''YXRpdmVfbmV4dFNpYmxpbmd9LGdldCBwcmV2aW91c1NpYmxpbmcoKXt2YXIgdD12MSh0aGlzKTtyZXR1cm4gdm9pZCAwIT09KHQ9dCYmdC5wcmV2aW91c1NpYmxpbmcpP3Q6dGhpcy5fX3NoYWR5X25hdGl2ZV9wcmV2aW91c1NpYmxpbmd9LGdldCBjaGlsZE5vZGVzKCl7aWYoSzEodGhpcykp''@;'; put 'put ''e3ZhciB0PXYxKHRoaXMpO2lmKCF0LmNoaWxkTm9kZXMpe3QuY2hpbGROb2Rlcz1bXTtmb3IodmFyIGk9dGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7aTtpPWkuX19zaGFkeV9uZXh0U2libGluZyl0LmNoaWxkTm9kZXMucHVzaChpKX12YXIgbj10LmNoaWxkTm9kZXN9ZWxzZSBuPXRoaXMuX19z''@;'; put 'put ''aGFkeV9uYXRpdmVfY2hpbGROb2RlcztyZXR1cm4gbi5pdGVtPWZ1bmN0aW9uKHMpe3JldHVybiBuW3NdfSxufSxnZXQgcGFyZW50RWxlbWVudCgpe3ZhciB0PXYxKHRoaXMpO3JldHVybih0PXQmJnQucGFyZW50Tm9kZSkmJnQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSYmKHQ9bnVs''@;'; put 'put ''bCksdm9pZCAwIT09dD90OnRoaXMuX19zaGFkeV9uYXRpdmVfcGFyZW50RWxlbWVudH0sZ2V0IGlzQ29ubmVjdGVkKCl7aWYobWwmJm1sLmNhbGwodGhpcykpcmV0dXJuITA7aWYodGhpcy5ub2RlVHlwZT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXJldHVybiExO3ZhciB0PXRoaXMu''@;'; put 'put ''b3duZXJEb2N1bWVudDtpZihudWxsPT09dHx8dTAodCx0aGlzKSlyZXR1cm4hMDtmb3IodD10aGlzO3QmJiEodCBpbnN0YW5jZW9mIERvY3VtZW50KTspdD10Ll9fc2hhZHlfcGFyZW50Tm9kZXx8KGUwKHQpP3QuaG9zdDp2b2lkIDApO3JldHVybiEhKHQmJnQgaW5zdGFuY2VvZiBEb2N1bWVu''@;'; put 'put ''dCl9LGdldCB0ZXh0Q29udGVudCgpe2lmKEsxKHRoaXMpKXtmb3IodmFyIHQ9W10saT10aGlzLl9fc2hhZHlfZmlyc3RDaGlsZDtpO2k9aS5fX3NoYWR5X25leHRTaWJsaW5nKWkubm9kZVR5cGUhPT1Ob2RlLkNPTU1FTlRfTk9ERSYmdC5wdXNoKGkuX19zaGFkeV90ZXh0Q29udGVudCk7cmV0''@;'; put 'put ''dXJuIHQuam9pbigiIil9cmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfdGV4dENvbnRlbnR9LHNldCB0ZXh0Q29udGVudCh0KXtzd2l0Y2gobnVsbD09dCYmKHQ9IiIpLHRoaXMubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6Y2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05P''@;'; put 'put ''REU6aWYoIUsxKHRoaXMpJiZ5MS5IKXt2YXIgaT10aGlzLl9fc2hhZHlfZmlyc3RDaGlsZDsoaSE9dGhpcy5fX3NoYWR5X2xhc3RDaGlsZHx8aSYmaS5ub2RlVHlwZSE9Tm9kZS5URVhUX05PREUpJiZvZSh0aGlzKSx0aGlzLl9fc2hhZHlfbmF0aXZlX3RleHRDb250ZW50PXR9ZWxzZSBvZSh0''@;'; put 'put ''aGlzKSwoMDx0Lmxlbmd0aHx8dGhpcy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKSYmdGhpcy5fX3NoYWR5X2luc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSk7YnJlYWs7ZGVmYXVsdDp0aGlzLm5vZGVWYWx1ZT10fX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQs''@;'; put 'put ''aSl7aWYodGhpcy5vd25lckRvY3VtZW50IT09bmUmJnQub3duZXJEb2N1bWVudCE9PW5lKXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2luc2VydEJlZm9yZSh0LGkpLHQ7aWYodD09PXRoaXMpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBleGVjdXRlICdhcHBlbmRDaGlsZCcgb24gJ05vZGUn''@;'; put 'put ''OiBUaGUgbmV3IGNoaWxkIGVsZW1lbnQgY29udGFpbnMgdGhlIHBhcmVudC4iKTtpZihpKXt2YXIgbj12MShpKTtpZih2b2lkIDAhPT0obj1uJiZuLnBhcmVudE5vZGUpJiZuIT09dGhpc3x8dm9pZCAwPT09biYmaS5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlIT09dGhpcyl0aHJvdyBFcnJv''@;'; put 'put ''cigiRmFpbGVkIHRvIGV4ZWN1dGUgJ2luc2VydEJlZm9yZScgb24gJ05vZGUnOiBUaGUgbm9kZSBiZWZvcmUgd2hpY2ggdGhlIG5ldyBub2RlIGlzIHRvIGJlIGluc2VydGVkIGlzIG5vdCBhIGNoaWxkIG9mIHRoaXMgbm9kZS4iKX1pZihpPT09dClyZXR1cm4gdDt5bCh0aGlzLHQpO3ZhciBz''@;'; put 'put ''PVtdLGQ9KG49bTIodGhpcykpP24uaG9zdC5sb2NhbE5hbWU6YXQodGhpcyksbT10Ll9fc2hhZHlfcGFyZW50Tm9kZTtpZihtKXt2YXIgTD1hdCh0KSxGPSEhbnx8IW0yKHQpfHxjZSYmdm9pZCAwIT09dGhpcy5fX25vSW5zZXJ0aW9uUG9pbnQ7bS5fX3NoYWR5X3JlbW92ZUNoaWxkKHQsRil9''@;'; put 'put ''bT0hMDt2YXIgRz0oIWNlfHx2b2lkIDA9PT10Ll9fbm9JbnNlcnRpb25Qb2ludCYmdm9pZCAwPT09dGhpcy5fX25vSW5zZXJ0aW9uUG9pbnQpJiYhQ2wodCxkKSxVPW4mJiF0Ll9fbm9JbnNlcnRpb25Qb2ludCYmKCFjZXx8dC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9E''@;'; put 'put ''RSk7cmV0dXJuKFV8fEcpJiYoRyYmKEw9THx8YXQodCkpLHJlKHQsZnVuY3Rpb24oSyl7aWYoVSYmInNsb3QiPT09Sy5sb2NhbE5hbWUmJnMucHVzaChLKSxHKXt2YXIgQzE9TDtuMigpJiYoQzEmJkhsKEssQzEpLChDMT1uMigpKSYmQzEuc2NvcGVOb2RlKEssZCkpfX0pKSxzLmxlbmd0aCYm''@;'; put 'put ''KHpsKG4pLG4uaS5wdXNoLmFwcGx5KG4uaSxjKHMpKSxxMChuKSksSzEodGhpcykmJihmdW5jdGlvbiBrYSh0LGksbil7b3QoaSwyKTt2YXIgcz1xMShpKTtpZih2b2lkIDAhPT1zLmZpcnN0Q2hpbGQmJihzLmNoaWxkTm9kZXM9bnVsbCksdC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJB''@;'; put 'put ''R01FTlRfTk9ERSlmb3IodD10Ll9fc2hhZHlfbmF0aXZlX2ZpcnN0Q2hpbGQ7dDt0PXQuX19zaGFkeV9uYXRpdmVfbmV4dFNpYmxpbmcpSWwodCxpLHMsbik7ZWxzZSBJbCh0LGkscyxuKX0odCx0aGlzLGkpLChGPXYxKHRoaXMpKS5yb290PyhtPSExLEowKHRoaXMpJiZxMChGLnJvb3QpKTpu''@;'; put 'put ''JiYic2xvdCI9PT10aGlzLmxvY2FsTmFtZSYmKG09ITEscTAobikpKSxtPyhuPWUwKHRoaXMpP3RoaXMuaG9zdDp0aGlzLGk/KGk9WmwoaSksbi5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUodCxpKSk6bi5fX3NoYWR5X25hdGl2ZV9hcHBlbmRDaGlsZCh0KSk6dC5vd25lckRvY3VtZW50''@;'; put 'put ''IT09dGhpcy5vd25lckRvY3VtZW50JiZ0aGlzLm93bmVyRG9jdW1lbnQuYWRvcHROb2RlKHQpLHR9LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe2lmKHRoaXMhPXR8fCFlMCh0KSlyZXR1cm4gdGhpcy5fX3NoYWR5X2luc2VydEJlZm9yZSh0KX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24odCxpKXtp''@;'; put 'put ''ZihpPXZvaWQgMCE9PWkmJmksdGhpcy5vd25lckRvY3VtZW50IT09bmUpcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQodCk7aWYodC5fX3NoYWR5X3BhcmVudE5vZGUhPT10aGlzKXRocm93IEVycm9yKCJUaGUgbm9kZSB0byBiZSByZW1vdmVkIGlzIG5vdCBhIGNoaWxk''@;'; put 'put ''IG9mIHRoaXMgbm9kZTogIit0KTt5bCh0aGlzLG51bGwsdCk7dmFyIG49bTIodCkscz1uJiZmdW5jdGlvbiBCYSh0LGkpe2lmKHQuZyl7cHQodCk7dmFyIHMsbj10Lmg7Zm9yKHMgaW4gbilmb3IodmFyIGQ9bltzXSxtPTA7bTxkLmxlbmd0aDttKyspe3ZhciBMPWRbbV07aWYoeDAoaSxMKSl7''@;'; put 'put ''ZC5zcGxpY2UobSwxKTt2YXIgRj10LmcuaW5kZXhPZihMKTtpZigwPD1GJiYodC5nLnNwbGljZShGLDEpLChGPXYxKEwuX19zaGFkeV9wYXJlbnROb2RlKSkmJkYuaWEmJkYuaWEtLSksbS0tLEY9KEw9djEoTCkpLmFhKWZvcih2YXIgRz0wO0c8Ri5sZW5ndGg7RysrKXt2YXIgVT1GW0ddLEs9''@;'; put 'put ''VS5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlO0smJksuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQoVSl9TC5hYT1bXSxMLmFzc2lnbmVkTm9kZXM9W10sRj0hMH19cmV0dXJuIEZ9fShuLHQpLGQ9djEodGhpcyk7aWYoSzEodGhpcykmJihmdW5jdGlvbiBPYSh0LGkpe3ZhciBuPXExKHQp''@;'; put 'put ''O3Q9PT0oaT1xMShpKSkuZmlyc3RDaGlsZCYmKGkuZmlyc3RDaGlsZD1uLm5leHRTaWJsaW5nKSx0PT09aS5sYXN0Q2hpbGQmJihpLmxhc3RDaGlsZD1uLnByZXZpb3VzU2libGluZyk7dmFyIHM9bi5uZXh0U2libGluZzsodD1uLnByZXZpb3VzU2libGluZykmJihxMSh0KS5uZXh0U2libGlu''@;'; put 'put ''Zz1zKSxzJiYocTEocykucHJldmlvdXNTaWJsaW5nPXQpLG4ucGFyZW50Tm9kZT1uLnByZXZpb3VzU2libGluZz1uLm5leHRTaWJsaW5nPXZvaWQgMCx2b2lkIDAhPT1pLmNoaWxkTm9kZXMmJihpLmNoaWxkTm9kZXM9bnVsbCl9KHQsdGhpcyksSjAodGhpcykpKXtxMChkLnJvb3QpO3ZhciBt''@;'; put 'put ''PSEwfWlmKG4yKCkmJiFpJiZuJiZ0Lm5vZGVUeXBlIT09Tm9kZS5URVhUX05PREUpe3ZhciBMPWF0KHQpO3JlKHQsZnVuY3Rpb24oRil7SGwoRixMKX0pfXJldHVybiBNbCh0KSxuJiYoKGk9InNsb3QiPT09dGhpcy5sb2NhbE5hbWUpJiYobT0hMCksKHN8fGkpJiZxMChuKSksbXx8KG09ZTAo''@;'; put 'put ''dGhpcyk/dGhpcy5ob3N0OnRoaXMsKCFkLnJvb3QmJiJzbG90IiE9PXQubG9jYWxOYW1lfHxtPT09dC5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlKSYmbS5fX3NoYWR5X25hdGl2ZV9yZW1vdmVDaGlsZCh0KSksdH0scmVwbGFjZUNoaWxkOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuX19z''@;'; put 'put ''aGFkeV9pbnNlcnRCZWZvcmUodCxpKSx0aGlzLl9fc2hhZHlfcmVtb3ZlQ2hpbGQoaSksdH0sY2xvbmVOb2RlOmZ1bmN0aW9uKHQpe2lmKCJ0ZW1wbGF0ZSI9PXRoaXMubG9jYWxOYW1lKXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2Nsb25lTm9kZSh0KTt2YXIgaT10aGlzLl9fc2hhZHlf''@;'; put 'put ''bmF0aXZlX2Nsb25lTm9kZSghMSk7aWYodCYmaS5ub2RlVHlwZSE9PU5vZGUuQVRUUklCVVRFX05PREUpe3Q9dGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7Zm9yKHZhciBuO3Q7dD10Ll9fc2hhZHlfbmV4dFNpYmxpbmcpbj10Ll9fc2hhZHlfY2xvbmVOb2RlKCEwKSxpLl9fc2hhZHlfYXBwZW5k''@;'; put 'put ''Q2hpbGQobil9cmV0dXJuIGl9LGdldFJvb3ROb2RlOmZ1bmN0aW9uKHQpe2lmKHRoaXMmJnRoaXMubm9kZVR5cGUpe3ZhciBpPXExKHRoaXMpLG49aS5xYTtyZXR1cm4gdm9pZCAwPT09biYmKGUwKHRoaXMpP2kucWE9bj10aGlzOihuPShuPXRoaXMuX19zaGFkeV9wYXJlbnROb2RlKT9uLl9f''@;'; put 'put ''c2hhZHlfZ2V0Um9vdE5vZGUodCk6dGhpcyxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuX19zaGFkeV9uYXRpdmVfY29udGFpbnModGhpcykmJihpLnFhPW4pKSksbn19LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB4MCh0aGlzLHQpfX0pLHoyPW4wKHtnZXQgYXNzaWduZWRTbG90KCl7''@;'; put 'put ''dmFyIHQ9dGhpcy5fX3NoYWR5X3BhcmVudE5vZGU7cmV0dXJuKHQ9dCYmdC5fX3NoYWR5X3NoYWRvd1Jvb3QpJiZ1dCh0KSwodD12MSh0aGlzKSkmJnQuYXNzaWduZWRTbG90fHxudWxsfX0pO2Z1bmN0aW9uIHNlKHQsaSxuKXt2YXIgcz1bXTtyZXR1cm4gTGwodCxpLG4scyksc31mdW5jdGlv''@;'; put 'put ''biBMbCh0LGksbixzKXtmb3IodD10Ll9fc2hhZHlfZmlyc3RDaGlsZDt0O3Q9dC5fX3NoYWR5X25leHRTaWJsaW5nKXt2YXIgZDtpZihkPXQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIG09aSxMPW4sRj1zLEc9bShkPXQpO0cmJkYucHVzaChkKSxMJiZMKEcpP2Q9RzooTGwo''@;'; put 'put ''ZCxtLEwsRiksZD12b2lkIDApfWlmKGQpYnJlYWt9fXZhciBudD17Z2V0IGZpcnN0RWxlbWVudENoaWxkKCl7dmFyIHQ9djEodGhpcyk7aWYodCYmdm9pZCAwIT09dC5maXJzdENoaWxkKXtmb3IodD10aGlzLl9fc2hhZHlfZmlyc3RDaGlsZDt0JiZ0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5U''@;'; put 'put ''X05PREU7KXQ9dC5fX3NoYWR5X25leHRTaWJsaW5nO3JldHVybiB0fXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2ZpcnN0RWxlbWVudENoaWxkfSxnZXQgbGFzdEVsZW1lbnRDaGlsZCgpe3ZhciB0PXYxKHRoaXMpO2lmKHQmJnZvaWQgMCE9PXQubGFzdENoaWxkKXtmb3IodD10aGlzLl9f''@;'; put 'put ''c2hhZHlfbGFzdENoaWxkO3QmJnQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERTspdD10Ll9fc2hhZHlfcHJldmlvdXNTaWJsaW5nO3JldHVybiB0fXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2xhc3RFbGVtZW50Q2hpbGR9LGdldCBjaGlsZHJlbigpe3JldHVybiBLMSh0aGlzKT9C''@;'; put 'put ''MChBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwodjIodGhpcyksZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0pKTp0aGlzLl9fc2hhZHlfbmF0aXZlX2NoaWxkcmVufSxnZXQgY2hpbGRFbGVtZW50Q291bnQoKXt2YXIgdD10aGlzLl9fc2hhZHlf''@;'; put 'put ''Y2hpbGRyZW47cmV0dXJuIHQ/dC5sZW5ndGg6MH19LEMyPW4wKChudC5hcHBlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO3RoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUoSDIuYXBwbHkobnVsbCxjKGkpKSxu''@;'; put 'put ''dWxsKX0sbnQucHJlcGVuZD1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1bWVudHNbbl07dGhpcy5fX3NoYWR5X2luc2VydEJlZm9yZShIMi5hcHBseShudWxsLGMoaSkpLHRoaXMuX19zaGFkeV9maXJzdENoaWxkKX0sbnQucmVw''@;'; put 'put ''bGFjZUNoaWxkcmVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tuXTtmb3IoO251bGwhPT0obj10aGlzLl9fc2hhZHlfZmlyc3RDaGlsZCk7KXRoaXMuX19zaGFkeV9yZW1vdmVDaGlsZChuKTt0aGlzLl9fc2hhZHlf''@;'; put 'put ''aW5zZXJ0QmVmb3JlKEgyLmFwcGx5KG51bGwsYyhpKSksbnVsbCl9LG50KSksX2E9bjAoe3F1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHNlKHRoaXMsZnVuY3Rpb24oaSl7cmV0dXJuIE8yLmNhbGwoaSx0KX0sZnVuY3Rpb24oaSl7cmV0dXJuISFpfSlbMF18fG51bGx9LHF1ZXJ5''@;'; put 'put ''U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCxpKXtpZihpKXtpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX19zaGFkeV9uYXRpdmVfcXVlcnlTZWxlY3RvckFsbCh0KSk7dmFyIG49dGhpcy5fX3NoYWR5X2dldFJvb3ROb2RlKCk7cmV0dXJuIEIwKGkuZmlsdGVyKGZ1bmN0aW9uKHMp''@;'; put 'put ''e3JldHVybiBzLl9fc2hhZHlfZ2V0Um9vdE5vZGUoKT09bn0pKX1yZXR1cm4gQjAoc2UodGhpcyxmdW5jdGlvbihzKXtyZXR1cm4gTzIuY2FsbChzLHQpfSkpfX0pLFNsPXkxLmZhJiYheTEuSj9CdCh7fSxDMik6QzI7QnQoQzIsX2EpO3ZhciBibD1uMCh7YWZ0ZXI6ZnVuY3Rpb24odCl7Zm9y''@;'; put 'put ''KHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO2lmKG51bGwhPT0obj10aGlzLl9fc2hhZHlfcGFyZW50Tm9kZSkpe3ZhciBzPXRoaXMuX19zaGFkeV9uZXh0U2libGluZztuLl9fc2hhZHlfaW5zZXJ0QmVmb3JlKEgyLmFwcGx5KG51bGwsYyhp''@;'; put 'put ''KSkscyl9fSxiZWZvcmU6ZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO251bGwhPT0obj10aGlzLl9fc2hhZHlfcGFyZW50Tm9kZSkmJm4uX19zaGFkeV9pbnNlcnRCZWZvcmUoSDIuYXBwbHkobnVsbCxjKGkpKSx0''@;'; put 'put ''aGlzKX0scmVtb3ZlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX3NoYWR5X3BhcmVudE5vZGU7bnVsbCE9PXQmJnQuX19zaGFkeV9yZW1vdmVDaGlsZCh0aGlzKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJn''@;'; put 'put ''dW1lbnRzW25dO2lmKG51bGwhPT0obj10aGlzLl9fc2hhZHlfcGFyZW50Tm9kZSkpe3ZhciBzPXRoaXMuX19zaGFkeV9uZXh0U2libGluZztuLl9fc2hhZHlfcmVtb3ZlQ2hpbGQodGhpcyksbi5fX3NoYWR5X2luc2VydEJlZm9yZShIMi5hcHBseShudWxsLGMoaSkpLHMpfX19KSxfbD13aW5k''@;'; put 'put ''b3cuZG9jdW1lbnQ7ZnVuY3Rpb24gd2wodCxpKXtpZigic2xvdCI9PT1pKUowKHQ9dC5fX3NoYWR5X3BhcmVudE5vZGUpJiZxMCh2MSh0KS5yb290KTtlbHNlIGlmKCJzbG90Ij09PXQubG9jYWxOYW1lJiYibmFtZSI9PT1pJiYoaT1tMih0KSkpe2lmKGkuZyl7cHQoaSk7dmFyIG49dC5RYSxz''@;'; put 'put ''PVVsKHQpO2lmKHMhPT1uKXt2YXIgZD0obj1pLmhbbl0pLmluZGV4T2YodCk7MDw9ZCYmbi5zcGxpY2UoZCwxKSwobj1pLmhbc118fChpLmhbc109W10pKS5wdXNoKHQpLDE8bi5sZW5ndGgmJihpLmhbc109V2wobikpfX1xMChpKX19dmFyIGN0PW4wKHtnZXQgcHJldmlvdXNFbGVtZW50U2li''@;'; put 'put ''bGluZygpe3ZhciB0PXYxKHRoaXMpO2lmKHQmJnZvaWQgMCE9PXQucHJldmlvdXNTaWJsaW5nKXtmb3IodD10aGlzLl9fc2hhZHlfcHJldmlvdXNTaWJsaW5nO3QmJnQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERTspdD10Ll9fc2hhZHlfcHJldmlvdXNTaWJsaW5nO3JldHVybiB0fXJl''@;'; put 'put ''dHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX3ByZXZpb3VzRWxlbWVudFNpYmxpbmd9LGdldCBuZXh0RWxlbWVudFNpYmxpbmcoKXt2YXIgdD12MSh0aGlzKTtpZih0JiZ2b2lkIDAhPT10Lm5leHRTaWJsaW5nKXtmb3IodD10aGlzLl9fc2hhZHlfbmV4dFNpYmxpbmc7dCYmdC5ub2RlVHlwZSE9''@;'; put 'put ''PU5vZGUuRUxFTUVOVF9OT0RFOyl0PXQuX19zaGFkeV9uZXh0U2libGluZztyZXR1cm4gdH1yZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9uZXh0RWxlbWVudFNpYmxpbmd9LGdldCBzbG90KCl7cmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCJzbG90Iil9LHNldCBzbG90KHQpe3RoaXMuX19z''@;'; put 'put ''aGFkeV9zZXRBdHRyaWJ1dGUoInNsb3QiLHQpfSxnZXQgY2xhc3NOYW1lKCl7cmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn0sc2V0IGNsYXNzTmFtZSh0KXt0aGlzLl9fc2hhZHlfc2V0QXR0cmlidXRlKCJjbGFzcyIsdCl9LHNldEF0dHJpYnV0ZTpmdW5jdGlvbih0LGkp''@;'; put 'put ''e3RoaXMub3duZXJEb2N1bWVudCE9PV9sP3RoaXMuX19zaGFkeV9uYXRpdmVfc2V0QXR0cmlidXRlKHQsaSk6dmwodGhpcyx0LGkpfHwodGhpcy5fX3NoYWR5X25hdGl2ZV9zZXRBdHRyaWJ1dGUodCxpKSx3bCh0aGlzLHQpKX0scmVtb3ZlQXR0cmlidXRlOmZ1bmN0aW9uKHQpe3RoaXMub3du''@;'; put 'put ''ZXJEb2N1bWVudCE9PV9sP3RoaXMuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQXR0cmlidXRlKHQpOnZsKHRoaXMsdCwiIik/IiI9PT10aGlzLmdldEF0dHJpYnV0ZSh0KSYmdGhpcy5fX3NoYWR5X25hdGl2ZV9yZW1vdmVBdHRyaWJ1dGUodCk6KHRoaXMuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQXR0''@;'; put 'put ''cmlidXRlKHQpLHdsKHRoaXMsdCkpfX0pO3kxLmZhfHxwbC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2N0W3RdPWdsKHQpfSk7dmFyIHhsPW4wKHthdHRhY2hTaGFkb3c6ZnVuY3Rpb24odCl7aWYoIXRoaXMpdGhyb3cgRXJyb3IoIk11c3QgcHJvdmlkZSBhIGhvc3QuIik7aWYoIXQpdGhyb3cgRXJy''@;'; put 'put ''b3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzLiIpO2lmKHQuc2hhZHlVcGdyYWRlRnJhZ21lbnQmJiF5MS5OYSl7dmFyIGk9dC5zaGFkeVVwZ3JhZGVGcmFnbWVudDtpZihpLl9fcHJvdG9fXz1TaGFkb3dSb290LnByb3RvdHlwZSxCbChpLHRoaXMsdCksc3QoaSxpKSx0PWkuX19ub0luc2VydGlv''@;'; put 'put ''blBvaW50P251bGw6aS5xdWVyeVNlbGVjdG9yQWxsKCJzbG90IiksaS5fX25vSW5zZXJ0aW9uUG9pbnQ9dm9pZCAwLHQmJnQubGVuZ3RoKXt2YXIgbj1pO3psKG4pLG4uaS5wdXNoLmFwcGx5KG4uaSxjKHQpKSxxMChpKX1pLmhvc3QuX19zaGFkeV9uYXRpdmVfYXBwZW5kQ2hpbGQoaSl9ZWxz''@;'; put 'put ''ZSBpPW5ldyBkdChPbCx0aGlzLHQpO3JldHVybiB0aGlzLl9fQ0Vfc2hhZG93Um9vdD1pfSxnZXQgc2hhZG93Um9vdCgpe3ZhciB0PXYxKHRoaXMpO3JldHVybiB0JiZ0LmdifHxudWxsfX0pO0J0KGN0LHhsKTt2YXIgaGU9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3Vt''@;'; put 'put ''ZW50KCJpbmVydCIpLGRlPW4wKHtnZXQgaW5uZXJIVE1MKCl7cmV0dXJuIEsxKHRoaXMpP1J0KCJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZT90aGlzLmNvbnRlbnQ6dGhpcyx2Mik6dGhpcy5fX3NoYWR5X25hdGl2ZV9pbm5lckhUTUx9LHNldCBpbm5lckhUTUwodCl7aWYoInRlbXBsYXRl''@;'; put 'put ''Ij09PXRoaXMubG9jYWxOYW1lKXRoaXMuX19zaGFkeV9uYXRpdmVfaW5uZXJIVE1MPXQ7ZWxzZXtvZSh0aGlzKTt2YXIgaT10aGlzLmxvY2FsTmFtZXx8ImRpdiI7Zm9yKGk9dGhpcy5uYW1lc3BhY2VVUkkmJnRoaXMubmFtZXNwYWNlVVJJIT09aGUubmFtZXNwYWNlVVJJP2hlLmNyZWF0ZUVs''@;'; put 'put ''ZW1lbnROUyh0aGlzLm5hbWVzcGFjZVVSSSxpKTpoZS5jcmVhdGVFbGVtZW50KGkpLHkxLkg/aS5fX3NoYWR5X25hdGl2ZV9pbm5lckhUTUw9dDppLmlubmVySFRNTD10O3Q9aS5fX3NoYWR5X2ZpcnN0Q2hpbGQ7KXRoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUodCl9fX0pLERsPW4wKHtibHVy''@;'; put 'put ''OmZ1bmN0aW9uKCl7dmFyIHQ9djEodGhpcyk7KHQ9KHQ9dCYmdC5yb290KSYmdC5hY3RpdmVFbGVtZW50KT90Ll9fc2hhZHlfYmx1cigpOnRoaXMuX19zaGFkeV9uYXRpdmVfYmx1cigpfX0pO3kxLmZhfHxmbC5mb3JFYWNoKGZ1bmN0aW9uKHQpe0RsW3RdPWdsKHQpfSk7dmFyIEVsPW4wKHth''@;'; put 'put ''c3NpZ25lZE5vZGVzOmZ1bmN0aW9uKHQpe2lmKCJzbG90Ij09PXRoaXMubG9jYWxOYW1lKXt2YXIgaT10aGlzLl9fc2hhZHlfZ2V0Um9vdE5vZGUoKTtyZXR1cm4gaSYmZTAoaSkmJnV0KGkpLChpPXYxKHRoaXMpKSYmKHQmJnQuZmxhdHRlbj9pLmFhOmkuYXNzaWduZWROb2Rlcyl8fFtdfX0s''@;'; put 'put ''YWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGksbil7aWYoInNsb3QiIT09dGhpcy5sb2NhbE5hbWV8fCJzbG90Y2hhbmdlIj09PXQpZWUuY2FsbCh0aGlzLHQsaSxuKTtlbHNleyJvYmplY3QiIT10eXBlb2YgbiYmKG49e2NhcHR1cmU6ISFufSk7dmFyIHM9dGhpcy5fX3NoYWR5X3BhcmVu''@;'; put 'put ''dE5vZGU7aWYoIXMpdGhyb3cgRXJyb3IoIlNoYWR5RE9NIGNhbm5vdCBhdHRhY2ggZXZlbnQgdG8gc2xvdCB1bmxlc3MgaXQgaGFzIGEgYHBhcmVudE5vZGVgIik7bi5VPXRoaXMscy5fX3NoYWR5X2FkZEV2ZW50TGlzdGVuZXIodCxpLG4pfX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlv''@;'; put 'put ''bih0LGksbil7aWYoInNsb3QiIT09dGhpcy5sb2NhbE5hbWV8fCJzbG90Y2hhbmdlIj09PXQpbGUuY2FsbCh0aGlzLHQsaSxuKTtlbHNleyJvYmplY3QiIT10eXBlb2YgbiYmKG49e2NhcHR1cmU6ISFufSk7dmFyIHM9dGhpcy5fX3NoYWR5X3BhcmVudE5vZGU7aWYoIXMpdGhyb3cgRXJyb3Io''@;'; put 'put ''IlNoYWR5RE9NIGNhbm5vdCBhdHRhY2ggZXZlbnQgdG8gc2xvdCB1bmxlc3MgaXQgaGFzIGEgYHBhcmVudE5vZGVgIik7bi5VPXRoaXMscy5fX3NoYWR5X3JlbW92ZUV2ZW50TGlzdGVuZXIodCxpLG4pfX19KSx1ZT1uMCh7Z2V0RWxlbWVudEJ5SWQ6ZnVuY3Rpb24odCl7cmV0dXJuIiI9PT10''@;'; put 'put ''P251bGw6c2UodGhpcyxmdW5jdGlvbihpKXtyZXR1cm4gaS5pZD09dH0sZnVuY3Rpb24oaSl7cmV0dXJuISFpfSlbMF18fG51bGx9fSk7ZnVuY3Rpb24gd2EodCxpKXtmb3IodmFyIG47aSYmIXQuaGFzKG49aS5fX3NoYWR5X2dldFJvb3ROb2RlKCkpOylpPW4uaG9zdDtyZXR1cm4gaX12YXIg''@;'; put 'put ''RGE9Il9fc2hhZHlfbmF0aXZlXyIrTzAoKSxwZT1uMCh7Z2V0IGFjdGl2ZUVsZW1lbnQoKXt2YXIgdD15MS5IP2RvY3VtZW50Ll9fc2hhZHlfbmF0aXZlX2FjdGl2ZUVsZW1lbnQ6ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZighdHx8IXQubm9kZVR5cGUpcmV0dXJuIG51bGw7dmFyIGk9ISFl''@;'; put 'put ''MCh0aGlzKTtpZighKHRoaXM9PT1kb2N1bWVudHx8aSYmdGhpcy5ob3N0IT09dCYmdGhpcy5ob3N0Ll9fc2hhZHlfbmF0aXZlX2NvbnRhaW5zKHQpKSlyZXR1cm4gbnVsbDtmb3IoaT1tMih0KTtpJiZpIT09dGhpczspaT1tMih0PWkuaG9zdCk7cmV0dXJuIHRoaXM9PT1kb2N1bWVudD9pP251''@;'; put 'put ''bGw6dDppPT09dGhpcz90Om51bGx9LGVsZW1lbnRzRnJvbVBvaW50OmZ1bmN0aW9uKHQsaSl7dD1bXS5zbGljZS5jYWxsKGRvY3VtZW50W0RhXSh0LGkpKSxpPWZ1bmN0aW9uIHhhKHQpe3ZhciBpPW5ldyBTZXQ7Zm9yKGkuYWRkKHQpO2UwKHQpJiZ0Lmhvc3Q7KXQ9dC5ob3N0Ll9fc2hhZHlf''@;'; put 'put ''Z2V0Um9vdE5vZGUoKSxpLmFkZCh0KTtyZXR1cm4gaX0odGhpcyk7Zm9yKHZhciBuPW5ldyBTZXQscz0wO3M8dC5sZW5ndGg7cysrKW4uYWRkKHdhKGksdFtzXSkpO3ZhciBkPVtdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obSl7cmV0dXJuIGQucHVzaChtKX0pLGR9LGVsZW1lbnRGcm9t''@;'; put 'put ''UG9pbnQ6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5fX3NoYWR5X2VsZW1lbnRzRnJvbVBvaW50KHQsaSlbMF18fG51bGx9fSksRWE9d2luZG93LmRvY3VtZW50LFRhPW4wKHtpbXBvcnROb2RlOmZ1bmN0aW9uKHQsaSl7aWYodC5vd25lckRvY3VtZW50IT09RWF8fCJ0ZW1wbGF0ZSI9PT10''@;'; put 'put ''LmxvY2FsTmFtZSlyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9pbXBvcnROb2RlKHQsaSk7dmFyIG49dGhpcy5fX3NoYWR5X25hdGl2ZV9pbXBvcnROb2RlKHQsITEpO2lmKGkpZm9yKHQ9dC5fX3NoYWR5X2ZpcnN0Q2hpbGQ7dDt0PXQuX19zaGFkeV9uZXh0U2libGluZylpPXRoaXMuX19z''@;'; put 'put ''aGFkeV9pbXBvcnROb2RlKHQsITApLG4uX19zaGFkeV9hcHBlbmRDaGlsZChpKTtyZXR1cm4gbn19KSxUbD1uMCh7ZGlzcGF0Y2hFdmVudDpkbCxhZGRFdmVudExpc3RlbmVyOmVlLmJpbmQod2luZG93KSxyZW1vdmVFdmVudExpc3RlbmVyOmxlLmJpbmQod2luZG93KX0pLFYyPXt9O09iamVj''@;'; put 'put ''dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJwYXJlbnRFbGVtZW50IikmJihWMi5wYXJlbnRFbGVtZW50PXJ0LnBhcmVudEVsZW1lbnQpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjb250YWlu''@;'; put 'put ''cyIpJiYoVjIuY29udGFpbnM9cnQuY29udGFpbnMpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjaGlsZHJlbiIpJiYoVjIuY2hpbGRyZW49QzIuY2hpbGRyZW4pLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1l''@;'; put 'put ''bnQucHJvdG90eXBlLCJpbm5lckhUTUwiKSYmKFYyLmlubmVySFRNTD1kZS5pbm5lckhUTUwpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjbGFzc05hbWUiKSYmKFYyLmNsYXNzTmFtZT1jdC5jbGFzc05hbWUpO3ZhciBFMD17RXZlbnRU''@;'; put 'put ''YXJnZXQ6W0FsXSxOb2RlOltydCx3aW5kb3cuRXZlbnRUYXJnZXQ/bnVsbDpBbF0sVGV4dDpbejJdLENvbW1lbnQ6W3oyXSxDREFUQVNlY3Rpb246W3oyXSxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246W3oyXSxFbGVtZW50OltjdCxDMixibCx6MiwheTEuSHx8ImlubmVySFRNTCJpbiBFbGVtZW50''@;'; put 'put ''LnByb3RvdHlwZT9kZTpudWxsLHdpbmRvdy5IVE1MU2xvdEVsZW1lbnQ/bnVsbDpFbF0sSFRNTEVsZW1lbnQ6W0RsLFYyXSxIVE1MU2xvdEVsZW1lbnQ6W0VsXSxEb2N1bWVudEZyYWdtZW50OltTbCx1ZV0sRG9jdW1lbnQ6W1RhLFNsLHVlLHBlXSxXaW5kb3c6W1RsXSxDaGFyYWN0ZXJEYXRh''@;'; put 'put ''OltibF19LE5hPXkxLkg/bnVsbDpbImlubmVySFRNTCIsInRleHRDb250ZW50Il07ZnVuY3Rpb24gJDAodCxpLG4scyl7aS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3JldHVybiB0JiZkJiZzMCh0LGQsbixzKX0pfWZ1bmN0aW9uIE5sKHQpe3ZhciBuLGk9dD9udWxsOk5hO2ZvcihuIGluIEUwKSQw''@;'; put 'put ''KHdpbmRvd1tuXSYmd2luZG93W25dLnByb3RvdHlwZSxFMFtuXSx0LGkpfWZ1bmN0aW9uIEZsKHQpe3JldHVybiB0Ll9fc2hhZHlfcHJvdG9Jc1BhdGNoZWQ9ITAsJDAodCxFMC5FdmVudFRhcmdldCksJDAodCxFMC5Ob2RlKSwkMCh0LEUwLkVsZW1lbnQpLCQwKHQsRTAuSFRNTEVsZW1lbnQp''@;'; put 'put ''LCQwKHQsRTAuSFRNTFNsb3RFbGVtZW50KSx0fVsiVGV4dCIsIkNvbW1lbnQiLCJDREFUQVNlY3Rpb24iLCJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBpPXdpbmRvd1t0XSxuPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpO24uX19zaGFkeV9wcm90''@;'; put 'put ''b0lzUGF0Y2hlZD0hMCwkMChuLEUwLkV2ZW50VGFyZ2V0KSwkMChuLEUwLk5vZGUpLEUwW3RdJiYkMChuLEUwW3RdKSxpLnByb3RvdHlwZS5fX3NoYWR5X3BhdGNoZWRQcm90bz1ufSk7dmFyIEZhPXkxLkFhLElhPXkxLkg7ZnVuY3Rpb24gb3QodCxpKXtpZihGYSYmIXQuX19zaGFkeV9wcm90''@;'; put 'put ''b0lzUGF0Y2hlZCYmIWUwKHQpKXt2YXIgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCkscz1uLmhhc093blByb3BlcnR5KCJfX3NoYWR5X3BhdGNoZWRQcm90byIpJiZuLl9fc2hhZHlfcGF0Y2hlZFByb3RvO3N8fChGbChzPU9iamVjdC5jcmVhdGUobikpLG4uX19zaGFkeV9wYXRjaGVkUHJv''@;'; put 'put ''dG89cyksT2JqZWN0LnNldFByb3RvdHlwZU9mKHQscyl9SWF8fCgxPT09aT9lbCh0KToyPT09aSYmbGwodCkpfWZ1bmN0aW9uIElsKHQsaSxuLHMpe290KHQsMSkscz1zfHxudWxsO3ZhciBkPXExKHQpLG09cz9xMShzKTpudWxsO2QucHJldmlvdXNTaWJsaW5nPXM/bS5wcmV2aW91c1NpYmxp''@;'; put 'put ''bmc6aS5fX3NoYWR5X2xhc3RDaGlsZCwobT12MShkLnByZXZpb3VzU2libGluZykpJiYobS5uZXh0U2libGluZz10KSwobT12MShkLm5leHRTaWJsaW5nPXMpKSYmKG0ucHJldmlvdXNTaWJsaW5nPXQpLGQucGFyZW50Tm9kZT1pLHM/cz09PW4uZmlyc3RDaGlsZCYmKG4uZmlyc3RDaGlsZD10''@;'; put 'put ''KToobi5sYXN0Q2hpbGQ9dCxuLmZpcnN0Q2hpbGR8fChuLmZpcnN0Q2hpbGQ9dCkpLG4uY2hpbGROb2Rlcz1udWxsfWZ1bmN0aW9uIHN0KHQsaSl7dmFyIG49cTEodCk7aWYoaXx8dm9pZCAwPT09bi5maXJzdENoaWxkKXtuLmNoaWxkTm9kZXM9bnVsbDt2YXIgcz1uLmZpcnN0Q2hpbGQ9dC5f''@;'; put 'put ''X3NoYWR5X25hdGl2ZV9maXJzdENoaWxkO2ZvcihuLmxhc3RDaGlsZD10Ll9fc2hhZHlfbmF0aXZlX2xhc3RDaGlsZCxvdCh0LDIpLG49cyxzPXZvaWQgMDtuO249bi5fX3NoYWR5X25hdGl2ZV9uZXh0U2libGluZyl7dmFyIGQ9cTEobik7ZC5wYXJlbnROb2RlPWl8fHQsZC5uZXh0U2libGlu''@;'; put 'put ''Zz1uLl9fc2hhZHlfbmF0aXZlX25leHRTaWJsaW5nLGQucHJldmlvdXNTaWJsaW5nPXN8fG51bGwscz1uLG90KG4sMSl9fX12YXIgUGE9bjAoe2FkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxpLG4peyJvYmplY3QiIT10eXBlb2YgbiYmKG49e2NhcHR1cmU6ISFufSksbi5VPW4uVXx8dGhp''@;'; put 'put ''cyx0aGlzLmhvc3QuX19zaGFkeV9hZGRFdmVudExpc3RlbmVyKHQsaSxuKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGksbil7Im9iamVjdCIhPXR5cGVvZiBuJiYobj17Y2FwdHVyZTohIW59KSxuLlU9bi5VfHx0aGlzLHRoaXMuaG9zdC5fX3NoYWR5X3JlbW92ZUV2ZW50TGlz''@;'; put 'put ''dGVuZXIodCxpLG4pfX0pO2Z1bmN0aW9uIGtsKHQsaSl7czAodCxQYSxpKSxzMCh0LHBlLGkpLHMwKHQsZGUsaSksczAodCxDMixpKSx5MS5KJiYhaT8oczAodCxydCxpKSxzMCh0LHVlLGkpKTp5MS5IfHwoczAodCxLdCksczAodCxxdCksczAodCxZdCkpfXZhciBodCxPbD17fSxjMj15MS5k''@;'; put 'put ''ZWZlckNvbm5lY3Rpb25DYWxsYmFja3MmJiJsb2FkaW5nIj09PWRvY3VtZW50LnJlYWR5U3RhdGU7ZnVuY3Rpb24gUGwodCl7dmFyIGk9W107ZG97aS51bnNoaWZ0KHQpfXdoaWxlKHQ9dC5fX3NoYWR5X3BhcmVudE5vZGUpO3JldHVybiBpfWZ1bmN0aW9uIGR0KHQsaSxuKXtpZih0IT09T2wp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiSWxsZWdhbCBjb25zdHJ1Y3RvciIpO3RoaXMuZz1udWxsLEJsKHRoaXMsaSxuKX1mdW5jdGlvbiBCbCh0LGksbil7aWYodC5ob3N0PWksdC5tb2RlPW4mJm4ubW9kZSxzdCh0Lmhvc3QpLChpPXExKHQuaG9zdCkpLnJvb3Q9dCxpLmdiPSJjbG9zZWQiIT09''@;'; put 'put ''dC5tb2RlP3Q6bnVsbCwoaT1xMSh0KSkuZmlyc3RDaGlsZD1pLmxhc3RDaGlsZD1pLnBhcmVudE5vZGU9aS5uZXh0U2libGluZz1pLnByZXZpb3VzU2libGluZz1udWxsLHkxLnByZWZlclBlcmZvcm1hbmNlKWZvcig7aT10Lmhvc3QuX19zaGFkeV9uYXRpdmVfZmlyc3RDaGlsZDspdC5ob3N0''@;'; put 'put ''Ll9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKGkpO2Vsc2UgcTAodCl9ZnVuY3Rpb24gcTAodCl7dC5ZfHwodC5ZPSEwLHFlKGZ1bmN0aW9uKCl7cmV0dXJuIHV0KHQpfSkpfWZ1bmN0aW9uIHV0KHQpe3ZhciBpO2lmKGk9dC5ZKXtmb3IodmFyIG47dDspdC5ZJiYobj10KSxlMCh0PShpPXQp''@;'; put 'put ''Lmhvc3QuX19zaGFkeV9nZXRSb290Tm9kZSgpKSYmKGk9djEoaS5ob3N0KSkmJjA8aS5pYXx8KHQ9dm9pZCAwKTtpPW59KG49aSkmJm4uX3JlbmRlclNlbGYoKX1mdW5jdGlvbiBHbCh0LGksbil7dmFyIHM9cTEoaSksZD1zLnVhO3MudWE9bnVsbCxufHwobj0odD10LmhbaS5fX3NoYWR5X3Ns''@;'; put 'put ''b3R8fCJfX2NhdGNoYWxsIl0pJiZ0WzBdKSxuPyhxMShuKS5hc3NpZ25lZE5vZGVzLnB1c2goaSkscy5hc3NpZ25lZFNsb3Q9bik6cy5hc3NpZ25lZFNsb3Q9dm9pZCAwLGQhPT1zLmFzc2lnbmVkU2xvdCYmcy5hc3NpZ25lZFNsb3QmJihxMShzLmFzc2lnbmVkU2xvdCkueGE9ITApfWZ1bmN0''@;'; put 'put ''aW9uIGpsKHQsaSxuKXtmb3IodmFyIHM9MCxkPXZvaWQgMDtzPG4ubGVuZ3RoJiYoZD1uW3NdKTtzKyspaWYoInNsb3QiPT1kLmxvY2FsTmFtZSl7dmFyIG09djEoZCkuYXNzaWduZWROb2RlczttJiZtLmxlbmd0aCYmamwodCxpLG0pfWVsc2UgaS5wdXNoKG5bc10pfWZ1bmN0aW9uIFJsKHQs''@;'; put 'put ''aSl7aS5fX3NoYWR5X25hdGl2ZV9kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgic2xvdGNoYW5nZSIpKSwoaT12MShpKSkuYXNzaWduZWRTbG90JiZSbCh0LGkuYXNzaWduZWRTbG90KX1mdW5jdGlvbiB6bCh0KXt0Lmk9dC5pfHxbXSx0Lmc9dC5nfHxbXSx0Lmg9dC5ofHx7fX1mdW5jdGlvbiBw''@;'; put 'put ''dCh0KXtpZih0LmkmJnQuaS5sZW5ndGgpe2Zvcih2YXIgbixpPXQuaSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBkPWlbc107c3QoZCk7dmFyIG09ZC5fX3NoYWR5X3BhcmVudE5vZGU7c3QobSksKG09djEobSkpLmlhPShtLmlhfHwwKSsxLG09VWwoZCksdC5oW21dPygobj1ufHx7fSlbbV09''@;'; put 'put ''ITAsdC5oW21dLnB1c2goZCkpOnQuaFttXT1bZF0sdC5nLnB1c2goZCl9aWYobilmb3IodmFyIEwgaW4gbil0LmhbTF09V2wodC5oW0xdKTt0Lmk9W119fWZ1bmN0aW9uIFVsKHQpe3ZhciBpPXQubmFtZXx8dC5nZXRBdHRyaWJ1dGUoIm5hbWUiKXx8Il9fY2F0Y2hhbGwiO3JldHVybiB0LlFh''@;'; put 'put ''PWl9ZnVuY3Rpb24gV2wodCl7cmV0dXJuIHQuc29ydChmdW5jdGlvbihpLG4pe2k9UGwoaSk7Zm9yKHZhciBzPVBsKG4pLGQ9MDtkPGkubGVuZ3RoO2QrKyl7dmFyIG09c1tkXTtpZigobj1pW2RdKSE9PW0pcmV0dXJuKGk9djIobi5fX3NoYWR5X3BhcmVudE5vZGUpKS5pbmRleE9mKG4pLWku''@;'; put 'put ''aW5kZXhPZihtKX19KX1mdW5jdGlvbiAkbCh0KXtyZXR1cm4gcHQodCksISghdC5nfHwhdC5nLmxlbmd0aCl9aWYoZHQucHJvdG90eXBlLl9yZW5kZXJTZWxmPWZ1bmN0aW9uKCl7dmFyIHQ9YzI7aWYoYzI9ITAsdGhpcy5ZPSExLHRoaXMuZyl7cHQodGhpcyk7Zm9yKHZhciBuLGk9MDtpPHRo''@;'; put 'put ''aXMuZy5sZW5ndGg7aSsrKXt2YXIgcz12MShuPXRoaXMuZ1tpXSksZD1zLmFzc2lnbmVkTm9kZXM7aWYocy5hc3NpZ25lZE5vZGVzPVtdLHMuYWE9W10scy5HYT1kKWZvcihzPTA7czxkLmxlbmd0aDtzKyspe3ZhciBtPXYxKGRbc10pO20udWE9bS5hc3NpZ25lZFNsb3QsbS5hc3NpZ25lZFNs''@;'; put 'put ''b3Q9PT1uJiYobS5hc3NpZ25lZFNsb3Q9bnVsbCl9fWZvcihpPXRoaXMuaG9zdC5fX3NoYWR5X2ZpcnN0Q2hpbGQ7aTtpPWkuX19zaGFkeV9uZXh0U2libGluZylHbCh0aGlzLGkpO2ZvcihpPTA7aTx0aGlzLmcubGVuZ3RoO2krKyl7aWYoIShkPXYxKG49dGhpcy5nW2ldKSkuYXNzaWduZWRO''@;'; put 'put ''b2Rlcy5sZW5ndGgpZm9yKHM9bi5fX3NoYWR5X2ZpcnN0Q2hpbGQ7cztzPXMuX19zaGFkeV9uZXh0U2libGluZylHbCh0aGlzLHMsbik7aWYoKHM9KHM9djEobi5fX3NoYWR5X3BhcmVudE5vZGUpKSYmcy5yb290KSYmKCRsKHMpfHxzLlkpJiZzLl9yZW5kZXJTZWxmKCksamwodGhpcyxkLmFh''@;'; put 'put ''LGQuYXNzaWduZWROb2Rlcykscz1kLkdhKXtmb3IobT0wO208cy5sZW5ndGg7bSsrKXYxKHNbbV0pLnVhPW51bGw7ZC5HYT1udWxsLHMubGVuZ3RoPmQuYXNzaWduZWROb2Rlcy5sZW5ndGgmJihkLnhhPSEwKX1kLnhhJiYoZC54YT0hMSxSbCh0aGlzLG4pKX1mb3Iobj10aGlzLmcsaT1bXSxk''@;'; put 'put ''PTA7ZDxuLmxlbmd0aDtkKyspKG09djEocz1uW2RdLl9fc2hhZHlfcGFyZW50Tm9kZSkpJiZtLnJvb3R8fCEoMD5pLmluZGV4T2YocykpfHxpLnB1c2gocyk7Zm9yKG49MDtuPGkubGVuZ3RoO24rKyl7Zm9yKGQ9KG09aVtuXSk9PT10aGlzP3RoaXMuaG9zdDptLHM9W10sbT1tLl9fc2hhZHlf''@;'; put 'put ''Zmlyc3RDaGlsZDttO209bS5fX3NoYWR5X25leHRTaWJsaW5nKWlmKCJzbG90Ij09bS5sb2NhbE5hbWUpZm9yKHZhciBMPXYxKG0pLmFhLEY9MDtGPEwubGVuZ3RoO0YrKylzLnB1c2goTFtGXSk7ZWxzZSBzLnB1c2gobSk7bT1QMihkKSxMPVNhKHMscy5sZW5ndGgsbSxtLmxlbmd0aCk7Zm9y''@;'; put 'put ''KHZhciBHPUY9MCxVPXZvaWQgMDtGPEwubGVuZ3RoJiYoVT1MW0ZdKTtGKyspe2Zvcih2YXIgSz0wLEMxPXZvaWQgMDtLPFUuZ2EubGVuZ3RoJiYoQzE9VS5nYVtLXSk7SysrKUMxLl9fc2hhZHlfbmF0aXZlX3BhcmVudE5vZGU9PT1kJiZkLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKEMx''@;'; put 'put ''KSxtLnNwbGljZShVLmluZGV4K0csMSk7Ry09VS5uYX1mb3IoRz0wLFU9dm9pZCAwO0c8TC5sZW5ndGgmJihVPUxbR10pO0crKylmb3IoRj1tW1UuaW5kZXhdLEs9VS5pbmRleDtLPFUuaW5kZXgrVS5uYTtLKyspZC5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUoQzE9c1tLXSxGKSxtLnNw''@;'; put 'put ''bGljZShLLDAsQzEpfX1pZigheTEucHJlZmVyUGVyZm9ybWFuY2UmJiF0aGlzLkZhKWZvcihpPXRoaXMuaG9zdC5fX3NoYWR5X2ZpcnN0Q2hpbGQ7aTtpPWkuX19zaGFkeV9uZXh0U2libGluZyluPXYxKGkpLGkuX19zaGFkeV9uYXRpdmVfcGFyZW50Tm9kZSE9PXRoaXMuaG9zdHx8InNsb3Qi''@;'; put 'put ''IT09aS5sb2NhbE5hbWUmJm4uYXNzaWduZWRTbG90fHx0aGlzLmhvc3QuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQoaSk7dGhpcy5GYT0hMCxjMj10LGh0JiZodCgpfSxmdW5jdGlvbih0KXt0Ll9fcHJvdG9fXz1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSxrbCh0LCJfX3NoYWR5XyIp''@;'; put 'put ''LGtsKHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQse25vZGVUeXBlOnt2YWx1ZTpOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUsY29uZmlndXJhYmxlOiEwfSxub2RlTmFtZTp7dmFsdWU6IiNkb2N1bWVudC1mcmFnbWVudCIsY29uZmlndXJhYmxlOiEwfSxub2RlVmFsdWU6e3ZhbHVl''@;'; put 'put ''Om51bGwsY29uZmlndXJhYmxlOiEwfX0pLFsibG9jYWxOYW1lIiwibmFtZXNwYWNlVVJJIiwicHJlZml4Il0uZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLHt2YWx1ZTp2b2lkIDAsY29uZmlndXJhYmxlOiEwfSl9KSxbIm93bmVyRG9jdW1lbnQiLCJiYXNl''@;'; put 'put ''VVJJIiwiaXNDb25uZWN0ZWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvc3RbaV19LGNvbmZpZ3VyYWJsZTohMH0pfSl9KGR0LnByb3RvdHlwZSksd2luZG93LmN1c3RvbUVsZW1lbnRzJiZ3aW5k''@;'; put 'put ''b3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lJiZ5MS55YSYmIXkxLnByZWZlclBlcmZvcm1hbmNlKXt2YXIgZnQ9bmV3IE1hcDtodD1mdW5jdGlvbigpe3ZhciB0PVtdO2Z0LmZvckVhY2goZnVuY3Rpb24ocyxkKXt0LnB1c2goW2Qsc10pfSksZnQuY2xlYXIoKTtmb3IodmFyIGk9MDtpPHQubGVu''@;'; put 'put ''Z3RoO2krKyl7dmFyIG49dFtpXVswXTt0W2ldWzFdP24uX19zaGFkeWRvbV9jb25uZWN0ZWRDYWxsYmFjaygpOm4uX19zaGFkeWRvbV9kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX0sYzImJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7YzI9''@;'; put 'put ''ITEsaHQoKX0se29uY2U6ITB9KTt2YXIgamE9d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSxxbD1mdW5jdGlvbih0LGkpe3ZhciBuPWkucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrLHM9aS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s7amEuY2FsbCh3aW5kb3cuY3VzdG9t''@;'; put 'put ''RWxlbWVudHMsdCxmdW5jdGlvbih0LGksbil7dmFyIHM9MCxkPSJfX2lzQ29ubmVjdGVkIitzKys7cmV0dXJuKGl8fG4pJiYodC5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2s9dC5wcm90b3R5cGUuX19zaGFkeWRvbV9jb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe2MyP2Z0LnNldCh0''@;'; put 'put ''aGlzLCEwKTp0aGlzW2RdfHwodGhpc1tkXT0hMCxpJiZpLmNhbGwodGhpcykpfSx0LnByb3RvdHlwZS5kaXNjb25uZWN0ZWRDYWxsYmFjaz10LnByb3RvdHlwZS5fX3NoYWR5ZG9tX2Rpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7YzI/dGhpcy5pc0Nvbm5lY3RlZHx8ZnQuc2V0KHRo''@;'; put 'put ''aXMsITEpOnRoaXNbZF0mJih0aGlzW2RdPSExLG4mJm4uY2FsbCh0aGlzKSl9KSx0fShpLG4scykpLGkucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPW4saS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s9c307d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZT1xbCxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkod2luZG93LkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5wcm90b3R5cGUsImRlZmluZSIse3ZhbHVlOnFsLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIG0yKHQpe2lmKGUwKHQ9dC5fX3NoYWR5X2dldFJvb3ROb2RlKCkpKXJldHVybiB0fWZ1bmN0aW9uIE0yKHQpe3Ro''@;'; put 'put ''aXMubm9kZT10fWZ1bmN0aW9uIFlsKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShNMi5wcm90b3R5cGUsdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVsiX19zaGFkeV8iK3RdfSxzZXQ6ZnVuY3Rpb24oaSl7dGhpcy5ub2RlWyJfX3NoYWR5XyIrdF09aX0sY29uZmlndXJhYmxl''@;'; put 'put ''OiEwfSl9KFg9TTIucHJvdG90eXBlKS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsaSxuKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfYWRkRXZlbnRMaXN0ZW5lcih0LGksbil9LFgucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGksbil7cmV0dXJuIHRoaXMubm9kZS5fX3No''@;'; put 'put ''YWR5X3JlbW92ZUV2ZW50TGlzdGVuZXIodCxpLG4pfSxYLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9hcHBlbmRDaGlsZCh0KX0sWC5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfaW5zZXJ0QmVmb3Jl''@;'; put 'put ''KHQsaSl9LFgucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3JlbW92ZUNoaWxkKHQpfSxYLnJlcGxhY2VDaGlsZD1mdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9yZXBsYWNlQ2hpbGQodCxpKX0sWC5jbG9uZU5vZGU9ZnVuY3Rp''@;'; put 'put ''b24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2Nsb25lTm9kZSh0KX0sWC5nZXRSb290Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZ2V0Um9vdE5vZGUodCl9LFguY29udGFpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2NvbnRh''@;'; put 'put ''aW5zKHQpfSxYLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2Rpc3BhdGNoRXZlbnQodCl9LFguc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsaSl7dGhpcy5ub2RlLl9fc2hhZHlfc2V0QXR0cmlidXRlKHQsaSl9LFguZ2V0QXR0cmlidXRlPWZ1bmN0''@;'; put 'put ''aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9uYXRpdmVfZ2V0QXR0cmlidXRlKHQpfSxYLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfbmF0aXZlX2hhc0F0dHJpYnV0ZSh0KX0sWC5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7dGhp''@;'; put 'put ''cy5ub2RlLl9fc2hhZHlfcmVtb3ZlQXR0cmlidXRlKHQpfSxYLmF0dGFjaFNoYWRvdz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfYXR0YWNoU2hhZG93KHQpfSxYLmZvY3VzPWZ1bmN0aW9uKCl7dGhpcy5ub2RlLl9fc2hhZHlfbmF0aXZlX2ZvY3VzKCl9LFguYmx1cj1m''@;'; put 'put ''dW5jdGlvbigpe3RoaXMubm9kZS5fX3NoYWR5X2JsdXIoKX0sWC5pbXBvcnROb2RlPWZ1bmN0aW9uKHQsaSl7aWYodGhpcy5ub2RlLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9OT0RFKXJldHVybiB0aGlzLm5vZGUuX19zaGFkeV9pbXBvcnROb2RlKHQsaSl9LFguZ2V0RWxlbWVudEJ5SWQ9''@;'; put 'put ''ZnVuY3Rpb24odCl7aWYodGhpcy5ub2RlLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9OT0RFKXJldHVybiB0aGlzLm5vZGUuX19zaGFkeV9nZXRFbGVtZW50QnlJZCh0KX0sWC5lbGVtZW50c0Zyb21Qb2ludD1mdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9lbGVtZW50''@;'; put 'put ''c0Zyb21Qb2ludCh0LGkpfSxYLmVsZW1lbnRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZWxlbWVudEZyb21Qb2ludCh0LGkpfSxYLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3F1ZXJ5U2VsZWN0b3Io''@;'; put 'put ''dCl9LFgucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9xdWVyeVNlbGVjdG9yQWxsKHQsaSl9LFguYXNzaWduZWROb2Rlcz1mdW5jdGlvbih0KXtpZigic2xvdCI9PT10aGlzLm5vZGUubG9jYWxOYW1lKXJldHVybiB0aGlzLm5vZGUuX19z''@;'; put 'put ''aGFkeV9hc3NpZ25lZE5vZGVzKHQpfSxYLmFwcGVuZD1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2FwcGVuZC5hcHBseSh0aGlzLm5vZGUsYyhpKSl9LFgucHJlcGVu''@;'; put 'put ''ZD1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3ByZXBlbmQuYXBwbHkodGhpcy5ub2RlLGMoaSkpfSxYLmFmdGVyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxuPTA7''@;'; put 'put ''bjxhcmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfYWZ0ZXIuYXBwbHkodGhpcy5ub2RlLGMoaSkpfSxYLmJlZm9yZT1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1''@;'; put 'put ''bWVudHNbbl07cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2JlZm9yZS5hcHBseSh0aGlzLm5vZGUsYyhpKSl9LFgucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3JlbW92ZSgpfSxYLnJlcGxhY2VXaXRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxuPTA7bjxh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcmVwbGFjZVdpdGguYXBwbHkodGhpcy5ub2RlLGMoaSkpfSxlLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE0yLnByb3RvdHlwZSx7YWN0aXZlRWxlbWVudDp7Y29uZmlndXJhYmxl''@;'; put 'put ''OiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoZTAodGhpcy5ub2RlKXx8dGhpcy5ub2RlLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9OT0RFKXJldHVybiB0aGlzLm5vZGUuX19zaGFkeV9hY3RpdmVFbGVtZW50fX0sX2FjdGl2ZUVsZW1lbnQ6e2NvbmZpZ3VyYWJsZTohMCxl''@;'; put 'put ''bnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZUVsZW1lbnR9fSxob3N0Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihlMCh0aGlzLm5vZGUpKXJldHVybiB0aGlzLm5vZGUuaG9zdH19LHBhcmVudE5vZGU6e2NvbmZp''@;'; put 'put ''Z3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9wYXJlbnROb2RlfX0sZmlyc3RDaGlsZDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2ZpcnN0''@;'; put 'put ''Q2hpbGR9fSxsYXN0Q2hpbGQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9sYXN0Q2hpbGR9fSxuZXh0U2libGluZzp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMubm9kZS5fX3NoYWR5X25leHRTaWJsaW5nfX0scHJldmlvdXNTaWJsaW5nOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcHJldmlvdXNTaWJsaW5nfX0sY2hpbGROb2Rlczp7Y29uZmlndXJhYmxlOiEw''@;'; put 'put ''LGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2NoaWxkTm9kZXN9fSxwYXJlbnRFbGVtZW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcGFyZW50RWxlbWVu''@;'; put 'put ''dH19LGZpcnN0RWxlbWVudENoaWxkOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZmlyc3RFbGVtZW50Q2hpbGR9fSxsYXN0RWxlbWVudENoaWxkOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfbGFzdEVsZW1lbnRDaGlsZH19LG5leHRFbGVtZW50U2libGluZzp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X25leHRFbGVtZW50U2libGluZ319''@;'; put 'put ''LHByZXZpb3VzRWxlbWVudFNpYmxpbmc6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9wcmV2aW91c0VsZW1lbnRTaWJsaW5nfX0sY2hpbGRyZW46e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9jaGlsZHJlbn19LGNoaWxkRWxlbWVudENvdW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfY2hpbGRFbGVtZW50Q291bnR9fSxzaGFkb3dSb290''@;'; put 'put ''Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfc2hhZG93Um9vdH19LGFzc2lnbmVkU2xvdDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3No''@;'; put 'put ''YWR5X2Fzc2lnbmVkU2xvdH19LGlzQ29ubmVjdGVkOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfaXNDb25uZWN0ZWR9fSxpbm5lckhUTUw6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9pbm5lckhUTUx9LHNldDpmdW5jdGlvbih0KXt0aGlzLm5vZGUuX19zaGFkeV9pbm5lckhUTUw9dH19LHRleHRDb250ZW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2Rl''@;'; put 'put ''Ll9fc2hhZHlfdGV4dENvbnRlbnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLm5vZGUuX19zaGFkeV90ZXh0Q29udGVudD10fX0sc2xvdDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3Nsb3R9LHNldDpmdW5jdGlv''@;'; put 'put ''bih0KXt0aGlzLm5vZGUuX19zaGFkeV9zbG90PXR9fSxjbGFzc05hbWU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9jbGFzc05hbWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLm5vZGUuX19zaGFkeV9jbGFzc05h''@;'; put 'put ''bWU9dH19fSkscGwuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gWWwodCl9KSxmbC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBZbCh0KX0pO3ZhciBLbD1uZXcgV2Vha01hcDtmdW5jdGlvbiBYbCh0KXtpZihlMCh0KXx8dCBpbnN0YW5jZW9mIE0yKXJldHVybiB0O3ZhciBpPUtsLmdl''@;'; put 'put ''dCh0KTtyZXR1cm4gaXx8KGk9bmV3IE0yKHQpLEtsLnNldCh0LGkpKSxpfWlmKHkxLnlhKXt2YXIgUWw9eTEuSD9mdW5jdGlvbih0KXtyZXR1cm4gdH06ZnVuY3Rpb24odCl7cmV0dXJuIGxsKHQpLGVsKHQpLHR9LFJhPXtpblVzZTp5MS55YSxwYXRjaDpRbCxpc1NoYWR5Um9vdDplMCxlbnF1''@;'; put 'put ''ZXVlOnFlLGZsdXNoOmV0LGZsdXNoSW5pdGlhbDpmdW5jdGlvbih0KXshdC5GYSYmdC5ZJiZ1dCh0KX0sc2V0dGluZ3M6eTEsZmlsdGVyTXV0YXRpb25zOmZ1bmN0aW9uIHVhKHQsaSl7dmFyIG49aS5nZXRSb290Tm9kZSgpO3JldHVybiB0Lm1hcChmdW5jdGlvbihzKXt2YXIgZD1uPT09cy50''@;'; put 'put ''YXJnZXQuZ2V0Um9vdE5vZGUoKTtpZihkJiZzLmFkZGVkTm9kZXMpe2lmKGQ9W10uc2xpY2UuY2FsbChzLmFkZGVkTm9kZXMpLmZpbHRlcihmdW5jdGlvbihtKXtyZXR1cm4gbj09PW0uZ2V0Um9vdE5vZGUoKX0pLGQubGVuZ3RoKXJldHVybiBzPU9iamVjdC5jcmVhdGUocyksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KHMsImFkZGVkTm9kZXMiLHt2YWx1ZTpkLGNvbmZpZ3VyYWJsZTohMH0pLHN9ZWxzZSBpZihkKXJldHVybiBzfSkuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiBzfSl9LG9ic2VydmVDaGlsZHJlbjpmdW5jdGlvbiBoYSh0LGkpe3ZhciBuPXExKHQpO24uZWF8fChuLmVh''@;'; put 'put ''PW5ldyBqdCksbi5lYS5vYS5hZGQoaSk7dmFyIHM9bi5lYTtyZXR1cm57UmE6aSxYOnMsU2E6dCx0YWtlUmVjb3JkczpmdW5jdGlvbigpe3JldHVybiBzLnRha2VSZWNvcmRzKCl9fX0sdW5vYnNlcnZlQ2hpbGRyZW46ZnVuY3Rpb24gZGEodCl7dmFyIGk9dCYmdC5YO2kmJihpLm9hLmRlbGV0''@;'; put 'put ''ZSh0LlJhKSxpLm9hLnNpemV8fChxMSh0LlNhKS5lYT1udWxsKSl9LGRlZmVyQ29ubmVjdGlvbkNhbGxiYWNrczp5MS5kZWZlckNvbm5lY3Rpb25DYWxsYmFja3MscHJlZmVyUGVyZm9ybWFuY2U6eTEucHJlZmVyUGVyZm9ybWFuY2UsaGFuZGxlc0R5bmFtaWNTY29waW5nOiEwLHdyYXA6eTEu''@;'; put 'put ''Sj9YbDpRbCx3cmFwSWZOZWVkZWQ6ITA9PT15MS5KP1hsOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxXcmFwcGVyOk0yLGNvbXBvc2VkUGF0aDpmdW5jdGlvbiBWYSh0KXtyZXR1cm4gdC5fX2NvbXBvc2VkUGF0aHx8KHQuX19jb21wb3NlZFBhdGg9aXQodC50YXJnZXQsITApKSx0Ll9fY29tcG9z''@;'; put 'put ''ZWRQYXRofSxub1BhdGNoOnkxLkoscGF0Y2hPbkRlbWFuZDp5MS5BYSxuYXRpdmVNZXRob2RzOnp0LG5hdGl2ZVRyZWU6WGUscGF0Y2hFbGVtZW50UHJvdG86Rmx9O3dpbmRvdy5TaGFkeURPTT1SYSxmdW5jdGlvbiB2YSgpe3ZhciB0PVsiZGlzcGF0Y2hFdmVudCIsImFkZEV2ZW50TGlzdGVu''@;'; put 'put ''ZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl07d2luZG93LkV2ZW50VGFyZ2V0PyhjMCh3aW5kb3cuRXZlbnRUYXJnZXQucHJvdG90eXBlLHQpLHZvaWQgMD09PXdpbmRvdy5fX3NoYWR5X25hdGl2ZV9hZGRFdmVudExpc3RlbmVyJiZjMChXaW5kb3cucHJvdG90eXBlLHQpKTooYzAoTm9kZS5w''@;'; put 'put ''cm90b3R5cGUsdCksYzAoV2luZG93LnByb3RvdHlwZSx0KSksbHQ/YzAoTm9kZS5wcm90b3R5cGUsInBhcmVudE5vZGUgZmlyc3RDaGlsZCBsYXN0Q2hpbGQgcHJldmlvdXNTaWJsaW5nIG5leHRTaWJsaW5nIGNoaWxkTm9kZXMgcGFyZW50RWxlbWVudCB0ZXh0Q29udGVudCIuc3BsaXQoIiAi''@;'; put 'put ''KSk6RzIoTm9kZS5wcm90b3R5cGUse3BhcmVudE5vZGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB5MC5jdXJyZW50Tm9kZT10aGlzLHkwLnBhcmVudE5vZGUoKX19LGZpcnN0Q2hpbGQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB5MC5jdXJyZW50Tm9kZT10aGlzLHkwLmZpcnN0Q2hpbGQoKX19''@;'; put 'put ''LGxhc3RDaGlsZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkwLmN1cnJlbnROb2RlPXRoaXMseTAubGFzdENoaWxkKCl9fSxwcmV2aW91c1NpYmxpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB5MC5jdXJyZW50Tm9kZT10aGlzLHkwLnByZXZpb3VzU2libGluZygpfX0sbmV4dFNpYmxpbmc6''@;'; put 'put ''e2dldDpmdW5jdGlvbigpe3JldHVybiB5MC5jdXJyZW50Tm9kZT10aGlzLHkwLm5leHRTaWJsaW5nKCl9fSxjaGlsZE5vZGVzOntnZXQ6ZnVuY3Rpb24oKXt2YXIgaT1bXTt5MC5jdXJyZW50Tm9kZT10aGlzO2Zvcih2YXIgbj15MC5maXJzdENoaWxkKCk7bjspaS5wdXNoKG4pLG49eTAubmV4''@;'; put 'put ''dFNpYmxpbmcoKTtyZXR1cm4gaX19LHBhcmVudEVsZW1lbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBMMC5jdXJyZW50Tm9kZT10aGlzLEwwLnBhcmVudE5vZGUoKX19LHRleHRDb250ZW50OntnZXQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5ub2RlVHlwZSl7Y2FzZSBOb2RlLkVMRU1FTlRf''@;'; put 'put ''Tk9ERTpjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERTpmb3IodmFyIHMsaT1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRoaXMsTm9kZUZpbHRlci5TSE9XX1RFWFQsbnVsbCwhMSksbj0iIjtzPWkubmV4dE5vZGUoKTspbis9cy5ub2RlVmFsdWU7cmV0dXJuIG47ZGVmYXVsdDpy''@;'; put 'put ''ZXR1cm4gdGhpcy5ub2RlVmFsdWV9fSxzZXQ6ZnVuY3Rpb24oaSl7c3dpdGNoKG51bGw9PWkmJihpPSIiKSx0aGlzLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOkplKHRoaXMpLCgwPGkubGVuZ3RofHx0aGlzLm5vZGVU''@;'; put 'put ''eXBlPT09Tm9kZS5FTEVNRU5UX05PREUpJiZ0aGlzLl9fc2hhZHlfbmF0aXZlX2luc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpKSx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6dGhpcy5ub2RlVmFsdWU9aX19fX0pLGMwKE5vZGUucHJvdG90eXBlLCJhcHBlbmRDaGlsZCBpbnNl''@;'; put 'put ''cnRCZWZvcmUgcmVtb3ZlQ2hpbGQgcmVwbGFjZUNoaWxkIGNsb25lTm9kZSBjb250YWlucyIuc3BsaXQoIiAiKSksYzAoSFRNTEVsZW1lbnQucHJvdG90eXBlLFsicGFyZW50RWxlbWVudCIsImNvbnRhaW5zIl0pLHQ9e2ZpcnN0RWxlbWVudENoaWxkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''TDAuY3VycmVudE5vZGU9dGhpcyxMMC5maXJzdENoaWxkKCl9fSxsYXN0RWxlbWVudENoaWxkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTDAuY3VycmVudE5vZGU9dGhpcyxMMC5sYXN0Q2hpbGQoKX19LGNoaWxkcmVuOntnZXQ6ZnVuY3Rpb24oKXt2YXIgaT1bXTtMMC5jdXJyZW50Tm9kZT10''@;'; put 'put ''aGlzO2Zvcih2YXIgbj1MMC5maXJzdENoaWxkKCk7bjspaS5wdXNoKG4pLG49TDAubmV4dFNpYmxpbmcoKTtyZXR1cm4gQjAoaSl9fSxjaGlsZEVsZW1lbnRDb3VudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4/dGhpcy5jaGlsZHJlbi5sZW5ndGg6MH19fSxsdD8oYzAo''@;'; put 'put ''RWxlbWVudC5wcm90b3R5cGUsV3QpLGMwKEVsZW1lbnQucHJvdG90eXBlLFsicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRFbGVtZW50U2libGluZyIsImlubmVySFRNTCIsImNsYXNzTmFtZSJdKSxjMChIVE1MRWxlbWVudC5wcm90b3R5cGUsWyJjaGlsZHJlbiIsImlubmVySFRNTCIs''@;'; put 'put ''ImNsYXNzTmFtZSJdKSk6KEcyKEVsZW1lbnQucHJvdG90eXBlLHQpLEcyKEVsZW1lbnQucHJvdG90eXBlLHtwcmV2aW91c0VsZW1lbnRTaWJsaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTDAuY3VycmVudE5vZGU9dGhpcyxMMC5wcmV2aW91c1NpYmxpbmcoKX19LG5leHRFbGVtZW50U2li''@;'; put 'put ''bGluZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEwwLmN1cnJlbnROb2RlPXRoaXMsTDAubmV4dFNpYmxpbmcoKX19LGlubmVySFRNTDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJ0KHRoaXMsUDIpfSxzZXQ6ZnVuY3Rpb24oaSl7dmFyIG49InRlbXBsYXRlIj09PXRoaXMubG9jYWxOYW1lP3Ro''@;'; put 'put ''aXMuY29udGVudDp0aGlzO0plKG4pO3ZhciBzPXRoaXMubG9jYWxOYW1lfHwiZGl2Ijtmb3IoKHM9dGhpcy5uYW1lc3BhY2VVUkkmJnRoaXMubmFtZXNwYWNlVVJJIT09VXQubmFtZXNwYWNlVVJJP1V0LmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5hbWVzcGFjZVVSSSxzKTpVdC5jcmVhdGVFbGVt''@;'; put 'put ''ZW50KHMpKS5pbm5lckhUTUw9aSxpPSJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZT9zLmNvbnRlbnQ6cztzPWkuX19zaGFkeV9uYXRpdmVfZmlyc3RDaGlsZDspbi5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUocyx2b2lkIDApfX0sY2xhc3NOYW1lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifSxzZXQ6ZnVuY3Rpb24oaSl7dGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixpKX19fSkpLGMwKEVsZW1lbnQucHJvdG90eXBlLCJzZXRBdHRyaWJ1dGUgZ2V0QXR0cmlidXRlIGhhc0F0dHJpYnV0ZSByZW1vdmVBdHRyaWJ1dGUgZm9j''@;'; put 'put ''dXMgYmx1ciIuc3BsaXQoIiAiKSksYzAoRWxlbWVudC5wcm90b3R5cGUsJHQpLGMwKEhUTUxFbGVtZW50LnByb3RvdHlwZSxbImZvY3VzIiwiYmx1ciJdKSx3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudCYmYzAod2luZG93LkhUTUxUZW1wbGF0ZUVsZW1lbnQucHJvdG90eXBlLFsiaW5uZXJI''@;'; put 'put ''VE1MIl0pLGx0P2MwKERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLFd0KTpHMihEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSx0KSxjMChEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSwkdCksbHQ/KGMwKERvY3VtZW50LnByb3RvdHlwZSxXdCksYzAoRG9jdW1lbnQucHJvdG90eXBlLFsi''@;'; put 'put ''YWN0aXZlRWxlbWVudCJdKSk6RzIoRG9jdW1lbnQucHJvdG90eXBlLHQpLGMwKERvY3VtZW50LnByb3RvdHlwZSxbImltcG9ydE5vZGUiLCJnZXRFbGVtZW50QnlJZCIsImVsZW1lbnRGcm9tUG9pbnQiLE8wKCldKSxjMChEb2N1bWVudC5wcm90b3R5cGUsJHQpfSgpLE5sKCJfX3NoYWR5XyIp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwiX2FjdGl2ZUVsZW1lbnQiLHBlLmFjdGl2ZUVsZW1lbnQpLHMwKFdpbmRvdy5wcm90b3R5cGUsVGwsIl9fc2hhZHlfIikseTEuSj95MS5BYSYmczAoRWxlbWVudC5wcm90b3R5cGUseGwpOihObCgpLGZ1bmN0aW9uIExhKCl7aWYoIVF0''@;'; put 'put ''JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV2ZW50LnByb3RvdHlwZSwiaXNUcnVzdGVkIikpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIGk9bmV3IE1vdXNlRXZlbnQoImNsaWNrIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNvbXBvc2VkOiEwfSk7dGhpcy5fX3NoYWR5X2Rp''@;'; put 'put ''c3BhdGNoRXZlbnQoaSl9O0VsZW1lbnQucHJvdG90eXBlLmNsaWNrP0VsZW1lbnQucHJvdG90eXBlLmNsaWNrPXQ6SFRNTEVsZW1lbnQucHJvdG90eXBlLmNsaWNrJiYoSFRNTEVsZW1lbnQucHJvdG90eXBlLmNsaWNrPXQpfX0oKSksZnVuY3Rpb24gbWEoKXtmb3IodmFyIHQgaW4gbmwpd2lu''@;'; put 'put ''ZG93Ll9fc2hhZHlfbmF0aXZlX2FkZEV2ZW50TGlzdGVuZXIodCxmdW5jdGlvbihpKXtpLl9fdGFyZ2V0fHwoaWUoaSksc2woaSkpfSwhMCl9KCksd2luZG93LkV2ZW50PU1hLHdpbmRvdy5DdXN0b21FdmVudD1aYSx3aW5kb3cuTW91c2VFdmVudD15YSx3aW5kb3cuU2hhZG93Um9vdD1kdH12''@;'; put 'put ''YXIgZmU9d2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50LGdlPXdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE5TLHphPXdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZSxVYT13aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLnByZXBl''@;'; put 'put ''bmQsV2E9d2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5hcHBlbmQsJGE9d2luZG93LkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnByZXBlbmQscWE9d2luZG93LkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZCxKbD13aW5kb3cuTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLGd0''@;'; put 'put ''PXdpbmRvdy5Ob2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCx0aT13aW5kb3cuTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLEFlPXdpbmRvdy5Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxlaT13aW5kb3cuTm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkLHZlPU9iamVjdC5nZXRPd25Q''@;'; put 'put ''cm9wZXJ0eURlc2NyaXB0b3Iod2luZG93Lk5vZGUucHJvdG90eXBlLCJ0ZXh0Q29udGVudCIpLGxpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hdHRhY2hTaGFkb3csSGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUsImlubmVySFRN''@;'; put 'put ''TCIpLENlPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUsaWk9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZSxhaT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlLEF0PXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRy''@;'; put 'put ''aWJ1dGVOUyxyaT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMsbmk9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TLGNpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEVsZW1lbnQsb2k9d2luZG93LkVsZW1lbnQu''@;'; put 'put ''cHJvdG90eXBlLmluc2VydEFkamFjZW50SFRNTCxZYT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUucHJlcGVuZCxLYT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kLHNpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5iZWZvcmUsaGk9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFm''@;'; put 'put ''dGVyLGRpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlV2l0aCx1aT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlLFhhPXdpbmRvdy5IVE1MRWxlbWVudCxWZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdy5IVE1MRWxlbWVudC5wcm90b3R5cGUs''@;'; put 'put ''ImlubmVySFRNTCIpLHBpPXdpbmRvdy5IVE1MRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRFbGVtZW50LGZpPXdpbmRvdy5IVE1MRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1MLGdpPW5ldyBTZXQ7ZnVuY3Rpb24gQWkodCl7dmFyIGk9Z2kuaGFzKHQpO3JldHVy''@;'; put 'put ''biB0PS9eW2Etel1bLjAtOV9hLXpdKi1bLS4wLTlfYS16XSokLy50ZXN0KHQpLCFpJiZ0fSJhbm5vdGF0aW9uLXhtbCBjb2xvci1wcm9maWxlIGZvbnQtZmFjZSBmb250LWZhY2Utc3JjIGZvbnQtZmFjZS11cmkgZm9udC1mYWNlLWZvcm1hdCBmb250LWZhY2UtbmFtZSBtaXNzaW5nLWdseXBo''@;'; put 'put ''Ii5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGdpLmFkZCh0KX0pO3ZhciBRYT1kb2N1bWVudC5jb250YWlucz9kb2N1bWVudC5jb250YWlucy5iaW5kKGRvY3VtZW50KTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMuYmluZChkb2N1bWVudC5kb2N1bWVu''@;'; put 'put ''dEVsZW1lbnQpO2Z1bmN0aW9uIHIwKHQpe3ZhciBpPXQuaXNDb25uZWN0ZWQ7aWYodm9pZCAwIT09aSlyZXR1cm4gaTtpZihRYSh0KSlyZXR1cm4hMDtmb3IoO3QmJiEodC5fX0NFX2lzSW1wb3J0RG9jdW1lbnR8fHQgaW5zdGFuY2VvZiBEb2N1bWVudCk7KXQ9dC5wYXJlbnROb2RlfHwod2lu''@;'; put 'put ''ZG93LlNoYWRvd1Jvb3QmJnQgaW5zdGFuY2VvZiBTaGFkb3dSb290P3QuaG9zdDp2b2lkIDApO3JldHVybiEoIXR8fCEodC5fX0NFX2lzSW1wb3J0RG9jdW1lbnR8fHQgaW5zdGFuY2VvZiBEb2N1bWVudCkpfWZ1bmN0aW9uIG1lKHQpe3ZhciBpPXQuY2hpbGRyZW47aWYoaSlyZXR1cm4gQXJy''@;'; put 'put ''YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaSk7Zm9yKGk9W10sdD10LmZpcnN0Q2hpbGQ7dDt0PXQubmV4dFNpYmxpbmcpdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZpLnB1c2godCk7cmV0dXJuIGl9ZnVuY3Rpb24gTWUodCxpKXtmb3IoO2kmJmkhPT10JiYhaS5uZXh0U2libGlu''@;'; put 'put ''ZzspaT1pLnBhcmVudE5vZGU7cmV0dXJuIGkmJmkhPT10P2kubmV4dFNpYmxpbmc6bnVsbH1mdW5jdGlvbiBaZSh0LGksbil7Zm9yKHZhciBzPXQ7czspe2lmKHMubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIGQ9cztpKGQpO3ZhciBtPWQubG9jYWxOYW1lO2lmKCJsaW5rIj09''@;'; put 'put ''PW0mJiJpbXBvcnQiPT09ZC5nZXRBdHRyaWJ1dGUoInJlbCIpKXtpZihzPWQuaW1wb3J0LHZvaWQgMD09PW4mJihuPW5ldyBTZXQpLHMgaW5zdGFuY2VvZiBOb2RlJiYhbi5oYXMocykpZm9yKG4uYWRkKHMpLHM9cy5maXJzdENoaWxkO3M7cz1zLm5leHRTaWJsaW5nKVplKHMsaSxuKTtzPU1l''@;'; put 'put ''KHQsZCk7Y29udGludWV9aWYoInRlbXBsYXRlIj09PW0pe3M9TWUodCxkKTtjb250aW51ZX1pZihkPWQuX19DRV9zaGFkb3dSb290KWZvcihkPWQuZmlyc3RDaGlsZDtkO2Q9ZC5uZXh0U2libGluZylaZShkLGksbil9cz1zLmZpcnN0Q2hpbGQ/cy5maXJzdENoaWxkOk1lKHQscyl9fWZ1bmN0''@;'; put 'put ''aW9uIHZ0KCl7dmFyIHQ9IShudWxsPT1qMHx8IWowLm5vRG9jdW1lbnRDb25zdHJ1Y3Rpb25PYnNlcnZlciksaT0hKG51bGw9PWowfHwhajAuc2hhZHlEb21GYXN0V2Fsayk7dGhpcy5jYT1bXSx0aGlzLmc9W10sdGhpcy5XPSExLHRoaXMuc2hhZHlEb21GYXN0V2Fsaz1pLHRoaXMubmI9IXR9''@;'; put 'put ''ZnVuY3Rpb24gVTIodCxpLG4scyl7dmFyIGQ9d2luZG93LlNoYWR5RE9NO2lmKHQuc2hhZHlEb21GYXN0V2FsayYmZCYmZC5pblVzZSl7aWYoaS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZuKGkpLGkucXVlcnlTZWxlY3RvckFsbClmb3IodD1kLm5hdGl2ZU1ldGhvZHMucXVlcnlT''@;'; put 'put ''ZWxlY3RvckFsbC5jYWxsKGksIioiKSxpPTA7aTx0Lmxlbmd0aDtpKyspbih0W2ldKX1lbHNlIFplKGksbixzKX1mdW5jdGlvbiB5ZSh0LGkpe3QuVyYmVTIodCxpLGZ1bmN0aW9uKG4pe3JldHVybiBaMih0LG4pfSl9ZnVuY3Rpb24gWjIodCxpKXtpZih0LlcmJiFpLl9fQ0VfcGF0Y2hlZCl7''@;'; put 'put ''aS5fX0NFX3BhdGNoZWQ9ITA7Zm9yKHZhciBuPTA7bjx0LmNhLmxlbmd0aDtuKyspdC5jYVtuXShpKTtmb3Iobj0wO248dC5nLmxlbmd0aDtuKyspdC5nW25dKGkpfX1mdW5jdGlvbiBHMCh0LGkpe3ZhciBuPVtdO2ZvcihVMih0LGksZnVuY3Rpb24oZCl7cmV0dXJuIG4ucHVzaChkKX0pLGk9''@;'; put 'put ''MDtpPG4ubGVuZ3RoO2krKyl7dmFyIHM9bltpXTsxPT09cy5fX0NFX3N0YXRlP3QuY29ubmVjdGVkQ2FsbGJhY2socyk6SHQodCxzKX19ZnVuY3Rpb24gUzAodCxpKXt2YXIgbj1bXTtmb3IoVTIodCxpLGZ1bmN0aW9uKGQpe3JldHVybiBuLnB1c2goZCl9KSxpPTA7aTxuLmxlbmd0aDtpKysp''@;'; put 'put ''e3ZhciBzPW5baV07MT09PXMuX19DRV9zdGF0ZSYmdC5kaXNjb25uZWN0ZWRDYWxsYmFjayhzKX19ZnVuY3Rpb24gWTAodCxpLG4pe3ZhciBzPShuPXZvaWQgMD09PW4/e306bikub2IsZD1uLnVwZ3JhZGV8fGZ1bmN0aW9uKEwpe3JldHVybiBIdCh0LEwpfSxtPVtdO2ZvcihVMih0LGksZnVu''@;'; put 'put ''Y3Rpb24oTCl7aWYodC5XJiZaMih0LEwpLCJsaW5rIj09PUwubG9jYWxOYW1lJiYiaW1wb3J0Ij09PUwuZ2V0QXR0cmlidXRlKCJyZWwiKSl7dmFyIEY9TC5pbXBvcnQ7RiBpbnN0YW5jZW9mIE5vZGUmJihGLl9fQ0VfaXNJbXBvcnREb2N1bWVudD0hMCxGLl9fQ0VfcmVnaXN0cnk9ZG9jdW1l''@;'; put 'put ''bnQuX19DRV9yZWdpc3RyeSksRiYmImNvbXBsZXRlIj09PUYucmVhZHlTdGF0ZT9GLl9fQ0VfZG9jdW1lbnRMb2FkSGFuZGxlZD0hMDpMLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7dmFyIEc9TC5pbXBvcnQ7aWYoIUcuX19DRV9kb2N1bWVudExvYWRIYW5kbGVkKXtHLl9f''@;'; put 'put ''Q0VfZG9jdW1lbnRMb2FkSGFuZGxlZD0hMDt2YXIgVT1uZXcgU2V0O3MmJihzLmZvckVhY2goZnVuY3Rpb24oSyl7cmV0dXJuIFUuYWRkKEspfSksVS5kZWxldGUoRykpLFkwKHQsRyx7b2I6VSx1cGdyYWRlOmR9KX19KX1lbHNlIG0ucHVzaChMKX0scyksaT0wO2k8bS5sZW5ndGg7aSsrKWQo''@;'; put 'put ''bVtpXSl9ZnVuY3Rpb24gSHQodCxpKXt0cnl7dmFyIG49aS5vd25lckRvY3VtZW50LHM9bi5fX0NFX3JlZ2lzdHJ5LGQ9cyYmKG4uZGVmYXVsdFZpZXd8fG4uX19DRV9pc0ltcG9ydERvY3VtZW50KT9DdChzLGkubG9jYWxOYW1lKTp2b2lkIDA7aWYoZCYmdm9pZCAwPT09aS5fX0NFX3N0YXRl''@;'; put 'put ''KXtkLmNvbnN0cnVjdGlvblN0YWNrLnB1c2goaSk7dHJ5e3RyeXtpZihuZXcgZC5jb25zdHJ1Y3RvckZ1bmN0aW9uIT09aSl0aHJvdyBFcnJvcigiVGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGRpZCBub3QgcHJvZHVjZSB0aGUgZWxlbWVudCBiZWluZyB1cGdyYWRlZC4iKX1maW5h''@;'; put 'put ''bGx5e2QuY29uc3RydWN0aW9uU3RhY2sucG9wKCl9fWNhdGNoKEcpe3Rocm93IGkuX19DRV9zdGF0ZT0yLEd9aWYoaS5fX0NFX3N0YXRlPTEsaS5fX0NFX2RlZmluaXRpb249ZCxkLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayYmaS5oYXNBdHRyaWJ1dGVzKCkpe3ZhciBtPWQub2JzZXJ2ZWRB''@;'; put 'put ''dHRyaWJ1dGVzO2ZvcihkPTA7ZDxtLmxlbmd0aDtkKyspe3ZhciBMPW1bZF0sRj1pLmdldEF0dHJpYnV0ZShMKTtudWxsIT09RiYmdC5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soaSxMLG51bGwsRixudWxsKX19cjAoaSkmJnQuY29ubmVjdGVkQ2FsbGJhY2soaSl9fWNhdGNoKEcpe3kyKEcp''@;'; put 'put ''fX1mdW5jdGlvbiB2aSh0LGksbixzKXt2YXIgZD1pLl9fQ0VfcmVnaXN0cnk7aWYoZCYmKG51bGw9PT1zfHwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1zKSYmKGQ9Q3QoZCxuKSkpdHJ5e3ZhciBtPW5ldyBkLmNvbnN0cnVjdG9yRnVuY3Rpb247aWYodm9pZCAwPT09bS5fX0NF''@;'; put 'put ''X3N0YXRlfHx2b2lkIDA9PT1tLl9fQ0VfZGVmaW5pdGlvbil0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnIituKyInOiBUaGUgcmV0dXJuZWQgdmFsdWUgd2FzIG5vdCBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBIVE1MRWxlbWVudCBjb25zdHJ1Y3Rvci4iKTtpZigiaHR0cDovL3d3''@;'; put 'put ''dy53My5vcmcvMTk5OS94aHRtbCIhPT1tLm5hbWVzcGFjZVVSSSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnIituKyInOiBUaGUgY29uc3RydWN0ZWQgZWxlbWVudCdzIG5hbWVzcGFjZSBtdXN0IGJlIHRoZSBIVE1MIG5hbWVzcGFjZS4iKTtpZihtLmhhc0F0dHJpYnV0ZXMo''@;'; put 'put ''KSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnIituKyInOiBUaGUgY29uc3RydWN0ZWQgZWxlbWVudCBtdXN0IG5vdCBoYXZlIGFueSBhdHRyaWJ1dGVzLiIpO2lmKG51bGwhPT1tLmZpcnN0Q2hpbGQpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrbisiJzog''@;'; put 'put ''VGhlIGNvbnN0cnVjdGVkIGVsZW1lbnQgbXVzdCBub3QgaGF2ZSBhbnkgY2hpbGRyZW4uIik7aWYobnVsbCE9PW0ucGFyZW50Tm9kZSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnIituKyInOiBUaGUgY29uc3RydWN0ZWQgZWxlbWVudCBtdXN0IG5vdCBoYXZlIGEgcGFyZW50''@;'; put 'put ''IG5vZGUuIik7aWYobS5vd25lckRvY3VtZW50IT09aSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnIituKyInOiBUaGUgY29uc3RydWN0ZWQgZWxlbWVudCdzIG93bmVyIGRvY3VtZW50IGlzIGluY29ycmVjdC4iKTtpZihtLmxvY2FsTmFtZSE9PW4pdGhyb3cgRXJyb3IoIkZh''@;'; put 'put ''aWxlZCB0byBjb25zdHJ1Y3QgJyIrbisiJzogVGhlIGNvbnN0cnVjdGVkIGVsZW1lbnQncyBsb2NhbCBuYW1lIGlzIGluY29ycmVjdC4iKTtyZXR1cm4gbX1jYXRjaChMKXtyZXR1cm4geTIoTCksaT1udWxsPT09cz9mZS5jYWxsKGksbik6Z2UuY2FsbChpLHMsbiksT2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mKGksSFRNTFVua25vd25FbGVtZW50LnByb3RvdHlwZSksaS5fX0NFX3N0YXRlPTIsaS5fX0NFX2RlZmluaXRpb249dm9pZCAwLFoyKHQsaSksaX1yZXR1cm4gWjIodCxpPW51bGw9PT1zP2ZlLmNhbGwoaSxuKTpnZS5jYWxsKGkscyxuKSksaX1mdW5jdGlvbiB5Mih0KXt2YXIgaT10''@;'; put 'put ''Lm1lc3NhZ2Usbj10LnNvdXJjZVVSTHx8dC5maWxlTmFtZXx8IiIscz10LmxpbmV8fHQubGluZU51bWJlcnx8MCxtPXZvaWQgMDt2b2lkIDA9PT1FcnJvckV2ZW50LnByb3RvdHlwZS5pbml0RXJyb3JFdmVudD9tPW5ldyBFcnJvckV2ZW50KCJlcnJvciIse2NhbmNlbGFibGU6ITAsbWVzc2Fn''@;'; put 'put ''ZTppLGZpbGVuYW1lOm4sbGluZW5vOnMsY29sbm86dC5jb2x1bW58fHQuY29sdW1uTnVtYmVyfHwwLGVycm9yOnR9KTooKG09ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkVycm9yRXZlbnQiKSkuaW5pdEVycm9yRXZlbnQoImVycm9yIiwhMSwhMCxpLG4scyksbS5wcmV2ZW50RGVmYXVsdD1mdW5j''@;'; put 'put ''dGlvbigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkZWZhdWx0UHJldmVudGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pfSksdm9pZCAwPT09bS5lcnJvciYmT2JqZWN0LmRlZmluZVByb3BlcnR5KG0sImVycm9yIix7Y29uZmlndXJhYmxlOiEw''@;'; put 'put ''LGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9fSksd2luZG93LmRpc3BhdGNoRXZlbnQobSksbS5kZWZhdWx0UHJldmVudGVkfHxjb25zb2xlLmVycm9yKHQpfWZ1bmN0aW9uIEhpKCl7dmFyIHQ9dGhpczt0aGlzLkk9dm9pZCAwLHRoaXMuSGE9bmV3IFByb21pc2UoZnVu''@;'; put 'put ''Y3Rpb24oaSl7dC5nPWl9KX1mdW5jdGlvbiBDaSh0KXt2YXIgaT1kb2N1bWVudDt0aGlzLlg9dm9pZCAwLHRoaXMuUz10LHRoaXMuZz1pLFkwKHRoaXMuUyx0aGlzLmcpLCJsb2FkaW5nIj09PXRoaXMuZy5yZWFkeVN0YXRlJiYodGhpcy5YPW5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuaC5i''@;'; put 'put ''aW5kKHRoaXMpKSx0aGlzLlgub2JzZXJ2ZSh0aGlzLmcse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSkpfWZ1bmN0aW9uIFZpKHQpe3QuWCYmdC5YLmRpc2Nvbm5lY3QoKX1mdW5jdGlvbiB2MCh0KXt0aGlzLmthPW5ldyBNYXAsdGhpcy5sYT1uZXcgTWFwLHRoaXMuQ2E9bmV3IE1hcCx0aGlz''@;'; put 'put ''LnRhPSExLHRoaXMud2E9bmV3IE1hcCx0aGlzLmphPWZ1bmN0aW9uKGkpe3JldHVybiBpKCl9LHRoaXMuVj0hMSx0aGlzLm1hPVtdLHRoaXMuUz10LHRoaXMuRGE9dC5uYj9uZXcgQ2kodCk6dm9pZCAwfWZ1bmN0aW9uIG1pKHQsaSl7aWYoIUFpKGkpKXRocm93IG5ldyBTeW50YXhFcnJvcigi''@;'; put 'put ''VGhlIGVsZW1lbnQgbmFtZSAnIitpKyInIGlzIG5vdCB2YWxpZC4iKTtpZihDdCh0LGkpKXRocm93IEVycm9yKCJBIGN1c3RvbSBlbGVtZW50IHdpdGggbmFtZSAnIitpKyInIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZC4iKTtpZih0LnRhKXRocm93IEVycm9yKCJBIGN1c3RvbSBlbGVtZW50''@;'; put 'put ''IGlzIGFscmVhZHkgYmVpbmcgZGVmaW5lZC4iKX1mdW5jdGlvbiBNaSh0LGksbil7dmFyIHM7dC50YT0hMDt0cnl7dmFyIGQ9bi5wcm90b3R5cGU7aWYoIShkIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IncyBw''@;'; put 'put ''cm90b3R5cGUgaXMgbm90IGFuIG9iamVjdC4iKTt2YXIgbT1mdW5jdGlvbihLKXt2YXIgQzE9ZFtLXTtpZih2b2lkIDAhPT1DMSYmIShDMSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl0aHJvdyBFcnJvcigiVGhlICciK0srIicgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3JldHVybiBD''@;'; put 'put ''MX0sTD1tKCJjb25uZWN0ZWRDYWxsYmFjayIpLEY9bSgiZGlzY29ubmVjdGVkQ2FsbGJhY2siKSxHPW0oImFkb3B0ZWRDYWxsYmFjayIpLFU9KHM9bSgiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIikpJiZuLm9ic2VydmVkQXR0cmlidXRlc3x8W119Y2F0Y2goSyl7dGhyb3cgS31maW5hbGx5''@;'; put 'put ''e3QudGE9ITF9cmV0dXJuIHQubGEuc2V0KGksbj17bG9jYWxOYW1lOmksY29uc3RydWN0b3JGdW5jdGlvbjpuLGNvbm5lY3RlZENhbGxiYWNrOkwsZGlzY29ubmVjdGVkQ2FsbGJhY2s6RixhZG9wdGVkQ2FsbGJhY2s6RyxhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s6cyxvYnNlcnZlZEF0dHJp''@;'; put 'put ''YnV0ZXM6VSxjb25zdHJ1Y3Rpb25TdGFjazpbXX0pLHQuQ2Euc2V0KG4uY29uc3RydWN0b3JGdW5jdGlvbixuKSxufWZ1bmN0aW9uIFppKHQpe2lmKCExIT09dC5WKXt0LlY9ITE7Zm9yKHZhciBpPVtdLG49dC5tYSxzPW5ldyBNYXAsZD0wO2Q8bi5sZW5ndGg7ZCsrKXMuc2V0KG5bZF0sW10p''@;'; put 'put ''O2ZvcihZMCh0LlMsZG9jdW1lbnQse3VwZ3JhZGU6ZnVuY3Rpb24oRyl7aWYodm9pZCAwPT09Ry5fX0NFX3N0YXRlKXt2YXIgVT1HLmxvY2FsTmFtZSxLPXMuZ2V0KFUpO0s/Sy5wdXNoKEcpOnQubGEuaGFzKFUpJiZpLnB1c2goRyl9fX0pLGQ9MDtkPGkubGVuZ3RoO2QrKylIdCh0LlMsaVtk''@;'; put 'put ''XSk7Zm9yKGQ9MDtkPG4ubGVuZ3RoO2QrKyl7Zm9yKHZhciBtPW5bZF0sTD1zLmdldChtKSxGPTA7RjxMLmxlbmd0aDtGKyspSHQodC5TLExbRl0pOyhtPXQud2EuZ2V0KG0pKSYmbS5yZXNvbHZlKHZvaWQgMCl9bi5sZW5ndGg9MH19ZnVuY3Rpb24gQ3QodCxpKXt2YXIgbj10LmxhLmdldChp''@;'; put 'put ''KTtpZihuKXJldHVybiBuO2lmKG49dC5rYS5nZXQoaSkpe3Qua2EuZGVsZXRlKGkpO3RyeXtyZXR1cm4gTWkodCxpLG4oKSl9Y2F0Y2gocyl7eTIocyl9fX1mdW5jdGlvbiBMZSh0LGksbil7ZnVuY3Rpb24gcyhkKXtyZXR1cm4gZnVuY3Rpb24obSl7Zm9yKHZhciBMPVtdLEY9MDtGPGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg7KytGKUxbRl09YXJndW1lbnRzW0ZdO0Y9W107Zm9yKHZhciBHPVtdLFU9MDtVPEwubGVuZ3RoO1UrKyl7dmFyIEs9TFtVXTtpZihLIGluc3RhbmNlb2YgRWxlbWVudCYmcjAoSykmJkcucHVzaChLKSxLIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudClmb3IoSz1LLmZp''@;'; put 'put ''cnN0Q2hpbGQ7SztLPUsubmV4dFNpYmxpbmcpRi5wdXNoKEspO2Vsc2UgRi5wdXNoKEspfWZvcihkLmFwcGx5KHRoaXMsTCksTD0wO0w8Ry5sZW5ndGg7TCsrKVMwKHQsR1tMXSk7aWYocjAodGhpcykpZm9yKEw9MDtMPEYubGVuZ3RoO0wrKykoRz1GW0xdKWluc3RhbmNlb2YgRWxlbWVudCYm''@;'; put 'put ''RzAodCxHKX19dm9pZCAwIT09bi5wcmVwZW5kJiYoaS5wcmVwZW5kPXMobi5wcmVwZW5kKSksdm9pZCAwIT09bi5hcHBlbmQmJihpLmFwcGVuZD1zKG4uYXBwZW5kKSl9dnQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKHQpe3ZhciBpPXQuX19DRV9kZWZpbml0aW9uO2lm''@;'; put 'put ''KGkuY29ubmVjdGVkQ2FsbGJhY2spdHJ5e2kuY29ubmVjdGVkQ2FsbGJhY2suY2FsbCh0KX1jYXRjaChuKXt5MihuKX19LHZ0LnByb3RvdHlwZS5kaXNjb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbih0KXt2YXIgaT10Ll9fQ0VfZGVmaW5pdGlvbjtpZihpLmRpc2Nvbm5lY3RlZENhbGxiYWNr''@;'; put 'put ''KXRyeXtpLmRpc2Nvbm5lY3RlZENhbGxiYWNrLmNhbGwodCl9Y2F0Y2gobil7eTIobil9fSx2dC5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrPWZ1bmN0aW9uKHQsaSxuLHMsZCl7dmFyIG09dC5fX0NFX2RlZmluaXRpb247aWYobS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sm''@;'; put 'put ''Ji0xPG0ub2JzZXJ2ZWRBdHRyaWJ1dGVzLmluZGV4T2YoaSkpdHJ5e20uYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrLmNhbGwodCxpLG4scyxkKX1jYXRjaChMKXt5MihMKX19LEhpLnByb3RvdHlwZS5yZXNvbHZlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuSSl0aHJvdyBFcnJvcigiQWxyZWFkeSBy''@;'; put 'put ''ZXNvbHZlZC4iKTt0aGlzLkk9dCx0aGlzLmcodCl9LENpLnByb3RvdHlwZS5oPWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZy5yZWFkeVN0YXRlO2ZvcigiaW50ZXJhY3RpdmUiIT09aSYmImNvbXBsZXRlIiE9PWl8fFZpKHRoaXMpLGk9MDtpPHQubGVuZ3RoO2krKylmb3IodmFyIG49dFtpXS5h''@;'; put 'put ''ZGRlZE5vZGVzLHM9MDtzPG4ubGVuZ3RoO3MrKylZMCh0aGlzLlMsbltzXSl9LChYPXYwLnByb3RvdHlwZSkuZWI9ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzO2lmKCEoaSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rv''@;'; put 'put ''ciBnZXR0ZXJzIG11c3QgYmUgZnVuY3Rpb25zLiIpO21pKHRoaXMsdCksdGhpcy5rYS5zZXQodCxpKSx0aGlzLm1hLnB1c2godCksdGhpcy5WfHwodGhpcy5WPSEwLHRoaXMuamEoZnVuY3Rpb24oKXtyZXR1cm4gWmkobil9KSl9LFguZGVmaW5lPWZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcztp''@;'; put 'put ''ZighKGkgaW5zdGFuY2VvZiBGdW5jdGlvbikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3JzIG11c3QgYmUgZnVuY3Rpb25zLiIpO21pKHRoaXMsdCksTWkodGhpcyx0LGkpLHRoaXMubWEucHVzaCh0KSx0aGlzLlZ8fCh0aGlzLlY9ITAsdGhpcy5qYShm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBaaShuKX0pKX0sWC51cGdyYWRlPWZ1bmN0aW9uKHQpe1kwKHRoaXMuUyx0KX0sWC5nZXQ9ZnVuY3Rpb24odCl7aWYodD1DdCh0aGlzLHQpKXJldHVybiB0LmNvbnN0cnVjdG9yRnVuY3Rpb259LFgud2hlbkRlZmluZWQ9ZnVuY3Rpb24odCl7aWYoIUFpKHQpKXJl''@;'; put 'put ''dHVybiBQcm9taXNlLnJlamVjdChuZXcgU3ludGF4RXJyb3IoIiciK3QrIicgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgbmFtZS4iKSk7dmFyIGk9dGhpcy53YS5nZXQodCk7aWYoaSlyZXR1cm4gaS5IYTtpPW5ldyBIaSx0aGlzLndhLnNldCh0LGkpO3ZhciBuPXRoaXMubGEuaGFz''@;'; put 'put ''KHQpfHx0aGlzLmthLmhhcyh0KTtyZXR1cm4gdD0tMT09PXRoaXMubWEuaW5kZXhPZih0KSxuJiZ0JiZpLnJlc29sdmUodm9pZCAwKSxpLkhhfSxYLnBvbHlmaWxsV3JhcEZsdXNoQ2FsbGJhY2s9ZnVuY3Rpb24odCl7dGhpcy5EYSYmVmkodGhpcy5EYSk7dmFyIGk9dGhpcy5qYTt0aGlzLmph''@;'; put 'put ''PWZ1bmN0aW9uKG4pe3JldHVybiB0KGZ1bmN0aW9uKCl7cmV0dXJuIGkobil9KX19LHdpbmRvdy5DdXN0b21FbGVtZW50UmVnaXN0cnk9djAsdjAucHJvdG90eXBlLmRlZmluZT12MC5wcm90b3R5cGUuZGVmaW5lLHYwLnByb3RvdHlwZS51cGdyYWRlPXYwLnByb3RvdHlwZS51cGdyYWRlLHYw''@;'; put 'put ''LnByb3RvdHlwZS5nZXQ9djAucHJvdG90eXBlLmdldCx2MC5wcm90b3R5cGUud2hlbkRlZmluZWQ9djAucHJvdG90eXBlLndoZW5EZWZpbmVkLHYwLnByb3RvdHlwZS5wb2x5ZmlsbERlZmluZUxhenk9djAucHJvdG90eXBlLmViLHYwLnByb3RvdHlwZS5wb2x5ZmlsbFdyYXBGbHVzaENhbGxi''@;'; put 'put ''YWNrPXYwLnByb3RvdHlwZS5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrO3ZhciB5aT17fSxqMD13aW5kb3cuY3VzdG9tRWxlbWVudHM7ZnVuY3Rpb24gTGkoKXt2YXIgdD1uZXcgdnQ7KGZ1bmN0aW9uIGFyKHQpe2Z1bmN0aW9uIGkoKXt2YXIgbj10aGlzLmNvbnN0cnVjdG9yLHM9ZG9jdW1l''@;'; put 'put ''bnQuX19DRV9yZWdpc3RyeS5DYS5nZXQobik7aWYoIXMpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudDogVGhlIGNvbnN0cnVjdG9yIHdhcyBub3QgcmVnaXN0ZXJlZCB3aXRoIGBjdXN0b21FbGVtZW50c2AuIik7dmFyIGQ9cy5jb25zdHJ1Y3Rpb25T''@;'; put 'put ''dGFjaztpZigwPT09ZC5sZW5ndGgpcmV0dXJuIGQ9ZmUuY2FsbChkb2N1bWVudCxzLmxvY2FsTmFtZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGQsbi5wcm90b3R5cGUpLGQuX19DRV9zdGF0ZT0xLGQuX19DRV9kZWZpbml0aW9uPXMsWjIodCxkKSxkO3ZhciBtPWQubGVuZ3RoLTEsTD1kW21d''@;'; put 'put ''O2lmKEw9PT15aSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnIitzLmxvY2FsTmFtZSsiJzogVGhpcyBlbGVtZW50IHdhcyBhbHJlYWR5IGNvbnN0cnVjdGVkLiIpO3JldHVybiBkW21dPXlpLE9iamVjdC5zZXRQcm90b3R5cGVPZihMLG4ucHJvdG90eXBlKSxaMih0LEwpLEx9''@;'; put 'put ''aS5wcm90b3R5cGU9WGEucHJvdG90eXBlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MRWxlbWVudC5wcm90b3R5cGUsImNvbnN0cnVjdG9yIix7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6aX0pLHdpbmRvdy5IVE1MRWxlbWVudD1pfSkodCksZnVu''@;'; put 'put ''Y3Rpb24gZXIodCl7RG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oaSl7cmV0dXJuIHZpKHQsdGhpcyxpLG51bGwpfSxEb2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZT1mdW5jdGlvbihpLG4pe3JldHVybiBpPXphLmNhbGwodGhpcyxpLCEhbiksdGhpcy5fX0NF''@;'; put 'put ''X3JlZ2lzdHJ5P1kwKHQsaSk6eWUodCxpKSxpfSxEb2N1bWVudC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE5TPWZ1bmN0aW9uKGksbil7cmV0dXJuIHZpKHQsdGhpcyxuLGkpfSxMZSh0LERvY3VtZW50LnByb3RvdHlwZSx7cHJlcGVuZDpVYSxhcHBlbmQ6V2F9KX0odCksTGUodCxEb2N1bWVu''@;'; put 'put ''dEZyYWdtZW50LnByb3RvdHlwZSx7cHJlcGVuZDokYSxhcHBlbmQ6cWF9KSxmdW5jdGlvbiBycih0KXtmdW5jdGlvbiBpKG4scyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInRleHRDb250ZW50Iix7ZW51bWVyYWJsZTpzLmVudW1lcmFibGUsY29uZmlndXJhYmxlOiEwLGdldDpzLmdldCxz''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oZCl7aWYodGhpcy5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXMuc2V0LmNhbGwodGhpcyxkKTtlbHNle3ZhciBtPXZvaWQgMDtpZih0aGlzLmZpcnN0Q2hpbGQpe3ZhciBMPXRoaXMuY2hpbGROb2RlcyxGPUwubGVuZ3RoO2lmKDA8RiYmcjAodGhpcykpe209QXJyYXko''@;'; put 'put ''Rik7Zm9yKHZhciBHPTA7RzxGO0crKyltW0ddPUxbR119fWlmKHMuc2V0LmNhbGwodGhpcyxkKSxtKWZvcihkPTA7ZDxtLmxlbmd0aDtkKyspUzAodCxtW2RdKX19fSl9Tm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKG4scyl7aWYobiBpbnN0YW5jZW9mIERvY3VtZW50RnJh''@;'; put 'put ''Z21lbnQpe3ZhciBkPW1lKG4pO2lmKG49dGkuY2FsbCh0aGlzLG4scykscjAodGhpcykpZm9yKHM9MDtzPGQubGVuZ3RoO3MrKylHMCh0LGRbc10pO3JldHVybiBufXJldHVybiBkPW4gaW5zdGFuY2VvZiBFbGVtZW50JiZyMChuKSxzPXRpLmNhbGwodGhpcyxuLHMpLGQmJlMwKHQsbikscjAo''@;'; put 'put ''dGhpcykmJkcwKHQsbiksc30sTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24obil7aWYobiBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpe3ZhciBzPW1lKG4pO2lmKG49Z3QuY2FsbCh0aGlzLG4pLHIwKHRoaXMpKWZvcih2YXIgZD0wO2Q8cy5sZW5ndGg7ZCsrKUcwKHQs''@;'; put 'put ''c1tkXSk7cmV0dXJuIG59cmV0dXJuIHM9biBpbnN0YW5jZW9mIEVsZW1lbnQmJnIwKG4pLGQ9Z3QuY2FsbCh0aGlzLG4pLHMmJlMwKHQsbikscjAodGhpcykmJkcwKHQsbiksZH0sTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlPWZ1bmN0aW9uKG4pe3JldHVybiBuPUpsLmNhbGwodGhpcywhIW4p''@;'; put 'put ''LHRoaXMub3duZXJEb2N1bWVudC5fX0NFX3JlZ2lzdHJ5P1kwKHQsbik6eWUodCxuKSxufSxOb2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihuKXt2YXIgcz1uIGluc3RhbmNlb2YgRWxlbWVudCYmcjAobiksZD1BZS5jYWxsKHRoaXMsbik7cmV0dXJuIHMmJlMwKHQsbiksZH0s''@;'; put 'put ''Tm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkPWZ1bmN0aW9uKG4scyl7aWYobiBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpe3ZhciBkPW1lKG4pO2lmKG49ZWkuY2FsbCh0aGlzLG4scykscjAodGhpcykpZm9yKFMwKHQscykscz0wO3M8ZC5sZW5ndGg7cysrKUcwKHQsZFtzXSk7cmV0''@;'; put 'put ''dXJuIG59ZD1uIGluc3RhbmNlb2YgRWxlbWVudCYmcjAobik7dmFyIG09ZWkuY2FsbCh0aGlzLG4scyksTD1yMCh0aGlzKTtyZXR1cm4gTCYmUzAodCxzKSxkJiZTMCh0LG4pLEwmJkcwKHQsbiksbX0sdmUmJnZlLmdldD9pKE5vZGUucHJvdG90eXBlLHZlKTpmdW5jdGlvbiBKYSh0LGkpe3Qu''@;'; put 'put ''Vz0hMCx0LmNhLnB1c2goaSl9KHQsZnVuY3Rpb24obil7aShuLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHM9W10sZD10aGlzLmZpcnN0Q2hpbGQ7ZDtkPWQubmV4dFNpYmxpbmcpZC5ub2RlVHlwZSE9PU5vZGUuQ09NTUVOVF9OT0RFJiZz''@;'; put 'put ''LnB1c2goZC50ZXh0Q29udGVudCk7cmV0dXJuIHMuam9pbigiIil9LHNldDpmdW5jdGlvbihzKXtmb3IoO3RoaXMuZmlyc3RDaGlsZDspQWUuY2FsbCh0aGlzLHRoaXMuZmlyc3RDaGlsZCk7bnVsbCE9cyYmIiIhPT1zJiZndC5jYWxsKHRoaXMsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocykp''@;'; put 'put ''fX0pfSl9KHQpLGZ1bmN0aW9uIGlyKHQpe2Z1bmN0aW9uIGkoZCxtKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwiaW5uZXJIVE1MIix7ZW51bWVyYWJsZTptLmVudW1lcmFibGUsY29uZmlndXJhYmxlOiEwLGdldDptLmdldCxzZXQ6ZnVuY3Rpb24oTCl7dmFyIEY9dGhpcyxHPXZvaWQgMDtp''@;'; put 'put ''ZihyMCh0aGlzKSYmKEc9W10sVTIodCx0aGlzLGZ1bmN0aW9uKEMxKXtDMSE9PUYmJkcucHVzaChDMSl9KSksbS5zZXQuY2FsbCh0aGlzLEwpLEcpZm9yKHZhciBVPTA7VTxHLmxlbmd0aDtVKyspe3ZhciBLPUdbVV07MT09PUsuX19DRV9zdGF0ZSYmdC5kaXNjb25uZWN0ZWRDYWxsYmFjayhL''@;'; put 'put ''KX1yZXR1cm4gdGhpcy5vd25lckRvY3VtZW50Ll9fQ0VfcmVnaXN0cnk/WTAodCx0aGlzKTp5ZSh0LHRoaXMpLEx9fSl9ZnVuY3Rpb24gbihkLG0pe2QuaW5zZXJ0QWRqYWNlbnRFbGVtZW50PWZ1bmN0aW9uKEwsRil7dmFyIEc9cjAoRik7cmV0dXJuIEw9bS5jYWxsKHRoaXMsTCxGKSxHJiZT''@;'; put 'put ''MCh0LEYpLHIwKEwpJiZHMCh0LEYpLEx9fWZ1bmN0aW9uIHMoZCxtKXtmdW5jdGlvbiBMKEYsRyl7Zm9yKHZhciBVPVtdO0YhPT1HO0Y9Ri5uZXh0U2libGluZylVLnB1c2goRik7Zm9yKEc9MDtHPFUubGVuZ3RoO0crKylZMCh0LFVbR10pfWQuaW5zZXJ0QWRqYWNlbnRIVE1MPWZ1bmN0aW9u''@;'; put 'put ''KEYsRyl7aWYoImJlZm9yZWJlZ2luIj09PShGPUYudG9Mb3dlckNhc2UoKSkpe3ZhciBVPXRoaXMucHJldmlvdXNTaWJsaW5nO20uY2FsbCh0aGlzLEYsRyksTChVfHx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCx0aGlzKX1lbHNlIGlmKCJhZnRlcmJlZ2luIj09PUYpVT10aGlzLmZpcnN0''@;'; put 'put ''Q2hpbGQsbS5jYWxsKHRoaXMsRixHKSxMKHRoaXMuZmlyc3RDaGlsZCxVKTtlbHNlIGlmKCJiZWZvcmVlbmQiPT09RilVPXRoaXMubGFzdENoaWxkLG0uY2FsbCh0aGlzLEYsRyksTChVfHx0aGlzLmZpcnN0Q2hpbGQsbnVsbCk7ZWxzZXtpZigiYWZ0ZXJlbmQiIT09Ril0aHJvdyBuZXcgU3lu''@;'; put 'put ''dGF4RXJyb3IoIlRoZSB2YWx1ZSBwcm92aWRlZCAoIitTdHJpbmcoRikrIikgaXMgbm90IG9uZSBvZiAnYmVmb3JlYmVnaW4nLCAnYWZ0ZXJiZWdpbicsICdiZWZvcmVlbmQnLCBvciAnYWZ0ZXJlbmQnLiIpO1U9dGhpcy5uZXh0U2libGluZyxtLmNhbGwodGhpcyxGLEcpLEwodGhpcy5uZXh0''@;'; put 'put ''U2libGluZyxVKX19fWxpJiYoRWxlbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93PWZ1bmN0aW9uKGQpe2lmKGQ9bGkuY2FsbCh0aGlzLGQpLHQuVyYmIWQuX19DRV9wYXRjaGVkKXtkLl9fQ0VfcGF0Y2hlZD0hMDtmb3IodmFyIG09MDttPHQuY2EubGVuZ3RoO20rKyl0LmNhW21dKGQpfXJl''@;'; put 'put ''dHVybiB0aGlzLl9fQ0Vfc2hhZG93Um9vdD1kfSksSGUmJkhlLmdldD9pKEVsZW1lbnQucHJvdG90eXBlLEhlKTpWZSYmVmUuZ2V0P2koSFRNTEVsZW1lbnQucHJvdG90eXBlLFZlKTpmdW5jdGlvbiB0cih0LGkpe3QuVz0hMCx0LmcucHVzaChpKX0odCxmdW5jdGlvbihkKXtpKGQse2VudW1l''@;'; put 'put ''cmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBKbC5jYWxsKHRoaXMsITApLmlubmVySFRNTH0sc2V0OmZ1bmN0aW9uKG0pe3ZhciBMPSJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZSxGPUw/dGhpcy5jb250ZW50OnRoaXMsRz1nZS5jYWxsKGRvY3VtZW50''@;'; put 'put ''LHRoaXMubmFtZXNwYWNlVVJJLHRoaXMubG9jYWxOYW1lKTtmb3IoRy5pbm5lckhUTUw9bTswPEYuY2hpbGROb2Rlcy5sZW5ndGg7KUFlLmNhbGwoRixGLmNoaWxkTm9kZXNbMF0pO2ZvcihtPUw/Ry5jb250ZW50Okc7MDxtLmNoaWxkTm9kZXMubGVuZ3RoOylndC5jYWxsKEYsbS5jaGlsZE5v''@;'; put 'put ''ZGVzWzBdKX19KX0pLEVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbihkLG0pe2lmKDEhPT10aGlzLl9fQ0Vfc3RhdGUpcmV0dXJuIGlpLmNhbGwodGhpcyxkLG0pO3ZhciBMPUNlLmNhbGwodGhpcyxkKTtpaS5jYWxsKHRoaXMsZCxtKSxtPUNlLmNhbGwodGhpcyxkKSx0''@;'; put 'put ''LmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0aGlzLGQsTCxtLG51bGwpfSxFbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOUz1mdW5jdGlvbihkLG0sTCl7aWYoMSE9PXRoaXMuX19DRV9zdGF0ZSlyZXR1cm4gcmkuY2FsbCh0aGlzLGQsbSxMKTt2YXIgRj1BdC5jYWxsKHRoaXMsZCxt''@;'; put 'put ''KTtyaS5jYWxsKHRoaXMsZCxtLEwpLEw9QXQuY2FsbCh0aGlzLGQsbSksdC5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodGhpcyxtLEYsTCxkKX0sRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKGQpe2lmKDEhPT10aGlzLl9fQ0Vfc3RhdGUpcmV0dXJuIGFpLmNh''@;'; put 'put ''bGwodGhpcyxkKTt2YXIgbT1DZS5jYWxsKHRoaXMsZCk7YWkuY2FsbCh0aGlzLGQpLG51bGwhPT1tJiZ0LmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0aGlzLGQsbSxudWxsLG51bGwpfSxFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlvbihkLG0pe2lmKDEhPT10''@;'; put 'put ''aGlzLl9fQ0Vfc3RhdGUpcmV0dXJuIG5pLmNhbGwodGhpcyxkLG0pO3ZhciBMPUF0LmNhbGwodGhpcyxkLG0pO25pLmNhbGwodGhpcyxkLG0pO3ZhciBGPUF0LmNhbGwodGhpcyxkLG0pO0whPT1GJiZ0LmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0aGlzLG0sTCxGLGQpfSxwaT9uKEhUTUxF''@;'; put 'put ''bGVtZW50LnByb3RvdHlwZSxwaSk6Y2kmJm4oRWxlbWVudC5wcm90b3R5cGUsY2kpLGZpP3MoSFRNTEVsZW1lbnQucHJvdG90eXBlLGZpKTpvaSYmcyhFbGVtZW50LnByb3RvdHlwZSxvaSksTGUodCxFbGVtZW50LnByb3RvdHlwZSx7cHJlcGVuZDpZYSxhcHBlbmQ6S2F9KSxmdW5jdGlvbiBs''@;'; put 'put ''cih0KXtmdW5jdGlvbiBpKHMpe3JldHVybiBmdW5jdGlvbihkKXtmb3IodmFyIG09W10sTD0wO0w8YXJndW1lbnRzLmxlbmd0aDsrK0wpbVtMXT1hcmd1bWVudHNbTF07TD1bXTtmb3IodmFyIEY9W10sRz0wO0c8bS5sZW5ndGg7RysrKXt2YXIgVT1tW0ddO2lmKFUgaW5zdGFuY2VvZiBFbGVt''@;'; put 'put ''ZW50JiZyMChVKSYmRi5wdXNoKFUpLFUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KWZvcihVPVUuZmlyc3RDaGlsZDtVO1U9VS5uZXh0U2libGluZylMLnB1c2goVSk7ZWxzZSBMLnB1c2goVSl9Zm9yKHMuYXBwbHkodGhpcyxtKSxtPTA7bTxGLmxlbmd0aDttKyspUzAodCxGW21dKTtp''@;'; put 'put ''ZihyMCh0aGlzKSlmb3IobT0wO208TC5sZW5ndGg7bSsrKShGPUxbbV0paW5zdGFuY2VvZiBFbGVtZW50JiZHMCh0LEYpfX12YXIgbj1FbGVtZW50LnByb3RvdHlwZTt2b2lkIDAhPT1zaSYmKG4uYmVmb3JlPWkoc2kpKSx2b2lkIDAhPT1oaSYmKG4uYWZ0ZXI9aShoaSkpLHZvaWQgMCE9PWRp''@;'; put 'put ''JiYobi5yZXBsYWNlV2l0aD1mdW5jdGlvbihzKXtmb3IodmFyIGQ9W10sbT0wO208YXJndW1lbnRzLmxlbmd0aDsrK20pZFttXT1hcmd1bWVudHNbbV07bT1bXTtmb3IodmFyIEw9W10sRj0wO0Y8ZC5sZW5ndGg7RisrKXt2YXIgRz1kW0ZdO2lmKEcgaW5zdGFuY2VvZiBFbGVtZW50JiZyMChH''@;'; put 'put ''KSYmTC5wdXNoKEcpLEcgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KWZvcihHPUcuZmlyc3RDaGlsZDtHO0c9Ry5uZXh0U2libGluZyltLnB1c2goRyk7ZWxzZSBtLnB1c2goRyl9Zm9yKEY9cjAodGhpcyksZGkuYXBwbHkodGhpcyxkKSxkPTA7ZDxMLmxlbmd0aDtkKyspUzAodCxMW2Rd''@;'; put 'put ''KTtpZihGKWZvcihTMCh0LHRoaXMpLGQ9MDtkPG0ubGVuZ3RoO2QrKykoTD1tW2RdKWluc3RhbmNlb2YgRWxlbWVudCYmRzAodCxMKX0pLHZvaWQgMCE9PXVpJiYobi5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgcz1yMCh0aGlzKTt1aS5jYWxsKHRoaXMpLHMmJlMwKHQsdGhpcyl9KX0odCl9KHQp''@;'; put 'put ''LHQ9bmV3IHYwKHQpLGRvY3VtZW50Ll9fQ0VfcmVnaXN0cnk9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCJjdXN0b21FbGVtZW50cyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX1mdW5jdGlvbiBTZSgpe3RoaXMuZW5kPXRoaXMuc3RhcnQ9MCx0aGlz''@;'; put 'put ''LnJ1bGVzPXRoaXMucGFyZW50PXRoaXMucHJldmlvdXM9bnVsbCx0aGlzLmNzc1RleHQ9dGhpcy5wYXJzZWRDc3NUZXh0PSIiLHRoaXMuYXRSdWxlPSExLHRoaXMudHlwZT0wLHRoaXMucGFyc2VkU2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj10aGlzLmtleWZyYW1lc05hbWU9IiJ9ZnVuY3Rpb24g''@;'; put 'put ''YmUodCl7dmFyIGk9dD10LnJlcGxhY2UoY3IsIiIpLnJlcGxhY2Uob3IsIiIpLG49bmV3IFNlO24uc3RhcnQ9MCxuLmVuZD1pLmxlbmd0aDtmb3IodmFyIHM9bixkPTAsbT1pLmxlbmd0aDtkPG07ZCsrKWlmKCJ7Ij09PWlbZF0pe3MucnVsZXN8fChzLnJ1bGVzPVtdKTt2YXIgTD1zLEY9TC5y''@;'; put 'put ''dWxlc1tMLnJ1bGVzLmxlbmd0aC0xXXx8bnVsbDsocz1uZXcgU2UpLnN0YXJ0PWQrMSxzLnBhcmVudD1MLHMucHJldmlvdXM9RixMLnJ1bGVzLnB1c2gocyl9ZWxzZSJ9Ij09PWlbZF0mJihzLmVuZD1kKzEscz1zLnBhcmVudHx8bik7cmV0dXJuIFNpKG4sdCl9ZnVuY3Rpb24gU2kodCxpKXt2''@;'; put 'put ''YXIgbj1pLnN1YnN0cmluZyh0LnN0YXJ0LHQuZW5kLTEpO2lmKHQucGFyc2VkQ3NzVGV4dD10LmNzc1RleHQ9bi50cmltKCksdC5wYXJlbnQmJihuPWZ1bmN0aW9uIG5yKHQpe3JldHVybiB0LnJlcGxhY2UoL1xcKFswLTlhLWZdezEsNn0pXHMvZ2ksZnVuY3Rpb24oaSxuKXtmb3Iobj02LShp''@;'; put 'put ''PW4pLmxlbmd0aDtuLS07KWk9IjAiK2k7cmV0dXJuIlxcIitpfSl9KG49aS5zdWJzdHJpbmcodC5wcmV2aW91cz90LnByZXZpb3VzLmVuZDp0LnBhcmVudC5zdGFydCx0LnN0YXJ0LTEpKSxuPShuPW4ucmVwbGFjZShUaSwiICIpKS5zdWJzdHJpbmcobi5sYXN0SW5kZXhPZigiOyIpKzEpLG49''@;'; put 'put ''dC5wYXJzZWRTZWxlY3Rvcj10LnNlbGVjdG9yPW4udHJpbSgpLHQuYXRSdWxlPTA9PT1uLmluZGV4T2YoIkAiKSx0LmF0UnVsZT8wPT09bi5pbmRleE9mKCJAbWVkaWEiKT90LnR5cGU9d2k6bi5tYXRjaChkcikmJih0LnR5cGU9X2UsdC5rZXlmcmFtZXNOYW1lPXQuc2VsZWN0b3Iuc3BsaXQo''@;'; put 'put ''VGkpLnBvcCgpKTp0LnR5cGU9MD09PW4uaW5kZXhPZigiLS0iKT94aTpfaSksbj10LnJ1bGVzKWZvcih2YXIgcz0wLGQ9bi5sZW5ndGgsbT12b2lkIDA7czxkJiYobT1uW3NdKTtzKyspU2kobSxpKTtyZXR1cm4gdH1mdW5jdGlvbiBiaSh0LGksbil7bj12b2lkIDA9PT1uPyIiOm47dmFyIHM9''@;'; put 'put ''IiI7aWYodC5jc3NUZXh0fHx0LnJ1bGVzKXt2YXIgbSxkPXQucnVsZXM7aWYoKG09ZCkmJihtPSEoKG09ZFswXSkmJm0uc2VsZWN0b3ImJjA9PT1tLnNlbGVjdG9yLmluZGV4T2YoIi0tIikpKSxtKXttPTA7Zm9yKHZhciBMPWQubGVuZ3RoLEY9dm9pZCAwO208TCYmKEY9ZFttXSk7bSsrKXM9''@;'; put 'put ''YmkoRixpLHMpfWVsc2Uocz0oaT1pP3QuY3NzVGV4dDooaT0oaT10LmNzc1RleHQpLnJlcGxhY2UoRGksIiIpLnJlcGxhY2UoRWksIiIpKS5yZXBsYWNlKHNyLCIiKS5yZXBsYWNlKGhyLCIiKSkudHJpbSgpKSYmKHM9IiAgIitzKyJcbiIpfXJldHVybiBzJiYodC5zZWxlY3RvciYmKG4rPXQu''@;'; put 'put ''c2VsZWN0b3IrIiB7XG4iKSxuKz1zLHQuc2VsZWN0b3ImJihuKz0ifVxuXG4iKSksbn1qMCYmIWowLmZvcmNlUG9seWZpbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBqMC5kZWZpbmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBqMC5nZXR8fExpKCksd2luZG93Ll9fQ0VfaW5zdGFsbFBvbHlmaWxsPUxp''@;'; put 'put ''O3ZhciB3ZSxWdCxfaT0xLF9lPTcsd2k9NCx4aT0xZTMsY3I9L1wvXCpbXipdKlwqKyhbXi8qXVteKl0qXCorKSpcLy9naW0sb3I9L0BpbXBvcnRbXjtdKjsvZ2ltLERpPS8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qPyg/Ols7XG5dfCQpL2dpbSxFaT0vKD86XlteO1wtXHN9''@;'; put 'put ''XSspPy0tW147e31dKj86W157fTtdKj97W159XSo/fSg/Ols7XG5dfCQpPy9naW0sc3I9L0BhcHBseVxzKlwoP1teKTtdKlwpP1xzKig/Ols7XG5dfCQpPy9naW0saHI9L1teOzpdKj86W147XSo/dmFyXChbXjtdKlwpKD86Wztcbl18JCk/L2dpbSxkcj0vXkBbXlxzXSprZXlmcmFtZXMvLFRp''@;'; put 'put ''PS9ccysvZyxoMD0hKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKTtmdW5jdGlvbiBOaSh0KXt3ZT0oIXR8fCF0LnNoaW1jc3Nwcm9wZXJ0aWVzKSYmKGgwfHwhKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxlV2ViS2l0XC82MDF8RWRnZVwvMTUvKXx8IXdp''@;'; put 'put ''bmRvdy5DU1N8fCFDU1Muc3VwcG9ydHN8fCFDU1Muc3VwcG9ydHMoImJveC1zaGFkb3ciLCIwIDAgMCB2YXIoLS1mb28pIikpKX13aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCYmKFZ0PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCk7dmFyIEwyPSEo''@;'; put 'put ''IXdpbmRvdy5TaGFkeUNTU3x8IXdpbmRvdy5TaGFkeUNTUy5kaXNhYmxlUnVudGltZSk7d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzP3dlPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhOaSh3aW5kb3cuU2hhZHlD''@;'; put 'put ''U1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOk5pKHdpbmRvdy5XZWJDb21wb25lbnRzJiZ3aW5kb3cuV2ViQ29tcG9uZW50cy5mbGFncyk7dmFyIEMwPXdlLG10PS8oPzpefFs7XHN7XVxzKikoLS1bXHctXSo/KVxzKjpccyooPzooKD86Jyg/OlxcJ3wuKSo/J3wiKD86XFwifC4pKj8ifFwo''@;'; put 'put ''W14pXSo/XCl8W159O3tdKSspfFx7KFtefV0qKVx9KD86KD89Wztcc31dKXwkKSkvZ2ksTXQ9Lyg/Ol58XFcrKUBhcHBseVxzKlwoPyhbXik7XG5dKilcKT8vZ2ksdXI9LygtLVtcdy1dKylccyooWzosOyldfCQpL2dpLHByPS8oYW5pbWF0aW9uXHMqOil8KGFuaW1hdGlvbi1uYW1lXHMqOikv''@;'; put 'put ''LGZyPS9AbWVkaWFccyguKikvLGdyPS9ce1tefV0qXH0vZyxGaT1uZXcgU2V0O2Z1bmN0aW9uIFMyKHQsaSl7cmV0dXJuIHQ/KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9YmUodCkpLGkmJmIyKHQsaSksYmkodCxDMCkpOiIifWZ1bmN0aW9uIFcyKHQpe3JldHVybiF0Ll9fY3NzUnVsZXMmJnQu''@;'; put 'put ''dGV4dENvbnRlbnQmJih0Ll9fY3NzUnVsZXM9YmUodC50ZXh0Q29udGVudCkpLHQuX19jc3NSdWxlc3x8bnVsbH1mdW5jdGlvbiBJaSh0KXtyZXR1cm4hIXQucGFyZW50JiZ0LnBhcmVudC50eXBlPT09X2V9ZnVuY3Rpb24gYjIodCxpLG4scyl7aWYodCl7dmFyIGQ9ITEsbT10LnR5cGU7aWYo''@;'; put 'put ''cyYmbT09PXdpKXt2YXIgTD10LnNlbGVjdG9yLm1hdGNoKGZyKTtMJiYod2luZG93Lm1hdGNoTWVkaWEoTFsxXSkubWF0Y2hlc3x8KGQ9ITApKX1pZihtPT09X2k/aSh0KTpuJiZtPT09X2U/bih0KTptPT09eGkmJihkPSEwKSwodD10LnJ1bGVzKSYmIWQpZm9yKGQ9MCxtPXQubGVuZ3RoLEw9''@;'; put 'put ''dm9pZCAwO2Q8bSYmKEw9dFtkXSk7ZCsrKWIyKEwsaSxuLHMpfX1mdW5jdGlvbiB4ZSh0LGksbixzKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBpJiZkLnNldEF0dHJpYnV0ZSgic2NvcGUiLGkpLGQudGV4dENvbnRlbnQ9dCxPaShkLG4scyksZH12YXIg''@;'; put 'put ''bzI9bnVsbDtmdW5jdGlvbiBraSh0KXt0PWRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiBTaGFkeSBET00gc3R5bGVzIGZvciAiK3QrIiAiKTt2YXIgaT1kb2N1bWVudC5oZWFkO3JldHVybiBpLmluc2VydEJlZm9yZSh0LChvMj9vMi5uZXh0U2libGluZzpudWxsKXx8aS5maXJzdENoaWxkKSxv''@;'; put 'put ''Mj10fWZ1bmN0aW9uIE9pKHQsaSxuKXsoaT1pfHxkb2N1bWVudC5oZWFkKS5pbnNlcnRCZWZvcmUodCxuJiZuLm5leHRTaWJsaW5nfHxpLmZpcnN0Q2hpbGQpLG8yP3QuY29tcGFyZURvY3VtZW50UG9zaXRpb24obzIpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcmJihvMj10''@;'; put 'put ''KTpvMj10fWZ1bmN0aW9uIERlKHQsaSl7Zm9yKHZhciBuPTAscz10Lmxlbmd0aDtpPHM7aSsrKWlmKCIoIj09PXRbaV0pbisrO2Vsc2UgaWYoIikiPT09dFtpXSYmMD09LS1uKXJldHVybiBpO3JldHVybi0xfWZ1bmN0aW9uIFBpKHQsaSl7dmFyIG49dC5pbmRleE9mKCJ2YXIoIik7aWYoLTE9''@;'; put 'put ''PT1uKXJldHVybiBpKHQsIiIsIiIsIiIpO3ZhciBzPURlKHQsbiszKSxkPXQuc3Vic3RyaW5nKG4rNCxzKTtyZXR1cm4gbj10LnN1YnN0cmluZygwLG4pLHQ9UGkodC5zdWJzdHJpbmcocysxKSxpKSwtMT09PShzPWQuaW5kZXhPZigiLCIpKT9pKG4sZC50cmltKCksIiIsdCk6aShuLGQuc3Vi''@;'; put 'put ''c3RyaW5nKDAscykudHJpbSgpLGQuc3Vic3RyaW5nKHMrMSkudHJpbSgpLHQpfWZ1bmN0aW9uIFp0KHQsaSl7aDA/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixpKTp3aW5kb3cuU2hhZHlET00ubmF0aXZlTWV0aG9kcy5zZXRBdHRyaWJ1dGUuY2FsbCh0LCJjbGFzcyIsaSl9dmFyICQyPXdpbmRv''@;'; put 'put ''dy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLndyYXB8fGZ1bmN0aW9uKHQpe3JldHVybiB0fTtmdW5jdGlvbiBzMih0KXt2YXIgaT10LmxvY2FsTmFtZSxuPSIiO3JldHVybiBpPy0xPGkuaW5kZXhPZigiLSIpfHwobj1pLGk9dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKCJpcyIp''@;'; put 'put ''fHwiIik6KGk9dC5pcyxuPXQuZXh0ZW5kcykse2lzOmksaGE6bn19ZnVuY3Rpb24gQmkodCl7Zm9yKHZhciBpPVtdLG49IiIscz0wOzA8PXMmJnM8dC5sZW5ndGg7cysrKWlmKCIoIj09PXRbc10pe3ZhciBkPURlKHQscyk7bis9dC5zbGljZShzLGQrMSkscz1kfWVsc2UiLCI9PT10W3NdPyhp''@;'; put 'put ''LnB1c2gobiksbj0iIik6bis9dFtzXTtyZXR1cm4gbiYmaS5wdXNoKG4pLGl9ZnVuY3Rpb24gXzIodCl7aWYodm9pZCAwIT09VnQpcmV0dXJuIFZ0O2lmKHZvaWQgMD09PXQuX19jc3NCdWlsZCl7dmFyIGk9dC5nZXRBdHRyaWJ1dGUoImNzcy1idWlsZCIpO2lmKGkpdC5fX2Nzc0J1aWxkPWk7''@;'; put 'put ''ZWxzZXtpZigiIiE9PShpPShpPSJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZT90LmNvbnRlbnQuZmlyc3RDaGlsZDp0LmZpcnN0Q2hpbGQpaW5zdGFuY2VvZiBDb21tZW50JiYiY3NzLWJ1aWxkIj09PShpPWkudGV4dENvbnRlbnQudHJpbSgpLnNwbGl0KCI6IikpWzBdP2lbMV06IiIpKXt2YXIg''@;'; put 'put ''bj0idGVtcGxhdGUiPT09dC5sb2NhbE5hbWU/dC5jb250ZW50LmZpcnN0Q2hpbGQ6dC5maXJzdENoaWxkO24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX10Ll9fY3NzQnVpbGQ9aX19cmV0dXJuIHQuX19jc3NCdWlsZHx8IiJ9ZnVuY3Rpb24gRWUodCl7cmV0dXJuISgiIj09PSh0PXZvaWQg''@;'; put 'put ''MD09PXQ/IiI6dCl8fCFDMCkmJihoMD8ic2hhZG93Ij09PXQ6InNoYWR5Ij09PXQpfWZ1bmN0aW9uIHl0KCl7fWZ1bmN0aW9uIEx0KHQsaSxuKXt2YXIgcztpZihpLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJm4oaSkscz0idGVtcGxhdGUiPT09aS5sb2NhbE5hbWU/KGkuY29udGVu''@;'; put 'put ''dHx8aS5fY29udGVudHx8aSkuY2hpbGROb2RlczppLmNoaWxkcmVufHxpLmNoaWxkTm9kZXMpZm9yKGk9MDtpPHMubGVuZ3RoO2krKylMdCh0LHNbaV0sbil9ZnVuY3Rpb24gaDIodCxpLG4pe2lmKGkpaWYodC5jbGFzc0xpc3Qpbj8odC5jbGFzc0xpc3QucmVtb3ZlKCJzdHlsZS1zY29wZSIp''@;'; put 'put ''LHQuY2xhc3NMaXN0LnJlbW92ZShpKSk6KHQuY2xhc3NMaXN0LmFkZCgic3R5bGUtc2NvcGUiKSx0LmNsYXNzTGlzdC5hZGQoaSkpO2Vsc2UgaWYodC5nZXRBdHRyaWJ1dGUpe3ZhciBzPXQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpO24/cyYmWnQodCxpPXMucmVwbGFjZSgic3R5bGUtc2NvcGUi''@;'; put 'put ''LCIiKS5yZXBsYWNlKGksIiIpKTpadCh0LChzP3MrIiAiOiIiKSsic3R5bGUtc2NvcGUgIitpKX19ZnVuY3Rpb24gdnIodCxpLG4pe0x0KFQwLHQsZnVuY3Rpb24ocyl7aDIocyxpLCEwKSxoMihzLG4pfSl9ZnVuY3Rpb24gSHIodCxpKXtMdChUMCx0LGZ1bmN0aW9uKG4pe2gyKG4saXx8IiIs''@;'; put 'put ''ITApfSl9ZnVuY3Rpb24gU3QodCxpLG4scyxkKXt2YXIgbT1UMDtyZXR1cm4iIj09PShkPXZvaWQgMD09PWQ/IiI6ZCkmJihkPWgwfHwic2hhZHkiPT09KHZvaWQgMD09PXM/IiI6cyk/UzIoaSxuKTpmdW5jdGlvbiBDcih0LGksbixzLGQpe3ZhciBtPVRlKG4scyk7cmV0dXJuIG49bj8iLiIr''@;'; put 'put ''bjoiIixTMihpLGZ1bmN0aW9uKEwpe0wuaXx8KEwuc2VsZWN0b3I9TC5GPU5lKHQsTCx0LmgsbixtKSxMLmk9ITApLGQmJmQoTCxuLG0pfSl9KG0saSwodD1zMih0KSkuaXMsdC5oYSxuKSsiXG5cbiIpLGQudHJpbSgpfWZ1bmN0aW9uIFRlKHQsaSl7cmV0dXJuIGk/Iltpcz0iK3QrIl0iOnR9''@;'; put 'put ''ZnVuY3Rpb24gTmUodCxpLG4scyxkKXt2YXIgbT1CaShpLnNlbGVjdG9yKTtpZighSWkoaSkpe2k9MDtmb3IodmFyIEw9bS5sZW5ndGgsRj12b2lkIDA7aTxMJiYoRj1tW2ldKTtpKyspbVtpXT1uLmNhbGwodCxGLHMsZCl9cmV0dXJuIG0uZmlsdGVyKGZ1bmN0aW9uKEcpe3JldHVybiEhR30p''@;'; put 'put ''LmpvaW4oIiwiKX1mdW5jdGlvbiBHaSh0KXtyZXR1cm4gdC5yZXBsYWNlKEZlLGZ1bmN0aW9uKGksbixzKXtyZXR1cm4tMTxzLmluZGV4T2YoIisiKT9zPXMucmVwbGFjZSgvXCsvZywiX19fIik6LTE8cy5pbmRleE9mKCJfX18iKSYmKHM9cy5yZXBsYWNlKC9fX18vZywiKyIpKSwiOiIrbisi''@;'; put 'put ''KCIrcysiKSJ9KX1mdW5jdGlvbiBqaSh0LGkpe3Q9dC5zcGxpdCgvKFxbLis/XF0pLyk7Zm9yKHZhciBuPVtdLHM9MDtzPHQubGVuZ3RoO3MrKylpZihzJTI9PTEpbi5wdXNoKHRbc10pO2Vsc2V7dmFyIGQ9dFtzXTsoIiIhPT1kfHxzIT09dC5sZW5ndGgtMSkmJigoZD1kLnNwbGl0KCI6Iikp''@;'; put 'put ''WzBdKz1pLG4ucHVzaChkLmpvaW4oIjoiKSkpfXJldHVybiBuLmpvaW4oIiIpfWZ1bmN0aW9uIFJpKHQpeyI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iaHRtbCIpfXl0LnByb3RvdHlwZS5oPWZ1bmN0aW9uKHQsaSxuKXt2YXIgcz0hMTt0PXQudHJpbSgpO3ZhciBkPUZlLnRl''@;'; put 'put ''c3QodCk7ZCYmKHQ9R2kodD10LnJlcGxhY2UoRmUsZnVuY3Rpb24oRixHLFUpe3JldHVybiI6IitHKyIoIitVLnJlcGxhY2UoL1xzL2csIiIpKyIpIn0pKSk7dmFyIG09V2kudGVzdCh0KTtpZihtKXt2YXIgTD1mdW5jdGlvbiBWcih0KXtmb3IodmFyIG4saT1bXTtuPXQubWF0Y2goV2kpOyl7''@;'; put 'put ''dmFyIHM9bi5pbmRleCxkPURlKHQscyk7aWYoLTE9PT1kKXRocm93IEVycm9yKG4uaW5wdXQrIiBzZWxlY3RvciBtaXNzaW5nICcpJyIpO249dC5zbGljZShzLGQrMSksdD10LnJlcGxhY2UobiwiXHVlMDAwIiksaS5wdXNoKG4pfXJldHVybntCYTp0LG1hdGNoZXM6aX19KHQpO3Q9TC5CYSxM''@;'; put 'put ''PUwubWF0Y2hlc31yZXR1cm4gdD0odD10LnJlcGxhY2UoTHIsIjpob3N0ICQxIikpLnJlcGxhY2UoeXIsZnVuY3Rpb24oRixHLFUpe3JldHVybiBzfHwoRj1mdW5jdGlvbiBNcih0LGksbixzKXt2YXIgZD10LmluZGV4T2YoIjo6c2xvdHRlZCIpO2lmKDA8PXQuaW5kZXhPZigiOmhvc3QiKT90''@;'; put 'put ''PWZ1bmN0aW9uIFpyKHQsaSl7dmFyIG49dC5tYXRjaChVaSk7cmV0dXJuKG49biYmblsyXS50cmltKCl8fCIiKT9uWzBdLm1hdGNoKHppKT90LnJlcGxhY2UoVWksZnVuY3Rpb24ocyxkLG0pe3JldHVybiBpK219KTpuLnNwbGl0KHppKVswXT09PWk/bjoic2hvdWxkX25vdF9tYXRjaCI6dC5y''@;'; put 'put ''ZXBsYWNlKCI6aG9zdCIsaSl9KHQscyk6MCE9PWQmJih0PW4/amkodCxuKTp0KSxuPSExLDA8PWQmJihpPSIiLG49ITApLG4pe3ZhciBtPSEwO24mJih0PXQucmVwbGFjZShTcixmdW5jdGlvbihMLEYpe3JldHVybiIgPiAiK0Z9KSl9cmV0dXJue3ZhbHVlOnQsVWE6aSxzdG9wOm19fShVLEcs''@;'; put 'put ''aSxuKSxzPXN8fEYuc3RvcCxHPUYuVWEsVT1GLnZhbHVlKSxHK1V9KSxtJiYodD1mdW5jdGlvbiBtcih0LGkpe3ZhciBuPXQuc3BsaXQoIlx1ZTAwMCIpO3JldHVybiBpLnJlZHVjZShmdW5jdGlvbihzLGQsbSl7cmV0dXJuIHMrZCtuW20rMV19LG5bMF0pfSh0LEwpKSxkJiYodD1HaSh0KSks''@;'; put 'put ''dC5yZXBsYWNlKGJyLGZ1bmN0aW9uKEYsRyxVLEspe3JldHVybidbZGlyPSInK1UrJyJdICcrRytLKyIsICIrRysnW2Rpcj0iJytVKyciXScrS30pfSx5dC5wcm90b3R5cGUuaT1mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaCgiOmhvc3QiKT8iIjp0Lm1hdGNoKCI6OnNsb3R0ZWQiKT90aGlz''@;'; put 'put ''LmgodCwiOm5vdCguc3R5bGUtc2NvcGUpIik6amkodC50cmltKCksIjpub3QoLnN0eWxlLXNjb3BlKSIpfSxlLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHl0LnByb3RvdHlwZSx7Zzp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInN0eWxlLXNj''@;'; put 'put ''b3BlIn19fSk7dmFyIEZlPS86KG50aFstXHddKylcKChbXildKylcKS8seXI9LyhefFtccz4rfl0rKSgoPzpcWy4rP1xdfFteXHM+K349W10pKykvZyx6aT0vW1suOiMqXS8sTHI9L14oOjpzbG90dGVkKS8sVWk9Lyg6aG9zdCkoPzpcKCgoPzpcKFteKShdKlwpfFteKShdKikrPylcKSkvLFNy''@;'; put 'put ''PS8oPzo6OnNsb3R0ZWQpKD86XCgoKD86XChbXikoXSpcKXxbXikoXSopKz8pXCkpLyxicj0vKC4qKTpkaXJcKCg/OihsdHJ8cnRsKSlcKSguKikvLFdpPS86KD86bWF0Y2hlc3xhbnl8LSg/OndlYmtpdHxtb3opLWFueSkvLFQwPW5ldyB5dDtmdW5jdGlvbiB3Mih0LGksbixzLGQpe3RoaXMu''@;'; put 'put ''TT10fHxudWxsLHRoaXMuaD1pfHxudWxsLHRoaXMuemE9bnx8W10sdGhpcy5LPW51bGwsdGhpcy5jc3NCdWlsZD1kfHwiIix0aGlzLmhhPXN8fCIiLHRoaXMuZz10aGlzLkw9dGhpcy5SPW51bGx9ZnVuY3Rpb24gTjAodCl7cmV0dXJuIHQ/dC5fX3N0eWxlSW5mbzpudWxsfWZ1bmN0aW9uIEll''@;'; put 'put ''KHQsaSl7cmV0dXJuIHQuX19zdHlsZUluZm89aX1mdW5jdGlvbiAkaSh0KXt2YXIgaT10aGlzLm1hdGNoZXN8fHRoaXMubWF0Y2hlc1NlbGVjdG9yfHx0aGlzLm1vek1hdGNoZXNTZWxlY3Rvcnx8dGhpcy5tc01hdGNoZXNTZWxlY3Rvcnx8dGhpcy5vTWF0Y2hlc1NlbGVjdG9yfHx0aGlzLndl''@;'; put 'put ''YmtpdE1hdGNoZXNTZWxlY3RvcjtyZXR1cm4gaSYmaS5jYWxsKHRoaXMsdCl9dzIucHJvdG90eXBlLl9nZXRTdHlsZVJ1bGVzPXcyLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTX07dmFyIF9yPS86aG9zdFxzKj5ccyovLHdyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2go''@;'; put 'put ''IlRyaWRlbnQiKTtmdW5jdGlvbiBxaSgpe31mdW5jdGlvbiBidCh0KXtpZighdC5EKXt2YXIgaT17fSxuPXt9O190KHQsbikmJihpLlA9bix0LnJ1bGVzPW51bGwpLGkuY3NzVGV4dD10LnBhcnNlZENzc1RleHQucmVwbGFjZShnciwiIikucmVwbGFjZShtdCwiIiksdC5EPWl9fWZ1bmN0aW9u''@;'; put 'put ''IF90KHQsaSl7dmFyIG49dC5EO2lmKCFuKXtuPXQucGFyc2VkQ3NzVGV4dDtmb3IodmFyIHM7dD1tdC5leGVjKG4pOykoImluaGVyaXQiIT09KHM9KHRbMl18fHRbM10pLnRyaW0oKSl8fCJ1bnNldCIhPT1zKSYmKGlbdFsxXS50cmltKCldPXMpLHM9ITA7cmV0dXJuIHN9aWYobi5QKXJldHVy''@;'; put 'put ''biBPYmplY3QuYXNzaWduKGksbi5QKSwhMH1mdW5jdGlvbiBxMih0LGksbil7cmV0dXJuIGkmJihpPTA8PWkuaW5kZXhPZigiOyIpP2tlKHQsaSxuKTpQaShpLGZ1bmN0aW9uKHMsZCxtLEwpe3JldHVybiBkPygoZD1xMih0LG5bZF0sbikpJiYiaW5pdGlhbCIhPT1kPyJhcHBseS1zaGltLWlu''@;'; put 'put ''aGVyaXQiPT09ZCYmKGQ9ImluaGVyaXQiKTpkPXEyKHQsblttXXx8bSxuKXx8bSxzKyhkfHwiIikrTCk6cytMfSkpLGkmJmkudHJpbSgpfHwiIn1mdW5jdGlvbiBrZSh0LGksbil7aT1pLnNwbGl0KCI7Iik7Zm9yKHZhciBkLG0scz0wO3M8aS5sZW5ndGg7cysrKWlmKGQ9aVtzXSl7aWYoTXQu''@;'; put 'put ''bGFzdEluZGV4PTAsbT1NdC5leGVjKGQpKWQ9cTIodCxuW21bMV1dLG4pO2Vsc2UgaWYoLTEhPT0obT1kLmluZGV4T2YoIjoiKSkpe3ZhciBMPWQuc3Vic3RyaW5nKG0pO0w9cTIodCxMPUwudHJpbSgpLG4pfHxMLGQ9ZC5zdWJzdHJpbmcoMCxtKStMfWlbc109ZCYmZC5sYXN0SW5kZXhPZigi''@;'; put 'put ''OyIpPT09ZC5sZW5ndGgtMT9kLnNsaWNlKDAsLTEpOmR8fCIifXJldHVybiBpLmpvaW4oIjsiKX1mdW5jdGlvbiBJcih0KXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGkucmVwbGFjZSh0LnUsdC5nKX19ZnVuY3Rpb24ga3IodCxpKXt2YXIgbj13dCxzPVcyKHQpO3QudGV4dENvbnRlbnQ9''@;'; put 'put ''UzIocyxmdW5jdGlvbihkKXt2YXIgbT1kLmNzc1RleHQ9ZC5wYXJzZWRDc3NUZXh0O2QuRCYmZC5ELmNzc1RleHQmJihtPW0ucmVwbGFjZShEaSwiIikucmVwbGFjZShFaSwiIiksZC5jc3NUZXh0PWtlKG4sbSxpKSl9KX1lLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHFpLnByb3RvdHlwZSx7''@;'; put 'put ''Zzp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIngtc2NvcGUifX19KTt2YXIgd3Q9bmV3IHFpLHgyPXt9LHh0PXdpbmRvdy5jdXN0b21FbGVtZW50cztpZih4dCYmIWgwJiYhTDIpe3ZhciBPcj14dC5kZWZpbmU7eHQuZGVmaW5lPWZ1bmN0aW9u''@;'; put 'put ''KHQsaSxuKXt4Mlt0XXx8KHgyW3RdPWtpKHQpKSxPci5jYWxsKHh0LHQsaSxuKX19ZnVuY3Rpb24gWWkoKXt0aGlzLmNhY2hlPXt9fWZ1bmN0aW9uIEtpKCl7fVlpLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbih0LGksbixzKXt2YXIgZD10aGlzLmNhY2hlW3RdfHxbXTtkLnB1c2goe1A6aSxz''@;'; put 'put ''dHlsZUVsZW1lbnQ6bixMOnN9KSwxMDA8ZC5sZW5ndGgmJmQuc2hpZnQoKSx0aGlzLmNhY2hlW3RdPWR9O3ZhciBQcj1uZXcgUmVnRXhwKFQwLmcrIlxccyooW15cXHNdKikiKTtmdW5jdGlvbiBYaSh0KXtyZXR1cm4odD0odC5jbGFzc0xpc3QmJnQuY2xhc3NMaXN0LnZhbHVlP3QuY2xhc3NM''@;'; put 'put ''aXN0LnZhbHVlOnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikubWF0Y2goUHIpKT90WzFdOiIifWZ1bmN0aW9uIE9lKHQpe3ZhciBpPSQyKHQpLmdldFJvb3ROb2RlKCk7cmV0dXJuIGk9PT10fHxpPT09dC5vd25lckRvY3VtZW50PyIiOih0PWkuaG9zdCk/czIodCkuaXM6IiJ9ZnVuY3Rp''@;'; put 'put ''b24gUWkodCl7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBuPXRbaV07aWYobi50YXJnZXQhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJm4udGFyZ2V0IT09ZG9jdW1lbnQuaGVhZClmb3IodmFyIHM9MDtzPG4uYWRkZWROb2Rlcy5sZW5ndGg7cysrKXt2YXIgZD1uLmFkZGVk''@;'; put 'put ''Tm9kZXNbc107aWYoZC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgbT1kLmdldFJvb3ROb2RlKCksTD1YaShkKTtpZihMJiZtPT09ZC5vd25lckRvY3VtZW50JiYoInN0eWxlIiE9PWQubG9jYWxOYW1lJiYidGVtcGxhdGUiIT09ZC5sb2NhbE5hbWV8fCIiPT09XzIoZCkpKUhy''@;'; put 'put ''KGQsTCk7ZWxzZSBpZihtIGluc3RhbmNlb2YgU2hhZG93Um9vdClmb3IoKG09T2UoZCkpIT09TCYmdnIoZCxMLG0pLGQ9d2luZG93LlNoYWR5RE9NLm5hdGl2ZU1ldGhvZHMucXVlcnlTZWxlY3RvckFsbC5jYWxsKGQsIjpub3QoLiIrVDAuZysiKSIpLEw9MDtMPGQubGVuZ3RoO0wrKyl7dmFy''@;'; put 'put ''IEY9T2UobT1kW0xdKTtGJiZoMihtLEYpfX19fX1pZighKGgwfHx3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5oYW5kbGVzRHluYW1pY1Njb3BpbmcpKXt2YXIgSmk9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoUWkpLHRhPWZ1bmN0aW9uKHQpe0ppLm9ic2VydmUodCx7Y2hpbGRMaXN0''@;'; put 'put ''OiEwLHN1YnRyZWU6ITB9KX07aWYod2luZG93LmN1c3RvbUVsZW1lbnRzJiYhd2luZG93LmN1c3RvbUVsZW1lbnRzLnBvbHlmaWxsV3JhcEZsdXNoQ2FsbGJhY2spdGEoZG9jdW1lbnQpO2Vsc2V7dmFyIFBlPWZ1bmN0aW9uKCl7dGEoZG9jdW1lbnQuYm9keSl9O3dpbmRvdy5IVE1MSW1wb3J0''@;'; put 'put ''cz93aW5kb3cuSFRNTEltcG9ydHMud2hlblJlYWR5KFBlKTpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtpZigibG9hZGluZyI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXt2YXIgdD1mdW5jdGlvbigpe1BlKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0''@;'; put 'put ''ZWNoYW5nZSIsdCl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLHQpfWVsc2UgUGUoKX0pfUtpPWZ1bmN0aW9uKCl7UWkoSmkudGFrZVJlY29yZHMoKSl9fXZhciBEdD17fSxCcj1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBHcih0KXsodD1EdFt0XSkm''@;'; put 'put ''Jih0Ll9hcHBseVNoaW1DdXJyZW50VmVyc2lvbj10Ll9hcHBseVNoaW1DdXJyZW50VmVyc2lvbnx8MCx0Ll9hcHBseVNoaW1WYWxpZGF0aW5nVmVyc2lvbj10Ll9hcHBseVNoaW1WYWxpZGF0aW5nVmVyc2lvbnx8MCx0Ll9hcHBseVNoaW1OZXh0VmVyc2lvbj0odC5fYXBwbHlTaGltTmV4dFZl''@;'; put 'put ''cnNpb258fDApKzEpfWZ1bmN0aW9uIGVhKHQpe3JldHVybiB0Ll9hcHBseVNoaW1DdXJyZW50VmVyc2lvbj09PXQuX2FwcGx5U2hpbU5leHRWZXJzaW9ufXZhciBsYT17fSxpYT1uZXcgWWk7ZnVuY3Rpb24gRzEoKXt0aGlzLmRhPXt9LHRoaXMuaT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7''@;'; put 'put ''dmFyIHQ9bmV3IFNlO3QucnVsZXM9W10sdGhpcy51PUllKHRoaXMuaSxuZXcgdzIodCkpLHRoaXMuTz0hMSx0aGlzLmc9dGhpcy5oPW51bGx9ZnVuY3Rpb24gYWEodCl7dmFyIGk9czIodCksbj1pLmlzO2k9aS5oYTt2YXIgcz14MltuXXx8bnVsbCxkPUR0W25dO2lmKGQpcmV0dXJuIEllKHQs''@;'; put 'put ''aT1uZXcgdzIobj1kLl9zdHlsZUFzdCxzLGQuZyxpLGQ9XzIoZCkpKSxpfWZ1bmN0aW9uIFkyKHQpe2lmKCF0LmgmJndpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbSl7dC5oPXdpbmRvdy5TaGFkeUNTUy5BcHBseVNoaW0sdC5oLmludmFsaWRDYWxsYmFjaz1Hcjt2''@;'; put 'put ''YXIgaT0hMH1lbHNlIGk9ITE7cmV0dXJuIGZ1bmN0aW9uIFJyKHQpeyF0LmcmJndpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlJiYodC5nPXdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSx0LmcudHJhbnNmb3JtQ2FsbGJhY2s9''@;'; put 'put ''ZnVuY3Rpb24oaSl7dC5NYShpKX0sdC5nLnZhbGlkYXRlQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXsodC5nLmVucXVldWVkfHx0Lk8pJiZ0LmZsdXNoQ3VzdG9tU3R5bGVzKCl9KX0pfSh0KSxpfWZ1bmN0aW9uIHJhKHQsaSxuKXt2YXIgcz1z''@;'; put 'put ''MihpKS5pcztpZihuLkspe3ZhciBtLGQ9bi5LO2ZvcihtIGluIGQpbnVsbD09PW0/aS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShtKTppLnN0eWxlLnNldFByb3BlcnR5KG0sZFttXSl9ISghKGQ9RHRbc10pJiZpIT09dC5pfHxkJiYiIiE9PV8yKGQpKSYmZCYmZC5fc3R5bGUmJiFlYShkKSYmKChl''@;'; put 'put ''YShkKXx8ZC5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb24hPT1kLl9hcHBseVNoaW1OZXh0VmVyc2lvbikmJihZMih0KSx0LmgmJnQuaC50cmFuc2Zvcm1SdWxlcyhkLl9zdHlsZUFzdCxzKSxkLl9zdHlsZS50ZXh0Q29udGVudD1TdChpLG4uTSksZnVuY3Rpb24ganIodCl7dC5fYXBwbHlT''@;'; put 'put ''aGltVmFsaWRhdGluZ1ZlcnNpb249dC5fYXBwbHlTaGltTmV4dFZlcnNpb24sdC5fdmFsaWRhdGluZ3x8KHQuX3ZhbGlkYXRpbmc9ITAsQnIudGhlbihmdW5jdGlvbigpe3QuX2FwcGx5U2hpbUN1cnJlbnRWZXJzaW9uPXQuX2FwcGx5U2hpbU5leHRWZXJzaW9uLHQuX3ZhbGlkYXRpbmc9ITF9''@;'; put 'put ''KSl9KGQpKSxoMCYmKHQ9aS5zaGFkb3dSb290KSYmKHQ9dC5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpKSYmKHQudGV4dENvbnRlbnQ9U3QoaSxuLk0pKSxuLk09ZC5fc3R5bGVBc3QpfWZ1bmN0aW9uIEJlKHQsaSl7cmV0dXJuKGk9JDIoaSkuZ2V0Um9vdE5vZGUoKS5ob3N0KT9OMChpKXx8YWEo''@;'; put 'put ''aSk/aTpCZSh0LGkpOnQuaX1mdW5jdGlvbiBHZSh0LGksbil7dmFyIHM9QmUodCxpKSxkPU4wKHMpLG09ZC5SO2Zvcih2YXIgTCBpbiBzPT09dC5pfHxtfHwoR2UodCxzLGQpLG09ZC5SKSx0PU9iamVjdC5jcmVhdGUobXx8bnVsbCkscz1mdW5jdGlvbiBUcih0LGksbil7dmFyIHM9e30sZD17''@;'; put 'put ''fTtyZXR1cm4gYjIoaSxmdW5jdGlvbihtKXshZnVuY3Rpb24gRXIodCxpLG4scyl7aWYoaS5EfHxidChpKSxpLkQuUCl7dmFyIGQ9czIodCk7dD1kLmlzLGQ9ZC5oYSxkPXQ/VGUodCxkKToiaHRtbCI7dmFyIG09aS5wYXJzZWRTZWxlY3RvcixMPSEhbS5tYXRjaChfcil8fCJodG1sIj09PWQm''@;'; put 'put ''Ji0xPG0uaW5kZXhPZigiaHRtbCIpLEY9MD09PW0uaW5kZXhPZigiOmhvc3QiKSYmIUw7InNoYWR5Ij09PW4mJihGPSEoTD1tPT09ZCsiID4gKi4iK2R8fC0xIT09bS5pbmRleE9mKCJodG1sIikpJiYwPT09bS5pbmRleE9mKGQpKSwoTHx8RikmJihuPWQsRiYmKGkuRnx8KGkuRj1OZShUMCxp''@;'; put 'put ''LFQwLmgsdD8iLiIrdDoiIixkKSksbj1pLkZ8fGQpLEwmJiJodG1sIj09PWQmJihuPWkuRnx8aS5PKSxzKHtCYTpuLGFiOkYscWI6TH0pKX19KHQsbSxuLGZ1bmN0aW9uKEwpeyRpLmNhbGwodC5fZWxlbWVudHx8dCxMLkJhKSYmX3QobSxMLmFiP3M6ZCl9KX0sbnVsbCwhMCkse2hiOmQsWmE6''@;'; put 'put ''c319KGksbi5NLG4uY3NzQnVpbGQpLGk9ZnVuY3Rpb24gRHIodCxpKXt2YXIgbj17fSxzPVtdO3JldHVybiBiMih0LGZ1bmN0aW9uKGQpe2QuRHx8YnQoZCk7dmFyIG09ZC5GfHxkLnBhcnNlZFNlbGVjdG9yO2kmJmQuRC5QJiZtJiYkaS5jYWxsKGksbSkmJihfdChkLG4pLGQ9ZC5pbmRleCxt''@;'; put 'put ''PXBhcnNlSW50KGQvMzIsMTApLHNbbV09KHNbbV18fDApfDE8PGQlMzIpfSxudWxsLCEwKSx7UDpuLGtleTpzfX0oZC5NLGkpLlAsT2JqZWN0LmFzc2lnbih0LHMuWmEsaSxzLmhiKSxpPW4uSykoKGQ9aVtMXSl8fDA9PT1kKSYmKHRbTF09ZCk7Zm9yKEw9d3QsaT1PYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlOYW1lcyh0KSxkPTA7ZDxpLmxlbmd0aDtkKyspdFtzPWlbZF1dPXEyKEwsdFtzXSx0KTtuLlI9dH0oWD1HMS5wcm90b3R5cGUpLmZsdXNoPWZ1bmN0aW9uKCl7S2koKX0sWC5YYT1mdW5jdGlvbih0KXtyZXR1cm4gVzIodCl9LFgubGI9ZnVuY3Rpb24odCl7cmV0dXJuIFMyKHQpfSxY''@;'; put 'put ''LnByZXBhcmVUZW1wbGF0ZT1mdW5jdGlvbih0LGksbil7dGhpcy5wcmVwYXJlVGVtcGxhdGVEb20odCxpKSx0aGlzLnByZXBhcmVUZW1wbGF0ZVN0eWxlcyh0LGksbil9LFgucHJlcGFyZVRlbXBsYXRlU3R5bGVzPWZ1bmN0aW9uKHQsaSxuKXtpZighdC5fcHJlcGFyZWQmJiFMMil7aDB8fHgy''@;'; put 'put ''W2ldfHwoeDJbaV09a2koaSkpLHQuX3ByZXBhcmVkPSEwLHQubmFtZT1pLHQuZXh0ZW5kcz1uLER0W2ldPXQ7dmFyIHM9XzIodCksZD1FZShzKTtuPXtpczppLGV4dGVuZHM6bn07Zm9yKHZhciBtPVtdLEw9dC5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIiksRj0wO0Y8TC5sZW5n''@;'; put 'put ''dGg7RisrKXt2YXIgRz1MW0ZdO2lmKEcuaGFzQXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIpKXtpZighaDApe3ZhciBVPUcudGV4dENvbnRlbnQ7aWYoIUZpLmhhcyhVKSl7RmkuYWRkKFUpO3ZhciBLPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Sy5zZXRBdHRyaWJ1dGUoInNo''@;'; put 'put ''YWR5LXVuc2NvcGVkIiwiIiksSy50ZXh0Q29udGVudD1VLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoSyl9Ry5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKEcpfX1lbHNlIG0ucHVzaChHLnRleHRDb250ZW50KSxHLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoRyl9bT1tLmpvaW4oIiIpLnRyaW0o''@;'; put 'put ''KSsobGFbaV18fCIiKSxZMih0aGlzKSxkfHwoKEw9IXMpJiYoTD1NdC50ZXN0KG0pfHxtdC50ZXN0KG0pLE10Lmxhc3RJbmRleD0wLG10Lmxhc3RJbmRleD0wKSxGPWJlKG0pLEwmJkMwJiZ0aGlzLmgmJnRoaXMuaC50cmFuc2Zvcm1SdWxlcyhGLGkpLHQuX3N0eWxlQXN0PUYpLEw9W10sQzB8''@;'; put 'put ''fChMPWZ1bmN0aW9uIHhyKHQpe3ZhciBpPXt9LG49W10scz0wO2Zvcih2YXIgZCBpbiBiMih0LGZ1bmN0aW9uKG0pe2J0KG0pLG0uaW5kZXg9cysrLG09bS5ELmNzc1RleHQ7Zm9yKHZhciBMO0w9dXIuZXhlYyhtKTspIjoiIT09TFsyXSYmKGlbTFsxXV09ITApfSxmdW5jdGlvbihtKXtuLnB1''@;'; put 'put ''c2gobSl9KSx0Lmg9bix0PVtdLGkpdC5wdXNoKGQpO3JldHVybiB0fSh0Ll9zdHlsZUFzdCkpLCghTC5sZW5ndGh8fEMwKSYmKEY9aDA/dC5jb250ZW50Om51bGwsaT14MltpXXx8bnVsbCxzPShzPVN0KG4sdC5fc3R5bGVBc3QsbnVsbCxzLGQ/bToiIikpLmxlbmd0aD94ZShzLG4uaXMsRixp''@;'; put 'put ''KTpudWxsLHQuX3N0eWxlPXMpLHQuZz1MfX0sWC5mYj1mdW5jdGlvbih0LGkpe2xhW2ldPXQuam9pbigiICIpfSxYLnByZXBhcmVUZW1wbGF0ZURvbT1mdW5jdGlvbih0LGkpe2lmKCFMMil7dmFyIG49XzIodCk7aDB8fCJzaGFkeSI9PT1ufHx0Ll9kb21QcmVwYXJlZHx8KHQuX2RvbVByZXBh''@;'; put 'put ''cmVkPSEwLGZ1bmN0aW9uIEFyKHQsaSl7THQoVDAsdCxmdW5jdGlvbihuKXtoMihuLGl8fCIiKX0pfSh0LmNvbnRlbnQsaSkpfX0sWC5mbHVzaEN1c3RvbVN0eWxlcz1mdW5jdGlvbigpe2lmKCFMMil7dmFyIHQ9WTIodGhpcyk7aWYodGhpcy5nKXt2YXIgaT10aGlzLmcucHJvY2Vzc1N0eWxl''@;'; put 'put ''cygpO2lmKCh0fHx0aGlzLmcuZW5xdWV1ZWQpJiYhRWUodGhpcy51LmNzc0J1aWxkKSl7aWYoQzApe2lmKCF0aGlzLnUuY3NzQnVpbGQpZm9yKHQ9MDt0PGkubGVuZ3RoO3QrKyl7dmFyIG49dGhpcy5nLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUoaVt0XSk7aWYobiYmQzAmJnRoaXMuaCl7dmFy''@;'; put 'put ''IHM9VzIobik7WTIodGhpcyksdGhpcy5oLnRyYW5zZm9ybVJ1bGVzKHMpLG4udGV4dENvbnRlbnQ9UzIocyl9fX1lbHNle2ZvcihmdW5jdGlvbiB6cih0LGkpe2k9aS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuZy5nZXRTdHlsZUZvckN1c3RvbVN0eWxlKG4pfSkuZmlsdGVyKGZ1bmN0aW9u''@;'; put 'put ''KG4pe3JldHVybiEhbn0pLGkuc29ydChmdW5jdGlvbihuLHMpe3JldHVybihuPXMuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HPzE6biZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORz8tMTowfSksdC51Lk0ucnVsZXM9''@;'; put 'put ''aS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIFcyKG4pfSl9KHRoaXMsaSksR2UodGhpcyx0aGlzLmksdGhpcy51KSx0PTA7dDxpLmxlbmd0aDt0KyspKG49dGhpcy5nLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUoaVt0XSkpJiZrcihuLHRoaXMudS5SKTt0aGlzLk8mJnRoaXMuc3R5bGVEb2N1bWVu''@;'; put 'put ''dCgpfXRoaXMuZy5lbnF1ZXVlZD0hMX19fX0sWC5zdHlsZUVsZW1lbnQ9ZnVuY3Rpb24odCxpKXtpZihMMil7aWYoaSl7TjAodCl8fEllKHQsbmV3IHcyKG51bGwpKTt2YXIgbj1OMCh0KTtuLks9bi5LfHx7fSxPYmplY3QuYXNzaWduKG4uSyxpKSxyYSh0aGlzLHQsbil9fWVsc2UgaWYobj1O''@;'; put 'put ''MCh0KXx8YWEodCkpaWYodCE9PXRoaXMuaSYmKHRoaXMuTz0hMCksaSYmKG4uSz1uLkt8fHt9LE9iamVjdC5hc3NpZ24obi5LLGkpKSxDMClyYSh0aGlzLHQsbik7ZWxzZSBpZih0aGlzLmZsdXNoKCksR2UodGhpcyx0LG4pLG4uemEmJm4uemEubGVuZ3RoKXt2YXIgcztpPXMyKHQpLmlzO3Q6''@;'; put 'put ''e2lmKHM9aWEuY2FjaGVbaV0pZm9yKHZhciBkPXMubGVuZ3RoLTE7MDw9ZDtkLS0pe3ZhciBtPXNbZF07ZTp7Zm9yKHZhciBMPW4uemEsRj0wO0Y8TC5sZW5ndGg7RisrKXt2YXIgRz1MW0ZdO2lmKG0uUFtHXSE9PW4uUltHXSl7TD0hMTticmVhayBlfX1MPSEwfWlmKEwpe3M9bTticmVhayB0''@;'; put 'put ''fX1zPXZvaWQgMH1MPXM/cy5zdHlsZUVsZW1lbnQ6bnVsbCxkPW4uTCwobT1zJiZzLkwpfHwobT1pKyItIisobT10aGlzLmRhW2ldPSh0aGlzLmRhW2ldfHwwKSsxKSksbi5MPW0sbT1uLkwsRj13dCxGPUw/TC50ZXh0Q29udGVudHx8IiI6ZnVuY3Rpb24gTnIodCxpLG4scyl7dmFyIGQ9czIo''@;'; put 'put ''aSksbT1UZShkLmlzLGQuaGEpLEw9bmV3IFJlZ0V4cCgiKD86XnxbXi4jWzpdKSIrKGkuZXh0ZW5kcz8iXFwiK20uc2xpY2UoMCwtMSkrIlxcXSI6bSkrIigkfFsuOltcXHM+K35dKSIpLEY9TjAoaSk7ZD1GLk0sRj1GLmNzc0J1aWxkO3ZhciBHPWZ1bmN0aW9uIEZyKHQsaSl7dD10Lmg7dmFy''@;'; put 'put ''IG49e307aWYoIWgwJiZ0KWZvcih2YXIgcz0wLGQ9dFtzXTtzPHQubGVuZ3RoO2Q9dFsrK3NdKXt2YXIgbT1kLEw9aTttLnU9bmV3IFJlZ0V4cCgiXFxiIittLmtleWZyYW1lc05hbWUrIig/IVxcQnwtKSIsImciKSxtLmc9bS5rZXlmcmFtZXNOYW1lKyItIitMLG0uRj1tLkZ8fG0uc2VsZWN0''@;'; put 'put ''b3IsbS5zZWxlY3Rvcj1tLkYucmVwbGFjZShtLmtleWZyYW1lc05hbWUsbS5nKSxuW2Qua2V5ZnJhbWVzTmFtZV09SXIoZCl9cmV0dXJuIG59KGQscyk7cmV0dXJuIFN0KGksZCxmdW5jdGlvbihVKXt2YXIgSz0iIjtpZihVLkR8fGJ0KFUpLFUuRC5jc3NUZXh0JiYoSz1rZSh0LFUuRC5jc3NU''@;'; put 'put ''ZXh0LG4pKSxVLmNzc1RleHQ9SywhaDAmJiFJaShVKSYmVS5jc3NUZXh0KXt2YXIgQzE9Sz1VLmNzc1RleHQ7aWYobnVsbD09VS5JYSYmKFUuSWE9cHIudGVzdChLKSksVS5JYSlpZihudWxsPT1VLnBhKWZvcih2YXIgUTEgaW4gVS5wYT1bXSxHKUshPT0oQzE9KEMxPUdbUTFdKShLKSkmJihL''@;'; put 'put ''PUMxLFUucGEucHVzaChRMSkpO2Vsc2V7Zm9yKFExPTA7UTE8VS5wYS5sZW5ndGg7KytRMSlLPShDMT1HW1UucGFbUTFdXSkoSyk7QzE9S31VLmNzc1RleHQ9QzEsVS5GPVUuRnx8VS5zZWxlY3RvcixLPSIuIitzLEMxPTA7Zm9yKHZhciBqMT0oUTE9QmkoVS5GKSkubGVuZ3RoLFoxPXZvaWQg''@;'; put 'put ''MDtDMTxqMSYmKFoxPVExW0MxXSk7QzErKylRMVtDMV09WjEubWF0Y2goTCk/WjEucmVwbGFjZShtLEspOksrIiAiK1oxO1Uuc2VsZWN0b3I9UTEuam9pbigiLCIpfX0sRil9KEYsdCxuLlIsbSk7dmFyIFU9KEc9TjAodCkpLmc7VSYmIWgwJiZVIT09TCYmKFUuX3VzZUNvdW50LS0sMD49VS5f''@;'; put 'put ''dXNlQ291bnQmJlUucGFyZW50Tm9kZSYmVS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFUpKSxoMD9HLmc/KEcuZy50ZXh0Q29udGVudD1GLEw9Ry5nKTpGJiYoTD14ZShGLG0sdC5zaGFkb3dSb290LEcuaCkpOkw/TC5wYXJlbnROb2RlfHwod3ImJi0xPEYuaW5kZXhPZigiQG1lZGlhIikmJihM''@;'; put 'put ''LnRleHRDb250ZW50PUYpLE9pKEwsbnVsbCxHLmgpKTpGJiYoTD14ZShGLG0sbnVsbCxHLmgpKSxMJiYoTC5fdXNlQ291bnQ9TC5fdXNlQ291bnR8fDAsRy5nIT1MJiZMLl91c2VDb3VudCsrLEcuZz1MKSxtPUwsaDB8fChMPW4uTCxHPUY9dC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiLGQm''@;'; put 'put ''JihHPUYucmVwbGFjZShuZXcgUmVnRXhwKCJcXHMqeC1zY29wZVxccyoiK2QrIlxccyoiLCJnIiksIiAiKSksRiE9PShHKz0oRz8iICI6IiIpKyJ4LXNjb3BlICIrTCkmJlp0KHQsRykpLHN8fGlhLnN0b3JlKGksbi5SLG0sbi5MKX19LFguc3R5bGVEb2N1bWVudD1mdW5jdGlvbih0KXt0aGlz''@;'; put 'put ''LnN0eWxlU3VidHJlZSh0aGlzLmksdCl9LFguc3R5bGVTdWJ0cmVlPWZ1bmN0aW9uKHQsaSl7dmFyIG49JDIodCkscz1uLnNoYWRvd1Jvb3QsZD10PT09dGhpcy5pO2lmKChzfHxkKSYmdGhpcy5zdHlsZUVsZW1lbnQodCxpKSx0PWQ/bjpzKWZvcih0PUFycmF5LmZyb20odC5xdWVyeVNlbGVj''@;'; put 'put ''dG9yQWxsKCIqIikpLmZpbHRlcihmdW5jdGlvbihtKXtyZXR1cm4gJDIobSkuc2hhZG93Um9vdH0pLGk9MDtpPHQubGVuZ3RoO2krKyl0aGlzLnN0eWxlU3VidHJlZSh0W2ldKX0sWC5NYT1mdW5jdGlvbih0KXt2YXIgaT10aGlzLG49XzIodCk7aWYobiE9PXRoaXMudS5jc3NCdWlsZCYmKHRo''@;'; put 'put ''aXMudS5jc3NCdWlsZD1uKSwhRWUobikpe3ZhciBzPVcyKHQpO2IyKHMsZnVuY3Rpb24oZCl7aWYoaDApUmkoZCk7ZWxzZXt2YXIgbT1UMDtkLnNlbGVjdG9yPWQucGFyc2VkU2VsZWN0b3IsUmkoZCksZC5zZWxlY3Rvcj1kLkY9TmUobSxkLG0uaSx2b2lkIDAsdm9pZCAwKX1DMCYmIiI9PT1u''@;'; put 'put ''JiYoWTIoaSksaS5oJiZpLmgudHJhbnNmb3JtUnVsZShkKSl9KSxDMD90LnRleHRDb250ZW50PVMyKHMpOnRoaXMudS5NLnJ1bGVzLnB1c2gocyl9fSxYLmdldENvbXB1dGVkU3R5bGVWYWx1ZT1mdW5jdGlvbih0LGkpe3ZhciBuO3JldHVybiBDMHx8KG49KE4wKHQpfHxOMChCZSh0aGlzLHQp''@;'; put 'put ''KSkuUltpXSksKG49bnx8d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShpKSk/bi50cmltKCk6IiJ9LFgua2I9ZnVuY3Rpb24odCxpKXt2YXIgbj0kMih0KS5nZXRSb290Tm9kZSgpO2lmKGk9aT8oInN0cmluZyI9PXR5cGVvZiBpP2k6U3RyaW5nKGkpKS5zcGxp''@;'; put 'put ''dCgvXHMvKTpbXSwhKG49bi5ob3N0JiZuLmhvc3QubG9jYWxOYW1lKSl7dmFyIHM9dC5nZXRBdHRyaWJ1dGUoImNsYXNzIik7aWYocyl7cz1zLnNwbGl0KC9ccy8pO2Zvcih2YXIgZD0wO2Q8cy5sZW5ndGg7ZCsrKWlmKHNbZF09PT1UMC5nKXtuPXNbZCsxXTticmVha319fW4mJmkucHVzaChU''@;'; put 'put ''MC5nLG4pLEMwfHwobj1OMCh0KSkmJm4uTCYmaS5wdXNoKHd0Lmcsbi5MKSxadCh0LGkuam9pbigiICIpKX0sWC5UYT1mdW5jdGlvbih0KXtyZXR1cm4gTjAodCl9LFguamI9ZnVuY3Rpb24odCxpKXtoMih0LGkpfSxYLm1iPWZ1bmN0aW9uKHQsaSl7aDIodCxpLCEwKX0sWC5pYj1mdW5jdGlv''@;'; put 'put ''bih0KXtyZXR1cm4gT2UodCl9LFguVmE9ZnVuY3Rpb24odCl7cmV0dXJuIFhpKHQpfSxHMS5wcm90b3R5cGUuZmx1c2g9RzEucHJvdG90eXBlLmZsdXNoLEcxLnByb3RvdHlwZS5wcmVwYXJlVGVtcGxhdGU9RzEucHJvdG90eXBlLnByZXBhcmVUZW1wbGF0ZSxHMS5wcm90b3R5cGUuc3R5bGVF''@;'; put 'put ''bGVtZW50PUcxLnByb3RvdHlwZS5zdHlsZUVsZW1lbnQsRzEucHJvdG90eXBlLnN0eWxlRG9jdW1lbnQ9RzEucHJvdG90eXBlLnN0eWxlRG9jdW1lbnQsRzEucHJvdG90eXBlLnN0eWxlU3VidHJlZT1HMS5wcm90b3R5cGUuc3R5bGVTdWJ0cmVlLEcxLnByb3RvdHlwZS5nZXRDb21wdXRlZFN0''@;'; put 'put ''eWxlVmFsdWU9RzEucHJvdG90eXBlLmdldENvbXB1dGVkU3R5bGVWYWx1ZSxHMS5wcm90b3R5cGUuc2V0RWxlbWVudENsYXNzPUcxLnByb3RvdHlwZS5rYixHMS5wcm90b3R5cGUuX3N0eWxlSW5mb0Zvck5vZGU9RzEucHJvdG90eXBlLlRhLEcxLnByb3RvdHlwZS50cmFuc2Zvcm1DdXN0b21T''@;'; put 'put ''dHlsZUZvckRvY3VtZW50PUcxLnByb3RvdHlwZS5NYSxHMS5wcm90b3R5cGUuZ2V0U3R5bGVBc3Q9RzEucHJvdG90eXBlLlhhLEcxLnByb3RvdHlwZS5zdHlsZUFzdFRvU3RyaW5nPUcxLnByb3RvdHlwZS5sYixHMS5wcm90b3R5cGUuZmx1c2hDdXN0b21TdHlsZXM9RzEucHJvdG90eXBlLmZs''@;'; put 'put ''dXNoQ3VzdG9tU3R5bGVzLEcxLnByb3RvdHlwZS5zY29wZU5vZGU9RzEucHJvdG90eXBlLmpiLEcxLnByb3RvdHlwZS51bnNjb3BlTm9kZT1HMS5wcm90b3R5cGUubWIsRzEucHJvdG90eXBlLnNjb3BlRm9yTm9kZT1HMS5wcm90b3R5cGUuaWIsRzEucHJvdG90eXBlLmN1cnJlbnRTY29wZUZv''@;'; put 'put ''ck5vZGU9RzEucHJvdG90eXBlLlZhLEcxLnByb3RvdHlwZS5wcmVwYXJlQWRvcHRlZENzc1RleHQ9RzEucHJvdG90eXBlLmZiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEcxLnByb3RvdHlwZSx7bmF0aXZlU2hhZG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaDB9fSxuYXRpdmVDc3M6e2dl''@;'; put 'put ''dDpmdW5jdGlvbigpe3JldHVybiBDMH19fSk7dmFyIGplLFJlLFYwPW5ldyBHMTt3aW5kb3cuU2hhZHlDU1MmJihqZT13aW5kb3cuU2hhZHlDU1MuQXBwbHlTaGltLFJlPXdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSksd2luZG93LlNoYWR5Q1NTPXtTY29waW5nU2hpbTpW''@;'; put 'put ''MCxwcmVwYXJlVGVtcGxhdGU6ZnVuY3Rpb24odCxpLG4pe1YwLmZsdXNoQ3VzdG9tU3R5bGVzKCksVjAucHJlcGFyZVRlbXBsYXRlKHQsaSxuKX0scHJlcGFyZVRlbXBsYXRlRG9tOmZ1bmN0aW9uKHQsaSl7VjAucHJlcGFyZVRlbXBsYXRlRG9tKHQsaSl9LHByZXBhcmVUZW1wbGF0ZVN0eWxl''@;'; put 'put ''czpmdW5jdGlvbih0LGksbil7VjAuZmx1c2hDdXN0b21TdHlsZXMoKSxWMC5wcmVwYXJlVGVtcGxhdGVTdHlsZXModCxpLG4pfSxzdHlsZVN1YnRyZWU6ZnVuY3Rpb24odCxpKXtWMC5mbHVzaEN1c3RvbVN0eWxlcygpLFYwLnN0eWxlU3VidHJlZSh0LGkpfSxzdHlsZUVsZW1lbnQ6ZnVuY3Rp''@;'; put 'put ''b24odCl7VjAuZmx1c2hDdXN0b21TdHlsZXMoKSxWMC5zdHlsZUVsZW1lbnQodCl9LHN0eWxlRG9jdW1lbnQ6ZnVuY3Rpb24odCl7VjAuZmx1c2hDdXN0b21TdHlsZXMoKSxWMC5zdHlsZURvY3VtZW50KHQpfSxmbHVzaEN1c3RvbVN0eWxlczpmdW5jdGlvbigpe1YwLmZsdXNoQ3VzdG9tU3R5''@;'; put 'put ''bGVzKCl9LGdldENvbXB1dGVkU3R5bGVWYWx1ZTpmdW5jdGlvbih0LGkpe3JldHVybiBWMC5nZXRDb21wdXRlZFN0eWxlVmFsdWUodCxpKX0sbmF0aXZlQ3NzOkMwLG5hdGl2ZVNoYWRvdzpoMCxjc3NCdWlsZDpWdCxkaXNhYmxlUnVudGltZTpMMn0samUmJih3aW5kb3cuU2hhZHlDU1MuQXBw''@;'; put 'put ''bHlTaGltPWplKSxSZSYmKHdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZT1SZSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gaShaMSl7cmV0dXJuIiI9PVoxJiYobS5jYWxsKHRoaXMpLHRoaXMubT0hMCksWjEudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBuKFoxKXt2YXIgJDE9WjEu''@;'; put 'put ''Y2hhckNvZGVBdCgwKTtyZXR1cm4gMzI8JDEmJjEyNz4kMSYmLTE9PVszNCwzNSw2MCw2Miw2Myw5Nl0uaW5kZXhPZigkMSk/WjE6ZW5jb2RlVVJJQ29tcG9uZW50KFoxKX1mdW5jdGlvbiBzKFoxKXt2YXIgJDE9WjEuY2hhckNvZGVBdCgwKTtyZXR1cm4gMzI8JDEmJjEyNz4kMSYmLTE9PVsz''@;'; put 'put ''NCwzNSw2MCw2Miw5Nl0uaW5kZXhPZigkMSk/WjE6ZW5jb2RlVVJJQ29tcG9uZW50KFoxKX1mdW5jdGlvbiBkKFoxLCQxLHoxKXtmdW5jdGlvbiBvMChJMCl7ZTIucHVzaChJMCl9dmFyIGsxPSQxfHwic2NoZW1lIHN0YXJ0IixtMD0wLFQxPSIiLHQyPSExLEYwPSExLGUyPVtdO3Q6Zm9yKDso''@;'; put 'put ''bnVsbCE9WjFbbTAtMV18fDA9PW0wKSYmIXRoaXMubTspe3ZhciBlMT1aMVttMF07c3dpdGNoKGsxKXtjYXNlInNjaGVtZSBzdGFydCI6aWYoIWUxfHwhQzEudGVzdChlMSkpe2lmKCQxKXtvMCgiSW52YWxpZCBzY2hlbWUuIik7YnJlYWsgdH1UMT0iIixrMT0ibm8gc2NoZW1lIjtjb250aW51''@;'; put 'put ''ZX1UMSs9ZTEudG9Mb3dlckNhc2UoKSxrMT0ic2NoZW1lIjticmVhaztjYXNlInNjaGVtZSI6aWYoZTEmJlExLnRlc3QoZTEpKVQxKz1lMS50b0xvd2VyQ2FzZSgpO2Vsc2V7aWYoIjoiIT1lMSl7aWYoJDEpe251bGwhPWUxJiZvMCgiQ29kZSBwb2ludCBub3QgYWxsb3dlZCBpbiBzY2hlbWU6''@;'; put 'put ''ICIrZTEpO2JyZWFrIHR9VDE9IiIsbTA9MCxrMT0ibm8gc2NoZW1lIjtjb250aW51ZX1pZih0aGlzLmw9VDEsVDE9IiIsJDEpYnJlYWsgdDt2b2lkIDAhPT1VW3RoaXMubF0mJih0aGlzLkc9ITApLGsxPSJmaWxlIj09dGhpcy5sPyJyZWxhdGl2ZSI6dGhpcy5HJiZ6MSYmejEubD09dGhpcy5s''@;'; put 'put ''PyJyZWxhdGl2ZSBvciBhdXRob3JpdHkiOnRoaXMuRz8iYXV0aG9yaXR5IGZpcnN0IHNsYXNoIjoic2NoZW1lIGRhdGEifWJyZWFrO2Nhc2Uic2NoZW1lIGRhdGEiOiI/Ij09ZTE/KHRoaXMuQT0iPyIsazE9InF1ZXJ5Iik6IiMiPT1lMT8odGhpcy5DPSIjIixrMT0iZnJhZ21lbnQiKTpudWxs''@;'; put 'put ''IT1lMSYmIlx0IiE9ZTEmJiJcbiIhPWUxJiYiXHIiIT1lMSYmKHRoaXMudmErPW4oZTEpKTticmVhaztjYXNlIm5vIHNjaGVtZSI6aWYoejEmJnZvaWQgMCE9PVVbejEubF0pe2sxPSJyZWxhdGl2ZSI7Y29udGludWV9bzAoIk1pc3Npbmcgc2NoZW1lLiIpLG0uY2FsbCh0aGlzKSx0aGlzLm09''@;'; put 'put ''ITA7YnJlYWs7Y2FzZSJyZWxhdGl2ZSBvciBhdXRob3JpdHkiOmlmKCIvIiE9ZTF8fCIvIiE9WjFbbTArMV0pe28wKCJFeHBlY3RlZCAvLCBnb3Q6ICIrZTEpLGsxPSJyZWxhdGl2ZSI7Y29udGludWV9azE9ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI7YnJlYWs7Y2FzZSJyZWxhdGl2ZSI6''@;'; put 'put ''aWYodGhpcy5HPSEwLCJmaWxlIiE9dGhpcy5sJiYodGhpcy5sPXoxLmwpLG51bGw9PWUxKXt0aGlzLm89ejEubyx0aGlzLnY9ejEudix0aGlzLnM9ejEucy5zbGljZSgpLHRoaXMuQT16MS5BLHRoaXMuQj16MS5CLHRoaXMuaj16MS5qO2JyZWFrIHR9aWYoIi8iPT1lMXx8IlxcIj09ZTEpIlxc''@;'; put 'put ''Ij09ZTEmJm8wKCJcXCBpcyBhbiBpbnZhbGlkIGNvZGUgcG9pbnQuIiksazE9InJlbGF0aXZlIHNsYXNoIjtlbHNlIGlmKCI/Ij09ZTEpdGhpcy5vPXoxLm8sdGhpcy52PXoxLnYsdGhpcy5zPXoxLnMuc2xpY2UoKSx0aGlzLkE9Ij8iLHRoaXMuQj16MS5CLHRoaXMuaj16MS5qLGsxPSJxdWVy''@;'; put 'put ''eSI7ZWxzZXtpZigiIyIhPWUxKXtrMT1aMVttMCsxXTt2YXIgbDA9WjFbbTArMl07KCJmaWxlIiE9dGhpcy5sfHwhQzEudGVzdChlMSl8fCI6IiE9azEmJiJ8IiE9azF8fG51bGwhPWwwJiYiLyIhPWwwJiYiXFwiIT1sMCYmIj8iIT1sMCYmIiMiIT1sMCkmJih0aGlzLm89ejEubyx0aGlzLnY9''@;'; put 'put ''ejEudix0aGlzLkI9ejEuQix0aGlzLmo9ejEuaix0aGlzLnM9ejEucy5zbGljZSgpLHRoaXMucy5wb3AoKSksazE9InJlbGF0aXZlIHBhdGgiO2NvbnRpbnVlfXRoaXMubz16MS5vLHRoaXMudj16MS52LHRoaXMucz16MS5zLnNsaWNlKCksdGhpcy5BPXoxLkEsdGhpcy5DPSIjIix0aGlzLkI9''@;'; put 'put ''ejEuQix0aGlzLmo9ejEuaixrMT0iZnJhZ21lbnQifWJyZWFrO2Nhc2UicmVsYXRpdmUgc2xhc2giOmlmKCIvIiE9ZTEmJiJcXCIhPWUxKXsiZmlsZSIhPXRoaXMubCYmKHRoaXMubz16MS5vLHRoaXMudj16MS52LHRoaXMuQj16MS5CLHRoaXMuaj16MS5qKSxrMT0icmVsYXRpdmUgcGF0aCI7''@;'; put 'put ''Y29udGludWV9IlxcIj09ZTEmJm8wKCJcXCBpcyBhbiBpbnZhbGlkIGNvZGUgcG9pbnQuIiksazE9ImZpbGUiPT10aGlzLmw/ImZpbGUgaG9zdCI6ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI7YnJlYWs7Y2FzZSJhdXRob3JpdHkgZmlyc3Qgc2xhc2giOmlmKCIvIiE9ZTEpe28wKCJFeHBl''@;'; put 'put ''Y3RlZCAnLycsIGdvdDogIitlMSksazE9ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI7Y29udGludWV9azE9ImF1dGhvcml0eSBzZWNvbmQgc2xhc2giO2JyZWFrO2Nhc2UiYXV0aG9yaXR5IHNlY29uZCBzbGFzaCI6aWYoazE9ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyIsIi8iIT1lMSl7''@;'; put 'put ''bzAoIkV4cGVjdGVkICcvJywgZ290OiAiK2UxKTtjb250aW51ZX1icmVhaztjYXNlImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI6aWYoIi8iIT1lMSYmIlxcIiE9ZTEpe2sxPSJhdXRob3JpdHkiO2NvbnRpbnVlfW8wKCJFeHBlY3RlZCBhdXRob3JpdHksIGdvdDogIitlMSk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJhdXRob3JpdHkiOmlmKCJAIj09ZTEpe2Zvcih0MiYmKG8wKCJAIGFscmVhZHkgc2Vlbi4iKSxUMSs9IiU0MCIpLHQyPSEwLGUxPTA7ZTE8VDEubGVuZ3RoO2UxKyspIlx0Ij09KGwwPVQxW2UxXSl8fCJcbiI9PWwwfHwiXHIiPT1sMD9vMCgiSW52YWxpZCB3aGl0ZXNwYWNlIGluIGF1dGhv''@;'; put 'put ''cml0eS4iKToiOiI9PWwwJiZudWxsPT09dGhpcy5qP3RoaXMuaj0iIjoobDA9bihsMCksbnVsbCE9PXRoaXMuaj90aGlzLmorPWwwOnRoaXMuQis9bDApO1QxPSIifWVsc2V7aWYobnVsbD09ZTF8fCIvIj09ZTF8fCJcXCI9PWUxfHwiPyI9PWUxfHwiIyI9PWUxKXttMC09VDEubGVuZ3RoLFQx''@;'; put 'put ''PSIiLGsxPSJob3N0Ijtjb250aW51ZX1UMSs9ZTF9YnJlYWs7Y2FzZSJmaWxlIGhvc3QiOmlmKG51bGw9PWUxfHwiLyI9PWUxfHwiXFwiPT1lMXx8Ij8iPT1lMXx8IiMiPT1lMSl7MiE9VDEubGVuZ3RofHwhQzEudGVzdChUMVswXSl8fCI6IiE9VDFbMV0mJiJ8IiE9VDFbMV0/KDAhPVQxLmxl''@;'; put 'put ''bmd0aCYmKHRoaXMubz1pLmNhbGwodGhpcyxUMSksVDE9IiIpLGsxPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0Iik6azE9InJlbGF0aXZlIHBhdGgiO2NvbnRpbnVlfSJcdCI9PWUxfHwiXG4iPT1lMXx8IlxyIj09ZTE/bzAoIkludmFsaWQgd2hpdGVzcGFjZSBpbiBmaWxlIGhvc3QuIik6VDErPWUx''@;'; put 'put ''O2JyZWFrO2Nhc2UiaG9zdCI6Y2FzZSJob3N0bmFtZSI6aWYoIjoiIT1lMXx8RjApe2lmKG51bGw9PWUxfHwiLyI9PWUxfHwiXFwiPT1lMXx8Ij8iPT1lMXx8IiMiPT1lMSl7aWYodGhpcy5vPWkuY2FsbCh0aGlzLFQxKSxUMT0iIixrMT0icmVsYXRpdmUgcGF0aCBzdGFydCIsJDEpYnJlYWsg''@;'; put 'put ''dDtjb250aW51ZX0iXHQiIT1lMSYmIlxuIiE9ZTEmJiJcciIhPWUxPygiWyI9PWUxP0YwPSEwOiJdIj09ZTEmJihGMD0hMSksVDErPWUxKTpvMCgiSW52YWxpZCBjb2RlIHBvaW50IGluIGhvc3QvaG9zdG5hbWU6ICIrZTEpfWVsc2UgaWYodGhpcy5vPWkuY2FsbCh0aGlzLFQxKSxUMT0iIixr''@;'; put 'put ''MT0icG9ydCIsImhvc3RuYW1lIj09JDEpYnJlYWsgdDticmVhaztjYXNlInBvcnQiOmlmKC9bMC05XS8udGVzdChlMSkpVDErPWUxO2Vsc2V7aWYobnVsbD09ZTF8fCIvIj09ZTF8fCJcXCI9PWUxfHwiPyI9PWUxfHwiIyI9PWUxfHwkMSl7aWYoIiIhPVQxJiYoKFQxPXBhcnNlSW50KFQxLDEw''@;'; put 'put ''KSkhPVVbdGhpcy5sXSYmKHRoaXMudj1UMSsiIiksVDE9IiIpLCQxKWJyZWFrIHQ7azE9InJlbGF0aXZlIHBhdGggc3RhcnQiO2NvbnRpbnVlfSJcdCI9PWUxfHwiXG4iPT1lMXx8IlxyIj09ZTE/bzAoIkludmFsaWQgY29kZSBwb2ludCBpbiBwb3J0OiAiK2UxKToobS5jYWxsKHRoaXMpLHRo''@;'; put 'put ''aXMubT0hMCl9YnJlYWs7Y2FzZSJyZWxhdGl2ZSBwYXRoIHN0YXJ0IjppZigiXFwiPT1lMSYmbzAoIidcXCcgbm90IGFsbG93ZWQgaW4gcGF0aC4iKSxrMT0icmVsYXRpdmUgcGF0aCIsIi8iIT1lMSYmIlxcIiE9ZTEpY29udGludWU7YnJlYWs7Y2FzZSJyZWxhdGl2ZSBwYXRoIjpudWxsIT1l''@;'; put 'put ''MSYmIi8iIT1lMSYmIlxcIiE9ZTEmJigkMXx8Ij8iIT1lMSYmIiMiIT1lMSk/Ilx0IiE9ZTEmJiJcbiIhPWUxJiYiXHIiIT1lMSYmKFQxKz1uKGUxKSk6KCJcXCI9PWUxJiZvMCgiXFwgbm90IGFsbG93ZWQgaW4gcmVsYXRpdmUgcGF0aC4iKSwobDA9S1tUMS50b0xvd2VyQ2FzZSgpXSkmJihU''@;'; put 'put ''MT1sMCksIi4uIj09VDE/KHRoaXMucy5wb3AoKSwiLyIhPWUxJiYiXFwiIT1lMSYmdGhpcy5zLnB1c2goIiIpKToiLiI9PVQxJiYiLyIhPWUxJiYiXFwiIT1lMT90aGlzLnMucHVzaCgiIik6Ii4iIT1UMSYmKCJmaWxlIj09dGhpcy5sJiYwPT10aGlzLnMubGVuZ3RoJiYyPT1UMS5sZW5ndGgm''@;'; put 'put ''JkMxLnRlc3QoVDFbMF0pJiYifCI9PVQxWzFdJiYoVDE9VDFbMF0rIjoiKSx0aGlzLnMucHVzaChUMSkpLFQxPSIiLCI/Ij09ZTE/KHRoaXMuQT0iPyIsazE9InF1ZXJ5Iik6IiMiPT1lMSYmKHRoaXMuQz0iIyIsazE9ImZyYWdtZW50IikpO2JyZWFrO2Nhc2UicXVlcnkiOiQxfHwiIyIhPWUx''@;'; put 'put ''P251bGwhPWUxJiYiXHQiIT1lMSYmIlxuIiE9ZTEmJiJcciIhPWUxJiYodGhpcy5BKz1zKGUxKSk6KHRoaXMuQz0iIyIsazE9ImZyYWdtZW50Iik7YnJlYWs7Y2FzZSJmcmFnbWVudCI6bnVsbCE9ZTEmJiJcdCIhPWUxJiYiXG4iIT1lMSYmIlxyIiE9ZTEmJih0aGlzLkMrPWUxKX1tMCsrfX1m''@;'; put 'put ''dW5jdGlvbiBtKCl7dGhpcy5CPXRoaXMudmE9dGhpcy5sPSIiLHRoaXMuaj1udWxsLHRoaXMudj10aGlzLm89IiIsdGhpcy5zPVtdLHRoaXMuQz10aGlzLkE9IiIsdGhpcy5HPXRoaXMubT0hMX1mdW5jdGlvbiBMKFoxLCQxKXt2b2lkIDA9PT0kMXx8JDEgaW5zdGFuY2VvZiBMfHwoJDE9bmV3''@;'; put 'put ''IEwoU3RyaW5nKCQxKSkpLHRoaXMuZz1aMSxtLmNhbGwodGhpcyksZC5jYWxsKHRoaXMsdGhpcy5nLnJlcGxhY2UoL15bIFx0XHJcblxmXSt8WyBcdFxyXG5cZl0rJC9nLCIiKSxudWxsLCQxKX12YXIgRj0hMTt0cnl7dmFyIEc9bmV3IFVSTCgiYiIsImh0dHA6Ly9hIik7Ry5wYXRobmFtZT0i''@;'; put 'put ''YyUyMGQiLEY9Imh0dHA6Ly9hL2MlMjBkIj09PUcuaHJlZn1jYXRjaChaMSl7fWlmKCFGKXt2YXIgVT1PYmplY3QuY3JlYXRlKG51bGwpO1UuZnRwPTIxLFUuZmlsZT0wLFUuZ29waGVyPTcwLFUuaHR0cD04MCxVLmh0dHBzPTQ0MyxVLndzPTgwLFUud3NzPTQ0Mzt2YXIgSz1PYmplY3QuY3Jl''@;'; put 'put ''YXRlKG51bGwpO0tbIiUyZSJdPSIuIixLWyIuJTJlIl09Ii4uIixLWyIlMmUuIl09Ii4uIixLWyIlMmUlMmUiXT0iLi4iO3ZhciBDMT0vW2EtekEtWl0vLFExPS9bYS16QS1aMC05K1wtLl0vO0wucHJvdG90eXBlPXt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhyZWZ9LGdldCBo''@;'; put 'put ''cmVmKCl7aWYodGhpcy5tKXJldHVybiB0aGlzLmc7dmFyIFoxPSIiO3JldHVybigiIiE9dGhpcy5CfHxudWxsIT10aGlzLmopJiYoWjE9dGhpcy5CKyhudWxsIT10aGlzLmo/IjoiK3RoaXMuajoiIikrIkAiKSx0aGlzLnByb3RvY29sKyh0aGlzLkc/Ii8vIitaMSt0aGlzLmhvc3Q6IiIpK3Ro''@;'; put 'put ''aXMucGF0aG5hbWUrdGhpcy5BK3RoaXMuQ30sc2V0IGhyZWYoWjEpe20uY2FsbCh0aGlzKSxkLmNhbGwodGhpcyxaMSl9LGdldCBwcm90b2NvbCgpe3JldHVybiB0aGlzLmwrIjoifSxzZXQgcHJvdG9jb2woWjEpe3RoaXMubXx8ZC5jYWxsKHRoaXMsWjErIjoiLCJzY2hlbWUgc3RhcnQiKX0s''@;'; put 'put ''Z2V0IGhvc3QoKXtyZXR1cm4gdGhpcy5tPyIiOnRoaXMudj90aGlzLm8rIjoiK3RoaXMudjp0aGlzLm99LHNldCBob3N0KFoxKXshdGhpcy5tJiZ0aGlzLkcmJmQuY2FsbCh0aGlzLFoxLCJob3N0Iil9LGdldCBob3N0bmFtZSgpe3JldHVybiB0aGlzLm99LHNldCBob3N0bmFtZShaMSl7IXRo''@;'; put 'put ''aXMubSYmdGhpcy5HJiZkLmNhbGwodGhpcyxaMSwiaG9zdG5hbWUiKX0sZ2V0IHBvcnQoKXtyZXR1cm4gdGhpcy52fSxzZXQgcG9ydChaMSl7IXRoaXMubSYmdGhpcy5HJiZkLmNhbGwodGhpcyxaMSwicG9ydCIpfSxnZXQgcGF0aG5hbWUoKXtyZXR1cm4gdGhpcy5tPyIiOnRoaXMuRz8iLyIr''@;'; put 'put ''dGhpcy5zLmpvaW4oIi8iKTp0aGlzLnZhfSxzZXQgcGF0aG5hbWUoWjEpeyF0aGlzLm0mJnRoaXMuRyYmKHRoaXMucz1bXSxkLmNhbGwodGhpcyxaMSwicmVsYXRpdmUgcGF0aCBzdGFydCIpKX0sZ2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLm18fCF0aGlzLkF8fCI/Ij09dGhpcy5BPyIiOnRo''@;'; put 'put ''aXMuQX0sc2V0IHNlYXJjaChaMSl7IXRoaXMubSYmdGhpcy5HJiYodGhpcy5BPSI/IiwiPyI9PVoxWzBdJiYoWjE9WjEuc2xpY2UoMSkpLGQuY2FsbCh0aGlzLFoxLCJxdWVyeSIpKX0sZ2V0IGhhc2goKXtyZXR1cm4gdGhpcy5tfHwhdGhpcy5DfHwiIyI9PXRoaXMuQz8iIjp0aGlzLkN9LHNl''@;'; put 'put ''dCBoYXNoKFoxKXt0aGlzLm18fChaMT8odGhpcy5DPSIjIiwiIyI9PVoxWzBdJiYoWjE9WjEuc2xpY2UoMSkpLGQuY2FsbCh0aGlzLFoxLCJmcmFnbWVudCIpKTp0aGlzLkM9IiIpfSxnZXQgb3JpZ2luKCl7dmFyIFoxO2lmKHRoaXMubXx8IXRoaXMubClyZXR1cm4iIjtzd2l0Y2godGhpcy5s''@;'; put 'put ''KXtjYXNlImRhdGEiOmNhc2UiZmlsZSI6Y2FzZSJqYXZhc2NyaXB0IjpjYXNlIm1haWx0byI6cmV0dXJuIm51bGwifXJldHVybihaMT10aGlzLmhvc3QpP3RoaXMubCsiOi8vIitaMToiIn19O3ZhciBqMT10LlVSTDtqMSYmKEwuY3JlYXRlT2JqZWN0VVJMPWZ1bmN0aW9uKFoxKXtyZXR1cm4g''@;'; put 'put ''ajEuY3JlYXRlT2JqZWN0VVJMLmFwcGx5KGoxLGFyZ3VtZW50cyl9LEwucmV2b2tlT2JqZWN0VVJMPWZ1bmN0aW9uKFoxKXtqMS5yZXZva2VPYmplY3RVUkwoWjEpfSksdC5VUkw9TH19KHdpbmRvdyk7dmFyIG5hPXdpbmRvdy5jdXN0b21FbGVtZW50cyxjYT0hMSx6ZT1udWxsO2Z1bmN0aW9u''@;'; put 'put ''IEV0KCl7d2luZG93LkhUTUxUZW1wbGF0ZUVsZW1lbnQuYm9vdHN0cmFwJiZ3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudC5ib290c3RyYXAod2luZG93LmRvY3VtZW50KSx6ZSYmemUoKSxjYT0hMCx3aW5kb3cuV2ViQ29tcG9uZW50cy5yZWFkeT0hMCxkb2N1bWVudC5kaXNwYXRjaEV2ZW50''@;'; put 'put ''KG5ldyBDdXN0b21FdmVudCgiV2ViQ29tcG9uZW50c1JlYWR5Iix7YnViYmxlczohMH0pKX1uYS5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrJiZuYS5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrKGZ1bmN0aW9uKHQpe3plPXQsY2EmJnQoKX0pLCJjb21wbGV0ZSIhPT1kb2N1bWVudC5yZWFk''@;'; put 'put ''eVN0YXRlPyh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsRXQpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixFdCksRXQoKX0pKTpFdCgpfS5jYWxsKHRoaXMpLGZ1bmN0''@;'; put 'put ''aW9uKFgsRjEpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9RjEoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLEYxKTtlbHNle3ZhciBrLEE9RjEoKTtmb3Io''@;'; put 'put ''ayBpbiBBKSgib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0czpYKVtrXT1BW2tdfX0odGhpcyxmdW5jdGlvbigpe3JldHVybiBGMT17Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiOmZ1bmN0aW9uKEEsZSxjKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ2xhcml0eUljb25zQXBpPXZvaWQgMDt2YXIgcj1jKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLGE9e307ZnVuY3Rpb24gbygpe31PYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bywiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5zaW5nbGVJbnN0YW5jZT1vLnNpbmdsZUluc3RhbmNlP28uc2luZ2xlSW5zdGFuY2U6bmV3IG99LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksby5wcm90b3R5cGUudmFsaWRhdGVOYW1lPWZ1bmN0aW9uKGgpe2lm''@;'; put 'put ''KDA9PT1oLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNoYXBlIG5hbWUgb3IgYWxpYXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmchIik7aWYoL1xzLy50ZXN0KGgpKXRocm93IG5ldyBFcnJvcigiU2hhcGUgbmFtZSBvciBhbGlhcyBtdXN0IG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNl''@;'; put 'put ''IGNoYXJhY3RlcnMhIik7cmV0dXJuITB9LG8ucHJvdG90eXBlLm5vcm1hbGl6ZVNoYXBlTmFtZT1mdW5jdGlvbihoKXtyZXR1cm4gaC50b0xvd2VyQ2FzZSgpfSxvLnByb3RvdHlwZS5zZXRJY29uVGVtcGxhdGU9ZnVuY3Rpb24oaCxmKXtmPWYudHJpbSgpLHRoaXMudmFsaWRhdGVOYW1lKGgp''@;'; put 'put ''JiYoaD10aGlzLm5vcm1hbGl6ZVNoYXBlTmFtZShoKSxhW2hdJiZkZWxldGUgYVtoXSxhW2hdPWYsci5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2UuZW1pdENoYW5nZXMoaCxmKSl9LG8ucHJvdG90eXBlLnNldEljb25BbGlhc2VzPWZ1bmN0aW9uKGgsZixnKXtmb3IodmFyIHU9MCxw''@;'; put 'put ''PWc7dTxwLmxlbmd0aDt1Kyspe3ZhciB2PXBbdV07dGhpcy52YWxpZGF0ZU5hbWUodikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLHYse2dldDpmdW5jdGlvbigpe3JldHVybiBoW2ZdfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX0sby5wcm90b3R5cGUuYWRkPWZ1bmN0aW9u''@;'; put 'put ''KGgpe2lmKCJvYmplY3QiIT10eXBlb2YgaCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCBsaXRlcmFsIHBhc3NlZCBpbiB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gICAgICAgICAgICAgICAgeyAic2hhcGUtbmFtZSI6ICJzaGFwZS10ZW1wbGF0ZSIg''@;'; put 'put ''fScpO2Zvcih2YXIgZiBpbiBoKWguaGFzT3duUHJvcGVydHkoZikmJnRoaXMuc2V0SWNvblRlbXBsYXRlKGYsaFtmXSl9LG8ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihoKXtyZXR1cm4hIWFbdGhpcy5ub3JtYWxpemVTaGFwZU5hbWUoaCldfSxvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oaCl7''@;'; put 'put ''aWYoIWgpcmV0dXJuIGE7aWYoInN0cmluZyIhPXR5cGVvZiBoKXRocm93IG5ldyBUeXBlRXJyb3IoIk9ubHkgc3RyaW5nIGFyZ3VtZW50IGlzIGFsbG93ZWQgaW4gdGhpcyBtZXRob2QuIik7cmV0dXJuIGFbdGhpcy5ub3JtYWxpemVTaGFwZU5hbWUoaCldfSxvLnByb3RvdHlwZS5hbGlhcz1m''@;'; put 'put ''dW5jdGlvbihoKXtpZigib2JqZWN0IiE9dHlwZW9mIGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgbGl0ZXJhbCBwYXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxuICAgICAgICAgICAgICAgIHsgInNoYXBlLW5hbWUiOiBbImFsaWFzLW5h''@;'; put 'put ''bWUiLCAuLi5dIH0nKTtmb3IodmFyIGYgaW4gaClpZihoLmhhc093blByb3BlcnR5KGYpKXtpZighYS5oYXNPd25Qcm9wZXJ0eShmKSl0aHJvdyBuZXcgRXJyb3IoJ0FuIGljb24gIicrZisiXCIgeW91IGFyZSB0cnlpbmcgdG8gc2V0IGFsaWFzZXMgdG8gZG9lc24ndCBleGlzdCBpbiB0aGUg''@;'; put 'put ''Q2xhcml0eSBJY29ucyBzZXRzISIpO3RoaXMuc2V0SWNvbkFsaWFzZXMoYSxmLGhbZl0pfX0sZS5DbGFyaXR5SWNvbnNBcGk9Yz1vfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWVsZW1lbnQudHMiOmZ1bmN0aW9uKEEsZSxsKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ2xhcml0eUljb25FbGVtZW50PXZvaWQgMDt2YXIgcj1sKCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzIiksYT1sKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZl''@;'; put 'put ''ci50cyIpLGM9MCxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtvLmNsYXNzTmFtZT0iaXMtb2ZmLXNjcmVlbiI7dmFyIGg9ZnVuY3Rpb24oKXtyZXR1cm4gSFRNTEVsZW1lbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBmKCl7dmFyIGc9aC5hcHBseSh0aGlzLGFy''@;'; put 'put ''Z3VtZW50cyk7cmV0dXJuIGcuY2xySWNvblVuaXFJZD0iX2Nscl9pY29uXyIrYyxjKyssZ30ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJihoPWZ1bmN0aW9uKCl7cmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KEhUTUxFbGVtZW50LGFyZ3VtZW50cyx0aGlzLmNvbnN0cnVjdG9yKX0pLChlLkNs''@;'; put 'put ''YXJpdHlJY29uRWxlbWVudD1mKS5vYnNlcnZlZEF0dHJpYnV0ZXM9WyJzaGFwZSIsInNpemUiLCJ0aXRsZSJdLCgoZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOntjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Zn19''@;'; put 'put ''KSkuY29uc3RydWN0b3I9ZikucHJvdG90eXBlLl9hcHBlbmRDdXN0b21UaXRsZT1mdW5jdGlvbigpe3ZhciBnPW8uY2xvbmVOb2RlKCExKTtnLmlkPXRoaXMuY2xySWNvblVuaXFJZCxnLnRleHRDb250ZW50PXRoaXMuY3VycmVudFRpdGxlQXR0clZhbCx0aGlzLmFwcGVuZENoaWxkKGcpfSxm''@;'; put 'put ''LnByb3RvdHlwZS5fc2V0SWNvblNpemU9ZnVuY3Rpb24oZyl7IU51bWJlcihnKXx8TnVtYmVyKGcpPDA/KHRoaXMuc3R5bGUud2lkdGg9bnVsbCx0aGlzLnN0eWxlLmhlaWdodD1udWxsKToodGhpcy5zdHlsZS53aWR0aD1nKyJweCIsdGhpcy5zdHlsZS5oZWlnaHQ9ZysicHgiKX0sZi5wcm90''@;'; put 'put ''b3R5cGUuX25vcm1hbGl6ZVNoYXBlPWZ1bmN0aW9uKGcpe3JldHVybiBnLnNwbGl0KC9ccy8pWzBdLnRvTG93ZXJDYXNlKCl9LGYucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dmFyIGcsdT10aGlzO2lmKHRoaXMuZ2V0QXR0cmlidXRlKCJyb2xlIil8fHRoaXMuc2V0''@;'; put 'put ''QXR0cmlidXRlKCJyb2xlIiwibm9uZSIpLHRoaXMuaGFzQXR0cmlidXRlKCJzaXplIikmJihnPXRoaXMuZ2V0QXR0cmlidXRlKCJzaXplIiksdGhpcy5jdXJyZW50U2l6ZUF0dHJWYWwhPT1nJiYodGhpcy5jdXJyZW50U2l6ZUF0dHJWYWw9Zyx0aGlzLl9zZXRJY29uU2l6ZShnKSkpLHRoaXMu''@;'; put 'put ''aGFzQXR0cmlidXRlKCJzaGFwZSIpKXt2YXIgcD10aGlzLl9ub3JtYWxpemVTaGFwZSh0aGlzLmdldEF0dHJpYnV0ZSgic2hhcGUiKSk7aWYodGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbj1hLlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5zdWJzY3JpYmVUbyhwLGZ1bmN0''@;'; put 'put ''aW9uKHYpe3UuX2luamVjdFRlbXBsYXRlKHYpfSksdGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsPXAsIXIuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmhhcyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpKXJldHVybiB2b2lkIHRoaXMuX2luamVjdEVycm9yVGVtcGxhdGUoKTtpZigocD1yLkNs''@;'; put 'put ''YXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKSk9PT10aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlKXJldHVybjt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPXB9dGhpcy5oYXNBdHRyaWJ1dGUoInRpdGxlIikmJihwPXRoaXMuZ2V0QXR0cmlidXRl''@;'; put 'put ''KCJ0aXRsZSIpLHRoaXMuY3VycmVudFRpdGxlQXR0clZhbCE9PXAmJih0aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWw9cCksIXRoaXMuY3VycmVudFNoYXBlQXR0clZhbCl8fHRoaXMuX2luamVjdFRlbXBsYXRlKCl9LGYucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaz1mdW5jdGlv''@;'; put 'put ''bihnLHUscCl7dmFyIHY9dGhpcztpZigic2l6ZSI9PT1nJiZ0aGlzLl9zZXRJY29uU2l6ZShwKSwic2hhcGUiPT09Zyl7aWYodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsPXRoaXMuX25vcm1hbGl6ZVNoYXBlKHApLHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24mJih0aGlzLl9zaGFw''@;'; put 'put ''ZVRlbXBsYXRlU3Vic2NyaXB0aW9uKCksdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbj1hLlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5zdWJzY3JpYmVUbyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwsZnVuY3Rpb24oSCl7di5faW5qZWN0VGVtcGxhdGUoSCl9KSksIXIu''@;'; put 'put ''Q2xhcml0eUljb25zQXBpLmluc3RhbmNlLmhhcyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpKXJldHVybiB2b2lkIHRoaXMuX2luamVjdEVycm9yVGVtcGxhdGUoKTt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPXIuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCh0aGlzLmN1cnJlbnRT''@;'; put 'put ''aGFwZUF0dHJWYWwpfSJ0aXRsZSI9PT1nJiYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsPXAsIXRoaXMuY3VycmVudFNoYXBlQXR0clZhbCl8fHRoaXMuX2luamVjdFRlbXBsYXRlKCl9LGYucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dGhpcy5fc2hhcGVUZW1w''@;'; put 'put ''bGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpfSxmLnByb3RvdHlwZS5fc2V0QXJpYUxhYmVsbGVkQnk9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IiksdT0odT10aGlzLnF1ZXJ5U2VsZWN0b3IoInN2''@;'; put 'put ''ZyIpKXx8dGhpcztnP2cmJmcuaW5kZXhPZih0aGlzLmNsckljb25VbmlxSWQpPDAmJnUuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLGcrIiAiK3RoaXMuY2xySWNvblVuaXFJZCk6dS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdGhpcy5jbHJJY29uVW5pcUlkKX0sZi5w''@;'; put 'put ''cm90b3R5cGUuX2luamVjdFRlbXBsYXRlPWZ1bmN0aW9uKGcpe2cmJmchPT10aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlJiYodGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZT1nKSx0aGlzLmlubmVySFRNTD10aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlLHRoaXMuY3VycmVudFRpdGxlQXR0clZh''@;'; put 'put ''bCYmKHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KCksdGhpcy5fYXBwZW5kQ3VzdG9tVGl0bGUoKSl9LGYucHJvdG90eXBlLl9pbmplY3RFcnJvclRlbXBsYXRlPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZT1yLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQoImVycm9y''@;'; put 'put ''IiksdGhpcy5faW5qZWN0VGVtcGxhdGUoKX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtc2Z4LnRzIjpmdW5jdGlvbihBLGUsbCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNsYXJpdHlJY29ucz12b2lk''@;'; put 'put ''IDA7dmFyIHI9bCgiLi9wcm9qZWN0cy9pY29ucy9zcmMvaW5kZXgudHMiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiQ2xhcml0eUljb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5DbGFyaXR5SWNvbnN9fSksbD1sKCIuL3Byb2plY3RzL2ljb25zL3NyYy9z''@;'; put 'put ''aGFwZXMvYWxsLXNoYXBlcy50cyIpLHIuQ2xhcml0eUljb25zLmFkZChsLkFsbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyI6ZnVuY3Rpb24oQSxlLGEpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks''@;'; put 'put ''ZS5DbGFyaXR5SWNvbnM9dm9pZCAwO3ZhciBjPWEoIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiKSxyPWEoIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1lbGVtZW50LnRzIik7YT1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMu''@;'; put 'put ''dHMiKSwoZS5DbGFyaXR5SWNvbnM9Yz1jLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZSkuYWRkKGEuQ29yZVNoYXBlcyksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpfHwod2luZG93LkNsYXJpdHlJY29ucz1jKSxjdXN0''@;'; put 'put ''b21FbGVtZW50cy5nZXQoImNsci1pY29uIil8fGN1c3RvbUVsZW1lbnRzLmRlZmluZSgiY2xyLWljb24iLHIuQ2xhcml0eUljb25FbGVtZW50KSl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyI6ZnVuY3Rpb24oQSxlLHUpeyJ1c2Ugc3RyaWN0IjtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5BbGxTaGFwZXM9dm9pZCAwO3ZhciByPXUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMudHMiKSxhPXUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb21tZXJjZS1zaGFwZXMu''@;'; put 'put ''dHMiKSxjPXUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpLG89dSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2Vzc2VudGlhbC1zaGFwZXMudHMiKSxoPXUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9tZWRpYS1zaGFwZXMudHMiKSxmPXUo''@;'; put 'put ''Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzIiksZz11KCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiKSxwPXUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIiksdj0odT11''@;'; put 'put ''KCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyIpLHA9W2MuQ29yZVNoYXBlcyxhLkNvbW1lcmNlU2hhcGVzLG8uRXNzZW50aWFsU2hhcGVzLGguTWVkaWFTaGFwZXMsZi5Tb2NpYWxTaGFwZXMsZy5UZWNobm9sb2d5U2hhcGVzLHUuVHJhdmVsU2hhcGVzLHIu''@;'; put 'put ''Q2hhcnRTaGFwZXMscC5UZXh0RWRpdFNoYXBlc10se30pO2UuQWxsU2hhcGVzPXY7Zm9yKHZhciBIPTAsQz1wO0g8Qy5sZW5ndGg7SCsrKXt2YXIgVixTPUNbSF07Zm9yKFYgaW4gUylTLmhhc093blByb3BlcnR5KFYpJiYodltWXT1TW1ZdKX0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYm''@;'; put 'put ''d2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQodil9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsYSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShl''@;'; put 'put ''LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNoYXJ0U2hhcGVzPWUuQ2xyU2hhcGVCZWxsQ3VydmU9ZS5DbHJTaGFwZVRpY2tDaGFydD1lLkNsclNoYXBlU2NhdHRlclBsb3Q9ZS5DbHJTaGFwZVBpZUNoYXJ0PWUuQ2xyU2hhcGVMaW5lQ2hhcnQ9ZS5DbHJTaGFwZUhlYXRNYXA9ZS5DbHJT''@;'; put 'put ''aGFwZUdyaWRDaGFydD1lLkNsclNoYXBlQ3VydmVDaGFydD1lLkNsclNoYXBlQ2xvdWRDaGFydD1lLkNsclNoYXBlQnViYmxlQ2hhcnQ9ZS5DbHJTaGFwZUJveFBsb3Q9ZS5DbHJTaGFwZUJhckNoYXJ0PWUuQ2xyU2hhcGVBeGlzQ2hhcnQ9dm9pZCAwO3ZhciByPWEoIi4vcHJvamVjdHMvaWNv''@;'; put 'put ''bnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIik7YT1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGUuQ2xyU2hhcGVBeGlzQ2hhcnQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBM''@;'; put 'put ''IDQgNyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMg''@;'; put 'put ''MjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gNi4wMDcgMjYuNzMx''@;'; put 'put ''IEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYg''@;'; put 'put ''MTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUg''@;'; put 'put ''NiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2''@;'; put 'put ''IDEzLjAyNiAzMiAxMy4yMiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4z''@;'; put 'put ''IDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcgMjYuNzMxIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAy''@;'; put 'put ''OSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40''@;'; put 'put ''MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAx''@;'; put 'put ''IDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1''@;'; put 'put ''IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3''@;'; put 'put ''LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1''@;'; put 'put ''IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4x''@;'; put 'put ''MTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAx''@;'; put 'put ''MS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg''@;'; put 'put ''MzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1''@;'; put 'put ''OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4w''@;'; put 'put ''MSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEz''@;'; put 'put ''NCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0''@;'; put 'put ''IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLGUuQ2xyU2hhcGVCYXJDaGFydD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAgTCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAy''@;'; put 'put ''NiBMIDExLjQgMTEuNiBMIDguNiAxMS42IEwgOC42IDI2IEwgNyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYg''@;'; put 'put ''TCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42IEwgMjQuNiAyNiBMIDIzIDI2IFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMw''@;'; put 'put ''LjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAy''@;'; put 'put ''MyAxNiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBD''@;'; put 'put ''IDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEz''@;'; put 'put ''LjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYgMjYgTCA3IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJh''@;'; put 'put ''ZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48''@;'; put 'put ''L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiPjwvcGF0aD5c''@;'; put 'put ''biAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAx''@;'; put 'put ''My40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBaIj48L3Bh''@;'; put 'put ''dGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIg''@;'; put 'put ''MTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBMIDguNiAyNiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBMIDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAyNiBMIDE1IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1h''@;'; put 'put ''bGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRl''@;'; put 'put ''ZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAx''@;'; put 'put ''My4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4x''@;'; put 'put ''NDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMx''@;'; put 'put ''IEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4z''@;'; put 'put ''NTcgTCAzNCAxNS4zNTcgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAxMCBaIE0gMTUgMjYgTCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYgTCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMz''@;'; put 'put ''LjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4n''@;'; put 'put ''KSxlLkNsclNoYXBlQm94UGxvdD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIs''@;'; put 'put ''NVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBMIDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUuNCAxMy42IEwgOC42IDEzLjYgTCA4LjYg''@;'; put 'put ''MTcuMiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDI0IEwgMjkgMjQgTCAyOSAxMCBMIDE5IDEwIEwgMTkgMjQgWiBNIDIwLjYgMTEuNiBMIDI3LjQgMTEuNiBMIDI3''@;'; put 'put ''LjQgMTcuMiBMIDIwLjYgMTcuMiBMIDIwLjYgMTEuNiBaIE0gMjcuNCAyMi40IEwgMjAuNiAyMi40IEwgMjAuNiAxOC44IEwgMjcuNCAxOC44IEwgMjcuNCAyMi40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAz''@;'; put 'put ''NCA3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAxOSAyNCBMIDI5IDI0IEwgMjkgMTAgTCAxOSAxMCBaIE0gMjEgMTIgTCAyNyAxMiBMIDI3IDE3IEwgMjEg''@;'; put 'put ''MTcgWiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAxOSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIy''@;'; put 'put ''LjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwg''@;'; put 'put ''MzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQg''@;'; put 'put ''WiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgMTAgTCAyMy43MjggMTAgQyAy''@;'; put 'put ''NC4xMDUgMTAuNTk2IDI0LjU2NCAxMS4xMzUgMjUuMDkgMTEuNiBMIDIwLjYgMTEuNiBMIDIwLjYgMTcuMiBMIDI3LjQgMTcuMiBMIDI3LjQgMTIuOTg3IEMgMjcuOTA5IDEzLjE3NyAyOC40NDUgMTMuMzEzIDI5IDEzLjM4NyBMIDI5IDI0IEwgMTkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYg''@;'; put 'put ''MTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQg''@;'; put 'put ''MzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMi4zMTIgNi44MTcgMjIuNzMyIDguNTY2IDIzLjYzMyAxMCBMIDE5IDEwIEwgMTkgMjQgTCAyOSAyNCBMIDI5IDEzLjQyNyBDIDI5LjEwMyAxMy40NCAyOS4yMDYgMTMu''@;'; put 'put ''NDUxIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAxMiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAxNyBMIDkgMTcgTCA5IDE0IEwgMTUgMTQg''@;'; put 'put ''WiBNIDIxIDEyIEwgMjUuNDcyIDEyIEMgMjUuOTQgMTIuMzUyIDI2LjQ1MiAxMi42NSAyNyAxMi44ODUgTCAyNyAxNyBMIDIxIDE3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUg''@;'; put 'put ''MzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEy''@;'; put 'put ''IEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAyNCBMIDE5IDI0IEwgMTkgMTUuMzQ1IEMgMTkuMDIxIDE1LjM0OCAyMC42IDE1LjM2IDIwLjYgMTUuMzYgTCAyMC42IDE3LjIgTCAyNy40IDE3LjIgTCAyNy40''@;'; put 'put ''IDE1LjM2IEwgMjkgMTUuMzU3IEwgMjkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBMIDI3LjQgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCI+PC9wYXRoPlxuICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIg''@;'; put 'put ''MTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5''@;'; put 'put ''OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAz''@;'; put 'put ''MC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE5LjAyOCAxMCBMIDE5IDEwIEwgMTkgMTAuMDQ4IEwgMTcuNjI1IDEyLjM5NSBDIDE2LjgwNyAxMy41ODMgMTcuNTcxIDE1LjE5NyAxOSAxNS4zNDUgTCAxOSAyNCBMIDI5IDI0IEwgMjkgMTUuMzU3''@;'; put 'put ''IEwgMzQgMTUuMzU3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAyNyAxNyBMIDIxIDE3IEwgMjEgMTUuMzU3IEwgMjcgMTUuMzU3IFogTSAyNyAyMiBMIDIx''@;'; put 'put ''IDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0''@;'; put 'put ''IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEu''@;'; put 'put ''MDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksZS5DbHJTaGFwZUJ1YmJsZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIg''@;'; put 'put ''MjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4zNDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0MyAyOSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIy''@;'; put 'put ''NyAxNi42IDI0LjYgMTcuMjI3IDI0LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBD''@;'; put 'put ''IDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUgMjMgQyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3IDIwIDIxIDIxLjM0MyAyMSAyMyBaIE0gMTgg''@;'; put 'put ''MjEuNiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMgMTkuNCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIxLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwg''@;'; put 'put ''MiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5''@;'; put 'put ''IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAx''@;'; put 'put ''NSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQg''@;'; put 'put ''Mi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcgMjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQz''@;'; put 'put ''IDIxIDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAxNi42IEMgMjUuMjI3IDE2LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIyNyAxOS40IDI2IDE5LjQgQyAyNi43NzMg''@;'; put 'put ''MTkuNCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcuNCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4y''@;'; put 'put ''MDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQg''@;'; put 'put ''MTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0i''@;'; put 'put ''TSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIz''@;'; put 'put ''IEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIg''@;'; put 'put ''cng9IjMiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUu''@;'; put 'put ''MDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAx''@;'; put 'put ''NSAxMS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQz''@;'; put 'put ''IDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAxOCBDIDI5''@;'; put 'put ''IDE5LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAxNSBDIDI3LjY1NyAxNSAyOSAxNi4zNDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYuNiAyNC42IDE3LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43''@;'; put 'put ''NzMgMjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMgMTYuNiAyNiAxNi42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiByeD0iMyI+PC9w''@;'; put 'put ''YXRoPlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAxMCAxMSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDExLjYgQyA5LjY3NSAxMS42IDguNiAxMi42''@;'; put 'put ''NzUgOC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1IDExLjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0t''@;'; put 'put ''YWxlcnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIx''@;'; put 'put ''LjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEu''@;'; put 'put ''MDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4w''@;'; put 'put ''ODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0i''@;'; put 'put ''TSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1''@;'; put 'put ''MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNC41NzkgMTUuMzU3IEMgMjMuNjM5IDE1Ljg2MyAyMyAxNi44NTcgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2Ljg1NyAyOC4z''@;'; put 'put ''NjEgMTUuODYzIDI3LjQyMSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43OTEgNyAxNCBDIDcgMTYuMjA5IDguNzkxIDE4IDExIDE4IEMgMTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4yMDkgMTAgMTEgMTAgWiBNIDE4IDIwIEMg''@;'; put 'put ''MTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQg''@;'; put 'put ''MTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksZS5D''@;'; put 'put ''bHJTaGFwZUNsb3VkQ2hhcnQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVa''@;'; put 'put ''TTQsMjlWN0gzMlYyOVoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMC45NzEgMTEuMjQzIEMgMjMuMzE0IDEzLjU4NiAyMi4zNjQgMTguMzM1IDE4Ljg0OSAyMS44NDkgQyAxNS4zMzQgMjUuMzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4''@;'; put 'put ''IDEwLjM2NCAxMy4zNjQgQyAxMy44NzkgOS44NDkgMTguNjI4IDguOSAyMC45NzEgMTEuMjQzIFogTSAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDIwLjM4''@;'; put 'put ''OCAxNy43NjUgMjEuMzM4IDE0LjE1NiAxOS42OTcgMTIuNTE2IEMgMTguMDU3IDEwLjg3NiAxNC40NDggMTEuODI1IDExLjYzNiAxNC42MzcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1''@;'; put 'put ''NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjcgMjAuNiAyMy42IDIxLjIyNyAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQu''@;'; put 'put ''MjI3IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNyAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3''@;'; put 'put ''IFogTSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4zMTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEuODQ5IEMgMjIuMzY0IDE4LjMzNSAyMy4zMTQgMTMuNTg2IDIwLjk3MSAxMS4yNDMgQyAxOC42MjggOC45IDEzLjg3''@;'; put 'put ''OSA5Ljg0OSAxMC4zNjQgMTMuMzY0IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMx''@;'; put 'put ''IDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNIDIwLjk3MSAxMS4yNDMgQyAyMy4zMTQgMTMuNTg2IDIyLjM2NCAxOC4zMzUgMTguODQ5IDIxLjg0OSBDIDE1LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMxNCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44NzggMTAuMzY0IDEzLjM2NCBDIDEzLjg3OSA5''@;'; put 'put ''Ljg0OSAxOC42MjggOC45IDIwLjk3MSAxMS4yNDMgWiBNIDExLjYzNiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAyNC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMjAuMzg4IDE3Ljc2NSAyMS4zMzggMTQuMTU2IDE5''@;'; put 'put ''LjY5NyAxMi41MTYgQyAxOC4wNTcgMTAuODc2IDE0LjQ0OCAxMS44MjUgMTEuNjM2IDE0LjYzNyBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcg''@;'; put 'put ''MjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQg''@;'; put 'put ''MjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iNyI+PC9wYXRoPlxuICA8Y2lyY2xlIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBk''@;'; put 'put ''PSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIg''@;'; put 'put ''MTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMi4zNjQgMTguMzM1IDIz''@;'; put 'put ''LjMxNCAxMy41ODYgMjAuOTcxIDExLjI0MyBDIDE4LjYyOCA4LjkgMTMuODc5IDkuODQ5IDEwLjM2NCAxMy4zNjQgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAyMiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcgMjUgMjggMjMuNjU3IDI4IDIyIEMgMjgg''@;'; put 'put ''MjAuMzQzIDI2LjY1NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4''@;'; put 'put ''NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1LjM2NCAxMC41ODYgMjYuMzE0IDguMjQzIDIzLjk3IEMgNS44OTkgMjEuNjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQg''@;'; put 'put ''MTMuMzY0IEMgMTMuMDQ5IDEwLjY3OSAxNi40NTMgOS40OTIgMTguOTU2IDEwLjEyNCBMIDE4LjAwOCAxMS43NDEgQyAxNi4xOCAxMS41MTggMTMuNjk1IDEyLjU3OCAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4''@;'; put 'put ''IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDE5LjIyOCAxOC45MjUgMjAuMjM3IDE2Ljk5OCAyMC40NTYgMTUuMzU3IEwgMjIuMjIgMTUuMzU3IEMgMjIuMDA2IDE3LjQ3NyAyMC44MzggMTkuODYxIDE4Ljg0OSAyMS44NDkgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMg''@;'; put 'put ''MjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0''@;'; put 'put ''NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIy''@;'; put 'put ''IEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''LS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTguOTU2IDEwLjEyNCBDIDE2LjQ1MyA5LjQ5MiAxMy4wNDkgMTAuNjc5''@;'; put 'put ''IDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMC44MzggMTkuODYxIDIyLjAwNiAxNy40NzcgMjIuMjIgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBD''@;'; put 'put ''IDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0''@;'; put 'put ''IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGUu''@;'; put 'put ''Q2xyU2hhcGVDdXJ2ZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIg''@;'; put 'put ''MzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAu''@;'; put 'put ''NTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5''@;'; put 'put ''LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2''@;'; put 'put ''LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1''@;'; put 'put ''IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAy''@;'; put 'put ''OSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45''@;'; put 'put ''NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEz''@;'; put 'put ''LjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMx''@;'; put 'put ''IEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIgNi4yIDExIEMgNi4yIDEwLjU1OCA2LjU1''@;'; put 'put ''OCAxMC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcuODM1IDE3LjEyOSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAxOC4wMTkgMTcuNzggQyAxOS4zMzIgMjIu''@;'; put 'put ''Mzc1IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAyNC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1LjggTCAyMyAyNS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAxNi40ODEgMTguMjIgQyAxNi40MjUgMTgu''@;'; put 'put ''MDI1IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQgMTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDExLjggMTMgMTEuOCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45Njkg''@;'; put 'put ''OS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTgu''@;'; put 'put ''ODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1''@;'; put 'put ''LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAu''@;'; put 'put ''MTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUg''@;'; put 'put ''MTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBM''@;'; put 'put ''IDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAx''@;'; put 'put ''MyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFs''@;'; put 'put ''ZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5''@;'; put 'put ''IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE3LjQ3''@;'; put 'put ''NiAxMi42MTIgMTcuMzc5IDEyLjg0MyAxNy4zMyAxMy4wNzcgQyAxNy4yNjIgMTIuOTQ4IDE3LjE5MiAxMi44MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDExIEMgNiAxMS41NTIgNi40NDggMTIgNyAx''@;'; put 'put ''MiBMIDEzIDEyIEMgMTQuODE3IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTkuODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUyIDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMw''@;'; put 'put ''IDI0LjQ0OCAyOS41NTIgMjQgMjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2MiAxNy43MjUgQyAxOC42NCAxNi41OTggMTguMzg1IDE1Ljc0NCAxOC4xNDcgMTUuMDQ0IEMgMTguNDA3IDE1LjIxNSAxOC43MTcgMTUuMzI2IDE5LjA2NCAxNS4zNTEgQyAxOS4x''@;'; put 'put ''MzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQg''@;'; put 'put ''MTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAx''@;'; put 'put ''MS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxlLkNsclNoYXBlR3JpZENoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0''@;'; put 'put ''YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYy''@;'; put 'put ''MWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMTUgMTcgTCA0IDE3IEMgMi44OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIg''@;'; put 'put ''OCBDIDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAxNyAxNSAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBD''@;'; put 'put ''IDE5Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDMyIDYgQyAzMy4xMDUgNiAzNCA2Ljg5NSAzNCA4IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMyIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBDIDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAxNyAyOCBDIDE3IDI5LjEwNSAxNi4xMDUgMzAgMTUgMzAgWiIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwgMTkgMjEgQyAxOSAxOS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkgQyAzMy4xMDUgMTkgMzQgMTkuODk1IDM0''@;'; put 'put ''IDIxIEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS1hbGVydGVkIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCww''@;'; put 'put ''LDEsMiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLWFsZXJ0ZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDIwLjAxNCAxNyAxOS4xOTUgMTYuMjg3IDE5LjAzIDE1LjM0''@;'; put 'put ''OCBDIDE5LjA0MSAxNS4zNDkgMTkuMDUzIDE1LjM1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzMuOTY4IDE1LjM1NyBDIDMzLjggMTYuMjkyIDMyLjk4MyAxNyAzMiAxNyBaIE0gMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIx''@;'; put 'put ''IDYgTCAyMS4zNzIgNiBMIDE5IDEwLjA0OCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtYWxlcnRlZCIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIs''@;'; put 'put ''MCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC1hbGVydGVkIiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIs''@;'; put 'put ''MCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIx''@;'; put 'put ''LjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0''@;'; put 'put ''IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDE1IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIg''@;'; put 'put ''MTYuMTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUgMTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAyMC4wMTQgMTcgMTkuMTk1IDE2LjI4NyAxOS4wMyAxNS4zNDggQyAxOS4wNDEgMTUuMzQ5IDE5LjA1MyAxNS4zNSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDMzLjk2''@;'; put 'put ''OCAxNS4zNTcgQyAzMy44IDE2LjI5MiAzMi45ODMgMTcgMzIgMTcgWiBNIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjEuMzcyIDYgTCAxOSAxMC4wNDggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVk''@;'; put 'put ''IiBkPSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMgMTYuMTA1IDE5IDE3IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAzMCAxNSAzMCBaIi8+XG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44''@;'; put 'put ''OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAy''@;'; put 'put ''MC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44''@;'; put 'put ''MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNSwxN0g0YTIs''@;'; put 'put ''MiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSAzMiAxNyBMIDIxIDE3''@;'; put 'put ''IEMgMTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjIuNTkgNiBDIDIyLjU5IDYuMDE5IDIyLjU5IDYuMDM3IDIyLjU5IDYuMDU2IEMgMjIuNTkgNi43MjkgMjIuNjggNy4zODEgMjIuODQ4IDggTCAyMSA4IEwgMjEgMTUgTCAzMiAx''@;'; put 'put ''NSBMIDMyIDEzLjE3NSBDIDMyLjcxNyAxMi45NzIgMzMuMzg5IDEyLjY2NCAzNCAxMi4yNjkgTCAzNCAxNSBDIDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9''@;'; put 'put ''Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0i''@;'; put 'put ''TTMyLDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2''@;'; put 'put ''IDQgNiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5''@;'; put 'put ''Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIyLjU5IDYgQyAyMi41OSA2LjAxOSAyMi41OSA2LjAzNyAyMi41OSA2LjA1NiBDIDIyLjU5IDEwLjE0MSAyNS45MDEgMTMuNDUyIDI5Ljk4NiAxMy40NTIgQyAzMS40NjYgMTMuNDUyIDMy''@;'; put 'put ''Ljg0NCAxMy4wMTggMzQgMTIuMjY5IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0gMTUgMzAgTCA0IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUg''@;'; put 'put ''MiAyOCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcgMTkuODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC00LS1iYWRnZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIg''@;'; put 'put ''MzAgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksZS5DbHJTaGFwZUhlYXRNYXA9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1''@;'; put 'put ''IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDI4IDEwIEwgMjggMjYgTCA4IDI2IFogTSA5LjYgMjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42''@;'; put 'put ''IDE3LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDI2IDExLjYgTCAyMS45IDExLjYgTCAyMS45IDE3LjIgTCAyNiAxNy4yIFogTSAxNS43IDExLjYgTCAxNS43IDE3LjIgTCAyMC4zIDE3LjIgTCAyMC4zIDExLjYgWiBNIDE1Ljcg''@;'; put 'put ''MjQgTCAyMC4zIDI0IEwgMjAuMyAxOC44IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAz''@;'; put 'put ''MiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEg''@;'; put 'put ''NCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDIzLjcyOCAxMCBDIDI0LjEwNSAxMC41OTYgMjQuNTY0IDExLjEzNSAyNS4w''@;'; put 'put ''OSAxMS42IEwgMjEuOSAxMS42IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBMIDI2IDEyLjI4NyBDIDI2LjYxMSAxMi42NzkgMjcuMjg0IDEyLjk4MyAyOCAxMy4xODIgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42''@;'; put 'put ''IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAxMS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxMS42IFogTSAxNS43IDI0IEwgMjAuMyAyNCBMIDIwLjMgMTguOCBMIDE1''@;'; put 'put ''LjcgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIg''@;'; put 'put ''MjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDE5LjAyOCAxMCBMIDE4LjA5MSAxMS42IEwgMTUuNyAxMS42''@;'; put 'put ''IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxNS4zNTcgTCAyMS45IDE1LjM1NyBMIDIxLjkgMTcuMiBMIDI2IDE3LjIgTCAyNiAxNS4zNTcgTCAyOCAxNS4zNTcgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQu''@;'; put 'put ''MSAxMS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAyNCBMIDIwLjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEu''@;'; put 'put ''ODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIg''@;'; put 'put ''MzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUg''@;'; put 'put ''MzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gOCAyNiBMIDI4IDI2IEwgMjggMTAgTCA4IDEwIFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAy''@;'; put 'put ''NCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTIgTCAyNiAxMiBaIE0gMjAgMTIgTCAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgWiBNIDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBM''@;'; put 'put ''IDEwIDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBM''@;'; put 'put ''IDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjIuMzEyIDYuODE3IDIyLjczMiA4LjU2NiAyMy42MzMgMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTMuMjMyIEMgMjguNDIxIDEzLjM0NSAyOC44NTkgMTMuNDIyIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDgg''@;'; put 'put ''QyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkgTCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkgWiBNIDI2IDE3IEwgMjIgMTcgTCAyMiAx''@;'; put 'put ''MiBMIDI1LjU4NCAxMiBDIDI1LjcxOSAxMi4xIDI1Ljg1OCAxMi4xOTYgMjYgMTIuMjg3IFogTSAyMCAxMiBMIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBaIE0gMTQgMTIgTCAxNCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMjItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUg''@;'; put 'put ''MzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxOS4wMjggMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAxMCAxOSBMIDE0IDE5IEwg''@;'; put 'put ''MTQgMjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTUuMzU3IEwgMjYgMTUuMzU3IFogTSAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgTCAxNy44NTYgMTIgTCAx''@;'; put 'put ''Ny42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjAgMTUuMzU3IFogTSAxNCAxMiBMIDE0IDE3IEwgMTAgMTcgTCAxMCAxMiBaIj48L3BhdGg+XG4gIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUg''@;'; put 'put ''MjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0''@;'; put 'put ''OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGUuQ2xyU2hhcGVMaW5lQ2hhcnQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwg''@;'; put 'put ''MiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIg''@;'; put 'put ''MTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiPjwvcG9seWdvbj5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0''@;'; put 'put ''IDI5IEwgMzQgNyBDIDM0IDUuODk2IDMzLjEwNSA1IDMyIDUgWiBNIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuNjUgMTMgTCAzMS4zNSAxNC4y''@;'; put 'put ''OCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIy''@;'; put 'put ''LjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAy''@;'; put 'put ''NiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4''@;'; put 'put ''IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BvbHlnb24+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzAuMzIgMTMuNDggTCAzMS4zOCAxNC4yOCBMIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwg''@;'; put 'put ''NC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuMzEgMTMuNDYgQyAyNS4wNSAxMy4xIDIxLjk2OSA5LjIzMyAyMi41NyA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0''@;'; put 'put ''IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgMTIuMzQgQyAzMi44OTUgMTMuMDM2IDMxLjYyNiAxMy40MjkgMzAuMzIgMTMuNDggWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBD''@;'; put 'put ''IDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUuNjIgMTUuMjIyIEwgOS42MDIg''@;'; put 'put ''MjMuOTY4IEwgNS41NSAyMC4zODQgTCA2LjYxIDE5LjE4NiBMIDkuMzA4IDIxLjU3MiBMIDE1LjYzNCAxMi4zOCBMIDIyLjM4NCAyMi4zOTUgTCAyNy43MTcgMTUuMzQ4IEwgMjkuNzI0IDE1LjM0OCBMIDIyLjMwOCAyNS4xNDUgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44''@;'; put 'put ''MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAz''@;'; put 'put ''NC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4x''@;'; put 'put ''MDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3''@;'; put 'put ''IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjcuNDUyIDE1LjM1NyBMIDIyLjM4IDIyLjA2IEwgMTUuNjMgMTIgTCA5LjI4IDIxLjI4IEwgNi43NSAxOS4wNCBMIDUuNDIgMjAuNTMgTCA5LjY1IDI0LjI4IEwgMTUuNjEgMTUuNTYgTCAyMi4yOCAyNS41IEwgMjkuOTU5IDE1LjM1NyBM''@;'; put 'put ''IDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAy''@;'; put 'put ''Mi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjku''@;'; put 'put ''MDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksZS5DbHJTaGFwZVBpZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwg''@;'; put 'put ''NCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRo''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMgMjUgMjMuNDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0gMjMuMjQ3IDIwLjQgTCAxNS40IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEy''@;'; put 'put ''LjY0IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMuMjYxIDIzLjI0NyAyMC40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4g''@;'; put 'put ''IDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+''@;'; put 'put ''PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgQyAzMiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4x''@;'; put 'put ''MDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkg''@;'; put 'put ''MTkgOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBD''@;'; put 'put ''IDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEz''@;'; put 'put ''LjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBMIDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40MTggMjEuNDE4IDI3IDE3IDI3IFogTSAyMy4yNDcgMjAuNCBMIDE1LjQg''@;'; put 'put ''MjAuNCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQgMjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMuMjQ3IDIwLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''PjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMg''@;'; put 'put ''MiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41''@;'; put 'put ''ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg''@;'; put 'put ''MzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBD''@;'; put 'put ''IDEyLjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwgMTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcgMjcgWiBNIDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAxMi42NCAxMy41MTMgMTAuNjAxIDE2LjAx''@;'; put 'put ''OCAxMC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAyNS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNIDI3IDE3IEwgMTkgMTcgTCAxOSAxNS4zNDUgQyAxOS4wMjEgMTUuMzQ4IDE5LjA0MyAxNS4zNDkgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNi44MzEgMTUuMzU3IEMgMjYuOTQyIDE1Ljg4NyAyNyAxNi40MzcgMjcg''@;'; put 'put ''MTcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYu''@;'; put 'put ''ODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1''@;'; put 'put ''NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuODA3IDEzLjU4MyAxNy41''@;'; put 'put ''NzEgMTUuMTk3IDE5IDE1LjM0NSBMIDE5IDE3IEwgMjcgMTcgQyAyNyAxNi40MzcgMjYuOTQyIDE1Ljg4NyAyNi44MzEgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAy''@;'; put 'put ''NyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEu''@;'; put 'put ''ODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIg''@;'; put 'put ''MzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGUuQ2xyU2hhcGVTY2F0dGVyUGxvdD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwg''@;'; put 'put ''MzIgNyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAx''@;'; put 'put ''Ni4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45Mjkg''@;'; put 'put ''MTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3''@;'; put 'put ''IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcu''@;'; put 'put ''NDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4w''@;'; put 'put ''NiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAy''@;'; put 'put ''MS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTSAyMi45MTIg''@;'; put 'put ''MjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTku''@;'; put 'put ''MjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1''@;'; put 'put ''LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUu''@;'; put 'put ''ODk2IDM0IDcgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4''@;'; put 'put ''MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44''@;'; put 'put ''MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1''@;'; put 'put ''LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYw''@;'; put 'put ''NiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQg''@;'; put 'put ''MjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4y''@;'; put 'put ''MjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIg''@;'; put 'put ''MTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAx''@;'; put 'put ''NS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUg''@;'; put 'put ''QyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45''@;'; put 'put ''MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEu''@;'; put 'put ''MjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1''@;'; put 'put ''LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4z''@;'; put 'put ''NzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUg''@;'; put 'put ''MTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1''@;'; put 'put ''LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''IDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3''@;'; put 'put ''LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAy''@;'; put 'put ''My42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8''@;'; put 'put ''Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMy''@;'; put 'put ''IDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkw''@;'; put 'put ''NSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4y''@;'; put 'put ''NSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUu''@;'; put 'put ''NDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0''@;'; put 'put ''NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBM''@;'; put 'put ''IDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAx''@;'; put 'put ''NS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEg''@;'; put 'put ''MjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAy''@;'; put 'put ''NC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIg''@;'; put 'put ''MjAuMzQzIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIg''@;'; put 'put ''MTUuMzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQg''@;'; put 'put ''TCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4z''@;'; put 'put ''OTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEw''@;'; put 'put ''LjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4''@;'; put 'put ''OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAy''@;'; put 'put ''My4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAu''@;'; put 'put ''NjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41Mjgg''@;'; put 'put ''MjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUu''@;'; put 'put ''NTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTku''@;'; put 'put ''MjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBD''@;'; put 'put ''IDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0''@;'; put 'put ''LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAz''@;'; put 'put ''NCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQg''@;'; put 'put ''MTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkw''@;'; put 'put ''NSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4y''@;'; put 'put ''NSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUu''@;'; put 'put ''NDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0''@;'; put 'put ''NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBM''@;'; put 'put ''IDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAx''@;'; put 'put ''NS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEg''@;'; put 'put ''MjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAy''@;'; put 'put ''NC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIg''@;'; put 'put ''MjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4w''@;'; put 'put ''MDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQg''@;'; put 'put ''QyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiBmaWxsLW9wYWNpdHk9IjAiLz4nKSxlLkNsclNoYXBlVGlja0NoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBN''@;'; put 'put ''IDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBM''@;'; put 'put ''IDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5c''@;'; put 'put ''biAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMz''@;'; put 'put ''LjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAg''@;'; put 'put ''MjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0''@;'; put 'put ''IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIgTCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIwIDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAyNSBMIDI3LjcyMyAyNSBDIDI4LjAyMyAy''@;'; put 'put ''NS4wMiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAzIDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAu''@;'; put 'put ''MTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5''@;'; put 'put ''IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMg''@;'; put 'put ''MjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1''@;'; put 'put ''OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAy''@;'; put 'put ''MiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45''@;'; put 'put ''MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAw''@;'; put 'put ''NCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgx''@;'; put 'put ''IDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkg''@;'; put 'put ''QyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4x''@;'; put 'put ''MzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMgMjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAyNS4wMiAyNy43MjMgMjUgTCAyNSAyNSBM''@;'; put 'put ''IDI1IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIwIDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEwIDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBM''@;'; put 'put ''IDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlQmVsbEN1cnZlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyOUgzQTEsMSwwLDEsMSwzLDI3SDMzQTEsMSwwLDEsMSwzMywyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNWgtLjYyYTguMTEsOC4x''@;'; put 'put ''MSwwLDAsMS04LTYuNjdDMjMuNjIsMTQuNDQsMjEuODksNy45NCwxOCw3Ljk0cy01LjY5LDYuNTEtNi4zOCwxMC4zOWE4LjExLDguMTEsMCwwLDEtOCw2LjY1SDNhMSwxLDAsMSwxLDAtMmguNkE2LjExLDYuMTEsMCwwLDAsOS42LDE4YzEuNDEtNy44OCw0LjMtMTIsOC4zNS0xMnM2LjkzLDQu''@;'; put 'put ''MTYsOC4zMywxMmE2LjExLDYuMTEsMCwwLDAsNiw1SDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNoYXJ0U2hhcGVzPXsiYXhpcy1jaGFydCI6ZS5DbHJTaGFwZUF4aXNDaGFydCwiYmFyLWNoYXJ0IjplLkNsclNo''@;'; put 'put ''YXBlQmFyQ2hhcnQsImJ1YmJsZS1jaGFydCI6ZS5DbHJTaGFwZUJ1YmJsZUNoYXJ0LCJjbG91ZC1jaGFydCI6ZS5DbHJTaGFwZUNsb3VkQ2hhcnQsImN1cnZlLWNoYXJ0IjplLkNsclNoYXBlQ3VydmVDaGFydCwiZ3JpZC1jaGFydCI6ZS5DbHJTaGFwZUdyaWRDaGFydCwibGluZS1jaGFydCI6''@;'; put 'put ''ZS5DbHJTaGFwZUxpbmVDaGFydCwicGllLWNoYXJ0IjplLkNsclNoYXBlUGllQ2hhcnQsInRpY2stY2hhcnQiOmUuQ2xyU2hhcGVUaWNrQ2hhcnQsInNjYXR0ZXItcGxvdCI6ZS5DbHJTaGFwZVNjYXR0ZXJQbG90LCJib3gtcGxvdCI6ZS5DbHJTaGFwZUJveFBsb3QsImhlYXQtbWFwIjplLkNs''@;'; put 'put ''clNoYXBlSGVhdE1hcCwiYmVsbC1jdXJ2ZSI6ZS5DbHJTaGFwZUJlbGxDdXJ2ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ2hhcnRTaGFwZXMsImFuYWx5dGljcyIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkNoYXJ0U2hhcGVzWyJsaW5lLWNoYXJ0Il0pKSwidW5kZWZpbmVkIiE9dHlw''@;'; put 'put ''ZW9mIHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoZS5DaGFydFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsYSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNvbW1lcmNlU2hhcGVzPWUuQ2xyU2hhcGVGYWN0b3J5PWUuQ2xyU2hhcGVFbXBsb3llZT1lLkNsclNoYXBlRW1wbG95ZWVHcm91cD1lLkNsclNoYXBlUnVibGU9ZS5DbHJTaGFwZVBlc289ZS5D''@;'; put 'put ''bHJTaGFwZUNvaW5CYWc9ZS5DbHJTaGFwZUJpdGNvaW49ZS5DbHJTaGFwZVllbj1lLkNsclNoYXBlV29uPWUuQ2xyU2hhcGVSdXBlZT1lLkNsclNoYXBlUG91bmQ9ZS5DbHJTaGFwZUVDaGVjaz1lLkNsclNoYXBlRG9sbGFyQmlsbD1lLkNsclNoYXBlQmFuaz1lLkNsclNoYXBlQ3JlZGl0Q2Fy''@;'; put 'put ''ZD1lLkNsclNoYXBlRG9sbGFyPWUuQ2xyU2hhcGVFdXJvPWUuQ2xyU2hhcGVTdG9yZT1lLkNsclNoYXBlV2FsbGV0PWUuQ2xyU2hhcGVTaG9wcGluZ0NhcnQ9ZS5DbHJTaGFwZVBpZ2d5QmFuaz1lLkNsclNoYXBlU2hvcHBpbmdCYWc9ZS5DbHJTaGFwZUNhbGN1bGF0b3I9dm9pZCAwO3ZhciBy''@;'; put 'put ''PWEoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIik7YT1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGUuQ2xyU2hhcGVDYWxjdWxhdG9yPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTgsMzJWNEgyOFYzMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTIsOEgyNS42N1Y2SDExYTEsMSwwLDAsMC0xLDF2NC42N2gyWiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHBvaW50cz0iMTIgMTYgMTAgMTYgMTAgMTggMTQgMTgg''@;'; put 'put ''MTQgMTQgMTIgMTQgMTIgMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBwb2ludHM9IjI0IDE2IDIyIDE2IDIyIDE4IDI2IDE4IDI2IDE0IDI0IDE0IDI0IDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgcG9pbnRzPSIxOCAxNiAxNiAxNiAxNiAxOCAyMCAxOCAyMCAxNCAxOCAxNCAxOCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHBvaW50cz0i''@;'; put 'put ''MTIgMjIgMTAgMjIgMTAgMjQgMTQgMjQgMTQgMjAgMTIgMjAgMTIgMjIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiBwb2ludHM9IjI0IDIyIDIyIDIyIDIyIDI0IDI2IDI0IDI2IDIwIDI0IDIwIDI0IDIyIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgcG9pbnRzPSIxOCAyMiAxNiAyMiAxNiAyNCAyMCAyNCAyMCAyMCAxOCAyMCAxOCAyMiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTkiIHBvaW50cz0iMTIgMjggMTAgMjggMTAgMzAgMTQgMzAgMTQgMjYgMTIgMjYgMTIgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgcG9pbnRzPSIyNCAyOCAyMiAyOCAyMiAzMCAyNiAz''@;'; put 'put ''MCAyNiAyNiAyNCAyNiAyNCAyOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiBwb2ludHM9IjE4IDI4IDE2IDI4IDE2IDMwIDIwIDMwIDIwIDI2IDE4IDI2IDE4IDI4Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTEyLDI4SDEwVjI2aDJabTAtNkgxMFYyMGgyWm0wLTZIMTBWMTRoMlptNywxMkgxN1YyNmgy''@;'; put 'put ''Wm0wLTZIMTdWMjBoMlptMC02SDE3VjE0aDJabTcsMTJIMjRWMjZoMlptMC02SDI0VjIwaDJabTAtNkgyNFYxNGgyWm0wLTdIMTBWNUgyNloiLz4nKSxlLkNsclNoYXBlU2hvcHBpbmdCYWc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0yNSwxMlY5LjA1YTcsNywwLDEsMC0xNCwwdjdhMSwxLDAsMCwwLDIsMFYxNGg4VjEySDEzVjkuMDVhNSw1LDAsMSwxLDEwLDBWMTZhMSwxLDAsMSwwLDIsMFYxNGg1VjMySDZWMTRIOVYxMkg0VjMyLjA5QTEuOTEsMS45MSwwLDAsMCw1LjkxLDM0SDMwLjA5QTEuOTEs''@;'; put 'put ''MS45MSwwLDAsMCwzMiwzMi4wOVYxMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMyw5LjIyYTUsNSwwLDEsMSwxMCwwVjEyaDJWOS4yMmE3LDcsMCwxLDAtMTQsMFYxMmgyWiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI1LDEydjMuMWExLDEsMCwxLDEtMiwwVjEySDEzdjMuMWExLDEsMCwwLDEtMiwwVjEySDRWMzJhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEyWiIvPicpLGUuQ2xyU2hhcGVQaWdneUJhbms9KDAsYS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOS43MiwxMC40N2ExMS42NSwxMS42NSwwLDAsMC02LjMxLjUyQS44LjgsMCwxLDAsMTQsMTIuNDgsMTAuMTEsMTAuMTEsMCwwLDEsMTkuNDQsMTJhLjguOCwwLDEsMCwuMjgt''@;'; put 'put ''MS41N1oiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyNS4zOCIgY3k9IjE2LjcxIiByPSIxLjM2Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIgZD0iTTM1LjUxLDE4LjYzYTEsMSwwLDAsMC0uODQtLjQ0LDMuNDIsMy40MiwwLDAsMS0yLjA5LTEuMTIsMTcuMzUsMTcuMzUsMCwwLDEtMi42My0zLjc4bDIuODgtNC41QTEuODksMS44OSwwLDAsMCwzMyw3YTEuNzcsMS43NywwLDAsMC0xLjMzLTEsMTAuMTIsMTAuMTIsMCwwLDAtNS4z''@;'; put 'put ''OS43NSwxMi43MiwxMi43MiwwLDAsMC0yLjcyLDEuNjMsMTYuOTQsMTYuOTQsMCwwLDAtNS4xNi0xLjM5QzExLjMxLDYuMyw0LjgzLDEwLjksNCwxN0g0YTIuNTYsMi41NiwwLDAsMS0xLjM4LTEuNTMsMS44MSwxLjgxLDAsMCwxLC4xNC0xLjQsMS4xOSwxLjE5LDAsMCwxLC40My0uNDMsMS4w''@;'; put 'put ''OCwxLjA4LDAsMCwwLTEuMTItMS44NUEzLjMxLDMuMzEsMCwwLDAsLjkxLDEzYTQsNCwwLDAsMC0uMzMsMy4wOEE0Ljc2LDQuNzYsMCwwLDAsMywxOC45NWwuOTIuNDZhMTcuNTgsMTcuNTgsMCwwLDAsMS44Miw3bC4xNy4zOEEyMywyMywwLDAsMCw5LjIsMzEuODhhMSwxLDAsMCwwLC43NS4z''@;'; put 'put ''NGg0LjUyYTEsMSwwLDAsMCwuOTItMS4zOEwxNSwyOS45NGwxLjE4LjEzYTIwLjMzLDIwLjMzLDAsMCwwLDQsMGMuMzcuNi43NywxLjIsMS4yMSwxLjc5YTEsMSwwLDAsMCwuOC40MWg0LjM0YTEsMSwwLDAsMCwuOTItMS4zOWMtLjE3LS40LS4zNC0uODMtLjQ3LTEuMi0uMTgtLjUzLS4zMi0x''@;'; put 'put ''LS40My0xLjQ1QTEzLjE4LDEzLjE4LDAsMCwwLDI5LjU2LDI2YTEyLjUsMTIuNSwwLDAsMCwzLDAsMSwxLDAsMCwwLC43OC0uNjJsMi4yNi01LjgxQTEsMSwwLDAsMCwzNS41MSwxOC42M1ptLTMuNzgsNS40NGExMS4zNywxMS4zNywwLDAsMS0yLjM1LS4xMWgwYTguMiw4LjIsMCwwLDEtMi41''@;'; put 'put ''My0uODcsMSwxLDAsMCwwLS45MywxLjc3LDExLjcyLDExLjcyLDAsMCwwLDEuMjkuNTgsOCw4LDAsMCwxLTEuOCwxLjE2bC0xLjA2LjQ4cy40OSwyLjE5LjgyLDMuMTZIMjIuNzljLS4yNC0uMzQtMS40NS0yLjM2LTEuNDUtMi4zNmwtLjY3LjA5YTE4LjUzLDE4LjUzLDAsMCwxLTQuMjUuMTJj''@;'; put 'put ''LS42Ni0uMDYtMS43Ni0uMi0yLjYyLS4zNWwtMS41NS0uMjdzLjYzLDIuNDMuNzUsMi43NHYwSDEwLjQyQTIwLjU3LDIwLjU3LDAsMCwxLDcuNzYsMjZsLS4xOC0uMzlBMTQuNjIsMTQuNjIsMCwwLDEsNiwxNy40OGMuNTQtNS4xOSw2LjEyLTkuMTEsMTIuMTktOC41NGExNS40NywxNS40Nyww''@;'; put 'put ''LDAsMSw1LjA4LDEuNDhsLjYyLjI5LjUtLjQ3QTEwLjI5LDEwLjI5LDAsMCwxLDI3LDguNTRhOC4yNSw4LjI1LDAsMCwxLDQtLjY1bC0zLjM4LDUuMjkuMjUuNWgwYTIxLjE2LDIxLjE2LDAsMCwwLDMuMzEsNC44NCw2LjQ5LDYuNDksMCwwLDAsMi4xNCwxLjM5WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM1LDE4Ljg3QTUuODMsNS44MywwLDAsMSwzMywxNy42MWEyMS42MywyMS42MywwLDAsMS0zLjI5LTQuODRsMy4zOS01LjI5YS45LjksMCwwLDAtLjU0LTEuMzgsOS42Nyw5LjY3LDAsMCwwLTUuMTMuNzIs''@;'; put 'put ''MTIsMTIsMCwwLDAtMy4xMywyQTE3LjM3LDE3LjM3LDAsMCwwLDE4LjYsNy4xNUMxMS44LDYuNTIsNS4yNywxMC45LDQuNTQsMTdsLS4xNC0uMDdBMi43NiwyLjc2LDAsMCwxLDIuOSwxNS4yOWEyLDIsMCwwLDEsLjE1LTEuNTUsMS4zMiwxLjMyLDAsMCwxLC40Ny0uNDgsMS4wOCwxLjA4LDAs''@;'; put 'put ''MSwwLTEuMTItMS44NSwzLjQ1LDMuNDUsMCwwLDAtMS4yMywxLjI1QTQuMTYsNC4xNiwwLDAsMCwuODQsMTUuOWE1LDUsMCwwLDAsMi41NywzbDEsLjU0YTE4LjYyLDE4LjYyLDAsMCwwLDIsNy4zLDIzLDIzLDAsMCwwLDMsNC43OSwxLDEsMCwwLDAsLjguMzhoMy42MWEuNTIuNTIsMCwwLDAs''@;'; put 'put ''LjQtLjc1TDE0LDMwLjM4YTExLDExLDAsMCwxLS4zMy0xLjE4Yy45MS4xNiwyLjA4LjMxLDIuODcuMzhhMjAuMDcsMjAuMDcsMCwwLDAsMy4xMiwwYy4zOS43Ljc5LDEuMzMsMS4xNSwxLjg1YS45My45MywwLDAsMCwuNzcuNDFoMy4xMWEuNjUuNjUsMCwwLDAsLjYxLS44NWMtLjIzLS43NC0u''@;'; put 'put ''NTMtMS43NS0uNzEtMi4zN2ExNS45LDE1LjksMCwwLDAsMy43NS0xLjc2Yy4xNi0uMTEuMzItLjI2LjQ4LS4zOWExMy43NywxMy43NywwLDAsMS0yLjQyLTEsLjguOCwwLDAsMSwuNzQtMS40MiwxMS42NCwxMS42NCwwLDAsMCwzLjE4LDEuMSwxMy4zMSwxMy4zMSwwLDAsMCwyLjY4LjEyLDEs''@;'; put 'put ''MSwwLDAsMCwuOS0uNjZsMS43My00LjQ0QTEsMSwwLDAsMCwzNSwxOC44N1pNMTMuNzksMTEuNTlhLjg2Ljg2LDAsMCwxLS4zLjA1Ljg1Ljg1LDAsMCwxLS4zLTEuNjQsMTIuNDEsMTIuNDEsMCwwLDEsNi42OS0uNTUuODUuODUsMCwxLDEtLjMsMS42N0ExMC43NSwxMC43NSwwLDAsMCwxMy43''@;'; put 'put ''OSwxMS41OVptMTIuNTIsNi4xMmExLjQ0LDEuNDQsMCwxLDEsMS40NC0xLjQ0QTEuNDQsMS40NCwwLDAsMSwyNi4zMiwxNy43MloiLz4nKSxlLkNsclNoYXBlU2hvcHBpbmdDYXJ0PSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMDgs''@;'; put 'put ''NS4zN0ExLDEsMCwwLDAsMzIuMzEsNUgxMS40OWwuNjUsMkgzMUwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42MmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUs''@;'; put 'put ''Mi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xM2ExLDEsMCwwLDAsMS0uNzhsMy4xNy0xNEExLDEsMCwwLDAsMzMuMDgsNS4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTMuMzMiIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiBy''@;'; put 'put ''PSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjAuNzEgNyAyMS44NyA1IDExLjQ5IDUgMTIuMTQgNyAyMC43MSA3IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4xNSwxNS40LDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUs''@;'; put 'put ''MjEuNDhsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjA5LTQuODJaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yMi41Nyw3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFIMTEuNDlsLjY1LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzAsMTMuNWwtLjQyLDBMMjguMzMsMTloLTE1TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5LDE0LjVMOS45NSwyMS40OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgy''@;'; put 'put ''OC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDEuNTctNi45MUE3LjUxLDcuNTEsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdl''@;'; put 'put ''ZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjUiIGN5PSIyOS41IiBy''@;'; put 'put ''PSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNi41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMz''@;'; put 'put ''LjEsNi4zOUExLDEsMCwwLDAsMzIuMzEsNkg5LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0LjQ3TDkuOTUsMjEuNDlsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIs''@;'; put 'put ''MjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwzLjItMTNBMSwxLDAsMCwwLDMzLjEsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGN4PSIxMy41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUu''@;'; put 'put ''NjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMS4xOS00Ljg0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYs''@;'; put 'put ''MS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNi41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDkuMjFMOC43Niw0LjU3YTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIu''@;'; put 'put ''NzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuNzEtN0E3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZVdhbGxldD0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDE1SDMxVjlhMSwxLDAsMCwwLTEtMUg2YTEsMSwwLDAsMS0xLS44MlY2LjgyQTEsMSwwLDAsMSw2LDZIMjkuNThhMSwxLDAsMCwwLDAtMkg2QTMsMywwLDAsMCwzLDdhMy4wOCwzLjA4''@;'; put 'put ''LDAsMCwwLDAsLjM2VjI3LjkzQTQuMSw0LjEsMCwwLDAsNy4xMywzMkgzMGExLDEsMCwwLDAsMS0xVjI1aDFhMSwxLDAsMCwwLDEtMVYxNkExLDEsMCwwLDAsMzIsMTVaTTI5LDMwSDcuMTNBMi4xMSwyLjExLDAsMCwxLDUsMjcuOTNWOS44OEEzLjExLDMuMTEsMCwwLDAsNiwxMEgyOXY1SDIy''@;'; put 'put ''YTUsNSwwLDAsMCwwLDEwaDdabTItN0gyMmEzLDMsMCwwLDEsMC02SDMxWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjIzLjAxIiBjeT0iMjAiIHI9IjEuNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjk0LDE0SDMxVjlhMSwxLDAsMCwwLTEtMUg2QTEsMSwwLDAsMSw1LDdINVY3QTEsMSwwLDAsMSw2LDZIMjkuNmExLDEsMCwxLDAsMC0ySDZBMi45NCwyLjk0LDAsMCwwLDMsNi44OHYyMUE0LjEzLDQuMTMsMCwwLDAsNy4x''@;'; put 'put ''NSwzMkgzMGExLDEsMCwwLDAsMS0xVjI2aDEuOTRhLjkzLjkzLDAsMCwwLDEtLjkxdi0xMEExLjA4LDEuMDgsMCwwLDAsMzIuOTQsMTRaTTMyLDI0bC04LjU4LDBhMy44NywzLjg3LDAsMCwxLTMuNzMtNCwzLjg3LDMuODcsMCwwLDEsMy43My00TDMyLDE2WiIvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBjeD0iMjQuMDQiIGN5PSIxOS45MiIgcj0iMS41Ii8+JyksZS5DbHJTaGFwZVN0b3JlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJN''@;'; put 'put ''MjgsMzBIMTZWMjJIMTR2OEg4VjIySDZ2OGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMzLjc5LDEzLjI3LDI5LjcxLDUuMTFBMiwyLDAsMCww''@;'; put 'put ''LDI3LjkyLDRIOC4wOEEyLDIsMCwwLDAsNi4yOSw1LjExTDIuMjEsMTMuMjdhMiwyLDAsMCwwLS4yMS45djMuMDhhMiwyLDAsMCwwLC40NiwxLjI4QTQuNjcsNC42NywwLDAsMCw2LDIwLjEzYTQuNzIsNC43MiwwLDAsMCwzLTEuMDcsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCww''@;'; put 'put ''LDAsNiwwLDQuNzMsNC43MywwLDAsMCw2LDAsNC43Miw0LjcyLDAsMCwwLDYuNTMtLjUyQTIsMiwwLDAsMCwzNCwxNy4yNlYxNC4xN0EyLDIsMCwwLDAsMzMuNzksMTMuMjdaTTMwLDE4LjEzQTIuNjgsMi42OCwwLDAsMSwyNy44MiwxN0wyNywxNS44OCwyNi4xOSwxN2EyLjcxLDIuNzEsMCww''@;'; put 'put ''LDEtNC4zNywwTDIxLDE1Ljg4LDIwLjE5LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMMTUsMTUuODgsMTQuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEw5LDE1Ljg4LDguMTgsMTdBMi42OCwyLjY4LDAsMCwxLDYsMTguMTNhMi42NCwyLjY0LDAsMCwxLTItLjg4VjE0LjE3TDguMDgs''@;'; put 'put ''NkgyNy45MkwzMiwxNC4xNnYuNjdsMCwyLjM5QTIuNjcsMi42NywwLDAsMSwzMCwxOC4xM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOCwzMEgxNlYyMkgxNHY4SDhWMjJINnY4YTIsMiwwLDAsMCwyLDJIMjhhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYyMkgyOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAsMCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiww''@;'; put 'put ''LDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwuNDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQuNzIsMCwwLDAsMy0xLjA3LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41''@;'; put 'put ''MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdBMiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0xNSwxNC40djEuNTJMMTQuMTgsMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEw5LDE1Ljg4VjE0LjRMMTEuNTksNkgxNlptMTIsMS40OEwyNi4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDIxLDE1''@;'; put 'put ''Ljg4bDAsMFYxNC40TDIwLDZoNC40NUwyNywxNC40WiIvPicpLGUuQ2xyU2hhcGVFdXJvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEuNDgsMjguNDlhMSwxLDAsMCwwLTEuMzgtLjMyQTEyLDEyLDAsMCwx''@;'; put 'put ''LDEyLjQ1LDIySDI0LjE2YTEsMSwwLDAsMCwwLTJIMTEuOTNhMTEuMTYsMTEuMTYsMCwwLDEsMC00SDI0LjE2YTEsMSwwLDAsMCwwLTJIMTIuNDVBMTIsMTIsMCwwLDEsMzAuMDYsNy44YTEsMSwwLDAsMCwxLjA2LTEuN0ExNCwxNCwwLDAsMCwxMC4zNCwxNEgzLjU0YTEsMSwwLDEsMCwwLDJI''@;'; put 'put ''OS45MWExNCwxNCwwLDAsMC0uMTYsMiwxNCwxNCwwLDAsMCwuMTYsMkgzLjU0YTEsMSwwLDEsMCwwLDJoNi44YTE0LDE0LDAsMCwwLDIwLjgzLDcuODdBMSwxLDAsMCwwLDMxLjQ4LDI4LjQ5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNy40MiwyNS4xNkExMC44OCwxMC44OCwwLDAsMSw5LjIzLDIxSDUuODRhMSwxLDAsMCwxLDAtMmgzYzAtLjM1LS4wNS0uNzEtLjA1LTEuMDdzMC0uNjMsMC0uOTNoLTNhMSwxLDAsMCwxLDAtMkg5LjE5''@;'; put 'put ''QTEwLjg2LDEwLjg2LDAsMCwxLDI1LjM4LDguNjlhMS4yNSwxLjI1LDAsMCwxLTEuMzIsMi4xMkE4LjM2LDguMzYsMCwwLDAsMTEuODIsMTVoOS4zNmExLDEsMCwwLDEsMCwySDExLjMzYTcuNzIsNy43MiwwLDAsMCwwLDJoOS44MmExLDEsMCwwLDEsMCwySDExLjg3YTguMzYsOC4zNiwwLDAs''@;'; put 'put ''MCwxMi4yMiw0LDEuMjUsMS4yNSwwLDEsMSwxLjMzLDIuMTJaIi8+JyksZS5DbHJTaGFwZURvbGxhcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI2LDIxLjE1YTYuOTEsNi45MSwwLDAsMC00LjM4LTMuMzJB''@;'; put 'put ''MjYsMjYsMCwwLDAsMTksMTcuMTlWOC4xMkExMC4wNSwxMC4wNSwwLDAsMSwyMy44NiwxMGExLDEsMCwwLDAsMS4zMy0xLjVBMTEuNzUsMTEuNzUsMCwwLDAsMTksNi4xVjNhMSwxLDAsMCwwLTIsMFY2Yy00LjQuMS02LjgzLDIuMjktNy41Nyw0LjE4QTUuNTYsNS41NiwwLDAsMCwxMS42Niwx''@;'; put 'put ''NywxMy4yLDEzLjIsMCwwLDAsMTcsMTguODRWMjhhMTIuMywxMi4zLDAsMCwxLTcuMTQtMi43NEExLDEsMCwxLDAsOC40OSwyNi43LDE0LjA5LDE0LjA5LDAsMCwwLDE3LDMwdjNhMSwxLDAsMCwwLDIsMFYzMGMyLjgyLS4xOSw2LjA3LTEuMDksNy4zLTQuNzZBNS4zMyw1LjMzLDAsMCwwLDI2''@;'; put 'put ''LDIxLjE1Wk0xMi43OSwxNS4zMmEzLjU3LDMuNTcsMCwwLDEtMS40OS00LjM5QzExLjQxLDEwLjYzLDEyLjUzLDguMTIsMTcsOHY4LjhBMTAuNywxMC43LDAsMCwxLDEyLjc5LDE1LjMyWk0yNC40LDI0LjU2Yy0uNzIsMi4xNC0yLjMyLDMuMTctNS40LDMuNFYxOS4yM2MuNjQuMTQsMS4zLjMs''@;'; put 'put ''MiwuNTFhNSw1LDAsMCwxLDMuMTksMi4zMkEzLjM0LDMuMzQsMCwwLDEsMjQuNCwyNC41NloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiXG4gICAgICAgICAgICAgICAgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYs''@;'; put 'put ''MCwwLDAsMTgsMlptNy42NSwyMS41OWMtMSwzLTMuNjEsMy44NC01LjksNHYyYTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNy41OUExMS40NywxMS40NywwLDAsMSwxMSwyNWExLjI1LDEuMjUsMCwxLDEsMS43MS0xLjgzLDkuMTEsOS4xMSwwLDAsMCw0LjU1LDEuOTRWMTguODNhOS42Myw5LjYz''@;'; put 'put ''LDAsMCwxLTMuNzMtMS40MSw0LjgsNC44LDAsMCwxLTEuOTEtNS44NGMuNTktMS41MSwyLjQyLTMuMjMsNS42NC0zLjUxVjYuMjVhMS4yNSwxLjI1LDAsMCwxLDIuNSwwVjguMTFhOS42Nyw5LjY3LDAsMCwxLDQuOSwyQTEuMjUsMS4yNSwwLDAsMSwyMywxMS45NWE3LjE0LDcuMTQsMCwwLDAt''@;'; put 'put ''My4yNC0xLjMxdjYuMTNjLjYuMTMsMS4yNC4yNywxLjkxLjQ4YTUuODUsNS44NSwwLDAsMSwzLjY5LDIuODJBNC42NCw0LjY0LDAsMCwxLDI1LjY1LDIzLjU5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjkyLDE5''@;'; put 'put ''LjY0Yy0uNC0uMTItLjc5LS4yMi0xLjE3LS4zdjUuNzZjMi0uMiwzLjA3LS45LDMuNTMtMi4zYTIuMTUsMi4xNSwwLDAsMC0uMTUtMS41OEEzLjQ5LDMuNDksMCwwLDAsMjAuOTIsMTkuNjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0zIiBkPSJNMTMuOTQsMTIuNDhhMi4zMSwyLjMxLDAsMCwwLDEsMi44Nyw2LjUzLDYuNTMsMCwwLDAsMi4zMi45MlYxMC41NUMxNS4xNiwxMC44LDE0LjE5LDExLjg0LDEzLjk0LDEyLjQ4WiIvPicpLGUuQ2xyU2hhcGVDcmVkaXRDYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''Miw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwyLDAsMTJINEw0LDhaTTQsMjhWMjRIMzJ2NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgeD0iNyIgeT0iMyIgd2lkdGg9IjIyIiBoZWlnaHQ9IjMwIiByeD0iMC45NiIgcnk9IjAuOTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2KSByb3RhdGUoOTApIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwxOEg0VjIwSDMyWiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQmFuaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMy41LDEzLjU2LDE4LDUuMjNsMTQuNSw4LjMzYTEsMSwwLDAsMCwxLTEuNzNMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwyNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMjhWMTcuNjNIMjZWMjVIMTlWMTcuNjNIMTdWMjVIMTBWMTcuNjNIOFYyNUg1QTEsMSwwLDAsMCw0LDI2WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0iMjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywy''@;'; put 'put ''OUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMTUsMTEuNThoMy4yMUwxOC42NSw3LjcyYS44LjgsMCwwLDAtLjgsMGwtNi43MiwzLjg2aDMuMjFs''@;'; put 'put ''My45LTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEs''@;'; put 'put ''MCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNS4wMiIgeT0iMTQiIHdpZHRoPSIyNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywyOUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIyLjE1LDExLjU4aDMuMjFMMTguNjUsNy43MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjIuNSw2YzAtLjE2LDAtLjMyLDAtLjQ4TDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMMTgsNS4yMywyMi43Nyw4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwxMy4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwyNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMjhWMTcu''@;'; put 'put ''NjNIMjZWMjVIMTlWMTcuNjNIMTdWMjVIMTBWMTcuNjNIOFYyNUg1QTEsMSwwLDAsMCw0LDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywyOUgzYTEsMSwwLDAsMCwwLDJI''@;'; put 'put ''MzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNUEzLjUxLDMuNTEsMCwwLDEsMjAsMTRINXYySDMxVjE1WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS40Niw5Ljc0bC42OC0xLjE3LTEuNDktLjg1YS44LjgsMCwwLDAtLjgsMGwtNi43MiwzLjg2aDMuMjFsMy45LTIuMjQsMS4xLjYzQzE5LjM5LDkuODksMTkuNDIsOS44''@;'; put 'put ''MSwxOS40Niw5Ljc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4wNSw1LjI1LDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMMTgsNS4yMywyMS4wNSw3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjku''@;'; put 'put ''MDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy41LDEzLjU2LDUsMTIuNjhWMTZIMzFWMTIuNzFs''@;'; put 'put ''MS40OC44NWExLDEsMCwwLDAsMS0xLjczTDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNaTTE3Ljg1LDcuMTFhLjguOCwwLDAsMSwuOCwwTDI1LjM3LDExSDIyLjE1bC0zLjktMi4yNEwxNC4zNSwxMUgxMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi44NSwyN0gzMnYtLjg1QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCww''@;'; put 'put ''LDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1LDEuMTUsMCwwLDAsMzIuODUsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNI''@;'; put 'put ''MjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcuNjNIOFYyNUg1LjE1QTEuMTUsMS4xNSwwLDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAsMCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDcsNy40NywwLDAsMSwyNC4zOSwxMUgyMi4xNWwtMy45LTIuMjRMMTQuMzUsMTFIMTEuMTRsNi43Mi0zLjg2YS44LjgsMCwwLDEsLjgsMGw1LDIuODdBNy40NSw3LjQ1LDAsMCwxLDIy''@;'; put 'put ''LjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDUsMTIuNjhWMTZIMzFWMTMuNDJBNy41Myw3LjUzLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTMxLjk0LDEzLjI0bC41Ni4zMmExLDEsMCwwLDAsMS40NC0xLjE5QTcuNDUsNy40NSwwLDAsMSwzMS45NCwxMy4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjg1LDI3SDMydi0uODVBMS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYz''@;'; put 'put ''SDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4xNSwwLDAsMCwzMi44NSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDE1YTMuNTEsMy41MSwwLDAsMS0zLTUuMjZsLjE0LS4yNC0xLjM1LS43OEwxNC4zNSwxMUgxMS4xNGw2LjcyLTMuODZhLjguOCwwLDAsMSwuOCwwbDEuNzUsMSwxLjY1LTIuODZMMTgsMi45''@;'; put 'put ''MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M0w1LDEyLjY4VjE2SDMxVjE1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPicpLGUuQ2xyU2hhcGVE''@;'; put 'put ''b2xsYXJCaWxsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wm0wLDZhNC4yNSw0''@;'; put 'put ''LjI1LDAsMCwxLTMuOS00SDMyWm0wLDEuNjJ2NC44M0E1Ljg3LDUuODcsMCwwLDAsMjYuNDksMjZoLTE3QTUuODcsNS44NywwLDAsMCw0LDIwLjQ0VjE1LjZBNS44Nyw1Ljg3LDAsMCwwLDkuNTEsMTBoMTdBNS44Nyw1Ljg3LDAsMCwwLDMyLDE1LjZaTTcuOSwxMEE0LjI1LDQuMjUsMCwwLDEs''@;'; put 'put ''NCwxNFYxMFpNNCwyMi4wNkE0LjI1LDQuMjUsMCwwLDEsNy45LDI2SDRaTTI4LjEsMjZBNC4yNSw0LjI1LDAsMCwxLDMyLDIyLjA2VjI2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwxMC44NWMtMy40Nyww''@;'; put 'put ''LTYuMywzLjIxLTYuMyw3LjE1czIuODMsNy4xNSw2LjMsNy4xNSw2LjMtMy4yMSw2LjMtNy4xNVMyMS40NywxMC44NSwxOCwxMC44NVptMCwxMi42OWMtMi41OSwwLTQuNy0yLjQ5LTQuNy01LjU1czIuMTEtNS41NSw0LjctNS41NSw0LjcsMi40OSw0LjcsNS41NVMyMC41OSwyMy41NSwxOCwy''@;'; put 'put ''My41NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMiw4SDRhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhaTTQsMjZWMjEuMTVBNS4xOCw1LjE4''@;'; put 'put ''LDAsMCwxLDguNzksMjZaTTQsMTQuODVWMTBIOC43OUE1LjE4LDUuMTgsMCwwLDEsNCwxNC44NVpNMTgsMjUuMTVjLTMuNDcsMC02LjMtMy4yMS02LjMtNy4xNXMyLjgzLTcuMTUsNi4zLTcuMTUsNi4zLDMuMjEsNi4zLDcuMTVTMjEuNDcsMjUuMTUsMTgsMjUuMTVaTTMyLDI2SDI3LjI1QTUu''@;'; put 'put ''MTgsNS4xOCwwLDAsMSwzMiwyMS4xNVptMC0xMS4xNUE1LjE4LDUuMTgsMCwwLDEsMjcuMjUsMTBIMzJaIi8+XG4gICAgICAgICAgICA8ZWxsaXBzZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBjeD0iMTgiIGN5PSIxOCIgcng9IjQiIHJ5PSI0LjcyIi8+JyksZS5D''@;'; put 'put ''bHJTaGFwZUVDaGVjaz0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMTYiIHk9IjE2IiB3aWR0aD0iMTUiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIHg9IjIwIiB5PSIyMSIgd2lkdGg9IjExIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzQsOEgxMi45M2E4LjM1LDguMzUsMCwwLDEsLjc5LDJIMzNWMjZIM1YxOS45''@;'; put 'put ''YTcuODMsNy44MywwLDAsMS0yLTEuMzRWMjdhMSwxLDAsMCwwLDEsMUgzNGExLDEsMCwwLDAsMS0xVjlBMSwxLDAsMCwwLDM0LDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTYuNTcsMTguNjhhNi4xNyw2LjE3''@;'; put 'put ''LDAsMCwwLDQuMzItMS41OSwxLjIsMS4yLDAsMCwwLC4zNi0uODQsMS4wOCwxLjA4LDAsMCwwLTEuMDktMS4xMSwxLDEsMCwwLDAtLjcxLjI1LDQuMzIsNC4zMiwwLDAsMS0yLjg0LDEsMy4zNSwzLjM1LDAsMCwxLTMuNDYtM2g3LjUzQTEuMjksMS4yOSwwLDAsMCwxMiwxMi4wNiw1LjY4LDUu''@;'; put 'put ''NjgsMCwwLDAsNi4yNyw2LjE0LDYsNiwwLDAsMCwuNCwxMi40djBBNiw2LDAsMCwwLDYuNTcsMTguNjhaTTYuMjUsOC4zOWMxLjgyLDAsMi44NywxLjM5LDMsMy4xNkgzLjEzQzMuMzgsOS42OSw0LjU2LDguMzksNi4yNSw4LjM5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LDhIMTIuOTFhOC42MSw4LjYxLDAsMCwxLDEuMiw0LjM5LDgsOCwwLDAsMS03Ljc4LDguMjdBNy41MSw3LjUxLDAsMCwxLDEsMTguNDFWMjdhMSwxLDAsMCwwLDEsMUgzNGExLDEsMCwwLDAsMS0xVjlBMSwxLDAsMCwwLDM0LDhaTTMx''@;'; put 'put ''LDIzSDIwVjIxSDMxWm0wLTVIMTZWMTZIMzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNNi41NywxOC42OEE2LDYsMCwwLDEsLjQsMTIuNDR2MEE2LDYsMCwwLDEsNi4yNyw2LjE0LDUuNjgsNS42OCwwLDAsMSwxMiwx''@;'; put 'put ''Mi4wNmExLjI5LDEuMjksMCwwLDEtMS4zLDEuMzJIMy4xNWEzLjM1LDMuMzUsMCwwLDAsMy40NiwzLDQuMzIsNC4zMiwwLDAsMCwyLjg0LTEsMSwxLDAsMCwxLC43MS0uMjUsMS4wOCwxLjA4LDAsMCwxLDEuMDksMS4xMSwxLjIsMS4yLDAsMCwxLS4zNi44NEE2LjE3LDYuMTcsMCwwLDEsNi41''@;'; put 'put ''NywxOC42OFpNOS4zLDExLjU1Yy0uMTgtMS43Ny0xLjIzLTMuMTYtMy0zLjE2cy0yLjg3LDEuMy0zLjEyLDMuMTZaIi8+JyksZS5DbHJTaGFwZVBvdW5kPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuOSwz''@;'; put 'put ''MEgxMy40QTguNDUsOC40NSwwLDAsMCwxNSwyNC42NVYyMWg0LjMxYTEsMSwwLDAsMCwwLTJIMTVWMTEuMzFBNS4yNCw1LjI0LDAsMCwxLDIwLjIxLDYsNS4xOSw1LjE5LDAsMCwxLDI0LDcuNzNhMSwxLDAsMCwwLDEuNDgtMS4zNUE3LjE5LDcuMTksMCwwLDAsMTMsMTEuMzFWMTlIOC43MmEx''@;'; put 'put ''LDEsMCwxLDAsMCwySDEzdjMuNjVDMTMsMjkuMzgsMTAuMTIsMzAsMTAsMzBhMSwxLDAsMCwwLC4xNywySDI3LjlhMSwxLDAsMSwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0''@;'; put 'put ''LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYuNSwyNS45MkgxMS43NGExLjI1LDEuMjUsMCwwLDEtLjIyLTIuNDhjLjE1LDAsMS43Mi0uNDksMS43Mi0zLjU0VjE5aC0yLjVhMSwxLDAsMCwxLDAtMmgyLjVWMTEuODhhNS44NSw1Ljg1LDAsMCwxLDUuNzItNiw1LjYzLDUuNjMsMCwwLDEsNC4yMSwx''@;'; put 'put ''Ljk0QTEuMjUsMS4yNSwwLDEsMSwyMS4zLDkuNTEsMy4wOCwzLjA4LDAsMCwwLDE5LDguNDJhMy4zNSwzLjM1LDAsMCwwLTMuMjIsMy40NlYxN2gzYTEsMSwwLDAsMSwwLDJoLTN2Mi45QTcuNjUsNy42NSwwLDAsMSwxNSwyNS40MkgyNC41YTEuMjUsMS4yNSwwLDAsMSwwLDIuNVoiLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlUnVwZWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOCw4SDI0LjE0QTcuNTIsNy41MiwwLDAsMCwyMi42LDZIMjhhMSwxLDAsMCwwLDAtMkgxMGExLDEsMCwwLDAsMCwyaDcuNTVhNS40Miw1''@;'; put 'put ''LjQyLDAsMCwxLDQuMiwySDEwYTEsMSwwLDAsMCwwLDJIMjIuNzlBNS41NCw1LjU0LDAsMCwxLDIzLDExLjUxLDUuNDgsNS40OCwwLDAsMSwxNy41NSwxN0gxMS4xNGExLDEsMCwwLDAtLjc1LDEuNjZMMjIuMDYsMzJhMSwxLDAsMSwwLDEuNS0xLjMyTDEzLjM1LDE5aDQuMjFhNy41MSw3LjUx''@;'; put 'put ''LDAsMCwwLDcuMy05SDI4YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm01Ljg4LDlIMjZhMSwxLDAsMCwxLDAsMkgyNC4y''@;'; put 'put ''NmMwLC4wNiwwLC4xMiwwLC4xOWE2LjA5LDYuMDksMCwwLDEtNiw2LjJoLTJsNi44Miw4LjA2YTEuMjUsMS4yNSwwLDAsMS0xLjkxLDEuNjJMMTIuNjMsMTguOTRhMS4yNSwxLjI1LDAsMCwxLDEtMi4wNmg0LjcxYTMuNTksMy41OSwwLDAsMCwzLjQ4LTMuNjljMC0uMDcsMC0uMTMsMC0uMmgt''@;'; put 'put ''OWExLDEsMCwwLDEsMC0yaDguMzJhMy40MSwzLjQxLDAsMCwwLTIuNzgtMS41SDEyLjc1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNUgyNmExLDEsMCwwLDEsMCwySDIyLjY4QTYuMjMsNi4yMywwLDAsMSwyMy44OCwxMVoiLz4nKSxlLkNsclNoYXBlV29uPSgwLGEuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsMThIMjguNzVsLjUtMkgzM2ExLDEsMCwwLDAsMC0ySDI5Ljc0bDIuMTctOC43NkExLDEsMCwwLDAsMzAsNC43NkwyNy42OCwxNEgyMS4zMUwxOSw0Ljc2YTEsMSwwLDAsMC0xLjk0LDBMMTQuNzksMTRI''@;'; put 'put ''OC40Mkw2LjEzLDQuNzZhMSwxLDAsMCwwLTEuOTQuNDhMNi4zNiwxNEgzYTEsMSwwLDAsMCwwLDJINi44NWwuNSwySDNhMSwxLDAsMCwwLDAsMkg3Ljg0bDIuNzksMTEuMjRhMSwxLDAsMCwwLDEuOTQsMEwxNS4zNiwyMGg1LjM4bDIuNzksMTEuMjRhMSwxLDAsMCwwLDEuOTQsMEwyOC4yNSwy''@;'; put 'put ''MEgzM2ExLDEsMCwwLDAsMC0yWm0tNS44Mi0yLS41LDJIMjIuM2wtLjUtMlpNMTgsOS4xNiwxOS4yNSwxNGgtMi40Wk04LjkxLDE2aDUuMzhsLS41LDJIOS40MVpNMTEuNiwyNi44NCw5LjkxLDIwSDEzLjNaTTE1Ljg1LDE4bC41LTJoMy4zOWwuNSwyWm04LjY0LDguODRMMjIuOCwyMGgzLjM5''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgcG9pbnRzPSIxNy43NCAxNiAxNy4yMiAxOCAxOC44NSAxOCAxOC4zMiAxNiAxNy43NCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMiIgcG9pbnRzPSIxMS45NCAxOCAxNC42MyAxOCAxNS4xNiAxNiAxMS40MSAxNiAxMS45NCAxOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgcG9pbnRzPSIxMy4yOSAyMy4xIDE0LjEgMjAgMTIu''@;'; put 'put ''NDcgMjAgMTMuMjkgMjMuMSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgcG9pbnRzPSIyMS40NCAxOCAyNC4xMyAxOCAyNC42NiAxNiAyMC45MSAxNiAyMS40NCAxOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgcG9pbnRzPSIyMi43OCAyMy4xIDIzLjYgMjAgMjEuOTcgMjAgMjIuNzggMjMuMSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQs''@;'; put 'put ''MTgsMTYsMTYsMCwwLDAsMTgsMlpNMjksMjBIMjYuMTlMMjQsMjguMzJhMS4yNSwxLjI1LDAsMCwxLTIuNDIsMEwxOS4zOCwyMEgxNi42OWwtMi4xOSw4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMOS44OCwyMEg3YTEsMSwwLDAsMSwwLTJIOS4zNWwtLjUzLTJIN2ExLDEsMCwwLDEsMC0y''@;'; put 'put ''SDguM2wtMS0zLjY4YTEuMjUsMS4yNSwwLDAsMSwyLjQyLS42NEwxMC44OCwxNGg0LjhsMS4xNC00LjMyYTEuMjUsMS4yNSwwLDAsMSwyLjQyLDBMMjAuMzgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40Mi42NGwtMSwzLjY4SDI5YTEsMSwwLDAsMSwwLDJIMjcuMjRsLS41''@;'; put 'put ''MywySDI5YTEsMSwwLDAsMSwwLDJaIi8+JyksZS5DbHJTaGFwZVllbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LjM0LDQuNTVhMSwxLDAsMSwwLTEuNjctMS4xTDE4LDE4LjIzLDguMzMsMy40NWExLDEs''@;'; put 'put ''MCwwLDAtMS42NywxLjFMMTcsMjAuMzVWMjIuMkgxMmEuOC44LDAsMCwwLDAsMS42aDV2Mi40SDEyYS44LjgsMCwwLDAsMCwxLjZoNVYzMmExLDEsMCwwLDAsMiwwVjI3LjhoNWEuOC44LDAsMCwwLDAtMS42SDE5VjIzLjhoNWEuOC44LDAsMCwwLDAtMS42SDE5VjIwLjM1WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOC4wNyw3LjkxTDE5Ljc0LDIwSDIyYTEsMSwwLDAsMSwwLDJIMTkuMjV2MkgyMmExLDEsMCwwLDEsMCwySDE5LjI1djIu''@;'; put 'put ''NzVhMS4yNSwxLjI1LDAsMCwxLTIuNSwwVjI2SDE0YTEsMSwwLDEsMSwwLTJoMi43NVYyMkgxNGExLDEsMCwxLDEsMC0yaDIuMjZMOS45Myw5LjkxYTEuMjUsMS4yNSwwLDEsMSwyLjEyLTEuMzNMMTgsMTguMDhsNS45NS05LjQ5YTEuMjUsMS4yNSwwLDEsMSwyLjEyLDEuMzNaIi8+JyksZS5D''@;'; put 'put ''bHJTaGFwZUJpdGNvaW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjExLDE2Ljg4QTUuNDksNS40OSwwLDAsMCwyMSw3VjRhMSwxLDAsMCwwLTIsMFY3SDE2VjRhMSwxLDAsMCwwLTIsMFY3SDExYTEsMSwwLDAsMC0xLDFWMjhhMSwxLDAsMCwwLDEsMWgzdjNhMSwxLDAsMCwwLDIs''@;'; put 'put ''MFYyOWgzdjNhMSwxLDAsMCwwLDIsMFYyOWguMDhBNi4wNyw2LjA3LDAsMCwwLDI3LDIyLjgxdi0uNjJBNi4yNSw2LjI1LDAsMCwwLDI0LjExLDE2Ljg4Wk0xMiw5aDguNjlhMy41OSwzLjU5LDAsMCwxLDMuNDMsMi4zNkEzLjUxLDMuNTEsMCwwLDEsMjAuNzksMTZIMTJaTTI1LDIyLjgxQTQu''@;'; put 'put ''MDgsNC4wOCwwLDAsMSwyMS4wNiwyN0gxMlYxOGg5LjA2QTQuMDgsNC4wOCwwLDAsMSwyNSwyMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjE4LDE4LjQ3SDE0LjV2Nmg2LjY4YTIuNywyLjcsMCww''@;'; put 'put ''LDAsMi42My0yLjc3di0uNDhBMi43MSwyLjcxLDAsMCwwLDIxLjE4LDE4LjQ3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMywxMy43NWEyLjI0LDIuMjQsMCwwLDAtMi4yMy0yLjI1SDE0LjVWMTZoNi4zQTIuMjIs''@;'; put 'put ''Mi4yMiwwLDAsMCwyMywxMy43NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm04LjMxLDE5LjczQTUuMjIsNS4yMiwwLDAsMSwyMS4xOCwyN0gy''@;'; put 'put ''MXYxLjlhMSwxLDAsMCwxLTIsMFYyN0gxN3YxLjlhMSwxLDAsMCwxLTIsMFYyN0gxMy4yNUExLjI1LDEuMjUsMCwwLDEsMTIsMjUuNzVWMTcuMjNoMHYtN0ExLjI1LDEuMjUsMCwwLDEsMTMuMjUsOUgxNVY3LjA3YTEsMSwwLDAsMSwyLDBWOWgyVjcuMDdhMSwxLDAsMCwxLDIsMFY5YTQuNzIs''@;'; put 'put ''NC43MiwwLDAsMSwzLjIsOCw1LjMxLDUuMzEsMCwwLDEsMi4xMSw0LjI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlQ29pbkJhZz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuNiwyOWExLDEsMCwwLDAtMS0xaC02YTEsMSww''@;'; put 'put ''LDAsMCwwLDJoNkExLDEsMCwwLDAsMjEuNiwyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMi41NCwyNGgtNmExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMiwzMkgxNmExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi43LDMyaC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMzLjcsMjhoLTdhMSwxLDAsMCwwLDAsMmg3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNzQsMjZhMjgsMjgsMCww''@;'; put 'put ''LDAtMi44Mi0xMC4xMkEyMC4yNCwyMC4yNCwwLDAsMCwyNC42LDguNzFMMjcsMy40MmExLDEsMCwwLDAtLjA3LTFBMSwxLDAsMCwwLDI2LjEzLDJIOS44YTEsMSwwLDAsMC0uOTEsMS40MmwyLjQ1LDUuMzFhMjAuMzMsMjAuMzMsMCwwLDAtNi4yOCw3LjE1Yy0yLjE1LDQtMi44Miw4Ljg5LTMs''@;'; put 'put ''MTIuMjhhMy42LDMuNiwwLDAsMCwxLDIuNzFBMy43OSwzLjc5LDAsMCwwLDUuOCwzMS45NEgxMlYzMEg1LjcyYTEuNjgsMS42OCwwLDAsMS0xLjIxLS41MiwxLjYyLDEuNjIsMCwwLDEtLjQ1LTEuMjNjLjE0LTIuNjEuNjktNy41OCwyLjc2LTExLjQ1QTE4LDE4LDAsMCwxLDEzLjA4LDEwaDFh''@;'; put 'put ''MzAuODEsMzAuODEsMCwwLDAtMS44NywyLjkyLDIyLjc4LDIyLjc4LDAsMCwwLTEuNDcsMy4zNGwxLjM3LjkyYTI0LDI0LDAsMCwxLDEuNDktMy40N0EyOS4xLDI5LjEsMCwwLDEsMTYuMDUsMTBoMWEyMS40NSwyMS40NSwwLDAsMSwxLjQxLDUsMjIuNTQsMjIuNTQsMCwwLDEsLjMyLDMuODZs''@;'; put 'put ''MS41OC0xLjExYTI0LjE1LDI0LjE1LDAsMCwwLS4zMi0zQTI0LjgyLDI0LjgyLDAsMCwwLDE4Ljc2LDEwaC43OGwuOTEtMkgxMy4yMUwxMS4zNiw0SDI0LjU3bC0yLjUsNS40N2E5LjkzLDkuOTMsMCwwLDEsMS4yMy43OCwxOC42MywxOC42MywwLDAsMSw1Ljg2LDYuNTdBMjYuNTksMjYuNTks''@;'; put 'put ''MCwwLDEsMzEuNzMsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICA8cGF0aCBkPSJNMjQuODksMjZoNy44NmMtLjY2LTguNzEtNC40MS0xNC4xMi05LjIyLTE3LjMyTDI1LjcyLDMuOWExLDEsMCwwLDAtLjkxLTEuNEgxMS4xYTEsMSwwLDAs''@;'; put 'put ''MC0uOTEsMS40bDEuMiwyLjZIMjEuNTFsLS45LDJIMTguNzZBMjQuOSwyNC45LDAsMCwxLDIwLDEzLjE5YTI0LjQ5LDI0LjQ5LDAsMCwxLC4zMiwzbC0xLjU4LDEuMTFhMjIuNTQsMjIuNTQsMCwwLDAtLjMyLTMuODZBMjEuNzQsMjEuNzQsMCwwLDAsMTcsOC41aC0xYTI4LjIyLDI4LjIyLDAs''@;'; put 'put ''MCwwLTIuNDgsMy43LDIzLjkxLDIzLjkxLDAsMCwwLTEuNDksMy40NmwtMS4zNy0uOTFhMjIuNzgsMjIuNzgsMCwwLDEsMS40Ny0zLjM0QTMwLjgxLDMwLjgxLDAsMCwxLDE0LjA1LDguNUgxMi4zbC4wOC4xN0M3LjA4LDEyLjIsMy4wNSwxOC40LDMuMDUsMjguNzVBMS42NSwxLjY1LDAsMCww''@;'; put 'put ''LDQuNjEsMzAuNWg4QTIuNjcsMi42NywwLDAsMSwxNC4yMSwyNmEyLjY3LDIuNjcsMCwwLDEtLjM3LTEuMzQsMi43LDIuNywwLDAsMSwyLjctMi43aDZhMi43LDIuNywwLDAsMSwyLjcsMi43QTIuNjMsMi42MywwLDAsMSwyNC44OSwyNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLjYsMjguNWExLDEsMCwwLDAtMS0xaC02YTEsMSwwLDAsMCwwLDJoNkExLDEsMCwwLDAsMjEuNiwyOC41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIuNTQsMjMuNWgtNmExLDEsMCwwLDAsMCwy''@;'; put 'put ''aDZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDMxLjVIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0z''@;'; put 'put ''Mi43LDMxLjVoLTdhMSwxLDAsMCwwLDAsMmg3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMy43LDI3LjVoLTdhMSwxLDAsMCwwLDAsMmg3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC02IiAvPicpLGUuQ2xyU2hhcGVQZXNvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwxMy4ySDI3Ljg5QTYuODEsNi44MSwwLDAsMCwyOCwxMmE3Ljg1LDcuODUsMCwwLDAtLjEtMS4xOWgyLjkzYS44LjgsMCwwLDAsMC0xLjZIMjcuNDZBOC40NCw4LjQ0LDAsMCww''@;'; put 'put ''LDE5LjU3LDRIMTFhMSwxLDAsMCwwLTEsMVY5LjJIN2EuOC44LDAsMCwwLDAsMS42aDN2Mi40SDdhLjguOCwwLDAsMCwwLDEuNmgzVjMxYTEsMSwwLDAsMCwyLDBWMjBoNy41N2E4LjQ1LDguNDUsMCwwLDAsNy44OS01LjJIMzFhLjguOCwwLDAsMCwwLTEuNlpNMTIsNmg3LjU3YTYuNTEsNi41''@;'; put 'put ''MSwwLDAsMSw1LjY4LDMuMkgxMlptMCw0LjhIMjUuODdhNS42LDUuNiwwLDAsMSwwLDIuNEgxMlpNMTkuNTcsMThIMTJWMTQuOEgyNS4yNUE2LjUxLDYuNTEsMCwwLDEsMTkuNTcsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTQu''@;'; put 'put ''MTgsMTMuOFYxNmg5LjQ1YTUuMjYsNS4yNiwwLDAsMCwuMDgtLjg5LDQuNzIsNC43MiwwLDAsMC0uMi0xLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTQuMTgsMTkuN2g1LjE5YTQuMjgsNC4yOCwwLDAsMCwzLjUtMS45SDE0LjE4WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzcsMTAuNTFIMTQuMThWMTJoOC4zN0E0LjIxLDQuMjEsMCwwLDAsMTkuMzcsMTAuNTFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNy42Nywy''@;'; put 'put ''YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE3LjY3LDJabTEwLjUsMTUuOEgyNS43YTYuODcsNi44NywwLDAsMS02LjMzLDQuNEgxNC4xOHY2LjU0YTEuMjUsMS4yNSwwLDEsMS0yLjUsMFYxNy44SDguNzZhLjkuOSwwLDEsMSwwLTEuOGgyLjkyVjEzLjhIOC43NmEuOS45LDAsMSwx''@;'; put 'put ''LDAtMS44aDIuOTJWOS4yNkExLjI1LDEuMjUsMCwwLDEsMTIuOTMsOGg2LjQ0YTYuODQsNi44NCwwLDAsMSw2LjE1LDRoMi42NWEuOS45LDAsMCwxLDAsMS44SDI2LjA5YTYuOTEsNi45MSwwLDAsMSwuMTIsMS4zLDYuOCw2LjgsMCwwLDEtLjA2LjloMmEuOS45LDAsMCwxLDAsMS44WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlUnVibGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjU3LDIwQTguMjMsOC4yMywwLDAsMCwyOSwxMmE4LjIzLDguMjMsMCwwLDAtOC40My04SDEyYTEsMSwwLDAsMC0xLDFWMThIOWExLDEs''@;'; put 'put ''MCwwLDAsMCwyaDJ2Mkg5YTEsMSwwLDAsMCwwLDJoMnY3YTEsMSwwLDAsMCwyLDBWMjRoOWExLDEsMCwwLDAsMC0ySDEzVjIwWk0xMyw2aDcuNTdBNi4yNCw2LjI0LDAsMCwxLDI3LDEyYTYuMjMsNi4yMywwLDAsMS02LjQzLDZIMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjAuNzUsOS4yNUgxNXY4LjgxaDUuNzlhNC42Niw0LjY2LDAsMCwwLDQuODYtNC40QTQuNjUsNC42NSwwLDAsMCwyMC43NSw5LjI1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMkExNiwxNiww''@;'; put 'put ''LDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0yLjc1LDE4LjU2SDE1VjIyaDguMjlhMSwxLDAsMCwxLDAsMkgxNXY1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNEgxMS4yNWExLDEsMCwwLDEsMC0yaDEuMjFWMjAuNTZIMTEuMjVhMS4yNSwxLjI1LDAsMCwxLDAtMi41aDEuMjFWOGExLjI1''@;'; put 'put ''LDEuMjUsMCwwLDEsMS4yNS0xLjI1aDdhNy4xNCw3LjE0LDAsMCwxLDcuMzYsNi45QTcuMTUsNy4xNSwwLDAsMSwyMC43NSwyMC41NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUVtcGxveWVlR3JvdXA9KDAsYS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTE4LjQyLDE2LjMxYTUuNyw1LjcsMCwxLDEsNS43Ni01LjdBNS43NCw1Ljc0LDAsMCwxLDE4LjQyLDE2LjMxWm0wLTkuNGEzLjcsMy43LDAsMSwwLDMuNzYsMy43QTMuNzQsMy43NCwwLDAsMCwxOC40Miw2LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjQyLDE2LjMxYTUuNyw1LjcsMCwxLDEsNS43Ni01LjdBNS43NCw1Ljc0LDAsMCwxLDE4LjQyLDE2LjMxWm0wLTkuNGEzLjcsMy43LDAsMSwwLDMuNzYsMy43QTMuNzQsMy43NCwwLDAsMCwxOC40Miw2LjkxWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIxLjkxLDE3LjY1YTIwLjYsMjAuNiwwLDAsMC0xMywyQTEuNzcsMS43NywwLDAsMCw4LDIxLjI1djMuNTZhMSwxLDAsMCwwLDIsMFYyMS4zOGExOC45MiwxOC45MiwwLDAsMSwxMi0xLjY4WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMzLDIySDI2LjNWMjAuNTJhMSwxLDAsMCwwLTIsMFYyMkgxN2ExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM0ExLDEsMCwwLDAsMzMsMjJaTTMyLDMySDE4VjI0aDYuM3Yu''@;'; put 'put ''NDFhMSwxLDAsMCwwLDIsMFYyNEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxyZWN0IHg9IjIxLjgxIiB5PSIyNy40MiIgd2lkdGg9IjUuOTYiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NSIvPlxuICA8cGF0aCBkPSJNMTAuODQsMTIuMjRhMTgsMTgsMCwwLDAtNy45NSwyQTEuNjcsMS42NywwLDAsMCwyLDE1LjcxdjMuMWExLDEsMCwwLDAsMiwwdi0yLjlhMTYsMTYsMCwwLDEsNy41OC0xLjY3QTcuMjgsNy4yOCwwLDAsMSwxMC44NCwxMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxwYXRoIGQ9Ik0zMy4xMSwxNC4yM2ExNy44LDE3LjgsMCwwLDAtNy4xMi0yLDcuNDYsNy40NiwwLDAsMS0uNzMsMkExNS44OSwxNS44OSwwLDAsMSwzMiwxNS45MXYyLjlhMSwxLDAsMSwwLDIsMHYtMy4xQTEuNjcsMS42NywwLDAsMCwz''@;'; put 'put ''My4xMSwxNC4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gIDxwYXRoIGQ9Ik0xMC42NiwxMC42MWMwLS4yMywwLS40NSwwLS42N2EzLjA3LDMuMDcsMCwwLDEsLjU0LTYuMTEsMy4xNSwzLjE1LDAsMCwxLDIuMi44OSw4LjE2LDguMTYsMCwwLDEs''@;'; put 'put ''MS43LTEuMDgsNS4xMyw1LjEzLDAsMCwwLTksMy4yNyw1LjEsNS4xLDAsMCwwLDQuNyw1QTcuNDIsNy40MiwwLDAsMSwxMC42NiwxMC42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxwYXRoIGQ9Ik0yNC43NywxLjgzYTUuMTcsNS4xNywwLDAs''@;'; put 'put ''MC0zLjY5LDEuNTUsNy44Nyw3Ljg3LDAsMCwxLDEuOSwxLDMuMTQsMy4xNCwwLDAsMSw0LjkzLDIuNTIsMy4wOSwzLjA5LDAsMCwxLTEuNzksMi43Nyw3LjE0LDcuMTQsMCwwLDEsLjA2LjkzLDcuODgsNy44OCwwLDAsMS0uMSwxLjIsNS4xLDUuMSwwLDAsMCwzLjgzLTQuOUE1LjEyLDUuMTIs''@;'; put 'put ''MCwwLDAsMjQuNzcsMS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gIFxuICA8ZWxsaXBzZSBjeD0iMTgiIGN5PSIxMS4yOCIgcng9IjQuNzYiIHJ5PSI0LjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPHBh''@;'; put 'put ''dGggZD0iTTEwLjc4LDExLjc1Yy4xNiwwLC4zMiwwLC40OCwwLDAtLjE1LDAtLjI4LDAtLjQzYTYuNyw2LjcsMCwwLDEsMy43NS02LDQuNjIsNC42MiwwLDEsMC00LjIxLDYuNDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yNC43Niwx''@;'; put 'put ''MS4yOGMwLC4xNSwwLC4yOCwwLC40My4xNiwwLC4zMiwwLC40OCwwQTQuNTgsNC41OCwwLDEsMCwyMSw1LjI5LDYuNyw2LjcsMCwwLDEsMjQuNzYsMTEuMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0yMi4yOSwxNi40NWEyMS40NSwy''@;'; put 'put ''MS40NSwwLDAsMSw1LjcxLDIsMi43MSwyLjcxLDAsMCwxLC42OC41M0gzNFYxNS41NmEuNzIuNzIsMCwwLDAtLjM4LS42NCwxOCwxOCwwLDAsMC04LjQtMi4wNWwtLjY2LDBBNi42Niw2LjY2LDAsMCwxLDIyLjI5LDE2LjQ1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''NCIvPlxuICA8cGF0aCBkPSJNNi41MywyMC45MkEyLjc2LDIuNzYsMCwwLDEsOCwxOC40N2EyMS40NSwyMS40NSwwLDAsMSw1LjcxLTIsNi42Niw2LjY2LDAsMCwxLTIuMjctMy41NWwtLjY2LDBhMTgsMTgsMCwwLDAtOC40LDIuMDUuNzIuNzIsMCwwLDAtLjM4LjY0VjIySDYuNTNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjIxLjQ2IiB5PSIyNi42OSIgd2lkdGg9IjUuOTYiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02Ii8+XG4gIDxwYXRoIGQ9Ik0zMi44MSwyMS4yNkgyNS45NHYt''@;'; put 'put ''MWExLDEsMCwwLDAtMiwwdjFIMjJWMTguNDNBMjAuMTcsMjAuMTcsMCwwLDAsMTgsMThhMTkuMjcsMTkuMjcsMCwwLDAtOS4wNiwyLjIyLjc2Ljc2LDAsMCwwLS40MS42OHY1LjYxaDcuMTF2Ni4wOWExLDEsMCwwLDAsMSwxSDMyLjgxYTEsMSwwLDAsMCwxLTFWMjIuMjZBMSwxLDAsMCwwLDMy''@;'; put 'put ''LjgxLDIxLjI2Wm0tMSwxMC4zNkgxNy42NFYyMy4yNmg2LjN2LjkxYTEsMSwwLDAsMCwyLDB2LS45MWg1Ljg3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIvPicpLGUuQ2xyU2hhcGVFbXBsb3llZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYuNDMsMTYu''@;'; put 'put ''NjlhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEsMTYuNDMsMTYuNjlabTAtMTEuOTJhNSw1LDAsMSwwLDUsNUE1LDUsMCwwLDAsMTYuNDMsNC43N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMiwxNy45QTI1LjQxLDI1LjQxLDAs''@;'; put 'put ''MCwwLDUuODgsMTkuNTdhNC4wNiw0LjA2LDAsMCwwLTIuMzEsMy42OFYyOS4yYTEsMSwwLDEsMCwyLDBWMjMuMjVhMiwyLDAsMCwxLDEuMTYtMS44NiwyMi45MSwyMi45MSwwLDAsMSw5LjctMi4xMSwyMy41OCwyMy41OCwwLDAsMSw1LjU3LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjIuMTQiIHk9IjI3LjQxIiB3aWR0aD0iNi4xNCIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMy4xNywyMS40N0gyOHYyaDQuMTd2OC4zN0gxOFYy''@;'; put 'put ''My40N2g2LjN2LjQyYTEsMSwwLDAsMCwyLDBWMjBhMSwxLDAsMCwwLTIsMHYxLjQ3SDE3YTEsMSwwLDAsMC0xLDFWMzIuODRhMSwxLDAsMCwwLDEsMUgzMy4xN2ExLDEsMCwwLDAsMS0xVjIyLjQ3QTEsMSwwLDAsMCwzMy4xNywyMS40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00Ii8+XG4gIFxuICA8Y2lyY2xlIGN4PSIxNi44NiIgY3k9IjkuNzMiIHI9IjYuNDYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPHJlY3QgeD0iMjEiIHk9IjI4IiB3aWR0aD0iNyIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTE1LDMwdjNhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjIzYTEsMSwwLDAsMC0xLTFIMjZWMjAuNTNhMSwxLDAsMCwwLTIsMFYyMkgyMlYxOC40MkEzMi4xMiwzMi4xMiwwLDAsMCwxNi44NiwxOGEyNiwyNiwwLDAs''@;'; put 'put ''MC0xMSwyLjM5LDMuMjgsMy4yOCwwLDAsMC0xLjg4LDNWMzBabTE3LDJIMTdWMjRoN3YuNDJhMSwxLDAsMCwwLDIsMFYyNGg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVGYWN0b3J5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''My40Nyw3LjM3YTEsMSwwLDAsMC0xLC4wNkwyMywxMy43N1Y4LjI2YTEsMSwwLDAsMC0xLjY0LS43N0wxMy40OCwxNEgxMFY0LjYyYTEsMSwwLDAsMC0uNzgtMWwtNC0uOWExLDEsMCwwLDAtLjg1LjJBMSwxLDAsMCwwLDQsMy43M1YxNEgzYTEsMSwwLDAsMC0xLDFWMzFhMSwxLDAsMCwwLDEs''@;'; put 'put ''MUgzM2ExLDEsMCwwLDAsMS0xVjguMjZBMSwxLDAsMCwwLDMzLjQ3LDcuMzdaTTYsNWwyLC40NFYxNEg2Wk0zMiwzMEg0VjE2aDkuODNhMSwxLDAsMCwwLC42NC0uMjNMMjEsMTAuMzd2NS4yOGExLDEsMCwwLDAsMS41Ni44M0wzMiwxMC4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjYiIHk9IjE3Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cmVjdCB4PSI2IiB5PSIyMS45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iNiIgeT0iMjUuOTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHJlY3QgeD0iMTkiIHk9IjI0Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cmVjdCB4PSIyMyIgeT0i''@;'; put 'put ''MTguOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gIDxyZWN0IHg9IjIzIiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5c''@;'; put 'put ''biAgPHJlY3QgeD0iMjciIHk9IjE4Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICA8cmVjdCB4PSIyNyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xMCIvPlxuICBcbiAgPHBhdGggZD0iTTMyLjQ1LDguNDQsMjIsMTUuM1Y5LjUxYTEsMSwwLDAsMC0xLjYzLS43OEwxNC4wNywxNEgxMFY0LjA2TDQsMi43MVYxNEgyVjMxYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY5LjI3QTEsMSwwLDAsMCwzMi40NSw4''@;'; put 'put ''LjQ0Wk0xNCwyOUg2VjI3aDhabTAtNEg2VjIzaDhabTAtNEg2VjE5aDhabTgsOEgyMFYyNmgyWm0wLTZIMjBWMjBoMlptNCw2SDI0VjI2aDJabTAtNkgyNFYyMGgyWm00LDZIMjhWMjZoMlptMC02SDI4VjIwaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+Jyks''@;'; put 'put ''ZS5Db21tZXJjZVNoYXBlcz17Y2FsY3VsYXRvcjplLkNsclNoYXBlQ2FsY3VsYXRvciwicGlnZ3ktYmFuayI6ZS5DbHJTaGFwZVBpZ2d5QmFuaywic2hvcHBpbmctYmFnIjplLkNsclNoYXBlU2hvcHBpbmdCYWcsInNob3BwaW5nLWNhcnQiOmUuQ2xyU2hhcGVTaG9wcGluZ0NhcnQsd2FsbGV0''@;'; put 'put ''OmUuQ2xyU2hhcGVXYWxsZXQsc3RvcmU6ZS5DbHJTaGFwZVN0b3JlLGV1cm86ZS5DbHJTaGFwZUV1cm8sZG9sbGFyOmUuQ2xyU2hhcGVEb2xsYXIscGVzbzplLkNsclNoYXBlUGVzbywiY3JlZGl0LWNhcmQiOmUuQ2xyU2hhcGVDcmVkaXRDYXJkLGJhbms6ZS5DbHJTaGFwZUJhbmssImRvbGxh''@;'; put 'put ''ci1iaWxsIjplLkNsclNoYXBlRG9sbGFyQmlsbCwiZS1jaGVjayI6ZS5DbHJTaGFwZUVDaGVjayxwb3VuZDplLkNsclNoYXBlUG91bmQscnVwZWU6ZS5DbHJTaGFwZVJ1cGVlLHdvbjplLkNsclNoYXBlV29uLHllbjplLkNsclNoYXBlWWVuLGJpdGNvaW46ZS5DbHJTaGFwZUJpdGNvaW4scnVi''@;'; put 'put ''bGU6ZS5DbHJTaGFwZVJ1YmxlLCJjb2luLWJhZyI6ZS5DbHJTaGFwZUNvaW5CYWcsImVtcGxveWVlLWdyb3VwIjplLkNsclNoYXBlRW1wbG95ZWVHcm91cCxlbXBsb3llZTplLkNsclNoYXBlRW1wbG95ZWUsZmFjdG9yeTplLkNsclNoYXBlRmFjdG9yeX0sT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGUuQ29tbWVyY2VTaGFwZXMsInNhdmluZ3MiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db21tZXJjZVNoYXBlc1sicGlnZ3ktYmFuayJdKSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5''@;'; put 'put ''SWNvbnMuYWRkKGUuQ29tbWVyY2VTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsYSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNvcmVTaGFwZXM9''@;'; put 'put ''ZS5DbHJTaGFwZUFycm93PWUuQ2xyU2hhcGVTdGVwRm9yd2FyZDI9ZS5DbHJTaGFwZUV5ZUhpZGU9ZS5DbHJTaGFwZUV5ZT1lLkNsclNoYXBlRXZlbnQ9ZS5DbHJTaGFwZUNhbGVuZGFyPWUuQ2xyU2hhcGVBbmdsZURvdWJsZT1lLkNsclNoYXBlVmlld0NvbHVtbnM9ZS5DbHJTaGFwZVNlYXJj''@;'; put 'put ''aD1lLkNsclNoYXBlVm1CdWc9ZS5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9ZS5DbHJTaGFwZUZpbHRlckdyaWQ9ZS5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9ZS5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD1lLkNsclNoYXBlQ2xvdWQ9ZS5DbHJTaGFwZUltYWdlPWUuQ2xyU2hhcGVC''@;'; put 'put ''ZWxsPWUuQ2xyU2hhcGVGb2xkZXJPcGVuPWUuQ2xyU2hhcGVGb2xkZXI9ZS5DbHJTaGFwZUFuZ2xlPWUuQ2xyU2hhcGVVc2VyPWUuQ2xyU2hhcGVCYXJzPWUuQ2xyU2hhcGVIZWxwSW5mbz1lLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPWUuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPWUuQ2xyU2hh''@;'; put 'put ''cGVTdWNjZXNzU3RhbmRhcmQ9ZS5DbHJTaGFwZUluZm9TdGFuZGFyZD1lLkNsclNoYXBlSW5mb0NpcmNsZT1lLkNsclNoYXBlQ2hlY2tDaXJjbGU9ZS5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPWUuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPWUuQ2xyU2hhcGVUaW1lcz1lLkNsclNo''@;'; put 'put ''YXBlQ2hlY2s9ZS5DbHJTaGFwZUNvZz1lLkNsclNoYXBlSG9tZT1lLkNsclNoYXBlVW5rbm93blN0YXR1cz12b2lkIDA7dmFyIHI9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKTthPWEoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10''@;'; put 'put ''YWctZ2VuZXJhdG9yLnRzIiksZS5DbHJTaGFwZVVua25vd25TdGF0dXM9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3LjU4IiBjeT0iMjYuMjMiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjQuNywxM2E1LjE4LDUuMTgsMCwwLDAtMi4xNi0zLjU2LDcuMjYsNy4yNiwwLDAsMC01LjcxLTEuMDlBMTEuMzQsMTEuMzQsMCwwLDAsMTIsMTAuNDQsMSwxLDAsMSwwLDEzLjI2LDEyYTkuMzIsOS4zMiww''@;'; put 'put ''LDAsMSwzLjk0LTEuNzIsNS4yOSw1LjI5LDAsMCwxLDQuMTYuNzQsMy4yMSwzLjIxLDAsMCwxLDEuMzUsMi4xOWMuMzMsMi42OS0zLjE5LDMuNzUtNS4zMiw0LjE0bC0uODIuMTV2NC4zNmExLDEsMCwwLDAsMiwwVjE5LjE3QzI0LjYxLDE3Ljc5LDI0Ljg4LDE0LjQxLDI0LjcsMTNaIi8+Jyks''@;'; put 'put ''ZS5DbHJTaGFwZUhvbWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy43MSwxNy4yOWwtMTUtMTVhMSwxLDAsMCwwLTEuNDEsMGwtMTUsMTVhMSwxLDAsMCwwLDEuNDEsMS40MUwxOCw0LjQxLDMyLjI5LDE4''@;'; put 'put ''LjcxYTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOCwzMmgtNVYyMkgxM1YzMkg4VjE4TDYsMjBWMzJhMiwyLDAsMCwwLDIsMmg3VjI0aDZWMzRoN2EyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjE5Ljc2bC0yLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDE5YTEsMSwwLDAsMS0uNzEtLjI5TDE4LDQuNDEsMy43MSwxOC43MWExLDEsMCwwLDEtMS40MS0xLjQxbDE1LTE1YTEsMSwwLDAsMSwx''@;'; put 'put ''LjQxLDBsMTUsMTVBMSwxLDAsMCwxLDMzLDE5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOCw3Ljc5LDYsMTkuODNWMzJhMiwyLDAsMCwwLDIsMmg3VjI0aDZWMzRoN2EyLDIsMCwwLDAsMi0yVjE5Ljc2WiIv''@;'; put 'put ''PicpLGUuQ2xyU2hhcGVDb2c9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOC4xLDExYy0zLjksMC03LDMuMS03LDdzMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN1MyMiwxMSwxOC4xLDExeiBNMTguMSwyM2Mt''@;'; put 'put ''Mi44LDAtNS0yLjItNS01czIuMi01LDUtNWMyLjgsMCw1LDIuMiw1LDVTMjAuOSwyMywxOC4xLDIzeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuOCwxNC43TDMwLDEzLjhsLTAuNi0xLjVsMS40LTIu''@;'; put 'put ''NmMwLjMtMC42LDAuMi0xLjQtMC4zLTEuOWwtMi40LTIuNGMtMC41LTAuNS0xLjMtMC42LTEuOS0wLjNsLTIuNiwxLjRsLTEuNS0wLjZsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42''@;'; put 'put ''TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVs''@;'; put 'put ''LTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMw''@;'; put 'put ''LjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3ogTTMyLDE5LjRsLTMuNiwxLjFMMjguMywyMWMt''@;'; put 'put ''MC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMu''@;'; put 'put ''MywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywy''@;'; put 'put ''LjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuNCwwLjUsMi4xLDAuOWwwLjUsMC4zbDMuMy0xLjhsMiwybC0xLjgsMy4zbDAuMywwLjVjMC40LDAuNywwLjcsMS40LDAuOSwyLjFsMC4xLDAuNWwzLjYsMS4xVjE5LjR6Ii8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTEuMSwxOGMwLDMuOSwzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03cy0zLjEtNy03LTdDMTQuMiwxMSwxMS4xLDE0LjEsMTEuMSwxOHogTTIzLjEsMThjMCwyLjgt''@;'; put 'put ''Mi4yLDUtNSw1Yy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01QzIwLjksMTMsMjMuMSwxNS4yLDIzLjEsMTh6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuOCwxNC43TDMw''@;'; put 'put ''LDEzLjhsLTAuMS0wLjNjLTAuOCwwLTEuNi0wLjItMi40LTAuNGMwLjMsMC42LDAuNiwxLjMsMC44LDEuOWwwLjEsMC41bDMuNiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2Mt''@;'; put 'put ''MC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwx''@;'; put 'put ''OS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNUwyMSw3LjdjMC43LDAuMiwxLjMsMC41LDEuOSwwLjhj''@;'; put 'put ''LTAuMy0wLjgtMC40LTEuNi0wLjQtMi41bC0wLjQtMC4ybC0wLjktMi44QzIxLDIuNSwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUtMS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40''@;'; put 'put ''LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRjMCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAu''@;'; put 'put ''NSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMtMC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0x''@;'; put 'put ''LjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNS42LDMzLjUsMTQuOSwzMi44LDE0Ljd6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjcsMTUuNGgtNS4zdjAuMWwzLjYsMS4x''@;'; put 'put ''djIuOGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0w''@;'; put 'put ''LjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAu''@;'; put 'put ''NS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjRsMS40LTIuM2wtMC42LTJDMjEsMi40LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQu''@;'; put 'put ''OSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMyww''@;'; put 'put ''LjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIs''@;'; put 'put ''MS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE2LDMzLjksMTUuNywzMy43LDE1LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xOC4xLDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01YzAuMiwwLDAuNSwwLDAuNywwLjFjLTAuMi0wLjYtMC4zLTEuMy0wLjItMmgtMC41Yy0zLjksMC03LDMuMS03LDdjMCwzLjksMy4xLDcsNyw3YzMu''@;'; put 'put ''OSwwLDctMy4xLDctN2MwLTAuOS0wLjItMS44LTAuNS0yLjZoLTIuMmMwLjUsMC44LDAuNywxLjYsMC43LDIuNUMyMy4xLDIwLjgsMjAuOSwyMywxOC4xLDIzeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEu''@;'; put 'put ''MS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTExLjY1LDExLjY1LDAsMCwwLS45NS0yLjMzbDEuNjQtMy4wN2Eu''@;'; put 'put ''NjEuNjEsMCwwLDAtLjExLS43MkwyNy40MSw2LjJhLjYxLjYxLDAsMCwwLS43Mi0uMTFMMjMuNjQsNy43MmExMS42MiwxMS42MiwwLDAsMC0yLjM2LTFsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAs''@;'; put 'put ''MC0yLjM4LDFsLTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42Miwx''@;'; put 'put ''MS42MiwwLDAsMCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40''@;'; put 'put ''M2wxLTMuMzhhMTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2''@;'; put 'put ''LjMxQS42MS42MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBk''@;'; put 'put ''PSJNMzIuNTcsMTUuNzJsLTMuMzUtMWExMi4xMiwxMi4xMiwwLDAsMC0uNDctMS4zMiw3LjQ5LDcuNDksMCwwLDEtNi4xNC02LjE2LDExLjgyLDExLjgyLDAsMCwwLTEuMzMtLjQ4bC0xLTMuMzFBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNh''@;'; put 'put ''MTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41''@;'; put 'put ''OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYx''@;'; put 'put ''LjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEs''@;'; put 'put ''MCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaTTE4LDIzLjVBNS41LDUuNSwwLDEsMSwyMy41LDE4LDUuNSw1LjUsMCwwLDEsMTgsMjMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMyLjU3LDE1LjcyLDMxLjUsMTUuNEgyMi44NUE1''@;'; put 'put ''LjUsNS41LDAsMSwxLDE4LDEyLjVhNS41Myw1LjUzLDAsMCwxLC42NSwwQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDIuMDktMy42Mi0uODYtMi44M0EuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFs''@;'; put 'put ''LTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAs''@;'; put 'put ''MCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhh''@;'; put 'put ''MTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42''@;'; put 'put ''MSwwLDAsMCwzMi41NywxNS43MloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNI''@;'; put 'put ''MzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksZS5DbHJTaGFwZUNoZWNrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTMu''@;'; put 'put ''NzIsMjcuNjksMy4yOSwxNy4yN2ExLDEsMCwwLDEsMS40MS0xLjQxbDksOUwzMS4yOSw3LjI5YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+JyksZS5DbHJTaGFwZVRpbWVzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBk''@;'; put 'put ''PSJNMTkuNDEsMThsOC4yOS04LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksOS43MSw4LjI5QTEsMSwwLDAsMCw4LjI5LDkuNzFMMTYuNTksMTgsOC4yOSwyNi4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDguMjksOC4yOWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPicp''@;'; put 'put ''LGUuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjEuMzJhMS4zLDEuMywwLDAsMCwxLjMtMS4zVjE0YTEuMywxLjMsMCwxLDAtMi42LDB2NkExLjMsMS4z''@;'; put 'put ''LDAsMCwwLDE4LDIxLjMyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIxNy45NSIgY3k9IjI0LjI3IiByPSIxLjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1ptLTEuNzgsMS45NGExLDEsMCwwLDEtLjg2LjQ5SDguMjFhMSwxLDAsMCwxLS44''@;'; put 'put ''OC0xLjQ4TDE3LjA3LDguNTVhMSwxLDAsMCwxLDEuNzYsMGw5Ljc0LDE3Ljk0QTEsMSwwLDAsMSwyOC41NSwyNy40OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMyww''@;'; put 'put ''LDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWk0xNi40NiwxMi43NGExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjYuMjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcy''@;'; put 'put ''LDEuNzIsMCwwLDEsMTgsMjYuMjVaIi8+JyksZS5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2''@;'; put 'put ''Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjAuMDdhMS4zLDEuMywwLDAsMS0xLjMtMS4zdi02YTEuMywxLjMsMCwxLDEs''@;'; put 'put ''Mi42LDB2NkExLjMsMS4zLDAsMCwxLDE4LDIwLjA3WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIxNy45NSIgY3k9IjIzLjAyIiByPSIxLjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMS40OSw2YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNS41YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJB''@;'; put 'put ''MS43MiwxLjcyLDAsMCwxLDE4LDI1LjVaIi8+JyksZS5DbHJTaGFwZUNoZWNrQ2lyY2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0w''@;'; put 'put ''LDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuMzQsMjMuNzRsLTUtNWExLDEsMCwwLDEsMS40MS0xLjQxbDMuNTksMy41OSw2Ljc4''@;'; put 'put ''LTYuNzhhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMThBMTIsMTIsMCwxLDEsMTgsNiwxMiwxMiwwLDAsMSwzMCwxOFptLTQuNzctMi4xNmExLjQsMS40LDAsMCwwLTIt''@;'; put 'put ''MmwtNi43Nyw2Ljc3TDEzLDE3LjE2YTEuNCwxLjQsMCwwLDAtMiwybDUuNDUsNS40NVoiLz4nKSxlLkNsclNoYXBlSW5mb0NpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAgY3g9IjE3LjkzIiBjeT0iMTEu''@;'; put 'put ''OSIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiICBkPSJNMjEsMjNIMTlWMTVIMTZhMSwxLDAsMCwwLDAsMmgxdjZIMTVhMSwxLDAsMSwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiICBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0yLDUuMTVhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsMTUuOSwxMS4xNVpNMjMsMjRhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwxLDEs''@;'; put 'put ''MC0yaDJWMTdIMTZhMSwxLDAsMCwxLDAtMmg0djhoMkExLDEsMCwwLDEsMjMsMjRaIi8+JyksZS5DbHJTaGFwZUluZm9TdGFuZGFyZD0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuOTciIGN5PSIxMC40''@;'; put 'put ''NSIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMSwyNUgxOVYxNC4xSDE2YTEsMSwwLDAsMCwwLDJoMVYyNUgxNWExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwyLjFabS0uMSw1LjI4YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDE3LjksNy4zOFptMy42LDIxLjI1aC03YTEuNCwxLjQsMCwxLDEs''@;'; put 'put ''MC0yLjhoMi4xdi05LjJIMTVhMS40LDEuNCwwLDEsMSwwLTIuOGg0LjR2MTJoMi4xYTEuNCwxLjQsMCwxLDEsMCwyLjhaIi8+JyksZS5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4''@;'; put 'put ''LDEyLjFhMSwxLDAsMCwwLTEuNDEsMEwxNS40OSwyMy4xNWwtNi02QTEsMSwwLDAsMCw4LDE4LjUzTDE1LjQ5LDI2LDI4LDEzLjUyQTEsMSwwLDAsMCwyOCwxMi4xWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0x''@;'; put 'put ''OCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI4LjQ1LDEyLjYzLDE1LjMxLDI1Ljc2LDcuNTUsMThhMS40LDEuNCwwLDAsMSwyLTJsNS43OCw1Ljc4TDI2LjQ3LDEwLjY1YTEuNCwxLjQsMCwxLDEsMiwyWiIvPicpLGUuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPSgwLGEu''@;'; put 'put ''Y2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0x''@;'; put 'put ''OCwyMi42MWExLDEsMCwwLDEtMS0xdi0xMmExLDEsMCwxLDEsMiwwdjEyQTEsMSwwLDAsMSwxOCwyMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2''@;'; put 'put ''LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwy''@;'; put 'put ''LjFaTTE2LjYsOC44YTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjguNmExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEuOCwwLDAsMSwxOCwyOC42WiIvPicpLGUuQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNs''@;'; put 'put ''ZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0x''@;'; put 'put ''LTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTUuMDYyMDc4MiwxLjY4MTE5NiBDMTUuNjI5ODgxOSwwLjY0OTI2NjM1NSAxNi43''@;'; put 'put ''MTA5MDkxLDAuMDEwMjIxOTM5NiAxNy44ODUsMC4wMTAyMjE5Mzk2IEMxOS4wNTkwOTA5LDAuMDEwMjIxOTM5NiAyMC4xNDAxMTgxLDAuNjQ5MjY2MzU1IDIwLjcwODY0MzMsMS42ODI1MjEyOSBMMzQuNTk4NjQ0LDI3LjI0MjUyMjUgQzM1LjE0MDc3NDYsMjguMjQwMTM5NyAzNS4xMTc0MzQ1''@;'; put 'put ''LDI5LjQ0OTUzNzMgMzQuNTM3MjE2MSwzMC40MjU0OTQzIEMzMy45NTY5OTc3LDMxLjQwMTQ1MTQgMzIuOTA1NjcxLDMxLjk5OTY5ODQgMzEuNzcsMzIgTDQuMDIyMzkzMjMsMzEuOTk5NzQ5MiBDMi44NzQwOTAwOSwzMi4wMjU0Njk5IDEuNzk5MDI4NDMsMzEuNDM3NTc1MyAxLjIwMTA2MzM1''@;'; put 'put ''LDMwLjQ1NjkxMjYgQzAuNjAzMDk4MjY1LDI5LjQ3NjI0OTkgMC41NzI3Nzc4OTksMjguMjUxMzE3OSAxLjEyMjA3ODE4LDI3LjI0MTE5NiBMMTUuMDYyMDc4MiwxLjY4MTE5NiBaIE0yLjg3ODUwNzY3LDI4LjE5NzcyODIgQzIuNjcwNjA5NjYsMjguNTgwMDM3NiAyLjY4MjA5NzUsMjkuMDQ0''@;'; put 'put ''MTQyMyAyLjkwODY1NTcsMjkuNDE1Njk3NyBDMy4xMzUyMTM5LDI5Ljc4NzI1MzIgMy41NDI1MzU0LDMwLjAwOTk5NTkgNCwzMCBMMzEuNzY5NzM0NCwzMCBDMzIuMTk5OTE5MSwyOS45OTk4ODU4IDMyLjU5ODI0NzgsMjkuNzczMjIwOCAzMi44MTgwODIxLDI5LjQwMzQ0ODIgQzMzLjAzNzkx''@;'; put 'put ''NjQsMjkuMDMzNjc1NyAzMy4wNDY3NTk1LDI4LjU3NTQ1NjcgMzIuODQxMzU2NywyOC4xOTc0Nzg3IEwxOC45NTM4NzM5LDIuNjQyMDgxOTUgQzE4LjczOTQyMzYsMi4yNTIzNDQzNiAxOC4zMjk4NDE5LDIuMDEwMjIxOTQgMTcuODg1LDIuMDEwMjIxOTQgQzE3LjQ0MDY4ODksMi4wMTAyMjE5''@;'; put 'put ''NCAxNy4wMzE1NTM4LDIuMjUxNzY2OTIgMTYuODE2ODk0NiwyLjY0MDY4NzUzIEwyLjg3ODUwNzY3LDI4LjE5NzcyODIgWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC42LDI5LjIxLDIwLjcxLDMuNjVhMy4y''@;'; put 'put ''MiwzLjIyLDAsMCwwLTUuNjYsMEwxLjE3LDI5LjIxQTMuMjIsMy4yMiwwLDAsMCw0LDM0SDMxLjc3YTMuMjIsMy4yMiwwLDAsMCwyLjgzLTQuNzVaTTE2LjYsMTBhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOS44NWExLjgsMS44LDAsMSwxLDEuOC0x''@;'; put 'put ''LjhBMS44LDEuOCwwLDAsMSwxOCwyOS44NVoiLz4nKSxlLkNsclNoYXBlSGVscEluZm89KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LjM5LDI1LjQ1YTEsMSwwLDAsMC0xLjM4LjI5Yy0xLjQxLDIuMTYtNCw0LjgxLTYuMzEsNS43cy00LjEyLjU3LTQuODQsMGMtLjMxLS4yNy0xLjEy''@;'; put 'put ''LTEtLjQzLTMuNDkuNDYtMS42NiwzLjMyLTkuNDgsNC0xMS4zOGwtMi4xOC4yOGMtLjY5LDEuODYtMy4yOSw4Ljg0LTMuNzYsMTAuNTgtLjY4LDIuNDktLjM0LDQuMywxLjA5LDUuNTZBNS41OSw1LjU5LDAsMCwwLDE1LDM0YTkuNTMsOS41MywwLDAsMCwzLjQ1LS43YzIuNzktMS4wOSw1Ljcy''@;'; put 'put ''LTQuMTIsNy4yNi02LjQ3QTEsMSwwLDAsMCwyNS4zOSwyNS40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjMsMTFhNC41LDQuNSwwLDEsMC00LjUtNC41QTQuNSw0LjUsMCwwLDAsMTkuMywxMVptMC03''@;'; put 'put ''YTIuNSwyLjUsMCwxLDEtMi41LDIuNUEyLjUsMi41LDAsMCwxLDE5LjMsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjgxLDE1Yy4wNiwwLDYuMjctLjgyLDcuNzMtMSwuNjUtLjEsMS4xNCwwLDEuMy4x''@;'; put 'put ''NXMuMjEuOC0uMDcsMS42OGMtLjYxLDEuODYtMy42OSwxMS00LjU5LDEzLjcxYTgsOCwwLDAsMCwxLjI5LS4zOCw3LjMyLDcuMzIsMCwwLDAsMS4xNS0uNkMxOS44NSwyNSwyMi4xNSwxOC4xLDIyLjY3LDE2LjUycy4zOS0yLjc4LS4zLTMuNmEzLjE2LDMuMTYsMCwwLDAtMy4wOC0uODNjLTEu''@;'; put 'put ''NDMuMTUtNy40Ny45NC03LjczLDFhMSwxLDAsMCwwLC4yNiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyMC43NSIgY3k9IjYiIHI9IjQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuODQsMjYuMjNhMSwxLDAsMCwwLTEuNC4yOSwxNi42LDE2LjYsMCwwLDEtMy41MSwzLjc3Yy0uMzMuMjUtMS41NiwxLjItMi4wOCwxLS4zNi0uMTEtLjE1LS44Mi0uMDgtMS4xMmwuNTMtMS41N2MuMjItLjY0LDQuMDUtMTIsNC40Ny0x''@;'; put 'put ''My4zLjYyLTEuOS4zNS0zLjc3LTIuNDgtMy4zMi0uNzcuMDgtOC41OCwxLjA5LTguNzIsMS4xYTEsMSwwLDAsMCwuMTMsMnMzLS4zOSwzLjMzLS40MmEuODguODgsMCwwLDEsLjg1LjQ0LDIuNDcsMi40NywwLDAsMS0uMDcsMS43MWMtLjI2LDEtNC4zNywxMi41OC00LjUsMTMuMjVhMi43OCwy''@;'; put 'put ''Ljc4LDAsMCwwLDEuMTgsMyw1LDUsMCwwLDAsMy4wOC44M2gwYTguNTMsOC41MywwLDAsMCwzLjA5LS42MmMyLjQ5LTEsNS4wOS0zLjY2LDYuNDYtNS43NUExLDEsMCwwLDAsMjQuODQsMjYuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hh''@;'; put 'put ''cGVCYXJzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMjlINGExLDEsMCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwxOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTMyLDlINEExLDEsMCwwLDEsNCw3SDMyYTEs''@;'; put 'put ''MSwwLDAsMSwwLDJaIi8+JyksZS5DbHJTaGFwZVVzZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDE3YTcsNywwLDEsMC03LTdBNyw3LDAsMCwwLDE4LDE3Wk0xOCw1YTUsNSwwLDEsMS01LDVBNSw1LDAsMCwxLDE4LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdW''@;'; put 'put ''MjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIs''@;'; put 'put ''MCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw0LjQ1LTEuNmgtLjIyQTMuNjgsMy42OCwwLDAsMSwyMCwxNC42YTUsNSwwLDEsMSwxLjI0LTguNDJsMS0xLjc2QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgy''@;'; put 'put ''OWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDYuODUtNS41Niw3LjQsNy40LDAsMCwxLTIuMjQtNi42OUE3LDcsMCwxLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdl''@;'; put 'put ''ZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwx''@;'; put 'put ''Ny4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxMCIgcj0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzks''@;'; put 'put ''MXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTE4LDE3YTcsNywwLDAsMCw0LjQ1LTEuNmgtLjIyQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDMuMTYtNS40N0E3LDcsMCwxLDAsMTgsMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwx''@;'; put 'put ''LjUxLDAsMCwwLDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDYuODUtNS41Niw3LjQsNy40LDAsMCwxLTIuMjQtNi42OUE3LDcsMCwxLDAs''@;'; put 'put ''MTgsMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVBbmdsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LjUyLDIyLjUyLDE4LDEwLjYsNi40OCwyMi41MmExLjcsMS43LDAsMCwwLDIuNDUsMi4zNkwxOCwxNS40''@;'; put 'put ''OWw5LjA4LDkuMzlhMS43LDEuNywwLDAsMCwyLjQ1LTIuMzZaIi8+JyksZS5DbHJTaGFwZUZvbGRlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIu''@;'; put 'put ''NDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wm0wLDIwSDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMwWiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVWMjlINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MWE3LjUsNy41LDAsMCwxLTEuMjktMkgx''@;'; put 'put ''Ni40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMwLDE1''@;'; put 'put ''LjRWMjlINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDlIMTYuNDJMMTQu''@;'; put 'put ''MTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTUuNFpNNiwxMVY3aDYuNDlsMi43Miw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4y''@;'; put 'put ''MywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEz''@;'; put 'put ''LjVBNy41LDcuNSwwLDAsMSwyMy4xMyw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVpNNiwxMVY3aDYuNDlsMi43Miw0WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBlRm9sZGVyT3Blbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40''@;'; put 'put ''MUgzMmEyLDIsMCwwLDAtMi0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0Wk0yOS41''@;'; put 'put ''NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAs''@;'; put 'put ''MzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIs''@;'; put 'put ''MCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0Wk0yOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNGgtLjNMMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRoOS40MkEzLjY3LDMuNjcsMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwxLS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAs''@;'; put 'put ''MCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEu''@;'; put 'put ''MzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEs''@;'; put 'put ''My41OWExLDEsMCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCww''@;'; put 'put ''LDAsMzUuMzIsMTMuNzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYt''@;'; put 'put ''LjU2SDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZB''@;'; put 'put ''MiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xYTEuNjgsMS42OCwwLDAsMCwuMDctLjMyQTMuNjcsMy42NywwLDAsMSwzMy42OCwxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUy''@;'; put 'put ''LDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjMxLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFI''@;'; put 'put ''MzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIvPicpLGUuQ2xyU2hhcGVCZWxsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuNTEsMjcuODNBMTQuNCwxNC40LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00Ljgx''@;'; put 'put ''VjE1LjE1QTEwLjgxLDEwLjgxLDAsMCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCww''@;'; put 'put ''LS4zNC43NXYxLjM2YTEsMSwwLDAsMCwxLDFoMjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSwwLDAsMCwzMi41MSwyNy44M1pNNS4xMywyOC45NGExNi4xNywxNi4xNywwLDAsMCwyLjQ0LTMsMTQuMjQsMTQuMjQsMCwwLDAsMS42NS01Ljg1VjE1LjE1YTguNzQsOC43NCwwLDEsMSwxNy40''@;'; put 'put ''NywwdjQuOTRhMTQuMjQsMTQuMjQsMCwwLDAsMS42NSw1Ljg1LDE2LjE3LDE2LjE3LDAsMCwwLDIuNDQsM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41''@;'; put 'put ''OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMy''@;'; put 'put ''QTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42Myww''@;'; put 'put ''LDAsMS0xLjM1LTQuODFWMTUuMTVhMTAuOTIsMTAuOTIsMCwwLDAtLjE2LTEuNzksNy40NCw3LjQ0LDAsMCwxLTIuMjQtLjg0LDguODksOC44OSwwLDAsMSwuNCwyLjY0djQuOTRhMTQuMjQsMTQuMjQsMCwwLDAsMS42NSw1Ljg1LDE2LjE3LDE2LjE3LDAsMCwwLDIuNDQsM0g1LjEzYTE2LjE3''@;'; put 'put ''LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVBOC44LDguOCwwLDAsMSwxOCw2LjMxYTguNjEsOC42MSwwLDAsMSw0Ljc2LDEuNDRBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41OCwxMC41OCwwLDAsMC0zLjMy''@;'; put 'put ''LTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzLDEsMSwwLDAsMC0uMzQuNzV2MS4zNmExLDEsMCwwLDAsMSwxaDI3Ljhh''@;'; put 'put ''MSwxLDAsMCwwLDEtMVYyOC41OEExLDEsMCwwLDAsMzIuNTEsMjcuODNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNywwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNUExMC44MSwxMC44MSwwLDAsMCwx''@;'; put 'put ''OS4yMSw0LjRWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xNS4zMiwzMmEyLjY1LDIuNjUsMCwwLDAsNS4yNSwwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjg1LDI4''@;'; put 'put ''LjEzbC0uMzQtLjNBMTQuMzcsMTQuMzcsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVhMTAuOTIsMTAuOTIsMCwwLDAtLjE2LTEuNzlBNy41LDcuNSwwLDAsMSwyMi41LDZjMC0uMjEsMC0uNDIsMC0uNjNhMTAuNTcsMTAuNTcsMCwwLDAtMy4zMi0xVjMu''@;'; put 'put ''MTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45M2wtLjM0LjN2Mi44MkgzMi44NVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksZS5DbHJTaGFwZUltYWdlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIs''@;'; put 'put ''MCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIs''@;'; put 'put ''MTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQx''@;'; put 'put ''LDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0z''@;'; put 'put ''LDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMs''@;'; put 'put ''MywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVDbG91ZD0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE0LDMzSDEwLjYyQzUuNjcsMzMsMSwyOC4xOSwxLDIzLjFhMTAsMTAsMCwwLDEsOC05Ljc1LDEwLjE5LDEwLjE5LDAsMCwxLDIwLjMzLDEuMDZBMTAuMDcsMTAuMDcsMCwwLDEsMjksMTYuNjZh''@;'; put 'put ''OC4yOSw4LjI5LDAsMCwxLDYsOEMzNSwyOS4xLDMxLjMzLDMzLDI3LjE0LDMzWk0xOS4wOSw2LjIzYTguMjQsOC4yNCwwLDAsMC04LjE5LDhsMCwuODctLjg2LjFBNy45NCw3Ljk0LDAsMCwwLDMsMjMuMWMwLDQsMy43Nyw3LjksNy42Miw3LjlIMjcuMTRDMzAuMjEsMzEsMzMsMjgsMzMsMjQu''@;'; put 'put ''NjVhNi4zMSw2LjMxLDAsMCwwLTUuMzctNi4yNmwtMS4xOC0uMTguMzktMS4xM0E4LjE4LDguMTgsMCwwLDAsMTkuMDksNi4yM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0y''@;'; put 'put ''OSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSwwLTFhNy40NSw3LjQ1LDAsMCwxLTIuMS0uNTQsOCw4LDAsMCwxLS4zLDQuMTZsLS4zOSwxLjEzLDEuMTguMThhNi4zMSw2LjMxLDAsMCwxLDUuMzcsNi4yNkMzMi45NSwyOCwzMC4xNiwzMSwyNy4wOSwzMUgx''@;'; put 'put ''MC41N2MtMy44NCwwLTcuNjItMy45MS03LjYyLTcuOWE3Ljk0LDcuOTQsMCwwLDEsNy03Ljg5bC44Ni0uMSwwLS44N2E4LjI0LDguMjQsMCwwLDEsOC4xOS04QTguMTMsOC4xMywwLDAsMSwyMi41OCw3YTcuNTMsNy41MywwLDAsMS0uMDgtMSw3LjUxLDcuNTEsMCwwLDEsLjA5LTEuMTJBMTAu''@;'; put 'put ''MTMsMTAuMTMsMCwwLDAsMTksNC4yMywxMC4yNiwxMC4yNiwwLDAsMCw4LjkxLDEzLjM2YTEwLDEwLDAsMCwwLTgsOS43NWMwLDUuMDksNC42Nyw5LjksOS42Miw5LjlIMjcuMDljNC4xOSwwLDcuODYtMy45LDcuODYtOC4zNUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI5LDE2LjY2YTEwLjE0LDEwLjE0LDAsMCwwLC4yLTEuM2gtMmE4LjI4LDguMjgsMCwwLDEtLjM3LDEuNzJsLS4zOSwxLjEzLDEuMTguMThhNi4zMSw2LjMxLDAsMCwxLDUuMzcsNi4yNkMzMi45NSwyOCwzMC4xNiwzMSwyNy4wOSwz''@;'; put 'put ''MUgxMC41N2MtMy44NCwwLTcuNjItMy45MS03LjYyLTcuOWE3Ljk0LDcuOTQsMCwwLDEsNy03Ljg5bC44Ni0uMSwwLS44N0E4LjE2LDguMTYsMCwwLDEsMjEsNi40N2wxLTEuOEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2YTEwLDEwLDAsMCwwLTgsOS43NWMwLDUuMDksNC42Nyw5Ljks''@;'; put 'put ''OS42Miw5LjlIMjcuMDljNC4xOSwwLDcuODYtMy45LDcuODYtOC4zNUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVB''@;'; put 'put ''OC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRjMC0uMzMsMC0uNjUsMC0xYTcu''@;'; put 'put ''NDQsNy40NCwwLDAsMS02LjYtOC41OEExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEwLjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjguMTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSww''@;'; put 'put ''LDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI5LDE2LjY2YTEwLjE1LDEwLjE1LDAsMCwwLC4yLTEuMjZoLTdBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy01LjIxQTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwy''@;'; put 'put ''My4xQzEsMjguMTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksZS5DbHJTaGFwZUVsbGlwc2lzSG9yaXpv''@;'; put 'put ''bnRhbD0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIu''@;'; put 'put ''OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjki''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVGaWx0ZXJHcmlkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdM''@;'; put 'put ''MTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEu''@;'; put 'put ''NS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+JyksZS5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4y''@;'; put 'put ''MywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4''@;'; put 'put ''LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPicpLGUuQ2xyU2hhcGVWbUJ1Zz0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSIzIiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjE1IiBzdHlsZT0iaXNvbGF0aW9uOmlzb2xh''@;'; put 'put ''dGUiLz48cGF0aCBkPSJNMy43OSwxNC44M2ExLjA5LDEuMDksMCwwLDAtMS40Ny0uNTYsMS4wOSwxLjA5LDAsMCwwLS41NCwxLjQ5bDIuNDcsNS40Yy4zOS44NS44LDEuMjksMS41NywxLjI5UzcsMjIsNy4zOSwyMS4xNmwyLjE3LTQuNzdhLjMzLjMzLDAsMCwxLC4zMS0uMi4zNS4zNSwwLDAs''@;'; put 'put ''MSwuMzUuMzV2NC42MWExLjE1LDEuMTUsMCwwLDAsMS4xNCwxLjMsMS4xNywxLjE3LDAsMCwwLDEuMTctMS4zVjE3LjM4YTEuMTUsMS4xNSwwLDAsMSwxLjIyLTEuMiwxLjEzLDEuMTMsMCwwLDEsMS4xOCwxLjJ2My43N2ExLjE3LDEuMTcsMCwxLDAsMi4zMiwwVjE3LjM4YTEuMTUsMS4xNSww''@;'; put 'put ''LDAsMSwxLjIyLTEuMiwxLjEzLDEuMTMsMCwwLDEsMS4xOCwxLjJ2My43N2ExLjE2LDEuMTYsMCwxLDAsMi4zMSwwVjE2Ljg2YTIuNjksMi42OSwwLDAsMC0yLjc4LTIuNjksMy41NywzLjU3LDAsMCwwLTIuNDcsMS4wNSwyLjc1LDIuNzUsMCwwLDAtMi4zOC0xLjA1QTMuOTMsMy45MywwLDAs''@;'; put 'put ''MCwxMiwxNS4yMmEyLjgyLDIuODIsMCwwLDAtMi4wOC0xLjA1QTIuNTUsMi41NSwwLDAsMCw3LjQsMTUuODlMNS44MiwxOS42M2wtMi00LjgiIGZpbGw9IiNmZmZmZmYiLz48cGF0aCBkPSJNMzMsMTQuMThBMS4xNCwxLjE0LDAsMCwwLDMxLjksMTVsLTEuMTksMy43M0wyOS41LDE1LjA1YTEu''@;'; put 'put ''MTgsMS4xOCwwLDAsMC0xLjE1LS44N2gtLjFhMS4yLDEuMiwwLDAsMC0xLjE1Ljg3bC0xLjE5LDMuNzEtMS4xOC0zLjcxYTEuMTUsMS4xNSwwLDAsMC0xLjExLS44NywxLjA4LDEuMDgsMCwwLDAtMS4xMiwxLjA3LDEuNjgsMS42OCwwLDAsMCwuMS41NGwyLDUuN2ExLjI3LDEuMjcsMCwwLDAs''@;'; put 'put ''MS4yNywxLDEuMjQsMS4yNCwwLDAsMCwxLjItLjkzbDEuMi0zLjY0LDEuMiwzLjY0YTEuMjUsMS4yNSwwLDAsMCwxLjI2LjkzQTEuMjcsMS4yNywwLDAsMCwzMiwyMS41TDM0LDE1LjczYTEuNzcsMS43NywwLDAsMCwuMDgtLjQ4QTEuMDcsMS4wNywwLDAsMCwzMywxNC4xOFoiIGZpbGw9IiNm''@;'; put 'put ''ZmZmZmYiLz4nKSxlLkNsclNoYXBlU2VhcmNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMzMsNS4wNUExMC45NSwxMC45NSwwLDEsMSw1LjM5LDE2LDExLDExLDAsMCwxLDE2LjMzLDUuMDVtMC0yLjA1''@;'; put 'put ''YTEzLDEzLDAsMSwwLDEzLDEzLDEzLDEzLDAsMCwwLTEzLTEzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzUsMzMuMjlsLTcuMzctNy40Mi0xLjQyLDEuNDEsNy4zNyw3LjQyQTEsMSwwLDEsMCwzNSwz''@;'; put 'put ''My4yOVoiLz4nKSxlLkNsclNoYXBlVmlld0NvbHVtbnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSw1SDVBMiwyLDAsMCwwLDMsN1YyOWEyLDIsMCwwLDAsMiwySDMxYTIsMiwwLDAsMCwyLTJWN0EyLDIs''@;'; put 'put ''MCwwLDAsMzEsNVpNMTMsMjlINVY3aDhabTEwLDBIMTVWN2g4WiIvPicpLGUuQ2xyU2hhcGVBbmdsZURvdWJsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LDE5LjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4''@;'; put 'put ''LDguODMsNy43MSwxOS4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDYsMjkuNzEsMTcuNzFBMSwxLDAsMCwxLDI5LDE5LjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjksMzAuNDFhMSwxLDAsMCwx''@;'; put 'put ''LS43MS0uMjlMMTgsMTkuODMsNy43MSwzMC4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDE3LDI5LjcxLDI4LjcxQTEsMSwwLDAsMSwyOSwzMC40MVoiLz4nKSxlLkNsclNoYXBlQ2FsZW5kYXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSI4IiB5PSIxOSIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEi''@;'; put 'put ''IHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIGQ9Ik0xMCwxMGExLDEsMCww''@;'; put 'put ''LDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTUiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwy''@;'; put 'put ''NiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiIHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwz''@;'; put 'put ''MiwxMy4yMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQi''@;'; put 'put ''IHg9IjIwIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiB4PSIyMCIgeT0iMTkiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEt''@;'; put 'put ''LWJhZGdlZCIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWJhZGdlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTQtLWJhZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTE1LS1iYWRnZWQiIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMw''@;'; put 'put ''LjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiB4PSI4IiB5PSIxNCIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVj''@;'; put 'put ''dCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNS0tYWxlcnRlZCIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYWxl''@;'; put 'put ''cnRlZCIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwb2x5Z29uIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4yOSA2Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4''@;'; put 'put ''LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjI1LDZoLTRWOWEyLjIsMi4yLDAsMSwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCww''@;'; put 'put ''LDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlpt''@;'; put 'put ''NiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI2LDEwYTEsMSwwLDAsMCwx''@;'; put 'put ''LTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEs''@;'; put 'put ''MCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwx''@;'; put 'put ''Ljc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgx''@;'; put 'put ''NFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY4LDMuNjgs''@;'; put 'put ''MCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFpNMTAsMjZIOFYyNGgyWm0wLTVIOFYx''@;'; put 'put ''OWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptNiw1SDI2VjI0aDJabTAtNUgyNlYxOWgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksZS5DbHJTaGFwZUV2ZW50PSgwLGEuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMTcsMjUuODYsMTAuODEsMjAuNWExLDEsMCwwLDEsMS40MS0xLjQxTDE2LjE3LDIzbDguNjQtOC42NGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAu''@;'; put 'put ''MTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTEwLjgxLDIwLjVsNS4z''@;'; put 'put ''Niw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIg''@;'; put 'put ''ZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTMyLDEzLjIyVjMwSDRWOEg3''@;'; put 'put ''VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAs''@;'; put 'put ''OSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLC4yMy0uNDFI''@;'; put 'put ''MjMuOEwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAu''@;'; put 'put ''MTQgOCAyMS4yOSA2Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYu''@;'; put 'put ''ODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwx''@;'; put 'put ''LDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwwLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00''@;'; put 'put ''QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMjUuOTQsMTYuNThsLTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIu''@;'; put 'put ''OSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSww''@;'; put 'put ''LDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjYuM2ExLjM0LDEuMzQsMCwwLDEtLjM2LDEuMThsLTkuNjcsOS42''@;'; put 'put ''N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzgsNy03aC0xQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1''@;'; put 'put ''LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41''@;'; put 'put ''LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVabS00LjA2''@;'; put 'put ''LDMuMDgtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBlRXllPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhj''@;'; put 'put ''My4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40Mywx''@;'; put 'put ''Ny44LDI2LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOSwxMS4xN0E2Ljg2LDYuODYsMCwxLDAsMjUsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjA5LDExLjE3Wm0wLDExLjcyQTQuODYsNC44NiwwLDEs''@;'; put 'put ''MSwyMywxOCw0Ljg3LDQuODcsMCwwLDEsMTguMDksMjIuODlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wx''@;'; put 'put ''LjcyLDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5''@;'; put 'put ''LDIzLjQyLDI2LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOC4wOSIgY3k9IjE4LjAzIiByPSI2Ljg2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksZS5D''@;'; put 'put ''bHJTaGFwZUV5ZUhpZGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LjE5LDIwLjRBNi43OCw2Ljc4LDAsMCwwLDI1LjYyLDE4YTYuODYsNi44NiwwLDAsMC02Ljg2LTYuODYsNi43OSw2Ljc5LDAsMCwwLTIuMzcuNDNMMTgsMTMuMjNhNC43OCw0Ljc4LDAsMCwxLC43NC0uMDZBNC44''@;'; put 'put ''Nyw0Ljg3LDAsMCwxLDIzLjYyLDE4YTQuNzksNC43OSwwLDAsMS0uMDYuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44''@;'; put 'put ''MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzct''@;'; put 'put ''MS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTkuNzUsOS43NSw2LjY1LDYuNjVhNC44MSw0LjgxLDAsMCwxLTIuNS43MkE0Ljg3LDQuODcsMCwwLDEsMTMuOSwxOCw0LjgxLDQuODEsMCwwLDEsMTQuNjIsMTUuNTNabS0xLjQ1LTEuNDVhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42''@;'; put 'put ''YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcuMjksMCwwLDEsNi4xMi02LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjM3LDExLjE3''@;'; put 'put ''QTYuNzksNi43OSwwLDAsMCwxNiwxMS42bDguOCw4LjhBNi43OCw2Ljc4LDAsMCwwLDI1LjIzLDE4LDYuODYsNi44NiwwLDAsMCwxOC4zNywxMS4xN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4yOSwxNy41M2Mt''@;'; put 'put ''My4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5LjkzLDE5Ljkz''@;'; put 'put ''LDAsMCwwLDUtNmwuMjYtLjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEw''@;'; put 'put ''LDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTguMyw4LjNhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcu''@;'; put 'put ''MjksMCwwLDEsNi4xMi02LjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksZS5DbHJTaGFwZVN0ZXBGb3J3YXJkMj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNy4wOCw2LjUyYTEuNjgsMS42OCwwLDAsMCwwLDIuNEwxNi41MSwxOCw3LjEyLDI3LjA4''@;'; put 'put ''YTEuNywxLjcsMCwwLDAsMi4zNiwyLjQ0aDBMMjEuNCwxOCw5LjQ4LDYuNDdBMS42OSwxLjY5LDAsMCwwLDcuMDgsNi41MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNi40OSw1YTEuNywxLjcsMCwwLDAtMS43LDEuN1YyOS4zYTEu''@;'; put 'put ''NywxLjcsMCwwLDAsMy40LDBWNi43QTEuNywxLjcsMCwwLDAsMjYuNDksNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVBcnJvdz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuNjYsMTUuNjEsMTgsNiw4LjM0LDE1LjYx''@;'; put 'put ''QTEsMSwwLDEsMCw5Ljc1LDE3TDE3LDkuODFWMjguOTRhMSwxLDAsMSwwLDIsMFY5LjgxTDI2LjI1LDE3YTEsMSwwLDAsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLGUuQ29yZVNoYXBlcz17InVua25vd24tc3RhdHVzIjplLkNs''@;'; put 'put ''clNoYXBlVW5rbm93blN0YXR1cyxob21lOmUuQ2xyU2hhcGVIb21lLGNvZzplLkNsclNoYXBlQ29nLGNoZWNrOmUuQ2xyU2hhcGVDaGVjayx0aW1lczplLkNsclNoYXBlVGltZXMsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIjplLkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZSwiZXhjbGFtYXRp''@;'; put 'put ''b24tY2lyY2xlIjplLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGUsImNoZWNrLWNpcmNsZSI6ZS5DbHJTaGFwZUNoZWNrQ2lyY2xlLCJpbmZvLWNpcmNsZSI6ZS5DbHJTaGFwZUluZm9DaXJjbGUsImluZm8tc3RhbmRhcmQiOmUuQ2xyU2hhcGVJbmZvU3RhbmRhcmQsInN1Y2Nlc3Mtc3RhbmRh''@;'; put 'put ''cmQiOmUuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQsImVycm9yLXN0YW5kYXJkIjplLkNsclNoYXBlRXJyb3JTdGFuZGFyZCwid2FybmluZy1zdGFuZGFyZCI6ZS5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZCwiaGVscC1pbmZvIjplLkNsclNoYXBlSGVscEluZm8sYmFyczplLkNsclNoYXBlQmFy''@;'; put 'put ''cyx1c2VyOmUuQ2xyU2hhcGVVc2VyLGFuZ2xlOmUuQ2xyU2hhcGVBbmdsZSxmb2xkZXI6ZS5DbHJTaGFwZUZvbGRlciwiZm9sZGVyLW9wZW4iOmUuQ2xyU2hhcGVGb2xkZXJPcGVuLGJlbGw6ZS5DbHJTaGFwZUJlbGwsaW1hZ2U6ZS5DbHJTaGFwZUltYWdlLGNsb3VkOmUuQ2xyU2hhcGVDbG91''@;'; put 'put ''ZCwiZWxsaXBzaXMtaG9yaXpvbnRhbCI6ZS5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbCwiZWxsaXBzaXMtdmVydGljYWwiOmUuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsLCJmaWx0ZXItZ3JpZCI6ZS5DbHJTaGFwZUZpbHRlckdyaWQsImZpbHRlci1ncmlkLWNpcmNsZSI6ZS5DbHJTaGFw''@;'; put 'put ''ZUZpbHRlckdyaWRDaXJjbGUsInZtLWJ1ZyI6ZS5DbHJTaGFwZVZtQnVnLHNlYXJjaDplLkNsclNoYXBlU2VhcmNoLCJ2aWV3LWNvbHVtbnMiOmUuQ2xyU2hhcGVWaWV3Q29sdW1ucywiYW5nbGUtZG91YmxlIjplLkNsclNoYXBlQW5nbGVEb3VibGUsY2FsZW5kYXI6ZS5DbHJTaGFwZUNhbGVu''@;'; put 'put ''ZGFyLGV2ZW50OmUuQ2xyU2hhcGVFdmVudCxleWU6ZS5DbHJTaGFwZUV5ZSwiZXllLWhpZGUiOmUuQ2xyU2hhcGVFeWVIaWRlLCJzdGVwLWZvcndhcmQtMiI6ZS5DbHJTaGFwZVN0ZXBGb3J3YXJkMixhcnJvdzplLkNsclNoYXBlQXJyb3d9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVT''@;'; put 'put ''aGFwZXMsImhvdXNlIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy5ob21lKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywic2V0dGluZ3MiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzLmNvZykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShlLkNvcmVTaGFwZXMsInN1Y2Nlc3MiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzLmNoZWNrKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywiY2xvc2UiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzLnRpbWVzKSksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywid2FybmluZyIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkNvcmVTaGFwZXNbImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Db3JlU2hhcGVzLCJlcnJvciIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShl''@;'; put 'put ''LkNvcmVTaGFwZXNbImV4Y2xhbWF0aW9uLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywiaW5mbyIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkNvcmVTaGFwZXNbImluZm8tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Db3JlU2hhcGVz''@;'; put 'put ''LCJtZW51IiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy5iYXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywiYXZhdGFyIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy51c2VyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29y''@;'; put 'put ''ZVNoYXBlcywiY2FyZXQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzLmFuZ2xlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywiZGlyZWN0b3J5IiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy5mb2xkZXIpKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZS5Db3JlU2hhcGVzLCJub3RpZmljYXRpb24iLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzLmJlbGwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Db3JlU2hhcGVzLCJjb2xsYXBzZSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkNvcmVTaGFwZXNbImFu''@;'; put 'put ''Z2xlLWRvdWJsZSJdKSl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyI6ZnVuY3Rpb24oQSxlLGMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5DbHJTaGFwZUxvZ291dD1lLkNs''@;'; put 'put ''clNoYXBlTG9naW49ZS5DbHJTaGFwZUhlbHA9ZS5DbHJTaGFwZUNvcHk9ZS5DbHJTaGFwZUNoaWxkQXJyb3c9ZS5DbHJTaGFwZUNpcmNsZUFycm93PWUuQ2xyU2hhcGVBbGFybUNsb2NrPWUuQ2xyU2hhcGVDbG9jaz1lLkNsclNoYXBlSGlzdG9yeT1lLkNsclNoYXBlVGFncz1lLkNsclNoYXBl''@;'; put 'put ''VGFnPWUuQ2xyU2hhcGVUcmFzaD1lLkNsclNoYXBlVGltZXNDaXJjbGU9ZS5DbHJTaGFwZUJhbj1lLkNsclNoYXBlUGx1c0NpcmNsZT1lLkNsclNoYXBlTWludXNDaXJjbGU9ZS5DbHJTaGFwZU1pbnVzPWUuQ2xyU2hhcGVQbHVzPWUuQ2xyU2hhcGVGaWxlPWUuQ2xyU2hhcGVQaW49ZS5DbHJT''@;'; put 'put ''aGFwZUZpbHRlcj1lLkNsclNoYXBlUG9wT3V0PWUuQ2xyU2hhcGVVc2Vycz1lLkNsclNoYXBlVW5sb2NrPWUuQ2xyU2hhcGVMb2NrPWUuQ2xyU2hhcGVVcGxvYWQ9ZS5DbHJTaGFwZURvd25sb2FkPWUuQ2xyU2hhcGVMaWdodGJ1bGI9ZS5DbHJTaGFwZVZpZXdDYXJkcz1lLkNsclNoYXBlVmll''@;'; put 'put ''d0xpc3Q9ZS5DbHJTaGFwZVN5bmM9ZS5DbHJTaGFwZVJlZnJlc2g9ZS5DbHJTaGFwZU5vdGU9ZS5DbHJTaGFwZVBlbmNpbD1lLkNsclNoYXBlVGhlcm1vbWV0ZXI9ZS5DbHJTaGFwZUJ1Zz1lLkNsclNoYXBlU2Npc3NvcnM9ZS5DbHJTaGFwZUFzdGVyaXNrPWUuQ2xyU2hhcGVCb29rPWUuQ2xy''@;'; put 'put ''U2hhcGVPYmplY3RzPWUuQ2xyU2hhcGVSZXNpemU9ZS5DbHJTaGFwZUN1cnNvckhhbmRDbGljaz1lLkNsclNoYXBlQ3Vyc29ySGFuZD1lLkNsclNoYXBlQ3Vyc29yQXJyb3c9ZS5DbHJTaGFwZUdyaWRWaWV3PWUuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj1lLkNsclNoYXBlTmV3PWUuQ2xy''@;'; put 'put ''U2hhcGVBbGFybU9mZj1lLkNsclNoYXBlUGluYm9hcmQ9ZS5DbHJTaGFwZUFkZFRleHQ9dm9pZCAwLGUuQ2xyU2hhcGVDbG9uZT1lLkNsclNoYXBlQ3Vyc29yTW92ZT1lLkNsclNoYXBlV2FuZD1lLkNsclNoYXBlU3VuPWUuQ2xyU2hhcGVNb29uPWUuQ2xyU2hhcGVGaWx0ZXIyPWUuQ2xyU2hh''@;'; put 'put ''cGVEcmFnSGFuZGxlPWUuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQ9ZS5DbHJTaGFwZUNvbG9yUGlja2VyPWUuQ2xyU2hhcGVCcmllZmNhc2U9ZS5DbHJTaGFwZUV4cGFuZENhcmQ9ZS5DbHJTaGFwZUNvbGxhcHNlQ2FyZD1lLkNsclNoYXBlU29ydEJ5PWUuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5''@;'; put 'put ''Mj1lLkNsclNoYXBlQWNjZXNzaWJpbGl0eTE9ZS5DbHJTaGFwZVNocmluaz1lLkNsclNoYXBlUGFwZXJjbGlwPWUuQ2xyU2hhcGVGaWxlR3JvdXA9ZS5DbHJTaGFwZVJlcGVhdD1lLkNsclNoYXBlSWRCYWRnZT1lLkNsclNoYXBlQmFsYW5jZT1lLkNsclNoYXBlT3JnYW5pemF0aW9uPWUuQ2xy''@;'; put 'put ''U2hhcGVOb0FjY2Vzcz1lLkNsclNoYXBlSG91cmdsYXNzPWUuQ2xyU2hhcGVGbGFtZT1lLkNsclNoYXBlVGFyZ2V0PWUuQ2xyU2hhcGVCdWxsc2V5ZT1lLkNsclNoYXBlV3JlbmNoPWUuQ2xyU2hhcGVCb2x0PWUuQ2xyU2hhcGVMaWJyYXJ5PWUuQ2xyU2hhcGVLZXk9ZS5DbHJTaGFwZVpvb21P''@;'; put 'put ''dXQ9ZS5DbHJTaGFwZVpvb21Jbj1lLkNsclNoYXBlV2luZG93UmVzdG9yZT1lLkNsclNoYXBlV2luZG93TWluPWUuQ2xyU2hhcGVXaW5kb3dNYXg9ZS5DbHJTaGFwZVdpbmRvd0Nsb3NlPWUuQ2xyU2hhcGVUb29scz1lLkNsclNoYXBlU3dpdGNoPWUuQ2xyU2hhcGVUd29XYXlBcnJvd3M9ZS5D''@;'; put 'put ''bHJTaGFwZUZpbGVTZXR0aW5ncz1lLkNsclNoYXBlU2Nyb2xsPWUuQ2xyU2hhcGVVbmRvPWUuQ2xyU2hhcGVSZWRvPWUuQ2xyU2hhcGVMaXN0PWUuQ2xyU2hhcGVGaXJld2FsbD1lLkNsclNoYXBlQ2xpcGJvYXJkPWUuQ2xyU2hhcGVTbGlkZXI9ZS5DbHJTaGFwZVdvcmxkPWUuQ2xyU2hhcGVQ''@;'; put 'put ''cmludGVyPXZvaWQgMCxlLkVzc2VudGlhbFNoYXBlcz1lLkNsclNoYXBlQ29sb3JQYWxldHRlPWUuQ2xyU2hhcGVGaXJzdEFpZD1lLkNsclNoYXBlQmV0YT1lLkNsclNoYXBlRG90Q2lyY2xlPWUuQ2xyU2hhcGVDaXJjbGU9ZS5DbHJTaGFwZUNyb3NzaGFpcnM9ZS5DbHJTaGFwZVZvbHVtZT1l''@;'; put 'put ''LkNsclNoYXBlVGFibGU9ZS5DbHJTaGFwZVNub3dmbGFrZT1lLkNsclNoYXBlRnVlbD1lLkNsclNoYXBlRm9ybT1lLkNsclNoYXBlRmlzaD1lLkNsclNoYXBlVHJlZT1lLkNsclNoYXBlUmVjeWNsZT1lLkNsclNoYXBlRmlsdGVyT2ZmPWUuQ2xyU2hhcGVGaWxlWmlwPWUuQ2xyU2hhcGVDdXJz''@;'; put 'put ''b3JIYW5kT3Blbj1lLkNsclNoYXBlQ3Vyc29ySGFuZEdyYWI9ZS5DbHJTaGFwZVRyZWVWaWV3PWUuQ2xyU2hhcGVQb3J0cmFpdD1lLkNsclNoYXBlUGFzdGU9ZS5DbHJTaGFwZUxhbmRzY2FwZT1lLkNsclNoYXBlRXJhc2VyPWUuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPWUuQ2xyU2hhcGVE''@;'; put 'put ''ZXRhaWxzPXZvaWQgMDt2YXIgcj1jKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLGE9YygiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtjPWMoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3Jl''@;'; put 'put ''LXNoYXBlcy50cyIpLGUuQ2xyU2hhcGVBZGRUZXh0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMjFIMTNhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMiwxNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMTNBMSwxLDAsMCwwLDEyLDE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMiIGQ9Ik0yNywyN0gxM2ExLDEsMCwwLDAsMCwySDI3YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE1Ljg5LDlhMSwxLDAsMCwwLTEtMUgxMFYzLjIxYTEsMSwwLDAsMC0yLDBWOEgy''@;'; put 'put ''Ljg5YTEsMSwwLDAsMCwwLDJIOHY1LjIxYTEsMSwwLDAsMCwyLDBWMTBoNC44OUExLDEsMCwwLDAsMTUuODksOVoiLz4nKSxlLkNsclNoYXBlUGluYm9hcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwz''@;'; put 'put ''MCw2LDMwLDYsNkgyMlY0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMzLjU3LDkuMzNsLTctN2ExLDEsMCww''@;'; put 'put ''LDAtMS40MSwxLjQxbDcsN2ExLDEsMCwxLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMi4xLDExLjE5bC43LjVMMjYuNDYsOCwyNSw2LjU2LDIyLjUxLDkuMTNjLTItLjg3LTQuMzUuMTQt''@;'; put 'put ''NS45MiwxLjY4bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MiwxLjY4LTUuOTNsMi41NC0yLjU3TDI3Ljg4LDkuMzgsMjQuMjEsMTMuMWwuNDkuNjljLjc2LDEsLjI1LDIuMzctLjQxLDMu''@;'; put 'put ''MzNMMTguNzcsMTEuNkMxOS44NCwxMC44NiwyMS4xNSwxMC41LDIyLjEsMTEuMTlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMzAsNiwzMCw2LDZIMjJWNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIs''@;'; put 'put ''MkgzMGEyLDIsMCwwLDAsMi0yVjE0SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMzLjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40MSwxLjQxbDEuMzgsMS4zOC00LDRjLTItLjg3LTQuMzUuMTQtNS45MiwxLjY4''@;'; put 'put ''bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MSwxLjY4LTUuOTJsNC00LDEuMzgsMS4zOGExLDEsMCwxLDAsMS40MS0xLjQxWiIvPicpLGUuQ2xyU2hhcGVBbGFybU9mZj0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNS4zMywyMS41NGEuOS45LDAsMCwwLS40MS0xLjJsLTMuMi0xLjU2TDI0Ljg5LDIyQS44OS44OSwwLDAsMCwyNS4zMywyMS41NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsOC42YS45LjksMCwwLDAtLjkuOXY0LjZsMS44LDEuODFWOS41QS45LjksMCwwLDAsMTgsOC42WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0x''@;'; put 'put ''MS40MiwzLjQzYTUuOCw1LjgsMCwwLDAtNS44MS0uODFMOC4zLDUuMzJBMTYsMTYsMCwwLDEsMTEuNDIsMy40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMTgsNGExMy45MSwxMy45MSwwLDAsMC04LjMsMi43''@;'; put 'put ''NWwxLjQyLDEuNDNBMTIsMTIsMCwwLDEsMjcuODIsMjQuOWwxLjQyLDEuNDNBMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMS41Niw0LjIxLDIuNzMsNS4zOGE1LjcsNS43LDAsMCww''@;'; put 'put ''LC42Nyw2LjFBMTUuNzgsMTUuNzgsMCwwLDEsNS40Niw4LjEyTDYuODgsOS41NUExMy45NCwxMy45NCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjg5LDEzLjg5LDAsMCwwLDE2LjgsMGw0LjE0LDQuMTVMMzIsMzEuOSwzLDIuOFpN''@;'; put 'put ''MjUsMjcuNzJBMTEuODksMTEuODksMCwwLDEsMTgsMzAsMTIsMTIsMCwwLDEsNiwxOGExMS44OSwxMS44OSwwLDAsMSwyLjI5LTdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCww''@;'; put 'put ''LDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTEuNDIsMy40M2E1LjgsNS44LDAsMCwwLTUuNzctLjgy''@;'; put 'put ''TDguMzMsNS4zQTE2LDE2LDAsMCwxLDExLjQyLDMuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjQuOTIsMjEuOTRsNC4zNCw0LjM2QTE0LDE0LDAsMCwwLDkuNzUsNi43M0wxNywxNFY5LjY5YTEsMSwwLDAsMSwy''@;'; put 'put ''LDBWMTZsMi4zMywyLjM0TDI1LDIwLjFhMSwxLDAsMCwxLC40NywxLjMzQTEsMSwwLDAsMSwyNC45MiwyMS45NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xLjYxLDQuMjEsMi43Myw1LjM0YTUuNzMsNS43MywwLDAs''@;'; put 'put ''MCwuNjcsNi4xNUExNS44OCwxNS44OCwwLDAsMSw1LjQ4LDguMUw2LjkxLDkuNTJBMTMuOTQsMTMuOTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy44OSwxMy44OSwwLDAsMCwxNi44MywwbDQuMTYsNC4xN0wzMiwzMS45LDMsMi44''@;'; put 'put ''WiIvPicpLGUuQ2xyU2hhcGVOZXc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNC41OSwyM2wtNC4wOC01LDQtNC45YTEuODIsMS44MiwwLDAsMCwuMjMtMS45NEExLjkzLDEuOTMsMCwwLDAsMzIuOTQsMTBo''@;'; put 'put ''LTMxQTEuOTEsMS45MSwwLDAsMCwwLDExLjg4VjI0LjEzQTEuOTEsMS45MSwwLDAsMCwxLjk0LDI2SDMzLjA1YTEuOTMsMS45MywwLDAsMCwxLjc3LTEuMDlBMS44MiwxLjgyLDAsMCwwLDM0LjU5LDIzWk0yLDI0VjEySDMyLjc4bC00Ljg0LDUuOTNMMzIuODUsMjRaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHBvaW50cz0iOS4zOSAxOS4zNSA2LjEzIDE1IDUgMTUgNSAyMS4xOCA2LjEzIDIxLjE4IDYuMTMgMTYuODQgOS4zOSAyMS4xOCAxMC41MSAyMS4xOCAxMC41MSAxNSA5LjM5IDE1IDkuMzkgMTku''@;'; put 'put ''MzUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgcG9pbnRzPSIxMi4xOCAyMS4xOCAxNi44NCAyMS4xOCAxNi44NCAyMC4xNiAxMy4zMSAyMC4xNiAxMy4zMSAxOC41NSAxNi41IDE4LjU1IDE2LjUgMTcuNTIgMTMu''@;'; put 'put ''MzEgMTcuNTIgMTMuMzEgMTYuMDMgMTYuODQgMTYuMDMgMTYuODQgMTUgMTIuMTggMTUgMTIuMTggMjEuMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNC41MiAxOS40MyAyMy4wNiAxNSAyMS44''@;'; put 'put ''NCAxNSAyMC4zNyAxOS40MyAxOS4wNSAxNSAxNy44MiAxNSAxOS43OCAyMS4xOCAyMC44OSAyMS4xOCAyMi40NSAxNi41OSAyNCAyMS4xOCAyNS4xMyAyMS4xOCAyNy4wOCAxNSAyNS44NSAxNSAyNC41MiAxOS40MyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjExLDI0LjQ5bC0zLjkyLTYuNjIsMy44OC02LjM1QTEsMSwwLDAsMCwzMy4yMiwxMEgyYTIsMiwwLDAsMC0yLDJWMjRhMiwyLDAsMCwwLDIsMkgzMy4yNUExLDEsMCwwLDAsMzQuMTEsMjQuNDlabS0yMy42LTMuMzFIOS4zOUw2LjEzLDE2Ljg0djQu''@;'; put 'put ''MzVINVYxNUg2LjEzbDMuMjcsNC4zNVYxNWgxLjEyWk0xNi44NCwxNkgxMy4zMXYxLjQ5aDMuMnYxaC0zLjJ2MS42MWgzLjUzdjFIMTIuMThWMTVoNC42NVptOC4yOSw1LjE2SDI0bC0xLjU1LTQuNTlMMjAuOSwyMS4xOEgxOS43OGwtMi02LjE4SDE5bDEuMzIsNC40M0wyMS44NCwxNWgxLjIy''@;'; put 'put ''bDEuNDYsNC40M0wyNS44NSwxNWgxLjIzWiIvPicpLGUuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwx''@;'; put 'put ''NCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0yOC4yOSwyNC42MWExLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwxLDAsMCww''@;'; put 'put ''LS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMiwxNCw1LjM4LDE0LDEyQTExLjA4LDExLjA4LDAsMCwxLDI4LjI5LDI0LjYxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIGQ9Ik0xOCwyMC42M2ExLDEsMCwwLDAsMS0xVjguNDhhMSwxLDAsMSwwLTIsMFYxOS42MUExLDEsMCwwLDAsMTgsMjAuNjNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTgiIGN5PSIyNC4w''@;'; put 'put ''NCIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQt''@;'; put 'put ''Ljg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0xNi45Myw5LjEzYTEuNDEsMS40MSwwLDEsMSwyLjgxLDBWMTguOWExLjQxLDEuNDEsMCwxLDEtMi44MSwwWm0xLjQxLDE3LjM1YTEuODcsMS44NywwLDEsMSwxLjg3LTEuODdBMS44NywxLjg3''@;'; put 'put ''LDAsMCwxLDE4LjM0LDI2LjQ3WiIvPicpLGUuQ2xyU2hhcGVHcmlkVmlldz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LDRINkEyLDIsMCwwLDAsNCw2djhhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWNkEyLDIsMCwwLDAsMTQsNFpNNiwxNFY2aDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAsNEgyMmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCww''@;'; put 'put ''LDAsMzAsNFpNMjIsMTRWNmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0LDIwSDZhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjIyQTIsMiwwLDAsMCwxNCwyMFpN''@;'; put 'put ''NiwzMFYyMmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLDIwSDIyYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYyMkEyLDIsMCwwLDAsMzAsMjBaTTIyLDMwVjIy''@;'; put 'put ''aDh2OFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjQiIHk9IjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiB4PSIyMCIgeT0iNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIHg9IjQiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiBy''@;'; put 'put ''eT0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPicpLGUuQ2xyU2hhcGVDdXJzb3JBcnJvdz0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LjU4LDMyLjMxYTEsMSwwLDAsMS0uOTQtLjY1TDQsNS42NUExLDEsMCwwLDEsNS4yNSw0LjM3bDI2LDkuNjhhMSwxLDAsMCwxLS4wNSwxLjg5bC04LjM2LDIuNTcsOC4zLDguM2ExLDEsMCwwLDEsMCwx''@;'; put 'put ''LjQxbC0zLjI2LDMuMjZhMSwxLDAsMCwxLS43MS4yOWgwYTEsMSwwLDAsMS0uNzEtLjI5bC04LjMzLTguMzMtMi42LDguNDVhMSwxLDAsMCwxLS45My43MVptMy4wOS0xMmExLDEsMCwwLDEsLjcxLjI5bDguNzksOC43OUwyOSwyNy41MWwtOC43Ni04Ljc2YTEsMSwwLDAsMSwuNDEtMS42Nmw3''@;'; put 'put ''LjEzLTIuMkw2LjYsN2w3Ljg5LDIxLjJMMTYuNzEsMjFhMSwxLDAsMCwxLC43MS0uNjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjksMTIuMzYsMy44OCwzQTEsMSwwLDAsMCwyLjU5LDQuMjhMMTIsMjkuNDRhMSwx''@;'; put 'put ''LDAsMCwwLDEuODktLjA1bDIuNjktOC43NSw5LjEyLDguOWExLDEsMCwwLDAsMS40MSwwbDIuMzUtMi4zNWExLDEsMCwwLDAsMC0xLjQxbC05LjA5LTguODZMMjksMTQuMjVBMSwxLDAsMCwwLDI5LDEyLjM2WiIvPicpLGUuQ2xyU2hhcGVDdXJzb3JIYW5kPSgwLGEuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuNzQsMTUuMTlhMTMuNjYsMTMuNjYsMCwwLDAtNi44Ny0zLjgzQTI2LDI2LDAsMCwwLDE4LDEwLjU4VjUuMjhBMy40LDMuNCwwLDAsMCwxNC41LDIsMy40LDMuNCwwLDAsMCwxMSw1LjI4djEwTDku''@;'; put 'put ''NCwxMy43YTMuNzcsMy43NywwLDAsMC01LjI4LDBBMy42NywzLjY3LDAsMCwwLDMsMTYuMzNhMy42LDMuNiwwLDAsMCwxLDIuNTZsNC42Niw1LjUyYTExLjUzLDExLjUzLDAsMCwwLDEuNDMsNCwxMC4xMiwxMC4xMiwwLDAsMCwyLDIuNTR2MS45MmExLjA3LDEuMDcsMCwwLDAsMSwxLjA4SDI3''@;'; put 'put ''YTEuMDcsMS4wNywwLDAsMCwxLTEuMDh2LTIuN2ExMi44MSwxMi44MSwwLDAsMCwzLTguMzZ2LTZBMSwxLDAsMCwwLDMwLjc0LDE1LjE5Wk0yOSwyMS44NmExMC43MiwxMC43MiwwLDAsMS0yLjYsNy4yNiwxLjExLDEuMTEsMCwwLDAtLjQuNzJWMzJIMTQuMTRWMzAuNTJhMSwxLDAsMCwwLS40''@;'; put 'put ''NC0uODMsNy4yNiw3LjI2LDAsMCwxLTEuODItMi4yMyw5LjE0LDkuMTQsMCwwLDEtMS4yLTMuNTIsMSwxLDAsMCwwLS4yMy0uNTlMNS41MywxNy41M2ExLjcsMS43LDAsMCwxLDAtMi40MiwxLjc2LDEuNzYsMCwwLDEsMi40NywwbDMsM3YzLjE0bDItMVY1LjI4QTEuNDIsMS40MiwwLDAsMSwx''@;'; put 'put ''NC41LDQsMS40MiwxLjQyLDAsMCwxLDE2LDUuMjh2MTEuOGwyLC40M1YxMi41OWEyNC4yNywyNC4yNywwLDAsMSwyLjUxLjE4VjE4bDEuNi4zNVYxM2MuNDEuMDguODMuMTcsMS4yNi4yOGExNC44OCwxNC44OCwwLDAsMSwxLjUzLjQ5djUuMTVsMS42LjM1VjE0LjVBMTEuMDYsMTEuMDYsMCww''@;'; put 'put ''LDEsMjksMTYuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjguNjksMTQuMzN2NC44M2wtMi0uNDNWMTMuMjRhMTYuMTksMTYuMTksMCwwLDAtMi4zMy0uODR2NS44MmwtMi0uNDNWMTJjLTEuMS0uMTgtMi4xOC0u''@;'; put 'put ''My0zLjA4LS4zNnY1LjUxbC0yLS40M1YxMS40OGgwVjQuMzRhMi41MywyLjUzLDAsMCwwLTIuNi0yLjQzLDIuNTMsMi41MywwLDAsMC0yLjYsMi40M1YxNy4yN2gwdjIuNTlsLTIsMVYxNS42TDcuNzUsMTMuMjFhMi44MywyLjgzLDAsMCwwLTQsMCwyLjkzLDIuOTMsMCwwLDAsMCw0LjA5bDYs''@;'; put 'put ''Ny4xYTEwLjgyLDEwLjgyLDAsMCwwLDEuMzksNC4yMiw4LjQyLDguNDIsMCwwLDAsMi4yMSwyLjczdjIuNTZIMjcuNzlWMzAuNjJhMTIuNTQsMTIuNTQsMCwwLDAsMy04LjV2LTZBMTAsMTAsMCwwLDAsMjguNjksMTQuMzNaIi8+JyksZS5DbHJTaGFwZUN1cnNvckhhbmRDbGljaz0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLjQsMTcuNmMtMS44LTEuOS00LjItMy4yLTYuNy0zLjdjLTEuMS0wLjMtMi4yLTAuNS0zLjMtMC42YzIuOC0zLjMsMi4zLTguMy0xLTExLjFzLTguMy0yLjMtMTEuMSwxcy0y''@;'; put 'put ''LjMsOC4zLDEsMTEuMVxuICAgICAgICAgICAgICAgICAgICBjMC42LDAuNSwxLjIsMC45LDEuOCwxLjF2Mi4ybC0xLjYtMS41Yy0xLjQtMS40LTMuNy0xLjQtNS4yLDBjLTEuNCwxLjQtMS41LDMuNi0wLjEsNWw0LjYsNS40YzAuMiwxLjQsMC43LDIuNywxLjQsMy45XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgICAgIGMwLjUsMC45LDEuMiwxLjgsMS45LDIuNXYxLjljMCwwLjYsMC40LDEsMSwxaDEzLjZjMC41LDAsMS0wLjUsMS0xdi0yLjZjMS45LTIuMywyLjktNS4yLDIuOS04LjF2LTUuOFxuICAgICAgICAgICAgICAgICAgICBDMzAuNywxNy45LDMwLjYsMTcuNywzMC40LDE3LjZ6IE04LjQs''@;'; put 'put ''OC4yYzAtMy4zLDIuNy01LjksNi01LjhjMy4zLDAsNS45LDIuNyw1LjgsNmMwLDEuOC0wLjgsMy40LTIuMiw0LjVWNy45XG4gICAgICAgICAgICAgICAgICAgIGMtMC4xLTEuOC0xLjYtMy4yLTMuNC0zLjJjLTEuOC0wLjEtMy40LDEuNC0zLjQsMy4ydjUuMkM5LjUsMTIuMSw4LjUsMTAuMiw4''@;'; put 'put ''LjQsOC4yTDguNCw4LjJ6IE0yOC43LDI0YzAuMSwyLjYtMC44LDUuMS0yLjUsNy4xXG4gICAgICAgICAgICAgICAgICAgIGMtMC4yLDAuMi0wLjQsMC40LTAuNCwwLjd2Mi4xSDE0LjJ2LTEuNGMwLTAuMy0wLjItMC42LTAuNC0wLjhjLTAuNy0wLjYtMS4zLTEuMy0xLjgtMi4yYy0wLjYtMS0x''@;'; put 'put ''LTIuMi0xLjItMy40XG4gICAgICAgICAgICAgICAgICAgIGMwLTAuMi0wLjEtMC40LTAuMi0wLjZsLTQuOC01LjdjLTAuMy0wLjMtMC41LTAuNy0wLjUtMS4yYzAtMC40LDAuMi0wLjksMC41LTEuMmMwLjctMC42LDEuNy0wLjYsMi40LDBsMi45LDIuOXYzbDEuOS0xVjcuOVxuICAgICAgICAg''@;'; put 'put ''ICAgICAgICAgICBjMC4xLTAuNywwLjctMS4zLDEuNS0xLjJjMC43LDAsMS40LDAuNSwxLjQsMS4ydjExLjVsMiwwLjR2LTQuNmMwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMwLjcsMCwxLjQsMC4xLDIuMSwwLjJ2NS4xbDEuNiwwLjN2LTUuMlxuICAgICAgICAgICAgICAgICAgICBsMS4yLDAu''@;'; put 'put ''M2MwLjUsMC4xLDEsMC4zLDEuNSwwLjV2NWwxLjYsMC4zdi00LjZjMC45LDAuNCwxLjcsMSwyLjQsMS43TDI4LjcsMjR6Ii8+JyksZS5DbHJTaGFwZVJlc2l6ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5''@;'; put 'put ''LDRhMSwxLDAsMCwwLDAsMmg5LjU5bC05LjI1LDkuMjVhMSwxLDAsMSwwLDEuNDEsMS40MUwzMCw3LjQxVjE3YTEsMSwwLDAsMCwyLDBWNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNCwxOWExLDEsMCwwLDEs''@;'; put 'put ''MiwwdjkuNTlsOS4yNS05LjI1YTEsMSwwLDEsMSwxLjQxLDEuNDFMNy40MSwzMEgxN2ExLDEsMCwwLDEsMCwySDRaIi8+JyksZS5DbHJTaGFwZU9iamVjdHM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4w''@;'; put 'put ''OCwxNC45YTEwLjQxLDEwLjQxLDAsMCwxLDEuODctLjcxbC00LTEwLjc3YTIsMiwwLDAsMC0zLjc1LDBMMiwyNS4yNkEyLDIsMCwwLDAsMy45MiwyOGg2Ljk0YTEwLDEwLDAsMCwxLS41Mi0ySDMuOTJMMTIuMDYsNC4xMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsOUgyMmEyLDIsMCwwLDAtMiwydjIuODVjLjIzLDAsLjQ2LDAsLjY5LDBBMTAuNTEsMTAuNTEsMCwwLDEsMjIsMTMuOVYxMUgzMlYyMUgzMC42NWExMC40MiwxMC40MiwwLDAsMSwuNDUsMkgzMmEyLDIsMCwwLDAsMi0yVjExQTIsMiww''@;'; put 'put ''LDAsMCwzMiw5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMC42OSwxNS44MWE4LjUsOC41LDAsMSwwLDguNSw4LjVBOC41MSw4LjUxLDAsMCwwLDIwLjY5LDE1LjgxWm0wLDE1YTYuNSw2LjUsMCwxLDEsNi41''@;'; put 'put ''LTYuNUE2LjUxLDYuNTEsMCwwLDEsMjAuNjksMzAuODFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAuNjUsMjQuNDRhOS41MSw5LjUxLDAsMCwxLDcuMDYtOS4xN0wxMywzYTEsMSwwLDAsMC0xLjg3LDBMMi4wNywy''@;'; put 'put ''Ni41NkExLDEsMCwwLDAsMywyNy45Mmg4LjMyQTkuNDQsOS40NCwwLDAsMSwxMC42NSwyNC40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMiwxMEgyMGExLDEsMCwwLDAtMSwxdjRhOS40Myw5LjQzLDAsMCwxLDEw''@;'; put 'put ''LjYzLDlIMzJhMSwxLDAsMCwwLDEtMVYxMUExLDEsMCwwLDAsMzIsMTBaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGN4PSIyMC4xNSIgY3k9IjI0LjQ0IiByPSI3LjUiLz4nKSxlLkNsclNoYXBlQm9vaz0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMTAiIHk9IjUuMiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEuNTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJN''@;'; put 'put ''MjksOEg5Ljg2QTEuODksMS44OSwwLDAsMSw4LDYsMiwyLDAsMCwxLDkuODYsNEgyOWExLDEsMCwwLDAsMC0ySDkuODZBNCw0LDAsMCwwLDYsNmE0LjE0LDQuMTQsMCwwLDAsMCwuNDksMSwxLDAsMCwwLDAsLjI0VjMwYTQsNCwwLDAsMCwzLjg2LDRIMjlhMSwxLDAsMCwwLDEtMVY5LjI1czAt''@;'; put 'put ''LjA2LDAtLjA5LDAtLjA2LDAtLjA5QTEuMDcsMS4wNywwLDAsMCwyOSw4Wk0yOCwzMkg5Ljg2QTIsMiwwLDAsMSw4LDMwVjkuNTVBMy42MywzLjYzLDAsMCwwLDkuODYsMTBIMjhaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4''@;'; put 'put ''PSIxMCIgeT0iNS4yIiB3aWR0aD0iMTgiIGhlaWdodD0iMS41NSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LDhIOS44NkExLjg5LDEuODksMCwwLDEsOCw2LDIsMiwwLDAsMSw5Ljg2LDRIMjlhMSwxLDAsMSwwLDAt''@;'; put 'put ''Mkg5Ljg2QTQsNCwwLDAsMCw2LDZhNC4xNCw0LjE0LDAsMCwwLDAsLjQ5LDEsMSwwLDAsMCwwLC4yNFYzMGE0LDQsMCwwLDAsMy44Niw0SDI5YTEsMSwwLDAsMCwxLTFWOS4yNXMwLS4wNiwwLS4wOSwwLS4wNiwwLS4wOUExLjA3LDEuMDcsMCwwLDAsMjksOFoiLz4nKSxlLkNsclNoYXBlQXN0''@;'; put 'put ''ZXJpc2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOC44OSwyMC45MWwtNS0yLjkxLDQuODctMi44NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00LjA5LTQuMTVMMjEsMTIuNzZWN2Ez''@;'; put 'put ''LDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQsMS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMsMCwwLDAsMjEsMjlWMjMuMjRsNC44''@;'; put 'put ''NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaTTI4LjI0LDI0YTEsMSwwLDAsMS0xLjM3LjM2TDE5LDE5Ljc1VjI5YTEsMSwwLDAsMS0yLDBWMTkuNzVMOS4xMywyNC4zNmExLDEsMCwwLDEtMS0xLjcyTDE2LDE4bC03LjktNC42NGExLDEsMCwxLDEsMS0xLjcyTDE3LDE2LjI1VjdhMSwxLDAsMCwx''@;'; put 'put ''LDIsMHY5LjI1bDcuODctNC42MmExLDEsMCwwLDEsMSwxLjcyTDIwLDE4bDcuOSw0LjY0QTEsMSwwLDAsMSwyOC4yNCwyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOC44OSwyMC45MWwtNS0yLjkxLDQuODctMi44''@;'; put 'put ''NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQsMS4wOCwzLDMsMCwwLDAsNC4wOSw0''@;'; put 'put ''LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMsMCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaIi8+JyksZS5DbHJTaGFwZVNjaXNzb3JzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIlxuICAgICAgICAgICAgZD0iTTI0LjA2LDE4LjE4bDkuNjEtOC43N2ExLDEsMCwwLDAtLjA5LTEuNTVsLTIuMjQtMS42YTMuNTcsMy41NywwLDAsMC00LjI4LjEyTDE1Ljg4LDE1LjNsLTMuMjYtMi41MmE1LjQ1LDUuNDUsMCwxLDAtMSwxLjc3bDIuNjIsMkwxMCwyMGE1LjQ4''@;'; put 'put ''LDUuNDgsMCwxLDAsMS41OSwxLjI5TDI4LjMsNy45NGExLjU3LDEuNTcsMCwwLDEsMS44OC0uMDVsMS4yMy44OEwyMS4xLDE4LjE5bDEwLjMxLDkuNC0xLjIzLjg4YTEuNTcsMS41NywwLDAsMS0xLjg4LS4wNWwtOS44MS03Ljg1TDE3LDIxLjkzbDEwLjA2LDhhMy41NywzLjU3LDAsMCwwLDQu''@;'; put 'put ''MjkuMTJsMi4yNC0xLjZhMSwxLDAsMCwwLC4wOS0xLjU1Wk03LjQ1LDE0LjU0YTMuNDYsMy40NiwwLDEsMSwzLjQ1LTMuNDZBMy40NiwzLjQ2LDAsMCwxLDcuNDUsMTQuNTRabTAsMTMuNzJBMy40NiwzLjQ2LDAsMSwxLDEwLjksMjQuOCwzLjQ2LDMuNDYsMCwwLDEsNy40NSwyOC4yNloiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy44MSw4LjEzLDMxLjYzLDYuNDhhMS45MiwxLjkyLDAsMCwwLTIuMzYsMEwxMCwyMi4wNmE1LjQ2LDUuNDYsMCwxLDAsMiwxLjgxbDMuOS0zLjEyTDI5LjI3LDMxLjUyYTEuOTIs''@;'; put 'put ''MS45MiwwLDAsMCwyLjM2LDBsMi4xOC0xLjY0TDIwLjk0LDE5Wk03LjQ1LDI5Ljc1YTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NywyLjg3LDAsMCwxLDcuNDUsMjkuNzVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBk''@;'; put 'put ''PSJNMTQuMywxNS4yNCwxMiwxMy4zOGE1LjQ2LDUuNDYsMCwxLDAtMiwxLjgxTDEyLjE2LDE3Wm0tNi44NS0yYTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NiwyLjg2LDAsMCwxLDcuNDUsMTMuMjNaIi8+JyksZS5DbHJTaGFwZUJ1Zz0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMjMuNTYiIGN5PSIxNy43NCIgcj0iMS45NSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjIyLjQyIiBjeT0iMjUuODgiIHI9IjEu''@;'; put 'put ''NTgiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIxMi44NiIgY3k9IjE3Ljc0IiByPSIxLjk1Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00''@;'; put 'put ''IiBjeD0iMTMuOTkiIGN5PSIyNS44OCIgcj0iMS41OCIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0zMC44MywyMEgyOWExOS4yOSwxOS4yOSwwLDAsMC0xLjE4LTUuNzNsMS40Ni0uNzlhMSwxLDAsMCwwLS45NS0x''@;'; put 'put ''Ljc2bC0zLDEuNjRBMTcuNjUsMTcuNjUsMCwwLDEsMjcsMjAuNzJDMjcsMjcsMjMuOCwzMS4yMywxOC44LDMxLjYyVjE1SDE3LjJWMzEuNjJDMTIuMjIsMzEuMjEsOSwyNyw5LDIwLjcyYTE3Ljc0LDE3Ljc0LDAsMCwxLDEuNzMtNy4zNEw3LjcsMTEuNzJhMSwxLDAsMCwwLS45NSwxLjc2bDEu''@;'; put 'put ''NS44QTE5LjM4LDE5LjM4LDAsMCwwLDcuMDcsMjBINS4xN2ExLDEsMCwwLDAsMCwySDcuMWExNC42MiwxNC42MiwwLDAsMCwxLjY2LDYuMTdMNi44NywyOS40OUExLDEsMCwxLDAsOCwzMS4xMmwxLjg0LTEuMjlBMTAuMzgsMTAuMzgsMCwwLDAsMTgsMzMuNjZhMTAuMzgsMTAuMzgsMCwwLDAs''@;'; put 'put ''OC4xNC0zLjgxTDI4LDMxLjEyYTEsMSwwLDEsMCwxLjE1LTEuNjRsLTEuODYtMS4zQTE0LjYxLDE0LjYxLDAsMCwwLDI4Ljk0LDIyaDEuODlhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJN''@;'; put 'put ''MTEuNTEsNS4zNmExLjY3LDEuNjcsMCwwLDAsMS4wNy0uNTFBMy4yMSwzLjIxLDAsMCwxLDEzLjc2LDZhMTYuMzgsMTYuMzgsMCwwLDAtMi42NSwyLjg5LDIsMiwwLDAsMCwxLjYxLDMuMTlIMjMuMzJBMiwyLDAsMCwwLDI1LjEsMTFhMiwyLDAsMCwwLS4xNy0yLjFBMTYuMzQsMTYuMzQsMCww''@;'; put 'put ''LDAsMjIuMjUsNmEzLjIxLDMuMjEsMCwwLDEsMS4xNy0xLjExQTEuNjgsMS42OCwwLDEsMCwyMywzLjI3LDQuNzcsNC43NywwLDAsMCwyMSw1YTUuODEsNS44MSwwLDAsMC0yLjkzLTEsNS44Myw1LjgzLDAsMCwwLTMsMUE0Ljc3LDQuNzcsMCwwLDAsMTMsMy4yN2ExLjY4LDEuNjgsMCwxLDAt''@;'; put 'put ''MS40OSwyLjA5Wk0xOCw2LjA3YzEuNDUsMCwzLjUzLDEuNTcsNS4zMSw0aDBsLTEwLjYsMEMxNC40OSw3LjYzLDE2LjU2LDYuMDcsMTgsNi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC44MywyMEgyOWExOS4y''@;'; put 'put ''OSwxOS4yOSwwLDAsMC0xLjE4LTUuNzNsMS40Ni0uNzlhMSwxLDAsMCwwLS45NS0xLjc2bC0zLDEuMjhIMTAuNzhMNy43LDExLjcyYTEsMSwwLDAsMC0uOTUsMS43NmwxLjUuOEExOS4zOCwxOS4zOCwwLDAsMCw3LjA3LDIwSDUuMTdhMSwxLDAsMCwwLDAsMkg3LjFhMTQuNjIsMTQuNjIsMCww''@;'; put 'put ''LDAsMS42Niw2LjE3TDYuODcsMjkuNDlBMSwxLDAsMSwwLDgsMzEuMTJsMS44NC0xLjI5QTEwLjI5LDEwLjI5LDAsMCwwLDE3LDMzLjZWMTVoMlYzMy42YTEwLjI5LDEwLjI5LDAsMCwwLDcuMTYtMy43NUwyOCwzMS4xMmExLDEsMCwxLDAsMS4xNS0xLjY0bC0xLjg2LTEuM0ExNC42MSwxNC42''@;'; put 'put ''MSwwLDAsMCwyOC45NCwyMmgxLjg5YTEsMSwwLDAsMCwwLTJaTTEwLjkxLDE3Ljc0YTEuOTUsMS45NSwwLDEsMSwxLjk1LDEuOTVBMS45NSwxLjk1LDAsMCwxLDEwLjkxLDE3Ljc0Wk0xNCwyNy40NmExLjU4LDEuNTgsMCwxLDEsMS41OC0xLjU4QTEuNTgsMS41OCwwLDAsMSwxNCwyNy40Nlpt''@;'; put 'put ''OC40MywwQTEuNTgsMS41OCwwLDEsMSwyNCwyNS44OCwxLjU4LDEuNTgsMCwwLDEsMjIuNDIsMjcuNDZabTEuMTMtNy43N2ExLjk1LDEuOTUsMCwxLDEsMS45NS0xLjk1QTEuOTUsMS45NSwwLDAsMSwyMy41NiwxOS42OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMS4yMyw1LjI2YTEuNjcsMS42NywwLDAsMCwuNTQtLjMyLDUuOSw1LjksMCwwLDEsLjg5LjU4LDcuNDQsNy40NCwwLDAsMSwuOTUuOTRBMTguNDgsMTguNDgsMCwwLDAsMTAuNzksOS43Yy0uNC41Ny4wOSwxLjI4Ljg2LDEuMjhIMjQuNDRjLjc3''@;'; put 'put ''LDAsMS4yNi0uNzEuODYtMS4yOGExOC4zOCwxOC4zOCwwLDAsMC0yLjg4LTMuMjgsNy4yOCw3LjI4LDAsMCwxLC45MS0uOSw1LjksNS45LDAsMCwxLC44OS0uNTgsMS42OSwxLjY5LDAsMSwwLS41Ni0xLjUxLDcuNDksNy40OSwwLDAsMC0xLjMyLjgzLDkuMDYsOS4wNiwwLDAsMC0xLjE5LDEu''@;'; put 'put ''MThBNS44NSw1Ljg1LDAsMCwwLDE4LDQuM2E1LjkxLDUuOTEsMCwwLDAtMy4xNywxLjE5LDkuMiw5LjIsMCwwLDAtMS4yMi0xLjIxLDcuNDksNy40OSwwLDAsMC0xLjMyLS44MywxLjY4LDEuNjgsMCwxLDAtMS4xMSwxLjgzWiIvPicpLGUuQ2xyU2hhcGVUaGVybW9tZXRlcj0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LDIzLjE3VjExLjQ2SDE3VjIzLjJhMywzLDAsMSwwLDIsMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk''@;'; put 'put ''PSJNMjYsMTVhMSwxLDAsMCwwLDAtMkgyMy45MlYxMUgyNmExLDEsMCwwLDAsMC0ySDIzLjkyVjhhNiw2LDAsMCwwLTEyLDBWMjAuODFhOCw4LDAsMSwwLDEyLS4yVjE5SDI2YTEsMSwwLDAsMCwwLTJIMjMuOTJWMTVaTTI0LDI2YTYsNiwwLDEsMS0xMC4zNi00LjEybC4yNy0uMjlWOGE0LDQs''@;'; put 'put ''MCwwLDEsOCwwVjIxLjQ0bC4zLjI5QTYsNiwwLDAsMSwyNCwyNloiLz4nKSxlLkNsclNoYXBlUGVuY2lsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuODcsOC4zMiwyOCwyLjQyYTIuMDcsMi4wNywwLDAs''@;'; put 'put ''MC0yLjkyLDBMNC4yNywyMy4ybC0xLjksOC4yYTIuMDYsMi4wNiwwLDAsMCwyLDIuNSwyLjE0LDIuMTQsMCwwLDAsLjQzLDBMMTMuMDksMzIsMzMuODcsMTEuMjRBMi4wNywyLjA3LDAsMCwwLDMzLjg3LDguMzJaTTEyLjA5LDMwLjIsNC4zMiwzMS44M2wxLjc3LTcuNjJMMjEuNjYsOC43bDYs''@;'; put 'put ''NlpNMjksMTMuMjVsLTYtNiwzLjQ4LTMuNDYsNS45LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTQuMjIsMjMuMmwtMS45LDguMmEyLjA2LDIuMDYsMCwwLDAsMiwyLjUsMi4xNCwyLjE0LDAsMCwwLC40Myww''@;'; put 'put ''TDEzLDMyLDI4Ljg0LDE2LjIyLDIwLDcuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODIsOC4zMmwtNS45LTUuOWEyLjA3LDIuMDcsMCwwLDAtMi45MiwwTDIxLjcyLDUuN2w4LjgzLDguODMsMy4yOC0z''@;'; put 'put ''LjI4QTIuMDcsMi4wNywwLDAsMCwzMy44Miw4LjMyWiIvPicpLGUuQ2xyU2hhcGVOb3RlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCwzMEg2VjhIMTkuMjJsMi0ySDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTVsLTIsMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjUzLDUuODQsMzAuMTYsMi40N2ExLjYxLDEuNjEsMCwwLDAtMi4yOCwwTDE0LjE3LDE2LjI2bC0xLjExLDQuODFBMS42MSwxLjYxLDAsMCwwLDE0LjYzLDIzLDEuNjksMS42''@;'; put 'put ''OSwwLDAsMCwxNSwyM2w0Ljg1LTEuMDdMMzMuNTMsOC4xMkExLjYxLDEuNjEsMCwwLDAsMzMuNTMsNS44NFpNMTguODEsMjAuMDhsLTMuNjYuODFMMTYsMTcuMjYsMjYuMzIsNi44N2wyLjgyLDIuODJaTTMwLjI3LDguNTYsMjcuNDUsNS43NCwyOSw0LjE2LDMxLjg0LDdaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw2LjQsMjkuMywyLjdhMS43MSwxLjcxLDAsMCwwLTIuMzYsMEwyMy42NSw2SDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTEuNzZsMy0z''@;'; put 'put ''QTEuNjcsMS42NywwLDAsMCwzMyw2LjRaTTE4LjgzLDIwLjEzbC00LjE5LjkzLDEtNC4xNSw5LjU1LTkuNTcsMy4yMywzLjIzWk0yOS41LDkuNDMsMjYuMjcsNi4ybDEuODUtMS44NSwzLjIzLDMuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVSZWZyZXNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjIuNCwxMS42NWExLjA5LDEuMDksMCwwLDAsMS4wOSwxLjA5SDM0LjQzVjEuODFhMS4wOSwxLjA5LDAsMSwwLTIuMTksMFY4Ljk1YTE2LjQx''@;'; put 'put ''LDE2LjQxLDAsMSwwLDEuNDcsMTUuODYsMS4xMiwxLjEyLDAsMCwwLTIuMDUtLjksMTQuMTgsMTQuMTgsMCwxLDEtMS4wNS0xMy4zNkgyMy41QTEuMDksMS4wOSwwLDAsMCwyMi40LDExLjY1WiIvPicpLGUuQ2xyU2hhcGVTeW5jPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuODQsMTUuNzJhMSwxLDAsMSwwLTIsLjI5QTEzLjE1LDEzLjE1LDAsMCwxLDMxLDE3Ljk0LDEzLDEzLDAsMCwxLDguNywyN2g1LjM2YTEsMSwwLDAsMCwwLTJoLTl2OWExLDEsMCwxLDAsMiwwVjI4LjJBMTUsMTUsMCwwLDAs''@;'; put 'put ''MzIuODQsMTUuNzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC4wNiwxQTEuMDUsMS4wNSwwLDAsMCwyOSwyVjcuODNBMTQuOTQsMTQuOTQsMCwwLDAsMywxNy45NGExNS4xNiwxNS4xNiwwLDAsMCwu''@;'; put 'put ''MiwyLjQ4LDEsMSwwLDAsMCwxLC44NGguMTZhMSwxLDAsMCwwLC44Mi0xLjE1QTEzLjIzLDEzLjIzLDAsMCwxLDUsMTcuOTRhMTMsMTMsMCwwLDEsMTMtMTNBMTIuODcsMTIuODcsMCwwLDEsMjcuNDQsOUgyMi4wNmExLDEsMCwwLDAsMCwySDMxVjJBMSwxLDAsMCwwLDMwLjA2LDFaIi8+Jyks''@;'; put 'put ''ZS5DbHJTaGFwZVZpZXdMaXN0PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik03LDEwSDMxYTEsMSwwLDAsMCwwLTJIN2ExLDEsMCwwLDAsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0i''@;'; put 'put ''MiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzEsMTRIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTUiIHg9IjIiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0zMSwyMEg3YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMiIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtOCIgZD0iTTMxLDI2SDdhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPicpLGUuQ2xyU2hhcGVWaWV3Q2FyZHM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwxN0g0YTIsMiwwLDAsMS0y''@;'; put 'put ''LTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhh''@;'; put 'put ''MiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIs''@;'; put 'put ''MCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMyLDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAs''@;'; put 'put ''MCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPicpLGUuQ2xyU2hhcGVMaWdodGJ1bGI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDIuMjVhMTEsMTEsMCwwLDAtMTEsMTEsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2''@;'; put 'put ''LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoMkExOC4xNywxOC4xNywwLDAsMCwxMywyMi40NGExOC40NiwxOC40NiwwLDAsMC0yLjIyLTMuOTIsMTUuNzksMTUuNzksMCwwLDEtMS0xLjU0QTguNjQsOC42NCwwLDAs''@;'; put 'put ''MSw5LDEzLjIzYTksOSwwLDAsMSwxOC4wNywwQTguNjQsOC42NCwwLDAsMSwyNi4yMSwxN2ExNS43OSwxNS43OSwwLDAsMS0xLDEuNTRBMTguNDYsMTguNDYsMCwwLDAsMjMsMjIuNDRhMTguMTcsMTguMTcsMCwwLDAtLjcxLDQuNzFoMmExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywxNyww''@;'; put 'put ''LDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjgsMTAuNjgsMCwwLDAsMS00LjYzQTExLDExLDAsMCwwLDE4LDIuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjYzLDE1LjUx''@;'; put 'put ''YS44LjgsMCwwLDAtMS4xMywwbC0zLDMsMi44NiwzLjEzdjUuNTRIMTlWMjFsLTIuMjQtMi40NSwxLjg5LTEuODlBLjguOCwwLDAsMCwxOC42MywxNS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYs''@;'; put 'put ''MjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAs''@;'; put 'put ''MC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjMyLDEwLjg5bC0yLjczLDIuNzNhLjguOCwwLDAsMCwxLjEzLDEuMTNMMTguNDUsMTJhLjguOCwwLDEsMC0xLjEzLTEuMTNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDI3LjE1VjIxbC0yLjI0LTIuNDUsMS44OS0xLjg5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0zLDMsMi44NiwzLjEzdjUuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''NS43MiwxNC43NSwxOC40NSwxMmEuOC44LDAsMSwwLTEuMTMtMS4xM2wtMi43MywyLjczYS44LjgsMCwwLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcsMTIu''@;'; put 'put ''ODhjMCwuMTIsMCwuMjMsMCwuMzVBOC42NCw4LjY0LDAsMCwxLDI2LjIxLDE3YTE1Ljc5LDE1Ljc5LDAsMCwxLTEsMS41NEExOC40NiwxOC40NiwwLDAsMCwyMywyMi40NGExOC4xNywxOC4xNywwLDAsMC0uNzEsNC43MWgyYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDIt''@;'; put 'put ''My40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42MywxMC42MywwLDAsMCwxLTQuNDNBNy40NSw3LjQ1LDAsMCwxLDI3LDEyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMTMuNzEsMjcuMTVBMTguMTcsMTguMTcsMCwwLDAsMTMsMjIuNDRhMTguNDYsMTguNDYsMCwwLDAtMi4yMi0zLjkyLDE1Ljc5LDE1Ljc5LDAsMCwxLTEtMS41NEE4LjY0LDguNjQsMCwwLDEsOSwxMy4yMyw5LDksMCwwLDEsMjIuNTMsNS40N2E3LjQ1LDcuNDUsMCwwLDEsLjQzLTIsMTEs''@;'; put 'put ''MTEsMCwwLDAtMTYsOS44LDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0t''@;'; put 'put ''YmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjEx''@;'; put 'put ''YS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMi4yNWExMSwxMSwwLDAsMC0xMSwxMSwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4x''@;'; put 'put ''OSwwLDAsMSwuNTksNGg1LjY5VjIxLjYxbC0yLjg2LTMuMTMsMy0zYS44LjgsMCwwLDEsMS4xMywxLjEzbC0xLjg5LDEuODlMMTksMjF2Ni4xN0gyNC4zYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42OCwx''@;'; put 'put ''MC42OCwwLDAsMCwxLTQuNjNBMTEsMTEsMCwwLDAsMTgsMi4yNVpNMTguNDUsMTJsLTIuNzMsMi43M2EuOC44LDAsMSwxLTEuMTMtMS4xM2wyLjczLTIuNzNBLjguOCwwLDEsMSwxOC40NSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44''@;'; put 'put ''LjgsMCwxLDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2QTcuNDcsNy40NywwLDAsMSwyMywzLjQ0YTExLDExLDAsMCwwLTE2LDku''@;'; put 'put ''OCwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNGg1LjY5VjIxLjYxbC0yLjg2LTMuMTMsMy0zYS44LjgsMCwwLDEsMS4xMywxLjEzbC0xLjg5LDEuODlMMTksMjF2Ni4x''@;'; put 'put ''N0gyNC4zYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42MywxMC42MywwLDAsMCwxLTQuNDNBNy41LDcuNSwwLDAsMSwyMi41LDZabS00LDYtMi43MywyLjczYS44LjgsMCwxLDEtMS4xMy0xLjEzbDIuNzMt''@;'; put 'put ''Mi43M0EuOC44LDAsMSwxLDE4LjQ1LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxlLkNsclNoYXBlRG93bmxvYWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDguODEsMTcuNDZhMSwxLDAsMSwwLTEu''@;'; put 'put ''NDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDI1LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2YTEsMSwwLDEsMC0xLjQxLDEuNDFa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwyNS42NVY1YTEsMSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmExLDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEu''@;'; put 'put ''MTRaIi8+JyksZS5DbHJTaGFwZVVwbG9hZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC44MSwxNSwxNyw2LjgzVjI3LjQ4YTEsMSwwLDAsMCwyLDBWNi44M0wyNy4xOSwxNWExLDEsMCwwLDAsMS40MS0xLjQxTDE4LDMsNy4zOSwxMy42MUExLDEsMCwxLDAsOC44MSwxNVoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMxLDMxSDVjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMjZjMC42LDAsMS0wLjQsMS0xUzMxLjYsMzEsMzEsMzF6Ii8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik04LjgsMTVMMTcsNi44djIwLjZjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMVY2LjhMMjAuMSw4bDEtMS44TDE4LDNMNy40LDEzLjZDNywxNCw2LjksMTQuNiw3LjIs''@;'; put 'put ''MTVzMSwwLjUsMS40LDAuMUM4LjcsMTUuMSw4LjgsMTUuMSw4LjgsMTV6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0w''@;'; put 'put ''LjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNOC44MSwxNSwxNyw2LjgzVjI3LjQ4YTEsMSwwLDAsMCwyLDBWNi44M0wyNy4xOSwxNWExLDEsMCwwLDAsMS40MS0xLjQxTDE4LDMsNy4zOSwxMy42MUExLDEsMCwxLDAsOC44MSwxNVoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGUuQ2xyU2hhcGVMb2NrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMDksMjAuNTlBMi40MSwyLjQxLDAsMCwwLDE3LDI1LjE0VjI4aDJWMjUuMjNhMi40MSwyLjQxLDAsMCwwLS45MS00LjY0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiBkPSJNMjYsMTVWMTAuNzJhOC4yLDguMiwwLDAsMC04LTguMzYsOC4yLDguMiwwLDAsMC04LDguMzZWMTVIN1YzMmEyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMTVaTTEyLDEwLjcyYTYuMiw2LjIsMCwwLDEsNi02LjM2LDYuMiw2LjIsMCwwLDEsNiw2LjM2VjE1SDEyWk05''@;'; put 'put ''LDMyVjE3SDI3VjMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwxNVYxMC43MmE4LjIsOC4yLDAsMCwwLTgtOC4zNiw4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUg3VjMyYTIsMiwwLDAsMCwyLDJIMjdhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYxNVpNMTksMjUuMjNWMjhIMTdWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVpNMjQsMTVIMTJWMTAuNzJhNi4yLDYuMiwwLDAsMSw2LTYuMzYsNi4yLDYuMiwwLDAsMSw2LDYuMzZaIi8+JyksZS5DbHJTaGFwZVVubG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEyLDI1LjE0VjI4aDJWMjUuMjNhMi40MiwyLjQyLDAsMSwwLTItLjA5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYsMmE4''@;'; put 'put ''LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgyMFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIsMCwwLDAsMjYsMlpNMjIsMTdWMzJI''@;'; put 'put ''NFYxN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMmE4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgyMFYxMC4zNkE2LjIsNi4yLDAsMCwx''@;'; put 'put ''LDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIsMCwwLDAsMjYsMlpNMTQsMjUuMjNWMjhIMTJWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVoiLz4nKSxlLkNsclNoYXBlVXNlcnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy45LDE3LjNjMi43LDAsNC44LTIuMiw0LjgtNC45YzAtMi43LTIuMi00LjgtNC45LTQuOGMtMi43LDAtNC44LDIuMi00LjgsNC44QzEzLDE1LjEsMTUuMiwxNy4zLDE3LjksMTcuM3ogTTE3LjgsOS42QzE3LjksOS42''@;'; put 'put ''LDE3LjksOS42LDE3LjgsOS42YzEuNiwwLDIuOSwxLjMsMi45LDIuOXMtMS4zLDIuOC0yLjksMi44Yy0xLjYsMC0yLjgtMS4zLTIuOC0yLjhDMTUsMTAuOSwxNi4zLDkuNiwxNy44LDkuNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIgZD0iTTMyLjcsMTYuN2MtMS45LTEuNy00LjQtMi42LTctMi41Yy0wLjMsMC0wLjUsMC0wLjgsMGMtMC4yLDAuOC0wLjUsMS41LTAuOSwyLjFjMC42LTAuMSwxLjEtMC4xLDEuNy0wLjFjMS45LTAuMSwzLjgsMC41LDUuMywxLjZWMjVoMnYtOEwzMi43LDE2Ljd6Ii8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMy40LDcuOGMwLjUtMS4yLDEuOS0xLjgsMy4yLTEuM2MxLjIsMC41LDEuOCwxLjksMS4zLDMuMmMtMC40LDAuOS0xLjMsMS41LTIuMiwxLjVjLTAuMiwwLTAuNSwwLTAu''@;'; put 'put ''Ny0wLjFjMC4xLDAuNSwwLjEsMSwwLjEsMS40YzAsMC4yLDAsMC40LDAsMC42YzAuMiwwLDAuNCwwLjEsMC42LDAuMWMyLjUsMCw0LjUtMiw0LjUtNC40YzAtMi41LTItNC41LTQuNC00LjVjLTEuNiwwLTMsMC44LTMuOCwyLjJDMjIuNSw2LjgsMjMsNy4yLDIzLjQsNy44eiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTIsMTYuNGMtMC40LTAuNi0wLjctMS4zLTAuOS0yLjFjLTAuMywwLTAuNSwwLTAuOCwwYy0yLjYtMC4xLTUuMSwwLjgtNywyLjRMMywxN3Y4aDJ2LTcuMmMxLjYtMS4xLDMuNC0x''@;'; put 'put ''LjcsNS4zLTEuNkMxMC45LDE2LjIsMTEuNSwxNi4zLDEyLDE2LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xMC4zLDEzLjFjMC4yLDAsMC40LDAsMC42LTAuMWMwLTAuMiwwLTAuNCwwLTAuNmMwLTAu''@;'; put 'put ''NSwwLTEsMC4xLTEuNGMtMC4yLDAuMS0wLjUsMC4xLTAuNywwLjFjLTEuMywwLTIuNC0xLjEtMi40LTIuNGMwLTEuMywxLjEtMi40LDIuNC0yLjRjMSwwLDEuOSwwLjYsMi4zLDEuNWMwLjQtMC41LDEtMSwxLjUtMS40Yy0xLjMtMi4xLTQtMi44LTYuMS0xLjVjLTIuMSwxLjMtMi44LDQtMS41''@;'; put 'put ''LDYuMUM3LjMsMTIuMyw4LjcsMTMuMSwxMC4zLDEzLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0yNi4xLDIyLjdsLTAuMi0wLjNjLTItMi4yLTQuOC0zLjUtNy44LTMuNGMtMy0wLjEtNS45LDEuMi03''@;'; put 'put ''LjksMy40TDEwLDIyLjd2Ny42YzAsMC45LDAuNywxLjcsMS43LDEuN2MwLDAsMCwwLDAsMGgxMi44YzAuOSwwLDEuNy0wLjgsMS43LTEuN2MwLDAsMCwwLDAsMFYyMi43eiBNMjQuMSwzMEgxMnYtNi42YzEuNi0xLjYsMy44LTIuNCw2LjEtMi40YzIuMi0wLjEsNC40LDAuOCw2LDIuNFYzMHoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTExLjA5LDE0LjU3Yy4xLDAsLjIsMCwuMzEsMGE2LjQzLDYuNDMsMCwwLDEsLjA5LTIsMi4wOSwyLjA5LDAsMSwxLDEuNDctMyw2''@;'; put 'put ''LjU4LDYuNTgsMCwwLDEsMS41NS0xLjMxLDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMywxOC4xNGE2LjUzLDYuNTMsMCww''@;'; put 'put ''LDEtMS4yOC0yLjJsLS42MywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY3aDJWMTkuNTFhNyw3LDAsMCwxLDQuNjctMS42QTguMDksOC4wOSwwLDAsMSwxMywxOC4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTMxLjM1LDE4LjQyQTguNTksOC41OSwwLDAsMCwyNSwxNS45MWMtLjMyLDAtLjYsMC0uOS4wNmE2LjUzLDYuNTMsMCwwLDEtMS4zNSwyLjI1QTcuOSw3LjksMCwwLDEsMjUsMTcuOTFhNi45NCw2Ljk0LDAsMCwxLDQuNjQsMS41OHY2''@;'; put 'put ''LjI3aDJWMTguN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LjEsMTkuNzNBOS42OSw5LjY5LDAsMCwwLDExLDIyLjQ3bC0uMjUuMjh2Ny4zM2ExLjU3LDEuNTcsMCww''@;'; put 'put ''LDAsMS42MSwxLjU0SDIzLjgzYTEuNTcsMS41NywwLDAsMCwxLjYxLTEuNTRWMjIuNzNsLS4yNS0uMjhBOS41OCw5LjU4LDAsMCwwLDE4LjEsMTkuNzNabTUuMzMsOS44OEgxMi43M1YyMy41NWE4LjA4LDguMDgsMCwwLDEsNS4zNy0xLjgyLDgsOCwwLDAsMSw1LjMzLDEuOFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTIwLjI4LDE0LjI3YTIuNDYsMi40NiwwLDEsMS0yLjQyLTIuODksMi40NCwyLjQ0LDAsMCwxLDEsLjI0LDMuNjcsMy42NywwLDAsMSwuNDMtMiw0''@;'; put 'put ''LjQxLDQuNDEsMCwwLDAtMS40OC0uMjdBNC40Nyw0LjQ3LDAsMSwwLDIyLjE0LDE1LDMuNjksMy42OSwwLDAsMSwyMC4yOCwxNC4yN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgZD0iTTI3LjE4LjhsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzRhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjM5LjhBMS4yOCwxLjI4LDAsMCwwLDI3LjE4LjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTEuMDksMTQuNTdjLjEsMCwuMiwwLC4zMSwwYTYuNDMsNi40MywwLDAsMSwuMDktMiwyLjA5LDIuMDksMCwxLDEsMS40Ny0zLDYuNTgsNi41OCwwLDAsMSwxLjU1LTEuMzEsNC4wOSw0LjA5LDAsMSwwLTMuNDIs''@;'; put 'put ''Ni4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xMywxOC4xNGE2LjUzLDYuNTMsMCwwLDEtMS4yOC0yLjJsLS42MywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4y''@;'; put 'put ''NC4yOHY3aDJWMTkuNTFhNyw3LDAsMCwxLDQuNjctMS42QTguMDksOC4wOSwwLDAsMSwxMywxOC4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMS4zNSwxOC40MkE4LjU5''@;'; put 'put ''LDguNTksMCwwLDAsMjUsMTUuOTFjLS4zMiwwLS42LDAtLjkuMDZhNi41Myw2LjUzLDAsMCwxLTEuMzUsMi4yNUE3LjksNy45LDAsMCwxLDI1LDE3LjkxYTYuOTQsNi45NCwwLDAsMSw0LjY0LDEuNTh2Ni4yN2gyVjE4LjdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMTcuODYsMTguM2E0LjQ3LDQuNDcsMCwxLDAtNC40Ny00LjQ3QTQuNDcsNC40NywwLDAsMCwxNy44NiwxOC4zWm0wLTYuOTNhMi40NywyLjQ3LDAsMSwxLTIuNDcsMi40N0EyLjQ3LDIuNDcsMCwwLDEs''@;'; put 'put ''MTcuODYsMTEuMzdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiBkPSJNMTguMSwxOS43M0E5LjY5LDkuNjksMCwwLDAsMTEsMjIuNDdsLS4yNS4yOHY3LjMzYTEuNTcsMS41NywwLDAs''@;'; put 'put ''MCwxLjYxLDEuNTRIMjMuODNhMS41NywxLjU3LDAsMCwwLDEuNjEtMS41NFYyMi43M2wtLjI1LS4yOEE5LjU4LDkuNTgsMCwwLDAsMTguMSwxOS43M1ptNS4zMyw5Ljg4SDEyLjczVjIzLjU1YTguMDgsOC4wOCwwLDAsMSw1LjM3LTEuODIsOCw4LDAsMCwxLDUuMzMsMS44WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgZD0iTTI2LjM3LDEyYTIsMiwwLDAsMS0yLjA5LjQyLDYuNTMsNi41MywwLDAsMSwuMTUsMS4zOCw2LjU5LDYuNTksMCwwLDEsMCwuNjgsNCw0LDAsMCwwLC41''@;'; put 'put ''Ny4wNiw0LjA4LDQuMDgsMCwwLDAsMy4zLTEuN0E3LjQ1LDcuNDUsMCwwLDEsMjYuMzcsMTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiBkPSJNMjIuOTUsNi45M2E0LjE2LDQuMTYs''@;'; put 'put ''MCwwLDAtMS40NywxLjQ0QTYuNTksNi41OSwwLDAsMSwyMyw5Ljc3YTIuMSwyLjEsMCwwLDEsLjU5LS44M0E3LjQ0LDcuNDQsMCwwLDEsMjIuOTUsNi45M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTgtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwLjMzIiBjeT0iNS42NyIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41''@;'; put 'put ''MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU5LDYuNTksMCwwLDEsMTIsMTYuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMxLjM0LDE4''@;'; put 'put ''LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTQiIGQ9Ik0yNC40MywxMy40NGE2LjU0LDYuNTQsMCwwLDEsMCwuNjksNC4wOSw0LjA5LDAsMCwwLC41OC4wNWguMTlBNC4wOSw0LjA5LDAsMSwwLDIxLjQ3LDgsNi41Myw2LjUzLDAsMCwxLDI0LjQzLDEzLjQ0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgY3g9IjE3Ljg3IiBjeT0iMTMuNDUiIHI9IjQuNDciLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEs''@;'; put 'put ''MjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTkuNTgsOS41OCwwLDAsMCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU5LDYuNTksMCwwLDEsMTIsMTYu''@;'; put 'put ''MTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTks''@;'; put 'put ''MCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xMS4xLDE0LjE5Yy4x''@;'; put 'put ''MSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xOC4xMSwyMC4z''@;'; put 'put ''QTkuNjksOS42OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTE3Ljg3LDE3LjkyYTQuNDYsNC40NiwwLDAsMCw0LTIuNTRBMy42NywzLjY3LDAsMCwxLDE5LDkuODlsLjM1LS42MUE0LjQyLDQuNDIsMCwwLDAsMTcuODcsOWE0LjQ3LDQuNDcsMCwxLDAsMCw4''@;'; put 'put ''LjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTEyLDE2LjE0cS0uNDMsMC0uODcsMGE4LjY3''@;'; put 'put ''LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTgsNi41OCwwLDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4Ljkx''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4z''@;'; put 'put ''M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiBjeD0iMTcuODciIGN5PSIxMy40NSIgcj0iNC40NyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTkuNTgsOS41OCwwLDAs''@;'; put 'put ''MCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNi0tYmFkZ2VkIiBkPSJNMjQuNDMsMTMuNDRhNi41NCw2LjU0LDAsMCwxLDAsLjY5LDQuMDksNC4wOSwwLDAsMCwuNTguMDVoLjE5YTQuMDUs''@;'; put 'put ''NC4wNSwwLDAsMCwyLjUyLTEsNy41LDcuNSwwLDAsMS01LjE0LTYuMzJBNC4xMyw0LjEzLDAsMCwwLDIxLjQ3LDgsNi41Myw2LjUzLDAsMCwxLDI0LjQzLDEzLjQ0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBlUG9wT3V0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcsMzNINWEyLDIsMCwwLDEtMi0yVjlBMiwy''@;'; put 'put ''LDAsMCwxLDUsN0gxNVY5SDVWMzFIMjdWMjFoMlYzMUEyLDIsMCwwLDEsMjcsMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzYTEsMSwwLDAsMCwwLDJIMjkuNTlMMTUuNzQsMTguODVhMSwxLDAs''@;'; put 'put ''MSwwLDEuNDEsMS40MUwzMSw2LjQxVjE4YTEsMSwwLDAsMCwyLDBWM1oiLz4nKSxlLkNsclNoYXBlRmlsdGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNEgzQTEsMSwwLDAsMCwyLDVWNi42N2ExLjc5''@;'; put 'put ''LDEuNzksMCwwLDAsLjUzLDEuMjdMMTQsMTkuNTh2MTAuMmwyLC43NlYxOWExLDEsMCwwLDAtLjI5LS43MUw0LDYuNTlWNkgzMnYuNjFMMjAuMzMsMTguMjlBMSwxLDAsMCwwLDIwLDE5bDAsMTMuMjFMMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSwwLDAsMCwzNCw2LjdWNUExLDEsMCww''@;'; put 'put ''LDAsMzMsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSwwLDAsMCwzNCw2LjdWNWExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsNVY2LjY3YTEuNzksMS43''@;'; put 'put ''OSwwLDAsMCwuNTMsMS4yN0wxNCwxOS41OHYxMC4yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy40OCw0aC0zMUEuNTIuNTIsMCwwLDAsMiw0LjUyVjYuMjRhMS4zMywxLjMzLDAsMCwwLC4zOS45NWwxMiwxMnYxMGw3LjI1LDMuNjFWMTkuMTdsMTItMTJBMS4zNSwxLjM1LDAs''@;'; put 'put ''MCwwLDM0LDYuMjZWNC41MkEuNTIuNTIsMCwwLDAsMzMuNDgsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVBpbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTMzLDE2LjU5YTEsMSwwLDAsMS0uNzEtLjI5TDE5LjcsMy43MWExLDEsMCwwLDEsMS40MS0xLjQxTDMzLjcxLDE0Ljg5QTEsMSwwLDAsMSwzMywxNi41OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTI4LjUyLDE1LjU2bC0xLjQxLTEuNDEtNy4yLDcuMmExLDEsMCwwLDAtLjI1LDEsOSw5LDAsMCwxLTEuNTMsOC4wOUw1LjU4LDE3Ljg3YTksOSwwLDAsMSw4LjA5LTEuNTMsMSwxLDAsMCwwLDEtLjI1bDcuMi03LjJMMjAuNDQsNy40OGwtNi43OSw2Ljc5QTEwLjk0LDEwLjk0LDAsMCwwLDMu''@;'; put 'put ''NDEsMTcuMTFhMSwxLDAsMCwwLDAsMS40Mmw2LjMzLDYuMzNMMi4yOSwzMi4yOWExLDEsMCwxLDAsMS40MSwxLjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4yNFoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTYuNzFhMSwxLDAsMCwxLS43MS0uMjlMMTkuNywzLjgyYTEsMSwwLDAsMSwxLjQxLTEuNDFMMzMuNzEsMTVBMSwxLDAsMCwxLDMzLDE2LjcxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC40NCw3LjU5bC02Ljc5LDYuNzlBMTAuOTQsMTAuOTQsMCwwLDAsMy40MSwxNy4yMmExLDEsMCwwLDAsMCwxLjQyTDkuNzMsMjUsMi4yOSwzMi40MWExLDEsMCwxLDAsMS40MSwxLjQxbDcuNDQtNy40NCw2LjMzLDYu''@;'; put 'put ''MzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4yNGw2Ljc5LTYuNzlaIi8+JyksZS5DbHJTaGFwZUZpbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''MS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTEuOTJabS0uMywyLjQ5LDYsNS45aC02Wk04LDMwVjZIMjB2OGg4VjMwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTIxLjU5LDEyLjM5VjYuNDlsMS4wNywxYTcuMzEsNy4zMSwwLDAsMSwwLTIuODJMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAs''@;'; put 'put ''MCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjEzLjVhNy40NSw3LjQ1LDAsMCwxLTMuOTEtMS4xMVpNMjgsMzBIOFY2SDIwdjhoOFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjgsMTUuNFYzMEg4VjZIMjBWOC4yNWwyLjI1''@;'; put 'put ''LTMuOUwyMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTEu''@;'; put 'put ''OTJaTTIxLDEzVjUuODRMMjguMywxM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI3LjI1LDEzSDIxVjUuODRsMS42NCwxLjZhNy4yNSw3LjI1LDAsMCwxLDAtMi43NEwyMS44OSw0''@;'; put 'put ''SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjcuMjUsMTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1''@;'; put 'put ''LjRjLTIsMC0zLjctMS42LTMuNy0zLjZjMC0wLjcsMC4yLTEuMywwLjUtMS45bDMuMi01LjVMMjEuOSw0SDcuOEM2LjgsNCw2LDQuOSw2LDUuOXYyNC4yYzAsMSwwLjgsMS45LDEuOCwxLjloMjAuM2MxLDAsMS44LTAuOSwxLjgtMS45VjE1LjRIMjIuMnoiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEu''@;'; put 'put ''My0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPicpLGUuQ2xyU2hhcGVQbHVzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMzAsMTdIMTlWNmExLDEsMCwxLDAtMiwwVjE3SDZhMSwxLDAsMCwwLTEsMSwuOTEuOTEsMCwwLDAsMSwuOTRIMTdWMzBhMSwxLDAsMSwwLDIsMFYxOUgzMGExLDEsMCwwLDAsMS0xQTEsMSwwLDAsMCwzMCwxN1oiLz4nKSxlLkNsclNoYXBlTWludXM9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTI2LDE3SDEwYTEsMSwwLDAsMCwwLDJIMjZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVNaW51c0NpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwx''@;'; put 'put ''NiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMTdIMTJhMSwxLDAsMCwwLDAs''@;'; put 'put ''MkgyNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LDE3LjVIMTJhMS41LDEuNSwwLDAsMSwwLTNIMjRhMS41''@;'; put 'put ''LDEuNSwwLDAsMSwwLDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVQbHVzQ2lyY2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi4xNywxN0gxOVY5LjgzYTEsMSwwLDAsMC0yLDBWMTdIOS44M2ExLDEsMCwwLDAsMCwySDE3''@;'; put 'put ''djcuMTdhMSwxLDAsMCwwLDIsMFYxOWg3LjE3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCww''@;'; put 'put ''LDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMThBMTYsMTYsMCwxLDEsMTgsMiwxNiwxNiwwLDAsMSwzNCwxOFptLTguNDEtMS41SDE5LjVWMTAuNDFhMS41''@;'; put 'put ''LDEuNSwwLDAsMC0zLDBWMTYuNUgxMC40MWExLjUsMS41LDAsMCwwLDAsM0gxNi41djYuMDlhMS41LDEuNSwwLDAsMCwzLDBWMTkuNWg2LjA5YTEuNSwxLjUsMCwwLDAsMC0zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuQ2xyU2hhcGVCYW49KDAsYS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThBMTMuOTMsMTMuOTMsMCwwLDEsNy40Myw4Ljg1TDI3LjE1LDI4LjU3QTE0LDE0LDAsMCwxLDQs''@;'; put 'put ''MThabTI0LjU3LDkuMTVMOC44NSw3LjQzQTE0LDE0LDAsMCwxLDI4LjU3LDI3LjE1WiIvPicpLGUuQ2xyU2hhcGVUaW1lc0NpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LjYxLDE4bDQuODYtNC44''@;'; put 'put ''NmExLDEsMCwwLDAtMS40MS0xLjQxTDE4LjIsMTYuNTRsLTQuODktNC44OWExLDEsMCwwLDAtMS40MSwxLjQxTDE2Ljc4LDE4LDEyLDIyLjcyYTEsMSwwLDEsMCwxLjQxLDEuNDFsNC43Ny00Ljc3LDQuNzQsNC43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm04LDIyLjFhMS40LDEuNCwwLDAsMS0yLDJsLTYtNkwxMiwyNi4xMmExLjQsMS40LDAsMSwxLTItMkwxNiwxOC4wOCw5LjgzLDExLjg2YTEuNCwxLjQs''@;'; put 'put ''MCwxLDEsMi0yTDE4LDE2LjFsNi4xNy02LjE3YTEuNCwxLjQsMCwxLDEsMiwyTDIwLDE4LjA4WiIvPicpLGUuQ2xyU2hhcGVUcmFzaD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE0LDM0SDguODZBMi45''@;'; put 'put ''MywyLjkzLDAsMCwxLDYsMzFWMTEuMjNIOFYzMWEuOTMuOTMsMCwwLDAsLjg2LDFIMjcuMTRBLjkzLjkzLDAsMCwwLDI4LDMxVjExLjIzaDJWMzFBMi45MywyLjkzLDAsMCwxLDI3LjE0LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIiBkPSJNMzAuNzgsOUg1QTEsMSwwLDAsMSw1LDdIMzAuNzhhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMjEiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIx''@;'; put 'put ''NSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTUiIGQ9Ik0yMyw1Ljg2SDIxLjFWNEgxNC45VjUuODZIMTNWNGEyLDIsMCwwLDEsMS45LTJoNi4yQTIsMiwwLDAsMSwyMyw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik02LDlWMzFhMi45MywyLjkz''@;'; put 'put ''LDAsMCwwLDIuODYsM0gyNy4wOUEyLjkzLDIuOTMsMCwwLDAsMzAsMzFWOVptOSwyMEgxM1YxNGgyWm04LDBIMjFWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAuNzMsNUgyM1Y0QTIsMiwwLDAsMCwy''@;'; put 'put ''MSwyaC02LjJBMiwyLDAsMCwwLDEzLDRWNUg1QTEsMSwwLDEsMCw1LDdIMzAuNzNhMSwxLDAsMCwwLDAtMloiLz4nKSxlLkNsclNoYXBlVGFnPSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiww''@;'; put 'put ''LDAsMCwzMS45MywxOS4yWk0yMC42MiwzMC41Miw2LDE1LjkxVjZoOS45MmwxNC42LDE0LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMmwtMy44LTMuOEgyNS4zMWw1LjIyLDUuMjItOS45LDkuOUw2LDE1LjkxVjZoOS45MmwzLjQxLDMuNDEsMS0xLjc4LTMtM0EyLDIsMCwwLDAs''@;'; put 'put ''MTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxl''@;'; put 'put ''cnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTku''@;'; put 'put ''MlpNMjAuNjIsMzAuNTIsNiwxNS45MVY2aDkuOTJsMTQuNiwxNC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYs''@;'; put 'put ''MTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yOC40NiwxNS43M0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksMTAuMjJsMS40My0yLjQ3TDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44''@;'; put 'put ''MywwbDkuOS05LjlhMiwyLDAsMCwwLDAtMi44M1pNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuNDdsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuNDdBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuNDdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIu''@;'; put 'put ''ODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDkuNjUsMTEuMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2LjMzIiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVUYWdzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywx''@;'; put 'put ''OS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMs''@;'; put 'put ''NUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTE3LjI2LDI5LjY5LDMuNjksMTYuMTVWN2g5LjFM''@;'; put 'put ''MjYuMzcsMjAuNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIu''@;'; put 'put ''NzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk0xNy4yNiwyOS42OSwzLjY5LDE2LjE1VjdoOS4xTDI2LjM3LDIwLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDI0LDE1LjRIMjIuMjNBMy42NSwzLjY1LDAsMCwx''@;'; put 'put ''LDIxLDE1LjE5bDUuMzMsNS4yOS05LjExLDkuMjFMMy42OSwxNi4xNVY3aDkuMWw2LDUuOTRhMy42OCwzLjY4LDAsMCwxLC4xLTIuNjlMMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwu''@;'; put 'put ''NTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjAuODMsNi44LDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMTkuNzksOC42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywy''@;'; put 'put ''OS40MywxNS40SDI2LjY1bDUuMSw1TDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4y''@;'; put 'put ''MS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEu''@;'; put 'put ''NjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEwLDEuNzMsMS43MywwLDAsMSw2LjY3''@;'; put 'put ''LDExLjcyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIs''@;'; put 'put ''MCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTYuNjcsMTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwxLjczLDEuNzMsMCwwLDEsNi42NywxMS43MloiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43Myww''@;'; put 'put ''bDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC44Myw2LjgsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwxOS43OSw4LjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMjkuNDMsMTUuNEgyNi42NWw1LjEsNUwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDI0LDE1LjRIMjIuMjNhMy42NywzLjY3LDAsMCwxLTMuMzYtNS4xNUwxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMs''@;'; put 'put ''MCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43MywwLDEsMSw4LjQsMTAsMS43MywxLjczLDAs''@;'; put 'put ''MCwxLDYuNjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+JyksZS5DbHJTaGFwZUhpc3Rvcnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDkuODNhMSwxLDAsMCwwLTEsMXY4LjcybDUuOSw0QTEsMSwwLDAsMCwyNCwyMS44OGwtNS0zLjM5VjEwLjgzQTEsMSwwLDAsMCwxOCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2''@;'; put 'put ''LjA5LDE2LjA5LDAsMCwwLDQsMTAuMjZWNS4yYTEsMSwwLDAsMC0yLDBWMTRoOC44YTEsMSwwLDAsMCwwLTJINS4zNUExNCwxNCwwLDEsMSw4LjU4LDI4LjM1YTEsMSwwLDAsMC0xLjM1LDEuNDhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIi8+JyksZS5DbHJTaGFwZUNsb2NrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjkyLDE4LjRWMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTgsMTcuOTRBOS45NCw5Ljk0LDAsMCwxLDIzLjQxLDkuNTlsLjg1LTEuMzZhMTEuNTUsMTEuNTUsMCwxLDAtOC41MywyMUwxNiwyNy43QTEwLDEwLDAsMCwxLDgsMTcuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTE4LjkyLDEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2bC01LTMuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''My4xMiwxMi44MWE3LjQ0LDcuNDQsMCwwLDEtMS45MS41OCwxNC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDQsNy40NCwwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw2LjM4YTExLjU2LDExLjU2LDAsMCwwLTIuMjcsMjIuODlMMTYsMjcuN2ExMCwxMCwwLDEsMSw3LjM5LTE4LjFoMGE3LjQ1LDcuNDUsMCwwLDEtLjc4LTIuMjNBMTEuNDUsMTEuNDUsMCwwLDAsMTgsNi4zOFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2Ui''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NmwtNS0zLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMy43NywxNS4zOWgtMkExNCwxNCwwLDEsMSwyMi4wOSw0LjYxbDEtMS43NkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwzMy43NywxNS4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsOGE5LjgxLDkuODEsMCwwLDEsMiwuMjNsLjg1LTEuNDZhMTEuNTUsMTEuNTUsMCwxLDAtNS4xMywyMi41MkwxNiwyNy43QTEwLDEwLDAsMCwxLDE4LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYuMiwyMS4xOGExLDEsMCwwLDEtMS4zOS4yOGwtNS45LTRWMTAu''@;'; put 'put ''NzVhMSwxLDAsMCwxLDIsMFYxOC40bDUsMy4zOUExLDEsMCwwLDEsMjQuMiwyMy4xOFpNMjMuODUsOC4yM2ExMS4zOSwxMS4zOSwwLDEsMC04LjU0LDIwLjgzTDE1LDMwLjYzYTEzLDEzLDAsMSwxLDkuNy0yMy43N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MUE3LjQ4LDcuNDgsMCwwLDEsMjIuNjgsNy42MywxMS4yNCwxMS4yNCwwLDAsMCwxOCw2LjZhMTEuMzksMTEuMzksMCwwLDAtMi42OSwyMi40N0wxNSwzMC42M0ExMywxMywwLDAsMSwxOCw1YTEyLjgxLDEyLjgxLDAsMCwxLDQuNTEu''@;'; put 'put ''ODIsNy40Niw3LjQ2LDAsMCwxLC42OC0yLjk0LDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1pNMjQuMiwyMy4xOGExLDEsMCwwLDEtMS4zOS4yOGwtNS45LTRWMTAuNzVhMSwxLDAsMCwxLDIsMFYxOC40bDUsMy4zOUExLDEsMCwwLDEsMjQuMiwyMy4xOFoiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMzMuNzcsMTUuMzlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2YzAtLjA5LS4wOS0uMTgtLjEzLS4yN1YxOC40bDUsMy4zOWExLDEsMCwwLDEtMS4xMSwxLjY2bC01LjktNFYxMC43NWExLDEsMCwwLDEsMS45MS0uNDFBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMjAu''@;'; put 'put ''NzQsN0ExMS4xOSwxMS4xOSwwLDAsMCwxOCw2LjZhMTEuMzksMTEuMzksMCwwLDAtMi42OSwyMi40N0wxNSwzMC42M0ExMywxMywwLDAsMSwxOCw1YTEyLjgsMTIuOCwwLDAsMSwzLjU3LjUxbDEuNTMtMi42NkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwzMy43NywxNS4zOVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxlLkNsclNoYXBlQWxhcm1DbG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDcsMy44NGE1''@;'; put 'put ''Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1''@;'; put 'put ''Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2LjQsNC4wOUExNCwxNCwwLDAsMCw4''@;'; put 'put ''LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFMMjgsMjcuNzhBMTQsMTQsMCwwLDAsMTYuNCw0LjA5Wk0xOS41OCwyOS45QTEyLDEyLDAsMSwxLDI5Ljky''@;'; put 'put ''LDE5LjU2LDEyLDEyLDAsMCwxLDE5LjU4LDI5LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjkyLDIwLjM0bC02LjA2LTNWOS41YS45LjksMCwwLDAtMS44LDB2OUwyNC4xMiwyMmEuOS45LDAsMSwwLC43''@;'; put 'put ''OS0xLjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQz''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44Niw5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45LjksMCwxLDAsLjc5LTEuNjJsLTYuMDYtM1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhBMTMuODgsMTMuODgsMCwwLDAsMzEuNzcsMTUuNGgtMmExMi4wNywxMi4wNywwLDEsMS04LjY3LTlsMS0xLjhhMTQsMTQsMCwwLDAtMTQs''@;'; put 'put ''MjMuMjdMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhBMTMuODgsMTMuODgsMCwwLDAsMzEuNzcsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZMMTksMTMuNHYzLjc4TDI1''@;'; put 'put ''LDIwLjFhMSwxLDAsMSwxLS44NywxLjhMMTcsMTguNDRWOS42OWExLDEsMCwwLDEsMiwwVjEwTDE5LDkuODlsMy01LjI4YTE0LDE0LDAsMCwwLTE0LDIzLjI3TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0''@;'; put 'put ''YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3''@;'; put 'put ''LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhh''@;'; put 'put ''MTMuODksMTMuODksMCwwLDAsMy4yMS0xNC4zOUE3LjQ2LDcuNDYsMCwwLDEsMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTEtMS4yMUExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhs''@;'; put 'put ''Mi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFabS0yLjUyLTYuMzVhMSwxLDAsMCwxLTEuMzMuNDdMMTcsMTguNDRWOS42OWExLDEsMCwwLDEsMiwwdjcuNUwyNSwyMC4xQTEsMSwwLDAsMSwyNS40OSwyMS40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3''@;'; put 'put ''LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg2''@;'; put 'put ''LDkuNWEuOS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MmwtNi4wNi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhhMTMuODksMTMu''@;'; put 'put ''ODksMCwwLDAsMy4yMS0xNC4zOSw3LDcsMCwwLDEtMi4xMS4wNUExMiwxMiwwLDEsMSwyMi41Niw2LjksNy41NCw3LjU0LDAsMCwxLDIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjExLTEuMjFBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYt''@;'; put 'put ''Mi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMs''@;'; put 'put ''NS43MywwLDAsMCwzMS40NywzLjg0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwx''@;'; put 'put ''LDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNEExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44''@;'; put 'put ''OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFMMjgsMjcuNzhBMTQsMTQsMCwwLDAsMTgsNFptNy40NywxNy40M2ExLDEsMCwwLDEtMS4zMy40N0wxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDB2Ny41TDI1LDIwLjFBMSwxLDAsMCwxLDI1LjQ5LDIxLjQzWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVDaXJjbGVBcnJvdz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOCw4LjI2bC03LjYxLDcuNjFhMSwxLDAsMSwwLDEuNDEsMS40MUwxNywxMi4xOHYxNWExLDEsMCwwLDAsMiwwVjEybDUuMjgsNS4yOGExLDEsMCwxLDAsMS40''@;'; put 'put ''MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTgsMTUuNTdhMS40MywxLjQzLDAsMCwxLTIsMEwxOS40LDEzVjI3LjE0YTEuNCwx''@;'; put 'put ''LjQsMCwwLDEtMi44LDB2LTE0bC00LjQzLDQuNDNhMS40LDEuNCwwLDAsMS0yLTJMMTguMDgsNy43LDI2LDE1LjU5QTEuNCwxLjQsMCwwLDEsMjYsMTcuNTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksZS5DbHJTaGFwZUNoaWxkQXJyb3c9KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggZD0iTTI0LjgyLDE1LjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQxTDI3LjIsMjFIOVYzLjc4YTEsMSwwLDEsMC0yLDBWMjFhMiwyLDAsMCwwLDIsMkgyNy4xNWwtMy43NCwzLjc1YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLC43LjI5LDEsMSww''@;'; put 'put ''LDAsMCwuNzEtLjI5TDMxLDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUNvcHk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjUsN2gtMTlBMS41LDEuNSwwLDAsMCw5LDguNXYyNEExLjUsMS41LDAsMCwwLDEwLjUs''@;'; put 'put ''MzRoMTlBMS41LDEuNSwwLDAsMCwzMSwzMi41VjguNUExLjUsMS41LDAsMCwwLDI5LjUsN1pNMjksMzJIMTFWOUgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMy41QTEuNSwxLjUsMCwwLDAsMjQuNSwy''@;'; put 'put ''SDUuNUExLjUsMS41LDAsMCwwLDQsMy41djI0QTEuNSwxLjUsMCwwLDAsNS41LDI5SDZWNEgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcsMy41NkExLjU2LDEuNTYsMCwwLDAsMjUuNDMsMkg1LjU3QTEu''@;'; put 'put ''NTYsMS41NiwwLDAsMCw0LDMuNTZWMjguNDRBMS41NiwxLjU2LDAsMCwwLDUuNTcsMzBoLjUyVjQuMDdIMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI2IiB3aWR0aD0iMjMiIGhlaWdodD0iMjgiIHJ4PSIx''@;'; put 'put ''LjUiIHJ5PSIxLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxlLkNsclNoYXBlSGVscD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0''@;'; put 'put ''LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4yOSw4LjkyYTcuMzgsNy4zOCwwLDAsMC01LjcyLDIuNTcsMSwxLDAsMCwwLS4zMi43MS45Mi45MiwwLDAsMCwuOTUuOTIsMS4wOCwx''@;'; put 'put ''LjA4LDAsMCwwLC43MS0uMjksNS43LDUuNywwLDAsMSw0LjMzLTJjMi4zNiwwLDMuODMsMS41MiwzLjgzLDMuNDF2LjA1YzAsMi4yMS0xLjc2LDMuNDQtNC41NCwzLjY1YS44LjgsMCwwLDAtLjc2LjkyczAsMi4zMiwwLDIuNzVhMSwxLDAsMCwwLDEsLjloLjExYTEsMSwwLDAsMCwuOS0xVjE5''@;'; put 'put ''LjQ1YzMtLjQyLDUuNDMtMiw1LjQzLTUuMjh2LS4wNUMyNC4xOCwxMS4xMiwyMS44NCw4LjkyLDE4LjI5LDguOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcuNzgiIGN5PSIyNi4yIiByPSIxLjI1IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjE4LDE0LjE3di0uMDVjMC0zLTIuMzQtNS4yLTUuODgtNS4yYTcuMzgsNy4zOCwwLDAsMC01LjcyLDIuNTcsMSwxLDAsMCwwLS4zMi43MS45Mi45MiwwLDAsMCwuOTUu''@;'; put 'put ''OTIsMS4wOCwxLjA4LDAsMCwwLC43MS0uMjksNS43LDUuNywwLDAsMSw0LjMzLTJjMi4zNiwwLDMuODMsMS41MiwzLjgzLDMuNDF2LjA1YzAsMi4yMS0xLjc2LDMuNDQtNC41NCwzLjY1YS44LjgsMCwwLDAtLjc2LjkyczAsMi4zMiwwLDIuNzVhMSwxLDAsMCwwLDEsLjloLjExYTEsMSwwLDAs''@;'; put 'put ''MCwuOS0xVjE5LjQ1QzIxLjc1LDE5LDI0LjE4LDE3LjQ1LDI0LjE4LDE0LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy43OCIgY3k9IjI2LjIiIHI9IjEuMjUiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDMsNy40MywwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40NCw3LjQ0LDAsMCwxLC41OC0xLjkx''@;'; put 'put ''LDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ5LDcuNDksMCwwLDEtOS45My05LjkzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1ptLTE1LjM0LDE1YTEuNjUsMS42NSwwLDEsMSwxLjY1LTEu''@;'; put 'put ''NjVBMS42NSwxLjY1LDAsMCwxLDE3Ljc4LDI3Ljg1Wm0xLjM3LTguMDZ2MS43MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0xLjMxYzEuNTctLjEyLDQuMTgtLjcs''@;'; put 'put ''NC4xOC0zLjI1LDAtMS44My0xLjQxLTMuMDctMy40My0zLjA3YTUuMzEsNS4zMSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMsNi4yOCw1LjZDMjQuNTgsMTcuMTYs''@;'; put 'put ''MjIuNjEsMTkuMiwxOS4xNSwxOS43OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0tLjIyLDI1Ljg1YTEuNjUsMS42NSwwLDEsMSwxLjY1LTEuNjVBMS42NSwxLjY1LDAsMCwxLDE3Ljc4LDI3Ljg1Wm0xLjM3LTgu''@;'; put 'put ''MDZ2MS43MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0xLjMxYzEuNTctLjEyLDQuMTgtLjcsNC4xOC0zLjI1LDAtMS44My0xLjQxLTMuMDctMy40My0zLjA3YTUu''@;'; put 'put ''MzEsNS4zMSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMsNi4yOCw1LjZDMjQuNTgsMTcuMTYsMjIuNjEsMTkuMiwxOS4xNSwxOS43OVoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLkNsclNoYXBlTG9naW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMkgyOFYzMEgxMlYyMC4ySDEwVjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuMTIsMTguNDZhMSwxLDAsMSwwLDEuNDEsMS40MWw1Ljc5LTUuNzlMMTYuNTQsOC4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE4LjUsMTNINGExLDEsMCwwLDAtMSwx''@;'; put 'put ''LDEsMSwwLDAsMCwxLDFIMTguNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMnY3aDguNUwxNS4xMiw5LjcxYTEsMSwwLDAsMSwxLjQxLTEuNDFsNS43OSw1Ljc5LTUuNzks''@;'; put 'put ''NS43OWExLDEsMCwwLDEtMS40MS0xLjQxTDE4LjUsMTVIMTBWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDEzSDRhMSwx''@;'; put 'put ''LDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVMb2dvdXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcsNkgyM3Y5LjhoMlY2YTIsMiwwLDAsMC0yLTJIN0EyLDIsMCwwLDAsNSw2VjMw''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjNhMiwyLDAsMCwwLDItMkg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4xNiwxNy4yOGExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjEzLDIySDE1LjYzYTEsMSwwLDAsMC0xLDEs''@;'; put 'put ''MSwxLDAsMCwwLDEsMWgxNC41bC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsNEg3QTIsMiwwLDAsMCw1LDZWMzBhMiwyLDAsMCwwLDIs''@;'; put 'put ''MkgyM2EyLDIsMCwwLDAsMi0yVjI0SDE1LjYzYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtMUgyNVY2QTIsMiwwLDAsMCwyMyw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjE2LDE3LjI4YTEsMSwwLDAsMC0x''@;'; put 'put ''LjQxLDEuNDFMMzAuMTMsMjJIMjV2Mmg1LjEzbC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxlLkNsclNoYXBlUHJpbnRlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksOUgy''@;'; put 'put ''N1Y1SDlWOUg3YTQsNCwwLDAsMC00LDRWMjRINi45MlYyMi4wOUg1VjEzYTIsMiwwLDAsMSwyLTJIMjlhMiwyLDAsMCwxLDIsMnY5SDI5LjA4VjI0SDMzVjEzQTQsNCwwLDAsMCwyOSw5Wk0yNSw5SDExVjdIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9''@;'; put 'put ''IjEzLjA0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40IDMxIDIyLjA5IDI5LjA4IDIyLjA5IDI5LjA4IDI0IDMzIDI0IDMzIDE1LjQgMzEgMTUuNCIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEzYTIsMiwwLDAsMSwyLTJIMTguNjRBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMTkuNTQsOUgxMVY3aDkuNzFsMS4xMy0ySDlWOUg3YTQsNCwwLDAsMC00''@;'; put 'put ''LDRWMjRINi45MlYyMi4wOUg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMThIOGEx''@;'; put 'put ''LDEsMCwwLDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgxMVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjEzLjA0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxMi44OGE3LjQ1LDcuNDUsMCwwLDEtMiwuNTV2OC42NkgyOS4wOFYyNEgzM1YxM0MzMywxMywzMywxMi45MywzMywx''@;'; put 'put ''Mi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTNhMiwyLDAsMCwxLDItMkgyNC40MmE3LjUsNy41LDAsMCwxLTEuMjctMkgxMVY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0u''@;'; put 'put ''MDctMSw3LjU0LDcuNTQsMCwwLDEsLjA3LTFIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0i''@;'; put 'put ''NSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksOUgyN1Y1SDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4SDI3VjI0aDZWMTNBNCw0LDAsMCwwLDI5LDlaTTI1''@;'; put 'put ''LDI0djZIMTFWMTlIMjVaTTI1LDlIMTFWN0gyNVptNCw2SDI3VjEzaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41NCw5SDExVjdoOS43MWwxLjEz''@;'; put 'put ''LTJIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxNS40Wk0yNSwyNHY2SDExVjE5SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDEyLjg4YTcuMyw3LjMsMCwwLDEtNCwuNTVWMTVIMjdWMTNoLjMyYTcuNTIsNy41MiwwLDAsMS00LjE4LTRIMTFWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41NCw3LjU0LDAsMCwxLC4wNy0xSDlWOUg3YTQsNCwwLDAsMC00LDRW''@;'; put 'put ''MjRIOXY4SDI3VjI0aDZWMTNDMzMsMTMsMzMsMTIuOTMsMzMsMTIuODhaTTI1LDI0djZIMTFWMTlIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVXb3JsZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTQsMThhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLTRoMy42YTEyLjMsMTIuMywwLDAsMC0u''@;'; put 'put ''NjctMS42SDI1LjY5QTE5LjcyLDE5LjcyLDAsMCwwLDIyLjgsNi41M2ExMi4zLDEyLjMsMCwwLDAtMi41NS0uNzYsMTcuODMsMTcuODMsMCwwLDEsMy44OSw2LjU5SDE4Ljc1VjUuNmMtLjI1LDAtLjUxLDAtLjc3LDBzLS40OSwwLS43MywwdjYuNzdIMTEuODZhMTcuODMsMTcuODMsMCwwLDEs''@;'; put 'put ''My45LTYuNiwxMi4yOCwxMi4yOCwwLDAsMC0yLjU0Ljc1LDE5LjcyLDE5LjcyLDAsMCwwLTIuOTEsNS44NUg2Ljk0QTEyLjMsMTIuMywwLDAsMCw2LjI2LDE0SDkuODlhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLDQsMTkuNjcsMTkuNjcsMCwwLDAsLjUsNC4zN0g2LjQyQTEyLjM0LDEyLjM0LDAs''@;'; put 'put ''MCwwLDcuMTYsMjRoMy4yM2ExOS4zMiwxOS4zMiwwLDAsMCwyLjY5LDUuMzYsMTIuMjgsMTIuMjgsMCwwLDAsMi42MS43OUExNy45MSwxNy45MSwwLDAsMSwxMiwyNGg1LjI2djYuMzRjLjI0LDAsLjQ5LDAsLjczLDBzLjUxLDAsLjc3LDBWMjRIMjRhMTcuOSwxNy45LDAsMCwxLTMuNyw2LjE1''@;'; put 'put ''LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjItLjgxQTE5LjMyLDE5LjMyLDAsMCwwLDI1LjYxLDI0aDMuMmExMi4zNCwxMi4zNCwwLDAsMCwuNzQtMS42SDI2QTE5LjY3LDE5LjY3LDAsMCwwLDI2LjU0LDE4Wm0tOS4yOSw0LjM3SDExLjUxYTE3LjY5LDE3LjY5LDAsMCwxLS4wOS04LjRoNS44M1pt''@;'; put 'put ''Ny4yNCwwSDE4Ljc1VjE0aDUuODNBMTguMjEsMTguMjEsMCwwLDEsMjUsMTgsMTguMTIsMTguMTIsMCwwLDEsMjQuNDksMjIuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQs''@;'; put 'put ''MTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40NCw3LjQ0LDAsMCwxLTEuOTEu''@;'; put 'put ''NTgsMTQuMDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQzLDcuNDMsMCwwLDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjAuMjUsNS43N2ExNy44MywxNy44MywwLDAsMSwzLjg5LDYuNTlIMTguNzVWNS42Yy0uMjUsMC0uNTEsMC0uNzcsMHMtLjQ5LDAtLjczLDB2Ni43N0gxMS44NmExNy44MywxNy44MywwLDAsMSwzLjktNi42LDEyLjI4LDEyLjI4LDAsMCwwLTIuNTQuNzUsMTkuNzIsMTkuNzIsMCwwLDAt''@;'; put 'put ''Mi45MSw1Ljg1SDYuOTRBMTIuMywxMi4zLDAsMCwwLDYuMjYsMTRIOS44OWExOS4zOCwxOS4zOCwwLDAsMC0uNDMsNCwxOS42NywxOS42NywwLDAsMCwuNSw0LjM3SDYuNDJBMTIuMzQsMTIuMzQsMCwwLDAsNy4xNiwyNGgzLjIzYTE5LjMyLDE5LjMyLDAsMCwwLDIuNjksNS4zNiwxMi4yOCwx''@;'; put 'put ''Mi4yOCwwLDAsMCwyLjYxLjc5QTE3LjkxLDE3LjkxLDAsMCwxLDEyLDI0aDUuMjZ2Ni4zNGMuMjQsMCwuNDksMCwuNzMsMHMuNTEsMCwuNzcsMFYyNEgyNGExNy45LDE3LjksMCwwLDEtMy43LDYuMTUsMTIuMjgsMTIuMjgsMCwwLDAsMi42Mi0uODFBMTkuMzIsMTkuMzIsMCwwLDAsMjUuNjEs''@;'; put 'put ''MjRoMy4yYTEyLjM0LDEyLjM0LDAsMCwwLC43NC0xLjZIMjZhMTkuNjcsMTkuNjcsMCwwLDAsLjUtNC4zNywxOS4zOCwxOS4zOCwwLDAsMC0uNDMtNGgzLjZjLS4wNi0uMTctLjEyLS4zMy0uMTktLjQ5YTcuNDUsNy40NSwwLDAsMS0zLjQ3LTEuMTFoLS4zNmMwLS4xMS0uMDgtLjIxLS4xMS0u''@;'; put 'put ''MzJhNy40OCw3LjQ4LDAsMCwxLTMuMDYtNS42MkExMi40MSwxMi40MSwwLDAsMCwyMC4yNSw1Ljc3Wm0tMywxNi41OUgxMS41MWExNy42OSwxNy42OSwwLDAsMS0uMDktOC40aDUuODNaTTI1LDE4YTE4LjEyLDE4LjEyLDAsMCwxLS41NSw0LjM3SDE4Ljc1VjE0aDUuODNBMTguMjEsMTguMjEs''@;'; put 'put ''MCwwLDEsMjUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDUsMThhMjAuNDYsMjAuNDYsMCwwLDAsLjYyLDQuOTNoNi40OFYxMy40NUgxMC41OEEyMC41NSwyMC41NSwwLDAsMCwxMC4wNSwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44NSwxMy40NXY5LjQ4aDYuNDhBMjAuNDYsMjAuNDYsMCwwLDAsMjYsMThhMjAuNTUsMjAuNTUsMCwwLDAtLjUyLTQuNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0zMC4yMiwyNC43MUgyNi42YTIxLjgsMjEuOCwwLDAsMS0zLDYsMTMuODYsMTMuODYsMCwwLDEtMywuOTIsMjAuMjEsMjAuMjEsMCwwLDAsNC4xOC02Ljk0SDE4Ljg2djcuMTVjLS4yOSwwLS41NywwLS44Niwwcy0u''@;'; put 'put ''NTUsMC0uODMsMFYyNC43MUgxMS4yMmEyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LDYuOTUsMTMuODYsMTMuODYsMCwwLDEtMi45NC0uOSwyMS44LDIxLjgsMCwwLDEtMy02LjA1SDUuNzhhMTMuOTQsMTMuOTQsMCwwLDEtLjgzLTEuODFoNEEyMi4yLDIyLjIsMCwwLDEsOC4zNywxOGEyMS44OCwy''@;'; put 'put ''MS44OCwwLDAsMSwuNDgtNC41NUg0Ljc2YTEzLjg4LDEzLjg4LDAsMCwxLC43Ni0xLjgxSDkuMzNBMjIuMjYsMjIuMjYsMCwwLDEsMTIuNjEsNWExMy44NiwxMy44NiwwLDAsMSwyLjg3LS44NCwyMC4xMywyMC4xMywwLDAsMC00LjQsNy40NWg2LjA5VjRjLjI4LDAsLjU1LDAsLjgzLDBzLjU4''@;'; put 'put ''LDAsLjg2LDB2Ny42NGg2LjA5YTIwLjEzLDIwLjEzLDAsMCwwLTQuMzktNy40NEExMy44OSwxMy44OSwwLDAsMSwyMy40Myw1YTIyLjI2LDIyLjI2LDAsMCwxLDMuMjcsNi41OWgzLjc3YTEzLjg5LDEzLjg5LDAsMCwxLC43NiwxLjgxSDI3LjE3QTIxLjg4LDIxLjg4LDAsMCwxLDI3LjY2LDE4''@;'; put 'put ''YTIyLjIsMjIuMiwwLDAsMS0uNTcsNC45M2g0QTEzLjk0LDEzLjk0LDAsMCwxLDMwLjIyLDI0LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA1LDE4YTIwLjQ2LDIwLjQ2LDAsMCwwLC42Miw0LjkzaDYuNDhW''@;'; put 'put ''MTMuNDVIMTAuNThBMjAuNTUsMjAuNTUsMCwwLDAsMTAuMDUsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg1LDIyLjk0aDYuNDhBMjAuNDYsMjAuNDYsMCwwLDAsMjYsMThhMjAu''@;'; put 'put ''NTUsMjAuNTUsMCwwLDAtLjUyLTQuNTVIMTguODVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjkuNTh2MEgzMWE2Ljc3LDYuNzcsMCww''@;'; put 'put ''LDEtMi4wNywwaC0xLjhBMjEuODgsMjEuODgsMCwwLDEsMjcuNjYsMThhMjIuMiwyMi4yLDAsMCwxLS41Nyw0LjkzaDRhMTMuOTQsMTMuOTQsMCwwLDEtLjgzLDEuODFIMjYuNmEyMS44LDIxLjgsMCwwLDEtMyw2LDEzLjg2LDEzLjg2LDAsMCwxLTMsLjkyLDIwLjIxLDIwLjIxLDAsMCwwLDQu''@;'; put 'put ''MTgtNi45NEgxOC44NnY3LjE1Yy0uMjksMC0uNTcsMC0uODYsMHMtLjU1LDAtLjgzLDBWMjQuNzFIMTEuMjJhMjAuMjEsMjAuMjEsMCwwLDAsNC4xOCw2Ljk1LDEzLjg2LDEzLjg2LDAsMCwxLTIuOTQtLjksMjEuOCwyMS44LDAsMCwxLTMtNi4wNUg1Ljc4YTEzLjk0LDEzLjk0LDAsMCwxLS44''@;'; put 'put ''My0xLjgxaDRBMjIuMiwyMi4yLDAsMCwxLDguMzcsMThhMjEuODgsMjEuODgsMCwwLDEsLjQ4LTQuNTVINC43NmExMy44OCwxMy44OCwwLDAsMSwuNzYtMS44MUg5LjMzQTIyLjI2LDIyLjI2LDAsMCwxLDEyLjYxLDVhMTMuODYsMTMuODYsMCwwLDEsMi44Ny0uODQsMjAuMTMsMjAuMTMsMCww''@;'; put 'put ''LDAtNC40LDcuNDVoNi4wOVY0Yy4yOCwwLC41NSwwLC44Mywwcy41OCwwLC44NiwwdjcuNjRoNi4wOWwwLS4xM2E3LjQ3LDcuNDcsMCwwLDEtMi4zNi00Ljc2LDIwLjM3LDIwLjM3LDAsMCwwLTItMi41NSwxNC4yMywxNC4yMywwLDAsMSwyLjA2LjU2LDcuNDQsNy40NCwwLDAsMSwuNTctMS44''@;'; put 'put ''NiwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVTbGlkZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEyLjM3QTQsNCwwLDAsMCw5LDguNDhWNUExLDEsMCwxLDAsNyw1VjguNDhhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjE2''@;'; put 'put ''LjI2QTQsNCwwLDAsMCwxMiwxMi4zN1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSw4LDE0LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE1LjgzYTQsNCwwLDAsMC0zLTMuODlWNWExLDEsMCwx''@;'; put 'put ''LDAtMiwwdjYuOTRhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjE5LjcyQTQsNCwwLDAsMCwzMiwxNS44M1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyOCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIsMjQuNWE0LDQsMCwwLDAtMy0zLjg5VjVhMSwxLDAsMSwwLTIsMFYyMC42MWE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSwwLDEsMCwyLDBWMjguMzlBNCw0LDAsMCwwLDIyLDI0LjVabS00LDJhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsMTgsMjYuNTNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTksOS4yOVY1QTEsMSwwLDEsMCw3LDVWOS4zYTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxNS40M0EzLjIyLDMuMjIsMCwwLDAsOSw5LjI5WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDIxLjQ1VjVhMSwxLDAsMSwwLTIsMFYyMS40N2EzLjIyLDMuMjIsMCwwLDAsMCw2LjExVjMxYTEsMSwwLDEsMCwyLDBWMjcuNmEzLjIyLDMuMjIsMCwwLDAsMC02LjE0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDEyLjc1VjVhMSwxLDAsMSwwLTIsMHY3Ljc2YTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxOC44OWEzLjIyLDMuMjIsMCwwLDAsMC02LjE0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVDbGlwYm9hcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjI5LDVIMjdWN2gyVjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwz''@;'; put 'put ''NEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjYuNjlBMS43LDEuNywwLDAsMCwyOS4yOSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNy4zM0EyLjM0LDIuMzQsMCwwLDAsMjMuNjcsNUgyMS44''@;'; put 'put ''N2E0LDQsMCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI2Wk0yNCw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoMy42N2EuMzMuMzMsMCwwLDEsLjMzLjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTQiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOCIgd2lkdGg9IjE0IiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIyIiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCB4PSIxMSIgeT0iMjYiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyNiIgd2lkdGg9IjE0IiBoZWlnaHQ9''@;'; put 'put ''IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4xMyw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoMi41N2E3LjUyLDcuNTIsMCww''@;'; put 'put ''LDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uN2E0LDQsMCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI0LjQyQTcuNSw3LjUsMCwwLDEsMjMuMTMsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YzMkg3VjdIOVY1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVYxMy40M0E3''@;'; put 'put ''LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4yOSw1SDIyLjE3YTQuNDUsNC40NSwwLDAsMC00LjExLTNBNC40Niw0LjQ2LDAsMCwwLDE0LDVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAs''@;'; put 'put ''Ni43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjYuNjlBMS43LDEuNywwLDAsMCwyOS4yOSw1Wm0tMTgsM2ExLDEsMCwwLDEsMS0xaDMuNDRWNi4zMWEyLjMxLDIuMzEsMCwxLDEsNC42MywwVjdoMy40NGExLDEsMCwwLDEsMSwxdjJIMTEuMzFaTTI1LDI4SDExVjI2SDI1Wm0w''@;'; put 'put ''LTRIMTFWMjJIMjVabTAtNEgxMVYxOEgyNVptMC00SDExVjE0SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDksNy40OSwwLDAsMSwyMy42NiwxMEgxMS4zMVY4YTEsMSwwLDAsMSwxLTFoMy40''@;'; put 'put ''NFY2LjMxYTIuMzEsMi4zMSwwLDEsMSw0LjYzLDBWN2gyLjE5YTcuNTQsNy41NCwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFoLS40YTQuNDUsNC40NSwwLDAsMC00LjExLTNBNC40Niw0LjQ2LDAsMCwwLDE0LDVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywx''@;'; put 'put ''LjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41Wk0yNSwyOEgxMVYyNkgyNVptMC00SDExVjIySDI1Wm0wLTRIMTFWMThIMjVabTAtNEgxMVYxNEgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZUZpcmV3YWxsPSgw''@;'; put 'put ''LGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCw4SDMydjUuMDhIMjMuOHYtNEgyMnY0SDE0di00SDEydjRINFptMCw3SDMydjYuMDhIMjguOTJWMTYuMjdIMjd2''@;'; put 'put ''NC44MUgxOC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzMuNjgsMTUuNEgzMnY1LjY4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0LjgxSDRWMTVIMjAuNThhMy41OCwzLjU4LDAsMCwxLTEuNzYtMS45MkgxNHYtNEgxMnY0SDRWOEgyMC4xNGwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi40NS0uNDJIMjMuOFYxMC4yMmE3LjUsNy41LDAsMCwxLS42My0xLjE0SDIydjRIMTR2LTRIMTJ2NEg0VjhIMjIuNzhhNy40OSw3LjQ5LDAsMCwx''@;'; put 'put ''LS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTQsMTVIMzJ2Ni4wOEgyOC45MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45VjE2LjI3SDd2NC44MUg0Wk0yMy44''@;'; put 'put ''LDI4VjI0LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTE0LDI4SDEy''@;'; put 'put ''VjI0aDJabTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYxNmgydjRoOFYxNmgydjRoM1ptMC04SDRWMTJoOFY4aDJ2NGg4VjhoMnY0aDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRI''@;'; put 'put ''MjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDRWMTJoOFY4aDJ2NGg0LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMTQsMjhIMTJWMjRoMlptMTAsMEgyMlYyNGgy''@;'; put 'put ''Wm04LTZINFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4y''@;'; put 'put ''MywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI0LDEwLjQ5VjEyaDEuNTFBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMTRINFYxMmg4VjhoMnY0aDhWOGguNzhh''@;'; put 'put ''Ny40OSw3LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWk0xNCwyOEgxMlYyNGgyWm0xMCwwSDIyVjI0aDJabTgtNkg0VjIwSDdWMTZIOXY0aDhWMTZoMnY0aDhWMTZo''@;'; put 'put ''MnY0aDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVMaXN0PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9IjE1IiB5PSI4IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIx''@;'; put 'put ''MiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTYiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjIwIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIg''@;'; put 'put ''eT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtOCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlptMCwzMEg4VjRIMjhaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTIiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjE1IiB5PSIxNiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjIwIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjQiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdl''@;'; put 'put ''ZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTIiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIg''@;'; put 'put ''eT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSw4djJoOC42NmE3LjQ1LDcuNDUsMCwwLDEtLjg5LTJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWNEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg4LTJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYx''@;'; put 'put ''My41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMywyNkgxMVYyNGgyWm0wLTRIMTFW''@;'; put 'put ''MjBoMlptMC00SDExVjE2aDJabTAtNEgxMVYxMmgyWm0wLTRIMTFWOGgyWk0yNSwyNkgxNVYyNEgyNVptMC00SDE1VjIwSDI1Wm0wLTRIMTVWMTZIMjVabTAtNEgxNVYxMkgyNVptMC00SDE1VjhIMjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTIzLjY2LDEwSDE1VjhoNy43OGE3LjQyLDcuNDIsMCwwLDEsLjg5LTZIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyMy42NiwxMFpNMTMsMjZIMTFWMjRoMlptMC00SDExVjIwaDJa''@;'; put 'put ''bTAtNEgxMVYxNmgyWm0wLTRIMTFWMTJoMlptMC00SDExVjhoMlpNMjUsMjZIMTVWMjRIMjVabTAtNEgxNVYyMEgyNVptMC00SDE1VjE2SDI1Wm0wLTRIMTVWMTJIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVSZWRvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCw0LjIyYTEsMSwwLDAs''@;'; put 'put ''MC0xLjQxLDEuNDJsNS41Niw1LjQ5aC0xM0ExMSwxMSwwLDAsMCwxMC4wNywzMiwxLDEsMCwwLDAsMTEsMzAuMThhOSw5LDAsMCwxLTUtOCw5LjA4LDkuMDgsMCwwLDEsOS4xMy05aDEzbC01LjU0LDUuNDhBMSwxLDAsMCwwLDI0LDIwbDgtNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVVbmRvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC44NywxMS4xNGgtMTNsNS41Ni01LjQ5QTEsMSwwLDAsMCwxMiw0LjIyTDQsMTIuMTMsMTIsMjBhMSwxLDAsMCwwLDEuNDEtMS40Mkw3Ljg2LDEzLjE0aDEzYTkuMDgs''@;'; put 'put ''OS4wOCwwLDAsMSw5LjEzLDksOSw5LDAsMCwxLTUsOEExLDEsMCwwLDAsMjUuOTMsMzJhMTEsMTEsMCwwLDAtNS4wNi0yMC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVTY3JvbGw9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTM0LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxMy4xM2gtMlYyOS41''@;'; put 'put ''NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRabS00LjUtN0EyLjUsMi41LDAsMCwxLDMyLDYuNThWOS4xMkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYtMi41WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMDgsMTUuNFYyOS41NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoMi42MUEzLjY2LDMuNjYs''@;'; put 'put ''MCwwLDEsMTksOS44OWwuNDQtLjc2SDE4VjYuNThhNC40OCw0LjQ4LDAsMCwwLS43Ni0yLjVIMjIuNGwxLjE1LTJIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUs''@;'; put 'put ''MCwwLDAsNC41LTQuNVYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMu''@;'; put 'put ''NWE3LjQ5LDcuNDksMCwwLDEtMS45Mi0uMjZ2MTYuM2EyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoOC41NGE3LjUsNy41LDAsMCwxLTEuMzUtMkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYt''@;'; put 'put ''Mi41aDUuNTJhNy40NCw3LjQ0LDAsMCwxLC44Ni0ySDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEsMS01LDBWMjZINy4xOVYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjV2LTE2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTM0LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTMuMTNoLTJWMjkuNTRhMi41LDIuNSww''@;'; put 'put ''LDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4wOCwxNS40VjI5LjU0YTIuNSwyLjUsMCww''@;'; put 'put ''LDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGgyLjYxQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5bDQuNTEtNy44SDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUu''@;'; put 'put ''NThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAs''@;'; put 'put ''MTMuNWE3LjQ5LDcuNDksMCwwLDEtMS45Mi0uMjZ2MTYuM2EyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoOC41NGE3LjQ2LDcuNDYsMCwwLDEtLjkyLTlIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41''@;'; put 'put ''OFYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjV2LTE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''ICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlRmlsZVNldHRpbmdzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEuMTYsMCwwLDAtLjcxLTEuMTJsLTEu''@;'; put 'put ''NjgtLjVjLS4wOS0uMjQtLjE4LS40OC0uMjktLjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGExLjE1LDEuMTUsMCwwLDAtMS4xMS0u''@;'; put 'put ''NzdoLTJhMS4xNiwxLjE2LDAsMCwwLTEuMTEuODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0LDcuNjQsMCwwLDAtLjMxLjc0bC0x''@;'; put 'put ''LjU4LjQ3YTEuMTUsMS4xNSwwLDAsMC0uODMsMS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiwwLDAsMCwxLjM3LjIxbDEuNDgtLjc4''@;'; put 'put ''Yy4yMy4xMS40Ny4yLjcyLjI5TDIyLDMzLjE4YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQyLTEuNGExLjE2LDEuMTYsMCwwLDAs''@;'; put 'put ''LjIxLTEuMzhsLS43OS0xLjQ1cS4xNi0uMzQuMjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIxLDYuMjEsMCwwLDEtMS4yLjQ5bC0u''@;'; put 'put ''NDIuMTItLjYzLDIuMDlIMjMuNDJsLS42My0yLjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMuMDhsLjEzLS40MWE1Ljk0LDUuOTQs''@;'; put 'put ''MCwwLDEsLjUzLTEuMjNMMTguOSwyMWwtMS0xLjg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTItMSwxLDEtMSwxLjg5LjIxLjM4YTYu''@;'; put 'put ''MDgsNi4wOCwwLDAsMSwuNSwxLjIxbC4xMi40MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVa''@;'; put 'put ''bTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMxSDZWNUgyNnY3Ljg5YTMuMiwzLjIsMCww''@;'; put 'put ''LDEsMiwxLjcyVjVhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0uNzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCwwLS4yMS0xLjM3bC0xLjQyLTEuNDFh''@;'; put 'put ''MS4xNiwxLjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZhNy44NCw3Ljg0LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSwwLDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCwwLS43Ny4zMmwtMS40Mi0uNzZhMS4x''@;'; put 'put ''NiwxLjE2LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4xNiwxLjE2LDAsMCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAsMC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44MywxLjFsMS41OS40N2E3LjUzLDcuNTMs''@;'; put 'put ''MCwwLDAsLjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYsMCwwLDAsLjIxLDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcuMjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmExLjE2LDEuMTYsMCwwLDAsMS4xMS0u''@;'; put 'put ''ODJsLjQ3LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjlsMS41Ljc5YTEuMTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYsMS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCwwLDAsLjgzLTEuMTFabS0xLjYsMS42''@;'; put 'put ''My0yLjExLjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4xOWwtLjIxLjM4LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAsMS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEtMS4yMS0uNDlsLS4zNy0uMi0xLjk0''@;'; put 'put ''LDEtMS0xLDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwxOC4xNywyNkwxOCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQxYTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4yMyw2LjIzLDAsMCwxLDEuMjYtLjUy''@;'; put 'put ''bC40MS0uMTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2LjIxLDYuMjEsMCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEuODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjEuODdMMjMsM0g2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2LDAsMCwwLS43MS0xLjEybC0xLjY4''@;'; put 'put ''LS41Yy0uMDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzdsLTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43NmE3Ljg0LDcuODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjc3''@;'; put 'put ''aC0yYTEuMTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0xLjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGExLjE2LDEuMTYsMCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3LjY0LDAsMCwwLS4zMS43NGwtMS41''@;'; put 'put ''OC40N2ExLjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4xNiwwLDAsMCwuMjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCwwLDAsMS4zNy4yMWwxLjQ4LS43OGMu''@;'; put 'put ''MjMuMTEuNDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiwwLDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4yOWwxLjUuNzlhMS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0xLjRhMS4xNiwxLjE2LDAsMCwwLC4y''@;'; put 'put ''MS0xLjM4bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4xMVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwxLjE5bC0uMjEuMzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2LjIxLDAsMCwxLTEuMi40OWwtLjQy''@;'; put 'put ''LjEyLS42MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwtLjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwxLDE4LjE3LDI2TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4bC4xMy0uNDFhNS45NCw1Ljk0LDAs''@;'; put 'put ''MCwxLC41My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCwwLDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEyQTYuMjEsNi4yMSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEsMSwxLTEsMS44OS4yMS4zOGE2LjA4''@;'; put 'put ''LDYuMDgsMCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAsNC4wOCw0QTQuMDYsNC4wNiwwLDAs''@;'; put 'put ''MCwyNC4xMiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0''@;'; put 'put ''LjQ5LDMxSDZWNUgyMy4wOGE2Ljk0LDYuOTQsMCwwLDEsLjYtMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0t''@;'; put 'put ''YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjMzVjEyLjcxYTcsNywwLDAsMS0yLTF2MS44OEEzLjIsMy4yLDAsMCwxLDI4LDE1LjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZWNUgyNnY4Ljc4YTIuMzcsMi4zNywwLDAs''@;'; put 'put ''MSwyLDEuNTdWNWEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41''@;'; put 'put ''NCwyMy40N2wtMi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCwwLDAtLjM2LS4yNWgtMmEuMzcuMzcs''@;'; put 'put ''MCwwLDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAs''@;'; put 'put ''LjI2LjM1bDIsLjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZs''@;'; put 'put ''LjYxLTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjMuODNBLjM3LjM3LDAsMCwwLDMz''@;'; put 'put ''LjU0LDIzLjQ3Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTQsMjMuNDdsLTItLjYxYTcuMDYs''@;'; put 'put ''Ny4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJh''@;'; put 'put ''Nyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCwwLC4yNi4zNWwyLC42MWE3LDcsMCww''@;'; put 'put ''LDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4''@;'; put 'put ''LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwzMy41NCwyMy40N1pNMjQuNywyOC4x''@;'; put 'put ''OUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZWNUgyMS44N0wyMywzSDZB''@;'; put 'put ''MiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIx''@;'; put 'put ''LjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTQsMjMuNDdsLTItLjYx''@;'; put 'put ''YTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwt''@;'; put 'put ''LjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCwwLC4yNi4zNWwyLC42MWE3''@;'; put 'put ''LDcsMCwwLDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAs''@;'; put 'put ''MCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwzMy41NCwyMy40N1pNMjQu''@;'; put 'put ''NywyOC4xOUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS41NSwzMUg2VjVIMjMuMDhhNi45''@;'; put 'put ''NCw2Ljk0LDAsMCwxLC42LTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yOCwxNS4zNlYxMi43MWE3LDcsMCwwLDEtMi0xdjJBMi4zNywyLjM3LDAsMCwxLDI4LDE1LjM2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIC8+JyksZS5DbHJTaGFwZVR3b1dheUFycm93cz0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMjMuNDMsMTYuODNBMSwxLDAsMCwwLDIyLDE4LjI0TDI1LjcyLDIySDcuODNhMSwxLDAsMCwwLDAsMkgyNS43MkwyMiwyNy43YTEsMSwwLDEsMCwxLjQyLDEuNDFMMjkuNTMsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0xMy4yNCwxOC40NWExLDEsMCwwLDAsLjcxLTEuNzFMMTAuMjQsMTNIMjguMTJhMSwxLDAsMCwwLDAtMkgxMC4yNGwzLjcxLTMuNzNhMSwxLDAsMCwwLTEuNDItMS40MUw2LjQyLDEybDYuMTEsNi4xNEExLDEsMCwwLDAsMTMuMjQsMTguNDVaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlU3dpdGNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LjcxLDE0SDIwLjkyVjEySDUuNzFMOS40Miw4LjI3QTEsMSwwLDEsMCw4LDYuODZMMS44OSwxMyw4LDE5LjE0YTEsMSwwLDEsMCwxLjQyLTEu''@;'; put 'put ''NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEyIiB3aWR0aD0iMyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjI4IiB5PSIxMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuOTIsMTcuODZhMSwxLDAsMCwwLTEuNDIsMS40MUwzMC4yMSwyM0gxNXYySDMwLjIxTDI2LjUs''@;'; put 'put ''MjguNzRhMSwxLDAsMSwwLDEuNDIsMS40TDM0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0iMjMiIHdpZHRoPSIzIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGUuQ2xyU2hhcGVUb29scz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAsMTRI''@;'; put 'put ''MTZhMSwxLDAsMCwwLTEsMXY2YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE1QTEsMSwwLDAsMCwyMCwxNFptLS40LDYuNkgxNi40VjE1LjRoMy4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMu''@;'; put 'put ''NzEsMTIuMzgsMjkuNjIsOC4yOUExLDEsMCwwLDAsMjguOTIsOGgtNVY2LjA1QTIsMiwwLDAsMCwyMiw0SDEzLjg0QTEuOTIsMS45MiwwLDAsMCwxMiw2LjA1VjhINy4wOGExLDEsMCwwLDAtLjcxLjI5TDIuMjksMTIuMzhhMSwxLDAsMCwwLS4yOS43MVYyOGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTMuMDhBMSwxLDAsMCwwLDMzLjcxLDEyLjM4Wk0xNCw2aDhWOEgxNFpNMzIsMTdIMjJ2MS45M0gzMlYyOEg0VjE4LjkzSDE0VjE3SDRWMTMuNUw3LjUsMTBoMjFMMzIsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMTYuNCIgeT0iMTUuNCIgd2lkdGg9IjMuMiIgaGVpZ2h0PSI1LjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsMjFhMSwxLDAsMCwxLTEsMUgxNmExLDEsMCwwLDEtMS0xVjE5SDJ2''@;'; put 'put ''OWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTlIMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjcxLDEyLjM4LDI5LjYyLDguMjlBMSwxLDAsMCwwLDI4LjkyLDhoLTVWNi4wNUEyLDIsMCwwLDAs''@;'; put 'put ''MjIsNEgxMy44NEExLjkyLDEuOTIsMCwwLDAsMTIsNi4wNVY4SDcuMDhhMSwxLDAsMCwwLS43MS4yOUwyLjI5LDEyLjM4YTEsMSwwLDAsMC0uMjkuNzFWMTdIMTVWMTVhMSwxLDAsMCwxLDEtMWg0YTEsMSwwLDAsMSwxLDF2MkgzNFYxMy4wOEExLDEsMCwwLDAsMzMuNzEsMTIuMzhaTTIyLDhI''@;'; put 'put ''MTRWNmg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlV2luZG93Q2xvc2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQxLDE4bDcuMjktNy4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDEwLjcxLDkuMjlhMSwx''@;'; put 'put ''LDAsMCwwLTEuNDEsMS40MUwxNi41OSwxOCw5LjI5LDI1LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsNy4yOSw3LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlV2luZG93TWF4''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy44OSw5aC0yMGEyLDIsMCwwLDAtMiwyVjI1YTIsMiwwLDAsMCwyLDJoMjBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMjcuODksOVptLTIwLDE2VjExaDIwVjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIC8+JyksZS5DbHJTaGFwZVdpbmRvd01pbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjdIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlV2luZG93''@;'; put 'put ''UmVzdG9yZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsOEgxNGEyLDIsMCwwLDAtMiwydjJoMlYxMEgyOFYyMEgyNnYyaDJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMjgsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTIyLDE0SDhhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTZBMiwyLDAsMCwwLDIyLDE0Wk04LDI2VjE2SDIyVjI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFw''@;'; put 'put ''ZVpvb21Jbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYsNEExMiwxMiwwLDEsMCwyOCwxNiwxMiwxMiwwLDAsMCwxNiw0Wm0wLDIxLjkxQTEwLDEwLDAsMSwxLDI2LDE2LDEwLDEwLDAsMCwxLDE2LDI1LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzEsMjkuNjlsLTUuMTctNS4xN0ExMy42OCwxMy42OCwwLDAsMSwyNS4xNSwyNmw1LjE1LDUuMTVhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTIxLDE1SDE3VjExYTEsMSwwLDAsMC0yLDB2NEgxMWExLDEsMCwwLDAsMCwyaDR2NGExLDEsMCwwLDAsMiwwVjE3aDRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVab29tT3V0''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNiw0QTEyLDEyLDAsMSwwLDI4LDE2LDEyLDEyLDAsMCwwLDE2LDRabTAsMjEuOTFBMTAsMTAsMCwxLDEsMjYsMTYsMTAsMTAsMCwwLDEsMTYsMjUuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS43MSwyOS42OWwtNS4xNy01LjE3QTEzLjY4LDEzLjY4LDAsMCwxLDI1LjE1LDI2bDUuMTUsNS4xNWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjAsMTVIMTJhMSwxLDAsMCwwLDAsMmg4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlS2V5PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9IjYuMzMiIHk9IjEwLjcxIiB3aWR0aD0iOS43''@;'; put 'put ''MSIgaGVpZ2h0PSIyLjU3IiByeD0iMSIgcnk9IjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYz''@;'; put 'put ''QTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaTTMyLDMySDI4Ljg2bC0xLjc3''@;'; put 'put ''LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMGw1LjI2LDUuMjZhMywzLDAsMCwxLDAsNC4yNGwtMiwyTDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykgcm90YXRlKC00NSkiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M2E1LDUsMCwwLDAsLjYzLS43N0gyMi4yM2wtLjI5LDBMMjAuNTIsMTYuOCwzMiwyOC4yOFYzMkgyOC44NmwtMS43Ny0x''@;'; put 'put ''Ljc2di0yLjhIMjMuNDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBMMjAuMSw4LjA2bDEtMS43OUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUs''@;'; put 'put ''MCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEiIHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMjEgMTEuNDMpIHJvdGF0ZSgtNDUpIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYzQTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAs''@;'; put 'put ''MCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThh''@;'; put 'put ''MywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMGw1LjI2LDUuMjZhMywzLDAsMCwxLDAsNC4yNGwtMiwyTDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42QTUsNSwwLDAsMCwyNCw5LjFMMTguNzEs''@;'; put 'put ''My44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcsMTUuNjRhMSwxLDAsMCwxLTEuNDEsMGwt''@;'; put 'put ''LjQtLjRhMSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEsMSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIsMjguMjhaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42YTUsNSwwLDAsMCwuNjMtLjc3SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDIuMDktMy42MkwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1''@;'; put 'put ''LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEsMCwwLDEtMS40MSwwbC0uNC0uNGExLDEsMCwwLDEsMC0xLjQxTDEzLDguMzZhMSwx''@;'; put 'put ''LDAsMCwxLDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFs''@;'; put 'put ''ZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNkE1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCww''@;'; put 'put ''LDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFMMTMsOC4zNmExLDEsMCwwLDEsMS40''@;'; put 'put ''MSwwbC40LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlTGlicmFyeT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNDgs''@;'; put 'put ''MjkuNjMsMjYuNzQsMTEuODJhMiwyLDAsMCwwLTIuNTgtMS4xNkwyMSwxMS44NVY4LjkyQTEuOTIsMS45MiwwLDAsMCwxOS4wOCw3SDE0VjQuOTJBMS45MiwxLjkyLDAsMCwwLDEyLjA4LDNINUEyLDIsMCwwLDAsMyw1VjMyYTEsMSwwLDAsMCwxLDFIMjBhMSwxLDAsMCwwLDEtMVYxOS4yN2w1''@;'; put 'put ''LDEzLjIxYTEsMSwwLDAsMCwxLjI5LjU4bDUuNjEtMi4xNGExLDEsMCwwLDAsLjU4LTEuMjlaTTEyLDguODNWMzFINVY1aDdaTTE5LDMxSDE0VjloNVptOC41MS0uMjVMMjEuMTMsMTMuOTJsMy43NC0xLjQyLDYuMzksMTYuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi43NSwzSDUuMjVBMS4xNSwxLjE1LDAsMCwwLDQsNFYzM0gxNFY0QTEuMTUsMS4xNSwwLDAsMCwxMi43NSwzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMy43NywzMS4wOWwtNi45NC0xOC4zYTEsMSwwLDAsMC0xLjI5LS41OEwyMiwxMy41OVY5YTEsMSwwLDAsMC0xLTFIMTZWMzNoNlYxNC42OUwyOC45MywzM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUJvbHQ9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTEwLjUyLDM0aC0zYTEsMSwwLDAsMS0uODgtMS40NEwxMi41NSwyMUg2YTEsMSwwLDAsMS0uODUtMS41NGwxMC42OC0xN0ExLDEsMCwwLDEsMTYuNjQsMkgzMC4wN2ExLDEsMCwwLDEsLjc3LDEuNjlMMjEuNzgsMTRoNS4zOGExLDEsMCwwLDEsLjczLDEuNjZsLTE2''@;'; put 'put ''LjYzLDE4QTEsMSwwLDAsMSwxMC41MiwzNFpNOS4xOCwzMmguOTFMMjQuODYsMTZIMTkuNTlhMSwxLDAsMCwxLS43Ny0xLjY5TDI3Ljg4LDRIMTcuMTlMNy43NywxOUgxNC4yYTEsMSwwLDAsMSwuODgsMS40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjgsMi4yOUEuNDkuNDksMCwwLDAsMzAuMzUsMkgxNi40MmEuNS41LDAsMCwwLS40Mi4yM2wtMTAuNzEsMTdBLjQ5LjQ5LDAsMCwwLDUuNywyMGg3LjY3TDYuNiwzMy4yNWEuNTIuNTIsMCwwLDAsLjQ2Ljc1aDNhLjUuNSwwLDAsMCwuMzctLjE2''@;'; put 'put ''TDI4LDE0Ljg1YS41LjUsMCwwLDAtLjM3LS44NUgyMC44OUwzMC43MiwyLjgyQS40OS40OSwwLDAsMCwzMC44LDIuMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVXcmVuY2g9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjE4''@;'; put 'put ''LDI2LjExLDIwLjM1LDEzLjI4QTkuMjgsOS4yOCwwLDAsMCw3LjU0LDIuNzlsLTEuMzQuNTksNS4zOCw1LjM4TDguNzYsMTEuNTksMy4zOCw2LjIxLDIuNzksNy41NEE5LjI3LDkuMjcsMCwwLDAsMTMuMjgsMjAuMzVMMjYuMTEsMzMuMThhMiwyLDAsMCwwLDIuODMsMGw0LjI0LTQuMjRBMiwy''@;'; put 'put ''LDAsMCwwLDMzLjE4LDI2LjExWm0tNS42Niw1LjY2TDEzLjg4LDE4LjEybC0uNTcuMTZhNy4yNyw3LjI3LDAsMCwxLTkuMzEtNyw3LjIsNy4yLDAsMCwxLC4xNS0xLjQ4bDQuNjEsNC42MSw1LjY2LTUuNjZMOS44MSw0LjE1YTcuMjcsNy4yNywwLDAsMSw4LjQ3LDkuMTZsLS4xNi41N0wzMS43''@;'; put 'put ''NywyNy41M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjcuMTMiIGN5PSIyNy4wOSIgcj0iMS4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEuMjEgMjcuMTIpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43MywyNy43MiwxOS42NywxMy42NmE4Ljc5LDguNzksMCwwLDAtMTItMTAuNUwxMyw4LjUzLDguNTMsMTMsMy4xNiw3LjY3YTguNzksOC43OSwwLDAsMCwxMC41LDEyTDI3LjcyLDMz''@;'; put 'put ''LjczYTEuMDcsMS4wNywwLDAsMCwxLjUsMGw0LjUxLTQuNTFBMS4wNywxLjA3LDAsMCwwLDMzLjczLDI3LjcyWk0yOSwyOWExLjM4LDEuMzgsMCwxLDEsMC0yQTEuMzgsMS4zOCwwLDAsMSwyOSwyOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJT''@;'; put 'put ''aGFwZUJ1bGxzZXllPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsLjc3LDEuODZhMTQuMDcsMTQuMDcsMCwxLDEtMTAsMTBsLTEuODYtLjc4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjQ1LDE1LjdhMTAuODEsMTAuODEsMCwxLDAsOC4zLTguMjZMMTYuMzcsOUE5LjI0LDkuMjQsMCwxLDEsOSwxNi4zMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTE4LDIyLjA5YTQuMDgsNC4wOCwwLDAsMS00LTMuNjhsLTEuNjMtLjY4YzAsLjA5LDAsLjE4LDAsLjI3QTUuNjksNS42OSwwLDEsMCwxOCwxMi4zMWgtLjI0TDE4LjQzLDE0QTQuMDcsNC4wNywwLDAsMSwxOCwyMi4wOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguMiwxMy4zNGEuNS41LDAsMCwwLC4zNS4xNUgxMi4ybDUuMzcsNS4zN0ExLDEsMCwwLDAsMTksMTcuNDRMMTMuNTMsMTJWOC41MWEuNS41LDAsMCwwLS4xNS0uMzVMNy43OSwyLjU3YS41LjUsMCwwLDAtLjg1LjM1''@;'; put 'put ''djRIM2EuNS41LDAsMCwwLS4zNS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDE4Ljg1YTEsMSwwLDAsMS0xLjQxLDBsLTMtM0E0LDQsMCwwLDAsMTMuOTEsMTgsNC4wOSw0LjA5LDAsMSwwLDE4LDEz''@;'; put 'put ''LjkxYTQsNCwwLDAsMC0yLC41NWwzLDNBMSwxLDAsMCwxLDE5LDE4Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsMS42LDMuODlBMTEuODksMTEuODksMCwx''@;'; put 'put ''LDEsNi40OSwxNS4zTDIuNjEsMTMuNjhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxNS45NEExMC4xNywxMC4xNywwLDEsMCwxNiw4bDEuNjksNC4xMS4zMSwwQTUuODgsNS44OCww''@;'; put 'put ''LDEsMSwxMi4xMiwxOGMwLS4xMiwwLS4yMywwLS4zNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC4yLDEzLjM0YS41LjUsMCwwLDAsLjM1LjE1SDEyLjJsMi4zNSwyLjM1QTQuMDksNC4wOSwwLDAsMSwxNiwxNC40''@;'; put 'put ''NkwxMy41MywxMlY4LjUxYS41LjUsMCwwLDAtLjE1LS4zNUw3Ljc5LDIuNTdhLjUuNSwwLDAsMC0uODUuMzV2NEgzYS41LjUsMCwwLDAtLjM1Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlVGFyZ2V0PSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OCw3LjJBMTAuOCwxMC44LDAsMSwwLDI4LjgsMTgsMTAuODEsMTAuODEsMCwwLDAsMTgsNy4yWm0wLDIwQTkuMiw5LjIsMCwxLDEsMjcuMiwxOCw5LjIxLDkuMjEsMCwwLDEsMTgsMjcuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTE4LDEyLjMxQTUuNjksNS42OSwwLDEsMCwyMy42OSwxOCw1LjY5LDUuNjksMCwwLDAsMTgsMTIuMzFabTAsOS43N0E0LjA5LDQuMDksMCwxLDEsMjIuMDksMTgsNC4wOSw0LjA5LDAsMCwxLDE4LDIyLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSI0LjA5IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDcuODNBMTAuMTcsMTAuMTcsMCwxLDAsMjguMTcsMTgsMTAuMTgs''@;'; put 'put ''MTAuMTgsMCwwLDAsMTgsNy44M1ptMCwxNkE1Ljg4LDUuODgsMCwxLDEsMjMuODgsMTgsNS44OCw1Ljg4LDAsMCwxLDE4LDIzLjg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4''@;'; put 'put ''LDE2LDE2LDAsMCwwLDE4LDJabTAsMjcuODNBMTEuODMsMTEuODMsMCwxLDEsMjkuODMsMTgsMTEuODUsMTEuODUsMCwwLDEsMTgsMjkuODNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVGbGFtZT0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNMzEuMywxNi42NmMtMS4xOS0yLjA5LTcuOTQtMTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy43OCw0LjQyLDE5LjVBOS4zLDkuMywwLDAsMCwzLDI0LjYxQzMsMjkuNzIsNS44NiwzNCwxMS42Nywz''@;'; put 'put ''NEgyMi40OEMyOC4yOCwzNCwzMywyOSwzMywyMi43OEExMS4xMywxMS4xMywwLDAsMCwzMS4zLDE2LjY2Wk0yMi40OCwzMkgxMS43N0M4LjEzLDMyLDUsMjguNjYsNSwyNC42MWE3LjQzLDcuNDMsMCwwLDEsMS4xNi00LjEzYy43My0xLjI5LDQuMDUtNy4yMSw1LjY1LTEwLjA3bDMsNS4yOGEx''@;'; put 'put ''LDEsMCwwLDAsLjg3LjUxaDBhMSwxLDAsMCwwLC44Ny0uNTFMMjIuNDksNWMxLjg2LDMuMzMsNi4xNSwxMSw3LjA3LDEyLjZBOS4yNCw5LjI0LDAsMCwxLDMxLDIyLjc4QzMxLDI3Ljg3LDI3LjE4LDMyLDIyLjQ4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUuNzUsMjEuNzNjLS42NS0xLjE2LTQuMzgtNy44MS00LjM4LTcuODFhLjguOCwwLDAsMC0xLjQsMGwtNC4yLDcuNDgtMS41OS0yLjQ5YS44LjgsMCwwLDAtMS4zNSwwTDkuMzcsMjQuMzVhNC4zNSw0LjM1LDAsMCwwLS44MiwyLjYsNC40''@;'; put 'put ''OSw0LjQ5LDAsMCwwLC41LDJIMTFhMywzLDAsMCwxLS44My0yLDIuNzgsMi43OCwwLDAsMSwuNTYtMS43M2wyLjgtNC4zOCwxLjY2LDIuNmEuOC44LDAsMCwwLDEuNDEtLjEyLDcuODIsNy44MiwwLDAsMSwuNC0uOEwyMC42NywxNmwzLjY5LDYuNTdhNC44Myw0LjgzLDAsMCwxLC43NywyLjcx''@;'; put 'put ''QTUsNSwwLDAsMSwyMy40NiwyOWgyLjEzYTYuNjgsNi42OCwwLDAsMCwxLjE0LTMuNzQsNi40NSw2LjQ1LDAsMCwwLTEtMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMywxNi4zMmMtMS4xOS0yLjA5''@;'; put 'put ''LTcuOTQtMTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy40Myw0LjQyLDE5LjE1QTkuMyw5LjMsMCwwLDAsMywyNC4yNmMwLDUuMTEsMy44OCw5LjY1LDguNjcsOS43NEgyMi40OEMyOC4yOCwzNCwzMywyOC42''@;'; put 'put ''MiwzMywyMi40NEExMS4xMywxMS4xMywwLDAsMCwzMS4zLDE2LjMyWk0yMS40OCwzMkgxNC41NEE0LjY4LDQuNjgsMCwwLDEsMTAsMjcuNDFhMy45MSwzLjkxLDAsMCwxLC43NS0yLjM0bDMuMzUtNS4yMWEuNS41LDAsMCwxLC44NCwwbDEuNzgsMi43NywwLS4wOGMuNjMtMS4xMSw0LjIzLTcu''@;'; put 'put ''NDgsNC4yMy03LjQ4YS41LjUsMCwwLDEsLjg3LDBzMy42LDYuMzgsNC4yMyw3LjQ4QTUuODMsNS44MywwLDAsMSwyNywyNS43NkMyNywzMiwyMi4xLDMyLDIxLjQ4LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlSG91cmdsYXNzPSgw''@;'; put 'put ''LGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMUE2LjY3LDYuNjcsMCwwLDAsMjYsMTEuMDlWNGgzYTEsMSwwLDAs''@;'; put 'put ''MCwwLTJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcsMCwwLDAtMSwuNjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEs''@;'; put 'put ''MSwwLDAsMCwwLTJaTTEyLDI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCwwLDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYs''@;'; put 'put ''MCwwLDEsMTIsMTEuMDlWNEgyNHY3LjA5YTQuNjYsNC42NiwwLDAsMS0xLjg4LDMuNzJsLTEuMjgsMWgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAsMC0uNjUuOTR2MS4zNGExLDEsMCwwLDAsLjY1Ljk0LDQuNjcsNC42NywwLDAsMSwxLjE5LjYzbDEuMjgsMUE0LjY2LDQuNjYs''@;'; put 'put ''MCwwLDEsMjQsMjQuOTFWMzJIMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBh''@;'; put 'put ''Ni4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMWE2LjY0LDYuNjQsMCwwLDAsMS4wOS0xSDIyLjIzYTMuNjQsMy42NCwwLDAsMS0uNzgtLjA5bC0uNjIuNDZoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRhMSwxLDAsMCwwLC42NS45NCw0LjY3LDQuNjcs''@;'; put 'put ''MCwwLDEsMS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyVjI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQu''@;'; put 'put ''NjcsMCwwLDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEsMTIsMTEuMDlWNEgyMi40NUwyMy42LDJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcsMCwwLDAtMSwu''@;'; put 'put ''NjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44''@;'; put 'put ''NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMWE2LjY4LDYuNjgsMCwwLDAs''@;'; put 'put ''Mi41Ny00LjE2QTcuNTMsNy41MywwLDAsMSwyNCwxMC40OXYuNjFhNC42Niw0LjY2LDAsMCwxLTEuODgsMy43MmwtMS4yOCwxaDBhNC42Niw0LjY2LDAsMCwxLTEuMTguNjMsMSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0LjY3LDAsMCwxLDEuMTkuNjNsMS4y''@;'; put 'put ''OCwxQTQuNjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMlYyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEsMS4xOC0uNjMsMSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwxLDAsMCwwLS42NS0uOTQsNC42Nyw0LjY3LDAsMCwxLTEuMTktLjYz''@;'; put 'put ''bC0xLjI4LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjIuNzhhNy40NSw3LjQ1LDAsMCwxLC44OS0ySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIuNjksNS4zM2wxLjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBhNi4yNyw2LjI3LDAsMCwwLTEsLjYy''@;'; put 'put ''bC0xLjI4LDFBNi42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5''@;'; put 'put ''PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcsNGgyMmExLDEsMCwwLDAsMC0yaC0yMmExLDEsMCwxLDAsMCwyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Mi41NSwxNS42N0E2LjA3LDYuMDcsMCwwLDAsMjUsMTEuMTJWNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEuNDgsMTEuNDgsMCwwLDAsMi45MSwxLjcydjEuMTZhMTEuNDgsMTEuNDgsMCwwLDAtMi45MSwxLjcyLDYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4x''@;'; put 'put ''MkgyNVYyNC44MmE2LjA3LDYuMDcsMCwwLDAtMi40NS00LjU1LDExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4zOUExMS40OCwxMS40OCwwLDAsMCwyMi41NSwxNS42N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0SDIyLjQ1TDIzLjYsMkg2LjY3YTEsMSwwLDEs''@;'; put 'put ''MCwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjUxLDIwLjI3YTYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYyNC44MmE2LjA3LDYuMDcsMCwwLDAtMi40NS00''@;'; put 'put ''LjU1LDExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4zOWExMS40OCwxMS40OCwwLDAsMCwyLjkxLTEuNzJsLjMtLjI3aC0uNjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEuNDgsMTEuNDgsMCwwLDAs''@;'; put 'put ''Mi45MSwxLjcydjEuMTZBMTEuNDgsMTEuNDgsMCwwLDAsMTIuNTEsMjAuMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcsNEgyMi43OGE3LjQ1LDcuNDUsMCww''@;'; put 'put ''LDEsLjg5LTJoLTE3YTEsMSwwLDEsMCwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41NSwyMC4yN2ExMS40OCwxMS40OCwwLDAsMC0yLjkxLTEuNzJWMTcuMzlhMTEuNDgsMTEu''@;'; put 'put ''NDgsMCwwLDAsMi45MS0xLjcyQTYuMjUsNi4yNSwwLDAsMCwyNSwxMS41NSw3LjQ3LDcuNDcsMCwwLDEsMjIuNSw2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwxMS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNmExMS40OCwxMS40OCwwLDAsMC0yLjkxLDEuNzIs''@;'; put 'put ''Ni4wNyw2LjA3LDAsMCwwLTIuNDUsNC41NXY1LjEySDI1VjI0LjgyQTYuMDcsNi4wNywwLDAsMCwyMi41NSwyMC4yN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiBy''@;'; put 'put ''PSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZU5vQWNjZXNzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJa''@;'; put 'put ''bTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4xNSwxNUg4Ljg1QTEuODUsMS44NSwwLDAsMCw3LDE2Ljg1djIuMjlBMS44NSwxLjg1''@;'; put 'put ''LDAsMCwwLDguODUsMjFIMjcuMTVBMS44NSwxLjg1LDAsMCwwLDI5LDE5LjE1VjE2Ljg1QTEuODUsMS44NSwwLDAsMCwyNy4xNSwxNVptLjI1LDQuMTVhLjI1LjI1LDAsMCwxLS4yNS4yNUg4Ljg1YS4yNS4yNSwwLDAsMS0uMjUtLjI1VjE2Ljg1YS4yNS4yNSwwLDAsMSwuMjUtLjI1SDI3LjE1''@;'; put 'put ''YS4yNS4yNSwwLDAsMSwuMjUuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LjE1LDIwSDYuODVBLjg1Ljg1LDAsMCwxLDYsMTku''@;'; put 'put ''MTVWMTYuODVBLjg1Ljg1LDAsMCwxLDYuODUsMTZIMjkuMTVhLjg1Ljg1LDAsMCwxLC44NS44NXYyLjI5QS44NS44NSwwLDAsMSwyOS4xNSwyMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZU9yZ2FuaXphdGlvbj0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cG9seWdvbiBwb2ludHM9IjkuOCAxOC44IDI2LjIgMTguOCAyNi4yIDIxLjg4IDI3LjggMjEuODggMjcuOCAxNy4yIDE4LjggMTcuMiAxOC44IDE0IDE3LjIgMTQgMTcuMiAxNy4yIDguMiAxNy4yIDguMiAyMS44OCA5LjggMjEuODggOS44IDE4LjgiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDIzSDRhMiwyLDAsMCwwLTIsMnY2YTIsMiwwLDAsMCwyLDJIMTRhMiwyLDAsMCwwLDItMlYyNUEyLDIsMCwwLDAsMTQsMjNaTTQsMzFWMjVIMTR2NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDIzSDIyYTIsMiwwLDAsMC0yLDJ2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjVBMiwyLDAsMCwwLDMyLDIzWk0yMiwzMVYyNUgzMnY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsMTNIMjNhMiwyLDAsMCwwLDItMlY1YTIsMiwwLDAsMC0yLTJIMTNhMiwyLDAsMCwwLTIsMnY2QTIsMiwwLDAsMCwxMywxM1ptMC04SDIzdjZIMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOS44IDE4LjggMjYuMiAxOC44IDI2LjIgMjEuODggMjcuOCAyMS44OCAyNy44IDE3LjIgMTguOCAxNy4yIDE4LjggMTQgMTcuMiAxNCAxNy4yIDE3LjIgOC4yIDE3LjIgOC4yIDIxLjg4IDkuOCAyMS44OCA5LjggMTgu''@;'; put 'put ''OCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIzIiB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjIwIiB5PSIyMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIg''@;'; put 'put ''cnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZUJhbGFuY2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDMzSDEyYTEsMSwwLDAsMSwwLTJIMjRhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIyLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDdIOEExLDEsMCwwLDEsOCw1''@;'; put 'put ''SDI4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi45MywyNC43OWE3LjIzLDcuMjMsMCwwLDEtNS44MS0yLjg5bC0uNi0uOCwxLjU5LTEuMjEuNi44YTUuMjgsNS4yOCwwLDAsMCw4''@;'; put 'put ''LjQyLDBsLjYtLjgsMS41OSwxLjIxLS42LjhBNy4yMyw3LjIzLDAsMCwxLDI2LjkzLDI0Ljc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNTEsMTkuMjVhLjguOCwwLDAsMS0uNzMtLjQ4TDI2LjkzLDEy''@;'; put 'put ''LjJsLTIuODUsNi41N2EuOC44LDAsMCwxLTEuNDctLjY0TDI2LjIsOS44N2EuODMuODMsMCwwLDEsMS40NywwbDMuNTgsOC4yNmEuOC44LDAsMCwxLS43MywxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''OS42OCwyNC43OUE3LjIzLDcuMjMsMCwwLDEsMy44OCwyMS45bC0uNi0uOEw0Ljg2LDE5LjlsLjYuOGE1LjI4LDUuMjgsMCwwLDAsOC40MiwwbC42LS44LDEuNTksMS4yMS0uNi44QTcuMjMsNy4yMywwLDAsMSw5LjY4LDI0Ljc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjYsMTkuMjVhLjguOCwwLDAsMS0uNzMtLjQ4TDkuNjgsMTIuMiw2Ljg0LDE4Ljc3YS44LjgsMCwwLDEtMS40Ny0uNjRMOC45NSw5Ljg3YS44My44MywwLDAsMSwxLjQ3LDBMMTQsMTguMTNhLjguOCwwLDAsMS0uNzMsMS4x''@;'; put 'put ''MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPicpLGUuQ2xyU2hhcGVJZEJhZGdlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAsMCwxOCwyMlptMC02Ljg2YTIuNjMs''@;'; put 'put ''Mi42MywwLDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiwwLDAsMC0yLDJ2N2g4Wk0yMCw5SDE2''@;'; put 'put ''VjRoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMwVjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3YTEuMTMsMS4x''@;'; put 'put ''MywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw2SDI0VjhoNFYz''@;'; put 'put ''Mkg4VjhoNFY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjgsNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIyYTQuMjMsNC4yMyww''@;'; put 'put ''LDEsMC00LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0wLTYuODZhMi42MywyLjYzLDAsMSwxLTIuNjMsMi42M0EyLjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlhOC4zMyw4LjMzLDAsMCwxLDYuNCwyLjU5VjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwx''@;'; put 'put ''OCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOS44OSwxOS41Niw5SDE2VjRoNFY4LjI0bDItMy40NlY0YTIsMiwwLDAs''@;'; put 'put ''MC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3aDQuNjRBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS40VjMySDhWOGg0VjZIOEEy''@;'; put 'put ''LDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjJhNC4yMyw0LjIzLDAsMSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0YTIsMiwwLDAsMC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3aDhaTTIwLDlIMTZWNGg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43''@;'; put 'put ''M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJWMzJIOFY4aDRWNkg4QTIsMiwwLDAs''@;'; put 'put ''MCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5''@;'; put 'put ''PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSw0YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAs''@;'; put 'put ''MC0uMjYuNzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDZIMjNW''@;'; put 'put ''OGg1VjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwyOCw2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5LDIxLDYuNVY0''@;'; put 'put ''YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAs''@;'; put 'put ''MCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS40VjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgs''@;'; put 'put ''MTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwx''@;'; put 'put ''My4yMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xy''@;'; put 'put ''LWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZVJlcGVhdD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMTQuMTVBMy4xNywzLjE3LDAsMCwxLDkuMTcsMTFIMjguNGwtNC4yOCw0LjU0YTEsMSwwLDEsMCwxLjQ2''@;'; put 'put ''LDEuMzdMMzIuMDksMTAsMjUuNTgsMy4wOWExLDEsMCwxLDAtMS40NiwxLjM3TDI4LjQsOUg5LjE3QTUuMTcsNS4xNywwLDAsMCw0LDE0LjE1djYuMWwyLTIuMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMw''@;'; put 'put ''LDIxLjg1QTMuMTcsMy4xNywwLDAsMSwyNi44MywyNUg3LjZsNC4yOC00LjU0YTEsMSwwLDEsMC0xLjQ2LTEuMzdMMy45MSwyNmw2LjUxLDYuOTFhMSwxLDAsMSwwLDEuNDYtMS4zN0w3LjYsMjdIMjYuODNBNS4xNyw1LjE3LDAsMCwwLDMyLDIxLjg1di02LjFsLTIsMi4xMloiLz4nKSxlLkNs''@;'; put 'put ''clNoYXBlRmlsZUdyb3VwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMzRIMTNhMSwxLDAsMCwxLTEtMVYxMWExLDEsMCwwLDEsMS0xSDMxYTEsMSwwLDAsMSwxLDFWMzNBMSwxLDAsMCwxLDMxLDM0Wk0x''@;'; put 'put ''NCwzMkgzMFYxMkgxNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxNiIgeT0iMTYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgeD0iMTYiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE2IiB5PSIyNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNNiwyNFY0SDI0VjNhMSwxLDAsMCwwLTEtMUg1QTEsMSwwLDAsMCw0LDNWMjVhMSwxLDAsMCwwLDEsMUg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTYiIGQ9Ik0xMCwyOFY4SDI4VjdhMSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMxLDEwSDEzYTEsMSwwLDAs''@;'; put 'put ''MC0xLDFWMzNhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMS0xVjExQTEsMSwwLDAsMCwzMSwxMFpNMjgsMjZIMTZWMjRIMjhabTAtNEgxNlYyMEgyOFptMC00SDE2VjE2SDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTYsMjRWNEgyNFYzYTEsMSwwLDAsMC0xLTFINUExLDEsMCwwLDAsNCwzVjI1YTEsMSwwLDAsMCwxLDFINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMCwyOFY4SDI4VjdhMSwxLDAsMCwwLTEtMUg5QTEsMSww''@;'; put 'put ''LDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPicpLGUuQ2xyU2hhcGVQYXBlcmNsaXA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjQyLDMyLjZBNi4zLDYuMywwLDAsMSw0LDMwLjc5bC0uMTMtLjEz''@;'; put 'put ''QTYuMiw2LjIsMCwwLDEsMiwyNi4yMiw2Ljc3LDYuNzcsMCwwLDEsNCwyMS40TDE5LjUsNi4wN2E4LjY3LDguNjcsMCwwLDEsMTIuMTUtLjM1QTgsOCwwLDAsMSwzNCwxMS40NGE5LDksMCwwLDEtMi43LDYuMzZMMTcuMzcsMzEuNkExLDEsMCwxLDEsMTYsMzAuMThMMjkuODksMTYuMzhBNyw3''@;'; put 'put ''LDAsMCwwLDMyLDExLjQ0YTYsNiwwLDAsMC0xLjc2LTQuMyw2LjY3LDYuNjcsMCwwLDAtOS4zNC4zNUw1LjQ1LDIyLjgyQTQuNzgsNC43OCwwLDAsMCw0LDI2LjIyYTQuMjEsNC4yMSwwLDAsMCwxLjI0LDNsLjEzLjEzYTQuNjQsNC42NCwwLDAsMCw2LjUtLjIxTDI1LjIyLDE1Ljk0QTIuNywy''@;'; put 'put ''LjcsMCwwLDAsMjYsMTRhMi4zNSwyLjM1LDAsMCwwLS42OS0xLjY4LDIuNjEsMi42MSwwLDAsMC0zLjY2LjEzbC05LjIsOS4xMmExLDEsMCwxLDEtMS40MS0xLjQyTDIwLjI4LDExYTQuNjIsNC42MiwwLDAsMSw2LjQ4LS4xM0E0LjMzLDQuMzMsMCwwLDEsMjgsMTRhNC42OCw0LjY4LDAsMCwx''@;'; put 'put ''LTEuNDEsMy4zNEwxMy4yOCwzMC41OEE2LjkxLDYuOTEsMCwwLDEsOC40MiwzMi42WiIvPicpLGUuQ2xyU2hhcGVTaHJpbms9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgyMi40MWw5LjI1LTkuMjVh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEtMS40MUwyMSwxMy41OVY0YTEsMSwwLDAsMC0yLDBWMTdIMzJhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNCwxOWExLDEsMCwwLDAsMCwyaDkuNTlMNC4zMywz''@;'; put 'put ''MC4yNWExLDEsMCwxLDAsMS40MSwxLjQxTDE1LDIyLjQxVjMyYTEsMSwwLDAsMCwyLDBWMTlaIi8+JyksZS5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC40NCwzMS45NGE3LjMxLDcuMzEsMCwwLDEtNS43LTExLjg4TDcuMzIsMTguNjRhOS4z''@;'; put 'put ''LDkuMywwLDAsMCwxMy4xLDEzLjExTDE5LDMwLjMzQTcuMjksNy4yOSwwLDAsMSwxNC40NCwzMS45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LjM2LDEuNjdhNC4xMiw0LjEyLDAsMSwwLDQuMTEsNC4x''@;'; put 'put ''MUE0LjEyLDQuMTIsMCwwLDAsMjUuMzYsMS42N1ptMCw2LjIzYTIuMTIsMi4xMiwwLDEsMSwyLjExLTIuMTJBMi4xMiwyLjEyLDAsMCwxLDI1LjM2LDcuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU2''@;'; put 'put ''LDE4LjE4aC01YTEsMSwwLDAsMC0uMjQuMDVsMy4wOS0zLjU1YTIuODMsMi44MywwLDAsMC0uNjktNC4zM2wtOC00LjZhMSwxLDAsMCwwLTEuMTIuMDhMOS44Myw5LjU4QTEsMSwwLDAsMCw5LjY2LDExYTEsMSwwLDAsMCwuNzkuMzgsMSwxLDAsMCwwLC42MS0uMjFsNC4yNy0zLjM0LDMuMTEs''@;'; put 'put ''MS43Ny01LjA4LDUuNzhoMGE5LjI4LDkuMjgsMCwwLDAtNC41MywxLjgzbDEuNDMsMS40M0E3LjMsNy4zLDAsMCwxLDIwLjQyLDI4LjgxbDEuNDIsMS40M2E5LjI3LDkuMjcsMCwwLDAsLjc3LTEwLjA2aDIuODJsLS43Nyw2LjUxYTEsMSwwLDAsMCwuODgsMS4xMWguMTJhMSwxLDAsMCwwLDEt''@;'; put 'put ''Ljg4bC45LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjU2LDE4LjE4Wm0tNi4zNy03LjU2LDIuNTIsMS40NmEuNzkuNzksMCwwLDEsLjQuNTkuODEuODEsMCwwLDEtLjIuNjlMMTkuNzUsMTdBOS4xNyw5LjE3LDAsMCwwLDE2LDE1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzcsMzEuOTRhNy4zMSw3LjMxLDAsMCwxLTUuNy0xMS44OEw3LjY1LDE4LjY0YTkuMyw5LjMsMCwwLDAsMTMuMSwxMy4xMWwtMS40Mi0xLjQyQTcuMjksNy4yOSwwLDAsMSwxNC43NywzMS45NFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNjUsMi4xYTMuMTIsMy4xMiwwLDEsMCwzLjExLDMuMTJBMy4xMiwzLjEyLDAsMCwwLDI2LjY1LDIuMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODEsMTguMThIMjEuNDdxLS4zMS0uMzMtLjY2LS42M2w0LjM4LTQuODZhMi4xNCwyLjE0LDAsMCwwLS41My0zLjI3TDIwLjksNy4yM2wwLDBMMTcuMDUsNS4wN2ExLDEsMCwwLDAtMS4xMS4wOEwxMS4xNSw4LjlhMSwxLDAsMCwwLDEu''@;'; put 'put ''MjMsMS41OGw0LjI3LTMuMzQsMi44NywxLjYzTDEzLjYsMTUuMzlhOS4zMyw5LjMzLDAsMCwwLTQuNDQsMS44MmwxLjQyLDEuNDNBNy4zLDcuMywwLDAsMSwyMC43NSwyOC44MWwxLjQzLDEuNDNBOS4yNyw5LjI3LDAsMCwwLDIzLDIwLjE4aDIuNzRsLS43Nyw2LjUxYTEsMSwwLDAsMCwuODcs''@;'; put 'put ''MS4xMWguMTJhMSwxLDAsMCwwLDEtLjg4bC45LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjgxLDE4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlQWNjZXNzaWJpbGl0eTI9KDAsYS5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTMwLjA2LDExaC0yNGExLDEsMCwxLDAsMCwySDE0djkuNjVzMCwwLDAsMGwtMy43NSwxMGExLDEsMCwwLDAsLjU4LDEuMjksMS4xMywxLjEzLDAsMCwwLC4zNi4wNiwxLDEsMCwwLDAsLjkzLS42NUwxNS42MiwyNGg0Ljc2bDMuNTIsOS4zNWExLDEsMCwwLDAsLjkzLjY1LDEuMTMs''@;'; put 'put ''MS4xMywwLDAsMCwuMzYtLjA2LDEsMSwwLDAsMCwuNTgtMS4yOUwyMiwyMi42OHMwLDAsMCwwVjEzaDguMDZhMSwxLDAsMSwwLDAtMlpNMjAsMjJIMTZWMTNoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4''@;'; put 'put ''LDEwYTQsNCwwLDEsMC00LTRBNCw0LDAsMCwwLDE4LDEwWm0wLTZhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcuOTYiIGN5PSI1IiByPSIzIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDZhMSwxLDAsMCwwLDAsMmg4djguMzZzMCwwLDAsMEwxMC4xMSwzMy4xN2ExLDEsMCwwLDAsLjY2LDEuMjUsMS41NSwxLjU1LDAsMCwwLC4yOSwwLDEsMSwwLDAsMCwxLS43''@;'; put 'put ''MWwzLjI5LTEwLjg0aDUuMzhMMjQsMzMuNzVhMSwxLDAsMCwwLDEsLjcxLDEuNTUsMS41NSwwLDAsMCwuMjksMCwxLDEsMCwwLDAsLjY2LTEuMjVMMjIsMjAuNHMwLDAsMCwwVjEyaDhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+Jyks''@;'; put 'put ''ZS5DbHJTaGFwZVNvcnRCeT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjguNTQsMTNINy40NmExLDEsMCwwLDEsMC0ySDI4LjU0YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''MS4xNywxOUg3LjQ2YTEsMSwwLDAsMSwwLTJIMjEuMTdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjc0LDI1SDcuNDZhMSwxLDAsMCwxLDAtMmg2LjI4YTEsMSwwLDAsMSwwLDJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlQ29sbGFwc2VDYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyMUgzYTEsMSwwLDAsMC0xLDF2NmExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWMjJBMSwxLDAs''@;'; put 'put ''MCwwLDMzLDIxWm0tMSw2SDRWMjNIMzJaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC4yMmw1LjY1LTUuNjVhLjgxLjgxLDAsMCwwLDAtMS4xNC44LjgsMCwwLDAtMS4xMywwTDE4LDE4bC00LjUyLTQu''@;'; put 'put ''NTJhLjguOCwwLDAsMC0xLjEzLDAsLjgxLjgxLDAsMCwwLDAsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjIybDUuNjUtNS42NWEuODEuODEsMCwwLDAsMC0xLjE0LjguOCwwLDAsMC0xLjEz''@;'; put 'put ''LDBMMTgsMTIsMTMuNDgsNy40M2EuOC44LDAsMCwwLTEuMTMsMCwuODEuODEsMCwwLDAsMCwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSIyMiIgd2lkdGg9IjMyIiBoZWlnaHQ9IjgiIHJ4PSIx''@;'; put 'put ''IiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC43bC01Ljc5LTUuNzlhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDE4LDE3Ljg3bDQuMzgtNC4zN2ExLDEsMCwwLDEsMS40MSwwLDEs''@;'; put 'put ''MSwwLDAsMSwwLDEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjUsMTIuMjEsOC43MWExLDEsMCwwLDEsMC0xLjQyLDEsMSwwLDAsMSwxLjQxLDBMMTgsMTEuNjdsNC4zOC00LjM4YTEsMSwwLDAsMSwx''@;'; put 'put ''LjQxLDAsMSwxLDAsMCwxLDAsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUV4cGFuZENhcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDZIM0ExLDEsMCwwLDAsMiw3VjI5YTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAs''@;'; put 'put ''MCwwLDEtMVY3QTEsMSwwLDAsMCwzMyw2Wk0zMiwyOEg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjQ4LDE1Ljg2LDE4LDExLjM0bDQuNTIsNC41MmEuNzcuNzcsMCwwLDAsLjU2LjI0LjgxLjgx''@;'; put 'put ''LDAsMCwwLC41Ny0xLjM3TDE4LDkuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNDgsMjEuODYsMTgsMTcuMzRsNC41Miw0LjUyYS43Ny43Nyww''@;'; put 'put ''LDAsMCwuNTYuMjQuODEuODEsMCwwLDAsLjU3LTEuMzdMMTgsMTUuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNkgzQTEsMSwwLDAsMCwyLDdW''@;'; put 'put ''MjlhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDMzLDZaTTIzLjc5LDIxLjQxYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTdsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsMTQuMiwyMy43OSwyMEExLDEsMCwwLDEsMjMuNzks''@;'; put 'put ''MjEuNDFabTAtNi4yYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTAuODNsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsOGw1Ljc5LDUuNzlBMSwxLDAsMCwxLDIzLjc5LDE1LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4n''@;'; put 'put ''KSxlLkNsclNoYXBlQnJpZWZjYXNlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiwyOGEwLDAsMCwwLDEsMCwwSDRWMjEuMzJhNy4xLDcuMSwwLDAsMS0yLTEuNDNWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5Ljg5YTYuNzQsNi43NCwwLDAsMS0yLDEuNDJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yNSwyMi40YTEsMSwwLDAsMCwxLTFWMTUuOTRIMjRWMThIMTR2MkgyNHYxLjRBMSwxLDAsMCwwLDI1LDIyLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz5cbjxwYXRoIGQ9Ik0zMyw2SDI0VjQuMzhBMi40MiwyLjQyLDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQyLDIuNDIsMCwwLDAsMTIsNC4zOFY2SDNBMSwxLDAsMCwwLDIsN3Y4YTUsNSwwLDAsMCw1LDVoM3YxLjRhMSwxLDAsMCwwLDIsMFYxNS45NEgxMFYxOEg3YTMsMywwLDAsMS0zLTNWOEgz''@;'; put 'put ''MnY3YTMsMywwLDAsMS0zLDNIMjh2MmgxYTUsNSwwLDAsMCw1LTVWN0ExLDEsMCwwLDAsMzMsNlpNMjIsNkgxNFY0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMTFhLjQzLjQzLDAsMCwxLC40NC40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxu''@;'; put 'put ''PHBhdGggZD0iTTMwLDE4QTQuMDYsNC4wNiwwLDAsMCwzNCwxNFY2SDI0VjQuNDNBMi40NCwyLjQ0LDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQ0LDIuNDQsMCwwLDAsMTIsNC40M1Y2SDJ2OEE0LjA2LDQuMDYsMCwwLDAsNi4wNSwxOGg0VjE1LjkyaDJ2NS43YTEsMSwwLDEsMS0yLDBWMjAuMDZI''@;'; put 'put ''Ni4wNkE2LjA2LDYuMDYsMCwwLDEsMiwxOC40OXY5LjQ1YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOC40OWE2LDYsMCwwLDEtNC4wNiwxLjU3SDI4VjE4Wk0xNCw0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMWEuNDUuNDUsMCwwLDEsLjQ1LjQzVjZIMTRaTTI2LDIxLjYy''@;'; put 'put ''YTEsMSwwLDEsMS0yLDBWMjAuMDZIMTRWMThIMjRWMTUuOTJoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUNvbG9yUGlja2VyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMC4wNWE1LjA3LDUuMDcsMCwwLDAsLjEtNy4x''@;'; put 'put ''N0E1LjA2LDUuMDYsMCwwLDAsMjYsM0wyMC43OCw4LjE1YTIuMTMsMi4xMywwLDAsMS0zLDBsLS42Ny0uNjdMMTUuNzIsOC45MiwyNy4wOCwyMC4yOGwxLjQyLTEuNDItLjY3LS42N2EyLjEzLDIuMTMsMCwwLDEsMC0zWk0yNi40NCwxMy44YTQuMDcsNC4wNywwLDAsMC0xLjA4LDEuOTJsLTUu''@;'; put 'put ''MDgtNS4wOEE0LjA3LDQuMDcsMCwwLDAsMjIuMiw5LjU2bDUuMTYtNS4xN2EzLjA5LDMuMDksMCwwLDEsNC4zNS0uMSwzLjA5LDMuMDksMCwwLDEtLjEsNC4zNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTcuMywzMS41MWEyLDIs''@;'; put 'put ''MCwxLDEtMi44My0yLjgzTDE4LjU4LDE0LjU3bC0xLjQyLTEuNDFMMy4wNSwyNy4yN2E0LDQsMCwwLDAtLjY4LDQuOEwuODksMzMuNTVBMSwxLDAsMCwwLC44OSwzNWExLDEsMCwwLDAsMS40MiwwbDEuNDMtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42LDQuMDYsNC4wNiwwLDAsMCwyLjg4''@;'; put 'put ''LTEuMkwyMi44MiwxOC44MSwyMS40MSwxNy40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMzMuNzMsMi4xMWE0LjA5LDQuMDksMCwwLDAtNS43Ni4xTDIyLjgxLDcuMzhhMy4xMywzLjEzLDAsMCwxLTQuMy4xMUwxNy4wOSw4Ljkx''@;'; put 'put ''LDI3LDE4Ljc5bDEuNDItMS40MkEzLjE4LDMuMTgsMCwwLDEsMjguNDYsMTNsNS4xNy01LjE3QTQuMDgsNC4wOCwwLDAsMCwzMy43MywyLjExWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yMi4xOCwxNi43OSw3LjQ2LDMxLjUxYTIsMiww''@;'; put 'put ''LDEsMS0yLjgyLTIuODNMMTkuMzUsMTRsLTEuNDEtMS40MUwzLjIyLDI3LjI3YTQsNCwwLDAsMC0uNjgsNC44TDEuMDYsMzMuNTVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwbDEuNDQtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42LDQuMDYsNC4wNiwwLDAsMCwyLjg4LTEu''@;'; put 'put ''MkwyMy42LDE4LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi42LDRIMjEuNTVhMy44OSwzLjg5LDAsMCwwLTcuMzEsMEgxMy40QTIuNDEsMi40MSww''@;'; put 'put ''LDAsMCwxMSw2LjRWMTBIMjVWNi40QTIuNDEsMi40MSwwLDAsMCwyMi42LDRaTTIzLDhIMTNWNi4yNUEuMjUuMjUsMCwwLDEsMTMuMjUsNmgyLjY5bC4xMi0xLjExQTEuMjQsMS4yNCwwLDAsMSwxNi42MSw0YTIsMiwwLDAsMSwzLjE1LDEuMThsLjA5Ljg0aDIuOWEuMjUuMjUsMCwwLDEsLjI1''@;'; put 'put ''LjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuMjUsMTguMDZIMjEuMzNsMi44NC0yLjgzYTEsMSwwLDEsMC0xLjQyLTEuNDJMMTcuNSwxOS4wNmw1LjI1LDUuMjVhMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLTEu''@;'; put 'put ''N2wtMi44NC0yLjg0SDMzLjI1YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0yOSwxNmgyVjYuNjhBMS42NiwxLjY2LDAsMCwwLDI5LjM1LDVIMjcuMDhWN0gyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTI5LDMxSDdWN0g5VjVINi42NEExLjY2LDEuNjYsMCwwLDAsNSw2LjY3VjMxLjMyQTEuNjYsMS42NiwwLDAsMCw2LjY1LDMzSDI5LjM2QTEuNjYsMS42NiwwLDAsMCwzMSwzMS4zM1YyMi4wNkgyOVoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVEcmFnSGFuZGxlPSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjE1IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTUiIGN5''@;'; put 'put ''PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUgY3g9IjIxIiBjeT0iMjQiIHI9IjEu''@;'; put 'put ''NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMjEiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIxNSIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGUuQ2xyU2hhcGVGaWx0ZXIyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPlxuPHBhdGggZD0iTTI4LDE3SDhhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMjMsMjNIMTNhMSwxLDAsMCwwLDAsMkgyM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZU1vb249KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDI3LjE5YTEsMSwwLDAsMC0xLS41NmMtLjI4LDAtLjU2LDAtLjg1LDBBMTEsMTEsMCwwLDEsMjQuOTIsNS42MWExLDEsMCwwLDAsLjYx''@;'; put 'put ''LTEsMSwxLDAsMCwwLS42Ny0uOTEsMTQuNywxNC43LDAsMCwwLTUtLjg3LDE1LjEyLDE1LjEyLDAsMCwwLDAsMzAuMjQsMTQuNzgsMTQuNzgsMCwwLDAsMTEtNC44MUExLDEsMCwwLDAsMzEsMjcuMTlaTTE5Ljg5LDMxLjEyYTEzLjEyLDEzLjEyLDAsMCwxLDAtMjYuMjQsMTEuODEsMTEuODEs''@;'; put 'put ''MCwwLDEsMiwuMTYsMTMsMTMsMCwwLDAsNS43MiwyMy41M0ExMi43NSwxMi43NSwwLDAsMSwxOS44OSwzMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI5LjIsMjYuNzJBMTIuMDcsMTIuMDcsMCwwLDEsMjIuOSw0LjQ0LDEz''@;'; put 'put ''LjY4LDEzLjY4LDAsMCwwLDE5LjQ5LDRhMTQsMTQsMCwwLDAsMCwyOCwxMy44MiwxMy44MiwwLDAsMCwxMC45LTUuMzRBMTEuNzEsMTEuNzEsMCwwLDEsMjkuMiwyNi43MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVN1bj0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTgsNi4zMWExLDEsMCwwLDAsMS0xVjEuOTFhMSwxLDAsMCwwLTIsMHYzLjRBMSwxLDAsMCwwLDE4LDYuMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0xOCwyOS42OWExLDEsMCwwLDAtMSwx''@;'; put 'put ''djMuNGExLDEsMCwwLDAsMiwwdi0zLjRBMSwxLDAsMCwwLDE4LDI5LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNOC4zMiw5Ljc0QTEsMSwwLDAsMCw5LDEwYTEsMSwwLDAsMCwuNzEtLjI5LDEsMSwwLDAsMCwwLTEuNDJMNy4z''@;'; put 'put ''Myw1LjkyQTEsMSwwLDAsMCw1LjkyLDcuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNjgsMjYuMjZhMSwxLDAsMSwwLTEuNDIsMS40MmwyLjQxLDIuNGExLDEsMCwwLDAsLjcxLjMsMSwxLDAsMCwwLC43LS4zLDEsMSwwLDAs''@;'; put 'put ''MCwwLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNNi4zMSwxOGExLDEsMCwwLDAtMS0xSDEuOTFhMSwxLDAsMCwwLDAsMmgzLjRBMSwxLDAsMCwwLDYuMzEsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNSIgLz48cGF0aCBkPSJNMzQuMDksMTdoLTMuNGExLDEsMCwxLDAsMCwyaDMuNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTguMzIsMjYuMjZsLTIuNCwyLjQxYTEsMSwwLDAsMCwuNywxLjcxLDEs''@;'; put 'put ''MSwwLDAsMCwuNzEtLjNsMi40MS0yLjRhMSwxLDAsMSwwLTEuNDItMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0yNywxMGExLDEsMCwwLDAsLjcxLS4yOWwyLjQtMi40MWExLDEsMCwwLDAsMC0xLjQxLDEsMSwwLDAsMC0xLjQx''@;'; put 'put ''LDBsLTIuNDEsMi40YTEsMSwwLDAsMCwwLDEuNDJBMSwxLDAsMCwwLDI3LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHBhdGggZD0iTTE4LjEzLDcuNzVhMTAuMTMsMTAuMTMsMCwxLDAsMTAsMTAuMTNBMTAuMDgsMTAuMDgsMCwwLDAsMTguMTMs''@;'; put 'put ''Ny43NVptMCwxOC4yNWE4LjEzLDguMTMsMCwxLDEsOC04LjEyQTguMDgsOC4wOCwwLDAsMSwxOC4xMywyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPjxwYXRoIGQ9Ik0xOCw2LjQyYTEsMSwwLDAsMCwxLTFWMS45MWExLDEsMCwwLDAtMiwwVjUuNDJB''@;'; put 'put ''MSwxLDAsMCwwLDE4LDYuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyOS41OGExLDEsMCwwLDAtMSwxdjMuNTFhMSwxLDAsMCwwLDIsMFYzMC41OEExLDEsMCwwLDAsMTgsMjkuNThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik04LjQsOS44MUExLDEsMCwwLDAsOS44MSw4LjRMNy4zMyw1LjkyQTEsMSwwLDAsMCw1LjkyLDcuMzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNy42LDI2LjE5YTEsMSwwLDAsMC0xLjQxLDEu''@;'; put 'put ''NDFsMi40OCwyLjQ4YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LjQyLDE4YTEsMSwwLDAsMC0xLTFIMS45MWExLDEsMCwwLDAsMCwySDUuNDJBMSwxLDAsMCwwLDYuNDIsMThaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zNC4wOSwxN0gzMC41OGExLDEsMCwwLDAsMCwyaDMuNTFhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+PHBhdGggZD0iTTguNCwyNi4xOSw1LjkyLDI4LjY3YTEsMSww''@;'; put 'put ''LDAsMCwxLjQxLDEuNDFMOS44MSwyNy42QTEsMSwwLDAsMCw4LjQsMjYuMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC03IiAvPjxwYXRoIGQ9Ik0yNy42LDkuODFsMi40OC0yLjQ4YTEsMSwwLDAsMC0xLjQxLTEuNDFMMjYuMTksOC40QTEsMSwwLDAsMCwyNy42LDku''@;'; put 'put ''ODFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04IiAvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjEwIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC05IiAvPicpLGUuQ2xyU2hhcGVXYW5kPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQuMSw0LDMxLjcxLDEuNmExLjgzLDEuODMsMCwwLDAtMS4zMS0uNTRoMGEyLjA1LDIuMDUsMCwwLDAtMS40NS42MkwxLjc2LDI5LjIzQTIsMiwwLDAsMCwxLjY4LDMybDIuNCwyLjQzQTEuODMsMS44MywwLDAsMCw1''@;'; put 'put ''LjM5LDM1aDBhMi4wNSwyLjA1LDAsMCwwLDEuNDUtLjYyTDM0LDYuNzlBMiwyLDAsMCwwLDM0LjEsNFpNNS40MiwzMi45MywzLjE2LDMwLjY1aDBMMjQuMTEsOS40M2wyLjI1LDIuMjhaTTMyLjYxLDUuMzlsLTUuMTIsNS4xOEwyNS4yNCw4LjI5bDUuMTMtNS4yLDIuMjUsMi4yOFoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuNTMsMjAuNDdsMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0yLjA5LDIuMDktMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMywxLjEzbDIuMDksMi4wOS0yLjA5LDIu''@;'; put 'put ''MDlhLjguOCwwLDAsMCwxLjEzLDEuMTNsMi4wOS0yLjA5LDIuMDksMi4wOWEuOC44LDAsMCwwLDEuMTMtMS4xM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQuNzgsNi41MWEuOC44LDAsMCwwLDEuMTMsMEwx''@;'; put 'put ''Ny40LDVsMS40OSwxLjQ5QS44LjgsMCwwLDAsMjAsNS4zOEwxOC41NCwzLjg5LDIwLDIuNGEuOC44LDAsMCwwLTEuMTMtMS4xM0wxNy40LDIuNzYsMTUuOTEsMS4yN0EuOC44LDAsMSwwLDE0Ljc4LDIuNGwxLjQ5LDEuNDlMMTQuNzgsNS4zOEEuOC44LDAsMCwwLDE0Ljc4LDYuNTFaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTguMzMsMTUuMjZhLjguOCwwLDAsMCwxLjEzLDBsMS4xNi0xLjE2LDEuMTYsMS4xNmEuOC44LDAsMSwwLDEuMTMtMS4xM0wxMS43NiwxM2wxLjE2LTEuMTZhLjguOCwwLDEsMC0x''@;'; put 'put ''LjEzLTEuMTNsLTEuMTYsMS4xNkw5LjQ2LDEwLjY4YS44LjgsMCwxLDAtMS4xMywxLjEzTDkuNDksMTMsOC4zMywxNC4xM0EuOC44LDAsMCwwLDguMzMsMTUuMjZaIi8+JyksZS5DbHJTaGFwZUN1cnNvck1vdmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSww''@;'; put 'put ''LDAsMC0xLjQyLDAsMSwxLDAsMCwwLDAsMS40MUwzMC4xNCwxN0gxOVY1Ljg2bDIuNjksMi43YTEsMSwwLDAsMCwxLjQxLDAsMSwxLDAsMCwwLDAtMS40MkwxOCwyLDEyLjg5LDcuMTVhMSwxLDAsMCwwLS4yOS43MSwxLDEsMCwwLDAsMS43MS43TDE3LDUuODZWMTdINS44NmwyLjctMi42OWEx''@;'; put 'put ''LDEsMCwwLDAsMC0xLjQxLDEsMSwwLDAsMC0xLjQyLDBMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjctMS43MUw1Ljg2LDE5SDE3VjMwLjE0bC0yLjY5LTIuN2ExLDEsMCwwLDAtMS43MS43LDEsMSwwLDAsMCwuMjkuNzFMMTgsMzRsNS4xMS01LjE0YTEsMSww''@;'; put 'put ''LDAsMCwwLTEuNDIsMSwxLDAsMCwwLTEuNDEsMEwxOSwzMC4xNFYxOUgzMC4xNGwtMi43LDIuNjlhMSwxLDAsMCwwLC43LDEuNzEsMSwxLDAsMCwwLC43MS0uMjlMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlQ2xvbmU9''@;'; put 'put ''KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsNkgyMnY0aDJWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMjJINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxMkgxNGEyLDIs''@;'; put 'put ''MCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEEyLDIsMCwwLDAsMzAsMTJabTAsMThIMTRWMTRIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cG9seWdvbiBwb2ludHM9IjIxIDI4IDIzIDI4IDIzIDIzIDI4IDIz''@;'; put 'put ''IDI4IDIxIDIzIDIxIDIzIDE2IDIxIDE2IDIxIDIxIDE2IDIxIDE2IDIzIDIxIDIzIDIxIDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMTBWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''aDRWMTJhMiwyLDAsMCwxLDItMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDEySDE0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0QTIsMiwwLDAsMCwzMCwxMlpNMjgsMjNIMjN2NUgyMVYy''@;'; put 'put ''M0gxNlYyMWg1VjE2aDJ2NWg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlRGV0YWlscz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTksMTRIMjdhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgLz48cGF0aCBkPSJNOSwxOEgyN2ExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik05LDIySDE5YTEsMSwwLDAsMCwwLTJIOWExLDEsMCwwLDAsMCwyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xOSwyMkg5YTEsMSwwLDAsMSwwLTJIMTlhMSwxLDAsMCwxLDAsMlptOC00SDlhMSwx''@;'; put 'put ''LDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWm0wLTRIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUg''@;'; put 'put ''Y3g9IjEyIiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSIxOCIgY3k9''@;'; put 'put ''IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMjQiIGN5PSIyNCIgcj0iMS41''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGUuQ2xyU2hhcGVFcmFzZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTM1LjYyLDEyYTIuODIsMi44MiwwLDAsMC0uODQtMkwyNy40OSwyLjY1YTIuOSwyLjksMCwwLDAtNCwwTDIuODMsMjMuMjhhMi44NCwyLjg0LDAsMCwwLDAsNEw3LjUzLDMySDNhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0ySDE2Ljc0bDE4LTE4QTIuODIsMi44MiwwLDAs''@;'; put 'put ''MCwzNS42MiwxMlpNMTMuOTEsMzJIMTAuMzZMNC4yNSwyNS44OWEuODQuODQsMCwwLDEsMC0xLjE5bDUuNTEtNS41Miw4LjQ5LDguNDhaTTMzLjM3LDEyLjU0LDE5LjY2LDI2LjI1bC04LjQ4LTguNDksMTMuNy0xMy43YS44Ni44NiwwLDAsMSwxLjE5LDBsNy4zLDcuMjlhLjg2Ljg2LDAsMCwx''@;'; put 'put ''LC4yNS42QS44Mi44MiwwLDAsMSwzMy4zNywxMi41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwzMkgxNS4zM0wxOSwyOC4zN2wtOS45LTkuOUwzLjU0LDI0YTEuODMsMS44MywwLDAsMCwwLDIuNkw5LDMySDNhMSwxLDAsMCww''@;'; put 'put ''LDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzQuMDgsMTAuNjVsLTcuMy03LjNhMS44MywxLjgzLDAsMCwwLTIuNiwwTDEwLjQ3LDE3LjA2bDkuOSw5LjlMMzQuMDgsMTMuMjVBMS44NSwxLjg1LDAsMCww''@;'; put 'put ''LDM0LjA4LDEwLjY1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlTGFuZHNjYXBlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEy''@;'; put 'put ''LDIsMCwwLDAsMzIsNlptMCwyMkg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyMmEuODIuODIsMCwwLDAsLjU1LS4yMS44LjgsMCwwLDAsMC0xLjEzTDcuODMsMTguOEgyOC4xN2wtMS43MiwxLjg2YS44LjgsMCwwLDAs''@;'; put 'put ''MCwxLjEzQS44Mi44MiwwLDAsMCwyNywyMmEuNzguNzgsMCwwLDAsLjU4LS4yNkwzMS4wOSwxOGwtMy40Ny0zLjc0YS43OS43OSwwLDAsMC0xLjEzLDAsLjguOCwwLDAsMCwwLDEuMTNsMS43MiwxLjg2SDcuODNsMS43Mi0xLjg2YS44LjgsMCwwLDAsMC0xLjEzLjc5Ljc5LDAsMCwwLTEuMTMs''@;'; put 'put ''MEw0LjkxLDE4bDMuNDcsMy43NEEuNzguNzgsMCwwLDAsOSwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIs''@;'; put 'put ''NlpNMjcuNzcsMjEuODhhMSwxLDAsMCwxLS43My4zMiwxLDEsMCwwLDEtLjY4LS4yNywxLDEsMCwwLDEtLjA2LTEuNDFMMjcuNzEsMTlIOC4yOUw5LjcsMjAuNTJhMSwxLDAsMCwxLS4wNiwxLjQxQTEsMSwwLDAsMSw5LDIyLjJhMSwxLDAsMCwxLS43My0uMzJMNC42NCwxOGwzLjU5LTMuODhB''@;'; put 'put ''MSwxLDAsMCwxLDkuNywxNS40OEw4LjI5LDE3SDI3LjcxTDI2LjMsMTUuNDhhMSwxLDAsMCwxLDEuNDctMS4zNkwzMS4zNiwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVBhc3RlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''MCwxMkgyNnYyaDR2MmgyVjE0QTIsMiwwLDAsMCwzMCwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMwLDMwSDI4djJoMmEyLDIsMCwwLDAsMi0yVjI2SDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDIyVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJhMiwyLDAsMCwwLDIsMkgyMkEyLDIs''@;'; put 'put ''MCwwLDAsMjQsMjJaTTYsNkgyMlYyMkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHJlY3QgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBk''@;'; put 'put ''PSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMzAsMTJIMjZ2Mmg0djJoMlYxNEEyLDIsMCwwLDAsMzAsMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMzBIMjh2MmgyYTIsMiwwLDAsMCwyLTJWMjZIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zIiAvPjxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxyZWN0IHg9IjIwIiB5PSIzMCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiAvPicpLGUuQ2xyU2hhcGVQb3J0cmFpdD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUuMzQs''@;'; put 'put ''MjYuNDVhLjguOCwwLDAsMC0xLjEzLDAsLjc5Ljc5LDAsMCwwLDAsMS4xM0wxOCwzMS4wOWwzLjc0LTMuNDdhLjc5Ljc5LDAsMCwwLC4wNS0xLjEzLjguOCwwLDAsMC0xLjEzLDBMMTguOCwyOC4xN1Y3LjgzbDEuODYsMS43MmEuOC44LDAsMSwwLDEuMDgtMS4xN0wxOCw0LjkxLDE0LjI2LDgu''@;'; put 'put ''MzhhLjc5Ljc5LDAsMCwwLDAsMS4xMy44LjgsMCwwLDAsMS4xMywwTDE3LjIsNy44M1YyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWNEEyLDIsMCwwLDAsMjgsMlptMCwzMEg4VjRIMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTIw''@;'; put 'put ''LjUyLDI2LjNhMSwxLDAsMCwxLDEuMzYsMS40N0wxOCwzMS4zNmwtMy44OC0zLjU5YTEsMSwwLDAsMSwxLjM2LTEuNDdMMTcsMjcuNzFWOC4yOUwxNS40OCw5LjdhMSwxLDAsMCwxLTEuMzYtMS40N0wxOCw0LjY0bDMuODgsMy41OWExLDEsMCwwLDEsLjA1LDEuNDEsMSwxLDAsMCwxLS43My4z''@;'; put 'put ''MiwxLDEsMCwwLDEtLjY4LS4yNkwxOSw4LjI5VjI3LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlVHJlZVZpZXc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDMySDExYTEsMSwwLDAsMS0xLTFWMjdhMSwxLDAsMCwxLDEt''@;'; put 'put ''MWg0YTEsMSwwLDAsMSwxLDF2NEExLDEsMCwwLDEsMTUsMzJabS0zLTJoMlYyOEgxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxNkgxMWExLDEsMCwwLDAtMSwxdjEuMkg1LjhWMTJIN2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAs''@;'; put 'put ''MCwwLDcsNkgzQTEsMSwwLDAsMCwyLDd2NGExLDEsMCwwLDAsMSwxSDQuMlYyOS44aDYuMzZhLjguOCwwLDAsMCwwLTEuNkg1LjhWMTkuOEgxMFYyMWExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxN0ExLDEsMCwwLDAsMTUsMTZaTTQsOEg2djJINFpNMTQsMjBIMTJWMThoMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zNCw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzM0ExLDEsMCwwLDAsMzQsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOEgxOHYySDMz''@;'; put 'put ''YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMsMjhIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHJlY3QgeD0iMTAiIHk9IjI2''@;'; put 'put ''IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE1LDE2SDExYTEsMSwwLDAsMC0xLDF2MS4ySDUuOFYxMkg3YTEsMSwwLDAsMCwxLTFWN0ExLDEsMCwwLDAsNyw2SDNBMSwxLDAsMCww''@;'; put 'put ''LDIsN3Y0YTEsMSwwLDAsMCwxLDFINC4yVjI5LjhIMTFhLjguOCwwLDEsMCwwLTEuNkg1LjhWMTkuOEgxMFYyMWExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxN0ExLDEsMCwwLDAsMTUsMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0zMyw4SDEwdjJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDE4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTMz''@;'; put 'put ''LDI4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksZS5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC4wOSw5Ljc0YTQsNCwwLDAsMC0xLjE2LjE5Yy0uMTktMS4yNC0x''@;'; put 'put ''LjU1LTIuMTgtMy4yNy0yLjE4QTQsNCwwLDAsMCwyMi4xMyw4LDMuMzcsMy4zNywwLDAsMCwxOSw2LjNhMy40NSwzLjQ1LDAsMCwwLTIuODcsMS4zMiwzLjY1LDMuNjUsMCwwLDAtMS44OS0uNTFBMy4wNSwzLjA1LDAsMCwwLDExLDkuODl2LjkxYy0xLjA2LjQtNC4xMSwxLjgtNC45MSw0Ljg0''@;'; put 'put ''cy4zNCw4LDIuNjksMTEuNzhhMjUuMjEsMjUuMjEsMCwwLDAsNS45LDYuNDEuOS45LDAsMCwwLC41My4xN0gyNS41NWEuOTIuOTIsMCwwLDAsLjU1LS4xOSwxMy4xMywxMy4xMywwLDAsMCwzLjc1LTYuMTNBMjUuOCwyNS44LDAsMCwwLDMxLjQxLDE4di01LjVBMy4wOCwzLjA4LDAsMCwwLDI4''@;'; put 'put ''LjA5LDkuNzRaTTI5LjYxLDE4YTI0LDI0LDAsMCwxLTEuNDcsOS4xNUExMi40NiwxMi40NiwwLDAsMSwyNS4yLDMyLjJIMTUuNDdhMjMuNzUsMjMuNzUsMCwwLDEtNS4yLTUuNzJjLTIuMzctMy44Ni0zLTguMjMtMi40OC0xMC4zOUE1LjcsNS43LDAsMCwxLDExLDEyLjc2djcuNjVhLjkuOSww''@;'; put 'put ''LDAsMCwxLjgsMFY5Ljg5YzAtLjQ3LjU5LTEsMS40Ni0xczEuNDkuNTIsMS40OSwxdjUuNzJoMS44VjguODFjMC0uMjguNTgtLjcxLDEuNDYtLjcxczEuNTMuNDgsMS41My43NXY2Ljg5aDEuOFYxMGwuMTctLjEyYTIuMSwyLjEsMCwwLDEsMS4xOC0uMzJjLjkzLDAsMS41LjQ0LDEuNS42OGww''@;'; put 'put ''LDYuNUgyN1YxMS44N2ExLjkxLDEuOTEsMCwwLDEsMS4xMi0uMzNjLjg2LDAsMS41Mi41MSwxLjUyLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUN1cnNvckhhbmRPcGVuPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''MS40Niw4LjU3QTMuMTEsMy4xMSwwLDAsMCwyNyw1Ljc1YTMuMTksMy4xOSwwLDAsMC00LjY2LTIuNjQsMy4yOSwzLjI5LDAsMCwwLTYuNDItLjc2LDMuMjMsMy4yMywwLDAsMC0xLjY2LS40NkEzLjI3LDMuMjcsMCwwLDAsMTEsNS4xOFYxNy44NGMtMS4yOC0xLjYtMi41My0zLjE4LTIuNzIt''@;'; put 'put ''My40NUEzLjE5LDMuMTksMCwwLDAsNS41NiwxMi45YTMuMzcsMy4zNywwLDAsMC0zLjQ3LDMuNDhDMi4xOCwxOC4xOCw1LjY2LDI0LjU0LDgsMjhjMy41NCw1LjI0LDYuOTIsNiw3LjA3LDZsLjE4LDBIMjUuNTlhLjkyLjkyLDAsMCwwLC41NS0uMTksMTMuMTMsMTMuMTMsMCwwLDAsMy43NS02''@;'; put 'put ''LjEzYzEtMy4wOSwxLjUzLTcuNTMsMS41OC0xMy41NlpNMjguMTgsMjcuMTJhMTIuNDYsMTIuNDYsMCwwLDEtMi45NCw1LjA4SDE1LjMzYy0uNDctLjE0LTMuMDctMS4xLTUuODctNS4yNVMzLjk0LDE3LjI3LDMuODksMTYuMjlhMS41LDEuNSwwLDAsMSwuNDUtMS4xMywxLjUyLDEuNTIsMCww''@;'; put 'put ''LDEsMS4xNC0uNDYsMS40MywxLjQzLDAsMCwxLDEuMzIuNzFjLjI5LjQzLDIuMzYsMywzLjU3LDQuNTNMMTIuOCwxOC4zVjUuMThhMS40OCwxLjQ4LDAsMSwxLDIuOTUsMFYxNi4zMmgxLjh2LTEzYTEuNTEsMS41MSwwLDAsMSwzLDBWMTYuNDVoMS44VjZhMS40MywxLjQzLDAsMSwxLDIuODUs''@;'; put 'put ''MFYxNy40NEgyN1Y4LjU0YTEuMzMsMS4zMywwLDAsMSwyLjY1LDB2NS41NUMyOS42MiwyMCwyOS4xNCwyNC4yMSwyOC4xOCwyNy4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVGaWxlWmlwPSgwLGEuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0zMCwzMC4yVjEybC04LjEtNy45SDcuOEM2LjgsNC4xLDYsNC45LDYsNmMwLDAsMCwwLDAsMHYyNC4yYzAsMSwwLjcsMS44LDEuNywxLjhjMCwwLDAuMSwwLDAuMSwwaDIwLjNcblx0XHRjMSwwLDEuOC0wLjcsMS44LTEuN0MzMCwzMC4zLDMwLDMwLjIsMzAsMzAuMnogTTIyLDYu''@;'; put 'put ''Nmw1LjYsNS40SDIyVjYuNnogTTI4LDMwSDcuOUw4LDZoMTJ2OGg4VjMweiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTEyLDI0YzAsMS43LDEuMywzLDMsM3MzLTEuMywzLTN2LTRoLTZWMjR6IE0xMy40LDI0di0yLjZoMy4yVjI0YzAu''@;'; put 'put ''MSwwLjktMC42LDEuNy0xLjUsMS43Yy0wLjksMC4xLTEuNy0wLjYtMS43LTEuNVxuXHRcdEMxMy40LDI0LjIsMTMuNCwyNC4xLDEzLjQsMjR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTguMiw5YzAtMC42LTAuNC0xLTEtMUgxNXYy''@;'; put 'put ''aDIuMkMxNy44LDEwLDE4LjIsOS42LDE4LjIsOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xMi43LDEwYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxSDE1di0ySDEyLjd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMTcuMiwxNGMwLjYsMCwxLTAuNCwxLTFzLTAuNC0xLTEtMUgxNXYySDE3LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTEuNywxNWMwLDAuNiwwLjQsMSwxLDFIMTV2LTJoLTIuM0MxMi4y''@;'; put 'put ''LDE0LDExLjcsMTQuNCwxMS43LDE1eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE3LjIsMThjMC42LDAsMS0wLjQsMS0xcy0wLjQtMS0xLTFIMTV2MkgxNy4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTciIC8+PHBhdGggZD0iTTE1LDI1LjZjMC45LDAsMS42LTAuNywxLjYtMS42di0yLjZoLTMuMlYyNEMxMy40LDI0LjksMTQuMSwyNS42LDE1LDI1LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS45LDRINy44QzYuOCw0LDYsNC45LDYs''@;'; put 'put ''NS45djI0LjJjMCwxLDAuOCwxLjksMS44LDEuOWgyMC4zYzEsMCwxLjgtMC45LDEuOC0xLjlWMTEuOUwyMS45LDR6IE0xOCwyNGMwLDEuNy0xLjMsMy0zLDNcblx0XHRzLTMtMS4zLTMtM3YtNGg2VjI0eiBNMTcuMiwxMmMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMUgxNXYyaDIuMmMwLjYs''@;'; put 'put ''MCwxLDAuNCwxLDFzLTAuNCwxLTEsMUgxNXYtMmgtMi4yYy0wLjYsMC0xLTAuNC0xLTFcblx0XHRzMC40LTEsMS0xSDE1di0yaC0yLjJjLTAuNiwwLTEtMC40LTEtMXMwLjQtMSwxLTFIMTVWOGgyLjJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2MkgxNy4yeiBNMjEuOSwxMlY2LjVs''@;'; put 'put ''NS43LDUuNUgyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlRmlsdGVyT2ZmPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCw2LjRDMzQsNS42LDMzLjMsNSwzMi41LDVIMTAuM2wyLDJIMzJ2MC42bC05LjYsOS42bDEuNCwx''@;'; put 'put ''LjRMMzMuNCw5QzMzLjgsOC42LDM0LDguMSwzNCw3LjZWNi41QzM0LDYuNSwzNCw2LjQsMzQsNi40eiJcblx0XHQgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIuNywzbDIsMmgtMUMyLjksNC45LDIuMSw1LjUsMiw2LjN2MS4xYzAsMC41''@;'; put 'put ''LDAuMiwxLDAuNiwxLjRMMTQsMjAuMnYxMC4zbDEuOSwwLjhWMTkuNEw0LDcuNVY3aDIuN0wyMCwyMC4zdjEyLjlsMiwwLjhcblx0XHRjMCwwLDAsMCwwLTAuMVYyMi4zbDEwLjEsMTAuMWwxLjQtMS40TDQuMSwxLjZMMi43LDN6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgLz48cGF0aCBkPSJNMjMuOSwxOC42TDEwLjMsNS4xaDIyLjJDMzMuMyw1LDM0LDUuNiwzNCw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUtMC4yLDEtMC42LDEuNEwyMy45LDE4LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0zMy41LDMxTDQuMSwxLjZMMi42LDNsMi4xLDIuMUgzLjVDMi43LDUsMiw1LjYsMiw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUsMC4yLDEsMC42LDEuNEwxNCwyMC41djEwLjFsOCwzLjRWMjIuNFxuXHRsMTAuMSwxMC4xTDMzLjUsMzF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVSZWN5Y2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjQsMTcuNGMwLjIsMC4xLDAuMywwLjEsMC41LDAuMWMwLjIsMCwwLjQtMC4xLDAuNS0wLjFsNy00LjFjMC4zLTAuMiwwLjUtMC41LDAuNS0wLjljMC0wLjQtMC4yLTAuNy0w''@;'; put 'put ''LjUtMC45TDExLjksMTBcblx0XHRMMTQsNi4yYzAuNC0wLjcsMS0xLjMsMS43LTEuN2MyLTEuMSw0LjUtMC4zLDUuNiwxLjdjMC4zLDAuNSwwLjksMC42LDEuNCwwLjNjMCwwLDAsMCwwLjEsMGMwLjQtMC4zLDAuNS0wLjksMC4zLTEuM1xuXHRcdGMtMC42LTEtMS40LTEuOS0yLjQtMi40Yy0z''@;'; put 'put ''LTEuNi02LjctMC42LTguMywyLjRMOS42LDkuOWMtMC4zLDAuNS0wLjEsMS4xLDAuMywxLjRsMiwxLjJsLTQsMi40VjguMmMwLTAuNi0wLjQtMS0xLTFcblx0XHRDNi40LDcuMyw2LDcuNyw2LDguM3Y4LjNDNiwxNi45LDYuMiwxNy4yLDYuNCwxNy40eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjEsMjFsLTMuNS02LjJjLTAuMS0wLjItMC40LTAuNC0wLjYtMC41Yy0wLjMtMC4xLTAuNSwwLTAuOCwwLjFsLTIuMiwxLjNWMTFsNS41LDMuM2MwLjEsMCwwLjEsMC4xLDAuMiwwLjFcblx0XHRjMC41LDAuMiwxLjEsMCwxLjMt''@;'; put 'put ''MC41YzAuMi0wLjUsMC0xLjEtMC41LTEuM2wtNy00LjJjLTAuMy0wLjItMC43LTAuMi0xLDBDMjMuMSw4LjUsMjMsOC44LDIzLDkuMnY4LjNjMCwwLjQsMC4xLDAuOCwwLjQsMVxuXHRcdGMwLjMsMC4yLDAuNywwLjIsMSwwbDIuOS0xLjdsMyw1LjNjMC43LDEuMywwLjcsMi44LDAsNC4xYy0w''@;'; put 'put ''LjYsMS4yLTEuOSwxLjktMy4yLDEuOWgtMC45Yy0wLjUsMC0xLjIsMC40LTEuMiwxXG5cdFx0YzAuMSwwLjYsMC42LDEsMS4yLDFoMC45YzIuMSwwLDQtMS4xLDUtMi45QzMzLjIsMjUuMiwzMy4yLDIyLjksMzIuMSwyMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiAvPjxwYXRoIGQ9Ik0yMi40LDI4LjJsLTctNC4yYy0wLjMtMC4yLTAuNy0wLjItMSwwYy0wLjMsMC4yLTAuNCwwLjUtMC40LDAuOXYzLjNIOS4xYy0xLjUtMC4xLTIuOS0wLjktMy42LTIuM1xuXHRcdGMtMC44LTEuNC0wLjgtMy4yLDAtNC42YzAuMy0wLjUsMC4xLTEuMS0wLjQtMS40''@;'; put 'put ''Yy0wLjUtMC4zLTEuMS0wLjEtMS40LDAuNGMtMS4yLDIuMS0xLjEsNC42LDAuMSw2LjZDNC45LDI4LjgsNywzMCw5LjIsMzBIMTVcblx0XHRjMC42LDAsMS0wLjQsMS0xdi0yLjRsNCwyLjRsLTUuNiwzLjNjLTAuMywwLjItMC41LDAuNS0wLjUsMC45YzAsMC42LDAuNSwxLDEsMWMwLjIsMCww''@;'; put 'put ''LjMtMC4xLDAuNS0wLjJsNy00LjJcblx0XHRjMC4yLTAuMSwwLjMtMC4yLDAuNC0wLjRDMjMuMSwyOSwyMi45LDI4LjQsMjIuNCwyOC4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIwLjgsMy4xYy0zLTEuNi02LjctMC42LTguNCwy''@;'; put 'put ''LjRsLTIuMiwzLjhsLTItMS4xQzguMiw4LDgsOCw3LjksOEM3LjQsOCw3LDguNCw3LDguOXY3LjJjMCwwLjMsMC4xLDAuNiwwLjQsMC44XG5cdFx0YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMiwwLDAuMywwLDAuNC0wLjFsNi4zLTMuNmMwLjMtMC4yLDAuNC0wLjQsMC40LTAuOGMwLTAu''@;'; put 'put ''My0wLjItMC42LTAuNC0wLjhMMTIsMTAuM2wyLjItMy44XG5cdFx0YzAuNC0wLjcsMS0xLjMsMS43LTEuN2MyLTEuMSw0LjUtMC4zLDUuNiwxLjdjMC4zLDAuNSwwLjksMC42LDEuNCwwLjRjMC41LTAuMywwLjYtMC45LDAuNC0xLjRDMjIuNiw0LjUsMjEuOCwzLjYsMjAuOCwzLjF6IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4yLDIxLjFsLTMtNS4zbDIuMy0xLjNjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhjMC0wLjMtMC4yLTAuNi0wLjQtMC44bC02LjItMy42Yy0wLjEtMC4xLTAuMy0wLjEtMC40LTAuMVxuXHRcdGMtMC41LDAt''@;'; put 'put ''MC45LDAuNC0wLjksMC45djcuMmMwLDAuMywwLjIsMC42LDAuNCwwLjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4yLDAsMC4zLTAuMSwwLjQtMC4xbDIuMi0xLjNsMyw1LjNcblx0XHRjMC43LDEuMiwwLjcsMi44LDAsNGMtMC43LDEuMi0xLjksMS45LTMuMiwxLjloLTAuOWMtMC42LDAt''@;'; put 'put ''MSwwLjQtMSwxYzAsMC42LDAuNCwxLDEsMWgwLjljMi4xLDAsNC0xLjEsNS0zXG5cdFx0QzMzLjIsMjUuMywzMy4yLDIzLDMyLjIsMjEuMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTIxLjcsMjguNGwtNi4yLTMuNmMtMC4xLTAuMS0wLjMt''@;'; put 'put ''MC4xLTAuNC0wLjFjLTAuNSwwLTAuOSwwLjQtMC45LDAuOXYyLjZIOS4zYy0xLjUsMC0yLjktMC44LTMuNi0yLjFcblx0XHRjLTAuOC0xLjQtMC44LTMuMSwwLTQuNWMwLjMtMC41LDAuMS0xLjEtMC40LTEuNGMtMC41LTAuMy0xLjEtMC4xLTEuNCwwLjRjLTEuMiwyLTEuMiw0LjUsMCw2LjVj''@;'; put 'put ''MS4xLDEuOSwzLjEsMy4xLDUuNCwzLjFoNC44djIuNlxuXHRcdGMwLDAuMywwLjIsMC42LDAuNCwwLjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4xLDAsMC4zLDAsMC40LTAuMWw2LjMtMy42YzAuMy0wLjIsMC40LTAuNCwwLjQtMC44XG5cdFx0QzIyLjEsMjguOCwyMS45LDI4LjUsMjEu''@;'; put 'put ''NywyOC40eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlVHJlZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNiwxMS43QzI5LjIsNS44LDI0LDEuNywxOCwxLjdjLTcuMiwwLTEzLDUuOC0xMywxM2MwLDYuOCw1LjMsMTIuNCwx''@;'; put 'put ''MiwxMi45djVjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMXYtNXYtMlYyMlxuXHRjMCwwLDAsMCwwLTAuMXYtMy42bDQuNy00LjdjMC40LTAuNCwwLjQtMSwwLTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxOSwxNS42di0zbC0zLjMtMy4zYy0wLjQtMC40LTEtMC40LTEuNCwwXG5cdGMtMC40''@;'; put 'put ''LDAuNC0wLjQsMSwwLDEuNGwyLjcsMi43djYuMmwtMy44LTMuOGMtMC40LTAuNC0xLTAuNC0xLjQsMGMtMC40LDAuNC0wLjQsMSwwLDEuNGw1LjIsNS4ydjMuMmMtNS42LTAuNS0xMC01LjItMTAtMTAuOVxuXHRjMC02LjEsNC45LTExLDExLTExczExLDQuOSwxMSwxMWMwLDQuOS0zLjMsOS4y''@;'; put 'put ''LTgsMTAuNnYyLjFDMjgsMjUuNywzMi4zLDE4LjcsMzAuNiwxMS43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJDMTAuOCwxLjcsNC44LDcuMyw0LjUsMTQuNUM0LjIsMjEuNyw5LjgsMjcuNywxNywyOHYtNS4ybC01LjItNS4y''@;'; put 'put ''Yy0wLjQtMC40LTAuNC0xLDAtMS40YzAuNC0wLjQsMS0wLjQsMS40LDBcblx0YzAsMCwwLDAsMCwwbDMuOCwzLjh2LTYuMmwtMi43LTIuN2MtMC40LTAuNC0wLjQtMSwwLTEuNGMwLjQtMC40LDEtMC40LDEuNCwwYzAsMCwwLDAsMCwwbDMuMywzLjN2M2wzLjMtMy4zYzAuNC0wLjQsMS0wLjQs''@;'; put 'put ''MS40LDBcblx0YzAsMCwwLDAsMCwwYzAuNCwwLjQsMC40LDEsMCwxLjRMMTksMTguOFYyOGM3LjItMC4zLDEyLjgtNi4zLDEyLjUtMTMuNVMyNS4yLDEuNywxOCwyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMjhjLTAuMywwLTAuNiww''@;'; put 'put ''LTEsMHY1YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTF2LTVDMTguNywyOCwxOC4zLDI4LDE4LDI4eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlRmlzaD0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMS40OSIgY3k9IjE3LjUi''@;'; put 'put ''IHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLjQ4LDkuMjlhMSwxLDAsMCwwLTEsMGMtMy4zNywyLTUuOTEsNS44MS02LjksNy40NUwyNC44NSwxOHMtMSwxLjYyLTEsMS42MmMtMS43NiwyLjQ5LTUuMSw2LjM2LTguNzks''@;'; put 'put ''Ni4zNi00LjY1LDAtOC43NS02LjE1LTkuODQtNy45NCwxLjA5LTEuNzksNS4xOC03Ljk0LDkuODQtNy45NCwzLjU0LDAsNi43NywzLjU4LDguNTgsNi4wN2wuMjgtLjQ4cy4zNi0uNTEuOTMtMS4yNUMyMi43MiwxMS42NCwxOS4xOCw4LjA2LDE1LDguMDZjLTYuNTksMC0xMS42Nyw5LjA3LTEx''@;'; put 'put ''Ljg4LDkuNDZMMi44OSwxOGwuMjcuNDhjLjIxLjM5LDUuMjksOS40NiwxMS44OCw5LjQ2LDUuMDYsMCw5LjIyLTUuMzQsMTEtOEMyNiwyMCwyNy4xOCwxOCwyNy4xOCwxOGgwbC4wNy0uMTFhMTguMDYsMTguMDYsMCwwLDEsMS44OC0yLjc1czAsMCwwLDBhMjAuMzEsMjAuMzEsMCwwLDEsMi44''@;'; put 'put ''Ni0zVjIzLjg4YTIwLjkzLDIwLjkzLDAsMCwxLTMuNjEtNGwtLjE2LjI2aDBsLTEsMS41OWExOC43NCwxOC43NCwwLDAsMCw1LjIxLDQuOTUsMSwxLDAsMCwwLC41LjE0LDEuMTMsMS4xMywwLDAsMCwuNS0uMTMsMSwxLDAsMCwwLC41LS44N1YxMC4xNkExLDEsMCwwLDAsMzMuNDgsOS4yOVoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVGb3JtPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSwxMkg3YTEsMSwwLDAsMS0xLTFWN0ExLDEsMCwwLDEsNyw2SDIxYTEsMSwwLDAsMSwxLDF2NEExLDEsMCwwLDEsMjEsMTJa''@;'; put 'put ''TTgsMTBIMjBWNy45NEg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDE0LjA4SDdhMSwxLDAsMCwwLTEsMVYxOWExLDEsMCwwLDAsMSwxSDE4LjM2TDIyLDE2LjNWMTUuMDhBMSwxLDAsMCwwLDIxLDE0LjA4Wk0yMCwxOEg4VjE2''@;'; put 'put ''SDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTExLjA2LDMxLjUxdi0uMDZsLjMyLTEuMzlINFY0aDIwVjE0LjI1TDI2LDEyLjM2VjNhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDNWMzFhMSwxLDAsMCwwLDEsMWg4QTMuNDQs''@;'; put 'put ''My40NCwwLDAsMSwxMS4wNiwzMS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxOS4xN2wtLjc4Ljc5QTEsMSwwLDAsMCwyMiwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik02LDI2Ljk0YTEsMSwwLDAsMCwxLDFoNC44NGwuMy0xLjMuMTMtLjU1LDAtLjA1SDhWMjRoNi4zNGwyLTJIN2ExLDEsMCwwLDAtMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjQ5LDE2LjY3LDMwLjEyLDEzLjNh''@;'; put 'put ''MS42MSwxLjYxLDAsMCwwLTIuMjgsMGgwTDE0LjEzLDI3LjA5LDEzLDMxLjlhMS42MSwxLjYxLDAsMCwwLDEuMjYsMS45LDEuNTUsMS41NSwwLDAsMCwuMzEsMCwxLjE1LDEuMTUsMCwwLDAsLjM3LDBsNC44NS0xLjA3TDMzLjQ5LDE5YTEuNiwxLjYsMCwwLDAsMC0yLjI3Wk0xOC43NywzMC45''@;'; put 'put ''MWwtMy42Ni44MUwxNiwyOC4wOSwyNi4yOCwxNy43bDIuODIsMi44MlpNMzAuMjMsMTkuMzlsLTIuODItMi44MkwyOSwxNWwyLjg0LDIuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlRnVlbD0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMjAuMTIsMzRINS45QTIuODEsMi44MSwwLDAsMSwzLDMxLjE5VjQuODZBMi45LDIuOSwwLDAsMSw2LDIuMDdIMjAuMjJBMi43MiwyLjcyLDAsMCwxLDIzLDQuODZWMzEuMTlBMi44MiwyLjgyLDAsMCwxLDIwLjEyLDM0Wk01LjksNEEuODcuODcsMCwwLDAsNSw0Ljg2VjMxLjE5''@;'; put 'put ''YS44Ny44NywwLDAsMCwuODcuODdIMjAuMTJhLjk0Ljk0LDAsMCwwLC45NS0uODdWNC44NkEuOTQuOTQsMCwwLDAsMjAuMTIsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOS41MywzNEEzLjUsMy41LDAsMCwxLDI2LDMwLjVWMjNh''@;'; put 'put ''MiwyLDAsMCwwLTItMkgyMi41N2ExLDEsMCwwLDEsMC0ySDI0YTQsNCwwLDAsMSw0LDRWMzAuNWExLjUsMS41LDAsMCwwLDMsMFYxNy4zbC0zLjEzLTdBMi4yOSwyLjI5LDAsMCwwLDI1LjgsOWgtLjczYTEsMSwwLDEsMSwwLTJoLjczYTQuMyw0LjMsMCwwLDEsMy45MywyLjU1bDMuMjEsNy4x''@;'; put 'put ''NmExLDEsMCwwLDEsLjA5LjQxVjMwLjVBMy41LDMuNSwwLDAsMSwyOS41MywzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCw5SDhBMSwxLDAsMSwxLDgsN0gxOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDEzSDhBMSwxLDAsMSwxLDgsMTFIMThBMSwxLDAsMSwxLDE4LDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI1LDEyLjA4YTEsMSwwLDAsMS0xLTF2LTZhMSwxLDAs''@;'; put 'put ''MCwxLDIsMHY2QTEsMSwwLDAsMSwyNSwxMi4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPicpLGUuQ2xyU2hhcGVTbm93Zmxha2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA1LDMzLjYxYTEsMSwwLDAsMS0xLTFWMy4zN2ExLDEsMCwx''@;'; put 'put ''LDEsMS45NSwwVjMyLjYzQTEsMSwwLDAsMSwxOC4wNSwzMy42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiwxMC4wNywxNC41Miw2LjU0YTEsMSwwLDAsMSwwLTEuNDEsMSwxLDAsMCwxLDEuNDEsMGwyLjEzLDIuMTIsMi4x''@;'; put 'put ''Mi0yLjEyYTEsMSwwLDAsMSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMC44NSwzMS4xN2ExLDEsMCwwLDEtLjctLjI5TDE4LDI4Ljc2LDE1LjksMzAuODhhMSwxLDAsMCwxLTEuNDEsMCwx''@;'; put 'put ''LDEsMCwwLDEsMC0xLjQyTDE4LDI1LjkzbDMuNTQsMy41M2ExLDEsMCwwLDEsMCwxLjQyQTEsMSwwLDAsMSwyMC44NSwzMS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC45MiwyNi41YTEsMSwwLDAsMS0uNS0uMTNsLTI2LTE1''@;'; put 'put ''QTEsMSwwLDAsMSw0LjA3LDEwYTEsMSwwLDAsMSwxLjM3LS4zNmwyNiwxNWExLDEsMCwwLDEtLjUsMS44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LDE1LjM3YTEsMSwwLDAsMS0uMjYtMmwyLjktLjc4TDcuODQsOS43M2ExLDEs''@;'; put 'put ''MCwxLDEsMS45My0uNTJMMTEuMDcsMTQsNi4yNCwxNS4zM0EuODIuODIsMCwwLDEsNiwxNS4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNy4wNSwyNy41NGExLDEsMCwwLDEtMS0uNzVMMjQuOCwyMmw0LjgyLTEuM2ExLDEsMCwx''@;'; put 'put ''LDEsLjUyLDEuOTNsLTIuOS43OC43OCwyLjlhMSwxLDAsMCwxLS43MSwxLjIyQS43NS43NSwwLDAsMSwyNy4wNSwyNy41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik00Ljk0LDI2LjVhMSwxLDAsMCwxLS41LTEuODdsMjYtMTVhMSwx''@;'; put 'put ''LDAsMCwxLDEuMzYuMzYsMSwxLDAsMCwxLS4zNiwxLjM3bC0yNiwxNUExLDEsMCwwLDEsNC45NCwyNi41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTguODEsMjcuNTRhLjc1Ljc1LDAsMCwxLS4yNiwwLDEsMSwwLDAsMS0uNzEtMS4y''@;'; put 'put ''MmwuNzgtMi45LTIuOS0uNzhBMSwxLDAsMCwxLDUsMjEuMzhhMSwxLDAsMCwxLDEuMjMtLjcxTDExLjA3LDIybC0xLjMsNC44MkExLDEsMCwwLDEsOC44MSwyNy41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxwYXRoIGQ9Ik0yOS44OCwxNS4zN2Eu''@;'; put 'put ''ODIuODIsMCwwLDEtLjI2LDBMMjQuOCwxNGwxLjI5LTQuODNBMSwxLDAsMSwxLDI4LDkuNzNsLS43OCwyLjg5LDIuOS43OGExLDEsMCwwLDEtLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz4nKSxlLkNsclNoYXBlVGFibGU9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTgsMzRhMSwxLDAsMCwxLTEtMVYyLjkyYTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTcsMzMuOTJhMSwxLDAsMCwxLTEtMVY5LjFhMSwxLDAsMSwx''@;'; put 'put ''LDIsMFYzMi45MkExLDEsMCwwLDEsMTcsMzMuOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjYsMzRhMSwxLDAsMCwxLTEtMVY5YTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDI2LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjExLDE4aC0yNWExLDEsMCwxLDEsMC0yaDI1YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMuMSwyNi45NEg4LjFBMSwxLDAsMSwxLDguMSwy''@;'; put 'put ''NWgyNWExLDEsMCwxLDEsMCwxLjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLDguOTJIM0ExLDEsMCwxLDEsMyw3SDMzYTEsMSwwLDEsMSwwLDEuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NiIgLz4nKSxlLkNsclNoYXBlVm9sdW1lPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS44OCwzMkgxMmE0LDQsMCwwLDEtNC00VjExLjQ2TDIuMzEsNS43N2ExLDEsMCwwLDEtLjIyLTEuMDlBMSwxLDAsMCwxLDMsNC4wNkgyOC44NmExLDEsMCwwLDEsMSwxVjI4QTQsNCwwLDAsMSwy''@;'; put 'put ''NS44OCwzMlpNNS40Myw2bDQuMjgsNC4zNGEuNzUuNzUsMCwwLDEsLjIxLjYzdjE3QTIuMTMsMi4xMywwLDAsMCwxMiwzMEgyNS44OEEyLjEsMi4xLDAsMCwwLDI4LDI4VjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMTZhMSwx''@;'; put 'put ''LDAsMCwxLTEtMVY2SDI4Ljg2YS45Mi45MiwwLDAsMS0xLS45LDEsMSwwLDAsMSwxLTFIMzNhMSwxLDAsMCwxLDEsMVYxNUExLDEsMCwwLDEsMzMsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQsMTFIMThhMSwxLDAsMSwxLDAt''@;'; put 'put ''MkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDE1SDIxYTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0yNCwxOUgxOGExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjQsMjdIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI0LDIzSDIxQTEsMSwwLDEsMSwyMSwyMUgyNEExLDEsMCwxLDEsMjQsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz4nKSxlLkNsclNoYXBlQ3Jvc3NoYWlycz0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTgsMjlBMTEsMTEsMCwxLDEsMjksMTgsMTEsMTEsMCwwLDEsMTgsMjlaTTE4LDlhOSw5LDAsMSwwLDksOUE5LDksMCwwLDAsMTgsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyM2E1LDUsMCwxLDEs''@;'; put 'put ''NS01QTUsNSwwLDAsMSwxOCwyM1ptMC04YTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDE4LDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDlhMSwxLDAsMCwxLTEtMVYyLjhhMSwxLDAsMCwxLDIsMFY4QTEsMSwwLDAsMSwxOCw5''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDM0YTEsMSwwLDAsMS0xLTFWMjhhMSwxLDAsMCwxLDIsMHY1QTEsMSwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik04LDE5SDMuMTdhMSwxLDAsMCwxLDAtMkg4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuMSwxOUgyOGExLDEsMCwwLDEsMC0yaDUuMWExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksZS5DbHJTaGFwZUNpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZURvdENpcmNsZT0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTFhNyw3LDAsMSwxLTcsNyw3LDcsMCwwLDEsNy03IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQs''@;'; put 'put ''MCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVCZXRhPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjIxLDE0LjA3aDNhMS42MSwxLjYxLDAsMCwxLDEuODEsMS41LDEuNDQs''@;'; put 'put ''MS40NCwwLDAsMS0uODQsMS4zNCwxLjY3LDEuNjcsMCwwLDEsMS4xLDEuNTMsMS43NSwxLjc1LDAsMCwxLTIsMS42M0g3LjIxWm0yLjcxLDIuNDJjLjQ4LDAsLjgyLS4yOC44Mi0uNjdzLS4zNC0uNjUtLjgyLS42NUg4LjQ5djEuMzJabS4yLDIuNDhhLjc1Ljc1LDAsMSwwLDAtMS40N0g4LjQ5''@;'; put 'put ''VjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE0LjU1LDE1LjIzdjEuMmgzdjEuMTZoLTN2MS4zMmgzLjMzdjEuMTZIMTMuMjZ2LTZoNC42MnYxLjE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiLz5cbiAgPHBhdGggZD0iTTIwLjQxLDE1LjIzSDE4LjU0VjE0LjA3aDV2MS4xNkgyMS43djQuODRIMjAuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjgsMTkuMTJIMjUuMzJsLS4zOC45NUgyMy41bDIuNDQtNmgxLjQ0''@;'; put 'put ''bDIuNDUsNkgyOC4zOFpNMjcuNTUsMThsLS44OS0yLjE5TDI1Ljc3LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTguMDYsMzBhLjg0Ljg0LDAsMCwxLS4zOC0uMDhBMSwxLDAsMCwxLDcuMDYsMjlWMjVoLTRhMSwxLDAsMCwx''@;'; put 'put ''LTEtMVYxMGExLDEsMCwwLDEsMS0xaDMwYTEsMSwwLDAsMSwxLDFWMjRhMSwxLDAsMCwxLTEsMUgxMy40OEw4Ljc3LDI5LjcxQTEsMSwwLDAsMSw4LjA2LDMwWm0tNC03aDRhMSwxLDAsMCwxLDEsMXYyLjU5bDMuMy0zLjNhMSwxLDAsMCwxLC43LS4yOWgxOVYxMWgtMjhaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuXG4gIDxwb2x5Z29uIHBvaW50cz0iMjUuOCwxOCAyNy41LDE4IDI2LjcsMTUuOCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuXHQ8cGF0aCBkPSJNMTAuNCwxNy41Yy0wLjEsMC0wLjIsMC0wLjMs''@;'; put 'put ''MEg4LjVWMTlsMS42LDBjMC40LDAuMSwwLjgtMC4yLDAuOS0wLjZDMTEuMSwxOCwxMC44LDE3LjYsMTAuNCwxNy41eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuXHQ8cGF0aCBkPSJNMTAuNywxNS44YzAtMC40LTAuMy0wLjctMC44LTAuN0g4LjV2MS4zaDEu''@;'; put 'put ''NEMxMC40LDE2LjUsMTAuNywxNi4yLDEwLjcsMTUuOHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cblx0PHBhdGggZD0iTTMzLjEsOWgtMzBjLTAuNiwwLTEsMC40LTEsMXYxNGMwLDAuNiwwLjQsMSwxLDFoNHY0YzAsMC40LDAuMiwwLjgsMC42LDAuOUM3Ljgs''@;'; put 'put ''MzAsNy45LDMwLDguMSwzMGMwLjMsMCwwLjUtMC4xLDAuNy0wLjNcblx0XHRsNC43LTQuN2gxOS42YzAuNiwwLDEtMC40LDEtMVYxMEMzNC4xLDkuNCwzMy42LDksMzMuMSw5eiBNMTAuNCwyMC4xYy0wLjEsMC0wLjEsMC0wLjIsMEg3LjJ2LTZoM2MwLjktMC4xLDEuNywwLjUsMS44LDEuNFxu''@;'; put 'put ''XHRcdGMwLDAsMCwwLjEsMCwwLjFjMCwwLjYtMC4zLDEuMS0wLjgsMS4zYzAuNiwwLjIsMS4xLDAuOCwxLjEsMS41QzEyLjIsMTkuNCwxMS40LDIwLjEsMTAuNCwyMC4xeiBNMTcuOSwxNS4yaC0zLjN2MS4yaDN2MS4yaC0zdjEuM1xuXHRcdGgzLjN2MS4yaC00LjZ2LTZoNC42VjE1LjJ6IE0y''@;'; put 'put ''MS43LDIwLjFoLTEuM3YtNC44aC0xLjl2LTEuMmg1djEuMmgtMS44VjIwLjF6IE0yOC40LDIwLjFsLTAuNC0xaC0yLjdsLTAuNCwxaC0xLjRsMi40LTZoMS40bDIuNSw2XG5cdFx0SDI4LjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4nKSxlLkNsclNoYXBl''@;'; put 'put ''Rmlyc3RBaWQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDIzLjkxVjQuNUEyLjUsMi41LDAsMCwwLDIxLjQxLDJoLTdhMi41LDIuNSwwLDAsMC0yLjUsMi41VjZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAs''@;'; put 'put ''MCwzMiw2Wk0xMy45MSw0LjVhLjUuNSwwLDAsMSwuNS0uNWg3YS41LjUsMCwwLDEsLjUuNVY2aC04Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjAuMTUsMjUuMkgxNi43NGExLjMsMS4zLDAsMCwxLTEu''@;'; put 'put ''My0xLjNWMjEuMmgtMi43YTEuMywxLjMsMCwwLDEtMS4zLTEuM1YxNi41YTEuMywxLjMsMCwwLDEsMS4zLTEuM2gyLjdWMTIuNWExLjMsMS4zLDAsMCwxLDEuMy0xLjNoMy40MWExLjMsMS4zLDAsMCwxLDEuMjksMS4zdjIuN2gyLjcxYTEuMywxLjMsMCwwLDEsMS4yOSwxLjN2My40YTEuMywx''@;'; put 'put ''LjMsMCwwLDEtMS4yOSwxLjNIMjEuNDR2Mi43QTEuMywxLjMsMCwwLDEsMjAuMTUsMjUuMlpNMTcsMjMuNmgyLjgxdi00aDRWMTYuOGgtNHYtNEgxN3Y0SDEzdjIuOGg0Wm03LjExLTYuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG5cbiAgPHBhdGgg''@;'; put 'put ''ZD0iTTMyLDZIMjMuOTFWNC41QTIuNSwyLjUsMCwwLDAsMjEuNDEsMmgtN2EyLjUsMi41LDAsMCwwLTIuNSwyLjVWNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEzLjkxLDQuNWEuNS41LDAsMCwxLC41LS41aDdh''@;'; put 'put ''LjUuNSwwLDAsMSwuNS41VjZoLThaTTI0LjY0LDE5LjlhLjUuNSwwLDAsMS0uNS41aC0zLjV2My41YS41LjUsMCwwLDEtLjUuNWgtMy40YS41LjUsMCwwLDEtLjUtLjVWMjAuNGgtMy41YS41LjUsMCwwLDEtLjUtLjVWMTYuNWEuNS41LDAsMCwxLC41LS41aDMuNVYxMi41YS41LjUsMCwwLDEs''@;'; put 'put ''LjUtLjVoMy40YS41LjUsMCwwLDEsLjUuNVYxNmgzLjVhLjUuNSwwLDAsMSwuNS41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxlLkNsclNoYXBlQ29sb3JQYWxldHRlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMS41NCwyMy4wNWEzLjIy''@;'; put 'put ''LDMuMjIsMCwwLDEtMy0xLjc3QTMuMDUsMy4wNSwwLDAsMSwxOC41LDE5YTMuNzQsMy43NCwwLDAsMSwxLjk1LTIuMDZBMy40LDMuNCwwLDAsMSwyNSwxOC4zYTMsMywwLDAsMSwuMDgsMi4zMiwzLjY5LDMuNjksMCwwLDEtMiwyLjA3QTMuODUsMy44NSwwLDAsMSwyMS41NCwyMy4wNVptLjU0''@;'; put 'put ''LTQuOTFhMi40MSwyLjQxLDAsMCwwLTEsLjIxaDBBMi4xMywyLjEzLDAsMCwwLDIwLDE5LjUxYTEuMzcsMS4zNywwLDAsMCwwLDEuMDksMS44MSwxLjgxLDAsMCwwLDIuNDUuNjMsMi4xLDIuMSwwLDAsMCwxLjEyLTEuMTUsMS40LDEuNCwwLDAsMCwwLTEuMUExLjU5LDEuNTksMCwwLDAsMjIu''@;'; put 'put ''MDgsMTguMTRabS0xLjI5LS41MmgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE2LjE5LDMzLjg3QTEzLjcyLDEzLjcyLDAsMCwxLDYuNCwzMCwxMy44NiwxMy44NiwwLDAsMSwyLDIwYzAtNC40LDItOC44NCw1LjY4LTEyLjVh''@;'; put 'put ''MTguMiwxOC4yLDAsMCwxLDEzLjEtNS4zN2guMTJjMy4zMywwLDYuODUsMS40OSw3LjI0LDQuNzMuMjEsMS43Ny0uNTksMy40Ny0xLjI5LDUtLjU1LDEuMTctMS4xMSwyLjM5LS43MiwyLjgxczEsLjEyLDIuMDktLjJhNi4yNyw2LjI3LDAsMCwxLDMuMzgtLjM2LDMsMywwLDAsMSwxLjg3LDEu''@;'; put 'put ''NTZjLjk0LDEuODMuNDcsNC42Ny0uMjMsNi41NGgwQTE3LjM4LDE3LjM4LDAsMCwxLDI5LDI4Ljc0LDE5LjQzLDE5LjQzLDAsMCwxLDE2LjE5LDMzLjg3Wk0yMC43OCw0LjE2QTE2LjIyLDE2LjIyLDAsMCwwLDkuMDksOUM1Ljc5LDEyLjIzLDQsMTYuMTYsNCwyMEExMS45MiwxMS45MiwwLDAs''@;'; put 'put ''MCw3LjgsMjguNmM1LjM4LDUuMjUsMTQuNjIsMy41NSwxOS44Ny0xLjMzYTE1LjUyLDE1LjUyLDAsMCwwLDMuNy01Ljc1aDBjLjctMS45Ljg0LTMuOTIuMzItNC45MmExLDEsMCwwLDAtLjYxLS41NSw0Ljg2LDQuODYsMCwwLDAtMi4yOS4zNWMtMS4zMS4zOS0zLC44OS00LjEyLS4zNS0xLjMy''@;'; put 'put ''LTEuNC0uNDYtMy4yNS4zNy01YTcuOTMsNy45MywwLDAsMCwxLjExLTMuOWMtLjI0LTItMi44MS0yLjk1LTUuMjYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMy44NywyNi42NUEyLjU5LDIuNTksMCwwLDAsMjIuMzUsMjVM''@;'; put 'put ''MjIsMjQuOWwtLjQ2LDEuNTMuMTYsMGExLDEsMCwwLDEsLjYuNjFjLjE3LjYtLjQxLDEuMzEtMS4yNiwxLjU1cy0xLjcxLS4wNy0xLjg4LS42NmwtMS41NC40M2gwYTIuODMsMi44MywwLDAsMCwyLjg0LDEuOTEsNCw0LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwyMy44NywyNi42NVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0xNS4wNywyNS41OWgwYTIuNzMsMi43MywwLDAsMC0yLjI0LTEuODRsLS4yNywxLjU4YTEuMTIsMS4xMiwwLDAsMSwxLC43Yy4xNy41OS0uNDEsMS4zLTEuMjYsMS41NEExLjkyLDEuOTIsMCwwLDEs''@;'; put 'put ''MTEsMjcuNTJhMSwxLDAsMCwxLS42LS42MXMwLS4wOSwwLS4xM2wtMS41OC4xNmEyLDIsMCwwLDAsLjA2LjQxQTIuNTksMi41OSwwLDAsMCwxMC4zNywyOWEzLjM2LDMuMzYsMCwwLDAsMS4zMS4yNSwzLjcsMy43LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxNS4wNywyNS41OVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xMC43OCwxOS4xN2EyLjU5LDIuNTksMCwwLDAtMS41Mi0xLjY1LDIuOTEsMi45MSwwLDAsMC0uNS0uMTZsLS4zNywxLjU2YTEuMjEsMS4yMSwwLDAsMSwuMjUuMDgsMSwxLDAsMCwxLC42LjZjLjE3LjYt''@;'; put 'put ''LjQxLDEuMzEtMS4yNiwxLjU1cy0xLjcxLS4wNi0xLjg4LS42NmEuODYuODYsMCwwLDEsMC0uMzlsLTEuNTYtLjM0YTIuNCwyLjQsMCwwLDAsMCwxLjE2QTIuODMsMi44MywwLDAsMCw3LjQsMjIuODNhNCw0LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxMC43OCwxOS4xN1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMy40NSwxMS40YTIuNTksMi41OSwwLDAsMC0xLjUyLTEuNjUsMS4xNywxLjE3LDAsMCwwLS4yLS4wNmwtLjUyLDEuNTFhLjM4LjM4LDAsMCwxLC4xLDAsMSwxLDAsMCwxLC42LjZjLjE3LjYtLjQxLDEuMzEt''@;'; put 'put ''MS4yNiwxLjU1YTIuMDYsMi4wNiwwLDAsMS0xLjI4LS4wNSwxLDEsMCwwLDEtLjYtLjYxLjg1Ljg1LDAsMCwxLDAtLjMybC0xLjU4LS4xOWEyLjMsMi4zLDAsMCwwLC4wNi45NEEyLjU2LDIuNTYsMCwwLDAsOC43NSwxNC44YTMuMzcsMy4zNywwLDAsMCwxLjMxLjI2LDQsNCwwLDAsMCwxLS4x''@;'; put 'put ''NEEzLDMsMCwwLDAsMTMuNDUsMTEuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxwYXRoIGQ9Ik0yMSw2Ljc4YTIuNTYsMi41NiwwLDAsMC0xLjUyLTEuNjVsLS4zLS4xTDE4LjcsNi41NmwuMTUsMGExLDEsMCwwLDEsLjYuNjFjLjE3LjYtLjQx''@;'; put 'put ''LDEuMy0xLjI2LDEuNTRzLTEuNzEtLjA2LTEuODgtLjY1YS45LjksMCwwLDEsLjA2LS41OEwxNC44OSw2LjlhMi40NywyLjQ3LDAsMCwwLS4xMiwxLjYzLDIuODQsMi44NCwwLDAsMCwyLjg0LDEuOTEsMy41OCwzLjU4LDAsMCwwLDEtLjE1QTMsMywwLDAsMCwyMSw2Ljc4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cblxuICA8cGF0aCBkPSJNMzIuMjMsMTQuODljLTIuMS0uNTYtNC45MywxLjgtNi4zNC4zLTEuNzEtMS44MiwyLjI3LTUuNTMsMS44Ni04LjkyLS4zMy0yLjc4LTMuNTEtNC4wOC02LjY2LTQuMUExOC41LDE4LjUsMCwwLDAsNy43''@;'; put 'put ''NCw3LjU5Yy02LjY0LDYuNTktOC4wNywxNi0xLjM3LDIyLjQ4LDYuMjEsNiwxNi42MSw0LjIzLDIyLjY3LTEuNGExNy43MywxNy43MywwLDAsMCw0LjIyLTYuNTRDMzQuMzQsMTkuMjMsMzQuNDQsMTUuNDksMzIuMjMsMTQuODlaTTkuNCwxMC41N2EyLjIzLDIuMjMsMCwwLDEsMi44NywxLjIx''@;'; put 'put ''LDIuMjIsMi4yMiwwLDAsMS0xLjgxLDIuNTNBMi4yMiwyLjIyLDAsMCwxLDcuNTksMTMuMSwyLjIzLDIuMjMsMCwwLDEsOS40LDEwLjU3Wk01LjA3LDIwLjgyYTIuMjIsMi4yMiwwLDAsMSwxLjgyLTIuNTNBMi4yMiwyLjIyLDAsMCwxLDkuNzUsMTkuNSwyLjIzLDIuMjMsMCwwLDEsNy45NCwy''@;'; put 'put ''MiwyLjI0LDIuMjQsMCwwLDEsNS4wNywyMC44MlptNyw4LjMzYTIuMjIsMi4yMiwwLDAsMS0yLjg3LTEuMjFBMi4yMywyLjIzLDAsMCwxLDExLDI1LjQxYTIuMjMsMi4yMywwLDAsMSwyLjg3LDEuMjFBMi4yMiwyLjIyLDAsMCwxLDEyLDI5LjE1Wk0xNSw4LjI2YTIuMjMsMi4yMywwLDAsMSwx''@;'; put 'put ''LjgxLTIuNTMsMi4yNCwyLjI0LDAsMCwxLDIuODcsMS4yMSwyLjIyLDIuMjIsMCwwLDEtMS44MiwyLjUzQTIuMjEsMi4yMSwwLDAsMSwxNSw4LjI2Wm01LjgyLDIyLjE5YTIuMjIsMi4yMiwwLDAsMS0yLjg3LTEuMjEsMi4yMywyLjIzLDAsMCwxLDEuODEtMi41MywyLjI0LDIuMjQsMCwwLDEs''@;'; put 'put ''Mi44NywxLjIxQTIuMjIsMi4yMiwwLDAsMSwyMC43OCwzMC40NVptNS0xMC40NmEzLjIsMy4yLDAsMCwxLTEuNjksMS43NiwzLjUzLDMuNTMsMCwwLDEtMS40LjMsMi43OCwyLjc4LDAsMCwxLTIuNTYtMS41LDIuNDksMi40OSwwLDAsMS0uMDctMiwzLjIsMy4yLDAsMCwxLDEuNjktMS43Niwz''@;'; put 'put ''LDMsMCwwLDEsNCwxLjJBMi41NCwyLjU0LDAsMCwxLDI1Ljc5LDIwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuRXNzZW50aWFsU2hhcGVzPXsiYWRkLXRleHQiOmUuQ2xyU2hhcGVBZGRUZXh0LCJhbGFybS1vZmYiOmUuQ2xyU2hhcGVBbGFybU9mZixw''@;'; put 'put ''aW5ib2FyZDplLkNsclNoYXBlUGluYm9hcmQsbmV3OmUuQ2xyU2hhcGVOZXcsImJ1YmJsZS1leGNsYW1hdGlvbiI6ZS5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uLCJncmlkLXZpZXciOmUuQ2xyU2hhcGVHcmlkVmlldywiY3Vyc29yLWFycm93IjplLkNsclNoYXBlQ3Vyc29yQXJyb3csImN1''@;'; put 'put ''cnNvci1oYW5kIjplLkNsclNoYXBlQ3Vyc29ySGFuZCwiY3Vyc29yLWhhbmQtY2xpY2siOmUuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2ssImN1cnNvci1oYW5kLWdyYWIiOmUuQ2xyU2hhcGVDdXJzb3JIYW5kR3JhYiwiY3Vyc29yLWhhbmQtb3BlbiI6ZS5DbHJTaGFwZUN1cnNvckhhbmRPcGVu''@;'; put 'put ''LCJjdXJzb3ItbW92ZSI6ZS5DbHJTaGFwZUN1cnNvck1vdmUsImZpcnN0LWFpZCI6ZS5DbHJTaGFwZUZpcnN0QWlkLHJlc2l6ZTplLkNsclNoYXBlUmVzaXplLG9iamVjdHM6ZS5DbHJTaGFwZU9iamVjdHMsYm9vazplLkNsclNoYXBlQm9vayxhc3RlcmlzazplLkNsclNoYXBlQXN0ZXJpc2ss''@;'; put 'put ''YnVnOmUuQ2xyU2hhcGVCdWcsc2Npc3NvcnM6ZS5DbHJTaGFwZVNjaXNzb3JzLHRoZXJtb21ldGVyOmUuQ2xyU2hhcGVUaGVybW9tZXRlcixwZW5jaWw6ZS5DbHJTaGFwZVBlbmNpbCxub3RlOmUuQ2xyU2hhcGVOb3RlLHJlZnJlc2g6ZS5DbHJTaGFwZVJlZnJlc2gsc3luYzplLkNsclNoYXBl''@;'; put 'put ''U3luYywidmlldy1saXN0IjplLkNsclNoYXBlVmlld0xpc3QsInZpZXctY2FyZHMiOmUuQ2xyU2hhcGVWaWV3Q2FyZHMsInRyZWUtdmlldyI6ZS5DbHJTaGFwZVRyZWVWaWV3LGxpZ2h0YnVsYjplLkNsclNoYXBlTGlnaHRidWxiLGRvd25sb2FkOmUuQ2xyU2hhcGVEb3dubG9hZCx1cGxvYWQ6''@;'; put 'put ''ZS5DbHJTaGFwZVVwbG9hZCxsb2NrOmUuQ2xyU2hhcGVMb2NrLHVubG9jazplLkNsclNoYXBlVW5sb2NrLHVzZXJzOmUuQ2xyU2hhcGVVc2VycywicG9wLW91dCI6ZS5DbHJTaGFwZVBvcE91dCxmaWx0ZXI6ZS5DbHJTaGFwZUZpbHRlcixwaW46ZS5DbHJTaGFwZVBpbixmaWxlOmUuQ2xyU2hh''@;'; put 'put ''cGVGaWxlLHBsdXM6ZS5DbHJTaGFwZVBsdXMsbWludXM6ZS5DbHJTaGFwZU1pbnVzLCJtaW51cy1jaXJjbGUiOmUuQ2xyU2hhcGVNaW51c0NpcmNsZSwicGx1cy1jaXJjbGUiOmUuQ2xyU2hhcGVQbHVzQ2lyY2xlLGJhbjplLkNsclNoYXBlQmFuLCJ0aW1lcy1jaXJjbGUiOmUuQ2xyU2hhcGVU''@;'; put 'put ''aW1lc0NpcmNsZSx0cmFzaDplLkNsclNoYXBlVHJhc2gsY2lyY2xlOmUuQ2xyU2hhcGVDaXJjbGUsdGFnOmUuQ2xyU2hhcGVUYWcsdGFnczplLkNsclNoYXBlVGFncyxoaXN0b3J5OmUuQ2xyU2hhcGVIaXN0b3J5LGNsb2NrOmUuQ2xyU2hhcGVDbG9jaywiYWxhcm0tY2xvY2siOmUuQ2xyU2hh''@;'; put 'put ''cGVBbGFybUNsb2NrLGFycm93OmMuQ2xyU2hhcGVBcnJvdywiY2lyY2xlLWFycm93IjplLkNsclNoYXBlQ2lyY2xlQXJyb3csImNoaWxkLWFycm93IjplLkNsclNoYXBlQ2hpbGRBcnJvdyxjb3B5OmUuQ2xyU2hhcGVDb3B5LGhlbHA6ZS5DbHJTaGFwZUhlbHAsbG9naW46ZS5DbHJTaGFwZUxv''@;'; put 'put ''Z2luLGxvZ291dDplLkNsclNoYXBlTG9nb3V0LHByaW50ZXI6ZS5DbHJTaGFwZVByaW50ZXIsd29ybGQ6ZS5DbHJTaGFwZVdvcmxkLHNsaWRlcjplLkNsclNoYXBlU2xpZGVyLGNsaXBib2FyZDplLkNsclNoYXBlQ2xpcGJvYXJkLGZpcmV3YWxsOmUuQ2xyU2hhcGVGaXJld2FsbCxsaXN0OmUu''@;'; put 'put ''Q2xyU2hhcGVMaXN0LHJlZG86ZS5DbHJTaGFwZVJlZG8sdW5kbzplLkNsclNoYXBlVW5kbyxzY3JvbGw6ZS5DbHJTaGFwZVNjcm9sbCwiZmlsZS1zZXR0aW5ncyI6ZS5DbHJTaGFwZUZpbGVTZXR0aW5ncywidHdvLXdheS1hcnJvd3MiOmUuQ2xyU2hhcGVUd29XYXlBcnJvd3Msc3dpdGNoOmUu''@;'; put 'put ''Q2xyU2hhcGVTd2l0Y2gsdG9vbHM6ZS5DbHJTaGFwZVRvb2xzLCJ3aW5kb3ctY2xvc2UiOmUuQ2xyU2hhcGVXaW5kb3dDbG9zZSwid2luZG93LW1heCI6ZS5DbHJTaGFwZVdpbmRvd01heCwid2luZG93LW1pbiI6ZS5DbHJTaGFwZVdpbmRvd01pbiwid2luZG93LXJlc3RvcmUiOmUuQ2xyU2hh''@;'; put 'put ''cGVXaW5kb3dSZXN0b3JlLCJ6b29tLWluIjplLkNsclNoYXBlWm9vbUluLCJ6b29tLW91dCI6ZS5DbHJTaGFwZVpvb21PdXQsa2V5OmUuQ2xyU2hhcGVLZXksbGlicmFyeTplLkNsclNoYXBlTGlicmFyeSxib2x0OmUuQ2xyU2hhcGVCb2x0LHdyZW5jaDplLkNsclNoYXBlV3JlbmNoLGJ1bGxz''@;'; put 'put ''ZXllOmUuQ2xyU2hhcGVCdWxsc2V5ZSx0YXJnZXQ6ZS5DbHJTaGFwZVRhcmdldCxmbGFtZTplLkNsclNoYXBlRmxhbWUsaG91cmdsYXNzOmUuQ2xyU2hhcGVIb3VyZ2xhc3MsIm5vLWFjY2VzcyI6ZS5DbHJTaGFwZU5vQWNjZXNzLG9yZ2FuaXphdGlvbjplLkNsclNoYXBlT3JnYW5pemF0aW9u''@;'; put 'put ''LGJhbGFuY2U6ZS5DbHJTaGFwZUJhbGFuY2UsImlkLWJhZGdlIjplLkNsclNoYXBlSWRCYWRnZSxyZXBlYXQ6ZS5DbHJTaGFwZVJlcGVhdCwiZmlsZS1ncm91cCI6ZS5DbHJTaGFwZUZpbGVHcm91cCxwYXBlcmNsaXA6ZS5DbHJTaGFwZVBhcGVyY2xpcCxzaHJpbms6ZS5DbHJTaGFwZVNocmlu''@;'; put 'put ''aywiYWNjZXNzaWJpbGl0eS0xIjplLkNsclNoYXBlQWNjZXNzaWJpbGl0eTEsImFjY2Vzc2liaWxpdHktMiI6ZS5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyLCJzb3J0LWJ5IjplLkNsclNoYXBlU29ydEJ5LCJjb2xsYXBzZS1jYXJkIjplLkNsclNoYXBlQ29sbGFwc2VDYXJkLCJleHBhbmQtY2Fy''@;'; put 'put ''ZCI6ZS5DbHJTaGFwZUV4cGFuZENhcmQsYnJpZWZjYXNlOmUuQ2xyU2hhcGVCcmllZmNhc2UsImNvbG9yLXBpY2tlciI6ZS5DbHJTaGFwZUNvbG9yUGlja2VyLCJjb3B5LXRvLWNsaXBib2FyZCI6ZS5DbHJTaGFwZUNvcHlUb0NsaXBib2FyZCwiZmlsdGVyLTIiOmUuQ2xyU2hhcGVGaWx0ZXIy''@;'; put 'put ''LCJkcmFnLWhhbmRsZSI6ZS5DbHJTaGFwZURyYWdIYW5kbGUsbW9vbjplLkNsclNoYXBlTW9vbixzdW46ZS5DbHJTaGFwZVN1bix3YW5kOmUuQ2xyU2hhcGVXYW5kLGNsb25lOmUuQ2xyU2hhcGVDbG9uZSxkZXRhaWxzOmUuQ2xyU2hhcGVEZXRhaWxzLCJkcmFnLWhhbmRsZS1jb3JuZXIiOmUu''@;'; put 'put ''Q2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyLGVyYXNlcjplLkNsclNoYXBlRXJhc2VyLGxhbmRzY2FwZTplLkNsclNoYXBlTGFuZHNjYXBlLHBhc3RlOmUuQ2xyU2hhcGVQYXN0ZSxwb3J0cmFpdDplLkNsclNoYXBlUG9ydHJhaXQsImZpbGUtemlwIjplLkNsclNoYXBlRmlsZVppcCwiZmlsdGVy''@;'; put 'put ''LW9mZiI6ZS5DbHJTaGFwZUZpbHRlck9mZixyZWN5Y2xlOmUuQ2xyU2hhcGVSZWN5Y2xlLHRyZWU6ZS5DbHJTaGFwZVRyZWUsZmlzaDplLkNsclNoYXBlRmlzaCxmb3JtOmUuQ2xyU2hhcGVGb3JtLGZ1ZWw6ZS5DbHJTaGFwZUZ1ZWwsc25vd2ZsYWtlOmUuQ2xyU2hhcGVTbm93Zmxha2UsdGFi''@;'; put 'put ''bGU6ZS5DbHJTaGFwZVRhYmxlLCJkb3QtY2lyY2xlIjplLkNsclNoYXBlRG90Q2lyY2xlLHZvbHVtZTplLkNsclNoYXBlVm9sdW1lLGNyb3NzaGFpcnM6ZS5DbHJTaGFwZUNyb3NzaGFpcnMsYmV0YTplLkNsclNoYXBlQmV0YSwiY29sb3ItcGFsZXR0ZSI6ZS5DbHJTaGFwZUNvbG9yUGFsZXR0''@;'; put 'put ''ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJlZGl0IiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnBlbmNpbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywibm90ZS1lZGl0IiwoMCxyLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLm5vdGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsImdyb3VwIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnVzZXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFs''@;'; put 'put ''U2hhcGVzLCJkb2N1bWVudCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5maWxlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJhZGQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRpYWxTaGFwZXMucGx1cykpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiY2FuY2VsIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLmJhbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywicmVtb3ZlIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUu''@;'; put 'put ''RXNzZW50aWFsU2hhcGVzWyJ0aW1lcy1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywic2lnbi1pbiIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5sb2dpbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlh''@;'; put 'put ''bFNoYXBlcywic2lnbi1vdXQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRpYWxTaGFwZXMubG9nb3V0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJsaWdodG5pbmciLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRpYWxTaGFwZXMuYm9s''@;'; put 'put ''dCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiZmxvdy1jaGFydCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5vcmdhbml6YXRpb24pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsImFsZXJ0IiwoMCxy''@;'; put 'put ''LmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzWyJidWJibGUtZXhjbGFtYXRpb24iXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywicGlubmVkIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnBpbmJvYXJkKSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJhdHRhY2htZW50IiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnBhcGVyY2xpcCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVudCIsKDAsci5kZXNj''@;'; put 'put ''cmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS1kb3duIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnNocmluaykpLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShlLkVzc2VudGlhbFNoYXBlcywicmVzaXplLXVwIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnJlc2l6ZSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0''@;'; put 'put ''eUljb25zLmFkZChlLkVzc2VudGlhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvbWVkaWEtc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsbCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLk1lZGlhU2hh''@;'; put 'put ''cGVzPWUuQ2xyU2hhcGVNaWNyb3Bob25lTXV0ZT1lLkNsclNoYXBlTWljcm9waG9uZT1lLkNsclNoYXBlVmlkZW9HYWxsZXJ5PWUuQ2xyU2hhcGVSZXBsYXlPbmU9ZS5DbHJTaGFwZVJlcGxheUFsbD1lLkNsclNoYXBlSW1hZ2VHYWxsZXJ5PWUuQ2xyU2hhcGVNdXNpY05vdGU9ZS5DbHJTaGFw''@;'; put 'put ''ZUZpbG1TdHJpcD1lLkNsclNoYXBlSGVhZHBob25lcz1lLkNsclNoYXBlVm9sdW1lTXV0ZT1lLkNsclNoYXBlVm9sdW1lVXA9ZS5DbHJTaGFwZVZvbHVtZURvd249ZS5DbHJTaGFwZVNodWZmbGU9ZS5DbHJTaGFwZVZpZGVvQ2FtZXJhPWUuQ2xyU2hhcGVDYW1lcmE9ZS5DbHJTaGFwZUZhc3RG''@;'; put 'put ''b3J3YXJkPWUuQ2xyU2hhcGVSZXdpbmQ9ZS5DbHJTaGFwZVBvd2VyPWUuQ2xyU2hhcGVTdG9wPWUuQ2xyU2hhcGVTdGVwRm9yd2FyZD1lLkNsclNoYXBlUGF1c2U9ZS5DbHJTaGFwZVBsYXk9dm9pZCAwLGw9bCgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3Iu''@;'; put 'put ''dHMiKSxlLkNsclNoYXBlUGxheT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguMDcsMzEuNkEyLjA3LDIuMDcsMCwwLDEsNiwyOS41M1Y2LjMyQTIuMDcsMi4wNywwLDAsMSw5LDQuNDdMMzIuMjEsMTYuMDhh''@;'; put 'put ''Mi4wNywyLjA3LDAsMCwxLDAsMy43TDksMzEuMzhBMi4wNiwyLjA2LDAsMCwxLDguMDcsMzEuNlptMC0yNS4zNEw4LDYuMzJWMjkuNTNsLjEuMDZMMzEuMzEsMThhLjA2LjA2LDAsMCwwLDAtLjA2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIGQ9Ik0zMi4xNiwxNi4wOCw4Ljk0LDQuNDdBMi4wNywyLjA3LDAsMCwwLDYsNi4zMlYyOS41M2EyLjA2LDIuMDYsMCwwLDAsMywxLjg1TDMyLjE2LDE5Ljc3YTIuMDcsMi4wNywwLDAsMCwwLTMuN1oiLz4nKSxlLkNsclNoYXBlUGF1c2U9KDAsbC5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMi45MywzMkg2LjA3QTIuMDcsMi4wNywwLDAsMSw0LDI5LjkzVjYuMDdBMi4wNywyLjA3LDAsMCwxLDYuMDcsNGg2Ljg3QTIuMDcsMi4wNywwLDAsMSwxNSw2LjA3VjI5LjkzQTIuMDcsMi4wNyww''@;'; put 'put ''LDAsMSwxMi45MywzMlpNMTMsNkg2VjMwaDdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOS45MywzMkgyMy4wN0EyLjA3LDIuMDcsMCwwLDEsMjEsMjkuOTNWNi4wN0EyLjA3LDIuMDcsMCwwLDEsMjMu''@;'; put 'put ''MDcsNGg2Ljg3QTIuMDcsMi4wNywwLDAsMSwzMiw2LjA3VjI5LjkzQTIuMDcsMi4wNywwLDAsMSwyOS45MywzMlpNMzAsNkgyM1YzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjMuOTUiIHk9IjQiIHdpZHRo''@;'; put 'put ''PSIxMSIgaGVpZ2h0PSIyOCIgcng9IjIuMDciIHJ5PSIyLjA3Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgeD0iMjAuOTUiIHk9IjQiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyOCIgcng9IjIuMDciIHJ5PSIyLjA3Ii8+Jyks''@;'; put 'put ''ZS5DbHJTaGFwZVN0ZXBGb3J3YXJkPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNSwzMi4yM2EyLDIsMCwwLDEtMi0yVjUuNzdBMiwyLDAsMCwxLDYuMTcsNC4xNEwyMy4yMywxNi4zOGEyLDIsMCwwLDEsMCwz''@;'; put 'put ''LjI1aDBMNi4xNywzMS44NkEyLDIsMCwwLDEsNSwzMi4yM1pNNSw1Ljc3VjMwLjIzTDIyLjA3LDE4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzEsMzJIMjhhMiwyLDAsMCwxLTItMlY2YTIsMiwwLDAs''@;'; put 'put ''MSwyLTJoM2EyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMSwzMlpNMjgsNlYzMGgzVjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUsMzEuOWEyLDIsMCwwLDEtMi0yVjUuNDRBMiwyLDAsMCwxLDYuMTIs''@;'; put 'put ''My44MUwyMy4xOCwxNmEyLDIsMCwwLDEsMCwzLjI1aDBMNi4xMiwzMS41MkEyLDIsMCwwLDEsNSwzMS45WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjI1Ljk1IiB5PSIzLjY3IiB3aWR0aD0iNyIgaGVpZ2h0PSIy''@;'; put 'put ''OCIgcng9IjIiIHJ5PSIyIi8+JyksZS5DbHJTaGFwZVN0b3A9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwzMkg2YTIsMiwwLDAsMS0yLTJWNkEyLDIsMCwwLDEsNiw0SDMwYTIsMiwwLDAsMSwyLDJWMzBB''@;'; put 'put ''MiwyLDAsMCwxLDMwLDMyWk02LDZWMzBIMzBWNloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSIzLjk2IiB5PSI0IiB3aWR0aD0iMjcuOTkiIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLGUuQ2xyU2hhcGVQ''@;'; put 'put ''b3dlcj0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIxYTEsMSwwLDAsMS0xLTFWNGExLDEsMCwwLDEsMiwwVjIwQTEsMSwwLDAsMSwxOCwyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDM0LjE1YTE1LDE1LDAsMCwxLTcuNTItMjgsMSwxLDAsMCwxLDEsMS43MywxMywxMywwLDEsMCwxMywwLDEsMSwwLDEsMSwxLTEuNzMsMTUsMTUsMCwwLDEtNy41MiwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE4LDIxYTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMiwwVjIwQTEsMSwwLDAsMCwxOCwyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMyLjUxLDE1LjRIMzAuNDRhMTMsMTMsMCwxLDEtMTktNy41LDEsMSwwLDAsMC0xLTEuNzNBMTUsMTUsMCwxLDAsMzMsMTkuMTUsMTQuOSwxNC45LDAsMCwwLDMyLjUxLDE1LjRaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFM''@;'; put 'put ''MjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwyMWExLDEsMCwwLDEtMS0xVjRhMSwxLDAsMCwxLDIsMFYy''@;'; put 'put ''MEExLDEsMCwwLDEsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNWwtLjMxLDBBMTMsMTMsMCwxLDEsMTEuNDgsNy45YTEsMSwwLDAsMC0xLTEuNzMsMTUs''@;'; put 'put ''MTUsMCwxLDAsMjEuMzEsNy4xQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptLjA2LDE3LjY4YTEuMjgsMS4yOCwwLDAsMS0xLjI5LTEuMjhWOC42NWExLjI5LDEuMjksMCwwLDEs''@;'; put 'put ''Mi41OCwwVjE4LjRBMS4yOCwxLjI4LDAsMCwxLDE4LjA2LDE5LjY4Wk0xOCwyNy43OUE5Ljg4LDkuODgsMCwwLDEsMTIuMTcsOS44NWExLjQsMS40LDAsMCwxLDEuOTQuMzEsMS4zNywxLjM3LDAsMCwxLS4zMSwxLjkyLDcuMTgsNy4xOCwwLDEsMCwxMS40Myw1LjgsNy4wNyw3LjA3LDAsMCww''@;'; put 'put ''LTMtNS43NkExLjM3LDEuMzcsMCwwLDEsMjIsMTAuMmExLjQsMS40LDAsMCwxLDEuOTQtLjI5QTkuODgsOS44OCwwLDAsMSwxOCwyNy43OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBk''@;'; put 'put ''PSJNMzMuNjgsMTUuNGgtNkE5LjcsOS43LDAsMCwxLDI4LDE3Ljg5YTEwLDEwLDAsMSwxLTE1LjgzLTgsMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDgsNy4wOCwwLDAsMC0uNDUtMi40OUgyMi4yM0Ez''@;'; put 'put ''LjY5LDMuNjksMCwwLDEsMTkuMzUsMTR2NC40YTEuMjksMS4yOSwwLDAsMS0yLjU4LDBWOC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwdi43MWwzLjc2LTYuNTFBMTYsMTYsMCwxLDAsMzQsMThhMTYsMTYsMCwwLDAtLjIzLTIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMy41Ny0uOUE5LjgzLDkuODMsMCwwLDEsMjgsMTcuODlhMTAsMTAs''@;'; put 'put ''MCwxLDEtMTUuODMtOCwxLjQsMS40LDAsMCwxLDEuOTQuMzEsMS4zNywxLjM3LDAsMCwxLS4zMSwxLjkyLDcuMTgsNy4xOCwwLDEsMCwxMS40Myw1LjgsNy4wNyw3LjA3LDAsMCwwLTMtNS43NkExLjM3LDEuMzcsMCwwLDEsMjIsMTAuMmExLjM4LDEuMzgsMCwwLDEsMS41Mi0uNDksNy40NSw3''@;'; put 'put ''LjQ1LDAsMCwxLS4zLTYuODMsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzQTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk0xNi43Nyw4LjY1YTEuMjksMS4yOSwwLDAsMSwyLjU4LDBWMTguNGExLjI5LDEuMjksMCwwLDEtMi41OCwwWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBlUmV3aW5kPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTcuMDksMzEuNThsLTE1LjMyLTEyYTIsMiwwLDAsMSwwLTMuMTVsMTUuMzItMTJhMS45MywxLjkzLDAsMCwxLDIuMDYtLjIyQTEuNzcsMS43NywwLDAsMSwyMCw2djYuN0wzMC44Myw0LjQyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkEyLDIsMCwwLDEsMzQsNlYzMGEy''@;'; put 'put ''LDIsMCwwLDEtMS4xMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMkwyMCwyMy4zMVYzMGExLjc3LDEuNzcsMCwwLDEtLjg1LDEuNzksMS45NCwxLjk0LDAsMCwxLTIuMDYtLjIyWk0zMiwzMGwuMDYtMjRMMTgsMTYuOFY2TDMsMTgsMTgsMzBWMTkuMloiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNi45MiwzMS41OCwxLjYsMTkuNTdhMiwyLDAsMCwxLDAtMy4xNWwxNS4zMi0xMkExLjkzLDEuOTMsMCwwLDEsMTksNC4yLDEuODksMS44OSwwLDAsMSwyMCw2djYuN0wzMC42Niw0LjQyYTEuOTMsMS45Myww''@;'; put 'put ''LDAsMSwyLjA2LS4yMkEyLDIsMCwwLDEsMzMuODMsNlYzMGEyLDIsMCwwLDEtMS4xMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMkwyMCwyMy4zMVYzMGExLjg5LDEuODksMCwwLDEtMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMloiLz4nKSxlLkNsclNoYXBlRmFzdEZvcndh''@;'; put 'put ''cmQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy43NywzMS45MmEyLDIsMCwwLDEtLjg2LS4yQTEuODEsMS44MSwwLDAsMSwxNiwyOS45M3YtNi43TDUuMjQsMzEuNWExLjk0LDEuOTQsMCwwLDEtMi4wNi4y''@;'; put 'put ''MiwyLDIsMCwwLDEtMS4xMS0xLjc5di0yNEEyLDIsMCwwLDEsMy4xOCw0LjEyYTEuOTMsMS45MywwLDAsMSwyLjA2LjIyTDE2LDEyLjYxVjUuOTFhMS44MSwxLjgxLDAsMCwxLC45MS0xLjc5QTEuOTMsMS45MywwLDAsMSwxOSw0LjM0bDE1LjMyLDEyYTIsMiwwLDAsMSwwLDMuMTVMMTksMzEu''@;'; put 'put ''NUEyLDIsMCwwLDEsMTcuNzcsMzEuOTJabTAtMTIuOFYyOS45M2wxNS4yNi0xMi0xNS4zMi0xMiwuMDYsMTAuODFMNCw1LjkxdjI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE3LjcxLDMyYTIsMiwwLDAsMS0uODYt''@;'; put 'put ''LjJBMS43NywxLjc3LDAsMCwxLDE2LDMwdi02LjdMNS4xNywzMS41OGExLjk0LDEuOTQsMCwwLDEtMi4wNi4yMkEyLDIsMCwwLDEsMiwzMFY2QTIsMiwwLDAsMSwzLjExLDQuMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42OVY2YTEuNzcsMS43NywwLDAsMSwuODUtMS43OSwxLjkz''@;'; put 'put ''LDEuOTMsMCwwLDEsMi4wNi4yMmwxNS4zMiwxMmEyLDIsMCwwLDEsMCwzLjE1bC0xNS4zMiwxMkEyLDIsMCwwLDEsMTcuNzEsMzJaIi8+JyksZS5DbHJTaGFwZUNhbWVyYT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsOEgyNC43TDIzLjY0LDUuMjhBMiwyLDAsMCwwLDIxLjc4LDRI''@;'; put 'put ''MTQuMjJhMiwyLDAsMCwwLTEuODcsMS4yOEwxMS4zLDhINGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCwyMkg0VjEwaDguNjdsMS41NS00aDcuNTZsMS41NSw0SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LDE5YTksOSwwLDEsMCw5LTlBOSw5LDAsMCwwLDksMTlabTE2LjQsMEE3LjQsNy40LDAsMSwxLDE4LDExLjYsNy40MSw3LjQxLDAsMCwxLDI1LjQsMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTkuMzcsMTIuODNhLjguOCwwLDAsMC0uOC0uOEg2LjE3YS44LjgsMCwwLDAsMCwxLjZoMi40QS44LjgsMCwwLDAsOS4zNywxMi44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMTIuMzQsMTlhNS41Nyw1LjU3LDAsMCwwLDMuMjQsNWwuODUtMS4zN2E0LDQsMCwxLDEsNC4xMS02LjYxbC44Ni0xLjM4QTUuNTYsNS41NiwwLDAsMCwxMi4zNCwxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzIsOEgyNC43TDIzLjY0LDUuMjhBMiwyLDAsMCwwLDIxLjc4LDRIMTQuMjJhMiwyLDAsMCwwLTEuODcsMS4yOEwxMS4zLDhINGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFpNNi4xNywx''@;'; put 'put ''My42M2EuOC44LDAsMCwxLDAtMS42aDIuNGEuOC44LDAsMCwxLDAsMS42Wk0xOCwyOGE5LDksMCwxLDEsOS05QTksOSwwLDAsMSwxOCwyOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4xMSwxOS4wNmE3LjA3LDcu''@;'; put 'put ''MDcsMCwwLDAsNC4xMSw2LjQxbDEuMDktMS43NGE1LDUsMCwxLDEsNS4yMi04LjM5bDEuMDktMS43NmE3LjA2LDcuMDYsMCwwLDAtMTEuNTEsNS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxlLkNsclNoYXBlVmlkZW9DYW1lcmE9KDAsbC5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNCwxMC4zNGEyLjExLDIuMTEsMCwwLDAtMS4xNi0xLjksMiwyLDAsMCwwLTIuMTMuMTVMMjYsMTEuNlY4YTIsMiwwLDAsMC0yLTJINmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0''@;'; put 'put ''LDRIMjRhMiwyLDAsMCwwLDItMlYyNC40bDQuNjQsM2EyLjA3LDIuMDcsMCwwLDAsMi4yLjJBMi4xMSwyLjExLDAsMCwwLDM0LDI1LjY2Wk0zMS45MywyNS43N2MtLjA2LDAtLjExLDAtLjE5LS4wNkwyNCwyMC43N1YyOEg2YTIsMiwwLDAsMS0yLTJWMTBBMiwyLDAsMCwxLDYsOEgyNHY3LjIz''@;'; put 'put ''bDcuOC01YS4xMS4xMSwwLDAsMSwuMTMsMCwuMTEuMTEsMCwwLDEsLjA3LjExVjI1LjY2QS4xMS4xMSwwLDAsMSwzMS45MywyNS43N1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zLDkuMzUsMjYsMTIuOVY4YTIs''@;'; put 'put ''MiwwLDAsMC0yLTJINmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjRhMiwyLDAsMCwwLDItMlYyMy4wOGw2LjMsMy41NUExLjEsMS4xLDAsMCwwLDM0LDI1Ljc3VjEwLjJBMS4xLDEuMSwwLDAsMCwzMi4zLDkuMzVaIi8+JyksZS5DbHJTaGFwZVNodWZmbGU9KDAsbC5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yMS42MSwxMWg4LjYybC0zLjMsMy4zYTEsMSwwLDEsMCwxLjQxLDEuNDJMMzQsMTAuMDhsLS43MS0uNzFoMEwyOC4zNCw0LjQzYTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTEsOUgyMWEx''@;'; put 'put ''LDEsMCwwLDAtLjg2LjVMMTcuNSwxNC4wOWwxLjE2LDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTExLjA3LDI1LjA3SDNhMSwxLDAsMCwwLDAsMmg4LjY1YTEsMSwwLDAsMCwuODYtLjVMMTUuMTgsMjIsMTQs''@;'; put 'put ''MjBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTI4LjM0LDIwLjE3YTEsMSwwLDAsMC0xLjQxLDEuNDJsMy41LDMuNUgyMS42MUwxMi41MSw5LjUzYTEsMSwwLDAsMC0uODYtLjVIM2ExLDEsMCwxLDAsMCwyaDgu''@;'; put 'put ''MDdsOS4xLDE1LjU1YTEsMSwwLDAsMCwuODYuNUgyOS45bC0zLDNhMSwxLDAsMCwwLDEuNDEsMS40Mmw0Ljk1LTQuOTRoMGwuNzEtLjcxWiIvPicpLGUuQ2xyU2hhcGVWb2x1bWVEb3duPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMjMuNDEsMjUuMTFhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43M0E4LjIxLDguMjEsMCwwLDEsMjMuOTQsMjUsMSwxLDAsMCwxLDIzLjQxLDI1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzMmEyLDIsMCwwLDEtMS40Mi0uNTlMOS4xNCwyNEg0YTIsMiwwLDAsMS0yLTJWMTRhMiwyLDAsMCwxLDItMkg5LjIybDcuMzMtNy40MUEyLDIsMCwwLDEsMjAsNlYzMGEyLDIsMCwwLDEtMS4yNCwxLjg1QTIsMiwwLDAs''@;'; put 'put ''MSwxOCwzMlpNNCwxNHY4SDkuNTZhMSwxLDAsMCwxLC43MS4yOEwxOCwzMFY2bC03LjY1LDcuNjhhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAs''@;'; put 'put ''MS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSwwLDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9''@;'; put 'put ''Ik0xOC4zNCwzLjg3LDksMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEsMSwwLDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAsMzEuNTVWNC42MkExLDEsMCwwLDAsMTguMzQsMy44N1oiLz4nKSxlLkNsclNoYXBlVm9sdW1lVXA9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yMy40MSwyNS4yNWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczLDguMjEsOC4yMSwwLDAsMSwuMjQsMTQuMDZBMSwxLDAsMCwxLDIzLjQxLDI1LjI1WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNS42MiwzMS4xOGExLDEsMCwwLDEtLjQ1LTEuODlBMTIuNDQsMTIuNDQsMCwwLDAsMjUsNi44OWExLDEsMCwxLDEsLjg3LTEuOCwxNC40NCwxNC40NCwwLDAsMSwuMjQs''@;'; put 'put ''MjZBMSwxLDAsMCwxLDI1LjYyLDMxLjE4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzMi4wNmEyLDIsMCwwLDEtMS40Mi0uNTlMOS4xNCwyNEg0YTIsMiwwLDAsMS0yLTJWMTRhMiwyLDAsMCwxLDItMkg5''@;'; put 'put ''LjIybDcuMzMtNy4zOUEyLDIsMCwwLDEsMjAsNnYyNGEyLDIsMCwwLDEtMS4yNCwxLjg1QTIsMiwwLDAsMSwxOCwzMi4wNlpNNCwxNHY4SDkuNTZhMSwxLDAsMCwxLC43MS4zTDE4LDMwLjA2VjZMMTAuMzUsMTMuN2ExLDEsMCwwLDEtLjcxLjNaTTE4LDZaIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSwwLDAsMSwyMy40MSwyNS4y''@;'; put 'put ''NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNS42MiwzMS4xOGExLDEsMCwwLDEtLjQ1LTEuODlBMTIuNDQsMTIuNDQsMCwwLDAsMjUsNi44OWExLDEsMCwxLDEsLjg3LTEuOCwxNC40NCwxNC40NCwwLDAsMSwuMjQs''@;'; put 'put ''MjZBMSwxLDAsMCwxLDI1LjYyLDMxLjE4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE4LjMzLDQsOS4wNywxMmgtNmExLDEsMCwwLDAtMSwxdjkuOTJhMSwxLDAsMCwwLDEsMUg4Ljg4bDkuNDYsOC4yNEExLDEsMCww''@;'; put 'put ''LDAsMjAsMzEuNDNWNC43MkExLDEsMCwwLDAsMTguMzMsNFoiLz4nKSxlLkNsclNoYXBlVm9sdW1lTXV0ZT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMuNjEsNi40MSw5LjE5LDEySDRhMiwyLDAsMCwwLTIs''@;'; put 'put ''MnY4YTIsMiwwLDAsMCwyLDJIOS4xNGw3LjQxLDcuNDdBMiwyLDAsMCwwLDE4LDMyYTIsMiwwLDAsMCwuNzYtLjE1QTIsMiwwLDAsMCwyMCwzMFYyMi43N2w1Ljg5LDUuODljLS4yNS4xNS0uNDkuMjktLjc1LjQyYTEsMSwwLDAsMCwuOSwxLjc5LDE0LjQsMTQuNCwwLDAsMCwxLjMxLS43NWwy''@;'; put 'put ''LjI4LDIuMjhMMzEsMzEsNSw1Wk0xOCwzMGwtNy43My03Ljc3QTEsMSwwLDAsMCw5LjU2LDIySDRWMTRIOS42NGExLDEsMCwwLDAsLjcxLS4zbC4yNi0uMjZMMTgsMjAuODFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTI0Ljg5LDYuNjlBMTIuNDIsMTIuNDIsMCwwLDEsMjksMjYuMWwxLjQyLDEuNDJBMTQuNDIsMTQuNDIsMCwwLDAsMjUuNzYsNC44OGExLDEsMCwxLDAtLjg3LDEuOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBk''@;'; put 'put ''PSJNMjIuNjksMTIuNjJBNi4yNyw2LjI3LDAsMCwxLDI1LjgsMThhNi4xNyw2LjE3LDAsMCwxLTEuMjQsMy43MUwyNiwyMy4xM0E4LjE1LDguMTUsMCwwLDAsMjcuOCwxOGE4LjI4LDguMjgsMCwwLDAtNC4xLTcuMTEsMSwxLDAsMSwwLTEsMS43M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTgsNnY5LjE1bDIsMlY2YTIsMiwwLDAsMC0zLjQyLTEuNDFMMTIsOS4xN2wxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJN''@;'; put 'put ''MjQuODcsNi42OUExMi40MiwxMi40MiwwLDAsMSwyOC43NSwyNi4zbDEuNDIsMS40MkExNC40MywxNC40MywwLDAsMCwyNS43NCw0Ljg4YTEsMSwwLDAsMC0uODcsMS44WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI3''@;'; put 'put ''LjMsMjcuNjdoMGwtMy44NC0zLjg0LS41Ny0uNTdoMEw0LjYzLDUsMy4yMSw2LjQxLDguOCwxMkgzYTEsMSwwLDAsMC0xLDFWMjNhMSwxLDAsMCwwLDEsMUg4LjgzbDkuNTEsOC4zQTEsMSwwLDAsMCwyMCwzMS41NVYyMy4ybDUuNTksNS41OWMtLjE3LjEtLjM0LjItLjUxLjI5YTEsMSwwLDAs''@;'; put 'put ''MCwuOSwxLjc5Yy4zNy0uMTkuNzItLjQsMS4wOC0uNjJsMi4xNCwyLjE0TDMwLjYxLDMxbC0zLjI1LTMuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjIuNjksMTIuNjJBNi4yNyw2LjI3LDAsMCwxLDI1LjgsMThh''@;'; put 'put ''Ni4xNyw2LjE3LDAsMCwxLTEuNDIsMy45MmwxLjQyLDEuNDJhOC4xNiw4LjE2LDAsMCwwLDItNS4zNCw4LjI4LDguMjgsMCwwLDAtNC4xLTcuMTEsMSwxLDAsMSwwLTEsMS43M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9''@;'; put 'put ''Ik0yMCw0LjYyYTEsMSwwLDAsMC0xLjY2LS43NWwtNi40Miw1LjZMMjAsMTcuNTRaIi8+JyksZS5DbHJTaGFwZUhlYWRwaG9uZXM9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwzQTE0LjI3LDE0LjI3LDAs''@;'; put 'put ''MCwwLDQsMTcuNVYzMUg5LjJBMi43NCwyLjc0LDAsMCwwLDEyLDI4LjMzVjIxLjY3QTIuNzQsMi43NCwwLDAsMCw5LjIsMTlINlYxNy41QTEyLjI3LDEyLjI3LDAsMCwxLDE4LDUsMTIuMjcsMTIuMjcsMCwwLDEsMzAsMTcuNVYxOUgyNi44QTIuNzQsMi43NCwwLDAsMCwyNCwyMS42N3Y2LjY3''@;'; put 'put ''QTIuNzQsMi43NCwwLDAsMCwyNi44LDMxSDMyVjE3LjVBMTQuMjcsMTQuMjcsMCwwLDAsMTgsM1pNOS4yLDIxYS43NS43NSwwLDAsMSwuOC42N3Y2LjY3YS43NS43NSwwLDAsMS0uOC42N0g2VjIxWk0yNiwyOC4zM1YyMS42N2EuNzUuNzUsMCwwLDEsLjgtLjY3SDMwdjhIMjYuOEEuNzUuNzUs''@;'; put 'put ''MCwwLDEsMjYsMjguMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOC4yQTEuNzQsMS43NCwwLDAsMCwxMCwyOS4zM1YyMi42N0ExLjc0LDEuNzQsMCwwLDAs''@;'; put 'put ''OC4yLDIxSDZWMTcuNUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3LDEyLjI3LDAsMCwxLDMwLDE3LjVWMjFIMjcuOEExLjc0LDEuNzQsMCwwLDAsMjYsMjIuNjd2Ni42N0ExLjc0LDEuNzQsMCwwLDAsMjcuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaIi8+JyksZS5D''@;'; put 'put ''bHJTaGFwZUZpbG1TdHJpcD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wm0wLDI2''@;'; put 'put ''SDZWNkgzMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTQuNiwyMy4wN2ExLjI5LDEuMjksMCwwLDAsMS4yNC4wOWw4LjczLTRhMS4zLDEuMywwLDAsMCwwLTIuMzdoMGwtOC43My00QTEuMywxLjMsMCwwLDAs''@;'; put 'put ''MTQsMTR2OEExLjI5LDEuMjksMCwwLDAsMTQuNiwyMy4wN1ptMS04LjZMMjMuMzEsMTgsMTUuNiwyMS41MVoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI4IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTQiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIyMCIg''@;'; put 'put ''eT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjI2IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iOCIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIxNCIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiB4PSIyMCIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iMjYiIHk9''@;'; put 'put ''IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTIw''@;'; put 'put ''LDdoMnYzSDIwWk0xNCw3aDJ2M0gxNFpNMTAsMjlIOFYyNmgyWm0wLTE5SDhWN2gyWm02LDE5SDE0VjI2aDJabTYsMEgyMFYyNmgyWm0zLjE2LTEwLjE2TDE1LjM5LDIzLjJBMSwxLDAsMCwxLDE0LDIyLjI4VjEzLjU3YTEsMSwwLDAsMSwxLjQxLS45MUwyNS4xNiwxN0ExLDEsMCwwLDEsMjUu''@;'; put 'put ''MTYsMTguODRaTTI4LDI5SDI2VjI2aDJabTAtMTlIMjZWN2gyWiIvPicpLGUuQ2xyU2hhcGVNdXNpY05vdGU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiXG4gICAgICAgICAgICAgICAgZD0iTTMxLjY4LDYuMTZjLTEu''@;'; put 'put ''OTItMy4zLTEwLjYtNC0xMS41OC00LjA5TDE5LDJWMjIuMzRhNS44OSw1Ljg5LDAsMCwwLS44Mi0uNTYsOC4zMyw4LjMzLDAsMCwwLTYuNTMtLjQxQzcuNTcsMjIuNyw0LjkyLDI2LjUsNS43OCwyOS44NGE1LjMzLDUuMzMsMCwwLDAsMi42NiwzLjMyLDcuNDgsNy40OCwwLDAsMCwzLjYxLjg4''@;'; put 'put ''QTkuNTQsOS41NCwwLDAsMCwxNSwzMy41N2MzLjY3LTEuMTgsNi4xNy00LjMzLDYuMDYtNy4zNlY5LjM0YTI5LjE0LDI5LjE0LDAsMCwxLDYuNTUsMS40MywxLDEsMCwxLDAsLjcyLTEuODdBMzEuMzcsMzEuMzcsMCwwLDAsMjEsNy4zM1Y0LjE3YzMuMzMuMzYsOCwxLjM4LDguOTIsMywyLDMu''@;'; put 'put ''NDEtMi4zMyw3LjM2LTIuMzcsNy40YTEsMSwwLDAsMCwxLjMzLDEuNDlDMjkuMTUsMTUuODUsMzQuNSwxMSwzMS42OCw2LjE2Wk0xNC4zNSwzMS42N2E2LjQzLDYuNDMsMCwwLDEtNS0uMjYsMy4zMSwzLjMxLDAsMCwxLTEuNjktMi4wN2MtLjYtMi4zMywxLjQ1LTUuMDUsNC41OC02LjA2YTcu''@;'; put 'put ''NTIsNy41MiwwLDAsMSwyLjMtLjM3LDUuNTIsNS41MiwwLDAsMSwyLjY1LjYyLDMuMzEsMy4zMSwwLDAsMSwxLjY5LDIuMDdDMTkuNTQsMjcuOTQsMTcuNDksMzAuNjYsMTQuMzUsMzEuNjdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMS42OCw2LjE2Yy0xLjkyLTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjI5YTUuODgsNS44OCwwLDAsMC0uODEtLjU1LDguMzMsOC4zMywwLDAsMC02LjUzLS40MWMtNC4xMiwxLjMzLTYuNzcsNS4xMy01LjkxLDguNDdhNS4zMyw1LjMz''@;'; put 'put ''LDAsMCwwLDIuNjYsMy4zMiw3LjQ4LDcuNDgsMCwwLDAsMy42MS44OEE5LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTJjMy43LTEuMTksNi4yLTQuMzcsNi4wNi03LjQyLDAsMCwwLDAsMCwwVjguNDljMSwuMTIsMi4zNy4zMywzLjgyLjY0YTExLjE3LDExLjE3LDAsMCwxLDQuMDYsMS40NmMxLC42''@;'; put 'put ''Ni4zOCwxLjkuMzMsMmExMS44LDExLjgsMCwwLDEtMS42NiwyLDEsMSwwLDAsMCwxLjMzLDEuNDlDMjkuMTUsMTUuODUsMzQuNSwxMSwzMS42OCw2LjE2WiIvPicpLGUuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwx''@;'; put 'put ''Ljg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPjxwYXRoIGQ9Ik04LjU2LDE5LjQ1YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguNTYsMTkuNDVabTAtNC42QTEuNiwxLjYsMCwxLDEsNywxNi40NSwxLjYsMS42LDAsMCwxLDguNTYsMTQuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48''@;'; put 'put ''cGF0aCBkPSJNNy45LDI4bDYtNiwzLjE4LDMuMThMMTQuMjYsMjhoMmw3LjQ2LTcuNDZMMzAsMjYuNzd2LTJMMjQuMiwxOWEuNzEuNzEsMCwwLDAtMSwwbC01LjE2LDUuMTZMMTQuMzcsMjAuNWEuNzEuNzEsMCwwLDAtMSwwTDUuOTIsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEs''@;'; put 'put ''MCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAv''@;'; put 'put ''PjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44''@;'; put 'put ''OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTguNTYsMTMuNDVhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC41NiwxMy40NVpNMzAsMjhoLTI0bDcuNDYtNy40N2EuNzEuNzEsMCwwLDEsMSwwbDMu''@;'; put 'put ''NjgsMy42OEwyMy4yMSwxOWEuNzEuNzEsMCwwLDEsMSwwTDMwLDI0Ljc5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlUmVwbGF5QWxsPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNy40NiwyNi4yMmExLjQsMS40LDAsMCwwLDEt''@;'; put 'put ''LjQybDUuNTktNS41NmExLjQzLDEuNDMsMCwwLDAsLjQyLTEsMS40NiwxLjQ2LDAsMCwwLS40Mi0xbC01LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLTIuNDQsMVYyNC43OWExLjQxLDEuNDEsMCwwLDAsLjg4LDEuMzJBMS41NCwxLjU0LDAsMCwwLDE3LjQ2LDI2LjIyWm0uMTYtMTIuMTYsNS4x''@;'; put 'put ''OSw1LjE2LTUuMTksNS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiw1aC02LjdsMi45Mi0yLjY0QTEsMSwwLDAsMCwxMi45NC44OEw3LjMyLDYsMTIuOTQsMTFhMSwxLDAsMCwwLC42Ny4yNiwxLDEsMCwwLDAsLjc0LS4z''@;'; put 'put ''MywxLDEsMCwwLDAtLjA3LTEuNDJMMTEuNDYsN2g2LjZBMTEuNzgsMTEuNzgsMCwxLDEsNy43MSwyNC40MSwxLDEsMCwwLDAsNiwyNS4zNiwxMy43OCwxMy43OCwwLDEsMCwxOC4wNiw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFw''@;'; put 'put ''ZVJlcGxheU9uZT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTksMjcuMjdhMSwxLDAsMCwwLDEtMVYxNGExLDEsMCwwLDAtMS0xSDE5YTMuOCwzLjgsMCwwLDAtMS4xLjIzbC0yLC42MmEuOTIuOTIsMCwwLDAtLjcyLjg2Ljg4Ljg4LDAsMCwwLC44OC44NiwxLjQ2LDEuNDYsMCwwLDAs''@;'; put 'put ''LjQzLS4wOEwxOCwxNS4wN3YxMS4yQTEsMSwwLDAsMCwxOSwyNy4yN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiw1aC02LjdsMi45Mi0yLjY0QTEsMSwwLDAsMCwxMi45NC44OEw3LjMyLDYsMTIuOTQsMTFhMSwxLDAsMCww''@;'; put 'put ''LC42Ny4yNiwxLDEsMCwwLDAsLjc0LS4zMywxLDEsMCwwLDAtLjA3LTEuNDJMMTEuNDYsN2g2LjZBMTEuNzgsMTEuNzgsMCwxLDEsNy43MSwyNC40MSwxLDEsMCwwLDAsNiwyNS4zNiwxMy43OCwxMy43OCwwLDEsMCwxOC4wNiw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZVZpZGVvR2FsbGVyeT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJW''@;'; put 'put ''MTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk0zMiwzMEg0VjEySDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTIuODIsMjYuNzlhMS43''@;'; put 'put ''NCwxLjc0LDAsMCwwLC45My4yOCwxLjY4LDEuNjgsMCwwLDAsLjY5LS4xNWw5Ljc3LTQuMzZhMS42OSwxLjY5LDAsMCwwLDAtMy4xTDE0LjQ0LDE1LjFhMS43LDEuNywwLDAsMC0yLjM5LDEuNTV2OC43MkExLjcsMS43LDAsMCwwLDEyLjgyLDI2Ljc5Wm0uNjMtMTAuMTRhLjI5LjI5LDAsMCwx''@;'; put 'put ''LC4xNC0uMjUuMy4zLDAsMCwxLC4xNiwwLC4yNy4yNywwLDAsMSwuMTIsMGw5Ljc3LDQuMzVhLjI5LjI5LDAsMCwxLC4xOC4yOC4yOC4yOCwwLDAsMS0uMTguMjdsLTkuNzcsNC4zNmEuMjguMjgsMCwwLDEtLjI4LDAsLjMxLjMxLDAsMCwxLS4xNC0uMjVaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEw''@;'; put 'put ''Wk0yNC4xOCwyMS44M2wtOS43Nyw0LjM2QTEsMSwwLDAsMSwxMywyNS4yOFYxNi41NmExLDEsMCwwLDEsMS40MS0uOTFMMjQuMTgsMjBBMSwxLDAsMCwxLDI0LjE4LDIxLjgzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEs''@;'; put 'put ''MSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlTWljcm9waG9uZT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjRjMy45LDAsNy0zLjEsNy03VjljMC0zLjktMy4xLTctNy03cy03LDMuMS03LDd2OEMxMSwyMC45LDE0LjEsMjQsMTgsMjR6IE0xMyw5YzAtMi44LDIuMi01LDUt''@;'; put 'put ''NXM1LDIuMiw1LDV2OFxuXHRcdGMwLDIuOC0yLjIsNS01LDVzLTUtMi4yLTUtNVY5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwxMC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDEx''@;'; put 'put ''LDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwyMy4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4''@;'; put 'put ''LDI0YzMuOSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywzLjEtNyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTdoLTJjMCw1LjUtNC41LDEwLTEwLDEwUzgsMjIuNSw4LDE3''@;'; put 'put ''SDZjMCw2LjMsNC44LDExLjQsMTEsMTEuOVYzMmgtM2MtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zLjFDMjUuMiwyOC40LDMwLDIzLjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''IiAvPicpLGUuQ2xyU2hhcGVNaWNyb3Bob25lTXV0ZT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsMTdoLTJjMCwxLjgtMC41LDMuNS0xLjQsNWwxLjUsMS41QzI5LjMsMjEuNSwyOS45LDE5LjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz48cGF0aCBkPSJNMTgsNGMyLjgsMCw1LDIuMiw1LDV2OGMwLDAuNC0wLjEsMC44LTAuMiwxLjJsMS42LDEuNmMwLjQtMC45LDAuNi0xLjgsMC42LTIuOFY5YzAtMy45LTMuMi03LTcuMS02Ljlcblx0XHRjLTIuOSwwLTUuNiwxLjktNi41LDQuN0wxMyw4LjNDMTMuNSw1LjksMTUuNiw0''@;'; put 'put ''LjIsMTgsNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNS4yLDI2LjZsNi45LDYuOWwxLjQtMS40TDQsMi42TDIuNiw0bDguNCw4LjRWMTdjMCwzLjksMy4xLDcsNyw3YzEuMywwLDIuNS0wLjMsMy42LTFsMi4yLDIuMkMyMi4xLDI2''@;'; put 'put ''LjQsMjAuMSwyNywxOCwyN1xuXHRcdGMtNS40LDAuMi05LjgtNC4xLTEwLTkuNGMwLTAuMiwwLTAuNCwwLTAuNkg2YzAuMSw2LjIsNC44LDExLjQsMTEsMTJ2M2gtM2MtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zQzIx''@;'; put 'put ''LjIsMjguOCwyMy40LDI4LDI1LjIsMjYuNnogTTEzLjgsMTkuN0MxMy4zLDE4LjksMTMsMTgsMTMsMTd2LTIuNmw3LjEsNy4xQzE3LjksMjIuNSwxNS4yLDIxLjgsMTMuOCwxOS43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLDE3''@;'; put 'put ''aC0yYzAsMS44LTAuNSwzLjUtMS40LDVsMS41LDEuNUMyOS4zLDIxLjUsMjkuOSwxOS4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMjUsMTdWOWMwLTMuOS0zLjItNy03LjEtNi45Yy0yLjksMC01LjYsMS45LTYuNSw0LjdsMTMs''@;'; put 'put ''MTNDMjQuOCwxOC45LDI1LDE3LjksMjUsMTd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNS4yLDI2LjZsNi45LDYuOWwxLjQtMS40TDQsMi42TDIuNiw0bDguNCw4LjRWMTdjMCwzLjksMy4xLDcsNyw3YzEuMywwLDIuNS0wLjMsMy42LTFs''@;'; put 'put ''Mi4yLDIuMkMyMi4xLDI2LjQsMjAuMSwyNywxOCwyN1xuXHRcdGMtNS40LDAuMi05LjgtNC4xLTEwLTkuNGMwLTAuMiwwLTAuNCwwLTAuNkg2YzAuMSw2LjIsNC44LDExLjQsMTEsMTJ2M2gtM2MtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40''@;'; put 'put ''LTEtMS0xaC0zdi0zQzIxLjIsMjguOCwyMy40LDI4LDI1LjIsMjYuNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5NZWRpYVNoYXBlcz17cGxheTplLkNsclNoYXBlUGxheSxwYXVzZTplLkNsclNoYXBlUGF1c2UsInN0ZXAtZm9yd2FyZCI6ZS5DbHJT''@;'; put 'put ''aGFwZVN0ZXBGb3J3YXJkLHN0b3A6ZS5DbHJTaGFwZVN0b3AscG93ZXI6ZS5DbHJTaGFwZVBvd2VyLHJld2luZDplLkNsclNoYXBlUmV3aW5kLCJmYXN0LWZvcndhcmQiOmUuQ2xyU2hhcGVGYXN0Rm9yd2FyZCxjYW1lcmE6ZS5DbHJTaGFwZUNhbWVyYSwidmlkZW8tY2FtZXJhIjplLkNsclNo''@;'; put 'put ''YXBlVmlkZW9DYW1lcmEsc2h1ZmZsZTplLkNsclNoYXBlU2h1ZmZsZSwidm9sdW1lLXVwIjplLkNsclNoYXBlVm9sdW1lVXAsInZvbHVtZS1kb3duIjplLkNsclNoYXBlVm9sdW1lRG93biwidm9sdW1lLW11dGUiOmUuQ2xyU2hhcGVWb2x1bWVNdXRlLGhlYWRwaG9uZXM6ZS5DbHJTaGFwZUhl''@;'; put 'put ''YWRwaG9uZXMsImZpbG0tc3RyaXAiOmUuQ2xyU2hhcGVGaWxtU3RyaXAsIm11c2ljLW5vdGUiOmUuQ2xyU2hhcGVNdXNpY05vdGUsImltYWdlLWdhbGxlcnkiOmUuQ2xyU2hhcGVJbWFnZUdhbGxlcnksInJlcGxheS1hbGwiOmUuQ2xyU2hhcGVSZXBsYXlBbGwsInJlcGxheS1vbmUiOmUuQ2xy''@;'; put 'put ''U2hhcGVSZXBsYXlPbmUsInZpZGVvLWdhbGxlcnkiOmUuQ2xyU2hhcGVWaWRlb0dhbGxlcnksbWljcm9waG9uZTplLkNsclNoYXBlTWljcm9waG9uZSwibWljcm9waG9uZS1tdXRlIjplLkNsclNoYXBlTWljcm9waG9uZU11dGV9LCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cu''@;'; put 'put ''aGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChlLk1lZGlhU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsYyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlNvY2lhbFNoYXBlcz1lLkNsclNoYXBlSGFzaHRhZz1lLkNsclNoYXBlQ3Jvd249ZS5DbHJTaGFwZVRodW1ic0Rvd249ZS5DbHJTaGFwZVRodW1ic1VwPWUuQ2xyU2hhcGVTYWRGYWNlPWUuQ2xyU2hhcGVOZXV0cmFsRmFjZT1lLkNs''@;'; put 'put ''clNoYXBlSGFwcHlGYWNlPWUuQ2xyU2hhcGVQaWN0dXJlPWUuQ2xyU2hhcGVDaGF0QnViYmxlPWUuQ2xyU2hhcGVUYWxrQnViYmxlcz1lLkNsclNoYXBlSGVhcnRCcm9rZW49ZS5DbHJTaGFwZUhlYXJ0PWUuQ2xyU2hhcGVJbmJveD1lLkNsclNoYXBlRmxhZz1lLkNsclNoYXBlVGFza3M9ZS5D''@;'; put 'put ''bHJTaGFwZUVudmVsb3BlPWUuQ2xyU2hhcGVCb29rbWFyaz1lLkNsclNoYXBlSGFsZlN0YXI9ZS5DbHJTaGFwZVN0YXI9ZS5DbHJTaGFwZVNoYXJlPXZvaWQgMDt2YXIgcj1jKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLGE9YygiLi9wcm9qZWN0''@;'; put 'put ''cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtjPWMoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpLGUuQ2xyU2hhcGVTaGFyZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTTI3LjUzLDI0YTUsNSwwLDAsMC0zLjYsMS41NUwxMS43NCwxOS40NWE0LjQ3LDQuNDcsMCwwLDAsMC0yLjhsMTIuMjEtNi4yMWE1LjEyLDUuMTIsMCwxLDAtMS4wNy0xLjdMMTAuNzksMTQuODlhNSw1LDAsMSwwLDAsNi4zM2wxMi4wNiw2LjA3QTQuOTMsNC45MywwLDAs''@;'; put 'put ''MCwyMi41NCwyOWE1LDUsMCwxLDAsNS01Wm0wLTIwYTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDI3LjUzLDRaTTcsMjFhMywzLDAsMSwxLDMtM0EzLDMsMCwwLDEsNywyMVpNMjcuNTMsMzJhMywzLDAsMSwxLDMtM0EzLDMsMCwwLDEsMjcuNTMsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI3LjUzLDI0YTUsNSwwLDAsMC0zLjYsMS41NUwxMS43NCwxOS40NWE0LjQ3LDQuNDcsMCwwLDAsMC0yLjhsMTIuMjEtNi4yMWE1LjEyLDUuMTIsMCwxLDAtMS4wNy0xLjdMMTAuNzksMTQuODlhNSw1LDAsMSww''@;'; put 'put ''LDAsNi4zM2wxMi4wNiw2LjA3QTQuOTMsNC45MywwLDAsMCwyMi41NCwyOWE1LDUsMCwxLDAsNS01WiIvPicpLGUuQ2xyU2hhcGVTdGFyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTksMzRhMi4yMiwy''@;'; put 'put ''LjIyLDAsMCwxLTEuMjQtLjM4bC03LjQ2LTVhLjIyLjIyLDAsMCwwLS4yNSwwbC03LjQ2LDVBMi4yMiwyLjIyLDAsMCwxLDcuNCwzMS4yMWwyLjQ1LTguNjRhLjIzLjIzLDAsMCwwLS4wOC0uMjRMMi43MSwxNi43OGEyLjIyLDIuMjIsMCwwLDEsMS4yOS00bDktLjM0YS4yMy4yMywwLDAsMCwu''@;'; put 'put ''Mi0uMTVsMy4xLTguNDNhMi4yMiwyLjIyLDAsMCwxLDQuMTcsMGwzLjEsOC40M2EuMjMuMjMsMCwwLDAsLjIuMTVsOSwuMzRhMi4yMiwyLjIyLDAsMCwxLDEuMjksNEwyNywyMi4zM2EuMjIuMjIsMCwwLDAtLjA4LjI0bDIuNDUsOC42NEEyLjIzLDIuMjMsMCwwLDEsMjcuMTksMzRabS04Ljgy''@;'; put 'put ''LTcuNDJBMi4yMSwyLjIxLDAsMCwxLDE5LjYsMjdsNy40Niw1YS4yMi4yMiwwLDAsMCwuMzQtLjI1bC0yLjQ1LTguNjRhMi4yMSwyLjIxLDAsMCwxLC43Ny0yLjM1bDcuMDYtNS41NWEuMjIuMjIsMCwwLDAtLjEzLS40bC05LS4zNGEyLjIyLDIuMjIsMCwwLDEtMi0xLjQ2bC0zLjEtOC40M2Eu''@;'; put 'put ''MjIuMjIsMCwwLDAtLjQyLDBMMTUuMDYsMTNhMi4yMiwyLjIyLDAsMCwxLTIsMS40NmwtOSwuMzRhLjIyLjIyLDAsMCwwLS4xMy40TDExLDIwLjc2YTIuMjIsMi4yMiwwLDAsMSwuNzcsMi4zNUw5LjMzLDMxLjc1YS4yMS4yMSwwLDAsMCwuMDguMjQuMi4yLDAsMCwwLC4yNiwwbDcuNDYtNUEy''@;'; put 'put ''LjIyLDIuMjIsMCwwLDEsMTguMzYsMjYuNjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAsMC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5''@;'; put 'put ''YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0uMi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIzLjIzLDAsMCwxLC4wOC4yNEw3LjM1LDMxLjIxYTIuMjIsMi4yMiwwLDAsMCwzLjM4LDIuNDVsNy40Ni01YS4yMi4yMiww''@;'; put 'put ''LDAsMSwuMjUsMGw3LjQ2LDVhMi4yLDIuMiwwLDAsMCwyLjU1LDAsMi4yLDIuMiwwLDAsMCwuODMtMi40bC0yLjQ1LTguNjRhLjIyLjIyLDAsMCwxLC4wOC0uMjRaIi8+JyksZS5DbHJTaGFwZUhhbGZTdGFyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIyLDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcsMGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCww''@;'; put 'put ''LDAtMS4yOSw0bDcuMDYsNS41NWEuMjIuMjIsMCwwLDEsLjA4LjI0TDcuMzUsMzEuMjFBMi4yMywyLjIzLDAsMCwwLDkuNDksMzRhMi4yMiwyLjIyLDAsMCwwLDEuMjQtLjM4bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMjIsMi4yMiwwLDAsMCwzLjM4LTIuNDVsLTIuNDUt''@;'; put 'put ''OC42NGEuMjMuMjMsMCwwLDEsLjA4LS4yNFpNMTguMzMsMjYuNjJoMGEyLjIxLDIuMjEsMCwwLDAtMS4yNC4zOEw5LjYyLDMyYS4yMi4yMiwwLDAsMS0uMzQtLjI1bDIuNDUtOC42NEEyLjIxLDIuMjEsMCwwLDAsMTEsMjAuNzZMMy45LDE1LjIxYS4yMi4yMiwwLDAsMSwuMTMtLjRsOS0uMzRB''@;'; put 'put ''Mi4yMiwyLjIyLDAsMCwwLDE1LDEzbDMuMS04LjQzYS4yLjIsMCwwLDEsLjIxLS4xNWgwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMu''@;'; put 'put ''MjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEtLjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAs''@;'; put 'put ''My4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIsMCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0Wk0yNC45LDIzLjExbDIuNDUsOC42NEEuMjIuMjIsMCwwLDEsMjcsMzJsLTcuNDYt''@;'; put 'put ''NWEyLjIxLDIuMjEsMCwwLDAtMS4yNC0uMzhoMFY0LjQ0aDBhLjIuMiwwLDAsMSwuMjEuMTVMMjEuNjIsMTNhMi4yMiwyLjIyLDAsMCwwLDIsMS40Nmw5LC4zNGEuMjIuMjIsMCwwLDEsLjEzLjRsLTcuMDYsNS41NUEyLjIxLDIuMjEsMCwwLDAsMjQuOSwyMy4xMVoiLz4nKSxlLkNsclNoYXBl''@;'; put 'put ''Qm9va21hcms9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNiwzNGEyLDIsMCwwLDEtMS40MS0uNThMMTgsMjYuODJsLTYuNTQsNi41MkEyLDIsMCwwLDEsOCwzMS45M1Y0YTIsMiwwLDAsMSwyLTJIMjZhMiwy''@;'; put 'put ''LDAsMCwxLDIsMlYzMmEyLDIsMCwwLDEtMiwyWm0wLTJoMFY0SDEwVjMxLjkzTDE4LDI0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwySDEwQTIsMiwwLDAsMCw4LDRWMzEuOTNhMiwyLDAsMCwwLDMuNDIs''@;'; put 'put ''MS40MWw2LjU0LTYuNTIsNi42Myw2LjZBMiwyLDAsMCwwLDI4LDMyVjRBMiwyLDAsMCwwLDI2LDJaIi8+JyksZS5DbHJTaGFwZUVudmVsb3BlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNkg0QTIsMiww''@;'; put 'put ''LDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTMwLjQ2LDI4SDUuNjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCwwLDIuODIsMEwzMiw5LjIxdjE3LjVsLTcuMzYtNy4zNi0xLjQxLDEu''@;'; put 'put ''NDFaTTUuMzEsOEgzMC4zOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMiwxMy4wOFYyNi43MWwtNy4zNi03LjM2LTEuNDEsMS40MUwzMC40NiwyOEg1''@;'; put 'put ''LjY2bDctNy4yNC0xLjQ0LTEuMzlMNCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5YTIsMiwwLDAsMCwyLjgyLDBsOC44My04Ljc4YTcuNDQsNy40NCwwLDAsMS0yLS44NWwtOC4yNiw4LjIxTDUuMzEsOEgyMi44MWE3LjQ5LDcuNDksMCwwLDEtLjMxLTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4yQTcuNDUsNy40NSwwLDAsMSwzMiwxMy4wOFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBj''@;'; put 'put ''eT0iNS44NiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuMjZIMzJWMjYuNzFsLTcuMzYtNy4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcu''@;'; put 'put ''MjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEyLDIsMCwwLDAsMi44MiwwbDYuNjYtNi42M0gyMy4wOGwtNS4yNCw1LjIxTDUuMzEsOEgyMC4wNmwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4yNFoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDFsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEu''@;'; put 'put ''MS0xLjkxTDI5LjA2LDFBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjMzLDZhMiwyLDAsMCwwLS40MSwwaC0yOGEyLDIsMCwwLDAtLjUzLjA4TDE3Ljg0LDIwLjQ3''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy44MSw3LjM5LDE5LjI1LDIxLjg5YTIsMiwwLDAsMS0yLjgyLDBMMiw3LjVhMiwyLDAsMCwwLS4wNy41VjI4YTIsMiwwLDAsMCwyLDJoMjhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY4QTIsMiwwLDAsMCwzMy44MSw3LjM5Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSwwSDMwLjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI2LDEyLjM0QTcuNDksNy40OSwwLDAsMSwyMi41LDZIMy45MmEyLDIsMCwwLDAtLjUzLjA4TDE3Ljg0LDIwLjQ3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtMi0uMjlsLTguNzEsOC42OGEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWMTIuMzlBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTUu''@;'; put 'put ''MywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwxLjQxLDEuNDFabTI2LjYxLDBIMzAuNTFsLTcuMjktNy4yMywxLjQxLTEuNDEsNy4yNyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNS43N2wtNi41Miw2LjQ5YTIsMiwwLDAsMS0yLjgyLDBM''@;'; put 'put ''Miw3LjVhMiwyLDAsMCwwLS4wNy41VjI4YTIsMiwwLDAsMCwyLDJoMjhhMiwyLDAsMCwwLDItMlYxNS4zOFpNNS4zLDI4SDMuOTFWMjYuNTdsNy4yNy03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEuNDEtMS40MSw3LjI3LDcuMjFaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTIyLjk0LDE1LjRoLS43QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMy45MmEyLDIsMCwwLDAtLjUzLjA4TDE3Ljg0LDIwLjQ3WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjku''@;'; put 'put ''MDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxlLkNsclNoYXBlVGFza3M9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4yOSwzNEg2LjcxQTEuNywxLjcsMCwwLDEsNSwzMi4zMVY2''@;'; put 'put ''LjY5QTEuNzUsMS43NSwwLDAsMSw3LDVIOVY3SDdWMzJIMjlWN0gyN1Y1aDIuMjVBMS43LDEuNywwLDAsMSwzMSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDEsMjkuMjksMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIGQ9Ik0xNi42NiwyNS43NiwxMS4zLDIwLjRBMSwxLDAsMCwxLDEyLjcyLDE5bDMuOTQsMy45NCw4LjY0LTguNjRhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTI2''@;'; put 'put ''LDExSDEwVjcuMzNBMi4zNCwyLjM0LDAsMCwxLDEyLjMzLDVoMS43OWE0LDQsMCwwLDEsNy43NSwwaDEuNzlBMi4zNCwyLjM0LDAsMCwxLDI2LDcuMzNaTTEyLDlIMjRWNy4zM0EuMzMuMzMsMCwwLDAsMjMuNjcsN0gyMFY2YTIsMiwwLDAsMC00LDBWN0gxMi4zM2EuMzMuMzMsMCwwLDAtLjMz''@;'; put 'put ''LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTksOS44OSwxOS41Niw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoLjcx''@;'; put 'put ''bDEuMTYtMmE0LDQsMCwwLDAtNy43NCwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExaDguNjRBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0yNC4xOSwxNS40bC03LjUzLDcuNTNMMTIuNzIsMTlBMSwxLDAsMCwwLDExLjMsMjAuNGw1LjM2LDUuMzZMMjYuNzEsMTUuNzFhMSwxLDAsMCwwLC4yLS4zMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTI5LDE1LjRWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTEyLjcyLDE5QTEsMSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1Ljcx''@;'; put 'put ''YTEsMSwwLDAsMC0xLjQxLTEuNDFsLTguNjQsOC42NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yMy4xMyw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEy''@;'; put 'put ''LDIsMCwwLDEsNCwwVjdoMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uN2E0LDQsMCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI0LjQyQTcuNSw3LjUsMCwwLDEsMjMuMTMsOVoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YzMkg3VjdIOVY1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRI''@;'; put 'put ''MjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOS4yOSw0Ljk1aC03LjJhNC4zMSw0LjMxLDAsMCwwLTguMTcsMEg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjRWMzIuMjZhMS43LDEuNywwLDAs''@;'; put 'put ''MCwxLjcxLDEuNjlIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4yNlY2LjY0QTEuNywxLjcsMCwwLDAsMjkuMjksNC45NVptLTE4LDNhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzJhMi4zMSwyLjMxLDAsMCwxLDQuNjMsMFY3aDMuNDRhMSwxLDAsMCwxLDEsMVY5LjhIMTEuMjVabTE0LjUyLDku''@;'; put 'put ''MjMtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy4xNC03LjE0YTEuNCwxLjQsMCwxLDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9''@;'; put 'put ''Ik0yNS44OCwxNS40YTEuMzgsMS4zOCwwLDAsMS0uMTEsMS44MWwtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy03SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDAtLjA5SDExLjI1VjhhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzJhMi4zMSwy''@;'; put 'put ''LjMxLDAsMCwxLDQuNjMsMFY3aC40MkwyMiw0Ljc2YTQuMyw0LjMsMCwwLDAtOC4wOS4xOUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjRWMzIuMjZhMS43LDEuNywwLDAsMCwxLjcxLDEuNjlIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4yNlYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTYuNDYtMy43SDExLjI1VjhhMSwxLDAsMCwxLDEt''@;'; put 'put ''MWgzLjQ0VjYuMzJhMi4zMSwyLjMxLDAsMCwxLDQuNjMsMFY3aDIuMjZhNy41Myw3LjUzLDAsMCwxLS4wNy0xLDcuNTMsNy41MywwLDAsMSwuMDgtMS4wNWgtLjVhNC4zMSw0LjMxLDAsMCwwLTguMTcsMEg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjRWMzIuMjZhMS43LDEuNywwLDAsMCwxLjcx''@;'; put 'put ''LDEuNjlIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4yNlYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVptLTQuMjMsMy43MS05LjEyLDkuMTItNS4yNC01LjI0YTEuNCwxLjQsMCwwLDEsMi0ybDMuMjYsMy4yNiw3LjE0LTcuMTRhMS40LDEuNCwwLDEsMSwyLDJaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGUuQ2xyU2hhcGVGbGFnPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNiwzNGExLDEsMCwwLDEtMS0xVjNBMSwxLDAsMCwxLDcsM1YzM0ExLDEsMCwwLDEsNiwzNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLjU1LDMu''@;'; put 'put ''ODJhMSwxLDAsMCwwLTEsMCwxNC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwxMi43OCwxMi43OCwwLDAsMC01LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwyLjg1VjUuMDhBOC44LDguOCwwLDAsMSwxMy4yNSw0YTExLjIyLDExLjIyLDAsMCwx''@;'; put 'put ''LDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NkExOC43NSwxOC43NSwwLDAsMCwyOSw2LjEyVjE4Ljk1YTE2LjE2LDE2LjE2LDAsMCwxLTUuNTguOTMsMTMuMTEsMTMuMTEsMCwwLDEtNS4xOC0xLjQ5LDEyLjc4LDEyLjc4LDAsMCwwLTUtMS40NUExMC44NiwxMC44NiwwLDAsMCw5''@;'; put 'put ''LDE3Ljc5VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNTUsMy44MloiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNS45MiwyYTEsMSwwLDAsMC0xLDFWMzNhMSwxLDAsMCwwLDIsMFYzQTEsMSwwLDAsMCw1LjkyLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMwLjUsMy44MmExLDEsMCwwLDAtMSwwLDE0LjksMTQuOSwwLDAsMS02LjEzLDEuMTYsMTMuMTEsMTMuMTEsMCwwLDEtNS4xOC0xLjQ5QTEyLjc4LDEyLjc4LDAsMCwwLDEzLjIsMiwxMC44NiwxMC44NiwwLDAsMCw5LDIuODVWMjBhOC44LDguOCwwLDAs''@;'; put 'put ''MSw0LjI1LTEuMDgsMTEuMjIsMTEuMjIsMCwwLDEsNC4yLDEuMjgsMTQuODQsMTQuODQsMCwwLDAsNiwxLjY2LDE2Ljc5LDE2Ljc5LDAsMCwwLDctMS4zNywxLDEsMCwwLDAsLjU1LS44OVY0LjY3QTEsMSwwLDAsMCwzMC41LDMuODJaIi8+JyksZS5DbHJTaGFwZUluYm94PSgwLGEuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQxTDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4zOEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjUsNUgyMlY3aDdWMjFIMjMuNjFsLS4xLjg5YTUuNDIsNS40MiwwLDAsMS0xMC43NywwbC0uMS0uODlIN1Y3aDdWNUg2LjVBMS41LDEuNSwwLDAsMCw1LDYuNXYyNUEx''@;'; put 'put ''LjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjVWNi41QTEuNSwxLjUsMCwwLDAsMjkuNSw1Wk0yOSwzMUg3VjIzaDMuOTFhNy40Miw3LjQyLDAsMCwwLDE0LjQ0LDBIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTEyLjIzLDEzLjA5YTEsMSwwLDAsMCwwLDEuNDFMMTgsMjAuM2w1Ljc5LTUuNzlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwxNi40N1YyQTEsMSwwLDAsMCwxOCwxYTEsMSwwLDAsMC0xLDF2MTQuNWwtMy4zOC0zLjM4QTEsMSwwLDAsMCwxMi4yMywxMy4wOVoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy41Miw3LjUyLDAsMCwxLTEtLjA3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdW''@;'; put 'put ''N2g3VjVINi41QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41Wk0yOSwzMUg3VjIzaDMuOTFhNy40Miw3LjQyLDAsMCwwLDE0LjQ0LDBIMjlaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+''@;'; put 'put ''JyksZS5DbHJTaGFwZUhlYXJ0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzMi40M2ExLDEsMCwwLDEtLjYxLS4yMUMxMS44MywyNy45LDgsMjQuMTgsNS4zMiwyMC41MSwxLjksMTUuODIsMS4xMiwxMS40OSwzLDcuNjRjMS4zNC0yLjc1LDUuMTktNSw5LjY5LTMuNjlBOS44Nyw5''@;'; put 'put ''Ljg3LDAsMCwxLDE4LDcuNzJhOS44Nyw5Ljg3LDAsMCwxLDUuMzEtMy43N2M0LjQ5LTEuMjksOC4zNS45NCw5LjY5LDMuNjksMS44OCwzLjg1LDEuMSw4LjE4LTIuMzIsMTIuODdDMjgsMjQuMTgsMjQuMTcsMjcuOSwxOC42MSwzMi4yMkExLDEsMCwwLDEsMTgsMzIuNDNaTTEwLjEzLDUuNThB''@;'; put 'put ''NS45LDUuOSwwLDAsMCw0LjgsOC41MWMtMS41NSwzLjE4LS44NSw2LjcyLDIuMTQsMTAuODFBNTcuMTMsNTcuMTMsMCwwLDAsMTgsMzAuMTYsNTcuMTMsNTcuMTMsMCwwLDAsMjkuMDYsMTkuMzNjMy00LjEsMy42OS03LjY0LDIuMTQtMTAuODEtMS0yLTQtMy41OS03LjM0LTIuNjVhOCw4LDAs''@;'; put 'put ''MCwwLTQuOTQsNC4yLDEsMSwwLDAsMS0xLjg1LDAsNy45Myw3LjkzLDAsMCwwLTQuOTQtNC4yQTcuMzEsNy4zMSwwLDAsMCwxMC4xMyw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw3LjY0Yy0xLjM0''@;'; put 'put ''LTIuNzUtNS4yLTUtOS42OS0zLjY5QTkuODcsOS44NywwLDAsMCwxOCw3LjcyYTkuODcsOS44NywwLDAsMC01LjMxLTMuNzdDOC4xOSwyLjY2LDQuMzQsNC44OSwzLDcuNjRjLTEuODgsMy44NS0xLjEsOC4xOCwyLjMyLDEyLjg3QzgsMjQuMTgsMTEuODMsMjcuOSwxNy4zOSwzMi4yMmExLDEs''@;'; put 'put ''MCwwLDAsMS4yMywwYzUuNTUtNC4zMSw5LjM5LTgsMTIuMDctMTEuNzFDMzQuMSwxNS44MiwzNC44OCwxMS40OSwzMyw3LjY0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuQ2xyU2hhcGVIZWFydEJyb2tlbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMDktNS05LjY5LTMuNjlhOS44Nyw5Ljg3LDAsMCwwLTYsNC44NCwxOC45LDE4LjksMCwwLDAtMi4yMyw1LjMzbDUuMjgsMi4zNC00LjYsNC4zNywzLjQ5LDQuMSwxLjUyLTEuM0wxOC41NCwyMWw1LjQtNS4xM0wxNy41OCwxM0ExNi4yMywxNi4yMyww''@;'; put 'put ''LDAsMSwxOS43NSw4LjlhNy42OCw3LjY4LDAsMCwxLDQuMTEtM2MzLjM0LS44OSw2LjM0LjYsNy4zNCwyLjY1LDEuNTUsMy4xOC44NSw2LjcyLTIuMTQsMTAuODFBNTcuMTYsNTcuMTYsMCwwLDEsMTgsMzAuMTYsNTcuMTYsNTcuMTYsMCwwLDEsNi45NCwxOS4zM2MtMy00LjEtMy42OS03LjY0''@;'; put 'put ''LTIuMTQtMTAuODFhNS45LDUuOSwwLDAsMSw1LjMzLTIuOTMsNy4zMSw3LjMxLDAsMCwxLDIsLjI5LDcuNyw3LjcsMCwwLDEsMy4zOCwybC4xNS0uM2ExMC42NiwxMC42NiwwLDAsMSwxLTEuNDEsOS42NCw5LjY0LDAsMCwwLTMuOTQtMi4yMkM4LjIsMi42Niw0LjM0LDQuODksMyw3LjY0Yy0x''@;'; put 'put ''Ljg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUExMS41NSwxMS41NSwwLDAsMCwxOC4xOSw3LjVhMTYuODksMTYuODksMCwwLDAtMi40OCw0LjU2TDIyLjI3LDE1LDE2LjcsMjAuMjYsMTksMjNsLTEuNTcs''@;'; put 'put ''MS4zNC0zLjYtNC4yMiw0Ljc0LTQuNTEtNS40NC0yLjQxYTE5LjQ5LDE5LjQ5LDAsMCwxLDIuMy01LjUsMTQuNzcsMTQuNzcsMCwwLDEsMS4wNi0xLjU0bC4wNiwwYTkuNjYsOS42NiwwLDAsMC0zLjg5LTIuMThDOC4xOSwyLjY2LDQuMzQsNC44OSwzLDcuNjRjLTEuODgsMy44NS0xLjEsOC4x''@;'; put 'put ''OCwyLjMyLDEyLjg3QzgsMjQuMTgsMTEuODMsMjcuOSwxNy4zOSwzMi4yMmExLDEsMCwwLDAsMS4yMywwYzUuNTUtNC4zMSw5LjM5LTgsMTIuMDctMTEuNzFDMzQuMSwxNS44MiwzNC44OCwxMS40OSwzMyw3LjY0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicp''@;'; put 'put ''LGUuQ2xyU2hhcGVUYWxrQnViYmxlcz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMsMjZhMSwxLDAsMCwxLTEsMUg4Yy0uMjIsMC0uNDMuMi0uNjEuMzNMNCwzMFYxNGExLDEsMCwwLDEsMS0xSDguODZWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAs''@;'; put 'put ''MCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDRIMTRhMywzLDAsMCwwLTMsM1YxOWEzLDMsMCwwLDAsMywzSDI3''@;'; put 'put ''LjU1bDQuNzgsMy43MWExLDEsMCwwLDAsMSwuMTEsMSwxLDAsMCwwLC41Ny0uOVY3QTMsMywwLDAsMCwzMSw0Wk0zMiwyMi45NCwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0xLTFWN2ExLDEsMCwwLDEsMS0xSDMxQTEuMSwxLjEsMCwwLDEsMzIsNy4wNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMjZhMSwxLDAsMCwxLTEsMUg4Yy0uMjIsMC0uNDMuMi0uNjEuMzNMNCwzMFYxNGExLDEsMCwwLDEsMS0xSDguODZWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAs''@;'; put 'put ''MCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnY5''@;'; put 'put ''LjcyTDI4LjUsMjAuMjFhMSwxLDAsMCwwLS42MS0uMjFIMTRhMSwxLDAsMCwxLTEtMVY3YTEsMSwwLDAsMSwxLTFIMjIuNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTRhMywzLDAsMCwwLTMsM1YxOWEzLDMsMCwwLDAsMywzSDI3LjU1bDQuNzgsMy43MWExLDEsMCwwLDAsMSwuMTEsMSwxLDAs''@;'; put 'put ''MCwwLC41Ny0uOVYxMi4zN0E3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxOVYxMUg1YTMsMywwLDAsMC0zLDNWMzJhMSwxLDAsMCwwLC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAs''@;'; put 'put ''MCwyNSwyNi4xM1YyNUgxNEE2LDYsMCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEs''@;'; put 'put ''LjExLDEsMSwwLDAsMCwuNTctLjlWN0EzLDMsMCwwLDAsMzEsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDE5VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDgu''@;'; put 'put ''NzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDE0QTYsNiwwLDAsMSw4LDE5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwy''@;'; put 'put ''Mi43OCw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVDaGF0QnViYmxlPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjguMjksMjQu''@;'; put 'put ''NjFhMSwxLDAsMCwwLS4zMi43M2wwLDUuMzQtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExQTE2LDE2LDAsMCwxLDE4LDI4LjVjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4wOCwxMS4wOCwwLDAsMSwyOC4yOSwyNC42MVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDE1LjVIMTFhMSwxLDAsMCwwLDAsMkgyNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjEuNzUsMjAuNWgtNy41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOCwxMi41SDI0LjcyYTEsMSwwLDAsMCwwLTJIMTEuMjhh''@;'; put 'put ''MSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjM4LDEyLjY5YTcuNDMsNy40MywwLDAsMS0xLjg5LjY2QTEwLjM1LDEwLjM1LDAsMCwxLDMyLDE2LjVhMTEuMDgsMTEuMDgsMCwwLDEt''@;'; put 'put ''My43MSw4LjExLDEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyYTE2LDE2LDAsMCwxLDQuNTUuNjZBNy40NCw3LjQ0LDAsMCwxLDIzLDMuMjJhMTgs''@;'; put 'put ''MTgsMCwwLDAtNS0uNzJjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QTEyLjMyLDEyLjMyLDAsMCwwLDMzLjM4LDEyLjY5WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLDE1LjVhMSwxLDAsMCwwLDAsMkgyNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjI1LDIwLjVhMSwxLDAsMCwwLDAsMmg3LjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xMC4yOCwxMS41YTEsMSwwLDAsMCwxLDFIMjQuNzJhMSwxLDAsMCwwLC44My0uNDdBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjVIMTEuMjhBMSwxLDAsMCwwLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4y''@;'; put 'put ''OC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVabTgsMTRhMSwxLDAsMCwxLTEsMUgxMWExLDEsMCwwLDEsMC0ySDI1QTEs''@;'; put 'put ''MSwwLDAsMSwyNiwxNi41Wm0tMy4yNSw1YTEsMSwwLDAsMS0xLDFoLTcuNWExLDEsMCwwLDEsMC0yaDcuNUExLDEsMCwwLDEsMjIuNzUsMjEuNVptLTEyLjQ3LTEwYTEsMSwwLDAsMSwxLTFIMjQuNzJhMSwxLDAsMCwxLDAsMkgxMS4yOEExLDEsMCwwLDEsMTAuMjgsMTEuNVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuMjVhNy40Niw3LjQ2LDAsMCwxLTQuMzUtMS40LDEsMSwwLDAsMS0uOTMuNjVIMTEuMjhhMSwxLDAsMCwxLDAtMkgyNC4yQTcuNDYsNy40NiwwLDAsMSwyMywzLjJhMTgsMTgsMCww''@;'; put 'put ''LDAtNS0uN2MtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjcsMTIuMzQsMTIuMzQsMCwwLDAtLjY4LTRBNy40Niw3LjQ2LDAsMCwxLDMwLDEz''@;'; put 'put ''LjI1Wk0yMS43NSwyMi41aC03LjVhMSwxLDAsMCwxLDAtMmg3LjVhMSwxLDAsMCwxLDAsMlptMy4yNS01SDExYTEsMSwwLDAsMSwwLTJIMjVhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI1Ljc1IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZVBpY3R1cmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIs''@;'; put 'put ''MCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMt''@;'; put 'put ''M0EzLDMsMCwwLDAsOC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00''@;'; put 'put ''LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMywwLDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0tNC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCww''@;'; put 'put ''LDAtMS40MSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCww''@;'; put 'put ''LDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04''@;'; put 'put ''LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIyLjc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4''@;'; put 'put ''YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksZS5DbHJTaGFwZUhhcHB5RmFj''@;'; put 'put ''ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxjaXJjbGUgY3g9IjEwLjg5IiBjeT0iMTMuODkiIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4wNSIgY3k9IjEzLjg5IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjEzLDI4LjIxYTguNjcsOC42NywwLDAsMCw4LjI2LTZIOS44N0E4LjY3LDguNjcsMCwwLDAsMTguMTMsMjguMjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNOC44OSwxMy44OWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSw4Ljg5LDEzLjg5Wm05LjI0LDE0LjMyYTguNjcsOC42NywwLDAsMS04LjI2LTZIMjYuMzhBOC42Nyw4LjY3LDAsMCwxLDE4LjEzLDI4''@;'; put 'put ''LjIxWm02LjkzLTEyLjMyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDI1LjA1LDE1Ljg5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuQ2xyU2hhcGVOZXV0cmFsRmFjZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuMDUsMjIuMDZoLTEyYTEs''@;'; put 'put ''MSwwLDAsMCwwLDJoMTJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0''@;'; put 'put ''LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI1LjE2IiBjeT0iMTQuMjgiIHI9IjEuOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxjaXJjbGUgY3g9IjExLjE2IiBjeT0iMTQuMjgiIHI9IjEuOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuMDUsMjEuMDZh''@;'; put 'put ''MSwxLDAsMCwxLTEsMWgtMTJhMSwxLDAsMCwxLDAtMmgxMkExLDEsMCwwLDEsMjUuMDUsMjMuMDZaTTI3LDE0LjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0LjI4Wm0tMTUuOCwxLjhhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTEuMTYs''@;'; put 'put ''MTYuMDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksZS5DbHJTaGFwZVNhZEZhY2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwx''@;'; put 'put ''NCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGN4PSIxMS40MSIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMTYsMjBhOSw5LDAsMCwwLTcuMzMsMy43OCwxLDEsMCwxLDAsMS42MywxLjE2LDcsNyww''@;'; put 'put ''LDAsMSwxMS4zMS0uMTMsMSwxLDAsMCwwLDEuNi0xLjJBOSw5LDAsMCwwLDE4LjE2LDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTks''@;'; put 'put ''MTIuMjhhMS44LDEuOCwwLDEsMS0xLjgtMS44QTEuOCwxLjgsMCwwLDEsMjcsMTQuMjhabS0xNS41NSwxLjhhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTEuNDEsMTYuMDhabTE0LDcuNTNhMSwxLDAsMCwxLTEuNiwxLjIsNyw3LDAsMCwwLTExLjMxLjEzLDEsMSwwLDEs''@;'; put 'put ''MS0xLjYzLTEuMTYsOSw5LDAsMCwxLDE0LjU0LS4xN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLkNsclNoYXBlVGh1bWJzVXA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDI2Yy0yLjkyLDEuODItNy4zLDQtOS4zNyw0aC02YTE2LjY4LDE2''@;'; put 'put ''LjY4LDAsMCwxLTMuMzEtNi4wOEEyNi43MSwyNi43MSwwLDAsMSw0LDE2aDlWNmEyLjA1LDIuMDUsMCwwLDEsMS4yNi0xLjY5Yy43NywyLDIuNjIsNi41Nyw0LjIzLDguNzJBMTEuMzksMTEuMzksMCwwLDAsMjQsMTYuOTFWMTQuNzhhOS4xMyw5LjEzLDAsMCwxLTMuOTEtM2MtMS44OC0yLjUx''@;'; put 'put ''LTQuMjktOS4xMS00LjMxLTkuMTdBMSwxLDAsMCwwLDE0LjU5LDJDMTMuMjUsMi4zOCwxMSwzLjYsMTEsNnY4SDNhMSwxLDAsMCwwLTEsMSwyOSwyOSwwLDAsMCwxLjQsOS42MmMxLjg5LDUuNCw0LjEsNy4xNCw0LjIsNy4yMmExLDEsMCwwLDAsLjYxLjIxaDYuNDJjMi40MywwLDYuNTUtMiw5''@;'; put 'put ''LjM3LTMuNjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwzMUgyN2ExLDEsMCwwLDEtMS0xVjE0YTEsMSwwLDAsMSwxLTFoN1ptLTYtMmg0VjE1SDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNjMsMTIuMTJDMTcuNTEsOS4yOCwxNC44OCwyLDE0Ljg4LDJTMTIsMi44MywxMiw1LjI1VjE1SDIuMjNhMjkuNDYsMjkuNDYsMCwwLDAsMS40NCw5Ljc0QzUuNjEsMzAuMjcsNy44LDMyLDcuOCwzMmg2Ljg2QzE2''@;'; put 'put ''LjksMzIsMjEsMzAuMDYsMjQsMjguMzFWMTUuNTFBMTAuODQsMTAuODQsMCwwLDEsMTkuNjMsMTIuMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LDEzYTEsMSwwLDAsMC0xLDFWMzBhMSwxLDAsMCwwLDEsMWg3''@;'; put 'put ''VjEzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlVGh1bWJzRG93bj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIsMTBjMi45Mi0xLjgyLDcuMy00LDkuMzctNGg2YTE2LjY4LDE2LjY4LDAsMCwxLDMuMzEsNi4wOEEyNi43MSwy''@;'; put 'put ''Ni43MSwwLDAsMSwzMiwyMEgyM1YzMGEyLjA1LDIuMDUsMCwwLDEtMS4yNiwxLjY5Yy0uNzctMi0yLjYyLTYuNTctNC4yMy04LjcyQTExLjM5LDExLjM5LDAsMCwwLDEyLDE5LjA5djIuMTNhOS4xMyw5LjEzLDAsMCwxLDMuOTEsM2MxLjg4LDIuNTEsNC4yOSw5LjExLDQuMzEsOS4xN2ExLDEs''@;'; put 'put ''MCwwLDAsMS4xOS42M0MyMi43NSwzMy42MiwyNSwzMi40LDI1LDMwVjIyaDhhMSwxLDAsMCwwLDEtMSwyOSwyOSwwLDAsMC0xLjQtOS42MmMtMS44OS01LjQtNC4xLTcuMTQtNC4yLTcuMjJBMSwxLDAsMCwwLDI3Ljc5LDRIMjEuMzdDMTguOTQsNCwxNC44Myw2LDEyLDcuNjNaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yLDVIOWExLDEsMCwwLDEsMSwxVjIyYTEsMSwwLDAsMS0xLDFIMlpNOCw3SDRWMjFIOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTE2LjM3LDIzLjg0YzIuMTIsMi44NCw0Ljc2LDEwLjA3LDQuNzYsMTAuMDdTMjQsMzMuMTMsMjQsMzAuNzFWMjFoOS43N2EyOS40NiwyOS40NiwwLDAsMC0xLjQ0LTkuNzRDMzAuMzksNS42OCwyOC4yLDQsMjguMiw0SDIxLjM1QzE5LjEsNCwxNSw1LjksMTIs''@;'; put 'put ''Ny42NXYxMi44QTEwLjg0LDEwLjg0LDAsMCwxLDE2LjM3LDIzLjg0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LDIzYTEsMSwwLDAsMCwxLTFWNkExLDEsMCwwLDAsOSw1SDJWMjNaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVDcm93bj0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggZD0iTTQsMTMuMzNBMS4zOSwxLjM5LDAsMSwwLDIuNiwxNC43MiwxLjM5LDEuMzksMCwwLDAsNCwxMy4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMS44MSwxNS44NGEyMC4zNSwyMC4zNSwwLDAsMC00LjU4LDEuNDMsMjIuNywyMi43LDAsMCwwLTMuNDgsMi4xQTE3LjY5LDE3LjY5LDAsMCwxLDIyLDE2LjU3YTQ3LjY1LDQ3LjY1LDAsMCwxLTIuOC03LjY5LDEsMSwwLDAsMC0xLS43NCwx''@;'; put 'put ''LDEsMCwwLDAtMSwuNzQsNDYuNzEsNDYuNzEsMCwwLDEtMi44LDcuNjksMTcsMTcsMCwwLDEtMS43NiwyLjgsMjIuNywyMi43LDAsMCwwLTMuNDgtMi4xLDIwLjY2LDIwLjY2LDAsMCwwLTQuNTgtMS40MywxLDEsMCwwLDAtMSwuMzksMSwxLDAsMCwwLS4wOSwxLjA1QTUwLjEzLDUwLjEzLDAs''@;'; put 'put ''MCwxLDcuODIsMzEuMTdhMSwxLDAsMCwwLDEsLjgzSDI3LjYyYTEsMSwwLDAsMCwxLS44Myw1MC4xNSw1MC4xNSwwLDAsMSw0LjI2LTEzLjg5LDEsMSwwLDAsMC0uMDktMS4wNUExLDEsMCwwLDAsMzEuODEsMTUuODRaTTI2Ljc5LDMwSDkuNjRhNTUuNjYsNTUuNjYsMCwwLDAtMy40LTExLjcx''@;'; put 'put ''LDE1Ljc1LDE1Ljc1LDAsMCwxLDIuMDkuNzgsMjAsMjAsMCwwLDEsMy44NSwyLjQ1LDEsMSwwLDAsMCwxLjM5LS4wOSwxOS4yOCwxOS4yOCwwLDAsMCwyLjY3LTQsNDMuNDYsNDMuNDYsMCwwLDAsMi00Ljg5LDQxLjc0LDQxLjc0LDAsMCwwLDIsNC44OSwxOS45MiwxOS45MiwwLDAsMCwyLjY2''@;'; put 'put ''LDQsMSwxLDAsMCwwLDEuNC4wOSwxOS4yMSwxOS4yMSwwLDAsMSwzLjg1LTIuNDUsMTQuNzcsMTQuNzcsMCwwLDEsMi4wOS0uNzhBNTUuMDcsNTUuMDcsMCwwLDAsMjYuNzksMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8ZWxsaXBzZSBjeD0i''@;'; put 'put ''MzMuODMiIGN5PSIxMy4zMyIgcng9IjEuMzkiIHJ5PSIxLjM5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTguMjIsNi4zOUExLjM5LDEuMzksMCwxLDAsMTYuODQsNSwxLjM5LDEuMzksMCwwLDAsMTguMjIsNi4zOVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOC4yMywyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDE4LjIzLDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTEyLjU4LDI2LjM0YTEuMTEsMS4xMSwwLDEsMCwxLjEsMS4xQTEuMSwxLjEsMCwwLDAsMTIuNTgsMjYuMzRaIi8+PHBhdGggZD0iTTIzLjg5LDI2LjM0YTEuMTEsMS4xMSwwLDEsMCwxLjEsMS4xQTEuMSwxLjEsMCwwLDAsMjMuODksMjYuMzRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuXG4gIDxwYXRoIGQ9Ik0yLjYsMTEuOTNBMS40LDEuNCwwLDEsMCw0LDEzLjMzLDEuNCwxLjQsMCwwLDAsMi42LDExLjkzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8ZWxsaXBzZSBjeD0iMzMuODMi''@;'; put 'put ''IGN5PSIxMy4zMyIgcng9IjEuMzkiIHJ5PSIxLjM5IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xOC4yMiw2LjM5QTEuMzksMS4zOSwwLDEsMCwxNi44NCw1LDEuMzksMS4zOSwwLDAsMCwxOC4yMiw2LjM5WiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuNjMsMTYuMUExOC42MSwxOC42MSwwLDAsMCwyOCwxNy4zNGEyMS41NywyMS41NywwLDAsMC00LDIuNDksMTkuMiwxOS4yLDAsMCwxLTIuMjYtMy40OSw0OC45Miw0OC45MiwwLDAsMS0yLjUyLTYuNTgsMSwxLDAsMCww''@;'; put 'put ''LTEtLjcxaDBhMSwxLDAsMCwwLTEsLjcxLDQ4LjQyLDQ4LjQyLDAsMCwxLTIuNTIsNi41OCwxOC42OSwxOC42OSwwLDAsMS0yLjI2LDMuNDgsMjIuODEsMjIuODEsMCwwLDAtNC0yLjQ4QTE4LjgzLDE4LjgzLDAsMCwwLDQuOSwxNi4xYTEsMSwwLDAsMC0xLC4zMywxLDEsMCwwLDAtLjEzLDEu''@;'; put 'put ''MDcsNTUuOSw1NS45LDAsMCwxLDQsMTMuNSwxLDEsMCwwLDAsMSwuODNoMTlhMSwxLDAsMCwwLDEtLjgzLDU1LjksNTUuOSwwLDAsMSw0LTEzLjUsMSwxLDAsMCwwLS4xMy0xLjA3QTEsMSwwLDAsMCwzMS42MywxNi4xWk0xMS4wOCwyOC41NWExLjExLDEuMTEsMCwxLDEsMS4xLTEuMTFBMS4x''@;'; put 'put ''MSwxLjExLDAsMCwxLDExLjA4LDI4LjU1Wm03LjE1LDBhMS4xMSwxLjExLDAsMCwxLDAtMi4yMSwxLjExLDEuMTEsMCwwLDEsMCwyLjIxWm03LjE2LDBhMS4xMSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwyNS4zOSwyOC41NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTQiLz5cbiAgJyksZS5DbHJTaGFwZUhhc2h0YWc9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiwxMkgyNS4zNGwxLjU1LTcuNzRhMSwxLDAsMCwwLTItLjM5TDIzLjMsMTJIMTUuMTFsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwxMy4wNywxMkg2YTEs''@;'; put 'put ''MSwwLDAsMCwwLDJoNi42N2wtMS42LDhINGExLDEsMCwwLDAsMCwyaDYuNjZMOS4xMSwzMS43NGExLDEsMCwwLDAsLjc5LDEuMTcuNjguNjgsMCwwLDAsLjIsMCwxLDEsMCwwLDAsMS0uOEwxMi43LDI0aDguMTlsLTEuNTUsNy43NGExLDEsMCwwLDAsLjc5LDEuMTcuNjIuNjIsMCwwLDAsLjE5''@;'; put 'put ''LDAsMSwxLDAsMCwwLDEtLjhMMjIuOTMsMjRIMzBhMSwxLDAsMCwwLDAtMkgyMy4zM2wxLjYxLThIMzJhMSwxLDAsMCwwLDAtMlpNMjEuMjksMjJIMTMuMWwxLjYxLThIMjIuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG5cbiAgPHBhdGggZD0iTTMx''@;'; put 'put ''Ljg3LDEwSDI2LjMybDEtNC44M0ExLDEsMCwwLDAsMjYuMzUsNGgtMmExLDEsMCwwLDAtMSwuNzhMMjIuMzMsMTBoLTUuNGwxLTQuODNBMSwxLDAsMCwwLDE3LDRIMTVhMSwxLDAsMCwwLTEsLjc4TDEzLDEwSDdhMSwxLDAsMCwwLTEsLjhsLS40MSwyYTEsMSwwLDAsMCwxLDEuMmg1LjU1TDEw''@;'; put 'put ''LjUsMjJoLTZhMSwxLDAsMCwwLTEsLjhsLS40MSwyYTEsMSwwLDAsMCwxLDEuMkg5LjY4bC0xLDQuODNhMSwxLDAsMCwwLDEsMS4xN2gyYTEsMSwwLDAsMCwuOTUtLjc4TDEzLjY3LDI2aDUuNGwtMSw0LjgzQTEsMSwwLDAsMCwxOSwzMmgyYTEsMSwwLDAsMCwxLS43OEwyMy4wNSwyNmg2YTEs''@;'; put 'put ''MSwwLDAsMCwxLS44bC40LTJhMSwxLDAsMCwwLTEtMS4ySDIzLjg3bDEuNjMtOGg2YTEsMSwwLDAsMCwxLS44bC40MS0yQTEsMSwwLDAsMCwzMS44NywxMFptLTEyLDEyaC01LjRsMS42NC04aDUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksZS5T''@;'; put 'put ''b2NpYWxTaGFwZXM9e2Nyb3duOmUuQ2xyU2hhcGVDcm93bixzaGFyZTplLkNsclNoYXBlU2hhcmUsc3RhcjplLkNsclNoYXBlU3RhciwiaGFsZi1zdGFyIjplLkNsclNoYXBlSGFsZlN0YXIsYm9va21hcms6ZS5DbHJTaGFwZUJvb2ttYXJrLGVudmVsb3BlOmUuQ2xyU2hhcGVFbnZlbG9wZSxj''@;'; put 'put ''YWxlbmRhcjpjLkNsclNoYXBlQ2FsZW5kYXIsZXZlbnQ6Yy5DbHJTaGFwZUV2ZW50LHRhc2tzOmUuQ2xyU2hhcGVUYXNrcyxmbGFnOmUuQ2xyU2hhcGVGbGFnLGluYm94OmUuQ2xyU2hhcGVJbmJveCxoYXNodGFnOmUuQ2xyU2hhcGVIYXNodGFnLGhlYXJ0OmUuQ2xyU2hhcGVIZWFydCwiaGVh''@;'; put 'put ''cnQtYnJva2VuIjplLkNsclNoYXBlSGVhcnRCcm9rZW4sInRhbGstYnViYmxlcyI6ZS5DbHJTaGFwZVRhbGtCdWJibGVzLCJjaGF0LWJ1YmJsZSI6ZS5DbHJTaGFwZUNoYXRCdWJibGUscGljdHVyZTplLkNsclNoYXBlUGljdHVyZSwiaGFwcHktZmFjZSI6ZS5DbHJTaGFwZUhhcHB5RmFjZSwi''@;'; put 'put ''bmV1dHJhbC1mYWNlIjplLkNsclNoYXBlTmV1dHJhbEZhY2UsInNhZC1mYWNlIjplLkNsclNoYXBlU2FkRmFjZSwidGh1bWJzLXVwIjplLkNsclNoYXBlVGh1bWJzVXAsInRodW1icy1kb3duIjplLkNsclNoYXBlVGh1bWJzRG93bn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuU29jaWFsU2hh''@;'; put 'put ''cGVzLCJmYXZvcml0ZSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlNvY2lhbFNoYXBlcy5zdGFyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuU29jaWFsU2hhcGVzLCJlbWFpbCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlNvY2lhbFNoYXBlcy5lbnZlbG9wZSkpLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShlLlNvY2lhbFNoYXBlcywiZGF0ZSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlNvY2lhbFNoYXBlcy5jYWxlbmRhcikpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUlj''@;'; put 'put ''b25zLmFkZChlLlNvY2lhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiOmZ1bmN0aW9uKEEsZSxhKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ2xyU2hhcGVW''@;'; put 'put ''TVdBcHA9ZS5DbHJTaGFwZVZNPWUuQ2xyU2hhcGVSb3V0ZXI9ZS5DbHJTaGFwZU5ldHdvcmtTd2l0Y2g9ZS5DbHJTaGFwZU5ldHdvcmtTZXR0aW5ncz1lLkNsclNoYXBlTmV0d29ya0dsb2JlPWUuQ2xyU2hhcGVUYWJsZXQ9ZS5DbHJTaGFwZU1vYmlsZT1lLkNsclNoYXBlQmF0dGVyeT1lLkNs''@;'; put 'put ''clNoYXBlQXBwbGljYXRpb249ZS5DbHJTaGFwZUNvZGU9ZS5DbHJTaGFwZVRlcm1pbmFsPWUuQ2xyU2hhcGVEaXNwbGF5PWUuQ2xyU2hhcGVDb21wdXRlcj1lLkNsclNoYXBlRmxvcHB5PWUuQ2xyU2hhcGVQbHVnaW49ZS5DbHJTaGFwZURvd25sb2FkQ2xvdWQ9ZS5DbHJTaGFwZVVwbG9hZENs''@;'; put 'put ''b3VkPWUuQ2xyU2hhcGVFeHBvcnQ9ZS5DbHJTaGFwZUltcG9ydD1lLkNsclNoYXBlU2hpZWxkWD1lLkNsclNoYXBlU2hpZWxkPWUuQ2xyU2hhcGVTaGllbGRDaGVjaz1lLkNsclNoYXBlUmVzb3VyY2VQb29sPWUuQ2xyU2hhcGVEYXRhQ2x1c3Rlcj1lLkNsclNoYXBlTWVtb3J5PWUuQ2xyU2hh''@;'; put 'put ''cGVDUFU9ZS5DbHJTaGFwZUJ1aWxkaW5nPWUuQ2xyU2hhcGVBcHBsaWNhdGlvbnM9ZS5DbHJTaGFwZUNsdXN0ZXI9ZS5DbHJTaGFwZVN0b3JhZ2U9ZS5DbHJTaGFwZUhvc3Q9ZS5DbHJTaGFwZURhc2hib2FyZD1lLkNsclNoYXBlTW91c2U9ZS5DbHJTaGFwZUtleWJvYXJkPWUuQ2xyU2hhcGVE''@;'; put 'put ''ZXZpY2VzPWUuQ2xyU2hhcGVCYWNrdXA9ZS5DbHJTaGFwZUJhY2t1cFJlc3RvcmU9ZS5DbHJTaGFwZUhhcmREaXNrPWUuQ2xyU2hhcGVSYWNrU2VydmVyPWUuQ2xyU2hhcGVXaWZpPWUuQ2xyU2hhcGVCdW5kbGU9ZS5DbHJTaGFwZUJsb2Nrc0dyb3VwPWUuQ2xyU2hhcGVCbG9jaz1lLkNsclNo''@;'; put 'put ''YXBlTGF5ZXJzPWUuQ2xyU2hhcGVVbmluc3RhbGw9ZS5DbHJTaGFwZUluc3RhbGw9ZS5DbHJTaGFwZU5vV2lmaT1lLkNsclNoYXBlUGhvbmVIYW5kc2V0PWUuQ2xyU2hhcGVSdWxlclBlbmNpbD12b2lkIDAsZS5UZWNobm9sb2d5U2hhcGVzPWUuQ2xyU2hhcGVGaWxlU2hhcmUyPWUuQ2xyU2hh''@;'; put 'put ''cGVDaUNkPWUuQ2xyU2hhcGVBbmltYXRpb249ZS5DbHJTaGFwZVRhcGVEcml2ZT1lLkNsclNoYXBlTWVkaWFDaGFuZ2VyPWUuQ2xyQ29udHJvbEx1bj1lLkNsclNoYXBlUG9kPWUuQ2xyU2hhcGVOb2RlPWUuQ2xyU2hhcGVOYW1lc3BhY2U9ZS5DbHJTaGFwZU5vZGVzPWUuQ2xyU2hhcGVOb2Rl''@;'; put 'put ''R3JvdXA9ZS5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyPWUuQ2xyU2hhcGVIb3N0R3JvdXA9ZS5DbHJTaGFwZVNxdWlkPWUuQ2xyU2hhcGVDYXBhY2l0b3I9ZS5DbHJTaGFwZVJlc2lzdG9yPWUuQ2xyU2hhcGVJbmR1Y3Rvcj1lLkNsclNoYXBlUmFkYXI9ZS5DbHJTaGFwZVVzYj1lLkNsclNoYXBl''@;'; put 'put ''UXJDb2RlPWUuQ2xyU2hhcGVGaWxlU2hhcmU9ZS5DbHJTaGFwZUNvbnRhaW5lclZvbHVtZT1lLkNsclNoYXBlQ29udGFpbmVyPWUuQ2xyU2hhcGVDZER2ZD1lLkNsclNoYXBlQmFyQ29kZT1lLkNsclNoYXBlQXRvbT1lLkNsclNoYXBlQXNzaWduVXNlcj1lLkNsclNoYXBlUHJvY2Vzc09uVk09''@;'; put 'put ''ZS5DbHJTaGFwZUJsdWV0b290aE9mZj1lLkNsclNoYXBlQmx1ZXRvb3RoPWUuQ2xyU2hhcGVTU0Q9ZS5DbHJTaGFwZU5WTWU9ZS5DbHJTaGFwZUhhcmREcml2ZURpc2tzPWUuQ2xyU2hhcGVIYXJkRHJpdmU9ZS5DbHJTaGFwZUFkbWluaXN0cmF0b3I9ZS5DbHJTaGFwZUZsYXNrPWUuQ2xyU2hh''@;'; put 'put ''cGVIZWxpeD1lLkNsclNoYXBlRGVwbG95PWUuQ2xyU2hhcGVDbG91ZFRyYWZmaWM9ZS5DbHJTaGFwZUNsb3VkU2NhbGU9ZS5DbHJTaGFwZUNsb3VkTmV0d29yaz1lLkNsclNoYXBlVW5saW5rPWUuQ2xyU2hhcGVMaW5rPWUuQ2xyU2hhcGVEaXNjb25uZWN0PWUuQ2xyU2hhcGVDb25uZWN0PWUu''@;'; put 'put ''Q2xyU2hhcGVVbmFyY2hpdmU9ZS5DbHJTaGFwZUFyY2hpdmU9ZS5DbHJTaGFwZUNlcnRpZmljYXRlPXZvaWQgMDt2YXIgcj1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpO2E9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1n''@;'; put 'put ''ZW5lcmF0b3IudHMiKSxlLkNsclNoYXBlUnVsZXJQZW5jaWw9KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHBvaW50cz0iOSAxNy40MSA5IDI3IDE4LjU5IDI3IDE2LjU5IDI1IDExIDI1IDExIDE5LjQxIDkgMTcu''@;'; put 'put ''NDEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzQuODcsMzIuMjksMzIsMjkuMzhWMzJINFYyNy44NUg2di0xLjZINFYxOS42SDZWMThINFYxMS42SDZWMTBINFY0LjQxTDE5Ljk0LDIwLjI2VjE3LjQ0TDMuNzEs''@;'; put 'put ''MS4yOUExLDEsMCwwLDAsMiwyVjMzYTEsMSwwLDAsMCwxLDFIMzQuMTZhMSwxLDAsMCwwLC43MS0xLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNCwzMGg0YTIsMiwwLDAsMCwyLTJWOC43TDI3LjcsNC40''@;'; put 'put ''N2EyLDIsMCwwLDAtMS43Ni0xaDBhMiwyLDAsMCwwLTEuNzYsMS4wOEwyMiw4LjcyVjI4QTIsMiwwLDAsMCwyNCwzMFpNMjQsOS4ybDEuOTQtMy43N0wyOCw5LjIxVjI0SDI0Wm0wLDE2LjQzaDR2Mi40NEgyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC44NywzMi4yMSwzMCwyNy4zN1Y4Ljc1TDI3LjcsNC41MmEyLDIsMCwwLDAtMy41NCwwTDIyLDguNzZWMTkuNDFMMy43MSwxLjIxQTEsMSwwLDAsMCwyLDEuOTJWMTBINC4xN3YxLjZIMlYxOEg0LjE3djEuNkgydjYuNjVINC4xN3YxLjZIMnY1LjA3YTEs''@;'; put 'put ''MSwwLDAsMCwxLDFIMzQuMTZhMSwxLDAsMCwwLC43MS0xLjcxWk0xMCwyNlYxNi45NEwxOS4wNywyNlptMTgsMi4xMUgyNFYyNS42OGg0Wm0wLTRIMjRWOS4yNWwxLjk0LTMuNzdMMjgsOS4yNloiLz5cbicpLGUuQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy43MywzNS40NGE0LjcyLDQuNzIsMCwwLDEtMS0uMTEsMzMuOTEsMzMuOTEsMCwwLDEtMTYuNjItOC43NSwzMi43MSwzMi43MSwwLDAsMS05LTE2LjI1QTQuNTgsNC41OCwwLDAsMSwyLjQ2LDYuMDVsNC0z''@;'; put 'put ''Ljg1QTIsMiwwLDAsMSw4LDEuNjZhMiwyLDAsMCwxLDEuNDUuODdsNSw3LjM5YTEuNiwxLjYsMCwwLDEtLjExLDEuOWwtMi41MSwzYTE4Ljk0LDE4Ljk0LDAsMCwwLDQuMTcsNS44OWgwYTE5LjI2LDE5LjI2LDAsMCwwLDYuMDcsNC4wOWwzLjExLTIuNDdhMS42NCwxLjY0LDAsMCwxLDEuODYt''@;'; put 'put ''LjEybDcuNTUsNC44OEEyLDIsMCwwLDEsMzUsMzAuMmwtMy45LDMuODZBNC43NCw0Ljc0LDAsMCwxLDI3LjczLDM1LjQ0Wk03Ljg0LDMuNjRsLTQsMy44NWEyLjU0LDIuNTQsMCwwLDAtLjc1LDIuNCwzMC43LDMwLjcsMCwwLDAsOC40MSwxNS4yNiwzMS45LDMxLjksMCwwLDAsMTUuNjQsOC4y''@;'; put 'put ''MywyLjc1LDIuNzUsMCwwLDAsMi41LS43NGwzLjktMy44Ni03LjI5LTQuNzEtMy4zNCwyLjY2YTEsMSwwLDAsMS0uOTIuMTcsMjAuMDYsMjAuMDYsMCwwLDEtNy4zNi00Ljc1aDBhMTkuNDksMTkuNDksMCwwLDEtNC44Ny03LjJBMSwxLDAsMCwxLDEwLDE0bDIuNy0zLjIzWiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE1LjIyLDIwLjY0YTIwLjM3LDIwLjM3LDAsMCwwLDcuNCw0Ljc5bDMuNzctM2EuNjcuNjcsMCwwLDEsLjc2LDBsNyw0LjUxYTIsMiwwLDAsMSwuMzMsMy4xOGwtMy4yOCwzLjI0YTQsNCwwLDAs''@;'; put 'put ''MS0zLjYzLDEuMDcsMzUuMDksMzUuMDksMCwwLDEtMTcuMTUtOUEzMy43OSwzMy43OSwwLDAsMSwxLjE1LDguNmEzLjc4LDMuNzgsMCwwLDEsMS4xLTMuNTVsMy40LTMuMjhhMiwyLDAsMCwxLDMuMTIuMzJMMTMuNDMsOWEuNjMuNjMsMCwwLDEsMCwuNzVsLTMuMDcsMy42OUExOS43NSwxOS43''@;'; put 'put ''NSwwLDAsMCwxNS4yMiwyMC42NFoiLz5cbicpLGUuQ2xyU2hhcGVOb1dpZmk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyNC40MmE0LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwyNC40MlptMCw2YTIs''@;'; put 'put ''MiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNi4yMSwyMS44NWExLDEsMCwwLDAtLjIzLTEuNCwxMy41NiwxMy41NiwwLDAsMC01LTIuMjNsMy44NywzLjg3''@;'; put 'put ''QTEsMSwwLDAsMCwyNi4yMSwyMS44NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTguMDUsMTAuNzJhMjAuODgsMjAuODgsMCwwLDAtNC4xNi40M2wxLjc0LDEuNzRhMTksMTksMCwwLDEsMi40Mi0uMTdBMTgu''@;'; put 'put ''NzYsMTguNzYsMCwwLDEsMjguNjQsMTZhMSwxLDAsMCwwLDEuMTItMS42NUEyMC43NSwyMC43NSwwLDAsMCwxOC4wNSwxMC43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzMuNTUsOC4yQTI4LjExLDI4LjEx''@;'; put 'put ''LDAsMCwwLDguMTEsNS4zNkw5LjY5LDYuOTNBMjYsMjYsMCwwLDEsMzIuNDUsOS44N2ExLDEsMCwwLDAsMS4xLTEuNjdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTEuODQsNC43NSw0LjI3LDcuMThjLS42Mi4z''@;'; put 'put ''NC0xLjIzLjctMS44MywxLjFBMSwxLDAsMSwwLDMuNTYsOS45NEM0LjI2LDkuNDcsNSw5LDUuNzQsOC42NWwzLjg3LDMuODdBMjAuNTksMjAuNTksMCwwLDAsNi4yMywxNC40LDEsMSwwLDAsMCw3LjM2LDE2YTE4LjgyLDE4LjgyLDAsMCwxLDMuNzctMmw0LjE2LDQuMTZBMTMuNTEsMTMuNTEs''@;'; put 'put ''MCwwLDAsMTAsMjAuNTVhMSwxLDAsMCwwLDEuMTgsMS42MUExMS41MiwxMS41MiwwLDAsMSwxNywyMGwxMC44LDEwLjgsMS40MS0xLjQxLTI2LTI2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41''@;'; put 'put ''NCIgcj0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LjE4LDE3LjcxbC4xMS0uMTdhMS41MSwxLjUxLDAsMCwwLS40Ny0yLjFBMjAuNTcsMjAuNTcsMCwwLDAsMTgsMTIuMzdjLS41NiwwLTEuMTEsMC0xLjY1LjA3''@;'; put 'put ''bDMuMjEsMy4yMWExNy40MSwxNy40MSwwLDAsMSw3LjYsMi41MkExLjQ5LDEuNDksMCwwLDAsMjkuMTgsMTcuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMzIuNzYsOS4zOEEyNy45LDI3LjksMCwwLDAsMTAuMTgs''@;'; put 'put ''Ni4yN0wxMi44MSw4LjlBMjQuNjgsMjQuNjgsMCwwLDEsMzEuMSwxMi4xMmExLjQ5LDEuNDksMCwwLDAsMi0uNDZsLjExLS4xN0ExLjUxLDEuNTEsMCwwLDAsMzIuNzYsOS4zOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9''@;'; put 'put ''Ik0zLDQuNzVsMy4xLDMuMUEyNy4yOCwyNy4yOCwwLDAsMCwzLjE4LDkuNDJhMS41MSwxLjUxLDAsMCwwLS40OCwyLjExbC4xMS4xN2ExLjQ5LDEuNDksMCwwLDAsMiwuNDYsMjQuNjksMjQuNjksMCwwLDEsMy42Ny0xLjlsMy4xNCwzLjE0YTIwLjYzLDIwLjYzLDAsMCwwLTQuNTMsMi4wOSwx''@;'; put 'put ''LjUxLDEuNTEsMCwwLDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2QTE3LjQ2LDE3LjQ2LDAsMCwxLDE0LjI1LDE2bDMuNiwzLjZhMTMuMzksMTMuMzksMCwwLDAtNi43OSwxLjkzLDEuNSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41MiwxLjUyLDAsMCwwLDIuMDYu''@;'; put 'put ''NDQsMTAuMiwxMC4yLDAsMCwxLDktLjdMMjksMzAuNzVsMS40MS0xLjQxLTI2LTI2WiIvPlxuJyksZS5DbHJTaGFwZUluc3RhbGw9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC45Miw4SDI2LjU1YTEsMSww''@;'; put 'put ''LDAsMCwwLDJIMzFWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMEEyLDIsMCwwLDAsMzAuOTIsOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMC4zLDE4Ljg3bDcsNi44OWExLDEsMCwwLDAsMS40LDBsNy02Ljg5YTEsMSwwLDAsMC0xLjQtMS40M0wxOSwyMi42NVY0YTEsMSwwLDAsMC0yLDBWMjIuNjVsLTUuMy01''@;'; put 'put ''LjIxYTEsMSwwLDAsMC0xLjQsMS40M1oiLz48cGF0aCBkPSJNMzEsMTMuNDNWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMC4zLDE4Ljg3bDcsNi44OWExLDEsMCwwLDAsMS40LDBsNy02Ljg5YTEsMSwwLDAsMC0xLjQtMS40M0wxOSwyMi42NVY0YTEsMSwwLDAsMC0yLDBWMjIuNjVsLTUuMy01LjIxYTEsMSwwLDAsMC0xLjQsMS40M1oiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEsMTUuNFYzMEg1VjEwSDkuMzhhMSwxLDAsMCwwLDAtMkg1LjA4QTIsMiwwLDAsMCwzLDEwVjMwYTIsMiwwLDAsMCwyLjA4LDJIMzAuOTJBMiwy''@;'; put 'put ''LDAsMCwwLDMzLDMwVjE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMz''@;'; put 'put ''LjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuJyksZS5DbHJTaGFwZVVuaW5zdGFsbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTExLjI5LDI2LjcyYTEsMSwwLDAsMCwxLjQxLDBMMTgsMjEuNDlsNS4zLDUuMjNBMSwxLDAsMCwwLDI0LjcsMjUuM2wtNS4yOC01LjIxLDUuMjgtNS4yMWExLDEsMCwwLDAtMS40MS0xLjQyTDE4LDE4LjY4bC01LjMtNS4yM2ExLDEsMCwwLDAtMS40MSwxLjQybDUuMjgsNS4yMUwxMS4zLDI1''@;'; put 'put ''LjNBMSwxLDAsMCwwLDExLjI5LDI2LjcyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC45Miw4SDI2LjU1YTEsMSwwLDAsMCwwLDJIMzFWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCww''@;'; put 'put ''LDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMEEyLDIsMCwwLDAsMzAuOTIsOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjI5LDI2''@;'; put 'put ''LjcyYTEsMSwwLDAsMCwxLjQxLDBMMTgsMjEuNDlsNS4zLDUuMjNBMSwxLDAsMCwwLDI0LjcsMjUuM2wtNS4yOC01LjIxLDUuMjgtNS4yMWExLDEsMCwwLDAtMS40MS0xLjQyTDE4LDE4LjY4bC01LjMtNS4yM2ExLDEsMCwwLDAtMS40MSwxLjQybDUuMjgsNS4yMUwxMS4zLDI1LjNBMSwxLDAs''@;'; put 'put ''MCwwLDExLjI5LDI2LjcyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDNWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIs''@;'; put 'put ''MCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43''@;'; put 'put ''LDI1LjNsLTUuMjgtNS4yMSw0Ljc1LTQuNjlIMjIuMjNhMy42NSwzLjY1LDAsMCwxLS44MS0uMUwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEsMTUuNFYzMEg1VjEwSDkuMzhhMSwxLDAsMCwwLDAtMkg1LjA4QTIsMiwwLDAsMCwzLDEwVjMwYTIsMiwwLDAsMCwyLjA4LDJIMzAuOTJBMiwyLDAsMCwwLDMzLDMwVjE1LjRaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwz''@;'; put 'put ''NC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuJyksZS5DbHJTaGFwZUxheWVycz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIwLjI1YTEsMSwwLDAsMS0uNDMt''@;'; put 'put ''LjFsLTE1LTcuMDlhMSwxLDAsMCwxLDAtMS44MWwxNS03LjA5YTEsMSwwLDAsMSwuODUsMGwxNSw3LjA5YTEsMSwwLDAsMSwwLDEuODFsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDIwLjI1Wk01LjM0LDEyLjE2bDEyLjY2LDYsMTIuNjYtNkwxOCw2LjE4WiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEsMCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYuODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyNi4x''@;'; put 'put ''NloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDdhMSwxLDAsMCwxLS40My0uMWwtMTUtNy4wOWExLDEsMCwwLDEsLjg1LTEuODFMMTgsMzBsMTQuNTctNi44OWExLDEsMCwxLDEsLjg1LDEuODFMMTgu''@;'; put 'put ''NDMsMzJBMSwxLDAsMCwxLDE4LDMyLjA3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIwLjI1YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLDAtMS44MWwxNS03LjA5YTEsMSwwLDAsMSwuODUs''@;'; put 'put ''MGwxNSw3LjA5YTEsMSwwLDAsMSwwLDEuODFsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDIwLjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDI2LjE2YTEsMSwwLDAsMS0uNDMtLjFMMi41NywxOWExLDEsMCwxLDEs''@;'; put 'put ''Ljg1LTEuODFMMTgsMjQuMDZsMTQuNTctNi44OUExLDEsMCwxLDEsMzMuNDMsMTlsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDI2LjE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMt''@;'; put 'put ''LjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbicpLGUuQ2xyU2hhcGVCbG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMtNmEx''@;'; put 'put ''LDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIsOS4wOVpNMTgsNS4xLDI4LjYxLDEwLDE4LDE0LjksNy4zOSwxMFpNNiwxMS41Nmwx''@;'; put 'put ''MSw1LjA4djE0LjhMNiwyNi4zNlpNMTksMzEuNDRWMTYuNjRsMTEtNS4wOHYxNC44WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNTNWMjYuMzZMMTksMzEuNDRWMTYuNjRsMi41Ny0xLjE5YTMuNjcs''@;'; put 'put ''My42NywwLDAsMS0yLjExLTEuMjJMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWwzLjA4LDEuNDIsMS0xLjc0TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAs''@;'; put 'put ''MzIsMjdWMTUuNTNaTTE3LDMxLjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg3LDEuMjZsLTUuNzIsOS45MWExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMS4xLDEuOTJIMzMuN2ExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTJMMjkuMDgsMS4yNkExLjI4LDEuMjgsMCwwLDAsMjYuODcsMS4yNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMjYuMzZMMTksMzEuNDRWMTYuNjRsOC4wOC0zLjczYTcuNTcsNy41NywwLDAsMS0yLTEuMjdMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWw0LjYxLDIuMTNBNy4xMiw3LjEyLDAsMCwxLDIyLjUsNmE4LDgsMCwwLDEsLjA3LTFMMTguNDIsMy4wOWEx''@;'; put 'put ''LDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVpNMTcsMzEuNDQsNiwyNi4zNlYxMS41NmwxMSw1LjA4WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiIC8+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40Miw5LjA5bC0xMy02YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEsMCwwLDAsLjU4LjkxbDEzLDZhMSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjEw''@;'; put 'put ''QTEsMSwwLDAsMCwzMS40Miw5LjA5Wk0xOCwxNC45LDcuMzksMTAsMTgsNS4xLDI4LjYxLDEwWk0zMCwyNi4zNiwxOSwzMS40NFYxNi42NGwxMS01LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS4zOHYx''@;'; put 'put ''MUwxOSwzMS40NFYxNi42NGwyLjc5LTEuMjlhMy42OCwzLjY4LDAsMCwxLTIuMjUtMS4xNkwxOCwxNC45LDcuMzksMTAsMTgsNS4xbDMsMS4zOSwxLTEuNzVMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEs''@;'; put 'put ''MSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xMiwyMS4xMywxMWExLjI3LDEuMjcsMCwwLDAsMS4x''@;'; put 'put ''LDEuOTFIMzMuNjhBMS4yNywxLjI3LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTJBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTMwLDEzLjVWMjYuMzZMMTksMzEuNDRWMTYuNjRsOC4wOC0zLjczYTcuNTcsNy41NywwLDAsMS0yLTEuMjdMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWw0LjYxLDIuMTNBNy4xMiw3LjEyLDAsMCwxLDIyLjUsNmE4LDgsMCwwLDEsLjA3LTFMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0''@;'; put 'put ''LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0t''@;'; put 'put ''YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlQmxvY2tzR3JvdXA9KDAsYS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWNi40M0ExLDEsMCwwLDAsMjYsNS41M2wtNy41LTMuNDVhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRMMi42OCwxOC43NmExLDEsMCwwLDAtLjU4LjkxdjkuNzhoMGExLDEsMCwwLDAsLjU4Ljkx''@;'; put 'put ''bDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MWgwVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTIuODEuOTFMMjUuNjEsMjIsMjAuNSwxOS42N2w1LjExLTIuMzVaTTE4LjEs''@;'; put 'put ''NC4wOGw1LjExLDIuMzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptNi41LDExLjQ5LTYuNSwzLTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOFpNMTEuNiwxNS41N2gwVjhsNi4wOCwyLjhhMSwx''@;'; put 'put ''LDAsMCwwLC44NCwwTDI0LjYsOHY3LjU4aDBsLTYuNSwzWk0zMi4xMSwyOC44MWwtNi41LDMtNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTMzLjUz''@;'; put 'put ''LDE4Ljc2LDI2LjYsMTUuNTdoLTJ2MGwtNi41LDMtNi41LTNWOGw2LjA4LDIuOGExLDEsMCwwLDAsLjg0LDBsLjI0LS4xMWE0LjE3LDQuMTcsMCwwLDEsLjI5LS42NWwxLjMzLTIuMzEtMi4yOCwxTDEzLDYuNDNsNS4xLTIuMzUsMy40NywxLjYsMS0xLjczTDE4LjUsMi4wOGExLDEsMCwwLDAt''@;'; put 'put ''Ljg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAs''@;'; put 'put ''MCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4xMSwyLjM1TDI1LjYx''@;'; put 'put ''LDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbjxwYXRoIGQ9Ik0yNi44NSwxLjE0''@;'; put 'put ''bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N1YxMi43YTcuNTgsNy41OCwwLDAsMS0yLTEuNTF2NC4zOWwtNi41LDMtNi41LTNWOGw2LjA4LDIuOGExLDEsMCwwLDAsLjg0LDBMMjMsOC43MmE3LjA1LDcuMDUsMCwwLDEtLjQ3LTJsLTQuNDcsMkwx''@;'; put 'put ''Myw2LjQzbDUuMS0yLjM1LDQuNDQsMnMwLS4wNiwwLS4wOWE3LjU1LDcuNTUsMCwwLDEsLjI3LTJsLTQuMy0yYTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0bC02LjksMy4xOGExLDEsMCwwLDAtLjU4LjkxdjkuNzhhMSwxLDAsMCwwLC41OC45MWw3LjUs''@;'; put 'put ''My40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFWMTkuNjdBMSwxLDAsMCwwLDMzLjUzLDE4Ljc2Wk0xMC42LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIyLDUuNDksMTkuNjdabTAsMTQuNDktNi41''@;'; put 'put ''LTNWMjEuMjNMMTAuMTgsMjRBMSwxLDAsMCwwLDExLDI0bDYuMDgtMi44LDAsNy42Wm0xNS0xNC40OCw1LjExLDIuMzVMMjUuNjEsMjIsMjAuNSwxOS42N1ptMCwxNC40OS02LjUxLTNWMjEuMjJMMjUuMTksMjRBMSwxLDAsMCwwLDI2LDI0bDYuMDgtMi44LDAsNy42MVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbjxjaXJjbGUgY3g9IjMwLjAzIiBjeT0iNi4wMyIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuPHBh''@;'; put 'put ''dGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWNi40M0ExLDEsMCwwLDAsMjYsNS41M2wtNy41LTMuNDVhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRMMi42OCwxOC43NmExLDEsMCwwLDAtLjU4LjkxdjkuNzhoMGExLDEsMCwwLDAsLjU4LjkxbDcu''@;'; put 'put ''NSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MWgwVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMjUuNjEsMjIsMjAuNSwxOS42N2w1LjExLTIuMzUsNS4xMSwyLjM1Wm0tMS02LjQ0''@;'; put 'put ''LTYuNDQsM1YxMC44N2ExLDEsMCwwLDAsLjM1LS4wOEwyNC42LDh2Ny41OFpNMTguMSw0LjA4bDUuMTEsMi4zNUwxOC4xLDguNzgsMTMsNi40M1pNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5LDE5LjY3Wm02LjUsMTEuNDktNi41LDNoMFYyNC4xMWgwQTEsMSwwLDAsMCwxMSwy''@;'; put 'put ''NGw2LjA4LTIuOFptMTUsMC02LjQ2LDNWMjQuMTFBMSwxLDAsMCwwLDI2LDI0bDYuMDgtMi44WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3djBoLTJ2MGwtNi40MywzVjEwLjg3YTEuMDUsMS4wNSww''@;'; put 'put ''LDAsMCwuMzUtLjA4bC4xNC0uMDZBMy4yMywzLjIzLDAsMCwxLDE5LDEwbDEuMjgtMi4yMi0yLjE0LDFMMTMsNi40M2w1LjEtMi4zNSwzLjM5LDEuNTYsMS0xLjczLTQtMS44M2ExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAs''@;'; put 'put ''MCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIu''@;'; put 'put ''MzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYsMzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0xMi4xMyw1LjExLTIuMzUsNS4xMSwyLjM1TDI1LjYxLDIyWk0yNS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcu''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODksMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yNywxM0gzMy43MmExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMSwxLjE0QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwyNi44OSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjEyLjY5YTcuNjYsNy42NiwwLDAsMS0yLTEuNDd2NC4z''@;'; put 'put ''NGwtNi40MywzVjEwLjg3YTEuMDUsMS4wNSwwLDAsMCwuMzUtLjA4TDIzLDguNzNhNy42NSw3LjY1LDAsMCwxLS40OC0ybC00LjQyLDJMMTMsNi40M2w1LjEtMi4zNSw0LjM4LDJWNmE3LjU1LDcuNTUsMCwwLDEsLjI3LTJMMTguNSwyLjA4YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwx''@;'; put 'put ''LDAsMCwwLS41OC45MXY5LjE0bC02LjksMy4xOGExLDEsMCwwLDAtLjU4LjkxdjkuNzhhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFWMTkuNjdBMSwx''@;'; put 'put ''LDAsMCwwLDMzLjUzLDE4Ljc2Wm0tMjgsLjkxLDUuMTEtMi4zNiw1LjExLDIuMzVMMTAuNiwyMlpNMTAuNiwzMS44VjI0LjExQTEuMDgsMS4wOCwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptOS45LTEyLjEzLDUuMTEtMi4zNSw1LjExLDIuMzVMMjUuNjEsMjJaTTI1LjY0LDMxLjhWMjQu''@;'; put 'put ''MTFBLjg5Ljg5LDAsMCwwLDI2LDI0bDYuMDgtMi44LDAsNy42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4PSIyOS45OCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVCdW5kbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi40Myw4LjM1bC0xMy02LjIxYTEsMSwwLDAsMC0uODcsMGwtMTUs''@;'; put 'put ''Ny4yNGExLDEsMCwwLDAtLjU3LjlWMjYuODNhMSwxLDAsMCwwLC42LjkybDEzLDYuMTlhMSwxLDAsMCwwLC44NywwbDE1LTcuMjRhMSwxLDAsMCwwLC41Ny0uOVY5LjI1QTEsMSwwLDAsMCwzMi40Myw4LjM1Wk0xOSw0LjE1LDI5LjkzLDkuMzdsLTUuMDUsMi40NEwxNC4yMSw2LjQ2Wk0xNywx''@;'; put 'put ''NS42NCw2LDEwLjQxbDUuOS0yLjg1TDIyLjYsMTIuOTFaTTUsMTIuMTMsMTYsMTcuNFYzMS40Nkw1LDI2LjJaTTE4LDMxLjQ1VjE3LjM2bDEzLTYuMjl2MTQuMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi40Myw4''@;'; put 'put ''LjM1bC0xMy02LjIxYTEsMSwwLDAsMC0uODcsMGwtMTUsNy4yNGExLDEsMCwwLDAtLjU3LjlWMjYuODNhMSwxLDAsMCwwLC42LjkybDEzLDYuMTlhMSwxLDAsMCwwLC44NywwbDE1LTcuMjRhMSwxLDAsMCwwLC41Ny0uOVY5LjI1QTEsMSwwLDAsMCwzMi40Myw4LjM1Wk0xOSw0LjE1LDI5Ljkz''@;'; put 'put ''LDkuMzdsLTUuMDUsMi40NEwxNC4yMSw2LjQ2Wk0xNywxNS42NCw2LDEwLjQxbDUuOS0yLjg1TDIyLjYsMTIuOTFabTEsMTUuOFYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4nKSxlLkNsclNoYXBlV2lmaT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjU1LDguMmEyOC4xLDI4LjEsMCwwLDAtMzEuMTEuMDhBMSwxLDAsMSwwLDMuNTYsOS45NGEyNi4xMSwyNi4xMSwwLDAsMSwyOC44OS0uMDcsMSwxLDAsMCwwLDEuMS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOC4wNSwxMC43MkEyMC43NCwyMC43NCwwLDAsMCw2LjIzLDE0LjQsMSwxLDAsMCwwLDcuMzYsMTYsMTguODUsMTguODUsMCwwLDEsMjguNjQsMTZhMSwxLDAsMCwwLDEuMTItMS42NUEyMC43NSwyMC43NSwwLDAsMCwxOC4wNSwxMC43Mloi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTguMDUsMTcuOWExMy41MSwxMy41MSwwLDAsMC04LDIuNjQsMSwxLDAsMCwwLDEuMTgsMS42MSwxMS41NiwxMS41NiwwLDAsMSwxMy42Mi0uMDhBMSwxLDAsMSwwLDI2''@;'; put 'put ''LDIwLjQ2LDEzLjUyLDEzLjUyLDAsMCwwLDE4LjA1LDE3LjlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDI0LjQyYTQsNCwwLDEsMCw0LDRBNCw0LDAsMCwwLDE4LDI0LjQyWm0wLDZhMiwyLDAsMSwxLDIt''@;'; put 'put ''MkEyLDIsMCwwLDEsMTgsMzAuNDJaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGN4PSIxOCIgY3k9IjI5LjU0IiByPSIzIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yIiBkPSJNMzIuNzYsOS4zOGEyNy44NywyNy44NywwLDAsMC0yOS41NywwLDEuNTEsMS41MSwwLDAsMC0uNDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY4LDI0LjY4LDAsMCwxLDI2LjI2LDAsMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUx''@;'; put 'put ''LDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjguODIsMTUuNDRhMjAuNTksMjAuNTksMCwwLDAtMjEuNywwLDEuNTEsMS41MSwwLDAsMC0uNDYsMi4xbC4xMS4xN2ExLjQ5LDEuNDksMCww''@;'; put 'put ''LDAsMiwuNDYsMTcuNCwxNy40LDAsMCwxLDE4LjM2LDAsMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDI4LjgyLDE1LjQ0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTI0Ljg4LDIx''@;'; put 'put ''LjQ5YTEzLjQxLDEzLjQxLDAsMCwwLTEzLjgyLDAsMS41LDEuNSwwLDAsMC0uNDYsMi4wOWwuMS4xNmExLjUyLDEuNTIsMCwwLDAsMi4wNi40NCwxMC4yNywxMC4yNywwLDAsMSwxMC40MiwwLDEuNTIsMS41MiwwLDAsMCwyLjA2LS40NWwuMS0uMTZBMS40OSwxLjQ5LDAsMCwwLDI0Ljg4LDIx''@;'; put 'put ''LjQ5WiIvPlxuJyksZS5DbHJTaGFwZVJhY2tTZXJ2ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjEwIiB5PSIxNyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguNjQsMTFBMy42NSwzLjY1LDAs''@;'; put 'put ''MCwxLDE5LDkuODlMMTkuNTYsOUgxMHYyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjIxSDRWMTVIMjAuNThBMy42NywzLjY3LDAsMCwxLDE5LDEzLjU2''@;'; put 'put ''YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNNCwyOVYyM0gzMnY2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSI2IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIHg9IjYiIHk9IjI1IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgZD0iTTEwLDEx''@;'; put 'put ''SDI0di0uNTFBNy40OCw3LjQ4LDAsMCwxLDIzLjEzLDlIMTBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjY4LS41SDRWN0gyMi41N2E3''@;'; put 'put ''LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTQsMTVIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxMCIgeT0iOSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI2IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEwIiB5PSIxNyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMnY2SDRabTAsOEgzMnY2SDRa''@;'; put 'put ''TTQsMjlWMjNIMzJ2NloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTciIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xOSw5Ljg5LDE5LjU2LDlIMTBWN0gyMC43MWwxLjczLTNINEEyLDIsMCwwLDAsMiw2''@;'; put 'put ''djZIMTguNTdBMy42NywzLjY3LDAsMCwxLDE5LDkuODlaTTgsOUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOS4z''@;'; put 'put ''NSwxNEgydjhIMzRWMTUuMzhaTTgsMTlINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0yLDE0djhIMzRWMTRabTYsNUg2VjE3SDhabTE2LDBIMTBWMTdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTIsMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjI0SDJabTgtM0gyNHYySDEwWk02LDI3SDh2Mkg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0yMy4xMyw5SDEwVjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNDksNy40OSww''@;'; put 'put ''LDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZ2NkgyNS41MUE3LjUyLDcuNTIsMCwwLDEsMjMuMTMsOVpNOCw5SDZWN0g4WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIsMjJIMzRWMTRIMlptOC01SDI0djJIMTBaTTYsMTdIOHYySDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yIiBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZ2NkgzNFY2QTIsMiwwLDAsMCwzMiw0Wk04LDlINlY3SDhaTTI0LDlIMTBWN0gyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDMwYTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbicpLGUuQ2xyU2hhcGVIYXJkRGlzaz0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRl''@;'; put 'put ''ZCIgeD0iNiIgeT0iMjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTM0LDIxLjA4bC0xLjQtNS42OEgzMC41MWwxLjQ5LDZWMjlINFYyMS40NEw3LjA2LDloMTIuNWwxLjE1LTJINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIs''@;'; put 'put ''MjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0i''@;'; put 'put ''MjYiIHk9IjI0IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zNCwyMS4wOCwzMiwxMy4yMWE3LjQ5LDcuNDksMCwwLDEtMiwuMjlsMiw3Ljk0VjI5''@;'; put 'put ''SDRWMjEuNDRMNy4wNiw5SDIzLjEzYTcuNDUsNy40NSwwLDAsMS0uNTUtMkg3LjA2QTIsMiwwLDAsMCw1LjEzLDguNDdMMiwyMS4wOGExLDEsMCwwLDAsMCwuMjRWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIxLjMxQTEsMSwwLDAsMCwzNCwyMS4wOFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTM0LDIxLjA4LDMwLjg2LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaTTQsMjlWMjEuNDRM''@;'; put 'put ''Ny4wNiw5SDI4LjkzTDMyLDIxLjQ0VjI5WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjJ2N2EyLDIsMCwwLDAsMiwySDMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMjJabTI4LDVIMjZWMjVoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMi41OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIwLjcxLDdI''@;'; put 'put ''Ny4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0i''@;'; put 'put ''TTIsMjJ2N2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjJabTI4LDVIMjZWMjVoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMjFBNy40Nyw3LjQ3LDAsMCwxLDIy''@;'; put 'put ''LjU3LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuODYsOC40M0EyLDIsMCwwLDAsMjguOTQsN0g3LjA2QTIsMiwwLDAsMCw1LjEzLDguNDdMMi4yOSwyMEgzMy43MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4nKSxlLkNsclNoYXBlQmFja3VwUmVzdG9yZT0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI2IiB3''@;'; put 'put ''aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOWExLDEsMCwxLDAsMiwwVjZsMS40NywxLjQ2LDEtMS43OUwxOCwyLjE2LDEx''@;'; put 'put ''LjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIy''@;'; put 'put ''LjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDE1VjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1LjRaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwy''@;'; put 'put ''OS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMTlhMSwxLDAsMSwwLDIsMFY2bDQsMy45NWExLDEsMCwwLDAsLjcxLjI5bC4xMSwwYTcuNDYsNy40NiwwLDAsMS0xLjI1LTMuNTJMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1QTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIu''@;'; put 'put ''NDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3LDEzLjQ1WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyNiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzAuODQsMTMuMzdBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDIxdjJoNy45NUMzMCwxNi45NCwzMS43MiwyMS42NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0''@;'; put 'put ''SDE1VjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODQsMTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOGExLDEsMCwxLDAsMiwwVjZsMS40NywxLjQ2LDEtMS43OUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zMS41OCwxNS40SDIyLjIzQTMuNjIsMy42MiwwLDAsMSwyMSwxNS4xNlYxOGEzLDMsMCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDMzLjkzQzMzLjc5LDIxLjQ5LDMzLjI4''@;'; put 'put ''LDIwLjA3LDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTMsOS45MiwxNyw2VjE4YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVhMSwxLDAsMCww''@;'; put 'put ''LC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIuMTYsMTEuNjEsOC41QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMC44Nywx''@;'; put 'put ''My40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1QTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMsMzMuMTUsMTkuNywz''@;'; put 'put ''MC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAuODQsMTMuMzdBMS45NCwxLjk0''@;'; put 'put ''LDAsMCwwLDI4LjkzLDEySDIxdjZhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgzMy45M0MzMy43NywyMS40MywzMy4xNCwxOS42OSwzMC44NCwxMy4zN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDQsMy45NUExLDEsMCwxLDAsMjQuMzgsOC41TDE4LDIuMTYsMTEuNjEsOC41QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuJyksZS5DbHJTaGFwZUJhY2t1cD0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQu''@;'; put 'put ''NDctNC40NGgtLjIzYTMuNjcsMy42NywwLDAsMS0yLS42MUwxOSwxNlY0YTEsMSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFs''@;'; put 'put ''ZXJ0ZWQiIGQ9Ik0zMS41OCwxNS40SDI5LjQ2YzEsMi44NSwyLjMxLDYuMzcsMi41NCw3LjA4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIOS41OGEzLDMsMCwwLDEtLjE0LTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1Yz''@;'; put 'put ''MGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjIuMzNDMzQsMjIuMTIsMzQsMjIsMzEuNTgsMTUuNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJN''@;'; put 'put ''MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIyNiIgeT0iMjYiIHdpZHRo''@;'; put 'put ''PSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00''@;'; put 'put ''LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMwLjg3LDEzLjQ1YTcuNTUsNy41NSwwLDAsMS0uODcuMDUsNy40Niw3LjQ2LDAsMCwxLTMu''@;'; put 'put ''MzUtLjgsMywzLDAsMCwxLS4yNCwxLjNoMi41NEMzMCwxNi45NCwzMS43MiwyMS42NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIu''@;'; put 'put ''MzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiXG4gICAgICAgICAgICAgICAgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyNi41NWEzLDMsMCwwLDEtLjE0LDJoMi41NEMzMCwxNi45NCwzMS43MiwyMS42''@;'; put 'put ''NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIy''@;'; put 'put ''LjEsMzQsMjIsMzAuODQsMTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwx''@;'; put 'put ''LDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNi41OCwyMS4yNiwxMC4yLDE0LjkxQTMsMywwLDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEu''@;'; put 'put ''OSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MjRabTI4LDRIMjZWMjZoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOC42NiwyMkgzMy45M2MtLjE1LS41MS0uNjUtMS45My0yLjM1LTYuNkgyNS4zbC01Ljg5LDUuODZaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiBkPSJNMTgsMTkuODRsNC40Ny00LjQ0aC0uMjNhMy42NCwzLjY0LDAsMCwxLTItLjYxTDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAs''@;'; put 'put ''MC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwx''@;'; put 'put ''LDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTYuNTgsMjEuMjYsMTAuMiwx''@;'; put 'put ''NC45MUEzLDMsMCwwLDEsOS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNEgyNlYyNmg0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xOC42NiwyMkgzMy45M2MtLjE3LS41''@;'; put 'put ''Ny0uNzktMi4zLTMuMDYtOC41NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uODYsMi4yMWwtNi4zOCw2LjM1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAt''@;'; put 'put ''MiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOS40MSwyMS4yNmwtLjc0Ljc0SDMzLjkzYy0uMTctLjU3LS43OS0yLjMxLTMuMDktOC42M0ExLjk0LDEuOTQs''@;'; put 'put ''MCwwLDAsMjguOTMsMTJIMjYuNTVhMywzLDAsMCwxLS43NiwyLjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE2LjU4LDIxLjI2LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCww''@;'; put 'put ''LDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNEgyNlYy''@;'; put 'put ''Nmg0WiIvPlxuJyksZS5DbHJTaGFwZURldmljZXM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxM0gyNGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjE1QTIsMiww''@;'; put 'put ''LDAsMCwzMiwxM1ptMCwyVjI2SDI0VjE1Wk0yNCwzMFYyNy42aDhWMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIwLDIySDRWNkgyOHY1aDJWNmEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsNlYyMmEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMCwyNkg5YTEsMSwwLDAsMCwwLDJIMjBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyOEgyNFYxNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9''@;'; put 'put ''Ik0yOCw0SDRBMiwyLDAsMCwwLDIsNlYyMmEyLDIsMCwwLDAsMiwyaDh2Mkg5LjMyQTEuMiwxLjIsMCwwLDAsOCwyN2ExLjIsMS4yLDAsMCwwLDEuMzIsMUgxOS45MnYtLjM3SDIwVjIySDRWNkgyOHY1aDJWNkEyLDIsMCwwLDAsMjgsNFoiLz5cbicpLGUuQ2xyU2hhcGVLZXlib2FyZD0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCwxOEg0VjEwSDMyWiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTEiIHk9IjEz''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTUiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMTkiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iNyIgeT0iMTci''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiB4PSIxMSIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iMTUiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEiIHg9IjE5IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMyIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIgeD0iMjciIHk9''@;'; put 'put ''IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIHg9IjI3IiB5PSIyMiIgd2lkdGg9IjEuOTQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiB4PSI3IiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiB4PSIxMS4xMyIgeT0iMjIiIHdpZHRoPSIxMy43NSIgaGVpZ2h0''@;'; put 'put ''PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk0xOSwxM2gydjJIMTlabTAsNGgydjJI''@;'; put 'put ''MTlabS00LTRoMnYySDE1Wm0wLDRoMnYySDE1Wm0tNC00aDJ2MkgxMVpNOSwyNEg3VjIySDlabTAtNUg3VjE3SDlabTAtNEg3VjEzSDlabTIsMmgydjJIMTFabTEzLjg4LDdIMTEuMTNWMjJIMjQuODhaTTI1LDE5SDIzVjE3aDJabTAtNEgyM1YxM2gyWm0zLjk0LDlIMjdWMjJoMS45NFpNMjks''@;'; put 'put ''MTlIMjdWMTdoMlptMC00SDI3VjEzaDJaIi8+XG4nKSxlLkNsclNoYXBlTW91c2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwzNEExMCwxMCwwLDAsMSw4LDI0VjEyYTEwLDEwLDAsMCwxLDIwLDBWMjRB''@;'; put 'put ''MTAsMTAsMCwwLDEsMTgsMzRaTTE4LDRhOCw4LDAsMCwwLTgsOFYyNGE4LDgsMCwwLDAsMTYsMFYxMkE4LDgsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTVhMSwxLDAsMCwxLTEtMVYx''@;'; put 'put ''MGExLDEsMCwwLDEsMiwwdjRBMSwxLDAsMCwxLDE4LDE1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTAsMTAsMCwwLDAsOCwxMlYyNGExMCwxMCwwLDAsMCwyMCwwVjEyQTEwLDEwLDAsMCwwLDE4LDJabTEu''@;'; put 'put ''MywxMS40NGExLjMsMS4zLDAsMCwxLTIuNiwwVjEwYTEuMywxLjMsMCwwLDEsMi42LDBaIi8+XG4nKSxlLkNsclNoYXBlRGFzaGJvYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUuMTgsMTIuMzJsLTUu''@;'; put 'put ''OTEsNS44MWEzLDMsMCwxLDAsMS40MSwxLjQybDUuOTItNS44MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDQuMjVBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVB''@;'; put 'put ''MTYuNDksMTYuNDksMCwwLDAsMTgsNC4yNVptMTEuMzQsMjUuNUg2LjY2YTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUsMS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAsMSwxNyw2LjI5djMu''@;'; put 'put ''NWgyVjYuM2ExNC40NywxNC40NywwLDAsMSwxMy40LDEzLjYxSDI4LjkydjJoMy41M0ExNC40MywxNC40MywwLDAsMSwyOS4zNCwyOS43NVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0xNS44NSwxOC42OWEzLDMsMCwxLDAsNC44My44NWw1LjkyLTUuODEtMS40MS0xLjQxLTUuOTEsNS44MUEzLDMsMCwwLDAsMTUuODUsMTguNjlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIiBkPSJNMzIuNTgsMTNhNy40NSw3LjQ1LDAsMCwxLTIuMDYuNDQsMTQuNCwxNC40LDAsMCwxLDEuOTMsNi40M0gyOC45MnYyaDMuNTNhMTQuNDMsMTQuNDMsMCwwLDEtMy4xMSw3Ljg0SDYuNjZhMTQuNDMsMTQuNDMsMCwwLDEtMy4xMS03Ljg0SDd2LTJIMy41NUExNC40MSwxNC40''@;'; put 'put ''MSwwLDAsMSw3LDExLjI5bDIuNDUsMi40NSwxLjQxLTEuNDFMOC40Myw5Ljg3QTE0LjQxLDE0LjQxLDAsMCwxLDE3LDYuMjl2My41aDJWNi4zQTE0LjQxLDE0LjQxLDAsMCwxLDIyLjU4LDdhNy41Miw3LjUyLDAsMCwxLS4wOC0xLDcuNTIsNy41MiwwLDAsMSwuMDktMS4wOUExNi40OSwxNi40''@;'; put 'put ''OSwwLDAsMCw1LjQsMzEuNGwuMy4zNUgzMC4zbC4zLS4zNWExNi40NSwxNi40NSwwLDAsMCwyLTE4LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDQuMjVBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVBMTYuNDksMTYuNDksMCwwLDAsMTgsNC4yNVpt''@;'; put 'put ''OC42LDkuNDgtNS45Miw1LjgxYTMsMywwLDEsMS0xLjQxLTEuNDJsNS45MS01LjgxWm0tMjMsNi4xN0g3djJIMy41NmMwLS4zOS0uMDUtLjc3LS4wNS0xLjE3UzMuNTMsMjAuMTgsMy41NSwxOS45Wm00Ljg4LTEwLDIuNDYsMi40Nkw5LjQ3LDEzLjc0LDcsMTEuMjlBMTQuNTcsMTQuNTcsMCww''@;'; put 'put ''LDEsOC40Myw5Ljg3Wk0xOSw5Ljc5SDE3VjYuMjljLjMyLDAsLjYzLDAsMSwwcy43LDAsMSwuMDVaTTMyLjQ5LDIwLjc0YzAsLjM5LDAsLjc5LS4wNSwxLjE3SDI4Ljkydi0yaDMuNTNDMzIuNDcsMjAuMTgsMzIuNDksMjAuNDYsMzIuNDksMjAuNzRaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMi41OCwxM2E3LjQ2LDcuNDYsMCwwLDEtMTAtOC4xMkExNi40OSwxNi40OSwwLDAsMCw1LjQsMzEuNGwuMy4zNUgzMC4zbC4zLS4zNWExNi40NSwxNi40NSwwLDAsMCwyLTE4LjM2''@;'; put 'put ''Wk0xNyw2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1djMuNUgxN1pNNywyMS45MUgzLjU2YzAtLjM5LS4wNS0uNzctLjA1LTEuMTdzMC0uNTYsMC0uODNIN1ptMi41MS04LjE2TDcsMTEuMjlBMTQuNTcsMTQuNTcsMCwwLDEsOC40Myw5Ljg3bDIuNDYsMi40NlptMTAuNjIsOS4xOWEz''@;'; put 'put ''LDMsMCwxLDEtLjgyLTQuODFsNS45MS01LjgxLDEuNDEsMS40MS01LjkyLDUuODFBMywzLDAsMCwxLDIwLjA5LDIyLjkzWm0xMi4zNS0xSDI4Ljkydi0yaDMuNTNjMCwuMjgsMCwuNTUsMCwuODNTMzIuNDcsMjEuNTIsMzIuNDQsMjEuOTFaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuJyksZS5DbHJTaGFwZUhvc3Q9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0xOCwyNC4zYTIuNDgsMi40OCwwLDEsMCwyLjQ4LDIuNDdBMi40OCwyLjQ4LDAsMCwwLDE4LDI0LjNabTAsMy42YTEuMTMsMS4xMywwLDEsMSwxLjEzLTEuMTJBMS4xMywxLjEzLDAsMCwxLDE4LDI3LjlaIi8+PHJlY3QgeD0iMTMuNSIgeT0iMjAuNyIgd2lkdGg9Ijki''@;'; put 'put ''IGhlaWdodD0iMS40NCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjUsMy42SDEwLjM1QTEuMzUsMS4zNSwwLDAsMCw5LDQuOTVWMzIuNEgyN1Y0Ljk1QTEuMzUsMS4zNSwwLDAsMCwyNS42NSwzLjZa''@;'; put 'put ''bS0uNDUsMjdIMTAuOFY1LjRIMjUuMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTIuNiIgeT0iNy4yIiB3aWR0aD0iMTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjYiIHk9IjEwLjgiIHdpZHRoPSIxMC44IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxl''@;'; put 'put ''cnRlZCIgZD0iTTE1LjIsMjcuOGMwLDEuNSwxLjIsMi44LDIuOCwyLjhzMi44LTEuMiwyLjgtMi44UzE5LjUsMjUsMTgsMjVTMTUuMiwyNi4yLDE1LjIsMjcuOHogTTE5LjIsMjcuOGMwLDAuNy0wLjYsMS4yLTEuMiwxLjJzLTEuMi0wLjYtMS4yLTEuMnMwLjYtMS4yLDEuMi0xLjJTMTkuMiwy''@;'; put 'put ''Ny4xLDE5LjIsMjcuOHoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMTMiIHk9IjIxIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42Ii8+XG4gICAgICAgICAgICAgICAgPHBvbHln''@;'; put 'put ''b24gY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHBvaW50cz0iMjEuMyw2IDEyLDYgMTIsNy42IDIwLjQsNy42Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xMiwxMS42aDYuNmMwLTAuNiwwLjItMS4xLDAuNC0xLjZoLTdWMTEuNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTI2LDE1''@;'; put 'put ''LjRWMzJIMTBWNGgxMi41bDEuMS0ySDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS40SDI2eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYu''@;'; put 'put ''OSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2Ljks''@;'; put 'put ''MS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE1LjIsMjcuOGMwLDEuNSwxLjIsMi44LDIuOCwyLjhzMi44LTEuMiwyLjgtMi44UzE5LjUsMjUsMTgsMjVTMTUuMiwyNi4y''@;'; put 'put ''LDE1LjIsMjcuOHogTTE5LjIsMjcuOGMwLDAuNy0wLjYsMS4yLTEuMiwxLjJzLTEuMi0wLjYtMS4yLTEuMnMwLjYtMS4yLDEuMi0xLjJTMTkuMiwyNy4xLDE5LjIsMjcuOHoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1iYWRnZWQiIHg9IjEzIiB5PSIyMSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTI0LDEwLjVjLTAuMS0wLjItMC4y''@;'; put 'put ''LTAuMy0wLjMtMC41SDEydjEuNmgxMlYxMC41eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTEyLDZ2MS42aDEwLjdjLTAuMS0wLjUtMC4yLTEuMS0wLjItMS42SDEyeiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgZD0iTTI2LDEyLjNWMzJIMTBWNGgxMi44YzAuMi0wLjcsMC41LTEuNCwwLjktMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTMuMkMyNy4z''@;'; put 'put ''LDEzLDI2LjYsMTIuNywyNiwxMi4zeiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LjUsMmgtMTdDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMy41QzI4LDIuNywyNy4zLDIsMjYuNSwyeiBNMTgsMzAuNWMtMS41LDAtMi44LTEuMi0yLjgtMi44UzE2LjUsMjUsMTgsMjVzMi44LDEuMiwyLjgs''@;'; put 'put ''Mi44UzE5LjUsMzAuNSwxOCwzMC41eiBNMjMsMjIuNkgxM1YyMWgxMFYyMi42eiBNMjQsMTEuNkgxMlYxMGgxMlYxMS42eiBNMjQsNy42SDEyVjZoMTJWNy42eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4''@;'; put 'put ''IiBjeT0iMjcuOCIgcj0iMS4yIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIyLjIsMTUuM2MtMiwwLTMuNy0xLjYtMy43LTMuN0gxMlYxMGg2LjljMC0wLjEsMC4xLTAuMiwwLjEt''@;'; put 'put ''MC4ybDEuMi0yLjJIMTJWNmg5LjJsMi4zLTRoLTE0QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjE1LjNIMjIuMnogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBW''@;'; put 'put ''MjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDFsLTUuNyw5LjljLTAuMywwLjYtMC4xLDEuNCwwLjUsMS43YzAuMiwwLjEsMC40LDAuMiwwLjYsMC4yaDExLjRjMC43LDAsMS4zLTAuNiwxLjMtMS4zYzAtMC4yLTAuMS0wLjQtMC4yLTAuNkwy''@;'; put 'put ''OS4xLDFjLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC43LDI3LDAuOCwyNi45LDF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNCwxMC4zdjEuMkgxMlYxMGgxMS44Yy0w''@;'; put 'put ''LjUtMC43LTAuOC0xLjUtMS0yLjRIMTJWNmgxMC41YzAsMCwwLTAuMSwwLTAuMWMwLTEuNCwwLjQtMi43LDEuMS0zLjlIOS41QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjFDMjYuNCwxMi42LDI1LDExLjcsMjQsMTAuM3ogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41''@;'; put 'put ''LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXpNMjMsMjIuNkgxM1YyMWgxMFYyMi42eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGN4PSIxOCIgY3k9IjI3''@;'; put 'put ''LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjUuOSIgcj0iNSIvPlxuJyksZS5DbHJTaGFwZVN0b3JhZ2U9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMyw2LjY5aDBjLS4xOC0zLjQxLTkuNDctNC4zMy0xNS00LjMzUzMsMy4yOSwzLDYuNzhWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjYuNzhzMCww''@;'; put 'put ''LDAsMFMzMyw2LjcsMzMsNi42OVptLTIsNy41NmMtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUuMzR2Mi4wOEE0My4zMiw0My4zMiwwLDAsMCwxOCwxOC43YzQsMCw5LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40''@;'; put 'put ''NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1YTQzLjMyLDQzLjMyLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUuODYtNS4wOCwyLjQ1LTEzLDIuNDVTNS4zLDMwLjIsNSwyOS4zN1Y2LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmM3Ljc3LDAsMTIuNDYsMS41MywxMywy''@;'; put 'put ''LjM3LS41Mi44Ny01LjIxLDIuMzktMTMsMi4zOUEzNy42LDM3LjYsMCwwLDEsNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yN2M0LDAsOS45My0uNDgsMTMtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LjUxLDkuMDksMTgsOS4xMUEzNy42LDM3LjYsMCwwLDEsNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yN2guNjFBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yOC44MywxNS40QTM4LjM3LDM4LjM3LDAsMCwxLDE4LDE2LjcsMzcuNDUsMzcuNDUsMCwwLDEsNywxNS4zNHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCwwLDkuOTMtLjQ4LDEz''@;'; put 'put ''LTJ2NS4xN2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0uNDgsMTMtMnY1LjFjLS4zNS44Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3VjYuODJDNS4zLDYs''@;'; put 'put ''MTAsNC4zNiwxOCw0LjM2YzEuNSwwLDIuODkuMDYsNC4xNS4xNmwxLjEtMS45Yy0xLjg2LS4xOC0zLjctLjI2LTUuMjUtLjI2LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4zN2MwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDN2LTE0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2''@;'; put 'put ''LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yNyw1NC44''@;'; put 'put ''Miw1NC44MiwwLDAsMCw2LjItLjM2LDcuNSw3LjUsMCwwLDEtMS4xMy0xLjg4Yy0xLjUuMTUtMy4yLjI0LTUuMDcuMjRBMzcuNiwzNy42LDAsMCwxLDcsNy43NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQiIGQ9Ik0zMSwxMy40M3YuODJjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzMsNDMuMzMsMCwwLDAsMTgsMTguN2M0LDAsOS45My0uNDgsMTMtMnY1LjE3Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcu''@;'; put 'put ''NDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMyw0My4zMywwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdWNi44MkM1LjMsNiwxMCw0LjM2LDE4LDQuMzZjMS43LDAsMy4yNS4wOCw0LjY0LjJh''@;'; put 'put ''Ny40NCw3LjQ0LDAsMCwxLC42Ny0xLjk0Yy0xLjg4LS4xOC0zLjc1LS4yNi01LjMxLS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjEyLjg3QTcuNDUsNy40NSwwLDAsMSwzMSwxMy40M1oiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xNy45MSwxOC4yOGM4LjA4LDAsMTQuNjYtMS43NCwxNS4wOS0zLjk0VjguNTljLS40MywyLjItNywzLjk0LTE1LjA5LDMuOTRBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTFWOWEzOS40LDM5LjQsMCwwLDAsMTEuNjYsMS41MUMyNiwxMC41MywzMi41Miw4Ljc5LDMzLDYuNjFo''@;'; put 'put ''MEMzMi44LDMuMiwyMy41MiwyLjI4LDE4LDIuMjhTMywzLjIxLDMsNi43MVYyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAs''@;'; put 'put ''MCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwxOC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTcuOTEsMjAuMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTguNzd2LTJhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEuNTFjNi45LDAsMTIuNy0xLjI3LDE0LjUxLTNIMjIuMjNhMy42NywzLjY3LDAs''@;'; put 'put ''MCwxLTMuNTUtMi43NWgtLjc3QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEuNTFoLjgyQTMuNjQsMy42NCwwLDAsMSwxOSw5Ljc1bDQuMTctNy4yMmMtMS44NS0uMTgtMy42OC0uMjUtNS4yMS0uMjUtNS41NywwLTE1LC45My0xNSw0LjQzVjI5LjI5''@;'; put 'put ''YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1YyNC4wOUMzMi41NywyNi4yOCwyNiwyOCwxNy45MSwyOEEzOS40LDM5LjQsMCwwLDEsNi4yNSwyNi41MnYtMkEzOS40LDM5LjQsMCwwLDAsMTcuOTEsMjZDMjYsMjYsMzIuNTcsMjQuMjgsMzMsMjIuMDlWMTYuMzRDMzIu''@;'; put 'put ''NTcsMTguNTMsMjYsMjAuMjgsMTcuOTEsMjAuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDFsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDFBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNy45MSwx''@;'; put 'put ''OC4yOGM4LjA4LDAsMTQuNjYtMS43NCwxNS4wOS0zLjk0di0xLjZhNy40Nyw3LjQ3LDAsMCwxLTcuMzgtLjgsNDguMyw0OC4zLDAsMCwxLTcuNzEuNTlBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTFWOWEzOS40LDM5LjQsMCwwLDAsMTEuNjYsMS41MSw1MSw1MSwwLDAsMCw2LS4zNCw3LjQ2LDcu''@;'; put 'put ''NDYsMCwwLDEtLjU5LTcuNjVjLTEuODctLjE4LTMuNzMtLjI2LTUuMjgtLjI2LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYu''@;'; put 'put ''MjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwxOC4yOFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1Ljg2IiByPSI1Ii8+XG4nKSxlLkNsclNoYXBlQ2x1c3Rlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEu''@;'; put 'put ''MzYsOEgyNy41djJIMzFWMzBIMjcuNXYySDMzVjkuNjdBMS42NSwxLjY1LDAsMCwwLDMxLjM2LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTBIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3''@;'; put 'put ''VjMySDguNVYzMEg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz48ZWxsaXBzZSBjeD0iMTguMDEiIGN5PSIyNS45OSIgcng9IjEuOCIgcnk9IjEuNzkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjQuMzIsNEgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlY1LjY4QTEuNjgsMS42OCwwLDAsMCwyNC4zMiw0Wk0yNCwzMEgxMlY2SDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjEzLjUiIHk9IjkuMjEiIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxl''@;'; put 'put ''cnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDkuODlsLjM5LS42OEgxMy41djEuNmg1LjE3QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNCwzMEgxMlY2aDkuMjlsMS4xNS0ySDExLjY4QTEuNjgsMS42OCwwLDAsMCwxMCw1LjY4VjMySDI2VjE1LjRIMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9p''@;'; put 'put ''bnRzPSIzMSAxNS40IDMxIDMwIDI3LjUgMzAgMjcuNSAzMiAzMyAzMiAzMyAxNS40IDMxIDE1LjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVy''@;'; put 'put ''dCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTBIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3VjMySDguNVYzMEg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0i''@;'; put 'put ''MjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzLjUiIHk9IjkuMjEiIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMTAuNDlWMzBIMTJWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxMi4zNEE3LjUzLDcuNTMsMCww''@;'; put 'put ''LDEsMjQsMTAuNDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwxMy40M1YzMEgyNy41djJIMzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTMxLjM2LDhIMjcuNVYzMkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42''@;'; put 'put ''NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzIsNEgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlY1LjY4QTEuNjgsMS42OCwwLDAsMCwyNC4zMiw0Wk0xOCwyNy43OUEx''@;'; put 'put ''Ljc5LDEuNzksMCwxLDEsMTkuODEsMjYsMS44LDEuOCwwLDAsMSwxOCwyNy43OVpNMjMsMTAuNkgxM1Y5SDIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAs''@;'; put 'put ''MCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy41IiB5PSIxNS40IiB3aWR0aD0iNS41IiBoZWlnaHQ9IjE2LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjMxLTNIMTNWOWg2LjU2bDIuODktNUgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwx''@;'; put 'put ''My41NlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywx''@;'; put 'put ''MUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMyw5LjY3VjMySDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDks''@;'; put 'put ''Ny40OSwwLDAsMSwuMjgtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2Wk0xOCwyNy43OUExLjc5LDEuNzksMCwxLDEsMTkuODEsMjYsMS44LDEuOCwwLDAsMSwxOCwyNy43OVpNMjMsMTAuNkgxM1Y5SDIzWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjUtLjQ0VjMySDMzVjEyLjg3QTcuNDcsNy40NywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJT''@;'; put 'put ''aGFwZUFwcGxpY2F0aW9ucz0oMCxhLmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjggOCA0IDggNCAxMCAxMCAxMCAxMCA0IDggNCA4IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDgg''@;'; put 'put ''MTUgOCAxNSAxMCAyMSAxMCAyMSA0IDE5IDQgMTkgOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgNCAzMCA4IDI2IDggMjYgMTAgMzIgMTAgMzIgNCAzMCA0IiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2lu''@;'; put 'put ''dHM9IjE5IDE5IDE1IDE5IDE1IDIxIDIxIDIxIDIxIDE1IDE5IDE1IDE5IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAzMCAxNSAzMCAxNSAzMiAyMSAzMiAyMSAyNiAxOSAyNiAxOSAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIg''@;'; put 'put ''MzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggOCA0IDggNCAxMCAxMCAxMCAxMCA0IDggNCA4IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAy''@;'; put 'put ''MSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDE5IDI2IDE5IDI2IDIxIDMyIDIxIDMyIDE1IDMwIDE1IDMwIDE5IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBvbHlnb24gcG9pbnRzPSIzMCAzMCAyNiAzMCAyNiAzMiAzMiAzMiAzMiAyNiAzMCAyNiAzMCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDE5IDE1IDE5IDE1IDIxIDIxIDIxIDIxIDE1IDE5IDE1IDE5IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIz''@;'; put 'put ''MCAxNSAzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAy''@;'; put 'put ''NiA4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAzMCAxNSAzMCAxNSAzMiAyMSAzMiAyMSAyNiAxOSAyNiAxOSAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOEgxNXYyaDRMMTksOS44OSwyMSw2LjVWNEgxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4x''@;'; put 'put ''NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIg''@;'; put 'put ''d2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTgiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTctLWFsZXJ0ZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMGg0TDE5LDkuODksMjEsNi41VjRIMTVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC05LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjE1IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTktLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxu''@;'; put 'put ''ICAgICAgICAnKSxlLkNsclNoYXBlQnVpbGRpbmc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2VjUuMTJBLjEyLjEyLDAsMCwx''@;'; put 'put ''LDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFk''@;'; put 'put ''Z2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC05LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0i''@;'; put 'put ''MjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNi0tYmFk''@;'; put 'put ''Z2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE3LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIyMyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzFIMjN2MkgzM1YxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMC0tYmFkZ2VkIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIxLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSI4IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIyMyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjI3IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwzMUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMlY4LjI0bDItMy40MUEyLjEyLDIuMTIsMCwwLDAsMTkuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNI''@;'; put 'put ''MjJWMTUuMzhhMy42OCwzLjY4LDAsMCwxLTItLjc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE3LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMxIDE1LjQgMzEgMzEgMjMgMzEgMjMgMzMgMzMgMzMgMzMgMTUu''@;'; put 'put ''NCAzMSAxNS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTgtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xOS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjJWMzNIMzNWMTBB''@;'; put 'put ''MiwyLDAsMCwwLDMxLDhaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm0wLTVIMjRWMTNoMlptNCwxMEgyOFYyM2gyWm0wLTVIMjhWMThoMlptMC01SDI4VjEzaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcu''@;'; put 'put ''ODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVptMC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlpt''@;'; put 'put ''MC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJW''@;'; put 'put ''MzNIOVYzMGg2djNoNVYxNC42NGEzLjY3LDMuNjcsMCwwLDEtMS00Ljc2bDEtMS42NVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVptMC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNo''@;'; put 'put ''MlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNGwtLjIz''@;'; put 'put ''LDBWMzNIMzNWMTUuNFpNMjYsMjVIMjRWMjNoMlptMC01SDI0VjE4aDJabTQsNUgyOFYyM2gyWm0wLTVIMjhWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIx''@;'; put 'put ''LjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''YWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0g5VjMwaDZ2M2g1VjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE3Ljg4LDNaTTksMjVIN1YyM0g5Wm0wLTVIN1YxOEg5Wm0wLTVIN1YxM0g5Wm0wLTVIN1Y4SDlabTQsMTVI''@;'; put 'put ''MTFWMjNoMlptMC01SDExVjE4aDJabTAtNUgxMVYxM2gyWm0wLTVIMTFWOGgyWm00LDE1SDE1VjIzaDJabTAtNUgxNVYxOGgyWm0wLTVIMTVWMTNoMlptMC01SDE1VjhoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzAsMTMuNVYxNUgyOFYxMy4yMkE3LjUsNy41LDAsMCwxLDIyLjc4LDhIMjJWMzNIMzNWMTIuODdBNy40Nyw3LjQ3LDAsMCwxLDMwLDEzLjVaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm0wLTVIMjRWMTNoMlptNCwxMEgyOFYyM2gyWm0wLTVIMjhWMThoMloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsOEgyM3YyaDhWMzFIMjN2MkgzM1YxMEEyLDIsMCwwLDAsMzEsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAs''@;'; put 'put ''MCw0LDUuMTJWMzNIMjJWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTkuODgsM1pNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCwwLDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxMyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjE2IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTMiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTciLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE4Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMjAiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUNQVT0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMjMuMDgsMjMuMDdoLTExdjEuNUgyMy44M2EuNzUuNzUsMCwwLDAsLjc1LS43NVYxMS4zM2gtMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4LjE1YS44Ljgs''@;'; put 'put ''MCwxLDAsMC0xLjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4x''@;'; put 'put ''LDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAs''@;'; put 'put ''MSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40Wk0yOCwyNy45YS4xLjEsMCwwLDEtLjEuMUg4LjFhLjEuMSwwLDAsMS0uMS0uMVY4LjFBLjEuMSwwLDAsMSw4''@;'; put 'put ''LjEsOEgyNy45YS4xLjEsMCwwLDEsLjEuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTEuMzNoLTEuNVYyMy4wN2gtMTFaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWMTMuNWE3LjQ5LDcuNDksMCwwLDEtMi0uMjhWMjcuOWEuMS4xLDAsMCwxLS4x''@;'; put 'put ''LjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44''@;'; put 'put ''LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjgu''@;'; put 'put ''OCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5''@;'; put 'put ''PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWMTUuNEgyOFYyNy45YS4x''@;'; put 'put ''LjEsMCwwLDEtLjEuMUg4LjFhLjEuMSwwLDAsMS0uMS0uMVY4LjFBLjEuMSwwLDAsMSw4LjEsOGgxMmwxLjE1LTJIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEs''@;'; put 'put ''MCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSww''@;'; put 'put ''LDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4wNiwyNC41N0gy''@;'; put 'put ''My44M2EuNzUuNzUsMCwwLDAsLjc1LS43NVYxNS40aC0xLjV2Ny42N2gtMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjE1LjRIMjV2OC40MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTUuNGgtLjc3QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTkuMzVWMy44YS44LjgsMCwx''@;'; put 'put ''LDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4''@;'; put 'put ''LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMuNTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYxMy41YTcuNDYsNy40''@;'; put 'put ''NiwwLDAsMS01LTEuOTJWMjMuODFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjExaDEuNDJBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5''@;'; put 'put ''LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1''@;'; put 'put ''LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMTguMTVhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42''@;'; put 'put ''SDMwVjguMUEyLjEsMi4xLDAsMCwwLDI3LjksNkgyNi4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2''@;'; put 'put ''djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMw''@;'; put 'put ''SDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRaTTI1LDIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAnKSxl''@;'; put 'put ''LkNsclNoYXBlTWVtb3J5PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEyIiB3aWR0aD0iNCIgaGVp''@;'; put 'put ''Z2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjQiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDdINEEyLDIsMCwwLDAsMiw5djRINFY5SDMydjRo''@;'; put 'put ''MlY5QTIsMiwwLDAsMCwzMiw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwyN0gxOXYySDMyYTIsMiwwLDAsMCwyLTJWMTdIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3YTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMTYuNjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdWMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIMTZ2OGg0VjE0LjY0QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNCIgeT0iMTUuNCIgd2lkdGg9IjQiIGhlaWdodD0iNC42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRl''@;'; put 'put ''ZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsOUgxOS41NmwxLjE1LTJINEEyLDIsMCwwLDAsMiw5djRINFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwy''@;'; put 'put ''MS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEyIiB3aWR0''@;'; put 'put ''aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdWMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFk''@;'; put 'put ''Z2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJBNy40Niw3LjQ2LDAsMCwxLDI1LjUxLDEySDI0djhoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsOUgyMy4x''@;'; put 'put ''M2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINEEyLDIsMCwwLDAsMiw5djRINFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxM1Y5YTIsMiwwLDAsMC0yLTJINEEyLDIsMCwwLDAsMiw5djRINHY0SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NUgxOVYyOUgzMmEy''@;'; put 'put ''LDIsMCwwLDAsMi0yVjE3SDMyVjEzWk0xMiwyMEg4VjEyaDRabTgsMEgxNlYxMmg0Wm04LDBIMjRWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxN1YxNS4wN0gyOFYyMEgyNFYxNS4wN0gyMi4yM0EzLjY4''@;'; put 'put ''LDMuNjgsMCwwLDEsMjAsMTQuMzFWMjBIMTZWMTJoMi42MUEzLjY4LDMuNjgsMCwwLDEsMTksOS41NUwyMC41Miw3SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LjhsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LjhBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDI2Ljg1LjhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdWMTMuMjJhNy4zMyw3LjMzLDAsMCwxLTQsMFYyMEgyNFYxMmgxLjUxYTcu''@;'; put 'put ''NDgsNy40OCwwLDAsMS0yLjk0LTVINEEyLDIsMCwwLDAsMiw5djRINHY0SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NUgxOVYyOUgzMmEyLDIsMCwwLDAsMi0yVjE3Wk0xMiwyMEg4VjEyaDRabTgsMEgxNlYxMmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZURhdGFDbHVzdGVy''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41LDQuMDhDMjIuNzcsNC4wOCwxOSw1LjQsMTksNy45MVY5LjVhMTguNzUsMTguNzUsMCwwLDEsMiwuMlY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUtMS44NFMzMiw3LjI3LDMyLDcuOTFWMTguMjRjMCwuNTQtMS40NiwxLjQ0LTMuOSwx''@;'; put 'put ''LjczdjJjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVY3LjkxQzM0LDUuNCwzMC4yMyw0LjA4LDI2LjUsNC4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwxOC4yNFY3LjkxYzAtLjY1LDIuMDktMS44NCw1''@;'; put 'put ''LjUtMS44NFMxNSw3LjI3LDE1LDcuOTFWOS43YTE4Ljc1LDE4Ljc1LDAsMCwxLDItLjJWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJWMjBDNS40NiwxOS42OCw0LDE4Ljc4LDQsMTguMjRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMTUuMjNDMjYuNjUsMTIu''@;'; put 'put ''NzMsMjIuOTMsMTAuODUsMTgsMTAuODVabTYuNjUsNy42N2MtLjg1LDEtMy40MiwyLTYuNjUsMkExNC40OSwxNC40OSwwLDAsMSwxNCwyMHYxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYzLjEyYy0uODUsMS0zLjQyLDItNi42NSwyYTE0''@;'; put 'put ''LjQ5LDE0LjQ5LDAsMCwxLTQtLjUzdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djIuMjljMCwuOTUtMi42NSwyLjM4LTYuNjUsMi4zOHMtNi42NS0xLjQzLTYuNjUtMi4zOFYxNS4yM2MwLS45NSwyLjY1LTIuMzgsNi42NS0yLjM4czYu''@;'; put 'put ''NjUsMS40Myw2LjY1LDIuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwy''@;'; put 'put ''LS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFs''@;'; put 'put ''ZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC42NSwxOC41MmMtLjg1LDEtMy40MiwyLTYuNjUsMkExNC40OSwxNC40OSwwLDAsMSwxNCwyMHYxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYzLjEyYy0uODUsMS0zLjQyLDIt''@;'; put 'put ''Ni42NSwyYTE0LjQ5LDE0LjQ5LDAsMCwxLTQtLjUzdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djIuMjljMCwuOTUtMi42NSwyLjM4LTYuNjUsMi4zOHMtNi42NS0xLjQzLTYuNjUtMi4zOFYxNS4yM2MwLS45NSwyLjY1LTIuMzgsNi42''@;'; put 'put ''NS0yLjM4bC43NSwwYTMuNjksMy42OSwwLDAsMS0uMDgtMmwtLjY2LDBjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYxNS40aC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0LjhjLTEuNzUuNjMtMywxLjY4LTMsMy4xMlY5LjVsLjI1LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2Mi44NGMwLC41NC0xLjQ2LDEuNDQtMy45LDEuNzN2MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwxOC4yNFY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUtMS44NFMxNSw3LjI3LDE1LDcuOTFWOS43YTE4Ljc1LDE4Ljc1LDAsMCwxLDItLjJWNy45MWMwLTIuNTItMy43Ny0z''@;'; put 'put ''Ljg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJWMjBDNS40NiwxOS42OCw0LDE4Ljc4LDQsMTguMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1''@;'; put 'put ''LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEy''@;'; put 'put ''Ljc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEuNDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNy45MWMwLS4zMy41NS0uOCwxLjU0LTEuMTgsMC0uMjQsMC0uNDgsMC0uNzNhNy41Miw3LjUyLDAsMCwxLC4xNC0xLjQxQzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS41YTE4Ljc1LDE4Ljc1''@;'; put 'put ''LDAsMCwxLDIsLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnY1YzAsLjU0LTEuNDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzV2LTUu''@;'; put 'put ''OUE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcuOTFWOS40OGM1LjMuMjYsOSwyLjYsOSw1Ljc2djYuN2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVY3Ljkx''@;'; put 'put ''QzM0LDUuNCwzMC4yMyw0LjA4LDI2LjUsNC4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNyw5LjQ4VjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcs''@;'; put 'put ''MjEuNjcsNy45LDIyTDgsMjEuOTN2LTYuN0M4LDEyLjA4LDExLjcsOS43NCwxNyw5LjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIu''@;'; put 'put ''NSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwy''@;'; put 'put ''MS43MiwyMywxOCwyM2ExNi43NywxNi43NywwLDAsMS02LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNyw5LjQ4VjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyTDgsMjEuOTN2LTYuN0M4LDEyLjA4LDExLjcsOS43NCwxNyw5LjQ4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDEzLjU2YTMuNjgsMy42OCwwLDAsMS0uMzktMi43bC0uNjYsMGMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDgu''@;'; put 'put ''NjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAsMCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNh''@;'; put 'put ''MTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1h''@;'; put 'put ''bGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0xLjc1LjYzLTMsMS42OC0zLDMuMTJWOS40OGwuMjcsMFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwx''@;'; put 'put ''NS40SDI4djYuNTNsLjA1LjA2YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAs''@;'; put 'put ''MSwxOCwyOGExNi43NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjIzLDguNjMtMy4yM1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3''@;'; put 'put ''YzQuMjEsMCw3LjY1LTEuMTEsOC42My0zLjExVjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUy''@;'; put 'put ''LDAsMCwxLC4xNC0xLjRDMjAuNTUsNS4xOSwxOSw2LjMsMTksNy45MVY5LjQ4YTE1LjMzLDE1LjMzLDAsMCwxLDUsMUE3LjQ2LDcuNDYsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMCwxMy40OUE3LjQ3LDcuNDcsMCwwLDEsMjcuMzUsMTNhNCw0LDAsMCwxLC43LDIuMjN2Ni43bC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjEyLjMzQTcuNDYsNy40NiwwLDAsMSwzMCwxMy40OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjUuOTkiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVSZXNvdXJj''@;'; put 'put ''ZVBvb2w9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjY4LDE1LjRIMzEuNzNhMTQsMTQsMCwwLDEsLjIyLDEuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuMDksNC42MmwxLTEuNzZBMTYsMTYsMCwxLDAsMzQsMThhMTYsMTYsMCwwLDAtLjIzLTIuNjFaTTE4LDMyYTEz''@;'; put 'put ''LjkxLDEzLjkxLDAsMCwxLTguMTYtMi42NUwxOC40MywxOUgzMS45NUExNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywx''@;'; put 'put ''MUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1h''@;'; put 'put ''bGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNCwxOGExNCwxNCwwLDAsMSwyNy45NS0xSDE3LjQ5TDguMywyOC4wN0ExNCwxNCwwLDAsMSw0LDE4Wk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVM''@;'; put 'put ''MTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjIsMTMuNGExMy45MSwxMy45MSwwLDAsMSwuNzUsMy42SDE3LjQ5TDguMywyOC4wN0ExNCwxNCwwLDAs''@;'; put 'put ''MSwyMi42MSw0LjhhNy40Myw3LjQzLDAsMCwxLC41OC0xLjkyLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQzLDcuNDMsMCwwLDEsMzEuMiwxMy40Wk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3QTE2LDE2LDAsMSwwLDcsMjkuNkwxNy40''@;'; put 'put ''OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjU3LDMwLjlBMTYsMTYsMCwwLDAsMzMuOTUsMTlIMTguNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE1LjkxLDE1LjkxLDAsMCwwLS44NC00LjE4LDcuNDksNy40OSwwLDAsMS05LjkyLTkuOTRBMTYsMTYsMCwwLDAsNywyOS42TDE3LjQ5LDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1i''@;'; put 'put ''YWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjU3LDMwLjlBMTYsMTYsMCwwLDAs''@;'; put 'put ''MzMuOTUsMTlIMTguNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTUsMTdhMTYsMTYsMCwwLDAtLjE4LTEuNjFIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsNC4wNi03''@;'; put 'put ''QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVNoaWVsZENo''@;'; put 'put ''ZWNrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4yNSw3LjRhNDMuNzksNDMuNzksMCwwLDEtNi42Mi0yLjM1LDQ1LDQ1LDAsMCwxLTYuMDgtMy4yMUwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djgu''@;'; put 'put ''MzRjMCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVY3LjU5Wk0zMCwxNS45M2MwLDExLTEwLDE1LjYxLTEyLDE2LjQzLTItLjgyLTEyLTUuNDQtMTItMTYuNDNWOS4xNGE0Ny41NCw0Ny41NCwwLDAsMCw2LjE4''@;'; put 'put ''LTIuMjUsNDguMjMsNDguMjMsMCwwLDAsNS44Mi0zLDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODIsM0E0Ny41NCw0Ny41NCwwLDAsMCwzMCw5LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44OCwxNi44N2Ex''@;'; put 'put ''LDEsMCwwLDAtMS40MSwxLjQxbDYsNkwyNi40LDEzLjc3QTEsMSwwLDAsMCwyNSwxMi4zM2wtOS40Nyw5LjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4yNSw3LjRhNDMuNzksNDMuNzksMCwwLDEtNi42''@;'; put 'put ''Mi0yLjM1LDQ1LDQ1LDAsMCwxLTYuMDgtMy4yMUwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4w''@;'; put 'put ''NSwxMy42Ni0xOC40NVY3LjU5Wm0tNC41Nyw2LjY1TDE1LjUxLDI0LjksOS4xOSwxOC41N2ExLjQsMS40LDAsMCwxLDItMkwxNS41NCwyMSwyNC43MywxMmExLjQsMS40LDAsMSwxLDIsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksZS5D''@;'; put 'put ''bHJTaGFwZVNoaWVsZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40''@;'; put 'put ''TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQs''@;'; put 'put ''MCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAs''@;'; put 'put ''MTUuNHYuNTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItM2MxLC42NCwyLjIsMS4yNywzLjQzLDEuODlsMS0xLjc0YTQxLjEsNDEuMSwwLDAsMS0zLjg5''@;'; put 'put ''LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTUuNFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2''@;'; put 'put ''LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjV2Mi40M2MwLDExLTEwLDE1LjYxLTEyLDE2''@;'; put 'put ''LjQzLTItLjgyLTEyLTUuNDQtMTItMTYuNDNWOS4xNGE0Ny41NCw0Ny41NCwwLDAsMCw2LjE4LTIuMjUsNDguMjMsNDguMjMsMCwwLDAsNS44Mi0zLDQ2LjE5LDQ2LjE5LDAsMCwwLDQuNTEsMi40MmMwLS4xLDAtLjE5LDAtLjI5YTcuNDksNy40OSwwLDAsMSwuMjMtMS44Myw0MS42MSw0MS42''@;'; put 'put ''MSwwLDAsMS00LjE5LTIuMzNMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTgu''@;'; put 'put ''NDVWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIx''@;'; put 'put ''QTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIyLjQzLDRhNDEuMSw0MS4xLDAsMCwxLTMuODktMi4xOEwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRj''@;'; put 'put ''MCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2''@;'; put 'put ''Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTcuMjctOS4zMyw0MS42MSw0MS42MSwwLDAsMS00LjE5LTIuMzNMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUs''@;'; put 'put ''Ny40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlU2hpZWxkWD0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMu''@;'; put 'put ''NTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4''@;'; put 'put ''LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuODEsMTAuNzksMTgsMTUuNjFsLTQuODEt''@;'; put 'put ''NC44MWExLDEsMCwwLDAtMS40MSwxLjQxTDE2LjU5LDE3bC00LjgxLDQuODFhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOC40M2w0LjgxLDQuODFhMSwxLDAsMCwwLDEuNDEtMS40MUwxOS40MSwxN2w0LjgxLTQuODFhMSwxLDAsMCwwLTEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQu''@;'; put 'put ''NzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMjQuNTEsMjEuNTVhMS40LDEuNCwwLDAsMS0yLDJMMTgsMTlsLTQuNTMsNC41M2ExLjQzLDEuNDMsMCwwLDEtMiww''@;'; put 'put ''LDEuNCwxLjQsMCwwLDEsMC0yTDE2LDE3bC00LjUzLTQuNTNhMS40LDEuNCwwLDEsMSwyLTJMMTgsMTVsNC41My00LjUzYTEuNCwxLjQsMCwwLDEsMiwyTDIwLDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlSW1wb3J0''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMTVoMlYxMy42MWg3LjYxVjZIMjhWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFpNMTYsMTJIMTB2LS4zMkwxNS43LDZIMTZaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjk0LDI2LjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTksMjJsLTUuNjgtNS42OGExLDEsMCwwLDAtMS40MSwxLjQxTDE1LjIsMjFIM2ExLDEsMCwxLDAsMCwySDE1LjIzWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYzMEg4YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMCwxMy42MWg3LjYxVjZoMy42OGwxLjE1LTJIMTQuODdMOCwxMC44NlYxNWgyWm0wLTEuOTJMMTUuNyw2SDE2djZIMTBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4y''@;'; put 'put ''LDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40''@;'; put 'put ''OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFoNy42MVY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0Ljg3TDgsMTAuODZW''@;'; put 'put ''MTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2SDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTQuODdM''@;'; put 'put ''OCwxMC44NlYyMUgxNS4ybC0zLjI1LTMuMjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxOSwyMmwtNS42OCw1LjY4YTEsMSwwLDAsMS0xLjQxLTEuNDFMMTUuMjMsMjNIOHY3YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0Wk0xNiwxMkgxMHYtLjMyTDE1LjY5''@;'; put 'put ''LDZIMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMywyMWExLDEsMCwxLDAsMCwySDhWMjFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40NSw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIs''@;'; put 'put ''MCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0Ljg3TDgs''@;'; put 'put ''MTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNlpNMTYsMTJIMTB2LS4z''@;'; put 'put ''MkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUV4cG9ydD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiwxMy42MWg3LjYxVjZIMjR2OC4zOGgyVjZhMiwyLDAsMCwwLTItMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2''@;'; put 'put ''Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwz''@;'; put 'put ''LjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwt''@;'; put 'put ''My4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2aDcuNjhsMS4xNS0ySDEwLjg3TDQsMTAuODdW''@;'; put 'put ''MzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0ySDZabTAtMS45MkwxMS42OSw2SDEydjZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywx''@;'; put 'put ''MUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1h''@;'; put 'put ''bGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwxMi4zNGE3LjUzLDcuNTMsMCwwLDEtMi0xLjg1djMuODloMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDEwLjg3TDQsMTAuODdWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0ySDZabTAtMS45MkwxMS42OSw2SDEydjZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''NywyMmExLDEsMCwwLDEsMS0xaDhWNmEyLDIsMCwwLDAtMi0ySDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYtLjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMzIsMTYuMzVhMSwxLDAsMCwwLTEuNDEsMS40MUwzMS4xNiwyMUgyNnYyaDUuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM1LDIyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40NSw0SDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpN''@;'; put 'put ''MTIsMTJINnYtLjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMzIsMTYuMzVh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MUwzMS4xNiwyMUgyNnYyaDUuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM1LDIyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmEx''@;'; put 'put ''LDEsMCwwLDEsMS0xaDhWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDIyLjc4LDRIMTAuODdMNCwxMC44NlYzMGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJWMjNIMThBMSwxLDAsMCwxLDE3LDIyWk0xMiwxMkg2di0uMzJMMTEuNjksNkgxMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hh''@;'; put 'put ''cGVVcGxvYWRDbG91ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuMzEsMTNjMC0uMSwwLS4yMSwwLS4zMmExMC4yNiwxMC4yNiwwLDAsMC0xMC40NS0xMCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNzQsOS43NCwwLDAsMCwxLjYsMTguNCw5LjYyLDkuNjIsMCwwLDAsMTEu''@;'; put 'put ''MjUsMjhIMTVWMjZIMTEuMjVBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguMjYsOC4yNiwwLDAsMSw4LjQ1LDgsNy43NSw3Ljc1LDAsMCwxLDAsLjhsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyMXYyaDUuMzhh''@;'; put 'put ''OCw4LDAsMCwwLDMuOTMtMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDIxLjg1QTEsMSwwLDAsMCwyMywyMC4xNGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSww''@;'; put 'put ''LDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4yOCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUtNSw1YTEsMSwwLDAsMCwx''@;'; put 'put ''LjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwyLjU3LDIuNTdBMSwxLDAsMCwwLDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjYsMTgu''@;'; put 'put ''MzhBNy43MSw3LjcxLDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguODEsOC44MSwwLDAsMSwyLC4yNWwxLTEuOGExMC44LDEwLjgsMCwwLDAtMy4wNy0uNDUsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5Ljc0LDkuNzQsMCwwLDAsMS42LDE4''@;'; put 'put ''LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjYsNy42NiwwLDAsMSwzLjYsMTguMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjksMTUuNEgz''@;'; put 'put ''MC4yMUE2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4QTgsOCwwLDAsMCwzMi45LDE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAuMTRsLTUtNS01LDVhMSwxLDAsMCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIuNTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC45MiwxMy40NGE3LjEzLDcuMTMsMCwwLDEtMi42My0uMTRjMCwuMDgsMCwuMTUsMCwuMjNsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyMXYyaDUuMzhh''@;'; put 'put ''OCw4LDAsMCwwLDQuNTQtMTQuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjYsMTguMzhBNy43MSw3LjcxLDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQz''@;'; put 'put ''LDAsMCwxLDgtNS40LDguNzksOC43OSwwLDAsMSwyLjY4LjQyLDcuNDUsNy40NSwwLDAsMSwuNS0xLjk0LDEwLjc5LDEwLjc5LDAsMCwwLTMuMTgtLjQ4LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS43NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgx''@;'; put 'put ''NVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlRG93bmxvYWRDbG91ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuMzEsMTNjMC0uMSwwLS4yMSwwLS4zMmExMC4yNiwxMC4yNiwwLDAsMC0xMC40NS0x''@;'; put 'put ''MCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAs''@;'; put 'put ''MSwwLC44bC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2Ex''@;'; put 'put ''LDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTIyLjI4LDI2LjA3YTEsMSwwLDAsMC0uNzEuMjlMMTksMjguOTRWMTYuNjhhMSwxLDAsMSwwLTIsMFYyOC45NGwtMi41Ny0yLjU3QTEsMSwwLDAsMCwxMywyNy43OGw1LDUsNS01YTEsMSwwLDAsMC0uNzEtMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDctLjQ1LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS42NSw5LjY1LDAsMCwwLDEw''@;'; put 'put ''Ljg5LDI4YTMsMywwLDAsMSwwLTJBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNBOC40Myw4LjQzLDAsMCwxLDE5Ljg3LDQuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMyLjksMTUuNEgzMC4yMUE2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4QTgsOCwwLDAsMCwzMi45LDE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWEx''@;'; put 'put ''LDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS44Nyw0LjY5YTguNzksOC43OSwwLDAsMSwyLjY4LjQyLDcuNDUsNy40NSwwLDAsMSwuNS0xLjk0LDEw''@;'; put 'put ''Ljc5LDEwLjc5LDAsMCwwLTMuMTgtLjQ4LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS42NSw5LjY1LDAsMCwwLDEwLjg5LDI4YTMsMywwLDAsMSwwLTJBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNBOC40Myw4LjQzLDAsMCwxLDE5Ljg3LDQuNjlaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC45MiwxMy40NGE3LjEzLDcuMTMsMCwwLDEtMi42My0uMTRjMCwuMDgsMCwuMTUsMCwuMjNsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgy''@;'; put 'put ''NS4wOWEzLDMsMCwwLDEsMCwyaDEuMjhhOCw4LDAsMCwwLDQuNTQtMTQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVQbHVnaW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjgxLDE2SDI5VjguODNhMiwyLDAsMCwwLTItMkgyMUE1LjE0LDUuMTQsMCwwLDAs''@;'; put 'put ''MTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41''@;'; put 'put ''MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZabTIuNDEsN0EzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAs''@;'; put 'put ''MCwxLDE5LDcuMTlWOC44M2g4VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjl2LS42SDI3VjE4aDIu''@;'; put 'put ''ODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQs''@;'; put 'put ''My4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2guNjZMMjEsNi41OUE1LjEyLDUuMTIsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gy''@;'; put 'put ''djguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVYxMy40M2E3LjQ1LDcuNDUsMCwwLDEtMi0uNTVWMThoMi44MUEzLjEzLDMuMTMsMCwwLDEsMzMsMjAuNjksMywzLDAsMCwxLDMyLjIyLDIzLDMsMywwLDAsMSwzMCwyNEgy''@;'; put 'put ''N3Y3LjgzSDRWMjVINWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCw0LjgxLDE1SDRWOC44M2g5VjdhMywzLDAsMCwxLDEtMi4yMkEzLDMsMCwwLDEsMTYuMzEsNCwzLjEzLDMuMTMsMCwwLDEsMTksNy4xOVY4LjgzaDQuMDZhNy40NCw3LjQ0LDAsMCwxLS41MS0ySDIxQTUuMTQs''@;'; put 'put ''NS4xNCwwLDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUs''@;'; put 'put ''MCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIsMiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwy''@;'; put 'put ''VjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjgxLDE2SDI5di0uNkgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMSw2LjU5QTUuMTIsNS4xMiwwLDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYx''@;'; put 'put ''N0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVYxMy40M2E3LjUsNy41LDAsMCwxLTYuNDUtNi41OUgyMUE1LjE0LDUu''@;'; put 'put ''MTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAs''@;'; put 'put ''MCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlRmxvcHB5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy4zNiw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjUs''@;'; put 'put ''MzBIMTFWMjJIMjVabTUsMEgyN1YyMmEyLDIsMCwwLDAtMi0ySDExYTIsMiwwLDAsMC0yLDJ2OEg2VjZoNHY2YTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkgxMlY2SDI2LjUxTDMwLDkuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41aDBWMzBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTEuNjhsLS40My0uM0gxMlY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDZBMiwyLDAsMCww''@;'; put 'put ''LDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTI1LDMwSDExVjIySDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjRWMzBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAt''@;'; put 'put ''MiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwyaDcuMzVhMy41NCwzLjU0LDAsMCwxLS43Ny0ySDEyVjZoOS4yOWwxLjE1LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjM2LDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAs''@;'; put 'put ''MCwwLDItMlY4Ljc4Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaTTI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjZBMiwyLDAsMCwxLDI0LDE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Niw3LjQ2LDAsMCwxLTQtMS4xOEEyLDIsMCwwLDEsMjQsMTRIMTJhMiwyLDAsMCwxLTItMlY2aDJ2NkgyNS41NGE3LjQ1LDcuNDUsMCwwLDEtMi43Ni04SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTI2LDMwSDEwVjIxLjVBMS41LDEuNSwwLDAsMSwxMS41LDIwaDEzQTEuNSwxLjUsMCwwLDEsMjYsMjEuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRI''@;'; put 'put ''MTJhMiwyLDAsMCwxLTItMlY2aDJ2Nmg2LjU4QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIyLjQ1LDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAs''@;'; put 'put ''MCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVDb21wdXRlcj0oMCxhLmNsckljb25TVkcp''@;'; put 'put ''KCc8cG9seWdvbiBwb2ludHM9IjkuNiAyMi44OCA5LjYgMTAuNiAyNC40IDEwLjYgMjUuOTggOSA4IDkgOCAyMi44OCA5LjYgMjIuODgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDMwVjIzaDJWNi41QTEu''@;'; put 'put ''NSwxLjUsMCwwLDAsMzAuNSw1SDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCww''@;'; put 'put ''LDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41''@;'; put 'put ''LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTkuNiwyMi44OFYxMC42aDkuMTRBMy42NCwzLjY0LDAsMCwxLDE5LDkuODlM''@;'; put 'put ''MTkuNTYsOUg4VjIyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDdIMjAuNzFsMS4xNS0ySDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMzAiIHk9IjE1LjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjcuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMSwyNXYzLjRBMi42LDIuNiwwLDAsMCwzLjYsMzFIMzIuMzRhMi42LDIuNiwwLDAsMCwyLjYtMi42VjI1Wm0zMiwzLjRhLjYuNiwwLDAsMS0uNi42SDMu''@;'; put 'put ''NTZhLjYuNiwwLDAsMS0uNi0uNlYyNi41M2g5Ljk1YTEuNjQsMS42NCwwLDAsMCwxLjUsMWg3LjEzYTEuNjQsMS42NCwwLDAsMCwxLjUtMUgzM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjA3LTFINS41QTEuNSwxLjUsMCwwLDAsNCw2LjVWMjNINlY3SDIyLjU3QTcuNTIsNy41MiwwLDAsMSwyMi41LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjIzaDJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4xMyw5SDhWMjIuODhIOS42VjEw''@;'; put 'put ''LjZIMjQuMDhBNy40OSw3LjQ5LDAsMCwxLDIzLjEzLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODEsMjZjLS4zNS45LS45NCwxLjUtMS42MSwxLjVIMTMuNzRjLS42OCwwLTEuMjYtLjYtMS42MS0xLjVIMXYxLjc1QTIuNDUsMi40NSwwLDAsMCwzLjYsMzBIMzIu''@;'; put 'put ''NEEyLjQ1LDIuNDUsMCwwLDAsMzUsMjcuNzVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNywxMEgyOVYyNGgzVjcuNTdBMS41NCwxLjU0LDAsMCwwLDMwLjUsNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1Yy''@;'; put 'put ''NEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0xLjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMy''@;'; put 'put ''LjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjkiIHk9IjE1LjQiIHdpZHRoPSIzIiBoZWlnaHQ9IjguNiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMTlMMTksOS44OSwyMS4yOSw2SDUuNUExLjU0LDEuNTQsMCwwLDAsNCw3LjU3VjI0SDdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODEsMjZjLS4zNS45LS45NCwxLjUtMS42MSwxLjVIMTMuNzRjLS42OCwwLTEuMjYtLjYtMS42MS0xLjVIMXYxLjc1QTIuNDUsMi40''@;'; put 'put ''NSwwLDAsMCwzLjYsMzBIMzIuNEEyLjQ1LDIuNDUsMCwwLDAsMzUsMjcuNzVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMjMuNjZBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNkg1''@;'; put 'put ''LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMmE3LjE0LDcuMTQsMCwwLDEtMywuMlYyNGgzWiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyks''@;'; put 'put ''ZS5DbHJTaGFwZURpc3BsYXk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjUsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWNC41QTEuNSwxLjUsMCwwLDAsMzIuNSwzWk0zMiwyNUg0VjVIMzJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgOC43NiAyOC4xMyA4Ljc2IDI5Ljk0IDcuMTYgNi4xIDcuMTYgNi4xIDIzIDcuNyAyMyA3LjcgOC43NiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjku''@;'; put 'put ''NUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4y''@;'; put 'put ''NmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45''@;'; put 'put ''Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjI1SDRWNUgyMS44N0wyMywzSDMuNUExLjUsMS41LDAs''@;'; put 'put ''MCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcuNyAy''@;'; put 'put ''MyA3LjcgOC43NiAxOS43IDguNzYgMjAuNjIgNy4xNiA2LjEgNy4xNiA2LjEgMjMgNy43IDIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEs''@;'; put 'put ''MTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi4xLDIzSDcuN1Y4''@;'; put 'put ''Ljc2SDIzYTcuNDQsNy40NCwwLDAsMS0uNDMtMS42SDYuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjI1SDRWNUgyMi41N2E3LjQ1LDcuNDUsMCwwLDEsLjU1LTJI''@;'; put 'put ''My41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCww''@;'; put 'put ''LDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMyLjUsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWNC41QTEuNSwxLjUsMCwwLDAsMzIuNSwzWk0zMSwyMS44M0g1VjdIMzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAs''@;'; put 'put ''MCwyNiwzMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxdjYuNDNINVY3SDIwLjcxTDIzLDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAs''@;'; put 'put ''MCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjE1LjM4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIz''@;'; put 'put ''LDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAsMS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5Ljk0YTEsMSwwLDEsMCwwLDJIMjYuMDZhLjkyLjkyLDAsMCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzdjguNDFINVY3SDIyLjU3YTcuMjksNy4yOSwwLDAsMSwuNTUtNEgzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAs''@;'; put 'put ''MCwwLDM0LDI1LjVWMTIuMzRBNy40NCw3LjQ0LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVRlcm1pbmFsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0Ey''@;'; put 'put ''LDIsMCwwLDAsMzIsNVpNNCw3SDMyVjkuMkg0Wk00LDI5VjEwLjhIMzJWMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyMyIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMTUuNjggMTMuNzkgMTguOCA3IDIxLjkxIDcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyMyIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQu''@;'; put 'put ''MTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40''@;'; put 'put ''SDMyVjI5SDRWMTAuOEgxOC42OEEzLjY2LDMuNjYsMCwwLDEsMTksOS44OWwuNC0uNjlINFY3SDIwLjcxbDEuMTUtMkg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNyAyNC4xMSAxNi42IDE5LjcgMTYuNiAxNy44OSA3IDEzLjQ4IDcgMTUuNjggMTMuNzkgMTguOCA3IDIxLjkxIDcgMjQuMTEiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYyOUg0VjEwLjhIMjQuMjRhNy41MSw3LjUxLDAsMCwxLTEtMS42SDRWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDRBMiwyLDAsMCwwLDIs''@;'; put 'put ''N1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIs''@;'; put 'put ''MiwwLDAsMCwzMiw1Wk02LjgsMTUuODFWMTMuMTdsMTAsNC41OXYyLjA4bC0xMCw0LjU5VjIxLjc4bDYuNTEtM1pNMjMuNCwyNS40SDE3VjIzaDYuNFpNNCw5LjJWN0gzMlY5LjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0z''@;'; put 'put ''VjEzLjE3bDEwLDQuNTlabTYuNiw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNI''@;'; put 'put ''MzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02Ljc4LTQuM0g0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwx''@;'; put 'put ''My41Wk0xNi44LDE5LjgzbC0xMCw0LjU5VjIxLjc4bDYuNTEtMy02LjUxLTNWMTMuMTdsMTAsNC41OVptNi42LDUuNTdIMTdWMjNoNi40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUNvZGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0x''@;'; put 'put ''LjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMC4yMSwxNi43OGwtNi41My00LjQ1QTEsMSwwLDEsMCwyMi41NSwxNGw1LjMyLDMuNjMtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCwwLTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCw5LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwzLjQ0LTEzLjgxQS45LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEEx''@;'; put 'put ''LDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC41NiwxMS42MiwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45Ljks''@;'; put 'put ''MCwwLDAsLjg3LS42OEwxOS43MywxNC40YTMuNTksMy41OSwwLDAsMS0xLjE2LTIuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yMSwxNi43OGwtMi0xLjM4SDI0LjY0''@;'; put 'put ''bDMuMjQsMi4yMS01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMu''@;'; put 'put ''NzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwzLjYzLTUuMzIsMy42M2ExLDEsMCww''@;'; put 'put ''LDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAsMC0xLjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljk0LDkuODNhLjkuOSwwLDAsMC0xLjA5LjY2TDE1LjQxLDI0''@;'; put 'put ''LjI5YS45LjksMCwwLDAsLjY2LDEuMDlsLjIyLDBhLjkuOSwwLDAsMCwuODctLjY4bDMuNDQtMTMuODFBLjkuOSwwLDAsMCwxOS45NCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQXBwbGljYXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iNSIgeT0i''@;'; put 'put ''NyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCw2SDMydjQuMkg0Wk00LDMwVjExLjhIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCww''@;'; put 'put ''LDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFptMCw2LjJINFY2SDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTMiIHk9IjciIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVCYXR0ZXJ5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC41OSwxMS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5LDEwLjU5''@;'; put 'put ''YTEsMSwwLDAsMCwxLjc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LjEyLDRIMjNWMy41OEExLjU4LDEuNTgsMCwwLDAsMjEuNDIsMkgxNC41OEExLjU4LDEu''@;'; put 'put ''NTgsMCwwLDAsMTMsMy41OFY0SDEwLjg4QTEuODgsMS44OCwwLDAsMCw5LDUuODhWMzIuMTJBMS44OCwxLjg4LDAsMCwwLDEwLjg4LDM0SDI1LjEyQTEuODgsMS44OCwwLDAsMCwyNywzMi4xMlY1Ljg4QTEuODgsMS44OCwwLDAsMCwyNS4xMiw0Wk0yNSwzMkgxMVY2aDRWNGg2VjZoNFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0xLjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjksMTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0zLjUzLTcuMDgsNi4zOCwxLjA2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5''@;'; put 'put ''LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMTUuNFYzMkgxMVY2aDRWNGg2VjZoLjI4''@;'; put 'put ''bDEuNjQtMi44NUExLjU3LDEuNTcsMCwwLDAsMjEuNDIsMkgxNC41OEExLjU4LDEuNTgsMCwwLDAsMTMsMy41OFY0SDEwLjg4QTEuODgsMS44OCwwLDAsMCw5LDUuODhWMzIuMTJBMS44OCwxLjg4LDAsMCwwLDEwLjg4LDM0SDI1LjEyQTEuODgsMS44OCwwLDAsMCwyNywzMi4xMlYxNS40WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEuNzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMuNTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMTEuNThWMzJIMTFWNmg0VjRoNlY2SDIyLjVBNy40Nyw3LjQ3LDAsMCwxLDIzLDMuMzgsMS41NywxLjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThW''@;'; put 'put ''NEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTIuODdBNy41LDcuNSwwLDAsMSwyNSwxMS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0VjIuNjJBLjYuNiwwLDAsMCwyMS40MiwySDE0LjU4YS42LjYsMCwwLDAtLjU4LjYyVjRIMTBBMS4wOSwxLjA5LDAsMCwwLDksNS4wN3YyOEExLDEsMCwwLDAsMTAsMzRIMjZhMSwxLDAsMCwwLDEtLjk0di0y''@;'; put 'put ''OEExLjA5LDEuMDksMCwwLDAsMjYsNFpNMjAuMjYsMjUuNDRhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybDQuODMsOC4zN0wxNi45LDE4LjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY2LDMuNjYsMCwwLDEsMjAuNTUsMTVsMi43Niw0Ljc5TDE2LjksMTguN2wzLjM2LDYuNzNhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdM''@;'; put 'put ''MTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybC4wOS4xNUEzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwyMi40NSw0SDIyVjIuNjJBLjYuNiwwLDAsMCwyMS40MiwySDE0LjU4YS42LjYsMCwwLDAtLjU4LjYyVjRIMTBBMS4wOSwxLjA5LDAsMCwwLDksNS4wN3Yy''@;'; put 'put ''OEExLDEsMCwwLDAsMTAsMzRIMjZhMSwxLDAsMCwwLDEtLjk0VjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgyMlYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDks''@;'; put 'put ''MS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxMi44N0E3LjUsNy41LDAsMCwxLDIyLjUsNlpNMjAuMjYsMjUuNDRhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4y''@;'; put 'put ''bDQuODMsOC4zN0wxNi45LDE4LjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZU1vYmlsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEgxMUEyLDIsMCwwLDAsOSw2VjMwYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJIMjVhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyNSw0Wk0xMSw2SDI1VjI0SDExWm0wLDI0VjI2SDI1djRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyNyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsNEgxMUEyLDIsMCwwLDAsOSw2VjMwYTIsMiwwLDAsMCwyLDJIMjVhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyNSw0Wk0xOSwzMEgxN1Yy''@;'; put 'put ''OGgyWm0tOC00VjZIMjVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlVGFibGV0PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9IjE3IiB5PSIyOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMkg2QTIsMiwwLDAsMCw0LDRWMzJhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDMwLDJabTAsMlYyNi4zOEg2VjRaTTYsMzJWMjhIMzB2NFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEyLDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwzMCwyWk0xOSwzMkgxN1YzMGgyWk02LDI4VjRIMzBWMjhaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlTmV0d29ya0dsb2JlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuNzUsMmExNCwxNCwwLDAsMC0xNCwxNGMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0LDAsMSwwLDE3Ljc1LDJabTAsMmExMiwxMiwwLDAsMSw4LjQ0LDMuNDhjMCwuMzMsMCwuNjYs''@;'; put 'put ''MCwxQTE4LjUxLDE4LjUxLDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0uMTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjkyLDAsMCwxLDE3Ljc1LDRabS0zLDUuODdBMTcsMTcsMCwwLDEsMjUuOTIsMTBhMTYu''@;'; put 'put ''OSwxNi45LDAsMCwxLTMuMTEsNywyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQuOTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzdabS00LTMuNmMwLC4yMS4wNi40My4xLjY0LjA5LjQ0LjIxLjg3LjMzLDEuM2EyLjI4LDIuMjgs''@;'; put 'put ''MCwwLDAtMS4xLDIuMjVBMTguMzIsMTguMzIsMCwwLDAsNS45LDE0LjIyLDEyLDEyLDAsMCwxLDEwLjc2LDYuMjdabTAsMTUuNzFBMi4zNCwyLjM0LDAsMCwwLDkuMiwyMy43NGwtLjY0LDBBMTEuOTQsMTEuOTQsMCwwLDEsNS44LDE2LjkybC4xMS0uMTlhMTYuOSwxNi45LDAsMCwxLDQuODEt''@;'; put 'put ''NC44OSwyLjMxLDIuMzEsMCwwLDAsMi4yOC42MywxNy41MywxNy41MywwLDAsMCw1LjM1LDUuNjVjLjQxLjI3LjgzLjUyLDEuMjUuNzZBMi4zMiwyLjMyLDAsMCwwLDE5Ljc4LDIwYTE2Ljk0LDE2Ljk0LDAsMCwxLTYuMiwzLjExQTIuMzQsMi4zNCwwLDAsMCwxMC43NiwyMlptNyw2YTExLjky''@;'; put 'put ''LDExLjkyLDAsMCwxLTUuODEtMS41MWwuMjgtLjA2YTIuMzQsMi4zNCwwLDAsMCwxLjU3LTEuNzksMTguNDMsMTguNDMsMCwwLDAsNy0zLjUsMi4yOSwyLjI5LDAsMCwwLDMtLjYyLDE3LjQxLDE3LjQxLDAsMCwwLDQuMzIuNTZsLjUzLDBBMTIsMTIsMCwwLDEsMTcuNzUsMjhabTYuNTEtOC45''@;'; put 'put ''YTIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC40LDE4LjQsMCwwLDAsMy4zOS03LjM3cS43NS4zNSwxLjQ4Ljc4YTEyLDEyLDAsMCwxLC40Miw4LjJBMTYsMTYsMCwwLDEsMjQuMjcsMTkuMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzMsMTUuNGgtMmMw''@;'; put 'put ''LC4yLDAsLjQsMCwuNjFhMTIsMTIsMCwwLDEtLjUzLDMuNTIsMTYsMTYsMCwwLDEtNS0uNDEsMi4zMywyLjMzLDAsMCwwLS4zMy0xLjE5LDE4Ljg3LDE4Ljg3LDAsMCwwLDEuNjItMi41MkgyMy44M2ExNy4yOSwxNy4yOSwwLDAsMS0xLDEuNTQsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4z''@;'; put 'put ''NS0uMi0uNy0uNC0xLS42M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3QTE3LjA4LDE3LjA4LDAsMCwxLDE5LjU2LDlsLjg3LTEuNTFhMTguNTksMTguNTksMCwwLDAtNi4zOSwxLDIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBjLS4xMi0uNDIt''@;'; put 'put ''LjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS44OCwxMS44OCwwLDAsMSwyMiw0Ljc5TDIzLDNBMTQsMTQsMCwwLDAsMy43NSwxNmMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0LDAsMCwwLDMxLjc2LDE2QzMxLjc2LDE1LjgsMzEuNzQsMTUuNiwzMS43MywxNS40''@;'; put 'put ''Wm0tMjEtOS4xM2MwLC4yMS4wNi40My4xLjY0LjA5LjQ0LjIxLjg3LjMzLDEuM2EyLjI4LDIuMjgsMCwwLDAtMS4xLDIuMjVBMTguMzIsMTguMzIsMCwwLDAsNS45LDE0LjIyLDEyLDEyLDAsMCwxLDEwLjc2LDYuMjdabTAsMTUuNzFBMi4zNCwyLjM0LDAsMCwwLDkuMiwyMy43NGwtLjY0LDBB''@;'; put 'put ''MTEuOTQsMTEuOTQsMCwwLDEsNS44LDE2LjkybC4xMS0uMTlhMTYuOSwxNi45LDAsMCwxLDQuODEtNC44OSwyLjMxLDIuMzEsMCwwLDAsMi4yOC42MywxNy41MywxNy41MywwLDAsMCw1LjM1LDUuNjVjLjQxLjI3LjgzLjUyLDEuMjUuNzZBMi4zMiwyLjMyLDAsMCwwLDE5Ljc4LDIwYTE2Ljk0''@;'; put 'put ''LDE2Ljk0LDAsMCwxLTYuMiwzLjExQTIuMzQsMi4zNCwwLDAsMCwxMC43NiwyMlptNyw2YTExLjkyLDExLjkyLDAsMCwxLTUuODEtMS41MWwuMjgtLjA2YTIuMzQsMi4zNCwwLDAsMCwxLjU3LTEuNzksMTguNDMsMTguNDMsMCwwLDAsNy0zLjUsMi4yOSwyLjI5LDAsMCwwLDMtLjYyLDE3LjQx''@;'; put 'put ''LDE3LjQxLDAsMCwwLDQuMzIuNTZsLjUzLDBBMTIsMTIsMCwwLDEsMTcuNzUsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjUsMTMuMzVh''@;'; put 'put ''Ny41NCw3LjU0LDAsMCwxLTEuNS4xNWwtLjUxLDBhMTEuOTEsMTEuOTEsMCwwLDEtLjI1LDYsMTYsMTYsMCwwLDEtNS0uNDEsMi4zMywyLjMzLDAsMCwwLS4zMy0xLjE5LDE4LjU5LDE4LjU5LDAsMCwwLDIuNzgtNS4xOCw3LjQ5LDcuNDksMCwwLDEtMS4zMS0uODIsMTcsMTcsMCwwLDEtMi42''@;'; put 'put ''MSw1LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43NywxNywxNywwLDAsMSw4LjUzLS42Miw3LjQzLDcuNDMsMCwwLDEtLjU2LTEuNTlBMTguNTYsMTguNTYsMCwwLDAsMTQsOC41''@;'; put 'put ''M2EyLjMzLDIuMzMsMCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuOTIsMTEuOTIsMCwwLDEsMjIuNTcsNWE3LjQ1LDcuNDUsMCwwLDEsLjUzLTJBMTQsMTQsMCwwLDAsMy43NSwxNmMwLC40NSwwLC44OS4wNywxLjMz''@;'; put 'put ''bDAsMGgwYTE0LDE0LDAsMSwwLDI3LjY4LTRaTTEwLjc2LDYuMjdjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQs''@;'; put 'put ''Mi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIu''@;'; put 'put ''MzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41''@;'; put 'put ''LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcyLDkuODdhMi4yNSwyLjI1LDAsMCwxLS40NywxLjc3LDE2LDE2LDAsMCwwLDQuOTMsNS4yM2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4yOCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE2''@;'; put 'put ''LjksMTYuOSwwLDAsMCwzLjExLTdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuNzUsMmExNCwxNCwwLDAsMC0xNCwxNGMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0''@;'; put 'put ''LDE0LDAsMSwwLDE3Ljc1LDJaTTI4LjEsMjEuMDlhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwu''@;'; put 'put ''NjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMx''@;'; put 'put ''LDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwx''@;'; put 'put ''LDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjUxLDE4LjUxLDAsMCwxLDEyLjExLS4wN2MwLS4zMiwwLS42NSwwLTFoMGExMiwxMiwwLDAsMSwyLjYyLDMuODVoMHEtLjczLS40My0xLjQ4LS43OGExOC40''@;'; put 'put ''LDE4LjQsMCwwLDEtMy4zOSw3LjM3LDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAsMS0uNjEsMS41M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgs''@;'; put 'put ''MzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzMsMTUuNEgyNS41NmExOC44NywxOC44NywwLDAsMS0xLjYyLDIu''@;'; put 'put ''NTIsMi4zMywyLjMzLDAsMCwxLC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUzSDI4LjFhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAs''@;'; put 'put ''MS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcu''@;'; put 'put ''NTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQz''@;'; put 'put ''LS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjU5LDE4LjU5LDAsMCwxLDYuMzktMUwyMywzQTE0LDE0LDAsMCwwLDMu''@;'; put 'put ''NzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDAsMCwzMS43NiwxNkMzMS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTQuMjYsMTEuNjRhMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4LDIuMjgsMCwwLDEsMi41OC0uNTcsMTcuMjksMTcuMjksMCwwLDAsMS0xLjU0aC0xLjZBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTYsOWExNy4wOCwxNy4wOCwwLDAsMC00''@;'; put 'put ''Ljg0Ljg4LDIuMjUsMi4yNSwwLDAsMS0uNDcsMS43N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMu''@;'; put 'put ''NjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTUsNy40Niw3''@;'; put 'put ''LjQ2LDAsMCwxLTMuMjgtLjc2LDE4LjU5LDE4LjU5LDAsMCwxLTIuNzgsNS4xOCwyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwuNDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNIMjguMWExNy40MSwxNy40MSwwLDAsMS00LjMyLS41NiwyLjI5LDIuMjksMCwwLDEt''@;'; put 'put ''MywuNjIsMTguNDMsMTguNDMsMCwwLDEtNywzLjUsMi4zNCwyLjM0LDAsMCwxLTEuNTcsMS43OWwtLjI5LjA2YTExLjkzLDExLjkzLDAsMCwxLTMuMzktMi44bC42NiwwYTIuMzMsMi4zMywwLDAsMSw0LjM3LS41OEExNi45NCwxNi45NCwwLDAsMCwxOS43OCwyMGEyLjMyLDIuMzIsMCwwLDEt''@;'; put 'put ''LjE4LTEuMTdjLS40Mi0uMjQtLjg0LS40OS0xLjI1LS43NkExNy41MywxNy41MywwLDAsMSwxMywxMi40N2EyLjMxLDIuMzEsMCwwLDEtMi4yOC0uNjMsMjcuMzEsMjcuMzEsMCwwLDAtNSw0Ljc0YzAtLjIsMC0uMzksMC0uNTdhMTIsMTIsMCwwLDEsLjE0LTEuNzMsMTguNzUsMTguNzUsMCww''@;'; put 'put ''LDEsNC4yLTMuOCwyLjI4LDIuMjgsMCwwLDEsMS4xLTIuMjVjLS4xMi0uNDMtLjI0LS44Ni0uMzMtMS4zLDAtLjE0LDAtLjI5LS4xMS0uNjRhMTIsMTIsMCwwLDEsMS4zNy0uODdjLjEuNTkuMTQuOS4yMSwxLjIxcy4yLjg1LjMyLDEuMjdsLjI1LDBBMi4zMywyLjMzLDAsMCwxLDE0LDguNTNh''@;'; put 'put ''MTguNTYsMTguNTYsMCwwLDEsOC42NS0uODcsNy40NSw3LjQ1LDAsMCwxLC40MS00LjU5QTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUuMjNjLjM0LjIzLjY5LjQzLDEsLjYzYTIuMjgsMi4yOCwwLDAsMSwyLjU4LS41NywxNywxNywwLDAsMCwyLjYxLTUsNy41Miw3LjUy''@;'; put 'put ''LDAsMCwxLTIuMTYtMi42N0ExNywxNywwLDAsMCwxNC43Miw5Ljg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZU5ldHdvcmtTZXR0aW5ncz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuODUsMjcuNDRhMi4yOSwyLjI5LDAsMCwwLDEuNzQtMS42OGMuNTQtLjE0LDEuMDYtLjMy''@;'; put 'put ''LDEuNTktLjUxdi0xLjJhMi43NywyLjc3LDAsMCwxLC4wNi0uNTEsMTcuNDQsMTcuNDQsMCwwLDEtMS44Mi42MiwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0yLjg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEsNS00LjcyLDIuMjMsMi4yMywwLDAs''@;'; put 'put ''MCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNDcsNSwyLjc0LDIuNzQsMCwwLDEsLjIxLS4yNGwuOTUtLjkxYTE2LjksMTYuOSwwLDAsMS00LjM1LTQuNzksMi4yNywyLjI3LDAsMCwwLC4zNS0xLjJjMC0uMDcsMC0uMTQsMC0uMjJBMTcuNjksMTcuNjksMCwwLDEsMjUsMTFhMTcuNDks''@;'; put 'put ''MTcuNDksMCwwLDEtMS4xNSwzLjM0bC4xOSwwaDEuNTZhMTksMTksMCwwLDAsLjkxLTIuNzJjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTQsMTEuOTQsMCwwLDEsMSw0LjA5bDAsMEEyLjc3LDIuNzcsMCwwLDEsMzAsMTZhMi43MywyLjczLDAsMCwxLC42OC4xQTE0LDE0LDAsMSwwLDE2LjA4''@;'; put 'put ''LDMxYTIuNzIsMi43MiwwLDAsMSwwLTJBMTEuOTMsMTEuOTMsMCwwLDEsMTAuODUsMjcuNDRaTTE2Ljc2LDVhMTIsMTIsMCwwLDEsOC42MSwzLjY2YzAsLjI1LDAsLjUxLS4wOC43NmExOS4yMSwxOS4yMSwwLDAsMC0xMi4zNS4xMUEyLjI4LDIuMjgsMCwwLDAsMTEuNzQsOWExNywxNywwLDAs''@;'; put 'put ''MS0uNjEtMi41M0ExMS45MiwxMS45MiwwLDAsMSwxNi43Niw1Wk05LjY2LDcuMzZhMTguNzIsMTguNzIsMCwwLDAsLjQ5LDEuOTIsMi4yOCwyLjI4LDAsMCwwLTEuMDcsMS45M3MwLC4xLDAsLjE1QTE5LjQ1LDE5LjQ1LDAsMCwwLDUsMTQuNzksMTIsMTIsMCwwLDEsOS42Niw3LjM2WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMjEuMTlBMy44NCwzLjg0LDAsMSwwLDI4Ljg4LDI1LDMuODcsMy44NywwLDAsMCwyNSwyMS4xOVptMCw2LjA4QTIuMjQsMi4yNCwwLDEsMSwyNy4yOCwyNSwyLjI2LDIu''@;'; put 'put ''MjYsMCwwLDEsMjUsMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4xNywyNC4xNGExLjE0LDEuMTQsMCwwLDAtLjctMS4xbC0xLjU2LS40NnEtLjExLS4zMi0uMjYtLjYzbC43Mi0xLjMzYTEuMTQs''@;'; put 'put ''MS4xNCwwLDAsMC0uMjEtMS4zNGwtMS4zNC0xLjMyYTEuMTQsMS4xNCwwLDAsMC0xLjM0LS4ybC0xLjM0LjcxYTcuMjgsNy4yOCwwLDAsMC0uNjctLjI4TDI3LDE2LjcxYTEuMTQsMS4xNCwwLDAsMC0xLjA4LS43NkgyNGExLjE0LDEuMTQsMCwwLDAtMS4wOC44bC0uNDQsMS40M2E3LjMyLDcu''@;'; put 'put ''MzIsMCwwLDAtLjY4LjI4bC0xLjMyLS43YTEuMTQsMS4xNCwwLDAsMC0xLjMzLjE5bC0xLjM3LDEuMzFhMS4xNCwxLjE0LDAsMCwwLS4yMSwxLjM1bC43LDEuMjhxLS4xNi4zMi0uMjguNjVMMTYuNTgsMjNhMS4xMywxLjEzLDAsMCwwLS44MSwxLjA5djEuODdBMS4xNCwxLjE0LDAsMCwwLDE2''@;'; put 'put ''LjU5LDI3bDEuNDcuNDRxLjEyLjMyLjI4LjY0bC0uNzIsMS4zNWExLjE0LDEuMTQsMCwwLDAsLjIsMS4zNWwxLjM0LDEuMzJhMS4xNCwxLjE0LDAsMCwwLDEuMzQuMmwxLjM3LS43MnEuMzEuMTQuNjMuMjZsLjQ0LDEuNDdhMS4xNCwxLjE0LDAsMCwwLDEuMDkuOGgxLjlBMS4xNCwxLjE0LDAs''@;'; put 'put ''MCwwLDI3LDMzLjMxbC40NC0xLjQ3Yy4yMS0uMDcuNDItLjE2LjYyLS4yNWwxLjM4LjczYTEuMTQsMS4xNCwwLDAsMCwxLjMzLS4ybDEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAsLjIxLTEuMzVsLS43My0xLjM0cS4xNC0uMy4yNS0uNmwxLjUtLjQ0QTEuMTMsMS4xMywwLDAsMCwzNC4xNywy''@;'; put 'put ''NlptLTEuNiwxLjUtMiwuNTgtLjEyLjQyQTUuNTUsNS41NSwwLDAsMSwzMCwyNy43M2wtLjIxLjM4LDEsMS43OS0uODYuODQtMS44Mi0xLS4zNy4yYTUuNzgsNS43OCwwLDAsMS0xLjEyLjQ2bC0uNDIuMTItLjU5LDJIMjQuMzhsLS41OS0xLjk1LS40Mi0uMTJBNS44Niw1Ljg2LDAsMCwxLDIy''@;'; put 'put ''LjI0LDMwbC0uMzctLjItMS44MSwxLS44Ni0uODUsMS0xLjgyLS4yMi0uMzhhNS42LDUuNiwwLDAsMS0uNDktMS4xM2wtLjEzLS40MS0xLjk1LS41OFYyNC40MmwxLjk0LS41OC4xMi0uNDFhNS41Myw1LjUzLDAsMCwxLC40OS0xLjE0bC4yMi0uMzktMS0xLjczLjg3LS44NCwxLjc3Ljk0LjM4''@;'; put 'put ''LS4yMWE1LjgsNS44LDAsMCwxLDEuMTctLjQ5bC40MS0uMTIuNTktMS45MWgxLjIzbC41OCwxLjkuNDEuMTJhNS43OSw1Ljc5LDAsMCwxLDEuMTYuNDhsLjM4LjIxLDEuOC0uOTUuODYuODUtMSwxLjc3LjIxLjM4YTUuNTMsNS41MywwLDAsMSwuNDcsMS4xM2wuMTIuNDIsMS45My41N1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LDIzLjYzLDMyLDIzYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuOSwxNy44NmEuMzcuMzcsMCwwLDAtLjQ0LS4w''@;'; put 'put ''N2wtMS44NSwxYTcsNywwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFMMjAsMTcuOGEuMzcuMzcsMCwwLDAtLjQ0LjA3TDE4LDE5LjMxYS4zNy4zNywwLDAsMC0uMDcuNDRsMSwx''@;'; put 'put ''LjgyQTcsNywwLDAsMCwxOC4zNSwyM2wtMiwuNjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFBNyw3LDAsMCwwLDE5LDI4LjM3bC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0bDEuNDUsMS40NWEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2''@;'; put 'put ''LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OEE3LDcs''@;'; put 'put ''MCwwLDAsMzEuOTUsMjdsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjRBLjM3LjM3LDAsMCwwLDM0LDIzLjYzWm0tOC44Myw0LjcyQTMuMzMsMy4zMywwLDEsMSwyOC41MywyNSwzLjMzLDMuMzMsMCwwLDEsMjUuMTksMjguMzRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSwwLDAsMCwxLjc0LTEuNjgsMTkuNzEsMTkuNzEsMCwwLDAsMS44OS0uNlYyMy45NWEyLDIsMCwwLDEsLjA5LS41NSwxNy40MiwxNy40MiwwLDAsMS0yLjE3Ljc4LDIuMjgsMi4yOCwwLDAsMC00''@;'; put 'put ''LjI4LjYzbC0uNDUsMGgwYTExLjkzLDExLjkzLDAsMCwxLTIuODgtNy4yNywxNy43OSwxNy43OSwwLDAsMSw1LTQuNzIsMi4yMywyLjIzLDAsMCwwLDIuMjkuNTYsMTguNTIsMTguNTIsMCwwLDAsNC42NSw1LjA5LDEuOTMsMS45MywwLDAsMSwuMjMtLjMybC44OS0uODdhMTYuODksMTYuODks''@;'; put 'put ''MCwwLDEtNC40OS00Ljg5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4yYzAtLjA3LDAtLjE0LDAtLjIyQTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNSwxLjk0LDEuOTQsMCwwLDEsLjMxLS4wNWgxLjQ1YTE5LjA2LDE5LjA2LDAsMCwwLC45LTIuN2Mu''@;'; put 'put ''NDMuMTkuODQuNDEsMS4yNi42NGExMS45MywxMS45MywwLDAsMSwxLDQuNjNsMS0uNTFhMiwyLDAsMCwxLC45Mi0uMjNoLjA4QTE0LDE0LDAsMSwwLDE2LjQ0LDMxYTEuOTQsMS45NCwwLDAsMSwuMTItMS40NmwuMjgtLjUzaC0uMDdBMTEuOTEsMTEuOTEsMCwwLDEsMTAuODUsMjcuNDRaTTE2''@;'; put 'put ''Ljc2LDVhMTIsMTIsMCwwLDEsOC42MSwzLjY2YzAsLjI1LDAsLjUxLS4wOC43NmExOS4yMSwxOS4yMSwwLDAsMC0xMi4zNS4xMUEyLjI4LDIuMjgsMCwwLDAsMTEuNzQsOWExNywxNywwLDAsMS0uNjEtMi41M0ExMS45MiwxMS45MiwwLDAsMSwxNi43Niw1Wk05LjY2LDcuMzZhMTguNzIsMTgu''@;'; put 'put ''NzIsMCwwLDAsLjQ5LDEuOTIsMi4yOCwyLjI4LDAsMCwwLTEuMDcsMS45M3MwLC4xLDAsLjE1QTE5LjQ1LDE5LjQ1LDAsMCwwLDUsMTQuNzksMTIsMTIsMCwwLDEsOS42Niw3LjM2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgJyksZS5DbHJT''@;'; put 'put ''aGFwZU5ldHdvcmtTd2l0Y2g9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk0zMiwyN0g0VjE5LjA2TDcuMTMsOUgyOC44N0wzMiwxOS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIx''@;'; put 'put ''LjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMi4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3LjEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMi4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIg''@;'; put 'put ''d2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3LjEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMzLDE1LjRIMzAuODZMMzIsMTkuMDZWMjdINFYxOS4wNkw3LjEzLDlIMTkuNTZsMS4xNS0ySDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgz''@;'; put 'put ''MmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBo''@;'; put 'put ''ZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3LjExIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2LjIzIiB5PSIxOCIgd2lkdGg9IjIzLjY5IiBoZWlnaHQ9IjEuNCIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3bC0xLjY1LTUuMzJhNy40OSw3LjQ5LDAsMCwxLTIsLjMzTDMyLDE5LjA2VjI3SDRWMTkuMDZMNy4xMyw5aDE2YTcuNDUs''@;'; put 'put ''Ny40NSwwLDAsMS0uNTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMzMuOTEsMTguNDcsMzAuNzgsOC40MUEyLDIsMCwwLDAsMjguODcsN0g3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaTTgu''@;'; put 'put ''OTIsMjVINy4xMlYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBIMjIuMVYyMmgxLjhabTUsMEgyNy4xVjIyaDEuOFpNMzEsMTkuNEg1VjE4SDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMywxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIwLjcxLDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZhMiwyLDAsMCwwLS4wOS0uNTlaTTgu''@;'; put 'put ''OTIsMjVINy4xMlYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBIMjIuMVYyMmgxLjhabTUsMEgyNy4xVjIyaDEuOFpNMzEsMTkuNEg1VjE4SDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEzLjE1QTcuNDksNy40OSwwLDAsMSwyMi41Nyw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+''@;'; put 'put ''XG4gICAgICAgICcpLGUuQ2xyU2hhcGVSb3V0ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDE0Ljg3bDUuMTEtNS4xNGExLDEsMCwxLDAtMS40Mi0xLjQxTDE5LDExVjMuMzNhMSwxLDAsMCwwLTIsMFYxMUwxNC4zMSw4LjMyYTEsMSwwLDEsMC0xLjQyLDEuNDFaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWExLDEsMCwwLDAsMiwwVjI1bDIuNjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguODUsMTIuODlhMSwxLDAsMCwwLTEuNDEsMS40MkwzMC4xNSwxN0gyMi40NmExLDEsMCwxLDAsMCwyaDcuNjlsLTIuNzEsMi42OWExLDEsMCwwLDAsMS40MSwxLjQyTDM0''@;'; put 'put ''LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNS44NSwxOWg3LjY5YTEsMSwwLDAsMCwwLTJINS44NWwyLjcxLTIuNjlhMSwxLDAsMSwwLTEuNDEtMS40MkwyLDE4bDUuMTQsNS4xMWExLDEsMCwxLDAsMS40''@;'; put 'put ''MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQxTDE3LDI1djcuNjlhMSwxLDAsMCwwLDIsMFYyNWwyLjY5LDIuNzFhMSwxLDAsMCww''@;'; put 'put ''LDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwx''@;'; put 'put ''OGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjM4LDE1LjRIMjguNTRMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAs''@;'; put 'put ''Mmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0Ljg3bDEuMTUtMS4xNi0uMS0uMTVBMy42OCwz''@;'; put 'put ''LjY4LDAsMCwxLDE5LDEwVjMuMzNhMSwxLDAsMCwwLTIsMFYxMUwxNC4zMSw4LjMyYTEsMSwwLDEsMC0xLjQyLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwx''@;'; put 'put ''LjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40MUwxNywyNXY3LjY5YTEsMSwwLDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguODUsMTIuODlhMSwxLDAsMCwwLTEuNDEsMS40MkwzMC4xNSwxN0gyMi40NmExLDEsMCwxLDAsMCwyaDcuNjlsLTIuNzEsMi42OWExLDEs''@;'; put 'put ''MCwwLDAsMS40MSwxLjQyTDM0LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQx''@;'; put 'put ''LTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxLjY3YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDEuNjdaTTEzLjg2LDkuOTJhLjguOCwwLDAsMSwxLjEzLDBsMi4yMSwyLjE5''@;'; put 'put ''VjUuOTNhLjguOCwwLDAsMSwxLjYsMHY2LjE4TDIxLDkuOTJhLjguOCwwLDEsMSwxLjEzLDEuMTRMMTgsMTUuMTVsLTQuMTQtNC4xQS44LjgsMCwwLDEsMTMuODYsOS45MlpNMTAuMzIsMjEuNzRhLjguOCwwLDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQuMDlhLjguOCwwLDEsMSwxLjEyLDEu''@;'; put 'put ''MTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEuNkg4LjExbDIuMiwyLjE1QS44LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUsMjUuNDJhLjguOCwwLDEsMS0xLjEz''@;'; put 'put ''LTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAsMSwyMi4xNCwyNS40MVptNC42Ny0zLjY2YS44LjgsMCwxLDEtMS4xMi0xLjE0bDIuMi0yLjE1SDIxLjYzYS44LjgsMCwwLDEsMC0xLjZoNi4yN2wtMi4yLTIuMTRhLjguOCwwLDEsMSwxLjEyLTEuMTRMMzEsMTcuNjdaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgyLDE1LjM5SDI4LjY4TDMxLDE3LjY3bC00LjE5LDQuMDlhLjguOCwwLDEsMS0xLjEyLTEuMTRsMi4yLTIuMTVIMjEuNjNhLjguOCwwLDAsMSwwLTEuNmg2LjI3bC0xLjUtMS40N0gy''@;'; put 'put ''Mi4yM2EzLjY4LDMuNjgsMCwwLDEtMy0xLjUxTDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMSwxLDE1LDkuOTJsMi4yMSwyLjE5VjUuOTNhLjguOCwwLDAsMSwxLjYsMHY0LjQ5QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5bDQuMjItNy4zMUExNiwxNiwwLDEsMCwzNCwxNy42NywxNiwxNiww''@;'; put 'put ''LDAsMCwzMy44MiwxNS4zOVptLTIzLjUsNi4zNWEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAsMS42SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42''@;'; put 'put ''N2EuOC44LDAsMCwxLTEuMTMsMEwxOC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAsMCwxLDIyLjE0LDI1LjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoi''@;'; put 'put ''ICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjIyLDEyLjc2QTcuNDksNy40OSwwLDAsMSwyMy4zMiwyLjZhMTYsMTYsMCwxLDAsOS45LDEwLjE3Wk0xMy44Niw5''@;'; put 'put ''LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMCwxLDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44LjgsMCwwLDEtMS4xMywwTDUsMTcu''@;'; put 'put ''NjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEwLjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjkuNGEuOC44LDAsMCwxLTEuNiww''@;'; put 'put ''VjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44LDAsMSwxLTEuMTItMS4xNGwyLjItMi4xNUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjdsLTIuMi0yLjE0YS44LjgsMCwx''@;'; put 'put ''LDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVZNPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMSw1SDI1VjhoMlY1YTIsMiwwLDAsMC0yLTJIMTFBMiwyLDAsMCwwLDksNXY2Ljg1aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxN3YyaDh2NmgyVjEyaDNWMjZIMjJWMTdhMiwyLDAsMCwwLTItMkg2YTIsMiwwLDAsMC0yLDJWMzFhMiwyLDAsMCwwLDIsMkgyMGEyLDIsMCwwLDAsMi0yVjI4aDhhMiwyLDAsMCwwLDItMlYxMkEyLDIsMCww''@;'; put 'put ''LDAsMzAsMTBaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEsNUgyMS44N0wyMywzSDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNS4wMSIgeT0iMTUuNCIgd2lkdGg9IjEuOTkiIGhlaWdodD0iMi42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS40VjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTUuNFpNNiwzMVYxN0gy''@;'; put 'put ''MHY5SDE2VjIwSDE0djZhMiwyLDAsMCwwLDIsMmg0djNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMHYyaDEuNTdBMy42NywzLjY3LDAsMCwxLDE5LDEwWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEu''@;'; put 'put ''MTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEsNUgyMi41N2E3LjQ1LDcuNDUsMCwwLDEsLjU1LTJI''@;'; put 'put ''MTFBMiwyLDAsMCwwLDksNXY2Ljg1aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWgwVjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDEyaDh2NmgyVjEyLjg3QTcuNTIsNy41MiwwLDAsMSwyMy42NiwxMEgxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZIMjdWNWEy''@;'; put 'put ''LDIsMCwwLDAtMi0ySDExQTIsMiwwLDAsMCw5LDV2OC40aDQuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDE3LjE5YTIsMiwwLDAsMC0yLDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIy''@;'; put 'put ''VjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZoMi43MkwyMywzSDExQTIsMiwwLDAsMCw5LDV2OC40aDQuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjE5LDEwYTIsMiwwLDAsMC0yLDJ2MS40SDE5QTMuNjgsMy42OCwwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjMuMjEsMTUuNEEzLjU1LDMuNTUsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgx''@;'; put 'put ''LjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZIMjIuOUE3LjQ1LDcuNDUsMCwwLDEsMjMuMTMsM0gxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjMuNjYsMTBIMTcuMTlhMiwyLDAsMCwwLTIsMnYxLjRIMjBBMy42LDMuNiwwLDAsMSwyMy42LDE3djhIMjJWMTdhMiwyLDAsMCwwLTItMkg2YTIsMiwwLDAsMC0yLDJWMzFhMiwyLDAsMCwwLDIsMkgyMGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjI5LjZIMTcuMTlhMy42LDMuNiwwLDAsMS0zLjYtMy42VjIwaDEuNnY2YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVWTVdBcHA9KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHln''@;'; put 'put ''b24gcG9pbnRzPSIyOCAyMiAzMCAyMiAzMCAzMCAyMiAzMCAyMiAyOCAyMCAyOCAyMCAzMiAzMiAzMiAzMiAyMCAyOCAyMCAyOCAyMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0IDMwIDYgMzAg''@;'; put 'put ''NiAyMiA4IDIyIDggMjAgNCAyMCA0IDMyIDE2IDMyIDE2IDI4IDE0IDI4IDE0IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxNCA2IDE0IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0''@;'; put 'put ''IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwIDQgMjAgOCAyMiA4IDIyIDYgMzAgNiAzMCAxNCAyOCAxNCAyOCAxNiAzMiAxNiAzMiA0IDIwIDQiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxMSIg''@;'; put 'put ''d2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAg''@;'; put 'put ''MjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAx''@;'; put 'put ''NiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMTQgNiAxNCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2''@;'; put 'put ''IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIx''@;'; put 'put ''OSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2bDAtLjFWMTdo''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMi40NSA0IDIwIDQgMjAgOCAyMC4xNCA4IDIyLjQ1IDQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjgiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjAuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyOCAyMiAzMCAyMiAzMCAzMCAyMiAzMCAyMiAyOCAyMCAyOCAyMCAzMiAzMiAzMiAzMiAyMCAyOCAyMCAyOCAyMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE0IDYgMTQgNiA2IDE0IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOSIgd2lkdGg9IjYiIGhl''@;'; put 'put ''aWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNmguNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjBWOGgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDEzLjVWMTRIMjh2Mmg0VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDExLjU4YTcuNTMsNy41MywwLDAsMS0u''@;'; put 'put ''NTgtLjU4SDE5djZoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEwLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVDZXJ0aWZpY2F0ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEwyMC40MSwyOEg0VjhIMzJs''@;'; put 'put ''MCw4LjU2YTguNDEsOC40MSwwLDAsMSwyLDEuODFWOEEyLDIsMCwwLDAsMzIsNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTIiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTYiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMi''@;'; put 'put ''IHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4y''@;'; put 'put ''NiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwyNy40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTYiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdp''@;'; put 'put ''ZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42''@;'; put 'put ''Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwyNy40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDEzLjU2QTMuNjYsMy42NiwwLDAsMSwxOC41NywxMkg3djEuNkgxOS4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2MS4xNmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxdi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNNCwyOFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEwyMC40MSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC03LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTIiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI3IiB5PSIyMyIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwz''@;'; put 'put ''LjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwyNy40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnYzLjM0YTguNDEsOC40MSwwLDAsMSwyLDEuODF2LTZBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2Vk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMi43OGE3LjQ5LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTks''@;'; put 'put ''MzBINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjE4LjM3YTguMzQsOC4zNCwwLDAsMC0xMy40OSw5Ljc5bC0uOTMsMS4xNFpNNywxMnYxLjZIMjRWMTJabTAsNS42SDE4VjE2SDdabTAsN0gxN1YyM0g3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYu''@;'; put 'put ''MzQsMCwwLDAsMzMuODMsMjMuNTlabS0xMC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjU5YTYu''@;'; put 'put ''MzcsNi4zNywwLDEsMC0xMC43Nyw0LjU5bC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3QTYuMzQsNi4zNCwwLDAsMCwzMy44MywyMy41OVptLTEwLjc0LDBhNC4zNyw0LjM3LDAsMSwxLDQuMzcsNC4z''@;'; put 'put ''MUE0LjM1LDQuMzUsMCwwLDEsMjMuMSwyMy41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgyOS4yNWE4LjM2LDguMzYsMCwwLDEsNC43NSwzdi0zWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4wNywxMy42SDdWMTJIMTguNTdBMy42NywzLjY3LDAsMCwxLDE5LDkuODlMMjEuMjksNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgx''@;'; put 'put ''OWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQsMCwwLDEsMjUuNjYsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTkuMDcsMTMuNlpNMTcsMjQuNkg3VjIzSDE3Wm0xLTdIN1YxNkgxOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYs''@;'; put 'put ''NC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0QTguMzQsOC4zNCwwLDAsMSwzNCwxOC4zN3YtNkE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTcsMjQu''@;'; put 'put ''Nkg3VjIzSDE3Wm0xLTdIN1YxNkgxOFptNi00SDdWMTJIMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQXJjaGl2ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMzJIN1YyMkg1VjMyYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyMkgyOVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDI0YTEsMSwwLDAsMCwxLDFoNmExLDEsMCwwLDAsMC0ySDE1QTEsMSwwLDAsMCwxNCwyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTE0LDE4SDZWMTRoNGEzLDMsMCwwLDEtLjY4LTEuODdzMC0uMDksMC0uMTNINS41QTEuNSwxLjUsMCwwLDAsNCwxMy41VjIwSDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzAuNSwxMkgyNi42NnMwLC4wOSwwLC4xM0EzLDMsMCwwLDEsMjYsMTRoNHY0SDIybC0yLDJIMzJWMTMuNUExLjUsMS41LDAsMCwwLDMwLjUsMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxOS4x''@;'; put 'put ''OGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDExLjQxbC00LDMuOTVWM2ExLDEsMCwxLDAtMiwwdjEyLjRsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDEs''@;'; put 'put ''MjAuNiwxOCwyMmwtMS40MS0xLjRMMTYsMjBINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBIMjBaTTIyLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMCwxLDAtMmg2QTEsMSwwLDAsMSwyMiwyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyNi42NnMwLC4wOSwwLC4xM2EzLDMsMCwwLDEtLjg4LDIuMTJMMjIsMThIMzJWMTMuNUExLjUsMS41LDAsMCwwLDMwLjUsMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTEwLjIsMTQuMjVhMywzLDAsMCwxLS44OC0yLjEyczAtLjA5LDAtLjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYxOEgxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02''@;'; put 'put ''LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVVbmFyY2hpdmU9KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyNGExLDEsMCwwLDAsMSwxaDZh''@;'; put 'put ''MSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxOEg2VjE0aDlWMTJINS41QTEuNSwxLjUsMCwwLDAsNCwxMy41VjIwSDE1Ljc4QTMsMywwLDAsMSwx''@;'; put 'put ''NSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2Mmg5djRIMjFhMywzLDAsMCwxLS43OCwySDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43OCwxMS42MSw4LjEzQTEsMSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjFhMywzLDAsMCwxLTIuMjItMUg1VjMyYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyMEgyMC4yMUEzLDMsMCwwLDEsMTgsMjFabTQsM2ExLDEsMCwwLDEtMSwxSDE1YTEsMSww''@;'; put 'put ''LDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDEySDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYxOEgxNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyMXY2SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMyw5LjU1LDE3LDUuNlYxOGExLDEs''@;'; put 'put ''MCwxLDAsMiwwVjUuNmw0LDMuOTVhMSwxLDAsMSwwLDEuNDEtMS40MkwxOCwxLjc4LDExLjYxLDguMTNBMSwxLDAsMCwwLDEzLDkuNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQ29ubmVjdD0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMzQsMTdIMjguMjNBNi4yNSw2LjI1LDAsMCwwLDIyLDEySDE0LjE1YTYuMjUsNi4yNSwwLDAsMC02LjIxLDVIMnYySDcuOTNhNi4yMiw2LjIyLDAsMCwwLDYuMjIsNUgyMmE2LjIyLDYuMjIsMCwwLDAsNi4yMi01SDM0Wk0xNy4wOCwyMkgxNC4xNWE0LjE3LDQuMTcs''@;'; put 'put ''MCwwLDEtNC4zMS00LDQuMTcsNC4xNywwLDAsMSw0LjMxLTRoMi45NFpNMjIsMjJIMTlWMTRoM2E0LjE3LDQuMTcsMCwwLDEsNC4zMSw0QTQuMTcsNC4xNywwLDAsMSwyMiwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTE3LDEySDE0LjE1YTYuMjUsNi4yNSwwLDAsMC02LjIxLDVIMnYySDcuOTNhNi4yMiw2LjIyLDAsMCwwLDYuMjIsNUgxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMjMsMTdBNi4yNSw2LjI1LDAs''@;'; put 'put ''MCwwLDIyLDEySDE5VjI0aDNhNi4yMiw2LjIyLDAsMCwwLDYuMjItNUgzNFYxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVEaXNjb25uZWN0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4xNyw2QTYuMjEs''@;'; put 'put ''Ni4yMSwwLDAsMCw2LDExSDIuMTN2Mkg2YTYuMjMsNi4yMywwLDAsMCw2LjIxLDVIMTdWNlpNMTUuMSwxNkgxMi4xN2E0LjIsNC4yLDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00SDE1LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MiwyM0gzMC4xNGE2LjI1LDYuMjUsMCwwLDAtNi4yMS01SDE5djJIMTRhMSwxLDAsMSwwLDAsMmg1djRIMTRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDV2Mmg0Ljk0YTYuMjMsNi4yMywwLDAsMCw2LjIyLTVoMy43NlptLTEwLDVIMjFW''@;'; put 'put ''MjBoMi45NGE0LjE3LDQuMTcsMCwwLDEsNC4zMSw0QTQuMTcsNC4xNywwLDAsMSwyMy45NCwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLDZhNi4yMSw2LjIxLDAsMCwwLTYuMjEsNUgydjJINS44M0E2''@;'; put 'put ''LjIzLDYuMjMsMCwwLDAsMTIsMThIMTdWNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzksMjNIMzAuMTRhNi4yNSw2LjI1LDAsMCwwLTYuMjEtNUgxOXYySDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEs''@;'; put 'put ''MWg1djRIMTRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDV2Mmg0Ljk0YTYuMjMsNi4yMywwLDAsMCw2LjIyLTVoMy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVMaW5rPSgwLGEuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0xNy42LDI0LjMybC0yLjQ2LDIuNDRhNCw0LDAsMCwxLTUuNjIsMCwzLjkyLDMuOTIsMCwwLDEsMC01LjU1bDQuNjktNC42NWE0LDQsMCwwLDEsNS42MiwwLDMuODYsMy44NiwwLDAsMSwxLDEuNzFBMiwyLDAsMCwwLDIxLjEsMThsMS4yOS0xLjI4YTUuODksNS44OSwwLDAsMC0x''@;'; put 'put ''LjE1LTEuNjIsNiw2LDAsMCwwLTguNDQsMEw4LjEsMTkuNzlhNS45MSw1LjkxLDAsMCwwLDAsOC4zOSw2LDYsMCwwLDAsOC40NCwwbDMuNjUtMy42MmMtLjE3LDAtLjMzLDAtLjUsMEE4LDgsMCwwLDEsMTcuNiwyNC4zMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjYxLDcuODJhNiw2LDAsMCwwLTguNDQsMGwtMy42NSwzLjYyYy4xNywwLC4zMywwLC40OSwwaDBhOCw4LDAsMCwxLDIuMS4yOGwyLjQ2LTIuNDRhNCw0LDAsMCwxLDUuNjIsMCwzLjkyLDMuOTIsMCwwLDEsMCw1LjU1bC00LjY5LDQu''@;'; put 'put ''NjVhNCw0LDAsMCwxLTUuNjIsMCwzLjg2LDMuODYsMCwwLDEtMS0xLjcxLDIsMiwwLDAsMC0uMjguMjNsLTEuMjksMS4yOGE1Ljg5LDUuODksMCwwLDAsMS4xNSwxLjYyLDYsNiwwLDAsMCw4LjQ0LDBsNC42OS00LjY1YTUuOTIsNS45MiwwLDAsMCwwLTguMzlaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVVubGluaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSw1LDMuNTksNi40MWw5LDlMOC4xLDE5Ljc5YTUuOTEsNS45MSwwLDAsMCwwLDguMzksNiw2LDAsMCwwLDguNDQsMEwyMSwyMy43OGw4''@;'; put 'put ''LjYzLDguNjNMMzEsMzFaTTE1LjEzLDI2Ljc2YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAtNS41NUwxNCwxNi43OWw1LjU4LDUuNThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS41Myw5''@;'; put 'put ''LjIyYTQsNCwwLDAsMSw1LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC43OSw0Ljc2TDIzLjc4LDIxbDQuNzktNC43NmE1LjkyLDUuOTIsMCwwLDAsMC04LjM5LDYsNiwwLDAsMC04LjQ0LDBsLTQuNzYsNC43NEwxNi43OCwxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQ2xvdWROZXR3b3JrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC43MSwxNS4xOHYtMUExMS4yOCwxMS4yOCwwLDAsMCwxOS41NiwyLjgzaC0uMTFhMTEuMjgsMTEuMjgsMCwwLDAtMTEsOC45Myw3LjQ3LDcuNDcs''@;'; put 'put ''MCwwLDAsMCwxNC45NEgyOS4xM2E1Ljg2LDUuODYsMCwwLDAsMS41OC0xMS41MlpNMjkuMTMsMjQuN0g4LjQ2YTUuNDcsNS40NywwLDEsMSwwLTEwLjk0aDEuNjlsLjExLS44N2E5LjI3LDkuMjcsMCwwLDEsMTguNDUsMS4zdjEuMjhjMCwuMDksMCwuMTgsMCwuMjdsLS4wNywxLjE1Ljk0LjEx''@;'; put 'put ''YTMuODYsMy44NiwwLDAsMS0uNDMsNy43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjU4LDMxLjE4SDE4Ljg1di0yLjRoLTJ2Mi40SDYuMDhhMSwxLDAsMCwwLDAsMmgyMy41YTEsMSwwLDAsMCwwLTJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUNsb3VkU2NhbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYuMzIsMTEuMTFINy44NEw4LDEwLjI0QTcuMTksNy4xOSwwLDAsMSwxNS4wNyw0aC4wN2E3LjE1''@;'; put 'put ''LDcuMTUsMCwwLDEsNC43MSwxLjgzLDExLjEsMTEuMSwwLDAsMSwzLjA5LjY0QTkuMTgsOS4xOCwwLDAsMCwxNS4xNiwyaC0uMDlBOS4yLDkuMiwwLDAsMCw2LjEzLDkuMTEsNi4xNSw2LjE1LDAsMCwwLDIuMzMsMTkuOTUsOC4wOSw4LjA5LDAsMCwxLDMsMTcuNzFhNC4xMiw0LjEyLDAsMCwx''@;'; put 'put ''LS44MS0yLjQ0QTQuMTYsNC4xNiwwLDAsMSw2LjMyLDExLjExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuNCwxNi45MWgxLjUyTDEyLDE2YTcuMTksNy4xOSwwLDAsMSw3LjEyLTYuMjVoLjA3YTcuMTcs''@;'; put 'put ''Ny4xNywwLDAsMSw1LjcsMi45MiwxMS4wNSwxMS4wNSwwLDAsMSwyLjcyLjc3LDkuMiw5LjIsMCwwLDAtOC40LTUuNjloLS4wOWE5LjIsOS4yLDAsMCwwLTguOTQsNy4xMiw2LjE1LDYuMTUsMCwwLDAtMy42NCwxMSw4LjExLDguMTEsMCwwLDEsLjc5LTIsNC4xNCw0LjE0LDAsMCwxLDMtN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjQyLDI0LjQ3di0uNjJhOS4xOCw5LjE4LDAsMCwwLTE4LjEzLTIuMTZBNi4xNiw2LjE2LDAsMCwwLDE0LjQ4LDM0SDMxYTQuODgsNC44OCwwLDAsMCwxLjQ2LTku''@;'; put 'put ''NTNaTTMxLDMySDE0LjQ4YTQuMTYsNC4xNiwwLDEsMSwwLTguMzJIMTZsLjExLS44N2E3LjE5LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjIxLDcuMjEsMCwwLDEsNy4xMiw3LjI1djFjMCwuMDcsMCwuMTMsMCwuMmwtLjA3LDEuMTEuOTQuMTFBMi44OCwyLjg4LDAsMCwxLDMxLDMyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVDbG91ZFRyYWZmaWM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjU0LDIwLjgyYS44OC44OCwwLDAsMC0uODgtLjg4SDIwLjc1bDEuMS0xLjFBLjg4Ljg4LDAs''@;'; put 'put ''MCwwLDIwLjYsMTcuNmwtMy4yMSwzLjIyTDIwLjYsMjRhLjg4Ljg4LDAsMSwwLDEuMjUtMS4yNEwyMC43NiwyMS43aDQuOUEuODguODgsMCwwLDAsMjYuNTQsMjAuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yOS4yNywyMS43YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMjEsMjBoLS4wNmEuODUuODUsMCwwLDAtLjg1Ljg4Ljkx''@;'; put 'put ''LjkxLDAsMCwwLC45MS44OC44OC44OCwwLDEsMCwwLTEuNzZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41OSwxMWEuODguODgsMCwwLDAtMS4yNSwxLjI0bDEuMSwxLjFIMjcuNTNhLjg4Ljg4LDAsMSww''@;'; put 'put ''LDAsMS43Nmg0LjlsLTEuMDksMS4wOWEuODguODgsMCwwLDAsMS4yNSwxLjI0bDMuMjEtMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjUsMTUuMDdhLjg4Ljg4LDAsMSwwLDAtMS43NmgtLjU4YS44''@;'; put 'put ''OC44OCwwLDEsMCwwLDEuNzZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS45LDE0LjI3YS44NS44NSwwLDAsMC0uODUtLjg4SDIxYS44OC44OCwwLDEsMCwwLDEuNzZBLjkxLjkxLDAsMCwwLDIxLjksMTQu''@;'; put 'put ''MjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4zNiwyMy42NWMwLC4xMywwLC4yNiwwLC4zOWEzLjc3LDMuNzcsMCwwLDEtMy42MiwzLjg5SDcuMjhhNS4zMiw1LjMyLDAsMCwxLTUuMTMtNS40OEE1LjMy''@;'; put 'put ''LDUuMzIsMCwwLDEsNy4yOCwxN0g4LjkxTDksMTYuMTJhOC45Miw4LjkyLDAsMCwxLDguNjItOGguMDhhOC40OSw4LjQ5LDAsMCwxLDYuNTYsMy4yOWgyLjM3YTEwLjU1LDEwLjU1LDAsMCwwLTguOTEtNS4yNWgtLjExQTEwLjgyLDEwLjgyLDAsMCwwLDcuMjIsMTVhNy4yOCw3LjI4LDAsMCww''@;'; put 'put ''LTcsNy40Myw3LjI3LDcuMjcsMCwwLDAsNy4wOCw3LjQzSDI2Ljc3QTUuNzIsNS43MiwwLDAsMCwzMi4zNSwyNGEzLjc3LDMuNzcsMCwwLDAsMC0uMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZURlcGxveT0o''@;'; put 'put ''MCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDJIMjIuMWExLDEsMCwwLDAsMCwyaDguNTNsLTguODIsOWExLDEsMCwxLDAsMS40MywxLjRMMzIsNS40NlYxMy45YTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAs''@;'; put 'put ''MzMsMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTEuNTQsMTAuNzNsLTksNS4xN2ExLDEsMCwwLDAtLjUuODd2MTFhMSwxLDAsMCwwLC41Ljg3bDksNS4xNWExLDEsMCwwLDAsMSwwbDktNS4xNWExLDEsMCww''@;'; put 'put ''LDAsLjUtLjg3di0xMWExLDEsMCwwLDAtLjUtLjg3bC05LTUuMTdBMSwxLDAsMCwwLDExLjU0LDEwLjczWk0xMSwzMS4wOGwtNy00VjE4LjQ0bDcsNFpNMTIsMjEsNC44MSwxNi44NywxMiwxMi43OGw3LjIxLDQuMTJabTgsNi4wOS03LDRWMjIuNDRsNy00WiIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDJIMjIuMWExLDEsMCwwLDAsMCwyaDguNTNsLTguODIsOWExLDEsMCwxLDAsMS40MywxLjRMMzIsNS40NlYxMy45YTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsMzMsMloiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMi40NiwxMC43M2ExLDEsMCwwLDAtMSwwbC04LjY4LDVMMTIsMjFsOS4xOS01LjI2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTIs''@;'; put 'put ''MjcuNzNhMSwxLDAsMCwwLC41Ljg3TDExLDMzLjQ2di0xMUwyLDE3LjI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTEzLDMzLjQ2bDguNS00Ljg2YTEsMSwwLDAsMCwuNS0uODdWMTcuMjlsLTksNS4xNVoiLz5cbiAg''@;'; put 'put ''ICAgICAgJyksZS5DbHJTaGFwZUhlbGl4PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC44OCwxMy4wN2EuOS45LDAsMCwxLS40OS0xLjY2bDguOTMtNS43M2EuOS45LDAsMSwxLDEsMS41Mkw5LjM3LDEyLjky''@;'; put 'put ''QS45LjksMCwwLDEsOC44OCwxMy4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTMuMjUsMTUuMTFhLjkuOSwwLDAsMS0uNDktMS42NkwxOCwxMC4wOGEuOS45LDAsMSwxLDEsMS41MkwxMy43NCwxNUEuOS45''@;'; put 'put ''LDAsMCwxLDEzLjI1LDE1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOS43MiwzMC4yM2EuOS45LDAsMCwxLS40OS0xLjY2bDguOTMtNS43M2EuOS45LDAsMCwxLDEsMS41MkwyMC4yLDMwLjA5QS45Ljks''@;'; put 'put ''MCwwLDEsMTkuNzIsMzAuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LjkyLDI1Ljk0YS45LjksMCwwLDEtLjQ5LTEuNjZsNS4yNS0zLjM3YS45LjksMCwxLDEsMSwxLjUxTDE5LjQsMjUuOEEuODkuODks''@;'; put 'put ''MCwwLDEsMTguOTIsMjUuOTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTIxLjU2LDUuNjlhMy41OSwzLjU5LDAsMCwxLC4xNSwzLjUzTDE4LjgzLDE1aDIuMjVsMi40My00Ljg3YTUuNjEsNS42MSwwLDAsMC01''@;'; put 'put ''LTguMTRIMTMuMjZsLTEsMmg2LjIyQTMuNjEsMy42MSwwLDAsMSwyMS41Niw1LjY5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi45MSwyMC43OEE1LjUzLDUuNTMsMCwwLDAsMjcuNjYsMTdIOS4zMWEzLjU0''@;'; put 'put ''LDMuNTQsMCwwLDEtMy41Ni0zLjY3LDMuNjEsMy42MSwwLDAsMSwuNDItMS41NGw0LjI2LTguNDlhMSwxLDAsMSwwLTEuNzktLjlMNC40LDEwLjg0QTUuNjcsNS42NywwLDAsMCw0LDE1LjIyLDUuNTMsNS41MywwLDAsMCw5LjI4LDE5aDcuNmwtMy40NCw2Ljg3YTUuNjQsNS42NCwwLDAsMCwx''@;'; put 'put ''LjUsNi45MkE1LjM4LDUuMzgsMCwwLDAsMTguNDEsMzRoNS4yNWwxLTJIMTguNDNhMy41OCwzLjU4LDAsMCwxLTMuMjItNS4yMUwxOS4xMSwxOWg4LjU0YTMuNDIsMy40MiwwLDAsMSwyLjE1LjcxLDMuNTcsMy41NywwLDAsMSwxLDQuNDNsLTQuMTIsOC4yMmExLDEsMCwxLDAsMS43OS45bDQu''@;'; put 'put ''MDYtOC4xQTUuNjcsNS42NywwLDAsMCwzMi45MSwyMC43OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4xNiwxOS42M0E1LjU1LDUuNTUsMCwwLDAsMjcuNDIsMTdIMTAuMDZhNC4zNiw0LjM2LDAsMCwxLTMuNjct''@;'; put 'put ''Miw0LjA3LDQuMDcsMCwwLDEtLjE5LTQuMTNsMy42Mi03LDEuNDIsMS42My0yLjc0LDUuMyw4Ljg0LTUuNjZhLjkxLjkxLDAsMCwxLDEsMS41M0w3Ljg0LDEzLjM4YTIuMTMsMi4xMywwLDAsMCwuMjQuNTIsMi4yOCwyLjI4LDAsMCwwLDEuNjUsMUwxOC4xMSw5LjVhLjkxLjkxLDAsMCwxLDEs''@;'; put 'put ''MS41MkwxMywxNC45NEgyMC44bDIuNDEtNC44MmE1LjYsNS42LDAsMCwwLTUtOC4xMkg5YTEsMSwwLDAsMC0uOS41NkwzLjg4LDEwLjg5YTUuNiw1LjYsMCwwLDAsNSw4LjEyaDcuNjVsLTMuNDMsNi44N2E1LjYsNS42LDAsMCwwLDUsOC4xMmg5LjI4YTEsMSwwLDAsMCwuOTMtLjY1bDQuMTQt''@;'; put 'put ''OC4yNEE1LjU4LDUuNTgsMCwwLDAsMzIuMTYsMTkuNjNaTTE3Ljc1LDI1LjU3QS45MS45MSwwLDAsMSwxOCwyNC4zMWw2LTMuODhBLjkxLjkxLDAsMSwxLDI1LDIybC02LDMuODhhLjkxLjkxLDAsMCwxLTEuMjYtLjI3Wk0yOSwyNC4zNGwtOSw1Ljc4YS45MS45MSwwLDEsMS0xLTEuNTNsOS01''@;'; put 'put ''Ljc4YS45MS45MSwwLDEsMSwxLDEuNTNaIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVGbGFzaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDMsMjcuMjgsMjMsMTQuODRWNGgxYTEsMSwwLDAsMCwwLTJIMTJhMSwxLDAsMCwwLDAsMmgxVjE0Ljg0TDQuNTEsMjcuMzZBNC4yOSw0''@;'; put 'put ''LjI5LDAsMCwwLDUsMzIuOCw0LjM4LDQuMzgsMCwwLDAsOC4xNSwzNEgyOGE0LjI0LDQuMjQsMCwwLDAsMy40Mi02LjcyWk0yOS44NSwzMWEyLjYyLDIuNjIsMCwwLDEtMiwxSDhhMi4yLDIuMiwwLDAsMS0yLjA2LTEuNDEsMi42OCwyLjY4LDAsMCwxLC4yOS0yLjE3bDMtNC40NCwxNCwwLTEu''@;'; put 'put ''MzEtMkgxMC41N0wxNSwxNS40NlY0aDZWMTUuNDZsOC44NCwxMy4wNUEyLjIzLDIuMjMsMCwwLDEsMjkuODUsMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40OSwyNy40LDIzLDE0Ljk0VjRoMWExLDEs''@;'; put 'put ''MCwwLDAsMC0ySDEyLjA4YTEsMSwwLDAsMCwwLDJIMTNWMTQuOTRMNC41OCwyNy4zMWE0LjMxLDQuMzEsMCwwLDAtLjc4LDNBNC4yMyw0LjIzLDAsMCwwLDgsMzRIMjcuODZBNC4zNiw0LjM2LDAsMCwwLDMxLDMyLjgsNC4yMyw0LjIzLDAsMCwwLDMxLjQ5LDI3LjRaTTE1LDE1LjQ5VjRoNlYx''@;'; put 'put ''NS40OUwyNi4xNSwyM0g5Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUFkbWluaXN0cmF0b3I9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjY4LDE0LjgxYTYuNzYsNi43NiwwLDEsMSw2Ljc2LTYuNzVB''@;'; put 'put ''Ni43Nyw2Ljc3LDAsMCwxLDE0LjY4LDE0LjgxWm0wLTExLjUxYTQuNzYsNC43NiwwLDEsMCw0Ljc2LDQuNzZBNC43Niw0Ljc2LDAsMCwwLDE0LjY4LDMuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2LjQy''@;'; put 'put ''LDMxLjY4QTIuMTQsMi4xNCwwLDAsMSwxNS44LDMwSDRWMjQuMjJhMTQuODEsMTQuODEsMCwwLDEsMTEuMDktNC42OGwuNzIsMGEyLjIsMi4yLDAsMCwxLC42Mi0xLjg1bC4xMi0uMTFjLS40NywwLTEtLjA2LTEuNDYtLjA2QTE2LjQ3LDE2LjQ3LDAsMCwwLDIuMiwyMy4yNmExLDEsMCwwLDAt''@;'; put 'put ''LjIuNlYzMGEyLDIsMCwwLDAsMiwySDE2LjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NywxNi4yOWEuMzcuMzcsMCwwLDEsLjE1LDAsLjQyLjQyLDAsMCwwLS4xNSwwWiIgIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDIzLjMybC0yLS42MWE3LjIxLDcuMjEsMCwwLDAtLjU4LTEuNDFsMS0xLjg2QS4zOC4zOCwwLDAsMCwzMiwxOWwtMS40NS0xLjQ1YS4zNi4zNiwwLDAsMC0uNDQtLjA3bC0xLjg0LDFh''@;'; put 'put ''Ny4xNSw3LjE1LDAsMCwwLTEuNDMtLjYxbC0uNjEtMmEuMzYuMzYsMCwwLDAtLjM2LS4yNEgyMy44MmEuMzYuMzYsMCwwLDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42bC0xLjgyLTFhLjM1LjM1LDAsMCwwLS40My4wN0wxNy42OSwxOWEuMzguMzgsMCwwLDAtLjA2LjQ0bDEsMS44''@;'; put 'put ''MkE2Ljc3LDYuNzcsMCwwLDAsMTgsMjIuNjlsLTIsLjZhLjM2LjM2LDAsMCwwLS4yNi4zNXYyLjA1QS4zNS4zNSwwLDAsMCwxNiwyNmwyLC42MWE3LDcsMCwwLDAsLjYsMS40MWwtMSwxLjkxYS4zNi4zNiwwLDAsMCwuMDYuNDNsMS40NSwxLjQ1YS4zOC4zOCwwLDAsMCwuNDQuMDdsMS44Ny0x''@;'; put 'put ''YTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMmEuMzguMzgsMCwwLDAsLjM1LjI2aDIuMDVhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTIuMDVhNi45Miw2LjkyLDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzYuMzYsMCwwLDAsLjQzLS4wN0wzMiwzMC40QS4zNS4zNSwwLDAsMCwzMiwzMGwt''@;'; put 'put ''MS0xLjg4YTcsNywwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzYuMzYsMCwwLDAsLjI2LS4zNVYyMy42N0EuMzYuMzYsMCwwLDAsMzMuNjgsMjMuMzJaTTI0Ljg1LDI4YTMuMzQsMy4zNCwwLDEsMSwzLjMzLTMuMzNBMy4zNCwzLjM0LDAsMCwxLDI0Ljg1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNC42NyIgY3k9IjguMyIgcj0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40NCwzMS44MmEyLjE1LDIuMTUsMCww''@;'; put 'put ''LDEtLjM4LTIuNTVsLjUzLTEtMS4wOS0uMzNBMi4xNCwyLjE0LDAsMCwxLDE0LDI1Ljg0VjIzLjc5YTIuMTYsMi4xNiwwLDAsMSwxLjUzLTIuMDdsMS4wOS0uMzMtLjUyLTFhMi4xNywyLjE3LDAsMCwxLC4zNS0yLjUyLDE4LjkyLDE4LjkyLDAsMCwwLTIuMzItLjE2QTE1LjU4LDE1LjU4LDAs''@;'; put 'put ''MCwwLDIsMjMuMDd2Ny43NWExLDEsMCwwLDAsMSwxSDE2LjQ0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43LDIzLjQ2bC0yLS42YTYuNzMsNi43MywwLDAsMC0uNTgtMS40MmwxLTEuODZhLjM1LjM1LDAsMCww''@;'; put 'put ''LS4wNy0uNDNsLTEuNDUtMS40NmEuMzguMzgsMCwwLDAtLjQzLS4wN2wtMS44NSwxYTcuNzQsNy43NCwwLDAsMC0xLjQzLS42bC0uNjEtMmEuMzguMzgsMCwwLDAtLjM2LS4yNUgyMy44NGEuMzguMzgsMCwwLDAtLjM1LjI2bC0uNiwyYTYuODUsNi44NSwwLDAsMC0xLjQ1LjYxbC0xLjgxLTFh''@;'; put 'put ''LjM4LjM4LDAsMCwwLS40NC4wNmwtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyQTcuMjQsNy4yNCwwLDAsMCwxOCwyMi44M2wtMiwuNjFhLjM2LjM2LDAsMCwwLS4yNi4zNXYyLjA1YS4zNi4zNiwwLDAsMCwuMjYuMzVsMiwuNjFhNy4yOSw3LjI5LDAsMCwwLC42LDEuNDFs''@;'; put 'put ''LTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTkuMTYsMzJhLjM4LjM4LDAsMCwwLC40NC4wNmwxLjg3LTFhNy4wOSw3LjA5LDAsMCwwLDEuNC41N2wuNiwyLjA1YS4zOC4zOCwwLDAsMCwuMzYuMjZoMi4wNWEuMzguMzgsMCwwLDAsLjM1LS4yNmwuNi0yLjA1YTYuNjgsNi42OCwwLDAsMCwx''@;'; put 'put ''LjM4LS41N2wxLjg5LDFhLjM4LjM4LDAsMCwwLC40NC0uMDZMMzIsMzAuNTVhLjM4LjM4LDAsMCwwLC4wNi0uNDRsLTEtMS44OGE2LjkyLDYuOTIsMCwwLDAsLjU3LTEuMzhsMi0uNjFhLjM5LjM5LDAsMCwwLC4yNy0uMzVWMjMuODJBLjQuNCwwLDAsMCwzMy43LDIzLjQ2Wm0tOC44Myw0Ljcy''@;'; put 'put ''YTMuMzQsMy4zNCwwLDEsMSwzLjMzLTMuMzRBMy4zNCwzLjM0LDAsMCwxLDI0Ljg3LDI4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUhhcmREcml2ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsOGEy''@;'; put 'put ''LDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJaTTMyLDI4SDRWOEgzMlYyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEw''@;'; put 'put ''LjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjg4LDE4LjA4YTMuNTksMy41OSwwLDEsMCwzLjU5LTMuNTksMy44NCwzLjg0LDAsMCwwLS45MS4xM0wxNSwxNi4xNmEyLjA4LDIuMDgsMCwwLDEsLjUtLjA3LDIsMiwwLDEsMS0yLDIsMS42NCwxLjY0LDAs''@;'; put 'put ''MCwxLC4wOC0uNUwxMiwxNy4xNkEzLjUzLDMuNTMsMCwwLDAsMTEuODgsMTguMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS40NywyNS43M2E3LjY2LDcuNjYsMCwwLDEtNy42NS03LjY1LDcuNTUsNy41''@;'; put 'put ''NSwwLDAsMSwuMjctMkw2LjU0LDE1LjdhOS4yNCw5LjI0LDAsMCwwLDE3LjgsNC45NUgyMi42NkE3LjY0LDcuNjQsMCwwLDEsMTUuNDcsMjUuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4yMiwxNy44''@;'; put 'put ''M2EuOC44LDAsMCwwLS44LS44SDI0LjY2YTkuMjYsOS4yNiwwLDAsMC05LjE5LTguMiw5LjM2LDkuMzYsMCwwLDAtMi4zOC4zMmwuNDIsMS41NGE3Ljg2LDcuODYsMCwwLDEsMi0uMjZBNy42Niw3LjY2LDAsMCwxLDIzLDE3SDIwLjkyYS44LjgsMCwwLDAsMCwxLjZoNi41QS44LjgsMCwwLDAs''@;'; put 'put ''MjguMjIsMTcuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTIsMTcuMTZs''@;'; put 'put ''MS41NC40MmExLjY0LDEuNjQsMCwwLDAtLjA4LjUsMiwyLDAsMSwwLDItMiwyLjA4LDIuMDgsMCwwLDAtLjUuMDdsLS40MS0xLjU0YTMuODQsMy44NCwwLDAsMSwuOTEtLjEzLDMuNTksMy41OSwwLDEsMS0zLjU5LDMuNTlBMy41MywzLjUzLDAsMCwxLDEyLDE3LjE2Wk01LjMxLDhBMS4yNSwx''@;'; put 'put ''LjI1LDAsMSwxLDQuMDYsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4zMSw4Wm0wLDIwLjA2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMzEsMjguMDZabTEwLjE2LS43M0E5LjIyLDkuMjIsMCwwLDEsNi41NCwxNS43bDEuNTUuNDFhNy41NSw3LjU1LDAsMCww''@;'; put 'put ''LS4yNywyLDcuNjQsNy42NCwwLDAsMCwxNC44NCwyLjU3aDEuNjhBOS4yNSw5LjI1LDAsMCwxLDE1LjQ3LDI3LjMzWm0xMi04LjdoLTYuNWEuOC44LDAsMCwxLDAtMS42SDIzYTcuNjYsNy42NiwwLDAsMC03LjU3LTYuNiw3Ljg2LDcuODYsMCwwLDAtMiwuMjZsLS40Mi0xLjU0YTkuMzYsOS4z''@;'; put 'put ''NiwwLDAsMSwyLjM4LS4zMkE5LjI2LDkuMjYsMCwwLDEsMjQuNjYsMTdoMi43NmEuOC44LDAsMCwxLDAsMS42Wm0zLjM5LDkuNDNhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuODEsMjguMDZabTAtMTcuNTZhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUEx''@;'; put 'put ''LjI1LDEuMjUsMCwwLDEsMzAuODEsMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQuMjYs''@;'; put 'put ''NEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCwwLDMuNzQsMjJINFY2SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsOS43NEExLjc0LDEuNzQsMCwwLDAsMjgu''@;'; put 'put ''MjYsOEg3Ljc0QTEuNzQsMS43NCwwLDAsMCw2LDkuNzRWMjQuMjZBMS43NCwxLjc0LDAsMCwwLDcuNzQsMjZIOFYxMEgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43''@;'; put 'put ''NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEuNzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCwwLDAsMCwzMi4yNiwxMlpNMzIsMjhIMTJWMTRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwyMy42OGEyLjY0LDIuNjQsMCwxLDAtMi43LTIuNjNBMi42NywyLjY3LDAsMCwwLDE5Ljk0LDIzLjY4Wm0wLTMuODdhMS4yNCwxLjI0LDAsMSwxLTEuMjksMS4yNEExLjI3LDEuMjcsMCwwLDEsMTkuOTQsMTkuODFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwxNi4yMmE0LjkzLDQuOTMsMCwwLDEsNC45NSw0LjM1SDIzLjcxVjIyaDQuNDFhLjcuNywwLDAsMCwwLTEuNEgyNi4zMWE2LjMzLDYuMzMsMCwwLDAtNi4zNy01Ljc1''@;'; put 'put ''LDYuNTgsNi41OCwwLDAsMC0xLjQ4LjE3bC4zNSwxLjM3QTQuNzMsNC43MywwLDAsMSwxOS45NCwxNi4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljk0LDI3LjI3YTYuNDIsNi40MiwwLDAsMCw1LjY3''@;'; put 'put ''LTMuMzVIMjMuOTNhNSw1LDAsMCwxLTQsMS45NSw0LjkxLDQuOTEsMCwwLDEtNS00LjgyLDUuMTYsNS4xNiwwLDAsMSwuMDgtLjc5TDEzLjYzLDIwYTcsNywwLDAsMC0uMDksMUE2LjMyLDYuMzIsMCwwLDAsMTkuOTQsMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiw1Ljc0QTEuNzQsMS43NCwwLDAsMCwyNC4yNiw0SDMuNzRBMS43NCwxLjc0LDAsMCwwLDIsNS43NFYyMC4yNkExLjc0LDEuNzQsMCwwLDAsMy43NCwyMkg0VjZIMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3Ljc0LDI2SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYyLDIyLjZBMS41NSwxLjU1LDAsMSwwLDE4LDIxLjA1LDEuNiwxLjYsMCwwLDAsMTkuNjIsMjIuNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIu''@;'; put 'put ''MjYsMTJIMTEuNzRBMS43NCwxLjc0LDAsMCwwLDEwLDEzLjc0VjI4LjI2QTEuNzQsMS43NCwwLDAsMCwxMS43NCwzMEgzMi4yNkExLjc0LDEuNzQsMCwwLDAsMzQsMjguMjZWMTMuNzRBMS43NCwxLjc0LDAsMCwwLDMyLjI2LDEyWk0xOS42MiwxNy43NGEzLjMxLDMuMzEsMCwxLDEtMy4zOCwz''@;'; put 'put ''LjMxQTMuMzUsMy4zNSwwLDAsMSwxOS42MiwxNy43NFptMCwxMS4xM2E3Ljk0LDcuOTQsMCwwLDEtOC03LjgyLDcuODMsNy44MywwLDAsMSwuMTEtMS4yOWwxLjc1LjNhNS4zNiw1LjM2LDAsMCwwLS4xMSwxLDYuMTgsNi4xOCwwLDAsMCw2LjI4LDYuMDYsNi4zNSw2LjM1LDAsMCwwLDUtMi40''@;'; put 'put ''NmgyLjFBOC4wNiw4LjA2LDAsMCwxLDE5LjYyLDI4Ljg3Wk0yOS44OSwyMi4ySDI0LjM2VjIwLjQ0aDEuNDhBNi4xOSw2LjE5LDAsMCwwLDE5LjYyLDE1YTYuNDgsNi40OCwwLDAsMC0xLjQxLjE2bC0uNDUtMS43YTguMTYsOC4xNiwwLDAsMSwxLjg2LS4yMiw4LDgsMCwwLDEsOCw3LjIxaDIu''@;'; put 'put ''MjZhLjg4Ljg4LDAsMCwxLDAsMS43NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVOVk1lPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNywyMlYxNGEyLDIsMCwwLDAtMi0ySDExYTIsMiwwLDAsMC0yLDJ2OGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDI1QTIsMiwwLDAsMCwyNywyMlpNMTEsMTRIMjV2OEgxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjYiIHdpZHRoPSIxLjk3IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuOCw4SDE2''@;'; put 'put ''Ljg3VjZoLTExTDcuNzgsNC4wOGExLDEsMCwwLDAsMC0xLjQyLDEsMSwwLDAsMC0xLjQxLDBMMiw3LDYuMzcsMTEuNGExLDEsMCwwLDAsMS40MSwwLDEsMSwwLDAsMCwwLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yOS42MSwyNC42OGExLDEsMCwwLDAtMS40MSwwLDEsMSwwLDAsMCwwLDEuNDJMMzAuMSwyOEgxOXYySDMwLjJsLTIsMmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzNCwyOS4wNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTMiIHk9IjI4IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjkiIHk9IjI4IiB3aWR0aD0iMS45NyIg''@;'; put 'put ''aGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVNTRD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI2LjIxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjkuODEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI2LjIxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjkuODEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAs''@;'; put 'put ''MTguNjJjMS4zMi4zMSwxLjkxLjU0LDEuOTEsMS4yMnMtLjUzLDEuMDktMS41NSwxLjA5YTQsNCwwLDAsMS0yLjcxLTEuMTFsLS44NiwxLjA2YTUsNSwwLDAsMCwzLjUyLDEuMzRjMiwwLDMuMS0xLDMuMS0yLjUycy0xLjE1LTIuMDUtMi44Ny0yLjQ0Yy0xLjMxLS4zLTEuOTItLjU0LTEuOTIt''@;'; put 'put ''MS4yMUExLjI1LDEuMjUsMCwwLDEsMTAsMTVhMy42OCwzLjY4LDAsMCwxLDIuMzcsMWwuODEtMS4xQTQuNTgsNC41OCwwLDAsMCwxMCwxMy42OWMtMS43NCwwLTMsMS4wNS0zLDIuNDlTOC4yNiwxOC4yMiwxMCwxOC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC02IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjgzLDIwLjkzYTQsNCwwLDAsMS0yLjcxLTEuMTFsLS44NiwxLjA2YTUsNSwwLDAsMCwzLjUyLDEuMzRjMiwwLDMuMS0xLDMuMS0yLjUyUzE5LjczLDE3LjY1LDE4LDE3LjI2Yy0xLjMxLS4zLTEuOTItLjU0LTEuOTItMS4yMUExLjI1''@;'; put 'put ''LDEuMjUsMCwwLDEsMTcuNDgsMTVhMy42OCwzLjY4LDAsMCwxLDIuMzcsMWwuODEtMS4xYTQuNTYsNC41NiwwLDAsMC0zLjEyLTEuMTVjLTEuNzMsMC0zLDEuMDUtMywyLjQ5czEuMTksMiwyLjg5LDIuNDRjMS4zMi4zMSwxLjkxLjU0LDEuOTEsMS4yMlMxOC44NSwyMC45MywxNy44MywyMC45''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjksMThjMC0yLjQxLTEuOTItNC4xMi00LjY0LTQuMTJoLTIuOXY4LjI0aDIuOUMyOCwyMi4wOCwyOS45LDIwLjM3LDI5LjksMThabS02LTIuNzZoMS41NmEy''@;'; put 'put ''Ljc3LDIuNzcsMCwxLDEsMCw1LjUzSDIzLjg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCww''@;'; put 'put ''LDMyLDZaTTUuMjEsOEExLjI1LDEuMjUsMCwxLDEsNCw5LjI1LDEuMjUsMS4yNSwwLDAsMSw1LjIxLDhabTAsMjBhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsNS4yMSwyOFptNS4wNi01Ljc4YTUsNSwwLDAsMS0zLjUyLTEuMzRsLjg2LTEuMDZhNCw0LDAsMCww''@;'; put 'put ''LDIuNzEsMS4xMWMxLDAsMS41NS0uNSwxLjU1LTEuMDlzLS41OS0uOTEtMS45MS0xLjIyYy0xLjctLjQtMi44OS0uODktMi44OS0yLjQ0czEuMjItMi40OSwzLTIuNDlhNC41OCw0LjU4LDAsMCwxLDMuMTIsMS4xNWwtLjgxLDEuMUEzLjY4LDMuNjgsMCwwLDAsMTAsMTVhMS4yNSwxLjI1LDAs''@;'; put 'put ''MCwwLTEuMzksMS4wOGMwLC42Ny42MS45MSwxLjkyLDEuMjEsMS43Mi4zOSwyLjg3Ljk0LDIuODcsMi40NFMxMi4yNCwyMi4yMiwxMC4yNywyMi4yMlptNy41MSwwYTUsNSwwLDAsMS0zLjUyLTEuMzRsLjg2LTEuMDZhNCw0LDAsMCwwLDIuNzEsMS4xMWMxLDAsMS41NS0uNSwxLjU1LTEuMDlz''@;'; put 'put ''LS41OS0uOTEtMS45MS0xLjIyYy0xLjctLjQtMi44OS0uODktMi44OS0yLjQ0czEuMjMtMi40OSwzLTIuNDlhNC41Niw0LjU2LDAsMCwxLDMuMTIsMS4xNWwtLjgxLDEuMWEzLjY4LDMuNjgsMCwwLDAtMi4zNy0xLDEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45Miwx''@;'; put 'put ''LjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRTMTkuNzUsMjIuMjIsMTcuNzgsMjIuMjJabTQuNTgtLjE0VjEzLjg0aDIuOWMyLjcyLDAsNC42NCwxLjcxLDQuNjQsNC4xMlMyOCwyMi4wOCwyNS4yNiwyMi4wOFpNMzAuNjksMjhhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEu''@;'; put 'put ''MjUsMCwwLDEsMzAuNjksMjhabTAtMTcuNWExLjI1LDEuMjUsMCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSwzMC42OSwxMC41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwxNS4yaDEuNTZhMi43''@;'; put 'put ''NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVCbHVldG9vdGg9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjY0LDI1LjI3LDE5LDE3LjUzLDE5LDMsMjUuMjEsOS40''@;'; put 'put ''bC01LjY1LDUuNzlMMjEsMTYuNjJsNS42OC01LjgyYTIsMiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIuMDgsMi4wOCwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzVjE1LjM4TDEwLjA1LDguMjdBMSwxLDAsMCwwLDguNjIsOS42NkwxNi43OSwxOCw5LjA2LDI2YTEsMSwwLDAsMCwwLDEu''@;'; put 'put ''NDEsMSwxLDAsMCwwLC43LjI5LDEsMSwwLDAsMCwuNzItLjMxTDE3LDIwLjY4VjMzYTIuMDcsMi4wNywwLDAsMCwuNzEsMS42MkEyLDIsMCwwLDAsMTksMzVhMS45NCwxLjk0LDAsMCwwLDEuNDItLjZsNi4yMy02LjM4QTIsMiwwLDAsMCwyNi42NCwyNS4yN1pNMTksMzMuMDVWMjAuMjlsNi4y''@;'; put 'put ''MSw2LjM2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gIDxwYXRoIGQ9Ik0yNi41MiwyNC41MmwtNS42NS01LjgzLTEuNDYtMS41di0xMkwyMy43OSw5LjdsLTMuNiwzLjcxLDIuMjQsMi4yOSw0LjA5LTQuMjJhMi41NCwyLjU0LDAsMCwwLDAtMy41''@;'; put 'put ''NkwyMC41NywxLjc4QTIuNTQsMi41NCwwLDAsMCwxNi4yLDMuNTVWMTMuODZsLTUuNTMtNS43YTEuNiwxLjYsMCwxLDAtMi4zLDIuMjNMMTUuNzUsMThsLTcsNy4xOWExLjYsMS42LDAsMCwwLDAsMi4yNiwxLjYzLDEuNjMsMCwwLDAsMS4xMi40NSwxLjU4LDEuNTgsMCwwLDAsMS4xNS0uNDls''@;'; put 'put ''NS4xMS01LjI3VjMyLjQ1YTIuNTMsMi41MywwLDAsMCwxLjU5LDIuMzYsMi40NCwyLjQ0LDAsMCwwLC45NS4xOSwyLjU2LDIuNTYsMCwwLDAsMS44My0uNzdsNS45NS02LjE1QTIuNTQsMi41NCwwLDAsMCwyNi41MiwyNC41MlpNMTkuNCwzMC44M1YyMS43N2w0LjM5LDQuNTNaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVCbHVldG9vdGhPZmY9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDMsMjUuMjIsOS40bC01LjY2LDUuOEwyMSwxNi42M2w1LjY4LTUuODNhMiwyLDAsMCwwLDAtMi43OEwyMC40OCwxLjdBMiwyLDAs''@;'; put 'put ''MCwwLDE4Ljg1LDEsMiwyLDAsMCwwLDE3LDN2MTEuNGwyLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNC43Nyw1LDMuMzYsNi40MiwxNS44OSwxOSw5LjA2LDI2YTEsMSwwLDAsMCwuNzEsMS43LDEsMSwwLDAsMCwuNzItLjMxTDE3''@;'; put 'put ''LDIwLjY4VjMyLjk0YTIuMDgsMi4wOCwwLDAsMCwuNzEsMS42M0EyLDIsMCwwLDAsMTksMzVhMiwyLDAsMCwwLDEuNDItLjZsNS40MS01LjU0LDMuNTQsMy41M0wzMC43NywzMVpNMTksMzMuMDV2LTExbDUuNDEsNS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiAvPjxwYXRoIGQ9Ik0xOS4zMSw1LjE3LDIzLjcsOS43bC0zLjU5LDMuNzEsMi4yNCwyLjI5LDQuMDktNC4yMmEyLjU2LDIuNTYsMCwwLDAsMC0zLjU2bC02LTYuMTRhMi41MSwyLjUxLDAsMCwwLTIuNzctLjU5LDIuNTQsMi41NCwwLDAsMC0xLjYsMi4zNnYxMGwzLjIxLDMuMjFaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjUsNSwzLjA5LDYuNDIsMTUuMTcsMTguNTEsOC43LDI1LjE5QTEuNiwxLjYsMCwwLDAsOS44NSwyNy45LDEuNTcsMS41NywwLDAsMCwxMSwyNy40MWw1LjExLTUuMjdWMzIuNDVhMi41NCwyLjU0LDAs''@;'; put 'put ''MCwwLDEuNiwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUuMTksMi41NSwyLjU1LDAsMCwwLDEuODItLjc3bDUuMTItNS4yOSwzLjQ5LDMuNDhMMzAuNSwzMVpNMTkuODEsMzAuODNWMjIuNjVsNCw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNo''@;'; put 'put ''YXBlUHJvY2Vzc09uVk09KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjQ5LDI2LjI4YTEsMSwwLDAsMC0xLjItLjdsLTIuNDkuNjdhMTQuMjMsMTQuMjMsMCwwLDAsMi40LTYuNzVBMTQuNDgsMTQuNDgsMCwwLDAsMjcuMzcsNy4zNSwxLDEsMCwwLDAsMjYsNy40NGExLDEsMCwwLDAs''@;'; put 'put ''LjA5LDEuNDEsMTIuNDUsMTIuNDUsMCwwLDEsNC4xNiwxMC40NiwxMi4xOSwxMi4xOSwwLDAsMS0yLDUuNzRMMjgsMjIuNTRhMSwxLDAsMSwwLTEuOTUuMTZsLjUsNi40NCw2LjI1LTEuNjZBMSwxLDAsMCwwLDMzLjQ5LDI2LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMzEsMTcuMDhhMS4wNiwxLjA2LDAsMCwwLC40NC4xNiwxLDEsMCwwLDAsMS4xMi0uODVBMTIuMjEsMTIuMjEsMCwwLDEsMTguNjksNS44NEwxNi40NSw3LjM3YTEsMSwwLDAsMCwuNDcsMS43OUExLDEsMCwwLDAsMTcuNTYsOWw1LjMzLTMuNjZMMTgu''@;'; put 'put ''MzMuNzZhMSwxLDAsMSwwLTEuMzksMS4zOGwxLjcsMS43QTE0LjIsMTQuMiwwLDAsMCwzLjg5LDE2LjEyLDEsMSwwLDAsMCw0LjMxLDE3LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIxLjczLDI5LjkzYTEyLDEyLDAsMCwxLTQu''@;'; put 'put ''ODQuNTEsMTIuMywxMi4zLDAsMCwxLTkuNTctNi4zbDIuNDkuOTNhMSwxLDAsMCwwLC42OS0xLjg0bC00LjU5LTEuN2gwTDQuNDQsMjEsMy4zMywyNy4zNWExLDEsMCwwLDAsLjc5LDEuMTNsLjE3LDBhMSwxLDAsMCwwLDEtLjgxbC40Mi0yLjRhMTQuMywxNC4zLDAsMCwwLDExLDcuMTQsMTMu''@;'; put 'put ''OTEsMTMuOTEsMCwwLDAsNS42My0uNiwxLDEsMCwwLDAtLjYtMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDEzSDE0YTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxNEExLDEsMCwwLDAs''@;'; put 'put ''MjIsMTNabS0xLDhIMTVWMTVoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVBc3NpZ25Vc2VyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxN2E3LjQ2LDcuNDYsMCwxLDAtNy40NS03LjQ2QTcuNDYsNy40NiwwLDAs''@;'; put 'put ''MCwxOCwxN1pNMTgsNC4wN2E1LjQ2LDUuNDYsMCwxLDEtNS40NSw1LjQ1QTUuNDYsNS40NiwwLDAsMSwxOCw0LjA3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYsMzEuODlWMjUuNzdhMTYuMTMsMTYuMTMsMCwwLDEsMTItNSwxNi42''@;'; put 'put ''MSwxNi42MSwwLDAsMSw4LjcxLDIuMzNsMS4zNS0xLjUxQTE4LjUzLDE4LjUzLDAsMCwwLDE4LDE4Ljc0LDE3LjcsMTcuNywwLDAsMCw0LjIxLDI0LjhhMSwxLDAsMCwwLS4yMS42djYuNDlBMi4wNiwyLjA2LDAsMCwwLDYsMzRIMTguMzlsLTEuOS0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMxLjg5LDMwLDMySDI2Ljg1bC0xLjgsMkgzMGEyLjA2LDIuMDYsMCwwLDAsMi0yLjA3VjI2LjJsLTIsMi4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zNC43Niwx''@;'; put 'put ''OC42MmExLDEsMCwwLDAtMS40MS4wOGwtMTEuNjIsMTMtNS4yLTUuNTlBMSwxLDAsMCwwLDE1LjEyLDI2YTEsMSwwLDAsMC0uMDYsMS40Mmw2LjY5LDcuMkwzNC44NCwyMEExLDEsMCwwLDAsMzQuNzYsMTguNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIg''@;'; put 'put ''Lz48Y2lyY2xlIGN4PSIxNy45OSIgY3k9IjEwLjM2IiByPSI2LjgxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xMiwyNi42NWEyLjgsMi44LDAsMCwxLDQuODUtMS44TDIwLjcxLDI5bDYuODQtNy42M0ExNi44MSwxNi44MSwwLDAsMCwxOCwx''@;'; put 'put ''OC41NSwxNi4xMywxNi4xMywwLDAsMCw1LjUsMjRhMSwxLDAsMCwwLS4yLjYxVjMwYTIsMiwwLDAsMCwxLjk0LDJoOC41N2wtMy4wNy0zLjNBMi44MSwyLjgxLDAsMCwxLDEyLDI2LjY1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjguNzYs''@;'; put 'put ''MzJhMiwyLDAsMCwwLDEuOTQtMlYyNi4yNEwyNS41NywzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjc3LDE4LjYyYTEsMSwwLDAsMC0xLjQyLjA4bC0xMS42MiwxMy01LjItNS41OUExLDEsMCwwLDAsMTQuMTIsMjZhMSwxLDAsMCww''@;'; put 'put ''LDAsMS40Mmw2LjY4LDcuMkwzMy44NCwyMEExLDEsMCwwLDAsMzMuNzcsMTguNjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVBdG9tPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxNC4wNWE0LDQsMCwxLDAsNCw0QTQsNCww''@;'; put 'put ''LDAsMCwxOCwxNC4wNVptMCw2LjQ0YTIuNDIsMi40MiwwLDEsMSwyLjQyLTIuNDJBMi40MiwyLjQyLDAsMCwxLDE4LDIwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI0LjIzLDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTct''@;'; put 'put ''My45MiwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LTEuNzJjLjMyLS4xMi42Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIyLDMuNTkuMSw2LjU4LjQ5LjY1Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzku''@;'; put 'put ''NDktMS4xOCwxLjQ3LTMuODUsMS4yOC03LS41My04Ljc4YTUuMjksNS4yOSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43OSwwLDAsMC00LjU3LDIuMzVBMjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0z''@;'; put 'put ''Ljg1LTEuNDYtNy0xLjI4LTguNzcuNTNDMi44NSw2LjQsMi41OCw5LjE3LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQsMCwwLDAsNCwyMi42NmMtMS40NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUu''@;'; put 'put ''NjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0LDEzLjM0LDAsMCwwLDQuNjUtMSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAsMy42NS45QTIuMywyLjMsMCwwLDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43''@;'; put 'put ''NC0uNTdjMS44MS0xLjgxLDItNC45My41My04Ljc3QTMyLjY4LDMyLjY4LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02LjY0YTIyLjc3LDIyLjc3LDAsMCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAs''@;'; put 'put ''MCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1LDEuMzEsMS4yNXEuOS0uNDYsMS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1LjUsMTEuNjloMGMtLjc1LTIuNS0uNjItNC40OS40My01LjU0YTMuNzIsMy43Miww''@;'; put 'put ''LDAsMSwyLjcyLS45MiwxMS40LDExLjQsMCwwLDEsMy45My44NCwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2YTIwLjI3LDIwLjI3LDAsMCwwLDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4''@;'; put 'put ''LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1LTQuMTcsMzYuODgsMzYuODgsMCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCwwLDEsMTIuNTcsMzAuMDlaTTI5Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCww''@;'; put 'put ''LTMuNS43MiwxMi41NywxMi41NywwLDAsMS0zLS43NywyMiwyMiwwLDAsMS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwyMi44OCwwLDAsMSwxLjcyLDMuNDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQuMjMsMTEuNzFhMzkuMTQsMzkuMTQsMCwwLDAtNC41Ny0zLjkyLDIyLjg2LDIyLjg2LDAsMCwxLDMuNDgtMS43MmMuMzItLjEyLjYyLS4yMS45Mi0uM2EyLjI4LDIuMjgsMCwwLDAsMy44''@;'; put 'put ''MS0uNDYsMy4zMSwzLjMxLDAsMCwxLDEuOTIuODRjMS4xOSwxLjE5LDEuMjIsMy41OS4xLDYuNTguNDkuNjUuOTQsMS4zMSwxLjM1LDIsLjE3LS40LjM1LS43OS40OS0xLjE4LDEuNDctMy44NSwxLjI4LTctLjUzLTguNzhhNS4yOSw1LjI5LDAsMCwwLTMuMzMtMS40NCwyLjI5LDIuMjksMCww''@;'; put 'put ''LDAtNC4zMS41NGMtLjM3LjExLS43NC4yMi0xLjEzLjM3YTI1Ljc5LDI1Ljc5LDAsMCwwLTQuNTcsMi4zNUEyNi4yMSwyNi4yMSwwLDAsMCwxMy4yOCw0LjJjLTMuODUtMS40Ni03LTEuMjgtOC43Ny41M0MyLjg1LDYuNCwyLjU4LDkuMTcsMy42OCwxMi41OWEyLjI4LDIuMjgsMCwwLDAsMS41''@;'; put 'put ''OSwzLjY3Yy4zMi42MS42NywxLjIyLDEuMDYsMS44MkEyNS41NCwyNS41NCwwLDAsMCw0LDIyLjY2Yy0xLjQ3LDMuODQtMS4yOCw3LC41Myw4Ljc3YTUuNjMsNS42MywwLDAsMCw0LjEyLDEuNTEsMTMuMzQsMTMuMzQsMCwwLDAsNC42NS0xLDI2LjIxLDI2LjIxLDAsMCwwLDQuNTgtMi4zNUEy''@;'; put 'put ''NS43OSwyNS43OSwwLDAsMCwyMi40MywzMmExNC4xNiwxNC4xNiwwLDAsMCwzLjY1LjlBMi4zLDIuMywwLDAsMCwzMC40NiwzMmE0LjU1LDQuNTUsMCwwLDAsLjc0LS41N2MxLjgxLTEuODEsMi00LjkzLjUzLTguNzdBMzIuNjgsMzIuNjgsMCwwLDAsMjQuMjMsMTEuNzFaTTEyLjU3LDMwLjA5''@;'; put 'put ''Yy0zLDEuMTUtNS40NSwxLjEzLTYuNjUtLjA4cy0xLjIzLTMuNjItLjA3LTYuNjRhMjIuNzcsMjIuNzcsMCwwLDEsMS43MS0zLjQ4LDQwLjE5LDQwLjE5LDAsMCwwLDMuOTIsNC41NmMuNDMuNDMuODcuODUsMS4zMSwxLjI1cS45LS40NiwxLjgzLTEuMDVjLS41OC0uNTItMS4xNi0xLTEuNzIt''@;'; put 'put ''MS42MWEzNCwzNCwwLDAsMS01Ljc0LTcuNDdBMi4yOSwyLjI5LDAsMCwwLDUuNSwxMS42OWgwYy0uNzUtMi41LS42Mi00LjQ5LjQzLTUuNTRhMy43MiwzLjcyLDAsMCwxLDIuNzItLjkyLDExLjQsMTEuNCwwLDAsMSwzLjkzLjg0LDIyLjg2LDIyLjg2LDAsMCwxLDMuNDgsMS43MiwzOS4xNCwz''@;'; put 'put ''OS4xNCwwLDAsMC00LjU3LDMuOTJjLS40NC40NC0uODcuOS0xLjI5LDEuMzZhMjAuMjcsMjAuMjcsMCwwLDAsMSwxLjg1Yy41NC0uNjEsMS4wOS0xLjIxLDEuNjgtMS44YTM2LjMzLDM2LjMzLDAsMCwxLDUtNC4xNywzNi44OCwzNi44OCwwLDAsMSw0Ljk1LDQuMTcsMzYuMjYsMzYuMjYsMCww''@;'; put 'put ''LDEsNC4xNyw1LDM3LDM3LDAsMCwxLTQuMTcsNUEzMC42OCwzMC42OCwwLDAsMSwxMi41NywzMC4wOVpNMjkuNzksMzBsLS4xNi4xM2EyLjI3LDIuMjcsMCwwLDAtMy41LjcyLDEyLjU3LDEyLjU3LDAsMCwxLTMtLjc3LDIyLDIyLDAsMCwxLTMuNDgtMS43MiwzOS4xNCwzOS4xNCwwLDAsMCw0''@;'; put 'put ''LjU3LTMuOTIsMzguMjYsMzguMjYsMCwwLDAsMy45Mi00LjU2LDIyLjg4LDIyLjg4LDAsMCwxLDEuNzIsMy40OEMzMSwyNi4zOSwzMSwyOC44MSwyOS43OSwzMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxOC4wNyIg''@;'; put 'put ''cj0iMy4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMi42NiAzLjExKSByb3RhdGUoLTkuMjIpIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVCYXJDb2RlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LDdBMSwxLDAsMCwwLDQsOFYz''@;'; put 'put ''MGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDdBMSwxLDAsMCwwLDgsOFYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDksN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxMyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE3LDdhMSwxLDAsMCwwLTEsMVYyNmEx''@;'; put 'put ''LDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDE3LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjEsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMjEsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyNSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI5LDdhMSwxLDAsMCwwLTEsMVYyNmEx''@;'; put 'put ''LDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDI5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMzMsN2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMzMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC04IiAvPicpLGUuQ2xyU2hhcGVDZER2ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIyLjMzLDE4YTQuNDYsNC40NiwwLDEsMC00LjQ1LDQuNDZBNC40Niw0LjQ2LDAsMCwwLDIyLjMzLDE4Wk0xNy44OCwyMC45QTIuODYsMi44NiwwLDEsMSwyMC43MywxOCwyLjg2LDIuODYsMCwwLDEsMTcuODgsMjAu''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNy44OCw3LjQzSDE4VjUuODRoLS4xMkExMi4yMSwxMi4yMSwwLDAsMCw1LjY4LDE3Ljc1aDEuNkExMC42MSwxMC42MSwwLDAsMSwxNy44OCw3LjQzWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjA4LDE4SDI4LjQ5djBBMTAuNjEsMTAuNjEsMCwwLDEsMTguMjUsMjguNjN2MS42QTEyLjIyLDEyLjIyLDAsMCwwLDMwLjA5LDE4UzMwLjA4LDE4LDMwLjA4LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTE4LDExVjkuNDRoLS4xMmE4LjYyLDguNjIsMCwwLDAtOC42LDguMzJoMS42YTcsNywwLDAsMSw3LTYuNzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTguMjUsMjV2MS42QTguNjEsOC42''@;'; put 'put ''MSwwLDAsMCwyNi40OCwxOHYwaC0xLjZ2MEE3LDcsMCwwLDEsMTguMjUsMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMTguMTcsMS45MmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOC4xNywxLjkyWk0yNi4yMywxOGgx''@;'; put 'put ''LjU0YTkuNjEsOS42MSwwLDAsMS05LjYsOS41M0gxOFYyNmguMTdBOC4wNyw4LjA3LDAsMCwwLDI2LjIzLDE4Wk02LjA1LDE4SDQuNDV2LS4wOEExMy43MiwxMy43MiwwLDAsMSwxOCw0LjIxdjEuNkExMi4xMywxMi4xMywwLDAsMCw2LjA1LDE3LjkyWm00LjA1LDBIOC41NnYtLjA4QTkuNjEs''@;'; put 'put ''OS42MSwwLDAsMSwxOCw4LjMyVjkuODZhOC4wNyw4LjA3LDAsMCwwLTcuOSw4LjA2Wm00LjMyLS4wOGEzLjc1LDMuNzUsMCwxLDEsMy43NSwzLjc1QTMuNzUsMy43NSwwLDAsMSwxNC40MiwxNy45MlptMy43NSwxMy43MUgxOFYzMGguMTdBMTIuMTMsMTIuMTMsMCwwLDAsMzAuMjgsMThoMS42''@;'; put 'put ''QTEzLjczLDEzLjczLDAsMCwxLDE4LjE3LDMxLjYzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlQ29udGFpbmVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiwzMEg0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDMy''@;'; put 'put ''YTIsMiwwLDAsMSwyLDJWMjhBMiwyLDAsMCwxLDMyLDMwWk00LDhWMjhIMzJWOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDks''@;'; put 'put ''MjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC45MiwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSwxNC45MiwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIxLDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDIxLDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjcsMjUuM2EuOC44''@;'; put 'put ''LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMjcsMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWOEEyLDIsMCwwLDAsMzIsNlpNOS42MywyNC4yM2EuNzkuNzksMCwwLDEtLjgxLjc3QS43OS43OSwwLDAsMSw4LDI0LjIzVjExLjc3QS43OS43OSwwLDAsMSw4LjgyLDExYS43OS43OSwwLDAsMSwuODEuNzdabTYsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdW''@;'; put 'put ''MTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEsLjgyLjc3Wm02LjIxLDBhLjc5Ljc5LDAsMCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEtLjc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4xMiwwYS43OS43OSwwLDAsMS0uODIu''@;'; put 'put ''NzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwuODIuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVDb250YWluZXJWb2x1bWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTgsMTcuNThhMzIuMzUsMzIuMzUsMCwwLDAsNi4zLjkyLDQuMTMsNC4xMywwLDAsMSwuOTItMS4zNywzMC45NCwzMC45NCwwLDAsMS03LjIyLTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNiwyOFY4LjE5Yy4zNC0uNzYsNC4z''@;'; put 'put ''MS0yLjExLDExLTIuMTFzMTAuNjcsMS4zNSwxMSwydi4zYy0uODIuNzktNC41OCwyLjA1LTExLjExLDIuMDVBMzMuNDgsMzMuNDgsMCwwLDEsOCw5LjQ0djEuNDRhMzUuNiwzNS42LDAsMCwwLDguODksMWM0LjI5LDAsOC44LS41OCwxMS4xMS0xLjgydjUuMDdhNS4zLDUuMywwLDAsMS0xLjgx''@;'; put 'put ''Ljg4SDMwVjguMTJjMC0zLjE5LTguMTctNC0xMy00cy0xMywuODUtMTMsNFYyOEM0LDMwLjYzLDkuMzksMzEuNjgsMTQsMzJWMzBDOS4xMywyOS42Niw2LjI4LDI4LjYyLDYsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNOCwyNC4y''@;'; put 'put ''OGEzMS4zLDMxLjMsMCwwLDAsNiwuODl2LTEuNGEyOC45MywyOC45MywwLDAsMS02LS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMiwxOEgxOGEyLDIsMCwwLDAtMiwyVjMyYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyMEEyLDIsMCwwLDAsMzIsMThaTTE4LDMyVjIwSDMyVjMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNSwyMS44MmEuNy43LDAsMCwwLS43LjdWMzBhLjcuNywwLDEsMCwxLjQsMFYyMi41MkEuNy43LDAsMCwwLDI1LDIxLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTYiIC8+PHBhdGggZD0iTTI5LDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDEsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjksMjEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0zMiwxOEgxOGEyLDIsMCwwLDAt''@;'; put 'put ''MiwyVjMyYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMEEyLDIsMCwwLDAsMzIsMThaTTE4LDMyVjIwSDMyVjMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEsMjEuN2EuNy43LDAsMCwwLS43Ljd2Ny40OWEuNy43LDAsMCww''@;'; put 'put ''LDEuNCwwVjIyLjRBLjcuNywwLDAsMCwyMSwyMS43WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUsMjEuODJhLjcuNywwLDAsMC0uNy43VjMwYS43LjcsMCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAsMCwyNSwyMS44MloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI5LDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDEsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjksMjEuN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0i''@;'; put 'put ''TTE4LDE2SDI4VjguMTJjMC0xLjY4LTUuMzgtMy0xMi0zUzQsNi40NCw0LDguMTJWMjhjMCwxLjUsNC4zMywyLjc1LDEwLDNWMjUuMjJhMjkuMTcsMjkuMTcsMCwwLDEtOC0xLjI5VjIyLjQ0bC4yNC4xQTI2LjYzLDI2LjYzLDAsMCwwLDE0LDIzLjgyVjIwYTQsNCwwLDAsMSwuMjktMS40N0Ey''@;'; put 'put ''OS4xOSwyOS4xOSwwLDAsMSw2LDE3LjIzVjE1Ljc1bC4yNC4wOWEyOSwyOSwwLDAsMCw5LDEuMzJoMEE0LDQsMCwwLDEsMTgsMTZaTTYsMTAuNTRWOS4wNWwuMjQuMDlBMzAuMTIsMzAuMTIsMCwwLDAsMTYsMTAuNDcsMjguMzMsMjguMzMsMCwwLDAsMjYsOS4wNXYxLjVhMzIuNTMsMzIuNTMs''@;'; put 'put ''MCwwLDEtMTAsMS4zMkEzMi40NCwzMi40NCwwLDAsMSw2LDEwLjU0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz4nKSxlLkNsclNoYXBlRmlsZVNoYXJlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCww''@;'; put 'put ''LDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVptMCwyMEg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMFoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS45MSwyMi40OGEyLjA2LDIuMDYsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2VjIwbDUuNjYtMi42NWEyLjA4LDIuMDgsMCwxLDAsLjA2LTIuOTQsMi4xMiwyLjEyLDAsMCwwLS42NCwxLjQ4di4yM2wtNS42NCwyLjY2YTIu''@;'; put 'put ''MDgsMi4wOCwwLDEsMC0uMDgsMi45NWwuMDgtLjA4LDUuNjcsMi42NnYuM2EyLjA5LDIuMDksMCwxLDAsMi4wOC0yLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1''@;'; put 'put ''SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsN2g2LjQ5bDIuNzIsNEg2Wk0yMS45NCwyNi42NGEyLjA5LDIuMDksMCwwLDEtMi4xMS0yLjA2bDAtLjMtNS42Ny0yLjY2LS4wOC4wOGEyLjA4LDIuMDgsMCwxLDEs''@;'; put 'put ''LjA4LTIuOTVsNS42NC0yLjY2di0uMjNhMi4wOCwyLjA4LDAsMSwxLC41OCwxLjQ2TDE0Ljc1LDIwdi40N2w1LjcyLDIuNjZhMi4wNywyLjA3LDAsMSwxLDEuNDcsMy41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVFyQ29kZT0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBkPSJNNS42LDRBMS42LDEuNiwwLDAsMCw0LDUuNlYxMmg4VjRaTTEwLDEwSDZWNmg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQsMzAuNEExLjYsMS42LDAsMCwwLDUuNiwzMkgxMlYyNEg0Wk02''@;'; put 'put ''LDI2aDR2NEg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDMyaDYuNEExLjYsMS42LDAsMCwwLDMyLDMwLjRWMjRIMjRabTItNmg0djRIMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48''@;'; put 'put ''cGF0aCBkPSJNMzAuNCw0SDI0djhoOFY1LjZBMS42LDEuNiwwLDAsMCwzMC40LDRaTTMwLDEwSDI2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgMTAgMjAgOCAxNiA4IDE2IDEyIDE4IDEyIDE4IDEwIDIwIDEw''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cmVjdCB4PSIxMiIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjQiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBvbHlnb24gcG9pbnRzPSIyMCA2IDIwIDggMjIgOCAyMiA0IDE0IDQgMTQgOCAxNiA4IDE2IDYgMjAgNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHJl''@;'; put 'put ''Y3QgeD0iNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPjxwb2x5Z29uIHBvaW50cz0iMTIgMTYgMTIgMTggMTAgMTggMTAgMTQgOCAxNCA4IDE4IDYgMTggNiAyMCA0IDIwIDQgMjIgOCAyMiA4IDIwIDEw''@;'; put 'put ''IDIwIDEwIDIyIDEyIDIyIDEyIDIwIDE0IDIwIDE0IDE2IDEyIDE2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCAxNiAyMiAxNiAyMiAxOCAyNCAxOCAyNCAxNiAyNiAxNiAyNiAxNCAyMiAxNCAyMiAxMCAyMCAxMCAy''@;'; put 'put ''MCAxMiAxOCAxMiAxOCAxNCAyMCAxNCAyMCAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiAvPjxwb2x5Z29uIHBvaW50cz0iMTggMzAgMTQgMzAgMTQgMzIgMjIgMzIgMjIgMzAgMjAgMzAgMjAgMjggMTggMjggMTggMzAiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgLz48cG9seWdvbiBwb2ludHM9IjIyIDIwIDIyIDE4IDIwIDE4IDIwIDE2IDE4IDE2IDE4IDE4IDE2IDE4IDE2IDIwIDE4IDIwIDE4IDIyIDIwIDIyIDIwIDIwIDIyIDIwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MTMiIC8+PHJlY3QgeD0iMzAiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIC8+PHJlY3QgeD0iMjIiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMTUiIC8+PHBvbHlnb24gcG9pbnRzPSIzMCAxNCAyOCAxNCAyOCAxNiAyNiAxNiAyNiAxOCAyOCAxOCAyOCAyMCAzMCAyMCAzMCAxOCAzMiAxOCAzMiAxNiAzMCAxNiAzMCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiAvPjxyZWN0IHg9''@;'; put 'put ''IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE3IiAvPjxwb2x5Z29uIHBvaW50cz0iMTQgMjggMTYgMjggMTYgMjYgMTggMjYgMTggMjQgMTYgMjQgMTYgMjAgMTQgMjAgMTQgMjgiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIgLz4nKSxlLkNsclNoYXBlVXNiPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC4yOSwxMS40YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxYTIuODksMi44OSwwLDAsMCwyLjc1LDIuMDksMywzLDAsMCwwLDAtNS45MSwyLjksMi45''@;'; put 'put ''LDAsMCwwLTIuNjcsMS44MkgxNS41N2EzLjQ5LDMuNDksMCwwLDAtMywxLjY2bC0zLDQuODNoMi4zNlptNS0yLjk0QTEuMzYsMS4zNiwwLDEsMSwxOCw5LjgxLDEuMzIsMS4zMiwwLDAsMSwxOS4zMyw4LjQ2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTM0LjMsMTcuMzdsLTYuMTEtMy42NmEuNy43LDAsMCwwLS43LDAsLjcxLjcxLDAsMCwwLS4zNi42MVYxN0g2LjkyYTIuMzMsMi4zMywwLDAsMSwuMzIsMS4xNywyLjQ3LDIuNDcsMCwxLDEtMi40Ny0yLjQ2LDIuMzcsMi4zNywwLDAsMSwxLjE1LjNsLjkzLTEuNzZBNC40NCw0''@;'; put 'put ''LjQ0LDAsMSwwLDkuMTUsMTloMy41OGw0LjE3LDYuNjVhMy40OSwzLjQ5LDAsMCwwLDMsMS42NmgxLjY2djEuMjhhLjc5Ljc5LDAsMCwwLC44Ljc5aDQuNDlhLjc5Ljc5LDAsMCwwLC44LS43OXYtNC40YS43OS43OSwwLDAsMC0uOC0uOEgyMi4zNGEuOC44LDAsMCwwLS44Ljh2MS4xMkgxOS44''@;'; put 'put ''OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTUuMDksMTloMTJ2Mi42NmEuNjkuNjksMCwwLDAsLjM2LjYxLjY3LjY3LDAsMCwwLC4zNC4wOS42NS42NSwwLDAsMCwuMzYtLjFsNi4xMS0zLjY2YS42OS42OSwwLDAsMCwuMzQtLjZBLjcxLjcxLDAsMCwwLDM0LjMsMTcuMzdaTTIzLjE0LDI1''@;'; put 'put ''SDI2djIuOEgyMy4xNFptNS4zOS00LjU2VjE1LjU1bDQsMi40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zNC43MiwxNy4zN2wtNS41MS0zLjMxYS43MS43MSwwLDAsMC0xLjA3LjZWMTdIMTEuNzdsMy41Mi01LjZhMS40OSwxLjQ5''@;'; put 'put ''LDAsMCwxLDEuMjgtLjcyaDEuNjRhMi40MSwyLjQxLDAsMCwwLDIuMjUsMS42MSwyLjQ4LDIuNDgsMCwwLDAsMC00Ljk1LDIuMzgsMi4zOCwwLDAsMC0yLjEzLDEuMzRIMTYuNTdhMy40OSwzLjQ5LDAsMCwwLTMsMS42Nkw5LjQxLDE3SDhhMy40NiwzLjQ2LDAsMSwwLC4wOCwyaDUuNjRsNC4x''@;'; put 'put ''NSw2LjYyYTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMi41OXYuOTJoNC40VjIzLjhoLTQuNHYxLjQ4SDIwLjg4YTEuNTEsMS41MSwwLDAsMS0xLjI4LS43MkwxNi4xMSwxOWgxMnYyLjI4YS43LjcsMCwwLDAsLjM2LjYxLjcyLjcyLDAsMCwwLC4zNC4wOS42NS42NSwwLDAsMCwuMzYtLjFsNS41''@;'; put 'put ''Mi0zLjMxYS43LjcsMCwwLDAsMC0xLjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVSYWRhcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMThjMCw3LjctNi4zLDE0LTE0LDE0Yy03LjcsMC0xNC02LjMtMTQtMTRDNCwxMC42''@;'; put 'put ''LDkuNyw0LjUsMTcuMSw0djMuN2MtNS43LDAuNS05LjksNS41LTkuNCwxMS4yczUuNSw5LjksMTEuMiw5LjRcblx0YzUuMy0wLjUsOS40LTQuOSw5LjQtMTAuM2gtMmMwLDQuNi0zLjcsOC4zLTguMyw4LjNzLTguMy0zLjctOC4zLTguM2MwLTQuMiwzLjEtNy44LDcuMy04LjN2NC40Yy0xLjgs''@;'; put 'put ''MC40LTMuMSwyLTMuMSwzLjlcblx0YzAsMi4yLDEuOCw0LDQsNHM0LTEuOCw0LTRjMC0xLjgtMS4zLTMuNC0zLTMuOFYyLjFDMTguNiwyLDE4LjMsMiwxOCwyQzkuMiwyLDIsOS4yLDIsMThzNy4yLDE2LDE2LDE2czE2LTcuMiwxNi0xNkgzMnogTTIwLDE4XG5cdGMwLDEuMS0wLjksMi0yLDJz''@;'; put 'put ''LTItMC45LTItMnMwLjktMiwyLTJTMjAsMTYuOSwyMCwxOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMiwxOGMwLDcuNy02LjIsMTQtMTQsMTRTNCwyNS44LDQsMThjMC03LjQsNS43LTEzLjUsMTMuMS0xNHYzLjdjLTUuNywwLjUt''@;'; put 'put ''OS44LDUuNS05LjMsMTEuMnM1LjUsOS44LDExLjIsOS4zXG5cdFx0YzUuMy0wLjUsOS4zLTQuOSw5LjMtMTAuMmgtMmMwLDQuNi0zLjcsOC4zLTguMyw4LjNTOS43LDIyLjYsOS43LDE4YzAtNC4yLDMuMi03LjgsNy4zLTguMnY0LjRjLTIuMSwwLjYtMy40LDIuNy0yLjksNC45XG5cdFx0YzAu''@;'; put 'put ''NiwyLjEsMi43LDMuNCw0LjksMi45YzIuMS0wLjYsMy40LTIuNywyLjktNC45Yy0wLjQtMS40LTEuNS0yLjUtMi45LTIuOVYyYy0wLjQsMC0wLjcsMC0xLjEsMGMtOC44LDAtMTYsNy4yLTE2LDE2XG5cdFx0YzAsOC44LDcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZjMCwwLDAsMCwwLDBIMzJ6''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVJbmR1Y3Rvcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuMzEsMjUuODFjLTEuNzUsMC0zLTIuNDktMy02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAs''@;'; put 'put ''MC0zLjc5LDBBMTIuNzksMTIuNzksMCwwLDEsMjEsMTkuNzZjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuNzksMTIuNzksMCwwLDEsMS43Mi02LjcsMi41NywyLjU3LDAsMCwwLTMuNzksMCwxMi43OSwxMi43OSwwLDAsMSwxLjcyLDYuN2MwLDMuNTYtMS4yMyw2LTMsNnMtMy0y''@;'; put 'put ''LjQ5LTMtNmExMi44OCwxMi44OCwwLDAsMSwxLjcxLTYuNywyLjcsMi43LDAsMCwwLTEuODktLjg3QzcuMSwxMi4xOSw1LjY5LDEzLjcsNSwxNmwtLjIzLjdIMmExLDEsMCwwLDEsMC0ySDMuMjljMS4xLTIuODMsMy4wNi00LjU1LDUuMjQtNC41NWE0LjY3LDQuNjcsMCwwLDEsMy4xNiwxLjMy''@;'; put 'put ''LDQuNjIsNC42MiwwLDAsMSwzLjE1LTEuMzJBNC42NSw0LjY1LDAsMCwxLDE4LDExLjUxYTQuNDMsNC40MywwLDAsMSw2LjMxLDAsNC42Nyw0LjY3LDAsMCwxLDMuMTYtMS4zMmMyLjE4LDAsNC4xNCwxLjcyLDUuMjQsNC41NUgzNGExLDEsMCwwLDEsMCwySDMxLjI4bC0uMjMtLjdjLS43NC0y''@;'; put 'put ''LjM0LTIuMTUtMy44NS0zLjU4LTMuODVhMi43LDIuNywwLDAsMC0xLjg5Ljg3LDEyLjg4LDEyLjg4LDAsMCwxLDEuNzEsNi43QzI3LjI5LDIzLjMyLDI2LjA3LDI1LjgxLDI0LjMxLDI1LjgxWk0xOCwxNC45M2ExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4z''@;'; put 'put ''Mi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwxOCwxNC45M1ptNi4zMSwwYTExLjcxLDExLjcxLDAsMCwwLTEsNC44M2MwLDIuNTQuNjYsMy43NSwxLDQsLjMyLS4yNywxLTEuNDgsMS00QTExLjcxLDExLjcxLDAsMCwwLDI0LjMxLDE0LjkzWm0tMTIuNjIsMGExMS43MSwxMS43''@;'; put 'put ''MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwxMS42OSwxNC45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVSZXNpc3Rvcj0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMjkuNDMsMjYuMzRoMEExLjQ3LDEuNDcsMCwwLDEsMjgsMjUuMjJMMjQuODYsMTMuMTUsMjEuNzQsMjUuMjJhMS40OSwxLjQ5LDAsMCwxLTEuNDUsMS4xMmgwYTEuNDksMS40OSwwLDAsMS0xLjQ2LTEuMTJMMTUuNzEsMTMuMTUsMTIuNiwyNS4yMmExLjUxLDEuNTEs''@;'; put 'put ''MCwwLDEtMi45MSwwTDYuNTcsMTMuMTUsNS4yMiwxOC4zN0gyYTEsMSwwLDAsMSwwLTJIMy42N2wxLjQ1LTUuNTlBMS40OCwxLjQ4LDAsMCwxLDYuNTcsOS42NmgwQTEuNDcsMS40NywwLDAsMSw4LDEwLjc4bDMuMTIsMTIuMDcsMy4xMi0xMi4wN2ExLjQ5LDEuNDksMCwwLDEsMS40NS0xLjEy''@;'; put 'put ''aDBhMS40OSwxLjQ5LDAsMCwxLDEuNDYsMS4xMmwzLjEyLDEyLjA3LDMuMTItMTIuMDdhMS41LDEuNSwwLDAsMSwyLjksMGwzLjEyLDEyLjA3LDEuMzUtNS4yMkgzNGExLDEsMCwwLDEsMCwySDMyLjMzbC0xLjQ1LDUuNTlBMS40OCwxLjQ4LDAsMCwxLDI5LjQzLDI2LjM0WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUNhcGFjaXRvcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUsMzQuMDZhMSwxLDAsMCwxLTEtMVYzLjE1YTEsMSwwLDEsMSwyLDBWMzMuMDZBMSwxLDAsMCwxLDE1LDM0LjA2WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2QTEsMSwwLDAsMSwyMSwzNC4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0xNC40NiwxOUgzYTEsMSwwLDAsMSwwLTJIMTQuNDZhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOUgyMS41NGExLDEsMCwwLDEsMC0ySDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlU3F1aWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDdhMSwxLDAsMCwxLTEtMVYzLjE5YTEsMSwwLDAsMSwyLDBWNkExLDEsMCwwLDEsMTgsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNGExLDEsMCwwLDEtMS0xVjMwYTEsMSwwLDAsMSwyLDB2M0ExLDEsMCwwLDEsMTgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNNy40MSwxOGwxLjc4LTEuNzdhMSwxLDAsMSww''@;'; put 'put ''LTEuNDItMS40Mkw2LDE2LjU5LDQuMjMsMTQuODFhMSwxLDAsMSwwLTEuNDIsMS40Mkw0LjU5LDE4LDIuODEsMTkuNzdhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNzEtLjI5TDYsMTkuNDFsMS43NywxLjc4YTEsMSwwLDAsMCwxLjQyLDAsMSwxLDAsMCww''@;'; put 'put ''LDAtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik02LDEzLjc2bC4zNi0uMzZhMywzLDAsMCwxLDIuMTEtLjg4LDExLDExLDAsMCwxLDE5LDAsMywzLDAsMCwxLDIuMTIuODhsLjM2LjM2LjItLjJhMTMsMTMsMCwwLDAtMjQuNCww''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMwLDIyLjI0bC0uMzYuMzZhMywzLDAsMCwxLTIuMTIuODgsMTEsMTEsMCwwLDEtMTksMCwzLDMsMCwwLDEtMi4xMi0uODhMNiwyMi4yNGwtLjIuMmExMywxMywwLDAsMCwyNC40LDBaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDEsMThsMS43OC0xLjc3YTEsMSwwLDAsMC0xLjQyLTEuNDJMMzAsMTYuNTlsLTEuNzctMS43OGExLDEsMCwxLDAtMS40MiwxLjQyTDI4LjU5LDE4bC0xLjc4LDEuNzdhMSwxLDAsMCwwLDAs''@;'; put 'put ''MS40MiwxLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNzEtLjI5TDMwLDE5LjQxbDEuNzcsMS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlSG9zdEdyb3VwPSgw''@;'; put 'put ''LGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMS4wOCwzNGgtMTRBMS4wOCwxLjA4LDAsMCwxLDYsMzNWMTJhMS4wOCwxLjA4LDAsMCwxLDEuMDgtMS4wOGgxNEExLjA4LDEuMDgsMCwwLDEsMjIuMTYsMTJWMzNBMS4wOCwxLjA4LDAsMCwxLDIxLjA4LDM0Wk04LjE2LDMxLjg4SDIwVjEzSDgu''@;'; put 'put ''MTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxyZWN0IHg9IjEwLjA4IiB5PSIxNC45NiIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI2LjEsMjcuODFo''@;'; put 'put ''LTJWOWgtMTJWN2gxM2ExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG48cGF0aCBkPSJNMzAuMDgsMjNoLTJWNWgtMTFWM2gxMmExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQiIC8+PHJlY3QgeD0iMTMuMDgiIHk9IjI3Ljg4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyLjE2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cblxuPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE1LjA4LDMxIEwx''@;'; put 'put ''LjA4LDMxIEMwLjUxMzQyNzE5NywzMS4wMDE1NTY0IDAuMDQxOTY2Mzc2NSwzMC41NjUwMTg2IDAsMzAgTDAsOSBDMCw4LjQwMzUzMjQ3IDAuNDgzNTMyNDcsNy45MiAxLjA4LDcuOTIgTDE1LjA4LDcuOTIgQzE1LjY3NjQ2NzUsNy45MiAxNi4xNiw4LjQwMzUzMjQ3IDE2LjE2LDkgTDE2LjE2''@;'; put 'put ''LDMwIEMxNi4xMTgwMzM2LDMwLjU2NTAxODYgMTUuNjQ2NTcyOCwzMS4wMDE1NTY0IDE1LjA4LDMxIFogTTQuMDgsMTEuOTYgTDQuMDgsMTMuOTYgTDEyLjA4LDEzLjk2IEwxMi4wOCwxMS45NiBMNC4wOCwxMS45NiBaIE03LjA4LDI0Ljg4IEw3LjA4LDI3LjA0IEw5LjA4LDI3LjA0IEw5LjA4''@;'; put 'put ''LDI0Ljg4IEw3LjA4LDI0Ljg4IFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjAuMSwyNC44MSBMMTguMSwyNC44MSBMMTguMSw2IEw2LjEsNiBMNi4xLDQgTDE5LjEsNCBDMTkuNjUyMjg0Nyw0IDIwLjEsNC40NDc3MTUyNSAyMC4xLDUg''@;'; put 'put ''TDIwLjEsMjQuODEgWiIgLz5cbjxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNC4wOCwyMCBMMjIuMDgsMjAgTDIyLjA4LDIgTDExLjA4LDIgTDExLjA4LDAgTDIzLjA4LDAgQzIzLjYzMjI4NDcsMCAyNC4wOCwwLjQ0NzcxNTI1IDI0LjA4LDEgTDI0''@;'; put 'put ''LjA4LDIwIFoiIC8+JyksZS5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjA2LDMwYTEsMSwwLDAsMS0xLTFWOGgtMmExLDEsMCwwLDEsMC0yaDRWMjlBMSwxLDAsMCwxLDYuMDYsMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzAuMDYsMjdoLTI1VjloMjVhMywzLDAsMCwxLDMsM1YyNEEzLDMsMCwwLDEsMzAuMDYsMjdabS0yMy0yaDIzYTEsMSwwLDAsMCwxLTFWMTJhMSwxLDAsMCwwLTEtMWgtMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMjAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjIyLjA2IiB5PSIxNCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE5LjA2LDIyaC04VjIwaDdWMTRoMnY3QTEsMSwwLDAsMSwxOS4wNiwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+JyksZS5DbHJTaGFwZU5vZGVHcm91cD0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMzMuNTMsMjEuNThsLTQuOTQtMi44M1YxMy4wOWExLDEsMCwwLDAtLjUxLS44N0wyMi42NCw5LjFhMSwxLDAsMCwwLTEsMEwxNi4yLDEyLjIyYTEsMSwwLDAsMC0uNTEuODd2NS42NmwtNC45NCwyLjgzYTEsMSwwLDAsMC0uNS44N3Y2LjI0YTEsMSwwLDAsMCwuNS44''@;'; put 'put ''Nmw1LjQ1LDMuMTJhMSwxLDAsMCwwLDEsMGw0Ljk1LTIuODMsNC45NSwyLjgzYTEsMSwwLDAsMCwuNS4xNCwxLDEsMCwwLDAsLjQ5LS4xNGw1LjQ1LTMuMTJhMSwxLDAsMCwwLC41LS44NlYyMi40NUExLDEsMCwwLDAsMzMuNTMsMjEuNThaTTIyLjE0LDExLjEybDQuNDUsMi41NVYxOWwtNC40''@;'; put 'put ''NiwyLjU2LTQuNDQtMi42VjEzLjY3Wk0xNi42OSwzMC42NWwtNC40NC0yLjU0VjIzbDQuNjgtMi42OCw0LjQsMi41N1YyOFpNMzIsMjguMTFsLTQuNDQsMi41NEwyMi45MywyOFYyMi45M2w0LjQ2LTIuNTdMMzIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIvPlxuICA8cGF0aCBkPSJNNywyNy40M2ExLDEsMCwwLDEtMS0xVjE5LjlBMSwxLDAsMCwxLDYuNSwxOWw0Ljk1LTIuODNWMTAuNTRhMSwxLDAsMCwxLC41LS44N2w1LjIxLTNhMSwxLDAsMCwxLDEuMzcuMzcsMSwxLDAsMCwxLS4zOCwxLjM3bC00LjcsMi42OHY1LjY2YTEsMSwwLDAsMS0u''@;'; put 'put ''NTEuODdMOCwyMC40OHY1Ljk1QTEsMSwwLDAsMSw3LDI3LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMsMjUuMDVhMSwxLDAsMCwxLTEtMVYxNy41M2ExLDEsMCwwLDEsLjUtLjg2bDUtMi44NFY4LjE3QTEsMSwwLDAsMSw4''@;'; put 'put ''LDcuMzFsNS4yNS0zYTEsMSwwLDAsMSwxLDEuNzRMOS40NSw4Ljc1djUuNjZhMSwxLDAsMCwxLS41MS44N0w0LDE4LjExdjUuOTRBMSwxLDAsMCwxLDMsMjUuMDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVOb2Rlcz0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTAuNSwzNC4yOSwyLDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk00LDI4LjIzLDEwLjUsMzIsMTcsMjguMjNWMjAuNzRMMTAuNSwxNyw0LDIwLjc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTI1LjUsMzQuMjksMTcsMjkuMzlWMTkuNThsOC41LTQuOSw4LjUsNC45djkuODFaTTE5LDI4LjIzLDI1LjUsMzIsMzIsMjguMjNWMjAuNzRMMjUuNSwxNywxOSwyMC43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0xOCwyMS4zMmwtOC41LTQuOVY2LjYxTDE4LDEuNzFsOC41LDQuOXY5LjgxWm0tNi41LTYuMDZMMTgsMTlsNi41LTMuNzVWNy43N0wxOCw0LDExLjUsNy43N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+JyksZS5DbHJTaGFwZU5hbWVzcGFjZT0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsNC4xOGExLDEsMCwxLDAtMSwxLjczbDYsMy40N1YyNi42MmwtNiwzLjQ3YTEsMSwwLDAsMC0uMzcsMS4zNiwxLDEsMCwwLDAsMS4zNy4zN2w3LTQuMDVWOC4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik05LjY4LDI5LjksNCwyNi42MlY5LjM4TDkuNjgsNi4xYTEsMSwwLDEsMC0xLTEuNzNMMiw4LjIzVjI3Ljc3bDYuNjgsMy44NmExLDEsMCwwLDAsMS4zNy0uMzdBMSwxLDAsMCwwLDkuNjgsMjkuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMCwxMlYyNGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJWMTJhMiwyLDAsMCwwLTItMkgxMkEyLDIsMCwwLDAsMTAsMTJabTcsMHY1SDEyVjEyWm0tNSw3aDV2NUgxMlptNyw1VjE5aDV2NVptNS03SDE5VjEyaDVaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVOb2RlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzMC42Niw3LDI0LjMzVjExLjY3TDE4LDUuMzRsMTEsNi4zM1YyNC4zM1pNOSwyMy4xOGw5LDUuMTcsOS01LjE3VjEyLjgyTDE4LDcuNjUsOSwxMi44Mloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksZS5DbHJTaGFwZVBvZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYsMzJIMTBhNiw2LDAsMCwxLTYtNlYxMGE2LDYsMCwwLDEsNi02SDI2YTYsNiwwLDAsMSw2LDZWMjZBNiw2LDAsMCwxLDI2LDMy''@;'; put 'put ''Wk0xMCw2YTQsNCwwLDAsMC00LDRWMjZhNCw0LDAsMCwwLDQsNEgyNmE0LDQsMCwwLDAsNC00VjEwYTQsNCwwLDAsMC00LTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjYuNTYsMTVIMTUuNDRBMS40MywxLjQzLDAsMCwwLDE0''@;'; put 'put ''LDE2LjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDE1LjQ0LDI2SDI2LjU2QTEuNDMsMS40MywwLDAsMCwyOCwyNC41NlYxNi40NEExLjQzLDEuNDMsMCwwLDAsMjYuNTYsMTVaTTI2LDI0SDE2VjE3SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTEyLjQsMTlIMTBWMTJIMjB2MS40aDJ2LTJBMS40MywxLjQzLDAsMCwwLDIwLjU2LDEwSDkuNDRBMS40MywxLjQzLDAsMCwwLDgsMTEuNDR2OC4xMkExLjQzLDEuNDMsMCwwLDAsOS40NCwyMWgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''Lz4nKSxlLkNsckNvbnRyb2xMdW49KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik04LDI0LjU5YTI1LjUsMjUuNSwwLDAsMCwyLjc1LjU5bDEuMjEtMS40MWEyNC4xMywyNC4xMywwLDAsMS00LS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik02LDI3LjUzVjEwLjNjMi45LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhzOS4xLS40NSwxMi0xLjg4djUuMTFjLS45MS44Mi01LDIuMTMtMTIsMi4xM0EzNC44MSwzNC44MSwwLDAsMSw4LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40NiwwLDkuMTMt''@;'; put 'put ''LjQ1LDEyLTEuOTF2My4yM2gyVjhoMHMwLDAsMC0uMDdjMC0zLjM1LTguOC00LjI1LTE0LTQuMjVTNCw0LjU4LDQsNy45M3YxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3Ljg0LDYsMjcuNTNaTTE4LDUuNjhjNy4xNSwwLDExLjUzLDEuNDQs''@;'; put 'put ''MTIsMi4yNS0uNDYuODEtNC44NCwyLjI1LTEyLDIuMjVTNi4zMSw4LjY5LDYsOEM2LjMxLDcuMTgsMTAuNzEsNS42OCwxOCw1LjY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUu''@;'; put 'put ''NDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAs''@;'; put 'put ''MSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuXG4gIDxwYXRoIGQ9Ik04LDI0LjU5YTI1LjUsMjUuNSwwLDAsMCwyLjc1LjU5bDEuMjEtMS40MWEyNC4xMywyNC4xMywwLDAsMS00LS44M1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzIuMDksMjJIMTUuNDZsLTUuNDEsNi4zMUwxNS40OSwzNGgxNi42YTIsMiwwLDAsMCwyLTJWMjMuOTNBMiwyLDAsMCwwLDMyLjA5LDIyWm0wLDEwSDE2LjM0bC0zLjU5LTMu''@;'; put 'put ''NzdMMTYuMzgsMjRIMzIuMDl2OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE4LDE3LjU0QTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNWMThhNDAuODYsNDAuODYsMCwwLDAsMTAsMS4xNmMzLjQ2LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTMuMjJhNy4zMiw3LjMyLDAsMCwx''@;'; put 'put ''LTIsLjI4djEuOTFDMjkuMDksMTYuMjMsMjUsMTcuNTQsMTgsMTcuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgsMTIsMS44OGE0Ny42Niw0''@;'; put 'put ''Ny42NiwwLDAsMCw3LjA5LS41Miw3LjQ1LDcuNDUsMCwwLDEtMS41MS0xLjgsNDcuNCw0Ny40LDAsMCwxLTUuNTguMzJDMTAuNzEsMTAuMTgsNi4zMSw4LjY5LDYsOGMuMzItLjgsNC43Mi0yLjMsMTItMi4zLDEuNjYsMCwzLjE2LjA4LDQuNTEuMjFhNy41Niw3LjU2LDAsMCwxLC4yOS0yYy0x''@;'; put 'put ''LjctLjE3LTMuMzgtLjI0LTQuOC0uMjQtNS4yLDAtMTQsLjktMTQsNC4yNXYxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3Ljg0LDYsMjcuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1i''@;'; put 'put ''YWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIx''@;'; put 'put ''LTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIi8+PHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4aC41OWEzLjU5LDMuNTksMCwwLDEsLjMyLTJIMThDMTAuNzEsMTAuMTgsNi4zMSw4LjY5LDYsOGMuMzItLjgsNC43Mi0yLjMsMTItMi4zLDEuMjIsMCwyLjM1LjA1LDMu''@;'; put 'put ''NDEuMTJsMS4xLTEuOTFjLTEuNi0uMTUtMy4xNy0uMjEtNC41MS0uMjEtNS4yLDAtMTQsLjktMTQsNC4yNXYxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3Ljg0LDYsMjcuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNOCwxNi4zM1YxOGE0MC44Niw0MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlYxNS40SDMwYy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEsOCwxNi4z''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwx''@;'; put 'put ''LjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cblxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjda''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4y''@;'; put 'put ''LS44MiwxNC0zLjgyVjEwLjcyYy0yLjIxLDMuMzYtMTAuNDksMy40Ni0xNCwzLjQ2QTQyLjEyLDQyLjEyLDAsMCwxLDgsMTMuMTFWMTFhNDAuNTksNDAuNTksMCwwLDAsMTAsMS4xNGM1LDAsMTMuMjgtLjgzLDE0LTMuODhWNy44M2gwYy0uMTktMy4yNy04Ljg0LTQuMTUtMTQtNC4xNVM0LjIx''@;'; put 'put ''LDQuNTYsNCw3LjgzSDR2MTkuN2MwLDIuMTYsMy42NCwzLjMsNy42MywzLjg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEyNS43OSwyNS43OSwwLDAsMCwzLjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDgu''@;'; put 'put ''NzEsMjYuMjcsOCwyNi4wOFpNMzMuMDksMzJhMSwxLDAsMCwxLTEsMUgxNS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwx''@;'; put 'put ''LDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIxSDMyVjE3LjMyYy0xLjksMi45My0xMC40NiwzLjMtMTQsMy4zQTQyLjQzLDQyLjQzLDAsMCwxLDgsMTkuNTZW''@;'; put 'put ''MTcuODhBNDAuNTksNDAuNTksMCwwLDAsMTgsMTljNSwwLDEzLjItLjgyLDE0LTMuODJ2LTJhNy4zNCw3LjM0LDAsMCwxLTQuMTIsMCwzOS40NywzOS40NywwLDAsMS05Ljg4LDFBNDIuMTIsNDIuMTIsMCwwLDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0LDQ3Ljc2LDQ3''@;'; put 'put ''Ljc2LDAsMCwwLDcuMDktLjUyQTcuNDUsNy40NSwwLDAsMSwyMi44LDMuOTJjLTEuNy0uMTctMy4zOC0uMjQtNC44LS4yNC01LjE0LDAtMTMuNzkuODgtMTQsNC4xNUg0djE5LjdjMCwyLjE2LDMuNjQsMy4zLDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3YTMsMywwLDAsMCwzLTNWMjMuOTNB''@;'; put 'put ''MywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRhMjUuNzksMjUuNzksMCwwLDAsMy40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAsMS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45MiwyM0gzMi4wOWExLDEsMCwwLDEs''@;'; put 'put ''MSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxu''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIxSDMyVjE3LjMyYy0xLjksMi45My0xMC40Niwz''@;'; put 'put ''LjMtMTQsMy4zQTQyLjQzLDQyLjQzLDAsMCwxLDgsMTkuNTZWMTcuODhBNDAuNTksNDAuNTksMCwwLDAsMTgsMTljNC44NSwwLDEyLjgtLjc5LDEzLjkxLTMuNjJIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTIuNzMtMS4yM0gxOEE0Mi4xMiw0Mi4xMiwwLDAsMSw4LDEzLjExVjExYTQwLjU5LDQw''@;'; put 'put ''LjU5LDAsMCwwLDEwLDEuMTRoLjU5YTMuNjEsMy42MSwwLDAsMSwuNDYtMi4yOWwzLjQ2LTZjLTEuNi0uMTUtMy4xNy0uMjEtNC41MS0uMjEtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4xNiwzLjY0LDMuMyw3LjYzLDMuODRsMi44NCwzLC41OS42MmgxN2EzLDMsMCwwLDAs''@;'; put 'put ''My0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4yNCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwzMmExLDEsMCwwLDEtMSwxSDE1LjkyTDExLjQsMjguMjMsMTUuOTIsMjNIMzIuMDlh''@;'; put 'put ''MSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkx''@;'; put 'put ''TDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLGUuQ2xyU2hhcGVNZWRpYUNoYW5nZXI9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTYsMzBWNkgzMFYzMFoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI0IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJl''@;'; put 'put ''Y3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC00Ii8+XG4gIDxwYXRoIGQ9Ik0yNy4yMiwxMEgyMHY0YS44LjgsMCwxLDAsMS41OSwwVjExLjZoNS42M2EuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4LjE0IiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE0IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSI4Ljgx''@;'; put 'put ''IiB5PSIxOCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC05Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjI2IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cblxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyMCIg''@;'; put 'put ''eT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE0IiB3''@;'; put 'put ''aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjI2IiB3''@;'; put 'put ''aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTIwLDE0YS44LjgsMCwxLDAsMS41OSwwVjExLjZIMjVBNy43NCw3Ljc0LDAsMCwxLDIzLjY2LDEwSDIwWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDZWNkgyMi41VjZhNy4zNyw3LjM3LDAsMCwxLC4yOC0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCww''@;'; put 'put ''LDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuMzcsNy4zNywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIg''@;'; put 'put ''Y3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjI0IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9''@;'; put 'put ''IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIg''@;'; put 'put ''d2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMwLDE1LjRWMzBINlY2SDIxLjI3bDEuMTgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4''@;'; put 'put ''djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01Ljcy''@;'; put 'put ''LDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFpNMTcsMjhIOC44MVYy''@;'; put 'put ''NkgxN1ptMC00SDguODFWMjJIMTdabTAtNEg4LjgxVjE4SDE3Wm0wLTRIOC44MVYxNEgxN1ptMC00SDguODFWMTBIMTdaTTIyLDI0SDIwVjIyaDJabTAtNEgyMFYxOGgyWm00LDRIMjRWMjJoMlptMC00SDI0VjE4aDJabTAtNkgyMFYxMGg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS00LTEuMTZWMTRIMjBWMTBoMy42NkE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YTcuMzcsNy4zNywwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwx''@;'; put 'put ''LDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVpNMTcsMjhIOC44MVYyNkgxN1ptMC00SDguODFWMjJIMTdabTAtNEg4LjgxVjE4SDE3Wm0wLTRIOC44MVYxNEgxN1ptMC00SDguODFWMTBI''@;'; put 'put ''MTdaTTIyLDI0SDIwVjIyaDJabTAtNEgyMFYxOGgyWm00LDRIMjRWMjJoMlptMC00SDI0VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTIyLjIzLDE1LjRhMy42OCwzLjY4LDAsMCwxLTMuMTgtNS41MUwyMi40NSw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAs''@;'; put 'put ''MiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlpt''@;'; put 'put ''NCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCww''@;'; put 'put ''LDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgJyksZS5DbHJTaGFwZVRhcGVEcml2ZT0oMCxhLmNsckljb25TVkcp''@;'; put 'put ''KCdcbiAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTMu''@;'; put 'put ''MzMsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTMsNC41MkE0LjUzLDQuNTMsMCwwLDAsMTMuMzMsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45My0yLjkyQTIuOTIsMi45MiwwLDAsMSwxMy4zMywyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMy42MiwxMy4zNWE0LjUyLDQuNTIsMCwxLDAsNC41Miw0LjUyQTQuNTMsNC41MywwLDAsMCwyMy42MiwxMy4zNVptMCw3LjQ0YTIuOTIsMi45MiwwLDEsMSwyLjkyLTIuOTJBMi45MiwyLjkyLDAsMCwxLDIzLjYyLDIwLjc5WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyOS4zNFYxMEg3QTEsMSwwLDAsMCw2LDExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQu''@;'; put 'put ''NTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4LjgxLDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAsMSwxNi4yNiwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICA8cGF0aCBkPSJNMTkuMSwxNy44N2E0LjUyLDQuNTIsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCwxOS4xLDE3Ljg3Wm03LjQ0LDBBMi45MiwyLjkyLDAsMSwxLDIzLjYyLDE1LDIuOTIsMi45MiwwLDAsMSwyNi41NCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzIsMTMuMjJWMjhINFY4SDIyLjc4YTcuMzcsNy4zNywwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNjUsNy42NSww''@;'; put 'put ''LDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNNiwxMVYyMy41NUg4VjEySDI1LjUxYTcuNjYsNy42NiwwLDAsMS0xLjg1LTJIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRo''@;'; put 'put ''IGQ9Ik04LjgxLDE3Ljg3YTQuNTMsNC41MywwLDEsMCw0LjUyLTQuNTJBNC41Myw0LjUzLDAsMCwwLDguODEsMTcuODdabTcuNDUsMEEyLjkzLDIuOTMsMCwxLDEsMTMuMzMsMTUsMi45MywyLjkzLDAsMCwxLDE2LjI2LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTcsMTBhMSwxLDAsMCwwLTEsMVYyMy41NUg4VjEySDE4LjU3QTMuNywzLjcsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOEg0VjhIMjAuMTRsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNMjIuMDksMTUuMzlhMy42NSwzLjY1LDAsMCwxLTEuOC0uNTUsNC41MSw0LjUxLDAsMSwwLDcuMTEuNTZIMjUuMTdhMi45MiwyLjkyLDAsMSwxLTMuMDgsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVk''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cblxuICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTMwLDI0SDZWMTJIMzBaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xMi4yMSwyM2E1LDUsMCwxLDAtNS01QTUsNSwwLDAsMCwxMi4yMSwyM1ptMC03YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDEyLjIxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8''@;'; put 'put ''cGF0aCBkPSJNMjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cblxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSww''@;'; put 'put ''LTUtNUE1LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0yMy43OSwyM2E1LDUsMCwxLDAtNS01QTUsNSwwLDAs''@;'; put 'put ''MCwyMy43OSwyM1ptMC03YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMwLDEzLjVWMjRINlYxMkgyNS41MWE3LjQ5LDcuNDksMCwwLDEtMy02SDRB''@;'; put 'put ''MiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTcuMiwxOGE1LDUsMCwxLDAsNS01QTUsNSwwLDAsMCw3LjIsMThabTcsMGEyLDIsMCwxLDEtMi0yQTIsMiwwLDAsMSwxNC4yMiwxOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTE4Ljc4LDE4YTUsNSwwLDEsMCw5LjI3LTIuNkgyMi4yM2EzLjcxLDMuNzEsMCwwLDEtMi4xNy0uNzFBNSw1LDAsMCwwLDE4Ljc4LDE4Wm01LTJhMiwyLDAsMSwx''@;'; put 'put ''LTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMwVjI0SDZWMTJIMTguNTdhMy42NSwzLjY1LDAsMCwxLC40OC0yLjExTDIxLjI5LDZINEEyLDIs''@;'; put 'put ''MCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLGUuQ2xyU2hhcGVB''@;'; put 'put ''bmltYXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjE2LDMxLjcxYTQuNCw0LjQsMCwwLDEtNC42NC0xQTQuMzQsNC4zNCwwLDAsMSw0LjIzLDI3LjZhNC40MSw0LjQxLDAsMCwxLC4xOC0xLjIsMTEuNjEsMTEuNjEsMCwwLDEtMS0yLjU2LDYuNCw2LjQsMCwwLDAsOS4zMyw4''@;'; put 'put ''LjYzQTExLjU1LDExLjU1LDAsMCwxLDEwLjE2LDMxLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjQxLDI3LjY4YTcuNjEsNy42MSwwLDAsMS05LjA4LTEuMjYsNy41OCw3LjU4LDAsMCwxLTEuMjctOS4wNiwxNC4yNiwx''@;'; put 'put ''NC4yNiwwLDAsMS0uMzctMi44NSw5LjU4LDkuNTgsMCwwLDAsLjIyLDEzLjMzLDkuNjMsOS42MywwLDAsMCwxMy4zNS4yMkExNC40NiwxNC40NiwwLDAsMSwxOC40MSwyNy42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS42''@;'; put 'put ''NiwyNi4yMWExMi4xLDEyLjEsMCwxLDEsOC41Ny0zLjU0aDBBMTIuMTEsMTIuMTEsMCwwLDEsMjEuNjYsMjYuMjFaTTIxLjY2LDRBMTAuMTEsMTAuMTEsMCwwLDAsMTEuNTQsMTQuMTFhMTAsMTAsMCwwLDAsMyw3LjE0LDEwLjEyLDEwLjEyLDAsMCwwLDE0LjMxLDBBMTAuMTEsMTAuMTEsMCww''@;'; put 'put ''LDAsMjEuNjYsNFptNy44NiwxOGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zLjUsMjMuNzdhNi40MSw2LjQxLDAsMCwwLDkuMzMsOC42N0ExMS42NSwxMS42NSwwLDAsMSwzLjUsMjMuNzdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik03LjY4LDE0LjUzYTkuNiw5LjYsMCwwLDAsMTMuNCwxMy43QTE0LjExLDE0LjExLDAsMCwxLDcuNjgsMTQuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS43''@;'; put 'put ''OCwyQTEyLjEyLDEyLjEyLDAsMSwxLDkuNjYsMTQuMTUsMTIuMTIsMTIuMTIsMCwwLDEsMjEuNzgsMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAnKSxlLkNsclNoYXBlQ2lDZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuNTMsMTkuODFhNy40''@;'; put 'put ''NSw3LjQ1LDAsMCwxLTEuNjUtLjE4LDEwLjQ4LDEwLjQ4LDAsMCwxLC43MiwyLjEzYy4zLDAsLjYxLDAsLjkzLDBhOS41Miw5LjUyLDAsMCwwLDMtLjQ5bC0uOTMtMS44MUE3LjY3LDcuNjcsMCwwLDEsMjMuNTMsMTkuODFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuICA8cGF0aCBkPSJNMTguMzYsMTcuODcsMTgsMTcuNDlhNy40LDcuNCwwLDAsMS0yLjItNS45Miw3LjMxLDcuMzEsMCwwLDEsMS41NC00TDE3LjI2LDlBMSwxLDAsMCwwLDE4LjE3LDEwaC4wOWExLDEsMCwwLDAsMS0uOTFMMTkuNiw1YTEsMSwwLDAsMC0uMjktLjc5QTEsMSww''@;'; put 'put ''LDAsMCwxOC41Miw0bC00LjA5LjM1YTEsMSwwLDAsMCwuMTcsMmwxLjI5LS4xMWE5LjQ1LDkuNDUsMCwwLDAtMi4wNSw1LjMyLDkuMjgsOS4yOCwwLDAsMCwyLjY3LDcuMjZsLjMxLjM3YTcuMzMsNy4zMywwLDAsMSwyLjA2LDQuOTEsNy4zOSw3LjM5LDAsMCwxLS4yNiwyLjQ3bDEuOC45MWE4''@;'; put 'put ''Ljc2LDguNzYsMCwwLDAsLjQ1LTMuNTFBOS4yOCw5LjI4LDAsMCwwLDE4LjM2LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMyLjQsMTcuOTEsMzEuMTksMThBOS42NSw5LjY1LDAsMCwwLDIzLjUzLDIuNDVhOS4zMyw5''@;'; put 'put ''LjMzLDAsMCwwLTMsLjQ5bC45MSwxLjhhNy42Nyw3LjY3LDAsMCwxLDkuNzYsNy4zOSw3LjU4LDcuNTgsMCwwLDEtMS42NSw0LjcybC4xLTEuNTRhMSwxLDAsMSwwLTItLjEzbC0uMjgsNC4wOGExLDEsMCwwLDAsLjMxLjc4Ljk0Ljk0LDAsMCwwLC42OS4yOGguMWw0LjA4LS40MmExLDEsMCww''@;'; put 'put ''LDAsLjktMS4xQTEsMSwwLDAsMCwzMi40LDE3LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTQuMDcsMjAuNDRoLjA4bDQuMDktLjM1YTEsMSwwLDEsMC0uMTctMmwtMS4zOS4xMmE3LjYzLDcuNjMsMCwwLDEsNC41Mi0xLjQ5''@;'; put 'put ''LDcuOSw3LjksMCwwLDEsMS42My4xOCwxMC4yMywxMC4yMywwLDAsMS0uNzEtMi4xM2MtLjMsMC0uNjEsMC0uOTIsMGE5LjY2LDkuNjYsMCwwLDAtNS45LDJsLjEyLTEuMzFhMSwxLDAsMCwwLS45Mi0xLjA4LDEsMSwwLDAsMC0xLjA4LjkxbC0uMzUsNC4wOGExLDEsMCwwLDAsMSwxLjA4WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE4LjQyLDI4LjIzbC00LjA5LjI3YTEsMSwwLDAsMCwuMTMsMkwxNiwzMC4zOWE3LjcxLDcuNzEsMCwwLDEtMTIuNTQtNiw3LjYsNy42LDAsMCwxLC4yOS0yTDIsMjEuNDZhOS41OSw5LjU5''@;'; put 'put ''LDAsMCwwLS40NywyLjk1QTkuNyw5LjcsMCwwLDAsMTcuMTksMzJsLS4xMiwxLjE4YTEsMSwwLDAsMCwuODksMS4xaC4xMWExLDEsMCwwLDAsMS0uOWwuNDItNC4wNmExLDEsMCwwLDAtMS4wNi0xLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLGUu''@;'; put 'put ''Q2xyU2hhcGVGaWxlU2hhcmUyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNSw0SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNS45MVYzMC4wOUExLjg5LDEuODksMCwwLDAsNy44MywzMkgyOC4xN0ExLjg3LDEuODcsMCwwLDAsMzAsMzAuMDlWOVpNMjQsNS43OCwyOC4yLDEwSDI0Wk04''@;'; put 'put ''LDMwVjZIMjJ2Nmg2VjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIyLDIxLjgxYTIuMTEsMi4xMSwwLDAsMC0xLjQ0LjYybC01LjcyLTIuNjZ2LS40NGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0aDBhMi4x''@;'; put 'put ''NCwyLjE0LDAsMCwwLS42NCwxLjQ4di4yM2wtNS42NCwyLjY2YTIuMDgsMi4wOCwwLDEsMC0uMDgsMi45NWwuMDgtLjA4LDUuNjcsMi42NnYuM0EyLjA5LDIuMDksMCwxLDAsMjIsMjEuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICBcbiAgPHBh''@;'; put 'put ''dGggZD0iTTI1LDQuMDZINy44M0ExLjg5LDEuODksMCwwLDAsNiw2VjMwLjE1YTEuODksMS44OSwwLDAsMCwxLjgzLDEuOTFIMjguMTdBMS44NywxLjg3LDAsMCwwLDMwLDMwLjE1VjlaTTIyLDI2YTIuMDksMi4wOSwwLDAsMS0yLjEtMi4wOHYtLjNMMTQuMjcsMjFsLS4wOC4wOGEyLjA4LDIu''@;'; put 'put ''MDgsMCwxLDEsLjA4LTIuOTVsNS42NC0yLjY2di0uMjNhMi4xNCwyLjE0LDAsMCwxLC42NC0xLjQ4aDBhMi4wOCwyLjA4LDAsMSwxLS4wNiwyLjk0bC01LjY2LDIuNjV2LjQ0bDUuNzIsMi42NkEyLjExLDIuMTEsMCwwLDEsMjIsMjEuODFsMCwwQTIuMDksMi4wOSwwLDAsMSwyMiwyNlptMi0x''@;'; put 'put ''NlY1Ljg0bDQuMiw0LjIyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuVGVjaG5vbG9neVNoYXBlcz17InJ1bGVyLXBlbmNpbCI6ZS5DbHJTaGFwZVJ1bGVyUGVuY2lsLCJwaG9uZS1oYW5kc2V0IjplLkNsclNoYXBlUGhvbmVIYW5kc2V0LCJuby13aWZp''@;'; put 'put ''IjplLkNsclNoYXBlTm9XaWZpLGluc3RhbGw6ZS5DbHJTaGFwZUluc3RhbGwsdW5pbnN0YWxsOmUuQ2xyU2hhcGVVbmluc3RhbGwsbGF5ZXJzOmUuQ2xyU2hhcGVMYXllcnMsYmxvY2s6ZS5DbHJTaGFwZUJsb2NrLCJibG9ja3MtZ3JvdXAiOmUuQ2xyU2hhcGVCbG9ja3NHcm91cCxidW5kbGU6''@;'; put 'put ''ZS5DbHJTaGFwZUJ1bmRsZSx3aWZpOmUuQ2xyU2hhcGVXaWZpLCJyYWNrLXNlcnZlciI6ZS5DbHJTaGFwZVJhY2tTZXJ2ZXIsImhhcmQtZGlzayI6ZS5DbHJTaGFwZUhhcmREaXNrLCJiYWNrdXAtcmVzdG9yZSI6ZS5DbHJTaGFwZUJhY2t1cFJlc3RvcmUsYmFja3VwOmUuQ2xyU2hhcGVCYWNr''@;'; put 'put ''dXAsZGV2aWNlczplLkNsclNoYXBlRGV2aWNlcyxrZXlib2FyZDplLkNsclNoYXBlS2V5Ym9hcmQsbW91c2U6ZS5DbHJTaGFwZU1vdXNlLGRhc2hib2FyZDplLkNsclNoYXBlRGFzaGJvYXJkLGhvc3Q6ZS5DbHJTaGFwZUhvc3Qsc3RvcmFnZTplLkNsclNoYXBlU3RvcmFnZSxjbHVzdGVyOmUu''@;'; put 'put ''Q2xyU2hhcGVDbHVzdGVyLGFwcGxpY2F0aW9uczplLkNsclNoYXBlQXBwbGljYXRpb25zLGJ1aWxkaW5nOmUuQ2xyU2hhcGVCdWlsZGluZyxjcHU6ZS5DbHJTaGFwZUNQVSxtZW1vcnk6ZS5DbHJTaGFwZU1lbW9yeSwiZGF0YS1jbHVzdGVyIjplLkNsclNoYXBlRGF0YUNsdXN0ZXIsInJlc291''@;'; put 'put ''cmNlLXBvb2wiOmUuQ2xyU2hhcGVSZXNvdXJjZVBvb2wsc2hpZWxkOmUuQ2xyU2hhcGVTaGllbGQsInNoaWVsZC1jaGVjayI6ZS5DbHJTaGFwZVNoaWVsZENoZWNrLCJzaGllbGQteCI6ZS5DbHJTaGFwZVNoaWVsZFgsaW1wb3J0OmUuQ2xyU2hhcGVJbXBvcnQsZXhwb3J0OmUuQ2xyU2hhcGVF''@;'; put 'put ''eHBvcnQsInVwbG9hZC1jbG91ZCI6ZS5DbHJTaGFwZVVwbG9hZENsb3VkLCJkb3dubG9hZC1jbG91ZCI6ZS5DbHJTaGFwZURvd25sb2FkQ2xvdWQscGx1Z2luOmUuQ2xyU2hhcGVQbHVnaW4sZmxvcHB5OmUuQ2xyU2hhcGVGbG9wcHksY29tcHV0ZXI6ZS5DbHJTaGFwZUNvbXB1dGVyLGRpc3Bs''@;'; put 'put ''YXk6ZS5DbHJTaGFwZURpc3BsYXksdGVybWluYWw6ZS5DbHJTaGFwZVRlcm1pbmFsLGNvZGU6ZS5DbHJTaGFwZUNvZGUsYXBwbGljYXRpb246ZS5DbHJTaGFwZUFwcGxpY2F0aW9uLGJhdHRlcnk6ZS5DbHJTaGFwZUJhdHRlcnksbW9iaWxlOmUuQ2xyU2hhcGVNb2JpbGUsdGFibGV0OmUuQ2xy''@;'; put 'put ''U2hhcGVUYWJsZXQsIm5ldHdvcmstZ2xvYmUiOmUuQ2xyU2hhcGVOZXR3b3JrR2xvYmUsIm5ldHdvcmstc2V0dGluZ3MiOmUuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3MsIm5ldHdvcmstc3dpdGNoIjplLkNsclNoYXBlTmV0d29ya1N3aXRjaCxyb3V0ZXI6ZS5DbHJTaGFwZVJvdXRlcix2bTpl''@;'; put 'put ''LkNsclNoYXBlVk0sInZtdy1hcHAiOmUuQ2xyU2hhcGVWTVdBcHAsY2VydGlmaWNhdGU6ZS5DbHJTaGFwZUNlcnRpZmljYXRlLGFyY2hpdmU6ZS5DbHJTaGFwZUFyY2hpdmUsdW5hcmNoaXZlOmUuQ2xyU2hhcGVVbmFyY2hpdmUsY29ubmVjdDplLkNsclNoYXBlQ29ubmVjdCxkaXNjb25uZWN0''@;'; put 'put ''OmUuQ2xyU2hhcGVEaXNjb25uZWN0LGxpbms6ZS5DbHJTaGFwZUxpbmssdW5saW5rOmUuQ2xyU2hhcGVVbmxpbmssImNsb3VkLW5ldHdvcmsiOmUuQ2xyU2hhcGVDbG91ZE5ldHdvcmssImNsb3VkLXNjYWxlIjplLkNsclNoYXBlQ2xvdWRTY2FsZSwiY2xvdWQtdHJhZmZpYyI6ZS5DbHJTaGFw''@;'; put 'put ''ZUNsb3VkVHJhZmZpYywiY29udHJvbC1sdW4iOmUuQ2xyQ29udHJvbEx1bixkZXBsb3k6ZS5DbHJTaGFwZURlcGxveSxoZWxpeDplLkNsclNoYXBlSGVsaXgsZmxhc2s6ZS5DbHJTaGFwZUZsYXNrLGFkbWluaXN0cmF0b3I6ZS5DbHJTaGFwZUFkbWluaXN0cmF0b3IsImhhcmQtZHJpdmUiOmUu''@;'; put 'put ''Q2xyU2hhcGVIYXJkRHJpdmUsImhhcmQtZHJpdmUtZGlza3MiOmUuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcyxudm1lOmUuQ2xyU2hhcGVOVk1lLHNzZDplLkNsclNoYXBlU1NELGJsdWV0b290aDplLkNsclNoYXBlQmx1ZXRvb3RoLCJibHVldG9vdGgtb2ZmIjplLkNsclNoYXBlQmx1ZXRvb3Ro''@;'; put 'put ''T2ZmLCJwcm9jZXNzLW9uLXZtIjplLkNsclNoYXBlUHJvY2Vzc09uVk0sImFzc2lnbi11c2VyIjplLkNsclNoYXBlQXNzaWduVXNlcixhdG9tOmUuQ2xyU2hhcGVBdG9tLCJiYXItY29kZSI6ZS5DbHJTaGFwZUJhckNvZGUsImNkLWR2ZCI6ZS5DbHJTaGFwZUNkRHZkLGNvbnRhaW5lcjplLkNs''@;'; put 'put ''clNoYXBlQ29udGFpbmVyLCJjb250YWluZXItdm9sdW1lIjplLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lLCJmaWxlLXNoYXJlIjplLkNsclNoYXBlRmlsZVNoYXJlLCJxci1jb2RlIjplLkNsclNoYXBlUXJDb2RlLHVzYjplLkNsclNoYXBlVXNiLHJhZGFyOmUuQ2xyU2hhcGVSYWRhcixjYXBh''@;'; put 'put ''Y2l0b3I6ZS5DbHJTaGFwZUNhcGFjaXRvcixzcXVpZDplLkNsclNoYXBlU3F1aWQsaW5kdWN0b3I6ZS5DbHJTaGFwZUluZHVjdG9yLHJlc2lzdG9yOmUuQ2xyU2hhcGVSZXNpc3RvciwiaG9zdC1ncm91cCI6ZS5DbHJTaGFwZUhvc3RHcm91cCwic3RvcmFnZS1hZGFwdGVyIjplLkNsclNoYXBl''@;'; put 'put ''U3RvcmFnZUFkYXB0ZXIsIm5vZGUtZ3JvdXAiOmUuQ2xyU2hhcGVOb2RlR3JvdXAsbm9kZXM6ZS5DbHJTaGFwZU5vZGVzLG5hbWVzcGFjZTplLkNsclNoYXBlTmFtZXNwYWNlLG5vZGU6ZS5DbHJTaGFwZU5vZGUscG9kOmUuQ2xyU2hhcGVQb2QsIm1lZGlhLWNoYW5nZXIiOmUuQ2xyU2hhcGVN''@;'; put 'put ''ZWRpYUNoYW5nZXIsInRhcGUtZHJpdmUiOmUuQ2xyU2hhcGVUYXBlRHJpdmUsYW5pbWF0aW9uOmUuQ2xyU2hhcGVBbmltYXRpb24sImNpLWNkIjplLkNsclNoYXBlQ2lDZCwiZmlsZS1zaGFyZS0yIjplLkNsclNoYXBlRmlsZVNoYXJlMn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5v''@;'; put 'put ''bG9neVNoYXBlcywic2VydmVyIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlcy5ob3N0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5vbG9neVNoYXBlcywiY29tbWFuZCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlRlY2hub2xvZ3lTaGFwZXMudGVy''@;'; put 'put ''bWluYWwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5UZWNobm9sb2d5U2hhcGVzLCJtb2JpbGUtcGhvbmUiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzLm1vYmlsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRlY2hub2xvZ3lTaGFwZXMsImxpY2Vuc2Ui''@;'; put 'put ''LCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzLmNlcnRpZmljYXRlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5vbG9neVNoYXBlcywiZGlzY29ubmVjdGVkIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlc1sibm8td2lmaSJd''@;'; put 'put ''KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5vbG9neVNoYXBlcywicmVjZWl2ZXIiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzWyJwaG9uZS1oYW5kc2V0Il0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5UZWNobm9sb2d5U2hhcGVzLCJkZXNpZ24i''@;'; put 'put ''LCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzWyJydWxlci1wZW5jaWwiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRlY2hub2xvZ3lTaGFwZXMsImRuYSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlRlY2hub2xvZ3lTaGFwZXMuaGVsaXgpKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZS5UZWNobm9sb2d5U2hhcGVzLCJmb2xkZXItc2hhcmUiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzWyJmaWxlLXNoYXJlIl0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5''@;'; put 'put ''SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoZS5UZWNobm9sb2d5U2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsbCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9k''@;'; put 'put ''dWxlIix7dmFsdWU6ITB9KSxlLlRleHRFZGl0U2hhcGVzPWUuQ2xyU2hhcGVTdXBlcnNjcmlwdD1lLkNsclNoYXBlU3Vic2NyaXB0PWUuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoPWUuQ2xyU2hhcGVJbmRlbnQ9ZS5DbHJTaGFwZU91dGRlbnQ9ZS5DbHJTaGFwZUhpZ2hsaWdodGVyPWUuQ2xyU2hh''@;'; put 'put ''cGVUZXh0Q29sb3I9ZS5DbHJTaGFwZUxhbmd1YWdlPWUuQ2xyU2hhcGVBbGlnblRvcD1lLkNsclNoYXBlQWxpZ25NaWRkbGU9ZS5DbHJTaGFwZUFsaWduQm90dG9tPWUuQ2xyU2hhcGVVbmRlcmxpbmU9ZS5DbHJTaGFwZVRleHQ9ZS5DbHJTaGFwZUFsaWduUmlnaHRUZXh0PWUuQ2xyU2hhcGVC''@;'; put 'put ''bG9ja1F1b3RlPWUuQ2xyU2hhcGVQYWludFJvbGxlcj1lLkNsclNoYXBlTnVtYmVyTGlzdD1lLkNsclNoYXBlQWxpZ25MZWZ0VGV4dD1lLkNsclNoYXBlSnVzdGlmeVRleHQ9ZS5DbHJTaGFwZUl0YWxpYz1lLkNsclNoYXBlQWxpZ25SaWdodD1lLkNsclNoYXBlQWxpZ25MZWZ0PWUuQ2xyU2hh''@;'; put 'put ''cGVBbGlnbkNlbnRlcj1lLkNsclNoYXBlRm9udFNpemU9ZS5DbHJTaGFwZUNoZWNrYm94TGlzdD1lLkNsclNoYXBlQ2VudGVyVGV4dD1lLkNsclNoYXBlQnVsbGV0TGlzdD1lLkNsclNoYXBlQm9sZD12b2lkIDAsbD1sKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVy''@;'; put 'put ''YXRvci50cyIpLGUuQ2xyU2hhcGVCb2xkPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi40MywxNy41NGE0LjY3LDQuNjcsMCwwLDAsMi44LTQuMzd2LS4wNmE0LjQzLDQuNDMsMCwwLDAtMS4zMS0zLjI1LDcuMDksNy4wOSwwLDAsMC01LjEzLTEuNzNoLTdBMS43MSwxLjcxLDAsMCww''@;'; put 'put ''LDEwLDkuODZWMjZhMS43MiwxLjcyLDAsMCwwLDEuNzQsMS43NGg3LjMzYzQuMzcsMCw3LjI1LTEuODgsNy4yNS01LjM4VjIyLjNDMjYuMzIsMTkuNjQsMjQuNzMsMTguMzIsMjIuNDMsMTcuNTRaTTEzLjY4LDExLjRoNC41NGMyLDAsMy4xNS44OSwzLjE1LDIuMzN2LjA2YzAsMS42OC0xLjM2''@;'; put 'put ''LDIuNDktMy4zOCwyLjQ5SDEzLjY4Wk0yMi4zNywyMmMwLDEuNTktMS4zMSwyLjQzLTMuNDYsMi40M0gxMy42OFYxOS42Mmg1YzIuNDksMCwzLjY5Ljg4LDMuNjksMi4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVCdWxsZXRM''@;'; put 'put ''aXN0PSgwLGwuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjUuMjEiIGN5PSI5LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSI1LjIxIiBjeT0iMTcuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUgY3g9IjUuMjEiIGN5PSIyNS4xNyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMyLjQyLDlhMSwxLDAsMCwwLTEtMUgxMHYySDMxLjQyQTEsMSwwLDAsMCwzMi40Miw5WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMxLjQyLDE2SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMS40MiwyNEgxMHYySDMxLjQyYTEsMSww''@;'; put 'put ''LDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlQ2VudGVyVGV4dD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuODgsOEg1LjEyYTEuMSwxLjEsMCwwLDAsMCwyLjJIMzAuODhhMS4xLDEuMSwwLDEsMCwwLTIu''@;'; put 'put ''MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNS41LDE2LjJhMS4xLDEuMSwwLDEsMCwwLTIuMmgtMTVhMS4xLDEuMSwwLDEsMCwwLDIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0zMC4yNSwyMEg1Ljc1YTEuMSwxLjEsMCwwLDAsMCwyLjJoMjQuNWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0Ljg4LDI2SDExLjEyYTEuMSwxLjEsMCwxLDAsMCwyLjJIMjQuODhhMS4x''@;'; put 'put ''LDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVDaGVja2JveExpc3Q9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQzLDE2SDEwdjJIMzEuNDNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMS40MywyNEgxMHYySDMxLjQzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTUuNDUsMTBoMTZhMSwxLDAsMCwwLDAtMmgtMTRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNSwzLjQyYTEuMDksMS4wOSwwLDAsMC0xLjU1LDBMNy44OSwxMS40OCw0LjUxLDcuODRBMS4xLDEuMSwwLDEsMCwyLjksOS4zNGw0Ljk0LDUuM0wxNy41LDVBMS4xLDEuMSwwLDAsMCwx''@;'; put 'put ''Ny41LDMuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlRm9udFNpemU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLDkuMDhBMS4xMywxLjEzLDAsMCwwLDE5Ljg2LDhINC42MmExLjEsMS4xLDAsMSwwLDAsMi4xOUgx''@;'; put 'put ''MVYyN2ExLjA5LDEuMDksMCwwLDAsMi4xNywwVjEwLjE5aDYuNjlBMS4xNCwxLjE0LDAsMCwwLDIxLDkuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuNjcsMTVIMjEuMTVhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMjVWMjYuNWEx''@;'; put 'put ''LjA5LDEuMDksMCwwLDAsMi4xNywwVjE3LjIzaDMuNTRhMS4xLDEuMSwwLDEsMCwwLTIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQWxpZ25DZW50ZXI9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDIwSDE5VjE2''@;'; put 'put ''aDZhMSwxLDAsMCwwLDEtMVY3YTEsMSwwLDAsMC0xLTFIMTlWMmExLDEsMCwwLDAtMiwwVjZIMTFhMSwxLDAsMCwwLTEsMXY4YTEsMSwwLDAsMCwxLDFoNnY0SDVhMSwxLDAsMCwwLTEsMXY4YTEsMSwwLDAsMCwxLDFIMTd2NGExLDEsMCwwLDAsMiwwVjMwSDMxYTEsMSwwLDAsMCwxLTFWMjFB''@;'; put 'put ''MSwxLDAsMCwwLDMxLDIwWk0xMiwxNFY4SDI0djZaTTMwLDI4SDZWMjJIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlQWxpZ25MZWZ0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LDFBMSwxLDAsMCwwLDQsMlYzNGEx''@;'; put 'put ''LDEsMCwwLDAsMiwwVjJBMSwxLDAsMCwwLDUsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMSwyMEg4VjMwSDMxYTEsMSwwLDAsMCwxLTFWMjFBMSwxLDAsMCwwLDMxLDIwWm0tMSw4SDEwVjIySDMwWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDE1VjdhMSwxLDAsMCwwLTEtMUg4VjE2SDIzQTEsMSwwLDAsMCwyNCwxNVptLTItMUgxMFY4SDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUFsaWdu''@;'; put 'put ''UmlnaHQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDFhMSwxLDAsMCwwLTEsMVYzNGExLDEsMCwwLDAsMiwwVjJBMSwxLDAsMCwwLDMxLDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNCwyMXY4YTEsMSwwLDAsMCwxLDFI''@;'; put 'put ''MjhWMjBINUExLDEsMCwwLDAsNCwyMVptMiwxSDI2djZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMiw3djhhMSwxLDAsMCwwLDEsMUgyOFY2SDEzQTEsMSwwLDAsMCwxMiw3Wm0yLDFIMjZ2NkgxNFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVJdGFsaWM9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjQyLDhIMTcuMWExLjEsMS4xLDAsMSwwLDAsMi4xOWgyLjEzTDEzLjExLDI1LjU1SDEwLjQ3YTEuMSwxLjEsMCwxLDAsMCwyLjE5SDE3LjhhMS4x''@;'; put 'put ''LDEuMSwwLDEsMCwwLTIuMTlIMTUuNTFsNi4xMy0xNS4zNmgyLjc4YTEuMSwxLjEsMCwxLDAsMC0yLjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUp1c3RpZnlUZXh0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LDEw''@;'; put 'put ''LjJIMzEuNzVhMS4xLDEuMSwwLDEsMCwwLTIuMkg2YTEuMSwxLjEsMCwxLDAsMCwyLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEuNzUsMTRINmExLjEsMS4xLDAsMSwwLDAsMi4ySDMxLjc1YTEuMSwxLjEsMCwxLDAsMC0yLjJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzEuMTIsMjBINi42MmExLjEsMS4xLDAsMSwwLDAsMi4yaDI0LjVhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0zMC40NSwyNS44M0g2LjZhMS4xLDEuMSwwLDAsMCwwLDIuMkgzMC40NWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZUFsaWduTGVmdFRleHQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTIwLjI1LDI2SDZ2Mi4ySDIwLjI1YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjgsMjBINnYyLjJIMjhBMS4xLDEuMSwwLDAsMCwyOCwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMi42LDE1LjFBMS4xLDEuMSwwLDAsMCwyMS41LDE0SDZ2Mi4ySDIxLjVBMS4xLDEuMSwwLDAsMCwyMi42LDE1LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjkuMjUsOEg2''@;'; put 'put ''djIuMkgyOS4yNWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZU51bWJlckxpc3Q9KDAsbC5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI1LjQ2IDcuNDEgNS40NiAxMS41NiA2LjY1IDEx''@;'; put 'put ''LjU2IDYuNjUgNi4wNSA1LjcgNi4wNSA0LjA1IDcuMTYgNC41MiA4IDUuNDYgNy40MSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUuNTcsMTQuODJhLjc2Ljc2LDAsMCwxLC44My43M2MwLC4zOC0uMjEuNzQtLjg3LDEuMjdsLTIsMS41''@;'; put 'put ''N3YxSDcuNjdWMTguMjhINS4zM2wxLS43N2MxLS43LDEuMjgtMS4yNywxLjI4LTJhMS44MywxLjgzLDAsMCwwLTItMS43NiwyLjYzLDIuNjMsMCwwLDAtMi4xNCwxLjA4bC43Ni43M0ExLjc1LDEuNzUsMCwwLDEsNS41NywxNC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik02LjU2LDI0LjY0YTEuMzIsMS4zMiwwLDAsMCwxLTEuMjdjMC0uODctLjc4LTEuNTEtMi0xLjUxYTIuNjEsMi42MSwwLDAsMC0yLjEsMWwuNjkuNzJhMS43OCwxLjc4LDAsMCwxLDEuMy0uNjRjLjU0LDAsLjkyLjI2LjkyLjY2cy0uMzYuNjItMSwuNjJI''@;'; put 'put ''NC43OXYxaC42NGMuNzQsMCwxLjA3LjIxLDEuMDcuNjNzLS4zNS42OC0xLC42OGEyLDIsMCwwLDEtMS40Ni0uNjVsLS43Ljc4YTIuODUsMi44NSwwLDAsMCwyLjIxLjkzYzEuMjksMCwyLjEzLS42OSwyLjEzLTEuNjRBMS4zMywxLjMzLDAsMCwwLDYuNTYsMjQuNjRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNDIsOWExLDEsMCwwLDAtMS0xSDEwdjJIMzEuNDJBMSwxLDAsMCwwLDMyLjQyLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzEuNDIsMTZIMTB2Mkgz''@;'; put 'put ''MS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQyLDI0SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVQYWludFJvbGxlcj0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTBWNGEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNHY2YTIsMiwwLDAsMCwyLDJIMjlBMiwyLDAsMCwwLDMxLDEwWk02LDRIMjl2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDZIMzJ2Ni4yOUwxOC43LDE2LjU0YTEsMSwwLDAsMC0uNywxVjE5SDE2VjMzYTIsMiwwLDAsMCwyLDJoMmEyLDIsMCwwLDAsMi0yVjE5SDIwdi0uNzNMMzMuMywxNGExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMyw2Wk0yMCwzM0gxOFYyMWgy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHJlY3QgeD0iNCIgeT0iMiIgd2lkdGg9IjI3IiBoZWlnaHQ9IjEwIiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDZIMzJ2Ni4y''@;'; put 'put ''NEwxOC43MSwxNi40NWExLDEsMCwwLDAtLjcxLDFWMTlIMTZWMzRhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTlIMjB2LS44MkwzMy4yOSwxNEExLDEsMCwwLDAsMzQsMTNWN0ExLDEsMCwwLDAsMzMsNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+''@;'; put 'put ''JyksZS5DbHJTaGFwZUJsb2NrUXVvdGU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTExLjg2LDE2LjU1YTQuMzEsNC4zMSwwLDAsMC0yLjExLjU2LDE0LjQ0LDE0LjQ0LDAsMCwxLDQuMzYtNiwxLjEsMS4xLDAsMCwwLTEuNC0xLjdjLTQsMy4yNS01Ljc4LDcuNzUtNS43OCwxMC41NEE1''@;'; put 'put ''LjA4LDUuMDgsMCwwLDAsMTAsMjQuNThhNC40LDQuNCwwLDAsMCwxLjg4LjQ0LDQuMjQsNC4yNCwwLDEsMCwwLTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjMsMTYuNTVhNC4yOSw0LjI5LDAsMCwwLTIuMTEuNTYsMTQuNSwx''@;'; put 'put ''NC41LDAsMCwxLDQuMzUtNiwxLjEsMS4xLDAsMSwwLTEuMzktMS43Yy00LDMuMjUtNS43OCw3Ljc1LTUuNzgsMTAuNTRhNS4wOCw1LjA4LDAsMCwwLDMsNC42MUE0LjM3LDQuMzcsMCwwLDAsMjMsMjVhNC4yNCw0LjI0LDAsMSwwLDAtOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNjUsMjcuMWExLjEsMS4xLDAsMCwwLDEuMSwxLjFIMzBWMjZIMTUuNzVBMS4xLDEuMSwwLDAsMCwxNC42NSwyNy4xWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYuOSwyMS4xQTEuMSwxLjEsMCwwLDAsOCwyMi4ySDMwVjIwSDhBMS4xLDEuMSwwLDAsMCw2LjksMjEuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMy40LDE1LjFh''@;'; put 'put ''MS4xLDEuMSwwLDAsMCwxLjEsMS4xSDMwVjE0SDE0LjVBMS4xLDEuMSwwLDAsMCwxMy40LDE1LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNNi43NSw4YTEuMSwxLjEsMCwxLDAsMCwyLjJIMzBWOFoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVUZXh0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4xOSw4Ljg0YTEuNDUsMS40NSwwLDAsMC0xLjQtMWgtLjEyYTEuNDYsMS40NiwwLDAsMC0xLjQyLDFMMS4xNCwyNi41NmExLjI5LDEuMjksMCwwLDAtLjE0''@;'; put 'put ''LjU5LDEsMSwwLDAsMCwxLDEsMS4xMiwxLjEyLDAsMCwwLDEuMDgtLjc3bDIuMDgtNC42NWgxMWwyLjA4LDQuNTlhMS4yNCwxLjI0LDAsMCwwLDEuMTIuODMsMS4wOCwxLjA4LDAsMCwwLDEuMDgtMS4wOCwxLjY0LDEuNjQsMCwwLDAtLjE0LS41N1pNNi4wOCwyMC43MWw0LjU5LTEwLjIyLDQu''@;'; put 'put ''NiwxMC4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4yNCwxNC43OEE2LjM1LDYuMzUsMCwwLDAsMjcuNiwxMy4yYTExLjM2LDExLjM2LDAsMCwwLTQuNywxLDEsMSwwLDAsMC0uNTguODksMSwxLDAsMCwwLC45NC45MiwxLjIz''@;'; put 'put ''LDEuMjMsMCwwLDAsLjM5LS4wOCw4Ljg3LDguODcsMCwwLDEsMy43Mi0uODFjMi43LDAsNC4yOCwxLjMzLDQuMjgsMy45MnYuNWExNS4yOSwxNS4yOSwwLDAsMC00LjQyLS42MWMtMy42NCwwLTYuMTQsMS42MS02LjE0LDQuNjR2LjA1YzAsMi45NSwyLjcsNC40OCw1LjM3LDQuNDhhNi4yOSw2''@;'; put 'put ''LjI5LDAsMCwwLDUuMTktMi40OFYyNi45YTEsMSwwLDAsMCwxLDEsMSwxLDAsMCwwLDEtMS4wNlYxOUE1LjcxLDUuNzEsMCwwLDAsMzIuMjQsMTQuNzhabS0uNTYsNy43YzAsMi4yOC0yLjE3LDMuODktNC44MSwzLjg5LTEuOTQsMC0zLjYxLTEuMDYtMy42MS0yLjg2di0uMDZjMC0xLjgsMS41''@;'; put 'put ''LTMsNC4yLTNhMTUuMiwxNS4yLDAsMCwxLDQuMjIuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlVW5kZXJsaW5lPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyOC4xN2M1LjA4LDAsOC40OC0zLjA4LDguNDgtOVY4''@;'; put 'put ''LjU0YTEuMTUsMS4xNSwwLDEsMC0yLjMsMHYxMC44YzAsNC40NC0yLjM4LDYuNzEtNi4xMyw2Ljcxcy02LjIxLTIuNDctNi4yMS02Ljg1VjguNTRhMS4xNSwxLjE1LDAsMSwwLTIuMywwdjEwLjhDOS41MywyNS4wOSwxMywyOC4xNywxOCwyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMSwzMEg1YTEuMTEsMS4xMSwwLDAsMCwwLDIuMjFIMzFBMS4xMSwxLjExLDAsMCwwLDMxLDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUFsaWduQm90dG9tPSgwLGwu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwzMEgyYTEsMSwwLDAsMCwwLDJIMzRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNiw1YTEsMSwwLDAsMC0xLTFIN0ExLDEsMCwwLDAsNiw1VjI4SDE2Wk0xNCwy''@;'; put 'put ''Nkg4VjZoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwxM2ExLDEsMCwwLDAtMS0xSDIxYTEsMSwwLDAsMC0xLDFWMjhIMzBaTTI4LDI2SDIyVjE0aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIgLz4nKSxlLkNsclNoYXBlQWxpZ25NaWRkbGU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDMwVjExYTEsMSwwLDAsMC0xLTFIMjFhMSwxLDAsMCwwLTEsMXY2SDE2VjVhMSwxLDAsMCwwLTEtMUg3QTEsMSwwLDAsMCw2LDVWMTdIMmExLDEsMCwwLDAsMCwySDZWMzFhMSwx''@;'; put 'put ''LDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTloNHY2YTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjE5aDRhMSwxLDAsMCwwLDAtMlpNMTQsMzBIOFY2aDZabTE0LTZIMjJWMTJoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVBbGlnblRvcD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsNEgyQTEsMSwwLDAsMCwyLDZIMzRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDMxYTEsMSwwLDAsMCwxLDFoOGExLDEsMCww''@;'; put 'put ''LDAsMS0xVjhINlpNOCwxMGg2VjMwSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAsMjNhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWOEgyMFptMi0xM2g2VjIySDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUxhbmd1YWdlPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwzSDE0djVoMlY1aDE0YzAuNiwwLDEsMC40LDEsMXYxMWMwLDAuNi0wLjQsMS0xLDFIMTd2N2gtNS4zTDgsMjcuOVYyNUg1Yy0wLjYsMC0xLTAuNC0xLTFWMTNjMC0w''@;'; put 'put ''LjYsMC40LTEsMS0xaDEzdi0ySDVcblx0XHRjLTEuNywwLTMsMS4zLTMsM3YxMWMwLDEuNywxLjMsMywzLDNoMXY1LjFsNi4zLTUuMUgxOXYtN2gxMWMxLjcsMCwzLTEuMywzLTNWNkMzMyw0LjMsMzEuNywzLDMwLDN6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz48cGF0aCBkPSJNNi4yLDIyLjloMi40bDAuNi0xLjZoMy4xbDAuNiwxLjZoMi40TDExLjksMTRIOS41TDYuMiwyMi45eiBNMTAuNywxNi41bDEsMy4xaC0yTDEwLjcsMTYuNXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMCwx''@;'; put 'put ''N2MxLjEsMCwyLjYtMC4zLDQtMWMxLjQsMC43LDMsMSw0LDF2LTJjMCwwLTEsMC0yLjEtMC40YzEuMi0xLjIsMi4xLTMsMi4xLTUuNlY4aC0zVjZoLTJ2MmgtM3YyaDUuOVxuXHRcdGMtMC4yLDEuOC0xLDIuOS0xLjksMy42Yy0wLjYtMC41LTEuMi0xLjItMS42LTIuMWgtMi4xYzAuNCwxLjMs''@;'; put 'put ''MSwyLjMsMS44LDMuMUMyMS4xLDE1LDIwLjIsMTUsMjAsMTVWMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cG9seWdvbiBwb2ludHM9IjExLDE2LjUgMTAsMTkuNiAxMiwxOS42IDExLDE2LjUgXHQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjMsM2gtMTZ2NWg0djJoLTEzYy0xLjcsMC0zLDEuMy0zLDN2MTFjMCwxLjcsMS4zLDMsMywzaDF2NS4xbDYuMy01LjFoNi43di03aDExYzEuNywwLDMtMS4zLDMtM1Y2XG5cdFx0QzMzLjMsNC4zLDMyLDMsMzAuMywzeiBNMTMuMSwyMi45bC0w''@;'; put 'put ''LjUtMS42SDkuNWwtMC42LDEuNkg2LjVMOS44LDE0aDIuNGwzLjMsOC45TDEzLjEsMjIuOXogTTI4LjMsMTV2MmMtMS4zLDAtMi43LTAuNC0zLjktMVxuXHRcdGMtMS4yLDAuNi0yLjYsMC45LTQsMWwtMC4xLTJjMC43LDAsMS40LTAuMSwyLjEtMC4zYy0wLjktMC45LTEuNS0yLTEuOC0zLjJo''@;'; put 'put ''Mi4xYzAuMywwLjksMC45LDEuNiwxLjYsMi4yYzEuMS0wLjksMS44LTIuMiwxLjktMy43XG5cdFx0aC02VjhoM1Y2aDJ2MmgzLjNsMC4xLDFjMC4xLDIuMS0wLjcsNC4yLTIuMiw1LjdDMjcuMSwxNC45LDI3LjcsMTUsMjguMywxNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTIiIC8+JyksZS5DbHJTaGFwZVRleHRDb2xvcj0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTkuNDcsMy44NGExLjQ1LDEuNDUsMCwwLDAtMS40LTFIMThhMS40NSwxLjQ1LDAsMCwwLTEuNDIsMUw4LjQyLDIxLjU2YTEuMzUsMS4zNSwwLDAsMC0uMTQuNTksMSwxLDAsMCwwLDEs''@;'; put 'put ''MSwxLjExLDEuMTEsMCwwLDAsMS4wOC0uNzdsMi4wOC00LjY1aDExbDIuMDgsNC41OWExLjI0LDEuMjQsMCwwLDAsMS4xMi44MywxLjA4LDEuMDgsMCwwLDAsMS4wOC0xLjA4LDEuNTksMS41OSwwLDAsMC0uMTQtLjU3Wk0xMy4zNiwxNS43MSwxOCw1LjQ5bDQuNiwxMC4yMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjQuMDYiIHk9IjI1IiB3aWR0aD0iMjgiIGhlaWdodD0iOCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLGUuQ2xyU2hhcGVIaWdobGlnaHRl''@;'; put 'put ''cj0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUuODIsMjYuMDZhMSwxLDAsMCwxLS43MS0uMjlMOC42NywxOS4zM2ExLDEsMCwwLDEtLjI5LS43MSwxLDEsMCwwLDEsLjI5LS43MUwyMywzLjU0YTUuNTUsNS41NSwwLDEsMSw3Ljg1LDcuODZMMTYuNTMsMjUuNzdBMSwxLDAsMCwxLDE1''@;'; put 'put ''LjgyLDI2LjA2Wm0tNS03LjQ0LDUsNUwyOS40OCwxMGEzLjU0LDMuNTQsMCwwLDAsMC01LDMuNjMsMy42MywwLDAsMC01LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTAuMzgsMjguMjhBMSwxLDAsMCwxLDkuNjcsMjhMNi40''@;'; put 'put ''NSwyNC43N2ExLDEsMCwwLDEtLjIyLTEuMDlsMi4yMi01LjQ0YTEsMSwwLDAsMSwxLjYzLS4zM2w2LjQ1LDYuNDRBMSwxLDAsMCwxLDE2LjIsMjZsLTUuNDQsMi4yMkExLjMzLDEuMzMsMCwwLDEsMTAuMzgsMjguMjhaTTguMzMsMjMuODJsMi4yOSwyLjI4LDMuNDMtMS40TDkuNzQsMjAuMzla''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNOC45NCwzMGgtNWExLDEsMCwwLDEtLjg0LTEuNTVsMy4yMi00Ljk0YTEsMSwwLDAsMSwxLjU1LS4xNmwzLjIxLDMuMjJhMSwxLDAsMCwxLC4wNiwxLjM1TDkuNywyOS42NEExLDEsMCww''@;'; put 'put ''LDEsOC45NCwzMFpNNS43OCwyOEg4LjQ3TDksMjcuMzRsLTEuNy0xLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIzLjA2IiB5PSIzMSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00Ii8+JyksZS5DbHJTaGFwZU91dGRlbnQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjA2LDloLTI2YTEsMSwwLDEsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMS4wNiwxNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE5aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyOWgtMjZhMSwx''@;'; put 'put ''LDAsMCwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTkuNTYsMjIuNTRhMSwxLDAsMCwxLS43LS4zTDQuNjEsMThsNC4yNS00LjI0YTEsMSwwLDAsMSwxLjQxLDEuNDFMNy40NCwxOGwyLjgz''@;'; put 'put ''LDIuODNhMSwxLDAsMCwxLS43MSwxLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz4nKSxlLkNsclNoYXBlSW5kZW50PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4wNiw5aC0yNmExLDEsMCwxLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMS4w''@;'; put 'put ''NiwxOWgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjloLTI2YTEsMSwwLDAsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik01LjU2LDIyLjU0YTEsMSwwLDAsMS0u''@;'; put 'put ''Ny0xLjcxTDcuNjgsMTgsNC44NiwxNS4xN2ExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBMMTAuNTEsMTgsNi4yNywyMi4yNEExLDEsMCwwLDEsNS41NiwyMi41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+JyksZS5DbHJTaGFwZVN0cmlr''@;'; put 'put ''ZXRocm91Z2g9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjg4LDE5LjkyaC0zMGExLDEsMCwxLDEsMC0yaDMwYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy4yNywxNS44NmExMi45LDEyLjks''@;'; put 'put ''MCwwLDEsMS4yOS0uNTJBNS42OSw1LjY5LDAsMCwxLDEwLjM5LDE1YTMuMTgsMy4xOCwwLDAsMSwyLjc1LDEuMTFBNC40NCw0LjQ0LDAsMCwxLDE0LDE4Ljg1di40OWExMy44MywxMy44MywwLDAsMC00LjI5LS43NCw2LjE5LDYuMTksMCwwLDAtMi41OS41NEE1LDUsMCwwLDAsNS44MSwyMEgx''@;'; put 'put ''NS44OFYxOC44NWE1LjY3LDUuNjcsMCwwLDAtMS4zNy00LDUuMTYsNS4xNiwwLDAsMC00LTEuNDksMTAsMTAsMCwwLDAtMy45MS44OC44Ny44NywwLDAsMC0uNDQsMS4xOEEuODQuODQsMCwwLDAsNy4yNywxNS44NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik0yMSwyMGE1Ljk0LDUuOTQsMCwwLDEsLjU0LTIuMzEsNC4zNSw0LjM1LDAsMCwxLDEuNTgtMS44Myw0LjI3LDQuMjcsMCwwLDEsNC41OSwwLDQuNDcsNC40NywwLDAsMSwxLjU3LDEuODNBNi4xMiw2LjEyLDAsMCwxLDI5Ljg1LDIwaDJhNy43Myw3LjczLDAsMCww''@;'; put 'put ''LS43OC0zLjE5LDYsNiwwLDAsMC0yLjE4LTIuNDUsNS43NCw1Ljc0LDAsMCwwLTMuMS0uODgsNS4zOSw1LjM5LDAsMCwwLTIuOC43Myw1LjU1LDUuNTUsMCwwLDAtMiwyLjA1VjEwYS44Ny44NywwLDAsMC0uODYtLjg2SDIwYS44Ny44NywwLDAsMC0uODYuODZWMjBaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjkuNjcsMjJhNS42MSw1LjYxLDAsMCwxLS4zNiwxLjA3LDQuNDcsNC40NywwLDAsMS0xLjU3LDEuODUsNC4zMiw0LjMyLDAsMCwxLTQuNTksMCw0LjM1LDQuMzUsMCwwLDEtMS41OC0xLjg1QTUuNjQsNS42NCww''@;'; put 'put ''LDAsMSwyMS4yLDIySDE5LjA5djQuMTNBLjg3Ljg3LDAsMCwwLDIwLDI3aC4yYS44Ny44NywwLDAsMCwuODYtLjg2VjI0LjUxYTUuNTgsNS41OCwwLDAsMCwyLDIuMDYsNS40OCw1LjQ4LDAsMCwwLDIuOC43Miw1LjY2LDUuNjYsMCwwLDAsMy4xLS44OEE1Ljg4LDUuODgsMCwwLDAsMzEuMDks''@;'; put 'put ''MjQsNy4wOSw3LjA5LDAsMCwwLDMxLjczLDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE0LDIydi43NmEzLjM0LDMuMzQsMCwwLDEtMS42MiwyLDUuMzQsNS4zNCwwLDAsMS0yLjY5LjcyLDMuNzgsMy43OCwwLDAsMS0yLjM2''@;'; put 'put ''LS43LDIuMjQsMi4yNCwwLDAsMS0uOTQtMS45LDIuMjksMi4yOSwwLDAsMSwuMi0uOTFINC42MmE0LDQsMCwwLDAtLjEzLDEsMy44MywzLjgzLDAsMCwwLDEuMzUsMy4wNkE1LjE1LDUuMTUsMCwwLDAsOS4zMSwyNy4yLDYsNiwwLDAsMCwxMiwyNi41N2E0LjYyLDQuNjIsMCwwLDAsMi0xLjc0''@;'; put 'put ''VjI2YS44Ni44NiwwLDAsMCwuODYuODZIMTVhLjg2Ljg2LDAsMCwwLC44Ni0uODZWMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLGUuQ2xyU2hhcGVTdWJzY3JpcHQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjU1LDE4bDYuOCw4LjZh''@;'; put 'put ''MS4xNywxLjE3LDAsMCwxLS45MiwxLjloMGExLjE3LDEuMTcsMCwwLDEtLjkyLS40NEwxMywxOS45MSw2LjYsMjhhMS4xNywxLjE3LDAsMCwxLS45Mi40NGgwYTEuMTcsMS4xNywwLDAsMS0uOTItMS45TDExLjU1LDE4bC02LjgtOC42YTEuMTcsMS4xNywwLDAsMSwuOTItMS45aDBBMS4xNywx''@;'; put 'put ''LjE3LDAsMCwxLDYuNjMsOGw2LjQ0LDguMTNMMTkuNSw4YTEuMTcsMS4xNywwLDAsMSwuOTItLjQ0aDBhMS4xNywxLjE3LDAsMCwxLC45MiwxLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjMsMzEuOCwyNy40OSwyOGE5Ljks''@;'; put 'put ''OS45LDAsMCwwLDEuODgtMi4wNUEzLjQ0LDMuNDQsMCwwLDAsMzAsMjRhMi4zNSwyLjM1LDAsMCwwLS4zNS0xLjI3LDIuNDQsMi40NCwwLDAsMC0xLS44NCwyLjksMi45LDAsMCwwLTEuMjYtLjI4LDMuMzYsMy4zNiwwLDAsMC0xLjgzLjUsNS42NCw1LjY0LDAsMCwwLTEuNDgsMS40MmwtMS0u''@;'; put 'put ''ODFhNS4xMSw1LjExLDAsMCwxLDQuMzYtMi4zNyw0LjM1LDQuMzUsMCwwLDEsMiwuNDUsMy40MywzLjQzLDAsMCwxLDIsMy4xOCw0LjQ1LDQuNDUsMCwwLDEtLjY4LDIuMzUsMTAuOSwxMC45LDAsMCwxLTIuMjQsMi40NmwtMy4yNCwyLjgxSDMxLjVWMzNIMjNaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLGUuQ2xyU2hhcGVTdXBlcnNjcmlwdD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNDMsMThsNi43OSw4LjZhMS4xNywxLjE3LDAsMCwxLS45MiwxLjloMGExLjE3LDEuMTcsMCwwLDEtLjkyLS40NGwtNi40NC04LjEzTDYuNDcs''@;'; put 'put ''MjhhMS4xNywxLjE3LDAsMCwxLS45Mi40NGgwYTEuMTcsMS4xNywwLDAsMS0uOTItMS45TDExLjQzLDE4bC02LjgtOC42YTEuMTcsMS4xNywwLDAsMSwuOTItMS45aDBBMS4yLDEuMiwwLDAsMSw2LjUxLDhsNi40Myw4LjEzTDE5LjM4LDhhMS4xNywxLjE3LDAsMCwxLC45Mi0uNDRoMGExLjE3''@;'; put 'put ''LDEuMTcsMCwwLDEsLjkyLDEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMi44NSwxNC40N2w0LjUxLTMuODVhOS4zNyw5LjM3LDAsMCwwLDEuODgtMiwzLjQzLDMuNDMsMCwwLDAsLjU5LTEuODYsMi4yNywyLjI3LDAsMCww''@;'; put 'put ''LS4zNi0xLjI3LDIuMzgsMi4zOCwwLDAsMC0uOTUtLjgzLDIuNzcsMi43NywwLDAsMC0xLjI2LS4yOSwzLjM5LDMuMzksMCwwLDAtMS44My41LDUuODMsNS44MywwLDAsMC0xLjQ5LDEuNDJsLTEtLjgxYTUuMTIsNS4xMiwwLDAsMSw0LjM2LTIuMzcsNC4zNiw0LjM2LDAsMCwxLDIsLjQ1LDMu''@;'; put 'put ''NDcsMy40NywwLDAsMSwyLDMuMThBNC40NCw0LjQ0LDAsMCwxLDMwLjU4LDlhMTEuMTQsMTEuMTQsMCwwLDEtMi4yNCwyLjQ2TDI1LjEsMTQuMzFoNi4yOHYxLjMzSDIyLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxlLlRleHRFZGl0U2hhcGVz''@;'; put 'put ''PXtib2xkOmUuQ2xyU2hhcGVCb2xkLCJidWxsZXQtbGlzdCI6ZS5DbHJTaGFwZUJ1bGxldExpc3QsImNoZWNrYm94LWxpc3QiOmUuQ2xyU2hhcGVDaGVja2JveExpc3QsIm51bWJlci1saXN0IjplLkNsclNoYXBlTnVtYmVyTGlzdCwiZm9udC1zaXplIjplLkNsclNoYXBlRm9udFNpemUsaXRh''@;'; put 'put ''bGljOmUuQ2xyU2hhcGVJdGFsaWMsImp1c3RpZnktdGV4dCI6ZS5DbHJTaGFwZUp1c3RpZnlUZXh0LCJjZW50ZXItdGV4dCI6ZS5DbHJTaGFwZUNlbnRlclRleHQsImFsaWduLWxlZnQtdGV4dCI6ZS5DbHJTaGFwZUFsaWduTGVmdFRleHQsImFsaWduLXJpZ2h0LXRleHQiOmUuQ2xyU2hhcGVB''@;'; put 'put ''bGlnblJpZ2h0VGV4dCwicGFpbnQtcm9sbGVyIjplLkNsclNoYXBlUGFpbnRSb2xsZXIsImJsb2NrLXF1b3RlIjplLkNsclNoYXBlQmxvY2tRdW90ZSx0ZXh0OmUuQ2xyU2hhcGVUZXh0LHVuZGVybGluZTplLkNsclNoYXBlVW5kZXJsaW5lLCJhbGlnbi1jZW50ZXIiOmUuQ2xyU2hhcGVBbGln''@;'; put 'put ''bkNlbnRlciwiYWxpZ24tbGVmdCI6ZS5DbHJTaGFwZUFsaWduTGVmdCwiYWxpZ24tcmlnaHQiOmUuQ2xyU2hhcGVBbGlnblJpZ2h0LCJhbGlnbi1ib3R0b20iOmUuQ2xyU2hhcGVBbGlnbkJvdHRvbSwiYWxpZ24tbWlkZGxlIjplLkNsclNoYXBlQWxpZ25NaWRkbGUsImFsaWduLXRvcCI6ZS5D''@;'; put 'put ''bHJTaGFwZUFsaWduVG9wLGxhbmd1YWdlOmUuQ2xyU2hhcGVMYW5ndWFnZSwidGV4dC1jb2xvciI6ZS5DbHJTaGFwZVRleHRDb2xvcixoaWdobGlnaHRlcjplLkNsclNoYXBlSGlnaGxpZ2h0ZXIsaW5kZW50OmUuQ2xyU2hhcGVJbmRlbnQsb3V0ZGVudDplLkNsclNoYXBlT3V0ZGVudCxzdHJp''@;'; put 'put ''a2V0aHJvdWdoOmUuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoLHN1YnNjcmlwdDplLkNsclNoYXBlU3Vic2NyaXB0LHN1cGVyc2NyaXB0OmUuQ2xyU2hhcGVTdXBlcnNjcmlwdH0sInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikm''@;'; put 'put ''JndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKGUuVGV4dEVkaXRTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMiOmZ1bmN0aW9uKEEsZSxhKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZToh''@;'; put 'put ''MH0pLGUuVHJhdmVsU2hhcGVzPWUuQ2xyU2hhcGVPbkhvbGlkYXk9ZS5DbHJTaGFwZVRyYWlsZXI9ZS5DbHJTaGFwZUZlcnJ5PWUuQ2xyU2hhcGVDYXJhdmFuPWUuQ2xyU2hhcGVDYW1wZXJ2YW49ZS5DbHJTaGFwZUJvYXQ9ZS5DbHJTaGFwZUJpY3ljbGU9ZS5DbHJTaGFwZU1hcE1hcmtlcj1l''@;'; put 'put ''LkNsclNoYXBlQ29tcGFzcz1lLkNsclNoYXBlTWFwPWUuQ2xyU2hhcGVDYXI9ZS5DbHJTaGFwZUFpcnBsYW5lPWUuQ2xyU2hhcGVUcnVjaz12b2lkIDA7dmFyIHI9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKTthPWEoIi4vcHJvamVjdHMvaWNv''@;'; put 'put ''bnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIiksZS5DbHJTaGFwZVRydWNrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsN1Yy''@;'; put 'put ''NWExLDEsMCwwLDAsMSwxSDRWOEgyNFYxOS43YTYuNDUsNi40NSwwLDAsMSwxLjU2LS4yYy4xNSwwLC4yOSwwLC40NCwwVjE0aDRhMiwyLDAsMCwxLDIsMnYxSDI4djJoNHY1SDI5LjZhNC41NCw0LjU0LDAsMCwwLTguMzQsMEgxNC40M2E0LjUsNC41LDAsMCwwLTQuMTctMi43NkE0LjM4LDQu''@;'; put 'put ''MzgsMCwxLDAsMTQuNzIsMjZIMjFhNC40OSw0LjQ5LDAsMCwwLDguOTIsMEgzM2ExLDEsMCwwLDAsMS0xVjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4zOCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgsMCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUt''@;'; put 'put ''Mi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDMsMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYyMS40''@;'; put 'put ''OUE0LjQ1LDQuNDUsMCwwLDAsMjEuMjUsMjRIMTQuNDNhNC41LDQuNSwwLDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDgsNC40OCwwLDAsMCw4LjkxLDBIMzRWMTZBNCw0LDAsMCwwLDMwLDEyWk0xMC4yNiwyOGEyLjM4LDIuMzgsMCwxLDEsMC00Ljc1LDIu''@;'; put 'put ''MzgsMi4zOCwwLDEsMSwwLDQuNzVabTE1LjE3LDBhMi4zOCwyLjM4LDAsMSwxLDIuNS0yLjM3QTIuNDQsMi40NCwwLDAsMSwyNS40MiwyOFpNMzIsMTdIMjZWMTRoNGEyLDIsMCwwLDEsMiwyWiIvPicpLGUuQ2xyU2hhcGVBaXJwbGFuZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1Ljc3LDguMTZhMi40MywyLjQzLDAsMCwwLTEuOS0yTDI4LDQuODdhNC41LDQuNSwwLDAsMC0zLjY1Ljc5TDcsMTguMywyLjE0LDE4LjFBMS44NiwxLjg2LDAsMCwwLC45MSwyMS40MWw1LDMuOTNjLjYuNzMsMSwuNTks''@;'; put 'put ''MTAuOTMtNC44MmwuOTMsOS40MmExLjM2LDEuMzYsMCwwLDAsLjg1LDEuMTgsMS40MywxLjQzLDAsMCwwLC41NC4xLDEuNTQsMS41NCwwLDAsMCwxLS40MWwyLjM5LTIuMThhMS41MiwxLjUyLDAsMCwwLC40Ni0uODNMMjUuMiwxNS45YzMuNTctMiw2Ljk1LTMuODgsOS4zNi01LjI1QTIuNDMs''@;'; put 'put ''Mi40MywwLDAsMCwzNS43Nyw4LjE2Wm0tMi4yLjc1Yy0yLjUsMS40Mi02LDMuNDEtOS43Niw1LjQ3bC0uNDEuMjNMMjEuMDcsMjcuMjhsLTEuNDcsMS4zNEwxOC41LDE3LjMyLDE3LjE3LDE4QzEwLDIyLDcuNjEsMjMuMTYsNi43OSwyMy41MmwtNC4zLTMuNDEsNS4wOC4yMiwxOC0xMy4wNmEy''@;'; put 'put ''LjUxLDIuNTEsMCwwLDEsMi0uNDVsNS44NSwxLjI2YS40My40MywwLDAsMSwuMzUuMzdBLjQyLjQyLDAsMCwxLDMzLjU3LDguOTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTcsMTIuNTRsMy41NiwxLDEuNjQt''@;'; put 'put ''MS4xOS00LTEuMTZMMTAsMTAuMDlsNS40Ny0uMTYsMi4zLTEuNjdMMTAsOC41YTEuMjUsMS4yNSwwLDAsMC0uNy4xN0w2LjY3LDEwLjJBMS4yOCwxLjI4LDAsMCwwLDcsMTIuNTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBk''@;'; put 'put ''PSJNNi4yNSwxMS41LDEyLDEzLjE2bDYuMzItNC41OS05LjA3LjI2QS41Mi41MiwwLDAsMCw5LDguOTFMNi4xMywxMC41NkEuNTEuNTEsMCwwLDAsNi4yNSwxMS41WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTM0LjUy''@;'; put 'put ''LDYuMzYsMjguMjIsNWEzLjc4LDMuNzgsMCwwLDAtMy4wNy42N0w2LjEyLDE5LjVsLTQuNTctLjJhMS4yNSwxLjI1LDAsMCwwLS44MywyLjIybDQuNDUsMy41M2EuNTUuNTUsMCwwLDAsLjUzLjA5YzEuMjctLjQ5LDYtMywxMS41OS02LjA3bDEuMTIsMTEuNTFhLjU1LjU1LDAsMCwwLC45LjM3''@;'; put 'put ''bDIuNS0yLjA4YS43Ni43NiwwLDAsMCwuMjYtLjQ1bDIuMzctMTMuMjljNC0yLjIyLDcuODItNC4zNywxMC41MS01Ljg5QTEuNTUsMS41NSwwLDAsMCwzNC41Miw2LjM2WiIvPicpLGUuQ2xyU2hhcGVDYXI9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjMiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYuNDUsMTQuMTdBMjIuMSwyMi4xLDAsMCwwLDE5LjM4LDdhOS42''@;'; put 'put ''NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ3LS4xNC45Mi0uMiwxLjM2QTQsNCwwLDAsMCwyLDE4djYuMTNhMiwyLDAsMCwwLDIsMlYyMEg0VjE4YTIsMiwwLDAsMSwyLTJIMjQuNzNBNy4yOCw3LjI4LDAsMCwxLDMyLDIzLjI3VjI0aC0yYTQuNTMsNC41''@;'; put 'put ''MywwLDEsMCwuMzMsMkgzMmEyLDIsMCwwLDAsMi0ydi0uNzNBOS4yOCw5LjI4LDAsMCwwLDI2LjQ1LDE0LjE3Wk0xMSwxNEg2LjkzYzAtLjMxLjA5LS42My4xNS0xQTYuNTIsNi41MiwwLDAsMSwxMSw4aDBabTIsMFY3LjU4YTguMTcsOC4xNywwLDAsMSw1LjM2LDEuMTZBMTksMTksMCwwLDEs''@;'; put 'put ''MjMuOSwxNFpNMjUuOCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNS44LDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQuMTcsMjRhNC41Myw0LjUzLDAsMSww''@;'; put 'put ''LC4zMywyaDUuM2MwLS4wOCwwLS4xNywwLS4yNUE2LDYsMCwwLDEsMjAsMjRaTTEwLDI4LjM4YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0yNi44NywxNC4yOEEyMi4zNiwyMi4zNiwwLDAsMCwxOS42NSw2LjlhOS42NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ5LS4xNSwxLS4yMSwxLjRoLTFBMi41OSwyLjU5LDAsMCwwLDIsMTYuNTl2OC41NWEuODYuODYsMCwwLDAsLjg2Ljg2SDQu''@;'; put 'put ''NTljMC0uMTMsMC0uMjYsMC0uMzlhNS43Nyw1Ljc3LDAsMCwxLDcuNzEtNS40NWwtMSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDE0LjgyLDI2aDUuNDhjMC0uMTMsMC0uMjYsMC0uMzlBNS43Nyw1Ljc3LDAsMCwxLDI4LDIwLjE2''@;'; put 'put ''bC0xLDFhNC41Niw0LjU2LDAsMCwwLTQuMzQsMS41OCwzLDMsMCwwLDAtLjYzLjkzQTQuNSw0LjUsMCwxLDAsMzAuNTMsMjZoMi42MWEuODYuODYsMCwwLDAsLjg2LS44NlYyMy4zNkE5LjM5LDkuMzksMCwwLDAsMjYuODcsMTQuMjhaTTEyLDE0SDhjMC0uMzUuMS0uNzEuMTYtMS4wN2E2LjUy''@;'; put 'put ''LDYuNTIsMCwwLDEsMy44Ny01aDBaTTEwLjM2LDI4LjM2YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLjM2LDI4LjM2Wk0xOSwxOUgxNlYxN2gzWm0tNi01VjcuNDdhOC4xNiw4LjE2LDAsMCwxLDUuNCwxLjE1QTE5LjE1LDE5LjE1LDAsMCwxLDI0LDE0Wk0yNi4wNiwy''@;'; put 'put ''OC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNi4wNiwyOC4zNloiLz4nKSxlLkNsclNoYXBlTWFwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNTksNi4xOUExLDEsMCwwLDAs''@;'; put 'put ''MzIuNyw2TDIzLjA5LDksMTMuNDYsNC4xMWExLDEsMCwwLDAtLjg0LDBMMi42Miw4LjJBMSwxLDAsMCwwLDIsOS4xM1YyOS42MWExLDEsMCwwLDAsMS4zOC45MkwxMywyNi41OGw5LjU5LDQuOTJhMSwxLDAsMCwwLC40Ni4xMSwxLDEsMCwwLDAsLjMsMGwxMC0zLjEyYTEsMSwwLDAsMCwuNy0x''@;'; put 'put ''VjdBMSwxLDAsMCwwLDMzLjU5LDYuMTlaTTMyLDI2Ljc1bC04LjMyLDIuNlYyNy4wNmgtMS42djJsLTguNC00LjMxVjIzLjA2aC0xLjZ2MS43Mkw0LDI4LjExVjkuNzlsOC4wOC0zLjMzVjguODFoMS42VjYuNDdsOC40LDQuM3YyLjFoMS42VjExTDMyLDguMzZaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjIyLjA4IiB5PSIxNS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''IHg9IjIyLjA4IiB5PSIyMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjA4IiB5PSIxMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjEyLjA4IiB5PSIxNy4xMyIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjc1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgZD0iTTMzLjMxLDcuMzUsMjUsOS45NFYxNEgyM1YxMC4yOUwxNCw1LjY4VjlIMTJWNS4yN2wtOS42Nyw0QS41My41MywwLDAsMCwyLDkuNzVWMzAuNDVhLjUzLjUzLDAsMCwwLC43NC40OUwxMiwyNy4xMlYyM2gydjQuNTNsOSw0LjYxVjI4aDJ2My43OWw4LjYzLTIuN2EuNTMu''@;'; put 'put ''NTMsMCwwLDAsLjM3LS41MVY3Ljg2QS41My41MywwLDAsMCwzMy4zMSw3LjM1Wk0xNCwyMUgxMlYxN2gyWm0wLTZIMTJWMTFoMlpNMjUsMjZIMjNWMjJoMlptMC02SDIzVjE2aDJaIi8+JyksZS5DbHJTaGFwZUNvbXBhc3M9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjgyLDE1LjMx''@;'; put 'put ''aDBMMTAuNDYsOWMtLjQ2LS4yNi0xLjExLjM3LS44Ni44NGw2LjE1LDEwLjU2LDEwLjU2LDYuMTVhLjY2LjY2LDAsMCwwLC44NC0uODZabS00LDQsMy0zLDQuNTUsNy40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMSwyOS45NVYyOS41M0gxN3YyLjQyQTE0LDE0LDAsMCwxLDQuMDUsMTlINi40N1YxN0g0LjA1QTE0LDE0LDAsMCwxLDE3LDQuMDVWNi40N2gyVjQuMDVBMTQsMTQsMCwwLDEsMzEuOTUsMTdIMjkuNTN2MmgyLjQy''@;'; put 'put ''QTE0LDE0LDAsMCwxLDE5LDMxLjk1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk02LjQ3LDE5SDQuMDVjMC0uMzMtLjA1LS42Ni0uMDUt''@;'; put 'put ''MXMwLS42Ny4wNS0xSDYuNDdaTTE3LDQuMDVjLjMzLDAsLjY2LS4wNSwxLS4wNXMuNjcsMCwxLC4wNVY2LjQ3SDE3Wm0yLDI3LjljLS4zMywwLS42Ni4wNS0xLC4wNXMtLjY3LDAtMS0uMDVWMjkuNTNoMlptOC01LjU4YS41OS41OSwwLDAsMS0uNjkuMTZMMTUuNzUsMjAuMzgsOS42LDkuODJj''@;'; put 'put ''LS4yNS0uNDcuMzktMS4xLjg2LS44NGwxMC4zNyw2LjMzaDBsNi4zMywxMC4zN0EuNTkuNTksMCwwLDEsMjcsMjYuMzdaTTI5LjUzLDE5VjE3aDIuNDJjMCwuMzMuMDUuNjYuMDUsMXMwLC42Ny0uMDUsMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE2Ljc3IDE5LjM1IDI0LjM1IDIzLjc3IDE5LjggMTYuMzMgMTYuNzcgMTkuMzUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZU1hcE1hcmtlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEsMSwzLjczLTMuNzNBMy43MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExMS43OSwxMS43OSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43''@;'; put 'put ''Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQTExLjc5LDExLjc5LDAsMCwwLDE4LDJaTTIzLjU5LDI0bC0uMzYuNTNjLTEuNzIsMi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01''@;'; put 'put ''LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMWE5Ljc4LDkuNzgsMCwxLDEsMTkuNTYsMEMyNy43OCwxNy43OSwyNS4zNiwyMS40LDIzLjU5LDI0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEsMSwzLjczLTMuNzNBMy43MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5YTcuNDksNy40OSwwLDAsMS0yLS4zM2MwLC4xOSwwLC4zOCwwLC41NywwLDQuMDYtMi40Miw3LjY3LTQuMTksMTAuMzFsLS4zNi41M2MtMS43Miwy''@;'; put 'put ''LjU4LTQsNS40Ny01LjIzLDYuOS0xLjE4LTEuNDMtMy41MS00LjMyLTUuMjMtNi45TDEyLjQyLDI0Yy0xLjc3LTIuNjQtNC4yLTYuMjUtNC4yLTEwLjMxQTkuNzcsOS43NywwLDAsMSwyMi41Niw1LjA5YTcuNDUsNy40NSwwLDAsMSwuNTItMkExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjcz''@;'; put 'put ''YzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5''@;'; put 'put ''Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTEuNzksMTEuNzksMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQt''@;'; put 'put ''OGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwxMS43OSwwLDAsMCwxOCwyWm0wLDE3YTYuNTYsNi41NiwwLDEsMSw2LjU2LTYuNTZBNi41Niw2LjU2LDAsMCwxLDE4LDE5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMTIuNDQiIHI9IjMuNzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5QTcuNDcsNy40NywwLDAsMSwyNC4z''@;'; put 'put ''OCwxMWE2LjU4LDYuNTgsMCwxLDEtMS42MS0zLDcuNDIsNy40MiwwLDAsMSwuMzEtNC44NEExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTku''@;'; put 'put ''ODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGUuQ2xyU2hh''@;'; put 'put ''cGVCaWN5Y2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LjUsMjkuNjVBNi41MSw2LjUxLDAsMCwxLDIsMjMuMTVhNi4zOSw2LjM5LDAsMCwxLDYuNS02LjM2QTYuMzksNi4zOSwwLDAsMSwxNSwyMy4xNSw2LjUxLDYuNTEsMCwwLDEsOC41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwx''@;'; put 'put ''LDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsOC41LDE4LjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI3LjUsMjkuNjVhNi41MSw2LjUxLDAsMCwxLTYuNS02LjUsNi41LDYuNSwwLDAsMSwxMywwQTYuNTEsNi41MSwwLDAsMSwy''@;'; put 'put ''Ny41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsMjcuNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOSwyNC42Nkg4YTEsMSwwLDAsMS0uODktMS40NWw1LTEwLDEuNzguOUw5''@;'; put 'put ''LjYyLDIyLjczSDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHJlY3QgeD0iMTMiIHk9IjEyLjY4IiB3aWR0aD0iMTEiIGhlaWdodD0iMS45MSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI4''@;'; put 'put ''LDI0LjY2YTEsMSwwLDAsMS0uOTQtLjY2TDIyLjI5LDEwLjY2SDIwYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtLjkzaDNhLjk0Ljk0LDAsMCwxLC45NC42bDUsMTRhMSwxLDAsMCwxLS42LDEuMjdBMSwxLDAsMCwxLDI4LDI0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTEzLDE0LjY2YTEsMSwwLDAsMS0uNzEtLjI5bC0xLjctMS43MUg4YTEsMSwwLDAsMS0xLTEsLjk0Ljk0LDAsMCwxLDEtMWgzYTEuMDgsMS4wOCwwLDAsMSwuNzUuMjdsMiwyYTEsMSwwLDAsMSwwLDEuNDFBMSwxLDAsMCwxLDEzLDE0LjY2WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE1LDIxLjljLTAuMi0yLTEuMi0zLjgtMi45LTQuOWwtMi41LDQuOUgxNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTcuMiwyMy40Yy0wLjItMC4z''@;'; put 'put ''LTAuMi0wLjcsMC0xbDMuMi02LjNjLTAuNi0wLjItMS4yLTAuMi0xLjgtMC4yQzUsMTUuOSwyLDE4LjgsMiwyMi40YzAsMy42LDIuOSw2LjUsNi41LDYuNVxuXHRjMywwLDUuNi0yLjEsNi4zLTVIOEM3LjcsMjMuOSw3LjMsMjMuNyw3LjIsMjMuNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LDIxLjloLTRjMCwwLjIsMCwwLjMsMCwwLjVjMCwwLjUtMC4xLDEtMC4yLDEuNUgxOVYyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNSwxNS45Yy0wLjMsMC0wLjYsMC0wLjks''@;'; put 'put ''MC4xbDIuNCw2LjZjMC4yLDAuNS0wLjEsMS4xLTAuNiwxLjNjLTAuMSwwLTAuMiwwLjEtMC4zLDAuMWMtMC40LDAtMC44LTAuMy0wLjktMC43bC0yLjQtNi43XG5cdGMtMy4yLDEuNi00LjUsNS41LTMsOC43YzEuNiwzLjIsNS41LDQuNSw4LjcsM2MzLjItMS42LDQuNS01LjUsMy04LjdDMzIu''@;'; put 'put ''MiwxNy4zLDMwLDE1LjksMjcuNSwxNS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMjQuNywxNi43YzAuNi0wLjMsMS4zLTAuNSwxLjktMC42bC0yLjctNy40QzIzLjgsOC4yLDIzLjQsOCwyMyw3LjloLTNjLTAuNiwwLTEsMC41LTEsMS4x''@;'; put 'put ''YzAsMC41LDAuNCwwLjksMSwwLjlcblx0YzAsMCwwLDAsMCwwaDIuM2wwLjcsMmgtOS42bC0xLjctMS43QzExLjUsMTAuMSwxMS4zLDEwLDExLDEwSDhjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMi42bDEuMiwxLjJsLTEuNSwzXG5cdGMwLjYsMC4yLDEuMywwLjUsMS44LDAuOGwxLjYt''@;'; put 'put ''My4yaDEwTDI0LjcsMTYuN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksZS5DbHJTaGFwZUJvYXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjEsMjcuMUMyOCwyNywyNi45LDI3LjQsMjYsMjguMmMtMS4xLDEuMS0yLjksMS4xLTQuMSwwYy0x''@;'; put 'put ''LTAuNy0yLjEtMS4xLTMuMy0xLjFjLTEuMi0wLjEtMi40LDAuMy0zLjMsMS4xXG5cdFx0QzE0LjcsMjguNywxNCwyOSwxMy4yLDI5cy0xLjUtMC4zLTIuMS0wLjhjLTEtMC44LTIuMi0xLjItMy40LTEuMnMtMi40LDAuNC0zLjQsMS4yQzMuNywyOC43LDIuOCwyOSwyLDI5djJcblx0XHRjMS4z''@;'; put 'put ''LDAuMSwyLjYtMC4zLDMuNi0xLjJDNi4yLDI5LjMsNy4xLDI5LDcuOSwyOWMwLjcsMCwxLjUsMC4zLDIuMSwwLjhjMS44LDEuNiw0LjYsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44XG5cdFx0YzAuNywwLDEuNCwwLjMsMiwwLjhjMS45LDEuNiw0LjYsMS42LDYuNSwwYzAuNS0w''@;'; put 'put ''LjUsMS4zLTAuOCwyLTAuOGMwLjcsMCwxLjQsMC4zLDEuOSwwLjhjMC45LDAuNywxLjksMS4xLDMsMS4ydi0yXG5cdFx0Yy0xLDAtMS4yLTAuNC0xLjctMC44QzMxLjQsMjcuNSwzMC4zLDI3LjEsMjkuMSwyNy4xeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+PHBhdGggZD0iTTYsMjNjMC0wLjYsMC41LTEsMS4xLTFIMzJsLTMuNSwzLjFoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC43LTAuOCwwLjYtMi4xLTAuMi0yLjhcblx0XHRDMzMsMjAuMiwzMi42LDIwLDMyLjEsMjBoLTI1Yy0xLjcsMC0zLDEuMy0zLDN2''@;'; put 'put ''My4yYzAuNS0wLjUsMS4yLTAuOCwxLjktMS4xVjIzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTguOSwxOUgxNXYtNy44YzAtMC42LTAuMy0xLjItMC44LTEuNkMxMy4zLDguOSwxMiw5LjEsMTEuNCwxMGwtNC4xLDUuOWMtMC40LDAu''@;'; put 'put ''Ni0wLjQsMS40LTAuMSwyLjFDNy41LDE4LjYsOC4yLDE5LDguOSwxOVxuXHRcdHogTTEzLjEsMTEuMkwxMywxN0g4LjlMMTMuMSwxMS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI2LDE4YzAuNC0wLjYsMC40LTEuNCwwLTJMMTku''@;'; put 'put ''Nyw1LjZjLTAuNC0wLjYtMS0xLTEuNy0xYy0xLjEsMC0yLDAuOS0yLDJWMTloOC4zQzI1LDE5LDI1LjcsMTguNiwyNiwxOHogTTE3LjksNi42XG5cdFx0bDYuNCwxMC41aC02LjRWNi42eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTM0''@;'; put 'put ''LDMxYy0xLjEtMC4xLTIuMS0wLjUtMy0xLjJjLTAuNS0wLjUtMS4yLTAuOC0yLTAuOGMtMC43LDAtMS41LDAuMy0yLDAuOGMtMC45LDAuOC0yLDEuMS0zLjEsMS4xYy0xLjIsMC0yLjQtMC40LTMuMy0xLjFcblx0Yy0xLjItMS4xLTMtMS4xLTQuMSwwYy0wLjksMC44LTIuMSwxLjItMy40LDEu''@;'; put 'put ''MmMtMS4yLDAtMi4zLTAuNC0zLjItMS4yYy0wLjYtMC41LTEuMy0wLjgtMi0wLjhjLTAuOCwwLTEuNywwLjMtMi4zLDAuOFxuXHRjLTEsMC44LTIuMywxLjItMy41LDEuMVYyOWMwLjgsMCwxLjctMC4zLDIuMy0wLjljMS0wLjgsMi4yLTEuMiwzLjQtMS4xYzEuMiwwLDIuNCwwLjQsMy4zLDEu''@;'; put 'put ''MmMxLjIsMS4xLDMsMS4xLDQuMiwwXG5cdGMxLjktMS42LDQuNy0xLjYsNi41LDBjMS4yLDEuMSwzLDEuMSw0LjEsMGMwLjktMC44LDIuMS0xLjIsMy4zLTEuMmMxLjEsMCwyLjIsMC40LDMsMS4yQzMyLjgsMjguNywzMywyOSwzNCwyOUwzNCwzMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMSwyNi4yYzAuNi0wLjUsMS4yLTAuOCwxLjktMVYyM2MwLTAuNiwwLjQtMS4xLDEtMS4xaDI1TDI4LjQsMjVoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJcblx0YzAuNy0wLjksMC41LTIuMS0wLjQtMi44QzMy''@;'; put 'put ''LjksMjAuMSwzMi40LDIwLDMyLDIwSDdjLTEuNywwLTMsMS4zLTMsM0w0LjEsMjYuMkw0LjEsMjYuMnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE0LjksMTguOUg4LjljLTEuMSwwLTItMC45LTItMmMwLTAuNCwwLjEtMC44LDAuNC0xLjJs''@;'; put 'put ''NC4xLTUuOGMwLjYtMC45LDEuOS0xLjEsMi44LTAuNWMwLjUsMC40LDAuOCwxLDAuOCwxLjZWMTguOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LjMsMTguOUgxNlY2LjRjMC0xLjEsMC45LTIsMi0yYzAuNywwLDEuMywwLjQsMS43LDFM''@;'; put 'put ''MjYsMTUuOGMwLjYsMSwwLjIsMi4yLTAuNywyLjdDMjUsMTguNywyNC42LDE4LjgsMjQuMywxOC45XG5cdEwyNC4zLDE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVDYW1wZXJ2YW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0i''@;'; put 'put ''TTkuNSwyNEM5LjUsMjQsOS41LDI0LDkuNSwyNEM3LjYsMjQsNiwyNS42LDYsMjcuNWMwLDAsMCwwLDAsMEM2LDI5LjQsNy42LDMxLDkuNSwzMWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMTEuNCwyNCw5LjUsMjR6IE05LjUsMjlDOC43LDI5LDgsMjguMyw4LDI3LjVTOC43LDI2LDku''@;'; put 'put ''NSwyNnMxLjUsMC43LDEuNSwxLjVTMTAuMywyOSw5LjUsMjl6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjMuNSwyNEMyMy41LDI0LDIzLjUsMjQsMjMuNSwyNGMtMS45LDAtMy41LDEuNi0zLjUsMy41YzAsMCwwLDAsMCwwYzAsMS45''@;'; put 'put ''LDEuNSwzLjUsMy41LDMuNWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMjUuNCwyNCwyMy41LDI0eiBNMjMuNSwyOWMtMC44LDAtMS41LTAuNy0xLjUtMS41czAuNy0xLjUsMS41LTEuNXMxLjUsMC43LDEuNSwxLjVTMjQuMywyOSwyMy41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMzLDIwLjFWMjBoLTAuMWwtMy41LTUuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjNWOS43QzMyLDcuMSwyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywxLjItNC40LDNINWMtMS43LDAtMywxLjMtMywzXG5cdFx0djE3aDJWMTFj''@;'; put 'put ''MC0wLjYsMC40LTEsMS0xaDEwLjlMMTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjR2OWg3Ljhcblx0XHRsMC4yLDAuM1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMt''@;'; put 'put ''M3YtMy4zTDMzLDIwLjF6IE0yNiwyMHYtNWgxLjVsMy4xLDVIMjZ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cmVjdCB4PSIxOSIgeT0iOSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCwyMiAyMiwyMiAyMiwxMyAxNSwxMyAxNSwyOCAxNywyOCAxNywxNSAyMCwxNSBcdCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTYsMjBoN3YtN0g2VjIweiBNOCwxNWgzdjNIOFYxNXoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik05LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVTNy42LDMxLDkuNSwzMWMwLDAsMCwwLDAsMGMxLjksMCwzLjUtMS42LDMuNS0zLjVjMCwwLDAtMC4xLDAtMC4xQzEzLDI1LjUsMTEuNCwyNCw5LjUs''@;'; put 'put ''MjR6IlxuXHRcdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjIzLjUiIGN5PSIyNy41IiByPSIzLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI5LjUsMTQuNUMzMSwxMy42LDMyLDEyLDMy''@;'; put 'put ''LDEwLjJWOS43YzAsMCwwLDAsMC0wLjFDMzIsNywyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywxLjItNC40LDNINWMtMS43LDAtMywxLjMtMywzdjE3XG5cdFx0aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlMMTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywz''@;'; put 'put ''MCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjdoLTN2OWg3Ljhcblx0XHRsMC4yLDAuM1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDI5LjUsMTQuNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+''@;'; put 'put ''PHJlY3QgeD0iMTkiIHk9IjkiIHdpZHRoPSI3LjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwLDIyIDIxLjksMjIgMjEuOSwxMyAxNSwxMyAxNSwyOCAxNi45LDI4IDE2LjksMTUgMjAsMTUgXHQiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHJlY3QgeD0iNiIgeT0iMTMiIHdpZHRoPSI2LjkiIGhlaWdodD0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlQ2FyYXZhbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMTMuNSwyMUMxMSwyMSw5LDIzLDksMjUuNXMyLDQuNSw0LjUsNC41YzIuNSwwLDQuNS0yLDQuNS00LjVDMTgsMjMsMTYsMjEsMTMuNSwyMXogTTEzLjUsMjhjLTEuNCwwLTIuNS0xLjEtMi41LTIuNVxuXHRcdHMxLjEtMi41LDIuNS0yLjVzMi41LDEuMSwyLjUsMi41UzE0LjksMjgsMTMu''@;'; put 'put ''NSwyOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNo''@;'; put 'put ''MnYtMkg1XG5cdFx0Yy0wLjYsMC0xLTAuNC0xLTFWOWMwLTAuNiwwLjQtMSwxLTFoMTguOGMwLjQsMCwwLjcsMC4yLDAuOSwwLjVsNC4yLDcuNWMwLjEsMC4xLDAuMSwwLjMsMC4xLDAuNVYyNGgtNFYxMmgtN3Y4aDJ2LTZoM3YxMGgtM3YyaDEzXG5cdFx0YzAuNiwwLDEtMC40LDEtMVMzMy42''@;'; put 'put ''LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE2LDEySDd2Nmg5VjEyeiBNMTQsMTZIOXYtMmg1VjE2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEzLjUsMzBD''@;'; put 'put ''MTEsMzAsOSwyOCw5LDI1LjVzMi00LjUsNC41LTQuNXM0LjUsMiw0LjUsNC41QzE4LDI4LDE2LDMwLDEzLjUsMzB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAu''@;'; put 'put ''NS0xLTEuNS0xLjUtMi42LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNoMnYtMkg1XG5cdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiwwLjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRo''@;'; put 'put ''LTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRjMC42LDAsMS0wLjQsMS0xUzMzLjYsMjQsMzMsMjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxOEg3di02aDlWMTh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVGZXJyeT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMjUuMWMtMS4yLDAtMi4zLDAuNC0zLjMsMS4xYzAsMCwwLDAsMCwwYy0xLjEsMS4xLTMsMS4xLTQuMSwwYy0wLjktMC44LTIuMS0xLjItMy4zLTEuMmMtMS4yLDAtMi4zLDAuNC0zLjIs''@;'; put 'put ''MS4yXG5cdFx0Yy0xLjIsMS4xLTMsMS4xLTQuMiwwQzEwLDI1LjQsOC44LDI1LDcuNiwyNWMtMS4yLDAtMi40LDAuNC0zLjQsMS4xQzMuNiwyNi43LDIuOCwyNywyLDI3djJjMS4zLDAuMSwyLjUtMC40LDMuNC0xLjJcblx0XHRDNi4xLDI3LjMsNi45LDI3LDcuNywyN2MwLjgsMCwxLjUsMC4z''@;'; put 'put ''LDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOFxuXHRcdGMxLjksMS42LDQuNiwxLjYsNi41LDBjMC41LTAuNSwxLjMtMC44LDItMC44YzAuNywwLDEuNSwwLjMsMiwwLjhjMC45LDAuNywyLDEuMSwzLjEs''@;'; put 'put ''MS4ydi0xLjljLTAuNywwLTEuNC0wLjMtMS45LTAuOVxuXHRcdEMzMS4zLDI1LjQsMzAuMSwyNSwyOSwyNS4xeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUuOSwyMy4yVjIwSDMybC0zLjUsM2gwLjJjMC44LDAsMS42LDAuMiwyLjIs''@;'; put 'put ''MC41bDIuNS0yLjJsMC4yLTAuMmMwLjUtMC42LDAuNS0xLjQsMC4yLTIuMWMtMC40LTAuNy0xLTEtMS44LTFoLTQuNFxuXHRcdEwyMi41LDExSDE3Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOC4xSDZ2Ni4xYy0xLjIsMC40LTIsMS41LTIsMi44djEuMVYyMHY0LjNsMC4xLTAuMUM0LjYsMjMuNyw1''@;'; put 'put ''LjIsMjMuNCw1LjksMjMuMnogTTgsMTBoMnY0SDhWMTB6XG5cdFx0IE02LDE3YzAtMC42LDAuNC0xLDEtMWg5di0yYzAtMC42LDAuNC0xLDEtMWg1bDAuNiwxSDE4djJoNS44bDEuMiwyLjFINlYxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yOC4yLDI1Yy0xLjIsMC0yLjQsMC40LTMuMywxLjJjLTEuMiwxLjEtMywxLjEtNC4xLDBjLTEuOS0xLjYtNC42LTEuNi02LjUsMGMtMS4yLDEuMS0yLjksMS4xLTQuMSwwXG5cdFx0Yy0wLjktMC44LTItMS4yLTMuMi0xLjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMkMzLjQsMjYuNywy''@;'; put 'put ''LjcsMjcsMiwyN3YyYzEuMS0wLjEsMi4yLTAuNSwzLjEtMS4yQzUuNiwyNy4zLDYuMywyNyw3LDI3XG5cdFx0YzAuNywwLDEuNSwwLjMsMiwwLjhjMS45LDEuNiw0LjcsMS42LDYuNiwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOGMxLjksMS42LDQuNywx''@;'; put 'put ''LjYsNi41LDBcblx0XHRjMC42LTAuNSwxLjMtMC44LDIuMS0wLjhjMC44LDAsMS42LDAuMywyLjEsMC44YzAuOSwwLjgsMi4yLDEuMywzLjQsMS4ydi0yYy0wLjgsMC0xLjYtMC4zLTIuMi0wLjhDMzAuNywyNS40LDI5LjUsMjUsMjguMiwyNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTUuOCwyMy4ydi0zLjNoMjYuMUwyOC40LDIzaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjEtMC4yYzAuNy0wLjksMC41LTIuMS0wLjQtMi44Yy0wLjMtMC4zLTAuOC0wLjQtMS4yLTAuNFxuXHRcdGgtNC4xbC01LjQtN2gtNS41''@;'; put 'put ''Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOEg2djYuMmMtMS4yLDAuNC0yLjEsMS41LTIuMSwyLjhsMCw3LjJsMC4xLDBDNC41LDIzLjcsNS4xLDIzLjQsNS44LDIzLjJ6IE0xNy45LDE0aDQuMlxuXHRcdGwxLjQsMmgtNS43VjE0eiBNNy45LDEwaDJ2NGgtMlYxMHoiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZVRyYWlsZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDE5LjJjLTMuMiwwLTUuOCwyLjYtNS44LDUuOHMyLjYsNS44LDUuOCw1LjhzNS44LTIuNiw1LjgtNS44UzE4LjIsMTkuMiwxNSwxOS4yeiBNMTUsMjkuMmMt''@;'; put 'put ''Mi4zLDAtNC4yLTEuOS00LjItNC4yXG5cdFx0czEuOS00LjIsNC4yLTQuMnM0LjIsMS45LDQuMiw0LjJTMTcuMywyOS4yLDE1LDI5LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgtMS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3Yy''@;'; put 'put ''aDEuMVxuXHRcdGMwLDAsMCwwLDAsMGMyLjEsMCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IE0yNiwxM0g0di0yaDIyVjEzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDlIMnYxMy4x''@;'; put 'put ''YzAsMCwwLDAsMCwwQzIsMjQuMywzLjcsMjYsNS45LDI2SDd2LTJINS45Yy0xLDAtMS44LTAuOC0xLjktMS45VjE1aDIydjcuMWMwLDEtMC44LDEuOC0xLjksMS45SDIzdjJoMS4xXG5cdGMwLDAsMCwwLDAsMGMyLjEsMCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMu''@;'; put 'put ''Niw5LDMzLDl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUuOGwwLDBDMjAuOCwyMS44LDE4LjIsMTkuMiwxNSwxOS4yeiBNMTYsMjZo''@;'; put 'put ''LTJ2LTJoMlYyNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZU9uSG9saWRheT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguMDgsMi4zNGMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNEExNy45MSwxNy45MSww''@;'; put 'put ''LDAsMCwyMywyOS42Nmw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjMsMSwxLDAsMCwwLC4xNi0uNTRWMjUuNjFhMTMsMTMsMCwwLDAsNC05LjI3QzM0LjA4LDguNjIsMjYuOSwyLjM0LDE4LjA4LDIuMzRaTTI4LjM3LDI0LjQ1YTEsMSwwLDAsMC0uMzIuNzN2NS4zNGwtNC4zOC0yLjc5YTEs''@;'; put 'put ''MSwwLDAsMC0uODMtLjExLDE2LDE2LDAsMCwxLTQuNzYuNzJjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4xLDExLjEsMCwwLDEsMjguMzcsMjQuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8''@;'; put 'put ''cGF0aCBkPSJNMzEuMSwxNS44MiwzMSwxNS42NywyOC41LDEzLjQ0YTMuMjUsMy4yNSwwLDAsMC0yLjM5LS44NGwtNS4zOC4zNC0zLjU5LTNhLjgxLjgxLDAsMCwwLS41Mi0uMTlIMTMuNTZhLjc4Ljc4LDAsMCwwLS42OS40Ljc3Ljc3LDAsMCwwLDAsLjc5bDEuMzYsMi40NC00LjcxLjI5LDEu''@;'; put 'put ''MzEsMS41MiwxNS4zOS0xYTEuNjUsMS42NSwwLDAsMSwxLjIyLjQzbDIuMzYsMi4xM2EuMTEuMTEsMCwwLDEsMCwuMDdjMCwuMDYtLjA5LjA1LS4xLjA2SDIxLjgybC0uMzUuMzctNS4xOSw1LjUzSDE0LjY0bDIuNzMtNS45SDguNTRMNy4xMywxNC4xNiw2LjUxLDEzYS44LjgsMCwwLDAtMS0u''@;'; put 'put ''MkEuODEuODEsMCwwLDAsNS4yLDEzLjlsMiwzLjk0YTEuMjEsMS4yMSwwLDAsMCwxLjA4LjY1aDYuNTdsLTEuOTQsNC4xOEExLjIsMS4yLDAsMCwwLDEzLDIzLjgzYTEuMjIsMS4yMiwwLDAsMCwxLC41NmgyLjQzYTEuMTcsMS4xNywwLDAsMCwuODgtLjM5bDUuMTgtNS41MWg3LjE2YTEuNjUs''@;'; put 'put ''MS42NSwwLDAsMCwxLjUyLS45MUExLjc0LDEuNzQsMCwwLDAsMzEuMSwxNS44MlpNMTQuOTIsMTEuMzFoMS40MWwyLjA5LDEuNzdMMTYsMTMuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICBcbiAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2''@;'; put 'put ''LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExNy45MSwxNy45MSwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjNBMSwxLDAsMCwwLDMwLDMyLjVWMjUuNzdhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjkuODQsMThIMjEuNTFh''@;'; put 'put ''LjQyLjQyLDAsMCwwLS4zLjEzbC01LjMsNS42NGEuMzkuMzksMCwwLDEtLjI5LjEzSDEzLjE5YS40MS40MSwwLDAsMS0uMzctLjU4bDIuNDctNS4zMkg3LjQ2YS40Mi40MiwwLDAsMS0uMzYtLjIybC0yLjctNUg2LjI0YS41My41MywwLDAsMSwuMzkuMThsMS41NiwxLjY5YS4zOC4zOCwwLDAs''@;'; put 'put ''MCwuMzMuMTRsNi4xOC0uMzgtMi0zLjU1aDIuODlhLjQ3LjQ3LDAsMCwxLC4zMS4xMUwxOS42MywxNGw2LjY5LS4zNWEyLjQ0LDIuNDQsMCwwLDEsMS44MS42M2wyLjQ3LDIuMjNBLjkyLjkyLDAsMCwxLDI5Ljg0LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIv''@;'; put 'put ''PlxuICAnKSxlLlRyYXZlbFNoYXBlcz17dHJ1Y2s6ZS5DbHJTaGFwZVRydWNrLGFpcnBsYW5lOmUuQ2xyU2hhcGVBaXJwbGFuZSxjYXI6ZS5DbHJTaGFwZUNhcixtYXA6ZS5DbHJTaGFwZU1hcCxjb21wYXNzOmUuQ2xyU2hhcGVDb21wYXNzLCJtYXAtbWFya2VyIjplLkNsclNoYXBlTWFwTWFy''@;'; put 'put ''a2VyLGJpY3ljbGU6ZS5DbHJTaGFwZUJpY3ljbGUsYm9hdDplLkNsclNoYXBlQm9hdCxjYW1wZXJ2YW46ZS5DbHJTaGFwZUNhbXBlcnZhbixjYXJhdmFuOmUuQ2xyU2hhcGVDYXJhdmFuLGZlcnJ5OmUuQ2xyU2hhcGVGZXJyeSx0cmFpbGVyOmUuQ2xyU2hhcGVUcmFpbGVyLCJvbi1ob2xpZGF5''@;'; put 'put ''IjplLkNsclNoYXBlT25Ib2xpZGF5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5UcmF2ZWxTaGFwZXMsInBsYW5lIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVHJhdmVsU2hhcGVzLmFpcnBsYW5lKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVHJhdmVsU2hhcGVzLCJhdXRvIiwoMCxy''@;'; put 'put ''LmRlc2NyaXB0b3JDb25maWcpKGUuVHJhdmVsU2hhcGVzLmNhcikpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChlLlRyYXZlbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyI6ZnVuY3Rpb24oQSxlLGwpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5kZXNjcmlwdG9yQ29uZmlnPXZvaWQgMCxlLmRlc2NyaXB0b3JDb25maWc9ZnVuY3Rpb24o''@;'; put 'put ''cil7cmV0dXJue2VudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOnJ9fX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyLnRzIjpmdW5jdGlvbihBLGUsbCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlNoYXBlVGVtcGxhdGVPYnNlcnZlcj1lLmNoYW5nZUhhbmRsZXJDYWxsYmFja3M9dm9pZCAwLGUuY2hhbmdlSGFuZGxlckNhbGxiYWNrcz17fTt2YXIgcj0oT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImluc3RhbmNlIix7Z2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGEuc2luZ2xlSW5zdGFuY2U9YS5zaW5nbGVJbnN0YW5jZT9hLnNpbmdsZUluc3RhbmNlOm5ldyBhfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGEucHJvdG90eXBlLnN1YnNjcmliZVRvPWZ1bmN0aW9uKGMsbyl7dmFyIGg9dGhpcztyZXR1cm4gdGhp''@;'; put 'put ''cy5jYWxsYmFja3NbY10/LTE9PT10aGlzLmNhbGxiYWNrc1tjXS5pbmRleE9mKG8pJiZ0aGlzLmNhbGxiYWNrc1tjXS5wdXNoKG8pOnRoaXMuY2FsbGJhY2tzW2NdPVtvXSxmdW5jdGlvbigpe3ZhciBmPWguY2FsbGJhY2tzW2NdLmluZGV4T2Yobyk7aC5jYWxsYmFja3NbY10uc3BsaWNlKGYs''@;'; put 'put ''MSksMD09PWguY2FsbGJhY2tzW2NdLmxlbmd0aCYmZGVsZXRlIGguY2FsbGJhY2tzW2NdfX0sYS5wcm90b3R5cGUuZW1pdENoYW5nZXM9ZnVuY3Rpb24oYyxvKXt0aGlzLmNhbGxiYWNrc1tjXSYmdGhpcy5jYWxsYmFja3NbY10ubWFwKGZ1bmN0aW9uKGgpe2gobyl9KX0sYSk7ZnVuY3Rpb24g''@;'; put 'put ''YSgpe3RoaXMuY2FsbGJhY2tzPWUuY2hhbmdlSGFuZGxlckNhbGxiYWNrc31lLlNoYXBlVGVtcGxhdGVPYnNlcnZlcj1yfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiOmZ1bmN0aW9uKEEsZSxsKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuY2xySWNvblNWRz12b2lkIDAsZS5jbHJJY29uU1ZHPWZ1bmN0aW9uKHIpe3ZhciBhPSIiO3JldHVybi0xPHIuaW5kZXhPZigiLS1iYWRnZWQiKSYmKGErPSJjYW4tYmFkZ2UgIiksLTE8ci5pbmRleE9mKCItLWFsZXJ0ZWQiKSYm''@;'; put 'put ''KGErPSJjYW4tYWxlcnQgIiksLTE8ci5pbmRleE9mKCJjbHItaS1zb2xpZCIpJiYoYSs9Imhhcy1zb2xpZCAiKSwoYT8nPHN2ZyB2ZXJzaW9uPSIxLjEiIGNsYXNzPSInK2ErJyIgdmlld0JveD0iMCAwIDM2IDM2IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICAgIHht''@;'; put 'put ''bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9ImltZyI+JzonPHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAzNiAzNiIgcHJlc2VydmVBc3BlY3RSYXRp''@;'; put 'put ''bz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPicpK3IrIjwvc3ZnPiJ9fX0saz17fSxYLm09RjEsWC5jPWss''@;'; put 'put ''WC5kPWZ1bmN0aW9uKEEsZSxsKXtYLm8oQSxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZSx7ZW51bWVyYWJsZTohMCxnZXQ6bH0pfSxYLnI9ZnVuY3Rpb24oQSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KEEsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sWC50PWZ1bmN0aW9uKEEsZSl7aWYoMSZlJiYoQT1YKEEpKSw4JmV8fDQmZSYmIm9iamVjdCI9PXR5cGVvZiBBJiZBJiZBLl9fZXNN''@;'; put 'put ''b2R1bGUpcmV0dXJuIEE7dmFyIGw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihYLnIobCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOkF9KSwyJmUmJiJzdHJpbmciIT10eXBlb2YgQSlmb3IodmFyIHIgaW4gQSlYLmQobCxyLGZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBBW2FdfS5iaW5kKG51bGwscikpO3JldHVybiBsfSxYLm49ZnVuY3Rpb24oQSl7dmFyIGU9QSYmQS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIEEuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gQX07cmV0dXJuIFguZChlLCJhIixlKSxlfSxYLm89ZnVuY3Rpb24o''@;'; put 'put ''QSxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsZSl9LFgucD0iIixYKFgucz0iLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLXNmeC50cyIpO2Z1bmN0aW9uIFgoQSl7aWYoa1tBXSlyZXR1cm4ga1tBXS5leHBvcnRzO3ZhciBlPWtbQV09e2k6''@;'; put 'put ''QSxsOiExLGV4cG9ydHM6e319O3JldHVybiBGMVtBXS5jYWxsKGUuZXhwb3J0cyxlLGUuZXhwb3J0cyxYKSxlLmw9ITAsZS5leHBvcnRzfXZhciBGMSxrfSk7'';'; 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.2cc22f76abd58ff5-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 ''ZGl2LmNvZGUtdG9vbGJhcntwb3NpdGlvbjpyZWxhdGl2ZX1kaXYuY29kZS10b29sYmFyPi50b29sYmFye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA7dG9wOi4zZW07cmlnaHQ6LjJlbTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2UtaW4tb3V0O29wYWNpdHk6MH1kaXYuY29kZS10''@;'; put 'put ''b29sYmFyOmhvdmVyPi50b29sYmFye29wYWNpdHk6MX1kaXYuY29kZS10b29sYmFyOmZvY3VzLXdpdGhpbj4udG9vbGJhcntvcGFjaXR5OjF9ZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVte2Rpc3BsYXk6aW5saW5lLWJsb2NrfWRpdi5jb2RlLXRvb2xiYXI+LnRvb2xi''@;'; put 'put ''YXI+LnRvb2xiYXItaXRlbT5he2N1cnNvcjpwb2ludGVyfWRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5idXR0b257YmFja2dyb3VuZDpub25lO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2xpbmUtaGVpZ2h0Om5vcm1hbDtvdmVyZmxvdzp2aXNp''@;'; put 'put ''YmxlO3BhZGRpbmc6MDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lfWRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5hLGRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5i''@;'; put 'put ''dXR0b24sZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVtPnNwYW57Y29sb3I6I2JiYjtmb250LXNpemU6LjhlbTtwYWRkaW5nOjAgLjVlbTtiYWNrZ3JvdW5kOiNmNWYyZjA7YmFja2dyb3VuZDpyZ2JhKDIyNCwyMjQsMjI0LC4yKTtib3gtc2hhZG93OjAgMnB4ICMwMDAz''@;'; put 'put ''O2JvcmRlci1yYWRpdXM6LjVlbX1kaXYuY29kZS10b29sYmFyPi50b29sYmFyPi50b29sYmFyLWl0ZW0+YTpob3ZlcixkaXYuY29kZS10b29sYmFyPi50b29sYmFyPi50b29sYmFyLWl0ZW0+YTpmb2N1cyxkaXYuY29kZS10b29sYmFyPi50b29sYmFyPi50b29sYmFyLWl0ZW0+YnV0dG9uOmhv''@;'; put 'put ''dmVyLGRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5idXR0b246Zm9jdXMsZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVtPnNwYW46aG92ZXIsZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVtPnNwYW46Zm9jdXN7Y29sb3I6''@;'; put 'put ''aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0vKiEKICogQ29weXJpZ2h0IChjKSBIQU5EU09OQ09ERSBzcC4geiBvLiBvLgogKiAKICogSEFORFNPTlRBQkxFIGlzIGEgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgSEFORFNPTkNPREUgc3AuIHogby4gby4sIGEgUG9saXNoIGNvcnBvcmF0''@;'; put 'put ''aW9uIGJhc2VkIGluCiAqIEdkeW5pYSwgUG9sYW5kLCBhdCBBbGVqYSBad3ljaWXMqHN0d2EgOTYtOTgsIHJlZ2lzdGVyZWQgYnkgdGhlIERpc3RyaWN0IENvdXJ0IGluIEdkYW5zayB1bmRlciBudW1iZXIKICogNTM4NjUxLCBFVSB0YXggSUQgbnVtYmVyOiBQTDU4NjIyOTQwMDIsIHNoYXJl''@;'; put 'put ''IGNhcGl0YWw6IFBMTiA2Miw4MDAuMDAuCiAqIAogKiBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBhcHBsaWNhYmxlIGNvcHlyaWdodCBsYXdzLCBpbmNsdWRpbmcgaW50ZXJuYXRpb25hbCB0cmVhdGllcywgYW5kIGR1YWwtCiAqIGxpY2Vuc2VkIOKAkyBkZXBlbmRpbmcgb24gd2hl''@;'; put 'put ''dGhlciB5b3VyIHVzZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgbWVhbmluZyBpbnRlbmRlZCBmb3Igb3IKICogcmVzdWx0aW5nIGluIGNvbW1lcmNpYWwgYWR2YW50YWdlIG9yIG1vbmV0YXJ5IGNvbXBlbnNhdGlvbiwgb3Igbm90LgogKiAKICogSWYgeW91ciB1c2UgaXMgc3RyaWN0bHkg''@;'; put 'put ''cGVyc29uYWwgb3Igc29sZWx5IGZvciBldmFsdWF0aW9uIHB1cnBvc2VzLCBtZWFuaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZwogKiB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJlIG91dHNpZGUgdGhlIHByb2R1Y3Rp''@;'; put 'put ''b24gZW52aXJvbm1lbnQsCiAqIHlvdSBhZ3JlZSB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgaW5jbHVkZWQgaW4gdGhlICJoYW5kc29udGFibGUtbm9uLWNvbW1lcmNpYWwtbGljZW5zZS5wZGYiIGZpbGUuCiAqIAogKiBZb3VyIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGZvciBjb21tZXJjaWFs''@;'; put 'put ''IHB1cnBvc2VzIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGluY2x1ZGVkIGluIGFuIGFwcGxpY2FibGUKICogbGljZW5zZSBhZ3JlZW1lbnQuCiAqIAogKiBJbiBhbnkgY2FzZSwgeW91IG11c3Qgbm90IG1ha2UgYW55IHN1Y2ggdXNlIG9mIHRoaXMgc29mdHdhcmUgYXMgdG8gZGV2ZWxvcCBz''@;'; put 'put ''b2Z0d2FyZSB3aGljaCBtYXkgYmUKICogY29uc2lkZXJlZCBjb21wZXRpdGl2ZSB3aXRoIHRoaXMgc29mdHdhcmUuCiAqIAogKiBVTkxFU1MgRVhQUkVTU0xZIEFHUkVFRCBPVEhFUldJU0UsIEhBTkRTT05DT0RFIFBST1ZJREVTIFRISVMgU09GVFdBUkUgT04gQU4gIkFTIElTIgogKiBCQVNJ''@;'; put 'put ''UywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEFORCBJTiBOTyBFVkVOVCBBTkQgVU5ERVIgTk8KICogTEVHQUwgVEhFT1JZLCBTSEFMTCBIQU5EU09OQ09ERSBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZIERJUkVDVCwK''@;'; put 'put ''ICogSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkgQ0hBUkFDVEVSIEFSSVNJTkcgRlJPTQogKiBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSElTIFNPRlRXQVJFLgogKiAKICogVmVyc2lvbjogMTIuMS4yCiAqIFJlbGVhc2Ug''@;'; put 'put ''ZGF0ZTogMDgvMDcvMjAyMiAoYnVpbHQgYXQgMDgvMDcvMjAyMiAwOToyNTo0MCkKICovLmhhbmRzb250YWJsZSAudGFibGUgdGgsLmhhbmRzb250YWJsZSAudGFibGUgdGR7Ym9yZGVyLXRvcDpub25lfS5oYW5kc29udGFibGUgdHJ7YmFja2dyb3VuZDojZmZmfS5oYW5kc29udGFibGUgdGR7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjppbmhlcml0fS5oYW5kc29udGFibGUgLnRhYmxlIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSAudGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwuaGFuZHNvbnRhYmxlIC50YWJsZSBjb2xncm91cCt0aGVh''@;'; put 'put ''ZCB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC50YWJsZSBjb2xncm91cCt0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwuaGFuZHNvbnRhYmxlIC50YWJsZSB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC50YWJsZSB0aGVhZDpmaXJzdC1j''@;'; put 'put ''aGlsZCB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjQ0NDQ0NDfS5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVke2JvcmRlcjowO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZX0uaGFuZHNvbnRhYmxlIC50YWJsZS1ib3JkZXJlZCB0aCwuaGFuZHNvbnRhYmxlIC50''@;'; put 'put ''YWJsZS1ib3JkZXJlZCB0ZHtib3JkZXItbGVmdDpub25lfS5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVkIHRoOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQ0NDQ0NDfS5oYW5kc29udGFi''@;'; put 'put ''bGUgLnRhYmxlPnRib2R5PnRyPnRkLC5oYW5kc29udGFibGUgLnRhYmxlPnRib2R5PnRyPnRoLC5oYW5kc29udGFibGUgLnRhYmxlPnRmb290PnRyPnRkLC5oYW5kc29udGFibGUgLnRhYmxlPnRmb290PnRyPnRoLC5oYW5kc29udGFibGUgLnRhYmxlPnRoZWFkPnRyPnRkLC5oYW5kc29udGFi''@;'; put 'put ''bGUgLnRhYmxlPnRoZWFkPnRyPnRoe2xpbmUtaGVpZ2h0OjIxcHg7cGFkZGluZzowfS5jb2wtbGctMS5oYW5kc29udGFibGUsLmNvbC1sZy0xMC5oYW5kc29udGFibGUsLmNvbC1sZy0xMS5oYW5kc29udGFibGUsLmNvbC1sZy0xMi5oYW5kc29udGFibGUsLmNvbC1sZy0yLmhhbmRzb250YWJs''@;'; put 'put ''ZSwuY29sLWxnLTMuaGFuZHNvbnRhYmxlLC5jb2wtbGctNC5oYW5kc29udGFibGUsLmNvbC1sZy01LmhhbmRzb250YWJsZSwuY29sLWxnLTYuaGFuZHNvbnRhYmxlLC5jb2wtbGctNy5oYW5kc29udGFibGUsLmNvbC1sZy04LmhhbmRzb250YWJsZSwuY29sLWxnLTkuaGFuZHNvbnRhYmxlLC5j''@;'; put 'put ''b2wtbWQtMS5oYW5kc29udGFibGUsLmNvbC1tZC0xMC5oYW5kc29udGFibGUsLmNvbC1tZC0xMS5oYW5kc29udGFibGUsLmNvbC1tZC0xMi5oYW5kc29udGFibGUsLmNvbC1tZC0yLmhhbmRzb250YWJsZSwuY29sLW1kLTMuaGFuZHNvbnRhYmxlLC5jb2wtbWQtNC5oYW5kc29udGFibGUsLmNv''@;'; put 'put ''bC1tZC01LmhhbmRzb250YWJsZSwuY29sLW1kLTYuaGFuZHNvbnRhYmxlLC5jb2wtbWQtNy5oYW5kc29udGFibGUsLmNvbC1tZC04LmhhbmRzb250YWJsZSwuY29sLW1kLTkuaGFuZHNvbnRhYmxlIC5jb2wtc20tMS5oYW5kc29udGFibGUsLmNvbC1zbS0xMC5oYW5kc29udGFibGUsLmNvbC1z''@;'; put 'put ''bS0xMS5oYW5kc29udGFibGUsLmNvbC1zbS0xMi5oYW5kc29udGFibGUsLmNvbC1zbS0yLmhhbmRzb250YWJsZSwuY29sLXNtLTMuaGFuZHNvbnRhYmxlLC5jb2wtc20tNC5oYW5kc29udGFibGUsLmNvbC1zbS01LmhhbmRzb250YWJsZSwuY29sLXNtLTYuaGFuZHNvbnRhYmxlLC5jb2wtc20t''@;'; put 'put ''Ny5oYW5kc29udGFibGUsLmNvbC1zbS04LmhhbmRzb250YWJsZSwuY29sLXNtLTkuaGFuZHNvbnRhYmxlIC5jb2wteHMtMS5oYW5kc29udGFibGUsLmNvbC14cy0xMC5oYW5kc29udGFibGUsLmNvbC14cy0xMS5oYW5kc29udGFibGUsLmNvbC14cy0xMi5oYW5kc29udGFibGUsLmNvbC14cy0y''@;'; put 'put ''LmhhbmRzb250YWJsZSwuY29sLXhzLTMuaGFuZHNvbnRhYmxlLC5jb2wteHMtNC5oYW5kc29udGFibGUsLmNvbC14cy01LmhhbmRzb250YWJsZSwuY29sLXhzLTYuaGFuZHNvbnRhYmxlLC5jb2wteHMtNy5oYW5kc29udGFibGUsLmNvbC14cy04LmhhbmRzb250YWJsZSwuY29sLXhzLTkuaGFu''@;'; put 'put ''ZHNvbnRhYmxle3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0uaGFuZHNvbnRhYmxlIC50YWJsZS1zdHJpcGVkPnRib2R5PnRyOm50aC1vZi10eXBlKGV2ZW4pe2JhY2tncm91bmQtY29sb3I6I2ZmZn0uaGFuZHNvbnRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUg''@;'; put 'put ''LmhpZGV7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLnd0SGlkZXJ7d2lkdGg6MH0uaGFuZHNvbnRhYmxlIC53dFNwcmVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjA7aGVpZ2h0OmF1dG99LmhhbmRzb250''@;'; put 'put ''YWJsZSB0YWJsZSwuaGFuZHNvbnRhYmxlIHRib2R5LC5oYW5kc29udGFibGUgdGhlYWQsLmhhbmRzb250YWJsZSB0ZCwuaGFuZHNvbnRhYmxlIHRoLC5oYW5kc29udGFibGUgaW5wdXQsLmhhbmRzb250YWJsZSB0ZXh0YXJlYSwuaGFuZHNvbnRhYmxlIGRpdntib3gtc2l6aW5nOmNvbnRlbnQt''@;'; put 'put ''Ym94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3h9LmhhbmRzb250YWJsZSBpbnB1dCwuaGFuZHNvbnRhYmxlIHRleHRhcmVhe21pbi1oZWlnaHQ6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIHRhYmxlLmh0Q29yZXtib3JkZXItY29sbGFw''@;'; put 'put ''c2U6c2VwYXJhdGU7Ym9yZGVyLXNwYWNpbmc6MDttYXJnaW46MDtib3JkZXItd2lkdGg6MDt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MDtvdXRsaW5lLXdpZHRoOjA7Y3Vyc29yOmRlZmF1bHQ7bWF4LXdpZHRoOm5vbmU7bWF4LWhlaWdodDpub25lfS5oYW5kc29udGFibGUgY29sLC5oYW5k''@;'; put 'put ''c29udGFibGUgY29sLnJvd0hlYWRlcnt3aWR0aDo1MHB4fS5oYW5kc29udGFibGUgdGgsLmhhbmRzb250YWJsZSB0ZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYzto''@;'; put 'put ''ZWlnaHQ6MjJweDtlbXB0eS1jZWxsczpzaG93O2xpbmUtaGVpZ2h0OjIxcHg7cGFkZGluZzowIDRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7dmVydGljYWwtYWxpZ246dG9wO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lLXdpZHRoOjA7d2hpdGUtc3BhY2U6cHJlLXdyYXB9W2Rpcj1ydGxdLmhh''@;'; put 'put ''bmRzb250YWJsZSB0aCxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRke2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUgdGg6bGFzdC1jaGlsZHtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjYztib3Jk''@;'; put 'put ''ZXItYm90dG9tOjFweCBzb2xpZCAjY2NjfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGg6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgdGg6bnRoLWNoaWxkKDIp''@;'; put 'put ''LC5oYW5kc29udGFibGUgdGQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxkLFtkaXI9cnRsXS5oYW5kc29udGFibGUgdGg6bnRoLWNoaWxkKDIpLFtkaXI9cnRsXS5oYW5kc29udGFibGUgdGQ6Zmly''@;'; put 'put ''c3Qtb2YtdHlwZXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2N9LmhhbmRzb250YWJsZSAuaHRfY2xvbmVfdG9wIHRoOm50aC1jaGlsZCgyKXtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odF9jbG9uZV90''@;'; put 'put ''b3AgdGg6bnRoLWNoaWxkKDIpe2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUuaHRSb3dIZWFkZXJzIHRoZWFkIHRyIHRoOm50aC1jaGlsZCgyKXtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaGFuZHNvbnRh''@;'; put 'put ''YmxlLmh0Um93SGVhZGVycyB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjfS5odF9t''@;'; put 'put ''YXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGluZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZSB0Ym9keSB0ciB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGU6bm90KC5odF9jbG9u''@;'; put 'put ''ZV90b3ApIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2NjfVtkaXI9cnRsXS5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGluZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZSB0Ym9k''@;'; put 'put ''eSB0ciB0aCxbZGlyPXJ0bF0uaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGU6bm90KC5odF9jbG9uZV90b3ApIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0''@;'; put 'put ''OjFweCBzb2xpZCAjY2NjfS5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlclRvcCk6bm90KC5pbm5lckJvcmRlckJvdHRvbSkgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pfi5oYW5kc29udGFibGUg''@;'; put 'put ''dGhlYWQgdHI6bGFzdC1jaGlsZCB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pIHRoZWFkIHRyLmxhc3RDaGlsZCB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pfi5oYW5kc29u''@;'; put 'put ''dGFibGUgdGhlYWQgdHIubGFzdENoaWxkIHRoe2JvcmRlci1ib3R0b20td2lkdGg6MH0uaGFuZHNvbnRhYmxlIHRoe2JhY2tncm91bmQtY29sb3I6I2YwZjBmMDtjb2xvcjojMjIyO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjQwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmhhbmRzb250''@;'; put 'put ''YWJsZSB0aGVhZCB0aHtwYWRkaW5nOjB9LmhhbmRzb250YWJsZSB0aC5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojY2NjfS5oYW5kc29udGFibGUgdGhlYWQgdGggLnJlbGF0aXZle3BhZGRpbmc6MnB4IDRweH0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVye2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO2xpbmUtaGVpZ2h0OjEuMX0uaGFuZHNvbnRhYmxlIC53dEJvcmRlcntwb3NpdGlvbjphYnNvbHV0ZTtmb250LXNpemU6MH0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5jdXJyZW50e3otaW5k''@;'; put 'put ''ZXg6MTB9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuYXJlYXt6LWluZGV4Ojh9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuZmlsbHt6LWluZGV4OjZ9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY29ybmVye2ZvbnQtc2l6ZTowO2N1cnNvcjpjcm9zc2hhaXJ9Lmh0X2Nsb25lX21hc3Rlcnt6LWlu''@;'; put 'put ''ZGV4OjEwMH0uaHRfY2xvbmVfaW5saW5lX3N0YXJ0e3otaW5kZXg6MTIwfS5odF9jbG9uZV9ib3R0b217ei1pbmRleDoxMzB9Lmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye3otaW5kZXg6MTUwfS5odF9jbG9uZV90b3B7ei1pbmRleDoxNjB9Lmh0X2Nsb25lX3RvcF9pbmxp''@;'; put 'put ''bmVfc3RhcnRfY29ybmVye3otaW5kZXg6MTgwfS5oYW5kc29udGFibGUgY29sLmhpZGRlbnt3aWR0aDowIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiwuaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiB0ZCwuaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiB0aHtkaXNwbGF5Om5vbmV9Lmh0''@;'; put 'put ''X21hc3RlciwuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odF9jbG9uZV90b3AsLmh0X2Nsb25lX2JvdHRvbXtvdmVyZmxvdzpoaWRkZW59Lmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6YXV0b30uaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGhlYWQsLmhhbmRzb250YWJsZSAuaHRfbWFz''@;'; put 'put ''dGVyIHRyIHRoLC5oYW5kc29udGFibGUgLmh0X2Nsb25lX2lubGluZV9zdGFydCB0aGVhZHt2aXNpYmlsaXR5OmhpZGRlbn0uaHRfY2xvbmVfdG9wIC53dEhvbGRlciwuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC53dEhvbGRlciwuaHRfY2xvbmVfYm90dG9tIC53dEhvbGRlcntvdmVyZmxvdzpo''@;'; put 'put ''aWRkZW59LmhhbmRzb250YWJsZXt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxPeHlnZW4sVWJ1bnR1LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEz''@;'; put 'put ''cHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMzNzM3Mzd9LmhhbmRzb250YWJsZSBhe2NvbG9yOiMxMDRhY2N9LmhhbmRzb250YWJsZS5odEF1dG9TaXple3Zpc2liaWxpdHk6aGlkZGVuO2xlZnQ6LTk5MDAwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTAwMHB4fS5oYW5kc29udGFibGUg''@;'; put 'put ''dGQuaHRJbnZhbGlke2JhY2tncm91bmQtY29sb3I6I2ZmNGM0MiFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSB0ZC5odE5vV3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9I2hvdC1kaXNwbGF5LWxpY2Vuc2UtaW5mb3tmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxT''@;'; put 'put ''ZWdvZSBVSSxSb2JvdG8sT3h5Z2VuLFVidW50dSxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojMzczNzM3O3BhZGRpbmc6NXB4IDAgM3B4O3RleHQtYWxpZ246bGVmdH0jaG90LWRpc3BsYXktbGljZW5zZS1pbmZv''@;'; put 'put ''IGF7Y29sb3I6IzEwNGFjYztmb250LXNpemU6MTBweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2N1cnNvcjpjb2wtcmVzaXplO3otaW5kZXg6MjEwO3dpZHRoOjVweDtoZWlnaHQ6MjVweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxS''@;'; put 'put ''b3dSZXNpemVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtjdXJzb3I6cm93LXJlc2l6ZTt6LWluZGV4OjIxMDtoZWlnaHQ6NXB4O3dpZHRoOjUwcHh9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplcjpob3ZlciwuaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyLmFj''@;'; put 'put ''dGl2ZSwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyOmhvdmVyLC5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXIuYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzM0YTlkYn0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyR3VpZGV7cG9zaXRpb246YWJzb2x1dGU7''@;'; put 'put ''cmlnaHQ6dW5zZXQ7dG9wOjA7YmFja2dyb3VuZC1jb2xvcjojMzRhOWRiO2Rpc3BsYXk6bm9uZTt3aWR0aDowO2JvcmRlci1yaWdodDoxcHggZGFzaGVkICM3Nzc7Ym9yZGVyLWxlZnQ6bm9uZTttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFi''@;'; put 'put ''bGUgLm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZXtsZWZ0OnVuc2V0O2JvcmRlci1sZWZ0OjFweCBkYXNoZWQgIzc3Nztib3JkZXItcmlnaHQ6bm9uZTttYXJnaW4tcmlnaHQ6NXB4O21hcmdpbi1sZWZ0OnVuc2V0fS5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJHdWlkZXtwb3NpdGlv''@;'; put 'put ''bjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7YmFja2dyb3VuZC1jb2xvcjojMzRhOWRiO2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MDtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgIzc3NzttYXJnaW4tdG9wOjVweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyR3VpZGUuYWN0aXZl''@;'; put 'put ''LC5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJHdWlkZS5hY3RpdmV7ZGlzcGxheTpibG9jazt6LWluZGV4OjIwOX0uaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5ne3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmNvbHVtblNvcnRpbmcuc29ydEFjdGlvbjpob3Zlcnt0''@;'; put 'put ''ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyfS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzpiZWZvcmV7dG9wOjUwJTttYXJnaW4tdG9wOi02cHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7''@;'; put 'put ''cmlnaHQ6LTlweDtsZWZ0OnVuc2V0O2NvbnRlbnQ6IiI7aGVpZ2h0OjEwcHg7d2lkdGg6NXB4O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6cmlnaHR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSBzcGFuLmNv''@;'; put 'put ''bEhlYWRlci5jb2x1bW5Tb3J0aW5nOmJlZm9yZXtwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MDtsZWZ0Oi05cHg7cmlnaHQ6dW5zZXQ7YmFja2dyb3VuZC1wb3NpdGlvbi14OmxlZnR9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLmFzY2VuZGluZzpi''@;'; put 'put ''ZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFvQ0FNQUFBREo3eXJwQUFBQUtsQk1WRVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtFODZJ''@;'; put 'put ''QUFBQURYUlNUbE1BQkJFbVJHcHJsSlc3MmU3N3RUa1RLd0FBQUZOSlJFRlVlQUh0emprU2dDQVVCTkhQZ3NveTk3K3VsR1hScUpFNUwreGt4b1l0MlVkc0xiNWJxRklOeithTHV1TG41ckl1MlJrTzNmWnBXRU5pbU5naXc2aUJZUlRQTUxKakdGeFFaMWh4eGIveEJJMXFDOGszOUNkS0FBQUFB''@;'; put 'put ''RWxGVGtTdVFtQ0MpfS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5kZXNjZW5kaW5nOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQW9DQU1BQUFESjd5cnBBQUFB''@;'; put 'put ''S2xCTVZFVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0U4NklBQUFBRFhSU1RsTUFCQkVtUkdwcmxKVzcyZTc3dFRrVEt3QUFBRkpKUkVGVWVBSHR6amtTZ0NBUVJORm1RWVVaN245ZEtVdnJ1MFRtdlBBbjNicjBRZmdkWjV4eDZ4K3JR''@;'; put 'put ''bjIzR3FUWW5xMUZEY251elpJTzJXbWVkVnFJUlZ4Z0dLRXlqTmdZUmpLR2taMWhGSVozSTcwTHlNMFZ0VThBQUFBQVNVVk9SSzVDWUlJPSl9Lmh0R2hvc3RUYWJsZSAuaHRDb3JlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCk6YWZ0ZXJ7Y29u''@;'; put 'put ''dGVudDoiKiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDoyMHB4fS5oYW5kc29udGFibGUgdGQuYXJlYSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMiwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMywuaGFu''@;'; put 'put ''ZHNvbnRhYmxlIHRkLmFyZWEtNCwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNiwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtN3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0xOmJl''@;'; put 'put ''Zm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMjpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTM6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS00OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3JlLC5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYS03OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2JvdHRvbTotMTAwJSBcCTtiYWNrZ3JvdW5kOiMwMDVlZmZ9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUp''@;'; put 'put ''LCgtbXMtaGlnaC1jb250cmFzdDogbm9uZSl7LmhhbmRzb250YWJsZSB0ZC5hcmVhOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRk''@;'; put 'put ''LmFyZWEtNDpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS02OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7Ym90dG9tOi0xMDAlfX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3Jle29wYWNpdHk6LjF9Lmhh''@;'; put 'put ''bmRzb250YWJsZSB0ZC5hcmVhLTE6YmVmb3Jle29wYWNpdHk6LjJ9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3Jle29wYWNpdHk6LjI3fS5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZXtvcGFjaXR5Oi4zNX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmV7b3BhY2l0eTou''@;'; put 'put ''NDF9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3Jle29wYWNpdHk6LjQ3fS5oYW5kc29udGFibGUgdGQuYXJlYS02OmJlZm9yZXtvcGFjaXR5Oi41NH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7b3BhY2l0eTouNTh9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGlnaGxp''@;'; put 'put ''Z2h0LC5oYW5kc29udGFibGUgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNkY2RjZGN9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6IzhlYjBlNztjb2xvcjojMDAwfS5oYW5kc29udGFibGVJbnB1dHtib3JkZXI6bm9uZTtvdXRsaW5lLXdpZHRoOjA7bWFyZ2luOjA7cGFkZGluZzoxcHggNXB4IDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDoyMXB4O2ZvbnQtc2l6ZTppbmhlcml0O2JveC1zaGFkb3c6''@;'; put 'put ''MCAwIDAgMnB4ICM1MjkyZjcgaW5zZXQ7cmVzaXplOm5vbmU7ZGlzcGxheTpibG9jaztjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmhhbmRzb250YWJsZUlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlSW5wdXRIb2xkZXJ7cG9z''@;'; put 'put ''aXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5odFNlbGVjdEVkaXRvcnstd2Via2l0LWFwcGVhcmFuY2U6bWVudWxpc3QtYnV0dG9uIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDphdXRvfS5odFNlbGVjdEVkaXRvcjpmb2N1c3tvdXRsaW5lOm5vbmV9LmhhbmRzb250YWJs''@;'; put 'put ''ZSAuaHREaW1tZWR7Y29sb3I6Izc3N30uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnV7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDphZnRlcntjb250ZW50OiJcMjViNiI7Y29sb3I6Izc3Nztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHg7Zm9udC1zaXplOjlw''@;'; put 'put ''eH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnUgOmFmdGVye2NvbnRlbnQ6IiJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDpiZWZvcmV7Y29udGVudDoiXDI1YzAiO2NvbG9yOiM3Nzc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1cHg7Zm9udC1zaXplOjlweH0u''@;'; put 'put ''aGFuZHNvbnRhYmxlIC5odExlZnR7dGV4dC1hbGlnbjpsZWZ0fS5oYW5kc29udGFibGUgLmh0Q2VudGVye3RleHQtYWxpZ246Y2VudGVyfS5oYW5kc29udGFibGUgLmh0UmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uaGFuZHNvbnRhYmxlIC5odEp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5fS5o''@;'; put 'put ''YW5kc29udGFibGUgLmh0VG9we3ZlcnRpY2FsLWFsaWduOnRvcH0uaGFuZHNvbnRhYmxlIC5odE1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRCb3R0b217dmVydGljYWwtYWxpZ246Ym90dG9tfS5oYW5kc29udGFibGUgLmh0UGxhY2Vob2xkZXJ7Y29sb3I6''@;'; put 'put ''Izk5OX0uaGFuZHNvbnRhYmxlLmxpc3Rib3h7bWFyZ2luOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odF9tYXN0ZXIgdGFibGV7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtiYWNrZ3JvdW5kOndoaXRlfS5oYW5kc29udGFibGUubGlzdGJveCB0aCwu''@;'; put 'put ''aGFuZHNvbnRhYmxlLmxpc3Rib3ggdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmxhc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmZpcnN0LWNoaWxkIHRkLC5oYW5kc29udGFibGUubGlzdGJveCB0ZHtib3JkZXItY29sb3I6dHJhbnNwYXJl''@;'; put 'put ''bnQhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0aCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGR7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmhhbmRzb250YWJsZS5saXN0Ym94IHRkLmh0RGltbWVke2N1cnNvcjpkZWZhdWx0O2NvbG9yOmluaGVy''@;'; put 'put ''aXQ7Zm9udC1zdHlsZTppbmhlcml0fS5oYW5kc29udGFibGUubGlzdGJveCAud3RCb3JkZXJ7dmlzaWJpbGl0eTpoaWRkZW59LmhhbmRzb250YWJsZS5saXN0Ym94IHRyIHRkLmN1cnJlbnQsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmhvdmVyIHRke2JhY2tncm91bmQ6I2VlZX0uaHRfZWRp''@;'; put 'put ''dG9yX2hpZGRlbnt6LWluZGV4Oi0xfS5odF9lZGl0b3JfdmlzaWJsZXt6LWluZGV4OjIwMH0uaGFuZHNvbnRhYmxlIHRkLmh0U2VhcmNoUmVzdWx0e2JhY2tncm91bmQ6I2ZjZWRkOTtjb2xvcjojNTgzNzA3fS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9ye3Bvc2l0aW9uOmFi''@;'; put 'put ''c29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7bGVmdDp1bnNldDtyaWdodDo1cHg7Ym9yZGVyOjFweCBzb2xpZCAjQTZBNkE2O2xpbmUtaGVpZ2h0OjhweDtjb2xvcjojMjIyO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTBweDt3aWR0aDoxMHB4O2hlaWdo''@;'; put 'put ''dDoxMHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAwIDAgNnB4ICNlZWU7YmFja2dyb3VuZDojZWVlO3RleHQtYWxpZ246Y2VudGVyfVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9ye3JpZ2h0OnVuc2V0O2xlZnQ6NXB4fS5oYW5kc29udGFibGUubW9i''@;'; put 'put ''aWxlLC5oYW5kc29udGFibGUubW9iaWxlIC53dEhvbGRlcnstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTstd2Via2l0LW92ZXJmbG93LXNj''@;'; put 'put ''cm9sbGluZzp0b3VjaH0uaGFuZHNvbnRhYmxlLm1vYmlsZSAuaGFuZHNvbnRhYmxlSW5wdXQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAycHggIzUyOTJmNyBpbnNldDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9wU2VsZWN0aW9uSGFuZGxlOm5vdCguaHRfbWFzdGVyIC50b3BTZWxlY3Rp''@;'; put 'put ''b25IYW5kbGUpLC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYTpub3QoLmh0X21hc3RlciAudG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEpe3otaW5kZXg6OTk5OX0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUsLmhhbmRzb250YWJsZSAudG9wU2VsZWN0aW9uSGFuZGxlLUhp''@;'; put 'put ''dEFyZWEsLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLC5oYW5kc29udGFibGUgLmJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhe2xlZnQ6LTEwMDAwcHg7cmlnaHQ6dW5zZXQ7dG9wOi0xMDAwMHB4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLnRvcFNlbGVjdGlvbkhh''@;'; put 'put ''bmRsZSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5ib3R0b21TZWxlY3Rpb25IYW5kbGUsW2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWF7cmlnaHQ6LTEw''@;'; put 'put ''MDAwcHg7bGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlLmhpZGUtdHdlZW57YW5pbWF0aW9uOm9wYWNpdHktaGlkZSAuM3M7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkczstd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHN9LmhhbmRzb250YWJsZS5zaG93LXR3ZWVue2FuaW1h''@;'; put 'put ''dGlvbjpvcGFjaXR5LXNob3cgLjNzO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7LXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfS8qIQogKiBQaWthZGF5CiAqIENvcHlyaWdodCDCqSAyMDE0IERhdmlkIEJ1c2hlbGwgfCBCU0QgJiBNSVQgbGljZW5zZSB8IGh0dHBz''@;'; put 'put ''Oi8vZGJ1c2hlbGwuY29tLwogKi8ucGlrYS1zaW5nbGV7ei1pbmRleDo5OTk5O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6IzMzMztiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b20tY29sb3I6I2JiYjtmb250LWZhbWlseTpI''@;'; put 'put ''ZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZn0ucGlrYS1zaW5nbGU6YmVmb3JlLC5waWthLXNpbmdsZTphZnRlcntjb250ZW50OiIgIjtkaXNwbGF5OnRhYmxlfS5waWthLXNpbmdsZTphZnRlcntjbGVhcjpib3RofS5waWthLXNpbmdsZS5pcy1oaWRkZW57ZGlzcGxh''@;'; put 'put ''eTpub25lfS5waWthLXNpbmdsZS5pcy1ib3VuZHtwb3NpdGlvbjphYnNvbHV0ZTtib3gtc2hhZG93OjAgNXB4IDE1cHggLTVweCAjMDAwMDAwODB9LnBpa2EtbGVuZGFye2Zsb2F0OmxlZnQ7d2lkdGg6MjQwcHg7bWFyZ2luOjhweH0ucGlrYS10aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0''@;'; put 'put ''LWFsaWduOmNlbnRlcn0ucGlrYS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojk5OTk7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3BhZGRpbmc6NXB4IDNweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0Ojcw''@;'; put 'put ''MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnBpa2EtdGl0bGUgc2VsZWN0e2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5ODttYXJnaW46MDtsZWZ0OjA7dG9wOjVweDtvcGFjaXR5OjB9LnBpa2EtcHJldiwucGlrYS1uZXh0e2Rpc3BsYXk6YmxvY2s7Y3Vyc29y''@;'; put 'put ''OnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7b3V0bGluZTpub25lO2JvcmRlcjowO3BhZGRpbmc6MDt3aWR0aDoyMHB4O2hlaWdodDozMHB4O3RleHQtaW5kZW50OjIwcHg7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2Jh''@;'; put 'put ''Y2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjc1JSA3NSU7b3BhY2l0eTouNX0ucGlrYS1wcmV2OmhvdmVyLC5waWthLW5leHQ6aG92ZXJ7b3BhY2l0eToxfS5waWthLXByZXYsLmlzLXJ0bCAucGlrYS1u''@;'; put 'put ''ZXh0e2Zsb2F0OmxlZnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFlQ0FZQUFBQXNFajVyQUFBQVVrbEVRVlI0MnUzVk1Rb0FJQkFEUWY4UGdqK09EOWhHMkN0T05KQjJ5bVFrS2UwSGJ3QVAweHVjRGlR''@;'; put 'put ''V0FSSVRJREVCRW5NZ01ROFM4K0FxQklsNmtLZ0hpWHFRcUFlSmVwQm8vejM4Si9VMHVBSGxhQmtCbDlJNEd3QUFBQUJKUlU1RXJrSmdnZz09KX0ucGlrYS1uZXh0LC5pcy1ydGwgLnBpa2EtcHJldntmbG9hdDpyaWdodDtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNl''@;'; put 'put ''NjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQWVDQVlBQUFBc0VqNXJBQUFBVTBsRVFWUjQydTNWT3dvQU1BZ0UwZHdmQW5OalUyNmJZa0JDRkd3ZmlMOVZWV29PK0JKNEdmM2d0c0VLS29GQk5UQ29DQVlWd2FBaUdOUUdNVUhNa2pHYmdqazJtSU9OdVhvMG5DOFhuQ2YxSlhnQXJW''@;'; put 'put ''SVpBUWg1VEtZQUFBQUFTVVZPUks1Q1lJST0pfS5waWthLXByZXYuaXMtZGlzYWJsZWQsLnBpa2EtbmV4dC5pcy1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi4yfS5waWthLXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9ja30ucGlrYS10YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1j''@;'; put 'put ''b2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowO2JvcmRlcjowfS5waWthLXRhYmxlIHRoLC5waWthLXRhYmxlIHRke3dpZHRoOjE0LjI4NTcxNDI4NTclO3BhZGRpbmc6MH0ucGlrYS10YWJsZSB0aHtjb2xvcjojOTk5O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjI1cHg7Zm9u''@;'; put 'put ''dC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyfS5waWthLWJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lOm5vbmU7Ym9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTtw''@;'; put 'put ''YWRkaW5nOjVweDtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE1cHg7dGV4dC1hbGlnbjpyaWdodDtiYWNrZ3JvdW5kOiNmNWY1ZjU7aGVpZ2h0OmluaXRpYWx9LnBpa2Etd2Vla3tmb250LXNpemU6MTFweDtjb2xvcjojOTk5fS5pcy10b2RheSAucGlrYS1idXR0b257''@;'; put 'put ''Y29sb3I6IzNhZjtmb250LXdlaWdodDo3MDB9LmlzLXNlbGVjdGVkIC5waWthLWJ1dHRvbiwuaGFzLWV2ZW50IC5waWthLWJ1dHRvbntjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOiMzM2FhZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggIzE3OGZlNTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOjNweH0uaGFzLWV2ZW50IC5waWthLWJ1dHRvbntiYWNrZ3JvdW5kOiMwMDVkYTk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggIzAwNzZjOX0uaXMtZGlzYWJsZWQgLnBpa2EtYnV0dG9uLC5pcy1pbnJhbmdlIC5waWthLWJ1dHRvbntiYWNrZ3JvdW5kOiNENUU5Rjd9LmlzLXN0''@;'; put 'put ''YXJ0cmFuZ2UgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNkNCMzFEO2JveC1zaGFkb3c6bm9uZTtib3JkZXItcmFkaXVzOjNweH0uaXMtZW5kcmFuZ2UgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojMzNhYWZmO2JveC1zaGFkb3c6bm9uZTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOjNweH0uaXMtZGlzYWJsZWQgLnBpa2EtYnV0dG9ue3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6Izk5OTtvcGFjaXR5Oi4zfS5pcy1vdXRzaWRlLWN1cnJlbnQtbW9udGggLnBpa2EtYnV0dG9ue2NvbG9yOiM5OTk7b3BhY2l0eTouM30uaXMtc2VsZWN0''@;'; put 'put ''aW9uLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmRlZmF1bHR9LnBpa2EtYnV0dG9uOmhvdmVyLC5waWthLXJvdy5waWNrLXdob2xlLXdlZWs6aG92ZXIgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZmY4MDAwO2JveC1zaGFkb3c6bm9uZTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOjNweH0ucGlrYS10YWJsZSBhYmJye2JvcmRlci1ib3R0b206bm9uZTtjdXJzb3I6aGVscH0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFycm93e2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxMHB4O2NvbG9yOiNlZWU7Y3Vyc29yOmRlZmF1bHQ7d2lkdGg6MTZweDt0ZXh0LWFs''@;'; put 'put ''aWduOmNlbnRlcn1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFycm93e2Zsb2F0OmxlZnR9LmhhbmRzb250YWJsZSB0ZCAuaHRBdXRvY29tcGxldGVBcnJvdzpob3Zlcntjb2xvcjojNzc3fS5oYW5kc29udGFibGUgdGQuYXJlYSAuaHRBdXRvY29tcGxldGVBcnJvd3tj''@;'; put 'put ''b2xvcjojZDNkM2QzfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0Lm5vVmFsdWV7b3BhY2l0eTouNX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJM''@;'; put 'put ''YWJlbHtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVyTGFiZWwuZnVsbFdpZHRoe3dpZHRoOjEwMCV9LmhhbmRzb250YWJsZSAuaHRDb21tZW50''@;'; put 'put ''Q2VsbHtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxsOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtsZWZ0OnVuc2V0O2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6bm9uZTti''@;'; put 'put ''b3JkZXItdG9wOjZweCBzb2xpZCBibGFja31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxsOmFmdGVye2xlZnQ6MDtyaWdodDp1bnNldDtib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0Om5vbmV9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0''@;'; put 'put ''Q29tbWVudHN7ZGlzcGxheTpub25lO3otaW5kZXg6MTA1OTtwb3NpdGlvbjphYnNvbHV0ZX0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWF7Ym94LXNoYWRvdzojMDAwMDAwMWUgMCAxcHggM3B4LCMwMDAwMDAzZCAwIDFweCAycHg7Ym94LXNpemluZzpib3JkZXItYm94''@;'; put 'put ''O2JvcmRlcjpub25lO2JvcmRlci1sZWZ0OjNweCBzb2xpZCAjY2NjO2JvcmRlci1yaWdodDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjt3aWR0aDoyMTVweDtoZWlnaHQ6OTBweDtmb250LXNpemU6MTJweDtwYWRkaW5nOjVweDtvdXRsaW5lOjBweCFpbXBvcnRhbnQ7LXdlYmtpdC1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmV9W2Rpcj1ydGxdLmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhe2JvcmRlci1yaWdodDozcHggc29saWQgI2NjYztib3JkZXItbGVmdDpub25lfS5odENvbW1lbnRzQ29udGFpbmVyIC5odENvbW1lbnRUZXh0QXJlYTpmb2N1c3tib3gtc2hhZG93OiMw''@;'; put 'put ''MDAwMDAxZSAwIDFweCAzcHgsIzAwMDAwMDNkIDAgMXB4IDJweCxpbnNldCAwIDAgMCAxcHggIzUyOTJmNztib3JkZXItbGVmdDozcHggc29saWQgIzUyOTJmNztib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWE6Zm9jdXN7''@;'; put 'put ''Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjNTI5MmY3O2JvcmRlci1sZWZ0Om5vbmV9LyohCiAqIEhhbmRzb250YWJsZSBDb250ZXh0TWVudQogKi8uaHRDb250ZXh0TWVudTpub3QoLmh0R2hvc3RUYWJsZSl7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA2MH0uaHRD''@;'; put 'put ''b250ZXh0TWVudSAuaHRfY2xvbmVfdG9wLC5odENvbnRleHRNZW51IC5odF9jbG9uZV9ib3R0b20sLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2lubGluZV9zdGFydCwuaHRDb250ZXh0TWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmh0Q29udGV4dE1lbnUgLmh0X2Ns''@;'; put 'put ''b25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaHRDb250ZXh0TWVudSAuaHRfbWFzdGVyIHRhYmxlLmh0Q29yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7''@;'; put 'put ''Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoycHh9W2Rpcj1ydGxdLmh0Q29udGV4dE1lbnUgLmh0X21hc3RlciB0YWJsZS5odENvcmV7Ym9yZGVyLXJpZ2h0LXdpZHRoOjFweDtib3JkZXItbGVmdC13aWR0aDoycHh9Lmh0Q29udGV4dE1lbnUgLnd0Qm9yZGVye3Zp''@;'; put 'put ''c2liaWxpdHk6aGlkZGVufS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRke2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVs''@;'; put 'put ''bGlwc2lzfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MH1bZGlyPXJ0bF0uaHRDb250ZXh0TWVudSB0YWJsZSB0''@;'; put 'put ''Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFsO2NvbG9yOiMzMjMyMzJ9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkg''@;'; put 'put ''dHIgdGQuY3VycmVudCwuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJvY2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6I2YzZjNmM30uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2O2hl''@;'; put 'put ''aWdodDowO3BhZGRpbmc6MDtjdXJzb3I6ZGVmYXVsdH0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVke2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNm''@;'; put 'put ''ZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ci5odEhpZGRlbntkaXNwbGF5Om5vbmV9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6NnB4fS5o''@;'; put 'put ''dENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIGRpdiBzcGFuLnNlbGVjdGVke21hcmdpbi10b3A6LTJweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjRweH0uaHRDb250ZXh0TWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRkZW59dGV4dGFyZWEuSGFuZHNvbnRhYmxl''@;'; put 'put ''Q29weVBhc3Rle3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7cmlnaHQ6MTAwJSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuO29wYWNpdHk6MDtvdXRsaW5lOjAgbm9uZSFpbXBvcnRhbnR9LyohCiAqIEhhbmRzb250YWJsZSBEcm9wZG93bk1lbnUKICovLmhhbmRz''@;'; put 'put ''b250YWJsZSAuY2hhbmdlVHlwZXtiYWNrZ3JvdW5kOiNlZWU7Ym9yZGVyLXJhZGl1czoycHg7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2NvbG9yOiNiYmI7Zm9udC1zaXplOjlweDtsaW5lLWhlaWdodDo5cHg7cGFkZGluZzoycHg7bWFyZ2luOjNweCAxcHggMCA1cHg7ZmxvYXQ6cmlnaHR9W2Rp''@;'; put 'put ''cj1ydGxdLmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZXtmbG9hdDpsZWZ0fS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGU6YmVmb3Jle2NvbnRlbnQ6IlwyNWJjICAifS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjNzc3O2NvbG9yOiM3Nzc7Y3Vyc29y''@;'; put 'put ''OnBvaW50ZXJ9Lmh0RHJvcGRvd25NZW51Om5vdCguaHRHaG9zdFRhYmxlKXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDYwfS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wLC5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfYm90dG9tLC5odERyb3Bkb3duTWVu''@;'; put 'put ''dSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lcntkaXNwbGF5Om5vbmV9Lmh0RHJvcGRvd25NZW51IHRhYmxlLmh0''@;'; put 'put ''Q29yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoycHh9W2Rpcj1ydGxdLmh0RHJvcGRvd25NZW51IHRhYmxlLmh0''@;'; put 'put ''Q29yZXtib3JkZXItcmlnaHQtd2lkdGg6MXB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweH0uaHREcm9wZG93bk1lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVufS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZHtiYWNrZ3JvdW5kOndoaXRlO2JvcmRlci13aWR0aDowO3BhZGRp''@;'; put 'put ''bmc6NHB4IDZweCAwO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1yaWdodC13''@;'; put 'put ''aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfVtkaXI9cnRsXS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowfS5odERyb3Bkb3duTWVudSB0YWJs''@;'; put 'put ''ZSB0Ym9keSB0ciB0ZC5odERpbW1lZHtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjojMzIzMjMyfS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5jdXJyZW50LC5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJvY2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6''@;'; put 'put ''I2U5ZTllOX0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTZXBhcmF0b3J7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNjtoZWlnaHQ6MDtwYWRkaW5nOjA7Y3Vyc29yOmRlZmF1bHR9Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWR7Y29s''@;'; put 'put ''b3I6Izk5OX0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHREcm9wZG93bk1lbnU6bm90KC5odEdob3N0VGFibGUpIHRhYmxlIHRib2R5IHRyLmh0SGlkZGVue2Rpc3Bs''@;'; put 'put ''YXk6bm9uZX0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MTBweH0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7bWFyZ2luLXRvcDotMnB4O3Bvc2l0''@;'; put 'put ''aW9uOmFic29sdXRlO2xlZnQ6NHB4fS5odERyb3Bkb3duTWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRkZW59LyohCiAqIEhhbmRzb250YWJsZSBGaWx0ZXJzCiAqLy5odEZpbHRlcnNDb25kaXRpb25zTWVudTpub3QoLmh0R2hvc3RUYWJsZSl7ZGlzcGxheTpub25lO3Bv''@;'; put 'put ''c2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3MH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX3RvcCwuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2lubGluZV9zdGFydCwuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2Nvcm5lcntkaXNwbGF5''@;'; put 'put ''Om5vbmV9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlLmh0Q29yZXtib3JkZXI6MXB4IHNvbGlkICNiYmI7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjJweH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVu''@;'; put 'put ''fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZHtiYWNrZ3JvdW5kOndoaXRlO2JvcmRlci13aWR0aDowO3BhZGRpbmc6NHB4IDZweCAwO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNp''@;'; put 'put ''c30uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfVtkaXI9cnRsXS5odEZpbHRlcnNDb25kaXRp''@;'; put 'put ''b25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowfS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpbW1lZHtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjojMzIzMjMyfS5o''@;'; put 'put ''dEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5jdXJyZW50LC5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJvY2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6I2U5ZTllOX0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUg''@;'; put 'put ''dGJvZHkgdHIgdGQuaHRTZXBhcmF0b3J7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNjtoZWlnaHQ6MDtwYWRkaW5nOjB9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWR7Y29sb3I6Izk5OX0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFi''@;'; put 'put ''bGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MTBw''@;'; put 'put ''eH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7bWFyZ2luLXRvcDotMnB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NHB4fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRk''@;'; put 'put ''ZW59LmhhbmRzb250YWJsZSAuaHRNZW51RmlsdGVyaW5ne2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjY2NjO2hlaWdodDoxMzVweDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRhYmxlIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVye2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''I2ZmZjtjdXJzb3I6YXV0b30uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51TGFiZWx7Zm9udC1zaXplOi43NWVtfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVBY3Rpb25CYXJ7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbTozcHh9LmhhbmRz''@;'; put 'put ''b250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbi5ib3JkZXJ7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICNjY2MhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVDb25kaXRpb24gLmh0VUlJbnB1dHtwYWRkaW5nOjAgMCA1cHh9LmhhbmRzb250YWJsZSAuaHRGaWx0''@;'; put 'put ''ZXJzTWVudVZhbHVle2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjY2NjIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51VmFsdWUgLmh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaHtwYWRkaW5nOjB9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbiAuaHRV''@;'; put 'put ''SUlucHV0IGlucHV0LC5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVWYWx1ZSAuaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoIGlucHV0e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOi43NWVtO3BhZGRpbmc6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5odFVJ''@;'; put 'put ''TXVsdGlwbGVTZWxlY3QgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3cteTpzY3JvbGx9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzQWN0aXZlIC5jaGFuZ2VUeXBle2JvcmRlcjoxcHggc29saWQgIzUwOTI3Mjtjb2xvcjojMTg4MDRlO2JhY2tncm91bmQtY29sb3I6I2QyZTBkOX0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIC5odFVJU2VsZWN0QWxse21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjEwcHh9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbHttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDoxMHB4fS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCwuaGFuZHNvbnRh''@;'; put 'put ''YmxlIC5odFVJU2VsZWN0QWxse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCBhLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGwgYXtmb250LXNpemU6Ljc1ZW19LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdGlvbkNvbnRyb2xze3RleHQtYWxpZ246''@;'; put 'put ''cmlnaHR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdGlvbkNvbnRyb2xze3RleHQtYWxpZ246bGVmdH0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dHttYXJnaW46MCA1cHggMCAwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6MWVtfVtkaXI9cnRs''@;'; put 'put ''XS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0e21hcmdpbi1sZWZ0OjVweDttYXJnaW4tcmlnaHQ6MH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXR7cGFkZGluZzozcHggMCA3cHg7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXJ9LmhhbmRzb250YWJsZSAu''@;'; put 'put ''aHRVSUlucHV0IGlucHV0e2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI2QyZDFkMX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQgaW5wdXQ6Zm9jdXN7b3V0bGluZTowfS5oYW5kc29udGFibGUgLmh0VUlJbnB1dEljb257cG9zaXRpb246YWJzb2x1dGV9LmhhbmRzb250YWJs''@;'; put 'put ''ZSAuaHRVSUlucHV0Lmh0VUlCdXR0b257Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b24gaW5wdXR7YmFja2dyb3VuZC1jb2xvcjojZWVlO2NvbG9yOiMwMDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6aW5o''@;'; put 'put ''ZXJpdDtmb250LXNpemU6Ljc1ZW07Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDoxOXB4O21pbi13aWR0aDo2NHB4fS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0dG9uIGlucHV0OmhvdmVye2JvcmRlci1jb2xvcjojYjliOWI5fS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0''@;'; put 'put ''dG9uT0t7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MTBweH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9Le21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjEwcHh9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b25PSyBpbnB1dHtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOiMwZjlkNTg7Ym9yZGVyLWNvbG9yOiMxODgwNGU7Y29sb3I6I2ZmZn0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9LIGlucHV0OmhvdmVye2JvcmRlci1jb2xvcjojMWE2ZjQ2fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3R7Y3Vyc29yOnBvaW50ZXI7''@;'; put 'put ''bWFyZ2luLWJvdHRvbTo3cHg7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb257YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI2QyZDFkMTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6''@;'; put 'put ''ZTouNzVlbTtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMjBweCAzcHggMTBweDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjoj''@;'; put 'put ''ZThlOGU4O2JvcmRlcjoxcHggc29saWQgI2I5YjliOX0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0RHJvcGRvd246YWZ0ZXJ7Y29udGVudDoiXDI1YjIiO2ZvbnQtc2l6ZTo3cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTBweDt0b3A6MH0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0RHJv''@;'; put 'put ''cGRvd246YmVmb3Jle2NvbnRlbnQ6IlwyNWJjIjtmb250LXNpemU6N3B4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjhweH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3QgLmhhbmRzb250YWJsZSAuaHRDb3Jle2JvcmRlcjpub25lfS5oYW5kc29udGFibGUgLmh0''@;'; put 'put ''VUlNdWx0aXBsZVNlbGVjdCAuaGFuZHNvbnRhYmxlIC5odENvcmUgdGQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaCBpbnB1dHtib3JkZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkICNkMmQxZDE7cGFk''@;'; put 'put ''ZGluZzozcHh9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjVweDtoZWlnaHQ6MTAwJX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW97bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6NXB4fS5o''@;'; put 'put ''YW5kc29udGFibGUgLmh0VUlSYWRpbzpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDouNWV4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0''@;'; put 'put ''eXBlPXJhZGlvXXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDouNWV4fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbyBsYWJlbHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudU9wZXJhdG9yc3twYWRkaW5nLWJvdHRvbTo1cHh9LmhhbmRzb250YWJs''@;'; put 'put ''ZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW57cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXIsLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmV7Y29sb3I6I2JiYjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2Zv''@;'; put 'put ''bnQtc2l6ZTo1cHQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlcntyaWdodDoxcHg7Y29udGVudDoiXDI1YzAifVtkaXI9''@;'; put 'put ''cnRsXS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuQ29sdW1uOmFmdGVye3JpZ2h0OmluaXRpYWw7bGVmdDoxcHg7Y29udGVudDoiXDI1YjYifS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Db2x1bW46YmVmb3Jle2xlZnQ6MXB4O2NvbnRlbnQ6IlwyNWI2In1bZGlyPXJ0bF0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZXtyaWdodDoxcHg7bGVmdDppbml0aWFsO2NvbnRlbnQ6IlwyNWMwIn0vKiEKICogSGFuZHNvbnRhYmxlIEhpZGRlblJvd3MKICovLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUg''@;'; put 'put ''dGguYWZ0ZXJIaWRkZW5Sb3c6YWZ0ZXJ7Y29sb3I6I2JiYjtmb250LXNpemU6NnB0O2xpbmUtaGVpZ2h0OjZwdDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjJweH0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlblJvdywuaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93e3Bvc2l0aW9u''@;'; put 'put ''OnJlbGF0aXZlfS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93OmJlZm9yZXtjb250ZW50OiJcMjViMiI7Ym90dG9tOjJweH0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93OmFmdGVye2NvbnRlbnQ6IlwyNWJjIjt0b3A6MnB4fS5oYW5kc29udGFibGUuaHRfX3NlbGVjdGlv''@;'; put 'put ''bi0tcm93cyB0Ym9keSB0aC5iZWZvcmVIaWRkZW5Sb3cuaHRfX2hpZ2hsaWdodDpiZWZvcmUsLmhhbmRzb250YWJsZS5odF9fc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmFmdGVySGlkZGVuUm93Lmh0X19oaWdobGlnaHQ6YWZ0ZXJ7Y29sb3I6I2VlZX0uaGFuZHNvbnRhYmxlIHRkLmFmdGVy''@;'; put 'put ''SGlkZGVuUm93LmZpcnN0VmlzaWJsZVJvdywuaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93LmZpcnN0VmlzaWJsZVJvd3tib3JkZXItdG9wOjFweCBzb2xpZCAjQ0NDfS5odFJvd0hlYWRlcnMgLmh0X21hc3Rlci5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5odF9jbG9uZV90b3BfaW5s''@;'; put 'put ''aW5lX3N0YXJ0X2Nvcm5lciB0aDpudGgtY2hpbGQoMiksLmh0Um93SGVhZGVycyAuaHRfbWFzdGVyLmlubmVyQm9yZGVySW5saW5lU3RhcnR+Lmh0X2Nsb25lX2lubGluZV9zdGFydCB0ZDpmaXJzdC1vZi10eXBle2JvcmRlci1sZWZ0OjAgbm9uZX0uaGFuZHNvbnRhYmxlLmh0X19tYW51YWxD''@;'; put 'put ''b2x1bW5Nb3ZlLmFmdGVyLXNlbGVjdGlvbi0tY29sdW1ucyB0aGVhZCB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zLC5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVt''@;'; put 'put ''bk1vdmUub24tbW92aW5nLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdyYWJiaW5nfS5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zIC5tYW51YWxDb2x1bW5SZXNpemVye2Rpc3BsYXk6bm9uZX0u''@;'; put 'put ''aGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHR7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjEwMCU7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1''@;'; put 'put ''bW5Nb3ZlLS1ndWlkZWxpbmV7YmFja2dyb3VuZDojNzU3NTc1O3dpZHRoOjJweDt0b3A6MDttYXJnaW4taW5saW5lLXN0YXJ0Oi0xcHg7bWFyZ2luLWlubGluZS1lbmQ6MDt6LWluZGV4OjIwNX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0e2JhY2tncm91''@;'; put 'put ''bmQ6IzM0MzQzNDtiYWNrZ3JvdW5kOnJnYmEoNTIsNTIsNTIsLjI1KTtkaXNwbGF5Om5vbmU7ei1pbmRleDoyMDU7cG9pbnRlci1ldmVudHM6bm9uZX0uaGFuZHNvbnRhYmxlLm9uLW1vdmluZy0tY29sdW1ucy5zaG93LXVpIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lLC5oYW5k''@;'; put 'put ''c29udGFibGUub24tbW92aW5nLS1jb2x1bW5zIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0e2Rpc3BsYXk6YmxvY2t9LmhhbmRzb250YWJsZSAud3RIaWRlcntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLmFmdGVyLXNlbGVjdGlvbi0t''@;'; put 'put ''cm93cyB0Ym9keSB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzLC5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIHRib2R5IHRoLmh0X19oaWdo''@;'; put 'put ''bGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdyYWJiaW5nfS5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIC5tYW51YWxSb3dSZXNpemVye2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29u''@;'; put 'put ''dGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZXtiYWNrZ3JvdW5kOiM3NTc1NzU7aGVpZ2h0OjJweDtsZWZ0OjA7bWFyZ2lu''@;'; put 'put ''LXRvcDotMXB4O3otaW5kZXg6MjA1fS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7YmFja2dyb3VuZDojMzQzNDM0O2JhY2tncm91bmQ6cmdiYSg1Miw1Miw1MiwuMjUpO2Rpc3BsYXk6bm9uZTt6LWluZGV4OjIwNTtwb2ludGVyLWV2ZW50czpub25lfS5oYW5k''@;'; put 'put ''c29udGFibGUub24tbW92aW5nLS1yb3dzLnNob3ctdWkgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLXJvd3MgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7ZGlzcGxheTpibG9ja30uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3Nw''@;'; put 'put ''YW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XTpub3QoW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbF0pOmJlZm9yZXtvcGFjaXR5OjB9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5''@;'; put 'put ''U2VsZWN0ZWRNZXJnZWRDZWxsLW11bHRpcGxlXTpiZWZvcmV7b3BhY2l0eTouMX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtMF06YmVmb3Jle29wYWNpdHk6LjF9Lmhh''@;'; put 'put ''bmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTFdOmJlZm9yZXtvcGFjaXR5Oi4yfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1o''@;'; put 'put ''aWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0yXTpiZWZvcmV7b3BhY2l0eTouMjd9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTNdOmJlZm9y''@;'; put 'put ''ZXtvcGFjaXR5Oi4zNX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtNF06YmVmb3Jle29wYWNpdHk6LjQxfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xh''@;'; put 'put ''c3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC01XTpiZWZvcmV7b3BhY2l0eTouNDd9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRN''@;'; put 'put ''ZXJnZWRDZWxsLTZdOmJlZm9yZXtvcGFjaXR5Oi41NH0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtN106YmVmb3Jle29wYWNpdHk6LjU4fS5oYW5kc29udGFibGUgc3Bh''@;'; put 'put ''bi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcnt0b3A6NTAlO21hcmdpbi10b3A6LTJweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTVweDtsZWZ0OnVuc2V0O3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDp1bnNldDtmb250LXNpemU6OHB4O2hlaWdodDo4cHg7bGluZS1o''@;'; put 'put ''ZWlnaHQ6MS4xO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOmFmdGVye2xlZnQ6LTE1cHg7cmlnaHQ6dW5zZXQ7cGFkZGluZy1yaWdodDo1cHg7cGFkZGluZy1sZWZ0OnVuc2V0fS5oYW5kc29udGFi''@;'; put 'put ''bGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmdbY2xhc3NePXNvcnQtXTphZnRlciwuaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmdb''@;'; put 'put ''Y2xhc3MqPSIgc29ydC0iXTphZnRlcntjb250ZW50OiIrIn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC0xOmFmdGVye2NvbnRlbnQ6IjEifS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTI6YWZ0ZXJ7Y29udGVu''@;'; put 'put ''dDoiMiJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtMzphZnRlcntjb250ZW50OiIzIn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC00OmFmdGVye2NvbnRlbnQ6IjQifS5oYW5kc29udGFibGUgc3Bhbi5jb2xI''@;'; put 'put ''ZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTU6YWZ0ZXJ7Y29udGVudDoiNSJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNjphZnRlcntjb250ZW50OiI2In0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC03OmFm''@;'; put 'put ''dGVye2NvbnRlbnQ6IjcifS5odEdob3N0VGFibGUgdGggZGl2IGJ1dHRvbi5jaGFuZ2VUeXBlK3NwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCl7cGFkZGluZy1yaWdodDo1cHh9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5oaWRkZW5IZWFkZXI6bm90''@;'; put 'put ''KDpmaXJzdC1vZi10eXBlKXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSB0aC5odF9uZXN0aW5nTGV2ZWxze3RleHQtYWxpZ246bGVmdDtwYWRkaW5nLWxlZnQ6N3B4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVsc3t0ZXh0LWFsaWduOnJpZ2h0O3BhZGRpbmct''@;'; put 'put ''cmlnaHQ6N3B4fS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdMZXZlbHN7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMXB4O3JpZ2h0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdMZXZlbHN7cmlnaHQ6MTFw''@;'; put 'put ''eDtsZWZ0OnVuc2V0fS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydCB0aCBkaXYuaHRfbmVzdGluZ0xldmVscywuaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0xldmVsc3tyaWdodDoxMHB4O2xlZnQ6''@;'; put 'put ''dW5zZXR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0IHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxzLFtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydH4uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxze2xlZnQ6''@;'; put 'put ''MTBweDtyaWdodDp1bnNldH0uaGFuZHNvbnRhYmxlIHRoIHNwYW4uaHRfbmVzdGluZ0xldmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgdGggc3Bhbi5odF9uZXN0aW5nTGV2ZWxfZW1wdHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTBweDtoZWlnaHQ6MXB4O2Zs''@;'; put 'put ''b2F0OmxlZnR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aCBzcGFuLmh0X25lc3RpbmdMZXZlbF9lbXB0eXtmbG9hdDpyaWdodH0uaGFuZHNvbnRhYmxlIHRoIHNwYW4uaHRfbmVzdGluZ0xldmVsOmFmdGVye2NvbnRlbnQ6IlwyNTEwIjtmb250LXNpemU6OXB4O2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JvdHRvbTozcHh9LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMnB4O2xlZnQ6dW5zZXQ7Y3Vyc29yOnBvaW50ZXJ9W2Rpcj1ydGxdLmhhbmRzb250''@;'; put 'put ''YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbntsZWZ0Oi0ycHg7cmlnaHQ6dW5zZXR9LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmFmdGVye2NvbnRlbnQ6IisifS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b24uaHRf''@;'; put 'put ''bmVzdGluZ0NvbGxhcHNlOmFmdGVye2NvbnRlbnQ6Ii0ifS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydCB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbiwuaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1''@;'; put 'put ''dHRvbntyaWdodDowO2xlZnQ6dW5zZXR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0IHRoIGRpdi5odF9uZXN0aW5nQnV0dG9uLFtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydH4uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9u''@;'; put 'put ''ZXN0aW5nQnV0dG9ue2xlZnQ6MDtyaWdodDp1bnNldH06cm9vdHstLWNkcy1nbG9iYWwtYmFzZToyMH1odG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4xNTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7''@;'; put 'put ''bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsbWFpbixtZW51LG5hdixzZWN0aW9uLHN1bW1hcnl7ZGlzcGxheTpibG9ja31hdWRpbyxjYW52YXMscHJvZ3Jlc3MsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2t9YXVkaW86bm90''@;'; put 'put ''KFtjb250cm9sc10pe2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MH1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX10ZW1wbGF0ZSxbaGlkZGVuXXtkaXNwbGF5Om5vbmV9YXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6b2JqZWN0''@;'; put 'put ''c31hOmFjdGl2ZSxhOmhvdmVye291dGxpbmUtd2lkdGg6MH1hYmJyW3RpdGxlXXtib3JkZXItYm90dG9tOm5vbmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVk''@;'; put 'put ''fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWRmbntmb250LXN0eWxlOml0YWxpY31oMXtmb250LXNpemU6MmVtO21hcmdpbjouNjdlbSAwfW1hcmt7YmFja2dyb3VuZC1jb2xvcjojZmYwO2NvbG9yOiMwMDB9c21hbGx7Zm9udC1zaXpl''@;'; put 'put ''OjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfWltZ3tib3JkZXItc3R5bGU6bm9uZX1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRk''@;'; put 'put ''ZW59Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW19ZmlndXJle21hcmdpbjoxZW0gNDBweH1ocntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO292ZXJmbG93OnZpc2libGV9YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0''@;'; put 'put ''YXJlYXtmb250OmluaGVyaXQ7bWFyZ2luOjB9dGV4dGFyZWF7bGluZS1oZWlnaHQ6MS4xNX1vcHRncm91cHtmb250LXdlaWdodDo3MDB9YnV0dG9uLGlucHV0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIFt0eXBlPWJ1dHRv''@;'; put 'put ''bl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9YnV0dG9uXTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1yZXNldF06Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9c3VibWl0XTo6LW1vei1m''@;'; put 'put ''b2N1cy1pbm5lcntib3JkZXItc3R5bGU6bm9uZTtwYWRkaW5nOjB9YnV0dG9uOi1tb3otZm9jdXNyaW5nLFt0eXBlPWJ1dHRvbl06LW1vei1mb2N1c3JpbmcsW3R5cGU9cmVzZXRdOi1tb3otZm9jdXNyaW5nLFt0eXBlPXN1Ym1pdF06LW1vei1mb2N1c3Jpbmd7b3V0bGluZToxcHggZG90dGVk''@;'; put 'put ''IEJ1dHRvblRleHR9ZmllbGRzZXR7Ym9yZGVyOjFweCBzb2xpZCBzaWx2ZXI7bWFyZ2luOjAgMnB4O3BhZGRpbmc6LjM1ZW0gLjYyNWVtIC43NWVtfWxlZ2VuZHtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OnRhYmxlO21heC13aWR0aDoxMDAlO3BhZGRpbmc6''@;'; put 'put ''MDt3aGl0ZS1zcGFjZTpub3JtYWx9dGV4dGFyZWF7b3ZlcmZsb3c6YXV0b31bdHlwZT1jaGVja2JveF0sW3R5cGU9cmFkaW9de2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixbdHlwZT1udW1iZXJdOjotd2Vi''@;'; put 'put ''a2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fVt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sW3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1z''@;'; put 'put ''ZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Zm9udDppbmhlcml0fTpyb290ey0tY2xyLWNvbG9yLW5ldXRyYWwtMDp3aGl0ZTstLWNsci1jb2xvci1uZXV0cmFsLTUw''@;'; put 'put ''OiNmYWZhZmE7LS1jbHItY29sb3ItbmV1dHJhbC0xMDA6I2YyZjJmMjstLWNsci1jb2xvci1uZXV0cmFsLTIwMDojZThlOGU4Oy0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwOiNkZWRlZGU7LS1jbHItY29sb3ItbmV1dHJhbC00MDA6I2NjY2NjYzstLWNsci1jb2xvci1uZXV0cmFsLTUwMDojYjNi''@;'; put 'put ''M2IzOy0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwOiM4YzhjOGM7LS1jbHItY29sb3ItbmV1dHJhbC03MDA6IzY2NjY2NjstLWNsci1jb2xvci1uZXV0cmFsLTgwMDojNDU0NTQ1Oy0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwOiMzMzMzMzM7LS1jbHItY29sb3ItbmV1dHJhbC0xMDAwOmJsYWNrOy0t''@;'; put 'put ''Y2xyLWNvbG9yLW9uLW5ldXRyYWwtMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTUwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMzAwOmJsYWNrOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLW5ldXRyYWwtNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNjAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNzAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtODAwOndoaXRlOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLW5ldXRyYWwtOTAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMTAwMDp3aGl0ZTstLWNsci1jb2xvci1hY3Rpb24tNTA6I2UzZjVmYzstLWNsci1jb2xvci1hY3Rpb24tMTAwOiNjOGVhZjk7LS1jbHItY29sb3ItYWN0aW9uLTIwMDojOWJkOGYzOy0tY2xyLWNvbG9y''@;'; put 'put ''LWFjdGlvbi0zMDA6Izc5YzZlNjstLWNsci1jb2xvci1hY3Rpb24tNDAwOiM0OWFlZGE7LS1jbHItY29sb3ItYWN0aW9uLTUwMDojMTc5YmQzOy0tY2xyLWNvbG9yLWFjdGlvbi02MDA6IzAwNzJhMzstLWNsci1jb2xvci1hY3Rpb24tNzAwOiMwMDY0OGY7LS1jbHItY29sb3ItYWN0aW9uLTgw''@;'; put 'put ''MDojMDA1NjdhOy0tY2xyLWNvbG9yLWFjdGlvbi05MDA6IzAwNGI2YjstLWNsci1jb2xvci1hY3Rpb24tMTAwMDojMDAzNjRkOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi01MDpibGFjazstLWNsci1jb2xvci1vbi1hY3Rpb24tMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0yMDA6Ymxh''@;'; put 'put ''Y2s7LS1jbHItY29sb3Itb24tYWN0aW9uLTMwMDpibGFjazstLWNsci1jb2xvci1vbi1hY3Rpb24tNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi01MDA6YmxhY2s7LS1jbHItY29sb3Itb24tYWN0aW9uLTYwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1hY3Rpb24tNzAwOndoaXRlOy0t''@;'; put 'put ''Y2xyLWNvbG9yLW9uLWFjdGlvbi04MDA6d2hpdGU7LS1jbHItY29sb3Itb24tYWN0aW9uLTkwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1hY3Rpb24tMTAwMDp3aGl0ZTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwOiNmN2U2ZmY7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0x''@;'; put 'put ''MDA6I2U2Y2FmMTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTIwMDojZDJhYWU0Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMzAwOiNjMDkwZDU7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi00MDA6I2FmNzNjOTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUw''@;'; put 'put ''MDojOWU1N2JjOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNjAwOiM4YTM5YWM7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi03MDA6Izc4MWQ5ZjstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTgwMDojNjgwMDk0Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tOTAw''@;'; put 'put ''OiM0ZjAwNzA7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0xMDAwOiMzMjAwNDc7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi01MDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9u''@;'; put 'put ''LTIwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTMwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTUwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0''@;'; put 'put ''aW9uLTYwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTcwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTgwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTkwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnkt''@;'; put 'put ''YWN0aW9uLTEwMDA6d2hpdGU7LS1jbHItY29sb3ItZGFuZ2VyLTUwOiNmZmYyZjA7LS1jbHItY29sb3ItZGFuZ2VyLTEwMDojZmVkZGQ3Oy0tY2xyLWNvbG9yLWRhbmdlci0yMDA6I2ZjYzViYjstLWNsci1jb2xvci1kYW5nZXItMzAwOiNmNTllOGY7LS1jbHItY29sb3ItZGFuZ2VyLTQwMDoj''@;'; put 'put ''ZjI3OTYzOy0tY2xyLWNvbG9yLWRhbmdlci01MDA6I2YzNWU0NDstLWNsci1jb2xvci1kYW5nZXItNjAwOiNmNTJkMGE7LS1jbHItY29sb3ItZGFuZ2VyLTcwMDojZGIyMTAwOy0tY2xyLWNvbG9yLWRhbmdlci04MDA6I2MyMWQwMDstLWNsci1jb2xvci1kYW5nZXItOTAwOiM5OTE3MDA7LS1j''@;'; put 'put ''bHItY29sb3ItZGFuZ2VyLTEwMDA6IzY2MGYwMDstLWNsci1jb2xvci1vbi1kYW5nZXItNTA6YmxhY2s7LS1jbHItY29sb3Itb24tZGFuZ2VyLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1kYW5nZXItMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0zMDA6YmxhY2s7LS1jbHItY29s''@;'; put 'put ''b3Itb24tZGFuZ2VyLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1kYW5nZXItNTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci02MDA6YmxhY2s7LS1jbHItY29sb3Itb24tZGFuZ2VyLTcwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1kYW5nZXItODAwOndoaXRlOy0tY2xyLWNvbG9yLW9u''@;'; put 'put ''LWRhbmdlci05MDA6d2hpdGU7LS1jbHItY29sb3Itb24tZGFuZ2VyLTEwMDA6d2hpdGU7LS1jbHItY29sb3Itd2FybmluZy01MDojZmZmYWU2Oy0tY2xyLWNvbG9yLXdhcm5pbmctMTAwOiNmZmY0Yzc7LS1jbHItY29sb3Itd2FybmluZy0yMDA6I2ZmZWVhODstLWNsci1jb2xvci13YXJuaW5n''@;'; put 'put ''LTMwMDojZmVlMjcyOy0tY2xyLWNvbG9yLXdhcm5pbmctNDAwOiNmOGNmMmE7LS1jbHItY29sb3Itd2FybmluZy01MDA6I2VmYzAwNjstLWNsci1jb2xvci13YXJuaW5nLTYwMDojZTZiMDAwOy0tY2xyLWNvbG9yLXdhcm5pbmctNzAwOiNkNjlhMDA7LS1jbHItY29sb3Itd2FybmluZy04MDA6''@;'; put 'put ''I2FkNzYwMDstLWNsci1jb2xvci13YXJuaW5nLTkwMDojOGY1YTAwOy0tY2xyLWNvbG9yLXdhcm5pbmctMTAwMDojNjEzMjAwOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNTA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0xMDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0yMDA6''@;'; put 'put ''YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0zMDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy00MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy01MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy02MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy03MDA6''@;'; put 'put ''YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy04MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy05MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0xMDAwOndoaXRlOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtNTA6I2RmZjBkMDstLWNsci1jb2xvci1zdWNjZXNzLTEwMDojYmNl''@;'; put 'put ''NDlhOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtMjAwOiM3M2RjMWU7LS1jbHItY29sb3Itc3VjY2Vzcy0zMDA6IzY4YzcxYTstLWNsci1jb2xvci1zdWNjZXNzLTQwMDojNWViNzE1Oy0tY2xyLWNvbG9yLXN1Y2Nlc3MtNTAwOiM1YWEyMjA7LS1jbHItY29sb3Itc3VjY2Vzcy02MDA6IzRiOTcwYzst''@;'; put 'put ''LWNsci1jb2xvci1zdWNjZXNzLTcwMDojM2M4NTAwOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwOiMzMDZiMDA7LS1jbHItY29sb3Itc3VjY2Vzcy05MDA6IzI1NTIwMDstLWNsci1jb2xvci1zdWNjZXNzLTEwMDA6IzFlNDIwMDstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwOmJsYWNrOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLXN1Y2Nlc3MtMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMzAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNTAwOmJsYWNrOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLXN1Y2Nlc3MtNjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNzAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtODAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtOTAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMTAwMDp3aGl0ZX06cm9v''@;'; put 'put ''dHstLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzOi4xNXJlbTstLWNsci1nbG9iYWwtYm9yZGVyd2lkdGg6LjA1cmVtOy0tY2xyLWdsb2JhbC1hcHAtYmFja2dyb3VuZDojZmFmYWZhOy0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3I6I2Q4ZTNlOTstLWNsci1nbG9iYWwtb24tc2VsZWN0aW9u''@;'; put 'put ''LWNvbG9yOmJsYWNrOy0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcjojZThlOGU4Oy0tY2xyLWdsb2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yOmJsYWNrOy0tY2xyLWdsb2JhbC1mb250LWNvbG9yOiM2NjY2NjY7LS1jbHItZ2xvYmFsLXN1Y2Nlc3MtY29sb3I6IzVhYTIyMDstLWNsci1n''@;'; put 'put ''bG9iYWwtZXJyb3ItY29sb3I6I2MyMWQwMDstLWNsci1jbG9zZS1jb2xvci0tbm9ybWFsOiM4YzhjOGM7LS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbC1vcGFjaXR5Oi4yOy0tY2xyLWNsb3NlLWNvbG9yLS1ob3ZlcjpibGFjazstLWNsci1jbG9zZS1jb2xvci0taG92ZXItb3BhY2l0eTouNTst''@;'; put 'put ''LWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3I6cmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpfTpyb290ey0tY2xyLWZvbnQ6TWV0cm9wb2xpcywgQXZlbmlyIE5leHQsIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgc2Fucy1zZXJpZjstLWNsci1kaXNwbGF5LWZvbnQ6dmFyKC0tY2xyLWZvbnQp''@;'; put 'put ''Oy0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0OjIwMDstLWNsci1mb250LXdlaWdodC1yZWd1bGFyOjQwMDstLWNsci1mb250LXdlaWdodC1zZW1pYm9sZDo1MDA7LS1jbHItZm9udC13ZWlnaHQtYm9sZDo2MDA7LS1jbHItZm9udC13ZWlnaHQtZXh0cmFib2xkOjYwMDstLWNsci1oMS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZ2xvYmFsLWNvbnRlbnQtaGVhZGVyLWZvbnQtY29sb3IpOy0tY2xyLWgxLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCk7LS1jbHItaDEtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDItY29sb3I6dmFyKC0tY2xyLWds''@;'; put 'put ''b2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yKTstLWNsci1oMi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtbGlnaHQpOy0tY2xyLWgyLWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWgzLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtY29udGVu''@;'; put 'put ''dC1oZWFkZXItZm9udC1jb2xvcik7LS1jbHItaDMtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0KTstLWNsci1oMy1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1mb250KTstLWNsci1oNC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWNvbnRlbnQtaGVhZGVyLWZv''@;'; put 'put ''bnQtY29sb3IpOy0tY2xyLWg0LWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCk7LS1jbHItaDQtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDUtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1oNS1mb250LXdl''@;'; put 'put ''aWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItaDUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDYtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNsci1oNi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWln''@;'; put 'put ''aHQtc2VtaWJvbGQpOy0tY2xyLWg2LWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLXAwLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDAtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0KTstLWNsci1wMS1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLXAxLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1yZWd1bGFyKTstLWNsci1wMi1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLXAyLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdl''@;'; put 'put ''aWdodC1zZW1pYm9sZCk7LS1jbHItcDMtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wMy1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItcDQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wNC1m''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtYm9sZCk7LS1jbHItcDUtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wNS1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItcDYtY29sb3I6dmFyKC0tY2xyLWdsb2Jh''@;'; put 'put ''bC1mb250LWNvbG9yKTstLWNsci1wNi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtYm9sZCk7LS1jbHItcDctY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wNy1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHIt''@;'; put 'put ''cDgtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wOC1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcil9LmNsci1hbGlnbi1iYXNlbGluZXt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi10b3B7dmVydGlj''@;'; put 'put ''YWwtYWxpZ246dG9wIWltcG9ydGFudH0uY2xyLWFsaWduLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUhaW1wb3J0YW50fS5jbHItYWxpZ24tYm90dG9te3ZlcnRpY2FsLWFsaWduOmJvdHRvbSFpbXBvcnRhbnR9LmNsci1hbGlnbi10ZXh0LWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0''@;'; put 'put ''LWJvdHRvbSFpbXBvcnRhbnR9LmNsci1hbGlnbi10ZXh0LXRvcHt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LXRvcCFpbXBvcnRhbnR9LmNsci1jbGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0uY2xyLWRpc3BsYXktYmxvY2t7ZGlzcGxheTpibG9jayFpbXBv''@;'; put 'put ''cnRhbnR9LmNsci1kaXNwbGF5LWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmNsci1kaXNwbGF5LWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmNsci1mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1jb2x1''@;'; put 'put ''bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1jb2x1bW4tcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1m''@;'; put 'put ''bGV4LXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtZmlsbHtmbGV4OjEgMSBhdXRvIWlt''@;'; put 'put ''cG9ydGFudH0uY2xyLWZsZXgtZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgtZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgtc2hyaW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1w''@;'; put 'put ''b3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXJ7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5j''@;'; put 'put ''bHItYWxpZ24taXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1h''@;'; put 'put ''bGlnbi1pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tY29udGVudC1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3''@;'; put 'put ''ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1hdXRve2FsaWduLXNl''@;'; put 'put ''bGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWlt''@;'; put 'put ''cG9ydGFudH0uY2xyLWFsaWduLXNlbGYtYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbGV4LXNtLXJvd3tmbGV4LWRp''@;'; put 'put ''cmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgtc20tcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW4tcmV2ZXJzZXtm''@;'; put 'put ''bGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1zbS1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6''@;'; put 'put ''d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtc20tZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uY2xyLWZsZXgtc20tZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgtc20tZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgtc20tc2hy''@;'; put 'put ''aW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1z''@;'; put 'put ''bS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zbS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vl''@;'; put 'put ''biFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zbS1lbmR7''@;'; put 'put ''YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zbS1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1z''@;'; put 'put ''bS1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1jb250ZW50LXNtLWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tYXJvdW5ke2FsaWduLWNvbnRl''@;'; put 'put ''bnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1hdXRve2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLXN0YXJ0e2Fs''@;'; put 'put ''aWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tYmFzZWxpbmV7''@;'; put 'put ''YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1tZC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZs''@;'; put 'put ''ZXgtbWQtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2Uh''@;'; put 'put ''aW1wb3J0YW50fS5jbHItZmxleC1tZC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC1tZC13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1m''@;'; put 'put ''bGV4LW1kLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItZmxleC1tZC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1tZC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbWQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVu''@;'; put 'put ''ZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250''@;'; put 'put ''ZW50LW1kLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbWQtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWFsaWduLWl0ZW1zLW1kLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbWQtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbWQtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNo''@;'; put 'put ''IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1jZW50ZXJ7YWxp''@;'; put 'put ''Z24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tc2VsZi1tZC1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tc2VsZi1tZC1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsZXgtbGctcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpj''@;'; put 'put ''b2x1bW4haW1wb3J0YW50fS5jbHItZmxleC1sZy1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbGctd3JhcHtm''@;'; put 'put ''bGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbGctd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1sZy1maWxse2ZsZXg6MSAxIGF1dG8haW1w''@;'; put 'put ''b3J0YW50fS5jbHItZmxleC1sZy1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC1sZy1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC1sZy1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgtbGctc2hyaW5rLTF7ZmxleC1z''@;'; put 'put ''aHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWxnLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250''@;'; put 'put ''ZW50LWxnLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1hcm91bmR7anVzdGlmeS1jb250ZW50''@;'; put 'put ''OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1jZW50ZXJ7''@;'; put 'put ''YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50''@;'; put 'put ''LWxnLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0u''@;'; put 'put ''Y2xyLWFsaWduLWNvbnRlbnQtbGctYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1zdHJldGNoe2Fs''@;'; put 'put ''aWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctZW5ke2FsaWdu''@;'; put 'put ''LXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctc3RyZXRjaHth''@;'; put 'put ''bGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC14bC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZsZXgteGwtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LXhs''@;'; put 'put ''LXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgteGwtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC14bC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsZXgteGwtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC14bC13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWdyb3ctMHtm''@;'; put 'put ''bGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5jbHItZmxleC14bC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3Rp''@;'; put 'put ''ZnktY29udGVudC14bC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVye2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWFsaWduLWl0ZW1zLXhsLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMteGwtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXhsLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24taXRlbXMteGwtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMteGwtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4''@;'; put 'put ''LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1iZXR3ZWVu''@;'; put 'put ''e2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWFsaWduLXNlbGYteGwtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1zZWxmLXhsLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXhsLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9''@;'; put 'put ''fS5jbHItZmxleC14cy1maXJzdHtvcmRlcjotMX0uY2xyLWZsZXgteHMtbGFzdHtvcmRlcjoxfS5jbHItZmxleC14cy11bm9yZGVyZWR7b3JkZXI6MH0uY2xyLWZsZXgtaXRlbXMteHMtdG9we2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXhzLW1pZGRsZXthbGlnbi1p''@;'; put 'put ''dGVtczpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLXhzLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH0uY2xyLWZsZXgteHMtdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgteHMtbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC14cy1ib3R0b217YWxpZ24tc2Vs''@;'; put 'put ''ZjpmbGV4LWVuZH0uY2xyLWZsZXgtaXRlbXMteHMtbGVmdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMteHMtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLXhzLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xy''@;'; put 'put ''LWZsZXgtaXRlbXMteHMtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNsci1mbGV4LWl0ZW1zLXhzLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1zbS1maXJzdHtvcmRlcjotMX0uY2xy''@;'; put 'put ''LWZsZXgtc20tbGFzdHtvcmRlcjoxfS5jbHItZmxleC1zbS11bm9yZGVyZWR7b3JkZXI6MH19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1pdGVtcy1zbS10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtc20tbWlkZGxle2FsaWduLWl0ZW1zOmNl''@;'; put 'put ''bnRlcn0uY2xyLWZsZXgtaXRlbXMtc20tYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbGV4LXNtLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LXNtLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgt''@;'; put 'put ''c20tYm90dG9te2FsaWduLXNlbGY6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtaXRlbXMtc20tbGVmdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtc20tY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNsci1mbGV4''@;'; put 'put ''LWl0ZW1zLXNtLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xyLWZsZXgtaXRlbXMtc20tYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNsci1mbGV4LWl0ZW1zLXNtLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59fUBtZWRpYSAobWlu''@;'; put 'put ''LXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LW1kLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtbWQtdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtaXRlbXMtbWQtdG9we2FsaWduLWl0ZW1zOmZsZXgt''@;'; put 'put ''c3RhcnR9LmNsci1mbGV4LWl0ZW1zLW1kLW1pZGRsZXthbGlnbi1pdGVtczpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLW1kLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1tZC10b3B7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5j''@;'; put 'put ''bHItZmxleC1tZC1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LW1kLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbGV4LWl0ZW1zLW1kLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0''@;'; put 'put ''ZW1zLW1kLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1tZC1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLW1kLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1tZC1iZXR3''@;'; put 'put ''ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1mbGV4LWxnLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC1sZy1sYXN0e29yZGVyOjF9LmNsci1mbGV4LWxnLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEgKG1pbi13aWR0aDo5''@;'; put 'put ''OTJweCl7LmNsci1mbGV4LWl0ZW1zLWxnLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1sZy1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1sZy1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjk5''@;'; put 'put ''MnB4KXsuY2xyLWZsZXgtbGctdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgtbGctbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1sZy1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItZmxleC1pdGVtcy1s''@;'; put 'put ''Zy1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1sZy1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtbGctcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy1sZy1hcm91bmR7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMtbGctYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWZsZXgteGwtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LXhsLWxhc3R7b3JkZXI6MX0uY2xy''@;'; put 'put ''LWZsZXgteGwtdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LWl0ZW1zLXhsLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14bC1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14bC1i''@;'; put 'put ''b3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LXhsLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LXhsLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgteGwtYm90dG9te2FsaWduLXNlbGY6Zmxl''@;'; put 'put ''eC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LWl0ZW1zLXhsLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXhsLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14bC1yaWdodHtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLXhsLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy14bC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX0uY2xyLWZsb2F0LXhzLWxlZnR7ZmxvYXQ6bGVmdCFpbXBv''@;'; put 'put ''cnRhbnR9LmNsci1mbG9hdC14cy1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC14cy1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsb2F0LXNtLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1z''@;'; put 'put ''bS1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC1zbS1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbG9hdC1tZC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQtbWQtcmlnaHR7ZmxvYXQ6cmln''@;'; put 'put ''aHQhaW1wb3J0YW50fS5jbHItZmxvYXQtbWQtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItZmxvYXQtbGctbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uY2xyLWZsb2F0LWxnLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsb2F0LWxnLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbG9hdC14bC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQteGwtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQteGwtbm9uZXtm''@;'; put 'put ''bG9hdDpub25lIWltcG9ydGFudH19LmNsci1pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS5jbHItaGlkZGVuLXhzLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtYXgtd2lkdGg6NTc1Ljk4cHgpey5jbHItaGlkZGVuLXhzLWRvd257ZGlzcGxheTpub25l''@;'; put 'put ''IWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItaGlkZGVuLXNtLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KXsuY2xyLWhpZGRlbi1zbS1kb3due2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdp''@;'; put 'put ''ZHRoOjc2OHB4KXsuY2xyLWhpZGRlbi1tZC11cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo5OTEuOThweCl7LmNsci1oaWRkZW4tbWQtZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1oaWRkZW4tbGct''@;'; put 'put ''dXB7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6MTE5OS45OHB4KXsuY2xyLWhpZGRlbi1sZy1kb3due2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1oaWRkZW4teGwtdXB7ZGlzcGxheTpub25lIWltcG9ydGFu''@;'; put 'put ''dH19LmNsci1oaWRkZW4teGwtZG93biwuY2xyLXZpc2libGUtcHJpbnQtYmxvY2t7ZGlzcGxheTpub25lIWltcG9ydGFudH1AbWVkaWEgcHJpbnR7LmNsci12aXNpYmxlLXByaW50LWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fX0uY2xyLXZpc2libGUtcHJpbnQtaW5saW5le2Rpc3Bs''@;'; put 'put ''YXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1wcmludC1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX0uY2xyLXZpc2libGUtcHJpbnQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1w''@;'; put 'put ''cmludC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fX1AbWVkaWEgcHJpbnR7LmNsci1oaWRkZW4tcHJpbnR7ZGlzcGxheTpub25lIWltcG9ydGFudH19LmNsci1yb3d7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1yaWdodDotLjZyZW07bWFy''@;'; put 'put ''Z2luLWxlZnQ6LS42cmVtfS5jbHItbm8tZ3V0dGVyc3ttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDowfS5jbHItbm8tZ3V0dGVycz4uY2xyLWNvbCwuY2xyLW5vLWd1dHRlcnM+W2NsYXNzKj1jbHItY29sLV17cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5jbHItY29sLXhsLC5j''@;'; put 'put ''bHItY29sLXhsLWF1dG8sLmNsci1jb2wteGwtMTIsLmNsci1jb2wteGwtMTEsLmNsci1jb2wteGwtMTAsLmNsci1jb2wteGwtOSwuY2xyLWNvbC14bC04LC5jbHItY29sLXhsLTcsLmNsci1jb2wteGwtNiwuY2xyLWNvbC14bC01LC5jbHItY29sLXhsLTQsLmNsci1jb2wteGwtMywuY2xyLWNv''@;'; put 'put ''bC14bC0yLC5jbHItY29sLXhsLTEsLmNsci1jb2wtbGcsLmNsci1jb2wtbGctYXV0bywuY2xyLWNvbC1sZy0xMiwuY2xyLWNvbC1sZy0xMSwuY2xyLWNvbC1sZy0xMCwuY2xyLWNvbC1sZy05LC5jbHItY29sLWxnLTgsLmNsci1jb2wtbGctNywuY2xyLWNvbC1sZy02LC5jbHItY29sLWxnLTUs''@;'; put 'put ''LmNsci1jb2wtbGctNCwuY2xyLWNvbC1sZy0zLC5jbHItY29sLWxnLTIsLmNsci1jb2wtbGctMSwuY2xyLWNvbC1tZCwuY2xyLWNvbC1tZC1hdXRvLC5jbHItY29sLW1kLTEyLC5jbHItY29sLW1kLTExLC5jbHItY29sLW1kLTEwLC5jbHItY29sLW1kLTksLmNsci1jb2wtbWQtOCwuY2xyLWNv''@;'; put 'put ''bC1tZC03LC5jbHItY29sLW1kLTYsLmNsci1jb2wtbWQtNSwuY2xyLWNvbC1tZC00LC5jbHItY29sLW1kLTMsLmNsci1jb2wtbWQtMiwuY2xyLWNvbC1tZC0xLC5jbHItY29sLXNtLC5jbHItY29sLXNtLWF1dG8sLmNsci1jb2wtc20tMTIsLmNsci1jb2wtc20tMTEsLmNsci1jb2wtc20tMTAs''@;'; put 'put ''LmNsci1jb2wtc20tOSwuY2xyLWNvbC1zbS04LC5jbHItY29sLXNtLTcsLmNsci1jb2wtc20tNiwuY2xyLWNvbC1zbS01LC5jbHItY29sLXNtLTQsLmNsci1jb2wtc20tMywuY2xyLWNvbC1zbS0yLC5jbHItY29sLXNtLTEsLmNsci1jb2wsLmNsci1jb2wtYXV0bywuY2xyLWNvbC0xMiwuY2xy''@;'; put 'put ''LWNvbC0xMSwuY2xyLWNvbC0xMCwuY2xyLWNvbC05LC5jbHItY29sLTgsLmNsci1jb2wtNywuY2xyLWNvbC02LC5jbHItY29sLTUsLmNsci1jb2wtNCwuY2xyLWNvbC0zLC5jbHItY29sLTIsLmNsci1jb2wtMXt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6LjA1cmVtO3BhZGRpbmctcmlnaHQ6LjZy''@;'; put 'put ''ZW07cGFkZGluZy1sZWZ0Oi42cmVtfS5jbHItY29se2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY2xyLWNvbC0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdp''@;'; put 'put ''ZHRoOjguMzMzMzMzMzMzMyV9LmNsci1jb2wtMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY2xyLWNvbC00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4z''@;'; put 'put ''MzMzMzMzMzMzJX0uY2xyLWNvbC01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jbHItY29sLTd7ZmxleDowIDAgNTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMz''@;'; put 'put ''MzMlfS5jbHItY29sLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNsci1jb2wtMTB7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5j''@;'; put 'put ''bHItY29sLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5jbHItb3JkZXItZmlyc3R7b3JkZXI6LTF9LmNsci1vcmRlci1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItMHtv''@;'; put 'put ''cmRlcjowfS5jbHItb3JkZXItMXtvcmRlcjoxfS5jbHItb3JkZXItMntvcmRlcjoyfS5jbHItb3JkZXItM3tvcmRlcjozfS5jbHItb3JkZXItNHtvcmRlcjo0fS5jbHItb3JkZXItNXtvcmRlcjo1fS5jbHItb3JkZXItNntvcmRlcjo2fS5jbHItb3JkZXItN3tvcmRlcjo3fS5jbHItb3JkZXIt''@;'; put 'put ''OHtvcmRlcjo4fS5jbHItb3JkZXItOXtvcmRlcjo5fS5jbHItb3JkZXItMTB7b3JkZXI6MTB9LmNsci1vcmRlci0xMXtvcmRlcjoxMX0uY2xyLW9yZGVyLTEye29yZGVyOjEyfS5jbHItb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC0ye21hcmdpbi1sZWZ0''@;'; put 'put ''OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY2xyLW9m''@;'; put 'put ''ZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtMTF7bWFy''@;'; put 'put ''Z2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItY29sLXNte2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1zbS1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY2xyLWNv''@;'; put 'put ''bC1zbS0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9LmNsci1jb2wtc20tMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY2xyLWNv''@;'; put 'put ''bC1zbS00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY2xyLWNvbC1zbS01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jbHIt''@;'; put 'put ''Y29sLXNtLTd7ZmxleDowIDAgNTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLXNtLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNs''@;'; put 'put ''ci1jb2wtc20tMTB7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDox''@;'; put 'put ''MDAlfS5jbHItb3JkZXItc20tZmlyc3R7b3JkZXI6LTF9LmNsci1vcmRlci1zbS1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItc20tMHtvcmRlcjowfS5jbHItb3JkZXItc20tMXtvcmRlcjoxfS5jbHItb3JkZXItc20tMntvcmRlcjoyfS5jbHItb3JkZXItc20tM3tvcmRlcjozfS5jbHItb3Jk''@;'; put 'put ''ZXItc20tNHtvcmRlcjo0fS5jbHItb3JkZXItc20tNXtvcmRlcjo1fS5jbHItb3JkZXItc20tNntvcmRlcjo2fS5jbHItb3JkZXItc20tN3tvcmRlcjo3fS5jbHItb3JkZXItc20tOHtvcmRlcjo4fS5jbHItb3JkZXItc20tOXtvcmRlcjo5fS5jbHItb3JkZXItc20tMTB7b3JkZXI6MTB9LmNs''@;'; put 'put ''ci1vcmRlci1zbS0xMXtvcmRlcjoxMX0uY2xyLW9yZGVyLXNtLTEye29yZGVyOjEyfS5jbHItb2Zmc2V0LXNtLTB7bWFyZ2luLWxlZnQ6MH0uY2xyLW9mZnNldC1zbS0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtc20tMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3''@;'; put 'put ''JX0uY2xyLW9mZnNldC1zbS0ze21hcmdpbi1sZWZ0OjI1JX0uY2xyLW9mZnNldC1zbS00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXNtLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtc20tNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZz''@;'; put 'put ''ZXQtc20tN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1zbS04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXNtLTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LXNtLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zm''@;'; put 'put ''c2V0LXNtLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1jb2wtbWR7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLW1kLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0''@;'; put 'put ''aDpub25lfS5jbHItY29sLW1kLTF7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1tZC0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC0ze2ZsZXg6MCAwIDI1JTttYXgtd2lk''@;'; put 'put ''dGg6MjUlfS5jbHItY29sLW1kLTR7ZmxleDowIDAgMzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTZ7ZmxleDowIDAgNTAlO21heC13''@;'; put 'put ''aWR0aDo1MCV9LmNsci1jb2wtbWQtN3tmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbWQtOXtmbGV4OjAgMCA3NSU7bWF4''@;'; put 'put ''LXdpZHRoOjc1JX0uY2xyLWNvbC1tZC0xMHtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTEye2ZsZXg6MCAwIDEw''@;'; put 'put ''MCU7bWF4LXdpZHRoOjEwMCV9LmNsci1vcmRlci1tZC1maXJzdHtvcmRlcjotMX0uY2xyLW9yZGVyLW1kLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci1tZC0we29yZGVyOjB9LmNsci1vcmRlci1tZC0xe29yZGVyOjF9LmNsci1vcmRlci1tZC0ye29yZGVyOjJ9LmNsci1vcmRlci1tZC0ze29y''@;'; put 'put ''ZGVyOjN9LmNsci1vcmRlci1tZC00e29yZGVyOjR9LmNsci1vcmRlci1tZC01e29yZGVyOjV9LmNsci1vcmRlci1tZC02e29yZGVyOjZ9LmNsci1vcmRlci1tZC03e29yZGVyOjd9LmNsci1vcmRlci1tZC04e29yZGVyOjh9LmNsci1vcmRlci1tZC05e29yZGVyOjl9LmNsci1vcmRlci1tZC0x''@;'; put 'put ''MHtvcmRlcjoxMH0uY2xyLW9yZGVyLW1kLTExe29yZGVyOjExfS5jbHItb3JkZXItbWQtMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQtbWQtMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LW1kLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1tZC0ye21hcmdpbi1sZWZ0''@;'; put 'put ''OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LW1kLTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbWQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1tZC02e21hcmdpbi1sZWZ0''@;'; put 'put ''OjUwJX0uY2xyLW9mZnNldC1tZC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LW1kLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbWQtOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtbWQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMz''@;'; put 'put ''MzMzMyV9LmNsci1vZmZzZXQtbWQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWNvbC1sZ3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtbGctYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRo''@;'; put 'put ''OmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtbGctMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLWxnLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTN7ZmxleDow''@;'; put 'put ''IDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtbGctNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGctNntmbGV4''@;'; put 'put ''OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC1sZy03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC1sZy05e2Zs''@;'; put 'put ''ZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLWxnLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGct''@;'; put 'put ''MTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLWxnLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItbGctbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLWxnLTB7b3JkZXI6MH0uY2xyLW9yZGVyLWxnLTF7b3JkZXI6MX0uY2xyLW9yZGVyLWxnLTJ7b3JkZXI6Mn0uY2xy''@;'; put 'put ''LW9yZGVyLWxnLTN7b3JkZXI6M30uY2xyLW9yZGVyLWxnLTR7b3JkZXI6NH0uY2xyLW9yZGVyLWxnLTV7b3JkZXI6NX0uY2xyLW9yZGVyLWxnLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLWxnLTd7b3JkZXI6N30uY2xyLW9yZGVyLWxnLTh7b3JkZXI6OH0uY2xyLW9yZGVyLWxnLTl7b3JkZXI6OX0u''@;'; put 'put ''Y2xyLW9yZGVyLWxnLTEwe29yZGVyOjEwfS5jbHItb3JkZXItbGctMTF7b3JkZXI6MTF9LmNsci1vcmRlci1sZy0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC1sZy0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQtbGctMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LWxn''@;'; put 'put ''LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbGctM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQtbGctNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LWxn''@;'; put 'put ''LTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LWxnLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1sZy05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNldC1sZy0xMHttYXJnaW4t''@;'; put 'put ''bGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWNvbC14bHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wteGwtYXV0b3tmbGV4''@;'; put 'put ''OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wteGwtMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLXhsLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHIt''@;'; put 'put ''Y29sLXhsLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wteGwtNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNs''@;'; put 'put ''ci1jb2wteGwtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC14bC03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0u''@;'; put 'put ''Y2xyLWNvbC14bC05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLXhsLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2''@;'; put 'put ''NyV9LmNsci1jb2wteGwtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLXhsLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXIteGwtbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLXhsLTB7b3JkZXI6MH0uY2xyLW9yZGVyLXhsLTF7b3JkZXI6MX0uY2xyLW9yZGVyLXhs''@;'; put 'put ''LTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLXhsLTN7b3JkZXI6M30uY2xyLW9yZGVyLXhsLTR7b3JkZXI6NH0uY2xyLW9yZGVyLXhsLTV7b3JkZXI6NX0uY2xyLW9yZGVyLXhsLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLXhsLTd7b3JkZXI6N30uY2xyLW9yZGVyLXhsLTh7b3JkZXI6OH0uY2xyLW9yZGVy''@;'; put 'put ''LXhsLTl7b3JkZXI6OX0uY2xyLW9yZGVyLXhsLTEwe29yZGVyOjEwfS5jbHItb3JkZXIteGwtMTF7b3JkZXI6MTF9LmNsci1vcmRlci14bC0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC14bC0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQteGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMl''@;'; put 'put ''fS5jbHItb2Zmc2V0LXhsLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQteGwtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC14bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2Njcl''@;'; put 'put ''fS5jbHItb2Zmc2V0LXhsLTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LXhsLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC14bC05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNl''@;'; put 'put ''dC14bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC14bC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19LmNsci1icmVhay1yb3d7d2lkdGg6MTAwJX0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH1wcmV7bWFyZ2luOi42cmVtIDB9''@;'; put 'put ''cHJle2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDAsICNjY2NjY2MpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSl9cHJlIGNvZGV7d2hpdGUtc3BhY2U6cHJlfWNvZGUuY2xyLWNvZGV7Y29sb3I6I2MyMWQwMDtjb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCwgI2MyMWQw''@;'; put 'put ''MCk7cGFkZGluZzowO2JhY2tncm91bmQ6MCAwfXVsLmxpc3QtdW5zdHlsZWQ6bm90KFtjZHMtbGlzdF0pe3BhZGRpbmctbGVmdDowO21hcmdpbi1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfXVsOm5vdChbY2RzLWxpc3RdKSxvbDpub3QoW2Nkcy1saXN0XSl7bGlzdC1zdHlsZS1wb3NpdGlvbjpp''@;'; put 'put ''bnNpZGU7bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctbGVmdDowfXVsLmxpc3Q6bm90KFtjZHMtbGlzdF0pLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pe2xpc3Qtc3R5bGUtcG9zaXRpb246b3V0c2lkZTttYXJnaW4tbGVmdDoxLjFlbX11bC5saXN0''@;'; put 'put ''Om5vdChbY2RzLWxpc3RdKS5jb21wYWN0LG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBhY3R7bGluZS1oZWlnaHQ6LjlyZW19dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saSxvbC5saXN0Om5vdChbY2RzLWxpc3RdKS5jb21wYWN0Pmxpe21hcmdpbi1ib3R0b206LjNyZW19''@;'; put 'put ''dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saTpsYXN0LWNoaWxkLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBhY3Q+bGk6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9dWw6bm90KC5saXN0LXVuc3R5bGVkKTpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxl''@;'; put 'put ''ZCxvbDpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxlZHttYXJnaW4tbGVmdDoxLjFlbX1saT51bDpub3QoW2Nkcy1saXN0XSl7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjEuMWVtfXVsLmxpc3QtZ3JvdXA6bm90KFtjZHMtbGlzdF0pe21hcmdpbi10b3A6MH11bDpub3QoW2Nk''@;'; put 'put ''cy1saXN0XSkubGlzdC1zcGFjZXIsb2w6bm90KFtjZHMtbGlzdF0pLmxpc3Qtc3BhY2Vye21hcmdpbi10b3A6MS4ycmVtfWgxOm5vdChbY2RzLXRleHRdKXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1oMS1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIo''@;'; put 'put ''LS1jbHItaDEtZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oMS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZl''@;'; put 'put ''dGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjZyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjIuNHJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9aDI6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWgyLWNvbG9yLCBibGFjayk7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMi1mb250LXdlaWdodCwgMjAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0t''@;'; put 'put ''Y2xyLWgyLWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOjEuNHJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6Mi40cmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdp''@;'; put 'put ''bi1ib3R0b206MH1oMzpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItaDMtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgzLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5l''@;'; put 'put ''eHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItaDMtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MS4xcmVtO2xldHRlci1zcGFj''@;'; put 'put ''aW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWg0Om5vdChbY2RzLXRleHRdKXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1oNC1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHIt''@;'; put 'put ''aDQtZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oNC1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBO''@;'; put 'put ''ZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1oNTpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItaDUt''@;'; put 'put ''Y29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItaDUtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1o''@;'; put 'put ''NS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOHJlbTtsZXR0ZXItc3BhY2luZzouMDFlbTtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRv''@;'; put 'put ''bTowfWg2Om5vdChbY2RzLXRleHRdKXtjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1oNi1jb2xvciwgIzMzMzMzMyk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oNi1mb250LXdlaWdodCwgNTAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhl''@;'; put 'put ''bHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWg2LWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5v''@;'; put 'put ''cm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHk6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAx''@;'; put 'put ''LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouN3JlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi1ib3R0b206MDtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1m''@;'; put 'put ''YW1pbHk6dmFyKC0tY2xyLWZvbnQsIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTttYXJnaW4tdG9wOjAhaW1wb3J0YW50fWJvZHkgcDpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDEtY29s''@;'; put 'put ''b3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJv''@;'; put 'put ''ZHkgLnAwOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDA6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAwLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAwLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtc2l6ZTox''@;'; put 'put ''cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnAyOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDI6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAyLWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAyLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtc2l6ZTouNjVyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9Ym9k''@;'; put 'put ''eSAucDM6bm90KFtjZHMtdGV4dF0pLGJvZHkgcC5wMzpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDMtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDMtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi42''@;'; put 'put ''NXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1ib2R5IC5wNDpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA0Om5vdChbY2RzLXRleHRdKXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1wNC1jb2xv''@;'; put 'put ''ciwgIzY2NjY2Nik7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNC1mb250LXdlaWdodCwgNjAwKTtmb250LXNpemU6LjZyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9Ym9k''@;'; put 'put ''eSAucDU6bm90KFtjZHMtdGV4dF0pLGJvZHkgcC5wNTpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDUtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDUtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi42''@;'; put 'put ''cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA2Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDY6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA2LWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA2LWZvbnQtd2VpZ2h0LCA2MDApO2ZvbnQtc2l6ZTouNTVyZW07bGV0dGVyLXNwYWNpbmc6LjAzZW07bGluZS1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkg''@;'; put 'put ''LnA3Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDc6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA3LWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA3LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouNTVy''@;'; put 'put ''ZW07bGV0dGVyLXNwYWNpbmc6LjAzZW07bGluZS1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA4Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDg6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA4LWNvbG9yLCAj''@;'; put 'put ''NjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA4LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouNXJlbTtsZXR0ZXItc3BhY2luZzouMDNlbTtsaW5lLWhlaWdodDouNnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9LnRleHQtbGln''@;'; put 'put ''aHR7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCwgMjAwKX0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fS50ZXh0LWxlZnR7dGV4dC1hbGln''@;'; put 'put ''bjpsZWZ0IWltcG9ydGFudH0udGV4dC1qdXN0aWZ5e3RleHQtYWxpZ246anVzdGlmeSFpbXBvcnRhbnR9aHRtbDpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IsICM2NjY2NjYpO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmly''@;'; put 'put ''IE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItZm9udCwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxMjUlfUBmb250LWZhY2V7Zm9udC1mYW1p''@;'; put 'put ''bHk6TWV0cm9wb2xpcztzcmM6dXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFGUWdBQk1BQUFBQW04QUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFCcUFBQUFCd0FBQUFjZk5INTVrZEVSVVlBQUFI''@;'; put 'put ''RUFBQUFUUUFBQUdJSDFRZjhSMUJQVXdBQUFoUUFBQWNhQUFBT2RqeStlamxIVTFWQ0FBQUpNQUFBQUNBQUFBQWdSSFpNZFU5VEx6SUFBQWxRQUFBQVRRQUFBR0JvUHF6clkyMWhjQUFBQ2FBQUFBSnNBQUFEbm5kREQ3RmpkblFnQUFBTURBQUFBREFBQUFBOEVZNEJqR1p3WjIwQUFBdzhBQUFH''@;'; put 'put ''T2dBQURSWjJaSDEyWjJGemNBQUFFbmdBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFTZ0FBQU5uTUFBR2dVeEZJZ04yaGxZV1FBQUVqMEFBQUFOZ0FBQURZTFlZZ1VhR2hsWVFBQVNTd0FBQUFoQUFBQUpBZDJCREpvYlhSNEFBQkpVQUFBQW9nQUFBVHV1UEkvRkd4dlkyRUFBRXZZQUFBQ2NnQUFB''@;'; put 'put ''bnFKYW5Cd2JXRjRjQUFBVGt3QUFBQWdBQUFBSUFLRUFlbHVZVzFsQUFCT2JBQUFBWUlBQUFOV0xkQ0U5WEJ2YzNRQUFFL3dBQUFEb1FBQUJpR1hGajJLY0hKbGNBQUFVNVFBQUFDQkFBQUFqUmxRQWhCM1pXSm1BQUJVR0FBQUFBWUFBQUFHOW5oWW1BQUFBQUVBQUFBQTFGRzFhZ0FBQUFEVHda''@;'; put 'put ''MkdBQUFBQU5TK3B2VjQyZzJNUVFxRVFCREVFa2YwTUxQb2Y3eXBML0RvZlhmVi96L0FJZ1JDMFRRQ0xSNmNkRlJralZzbzdIelR2MUQ0QjdtNDA0OERPbG9wTmx2NjQ1U2VYWExUNTFzWHpTYStXM0FGM0FBQUFIamFqVmNCYkZiVkZmN091ZmUrdi8wTFdFb0xDQjBEVWhreFRXV0VTVVZHaVdN''@;'; put 'put ''RnNWUERtRUVIWmx1Y1k2MVE3QmpaaURGS0hacWw2WXpERHBFMHFBeU1Oc0JRc1NLeXBxdk9PVWRrWTZZaFlGd0h5RFltMDduRkNQTDJ2Zk4rNkY5b3QvR0ZqOE81OTkxN3p6bmY3Ym1GQU1oaU1oWkM1dFhXTFVZQlBEMklZemorSTFDNGhtODNyVVRwaW04Mk5hQjhSY09LQnM0Ry9jbG9PaU5o''@;'; put 'put ''eCsreUdJMEptR0llaHdyVXVZNTBORnBscTByVWlvZ2Z5ZkRWL0dLYytRSktMMEJRRzdlU0EyYWpCWjhpbG5GUUhvUHpaS3djUVJHRzhXUi9qN3ZqN1hGdmZCUkQvSWsvR0hMa3Q0TjYrN2gzL3YrUHh6OGRjb1gzaGh3WitqeC9qUGNPTWJJOTdvdjNKYmpJMzh1L3Ywa3cyQjV4SzdPa21NaE1U''@;'; put 'put ''MkcyUGtjb3FnaUhxd2lQNlVUQUY0Z0lNNGtNcmlFS01Jc29aRzVuczFKckNNSDkrQkZuUGtnRVpyeUYvaGNJd1l1RTRDVkNjWkR3K0FQaGNaUUkrRE1SNFRnUjRUMGl3bWtpZ3crSURNNFFoYXplcDF3dEpySlNMTVVvbEJJcElaZEtLWGtjSzV2bDJ0T29rZ3ArY3lVaGR1NzB4R29uZG5aaWJ5''@;'; put 'put ''Y09tRWNVb0pZb3hBSWlpMFZFRVJyeGZhNlFSQkpaSkpGRkV2QVRQTXI1YlVRaGZvWk5uUDhFZnM3NTI0a2k3Q1F5MkVVVTRCZEVCcnVKQWp4SFpQQThVWUE5UkNFNmlVTHNKN0xvSXJMb0pyTG9JYko0bFJEOG1oRExUb1IzaUNMOGlVanpvcFlYdGJ4NHkwdXd2QVRMaTdlOGVNdUxsekV5aHZt''@;'; put 'put ''NlhDNG5KemtLWExXS0dackNHbGV4dHROWjA1bk16Q3htcEJHcmNEZWE4RDJzWmkzdnh6bzA0d0ZtNFVGR3Y1TVJQY2RLdnNnS0htVGxqckppeDFtcDB6ekpHYnRaeGR5M05MbGZlcS9kdzlla2lYRVBwN3IyVVhldDhiOEdVYXVOREhZSExveWNTakRJbDZlSHZCdW56aXVlOS9wbzNCdzNYenlT''@;'; put 'put ''M3JwNGM3eDUwSkcvMkRlS2N0T0VtQ1lVWHlNY2JpVThiaU1DbGhJUkZmRW81eVJxRUZPRG1ob1VIVVNFSFVSa2xSYXJ0RmlseFNvdFZsZkZNY0xoQk9Gd2tuQTRTd1NjSXlJWktTTloxMUV5aWx3bVplU2tvbUlWRlJrdjQ3bStvaEtYRVVVWVNRd3pwWXNwWFUzcExxZjArVVMrMHIzRkUrWEZr''@;'; put 'put ''ekdsdTV6Uyt6WHVMU3B2VVdVc3F2TktUeldlcW5zdk1iU3VrMmk5YVZaekVTYktkUlpueHZUclRMK2FpemxSc2VZaVQ3U3NlZkhuSzlwWkZqSXlUYTdoN3NsUHIxcEd1SWoxdXBWeExXVWtiWXhrSXg1ak5FL2dTVHlGcll4b095UFp3ZHZZeWROMjhaUTlQTjB4MXVBa1QzYU9KeGpGM2Nad2wv''@;'; put 'put ''RmNjWUxwV1RIQ09rcUpxYU9FdTlUUUVyTnIySW1PUkJQSWZjeC90NnlYRm5sRU5rcTdiSlZuWkpmc2tYM1NMYS9MQVRra2grVmRPU0duNUVQNVdNNnAxNndXNjJndDE4azZWYXQwaHM3U3VWcXJkYnBJbCtqdGVvZlc2eXBkby9mb09uMUlXM1dEYnRJdHVrMDdkTGQyNm43dDBUZjBMWDFiajJp''@;'; put 'put ''Zm50VDM5U1A5eE1GRmJwZ3JjV1BkQkZmaHJuVFQzTlZ1dHJ2T0xYQTN1c1h1TnZjTmQ2ZTd5elc1SDdoNzNRUHV4KzVoMStZMnV5ZmQwMjZIZTk3dGRWM3VOZmVtKzczcmRlKzRZKzZ2N2gvdTMrNnNWMS9nUi9oU1A4NVA5Rk44cFovdXEvMGNQODh2OURmN1cveFMveTIvM0svMHEvMWFmNTlm''@;'; put 'put ''NzF2OEkzNmpiL2RiL1ROK2w5L2o5L2x1LzdvLzRBLzV3LzVkZjhLZjhoLzZqLzI1NEVNMkZJZlJvVHhNRGxORFZaZ1Jab1c1b1RiVWhVVmhTYmc5M0JIcXc2cXdKdHdUMW9XSFFtdllFRGFGTFdGYjZBaTdRMmZZSDNyQ0crR3Q4SFk0RXZyQ3lmQisrQ2g4RWlHS29tRzhIVTI2azl4c1BOKzR4''@;'; put 'put ''bmhEd21nMGJqUFAybjUvam04d3JqUysxbmhsd2xwbTl2WEdjNHdybEQ5VDVRcmpxNHlyRTBhOWNidStURzR3ZjZYeGJQUDNHcDh4ejBUang0MG5HVWZHQzF3OStTbmpwc0ZaZjVVWFk0MzVMMkY4MlhpTGNXTS95N0kwZHJQdk1uN1ZlTU9sbkdiQTdFdjVldU1LN2ZwZnJNOE95RlhYWUl5NXhv''@;'; put 'put ''OGIxL2N6czlkbDJmdnZuT2F6YTFDZWxNZE5lV2NlWU9mVnRObjhWNWcvMzU1dk9Xd3hlMWxlNXRNb0J0ZzJtcW9pMzU5bXRUcTFiVTZxbWJRNmFkU3BQbk4yenAvTWFUTzczYTA1cjk2Y3hnNmEzWlBZdVpxbUdWdWJVM0s0eUorZUljM2JBYlBYV28wT0pmTmRxc0FiYks5ZW0yTTNJdFh0QUgr''@;'; put 'put ''bDJXZHlOZHA1UWRYNS92UUdYWnVubWJRaStmWldzNytlK20yKzNRc3RNNy9wSWFlMFNYbjJIT1BJUEVQWmZ6UDdib3V1MXV3M3pjNWZ1U2IrSmJrcTNuOVJwZkozck03ZDdxNy9nd2ZPVkh6VzNxWGd1MnNxczVLOFRqMjdkaVc3WVBMQ2p2QjV2c1F5bUlGcTlyQ2tjNDlnMy80aWUzclN1VWZh''@;'; put 'put ''RzdYRU92Y28vbDYxa0gyb2ppakRUZXh6bzlucGJ1SHZQa3VJY3V2bG4ySFhXOGF1MWNpMzIwUjd2YzFrUjIvbmVsdlkrYjVpdmUrcjdINHZzME8rZ2dQNERsOTBwL0ZEZTFWdXhEOGw0REYyNHZIb3NKN2F5Zk9LWEdhL20wV1FlTDJwOEQ3Y1NWN1BibGVFc2R5cmdoRk53OVU4OVhVODVZMVl6''@;'; put 'put ''TkVYVEx1L016NXNiSGVHR3Uzbmc4YkxqYmNaOXhtZk5TN0NsN2pQY254WE1sSWdoWktWSWhrdUl5NDkwWDhBdGxLWFdBQUFBQUVBQUFBS0FCd0FIZ0FCUkVaTVZBQUlBQVFBQUFBQS8vOEFBQUFBQUFCNDJtTmdackpnbk1EQXlzREMxTVVVd2NEQTRBMmhHZU1ZUkJqTmdIeWdGQnl3TXlDQlVP''@;'; put 'put ''OXdQd1lIQmdYVlA4elMvNDBaR0ppUE1xb3FNREJNQnNreHNUS3RCMUlLREV3QXhsY0tOZ0FBQUhqYXRaTlpVSTVSSE1aLy83ZDlFU29VOWZiMmFkTkdvaFJGOXFYSXZwU3MyYkt2MlJyckVFTkZVc2llSktNWkUxTlR0aHZ1dURWampMN1BsVnZ1REIzSFYwd3p6TGh5WnQ1ejNuUE9uT2VjZVo3''@;'; put 'put ''ZkgzQ2g2d3RCZEk5VTZwazQ1NjVTck1jbGpNT05nWlJ3aXpydTBrZ1R6YlRRSmg0U0lJTWtUQVpMbkNSSnFxUkxwa3lWSE1tVFFpbVNFaVBWZUdXOGQ0a3lqNXV0NWhQemkrVnVCVnJCVnFobHM2S3NZVmE2ZGQvbUgvbE5LWDJIeFkwZTJvOXA0NW40U244eHhTYXhraWdwa2lZWmtpWFpraXNG''@;'; put 'put ''c2tFMmErMlh4bHV0ZmNoc01kdk56NVpoQlZoQlZvaFRlNmlWOWt0YmZWUXYxSFAxVkxXclZ2VklOYXVIcWtrMXFnWlZyK3JVTlZXcmFsUzFxbEtWcWtLVnFUT3FWSjNvZk5PWjFabjAvWk9qM0ZIZ3lIZkUyQWZhL2V3K2RpKzdtOTNvK05yeHVlUHdoNUIzeVYxZS9hZm1ibmc3aytDUFd3U2or''@;'; put 'put ''OC80aDBiWFNSZGNkWGJ1ZU9DSkY5NzQ0RXN2L09oTkgvcmlUd0NCOUtNL0F3Z2lXR2M4U0tjZWlrbVlUaVFjRzRPSklKSW9vb2xoQ0xIRUVVOENpUXhsR0VrTUo1a1JqQ1NGVkVhUlJqcWpHVU1HbVl6VnpHUXhuZ2xNWkJLVG1jSlVwakdkR1dTVHcweG1rY3RzNWpDWGVjeG5BUXRaeEdKTldo''@;'; put 'put ''NzVMS1dBWlN4bmhYNy9EbmF5bTJJT2NaelRsRk5HQmVjNVJ5VlZWSE9SR2k1eGhjdlVjcFhyM05RVS9XVDBOZzJhcFh1YXBwOXRGYXUxSGRGczRHeTNOK3Raby90ZG5QanRWdUZmSEx4QVBadFoyV05sTFpza1JvOWIyTTR4N0Rna1hQTVpLVkc2QWlLNG8zY2VvR21XQkYwUDhkMW5pcHhoeExL''@;'; put 'put ''TnZXeGxIM3M0d0VGZFMvczV3bEc5ZFpoU1RuR1MxN3FhZXJGT3ZNUmJmTmdvZnBwL3p4K1F6YXJvZU5wallNQUNISUhRa3NHU2FUMERBOU51SmxZR2h2OGh6TkwvalpsMi8vL0NkSUJKOFArWC8zNGdQZ0RJUFEwaWVOcXRWbWwzMDBZVWxieGxJeHRaYUZGTHgweWNwdEhJcEJTQ0FRTkJpdTFD''@;'; put 'put ''dWpoYkswRnBwVGhKOXdXNjBYMWY4Szk1Y3RwejZEZCtXdThiMlNhQmhKNzIxQi8wN3N5N00yK2JlV015bENCajNhOEVRaXpkTllhV2x5aTNlczJuVXhiTkJPRzJhSzc3bENwRWYvVWF2VWFqSVRlc2ZKNk1nQXhQTHJZTTAvQkMxeUZUa1FpM0hVb3BzU25vWHAweTA5ZGFNMmEvVjJsVUtGZng4''@;'; put 'put ''NVF1QkN2WC9iek1XMDFmVUwyT3FZWEFFbFJpVkFvQ0VTZnNhSk5tTU5VZUNacGovUnd6NzlWOUFXK2FrYUQrdWg5aVJyQ3VuOUU4by9uUUNvTWdzTWkwZzBDU1VmZTNnc0NodEJMWUoxT0k0Rm5XcS91VWxTN2xwSXM0QWpKRGh6Skt3aSt4R1djM1hNRWE5dGhLUE9BdlNKVUdwV2Z6VUhxaUta''@;'; put 'put ''b3dFTTlsQ3doeTJRL3JWclFTK0RMSUI0SVdWbjNvTEE2dGJkK2hyS0llejI0WnFTUlRPUXlsSzVGeDZVYVUydGdtc3dFRGxKMTFxRWNKZG5YQWE5ek5HQnVDZDZDRk1HQkt1S2hkN1ZXdG5nSERxN2l6K1c3dSs5VGVXdlFudTVnMlhQQVFkeWdxVFJseFhYUytESXR6U3NLQ2t4MHZVUjBaTFNZ''@;'; put 'put ''bUJnNVlUbE5ZWlZqM1E5dTk2SkRTQWJVRyt0TW90aVh6d1d6ZW9VRVZwMUlWMm93V0hScFNJQXBCaDd5cnZCeEF1Z0VOOG1nRm8wR01IQnJHTmlNNkpRSVphTUF1RFhtaGFJYUNocEEwaDBiVTBwb2ZaellYZ3lrYTNKSzNIUnBWUzh2KzBtb3lhZVV4UDZibkQ2dllHUGJXL1hoNEdBV01YQnEy''@;'; put 'put ''K2N6aUpMdnhJZjRNNGtQbUpDcVJMdFQ5bUpPSGFOMG02c3RtWi9NU3l6cllTdlM4QkZlQlp3SkVVb1AvTmN6dUxkVUJCWXdOWTB3aVd4NFpGMXVtYWVwYWpTa2pObEtWTlorR3BTc3FOSUREMXcvRG9TdENtUDl6ZE5RMGhnelhiWWJ4NFp4TmQyenJPTkkwanRqR2JJY21WR3l5bkVTZVdSNVJj''@;'; put 'put ''WnJsWXlyT3NIeGN4Vm1XUjFXY1kybXB1SWZsRXlydVpmbWtpdnRZUHFOa0orK1VDNUZoS1lwazN1QUw0dERzTHVWa1Yza3pVZHE3bE5OZDVhMUVlVXdaTkdqL2gvaWVRbnpINEpkQWZDenppSS9sY2NUSFVpSStsbE9JajJVQjhiR2NSbndzbjBaOExHY1FIMHVsUkZrZlUwZkI3R2dvUEhiQjA2''@;'; put 'put ''WEUxVk44Vm91S0hKc2MzTUlUdUFBMWNVQVZaVlNTM0JFZnliQTQrcmx1YWMxSk9qRWJaODJKaW85R3hnRSt1enN6RDZ0UEtuRmErL3NjZUdibFlTTzRuZnNhNTNsajhnK0RmNHNYWlNrK2FVNXdjS2VRQUhpOHY4TzRGVkhKb2RPcWVLVHMwUHcvVVhHQ0c2Q2ZRVTJNeVlJb2locmZmT1R5U3JO''@;'; put 'put ''Wmt6VzBDaDlQQkRvcjJzRzhhVTZNSTZVbHRLaEpHZ0V0ZzY1WjBEVHE4K3l0WmxFS1VXNWl2N043S2FLWTdFVVp6SUFwS09TbXNiRHM3NlJFV2xnN3FlbjAwY0RsUnRxTG5pdzFXMVp4aGIwSDcyUEl6U3g1TjFKZXVDa3A3VVdiVUtlOHlBSU91WkU5dUNhQ1cyanZzb3BpU2xpb0lqNEliUVg3''@;'; put 'put ''N1dORUppMHpneTZCSW1SeHNySVA3WW9kT2FLQ2RnTGZldElxNzl0QzdjOTE4aUF3bTUxdTUwR1drYUx6WFJYMWFuMVYxdGdvVjYvY1RSOEgwODZ3c2VZWFJSbFBMbnZmbmhUc1Y2Y0V1UUpHVjNhLzdrbng5anZXN1VwSlB0c1hkbm5pZFVvVjhsK0FCMFB1bFBjaUdrV1JzMWlsRWMrdlczZ3lS''@;'; put 'put ''VGtveGtWekhCZjAwaDd0aWxYZm8xM1lkKzJqVmx4V1ZMSWZaZEJWZE5adXdqYytYd2pxUUNvS1dxUWlWbmc2WkQ2Ym5acndzWlM0TEVYY3MyVFhSZlFkUENFZDRyODR4TFgvNjl4eUZOeWl5aEpkYU5jSnlRZHRIeXZvclNXN2s0Y3FSbWZ0dkd4bm9oMUpOK2dhZ3A1SUxqaitYdUF1anhYcEZP''@;'; put 'put ''N3o4d2ZNWDhGMjV2Z1luUWErcXVnTXhCTG5yWUlFaXlyZTBrNm1YbEI4aEdrSjhFWFZRck1DZUFuQVpQQ3lhcGw2cGc2Z1o1YVpVd0ZZWVE2RFZlWXdXR01PZzNXMWc2NTNHZWdWSUZPalY5V09tY3o1UU1sY3dEeVQwVFhtYVhTZGVScTl4anlOYnJCTkQrQjF0c25nRGJiSklHU2JEQ0xtVkFF''@;'; put 'put ''Mm1NT2d3UndHbTh4aHNLWDljb0cydFYrTTN0UitNWHBMKzhYb2JlMFhvM2UwWDR6ZTFYNHhlay83eGVoOTVQaGN0NEFmNkJGZEJQd3dnWmNBUCtLazY5RUNSamZ4akxZNXR4TEluSTgxeDJ4elBzSGk4OTFkUDlVanZlS3pCUEtLenhQSTlOdllwMDM0SW9GTStES0JUUGdLM0hKM3Y2LzFTTk8v''@;'; put 'put ''U1NEVHYwMGcwNy9EeWpiaCt3UXk0WWNFTXVGSGNDOTA5L3RKanpUOTV3UXkvWmNFTXYxWHJHd1Rma3NnRTM1UElCUHVxSjIrVEtyelo5VzFxWGVMMGxQMTI1MTMyUGtiWlRPNkxBQUFBQUVBQWYvL0FBOTQyclY5Q1hoYlY1bm9PZWRLdXBJbDJiNWFMY3Vick5YV2FtdXp2TWpYUzd3dmNiekZT''@;'; put 'put ''UnhuYzV5MEtWM1NsaTRocExRTkZBcVVBV1pZaHI0dTBLRk1TNUsyZEtIdEZDaFEycUhMREcrQWVjTUg1UTB6TEcvWUJqb3diWDA5L3puM1hsbTI3S2J3ZlMrMUpQdnFyUC81OStVVWxhSEZ0U1QrRk9kR0hLcEFkdVJDWHRTRTBpaUh1dEFRY29tTzNueG5lemFUYkE3NjZxdXJIRUtsUVVOUVdT''@;'; put 'put ''S3M5UWdlM3A2MGUrM0p0RGVkVFBQc2s0ZGYxYWYwR2YyazM4Q1R0UHE3MG9aMXlDYlQrRlBTczdqclAzdDY3K3Z0dmUrKzNrYVBwN2UzOTBpdjU5YjdqalI2am5qdXUrOCt6NUVqdHc0TTNIZDBvT0ZGN21kOUhyOEhmbTQ2MWpndzREc0l2dzE0T25zYmo5elE1b3p2dlBMS0I2KzhjbWQ4eFJQ''@;'; put 'put ''M3dBOUNCRTJ2L1I2ZEkrZlkzdnhpSThJWUxTS0V5a2NSSWR5U0JuT2NreHZUYURRVm1uSy9VS25sbldGcmt2TTZBdWxVSnRucXNOdDAzdjNENW9URzdiWlpxNnV0NUp4a2VkRnRzN2pkRnBzYm9iVTFOSWdmeFdQa2s1V05xQXloU2c3ZUgwRjAzaUM4WFFmenVsRTl1bUgwdkhmbmJqRlVvU05J''@;'; put 'put ''eXhGTUVGNDJZb09oZkxTODBzenh2SDdSVkViMGVtRlVnd21wSUdOdU1VQWZzQytSbmo5YTJrOXB1Q0RXSVZSZlYxc0QwN2lyWFZWT1dMQlZLUHpqYThPWVQvSmUzcHRscjJ5U3ZaSThlL0gwUy95YnpJM21HMk50c2J2Z2RhMzUyc3c3emRjcGY5MWdmdml1ekYzNGE5OU5Qd2IvMHQ5TlB3Ny8w''@;'; put 'put ''dDhGU01iV0hpVVI4Z2ZrUVNFVVI1MWlMdWIzMWRWV3U1dzJzNm5NWU9hSURpT09qQ0RDa1pzUlJ2Z1dDbWEwQkhCeG9yR21wcVo0VTl4aEZ5eGEzaEgybFdQQWtYUU1CN01PcHhERDZWUWVad0ZaSEU0ZW5nbDEySTRjem5RNWZHVFNxVUJRSUpIVWtSMWl6OGxvYU9meG93ZGE5K2JFS3haRHZw''@;'; put 'put ''bm81ZStROW9zN09rYXdlV1owNnVhNU5OZmR5MmNqclRzcmNXWDFycUhrYkZyWDJXV2NiZlZHZU9sTjkrNUpYSk8yL1o0ZmJwV3lJNm1XRG9mMEpxeE5pK0pyLzBYK2xYd0pNTVVLcHhaSEhlaUYwZk5WY0hKaEk5YVdZYXpUNGhXa1EzcURUbjhNYVRSb2lXQ0tTV1k0RW03SnhCT09xK0RHM0tQ''@;'; put 'put ''bmc5QWwvcFpkRURSbC9mZ2xFK1o1Snc5bm50eWlCeUhRbG5aRFcvZGFXQkFEaVVSRGc4MkdVS0lqMFo1Sk5jUWJZcUdBcmQ1V1YxMWx0UWlWc0pueVFEbHZEMXRrNENaYkFhYTJjdXpGU2V5MVVLQjZHM1YybXlPSk5uMmZ4K3ZmL2ZWQU1EUVlpUTdDZXhSL3FGTnE3cndtMXg2SnRMV0g4ZFJB''@;'; put 'put ''S0RnWWxiK0t0ZEdIdVFoZWpFN0VXM1pHbzVPSmxva28zclU2aFQ4NGtNNE1EbVRUQTlMeDZFUkxZaUlXbll5M1RFWVRBNW4wSVAwSzlzZWhwclhma3hQa01ZQjlHUGhQWHV5SVIvMTFOVzZYMDRETE9GTFBrSXBpUGw0Q01uYU1hb3V3S2hKcGFJaWtJNm1HY0VOenVGRUhtS1VONnJ5TmRFL1o0''@;'; put 'put ''bzNCTjg1TTFxbmpuWWp1ekNudjBwSU5CT0hQT3B3a2lhVjlKenVQNU83eDFFWEdFNUhoOE54YzVzcElVeWFSdkZyNmRGZHQvVVJmcmprMGZqcC90bm1vbVQrdzNMS1F1MmtnT3VpTGpJVERJODM1VVovNFR2RkExZkhoYThqeDlsaE5WNmdoRzI3dVdqMDNkOHRZMS82UTZBVmlBSDZCUGtFK2lV''@;'; put 'put ''d29PbnJlQVloaXBDeUpuUzhHSktoRTlNOTUrQk12VXRJWlgzakU3aU93SFd1QkkxVmc3Mng1bFNBNHkva2cvbzlEM3NvcXArQTlsSUhXK2JVNUhDTlB3ZGk2aDAxYW5BZ3pOcFoxQXZuWW5Qem5MN25rc0hkdTRaeDMxNDl2dU9ISHUvMjd2MzdWRHk0RVlDS2c1emxjcC9iVFFUOG5JN2FzRExE''@;'; put 'put ''WXVZVTU3MkhvZk11RkgxejFkZWpIdXROK0hmZ200SDFmUXJOSUZMdjhHSlBKSGQyeFJwZE5xMGQ0RjlZaWJvVERXSU9SRnFNVkhkWnF5UkpGYU8wWTdHNFd6UXdQWmRKTndkb2FOMCt4RTFiYWpYbmdCbkJxUWZnam0rbkd3WUQ4VzdMVjZhakh3U0lJWkxMQUp0aHp1dzA2VldDSDA4RitaNzNo''@;'; put 'put ''UHlkajNWODJHM1RlaW9aeXJjYk1hOHFjMFhBa1ppL1Q4R2F0eHRMczB4bk13S3owdXNwS0xtVFRhczA4VnlhRWRSR25JK3dvNDNpelR1TUlPWXc2dmRtQWJ6THJhMXFhYTh4VlBHZlNhNHk4V1JBc0ZpTnYxT2hOWEZsalRYTkxqZDVzMWp0YTQ2Wnlyc0hJbVhSYUUxOG1FR2dpbUhpVFZtZml5''@;'; put 'put ''aHNzK25pclEyK21CNHY2MEhGU1RsTElpQUtBRXhvT2EyWUJsNEV6WUE0dEE3blRvOWZnY2NiREszVjhkUmg3cWZSTVV5bWFKT1hmekQvM1hQNmJPUDVOK2dzZGIzTHROSG9NN1VUbHlDa0M2YUpCRmFXQU1Id1dpajJBODQzcklvMmZESnF0SU5HY05mV2g0OUVFRlczK3VscXhsWTdWaG42TE8z''@;'; put 'put ''QU1xTEZLdEROa25GMUhScUdTb2FMSDdtbkRuTFNLWTExc1A4TWdZejhIOHh1cHRrQ2ZBSmZEMklucFFSdFJtWStEQXk2V3FFY1VhV29xU0ZLODlwdTFSL0hIeVU5aFhrRXNwNE9DNU1CWHl4TlNWb1VuQjZTN0I4aFAzM3daTWZuYUFiemlHSGtTMkZzOWlvaE5nRmhzeHpKWHdDRFkyUUlxZ1o0''@;'; put 'put ''cTZ5dnJxaHlNRCtwZ0lack5mSTZrVXpIc2JhUkVBZ3dBNDNjUERyNTdhdXIwNE9EcHFmekJUT1pnUG44b2t6bVVOKzI5WjJYbDdyMTc3MTVadVdkdjU5alp1ZG4zam82ZW5aczdPOFpnVUEzdmI0QzgxeUczV0FWSHlRRzhSbVN1alFFL3h3UXJBeDBmekNZRjc1TzMxRDZZRXNtQjJaYVRxMU9J''@;'; put 'put ''OVcrQlRlbGhQeTdVTEFhTlpiQWR3QVpDUmhnNEdidWpDc3NpWWpKR2NQcUNHcjRxblBWVC9rVlh6d2NMSEs0Q3cvbTB3S24wTnUxb3VtSm5MSHI5Y09laDNOak10L0JKcWFudFgvS1hwcHA2QTVmN3hmN1VZcTd2MU5DRDhobUdBSjVhbUQrTXVzVk9kelhNNVFPQ2hoWEFNa0NTUXdzQ2NvbmpO''@;'; put 'put ''RXVBb0xBWWtKZExsS2Fkakp6RHFObm45L2o5UE8rQ2s2YWNJOW5LV0dzWXA1MnRHWG1OT2o2WVVibXdBdnhYVGtXaXZxUDV4Rmo0ME55T2diRjl6Y09SekVKVGVQSDkrU1B0QTIyZFU1Mlg5SnA2MnB1VFdYOVBVNzYzRS9kMyt2TytkQ3AwS2pHWDd0b2xsTS8yWmZlbUdENkU0QzBGOEM5RFpo''@;'; put 'put ''UVZtMDBZVUhCRXA0VjlZQVQ2NmxFQUlST2xGWm94bzlGb05nSU5DNVpLdWw2L0o0aVRBdFZZdldrQjQ5dWt6eHZ3elBpbGw0clN6eDlzd3k5SXVZNEhmNFp2a003SzU5UUdjSExDUEExVTczRUFleE1xT2FKQkdFNEszcEdHQVlrc3lwSjdJNUFhVUgyallBMlVBRWsrUDBwVmZLYUFsajkrVjZT''@;'; put 'put ''NWVhVTlQaEdKVENRbVIxc04rSVBTUTN6ZlhPZHlaLzVFcjZrOUdZOGx3MlBSeUZBb1c0V1h1bDV2U1IvSTk2eTBNMWgwd2hyOWNKWnUwT043eFc0Z0lvNEVxb2hXUTBaMHdHSTBXazZ6Z2dwaWxJY0ZxdHlpcGdhaG1xYWFrSzhST2xkNy9RRTlLTVJJV1JMbElCVExuSHlBa2tzdGhqOHM2Z2Jv''@;'; put 'put ''a1NieGU0NTJkWjNvUFgxbThOVFlPMlo5bzNPNS9abnF5M3I5RTVIWVJMei9zTGx5M3hCK01IT3dPMytzNjhrN1YvN213SzdXNGFuYjUyenBidWxNZkx3NVB0dzAzclY3V1laekIyekV3T2lwWHF3QkdZSVpOVkUraEpudUR0b3ZhRGNjTEE5NzBoNDdNSWlucEhmamw2VHZESk9ydWxwVzMwUDFp''@;'; put 'put ''UlRBb1liQklRemo5WXM5TmgwQmJqdkNGd0ZCNFJwNkFBS0dzMkpjSXhLaGNJaDBSTnBUclRYaG1tWVpHaEVEWldPVWUyUTJxUlFLZkFxd2tGbUpVL2s3V0U0WVovbko1VDJ6dlozRDNjYzZPbzkxajdYM3p2WmMwZGMwRW8rTVJFQjdpSStFV25ZbFV0T1J5SzUwWWxlTHFXVSsyN1hmN3BqTHBx''@;'; put 'put ''WmpzWmxVYnRibTJOK1puVy9CdDN0eWZsOUhZMk9ITDVCcklOSUZYejRRNnZaaTdPME9CZkkrdE5YNTExWEMwUnYwWUQ4UTJMb1dDRmxMVm9BVU9OZ3Z4emxHaTZTRmV2Nk5EWFRIQWErZm5iOURQbjVRMFNuQ2RtSDZod0lCQzRYRk92UDgzS2FUNzJMNHNJT2RmQXZEQXZMa3hwT1hzVUU2UTA5''@;'; put 'put ''ZXhnRjVEMHltNE5kQmZzQ3lSczlIUVZOeVVxYk9WaXJJMXB0V3R0N2NWRkRCZDhDa1ZvcWZMNGdXa3draGs5UGtzRlF5UWFSVE5BMVZFSkV0aEpKTitjUjMxbGlwZExMV1NIT3FuQUo3ajhsYS9EcllleFd3RGg0SnlJUy9nQXdYTUg0Y2YrRjhNa3h4TjRzV3NVU21BWGQxRCtzSTZGUFd0Tjl1''@;'; put 'put ''eHZZc2ZrNjZBWi9GWFpsWDgwOC9uV2Y3N0VOZkplWDRYd0JiZWRRbzFsTWNwMlllMkU0Y21WVllQdUdvTGxCSk9UN2xFdlMvUHZ6M1VwcTkvaVYvWng3bUhFT0x4S3JPeWNHYzJTaE9hKzNhTVh3VzVueE95bjBhWm53MTh5cWQwNzMyZS93dHdJOHE1RU5aTWVVd0dTbUx4SlROY3pEeDZTS1pR''@;'; put 'put ''eG0rRm1zMFRzMll5K1h5dWJ6K0tsOVFSeGVpeXMxMXJzNU11V0k1LzB6NzNxU3ZweWs3N3cvdk85dSttRXJ1YmU4eHErQzlXaHZzOERaMitwTHg1cE10TThuSXpwenhQVVdtTlYxblpPMTJiZ2U1RjNXakNWakwrVHJBQWFIUlEvUmNnNFZvOUowZFlHZHlJKzcxWndiMTJZTGNPR1EwRUEzSUFS''@;'; put 'put ''M2x5cm95MEMzNXcwaGhkc0JFOUhwdUNUWW82S25OVmcvdG8yQmNhN0JoSHIzZFRrM1VOZ1NZNlEyY2Z1V2luYldBcVMxVUpuQkl1N0o5TDU3WHpTT2RqbDlpM1NjWHdNYXJFa1dFeEFseGZHZ0FnSkVQQkpvQ3ZrREF4THRMdEpuR1FMQ0lPbHNkenF5VFp5WmM2MGJtbEd4bGRvR1hxdEhNenFP''@;'; put 'put ''UEhVbmNmLzdZVlYrNTRzaURSNU5Uc1dpbnZtNjJKVDdjM0hPOHZYWFFZbTR2aTRUcTY5b0RpNS9adS96RmxmMTM3Y3NmemxyYTM5RWYzR01nN2VuNHprUlA2dXFqRHg2NS9DdFhIdnpzMHNSbEdiQkRFNUdKWlAvSnZwaTNWOXY2VCs2R1FIaWhkL1pqOHl2bmx2ZCtackhHNC9ZM3ZMWThhaXRM''@;'; put 'put ''NXpNTHFiWUJkdVlOOFBaMTRQczhTUEt3R0RKZ0FNd0lZQ0NncEFha09CV3JZRlJRalVxdjE1ZnB5MlFWdVFxa09NOU0ycUFSazZ4MDdlQUFqdE9mdy9mZmY4ODk1TnpxMUt2NGpIUUdnTDRmeGo4RzQxZUNwdFdJdXNSMjRQd3dndzZvRHVTamRobk9WbkVROFZqV3hPbGM3bXFMNEttdmJuUTNW''@;'; put 'put ''amtFbDhVVmFkQXpSWGlqQVBCZ3F1cUF6bU8zS3I4SSszRnJkaTZSakxmM3BSWTdwSy9oVU1mb2VOZFBmdE0zTjlmM0czSXVNdEdTSG5kV0w3Wmw1aEw0MXI1MHF1L1gwcVBqSFIxajBtOHBINkh5NndOQXA3VW9Kb2FyWGNZeWlpUWpLcnQyYkhCaHdZTmFWQlB3QjZnTFM3TisvbnpwbWVQc3ZR''@;'; put 'put ''Y08zTHM0Y0tZbEVyb2tOMzdMeE1RdDQ3bExRcEdXTXdNbU9MbWxldzltV3lOTmlhbjNUazYrYnlyUkhHMXBnM09oY0h1RTZWZDJaclVVd01RTWNnVk1KcVBOWXJTYjdJRUc2dHV4cWxnWnhsa0YvU2hFZm43SmZZdUw5MTN5ODUvUDN6WStmdHY4L2VUYzdyOCtmUGd6dXp1RzM3TnIxMDNEcTg4''@;'; put 'put ''eCtUOEo4OFZnUGlPS2l4R1ZLMUpkU3JNSW9xdThXQnRtVm9aUjluaUJhbVdsL0ZHUVgzZmc2NlQzNFRzbEQvNFJ1ZXExdkNSMWtYTmRoZkhUTUw0Qk5Za0JkWHpLNmRpb3Fvb0JYeGlRZ1k3TWVCNGIyY3ZHUFNYZDBvUC9uUTM2VlhWTWVsNTN3bmw1VUZwc0JhMExjZldFYUxSTWlkZHFFRU11''@;'; put 'put ''WmdNN3FDYktXQ3hvRzZBUkJyeXltZWNSTmhMdnBzTkxlL0VIc0xYbGp1RkZkb0REZDhBQlh0OGxIMkQ2Uk5OMzhHSHB2K001K1FqYkVsSDFDUDJlODZpdzU2c1lUSU9pVDFGWGwwRkhwdnVsZnFrS3RCbVdtTzRXWGtsNEoxZUowcUlvNG5zcE9lRnV1bTNwSmR3cWo0cyt6SHlzVnVyQVdMZDVa''@;'; put 'put ''SE1SREo1SlVhUzlxSjBFc3VjWmFDdFFMR0xtQmNOb3BpeVRKUTZReWNuQUxxQkttMThEM1lzMFpWZ0dKYk1IVHpaRW5YdGJ3djBCRWF3elUzY3lIczFGZHJiaWY1UmlmWmQwd2h6N1lLZ3IyRDRieEZxRFhrdVlkTVBNODhiSm5sT3J4U0xMMDZTQWt3YWdDUkJkKzBSODZhejBLazVOUzcrN0d0''@;'; put 'put ''WXJuUVNkK3pucC9YamsxRXNNZnYwd0xvRnh0VlFuWll1bW96RTZrRUduUlZwQm9JdjJBNTRrQlVLa1hyRUxVRzcxUTZ3L3BhRmZySytMMzJKZE5rRmRsd0dNRXE5Z2dCUFlMMklkMW9taTlMcjBPbDJXRGYvSDZoUUpzczkvVnNmOVM0YkxkYUtiSjZSa1ZFdGhWQXpMOHNwalBnNGpEdEZqZVlJ''@;'; put 'put ''TXduaURxMDlRL2t0eCtIZi9QK3hxbWVuc3YvdkFnYnYzajk4OE1YSHp1SXk0Q3NzNWVPL1MwbWNQZGs2OWIzTHl2Vk15M2pKNVFISDJJT3pOQkh3SExHTllCWkFxaDZtYlpOMlJEMXNzTjlzc1pudTVYUWcwNktnVDMxUGdQWGF2eXBhRlNWdzljR1ZQejVVRC8wZkVGZk1uVHN5L1RNNjFIYzZE''@;'; put 'put ''SEpOd3g4emc0S3owZkRFTWJHQlY1c1FNOWF0cmlRN01QT2FCNURDSGg5Zk5wMkxmdHQxdUQ5bURzVUNRTW1HUTVFNStnelNHRlpGc01PdmNKSXJKN3lKTlkwMDc0MWQyTGFvd1dwdTRwdW02Qmw4QlNManEya1J2WWtjZ1hBQ1c5UDM4Y3VKWThGQ3FHRnhGOENxSDlZRDhKTlFCcDVxbXk2Q0tL''@;'; put 'put ''T3hOSVhlZnp5TUlWc3A3WUxWV2J4QnNZSUZCVHB0VVlFWU9YamIvNk1qRHo0a01kRkxzWlFZMmZNdlY1Ukw4WStEN05JV2M3RWQ4alVUSVV5aEk1WlhEVHUxaVFyVktGVlRVeVZza3I0SW80SXY0S0tnb2pTc3FTaUNvUW11ZCt6bWNDazc5OHYzcDBKRmIweE5OZTQ5ZWZWbkhTczh0SjBMaDQ5''@;'; put 'put ''bllVTk9lbzFkZW1Uc3hZc3lsV285NE83MlpyaXIzOUhoMlQvSlFhM1BjMitWcmFYTzVkKy9NTGlSbFBoZ0ZHQTB6SFVQMjFSVE1TdG01b3FqYTJBdDJwUmVveGYwclV2TXJFY3pLTG9XTzV3QS96a0ovTy9LSWRZcERIK1BpcmRtUnplYXpxYUtZOHEyTkxBelhuaGtVc3d6enhNRXpVNmFSVzJi''@;'; put 'put ''d0o2V1Z2dU1kSGNmNzZHOHp0NHpJYTFYMUlSMmRTOHZzWU9DYUNzT1V1UTZvL0RMWG9Yd00rQWI1dXZRUEEvQ0RUZGhFdVM2ODdpSUhZQ3cvbUVrYVJrc3dWaG5sKzhBb2FGaUppWEcyZWVBVWxrb3RsYUpKTjZZL25OZUl2ZjZoYnp3eitKV3ZELzI4NXh2ZjdJSGhuaUw5N0RWRmRxOStYbDRu''@;'; put 'put ''eUZCeU0rTnR3QnNOT2hnYWpwNnluL0pSTE9PYXhXSVJLRnhobFRDa2dZMk9UMkhkNUk5K05JbDU2YjhuZi9UcUpKNlg3c2MrNlFkNEh1K0dkNTg4dGdYR1BnTmo2MUd0V0szamdBZ0xERTd4QkZnRTZnbFF4b1FqQzBtLzJQblRuMDlJLzY4UFYrRy9rajRQb3gyWGZrYkhhb2V4UkZYdVUzaXV1''@;'; put 'put ''OWtLdm9XQ204MGlzQlZuWlJjRENQOTIvSUMwRjc4aFRlTUxxNjhuU1hkWGN2V3JzdXlmV3ZzZ2JpTS9mSnRXWEJJUUMxNVRQejEzN3Fma2g2MnJWdXA3WFh0ajdWRjgxelkrVUE1MFcrMEFYcEpkb0JpMXdIeFZoZmxrLzl3eW9tb1o5ZGZTK2RENmZFNWcrbWw0dGNCMFArMGh2Mng5OHh3ZFBv''@;'; put 'put ''TS9neCtVY2V1QzdraS82QUR1enJ5V01EUDE0RjZ0ZUZndTZGQy9OUW5zZ2ZkK0wzTlgrMDAzNTBBSy9lclZWK21hcGJWM2tsMXI1Mkc2QmpiR05qNWpPZ1FQQUNSa1p2V0JuVG41WEx1SmlONGtMME5mSit0cmdwNUQ4TTNWRmhESDhxeFpwN2U3OThZcytVckZoMlgrMWdyNnd5K0lnS29CNDNh''@;'; put 'put ''SzQxV1kwemhCSUFpZ3hkZlZham1kVmtQTldLMk9hR1Z2SmRYaVhZeFdSdlZZcDFPVkxqZVltTzZBMisrcGg1RmNQci9YYWdBNElZY2RBRlhzNm1LMkViVndMYUIrcWVFd2ZQcEUzbjBpdSt1U3pHTDd4TkxBem9GcDEvNEYxeVhsczVNOXV5YzZpSEROUWVrYnV5S3RlMGRhSnlMMTlyNTlzV1Ny''@;'; put 'put ''NU02M1RWZjN0Q2E3NUpnMHlZTjhzWUFGMGkxMlZwUVJyWWJ4eWNyUmdsdkd4WFNvRGM0NXF4VWhhNlBWNDNaQlQyRGJtNXh6UVlwVFFyRlBUaFc5SHp1Uno1L283VDVjbjgvWEgrNE96U1FTTThuMGRDdzJuU2JDNEkxalk2Y0dPOVBMNUVucDM5S2RVazNib2M3T2cyM1U3WDB3QzJlVUFIai9C''@;'; put 'put ''dUM5dFEzaTJ0NEdjYnlsRGZMYkd3WUhieGhLTHZyRDdxRmdkbDg2dlM4YkduYUgvZnRUcHFGM2pZeWNHZ3I1bW1zYmNnYzdPZzdsUEhYTi9pWjY5aG1BbTJjZGJnTEg0RWFoeFFESFZHdmxySG5tejFNVTdHSzRXUUplZ2NJTkt3ZTl2a3FCYkpiTEhncXVYaFY0TnpHSUpSbjB5Sk9yTzViVG5Z''@;'; put 'put ''T254c1p1Qk9CaDkrcFZXUXF4VE52QnpzNUQxRjRDdUJFZndNMko2cWlWQ1R5R0kwd1FFMDVEbGd2TGM0M3FpdlNIcWlxRXF1cXFhdDNWOEpjRERBTzZVcDhNc1dJdHdsTkhra1RIZTJDeCtNZ0JkN0RoK3ZiKzZ3WjNYTE5qN0IwZDBxZzJNNXVhdUxRTVg2czdNQm4xMVRaN28wT254a1p2SEJ5''@;'; put 'put ''K2RTRTkzNEwvZG5ubjFCRkdmeUFQOEJSNUJhVFZIckdzQXV1MGxSanB5SWpzREtsQk9wMTJDVFNHS21ad28wWFFmbVRIRzh0UXFBWmxWd2QwdGxMNjVZSlk1dld5MkJYUHUyVmU1Nlg4aHptR21QTllaMy9zMWx2ek16UDlxVlNrd1JHbzloRnRUa3JoYitjRzIwYzhNVWV6UjZiMStOb01xUUVZ''@;'; put 'put ''MGxqOGtMaWpycExvdElvZkUyZ1pHSjZPckZENmhvbEJzYUZ1R1ZmQm1XbEZZdzBnTytWd09JeFFIL0Q3ZlpUR3NhQ1FDN01xTWh1OG1ZQUY2UklzcU9tK2NxanpTbDlOdzJMTHdyRzZGYkgzMHE2dVMzdDdqdGJkT3B0SXpLYVQwL0g0ZEpKb3BkYmVsZlpBZld1dForL2svblM3ZU1YQWppdkVY''@;'; put 'put ''UHFRdENjeGx3WDd2bVV1RGRCbmNCK0h0ejhBSHR0cHBNSWkrN1laRG9PeXhyeHRyaUp6REZRSndlYTFVZnVUMGpxQVVuSFhDQXE1NDhzV1d2SVQrZWhJT0orM0w3WVJvWFZQVG5vRTkvZE1CM3FEMG1OQTE2K0ZNd3llM2ZEK2NmSVZrTkVWMUFJc3VGT3I2TUVKbzZvMVhWRnVOakYzcVhhVHU1''@;'; put 'put ''UUhFYkxiNWJKWTRBVzhoRnppc2dqVjFZTEZ0Yno2Qm95Lzl0VGFCUG9JRzk5TmNiNEMrSEk1MXNCcGFZdG00amlHSnhyZ2NocU5XelBHWExSdVU3WFRZUlhZckh5SmsxWTVLcVk4NmJ3enlncmVFYTBvTS9zRnR6ZmZuMXBmeXBzL01mQnBMZDlVVHpLckw3UU5NM2dEU3dEcWV4Skc5NG9OQmcz''@;'; put 'put ''UUc2ZXlXN29hVlQ4UnJFemFZeXJvR0M4RjJGYi9ZT0xMeS9rOGJwckNWZExQZm5YMGZRRE9XaHlWNVJjOW52ZkR1S3JkVzFsaTk0NEJsSUJWeUcyNUlPQ3lGNlhFbG9acTJlN1ZhZ1ZHWExvbE1BWjFPdGVvaHNiOTVIUDNva2F2WVBWYXZUWURVRkhSMGVzMi9KSzB5M2dMNytTKzZWaCtxRTJj''@;'; put 'put ''eWcvU3Q3eDFLdDArWjYvYzMxbUVFaFA1OVUraUhXdUtkNlpBSkJWd1V0aUVrOEtmZ1pQMnQ0R1QybG1Ha2dxZkhJUjVOOW1icm92YW00NjN0amRmT3pVOGZHcHc4TWJoNFJzSE00dlo3R0ltUzkrenBwRjNEUTJkb2hJRzVFeXUvWEF1ZDZpOS9WQ3UvVkM3dko1cDREbDVXRStKYkJhS1pmTzZX''@;'; put 'put ''S1lBc3VLTHltWVZNSCtXYkpaK1RTNHNsOGhtS2c5blFCNEtXOGhEb1VnZXJvdkNVWmt2YmljUGhZdHh3cmVRaDlyVlNTeXNDOFJsS2JSQkhtSTBEZmkxQUdzMTBTdzhPVHFyNHRlNkpnSENRN0RKT3JjbGs3UVhNT3B2VGd5MDcwMENHYjdTazR0UHA2VWZFZTBsMUk0RDNlUnBHRE93cGIzcDJt''@;'; put 'put ''eHZCcERmRnk2Mk56UEY1cVpEa1V6VTJpVHMyTDU5VmRTemJ5RTkyRGV3ZnpJKzFSby8wRnkvYzZTbHIydG5kakRjTXBzeU5mbGl2UzMrWU5UdTdzczA5L3JyM1ltV3FLK3hxVnJ3NWNMaC9vRE1JL3l3eGlueVVaRG5jVEhpeERxMmI4TGRURmtpV2FUT1U0Q0JUcWRxQUV4dVdodXA0UFRMZXFp''@;'; put 'put ''ZzVIMEFSNkp1L0V3V1Q5bGFxMVA5TXpQNTk3ekhWMjJwTjlvcmhaRjJQSlA3MElkeTBnT2VabE1aNDAwdzczOFJyVXpQSE0wdUdkRUNkNkd6VWYwSVVlSkNhcEtHSGRtOU5pL3pjUmJwUlpUZHlsYTVnUCtMa25HYlN0UnczRzhBQlFOUjR6SHBLVWJVZUZqZUwralZ4RWEwYWg2RWFxbXB1b0Zn''@;'; put 'put ''WVJhRlZUWXQzVHNlZjJ6SHExa1FuaVA0VVNwRE1MQTl4Rm1oZjZtTktyeTFqZXJ0dmUwdk1oOTVmKytEK1E5K0tBOGpUdUNINkd2MURYeS9ORit3cGZFZllXeVdkMVBHYTdDR3NqbHE2Y0RZSENseWdJS3RTdkhFQXhhUE5aaDBacE84RlorNzk5N2hiMzFsK05PZkhuN211ZTkvSCt0WFgzeHhW''@;'; put 'put ''Zm9qSGJkdWJZeTRZRnlCd3Rxb0o3QmtqTUVBVm9ZdW9LR2JVenliRnB1WG9hR01oZDJZWTdzb3gveGhmMld0dDdhcHZQNWYrNS81VXQrdnFzYXlqd2paQ3Flcmo1aWxMdnpzNnBPZFdTenZCZGduZmdubTNNYU9GZDdhanMzZ1B1bFpmSWYwRkI2UWpyWGdUM2EwU0NzZGJOencyaDY4bHp3QkhB''@;'; put 'put ''Vmc1R0p5b0JMam9VYVdWUVFONWhXQ3hXaFNjRkF4cDRuaExnenNQMDExS1pxOTZTd25kcWNjRk9GcEdKekhwbGwvSXRzVzk4K09hRHZ5THV6ekI3ellsZS9RM2hucVQzOHdGVzJKcFc3UDlBZjFjWDFOb3ZtT2VOWmt6aVErSEU3VTZPTXd5MlZyajZLN3Q3R0pxWVM5TEpWU2tvS28vMmtQM3Mv''@;'; put 'put ''V0hoTDllbWJMQ21CUk5tSTh1SjVXdDBSQk5VbXpaUWx2Q3p0QmJBVGxnSDZXeHVxemRhUVdBOWJiRzNYd0NTY1NZeXNPQkh4c3hTT3ovbmhiTmdFN2VTY3NOdnpoZU5ac3lzYnZhS2FMMVFmN003ZW5ZaTNSMUFmVC9TSDkyaHJxd2MzNE5QNkN3R1B6bWlUOUVoa3VJUHk0OUVzV0phYXladGZh''@;'; put 'put ''SFBvaUVWUjlqSzJPQ2p6WHFKcERZaVVsK2hqVGllUmtMdEFPa2g5VjRxbStZWE9DQ0dyOGRIVUgvcFVxWHg4RisyMGMxUUJsQVpkc3FLOXhWemx0VnJPMlRGYUMxQlJkV1hsbVBFaW9sdEdGaHN1OTZSaFJjM0xwV2RLa1hIckdQckNYZ0R2amwyWmpZdjVJTG5ja0w4YW1HOE5WK1VadmQxVll1''@;'; put 'put ''bW0rcjIrK0ljUjE5eHJIcnVydHZXclVLSFp4UVU5emRUMG56V3NhcXB1dlBpbmd1NFdUY3U1VUZoWWFZWEd1UGxHRW82VkpHb2ludVo0OEh0WmlBa3lUSjh6bHk1UjhtcTNCODBWdTkxcFVLOWo4UHREZnFLcmt0M3ZTV1pZdHQ5SDhyTVUweDRkRUpHTkhMZ2N5ZE1kSlY3eHlJUWVjK3NVWHU3''@;'; put 'put ''cnE2MTdNM2Q1L29sTk1SV050MGFuazdia1hOL2llSE5RVGJNUElnTUgyUUR6TE5qaXF3d1RVRkEzaGxzdFlXcmFjWCtTd1d5MXFDbmFsa1NaaHMzUjR1NXJFQnk5RzhQaTJoMTU1NVpVK2VEMzBSK3F0d3YyNVBibnJyb00zZkNsMVdiSHo2eWQ3OEJ4NWdPVkJ0REl2U1pBbUNnSXlNOGZsa3Bh''@;'; put 'put ''andNS1RXMlE2VUFkS3NTTGRXdlQ3dnFvcW9kSlZKWnhUUHNrZSt1bXFwTC9MbjRDL1laVEdYOFovVjltSXcxcFV5ZUV3ZWxMeDI4emlhOGpadCtQem9ma0szVGdqdlVET3RyeGRuNCtUOXo3UmR6WkxYcTQ0SS9PNjROcExnTVBuNExSQmYwZFVmQ0p5bW9yTzkxQXh4dHgyekcwYllGSUJLenBN''@;'; put 'put ''QjFWcHFQL1cyTCtTYXp2YzlkdjBqV2tjYnRtZHkrMXVXYTBuWDF6ZEplZGkvZ1I5Q25jQTBPcEVkeEdYSUpSOVRCWWxNR2FLb0xkWVhjMU1rSis0clBURDZsTDhXV3NpZW8xbVFhSnIyZDRxblRiQVphc0J4SmVlOG1ld3JFMWdXVGVBT2czeVdITUZ6YllBcnIyeXpsZ1AwR0YydWtVUGF3S1lk''@;'; put 'put ''WHE3TmdzaXpTVjFJWmZWNS9OUndVMUJ4NkxSekxaVnRCdnF1d0xobFVtK0ZHd0xWY1VxTGJVK1I1M2RhaXV2OUNTcU5QcW92OFlYcXpBSEtSSllqY0pFRHJPYWhoU2MrN1BzM0NNOFBmY0llbHJKeHhqQi84ejRsUSsxaTluR0txZEpRK1R3QWtGMHJRd2haUVlHMHVjQVVrU2V6K3QyMmEwRnZF''@;'; put 'put ''VEZMRXhKanFKdUlaMnFmUUt6d1NHRnIzbTJ5Q0ZaNTNQU21TMnlTTmdlbU4rY3U3NnlFZFpLODNUNjBFZlJGNUQrQXNIbjVUU2RMZG9jeDg1dDJweFUyMkFlZlhHYk5pdUZObVoweHpadDVncHpIVVdmazl1UXpXMitVUmpIaUw2OXNZMmNIOEU5eEdqQmdnYkZmb0h5SWliMTlRZ0RGOUxET2Vn''@;'; put 'put ''MXl3WmdrTHBGMENzVmY3WlcxcHlZR1dXcHRFRHZDb1ZCR1lGallqVmlucVpKRktBaGdDVmhVeVBuMG12N1IvRHRSQ2Q1ZnFhRTBHbENSWmYwRHZ3UjZYS2t4TDFGbHFlUVFhK0w3a3c2R05Ed09qZGdhalVObWJrcUFJL0xNZUcwQ3ZwSGFDeUt3MWZBRzlLOFEvVXlPVVlSOEhURnBBTHBkd0RX''@;'; put 'put ''N1NZMHljWkdNM05vSDRRMXA5OXVKMXB2RTl2UWlUdDFzVjVpZUhNSG1nMUZqbXpSRDQzUnRCeGp3TjhNMUdjRkE2b0dwR1VGVnZuRFpncVVaZWhXcmxDeWVHMVB1VVpmdTVrOHErWS9QcjlWamtZOHkzbnhScXB0MHgvNXpKNlNwQTJLVHl5SGd1RjNTS0dCOXpOOHdrVjR1Ym5OY2ZUd05tMU9x''@;'; put 'put ''bTJBQm03Y3BzMWNZWnlqNkNxNXpUcCtyMUV0N2NOc3JvaThuclU3dGhvSFZ4YTFPWTVzbTl1cy9RTEdlWTJ0SnlLdlorMXZTOXI4TzdUNUkxdVBQTTdSdFhzMnJnZG9xUm5lWG1DeDBscWF6YnRSMDFqVVl4b29OUlNwR2hVVjhGRmJVY05LcmV6UXpRd3lwMnpkMEdmR1UxSlFqWHlncXlRUDVp''@;'; put 'put ''dCtUazU0R1JsUlUxNitnLyt4a1BhQ3UvTzRkZlYyT2ZubEQzbFdpZ1J3WURGOXhsTmFGSjd5aVJKWXNUZzFnMVdyY3I2UGxmQ2R6VzJPNDl3MmJVNnFiZUI4WDltbXpVcWhqUms5dEUyYnVjSmNSOUZ6bS9nWFJydlFYK0t2RVIwSUE5M0RlcG9iQ1VwbEVFZ2ttSFZtblRoemUrUjIrZWVEWVR5''@;'; put 'put ''aC9uYjc3V0drNXZQK2p1WEkrMUNjMWdkRndyVTFMb2ZKb0djK0dwYTJvN2c5SEhMNFJGY1VQdkg3L1hGL0xHZ05XbGtHdHByVkdnQWJMMXVVTDVma2tjT0pGVEpGY2tnYVUrL0hNNmtEZCs5dnZ6U1dIcDZMWjRBMjIwOUUwOE96cS84Vzh1TlQvdmtZMENnK2NmTkV5Q2ZkQW4rUm1uZnZXUHJz''@;'; put 'put ''d1lDMzYxRExtUjFBbmZRMzZUc3JJZnh3VFQwUXFmVDlxZmROWm84MlNlTTE5UXgyTEtiTXpxbE5PY3NuU3M1N2M1dmo2UDl1MCthazJnYk84Z3ZidEprcmpITVUzYjJaVm1XOWw4M1ZxY3oxOU1aeE51VWF4QmozaEhQUUx1dXdFdVVvRksyQjVLbHcyQ3FjbFU0aDRLbms1UWhvc2loRHcxL0kw''@;'; put 'put ''T2o1NTVJTWpWTXNSYVB0cG1kbUJnZG5wQmRrbVRQRGNuR2VCUnB1RVdOR1VNS1pHZ0lDaDF0UkV5NlpXeHN2NnVSMFFhdlA0L2RFdkN3a1VaSzdIY2JwOVlJRmxYRlQvK3BNZWw4dXR5L1ZHbW5yU2UzSjdoa0k3d2pOOWUzbzZCaWZiRytmRklrNU9aMUlUQ2RUTTFYdS9kbjBmRXVIcnp2WU1k''@;'; put 'put ''b3hrbTRiSGMrdFNnQkhPVjc1TXNDeEgyUXZRWDJYeS9TOThUa0g4UDFFMGZQbjFmYVlQMURjL3VuQ2MzTnY4Zk1IQ3VNZm5TOTZ6cmtMN1kxVU93TWFndWZjWGFERFJVSEw2MEhIeE9VYWdKM0hEVXFDSGV0SkR1dktES0I0OGpvdERhT1c2VWpaQ3RJakhhL1hMWnNOUk0wR2RvMldHMDBjRlli''@;'; put 'put ''VXR3TzBsVTdIWWdpbGU5SmlaM3NzRlV1MkpHQ0NpTlhuOWZsOS9nb0F1UnJFa3ROVFM2S3JzZ043VTJnTDBWeHpOZVpLWHBYalhIM1hldXV1R2RwN2FYSG9kZkNBdzN0NVQwbnNTN3BsSWtwRHNwUDljaFJzb0tOallHRnNQU2JibGMza2kyTmkwa3g0TkJxbzdtbE5kY280bGxnVFdld3pneTZJ''@;'; put 'put ''N2tUYzA2RFJhdXhZcDAyQldxOHJxUFdxWHVQbjRTdUNkVmVnNGhUN1FsQ0tucU1icWJwSmdEWFc2a0JwZnN2V29yZTBJYlVFMEpGQ2V3MnRBZ1hKQk12TXlBcUpucThPYS81RVJZUVcwV1dTK0hDSkl0SnphZGRXa2RyR3VVUjVpUUdSMDQ5ZXM2TWtlTnNZMGpSaWlwTnlUSlRpL0pCTUN6Zkl1''@;'; put 'put ''THJ4T2FXRmU0dWVQNisyeC95bHhlMGZLSXh6OUJCN3ZrWlp3MjFzbkpmazhUOGd0eDhGZ0JtTG5oK3ZrTnYvRzN6OGhvMy9ranorZmZMekg4UEg3OWo0Y3Z1am4xbXZxMmdsZncvYVFoVHRFYTJWekt0YUMrb0FhQU0ycTZVTUQ4bDU1dzdWQlMxc3lBNXppemFhcHNGaHNsTDhHQ3k1dXJxNmFG''@;'; put 'put ''MGs0QXY0YWQ2c0twa0tpVkFCS2lEcFNkSnM3czFlZWZ4UGkrS1Z3OE5YOVhTZDZEL1dGejU4eW5td1B0c1ZEQjl5amxUTXhtT3piWm5aZUdJdVF5eGZPTER6OUVEdnRhUERKM3RtWnVhenFYQzFyN3JHRzBsNVZsOUk3bXR2MjVOSzdzbTE3MDBCdk9SWUVPVTFVekt2R1ZtSCt5Q0Q0eTUyVG4z''@;'; put 'put ''b3ZWcytQNDdPRnoxL1hua084TDJ1ZUp5bkM4L05lNHFmUDZBK1IwY3ZsM2xXSHpwTnlra2Q4NU81MFNHNXdMcUdWaXRRMXd2UzhGaXIwUjdXcVVGR0Z5MmtiVVJJcDVhRXFPMjBXczA4a0kxMmlYV1lYQkFkekNCeVYxYURjRktkYkhwcW9SWUhQY0V1S2k1cXdBN0ZNdjBwTGIvNGpsck84RFhW''@;'; put 'put ''SkozTlgxaXZZdUFLOFMwbldHN05yQVlKTFB0UXNOcmxOT3EwR2ozR1drNEpoS3duTUd6V1hEd2VUN09ueVc4SldqWm9Mc1dLQzlOYm5GaU93bWtVclFXNFprTncrTWJCNmY2RzRXNXZhUGpVNEs3QmhtRlJPdG1DVGFsOGRqR0w4V0xXNVpSZVMrYnh4L2VuaHQ0MTB1SWZEaHhJRFowYWFRMk1T''@;'; put 'put ''bS9tY1h1Zy9WRHV1KzJIYzRHQkd1azVQNXlSSEZlZ1o3MWJwakdGSmpjK3B6andzYUxuejZ2dE1iK3Z1UDBEaFhHT1RzdlBaVjg2SFdlZk1zN0hpK0p5Rjh1WitiUGljc0tmSDVmalZyWkltaW5heHdQS1BtQi9NNmpJeGs4VS9BREhGTDIrV0krV1pmclpna3cvTmxMY2QyL0JQMkJROUxiU3Zo''@;'; put 'put ''Y0tjdDh3TGZPdWhyVnB6Z3E2bWhOVlUvaTVzSTdUWTRLZElGRzRFWkF4aUJvL1I1a096UzZYR0ZXMUtDdE5TNm1xcnFyMkNZTGc4RkRab2xXOE45bWdYSFFoUytqV3JKRndWbTlMdk1NdTlCY3FNR29hUGJVTjFoL2NmLzhkdGJtRXM4bjBLVmFOMGVpdWJiRGpIYXdtZytaMFRaTWMwRWd6aUxC''@;'; put 'put ''RmNRL1ZTTnlZS2lROGlVVU5uSjdYWTYyK21TWkJVNldFMXhPK1VJbnFvdXVzQUN0TnIxZGpuRW93RGRZZERvY3o0WFRBWndVMUpPUXBBeU85c1BMME5tcUlYVkEzRXloSytDSTV1aTIzb3lUcDYvQUplWDgvVjVPLzZDN2RVV1BmeHV3dm1oREd0dnlSUWhhWWFpOTlnT25ZQVVYSC9rT0pyaTdu''@;'; put 'put ''WDFGNkdGRG80Wk5GZlUrcWZiRWVQYk5OMytlVnZnVHJENjdibG8rd3ZrR2w3ODBsZUVSenJiNUdub1EyZzZ4TkJXanhGbVNBTm85ekZ0b0kyaWoyTTJEb3U1R2FuM1VJYUxRYXZoa1EreXdhWXREVGFrc3RUWnpXb21VNG1zcENCWlhDNTZqam5QRTlKeGx6dTkzTjdxWWdqWUFHdklycjNGdVNw''@;'; put 'put ''NlVXd3FQTjRlbERQUnZpMCtmUDUzdldVSEdRZW5UMVMwVkpXMzhiNisxZGZXUkRtTHJneDBnVS9CakhZTmxid0JYMGo3TUYvZVBZTE5yS0I0TEwwUGUyNmF2cUxoeTBVZXBkZ0Fab3ZVc045ZXBWZ293UU1LM1hWVE5KS1lMemk0am5GWWNlWlhjVm8weVlBUUZZV1gxeERhb1JiRjZhMFMxUVhG''@;'; put 'put ''ZnJZTHdxUmp0bDVNOFdGY1pNeXVoYlE5RzdSbnEyVUNYRGtEVU11QnlxWWNVdE5JNTBtT1d6MFJ0ZnpvaFd2dy80YnprR3hSUTBHaDRFcndhMFlBK3R1VU02RUxRNnpUS04wYWdIclZ6OXdCSVFHSmxhcVlqMnEwMFpBUERoclhyUWJMSktkbVZNek9XMUJ2eGVMdzN4YURadVNGZVNIQ2RydEx5''@;'; put 'put ''YUkzZDlZWk1HVzltbVRMa1dzQ3RzWXVCdkZLT2hzbGJadWNOR2l0UG13SUp3ZU12dzkxankzQlkrTWYwV1BySE4rcXRla1pXc1Rvang4V2FGano5YjBsZk9mYU44ZkVUbTR5dEtYK25YdE1aSTdndjRVMEdNVEVkaTdUbnFsSXFoUERvc0hvaldFejFmNWFTR09LMkRSME5HNmh6bTlKb1ZnNm9v''@;'; put 'put ''bFFQMTZYUUNkV3N5TkpMamprdHkzREVlcCs2dWVEN2VsVTFYeENwaTRTYXZwNmJhYnFWdXJ5cVRxaVRScTFSa3ZjajVKK2JWWWJlcnhsc1hNQWhPcCtXWGJ5dkZicStudXJvdDZnaUg2T1VuYzI4MzN3NzArZjhOK0ZYR2FGcjJCUjViKzNpSnYvQmxhS05sTkMzci9NZnVVSElHMXFiUkQ0RXVy''@;'; put 'put ''VFRPVGlXbVZZNnpxMlhvRkdTcXZQR0JmR1RwMXFxVUFkMUNKYjRmVXV5cnRvc3l3VkV4VVIweGtic1ZVY2hrOU5vYk1OY1RMTmJub1RlcTJHMUV3M213WExaZk9ESlZXYXdvRUFrTEVqZlVnUlhpcURCdm1VSm5WUmZrcE9VLzZwSVdxTlZXVlZVNVNaZm1kVnZ5OWZMaTFGaWdVTFhxZ0hYV3Qr''@;'; put 'put ''aDUvTWZWTjVTRkFnN1NTczIvV3ZldEFnL2pOL21HV000ZDJHTGFRbTZjVUpJYk41clAwendTR0c4ZjRQUVZJRWNhQVhjWlR1TnZ5WFliUE9jWXJrOG96MjlqejFrZEZwT2JjVVZ1bHBYUUQ0QUVsM08zUXB0SnBZMEZQU3EzZVZSdEk5ZHpQYW1PQStOZnhXUWNMcEp4ZEp3d2F6T3B0TGx1WXhz''@;'; put 'put ''NWo1WjBBWTZZYVFhYnlWaG1BTTJlMHhPMXNtMVRrWmdabWUyRklqRStUWkVrYStjRjBpWDE3dGtqZnVRalhWMjRMaWJHOEpUMHlxZzRLa21va0t1TFdRNWpnMWhyTE9OMVZLanFsZXE1U3FVWXhNNHVlOEU4YUxYS3dCaFA1Y2ZIODFQNFFMUDBBbmFHeEJBK0lqM1pYT3hqdmw3MU1RT01mbFVD''@;'; put 'put ''UjlrV2ZGbXhCYW4rY1pmY0Y4N21MOW1adFNobjgzdTV2ZlJybWtlb3RvZm45eFhOZGJMZ3o5YkRhV3c5MS9NRnUxTi9EQlg1bFJNRnYvSXg5T1VTZlVXMnM4NFdiTWRqaDlCVy9tOWNqdjZ4Sk82MjBYNGx1UHkwckRPbmdMRStDK2RxQVl1L1hjd1dxbEQxcEZDR2FxRGxkbXFlRFRNMmFxMDFE''@;'; put 'put ''aHRMckpNRnNXczl2S2F5UXhwaFcxZGIvTElvWHYySC9mY2NPSERQZmhLWFBEdmxnSThpakhkL2V2L1MzZnU3Vmw4ZzJZbGJKeWZlUGFUWWxkd2JMSjgwaWRyUmxEamh4SG9kZGQweHJRRTR2VmF2V1RZWmlFNG5WMVc2Um8xOEdVZDFlc1ZsbDByNXdJcEl0YWR5Mll3djZXdU5OTk9VVTZzdjRQ''@;'; put 'put ''T2JZZEViSFhicmZMeEl5RFpzNHVoSWxyWmNoK3lwRzdxaDBmdXVrVUdXaHpuOExxL251cUdDekpXT0ZXVms0ak1iY3RYSGUzc201QnpOOFc1eFRCYSt4V21hYXY2NklvTVBzck5OSy9qN1RBbGV5SG1IOUd4blpkL1BtS0tyQWY0ZVpQaWJWdkQwQ2JrOTRPOEN3OTlaNWJteGFLNlQ2bHlBdisv''@;'; put 'put ''ZGNxNzlESDluWmZ5MXlYT3h1amkyem95eXpydEtjRi9PWmFUcm5KUFhxY1JXWTJzaXE2a1QwUnVpTTluYVVLL1I2ZDAwNmw1ZENhS2RwbGhyRlA5amRHTmNGZlRGSlJEc0R0a2cwdUt0QTZ1eFRZSFZpL2VpM3N2NDVrRHB4YnJKUWQ4dFFxdGJkSlJqcXlaZnhFZFRHNndXQTVnQlB0azl1VTEw''@;'; put 'put ''RlYrOGVwQkUwa2QyVkd3VmFCMjhQckY5VGVITjg2bVNlR3RPMnhaL2l5cERscGNxc3J6VVBKeFpUV3RMZloxR3kyK01oV3RHM0tEeERtOFpFT2Q1M1JLaXllQm8zWmR4MFlENFJUdHRHUkMvU0s5dEErS2wvWlNBdUM4Y2Vuc0JjWHl4QkZ6ODlLR1JMUVBqaWFYQXRsbTVvN3UwalNXbkZhemZQ''@;'; put 'put ''azIzbUQ1UHF2UUp0SDFzRy9wOFhxVlByTThxdGFSQW43U1cxSU1lRnUxVmNMVElhUWFKWUtLWFo0MTRzRVk5NUNhRWFJcnBGU3hFUlU1UlI1V2FvTUYwT1VMd0FaRGticXdlVmpQdG9FSGM2YmZSUXd4dWFrd0xBZ2src3FrUGl4VFE0bjVHV1BTTTJJMVRXNTRRdGJ0cCtTdWV0VzV4Q2pWbHRD''@;'; put 'put ''WTJ0Z25XZlVVMXNuNmdBWnIzSEVmUGlhNG1yT2VhN2NTZ2o5b0lNWlJFVGlKSXE5SGVYSVpwYlkvaENoQmVBRjVhMmNOeG1rV2RYTjlURWtDSnJ2ZlJHOGpwaTNVQ2NHN1pYZ21tRkhYaktKQXMwQzJPNGl3YjJ3bkFvcTZJYlNJcXVEUkQyOGt3SHdkS2NEZVNYYy9hYm1qd1Yyd1JRQmxNRm1k''@;'; put 'put ''eXg2cDBmamtuaTlVc014ek5Lamo2emhJY3Bibm1QMkM2NnJ5c3E1S21FbjFXanYwbUNySGZZK2hqcGJvejg4MmVMZmhtancyZ29yanhOd3F4WlNQNlZrbmNtUFZsY1VmWjMydThBVzBWdXdZOTdQTmI5UVdMditCYnh1VkxTS20zbm1iMTFuN1VJYlk1Z0NXVnc4bUM2TVBjaUhKN2hYcEhLblA3''@;'; put 'put ''cmh0RjBNUHZxL0w2ZmZKZEZyTFhmSk0zWkZOOU5qazdlR2JLcktzcWVBeXFEbHl0VkdxVGM2d3VHMXNhRkJlQnY5cnh5UlBGZGRzczczNmE3QUM3aDYzVkFMYWlIbXM1UDZhM0VpbkovdFJmV1VpL0wzWlgrbWhOVGNoREk5UWIvWlFiYy9IWGJVcXlRM1pMRnFmbTU5Y05USGZVT0xBNVNiOWd4''@;'; put 'put ''akY4b2ZYZ0RLZmE1VndCUEZXQ0MzSStQdVY3ZTVnK3hLUHZGZVVIbkZUekErRDVyU1Y5WlIvNDg2b1BIUE9McUtqdlhDRzM0Q2c2VllJTHJFNmI0VXVYb2pNOVZESytuQU5QOFdWUjFwa1VYSlA3enFsOXdUNzk3alo5SDFENlVqL2NuVVY5VHhiNjZ0RU4yL1I5WHAwWDYzc1puckw2dDF2aDdD''@;'; put 'put ''dW9yNEJtNWRLNkJlWXJFTmF2TjNFenhLeEE1VloydllsdVUzV2J2cWlxN2FITnBXeHkvaXdlSWMrL3pacHRKNjNaL2x6WHNmVFV6alI1L3JiRnhhM0hLTlJwRUhRejBNN1ZTcFdHTWtZMnlYdTcwenVuMHNlNnlQT0xpN2NwWTR6ancrUUN2VzJSamRGSTh3WTAxTkZWbWtKclJpWS9WMGhJVnZi''@;'; put 'put ''THpJdjd4K3BDam14dGJkWVJxaDFySXVOMWRTRzcwMmtQMWRiTGMreEJkekIvU0lETjhaYjV1WnV6bmVjVjc4YTZOME91Z1lSMW16azN5NmR1WTZQU1lqNmFVYnlpeFJ6RzNIeWg4SXg3VzFuVnhmY2szOWpaR1E3RHE5cm5xM2I1L1M0eUx2OGQ3bXp5dStTSGNwN3dORnBGTmlTZ2RyYUN1TXJQ''@;'; put 'put ''YUtVa0F5R3RjZ0Q1UHMrNEdVZS9tWlFyUjN3T2paSlpyZHp0VytUY3ZhSEQ2MjRwT0hRZlpKNGJtK0xKbGUrZEpWMzRESGthZHQ3TDVzM2FBSVo2NXMreVlqd0VRcERWZUJDTVZ0ak5CZk5xY1RmaEpwbVM1d0JScUZVUUExSE5UYjE0bE9yWWRCSDBhZ3R6dlV0d21FT21aajRSdExQZmcyYjZP''@;'; put 'put ''K216V0N2S2gvaHNwL29wbjBjM2ZwemxnL09vbXEycVFndllPRVN0MUt1dGxrSWV1WlAzK3BYRWNKenRQWnNoTDFmYzlHR1dJSTdYNXFSZnJ6MjhkajhxUno0MmdxdDhpMm9WWDJFc2Z1Tmx1RitRZlpBMlY0MzNEZG0zeVB5TUJmNTR2Y29mVVIvT2JNTWZYMWI1SStwRFR4WHgxdlcreC9HWEw5''@;'; put 'put ''cjNPQmFMK3M0VitoN0ZReVg4VWU3N1FLSHZVZXEzWlBjVEx0QTRRbkVNNHMwMVdRZDRjMDNSQVJKcnU2a3ZYL1pMc3piZmZGT1NZenR2U2tvYjJiKzlVaGpIREx4dWEvLzIwd1gvdG5rY2JaazcxcmVGanJFeHprdFEzd25sZmxYMG44U0FveGUvZi9nZnBEaU9kcWg5dVBhMzBZY2piMHBxbjJI''@;'; put 'put ''OGJYU0IzQWs0MC9vd29NdlFwc3U0WFpzdTQ1YXJoaFlla2JISXFqcTlaU0Y5Z1Y2blhHMm4xeW1UVytsOXloYTNmSjh5aFNQK0ZucU1mQXFnVUlHb0xHQTFRR1NrVUFNRTY4QW4yVHBxVWZzanRlVkVYWXFaRmRheisrTFpZcXdieWo0NHh2NFdIdlZWK1N6c1JwR05LM0p1dThCLzNXYXRydEox''@;'; put 'put ''NCt2SXB5cUQ4cnJaK3I4SzY3Y1UxazlSU3QwSXZYUHJjZHlOUC8ybjFWSDhyNzYrZUx5M04vNjQvQkh2ay9GbkdQQXFoSFlDYmdpQUcxNTQveXJEY1FIZkRBMTRlaysvWm5mUlBmM2RhQlJtK3cvNXJ2NldDcXd0bDYvUjEyT2RDWmNaZFdYRlYrOWJ6UmJPYU9TV0JFTWxyeW0rc1Q5OWtZN3M5''@;'; put 'put ''bjI1TjA5N2M4cTkvYmt0KzIxeGMzOUpYekEwTW1Oam9xamU0RDgyUHphM2E2YzRLbzRNOUNlNkUvbTJ6SmEzK2R2K2pOdjhHemI5N1N0cTI1RDVrMi82eDhPRHdjSWYwaFBxdmY5MzUvN1Uvd0hBbHY4emdQWC9LUUM5VnlpTjF2RGYwZHNtSHRaaW5BaDNZeWZBTG5CdjVoT2Z5THorZGROalQ1''@;'; put 'put ''aVZPNTNTb0dRcjdUaldMcGgxOHRGUGZDTDkyYy8yUHZHWTZldmZZTExpWjhxZGluRTBLWTdWdUlsR0IrTFBpT25OdUJvcUNqWGNzZ0dUTW95Tk5BKzhrUGx2d2thajZ1bGd0bUVzRW01dUVpeCtzUGtFcTk5TWZWU0ZlenFDWUJCUzB3SSs4cVNRYktlam1VUUFaQ2Q4MFBqWGkvS1ZpMk8zTFR2''@;'; put 'put ''MlRYSzZYWWRjUjI0WlZoTCtaejdreGNQU1oza05YcExPMTM5MFQ0SmR3OWg3Y2lqbmRIcnFjMzJYZHJKcy93TVR1VnB2dFMwM2UwS1c3emhPeXZGbHdBZDFENE5DbDJCY1Q3NHA5ako2Unl4VGRFRFY0WUFyZXdRUDRWWlg2WXZ4b1NUQXBVNnBKZGQveVdVMWEwbGlpMHRTU292QzY5NnFLUHlO''@;'; put 'put ''NVcxcndvSE81VGxCQnVDRUVsdDRnTkcvL1B5Qzhudzk5aWsvZjc3d25MKzYrUGtENm5OMDlOTGk1K3ZqOTRGYXRmNzhiS0g5c2YxSWdjRTB1UXhnUUdNRitpODFlYTBZWUZCaWlxbVFXTGZEQXB0aGNwbHNseFVEUnJITC9yTUlQb3FOTmxjRUlzVTgrNHNOV1FucmE2WjJ0YndYc0wzL29tZ3ZU''@;'; put 'put ''eGRnWXA2VDVTaE4rL2tJdTV0Q3hZV2s0SjFXcnFPZzM2L053UGZhMHUrMXE1UG9md0FQZm54NUFBQUJBQUFBQVFBQXRDY0F3bDhQUFBVQUh3UG9BQUFBQU5QQm5ZWUFBQUFBMUw2bTlmOVcvdThFV0FQRkFBQUFDQUFDQUFBQUFBQUFlTnBqWUdSZ1lENzY3ellEQTB2SC83RC9rMWtpR0lBaXlJ''@;'; put 'put ''RFJHZ0NsaGdhdkFBQUFlTnFObEUxb0UxRVVoYys3azVVTHdUOFVCU2xxRWx1YnBLMmhEYVkwbEJSYmJVclNqbllSYWtXaEN4ZGFZclc2RnRHNkV4RVhYZmtEVXZjdUJiSHVSTWdtdU5LSytFTVVXbHhrSVMwNG52dWFxWFhTZ29IRE56TzViOTY3NTUxNXBvWXo0TThNVVFjb0E5ZmNSNzg4UkZU''@;'; put 'put ''T0krN3NRRUllb0JrZjBXL0cwRVBGelF6U01veXNBZkptQ2lrczRvUzU2LzJVSjBpYkl2YktTYlJMRHc3TEJGVkFTczZoVzA1elRBRkp2YmIxSE11NkxuMFBtVE0xN0hOS2FKVXZhSkpIR0pjNTF0YklDZFlWcVNydlh5R1BCVjd2NGh3M01TYUgwT2NNc0laMVRwVC8zMERlOGhacnVIYVpSa3pl''@;'; put 'put ''WTFUZkdXcEdXSjRoSXZld1hhN2ptTG1BWWE1NWhXdzNuOUVwQmUrM1NTTWpYZWlRSzNCbE45cklUbkhSeHA3RE1ra2ZzaGhDQlJtODlWN0lOZ3ppSFhMT0ZITDZYSzdaZWxmSG1LdjBjQkV4TThseFdmNmZZRzlKSEpROTdHMEErMFZZY3dkSHpGWmNKT1BtSlhycCs0aWRzMGhQdUVZeml6Nnp4''@;'; put 'put ''SnJueU5oMWpTT0tEL1E4eWZzbEpPblhxbGNieVBsT3FuL3EzVHBod1N1cmYrUVA2cHV6QlMyK2QwSEpUb3hZcW4vcnBmN1JaK25BS2V2VkJuTEtwUGJpL2l0VXZEZjBiNUQ4U24yU1M4eUY3MTFRbWd0bDF2cjdWK3FmK3F6VWZuWE9JTFYzbmQrbjVvajdZdnU5elQxVlAzUk5tMUd6cHZ0ZEo3''@;'; put 'put ''MnFjTDNxWFJPNVFoN1hQbXdHbVFQTm9XWmhqV2NSTmhIdXZjNnIvUVZvZldWdmExeEdNdFRDZVpsYnpVNERtV1hOVXdPbjZ4bnpxZnVqSG0xQy9RWnNEblVQMWIvNnQ2QjVERkl6em14bXJCNHo4MlV5UjNWVHI1bkRYM3dHYjlSL1o1QU5udGJuWkc3aFZGZlBHeXhUVHdIcFJjcTVqQlRQQkhz''@;'; put 'put ''dW1IbHlucHlsdnlWZTgxd0t6U0JoV2hHaFlqTG5WVzArSEk0dDRlaC9pWm1CK3dlYlAvVU1lTnBOd2wxSUdnRUFBR0R6djFOUE8vVzY4KzY2WCs5dWV1ZWRkeEVSRVRKRVFpUWtZa2owRU5GRFJFUVBRMEpreEFqcElYeUlpQmdqSW1TRWhJd1lJU042a0JnUnd3ZUpIaVFpSWlRaWVoZ1NNbVRz''@;'; put 'put ''WlEvait3d0d3L0kvZTRaeUQ5S3pib3diVDR3UEpvTUpOMVZOZDJhcm1USy9OVStiRDh3MWk5RXlaOW14UEZxVDFpWHJveTFwMjdFZDJzNXM5N2FPUGRXYjZNMzIvZ1FnSUFua2dCTFFkbENPSWNlQ1k5dnh6WEhudERvbm5Cdk9sb3R6cmJwMlhYVlhHMlRBTkpnRkQ4QnpzQWwyM1FQdVVmYzdk''@;'; put 'put ''OVVEZXFZOFpVKzNMOVZYN1d0REhMUUNmWWFPdlVidm1MZmd2ZkZwdmhsZnhmZms1LzBKLzN2L3ZyOEpXK0VKZUI0K2drL2hsLzVZZjdHL2pqZ1JCQmxDMHNnSHBJVGFVUis2aU9iUklycVBIcVBuNkhXQUNqd0gvbUFlak1FR3NRU1d3UmF4UEhhSjNXQXZ1QUdIY0E0ZndxZndHbjZGdC9BT0FS''@;'; put 'put ''QTRNVTFVaU8vRUQ2SkIzQkpQeE92QUpqbEl4c2dVbVNIbnlSVXlUMjZRMjVTZDhsRVVKVkhEVkp4S1V4VWFwaGs2UW8vUUNYcVNMdE1uOUFWOVJiZm9YMHlNT1dYcVRKTjVaam9zd09Jc3h4YllYYmJFbnJBMUR1SStjVWRjbGJ2a3Jybjc0RXJ3WTdBWVBPY1JQc1RIK0JTZjRSZjVQRi9rOS9r''@;'; put 'put ''RzN4VkFJU0R3Z2liRWhiUXdKeXdMYThLbTBCUm54R1V4SnhiRUxiRWtmaFZyWXYzTllXZ3R0QlhhQzRmQ2pmQkQrRld5U3o2Smx6UXBMcVdsTDFKWEJ1V0FMTW5EY2xLZWtSZmtuRnlRZCtXU2ZDMTNJb0ZJS3BLTlZDTnRaVXlaVlRhVlBhV3NuQ29YU2xOcEtSMFZVSEZWVkVmVXhIOW0xWnhh''@;'; put 'put ''VWMraVFKU0pqa2N6MFl3Mm9jMXBXZTFCYSt0R2ZWUWYxNmYwV1gxSlg5WFg5WVorcXovcHZ3ZUJ2MHRBdlNvQUFBQUJBQUFCUEFCWUFBb0FQd0FFQUFJQUtBQTVBSXNBQUFDREFSWUFBd0FCZU5xRmtzMU93a0FVaGM4VUpJREdLREV1R2hkOUFmbFRJZXBTdzBaUUl3bzdFaEFFSWxBdHhZVFg4''@;'; put 'put ''Q24wVGZ4NUFkMjRkdTNhaFlmaHRxREJrRWs3Mzh5NTk5eTUwd0tJNFFNQnFHQUV3Q0dmTVN0WVhJM1p3RExxd2dGazRBZ0hrY1NEOEFKTXZBbUhtUHNsSEVaYXhZUWpNSlhudVlodFZSRmVRa25kQzY5Z1RYMEtyeUtxdm9XZnNHNkVoSitSTkRhRVh4QTI4c0t2aUJyblkzNFB3RFFxT0lDTkd3''@;'; put 'put ''eDU0amFhYU1IbHlSNzVwSG55RkR1eFVLTnFNYTZsWS9ya0l1Y3VzL3JNN1NHT0Fock1jN1NUalk1RTVYM0hNK3BOREtoVUdaVmlSbEtQZlZ6Z0NHVWNrMlo1YkU1NXpLdGgvYWxTNHNwaFRGdWYwWnFxT3E5U2lYVEoyV2JNcVBNVDVqYzRqL0xxMUtya1UrcERYZC9sM3Y5M00vSnp1ZHBEZ3VQ''@;'; put 'put ''dWw3T3RmYnUrYTV5YXpiV1gwNWVzSmxXWHV3TitDUzhtd2RtcjJkVmRUbW9tWm5ZNGEyL1NjNWxxRFZjNjMvVnZxeUIzbDlPcXhaSFJXcFluUzJHWDd5M3MrUDlLRnRlTWEyaC9SKzQ5NXpzV2Njc08ybFFjeG5SK0FHaWlndmNBQUhqYWJaTlhiQnhWRklhLzM3RjMzVFpPNzcxWHgxNzN4Q2t1''@;'; put 'put ''YThleFl5Y3VjZXpFU2NhN1kyZnhlaGZHdTNGc3VnUUNIa0R3d2pQbENSQzlDaVI0UUtKWDBYc0gwWG1rQisvY0NWNGs3c044L3htZDg1OHo5OTRoQzNlZEcyQWUvN05VbTM2UXhReXl5Y0dIbjF6eXlLZUFRZ0xNcEloWnpHWU9jNmZxNTdPQWhTeGlNVXRZeWpLV3M0S1ZyR0kxYTFqTE90YXpn''@;'; put 'put ''WTFzWWpOYjJNbzJ0bFBNRGtvb0pVZ1o1VlJRU1JYVjFMQ1RYZFN5bXozc1pSOTExTk5BSXlHYWFHWS9MUnlnbFRZTzBrNEhoemhNSjExMDA4TVJlamxLSC8wYzR6Z0RuT0FrcDdDNG5hdTRtcHU1Z1R0NG4rdTVscWY1bUR1NWpidDVubWU1aDBIQzNFaUVGN0Y1amhkNGxaZDRtVmY0bGlIZTRE''@;'; put 'put ''VmU1MTZHK1lXYmVKczNlWXZUZk0rUFhNY0ZSQmxobEJoeGJpSEJSVnlJd3hncGtweGhuTzg0eXlRVFhNeWxYTUpqM01ybFhNWVZYTWtQL01Uanl0SU1aU3RIUHZuNWk3ODVKNVNyUE9WTEtsQ2hBcHFwSXMzU2JNM2hWMzdUWE0zVGZDM1FRaTNpZDk3UllpM1JVaTNUY3EzZ2M3N1FTcTNTYXEz''@;'; put 'put ''UldxM1RlbTNRUm0zaVB1N1habTNSVm0zVGRoVnJoMHI0Z3ovNWtxOVVxcURLVks0S1ZhcEsxYXJSVHUxU3JYWnJqL1pxSDArb1R2VnFVQ05mODQxQ3ZNdG5mTUNIZk1TbnZNY25hbEt6OXF0RkI5U3FOaDFVdXpwMFNJZlZxUzUxcTBkSDFNc0RQTWdqUE1wRFBNdzEzS1dqUE1PVFBLVStmbGEv''@;'; put 'put ''anVtNEJuUkNKM1ZLbGdZVlZrUzJodngxbzFiWVNjVDlscUd2YnRDeHo5Zyt5NFcvTGpHY2lOc2pmc3ZRMXhpMjBra1JnOGFwQ2l2cEQza1d0bUYrS0pKSVd1R3dIVS9tMi85S2Y4aXpzajJya1BHd1hSUTJoeE9qbzVaSkxSek9DUHd0bm52VVk0dm5FelVzYk0yc0hNa0lmRzFXT0pXMGZUR0RO''@;'; put 'put ''dE12WnRCdVhzWmRGTFpuZXNRelBkcE5ldHlGdjhPYklXRVk2RGlkaWc5YlRtbzBacVdTZ1VSbTVPczBIUnpUb1RPemc1UFpvZE4wY0F5NlROV1lDMzhxSGkwcHJReDZMUE4xbTZTa21hYkhteVpsbU5QalJPUERPYW4wTTlEem44bFNtWkcveDl2QmxHRkJiempxaEZPalF6SDdiTUY0aHU3TDBC''@;'; put 'put ''UFQydGR2WnB4MGtkOC9mZHFUMDZlZG5qaFlWdVd5TEZqcDZ4MTJyS2xyTlc3UWF4ekdYZVQxUnFLMlk0OUZ4L0xHejZ0MFhXbW92dHBqamNjR2o0MitQbU0wNFNMOU5saFNFdlJZNXJIY1k0WEhTc05nVTNZbzVTVGNvS0twSWNjcXRtTEpmTXVkeFVqMzdxZGxrVFg5MmVrNFlKMGYwQ1M2M2RP''@;'; put 'put ''eXdQdDlqRGI3bXRaNVZ2bzBUSEl5R291NHliblcyTlFlUld3bkwySjc2aCszWmJjaEFBQUFlTnBqOE43QmNDSW9ZaU1qWTEva0JzYWRIQXdjRE1rRkd4blluVFpKTWpKb2dSaWJlVGdZT1NBc01UWXdpOE5wRjdNREF5TURKNURONmJTTEFjcG1abkRacU1MWUVSaXh3YUVqWWlOemlzdEdOUkJ2''@;'; put 'put ''RjBjREF5T0xRMGR5U0FSSVNTUVFiT2JqWU9UUjJzSDR2M1VEUys5R0pnYVh6YXdwYkF3dUxnRCtIQ1ZnQUFBQUFBRlltUFozQUFBPSkgZm9ybWF0KCJ3b2ZmIik7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtc3R5bGU6bm9ybWFsfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcztzcmM6''@;'; put 'put ''dXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFGVWtBQk1BQUFBQXBRZ0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFCcUFBQUFCd0FBQUFjZk5INTVrZEVSVVlBQUFIRUFBQUFUUUFBQUdJSDFRZjhS''@;'; put 'put ''MUJQVXdBQUFoUUFBQWNYQUFBT2RqNThmRXhIVTFWQ0FBQUpMQUFBQUNBQUFBQWdSSFpNZFU5VEx6SUFBQWxNQUFBQVRRQUFBR0JvUUt6elkyMWhjQUFBQ1p3QUFBSnNBQUFEbm5kREQ3RmpkblFnQUFBTUNBQUFBREFBQUFBOEVhd0JwR1p3WjIwQUFBdzRBQUFHT2dBQURSWjJaSDEyWjJGemNB''@;'; put 'put ''QUFFblFBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFTZkFBQU40d0FBSEc0LzdIR0RHaGxZV1FBQUVvSUFBQUFOZ0FBQURZTFpZZ1NhR2hsWVFBQVNrQUFBQUFoQUFBQUpBZDZCQ0JvYlhSNEFBQktaQUFBQW9ZQUFBVGFxMU0rVld4dlkyRUFBRXpzQUFBQ2N3QUFBbnBON2pMbWJXRjRjQUFBVDJB''@;'; put 'put ''QUFBQWdBQUFBSUFLRUFwRnVZVzFsQUFCUGdBQUFBWEVBQUFNUUkreDRZWEJ2YzNRQUFGRDBBQUFEb1FBQUJpR1hGajJLY0hKbGNBQUFWSmdBQUFDQkFBQUFqUmxRQWhCM1pXSm1BQUJWSEFBQUFBWUFBQUFHOW5kWW1BQUFBQUVBQUFBQTFGRzFhZ0FBQUFEVHdaMkdBQUFBQU5TK3B2VjQyZzJN''@;'; put 'put ''UVFxRVFCREVFa2YwTUxQb2Y3eXBML0RvZlhmVi96L0FJZ1JDMFRRQ0xSNmNkRlJralZzbzdIelR2MUQ0QjdtNDA0OERPbG9wTmx2NjQ1U2VYWExUNTFzWHpTYStXM0FGM0FBQUFIamFqVmNOYkpiVkZYN091ZmUrMzlldmdLV1VINkVnSVZnYjB4UkdtQWl5YVJoVVJ5cVNqaWthWnZiam5JUHgx''@;'; put 'put ''MkV6RnVmNGNXZ1dVaGVIREFscEVQa3gyZ0NpWWtYR3VvWXh4ellDeWd4aFlGd0h5QlltMCtsQ1JIbjN2T2Y5c0MvUWJ1TUpENGR6NzN2dlBlYzh0K2NXQXFDQUVaZ0ttVnhYUHdONWVIb1F4M0Q4UjZCd2M3N2RPQThWYzcvUk9BZVZjK2ZNbmNQWm9EOFpUV2NrN1BoZEFRTXdERlhtY1JpSmV0''@;'; put 'put ''ZWFqa1lMYkZXSm1oSHhJK205aUY4TU5sOUF4V2NRMU1YTjVJQ0pXSWxQRWN0Z0tJL0JlVEpJanFFVXZYaXlmOFFkOFpiNFNId2NQZnlKMys5eDVQZmRlanU1ZC9iL0orT2Y5N2pDdXoyTzlIeWVQOFc3ZWhqWkVuZkd1eE5jNWovQ3Y3OUwwTjBlY1RPenBCak9URmN4VzljUmlsckNZUlRoTVlZ''@;'; put 'put ''SStEd1JZUnlSdzNnaWp3bEVDWE03a1pWcUlnUkw4UlBPZkpRSXpQaEsrbDhtQks4UWdsY0p4U0hDNDAzQzR6Z1I4RmNpd2traXdydEVoTE5FRHU4VE9ad25TbGk5VDdsYVRCU2tUTXBRSXVWU1RxNlFDdkpnVnJiQXRVZFRKU1A1emZXRTJMblRFNnVkMk5tSnZaMDRZREtSUngxUmd0dUlBaHFJ''@;'; put 'put ''VXN6SGcxd2hpU1N5U0NLTEpPQnhQTW41cTRrUy9BSnJPZjlwYk9MOExVUXB0aEU1YkNmeWVJSElZUWVSeDR0RURpOFJlZXdrU3RCR2xHQVBVVUE3VVVBSFVjQmVvb0RmRUlMZkVtTFppZkEyVVlxL0VHbGUxUEtpbGhkdmVRbVdsMkI1OFpZWGIzbnhNbEFHTWw5WHk5WGtKRWVCcTlZeVExV3Nj''@;'; put 'put ''UzFyTzRZMUhjZk1UR0JHNW1NQkZxSVIzOGNpMW5JcGxtRTVIbUVXSG1YMDJ4alJpNnprSzZ6Z0lWYnVPQ3Qya3BVNnk1T2N0NXRWeG4wcmt2dWxEOXM5M0NlTmpMczMxYldidW11T1ArcEdyVGJTM1IzNGJPUk1nbTYrUE52ajNUaHpVZkc4MThmajVmSHl5MGZTV3hldmk5ZDFPL0kzKzBaUmFa''@;'; put 'put ''b1EwNFRpcTRURDNZVEhQVVRBTENLaUlwN2tuRVFOWW1wUVU0T2lsWWl3bFlpczBtS1ZGcXUwV0tYRjZxbzRRVGljSWh4T0V3NmZFQUVYaUVqNlNsL1d0Wi8wSS9lWC91U2tvbUlWRlJraVE3aStvZ1pYRWFYb1MvUXlwWXNwWFUzcHJxajBXNG1zMHIzRkUyWGl5Wm5TWFZIcFhScjNGcFczcUhJ''@;'; put 'put ''VzFVV2xweHBQMWIyTDZGblhTYlRlTkt2RkNCUGxPb3N6Wi9wMXBsOHR4cHlvV0l1UkoxcldUUHhaUlR2TFFrNUd5M2p1bnZ6MHFtT0VEYXpYM1l4ckZpTlp6VWpXNENsRzh6UTI0QmxzWkVSYkdNbFczc1kybnJhZHA5ekwwNTFnRFU3elpCZDRnbjdjYlNCM0djSVZoNW1lRlgyc281U2JPc3E1''@;'; put 'put ''eTgyMHhPeWIyWW1PUmNQSW5jeC9oNnlRbGZLRXJKRVcyU2pQeVhiWktidWxRMTZYQTNKWWpzbzdja3JPeUFkeVRpNm8xNEtXNlFDdDFCRmFyYlU2Vmlmb0xWcW45ZHFnTS9WZXZVOW42d0p0MG9kMG1UNm16YnBLMStwNjNheXR1a1BiZEkvdTFmMTZVTi9TWTlxcHAvVTkvVkEvZG5DUjYrWEsz''@;'; put 'put ''U0EzekkxMDE3dlI3Z1kzMFUxeXQ3bHBib2E3eDMzZDNlKys1eHJkRDl6RDdoSDNVL2N6dDlxdGN4dmNzMjZyZThudGN1MXVuL3VEZThNZGNXKzdFKzd2N3AvdTMrNFRyejd2Ky9nS1A5Z1A5MVcreG8veE4vb3Yrc2wrcXAvdTcvU3ovRGY5QTM2ZVgrUi82SmY0Rlg2bGY4S3Y4UzErbzMvT2Iv''@;'; put 'put ''YzcvVzdmNFYvM0IveGhmOVMvNDAvNU0vNERmODVmQ0Q0VVFsa1lFQ3JEaUZBZGFzUFlNQ0hjRXVwQ2ZXZ0lNOE85NGI0d095d0lUZUdoc0N3OEZwckRxckEyckErYlEydllFZHJDbnJBMzdBOEh3MXZoV09nTXA4Tjc0Y1B3Y1lRb2lucnhkaXpXYmVRbHhuVVpYcFV3bW94YnpMTzB5MS9rYWNZ''@;'; put 'put ''MXhqY1pQNWl3RGpWN3V2RWs0MnVWUDFPbDJuaVU4WlNFc2RCNGs3NUdialQvZU9PSjV1ODBQbStlNjR3M0dGY1o1NDBiM0d6eTg4YUx1MmQ5TXh1aithOWdURE4rMXJpcGkrV3VOSGF6NXhudk0xNTFKYWNaTVB0S25tNThyYmIvTDlhTmwrU3F2VHZHbDQyZk1WN1l4Y3hldTJYdnYzT2F6L1p1''@;'; put 'put ''dVNyRGl6Tm52c1RPMUhTSithdk5uN1hUckQ1dTlsMlp6SS9xR3IxbzIyaXFpcXcvemVxVTFMWTVxV2JTNnFSUnAvb3Mya1YvTXFmRjdFMnU2YUo2aXhwN3crejlpVjJzYVpxeFZOdXA5ckwrOUF4cDNnNmEvU09yMFo5TjUrZHNmcXFjVHB0ak55TFY3U1grR3JQUHA3Yk5TVldkOWFjMzZLYU1a''@;'; put 'put ''dEtLWk8wWHpQNVc2cmY1ZGk5MHFQazNtRDlWV2xYR25tU2NOMDlQOWtmcGZiSG83akQ3c05uWmxldmlYeVhWaWZkY1ZxbnNqbE9LdDd2OS8rQkxaeXF1c1hjcCtPNnFabGFTMTZsbjE2NWhGMHhlMkJFK3g1ZFlEbU54STN0WTBybjdzRzkvZ1QwOTZkeDk3WTFhYnAyN0gzK3Ztc28rVkUvMHh4''@;'; put 'put ''M3Njd1BZNmU3azd6NHppVXJyNVVQWjliN0dyaldmYjdmaDlub2J4NDdld3ZYV3MvUGRicjN2Syt4K3I3RkQvaElIOEIyKzZNNWlzYjBxMStCZkV2QVVPL0VRdEZwUGJlTjVSYTZ5MzgwaVNQeGpVK0VTM0U5ZXdXNVhpa0hjYXlRakdvMGJlT3BKUE9VMHpPRG9yMDI3ZnpRK2FteDNCdnN5Zk1o''@;'; put 'put ''NHJ2Rm00MVJWT2JOTDhTWHU4d0MrS3puSlM0a1VwRlI2UzU4clQvUWY2ajZiS1FBQUFRQUFBQW9BSEFBZUFBRkVSa3hVQUFnQUJBQUFBQUQvL3dBQUFBQUFBSGphWTJCbWNtQ2N3TURLd01MVXhSVEJ3TURnRGFFWjR4aEVHTTJBZktBVUhMQXpJSUZRNzNBL0JnY0dCZFUvek5ML2pSa1ltSTh5''@;'; put 'put ''cWlzd01Fd0d5VEd4TXEwSFVnb01UQURKWlFwQUFBQUFlTnExazFsUWpsRWN4bi8vdDMwUktoVDE5dlpwMDBhaUZFWDJwY2krbEt6WnNxL1pHdXNRUTBWU3lKNGtveGtUVTFPMkcrNjROV09NdnMrVlcrNE1IY2RYVERQTXVISm0zblBlYzg2YzU1eDVudDhmY0tIckMwRjBqMVRxbVRqbnJsS3N4''@;'; put 'put ''eVdNdzQyQmxIQ0xPdTdTU0JQTnROQW1IaElnZ3lSTUJrdWNKRW1xcEV1bVRKVWN5Wk5DS1pJU0k5VjRaYngzaVRLUG02M21FL09MNVc0RldzRldxR1d6b3F4aFZycDEzK1lmK1UwcGZZZkZqUjdhajJuam1maEtmekhGSnJHU0tDbVNKaG1TSmRtU0t3V3lRVFpyN1pmR1c2MTl5R3d4MjgzUGxt''@;'; put 'put ''RUZXRUZXaUZON3FKWDJTMXQ5VkMvVWMvVlV0YXRXOVVnMXE0ZXFTVFdxQmxXdjZ0UTFWYXRxVkxXcVVwV3FRcFdwTTZwVW5laDgwNW5WbWZUOWs2UGNVZURJZDhUWUI5cjk3RDUyTDd1YjNlajQydkc1NC9DSGtIZkpYVjc5cCtadWVEdVQ0STliQktQN3ovaUhSdGRKRjF4MWR1NTQ0SWtYM3Zq''@;'; put 'put ''Z1N5Lzg2RTBmK3VKUEFJSDBvejhEQ0NKWVp6eElweDZLU1poT0pCd2JnNGtna2lpaWlXRUlzY1FSVHdLSkRHVVlTUXdubVJHTUpJVlVScEZHT3FNWlF3YVpqTlhNWkRHZUNVeGtFcE9ad2xTbU1aMFpaSlBEVEdhUnkyem1NSmQ1ekdjQkMxbkVZazFhSHZrc3BZQmxMR2VGZnY4T2RyS2JZZzV4''@;'; put 'put ''bk5PVVUwWUY1emxISlZWVWM1RWFMbkdGeTlSeWxldmMxQlQ5WlBRMkRacWxlNXFtbjIwVnE3VWQwV3pnYkxjMzYxbWorMTJjK08xVzRWOGN2RUE5bTFuWlkyVXRteVJHajF2WXpqSHNPQ1JjOHhrcFVib0NJcmlqZHg2Z2FaWUVYUS94M1dlS25HSEVzbzI5YkdVZmV6akFRVjFMK3puQ1ViMTFt''@;'; put 'put ''RkpPY1pMWHVwcDZzVTY4eEZ0ODJDaCttbi9QSDVETnF1aDQybU5nd0FMOGdkQ1p3WmxwUFFNRDAyNG1WZ2FHL3lITTB2K05tWGIvLzhKMGpFbncvNWYvZmlBK0FNOVBEVmg0MnExV2FYZlRSaFNWdkdVakcxbG9VVXZIVEp5bTBjaWtGSUlCQTBHSzdVSzZPRnNyUVdtbE9FbjNCYnJSZlYvd3Iz''@;'; put 'put ''bHkyblBvTjM1YTd4dlpKb0dFbnZiVUgvVHV6THN6YjV0NVl6S1VJR1BkcndSQ0xOMDFocGFYS0xkNnphZFRGczBFNGJab3J2dVVLa1IvOVJxOVJxTWhONng4bm95QURFOHV0Z3pUOEVMWElWT1JDTGNkU2lteEtlaGVuVExUMTFvelpyOVhhVlFvVi9IemxDNEVLOWY5dk14YlRWOVF2WTZwaGNB''@;'; put 'put ''U1ZHSlVDZ0lSSit4b2syWXcxUjRKbW1QOUhEUHYxWDBCYjVxUm9QNjZIMkpHc0s2ZjBUeWorZEFLZ3lDd3lMU0RRSkpSOTdlQ3dLRzBFdGduVTRqZ1dkYXIrNVNWTHVXa2l6Z0NNa09ITWtyQ0w3RVpaemRjd1JyMjJFbzg0QzlJbFFhbFovTlFlcUlwbWpBUXoyVUxDSExaRCt0V3RCTDRNc2dI''@;'; put 'put ''Z2haV2ZlZ3NEcTF0MzZHc29oN1BiaG1wSkZNNURLVXJrWEhwUnBUYTJDYXpBUU9VblhXb1J3bDJkY0JyM00wWUc0SjNvSVV3WUVxNHFGM3RWYTJlQWNPcnVMUDVidTc3MU41YTlDZTdtRFpjOEJCM0tDcE5HWEZkZEw0TWkzTkt3b0tUSFM5UkhSa3RKaVlHRGxoT1UxaGxXUGREMjczb2tOSUJ0''@;'; put 'put ''UWI2MHlpMkpmUEJiTjZoUVJXblVoWGFqQllkR2xJZ0NrR0h2S3U4SEVDNkFRM3lhQVdqUVl3Y0dzWTJJem9sQWhsb3dDNE5lYUZvaG9LR2tEU0hSdFRTbWg5bk5oZURLUnJja3JjZEdsVkx5LzdTYWpKcDVURS9wdWNQcTlnWTl0YjllSGdZQll4Y0dyYjV6T0lrdS9FaC9nemlRK1lrS3BFdTFQ''@;'; put 'put ''MllrNGRvM1NicXkyWm44eExMT3RoSzlMd0VWNEZuQWtSU2cvODF6TzR0MVFFRmpBMWpUQ0piSGhrWFc2WnA2bHFOS1NNMlVwVTFuNGFsS3lvMGdNUFhEOE9oSzBLWS8zTjAxRFNHRE5kdGh2SGhuRTEzYk9zNDBqU08yTVpzaHlaVWJMS2NSSjVaSGxGeG11VmpLczZ3ZkZ6RldaWkhWWnhqYWFt''@;'; put 'put ''NGgrVVRLdTVsK2FTSysxZytvMlFuNzVRTGtXRXBpbVRlNEF2aTBPd3U1V1JYZVROUjJydVUwMTNsclVSNVRCazBhUCtIK0o1Q2ZNZmdsMEI4TFBPSWorVnh4TWRTSWo2V1U0aVBaUUh4c1p4R2ZDeWZSbndzWnhBZlM2VkVXUjlUUjhIc2FDZzhkc0hUcGNUVlUzeFdpNG9jbXh6Y3doTzRBRFZ4''@;'; put 'put ''UUJWbFZKTGNFUi9Kc0RqNnVXNXB6VWs2TVJ0bnpZbUtqMGJHQVQ2N096TVBxMDhxY1ZyNyt4eDRadVZoSTdpZCt4cm5lV1B5RDROL2l4ZGxLVDVwVG5Cd3A1QUFlTHkvdzdnVlVjbWgwNnA0cE96US9EOVJjWUlib0o5QlRZekpnaWlLR3Q5ODVQSktzMW1UTmJRS0gwOEVPaXZhd2J4cFRvd2pw''@;'; put 'put ''U1cwcUVrYUFTMkRybG5RTk9yejdLMW1VUXBSYm1LL3Mzc3BvcGpzUlJuTWdDa281S2F4c096dnBFUmFXRHVwNmZUUndPVkcyb3VlTERWYlZuR0Z2UWZ2WThqTkxIazNVbDY0S1NudFJadFFwN3pJQWc2NWtUMjRKb0piYU8reWltSktXS2dpUGdodEJmdnRZMFFtTFRPRExvRWlaSEd5c2cvdGlo''@;'; put 'put ''MDVvb0oyQXQ5NjBpcnYyMEx0ejNYeUlEQ2JuVzduUVphUm92TmRGZlZxZlZYVzJDaFhyOXhOSHdmVHpyQ3g1aGRGR1U4dWU5K2VGT3hYcHdTNUFrWlhkci91U2ZIMk85YnRTa2srMnhkMmVlSjFTaFh5WDRBSFErNlU5eUlhUlpHeldLVVJ6NjliZURKRk9TakdSWE1jRi9UU0h1MktWZCtqWGRo''@;'; put 'put ''MzdhTldYRlpVc2g5bDBGVjAxbTdDTno1ZkNPcEFLZ3BhcENKV2VEcGtQcHVkbXZDeGxMZ3NSZHl6Wk5kRjlCMDhJUjNpdnpqRXRmL3IzSElVM0tMS0VsMW8xd25KQjIwZksraXRKYnVUaHlwR1orMjhiR2VpSFVrMzZCcUNua2d1T1A1ZTRDNlBGZWtVN3ZQekI4eGZ3WGJtK0JpZEJyNnE2QXpF''@;'; put 'put ''RXVldGdnU0xLdDdTVHFaZVVIeUVhUW53UmRWQ3N3SjRDY0JrOExKcW1YcW1EcUJubHBsVEFWaGhEb05WNWpCWVl3NkRkYldEcm5jWjZCVWdVNk5YMVk2WnpQbEF5VnpBUEpQUk5lWnBkSjE1R3IzR1BJMXVzRTBQNEhXMnllQU50c2tnWkpzTUl1WlVBVGFZdzZEQkhBYWJ6R0d3cGYxeWdiYTFY''@;'; put 'put ''NHplMUg0eGVrdjd4ZWh0N1JlamQ3UmZqTjdWZmpGNlQvdkY2SDNrK0Z5M2dCL29FVjBFL0RDQmx3QS80cVRyMFFKR04vR010am0zRXNpY2p6WEhiSE0rd2VMejNWMC8xU085NHJNRThvclBFOGowMjlpblRmZ2lnVXo0TW9GTStBcmNjbmUvci9WSTA3OUpJTk8vVFNEVHY4UEtOdUg3QkRMaGh3''@;'; put 'put ''UXk0VWR3TDNUMyswbVBOUDNuQkRMOWx3UXkvVmVzYkJOK1N5QVRmazhnRSs2b25iNU1xdk5uMWJXcGQ0dlNVL1hiblhmWStSdGxNN29zQUFBQUFRQUIvLzhBRDNqYXRYMEplR1BWZWVnNTUwcTZramZ0a21WNTBTN2JzaVRiMnJ4YnRyeEt0dXl4eCtQWlBKNWh4dU1aR0FpVEdRakxERXNJSlNT''@;'; put 'put ''a1NVTkMyZ1JDQ0R4YWFGa213TEJNRmdoZlNpWUxKQzl0bXJSWjJyUXA5QVhTdEVsTCtzRHkrODg1OTBxeUpjOE0rYjRIWThtK091dC8vbjA1UWhWb2FUMkNQeXZZa1lDMHlJeHN5STFhVUF4MW8zNDBnV3hKeS9CQVgwOGlIbW4xZTVycWFpMTZuVVpCVUVWN1FPblVPMFZ6eE93MlIyTHVXQ1Ft''@;'; put 'put ''c25jUmZwV2YwbWYwblg0Q1QyTHk3MUliMWlFUmllSFA1bDdHL2Y4NU5Qenc4UERERHcrN25NN2g0ZUZEdzg3Ykh6N2tjaDV5UHZ6d3c4NURoMjRmRzN2NDhKamp1OEliS2FmWENmOXVQZUlhRy9NY2dOL0duSDNEcmtNM2RGbkRzOGVQUDNiOCtHeDQxUmwyd2orRUNKcGYveDM2R25tQzdjMmJk''@;'; put 'put ''Q0dNMFJKQ3FDYURDQkdXRlZnUXJNS1VRcUhRS21xOGVwMVN0QWFNRWNGdDhjV2k4VWlueFd4U3VaZjJtbUtDdzJHMU5EVlp5Qk01dzNjZFZyUERZYlk2RUZwZlIrUDRNYnhJSHRTNVVBVkNPZ0ZlbjBaMFhqKzgzQUR6MmxFVHVpSHpaT2Zzem1TelZrV1FVaUNZSUx4U2lUV2Fta3lOcmxvUVJm''@;'; put 'put ''VlNWUVZScS9VWkJTWkVTNmJzU1I5OXdENUVhdkZ3YVQrcDRhNWtJMEpOalEzMU1JMjl6bFpyaFFVYjlmbi94SVlBRmlPaVczUW4yRThpd240aUl2c1I2WWY0djZMWGFxOE5EZ2Z2Z1ovajJ1UFI5MnRQU0g5ZG8zM3VudWc5K0t1djlqOEYvL1cvMnY4MC9OZi9La0F5dEg2V2hNbmJxQkY1VVJ0''@;'; put 'put ''cVR3YmJBaTZudmE3V2FqWlVWcWpGR2tTVUFHYVNCakNRMnhCRytFTUFFaXVhYXRMckJRQ3dSd1ZvRWZQNUV4WnJMSVJqMFFHY0FQU3dXRVdmMzl5SXpRZ2UxOEJiUEJhRkJ5UjgvRWoycHIwZDAzc3YyOSs1c3l0NzFhNzJpWm5MMzVjNzNOVWJTV0l5bVJxLy9Fb3hPYXpiM1QrdFg3UE5aenUy''@;'; put 'put ''eDhYKy9wcTUvdEdhMzlUdG5NZjJkdjFQTlVPdHVaR1JVREJtZWdzV29rVGg5ZjhtYjVKbkFDT01jRHBoMUl1K2xYbXlGazRvVUltVkZSaXJsSGdWcVpCYW8xSWZRUW9GV2lhWVlrdzFnRjVZcmhLSklHaUZLWHZtU1Q5MENWK3dDNEttckorNFhJVkYwU3JDMlViSzlDQUUydEp1cUh5dlhidVN2''@;'; put 'put ''dloyaDhOa1FxaTl0NzBuSG5XRUhhRm1uNm5KMUZoWGF6VG9kYkNaR2wrTmFBNFlPRWdqblFCS1V3MTI0d2gyR3lnczNTNlYyV1NKb0UyZkQrRENaMStZYkc2WkRJWFlLLzdvY0s1MStOcDRvclUxM3RXQ1p5ZGI4aDhGMk1ORUsxNEtaVU1kTTZIUVRMaDlKb2puMXJiaHUxT2RrWkZVdERPVk94''@;'; put 'put ''aWNhUS9UejZCRk1KNktkSTdRajJCL0FtcFoveDA1U1o1RkRoUUFQak9RN0EwSHZVME45WFcxRmJoQ0lBNk1CSkttR0k2WGdWd3RHU1VRS1lNTW9GQmJtOVBaRm11TE9nUE8xamFYU3JRRWxINlYyMFgzRkU4VTd3dytzc1lUVnBWb1JiQTFLOStsSWVIekEyckJUa2x3OTlJMS9RZTdwbWNiNjRP''@;'; put 'put ''em5jRjBZUHYyL3YzdGpVTWRvZmZuUHRjVm4ranY4RFZObmh6dUdaenZGL2ZzRCsvc1RSMTB0MHo0Z3BPQndHUmdjTm81dmpJKzMzRGwwRW15T3hLSWo5YkhXNXJqYXk5bnI1dTFaOEs5WTREendCZlFnK1JCVklPQ21TZGJBRkVxS2V0aDU0c0JDWFNJL3JrSWYrSWxTaUhUdTU2MmVBbHN4eERM''@;'; put 'put ''c3g3UkpMcDM2dTFHbzEwdnR1RWZrZU90UnJ2ZDJIcWNCS0RId1BvT25DQmZSdFZJOVZTMUVyY0hHTXRLV05uMnJPS2p4NDZ0TkM5czM3N1F2UEN6VzI3OTZVTHJ6aGMrY08yNXhRQ2RFT2gzQi9iTGZVWG95OEhqVDNEQWhWaS9GUmpoNXNWejEzN2doWjJ0Q3orOTlaYWZMYkMrdmZnNnZFUytD''@;'; put 'put ''anNaVGc0dVRvMG4vUFZXVVEyY0tkMlBVVFVjMmlTMEF1UW5OeUVpWUNLY29peVdINlF3QlNNc28zMXpzKzBobDBNcG1nSUd0dVo0UWlYQy8yNlh6dzkvSitLRDJNOS9vMmRwdGNEL1BqODdZTTZRb1MzdFEvK2kvRTVVYWJHVi93Ylk3S0pkL1JZcjI0bjc2MW8xRmhUVnRjMVdwVkpWcFZCVTFn''@;'; put 'put ''Y0RnV0I5cFVKUnBWSXByTTIxMVFvQnE3VVZGZmwyQ3RXRjJ1SHJxalhXaUVyYnFERzVHT05XVnF0ME9yMWVwMU5WSzlXaUtGUzdUSnBHclNwaTFWUmZla3NHMXhRNlNtcElGRlVpWDlLTllEckZBdUE5QUJJTGFBVllBMFVUQlo1bWZGMm5FdXNDMkUwbGFveEsxZ2lwZVRIekl2ekRMUysrbUg3''@;'; put 'put ''cEpUcmU5UHFONkNXMEgvRFBtZ1F5UitNeStnRVJlUXdVMDRBOFhBVXhKODQwVjFsQXl0VTdIY0dqb1RBVmQwRjM0MkFYSGFzTC9RcjM0aWhRYm0zU3pCQjNvWUM0ZWgwZHpPZzBPN3V3a0Z2RDBVbTJuMG1RdTgvQS9KVlVnNkJQZ0NOaWJNVVVCeXBSaFVjQVZsVXNaWTlLRXJZcUwxM3grbS9X''@;'; put 'put ''eitLSHlPc3dyejVaUXdjRllZSlA4Z2twVzhNekM3a0hGc2pyNzc2R21NenRCYjV5TFRrSHJMQUp0U1ZiZ0t1eUhYTU9na0hZc3dYb2dQWjBUYnJHV2d2am1TQ01Bb3JOUEpIRW9pRkFKa3BNalRDVDZvT1RreCtjbjRQWFcrZjc5a1dqKy9yNjlzVmkrL3FxOW54eGRmV0JQWHNlV0YzOTRwNkp5''@;'; put 'put ''VnZuNW02ZG1LQ3ZIQVoxbEJSQUIxQWhlN0lXamxJQWVLVTVoOGRZaTZmMFJnWTYwWitJNk4xUFgrZDZaREJMWnJNOUo5YTJJZGEvQXpaVkNmdXhvZGFrdjZvU3RnUFlRRWlhZ1pPeFJxckVMQ0Vtai9SV2oxOGgxZ1lHTVNWbXVucVY2STlMekZDTDRYdzYzcGtZYWg3MmR1L3lKWlkrM1hlb043''@;'; put 'put ''UDRORjdLK1laK09MQWFiZTUzZEVXQ0grcmMyemQ2WStiZU5KKy9HZUNwaC9sYjBHQ3l6MVlMYzdrd2tEU3NBd3RVdUFPVjR4V1lYYkVNQ0FxTEFkbTZyTUpLcFZWSlQ3a0ZOWHM4VG85WEZHMXcwcFM1UkRxcEhBcmdtTlVpQ2FUQ0NrVUo5TisvdFRudVB0US9zWFBmL0dSNmZQZmlVSHlIUDdy''@;'; put 'put ''bkUwT3J2Wm1lL3NXK0s4ZXFobUtSVUhTaXQyOWdBdU9oN3ZoWVp6aDhmWGdoUGpDbnI5ayswcjA3d25HaEdWNEdBUFlWd09XQ3lkWXE0RWs0clZMQ0hqQUMvZlV3Z0krSlhLMWlxckt5c3JxeUd1aktvS05yOVRyOU9LS25HcXc3cHNmNHp0d2pGWGhoOStwcU52ZjdQeC9DcitRR3gvLzgxL2hn''@;'; put 'put ''N2o0T295NkFVU1BNMDRqNmt0MG1qQlhhR29FbzROelRDRjZSQW9TOElKQWxMdUUzQXFnUk5iajBScTlIQnBBbDBpa0pZOUZQNlVtTTV4SHlaOWNISXpzdkQ2ZGI5azdNalhkWDRIdHlaOFdSbWNIVi9zSDNqVlgxUkxyM040OEZodWRpOWZoQSt2VlE1TUJ3YXJVTFlOQUhhNHZBK1RXZ1ZzcXRE''@;'; put 'put ''WG80TzM4ZFVTcElXZ1ZzUmFFVUZLc29MMlpGV0pqTUlScEJyMnhzYld6eHVxRnp2ZGZyVTRQZWhxVEZVSzVCaVFYRURDZVNCa0M1aUVGV0pFUktNWGNkSFJpNGF1ejJXOUkzVC9mdGF3bDRKa0x4M1RISFNyOG4wN3h2ZkdpcFdyYzRpaCtEaFE0ZTZmdkt2U3QvY2FDMXVkL3RuYmxqbTZZemtm''@;'; put 'put ''dEljTUkvQ3R1Y08wRGxEWnhqRmFPaHBtUzlBZ2lJVVJEbFBaanA4S0FGZy9aRDFVcnNqRG5Od0JTZXlOMkZ2NS83MFc2eWt1NWR1NHZxRzFHQVF5dkF3UTV3NkVFanlTR1RpZ0NIVFl0RlFKQTRoUnFBZ09HTUdLY0lCT3JyRVFyMEJMb2pIZld0OVMwZUZ3eFIxNmFockt1Y3hpSEJ4NUFuUU1v''@;'; put 'put ''OXJOS2YvaHJDbU1rYjd4OWVTQTFNREYzUlAzREZVS1ozZUdINHhKaG5JdHd5SGhqYTFUN3VCcFVwUHV2enpjWkJxYXBxWCt3ZTJHdXUzZGFkbUc4THppZDZaeTJXdmYzZGkrMzRFNDF4cnl2ZU5CTHh4UnRJN25sSHQ5ZmY1OFRZMmVmM2Rqc1kvbTg2ZTRjQmpyMUNBellFZ1cwcmdYQ1ZaQlhR''@;'; put 'put ''WDRDOUNvSWxVeVFkNUxPSDNjTForN3hlZHZZVzZlZzVIUS9nZmt6L2xQWnZvSkRnN05JU3dVK1ZuUG9ndzRZVU8vWU9pZ0hrM09aVDU3aVErd2c5ZG5iK3NBY21RL0E2eUFzcjVlZVVmN05GNnJueHB1VEdXMVVWUWxYV0tvdEJ4d1FMNWVlR0lzRkN5Z2dacS9TTzc1YWxUZTZBL0J2WWRFeDI0''@;'; put 'put ''bld3NmJRd21ZajBRTWIzSTgwWmpKL0Q5ejhaQ1ZDNlQ2Q2RPRWNXQVM5VlQ2a0k2RkRHbU5kY2pjMEo0QkMzNGRPNHAvY1hZODgvUDg3T0lvWE9rUnI4VDRDSkluSWxteWorVWxNT0ZDU0JMRWdzbkFoVXR1c29CNmUwVC85UDRXL25ZdXpubjlLZlRNT2NVMmduTWNwekNqQm5Jb2hqU3JOeUNw''@;'; put 'put ''K0dPVi9KZGQvLy9QTmp2K2o5QlozVHZ2NDcvQnFjZnkzeW9FUXlhcW1xcEd3UFU3WXR3TVEzRmNrUXlzQ1ZXS0d3S3Fac05wdkg1dmJXZXZ3cXVoQlpEaGI0ZEEwRzI2MVliai9Yc3lmaUhHaU96bmtqZS85b1lIODBzcWRuUmkrRDk1VFMwK1ZvU2pnN2c1RVQ3ZHNqYmJPOVZiY1VtYzkwblcz''@;'; put 'put ''cmR3bWpvQ2NQb2l4K0p2TmtCV2pLQnFlRHFJWGhKb09nVVBmMUVrRFFOQmhiVlJzKzBSUjlZdHFpVDdubXUzYnQ0cE0wVjJxSUFtU0NpbkpvVlFVR3JmSWdraGdnTUJhMVdsZ0d3T2pWVTlMVVFUQzhGVml6aUM2MWsrazlUdEwwaDB4Q0RZc0FIS2hhSTZoWEw5cFpDWVpIQnhWQ0FsS3VidDFM''@;'; put 'put ''RkZXQVl5cHhtWFdmMlVYL1M5WW1rd2dsczhucGlURTRxd0dmcjlYcjhmbXFSSHVKOHVTaU5sYVJrQUFqcklOWmw1MHlYNVRVcWs1bXJvQUJtdURhZ01RK1JwNDg4djRYcno3MDJPSG9YQ2pVcjI2Yzc1aGNTaDNyNlJ3MVZLZjBIazlqWTdkMzZiNDlLNCt2N3Z2QzNvR0RDVVBQVlNQTk85VTRI''@;'; put 'put ''Z3Rtdy8yUms0Y2ZPL1MrRjQ4ZmVHZzVlMlU4MU93UDc1OGVPWkVLZW9hVkMyZXRUZTZXeGVHRlR5MnVQckd5NTc2bGVxZmQ2MWk3YkVyVVJucWlPenBpUXhRZkFTM0pEMERlaUtBNUJKTE5HZ3h3U1FOMUFMa29RR3VnWWx6QVRIdFRxOVVWNmdxdWp0ZUMxaUF5VTl0ZmlVbDM3dGJSQlJ5bS8x''@;'; put 'put ''YnUvOEs5OTVJbjFyYjlLejZhK3d6QWZCK01meHpHMTRGVzUwTDl5UjZRT0RDRENqZ0N5R1VsVmFja0I1V0l1ZFpQNTdMWEdmVE9wanFYM1ZWcjBkc010amFIbWluZEd3V1BFMHNLbHRrby83SVA5eVoydEhkMDlBMUZsM3B6ejJOLzkrUms5NDkvbWR5MkxmbEw4a1JidGlNNjF0QzRweXUrb3gz''@;'; put 'put ''Zk5kRGVQdkNUM0xueHJxN3hITk50cU56OEtKTWhvV1NnemxaWlFYRWtMWXNLeXdZWEdqeGcwc0pIWFdoNWxNaXJDTVVIamhNUDd0Ly80TkxZTFIweDMwcGk4blFtYzNveXNlS0xkZHd5VmdYbnR2emdnVVJudkNVMGZWdG02b1BaVUV1OGcrb3lGRzR2TUgzT3pDeWtQSmlZbzBBQ1UxV2x5VkJw''@;'; put 'put ''cmpMN3dMb0U4TWdvR2NBSkNmY0NXTC92aldPUExDOC9jdXlOTnhadXoyUnVYL2dzZVdMbnZRY1AzcmR6Zk96VXpNeU5ZMnMvWjN1ZmdmbjZZTDVLRkU2MnlSeWI2bTZLSlJDYk5jV2FON05vS3JuSERWUTVvMW5pMzNxbitmUDRtdHhIOGVkelJ2d1dXZmxGK3QvVDVBbEp0NWJIMTZDV3BFOGVu''@;'; put 'put ''M0poTnFxczJzQUhHcVNoSXpOK3pFWjF5K1BPOEVGenIvQkIrWG5kRCtmbFJMRmtKNWhKU0dnaVJLRmtCb05TZ1JoeWtXVVkyVUkxWDhiK1Fjc3h3cUc1dVVucDFCY0o5ZExEaTdueFhkallmdmZFRWp2QWlVK0ZZOTdydXZrQnRxLzZ2b0V2ei8yMnZac2ZZWGQ3M04vT2o5RGQ4RkJoejdjd21Q''@;'; put 'put ''cVRIa2s5WGdHZG5PNlgrc3UwYURNc01kMHQvRVRnbGR5U3pWMlJ6ZUpQVTNMQzNYVGJ1Yi9CYlh4Y2RCL3o4UnFwWTZWZ1gzSFRGSXlybVd5VzlxSTJHY2pGdjJiMEIxakVUQm1HMFV3NUo4c0NJSk9WZ1YySHRFYXZBcm9YVEJkWUJhV3lKei9RMUcxYURQZG5zNG1EZzFYSnpxNUExOTVKL0Zx''@;'; put 'put ''dVkrUllIOS9uM3Z3K0hja0dqVnBKbU9URnpDTW9jTSt0MFdEZ3NqNml4eEVOMEFTSTFiMVp2SGMxOTNNY1hjbTljd3pXbS9zUVBwWDdhOENmNVB0ZlplT093TGdhR0ZkSmRXRzJhRG9hSlEwSmRFcWsxT3Zwb3IyQUp4RTkwZVI2czJuQXViWFBzZjZVaG41ZldKZFlabDBtdmJ3dURSaEJibjBs''@;'; put 'put ''bk1DK0xGcEg2OW5zK2pwZGxCUC9mRzBiRWRuNy82RDh1QTh4WEc1TTJrVkNTa1kxNUVmRnNDdzNHeE0vbXMzbWR0QmorVDRKdzRqaHRlOVQva3R4K0xmL1AyeDR6blQyUGJCLy93UDdKaytuMDZjbk9lSktMT2ZBZzh2TER4Mll5SDV3S25QYk5NZGJwcDlRbkQwSWU2c0N2Z05XT0t3Q1NGWEEx''@;'; put 'put ''Q1ZUQ0NUQUZtdXFUWVpxYzQxWjczT29hQkRCbWVjOVpyZk1sdlV6MkRwMk1wVTZPWFkraXpVTHE2c0w1OGdUWFN1RGd5dGRiK09oN01oSU52ZVRZaGlZYUJ3bTJVa2QrMHFpQXJOU0lOUTFXakRaRkVXZVViUFozR0p1RHZ2OGxBR0RFTGVLL21KaXBvNzFlTUtmc0c0U3d1UzN6ZDdwenRudzhm''@;'; put 'put ''NGxHVUM1VjdlN3IraThxcTRoRHlOY2YzVTQxVFBtRCtSaGxmdVhwdnFsbm1YUFlxZ1lYRVh3cW9FMWdmd0VnYUhBc2ltOEFwcUl4TjRrY3ZkNG5IcTlrZklldW1LM0gyeHVQWU9jVXZZVmtJTkg1ciswNi9HeldRYTZYTTg1QmpaODJ3bEQ3dTIzR2ZRK1NRRW4rVFgvaTRUSmx3RnFJSzlxclFR''@;'; put 'put ''a05zRkY0S0xPNXlKNTFZS2F2VUVQQlpkRnRtcW9GelJFU3RnZjl5Y0NPTzk3WDBmNHFwSEloSGZ4c3N5QldOL1JvY2xySXUxdGgySXRJNzRkQjY4NmtiaHF1dkxLL25EVW1YQkVFMVpEVzZZN3Zqc2FDZmUzaHB5SnBvNUliZDJ1N1YyN28yeXRRWURUSk5NenVHOG9iOUp5WjQ1a0NtQTMyTFJ1''@;'; put 'put ''b0JqVDY2VCs5U3lZdEdtSmxuY0FqbndLK3B1Uk05a29CUnN3THQ2ZUdabE1IcE1zamluemt2WW84VEhzdW0weUcxL3U2MXVPWnlkdm02K2F1bU1IL21UdXFxSFZucDdWSWZyYmpqdW1PSDNMT3BHS3pxVmtOamh3VG9scGNzNERKZ25uUEpTWEFlOGdQOGg5ZndIK1lSQnBsUFBDenhreUEyTjVF''@;'; put 'put ''VktZR0QzQldCV1U5d096b0tFdEpzclo1b0ZiR0hSS0tra2pka3ovQ2U1SzdQYnUvT3JaeGJOZjNmbXI2YSs5T0EzRC9RMXBZei9ieU9UYXMzeWRJRWZKM1l5L0FYL1VxR0JvT0g3S2dtb3ltT09id1dEUVU3akNLbUZJRFJzZFpKcTQvKy8rYmhtTHVmOWg3enR6ZjRGdHVkZnhJdnoyT3JieHNR''@;'; put 'put ''MHc5c2RnYkRWcVNOYXBCS0REUEpPVHZCQUdGdHlTeG9RajgrZCtkZUNuUDkrWGUzTU8xK0xQNUo3QzA3bWp1VGZvV0QwdzFyZ3MreWs4QzI2OXZGOGo3OVl6Nk5tS0U5eTlBUXBBRCtnVFJ3bkpIY0FQcnYxMmdQalRBMnMvNXZKLzIvckhjRC81MlNWYW1SRkFMUGpaOXVhamo3NUpmdGE5NXV5''@;'; put 'put ''R0h1dnZySi9GVDJ6aGN4VkF2MVV1NEdYdWNzV29BK1pyeU04bit3T3Bha2I5dzNRK1ZKalBDb3cvQmo4ZE1OMmJQZVRuM2U4K1FZZVA0L3Z3MHh5M3pxZ09qU1F0d09HWmx4Um1waDdqazVKMzU0d0tqUmdqUnJkZmRQK285NEdobTI1T2dpejY5VC84QTExemJ2MzlaRzc5R1pqT3djYll3a2RO''@;'; put 'put ''aHhBQmdJUnNYL3VyVElxZjZ5QkpZcEY4RC9wYVdkOHE2RGtCbjV3MGdFam1zeWFzN3NHWjYzdklWdzJmNER5dUUzU0kzeEE5c2lNLytrSFNaTU9Db2hhRWdoNDArYVpHcGFCU0t0TGN5SFJBWTZXS1VHTUxiR3lxME5zeWFxeFNvV1VKSHlYajBsT21IU1V0MWxqVzB5U2I4dUpqWHRwdzFLZ3pV''@;'; put 'put ''LzlXdmIvZTUzSlF6NWJINnpacTRLaVF4UXhuVldURVdRdmVXZ09vZ1hLNEVOOStSY2ErRXArL1BMR1V5TzVPVHJrbkE0MkhkbGdPMWt6TjlzNVBkaEg5TlFkeTM5alcxckU3MHprVGFEQU9MdG9zL1owNWIzZGt4dHdYQ2llUUZKOG5FeURyREdBTlBYZFdXMEdVSUM4NDlCb0FhWFdadkpQS0pu''@;'; put 'put ''a282VGF0ZWRBNU56ZWlxdDhHWDZZRXQ0dU1kZ2tEVVlpWmpFYUVqQzZqMDI2REpZUHMydVFaOVZPaTBzdnUwR0w5NDc0ckJ3YXVUUFVmYU14a0dnLzBlMmJhMm1ZNk8yZmIybVk3aVg3MHhtejIxR2gzOUFBNWwvdTNhSGZPQjhaYTc5NW9kRzl2NzFLVTQyazc0TnpiZ0hQbGJUSGIxcmFZNVlL''@;'; put 'put ''MjJIK2RtcHc4TlI1ZDlrYnJSbnlSeFFqODg0M1pvOTREc2FyMDZZbUpVK2xtVDZUZWtkZ1hUeXgxT1JzajNsWjZabkU0czBEK3pQUkM4WmxSMkRFd01rT2pHTW9GZEhkdWJzU1FVMlN1MXcyNGZwSFJMbUdnMGpNeitOeDZlbVpZUXZFQ2VQUmtzMjRVb0VlVmtnL3VGRHV0VG5aeTVOemE2SUZv''@;'; put 'put ''OStpcGJQWkdPRGhzWFR1MStjd0lQVFBpZ1RNem8zcHE2UU9QRndoVGhvaWdJQ3Y1WmRveXFpSTl6bUlCYmJmZVlyZlZVZ2x1OERIM3E0ZWZWbUd4WmlkZG4wcDB3bkx4d2FYYWtQTURYYVBYVFk1ZU0zcnkxdHd1OVVwbThsQUYzcXZla1U1NDZqbzhiV09ucHpPbnhyNTQ1L1JsK0RONzB1azlI''@;'; put 'put ''S2RBRnVQdHdQc3NhSGV5UW90VlNoMUdLcExtMlNyMVNLVlNMb1BHVnNzY0htaEpnU1hQSzh0UXFRTmpRd1ZjWnJYMHcxM0pDbytieFNsRjBjN2xqSnZ5ZnVZMDVFaW9NcjkwODgyWmJkdkdFL0ZXcjZaZWIzVVNaU28zZ0wrZUd1OUpPeE9hS204OTA0TzNreGFBSDgzUitIYXlxbEZIVkVxTm12''@;'; put 'put ''bXdKZjRLREExa2pvcXNVczF5V1ZRUWlYQVpNSTBGL3BwdlI1a2hySk8yUnFWdFRaYzA1cVVOeC9pckExUW5ucWtCbTJqeWViMGV5bCt4dnRpWEh0L2dTZ2M4akpYZ1ljdlFpWFQvMVI1bjQ4NzJYWWNBSlVlUDlmY2ZHOTJNa3NwYzUvQnFqNitwdDhHeGZXcDdlMnp3NnZIeHF3ZGk3YnR5aDBM''@;'; put 'put ''Ym9wRnRvZEMyU0hSYmlKLzlOQ0NvQW1qWVRLTmpCaDVYWWJRRUNqdnpCdHVLVEhKQVJMM0piYUkrQ01ycTREZ2xmNTFlNG5iNGhsMGRtWW51d0dSYkptTmRpaE45WkU5UDdsazhPRGpyR1hEbm5nVzI5blpyak5IRUlMeCtrZncxNkdoYTZnWEkrL1JyS2ZMb003SkhSVnRUWGNYYytjcE43bndS''@;'; put 'put ''VklpOURRMW1VME9EeVpmSmtJT05KdnFycVhIZjJqc3cvdm9yNjFscGZEdWxPUzNJNVJwUVFVbGFXVFNUSURCY1ZleFh3VWJ0Q2g1Q3NGZlZXUzFHUFp0VkxBa2lGRHNCVlBrVlhCWFVWbFY1dGJhbXpIaWlzSlIzZjZVUkI1UXFUd09KckgyM2grdG13SnBZTExVU3VaTU9qUUxvWFdDbWlZNnZS''@;'; put 'put ''dFpQOVVhbTdXR3E2REJSQXJCdC9zbStwNVl5R1d6ZmoydHpiL3h5NzUwQXpqYmN5TStSSHM5bllGelo5NkVyOFgxTUFaU0FXL0cyUWdUb3lZMys5S3lqanJrK09CMVpLQkVybDlXaVNsQXE5UmtGalRRWDJEV1FPanlrVFZUUWhLaFV0dUlXcGd2MHYxQlhTaDkwd1c3a2N1dU5icVBicEFGdVVZ''@;'; put 'put ''UmVxZzIvUk15Y09PQ1ZQTGs5bkVsRkI3TDhKV09haWZUc05PdjI5aGFoWGFib25TaW5Xc0s5a2M2K0F0NVRudnpoWnpqYWN4QVltZldrcE5TdWx6RmYycitWNDBzSllVaWJMOXR6eTA1MDI5VVhJeW56SlpDVWNoNG9pc3VZY2RqUEpuK0o3YUwrRXN1Ri9TVmNNUmkvY1hMeXh2Rk9xaGQwY3Ux''@;'; put 'put ''QVVndlNweVltVHFkVFhVdUorTDRFVncrUXBNOXRCMzFPWDE2Zm8zSmFCV0lRQ0wyZ1dGRWdHWEd4UHFjdlZkTTJOalJkZkxSTEdPaVM5RG41T1A0Z2ZTNzNXM0xtUURsOWp1cFEyMEdIMHBmVm9RbzdzeFVwTTVrTklvMnBQdnBOcXRIbWhxYUxqM1lKQTExUWg5SmZUSFpkUUlkU3JzM2c2b0lT''@;'; put 'put ''ZFNEWFdhcjN6c1BMWVlCVEZicitHWjdFd1lHa1o2Sld3Skx1UzNVU0RoaXpUSGdGeFpoL2FDcmZhNHNPc09temVoTzN2UTN4aURsUG1zOWNQdDZ6SndMcytHLzZVN0NKM005cDBBYWpJT2puTDhJNmZhZ2pHVExEUWkxZ2JDTlM4TmJaTnJ1ZmZNanJDWEQzRTAvK2lMTTBBVG5UelNyNjVBeUNS''@;'; put 'put ''a0psMEhlT2gveTdka1FHWFpIZ2N2YndUSGgvcTJkNkl0UlhGKzFLaklTdW1LdHE5aWFHMnJ4MWJsTzFmU2d4T3Q5azcrbG85b0FtYWRBN3VrTmpPNmkrQjJ2Y1R1NEdmUytjYkxOZ0ZaUDVSTGlOaWtheVJBTXBBQWV3SlBkelRaVHBjRVluVmVLOE5Ec3ZwcGZTelVBdzBYQmVQSUczdDhZVDQ5''@;'; put 'put ''dTJaVzYrMlduVjEydk16blFQVHFmKytJOVR1YlAxM2lvTmxUbkFud0M1R2I4VmFFS2J6RytCWVVvQ2Y3TjVZSlUvb3NvOGtySUhDMFpCMlo1YmRpcndXN1BiNUdaaGxDTE5uMHB6SHBqVUU0R3kyUzZaNlFKeXZnTWNGcGd1bnN5OXhKZ3Vub1Q5MklGNGE0bFN6dW1TdlVDeTdxczNNRytGa2J1''@;'; put 'put ''dDdOdi82cEh0UDU0QXpXd2VQMGIxRXd6aURna082Ri9xLzlKZjJQL2xucjMxWTBNZnUzWDI4ZkU3UHpvT0l5N2pCK2pQMmp2NHZ0ekJncDlPaExGWkRtR0ZxTUFLS3Qrb0Z3WEdGa2hSZ01WZ01GREVjL3BGdDlFZnNTWWlvaEUvOGJsN2QzN3p4WjJmdW52bjExNTU5VldzWG52NTViWGM3K200''@;'; put 'put ''amV0VHhBWGo2cW11V0trR3ZJWWhBYm1sb1NsZTc2ZHJ0ek84MWlPZHdlU1czS29VVFFheHdIWlJnOFZqWGtPZHU4NmxiZnluK1dmK2N0dWJkVk9KcC9YSmFsTmRrb2k1T2Z6NDJrdkpic3ozRW9lWFYySE9MWHhrK2d2N3lPSzRJL2UzK0JPNVYzRTBkNlFYM3piZW16czl6c1lOck8vR2U4bnp3''@;'; put 'put ''SFVCUmphbUFPZ3dubkN4REVsb3NDZ3hBb3htOUJhcVFpbEN1QitEYkk1UlJaM21xbHRyaU5uS2c2NGlwVTRSYXhhOXdWZ3M2RjJjVnZYM1dyRFg1L05pYTIrZjZ2UE5JN0dQZGJZbGdwMTN4VlBONnBpbXJxM2xFNkZFZFUwaTlQSFdvRTBUZzFtdVhEK0xIdG5DMzBhMXR5djcrcVFFUityZjNv''@;'; put 'put ''MlgyZHFiazE0MTg1UHBNWUsxNC9GQ092RXlCZFVNclFZZ29pbGdCYkh1NTRsS0NjcGRFbzJrQVFQS20xMHFlSWNUQ2ZYMVd2bUtMYjM5cXVuOFRvNXJiTUhXajRjU05kV0owQ2RhMnVvME1YVnpLbjVYWnpEUjF2bXgyRWl6ZW4wZERlQldmRE4rVkMvaTZ2VzEzRnRJY3diaDUzSnZzUXdaS3VQ''@;'; put 'put ''bTFuZWdyeEs5ck91ejFWR0Z4SmFSYytLTXBFVFhaL28yVDB3RnJURHllU21YSkxqWEZDTjZPWGRrYlJUL1dyYXh6K0szeVRTcVEwNktLWTBOZFRhcnhXVFVWU3RKRlkvdHdhd0xVdGtIcUg5MUxPZVNseUJ3VHo4dFBxREhDTEllckd5UHhRb2l6WXgvT0JmSzloM3M3ajdZbHczT09xTnRBNE9o''@;'; put 'put ''YU83RDJkN2VyS3RaT1ppcW5qNCtPSGg4dW1xb1grbHZpblJvY2xkV2RrWk9YV25FZHhpdlRQSDhJRVQ2UVMrdlI2bGtFbzZUSnB3aGtlYTFpM2hTaVFrd1g1R3dNQkl6SFdubW1TaXlpQkluMG5wVVQzTUR3UjZnYXJIWDdJd2xXTFp2c1NzSGpwQ21LWkwrdGY4N05EQ1FPRGc0ZW0xdGQvV09S''@;'; put 'put ''SC8yVzk5S3AzMmVjNms3Um83MVNSSEtPMUxuaXYzWUZ0U2RqSnN3MHVDMEdoYUdLU2M3ck1JRTFFYlFaRmNxV0prSno0KzBtSTBHdWFSRVYwbUxTbGg1ajFsT1FJWWZSdUQ0czQrLzl0cHJjL0R6K08rbzV4dFBwbVpUSjA3QUN6NU0zZC9jL2lNTGVBODV3M0s2T3BuSDFVK1RuQUY1V1JCa1dT''@;'; put 'put ''bFFRT0daTWxsZDFCbGJiSlIxRnYyKzIwN3o1TzNHeDZSM3NtQTNHdXJyRGZSMy9nNzQyb2FpK0lmNFJaMExCMVJJSitBQStvN2tBNTdEMTVBN0w4Vi9USE96Qm5FODl5MXlaK0pTL2NkVzBmM2N6Qi8za084WmJ1Szh6Yi8rS2w2SE05QlNXeEFocGlqY1JNWHZCNm5nWWlFQUZnTHlNU21BSmZX''@;'; put 'put ''cWwycGJOQlpVTTNxa3ArdmdZRzdnbWdIYzByR3p1M3RYNTFvVCtmTzFYVHhHL0ZQMGwzZ0VnTmFZdEJkeEJVTFp4VXhSOG5XOENIcVhOVFphekkyTjVwODJXaXdORFJhTFpGc09yaWZSLzlBTWJuUXQyNXZPYWdJOE50SXNRalhseDJrdXJ4MWc0SUJnVjF4Tk04dUFTNjhXR09sK09zd3NLSm1z''@;'; put 'put ''Q1dEV1RWdTE0VkxhaG14R2o4ZERwVFFGSGMvaWQrWFZJNVlhQzhJcUh2bmYvcTVXVzFobmJBQU54MlEwMWVpYzBWcUZHUFEyZUlLNnFsYXJXYTgxVnVxelZKakF1VWZoM0gvR3pyMU5wT2ZlaHI0cjVaNmw4VDh5L3VSQlBjbUVxOVphcFNBOFhFa1FYU3REU002d1FOcnNSNUtJODdqdE5yTXhq''@;'; put 'put ''NWVvbUdWSldaN1V2YXFTRldQZ01MaFQ0bVBOWmZMbENud3RkMTJaakRtMkJ4YURFMjdRdVdDdE5DY3hoZjRFUFlyVVp3aCs4bEhHY011ME9ZcnJ0Mmh6UW02RFJmVFVGbTFXODIycTBXZTJhTE1uUDlkaDlGZThEZG5jNWh2NWNTclJEemEyNGZsV3dubEdDd1kwbGt6cEtYdWtjRmNqREV4SURj''@;'; put 'put ''ZWdWcXhvZ0RlcWxrQTFsVUpqU3E0b01hdldvRE5BWjYzRW55cUJXV0k1QVNkR2M3SkFJUURyS2lBbjR1Uit2M3Mzdm9zMDVJdy81Ums1TkQwcm5ic1YzNXk3bGVmUUpGbk9VeHk5azZ5UHgvdytoYWlxRXdBcmJGckEzeG9NTDJrN0lQOGt4MzJhZmdJTTYycDRRWXFyWkplcEpZT0FtVXUySm9p''@;'; put 'put ''Ni9iQnFlOTRJQ2RJK0NDdHV1dFJPYnVnVTJ0QkpPSFd4WHNuQTVnNDA3Wk1jS3RPUFczaVZQbThya0o0UkRMdDZrSTlhTERPSHplUlhKajR1SVR4WitzQlFqVUpzM0V5YnRUcyt1YU5jd2xjNG9YRGhqU1RiclRsMDc2NlNERERBSlpZdnhYQzdXY0wvMnhrdTRTS2MzTnptS0hwMml6WW41RGFB''@;'; put 'put ''LzdkczBXWlBmcHpENkhyZXBvRGI2MVJ5M01mbWF1UHJXZjlZdVhHd282ak5VZUJ2bTlxcy96dU1zODdXMDhiWHMvNWtTUnNhTkZhdzlmQnhEcTgvc25FOVFFYzBNUE50bG5mUlFDc1JObW9ZUzJwTWt5NDBSU3FHVmd0dkRkcDZWalpxaG03VklHOHFDcjRQWmlWRjlMTGZBNGdxSW9MUXh5L3o1''@;'; put 'put ''TG5SVVRsOTdsdjRmRDZGRG5lbmNkdmFuL0pFdWwrbS94Tmd3SEtER0MvcGtIakovU1Z3WXZrdURFNmQwdGsrVnNKdk5yYzVpaE5idERraHQ0R3pmWFdMTnF2NU50WG9TMXUwMlpPZjZ6QjZaUlBmd21nT2ZSSi9tNEFwaFZSUHFXbitOMmlRZnFBT2Y4S2FzT0tSTzJKM2ZEajJZZm92aW1mWUcv''@;'; put 'put ''c2podVI2aE4reXVoNDNDbUpSTW9ndFdFRUNyUTMxdGlxVlVxSEJTSmxQZTZZZkNVVWZZV1UrNzdsc3I3SWQ4cG5QdGN6VlE5TWlMQmxWbVlpcWcrY2ZTdjRnQzQrRHFrb0RxbHVQYy9FaEtNT3BBVzRUOUxUNWpINGpxeEVxbEJpSTdrVEJvd1RpSGxtc21EdEhFVS9Sd1pZSWVUR3kvNEY5WFpj''@;'; put 'put ''SEl3czdReEhnTHQyWHQ4R3ZhNy94T1BBVjQ0dkFaUER1MDJtUEkzZlArQ0t4blI1WmZ1aUF4OVd6MG5GNkZMZ0wvUzMzOS90OStQNDQ4SmpjdjJRL09CWFo3OHNkaUNOMi9peTNodUZhbDRTUFQ1Zmc3T1kyUjlHL2J0SG1oTndHOFBHSkxkcnN5WTl6R1AzRlpsN0RkWFkyVjU4MDEwc2J4OW1V''@;'; put 'put ''ZHhWaXpGK3B3TW9WRlphaWpmbkNZaENiV290SmE5Vlo5VDZuVHVTWklKR2liRFZ2UGx0dDlwV1NiTFhyZWJyYVRkK1VzOVVvTFd5SHVYWGtaZFJDZlY4VllFQXdGWXJtcTYzS3VlY3N2SU9YVkR4MTJ1aDFlcHdCTndzUDVuM1FvcnlFV0w1T0xGOFFSVU1BMjFtdVV1d3lsc3E4bUtJcHpLbUV0''@;'; put 'put ''OWMxMmQwOW1TVTEwZmxRYUQ1NnBKdG5NNC9UTE9aeFo4SVJTNDNHMTliNXVmSzhqZThCSEVkQWNTQW9kYWpjY3dIZ2UwL1I4L055ZXl3dUY3Zi9TdjU1ZGFyNCtabjgrSWQzRmowWDdQbjJsVGNqeGdmZ3VmQm5vSCsyb1FoS29pUEpsUWFBbmFzZU5Cd3pybEIzWVZXRkJwUm1VYVdrVlJzVkts''@;'; put 'put ''S3hpdFJJSmFwVks5VWFJbGR0MkRJMWxWVUNsZVVTK1VXandTQkMwV1Iwc0xjN0dBbDJ0b2RoZ29BQnFNM3I4V29CNUhJd2VVT2VmbEdLQjQreWJJd3hJMXJ4SStkOWtCL3hnUFBRU1kvejVNaStveHZTUDBhWHJaN0wremRGb1hOM1RyYlJwSkQwRUk5SEQzYkZoeGF6UlZraGlZNk9SQ0U4blR2''@;'; put 'put ''U010THNNL2VGMnVNODl5SEpjaC9pV0pHc2J3ODdIUXFsSWdxbWlKZzNSUlJwTTFiSk9sa1FUR2tWbk5iVkxFWjdsV3hpMjJpY1ZyVU1DaEFMQURBdnB6M1B6VUtzazBxa2RjdVgxb3RxWmVHTnZmQ3BpM1ZMdHBYMG9JWVFPbFNtb3lvZkk0dWp1Sm1yWjlRWm9IaVBhbGtOcHNvY1BsS2lsaVdQ''@;'; put 'put ''RFpSTC9uQXR0bXRMYktsdXpmUTF3eVg1SUs0V3djMXRMSjdyUUdsb2d0UFdWYWpNYzBwYlh5aDZmbDV1ajhXanhlM1A1TWM1ZkJsN3Z2NEt2TjNEeG5tVmovOWgzajREMExNWFBUOXE0dTMvRDd6OVh6YitxM3o4ditUUC81bStzZkY1KzhNUG9YeTlYSUo4QjdTbklOcWROT3FZcTdxaG50MXFZ''@;'; put 'put ''VElhS3ZCRTVzazZHdXFVL2ZuNkRkbTM5cVNKcHIrQk5Gd3RmZ3hXYldOalk3Q3h6ZWZ4ZVdsTmdpemtaUGxtOVZHbGdkMkZrYkNLbTRNbitCOFhreWNtMHllSCtpNVBIUnhwMlhlRGZVL2NQdFhpT0dnZnQ4MjBCV1pqbmJOdHdXMFJVdldGNWJtYkoxTFhaaWJlbjl3Mk94Y2ZhRzQyTkRYWjJ3''@;'; put 'put ''WWNhejlxMzVHSUxuU0dGMktKeFE1YTI4YmluNVIzYmVPOGE3RUE5M0VHeHprTzN4dkxQYWZuOTFqUjgvTnlleXhlVzl6K0svbm4xYnVMbjUvSmozLzRmWndIcHRDMXBJYjRtSS9Ramk3ajkzRFE1QS9taGtJS0VTc1Z5b01xT1hodm82RTlGMElxNXJCYUxiUlRLaFdMUUVQS1pkWmhabGZTd3F4''@;'; put 'put ''RHU2NE9oSjNzWUZSVGE3MDRtUUNNeE9KaU5teVVyUFRYYWRuZDkrUXl0aGRrODN3OC9WU2hlazNJeDE2dFlNVzI1UFU0RTJoa2ZsK2R6Vm9KdXBkNmd4NEhId2xGSHhYcmNlVjZsZTFRUm8remJhbkhGY2YxTHE3SDJjcnBjUmNjZ3VseFRxZXp4ZG5zTmZnTkcvUzRZaldPYW5FS3E1RXJjUmFL''@;'; put 'put ''NVg0QjVJakxPM25qK094SXc4S3d5d2VjYUdhc2NTR1Z1Nm5sblk0NHNLSi9YNHo0M3drbjhDZjNSaVpPcDBPdWFjOXlCQmhRMkoxOUo0NTlMdUJCMytsYVNneDM1LzdlQ2ZqRjQwd1VUM2R5L0QzTThXN2pjNHEvZjFyMC9MemNIb3NIaXR1ZnlZOXpXTUpmSGdPaDQreVZ4dmxNVWJ5YjU4SU5K''@;'; put 'put ''dnVrZ0hmNVhNT2kyUE9saEozMWYzallXVmd0bTBlWTM4Y1phUit3djEyb3lGY1R5ZnR6amtoMldyRmR4UFdiTy9QNnpaRk1jZC9MOG40ZWphVERsdlo5THE4RGFiWnp2dXRZbnhkY3pCOXRvL0NyeFNwQnBORlRyQ1JDV3NRcVJBM1p3OHllWUpjZVpXU04wb2ltckZhcnpXcno2UFY2czFNdDFn''@;'; put 'put ''V1UzQXVYOFBOYVBLNnNkQ1lxaWVCeWQzVDAxWS9rNi9Kc3ppWjdvLzdmN3YvQ0p4cTZPNXZyUDh0SzlCdzJlNk1SajdKQ1BTblBkNTRNQW4wSFVBSmZ6b211bnFwbzlaaHFhQ0lKaHpTQ1dnU3lWQWRBKzFESlpGNjJqYkxReG5UUmNTNDhSSjREdE1BYVJUVVJWK1U3R0d4ZzRxdlYzR2RwWmFI''@;'; put 'put ''Y2pYbHd3ZElPQUU2dDFBdVZkaks5dDFuZTR3U1VlK2piMnRvU2JYR2Z4d2o2YWJPelFxeVhqekdlaUcybG41cjE4dG42aXRLUnlTQTlaWXUrTkNWNTlRcCs0TCtTVTVQcHNWdGJxOFkyNVNiVGZHV0dCWjh1NUNoTC9vQ1BNdnZMSjlsZi8xRml4L0g4WE1vZnhpVCs4R2RGZlUvSWZiRWF2YkJG''@;'; put 'put ''My9OU1g0TFZYT2ZoTlkrc3IxL3FlMHNKWGRGYzNCK1JjOUJtbkxYUkNsNmhHbW1nelhOQ05XMEViU1RmRUZEc3pVak8zejBHUEtzT1B2bjdzd1lGMGFqbHNMeVBpaytNQkNWYWdZUFM1Y3VOYlJrYUVlS1h1R2p6eVRxdFc3Wm1rb0oyWVpMRG12ZDlYdXI0NzJWb2lrWUd1OTNlYW0veDA0d0Zu''@;'; put 'put ''MXNLVTdsTFVuemxDM1BRNWl5VlkwTWIwbFFlZlRRemxQdDljYTdLNU5xelJmbSsvNnN6bVZ6NzhnYnVtdmNiUnZKK3d5UG9XTG16QnYzMnpyeCtlMlFCbGZNNTRncjA0eTM2eXJxeEFHMit6dXNxZ1UvUld0SjZOSjRjMFlIS29NZjBqZys1QW9RU243aUVSRkh5bmxPUnBNMHdaUW1JMDZpVXc0''@;'; put 'put ''MG1ONjNHMGxNU2xHdFkzVEtkV1NYV1dsVFVPc05weWtHSnJpNzNnbHpoeXVpbkErakwyOERyVW1tTTlpRExnNmEzeGQyU05McGRJQ05yTUZHcVFHTVdRZG1nNVJKT1dpNlBWS0RJcVJRck5CWmFzSWI0T1dma0d3dFlkcGRYYnNvQWdBK1c2MEV6a1hVK242L05GNmgxR1h4ZXQ1dFpUeHMzcE5x''@;'; put 'put ''Y1ZNMGlONktjV24wNnYwVzFXcnNod1RvRU5uQkw5a0hKd05YV1NiczJHWEVoMlJwczNUWXIvaTdMdUM3amUxYVg4VDF2dG92VWtsM0VhbnVaakcyVlpPekxaZnlvTkYrYXl0ZzBsN0VucGI2NXQyaGRNTzhMZUtNbEJza1BDZTBGSzZwQklTQUlNYWtQTmhHMVdHdWxEaU42Vnc2YTRFd2hVRWtE''@;'; put 'put ''TVlKYXNhcVI5ZkFhR2o1UUxsZW9pRkxKdy9uTFBKd3ZjWVp3dVM0VldLWFM4NDZvdEp2cHZjNzBuaWVoak1JUkRsUFhkM2dnM0orSWFVUGFVS0RGN2F5dk14dXBDN3kyU2pZUUtBNXdtOEQ2SHBPMXNhUGU3bk80TmNZNnUvRS9MaWx2ZTRldjBSWnR0emI3N1VhRGZkdWxKbkdETFV1TG4vU00z''@;'; put 'put ''L0M0d0pIMWUwdGlCeitFTmxXTTMzQjc5OGhua0pRSE00L2VCSjVocEZrVGF0QzRqRHkvUnI1V2g2ZFhjVG50MFZ1Y3JJUkxGc3lnbThxTTRVMUtHeVpkbGpNREpsZWJxOGpEa2piRjlDaFl4VHg2a2NYOG5TaVo3RGViaUVKd1luNE5VZUdVSlZORG15ZGdsaHppYUFRTDNLS3RMcHVXYlpRWFpL''@;'; put 'put ''Vmx4ZktTOWtrNUFETjBhVTBXYThiTEYxZklDVml6d3pycjJ6VWkvcCsxZDZTRkFwM1F1UDFEaFRnTDhGZk5KajhyeStORzl4QmxQdDlhWDVKdm5jbGthUElZakxjWDZPNFdrTHN1b0M5R2QvaUgzR2NCei9XTUhyUFM4MCt6NTZ5K20ra1pZVW5QMEpiUU9JQUVOd2gvQkcxbXBEWVdkSmEzT1N1''@;'; put 'put ''MzRYWGk1K1J4WVB5N21FNkFpM1FDT3M0SWF6TWp0Zm1UalcxNGZRanBCeHlwcHBuRlZaVVZHakJDQlRXUksrWTNGWjlYbzJwenZ2aGNqRkVrU1poRk0rblA5YzdQWnoveWtYUWFtd09aQUo3Si9YZzhNLzVicWY2a2h1WEVPNUlObFJXaWlrcDh0VlNScjVPS1M4M3Nzam9zZ2tVa0RZcHI1akpU''@;'; put 'put ''VTVrNWZGbHI3cHRZNzgvNDhYTHVtNjBGbmVraEJzTU9DVDcvV1FKRDdnUDVudVFEb2JyYW83d3ZuTXREN0x3NkpENUplSHQ0cmlCNnVUM0E2b1dpdVU3a1kxdHFkRzZMdWM3bi9TM3FFNmdveGhUSng1aU9TSG9oMlNRTHhobnRjcC9Ka2N0UXVWZ1lya0huUzJMdm0vdzV1T1phYnRPQUdTaDhI''@;'; put 'put ''ODdVZ0Jwb3prUCtaZ3MxeVY5dG9hRWwvSEp1SFROVUc0ejFGaFBMKytVS2dxMFFZNWRaSVEyekY5U3BDRmNSMWw3ZTk4WDkrNys0RDNEQU9EdDVPcE0rbmVaS3d1S2Y3VnYrNHY3MDJqK1RwdWxiTTVuclVranlwd2hBR2NBbE9sQVgycGJNV3JGYVJWM2dUSnNCVnE5VUsxYXFORVNsa3YwVmxX''@;'; put 'put ''S0ZVT1N4Nk94MHVSRHE3T3BNeEtLdURsZDdhek9NNVRCNGZCNXZOU3g2bytPN3dNTUx3dCt4aVpranJnWUliWEtGbGR0Ny9lZzRTNDBmdmM3ck9qa2lLUU81cTR0UzVQSDFHMnV2K25ySGVkTDhXRS92S0ZVTGlyUG04L1ZZa241d2tKMXJUTUxkcjVYZ0JNK0hwdWU2d1AyZDgxSmZ3TkdEREhk''@;'; put 'put ''akVvNit5TnZuM3FMNTAxSjcrcnlwYUs0VDhseUF1eDh1TzljVkRIY1hPTzdXODdsWW5UMWJaMXhhNTMwbGVNL3pvZWs2ZC9CMUhrTlNEbU9TMWVnUDAveUtXTFNwVWFFVTdUVHJwazRIYW9lVzVWZlViNWxmSVlyTU5XN0pld0V1SmIvaW9wM0s1bGRjcE5lVytSV2wvYVQ4Q20rd21lWlhHRmgr''@;'; put 'put ''QmZmSmwwK3c4RjNLYlFRa0hGbVowSlpMdHZqb1pSZThvK0NQZHNZRjkrYXNpOG9ERjc2MWdKOWRjRDNKY3R3SFVTN1oxSUZGVldkVG82QVVONmJIS0MrUUhpUEJ4dmFISEovdER6bysyeDk0ZkxhUzQvTUVtaTh0UFFaZk5Ka2Z2M2hncW15ZVRIaWZiK3NVLyt5Q3NpUmJSdWx2dWtEU2Y0RldU''@;'; put 'put ''OGkwQ25SK2VBdGFQUy9US2xiSDh1Zk43cWh3b2hlU09scmhqcXpWSUJtcTZDV2dVdTRmREVBenk2OW0wVjV5aXZvNXBVUXRqWm93Wlk0UXZCL0V1UjNMUjlWR3V5aVFjTk1sOVVtMmJHcE83eGtnK0ZCSkx3VzlKRnNQNjNZaUtxUm9HcUdSbXJMc0dzMnlKMFhkQS9SMkRieGdMSE1ZOWRYMHlv''@;'; put 'put ''M1FKb2luOGxkd3NIcUtKS3VuQ0tOWGtyWVdyQlphelVTakRwb0kwZVFqazhxMFRBbEtoZksyQ2t6clZ6VlhnekFETU5QNlVVRlFMS2w0RldsSmRERlk2S1BXa0pzdTFpblpXcjY5RkdFczZpWlFXRkViTUl6Q3JNckRDdENpTHBNdFFvdTR0UFREeWtnQXQ1WGljSGVoSHNSYjc5V1ZSaExGOFdo''@;'; put 'put ''eGtVakNvdmJ5R0NLN0U0WGhha0xDMVd0S2NKWFdzUHlhNmEyTFhHOGx2U1c2TGMrcGlPUnpLbzZnejVYcTBjelBmMmZlejM5a3VqajM0eHY1bkkxSzlGcEpQZ2JyeStMNUxLWUFiVzR0bHhNQ2V0bWpaZnNHQ25FS1hMTVhTZmU1ekxQN1hEeW9OOWxsQnQ1VURTY0wvQlFMYWVtR0xQbCtlQlpD''@;'; put 'put ''S0JoSTBNUGpxWFY3UFB5K0xKWkJzY2xwcytuNkYvS3B5ZHZtdGVhOFo4TnkyUWVrZTJESUUreldGMTJENU14d05sanVmVi94cFRCU3pTbXNkUTVzSUM5Nm16c0lhalJnUEtveEZyeTQ2TFpHNmFteThOUlVwdTNtWm5udmRyMVVrRVJyZWJaeWFEdWtOdFRIbkMvNktlUER2dkJZRngrR1NvQUtE''@;'; put 'put ''eTNZYkdiMVVCdGQxQnNMaVFxMk1abmpEdW5pdXFKTWthSGNXald4dWNJb2I0NHlYS2QzNVRCNjZPSDVRM2l4Qkk5NVBSSGwzYnNaTG9yb0owVTVReWZrbkNGNC9wR1N2andXZEY2T0JXRnhQeXJxdXllZmIzUVkzVmFDeCt3T0c0YnIvWklPK0ZUSitMeUdoK0w2RXRjQnIwZEZmZmZJZmNITy90''@;'; put 'put ''c3QrcDZSK2xKZjUrZUsrcDdJOTFXalUxdjBQUy9QaTlYRERHOVpiVGkxM2JYVTUwR3JER2pkRmZONXNDSW1zcDhhRlhaR1ZGcFVVKzc2TjVWYktLcjQvdExtTW0rcEhtQ0duTC9FKzJ5czlENmJCOGNPOTh4a3U4bjVPM2ZzS0Q5R3ZzNk13RWtRY2xLcU1wUEdTRVJFOTJCM2RxYm44Qmc1djJQ''@;'; put 'put ''SG5kSVkwL2dnZVE2c2Nxbktvb0xRT29zMG1GUFV6MUZhRjFDTnFyeEN2c3BDMmpTemx4NlphZ3liWW5WMU1WTzRZYXFGVERmQ254WUwvTkhFNWxsQW4yTytIUitiNTRJMUI1c3JPSGFYVkd0SU5TTFR1RnF3c3hxUkxqWnFrRDRIRFcxVmlRVmdIWXY1NG1iaGtpcEZpci9qNHNhK3ZrQUFmbXJk''@;'; put 'put ''N2xyNlE2YjUzNEcrTnY2ZzFzMXJIK1l4SlgwOTZtRXJDTmZBWnJRVVk5SktWdUhCS3JVQXBvdU1Hd3Ywa3hsZS9lYXhLS1JxRWVrN0dZcWM2RGYyTlZuNjg0N3p4NWdYeWlpNXpObTVEWkYrL0VIeUZkajVNSnMzQWJJQWE1aHZ6b1R4aEJvTHJFNE56bktWM2V5MEtGLzhRb1FacHExYVFKUXJK''@;'; put 'put ''ZVJBOUlzVENsbGQrYm9FWE4xazAxdXFUYldxa0c3V1hQUTdHVFFZdFRVT2ovZ0IrWjJmeHlCK2pkVzRpS2lPclVxckJJeWNvRmIzU2FNaFh4dGpGZDFlcWRnRkQvR0tsNXMvYmpqTmFHOWI3cTMxcDlZZlJ6WEl3MGF3MVpTcHVQUGt4eEkzZmpuQjQ5eWZXbHR2OTczTC9hVE1aNXJua1RmSVBC''@;'; put 'put ''S2xjSFFMSHZrOW1VZWlGSHF1aUw4VytoNEZtL2xpZlkvaTBhSytlL0o5RCtQWkVoN0orNTdKOXowTWZJN1ozdXZiYWJ5bU9OYno3anJYWWQ1ZGwzU1lkcEN4SG1hM1QwaHR2djV1anNmMTNzMUpiWGc4WVRVL1RqVTZ0RVU4NFN2NWVFTDFOQ3FiVTVwQ0g5OUNQbnd2bnl1UVdwSHV2RWR2RWcy''@;'; put 'put ''T1hQejdJTDZmQytQSXVOeEg2TG1FUGdKNU55ZjNHY2RmUnVmSUE0QXpuVThCdWt4a25yUVVmNUdLYmRNWHFmREt4MTFQY3l3eXlnNThMcWlmcDE5djBWUkx2OTZDM0U2LzM4THM0Tjl2UVgxMCtLdm9KZklnUUVFTFVFbnhPa2FTeXRjeHdqcndiV3dkRGFqbjZZWWFJaStsbWwxK3c3N3JoeTNH''@;'; put 'put ''dUtHVVRXRHNiOWRaVDYzSHdHNWMyN2dpNjVZTGZHdUx0ZGFYcmh2ZlNSN1UrZm02MmZxL0NlczM1TmRQVVVyZUNBWXMvQktleEErOHQ5cXdCOGJIT3pyR3hqcSt4Tjg2eGpuK1RBSmVqYUw5Z0J0Z2MrbmM4UHBOaHVONlRDOUpFK2wzTENrT0ZIM0gwaURLd0d4djh2eXVEaTFXMXZDdlFGSmpW''@;'; put 'put ''Uld1cUZSVkZIOXRrckhhSUZSV0NzdDZqVTVVRkgvYlV1d2lIZGszSi9IZUl1MHRTTis1MUYyMlg1bHZYU3JwQzRwZmZHb3FtWlMvZldscWNXckgzR3d5azB5UGpiUVB0ZzkweGN0K0U1UHBEL2dtSnNlbXZ6MUZiUjN4OS93dFRYaWk2SS9jV2ZrN20rNS96MS9lVlBhTG5BcGY2RVR2WFl6aUN1''@;'; put 'put ''Q2RTcVI2Q3JUcjlzQWd0Z0xzZkErazdyNDc5YzQzZEU4L3E1ZnV2SXhpdmR4T1lPMzhDYXNZaEZZUFBERDY3Tk82Yjd6Q1pNVWIwcjNUWVRTVG5LcTNFd1c5dmFJUzAyOHVVSUFBSkFwaFJZTkpCY2FWdEw0bFg5QlVoU3NyWlpjTnMyMURiWUhXRnIzQkN6YXIzdWl0QnZ1MmNJK1dId3hhYWh2''@;'; put 'put ''QjJ3QXBWTlRTakVENmZWRk81ZzdHMytiWFVtYyt2R0pkeWhMbHRrTjFCMitia09xWXBqL2t3b25jR1pXQTUzSXZPajR5MThldXFrNGVIMC9WYWUyTzFQQ1JYbGJFdERpV3FtOHltMUxaeS9qMy9PQVdVb05QQUI5VVBRVktYVHZqZXZ5bS94T3NXSmtxT3FEcUNNQ1ZuWG9uRWRiVzZBOHEzTHZH''@;'; put 'put ''N3d4UlAyTXpWaXRKZTVsN3pON2pIUnp2SE5qeUNnNHB2NFRacTdoZGlwV2N6ZWVkQkdpc21UMHZ4SnI1OC9QNTUrTE54Yy9QeU0vUjRldUtueGZHVDZFUEZUMi9NOS8reUJYeXZTbno1QWFBQVkxOXFKOXBjUnN4d0tERUhKTWhVYkRGZkp0aGNnTzN6WW9CSTlsbS8xMEVIOGxPMjFFRUlzbEV1''@;'; put 'put ''NmMwdDQ2dG1mb0YrRjV3SmJxL2FDOWZ5Y09rK21EK2JoUDBlWFozazR3TEViMTdYcnF1aVg2K3ZoMCtWNVorcmx5YlFmOFAyeitjMHdBQkFBQUFBUUFBMzV2bWhsOFBQUFVBSHdQb0FBQUFBTlBCbllZQUFBQUExTDZtOWY5Ui91MEVZUVBGQUFBQUNBQUNBQUFBQUFBQWVOcGpZR1JnWUQ3Njd5''@;'; put 'put ''WURBOHZFLzRIL1cxZ1NHWUFpeUlEUkVBQ2xJQWFoQUFBQWVOcDFsRDlNVTFFVXhyOXpYZ2VpZzhIQlFTc2FEVlF0ZjZXQkttaHRKS0xTcGkzUG9ERmF3OEJrMEFnSkxrWVM0OFJBUXVLaUF5UWRESEV6Y1hGd2N0REJSQ1lIblFoTGJZaVN5QVRSNTNjdUxXSmIybno1dGUvZCsrNDUzLzNlbFhY''@;'; put 'put ''Y0JqK1NwbzVSamZCbEhvTmFRRVRIME82RjBhSHpPSWtTQm1VTTU2bDJlWTQremVHaU5DQXRrNGpqTjY3SVFyQ21yOUVub3ppb2FYVHBWWnpRKzlSMXhNbCt2Y0U1ZWNUc3R4dlB1UnpUYTg4aFU3S0pROTREdE9vdkhOVlh5T3NpeDI2UWs4am9LUFdkL3o4amcxWCtEbk9OWjdpbFVReDRJOGg3''@;'; put 'put ''U2tWNC95a3lqak1jd3pwMUNtMWF3b2c5TTNRR3pmb1dMYnFBL1RxTnMzSVBPZGE4U1haSkNUMmFEZjdJSlNUMEhFN3JZL2phaEU2eVIzMTB5aDNPZmNUblpwSEdNaEpZRGo3b0VReGhCU2x2R2ltN3JnL2RlTi9teUJONnVJWTJtZUM4TE85M3M3Y2tqbXVFdmVYUXBNb3hNNGpLQVl5VDdmS092''@;'; put 'put ''alppMksxNWw1NndSbm5CV3ZhZ1ZkNGc0ZW9hUndRL01DQnhkejFHdjdhOHFxTVFTUFBQdk5zaHJBYWZ6RC95SjFYMDl1SlV4YnRxNldFTU81cC9PMlgrMFdlOWdHdk9xenJ5UHBMV2kvKy96RGY2TjBTV3FCWFcxTC90WGJVc0Y4YXM4L2VmekQvejJXajkycHJWdE41dC9Rb3RSOXdYNjFmbnVL''@;'; put 'put ''Zm1oOVcwR3kxcnR0OWwwcXR2clBjTHZZdVNBWG5aK25BWlpBNHNoNWFGYlRJdjBvMW04OWI2cTZINXl0NHFERFVnRmdwelhlYldzbE5EZStlWXB4cE9sVE5Xb2UyUGViUUw3UjF3T2JROU5QL0s3NExsc1pxMlZ6TEw3SmtLelB4WE1rVWxxUGRJNmo1ZVE1Q3JQTE9hTlo2VzE1UjF3Q3R1blRm''@;'; put 'put ''WW9GNENta1RjbTBDY1o4S2dPMU9XeUNXeWdKczZ5N09DNTFKb0RoM1NpeGFxVFJlRG9zdUh4N25jMXpwZkgvNWY3Unp3cEFBQWVOcE53bDlJR25FQUFHQXovNVNlcDZYcGVkNmR0L004cjd2VHpwKy8wMk1NMlVORWlNVHdvY2VJSVJFOVJBOGhFVEZpaEVoRVJBOFJFajZFakJFU01ZYUlSSXlJ''@;'; put 'put ''aU9GRGhNUUlrUkV5aGd6cFFTU2toNzNzWVh5ZlJxTlovcWVnT1JuQUJ0YTBxdlpFKzZCOUhuUU9YZzYyZFRhZG9FdnEwcnFTcnFaSDlFdjZndjZQWWNhd1ltZ2JrOGFjTVc4OE05YU43YUg0Y0hhNGJFSk1LZE8ycVdwcW1hRjUzcHd4ZnpiWHpWMkVScWFRWGVUR3dsblNscXJsQWJXaFVUU043''@;'; put 'put ''cU1WdEdVMVdBbHIzRHB2L1dBOXRNVnRkeVBZU0dua1pUUTUycmRIN1F2MkwvYW12ZXZJT0pwajNGalZPZU04ZG5aZElkZUJxK3hxWVRZc2dXV3dDNnp1SnR5U2U4NTk0dTdoVVh3VjM4UUxlQVgvNVVFOEs1NE56NTJuNWVrUlF3Uk9TRVNjeUpJcE1rMW15QnlaSjB2a0JYbExQbEloNmkyVm90''@;'; put 'put ''SlVoc3BSZWFyaXpYbnozcEwzd252cmZhUnBlcFhlcEhmb1E3cEluOUhucjk0eERCTmlYak5UVElxWlk1YVlEUE9SNmZtMFB0U0gremdmOE1WOVIreDdkcGxkWjdQc1BsdGdlMzZ0MytHbi9jQWY5Kzl3ZTl3eGQ4cDk0MnBjazN2aW5nUEZRRGx3R2FnSGZ2SXkvNVcvNXUvNEZ2L0V2NHczeGp2''@;'; put 'put ''amZVRVd0b1FEb1NSVWhDdmhYdmd0OUVWRWZDTXVpR3ZpbHJnbkhvbW5ZbFdzaVQvRXR0aVRKcVVyNlY1NmxEcFNQNGdFc2FBUWpJWWNvYzZFWmdLWk9KSW41Vmw1VVY2WHMvS2hYSlRMOG1VWUM5ZkN6WEE3L0FLR0FBNGtvSUlFbUFXTFlCVjhBamVnSGFFaTA1SHR5RFcwUVFEbjRBcmNnTHN3''@;'; put 'put ''RDB1d0FyL0RCdXpBdm9JbzJIK0FrbFEybFQybG9YU2plRlNJQ2pFNkJtUFRzWExzT2xaWFVSVlhPUldvY1RXaHpxcEY5VXc5VjJ0cTR5OU1NOG1nQUFBQkFBQUJQQUJnQUFvQVFBQUVBQUlBS0FBNUFJc0FBQUNEQWJVQUF3QUJlTnFOa3MxT3dsQVFoYzl0MFlBYTQ4SzRZR0c2TU82RWdnUWlM''@;'; put 'put ''alZzRkRRU3dTMElBcEZhTGNYRXJVL2kxdmN3eHA4WDBJMlA0RE40ZWp0VUpZMHhOK1YrZDg2Wm1kNHBBSmJ3Q0JNcWtRS3d5eWRraFdXZVFqYXdpQk5oRTJXY0NTZXdoanZoR2FUeElEekwrSWR3RW5sbENLZVFWZ1hoZVJSVVRYZ0JEWFVyL0lRVjlTYjhERnQ5Q3I4Z2Fhd0t2MkxPV0EvNTNV''@;'; put 'put ''VGFzTEVERjVlNGdZY0JldWpEaDRWN1Bubll5S0ZJYWxPMTZPdHJ6NGhjNSs0d2E4VGNDMlJRUlpkNW5xN2tZcWhkUjR6MU1PYXBSU1ZIbDYzWE5vNnhoeVpxcExpOGphbk1PSTgxNVdudzVERSswTzlqL2VqMm53NE5Say9wY3NuQlRROVlvOHM5eU8xUWE1RVBxUWZhUHZmT0g3TUk1dWZ6VkVh''@;'; put 'put ''VzYvcFhaVmZYZGFLcUdXb3V6NU9ja1dUMXFQcU1qam41aVNmTGZkTFQwVGY5N3BtTnZXV1RzVGIvYjRIRGoyWlNsUWxWdEdweEZiVldZdThjdHZpN2lVTDA5VXM0cDYrcnEzb3kzVXBVc1k0cnZ1T0Fpa2ZQOEF2Y3ZYaHpBQUFBZU5wdGsxZHNIRlVVaHIvZnNYZmROazd2dlZmSFh2ZkVLUzVy''@;'; put 'put ''eDdGakp5NXg3TVJKeHJ0alovRjZGOGE3Y1d5NkJBSWVRUERDTStVSkVMMEtKSGhBb2xmUmV3ZlJlYVFINzl3SlhpVHV3M3ovR1ozem56UDMzaUVMZDUwYllCNy9zMVNiZnBERkRMTEp3WWVmWFBMSXA0QkNBc3lraUZuTVpnNXpwK3JuczRDRkxHSXhTMWpLTXBhemdwV3NZalZyV01zNjFyT0Jq''@;'; put 'put ''V3hpTTF2WXlqYTJVOHdPU2lnbFNCbmxWRkJKRmRYVXNKTmQxTEtiUGV4bEgzWFUwMEFqSVpwb1pqOHRIS0NWTmc3U1RnZUhPRXduWFhUVHd4RjZPVW9mL1J6ak9BT2M0Q1Nuc0xpZHE3aWFtN21CTzNpZjY3bVdwL21ZTzdtTnUzbWVaN21IUWNMY1NJUVhzWG1PRjNpVmwzaVpWL2lXSWQ3Z05W''@;'; put 'put ''N25Yb2I1aFp0NG16ZDVpOU44ejQ5Y3h3VkVHV0dVR0hGdUljRkZYSWpER0NtU25HR2M3empMSkJOY3pLVmN3bVBjeXVWY3hoVmN5US84eE9QSzBneGxLMGMrK2ZtTHZ6a25sS3M4NVVzcVVLRUNtcWtpemRKc3plRlhmdE5jemROOExkQkNMZUozM3RGaUxkRlNMZE55cmVCenZ0QktyZEpxcmRG''@;'; put 'put ''YXJkTjZiZEJHYmVJKzd0ZG1iZEZXYmROMkZXdUhTdmlEUC9tU3IxU3FvTXBVcmdwVnFrclZxdEZPN1ZLdGRtdVA5bW9mVDZoTzlXcFFJMS96alVLOHkyZDh3SWQ4eEtlOHh5ZHFVclAycTBVSDFLbzJIVlM3T25SSWg5V3BMbldyUjBmVXl3TTh5Q004eWtNOHpEWGNwYU04dzVNOHBUNStWcitP''@;'; put 'put ''NmJnR2RFSW5kVXFXQmhWV1JMYUcvSFdqVnRoSnhQMldvYTl1MExIUDJEN0xoYjh1TVp5STJ5Tit5OURYR0xiU1NSR0R4cWtLSytrUGVSYTJZWDRva2toYTRiQWRUK2JiLzBwL3lMT3lQYXVROGJCZEZEYUhFNk9qbGtrdEhNNEkvQzJlZTlSamkrY1ROU3hzemF3Y3lRaDhiVlk0bGJSOU1ZTTIw''@;'; put 'put ''eTltMEc1ZXhsMFV0bWQ2eERNOTJrMTYzSVcvdzVzaFlSam9PSjJLRDF0T2FqUm1wWktCUkdiazZ6UWRITk9oTTdPRGs5bWgwM1J3RExwTTFaZ0xmeW9lTFNtdERIb3M4M1dicEtTWnBzZWJKbVdZMCtORTQ4TTVxZlF6MFBPZnlWS1prYi9IMjhHVVlVRnZPT3FFVTZORE1mdHN3WGlHN3N2UUU5''@;'; put 'put ''UGExMjltbkhTUjN6OTkycFBUcDUyZU9GaFc1YklzV09uckhYYXNxV3MxYnRCckhNWmQ1UFZHb3JaamowWEg4c2JQcTNSZGFhaSsybU9OeHdhUGpiNCtZelRoSXYwMldGSVM5Rmptc2R4amhjZEt3MkJUZGlqbEpOeWdvcWtoeHlxMllzbDh5NTNGU1BmdXAyV1JOZjNaNlRoZ25SL1FKTHJkMDdM''@;'; put 'put ''QSszMk1OdnVhMW5sVytqUk1jaklhaTdqSnVkYlkxQjVGYkNjdlludnFIN2RsdHlFQUFBQjQybVB3M3NGd0lpaGlJeU5qWCtRR3hwMGNEQndNeVFVYkdkaWROa2t5TW1pQkdKdDVPQmc1SUN3eE5qQ0x3MmtYc3dNREl3TW5rTTNwdElzQnltWm1jTm1vd3RnUkdMSEJvU05pSTNPS3kwWTFFRzhY''@;'; put 'put ''UndNREk0dERSM0pJQkVoSkpCQnM1dU5nNU5IYXdmaS9kUU5MNzBZbUJwZk5yQ2xzREM0dUFQNGNKV0FBQUFBQUFWaVk5bllBQUE9PSkgZm9ybWF0KCJ3b2ZmIik7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcztzcmM6''@;'; put 'put ''dXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFGWHdBQk1BQUFBQW9PQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFCcUFBQUFCd0FBQUFjZktUYkxFZEVSVVlBQUFIRUFBQUFUUUFBQUdJSDFRZjhS''@;'; put 'put ''MUJQVXdBQUFoUUFBQWNmQUFBT2RqK2hmWFJIVTFWQ0FBQUpOQUFBQUNBQUFBQWdSSFpNZFU5VEx6SUFBQWxVQUFBQVRnQUFBR0JvcWEzK1kyMWhjQUFBQ2FRQUFBSnNBQUFEbm5kREQ3RmpkblFnQUFBTUVBQUFBREFBQUFBOEVkOEJ5Mlp3WjIwQUFBeEFBQUFHT2dBQURSWjJaSDEyWjJGemNB''@;'; put 'put ''QUFFbndBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFTaEFBQU9Ea0FBRzA4c05HeU5XaGxZV1FBQUVyQUFBQUFOZ0FBQURZTGE0WUhhR2hsWVFBQVN2Z0FBQUFoQUFBQUpBZUVCQ0JvYlhSNEFBQkxIQUFBQW9zQUFBVGFzbmc1UG14dlkyRUFBRTJvQUFBQ2J3QUFBbnB5VlZmYWJXRjRjQUFBVUJn''@;'; put 'put ''QUFBQWdBQUFBSUFLUkFoNXVZVzFsQUFCUU9BQUFBWVVBQUFOa0wrYUdTbkJ2YzNRQUFGSEFBQUFEb1FBQUJpR1hGajJLY0hKbGNBQUFWV1FBQUFDQkFBQUFqUmxRQWhCM1pXSm1BQUJWNkFBQUFBWUFBQUFHOUcxWW1BQUFBQUVBQUFBQTFDU1l1Z0FBQUFEVHdaMkdBQUFBQU5TK3BPdDQyZzJN''@;'; put 'put ''UVFxRVFCREVFa2YwTUxQb2Y3eXBML0RvZlhmVi96L0FJZ1JDMFRRQ0xSNmNkRlJralZzbzdIelR2MUQ0QjdtNDA0OERPbG9wTmx2NjQ1U2VYWExUNTFzWHpTYStXM0FGM0FBQUFIamFqVmNMYkZWVkZsMzdmTzVyM3dNc3BYeUVVZ2toVUFoV2hqQ2lDS054bWxwSVJ4bXNCQTBZTlk0ZmtNOVVa''@;'; put 'put ''S2JHeUdjVXpVanF4SkdLWkVMUU10cGdCVVRGcWtoZUNQNklJZmdKRWl3RUsyTDlBU29hSThwMTNYMGZjRXY3WnV4S1YzZjNPZmZjcy9kZTUrM3pJQURTR0lvcGtNcXFtbG9Vd05HRE1JVGxINEdCbmZPWHVua29tWHRqM1J5VXpwMHpkdzVuZy81b05KNFJzZVZ6YWZSREdZYXJ4MklZYW14TFBC''@;'; put 'put ''b3MwRlVsYUVEQWg2VG5RajR4VUgwZUphY2hxQW9ieUI0VHNRSy9JSlNCTU53RzU4a0FhVU1HUGJpekkyRTJiQTczaHZ1UjV5ZjhKdS9JN202OW4yQkFwLzgvQy8rZGQ0V092Q050ZVVmMmh0azhJODNod1hCcmhMT2Y0Ty9PQ0YxMml2RHpzSUZaTWhqQ1RBOW50a1lRQmhXRXhRV0V3MWpDNC9k''@;'; put 'put ''RWdQRkVDaGNUQlpoQUZESzNFMW1wUllSZ0tlN256QWNJejR5dm9QOUZRdkFTSVhpWk1IaVhjSGlmY05oUGVIeENCUGlVQ1BBWkVlQW9rY0kzUkFvbmlFSlc3eGV1RmhKcEtaSWlGRXF4RkpOTHBJUThrSlZOYysweFZNa3dQak9LRU4xM3ZHT2pPN2E2WTZjNzlxZ2tDbEJGRktLYVNHTWFrY0Y4''@;'; put 'put ''M01VVm9rZ0NqU1RRU0R3ZXhrck9ieVFLOFJoV2MvNFQrQy9uUDAxa3NKRklZUk5SZ09lSUZEWVRCWGllU09FRm9nQmJpRUswRW9YWVJxU1JKZExZVHFTeGcwampkVUx3SmlHYW5RQUhpQXcrSnVLOEdNMkwwYnc0ell2WHZIak5pOU84T00yTGsvN1NuL2s2Vjg0bFJ6bnlYTFdDR1JyT0dsZXd0''@;'; put 'put ''bU5aMC9ITXpBUm1aRDRXNEsrb3c1MVl5Rm91eFRMOEEvY3hDdzh3K28yTTZIbFc4aVZXOEYxV2JqOHI5aWtyZFpRN09hRW5xNGp2TFluT2w3bFh6K0ViVXNlNGUxSmZXNm03aHZEN2J0U3FJOUg1eUR2eUpYR3NteWVQNVQwYlgrYis3Z3UvRGcrRUQ0VVBuVDJTTzVGTllkUHAvNzVJakh5dXp4''@;'; put 'put ''aVVxaVpFTldGd0RXRnhMZUZ3SGVFeGt3aW9pSldjRTZsQlZBMUcxV0RRUWdUWVFBUmFhZEZLaTFaYXROS2lkVFU0UkZnY0ppdzZDSXVmQ1krVFJDQzlwVGZyMmtmNmtQdEtYM0pVVWRHS2lneVNRVnpmWURUT0lUTG9UZlJRcFlzcTNhalNiVTdwVnhCSnBUdU5KMGpFazFLbDI1elN6MmpjYVZS''@;'; put 'put ''T28wcHBWS2VVSG1zOFZ2Y3JSSDVkUjlFNjFhekpSUmdwMTJxY0tkV3ZWZjJhWE15UmlrMHU4a2pMSmhGL1V0RldzNUNTTVhJeDN4NTllbFV4d21tczE3V01heVlqYVdRa3EvQTRvM2tDVDZJSjZ4alIwNHhrQTA5akszZWI1UzUzY0hlSFdJTU83dXdrZDlDSGIrdlB0d3ppaW1XcVo0TmUybEdL''@;'; put 'put ''dzZXMGk5bmZMcVVsYWwvS1R0UVdsSkhibWYvdHNseFd5Q095U3RiSU9sa3ZtMlNMYkpYdDhwYnNrZzlrbnh5VXcvS1ZmQ3MveWtualROb1VtWDZtMUF3MTVhYkNqRE1UekdXbXl0U1lhV2FHdWQ3Y2JHYWJCV2FSdWNjc013K2FCdk9vV1czV21xZE1pOWxzV3MwMnM4UHNOTHZOSHRObTJrMkhP''@;'; put 'put ''V0tPbTU4c2JHQjcyR0k3d0piWllYYVVIV012dEJQdDViYmFYbWxyN1hYMkJudUx2Y1BXMmIvYmUrMTk5cC8yWDdiUi9zYythWnZ0QnZ1Q2ZjVm03UnYySGZ1ZTNXc1AyRVAyQzN2TS9tQi9kc1lWdUY2dXhBMTBROXh3TjlxTmRSZTVQN2hLTjhWTmRkUGRUSGVUdTgzTmN3dmQzVzZKVys1V3VF''@;'; put 'put ''ZmNLcmZHclhQcjNTYTN4VzExMjkxYmJwZjd3TzF6QjkxaDk1WDcxdjNvVG5ybjA3N0k5L09sZnFndjl4VituSi9nTC9OVnZzWlA4elA4OWY1bVA5c3Y4SXY4UFg2WmY5QTMrRWY5YXIvV1ArVmIvR2JmNnJmNUhYNm4zKzMzK0RiZjdqdjhFWC9jL3hRZ0NJSWVQQjMxWmlONWlYS2xjclZ5WThS''@;'; put 'put ''WXJOeXNubVhLS3hNOFZibENlWkx5M3lJMmc5V3VWYTVTSG1ING1Tcmx5aFhLa3lOR3ZmS3o1dFZUdGx5aVBFbjk3Y29uMUROS3VVbDVwSEpHK2M5Mk52a1o1ZnJ1bVZVL0UyTzErcnN3cGl0dlZsNThobVZXSEx2YTg1VGZWRjdabGVNTXFOMlZhNVZIbU96L1kybzNtYXRzZDR5cHlpM0s5V2VZ''@;'; put 'put ''MmN0cTl2NDN4L25NZHNzakUxeWYySE1uTzFIVEplb3ZWMy9TcnRRY1BxYjJyRVRtNHlnNjJUa1YrYlA4aldwUGptMmRFMnNtcms0Y2RhelBuSjN6UjNPYTFYN1dManFsM3B6R1BsVDcvY2pPMVRUT1dLenRXSHRKZjF6Wk9HL3ZxYjFZYS9TUjZ2eHJuVDlWMzlXdWMvUkV4THJ0NUs5USswU3Vn''@;'; put 'put ''aHRQcXpycGowL1FwSVJtNG9vazdlZlV2algyNjN3OUYyYXcrcHZVSHl0dFpNS3VVczZvSjU5OVhPMjdOYnFyMU42amRuTGw2bkFMK1h6bFpLV1NiNXljTzkzWjM4Q2RaeHFjcC9kUzhONVZ6cXhFdDFQSHJqMmFYVEM2WVFmNEhXOWlLWXpEUmV4aFVlZnV4YjQ5aVQwOTZ0eTk5WTVhckoyN0Qv''@;'; put 'put ''dk9GUGFoR3FJdnJtS2Y2OGRPTjUzZmZXWVFwZHJMQjdQcnpXTFhtcys3MnhDOXZZMW5SMS9EOWRheTgvMUplOS9WN0g2dnNrTytobDI0bFRlNm82alhXK1VxZkNjZWo3TVREMEtMOXRSVzdsZmtIUDF1RmtEQ1dJVkxjQXQ1T2J0ZGh0OTF5aGpiS042OUwrU3VMK2N1cjBRdFI5OVc3ZTVWUHFp''@;'; put 'put ''c1p3YTdFNnlWd0YzSzY1VS8xcXoxVlR1RFAvSTl0K0YyU1VtQkZFcGFNdEpUZW5YZDBhOTlsNTkwQUFBQkFBQUFDZ0FjQUI0QUFVUkdURlFBQ0FBRUFBQUFBUC8vQUFBQUFBQUFlTnBqWUdaeVovekN3TXJBd3RURkZNSEF3T0FOb1JuakdFUVl6WUI4QmpZR09HQm5RQUtoM3VGK0RBNE1DcXAv''@;'; put 'put ''bUtYL0d6TXdNSjlrMUZGZ1lKZ01rbU5pWlZvUHBCUVltQUR3YlFxMUFBQjQycldUV1ZDT1VSekdmLyszZlJFcUZQWDI5bW5UUnFJVVJmYWx5TDZVck5teXI5a2E2eEJEUlZMSW5pU2pHUk5UVTdZYjdyZzFZNHkrejVWYjdnd2R4MWRNTTh5NGNtYmVjOTV6enB6bm5IbWUzeDl3b2VzTFFYU1BW''@;'; put 'put ''T3FaT09ldVVxekhKWXpEallHVWNJczY3dEpJRTgyMDBDWWVFaUNESkV3R1M1d2tTYXFrUzZaTWxSekprMElwa2hJajFYaGx2SGVKTW8rYnJlWVQ4NHZsYmdWYXdWYW9aYk9pckdGV3VuWGY1aC81VFNsOWg4V05IdHFQYWVPWitFcC9NY1Vtc1pJb0taSW1HWklsMlpJckJiSkJObXZ0bDhaYnJY''@;'; put 'put ''M0liREhiemMrV1lRVllRVmFJVTN1b2xmWkxXMzFVTDlSejlWUzFxMWIxU0RXcmg2cEpOYW9HVmEvcTFEVlZxMnBVdGFwU2xhcENsYWt6cWxTZDZIelRtZFdaOVAyVG85eFI0TWgzeE5nSDJ2M3NQbll2dTV2ZDZQamE4Ym5qOEllUWQ4bGRYdjJuNW01NE81UGdqMXNFby92UCtJZEcxMGtYWEhW''@;'; put 'put ''MjduamdpUmZlK09CTEwvem9UUi82NGs4QWdmU2pQd01JSWxoblBFaW5Ib3BKbUU0a0hCdURpU0NTS0tLSllRaXh4QkZQQW9rTVpSaEpEQ2VaRVl3a2hWUkdrVVk2b3hsREJwbU0xY3hrTVo0SlRHUVNrNW5DVktZeG5SbGtrOE5NWnBITGJPWXdsM25NWndFTFdjUmlUVm9lK1N5bGdHVXNaNFYr''@;'; put 'put ''L3c1MnNwdGlEbkdjMDVSVFJnWG5PVWNsVlZSemtSb3VjWVhMMUhLVjY5elVGUDFrOURZTm1xVjdtcWFmYlJXcnRSM1JiT0JzdHpmcldhUDdYWno0N1ZiaFh4eThRRDJiV2RsalpTMmJKRWFQVzlqT01ldzRKRnp6R1NsUnVnSWl1S04zSHFCcGxnUmREL0hkWjRxY1ljU3lqYjFzWlI5N09NQkJY''@;'; put 'put ''VXY3T2NKUnZYV1lVazV4a3RlNm1ucXhUcnpFVzN6WUtINmFmODhma00ycTZIamFZMkRBQXBLQk1Jd2hqR2s5QXdQVGJpWldCb2IvSWN6Uy80Mlpkdi8vd25TSlNmRC9sLzkrSUQ0QTJzOE5zbmphclZacGQ5TkdGSlc4WlNNYldXaFJTOGRNbktiUnlLUVVnZ0VEUVlydFFybzRXeXRCYWFVNFNm''@;'; put 'put ''Y0Z1dEY5WC9DdmVYTGFjK2czZmxydkc5a21nWVNlOXRRZjlPN011ek52bTNsak1wUWdZOTJ2QkVJczNUV0dscGNvdDNyTnAxTVd6UVRodG1pdSs1UXFSSC8xR3IxR295RTNySHllaklBTVR5NjJETlB3UXRjaFU1RUl0eDFLS2JFcDZGNmRNdFBYV2pObXYxZHBWQ2hYOGZPVUxnUXIxLzI4ekZ0''@;'; put 'put ''TlgxQzlqcW1Gd0JKVVlsUUtBaEVuN0dpVFpqRFZIZ21hWS8wY00rL1ZmUUZ2bXBHZy9yb2ZZa2F3cnAvUlBLUDUwQXFESUxESXRJTkFrbEgzdDRMQW9iUVMyQ2RUaU9CWjFxdjdsSlV1NWFTTE9BSXlRNGN5U3NJdnNSbG5OMXpCR3ZiWVNqemdMMGlWQnFWbjgxQjZvaW1hTUJEUFpRc0ljdGtQ''@;'; put 'put ''NjFhMEV2Z3l5QWVDRmxaOTZDd09yVzNmb2F5aUhzOXVHYWtrVXprTXBTdVJjZWxHbE5yWUpyTUJBNVNkZGFoSENYWjF3R3ZjelJnYmduZWdoVEJnU3Jpb1hlMVZyWjRCdzZ1NHMvbHU3dnZVM2xyMEo3dVlObHp3RUhjb0trMFpjVjEwdmd5TGMwckNncE1kTDFFZEdTMG1KZ1lPV0U1VFdHVlk5''@;'; put 'put ''MFBidmVpUTBnRzFCdnJUS0xZbDg4RnMzcUZCRmFkU0ZkcU1GaDBhVWlBS1FZZThxN3djUUxvQkRmSm9CYU5CakJ3YXhqWWpPaVVDR1dqQUxnMTVvV2lHZ29hUU5JZEcxTkthSDJjMkY0TXBHdHlTdHgwYVZVdkwvdEpxTW1ubE1UK201dytyMkJqMjF2MTRlQmdGakZ3YXR2bk00aVM3OFNIK0RP''@;'; put 'put ''SkQ1aVFxa1M3VS9aaVRoMmpkSnVyTFptZnpFc3M2MkVyMHZBUlhnV2NDUkZLRC96WE03aTNWQVFXTURXTk1JbHNlR1JkYnBtbnFXbzBwSXpaU2xUV2ZocVVyS2pTQXc5Y1B3NkVyUXBqL2MzVFVOSVlNMTIyRzhlR2NUWGRzNnpqU05JN1l4bXlISmxSc3NweEVubGtlVVhHYTVXTXF6ckI4WE1W''@;'; put 'put ''WmxrZFZuR05wcWJpSDVSTXE3bVg1cElyN1dENmpaQ2Z2bEF1UllTbUtaTjdnQytMUTdDN2xaRmQ1TTFIYXU1VFRYZVd0UkhsTUdUUm8vNGY0bmtKOHgrQ1hRSHdzODRpUDVYSEV4MUlpUHBaVGlJOWxBZkd4bkVaOExKOUdmQ3huRUI5THBVUlpIMU5Id2V4b0tEeDJ3ZE9seE5WVGZGYUxpaHli''@;'; put 'put ''SE56Q0U3Z0FOWEZBRldWVWt0d1JIOG13T1BxNWJtbk5TVG94RzJmTmlZcVBSc1lCUHJzN013K3JUeXB4V3Z2N0hIaG01V0VqdUozN0d1ZDVZL0lQZzMrTEYyVXBQbWxPY0hDbmtBQjR2TC9EdUJWUnlhSFRxbmlrN05EOFAxRnhnaHVnbjBGTmpNbUNLSW9hMzN6azhrcXpXWk0xdEFvZlR3UTZL''@;'; put 'put ''OXJCdkdsT2pDT2xKYlNvU1JvQkxZT3VXZEEwNnZQc3JXWlJDbEZ1WXIremV5bWltT3hGR2N5QUtTamtwckd3N08ra1JGcFlPNm5wOU5IQTVVYmFpNTRzTlZ0V2NZVzlCKzlqeU0wc2VUZFNYcmdwS2UxRm0xQ252TWdDRHJtUlBiZ21nbHRvNzdLS1lrcFlxQ0krQ0cwRisrMWpSQ1l0TTRNdWdT''@;'; put 'put ''SmtjYkt5RCsyS0hUbWlnbllDMzNyU0t1L2JRdTNQZGZJZ01KdWRidWRCbHBHaTgxMFY5V3A5VmRiWUtGZXYzRTBmQjlQT3NMSG1GMFVaVHk1NzM1NFU3RmVuQkxrQ1JsZDJ2KzVKOGZZNzF1MUtTVDdiRjNaNTRuVktGZkpmZ0FkRDdwVDNJaHBGa2JOWXBSSFByMXQ0TWtVNUtNWkZjeHdYOU5J''@;'; put 'put ''ZTdZcFYzNk5kMkhmdG8xWmNWbFN5SDJYUVZYVFdic0kzUGw4STZrQXFDbHFrSWxaNE9tUSttNTJhOExHVXVDeEYzTE5rMTBYMEhUd2hIZUsvT01TMS8rdmNjaFRjb3NvU1hXalhDY2tIYlI4cjZLMGx1NU9IS2tabjdieHNaNklkU1Rmb0dvS2VTQzQ0L2w3Z0xvOFY2UlR1OC9NSHpGL0JkdWI0''@;'; put 'put ''R0owR3Zxcm9ETVFTNTYyQ0JJc3EzdEpPcGw1UWZJUnBDZkJGMVVLekFuZ0p3R1R3c21xWmVxWU9vR2VXbVZNQldHRU9nMVhtTUZoakRvTjF0WU91ZHhub0ZTQlRvMWZWanBuTStVREpYTUE4azlFMTVtbDBuWGthdmNZOGpXNndUUS9nZGJiSjRBMjJ5U0JrbXd3aTVsUUJOcGpEb01FY0Jwdk1Z''@;'; put 'put ''YkNsL1hLQnRyVmZqTjdVZmpGNlMvdkY2RzN0RjZOM3RGK00zdFYrTVhwUCs4WG9mZVQ0WExlQUgrZ1JYUVQ4TUlHWEFEL2lwT3ZSQWtZMzhZeTJPYmNTeUp5UE5jZHNjejdCNHZQZFhUL1ZJNzNpc3dUeWlzOFR5UFRiMktkTitDS0JUUGd5Z1V6NEN0eHlkNyt2OVVqVHYwa2cwNzlOSU5PL3c4''@;'; put 'put ''bzI0ZnNFTXVHSEJETGhSM0F2ZFBmN1NZODAvZWNFTXYyWEJETDlWNnhzRTM1TElCTitUeUFUN3FpZHZreXE4MmZWdGFsM2k5SlQ5ZHVkZDlqNUcyVXp1aXdBQUFBQkFBSC8vd0FQZU5xMWZRbDRaRldaNkRublZ0V3RMYW5VbnFTeTFaNmxrdHBTcWV5cDdFdGw2WFJuN2U0a3ZTWHBwcUZwNklW''@;'; put 'put ''RlFCQWJCa1ZSbkhFYnhVRVFCMWthQkZxVVpSeEdCWjQ5TGlNT09vN29tM0ZHSGJmbkcwWjBKRGZ2UCtmY1czV3pOVGpmOTZDVFZPNzl6L2FmZnovL2Y0S01hR0U5aVQ4dWVKQ0FMTWlKU3BBZjFhQVVha0VkYUFpVlpGdzluZTJ0NmFaa2JUaFFXVnJzc2hZWk5BUVpZM1ZhcjlVck9wTk92ek9a''@;'; put 'put ''OHFlU0taSDlGT0dqOHBRK296L3BHM2lTVWo3TE1LeEJPcG5DSDVmK0RuZjgzKzZlQjNwNkhuaWd4K2YxOXZUMEhPbnhubnZnaU05N3hQdkFBdzk0anh3NU56RHd3TXBBMWQ4TFArdjFCcjN3NzVhanZvR0J3RUg0Tk9CdDcvRWR1YjdaSGQxMTFWV1BYSFhWcnVpcU4rcUZmd2dSTkxyK092b1dP''@;'; put 'put ''Yy9XRnN6NEVNWm9BU0ZVbUVXRUNFc2FMQWh1WVZTajBWZzBoVUZya1ZaMDE5bVRndDhWU2pVMkpSTXVwMFBubnpsVDBxY05oOHM4b1pDSG5KZDhQNnd1S3cySFM4dXFFVnBmUjMzNFhud0RlYkRJaDR3SUZRbncvU1ZFeHczQXR4dGhYQStxUk1PWkFZdU9JSzFBTUVGNDJZUU5oc0pzWVZHQklJ''@;'; put 'put ''cjZCYk9SNlBYV3JBWVRZaUdqQ0ZWV2xKZEJLMDlwU2JFYnhyZGJjLytKNVhWWVRJcCswWjltWCtrayswcUs3RXVrTC9HYnNTdnRKeUs3SXUrTlRFUXV0eCtQWFdHL0FqNjlGNTZjc1AzTmUyUHZ4UmVleno0Qy8yV2Z6ejRLLzJXZlI0Q1owUG9GMGtiZVFCVW9pQ0tvUGxNYnFmTjVQYVhGYnFm''@;'; put 'put ''TlpOU0xoWWhvQVcxa0JKYUZDVDRJNjNPajBVcXJWUUJzQlhTd3g2bFFPTzF5cHhwd3FyRVRwMkd2WFc0eEZIWldZQ2VDeDRYWWFXdEtOY0lEMG5ibXNxbDNIZWpJN2oxeUpMbXZkZXJLeGRiKzhSTlhTWmRIRTNWTnY4NjBaSzQ0S1daNml2WmxoMncvS3AzZWxaeHBGanM2emJ0SE82My82Sm1i''@;'; put 'put ''d3U0YTZ3dUdGcjgwMzFaZDNXRDlKc3hEaXlMcnZ5TnI1Q25ZWFR0Z09vcmEwUC9LUGxhOGF5NVRaOEphSThZNkxWNUZPcVEzNlBSSGtVYURsZ2ltdTE4QWV5QXNtVVVpQ0JaaDFKTjlMQXhOb3Bkc2dnQ1V0Uk9YekZnVTNlS29KNVBjcGdVaEFFdWJvZTFiemM5blFyRllWWlhEZ1ZDc0xkYmEx''@;'; put 'put ''RmdWcldxb0Rqa3FIUldseFhhYnRRZ1dVeGdxRkoxMU5vN1JaQUl3NlNqRWZwekVmb1pLdjAvbmRMaVNhTlA3VHB4Lzk2bVJtdHFSV0F5K1o2UDR2YnVrOE1UcFJESVVqaWREZU85SUxUemtyNnJqOUdFaWpQYzFqRWZqdXhvYUptTHhpWG84dFRhSi83SWpHdTNzaURWMFN2dnFKK0pSK2c0ZzZy''@;'; put 'put ''dnA0ODZHYUNlaXRCTmNmNTNjUUw2QXZLZ2VOYUhPVEZzOEdxNnFLUGVVbUloUklGNk1CREpDYVJzdkFldTVzbHBnT0lZWm9LQ0dCcCt2b2FraDVhdjNSU0orbmVpcTA0YkNPcitQTHFvcHJWNGF2SE0zcGQwNjBZM28ydHg4bmJZMGdOT2xrcUF2c2U5MDEzSkxkcUs4Tkxxbk1UWlJQekU5MUZk''@;'; put 'put ''WE9SR05uWlQrTWxsYzJ0TlU3M2NNWE5HeE9wbzIraHJuWW5QdHZRZjhOZjJoaG13a2txMXZIdzNzR2VpYURDejNuU0lqMFhCcDJsc2FEd2NTYTY5MVh6MmNtbXpLSUlRcG42TW55WVBJak95WklpcEYyUGJpVVdlQXdNUnRlWGtoK3FldFhyZmJhN1hFOEg4c2U5MCtuOXU3UEl4b0g2M3JNN2lQ''@;'; put 'put ''UElzS2tPNkpBaTJPMVRFeGszWURnOENpeEFldnZISzFjV3JYNUo3RzJSL2Q4cTdYOWpSTlAzWHExRk5UYWRhMkZ0bzJLbTFGYU11UkVFNXovTlR1bVlSMnE5RERxZW1ucmo3MTVFelRudGZlZGN1UDlyQzJLWHdDSHlEUG80T29PWlBhT3pIVVZGM2gxdWxoRVNNQ3hocU10Qml0NnJCV1M1YUFl''@;'; put 'put ''RjFhRUVJQWVtRFA3czcyV0lQUFd5ZFNTb1NacHB2U09oSCs5L3ZDL0RmZzlRWWNEdkhma2dtM0MvNW52M0ZVQUN4QU5QRlg3TmRDREJ0WmdmbHZ0SnN3dEhlNW1aaDkzbXJVRWJ1ajJxclRXUTBhYzNHRHdXMDJ1dzBOeFdhTnNVaWp0MVk3N0VSbnRKb0xLSnpSWmdnNUdXQUJBN1NXYXFLT0Fn''@;'; put 'put ''Ym9EQmxzUmdwWmdFOVlUS1VKbjduQTdqTUtGdEZnRVFzdEdyMVdxOWRZQ3ZVV3ZWaWtNZnJzQldaZm90Ums0WkJpa2VnekF5aThaYUNpQVZ2TkhOVHNnNWNjbHVHMEd5MFRCMmxHSmhUSytKRkd3SnBwb0cyUUZGaEF5OEQrZUFFQmFzZVk0QzdTaWFWMTJFODFZSXBxd2lSeFBMdi9tV2YyUDR1''@;'; put 'put ''OXp6NDcvL3p6dEwrQjlXdlF0OUYxcUJDNU04REthRkNoTVdDVWdJM1NHSENBVDBWbXUyb0xQS0Z3bVRjY2poMkx4RUU5aFZPMS91RTA3YXNSL1FTMzQwN2d6dUtNRTlHT3B1bWNZVVlJWmxSRU83TjduZDVHckpkK2p6djNzdlgwZ3A1OEVjWTNVWTFQbjREVXc5aU5LVEdZa0RFZ0FCR290ZUps''@;'; put 'put ''c2tZMDU3UWhYdi9WK2dWOGdmd1V4clZtQ21tbnQ4TFlwL21BVkhUaGtjdWwreTRuUDMyVGltNVFKazBnTzI0aHo0QzRxMFNSVEEwUUgxc3hseElZbERPYlFGRVJLTmJLb29waUY1T0xvRy9xTkp2bEhrazFObUMvanpKU0JZd2szcGJOM2pZOWZTNmJQVGVkbm9uRlp0THAyWGg4Tm0zZTkrblYx''@;'; put 'put ''WHYzN2J0M2RmWFQreFo2cngwZHZhYTM5NXJSMFd0N0dRNWczYmdjZExZT2VUTEZzSlVDNEd1RVMzR01MWGpVYW1lb0U4UHBwTlgvaFd0cW45cTlRdEtqdys5WW0wU3NmUlFXVlF6cktVYTFtYkRKQ01zQmFpQmtoS0dUaVQ5cWRDd2dwbk9zN2tCSUl4YlhkV0ZGYW92aEpsbmNXVEJzVC9UTnZy''@;'; put 'put ''YlJwcWFaVU4rQmoyZU9kWXpNM1l1SEpmZWViN1VzUnB1Nkd4UHQ1eHFYT3ZxdkhmcXpSVGEySDNCWkFXUFhvSzVNZTBreGpPUERtTURvTUFXbXVCSEJ5ekN5WmdtSUV5WUN1bk9KOHJ5YnNYc05xZzRFdklHZ0tKYkFMbE9oa2t4UVBRT1dtanZSdEhsNm9vejJmemhYMngwNDFOcXphMm84bSsy''@;'; put 'put ''ZDNOV2VuQXAxTFh5NC8zajdTR3ZIVE9kVncrWk1xcmN1a1dsTXBmRmUzSnlNZFVick82K0xUVGUxNzdZVjd1bHQzWmZrZE9DSGIxbkF1eEdrRzFnZlpqQXk4SWhPQzJ2QUNHek5GVUFkVTZrV3phakpaQ293RlFCUDJZcm9YSVBlTUU1YXFiWHBUMWtGZkt2MGtBbVBYWHY0OFBKdjc1bkVYNWFH''@;'; put 'put ''NXU5NUEvZEx6OERxNDRDZkdoaWpETFZuV213Zzlnck1CR3ZBbmhsQjhCMXBRSUVMQWxuZzJuc2pjc0FjODFudEFUOUREaGc2U1JrallwaHlrZGlVSThPL09OSTF0OUt6WjAvdlpNK2dFWDlXK3FLdVo2enphRWYzcVJIejVVUDd4dHZhaGhOVmVIWHhZaVI1cUtmdldFdU9CN3BnM3p5b0d2V0Q3''@;'; put 'put ''UU5ydHdMUkJJdUpWaU9NNkVDYWFMU0NaaFhsTktnSTgxSUVRMWtaeks2NkxPejNRdnZTUURDa0I0c015Yk9od29MeWlGdmtyQUhDT0duTDBScGxrNDhlNjh4Y1BYakg3ZGx6ZTY2Y2J3ejBSeHFuRXJqcVVJdTdOempUM1RKVldEamVqVC9mZUxDbis3TDI1ejZ4K3RrREUrTmViLzkxMmJxWTlO''@;'; put 'put ''SHFibi9IU0VkaWJKYlNIZ2dkNG1aOFU1a3BBMzJDR2RkUWVZT1puUTEyTFZnMTFGckUzcFRYQ1lMZ3I2U1A0QjlMUHpwTkpoZEgxejVKN1lnbzRDSEY4QkFHMzZNdjArM1FFWkNxSTZJS0E3SjAwQU1HTU93UGt3N1YxUlFKMWFucXhtaDlXYmdzNUt1aXFJZ1lxTGphenBDUWthT3lvdHowTStp''@;'; put 'put ''aFFrSnRpWitmN1p2c2J1L3J2YktyKzhxZXdaYnVYZjFuaDFKemsrM3R1MlpUdlh0and3SC9jSHh2cnprMjI5cXh6MVc4cTdsNUtsSS9sVzdkNVhMdmEyK2RpK0tQdHNmcU85b2I0bTJDOUpXdWhLK3BBdU9LSmwraWkrNTFHdGFZeWU5MVJSSHNzUUc0VkUrMUJxeFVDenlxSmF0QTZRSXNUeEJj''@;'; put 'put ''V1pVU1VQYWFMekFZQ0xLOWR2R3Q1aHdMMnBiK0lpL1lScGZPWmFJcmliKzRaWmN6YlBlNzJEYlgweDBuejJ6Y1piN3owa2ZvTnJQOXBtdGdlb0xvUUNlNHFjeW1NcHJOME1vZEtpMTNxTXhtaE14dXM4dFd4SlNIVHJZZ0ZPVkJ0bEVrWmZKUGZJdWlVYVJUeWlmd3M1aCtKRHJ3czBEL1drVmtC''@;'; put 'put ''ZW44UG1SNEhPT244ZnNlUzlaeE9wd2hoTXdESGVxZTBCR3drZXlwb0xNQU85UDQ2OUw3OENrY0gvdkJ6RU1QelRLKzYwWlBFQWYrQlZDZWlIeVpTa3F2MURkRDRCQ1FhVmxNRTRIcTd5SXFwU21uMC8rNzhYZWtldmIxaS9uYjVtSE1FUmpUcVl3cHdKanBlcHpTT3JVaitCU00rWFVwOWNoREQ4''@;'; put 'put ''MzhZT3dIZEV6Myt1djRPN0QvVHJDVzA1bEd1MEZQeFJ1bTRsbUFnVzlTNlFrcXFMVllvM0ZyUmwwdWw5ZFZGU3oyQjNWMElqSUg1NlF4TUxaemc3LzZ4TzZqZmMwekE1Mkx0M2NkYW9yUHBRODRGTXplcXV1TzFIVk5kVjRWbjJtTVRMYWFUL3dnNzhyUytVWFc3eFQ2eVgyQW13bjBvNHk1eWth''@;'; put 'put ''TWhzNE9Jb0tRekQ3bUJ3Y3BCWWFPUWRBWWJqSmpveFliWjVFV0pMV294VWVSYU1KNlVYOFk2WFNLMzBQOUsxaUcxVUM5cXhwb25GUWF3MklOUnNHdytwYWQ2TUREYXNtMVFrZ25JTjNxenEzMWVuRVdnVXU5eExxWkFEK3JwS2NIb1o2Sm52SGhRVmhVSmhRSzIwT0JVS2hBTE50aVF2aENZUlh2''@;'; put 'put ''SkZ6dXRGdmtFaUZCTWE2eUxoTE1ZdmNyb2xUbXI5N0hWcS8rOHNubFI1YlRNOUZvaDdGaVZ6UTJXdGR6V1d1OHoyNmVMdEs0RGQ3eThyUi8zeWYyTHorNnNuRFBZc2R5eXQ1eXN0ZmVGMHpFYWdkcm02T25WeDVldnZMTFZ4MjRiM0hpeW5Ra0hLcVA3R3JzUGRWWDUrL1NUYmpQdEpncXFtcW11''@;'; put 'put ''NlkvT0xQNjZQTCtUK3d2cnlvTGVMRXh0aWNSYll4TzFNZmIyZjZWd3JmdmdSd1dRWlBXWmFvTldFUHdDRkFSa0pVR3RDaFZiV0R3VTB0R3I5Y2I5VVp1bWhhREZoV1pheGsyWVJLUlB0NStFb2ZwdjhOM3duL2svTnJrVC9HQTlDWEErNndjMHloQ0pjaUhPakt0SUlsaEJCMXdqbFpEdE5TOGtJ''@;'; put 'put ''TXJJdVlXTUIzTFUycXplaXRMZlI1ZnNjdGFZaXVKVk9tWkFicFJJSHN4MDZwMTJHbFhQc3ppZ1piNVJEemUwZDEwb0VONkJOYzM5dlEwdnZScTYvQnc2NnZrZkdRODNqanNxZGpiMGpRZHd4OU0xOVUxZjFWNnFTdVI2UG9YWmcvRlFOYmVEYnhXamhveWRhVWxKcU9HR2hXS1BIVnRDUC9BZzNK''@;'; put 'put ''VUZncUdhUGhIa3ljQmNldXU0NmI3RHgyNmYybm8xc1JnWUxHeDkweC8vNW5leHNYQVlPTFdJZlBCKzVlVzdqdllrdXdMUjRhdUhSaTRiaWdTN2t1MndMNVF2SDJaMlRkTzVpM2swTVFjWXhsTlpwUERabkthbmFFcUxVV1BRcGgxT0MwVFlCMjJ6djdxeENNSER6NXk0bGYvT1hGOWYvODd4dDlQ''@;'; put 'put ''enM5OTR2RGhUODd0ejV3YUhyNDZJeG5ZMnNHQUlYMHduZ2xGTXhGRnNsRjdSck1BdXFWUWJZVXk2OTdFdzB0ZzN0aWRzcHl6ZXAyUDQ4dWxQOGNma2tUOEJ6TDVsY1Z2TDVMemkyaEQvd1pVa3drcC9WTnB4WHBWVkQ2OE1DQUQ3Wm5KTGRhclgrbDNoWGI2MHFMMFhkNHAzNi83WWIrOEtKVkpn''@;'; put 'put ''TXVBaEVwQ05GcG1QR3MxaUJFWDkwK3BKY2pFSkdoL08yeWFuN3RYWHV0Ry90MjBlU2svL2pOY0Z2dUw0YVhQSERyMG1hV1JQNDhOK2s4MDlkRU43SXZzOHorTnI1WitIVy9qVzlpYTZBdlY4eTJzOEh3Z3YrWTdHVTdEbVlCc01pNkRqVXJYUytOREZyUVpsNWl1RnI2UzhKM2N1U3pkc2J5TXI2''@;'; put 'put ''SHNoS1BTdDhsNTZUWHNnMTVvcThkWmZKTEdGVlMrQm5mVHdORVlYVjZtclFEV0NmcmpHNHovZ0lxWWFjOG9taG1zWkVrQVluSXp0QmNoaXoyb2dlWjVVeDVtUWJuc3NldTlnL1pkZGMyRHl5M0wzZVpNb3I4NnVhY2J0RlM4Ny9KMnZzNFo2T3BEYkoxVm1YS0RYa3VZaHNJc0FpYndHS1hkWnVN''@;'; put 'put ''Nk1XbkZTUVAyZzJ2b24xbkdmYmRJLzQ3cjMvbGZSMkM2MHNmeGl2UjE2VGJjZVB4bDNpOElZdkNYenlNdHRSSFpwR2x2aUc0K1I1MFdhYTFXT3VrZzBFblNTaHhTdzhvaTBOemFlZFllZUFnSUlEY3ZjWnQ1T2F6S3ZEemdGUGl0SnRpQjJlWGYvbmFaZnNHY3V2RGZBdkovVG45S2JybFA4akNq''@;'; put 'put ''NDRxTVJ5UmtTNCsyWEk4WXB1Um4vZUgzTGk5TForaVd2RUVNYTVQdzlRYVZ2WlIrZi8vL3c1ZmxBZ2VvOHVCOVM3Mm4rL3RQOTNLcEk0c2JlTHAwLzhHRm9lc0dCcTRkNGpUTGRBR2wxK093TmpQSUhQQkdZUmJBcGdLbW9ZbDhBQnlXV0ZqZ3NCVTRDNTNXVUpXT0JyKzlPYm5qOUNzaTJackYz''@;'; put 'put ''aUVZOS9UUXM4dlludDIzTC9zb09kK3ltc21zdHZ3R2p3MjB0dzlJYjZweDRLQTJmQ1pCQTloRUsxQkhScUJod0x3UG8xRkZBWjFPWjlnWnFnK0ZxZkJGTUFkeGd5S21NZVIwT08xdTJvQVY4dnVRZjdoMUxIcFYrNUtDSHVsWFBZZGFsK3R6K01FVlZ6UjA5ZldHYW5KNGt2NlFtTzZiNjU5UUlT''@;'; put 'put ''cVBwMEtZQytoTVFnTmlpa3U0akxSYVdhVEpMQTVPc3RWcXAvS0d6dFFmQnIvVHlqQ21UY3E0SXNjUFRwdy8vZGYzTERPVVNmMlBNblRoVzA0NS8vQ2IzekNzdllzaWpORjBhUDIvU0J0NUZyd0IwRkV1Si9WSENWYWhpUVpZVlRxcUdvV0RFVDlGVTk0TERUZVFiUVNlVzZhbGo1M3FXTDZ4YjNS''@;'; put 'put ''aVlmeHdjOGNWZmFQWHAxb2p5NDNCZGw5b3NPdlVtZGFySmt3bnNnYzZJZzF4cDYxaHRLMWxmeW9SSGEyT2xNYzhsZFVlaTJkdXBtMS9pczZ6Qm5BMHlld0tIaGZKdVhZOGtDR2J5TmdQdnAwZnVNVDR2MG4xdnl5RGE3Y284KzR1b0l0N29EM1l2WmtLT1ppT3NYcHBUdVJ3QkJ5SytxWENpdnN6''@;'; put 'put ''aXR6Q3Z0dXp5L0g1NXVhNStNcm9iZFBtc1R0bThmdWwweDBIbXNBMHdIZEtWOC9lTWNibGpHSUQ2ZWhZV3VhTGdxU1VoU1NYTkdDcWMwbGpvQkYxRHliZms3NS9FdjdSL1FHR1ByLzJIVkxQK2dLdlFGUENlQWo2TWxKWkR3S0NudUV3MWMwV0R4TENWcVNsbXBNS0hmZ24rRTNZWDNueXdZZFBQ''@;'; put 'put ''dnpneVg5WmZ1b0xWRks4VHN6c2E1TDQxMzZJbEw3SnA1ZzhBM2xvMEVIWGhJWmpxWTJHT2EzWmJEWXJ4U3ZNRXJvMHNON3hKN0R3anE5OTdUb3NTR3ZYZiszRjYvQ2M5TmRZbFA2QVorSFRIN0RJK3k2QXZqOEdmZXRSZWFaVVIza3ZKOWhrYjl6R3ptN2tQbUhMcXFSZlhmLzMzem9qL2VZb0xz''@;'; put 'put ''Q2ZscDdIUGRLaTlKKzByeWJvYTdlaTZ5ays4eUd0bkgrZkMyblpyR3pHYWU3bWc4SnZ3dStUM2tHS3BGUDRnMnYvTmtISTRzU2F4UFg5K1BxN2NULzU3dHYwdnBKQVdQQTEvc1puUHZNRytlN0FXaHN3RUY3Ly9mb0YvTGM3eEJzRnNHZjFsK01GSG03RUtBcmpoWFBqS2ZFd2FvclIyQ2dkRCtY''@;'; put 'put ''SGM0T3dUOEZYOUlFSGZ2LzdKdkxWZ1RmUDArNFQrSlA0QzV5Mkh0Y2Q2Y3U0UUtxekNDR01US09scCtVb3grTTYxR2RQMnYxaDBmL3Q0VStPbnprekJ0cm4xOS84SnAyenRINGwyYjMrTkF4WHhmcllJVDVMdXhBQmdZUk1yVDA4Tk16M3RZdGtzSnU4QW0zZHJLMFpXbEpwZjlvR1BpQWZOZTMy''@;'; put 'put ''ZHgyNGRvaDgyZkhuM0tlckI1dmhEOFFLZkJGQ04yWWN4VmpRdUVFUldNRnlyeWpYQ2pxdEJudzdCN2huVlFDczFSSHRLdk05cVFGZmt0Vmo2b3JKOU9nQnUyY3JDT1VxQnFlWVpQTVpwOGVEa0Nma0NYb3JZZGlTUU5Cdk53QlNrY3NKV0ZVSHBuS09yQTNzTStYY0N0OSs5Y0d5cGZqVThmUlN5''@;'; put 'put ''OGp1enNIT3FjRFIvYlo1Yy9kb2FxUTdRYXhuRDBrdkRvWWplN09KaWJxeW9wYXh1dUZHS1o2czczYzAxZFRFK1pySFFONU1neDZ5Z1pmeTdBV0xFVFFRbGxkWkRzUlZsTTFGV0Vya2NCcGRJdWdpOEZTOUFPVGRERVJOc2cyQk45bWw5U3FIZlRzREFvenF0V0x1YjRDWkIwL1ZZYmNqWlBmWnZa''@;'; put 'put ''NFNtRGJvbUUyaHZEQmxBS3NTd1ZQYkI1KzdvclB6aXQ2MnBZcERoeW9YMjl3ak5UVWowWWJobXByaEJtSUZGMkg4aHY1VWZDOTVSdnB0TENXMVJLZFRxYWxvZENxVm1vNXltb29BZlVoQUgrV29NUk0zQWg1S1REREpVbUJ5SWVjdGxlenNMYmt1NlMyOWZ0Tkk5c2JocGtPaFhuZDNvR0VpR3Ay''@;'; put 'put ''SUJucUtlOE9IbTgwak53NE4zVEJTRytvc3JVaE14eFBUaVVwUFJ6akM5NC9hRWMyNS9iTUs2djJqaUdSN3c1d0I5ZjVaOHZ1M0dZZ1JxY2pDaHB4SWxmMmpnSVdYQkdUN0o3K2wwTXg0MmdpemRmOXNJYitWN2grV0NUNlBKQ3ZadEgraytWREZVbHN2MzhURnlxdlp6a1haTHBKbjF2cjN4bFA5''@;'; put 'put ''TjR5UHY2TS9GY09XdGJzMjd4K04yYnhPd3JCL0x0aVVUS2FEMEkxamg2NWd3eEJCUTVaek01WG5MeE9kR3l4Z2Q3bTdyTFFFbWpyQmo2THpEZkJ0VXh0ZlhqcEhuZWlGS2VPRmFYZW43NXJtb2V1SCtzOE9qcDlzazQ0WjUzdTY1czI0eVRDYUdhMHF6Z1FpQXplTWo3NWpJUHVlL1QyNzhSWFpy''@;'; put 'put ''cTRzcFRFdmZGc2szNEpoOTJhTVJWaW50V0trb3pFbHVsbGxTS2ZUTG9HbFZjeUNFMmhCZytWb0lpZ3FUNllVSEFNZFNKM1ZyUy9uTThhZ241MnZpYUtINndnL2xkczhGTWJwVWVmODF2WFhIeHdmSDIwdmEzSUc5T1ZGcmtxaW5aSW04T05UblowVERtdVAzdVQzVUR4RzE2ZElJK0N4RXRXaGF6''@;'; put 'put ''T1dpaUtpMCtaanM3S0lCRGtIYWtOSFZxbGh1Q1JxaU16ekRLbDJKaUp6SUZROHdrd3BJTm9FQmlLeXFncWhxcnFxMmxBQVJxd01CWU1CS2lLeFZlWjI3clYxNEkzRWt5S3FzMy9TMkh2TmFOZXBVTGhzTnJwbnFYS3h0ZmQ0UjhmeDN0YWxDcURIL3Y2NXVYNmlsUkk5cTYyaHloRlB4V2h2dGo3''@;'; put 'put ''ZWRYSnc4R1JuTXJKSHVtYnZ3TUQ4L01BQVAvdWpockNWeFNWUFBtVmpKaFBmR2pkaWJBUW1NWXRGbGloV3NNdzlidTdzYjMwTmIvSVBXYlJEZmdPTVVzQ3RQYXZENzZCaEFTcmhZTmZrUUpwVkZuTDQ5dm40d2Q3R1VFLzQwS0hpZWRpVzVMNVc2UXU0dVhYWTIreVYvZ2FrMlZxMUxPczc0UHVU''@;'; put 'put ''NUIvQWpyS2dBVDV0Vnk0b1hVd3B4U3JicVo2TUErdzVUQTJOVmRYamVXbzZXQW9MekN4U3JkMFVxUmJCQ2pqZzk1Y1UrLzNGaWNPSHliNUFjYkUvNEM0T3pLejlrWTYvL3RMNnVEeCtLVHFTTVZwQXR4WmlEY2xSdDFZMUYwRmdwS3M1b0FQTWVEU011aEVBQ0lpZFBtMThDVEtGUmRGTHpTVXVw''@;'; put 'put ''eHhIRjdmRTBXVkhnSnJKdXR4RVQ4YUxDa3I4eFJXSHh6cnlFMzd6UDQzNk1hUGZRd0pycjNidVl2cytDQXVnWjRZbXRQUUZBM1BTbEoyM2NnMUk1NFEzN0xtVmF6ejFDOWh0Y0hZWDJLOGIzc3pQWDdCWjdjd2l4TlFZWWlvTVhPbXU3NTc5OUo1RGg5YXV4UjdwMzc0L2RRNjJzd2ZyT1IyaXo4''@;'; put 'put ''RjhCTlRPcDJHaXdRdzVJQ0pQd0tTS2tYalliMG9BYlg3K3lYelFaT2pRSVNvK2tiSk9vUTk0MjAvbFR5bkcyaXFNV0V5Yk1yV0xDaGJ0a2w3VUNWcXROYXVocDdac1dTQjU0SGY2VmdkdmlVNVhrbnM1ejBJMWZ1VHpXKzErdTk5aEFQbWpvbVRkaGc5SkorZGUrRTcrWmpwMnNDUGVQTUMrSFQ3''@;'; put 'put ''c0dJczN6N3B0KzlvVUNtOXRHZXBOU2M4cFA0bDJLRnpmSElzMUl4V2ZXc0cvSHJ0Z05SUE9xSFFOZHVaT2FhazhzcXE1a05IVUZ2N2tUT2hBZHBqOFppYlVpY3FNWlI1czJxMDdmTGg0VHMyRG5RM1M0MFNiRGNjVS9UTUtjOW9VOXloNXk3aUg2OUp4ajlkdnpJTHBNSFRqQ0JnS3pISm9pTzZL''@;'; put 'put ''d2ovWmNCaTVZUWplellEZEVKOU9jQU5Dc2YybXdQYXpNdHZoNkdiYmoycHlIYmd2d1B4NUE0eGl5TTQxUFpNS20yMURGY3pic05NVTlQMlA3RFRwdjhuajg5dlphZFFtbWdLYlNGblhScHNvdjY0U2xXR1NWWFFTczNLc20yeW1EVENYc0Yrc20xWFFuMkMvYU5jbXNDNXZ3TXhML1Z2dFQzRGI4''@;'; put 'put ''VWxZbHduMVhERHBxS2N1cjhyS0ZDYllNdHo4Wk1hQVU2SG92RmxLN1lBTElHV1ltTEUxSlowS0NiKzgzTFBybUhqNE1QN0h0cG5KUHVtZmlQWXdqN204amwrRThZTFUzblZnZ3AzZ0hjT3dJUHh5a1plU3paR1hJQW9FYWdQTTNnMnBRaTlZc1RTNFRxWnhGMExGOHN0bkdxS3pjNUdtNW82bFBj''@;'; put 'put ''ZjJ4QS9YUmNZR3FwUHVoa1R6WVB6RWpMazZPTmdWcktpcXNwYjJkQXhNVjVVTng3eGxqbUtIeFZyWkhodWFvL1lTekhHUmZBanNwV2dtNHNZNkd1WUZzKzVXcWt2SUFqMDBBQ1NBWjNhQW0zTE1Cckw3cUJFVTVPNlZWYzR6QW9sTEQ3Q2EwbmpSMlZUV1BqbytmdkQ2Nnl0ZFJlWDZFcXRqb2hQ''@;'; put 'put ''SHB0Ny8vaW5wVlkvZnBPYzVTSzhEUHJWTXZ0aGhRSktUTHlCYVpJMnBjZ2ZkeWxOWjhPYzlRQzVmUU1YN1dleGZaUVpUUmNWbVpDVVdLbGFhRlNFRHhQSkhFQ2tnWlBDdzlCSVZNbmhDenNraGRVU3I1T1Fva1F6RkJyVGFtTWR0NTZFWDEvRjc3em4rVHd0ZytKekFkMU1GamNFcVJrSTF0Tjhh''@;'; put 'put ''dzdGZU9vWlR2bnpOelZNM24xMStkTjhOTis2REh0K0piNkZmYTMvRU4wczM1Mk5OTnVpYjVZQVpSUTNOSjZHZFl3eDlDMFIxS0dDejJTajFlTU9pM3g1T3V0TkowWTd2ZTkvN1QzejF1WlB2UG5maTJhOCsvenpXcjMzKzgyOUtiOUIrUzlaSFNUMzBhNlhaTUNZOWdTbFRJNEhJWFZQaVBFRG43''@;'; put 'put ''bUhFYVVWRk5vYzZMTmlGQmJhS1Fpd2VyM1dWKzBwODV0TFhMbnZnazZzLzhleHVlZEkxV21SenBZbGVPb28vdW5heEw0UDVXa0I4NHUvQm1EdkVlYXlYanZNa3NFLzZDYjVIZWcwSHBMMGorTkQ4aUhUUFBPdTNlbjB2UGtLK0NGS3JPaE1zWWNZbGFHazg1UE1TbXVNR0lMTXlQMk0wWVhWUi9V''@;'; put 'put ''MURnR2xRUmlsZ3N6Qk5LSFlYRXFlYkh4V0tsTXRFYk41Zmplc2JVeEZjdlRDaGIydDE0bEFvSE1TdWxqYjlQVFVEVGJmRjYzcnE0dWZTQTlYNmJvTzd0dm85RGVtQ3duVERIZFcxeFladUdPZXk5UXZvQ1JZMzJqay9EbXlJeTRhSGxWdzFtbis1RjYreWRRQis5Q3p1UTArcGhud1lEN0l1WnVY''@;'; put 'put ''VGU0UW5hTzQyRVIxMWJ0QnBZWjZCa3FZWkpta1FEeUtRUDhnb1dBOXNUMjFiaXd1bUhncGhaMnViZmhkZEZCV3UxZnQzTFJ1S2E2dnZhRWdYRnFRYjNsTmQ2elowNjZzSDB1Zll3bTVMOTlmb2FlNTVDNjdHdCtGSHJTSXVXRitYZm9rTWp5UDh0UFJMbGczQmM5OW4wTGVZYkxXd1V5czZRYXFR''@;'; put 'put ''bVZIT2NwM3M5THhvby9ITERFdWVhQWkyVGZKQk9YbWc1VXdKbUZCS3ZzQmFQMzVOOFQ4dllJbU1BUzk0S1dZcXlrdEwzQzZIdmFoQVM4ejhmQXBHblpiVDdrSGNsN0ljT3A0MXptUFhORitjYmlyb1RuQS9BK0FqZzJyQlA1eUtUblVjYm0wNTBqSFZzTnZiRzJodEMvVktkL2MwTnZZRWE3V1pQ''@;'; put 'put ''dlBZVlYxZFY0NFY5SFJxcTcyZHRTYnBMMHlSanBzUDJQR0M3V0FiejRGRVpBeHN5VExVbThuQVR0RmtJaVRTWEdRUkQyc3hBYUVxRW5ZY3d2d3ptbFVraXR5NVJ6enBxOHhxRHdaQXMxRGpMdWowcHRJc2UxTWQ3TkNWWTVwNlJzYldmanFVeWJTc1pBYXU4d3dXVE1TYmg1NTdibTZ1b2ZhaHdY''@;'; put 'put ''TjlsN2ZMcDJ5M0RENmtqczI2VUV1bXlZR1JBWStBaXlreXQyUkZod21ZVFdER0xSdFpqUURQZVhNNTdUYWxCcURJUktzQVdIbUZVMGtvaFMvRzhQalJlNzd5bGE4Y2hhOTdXRFFYRHc1bUIwK2NnRy80S0EzcHN2M3FJcFA0YXZJY3k5OUpzQ2hpbUNhdEF2Mnl3UDZTVnFDSXdoUGJaUERRQUtQ''@;'; put 'put ''YSswaW9QaTlXVnJwZFZaWHV4OWpQS2hlWnBEKzlUdnFNL3dSNnJVRkovSC93M3hYNWNKMFdGUW00RHIwcXh6WEg4UzNrcnJjVEU2VjVPRjI0UjNxZTNOWDlkbU9pYnRGLzRlQUhoc2dyRGxsdUI5YS9BWDdQbzdEVC9nejQ0YURwRUxtSnF0VjNVUzNHd3Ryc1dDUEV0QUpXekI5Nm1FdlBOd29I''@;'; put 'put ''TG10dFhzN2c4ckd6WXpnUW4yOXQzWnRZcXlJZlhUc0tmWGVpVjlDWFFIV1o2Sm1pU2pBUUtqSW1WTW0wVFNyc0hRb0VTa3ZoNnhYNDRmZkRSem5ldTk2SjFxRkJNVHJEMW1ZQmUwVmpONUI4Vk1KTW94SmczSU9xMXB5a1NVUWd0RmZ6VXZVQU8zMEJDNUNCQUdIZHRCTU0xOW5GeUcwUEJBSlVa''@;'; put 'put ''MVBNc1FRTkZvNVE1VHpTV3BOWHExc2pKVEdyczl6djhBQnRXbXhWN2NYNlNLZzgyRkJVRUhVN0xJVTJvMjBzemVwallyRG52Mk43SHRIUlBZK2c3ekU2REsrUDRIOWxzc21MV2pQcFNxZkRyQ0g4NkkwZ09sRkdqRnhZZ2VZNWdHUjE1NjBxZHRtdE9acEVhbkhGVTNFU2FiZE9NVmxCdHVDa0xN''@;'; put 'put ''RmltL09pOHVKTXVtcHpaaFNiT3p0TEVtNHE4dEZxSHF1SWV0R2ZvYzhoL2VNRVAvWTVKbVMzZ1RtR0hUdkFuRlZnc0lnZTNBSG04aHhNQWZyb0RqQ3J1YkZXMEwwY2hteUdlVG5YandsOWN5TU16eE1TWGdNWlpBRlRmekRUWjZYeWgybDZjTUpCOHRDc05MMW0yUUFDVWJjQWRxWjh4cVBsMWhK''@;'; put 'put ''ejVXeEZObWh0a1lXU0NTUWtWakpIVWpTWkNLd0NjRkd5U2dhSnRMYm5ETDZUTkV2aXQza3F5VjEza2ZPTDBvZnhNZWtqTFBlamsrWHFwRERKbE5iV0NFUWo2aXFBTk11eEJwZlpnRzZ0bUFoYW1kenI2ZEdzZ0UvQ042UTVvUVFQWmZrdE8ydWczUTdBbkQyRVJnMm9BZHRBR3lHc3VlbHR0NnFr''@;'; put 'put ''OVVBYldnazN2R1d6VEdSekM1clhSNDVzMTVESC9Xa2NJWVVhZzdYQWRsNG5WVFU4Qm12QnNtall6SDNibnZjbThjdUxnY0dHNjNvSzlaV2JXZE05Yy9mTTVveWx5VWk0TDlxczhXN2syR2Jqa1UvTWJjeGdRb3ltV0w0UG8vRnFtUS9leVdnS3EyaHpNOHd4OVBnT01HY1ZHT0NEYTNlQVdjMzFz''@;'; put 'put ''NEpPY3BnOGphOWZwRGt6Ykt3SW44LzYrN2IwQTZJQ0oxUXd4NUJuTTh6NnJ3SEd4dVlUNGZOWlA3OEY1dDhCcG9UTmgvZXpzdjdaamZNQmZxcUZiOTluT1FUbE5MdDhvM1d4b0dkbkRBYVZlV0d4d0k5eVN4bXI4WE5Dc3dMUU5jWjhISUU1VEVtckVrTUEza3FLb1BEeDEzbnkxOERBcjZaNSt0''@;'; put 'put ''ZXorSmxjQ2hodVdNVCt0VWQ0SXRpTGkvOEFPR0Q1TFV5bXhHV1pjdThXUExHY0RZYW5oTHkzbjlraWR6YkRITU94SFdET0tqQ3d0MS9kQWVieUhFd0JlbklIbU5YY1dDdm91VTN5aStaTTNZRmZKUTVRQXJvbmRBakg2b0poNEl4d211WnN1dkdIejcwN2MrNjI3dHZPZGI3NzNCM24zdDNKUG1m''@;'; put 'put ''ZWZRNnhlalVsUjRWV3VkYWpjN0ovNjhJYVVsZGJYbFppMXRHVWJLUVZSanpzcWFCNml1SHBQRzlReklJcDlMamVsZFZ0T0VFRWcwSjlwT1RpUjRJNjlYRmZwaENZdlQ0UUNkbkRkbFp4b1dSeGg4QTlUS3N5VUpNaWNya3hENDBqWHU2RlhVbnkxZVRCKzViU3E1R0dJL01OamNEYVRVY2o5VWZt''@;'; put 'put ''SkZSWmhrZTdzc0RoT0hPNnY2Sk1laUtUSmNVMzlDM2RmOUJYbVZxSjM5Z0h2TzJ0YkZ5UmZqenR3emRURHBmK01IVGRRTU8wWDdxNW51S2U1V213Zlc2V2FlSFJMZlN5R2VZWSt2RU9NR2NWR0tDRnorNEFzNXJyWndWOWFqT2ZjMXVaamRVdWovWGN4bjQyNWU4MFpPcUFPclFhckYzV1lmbjRL''@;'; put 'put ''MWVFQ1pyTDRuSlkzRVZ1YThoYkpQS3NncVFxMnltWXkzWmFlV1pMdHRPWmx0Vk05MHJMOWQ4YmFHL3ZsOVp5c1N2aUpWOERTVFgvbEJIc2Rob3VxUWZxcUFBZEFFcE1vTWRFK1hSVHZLRERjdGk2VEU1cVhNMEJxbDdQWjR6MmdEZmdyZk96WTYxY2pGUlVwcHBTY28xU2lsNmdjZWF4bGlPWnpP''@;'; put 'put ''SG1nKzAwVzNaM2U4dndjRXQ3Sk5uYjA1anNYU2JtcHVsb2RMcnBXTHBpWDNQVGRHeWU1c25PZEVhaTdaMXhtak1LdU9aNUFxOEFydnRBdnhQVXU0aTJlUzdBSG54QTlmeWlBby9GV1RYOEM3bm5CUVBxNTgvbCtsK1pVRDBYS25Qd3BoczVuOEp6NFVOZ0gwWlFFbVZ3TjYvcExTc0RMSHM5WUkw''@;'; put 'put ''NHNWSGZqSFZHQXlHaWpucDJ1aEc1aUhkSEdCT0Z5YjgyYlBONmZwNlBFd0hDb2xXR3EwaVBkS0pldDF4Z0lFcEdma20yMEdRV3FCYlBKdzNRY1pzdTJjYU1jeTJ5aGRoa1VnbU16T2FHS04rTUZnNi9aUmRnUmxRMU50YlhJOVNZYWV4cWE2bFAxaWRpVWNCY25UM2dEd1FEUVV2T3JGRFMzTGRr''@;'; put 'put ''WVBEemlVMEh2aUJ6T25EdXZQRmxmdnFiT1JuMFh0bTdkRUtWbmpIWHZWQVNXRzNiZkNJc2ZhQTNUTE0yZWxyNDJYQkxJdEV5TjVaUDI0alhSeEtxazJMcERuK2JQK0JvcXFtTnNieUVUcGFYa0VJUFpjcURXS3RwREJHZE5sVktrSzRFQzZpNEVEYTRBTHhtbld3V0JtaDVBQUZqUVFjY3BXT3N4''@;'; put 'put ''MHJkZU5MRkFaRENIcXpZZFVFS0MzQTNYUm80NDlzQ3h3cmdqK1RBdFJUM3hoQ3ozaGkzQm5SL291RkdFeVh3RCtiaWxxMkdXM0gzOGE3dHNpY0NkWnNOdHhiRDJPbWVMZGtVbkw5NGZnRGwzeUhPMTh2YlBhZDgvUkhWODRzS1BCWVgxZkRQNWZwWm1XSFAxNy9HenV4b1A5L2cvZC9PNFdsUUxL''@;'; put 'put ''SjZmc3pKNFg4R3o4MnMvMi93L2gva3ozOE16KzJzZnc2L2NpK1BMOUdhcVU3eVRWUUdWdGJlakwySTFRYktscFBEYmpQaW9leGpwZlFZVHduZVd6ZGtsOUpEWHd5YUFKTlY5V053ZDh2THkydkxhd0srVUpEbTJ5c3FXTkcrN2hBMUtVTGNwaUJ5OHFtTzI5by9uKzQ1a3gwOTI5dDJyT2RBYjNq''@;'; put 'put ''Zm1mTEpxb2FsL2dNVlBRVnoxY094Z1hsNjlHSDUxTktlVzRaN3o0NE9YZFUxUGpyUjJCc29yZ3luNjNyTDEzNjJsSTJPMWk4T3g4Y2pGRS84VEkvS3kwa3VML2ZtOFQzSzhMZWI0L1gwZHMvcHZqMmdlbjVSZ2NmaUZXcjRGM0xQQy9hcm56K1g2MzlsbWN2ZGJuUkVybXUyZ01YY2xnSHRyRlBP''@;'; put 'put ''ekJFTFRTRU5rUDhza0w5MlNRUysxRTR3ajlCVFZBcmFWWWtrNnFscnJqNUdCOGRRWGFPRXJjR2dweVFRS1BrRnJhWDZsdndML2xLb3RDUVlMQ2tOZGMwL3IzeUVPU2xuakc1VWhXcHlOcHNEYkxZd1FMbE5ZSjNwRlpzTm5ncXFwOXZhYkNYYjJXenFBN0x0YkRhdjExdmpyUTdhd3JZTk5wdmFa''@;'; put 'put ''S01XbThadDV3YWJpeHBzWVFFRVp6ZzRjdVBRWkUvWi9oNWZDQmg2b3I5c2Z5OEl1NS9VeEtLN292ODhFZlhDSi96Qi9ZbWhHMGNpVldPaGhTU3djcjEzL0xkeGJQSUFOMzhSMkxrOUtyM2hZZnZHejJqby9zOXh1amlJdG5sTzZlSkRxdWNYRlhnczdsWERQNWZyWjJVM2Y4N1BIbWcvKytWKzds''@;'; put 'put ''YWRxL0tjckEvbnoxVzNUWmZiZXJhNlE3cmN0b2V3MjcrV00rZm9JZXpiUElXMS9zOVBZWVhWcmVseU9kdzhKK01HY0RhSlZER1hsbHhjNWlqNjJCYS9odHMvZCtYc242T0RhTHVZRGphZyszWm9tN09kc0dHU3k4YlM5VDJDRjJ4Zk4vVFNrV2t0d1VCOVdJZkppQjVNYnRocXNzTEtmZWk5TTBE''@;'; put 'put ''UFNsbWRIWTBXRnhlWEZwY0dhT3pHNGFWQkJ5MlBvYVg5WVY0S3hsVitJbTBpZ3RlZmlIZTRDOXB6ZFdIRkZlVWxaUmJwemp2dnFtaE5CTXQ0aVZpRnU5aGp4WjJzVUV6T085MURlb0JuNlUxQ1QzTUdMUE9BNlZXS2llQ0FxZFZIOUlKZUZESFcxOENVbVdXMjNXdXQvRnJtNFJyb1dkUVRjVldw''@;'; put 'put ''WkM4QngxcXY1NUZDdDNxSm5rejlWbGhRM0JhNUFkb0VQNSt4MXRiV3Btb2JRd0U3R0UxaHIxRXN5NkVsdFlQTjVMUXFpQXFwTWxoSkQwVlp5WllrMXBXck9lcCtxeVN6VWdTR3kvbzNKclBTL0ZhR3pZL2xrMXBsdi9odTVndUZaRi9vNTF0OEtwN0xTWGwzUU9iZEQ2cmFubFhhWWoxNmJJZTJG''@;'; put 'put ''K1cyQk92bk9IMnkyalhXTml5M1BiMnR6LzViOGd6QURESVlpOUFCSnJrQllKNFdNQVVDR0RsR0FwVC96bHlPNTdVZ1Qwcmh6V3NYYkJwaTBDdW56U0dxVmpBU3RHZ1pOZ2draTE0djU5RFJVeEYrTVFWUENLTFNwM1pIYUNiRmFSTW0xZDFFRVVNYld4UmVzc1VHNER5Y1RpZm44YXFCYVR6UDV2''@;'; put 'put ''RjRhajAxWVhvaUgvTEx4elgrTFdtZ3lrVWdhSE0yeGJXWkRla1U5OTkvS0NQOVVwMVQwYi8yakNvbjlHT3Q3ZTFyWDkrUVZaR0xvYlhrWW1oSDRmOXQ5aHZzdWJ0eTl0elJjYlJkL0EwYjBYZDJhS3ZZZ2dMQWZKSFh5QUhQOTdFN0ZnWXpmVVdnaUsyQU8zNkdUTFA3S2VPSkMwZ1U1WUF5RmZL''@;'; put 'put ''V0xETWtnREh0V3VYWXplR25WVFpXeW9CS1BhSmY0VE8zekpHcUFzVmh6bFVWVEU1SlR5alZpb3lIbXBtSTRqV0c5S3h5aGVYS2hsQTllbWZHUnIyS0VDWmFzQjJJQVd3Qm1nbGZCdlJSRGVhK1JxdlRMTk5ncmJMajh1MDRMR09HU1ErbXJZSUtLRnMvUHJ4ZEM1cW9XaFFPaCt2REVaZlBIbXIw''@;'; put 'put ''QjFtWVY5eTBJdDJXdEZ2cUd5QTU5ZmJIMmNMY0luVzZnbzBwdU5YZ21VbS9rYjJ1VW5laHNuS2JGYXZ5Y2NFSHcyZDRTdTQyc1ZqOU5ySFl6YjZBWHZZRldLMG1vNUZhV1dkOWVVdGJuazlMYVdTRTY2eFRjbHZwWjdUT2s3Y0YyckdRVXNUdmZ3QjR3WThLVVFOcVJmZGtIUFdWUkM4cTVRb0N2''@;'; put 'put ''UTRFRFhINVVHZWlSeFNDWHJOcXdQbDZYbEhVTG9FYnJkWHkwKzBsZnJydG9aZDZiWVUyWXAzT3l0dWdUUzNBbVk1R2FZUTIyaHB0U1NVdERaYUd1aHEvdDZ6VWFhZVIybUt6WXRyUys2aTROZXYrRTlKMmNXVlZWZGdmTURncnExei8vWlladkpOMXZySzJocEpnVGFYTFZUWDZ0dEo1d1pkNkRZ''@;'; put 'put ''aXhpdkUvajFrZlhmL1VscmoyOXdDbWxQRS85N2VPZm96SHRPTHJlOURyd01NT251ZEFzSVBuZ1NoWGVmQWNJSzR6QTE2WGw1WEx5Q2R3YVZva3FYRHE2NVJVTGVabEhXZFBxdXNjZ1FMeWtHd3IwTnpaZFJqckJYWVc3YVc1NjA0SDBRaGVKakowcW8yVlRYTkxqcU5ZMGtKVlJXbXgyMlVwMkRZ''@;'; put 'put ''djFxNU15SzJlMFNINWpIcVl6cXpDYlQ4YzUxUExuMVd2VmNFc3kyTW1IWDU5N1kveU5JRm1hZm5OVS9rekFKQjN4azF4U0paakNuNndObGZIYTkxU3h6dDQrREJOY29MK1pvQUhQZ1M2MEFlMHpuZ0EveXYzbWVGNUJlT05jZm41cDlselZqdkxkSDlVMXYzV0xmd0dISXJyaGZjQXpJUU00MElY''@;'; put 'put ''T013RkJZYlg0RDZqOUFQOVA4ejBORmJwYWRyUFlRWXpJY09jM3dqRDgvbEpMOUJJQWMzNE5KdU1CbkMxQkQxUnFwRTNGZllXb0FKbnJyQlhURkVpU1R0RkorbVZHbmJ0V3JuMTFzVkZzQUVYYXZDSTlQUGVoZDRmeXZVQ1hwYVhuTTBVbUl5aWptcGdmVDR2M1FRZmkrUjZ2bHhhY0w3RXo4TitV''@;'; put 'put ''dzViNXVlZmRMTDdzekROQzVUSHg5N0pRMk5qaHlieHdScnBKYXdMTDRUeG5QU0RtdHlaeVUzS21Rbmc4UmZiNFJwODlsZGtuNTNhV2Zkeld3bjI3MkcycjNGWnR2SFk2aEE4dHhLckFnODRmU0ZuV3ozTVpIQmNsc0dmMzJHc2k3bjRnUDQ0VXAyVHRPVE9TWTZpcDdiWVpkeHZ2aXZuNHg5ZFFO''@;'; put 'put ''dWQ1K0RDeldjc2N0dXBmUHdCRjE0bTU2R0NzSDRWOXQ2R3l1bTVmZTUyQVQzSlhTOWdvS1hVU3E0WTg5VEs3V1V1QjhzcjVZcTlKSDljbkV1dWNHSnIzZ3pxNDZwOTdma0Q5eDg4ZFA4UzZaSEVZWHAwZWJxUEsvZTVqeTh1M2J1MEtKbnhmdzJjSFJpNGt0OUZDSE1XL2gzME8xMVhDNXJLVExx''@;'; put 'put ''eFhtY2d0QUNaaFFlQWhqUmF2V2JaYkNBNm5SSUtNSWxHUVJVTVNDYjlmb1NTTGNubXBwUS80WS9YMVVCM1huc2dGQWdXd0x3M2hsSHpNbDZsdGpXYmJEcFpoUXRsUEg3YWV6b1lQTk16ek5LYmUwNEhBeWU3RlRVdVhhUEtjOGJYYnFpcjZXeEtkZkhNNTQ3R1ZEdlQ1MFNkL0l5dnBKcGQxdXZI''@;'; put 'put ''MmQ2bVpQcjk0aGE2NERtM2RHK25lV3d1Szl0K1FLZkhHZjJtWkRxOXlPR2xuOUVjWFJtZVBvL21iSWpqakg1VE12M2V2TzFZWnhqOVRuUDZ0Zkd4V08wem0yZVRQTStQYktGOW5xdEw1em5ENTNrRXlYWFRuYXh1dWd2OWQ4WVZqNVdYYVhUNkVxekJ4WVZFMEJTQXVhRFpQbGNBek04bDBQa3U3''@;'; put 'put ''dmRwOGRaVGY5czJ1UUp2M1dyYlhJRzNhclpqcnNBMkRYbXVnRGtZOGRQMEhLL1ZBRjdGSlVMTm9iZFJIazdhcnIxaW02Q3orMzJybHlvWlAzNVN0em4yYkR4MHlSSnllYjlZem5VSFdnZmpDb3U2V0FYUml1WEFrNlcwNEZDOWM2SzhjNUdOT3llS3VpVkVLekJRUGlLMEpjbWpmdFBHdldXanlp''@;'; put 'put ''MjdEYnZ3RnEzWUVlTjIyN2ExSGQ4MVU2QzJtbTJhSHZ5WlM1MFA0TGZLTE1jdkhoemZMc0VqdmhUZU1kMTgxNHgyYzVhSE5seTVjLzY1aWpmUEtyd0pmTDI0QTI5ZVZIZ1Q2K3M0YjlZQWI5SzdBcXJRRnpNV054YVF5d3pLd0VUdklwUzNGZ0ExN0tTR25ueVNHMmlRVDA0ek11Z0pzL08ySE5o''@;'; put 'put ''RWFCTU5QWWg1TzIweU5adkE1V09iTGEwME5KWUlKaDVNdG9vNjdIU2JxTmZwRlhmWUkrckkwenNPOEQ3NzFuM3dPT205QjV1eTRIcHkxeUN3dlA1T2x0ZmZnTDZXS2E3QmVxSFdTUXg2QnlhR1hGS2ZOa2YvV28zMlZpT0dpV0xEU1ZCY2dHRmFVeWdJbWdVZHJ5emt1WHZJZ3hRczFlZmI2QTNr''@;'; put 'put ''cHJkcWxLbmRIcDZsQnFJanFtWUN4Uk9WMncyb25oVWJ1QUZUTkxLaDJZR1N0eFlndUNuaDQvZ1cyazIwNTJzU0FtWFZSWnV6Q0p2MW8ybDFtVUtmMnhoZzlNZnVwR0EwbXBacDlJb3ROT29GRzBaZ3R1d3N0MlhKeEJaN2wrY2h0T1R5RUk1dW80ZDRyUHl1WEt6ODZBaFM1VEM4bk10ek1LRy8z''@;'; put 'put ''NUxEd05xeTgyMFdsd2VZbTdmTG93QWI3QlBidG0zUHgvcHg0VzRrMzZleGg5Mm5FYURuTTA0UVJ3V3dyWVZBNHN4Tmx0TlA4bkgxdk5NRUxRS0JZbi9Rd2U4bll0a0VtOElRbTY3ZklQZU0zamF0dCtWaUQ0NGoxOG4zY0pEejdOWU5TNmtjYlBCNTNQZWNWRi9Ld2VjNkFIT2RBNy9JajI3aVV0''@;'; put 'put ''cFNySWRORVRFVy9GaUg2WmxORVh2aVo1RnI0RkU4TEFkN3krUktGMXBac2sxOHQwcCtUV082dWVxVGpTRmRZNENXdUlXOW9pckV2YlVTSlptTDRwSTVGa1JTMTZVY3pydXZ3YkxOQlNxS2t3aDd4ZTRLWWZUWXluTmU4TmdXT3VLMUtGUm03bVcwSUtMdnFQSmN6aXA1THZEODNWdmE4ck9IaThy''@;'; put 'put ''WkF4Ym5rYXJ0YWk1SFpnWGRzSVdPMkIwZWpOWTZaRnRyUzU2YlhQOUJhVzJCMjFyeWVTTnZ1NnEwQmQvMzJ6dTBmVTV1UytPQkgxYTFQWnRycTBkbmQyaDdVUmtYNjlzWTNiQzZXdXBQRjlJNEJNMUlwelU3TEE3QkNtRElBV3E5ZXhoUkY2SUNlMEM1N2twVkRtdklsOEYrZmt2dEs4MGJQMHd1''@;'; put 'put ''dnMyN1BOejBMby9Qeks3Mmo0LzFrWXQzN3Q2OWZSKzUraVNDYmdXZU95MVhKOGw5cEpPaXY2dHZiTHgvZFpaYzNMMzdUcm1QRVh3RmVRNzJVYzdHTnhLYWp6OWlBQlU1dEYzK2VBRXlCNFZjTnI0Y2NtSk95Y1BqbFkyT1ZHbHB5dEZZTVZGTFJxb3FVZzZYeTVHcXFHTGpUS0tIV0t3bHhNYTVa''@;'; put 'put ''Rzc2NWt4L0picy9IeW1SYXdsR3NFT29aTFVFemF4WGVtOE96YVpmMVdJQk9IdzJWd1FxdksyS0F2WDk5VGQxZFVVaW5aMFJlb0U2L1NJai9QZElWNEkvY1B0NGp2d2VRTG9iV1ZFcm0wRzBFQlpqb2RReW9tV1ZBT3hXR01EcExKT0VBbjB6d2F1bUFpNk5YRlVnMzhPdUNqTGYwRkhoN3M4Rmxo''@;'; put 'put ''OWhVU0czSEZMbWQ3bVRkbnc3ZVFGRzdtSGpwcDNRczRGVmFUa3dIdEpqWVpBZW1KTlpxazZCZmxlVkt6U0lNTUdNUXhmb1VLMU1ISWlhZk1vVnkvU0dkSzR5L2JqQVYyeDFtK3h1YmJwbzJzaysyOXk2dEdXR2ROcXNCUVVWWHNNNytFLzlEWHcvdXZCL3NGb0lFWlh5aWdFdElHZUl1cmFuN2Ja''@;'; put 'put ''Y0RZVmI5QWZsb2dpY1BmQ0JRZktLNDVZUE9kN0orSzVYK3RuNmsrdGZBcVlLc0I1SytGM2tHK3UwQXJtK3hJMlhrbC9nZ1UxUFZWVjRuUWN0V1FBekp4OXZVdVFqNnNWMU84akhWeFQ1aUhyUjR3aHQwL1lZZnZvdDJ4N0RYYXEycTdtMks3aC9pM3prYlovTHRWMUJYK2YrN2ZvZ1BjOVFuNFc4''@;'; put 'put ''K1R0dVA3ejVPOWwraUFCTW1QbkdRekxNMHd5R3FHQjRyUDN5WEQ4RlFBM2J4OXBmeU1YYUM4YlF0am1RdmVpOU8raUdWM0xuMHIwSHVPNXRSUDlHVExqanJlK0JmMVdxd1IxelNodWgvVzIwRWZSdi9sNXAwNDAvZ3k2U3p3TE5sREY2R2RwY0VNZnB4YTdFeTNsczlvWDhCZmJrOWcwMzJEUGJC''@;'; put 'put ''MzhXZlpzOENDdTJBQVppdkxhTnhISzFiVEFtL21zMlpqbTkwYW04RU9oOFF5R1R3SVJhb0RoZ1l6ZEliUnhidStOVXNHNkhhVldwUHZQNTRVZklnMFZoUGo4MnozK0dlZHB5ODZSa29reVlZdkZodkF2V1pObXBMb2pXeGJPNm9FMTE4WSszK256d3I0WCtleGcrZWVudlh2akE4ZFFMZFBOT2RC''@;'; put 'put ''M3NQVGd5Ulg3NC9zK01ocTNBSXdqa1FHVDlkNW96cXIrUDBnWFVPSXQreWZNYzR4YXNMZVIvdmtTUGRXWnNOT21NNmo5NVlpK3dDU2FUc0dRMUZJa2E5VjlLU2IxRlEvWlhUM2hya2JZVzVMK1gwckp0dTIzK1lzcVd0dUNCTkkyT1pqTEtYMDRablIyZDJiMHJrODJNRFBURnVtS2R6VTNiL2hV''@;'; put 'put ''VngvL2dyNmhVYmZvOW9JS3RhdnFULzhJS0hza3F2NHhFcGZQSzMxdjVLL29oOGFmODRaWDg1NG1HM0I5aHlmOHhGZ3pXZlJLWDRMK2pOK1k4QVFaenJLNEx1d0YzZ2Z0MjMzMzM3amRmdEQ5eHdjRnJXUUd1UW9FVEdGdzQ3UlpyUC9qQjNaLys5T0NGSit3dnZzeDB3Uy9rTzNTamFDSXpXdVlo''@;'; put 'put ''R25ySGdJbFo2UnBRY09CYkx4c3dNV0pzb3JVT3VSb1hNMHRPNVJFUStCNUZEWkc2MmhxckxRak9vTlVlTEtEQnE5eEZRMkh3RkZubVNTclpTZktWbFRSaERKRHM5cktRS2l0dlNkdzZOUGFlRmZmTUlORU03eTladm0xRUxta1p1TmFMSzZXWFlDR3QwdmNyYnNwT3NtdDN1NjhlN0M4dUFDWGVl''@;'; put 'put ''MWs3SzJnWjYrb3ZLN0hiK2dkbVpabmxKUTU4UGNnNTNST0UxaERZYzdkN1gwL3Y5V2FHREpneUFraGRyOVZMaExVMStwWExYV2lSNzJMUVAxVmlMOUNTMkRaM1BXMjlLNkhsOENYdVN2amozaDJ2U3BCajlpMVV4dU9ZZk9idytWd3N2NFhxTHZaY2RjN0tubC9NUFJldlE5dkJvNVdyMU0vei9m''@;'; put 'put ''ZktmaXAvZmxjTy91Z3g1VDZLUGVSZGdBTXZpZ01PcW4wMkREalk3R01waU1oN1dJSE5LSGtYODdqVWFKRTlybldrUWc5M3Y5UUlrbDJ2ZXpmblByRDVVbiticndQODdVK3AxdkZDRGg4RlIzTTUvT2c4dTNOR29ZT2sxVCttM0I2RGFkNGJ2TmR1ZmE5ZG0wRC9ENUQ4RWlJQUFBQUFBUUFBQUFF''@;'; put 'put ''QUFBOENHK3hmRHp6MUFCOEQ2QUFBQUFEVHdaMkdBQUFBQU5TK3BPdi9RLzdvQkhVRHlRQUFBQWdBQWdBQUFBQUFBSGphWTJCa1lHQSsrZThLQXdQTG92L08veXRZU2htQUlzaUEwUkFBcGZJR3F3QUFBSGphZFpRL2FKTlJGTVhQdlY4R1JSeXNXRkZzYXpIV0prU2ExdGhxd2NZMHhWU1RTRnRy''@;'; put 'put ''ZzBJWGNWQVJzYUNwNHVKU3NRNHU0dVJrRUYwczZ1Ulcvd3ppNEs2VE9FbFVXbWdvV0FyMTg5eG5JakdKQ1ljZmVmbmVlL2VlZDc0bnk1Z0VQNUtsV3FrZHlNaHJER2tCUWIySURpK01pRDdFYnF4Z1NDNmhud3JMZmV6WGNTU2tDVWRrQ2pGWmo2UTg4eGYwSlhvbGoyYisxNldqMktYVDFDUzZO''@;'; put 'put ''WTllUFlVK1BjdnhQUHJjODV5ckdZNXhIZktZckdLck44VzlTdGl1ejVIVE9VUjFsYnlHdEo2bml2ejlFV21zSWFPdDJNS2FKblFmQnIzVHlIa2VGZUwvczBnNzN1UHpyRjJ2STZRTEdMRTFBd2ZRcHZQVUUyelVXNnp6Q282ejVoV3lTNzZoUjBmOFh6S0J1QjdHWHAxQlZuZXlsaG11TllhSW5F''@;'; put 'put ''TzczbVR0T1F4akNZZXc1TC9YVHFSUXdyQjNCeWtiWjUwUk40OXpaQlpaS2FGRGJuQmVqbjBtME93Tm9VVWo3RzBjMjNRZGV1UXVPcVVGRjhpd3ZNSkI4OTN0T1kyWTFTZ3ZXRXNiUWp5THVLdnJOb0w0aVFFWmNPTlIrclhIZWRWQWdTYlMvRFB2cW9RMS80UDVSeTVTWDczTkNGZThxNVVHa1hF''@;'; put 'put ''MC82cGwvdEZubmxuV2VkVkEzanhwdll6OUsvcjJqdjZseUNMMVJhL3kvQ3ZlMWNweVlUVC9xbVgrbWM5RzY5ZjJyS1gxYnZ0WGFEbml1VmkvK3FEc3k1amJwekV0YTNiZVpkS3J6NnozRTczckpuM3lxUFhoTXNnY1dBNHRDMzk1QnUweWlIYnoxdnFyWThqVkVLa3dzQUhSd0NidXk5eGFkdXJJ''@;'; put 'put ''TEZ1ZTZzaDh1NHhWYU9kakh2Mkg5ZzY0SE5vWm1uL2xkOEh5V0V2THVCU1lQZE5UeFBHZFBFRWxxRGZvMXpESDRDY3JhOWF5enRQeW5ySU1lTVUvOXcxV3FjZUF4aEh6THZNZWFTcmZLWXZrSXZrSUovVXQ3d3JlUzRFQzM4TWtnbFJZNS93ZkxoOGU1L0pjRzN5enlQNEdqNWZ3dEFCNDJrWENY''@;'; put 'put ''VWdhY1FBQWNMdXVNNzh1TXp2UDIzbWZlcDk1bnYvejdrRWlRaUpDSXFJbmllSERpQmd4WXNTSWlJZ3h4aDVHUkVRUEVTSVJzWWM5REFtSkVTRWo5aEFqSWtSaWpKQWhFaElpTVVhSWpOakxZUHgrTnB0dDhaKzg3V09YclNzTFVkQTJWSVRLMEgzM1h2ZFpkd09HNERBOERMK0ZEK0ZhejJqUFVr''@;'; put 'put ''OEpZWkFVVXJSajlobjduSDNWbnJjWGUrSGV1c1B2V0hBVUhBMG43a3c1dDUwbFo4V0Z1SUJyeHJYbU9uRGR1Y1B1ZGZlcHgrdlJQZk9lRGMrSnA0R2lhQko5aWk2aE8rZ3hXa0ZiZmMvN0hyMFQzbXEvM3YvR1ovTmxmWG5mbjRHeGdaY0RGVC9sbi9lWEIwY0dsd2ZQTVJpYndoYXhISFllZ0FK''@;'; put 'put ''YVlDV3dIYmdKTkhFS1g4Q1A4WWRnSWpnYXpBWlhnaCtDRjRSR0pJa05JazhVaURPaVF0d1M3U2VqcEpma3lBUTVUbWJJQlhLTjNDVDN5U2I1R1BLR3VGQWlOQjdLaEpZcG1NSW9pVXBTazFTV3l0RVFqZElFTGRDQUhxSFRUSnBwTVIwV1lYMHN4U3FzeGFiWUtiYkVmbU92MlJyYllqc2N3azF6''@;'; put 'put ''MTF5TmEzRWRIdUY5L0E2L3p4L3hKZjZLdndrcjRYSzRIcjZQUUJFMHdrUkFKQmxwUkRvQ0l1QkNXSGdsZEVTM2lJdUthSWtwc1NGMkpFUWFscmFrQSttejlGVzZrbXJTYnhtUmNYbENmaWZ2eW9keVFUNlZMK1VmY2xOdUswNEZVK2FVVzZXdHdxcFhKVlZOVGFxVGFtWklqL1pHaWFnUUxXcXoy''@;'; put 'put ''Z3R0WGR2U2N0b243VVM3MEw3SHROaEJyQmo3RWl2SHFyRjdIZEpSbmRHSDlCRTlyYS9xT2Iyay80cVQ4V3g4TDE0SENBQmdERXlEWjJBUnZBWWJJQThLNEF4Y2dwK2crWitCR0l5Uk5tYU5QZVBJcUJvdG81V29KOXFtMjF3MTM1dTdadG1zbW5mbWd3VlpxRVZZODlhU3RXNXRXdm0vYW16QVRR''@;'; put 'put ''QUFBUUFBQVR3QVlnQUtBRDhBQkFBQ0FDZ0FPUUNMQUFBQWtBRkJBQU1BQVhqYWhaTE5Uc0pBRklWUEN4cUloS0F4THJwcVhMaVR2eWdZWEdyY0NHb2tscDBKU0FWaXNkQVdFMS9GTnpEeFFmeDVBamMrZzB1WG5nNjNDQVlsazJhK21YdnV1VE8zQTJBTkg0aEJpeWNCSFBJYnM0Wk5yc2FzSTQx''@;'; put 'put ''cjRSajJFQWpIVWNTVDhCS01pYzh5YzcrRUV5aHFobkFTaGxZVlhzR09Gbm1tWUdrUHdobXNhNS9DcTBqcGNlRm5iT2daNFJmazlTM2hWeVIwUy9nTmFmMXl6Tzh4R0xxREE3Z1k0QjRlZXVpZ3k1T2JlT1JYUkI0RmxFZ3RSazNxdWtyamsrdWMrOHp5bVh1TExHcXdtZWNwSnhlT3FNTGRObmxF''@;'; put 'put ''N1RtNVEzTFFwSzdBbkx3YSs3akFNUm80SWMxejJaNXhXVnpIL0ZYSjRzcWpxcWRPYWs1Vlhsek40bnhGalV0VjJJRlRPdGhUOVpya004YkRXSlZ6KzU4ZWhYME51S29neDNFMzQrd3EzLzdFTmN1WXkzV1U0MHRXaDlHQXV5UCtrVWlUNHh6VjdLdDcvdFRNemIzalgzdlJyUnZrRnQ5eTZCQk1P''@;'; put 'put ''bGFUL2gycHFNbFJVckV5ejFaZ3ZJSmR2cGpvMVpSeFE1M05DZ1BwdjAxdm45bVJheDFEN3ZRWTh4aHp2Z0hGZllWakFBQUFlTnB0azFkc0hGVVVoci9mc1hmZE5rN3Z2VmZIWHZmRUtTNXJ4N0ZqSnk1eDdNUkp4cnRqWi9GNkY4YTdjV3k2QkFJZVFQRENNK1VKRUwwS0pIaEFvbGZSZXdmUmVh''@;'; put 'put ''UUg3OXdKWGlUdXczei9HWjN6bnpQMzNpRUxkNTBiWUI3L3MxU2JmcERGRExMSndZZWZYUExJcDRCQ0FzeWtpRm5NWmc1enArcm5zNENGTEdJeFMxaktNcGF6Z3BXc1lqVnJXTXM2MXJPQmpXeGlNMXZZeWphMlU4d09TaWdsU0JubFZGQkpGZFhVc0pOZDFMS2JQZXhsSDNYVTAwQWpJWnBvWmo4''@;'; put 'put ''dEhLQ1ZOZzdTVGdlSE9Fd25YWFRUd3hGNk9Vb2YvUnpqT0FPYzRDU25zTGlkcTdpYW03bUJPM2lmNjdtV3AvbVlPN21OdTNtZVo3bUhRY0xjU0lRWHNYbU9GM2lWbDNpWlYvaVdJZDdnTlY3blhvYjVoWnQ0bXpkNWk5Tjh6NDljeHdWRUdXR1VHSEZ1SWNGRlhJakRHQ21TbkdHYzd6akxKQk5j''@;'; put 'put ''ektWY3dtUGN5dVZjeGhWY3lRLzh4T1BLMGd4bEswYysrZm1MdnprbmxLczg1VXNxVUtFQ21xa2l6ZEpzemVGWGZ0TmN6ZE44TGRCQ0xlSjMzdEZpTGRGU0xkTnlyZUJ6dnRCS3JkSnFyZEZhcmRONmJkQkdiZUkrN3RkbWJkRldiZE4yRld1SFN2aURQL21TcjFTcW9NcFVyZ3BWcWtyVnF0Rk83''@;'; put 'put ''Vkt0ZG11UDltb2ZUNmhPOVdwUUkxL3pqVUs4eTJkOHdJZDh4S2U4eHlkcVVyUDJxMFVIMUtvMkhWUzdPblJJaDlXcExuV3JSMGZVeXdNOHlDTTh5a004ekRYY3BhTTh3NU04cFQ1K1ZyK082YmdHZEVJbmRVcVdCaFZXUkxhRy9IV2pWdGhKeFAyV29hOXUwTEhQMkQ3TGhiOHVNWnlJMnlOK3k5''@;'; put 'put ''RFhHTGJTU1JHRHhxa0tLK2tQZVJhMllYNG9ra2hhNGJBZFQrYmIvMHAveUxPeVBhdVE4YkJkRkRhSEU2T2psa2t0SE00SS9DMmVlOVJqaStjVE5TeHN6YXdjeVFoOGJWWTRsYlI5TVlNMjB5OW0wRzVleGwwVXRtZDZ4RE05MmsxNjNJVy93NXNoWVJqb09KMktEMXRPYWpSbXBaS0JSR2JrNnpR''@;'; put 'put ''ZEhOT2hNN09EazltaDAzUndETHBNMVpnTGZ5b2VMU210REhvczgzV2JwS1NacHNlYkptV1kwK05FNDhNNXFmUXowUE9meVZLWmtiL0gyOEdVWVVGdk9PcUVVNk5ETWZ0c3dYaUc3c3ZRRTlQYTEyOW1uSFNSM3o5OTJwUFRwNTJlT0ZoVzViSXNXT25ySFhhc3FXczFidEJySE1aZDVQVkdvclpq''@;'; put 'put ''ajBYSDhzYlBxM1JkYWFpKzJtT054d2FQamI0K1l6VGhJdjAyV0ZJUzlGam1zZHhqaGNkS3cyQlRkaWpsSk55Z29xa2h4eXEyWXNsOHk1M0ZTUGZ1cDJXUk5mM1o2VGhnblIvUUpMcmQwN0xBKzMyTU52dWExbmxXK2pSTWNqSWFpN2pKdWRiWTFCNUZiQ2N2WW52cUg3ZGx0eUVBQUFCNDJtUHcz''@;'; put 'put ''c0Z3SWloaUl5TmpYK1FHeHAwY0RCd015UVViR2RpZE5ra3lNbWlCR0p0NU9CZzVJQ3d4TmpDTHcya1hzd01ESXdNbmtNM3B0SXNCeW1abWNObW93dGdSR0xIQm9TTmlJM09LeTBZMUVHOFhSd01ESTR0RFIzSklCRWhKSkJCczV1Tmc1Tkhhd2ZpL2RRTkw3MFltQnBmTnJDbHNEQzR1QVA0Y0pX''@;'; put 'put ''QUFBQUFBQVZpWTlHd0FBQT09KSBmb3JtYXQoIndvZmYiKTtmb250LXdlaWdodDo1MDA7Zm9udC1zdHlsZTpub3JtYWx9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1Jn''@;'; put 'put ''QUJBQUFBQUZhRUFCTUFBQUFBb3VBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmTkg1NWtkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY1lBQUFPZGtEQ2ZwWkhVMVZDQUFBSkxBQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJ''@;'; put 'put ''QUFBbE1BQUFBVFFBQUFHQnBFcThKWTIxaGNBQUFDWndBQUFKc0FBQURubmRERDdGamRuUWdBQUFNQ0FBQUFEQUFBQUE4RWhFQjhXWndaMjBBQUF3NEFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVuUUFBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNmQUFBT013QUFHOGtIZDdZbDJobFlXUUFBRXRJ''@;'; put 'put ''QUFBQU5nQUFBRFlMYzRnUmFHaGxZUUFBUzRBQUFBQWhBQUFBSkFlUkJDQm9iWFI0QUFCTHBBQUFBb3dBQUFUYXVZNDBKMnh2WTJFQUFFNHdBQUFDZEFBQUFuclUrN24yYldGNGNBQUFVS1FBQUFBZ0FBQUFJQUtVQTFCdVlXMWxBQUJReEFBQUFZNEFBQU42TWdpSVduQnZjM1FBQUZKVUFBQURv''@;'; put 'put ''UUFBQmlHWEZqMktjSEpsY0FBQVZmZ0FBQUNCQUFBQWpSbFFBaEIzWldKbUFBQldmQUFBQUFZQUFBQUc5bmhZbUFBQUFBRUFBQUFBMUZHMWFnQUFBQURUd1oyR0FBQUFBTlMrcHZWNDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYx''@;'; put 'put ''RDRCN200MDQ4RE9sb3BObHY2NDVTZVhYTFQ1MXNYelNhK1czQUYzQUFBQUhqYWpWY05iSmJWRlg3T3VmZStYL3NWYWlubFIrZ1lJWVFoYVRvZ1RKUWdHa1k2MHhSVXhsdzFhTGJwbklNaGpESENOdWNLYzJBV0Fwcy9YU1VMUSsxMGtncXNDbmJXa1lZd1J0eENaQkxEb0RBR0ZhcHhNb1F0QnBW''@;'; put 'put ''M3ozdmVEL3ZXdHRNKzZkUFRjKzk3MzN2T2VlNTM3Z2NCa01jNDFFTG0xTlF0UUJFOFBZaGpPUDRSS056aWJ5Ni9EeFZMdnI1OE1TcVhMRjZ5bUxOQmZ6S2F6a2pZOGJrOGhtTU1KcGpIWVR6cVhFczZHaTJ6VlNYYWdJZ1B5ZUFWZkdLVStRSXFQb0tnSnQ1QURwaUo5ZmdRc1l5Q2NodWNKeU9s''@;'; put 'put ''RXlVWXhKMmRqVHZpWitQRDhURU04Qk9mRzNEa1VML2VMbFQyK3YrdCtKRUJWM2h6d0pHakE0L0Urd1lZZVRZK0hyY24rSmovTUgvL2txRHYyK1BYNG8zeFJ1WjFMRE05Z2RuNkhLR29KaHcrVDNoTUpRSytRRVNZVHVSd0xWR0VHVVF4Y3p1VGxWcEpDRmJqWjV5NWpnak0rSHI2ZHhLQ0Z3bkJI''@;'; put 'put ''d2pGUWNMak5jTGpHQkZ3aW9qd0JoSGhEQkhoTEpIRE9TS0g5NGxpVnU5RHJoWVRlU21UTWhSTHVaU1RLNlNDUElxVnpYUHR5VlRKZUQ0emlSRGJkN3BqdFIwNzI3RzNIUWZNSVlwUVF4VGpSaUtQK1VRSmx1TDdYQ0dKSkxKSUlvc2tZQ01lNC94R29oaS93aWJPZndLLzVmeG5pQkpzSjNMWVFS''@;'; put 'put ''VGg5MFFPclVRUm5pZHllSUVvd2k2aUdHMUVNWFlUZVhRUWVld2g4dGhMNVBFblF2Qm5RaXc3RVk0VEpmZ25rZVpGTFM5cWVmR1dsMkI1Q1pZWGIzbnhsaGN2STJRRTgzV2xYRWxPY2hTNGFqVXpOSUUxcm1adHA3S20wNW1aR2N6SVVpekRkN0VjMzhNSzFuSTExdUNuZUpCWldNZm90ek9pNTFu''@;'; put 'put ''SkYxbkJnNnpjTVZic0RWYnFMSGZ5dnAyc01yNjNJamxmK29DZHczMnluSEVQcHI3YXFidU44WC82VWF1TjhPK1pBVWZlSkM3MDgrVDVUenBQY1dmOHIvZ2Y4U005Snk5NzB1SXo4ZFo0NjBmL2RXZWZ0MmVVSnpqUmhKZ21GRjhoSEc0alBHNG5BaFlTRVJYeEdPY2thaEJUZzVvYUZDMUVoRzFF''@;'; put 'put ''WkpVV3E3UllwY1VxTFZaWFJSZmhjSnB3NkNZY1BpQUNMaEdSREpFaHJPdFFHVW9lSnNQSVNVWEZLaW95V2taemZVVVZyaUJLTUlRWVpFb1hVN3FhMGwxQjZWOGlza3IzRmsrVWlTZG5TbmNGcGZkbzNGdFUzcUxLV1ZTWGxaNXFQRlgzUzhUQXVrNmk5YVpaTFVTWUtOZFpuRG5UcnpQOWFpSG1S''@;'; put 'put ''TVZhaUR6UnNtYml6eXJhV1JaeU1sbXU1ZHVUVDY4YVJqaWY5YnFOY1Mxa0pJMk1wQW1QTTVvbjhDU2VRak1qZW9hUmJPTnBiT051TzdqTHZkeGRGMnZReloxZDRnNkc4bTBqK0piUlhIR002VmxSYWgybFBQNEo3WExNdy9XMHhPenIyWWs2b3pIa2s4ei9IbGtyNitWaGFaTE4waXhiWllmc2tw''@;'; put 'put ''ZGxqK3lYQTNKSWpzZ0pPUzF2eTd2eW5seFNyM2t0MCtGYXFlTjBvbGJyTkoyaE4yaU4xdWw4cmRjNzlXNWRwTXQwcGQ2dmEvUWgzYUNQNmliZG9rOXJpN1pxbSs3V3ZmcUt2cXF2YTZlZTFHNTlSeS9vUlFjWHVVR3UzSTEwWTl4NE44bE5kbGU3bVc2MnU5SE5jd3ZjN2U1cjdoNzNIYmZjclhJ''@;'; put 'put ''UHVBZmR6OTB2WEtQN3RYdlMvYzV0Y3krNGwxeUgyK2YrNnY3bURydmpyc3U5NWY3dC91cys4T3FMZkttdjhLUDhXRC9CVi9tcC9oby95OC94dGY1bWY2dGY2TC9oNy9YMytSWCtoNzdCci9Yci9jTyt5Vy8yelg2cjMrRjMrWmY5SHIvZkgvQ0gvQkYvd3AvMmIvdDMvWHYrVXZBaEg4ckM4RkFa''@;'; put 'put ''eG9XSm9UcE1DelBDRGFFbTFJWDVvVDdjR2U0T2k4S3lzRExjSDlhRWg4S0c4R2pZRkxhRXAwTkxhQTF0WVhmWUcxNEpyNGJYUTJjNEdickRPK0ZDdUJnaGlxSkJQQjJyZER1NXdYaTJjYTF4VThKWVo5eHFualhHalJtK3hYaUs4U3hqVzQxMVN1ejZ6R3FUbEorcGNwVnh0ZkhjaExIYWVLZTJr''@;'; put 'put ''eHZNZjEwUDQ1VHh4Y3hUemNaVnhxWEd0N2hGNUJialZmMnpuc3ZFV0d2K1BvdzdqTnVOMS9XdzNKWEdidllTNC8zR2pYMDV6Y0FBTzZrM25xUWRuOFQ2eTE2NTZ1aVA4VlhqbmNhcmU1aDUrelQ4ZjFabWJudDRWV2JQdmV4TVRSdk1mNVg1cy9ac3krRnZ6TDRyay9uMExiMXNHMDNybS9VM21U''@;'; put 'put ''MDN0VzFPcXBtME9tblVxVDRMZHNHZnpHazFlNmRiZVZtOUJZMTFtbjAwc1FzMVRYT1NhanZOVE5iZm1MRVBtZDFnTlRwcU9qL1ZvMEJxdGVQeWlVQmYveFN6TDZhMnpVbFZuZlduSjJoV1JqUFZtY3luOWc2ekYyV3FZSG5UU3ZNM216OVZXbFhHVHJOYW1zbDhYL3U4MlQreTZHNHkrKzltWjFl''@;'; put 'put ''dWpiY2xLOGZQZmF4UzJUZk9MWnp1amsvQnZXY3FQbXYzVXZEZU5aRlpTVzZubmwyN2lsMHd1V0ZIbU1LYldBN1RjQTE3V05LNVM5bTNyMk5QVHpyM0VMdWpsbHZuSHNydlZiWHNRM1hFTU56RVBqZWNuZTVXZnZlcEp5cXRsMytHWGU4T2RxMmx2THVOdGR2YmRIYjB6Vnh2Q3p2ZlhPdDlYMmIz''@;'; put 'put ''YTJlSC9DTU80RnU4MFozRkQreFcyWVR6RXZBNE8vRm90RmhQYmVOK1JhNnc3MllSSkY1aEttekFQZVMxN0hZbEdNbDNqV2RFazNFMWR6MmJ1NXlIQlJ3OWFOcnRNajV0YkdjR1J6SjgxUGpIeHM4Wm43Q3NqVE83QkYva2UrN0Z0eVVuUlZJc2VTbVJ3VkxhZDBmL0EzSUZvYmNBQVFBQUFBb0FI''@;'; put 'put ''QUFlQUFGRVJreFVBQWdBQkFBQUFBRC8vd0FBQUFBQUFIamFZMkJtOG1XS1lHQmxZR0hxQXRJTURONFFtakdPUVlUUkRNaG5ZR2VBQXlRbUEwT29kN2dmZ3dPRGd1b2ZadW4veGd3TXpPY1lEUlVZR0NhRDVKaFltZFlES1FVR0pnQzhpUW9yQUFBQWVOcTFrMWxRamxFY3huLy90MzBSS2hUMTl2''@;'; put 'put ''WnAwMGFpRkVYMnBjaStsS3pac3EvWkd1c1FRMFZTeUo0a294a1RVMU8yRys2NE5XT012cytWVys0TUhjZFhURFBNdUhKbTNuUGVjODZjNTV4NW50OGZjS0hyQzBGMGoxVHFtVGpucmxLc3h5V013NDJCbEhDTE91N1NTQlBOdE5BbUhoSWdneVJNQmt1Y0pFbXFwRXVtVEpVY3laTkNLWklTSTlW''@;'; put 'put ''NFpieDNpVEtQbTYzbUUvT0w1VzRGV3NGV3FHV3pvcXhoVnJwMTMrWWYrVTBwZllmRmpSN2FqMm5qbWZoS2Z6SEZKckdTS0NtU0pobVNKZG1TS3dXeVFUWnI3WmZHVzYxOXlHd3gyODNQbG1FRldFRldpRk43cUpYMlMxdDlWQy9VYy9WVXRhdFc5VWcxcTRlcVNUV3FCbFd2NnRRMVZhdHFWTFdx''@;'; put 'put ''VXBXcVFwV3BNNnBVbmVoODA1blZtZlQ5azZQY1VlRElkOFRZQjlyOTdENTJMN3ViM2VqNDJ2RzU0L0NIa0hmSlhWNzlwK1p1ZUR1VDRJOWJCS1A3ei9pSFJ0ZEpGMXgxZHU1NDRJa1gzdmpnU3kvODZFMGYrdUpQQUlIMG96OERDQ0pZWnp4SXB4NktTWmhPSkJ3Ymc0a2draWlpaVdFSXNjUVJU''@;'; put 'put ''d0tKREdVWVNRd25tUkdNSklWVVJwRkdPcU1aUXdhWmpOWE1aREdlQ1V4a0VwT1p3bFNtTVowWlpKUERUR2FSeTJ6bU1KZDV6R2NCQzFuRVlrMWFIdmtzcFlCbExHZUZmdjhPZHJLYllnNXhuTk9VVTBZRjV6bEhKVlZVYzVFYUxuR0Z5OVJ5bGV2YzFCVDlaUFEyRFpxbGU1cW1uMjBWcTdVZDBX''@;'; put 'put ''emdiTGMzNjFtaisxMmMrTzFXNFY4Y3ZFQTltMW5aWTJVdG15UkdqMXZZempIc09DUmM4eGtwVWJvQ0lyaWpkeDZnYVpZRVhRL3gzV2VLbkdIRXNvMjliR1VmZXpqQVFWMUwrem5DVWIxMW1GSk9jWkxYdXBwNnNVNjh4RnQ4MkNoK21uL1BINUROcXVoNDJtTmd3QUxLZ1RDRElZTnBQUU1EMDI0''@;'; put 'put ''bVZnYUcveUhNMHYrTm1YYi8vOEowajBudy81Zi9maUErQU9ZTERncDQycTFXYVhmVFJoU1Z2R1VqRzFsb1VVdkhUSnltMGNpa0ZJSUJBMEdLN1VLNk9Gc3JRV21sT0VuM0JiclJmVi93cjNseTJuUG9OMzVhN3h2WkpvR0VudmJVSC9UdXpMc3piNXQ1WXpLVUlHUGRyd1JDTE4wMWhwYVhLTGQ2''@;'; put 'put ''emFkVEZzMEU0YlpvcnZ1VUtrUi85UnE5UnFNaE42eDhub3lBREU4dXRnelQ4RUxYSVZPUkNMY2RTaW14S2VoZW5UTFQxMW96WnI5WGFWUW9WL0h6bEM0RUs5Zjl2TXhiVFY5UXZZNnBoY0FTVkdKVUNnSVJKK3hvazJZdzFSNEptbVA5SERQdjFYMEJiNXFSb1A2NkgySkdzSzZmMFR5aitkQUtn''@;'; put 'put ''eUN3eUxTRFFKSlI5N2VDd0tHMEV0Z25VNGpnV2Rhcis1U1ZMdVdraXpnQ01rT0hNa3JDTDdFWlp6ZGN3UnIyMkVvODRDOUlsUWFsWi9OUWVxSXBtakFRejJVTENITFpEK3RXdEJMNE1zZ0hnaFpXZmVnc0RxMXQzNkdzb2g3UGJobXBKRk01REtVcmtYSHBScFRhMkNhekFRT1VuWFdvUndsMmRj''@;'; put 'put ''QnIzTTBZRzRKM29JVXdZRXE0cUYzdFZhMmVBY09ydUxQNWJ1NzcxTjVhOUNlN21EWmM4QkIzS0NwTkdYRmRkTDRNaTNOS3dvS1RIUzlSSFJrdEppWUdEbGhPVTFobFdQZEQyNzNva05JQnRRYjYweWkySmZQQmJONmhRUlduVWhYYWpCWWRHbElnQ2tHSHZLdThIRUM2QVEzeWFBV2pRWXdjR3NZ''@;'; put 'put ''Mkl6b2xBaGxvd0M0TmVhRm9ob0tHa0RTSFJ0VFNtaDluTmhlREtScmNrcmNkR2xWTHkvN1NhakpwNVRFL3B1Y1BxOWdZOXRiOWVIZ1lCWXhjR3JiNXpPSWt1L0VoL2d6aVErWWtLcEV1MVAyWWs0ZG8zU2JxeTJabjh4TExPdGhLOUx3RVY0Rm5Ba1JTZy84MXpPNHQxUUVGakExalRDSmJIaGtY''@;'; put 'put ''VzZacDZscU5LU00yVXBVMW40YWxLeW8wZ01QWEQ4T2hLMEtZLzNOMDFEU0dETmR0aHZIaG5FMTNiT3M0MGpTTzJNWnNoeVpVYkxLY1JKNVpIbEZ4bXVWaktzNndmRnpGV1paSFZaeGphYW00aCtVVEt1NWwrYVNLKzFnK28yUW43NVFMa1dFcGltVGU0QXZpME93dTVXUlhlVE5SMnJ1VTAxM2xy''@;'; put 'put ''VVI1VEJrMGFQK0grSjVDZk1mZ2wwQjhMUE9JaitWeHhNZFNJajZXVTRpUFpRSHhzWnhHZkN5ZlJud3NaeEFmUzZWRVdSOVRSOEhzYUNnOGRzSFRwY1RWVTN4V2k0b2NteHpjd2hPNEFEVnhRQlZsVkpMY0VSL0pzRGo2dVc1cHpVazZNUnRuelltS2owYkdBVDY3T3pNUHEwOHFjVnI3K3h4NFp1''@;'; put 'put ''VmhJN2lkK3hybmVXUHlENE4vaXhkbEtUNXBUbkJ3cDVBQWVMeS93N2dWVWNtaDA2cDRwT3pRL0Q5UmNZSWJvSjlCVFl6SmdpaUtHdDk4NVBKS3MxbVROYlFLSDA4RU9pdmF3YnhwVG93anBTVzBxRWthQVMyRHJsblFOT3J6N0sxbVVRcFJibUsvczNzcG9wanNSUm5NZ0NrbzVLYXhzT3p2cEVS''@;'; put 'put ''YVdEdXA2ZlRSd09WRzJvdWVMRFZiVm5HRnZRZnZZOGpOTEhrM1VsNjRLU250Ulp0UXA3eklBZzY1a1QyNEpvSmJhTyt5aW1KS1dLZ2lQZ2h0QmZ2dFkwUW1MVE9ETG9FaVpIR3lzZy90aWgwNW9vSjJBdDk2MGlydjIwTHR6M1h5SURDYm5XN25RWmFSb3ZOZEZmVnFmVlhXMkNoWHI5eE5Id2ZU''@;'; put 'put ''enJDeDVoZEZHVTh1ZTkrZUZPeFhwd1M1QWtaWGRyL3VTZkgyTzlidFNraysyeGQyZWVKMVNoWHlYNEFIUSs2VTl5SWFSWkd6V0tVUno2OWJlREpGT1NqR1JYTWNGL1RTSHUyS1ZkK2pYZGgzN2FOV1hGWlVzaDlsMEZWMDFtN0NOejVmQ09wQUtncGFwQ0pXZURwa1BwdWRtdkN4bExnc1JkeXpa''@;'; put 'put ''TmRGOUIwOElSM2l2empFdGYvcjNISVUzS0xLRWwxbzF3bkpCMjBmSytpdEpidVRoeXBHWisyOGJHZWlIVWszNkJxQ25rZ3VPUDVlNEM2UEZla1U3dlB6Qjh4ZndYYm0rQmlkQnI2cTZBekVFdWV0Z2dTTEt0N1NUcVplVUh5RWFRbndSZFZDc3dKNENjQms4TEpxbVhxbURxQm5scGxUQVZoaERv''@;'; put 'put ''TlY1akJZWXc2RGRiV0RybmNaNkJVZ1U2TlgxWTZaelBsQXlWekFQSlBSTmVacGRKMTVHcjNHUEkxdXNFMFA0SFcyeWVBTnRza2daSnNNSXVaVUFUYVl3NkRCSEFhYnpHR3dwZjF5Z2JhMVg0emUxSDR4ZWt2N3hlaHQ3UmVqZDdSZmpON1ZmakY2VC92RjZIM2srRnkzZ0Ivb0VWMEUvRENCbHdB''@;'; put 'put ''LzRxVHIwUUpHTi9HTXRqbTNFc2ljanpYSGJITSt3ZUx6M1YwLzFTTzk0ck1FOG9yUEU4ajAyOWluVGZnaWdVejRNb0ZNK0FyY2NuZS9yL1ZJMDc5SklOTy9UU0RUdjhQS051SDdCRExoaHdReTRVZHdMM1QzKzBtUE5QM25CREw5bHdReS9WZXNiQk4rU3lBVGZrOGdFKzZvbmI1TXF2Tm4xYldw''@;'; put 'put ''ZDR2U1UvWGJuWGZZK1J0bE03b3NBQUFBQVFBQi8vOEFEM2phdFgwSmRGekZsV2hWdmU3M2VsT3I5NWJVMmxxOVNkMnQxdEpxdGZaK1dtenRxMjFrMlJheXNDM0oyR0JiWnJPeE1lQ1FCUUloSk01a2c0U1FZekloWUpaQUlDUXpXU1loem9KL2Z1WVBKd21UU2VDZkpIK3lURDRoazhtQW52NnRx''@;'; put 'put ''dmRhcmMwNDg4L1lVcXY3dlZ2MXF1NStiOTJxUmlZMHZaekVIeGQ4U0VENXlJMEtVUUJWb1JScVJ1Mm9EeFhLbnE2T3RwWjBZeklhQ1pZVkZYanNOcU9PSUZOdFRPKzMreVYzMGgxd0oxT0JWRElsc2I4U3ZOV3UwbXYwTDcwRFYxTGFleFdHTlVnblUvamp5amR4K3h1ZFhlZTd1czZmNzZydys3''@;'; put 'put ''dTZ1dlozK2U4NnY3L0N2OTkvL3Z4NS8vNzlkMjNkZW41dWEva1BoRjkzKzBOKytMbGpvV0xyMXVBc3ZOdnFiK3VxMkgreXlWc3pkdXpZNDhlT2pkWE0rMnY4OElNUVFWdVgzMFN2a3d0c2JpRzVBbUdNcGhGQzFrRkVpRENqdzRMZ0ZZWjBPbDIremhxeTIvU1NOK1pNQ2dGUE9OWFFtS3ozdUYx''@;'; put 'put ''aVlQUytrdTJHUktLaUxGRmRUaTRvOWIrcjhaY2xFbVgrR29TV2wxRW5Qb2NmSmhkc0ZjaUVrRTJBMTFjUmZXNEZ2TndPei9XaE10UXZiODBYQ2RJTEJCT0VENWl4MFdnZHROcnlCRWt5VEZ0TXhHQ3dEK293SWZsa0NLR3kwcEppYU9Vcktpend3dk9kOXV3L3FTU0dwYVFVa0FKcDlwdE9zdCtr''@;'; put 'put ''eEg0bGVwT1ErRUh2UW5RNmVpWjZkWFMvWjM5OHpqTVA3ODdBbFhuUHQ4N0V6K0RISDk4RkNEMi82L0ZkbjROL3V4NUhnSm15NWVkSUwva3pLa0ZCRkVNSk9SYUwrc3VMQ3IwZWw5MXNNa2hXUlBDQUhpUGNEL1BDQk0vQ0JMMW9xTlJ1RndCZFFSR0luQXBIMGg1dktvRUJiV21ndGNjcmhTUHVV''@;'; put 'put ''dXhHY05XSzNZN0dWQU5jSUwwbkR1MSs5NzYrZ2NuNStjVTl1Mis0dXFkbjROaHg1Vmc0R295LzJsalRkR1JSa3J0dHU2ZTZuZC8wN1pnWVh6UzNkMWpHOTdUYXZsSzA4eXJzRE9hZk45YVVLa2ZySy93UjI5TklqNnFXLzEyd2ttZUJzazdBY2cxcVJkOGRmTEpnYktjY00yTzlDV05SaitlUmlB''@;'; put 'put ''eEcwYkNBZERvMFF6Q2xmQjdnWDVpeFNFUVE4b1VoMytDVEVXaFNjOWttQ0VCWk8ybkdnaVhKS3czNTVPUUdMUWdCV05vTWJkeHFha29PMTlhV2w3dGNDTlcyMXJZME5wVFhsQ2NxdzY0eVYybFJnZE5odDhGa3JHR3I1STQ1S0RJN2NMSWVzT2l5NGdCTzRnQkRZNkJDZExzOFNiVG1mZ2RldWZl''@;'; put 'put ''cG9XaDB1TFp1T0JvYnFzUHYzNk9FOWl3bUVvRmdkU0tBNTRaaWNMRnVpTjRLSm1vQ0FYcHhLakZhV3plV1NJekJhelcrYW1rY2Z6WWRpemVscTJOcFpTSXhXbGM3VmxQRElBYlQ4VmdUdllVbzMvaVgvMGplUmI2RXlsRWNOYUlPdWJVMkVTNHJLUzRxTUJrRlVnNjhMcEFCeXRkNEJzVE9NNmdI''@;'; put 'put ''WVdPWUFlYXBydmI3cXh1clUvNjRQeGF2RUNWUFRCOFJBeFdjZ1hKbkJyZThqV212S0hrUm5acVhUOU9SRGtlQXJXQ3FwSGhrYXJGenZxVnZ0TGlnYnJLaFlYdk4wTGI2dnFxUzZickU5Y29uRXA3Q3RwcG9tU2t6MlJPTDlkVGxqWS9WVHJWM1R3Y3JPOE9Ka1VUMWNFM3pZTGgxcUgwZ3ZrOCtU''@;'; put 'put ''bHJpZ2NMYTBvSjRvS0o2NlMrcDNXTUZ6Y0c2Rm9Rd2xYSDBMWkJsQzNMS05xcEJHSG54a0R0SVlPQ09GVjBoQmE1eVIzeStDUEE3ZnZWdzBGZFo2UXNlN2tXMGo4YmxxL0FZK1FyS1ErSXplWHBjRzJNcUp1MWxzL0JLbjF0Y1BKZ1pIeDRleit6NitkbXovekxldGUzQ2tTTlBiT3RtYmNQUVZ0''@;'; put 'put ''YmFTdENXWXlHUzVnZ0tUd3dQVDJRT1FnL3oyNTQ0Y3VUQ3RxNHg2T1BuWTZ4dEF1L0grOGpmb1htVWxodG1obnFhcWdDWE1JY0JBV01kUmlEVzh5TFc2OGtNOEs1SEQvb0hJT2VtSnVXT3VwcUFQeVpSUm9TQnBodlRvZ1QvQXhYaENQL1lDQlRnN3ltbHZCNXZLZmF5enhvcVJLa1JicVhwUnkr''@;'; put 'put ''N1lNVVNKU2FGZEx2Z1U2QUNPa2pnQ0w4Z0JsNTBtVVdTVnhCdzZZMUdtMDV2TFlpV1c2MmwxVjZyWG1jM2lBWnZoV1EzRTlIc3lyTzZURmdVN0M0aDRPQ2dCc2xlclM5d3V3cHFYWkloQjFvUXNRbEVZNy9ENGt1VTVoczlmclBPYURTWUhJYThQSk1vbXZLc0JvZFpNcGgwMW5MUlpzZ3ZUZmdz''@;'; put 'put ''RG9mRlZhc3JkT2M1aERJVEJUWWE4bldtZkNJYWphTE5vck1hRENZTjNsMm9xM1ZaSEJUSEhXaVdGSkkyWkVaaE9ZQjBBdGJ0QUY0SHpZRUZkQURVQVo1R2dPdGhwc1J0b2xRVXd3RnFEVlBVS2laSjRaZXUreEw4NEtJWFhsajQ4cGRwZjVubFJmUUw5RUZrUlY0WnhvOTZOWjREd1FrNktNK0JT''@;'; put 'put ''RlRrNEhvOFlTbXJUcFNIRTlYSmF4TzFOZVhsaWZiYXl1Mk50Szg2OU0rNEEvZUJ0QmJJYmtRNzJrSDVBa2FFWUVRMjJwblQ3L2JYNFR6bGo3anZFT09aZHJDWlA0SG5tNm4xcDFkQUMyTHN4WlE3ek1nVUZJQXJjaTNrSWRVNldyS1dFUy8vWnZrNS9CM3lLM2l1WGJiU1RzL0NzMi9nRDZTcURH''@;'; put 'put ''ODVxNXcvUzM3MTlpWEU3R1hkOHB2a0h2SWlxTDh5RkplcmdCdlpqTG5Xd0dDbzJRQnNOakN5WmJiU0FnL1RrMkI2WXJxMWVwQ2tHaExBWEZTd1N1RkpocnVIaCsrZW5IemYwTkQ3SnV0SDQvSFIrdnF4ZUh5czNyTDdNL1B6RCsvZS9mRDgvR2QyTDNaY3YzWHI5ZTN0OUxXRDRZQVNOZzB5THlL''@;'; put 'put ''ZlhBQ2tGQUJmQTF5clk1eVBoK3hPaGpvcGtrN2FBeS9lbFB6Ni9sT2tiSERuMmFWeHhOckhZVkpobUU4Qmlzb1Jzd21tQTl4QXlBQkRKMU9IMUFHWlJzd0cyYjNCc0U0cWlHV3dwc1dsU0tPcS8vSXhrS2Q2U1c3Y1VwdmNWamsrOTJEUGRabit5ZnR4V3BIbXZwdmNIcXRwcWFzZGZIZmpOUjFi''@;'; put 'put ''YnU2K1laRTl1eFJ3R1lWblY2R00zRlpZQU0rcHdKakEwMkVJQTlTR2cwRS9BRS9XelFCendrQVEwczlRSmVCbDhsK0ZLb05CZnpBa1NZVkFaYXBra3ZYTTdraXBwS2R4N2ZBa0ZlMy9lSGQ4S0xRMzNkNDMyRDg4M05IWDExUTNIaHJZKzhtKzY5djdXdHEzeXpjTVdUS3BpYXBFVTNXaUJoL0dk''@;'; put 'put ''ZkZvS2w0MWRLSjJSMlBiaE4yNnZiTjFkd1BuZzFKNDJRbDRONEcycTVhakZ2QTM4SUNvaHpsZ0JIN25IS0NPbWRoODNaRFpiTTR6NTRGTU9XeDByQ0YvQkNmdDFQTU1GR0lCbjFZZXQrQ3Q1MlptVHYzazNDeCtRUmsvZEE1SUdGRit6T2tUQXh3MXdIT0tLWTRjb0F2ekxFU0F6ckVlQVk1MEFL''@;'; put 'put ''RUR1eTRJWkpvYjlkVTRBZyt0d3U0TUJoaU93UFZSTVZRaFJhZ3dTWTFaYnJ6L3dNRFUzbzdCb2ZhUmpoMG0vTHp5VlJIZUxiUjMzVEppdVhacWNrdERTcTRONHVzV240b21yK25lZW0wTHgwRXRqRzBBNk9kREVkUW5iN0VCRHV6QVBBVllKNFN3WHFjYkVFR3g2UFNDYmg1bGphc0VZOU4wUkhF''@;'; put 'put ''eGpEQlNIQTc0b1l1aVlDaHNBRDhOcVNPaWVvT3BiSWxMaVFRZkhGbTI4eVR4SXdjN3VtN3N2L2ZlNFh0Mkh0L1ZIdWlPMVE0bGRPVlhOeGc3L0tNdGRZUDVCVGZpTHpYczYrbysxUGFWVHg1OGRHWjRwcXlzZWFFN1ZLVThXdEZjbnU1TXhqOU04WnVFaVFTWS9KVEp4V0JvTUpNZXFuY3c4NzNC''@;'; put 'put ''MXdWdmh6cVEySi95dTBFaFBLQThqUCtnL085N1NmdmkxVXNYcUg4UkJUeDBxbmhJb1I2NTB5VVMwSzREVXM3MFZTMWhnT2xqSUJEVEVwV1ZGQU9WcWNxR21tcUtoNHB5aW9lNGthcXRqVHdNRlRNNTNwV1h2Z2ZiWkNYVXgvalhrMXVITTgyZFd4YTd1by8zZERYSlE3MG5CK3RHK2hzYiswWnEy''@;'; put 'put ''OGRqWFJDd3hNYmJMVFZUclcxVDNvTFJwdWJ0OGVydFRjMmozZ0s0c3JNR1A5UVlyVXczVnNVYUJPVlNVN3kwcG9pUW9wcFM2a1FSVkE5ekhGcWhkU25RRitpdE40TEFHZ0JyT3Bpc0hzUlZUK2FCNlFXWW9TQjRCblBzZ1VacmZ4bWRZeWdZWXJUMmNGSno0UVVyVEQrb2MzYUE1ZWJhRVdqOTkr''@;'; put 'put ''dW9MRFBxTjFNeVYxS0NreGRYVTVsVFhua0V5TXpJVGVmQTdBV3hnRzN3VXQxTmRUVWJYaUVQc3ZROHlMSllFTEo0TFI2SGpSa1JVWFV0TkNOQ05qQW9GZXBmZkVTekxNcGQyanVJdlppZEpCYUl2ZklSc2t2SURvaTZGUm1md3ZoNWZPdVR5Umpsd3pUYVRrU3lHL2hRZkVZazREczVVeUYzSG5h''@;'; put 'put ''bjhTWGxiL0JCSEpuOTBkeUREODR6dWV0QWo1RkMvQ2ZnUEFsMURENVpCbUdCQTFFdlZwalY0a1k3QnMrL2dISXlqZVFRaEJCa2g2cklpVEE4OVJ5MThGU1RVelZBLzNmZ255b2g5dnVuaFpNTE1KNCtHSTlYRzQ4QTQwbFg0NVRlcmUvREIyRThsNVM2Rng5OGNPNUhzeitpNDNFdXY0bGZBZDV3''@;'; put 'put ''SXo5cWwxczBubkFDK3d0VW1nUWRFZzdBeUxqelJyVmlWa2Q1UEI2L3B6emtEUWFaYm5TcUFpNUZWcmpldlNyS2ZXSm9iMGY5Y0dkLzlRMjluZnZUOCtQSHZCcnU3OVkxVjRZYit3YVNyZlU3Rzd1dmMrejVQeXNCTUVIeDVmY0xXOGdqU0VZajZKTHM5cGVYQ1FhaEd4c05EcXd6dHJjUkVWaVlS''@;'; put 'put ''MWpWRVBmcXNIRVMxRGhFVFZTN2lpYnFFdTVEcXVZQ3ZXQXdDRE9nZE8wR0dwWlYwVWdPaUdFd0NvYjVkMnlzQjhMVVVUVXRJUDM4NXEwa1NaeEVvaWpOc09hakVKQVZkQUlUZDQ1MER2ZHRoVmxrd3VGWUtCZ09XeVRmT3RlaWdnWWRXUVhxOGRLd2hBdFNQY1Z2anRkUnp6eDcwQ2daM0xBaWJa''@;'; put 'put ''MFg1aGEvZG5UK0MvdWJkOVhWdGx1S1J4S0QwNTBIVzJxNm5aWjVhNTdaV3U0cmJxaVkrc1QwM0JmbTlqdzQwM1lnNVdvKzF1M3ZGM0VpRnBIRERkRWJEbnhoN3NqWGp1MTllSHI4V0ZNc0VvN3RHK3MrM2wzbGJ6UDBkVFNPMm9yTEtyZTM3L2pBOXJrbkR1ejV4SjZTOHBLZ0gzc25NclpZZmF5''@;'; put 'put ''M3FycVIyeFludkx3S2Vsa0NDeHVUSzQxWXg0SjdIWEMwRHF3cnRYVVFHVkFQeDhDY1hlNnlGb0IxbFZnSUdqRmpVcXA4c2VFZVhBWS9kOCtlT0hIcUZMbXdOUDVyN0ZmK0JkQU9VUWQ1SC9TZkQ1NFA0MXJRWC9BRUVlUkZyeU42Nm5hb0NSZ0pjOCtZUHF1bzBHNHJMeTMwRi9tOWJsdUJ2U0JX''@;'; put 'put ''Ym1DT0tjTzhwcC85bUZuWkdIWTd0VGRqZUx4MVQ4TnNXMWZUL296eUdaeE10TFltdm5ReDJkbVp2RWd1eEVmcjlqZVU3RzVxM0ZHTFAxSVhDdGM5cnZ4VE9oWkwvd1BWQzlXZ2R6OEdzbFdDR3VRNkNPTlJvUmxzYVJHWVdSQXRWWDk1VmlXSjRFSUpLZzZId2pSSmxHVU5qMlpIYyttT0c4L3Yy''@;'; put 'put ''M2QrNzhDN2sxUGxVM1VkaDJYNWNFZmRsSDluL1hzR0xMT2ZuWmw1WkxhMVlWc28xblZFN2p6U0ZRMVBwRm9aYlNqdXZzVjhIemVMSkxLb1lrRzBpaXFMMmVVd3V5M3VjTG1lb2toanpoZ09xVXdZdy9heE40NCt1Vy9mazBmZlFNdDlSek9abzMxM2tnczdQN2x2MzRNN2o3VWU3TzVlYUZXU0ZB''@;'; put 'put ''Y1FtWUx0dVFEcXVFYU9henFOS2hEZE5PZ1NhNjZIeWp4L00wOURVWDNpVnZXYjNlLytCN3hQZVJDL2Qra3RvaWZ0NXhlZldTUVhGcm1QcGZWdlJGVnlXT3NmZUUzSGV0WGNBTGhoUkViYU0rVXoxck05b1BWN21uYjZ4S0x5T3UrVTArMXZnVzUrMUNvMzJZQmNkdkROeTdBT21BdzZwbHBScjBP''@;'; put 'put ''TXpWYTBJbk9Sd0M5d0F2RUNQQUR6MjNOTTRub2lwZ0w0WFRoVWQyNXc5dEY5K3g2ZEhmcHczVlQ1Z1dUbU9sbStMaE1aSzM4TW4xVCtOZG5PU2RtV3pKS3l5SHRhbS9kSEdWNGpjbEQxSlErQUQwdm5UUE5KK1dndFBqR2RNZndtNFpWODlMVHl0NmRQNDBrcVZqaWsvSlJjVUg2TkM2Q1hmbWox''@;'; put 'put ''TFpiTHBIbUluRmlFaDNFUWlQUnpZUVJZTzlpT2Z3SllHK1VrNXZyakFlNTd3ZUJtQkdBb0wwTzlEZVU3UXpwb3Z1THF3eWlvdUQxNXVtSzdveStTN0R6VnV0QmxrZXNuZ2pYOUxmZ2xwYTduY0J1bjd5aDBkWjdOczF3dU1ScjBCQngwUElCWnhremcrVXludzhIdFlkS09rMFljZ05BeE1Ib2FW''@;'; put 'put ''MzlNK1IyT2ZQejE2ZE13dVNmeG1QSkQ1WFpjdWY4ZmVML1VxU2lGZnZYVWQyU0RwcjJocTVHR09qM1MyKzEwMENIZ2xhUWRGRkxnMUNMdzNkSTNXWHVRSThHNk1pNXBnM0c1N05xNGZCQTBCT3htb01EWTZkZGVQM1hxOWRmb21LYnhJNEQ4NzlHL1NrcnRrM3lSOFhLcDdKTUlXZGVqSTlzamhp''@;'; put 'put ''RUZXSC80MEtsVHlqbmFYd2wrSGZwN1hTbWhjazU1V1BudmlIVzUydGw3L3Bwcnp1L3RPSlRKSE9yZ3VrZFZPck9Qek14OGRuYXg2MGluZktTTGN5elRPNVJmajdQOGxwdEdxekFLRUZVQjA5VEZTckljcG1qTmN6bnkzRmEzUFZ3dTBrUzVQNnQ3M0lHc2J1N0ZzZjRidTd0djdIL2lOQzdwSEIz''@;'; put 'put ''dC9EUzUwTExRMWJYUThpdThxNzJob2YwMWxJc0RGL1h0NVhxYTdDWjZnZWgxb1BRRUNKT3pnWTB1SjJ2b2Ryc2o3bkIxT0VKVk1OaHlyeFRKRldNWWpTNGRTWHNiVjJHRktNR0tMVjBETlVmYjltcm9VWDdXTXRXMUo1REZEeTY3TnQ0MkxBY3JzM2g2bzJwa2VLeTFlejJlVGdDZXJEQ1dwRnli''@;'; put 'put ''UitXYXhvclVkQjRBUjBTTkZVV0JNTEdFSWJ2dFFEcGs5Vk1wOThiOEVZaE43WDdWLy9LcWNYVU00OTk4NXE3VERHMjdocjZnREg2YVllMVh2Mko0RzE0c2VKUGpqY3RHMmZLZlNDLzVDcXBFZFhMQ0M1RmhBVmdzUkhJeFJqM0RIS05WaVNLaDZpREZHQlZ4SHFwQ2FKTWdxM1FmaTNwVXR2cjl1''@;'; put 'put ''WmErK1Z2YmUveWQ3V056clpsanZTTzNOL1pVSDBnbU8vdDIzbnhMKzQxajV1YkdxZW1HU0hHZzBPcXNIdTVvbldtc3E5a1RpYVpDbFZVdTM5Umt4MHlLalRXb3h2S1Nta1BKaG44ODZhRzZ5amdBOFY4QUpBYTlTaHBlUFFYaDM2SXF4LzNBSTQ5Q2UvQi81VkkxRVk5eDd0emN5T1VLdWpTRFRC''@;'; put 'put ''VVhEM2cwSFliOWQ0K2NUb3duRzhZVHA0YnYzbWtadVdjbnZsczUyYlNydm41WEUzNjNjdFBPZTBZNFhsMHcxbjltOFNvOFM4L2lWZENhcXNMa1dnZGNkcTUxakRRYjc4UGtuNVZmM0tQODR1NmYvSVRxWFBqOU16R3l2Z29SMHBVeWVZSytURlR2ZzdLZ2F6L01sTFBKZzdadzJQVFVrbElGQkQ5''@;'; put 'put ''Q3dJd0RoZS83MENQdi9jeUgzdmZqMDE5NEhCUzU0c0svcGIrZ09SU0Y4SEZDN0VFK3ozUWI2RWFqQ0YwVG1zdWxmSWU1YVhFNEhIYUtWeGhsQkh3MkllbE5KL0ZqYVBuRHp6NzNJYlM4Zk83WjV4N0FPNVhQdmZrbW5zUTczM3dUK2pTb2V0eUFTdVFpa2NwZlZybXBrYnFETGZVWTJVaEJzK0VD''@;'; put 'put ''NVE4Zit1clg3bFArN3huZ3dNZVZpeml0YkZNVUxlNmYxbXcreGVOSzJpc2IrMmZUWGc0N0cybWFwd0RBOENmeHJjcjdRWjIvRzU5WitxY1ovTFBGR2FXQzIvMkI1VnZ4Q1BrK2o4dzhHMFJtdGl1UHpNRE91djBEV1Bmd3c4cmI1UHZibG5ac1k3aGQvdmZsNS9DUE5zbFpDdUQ3bXM3aVhUeGxT''@;'; put 'put ''ZjJRVzNIZDZ2SFFsQVViRDlNRDZuaTBiQnQxNW1qbWxZNEg1WTdIQzhZaUJYNVU5Y01QWTUzeWRqMTViTnZiRnppdGEvQ0QrTXVjSjU4UzkvZklIckFNTEFzSkk2TVoyUnZVRE1wVEl1cHhKcDJVM0JjblA3NzcwS0Zkd0R1Ly8rWTM2WnlVNVVOa1l2bEZlR2c1NjJPVEhERHRRZ0lDRUxKOTZR''@;'; put 'put ''dGJ4dmp6TXlTRHcrUVZhT3RsYlMyWXhxOEkzZURBWUl6WVU5UGVRR2J4eGgzazY1NlA4dmdpQWpKTGlKM2xNMjZYdllWWTBCV0FNWEZBRkZCV1NrUTlzSVNvaDRqUUJTZ3JCM2k5U0dpNEp1aG1hRHhRT0dqQW9vaG1WRmIyZ2Z1MEhvUUtKSVBUL0xvcDJhMmxRWGlxSnhnT09JMkFXK1J4QTNK''@;'; put 'put ''elRZUlhEWU1iYVI0a3BhMlg0YnR2dWJsNEtwSGVXZCs4dDZXdnY3MnJZeVI2L1Y3cnFLbGxTMEp1amhQN3pmdVVpeDJCU05WZ1hmMUl2TmhhM3hQWjBhaTBKU0l0cnBwZ01LNnVNNU5ac0djT1ZJcCt4S2RueXNjNndZU1JuZ3o0dEErQWhvRXBmcnVFTXNsZ05xdFRxS2J3Nk5UQjFQazRWL25Y''@;'; put 'put ''QWxHUGIxV3lUdzJVL2RyYTQrYUFBSk56VzRzb1ZzRk1RVHpzY2tLTTZDeDFsaFI2WVRaMnUzTk4rakJDNWNmT01ra3JLNDc0K2NQdDdZZDdtdmVVblR4WnRxZTVmUHYyVG5saVFpYjJMYmVPakp6YVVsYzlRVjVVL3FPNlRobTh1cjkvZXJxLy8ycmdyMHJBbVI1NDVYSXhXT0htTVpqbnNqSFlI''@;'; put 'put ''ODhNRGQwKzBId2dQT0h1S0kvMlJlSEhuL0ZNUk9iYUxBT24rL3BPRFZSSCtncUtxNGZqMWNQVkpZVzlWUW5PdjNFWTAxYVZqbCtUVFhhSWp3VkdRcFZvRkh1TUlDeTh5Q1ZhL2dyUjFnSXhqcFZZaXBKenJFWTBDbWk5TENBam1ucVhRak5kdHhwbVBkRWM0WUNkRWcydjRYNlAxMDV5aUVhMkFx''@;'; put 'put ''MmFlaGpsbXZhVVRRREJPb0Z3NU1XbExXUHgyaTJuUmtadTNWSWJ4K0xTdzFtaVpXVThCblR6QURGa3VaMVFnbUhtdGVsQTcrcklnZXpvMURHcjNPWDF3cDhTYjNGUklUUjFRelJHeHhqazVNcDE0dnpVYXhNbFB4QVY3eHp5RFB0dmFSNjR0WC9yTGYyamkyM0tTZk53dW1FNEQ5dk0zYW05cFo2''@;'; put 'put ''eFFQWFdVeU5EdDI0ZHVuZW1zUnR2YVVzbTI2anVBa2NiTDVEL0FZODlJNXRzV05SRG5DaFNLbElDRlNOUjFNK0F4MWJBa2gxb1dnZjBzNnZHenNkckNMSXdubzFnNUNJSVFrUlFUZlByYndJNVRLRUFXK3lUSkI5WWVPcmQyT2x5SDh1MmFmN1d2OXg0NDgyRGd4TnlTYXNuWVBUbGUwcUkvb0N5''@;'; put 'put ''RjMvNlFHUG5kbzl6eEdpcUtBSmNSNWUza3c3QWRSbUtvWTl3SG5TVVlyMWd3MFJjU1JMNzJFWGQ2b3VxbmlrSFZRa21TQ1R6TUJsaFJnS0c1dXFCa2NYSnRHd1doR3BZbUFjRlJHdkFRTXVXbHlOVUhpdVBob013bnJKd0tCU2tXaGJiVmNYQTQ4ZDJ2SnJsVXF0WXJnTVVRdWVObGRXK3F4SkR1''@;'; put 'put ''OHAycDdzT3RiVWQ2a3BmWFR3Mk50YlJQamJhUWZSS2ZkZDhTN2hzcXJDa3A3VTdtc2djN2UwOTJsRmJOYXk4YjZ5alkzUzBvMk1NNkFzZU9TbGg4Y1BSWisxMEtWc2xyUmN4MFlNck0zcG1MVWhXTkt2VTI5YU5ic09kbFlzczg2TGVBV3JtQVFKY3lHbDNCbHcwUlVGVklSQ1V6NGtHN1c2WUtE''@;'; put 'put ''NDNXWGRUZTIzRHdNbVRCVmNsaVQyNXUwWDVFcTVMZFhjbGxKZEFvc0xWWEhab3B1ZmI1R2ZnditXanJYeklubXpDdklCeWtGMzFqMzB5K0tSd0N6eUkrWnpMVTlRMXliZm1XVmdXWGI4bWl5NkJON0cvcXFxa3VLcXF1T1BrU2JJdFdremZGa2RIbHQ2aXoxLyt6dktJK253ZjJrK3RFaEdzb09P''@;'; put 'put ''eWtxSFBHWXNnTUpiVzdSVUJLejRkNDNvRUFBSmlTMk9yYjRJT1lobCtuNlhJNjNIYTJlaWtkVG4rM0J5RG1CM3BZcU05MytTM2VrcE9idXRhR2ZMYmI1a04wenF4b29pNGwxN3IyYkdTRzRnQjNjMW81a3RHRml4cWxMZHpVMG5IaFZmUjNNNU5ZKzROb0RZRTNkUHM0Nm83VTFQUE9leE81cFZp''@;'; put 'put ''NmxBeFd3Zis4MVV2My9kQS84bVRQNzhmbHlxdnZUeDhCMWl6SFgraTQ2RVZHbDhsMUw5cTQ4TXdVMTlVVGN5b0F6RG41R3A4N0pPV3pKdWErdUpLOHFZYjZBV3FsODhUK0Z2WUFYSWZRRmM5VjE1RXNCNnJGc2hERlk1K3hpQ0pnbDV2SDlUUmxXVTJKZEJJOEpuZUZlRXVFY1hDN00wcGxpNEtv''@;'; put 'put ''SW9BOERCd3NSSFUwbG91WHMzTzliVFNKa2wrTUZsM2MxTzhQbk56VTNXZGZQS2thNmkyY2JMQXVhdEY0KzlVc3JPOVJ2bW05cGZvdDRiakRZbnFGSjlETjVOUk84ak9PTFdrV0xDQVh0SXNxWk9GY25xcWpleTVVc2o0YXAxOFhsWUlwVFZDV05zclVpbXN6NUhDcHFqeUF0RnZDVEZmamZvZEV6''@;'; put 'put ''Q3VOZm1Yd25mTXYzZ3VuMytoTHNlWmdRSDJHdTJMeGNEcDZJL0YrcU9xd3pGd3FxL3Y5TUFDK0J2eDRXcnVlSENkc0JWMC9DeU1oL29jaDVtblNFeTVQZ2Z6QUVTQit0VTUzaHJGa3BON0NFdzdySFVrYzJDdTBLbHovN1ZPblVLZW1samwwMUgvYVR2NFQzd3VaMVEvbUR0Um1QdkI4RUVRVnZ2''@;'; put 'put ''QjJla1Y1dmcxZzVweFlrNlNmWTNMdFFybXl0MmYxSlc0UC9xbDBiZFgzSjh4WlhMRis4Rm9LN3ljSUZTOWRUNXJac1VKZkJaMlppbkJEZUllSy9NUjNCb3pyM2l5MUQxNERoUU0wekNPeHFSYms3a2Z6MmEyelowOGlmOVgyOEt1QWVVdG90L1BaYWg4K1UzOEEzaGVKZldSUGZCQUwwVG40Q1d6''@;'; put 'put ''SlVBMTVWTzRVY29udmlibEU5NGc0MU9LdmFXRUt1WnYzNUpJYjlzVlN0U2xNOFB4dXFubWhybDRNamhjNFkrNW92R21nZVRSM1phcTBJNjJrZ0tmTDk4V2JJN1hEbFQ1UzZhOEJZVnVtOXVXbDErUnFSK1lvajRYakhXQmZBaDhyaG81N3NVaVRUbURhM2lXMmhReVRSY3hBQnNRM3UzbDdpQnpr''@;'; put 'put ''WndWMUVjSzhYVTF1MW9UQmN4SUY5VWEwM2pCMDFvaVR3d08zbnpqalNXZWZKK3h4T25aM29tOUIrNjc3NER5SDBVVkppT3pDU0RQUHFMbmVzYVo5VVpWUFFNcVJyV2VPWEdsVjd1cUdvQ1ZVSkxyR1ZmQUZXRHJFVGs4UkcwV0c1V2QrS2g2YWRLVURYRE1XNkJhUU5uZ2Z1VVNWVGE0VjYwaEF0''@;'; put 'put ''OU5yOVVRYVZrVnpVKzBPMWowN3VUcEg4Y2RIL25RblQ4OUR1N1BlL0V0MUZpelhJOVFDKzNYNTVIc2w4OGpGWnc4Zkh6dWhrTW5uemh5NVBvajBPT244Q3o5WFhvTFg2TTh0Skx2QW8rVDE2eVpKQjNXMFpRWHpTcEEzd0xKV2FSd09CeDZscnlVQXM0SVRTWkpUdnlSMjg3YzlZMFgzbjNUVFhl''@;'; put 'put ''OThJM0hIOGVHcFljZmZsdjVNK3QzZVlnMFFiODJXcjFqTnRBaFUyWWxhdGVVVWZmU3Nmc0VkZlhCNGN4bDFBd1cyQ3hFNlFQdDNxSkFXY0xsK2VrZGYzUGZiVDl0dnVXTDFyeWR6b29FTVNxMzRUdVhYcm1QOFBwR2VIa2RucmRKdnNtK2FiNUpvdm1tQkhZb2IrTEhzZkk3N0ZFR3AzRG5vU25s''@;'; put 'put ''N3creDNPWHlMbnlZdklEOHFGSU9GYkI4SUZocTNPY3ZwM2xnbXN1Y1ZBVWJvMUc3aDlwd21vSk1nM1pKZ2JoRlFOSWdyaUZ1TDF1K2xLaW9TVGgvTm9xckcxSnhITnU3emRUYzVNYkRrVEIyTnpXYlBoWHRhenBURXgyTzF0N1czRmRwR0RaNEkrRzdKb3VzNmVwM2hhczhobUZPczdubDU5RGZz''@;'; put 'put ''ZnpVNXJWODRFZk03ZHlwMWRWaGlOVjI0ZXZaUEFBL0JwWS9zdVVUMU9mSGpFY3htbFFyMGhBZXBTWG5SSExGdkdEWElnMk42VEJNSjRIQlpTTXdBUS9UVlY0d0YxS0VEajBVR2FKRE4yNmJqZUY0UXdQTWFYYmJsTUZURlg1WGRkcGFOSGxYT09LRmVWVDJOZDlXQy9PcU9kUFVGNVdXbDFFS1Iv''@;'; put 'put ''QjkrR203aFBNUVVYNkRqRThoL0x6eUcxYXRRVzFoei9KVjZCZE12K2F6MVRNNk9HcVFtVlBPRW10T3VtNjEyZ0ZtemlVdmlBVC9Kdm1NV3JyUWUxL0pkbUxYcWhXV3R1Q1grVE1xbDU4amVqS01DbEU1eFVwSmNXR0J4KzEwNUZ0MDJNTFh5ZUNwTzlURUlrYkRSYXptTWtqcjNMa09wU1h1bEtE''@;'; put 'put ''aGlCMmkxeUNFMWVBQjRLL3YyOVYrb0tWbGY4ZXUydTNsRXhXMTlZRUo1WlBwZUR4TkxISlAzdkRSVE9iSWNGNVhoeGl0NkF1YmxCZk5rZDUzYlhmaWxITjdrdFZwMHJ6cGk2Z1lkY3N5MEpJV09pR0oxazlMdUY4UGNSM0dFbUZMTWl3eW94VlBrc1NUQVloWHBCWGJuYUVnbUJicTNJWGMvbFNh''@;'; put 'put ''VlppdTB2Z2xtSmJIa2VtbGZ4enQ3bTVkNk41eVc4bU92UDVZZmRlVFQ4N05wZW8rTVhpMjUzQ2J1dEozNitBblVFNXUySU9hNVVZWFJrWThBTkdseE1LU09SRVRjSm5BdUI4d3NUME52QzZQNGxMYnMyQXowMTBMYkR1SVd5dDZoVjhtNVBqckgzamhoUmZPUFAvODgvZjlrbWFUY2MvZ2xzR0RC''@;'; put 'put ''K0VGSDZJcFpVYXJEQm5DN3lNWFdXMVJQY3RDUm1oaExmQXRXMUNZMFFzVVVYaDBnK29pbXFETWpUN3FjOTd2Q3dhTENrUEJvbWVDSWZhWERORy80WUtpa1BZWGVEV0M2b2tSZjl0V2dXTTZaQk53REwybTVrVUg4TDNrM0pYa1ZHa2RVQWFQS0UrVGM0TlhtbFAxU29FdkxqNndnN3ppdVpQTHNI''@;'; put 'put ''LzVaZEpPbmdCS0IyU0l3Tm1DejIzVW5ONUpMUmRMcTdQbGxEQ3pCRmp6ZCtpQ01sMVhzZlllYW0yZTY4UnRlMjdlZzh2cWQ3VzA3cWxmS2lkM0w5MEVmVGVqNzZIdjROMkF0RkxabDZNUUNGVVZvemtGdjQyNTJJdEdTMHVpMFpMdlJVdExvL1JYelJjdnQ0TVpNWVBkdXBITkxkK0ZpYzVwSkR3''@;'; put 'put ''aElZQkJ0dEo4QkRqMkFzRzZvNGl1WFFoa2ZrV2I3bVVycmVEeU1SQmdyTnMyZytGMnVnQjVuY0Zna05wcGlqbGVSMTRSWGxXUVNmZkcvTFNxTlZGVWJ5c284VHNMN1haSG5xdTh1MEFmRDVlRUU3YThCcThqUDg5bWNnMmwyWDZlT05EY3ltZ2UxMU9heDlIcmZEL1A4Z0QrSmROTGZ0UXBkNVFC''@;'; put 'put ''NTd0Z1lHN3F6UTRnUFNJQ0xkR2ptQk0xYmNYS2F5RXlSc2hmWHVoMTJsV05SWU5pbEt1eDFCS2lsVFFZM1VLREcxUWwxcnkyTUd0Rm95blhyaTNOUW13T3JNWkh1TU5XUVZmZzdCTEVZYmVqenlQRFV3US8rWG1tYURlQU9RajZlR09ZRXhvTWx0QkRtOEFjeThMa29ZOXVBbk04KzZ3NTlHRU9R''@;'; put 'put ''OWJDdkp6dHh3eDh1UW9HYUFBK2kvQkhWbHZrUUZ2bGJqdFZqUlRsQm9SQkFSbVFqaGgwQjR5Z0Y4VnBjRFBWcFNZOWQ1UllOT2V3T2FCeHZxcWJ6S0Fvc1ZiSWtxTDFUWDQzdGd2a2tGYlFzb3dHUDREZlQ3WXR2ZlV0WHRseTU1M2t3cUx5R042aFBNWnJVZHBaRFZFS0cyVi9GUmIxVVVJZ0xB''@;'; put 'put ''ZjFXSUoxdU5nQkhHekhSQkFIU3VubUtjNzkxYlFhUk1CSDRRWHBybC9KTVRKMXJzWnNZT2oyd3RoOUxCZnBnRVlKMmdoaDNXMVgzS3FVYm1sYTFVbzQ5WTdONVBqYUZpQjlBdG0vVVVPK1ZrRFRDaW5VRUlxQ0ZQcmQxUEx3ZEc0K1ZqWEZXbUZjRTROb2hRc3ZUZmwzSms3MldQVmxheVhWTy9u''@;'; put 'put ''QWpyV2xWSFBSOEVSZGk4Ni9Xb0NiVEFjK3ZuTjFhUlh3RmF0QllueGVxY3JDQ2NaWE9JYy8xOEljUkk5dEFuTkNnd0ZaT0xvSnpQRnNQM1B3bjhHczhQbnk5MmdORDN0V25JOW4rZjNyK2dHbXhsMDVNQWZCdXErQldmNHR3QVRaZU9KOFBNdVByNE1CYTRYamJEeThuN25sUjFhUEIyU3FDbDUr''@;'; put 'put ''eVdvYVNsQ2IzTHphMDVnMnNQVUpZNDZya1o4UGYwcnlpOW4rUkRjMHl3TzdZMXJKSmJDQUtXbm5KZVcwR00yZGxNRDQ0eC94Z3JTK3ZqZDI4SXEwTCtESHNsVnBPTENJaTVhK3dXdlQvbmJ4YWNBQnE3ZGhlcVZPMVN1ZldZY25Wa1BDOEZTdjB2YVQ2M1RQV3BpRHVHb1RtQk1hRE5EMks1dkFI''@;'; put 'put ''TXZDNUtIbk5vRTVubjNXSEhwNmpRNmp0V0czUTd4U0FwWkFmRVpFdURZV2lvQllSTkxldEZmeTRvL2NlZWZBbldlSHo5NHhjTWVkdDUvTnZqK0wyT0t5VmpQakJSc1VSWGVwOGEwTDYwaGx4RmZrTll0NkhSaGF2VERnWTFlRm5Lc1lycXI1bGdLV1NhRWxBNTVCY2RXU0l6Z1h1Y3RSSHI2R0tP''@;'; put 'put ''YXVEOHJXaW9xS2FFVlYyQkZ4c0IwaTJWSnpLWkN0cXFjeEl2SjRNYTk4MVZGT2lHQlBrbnd2ZWMzNXZkZnVyankrTTVFRW1UNUkzeW41UlFXNHBpa0RrbzByRDJYcWxCODJaNGozMXA2Wno4NjIxc3pYbmVxaEVsMHpyL3g2dUF4ZkV3Q3hmcVByU09kRXAvSlFnTnM2VmlQQzZOdWs4c0NqNitW''@;'; put 'put ''cERjeEI5T05OWUU1b01GbGJ0eDdtZUxZZnpZN2x5RGYzbDltejJ0Um52YkM2bjV4NksxcEhsSkJqd0JWNkhkWWZFTEc2ZkpiZFBBcG1LOS9qeXZmYXZQYXczeWF4NmpKM01xZnFLcFN0dWpwMVlhWHFTaDVqVlZmSFdoYzZ1eFphYnZwMVIwTkQrK3RxWFdLU2ZCZGtmdXBaTS9qdE5IZmxCNDRv''@;'; put 'put ''QmFVdlFNQXhyeFZUZS9qeXNJalZsSFd4V2xZNW53WE11VDBsbTV4QmY5QWZEN0RWcm5YN0ttSTRwUlU2cFRSTFFKTmV2YTNYZG5jZmJFMG1XUFh1Y0txK3M3TStWVkhkMWxKVDAzcUtHSnQyMXRYdGJHb1lMK1FWdklkcDVlNWNZN2lxb1RHdU9EbnRlYTNCSzREckhqRHVCSFZQYlhSZEFCcmNr''@;'; put 'put ''M1A5a2dhUHBiRmMrSmV5MS9NR2NxOWZ6UFkvdHpYbnVoRE13cHRQYy9tRTY4Sjk0Q05Xb3dZa2swT0RUNXJvaWtwRk1SRFZCMzZBRzV0SUV4Wk44R0RSS0JBa2lRTmdxYzBBVTdZeEREWkw0RXlZSlFwbXVZS3ViRmZXVmVsYU1NTUdZQ3NReG8waHB1Zy9Qc1VZTW9uRU5HbUFtRkNVaUhnZ3ow''@;'; put 'put ''aW85OHNUK0ZhelJhQk93MHBkQTUxeDZuSk5MRGpiWU5DS3plYmN4cGEvL25tMi81L25VV1ExZ3N6UzV2TWczYUprdU9MV3NyeTJJVnBwUnZlRnYyTVhETWx5ZVNxVlNJQ2pKYWN5cmMySmhrU3lyaFo0TEU1RG4xQXdsSi8xdXRac1VQRG1iUGxneXpscjF0WlJZenZPNXNKZjVPdnNIWWZENVll''@;'; put 'put ''NzloNWZxWU5wdXJxMmZYZFJhSC9MMnNWMzVmT0R0RHltcFk2dnd0ZFh4NU5UUTlueW1PS2llRlZsZGM2aXZQSTVPZUYzMVFSRDNBNVdndTlNYXo4YTBHTnlTUkRyZGNrUUVmVU5oVUNmQWd6QmNSNUlHTVRHUkZTalJvZ0tSR0QwbzBnRURTUXlWY1hpSzE3SnNoY3NsUTlyOUFwUldJQzc3ZkxB''@;'; put 'put ''Y3NVNk9IYSt3ZjRzdUo2dDVZZVplOHZ5MUxxLzByR2x0U2o0S3dmeTEvdTFCWjNYWlRhcVQ4R210VzZ0Y2ZpR3JuWGxLbGs5RkdONnJvL3J2Mm0wd1hXcS96NlFjLzJTQm8rbDdibndGN1A5ekhIOXQvd3R0clpKKzNtWjkvOXVEdDhOQkd6THVYN1F3K0YvQ2RkTFdmOHY4LzRmNWRkZmhldGgx''@;'; put 'put ''aitIbjN1UTUrSHFXYTNOLzJTMVlydGtwNDB0cDJRUHZuQ1ljQjh2eGZCb0N4MzJWZFhBZElFY2c4WEVaRDczOHBTY1Yxek1hOEhDSWJwSFFuTlJzdTVKZU1YbHlsMFB3bTlzNzdsbGVQaGtUOHRDMTU3TzhPU1JzdDZCWTUzVDVhMGw0K09kOHZoRUo3RS9kUFgyc3dQZE53MzFIc3NNRGZiWDla''@;'; put 'put ''Y25heHFpL2I2bHYrem9rcS9hMXRsOWxZWWZVc0xzeVRpM0p5cGQrTG9qeGRzRXgrZmhqYTVUZWoyVWMvMlNCbytsZmJud0wyV3ZyKzcvWXJiL3VTbHVsenJRTmxKSStsbE8xVWYzVFFEZmEzVUZpS1h2a0E1WWZwSnRJSk5BRnZXakxGejIyWXJBKzlBeXJRYWF0OGd0TllDb09YY0hHYzZQeGtx''@;'; put 'put ''TG8xVWxmNkQ3M1g2b2ZzQmZwbitqeGFXeHBvV1h0TGN3Sm0wTjFrdHpzRmxmMXVzaU9oSUpGeFhxOURxemdhaStMTDBxckZ6ZDBKY3QzTWlYelYwMTNNaVg5ZnY5VmY3SzBEdjVzanF2dW1YU3cxeFpDZFJsUER4MFptQjRTOUcrN29vSXZCdlpXclN2UnpsWC9IS3dNdG9mKzA1ZnpQY0RmeFIv''@;'; put 'put ''Y0U5OTMrbUJhT2xJYURvSkVod3JHLzFsL044OElNT1BnaERYeFg3dnB1ZkhzTFVyU3Z1ZHEyUjQ5ZlVWR2ViWEwybndXUm5tMXk5bSsxRmxXRjJQb2Yzc1VmdTVOMmZObWRlNWZUeTNWSEdUdXNQMTY4NmIxQjF1dUVDOThXMjFCSkV1VVA5M2xSMHF3dnlhc3NNc1RpNnFPQUZjOWVYbXpUTFpQ''@;'; put 'put ''TlVDZW1CZGpNZDl3bk5abjNDaEo3ZnQ0V3oreW9nZTNLVHRON0orbzNGVTNaTzN2RTJvZ0hpZ0FLU3pYVzRwd3BLdUFJdVlEQmdnREFFU2t6bTJIVXZQOWhXd0ZWUzFKS3V3c05CWDZBdjY3WGE3eTArekwzcWVWRXdISW55N1hwS2pxVDZOd2QrdkNOZlh0YnZMR3JLNzk3Q24yRmRRWUZOK2Mr''@;'; put 'put ''TEVmV1Z0OVVFZjN6M2s4M2dLYkRqTk52U3A5WDdiU0MvSWFneWwwUXRjOEh3bFdLY3ZoaGpDZ3cxQ1RZSVlEVWFNalRFc1lmQkVONzhMNWx5VjNLaTJSWk1wSGJDNGhZTjBEUUhQaUlUUFVrMDBzUktBeEhwZ0ZueXdKa3krdmJrTnBtUkhQQjVQeHh2RFFXY2dHQTY0L0hRVklvdWJUUXFDUVl2''@;'; put 'put ''Wk5YU0ZjNHFEU1MvRG0zbDlnZkRjTFJ5QmY5RUtoVGtXMXhZSzArSmhodE5QYWdYRGFxN2dZeXhPREt0eDRpL1d4WnU4UHBiSzdsWlZkdS9PNWhrK3htSlYxaFliMFBsTjJsNVMyeEpzR09WOHl2WVlzcllSdGUzQ09qNk5ReHhqSmk4Q1RDK0R5UmQya0Q4aEk4QThULzVFZ1FCR3pSdUJCSnpK''@;'; put 'put ''MXMyK0MvUkpFWXpwTmRua0FNTHJnT2JhS255WW1oV01CRDA2QVB4cnkrNzAxYWhPc0ZZd1JiVlBkRk5vdEpycVJGTkRxMXRZTDl0aUZmQUtuQ2lxQmRHNXdOVDlkdmg4dnJBdkZLTFZDdUdBdXFRVldGOWJvaFl2b053U2szZDFyS294ZWVpaGt4M0t2MnVGSnAxTGY1OVRaL3YrcnFhbXBSL242''@;'; put 'put ''aW1lVDh4azg0a0xhUDg2T25QZjdWeldkMXRRZGRtYVhDUTJvUjlzMGxieit3U0FlWXJucUVEZWg5blpHS0NOaXJFQnMxMU9lbEhIOTFXcUoyTFErbnVKU1NFZ1VSTTlwb3U0TmxxUk9McExWUHNmMEVTTURET3hVaDRqZXVVV25uSHY0ZUxFcFloY1dLUXBkeVk0VEFjdHNKcmpFSXFqTTdLRFJn''@;'; put 'put ''d2hUUFFHY0FCQnR5QzZ5YndJK0tBU1hIa2RqUFFBelZScmxGV1BOMkxsUXN5UFpGWXBwSUd5T2VOOUc3VWd0SFF1SEE3SHd6RlBoVE1jRElSWWpsdFM1K0RWVk1yYTZtWHE5eU8xZ3ZtMXJSWTZxMkk2WFoxdGRTRnpFS0l1NVM5cVFGWHN0VHBoc2htWXZzV1JVOVFNNFJXZVpYWE5HK1NoRFJ2''@;'; put 'put ''a29kZjYrUWJWUjJCN1o1bU5pcW8yNnF2cjJ2SjZZMnFqQnJpTldsVGJLcS9UZmJlOExmQktQdkVqZmtZSHdBczF5SW9TcUFYOW1VdTd0eHBMK2pLc00wQW9wL05pSXVqb0VTNm96OGZ1aUJ2Y1VhMUN6RXlYY1FTRGJ0NklWelpoUzVKK0JzSm9xdmExZmIxT2tuTncyL29tSml5S2R0NFFyVzBt''@;'; put 'put ''VnlOa3BPZTg0UGxzMDh2QTAvaTdwb2Ftdld0YWFwcFR5ZnhFZmlKV0ZmQVhGN21kTlAxZFlOSDhZbm9jQUhlRjlYOUZSVFF1RFFXclFpRmpZU0JVaUlWM3JJNGVxZ3VYZGNhTEE1VjAvYnIzQ2txbElmNzZPVEI0Z3VrUnZnNndzUHp3dXJXQ253Qk1KZE1qUEVaYitBUmYwMjFhM29ZVTBBVXV1''@;'; put 'put ''ak9Vcm5qUzQxY0k3cytlNDhJTHF6VHA5L2pabmlaTkx1aE9XRTNnRlNidnVsT1cxVkt1K2h2VWhpQjQxcmZaV3I4ZkhaTE5idXIyKzBIUXFSRUowSlZqTVljcFZPOCtQeXVzakxhbExMUlpLVkJlQXpCRnQybVZseFpCaEptZnQyR0pzbE5kbGsxN2M4YytyNVlMYktGektQSG1uMnpqazFncEcx''@;'; put 'put ''Z0t3M3hLYXZQMCtOK1czbEpucEs3bG9HK3RyTUdBampXdHlRZHJOY1Q2N0w1dSs3cDkzYlEwV0wvMEZ2UTNDbko0bnAwM21lQnlpSC9QL1grNEhtUHlPYUplZjRKZnAzdXBtWjlSby9vWnpuVXl6K0o1NFY2QUdWVmhQT2c1RHZPY0JzUDNaTCtvOVFQOWY1LzVCRGpISjZEOTNNbGdSamVHNGZz''@;'; put 'put ''eVNCL3dVeDZ0dkxXWVRVWlJEeEpJdE4zcGF6WjY1NkU4dDdiUk95V2wwclFZMnkyNVNaOFNBUC8rMUtuRnhiY2lSeUo0aS9LZm1hTWQzOUgyZlRTdyt2QkJPYzlza2tScTZRMElhMVhpWm5oclUvZDBac3V6VjdaNSt0Z25iYkZyYXVxTGJsYjdneVV3OStyemNjUDR5YUdoaytONGI1Vnk4VC9E''@;'; put 'put ''UjhKNFF2bHRGY3F1V2QyaHJWa0JIbC9mQ05la2hQbDA0NnRpL1RHZzN4Y1pYZXRVL1dybDhIQzloTmcxZU1EcFJiVHlyQlBaOVRFRCt0d216N3FVelVNWTlxR2NkYXBNZHAxcUFUMjV6Z2ZrOGZtNWJDNWhZUkp0dEo2R3JXdlh1TlMyKzFieUhOaXE3aHNDeFN2UVBiWU9vRktMbk02ZU9HRWcy''@;'; put 'put ''U01uakhScnZWYXZ4eUxDRW1leHg4V0tlcWxyWWFJRkxwb3prUzEwY1dQN3luYnZIZXJ5L1F1emRCLzhMT2xkZXFzcmMwak9ITTd3UmZ5cFQxdzk4K21yRjVVVS9sN21zQ3pQTnpNN0JtTVdmZzcrQloxWE05b3VqM3N4alVUME9wcGUxd3NEd0VNNnZVRjN3R0lrb3FpbEhNeVNTY2hKT2lTVGdR''@;'; put 'put ''QkN5ZVprVTJNcVVCK29pMVZCZDM1bk1Cd001Y0c0VnlkcFY4eEJqdCtnVzNPT2pPcERDSGs4Tzl0NUpCdzVLdk1DODh6UlNQQzZqT1pJS0xmbDFKdmpXMWJ0ajJxc3EwM3pDdlRHbXRvVWN5bDB1VVhvdUo4NkY2cHZjWUxSTnFYeTc5UHIrSUxYUDFQYTd1QzVQelgrN1FVK1BjSDRONlh5NlNz''@;'; put 'put ''Y1hubWQxa3VyOFBSNlI5WS9QY0g0TjZYeTc4MGJQdXQyeHI4N09QOGErYlBZSG5nMnprWjFuQStzNDMxZU4wM0hlUlVmNTI1dC8zdzcyei9mZ2Q2V1MrckFHYWt2S1JiMFVoSGRmWWgxdU1BS0xra2VLOXJnZWVmNDZub05TUkpud1BQMURLS1ZOTWE2Y28zcU5lVWE3OWlvZEYyTmgzRHFuVnF4''@;'; put 'put ''ZGNPTmlqWFd0K08xR3VaUWRZU1dhZGdOVW5Fc0tHNmF5YjZDUXdKSTc2bnJOOGhwZXg4NGVKbHpBNjVmRkN2V3BMWXRzNWM3UmtDdGYyOW45ZTh5WFNlb3c2Syt2cFRveEpJaWduVGdMaUdnRnhIeVZxOFQ2Tmc2Z2JaU3FkYXViTEpPb0tObmFOMTJlV0M2VHJBR1RsMG4wTUJGdnVjdlhnbjRa''@;'; put 'put ''YXVnbDBFdkxhaDlwNHA4L0lPOW94dmhOM2xOK0hKbCt0c21wVFdMQjJreFVuYlp1djBjZVRxaHlSUEk0dVFtOG5SSmt5ZHNLT2Z5RkFSNW9tYzhsS01YNUh3dlVNUmpBWXFZNlhtVEtrVmlHa1VvNnNncG1nQlU2N09NQnNMOHMzV0VpV2NSZmlWdDVLbzE0Q3A1MXJYU1VUTFpZZGpscUp3Rzgx''@;'; put 'put ''UWFUQ0FNZm1rVFd0RWdueDRYZ0dlZDY2bmhLNlhuVmF5cEl1ek1IbC9COWtPMHMvMFFDZlJ0dWFBS0c0U29teGdOTGt5TTJhSklmVmJONkhYNnN5WU1BOFhHbzJCc0FNTjBONllnNktaRnZpZVQxejRpWDNaWnNucWxqY0ZJYm51blJuSjBZM2hXV29uMjV6UVRLSjdvZVFZSlZNMDJhWGdCVXpU''@;'; put 'put ''cm9kdUVvOWR2M1BCU0FjQ3BkUnlja2xmMmNnUjhjZHZhS3N5MGFhdzVkM3ZIUklFbHhQaVBuU1hDZURTdDh1ajZYRWdKK0IwRnpQK2M1UDRudVdhZGo4cHJPRExaR282RkRXd0h6NldmeStiU3Rad0tiL3R5dGtaRXExSE1yZjlnYlZsdEFNdmJBOHdkRzlXZ2dOOTAzNFp0aDFmV0FyQzFENm5u''@;'; put 'put ''b0d4ajU2QUU2TnFOQzdRK0xSck9vL3NxQnRSVHBiUXp4MW5PWFF0MjJKYS9RTEFnRUhUeE02Wm9VTG9tYzdIbTFCVHk2UERkazdac3VzSXhmMG85UFlWY1lHZWxXTDFxZ3NKZjVIMzRXTzVSS253ZnpqWXlDM0ZNQ04zR3cza3JtRlFCWW0xZENBTjdEZmhXWFNEWlZad1N2YmJEYStQMHI1L2Y1''@;'; put 'put ''eWxmYlVWblRjYlhIUFE3QTY2QXkwK3QyN3BVNzhyV25hUTlteE1uc3l3aXpjL2R5bk1TNTBhbmF6ZjFhSkVkMElxZDhjTDRzWVhYQytHdWRYekU5KzlRbmJtTDhZS0V2cHRUSTNSQ3F4R0M2N2V0YTh2WEtDNXBheFJZbWtBNWJZOW42NHZtMEEzcitJaWR3Y0o0clgzVGVrYStiNGJ5MmpUM2o0''@;'; put 'put ''NmduTGJIdGJZYjVnMTUyNHRxVzVvMy9HQk8yeFBadGh2bHBuamJTOXB6c2FHQm43MUM5eVhUR0RpZjdzaWdGZjEwbnhNWlFPcW1JYktYZXR3K3h0VDV5THJSa1dWaUlEOW5HL0hURyt3ZHByWDNONU5MVjNpZWlwZWVwM0orNGVEWThOQW91WFQvNk9qR2ZXVDNkUkYwRnRqeUJuVlhsOXBIT2lr''@;'; put 'put ''Rk1xTkR3Mk1IRjhpbGtaSDcxVDU2b1k5dlFIU3I3bWd3RWJxbllZQ0dHbjBiMWVEbklVdEl5TzVvVUNmTmdva254L3d0cm9haW9nWlhTL2w0alBUNnkxdGNYaTk4OExQbkRLRVhXVDRseko1ejJmcit0YnNsdEIwU0t5a09kVDlHTHdiOXh2WmpOTEZlNlNaV3VpTmhIcVFVWTJFeXU0bFd1S0pk''@;'; put 'put ''R2JuZlczQjdaMmQxUXBZVDN2SnlyOGZ2OTVEZXpnVDluT2hzOG52NFJiN1BZQnZXZzAyem94WTJnaG9yVENhZmNnejltb28rOWVRZXdPa2swNFlDdlVPbmFrZTJvRWVuN3N4UXo5K3ZXRkdJcDlwTHZNTmMvRUg3UGM3U09UNG04Smt5UnJja2FjUHZKeStCWEhleDU2YnBma3dqMjkzbXhyalBn''@;'; put 'put ''SVZlZGlqUkpEV3B3TVB6MnRFbFJCamx1eFdDSWJiWmpUNGYwY1B2MlZIYTNBTlVhU29Hc0NWUTZIQ2JIQjU5eHBDc2NXc2Y1UHpkcE4xdXM1aDlwVWE2UThoaUxpNDEzYTdTSkVQWGlkaTV0VVY4NTRVZXVMS1BocVUzT0IzWnZTaGVLUkJTTjVmZ0hjZjREcE8vOGR6QjVLOVJlWDM1dWVWdkl5''@;'; put 'put ''c0tzaDRLK2JuenEvZTVCYk45Q2FzUG9QOEt6MStXaElKVnlqTFBUYkk4SmRjcFhGZmVvZWxLMUkwck50R1ZyMmk2RW5VRHhFWnREK0luMzdIdFFkeVMwL1o0dHUwY2JscW5LM25iaTltMmMraHJQRDVkYnFGblYrYXVuN3o5ZSs1THZQMTcxWmVJTERmVE5RbWVaMmN3Rjk3K0hWOG5lL3QzS2d6''@;'; put 'put ''UDF4L0w5cE9IcnQwa1gvOVNObCtmTjRJMnJDWHRSdS9aeEU2OGtsM0w3bGJqM0RyME0yTEJ2ZTk4N2o4OW03ajNvTlpHYUwrQ05vTGw3VGUxTmkzNEEraFY4Z1R3VFRIam1iNjFtd281enppMTFEaFBybjUzNVFzTHlOMnJ2ckdBemltRDcwZS9JQmRneHZrMDY4ajNDSkxTN0I1QmVDYitQbnRt''@;'; put 'put ''Q2FxUXkwcXN3T3VyTm9VSlRMa0ZDNElPZHVMWDZtZnJOeDBLTHQ5a1dNR2M5M3g4K0lmQUd4RStQamJPUDhBNEhkbHhNcGV6Vk12dmpxSHplQkkvRGxDYjdMR2k1d3V3UFZacnpoZDRxajBZYkE4RTJNLzVZRnVRdjROTEhFL3R3RGRmUmg4RTJrTlFZd3ZBNng4WUQ5dnh6d0ZBb3QrUG83czc1''@;'; put 'put ''L3R4TW1nUW52eGJYbFJWbDQvMVZ2NzFOUVlzV3JESkxKcHl2L0xHbWVjUXpHWmh4bTYwU2JyY2I4cEp2VU5EOXEwM3ZMVkVXd3ZxOStVMGI5aHVnMi9NV2RjV29wSEdvU0ZaMXI0NVoyaHk2S3FKTVhsUUh0amFVNXVwN1docTNQQmJkRnovaFcvUktWL3pPWmdEVzk3NFYzL0REaDVrZitpSDRW''@;'; put 'put ''cmxjOXIzN1h3SzNnQnM4TXEvZUVkOVAxYVQreVU4SzEvR2c4SFRyOGNSL0cxNkt0RXplb3hyWXhuc0Jkd0ZIcG05Ly83WnBZdWVwNS8xOHYzQUFCZlQ0QVFHRjBsN3BRaEFQZkpJLzdOUGV5NStqOW1EMzZubkk5ZWdIZktFRDZoV2pIVWlvV1VrR0pucHFmUTZNSGNRYlI4d1ltTEMyRXgzakdT''@;'; put 'put ''M0NWbFlEU3RQUGNGckRVckVZOUVxdXlNRTRhSGRHY3FEVUhMbDJLY0l4STdjV1U5MmtKVmNDQzB2QTFSNy9Td3h5bllJMWI5bllPVGVlZTlZRnhHNmR4VE92M2RJM1JXVXVhNE1pOHJQOVFRSGxEZEtGN3ZuMkpIS25jZjdlajNtUWs5dnorRjJ0aWVvdTZtMzBHUDI5SFlNMGU5c3dVV2tFTjhK''@;'; put 'put ''dWs1OGh0QjlHTTdzYWUxMzBuUGFtVk1EYm8wQW10ZHY5eE5oYVluKzVwd1J4cys0TUR6cmRlYnBTZTEvL2JDSnQ4WTJQR3lDMTJIQWMwQzM0MXAxcmVBSnJUNERybjlEdmI2eVJzdXZYOHBlbDQ3blhyK29YVWR6QjNPdnY1SzkzbjBxOS9xNTdQV0ZlZTFzdEcza0hwWWpUOEM4SXdFbmhubHZY''@;'; put 'put ''RllEczAvbVZOUGs0T0VlRm5SWmM1RnhranRkZjFKeHdtT3ZYS3lvY2RkamEzRkQ0MnlPRzRpelA1MHo5cGV5T01pN2p0dERXcnIvTlhaT2owYnZwRDJ3VlR0eEI5TjZPTGl2WDM5ZnZ6U0svaC9pRXp6NkFBRUFBQUFCQUFCVkVyVCtYdzg4OVFBZkErZ0FBQUFBMDhHZGhnQUFBQURVdnFiMS96''@;'; put 'put ''Yis0d1NLQTg0QUFBQUlBQUlBQUFBQUFBQjQybU5nWkdCZ1B2ZnZQQU1EeStiL1p2OXpXTG9ZZ0NMSWdORVFBS2NOQnJnQUFBQjQybldVeldzVFVSVEZ6NzB6RkVFSTJFUlFRb3pHWUV4TXFrbTEwV290YVdwaUJXdnNScXhZRjFJWExsUzZVRVFGa2E1RVJWMjRjMVhwMG9WS2QzYWhDQVg5QzBS''@;'; put 'put ''UXV0Q0NDaFZLb1M2TTV6NHpFcE9hY0RqejhkNjhlMy92ek1nU1RvTS9PVXBGcVJRcU1vK1NUaUdoRTRoN1JhVDFDYlpJQjBweUJUM1VObm1BTGoyQmd4emZMeGVSbC9Yb2s5bjZWMzNKNDl2bzFGUEk4djRtdlVtZHhRNjlqbDA2aW00OWp3eVBDMjQ4NStvd2l2WWMrbUZaUWRpN3hIbUxDT3NN''@;'; put 'put ''YXZvTU9WMmgzMENWZFZUMUM4OC9vaW9oREdrYzYvUXBqdWtCbEx3enFIaytsZUg5ZTZnNmYrem14TGxXa3M4YjBoK0krRVZzMU5mWXdIbHI5QzY2NVJxT3NPWmxlazRXc0ZOcjlWOHl6cHJLU09rZFZEU0I3ZlNzamlBbEU0anBKR3NmdzRBSTlvdlU1N1JBSG9LeTl3Z0R2RjdXcTI1OHhlYklm''@;'; put 'put ''VEpjd21hWjVMd3hzcXloMDZ0eTdUd2k3RGVpSVhUSlF5UWxpWFAwbEx6Q0huSWZkR3ZlUXQ1cWxEbldzcHYzM3BHeDFUWEZQUUQyU2RsZHo1SlhnbjJGblJiL2xaL2tHc2JQMkRWSlF2VzN4by8ralpyM29rZ0g3RnFsbVFaTDQ5Y3M0MGZPZXBJeVZxdkllMEczWHNpdVdlVDJ4cGpSUDFNZjlE''@;'; put 'put ''SUtmOW0xeW5KaGJ2eWFaZnlNczduMWEydTJ1dlZ1NndkdU9lSytXTC9NY3RieHNKcWEvWGpUdVdYTjlydmhaUFdKOWI0bnU3MnNINDRoKzNBWlpBNHNoKzQ4OEhIRVpBUXhZMnY5dGJseFpXK0IreUhrL0E3V3lkeGFkdHFjV2JZOHRUbno3VElXdU8yUE1mcVAyenZnY21oN2FQd2E3NExsc2RV''@;'; put 'put ''dDR6TEQ3RFdFbi9SUmFwQ2E1WmhEdklaNlQvRE1WbTlqMmxpVGRjTmIrUE85NFRPQmFVRDdrUGN1OE5zUlJhLzdMcXhGTDlVdjArUzE3TDRWOEo4akxjUFlTbkYvNjk5ZFBqek81YjZ1OHErZzhoc3BZOWZPZU5wRndsMUk0bkFBQVBDMWx0K3VNcHRPOTNIK042ZWJPN2U1TlVGNmtpUGlDQi9p''@;'; put 'put ''aUFpSkhvNklPT1E0SXFLSEl5VGlrQjRPa1pDSU9FSWlJdUtJRUxtSGtPZ2hZa1FQSVJFUlIvUWdJdEpEeUNFUjkzSncvSDRRQkdYKzJZYjJ1NkN1TkV6QTMrRWorQXB1ZGYvb1B1OXVJUlpFUUpKSUR0bEg2ajBqUGNzOTV5YkJOR1k2TWI4eHA4MFo4NnE1YkRZc2xLVnQ1YXpMMWpQcmkwMjBU''@;'; put 'put ''ZGoyYk5lMmhwMndqOXJuN0hsN3hRRTVFbzZDbytZVW5XUE9ySFBQV1VNaGxFUEgwVlYwRXpYUVZxK2psK3ZkNlJ2dVcrdjM5cy8zWDdxbVhHVlhlMkJpWUh2Z3dpMjZsOXpWUVc1d1kvQVNZN0VaN0FBenNJNkg4MHg3Y3A1clQ4dXJlMGU4Uzk1VEhNVlQrRHBleE12NEZmN3FZMzFydnJ5djd1''@;'; put 'put ''djRIWDdLTC91VC9nLytMU0pEckJCNW9rU1VpWFBpbG1nU3IrUjdNazFteUJVeVQ1YklNbmxOVFZPZnFTeFZvSGFwQ3ZWTXArazVlb0Zlb2RmcElsMEtKQUozZ1hyZ0dVREFBYnlBQlRJWUJudmdHRlNCQVc3QUkzaGlFc3dKYzhIVW1BZW14WFRZSlhhVjNXQjMyR08yR3V3TC9nb2F3WnRnSTlq''@;'; put 'put ''bUxKeVBBNXpCM1hNTjdpVmtDWTJIYXFGNjZEbHNDcnZDVlBpSmgzbVVmOGNmOGxXK3hqL3dMUUVTWEFJcjZNS3NVQkxLd3Fsd0tkd0tUZUZQeEJiQkl1R0lGc21LaUlpSlFJeUtDWEZNbkJUbnhjVzNxU2dVZFVXcDZJRTBMbjJVRnFWdlVrSGFsWTZrTStsS1p1Vk4rVUN1eUJkeVRhN0xIY1dr''@;'; put 'put ''ZUJWVzBaV2tzcUJzS0JXbEdjTmlrN0ZDN0xjS3E3S2FWRlBxalBwSi9hcm0xQzMxVUsycWhucXZOdjdURUkzU1JyVkpyYWo5MU82MHB0WWNlaGhxNnpaOVdjL3BSZDNRYi9SSC9VbC9pVnZpN3ZoVWZEYitKWjZONS84Q0RCRE15QUFCQUFBQlBBQm9BQW9BUVFBRUFBSUFLQUE1QUlzQUFBQ1RB''@;'; put 'put ''bXNBQXdBQmVOcU5rc3RPd2tBVWh2OFdOS0RHS0RIR3NPcktHQk81cWVCdFlkU3dVZFJJaEswZ0ZSckJZaWxHWGZvMmJsejZERjZld0kyUDREUDRkeml0TjJMSXBKMXY1dnpuUHpPbkJSRERPMExRd2xFQU8zeDZyR0dPcXg3ckdFZFRPSVFOM0FxSHNZSkg0U0hFOFNFOGpGa3RJaHhCUmtzSVJ4''@;'; put 'put ''SFhUb1JIc2FUNVBtTW9hUS9DRTVqU3c4S1RpT2t6d2srWTF1ZUZuNUhTTjRWZkVOSGJ3cThZMGE5Ny9CWkNYTC9ETm15MGNRTUhGdXBvd0lXQmV6NFpwSkJHbGxSbDFLQ3VvVFFkY3BGemkxa2Q1bDRnZ1FKTTVqbkt5V1lmZkpWSmxVWGFVcnMxSEhHbmppNjVRbldhbVNrMTFuR01YWlN4VCty''@;'; put 'put ''bnRSQjQrVTZEVmpSKzFTeHg1VkJycVpNYjM4NHdXTjBTK1pRNm0wcXZLd2QwTVRsNzJUWEdLdVJEeHIzWUh1ZmFQMzN6ZXUxeXRZWWt4OVVQWjF2NXRnTFhCR00yMTM1T1I3THFqTHJjN2ZJcitab2taNzltUzkzMXEyYXk3ejM3N2YzdFpaazdWWndwSHpmb1hVRTZtVmRSZ3lPcllqbWVNSTFW''@;'; put 'put ''dmhleEhQeFBPWnhUWjZvNmpueUZmT0JZeENWdllqSGlVTlA4QkxoWmg1Y0FBSGphYlpOWGJCeFZGSWEvMzdGMzNUWk83NzFYeDE3M3hDa3VhOGV4WXljdWNlekVTY2E3WTJmeGVoZkd1M0ZzdWdRQ0hrRHd3alBsQ1JDOUNpUjRRS0pYMFhzSDBYbWtCKy9jQ1Y0azdzTjgveG1kODU4ejk5NGhD''@;'; 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 ''IndvZmYiKTtmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTpub3JtYWx9OnJvb3R7LS1jbHItbGluay1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNTAwKTstLWNsci1saW5rLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1saW5r''@;'; put 'put ''LWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1saW5rLXZpc2l0ZWQtY29sb3I6aHNsKDIzOCwgNDElLCA1MyUpOy0tY2xyLWN1c3RvbS1saW5rcy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApfWh0bWx7Ym94LXNpemluZzpib3Jk''@;'; put 'put ''ZXItYm94fSosOmJlZm9yZSw6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fWh0bWx7LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1bcm9sZT1idXR0b25de2N1cnNvcjpw''@;'; put 'put ''b2ludGVyfWEsYXJlYSxidXR0b24sW3JvbGU9YnV0dG9uXSxpbnB1dCxsYWJlbCxzZWxlY3Qsc3VtbWFyeSx0ZXh0YXJlYXt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9ufWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjJweCBzb2xpZCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZz''@;'; put 'put ''ZXQ6MXB4fWJ1dHRvbjotbW96LWZvY3VzcmluZyxbdHlwZT1idXR0b25dOi1tb3otZm9jdXNyaW5nLFt0eXBlPXJlc2V0XTotbW96LWZvY3VzcmluZyxbdHlwZT1zdWJtaXRdOi1tb3otZm9jdXNyaW5ne291dGxpbmU6MnB4IHNvbGlkIEhpZ2hsaWdodDtvdXRsaW5lLW9mZnNldDoxcHh9aW5w''@;'; put 'put ''dXQsYnV0dG9uLHNlbGVjdCx0ZXh0YXJlYXtib3JkZXItcmFkaXVzOjB9aW5wdXRbdHlwZT1yYWRpb106ZGlzYWJsZWQsaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWlucHV0W3R5cGU9ZGF0ZV0saW5wdXRbdHlwZT10aW1lXSxpbnB1dFt0eXBlPWRh''@;'; put 'put ''dGV0aW1lLWxvY2FsXSxpbnB1dFt0eXBlPW1vbnRoXXstd2Via2l0LWFwcGVhcmFuY2U6bGlzdGJveH10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9ZmllbGRzZXR7bWluLXdpZHRoOjA7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowfWxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7''@;'; put 'put ''cGFkZGluZzowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aW5wdXRbdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTpub25lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9ZGx7bWFyZ2luLWJvdHRvbTowO21hcmdpbi10b3A6MXJlbX10YWJsZXtib3JkZXItc3BhY2luZzowfWE6''@;'; put 'put ''bGlua3tjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1saW5rLWNvbG9yLCAjMDA3MmEzKTt0ZXh0LWRlY29yYXRpb246bm9uZX1hOnZpc2l0ZWR7Y29sb3I6IzU2NTliODtjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLCAjNTY1OWI4KTt0ZXh0LWRlY29yYXRpb246bm9u''@;'; put 'put ''ZX1hOnZpc2l0ZWQ6aG92ZXJ7Y29sb3I6IzU2NTliODtjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLWhvdmVyLCAjNTY1OWI4KX1hOmhvdmVye2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWxpbmstaG92ZXItY29sb3IsICMwMDcyYTMpO3RleHQtZGVjb3JhdGlvbjp1''@;'; put 'put ''bmRlcmxpbmV9YTphY3RpdmV7Y29sb3I6IzllNTdiYztjb2xvcjp2YXIoLS1jbHItbGluay1hY3RpdmUtY29sb3IsICM5ZTU3YmMpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNsci1zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAt''@;'; put 'put ''cGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uYWxlcnQtaWNvbiwuY2xyLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi44cmVtO3dpZHRo''@;'; put 'put ''Oi44cmVtO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmcsLmFsZXJ0LWljb24uaWNvbi13YXJuaW5nLC5jbHItaWNvbi5jbHItaWNvbi13''@;'; put 'put ''YXJuaW5nLC5jbHItaWNvbi5pY29uLXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIwMjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0''@;'; put 'put ''aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUy''@;'; put 'put ''MHR5cGUlM0QlMjJ0ZXh0JTJGY3NzJTIyJTNFJTBBJTA5LmNsci1pLW91dGxpbmUlN0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0ElMjM3NDc0NzQlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWxpbmUlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUl''@;'; put 'put ''MjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTglMkMyMS4zMmExLjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxLjMtMS4zVjE0YTEuMyUyQzEuMyUyQzAlMkMxJTJDMC0yLjYlMkMwdjZBMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJDMTglMkMyMS4zMlolMjIlM0UlM0MlMkZwYXRo''@;'; put 'put ''JTNFJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTIlMjIlMjBjeCUzRCUyMjE3Ljk1JTIyJTIwY3klM0QlMjIyNC4yNyUyMiUyMHIlM0QlMjIxLjUlMjIlM0UlM0MlMkZjaXJjbGUlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1v''@;'; put 'put ''dXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTMlMjIlMjBkJTNEJTIyTTMwLjMzJTJDMjUuNTQlMkMyMC41OSUyQzcuNmEzJTJDMyUyQzAlMkMwJTJDMC01LjI3JTJDMEw1LjU3JTJDMjUuNTRBMyUyQzMlMkMwJTJDMCUyQzAlMkM4LjIxJTJDMzBIMjcuNjlhMyUyQzMlMkMwJTJDMCUyQzAl''@;'; put 'put ''MkMyLjY0LTQuNDNabS0xLjc4JTJDMS45NGExJTJDMSUyQzAlMkMwJTJDMS0uODYuNDlIOC4yMWExJTJDMSUyQzAlMkMwJTJDMS0uODgtMS40OEwxNy4wNyUyQzguNTVhMSUyQzElMkMwJTJDMCUyQzElMkMxLjc2JTJDMGw5Ljc0JTJDMTcuOTRBMSUyQzElMkMwJTJDMCUyQzElMkMyOC41NSUy''@;'; put 'put ''QzI3LjQ4WiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdmclM0UpfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGUsLmNsci1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGV7YmFja2dyb3VuZC1pbWFnZTp1''@;'; put 'put ''cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIwMjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0El''@;'; put 'put ''MkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUyMHR5cGUlM0QlMjJ0ZXh0JTJGY3NzJTIyJTNFJTBBJTA5LmNsci1pLW91dGxpbmUl''@;'; put 'put ''N0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0ElMjNmZmZmZmYlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0''@;'; put 'put ''aW9uLXRyaWFuZ2xlLWxpbmUlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTglMkMyMS4zMmEx''@;'; put 'put ''LjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxLjMtMS4zVjE0YTEuMyUyQzEuMyUyQzAlMkMxJTJDMC0yLjYlMkMwdjZBMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJDMTglMkMyMS4zMlolMjIlM0UlM0MlMkZwYXRoJTNFJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIlMjIlMjBjeCUzRCUyMjE3Ljk1JTIyJTIwY3klM0QlMjIyNC4yNyUyMiUyMHIlM0QlMjIxLjUlMjIlM0UlM0MlMkZjaXJjbGUlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTMlMjIlMjBkJTNEJTIyTTMwLjMz''@;'; put 'put ''JTJDMjUuNTQlMkMyMC41OSUyQzcuNmEzJTJDMyUyQzAlMkMwJTJDMC01LjI3JTJDMEw1LjU3JTJDMjUuNTRBMyUyQzMlMkMwJTJDMCUyQzAlMkM4LjIxJTJDMzBIMjcuNjlhMyUyQzMlMkMwJTJDMCUyQzAlMkMyLjY0LTQuNDNabS0xLjc4JTJDMS45NGExJTJDMSUyQzAlMkMwJTJDMS0uODYu''@;'; put 'put ''NDlIOC4yMWExJTJDMSUyQzAlMkMwJTJDMS0uODgtMS40OEwxNy4wNyUyQzguNTVhMSUyQzElMkMwJTJDMCUyQzElMkMxLjc2JTJDMGw5Ljc0JTJDMTcuOTRBMSUyQzElMkMwJTJDMCUyQzElMkMyOC41NSUyQzI3LjQ4WiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdmclM0UpfS5hbGVydC1pY29uLmNsci12bXctbG9nbywuY2xyLWljb24uY2xyLXZtdy1sb2dve2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2''@;'; put 'put ''JTIwMzYlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''M0N0aXRsZSUzRXZtJTIwYnVnJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMkhlYWRlcnMlMjIlMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMSUyMiUyMGZpbGwl''@;'; put 'put ''M0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMkNMLUhlYWRlcnMtU3BlY3MlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUoLTI2Mi4wMDAwMDAlMkMlMjAtMTc1LjAwMDAwMCklMjIl''@;'; put 'put ''M0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjIwMSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSgyMzguMDAwMDAwJTJDJTIwMTYzLjAwMDAwMCklMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJ2bS1idWclMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUoMjQuNzAzMTI1JTJDJTIwMTIuMDAwMDAwKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBp''@;'; put 'put ''ZCUzRCUyMlJlY3RhbmdsZS00MiUyMiUyMGZpbGwtb3BhY2l0eSUzRCUyMjAuMjUlMjIlMjBmaWxsJTNEJTIyJTIzREREREREJTIyJTIwb3BhY2l0eSUzRCUyMjAuNiUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjM2JTIyJTIwaGVpZ2h0JTNEJTIyMzYlMjIl''@;'; put 'put ''MjByeCUzRCUyMjMlMjIlM0UlM0MlMkZyZWN0JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNNy42Mzk0ODM3NiUyQzEzLjg3NjI0MDIlMjBDNy4zMjI2NTMyNCUyQzEzLjIwOTcwODIlMjA2''@;'; put 'put ''LjUzOTc4MTUyJTJDMTIuOTA4NTEzOSUyMDUuODA5MjMwNDIlMkMxMy4yMTk5MzQlMjBDNS4wNzc3MTA0MyUyQzEzLjUzMjI4MzclMjA0LjgwOTMyNDk1JTJDMTQuMzEwMzY5MSUyMDUuMTM5NzIwMDclMkMxNC45NzY5MDExJTIwTDguMjA3MjU5NTQlMkMyMS4zNzQ0OTIzJTIwQzguNjg5Nzcy''@;'; put 'put ''MDclMkMyMi4zNzg0NzM1JTIwOS4xOTg0NDQ5MSUyQzIyLjkwMzcwNDQlMjAxMC4xNTI4MTIxJTJDMjIuOTAzNzA0NCUyMEMxMS4xNzIwOTU1JTJDMjIuOTAzNzA0NCUyMDExLjYxNjgyMDklMkMyMi4zMzEwNjMzJTIwMTIuMDk4MzY0NiUyQzIxLjM3NDQ5MjMlMjBDMTIuMDk4MzY0NiUyQzIx''@;'; put 'put ''LjM3NDQ5MjMlMjAxNC43NzQ0NjgyJTJDMTUuNzg0NzM0MSUyMDE0LjgwMTU5NzQlMkMxNS43MjYxNjg1JTIwQzE0LjgyODcyNjYlMkMxNS42NjY2NzMzJTIwMTQuOTE0OTU4OCUyQzE1LjQ4NjMyODYlMjAxNS4xODcyMTk5JTJDMTUuNDg3MjU4MiUyMEMxNS40MTc4MTgyJTJDMTUuNDkwMDQ3''@;'; put 'put ''JTIwMTUuNjEwNjI5NCUyQzE1LjY2NTc0MzclMjAxNS42MTA2Mjk0JTJDMTUuOTAxODY1MiUyMEwxNS42MTA2Mjk0JTJDMjEuMzY5ODQ0MyUyMEMxNS42MTA2Mjk0JTJDMjIuMjEyMDczJTIwMTYuMDk3OTg2NSUyQzIyLjkwMzcwNDQlMjAxNy4wMzQ5MTM0JTJDMjIuOTAzNzA0NCUyMEMxNy45''@;'; put 'put ''NzE4NDAzJTJDMjIuOTAzNzA0NCUyMDE4LjQ3ODU3NTQlMkMyMi4yMTIwNzMlMjAxOC40Nzg1NzU0JTJDMjEuMzY5ODQ0MyUyMEwxOC40Nzg1NzU0JTJDMTYuODk2NTUwMyUyMEMxOC40Nzg1NzU0JTJDMTYuMDMzODcwMiUyMDE5LjEyMTkyNTQlMkMxNS40NzQyNDM2JTIwMjAuMDAwNzE4MyUy''@;'; put 'put ''QzE1LjQ3NDI0MzYlMjBDMjAuODc4NTQyMyUyQzE1LjQ3NDI0MzYlMjAyMS40NjM3NTgzJTJDMTYuMDUyNDYyNCUyMDIxLjQ2Mzc1ODMlMkMxNi44OTY1NTAzJTIwTDIxLjQ2Mzc1ODMlMkMyMS4zNjk4NDQzJTIwQzIxLjQ2Mzc1ODMlMkMyMi4yMTIwNzMlMjAyMS45NTIwODQyJTJDMjIuOTAz''@;'; put 'put ''NzA0NCUyMDIyLjg4ODA0MjMlMkMyMi45MDM3MDQ0JTIwQzIzLjgyNDAwMDMlMkMyMi45MDM3MDQ0JTIwMjQuMzMyNjczMSUyQzIyLjIxMjA3MyUyMDI0LjMzMjY3MzElMkMyMS4zNjk4NDQzJTIwTDI0LjMzMjY3MzElMkMxNi44OTY1NTAzJTIwQzI0LjMzMjY3MzElMkMxNi4wMzM4NzAyJTIw''@;'; put 'put ''MjQuOTc1MDU0MyUyQzE1LjQ3NDI0MzYlMjAyNS44NTM4NDcyJTJDMTUuNDc0MjQzNiUyMEMyNi43MzA3MDIzJTJDMTUuNDc0MjQzNiUyMDI3LjMxNjg4NzElMkMxNi4wNTI0NjI0JTIwMjcuMzE2ODg3MSUyQzE2Ljg5NjU1MDMlMjBMMjcuMzE2ODg3MSUyQzIxLjM2OTg0NDMlMjBDMjcuMzE2''@;'; put 'put ''ODg3MSUyQzIyLjIxMjA3MyUyMDI3LjgwNTIxMzElMkMyMi45MDM3MDQ0JTIwMjguNzQyMTQlMkMyMi45MDM3MDQ0JTIwQzI5LjY3NzEyOTElMkMyMi45MDM3MDQ0JTIwMzAuMTg0ODMzMSUyQzIyLjIxMjA3MyUyMDMwLjE4NDgzMzElMkMyMS4zNjk4NDQzJTIwTDMwLjE4NDgzMzElMkMxNi4y''@;'; put 'put ''NzgzNTgyJTIwQzMwLjE4NDgzMzElMkMxNC40MDcwNDg4JTIwMjguNjE4MTIwNyUyQzEzLjA5NjI5NTYlMjAyNi43MzA3MDIzJTJDMTMuMDk2Mjk1NiUyMEMyNC44NDUyMjE2JTJDMTMuMDk2Mjk1NiUyMDIzLjY2NTEwMDYlMkMxNC4zNDc1NTM2JTIwMjMuNjY1MTAwNiUyQzE0LjM0NzU1MzYl''@;'; put 'put ''MjBDMjMuMDM3MjUzJTJDMTMuNTY2Njc5MyUyMDIyLjE3MjAyNDclMkMxMy4wOTcyMjUyJTIwMjAuNzA4OTg0NyUyQzEzLjA5NzIyNTIlMjBDMTkuMTY0NTU3JTJDMTMuMDk3MjI1MiUyMDE3LjgxMjk0MDYlMkMxNC4zNDc1NTM2JTIwMTcuODEyOTQwNiUyQzE0LjM0NzU1MzYlMjBDMTcuMTg0''@;'; put 'put ''MTI0MSUyQzEzLjU2NjY3OTMlMjAxNi4xMTU0MjY3JTJDMTMuMDk3MjI1MiUyMDE1LjIzMDgyMDQlMkMxMy4wOTcyMjUyJTIwQzEzLjg2MTc2MzglMkMxMy4wOTcyMjUyJTIwMTIuNzc0NjU3MiUyQzEzLjY3NTQ0NCUyMDEyLjExMTkyOTIlMkMxNS4xMzAyODcxJTIwTDEwLjE1MjgxMjElMkMx''@;'; put 'put ''OS41NjA4MTg5JTIwTDcuNjM5NDgzNzYlMkMxMy44NzYyNDAyJTIyJTIwaWQlM0QlMjJGaWxsLTQlMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElM0MlMkZzdmclM0UiKX0uaXMtb2ZmLXNjcmVlbntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7''@;'; put 'put ''Ym9yZGVyOjAhaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0b3A6LWNvbnZlcnRCYXNlbGluZVRvQmFzZTIwKDEpIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWlt''@;'; put 'put ''cG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLWNvbnZlcnRCYXNlbGluZVRvQmFzZTIwKDEpIDAhaW1wb3J0YW50fS5jbHItcG9wb3Zlci1jb250ZW50e3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTA1MH06cm9vdHstLWNsci1idG4tdmVydGljYWwtbWFyZ2luOi4zcmVt''@;'; put 'put ''Oy0tY2xyLWJ0bi1ob3Jpem9udGFsLW1hcmdpbjouNnJlbTstLWNsci1idG4taG9yaXpvbnRhbC1wYWRkaW5nOi42cmVtOy0tY2xyLWJ0bi12ZXJ0aWNhbC1wYWRkaW5nOjA7LS1jbHItYnRuLXBhZGRpbmc6dmFyKC0tY2xyLWJ0bi12ZXJ0aWNhbC1wYWRkaW5nKSB2YXIoLS1jbHItYnRuLWhv''@;'; put 'put ''cml6b250YWwtcGFkZGluZyk7LS1jbHItYnRuLWhlaWdodDoxLjhyZW07LS1jbHItYnRuLWhlaWdodC1zbToxLjJyZW07LS1jbHItYnRuLWZvbnQtd2VpZ2h0OjUwMDstLWNsci1idG4tYm9yZGVyLXJhZGl1czouMTVyZW07LS1jbHItYnRuLWJvcmRlci13aWR0aDouMDVyZW07LS1jbHItYnRu''@;'; put 'put ''LW91dGxpbmUtYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtbGluZS1oZWlnaHQ6MS4xNXJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1mb250LXNpemU6LjU1cmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtd2Vp''@;'; put 'put ''Z2h0OjUwMDstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1oZWlnaHQ6MS4ycmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmc6MCAuNnJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemU6LjZyZW07LS1jbHItYnRuLWFwcGVhcmFuY2Ut''@;'; put 'put ''Zm9ybS1saW5lLWhlaWdodDoxLjhyZW07LS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1sZXR0ZXItc3BhY2luZzouMTJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtc2l6ZTouNnJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtd2VpZ2h0OjUwMDstLWNsci1idG4t''@;'; put 'put ''YXBwZWFyYW5jZS1mb3JtLWhlaWdodDoxLjhyZW07LS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1wYWRkaW5nOjAgLjZyZW07LS1jbHItYnRuLWRlZmF1bHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWJ0bi1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLWRlZmF1bHQtY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTApOy0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1h''@;'; put 'put ''Y3Rpb24tODAwKTstLWNsci1idG4tZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTAwKTstLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJn''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9u''@;'; put 'put ''LTYwMCk7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJvcmRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlv''@;'; put 'put ''bi01MCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRs''@;'; put 'put ''aW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxl''@;'; put 'put ''ZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItYnRuLXByaW1hcnktYm9yZGVyLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1idG4tcHJpbWFyeS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYnRuLXByaW1hcnktaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItYnRuLXByaW1hcnktYm94''@;'; put 'put ''LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwMCk7LS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00''@;'; put 'put ''MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLXN1Y2Nlc3MtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLXN1Y2Nlc3MtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1ib3JkZXItY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy04MDApOy0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvcik7LS1jbHItYnRu''@;'; put 'put ''LXN1Y2Nlc3MtYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy05MDApOy0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtNDAwKTstLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1iZy1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''b3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTUwKTstLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTkwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTQwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJvcmRlci1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1kYW5nZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTcwMCk7LS1jbHItYnRuLWRhbmdlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1kYW5nZXItYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi1kYW5nZXItaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItYm94LXNoYWRvdy1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1i''@;'; put 'put ''dG4tZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1kYW5nZXItY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tZGFuZ2VyLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci03MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGlu''@;'; put 'put ''ZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTEwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1k''@;'; put 'put ''YW5nZXItOTAwKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTIwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLWRhbmdl''@;'; put 'put ''ci1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLWRhbmdlci1vdXRsaW5lLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yOnZhcigtLWNsci1j''@;'; put 'put ''b2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItNzAwKTstLWNsci1idG4td2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1kYW5nZXItODAwKTstLWNsci1idG4td2FybmluZy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmctYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYnRuLXdhcm5p''@;'; put 'put ''bmctZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci03MDApOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgw''@;'; put 'put ''MCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTEwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1i''@;'; put 'put ''b3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItMjAwKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWNoZWNrZWQtYmctY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tbGluay1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItYnRuLWxpbmstYmct''@;'; put 'put ''Y29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWxpbmstYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWhvdmVyLWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1idG4t''@;'; put 'put ''bGluay1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJvcmRlci1jb2xvcjp0cmFuc3BhcmVudDstLWNsci1idG4tbGluay1jaGVja2Vk''@;'; put 'put ''LWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1pbnZlcnNlLWJvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taW52ZXJzZS1iZy1jb2xvcjp0cmFuc3BhcmVudDstLWNsci1idG4taW52ZXJzZS1ob3Zlci1iZy1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSk7LS1jbHItYnRuLWludmVyc2UtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LW5ldXRyYWwtMCk7LS1jbHItYnRuLWludmVyc2UtYm94LXNoYWRvdy1jb2xvcjpyZ2JhKDAsIDAsIDAsIC4yNSk7LS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtYmctY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1pbnZlcnNlLWJnLWNvbG9yKTstLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWludmVyc2UtY2hlY2tlZC1iZy1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSk7LS1jbHItYnRu''@;'; put 'put ''LWludmVyc2UtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taWNvbi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpOy0tY2xyLWJ0bi1ncm91cC1mb2N1cy1vdXRsaW5lOiM1MWNiZWV9''@;'; put 'put ''LmJ0bntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXdpZHRoOi4wNXJl''@;'; put 'put ''bTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO21pbi13aWR0aDozLjZyZW07bWF4LXdpZHRoOjE4cmVtO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0ZXh0''@;'; put 'put ''LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpO2xpbmUtaGVpZ2h0OjEuOHJlbTts''@;'; put 'put ''aW5lLWhlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1saW5lLWhlaWdodCwgMS44cmVtKTtsZXR0ZXItc3BhY2luZzouMTJlbTtmb250LXNpemU6LjZyZW07Zm9udC1zaXplOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtc2l6ZSwgLjZyZW0pO2ZvbnQtd2Vp''@;'; put 'put ''Z2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1mb250LXdlaWdodCwgNTAwKTtoZWlnaHQ6MS44cmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1oZWlnaHQsIDEuOHJlbSk7cGFkZGluZzowIC42cmVtO3BhZGRpbmc6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0tcGFkZGluZywgMCAuNnJlbSl9LmJ0bjpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uYnRuIGNkcy1pY29uLC5idG4gY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpfS5idG46''@;'; put 'put ''dmlzaXRlZHtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvciwgIzAwNzJhMyl9LmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlM2Y1ZmM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItYmctY29sb3IsICNlM2Y1ZmMp''@;'; put 'put ''O2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzE3OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGVmYXVsdC1ib3gtc2hhZG93''@;'; put 'put ''LWNvbG9yLCAjMTc5YmQzKSBpbnNldH0uYnRuLmRpc2FibGVkLC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJh''@;'; put 'put ''bnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4''@;'; put 'put ''Yyk7Ym94LXNoYWRvdzpub25lfS5idG4tZ3JvdXA+LmJ0biBjbHItaWNvbiwuYnRuIGNsci1pY29ue3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0uMXJlbSwwKX0uYnRuLWdyb3VwPi5idG4gY2RzLWljb24sLmJ0biBjZHMtaWNvbnttYXJnaW4tdG9wOi0uMTRyZW19LmJ0bi5idG4tc2Vjb25k''@;'; put 'put ''YXJ5LC5idG4uYnRuLWluZm8sLmJ0bi5idG4tb3V0bGluZSwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LC5idG4uYnRuLWluZm8tb3V0bGluZSwuYnRu''@;'; put 'put ''LXNlY29uZGFyeSAuYnRuLC5idG4taW5mbyAuYnRuLC5idG4tb3V0bGluZSAuYnRuLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuLC5idG4taW5m''@;'; put 'put ''by1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bntib3JkZXItY29sb3I6IzAwNzJhMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJvcmRlci1jb2xvciwgIzAwNzJhMyk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yLCAjMDA3MmEzKX0uYnRuLmJ0bi1zZWNvbmRhcnkgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5IGNsci1pY29uLC5idG4uYnRu''@;'; put 'put ''LWluZm8gY2RzLWljb24sLmJ0bi5idG4taW5mbyBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0''@;'; put 'put ''bi1zZWNvbmRhcnktb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNkcy1p''@;'; put 'put ''Y29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNsci1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0biBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuIGNsci1pY29uLC5idG4t''@;'; put 'put ''aW5mbyAuYnRuIGNkcy1pY29uLC5idG4taW5mbyAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biBjbHItaWNv''@;'; put 'put ''biwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25k''@;'; put 'put ''YXJ5IC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuIGNsci1pY29uLC5idG4taW5mby1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1p''@;'; put 'put ''bmZvIC5idG4gY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLXNlY29uZGFyeTp2aXNpdGVkLC5idG4uYnRuLWluZm86dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4tcHJpbWFy''@;'; put 'put ''eS1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTp2aXNpdGVkLC5idG4uYnRuLWluZm8tb3V0bGluZTp2aXNpdGVkLC5idG4tc2Vjb25kYXJ5''@;'; put 'put ''IC5idG46dmlzaXRlZCwuYnRuLWluZm8gLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46dmlzaXRl''@;'; put 'put ''ZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46dmlzaXRlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjp2aXNpdGVke2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yLCAjMDA3MmEzKX0uYnRuLmJ0''@;'; put 'put ''bi1zZWNvbmRhcnk6aG92ZXIsLmJ0bi5idG4taW5mbzpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIsLmJ0bi5idG4t''@;'; put 'put ''b3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmJ0bi5idG4taW5mby1vdXRsaW5lOmhvdmVyLC5idG4tc2Vjb25kYXJ5IC5idG46aG92ZXIsLmJ0bi1pbmZvIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLXNlY29u''@;'; put 'put ''ZGFyeS1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46aG92ZXIsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''I2UzZjVmYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ob3Zlci1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3IsICMwMDU2N2EpfS5idG4uYnRuLXNlY29uZGFyeTphY3RpdmUsLmJ0''@;'; put 'put ''bi5idG4taW5mbzphY3RpdmUsLmJ0bi5idG4tb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFy''@;'; put 'put ''eTphY3RpdmUsLmJ0bi5idG4taW5mby1vdXRsaW5lOmFjdGl2ZSwuYnRuLXNlY29uZGFyeSAuYnRuOmFjdGl2ZSwuYnRuLWluZm8gLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tc2Vjb25kYXJ5LW91dGxp''@;'; put 'put ''bmUgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmFjdGl2ZSwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzE3''@;'; put 'put ''OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLCAjMTc5YmQzKSBpbnNldH0uYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5idG4uYnRuLWluZm8uZGlzYWJs''@;'; put 'put ''ZWQsLmJ0bi5idG4taW5mbzpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnkt''@;'; put 'put ''b3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkLC5idG4uYnRu''@;'; put 'put ''LW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLXNlY29uZGFyeSAuYnRuOmRpc2FibGVkLC5idG4taW5mbyAuYnRuLmRp''@;'; put 'put ''c2FibGVkLC5idG4taW5mbyAuYnRuOmRpc2FibGVkLC5idG4tb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLXNlY29u''@;'; put 'put ''ZGFyeS1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4uZGlz''@;'; put 'put ''YWJsZWQsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmRpc2FibGVkLC5idG4taW5mby1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtaW5mbyAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1pbmZvIC5idG46ZGlz''@;'; put 'put ''YWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1''@;'; put 'put ''bHQtZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4Yyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXByaW1hcnksLmJ0bi1wcmlt''@;'; put 'put ''YXJ5IC5idG57Ym9yZGVyLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ib3JkZXItY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvciwgIzAw''@;'; put 'put ''NzJhMyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1wcmltYXJ5IGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnkgY2xyLWljb24sLmJ0bi1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1wcmltYXJ5IC5idG4gY2xyLWljb257''@;'; put 'put ''Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1wcmltYXJ5OnZpc2l0ZWQsLmJ0bi1wcmltYXJ5IC5idG46dmlzaXRlZHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jb2xvciwgd2hpdGUpfS5idG4uYnRu''@;'; put 'put ''LXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5IC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA1NjdhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yLCAjMDA1NjdhKTtjb2xvcjojZTNmNWZjO2NvbG9yOnZhcigtLWNsci1idG4tcHJp''@;'; put 'put ''bWFyeS1ob3Zlci1jb2xvciwgI2UzZjVmYyl9LmJ0bi5idG4tcHJpbWFyeTphY3RpdmUsLmJ0bi1wcmltYXJ5IC5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWJveC1zaGFkb3ct''@;'; put 'put ''Y29sb3IsICMxNzliZDMpIGluc2V0fS5idG4uYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi5idG4tcHJpbWFyeTpkaXNhYmxlZCwuYnRuLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFy''@;'; put 'put ''eS1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJnLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItY29sb3I6I2NjYzti''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXN1Y2Nlc3MsLmJ0bi1zdWNjZXNzIC5idG57Ym9yZGVyLWNvbG9yOiMzYzg1MDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1ib3JkZXItY29sb3IsICMzYzg1MDApO2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1iZy1jb2xvciwgIzNjODUwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IsIHdoaXRl''@;'; put 'put ''KX0uYnRuLmJ0bi1zdWNjZXNzIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3MgY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG4gY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5idG4gY2xyLWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IsIHdoaXRlKX0uYnRu''@;'; put 'put ''LmJ0bi1zdWNjZXNzOnZpc2l0ZWQsLmJ0bi1zdWNjZXNzIC5idG46dmlzaXRlZHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1zdWNjZXNzIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjoj''@;'; put 'put ''MzA2YjAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWJnLWNvbG9yLCAjMzA2YjAwKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXN1Y2Nlc3M6YWN0aXZlLC5idG4tc3VjY2Vz''@;'; put 'put ''cyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzI1NTIwMCBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tc3VjY2Vzcy1ib3gtc2hhZG93LWNvbG9yLCAjMjU1MjAwKSBpbnNldH0uYnRuLmJ0bi1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLXN1Y2Nl''@;'; put 'put ''c3M6ZGlzYWJsZWQsLmJ0bi1zdWNjZXNzIC5idG4uZGlzYWJsZWQsLmJ0bi1zdWNjZXNzIC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1iZy1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1ib3JkZXItY29sb3IsICNjY2Nj''@;'; put 'put ''Y2MpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi13YXJuaW5nLC5idG4td2FybmluZyAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctYm9yZGVyLWNvbG9yLCApO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWJnLWNvbG9yLCApO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4td2FybmluZy1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmcgY2xyLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNv''@;'; put 'put ''bG9yLCApfS5idG4uYnRuLXdhcm5pbmc6dmlzaXRlZCwuYnRuLXdhcm5pbmcgLmJ0bjp2aXNpdGVke2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZyAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9yLCApO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1ob3Zlci1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmcgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtIGluc2V0O2JveC1zaGFkb3c6MCAu''@;'; put 'put ''MXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi13YXJuaW5nLWJveC1zaGFkb3ctY29sb3IsICkgaW5zZXR9LmJ0bi5idG4td2FybmluZy5kaXNhYmxlZCwuYnRuLmJ0bi13YXJuaW5nOmRpc2FibGVkLC5idG4td2FybmluZyAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZyAuYnRuOmRpc2FibGVke2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1jb2xvciwgKTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1iZy1jb2xvciwgKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJu''@;'; put 'put ''aW5nLWRpc2FibGVkLWJvcmRlci1jb2xvciwgKTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tZGFuZ2VyLC5idG4tZGFuZ2VyIC5idG57Ym9yZGVyLWNvbG9yOiNkYjIxMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWJvcmRlci1jb2xvciwgI2RiMjEwMCk7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjojZGIyMTAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYmctY29sb3IsICNkYjIxMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1kYW5nZXIgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2Vy''@;'; put 'put ''IGNsci1pY29uLC5idG4tZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1kYW5nZXIgLmJ0biBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4tZGFuZ2VyOnZpc2l0ZWQsLmJ0bi1kYW5nZXIgLmJ0bjp2aXNpdGVke2Nv''@;'; put 'put ''bG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1kYW5nZXI6aG92ZXIsLmJ0bi1kYW5nZXIgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1ob3Zlci1i''@;'; put 'put ''Zy1jb2xvciwgI2MyMWQwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWRhbmdlcjphY3RpdmUsLmJ0bi1kYW5nZXIgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICM5OTE3MDAgaW5zZXQ7Ym94LXNoYWRv''@;'; put 'put ''dzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLWRhbmdlci1ib3gtc2hhZG93LWNvbG9yLCAjOTkxNzAwKSBpbnNldH0uYnRuLmJ0bi1kYW5nZXIuZGlzYWJsZWQsLmJ0bi5idG4tZGFuZ2VyOmRpc2FibGVkLC5idG4tZGFuZ2VyIC5idG4uZGlzYWJsZWQsLmJ0bi1kYW5nZXIgLmJ0bjpkaXNh''@;'; put 'put ''YmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1kaXNhYmxl''@;'; put 'put ''ZC1iZy1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzY2NjY2Nik7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLW91dGxpbmUsLmJ0bi5idG4tb3V0bGluZSAuYnRuLC5idG4u''@;'; put 'put ''YnRuLWluZm8tb3V0bGluZSwuYnRuLWluZm8tb3V0bGluZSAuYnRuLC5idG4uYnRuLW91dGxpbmUtaW5mbywuYnRuLW91dGxpbmUgLmJ0bntib3JkZXItY29sb3I6IzAwNzJhMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYm9yZGVyLWNvbG9yLCAjMDA3MmEz''@;'; put 'put ''KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yLCAjMDA3MmEz''@;'; put 'put ''KX0uYnRuLmJ0bi1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUgY2RzLWljb24sLmJ0bi5idG4taW5mby1vdXRs''@;'; put 'put ''aW5lIGNsci1pY29uLC5idG4taW5mby1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm8gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvIGNsci1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29u''@;'; put 'put ''LC5idG4tb3V0bGluZSAuYnRuIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLW91dGxpbmU6dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLmJ0bi1pbmZvLW91''@;'; put 'put ''dGxpbmU6dmlzaXRlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi5idG4tb3V0bGluZS1pbmZvOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lIC5idG46dmlzaXRlZHtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yLCAjMDA3MmEz''@;'; put 'put ''KX0uYnRuLmJ0bi1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6aG92ZXIsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIsLmJ0bi1vdXRsaW5lIC5idG46aG92ZXJ7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjojZTNmNWZjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItYmctY29sb3IsICNlM2Y1ZmMpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItY29sb3IsICMwMDU2N2Ep''@;'; put 'put ''fS5idG4uYnRuLW91dGxpbmU6YWN0aXZlLC5idG4uYnRuLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi5idG4taW5mby1vdXRsaW5lOmFjdGl2ZSwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLWluZm86YWN0aXZlLC5idG4tb3V0bGluZSAuYnRuOmFjdGl2''@;'; put 'put ''ZXtib3gtc2hhZG93OjAgLjFyZW0gIzE3OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICMxNzliZDMpIGluc2V0fS5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZTpk''@;'; put 'put ''aXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwu''@;'; put 'put ''YnRuLWluZm8tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2Fi''@;'; put 'put ''bGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4Yyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSwu''@;'; put 'put ''YnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRue2JvcmRlci1jb2xvcjojM2M4NTAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3JkZXItY29sb3IsICMzYzg1MDApO2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMzYzg1MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3IsICMzYzg1MDApfS5i''@;'; put 'put ''dG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBjbHItaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuIGNkcy1p''@;'; put 'put ''Y29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuIGNsci1pY29ue2NvbG9yOiMzYzg1MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3Is''@;'; put 'put ''ICMzYzg1MDApfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzczp2aXNpdGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOnZpc2l0ZWR7Y29sb3I6IzNjODUwMDtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvciwgIzNjODUwMCl9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46''@;'; put 'put ''aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItYmctY29sb3IsICNkZmYwZDApO2NvbG9yOiMyNTUyMDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItY29sb3Is''@;'; put 'put ''ICMyNTUyMDApfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmFjdGl2ZSwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzVlYjcx''@;'; put 'put ''NSBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICM1ZWI3MTUpIGluc2V0fS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6ZGlzYWJsZWQsLmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bi5kaXNh''@;'; put 'put ''YmxlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNw''@;'; put 'put ''YXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1ib3JkZXIt''@;'; put 'put ''Y29sb3IsICM4YzhjOGMpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmUsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJu''@;'; put 'put ''aW5nLW91dGxpbmUtYm9yZGVyLWNvbG9yLCApO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3IsICk7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IsICl9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lIGNkcy1pY29u''@;'; put 'put ''LC5idG4uYnRuLXdhcm5pbmctb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nIGNsci1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0biBj''@;'; put 'put ''bHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IsICl9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4t''@;'; put 'put ''b3V0bGluZS13YXJuaW5nOnZpc2l0ZWQsLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46dmlzaXRlZHtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6aG92''@;'; put 'put ''ZXIsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yLCApO2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWNvbG9yLCApfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtd2Fybmlu''@;'; put 'put ''ZyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yLCApIGluc2V0fS5idG4uYnRuLXdhcm5pbmctb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi13YXJu''@;'; put 'put ''aW5nLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1v''@;'; put 'put ''dXRsaW5lLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yLCApO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IsICk7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvciwgKTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUsLmJ0bi5i''@;'; put 'put ''dG4tb3V0bGluZS1kYW5nZXIsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bntib3JkZXItY29sb3I6I2MyMWQwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ib3JkZXItY29sb3IsICNjMjFkMDApO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yLCAjZGIyMTAwKX0uYnRuLmJ0bi1kYW5n''@;'; put 'put ''ZXItb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1kYW5nZXIt''@;'; put 'put ''b3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4gY2xyLWljb257Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yLCAjZGIyMTAwKX0uYnRuLmJ0bi1k''@;'; put 'put ''YW5nZXItb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOnZpc2l0ZWQsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOnZpc2l0ZWR7Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRs''@;'; put 'put ''aW5lLWNvbG9yLCAjZGIyMTAwKX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZlZGRk''@;'; put 'put ''NztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtaG92ZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM5OTE3MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1jb2xvciwgIzk5MTcwMCl9LmJ0bi5idG4tZGFuZ2VyLW91dGxp''@;'; put 'put ''bmU6YWN0aXZlLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICNmY2M1YmIgaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIo''@;'; put 'put ''LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICNmY2M1YmIpIGluc2V0fS5idG4uYnRuLWRhbmdlci1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLC5idG4uYnRu''@;'; put 'put ''LW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjpkaXNhYmxlZHtjb2xv''@;'; put 'put ''cjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1v''@;'; put 'put ''dXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjNjY2NjY2KTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tbGluaywuYnRu''@;'; put 'put ''LWxpbmsgLmJ0bntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJnLWNv''@;'; put 'put ''bG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLWxpbmsgY2RzLWljb24sLmJ0bi5idG4tbGluayBjbHItaWNvbiwuYnRuLWxpbmsgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0biBjbHItaWNv''@;'; put 'put ''bntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xvciwgIzAwNzJhMyl9LmJ0bi5idG4tbGluazp2aXNpdGVkLC5idG4tbGluayAuYnRuOnZpc2l0ZWR7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4uYnRu''@;'; put 'put ''LWxpbms6aG92ZXIsLmJ0bi1saW5rIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ob3Zlci1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5r''@;'; put 'put ''LWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uYnRuLmJ0bi1saW5rOmFjdGl2ZSwuYnRuLWxpbmsgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLWxpbmsuZGlzYWJsZWQsLmJ0bi5idG4tbGluazpkaXNhYmxlZCwuYnRuLWxpbmsgLmJ0bi5kaXNhYmxlZCwuYnRuLWxpbmsgLmJ0''@;'; put 'put ''bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGlu''@;'; put 'put ''ay1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJvcmRlci1jb2xvciwgdHJhbnNwYXJlbnQpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1pbnZlcnNlLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLWludmVyc2UgLmJ0bntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWJvcmRlci1jb2xvciwgd2hpdGUpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYnRuLWludmVyc2UtYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWludmVyc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1p''@;'; put 'put ''Y29uLC5idG4uYnRuLWludmVyc2UgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRuIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYnRuIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNl''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4taW52ZXJzZTp2aXNpdGVkLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjp2aXNpdGVkLC5idG4taW52ZXJzZSAuYnRuOnZpc2l0ZWR7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY29sb3IsIHdoaXRlKX0uYnRu''@;'; put 'put ''LmJ0bi1pbnZlcnNlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciwuYnRuLWludmVyc2UgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYyNjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ob3Zlci1iZy1jb2xvciwg''@;'; put 'put ''cmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWludmVyc2U6YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUsLmJ0bi1pbnZlcnNlIC5i''@;'; put 'put ''dG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMDAwMDAwNDAgaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLWludmVyc2UtYm94LXNoYWRvdy1jb2xvciwgcmdiYSgwLCAwLCAwLCAuMjUpKSBpbnNldH0uYnRuLmJ0bi1pbnZlcnNlLmRpc2FibGVkLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi1pbnZlcnNlOmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCwuYnRuLWludmVyc2UgLmJ0bi5kaXNhYmxlZCwuYnRuLWludmVyc2UgLmJ0bjpkaXNhYmxlZHtjb2xv''@;'; put 'put ''cjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1jb2xvciwgd2hpdGUpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQt''@;'; put 'put ''YmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWJvcmRlci1jb2xvciwgd2hpdGUpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1zbSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5i''@;'; put 'put ''dG4sLmJ0bi1zbSAuYnRue2xpbmUtaGVpZ2h0OjEuMTVyZW07bGluZS1oZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWxpbmUtaGVpZ2h0LCAxLjE1cmVtKTtsZXR0ZXItc3BhY2luZzouMDczZW07Zm9udC1zaXplOi41NXJlbTtmb250LXNpemU6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtc2l6ZSwgLjU1cmVtKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtd2VpZ2h0LCA1MDApO2hlaWdodDoxLjJyZW07aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5j''@;'; put 'put ''ZS1zdGFuZGFyZC1oZWlnaHQsIDEuMnJlbSk7cGFkZGluZzowIC42cmVtO3BhZGRpbmc6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmcsIDAgLjZyZW0pfS5idG4tYmxvY2t7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfS5idG57bWFyZ2lu''@;'; put 'put ''LXRvcDouM3JlbTttYXJnaW4tdG9wOnZhcigtLWNsci1idG4tdmVydGljYWwtbWFyZ2luLCAuM3JlbSk7bWFyZ2luLWJvdHRvbTouM3JlbTttYXJnaW4tYm90dG9tOnZhcigtLWNsci1idG4tdmVydGljYWwtbWFyZ2luLCAuM3JlbSk7bWFyZ2luLXJpZ2h0Oi42cmVtO21hcmdpbi1yaWdodDp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWhvcml6b250YWwtbWFyZ2luLCAuNnJlbSk7bWFyZ2luLWxlZnQ6MH0uYnRuLmJ0bi1saW5re21hcmdpbi1yaWdodDowfS5idG4uYnRuLWxpbmsuYnRuLWludmVyc2UsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLmJ0bi1saW5re2JvcmRlci1jb2xvcjp0''@;'; put 'put ''cmFuc3BhcmVudH0uYnRuLXNtOm5vdCguYnRuLWxpbmspIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpub3QoLmJ0bi1saW5rKSBjbHItaWNvbnt3aWR0aDouNnJlbTt3aWR0aDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplLCAu''@;'; put 'put ''NnJlbSk7aGVpZ2h0Oi42cmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplLCAuNnJlbSk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLS4wNXJlbSwwKX0uYnRuLXNtOm5vdCguYnRuLWxpbmspIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFs''@;'; put 'put ''ZXJ0LWl0ZW0gLmJ0bjpub3QoLmJ0bi1saW5rKSBjZHMtaWNvbnt3aWR0aDouNnJlbTt3aWR0aDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplLCAuNnJlbSk7aGVpZ2h0Oi42cmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNv''@;'; put 'put ''bi1zaXplLCAuNnJlbSk7bWFyZ2luLXRvcDotLjFyZW19LmJ0bi1pY29ue21pbi13aWR0aDowfS5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6I2NjYztjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWljb24tZGlzYWJsZWQtY29sb3IsICNjY2NjY2MpfS5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bkb3duLXRvZ2dsZSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUsLmJ0bi1ncm91cC5idG4td2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLC5i''@;'; put 'put ''dG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLXByaW1hcnktYmctY29sb3IsICMwMDcyYTMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yLCB3aGl0ZSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uLC5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZSBjbHItaWNvbiwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNv''@;'; put 'put ''biwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb24sLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb257Y29sb3I6I2ZmZjtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5kcm9wZG93bi10b2dnbGU6dmlzaXRlZCwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6dmlzaXRlZCwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10''@;'; put 'put ''b2dnbGU6dmlzaXRlZCwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTp2aXNpdGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yLCB3aGl0ZSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLC5idG4t''@;'; put 'put ''Z3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA1NjdhO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yLCAjMDA1NjdhKTtjb2xvcjojZTNmNWZjO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ob3Zlci1jb2xvciwgI2UzZjVmYyl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2''@;'; put 'put ''ZSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmUsLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5''@;'; put 'put ''YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWJveC1zaGFkb3ctY29sb3IsICMxNzliZDMpIGluc2V0fS5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5kcm9w''@;'; put 'put ''ZG93bi10b2dnbGU6ZGlzYWJsZWQsLmJ0bi1ncm91cC5idG4tc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuZGlzYWJs''@;'; put 'put ''ZWQsLmJ0bi1ncm91cC5idG4td2FybmluZyAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYmctY29sb3IsICNjY2NjY2Mp''@;'; put 'put ''O2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93Om5vbmV9LmJ0bi1ncm91cC5idG4tZGFuZ2VyIDpkaXNhYmxlZHtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tLS1jbHItY29sb3ItbmV1dHJhbC00MDAsICNjY2NjY2MpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KTtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZSBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTp2aXNpdGVk''@;'; put 'put ''e2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNvbG9yLCAjMDA3MmEzKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1o''@;'; put 'put ''b3Zlci1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2JveC1zaGFkb3c6bm9uZX0uYnRuLWdyb3VwLmJ0bi1s''@;'; put 'put ''aW5rIC5kcm9wZG93bi10b2dnbGUuZGlzYWJsZWQsLmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTou''@;'; put 'put ''NDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQt''@;'; put 'put ''Ym9yZGVyLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym94LXNoYWRvdzpub25lfS5idG4tZ3JvdXAuYnRuLXNtIC5idG4tZ3JvdXAtb3ZlcmZsb3c+LmRyb3Bkb3duLXRvZ2dsZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZ3JvdXAuYnRuIC5idG4tZ3JvdXAtb3ZlcmZsb3c+LmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZXtsaW5lLWhlaWdodDoxLjE1cmVtO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1saW5lLWhlaWdodCwgMS4xNXJlbSk7bGV0dGVyLXNwYWNpbmc6LjA3M2VtO2ZvbnQtc2l6ZTouNTVyZW07Zm9udC1zaXplOnZhcigtLWNsci1idG4t''@;'; put 'put ''YXBwZWFyYW5jZS1zdGFuZGFyZC1mb250LXNpemUsIC41NXJlbSk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1mb250LXdlaWdodCwgNTAwKTtoZWlnaHQ6MS4ycmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Ut''@;'; put 'put ''c3RhbmRhcmQtaGVpZ2h0LCAxLjJyZW0pO3BhZGRpbmc6MCAuNnJlbTtwYWRkaW5nOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1wYWRkaW5nLCAwIC42cmVtKX0uY2hlY2tib3guYnRuLC5jaGVja2JveC1pbmxpbmUuYnRuLC5yYWRpby5idG4sLnJhZGlvLWlubGluZS5idG57''@;'; put 'put ''cGFkZGluZzowfS5jaGVja2JveC5idG4gbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4gbGFiZWwsLnJhZGlvLmJ0biBsYWJlbCwucmFkaW8taW5saW5lLmJ0biBsYWJlbHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OmluaGVyaXQ7cGFkZGluZzowIC42cmVtO2N1cnNvcjpwb2ludGVyfS5j''@;'; put 'put ''aGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXIsLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jaGVja2JveC1pbmxpbmUu''@;'; put 'put ''YnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye2NvbnRlbnQ6bm9uZX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmJlZm9yZSwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmFmdGVyLC5yYWRpby1pbmxpbmUuYnRuIGlucHV0W3R5cGU9cmFk''@;'; put 'put ''aW9dK2xhYmVsOmJlZm9yZSwucmFkaW8taW5saW5lLmJ0biBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDphZnRlcntjb250ZW50Om5vbmV9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBl''@;'; put 'put ''PWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2NvbG9yOiNmZmZ9LmNoZWNrYm94LmJ0biBsYWJlbCwuY2hlY2tib3gt''@;'; put 'put ''aW5saW5lLmJ0biBsYWJlbHt3aWR0aDoxMDAlfS5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2ti''@;'; put 'put ''b3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGlu''@;'; put 'put ''ZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCts''@;'; put 'put ''YWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5i''@;'; put 'put ''dG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5l''@;'; put 'put ''LXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2Jv''@;'; put 'put ''eC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRu''@;'; put 'put ''LXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVj''@;'; put 'put ''a2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVj''@;'; put 'put ''a2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94''@;'; put 'put ''LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1p''@;'; put 'put ''bmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5j''@;'; put 'put ''aGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNr''@;'; put 'put ''Ym94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2Jv''@;'; put 'put ''eC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29u''@;'; put 'put ''LC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94''@;'; put 'put ''LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAw''@;'; put 'put ''NzJhMztjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4t''@;'; put 'put ''cHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLXN1''@;'; put 'put ''Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hl''@;'; put 'put ''Y2tib3gtaW5saW5lLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzMwNmIwMDtjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xh''@;'; put 'put ''YmVsLC5jaGVja2JveC5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0''@;'; put 'put ''bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNr''@;'; put 'put ''Ym94LWlubGluZS5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6dHJhbnNw''@;'; put 'put ''YXJlbnQ7Y29sb3I6IzAwNTY3YX0uY2hlY2tib3guYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNr''@;'; put 'put ''Ym94LmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4u''@;'; put 'put ''YnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5i''@;'; put 'put ''dG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW52ZXJzZSBp''@;'; put 'put ''bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW52''@;'; put 'put ''ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZm''@;'; put 'put ''ZmYyNjtjb2xvcjojZmZmfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5y''@;'; put 'put ''YWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAw''@;'; put 'put ''NzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4gbGFiZWwsLnJhZGlvLmJ0biBsYWJlbHt3aWR0aDoxMDAlfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVj''@;'; put 'put ''a2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5''@;'; put 'put ''cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1v''@;'; put 'put ''dXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVj''@;'; put 'put ''a2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1''@;'; put 'put ''dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNs''@;'; put 'put ''ci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGlu''@;'; put 'put ''ZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBl''@;'; put 'put ''PXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRp''@;'; put 'put ''by5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJh''@;'; put 'put ''ZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24s''@;'; put 'put ''LnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQr''@;'; put 'put ''bGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnkt''@;'; put 'put ''b3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9''@;'; put 'put ''cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1p''@;'; put 'put ''Y29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJp''@;'; put 'put ''bWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBl''@;'; put 'put ''PXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4t''@;'; put 'put ''cHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWlj''@;'; put 'put ''b24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8u''@;'; put 'put ''YnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzMwNmIwMDtj''@;'; put 'put ''b2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlv''@;'; put 'put ''XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBp''@;'; put 'put ''bnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0''@;'; put 'put ''bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlv''@;'; put 'put ''XTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRp''@;'; put 'put ''by5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1''@;'; put 'put ''dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNs''@;'; put 'put ''ci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNo''@;'; put 'put ''ZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJh''@;'; put 'put ''ZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFk''@;'; put 'put ''aW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIgaW5wdXRb''@;'; put 'put ''dHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWxpbmsgaW5w''@;'; put 'put ''dXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LWxpbmsgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzAwNTY3YX0ucmFkaW8uYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWws''@;'; put 'put ''LnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWludmVy''@;'; put 'put ''c2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9cmFkaW9d''@;'; put 'put ''OmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZm''@;'; put 'put ''ZmYyNjtjb2xvcjojZmZmfS5idG4tZ3JvdXB7ZGlzcGxheTppbmxpbmUtZmxleDttYXJnaW4tcmlnaHQ6LjZyZW19LmJ0bi1ncm91cCBjbHItZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cCBjbHItZHJvcGRvd246bGFzdC1jaGlsZCAuZHJvcGRv''@;'; put 'put ''d24tdG9nZ2xle2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMTVyZW19LmJ0bi1ncm91cCAuYnRue21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOnRvcDtvdmVyZmxvdzpoaWRkZW59LmJ0bi1ncm91cCAuYnRuIGxhYmVse2hlaWdodDox''@;'; put 'put ''MDAlfS5idG4tZ3JvdXAgLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1cywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXN7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO29wYWNpdHk6MTt0b3A6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAl''@;'; put 'put ''O2JveC1zaGFkb3c6MCAwIC4yNXJlbSAjNTFjYmVlO2JveC1zaGFkb3c6MCAwIC4yNXJlbSB2YXIoLS1jbHItYnRuLWdyb3VwLWZvY3VzLW91dGxpbmUsICM1MWNiZWUpO3BhZGRpbmc6LjE1cmVtIDAgLjE1cmVtIC4xNXJlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci1zdHlsZTpzb2xp''@;'; put 'put ''ZDtib3JkZXItY29sb3I6IzUxY2JlZTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1ncm91cC1mb2N1cy1vdXRsaW5lLCAjNTFjYmVlKX0uYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6Oi1tcy1jaGVjaywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF06Zm9jdXM6Oi1tcy1jaGVja3tkaXNwbGF5Om5vbmV9LmJ0bi1ncm91cCAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cCAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1y''@;'; put 'put ''aWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDpmaXJzdC1jaGlsZCkgLmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDps''@;'; put 'put ''YXN0LWNoaWxkKSAuYnRue2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0biwuYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5idG46bm90KDpsYXN0LWNo''@;'; put 'put ''aWxkKSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0biwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLnRvb2x0aXA6bm90KDpsYXN0LWNoaWxkKSAuYnRuLC5idG4tZ3Jv''@;'; put 'put ''dXAuYnRuLWRhbmdlciAuYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1ncm91cC5idG4td2FybmluZyAudG9vbHRpcDpub3QoOmxhc3QtY2hpbGQpIC5idG4sLmJ0bi1ncm91cC5idG4td2FybmluZyAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luOjA7bWFyZ2luLXJpZ2h0Oi4wNXJlbTtt''@;'; put 'put ''YXJnaW4tcmlnaHQ6dmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgsIC4wNXJlbSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tbWVudSAuYnRuLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLW1lbnUgLmJ0biwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLmRyb3Bkb3du''@;'; put 'put ''LW1lbnUgLmJ0biwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi1tZW51IC5idG57bWFyZ2luOjB9LmJ0bi1ncm91cD4uYnRuLWdyb3VwLW92ZXJmbG93e3Bvc2l0aW9uOnJlbGF0aXZlfS5idG4tZ3JvdXA+LmJ0bi1ncm91cC1vdmVyZmxvdzpsYXN0LWNoaWxkOm5vdCg6Zmlyc3Qt''@;'; put 'put ''Y2hpbGQpPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4t''@;'; put 'put ''Z3JvdXAtb3ZlcmZsb3c6bGFzdC1jaGlsZDpmaXJzdC1jaGlsZD4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5idG4tZ3JvdXAgLmJ0bisuYnRue2JvcmRlci1sZWZ0Om5vbmV9''@;'; put 'put ''LmJ0bi1ncm91cCAudG9vbHRpcDpub3QoOmZpcnN0LWNoaWxkKSAuYnRue2JvcmRlci1sZWZ0Om5vbmV9LmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAtb3ZlcmZsb3cgLmJ0bntib3JkZXItbGVmdDpub25lfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZSwuYnRuLWdyb3Vw''@;'; put 'put ''LmJ0bi1pY29uLWxpbmsuYnRuLWxpbmsgLmJ0biwuYnRuLWdyb3VwLmJ0bi1pY29uIC5idG57bWluLXdpZHRoOjB9LmJ0bi1ncm91cCAuY2xyLWljb24tdGl0bGV7ZGlzcGxheTpub25lO3RleHQtdHJhbnNmb3JtOm5vbmV9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xle2Rpc3BsYXk6Ymxv''@;'; put 'put ''Y2t9LmJ0bi1ncm91cCAuZHJvcGRvd24tbWVudSBjZHMtaWNvbiwuYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IGNsci1pY29ue2Rpc3BsYXk6bm9uZX0uYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IC5jbHItaWNvbi10aXRsZXtkaXNwbGF5OmlubGluZX0uY2hlY2tib3gsLnJhZGlve3Bvc2l0''@;'; put 'put ''aW9uOnJlbGF0aXZlfS5jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwuY2hlY2tib3ggaW5wdXRbdHlwZT1yYWRpb10sLnJhZGlvIGlucHV0W3R5cGU9Y2hlY2tib3hdLC5yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjA7''@;'; put 'put ''d2lkdGg6MDtvcGFjaXR5OjB9LmNhcmQtZm9vdGVyIC5jaGVja2JveC5idG4gbGFiZWwsLmNhcmQtZm9vdGVyIC5yYWRpby5idG4gbGFiZWx7bGluZS1oZWlnaHQ6MS4xNXJlbX0uZHJvcGRvd24tbWVudS5jbHItYnV0dG9uLWdyb3VwLW1lbnV7dmlzaWJpbGl0eTp2aXNpYmxlfWJ1dHRvbi5j''@;'; put 'put ''bG9zZXtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LmNsb3Nle2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjhyZW07dHJhbnNpdGlvbjpjb2xvciBsaW5lYXIgLjJzO2ZvbnQtd2VpZ2h0OjIwMDt0ZXh0LXNo''@;'; put 'put ''YWRvdzpub25lO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbCwgIzhjOGM4Yyl9LmNsb3NlIGNkcy1pY29uLC5jbG9zZSBjbHItaWNvbntmaWxsOiM4YzhjOGM7ZmlsbDp2YXIoLS1jbHItY2xvc2UtY29sb3ItLW5v''@;'; put 'put ''cm1hbCwgIzhjOGM4Yyl9LmNsb3NlOmZvY3VzLC5jbG9zZTpob3ZlciwuY2xvc2U6YWN0aXZle29wYWNpdHk6MTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jbG9zZS1jb2xvci0taG92ZXIsIGJsYWNrKX0uY2xvc2U6Zm9jdXMgY2RzLWljb24sLmNsb3NlOmZvY3VzIGNsci1pY29uLC5j''@;'; put 'put ''bG9zZTpob3ZlciBjZHMtaWNvbiwuY2xvc2U6aG92ZXIgY2xyLWljb24sLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6IzAwMDtmaWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci0taG92ZXIsIGJsYWNrKX0uY2xvc2U6Zm9jdXN7b3V0bGluZTpIaWdo''@;'; put 'put ''bGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfTpyb290ey0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWFsZXJ0LWFjdGlvbi1h''@;'; put 'put ''Y3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tOTAwKTstLWNsci1hbGVydC1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tY29sb3IpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlv''@;'; put 'put ''bi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eToxOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItb3BhY2l0eToxOy0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1hcHAtYWxlcnQtY2xvc2Ut''@;'; put 'put ''aWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWxldmVsLWFsZXJ0LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1vcGFjaXR5Oi44Oy0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6MTstLWNsci1hbGVydC1ib3JkZXJyYWRpdXM6dmFyKC0tY2xyLWdsb2Jh''@;'; put 'put ''bC1ib3JkZXJyYWRpdXMpOy0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZl''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tYWN0aXZlLWNvbG9yKTstLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1j''@;'; put 'put ''bG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWlj''@;'; put 'put ''b24taG92ZXItb3BhY2l0eSk7LS1jbHItYWxlcnQtc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy01MCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1hbGVydC1zdWNjZXNzLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yKTstLWNsci1hbGVy''@;'; put 'put ''dC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1p''@;'; put 'put ''Y29uLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92''@;'; put 'put ''ZXItb3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hbGVydC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTEwMCk7LS1jbHItYWxlcnQtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFs''@;'; put 'put ''LTkwMCk7LS1jbHItYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctODAwKTstLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctODAwKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNv''@;'; put 'put ''bi1jb2xvcik7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9y''@;'; put 'put ''KTstLWNsci1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItb3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci0xMDApOy0tY2xyLWFsZXJ0LWRhbmdlci1m''@;'; put 'put ''b250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtZGFuZ2VyLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYWxlcnQtZGFuZ2VyLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApOy0tY2xyLWFs''@;'; put 'put ''ZXJ0LWRhbmdlci1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24t''@;'; put 'put ''NjAwKTstLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1pbmZvLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9z''@;'; put 'put ''ZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFwcC1h''@;'; put 'put ''bGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC13YXJuaW5nLWJnLWNvbG9yOmhzbCgyNiwgMTAwJSwgMzglKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcjp2YXIoLS1jbHItYXBwLWxldmVsLWFsZXJ0LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXdh''@;'; put 'put ''cm5pbmctYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2Fybmlu''@;'; put 'put ''Zy1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2Fy''@;'; put 'put ''bmluZy1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYm9yZGVy''@;'; put 'put ''LWNvbG9yOm5vbmU7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0''@;'; put 'put ''aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tb3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9z''@;'; put 'put ''ZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1zdWNjZXNzLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTcwMCk7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVydC1zdWNj''@;'; put 'put ''ZXNzLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3Mt''@;'; put 'put ''Y2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1vcGFjaXR5KTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nl''@;'; put 'put ''c3MtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wLCB3aGl0ZSk7LS1jbHItYXBwLWFsZXJ0LWluZm8tcGFn''@;'; put 'put ''ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDAsICMwMDU2N2EpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTkwMCwgIzhmNWEwMCk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1iZy1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCwgIzk5MTcwMCl9LmFsZXJ0LWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07bWFyZ2luLWxlZnQ6LS4xNXJlbTttYXJnaW4tdG9wOi0uMnJlbX0uYWxlcnQtaWNvbi13cmFwcGVye2ZsZXg6MCAwIDEuMjVyZW07YWxpZ24tc2VsZjpzdGFy''@;'; put 'put ''dDtwYWRkaW5nLXRvcDouMDVyZW07aGVpZ2h0Oi45cmVtfS5hbGVydC1pdGVte2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7bWluLWhlaWdodDouOXJlbTttYXJnaW4tYm90dG9tOi4zcmVtfS5hbGVydC1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTow''@;'; put 'put ''fS5hbGVydC1pdGVtc3tmbGV4OjEgMSBhdXRvO2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO3BhZGRpbmc6LjVyZW0gLjU1cmVtO2Rpc3BsYXk6ZmxleH0uYWxlcnQtaXRlbT5zcGFuLC5hbGVydC10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7Zmxl''@;'; put 'put ''eC1iYXNpczo5OCU7bWF4LXdpZHRoOjk4JTttYXJnaW4tcmlnaHQ6LjZyZW07dGV4dC1hbGlnbjpsZWZ0fS5hbGVydHtmb250LXNpemU6LjY1cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDouOXJlbTtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7''@;'; put 'put ''ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aWR0aDphdXRvO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWFsZXJ0LWJvcmRlcnJhZGl1cywgLjE1cmVtKTttYXJnaW4tdG9wOi4zcmVtO2JhY2tncm91bmQ6I2UzZjVmYztiYWNrZ3JvdW5kOnZh''@;'; put 'put ''cigtLWNsci1hbGVydC1pbmZvLWJnLWNvbG9yLCAjZTNmNWZjKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWZvbnQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMwMDU2N2E7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1pbmZvLWJvcmRlci1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0IC5hbGVydC1pY29ue2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0IC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9y''@;'; put 'put ''OiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiwuYWxlcnQgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydCAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0IC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5h''@;'; put 'put ''bGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojNGYwMDcwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQgLmFsZXJ0''@;'; put 'put ''LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjNGYwMDcwIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApIGlu''@;'; put 'put ''c2V0fS5hbGVydCAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydCAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydCAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQgLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQgLmNsb3Nle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3Bh''@;'; put 'put ''Y2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5LCAxKX0uYWxlcnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2''@;'; put 'put ''Nil9LmFsZXJ0IC5jbG9zZTpmb2N1cywuYWxlcnQgLmNsb3NlOmhvdmVyLC5hbGVydCAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvciwgIzRmMDA3MCk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtaW5mb3tiYWNrZ3JvdW5kOiNlM2Y1ZmM7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtaW5mby1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5m''@;'; put 'put ''by1mb250LWNvbG9yLCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3IsICMwMDU2N2EpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1pY29ue2NvbG9yOiMwMDU2N2E7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsICM2NjY2''@;'; put 'put ''NjYpO2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1p''@;'; put 'put ''bmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVy''@;'; put 'put ''dC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVyLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6IzRmMDA3MDtib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCl9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM0ZjAwNzAgaW5z''@;'; put 'put ''ZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCkgaW5zZXR9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVy''@;'; put 'put ''dC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb246YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZXtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKTtjb2xvcjojNGYwMDcwfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3IsICM2NjY2NjYpO29wYWNpdHk6MTtv''@;'; put 'put ''cGFjaXR5OnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tb3BhY2l0eSwgMSl9LmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZSBjbHItaWNvbntmaWxsOiM2NjY7ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29u''@;'; put 'put ''LWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTphY3RpdmV7Y29sb3I6IzRmMDA3MDtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhv''@;'; put 'put ''dmVyLWNvbG9yLCAjNGYwMDcwKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6I2RmZjBkMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJn''@;'; put 'put ''LWNvbG9yLCAjZGZmMGQwKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMzMDZiMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJvcmRlci1j''@;'; put 'put ''b2xvciwgIzMwNmIwMCl9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6IzMwNmIwMDtjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yLCAjMzA2YjAwKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgIzY2NjY2Nik7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0''@;'; put 'put ''LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biwu''@;'; put 'put ''YWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywu''@;'; put 'put ''YWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZS5idG46aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojNGYwMDcwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQu''@;'; put 'put ''YWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzRmMDA3MCBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYWxlcnQtc3Vj''@;'; put 'put ''Y2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKSBpbnNldH0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb246aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbjphY3RpdmUs''@;'; put 'put ''LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLC5hbGVydC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFj''@;'; put 'put ''dGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApO2NvbG9yOiM0ZjAwNzB9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3Nle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNsci1pY29ue2ZpbGw6IzY2NjtmaWxsOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29s''@;'; put 'put ''b3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmFjdGl2ZXtjb2xvcjojNGYwMDcwO2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3Nl''@;'; put 'put ''LWljb24taG92ZXItY29sb3IsICM0ZjAwNzApO29wYWNpdHk6MTtvcGFjaXR5OnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDojZmZmNGM3O2JhY2tncm91bmQ6dmFyKC0tY2xyLWFsZXJ0''@;'; put 'put ''LXdhcm5pbmctYmctY29sb3IsICNmZmY0YzcpO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvciwgIzMzMzMzMyk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2FkNzYwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5p''@;'; put 'put ''bmctYm9yZGVyLWNvbG9yLCAjYWQ3NjAwKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtaWNvbntjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3IsICM0NTQ1NDUpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb25zIC5kcm9w''@;'; put 'put ''ZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0u''@;'; put 'put ''YWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1h''@;'; put 'put ''Y3Rpb24uYnRuLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24u''@;'; put 'put ''YnRuOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpmb2N1cywuYWxlcnQuYWxlcnQtd2Fy''@;'; put 'put ''bmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiM0ZjAwNzA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAw''@;'; put 'put ''NzApfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjNGYwMDcwIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNs''@;'; put 'put ''ci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApIGluc2V0fS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0''@;'; put 'put ''aW9uOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0''@;'; put 'put ''LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2V7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yLCAjNjY2NjY2KTtvcGFjaXR5OjE7b3BhY2l0''@;'; put 'put ''eTp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2UgY2xyLWljb257ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xv''@;'; put 'put ''c2UtaWNvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdh''@;'; put 'put ''cm5pbmctY2xvc2UtaWNvbi1ob3Zlci1jb2xvciwgIzRmMDA3MCk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtZGFuZ2Vye2JhY2tncm91bmQ6I2ZlZGRkNztiYWNrZ3JvdW5kOnZhcigt''@;'; put 'put ''LWNsci1hbGVydC1kYW5nZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yLCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOTkxNzAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxl''@;'; put 'put ''cnQtZGFuZ2VyLWJvcmRlci1jb2xvciwgIzk5MTcwMCl9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtaWNvbntjb2xvcjojOTkxNzAwO2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvciwgIzk5MTcwMCl9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9ucyAu''@;'; put 'put ''ZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IsICM2NjY2NjYp''@;'; put 'put ''fS5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0''@;'; put 'put ''aW9uLmJ0biwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjpm''@;'; put 'put ''b2N1cywuYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuZHJv''@;'; put 'put ''cGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6IzRmMDA3MDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQu''@;'; put 'put ''YWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM0ZjAwNzAgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFsZXJ0LWRhbmdl''@;'; put 'put ''ci1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKSBpbnNldH0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbjphY3RpdmUsLmFsZXJ0''@;'; put 'put ''LmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2''@;'; put 'put ''ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWRhbmdl''@;'; put 'put ''ci1jbG9zZS1pY29uLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlIGNsci1pY29ue2ZpbGw6IzY2NjtmaWxsOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nil9LmFs''@;'; put 'put ''ZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCAj''@;'; put 'put ''NGYwMDcwKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbntoZWlnaHQ6LjlyZW07d2lkdGg6LjlyZW07bWFyZ2luLXJpZ2h0Oi4zcmVtfS5hbGVydCAuYWxlcnQt''@;'; put 'put ''aXRlbSAuY2xyLWljb24rLmFsZXJ0LXRleHR7cGFkZGluZy1sZWZ0OjB9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbisuYWxlcnQtdGV4dDpiZWZvcmV7Y29udGVudDpub25lfS5hbGVydCAuYWxlcnQtYWN0aW9uc3tmbGV4OjAgMCBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0uYWxlcnQg''@;'; put 'put ''LmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0Oi0uMXJlbX0uYWxlcnQgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duLWl0ZW17Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVt''@;'; put 'put ''O2xpbmUtaGVpZ2h0OjEuMnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWx9LmFsZXJ0IC5hbGVydC1hY3Rpb246bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6LjZyZW19LmFsZXJ0IC5hbGVydC1hY3Rpb24sLmFsZXJ0IC5kcm9wZG93bi10b2dnbGV7dGV4dC1kZWNvcmF0aW9uOnVuZGVy''@;'; put 'put ''bGluZX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi10ZXh0LWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZTpub3QoLmJ0bil7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjB9LmFsZXJ0IC5jbG9zZXt3aWR0aDoxLjJyZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MS44cmVtO2ZsZXg6MCAwIDEuNHJlbTtvcmRlcjoxMDA7cGFkZGluZy1yaWdodDouMnJlbX0uYWxl''@;'; put 'put ''cnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257bWFyZ2luLXRvcDotLjE1cmVtO2hlaWdodDoxLjE1cmVtO3dpZHRoOjEuMTVyZW19LmFsZXJ0IC5jbG9zZX4uYWxlcnQtaXRlbT4uYWxlcnQtYWN0aW9uc3twYWRkaW5nLXJpZ2h0Oi42cmVtfS5hbGVydCAuY2xvc2V+''@;'; put 'put ''LmFsZXJ0LWl0ZW0+LmFsZXJ0LWFjdGlvbnM+LmFsZXJ0LWFjdGlvbjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDouNnJlbX0uYWxlcnQtYXBwLWxldmVse21hcmdpbjowO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZDojMDA3MmEzO2JhY2tncm91bmQ6dmFyKC0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yLCAjMDA3MmEzKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOjB9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1h''@;'; put 'put ''cHAtYWxlcnQtaW5mby1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29s''@;'; put 'put ''b3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9u''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFj''@;'; put 'put ''dGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICNmZmYgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAw''@;'; put 'put ''IDAgdmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKSBpbnNldH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlv''@;'; put 'put ''bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rp''@;'; put 'put ''b24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eTouODtvcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQt''@;'; put 'put ''aW5mby1jbG9zZS1pY29uLW9wYWNpdHksIC44KX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjbHItaWNvbntmaWxsOiNmZmY7ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwgLmNsb3NlOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmNsb3NlOmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCB3aGl0ZSk7b3BhY2l0''@;'; put 'put ''eToxO29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZve2JhY2tncm91bmQ6IzAwNzJhMztiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1iZy1jb2xvciwgIzAwNzJh''@;'; put 'put ''Myk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvciwgd2hpdGUpO2JvcmRlcjowfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1pY29uLWNvbG9y''@;'; put 'put ''LCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwu''@;'; put 'put ''YWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24u''@;'; put 'put ''YnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xv''@;'; put 'put ''ciwgd2hpdGUpIGluc2V0fS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxl''@;'; put 'put ''cnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKTtjb2xvcjojZmZmfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpO29wYWNpdHk6''@;'; put 'put ''Ljg7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5LCAuOCl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6I2ZmZjtmaWxsOnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2U6''@;'; put 'put ''YWN0aXZle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQtYXBwLWxl''@;'; put 'put ''dmVsLmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOiNjMjFkMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1iZy1jb2xvciwgI2MyMWQwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOjB9''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9w''@;'; put 'put ''ZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5h''@;'; put 'put ''bGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQt''@;'; put 'put ''YXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7''@;'; put 'put ''Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1k''@;'; put 'put ''YW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSkgaW5zZXR9LmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb246YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2Vy''@;'; put 'put ''IC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1h''@;'; put 'put ''Y3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eTouODtvcGFjaXR5OnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tb3BhY2l0eSwgLjgpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2UgY2xyLWljb257ZmlsbDojZmZmO2ZpbGw6dmFyKC0tY2xy''@;'; put 'put ''LWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3Nl''@;'; put 'put ''OmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHksIDEpfS5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiNjMjU0MDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYmctY29sb3IsICNjMjU0MDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IsIHdoaXRlKTti''@;'; put 'put ''b3JkZXI6MH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9ucyAuZHJv''@;'; put 'put ''cGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvciwgd2hp''@;'; put 'put ''dGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24t''@;'; put 'put ''Y29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0''@;'; put 'put ''aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0bjphY3Rp''@;'; put 'put ''dmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICNmZmYgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3Is''@;'; put 'put ''IHdoaXRlKSBpbnNldH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjphY3Rp''@;'; put 'put ''dmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6YWN0aXZl''@;'; put 'put ''e2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWlj''@;'; put 'put ''b24tY29sb3IsIHdoaXRlKTtvcGFjaXR5Oi44O29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tb3BhY2l0eSwgLjgpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5n''@;'; put 'put ''IC5jbG9zZSBjbHItaWNvbntmaWxsOiNmZmY7ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9z''@;'; put 'put ''ZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6IzNjODUwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1iZy1jb2xvciwgIzNjODUwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvciwgd2hpdGUpO2JvcmRlcjowfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yLCB3aGl0ZSl9LmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6I2ZmZjti''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46''@;'; put 'put ''aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dn''@;'; put 'put ''bGUuYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0''@;'; put 'put ''LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpIGluc2V0fS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQt''@;'; put 'put ''YXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKTtjb2xvcjojZmZmfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2V7Y29sb3I6''@;'; put 'put ''I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpO29wYWNpdHk6Ljg7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1vcGFjaXR5LCAuOCl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNz''@;'; put 'put ''IC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNsci1pY29ue2ZpbGw6I2ZmZjtmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5j''@;'; put 'put ''bG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItY29s''@;'; put 'put ''b3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtc3twYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouM3JlbX0uYWxlcnQtYXBw''@;'; put 'put ''LWxldmVsIC5hbGVydC1pdGVte2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6MS4ycmVtfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bnttYXJnaW46MH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtPnNwYW4sLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbCAuYWxlcnQtdGV4dHtmbGV4OjAgMSAxMDAlfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWljb24td3JhcHBlcnttYXJnaW4tdG9wOi4xNXJlbX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtoZWlnaHQ6MS44cmVtO292ZXJmbG93OmhpZGRlbn0uYWxlcnQtYXBwLWxldmVsIC5jbG9z''@;'; put 'put ''ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjbHItaWNvbnttYXJnaW4tdG9wOi0uMjVyZW19LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZXt0ZXh0LWRlY29yYXRpb246bm9uZX0uYWxlcnQtc217Zm9udC1z''@;'; put 'put ''aXplOi41NXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6LjhyZW19LmFsZXJ0LXNtIC5hbGVydC1pdGVtc3twYWRkaW5nOi4xNXJlbSAuMjVyZW19LmFsZXJ0LXNtIC5hbGVydC1pdGVte3BhZGRpbmctdG9wOi4wNXJlbTttYXJnaW4tYm90dG9tOi4ycmVtfS5hbGVydC1z''@;'; put 'put ''bSAuYWxlcnQtaXRlbTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uYWxlcnQtc20gLmFsZXJ0LWljb24td3JhcHBlcntwYWRkaW5nLXRvcDowO2hlaWdodDouOHJlbX0uYWxlcnQtc20gLmFsZXJ0LWljb257bWFyZ2luLWxlZnQ6LS4ycmVtO21hcmdpbi10b3A6LS4ycmVtfS5hbGVydC1z''@;'; put 'put ''bSAuYWxlcnQtaXRlbT5zcGFuLC5hbGVydC1zbSAuYWxlcnQtdGV4dHttYXJnaW4tcmlnaHQ6LjNyZW19LmFsZXJ0LXNtIC5jbG9zZXtwYWRkaW5nLXJpZ2h0OjA7ZmxleDowIDAgMS4ycmVtO2hlaWdodDoxLjJyZW07bGluZS1oZWlnaHQ6MS4ycmVtfS5hbGVydC1zbSAuY2xvc2UgY2RzLWlj''@;'; put 'put ''b24sLmFsZXJ0LXNtIC5jbG9zZSBjbHItaWNvbnttYXJnaW4tdG9wOi0uMjVyZW07bWFyZ2luLXJpZ2h0Oi0uMDVyZW07aGVpZ2h0OjFyZW07d2lkdGg6MXJlbTtsaW5lLWhlaWdodDoxLjA1cmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpey5hbGVydCAuYWxlcnQtaXRl''@;'; put 'put ''bXtmbGV4LXdyYXA6d3JhcH0uYWxlcnQgLmFsZXJ0LXRleHR7bWFyZ2luLXJpZ2h0OjA7bWF4LXdpZHRoOjkwJTt3aWR0aDo5MCU7ZmxleC1iYXNpczo5MCV9LmFsZXJ0IC5hbGVydC1hY3Rpb25ze2ZsZXg6MSAwIDEwMCU7cGFkZGluZy10b3A6LjE1cmVtO3BhZGRpbmctbGVmdDoxLjJyZW19''@;'; put 'put ''LmFsZXJ0cy1wYWdlcnttYXJnaW4tdG9wOi4xNXJlbX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb25ze21hcmdpbi1sZWZ0OjIuMjVyZW19fS5hbGVydC1oaWRkZW57ZGlzcGxheTpub25lfS5jYXJkIC5hbGVydHttYXJnaW46LjNyZW0gMH0ubW9kYWwgLmFsZXJ0Ky5tb2RhbC1oZWFk''@;'; put 'put ''ZXIsLm1vZGFsIC5hbGVydCsubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle21hcmdpbi10b3A6LjZyZW19LmFsZXJ0cy5hbGVydC1pbmZve2JhY2tncm91bmQ6IzAwNTY3YTtiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1wYWdlci1iZy1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0''@;'; put 'put ''cy5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZDojOTkxNzAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItYmctY29sb3IsICM5OTE3MDApfS5hbGVydHMuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiM4ZjVhMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LXdhcm5pbmctcGFnZXItYmctY29sb3IsICM4ZjVhMDApfS5hbGVydHMuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOiMyNTUyMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy05MDAsICMyNTUyMDApfS5hbGVydHMtcGFnZXJ7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IsIHdoaXRlKTtmb250LXNpemU6LjY1cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtmbG9hdDpsZWZ0O21pbi1oZWlnaHQ6MS44cmVtO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjcuMnJlbX0uYWxlcnQtaW5mbyAuYWxlcnRzLXBhZ2Vye2Nv''@;'; put 'put ''bG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2Vye2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0u''@;'; put 'put ''YWxlcnQtZGFuZ2VyIC5hbGVydHMtcGFnZXJ7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0cy1wYWdlcntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3Vj''@;'; put 'put ''Y2Vzcy1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0cy1wYWdlci1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IsIHdoaXRlKTtjdXJzb3I6cG9pbnRlcn1idXR0b24uYWxlcnRzLXBhZ2VyLWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0u''@;'; put 'put ''YWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvciwgd2hpdGUpfS5hbGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5h''@;'; put 'put ''bGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtd2Fybmlu''@;'; put 'put ''ZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWRhbmdlciAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtZGFuZ2VyIC5hbGVy''@;'; put 'put ''dHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItZm9udC1jb2xvciwgd2hpdGUpfS5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFn''@;'; put 'put ''ZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnRzLXBhZ2VyLWNvbnRyb2x7ZGlzcGxheTpmbGV4O21hcmdpbi10b3A6LjNyZW07d2hpdGUtc3BhY2U6bm93cmFwfS5hbGVy''@;'; put 'put ''dHMtcGFnZS1kb3due21hcmdpbi1sZWZ0OjEuMnJlbTt3aWR0aDozMy4zMyV9LmFsZXJ0cy1wYWdlLXVwe21hcmdpbi1yaWdodDoxLjJyZW07d2lkdGg6MzMuMzMlfS5hbGVydHMtcGFnZXItdGV4dHt3aWR0aDozMy4zMyV9OnJvb3R7LS1jbHItY2FyZC1iZy1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItbmV1dHJhbC0wKTstLWNsci1jYXJkLWRpdmlkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTstLWNsci1jYXJkLXRpdGxlLWNvbG9yOnZhcigtLWNsci1oNC1jb2xvcik7LS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jbHItaDQtZm9udC13ZWlnaHQp''@;'; put 'put ''Oy0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItY2FyZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTst''@;'; put 'put ''LWNsci1jYXJkLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yKTstLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNhcmQtY2xpY2thYmxlLWJvcmRlci1jb2xvcil9LmNhcmR7Ym94LXNoYWRvdzowIC4xNXJlbSAjZGVkZWRlO2JveC1zaGFkb3c6MCAuMTVyZW0gMCAwIHZhcigtLWNsci1jYXJkLWJveC1zaGFkb3ctY29sb3IpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xy''@;'; put 'put ''LWNhcmQtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItY2FyZC1ib3JkZXItd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZGVkZWRlO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY2Fy''@;'; put 'put ''ZC1ib3JkZXItY29sb3IsICNkZWRlZGUpfS5jYXJkLmNsaWNrYWJsZTpob3Zlcntib3gtc2hhZG93OjAgLjE1cmVtICMxNzliZDM7Ym94LXNoYWRvdzowIC4xNXJlbSAwIDAgdmFyKC0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3ctY29sb3IpO2JvcmRlci13aWR0aDouMDVyZW07Ym9y''@;'; put 'put ''ZGVyLXdpZHRoOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiMxNzliZDM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3IsICMxNzliZDMpO2N1cnNvcjpwb2ludGVyO3Rl''@;'; put 'put ''eHQtZGVjb3JhdGlvbjpub25lO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0uMXJlbSk7dHJhbnNpdGlvbjpib3JkZXIgLjJzIGVhc2UsdHJhbnNmb3JtIC4ycyBlYXNlfS5jYXJkLWJsb2NrIC5jYXJkLWRpdmlkZXIsLmNhcmQgLmNhcmQtdGl0bGUsLmNhcmQgLmNhcmQtdGV4dCwuY2FyZCAuY2Fy''@;'; put 'put ''ZC1tZWRpYS1ibG9jaywuY2FyZCAubGlzdCwuY2FyZCAubGlzdC11bnN0eWxlZHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouNnJlbX0uY2FyZC1ibG9jayAuY2FyZC1kaXZpZGVyOmxhc3QtY2hpbGQsLmNhcmQgLmNhcmQtdGl0bGU6bGFzdC1jaGlsZCwuY2FyZCAuY2FyZC10ZXh0Omxh''@;'; put 'put ''c3QtY2hpbGQsLmNhcmQgLmNhcmQtbWVkaWEtYmxvY2s6bGFzdC1jaGlsZCwuY2FyZCAubGlzdDpsYXN0LWNoaWxkLC5jYXJkIC5saXN0LXVuc3R5bGVkOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLmNhcmQtaW1nPmltZywuY2FyZD4uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ6bGFz''@;'; put 'put ''dC1jaGlsZD5pbWcsLmNhcmQtaW1nPmltZ3tkaXNwbGF5OmJsb2NrO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Y2FyZC1iZy1jb2xvciwgd2hpdGUpO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxLjJyZW19LmNhcmQgLmJ0bi1saW5re21pbi13aWR0aDowO3BhZGRpbmc6MH0uY2FyZC5jbGlja2FibGV7Y29sb3I6aW5oZXJpdH0uY2FyZD4ubGlzdCwuY2FyZD4ubGlzdC11bnN0eWxlZHtwYWRkaW5nOi42cmVt''@;'; put 'put ''IC45cmVtfS5jYXJkIC5saXN0LWdyb3Vwe3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtsaXN0LXN0eWxlOm5vbmV9LmNhcmQgLmxpc3QtZ3JvdXAtaXRlbXtwYWRkaW5nOi42cmVtIC45cmVtO2ZvbnQtc2l6ZTouN3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY2FyZC1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xv''@;'; put 'put ''cjojZGVkZWRlO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yLCAjZGVkZWRlKX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2lu''@;'; put 'put ''LXRvcDotLjZyZW19fS5jYXJkLWhlYWRlciwuY2FyZC1ibG9jaywuY2FyZC1mb290ZXJ7cGFkZGluZzouNnJlbSAuOXJlbX0uY2FyZC1oZWFkZXIsLmNhcmQtdGl0bGV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY2FyZC10aXRsZS1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtm''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodCwgMjAwKTtmb250LXNpemU6LjlyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsfWgxLmNhcmQtaGVhZGVyLGgxLmNhcmQtdGl0bGUsaDIuY2FyZC1oZWFkZXIsaDIuY2FyZC10aXRsZSxoMy5jYXJkLWhlYWRlcixoMy5j''@;'; put 'put ''YXJkLXRpdGxlLGg0LmNhcmQtaGVhZGVyLGg0LmNhcmQtdGl0bGUsaDUuY2FyZC1oZWFkZXIsaDUuY2FyZC10aXRsZSxoNi5jYXJkLWhlYWRlcixoNi5jYXJkLXRpdGxle21hcmdpbi10b3A6MH0uY2FyZC10ZXh0e2ZvbnQtc2l6ZTouN3JlbX0uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ+aW1ne2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigt''@;'; put 'put ''LWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQtaW1nOmxhc3QtY2hpbGQ+aW1ne2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4x''@;'; put 'put ''NXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQuY2FyZC1pbWc+aW1nLC5jYXJkPi5jYXJkLWltZzpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkPmlt''@;'; put 'put ''Z3tib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQtYmxvY2sgLmJ0biwuY2FyZC1ibG9jayAuYnRuLmJ0bi1saW5rLC5jYXJkLWJsb2NrIC5jYXJkLWxpbmssLmNhcmQtZm9vdGVyIC5idG4sLmNhcmQt''@;'; put 'put ''Zm9vdGVyIC5idG4uYnRuLWxpbmssLmNhcmQtZm9vdGVyIC5jYXJkLWxpbmt7bWFyZ2luOjAgLjZyZW0gMCAwfS5jYXJkLWJsb2NrIC5idG4tZ3JvdXAgLmJ0biwuY2FyZC1mb290ZXIgLmJ0bi1ncm91cCAuYnRue21hcmdpbjowfS5jYXJkLWhlYWRlciwuY2FyZC1ibG9ja3tib3JkZXItYm90''@;'; put 'put ''dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6I2RlZGVkZTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jYXJkLWJv''@;'; put 'put ''cmRlci1jb2xvciwgI2RlZGVkZSl9LmNhcmQtaGVhZGVyOmxhc3QtY2hpbGQsLmNhcmQtYmxvY2s6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LmNhcmQtZGl2aWRlcntkaXNwbGF5OmJsb2NrO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFy''@;'; put 'put ''KC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZGVkZWRlO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNhcmQtZGl2aWRlci1jb2xvciwgI2RlZGVkZSl9LmNhcmQtYmxvY2sgLmNhcmQt''@;'; put 'put ''ZGl2aWRlcnttYXJnaW4tbGVmdDotLjlyZW07bWFyZ2luLXJpZ2h0Oi0uOXJlbTt3aWR0aDphdXRvfS5jYXJkLWhlYWRlcisuY2FyZC1kaXZpZGVyLC5jYXJkLWJsb2NrKy5jYXJkLWRpdmlkZXJ7ZGlzcGxheTpub25lfS5jYXJkLW1lZGlhLWJsb2Nre2Rpc3BsYXk6ZmxleH0uY2FyZC1tZWRp''@;'; put 'put ''YS1ibG9jayAuY2FyZC1tZWRpYS1pbWFnZXtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4OjAgMCBhdXRvO2hlaWdodDozcmVtO3dpZHRoOjNyZW07bWF4LWhlaWdodDozcmVtO21heC13aWR0aDozcmVtfS5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLWRlc2NyaXB0aW9ue2Rpc3BsYXk6''@;'; put 'put ''ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luOjAgMCAwIC42cmVtfS5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLXRpdGxlLC5jYXJkLW1lZGlhLWJsb2NrIHNwYW4sLmNhcmQtbWVkaWEtYmxvY2sgLmNhcmQtbWVkaWEtdGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2Fy''@;'; put 'put ''ZC1tZWRpYS1ibG9jay53cmFwe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2FyZC1tZWRpYS1ibG9jay53cmFwIC5jYXJkLW1lZGlhLWRlc2NyaXB0aW9ue21hcmdpbjouM3JlbSAwIDB9LmNhcmQtYmxvY2s+Lmxpc3QsLmNhcmQtYmxvY2s+Lmxpc3QtdW5zdHlsZWR7cGFkZGluZzowfUBtZWRp''@;'; put 'put ''YSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NTc2cHgpey5jYXJkLWNvbHVtbnN7Y29sdW1uLWNvdW50OjM7Y29sdW1uLWdhcDouNnJlbTtwYWdlLWJyZWFrLWluc2lkZTphdm9pZDticmVhay1pbnNpZGU6YXZvaWQ7Y29sdW1uLWZpbGw6YmFsYW5jZTstd2Via2l0LXBlcnNwZWN0aXZlOjF9LmNh''@;'; put 'put ''cmQtY29sdW1ucy5jYXJkLWNvbHVtbnMtMntjb2x1bW4tY291bnQ6Mn0uY2FyZC1jb2x1bW5zLmNhcmQtY29sdW1ucy00e2NvbHVtbi1jb3VudDo0fS5jYXJkLWNvbHVtbnMgLmNhcmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOi4zcmVtfS5jYXJkLWNvbHVtbnMgLmNsaWNrYWJsZXst''@;'; put 'put ''d2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmNoZWNrYm94LmJ0biBsYWJlbCwuY2FyZCAuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbCwuY2FyZCAucmFkaW8u''@;'; put 'put ''YnRuIGxhYmVsLC5jYXJkIC5yYWRpby1pbmxpbmUuYnRuIGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfX06cm9vdHstLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kcm9wZG93bi1iZy1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Y29sb3ItbmV1dHJhbC0wKTstLWNsci1kcm9wZG93bi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1kcm9wZG93bi1kaXZpZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItZHJvcGRvd24tZGl2aWRlci1ib3JkZXItd2lk''@;'; put 'put ''dGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCk7LS1jbHItZHJvcGRvd24tY2hpbGQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcik7LS1jbHItZHJv''@;'; put 'put ''cGRvd24tc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci1kcm9wZG93bi1ib3gtc2hhZG93OnZhcigtLWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3IpOy0tY2xyLWRyb3Bkb3duLXRleHQtY29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTst''@;'; put 'put ''LWNsci1kcm9wZG93bi1oZWFkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNsci1kcm9wZG93bi1oZWFkZXItZm9udC13ZWlnaHQ6NjAwOy0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kcm9wZG93bi1p''@;'; put 'put ''dGVtLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMS1mb250LXdlaWdodCl9LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8sLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLC5kcm9wZG93bi1tZW51IC5idG4t''@;'; put 'put ''b3V0bGluZS1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzcywuZHJv''@;'; put 'put ''cGRvd24tbWVudSAuYnRuLWRhbmdlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzcywuZHJvcGRvd24tbWVudSAuYnRuLWxpbmssLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0sLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt0ZXh0LWFsaWduOmxlZnR9LmRyb3Bkb3due3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2Rpc3Bs''@;'; put 'put ''YXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uW3NoYXBlXj1jYXJl''@;'; put 'put ''dF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjppbmhlcml0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTttaW4taGVpZ2h0Oi41cmVtO21pbi13aWR0aDouNXJlbX0uZHJvcGRvd24gLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZSBjZHMtaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uW3NoYXBlXj1hbmdsZV17bWFyZ2luLXRvcDp1bnNldDtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjppbmhlcml0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTstLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtNzouNXJlbX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG57cGFkZGluZy1yaWdodDoxLjJyZW07dGV4dC1vdmVyZmxvdzp1bnNldH0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257dHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duIC5kcm9wZG93bi10b2dn''@;'; put 'put ''bGUuYnRuIGNkcy1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUu''@;'; put 'put ''YnRuIGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6LjZyZW19LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pe3BhZGRpbmc6MCAuNnJlbSAwIDA7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3IsIGJsYWNrKX0uZHJvcGRv''@;'; put 'put ''d24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVe''@;'; put 'put ''PWFuZ2xlXSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtyaWdodDowfS5kcm9wZG93biBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtjb2xvcjoj''@;'; put 'put ''MDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5kcm9wZG93bi1tZW51Pip7ZGlzcGxheTpibG9jazt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjph''@;'; put 'put ''YnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOjZyZW07bWF4LXdpZHRoOjE4cmVtO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kcm9wZG93bi1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZHJvcGRvd24tYm94LXNoYWRvdywgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTttYXJnaW4tdG9wOi4xcmVtO3Bh''@;'; put 'put ''ZGRpbmc6LjZyZW0gMDt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwNTB9LmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1oZWFkZXItY29sb3IsICMzMzMzMzMpO2ZvbnQtc2l6ZTouNnJlbTtmb250LXdlaWdodDo2''@;'; put 'put ''MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWhlYWRlci1mb250LXdlaWdodCwgNjAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7cGFkZGluZzowIC42cmVtO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmJ0bi1z''@;'; put 'put ''ZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13''@;'; put 'put ''YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZywuZHJv''@;'; put 'put ''cGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVte2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo0''@;'; put 'put ''MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6aW5oZXJpdDtt''@;'; put 'put ''YXJnaW46MDt3aWR0aDoxMDAlO3RleHQtdHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duLW1lbnUgLmJ0bjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lOmhvdmVy''@;'; put 'put ''LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpo''@;'; put 'put ''b3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmhvdmVyLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWhvdmVyLWNvbG9yLCAjZThl''@;'; put 'put ''OGU4KTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yLCAjNjY2NjY2KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0''@;'; put 'put ''bi1pbmZvLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUt''@;'; put 'put ''d2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuYWN0''@;'; put 'put ''aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFj''@;'; put 'put ''a2dyb3VuZDp2YXIoLS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5kcm9wZG93bi1tZW51IC5idG46YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vj''@;'; put 'put ''b25kYXJ5OmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6YWN0''@;'; put 'put ''aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6YWN0aXZl''@;'; put 'put ''LC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluazphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0''@;'; put 'put ''ZW06YWN0aXZle2JveC1zaGFkb3c6bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6Zm9jdXMsLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmZv''@;'; put 'put ''Y3VzLC5kcm9wZG93bi1tZW51IC5idG4tbGluazpmb2N1cywuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpmb2N1c3t6LWluZGV4OmluaGVyaXR9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4t''@;'; put 'put ''c2Vjb25kYXJ5LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRp''@;'; put 'put ''c2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1v''@;'; put 'put ''dXRsaW5lLWRhbmdlci5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5n''@;'; put 'put ''LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZCwuZHJvcGRvd24t''@;'; put 'put ''bWVudSAuYnRuLWxpbms6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2Vs''@;'; put 'put ''ZWN0Om5vbmV9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkOmhv''@;'; put 'put ''dmVyLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZDpo''@;'; put 'put ''b3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkOmhvdmVyLC5kcm9w''@;'; put 'put ''ZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUg''@;'; put 'put ''LmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1z''@;'; put 'put ''dWNjZXNzOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLXByaW1hcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3du''@;'; put 'put ''LW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQ6aG92ZXIsLmRyb3Bk''@;'; put 'put ''b3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bjpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQ6''@;'; put 'put ''YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRp''@;'; put 'put ''c2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDphY3RpdmUsLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpkaXNhYmxlZDph''@;'; put 'put ''Y3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5n''@;'; put 'put ''OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzczpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LWxpbms6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpkaXNhYmxlZDphY3RpdmV7YmFja2dyb3VuZDowIDA7Ym94LXNoYWRvdzpub25lfS5kcm9wZG93bi1tZW51IC5idG4u''@;'; put 'put ''ZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmV4''@;'; put 'put ''cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51''@;'; put 'put ''IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLXN1Y2Nlc3MuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbS5leHBhbmRhYmxle21hcmdpbi1yaWdodDoxLjJyZW07cGFkZGluZy1yaWdodDouNnJlbX0uZHJvcGRvd24tbWVudSAuYnRuLmV4cGFu''@;'; put 'put ''ZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUg''@;'; put 'put ''LmJ0bi1vdXRsaW5lLXByaW1hcnkuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLW91dGxpbmUtZGFuZ2VyLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5l''@;'; put 'put ''eHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuZHJvcGRvd24taXRlbS5leHBhbmRhYmxlOmJlZm9yZXtjb250ZW50OiIiO2Zsb2F0OnJpZ2h0O2hlaWdodDouNnJlbTt3aWR0aDouNnJlbTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nz''@;'; put 'put ''dmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEyJTIwMTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDc3R5bGUlM0UuY2xzLTElN0Jm''@;'; put 'put ''aWxsJTNBJTIzOWE5YTlhJTNCJTdEJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VDYXJldCUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjBkJTNEJTIyTTYl''@;'; put 'put ''MkM5TDEuMiUyQzQuMmEwLjY4JTJDMC42OCUyQzAlMkMwJTJDMSUyQzEtMUw2JTJDNy4wOCUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3Vu''@;'; put 'put ''ZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi10b3A6LjNyZW19LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtwYWRkaW5nOi4xNXJlbSAxLjJyZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtwYWRkaW5nOi4zcmVtIDEuMnJlbX19LmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWRpdmlkZXJ7Zm9udC1zaXplOi42cmVtO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6''@;'; put 'put ''dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZThlOGU4O2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItY29sb3IsICNlOGU4ZTgp''@;'; put 'put ''O21hcmdpbjouM3JlbSAwfS5idG4tZ3JvdXAtb3ZlcmZsb3cub3Blbj4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5vcGVuPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJm''@;'; put 'put ''bG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51e3Zpc2liaWxpdHk6dmlzaWJsZX0uYnRuLWdyb3VwLW92ZXJm''@;'; put 'put ''bG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwu''@;'; put 'put ''ZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXt0b3A6MTAwJTtib3R0b206YXV0bzttYXJnaW46LjFyZW0gMCAwfS5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMt''@;'; put 'put ''b3ZlcmZsb3cuYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51e2xlZnQ6MDtyaWdodDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1yaWdo''@;'; put 'put ''dD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24uYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3JpZ2h0OjA7bGVmdDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cudG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLnRh''@;'; put 'put ''YnMtb3ZlcmZsb3cudG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cudG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24udG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbToxMDAl''@;'; put 'put ''O21hcmdpbjowIDAgLjFyZW19LmJ0bi1ncm91cC1vdmVyZmxvdy50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24udG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnV7bGVmdDowO3JpZ2h0OmF1dG99LmJ0bi1ncm91cC1v''@;'; put 'put ''dmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cudG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99LmJ0bi1ncm91cC1vdmVyZmxvdy5sZWZ0LXRvcD4uZHJvcGRvd24t''@;'; put 'put ''bWVudSwuYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVu''@;'; put 'put ''dSwuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MTAwJTtsZWZ0OmF1dG87bWFyZ2luOjAgLjFyZW0gMCAwfS5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1l''@;'; put 'put ''bnUsLmRyb3Bkb3duLmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51e3RvcDowO2JvdHRvbTphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9w''@;'; put 'put ''ZG93bi1tZW51e2JvdHRvbTowO3RvcDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwudGFi''@;'; put 'put ''cy1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51e2xlZnQ6MTAwJTtyaWdodDphdXRvO21hcmdpbjowIDAgMCAuMXJlbX0uYnRuLWdyb3VwLW92''@;'; put 'put ''ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudXt0b3A6MDtib3R0b206YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LXRvcD4u''@;'; put 'put ''ZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudXtib3R0b206MDt0b3A6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxv''@;'; put 'put ''dyAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93biAuZHJvcGRvd24tbWVudXtib3JkZXItY29sb3I6I2IzYjNiMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWNoaWxkLWJvcmRlci1jb2xvciwgI2IzYjNiMyk7cG9zaXRpb246YWJzb2x1dGV9LmJ0''@;'; put 'put ''bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93''@;'; put 'put ''bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7dG9wOjA7Ym90dG9tOmF1dG87bGVmdDphdXRvO3JpZ2h0OjEwMCU7bWFyZ2luLXRvcDotLjk1cmVtO21hcmdpbi1yaWdodDotLjJyZW19LmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5i''@;'; put 'put ''dG4tZ3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJv''@;'; put 'put ''cGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7dG9wOjA7Ym90dG9tOmF1dG87''@;'; put 'put ''bGVmdDoxMDAlO3JpZ2h0OmF1dG87bWFyZ2luLXRvcDotLjk1cmVtO21hcmdpbi1sZWZ0Oi0uMnJlbX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRv''@;'; put 'put ''d24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRv''@;'; put 'put ''d24gLmRyb3Bkb3duLmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MDtsZWZ0OmF1dG87cmlnaHQ6MTAwJTttYXJnaW4tYm90dG9tOi0u''@;'; put 'put ''OTVyZW07bWFyZ2luLXJpZ2h0Oi0uMnJlbX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUs''@;'; put 'put ''LnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MDtsZWZ0OjEwMCU7cmlnaHQ6YXV0bzttYXJnaW4tYm90dG9tOi0uOTVyZW07bWFyZ2luLWxlZnQ6LS4ycmVtfTpy''@;'; put 'put ''b290ey0tY2xyLWJhZGdlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1iYWRnZS1jb2xvcjp2YXIoLS1jbHItY29sb3Itb24tbmV1dHJhbC02MDApOy0tY2xyLWJhZGdlLWluZm8tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDAp''@;'; put 'put ''Oy0tY2xyLWJhZGdlLWluZm8tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy04MDApOy0tY2xyLWJhZGdlLXN1Y2Nlc3MtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1j''@;'; put 'put ''bHItYmFkZ2Utd2FybmluZy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itd2FybmluZy0xMDAwKTstLWNsci1iYWRnZS13YXJuaW5nLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7''@;'; put 'put ''LS1jbHItYmFkZ2UtZGFuZ2VyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJhZGdlLWdyYXktYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1iYWRnZS1ncmF5LWNvbG9yOnZhcigtLWNsci1iYWRnZS1mb250LWNvbG9yLWxpZ2h0KTst''@;'; put 'put ''LWNsci1iYWRnZS1wdXJwbGUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNTAwKTstLWNsci1iYWRnZS1wdXJwbGUtY29sb3I6dmFyKC0tY2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQpOy0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LWFjdGlvbi04MDApOy0tY2xyLWJhZGdlLWJsdWUtY29sb3I6dmFyKC0tY2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQpOy0tY2xyLWJhZGdlLW9yYW5nZS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itd2FybmluZy0xMDAwKTstLWNsci1iYWRnZS1vcmFuZ2UtY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtMCk7LS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwMCk7LS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKX0uYmFkZ2V7ZGlzcGxheTppbmxpbmUtZmxleDt2ZXJ0aWNh''@;'; put 'put ''bC1hbGlnbjptaWRkbGU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLXdpZHRoOi43NXJlbTtiYWNrZ3JvdW5kOiM4YzhjOGM7aGVpZ2h0Oi43NXJlbTtsaW5lLWhlaWdodDpub3JtYWw7Ym9yZGVyLXJhZGl1czouNXJlbTtmb250LXNpemU6LjVyZW07cGFk''@;'; put 'put ''ZGluZzowIC4ycmVtO21hcmdpbi1yaWdodDouM3JlbTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZm9udC1jb2xvci1saWdodCwgd2hpdGUpfS5iYWRnZTp2aXNpdGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQsIHdoaXRlKX0uYmFkZ2UuYmFkZ2UtZ3JheSwuYmFkZ2UuYmFkZ2UtMXtiYWNrZ3JvdW5kOiM4YzhjOGM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZ3JheS1iZy1jb2xvciwgIzhjOGM4Yyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YmFkZ2UtZ3JheS1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS1wdXJwbGUsLmJhZGdlLmJhZGdlLTJ7YmFja2dyb3VuZDojOWU1N2JjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvciwgIzllNTdiYyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2Ut''@;'; put 'put ''cHVycGxlLWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLWJsdWUsLmJhZGdlLmJhZGdlLTN7YmFja2dyb3VuZDojMDA1NjdhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWJsdWUtY29s''@;'; put 'put ''b3IsIHdoaXRlKX0uYmFkZ2UuYmFkZ2Utb3JhbmdlLC5iYWRnZS5iYWRnZS00e2JhY2tncm91bmQ6IzYxMzIwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1vcmFuZ2UtYmctY29sb3IsICM2MTMyMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLW9yYW5nZS1jb2xvciwg''@;'; put 'put ''d2hpdGUpfS5iYWRnZS5iYWRnZS1saWdodC1ibHVlLC5iYWRnZS5iYWRnZS01e2JhY2tncm91bmQ6IzE3OWJkMztiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVlLWJnLWNvbG9yLCAjMTc5YmQzKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVl''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLWluZm97YmFja2dyb3VuZDojMDA1NjdhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWluZm8tYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWluZm8tY29sb3IsIHdoaXRlKX0uYmFkZ2UuYmFk''@;'; put 'put ''Z2Utc3VjY2Vzc3tiYWNrZ3JvdW5kOiMzMDZiMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvciwgIzMwNmIwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS1kYW5nZXJ7YmFja2dy''@;'; put 'put ''b3VuZDojOTkxNzAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvciwgIzk5MTcwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZGFuZ2VyLWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLXdhcm5pbmd7YmFja2dyb3VuZDojNjEzMjAwO2JhY2tn''@;'; put 'put ''cm91bmQ6dmFyKC0tY2xyLWJhZGdlLXdhcm5pbmctYmctY29sb3IsICM2MTMyMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXdhcm5pbmctY29sb3IsIHdoaXRlKX1fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAuYmFkZ2UsOnJvb3QgLmJhZGdle3BhZGRpbmc6LjFyZW0gLjE1''@;'; put 'put ''cmVtIDB9QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5iYWRnZXtwYWRkaW5nOi4xcmVtIC4xNXJlbSAwfX06cm9vdHstLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWxhYmVsLWZvbnQtY29sb3ItZGFyazp2YXIo''@;'; put 'put ''LS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1sYWJlbC1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWxhYmVsLWZvbnQtc2l6ZTouNTVyZW07LS1jbHItbGFiZWwtZm9udC13ZWlnaHQ6NDAwOy0tY2xyLWxhYmVsLWxldHRlci1z''@;'; put 'put ''cGFjaW5nOi4wM2VtOy0tY2xyLWxhYmVsLWJvcmRlci1yYWRpdXM6LjZyZW07LS1jbHItbGFiZWwtYmctaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci1sYWJlbC1ncmF5LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItbGFi''@;'; put 'put ''ZWwtZ3JheS1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCk7LS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwMCk7LS1jbHItbGFiZWwtcHVycGxlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9y''@;'; put 'put ''LWxpZ2h0KTstLWNsci1sYWJlbC1ibHVlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1sYWJlbC1ibHVlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0KTstLWNsci1sYWJlbC1vcmFuZ2UtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdh''@;'; put 'put ''cm5pbmctMTAwMCk7LS1jbHItbGFiZWwtb3JhbmdlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWRhcmspOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWxhYmVsLWZvbnQtY29sb3ItZGFyayk7LS1jbHItbGFiZWwtaW5mby1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwKTstLWNsci1sYWJlbC1pbmZvLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWxhYmVsLWluZm8tYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1sYWJlbC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTUwKTstLWNsci1sYWJlbC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1sYWJlbC1zdWNjZXNz''@;'; put 'put ''LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy04MDApOy0tY2xyLWxhYmVsLXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctMTAwKTstLWNsci1sYWJlbC13YXJuaW5nLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNs''@;'; put 'put ''ci1sYWJlbC13YXJuaW5nLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3Itd2FybmluZy04MDApOy0tY2xyLWxhYmVsLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTEwMCk7LS1jbHItbGFiZWwtZGFuZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdl''@;'; put 'put ''ci05MDApOy0tY2xyLWxhYmVsLWRhbmdlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApfS5sYWJlbCxhLmxhYmVse2ZvbnQtc2l6ZTouNTVyZW07Zm9udC1zaXplOnZhcigtLWNsci1sYWJlbC1mb250LXNpemUsIC41NXJlbSk7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQt''@;'; put 'put ''d2VpZ2h0OnZhcigtLWNsci1sYWJlbC1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzouMDNlbTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItbGFiZWwtbGV0dGVyLXNwYWNpbmcsIC4wM2VtKTtsaW5lLWhlaWdodDouNnJlbTtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MCAuNnJlbTtib3JkZXItcmFkaXVzOi42cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci1yYWRpdXMsIC42cmVtKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZGVmYXVsdC1ib3JkZXItY29sb3IsICM4YzhjOGMpO2hlaWdodDoxLjA1cmVtO21hcmdpbjowIC4zcmVtIC4wNXJlbSAwO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0LCBi''@;'; put 'put ''bGFjayl9LmxhYmVsOnZpc2l0ZWQsYS5sYWJlbDp2aXNpdGVke2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLWZvbnQtY29sb3ItbGlnaHQsIGJsYWNrKX0ubGFiZWw6Zm9jdXMsLmxhYmVsOmhvdmVyLC5sYWJlbDphY3RpdmUsYS5sYWJlbDpmb2N1cyxhLmxhYmVsOmhvdmVyLGEu''@;'; put 'put ''bGFiZWw6YWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS5sYWJlbC5jbGlja2FibGU6aG92ZXIsLmxhYmVsLmNsaWNrYWJsZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGU6aG92ZXIsYS5sYWJlbC5jbGlja2FibGU6YWN0aXZle2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigt''@;'; put 'put ''LWNsci1sYWJlbC1iZy1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LmxhYmVsLmNsaWNrYWJsZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGU6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzhjOGM4YyBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtZ3JheS1i''@;'; put 'put ''Zy1jb2xvciwgIzhjOGM4YykgaW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9LmxhYmVsLmxhYmVsLWdyYXksLmxhYmVsLmxhYmVsLTEsYS5sYWJlbC5sYWJlbC1ncmF5LGEubGFiZWwubGFiZWwtMXtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZ3JheS1iZy1jb2xvciwgIzhjOGM4Yyl9LmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1ncmF5OmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTpob3ZlcixhLmxhYmVsLmNsaWNr''@;'; put 'put ''YWJsZS5sYWJlbC1ncmF5OmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTphY3RpdmUsYS5sYWJlbC5jbGlja2Fi''@;'; put 'put ''bGUubGFiZWwtZ3JheTphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjOGM4YzhjIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1sYWJlbC1ncmF5LWJnLWNvbG9yLCAjOGM4YzhjKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwt''@;'; put 'put ''Z3JheT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1ncmF5Pi5iYWRnZXtiYWNrZ3JvdW5kOiM4YzhjOGM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZ3JheS1iZy1jb2xvciwgIzhjOGM4Yyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZ3JheS1jb2xvciwgd2hpdGUpfS5sYWJl''@;'; put 'put ''bC5sYWJlbC1wdXJwbGUsLmxhYmVsLmxhYmVsLTIsYS5sYWJlbC5sYWJlbC1wdXJwbGUsYS5sYWJlbC5sYWJlbC0ye2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM5ZTU3YmM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1sYWJlbC1wdXJwbGUtYmctY29sb3IsICM5ZTU3YmMpfS5s''@;'; put 'put ''YWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZSxhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1wdXJwbGU6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9u''@;'; put 'put ''ZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZSxhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1wdXJwbGU6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVy''@;'; put 'put ''ZW0gIzllNTdiYyBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yLCAjOWU1N2JjKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtcHVycGxlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLXB1cnBsZT4u''@;'; put 'put ''YmFkZ2V7YmFja2dyb3VuZDojOWU1N2JjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvciwgIzllNTdiYyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtcHVycGxlLWNvbG9yLCB3aGl0ZSl9LmxhYmVsLmxhYmVsLWJsdWUsLmxhYmVsLmxhYmVsLTMs''@;'; put 'put ''YS5sYWJlbC5sYWJlbC1ibHVlLGEubGFiZWwubGFiZWwtM3tib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtYmx1ZS1iZy1jb2xvciwgIzAwNTY3YSl9LmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1ibHVlOmhvdmVyLC5s''@;'; put 'put ''YWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTpob3ZlcixhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1ibHVlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHIt''@;'; put 'put ''bGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjMDA1NjdhIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigt''@;'; put 'put ''LWNsci1sYWJlbC1ibHVlLWJnLWNvbG9yLCAjMDA1NjdhKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtYmx1ZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1ibHVlPi5iYWRnZXtiYWNrZ3JvdW5kOiMwMDU2N2E7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Ut''@;'; put 'put ''Ymx1ZS1iZy1jb2xvciwgIzAwNTY3YSk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtYmx1ZS1jb2xvciwgd2hpdGUpfS5sYWJlbC5sYWJlbC1vcmFuZ2UsLmxhYmVsLmxhYmVsLTQsYS5sYWJlbC5sYWJlbC1vcmFuZ2UsYS5sYWJlbC5sYWJlbC00e2JvcmRlcjouMDVyZW0gc29s''@;'; put 'put ''aWQ7Ym9yZGVyLWNvbG9yOiM2MTMyMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1sYWJlbC1vcmFuZ2UtYmctY29sb3IsICM2MTMyMDApfS5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmFjdGl2ZSxhLmxhYmVsLmNsaWNr''@;'; put 'put ''YWJsZS5sYWJlbC1vcmFuZ2U6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlj''@;'; put 'put ''a2FibGUubGFiZWwtb3JhbmdlOmFjdGl2ZSxhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1vcmFuZ2U6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzYxMzIwMCBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtb3JhbmdlLWJnLWNvbG9yLCAjNjEzMjAwKSBp''@;'; put 'put ''bnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtb3JhbmdlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLW9yYW5nZT4uYmFkZ2V7YmFja2dyb3VuZDojNjEzMjAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLW9yYW5nZS1iZy1jb2xvciwgIzYxMzIwMCk7Y29sb3I6''@;'; put 'put ''I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWNvbG9yLCB3aGl0ZSl9LmxhYmVsLmxhYmVsLWxpZ2h0LWJsdWUsLmxhYmVsLmxhYmVsLTUsYS5sYWJlbC5sYWJlbC1saWdodC1ibHVlLGEubGFiZWwubGFiZWwtNXtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMTc5''@;'; put 'put ''YmQzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtbGlnaHQtYmx1ZS1iZy1jb2xvciwgIzE3OWJkMyl9LmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1saWdodC1ibHVlOmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtbGlnaHQtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFi''@;'; put 'put ''ZWwtbGlnaHQtYmx1ZTpob3ZlcixhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1saWdodC1ibHVlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlj''@;'; put 'put ''a2FibGUubGFiZWwtbGlnaHQtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtbGlnaHQtYmx1ZTphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1sYWJlbC1saWdodC1ibHVlLWJnLWNvbG9y''@;'; put 'put ''LCAjMTc5YmQzKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtbGlnaHQtYmx1ZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1saWdodC1ibHVlPi5iYWRnZXtiYWNrZ3JvdW5kOiMxNzliZDM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1i''@;'; put 'put ''Zy1jb2xvciwgIzE3OWJkMyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvciwgd2hpdGUpfS5sYWJlbC5sYWJlbC1pbmZvLGEubGFiZWwubGFiZWwtaW5mb3tiYWNrZ3JvdW5kOiNlM2Y1ZmM7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtaW5mby1i''@;'; put 'put ''Zy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItbGFiZWwtaW5mby1mb250LWNvbG9yLCAjMDA1NjdhKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtaW5mby1ib3JkZXItY29s''@;'; put 'put ''b3IsICMwMDU2N2EpfS5sYWJlbC5sYWJlbC1zdWNjZXNzLGEubGFiZWwubGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kOiNkZmYwZDA7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtc3VjY2Vzcy1iZy1jb2xvciwgI2RmZjBkMCk7Y29sb3I6IzMwNmIwMDtjb2xvcjp2YXIoLS1jbHItbGFiZWwt''@;'; put 'put ''c3VjY2Vzcy1mb250LWNvbG9yLCAjMzA2YjAwKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMzA2YjAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtc3VjY2Vzcy1ib3JkZXItY29sb3IsICMzMDZiMDApfS5sYWJlbC5sYWJlbC13YXJuaW5nLGEubGFiZWwubGFiZWwt''@;'; put 'put ''d2FybmluZ3tiYWNrZ3JvdW5kOiNmZmY0Yzc7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1iZy1jb2xvciwgI2ZmZjRjNyk7Y29sb3I6IzMzMztjb2xvcjp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1mb250LWNvbG9yLCAjMzMzMzMzKTtib3JkZXI6LjA1cmVtIHNvbGlkO2Jv''@;'; put 'put ''cmRlci1jb2xvcjojYWQ3NjAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1ib3JkZXItY29sb3IsICNhZDc2MDApfS5sYWJlbC5sYWJlbC1kYW5nZXIsYS5sYWJlbC5sYWJlbC1kYW5nZXJ7YmFja2dyb3VuZDojZmVkZGQ3O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVs''@;'; put 'put ''LWRhbmdlci1iZy1jb2xvciwgI2ZlZGRkNyk7Y29sb3I6Izk5MTcwMDtjb2xvcjp2YXIoLS1jbHItbGFiZWwtZGFuZ2VyLWZvbnQtY29sb3IsICM5OTE3MDApO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM5OTE3MDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1sYWJlbC1kYW5n''@;'; put 'put ''ZXItYm9yZGVyLWNvbG9yLCAjOTkxNzAwKX0ubGFiZWw+LmJhZGdlLGEubGFiZWw+LmJhZGdle21hcmdpbjowIC0uNDVyZW0gMCAuM3JlbX1ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCl7LmxhYmVsLGEubGFiZWx7dmVydGljYWwtYWxpZ246Ym90dG9tfX06cm9vdHstLWNsci1sb2dpbi10''@;'; put 'put ''aXRsZS1jb2xvcjp2YXIoLS1jbHItaDEtY29sb3IpOy0tY2xyLWxvZ2luLXRpdGxlLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMS1mb250LXdlaWdodCk7LS1jbHItbG9naW4tdGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWgxLWZvbnQtZmFtaWx5KTstLWNsci1sb2dpbi10cmFkZW1hcmst''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWgyLWNvbG9yKTstLWNsci1sb2dpbi10cmFkZW1hcmstZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgyLWZvbnQtd2VpZ2h0KTstLWNsci1sb2dpbi10cmFkZW1hcmstZm9udC1mYW1pbHk6dmFyKC0tY2xyLWgyLWZvbnQtZmFtaWx5KTstLWNsci1sb2dpbi1zdWJ0aXRs''@;'; put 'put ''ZS1jb2xvcjp2YXIoLS1jbHItaDMtY29sb3IpOy0tY2xyLWxvZ2luLXN1YnRpdGxlLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMy1mb250LXdlaWdodCk7LS1jbHItbG9naW4tc3VidGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWgzLWZvbnQtZmFtaWx5KTstLWNsci1sb2dpbi1iYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtYXBwLWJhY2tncm91bmQpOy0tY2xyLWxvZ2luLWJhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIydXRmLTglMjIlM0YlM0Ul''@;'; put 'put ''MEQlMEElM0MlMjFET0NUWVBFJTIwc3ZnJTIwUFVCTElDJTIwJTIyLSUyRiUyRlczQyUyRiUyRkRURCUyMFNWRyUyMDEuMSUyRiUyRkVOJTIyJTIwJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkZHcmFwaGljcyUyRlNWRyUyRjEuMSUyRkRURCUyRnN2ZzExLmR0ZCUyMiUzRSUwRCUwQSUz''@;'; put 'put ''Q3N2ZyUwRCUwQSUyMCUyMCUyMCUyMCUyMHZlcnNpb24lM0QlMjIxLjElMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBpZCUzRCUyMm5vLWFzcGVjdC1yYXRpbyUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTBE''@;'; put 'put ''JTBBJTIwJTIwJTIwJTIwJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweCUzRCUyMjBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHklM0QlMjIwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''MjBoZWlnaHQlM0QlMjIyMDU1LjU1cHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB3aWR0aCUzRCUyMjE0NDBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDIwNTUuNTUlMjAxNDQwJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwcHJlc2VydmVBc3BlY3RSYXRp''@;'; put 'put ''byUzRCUyMnhNaW5ZTWluJTIwc2xpY2UlMjIlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NkZXNjJTNFTG9naW4lMjBJbWFnZSUzQyUyRmRlc2MlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwc3Ryb2tlJTNEJTIybm9u''@;'; put 'put ''ZSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgwLjAwMDAwMCUyQyUyMC00LjAwMDAwMCUyOSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUzQ2clM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNGQUZBRkElMjIlMjB4JTNEJTIyMCUyMiUyMHkl''@;'; put 'put ''M0QlMjI0JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUl''@;'; put 'put ''M0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUyMjExMDguNDMlMjAxNDQzLjYzJTIwMTEwOS4wOCUyMDE0NDMuNjMlMjA0NDMuNDQlMjA3NzcuNzQlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5M0Q4Q0ElMjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG92ZXJsYXklM0IlMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwMzM0LjkyJTIwNDQzLjQ0JTIwNzc3Ljc0JTIwMC43OSUyMDMzNC40''@;'; put 'put ''OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjAyMTEuODglMjAwLjc5JTIwMzI5LjYlMjA1OS42MiUy''@;'; put 'put ''MDI3MC43NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjE2MC42NSUyMDE2OS43NCUyMDAuNzklMjA5LjczJTIw''@;'; put 'put ''MC43OSUyMDIxMS44OCUyMDkwLjI3JTIwMzAxLjQ2JTIwNTkuNjIlMjAyNzAuNzclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2lu''@;'; put 'put ''dHMlM0QlMjI1MDMuNzclMjAxNDQzLjYzJTIwNjk3LjQ3JTIwMTQ0My42MyUyMDgwMy43NCUyMDEzMzcuMzYlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9pbnRzJTNEJTIyMTU4LjMzJTIwNjkxLjE1JTIwMC43OSUyMDg0OC43MiUyMDAuNzklMjAxNDI3LjQzJTIwNDQ3LjUyJTIwOTgwLjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDRURERTAlMjIlMjBwb2ludHMlM0QlMjIyNTcuNzElMjA1OTEuNzUlMjAwLjc5JTIwMzM0LjQ5JTIwMC43OSUyMDUzMy40MiUyMDE1OC4zMyUyMDY5MS4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0E5QzlENSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjA1MzMuNDIlMjAwLjc5JTIwODQ4LjcyJTIwMTU4LjMzJTIwNjkxLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyODA2LjQ2JTIwMTE0MC44OSUyMDU0Ni45NCUyMDg4MS4yOCUyMDQ0Ny41MiUyMDk4MC43JTIwNzA2LjkzJTIw''@;'; put 'put ''MTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhGQzRERiUyMiUyMHBvaW50cyUzRCUyMjQ0Ny41MiUyMDk4MC43JTIwMC43OSUyMDE0MjcuNDMl''@;'; put 'put ''MjAwLjc5JTIwMTQ0My42MyUyMDUwMy43NyUyMDE0NDMuNjMlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzBDMERDJTIy''@;'; put 'put ''JTIwcG9pbnRzJTNEJTIyNjA4LjIzJTIwODE5Ljk5JTIwNTQ2Ljk0JTIwODgxLjI4JTIwODA2LjQ2JTIwMTE0MC44OSUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nw''@;'; put 'put ''b2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjQyMC4wNSUyMDQyOS4zOSUyMDMxOS4wMSUyMDUzMC40NSUyMDYwOC4yMyUyMDgxOS45OSUyMDcwOS4zJTIwNzE4LjkxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjlBRkQ0JTIyJTIwcG9pbnRzJTNEJTIyNzA5LjMlMjA3MTguOTElMjA2MDguMjMlMjA4MTkuOTklMjA4NjcuNjQlMjAxMDc5LjclMjA5NjguNzQlMjA5NzguNiUyMiUzRSUzQyUyRnBvbHlnb24lM0Ul''@;'; put 'put ''MEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhFQjVCQyUyMiUyMHBvaW50cyUzRCUyMjYxOS41OSUyMDIyOS44MiUyMDM5My40MiUyMDMuMTIlMjAzMjcuMjclMjAzLjEyJTIwMTYwLjY1JTIwMTY5''@;'; put 'put ''Ljc0JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEVCNUJDJTIyJTIwcG9pbnRzJTNEJTIyMzE5LjAxJTIwNTMwLjQ1JTIw''@;'; put 'put ''MzE5LjAxJTIwNTMwLjQ1JTIwOTAuMjclMjAzMDEuNDYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3Q0IwQzclMjIlMjBwb2ludHMlM0QlMjIxNjAuNjUl''@;'; put 'put ''MjAxNjkuNzQlMjA1OS42MiUyMDI3MC43NyUyMDkwLjI3JTIwMzAxLjQ2JTIwMzE5LjAxJTIwNTMwLjQ1JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24l''@;'; put 'put ''MjBmaWxsJTNEJTIyJTIzODRDNEQyJTIyJTIwcG9pbnRzJTNEJTIyNTkuNjIlMjAyNzAuNzclMjAwLjc5JTIwMzI5LjYlMjAwLjc5JTIwMzM0LjQ5JTIwMjU3LjcxJTIwNTkxLjc1JTIwMzE5LjAxJTIwNTMwLjQ1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0NCMEM3JTIyJTIwcG9pbnRzJTNEJTIyNTM3LjU1JTIwMy4xMiUyMDM5My40MiUyMDMuMTIlMjA2MTkuNTklMjAyMjkuODIlMjA2OTEuNzQlMjAxNTcuNjYlMjIlM0UlM0MlMkZwb2x5Z29u''@;'; put 'put ''JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4N0QxREIlMjIlMjBwb2ludHMlM0QlMjI4NDYuMjUlMjAzLjEyJTIwNTM3LjU1JTIwMy4xMiUyMDY5MS43NCUyMDE1Ny42NiUyMiUzRSUzQyUy''@;'; put 'put ''RnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjkwOS44NyUyMDE0NDMuNjMlMjA4NTAuMTklMjAxMzgzLjg3JTIwNzkwLjQzJTIwMTQ0''@;'; put 'put ''My42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjMxOS4wMSUyMDUzMC40NSUyMDI1Ny43MSUyMDU5MS43NSUy''@;'; put 'put ''MDQ0My40NCUyMDc3Ny43NCUyMDU0Ni45NCUyMDg4MS4yOCUyMDYwOC4yMyUyMDgxOS45OSUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjg2Ny42NCUyMDEwNzkuNyUyMDgwNi40NiUyMDExNDAuODklMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwNjUuNTclMjAxMDc1LjUyJTIwOTY4Ljc0JTIwOTc4LjYlMjA4NjcuNjQlMjAxMDc5LjclMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJG''@;'; put 'put ''cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzku''@;'; put 'put ''NyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUy''@;'; put 'put ''MDEyMzEuMTYlMjAxNDQzLjYzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIx''@;'; put 'put ''MjQwLjA4JTIwNzA3LjIyJTIwMTE2Ny45JTIwNzc5LjQlMjAxMjY0LjY4JTIwODc2LjQlMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTI0MC4wOCUyMDcwNy4yMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjk4MC44MyUyMDQ0Ny4zOSUyMDY5MS43NCUyMDE1Ny42NiUyMDYxOS41OSUyMDIyOS44MiUyMDkwOC42NiUyMDUxOS41NiUyMDk4MC44MyUyMDQ0Ny4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjcwOS4zJTIwNzE4LjkxJTIwOTY4Ljc0JTIwOTc4LjYlMjAxMTY3LjkxJTIwNzc5LjQlMjA5MDguNjYlMjA1MTkuNTUl''@;'; put 'put ''MjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2OUFGRDQlMjIlMjBwb2ludHMlM0QlMjI5ODAuODMlMjA0NDcuMzklMjA5MDguNjYlMjA1MTkuNTUlMjAxMTY3''@;'; put 'put ''LjkxJTIwNzc5LjQlMjAxMjQwLjA4JTIwNzA3LjIxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTAzNC41OSUy''@;'; put 'put ''MDMuMTIlMjA4NDYuMjUlMjAzLjEyJTIwNjkxLjc0JTIwMTU3LjY2JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTIyOS43NSUyMDE5OC40NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIw''@;'; put 'put ''ZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEyNDAuMDglMjA3MDcuMjElMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTU4Ni4wMSUyMDU1NS4wOCUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3MEMwREMlMjIlMjBwb2ludHMlM0QlMjIxMjI5Ljc1JTIwMTk4LjQ3JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTI0MC4wOCUyMDcwNy4yMSUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNF''@;'; put 'put ''JTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxMjkyLjIyJTIwMTMwMi4zOCUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAx''@;'; put 'put ''NDkxLjE4JTIwMTEwMy40MiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwOTQ5''@;'; put 'put ''Ljc4JTIwMTI4NC4yNyUyMDExMDkuMDglMjAxNDQzLjYzJTIwMTE1MC45OCUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzc1QjhDNSUyMiUyMHBvaW50cyUzRCUyMjExNTAuOTglMjAxNDQzLjYzJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEyOTIuMjIlMjAxMzAyLjM4JTIwMTExMi4wMyUyMDExMjIuMDIlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNkVBNEJDJTIyJTIwcG9pbnRzJTNEJTIyMTE5MS4wOSUyMDE0MDMuNTElMjAxMjMxLjE2JTIwMTQ0My42MyUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTI5Mi4yMiUyMDEzMDIu''@;'; put 'put ''MzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUz''@;'; put 'put ''QSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTM4My4zJTIwODUwLjc1JTIwMTMxMS4xMiUyMDkyMi45NCUyMDE0OTEuMTglMjAxMTAzLjQyJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxNDkxLjE4JTIwMTEwMy40MiUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24l''@;'; put 'put ''M0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzZFQTRCQyUyMiUyMHBvaW50cyUzRCUyMjE0OTEuMTglMjAxMTAzLjQyJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUy''@;'; put 'put ''MDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTgxMi42NSUyMDc4MS45NSUyMDE2''@;'; put 'put ''MzIuNDYlMjA2MDEuNTklMjAxMzgzLjMlMjA4NTAuNzUlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUy''@;'; put 'put ''MHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzc4Q0FENCUyMiUyMHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45''@;'; put 'put ''NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjgwMy43NCUyMDEzMzcuMzYlMjA4NTAuMTklMjAxMzgzLjg3JTIw''@;'; put 'put ''OTQ5Ljc4JTIwMTI4NC4yNyUyMDkwMy4zMSUyMDEyMzcuNzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxMDY1''@;'; put 'put ''LjU3JTIwMTA3NS41MiUyMDExMTIuMDMlMjAxMTIyLjAyJTIwMTMxMS4xMiUyMDkyMi45NCUyMDEyNjQuNjklMjA4NzYuNCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUz''@;'; put 'put ''RCUyMiUyMzc3QjhEOSUyMiUyMHBvaW50cyUzRCUyMjY5Ny40NyUyMDE0NDMuNjMlMjA3OTAuNDMlMjAxNDQzLjYzJTIwODUwLjE5JTIwMTM4My44NyUyMDgwMy43NCUyMDEzMzcuMzYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwOTAzLjMxJTIwMTIzNy43OCUyMDk0OS43OCUyMDEyODQuMjclMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzVEQjVENiUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDEwMTAuOTIl''@;'; put 'put ''MjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTAzOC4yNDcyOTclMkMlMjAx''@;'; put 'put ''MTQ5LjI3NTQyOSUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTAzOC4yNDcyOTclMkMlMjAtMTE0OS4yNzU0MjklMjklMjAlMjIlMjB4JTNEJTIyOTY2Ljc1MjI5NyUyMiUyMHklM0QlMjIxMTE2LjQxMDQzJTIyJTIwd2lkdGglM0QlMjIxNDIuOTklMjIlMjBo''@;'; put 'put ''ZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEwMzguMjQ3Mjk3JTJD''@;'; put 'put ''JTIwMTE0OS4yNzU0MjklMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEwMzguMjQ3Mjk3JTJDJTIwLTExNDkuMjc1NDI5JTI5JTIwJTIyJTIweCUzRCUyMjk2Ni43NTIyOTclMjIlMjB5JTNEJTIyMTExNi40MTA0MyUyMiUyMHdpZHRoJTNEJTIyMTQyLjk5JTIy''@;'; put 'put ''JTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEw''@;'; put 'put ''MTAuOTIlMjAxMjIzLjEzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDAwMDAlMjIl''@;'; put 'put ''MjBvcGFjaXR5JTNEJTIyMC40MiUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjA5NjQuNDYlMjAxMTc2LjYzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTI2''@;'; put 'put ''NC42OSUyMDg3Ni40JTIwMTMxMS4xMiUyMDkyMi45NCUyMDEzODMuMyUyMDg1MC43NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHBv''@;'; put 'put ''aW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMjY0LjY5JTIwODc2LjQlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTM4My4zJTIwODUwLjc1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzOTNEOENBJTIyJTIwb3BhY2l0eSUzRCUyMjAuNiUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBvdmVybGF5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEzODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTkl''@;'; put 'put ''MjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNURCNUQ2JTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEz''@;'; put 'put ''ODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZEM0U2JTIyJTIw''@;'; put 'put ''cG9pbnRzJTNEJTIyMjA1NiUyMDAuMTIlMjAxNjQ1LjQ5JTIwMC4xMiUyMDE2NDguNDklMjAzLjEyJTIwMTk0NC4wNyUyMDMuMTIlMjAxNzk2LjIyJTIwMTUwLjk5JTIwMTg5My4xMiUyMDI0Ny45NyUyMDIwNTQuNDUlMjA4Ni42NCUyMDIwNTQuNDUlMjAxNzkuNiUyMDE5MzkuNTglMjAyOTQu''@;'; put 'put ''NDclMjAyMDU2JTIwNDExJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0FCOUQ5JTIyJTIwcG9pbnRzJTNEJTIyMTY0OC40OSUyMDMuMTIlMjAxNzk2LjIy''@;'; put 'put ''JTIwMTUwLjk5JTIwMTk0NC4wNyUyMDMuMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2NkFFRDQlMjIlMjBwb2ludHMlM0QlMjIyMDU0LjQ1JTIwODYu''@;'; put 'put ''NjQlMjAxODkzLjEyJTIwMjQ3Ljk3JTIwMTkzOS41OCUyMDI5NC40NyUyMDIwNTQuNDUlMjAxNzkuNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VE''@;'; put 'put ''MiUyMiUyMHBvaW50cyUzRCUyMjE4ODQuODIlMjA3MDkuNzglMjAyMDU0LjQ1JTIwODc5LjU3JTIwMjA1NC40NSUyMDU0MC4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjE0ODkuMTQlMjA0NTguMTIlMjAxNDg5LjE0JTIwNDU4LjEyJTIwMTM3MS4xMyUyMDMzOS45OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjE3OTYuMjIlMjAxNTAuOTklMjAxNjQ4LjQ5JTIwMy4xMiUyMDE0MjUuMSUyMDMuMTIlMjAxMzAxLjkxJTIwMTI2LjMxJTIwMTU2MS4zJTIwMzg1Ljk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc5OC45NTQwNjYlMkMlMjAzODguNzk4NzgxJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUy''@;'; put 'put ''MHRyYW5zbGF0ZSUyOC0xNzk4Ljk1NDA2NiUyQyUyMC0zODguNzk4NzgxJTI5JTIwJTIyJTIweCUzRCUyMjE2MzIuODI0MDclMjIlMjB5JTNEJTIyMzU1LjkzMzc4MSUyMiUyMHdpZHRoJTNEJTIyMzMyLjI2JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBB''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxNTg2LjAxJTIwNTU1LjA4JTIwMTYzMi40NiUyMDYwMS41OSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIw''@;'; put 'put ''NTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTU3My43MTE1NzclMkMlMjA0NzAu''@;'; put 'put ''NjIwMjYzJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNTczLjcxMTU3NyUyQyUyMC00NzAuNjIwMjYzJTI5JTIwJTIyJTIweCUzRCUyMjE1MjIuNjgxNTglMjIlMjB5JTNEJTIyNDAyLjA4NTI2MyUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0''@;'; put 'put ''JTNEJTIyMTM3LjA3JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc1OC42NzY3NTglMkMlMjA2''@;'; put 'put ''NTUuNzY3MTIwJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNzU4LjY3Njc1OCUyQyUyMC02NTUuNzY3MTIwJTI5JTIwJTIyJTIweCUzRCUyMjE3MDcuNjQ2NzYlMjIlMjB5JTNEJTIyNTI4LjI5MjEyJTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWln''@;'; put 'put ''aHQlM0QlMjIyNTQuOTUlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjBwb2ludHMlM0QlMjIxMzAxLjkxJTIwMTI2LjMxJTIwMTE3OC44NCUy''@;'; put 'put ''MDMuMTIlMjAxMDM0LjU5JTIwMy4xMiUyMDEyMjkuNzUlMjAxOTguNDclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4M0MwQzglMjIlMjBwb2ludHMlM0Ql''@;'; put 'put ''MjIxODEyLjY1JTIwNzgxLjk1JTIwMjA1NC40NSUyMDEwMjMuOTklMjAyMDU0LjQ1JTIwODc5LjU3JTIwMTg4NC44MiUyMDcwOS43OCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzdEQzZEQyUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEzOTUuNTE2OTAxJTJDJTIwMjkyLjIwNjUxOSUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTM5NS41MTY5MDElMkMlMjAtMjkyLjIwNjUxOSUyOSUyMCUyMiUyMHglM0Ql''@;'; put 'put ''MjIxMzQ0LjQ5MTklMjIlMjB5JTNEJTIyMTA4LjcwMTUxOSUyMiUyMHdpZHRoJTNEJTIyMTAyLjA1JTIyJTIwaGVpZ2h0JTNEJTIyMzY3LjAxJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBm''@;'; put 'put ''aWxsJTNEJTIyJTIzNjhCOEQ1JTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTY0NS4zMTM2MTklMkMlMjA1NDIuMjQ5NzYwJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNjQ1LjMxMzYxOSUyQyUyMC01NDIuMjQ5NzYwJTI5JTIwJTIyJTIweCUz''@;'; put 'put ''RCUyMjE1OTQuMjgzNjIlMjIlMjB5JTNEJTIyNTA5LjM4NDc2JTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODAuMDAwMDAwJTJDJTIwMy4wMDAwMDAlMjklMjIlMjBzdHJva2UlM0QlMjIlMjMwMDAwMDAlMjIlMjBvcGFjaXR5JTNEJTIyMC4xNSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTAuOTUlMkMwLjEyJTIwTDAuOTUlMkM4NDAuMTIlMjIlMjBpZCUzRCUyMlNoYXBlJTIyJTNFJTNDJTJGcGF0aCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUy''@;'; put 'put ''RmclM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUzQyUyRnN2ZyUzRSk7LS1jbHItbG9naW4tZXJyb3ItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItbG9n''@;'; put 'put ''aW4tZXJyb3ItYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItbG9naW4tcGFuZWwtbGluZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1sb2dpbi1wYW5lbC1saW5lLW9wYWNpdHk6LjF9LmxvZ2luLXdyYXBwZXJ7ZGlz''@;'; put 'put ''cGxheTpmbGV4O2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIydXRmLTglMjIlM0YlM0UlMEQlMEElM0MlMjFET0NUWVBFJTIwc3ZnJTIwUFVCTElD''@;'; put 'put ''JTIwJTIyLSUyRiUyRlczQyUyRiUyRkRURCUyMFNWRyUyMDEuMSUyRiUyRkVOJTIyJTIwJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkZHcmFwaGljcyUyRlNWRyUyRjEuMSUyRkRURCUyRnN2ZzExLmR0ZCUyMiUzRSUwRCUwQSUzQ3N2ZyUwRCUwQSUyMCUyMCUyMCUyMCUyMHZlcnNpb24l''@;'; put 'put ''M0QlMjIxLjElMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBpZCUzRCUyMm5vLWFzcGVjdC1yYXRpbyUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweG1sbnMlM0F4bGluayUz''@;'; put 'put ''RCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweCUzRCUyMjBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHklM0QlMjIwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBoZWlnaHQlM0QlMjIyMDU1LjU1cHglMjIlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjB3aWR0aCUzRCUyMjE0NDBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDIwNTUuNTUlMjAxNDQwJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaW5ZTWluJTIwc2xpY2UlMjIlM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NkZXNjJTNFTG9naW4lMjBJbWFnZSUzQyUyRmRlc2MlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwc3Ryb2tlJTNEJTIybm9uZSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBm''@;'; put 'put ''aWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgwLjAwMDAwMCUyQyUyMC00LjAwMDAwMCUyOSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNGQUZBRkElMjIlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjI0JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjExMDguNDMlMjAxNDQzLjYzJTIwMTEwOS4wOCUyMDE0NDMuNjMlMjA0NDMuNDQlMjA3NzcuNzQlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5M0Q4Q0El''@;'; put 'put ''MjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG92ZXJsYXklM0IlMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwMzM0LjkyJTIwNDQzLjQ0JTIwNzc3Ljc0JTIwMC43OSUyMDMzNC40OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjAyMTEuODglMjAwLjc5JTIwMzI5LjYlMjA1OS42MiUyMDI3MC43NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjE2MC42NSUyMDE2OS43NCUyMDAuNzklMjA5LjczJTIwMC43OSUyMDIxMS44OCUyMDkwLjI3JTIwMzAxLjQ2JTIw''@;'; put 'put ''NTkuNjIlMjAyNzAuNzclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2ludHMlM0QlMjI1MDMuNzclMjAxNDQzLjYzJTIwNjk3LjQ3''@;'; put 'put ''JTIwMTQ0My42MyUyMDgwMy43NCUyMDEzMzcuMzYlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9p''@;'; put 'put ''bnRzJTNEJTIyMTU4LjMzJTIwNjkxLjE1JTIwMC43OSUyMDg0OC43MiUyMDAuNzklMjAxNDI3LjQzJTIwNDQ3LjUyJTIwOTgwLjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZp''@;'; put 'put ''bGwlM0QlMjIlMjNDRURERTAlMjIlMjBwb2ludHMlM0QlMjIyNTcuNzElMjA1OTEuNzUlMjAwLjc5JTIwMzM0LjQ5JTIwMC43OSUyMDUzMy40MiUyMDE1OC4zMyUyMDY5MS4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0E5QzlENSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjA1MzMuNDIlMjAwLjc5JTIwODQ4LjcyJTIwMTU4LjMzJTIwNjkxLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyODA2LjQ2JTIwMTE0MC44OSUyMDU0Ni45NCUyMDg4MS4yOCUyMDQ0Ny41MiUyMDk4MC43JTIwNzA2LjkzJTIwMTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhGQzRERiUyMiUyMHBvaW50cyUzRCUyMjQ0Ny41MiUyMDk4MC43JTIwMC43OSUyMDE0MjcuNDMlMjAwLjc5JTIwMTQ0My42MyUyMDUwMy43NyUyMDE0NDMu''@;'; put 'put ''NjMlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzBDMERDJTIyJTIwcG9pbnRzJTNEJTIyNjA4LjIzJTIwODE5Ljk5JTIw''@;'; put 'put ''NTQ2Ljk0JTIwODgxLjI4JTIwODA2LjQ2JTIwMTE0MC44OSUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUy''@;'; put 'put ''MHBvaW50cyUzRCUyMjQyMC4wNSUyMDQyOS4zOSUyMDMxOS4wMSUyMDUzMC40NSUyMDYwOC4yMyUyMDgxOS45OSUyMDcwOS4zJTIwNzE4LjkxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzNjlBRkQ0JTIyJTIwcG9pbnRzJTNEJTIyNzA5LjMlMjA3MTguOTElMjA2MDguMjMlMjA4MTkuOTklMjA4NjcuNjQlMjAxMDc5LjclMjA5NjguNzQlMjA5NzguNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhFQjVCQyUyMiUyMHBvaW50cyUzRCUyMjYxOS41OSUyMDIyOS44MiUyMDM5My40MiUyMDMuMTIlMjAzMjcuMjclMjAzLjEyJTIwMTYwLjY1JTIwMTY5Ljc0JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJG''@;'; put 'put ''cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEVCNUJDJTIyJTIwcG9pbnRzJTNEJTIyMzE5LjAxJTIwNTMwLjQ1JTIwMzE5LjAxJTIwNTMwLjQ1JTIwOTAuMjclMjAzMDEuNDYl''@;'; put 'put ''MjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3Q0IwQzclMjIlMjBwb2ludHMlM0QlMjIxNjAuNjUlMjAxNjkuNzQlMjA1OS42MiUyMDI3MC43NyUyMDkwLjI3''@;'; put 'put ''JTIwMzAxLjQ2JTIwMzE5LjAxJTIwNTMwLjQ1JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzODRDNEQyJTIyJTIwcG9pbnRz''@;'; put 'put ''JTNEJTIyNTkuNjIlMjAyNzAuNzclMjAwLjc5JTIwMzI5LjYlMjAwLjc5JTIwMzM0LjQ5JTIwMjU3LjcxJTIwNTkxLjc1JTIwMzE5LjAxJTIwNTMwLjQ1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUz''@;'; put 'put ''Q3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0NCMEM3JTIyJTIwcG9pbnRzJTNEJTIyNTM3LjU1JTIwMy4xMiUyMDM5My40MiUyMDMuMTIlMjA2MTkuNTklMjAyMjkuODIlMjA2OTEuNzQlMjAxNTcuNjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4N0QxREIlMjIlMjBwb2ludHMlM0QlMjI4NDYuMjUlMjAzLjEyJTIwNTM3LjU1JTIwMy4xMiUyMDY5MS43NCUyMDE1Ny42NiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjkwOS44NyUyMDE0NDMuNjMlMjA4NTAuMTklMjAxMzgzLjg3JTIwNzkwLjQzJTIwMTQ0My42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjMxOS4wMSUyMDUzMC40NSUyMDI1Ny43MSUyMDU5MS43NSUyMDQ0My40NCUyMDc3Ny43NCUyMDU0Ni45NCUyMDg4MS4y''@;'; put 'put ''OCUyMDYwOC4yMyUyMDgxOS45OSUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUy''@;'; put 'put ''MiUyMHBvaW50cyUzRCUyMjg2Ny42NCUyMDEwNzkuNyUyMDgwNi40NiUyMDExNDAuODklMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwNjUuNTclMjAxMDc1LjUyJTIwOTY4Ljc0JTIwOTc4LjYlMjA4NjcuNjQlMjAxMDc5LjclMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzkuNyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZw''@;'; put 'put ''b2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEyMzEuMTYlMjAxNDQzLjYzJTIwMTAxMC45MiUyMDEy''@;'; put 'put ''MjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMjQwLjA4JTIwNzA3LjIyJTIwMTE2Ny45JTIwNzc5LjQl''@;'; put 'put ''MjAxMjY0LjY4JTIwODc2LjQlMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTI0MC4wOCUyMDcwNy4yMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUy''@;'; put 'put ''MiUyMHBvaW50cyUzRCUyMjk4MC44MyUyMDQ0Ny4zOSUyMDY5MS43NCUyMDE1Ny42NiUyMDYxOS41OSUyMDIyOS44MiUyMDkwOC42NiUyMDUxOS41NiUyMDk4MC44MyUyMDQ0Ny4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjcwOS4zJTIwNzE4LjkxJTIwOTY4Ljc0JTIwOTc4LjYlMjAxMTY3LjkxJTIwNzc5LjQlMjA5MDguNjYlMjA1MTkuNTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2OUFGRDQlMjIlMjBwb2ludHMlM0QlMjI5ODAuODMlMjA0NDcuMzklMjA5MDguNjYlMjA1MTkuNTUlMjAxMTY3LjkxJTIwNzc5LjQlMjAxMjQwLjA4JTIwNzA3LjIxJTIy''@;'; put 'put ''JTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTAzNC41OSUyMDMuMTIlMjA4NDYuMjUlMjAzLjEyJTIwNjkxLjc0JTIw''@;'; put 'put ''MTU3LjY2JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTIyOS43NSUyMDE5OC40NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUz''@;'; put 'put ''RCUyMjEyNDAuMDglMjA3MDcuMjElMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTU4Ni4wMSUyMDU1NS4wOCUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUy''@;'; put 'put ''MGZpbGwlM0QlMjIlMjM3MEMwREMlMjIlMjBwb2ludHMlM0QlMjIxMjI5Ljc1JTIwMTk4LjQ3JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTI0MC4wOCUyMDcwNy4yMSUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxMjkyLjIyJTIwMTMwMi4zOCUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxNDkxLjE4JTIwMTEwMy40MiUyMiUzRSUzQyUyRnBvbHln''@;'; put 'put ''b24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDExMDkuMDglMjAxNDQzLjYz''@;'; put 'put ''JTIwMTE1MC45OCUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzc1QjhDNSUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjExNTAuOTglMjAxNDQzLjYzJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdE''@;'; put 'put ''RiUyMiUyMHBvaW50cyUzRCUyMjEyOTIuMjIlMjAxMzAyLjM4JTIwMTExMi4wMyUyMDExMjIuMDIlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNkVBNEJDJTIyJTIwcG9pbnRzJTNEJTIyMTE5MS4wOSUyMDE0MDMuNTElMjAxMjMxLjE2JTIwMTQ0My42MyUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTI5Mi4yMiUyMDEzMDIuMzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIy''@;'; put 'put ''MTM4My4zJTIwODUwLjc1JTIwMTMxMS4xMiUyMDkyMi45NCUyMDE0OTEuMTglMjAxMTAzLjQyJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZp''@;'; put 'put ''bGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxNDkxLjE4JTIwMTEwMy40MiUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzZFQTRCQyUyMiUyMHBvaW50cyUzRCUyMjE0OTEuMTglMjAxMTAzLjQyJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9s''@;'; put 'put ''eWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTgxMi42NSUyMDc4MS45NSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxMzgzLjMlMjA4NTAuNzUl''@;'; put 'put ''MjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIw''@;'; put 'put ''MTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIw''@;'; put 'put ''ZmlsbCUzRCUyMiUyMzc4Q0FENCUyMiUyMHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjgwMy43NCUyMDEzMzcuMzYlMjA4NTAuMTklMjAxMzgzLjg3JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDkwMy4zMSUyMDEyMzcu''@;'; put 'put ''NzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxMDY1LjU3JTIwMTA3NS41MiUyMDExMTIuMDMlMjAxMTIyLjAy''@;'; put 'put ''JTIwMTMxMS4xMiUyMDkyMi45NCUyMDEyNjQuNjklMjA4NzYuNCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzc3QjhEOSUyMiUyMHBvaW50cyUzRCUyMjY5''@;'; put 'put ''Ny40NyUyMDE0NDMuNjMlMjA3OTAuNDMlMjAxNDQzLjYzJTIwODUwLjE5JTIwMTM4My44NyUyMDgwMy43NCUyMDEzMzcuMzYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwl''@;'; put 'put ''M0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwOTAzLjMxJTIwMTIzNy43OCUyMDk0OS43OCUyMDEyODQuMjclMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzVEQjVENiUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTAzOC4yNDcyOTclMkMlMjAxMTQ5LjI3NTQyOSUyOSUyMHJvdGF0ZSUyOC00NC45NzAw''@;'; put 'put ''MDAlMjklMjB0cmFuc2xhdGUlMjgtMTAzOC4yNDcyOTclMkMlMjAtMTE0OS4yNzU0MjklMjklMjAlMjIlMjB4JTNEJTIyOTY2Ljc1MjI5NyUyMiUyMHklM0QlMjIxMTE2LjQxMDQzJTIyJTIwd2lkdGglM0QlMjIxNDIuOTklMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3Ql''@;'; put 'put ''M0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEwMzguMjQ3Mjk3JTJDJTIwMTE0OS4yNzU0MjklMjklMjByb3RhdGUlMjgtNDQu''@;'; put 'put ''OTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEwMzguMjQ3Mjk3JTJDJTIwLTExNDkuMjc1NDI5JTI5JTIwJTIyJTIweCUzRCUyMjk2Ni43NTIyOTclMjIlMjB5JTNEJTIyMTExNi40MTA0MyUyMiUyMHdpZHRoJTNEJTIyMTQyLjk5JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZy''@;'; put 'put ''ZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIwOTY0LjQ2JTIwMTE3Ni42''@;'; put 'put ''MyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDAwMDAlMjIlMjBvcGFjaXR5JTNEJTIyMC40MiUyMiUyMHBvaW50cyUz''@;'; put 'put ''RCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjA5NjQuNDYlMjAxMTc2LjYzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29u''@;'; put 'put ''JTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTI2NC42OSUyMDg3Ni40JTIwMTMxMS4xMiUyMDkyMi45NCUy''@;'; put 'put ''MDEzODMuMyUyMDg1MC43NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMjY0''@;'; put 'put ''LjY5JTIwODc2LjQlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTM4My4zJTIwODUwLjc1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTNEOENBJTIyJTIwb3Bh''@;'; put 'put ''Y2l0eSUzRCUyMjAuNiUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBvdmVybGF5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEzODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9s''@;'; put 'put ''eWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNURCNUQ2JTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEzODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTkl''@;'; put 'put ''MjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZEM0U2JTIyJTIwcG9pbnRzJTNEJTIyMjA1NiUyMDAuMTIlMjAxNjQ1LjQ5''@;'; put 'put ''JTIwMC4xMiUyMDE2NDguNDklMjAzLjEyJTIwMTk0NC4wNyUyMDMuMTIlMjAxNzk2LjIyJTIwMTUwLjk5JTIwMTg5My4xMiUyMDI0Ny45NyUyMDIwNTQuNDUlMjA4Ni42NCUyMDIwNTQuNDUlMjAxNzkuNiUyMDE5MzkuNTglMjAyOTQuNDclMjAyMDU2JTIwNDExJTIyJTNFJTNDJTJGcG9seWdv''@;'; put 'put ''biUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0FCOUQ5JTIyJTIwcG9pbnRzJTNEJTIyMTY0OC40OSUyMDMuMTIlMjAxNzk2LjIyJTIwMTUwLjk5JTIwMTk0NC4wNyUyMDMuMTIlMjIlM0Ul''@;'; put 'put ''M0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2NkFFRDQlMjIlMjBwb2ludHMlM0QlMjIyMDU0LjQ1JTIwODYuNjQlMjAxODkzLjEyJTIwMjQ3Ljk3JTIwMTkzOS41OCUy''@;'; put 'put ''MDI5NC40NyUyMDIwNTQuNDUlMjAxNzkuNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjE4ODQuODIlMjA3MDku''@;'; put 'put ''NzglMjAyMDU0LjQ1JTIwODc5LjU3JTIwMjA1NC40NSUyMDU0MC4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjE0ODkuMTQlMjA0NTguMTIlMjAxNDg5LjE0JTIwNDU4LjEyJTIwMTM3MS4xMyUyMDMzOS45OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUy''@;'; put 'put ''MiUyMHBvaW50cyUzRCUyMjE3OTYuMjIlMjAxNTAuOTklMjAxNjQ4LjQ5JTIwMy4xMiUyMDE0MjUuMSUyMDMuMTIlMjAxMzAxLjkxJTIwMTI2LjMxJTIwMTU2MS4zJTIwMzg1Ljk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc5OC45NTQwNjYlMkMlMjAzODguNzk4NzgxJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNzk4Ljk1NDA2NiUyQyUyMC0z''@;'; put 'put ''ODguNzk4NzgxJTI5JTIwJTIyJTIweCUzRCUyMjE2MzIuODI0MDclMjIlMjB5JTNEJTIyMzU1LjkzMzc4MSUyMiUyMHdpZHRoJTNEJTIyMzMyLjI2JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxNTg2LjAxJTIwNTU1LjA4JTIwMTYzMi40NiUyMDYwMS41OSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTU3My43MTE1NzclMkMlMjA0NzAuNjIwMjYzJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUy''@;'; put 'put ''OSUyMHRyYW5zbGF0ZSUyOC0xNTczLjcxMTU3NyUyQyUyMC00NzAuNjIwMjYzJTI5JTIwJTIyJTIweCUzRCUyMjE1MjIuNjgxNTglMjIlMjB5JTNEJTIyNDAyLjA4NTI2MyUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0JTNEJTIyMTM3LjA3JTIyJTNFJTNDJTJGcmVjdCUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc1OC42NzY3NTglMkMlMjA2NTUuNzY3MTIwJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAw''@;'; put 'put ''MCUyOSUyMHRyYW5zbGF0ZSUyOC0xNzU4LjY3Njc1OCUyQyUyMC02NTUuNzY3MTIwJTI5JTIwJTIyJTIweCUzRCUyMjE3MDcuNjQ2NzYlMjIlMjB5JTNEJTIyNTI4LjI5MjEyJTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjIyNTQuOTUlMjIlM0UlM0MlMkZyZWN0JTNF''@;'; put 'put ''JTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjBwb2ludHMlM0QlMjIxMzAxLjkxJTIwMTI2LjMxJTIwMTE3OC44NCUyMDMuMTIlMjAxMDM0LjU5JTIwMy4xMiUyMDEyMjkuNzUl''@;'; put 'put ''MjAxOTguNDclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4M0MwQzglMjIlMjBwb2ludHMlM0QlMjIxODEyLjY1JTIwNzgxLjk1JTIwMjA1NC40NSUyMDEw''@;'; put 'put ''MjMuOTklMjAyMDU0LjQ1JTIwODc5LjU3JTIwMTg4NC44MiUyMDcwOS43OCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzdEQzZEQyUyMiUyMHRyYW5zZm9ybSUz''@;'; put 'put ''RCUyMnRyYW5zbGF0ZSUyODEzOTUuNTE2OTAxJTJDJTIwMjkyLjIwNjUxOSUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTM5NS41MTY5MDElMkMlMjAtMjkyLjIwNjUxOSUyOSUyMCUyMiUyMHglM0QlMjIxMzQ0LjQ5MTklMjIlMjB5JTNEJTIyMTA4LjcwMTUx''@;'; put 'put ''OSUyMiUyMHdpZHRoJTNEJTIyMTAyLjA1JTIyJTIwaGVpZ2h0JTNEJTIyMzY3LjAxJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjhCOEQ1JTIyJTIwdHJhbnNmb3Jt''@;'; put 'put ''JTNEJTIydHJhbnNsYXRlJTI4MTY0NS4zMTM2MTklMkMlMjA1NDIuMjQ5NzYwJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNjQ1LjMxMzYxOSUyQyUyMC01NDIuMjQ5NzYwJTI5JTIwJTIyJTIweCUzRCUyMjE1OTQuMjgzNjIlMjIlMjB5JTNEJTIyNTA5LjM4''@;'; put 'put ''NDc2JTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''ZyUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODAuMDAwMDAwJTJDJTIwMy4wMDAwMDAlMjklMjIlMjBzdHJva2UlM0QlMjIlMjMwMDAwMDAlMjIlMjBvcGFjaXR5JTNEJTIyMC4xNSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUzQ3BhdGglMjBkJTNEJTIyTTAuOTUlMkMwLjEyJTIwTDAuOTUlMkM4NDAuMTIlMjIlMjBpZCUzRCUyMlNoYXBlJTIyJTNFJTNDJTJGcGF0aCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUzQyUyRnN2ZyUzRSk7YmFja2dyb3VuZC1zaXplOjEwMCU7YmFja2dyb3VuZC1wb3NpdGlvbjoyNS4ycmVtIDA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5sb2dpbi13cmFwcGVyIC5sb2dpbntiYWNr''@;'; put 'put ''Z3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvciwgI2ZhZmFmYSk7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MS4ycmVtIDNyZW07''@;'; put 'put ''aGVpZ2h0OmF1dG87bWluLWhlaWdodDoxMDB2aDt3aWR0aDoyNS4ycmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbG9naW4tdGl0bGUtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWxv''@;'; put 'put ''Z2luLXRpdGxlLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItbG9naW4tdGl0bGUtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4''@;'; put 'put ''dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MS42cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjhyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50aXRsZSAud2VsY29tZXtsaW5lLWhlaWdodDoxLjhyZW19LmxvZ2luLXdy''@;'; put 'put ''YXBwZXIgLmxvZ2luIC50aXRsZSAuaGludHtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1sb2dpbi10aXRsZS1jb2xvciwgYmxhY2spO21hcmdpbi10b3A6MS41cmVtO2ZvbnQtc2l6ZTouN3JlbX0ubG9naW4td3JhcHBlciAubG9naW4gLnRyYWRlbWFya3tjb2xvcjojMDAwO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1sb2dpbi10cmFkZW1hcmstY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXdlaWdodCwgMjAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFs''@;'; put 'put ''LHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjRyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFs''@;'; put 'put ''fS5sb2dpbi13cmFwcGVyIC5sb2dpbiAuc3VidGl0bGV7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1sb2dpbi1zdWJ0aXRsZS1mb250LXdlaWdodCwgMjAwKTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1sb2dpbi1zdWJ0aXRsZS1jb2xvciwgYmxhY2spO2ZvbnQt''@;'; put 'put ''ZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItbG9naW4tc3VidGl0bGUtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBz''@;'; put 'put ''YW5zLXNlcmlmKTtmb250LXNpemU6MS4xcmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjhyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6Mi40cmVtIDAgMH0ubG9naW4t''@;'; put 'put ''d3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5hdXRoLXNvdXJjZSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC51c2VybmFtZSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5wYXNzd29yZCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3Vw''@;'; put 'put ''IC5jaGVja2JveCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItZm9ybS1jb250cm9sLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jaGVja2JveC13cmFwcGVye21hcmdpbjouM3JlbSAwIC45cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAu''@;'; put 'put ''bG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXIsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dp''@;'; put 'put ''bi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0e3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcj4uY2xyLWlucHV0e3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBw''@;'; put 'put ''ZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dC1n''@;'; put 'put ''cm91cHttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6LjQ4cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dC1ncm91cD4uY2xyLWlucHV0e3dpZHRoOmNh''@;'; put 'put ''bGMoMTAwJSAtIDEuMnJlbSl9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9ue21hcmdpbi10b3A6LjNyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9uIC51c2VybmFtZSwubG9naW4td3Jh''@;'; put 'put ''cHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC50b29sdGlwLXZhbGlkYXRpb24gLnBhc3N3b3Jke3dpZHRoOjEwMCU7bWFyZ2luLXRvcDowfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmVycm9ye2Rpc3BsYXk6bm9uZTttYXJnaW46LjNyZW0gMCAwO3BhZGRpbmc6LjQ1cmVt''@;'; put 'put ''IC42cmVtO2JhY2tncm91bmQ6I2MyMWQwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1sb2dpbi1lcnJvci1iYWNrZ3JvdW5kLWNvbG9yLCAjYzIxZDAwKTtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1sb2dpbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmFmYWZhKTtib3JkZXItcmFkaXVzOi4x''@;'; put 'put ''NXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1sb2dpbi1lcnJvci1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmVycm9yOmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2Jh''@;'; put 'put ''Y2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjI1JTIwNSUyMDI2JTIwMjYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0Ql''@;'; put 'put ''MjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlM0NkZWZzJTNFJTNDc3R5bGUlM0UuY2xyLWktb3V0bGluZSU3QmZpbGwlM0ElMjNmYWZhZmElM0Il''@;'; put 'put ''N0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0aW9uLWNpcmNsZS1saW5lJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTElMjIlMjBkJTNEJTIyTTE4JTJDNkExMiUyQzEyJTJDMCUyQzElMkMwJTJDMzAlMkMxOCUyQzEyJTJDMTIlMkMwJTJDMCUyQzAlMkMxOCUyQzZabTAlMkMyMkExMCUy''@;'; put 'put ''QzEwJTJDMCUyQzElMkMxJTJDMjglMkMxOCUyQzEwJTJDMTAlMkMwJTJDMCUyQzElMkMxOCUyQzI4WiUyMiUzRSUzQyUyRnBhdGglM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTIlMjIlMjBkJTNEJTIyTTE4JTJDMjAuMDdhMS4zJTJD''@;'; put 'put ''MS4zJTJDMCUyQzAlMkMxLTEuMy0xLjN2LTZhMS4zJTJDMS4zJTJDMCUyQzElMkMxJTJDMi42JTJDMHY2QTEuMyUyQzEuMyUyQzAlMkMwJTJDMSUyQzE4JTJDMjAuMDdaJTIyJTNFJTNDJTJGcGF0aCUzRSUzQ2NpcmNsZSUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zJTIyJTIwY3glM0QlMjIxNy45NSUyMiUyMGN5JTNEJTIyMjMuMDIlMjIlMjByJTNEJTIyMS41JTIyJTNFJTNDJTJGY2lyY2xlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3ZnJTNFKTttYXJnaW46LjA1cmVtIC4zcmVtIDAgMDtoZWln''@;'; put 'put ''aHQ6LjhyZW07d2lkdGg6LjhyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3IuYWN0aXZle2Rpc3BsYXk6ZmxleH0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvci5hY3RpdmU6YmVmb3Jle2ZsZXg6MCAwIC44cmVtfS5sb2dpbi13cmFw''@;'; put 'put ''cGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmJ0bnttYXJnaW46My42cmVtIDAgMDttYXgtd2lkdGg6bm9uZX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvcisuYnRue21hcmdpbjoxLjJyZW0gMCAwfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnNp''@;'; put 'put ''Z251cHttYXJnaW4tdG9wOi42cmVtO2ZvbnQtc2l6ZTouN3JlbTt0ZXh0LWFsaWduOmNlbnRlcn0ubG9naW4td3JhcHBlciAubG9naW46YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOi4wNXJlbTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOiMw''@;'; put 'put ''MDA7YmFja2dyb3VuZDp2YXIoLS1jbHItbG9naW4tcGFuZWwtbGluZS1jb2xvciwgYmxhY2spO29wYWNpdHk6LjE7b3BhY2l0eTp2YXIoLS1jbHItbG9naW4tcGFuZWwtbGluZS1vcGFjaXR5LCAuMSk7dG9wOjA7cmlnaHQ6LS4xcmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4''@;'; put 'put ''cHgpey5sb2dpbi13cmFwcGVye2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDojZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxvZ2luLWJhY2tncm91bmQtY29sb3IsICNmYWZhZmEpfS5sb2dpbi13cmFwcGVyIC5sb2dpbnt3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjA7cGFk''@;'; put 'put ''ZGluZzoxLjJyZW0gMjAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbjphZnRlcntjb250ZW50Om5vbmV9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5sb2dpbi13cmFwcGVyIC5sb2dpbntwYWRkaW5nOjEuMnJlbSAxNSV9fS5tYWluLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7''@;'; put 'put ''ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDB2aDtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItZ2xvYmFsLWFwcC1iYWNrZ3JvdW5kLCAjZmFmYWZhKX0ubWFpbi1jb250YWluZXIgLmFsZXJ0LmFsZXJ0LWFwcC1sZXZlbHtmbGV4OjAgMCBhdXRvO292ZXJm''@;'; put 'put ''bG93LXg6aGlkZGVufS5tYWluLWNvbnRhaW5lciBoZWFkZXIsLm1haW4tY29udGFpbmVyIC5oZWFkZXJ7ZmxleDowIDAgM3JlbX0ubWFpbi1jb250YWluZXIgLnN1Yi1uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXZ7ZmxleDowIDAgMS44cmVtfS5tYWluLWNvbnRhaW5lciAudS1tYWluLWNv''@;'; put 'put ''bnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87bWluLWhlaWdodDouMDVyZW19Lm1haW4tY29udGFp''@;'; put 'put ''bmVyIC5jb250ZW50LWNvbnRhaW5lciAuY29udGVudC1hcmVhe2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3cteTphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO3BhZGRpbmc6MS4ycmVtfS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYT46''@;'; put 'put ''Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLnNpZGVuYXZ7ZmxleDowIDAgYXV0bztvcmRlcjotMTtvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5jb250ZW50LWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdntmbGV4''@;'; put 'put ''OjAgMCBhdXRvO29yZGVyOi0xfUBtZWRpYSBwcmludHsubWFpbi1jb250YWluZXJ7aGVpZ2h0OmF1dG99fWJvZHkubm8tc2Nyb2xsaW5nLGJvZHlbY2RzLWxheW91dD1uby1zY3JvbGxpbmddLGJvZHkubm8tc2Nyb2xsaW5nIC5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNv''@;'; put 'put ''bnRlbnQtYXJlYSxib2R5W2Nkcy1sYXlvdXQ9bm8tc2Nyb2xsaW5nXSAubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWF7b3ZlcmZsb3c6aGlkZGVufTpyb290ey0tY2xyLW1vZGFsLWNsb3NlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7''@;'; put 'put ''LS1jbHItbW9kYWwtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItbW9kYWwtY29udGVudC1ib3gtc2hhZG93LWNvbG9yOnJnYmEoIDAsIDAsIDAsIC4yICk7LS1jbHItbW9kYWwtYmFja2Ryb3AtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNs''@;'; put 'put ''ci1tb2RhbC1iYWNrZHJvcC1vcGFjaXR5Oi44NTstLWNsci1tb2RhbC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1tb2RhbC10aXRsZS1jb2xvcjp2YXIoLS1jbHItaDMtY29sb3IpOy0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtZmFtaWx5OnZhcigt''@;'; put 'put ''LWNsci1oMy1mb250LWZhbWlseSk7LS1jbHItbW9kYWwtdGl0bGUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgzLWZvbnQtd2VpZ2h0KX0ubW9kYWx7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDUwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVj''@;'; put 'put ''dGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoyLjRyZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFse3BhZGRpbmc6LjZyZW19fS5tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRl''@;'; put 'put ''eDoxMDUwO3dpZHRoOjI4LjhyZW07bWF4LXdpZHRoOjEwMCV9Lm1vZGFsLWRpYWxvZy5tb2RhbC1zbXt3aWR0aDoxNC40cmVtfS5tb2RhbC1kaWFsb2cubW9kYWwtbGd7d2lkdGg6NDMuMnJlbX0ubW9kYWwtZGlhbG9nLm1vZGFsLXhse3dpZHRoOjU3LjZyZW19Lm1vZGFsLWRpYWxvZyAubW9k''@;'; put 'put ''YWwtY29udGVudHtwYWRkaW5nOjEuMnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbW9kYWwtYmctY29sb3IsIHdoaXRlKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1tb2RhbC1ib3JkZXItcmFkaXVzLCAu''@;'; put 'put ''MTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjFyZW0gLjFyZW0gIzAwMDM7Ym94LXNoYWRvdzowIC4wNXJlbSAuMXJlbSAuMXJlbSB2YXIoLS1jbHItbW9kYWwtY29udGVudC1ib3gtc2hhZG93LWNvbG9yKX0ubW9kYWwtaGVhZGVyLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbTpub25lO3BhZGRpbmc6MCAwIDEuMnJlbX0ubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tb2RhbC1oZWFkZXIgLm1vZGFsLXRpdGxlLC5tb2RhbC1oZWFkZXIt''@;'; put 'put ''LWFjY2Vzc2libGUgLm1vZGFsLXRpdGxle2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWNvbG9yLCBibGFjayk7bWFyZ2luOjA7cGFkZGluZzowIC4xNXJlbX0ubW9kYWwtaGVhZGVyIC5tb2RhbC10aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlci0tYWNj''@;'; put 'put ''ZXNzaWJsZSAubW9kYWwtdGl0bGU6bm90KFtjZHMtdGV4dF0pe2ZvbnQtc2l6ZToxLjFyZW07Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1tb2RhbC10aXRsZS1mb250LWZhbWls''@;'; put 'put ''eSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHItbW9kYWwtdGl0bGUtZm9udC13ZWlnaHQsIDIwMCk7bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFj''@;'; put 'put ''aW5nOm5vcm1hbH0ubW9kYWwtaGVhZGVyIC5jbG9zZSwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZXttYXJnaW4tdG9wOi0uMDVyZW07bWFyZ2luLXJpZ2h0Oi0uMjVyZW07Zm9udC1zaXplOjEuM3JlbTtsaW5lLWhlaWdodDoxLjJyZW19Lm1vZGFsLWhlYWRlciAuY2xvc2UgY2Rz''@;'; put 'put ''LWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UgY2RzLWljb24sLm1vZGFsLWhlYWRlciAuY2xvc2UgY2xyLWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UgY2xyLWljb257ZmlsbDojOGM4YzhjO2ZpbGw6dmFyKC0tY2xyLW1vZGFsLWNsb3NlLWNvbG9y''@;'; put 'put ''LCAjOGM4YzhjKTtoZWlnaHQ6MS4ycmVtO3dpZHRoOjEuMnJlbX0ubW9kYWwtdGl0bGUtd3JhcHBlcntmbGV4OjF9Lm1vZGFsLXRpdGxlLXdyYXBwZXIgLm1vZGFsLXRpdGxlPmgze21hcmdpbi10b3A6MH0ubW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6NzB2aDtvdmVyZmxvdy15OmF1''@;'; put 'put ''dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZzowIC4xNXJlbX0ubW9kYWwtYm9keS13cmFwcGVyPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9Lm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6MS4ycmVtIDAgMH0ubW9kYWwtZm9vdGVyIC5idG57bWFyZ2luOjAgMCAwIC42cmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKXsubW9kYWwtYm9keS13cmFwcGVye21heC1o''@;'; put 'put ''ZWlnaHQ6NTV2aH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFsLWNvbnRlbnR7cGFkZGluZzouNnJlbSAwIC42cmVtIDEuMnJlbX0ubW9kYWwtaGVhZGVyLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7cGFkZGluZzowIDEuMnJlbSAuNnJlbSAwfS5tb2RhbC1i''@;'; put 'put ''b2R5LXdyYXBwZXJ7bWF4LWhlaWdodDo1NXZofS5tb2RhbC1mb290ZXJ7cGFkZGluZzouNnJlbSAxLjJyZW0gMCAwfX0ubW9kYWwtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7YmFja2dyb3VuZC1jb2xvcjojMzMzO2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLW1vZGFsLWJhY2tkcm9wLWNvbG9yLCAjMzMzMzMzKTtvcGFjaXR5Oi44NTtvcGFjaXR5OnZhcigtLWNsci1tb2RhbC1iYWNrZHJvcC1vcGFjaXR5LCAuODUpO3otaW5kZXg6MTA0MH0ubW9kYWwgLm1vZGFsLW5hdntkaXNwbGF5Om5vbmV9OnJvb3R7LS1jbHItaGVhZGVy''@;'; put 'put ''LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItaGVhZGVyLWRpdmlkZXItb3BhY2l0eTouMTU7LS1jbHItaGVhZGVyLW5hdi1vcGFjaXR5Oi42NTstLWNsci1oZWFkZXItbmF2LWhvdmVyLW9wYWNpdHk6MTstLWNsci1oZWFkZXItMi1iZy1jb2xvcjojNDg1YTZh''@;'; put 'put ''Oy0tY2xyLWhlYWRlci0zLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTEwMDApOy0tY2xyLWhlYWRlci00LWJnLWNvbG9yOiMyNDdiYWU7LS1jbHItaGVhZGVyLTUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWhlYWRlci02LWJn''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tMTAwMCk7LS1jbHItaGVhZGVyLTctYmctY29sb3I6IzMwNDI1MDstLWNsci1oZWFkZXItOC1iZy1jb2xvcjojMGYxNzFjOy0tY2xyLWhlYWRlci1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci1oZWFkZXIt''@;'; put 'put ''dGl0bGUtY29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKTstLWNsci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWg1LWZvbnQtd2VpZ2h0KTstLWNsci1oZWFkZXItdGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWg1LWZvbnQtZmFtaWx5KX1oZWFkZXIsLmhl''@;'; put 'put ''YWRlcntkaXNwbGF5OmZsZXg7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO2JhY2tncm91bmQtY29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItYmctY29sb3IsICMzMzMzMzMpO2hlaWdodDozcmVtO3do''@;'; put 'put ''aXRlLXNwYWNlOm5vd3JhcH1oZWFkZXIuaGVhZGVyLTEsLmhlYWRlci5oZWFkZXItMXtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWJnLWNvbG9yLCAjMzMzMzMzKX1oZWFkZXIuaGVhZGVyLTIsLmhlYWRlci5oZWFkZXItMntiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOiM0ODVhNmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTItYmctY29sb3IsICM0ODVhNmEpfWhlYWRlci5oZWFkZXItMywuaGVhZGVyLmhlYWRlci0ze2JhY2tncm91bmQtY29sb3I6IzMyMDA0NztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXIt''@;'; put 'put ''My1iZy1jb2xvciwgIzMyMDA0Nyl9aGVhZGVyLmhlYWRlci00LC5oZWFkZXIuaGVhZGVyLTR7YmFja2dyb3VuZC1jb2xvcjojMjQ3YmFlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci00LWJnLWNvbG9yLCAjMjQ3YmFlKX1oZWFkZXIuaGVhZGVyLTUsLmhlYWRlci5oZWFkZXIt''@;'; put 'put ''NXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDU2N2E7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTUtYmctY29sb3IsICMwMDU2N2EpfWhlYWRlci5oZWFkZXItNiwuaGVhZGVyLmhlYWRlci02e2JhY2tncm91bmQtY29sb3I6IzAwMzY0ZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1oZWFkZXItNi1iZy1jb2xvciwgIzAwMzY0ZCl9aGVhZGVyLmhlYWRlci03LC5oZWFkZXIuaGVhZGVyLTd7YmFja2dyb3VuZC1jb2xvcjojMzA0MjUwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci03LWJnLWNvbG9yLCAjMzA0MjUwKX1oZWFkZXIuaGVhZGVyLTgsLmhlYWRl''@;'; put 'put ''ci5oZWFkZXItOHtiYWNrZ3JvdW5kLWNvbG9yOiMwZjE3MWM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTgtYmctY29sb3IsICMwZjE3MWMpfWhlYWRlciAuYnJhbmRpbmcsLmhlYWRlciAuYnJhbmRpbmd7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87bWluLXdpZHRoOjEw''@;'; put 'put ''LjJyZW07cGFkZGluZzowIDEuMnJlbTtoZWlnaHQ6M3JlbX1oZWFkZXIgLmJyYW5kaW5nPmEsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbmssLmhlYWRlciAuYnJhbmRpbmc+YSwuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbmt7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50''@;'; put 'put ''ZXI7aGVpZ2h0OjNyZW19aGVhZGVyIC5icmFuZGluZz5hOmhvdmVyLGhlYWRlciAuYnJhbmRpbmc+YTphY3RpdmUsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6aG92ZXIsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6YWN0aXZlLC5oZWFkZXIgLmJyYW5kaW5nPmE6aG92ZXIsLmhlYWRl''@;'; put 'put ''ciAuYnJhbmRpbmc+YTphY3RpdmUsLmhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rOmhvdmVyLC5oZWFkZXIgLmJyYW5kaW5nPi5uYXYtbGluazphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aGVhZGVyIC5icmFuZGluZz5hOmZvY3VzLGhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rOmZv''@;'; put 'put ''Y3VzLC5oZWFkZXIgLmJyYW5kaW5nPmE6Zm9jdXMsLmhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rOmZvY3Vze291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19aGVhZGVyIC5icmFuZGluZyAuY2xyLWljb24saGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbixoZWFkZXIgLmJyYW5kaW5nIGNsci1pY29u''@;'; put 'put ''LC5oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbiwuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbiwuaGVhZGVyIC5icmFuZGluZyBjbHItaWNvbntmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxLjhyZW07d2lkdGg6MS44cmVtO21hcmdpbi1yaWdodDouNDVyZW19aGVhZGVyIC5i''@;'; put 'put ''cmFuZGluZyAudGl0bGUsLmhlYWRlciAuYnJhbmRpbmcgLnRpdGxle2NvbG9yOiNmYWZhZmE7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci10aXRsZS1jb2xvciwgI2ZhZmFmYSk7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQsIDQw''@;'; put 'put ''MCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oZWFkZXItdGl0bGUtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFy''@;'; put 'put ''aWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6LjhyZW07bGV0dGVyLXNwYWNpbmc6LjAxZW07bGluZS1oZWlnaHQ6M3JlbTt0ZXh0LWRlY29yYXRpb246bm9uZX1oZWFkZXIgLnNldHRpbmdzLGhlYWRlciAuaGVhZGVyLW5hdixoZWFkZXIgLmhlYWRlci1hY3Rpb25zLC5oZWFkZXIgLnNldHRp''@;'; put 'put ''bmdzLC5oZWFkZXIgLmhlYWRlci1uYXYsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnN7aGVpZ2h0OjNyZW19aGVhZGVyIC5zZXR0aW5ncyAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtdGV4dCwuaGVhZGVyIC5zZXR0aW5n''@;'; put 'put ''cyAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi10ZXh0e2ZvbnQtd2VpZ2h0OjUwMH1oZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIGNsci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgY2xyLWljb24sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgY2xyLWljb257Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpfWhlYWRl''@;'; put 'put ''ciAuc2V0dGluZ3MgLm5hdi1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25z''@;'; put 'put ''IC5uYXYtaWNvbntoZWlnaHQ6M3JlbTt3aWR0aDozcmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmssaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmssLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLC5oZWFkZXIgLmhlYWRl''@;'; put 'put ''ci1uYXYgLm5hdi1saW5rLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGlua3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOi45cmVtIDEuMnJlbTtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXIt''@;'; put 'put ''Zm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTouNjU7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLW5hdi1vcGFjaXR5LCAuNjUpfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmhvdmVyLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5h''@;'; put 'put ''di1saW5rOmhvdmVyLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6YWN0aXZlLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmhvdmVyLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmFjdGl2ZSwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6aG92ZXIsLmhl''@;'; put 'put ''YWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmFjdGl2ZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazphY3RpdmUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmhvdmVyLC5oZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIC5uYXYtbGluazphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlcixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZW5hYmxl''@;'; put 'put ''ZDpob3ZlciwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazplbmFibGVkOmhvdmVyLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazplbmFibGVkOmhvdmVye29wYWNpdHk6MTtvcGFjaXR5OnZhcigt''@;'; put 'put ''LWNsci1oZWFkZXItbmF2LWhvdmVyLW9wYWNpdHksIDEpfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6ZGlzYWJsZWQsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGlu''@;'; put 'put ''Z3MgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsgLmZhLGhlYWRlciAuc2V0''@;'; put 'put ''dGluZ3MgLm5hdi1saW5rIC5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5mYSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAuZmEsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxp''@;'; put 'put ''bmsgLm5hdi1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAuZmEsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIC5uYXYtaWNvbiwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayAuZmEsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uLC5oZWFkZXIg''@;'; put 'put ''LmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAuZmEsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbntmb250LXNpemU6MS4xcmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNkcy1pY29uLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLGhl''@;'; put 'put ''YWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgY2RzLWljb24saGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjbHItaWNvbiwuaGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncyAubmF2LWxpbmsgY2RzLWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNkcy1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIC5uYXYtbGluayBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsgY2xyLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW19aGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYg''@;'; put 'put ''Lm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2xyLWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5u''@;'; put 'put ''YXYtbGluay5uYXYtaWNvbi10ZXh0IGNkcy1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2RzLWljb24sLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsu''@;'; put 'put ''bmF2LWljb24tdGV4dCBjbHItaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6YXV0bzts''@;'; put 'put ''ZWZ0OmF1dG87dHJhbnNmb3JtOm5vbmU7bWFyZ2luLWxlZnQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItYWN0''@;'; put 'put ''aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCAubmF2LXRleHQsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IC5uYXYtdGV4dHttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDouM3JlbX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4''@;'; put 'put ''dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLmhlYWRlciAuaGVh''@;'; put 'put ''ZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHR7ZGlzcGxheTpub25lfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5hY3RpdmUs''@;'; put 'put ''LmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTtvcGFjaXR5OjF9aGVhZGVyIC5z''@;'; put 'put ''ZXR0aW5ncyAubmF2LWxpbms6Zm9jdXMsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmb2N1cyxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpmb2N1cywuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zm9j''@;'; put 'put ''dXMsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmZvY3Vze291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19aGVhZGVyIC5oZWFkZXItbmF2LC5oZWFkZXIgLmhlYWRlci1uYXZ7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG99aGVhZGVyIC5oZWFkZXItbmF2Omxhc3QtY2hpbGQ+Lm5h''@;'; put 'put ''di1saW5rOmxhc3QtY2hpbGQ6YWZ0ZXIsLmhlYWRlciAuaGVhZGVyLW5hdjpsYXN0LWNoaWxkPi5uYXYtbGluazpsYXN0LWNoaWxkOmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmZpcnN0LW9mLXR5cGUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGlu''@;'; put 'put ''azpsYXN0LW9mLXR5cGUsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zmlyc3Qtb2YtdHlwZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGV7cG9zaXRpb246cmVsYXRpdmV9aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJl''@;'; put 'put ''Zm9yZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmxhc3Qtb2YtdHlwZTphZnRlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGU6YWZ0ZXJ7ZGlzcGxheTppbmxp''@;'; put 'put ''bmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1kaXZpZGVyLW9wYWNpdHksIC4xNSk7b3BhY2l0eTouMTU7''@;'; put 'put ''aGVpZ2h0OjJyZW07d2lkdGg6LjA1cmVtO3dpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7dG9wOi41cmVtO2xlZnQ6MDtsZWZ0OmF1dG99aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVyIC5oZWFkZXItbmF2''@;'; put 'put ''IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZXtsZWZ0OjB9aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGU6YWZ0ZXIsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6bGFzdC1vZi10eXBlOmFmdGVye3JpZ2h0OjB9aGVhZGVyIC5oZWFkZXItbmF2IC5u''@;'; put 'put ''YXYtbGluay5hY3RpdmU6Zmlyc3Qtb2YtdHlwZTpiZWZvcmUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmU6bGFzdC1vZi10eXBlOmFmdGVyLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZTpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVyIC5oZWFkZXIt''@;'; put 'put ''bmF2IC5uYXYtbGluay5hY3RpdmU6bGFzdC1vZi10eXBlOmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLnNldHRpbmdzLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMsLmhlYWRlciAuc2V0dGluZ3MsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnN7ZmxleDoxIDAgYXV0bztkaXNwbGF5OmZsZXg7anVz''@;'; put 'put ''dGlmeS1jb250ZW50OmZsZXgtZW5kfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZSwuaGVh''@;'; put 'put ''ZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZXtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDozcmVtO2hlaWdodDozcmVtO291dGxpbmUtb2Zmc2V0Oi0uMjVyZW07Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3Is''@;'; put 'put ''ICNmYWZhZmEpO29wYWNpdHk6LjY1O29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtb3BhY2l0eSwgLjY1KX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZTplbmFibGVkOmhvdmVyLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmVuYWJsZWQ6aG92ZXIsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZW5hYmxlZDpob3ZlcntvcGFjaXR5OjE7b3BhY2l0eTp2''@;'; put 'put ''YXIoLS1jbHItaGVhZGVyLW5hdi1ob3Zlci1vcGFjaXR5LCAxKX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGlu''@;'; put 'put ''Z3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2''@;'; put 'put ''LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSxoZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2ds''@;'; put 'put ''ZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5k''@;'; put 'put ''cm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pe3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1''@;'; put 'put ''MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7aGVpZ2h0OjEuMXJlbTt3aWR0aDoxLjFyZW07cmlnaHQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb25bc2hhcGVePWFuZ2xlXSxoZWFkZXIgLnNldHRpbmdzPi5k''@;'; put 'put ''cm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uW3NoYXBlXj1hbmdsZV0saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbltzaGFwZV49YW5nbGVdLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRy''@;'; put 'put ''b3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJv''@;'; put 'put ''cGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uW3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbltzaGFwZV49YW5nbGVde3JpZ2h0Oi42cmVtO3RvcDo0NCV9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9n''@;'; put 'put ''Z2xlLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0e3BhZGRpbmc6MCAxLjhyZW0gMCAxLjJyZW19aGVhZGVyIC5zZXR0''@;'; put 'put ''aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjZHMtaWNvbltzaGFwZV49YW5nbGVdLGhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2xyLWljb25bc2hhcGVePWFuZ2xlXSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5k''@;'; put 'put ''cm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNkcy1pY29uW3NoYXBlXj1hbmdsZV0saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjbHItaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93''@;'; put 'put ''biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2xyLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjZHMtaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bk''@;'; put 'put ''b3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9u''@;'; put 'put ''cz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbnt3aWR0aDozcmVtO3BhZGRpbmctcmlnaHQ6MH1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bi5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bk''@;'; put 'put ''b3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24uYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bi5ib3R0b20t''@;'; put 'put ''cmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bi5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRy''@;'; put 'put ''b3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51e3RvcDo4NSV9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd246bGFzdC1jaGlsZC5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd246bGFzdC1jaGlsZC5ib3R0b20tcmlnaHQ+''@;'; put 'put ''LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duOmxhc3QtY2hpbGQuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bjpsYXN0LWNoaWxkLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDouMTVy''@;'; put 'put ''ZW19aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9w''@;'; put 'put ''ZG93biAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOi0uMnJlbTtsZWZ0OmF1dG87cmlnaHQ6MH1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biA6bGFzdC1jaGlsZC5kcm9wZG93bi1tZW51LGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1lbnV7bWFyZ2luLXJpZ2h0Oi40cmVtfWhlYWRlciAuc2VhcmNoLWJveCxoZWFkZXIgLnNl''@;'; put 'put ''YXJjaCwuaGVhZGVyIC5zZWFyY2gtYm94LC5oZWFkZXIgLnNlYXJjaHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXg6MCAwIGF1dG87bWF4LXdpZHRoOjE0LjRyZW07cGFkZGluZzowO2hlaWdodDozcmVtO2NvbG9yOiNmYWZhZmE7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1m''@;'; put 'put ''b250LWNvbG9yLCAjZmFmYWZhKTtvcGFjaXR5Oi42NTtvcGFjaXR5OnZhcigtLWNsci1oZWFkZXItbmF2LW9wYWNpdHksIC42NSl9aGVhZGVyIC5zZWFyY2gtYm94OmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5zZWFyY2g6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5zZWFyY2gtYm94OmVuYWJsZWQ6''@;'; put 'put ''aG92ZXIsLmhlYWRlciAuc2VhcmNoOmVuYWJsZWQ6aG92ZXJ7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtaG92ZXItb3BhY2l0eSwgMSl9aGVhZGVyIC5zZWFyY2gtYm94OmRpc2FibGVkLGhlYWRlciAuc2VhcmNoOmRpc2FibGVkLC5oZWFkZXIgLnNlYXJjaC1ib3g6''@;'; put 'put ''ZGlzYWJsZWQsLmhlYWRlciAuc2VhcmNoOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH1oZWFkZXIgLnNlYXJjaC1ib3g+Lm5hdi1pY29uLGhlYWRlciAuc2VhcmNoPi5uYXYtaWNvbiwuaGVhZGVyIC5zZWFyY2gtYm94Pi5uYXYtaWNvbiwuaGVhZGVyIC5zZWFyY2g+Lm5hdi1pY29ue21h''@;'; put 'put ''cmdpbjowIC4zcmVtIC4xNXJlbSAxLjJyZW19aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsLGhlYWRlciAuc2VhcmNoIGxhYmVsLC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsLmhlYWRlciAuc2VhcmNoIGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDozcmVtO2xpbmUtaGVpZ2h0''@;'; put 'put ''OjNyZW07cGFkZGluZy1sZWZ0OjEuMnJlbTt0ZXh0LWFsaWduOmNlbnRlcn1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWw6YmVmb3JlLGhlYWRlciAuc2VhcmNoIGxhYmVsOmJlZm9yZSwuaGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsOmJlZm9yZSwuaGVhZGVyIC5zZWFyY2ggbGFiZWw6YmVmb3Jl''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIw''@;'; put 'put ''MCUyMDM2JTIwMzYlMjIlM0UlM0NkZWZzJTNFJTNDc3R5bGUlM0UuY2xzLTElN0JmaWxsJTNBJTIzZmZmZmZmJTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTNDdGl0bGUlM0VTZWFyY2glM0MlMkZ0aXRsZSUzRSUzQ2clMjBpZCUzRCUyMmljb25zJTIyJTNFJTNDcGF0aCUyMGNs''@;'; put 'put ''YXNzJTNEJTIyY2xzLTElMjIlMjBkJTNEJTIyTTE1JTJDNC4wNUExMC45NSUyQzEwLjk1JTJDMCUyQzElMkMxJTJDNC4wNSUyQzE1JTJDMTElMkMxMSUyQzAlMkMwJTJDMSUyQzE1JTJDNC4wNU0xNSUyQzJBMTMlMkMxMyUyQzAlMkMxJTJDMCUyQzI4JTJDMTUlMkMxMyUyQzEzJTJDMCUyQzAl''@;'; put 'put ''MkMwJTJDMTUlMkMyWiUyMiUyRiUzRSUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwJTIwZCUzRCUyMk0zMy43MSUyQzMyLjI5bC03LjM3LTcuNDItMS40MiUyQzEuNDElMkM3LjM3JTJDNy40MmExJTJDMSUyQzAlMkMxJTJDMCUyQzEuNDItMS40MVolMjIlMkYlM0UlM0MlMkZnJTNF''@;'; put 'put ''JTNDJTJGc3ZnJTNFKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjFyZW07d2lkdGg6MXJlbTttYXJnaW46MXJlbSAwIDA7dmVydGljYWwtYWxpZ246dG9wfWhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCBp''@;'; put 'put ''bnB1dCxoZWFkZXIgLnNlYXJjaCBsYWJlbCBpbnB1dCwuaGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaCBsYWJlbCBpbnB1dHtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luOi45cmVtIDB9aGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0saGVh''@;'; put 'put ''ZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0sLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF17Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQt''@;'; put 'put ''Y29sb3IsICNmYWZhZmEpO3BhZGRpbmc6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06YWN0aXZlLGhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06''@;'; put 'put ''Zm9jdXMsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmUsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmUsLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06''@;'; put 'put ''Zm9jdXMsLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06YWN0aXZle2JhY2tncm91bmQ6MCAwfWhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaCxoZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gtYm94LC5oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJj''@;'; put 'put ''aC1ib3h7cG9zaXRpb246cmVsYXRpdmV9aGVhZGVyIC5icmFuZGluZysuc2VhcmNoOmFmdGVyLGhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaC1ib3g6YWZ0ZXIsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaDphZnRlciwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveDphZnRlcntkaXNwbGF5''@;'; put 'put ''OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2JhY2tncm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItb3BhY2l0eSwgLjE1KTtvcGFjaXR5''@;'; put 'put ''Oi4xNTtoZWlnaHQ6MnJlbTt3aWR0aDouMDVyZW07d2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTt0b3A6LjVyZW07bGVmdDowfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpe2hlYWRlciAuc2VhcmNoLWJveCxoZWFkZXIgLnNlYXJjaCwuaGVh''@;'; put 'put ''ZGVyIC5zZWFyY2gtYm94LC5oZWFkZXIgLnNlYXJjaHtmbGV4OjEgMCBhdXRvO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXgtd2lkdGg6bm9uZX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsaGVhZGVyIC5zZWFyY2ggbGFiZWwsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCwuaGVhZGVy''@;'; put 'put ''IC5zZWFyY2ggbGFiZWx7cGFkZGluZzowO3dpZHRoOjNyZW19aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsOmJlZm9yZSxoZWFkZXIgLnNlYXJjaCBsYWJlbDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoIGxhYmVsOmJlZm9yZXtsZWZ0OjFy''@;'; put 'put ''ZW19aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LGhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwgaW5wdXQsLmhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0e2Rpc3BsYXk6bm9uZX1oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2g6YWZ0ZXIs''@;'; put 'put ''aGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveDphZnRlciwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoOmFmdGVyLC5oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gtYm94OmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLnNlYXJjaC1ib3grLnNldHRpbmdzLGhlYWRlciAuc2VhcmNoLWJveCsu''@;'; put 'put ''aGVhZGVyLWFjdGlvbnMsaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzLGhlYWRlciAuc2VhcmNoKy5oZWFkZXItYWN0aW9ucywuaGVhZGVyIC5zZWFyY2gtYm94Ky5zZXR0aW5ncywuaGVhZGVyIC5zZWFyY2gtYm94Ky5oZWFkZXItYWN0aW9ucywuaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzLC5o''@;'; put 'put ''ZWFkZXIgLnNlYXJjaCsuaGVhZGVyLWFjdGlvbnN7cG9zaXRpb246cmVsYXRpdmU7ZmxleDowIDAgYXV0b31oZWFkZXIgLnNlYXJjaC1ib3grLnNldHRpbmdzOmFmdGVyLGhlYWRlciAuc2VhcmNoLWJveCsuaGVhZGVyLWFjdGlvbnM6YWZ0ZXIsaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzOmFm''@;'; put 'put ''dGVyLGhlYWRlciAuc2VhcmNoKy5oZWFkZXItYWN0aW9uczphZnRlciwuaGVhZGVyIC5zZWFyY2gtYm94Ky5zZXR0aW5nczphZnRlciwuaGVhZGVyIC5zZWFyY2gtYm94Ky5oZWFkZXItYWN0aW9uczphZnRlciwuaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzOmFmdGVyLC5oZWFkZXIgLnNlYXJj''@;'; put 'put ''aCsuaGVhZGVyLWFjdGlvbnM6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRl''@;'; put 'put ''ci1kaXZpZGVyLW9wYWNpdHksIC4xNSk7b3BhY2l0eTouMTU7aGVpZ2h0OjJyZW07d2lkdGg6LjA1cmVtO3dpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7dG9wOi41cmVtO2xlZnQ6MH19YS5saW5rLW5vcm1hbDpsaW5re2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWxpbmstY29sb3IsICMwMDcyYTMpO3RleHQtZGVjb3JhdGlvbjpub25lfWEubGluay1ob3ZlcmVkOmxpbmt7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItbGluay1ob3Zlci1jb2xvciwgIzAwNzJhMyk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hLmxpbmstY2xpY2tl''@;'; put 'put ''ZDpsaW5re2NvbG9yOiM5ZTU3YmM7Y29sb3I6dmFyKC0tY2xyLWxpbmstYWN0aXZlLWNvbG9yLCAjOWU1N2JjKTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWEubGluay12aXNpdGVkOmxpbmt7Y29sb3I6IzU2NTliODtjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLCAjNTY1''@;'; put 'put ''OWI4KTt0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2e2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MS44cmVtO2xpc3Qtc3R5bGUtdHlwZTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MDt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDtib3gtc2hhZG93OjAgLS4wNXJlbSAjY2NjIGlu''@;'; put 'put ''c2V0O2JveC1zaGFkb3c6MCAtLjA1cmVtIDAgdmFyKC0tY2xyLW5hdi1ib3gtc2hhZG93LWNvbG9yLCAjY2NjY2NjKSBpbnNldH0ubmF2IC5uYXYtaXRlbXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6MS4ycmVtfS5uYXYgLm5hdi1pdGVtLmFjdGl2ZT4ubmF2LWxpbmt7Y29s''@;'; put 'put ''b3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstYWN0aXZlLWNvbG9yLCBibGFjayk7Ym94LXNoYWRvdzowIC0uMDVyZW0gI2NjYyBpbnNldDtib3gtc2hhZG93OjAgLS4wNXJlbSAwIHZhcigtLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvciwgI2NjY2NjYykgaW5zZXR9Lm5hdiAubmF2''@;'; put 'put ''LWxpbmt7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLW5hdi1saW5rLWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5l''@;'; put 'put ''LWhlaWdodDoxLjhyZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzowIC4xNXJlbTtib3gtc2hhZG93Om5vbmV9Lm5hdiAubmF2LWxpbmsuYnRue3RleHQtdHJhbnNmb3JtOm5vbmU7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTotLjA1cmVtO2JvcmRlci1yYWRpdXM6MH0ubmF2IC5uYXYt''@;'; put 'put ''bGluazpob3ZlciwubmF2IC5uYXYtbGluazpmb2N1cywubmF2IC5uYXYtbGluazphY3RpdmV7Y29sb3I6aW5oZXJpdH0ubmF2IC5uYXYtbGluazpob3ZlciwubmF2IC5uYXYtbGluay5hY3RpdmV7Ym94LXNoYWRvdzowIC0uMTVyZW0gIzAwNzJhMyBpbnNldDtib3gtc2hhZG93OjAgLS4xNXJl''@;'; put 'put ''bSAwIHZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IsICMwMDcyYTMpIGluc2V0O3RyYW5zaXRpb246Ym94LXNoYWRvdyAuMnMgZWFzZS1pbn0ubmF2IC5uYXYtbGluazpob3ZlciwubmF2IC5uYXYtbGluazpmb2N1cywubmF2IC5uYXYtbGluazphY3RpdmUsLm5hdiAubmF2''@;'; put 'put ''LWxpbmsuYWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS5uYXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1uYXYtbGluay1hY3RpdmUtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLW5hdi1saW5rLWFjdGl2''@;'; put 'put ''ZS1mb250LXdlaWdodCwgNDAwKX0ubmF2IC5uYXYtbGluay5uYXYtaXRlbXttYXJnaW4tcmlnaHQ6MS4ycmVtfTpyb290ey0tY2xyLXN1Ym5hdi1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC00MDApfS5zdWItbmF2LC5zdWJuYXZ7ZGlzcGxheTpmbGV4O2JveC1zaGFkb3c6MCAtLjA1cmVtICNjY2MgaW5zZXQ7Ym94LXNoYWRvdzowIC0uMDVyZW0gMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IsICNjY2NjY2MpIGluc2V0O2p1c3RpZnktY29udGVudDpzcGFjZS1i''@;'; put 'put ''ZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3VibmF2LWJnLWNvbG9yLCB3aGl0ZSk7aGVpZ2h0OjEuOHJlbX0uc3ViLW5hdiAubmF2LC5zdWJuYXYgLm5hdntmbGV4OjEgMSBhdXRvO3BhZGRpbmctbGVm''@;'; put 'put ''dDoxLjJyZW19LnN1Yi1uYXYgYXNpZGUsLnN1Ym5hdiBhc2lkZXtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEuOHJlbTtwYWRkaW5nOjAgMS4ycmVtfS5zdWItbmF2IGFzaWRlPjpsYXN0LWNoaWxkLC5zdWJuYXYgYXNpZGU+Omxhc3QtY2hp''@;'; put 'put ''bGR7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZy1yaWdodDowfTpyb290ey0tY2xyLXNpZGVuYXYtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItc2lkZW5hdi1ib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCk7LS1jbHItc2lkZW5h''@;'; put 'put ''di1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2Vs''@;'; put 'put ''ZWN0aW9uLWNvbG9yKTstLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXNpZGVuYXYtaGVhZGVyLWNvbG9yOnZhcigtLWNsci1oNi1jb2xvcik7LS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2xyLWg2LWZvbnQtd2VpZ2h0KTstLWNsci1zaWRlbmF2LWhlYWRlci1mb250LWZhbWlseTp2YXIoLS1jbHItaDYtZm9udC1mYW1pbHkpOy0tY2xyLXNpZGVuYXYtY29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTstLWNsci1zaWRlbmF2LWZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMS1m''@;'; put 'put ''b250LXdlaWdodCl9LnNpZGVuYXZ7bGluZS1oZWlnaHQ6MS4ycmVtO21heC13aWR0aDoxNS42cmVtO21pbi13aWR0aDoxMC44cmVtO3dpZHRoOjE4JTtib3JkZXItcmlnaHQ6LjA1cmVtIHNvbGlkICNjY2M7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uc2lkZW5hdiAuc2lk''@;'; put 'put ''ZW5hdi1jb250ZW50e2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZy1ib3R0b206MS4ycmVtfS5zaWRlbmF2IC5zaWRlbmF2LWNvbnRlbnQgLm5hdi1saW5re2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQt''@;'; put 'put ''cmFkaXVzOnZhcigtLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1ib3JkZXItcmFkaXVzLCAu''@;'; put 'put ''MTVyZW0pO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7d2lkdGg6MTAwJX0uc2lkZW5hdiAuc2lkZW5hdi1jb250ZW50Pi5uYXYtbGlua3ttYXJnaW46MS4ycmVtIDAgMCAxLjVyZW07cGFkZGluZy1sZWZ0Oi42''@;'; put 'put ''cmVtO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtaGVhZGVyLWNvbG9yLCAjMzMzMzMzKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXNpZGVuYXYtaGVhZGVyLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5l''@;'; put 'put ''eHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6LjdyZW07''@;'; put 'put ''bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbH0uc2lkZW5hdiAuc2lkZW5hdi1jb250ZW50Pi5uYXYtbGluazpob3ZlcntiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0uc2lkZW5h''@;'; put 'put ''diAuc2lkZW5hdi1jb250ZW50Pi5uYXYtbGluay5hY3RpdmV7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtYmctY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtY29s''@;'; put 'put ''b3IsIGJsYWNrKX0uc2lkZW5hdiAubmF2LWdyb3Vwe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItc2lkZW5hdi1mb250LXdlaWdodCwgNDAwKTtmb250LXNpemU6LjdyZW07bGV0''@;'; put 'put ''dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbi10b3A6MS4ycmVtO3dpZHRoOjEwMCV9LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QsLnNpZGVuYXYgLm5hdi1ncm91cCBsYWJlbHtwYWRkaW5nOjAgMCAwIDEuOHJlbTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0''@;'; put 'put ''aDoxMDAlO21hcmdpbjowIC4zcmVtfS5zaWRlbmF2IC5uYXYtZ3JvdXAgLm5hdi1saXN0e2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tdG9wOjB9LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QgLm5hdi1saW5re2xpbmUtaGVpZ2h0Oi44cmVtO3BhZGRpbmc6LjJyZW0gMCAuMnJlbSAuNnJl''@;'; put 'put ''bX0uc2lkZW5hdiAubmF2LWdyb3VwIC5uYXYtbGlzdCAubmF2LWxpbms6aG92ZXJ7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QgLm5hdi1saW5rLmFj''@;'; put 'put ''dGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1iZy1jb2xvciwgI2Q4ZTNlOSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1jb2xvciwgYmxhY2spfS5zaWRlbmF2IC5uYXYtZ3JvdXAg''@;'; put 'put ''bGFiZWx7Y29sb3I6IzMzMztjb2xvcjp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItY29sb3IsICMzMzMzMzMpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC13ZWlnaHQsIDUwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIg''@;'; put 'put ''TmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1zaWRlbmF2LWhlYWRlci1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouN3Jl''@;'; put 'put ''bTtsaW5lLWhlaWdodDoxLjJyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5zaWRlbmF2IC5uYXYtZ3JvdXAgaW5wdXRbdHlwZT1jaGVja2JveF17cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7Y2xpcC1wYXRoOmluc2V0KDUwJSk7cGFkZGluZzowO2JvcmRl''@;'; put 'put ''cjowO2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dG9wOjA7bGVmdDowfS5zaWRlbmF2IC5uYXYtZ3JvdXAgaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXMrbGFiZWx7b3V0bGluZTojM2I5OWZjIGF1dG8gLjI1cmVtfS5zaWRlbmF2IC5j''@;'; put 'put ''b2xsYXBzaWJsZSBsYWJlbHtwYWRkaW5nOjAgMCAwIDEuM3JlbX0uc2lkZW5hdiAuY29sbGFwc2libGUgbGFiZWw6YWZ0ZXJ7Y29udGVudDoiIjtmbG9hdDpsZWZ0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0uNHJlbSkgdHJhbnNsYXRlWSguMzVyZW0p''@;'; put 'put ''O2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmlsbCUzQSUyMzlhOWE5YSUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUz''@;'; put 'put ''RSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUz''@;'; put 'put ''RSUwQSUzQyUyRnN2ZyUzRSUwQSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MH0uc2lkZW5hdiAuY29sbGFwc2libGUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubmF2LWxpc3Qs''@;'; put 'put ''LnNpZGVuYXYgLmNvbGxhcHNpYmxlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWR+dWx7aGVpZ2h0OjA7ZGlzcGxheTpub25lfS5zaWRlbmF2IC5jb2xsYXBzaWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XX4ubmF2LWxpc3QsLnNpZGVuYXYgLmNvbGxhcHNpYmxlIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdfnVse2hlaWdodDphdXRvfS5zaWRlbmF2IC5jb2xsYXBzaWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkfmxhYmVsOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGUoLS4zNXJlbSkgdHJhbnNsYXRlWSgtLjRyZW0pfTpyb290ey0tY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi1kaXZpZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC03MDApOy0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXZlcnRpY2FsLW5hdi1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xy''@;'; put 'put ''LXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItdmVydGljYWwt''@;'; put 'put ''bmF2LWhlYWRlci1mb250LXdlaWdodDp2YXIoLS1jbHItcDQtZm9udC13ZWlnaHQpfS5jbHItdmVydGljYWwtbmF2e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZy10b3A6LjlyZW07d2lkdGg6MTJyZW07bWluLXdpZHRoOjIuNHJlbTtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yLCAjZThlOGU4KTt3aWxsLWNoYW5nZTp3aWR0aDt0cmFuc2l0aW9uOndpZHRoIC4ycyBlYXNlLWluLW91dH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWRpdmlkZXJ7Ym9yZGVyLWNvbG9yOiNj''@;'; put 'put ''Y2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZp''@;'; put 'put ''ZGVyLWJvcmRlci13aWR0aCwgLjA1cmVtKTttYXJnaW46LjZyZW0gMH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWNvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMSBhdXRvO292ZXJmbG93LXk6YXV0bztvdmVyZmxvdy14OmhpZGRlbn0uY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdiAubmF2LWdyb3Vwe2Rpc3BsYXk6YmxvY2s7ZmxleDowIDAgYXV0bztoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OjEuOHJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5h''@;'; put 'put ''di1pdGVtLWNvbG9yLCAjNjY2NjY2KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtwb3NpdGlvbjpyZWxhdGl2ZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRv''@;'; put 'put ''bTowO2xlZnQ6MDt3aWR0aDouMTVyZW07YmFja2dyb3VuZDp2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZlIC5uYXYtaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItdmVydGljYWwt''@;'; put 'put ''bmF2LWljb24tYWN0aXZlLWNvbG9yLCAjMDA3MmEzKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQ6aG92ZXJ7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yLCAjY2NjY2NjKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5re2ZsZXg6MSAxIGF1dG87cGFkZGluZy1sZWZ0OjA7bWlu''@;'; put 'put ''LXdpZHRoOjB9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtaWNvbnttYXJnaW4tbGVmdDoxLjJyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtdGV4dHtwYWRkaW5nLWxlZnQ6MS4ycmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYt''@;'; put 'put ''Z3JvdXAtY29udGVudCAubmF2LWljb24rLm5hdi10ZXh0e3BhZGRpbmctbGVmdDowfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmsrLm5hdi1ncm91cC10ZXh0e2Rpc3BsYXk6bm9uZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIsLmNsci12ZXJ0''@;'; put 'put ''aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2Vye2ZsZXg6MCAwIDEuOHJlbTtib3JkZXI6MDtoZWlnaHQ6MS44cmVtO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyO291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5h''@;'; put 'put ''di10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0s''@;'; put 'put ''LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV17Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWNvbG9yLCBibGFjayl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2Vye2Rp''@;'; put 'put ''c3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7aGVpZ2h0OjEuOHJlbTttYXJnaW4tdG9wOi0uOXJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87Y29sb3I6aW5oZXJp''@;'; put 'put ''dDtvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpsZWZ0fS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlciAubmF2LWdyb3VwLXRyaWdnZXItaWNvbntmbGV4LXNocmluazowO3dpZHRoOi44cmVtO2FsaWduLXNlbGY6Y2VudGVyO21hcmdpbi1yaWdodDouNXJlbTt0cmFuc2l0''@;'; put 'put ''aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXR9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLWljb257bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6LjVyZW07dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlcisubmF2LWNv''@;'; put 'put ''bnRlbnR7Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVtO2JvcmRlci10b3At''@;'; put 'put ''d2lkdGg6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLXdpZHRoLCAuMDVyZW0pO3BhZGRpbmctdG9wOi42cmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdGV4dCwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmt7aGVpZ2h0OjEuOHJlbTtwYWRk''@;'; put 'put ''aW5nOjAgLjZyZW0gMCAxLjJyZW07bGluZS1oZWlnaHQ6MS44cmVtO291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10ZXh0LC5jbHItdmVydGljYWwtbmF2IC5uYXYtdGV4dHtmbGV4OjEgMSBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxv''@;'; put 'put ''dzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmt7ZGlzcGxheTpmbGV4O2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNvbG9yLCAjNjY2NjY2KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsuYWN0''@;'; put 'put ''aXZle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtwb3NpdGlv''@;'; put 'put ''bjpyZWxhdGl2ZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDouMTVyZW07YmFja2dyb3VuZDp2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9y''@;'; put 'put ''KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yLCAjMDA3MmEzKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbms6aG92ZXJ7Y29sb3I6IzY2Njtjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yLCAjY2NjY2NjKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2xy''@;'; put 'put ''LXZlcnRpY2FsLW5hdiAubmF2LWhlYWRlcntwYWRkaW5nOjAgLjZyZW0gMCAxLjJyZW07Zm9udC1zaXplOi42cmVtO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhlYWRlci1mb250LXdlaWdodCwgNjAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7''@;'; put 'put ''bGluZS1oZWlnaHQ6MS44cmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaWNvbntmbGV4OjAgMCAuOHJlbTthbGlnbi1zZWxmOmNlbnRlcjtoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07bWluLWhlaWdodDouOHJlbTttaW4td2lkdGg6LjhyZW07bWFyZ2luLXJpZ2h0Oi4zcmVtO3ZlcnRpY2Fs''@;'; put 'put ''LWFsaWduOm1pZGRsZX0uY2xyLXZlcnRpY2FsLW5hdiBjbHItdmVydGljYWwtbmF2LWdyb3VwLWNoaWxkcmVue2Rpc3BsYXk6YmxvY2t9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1idG57ZmxleDoxIDEgYXV0bztwYWRkaW5nOjA7bWFyZ2luOjA7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vy''@;'; put 'put ''c29yOnBvaW50ZXI7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX0uY2xyLXZlcnRpY2FsLW5hdj4ubmF2LWxpbmssLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1jb250ZW50Pi5uYXYtbGlua3tmbGV4OjAgMCAxLjhyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dl''@;'; put 'put ''cntmbGV4OjAgMCAxLjhyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlciAubmF2LWdyb3VwLXRleHR7ZGlzcGxheTpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaWNvbisubmF2LWdyb3VwLXRleHR7cGFkZGluZy1sZWZ0OjB9LmNsci12ZXJ0aWNh''@;'; put 'put ''bC1uYXYuaGFzLW5hdi1ncm91cHMgLm5hdi1saW5rLC5jbHItdmVydGljYWwtbmF2Lmhhcy1uYXYtZ3JvdXBzIC5uYXYtZ3JvdXAgLm5hdi1ncm91cC10ZXh0LC5jbHItdmVydGljYWwtbmF2Lmhhcy1uYXYtZ3JvdXBzIC5uYXYtZ3JvdXAgLm5hdi1ncm91cC10cmlnZ2Vye2ZvbnQtd2VpZ2h0''@;'; put 'put ''OjYwMH0uY2xyLXZlcnRpY2FsLW5hdi5oYXMtbmF2LWdyb3VwcyAubmF2LWdyb3VwLWNoaWxkcmVuIC5uYXYtbGlua3tmb250LXdlaWdodDo0MDB9LmNsci12ZXJ0aWNhbC1uYXYuaGFzLWljb25zIC5uYXYtZ3JvdXAtY2hpbGRyZW4gLm5hdi1saW5re3BhZGRpbmctbGVmdDoyLjNyZW19LmNs''@;'; put 'put ''ci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC5hY3RpdmU6bm90KC5pcy1leHBhbmRlZCkgLm5hdi1ncm91cC1jb250ZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWxl''@;'; put 'put ''ZnQ6LjE1cmVtIHNvbGlkIHZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAuYWN0aXZlOm5vdCguaXMtZXhwYW5kZWQpIC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWljb257ZmlsbDojMDA3MmEzO2ZpbGw6dmFyKC0tY2xy''@;'; put 'put ''LXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvciwgIzAwNzJhMyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGluay5hY3RpdmV+Lm5hdi1ncm91cC10cmlnZ2Vye2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12''@;'; put 'put ''ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGluazpob3Zlcn4ubmF2LWdyb3VwLXRyaWdnZXJ7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2Fs''@;'; put 'put ''LW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyl9LmNsci12ZXJ0aWNhbC1uYXY6bm90KC5pcy1jb2xsYXBzZWQpIC5uYXYtbGluaysubmF2LWdyb3VwLXRyaWdnZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51''@;'; put 'put ''XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZHt3aWR0aDoyLjRyZW07bWluLXdpZHRoOjIuNHJlbTtjdXJzb3I6cG9pbnRlcn0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90''@;'; put 'put ''KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LXRyaWdnZXJ7bWFyZ2luLXJpZ2h0Oi4xNXJlbX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1i''@;'; put 'put ''dXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWljb257bWFyZ2luOjA7bWFyZ2luLWxlZnQ6LjhyZW19Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAu''@;'; put 'put ''Y2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGlua3tmbGV4OjAgMCAyLjRyZW19Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZl''@;'; put 'put ''cnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGlua34ubmF2LWdyb3VwLXRyaWdnZXJ7ZmxleDowIDAgLjhyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSgtLjhyZW0pO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9w''@;'; put 'put ''ZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1''@;'; put 'put ''cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlcntwYWRkaW5nOjB9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC10cmlnZ2Vye3BhZGRpbmctbGVmdDowfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFw''@;'; put 'put ''c2VkIC5uYXYtZ3JvdXAtdHJpZ2dlciBjbHItaWNvbi5uYXYtZ3JvdXAtdHJpZ2dlci1pY29ue2hlaWdodDoxLjhyZW07d2lkdGg6LjVyZW07bWFyZ2luLWxlZnQ6LjE1cmVtO21hcmdpbi1yaWdodDowfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpu''@;'; put 'put ''b3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlciBjZHMtaWNvbi5uYXYtZ3JvdXAtdHJpZ2dlci1pY29ue3dpZHRoOi41cmVtfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJm''@;'; put 'put ''bG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAsLm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1l''@;'; put 'put ''bnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1saW5re2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNv''@;'; put 'put ''bGxhcHNlZC5oYXMtaWNvbnMgLm5hdi1ncm91cHtkaXNwbGF5OmJsb2NrfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29u''@;'; put 'put ''cyAubmF2LWxpbmt7ZGlzcGxheTpmbGV4fS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29ucyAubmF2LWdyb3VwLXRleHQs''@;'; put 'put ''Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQuaGFzLWljb25zIC5uYXYtdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMXB4''@;'; put 'put ''LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjB9LmNsci12ZXJ0aWNhbC1uYXYubmF2LXRyaWdnZXItLWJvdHRvbSAubmF2''@;'; put 'put ''LXRyaWdnZXJ7b3JkZXI6MjttYXJnaW4tdG9wOjB9LmNsci12ZXJ0aWNhbC1uYXYubmF2LXRyaWdnZXItLWJvdHRvbSAubmF2LXRyaWdnZXIrLm5hdi1jb250ZW50e2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJp''@;'; put 'put ''Z2dlci1kaXZpZGVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci13aWR0aCwgLjA1''@;'; put 'put ''cmVtKTtib3JkZXItdG9wOm5vbmU7cGFkZGluZy10b3A6MH06cm9vdHstLWNsci1zbGlkaW5nLXBhbmVsLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1uYXYtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLXJl''@;'; put 'put ''c3BvbnNpdmUtbmF2LWhvdmVyLWJnOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LXRyaWdnZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1ib3JkZXItcmFkaXVzOnZhcigtLWNs''@;'; put 'put ''ci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1yZXNwb25zaXZlLW5hdi1oYW1idXJnZXItYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1ib3JkZXItcmFkaXVzKTstLWNsci1yZXNwb25zaXZlLW5hdi1vdmVyZmxvdy1ib3JkZXItcmFkaXVzOi4ycmVt''@;'; put 'put ''Oy0tY2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJvcC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1yZXNwb25zaXZlLW5hdi1oZWFkZXItYmFja2Ryb3Atb3BhY2l0eTouODV9LmNsci1uYXYtY2xvc2V7bWFyZ2luOi43NXJlbTstLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCl9LmNsci1uYXYtY2xvc2U6aG92ZXIsLmNsci1uYXYtY2xvc2U6Zm9jdXN7LS1jb2xvcjp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvcil9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlciwuaGVhZGVyLW92ZXJmbG93LXRy''@;'; put 'put ''aWdnZXJ7ZGlzcGxheTpub25lfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbiwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YmVmb3JlLC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW46''@;'; put 'put ''YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi4xcmVtO3dpZHRoOjEuMnJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1y''@;'; put 'put ''YWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LWhhbWJ1cmdlci1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbiwuY2xyLW5hdi1jbG9zZT5zcGFue3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFs''@;'; put 'put ''aWduOm1pZGRsZX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YmVmb3JlLC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7bGVmdDowfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjpiZWZvcmUsLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmV7dG9wOi0uMzVyZW19LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Ym90dG9tOi0uMzVyZW19''@;'; put 'put ''LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3BhbiwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbntiYWNrZ3JvdW5kOjAgMH0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFm''@;'; put 'put ''dGVyLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbjphZnRlcntsZWZ0Oi4xNXJlbTt0cmFuc2Zvcm0tb3JpZ2luOjklO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZl''@;'; put 'put ''PnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUo''@;'; put 'put ''LTQ1ZGVnKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbiwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjpiZWZvcmUsLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2U+c3BhbiwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5h''@;'; put 'put ''di1jbG9zZT5zcGFuOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouMnJlbTt3aWR0aDouMnJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1yYWRpdXM6LjJyZW07Ym9y''@;'; put 'put ''ZGVyLXJhZGl1czp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtb3ZlcmZsb3ctYm9yZGVyLXJhZGl1cywgLjJyZW0pfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW57cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5oZWFkZXIt''@;'; put 'put ''b3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowfS5oZWFkZXItb3Zl''@;'; put 'put ''cmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZXt0b3A6LS40cmVtfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Ym90dG9tOi0uNHJlbX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIu''@;'; put 'put ''YWN0aXZlPnNwYW4sLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW57YmFja2dyb3VuZDowIDB9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNw''@;'; put 'put ''YW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmFmdGVye2hlaWdodDouMXJlbTt3aWR0aDoxLjJyZW07bGVmdDotLjNyZW07dHJhbnNmb3JtLW9yaWdpbjotMyU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5z''@;'; put 'put ''cGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbjpiZWZvcmV7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoLTQ1''@;'; put 'put ''ZGVnKX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlciwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQ6''@;'; put 'put ''MCAwO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxLjJyZW07aGVpZ2h0OjNyZW07d2lkdGg6M3JlbTtwYWRkaW5nOjAgMCAuMnJlbTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNm''@;'; put 'put ''YWZhZmEpO29wYWNpdHk6LjY1O29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtb3BhY2l0eSwgLjY1KX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcjpmb2N1cywubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmZvY3Vze291dGxpbmUt''@;'; put 'put ''b2Zmc2V0Oi0uMjVyZW19Lm1haW4tY29udGFpbmVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI6ZW5hYmxlZDpob3ZlciwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmVuYWJsZWQ6aG92ZXJ7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYt''@;'; put 'put ''aG92ZXItb3BhY2l0eSwgMSl9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI6ZGlzYWJsZWQsLm1haW4tY29udGFpbmVyIC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2''@;'; put 'put ''LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi5jbHItbmF2LWxldmVsLTF7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDphdXRvO2JvdHRvbTowO2xlZnQ6MDtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbmF2LWJhY2tncm91bmQtY29s''@;'; put 'put ''b3IsICNlOGU4ZTgpO3otaW5kZXg6MTAzOTtoZWlnaHQ6MTAwdmg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMThyZW0pO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0ye2Rpc3BsYXk6ZmxleDtmbGV4''@;'; put 'put ''LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OmF1dG87YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLW5hdi1iYWNrZ3JvdW5kLWNvbG9yLCAjZThlOGU4KTt6LWluZGV4OjEwMzk7aGVpZ2h0OjEwMHZoO3Ry''@;'; put 'put ''YW5zZm9ybTp0cmFuc2xhdGUoMThyZW0pO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlfS5tYWluLWNvbnRhaW5lciAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTJ7b3ZlcmZsb3c6aW5oZXJpdH0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiwubWFpbi1j''@;'; put 'put ''b250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1s''@;'; put 'put ''ZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRle2ZsZXgtZGlyZWN0aW9u''@;'; put 'put ''OmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNofS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiBhc2lk''@;'; put 'put ''ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRle2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTAwJX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0xIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2e3BhZGRpbmctbGVmdDowfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYt''@;'; put 'put ''aXRlbSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1pdGVtLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtaXRlbSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5h''@;'; put 'put ''di1pdGVte2hlaWdodDoxLjhyZW07bWFyZ2luLXJpZ2h0OjB9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5z''@;'; put 'put ''dWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmt7cGFkZGluZzowIC42cmVtIDAgMS4ycmVtO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQt''@;'; put 'put ''b3ZlcmZsb3c6ZWxsaXBzaXM7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvciwgIzY2NjY2Nil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYg''@;'; put 'put ''Lm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5h''@;'; put 'put ''di5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2Fs''@;'; put 'put ''LW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5h''@;'; put 'put ''di1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3Jle2NvbnRl''@;'; put 'put ''bnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOi4xNXJlbTtiYWNrZ3JvdW5kOnZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IpfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5h''@;'; put 'put ''Y3RpdmUgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbiwubWFp''@;'; put 'put ''bi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb257ZmlsbDojMDA3MmEzO2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvciwgIzAwNzJhMyl9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xy''@;'; put 'put ''LW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNv''@;'; put 'put ''bnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92ZXJ7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yLCAjY2NjY2NjKTt0ZXh0LWRlY29yYXRpb246bm9uZX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0x''@;'; put 'put ''IC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAu''@;'; put 'put ''c3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92''@;'; put 'put ''ZXIsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmV7Ym94LXNoYWRvdzpub25lfS5tYWluLWNvbnRhaW5lciAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc2lkZW5hdi5j''@;'; put 'put ''bHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmV7Y29sb3I6aW5oZXJpdDtiYWNr''@;'; put 'put ''Z3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtaG92ZXItYmcsIHdoaXRlKX0ubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5j''@;'; put 'put ''bHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0ye2JvcmRlci1yaWdodDpub25lfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4t''@;'; put 'put ''Y29udGFpbmVyIC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZDojZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWhlYWRl''@;'; put 'put ''ci1mb250LWNvbG9yLCAjZmFmYWZhKTtvcGFjaXR5Oi4xNTtvcGFjaXR5OnZhcigtLWNsci1oZWFkZXItZGl2aWRlci1vcGFjaXR5LCAuMTUpO29wYWNpdHk6LjE1O2hlaWdodDoycmVtO3dpZHRoOi4wNXJlbTt3aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO3Rv''@;'; put 'put ''cDouNXJlbTtsZWZ0OjB9Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmJyYW5kaW5ne21heC13aWR0aDoxMnJlbTttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmd7cGFkZGluZy1sZWZ0''@;'; put 'put ''OjB9Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgLmNsci1pY29uLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIrLmJyYW5kaW5nIC5sb2dvLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5o''@;'; put 'put ''ZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIrLmJyYW5kaW5nIGNkcy1pY29uLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIrLmJyYW5kaW5nIGNsci1pY29ue2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuYnJhbmRpbmcrLmhlYWRl''@;'; put 'put ''ci1vdmVyZmxvdy10cmlnZ2VyLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItbmF2Ky5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcnttYXJnaW4tbGVmdDphdXRvfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1iYWNrZHJvcCwubWFpbi1j''@;'; put 'put ''b250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtiYWNrZ3JvdW5kOiMwMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtaGVhZGVyLWJhY2tkcm9w''@;'; put 'put ''LWJnLWNvbG9yLCBibGFjayk7b3BhY2l0eTouODU7b3BhY2l0eTp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtaGVhZGVyLWJhY2tkcm9wLW9wYWNpdHksIC44NSk7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxMDM4fS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIg''@;'; put 'put ''LmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluaywubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5o''@;'; put 'put ''ZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmt7ZmxleDowIDAgYXV0bztvcGFjaXR5OjE7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItdmVydGljYWwtbmF2LWl0ZW0tY29sb3IsICM2NjY2NjYpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUg''@;'; put 'put ''LmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5mYSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLWhh''@;'; put 'put ''bWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAuZmEsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi1pY29uLC5tYWluLWNvbnRh''@;'; put 'put ''aW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5mYSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24s''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLmZhe2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMSAubmF2LWxpbmsgLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFk''@;'; put 'put ''ZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtdGV4dHtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojNjY2''@;'; put 'put ''O2NvbG9yOnZhcigtLWNsci1zbGlkaW5nLXBhbmVsLXRleHQtY29sb3IsICM2NjY2NjYpO2xpbmUtaGVpZ2h0OjEuMnJlbTtwYWRkaW5nOi4zcmVtIDAgLjNyZW0gMS4ycmVtO3doaXRlLXNwYWNlOm5vcm1hbDtmb250LXdlaWdodDo0MDB9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2Vy''@;'; put 'put ''LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtaWNvbisu''@;'; put 'put ''bmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29u''@;'; put 'put ''dGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3Rp''@;'; put 'put ''dmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMSAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFk''@;'; put 'put ''ZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmV7Y29udGVudDoiIjtwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6LjE1cmVtO2JhY2tncm91bmQ6dmFyKC0tY2xyLW5hdi1hY3RpdmUtYm94LXNoYWRvdy1jb2xvcil9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxl''@;'; put 'put ''dmVsLTEgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVu''@;'; put 'put ''dSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29ue2Zp''@;'; put 'put ''bGw6IzAwNzJhMztmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3RpdmUtY29sb3IsICMwMDcyYTMpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluazpob3ZlciwubWFpbi1jb250''@;'; put 'put ''YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6aG92ZXIs''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbms6aG92ZXJ7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yLCAjY2NjY2NjKTt0ZXh0LWRlY29yYXRpb246bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMSAubmF2LWxpbmsuYWN0aXZlPi5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZlPi5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51''@;'; put 'put ''IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmU+Lm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHR7Y29s''@;'; put 'put ''b3I6aW5oZXJpdH0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXJ7ZGlzcGxheTpub25lfS5tYWluLWNv''@;'; put 'put ''bnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5ne3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MThyZW07bWF4LXdpZHRoOjE4cmVtO3otaW5kZXg6MTA0MDtwYWRkaW5nLWxlZnQ6MS4ycmVtfS5tYWluLWNvbnRhaW5l''@;'; put 'put ''ci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nPi5uYXYtbGlua3tvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgLmNsci1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51''@;'; put 'put ''IC5oZWFkZXIgLmJyYW5kaW5nIC5sb2dvLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIGNsci1pY29ue2Rpc3BsYXk6aW5saW5l''@;'; put 'put ''LWJsb2NrfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uW3NoYXBlPXZtLWJ1Z10sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgY2xyLWljb25bc2hhcGU9dm0tYnVnXSwubWFp''@;'; put 'put ''bi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyAuY2xyLXZtdy1sb2dve2JhY2tncm91bmQtY29sb3I6IzhjOGM4Yztib3JkZXItcmFkaXVzOi4xNXJlbX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyAu''@;'; put 'put ''dGl0bGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItc2xpZGluZy1wYW5lbC10ZXh0LWNvbG9yLCAjNjY2NjY2KTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbn0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZXtwb3NpdGlv''@;'; put 'put ''bjpmaXhlZDt0b3A6MDtyaWdodDphdXRvO2xlZnQ6MDt6LWluZGV4OjEwMzk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxOC42cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZTphZnRlcntjb250''@;'; put 'put ''ZW50Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbntiYWNrZ3JvdW5kOjAgMH0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1o''@;'; put 'put ''YW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2xlZnQ6LjE1cmVtO3RyYW5zZm9ybS1vcmlnaW46OSU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmV7''@;'; put 'put ''dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcnt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlci1uYXYuY2xyLW5h''@;'; put 'put ''di1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVu''@;'; put 'put ''dSAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xe3BhZGRpbmctdG9wOjQuMnJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBl''@;'; put 'put ''YXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5zaWRlbmF2LWNvbnRlbnQsLm1h''@;'; put 'put ''aW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5zaWRlbmF2LWNvbnRlbnQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xIC5zaWRlbmF2LWNvbnRlbnQsLm1haW4tY29udGFp''@;'; put 'put ''bmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xIC5zaWRlbmF2LWNvbnRlbnR7cGFkZGluZy1ib3R0b206MS4ycmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWlu''@;'; put 'put ''LWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc2lkZW5hdi5jbHItbmF2''@;'; put 'put ''LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51''@;'; put 'put ''IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0ye3BhZGRpbmctdG9wOjEuMnJl''@;'; put 'put ''bX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7bGVmdDphdXRvO3otaW5kZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xOC42cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0u''@;'; put 'put ''bWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlOmFmdGVye2NvbnRlbnQ6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW57YmFja2dyb3VuZDowIDB9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZs''@;'; put 'put ''b3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7aGVpZ2h0Oi4xcmVtO3dpZHRoOjEuMnJlbTtsZWZ0Oi0uM3JlbTt0cmFuc2Zvcm0tb3JpZ2luOi0zJTt0cmFuc2l0aW9u''@;'; put 'put ''OnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRl''@;'; put 'put ''cnt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5l''@;'; put 'put ''ci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xy''@;'; put 'put ''LW5hdi1sZXZlbC0xe292ZXJmbG93OmluaGVyaXQ7d2lkdGg6MThyZW07bWF4LXdpZHRoOjE4cmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Ym5hdi5j''@;'; put 'put ''bHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ct''@;'; put 'put ''bWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7d2lkdGg6MThyZW07bWF4LXdpZHRoOjE4cmVtfX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KXsubWFpbi1jb250YWluZXIgLmhlYWRlciAuYnJhbmRpbmd7bWF4LXdpZHRoOjcuMnJlbTttaW4td2lkdGg6''@;'; put 'put ''MDtvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnNpZGVu''@;'; put 'put ''YXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTQuNHJlbSl9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLnN1Ym5h''@;'; put 'put ''di5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7dHJhbnNmb3JtOnRyYW5z''@;'; put 'put ''bGF0ZSgxNC40cmVtKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZ3t3aWR0aDoxNC40cmVtO21heC13aWR0aDoxNC40cmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwu''@;'; put 'put ''bWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnNpZGVuYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtvdmVyZmxvdzppbmhlcml0O3dpZHRoOjE0LjRyZW07bWF4LXdpZHRoOjE0LjRyZW19Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2Vy''@;'; put 'put ''LW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6YXV0bztsZWZ0OjA7ei1pbmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoMTVyZW0pO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51''@;'; put 'put ''IC5jbHItbmF2LWNsb3NlOmFmdGVye2NvbnRlbnQ6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNv''@;'; put 'put ''bnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0ye3dpZHRoOjE0LjRyZW07bWF4LXdpZHRoOjE0LjRyZW19Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2xlZnQ6YXV0bzt6LWluZGV4OjEwMzk7dHJhbnNmb3JtOnRyYW5z''@;'; put 'put ''bGF0ZSgtMTVyZW0pO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfX06cm9vdHstLWNsci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9yOnZhcigtLWNsci1jb2xvci1h''@;'; put 'put ''Y3Rpb24tNjAwKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMTp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy00MDApOy0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yOnZhcigtLWNsci1jb2xvci1kYW5nZXItODAwKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMzp2YXIoLS1jbHItcHJvZ3Jl''@;'; put 'put ''c3MtYWx0LWNvbG9yLTIpOy0tY2xyLXByb2dyZXNzLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCl9LnByb2dyZXNzLC5wcm9ncmVzcy1zdGF0aWN7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjA7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0''@;'; put 'put ''OjJlbTttYXJnaW46MDttYXgtaGVpZ2h0Oi43cmVtO21pbi1oZWlnaHQ6LjJyZW07b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0ucHJvZ3Jlc3M+cHJvZ3Jlc3N7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFu''@;'; put 'put ''Y2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAwNzJhMyk7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3Mt''@;'; put 'put ''YmctY29sb3IsICNlOGU4ZTgpO2JvcmRlcjowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LnByb2dyZXNzPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1kZWZhdWx0LWNv''@;'; put 'put ''bG9yLCAjMDA3MmEzKX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9yLCAjMDA3MmEzKX0ucHJvZ3Jlc3M+cHJvZ3Jlc3NbdmFsdWU9IjAi''@;'; put 'put ''XTo6LW1vei1wcm9ncmVzcy1iYXJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6I2U4ZThlODtjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYmctY29sb3IsICNlOGU4ZTgpO21p''@;'; put 'put ''bi13aWR0aDoyLjRyZW07YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnByb2dyZXNzPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5wcm9n''@;'; put 'put ''cmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy1iYXJ7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1iZy1jb2xvciwgI2U4ZThlOCl9LnByb2dyZXNzPnByb2dyZXNzOjotd2Via2l0LXByb2dy''@;'; put 'put ''ZXNzLWlubmVyLWVsZW1lbnR7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmV9LnByb2dyZXNzPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJhbnNpdGlvbjp3''@;'; put 'put ''aWR0aCAuMjNzIGVhc2UtaW47dHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW47Ym9yZGVyLXJhZGl1czowfS5wcm9ncmVzcy5zdWNjZXNzPnByb2dyZXNze2NvbG9yOiM1ZWI3MTU7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAjNWViNzE1KX0ucHJvZ3Jlc3Muc3Vj''@;'; put 'put ''Y2Vzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy5zdWNjZXNzPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJh''@;'; put 'put ''cntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy53YXJuaW5nPnByb2dyZXNze2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zLCAj''@;'; put 'put ''YzIxZDAwKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTMsICNjMjFkMDApfS5wcm9ncmVzcy53YXJuaW5nPnByb2dy''@;'; put 'put ''ZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTMsICNjMjFkMDApfS5wcm9ncmVzcy5kYW5nZXI+cHJvZ3Jlc3N7Y29sb3I6I2MyMWQwMDtjb2xvcjp2YXIoLS1jbHItcHJv''@;'; put 'put ''Z3Jlc3MtYWx0LWNvbG9yLTIsICNjMjFkMDApfS5wcm9ncmVzcy5kYW5nZXI+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJv''@;'; put 'put ''Z3Jlc3MuZGFuZ2VyPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIsICNjMjFkMDApfS5wcm9ncmVzcy5sYWJlbGVkLC5wcm9ncmVzcy1zdGF0aWMubGFiZWxl''@;'; put 'put ''ZHtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OjNlbX0ucHJvZ3Jlc3MubGFiZWxlZD5zcGFuLC5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD5zcGFue2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjFlbTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjA7bGluZS1oZWlnaHQ6''@;'; put 'put ''MWVtO21hcmdpbi10b3A6LS4zNzVlbX1Aa2V5ZnJhbWVzIGNsci1wcm9ncmVzcy1mYWRlezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fS5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlPnByb2dyZXNzW3ZhbHVlPSIxMDAiXSwucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZT5wcm9ncmVzc1t2YWx1ZT0i''@;'; put 'put ''MTAwIl0rc3BhbnthbmltYXRpb246Y2xyLXByb2dyZXNzLWZhZGUgLjNzIGxpbmVhciAuNXMgZm9yd2FyZHN9LnByb2dyZXNzLmZsYXNoLWRhbmdlcj5wcm9ncmVzcywucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3N7dHJhbnNpdGlvbjpjb2xvciAuMXMgZWFzZS1vdXQgMXN9LnByb2dyZXNzLmZs''@;'; put 'put ''YXNoLWRhbmdlcj5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSwucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbixiYWNrZ3JvdW5kLWNvbG9yIC4xcyBlYXNlLW91dCAuM3M7''@;'; put 'put ''dHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4sYmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3NbdmFsdWU9IjAiXTo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSwucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3NbdmFsdWU9IjAi''@;'; put 'put ''XTo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXstd2Via2l0LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9LnByb2dyZXNzLmZsYXNoLWRhbmdlcj5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXIsLnByb2dyZXNzLmZsYXNoPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcnstbW96''@;'; put 'put ''LXRyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluLGJhY2tncm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zczt0cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbixiYWNrZ3JvdW5kLWNvbG9yIC4xcyBlYXNlLW91dCAuM3N9LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAi''@;'; put 'put ''XXtjb2xvcjojNWViNzE1O2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSwgIzVlYjcxNSl9LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl06Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6IzVlYjcxNTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQt''@;'; put 'put ''Y29sb3ItMSwgIzVlYjcxNSl9LnByb2dyZXNzLnByb2dyZXNzLWZhZGUuZmxhc2g+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdLC5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXStzcGFue2FuaW1hdGlvbjpjbHItcHJvZ3Jlc3MtZmFkZSAuNnMgbGluZWFy''@;'; put 'put ''IDFzIGZvcndhcmRzfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJde2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6''@;'; put 'put ''LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIsICNjMjFkMDApfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdOjotbW96LXByb2dyZXNz''@;'; put 'put ''LWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIsICNjMjFkMDApfUBrZXlmcmFtZXMgY2xyLXByb2dyZXNzLWxvb3BlcnswJXtsZWZ0Oi0xMDAlfXRve2xlZnQ6MTAwJX19LnByb2dyZXNzLmxvb3B7cG9z''@;'; put 'put ''aXRpb246cmVsYXRpdmV9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3N7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCB0cmFuc3BhcmVudCl9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFs''@;'; put 'put ''dWV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCB0cmFuc3BhcmVudCl9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCwgdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy5sb29wPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5wcm9ncmVzcy5sb29wOmFmdGVye2FuaW1hdGlvbjpjbHItcHJv''@;'; put 'put ''Z3Jlc3MtbG9vcGVyIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO2NvbnRlbnQ6IiAiO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1k''@;'; put 'put ''ZWZhdWx0LWNvbG9yLCAjMDA3MmEzKTt3aWR0aDo3NSV9LnByb2dyZXNzLmxvb3AuZGFuZ2VyOmFmdGVyLC5wcm9ncmVzcy5sb29wLndhcm5pbmc6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAj''@;'; put 'put ''YzIxZDAwKX0ucHJvZ3Jlc3MubG9vcC5zdWNjZXNzOmFmdGVye2JhY2tncm91bmQtY29sb3I6IzVlYjcxNTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSwgIzVlYjcxNSl9Lm5hdi1pdGVtIC5wcm9ncmVzczphZnRlcnt0b3A6MH0ucHJvZ3Jlc3Mtc3Rh''@;'; put 'put ''dGlje3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjowO3dpZHRoOjEwMCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yLCAjZThlOGU4KTtkaXNwbGF5OmJs''@;'; put 'put ''b2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtib3R0b206MDtyaWdodDowfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xv''@;'; put 'put ''ciwgIzAwNzJhMyk7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MCU7Y29udGVudDoiICJ9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9n''@;'; 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+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEwMCJdOmJlZm9yZXt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD4ucHJvZ3Jlc3MtbWV0ZXJ7cmlnaHQ6M2VtfS5wcm9ncmVzcy1zdGF0aWMuc3VjY2Vzcz4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6IzVlYjcxNTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSwgIzVlYjcxNSl9LnByb2dyZXNzLXN0YXRpYy53YXJuaW5nPi5wcm9ncmVzcy1tZXRlcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zLCAjYzIxZDAwKX0ucHJvZ3Jlc3Mtc3RhdGljLmRhbmdlcj4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMiwgI2My''@;'; put 'put ''MWQwMCl9LmNhcmQtYmxvY2sgLnByb2dyZXNzLC5jYXJkLWJsb2NrIC5wcm9ncmVzcy1zdGF0aWMsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcywuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpY3ttYXJnaW46MDttYXJnaW4tdG9wOi0uNnJlbTtoZWlnaHQ6LjE4NzVyZW07cG9zaXRpb246YWJz''@;'; put 'put ''b2x1dGU7bGVmdDowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlciwuY2FyZC1mb290ZXIgLnByb2dyZXNzPnByb2dyZXNzLC5jYXJkLWZvb3RlciAucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRl''@;'; put 'put ''cntoZWlnaHQ6LjE4NzVyZW07cG9zaXRpb246YWJzb2x1dGV9LmNhcmQtYmxvY2sgLnByb2dyZXNzLnRvcCwuY2FyZC1ibG9jayAucHJvZ3Jlc3Mtc3RhdGljLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYy50b3B7bWFyZ2luLXRv''@;'; put 'put ''cDowO3RvcDowfS5uYXYtaXRlbSAucHJvZ3Jlc3MsLm5hdi1pdGVtIC5wcm9ncmVzcy1zdGF0aWN7bWFyZ2luOjA7aGVpZ2h0Oi4yNHJlbTttaW4taGVpZ2h0Oi4yNHJlbTttYXgtaGVpZ2h0Oi4yNHJlbTtsZWZ0OjB9Lm5hdi1pdGVtIC5wcm9ncmVzcz5wcm9ncmVzcywubmF2LWl0ZW0gLnBy''@;'; put 'put ''b2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0Oi4yNHJlbTttaW4taGVpZ2h0Oi4yNHJlbTttYXgtaGVpZ2h0Oi4yNHJlbTtwb3NpdGlvbjphYnNvbHV0ZX0ucHJvZ3Jlc3MtYmxvY2t7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnkt''@;'; put 'put ''Y29udGVudDpjZW50ZXJ9LnByb2dyZXNzLWJsb2NrPip7ZmxleDowIDAgYXV0bztwYWRkaW5nLXJpZ2h0Oi42cmVtfS5wcm9ncmVzcy1ibG9jaz46Zmlyc3QtY2hpbGR7cGFkZGluZy1yaWdodDouOXJlbX0ucHJvZ3Jlc3MtYmxvY2s+Omxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDowfS5wcm9n''@;'; put 'put ''cmVzcy1ibG9jaz5sYWJlbHtmb250LXdlaWdodDo2MDB9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcywucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLXN0YXRpY3tmbGV4OjAgMSBhdXRvfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXB7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdo''@;'; put 'put ''dDphdXRvO2ZsZXg6MCAxIGF1dG87ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCV9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcy1ncm91cCAuY2xyLXJvd3ttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXAgLmNsci1yb3c+W2NsYXNzKj1j''@;'; put 'put ''bHItY29sLV17cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9ja3ttYXJnaW4tYm90dG9tOi42cmVtO3BhZGRpbmc6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2s6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmNhcmQtYmxvY2sg''@;'; put 'put ''LnByb2dyZXNzLWJsb2NrPmxhYmVse21heC13aWR0aDozMyU7bGluZS1oZWlnaHQ6LjlyZW19LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6LjYz''@;'; put 'put ''OTVyZW07bWFyZ2luLXRvcDowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9jayAucHJvZ3Jlc3M+cHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcz4ucHJvZ3Jlc3MtbWV0ZXIsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcy1zdGF0aWM+''@;'; put 'put ''cHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVye2hlaWdodDouNjM5NXJlbX1fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAucHJvZ3Jlc3MtYmxvY2s+bGFiZWwsOnJvb3QgLnByb2dyZXNzLWJsb2NrPmxhYmVse2Rpc3Bs''@;'; put 'put ''YXk6aW5saW5lLWJsb2NrfS5zcGlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDozLjZyZW07d2lkdGg6My42cmVtO21pbi1oZWlnaHQ6My42cmVtO21pbi13aWR0aDozLjZyZW07YW5pbWF0aW9uOnNwaW4gMXMgbGluZWFyIGluZmluaXRlO21hcmdp''@;'; put 'put ''bjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMGlkJTNEJTIyTGF5ZXJfMiUyMiUyMGRhdGEtbmFtZSUzRCUyMkxheWVyJTIwMiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJG''@;'; put 'put ''c3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNzIlMjA3MiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUyQyUwQSUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZpbGwlM0ElMjBub25lJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tl''@;'; put 'put ''LW1pdGVybGltaXQlM0ElMjAxMCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS13aWR0aCUzQSUyMDVweCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMC5jbHMtMSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZSUzQSUyMCUyMzAwMDAwMCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS1vcGFjaXR5''@;'; put 'put ''JTNBJTIwMC4xNSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZSUz''@;'; put 'put ''QSUyMCUyMzAwNzJhMyUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFUHJlbG9hZGVyXzcy''@;'; put 'put ''eDIlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ2NpcmNsZSUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjBjeCUzRCUyMjM2JTIyJTIwY3klM0QlMjIzNiUyMiUyMHIlM0QlMjIzMyUyMiUyRiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0yJTIyJTIwZCUz''@;'; put 'put ''RCUyMk0xNC4zJTJDNjAuOUEzMyUyQzMzJTJDMCUyQzAlMkMxJTJDMzYlMkMzJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGcGF0aCUzRSUwQSUzQyUyRnN2ZyUzRSUwQSk7dGV4dC1pbmRlbnQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwfS5zcGlubmVyLnNwaW5u''@;'; put 'put ''ZXItbWR7aGVpZ2h0OjEuOHJlbTt3aWR0aDoxLjhyZW07bWluLWhlaWdodDoxLjhyZW07bWluLXdpZHRoOjEuOHJlbX0uc3Bpbm5lci5zcGlubmVyLWlubGluZSwuc3Bpbm5lci5zcGlubmVyLXNte2hlaWdodDouOXJlbTt3aWR0aDouOXJlbTttaW4taGVpZ2h0Oi45cmVtO21pbi13aWR0aDou''@;'; put 'put ''OXJlbX0uc3Bpbm5lci5zcGlubmVyLWlubGluZXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbX0uc3Bpbm5lci5zcGlubmVyLWludmVyc2V7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjBpZCUzRCUyMkxheWVyXzIlMjIlMjBkYXRhLW5h''@;'; put 'put ''bWUlM0QlMjJMYXllciUyMDIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDcyJTIwNzIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''c3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTElMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTIlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmaWxsJTNB''@;'; put 'put ''JTIwbm9uZSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS1taXRlcmxpbWl0JTNBJTIwMTAlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2Utd2lkdGglM0ElMjA1cHglM0Il''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2UlM0ElMjAlMjNmZmZmZmYl''@;'; put 'put ''M0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2Utb3BhY2l0eSUzQSUyMDAuMTUlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xz''@;'; put 'put ''LTIlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2UlM0ElMjAlMjM3NGMxZTIlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdHlsZSUz''@;'; put 'put ''RSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRVByZWxvYWRlcl83MngyJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NjaXJjbGUlMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwY3glM0QlMjIzNiUyMiUyMGN5JTNEJTIyMzYlMjIlMjBy''@;'; put 'put ''JTNEJTIyMzMlMjIlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMiUyMiUyMGQlM0QlMjJNMTQuMyUyQzYwLjlBMzMlMkMzMyUyQzAlMkMwJTJDMSUyQzM2JTJDMyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRnBhdGglM0UlMEElM0MlMkZzdmclM0UlMEEp''@;'; put 'put ''fS5zcGlubmVyLnNwaW5uZXItbmV1dHJhbC0we2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwaWQlM0QlMjJMYXllcl8yJTIyJTIwZGF0YS1uYW1lJTNEJTIyTGF5ZXIlMjAyJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3Lncz''@;'; put 'put ''Lm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjA3MiUyMDcyJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0x''@;'; put 'put ''JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZmlsbCUzQSUyMG5vbmUlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjBzdHJva2UtbWl0ZXJsaW1pdCUzQSUyMDEwJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLXdpZHRoJTNBJTIwNXB4JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0xJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlJTNBJTIwJTIzdHJhbnNwYXJlbnQlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjBzdHJva2Utb3BhY2l0eSUzQSUyMDElM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTIlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjBzdHJva2UlM0ElMjAlMjNmZmZmZmYlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRs''@;'; put 'put ''ZSUzRVByZWxvYWRlcl83MngyJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NjaXJjbGUlMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwY3glM0QlMjIzNiUyMiUyMGN5JTNEJTIyMzYlMjIlMjByJTNEJTIyMzMlMjIlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0Ql''@;'; put 'put ''MjJjbHMtMiUyMiUyMGQlM0QlMjJNMTQuMyUyQzYwLjlBMzMlMkMzMyUyQzAlMkMwJTJDMSUyQzM2JTJDMyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRnBhdGglM0UlMEElM0MlMkZzdmclM0UlMEEpfS5zcGlubmVyLnNwaW5uZXItY2hlY2t7YW5pbWF0aW9uOm5vbmU7YmFja2dyb3VuZDp1''@;'; put 'put ''cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAzNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0El''@;'; put 'put ''MkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUyMGZvY3VzYWJsZSUzRCUyMmZhbHNlJTIyJTIwYXJpYS1oaWRkZW4lM0QlMjJ0cnVlJTIyJTIwcm9sZSUzRCUyMmltZyUy''@;'; put 'put ''MiUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDA3MmEzJTIyJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTElMjIlMjBkJTNEJTIyTTEzLjcyJTJDMjcuNjklMkMzLjI5JTJDMTcuMjdhMSUyQzElMkMwJTJDMCUyQzElMkMxLjQxLTEuNDFsOSUyQzlM''@;'; put 'put ''MzEuMjklMkM3LjI5YTElMkMxJTJDMCUyQzAlMkMxJTJDMS40MSUyQzEuNDFaJTIyJTNFJTNDJTJGcGF0aCUzRSUzQyUyRnN2ZyUzRSl9LmJ0bi1zbSAuc3Bpbm5lciwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gLnNwaW5uZXJ7aGVpZ2h0Oi42NXJlbTt3aWR0aDouNjVyZW07''@;'; put 'put ''bWluLWhlaWdodDouNjVyZW07bWluLXdpZHRoOi42NXJlbX0uYnRuLWljb246bm90KC5idG4tc20pIC5zcGlubmVye2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTttaW4taGVpZ2h0Oi44cmVtO21pbi13aWR0aDouOHJlbX1Aa2V5ZnJhbWVzIHNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10''@;'; put 'put ''b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fTpyb290ey0tY2xyLXRhYmxlLWJnY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItdGhlYWQtYmdjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MCk7LS1jbHItdGFibGUtaGVhZGVyLWJvcmRlci1ib3R0b20tY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci10YWJsZS1mb290ZXItYm9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXRhYmxlcm93''@;'; put 'put ''LWJvcmRlcmNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItdGFibGUtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItdGFibGUtYm9yZGVyd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCk7LS1jbHItdGFibGUt''@;'; put 'put ''Y29ybmVyY2VsbHJhZGl1czouMXJlbTstLWNsci10YWJsZS1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItdGhlYWQtY29sb3I6IzY2NjY2Nn0udGFibGV7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6''@;'; put 'put ''LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFy''@;'; put 'put ''KC0tY2xyLXRhYmxlLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJnY29sb3IsIHdoaXRlKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10YWJsZS1mb250LWNvbG9yLCAjNjY2NjY2KTttYXJn''@;'; put 'put ''aW46MDttYXJnaW4tdG9wOjEuMnJlbTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfS50YWJsZSB0aCwudGFibGUgdGR7Zm9udC1zaXplOi42NXJlbTtsaW5lLWhlaWdodDouN3JlbTtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVtO2JvcmRlci10b3Atd2lk''@;'; put 'put ''dGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3AtY29sb3I6I2U4ZThlODtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvciwgI2U4ZThlOCk7cGFkZGluZzouNTVyZW0gLjZyZW07dGV4dC1hbGlnbjpjZW50ZXI7dmVy''@;'; put 'put ''dGljYWwtYWxpZ246dG9wfS50YWJsZSB0aC5sZWZ0LC50YWJsZSB0ZC5sZWZ0e3RleHQtYWxpZ246bGVmdH0udGFibGUgdGgubGVmdDpmaXJzdC1jaGlsZCwudGFibGUgdGQubGVmdDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6LjNyZW19LnRhYmxlIHRoe2NvbG9yOiM2NjY7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLXRoZWFkLWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjU1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMDNlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvciwgI2ZhZmFmYSk7dmVydGlj''@;'; put 'put ''YWwtYWxpZ246Ym90dG9tO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2NjO2JvcmRlci1ib3R0b20t''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MCBub25lfS50YWJsZSB0Ym9keSt0Ym9keXtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3At''@;'; put 'put ''d2lkdGg6LjA1cmVtO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3AtY29sb3I6I2NjYztib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS50YWJsZSB0aGVhZCB0aDpmaXJz''@;'; put 'put ''dC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlIHRoZWFkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRl''@;'; put 'put ''ci10b3AtcmlnaHQtcmFkaXVzOi4xcmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS1sZWZ0LXJhZGl1czouMXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3Jk''@;'; put 'put ''ZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZS1jb21wYWN0IHRoLC50YWJsZS1jb21wYWN0IHRke3BhZGRpbmctdG9wOi4zcmVtO3BhZGRpbmctYm90dG9t''@;'; put 'put ''Oi4yNXJlbX0udGFibGUudGFibGUtdmVydGljYWwgdGhlYWQgdGh7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2Rpc3BsYXk6bm9uZX0udGFibGUudGFibGUtdmVydGljYWwgdGh7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07''@;'; put 'put ''Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7dmVydGljYWwtYWxpZ246dG9wfS50YWJsZS50YWJsZS12''@;'; put 'put ''ZXJ0aWNhbCB0ZCwudGFibGUudGFibGUtdmVydGljYWwgdGh7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0udGFibGUudGFibGUtdmVydGljYWwgdGQ6Zmlyc3QtY2hpbGQsLnRhYmxl''@;'; put 'put ''LnRhYmxlLXZlcnRpY2FsIHRoOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtd2lkdGg6LjA1cmVtO2JvcmRlci1yaWdodC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjY2M7Ym9y''@;'; put 'put ''ZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKTtmb250LXdlaWdodDo2MDB9LnRhYmxlLnRhYmxlLXZlcnRp''@;'; put 'put ''Y2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6''@;'; put 'put ''Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjFyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1''@;'; put 'put ''czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3Qt''@;'; put 'put ''Y2hpbGQgdGQ6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjFyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6bGFzdC1j''@;'; put 'put ''aGlsZCB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjFyZW07Ym9yZGVyLWJvdHRvbS1s''@;'; put 'put ''ZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0''@;'; put 'put ''LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4xcmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlLnRhYmxlLW5vYm9yZGVye2JvcmRl''@;'; put 'put ''ci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MH0udGFibGUudGFibGUtbm9ib3JkZXIgdGh7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tLWNvbG9yOiNjY2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wOjAgbm9uZX0udGFibGUudGFibGUtbm9ib3JkZXIgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjAgbm9uZX0udGFibGUudGFibGUtbm9ib3JkZXIgdGR7Ym9yZGVyLXRvcDowIG5vbmU7cGFkZGluZy10''@;'; put 'put ''b3A6LjZyZW19LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDowIG5vbmV9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoZWFkIHRoOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS1ub2JvcmRlciB0aGVhZCB0aDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6''@;'; put 'put ''MH0udGFibGUudGFibGUtbm9ib3JkZXIgdGgsLnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRke2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS1ub2JvcmRlciB0ZDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6''@;'; put 'put ''MH0udGFibGUudGFibGUtY29tcGFjdCB0aCwudGFibGUudGFibGUtY29tcGFjdCB0ZHtwYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouMjVyZW19LnRhYmxlLnRhYmxlLWNvbXBhY3QudGFibGUtbm9ib3JkZXIgdGgsLnRhYmxlLnRhYmxlLWNvbXBhY3QudGFibGUtbm9ib3JkZXIg''@;'; put 'put ''dGR7cGFkZGluZy10b3A6LjM1cmVtO3BhZGRpbmctYm90dG9tOi4zcmVtfTpyb290ey0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRp''@;'; put 'put ''dXMpOy0tY2xyLXRvb2x0aXAtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItdG9vbHRpcC1mb250LXdlaWdodDp2YXIoLS1jbHItcDMtZm9udC13ZWlnaHQpfS50b29sdGlwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVm''@;'; put 'put ''dDtvdmVyZmxvdzp2aXNpYmxlfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnR7dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuM3MgbGluZWFyO3doaXRlLXNwYWNlOm5vcm1hbDt6LWluZGV4OjEwNTB9LnRvb2x0aXA6aG92ZXI+LnRvb2x0aXAtY29udGVu''@;'; put 'put ''dCwudG9vbHRpcDpmb2N1cz4udG9vbHRpcC1jb250ZW50e3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjF9LnRvb2x0aXA6aG92ZXI+LnRvb2x0aXAtY29udGVudDplbXB0eSwudG9vbHRpcDpmb2N1cz4udG9vbHRpcC1jb250ZW50OmVtcHR5e3Zpc2liaWxpdHk6aGlkZGVuO29wYWNpdHk6''@;'; put 'put ''MH0udG9vbHRpcDpmb2N1c3tvdXRsaW5lOjB9LnRvb2x0aXA6Zm9jdXM+OmZpcnN0LWNoaWxke291dGxpbmUtb2Zmc2V0Oi4wNXJlbTtvdXRsaW5lLXdpZHRoOi4wNXJlbTtvdXRsaW5lLWNvbG9yOiMzYjk5ZmM7b3V0bGluZS1zdHlsZTpzb2xpZH0udG9vbHRpcD4udG9vbHRpcC1jb250ZW50''@;'; put 'put ''LC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1yaWdodHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdo''@;'; put 'put ''dDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGJsYWNrKTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG87Ym90dG9tOjEw''@;'; put 'put ''MCU7bGVmdDo1MCU7cmlnaHQ6YXV0bztib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTouOHJlbX0udG9vbHRpcD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcC50b29sdGlwLXRvcC1yaWdodD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAu''@;'; put 'put ''dG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LS40MnJlbTtsZWZ0OjA7dG9wOmF1dG87cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci1sZWZ0Oi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgIzAwMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yaWdodDouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4y''@;'; put 'put ''NXJlbSBzb2xpZCB0cmFuc3BhcmVudH0udG9vbHRpcC50b29sdGlwLXRvcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1sZWZ0e2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IsIHdoaXRlKTtmb250LXNp''@;'; put 'put ''emU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1j''@;'; put 'put ''b2xvciwgYmxhY2spO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDouOXJlbTttYXJnaW46MDtwYWRkaW5nOi40NXJlbSAuNnJlbTt3aWR0aDoxMnJlbTtwb3NpdGlvbjphYnNvbHV0''@;'; put 'put ''ZTt0b3A6YXV0bztib3R0b206MTAwJTtyaWdodDo1MCU7bGVmdDphdXRvO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTouOHJlbX0udG9vbHRpcC50b29sdGlwLXRvcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRl''@;'; put 'put ''bnQudG9vbHRpcC10b3AtbGVmdDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0uNDJyZW07cmlnaHQ6MDt0b3A6YXV0bztsZWZ0OmF1dG87Y29udGVudDoiIjtib3JkZXItcmlnaHQ6LjNyZW0gc29saWQgIzAwMDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAt''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgIzAwMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1sZWZ0Oi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlkIHRy''@;'; put 'put ''YW5zcGFyZW50fS50b29sdGlwLnRvb2x0aXAtYm90dG9tLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1yaWdodHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42''@;'; put 'put ''NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3Is''@;'; put 'put ''IGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07cG9zaXRpb246YWJzb2x1dGU7Ym90''@;'; put 'put ''dG9tOmF1dG87dG9wOjEwMCU7bGVmdDo1MCU7cmlnaHQ6YXV0bztib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7bWFyZ2luLXRvcDouOHJlbX0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1yaWdodD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0''@;'; put 'put ''aXAtYm90dG9tLXJpZ2h0OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LS40MnJlbTtsZWZ0OjA7Ym90dG9tOmF1dG87cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci1sZWZ0Oi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgIzAwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yaWdodDouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCB0cmFu''@;'; put 'put ''c3BhcmVudH0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0e2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IsIHdoaXRlKTtmb250LXNpemU6LjY1cmVt''@;'; put 'put ''O2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgYmxh''@;'; put 'put ''Y2spO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDouOXJlbTttYXJnaW46MDtwYWRkaW5nOi40NXJlbSAuNnJlbTt3aWR0aDoxMnJlbTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206''@;'; put 'put ''YXV0bzt0b3A6MTAwJTtyaWdodDo1MCU7bGVmdDphdXRvO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7bWFyZ2luLXRvcDouOHJlbX0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1i''@;'; put 'put ''b3R0b20tbGVmdDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0uNDJyZW07cmlnaHQ6MDtib3R0b206YXV0bztsZWZ0OmF1dG87Y29udGVudDoiIjtib3JkZXItcmlnaHQ6LjNyZW0gc29saWQgIzAwMDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgIzAwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1sZWZ0Oi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6LjI1cmVtIHNvbGlkIHRyYW5zcGFy''@;'; put 'put ''ZW50fS50b29sdGlwLnRvb2x0aXAtcmlnaHQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtcmlnaHR7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6YXV0bztsZWZ0OjEwMCU7dG9wOjUwJTtib3R0b206YXV0bztjb2xvcjojZmZmO2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0g''@;'; put 'put ''LjZyZW07d2lkdGg6MTJyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO21hcmdpbi1sZWZ0Oi44cmVtfS50b29sdGlwLnRvb2x0aXAtcmlnaHQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXJpZ2h0OmJlZm9yZXtwb3NpdGlvbjph''@;'; put 'put ''YnNvbHV0ZTt0b3A6MDtsZWZ0Oi0uNDVyZW07Ym90dG9tOmF1dG87cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci10b3A6LjNyZW0gc29saWQgIzAwMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yaWdodDouMjVyZW0gc29s''@;'; put 'put ''aWQgIzAwMDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC1sZWZ0Pi50b29s''@;'; put 'put ''dGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWxlZnR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDphdXRvO3JpZ2h0OjEwMCU7dG9wOjUwJTtib3R0b206YXV0bztjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1z''@;'; put 'put ''aXplOi42NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQt''@;'; put 'put ''Y29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07Ym9yZGVyLXRvcC1yaWdo''@;'; put 'put ''dC1yYWRpdXM6MDttYXJnaW4tcmlnaHQ6LjhyZW19LnRvb2x0aXAudG9vbHRpcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1sZWZ0OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDotLjQ1cmVtO2JvdHRv''@;'; put 'put ''bTphdXRvO2xlZnQ6YXV0bztjb250ZW50OiIiO2JvcmRlci10b3A6LjNyZW0gc29saWQgIzAwMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1sZWZ0Oi4yNXJlbSBzb2xpZCAjMDAwO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1ib3R0b206LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudH0udG9vbHRpcC50b29sdGlwLXhzPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVu''@;'; put 'put ''dC50b29sdGlwLXhze3dpZHRoOjMuNnJlbX0udG9vbHRpcC50b29sdGlwLXNtPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXNte3dpZHRoOjZyZW19LnRvb2x0aXAudG9vbHRpcC1tZD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlw''@;'; put 'put ''LWNvbnRlbnQudG9vbHRpcC1tZHt3aWR0aDoxMnJlbX0udG9vbHRpcC50b29sdGlwLWxnPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWxne3dpZHRoOjE4cmVtfS50b29sdGlwPi5idG4rLnRvb2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlw''@;'; put 'put ''LXRvcC1yaWdodD4uYnRuKy50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAudG9vbHRpcC10b3AtbGVmdD4uYnRuKy50b29sdGlwLWNvbnRlbnR7bWFyZ2luLWJvdHRvbTouNXJlbX0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1yaWdodD4uYnRuKy50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAudG9v''@;'; put 'put ''bHRpcC1ib3R0b20tbGVmdD4uYnRuKy50b29sdGlwLWNvbnRlbnR7bWFyZ2luLXRvcDouNXJlbX0udG9vbHRpcC50b29sdGlwLXJpZ2h0Pi5idG4rLnRvb2x0aXAtY29udGVudHttYXJnaW4tbGVmdDouMnJlbX0udG9vbHRpcD4uY2xyLWljb257bWFyZ2luLXJpZ2h0OjB9LnRvb2x0aXA+c3Zn''@;'; put 'put ''e3BvaW50ZXItZXZlbnRzOm5vbmV9LnRvb2x0aXAtdHJpZ2dlcjpmb2N1cysudG9vbHRpcC1jb250ZW50e3Zpc2liaWxpdHk6dmlzaWJsZX06cm9vdHstLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1mb3Jtcy1s''@;'; put 'put ''YWJlbC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC04MDApOy0tY2xyLWZvcm1zLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItZm9ybXMtdmFsaWQt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1mb3Jtcy12YWxpZC10ZXh0LWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTkwMCk7LS1jbHItZm9ybXMtc3VidGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWZvcm1zLXBsYWNl''@;'; put 'put ''aG9sZGVyLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yOiM2YTdhODE7LS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItZm9ybXMtc3VidGV4dC1kaXNh''@;'; put 'put ''YmxlZC1jb2xvcjojOGM4YzhjOy0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvcjojYjNiM2IzOy0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3I6I2IzYjNiMzstLWNsci1mb3Jtcy1sYWJlbC1kaXNhYmxlZC1jb2xvcjojOGM4YzhjOy0tY2xyLWZvcm1zLWxhYmVsLWZvbnQt''@;'; put 'put ''d2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1ib2xkKTstLWNsci1mb3Jtcy1ibG9jay1sYWJlbC1mb250LXdlaWdodDo0MDA7LS1jbHItZm9ybXMtdGV4dC1mb250LXdlaWdodDo0MDA7LS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC0wKTstLWNsci1mb3Jtcy10ZXh0YXJlYS1mb2N1c2VkLW91dGxpbmU6MCAwIC4xcmVtIC4xcmVtICM2OWMwZTI7LS1jbHItZm9ybXMtdGV4dGFyZWEtaW52YWxpZC1mb2N1c2VkLW91dGxpbmU6MCAwIC4xcmVtIC4xcmVtICNmZjc0NWM7LS1jbHItZm9ybXMtc2VsZWN0LWhvdmVyLWJh''@;'; put 'put ''Y2tncm91bmQ6cmdiYSggMjIyLCAyMjIsIDIyMiwgLjUgKTstLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKTstLWNs''@;'; put 'put ''ci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWNvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3VuZC1jb2xvcik7LS1jbHItZm9ybXMtc2VsZWN0LW11''@;'; put 'put ''bHRpcGxlLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1vcHRpb24tY29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IpOy0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1lcnJvci1mb2N1cy1jb2xvcjoj''@;'; put 'put ''ZmY3NDVjOy0tY2xyLWZvcm1zLWNoZWNrYm94LWxhYmVsLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1jb2xvcik7LS1jbHItZm9ybXMtY2hlY2tib3gtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1p''@;'; put 'put ''bmF0ZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWZvcm1zLWNoZWNrYm94LW1hcmstY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9y''@;'; put 'put ''bS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWZvcm1zLWNoZWNrYm94LWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMp''@;'; put 'put ''Oy0tY2xyLWZvcm1zLWNoZWNrYm94LWNoZWNrZWQtc2hhZG93Omluc2V0IDAgMCAwIC4zcmVtIHZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1mb3Jtcy1yYWRpby1sYWJlbC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtbGFiZWwtY29sb3Ip''@;'; put 'put ''Oy0tY2xyLWZvcm1zLXJhZGlvLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1tYXJrLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yKTstLWNsci1m''@;'; put 'put ''b3Jtcy1yYWRpby1zZWxlY3RlZC1zaGFkb3c6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWNoZWNrZWQtc2hhZG93KTstLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1zaGFkb3c6aW5zZXQgMCAwIDAgLjZyZW0gI2U4ZThlODstLWNsci1mb3Jtcy1yYWRpby1mb2N1c2VkLXNoYWRvdzowIDAg''@;'; put 'put ''LjFyZW0gLjFyZW0gIzY5YzBlMjstLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApfS5jbHItZGF0ZS1jb250YWluZXIg''@;'; put 'put ''LmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDotbW96LWZpdC1jb250ZW50O21heC13aWR0aDpmaXQtY29udGVudH0uY2xyLWZvcm0tY29udHJvbHttYXJnaW4tdG9wOjEuMnJlbTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNs''@;'; put 'put ''ci1mb3JtLWNvbnRyb2wgaW5wdXQ6Oi1tcy1yZXZlYWwsLmNsci1mb3JtLWNvbnRyb2wgaW5wdXQ6Oi1tcy1jbGVhcntkaXNwbGF5Om5vbmV9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWR7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwg''@;'; put 'put ''I2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgbGFiZWwsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jb250cm9sLWxhYmVse2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWRpc2FibGVkLWNvbG9yLCAjOGM4YzhjKX0uY2xyLWZvcm0t''@;'; put 'put ''Y29udHJvbC1kaXNhYmxlZCAuY2xyLWlucHV0LC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItdGV4dGFyZWEsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3R7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwg''@;'; put 'put ''I2IzYjNiMyk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYjNiM2IzO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVy''@;'; put 'put ''LXRodW1ie2JhY2tncm91bmQtY29sb3I6I2IzYjNiMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc3VidGV4dHtjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1mb3Jtcy1zdWJ0ZXh0LWRpc2FibGVkLWNvbG9yLCAjOGM4YzhjKX0uY2xyLWZvcm0tY29udHJvbC1tdWx0aXtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9LmNsci1mb3JtLWNvbnRyb2wtbXVsdGkgLmNsci1jb250cm9sLWxhYmVse3dpZHRoOjEwMCV9LmNsci1jb250cm9s''@;'; put 'put ''LWxhYmVse2Rpc3BsYXk6YmxvY2s7Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtY29sb3IsICM0NTQ1NDUpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb3Jtcy1sYWJlbC1mb250LXdlaWdodCwgNjAwKTts''@;'; put 'put ''aW5lLWhlaWdodDouOXJlbX0uY2xyLWNvbnRyb2wtY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItY29udHJvbC1pbmxpbmV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWNvbnRyb2wtaW5saW5lIC5jbHItY29udHJv''@;'; put 'put ''bC1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6LjZyZW07d2lkdGg6YXV0b30uY2xyLXN1YnRleHR7ZGlzcGxheTpibG9jaztmb250LXNpemU6LjU1cmVtO2xpbmUtaGVpZ2h0Oi42cmVtO2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXN1YnRleHQt''@;'; put 'put ''Y29sb3IsICM4YzhjOGMpO21hcmdpbi10b3A6LjNyZW19LmNsci1zdWJ0ZXh0LXdyYXBwZXJ7ZmxleC1iYXNpczoxMDAlO2Rpc3BsYXk6ZmxleH0uY2xyLXZhbGlkYXRlLWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07bWluLWhlaWdodDoxLjJyZW07bWluLXdpZHRoOjEuMnJlbTtj''@;'; put 'put ''b2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtkaXNwbGF5Om5vbmU7bWFyZ2luLWxlZnQ6LTEuMnJlbX0uY2xyLXN1Y2Nlc3MgLmNsci1pbnB1dHtib3JkZXItYm90dG9tLWNvbG9yOiMzYzg1MDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IsICMzYzg1MDApfS5jbHItc3VjY2VzcyAuY2xyLXZhbGlkYXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzNjODUwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IsICMzYzg1MDApO21hcmdpbi1sZWZ0Oi0uMnJl''@;'; put 'put ''bX0uY2xyLXN1Y2Nlc3MgLmNsci1zdWJ0ZXh0e2NvbG9yOiMyNTUyMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLXRleHQtY29sb3IsICMyNTUyMDApfS5jbHItZXJyb3IgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0Oi0uMnJlbTtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xy''@;'; put 'put ''LWVycm9yIC5jbHItc3VidGV4dHtjb2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWZvcm0tY29udHJvbD4uY2xyLWNvbnRyb2wtbGFiZWwsLmNsci1mb3JtLWhvcml6b250YWwgLmNsci1m''@;'; put 'put ''b3JtLWNvbnRyb2w+LmNsci1mb3JtLWNvbnRyb2wuY2xyLWZvcm0tY29udHJvbC1tdWx0aSAuY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6OS42cmVtO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXRvcDouMTVyZW19LmNsci1mb3JtLWhvcml6b250YWwuY2xyLXJvdyAuY2xyLWNvbnRyb2wtbGFiZWx7''@;'; put 'put ''d2lkdGg6YXV0b30uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9sPi5jbHItY29udHJvbC1sYWJlbHt3aWR0aDo5LjZyZW07bWluLXdpZHRoOjkuNnJl''@;'; put 'put ''bX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZvcm0tY29udHJvbC5jbHItcm93Pi5jbHItY29udHJvbC1sYWJlbHt3aWR0aDphdXRvO21pbi13aWR0aDphdXRvfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOi4xNXJlbX0uY2xyLWZvcm0tY29tcGFjdCAu''@;'; put 'put ''Y2xyLWZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21hcmdpbi10b3A6LjZyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5l''@;'; put 'put ''LWJsb2NrO21hcmdpbi10b3A6LjNyZW07bWFyZ2luLWxlZnQ6MS4ycmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZXJyb3IgLmNsci1zdWJ0ZXh0LC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VjY2VzcyAuY2xyLXN1YnRleHQsLmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xyLXZh''@;'; put 'put ''bGlkYXRlLWljb24sLmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWNjZXNzIC5jbHItdmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VidGV4dC13cmFwcGVye2ZsZXgtYmFzaXM6YXV0bztkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWZvcm0sLmNs''@;'; put 'put ''ci1mb3JtLWdyb3Vwe3BhZGRpbmc6LjNyZW19LmNsci1jaGVja2JveC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Zm9udC13ZWlnaHQ6NDAwO2Rpc3BsYXk6YmxvY2t9LmNsci1jaGVja2JveC13cmFwcGVyfi5jbHIt''@;'; put 'put ''dmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItY2hlY2tib3gtd3JhcHBlcn4uY2xyLXN1YnRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hde3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDt0b3A6LjI1cmVt''@;'; put 'put ''O2xlZnQ6MDtoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW19LmNsci1jaGVja2JveC13cmFwcGVyIGxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi1oZWlnaHQ6MS4ycmVtO3BhZGRpbmctbGVmdDoxLjFyZW07bWFyZ2luLXRvcDowO2N1cnNvcjpwb2ludGVy''@;'; put 'put ''O2xpbmUtaGVpZ2h0OjEuMnJlbTtjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1sYWJlbC1jb2xvciwgIzQ1NDU0NSl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6''@;'; put 'put ''LjJyZW07bGVmdDowO2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzK2xhYmVsOmJlZm9yZXtvdXRsaW5lOkhpZ2hsaWdodCBzb2xp''@;'; put 'put ''ZCAuMXJlbTtvdXRsaW5lOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciBzb2xpZCAuMXJlbTtvdXRsaW5lLW9mZnNldDouMDVyZW19LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7ZGlzcGxh''@;'; put 'put ''eTpub25lO2hlaWdodDouMjVyZW07d2lkdGg6LjRyZW07Ym9yZGVyLWxlZnQ6LjFyZW0gc29saWQ7Ym9yZGVyLWJvdHRvbTouMXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LW1hcmstY29sb3IsIHdoaXRlKTt0b3A6LjJy''@;'; put 'put ''ZW07bGVmdDouMnJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlWSguMnJlbSkgcm90YXRlKC00NWRlZyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YmVmb3Jle2JhY2tncm91bmQ6IzAwNzJhMztiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jt''@;'; put 'put ''cy1jaGVja2JveC1iYWNrZ3JvdW5kLWNvbG9yLCAjMDA3MmEzKTtib3JkZXI6MH0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDphZnRlcntkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF0uY2xyLWluZGV0ZXJtaW5hdGUrbGFiZWw6YmVmb3JlLC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlK2xhYmVsOmJlZm9yZXtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3IsICMwMDcyYTMpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XS5jbHItaW5kZXRlcm1pbmF0ZStsYWJlbDphZnRlciwuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlw''@;'; put 'put ''ZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZStsYWJlbDphZnRlcntib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b20tY29sb3I6IzAwNzJhMztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvciwgIzAwNzJhMyk7''@;'; put 'put ''ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjJyZW0pfS5jbHItY2hlY2tib3gtd3JhcHBlci5jbHItY2hlY2tib3gtaW5saW5le2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1jaGVja2JveC13cmFwcGVy''@;'; put 'put ''LmNsci1jaGVja2JveC1pbmxpbmUgLmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDouNnJlbTt3aWR0aDphdXRvfS5jbHItZXJyb3IgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZXtib3JkZXIt''@;'; put 'put ''Y29sb3I6I2MyMWQwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY2hlY2tib3gtd3JhcHBlciBsYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJs''@;'; put 'put ''ZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZSwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IsICNjY2NjY2MpO2JvcmRlcjowfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpj''@;'; put 'put ''aGVja2VkK2xhYmVsOmFmdGVye2JvcmRlci1sZWZ0Oi4xcmVtIHNvbGlkO2JvcmRlci1ib3R0b206LjFyZW0gc29saWQ7Ym9yZGVyLWxlZnQtY29sb3I6IzAwMDtib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtbWFyay1jb2xvciwgYmxhY2spO2Jv''@;'; put 'put ''cmRlci1ib3R0b20tY29sb3I6IzAwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yLCBibGFjayl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hd''@;'; put 'put ''OmNoZWNrZWQuY2xyLWluZGV0ZXJtaW5hdGUrbGFiZWw6YWZ0ZXIsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aW5kZXRlcm1pbmF0ZStsYWJlbDphZnRlcntib3JkZXItbGVmdDpub25lfS5jbHIt''@;'; put 'put ''Zm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlcnttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0O2hlaWdodDoxLjJyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jaGVja2JveC13cmFwcGVyfi5jbHItc3Vi''@;'; put 'put ''dGV4dHttYXJnaW4tbGVmdDouM3JlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDouNnJlbTt3aWR0aDphdXRvfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gt''@;'; put 'put ''d3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowfS5jbHItZmlsZS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6LjNyZW19LmNsci1maWxlLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2ZvbnQtd2VpZ2h0OjQwMDtkaXNwbGF5OmJsb2NrfS5jbHIt''@;'; put 'put ''ZmlsZS13cmFwcGVyfi5jbHItdmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItZmlsZS13cmFwcGVyfi5jbHItc3VidGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWZpbGUtd3JhcHBlciAuYnRue21hcmdpbjowfS5jbHItZmlsZXtoZWlnaHQ6MDt3aWR0aDowO29wYWNpdHk6''@;'; put 'put ''MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcnttYXgtd2lkdGg6MTAwJTttYXJnaW4tdG9wOjB9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e21hcmdp''@;'; put 'put ''bi1sZWZ0Oi4zcmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyfi5jbHItdmFsaWRhdGUtaWNvbntsaW5lLWhlaWdodDoxLjJyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9w''@;'; put 'put ''OjB9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse21hcmdpbi10b3A6MDtsaW5lLWhlaWdodDoxLjA4cmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyIC5idG57aGVpZ2h0OjEuMnJlbX0uY2xyLWlucHV0LXdyYXBwZXJ7''@;'; put 'put ''d2hpdGUtc3BhY2U6bm93cmFwO21heC1oZWlnaHQ6MS4ycmVtfS5jbHItaW5wdXR7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRl''@;'; put 'put ''ci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7aGVpZ2h0OjEuMnJlbTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yLCBibGFjayk7Ym9yZGVyLWJvdHRvbTouMDVyZW0gc29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNmE3YTgxO2Jv''@;'; put 'put ''cmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzowIC4zcmVtO21heC1oZWlnaHQ6MS4ycmVtO2ZvbnQtc2l6ZTouNjVyZW19LmNsci1pbnB1dDpmb2N1c3tvdXRsaW5lOjB9LmNsci1pbnB1''@;'; put 'put ''dFtyZWFkb25seV17Ym9yZGVyOjB9LmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSl7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMykgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3Vu''@;'; put 'put ''ZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKTpmb2N1cywuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1pbnB1dDpkaXNhYmxlZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKTtjdXJzb3I6bm90''@;'; put 'put ''LWFsbG93ZWR9LmNsci1lcnJvciAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKXtib3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8g''@;'; put 'put ''Ym90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCkgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLWVycm9yIC5jbHItaW5wdXQ6bm90KFty''@;'; put 'put ''ZWFkb25seV0pOmZvY3VzLC5jbHItZXJyb3IgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSkuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6I2MyMWQwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtiYWNrZ3JvdW5kLXNp''@;'; put 'put ''emU6MTAwJSAxMDAlfS5jbHItZm9ybS1jb250cm9sLnJvdyAuY2xyLWlucHV0LXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDEuMnJlbSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1pbnB1dHttYXgtd2lkdGg6MTAwJX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWlucHV0fi5jbHItc3Vi''@;'; put 'put ''dGV4dHttYXJnaW4tbGVmdDouM3JlbX0uY2xyLWZvcm0tY29udHJvbC1yZWFkb25seSAuY2xyLWlucHV0e2JvcmRlcjowfS5jbHItZm9ybS1jb250cm9sLW11bHRpIC5jbHItaW5wdXR7bWF4LXdpZHRoOmNhbGMoMTAwJSArIDEuMnJlbSl9OjpwbGFjZWhvbGRlcntjb2xvcjojNGY2MTY5O2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1mb3Jtcy1wbGFjZWhvbGRlci1jb2xvciwgIzRmNjE2OSl9LmNsci1pbnB1dC1ncm91cHtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yLCBibGFjayk7Ym9yZGVyLWJvdHRvbTouMDVyZW0gc29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjoj''@;'; put 'put ''NmE3YTgxO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1j''@;'; put 'put ''b2xvciwgIzAwNzJhMykgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZTttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6MS4ycmVtfS5jbHItaW5wdXQtZ3JvdXA6Zm9jdXMsLmNsci1pbnB1dC1ncm91cC5jbHItZm9j''@;'; put 'put ''dXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1pbnB1dC1ncm91cC5jbHItZm9jdXN7d2lkdGg6YXV0b30uY2xyLWlucHV0''@;'; put 'put ''LWdyb3VwIC5jbHItaW5wdXR7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7bWFyZ2luLXJpZ2h0OjA7bWF4LXdpZHRoOjEwMCV9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKTpmb2N1c3tiYWNrZ3JvdW5kLXNpemU6MDtib3JkZXI6MH0uY2xyLWlucHV0LWdyb3Vw''@;'; put 'put ''IHNlbGVjdCwuY2xyLWlucHV0LWdyb3VwIC5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0LC5jbHItaW5wdXQtZ3JvdXAgLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdHtib3JkZXI6MH0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6IzhjOGM4Yztj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZm9ybXMtc3VidGV4dC1jb2xvciwgIzhjOGM4Yyl9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxke3BhZGRpbmc6MCAwIDAgLjQ1cmVtfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNo''@;'; put 'put ''aWxke3BhZGRpbmc6MCAuNDVyZW0gMCAwfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtw''@;'; put 'put ''YWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yLCAjMDA3MmEzKTtwYWRkaW5nOjAgLjQ1cmVtfWJ1dHRvbi5jbHItaW5wdXQtZ3JvdXAg''@;'; put 'put ''LmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbntjdXJzb3I6cG9pbnRlcn0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24gY2RzLWljb24sLmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uIGNsci1pY29ue2hlaWdodDouOXJl''@;'; put 'put ''bTt3aWR0aDouOXJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0uMDVyZW0sLS4wNXJlbSl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbntjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAj''@;'; put 'put ''YjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1lcnJvciAuY2xyLWlucHV0LWdyb3Vwe2JvcmRlci1ib3R0b20tY29sb3I6I2MyMWQwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFk''@;'; put 'put ''aWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItZXJyb3IgLmNsci1pbnB1''@;'; put 'put ''dC1ncm91cDpmb2N1cywuY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXAuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6I2MyMWQwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAl''@;'; put 'put ''fS5jbHItZm9ybS1ob3Jpem9udGFsIC5jbHItaW5wdXQtZ3JvdXB7bWF4LXdpZHRoOjEwMCU7cGFkZGluZy1yaWdodDowfS5jbHItcmFkaW8td3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoxLjJyZW19LmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtm''@;'; put 'put ''b250LXdlaWdodDo0MDA7ZGlzcGxheTpibG9ja30uY2xyLXJhZGlvLXdyYXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1yYWRpby13cmFwcGVyfi5jbHItc3VidGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1y''@;'; put 'put ''YWRpb117cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3RvcDouMjVyZW07bGVmdDowO2hlaWdodDouOHJlbTt3aWR0aDouOHJlbX0uY2xyLXJhZGlvLXdyYXBwZXIgbGFiZWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLWhlaWdodDoxLjJyZW07cGFkZGlu''@;'; put 'put ''Zy1sZWZ0OjEuMXJlbTttYXJnaW4tdG9wOjA7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6MS4ycmVtO2NvbG9yOiM0NTQ1NDU7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhZGlvLWxhYmVsLWNvbG9yLCAjNDU0NTQ1KX0uY2xyLXJhZGlvLXdyYXBwZXIgbGFiZWw6ZW1wdHl7cGFkZGluZy1s''@;'; put 'put ''ZWZ0OjB9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjJyZW07bGVmdDowO2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO2JvcmRlcjouMDVyZW0gc29s''@;'; put 'put ''aWQ7Ym9yZGVyLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2JvcmRlci1yYWRpdXM6NTAlfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsOmJlZm9yZXtib3gtc2hhZG93Omlu''@;'; put 'put ''c2V0IDAgMCAwIC4zcmVtICMwMDcyYTM7Ym94LXNoYWRvdzp2YXIoLS1jbHItZm9ybXMtcmFkaW8tc2VsZWN0ZWQtc2hhZG93LCBpbnNldCAwIDAgMCAuM3JlbSAjMDA3MmEzKTtib3JkZXI6MH0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Zm9jdXMrbGFiZWw6YmVmb3Jl''@;'; put 'put ''e291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIC4xcmVtO291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIHNvbGlkIC4xcmVtO291dGxpbmUtb2Zmc2V0Oi4wNXJlbX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6Y2hlY2tlZCtsYWJlbDpiZWZvcmV7b3V0''@;'; put 'put ''bGluZTpIaWdobGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpkaXNhYmxlZCtsYWJlbDpiZWZvcmV7Ym9yZGVyOjA7Ym94''@;'; put 'put ''LXNoYWRvdzppbnNldCAwIDAgMCAuNnJlbSAjZThlOGU4O2JveC1zaGFkb3c6dmFyKC0tY2xyLWZvcm1zLXJhZGlvLWRpc2FibGVkLXNoYWRvdywgaW5zZXQgMCAwIDAgLjZyZW0gI2U4ZThlOCl9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6ZGlzYWJsZWQr''@;'; put 'put ''bGFiZWw6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzY2NjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yLCAjNjY2NjY2KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIC4zcmVtICNlOGU4ZTg7Ym94LXNoYWRvdzp2YXIoLS1j''@;'; put 'put ''bHItZm9ybXMtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1zaGFkb3csIGluc2V0IDAgMCAwIC4zcmVtICNlOGU4ZTgpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItcmFkaW8td3JhcHBlciBsYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1lcnJvciAuY2xyLXJhZGlvLXdyYXBw''@;'; put 'put ''ZXIgaW5wdXRbdHlwZT1yYWRpb10rbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjojYzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6MH0u''@;'; put 'put ''Y2xyLWZvcm0tY29tcGFjdCAuY2xyLXJhZGlvLXdyYXBwZXJ7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydDtoZWlnaHQ6MS4ycmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlcn4uY2xyLXN1YnRl''@;'; put 'put ''eHR7bWFyZ2luLWxlZnQ6LjNyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6LjZyZW07d2lkdGg6YXV0b30uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXJhZGlvLXdyYXBwZXIg''@;'; put 'put ''LmNsci1jb250cm9sLWxhYmVse21hcmdpbi10b3A6MH0uY2xyLXNlbGVjdC13cmFwcGVyLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3QsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVy''@;'; put 'put ''IHNlbGVjdHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAg''@;'; put 'put ''MDtoZWlnaHQ6MS4ycmVtO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IsIGJsYWNrKTtib3JkZXItYm90dG9tOi4wNXJlbSBzb2xpZDtib3JkZXItYm90dG9tLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVy''@;'; put 'put ''LWNvbG9yLCAjNmE3YTgxKTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjAgMS4xcmVtIDAgLjNyZW07Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOi42NXJlbTt6LWluZGV4OjJ9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6Zm9jdXMsLmNsci1tdWx0''@;'; put 'put ''aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpmb2N1c3tvdXRsaW5lOjB9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pe2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRv''@;'; put 'put ''bSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFtt''@;'; put 'put ''dWx0aXBsZV0pOmZvY3VzLC5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXMsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSk6Zm9jdXMsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRp''@;'; put 'put ''cGxlXSkuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6IzAwNzJhMztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yLCAjMDA3MmEzKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0W211bHRpcGxl''@;'; put 'put ''XTpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0W211bHRpcGxlXTpmb2N1c3tvdXRsaW5lOkhpZ2hsaWdodCBhdXRvIC4xcmVtO291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIGF1dG8gLjFyZW19LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXIsLmNs''@;'; put 'put ''ci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6YWN0aXZlLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXIsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmV7Ym9yZGVyLWNvbG9yOiNkZWRlZGU4MDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVj''@;'; put 'put ''dC1ob3Zlci1iYWNrZ3JvdW5kLCByZ2JhKDIyMiwgMjIyLCAyMjIsIC41KSk7YmFja2dyb3VuZDpyZ2JhKDIyMiwyMjIsMjIyLC41KTtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtaG92ZXItYmFja2dyb3VuZCwgcmdiYSgyMjIsIDIyMiwgMjIyLCAuNSkpfS5jbHItc2VsZWN0''@;'; put 'put ''LXdyYXBwZXIgc2VsZWN0OmRpc2FibGVkIG9wdGlvbiwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmRpc2FibGVkIG9wdGlvbntjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9''@;'; put 'put ''LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Qgb3B0aW9uLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Qgb3B0aW9ue2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1vcHRpb24tY29sb3IsIGJsYWNrKX0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDo6LW1z''@;'; put 'put ''LWV4cGFuZCwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OjotbXMtZXhwYW5ke2Rpc3BsYXk6bm9uZX0uY2xyLXNlbGVjdC13cmFwcGVye21heC1oZWlnaHQ6MS4ycmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7Y29udGVudDoiIjtoZWlnaHQ6LjVyZW07d2lkdGg6LjVyZW07dG9wOi4zNXJlbTtyaWdodDouM3JlbTtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAw''@;'; put 'put ''JTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0ElMjNiM2IzYjMlM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUy''@;'; put 'put ''MCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUNhcmV0JTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNNiUyQzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYl''@;'; put 'put ''MkM3LjA4JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjB9''@;'; put 'put ''LmNsci1zZWxlY3Qtd3JhcHBlcjpob3ZlcjphZnRlcntjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtaG92ZXItY29sb3IsICM4YzhjOGMpfS5jbHItZXJyb3IgLmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlciwuY2xyLXN1Y2Nlc3MgLmNsci1zZWxlY3Qt''@;'; put 'put ''d3JhcHBlcjphZnRlcntyaWdodDoxLjVyZW19LmNsci1tdWx0aXNlbGVjdC13cmFwcGVye2Rpc3BsYXk6ZmxleH0uY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9c2VsZWN0W211bHRpcGxlXSxzZWxlY3Rbc2l6ZV17cGFkZGluZzowO2Jh''@;'; put 'put ''Y2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUt''@;'; put 'put ''Ym9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2hlaWdodDphdXRvO21pbi13aWR0aDo2cmVtfXNlbGVjdFttdWx0aXBsZV06aG92ZXIsc2VsZWN0W211bHRpcGxlXTph''@;'; put 'put ''Y3RpdmUsc2VsZWN0W3NpemVdOmhvdmVyLHNlbGVjdFtzaXplXTphY3RpdmV7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1iYWNrZ3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX1zZWxlY3RbbXVsdGlwbGVdIG9wdGlvbixzZWxlY3Rbc2l6ZV0gb3B0aW9ue3BhZGRpbmc6LjE1cmVtIC4zcmVtO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1v''@;'; put 'put ''cHRpb24tY29sb3IsIGJsYWNrKX0uY2xyLWVycm9yIHNlbGVjdDpub3QoW211bHRpcGxlXSl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzIxZDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApfS5jbHItZXJyb3Igc2VsZWN0W211bHRp''@;'; put 'put ''cGxlXXtib3JkZXItY29sb3I6I2MyMWQwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVke2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRl''@;'; put 'put ''eHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdC5kaXNhYmxlZDpob3ZlcjphZnRlcntjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtY29sb3IsICNi''@;'; put 'put ''M2IzYjMpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVkPnNlbGVjdCwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdCBzZWxlY3Q6ZGlzYWJsZWR7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxl''@;'; put 'put ''ZC1jb2xvciwgI2IzYjNiMyk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVkPnNlbGVjdDpob3ZlciwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdCBzZWxlY3Q6ZGlzYWJsZWQ6aG92ZXJ7YmFja2dy''@;'; put 'put ''b3VuZDowIDA7Ym9yZGVyLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlcnttYXJnaW4tdG9wOjB9LmNsci10ZXh0YXJlYS13cmFwcGVye3doaXRl''@;'; put 'put ''LXNwYWNlOm5vd3JhcDtkaXNwbGF5OmZsZXg7bWFyZ2luLXRvcDouM3JlbX0uY2xyLXRleHRhcmVhLXdyYXBwZXIgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci10ZXh0YXJlYXttYXgtd2lkdGg6Y2FsYygxMDAlIC0gLjNyZW0pO2hlaWdodDphdXRvO3Jlc2l6ZTp2ZXJ0''@;'; put 'put ''aWNhbDtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3Is''@;'; put 'put ''ICM2YTdhODEpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtwYWRkaW5nOi40cmVtIC42cmVtO2ZvbnQtc2l6ZTouNjVyZW19LmNsci10ZXh0YXJlYTpmb2N1c3tvdXRsaW5lOkhpZ2hsaWdodCBhdXRvIC4x''@;'; put 'put ''cmVtO291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIGF1dG8gLjFyZW19LmNsci10ZXh0YXJlYTpkaXNhYmxlZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1lcnJv''@;'; put 'put ''ciAuY2xyLXRleHRhcmVhe2JvcmRlci1jb2xvcjojYzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1jb250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYXt3aWR0aDphdXRvfS5jbHItZm9ybS1jb250cm9sLnJvdyAuY2xyLXRleHRh''@;'; put 'put ''cmVhLXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIC4zcmVtKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXRleHRhcmVhLXdyYXBwZXJ7bWFyZ2luLXRvcDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItdGV4dGFyZWEtd3JhcHBlciAuY2xyLXRleHRhcmVhe21heC13aWR0aDoxMDAlfS5j''@;'; put 'put ''bHItZm9ybS1jb21wYWN0IC5jbHItdGV4dGFyZWEtd3JhcHBlciAuY2xyLXRleHRhcmVhfi5jbHItc3VidGV4dHttYXJnaW4tbGVmdDouM3JlbX06cm9vdHstLWNsci10b2dnbGUtYmctY29sb3Itb2ZmOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItdG9nZ2xlLWJnLWNvbG9y''@;'; put 'put ''LW9uOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTUwMCk7LS1jbHItdG9nZ2xlLWhhbmRsZS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MCk7LS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1j''@;'; put 'put ''bHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtaGFuZGxlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtYm9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1ib3JkZXItY29sb3IpOy0tY2xyLXRvZ2ds''@;'; put 'put ''ZS1kaXNhYmxlZC1vZmYtYmctY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWhhbmRsZS1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1oYW5kbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1ib3JkZXItY29sb3Ip''@;'; put 'put ''Oy0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJnLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1ib3JkZXItY29s''@;'; put 'put ''b3IpOy0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1oYW5kbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1oYW5kbGUtY29sb3IpfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF17LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1v''@;'; put 'put ''ei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmV9LmNsci10b2dnbGUtd3JhcHBlcntoZWlnaHQ6MS4ycmVtO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbi1yaWdodDouNnJlbX0u''@;'; put 'put ''Y2xyLXRvZ2dsZS13cmFwcGVyIGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO2hlaWdodDoxLjJyZW07bWFyZ2luLWxlZnQ6Mi4xcmVtO21hcmdpbi1yaWdodDowfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF17cG9zaXRpb246YWJzb2x1dGU7dG9wOi4zcmVtO3JpZ2h0Oi4zcmVtO2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTtvcGFjaXR5OjB9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTppbmxpbmUt''@;'; put 'put ''YmxvY2s7Y29udGVudDoiIjtoZWlnaHQ6LjlyZW07d2lkdGg6MS42NXJlbTtib3JkZXI6LjFyZW0gc29saWQ7Ym9yZGVyLXJhZGl1czouNDVyZW07Ym9yZGVyLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb2ZmLCAjOGM4YzhjKTtiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOiM4YzhjOGM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9mZiwgIzhjOGM4Yyk7dG9wOi4xNXJlbTtyaWdodDowO2xlZnQ6LTIuMXJlbTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1p''@;'; put 'put ''bjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXMrbGFiZWw6YmVmb3Jle291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIC4xcmVtO291dGxpbmU6LXdlYmtpdC1mb2N1cy1y''@;'; put 'put ''aW5nLWNvbG9yIHNvbGlkIC4xcmVtO291dGxpbmUtb2Zmc2V0Oi4wNXJlbX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjojNWFhMjIwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9y''@;'; put 'put ''LW9uLCAjNWFhMjIwKTtiYWNrZ3JvdW5kLWNvbG9yOiM1YWEyMjA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uLCAjNWFhMjIwKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbjt0cmFuc2l0aW9u''@;'; put 'put ''LXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtoZWlnaHQ6LjdyZW07d2lkdGg6Ljdy''@;'; put 'put ''ZW07Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItY29sb3I6I2ZhZmFmYTtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1oYW5kbGUtYmctY29sb3IsICNmYWZhZmEpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWhhbmRsZS1iZy1jb2xvciwgI2ZhZmFmYSk7dG9wOi4yNXJlbTtyaWdodDowO2xlZnQ6LTJyZW07dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0''@;'; put 'put ''eTpyaWdodCxsZWZ0fS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDphZnRlcntyaWdodDotMnJlbTtsZWZ0Oi0xLjI1cmVtO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5z''@;'; put 'put ''aXRpb24tcHJvcGVydHk6cmlnaHQsbGVmdH0uY2xyLXRvZ2dsZS13cmFwcGVyLmRpc2FibGVkIGxhYmVse29wYWNpdHk6LjQ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItdG9nZ2xlLXdyYXBwZXIuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Ym9y''@;'; put 'put ''ZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvciwgI2Nj''@;'; put 'put ''Y2NjYyl9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpkaXNhYmxlZCtsYWJlbHtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpkaXNhYmxlZCtsYWJlbDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZmZm''@;'; put 'put ''O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtYmctY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uY2xyLXRvZ2dsZS13cmFw''@;'; put 'put ''cGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVsOmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb2ZmLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLXdpZHRoOi4xcmVtO2JvcmRlci1zdHlsZTpz''@;'; put 'put ''b2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtaGFuZGxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7aGVpZ2h0Oi45cmVtO3dpZHRoOi45cmVtO3RvcDouMTVyZW19LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkOmRpc2FibGVkK2xhYmVsOmJlZm9yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci10b2dnbGUtZGlzYWJsZWQtb24tYmctY29sb3IsICNjY2NjY2MpfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpkaXNhYmxlZCtsYWJlbDphZnRlcntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNh''@;'; put 'put ''YmxlZC1vbi1oYW5kbGUtYm9yZGVyLWNvbG9yLCB3aGl0ZSk7aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtO3RvcDouMjVyZW07bGVmdDotMS4yNXJlbX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVsOmFmdGVye2xlZnQ6LTIuMXJlbX0uY2xy''@;'; put 'put ''LXRvZ2dsZS13cmFwcGVyLnJpZ2h0LWxhYmVsIGxhYmVse21hcmdpbi1sZWZ0OjIuMXJlbTttYXJnaW4tcmlnaHQ6MH0uY2xyLXRvZ2dsZS13cmFwcGVyLnJpZ2h0LWxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZXtyaWdodDowO2xlZnQ6LTIuMXJlbX0uY2xyLXRvZ2ds''@;'; put 'put ''ZS13cmFwcGVyLnJpZ2h0LWxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye3JpZ2h0OjA7bGVmdDotMnJlbTt0cmFuc2l0aW9uLXByb3BlcnR5OmxlZnR9LmNsci10b2dnbGUtd3JhcHBlci5yaWdodC1sYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVs''@;'; put 'put ''OmFmdGVye2xlZnQ6LTEuMjVyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0fS5jbHItdG9nZ2xlLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMnJlbX0uY2xyLWNvbnRyb2wtaW5saW5lIC5jbHItdG9nZ2xl''@;'; put 'put ''LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDouNnJlbX0uY2xyLXRvZ2dsZS1yaWdodCBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6Mi4xcmVtO21hcmdpbi1sZWZ0OjB9LmNsci10b2dnbGUtcmlnaHQg''@;'; put 'put ''aW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3Jle2xlZnQ6dW5zZXQ7cmlnaHQ6LTIuMXJlbX0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0xLjI1cmVtO3RyYW5zaXRpb24tcHJvcGVydHk6cmlnaHR9LmNs''@;'; put 'put ''ci10b2dnbGUtcmlnaHQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0ycmVtO3RyYW5zaXRpb24tcHJvcGVydHk6cmlnaHR9LmNsci10b2dnbGUtcmlnaHQgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7''@;'; put 'put ''bGVmdDp1bnNldDtyaWdodDotMS4zcmVtfS5jbHItdG9nZ2xlLXJpZ2h0IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7bGVmdDp1bnNldDtyaWdodDotMnJlbX0uY2xyLXRvZ2dsZS1yaWdodCAuY2xyLWNvbnRyb2wtaW5saW5lIC5jbHItdG9nZ2xl''@;'; put 'put ''LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse21hcmdpbi1yaWdodDoyLjdyZW19LmNsci1yYW5nZS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1pdGVtczpmbGV4LWVuZDtoZWlnaHQ6LjdyZW07d2hpdGUt''@;'; put 'put ''c3BhY2U6bm93cmFwfS5jbHItcmFuZ2Utd3JhcHBlciAuZmlsbC1pbnB1dHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi4ycmVtO3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxMDtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvciwgIzAwNzJhMyl9LmNsci1yYW5nZXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpmbGV4LWVuZDtoZWlnaHQ6LjdyZW19LmNsci1y''@;'; put 'put ''YW5nZTpkaXNhYmxlZCwuY2xyLXJhbmdlOmRpc2FibGVkKy5maWxsLWlucHV0e3BvaW50ZXItZXZlbnRzOmF1dG87Y3Vyc29yOm5vdC1hbGxvd2VkfWlucHV0W3R5cGU9cmFuZ2Vde3BhZGRpbmc6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtsZWZ0OjA7aGVpZ2h0Oi4ycmVtO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvciwgI2U4ZThlOCl9aW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNre2hlaWdodDouMnJlbTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IsICNlOGU4ZTgpfWlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci10aHVtYnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW4tdG9wOi0uMjVyZW07Ym9yZGVy''@;'; put 'put ''LXJhZGl1czo1MCU7aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yLCAjMDA3MmEzKX1pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10cmFj''@;'; put 'put ''a3toZWlnaHQ6LjJyZW07Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWNvbG9yLCAjZThlOGU4KX1pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10aHVtYntib3JkZXI6MDttYXJn''@;'; put 'put ''aW4tdG9wOi0uMjVyZW07Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yLCAjMDA3MmEzKX1Ac3VwcG9ydHMgKC1t''@;'; put 'put ''cy1pbWUtYWxpZ246YXV0byl7LmNsci1yYW5nZS13cmFwcGVyIC5maWxsLWlucHV0e2Rpc3BsYXk6bm9uZX0uY2xyLXJhbmdlLXdyYXBwZXIucHJvZ3Jlc3MtZmlsbCBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLWZpbGwtbG93ZXJ7aGVpZ2h0Oi4ycmVtO2JhY2tncm91bmQtY29sb3I6IzAwNzJh''@;'; put 'put ''MztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yLCAjMDA3MmEzKX1pbnB1dFt0eXBlPXJhbmdlXXtib3JkZXI6MDttYXJnaW46MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtsZWZ0OjA7aGVpZ2h0Oi43cmVtfWlucHV0W3R5cGU9cmFu''@;'; put 'put ''Z2VdOjotbXMtdHJhY2t7bWFyZ2luOjA7Ym9yZGVyOjA7aGVpZ2h0Oi4ycmVtO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvciwgI2U4ZThlOCl9aW5wdXRbdHlwZT1yYW5nZV06''@;'; put 'put ''Oi1tcy10aHVtYntib3JkZXI6MDttYXJnaW4tdG9wOjA7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yLCAjMDA3''@;'; put 'put ''MmEzKX19XzotbXMtZnVsbHNjcmVlbiAuY2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5wdXQsOnJvb3QgLmNsci1yYW5nZS13cmFwcGVyIC5maWxsLWlucHV0e2Rpc3BsYXk6bm9uZX1fOi1tcy1mdWxsc2NyZWVuIC5jbHItcmFuZ2Utd3JhcHBlci5wcm9ncmVzcy1maWxsIGlucHV0W3R5cGU9''@;'; put 'put ''cmFuZ2VdOjotbXMtZmlsbC1sb3dlciw6cm9vdCAuY2xyLXJhbmdlLXdyYXBwZXIucHJvZ3Jlc3MtZmlsbCBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLWZpbGwtbG93ZXJ7aGVpZ2h0Oi4ycmVtO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jt''@;'; put 'put ''cy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yLCAjMDA3MmEzKX1fOi1tcy1mdWxsc2NyZWVuIGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdG9vbHRpcCw6cm9vdCBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRvb2x0aXB7dmlzaWJpbGl0eTpoaWRkZW59XzotbXMtZnVsbHNjcmVlbiBpbnB1dFt0''@;'; put 'put ''eXBlPXJhbmdlXSw6cm9vdCBpbnB1dFt0eXBlPXJhbmdlXXtib3JkZXI6MDttYXJnaW46MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtsZWZ0OjA7aGVpZ2h0Oi43cmVtfV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFjayw6cm9vdCBpbnB1dFt0eXBlPXJhbmdl''@;'; put 'put ''XTo6LW1zLXRyYWNre2JvcmRlcjowO21hcmdpbjowO2hlaWdodDouMnJlbTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IsICNlOGU4ZTgpfV86LW1zLWZ1bGxzY3JlZW4gaW5w''@;'; put 'put ''dXRbdHlwZT1yYW5nZV06Oi1tcy10aHVtYiw6cm9vdCBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1ie2JvcmRlcjowO21hcmdpbi10b3A6MDtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfWlucHV0W2NsckRhdGFsaXN0XTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye2Rpc3BsYXk6bm9uZX1jbHItZGF0YWxpc3QtY29udGFpbmVyIC5jbHItaW5wdXQtZ3JvdXB7cGFk''@;'; put 'put ''ZGluZy1yaWdodDowfTpyb290ey0tY2xyLWNhbGVuZGFyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItY2FsZW5kYXItYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItZGF0ZXBpY2tlci10cmlnZ2VyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1kYXRlcGlja2VyLXRyaWdnZXItaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWNhbGVuZGFyLWJ0bi1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItY2FsZW5kYXItYnRu''@;'; put 'put ''LWhvdmVyLWZvY3VzLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtaG92ZXItY29sb3IpOy0tY2xyLWNhbGVuZGFyLXBpY2tlci1idG4tZm9udC1zaXplOi45cmVtOy0tY2xyLWNhbGVuZGFyLXBpY2tlci1idG4tZm9udC13ZWlnaHQ6MjAwOy0tY2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUtY2VsbC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1jYWxlbmRhci10b2RheS1kYXRlLWNlbGwtZm9udC13ZWlnaHQ6NjAwOy0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3IpOy0tY2xy''@;'; put 'put ''LWNhbGVuZGFyLWFjdGl2ZS1mb2N1cy1jZWxsLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3IpOy0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWRheS1mb250LXNpemU6LjZy''@;'; put 'put ''ZW19LmRhdGUtY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0ZXBpY2tlci10cmlnZ2Vye2hlaWdodDoxLjhyZW07bWluLXdpZHRoOjEuOHJlbTtwYWRkaW5nOjA7bWFyZ2luOjAhaW1wb3J0YW50O2NvbG9yOmlu''@;'; put 'put ''aGVyaXQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjhyZW19LmRhdGVwaWNrZXItdHJpZ2dlciAuZGF0ZXBp''@;'; put 'put ''Y2tlci10cmlnZ2VyLWljb257ZmlsbDojMDA3MmEzO2ZpbGw6dmFyKC0tY2xyLWRhdGVwaWNrZXItdHJpZ2dlci1jb2xvciwgIzAwNzJhMyl9LmRhdGVwaWNrZXItdHJpZ2dlciAuZGF0ZXBpY2tlci10cmlnZ2VyLWljb246aG92ZXJ7ZmlsbDojMDA1NjdhO2ZpbGw6dmFyKC0tY2xyLWRhdGVw''@;'; put 'put ''aWNrZXItdHJpZ2dlci1ob3Zlci1jb2xvciwgIzAwNTY3YSl9LmRhdGVwaWNrZXItdHJpZ2dlcjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1mb3JtLWNvbnRyb2wgLmRhdGVwaWNrZXItdHJpZ2dlcntsaW5lLWhlaWdodDoxLjFyZW07aGVpZ2h0OjEuMXJlbX0uZGF0ZS1pbnB1''@;'; put 'put ''dHtmbGV4OjEgMSBhdXRvfS5kYXRlcGlja2Vye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzouNnJlbTttYXJnaW4tdG9wOi4zcmVtO3dpZHRoOjEzLjlyZW07aGVpZ2h0OjE1LjdyZW07YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVu''@;'; put 'put ''ZGFyLWJhY2tncm91bmQtY29sb3IsIHdoaXRlKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNs''@;'; put 'put ''ci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItcG9wb3Zlci1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO292ZXJmbG93''@;'; put 'put ''OmhpZGRlbjt6LWluZGV4OjEwNTB9LmNhbGVuZGFyLWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyfS5jYWxlbmRhci1zd2l0Y2hlcnMsLnllYXItc3dpdGNoZXJze3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0uMXJlbSk7''@;'; put 'put ''ZGlzcGxheTpmbGV4fS55ZWFyLXN3aXRjaGVyc3tmbGV4OjAgMCBhdXRvO3dpZHRoOjUuNHJlbTthbGlnbi1zZWxmOmNlbnRlcn0uY2FsZW5kYXItdGFibGV7ZmxleDoxIDEgYXV0bzt3aWR0aDoxMDAlfS5jYWxlbmRhci1jZWxsLC5jYWxlbmRhci10YWJsZSAuY2FsZW5kYXItY2VsbHtoZWln''@;'; put 'put ''aHQ6MS44cmVtO3dpZHRoOjEuOHJlbTttaW4taGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmNlbnRlcn0uZGF5e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS53ZWVrZGF5c3tmbGV4OjAgMCAxLjhyZW19LndlZWtkYXl7Zm9udC1zaXplOi42cmVtO2Zv''@;'; put 'put ''bnQtc2l6ZTp2YXIoLS1jbHItZGF5LWZvbnQtc2l6ZSwgLjZyZW0pO2ZvbnQtd2VpZ2h0OjYwMH0uY2FsZW5kYXItYnRue2hlaWdodDoxLjhyZW07bWluLXdpZHRoOjEuOHJlbTtwYWRkaW5nOjA7bWFyZ2luOjAhaW1wb3J0YW50O2NvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1''@;'; put 'put ''czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjhyZW07Zm9udC1zaXplOi45cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItY2FsZW5kYXItcGlja2VyLWJ0''@;'; put 'put ''bi1mb250LXNpemUsIC45cmVtKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWNhbGVuZGFyLXBpY2tlci1idG4tZm9udC13ZWlnaHQsIDIwMCl9LmNhbGVuZGFyLWJ0bjpob3ZlciwuY2FsZW5kYXItYnRuOmZvY3Vze2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5k''@;'; put 'put ''OnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3IsICNlOGU4ZTgpfS5jYWxlbmRhci1idG46Zm9jdXN7b3V0bGluZTowfS5kYXktYnRue2hlaWdodDoxLjhyZW07bWluLXdpZHRoOjEuOHJlbTtwYWRkaW5nOjA7bWFyZ2luOjAhaW1wb3J0YW50O2JvcmRlcjowO2JvcmRl''@;'; put 'put ''ci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6MS44cmVtO3dpZHRoOjEwMCU7Y29sb3I6aW5oZXJpdH0uZGF5LWJ0bjpob3ZlciwuZGF5LWJ0''@;'; put 'put ''bjpmb2N1c3tiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWhvdmVyLWZvY3VzLWNvbG9yLCAjZThlOGU4KX0uZGF5LWJ0bjpmb2N1c3tvdXRsaW5lOjB9LmRheS1idG4uaXMtdG9kYXl7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY2FsZW5k''@;'; put 'put ''YXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yLCBibGFjayk7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1jYWxlbmRhci10b2RheS1kYXRlLWNlbGwtZm9udC13ZWlnaHQsIDYwMCl9LmRheS1idG4uaXMtZXhjbHVkZWR7b3BhY2l0eTouNH0uZGF5LWJ0bi5pcy1leGNsdWRl''@;'; put 'put ''ZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uZGF5LWJ0bi5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtYmFja2dyb3VuZC1jb2xvciwgI2Q4ZTNlOSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY2FsZW5k''@;'; put 'put ''YXItYWN0aXZlLWNlbGwtY29sb3IsIGJsYWNrKX0uZGF5LWJ0bi5pcy1zZWxlY3RlZDpmb2N1c3tiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYWN0aXZlLWZvY3VzLWNlbGwtYmFja2dyb3VuZC1jb2xvciwgI2Q4ZTNlOSl9LmRheS1idG4uaXMtZGlz''@;'; put 'put ''YWJsZWR7b3BhY2l0eTouNDtwb2ludGVyLWV2ZW50czpub25lfS5kYXktYnRuLmlzLWRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MCAwfS5jYWxlbmRhci1waWNrZXJze2Rpc3BsYXk6ZmxleH0uc3dpdGNoZXJ7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWNv''@;'; put 'put ''bG9yLCAjMDA3MmEzKX0uc3dpdGNoZXIgY2RzLWljb24sLnN3aXRjaGVyIGNsci1pY29ue2hlaWdodDouOXJlbTt3aWR0aDouOXJlbX0ubW9udGhwaWNrZXItdHJpZ2dlciwueWVhcnBpY2tlci10cmlnZ2Vye21pbi13aWR0aDoyLjRyZW07bWF4LXdpZHRoOjNyZW07Y29sb3I6IzAwNzJhMztj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWNvbG9yLCAjMDA3MmEzKTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1vbnRocGlja2VyLC55ZWFycGlja2Vye21pbi1oZWlnaHQ6MTQuNHJlbX0u''@;'; put 'put ''bW9udGhwaWNrZXIsLnllYXJwaWNrZXIsLnllYXJze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVufS5tb250aHBpY2tlciwueWVhcnN7ZmxleC13cmFwOndyYXB9Lm1vbnRoLC55ZWFye2hlaWdodDoyLjRyZW07bWluLXdpZHRoOjIuNHJlbTtwYWRk''@;'; put 'put ''aW5nOjAgLjZyZW07bWFyZ2luOjAhaW1wb3J0YW50O2NvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhl''@;'; put 'put ''aWdodDoxLjhyZW07d2lkdGg6Ni4zcmVtO2ZvbnQtc2l6ZTouOXJlbTtmb250LXdlaWdodDoyMDA7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX0ubW9udGg6aG92ZXIsLm1vbnRoOmZvY3VzLC55ZWFyOmhvdmVyLC55ZWFyOmZvY3Vze2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigt''@;'; put 'put ''LWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3IsICNlOGU4ZTgpfS5tb250aDpmb2N1cywueWVhcjpmb2N1c3tvdXRsaW5lOjB9Lm1vbnRoLmlzLWRpc2FibGVkLC55ZWFyLmlzLWRpc2FibGVke29wYWNpdHk6LjQ7cG9pbnRlci1ldmVudHM6bm9uZX0ubW9udGguaXMtZGlzYWJs''@;'; put 'put ''ZWQ6aG92ZXIsLnllYXIuaXMtZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9Lm1vbnRoLmlzLXNlbGVjdGVkLC55ZWFyLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLCAj''@;'; put 'put ''ZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1jb2xvciwgYmxhY2spfS5tb250aC5pcy1zZWxlY3RlZDpmb2N1cywueWVhci5pcy1zZWxlY3RlZDpmb2N1c3tiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5k''@;'; put 'put ''YXItYWN0aXZlLWZvY3VzLWNlbGwtYmFja2dyb3VuZC1jb2xvciwgI2Q4ZTNlOSl9Lm1vbnRoe3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ueWVhcnt0ZXh0LWFsaWduOmNlbnRlcn06cm9vdHstLWNs''@;'; put 'put ''ci1jb21ib2JveC10cmlnZ2VyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItY29tYm9ib3gtZm9udC1zaXplOi42NXJlbTstLWNsci1jb21ib2JveC1ib3JkZXItY29sb3I6I2U4ZThlODstLWNsci1jb21ib2JveC1ib3JkZXItcmFkaXVzOi4xNXJlbTstLWNsci1j''@;'; put 'put ''b21ib2JveC1pbnB1dC1iYWNrZ3JvdW5kOiNmMmYyZjI7LS1jbHItY29tYm9ib3gtcGlsbC1iYWNrZ3JvdW5kLWNvbG9yOndoaXRlOy0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLWNvbG9yOiM2NjY2NjY7LS1jbHItY29tYm9ib3gtcGlsbC1ib3JkZXItcmFkaXVzOi4xNXJlbTstLWNsci1j''@;'; put 'put ''b21ib2JveC1waWxsLWZvbnQtY29sb3I6IzQ1NDU0NTstLWNsci1jb21ib2JveC1maWx0ZXItaGlnaGxpZ2h0OiM0NTQ1NDV9LmNsci1jb21ib2JveC1mb3JtLWNvbnRyb2x7YWxpZ24taXRlbXM6c3RyZXRjaH0uY2xyLWNvbWJvYm94LWZvcm0tY29udHJvbCAuY2xyLWVycm9yIC5jbHItdmFs''@;'; put 'put ''aWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItZm9jdXMtaW5kaWNhdG9ye2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yLCAjMDA3MmEzKTtoZWlnaHQ6LjFyZW07d2lkdGg6MDt0cmFuc2l0aW9uOndpZHRo''@;'; put 'put ''IC4ycyBlYXNlO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotLjA1cmVtO2xlZnQ6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jb21ib2JveC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20t''@;'; put 'put ''cmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItY29tYm9ib3gtYm9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLWZvY3Vze3dpZHRoOjEwMCV9LmNsci1lcnJvciAuY2xyLWZvY3VzLWluZGljYXRvcntiYWNrZ3JvdW5kLWNvbG9yOiNjMjFk''@;'; put 'put ''MDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1jb21ib2JveC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MCAxLjJyZW0gMCAuM3JlbTttaW4taGVpZ2h0OjEuMnJlbTttaW4td2lkdGg6OC40cmVtO2ZvbnQt''@;'; put 'put ''c2l6ZTouNjVyZW07Zm9udC1zaXplOnZhcigtLWNsci1jb21ib2JveC1mb250LXNpemUsIC42NXJlbSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwgYmxhY2spO2JvcmRlci1ib3R0b206LjA1cmVtIHNvbGlkO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6I2YyZjJmMjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb21ib2JveC1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yLCAjZjJmMmYyKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2U4ZThlODtib3JkZXItY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWNvbWJvYm94LWJvcmRlci1jb2xvciwgI2U4ZThlOCk7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNv''@;'; put 'put ''bG9yLCAjNmE3YTgxKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jb21ib2JveC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItY29tYm9ib3gtd3JhcHBlci5tdWx0aXttaW4td2lkdGg6bWluKDE4cmVtLDEwMCUpO3BhZGRpbmctYm90dG9tOi4xNXJl''@;'; put 'put ''bX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmNsci1pbnB1dC5jbHItY29tYm9ib3gtaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDowIDB9LmNsci1jb21ib2JveC13cmFwcGVyLmludmFsaWR7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzIxZDAwfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWNvbWJv''@;'; put 'put ''Ym94LWlucHV0e2JhY2tncm91bmQ6MCAwO2JvcmRlci1ib3R0b206bm9uZX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmNsci1jb21ib2JveC1yZW1vdmUtYnRue2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6LjE1cmVtO2NvbG9yOiM0NTQ1NDV9LmNsci1j''@;'; put 'put ''b21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxse21hcmdpbjouMTVyZW0gLjNyZW0gMCAwO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb21ib2JveC1waWxsLWJhY2tncm91bmQtY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjA1''@;'; put 'put ''cmVtO2JvcmRlci1zdHlsZTpzb2xpZDthbGlnbi1pdGVtczpiYXNlbGluZTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jb21ib2JveC1waWxsLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1jb21ib2JveC1waWxsLWJvcmRlci1jb2xvciwgIzY2NjY2Nik7cGFkZGluZzowIC4xcmVtIDAgLjJyZW19LmNsci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxsIC5jbHItY29tYm9ib3gtcGlsbC1jb250ZW50e2NvbG9yOiM0NTQ1NDU7Y29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bWJvYm94LXBpbGwtZm9udC1jb2xvciwgIzQ1NDU0NSk7Zm9udC1zaXplOi41NXJlbTtmb250LXdlaWdodDo0MDA7cGFkZGluZzowIC40cmVtIDAgLjJyZW19LmNsci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxsIGNkcy1pY29uW3NoYXBlPXdpbmRvdy1jbG9zZV0sLmNs''@;'; put 'put ''ci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxsIGNsci1pY29uW3NoYXBlPXdpbmRvdy1jbG9zZV17Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yLCAjNDU0NTQ1KX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmNsci1jb21i''@;'; put 'put ''b2JveC1pbnB1dC13cmFwcGVye2JvcmRlcjowO2JhY2tncm91bmQ6MCAwfS5jbHItY29tYm9ib3gtdHJpZ2dlcnt3aWR0aDoxLjJyZW07bWFyZ2luOmF1dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjb2xvcjpjdXJy''@;'; put 'put ''ZW50Q29sb3I7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowfS5jbHItY29tYm9ib3gtdHJpZ2dlcjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtY29sb3IsICM2NjYpO29wYWNpdHk6LjR9LmNsci1jb21ib2JveC10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xl''@;'; put 'put ''XSwuY2xyLWNvbWJvYm94LXRyaWdnZXIgY2xyLWljb25bc2hhcGU9YW5nbGVde2NvbG9yOiM0NTQ1NDU7Y29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtZm9udC1jb2xvciwgIzQ1NDU0NSl9LmNsci1jb21ib2JveC1vcHRpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1''@;'; put 'put ''bW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7bGVmdDowO21pbi13aWR0aDo2cmVtO21heC13aWR0aDoxOHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZHJvcGRvd24tYmctY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2''@;'; put 'put ''YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2''@;'; put 'put ''YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRyb3Bkb3duLWJveC1zaGFkb3csIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7bWFyZ2lu''@;'; put 'put ''LXRvcDouMXJlbTtwYWRkaW5nOi42cmVtIDA7dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoxMDUwO3Bvc2l0aW9uOnN0YXRpYzttYXgtaGVpZ2h0OjEycmVtO292ZXJmbG93LXk6c2Nyb2xsO3Zpc2liaWxpdHk6dmlzaWJsZX0uY2xyLWNvbWJvYm94LW9wdGlvbnMgLmNsci1jb21ib2JveC1v''@;'; put 'put ''cHRpb25zLWxvYWRpbmd7cGFkZGluZzouMTVyZW0gMS4ycmVtfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtbG9hZGluZyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtbG9hZGluZy10ZXh0e3BhZGRpbmctbGVmdDouM3JlbX0uY2xyLWNvbWJvYm94LW9wdGlvbnMg''@;'; put 'put ''LmNsci1jb21ib2JveC1vcHRpb25zLWVtcHR5LXRleHR7cGFkZGluZy1sZWZ0Oi42cmVtfS5jbHItY29tYm9ib3gtb3B0aW9ue2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo0MDA7Zm9u''@;'; put 'put ''dC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46''@;'; put 'put ''MDt3aWR0aDoxMDAlO3RleHQtdHJhbnNmb3JtOm5vbmV9LmNsci1jb21ib2JveC1vcHRpb246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KTtjb2xvcjojNjY2O2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yLCAjNjY2NjY2KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5hY3RpdmV7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLWRyb3Bkb3duLXNlbGVjdGlvbi1jb2xvciwgI2Q4ZTNlOSk7Y29s''@;'; put 'put ''b3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3IsIGJsYWNrKX0uY2xyLWNvbWJvYm94LW9wdGlvbjphY3RpdmV7Ym94LXNoYWRvdzpub25lfS5jbHItY29tYm9ib3gtb3B0aW9uOmZvY3Vze3otaW5kZXg6aW5oZXJpdH0uY2xyLWNvbWJvYm94LW9wdGlv''@;'; put 'put ''bi5kaXNhYmxlZCwuY2xyLWNvbWJvYm94LW9wdGlvbjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZDpob3ZlciwuY2xyLWNvbWJvYm94LW9w''@;'; put 'put ''dGlvbjpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZDphY3RpdmUsLmNsci1jb21ib2JveC1vcHRpb246ZGlzYWJsZWQ6YWN0aXZle2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5jbHIt''@;'; put 'put ''Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0uY2xyLWNvbWJvYm94LW9wdGlvbnMgLmNsci1jb21ib2JveC1vcHRpb257cGFkZGluZzouMTVyZW0gMS4ycmVtfUBtZWRpYSBz''@;'; put 'put ''Y3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbntwYWRkaW5nOi4zcmVtIDEuMnJlbX19LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9uOmhvdmVyLC5jbHItY29tYm9ib3gtb3B0aW9ucyAu''@;'; put 'put ''Y2xyLWNvbWJvYm94LW9wdGlvbi5hY3RpdmV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1jb2xvciwgIzY2NjY2Nil9LmNsci1jb21ib2JveC1kaXNhYmxlZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAj''@;'; put 'put ''YjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1jb21ib2JveC1kaXNhYmxlZCAuY2xyLWNvbWJvYm94LWlucHV0LC5jbHItY29tYm9ib3gtZGlzYWJsZWQgLmNsci1jb21ib2JveC1yZW1vdmUtYnRuLC5jbHItY29tYm9ib3gtZGlzYWJsZWQgLmNsci1jb21ib2JveC10cmlnZ2Vye2N1''@;'; put 'put ''cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZpbHRlci1oaWdobGlnaHQgYntmb250LXdlaWdodDo1MDA7Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtZmlsdGVyLWhpZ2hsaWdodCwgIzQ1NDU0NSl9OnJvb3R7LS1jbHItc3RhY2stdmlldy1ib3JkZXItcmFkaXVzOi4xNXJl''@;'; put 'put ''bTstLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXN0YWNrLXZpZXctYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbTp2YXIoLS1j''@;'; put 'put ''bHItY29sb3ItbmV1dHJhbC0zMDApOy0tY2xyLXN0YWNrLXZpZXctY29sb3I6IzY2NjY2NjstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLXRleHQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1zdGFjay12aWV3LWJvcmRlci1ib3gtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTstLWNsci1zdGFjay1ibG9jay1jaGFuZ2VkLWJvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtYW5kLWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtNTApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stY2hpbGRyZW4tc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stY2hpbGRyZW4tc3RhY2stYmxvY2stbGFiZWwtYW5kLWNv''@;'; put 'put ''bnRlbnQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC1iZy1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRhYmxlLWhv''@;'; put 'put ''dmVyOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jb250ZW50LXRleHQtY29sb3I6aW5oZXJpdDstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGVkLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAw''@;'; put 'put ''MCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jYXJldC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpfS5zdGFjay1oZWFkZXJ7Zm9udC13ZWlnaHQ6NDAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZH0uc3RhY2staGVhZGVyIC5zdGFjay10aXRsZXtk''@;'; put 'put ''aXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87cGFkZGluZzouM3JlbSAwfS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnN7ZGlzcGxheTpibG9jaztmbGV4OjAgMCBhdXRvfS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnMgLnN0YWNrLWFjdGlvbnttYXJnaW46MCAwIC4zcmVtIC42cmVt''@;'; put 'put ''fS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnMgLnN0YWNrLWFjdGlvbi5idG57bWluLXdpZHRoOjA7cGFkZGluZzowIC42cmVtfS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnMgLnN0YWNrLWFjdGlvbi5idG4tbGlua3ttYXJnaW4tcmlnaHQ6LS42cmVtfS5zdGFjay12aWV3e2NvbG9y''@;'; put 'put ''OiM2NjY7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luLXRvcDowO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXN0''@;'; put 'put ''eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtv''@;'; put 'put ''dmVyZmxvdy15OmF1dG87YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctYmctY29sb3IsICNmYWZhZmEpO3dvcmQtd3JhcDpicmVhay13b3JkfS5zdGFjay12aWV3IGRkLC5zdGFjay12aWV3IGR0e21hcmdpbi1pbmxpbmUtc3Rh''@;'; put 'put ''cnQ6MDttYXJnaW4tbGVmdDowfS5zdGFjay12aWV3IC5zdGFjay1ibG9ja3tkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyB3cmFwO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3Jk''@;'; put 'put ''ZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6I2RlZGVkZTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWJvcmRlci1ib3R0b20sICNkZWRlZGUpO292ZXJmbG93LXk6aGlkZGVufS5zdGFjay12aWV3Pi5zdGFjay1i''@;'; put 'put ''bG9jazpsYXN0LWNoaWxkLC5zdGFjay12aWV3PjpsYXN0LWNoaWxkIC5zdGFjay1ibG9jazpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbTpub25lO2JveC1zaGFkb3c6MCAuMDVyZW0gI2RlZGVkZTtib3gtc2hhZG93OjAgLjA1cmVtIDAgdmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWJv''@;'; put 'put ''eC1jb2xvcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNoYW5nZWQ+LnN0YWNrLWJsb2NrLWxhYmVse21hcmdpbi1sZWZ0Oi0uNDVyZW19LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNoYW5nZWQ6YmVmb3Jle2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDowO3dpZHRo''@;'; put 'put ''OjA7Ym9yZGVyLXRvcDouNDVyZW0gc29saWQ7Ym9yZGVyLXRvcC1jb2xvcjojMDA3MmEzO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXN0YWNrLWJsb2NrLWNoYW5nZWQtYm9yZGVyLXRvcC1jb2xvciwgIzAwNzJhMyk7Ym9yZGVyLXJpZ2h0Oi40NXJlbSBzb2xpZCB0cmFuc3BhcmVudH0u''@;'; put 'put ''c3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWx7cGFkZGluZzouM3JlbSAuNnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvciwgI2ZhZmFmYSl9LnN0''@;'; put 'put ''YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jYXJldHthbGlnbi1zZWxmOmNlbnRlcn0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWx7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItc3Rh''@;'; put 'put ''Y2stdmlldy1zdGFjay1ibG9jay1sYWJlbC10ZXh0LWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjJyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4fS5zdGFjay12aWV3IC5zdGFj''@;'; put 'put ''ay1ibG9jay1sYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtmbG9hdDpsZWZ0O2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTttYXJnaW46LjM1cmVtIC4yNHJlbSAwIDA7dGV4dC1hbGlnbjpjZW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWxhYmVsOmZv''@;'; put 'put ''Y3Vze291dGxpbmU6LjI1cmVtIGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yfS5zdGFjay12aWV3IC5zdGFjay12aWV3LWtleXtmbGV4OjAgMCA0MCU7bWF4LXdpZHRoOjQwJX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY2FyZXR7aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtO21hcmdp''@;'; put 'put ''bi1yaWdodDouMjRyZW07ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stY2FyZXQtY29sb3IsICM2NjY2NjYpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jb250ZW50e2NvbG9yOmluaGVyaXQ7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2st''@;'; put 'put ''YmxvY2stY29udGVudC10ZXh0LWNvbG9yLCBpbmhlcml0KTtmbGV4OjEgMSBhdXRvO3dpZHRoOjYwJTttYXJnaW4tYm90dG9tOjA7Zm9udC13ZWlnaHQ6NDAwfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jb250ZW50PjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnN0YWNrLXZpZXcgLnN0''@;'; put 'put ''YWNrLWJsb2NrLWNvbnRlbnQ+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9ja3tib3JkZXItYm90dG9tLWNvbG9yOiNlOGU4''@;'; put 'put ''ZTg7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJlbi1zdGFjay1ibG9jay1ib3JkZXItYm90dG9tLWNvbG9yLCAjZThlOGU4KX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4+LnN0YWNrLWJsb2NrOmxhc3QtY2hpbGQsLnN0YWNrLXZpZXcg''@;'; put 'put ''LnN0YWNrLWNoaWxkcmVuPjpsYXN0LWNoaWxkIC5zdGFjay1ibG9jazpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbTpub25lO2JveC1zaGFkb3c6MCAuMDVyZW0gI2RlZGVkZTtib3gtc2hhZG93OjAgLjA1cmVtIDAgdmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWJveC1jb2xvcil9LnN0''@;'; put 'put ''YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9jay1sYWJlbCwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stY2hpbGRy''@;'; put 'put ''ZW4tc3RhY2stYmxvY2stbGFiZWwtYW5kLWNvbnRlbnQtYmctY29sb3IsIHdoaXRlKX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVse3BhZGRpbmctbGVmdDoxLjJyZW19LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2Nr''@;'; put 'put ''LWxhYmVse2N1cnNvcjpwb2ludGVyfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0El''@;'; put 'put ''MkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEyJTIwMTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDc3R5bGUlM0UuY2xzLTElN0JmaWxsJTNBJTIzNjY2NjY2JTNCJTdEJTND''@;'; put 'put ''JTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VDYXJldCUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjBkJTNEJTIyTTYlMkM5TDEuMiUyQzQuMmEwLjY4JTJDMC42''@;'; put 'put ''OCUyQzAlMkMwJTJDMSUyQzEtMUw2JTJDNy4wOCUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwt''@;'; put 'put ''YWxpZ246bWlkZGxlO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTtoZWlnaHQ6LjZyZW07d2lkdGg6LjZyZW19LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9j''@;'; put 'put ''ay1jb250ZW50e3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZS1pbi1vdXQsY29sb3IgLjJzIGVhc2UtaW4tb3V0fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlOmhvdmVyOm5vdCguc3RhY2stYmxvY2stZXhwYW5kZWQpPi5zdGFjay1ibG9jay1sYWJlbHti''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRhYmxlLWhvdmVyLCAjZThlOGU4KX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXt0cmFu''@;'; put 'put ''c2Zvcm06cm90YXRlKDApfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZDhlM2U5O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtYmctY29sb3IsICNk''@;'; put 'put ''OGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtdGV4dC1jb2xvciwgYmxhY2spfS5zdGFjay12aWV3IGlucHV0W3R5cGU9dGV4dF0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1wYXNzd29yZF0sLnN0YWNrLXZpZXcgaW5wdXRb''@;'; put 'put ''dHlwZT1udW1iZXJdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9ZW1haWxdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9dXJsXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPXRlbF0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1kYXRlXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPXRpbWVdLC5zdGFjay12''@;'; put 'put ''aWV3IGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLC5zdGFjay12aWV3IC5zZWxlY3R7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO21hcmdpbi1yaWdodDouNnJlbTttYXJnaW4tYm90dG9tOi0uOTVyZW19LnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10ZXh0XSwuc3Rh''@;'; put 'put ''Y2stdmlldyBpbnB1dFt0eXBlPXBhc3N3b3JkXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPW51bWJlcl0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1lbWFpbF0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT11cmxdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9dGVsXSwuc3RhY2stdmlldyBpbnB1dFt0''@;'; put 'put ''eXBlPWRhdGVdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9dGltZV0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sLnN0YWNrLXZpZXcgLnNlbGVjdCBzZWxlY3R7aGVpZ2h0OjEuMnJlbX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxv''@;'; put 'put ''Y2stY29udGVudCBpbnB1dFt0eXBlPXRleHRdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9cGFzc3dvcmRdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlu''@;'; put 'put ''cHV0W3R5cGU9bnVtYmVyXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWVtYWlsXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXVybF0s''@;'; put 'put ''LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10ZWxdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9ZGF0ZV0sLnN0YWNrLXZpZXcgLnN0YWNr''@;'; put 'put ''LWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10aW1lXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXXt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6''@;'; put 'put ''ZSAuMnMgZWFzZSxib3JkZXItYm90dG9tLWNvbG9yIC4ycyBlYXNlLWluLW91dH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCAuc2VsZWN0IHNlbGVjdHt0cmFuc2l0aW9uOmJvcmRlci1ib3R0b20tY29sb3IgLjJzIGVhc2UtaW4tb3V0''@;'; put 'put ''fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Q6YWZ0ZXJ7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1pbi1vdXR9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0''@;'; put 'put ''W3R5cGU9dGV4dF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9cGFzc3dvcmRdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPW51bWJlcl0sLnN0''@;'; put 'put ''YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9ZW1haWxdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXVybF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2Nr''@;'; put 'put ''LWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGVsXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRlXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2Nr''@;'; put 'put ''LWNvbnRlbnQgaW5wdXRbdHlwZT10aW1lXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF17Ym9yZGVyLWJvdHRvbS1jb2xvcjojOGM4YzhjO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLW5ldXRyYWwtNjAwLCAjOGM4YzhjKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRp''@;'; put 'put ''b246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1''@;'; put 'put ''dFt0eXBlPXRleHRdLmNsci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1wYXNzd29yZF06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0''@;'; put 'put ''W3R5cGU9cGFzc3dvcmRdLmNsci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1udW1iZXJdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1''@;'; put 'put ''dFt0eXBlPW51bWJlcl0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWVtYWlsXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRb''@;'; put 'put ''dHlwZT1lbWFpbF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXVybF06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9''@;'; put 'put ''dXJsXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGVsXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10ZWxdLmNs''@;'; put 'put ''ci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRlXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRlXS5jbHItZm9j''@;'; put 'put ''dXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGltZV06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGltZV0uY2xyLWZvY3VzLC5z''@;'; put 'put ''dGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRldGltZS1sb2Nh''@;'; put 'put ''bF0uY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6IzAwNzJhMztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2st''@;'; put 'put ''YmxvY2stY29udGVudCAuc2VsZWN0IHNlbGVjdHtib3JkZXItYm90dG9tLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29u''@;'; put 'put ''dGVudCAuc2VsZWN0OmFmdGVye2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwLCAjOGM4YzhjKX0ubW9kYWwgLnN0YWNrLXZpZXd7aGVpZ2h0OjU1dmg7bWFyZ2luLWJvdHRvbTowfS5zdGFjay12aWV3IGNsci1zdGFjay1ibG9jay5zdGFjay1ibG9jay1l''@;'; put 'put ''eHBhbmRhYmxlIC5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmV7Y29udGVudDpub25lfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiBjbHItc3RhY2stYmxvY2sgLnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiAuc3RhY2stYmxvY2stbGFiZWx7cGFkZGlu''@;'; put 'put ''Zy1sZWZ0OjEuOHJlbX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gY2xyLXN0YWNrLWJsb2NrIC5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmUsLnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmV7ZGlzcGxheTpub25lfS5zdGFjay12aWV3IC5z''@;'; put 'put ''dGFjay1jaGlsZHJlbiBjbHItc3RhY2stYmxvY2sgLnN0YWNrLWJsb2NrLWNvbnRlbnQsLnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9jay1jb250ZW50e3BhZGRpbmctbGVmdDouMzZyZW19OnJvb3R7LS1jbHItdHJlZS1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtYm9yZGVycmFkaXVzKTstLWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci10cmVlLWxpbmstaG92ZXItY29sb3I6dmFyKC0tY2xyLWN1c3RvbS1saW5rcy1ob3Zlci1jb2xvcik7LS1jbHItdHJlZS1saW5r''@;'; put 'put ''LXNlbGVjdGlvbi1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItdHJlZS1saW5rLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci10cmVlLW5vZGUtY2FyZXQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKX0u''@;'; put 'put ''Y2xyLXRyZWUtbm9kZXtkaXNwbGF5OmJsb2NrfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNsci10cmVlbm9kZS1jb250ZW50e2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtib3Jk''@;'; put 'put ''ZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdHJlZS1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFy''@;'; put 'put ''KC0tY2xyLXRyZWUtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDoxLjYycmVtfS5jbHItdHJlZW5vZGUtY29udGVudDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6MS42MnJlbX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgY2RzLWljb24sLmNsci10cmVlbm9kZS1jb250ZW50IGNs''@;'; put 'put ''ci1pY29ue2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTttYXJnaW4tcmlnaHQ6LjNyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdHJlZW5vZGUtY2FyZXR7ZmxleDowIDAgMS42MnJlbTtwYWRkaW5nOjA7bWFyZ2luOjA7aGVpZ2h0OjEuNjJyZW07d2lkdGg6MS42MnJlbTtiYWNrZ3Jv''@;'; put 'put ''dW5kOjAgMDtib3JkZXI6MDtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpwb2ludGVyO291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19LmNsci10cmVlbm9kZS1jYXJldDpob3Zlcntjb2xvcjojMDAwO2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1ob3Zlci1jb2xvciwgYmxhY2spfS5jbHItdHJlZS1ub2RlLWNhcmV0LWljb257aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uY2xyLXRyZWVub2RlLXNwaW5uZXItY29udGFpbmVye2hlaWdodDoxLjYycmVt''@;'; put 'put ''O3dpZHRoOjEuNjJyZW07cGFkZGluZzouNDFyZW19LmNsci10cmVlbm9kZS1zcGlubmVye2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTttaW4taGVpZ2h0Oi44cmVtO21pbi13aWR0aDouOHJlbX0uY2xyLXRyZWVub2RlLWNoaWxkcmVue21hcmdpbi1sZWZ0OjEuMTdyZW07d2lsbC1jaGFuZ2U6''@;'; put 'put ''aGVpZ2h0O292ZXJmbG93LXk6aGlkZGVufS5jbHItdHJlZW5vZGUtbGlua3tkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO21hcmdpbjowO3BhZGRpbmc6MCAwIDAgLjNyZW07YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItdHJlZS1saW5rLXRleHQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OmluaGVyaXQ7dGV4dC1hbGlnbjpsZWZ0fS5jbHItdHJlZW5vZGUtbGluazpsaW5rLC5jbHItdHJlZW5vZGUtbGluazp2aXNpdGVkLC5jbHItdHJlZW5vZGUtbGluazphY3RpdmUsLmNs''@;'; put 'put ''ci10cmVlbm9kZS1saW5rOmhvdmVye2NvbG9yOmluaGVyaXR9LmNsci10cmVlbm9kZS1saW5rOmhvdmVyLC5jbHItdHJlZW5vZGUtbGluazpmb2N1c3tiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItdHJlZS1saW5rLWhvdmVyLWNvbG9yLCAjZThlOGU4KTt0ZXh0LWRl''@;'; put 'put ''Y29yYXRpb246bm9uZX0uY2xyLXRyZWVub2RlLWxpbmsuYWN0aXZle2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci10cmVlLWxpbmstc2VsZWN0aW9uLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1o''@;'; put 'put ''b3Zlci1jb2xvciwgYmxhY2spfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyPi5jbHItY2hlY2tib3gtd3JhcHBlcntoZWlnaHQ6MS42MnJlbTt3aWR0aDoxLjYycmVtO3BhZGRpbmctdG9wOi4yMXJlbTtwYWRkaW5nLWxlZnQ6LjQxcmVtfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQt''@;'; put 'put ''Y29udGFpbmVyPi5jbHItY2hlY2tib3gtd3JhcHBlcjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoxLjYycmVtfS5jbHItdHJlZW5vZGUtY29udGVudCAubGFiZWx7bWFyZ2luLWxlZnQ6LjNyZW19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItdHJlZW5vZGUtY29udGVudCAu''@;'; put 'put ''bGFiZWx7bWFyZ2luLWxlZnQ6LjE1cmVtfX1fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAuY2xyLXRyZWVub2RlLWNvbnRlbnQgLmxhYmVsLDpyb290IC5jbHItdHJlZW5vZGUtY29udGVudCAubGFiZWx7bWFyZ2luLWxlZnQ6LjE1cmVtfTpyb290ey0tY2xyLWRhdGFncmlkLWZvbnQtY29sb3I6''@;'; put 'put ''I2FjYmFjMzstLWNsci1kYXRhZ3JpZC1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWRhdGFncmlkLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXI6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtMjAwKTstLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXItZm9udC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItZGF0YWdyaWQtcGFnaW5hdGlv''@;'; put 'put ''bi1idG4tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1kYXRhZ3JpZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1pbnB1dC1ib3JkZXItZm9jdXMtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi00MDApOy0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5l''@;'; put 'put ''dXRyYWwtMCk7LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1hY3Rpb24tcG9wb3Zlci1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLWRh''@;'; put 'put ''dGFncmlkLXJvdy1zZWxlY3RlZDp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kYXRhZ3JpZC1sb2FkaW5nLWJhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7LS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdy1jb2xvcjpyZ2JhKDE0MCwgMTQwLCAx''@;'; put 'put ''NDAsIC4yNSk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MDApOy0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAp''@;'; put 'put ''Oy0tY2xyLWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29uLW9wZW4tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29uLW9wZW4taWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1kYXRhZ3Jp''@;'; put 'put ''ZC1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZTouOHJlbTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1kaXNhYmxlZC1vcGFjaXR5Oi41Nn0uZGF0YWdyaWR7Ym9yZGVyLWNvbGxh''@;'; put 'put ''cHNlOnNlcGFyYXRlO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNj''@;'; put 'put ''Y2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJnY29sb3IsIHdoaXRlKTtjb2xvcjojNjY2O2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci10YWJsZS1mb250LWNvbG9yLCAjNjY2NjY2KTttYXJnaW46MDttYXJnaW4tdG9wOjEuMnJlbTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfS5kYXRhZ3JpZCAuZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZCAuZGF0YWdyaWQtY2VsbHtmb250LXNpemU6LjY1cmVtO2xp''@;'; put 'put ''bmUtaGVpZ2h0Oi43cmVtO2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXRvcC1jb2xvcjojZThlOGU4O2JvcmRlci10b3AtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLXRhYmxlcm93LWJvcmRlcmNvbG9yLCAjZThlOGU4KTtwYWRkaW5nOi41NXJlbSAuNnJlbTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4ubGVmdCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwubGVmdHt0ZXh0LWFsaWdu''@;'; put 'put ''OmxlZnR9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4ubGVmdDpmaXJzdC1jaGlsZCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwubGVmdDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6LjNyZW19LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW57Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''dGhlYWQtY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNTVyZW07Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4wM2VtO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKTt2ZXJ0aWNhbC1hbGln''@;'; put 'put ''bjpib3R0b207Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLWNvbG9yOiNjY2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wOjAgbm9uZX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHkgLmRhdGFncmlkLXJvdzpmaXJzdC1jaGlsZCAuZGF0YWdyaWQtY2VsbHtib3JkZXItdG9wOjAgbm9uZX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHkr''@;'; put 'put ''LmRhdGFncmlkLWJvZHl7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wLWNvbG9yOiNjY2M7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''dGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQgLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtY29sdW1uOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xcmVtO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRh''@;'; put 'put ''YmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0uZGF0YWdyaWQgLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtY29sdW1uOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xcmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci10''@;'; put 'put ''YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5Omxhc3QtY2hpbGQgLmRhdGFncmlkLXJvdzpsYXN0LWNoaWxkIC5kYXRhZ3JpZC1jZWxsOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xcmVt''@;'; put 'put ''O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHk6bGFzdC1jaGlsZCAuZGF0YWdyaWQtcm93Omxhc3QtY2hpbGQgLmRhdGFncmlkLWNlbGw6bGFzdC1jaGlsZHtib3JkZXItcmFk''@;'; put 'put ''aXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjFyZW07Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZC1jb21wYWN0IC5kYXRh''@;'; put 'put ''Z3JpZC1jZWxse3BhZGRpbmctdG9wOi4zcmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0uZGF0YWdyaWQtaG9zdHtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbiBub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9LmRhdGFncmlke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXIt''@;'; put 'put ''Ym90dG9tLXJpZ2h0LXJhZGl1czowOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7b3ZlcmZsb3c6YXV0bztmbGV4OjEgMSBhdXRvO21hcmdpbi10b3A6LjZyZW19LmRhdGFncmlkLWNvbnRhaW5lcnt3aWR0aDphdXRvO2ZvbnQtc2l6ZTouNjVyZW07cGFkZGlu''@;'; put 'put ''ZzouNTVyZW0gLjZyZW19LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7cGFkZGluZzouMXJlbSAuMnJlbSAuMTVyZW07dGV4dC1hbGlnbjpjZW50ZXJ9LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5j''@;'; put 'put ''ZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2hlaWdodDox''@;'; put 'put ''LjVyZW07d2lkdGg6MS41cmVtfWJ1dHRvbi5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1pY29ue2NvbG9y''@;'; put 'put ''OiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWljb24tY29sb3IsICM4YzhjOGMpO21hcmdpbi10b3A6LjE1cmVtfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb24gc3Zne3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNl''@;'; put 'put ''LWluLW91dH0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuc3Bpbm5lcnttYXJnaW4tdG9wOi4zcmVtfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LmRhdGFncmlkLWNvbHVtbntwYWRkaW5nOi41NXJlbSAuNnJlbX0uZGF0YWdyaWQtaGVhZGVyLC5kYXRhZ3JpZC1ib2R5LC5kYXRhZ3Jp''@;'; put 'put ''ZC1yb3csLmRhdGFncmlkLWNvbHVtbiwuZGF0YWdyaWQtY2VsbCwuZGF0YWdyaWQtZml4ZWQtY29sdW1ue2Rpc3BsYXk6YmxvY2t9LmRhdGFncmlkLXJvd3tib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVtO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRh''@;'; put 'put ''YmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3AtY29sb3I6I2NjYztib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZC1yb3c6Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wOm5vbmV9LmRhdGFncmlkLXJvdzpob3Zl''@;'; put 'put ''ciwuZGF0YWdyaWQtcm93OmhvdmVyIC5kYXRhZ3JpZC1yb3ctc3RpY2t5e2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXIsICNlOGU4ZTgpfS5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtc2VsZWN0ZWQsLmRhdGFncmlk''@;'; put 'put ''LXJvdy5kYXRhZ3JpZC1zZWxlY3RlZCAuZGF0YWdyaWQtcm93LXN0aWNreXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQsIGJsYWNrKTtiYWNrZ3JvdW5kLWNvbG9yOiNkOGUzZTk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVj''@;'; put 'put ''dGlvbi1jb2xvciwgI2Q4ZTNlOSl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTAwJTtoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6LS4zcmVtO2JvcmRlci10b3A6LjNy''@;'; put 'put ''ZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtd2lkdGg6LjNyZW07Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1jb2xvcjojY2NjO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0''@;'; put 'put ''YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdzphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTAwJTtoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6LS4yNXJl''@;'; put 'put ''bTtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtd2lkdGg6LjI1cmVtO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZjtib3JkZXItcmlnaHQt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze291dGxpbmU6MH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlv''@;'; put 'put ''bi1pdGVtLmRpc2FibGVkLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmRhdGFncmlkLXJvdyAu''@;'; put 'put ''ZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MCAwfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlv''@;'; put 'put ''bi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNh''@;'; put 'put ''YmxlZDphY3RpdmUsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpmb2N1c3tiYWNrZ3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBj''@;'; put 'put ''ZHMtaWNvbiwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtIGNsci1pY29ue3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtLjA1cmVtLDApfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxv''@;'; put 'put ''d3twb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO3BhZGRpbmc6LjNyZW07bWFyZ2luLWxlZnQ6LjNyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVyZW07Ym9y''@;'; put 'put ''ZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQw''@;'; put 'put ''O2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMs''@;'; put 'put ''IC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRv''@;'; put 'put ''cDotLjNyZW07Ym9yZGVyLXRvcDouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC13aWR0aDouM3JlbTtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjY2M7Ym9yZGVyLXJp''@;'; put 'put ''Z2h0LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVp''@;'; put 'put ''Z2h0OjA7bWFyZ2luLXRvcDotLjI1cmVtO2JvcmRlci10b3A6LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC13aWR0aDouMjVyZW07Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1j''@;'; put 'put ''b2xvcjojZmZmO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06aG92ZXIsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92''@;'; put 'put ''ZXJmbG93IC5hY3Rpb24taXRlbTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLXBvcG92ZXItaG92ZXItY29sb3IsICNlOGU4ZTgpO3RleHQtZGVjb3JhdGlvbjpub25lfS5kYXRhZ3JpZC1yb3cgLmRhdGFn''@;'; put 'put ''cmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uYWN0aXZle2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXIsICNlOGU4ZTgpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCwgYmxhY2spfS5k''@;'; put 'put ''YXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvd3twb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO3BhZGRpbmc6LjNyZW07bWFyZ2luLWxlZnQ6LjNyZW07Ym9yZGVy''@;'; put 'put ''LXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7''@;'; put 'put ''Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1jb2xvcjouMTVyZW07Ym9yZGVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2ZvbnQtd2VpZ2h0OjQwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmln''@;'; put 'put ''aHQ6MTAwJTt3aWR0aDowO2hlaWdodDowO21hcmdpbi10b3A6LS4zcmVtO2JvcmRlci1yaWdodDouM3JlbSBzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3Jk''@;'; put 'put ''ZXItdG9wOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjNyZW0gc29saWQgdHJhbnNwYXJlbnR9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dp''@;'; put 'put ''ZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjI1cmVtO2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgI2ZmZjtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1h''@;'; put 'put ''Y3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVte2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLXRleHQtY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlz''@;'; put 'put ''cGxheTpibG9jaztsaW5lLWhlaWdodDoxLjE1cmVtO21hcmdpbjowO3BhZGRpbmc6LjA1cmVtIDEuMnJlbSAwO3RleHQtYWxpZ246bGVmdDt3aWR0aDoxMDAlfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06aG92ZXIsLmRhdGFncmlkLXJvdyAu''@;'; put 'put ''ZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLXBvcG92ZXItaG92ZXItY29sb3IsICNlOGU4ZTgpfS5k''@;'; put 'put ''YXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uYWN0aXZle2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXIsICNlOGU4ZTgpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXJv''@;'; put 'put ''dy1ob3Zlci1mb250LWNvbG9yLCBibGFjayl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpmb2N1c3tvdXRsaW5lOjB9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZCwuZGF0YWdy''@;'; put 'put ''aWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxv''@;'; put 'put ''dyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6aG92ZXIsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVt''@;'; put 'put ''LmRpc2FibGVkOmFjdGl2ZSwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtLmRpc2FibGVkOmZvY3VzLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1y''@;'; put 'put ''b3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6Zm9jdXN7YmFja2dyb3VuZDowIDA7Ym94LXNoYWRvdzpub25lfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0gY2RzLWljb24sLmRhdGFncmlkLXJvdyAu''@;'; put 'put ''ZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjbHItaWNvbnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLS4wNXJlbSwwKX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1yb3ctZGV0YWlsLXdyYXBwZXJ7ZmxleDoxIDEgYXV0bztkaXNw''@;'; put 'put ''bGF5OmZsZXh9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LWRldGFpbHt3aWR0aDphdXRvfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1kZXRhaWwgLmRhdGFncmlkLWNlbGx7cGFkZGluZy10b3A6MDtib3JkZXI6MH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zZWxlY3R7bWluLXdp''@;'; put 'put ''ZHRoOi40cmVtfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0e21hcmdpbjotLjM2cmVtIDA7aGVpZ2h0OjEuMjM2cmVtfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0IC5zaWducG9zdC10cmlnZ2Vye2hl''@;'; put 'put ''aWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuMnJlbX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1yb3ctc3RpY2t5e3otaW5kZXg6NTAwfS5kYXRhZ3JpZC1yb3ctc3RpY2t5e2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1iZ2NvbG9yLCB3''@;'; put 'put ''aGl0ZSk7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7cG9zaXRpb246c3RpY2t5O2xlZnQ6MDt6LWluZGV4OjUwMn0uZGF0YWdyaWQtcm93LXN0aWNreSAuZGF0YWdyaWQtY2VsbDpsYXN0LWNoaWxkOmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6LjA1cmVtO2hlaWdodDpjYWxjKDEwMCUg''@;'; put 'put ''LSAuNXJlbSk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6LjI1cmVtO2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZXtmbGV4OjEgMSBhdXRvO2Rp''@;'; put 'put ''c3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uIG5vd3JhcH0uZGF0YWdyaWQtcm93LXNjcm9sbGFibGUuaXMtcmVwbGFjZWR7ZmxleC1kaXJlY3Rpb246cm93fS5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZS5pcy1yZXBsYWNlZCAuZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxze2ZsZXg6MCAwIGF1''@;'; put 'put ''dG99LmRhdGFncmlkLXJvdy1zY3JvbGxhYmxlIC5kYXRhZ3JpZC1jb2x1bW46bGFzdC1jaGlsZCAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvcntkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXJvdy1mbGV4e2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5k''@;'; put 'put ''YXRhZ3JpZC1yb3ctZmxleCAuZGF0YWdyaWQtcm93LWRldGFpbHtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLXJvdy1mbGV4IC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1jZWxse3BhZGRpbmctdG9wOjB9LmRhdGFncmlkLXNjcm9sbGluZy1jZWxs''@;'; put 'put ''cywuZGF0YWdyaWQtc2Nyb2xsaW5nLWRldGFpbHN7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLWFjdGlvbi1iYXJ7bWFyZ2luLXRvcDoxLjJyZW19LmRhdGFncmlkLWFjdGlvbi1iYXJ+LmRhdGFncmlkLXNwaW5uZXJ7aGVpZ2h0OmNh''@;'; put 'put ''bGMoMTAwJSAtIDEuMnJlbSk7dG9wOjEuMnJlbX0uZGF0YWdyaWQtaGVhZGVye3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjUwMTt3aWR0aDphdXRvfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbntib3JkZXItYm90dG9tOm5vbmV9LmRhdGFncmlkLWhlYWRlciAuZGF0''@;'; put 'put ''YWdyaWQtcm93e2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKTtib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90''@;'; put 'put ''dG9tLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2NjO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93IC5k''@;'; put 'put ''YXRhZ3JpZC1yb3ctc3RpY2t5LC5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdzpob3ZlciwuZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3c6aG92ZXIgLmRhdGFncmlkLXJvdy1zdGlja3l7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LXRoZWFkLWJnY29sb3IsICNmYWZhZmEpfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdy1zY3JvbGxhYmxle2ZsZXgtZGlyZWN0aW9uOnJvd30uZGF0YWdyaWQtdGFibGUtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzttaW4taGVpZ2h0OjEwMCV9LmRhdGFncmlkLXRh''@;'; put 'put ''Ymxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDEgYXV0bzthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1ib2R5e3dpZHRoOmF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW57dGV4dC1hbGlnbjps''@;'; put 'put ''ZWZ0O21pbi13aWR0aDo0LjhyZW07ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87dmVydGljYWwtYWxpZ246dG9wO2JvcmRlcjowfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uOmZvY3Vze291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIHNvbGlkIC4xcmVtO291dGxp''@;'; put 'put ''bmUtb2Zmc2V0Oi0uMXJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBjbHItZGctZmlsdGVyLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGNsci1kZy1zdHJpbmctZmlsdGVyLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGNsci1kZy1udW1lcmlj''@;'; put 'put ''LWZpbHRlcntkaXNwbGF5OmZsZXg7b3JkZXI6OTk7bWFyZ2luLWxlZnQ6YXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLWlucHV0LXNwYWNlcnt3aWR0aDouNnJlbTtkaXNwbGF5OmlubGluZS1ibG9ja30uZGF0YWdyaWQtdGFibGUgLmRhdGFn''@;'; put 'put ''cmlkLWNvbHVtbiAuZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXR7d2lkdGg6My45cmVtfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2Zsb2F0OnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6Ljdy''@;'; put 'put ''ZW07d2lkdGg6LjdyZW07bWFyZ2luLWxlZnQ6LjNyZW07YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWlufWJ1dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xle2N1cnNvcjpwb2ludGVyfS5k''@;'; put 'put ''YXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlIGNsci1pY29ue2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LW5ldXRyYWwtNjAwLCAjOGM4YzhjKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZTpob3ZlciBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZTpob3ZlciBjbHItaWNv''@;'; put 'put ''bntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS5kYXRhZ3JpZC1maWx0ZXItb3BlbiBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRh''@;'; put 'put ''dGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS5kYXRhZ3JpZC1maWx0ZXItb3BlbiBjbHItaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdy''@;'; put 'put ''aWQtZmlsdGVyLXRvZ2dsZS5kYXRhZ3JpZC1maWx0ZXJlZCBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS5kYXRhZ3JpZC1maWx0ZXJlZCBjbHItaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jb2xvci1h''@;'; put 'put ''Y3Rpb24tNjAwLCAjMDA3MmEzKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVye3RvcDoxMDAlO3JpZ2h0OjA7bWFyZ2luLXRvcDouMjRyZW07YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29s''@;'; put 'put ''b3IsIHdoaXRlKTtwYWRkaW5nOi45cmVtO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQt''@;'; put 'put ''cG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdy1jb2xvciwgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUp''@;'; put 'put ''KTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2ZvbnQtd2VpZ2h0OjQwMH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVye3RvcDoxMDAlO3JpZ2h0OjA7bWFyZ2lu''@;'; put 'put ''LXRvcDouMjRyZW07YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKTtwYWRkaW5nOi45cmVtO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJl''@;'; put 'put ''bSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJl''@;'; put 'put ''bSB2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdy1jb2xvciwgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2ZvbnQtd2VpZ2h0OjQwMH0u''@;'; put 'put ''ZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyIC5kYXRhZ3JpZC1maWx0ZXItY2xvc2Utd3JhcHBlcnt0ZXh0LWFsaWduOnJpZ2h0fS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1j''@;'; put 'put ''bG9zZS13cmFwcGVyIC5jbG9zZXtmbG9hdDpub25lfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1hcHBseXttYXJnaW4tYm90dG9tOjB9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4uZGF0YWdyaWQtZml4''@;'; put 'put ''ZWQtd2lkdGh7ZmxleDowIDAgYXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLWZsZXh7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZXstd2Vi''@;'; put 'put ''a2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjb2xvcjojNjY2''@;'; put 'put ''O2NvbG9yOnZhcigtLWNsci10YWJsZS1mb250LWNvbG9yLCAjNjY2NjY2KTt0ZXh0LWFsaWduOmxlZnQ7ZmxleDoxIDEgYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXI7ZGlzcGxheTpmbGV4fWJ1dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5k''@;'; put 'put ''YXRhZ3JpZC1jb2x1bW4tdGl0bGV7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZSAuc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbi5idG57aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZGF0YWdy''@;'; put 'put ''aWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXRpdGxlIC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDotLjQ4cmVtfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4t''@;'; put 'put ''dGl0bGU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBidXR0b24uZGF0YWdyaWQtY29sdW1uLXRpdGxlIC5zb3J0LWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0''@;'; put 'put ''aW9uLTYwMCwgIzAwNzJhMyk7bWFyZ2luLWxlZnQ6YXV0bztoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6''@;'; put 'put ''LjZyZW07ZmxleDowIDAgYXV0bzt3aWR0aDouMDVyZW07d2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtvcmRlcjoxMDA7bWFyZ2luLWxlZnQ6YXV0bztoZWlnaHQ6MTAwJX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1u''@;'; put 'put ''LXNlcGFyYXRvcjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDpjYWxjKDEwMCUgKyAuNnJlbSAtIC4wNXJlbSk7d2lkdGg6LjA1cmVtO3RvcDotLjI1cmVtO2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFi''@;'; put 'put ''bGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciAuZGF0YWdyaWQtY29sdW1uLWhhbmRsZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFy''@;'; put 'put ''YW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDouNjVyZW07cmlnaHQ6LS4zcmVtO3RvcDotLjNyZW07Y3Vyc29y''@;'; put 'put ''OmNvbC1yZXNpemU7aGVpZ2h0OmNhbGMoMTAwJSArIC42cmVtIC0gLjA1cmVtKTt6LWluZGV4OjUwMX1idXR0b24uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciAuZGF0YWdyaWQtY29sdW1uLWhhbmRsZXtjdXJzb3I6cG9pbnRlcn0u''@;'; put 'put ''ZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciAuZGF0YWdyaWQtY29sdW1uLXJlc2l6ZS10cmFja2Vye3Bvc2l0aW9uOmFic29sdXRlO3RvcDotLjZyZW07ZGlzcGxheTpub25lO3dpZHRoOi4wNXJlbTtoZWlnaHQ6MDtib3JkZXItcmln''@;'; put 'put ''aHQtc3R5bGU6ZG90dGVkO2JvcmRlci1yaWdodC1jb2xvcjojNzljNmU2O2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTMwMCwgIzc5YzZlNik7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4wNXJlbTtib3JkZXItcmlnaHQtd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3Jk''@;'; put 'put ''ZXJ3aWR0aCwgLjA1cmVtKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO2N1cnNvcjpjb2wtcmVzaXplfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4tcmVzaXplLXRyYWNrZXIub24tYXJyb3cta2V5LXJl''@;'; put 'put ''c2l6ZXt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZS1vdXR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmV4Y2VlZGVkLW1heHtib3JkZXItcmlnaHQ6LjA1cmVtIGRvdHRlZCByZ2JhKDIxOSwzMywwLC4zKX0uZGF0YWdy''@;'; put 'put ''aWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3R7bWFyZ2luOi0uMzZyZW0gMDtoZWlnaHQ6MS4yMzZyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0''@;'; put 'put ''IC5zaWducG9zdC10cmlnZ2Vye2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuMnJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1zZWxlY3QsLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCwuZGF0''@;'; put 'put ''YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1yb3ctYWN0aW9uc3ttYXgtd2lkdGg6MS45cmVtO21pbi13aWR0aDoxLjlyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxse2ZsZXg6MSAxIGF1dG87dGV4dC1hbGlnbjpsZWZ0O21pbi13aWR0aDo0LjhyZW07Ym9y''@;'; put 'put ''ZGVyOjB9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLWZpeGVkLXdpZHRoe2ZsZXg6MCAwIGF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLWZpeGVkLWNvbHVtbntmbGV4OjAgMCAxLjlyZW07bWF4LXdpZHRoOjEuOXJlbTttaW4td2lk''@;'; put 'put ''dGg6MS45cmVtfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1yb3ctYWN0aW9uc3tiYWNrZ3JvdW5kOjAgMH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldHtwYWRkaW5nOi4xcmVtIC4ycmVtIC4xNXJlbTt0ZXh0''@;'; put 'put ''LWFsaWduOmNlbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGw6Zm9jdXN7b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LS4xcmVtfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9u''@;'; put 'put ''LXRvZ2dsZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAg''@;'; put 'put ''MH1idXR0b24uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGV7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdy''@;'; put 'put ''aWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZSBjbHItaWNvbntjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1pY29uLWNvbG9yLCAjOGM4YzhjKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGU6YWN0aXZlIGNk''@;'; put 'put ''cy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZTphY3RpdmUgY2xyLWljb257Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZSwgIzY2NjY2Nil9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1j''@;'; put 'put ''ZWxsIC5jbHItdG9nZ2xlLXdyYXBwZXJ7bWFyZ2luLXRvcDotLjY2cmVtO3BhZGRpbmctdG9wOi40MnJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lcntmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRl''@;'; put 'put ''ci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRo''@;'; put 'put ''LCAuMDVyZW0pfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXJ7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLXRhYmxlLWJnY29sb3IsIHdoaXRlKTt3aWR0aDoxMDAlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXIuZGF0YWdyaWQt''@;'; put 'put ''ZW1wdHl7Ym9yZGVyLXRvcDowO3BhZGRpbmc6LjZyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtmb250LXNpemU6LjhyZW07Zm9udC1zaXplOnZhcigtLWNsci1kYXRhZ3JpZC1wbGFj''@;'; put 'put ''ZWhvbGRlci1mb250LXNpemUsIC44cmVtKTtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb2xvciwgI2IzYjNiMyl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlciAuZGF0YWdyaWQtcGxhY2Vob2xkZXItaW1hZ2V7aGVpZ2h0''@;'; put 'put ''OjNyZW07d2lkdGg6M3JlbTttYXJnaW4tYm90dG9tOi42cmVtO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9''@;'; put 'put ''dXRmOCwlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjA2MCUyMDcyJTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3Jn''@;'; put 'put ''JTJGMTk5OSUyRnhsaW5rJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2VsbGlwc2UlMjBpZCUzRCUyMnBhdGgtMSUyMiUyMGN4JTNEJTIyMzAlMjIlMjBjeSUzRCUyMjYxLjc2NjY2NjclMjIlMjByeCUzRCUyMjE1LjQ1MTI5MDQl''@;'; put 'put ''MjIlMjByeSUzRCUyMjQuNzMzMzMzMzMlMjIlM0UlM0MlMkZlbGxpcHNlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbWFzayUyMGlkJTNEJTIybWFzay0yJTIyJTIwbWFza0NvbnRlbnRVbml0cyUzRCUyMnVzZXJTcGFjZU9uVXNlJTIyJTIwbWFza1VuaXRzJTNEJTIyb2JqZWN0''@;'; put 'put ''Qm91bmRpbmdCb3glMjIlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjIwJTIyJTIwd2lkdGglM0QlMjIzMC45MDI1ODA4JTIyJTIwaGVpZ2h0JTNEJTIyOS40NjY2NjY2NyUyMiUyMGZpbGwlM0QlMjJ3aGl0ZSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3Vz''@;'; put 'put ''ZSUyMHhsaW5rJTNBaHJlZiUzRCUyMiUyM3BhdGgtMSUyMiUzRSUzQyUyRnVzZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm1hc2slM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIyUGFnZS0xJTIyJTIwc3Ryb2tl''@;'; put 'put ''JTNEJTIybm9uZSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJBcnRib2FyZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3VzZSUyMGlkJTNEJTIyT3ZhbC0xMCUyMiUyMHN0cm9rZSUzRCUyMiUyM0MxREZFRiUyMiUyMG1hc2slM0QlMjJ1cmwoJTIzbWFzay0yKSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjIuOCUyMiUyMHN0cm9rZS1saW5lY2FwJTNEJTIyc3F1YXJlJTIyJTIw''@;'; put 'put ''c3Ryb2tlLWRhc2hhcnJheSUzRCUyMjMlMkM2JTJDMyUyQzUlMjIlMjB4bGluayUzQWhyZWYlM0QlMjIlMjNwYXRoLTElMjIlM0UlM0MlMkZ1c2UlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk0zOC40NjEzNjQ3JTJDMTguMTY0MjQ1''@;'; put 'put ''NiUyMEwzMC45ODkwMTM3JTJDMzQuOTE0MTg0NiUyMEwzMSUyQzQ3JTIwTDMyLjU5Nzc3ODMlMkM0Ni41MTY3MjM2JTIwTDMyLjU5Nzc3ODMlMkMzNC45MTQxODQ2JTIwTDUxLjA2NzMyMTglMkMxNS43NTYwNDI1JTIwQzUxLjA2NzMyMTglMkMxNS43NTYwNDI1JTIwNDguNjI5NTE2NiUyQzE2''@;'; put 'put ''LjY1NDI5NjklMjA0NC45NjI4OTA2JTJDMTcuMzM5MjMzNCUyMEM0MS4yOTYyNjQ2JTJDMTguMDI0MTY5OSUyMDM4LjQ2MTM2NDclMkMxOC4xNjQyNDU2JTIwMzguNDYxMzY0NyUyQzE4LjE2NDI0NTYlMjBaJTIyJTIwaWQlM0QlMjJQYXRoLTE5NSUyMiUyMGZpbGwlM0QlMjIlMjNDMURGRUYl''@;'; put 'put ''MjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNNC43NDYzOTIyNiUyQzEyLjU2NjE4NTUlMjBMNC42MjA2NTcyNiUyQzEyLjE2MDUzNDglMjBMNS4zNTE1NDE0JTJDMTEuMTYyNTA0NCUyMEw1Ljc3NjIyMzg1''@;'; put 'put ''JTJDMTEuMTU5OTM5JTIwTDYuMjA5MzYzMDklMkMxMi41NTczNDgxJTIwTDQuNzQ2MzkyMjYlMkMxMi41NjYxODU1JTIwWiUyME02LjIwOTM2MzA5JTJDMTIuNTU3MzQ4MSUyMEw2LjMyNTQyNjMyJTJDMTIuOTMxNzk1NCUyMEwyOC40OTYzODU1JTJDMzQuODc5NjcxOCUyMEwyOC40OTYzODU1''@;'; put 'put ''JTJDNDcuODA5NjY5MSUyMEwzMi42JTJDNDYuNDgzNjUxMyUyMEwzMi42JTJDMzQuODk5MjM2NSUyMEw1My45NzM0OTQlMkMxMi43MDM1ODEzJTIwTDUzLjk3MzQ5NCUyQzEyLjI2ODgyMDElMjBMNi4yMDkzNjMwOSUyQzEyLjU1NzM0ODElMjBaJTIwTTU1LjM3MzQ5NCUyQzEwLjg2MDMzNzYl''@;'; put 'put ''MjBMNTUuMzczNDk0JTJDMTMuMjY4MDY2NCUyMEwzNCUyQzM1LjQ2MzcyMTYlMjBMMzQlMkM0Ny41MDI1NDAxJTIwTDI3LjA5NjM4NTUlMkM0OS43MzMzMzMzJTIwTDI3LjA5NjM4NTUlMkMzNS40NjM3MjE5JTIwTDUuMDkxNzk2ODglMkMxMy42ODA1NDIlMjBMNC4zMTMyNTMwMSUyQzExLjE2''@;'; put 'put ''ODc3NjQlMjBMNTUuMzczNDk0JTJDMTAuODYwMzM3NiUyMFolMjIlMjBpZCUzRCUyMlBhdGgtMTQ5JTIyJTIwZmlsbCUzRCUyMiUyMzdGQkRERCUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NlbGxpcHNlJTIwaWQlM0QlMjJPdmFs''@;'; put 'put ''LTklMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTIwY3glM0QlMjIzMCUyMiUyMGN5JTNEJTIyMTEuNzg1NjU0JTIyJTIwcnglM0QlMjIyNiUyMiUyMHJ5JTNEJTIyNi43ODU2NTQwMSUyMiUzRSUzQyUyRmVsbGlwc2UlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0NwYXRoJTIwZCUzRCUyMk0zMCUyQzE3LjE3MTMwOCUyMEMzNi44NzcyMTc3JTJDMTcuMTcxMzA4JTIwNDMuMzExMjI4MiUyQzE2LjQ2MTA3MDElMjA0OC4wMzEyMzcxJTJDMTUuMjI5MjEwNiUyMEM1MC4yNzc3NjExJTJDMTQuNjQyODk3NyUyMDUyLjA1MDc2MTklMkMxMy45NTc5Njc3''@;'; put 'put ''JTIwNTMuMjIxNjIzMSUyQzEzLjIzNTQ5NzMlMjBDNTQuMTkzODU2NSUyQzEyLjYzNTU4ODYlMjA1NC42JTJDMTIuMTE3NTg5MSUyMDU0LjYlMkMxMS43ODU2NTQlMjBDNTQuNiUyQzExLjQ1MzcxODklMjA1NC4xOTM4NTY1JTJDMTAuOTM1NzE5NCUyMDUzLjIyMTYyMzElMkMxMC4zMzU4MTA3''@;'; put 'put ''JTIwQzUyLjA1MDc2MTklMkM5LjYxMzM0MDMyJTIwNTAuMjc3NzYxMSUyQzguOTI4NDEwMzQlMjA0OC4wMzEyMzcxJTJDOC4zNDIwOTc0NiUyMEM0My4zMTEyMjgyJTJDNy4xMTAyMzc5NSUyMDM2Ljg3NzIxNzclMkM2LjQlMjAzMCUyQzYuNCUyMEMyMy4xMjI3ODIzJTJDNi40JTIwMTYuNjg4''@;'; put 'put ''NzcxOCUyQzcuMTEwMjM3OTUlMjAxMS45Njg3NjI5JTJDOC4zNDIwOTc0NiUyMEM5LjcyMjIzODg2JTJDOC45Mjg0MTAzNCUyMDcuOTQ5MjM4MTQlMkM5LjYxMzM0MDMyJTIwNi43NzgzNzY4OSUyQzEwLjMzNTgxMDclMjBDNS44MDYxNDM1JTJDMTAuOTM1NzE5NCUyMDUuNCUyQzExLjQ1Mzcx''@;'; put 'put ''ODklMjA1LjQlMkMxMS43ODU2NTQlMjBDNS40JTJDMTIuMTE3NTg5MSUyMDUuODA2MTQzNSUyQzEyLjYzNTU4ODYlMjA2Ljc3ODM3Njg5JTJDMTMuMjM1NDk3MyUyMEM3Ljk0OTIzODE0JTJDMTMuOTU3OTY3NyUyMDkuNzIyMjM4ODYlMkMxNC42NDI4OTc3JTIwMTEuOTY4NzYyOSUyQzE1LjIy''@;'; put 'put ''OTIxMDYlMjBDMTYuNjg4NzcxOCUyQzE2LjQ2MTA3MDElMjAyMy4xMjI3ODIzJTJDMTcuMTcxMzA4JTIwMzAlMkMxNy4xNzEzMDglMjBaJTIwTTMwJTJDMTguNTcxMzA4JTIwQzE1LjY0MDU5NjUlMkMxOC41NzEzMDglMjA0JTJDMTUuNTMzMjY3MiUyMDQlMkMxMS43ODU2NTQlMjBDNCUyQzgu''@;'; put 'put ''MDM4MDQwNzglMjAxNS42NDA1OTY1JTJDNSUyMDMwJTJDNSUyMEM0NC4zNTk0MDM1JTJDNSUyMDU2JTJDOC4wMzgwNDA3OCUyMDU2JTJDMTEuNzg1NjU0JTIwQzU2JTJDMTUuNTMzMjY3MiUyMDQ0LjM1OTQwMzUlMkMxOC41NzEzMDglMjAzMCUyQzE4LjU3MTMwOCUyMFolMjIlMjBpZCUzRCUy''@;'; put 'put ''Mk92YWwtOS1Db3B5JTIyJTIwZmlsbCUzRCUyMiUyMzdGQkRERCUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk0xOC4yNjA4NjQzJTJDNy4xNDU2Mjk4OCUyMEwyMi43MjczNTYlMkMxNi45MDQ3MjQxJTIw''@;'; put 'put ''QzIyLjcyNzM1NiUyQzE2LjkwNDcyNDElMjAxNS4zMDA2NTkyJTJDMTYuMzkxMTc0MyUyMDEwLjI3NjAwMSUyQzE0Ljc1MTE1OTclMjBDNS4yNTEzNDI3NyUyQzEzLjExMTE0NSUyMDUuMzgwMzEwMDYlMkMxMS44Mjg0MzAyJTIwNS4zODAzMTAwNiUyQzExLjY4ODI5MzUlMjBDNS4zODAzMTAw''@;'; put 'put ''NiUyQzEwLjQ4MzI4MzElMjA4LjE2NjMzMTUyJTJDOS40MTg3NzcxNiUyMDExLjExNDU2MyUyQzguNTczMjQyMTklMjBDMTQuNTQ5MzE5JTJDNy41ODgxNzQ5MiUyMDE4LjI2MDg2NDMlMkM3LjE0NTYyOTg4JTIwMTguMjYwODY0MyUyQzcuMTQ1NjI5ODglMjBaJTIyJTIwaWQlM0QlMjJQYXRo''@;'; put 'put ''LTE5NiUyMiUyMGZpbGwlM0QlMjIlMjNDMURGRUYlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElM0MlMkZzdmclM0UiKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWhpZGRlbi1jb2x1''@;'; put 'put ''bW4uZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtaGlkZGVuLWNvbHVtbi5kYXRhZ3JpZC1jZWxse2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1zY3JvbGxpbmctY2VsbHMgLmRhdGFncmlkLWNlbGw6bm90KC5kYXRhZ3JpZC1l''@;'; put 'put ''eHBhbmRhYmxlLWNhcmV0KTpub3QoLmRhdGFncmlkLXJvdy1hY3Rpb25zKTpub3QoLmRhdGFncmlkLXNlbGVjdCl7ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXJvdy1kZXRhaWwgLmRhdGFncmlkLWNlbGx7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDou''@;'; put 'put ''NTVyZW19LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1ue2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1leHBhbmRhYmxl''@;'; put 'put ''LWNhcmV0e3BhZGRpbmctdG9wOi4xcmVtfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXJvdy1kZXRhaWwuZGF0YWdyaWQtY29udGFpbmVye2JvcmRlci10b3A6LjA1cmVtIHNvbGlkICNjY2N9LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbC5kYXRh''@;'; put 'put ''Z3JpZC1jb250YWluZXIgLmRhdGFncmlkLWNlbGx7Ym9yZGVyLXRvcDpub25lfS5kYXRhZ3JpZC1mb290ZXJ7ZmxleDowIDAgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6c3RyZXRjaDtwYWRk''@;'; put 'put ''aW5nOjAgLjZyZW07bGluZS1oZWlnaHQ6MS42NXJlbTtmb250LXNpemU6LjU1cmVtO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9y''@;'; put 'put ''ZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZS1mb290ZXItYm9yZGVyLXRvcC1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wOm5vbmU7Ym9yZGVyLXJhZGl1czowO2Jv''@;'; put 'put ''cmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNs''@;'; put 'put ''ci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb257ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bGluZS1oZWlnaHQ6MS44cmVtfS5kYXRhZ3JpZC1mb290''@;'; put 'put ''ZXIgLnBhZ2luYXRpb24tc2l6ZXtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtYWxpZ246cmlnaHR9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1zaXplIC5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXJ7dG9wOi42cmVtfS5kYXRhZ3JpZC1m''@;'; put 'put ''b290ZXIgLnBhZ2luYXRpb24tc2l6ZSAuY2xyLXBhZ2Utc2l6ZS1zZWxlY3R7Zm9udC1zaXplOjEwMCU7bWFyZ2luLWxlZnQ6LjZyZW07aGVpZ2h0OjEuMnJlbTtsaW5lLWhlaWdodDoxLjJyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tc2l6''@;'; put 'put ''ZSsucGFnaW5hdGlvbi1kZXNjcmlwdGlvbnttYXJnaW4tbGVmdDoxLjJyZW19LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1kZXNjcmlwdGlvbnt3aGl0ZS1zcGFjZTpub3dyYXB9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1saXN0e21hcmdpbi1sZWZ0OjEuMnJlbTtkaXNwbGF5''@;'; put 'put ''OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFw''@;'; put 'put ''cGVyLmFjdGl2ZSAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uIGNkcy1pY29uLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlci5hY3RpdmUgLmNvbHVtbi10b2dnbGUtLWFjdGlvbiBjbHItaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24t''@;'; put 'put ''NjAwLCAjMDA3MmEzKX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbnttaW4td2lkdGg6LjlyZW07cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAu''@;'; put 'put ''Y29sdW1uLXRvZ2dsZS0tYWN0aW9uIGNkcy1pY29uLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uIGNsci1pY29ue2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwLCAjOGM4YzhjKX0uZGF0''@;'; put 'put ''YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjpob3ZlciBjZHMtaWNvbiwuZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjpob3ZlciBjbHItaWNvbntjb2xvcjojMDA3MmEz''@;'; put 'put ''O2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2h7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywg''@;'; put 'put ''LjE1cmVtKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNj''@;'; put 'put ''Y2NjY2MpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3Bv''@;'; put 'put ''dmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO3BhZGRpbmc6LjlyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci10b3A6bm9uZTt3aWR0aDoxMi41cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDoxMDUwfS5kYXRh''@;'; put 'put ''Z3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZTouOHJlbTtwYWRkaW5nLWJvdHRvbTouNnJlbTtsaW5l''@;'; put 'put ''LWhlaWdodDoxLjJyZW19LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbnttaW4td2lkdGg6LjlyZW07bWFyZ2luOjA7cGFkZGluZzowfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBl''@;'; put 'put ''ciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnR7bWF4LWhlaWdodDoxNXJlbTtvdmVyZmxvdy15OmF1dG87bWluLWhlaWdodDoyLjRyZW19LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtY29udGVudCBsaXtsaW5lLWhl''@;'; put 'put ''aWdodDoxLjJyZW07cGFkZGluZy1sZWZ0Oi4xcmVtfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYnRue21hcmdpbjowO3BhZGRpbmc6MH0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIg''@;'; put 'put ''LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1mb290ZXIgLmFjdGlvbi1yaWdodHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaHtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFy''@;'; put 'put ''KC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItc3R5bGU6c29saWQ7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhj''@;'; put 'put ''OGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO3BhZGRpbmc6LjlyZW07d2lkdGg6MTIuNXJlbTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29s''@;'; put 'put ''dW1uO3otaW5kZXg6MTA1MH0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6LjhyZW07cGFk''@;'; put 'put ''ZGluZy1ib3R0b206LjZyZW07bGluZS1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBidXR0b257bWluLXdpZHRoOi45cmVtO21hcmdpbjowO3BhZGRpbmc6MDtjb2xvcjojYjNiM2IzO2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWNvbG9yLCAjYjNiM2IzKX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9uOmhvdmVye2NvbG9yOiMwMDcyYTM7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtaG92ZXItY29sb3IsICMwMDcyYTMpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnR7bWF4LWhlaWdodDoxNXJlbTtvdmVyZmxv''@;'; put 'put ''dy15OmF1dG87bWluLWhlaWdodDoxLjI1cmVtfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnQgbGl7bGluZS1oZWlnaHQ6MS4ycmVtO3BhZGRpbmctbGVmdDouMXJlbX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4t''@;'; put 'put ''c3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1mb290ZXIgLmJ0bnttYXJnaW46MDtwYWRkaW5nOjB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtZm9vdGVyIC5hY3Rpb24tcmlnaHR7ZGlzcGxheTpmbGV4''@;'; put 'put ''O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZGF0YWdyaWQtZm9vdGVyIC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMCV9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3Qu''@;'; put 'put ''Y2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHtjdXJzb3I6ZGVmYXVsdDttYXJnaW4tcmlnaHQ6LjQ1cmVtfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5kYXRhZ3JpZC1mb290ZXItc2VsZWN0LmNsci1jaGVja2JveC13cmFwcGVyIGlu''@;'; put 'put ''cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzhjOGM4YztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCwgIzhjOGM4Yyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1z''@;'; put 'put ''ZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDphZnRlcntib3JkZXItbGVmdC1jb2xvcjojZmZmO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTAsIHdoaXRlKTtib3JkZXItYm90dG9tLWNvbG9yOiNm''@;'; put 'put ''ZmY7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wLCB3aGl0ZSl9LmRhdGFncmlkLXNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7dG9wOi42''@;'; put 'put ''cmVtO2hlaWdodDpjYWxjKDEwMCUgLSAuNnJlbSk7YmFja2dyb3VuZC1jb2xvcjojZmZmOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1sb2FkaW5nLWJhY2tncm91bmQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpKTt6LWluZGV4OjU5MH0uZGF0YWdyaWQtc2VsZWN0IC5j''@;'; put 'put ''bHItY29udHJvbC1sYWJlbHttaW4taGVpZ2h0Oi42cmVtO21hcmdpbi10b3A6LS4yNHJlbTtwYWRkaW5nLWxlZnQ6LjdyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWhlYWRlcnttaW4taGVpZ2h0OjEuMnJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY29sdW1uIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW4tc2VwYXJhdG9yOmFmdGVye2hlaWdodDpjYWxjKDEwMCUgKyAuMjVyZW0pO3RvcDpjYWxjKC0uMjUqLjZyZW0gKyAuMDVyZW0pfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jZWxsIGNsci1pY29ue21hcmdpbi10b3A6LS4ycmVtO21hcmdpbi1ib3R0b206LS4xNXJl''@;'; put 'put ''bTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtLjA1cmVtKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY2VsbCBjZHMtaWNvbnttYXJnaW4tdG9wOi0uMnJlbTttYXJnaW4tYm90dG9tOi0uMTVyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNlbGwgLmJhZGdle21hcmdpbi10b3A6''@;'; put 'put ''LS4xNXJlbTttYXJnaW4tYm90dG9tOi0uMDVyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7dGV4dC1hbGlnbjpjZW50ZXJ9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDouMTVyZW19''@;'; put 'put ''LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21h''@;'; put 'put ''cmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2hlaWdodDoxLjJyZW07d2lkdGg6MS4ycmVtO291dGxpbmUtb2Zmc2V0Oi0uMnJlbX1idXR0b24uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJs''@;'; put 'put ''ZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbnttYXJnaW46MH0uZGF0YWdyaWQtY29tcGFjdCAuZGF0''@;'; put 'put ''YWdyaWQtZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jZWxse3BhZGRpbmc6MH0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jb2x1bW57cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS5kYXRhZ3JpZC1jb21wYWN0''@;'; put 'put ''IC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBvc3QtdHJpZ2dlciBjZHMtaWNvbjpub3QoW3NoYXBlPWluZm8tY2lyY2xlXSxbc2hhcGU9ZXhjbGFtYXRpb24tdHJpYW5nbGVdLFtzaGFwZT1leGNsYW1hdGlvbi1jaXJjbGVdLFtzaGFwZT1jaGVjay1jaXJjbGVd''@;'; put 'put ''LFtzaGFwZT1pbmZvXSxbc2hhcGU9ZXJyb3JdKSwuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXIgY2xyLWljb246bm90KFtzaGFwZT1pbmZvLWNpcmNsZV0sW3NoYXBlPWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXSxb''@;'; put 'put ''c2hhcGU9ZXhjbGFtYXRpb24tY2lyY2xlXSxbc2hhcGU9Y2hlY2stY2lyY2xlXSxbc2hhcGU9aW5mb10sW3NoYXBlPWVycm9yXSl7aGVpZ2h0OjEuMDVyZW07d2lkdGg6MS4wNXJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVye3BhZGRpbmc6MCAuNnJlbTtsaW5lLWhlaWdo''@;'; put 'put ''dDoxLjE1cmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb257bGluZS1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9ue21hcmdpbjow''@;'; put 'put ''O291dGxpbmUtb2Zmc2V0Oi0uMnJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyIC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5kYXRhZ3JpZC1mb290ZXItc2VsZWN0LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7''@;'; put 'put ''dG9wOjB9LmRhdGFncmlkLWZvb3Rlci1kZXNjcmlwdGlvbntmbGV4OjEgMSBhdXRvO2ZsZXgtd3JhcDpub3dyYXA7d2hpdGUtc3BhY2U6bm93cmFwO2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpyaWdodDttYXJnaW46YXV0byAwfS5wYWdpbmF0aW9uLWxpc3R7bGlzdC1zdHlsZTpub25lO2Rp''@;'; put 'put ''c3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IG5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50e2JhY2tncm91bmQ6MCAwO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1mb3Jtcy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWlucHV0LWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3Jk''@;'; put 'put ''ZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDoxLjJyZW07Zm9udC1z''@;'; put 'put ''aXplOi41NXJlbTttaW4td2lkdGg6MS4ycmVtO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50OmZvY3VzLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tY3VycmVudC5jbHItZm9jdXN7YmFj''@;'; put 'put ''a2dyb3VuZDowIDA7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzQ5YWVkYTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWZvY3VzLWNvbG9yLCAjNDlhZWRhKTtib3gtc2hhZG93OjAgMCAuMDVyZW0gIzQ5YWVkYTtib3gt''@;'; put 'put ''c2hhZG93OjAgMCB2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pIHZhcigtLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWlucHV0LWJvcmRlci1mb2N1cy1jb2xvciwgIzQ5YWVkYSl9LnBhZ2luYXRpb24tbGlzdD4qe3BhZGRpbmc6MCAuMTJyZW19LnBhZ2luYXRpb24tbGlz''@;'; put 'put ''dCAucGFnaW5hdGlvbi1maXJzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3QsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91cywucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3Jv''@;'; put 'put ''dW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1maXJzdDpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3Q6ZGlzYWJsZWQsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2''@;'; put 'put ''aW91czpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHQ6ZGlzYWJsZWR7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1idG4tZGlzYWJsZWQtY29sb3IsICM4YzhjOGMpO29wYWNpdHk6LjU2O29wYWNpdHk6dmFyKC0tY2xy''@;'; put 'put ''LWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWRpc2FibGVkLW9wYWNpdHksIC41Nil9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1maXJzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLXByZXZpb3Vze21hcmdpbi1yaWdodDouNnJlbX0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0''@;'; put 'put ''aW9uLWxhc3QsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1uZXh0e21hcmdpbi1sZWZ0Oi42cmVtfS5wYWdpbmF0aW9uLWxpc3QgYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpu''@;'; put 'put ''b25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6cG9pbnRlcn1idXR0''@;'; put 'put ''b24ucGFnaW5hdGlvbi1saXN0IGJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJve2JvcmRlcjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3dpZHRoOjA7ZmxleDowIDAgYXV0byFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50O2Rpc3Bs''@;'; put 'put ''YXk6YmxvY2shaW1wb3J0YW50fS5kYXRhZ3JpZC1vdXRlci13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1ncm93OjE7b3ZlcmZsb3c6YXV0b30uZGF0YWdyaWQtaW5uZXItd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgt''@;'; put 'put ''Z3JvdzoxO292ZXJmbG93OmF1dG87bWluLXdpZHRoOjEycmVtfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItcmlnaHQ6bm9uZX0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLmRhdGFncmlkLWlubmVyLXdyYXBwZXJ7d2lkdGg6''@;'; put 'put ''MzQlfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFpbmVyLC5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtcm93e2JvcmRlci1yaWdodDouMDVyZW0gc29saWQgI2NjY30uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLmRhdGFncmlkLWZvb3Rlcnti''@;'; put 'put ''b3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAucGFnaW5hdGlvbnt3aWR0aDoxMDAlfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAucGFnaW5hdGlvbi1kZXNjcmlwdGlvbi1jb21wYWN0e3RleHQtYWxpZ246bGVmdDtmbGV4OjF9LmRhdGFncmlkLWRldGFp''@;'; put 'put ''bC1vcGVuIC5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tbGlzdHttYXJnaW4tcmlnaHQ6MH0uZGF0YWdyaWQtcm93LWRldGFpbC1vcGVue3Bvc2l0aW9uOnJlbGF0aXZlfS5kYXRhZ3JpZC1yb3ctZGV0YWlsLW9wZW46YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7''@;'; put 'put ''cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOi41cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7dG9wOi41cmVt''@;'; put 'put ''O3JpZ2h0OjB9LmRhdGFncmlkLXJvdy1kZXRhaWwtb3BlbjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjouNDVyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0LWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7dG9wOi41NXJlbTtyaWdodDotLjA1cmVtfS5kYXRhZ3JpZC1kZXRhaWwtcGFuZXttYXJnaW4tdG9wOi42cmVtO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVy''@;'; put 'put ''d2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtZGVmYXVsdC1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjE1cmVtO2Jv''@;'; put 'put ''cmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtiYWNr''@;'; put 'put ''Z3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO2ZsZXgtZ3JvdzoyO3dpZHRoOjY2JX0uZGF0YWdyaWQtZGV0YWlsLXBhbmUtY29udGVudHtkaXNwbGF5OmZsZXg7Zmxl''@;'; put 'put ''eC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmF1dG87aGVpZ2h0OjEwMCV9LmRhdGFncmlkLWRldGFpbC1ib2R5e2ZsZXg6MSAxIGF1dG87cGFkZGluZzowIDEuMnJlbX0uZGF0YWdyaWQtZGV0YWlsLWhlYWRlcntmbGV4OjAgMCBhdXRvO2ZvbnQtc2l6ZTouOXJlbTtsaW5lLWhlaWdodDox''@;'; put 'put ''LjY4cmVtO3BhZGRpbmctbGVmdDoxLjJyZW07bWFyZ2luLXRvcDowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1oZWFkZXItdGl0bGV7ZmxleDoxIDEgYXV0bztwYWRkaW5nLXRvcDouOHJlbX0uZGF0YWdy''@;'; put 'put ''aWQtZGV0YWlsLWhlYWRlciAuZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2V7ZmxleDoxIDEgMS44cmVtO3BhZGRpbmc6MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVyIC5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZSAuYnRu''@;'; put 'put ''LmJ0bi1saW5re21hcmdpbi10b3A6LjhyZW07bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctcmlnaHQ6MH0uZGF0YWdyaWQtZGV0YWlsLWhlYWRlciAuZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UgLmJ0bi5idG4tbGluayBjZHMtaWNvbntjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1t''@;'; put 'put ''b2RhbC1jbG9zZS1jb2xvciwgIzhjOGM4Yyl9LmRhdGFncmlkLWRldGFpbC1jYXJldHtwYWRkaW5nOjA7dGV4dC1hbGlnbjpjZW50ZXJ9LmRhdGFncmlkLWRldGFpbC1jYXJldC5kYXRhZ3JpZC1jZWxse3BhZGRpbmc6LjNyZW0gLjQ1cmVtfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFn''@;'; put 'put ''cmlkLWRldGFpbC1jYXJldC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5v''@;'; put 'put ''bmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzouMXJlbSAuMnJlbSAuMTVyZW19YnV0dG9uLmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRhZ3Jp''@;'; put 'put ''ZC1kZXRhaWwtY2FyZXQtYnV0dG9uLmlzLW9wZW57YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29uLW9wZW4tYmctY29sb3IsICMwMDcyYTMpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRp''@;'; put 'put ''dXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSl9LmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWJ1dHRvbi5pcy1vcGVuIC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1kYXRhZ3Jp''@;'; put 'put ''ZC1kZXRhaWwtY2FyZXQtaWNvbi1vcGVuLWljb24tY29sb3IsIHdoaXRlKX0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtaWNvbntjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1pY29uLWNvbG9yLCAjOGM4YzhjKTttYXJnaW4tdG9w''@;'; put 'put ''Oi4xcmVtfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDouM3JlbX0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0LmRhdGFncmlkLWNvbHVtbntwYWRkaW5nOi41NXJlbSAuNnJlbX0uZGF0YWdyaWQtZGV0YWlsLW92ZXJsYXkuZGF0YWdyaWQtZGV0YWlsLW9wZW4+LmRh''@;'; put 'put ''dGFncmlkLW91dGVyLXdyYXBwZXI+LmRhdGFncmlkLWlubmVyLXdyYXBwZXJ7ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1kZXRhaWwtb3ZlcmxheSAuZGF0YWdyaWQtZGV0YWlsLXBhbmV7Ym9yZGVyLWxlZnQ6LjA1cmVtIHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czouMTVyZW19QG1lZGlhIHNj''@;'; put 'put ''cmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVye2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtZGV0YWlsLXBhbmV7Ym9yZGVyLWxlZnQ6LjA1cmVtIHNvbGlkICNjY2M7Ym9y''@;'; put 'put ''ZGVyLXJhZGl1czouMTVyZW19fS5jb2x1bW4tc3dpdGNoe2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7cGFkZGluZzouOXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdy1jb2xvciwgcmdiYSgxNDAs''@;'; put 'put ''IDE0MCwgMTQwLCAuMjUpKTt3aWR0aDoxMi41cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDoxMDUwfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtmb250LXdlaWdodDo0''@;'; put 'put ''MDA7Zm9udC1zaXplOi44cmVtO3BhZGRpbmctYm90dG9tOi42cmVtO2xpbmUtaGVpZ2h0OjEuMnJlbX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoMSwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoMiwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoMywuY29sdW1u''@;'; put 'put ''LXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoNCwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoNSwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoNntjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1wMS1jb2xvciwgIzY2NjY2Nik7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZTou''@;'; put 'put ''OHJlbTtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luOjB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9ue21pbi13aWR0aDouOXJlbTttYXJnaW46MDtwYWRkaW5nOjA7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXIt''@;'; put 'put ''Zm9udC1jb2xvciwgI2IzYjNiMyl9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9uOmhvdmVye2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtaG92ZXItY29sb3IsICMwMDcyYTMpfS5jb2x1bW4tc3dpdGNo''@;'; put 'put ''IC5zd2l0Y2gtY29udGVudHttYXgtaGVpZ2h0OjE1cmVtO292ZXJmbG93LXk6YXV0bzttaW4taGVpZ2h0OjEuMjVyZW19LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1jb250ZW50IGxpe2xpbmUtaGVpZ2h0OjEuMnJlbTtwYWRkaW5nLWxlZnQ6LjFyZW19LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1m''@;'; put 'put ''b290ZXIgLmJ0bnttYXJnaW46MDtwYWRkaW5nOjB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1mb290ZXIgLmFjdGlvbi1yaWdodHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kYXRhZ3JpZC1maWx0ZXJ7bWFyZ2luLXRvcDouMjRyZW07YmFja2dyb3VuZDojZmZmO2Jh''@;'; put 'put ''Y2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3Jk''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtwYWRkaW5nOi45cmVtO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMt''@;'; put 'put ''Ym94LXNoYWRvdy1jb2xvciwgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2ZvbnQtd2VpZ2h0OjQwMH0uZGF0YWdyaWQtZmlsdGVyIC5kYXRhZ3JpZC1maWx0''@;'; put 'put ''ZXItY2xvc2Utd3JhcHBlcnt0ZXh0LWFsaWduOnJpZ2h0fS5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1jbG9zZS13cmFwcGVyIC5jbG9zZXtmbG9hdDpub25lfS5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1hcHBseXttYXJnaW4tYm90dG9tOjB9LmRhdGFncmlk''@;'; put 'put ''LWFjdGlvbi1vdmVyZmxvd3twb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO3BhZGRpbmc6LjNyZW07bWFyZ2luLWxlZnQ6LjNyZW07Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXIt''@;'; put 'put ''d2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzowIC4wNXJlbSAu''@;'; put 'put ''MTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2Jh''@;'; put 'put ''bC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTAwJTt3aWR0aDowO2hlaWdodDowO21hcmdpbi10''@;'; put 'put ''b3A6LS4zcmVtO2JvcmRlcjouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDowIG5vbmU7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjY2M7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmRhdGFncmlkLWFj''@;'; put 'put ''dGlvbi1vdmVyZmxvdzphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTAwJTt3aWR0aDowO2hlaWdodDowO21hcmdpbi10b3A6LS4yNXJlbTtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICNmZmY7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgdHJhbnNw''@;'; put 'put ''YXJlbnQ7Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgdHJhbnNwYXJlbnR9LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW17Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVtO2xldHRlci1z''@;'; put 'put ''cGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMTVyZW07bWFyZ2luOjA7cGFkZGluZzouMDVyZW0gMS4ycmVtIDA7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjEwMCV9LmRhdGFncmlkLWFjdGlvbi1v''@;'; put 'put ''dmVyZmxvdyAuYWN0aW9uLWl0ZW06aG92ZXIsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWFjdGlvbi1wb3Bv''@;'; put 'put ''dmVyLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1ob3ZlciwgI2U4ZThlOCk7Y29sb3I6IzAwMDtj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWZvbnQtY29sb3IsIGJsYWNrKX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpmb2N1c3tvdXRsaW5lOjB9LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQsLmRhdGFncmlk''@;'; put 'put ''LWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6aG92ZXIs''@;'; put 'put ''LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtLmRp''@;'; put 'put ''c2FibGVkOmZvY3VzLC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVkOmFjdGl2ZSwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpmb2N1c3tiYWNrZ3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmV9LmRhdGFncmlkLWFj''@;'; put 'put ''dGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0gY2RzLWljb24sLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0gY2xyLWljb257dmVydGljYWwtYWxpZ246bWlkZGxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xcHgsMCl9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2Fs''@;'; put 'put ''Y3VsYXRlLW1vZGV7ZGlzcGxheTpibG9ja30uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQsLmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWZvb3RlciwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUt''@;'; put 'put ''bW9kZSAuZGF0YWdyaWQtcm93LW1hc3RlciwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtcm93LWNsaWNrYWJsZXtkaXNwbGF5Om5vbmV9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRh''@;'; put 'put ''Ymxle2Rpc3BsYXk6dGFibGU7dGFibGUtbGF5b3V0OmF1dG99LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi1oZWFkZXJ7ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9LmRhdGFn''@;'; put 'put ''cmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbntkaXNwbGF5OnRhYmxlLWNlbGw7bWluLXdpZHRoOjQuOHJlbX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3Jp''@;'; put 'put ''ZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlciAuZGF0YWdyaWQtY29sdW1ue2JvcmRlci1jb2xvcjojZThlOGU4O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdGFibGVyb3ctYm9yZGVyY29sb3IsICNlOGU4ZTgp''@;'; put 'put ''O2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7cGFkZGluZzouNTVyZW0gLjZyZW07dmVydGljYWwtYWxpZ246dG9wO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA2LWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWJvbGQsIDYwMCk7Zm9udC1zaXplOi41NXJlbTtsZXR0ZXItc3BhY2luZzouMDNlbTtsaW5lLWhlaWdodDouNnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9LmRh''@;'; put 'put ''dGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5kYXRhZ3JpZC1yb3d7ZGlzcGxheTp0YWJsZS1yb3d9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5k''@;'; put 'put ''YXRhZ3JpZC1yb3cgLmRhdGFncmlkLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsO21pbi13aWR0aDo0LjhyZW07Zm9udC1zaXplOi42NXJlbTtsaW5lLWhlaWdodDouN3JlbTtwYWRkaW5nOi41NXJlbSAuNnJlbTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2Fs''@;'; put 'put ''Y3VsYXRlLW1vZGUgLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IsLmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lciwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtZml4ZWQt''@;'; put 'put ''Y29sdW1ue2Rpc3BsYXk6bm9uZX0uZmFkZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLWluLW91dDt3aWxsLWNoYW5nZTpvcGFjaXR5fS5mYWRlLmlue29wYWNpdHk6MX0uZmFkZURvd257b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0yNSUpO3RyYW5zaXRp''@;'; put 'put ''b246b3BhY2l0eSAuMnMgZWFzZS1pbi1vdXQsdHJhbnNmb3JtIC4ycyBlYXNlLWluLW91dDt3aWxsLWNoYW5nZTpvcGFjaXR5LHRyYW5zZm9ybX0uZmFkZURvd24uaW57b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9Lm9mZnNjcmVlbi1mb2N1cy1yZWJvdW5kZXJ7cG9zaXRpb246''@;'; put 'put ''Zml4ZWQhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtoZWlnaHQ6MXB4IWltcG9ydGFudDt3aWR0aDoxcHghaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOi1jb252ZXJ0QmFzZWxpbmVUb0Jhc2UyMCgxKSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt2aXNp''@;'; put 'put ''YmlsaXR5OmhpZGRlbiFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDttYXJnaW46MCAwIC1jb252ZXJ0QmFzZWxpbmVUb0Jhc2UyMCgxKSAwIWltcG9ydGFudDt2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50fTpyb290ey0tY2xyLW5hdi1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1uYXYtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci1uYXYtaG92ZXItYmctY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1ob3Zlci1jb2xvcik7LS1jbHItbmF2LWxpbmstY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1uYXYtbGluay1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItbmF2LWxpbmstZm9u''@;'; put 'put ''dC13ZWlnaHQ6dmFyKC0tY2xyLXAxLWZvbnQtd2VpZ2h0KTstLWNsci1uYXYtbGluay1hY3RpdmUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLW5hdi1saW5rLWZvbnQtd2VpZ2h0KX1AbWVkaWEgc2NyZWVue3NlY3Rpb25bYXJpYS1oaWRkZW49dHJ1ZV17ZGlzcGxheTpub25lfX1bZGF0YS1oaWRk''@;'; put 'put ''ZW49dHJ1ZV17ZGlzcGxheTpub25lfWJ1dHRvbi5uYXYtbGlua3tib3JkZXItcmFkaXVzOjA7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTttaW4td2lkdGg6MH0udGFicy1vdmVyZmxvd3twb3NpdGlvbjpyZWxhdGl2ZX0udGFicy1vdmVyZmxvdyAubmF2LWl0ZW17bWFyZ2luLXJpZ2h0OjB9''@;'; put 'put ''LnRhYi1jb250ZW50e2Rpc3BsYXk6aW5saW5lfV86LW1zLWZ1bGxzY3JlZW4gLnRhYi1jb250ZW50LDpyb290IC50YWItY29udGVudHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS50YWJzLXZlcnRpY2Fse2Rpc3BsYXk6ZmxleH0udGFicy12ZXJ0aWNhbD4ubmF2e2hlaWdodDph''@;'; put 'put ''dXRvO2JveC1zaGFkb3c6bm9uZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaDttYXJnaW4tcmlnaHQ6MS4ycmVtO292ZXJmbG93OmF1dG87ZmxleC1zaHJpbms6MDtwYWRkaW5nOi4ycmVtO3dpZHRoOjEycmVtO21pbi13aWR0aDoyLjRyZW19LnRhYnMtdmVydGlj''@;'; put 'put ''YWw+Lm5hdiAubmF2LWxpbmt7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MCAuNnJlbTtib3JkZXI6MDttYXJnaW4tYm90dG9tOi4wNXJlbTtmbGV4LXNocmluazowO21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDowO3dpZHRoOjEwMCV9LnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbmsubmF2''@;'; put 'put ''LWl0ZW17bWFyZ2luLXJpZ2h0OjB9LnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbmsuYWN0aXZlLC50YWJzLXZlcnRpY2FsPi5uYXYgLm5hdi1saW5rOmhvdmVye2JveC1zaGFkb3c6aW5zZXQgLjE1cmVtIDAgIzAwNzJhMztib3gtc2hhZG93Omluc2V0IC4xNXJlbSAwIDAgdmFyKC0tY2xy''@;'; put 'put ''LW5hdi1hY3RpdmUtYm94LXNoYWRvdy1jb2xvcil9LnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbmsuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1uYXYtYWN0aXZlLWJnLWNvbG9yLCAjZDhlM2U5KX0udGFicy12ZXJ0aWNhbD4u''@;'; put 'put ''bmF2IC5uYXYtbGluazpub3QoLmFjdGl2ZSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLW5hdi1ob3Zlci1iZy1jb2xvciwgI2U4ZThlOCl9OnJvb3R7LS1jbHItd2l6YXJkLW1haW4tYmdjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC0wKTstLWNsci13aXphcmQtc2lkZW5hdi1iZ2NvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci13aXphcmQtbWFpbi10ZXh0Q29sb3I6dmFyKC0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMCk7LS1jbHItd2l6YXJkLXNpZGVuYXYtdGV4dDp2YXIoLS1jbHItY29sb3It''@;'; put 'put ''bmV1dHJhbC05MDApOy0tY2xyLXdpemFyZC1zaWRlbmF2LXRleHQtLWFjdGl2ZTp2YXIoLS1jbHItZ2xvYmFsLW9uLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItd2l6YXJkLXRpdGxlLXRleHQ6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVy''@;'; put 'put ''LXNpemU6LjJyZW07LS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVyLWNvbG9yLS1hY3RpdmU6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNDAwKTstLWNsci13aXphcmQtc3RlcG5h''@;'; put 'put ''di1hY3RpdmUtYmdjb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci13aXphcmQtaGVhZGVyLWFjdGlvbi1jb2xvci0taG92ZXJlZDp2YXIoLS1jbHIt''@;'; put 'put ''Y29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci13aXphcmQtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtYWN0aXZlLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzKTstLWNsci13aXphcmQt''@;'; put 'put ''c3RlcC1uYXYtYm9yZGVyLWNvbG9yOmhzbCgwLCAwJSwgODklKTstLWNsci13aXphcmQtYm94LXNoYWRvdy1jb2xvcjpyZ2JhKDAsIDAsIDAsIC4yKX0uY2xyLXdpemFyZCAubW9kYWwtZGlhbG9ne2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVy''@;'; put 'put ''O2JveC1zaGFkb3c6MCAuMDVyZW0gLjFyZW0gLjFyZW0gIzAwMDM7Ym94LXNoYWRvdzowIC4wNXJlbSAuMXJlbSAuMXJlbSB2YXIoLS1jbHItd2l6YXJkLWJveC1zaGFkb3ctY29sb3IpO2hlaWdodDo1MCU7bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50e2JvcmRl''@;'; put 'put ''ci1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1''@;'; put 'put ''czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym94LXNoYWRvdzpub25lO3BhZGRpbmc6MDtmbGV4OjIgMiBhdXRvO3dpZHRoOjY2JTtoZWlnaHQ6aW5pdGlhbDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7ZmxleC1k''@;'; put 'put ''aXJlY3Rpb246Y29sdW1ufS5jbHItd2l6YXJkIC5tb2RhbC1oZWFkZXIsLmNsci13aXphcmQgLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZXtmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCU7cGFkZGluZzoxLjJyZW0gLjk1cmVtIC4zcmVtIDEuMnJlbX0uY2xyLXdpemFyZCAubW9kYWwtdGl0bGV7''@;'; put 'put ''Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXRpdGxlLXRleHQsIGJsYWNrKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O3dpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MS4zNTZyZW07bWFyZ2luLXRvcDotLjE1NnJlbX0uY2xyLXdpemFyZCAubW9kYWwtYm9keXtmbGV4''@;'; put 'put ''OjEgMSBhdXRvO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1tYWluLXRleHRDb2xvciwgYmxhY2spO3dpZHRoOjEwMCV9LmNsci13aXphcmQgLm1vZGFsLWZvb3RlcntwYWRkaW5nOjA7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDoxLjJyZW07aGVpZ2h0OjQuMnJlbTttaW4t''@;'; put 'put ''aGVpZ2h0OjQuMnJlbTttYXgtaGVpZ2h0OjQuMnJlbTt3aWR0aDoxMDAlO2ZsZXg6MCAwIDQuMnJlbX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1idG57bWFyZ2luOjA7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTpibG9ja30uY2xyLXdpemFyZCAubW9kYWwtdGl0bGUtdGV4dHtkaXNwbGF5Omlu''@;'; put 'put ''bGluZS1ibG9jaztmbGV4OjAgMSBhdXRvO3dpZHRoOjEwMCU7b3V0bGluZTowfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZS13cmFwcGVye3dpZHRoOjEwMCV9LmNsci13aXphcmQgLm1vZGFsLWhlYWRlci1hY3Rpb25zLXdyYXBwZXJ7ZmxleDoxIDAgYXV0bztwYWRkaW5nLWxlZnQ6LjZyZW07''@;'; put 'put ''cGFkZGluZy1yaWdodDouMnJlbX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9ue2hlaWdodDoxLjJyZW07d2lkdGg6MS4ycmVtO3BhZGRpbmc6MDttYXJnaW46MDttaW4td2lkdGg6MS4ycmVtO2xpbmUtaGVpZ2h0OjEuMnJlbTtmb250LXNpemU6MS4zcmVtO2NvbG9yOiM4''@;'; put 'put ''YzhjOGM7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLWNvbG9yLCAjOGM4YzhjKTt0cmFuc2l0aW9uOmNvbG9yIGxpbmVhciAuMnN9LmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbiBhe2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1o''@;'; put 'put ''ZWFkZXItYWN0aW9uLWNvbG9yLCAjOGM4YzhjKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uOmhvdmVyLC5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb246YWN0aXZlLC5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb246Zm9jdXN7Y29s''@;'; put 'put ''b3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3ItLWhvdmVyZWQsIGJsYWNrKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uIGNkcy1pY29uLC5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24gY2xyLWljb257aGVp''@;'; put 'put ''Z2h0OjEuMXJlbTt3aWR0aDoxLjFyZW19LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye2ZsZXg6MSAxIGF1dG87d2lkdGg6MzQlO21heC13aWR0aDozNCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvcmRlcjotMTtvdmVyZmxvdzpoaWRkZW47b3Zl''@;'; put 'put ''cmZsb3cteTphdXRvO3BhZGRpbmctYm90dG9tOjEuMnJlbTtsaW5lLWhlaWdodDoxLjJyZW07Ym9yZGVyLXJpZ2h0LXdpZHRoOi4wNXJlbTtib3JkZXItcmlnaHQtd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9y''@;'; put 'put ''ZGVyLXJpZ2h0LWNvbG9yOiNlM2UzZTM7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcC1uYXYtYm9yZGVyLWNvbG9yLCAjZTNlM2UzKTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXNp''@;'; put 'put ''ZGVuYXYtYmdjb2xvciwgI2ZhZmFmYSk7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVt''@;'; put 'put ''O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXZ7cGFkZGluZy1sZWZ0OjEuMnJlbTtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTouN3JlbTtjb2xvcjojMzMzO2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci13aXphcmQtc2lkZW5hdi10ZXh0LCAjMzMzMzMzKTt3aWR0aDoxMDAlO2ZsZXg6MSAxIGF1dG99LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1saXN0e2Rpc3BsYXk6YmxvY2s7Ym94LXNoYWRvdzpub25lO2NvdW50ZXItcmVzZXQ6YTt3aGl0ZS1zcGFjZTpub3dy''@;'; put 'put ''YXA7aGVpZ2h0OmF1dG87bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luOjA7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW17ZGlzcGxheTpibG9jaztib3gtc2hhZG93Oi4ycmVtIDAgI2U4ZThlOCBpbnNldDtib3gtc2hhZG93OnZhcigtLWNsci13aXph''@;'; put 'put ''cmQtc3RlcG5hdi1ib3JkZXItc2l6ZSkgMCAwIHZhcigtLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3IpIGluc2V0O21hcmdpbjowIDAgLS4wNXJlbTtwYWRkaW5nOi4zcmVtIDAgLjNyZW0gLjRyZW07Y29sb3I6IzMzMztjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXNpZGVuYXYtdGV4''@;'; put 'put ''dCwgIzMzMzMzMyk7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1yZWd1bGFyLCA0MDApfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5hY3RpdmV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXNpZGVuYXYtdGV4''@;'; put 'put ''dC0tYWN0aXZlLCBibGFjayk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1zZW1pYm9sZCwgNTAwKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uYWN0aXZlIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGlua3tiYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yOiNkOGUzZTk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtYWN0aXZlLWJnY29sb3IsICNkOGUzZTkpO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci13aXphcmQt''@;'; put 'put ''Ym9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci13aXphcmQtYm9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uY29tcGxl''@;'; put 'put ''dGV7Ym94LXNoYWRvdzouMnJlbSAwICM1ZWI3MTUgaW5zZXQ7Ym94LXNoYWRvdzp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVyLXNpemUpIDAgMCB2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVyLWNvbG9yLS1hY3RpdmUpIGluc2V0O3RyYW5zaXRpb246Ym94LXNoYWRvdyAu''@;'; put 'put ''MnMgZWFzZS1pbn0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uZXJyb3J7Ym94LXNoYWRvdzouMnJlbSAwICNjMjFkMDAgaW5zZXQ7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4ycyBlYXNlLWlufS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5uby1jbGlj''@;'; put 'put ''ayBidXR0b257cG9pbnRlci1ldmVudHM6bm9uZX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmt7d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7Y29sb3I6aW5oZXJpdDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzowIC4xNXJlbSAwIC41cmVtO2ZvbnQtc2l6ZTouN3JlbTtm''@;'; put 'put ''b250LXdlaWdodDppbmhlcml0O2xldHRlci1zcGFjaW5nOm5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC10cmFuc2Zvcm06bm9uZTttYXJnaW46MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmsgLmNsci13aXphcmQtc3RlcG5hdi1saW5rLXN1ZmZpeHtkaXNwbGF5OmZs''@;'; put 'put ''ZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttaW4td2lkdGg6MS4ycmVtO3BhZGRpbmctcmlnaHQ6LjM1cmVtfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGluayAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstc3VmZml4IC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS1lcnJvci1p''@;'; put 'put ''Y29ue3RyYW5zZm9ybTpub25lO2ZpbGw6I2MyMWQwMH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC10aXRsZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtdGl0bGUtdGV4dCwgYmxhY2spO21hcmdpbi10b3A6MDtwYWRkaW5nOjEuMnJlbSAuNnJlbSAxLjJyZW0gMS4ycmVtO2Zs''@;'; put 'put ''ZXg6MCAwIGF1dG87Zm9udC1zaXplOjEuMXJlbTtsaW5lLWhlaWdodDoxLjJyZW19LmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnQtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXg6MSAxIDEwMCU7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEw''@;'; put 'put ''MCV9LmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnQtd3JhcHBlciAubW9kYWwtbmF2e2hlaWdodDphdXRvfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWZvb3Rlci1idXR0b25ze3RleHQtYWxpZ246cmlnaHQ7cGFkZGluZy1yaWdodDoxLjJyZW07bWFyZ2luOjB9LmNsci13aXphcmQgLmNsci13''@;'; put 'put ''aXphcmQtZm9vdGVyLWJ1dHRvbnMtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDpub3dyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWJ0bi13cmFwcGVye2ZsZXg6MCAxIGF1dG87bWluLXdpZHRoOjQu''@;'; put 'put ''MnJlbTtwYWRkaW5nLWxlZnQ6LjZyZW19LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLXdyYXBwZXJbYXJpYS1oaWRkZW49dHJ1ZV17ZGlzcGxheTpub25lfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWJ0bi5idG4tbGlua3twYWRkaW5nOjB9LmNsci13aXphcmQgLmNsci13aXphcmQtY29u''@;'; put 'put ''dGVudHtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXBhZ2U6bm90KFthcmlhLWhpZGRlbj10cnVlXSl7cGFkZGluZzouOXJlbSAxLjJyZW0gMS4ycmVtO2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQgLm1vZGFsLWRpYWxvZ3toZWlnaHQ6NzV2aH0uY2xyLXdpemFyZCAu''@;'; put 'put ''bW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7d2lkdGg6MTAwJX0uY2xyLXdpemFyZC53aXphcmQtbWQgLm1vZGFsLWRpYWxvZ3ttaW4taGVpZ2h0OjIxcmVtO21heC1oZWlnaHQ6MjUuMnJlbX0uY2xyLXdpemFyZC53aXphcmQtbWQg''@;'; put 'put ''Lm1vZGFsLWNvbnRlbnQsLmNsci13aXphcmQud2l6YXJkLW1kIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttYXgtaGVpZ2h0OjI1LjJyZW19LmNsci13aXphcmQud2l6YXJkLW1kIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttaW4td2lkdGg6MTAuOHJlbTttYXgtd2lkdGg6MTJy''@;'; put 'put ''ZW19LmNsci13aXphcmQud2l6YXJkLWxnIC5tb2RhbC1kaWFsb2d7bWluLWhlaWdodDoyMXJlbTttYXgtaGVpZ2h0OjM2cmVtfS5jbHItd2l6YXJkLndpemFyZC1sZyAubW9kYWwtY29udGVudCwuY2xyLXdpemFyZC53aXphcmQtbGcgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye21heC1o''@;'; put 'put ''ZWlnaHQ6MzZyZW19LmNsci13aXphcmQud2l6YXJkLWxnIC5uYXYtcGFuZWwsLmNsci13aXphcmQud2l6YXJkLWxnIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttaW4td2lkdGg6MTJyZW07bWF4LXdpZHRoOjE0LjRyZW19LmNsci13aXphcmQud2l6YXJkLXhsIC5tb2RhbC1kaWFsb2d7''@;'; put 'put ''aGVpZ2h0Ojc1dmg7bWF4LWhlaWdodDpub25lfS5jbHItd2l6YXJkLndpemFyZC14bCAubmF2LXBhbmVsLC5jbHItd2l6YXJkLndpemFyZC14bCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWluLXdpZHRoOjEycmVtO21heC13aWR0aDoxNS42cmVtfS5jbHItd2l6YXJkIC5zcGlubmVy''@;'; put 'put ''Om5vdCguc3Bpbm5lci1pbmxpbmUpOm5vdCguY2xyLXRyZWVub2RlLXNwaW5uZXIpe2xlZnQ6Y2FsYyg1MCUgKyA1Ljc1cmVtKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NDAlfS5jbHItd2l6YXJkLXBhZ2U+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uY2xyLXdpemFyZC1wYWdlPjpmaXJz''@;'; put 'put ''dC1jaGlsZD46Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5jbHItd2l6YXJkLXBhZ2U+Zm9ybTpmaXJzdC1jaGlsZHtwYWRkaW5nLXRvcDowfS5jbHItd2l6YXJkLXBhZ2U+Zm9ybTpmaXJzdC1jaGlsZD4uZm9ybS1ibG9jazpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LmNsci13aXphcmQt''@;'; put 'put ''LWlubGluZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmNsci13aXphcmQtLWlubGluZT5jbHItbW9kYWw+Lm1vZGFsOmZvY3Vze291dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLWNvbG9yOnRyYW5zcGFyZW50fS5jbHItd2l6YXJkLS1pbmxpbmUgY2xyLW1vZGFse2hlaWdodDoxMDAlO3dp''@;'; put 'put ''ZHRoOjEwMCU7ZGlzcGxheTpibG9ja30uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbHtwYWRkaW5nOjA7cG9zaXRpb246c3RhdGljO2hlaWdodDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAuY29udGVudC1jb250YWluZXJ7aGVpZ2h0OjEwMCV9LmNs''@;'; put 'put ''ci13aXphcmQtLWlubGluZSAubW9kYWwgLmNvbnRlbnQtY29udGFpbmVyIC5uYXYtcGFuZWx7aGVpZ2h0Ojk5JTt3aWR0aDo5OSV9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwgLm1vZGFsLWNvbnRlbnR7Ym94LXNoYWRvdzpub25lfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5tb2Rh''@;'; put 'put ''bC1kaWFsb2d7bWluLWhlaWdodDoxMDAlO2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7ei1pbmRleDphdXRvfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWJvZHktd3JhcHBlcntoZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1oZWFkZXIgLmNsb3NlLC5jbHItd2l6YXJk''@;'; put 'put ''LS1pbmxpbmUgLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2V7ZGlzcGxheTpub25lfS5jbHItd2l6YXJkLS1pbmxpbmUgLm5hdi5uYXZMaXN0e3BhZGRpbmctdG9wOjB9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtZGlhbG9nIC5tb2RhbC1jb250ZW50IC5tb2RhbC1ib2R5IC5j''@;'; put 'put ''b250ZW50LWFyZWF7b3ZlcmZsb3cteTphdXRvfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWJhY2tkcm9we2hlaWdodDowO3dpZHRoOjA7ZGlzcGxheTpub25lfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWNvbnRlbnQtd3JhcHBlcnthbGlnbi1pdGVtczpzdHJldGNoO2hlaWdodDox''@;'; put 'put ''MDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVyLC5jbHItd2l6YXJkLS1pbmxpbmUuY2xyLXdpemFyZCAubW9kYWwtY29udGVudHttaW4taGVpZ2h0OjEwMCU7aGVpZ2h0OmF1dG87bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLmNs''@;'; put 'put ''ci13aXphcmQtc3RlcG5hdi13cmFwcGVyIC5jbHItd2l6YXJkLXN0ZXBuYXYsLmNsci13aXphcmQtLWlubGluZS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50IC5jbHItd2l6YXJkLXN0ZXBuYXZ7aGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLW5vLXNoYWRvdyAubW9kYWwtY29udGVudC13cmFw''@;'; put 'put ''cGVyLC5jbHItd2l6YXJkLS1uby1zaGFkb3cgLm1vZGFsLWRpYWxvZ3tib3gtc2hhZG93Om5vbmV9LmNsci13aXphcmQtLW5vLXRpdGxlIC5jbHItd2l6YXJkLXRpdGxle2Rpc3BsYXk6bm9uZX0uY2xyLXdpemFyZC0tbm8tdGl0bGUgLmNsci13aXphcmQtc3RlcG5hdntwYWRkaW5nLXRvcDox''@;'; put 'put ''LjJyZW19QG1lZGlhIHNjcmVlbnsuY2xyLXdpemFyZC1wYWdlW2FyaWEtaGlkZGVuPXRydWVde2Rpc3BsYXk6bm9uZX19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb257bWFyZ2luLXRvcDotLjE1cmVtfX06cm9vdHst''@;'; put 'put ''LWNsci1zaWducG9zdC1jb250ZW50LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItc2lnbnBvc3QtYWN0aW9uLWNvbG9yOnZhcigtLWNsci1jb2xv''@;'; put 'put ''ci1uZXV0cmFsLTYwMCk7LS1jbHItc2lnbnBvc3QtYWN0aW9uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNzAwKTstLWNsci1zaWducG9zdC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRl''@;'; put 'put ''cjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1ib3JkZXIpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTstLWNsci1zaWducG9zdC1wb2ludGVyLXBzdWVkby1ib3JkZXI6dmFyKC0t''@;'; put 'put ''Y2xyLXNpZ25wb3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlcil9LnNpZ25wb3N0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zaWducG9zdDpob3ZlcntjdXJzb3I6cG9pbnRlcn0uc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbnttaW4td2lkdGg6MS4ycmVtO21hcmdpbjowO3BhZGRpbmc6MDtjb2xv''@;'; put 'put ''cjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24tY29sb3IsICM4YzhjOGMpfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uIGNkcy1pY29uLC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uIGNsci1pY29ue2hlaWdodDoxLjJyZW07d2lkdGg6MS4ycmVtfS5zaWducG9z''@;'; put 'put ''dCAuc2lnbnBvc3QtYWN0aW9uOmhvdmVyLC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uLmFjdGl2ZXtjb2xvcjojMDA2NDhmO2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24taG92ZXItY29sb3IsICMwMDY0OGYpfS5zaWducG9zdCAuc2lnbnBvc3QtY29udGVudC1oZWFkZXIgYnV0''@;'; put 'put ''dG9uIGNkcy1pY29uLC5zaWducG9zdCAuc2lnbnBvc3QtY29udGVudC1oZWFkZXIgYnV0dG9uIGNsci1pY29ue2hlaWdodDouOHJlbTt3aWR0aDouOHJlbX0uc2lnbnBvc3QtdHJpZ2dlcnttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnNpZ25wb3N0LWNvbnRlbnR7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDttaW4td2lkdGg6MTAuOHJlbTttYXgtd2lkdGg6MThyZW07bWluLWhlaWdodDoyLjRyZW07bWF4LWhlaWdodDoyNS4ycmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTA1MH0uc2lnbnBvc3QtY29u''@;'; put 'put ''dGVudDpob3ZlcntjdXJzb3I6ZGVmYXVsdH0uc2lnbnBvc3QtY29udGVudCAucG9wb3Zlci1wb2ludGVye2hlaWdodDowO3dpZHRoOjA7cG9zaXRpb246YWJzb2x1dGV9LnNpZ25wb3N0LWNvbnRlbnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiIjtoZWlnaHQ6MDt3aWR0aDow''@;'; put 'put ''O3Bvc2l0aW9uOmFic29sdXRlfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAucG9wb3Zlci1wb2ludGVye2JvcmRlci10b3A6''@;'; put 'put ''LjZyZW0gc29saWQgI2IzYjNiMztib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlciwgLjZyZW0gc29saWQgI2IzYjNiMyk7Ym90dG9tOi0uNnJlbX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29u''@;'; put 'put ''dGVudC50b3AtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItdG9wOi42cmVtIHNvbGlkICNmZmY7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8t''@;'; put 'put ''Ym9yZGVyLCAuNnJlbSBzb2xpZCB3aGl0ZSk7Ym90dG9tOi4xcmVtfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5zaWducG9zdC13cmFwe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQudG9wLWxlZnQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItbGVm''@;'; put 'put ''dDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7cmlnaHQ6LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVy''@;'; put 'put ''OmJlZm9yZXtib3JkZXItbGVmdDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7cmlnaHQ6LjA1cmVtfS5zaWducG9zdC1jb250ZW50LnRvcC1taWRk''@;'; put 'put ''bGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtsZWZ0OjUwJX0uc2lnbnBvc3QtY29udGVu''@;'; put 'put ''dC50b3AtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2xlZnQ6LjA1''@;'; put 'put ''cmVtfS5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQudG9wLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1y''@;'; put 'put ''aWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7bGVmdDotLjA1cmVtfS5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6LjZyZW0gc29saWQg''@;'; put 'put ''dHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtsZWZ0Oi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1j''@;'; put 'put ''b250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOi42cmVtIHNvbGlkICNiM2IzYjM7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1ib3Jk''@;'; put 'put ''ZXIsIC42cmVtIHNvbGlkICNiM2IzYjMpO3RvcDotLjU1cmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQu''@;'; put 'put ''Ym90dG9tLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgI2ZmZjtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLXBzdWVkby1ib3JkZXIsIC42cmVtIHNvbGlkIHdoaXRlKTt0b3A6LjFyZW19LnNpZ25wb3N0LWNv''@;'; put 'put ''bnRlbnQuYm90dG9tLWxlZnQgLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVye2JvcmRlci1sZWZ0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OnZhcigtLWNsci1z''@;'; put 'put ''aWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtyaWdodDotLjA1cmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1sZWZ0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2Jv''@;'; put 'put ''cmRlci1sZWZ0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtyaWdodDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1yaWdodDouNnJlbSBzb2xp''@;'; put 'put ''ZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3JpZ2h0OjUwJX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2Jv''@;'; put 'put ''cmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3JpZ2h0Oi0uNjVyZW19LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLXJpZ2h0IC5z''@;'; put 'put ''aWducG9zdC13cmFwe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWlu''@;'; put 'put ''dmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtsZWZ0Oi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0t''@;'; put 'put ''Y2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2xlZnQ6LjA1cmVtfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQubGVmdC1taWRkbGUgLnBvcG92ZXItcG9pbnRl''@;'; put 'put ''ciwuc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1sZWZ0Oi42cmVtIHNvbGlkICNiM2IzYjM7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItYm9yZGVyLCAuNnJlbSBzb2xpZCAjYjNiM2IzKTtyaWdodDotLjZyZW19LnNp''@;'; put 'put ''Z25wb3N0LWNvbnRlbnQubGVmdC10b3AgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQubGVmdC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQubGVmdC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWxl''@;'; put 'put ''ZnQ6LjZyZW0gc29saWQgI2ZmZjtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyLCAuNnJlbSBzb2xpZCB3aGl0ZSl9LnNpZ25wb3N0LWNvbnRlbnQubGVmdC10b3AgLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0u''@;'; put 'put ''c2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVye2JvcmRlci10b3A6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7Ym90dG9t''@;'; put 'put ''Oi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQubGVmdC10b3AgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXRvcDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRy''@;'; put 'put ''YW5zcGFyZW50KTt0b3A6LS42NXJlbTtyaWdodDouMXJlbX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZp''@;'; put 'put ''c2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50''@;'; put 'put ''O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDouMDVyZW07bGVmdDotLjdyZW19LnNpZ25wb3N0LWNvbnRlbnQubGVmdC1ib3R0b20gLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLXRvcC1y''@;'; put 'put ''aWdodC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBz''@;'; put 'put ''b2xpZCB0cmFuc3BhcmVudCk7dG9wOi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQubGVmdC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWlu''@;'; put 'put ''dmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LjA1cmVtO2xlZnQ6LS43cmVtfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LnJpZ2h0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyLC5zaWducG9z''@;'; put 'put ''dC1jb250ZW50LnJpZ2h0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCAjYjNiM2IzO2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1ib3JkZXIsIC42cmVtIHNvbGlkICNiM2IzYjMpO2xlZnQ6LS42cmVtfS5zaWducG9zdC1j''@;'; put 'put ''b250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1yaWdodDou''@;'; put 'put ''NnJlbSBzb2xpZCAjZmZmO2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyLCAuNnJlbSBzb2xpZCB3aGl0ZSk7bGVmdDouMXJlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJh''@;'; put 'put ''ZGl1czowfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVye2JvcmRlci10b3A6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVu''@;'; put 'put ''dCk7Ym90dG9tOi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci10b3A6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJl''@;'; put 'put ''bSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi0uNjVyZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlz''@;'; put 'put ''aWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50''@;'; put 'put ''O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5zaWducG9zdC13cmFwe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6''@;'; put 'put ''MH0uc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNw''@;'; put 'put ''YXJlbnQpO3RvcDotLjA1cmVtfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJv''@;'; put 'put ''cmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQtaGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7dG9wOjB9''@;'; put 'put ''LnNpZ25wb3N0LXdyYXB7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItc2lnbnBvc3QtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2Jv''@;'; put 'put ''cmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2IzYjNiMztib3JkZXItY29sb3I6dmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYm9yZGVyLWNvbG9yLCAjYjNiM2IzKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc2lnbnBvc3QtY29udGVu''@;'; put 'put ''dC1iZy1jb2xvciwgd2hpdGUpO3otaW5kZXg6MTA1MDtwb3NpdGlvbjpyZWxhdGl2ZX0uc2lnbnBvc3QtY29udGVudC1ib2R5e3BhZGRpbmc6MS4ycmVtO21heC1oZWlnaHQ6MjRyZW07b3ZlcmZsb3cteTphdXRvfS5kcmFnLWhhbmRsZXtjdXJzb3I6Z3JhYn0uaW4tZHJhZ3tjdXJzb3I6Z3Jh''@;'; put 'put ''YmJpbmc7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmluLWRyYWcgKntwb2ludGVyLWV2ZW50czpub25lfS5pbi1kcmFnIC5kcmFnZ2FibGUuYmVpbmctZHJhZ2dlZHtvcGFjaXR5Oi42fS5kcmFnZ2FibGUtZ2hvc3R7cG9zaXRpb246Zml4ZWQ7ZGlzcGxheTpi''@;'; put 'put ''bG9jazt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjIxNDc0ODM2NDc7cG9pbnRlci1ldmVudHM6bm9uZTt3aWxsLWNoYW5nZTpsZWZ0LHRvcH0uZHJhZ2dhYmxlLWdob3N0Pi5kcmFnZ2FibGV7bWFyZ2luOjA7b3BhY2l0eToxfS5kcmFnZ2FibGUtZ2hvc3QuZHJvcHBlZHtvcGFjaXR5OjB9''@;'; put 'put ''LmRyb3BwYWJsZS5kcmFnZ2FibGUtbWF0Y2h7Ym9yZGVyOi4wNXJlbSBkYXNoZWQgI2MwOTBkNX0uZHJvcHBhYmxlLmRyYWdnYWJsZS1vdmVye2JvcmRlcjouMDVyZW0gZGFzaGVkICM2ODAwOTR9OnJvb3R7LS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250''@;'; put 'put ''LWNvbG9yKTstLWNsci1hY2NvcmRpb24tYWN0aXZlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3IpOy0tY2xyLWFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYWNjb3JkaW9u''@;'; put 'put ''LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWhvdmVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWZvbnQtc2l6ZTouOHJl''@;'; put 'put ''bTstLWNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbi1mb250LXNpemU6LjZyZW07LS1jbHItYWNjb3JkaW9uLXRpdGxlLWZvbnQtd2VpZ2h0OjUwMDstLWNsci1hY2NvcmRpb24tdGl0bGUtZm9udC1zaXplOi42NXJlbTstLWNsci1hY2NvcmRpb24tZXJyb3ItY29sb3I6dmFyKC0tY2xyLWds''@;'; put 'put ''b2JhbC1lcnJvci1jb2xvcik7LS1jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc3VjY2Vzcy1jb2xvcik7LS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFk''@;'; put 'put ''aXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3I6I2U4ZThlODstLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtd2lkdGg6LjNyZW07LS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LWNvbG9yLWNvbXBsZXRlOnZhcigt''@;'; put 'put ''LWNsci1hY2NvcmRpb24tY29tcGxldGUtY29sb3IpOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1lcnJvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWVycm9yLWNvbG9yKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWxlZnQtaW5kaWNhdG9yOmluc2V0IHZhcigtLWNsci1hY2NvcmRp''@;'; put 'put ''b24tYm9yZGVyLWxlZnQtd2lkdGgpIDAgMCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LWNvbG9yKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWxlZnQtY29tcGxldGUtaW5kaWNhdG9yOmluc2V0IHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtd2lkdGgpIDAgMCB2YXIo''@;'; put 'put ''LS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LWNvbG9yLWNvbXBsZXRlKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWxlZnQtZXJyb3ItaW5kaWNhdG9yOmluc2V0IHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtd2lkdGgpIDAgMCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1s''@;'; put 'put ''ZWZ0LWNvbG9yLWVycm9yKX0uY2xyLWFjY29yZGlvbntkaXNwbGF5OmJsb2NrO2NvdW50ZXItcmVzZXQ6YWNjb3JkaW9uO21hcmdpbi1ib3R0b206MS4ycmVtfS5jbHItYWNjb3JkaW9uLXBhbmVse2Rpc3BsYXk6YmxvY2t9LmNsci1hY2NvcmRpb24taGVhZGVye2NvbG9yOiM2NjY7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yLCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzppbnNldCAuM3JlbSAwICNlOGU4''@;'; put 'put ''ZTg7Ym94LXNoYWRvdzp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWluZGljYXRvciwgaW5zZXQgLjNyZW0gMCAwICNlOGU4ZTgpO2JhY2tncm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWJhY2tncm91bmQtY29sb3IsICNmYWZhZmEp''@;'; put 'put ''O3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dDtib3JkZXItYm90dG9tOjA7d2lkdGg6MTAwJTtmb250LXNpemU6LjhyZW07Zm9udC1zaXplOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWZvbnQtc2l6ZSwgLjhyZW0pO3RleHQtYWxpZ246bGVmdH0uY2xyLWFjY29yZGlvbi1oZWFk''@;'; put 'put ''ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItaG92ZXItYmFja2dyb3VuZC1jb2xvciwgI2U4ZThlOCl9LmNsci1hY2NvcmRpb24tcGFuZWw6bGFzdC1jaGlsZCAuY2xyLWFjY29yZGlvbi1jb250ZW50''@;'; put 'put ''LC5jbHItYWNjb3JkaW9uLXBhbmVsOmxhc3QtY2hpbGQgLmNsci1hY2NvcmRpb24taGVhZGVye2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0p''@;'; put 'put ''O2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uY2xyLWFjY29yZGlvbi1udW1iZXJ7cGFkZGluZzowIC45cmVtO2Rpc3BsYXk6bm9uZX0uY2xyLWFjY29yZGlvbi1udW1iZXI6YmVm''@;'; put 'put ''b3Jle2NvbnRlbnQ6Y291bnRlcihhY2NvcmRpb24pICIuIjtjb3VudGVyLWluY3JlbWVudDphY2NvcmRpb259LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbntkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyB3cmFwO2ZsZXg6MSAxIDAlO3dpZHRoOjEwMCU7Ym9yZGVyOjA7cGFkZGluZzou''@;'; put 'put ''OXJlbTtiYWNrZ3JvdW5kOjAgMDt0ZXh0LWFsaWduOmxlZnQ7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3IsICM2NjY2NjYpfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9ue2Zs''@;'; put 'put ''ZXgtZmxvdzpyb3d9fS5jbHItYWNjb3JkaW9uLXN0YXR1c3t3aWR0aDoxLjhyZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wfS5jbHItYWNjb3JkaW9uLXRpdGxle2Rpc3BsYXk6aW5saW5lLWJsb2NrfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtjbHItc3RlcC10''@;'; put 'put ''aXRsZS5jbHItYWNjb3JkaW9uLXRpdGxle21pbi13aWR0aDo4LjY0cmVtfX0uY2xyLWFjY29yZGlvbi1oZWFkZXItaGFzLWRlc2NyaXB0aW9uIC5jbHItYWNjb3JkaW9uLXRpdGxle21heC13aWR0aDoxMy4ycmVtfS5jbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9ue2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO21heC13aWR0aDozMi41cmVtfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbnttYXJnaW4tbGVmdDoxLjhyZW19fS5jbHItYWNjb3JkaW9uLWNvbnRlbnR7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFjY29yZGlvbi1j''@;'; put 'put ''b250ZW50LWJhY2tncm91bmQtY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWFj''@;'; put 'put ''Y29yZGlvbi1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1ib3R0b206MDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzouOXJlbTtkaXNwbGF5Om5vbmV9LmNsci1hY2NvcmRpb24tY29udGVudCAuY2xyLWZvcm0sLmNsci1hY2NvcmRpb24tY29udGVudC5uZy10cmlnZ2Vye3BhZGRpbmc6''@;'; put 'put ''MH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1hY2NvcmRpb24tY29udGVudHtwYWRkaW5nOi45cmVtIDIuN3JlbX19LmNsci1hY2NvcmRpb24taW5uZXItY29udGVudHtwYWRkaW5nOi45cmVtfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1pbm5lci1jb250''@;'; put 'put ''ZW50e3BhZGRpbmc6LjlyZW0gMi43cmVtfX0uY2xyLWFjY29yZGlvbi1hbmdsZXt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnJvdGF0ZSg5MCl9LmNsci1hY2NvcmRpb24tZXJyb3ItaWNvbiwuY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1pY29ue2hlaWdodDoxLjJy''@;'; put 'put ''ZW07d2lkdGg6MS4ycmVtO2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjAgLjZyZW19LmNsci1hY2NvcmRpb24tcGFuZWwtb3BlbiAuY2xyLWFjY29yZGlvbi1jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmNsci1hY2NvcmRpb24tcGFuZWwtb3BlbiAuY2xyLWFjY29yZGlvbi1hbmdsZXt2''@;'; put 'put ''aXNpYmlsaXR5OnZpc2libGU7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4gLmNsci1hY2NvcmRpb24taGVhZGVye2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1hY2NvcmRpb24tYWN0aXZlLWJhY2tncm91bmQtY29sb3Is''@;'; put 'put ''ICNkOGUzZTkpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzVhYTIyMDtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWNvbG9yLCAjNWFhMjIwKX0uY2xyLWFjY29y''@;'; put 'put ''ZGlvbi1wYW5lbC1jb21wbGV0ZSAuY2xyLWFjY29yZGlvbi1hbmdsZXt2aXNpYmlsaXR5OnZpc2libGV9LmNsci1hY2NvcmRpb24tcGFuZWwtY29tcGxldGUgLmNsci1hY2NvcmRpb24taGVhZGVye2JveC1zaGFkb3c6aW5zZXQgLjNyZW0gMCAjNWFhMjIwO2JveC1zaGFkb3c6dmFyKC0tY2xy''@;'; put 'put ''LWFjY29yZGlvbi1oZWFkZXItbGVmdC1jb21wbGV0ZS1pbmRpY2F0b3IsIGluc2V0IC4zcmVtIDAgMCAjNWFhMjIwKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1jb21wbGV0ZSAubmctdHJpZ2dlci5jbHItYWNjb3JkaW9uLWNvbnRlbnR7ZGlzcGxheTpibG9ja30uY2xyLWFjY29yZGlvbi1wYW5l''@;'; put 'put ''bC1lcnJvciAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbTouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItZXJyb3IsICNjMjFkMDApO2JveC1zaGFkb3c6aW5zZXQgLjNy''@;'; put 'put ''ZW0gMCAjYzIxZDAwO2JveC1zaGFkb3c6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1lcnJvci1pbmRpY2F0b3IsIGluc2V0IC4zcmVtIDAgMCAjYzIxZDAwKTtiYWNrZ3JvdW5kLWNvbG9yOiNkOGUzZTk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWFjdGl2''@;'; put 'put ''ZS1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0uY2xyLWFjY29yZGlvbi1wYW5lbC1lcnJvciAuY2xyLWFjY29yZGlvbi1lcnJvci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1lcnJvci1jb2xvciwgI2MyMWQwMCl9''@;'; put 'put ''LmNsci1hY2NvcmRpb24tcGFuZWwtZXJyb3IgLmNsci1hY2NvcmRpb24tbnVtYmVyLC5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNjb3JkaW9uLW51bWJlcntwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAl''@;'; put 'put ''KTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjB9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24taGVhZGVye2JveC1zaGFkb3c6bm9u''@;'; put 'put ''ZX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1wYW5lbDpmaXJzdC1jaGlsZCAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItYWNjb3Jk''@;'; put 'put ''aW9uLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAu''@;'; put 'put ''Y2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWNvbnRlbnQsLmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tcGFuZWw6bGFzdC1jaGlsZCAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbS1sZWZ0''@;'; put 'put ''LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24t''@;'; put 'put ''Ym9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi10aXRsZXtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWFjY29yZGlvbi10aXRsZS1mb250LXdlaWdodCwgNTAwKTtmb250LXNpemU6''@;'; put 'put ''LjY1cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSwgLjY1cmVtKX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9ue2ZvbnQtc2l6ZTouNnJlbTtmb250LXNpemU6dmFyKC0tY2xy''@;'; put 'put ''LWFjY29yZGlvbi1oZWFkZXItYnV0dG9uLWZvbnQtc2l6ZSwgLjZyZW0pO3BhZGRpbmc6LjNyZW0gLjZyZW19LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tY29udGVudHtwYWRkaW5nOjB9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBl''@;'; put 'put ''ci1mb3JtcykgLmNsci1hY2NvcmRpb24taW5uZXItY29udGVudHtwYWRkaW5nOi4zcmVtIDEuNzVyZW19LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tc3RhdHVze3dpZHRoOi45NnJlbX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVy''@;'; put 'put ''LWZvcm1zKSAuY2xyLWFjY29yZGlvbi1zdGF0dXMgY2RzLWljb24sLmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tc3RhdHVzIGNsci1pY29ue2hlaWdodDouN3JlbTt3aWR0aDouN3JlbX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuIC5jbHIt''@;'; put 'put ''YWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnR9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLXBhbmVsLWluYWN0''@;'; put 'put ''aXZlIC5jbHItYWNjb3JkaW9uLWFuZ2xle3Zpc2liaWxpdHk6aGlkZGVufS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuIC5jbHItYWNjb3JkaW9uLWFuZ2xle3Zpc2liaWxpdHk6dmlzaWJsZX0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1hY2NvcmRpb24tc3Rh''@;'; put 'put ''dHVze21pbi13aWR0aDozLjZyZW19LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLW51bWJlcntkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLXN0ZXAtYnV0dG9ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxLjJyZW19OnJvb3R7LS1jbHItdGltZWxpbmUtbGluZS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MDApOy0tY2xyLXRpbWVsaW5lLXN0ZXAtaGVhZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXRpbWVsaW5l''@;'; put 'put ''LXN0ZXAtZGVzY3JpcHRpb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci10aW1lbGluZS1pbmNvbXBsZXRlLXN0ZXAtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci10aW1lbGluZS1jdXJyZW50LXN0ZXAtY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLWFjdGlvbi02MDApOy0tY2xyLXRpbWVsaW5lLXN1Y2Nlc3Mtc3RlcC1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy00MDApOy0tY2xyLXRpbWVsaW5lLWVycm9yLXN0ZXAtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUt''@;'; put 'put ''Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAyLWZvbnQtd2VpZ2h0KX0uY2xyLXRpbWVsaW5le2Rpc3BsYXk6ZmxleDtwYWRkaW5nOi42cmVtfS5jbHItdGltZWxpbmUtc3RlcHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCU7bWluLXdpZHRoOjguNzVyZW07bWFy''@;'; put 'put ''Z2luLWxlZnQ6LjZyZW19LmNsci10aW1lbGluZS1zdGVwIGNkcy1pY29uLC5jbHItdGltZWxpbmUtc3RlcCBjbHItaWNvbntoZWlnaHQ6MS44cmVtO3dpZHRoOjEuOHJlbTttaW4taGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbltzaGFw''@;'; put 'put ''ZT1jaXJjbGVdLC5jbHItdGltZWxpbmUtc3RlcCBjbHItaWNvbltzaGFwZT1jaXJjbGVde2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLWluY29tcGxldGUtc3RlcC1jb2xvciwgIzhjOGM4Yyl9LmNsci10aW1lbGluZS1zdGVwIGNkcy1pY29uW3NoYXBlPWRvdC1jaXJj''@;'; put 'put ''bGVdLC5jbHItdGltZWxpbmUtc3RlcCBjbHItaWNvbltzaGFwZT1kb3QtY2lyY2xlXXtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1jdXJyZW50LXN0ZXAtY29sb3IsICMwMDcyYTMpfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5k''@;'; put 'put ''YXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9c3VjY2Vzcy1zdGFuZGFyZF17Y29sb3I6IzVlYjcxNTtjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtc3VjY2Vzcy1zdGVwLWNvbG9yLCAjNWViNzE1KX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9ZXJyb3It''@;'; put 'put ''c3RhbmRhcmRdLC5jbHItdGltZWxpbmUtc3RlcCBjbHItaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF17Y29sb3I6I2MyMWQwMDtjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtZXJyb3Itc3RlcC1jb2xvciwgI2MyMWQwMCl9LmNsci10aW1lbGluZS1zdGVwOm5vdCg6bGFzdC1vZi10eXBlKSAu''@;'; put 'put ''Y2xyLXRpbWVsaW5lLXN0ZXAtYm9keTpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNiM2IzYjM7YmFja2dyb3VuZDp2YXIoLS1jbHItdGltZWxpbmUtbGluZS1jb2xvciwgI2IzYjNiMyk7aGVpZ2h0Oi4xcmVtO3dpZHRoOmNhbGMoMTAwJSAtIDFyZW0pO3RyYW5zZm9ybTp0cmFuc2xh''@;'; put 'put ''dGUoMS43cmVtLC0uOTVyZW0pfS5jbHItdGltZWxpbmUtc3RlcC1oZWFkZXJ7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1oZWFkZXItY29sb3IsICM4YzhjOGMpO2ZvbnQtc2l6ZTouNjVyZW07bGluZS1oZWlnaHQ6LjlyZW07d2hpdGUtc3BhY2U6bm93cmFw''@;'; put 'put ''O21hcmdpbi1ib3R0b206LjRyZW19LmNsci10aW1lbGluZS1zdGVwLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbiwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbntoZWlnaHQ6LjhyZW07d2lkdGg6''@;'; put 'put ''LjhyZW07bWluLXdpZHRoOmluaXRpYWw7bWluLWhlaWdodDppbml0aWFsfS5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNkcy1pY29uW3NoYXBlPWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb25bc2hhcGU9ZG90LWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkg''@;'; put 'put ''Y2RzLWljb25bc2hhcGU9c3VjY2Vzcy1zdGFuZGFyZF0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb25bc2hhcGU9ZXJyb3Itc3RhbmRhcmRdLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNsci1pY29uW3NoYXBlPWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWlj''@;'; put 'put ''b25bc2hhcGU9ZG90LWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb25bc2hhcGU9c3VjY2Vzcy1zdGFuZGFyZF0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb25bc2hhcGU9ZXJyb3Itc3RhbmRhcmRde2NvbG9yOmluaGVyaXR9LmNsci10aW1lbGluZS1zdGVw''@;'; put 'put ''LXRpdGxle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUtY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10aW1lbGluZS1zdGVwLXRpdGxlLWZvbnQtd2VpZ2h0LCA1MDApO2xp''@;'; put 'put ''bmUtaGVpZ2h0Oi45cmVtO21hcmdpbi10b3A6LjRyZW07bWFyZ2luLWJvdHRvbTouM3JlbX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb257Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbi1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi41''@;'; put 'put ''NXJlbTtsaW5lLWhlaWdodDouOHJlbX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24gYnV0dG9ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDouNHJlbX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24gaW1ne3dpZHRoOjEwMCU7bWFyZ2luLXRvcDouNHJlbX0uY2xyLXRpbWVs''@;'; put 'put ''aW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjE2cmVtfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcHtmbGV4LWRpcmVjdGlvbjpyb3c7bWFyZ2luLWxlZnQ6MDtwb3NpdGlvbjpyZWxh''@;'; put 'put ''dGl2ZX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXA6bm90KDpsYXN0LW9mLXR5cGUpe21hcmdpbi1ib3R0b206MS44cmVtfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcDpub3QoOmxhc3Qt''@;'; put 'put ''b2YtdHlwZSkgLmNsci10aW1lbGluZS1zdGVwLWJvZHk6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOi4xcmVtO2hlaWdodDpjYWxjKDEwMCUgKyAuMnJlbSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMS41NXJlbSwxLjRyZW0pfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRp''@;'; put 'put ''Y2FsIC5jbHItdGltZWxpbmUtc3RlcC1oZWFkZXJ7dGV4dC1hbGlnbjpyaWdodDt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1icmVhazpicmVhay13b3JkO3dpZHRoOjNyZW07bWluLXdpZHRoOjNyZW07bWFyZ2luLXJpZ2h0Oi42cmVtO21hcmdpbi10b3A6LjNyZW07bWFyZ2luLWJvdHRvbTow''@;'; put 'put ''fS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcC10aXRsZXttYXJnaW4tdG9wOjB9LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1lbGluZS1zdGVwLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv''@;'; put 'put ''bHVtbjttaW4td2lkdGg6OC45cmVtO21hcmdpbi1sZWZ0Oi42cmVtO21hcmdpbi10b3A6LjNyZW19QGtleWZyYW1lcyBzcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1jbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MDto''@;'; put 'put ''ZWlnaHQ6MTZweDt3aWR0aDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmaWxsOmN1cnJlbnRDb2xvcn1jbHItaWNvbiAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOmN1cnJlbnRDb2xvcn1jbHItaWNvbi5pcy1ncmVlbixjbHItaWNvbi5pcy1zdWNjZXNze2ZpbGw6IzJlODUw''@;'; put 'put ''MH1jbHItaWNvbi5pcy1ncmVlbiAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2UsY2xyLWljb24uaXMtc3VjY2VzcyAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMyZTg1MDB9Y2xyLWljb24uaXMtcmVkLGNsci1pY29uLmlzLWRhbmdlcixjbHItaWNvbi5pcy1lcnJvcntmaWxsOiNl''@;'; put 'put ''MDIyMDB9Y2xyLWljb24uaXMtcmVkIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1kYW5nZXIgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tlLGNsci1pY29uLmlzLWVycm9yIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2UwMjIwMH1jbHItaWNvbi5pcy13YXJu''@;'; put 'put ''aW5ne2ZpbGw6I2MyN2IwMH1jbHItaWNvbi5pcy13YXJuaW5nIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2MyN2IwMH1jbHItaWNvbi5pcy1ibHVlLGNsci1pY29uLmlzLWluZm97ZmlsbDojMDA3N2I4fWNsci1pY29uLmlzLWJsdWUgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tl''@;'; put 'put ''LGNsci1pY29uLmlzLWluZm8gLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMDA3N2I4fWNsci1pY29uLmlzLXdoaXRlLGNsci1pY29uLmlzLWludmVyc2V7ZmlsbDojZmZmfWNsci1pY29uLmlzLXdoaXRlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1pbnZl''@;'; put 'put ''cnNlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2ZmZn1jbHItaWNvbi5pcy1oaWdobGlnaHR7ZmlsbDojMDA3N2I4fWNsci1pY29uLmlzLWhpZ2hsaWdodCAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMwMDc3Yjh9Y2xyLWljb25bc2hhcGUkPSIgdXAiXSBzdmcs''@;'; put 'put ''Y2xyLWljb25bZGlyPXVwXSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgwKX1jbHItaWNvbltzaGFwZSQ9IiBkb3duIl0gc3ZnLGNsci1pY29uW2Rpcj1kb3duXSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfWNsci1pY29uW3NoYXBlJD0iIHJpZ2h0Il0gc3ZnLGNsci1pY29uW2Rpcj1yaWdo''@;'; put 'put ''dF0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfWNsci1pY29uW3NoYXBlJD0iIGxlZnQiXSBzdmcsY2xyLWljb25bZGlyPWxlZnRdIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9Y2xyLWljb25bZmxpcD1ob3Jpem9udGFsXSBzdmd7dHJhbnNmb3JtOnNjYWxlKC0xKSByb3RhdGVY''@;'; put 'put ''KDE4MGRlZyl9Y2xyLWljb25bZmxpcD12ZXJ0aWNhbF0gc3Zne3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWSgxODBkZWcpfWNsci1pY29uIC5jbHItaS1iYWRnZXtmaWxsOiNlMDIyMDB9Y2xyLWljb24gLmNsci1pLWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2Uw''@;'; put 'put ''MjIwMH1jbHItaWNvbj4qe2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jaztwb2ludGVyLWV2ZW50czpub25lfWNsci1pY29uPnN2Z3t0cmFuc2l0aW9uOmluaGVyaXR9Y2xyLWljb24+c3ZnIHRpdGxle2Rpc3BsYXk6bm9uZX1jbHItaWNvbiAuY2xyLWktc29saWQsY2xyLWlj''@;'; put 'put ''b24gLmNsci1pLXNvbGlkLS1iYWRnZWQsY2xyLWljb24gLmNsci1pLXNvbGlkLS1hbGVydGVke2Rpc3BsYXk6bm9uZX1jbHItaWNvbiAuY2xyLWktb3V0bGluZS0tYWxlcnRlZDpub3QoLmNsci1pLW91dGxpbmUpLGNsci1pY29uIC5jbHItaS1vdXRsaW5lLS1iYWRnZWQ6bm90KC5jbHItaS1v''@;'; put 'put ''dXRsaW5lKXtkaXNwbGF5Om5vbmV9Y2xyLWljb25bY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydCAuY2xyLWktb3V0bGluZS0tYWxlcnRlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQgLmNsci1pLW91dGxpbmU6bm90KC5jbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb25bY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZSAuY2xyLWktb3V0bGluZS0tYmFkZ2Vke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb25bY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZSAuY2xyLWktb3V0bGluZTpub3QoLmNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCl7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLXNvbGlke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb24uaXMtc29saWQgLmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZSxjbHItaWNvbi5pcy1zb2xpZCAuaGFzLXNvbGlkIC5jbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWR7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1hbGVydGVkOm5vdCguY2xyLWktc29saWQpLGNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1iYWRnZWQ6bm90KC5jbHItaS1zb2xp''@;'; put 'put ''ZCl7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYmFkZ2Vke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZS5oYXMtc29saWQg''@;'; put 'put ''LmNsci1pLW91dGxpbmUsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZS5oYXMtc29saWQgLmNsci1pLW91dGxpbmUtLWJhZGdlZCxjbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJhZGdlLmhhcy1zb2xpZCAuY2xyLWktc29saWQ6''@;'; put 'put ''bm90KC5jbHItaS1zb2xpZC0tYmFkZ2VkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1hbGVydGVke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVy''@;'; put 'put ''dF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWQsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVy''@;'; put 'put ''dC5oYXMtc29saWQgLmNsci1pLXNvbGlkOm5vdCguY2xyLWktc29saWQtLWFsZXJ0ZWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5oYXMtYmFkZ2UtLXN1Y2Nlc3MgLmNsci1pLWJhZGdle2ZpbGw6IzJlODUwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLXN1Y2Nlc3MgLmNsci1pLWJhZGdlIC50cmFu''@;'; put 'put ''c3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzJlODUwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLWVycm9yIC5jbHItaS1iYWRnZXtmaWxsOiNlMDIyMDB9Y2xyLWljb24uaGFzLWJhZGdlLS1lcnJvciAuY2xyLWktYmFkZ2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojZTAyMjAw''@;'; put 'put ''fWNsci1pY29uLmhhcy1iYWRnZS0taW5mbyAuY2xyLWktYmFkZ2V7ZmlsbDojMDA3N2I4fWNsci1pY29uLmhhcy1iYWRnZS0taW5mbyAuY2xyLWktYmFkZ2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMDA3N2I4fWNsci1pY29uLmhhcy1hbGVydCAuY2xyLWktYWxlcnR7Zmls''@;'; put 'put ''bDojYzI3YjAwfWNsci1pY29uLmhhcy1hbGVydCAuY2xyLWktYWxlcnQgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojYzI3YjAwfWNsci1pY29uIC5pcy1vZmYtc2NyZWVue3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7aGVpZ2h0OjFweCFpbXBv''@;'; put 'put ''cnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O3RvcDotMXB4IWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAtMXB4IWltcG9ydGFudH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OnRleHQtc2Vj''@;'; put 'put ''dXJpdHktZGlzYztzcmM6dXJsKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ub3BwYS90ZXh0LXNlY3VyaXR5L21hc3Rlci9kaXN0L3RleHQtc2VjdXJpdHktZGlzYy53b2ZmKX1ib2R5LGh0bWx7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDtwYWRkaW5nOjA7bWFyZ2luOjB9''@;'; put 'put ''Ym9keS5zaG91bGQtbG9naW4gY2xyLW1vZGFsLGh0bWwuc2hvdWxkLWxvZ2luIGNsci1tb2RhbHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWJ1dHRvbjpmb2N1c3tvdXRsaW5lOm5vbmV9LnNsaWRlcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMjBweDttYXJnaW4tbGVmdDo3NXB4O21hcmdp''@;'; put 'put ''bi10b3A6NzBweDtoZWlnaHQ6NXB4O292ZXJmbG93LXg6aGlkZGVufS5saW5le3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6LjQ7YmFja2dyb3VuZDojNzNENTQ0O3dpZHRoOjE1MCU7aGVpZ2h0OjVweH0uc3VibGluZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiM3M0Q1NDQ7aGVp''@;'; put 'put ''Z2h0OjVweH0uaW5je2FuaW1hdGlvbjppbmNyZWFzZSAycyBpbmZpbml0ZX0uZGVje2FuaW1hdGlvbjpkZWNyZWFzZSAycyAuNXMgaW5maW5pdGV9QGtleWZyYW1lcyBpbmNyZWFzZXswJXtsZWZ0Oi01JTt3aWR0aDo1JX10b3tsZWZ0OjEzMCU7d2lkdGg6MTAwJX19QGtleWZyYW1lcyBkZWNy''@;'; put 'put ''ZWFzZXswJXtsZWZ0Oi04MCU7d2lkdGg6ODAlfXRve2xlZnQ6MTEwJTt3aWR0aDoxMCV9fS5hcHAtbG9hZGluZ3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQ6IzMxNDM1MTtmbGV4LWRpcmVjdGlv''@;'; put 'put ''bjpjb2x1bW47ei1pbmRleDoyMDAwO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt0b3A6MDtyaWdodDowO2JvdHRvbTowfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uaC1hdXRve2hlaWdodDphdXRvfS5oLXVuc2V0LWl7aGVpZ2h0OnVuc2V0''@;'; put 'put ''IWltcG9ydGFudH0ubWluLWgtNTB2aHttaW4taGVpZ2h0OjUwdmh9LmgtMjR2aCwuaC0yNXZoe2hlaWdodDoyNXZofS5oLTcwdmh7aGVpZ2h0Ojcwdmh9LmgtODB2aHtoZWlnaHQ6ODB2aH0uaC0xMDB7aGVpZ2h0OjEwMCV9LnctNTB2d3t3aWR0aDo1MHZ3fS53LTEwMHt3aWR0aDoxMDAlfS53''@;'; put 'put ''LTQwe3dpZHRoOjQwJX0ubWluLXctMHttaW4td2lkdGg6MHB4fS5teC01e21hcmdpbjowIDVweH0ubXktNXttYXJnaW46NXB4IDB9Lm15LTE1e21hcmdpbjoxNXB4IDB9Lm15LTEwLW14LWF1dG97bWFyZ2luOjEwcHggYXV0b30ubS0we21hcmdpbjowIWltcG9ydGFudH0ubS0xMHttYXJnaW46''@;'; put 'put ''MTBweH0ubXQtMHttYXJnaW4tdG9wOjB9Lm10LTAtaXttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5tdC0zLW5lZ2F0aXZle21hcmdpbi10b3A6LTNweH0ubXQtNXttYXJnaW4tdG9wOjVweH0ubXQtNS1pe21hcmdpbi10b3A6NXB4IWltcG9ydGFudH0ubXQtMnttYXJnaW4tdG9wOjJweH0ubXQt''@;'; put 'put ''MTB7bWFyZ2luLXRvcDoxMHB4fS5tdC0xNXttYXJnaW4tdG9wOjE1cHh9Lm10LTE3e21hcmdpbi10b3A6MTdweH0ubXQtMjB7bWFyZ2luLXRvcDoyMHB4fS5tbC0we21hcmdpbi1sZWZ0OjB9Lm1sLTN7bWFyZ2luLWxlZnQ6M3B4fS5tbC01e21hcmdpbi1sZWZ0OjVweH0ubWwtMTB7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6MTBweH0ubWwtMTV7bWFyZ2luLWxlZnQ6MTVweH0ubWwtMjB7bWFyZ2luLWxlZnQ6MjBweH0ubWwtMjAtaXttYXJnaW4tbGVmdDoyMHB4IWltcG9ydGFudH0ubXItMHttYXJnaW4tcmlnaHQ6MH0ubXItNXttYXJnaW4tcmlnaHQ6NXB4fS5tci0xMHttYXJnaW4tcmlnaHQ6MTBweH0u''@;'; put 'put ''bXItMTJ7bWFyZ2luLXJpZ2h0OjEycHh9Lm1yLTIwe21hcmdpbi1yaWdodDoyMHB4fS5tYi0we21hcmdpbi1ib3R0b206MH0ubWItMGl7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0ubWItNXttYXJnaW4tYm90dG9tOjVweH0ubWItMTB7bWFyZ2luLWJvdHRvbToxMHB4fS5tYi0yMHttYXJn''@;'; put 'put ''aW4tYm90dG9tOjIwcHh9Lm1iLTMwe21hcmdpbi1ib3R0b206MzBweH0ucC0we3BhZGRpbmc6MH0ucC0xMHtwYWRkaW5nOjEwcHh9LnBiLTB7cGFkZGluZy1ib3R0b206MH0ucGItMTB7cGFkZGluZy1ib3R0b206MTBweH0ucHktNXtwYWRkaW5nOjVweCAwfS5weS0xMHtwYWRkaW5nOjEwcHgg''@;'; put 'put ''MH0uYmFja2dyb3VuZC10cmFuc3BhcmVudHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5iYWNrZ3JvdW5kLXRyYW5zcGFyZW50LWl7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmNvbG9yLWdyYXl7Y29sb3I6IzVhNWE1YX0uY29sb3ItZGFyay1ncmF5e2NvbG9yOiM0OTU5Njd9''@;'; put 'put ''LmNvbG9yLWRhcmtlci1ncmF5e2NvbG9yOiMzMTQzNTF9LmNvbG9yLXdoaXRle2NvbG9yOiNmZmZ9LmNvbG9yLXdoaXRlLWl7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LmNvbG9yLWdyZWVue2NvbG9yOiM0YjllNGJ9LmNvbG9yLWRjLWdyZWVue2NvbG9yOiM4MWI0NDB9LmNvbG9yLXJlZHtjb2xv''@;'; put 'put ''cjojZTQ1NDU0fS5jb2xvci1ibHVle2NvbG9yOiMzZjhjYzN9LmNvbG9yLXllbGxvd3tjb2xvcjojZjFjNDBmfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uYmFja2dyb3VuZC10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5wb2ludGVyLWV2ZW50cy1u''@;'; put 'put ''b25le3BvaW50ZXItZXZlbnRzOm5vbmV9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS5mb250LXNpemUtMTV7Zm9udC1zaXplOjE1cHh9LmZvbnQtc2l6ZS0xOHtmb250LXNpemU6MThweH0uZm9udC1ib2xke2ZvbnQtd2VpZ2h0OjcwMH0uZm9udC1ib2xkLWl7Zm9udC13ZWlnaHQ6''@;'; put 'put ''NzAwIWltcG9ydGFudH0uZm9udC13ZWlnaHQtMzAwe2ZvbnQtd2VpZ2h0OjMwMH0uZm9udC13ZWlnaHQtNzAwe2ZvbnQtd2VpZ2h0OjcwMH0ud29yZC1icmVha3t3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LndvcmQtYnJlYWstYWxse3dvcmQtYnJlYWs6YnJlYWstYWxsfS5wb3NpdGlvbi1yZWxh''@;'; put 'put ''dGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0ucG9zaXRpb24tYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmQtbm9uZXtkaXNwbGF5Om5vbmV9LmQtYmxvY2t7ZGlzcGxheTpibG9ja30uZC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmQtZmxleHtkaXNwbGF5OmZsZXh9LmQt''@;'; put 'put ''Y29udGVudHN7ZGlzcGxheTpjb250ZW50c30uZmxleC11bnNldHtmbGV4OnVuc2V0fS5hbGlnbi1zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kfS5hbGlnbi1zZWxmLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydH0uYWxpZ24taXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0u''@;'; put 'put ''anVzdGlmeS1jb250ZW50LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyLWl7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uanVzdGlmeS1j''@;'; put 'put ''b250ZW50LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lmp1c3RpZnktY29udGVudC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5qdXN0aWZ5LWNvbnRlbnQtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmZsZXgtY29sdW1ue2ZsZXgtZGly''@;'; put 'put ''ZWN0aW9uOmNvbHVtbn0uY2xyLWdhcC01e2dhcDo1cHh9LmNsci1nYXAtMHtnYXA6MH0ub3ZlcmZsb3ctYXV0b3tvdmVyZmxvdzphdXRvfS56LWluZGV4LWhpZ2hlc3R7ei1pbmRleDoxMDAwMDAwMH0udmVydGljYWwtYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaWNvbi1k''@;'; put 'put ''Yy1maWxse2ZpbGw6IzgxYjQ0MH0uZGF0YWdyaWQtY3VzdG9tLWZvb3RlciAuZGF0YWdyaWQtb3V0ZXItd3JhcHBlcnt3aWR0aDoxMDAlfS5wcm9ncmVzU3RhdGlje21hcmdpbi10b3A6LTZweCFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3otaW5kZXg6MTAwMDAhaW1w''@;'; put 'put ''b3J0YW50fS5wcm9ncmVzcywucHJvZ3Jlc3Mtc3RhdGlje2JhY2tncm91bmQtY29sb3I6I2Y1ZjZmZTtib3JkZXItcmFkaXVzOjA7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OjZweDttYXJnaW46MDttYXgtaGVpZ2h0Oi41ODMzMzNyZW07bWluLWhlaWdodDouMTY2NjY3cmVtO292ZXJmbG93''@;'; put 'put ''OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOmNhbGMoMTAwJSAtIDYzcHgpfS5wcm9ncmVzcy5sb29wOmFmdGVye2FuaW1hdGlvbjpjbHItcHJvZ3Jlc3MtbG9vcGVyIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDoiICI7dG9wOi4xNjY2NjdyZW07Ym90dG9tOjA7bGVmdDow''@;'; put 'put ''O3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjojNjBiNTE1O3dpZHRoOjc1JX0uYmFkZ2Utd2FybmluZ3tjb2xvcjojZmZmIWltcG9ydGFudH0uY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYSAuY2FyZC1oZWFkZXIgaDN7bWFyZ2luLXRvcDox''@;'; put 'put ''MHB4fS5tb2RhbC1oZWFkZXIgLmNsb3NlIGNsci1pY29ue2Rpc3BsYXk6bm9uZX0uc2hvdy1jbG9zZSAubW9kYWwtaGVhZGVyIC5jbG9zZSBjbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTE4cHg7cmlnaHQ6LTEwcHh9LmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZDojRDk0QjJFO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmV9LmNhcmQtaGVhZGVye2ZvbnQtd2VpZ2h0OjMwMH0uc2VsZWN0IHNlbGVjdDpmb2N1c3tib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNDk1OTY3O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50''@;'; put 'put ''KDE4MGRlZyx0cmFuc3BhcmVudCA5NSUsIzQ5NWE2NyAwKSBuby1yZXBlYXR9LmNsci10cmVlbm9kZS1jaGlsZHJlbnttYXJnaW4tbGVmdDouMnJlbSFpbXBvcnRhbnR9LnRhYmxlLWFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTkhaW1wb3J0YW50O2NvbG9yOiMwMDAhaW1wb3J0YW50fS50YWJs''@;'; put 'put ''ZS1hY3RpdmU6Zm9jdXN7YmFja2dyb3VuZDojZDhlM2U5fWNsci1zZWxlY3QtY29udGFpbmVyIC5jbHItY29udHJvbC1jb250YWluZXIsY2xyLXNlbGVjdC1jb250YWluZXIgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVyLGNsci1zZWxlY3QtY29udGFpbmVyIHNl''@;'; put 'put ''bGVjdHt3aWR0aDoxMDAlfXRib2R5e2ZvbnQtd2VpZ2h0OjQwMH1oMyxoNHtjb2xvcjojNTg1ODU4O2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MXJlbTttYXJnaW4tdG9wOjFyZW07bWFyZ2luLWJvdHRvbTowfWgxLGgye2NvbG9yOiM1ODU4NTg7''@;'; put 'put ''Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoycmVtO21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjB9Y2xyLWljb24uaXMtaW5mb3tmaWxsOiM4MGI0NDF9LmRhdGFncmlkLWhvc3QsLmRhdGFncmlkLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5''@;'; put 'put ''Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1ib3ghaW1wb3J0YW50fS5idG4uYnRuLWRhbmdlciwuYnRuLmJ0bi13YXJuaW5ne2JvcmRlci1jb2xvcjojZWY0ZjJlO2JhY2tncm91bmQtY29sb3I6I2Q5NGIyZTtjb2xvcjojZmZmfS5kLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0u''@;'; put 'put ''ZC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uY2xyLWZsZXgtMXtmbGV4OjF9LmNsci1mbGV4LWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci1mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmJvcmRlci0we2JvcmRlcjowfS5ib3gtc2hhZG93LW5vbmV7Ym94LXNo''@;'; put 'put ''YWRvdzpub25lfS5ib3gtc2hhZG93LW5vbmUtaXtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0QXV0b2NvbXBsZXRlQXJyb3d7Y29sb3I6IzgyODI4Mn0uaGFuZHNvbnRhYmxlLmxpc3Rib3h7cGFkZGluZzo1cHggMCA1cHggNXB4O2JveC1zaGFkb3c6MCA0cHgg''@;'; put 'put ''MjBweCAjMDAwMDAwNzB9LmhhbmRzb250YWJsZSB0ZC5odEludmFsaWR7YmFja2dyb3VuZDpyZ2JhKDIzMCwzOSwwLC42Nzg0MzEzNzI1KSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCByZWQhaW1wb3J0YW50O2NvbG9yOiNmZmYhaW1wb3J0YW50fS5tYXJnaW4tdG9wLTIwe21hcmdpbi10''@;'; put 'put ''b3A6MjBweH0uaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KXsuZC1zbS1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtc20taW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1zbS1pbmxpbmUtYmxvY2t7ZGlzcGxheTpp''@;'; put 'put ''bmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLXNtLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLXNtLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLXNtLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1zbS1mbGV4e2Rpc3BsYXk6ZmxleCFp''@;'; put 'put ''bXBvcnRhbnR9LmQtc20taW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci1mbGV4LXNtLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmNsci1nYXAtc20tNXtnYXA6NXB4fS5jbHItZ2Fw''@;'; put 'put ''LXNtLTB7Z2FwOjB9fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7LmQtbWQtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLW1kLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtbWQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1t''@;'; put 'put ''ZC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1tZC10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC1tZC10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQtbWQtZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLW1kLWlubGluZS1mbGV4''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5jbHItZmxleC1tZC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZmxleC1tZC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZ2FwLW1kLTV7Z2FwOjVweH0uY2xyLWdhcC1tZC0we2dhcDowfX1AbWVkaWEgKG1pbi13''@;'; put 'put ''aWR0aDogOTkycHgpey5kLWxnLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC1sZy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLWxnLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtbGctYmxvY2t7ZGlzcGxheTpibG9jayFpbXBv''@;'; put 'put ''cnRhbnR9LmQtbGctdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtbGctdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLWxnLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1sZy1pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9y''@;'; put 'put ''dGFudH0uY2xyLWZsZXgtbGctY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtbGctcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uY2xyLWdhcC1sZy01e2dhcDo1cHh9LmNsci1nYXAtbGctMHtnYXA6MH19LmRhdGFncmlkLWJvZHl7cGFkZGluZy1ib3R0b206MnJlbSFpbXBv''@;'; put 'put ''cnRhbnR9LmFib3J0TXNne3doaXRlLXNwYWNlOnByZS13cmFwO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZX0jZ3JhcGggc3Zne2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9Lm5vLXRhYmxlLXNlbGVjdGVke2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNv''@;'; put 'put ''bHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp3aGl0ZTt6LWluZGV4OjEwO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjB9LmNvcHlSaWdodHtiYWNrZ3JvdW5kOiM0OTU5NjchaW1wb3J0YW50O2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4IWlt''@;'; put 'put ''cG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjVweCAwIDRweDt6LWluZGV4OjEwMH0ubmF2LXRyZWU+Y2xyLXRyZWUtbm9kZS5jbHItZXhwYW5kZWR7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fWNsci10cmVlLW5vZGV7b3Zl''@;'; put 'put ''cmZsb3cteTp2aXNpYmxlfWNsci10cmVlLW5vZGU6Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH1jbHItdHJlZS1ub2RlIC5jbHItdHJlZW5vZGUtY2FyZXR7d2lkdGg6YXV0byFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fWNsci10cmVlLW5vZGUgLmNsci10cmVlbm9kZS1z''@;'; put 'put ''cGlubmVyLWNvbnRhaW5lcntwYWRkaW5nOjAgOHB4O3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn1jbHItdHJlZS1ub2RlIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyOmZvY3Vze291dGxpbmU6bm9uZSFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci10cmVlbm9kZS1jb250ZW50IHB7d2hpdGUtc3BhY2U6bm93cmFwfS5zZWFyY2gtbm9kZXttYXJnaW4tYm90dG9tOjVweH0udHJlZS1zZWFyY2gtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS50cmVlLXNlYXJjaC13cmFwcGVyIGNs''@;'; put 'put ''ci1pbnB1dC1jb250YWluZXJ7bWFyZ2luOjB9LnRyZWUtc2VhcmNoLXdyYXBwZXIgY2xyLWljb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MDttYXJnaW46NXB4IDAgMDtiYWNrZ3JvdW5kOndoaXRlO2N1cnNvcjpwb2ludGVyfS5jbHItdHJlZS1ub2Rle292ZXJmbG93OnZp''@;'; put 'put ''c2libGUhaW1wb3J0YW50fS5jb250ZW50LWNvbnRhaW5lcnt3aWR0aDoxMDAlfUAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKXsud3RIb2xkZXJ7d2lkdGg6MTAwJSFpbXBvcnRhbnR9fWlucHV0OjotbXMtY2xlYXJ7ZGlzcGxheTpub25lfUBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250''@;'; put 'put ''cmFzdDogbm9uZSksKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpe2Nsci10cmVlLW5vZGUuY2xyLWV4cGFuZGVke3BhZGRpbmctYm90dG9tOjIwcHg7bWluLWhlaWdodDphdXRvfS5jbHItdHJlZS1ub2Rle21pbi1oZWlnaHQ6MjRweH0uY2xyLXRyZWVub2RlLWNoaWxkcmVue292ZXJmbG93''@;'; put 'put ''OmhpZGRlbiFpbXBvcnRhbnR9LmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItaWNvbiwuY2xyLXRyZWVub2RlLWNvbnRlbnQgY2xyLWljb257bWluLXdpZHRoOjE2cHg7bWluLWhlaWdodDoxNnB4fS50cmVlLXNlYXJjaC13cmFwcGVyIGNsci1pY29ue2JvdHRvbToycHh9LmNvbnRlbnQtY29u''@;'; put 'put ''dGFpbmVye2hlaWdodDoxMDAlfS5jb250ZW50LWFyZWE+LmNhcmR7bWFyZ2luLWJvdHRvbToyMHB4fS5yZWNvcmQtZWRpdC1tb2RhbCB0ZXh0YXJlYXttaW4taGVpZ2h0OjQycHh9fS5ib3JkZXItYm90dG9tLWRpdmlkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkM30ubG9hZGlu''@;'; put 'put ''Z1NwaW5uZXJ7aGVpZ2h0Ojcwdmg7ZmxleDoxO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXJ9LmRpc2FibGUtcGFzc3dvcmQtbWFuYWdlcnstd2Via2l0LXRleHQtc2VjdXJpdHk6ZGlzYzstbW96LXRl''@;'; put 'put ''eHQtc2VjdXJpdHk6ZGlzYzt0ZXh0LXNlY3VyaXR5OmRpc2M7Zm9udC1mYW1pbHk6dGV4dC1zZWN1cml0eS1kaXNjfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX1oci5saWdodHtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGVkZWRlfS5zcGlubmVye2JhY2tncm91bmQ6''@;'; put 'put ''dXJsKC9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvc3Bpbm5lci4xNmY3NjNjZWJjNmI2NGRmLXN2ZykhaW1wb3J0YW50fS5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXJ7YmFja2dyb3VuZDp1cmwoL1NBU1N0b3JlZFByb2Nl''@;'; put 'put ''c3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9jYXJldC42NWYxZmMwYWNiZTRjN2ZmLXN2ZykhaW1wb3J0YW50fQo='';'; 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;